diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 404e81f86..d496770cb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,9 +6,6 @@ on: - main pull_request_target: types: [ opened, synchronize ] - pull_request: - branches: - - main concurrency: group: ci-${{ github.head_ref || github.ref_name }} @@ -263,9 +260,11 @@ jobs: # install polkadot binary cd ../ mkdir -p polkadot-sdk/target/release - wget -O ./polkadot.tar.gz -q --show-progress 'https://dl.dropbox.com/scl/fi/onsvsex4w9vf5vghqe23j/polkadot.tar.gz?rlkey=17e3gq0n82v8hhar4nzlynruu&dl=0' - tar xvzf ./polkadot.tar.gz - mv bins/* polkadot-sdk/target/release + cd polkadot-sdk/target/release + wget -O ./polkadot -q --show-progress 'https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-v1.10.0/polkadot' + wget -O ./polkadot-execute-worker -q --show-progress 'https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-v1.10.0/polkadot-execute-worker' + wget -O ./polkadot-prepare-worker -q --show-progress 'https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-v1.10.0/polkadot-prepare-worker' + cd ../../../ ls -la polkadot-sdk/target/release # build hyperbridge binary diff --git a/Cargo.lock b/Cargo.lock index 016b115c9..26b88a0ed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5415,7 +5415,7 @@ dependencies = [ [[package]] name = "hyperbridge" -version = "0.3.8" +version = "0.4.0" dependencies = [ "clap", "cumulus-client-cli", diff --git a/evm/abi/src/conversions.rs b/evm/abi/src/conversions.rs index ecc41e5c5..1d813ae83 100644 --- a/evm/abi/src/conversions.rs +++ b/evm/abi/src/conversions.rs @@ -26,7 +26,10 @@ use ismp::{host::StateMachine, router}; use crate::evm_host::PostRequestEventFilter; #[cfg(feature = "beefy")] pub use beefy::*; -use ismp::events::{StateMachineUpdated, TimeoutHandled}; +use ismp::{ + consensus::StateMachineId, + events::{StateCommitmentVetoed, StateMachineUpdated, TimeoutHandled}, +}; use primitive_types::H256; use std::str::FromStr; @@ -303,7 +306,10 @@ impl TryFrom for ismp::events::Event { EvmHostEvents::StateMachineUpdatedFilter(filter) => Ok(ismp::events::Event::StateMachineUpdated(StateMachineUpdated { state_machine_id: ismp::consensus::StateMachineId { - state_id: StateMachine::Kusama(filter.state_machine_id.low_u64() as u32), + state_id: StateMachine::from_str(&String::from_utf8( + filter.state_machine_id.to_vec(), + )?) + .map_err(|e| anyhow!("{}", e))?, consensus_state_id: Default::default(), }, latest_height: filter.height.low_u64(), @@ -320,6 +326,20 @@ impl TryFrom for ismp::events::Event { Ok(ismp::events::Event::GetRequestTimeoutHandled(TimeoutHandled { commitment: handled.commitment.into(), })), + EvmHostEvents::StateCommitmentVetoedFilter(vetoed) => + Ok(ismp::events::Event::StateCommitmentVetoed(StateCommitmentVetoed { + height: ismp::consensus::StateMachineHeight { + id: StateMachineId { + state_id: StateMachine::from_str(&String::from_utf8( + vetoed.state_machine_id.to_vec(), + )?) + .map_err(|e| anyhow!("{}", e))?, + consensus_state_id: Default::default(), + }, + height: vetoed.height.low_u64(), + }, + fisherman: vetoed.fisherman.as_bytes().to_vec(), + })), } } } diff --git a/evm/abi/src/generated/evm_host.rs b/evm/abi/src/generated/evm_host.rs index 39bb94148..f7058d3ae 100644 --- a/evm/abi/src/generated/evm_host.rs +++ b/evm/abi/src/generated/evm_host.rs @@ -144,6 +144,42 @@ pub mod evm_host { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("deleteStateMachineCommitment"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "deleteStateMachineCommitment", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("height"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct StateMachineHeight", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("fisherman"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("dispatch"), ::std::vec![ @@ -656,6 +692,12 @@ pub mod evm_host { ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ), ), + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + ::ethers::core::abi::ethabi::ParamType::Bytes, ], ), internal_type: ::core::option::Option::Some( @@ -668,6 +710,26 @@ pub mod evm_host { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("hyperbridge"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("hyperbridge"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("latestStateMachineHeight"), ::std::vec![ @@ -677,7 +739,7 @@ pub mod evm_host { ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stateMachineId"), + name: ::std::borrow::ToOwned::to_owned("id"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -927,6 +989,12 @@ pub mod evm_host { ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ), ), + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + ::ethers::core::abi::ethabi::ParamType::Bytes, ], ), internal_type: ::core::option::Option::Some( @@ -1022,6 +1090,36 @@ pub mod evm_host { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("stateMachineId"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("stateMachineId"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("id"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("storeConsensusState"), ::std::vec![ @@ -1156,6 +1254,12 @@ pub mod evm_host { ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ), ), + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + ::ethers::core::abi::ethabi::ParamType::Bytes, ], ), internal_type: ::core::option::Option::Some( @@ -1541,20 +1645,48 @@ pub mod evm_host { ], ), ( - ::std::borrow::ToOwned::to_owned("StateMachineUpdated"), + ::std::borrow::ToOwned::to_owned("StateCommitmentVetoed"), ::std::vec![ ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned( - "StateMachineUpdated", + "StateCommitmentVetoed", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { name: ::std::borrow::ToOwned::to_owned("stateMachineId"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("height"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), indexed: false, }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("fisherman"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StateMachineUpdated"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "StateMachineUpdated", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("stateMachineId"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, ::ethers::core::abi::ethabi::EventParam { name: ::std::borrow::ToOwned::to_owned("height"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( @@ -1655,6 +1787,16 @@ pub mod evm_host { .method_hash([154, 132, 37, 188], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `deleteStateMachineCommitment` (0xf8ddf259) function + pub fn delete_state_machine_commitment( + &self, + height: StateMachineHeight, + fisherman: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([248, 221, 242, 89], (height, fisherman)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `dispatch` (0x94480805) function pub fn dispatch( &self, @@ -1783,13 +1925,21 @@ pub mod evm_host { .method_hash([34, 21, 54, 77], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `hyperbridge` (0x005e763e) function + pub fn hyperbridge( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([0, 94, 118, 62], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `latestStateMachineHeight` (0x9c095f86) function pub fn latest_state_machine_height( &self, - state_machine_id: ::ethers::core::types::U256, + id: ::ethers::core::types::U256, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([156, 9, 95, 134], state_machine_id) + .method_hash([156, 9, 95, 134], id) .expect("method not found (this should never happen)") } ///Calls the contract's `perByteFee` (0x641d729d) function @@ -1854,13 +2004,13 @@ pub mod evm_host { .method_hash([25, 232, 250, 241], new_state) .expect("method not found (this should never happen)") } - ///Calls the contract's `setHostParamsAdmin` (0x181a5972) function + ///Calls the contract's `setHostParamsAdmin` (0x8916e155) function pub fn set_host_params_admin( &self, params: HostParams, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([24, 26, 89, 114], (params,)) + .method_hash([137, 22, 225, 85], (params,)) .expect("method not found (this should never happen)") } ///Calls the contract's `stateMachineCommitment` (0xa70a8c47) function @@ -1881,6 +2031,15 @@ pub mod evm_host { .method_hash([26, 136, 10, 147], (height,)) .expect("method not found (this should never happen)") } + ///Calls the contract's `stateMachineId` (0x0b49e04c) function + pub fn state_machine_id( + &self, + id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([11, 73, 224, 76], id) + .expect("method not found (this should never happen)") + } ///Calls the contract's `storeConsensusState` (0xb4974cf0) function pub fn store_consensus_state( &self, @@ -1916,13 +2075,13 @@ pub mod evm_host { .method_hash([212, 7, 132, 199], ()) .expect("method not found (this should never happen)") } - ///Calls the contract's `updateHostParams` (0x48da1737) function + ///Calls the contract's `updateHostParams` (0xf6903fc2) function pub fn update_host_params( &self, params: HostParams, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([72, 218, 23, 55], (params,)) + .method_hash([246, 144, 63, 194], (params,)) .expect("method not found (this should never happen)") } ///Calls the contract's `vetoStateCommitment` (0x0a4fe5c0) function @@ -2015,6 +2174,13 @@ pub mod evm_host { > { self.0.event() } + ///Gets the contract's `StateCommitmentVetoed` event + pub fn state_commitment_vetoed_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StateCommitmentVetoedFilter> + { + self.0.event() + } ///Gets the contract's `StateMachineUpdated` event pub fn state_machine_updated_filter( &self, @@ -2207,9 +2373,28 @@ pub mod evm_host { Eq, Hash, )] - #[ethevent(name = "StateMachineUpdated", abi = "StateMachineUpdated(uint256,uint256)")] + #[ethevent( + name = "StateCommitmentVetoed", + abi = "StateCommitmentVetoed(bytes,uint256,address)" + )] + pub struct StateCommitmentVetoedFilter { + pub state_machine_id: ::ethers::core::types::Bytes, + pub height: ::ethers::core::types::U256, + pub fisherman: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "StateMachineUpdated", abi = "StateMachineUpdated(bytes,uint256)")] pub struct StateMachineUpdatedFilter { - pub state_machine_id: ::ethers::core::types::U256, + pub state_machine_id: ::ethers::core::types::Bytes, pub height: ::ethers::core::types::U256, } ///Container type for all of the contract's events @@ -2224,6 +2409,7 @@ pub mod evm_host { PostResponseEventFilter(PostResponseEventFilter), PostResponseHandledFilter(PostResponseHandledFilter), PostResponseTimeoutHandledFilter(PostResponseTimeoutHandledFilter), + StateCommitmentVetoedFilter(StateCommitmentVetoedFilter), StateMachineUpdatedFilter(StateMachineUpdatedFilter), } impl ::ethers::contract::EthLogDecode for EvmHostEvents { @@ -2257,6 +2443,9 @@ pub mod evm_host { if let Ok(decoded) = PostResponseTimeoutHandledFilter::decode_log(log) { return Ok(EvmHostEvents::PostResponseTimeoutHandledFilter(decoded)); } + if let Ok(decoded) = StateCommitmentVetoedFilter::decode_log(log) { + return Ok(EvmHostEvents::StateCommitmentVetoedFilter(decoded)); + } if let Ok(decoded) = StateMachineUpdatedFilter::decode_log(log) { return Ok(EvmHostEvents::StateMachineUpdatedFilter(decoded)); } @@ -2278,6 +2467,7 @@ pub mod evm_host { Self::PostResponseHandledFilter(element) => ::core::fmt::Display::fmt(element, f), Self::PostResponseTimeoutHandledFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StateCommitmentVetoedFilter(element) => ::core::fmt::Display::fmt(element, f), Self::StateMachineUpdatedFilter(element) => ::core::fmt::Display::fmt(element, f), } } @@ -2327,6 +2517,11 @@ pub mod evm_host { Self::PostResponseTimeoutHandledFilter(value) } } + impl ::core::convert::From for EvmHostEvents { + fn from(value: StateCommitmentVetoedFilter) -> Self { + Self::StateCommitmentVetoedFilter(value) + } + } impl ::core::convert::From for EvmHostEvents { fn from(value: StateMachineUpdatedFilter) -> Self { Self::StateMachineUpdatedFilter(value) @@ -2416,6 +2611,27 @@ pub mod evm_host { )] #[ethcall(name = "consensusUpdateTime", abi = "consensusUpdateTime()")] pub struct ConsensusUpdateTimeCall; + ///Container type for all input parameters for the `deleteStateMachineCommitment` function with + /// signature `deleteStateMachineCommitment((uint256,uint256),address)` and selector + /// `0xf8ddf259` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "deleteStateMachineCommitment", + abi = "deleteStateMachineCommitment((uint256,uint256),address)" + )] + pub struct DeleteStateMachineCommitmentCall { + pub height: StateMachineHeight, + pub fisherman: ::ethers::core::types::Address, + } ///Container type for all input parameters for the `dispatch` function with signature /// `dispatch(((bytes,bytes,uint64,bytes,bytes,uint64,bytes),bytes,uint64,uint256,address))` and /// selector `0x94480805` @@ -2670,6 +2886,20 @@ pub mod evm_host { )] #[ethcall(name = "hostParams", abi = "hostParams()")] pub struct HostParamsCall; + ///Container type for all input parameters for the `hyperbridge` function with signature + /// `hyperbridge()` and selector `0x005e763e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "hyperbridge", abi = "hyperbridge()")] + pub struct HyperbridgeCall; ///Container type for all input parameters for the `latestStateMachineHeight` function with /// signature `latestStateMachineHeight(uint256)` and selector `0x9c095f86` #[derive( @@ -2684,7 +2914,7 @@ pub mod evm_host { )] #[ethcall(name = "latestStateMachineHeight", abi = "latestStateMachineHeight(uint256)")] pub struct LatestStateMachineHeightCall { - pub state_machine_id: ::ethers::core::types::U256, + pub id: ::ethers::core::types::U256, } ///Container type for all input parameters for the `perByteFee` function with signature /// `perByteFee()` and selector `0x641d729d` @@ -2798,20 +3028,11 @@ pub mod evm_host { } ///Container type for all input parameters for the `setHostParamsAdmin` function with signature /// `setHostParamsAdmin((uint256,uint256,address,address,address,address,uint256,uint256, - /// address,bytes,uint256,uint256[]))` and selector `0x181a5972` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] + /// address,bytes,uint256,uint256[],address[],bytes))` and selector `0x8916e155` + #[derive(Clone, ::ethers::contract::EthCall, ::ethers::contract::EthDisplay)] #[ethcall( name = "setHostParamsAdmin", - abi = "setHostParamsAdmin((uint256,uint256,address,address,address,address,uint256,uint256,address,bytes,uint256,uint256[]))" + abi = "setHostParamsAdmin((uint256,uint256,address,address,address,address,uint256,uint256,address,bytes,uint256,uint256[],address[],bytes))" )] pub struct SetHostParamsAdminCall { pub params: HostParams, @@ -2852,6 +3073,22 @@ pub mod evm_host { pub struct StateMachineCommitmentUpdateTimeCall { pub height: StateMachineHeight, } + ///Container type for all input parameters for the `stateMachineId` function with signature + /// `stateMachineId(uint256)` and selector `0x0b49e04c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "stateMachineId", abi = "stateMachineId(uint256)")] + pub struct StateMachineIdCall { + pub id: ::ethers::core::types::U256, + } ///Container type for all input parameters for the `storeConsensusState` function with /// signature `storeConsensusState(bytes)` and selector `0xb4974cf0` #[derive( @@ -2919,20 +3156,11 @@ pub mod evm_host { pub struct UnStakingPeriodCall; ///Container type for all input parameters for the `updateHostParams` function with signature /// `updateHostParams((uint256,uint256,address,address,address,address,uint256,uint256,address, - /// bytes,uint256,uint256[]))` and selector `0x48da1737` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] + /// bytes,uint256,uint256[],address[],bytes))` and selector `0xf6903fc2` + #[derive(Clone, ::ethers::contract::EthCall, ::ethers::contract::EthDisplay)] #[ethcall( name = "updateHostParams", - abi = "updateHostParams((uint256,uint256,address,address,address,address,uint256,uint256,address,bytes,uint256,uint256[]))" + abi = "updateHostParams((uint256,uint256,address,address,address,address,uint256,uint256,address,bytes,uint256,uint256[],address[],bytes))" )] pub struct UpdateHostParamsCall { pub params: HostParams, @@ -2970,7 +3198,7 @@ pub mod evm_host { pub params: WithdrawParams, } ///Container type for all of the contract's call - #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + #[derive(Clone, ::ethers::contract::EthAbiType)] pub enum EvmHostCalls { Admin(AdminCall), ChainId(ChainIdCall), @@ -2978,6 +3206,7 @@ pub mod evm_host { ConsensusClient(ConsensusClientCall), ConsensusState(ConsensusStateCall), ConsensusUpdateTime(ConsensusUpdateTimeCall), + DeleteStateMachineCommitment(DeleteStateMachineCommitmentCall), Dispatch(DispatchCall), DispatchWithPost(DispatchWithPostCall), DispatchWithGet(DispatchWithGetCall), @@ -2992,6 +3221,7 @@ pub mod evm_host { FundRequest(FundRequestCall), Host(HostCall), HostParams(HostParamsCall), + Hyperbridge(HyperbridgeCall), LatestStateMachineHeight(LatestStateMachineHeightCall), PerByteFee(PerByteFeeCall), RequestCommitments(RequestCommitmentsCall), @@ -3003,6 +3233,7 @@ pub mod evm_host { SetHostParamsAdmin(SetHostParamsAdminCall), StateMachineCommitment(StateMachineCommitmentCall), StateMachineCommitmentUpdateTime(StateMachineCommitmentUpdateTimeCall), + StateMachineId(StateMachineIdCall), StoreConsensusState(StoreConsensusStateCall), StoreStateMachineCommitment(StoreStateMachineCommitmentCall), Timestamp(TimestampCall), @@ -3042,6 +3273,11 @@ pub mod evm_host { { return Ok(Self::ConsensusUpdateTime(decoded)); } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DeleteStateMachineCommitment(decoded)); + } if let Ok(decoded) = ::decode(data) { return Ok(Self::Dispatch(decoded)); } @@ -3100,6 +3336,9 @@ pub mod evm_host { if let Ok(decoded) = ::decode(data) { return Ok(Self::HostParams(decoded)); } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Hyperbridge(decoded)); + } if let Ok(decoded) = ::decode(data) { @@ -3155,6 +3394,11 @@ pub mod evm_host { { return Ok(Self::StateMachineCommitmentUpdateTime(decoded)); } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::StateMachineId(decoded)); + } if let Ok(decoded) = ::decode(data) { @@ -3199,6 +3443,8 @@ pub mod evm_host { Self::ConsensusState(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::ConsensusUpdateTime(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DeleteStateMachineCommitment(element) => + ::ethers::core::abi::AbiEncode::encode(element), Self::Dispatch(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::DispatchWithPost(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::DispatchWithGet(element) => ::ethers::core::abi::AbiEncode::encode(element), @@ -3213,6 +3459,7 @@ pub mod evm_host { Self::FundRequest(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Host(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::HostParams(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Hyperbridge(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::LatestStateMachineHeight(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::PerByteFee(element) => ::ethers::core::abi::AbiEncode::encode(element), @@ -3230,6 +3477,7 @@ pub mod evm_host { ::ethers::core::abi::AbiEncode::encode(element), Self::StateMachineCommitmentUpdateTime(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::StateMachineId(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::StoreConsensusState(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::StoreStateMachineCommitment(element) => @@ -3252,6 +3500,8 @@ pub mod evm_host { Self::ConsensusClient(element) => ::core::fmt::Display::fmt(element, f), Self::ConsensusState(element) => ::core::fmt::Display::fmt(element, f), Self::ConsensusUpdateTime(element) => ::core::fmt::Display::fmt(element, f), + Self::DeleteStateMachineCommitment(element) => + ::core::fmt::Display::fmt(element, f), Self::Dispatch(element) => ::core::fmt::Display::fmt(element, f), Self::DispatchWithPost(element) => ::core::fmt::Display::fmt(element, f), Self::DispatchWithGet(element) => ::core::fmt::Display::fmt(element, f), @@ -3266,6 +3516,7 @@ pub mod evm_host { Self::FundRequest(element) => ::core::fmt::Display::fmt(element, f), Self::Host(element) => ::core::fmt::Display::fmt(element, f), Self::HostParams(element) => ::core::fmt::Display::fmt(element, f), + Self::Hyperbridge(element) => ::core::fmt::Display::fmt(element, f), Self::LatestStateMachineHeight(element) => ::core::fmt::Display::fmt(element, f), Self::PerByteFee(element) => ::core::fmt::Display::fmt(element, f), Self::RequestCommitments(element) => ::core::fmt::Display::fmt(element, f), @@ -3278,6 +3529,7 @@ pub mod evm_host { Self::StateMachineCommitment(element) => ::core::fmt::Display::fmt(element, f), Self::StateMachineCommitmentUpdateTime(element) => ::core::fmt::Display::fmt(element, f), + Self::StateMachineId(element) => ::core::fmt::Display::fmt(element, f), Self::StoreConsensusState(element) => ::core::fmt::Display::fmt(element, f), Self::StoreStateMachineCommitment(element) => ::core::fmt::Display::fmt(element, f), Self::Timestamp(element) => ::core::fmt::Display::fmt(element, f), @@ -3318,6 +3570,11 @@ pub mod evm_host { Self::ConsensusUpdateTime(value) } } + impl ::core::convert::From for EvmHostCalls { + fn from(value: DeleteStateMachineCommitmentCall) -> Self { + Self::DeleteStateMachineCommitment(value) + } + } impl ::core::convert::From for EvmHostCalls { fn from(value: DispatchCall) -> Self { Self::Dispatch(value) @@ -3388,6 +3645,11 @@ pub mod evm_host { Self::HostParams(value) } } + impl ::core::convert::From for EvmHostCalls { + fn from(value: HyperbridgeCall) -> Self { + Self::Hyperbridge(value) + } + } impl ::core::convert::From for EvmHostCalls { fn from(value: LatestStateMachineHeightCall) -> Self { Self::LatestStateMachineHeight(value) @@ -3443,6 +3705,11 @@ pub mod evm_host { Self::StateMachineCommitmentUpdateTime(value) } } + impl ::core::convert::From for EvmHostCalls { + fn from(value: StateMachineIdCall) -> Self { + Self::StateMachineId(value) + } + } impl ::core::convert::From for EvmHostCalls { fn from(value: StoreConsensusStateCall) -> Self { Self::StoreConsensusState(value) @@ -3654,6 +3921,19 @@ pub mod evm_host { Hash, )] pub struct HostParamsReturn(pub HostParams); + ///Container type for all return fields from the `hyperbridge` function with signature + /// `hyperbridge()` and selector `0x005e763e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct HyperbridgeReturn(pub ::ethers::core::types::Bytes); ///Container type for all return fields from the `latestStateMachineHeight` function with /// signature `latestStateMachineHeight(uint256)` and selector `0x9c095f86` #[derive( @@ -3759,6 +4039,19 @@ pub mod evm_host { Hash, )] pub struct StateMachineCommitmentUpdateTimeReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `stateMachineId` function with signature + /// `stateMachineId(uint256)` and selector `0x0b49e04c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct StateMachineIdReturn(pub ::ethers::core::types::Bytes); ///Container type for all return fields from the `timestamp` function with signature /// `timestamp()` and selector `0xb80777ea` #[derive( @@ -3857,7 +4150,7 @@ pub mod evm_host { pub sender: ::ethers::core::types::Address, } ///`HostParams(uint256,uint256,address,address,address,address,uint256,uint256,address,bytes, - /// uint256,uint256[])` + /// uint256,uint256[],address[],bytes)` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -3881,6 +4174,8 @@ pub mod evm_host { pub consensus_state: ::ethers::core::types::Bytes, pub consensus_update_timestamp: ::ethers::core::types::U256, pub state_machine_whitelist: ::std::vec::Vec<::ethers::core::types::U256>, + pub fishermen: ::std::vec::Vec<::ethers::core::types::Address>, + pub hyperbridge: ::ethers::core::types::Bytes, } ///`ResponseReceipt(bytes32,address)` #[derive( diff --git a/evm/abi/src/generated/host_manager.rs b/evm/abi/src/generated/host_manager.rs index 314bdf6cd..0c88ca06e 100644 --- a/evm/abi/src/generated/host_manager.rs +++ b/evm/abi/src/generated/host_manager.rs @@ -19,7 +19,6 @@ pub mod host_manager { name: ::std::borrow::ToOwned::to_owned("managerParams"), kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Address, ],), internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( @@ -218,7 +217,6 @@ pub mod host_manager { name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Address, ],), internal_type: ::core::option::Option::Some( @@ -256,12 +254,12 @@ pub mod host_manager { pub static HOSTMANAGER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x14\xB18\x03\x80a\x14\xB1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x8BV[\x80Q`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x16`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x17\x90\x91U` \x83\x01Q`\x01U`@\x90\x92\x01Q`\x02\x80T\x90\x93\x16\x91\x16\x17\x90Ua\0\xFDV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x86W`\0\x80\xFD[\x91\x90PV[`\0``\x82\x84\x03\x12\x15a\0\x9DW`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\0\xCDWcNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Ra\0\xD9\x83a\0oV[\x81R` \x83\x01Q` \x82\x01Ra\0\xF1`@\x84\x01a\0oV[`@\x82\x01R\x93\x92PPPV[a\x13\xA5\x80a\x01\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xB5\xA9\x82K\x11a\0[W\x80c\xB5\xA9\x82K\x14a\0\xD6W\x80c\xBC\r\xD4G\x14a\0\xE9W\x80c\xC4\x92\xE4&\x14a\0\xFCW\x80c\xCF\xF0\xAB\x96\x14a\x01\nW`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\x8DW\x80c\x0E\x83$\xA2\x14a\0\xA2W\x80c\x0F\xEE2\xCE\x14a\0\xB5W\x80c\xB2\xA0\x1B\xF5\x14a\0\xC8W[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\nZV[a\x01\x8FV[\0[a\0\xA0a\0\xB06`\x04a\n\xADV[a\x01\xEBV[a\0\xA0a\0\xC36`\x04a\n\xCFV[a\x02nV[a\0\xA0a\0\x9B6`\x04a\x0B\tV[a\0\xA0a\0\xE46`\x04a\r#V[a\x05\x11V[a\0\xA0a\0\xF76`\x04a\x0E\xBDV[a\x05eV[a\0\xA0a\0\xE46`\x04a\x0E\xF1V[a\x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q``\x81\x01\x82R`\0T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R`\x01T` \x83\x01R`\x02T\x16\x91\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01`@Q\x80\x91\x03\x90\xF3[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FIsmpModule doesn't emit Post res`D\x82\x01Reponses`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FHostManager: Unauthorized action`D\x82\x01R`d\x01a\x01\xE2V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90U`\0\x80T\x90\x91\x16\x90UV[`\x02T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FHostManager: Unauthorized action`D\x82\x01R`d\x01a\x01\xE2V[6a\x02\xD3\x82\x80a\x0F%V[\x90Pa\x03-a\x02\xE6`\0`\x01\x01Ta\x05\xBBV[a\x02\xF0\x83\x80a\x0FEV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x92\x93\x92PPa\x05\xEC\x90PV[a\x03pW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15[\x98]]\x1A\x1B\xDC\x9A^\x99Y\x08\x1C\x99\\]Y\\\xDD`b\x1B`D\x82\x01R`d\x01a\x01\xE2V[`\0a\x03\x7F`\xC0\x83\x01\x83a\x0FEV[`\0\x81\x81\x10a\x03\x90Wa\x03\x90a\x0F\x92V[\x91\x90\x91\x015`\xF8\x1C\x90P`\x01\x81\x11\x15a\x03\xABWa\x03\xABa\x0F\xA8V[\x90P`\0\x81`\x01\x81\x11\x15a\x03\xC1Wa\x03\xC1a\x0F\xA8V[\x03a\x04dW`\0a\x03\xD5`\xC0\x84\x01\x84a\x0FEV[a\x03\xE3\x91`\x01\x90\x82\x90a\x0F\xBEV[\x81\x01\x90a\x03\xF0\x91\x90a\x0F\xE8V[`\x02T`@Qc=`\0\xFD[PPPPPPPPV[`\x01\x81`\x01\x81\x11\x15a\x04xWa\x04xa\x0F\xA8V[\x03a\x04\xD8W`\0a\x04\x8C`\xC0\x84\x01\x84a\x0FEV[a\x04\x9A\x91`\x01\x90\x82\x90a\x0F\xBEV[\x81\x01\x90a\x04\xA7\x91\x90a\x10\x99V[`\x02T`@QcH\xDA\x177`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cH\xDA\x177\x90a\x04,\x90\x84\x90`\x04\x01a\x12EV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm*\xB75\xB77\xBB\xB7\x100\xB1\xBA4\xB7\xB7`\x91\x1B`D\x82\x01R`d\x01a\x01\xE2V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FIsmpModule doesn't emit Get requ`D\x82\x01Rcests`\xE0\x1B`d\x82\x01R`\x84\x01a\x01\xE2V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FIsmpModule doesn't emit Post req`D\x82\x01Rduests`\xD8\x1B`d\x82\x01R`\x84\x01a\x01\xE2V[``a\x05\xC6\x82a\x06\x19V[`@Q` \x01a\x05\xD6\x91\x90a\x13>V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\0\x81Q\x83Q\x14a\x05\xFFWP`\0a\x06\x13V[P\x81Q` \x82\x81\x01\x82\x90 \x90\x84\x01\x91\x90\x91 \x14[\x92\x91PPV[```\0a\x06&\x83a\x06\xABV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06EWa\x06Ea\x07\x83V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x06oW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x06yWP\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x06\xEAWr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x07\x16Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x074Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x07LWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x07`Wa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x07rW`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x06\x13W`\x01\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x07\xBBWa\x07\xBBa\x07\x83V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x07\xBBWa\x07\xBBa\x07\x83V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x07\xBBWa\x07\xBBa\x07\x83V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x08.Wa\x08.a\x07\x83V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x08GW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08`Wa\x08`a\x07\x83V[a\x08s`\x1F\x82\x01`\x1F\x19\x16` \x01a\x08\x06V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x08\x88W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x08\xBCW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\x08\xD3W`\0\x80\xFD[a\x08\xDBa\x07\x99V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x08\xF4W`\0\x80\xFD[a\t\0\x85\x83\x86\x01a\x086V[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\t\x16W`\0\x80\xFD[a\t\"\x85\x83\x86\x01a\x086V[` \x84\x01Ra\t3`@\x85\x01a\x08\xA5V[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\tLW`\0\x80\xFD[a\tX\x85\x83\x86\x01a\x086V[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\tqW`\0\x80\xFD[a\t}\x85\x83\x86\x01a\x086V[`\x80\x84\x01Ra\t\x8E`\xA0\x85\x01a\x08\xA5V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\t\xA7W`\0\x80\xFD[Pa\t\xB4\x84\x82\x85\x01a\x086V[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\t\xD2W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\t\xF5Wa\t\xF5a\x07\x83V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\n\rW`\0\x80\xFD[a\n\x19\x86\x83\x87\x01a\x08\xC1V[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\n/W`\0\x80\xFD[Pa\n<\x85\x82\x86\x01a\x086V[` \x83\x01RPa\nN`@\x84\x01a\x08\xA5V[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\nlW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x82W`\0\x80\xFD[a\n\x8E\x84\x82\x85\x01a\t\xC0V[\x94\x93PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\xBCW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\n\xBFW`\0\x80\xFD[a\n\xC8\x82a\n\x96V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\n\xE1W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xF7W`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\n\xC8W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0B\x1BW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B2W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0BFW`\0\x80\xFD[a\x0BNa\x07\xC1V[\x825\x82\x81\x11\x15a\x0B]W`\0\x80\xFD[a\x0Bi\x87\x82\x86\x01a\t\xC0V[\x82RPa\x0Bx` \x84\x01a\n\x96V[` \x82\x01R\x95\x94PPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0B\x9FWa\x0B\x9Fa\x07\x83V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x0B\xBAW`\0\x80\xFD[\x815` a\x0B\xCFa\x0B\xCA\x83a\x0B\x86V[a\x08\x06V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0B\xEEW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0C-W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\x11W`\0\x80\x81\xFD[a\x0C\x1F\x89\x86\x83\x8B\x01\x01a\x086V[\x84RP\x91\x83\x01\x91\x83\x01a\x0B\xF2V[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x0CJW`\0\x80\xFD[a\x0CRa\x07\x99V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0CkW`\0\x80\xFD[a\x0Cw\x85\x83\x86\x01a\x086V[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x0C\x8DW`\0\x80\xFD[a\x0C\x99\x85\x83\x86\x01a\x086V[` \x84\x01Ra\x0C\xAA`@\x85\x01a\x08\xA5V[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x0C\xC3W`\0\x80\xFD[a\x0C\xCF\x85\x83\x86\x01a\x086V[``\x84\x01Ra\x0C\xE0`\x80\x85\x01a\x08\xA5V[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x0C\xF9W`\0\x80\xFD[Pa\r\x06\x84\x82\x85\x01a\x0B\xA9V[`\xA0\x83\x01RPa\r\x18`\xC0\x83\x01a\x08\xA5V[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\r5W`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\rKW`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\r_W`\0\x80\xFD[a\rga\x07\xC1V[\x82\x825\x11\x15a\ruW`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\r\x89W`\0\x80\xFD[a\r\x91a\x07\xC1V[\x84\x825\x11\x15a\r\x9FW`\0\x80\xFD[a\r\xAC\x88\x835\x84\x01a\x0C8V[\x81R\x84` \x83\x015\x11\x15a\r\xBFW`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\r\xD7W`\0\x80\xFD[a\r\xE4a\x0B\xCA\x835a\x0B\x86V[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x0E\x03W`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x0E\xA2W\x88\x815\x11\x15a\x0E\x1EW`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x0E6W`\0\x80\xFD[a\x0E>a\x07\xC1V[\x8A` \x83\x015\x11\x15a\x0EOW`\0\x80\xFD[a\x0Ea\x8E` \x80\x85\x015\x85\x01\x01a\x086V[\x81R\x8A`@\x83\x015\x11\x15a\x0EtW`\0\x80\xFD[a\x0E\x87\x8E` `@\x85\x015\x85\x01\x01a\x086V[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x0E\x08V[PP\x80` \x84\x01RPP\x80\x83RPPa\x0Bx` \x83\x01a\n\x96V[`\0` \x82\x84\x03\x12\x15a\x0E\xCFW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0E\xE5W`\0\x80\xFD[a\n\x8E\x84\x82\x85\x01a\x08\xC1V[`\0` \x82\x84\x03\x12\x15a\x0F\x03W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\x19W`\0\x80\xFD[a\n\x8E\x84\x82\x85\x01a\x0C8V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12a\x0F;W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x0F\\W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0FvW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0F\x8BW`\0\x80\xFD[\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0\x80\x85\x85\x11\x15a\x0F\xCEW`\0\x80\xFD[\x83\x86\x11\x15a\x0F\xDBW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0`@\x82\x84\x03\x12\x15a\x0F\xFAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a\x10\x1CWa\x10\x1Ca\x07\x83V[`@Ra\x10(\x83a\n\x96V[\x81R` \x83\x015` \x82\x01R\x80\x91PP\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x10OW`\0\x80\xFD[\x815` a\x10_a\x0B\xCA\x83a\x0B\x86V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x10~W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0C-W\x805\x83R\x91\x83\x01\x91\x83\x01a\x10\x82V[`\0` \x82\x84\x03\x12\x15a\x10\xABW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10\xC2W`\0\x80\xFD[\x90\x83\x01\x90a\x01\x80\x82\x86\x03\x12\x15a\x10\xD7W`\0\x80\xFD[a\x10\xDFa\x07\xE3V[\x825\x81R` \x83\x015` \x82\x01Ra\x10\xF9`@\x84\x01a\n\x96V[`@\x82\x01Ra\x11\n``\x84\x01a\n\x96V[``\x82\x01Ra\x11\x1B`\x80\x84\x01a\n\x96V[`\x80\x82\x01Ra\x11,`\xA0\x84\x01a\n\x96V[`\xA0\x82\x01R`\xC0\x83\x015`\xC0\x82\x01R`\xE0\x83\x015`\xE0\x82\x01Ra\x01\0a\x11S\x81\x85\x01a\n\x96V[\x90\x82\x01Ra\x01 \x83\x81\x015\x83\x81\x11\x15a\x11kW`\0\x80\xFD[a\x11w\x88\x82\x87\x01a\x086V[\x82\x84\x01RPPa\x01@\x80\x84\x015\x81\x83\x01RPa\x01`\x80\x84\x015\x83\x81\x11\x15a\x11\x9DW`\0\x80\xFD[a\x11\xA9\x88\x82\x87\x01a\x10>V[\x91\x83\x01\x91\x90\x91RP\x95\x94PPPPPV[`\0[\x83\x81\x10\x15a\x11\xD5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x11\xBDV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x11\xF6\x81` \x86\x01` \x86\x01a\x11\xBAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x12:W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x12\x1EV[P\x94\x95\x94PPPPPV[` \x81R\x81Q` \x82\x01R` \x82\x01Q`@\x82\x01R`\0`@\x83\x01Qa\x12v``\x84\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[P``\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80\x84\x01RP`\x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x84\x01RP`\xA0\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xC0\x84\x01RP`\xC0\x83\x01Q`\xE0\x83\x01R`\xE0\x83\x01Qa\x01\0\x81\x81\x85\x01R\x80\x85\x01Q\x91PPa\x01 a\x12\xEB\x81\x85\x01\x83`\x01`\x01`\xA0\x1B\x03\x16\x90RV[\x80\x85\x01Q\x91PPa\x01\x80a\x01@\x81\x81\x86\x01Ra\x13\x0Ba\x01\xA0\x86\x01\x84a\x11\xDEV[\x90\x86\x01Qa\x01`\x86\x81\x01\x91\x90\x91R\x86\x01Q\x85\x82\x03`\x1F\x19\x01\x83\x87\x01R\x90\x92Pa\x134\x83\x82a\x12\nV[\x96\x95PPPPPPV[hPOLKADOT-`\xB8\x1B\x81R`\0\x82Qa\x13b\x81`\t\x85\x01` \x87\x01a\x11\xBAV[\x91\x90\x91\x01`\t\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA8\x90\xE18\x19F\xA91U\x19(u-\x1EU\x19\x12)\x84?{\xFA\x1D\x10\xB8\xB3$\x08\t\xE4+\x03dsolcC\0\x08\x11\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x14\xB88\x03\x80a\x14\xB8\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x83V[\x80Q`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x16`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x17\x90\x91U` \x90\x92\x01Q`\x01\x80T\x90\x93\x16\x91\x16\x17\x90Ua\0\xEBV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0~W`\0\x80\xFD[\x91\x90PV[`\0`@\x82\x84\x03\x12\x15a\0\x95W`\0\x80\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\0\xC5WcNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Ra\0\xD1\x83a\0gV[\x81Ra\0\xDF` \x84\x01a\0gV[` \x82\x01R\x93\x92PPPV[a\x13\xBE\x80a\0\xFA`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xB5\xA9\x82K\x11a\0[W\x80c\xB5\xA9\x82K\x14a\0\xD6W\x80c\xBC\r\xD4G\x14a\0\xE9W\x80c\xC4\x92\xE4&\x14a\0\xFCW\x80c\xCF\xF0\xAB\x96\x14a\x01\nW`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\x8DW\x80c\x0E\x83$\xA2\x14a\0\xA2W\x80c\x0F\xEE2\xCE\x14a\0\xB5W\x80c\xB2\xA0\x1B\xF5\x14a\0\xC8W[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\t\nV[a\x01]V[\0[a\0\xA0a\0\xB06`\x04a\t]V[a\x01\xB9V[a\0\xA0a\0\xC36`\x04a\t\x7FV[a\x02`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xFBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03#\x91\x90\x81\x01\x90a\x0E\x14V[a\x03-\x83\x80a\x0E\x8AV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x92\x93\x92PPa\x05\xF8\x90PV[a\x03\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15[\x98]]\x1A\x1B\xDC\x9A^\x99Y\x08\x1C\x99\\]Y\\\xDD`b\x1B`D\x82\x01R`d\x01a\x01\xB0V[`\0a\x03\xBC`\xC0\x83\x01\x83a\x0E\x8AV[`\0\x81\x81\x10a\x03\xCDWa\x03\xCDa\x0E\xD7V[\x91\x90\x91\x015`\xF8\x1C\x90P`\x01\x81\x11\x15a\x03\xE8Wa\x03\xE8a\x0E\xEDV[\x90P`\0\x81`\x01\x81\x11\x15a\x03\xFEWa\x03\xFEa\x0E\xEDV[\x03a\x04\xA1W`\0a\x04\x12`\xC0\x84\x01\x84a\x0E\x8AV[a\x04 \x91`\x01\x90\x82\x90a\x0F\x03V[\x81\x01\x90a\x04-\x91\x90a\x0F-V[`\x01T`@Qc=`\0\xFD[PPPPPPPPV[`\x01\x81`\x01\x81\x11\x15a\x04\xB5Wa\x04\xB5a\x0E\xEDV[\x03a\x05\x15W`\0a\x04\xC9`\xC0\x84\x01\x84a\x0E\x8AV[a\x04\xD7\x91`\x01\x90\x82\x90a\x0F\x03V[\x81\x01\x90a\x04\xE4\x91\x90a\x10@V[`\x01T`@Qc{H\x1F\xE1`\xE1\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF6\x90?\xC2\x90a\x04i\x90\x84\x90`\x04\x01a\x12MV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm*\xB75\xB77\xBB\xB7\x100\xB1\xBA4\xB7\xB7`\x91\x1B`D\x82\x01R`d\x01a\x01\xB0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FIsmpModule doesn't emit Get requ`D\x82\x01Rcests`\xE0\x1B`d\x82\x01R`\x84\x01a\x01\xB0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FIsmpModule doesn't emit Post req`D\x82\x01Rduests`\xD8\x1B`d\x82\x01R`\x84\x01a\x01\xB0V[`\0\x81Q\x83Q\x14a\x06\x0BWP`\0a\x06\x1FV[P\x81Q` \x82\x81\x01\x82\x90 \x90\x84\x01\x91\x90\x91 \x14[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06]Wa\x06]a\x06%V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06]Wa\x06]a\x06%V[`@Qa\x01\xC0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06]Wa\x06]a\x06%V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06\xD0Wa\x06\xD0a\x06%V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x06\xF1Wa\x06\xF1a\x06%V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x07\x10W`\0\x80\xFD[\x815a\x07#a\x07\x1E\x82a\x06\xD8V[a\x06\xA8V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x078W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x07lW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\x07\x83W`\0\x80\xFD[a\x07\x8Ba\x06;V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x07\xA4W`\0\x80\xFD[a\x07\xB0\x85\x83\x86\x01a\x06\xFFV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x07\xC6W`\0\x80\xFD[a\x07\xD2\x85\x83\x86\x01a\x06\xFFV[` \x84\x01Ra\x07\xE3`@\x85\x01a\x07UV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x07\xFCW`\0\x80\xFD[a\x08\x08\x85\x83\x86\x01a\x06\xFFV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x08!W`\0\x80\xFD[a\x08-\x85\x83\x86\x01a\x06\xFFV[`\x80\x84\x01Ra\x08>`\xA0\x85\x01a\x07UV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x08WW`\0\x80\xFD[Pa\x08d\x84\x82\x85\x01a\x06\xFFV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x08\x82W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x08\xA5Wa\x08\xA5a\x06%V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x08\xBDW`\0\x80\xFD[a\x08\xC9\x86\x83\x87\x01a\x07qV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x08\xDFW`\0\x80\xFD[Pa\x08\xEC\x85\x82\x86\x01a\x06\xFFV[` \x83\x01RPa\x08\xFE`@\x84\x01a\x07UV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\t\x1CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\t2W`\0\x80\xFD[a\t>\x84\x82\x85\x01a\x08pV[\x94\x93PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07lW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\toW`\0\x80\xFD[a\tx\x82a\tFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\x91W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA7W`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\txW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\t\xCBW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\t\xE2W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\t\xF6W`\0\x80\xFD[a\t\xFEa\x06cV[\x825\x82\x81\x11\x15a\n\rW`\0\x80\xFD[a\n\x19\x87\x82\x86\x01a\x08pV[\x82RPa\n(` \x84\x01a\tFV[` \x82\x01R\x95\x94PPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\nOWa\nOa\x06%V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\njW`\0\x80\xFD[\x815` a\nza\x07\x1E\x83a\n6V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\n\x99W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\xD8W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xBCW`\0\x80\x81\xFD[a\n\xCA\x89\x86\x83\x8B\x01\x01a\x06\xFFV[\x84RP\x91\x83\x01\x91\x83\x01a\n\x9DV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\n\xF5W`\0\x80\xFD[a\n\xFDa\x06;V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B\x16W`\0\x80\xFD[a\x0B\"\x85\x83\x86\x01a\x06\xFFV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x0B8W`\0\x80\xFD[a\x0BD\x85\x83\x86\x01a\x06\xFFV[` \x84\x01Ra\x0BU`@\x85\x01a\x07UV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x0BnW`\0\x80\xFD[a\x0Bz\x85\x83\x86\x01a\x06\xFFV[``\x84\x01Ra\x0B\x8B`\x80\x85\x01a\x07UV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x0B\xA4W`\0\x80\xFD[Pa\x0B\xB1\x84\x82\x85\x01a\nYV[`\xA0\x83\x01RPa\x0B\xC3`\xC0\x83\x01a\x07UV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0B\xE0W`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x0B\xF6W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x0C\nW`\0\x80\xFD[a\x0C\x12a\x06cV[\x82\x825\x11\x15a\x0C W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x0C4W`\0\x80\xFD[a\x0C\x84\x82\x85\x01a\x07qV[`\0` \x82\x84\x03\x12\x15a\r\xAEW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xC4W`\0\x80\xFD[a\t>\x84\x82\x85\x01a\n\xE3V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12a\r\xE6W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0[\x83\x81\x10\x15a\x0E\x0BW\x81\x81\x01Q\x83\x82\x01R` \x01a\r\xF3V[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15a\x0E&W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0E=`\0\xFD[PPPPPPPPV[`\x01\x81`\x01\x81\x11\x15a\x04xWa\x04xa\x0F\xA8V[\x03a\x04\xD8W`\0a\x04\x8C`\xC0\x84\x01\x84a\x0FEV[a\x04\x9A\x91`\x01\x90\x82\x90a\x0F\xBEV[\x81\x01\x90a\x04\xA7\x91\x90a\x10\x99V[`\x02T`@QcH\xDA\x177`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90cH\xDA\x177\x90a\x04,\x90\x84\x90`\x04\x01a\x12EV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm*\xB75\xB77\xBB\xB7\x100\xB1\xBA4\xB7\xB7`\x91\x1B`D\x82\x01R`d\x01a\x01\xE2V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FIsmpModule doesn't emit Get requ`D\x82\x01Rcests`\xE0\x1B`d\x82\x01R`\x84\x01a\x01\xE2V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FIsmpModule doesn't emit Post req`D\x82\x01Rduests`\xD8\x1B`d\x82\x01R`\x84\x01a\x01\xE2V[``a\x05\xC6\x82a\x06\x19V[`@Q` \x01a\x05\xD6\x91\x90a\x13>V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[`\0\x81Q\x83Q\x14a\x05\xFFWP`\0a\x06\x13V[P\x81Q` \x82\x81\x01\x82\x90 \x90\x84\x01\x91\x90\x91 \x14[\x92\x91PPV[```\0a\x06&\x83a\x06\xABV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06EWa\x06Ea\x07\x83V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x06oW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x06yWP\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x06\xEAWr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x07\x16Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x074Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x07LWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x07`Wa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x07rW`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x06\x13W`\x01\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x07\xBBWa\x07\xBBa\x07\x83V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x07\xBBWa\x07\xBBa\x07\x83V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x07\xBBWa\x07\xBBa\x07\x83V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x08.Wa\x08.a\x07\x83V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x08GW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08`Wa\x08`a\x07\x83V[a\x08s`\x1F\x82\x01`\x1F\x19\x16` \x01a\x08\x06V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x08\x88W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x08\xBCW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\x08\xD3W`\0\x80\xFD[a\x08\xDBa\x07\x99V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x08\xF4W`\0\x80\xFD[a\t\0\x85\x83\x86\x01a\x086V[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\t\x16W`\0\x80\xFD[a\t\"\x85\x83\x86\x01a\x086V[` \x84\x01Ra\t3`@\x85\x01a\x08\xA5V[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\tLW`\0\x80\xFD[a\tX\x85\x83\x86\x01a\x086V[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\tqW`\0\x80\xFD[a\t}\x85\x83\x86\x01a\x086V[`\x80\x84\x01Ra\t\x8E`\xA0\x85\x01a\x08\xA5V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\t\xA7W`\0\x80\xFD[Pa\t\xB4\x84\x82\x85\x01a\x086V[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\t\xD2W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\t\xF5Wa\t\xF5a\x07\x83V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\n\rW`\0\x80\xFD[a\n\x19\x86\x83\x87\x01a\x08\xC1V[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\n/W`\0\x80\xFD[Pa\n<\x85\x82\x86\x01a\x086V[` \x83\x01RPa\nN`@\x84\x01a\x08\xA5V[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\nlW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\x82W`\0\x80\xFD[a\n\x8E\x84\x82\x85\x01a\t\xC0V[\x94\x93PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\xBCW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\n\xBFW`\0\x80\xFD[a\n\xC8\x82a\n\x96V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\n\xE1W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xF7W`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\n\xC8W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0B\x1BW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B2W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0BFW`\0\x80\xFD[a\x0BNa\x07\xC1V[\x825\x82\x81\x11\x15a\x0B]W`\0\x80\xFD[a\x0Bi\x87\x82\x86\x01a\t\xC0V[\x82RPa\x0Bx` \x84\x01a\n\x96V[` \x82\x01R\x95\x94PPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0B\x9FWa\x0B\x9Fa\x07\x83V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x0B\xBAW`\0\x80\xFD[\x815` a\x0B\xCFa\x0B\xCA\x83a\x0B\x86V[a\x08\x06V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x0B\xEEW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0C-W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\x11W`\0\x80\x81\xFD[a\x0C\x1F\x89\x86\x83\x8B\x01\x01a\x086V[\x84RP\x91\x83\x01\x91\x83\x01a\x0B\xF2V[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x0CJW`\0\x80\xFD[a\x0CRa\x07\x99V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0CkW`\0\x80\xFD[a\x0Cw\x85\x83\x86\x01a\x086V[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x0C\x8DW`\0\x80\xFD[a\x0C\x99\x85\x83\x86\x01a\x086V[` \x84\x01Ra\x0C\xAA`@\x85\x01a\x08\xA5V[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x0C\xC3W`\0\x80\xFD[a\x0C\xCF\x85\x83\x86\x01a\x086V[``\x84\x01Ra\x0C\xE0`\x80\x85\x01a\x08\xA5V[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x0C\xF9W`\0\x80\xFD[Pa\r\x06\x84\x82\x85\x01a\x0B\xA9V[`\xA0\x83\x01RPa\r\x18`\xC0\x83\x01a\x08\xA5V[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\r5W`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\rKW`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\r_W`\0\x80\xFD[a\rga\x07\xC1V[\x82\x825\x11\x15a\ruW`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\r\x89W`\0\x80\xFD[a\r\x91a\x07\xC1V[\x84\x825\x11\x15a\r\x9FW`\0\x80\xFD[a\r\xAC\x88\x835\x84\x01a\x0C8V[\x81R\x84` \x83\x015\x11\x15a\r\xBFW`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\r\xD7W`\0\x80\xFD[a\r\xE4a\x0B\xCA\x835a\x0B\x86V[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x0E\x03W`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x0E\xA2W\x88\x815\x11\x15a\x0E\x1EW`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x0E6W`\0\x80\xFD[a\x0E>a\x07\xC1V[\x8A` \x83\x015\x11\x15a\x0EOW`\0\x80\xFD[a\x0Ea\x8E` \x80\x85\x015\x85\x01\x01a\x086V[\x81R\x8A`@\x83\x015\x11\x15a\x0EtW`\0\x80\xFD[a\x0E\x87\x8E` `@\x85\x015\x85\x01\x01a\x086V[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x0E\x08V[PP\x80` \x84\x01RPP\x80\x83RPPa\x0Bx` \x83\x01a\n\x96V[`\0` \x82\x84\x03\x12\x15a\x0E\xCFW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0E\xE5W`\0\x80\xFD[a\n\x8E\x84\x82\x85\x01a\x08\xC1V[`\0` \x82\x84\x03\x12\x15a\x0F\x03W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\x19W`\0\x80\xFD[a\n\x8E\x84\x82\x85\x01a\x0C8V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12a\x0F;W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x0F\\W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0FvW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0F\x8BW`\0\x80\xFD[\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[`\0\x80\x85\x85\x11\x15a\x0F\xCEW`\0\x80\xFD[\x83\x86\x11\x15a\x0F\xDBW`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\0`@\x82\x84\x03\x12\x15a\x0F\xFAW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a\x10\x1CWa\x10\x1Ca\x07\x83V[`@Ra\x10(\x83a\n\x96V[\x81R` \x83\x015` \x82\x01R\x80\x91PP\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x10OW`\0\x80\xFD[\x815` a\x10_a\x0B\xCA\x83a\x0B\x86V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x10~W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x0C-W\x805\x83R\x91\x83\x01\x91\x83\x01a\x10\x82V[`\0` \x82\x84\x03\x12\x15a\x10\xABW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10\xC2W`\0\x80\xFD[\x90\x83\x01\x90a\x01\x80\x82\x86\x03\x12\x15a\x10\xD7W`\0\x80\xFD[a\x10\xDFa\x07\xE3V[\x825\x81R` \x83\x015` \x82\x01Ra\x10\xF9`@\x84\x01a\n\x96V[`@\x82\x01Ra\x11\n``\x84\x01a\n\x96V[``\x82\x01Ra\x11\x1B`\x80\x84\x01a\n\x96V[`\x80\x82\x01Ra\x11,`\xA0\x84\x01a\n\x96V[`\xA0\x82\x01R`\xC0\x83\x015`\xC0\x82\x01R`\xE0\x83\x015`\xE0\x82\x01Ra\x01\0a\x11S\x81\x85\x01a\n\x96V[\x90\x82\x01Ra\x01 \x83\x81\x015\x83\x81\x11\x15a\x11kW`\0\x80\xFD[a\x11w\x88\x82\x87\x01a\x086V[\x82\x84\x01RPPa\x01@\x80\x84\x015\x81\x83\x01RPa\x01`\x80\x84\x015\x83\x81\x11\x15a\x11\x9DW`\0\x80\xFD[a\x11\xA9\x88\x82\x87\x01a\x10>V[\x91\x83\x01\x91\x90\x91RP\x95\x94PPPPPV[`\0[\x83\x81\x10\x15a\x11\xD5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x11\xBDV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x11\xF6\x81` \x86\x01` \x86\x01a\x11\xBAV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15a\x12:W\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x12\x1EV[P\x94\x95\x94PPPPPV[` \x81R\x81Q` \x82\x01R` \x82\x01Q`@\x82\x01R`\0`@\x83\x01Qa\x12v``\x84\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[P``\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80\x84\x01RP`\x80\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x84\x01RP`\xA0\x83\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xC0\x84\x01RP`\xC0\x83\x01Q`\xE0\x83\x01R`\xE0\x83\x01Qa\x01\0\x81\x81\x85\x01R\x80\x85\x01Q\x91PPa\x01 a\x12\xEB\x81\x85\x01\x83`\x01`\x01`\xA0\x1B\x03\x16\x90RV[\x80\x85\x01Q\x91PPa\x01\x80a\x01@\x81\x81\x86\x01Ra\x13\x0Ba\x01\xA0\x86\x01\x84a\x11\xDEV[\x90\x86\x01Qa\x01`\x86\x81\x01\x91\x90\x91R\x86\x01Q\x85\x82\x03`\x1F\x19\x01\x83\x87\x01R\x90\x92Pa\x134\x83\x82a\x12\nV[\x96\x95PPPPPPV[hPOLKADOT-`\xB8\x1B\x81R`\0\x82Qa\x13b\x81`\t\x85\x01` \x87\x01a\x11\xBAV[\x91\x90\x91\x01`\t\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA8\x90\xE18\x19F\xA91U\x19(u-\x1EU\x19\x12)\x84?{\xFA\x1D\x10\xB8\xB3$\x08\t\xE4+\x03dsolcC\0\x08\x11\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80c\xB5\xA9\x82K\x11a\0[W\x80c\xB5\xA9\x82K\x14a\0\xD6W\x80c\xBC\r\xD4G\x14a\0\xE9W\x80c\xC4\x92\xE4&\x14a\0\xFCW\x80c\xCF\xF0\xAB\x96\x14a\x01\nW`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\x8DW\x80c\x0E\x83$\xA2\x14a\0\xA2W\x80c\x0F\xEE2\xCE\x14a\0\xB5W\x80c\xB2\xA0\x1B\xF5\x14a\0\xC8W[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\t\nV[a\x01]V[\0[a\0\xA0a\0\xB06`\x04a\t]V[a\x01\xB9V[a\0\xA0a\0\xC36`\x04a\t\x7FV[a\x02`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xFBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03#\x91\x90\x81\x01\x90a\x0E\x14V[a\x03-\x83\x80a\x0E\x8AV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x92\x93\x92PPa\x05\xF8\x90PV[a\x03\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15[\x98]]\x1A\x1B\xDC\x9A^\x99Y\x08\x1C\x99\\]Y\\\xDD`b\x1B`D\x82\x01R`d\x01a\x01\xB0V[`\0a\x03\xBC`\xC0\x83\x01\x83a\x0E\x8AV[`\0\x81\x81\x10a\x03\xCDWa\x03\xCDa\x0E\xD7V[\x91\x90\x91\x015`\xF8\x1C\x90P`\x01\x81\x11\x15a\x03\xE8Wa\x03\xE8a\x0E\xEDV[\x90P`\0\x81`\x01\x81\x11\x15a\x03\xFEWa\x03\xFEa\x0E\xEDV[\x03a\x04\xA1W`\0a\x04\x12`\xC0\x84\x01\x84a\x0E\x8AV[a\x04 \x91`\x01\x90\x82\x90a\x0F\x03V[\x81\x01\x90a\x04-\x91\x90a\x0F-V[`\x01T`@Qc=`\0\xFD[PPPPPPPPV[`\x01\x81`\x01\x81\x11\x15a\x04\xB5Wa\x04\xB5a\x0E\xEDV[\x03a\x05\x15W`\0a\x04\xC9`\xC0\x84\x01\x84a\x0E\x8AV[a\x04\xD7\x91`\x01\x90\x82\x90a\x0F\x03V[\x81\x01\x90a\x04\xE4\x91\x90a\x10@V[`\x01T`@Qc{H\x1F\xE1`\xE1\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xF6\x90?\xC2\x90a\x04i\x90\x84\x90`\x04\x01a\x12MV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm*\xB75\xB77\xBB\xB7\x100\xB1\xBA4\xB7\xB7`\x91\x1B`D\x82\x01R`d\x01a\x01\xB0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FIsmpModule doesn't emit Get requ`D\x82\x01Rcests`\xE0\x1B`d\x82\x01R`\x84\x01a\x01\xB0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FIsmpModule doesn't emit Post req`D\x82\x01Rduests`\xD8\x1B`d\x82\x01R`\x84\x01a\x01\xB0V[`\0\x81Q\x83Q\x14a\x06\x0BWP`\0a\x06\x1FV[P\x81Q` \x82\x81\x01\x82\x90 \x90\x84\x01\x91\x90\x91 \x14[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06]Wa\x06]a\x06%V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06]Wa\x06]a\x06%V[`@Qa\x01\xC0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06]Wa\x06]a\x06%V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x06\xD0Wa\x06\xD0a\x06%V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x06\xF1Wa\x06\xF1a\x06%V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x07\x10W`\0\x80\xFD[\x815a\x07#a\x07\x1E\x82a\x06\xD8V[a\x06\xA8V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x078W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x07lW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\x07\x83W`\0\x80\xFD[a\x07\x8Ba\x06;V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x07\xA4W`\0\x80\xFD[a\x07\xB0\x85\x83\x86\x01a\x06\xFFV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x07\xC6W`\0\x80\xFD[a\x07\xD2\x85\x83\x86\x01a\x06\xFFV[` \x84\x01Ra\x07\xE3`@\x85\x01a\x07UV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x07\xFCW`\0\x80\xFD[a\x08\x08\x85\x83\x86\x01a\x06\xFFV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x08!W`\0\x80\xFD[a\x08-\x85\x83\x86\x01a\x06\xFFV[`\x80\x84\x01Ra\x08>`\xA0\x85\x01a\x07UV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x08WW`\0\x80\xFD[Pa\x08d\x84\x82\x85\x01a\x06\xFFV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x08\x82W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x08\xA5Wa\x08\xA5a\x06%V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x08\xBDW`\0\x80\xFD[a\x08\xC9\x86\x83\x87\x01a\x07qV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x08\xDFW`\0\x80\xFD[Pa\x08\xEC\x85\x82\x86\x01a\x06\xFFV[` \x83\x01RPa\x08\xFE`@\x84\x01a\x07UV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\t\x1CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\t2W`\0\x80\xFD[a\t>\x84\x82\x85\x01a\x08pV[\x94\x93PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07lW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\toW`\0\x80\xFD[a\tx\x82a\tFV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\x91W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xA7W`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\txW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\t\xCBW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\t\xE2W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\t\xF6W`\0\x80\xFD[a\t\xFEa\x06cV[\x825\x82\x81\x11\x15a\n\rW`\0\x80\xFD[a\n\x19\x87\x82\x86\x01a\x08pV[\x82RPa\n(` \x84\x01a\tFV[` \x82\x01R\x95\x94PPPPPV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\nOWa\nOa\x06%V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\njW`\0\x80\xFD[\x815` a\nza\x07\x1E\x83a\n6V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\n\x99W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\xD8W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xBCW`\0\x80\x81\xFD[a\n\xCA\x89\x86\x83\x8B\x01\x01a\x06\xFFV[\x84RP\x91\x83\x01\x91\x83\x01a\n\x9DV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\n\xF5W`\0\x80\xFD[a\n\xFDa\x06;V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0B\x16W`\0\x80\xFD[a\x0B\"\x85\x83\x86\x01a\x06\xFFV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x0B8W`\0\x80\xFD[a\x0BD\x85\x83\x86\x01a\x06\xFFV[` \x84\x01Ra\x0BU`@\x85\x01a\x07UV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x0BnW`\0\x80\xFD[a\x0Bz\x85\x83\x86\x01a\x06\xFFV[``\x84\x01Ra\x0B\x8B`\x80\x85\x01a\x07UV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x0B\xA4W`\0\x80\xFD[Pa\x0B\xB1\x84\x82\x85\x01a\nYV[`\xA0\x83\x01RPa\x0B\xC3`\xC0\x83\x01a\x07UV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0B\xE0W`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x0B\xF6W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x0C\nW`\0\x80\xFD[a\x0C\x12a\x06cV[\x82\x825\x11\x15a\x0C W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x0C4W`\0\x80\xFD[a\x0C\x84\x82\x85\x01a\x07qV[`\0` \x82\x84\x03\x12\x15a\r\xAEW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\r\xC4W`\0\x80\xFD[a\t>\x84\x82\x85\x01a\n\xE3V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12a\r\xE6W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0[\x83\x81\x10\x15a\x0E\x0BW\x81\x81\x01Q\x83\x82\x01R` \x01a\r\xF3V[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15a\x0E&W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0E = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x19\xF28\x03\x80a\x19\xF2\x839\x81\x01`@\x81\x90Ra\0/\x91a\0TV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x84V[`\0` \x82\x84\x03\x12\x15a\0fW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0}W`\0\x80\xFD[\x93\x92PPPV[a\x19_\x80a\0\x93`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cr5N\x9B\x11a\0\x8CW\x80c\xBC\r\xD4G\x11a\0fW\x80c\xBC\r\xD4G\x14a\x01\x94W\x80c\xC4\x92\xE4&\x14a\x01\xA7W\x80c\xD5\xF6\xEE\xFD\x14a\x01\xBAW\x80c\xF47\xBCY\x14a\x01\xCDW`\0\x80\xFD[\x80cr5N\x9B\x14a\x01[W\x80c\xB2\xA0\x1B\xF5\x14a\x01nW\x80c\xB5\xA9\x82K\x14a\x01\x81W`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\xD4W\x80c\x0E\x83$\xA2\x14a\0\xE9W\x80c\x0F\xEE2\xCE\x14a\0\xFCW\x80cJi.\x06\x14a\x01\x0FW\x80cM\r\x9C;\x14a\x01\"W\x80cp\xC5GO\x14a\x01HW[`\0\x80\xFD[a\0\xE7a\0\xE26`\x04a\x0F\x06V[a\x01\xE8V[\0[a\0\xE7a\0\xF76`\x04a\x0F]V[a\x02?V[a\0\xE7a\x01\n6`\x04a\x0FzV[a\x02\x8CV[a\0\xE7a\x01\x1D6`\x04a\x0F\xFDV[a\x02\xF6V[a\x015a\x0106`\x04a\x0F\x06V[a\x04\xAAV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x015a\x01V6`\x04a\x10\xA7V[a\x05ZV[a\0\xE7a\x01i6`\x04a\x10\xDBV[a\x07\x9AV[a\0\xE7a\x01|6`\x04a\x10\xF4V[a\x08\xB4V[a\0\xE7a\x01\x8F6`\x04a\x12\xECV[a\t\x0BV[a\0\xE7a\x01\xA26`\x04a\x10\xA7V[a\tbV[a\0\xE7a\x01\xB56`\x04a\x14\x94V[a\t\xB9V[a\x015a\x01\xC86`\x04a\x14\x94V[a\n\x10V[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01?V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x13W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7Fhv\xFA>\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x15\x18V[`@Q\x80\x91\x03\x90\xA1PV[`\0[\x81``\x01Q\x81\x10\x15a\x04\xA6W`\0`@Q\x80`\xC0\x01`@R\x80\x84`\0\x01Q\x81R` \x01\x84` \x01Q`@Q` \x01a\x03I\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xD6\x91\x90\x81\x01\x90a\x15+V[`@Q` \x01a\x03\xE6\x91\x90a\x15\xA1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x85\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x86\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x04N\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x91\x91\x90a\x16hV[PP\x80\x80a\x04\x9E\x90a\x16\x97V[\x91PPa\x02\xF9V[PPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x05\x10\x90\x84\x90`\x04\x01a\x16\xB0V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05/W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05S\x91\x90a\x16hV[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x05\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC8\x91\x90a\x16hV[\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a\x17\xE1V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86`\xC0\x01QQ\x85a\x06`\x91\x90a\x17\xFEV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD8\x91\x90a\x18\x15V[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x87\x01Q\x83R`\x80\x80\x88\x01Q\x91\x84\x01\x91\x90\x91R\x90\x86\x01Q\x82\x84\x01R`\xA0\x80\x87\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x07O\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x92\x91\x90a\x16hV[\x94\x93PPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\x07\xB0\x84a\n\x85V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08l\x91\x90a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x16hV[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\xDFW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t6W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x8DW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\xE4W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x05\x10\x90\x84\x90`\x04\x01a\x187V[``a\n\x90\x82a\n\xB6V[`@Q` \x01a\n\xA0\x91\x90a\x18\xFAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\n\xC3\x83a\x0BIV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE2Wa\n\xE2a\x0C\"V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x16W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0B\x88Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0B\xB4Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0B\xD2Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0B\xEAWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0B\xFEWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0C\x10W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0C\x1CW`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0C\xCCWa\x0C\xCCa\x0C\"V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0C\xEDWa\x0C\xEDa\x0C\"V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\x0CW`\0\x80\xFD[\x815a\r\x1Fa\r\x1A\x82a\x0C\xD4V[a\x0C\xA4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\r4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\rhW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\r\x7FW`\0\x80\xFD[a\r\x87a\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\r\xA0W`\0\x80\xFD[a\r\xAC\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\r\xC2W`\0\x80\xFD[a\r\xCE\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\r\xDF`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\r\xF8W`\0\x80\xFD[a\x0E\x04\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x0E\x1DW`\0\x80\xFD[a\x0E)\x85\x83\x86\x01a\x0C\xFBV[`\x80\x84\x01Ra\x0E:`\xA0\x85\x01a\rQV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x0ESW`\0\x80\xFD[Pa\x0E`\x84\x82\x85\x01a\x0C\xFBV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x0E~W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x0E\xA1Wa\x0E\xA1a\x0C\"V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x0E\xB9W`\0\x80\xFD[a\x0E\xC5\x86\x83\x87\x01a\rmV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x0E\xDBW`\0\x80\xFD[Pa\x0E\xE8\x85\x82\x86\x01a\x0C\xFBV[` \x83\x01RPa\x0E\xFA`@\x84\x01a\rQV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0F\x18W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F.W`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x0ElV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0FOW`\0\x80\xFD[PV[\x805a\rh\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x815a\x05S\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0F\x8CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\xA3W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0F\xB7W`\0\x80\xFD[a\x0F\xBFa\x0C`V[\x825\x82\x81\x11\x15a\x0F\xCEW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\rmV[\x82RP` \x83\x015\x92Pa\x0F\xED\x83a\x0F:V[` \x81\x01\x92\x90\x92RP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x10\x0FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10&W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a\x10:W`\0\x80\xFD[a\x10Ba\x0C\x82V[\x825\x82\x81\x11\x15a\x10QW`\0\x80\xFD[a\x10]\x87\x82\x86\x01a\x0C\xFBV[\x82RP` \x83\x015\x91Pa\x10p\x82a\x0F:V[\x81` \x82\x01Ra\x10\x82`@\x84\x01a\rQV[`@\x82\x01R``\x83\x015``\x82\x01R`\x80\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x10\xB9W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\xCFW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\rmV[`\0` \x82\x84\x03\x12\x15a\x10\xEDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x06W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\x1DW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x111W`\0\x80\xFD[a\x119a\x0C`V[\x825\x82\x81\x11\x15a\x11HW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\x0ElV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x11mWa\x11ma\x0C\"V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x11\x88W`\0\x80\xFD[\x815` a\x11\x98a\r\x1A\x83a\x11TV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x11\xB7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x11\xF6W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xDAW`\0\x80\x81\xFD[a\x11\xE8\x89\x86\x83\x8B\x01\x01a\x0C\xFBV[\x84RP\x91\x83\x01\x91\x83\x01a\x11\xBBV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x12\x13W`\0\x80\xFD[a\x12\x1Ba\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x124W`\0\x80\xFD[a\x12@\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x12VW`\0\x80\xFD[a\x12b\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\x12s`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x12\x8CW`\0\x80\xFD[a\x12\x98\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01Ra\x12\xA9`\x80\x85\x01a\rQV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x12\xC2W`\0\x80\xFD[Pa\x12\xCF\x84\x82\x85\x01a\x11wV[`\xA0\x83\x01RPa\x12\xE1`\xC0\x83\x01a\rQV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x12\xFEW`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x13\x14W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x13(W`\0\x80\xFD[a\x130a\x0C`V[\x82\x825\x11\x15a\x13>W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x13RW`\0\x80\xFD[a\x13Za\x0C`V[\x84\x825\x11\x15a\x13hW`\0\x80\xFD[a\x13u\x88\x835\x84\x01a\x12\x01V[\x81R\x84` \x83\x015\x11\x15a\x13\x88W`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\x13\xA0W`\0\x80\xFD[a\x13\xADa\r\x1A\x835a\x11TV[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x13\xCCW`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x14kW\x88\x815\x11\x15a\x13\xE7W`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x13\xFFW`\0\x80\xFD[a\x14\x07a\x0C`V[\x8A` \x83\x015\x11\x15a\x14\x18W`\0\x80\xFD[a\x14*\x8E` \x80\x85\x015\x85\x01\x01a\x0C\xFBV[\x81R\x8A`@\x83\x015\x11\x15a\x14=W`\0\x80\xFD[a\x14P\x8E` `@\x85\x015\x85\x01\x01a\x0C\xFBV[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x13\xD1V[PP\x80` \x84\x01RPP\x80\x83RPPa\x14\x86` \x83\x01a\x0FRV[` \x82\x01R\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xA6W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBCW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x12\x01V[`\0[\x83\x81\x10\x15a\x14\xE3W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xCBV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x15\x04\x81` \x86\x01` \x86\x01a\x14\xC8V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x05S` \x83\x01\x84a\x14\xECV[`\0` \x82\x84\x03\x12\x15a\x15=W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15SW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15dW`\0\x80\xFD[\x80Qa\x15ra\r\x1A\x82a\x0C\xD4V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x15\x87W`\0\x80\xFD[a\x15\x98\x82` \x83\x01` \x86\x01a\x14\xC8V[\x95\x94PPPPPV[j\x03C+ccy\x033\x93{i`\xAD\x1B\x81R`\0\x82Qa\x15\xC7\x81`\x0B\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[` \x81R`\0\x82Q`\xC0` \x84\x01Ra\x15\xF0`\xE0\x84\x01\x82a\x14\xECV[\x90P` \x84\x01Q`\x1F\x19\x80\x85\x84\x03\x01`@\x86\x01Ra\x16\x0E\x83\x83a\x14\xECV[\x92P`@\x86\x01Q\x91P\x80\x85\x84\x03\x01``\x86\x01RPa\x16,\x82\x82a\x14\xECV[\x91PP`\x01`\x01`@\x1B\x03``\x85\x01Q\x16`\x80\x84\x01R`\x80\x84\x01Q`\xA0\x84\x01R`\x01\x80`\xA0\x1B\x03`\xA0\x85\x01Q\x16`\xC0\x84\x01R\x80\x91PP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x16zW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xA9Wa\x16\xA9a\x16\x81V[P`\x01\x01\x90V[` \x81R`\0\x82Q`\xA0` \x84\x01R\x80Q`\xE0`\xC0\x85\x01Ra\x16\xD6a\x01\xA0\x85\x01\x82a\x14\xECV[\x90P` \x82\x01Q`\xBF\x19\x80\x86\x84\x03\x01`\xE0\x87\x01Ra\x16\xF4\x83\x83a\x14\xECV[\x92P`\x01`\x01`@\x1B\x03`@\x85\x01Q\x16a\x01\0\x87\x01R``\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01 \x87\x01Ra\x17&\x83\x83a\x14\xECV[\x92P`\x80\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01@\x87\x01Ra\x17D\x83\x83a\x14\xECV[\x92P`\xA0\x84\x01Q\x91Pa\x17ca\x01`\x87\x01\x83`\x01`\x01`@\x1B\x03\x16\x90RV[`\xC0\x84\x01Q\x93P\x80\x86\x84\x03\x01a\x01\x80\x87\x01RPPa\x17\x81\x81\x83a\x14\xECV[\x91PP` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x9F\x82\x82a\x14\xECV[\x91PP`@\x84\x01Qa\x17\xBC``\x85\x01\x82`\x01`\x01`@\x1B\x03\x16\x90RV[P``\x84\x01Q`\x80\x84\x01R`\x80\x84\x01Qa\x0BA`\xA0\x85\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\0` \x82\x84\x03\x12\x15a\x17\xF3W`\0\x80\xFD[\x81Qa\x05S\x81a\x0F:V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x1CWa\x0C\x1Ca\x16\x81V[`\0` \x82\x84\x03\x12\x15a\x18'W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05SW`\0\x80\xFD[`\0` \x80\x83R\x83Q`\xA0\x82\x85\x01Ra\x18S`\xC0\x85\x01\x82a\x14\xECV[\x90P`\x01`\x01`@\x1B\x03\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01``\x87\x01R\x82\x82Q\x80\x85R\x85\x85\x01\x91P\x85\x81`\x05\x1B\x86\x01\x01\x86\x85\x01\x94P`\0[\x82\x81\x10\x15a\x18\xC0W\x84\x87\x83\x03\x01\x84Ra\x18\xAE\x82\x87Qa\x14\xECV[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x18\x94V[P``\x8A\x01Q`\x01`\x01`@\x1B\x03\x81\x16`\x80\x8B\x01R\x96P`\x80\x8A\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x8B\x01R\x96P\x99\x98PPPPPPPPPV[fKUSAMA-`\xC8\x1B\x81R`\0\x82Qa\x19\x1C\x81`\x07\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x07\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x0CU\xE8m\x17\x1C\xF0\xDD\xF4p\xF1\x8C}\x9D\xD3I3=hCE\x0Ev;J\xBAK \xB3Y\xB7\x82dsolcC\0\x08\x11\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x19\xF28\x03\x80a\x19\xF2\x839\x81\x01`@\x81\x90Ra\0/\x91a\0TV[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x84V[`\0` \x82\x84\x03\x12\x15a\0fW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0}W`\0\x80\xFD[\x93\x92PPPV[a\x19_\x80a\0\x93`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cr5N\x9B\x11a\0\x8CW\x80c\xBC\r\xD4G\x11a\0fW\x80c\xBC\r\xD4G\x14a\x01\x94W\x80c\xC4\x92\xE4&\x14a\x01\xA7W\x80c\xD5\xF6\xEE\xFD\x14a\x01\xBAW\x80c\xF47\xBCY\x14a\x01\xCDW`\0\x80\xFD[\x80cr5N\x9B\x14a\x01[W\x80c\xB2\xA0\x1B\xF5\x14a\x01nW\x80c\xB5\xA9\x82K\x14a\x01\x81W`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\xD4W\x80c\x0E\x83$\xA2\x14a\0\xE9W\x80c\x0F\xEE2\xCE\x14a\0\xFCW\x80cJi.\x06\x14a\x01\x0FW\x80cM\r\x9C;\x14a\x01\"W\x80cp\xC5GO\x14a\x01HW[`\0\x80\xFD[a\0\xE7a\0\xE26`\x04a\x0F\x06V[a\x01\xE8V[\0[a\0\xE7a\0\xF76`\x04a\x0F]V[a\x02?V[a\0\xE7a\x01\n6`\x04a\x0FzV[a\x02\x8CV[a\0\xE7a\x01\x1D6`\x04a\x0F\xFDV[a\x02\xF6V[a\x015a\x0106`\x04a\x0F\x06V[a\x04\xAAV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x015a\x01V6`\x04a\x10\xA7V[a\x05ZV[a\0\xE7a\x01i6`\x04a\x10\xDBV[a\x07\x9AV[a\0\xE7a\x01|6`\x04a\x10\xF4V[a\x08\xB4V[a\0\xE7a\x01\x8F6`\x04a\x12\xECV[a\t\x0BV[a\0\xE7a\x01\xA26`\x04a\x10\xA7V[a\tbV[a\0\xE7a\x01\xB56`\x04a\x14\x94V[a\t\xB9V[a\x015a\x01\xC86`\x04a\x14\x94V[a\n\x10V[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01?V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x13W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7Fhv\xFA>\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x15\x18V[`@Q\x80\x91\x03\x90\xA1PV[`\0[\x81``\x01Q\x81\x10\x15a\x04\xA6W`\0`@Q\x80`\xC0\x01`@R\x80\x84`\0\x01Q\x81R` \x01\x84` \x01Q`@Q` \x01a\x03I\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xD6\x91\x90\x81\x01\x90a\x15+V[`@Q` \x01a\x03\xE6\x91\x90a\x15\xA1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x85\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x86\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x04N\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x91\x91\x90a\x16hV[PP\x80\x80a\x04\x9E\x90a\x16\x97V[\x91PPa\x02\xF9V[PPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x05\x10\x90\x84\x90`\x04\x01a\x16\xB0V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05/W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05S\x91\x90a\x16hV[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x05\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC8\x91\x90a\x16hV[\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a\x17\xE1V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86`\xC0\x01QQ\x85a\x06`\x91\x90a\x17\xFEV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD8\x91\x90a\x18\x15V[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x87\x01Q\x83R`\x80\x80\x88\x01Q\x91\x84\x01\x91\x90\x91R\x90\x86\x01Q\x82\x84\x01R`\xA0\x80\x87\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x07O\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x92\x91\x90a\x16hV[\x94\x93PPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\x07\xB0\x84a\n\x85V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08l\x91\x90a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x16hV[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\xDFW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t6W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x8DW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\xE4W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x05\x10\x90\x84\x90`\x04\x01a\x187V[``a\n\x90\x82a\n\xB6V[`@Q` \x01a\n\xA0\x91\x90a\x18\xFAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\n\xC3\x83a\x0BIV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE2Wa\n\xE2a\x0C\"V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x16W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0B\x88Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0B\xB4Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0B\xD2Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0B\xEAWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0B\xFEWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0C\x10W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0C\x1CW`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0C\xCCWa\x0C\xCCa\x0C\"V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0C\xEDWa\x0C\xEDa\x0C\"V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\x0CW`\0\x80\xFD[\x815a\r\x1Fa\r\x1A\x82a\x0C\xD4V[a\x0C\xA4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\r4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\rhW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\r\x7FW`\0\x80\xFD[a\r\x87a\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\r\xA0W`\0\x80\xFD[a\r\xAC\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\r\xC2W`\0\x80\xFD[a\r\xCE\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\r\xDF`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\r\xF8W`\0\x80\xFD[a\x0E\x04\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x0E\x1DW`\0\x80\xFD[a\x0E)\x85\x83\x86\x01a\x0C\xFBV[`\x80\x84\x01Ra\x0E:`\xA0\x85\x01a\rQV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x0ESW`\0\x80\xFD[Pa\x0E`\x84\x82\x85\x01a\x0C\xFBV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x0E~W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x0E\xA1Wa\x0E\xA1a\x0C\"V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x0E\xB9W`\0\x80\xFD[a\x0E\xC5\x86\x83\x87\x01a\rmV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x0E\xDBW`\0\x80\xFD[Pa\x0E\xE8\x85\x82\x86\x01a\x0C\xFBV[` \x83\x01RPa\x0E\xFA`@\x84\x01a\rQV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0F\x18W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F.W`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x0ElV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0FOW`\0\x80\xFD[PV[\x805a\rh\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x815a\x05S\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0F\x8CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\xA3W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0F\xB7W`\0\x80\xFD[a\x0F\xBFa\x0C`V[\x825\x82\x81\x11\x15a\x0F\xCEW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\rmV[\x82RP` \x83\x015\x92Pa\x0F\xED\x83a\x0F:V[` \x81\x01\x92\x90\x92RP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x10\x0FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10&W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a\x10:W`\0\x80\xFD[a\x10Ba\x0C\x82V[\x825\x82\x81\x11\x15a\x10QW`\0\x80\xFD[a\x10]\x87\x82\x86\x01a\x0C\xFBV[\x82RP` \x83\x015\x91Pa\x10p\x82a\x0F:V[\x81` \x82\x01Ra\x10\x82`@\x84\x01a\rQV[`@\x82\x01R``\x83\x015``\x82\x01R`\x80\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x10\xB9W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\xCFW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\rmV[`\0` \x82\x84\x03\x12\x15a\x10\xEDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x06W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\x1DW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x111W`\0\x80\xFD[a\x119a\x0C`V[\x825\x82\x81\x11\x15a\x11HW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\x0ElV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x11mWa\x11ma\x0C\"V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x11\x88W`\0\x80\xFD[\x815` a\x11\x98a\r\x1A\x83a\x11TV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x11\xB7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x11\xF6W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xDAW`\0\x80\x81\xFD[a\x11\xE8\x89\x86\x83\x8B\x01\x01a\x0C\xFBV[\x84RP\x91\x83\x01\x91\x83\x01a\x11\xBBV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x12\x13W`\0\x80\xFD[a\x12\x1Ba\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x124W`\0\x80\xFD[a\x12@\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x12VW`\0\x80\xFD[a\x12b\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\x12s`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x12\x8CW`\0\x80\xFD[a\x12\x98\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01Ra\x12\xA9`\x80\x85\x01a\rQV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x12\xC2W`\0\x80\xFD[Pa\x12\xCF\x84\x82\x85\x01a\x11wV[`\xA0\x83\x01RPa\x12\xE1`\xC0\x83\x01a\rQV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x12\xFEW`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x13\x14W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x13(W`\0\x80\xFD[a\x130a\x0C`V[\x82\x825\x11\x15a\x13>W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x13RW`\0\x80\xFD[a\x13Za\x0C`V[\x84\x825\x11\x15a\x13hW`\0\x80\xFD[a\x13u\x88\x835\x84\x01a\x12\x01V[\x81R\x84` \x83\x015\x11\x15a\x13\x88W`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\x13\xA0W`\0\x80\xFD[a\x13\xADa\r\x1A\x835a\x11TV[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x13\xCCW`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x14kW\x88\x815\x11\x15a\x13\xE7W`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x13\xFFW`\0\x80\xFD[a\x14\x07a\x0C`V[\x8A` \x83\x015\x11\x15a\x14\x18W`\0\x80\xFD[a\x14*\x8E` \x80\x85\x015\x85\x01\x01a\x0C\xFBV[\x81R\x8A`@\x83\x015\x11\x15a\x14=W`\0\x80\xFD[a\x14P\x8E` `@\x85\x015\x85\x01\x01a\x0C\xFBV[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x13\xD1V[PP\x80` \x84\x01RPP\x80\x83RPPa\x14\x86` \x83\x01a\x0FRV[` \x82\x01R\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xA6W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBCW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x12\x01V[`\0[\x83\x81\x10\x15a\x14\xE3W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xCBV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x15\x04\x81` \x86\x01` \x86\x01a\x14\xC8V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x05S` \x83\x01\x84a\x14\xECV[`\0` \x82\x84\x03\x12\x15a\x15=W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15SW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15dW`\0\x80\xFD[\x80Qa\x15ra\r\x1A\x82a\x0C\xD4V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x15\x87W`\0\x80\xFD[a\x15\x98\x82` \x83\x01` \x86\x01a\x14\xC8V[\x95\x94PPPPPV[j\x03C+ccy\x033\x93{i`\xAD\x1B\x81R`\0\x82Qa\x15\xC7\x81`\x0B\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[` \x81R`\0\x82Q`\xC0` \x84\x01Ra\x15\xF0`\xE0\x84\x01\x82a\x14\xECV[\x90P` \x84\x01Q`\x1F\x19\x80\x85\x84\x03\x01`@\x86\x01Ra\x16\x0E\x83\x83a\x14\xECV[\x92P`@\x86\x01Q\x91P\x80\x85\x84\x03\x01``\x86\x01RPa\x16,\x82\x82a\x14\xECV[\x91PP`\x01`\x01`@\x1B\x03``\x85\x01Q\x16`\x80\x84\x01R`\x80\x84\x01Q`\xA0\x84\x01R`\x01\x80`\xA0\x1B\x03`\xA0\x85\x01Q\x16`\xC0\x84\x01R\x80\x91PP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x16zW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xA9Wa\x16\xA9a\x16\x81V[P`\x01\x01\x90V[` \x81R`\0\x82Q`\xA0` \x84\x01R\x80Q`\xE0`\xC0\x85\x01Ra\x16\xD6a\x01\xA0\x85\x01\x82a\x14\xECV[\x90P` \x82\x01Q`\xBF\x19\x80\x86\x84\x03\x01`\xE0\x87\x01Ra\x16\xF4\x83\x83a\x14\xECV[\x92P`\x01`\x01`@\x1B\x03`@\x85\x01Q\x16a\x01\0\x87\x01R``\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01 \x87\x01Ra\x17&\x83\x83a\x14\xECV[\x92P`\x80\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01@\x87\x01Ra\x17D\x83\x83a\x14\xECV[\x92P`\xA0\x84\x01Q\x91Pa\x17ca\x01`\x87\x01\x83`\x01`\x01`@\x1B\x03\x16\x90RV[`\xC0\x84\x01Q\x93P\x80\x86\x84\x03\x01a\x01\x80\x87\x01RPPa\x17\x81\x81\x83a\x14\xECV[\x91PP` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x9F\x82\x82a\x14\xECV[\x91PP`@\x84\x01Qa\x17\xBC``\x85\x01\x82`\x01`\x01`@\x1B\x03\x16\x90RV[P``\x84\x01Q`\x80\x84\x01R`\x80\x84\x01Qa\x0BA`\xA0\x85\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\0` \x82\x84\x03\x12\x15a\x17\xF3W`\0\x80\xFD[\x81Qa\x05S\x81a\x0F:V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x1CWa\x0C\x1Ca\x16\x81V[`\0` \x82\x84\x03\x12\x15a\x18'W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05SW`\0\x80\xFD[`\0` \x80\x83R\x83Q`\xA0\x82\x85\x01Ra\x18S`\xC0\x85\x01\x82a\x14\xECV[\x90P`\x01`\x01`@\x1B\x03\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01``\x87\x01R\x82\x82Q\x80\x85R\x85\x85\x01\x91P\x85\x81`\x05\x1B\x86\x01\x01\x86\x85\x01\x94P`\0[\x82\x81\x10\x15a\x18\xC0W\x84\x87\x83\x03\x01\x84Ra\x18\xAE\x82\x87Qa\x14\xECV[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x18\x94V[P``\x8A\x01Q`\x01`\x01`@\x1B\x03\x81\x16`\x80\x8B\x01R\x96P`\x80\x8A\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x8B\x01R\x96P\x99\x98PPPPPPPPPV[fKUSAMA-`\xC8\x1B\x81R`\0\x82Qa\x19\x1C\x81`\x07\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x07\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x08\x9B2.\xE3\xBA\xFD\xB1z\xDE\xE7(\x87(\x89+\xB7z\x0E\x8D\xCA\xC1\xD0j2!u*\x1B\xAB\x02udsolcC\0\x08\x11\x003"; /// The bytecode of the contract. pub static PINGMODULE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cr5N\x9B\x11a\0\x8CW\x80c\xBC\r\xD4G\x11a\0fW\x80c\xBC\r\xD4G\x14a\x01\x94W\x80c\xC4\x92\xE4&\x14a\x01\xA7W\x80c\xD5\xF6\xEE\xFD\x14a\x01\xBAW\x80c\xF47\xBCY\x14a\x01\xCDW`\0\x80\xFD[\x80cr5N\x9B\x14a\x01[W\x80c\xB2\xA0\x1B\xF5\x14a\x01nW\x80c\xB5\xA9\x82K\x14a\x01\x81W`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\xD4W\x80c\x0E\x83$\xA2\x14a\0\xE9W\x80c\x0F\xEE2\xCE\x14a\0\xFCW\x80cJi.\x06\x14a\x01\x0FW\x80cM\r\x9C;\x14a\x01\"W\x80cp\xC5GO\x14a\x01HW[`\0\x80\xFD[a\0\xE7a\0\xE26`\x04a\x0F\x06V[a\x01\xE8V[\0[a\0\xE7a\0\xF76`\x04a\x0F]V[a\x02?V[a\0\xE7a\x01\n6`\x04a\x0FzV[a\x02\x8CV[a\0\xE7a\x01\x1D6`\x04a\x0F\xFDV[a\x02\xF6V[a\x015a\x0106`\x04a\x0F\x06V[a\x04\xAAV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x015a\x01V6`\x04a\x10\xA7V[a\x05ZV[a\0\xE7a\x01i6`\x04a\x10\xDBV[a\x07\x9AV[a\0\xE7a\x01|6`\x04a\x10\xF4V[a\x08\xB4V[a\0\xE7a\x01\x8F6`\x04a\x12\xECV[a\t\x0BV[a\0\xE7a\x01\xA26`\x04a\x10\xA7V[a\tbV[a\0\xE7a\x01\xB56`\x04a\x14\x94V[a\t\xB9V[a\x015a\x01\xC86`\x04a\x14\x94V[a\n\x10V[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01?V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x13W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7Fhv\xFA>\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x15\x18V[`@Q\x80\x91\x03\x90\xA1PV[`\0[\x81``\x01Q\x81\x10\x15a\x04\xA6W`\0`@Q\x80`\xC0\x01`@R\x80\x84`\0\x01Q\x81R` \x01\x84` \x01Q`@Q` \x01a\x03I\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xD6\x91\x90\x81\x01\x90a\x15+V[`@Q` \x01a\x03\xE6\x91\x90a\x15\xA1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x85\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x86\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x04N\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x91\x91\x90a\x16hV[PP\x80\x80a\x04\x9E\x90a\x16\x97V[\x91PPa\x02\xF9V[PPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x05\x10\x90\x84\x90`\x04\x01a\x16\xB0V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05/W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05S\x91\x90a\x16hV[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x05\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC8\x91\x90a\x16hV[\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a\x17\xE1V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86`\xC0\x01QQ\x85a\x06`\x91\x90a\x17\xFEV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD8\x91\x90a\x18\x15V[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x87\x01Q\x83R`\x80\x80\x88\x01Q\x91\x84\x01\x91\x90\x91R\x90\x86\x01Q\x82\x84\x01R`\xA0\x80\x87\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x07O\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x92\x91\x90a\x16hV[\x94\x93PPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\x07\xB0\x84a\n\x85V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08l\x91\x90a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x16hV[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\xDFW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t6W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x8DW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\xE4W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x05\x10\x90\x84\x90`\x04\x01a\x187V[``a\n\x90\x82a\n\xB6V[`@Q` \x01a\n\xA0\x91\x90a\x18\xFAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\n\xC3\x83a\x0BIV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE2Wa\n\xE2a\x0C\"V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x16W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0B\x88Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0B\xB4Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0B\xD2Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0B\xEAWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0B\xFEWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0C\x10W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0C\x1CW`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0C\xCCWa\x0C\xCCa\x0C\"V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0C\xEDWa\x0C\xEDa\x0C\"V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\x0CW`\0\x80\xFD[\x815a\r\x1Fa\r\x1A\x82a\x0C\xD4V[a\x0C\xA4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\r4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\rhW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\r\x7FW`\0\x80\xFD[a\r\x87a\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\r\xA0W`\0\x80\xFD[a\r\xAC\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\r\xC2W`\0\x80\xFD[a\r\xCE\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\r\xDF`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\r\xF8W`\0\x80\xFD[a\x0E\x04\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x0E\x1DW`\0\x80\xFD[a\x0E)\x85\x83\x86\x01a\x0C\xFBV[`\x80\x84\x01Ra\x0E:`\xA0\x85\x01a\rQV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x0ESW`\0\x80\xFD[Pa\x0E`\x84\x82\x85\x01a\x0C\xFBV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x0E~W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x0E\xA1Wa\x0E\xA1a\x0C\"V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x0E\xB9W`\0\x80\xFD[a\x0E\xC5\x86\x83\x87\x01a\rmV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x0E\xDBW`\0\x80\xFD[Pa\x0E\xE8\x85\x82\x86\x01a\x0C\xFBV[` \x83\x01RPa\x0E\xFA`@\x84\x01a\rQV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0F\x18W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F.W`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x0ElV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0FOW`\0\x80\xFD[PV[\x805a\rh\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x815a\x05S\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0F\x8CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\xA3W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0F\xB7W`\0\x80\xFD[a\x0F\xBFa\x0C`V[\x825\x82\x81\x11\x15a\x0F\xCEW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\rmV[\x82RP` \x83\x015\x92Pa\x0F\xED\x83a\x0F:V[` \x81\x01\x92\x90\x92RP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x10\x0FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10&W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a\x10:W`\0\x80\xFD[a\x10Ba\x0C\x82V[\x825\x82\x81\x11\x15a\x10QW`\0\x80\xFD[a\x10]\x87\x82\x86\x01a\x0C\xFBV[\x82RP` \x83\x015\x91Pa\x10p\x82a\x0F:V[\x81` \x82\x01Ra\x10\x82`@\x84\x01a\rQV[`@\x82\x01R``\x83\x015``\x82\x01R`\x80\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x10\xB9W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\xCFW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\rmV[`\0` \x82\x84\x03\x12\x15a\x10\xEDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x06W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\x1DW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x111W`\0\x80\xFD[a\x119a\x0C`V[\x825\x82\x81\x11\x15a\x11HW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\x0ElV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x11mWa\x11ma\x0C\"V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x11\x88W`\0\x80\xFD[\x815` a\x11\x98a\r\x1A\x83a\x11TV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x11\xB7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x11\xF6W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xDAW`\0\x80\x81\xFD[a\x11\xE8\x89\x86\x83\x8B\x01\x01a\x0C\xFBV[\x84RP\x91\x83\x01\x91\x83\x01a\x11\xBBV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x12\x13W`\0\x80\xFD[a\x12\x1Ba\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x124W`\0\x80\xFD[a\x12@\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x12VW`\0\x80\xFD[a\x12b\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\x12s`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x12\x8CW`\0\x80\xFD[a\x12\x98\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01Ra\x12\xA9`\x80\x85\x01a\rQV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x12\xC2W`\0\x80\xFD[Pa\x12\xCF\x84\x82\x85\x01a\x11wV[`\xA0\x83\x01RPa\x12\xE1`\xC0\x83\x01a\rQV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x12\xFEW`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x13\x14W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x13(W`\0\x80\xFD[a\x130a\x0C`V[\x82\x825\x11\x15a\x13>W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x13RW`\0\x80\xFD[a\x13Za\x0C`V[\x84\x825\x11\x15a\x13hW`\0\x80\xFD[a\x13u\x88\x835\x84\x01a\x12\x01V[\x81R\x84` \x83\x015\x11\x15a\x13\x88W`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\x13\xA0W`\0\x80\xFD[a\x13\xADa\r\x1A\x835a\x11TV[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x13\xCCW`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x14kW\x88\x815\x11\x15a\x13\xE7W`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x13\xFFW`\0\x80\xFD[a\x14\x07a\x0C`V[\x8A` \x83\x015\x11\x15a\x14\x18W`\0\x80\xFD[a\x14*\x8E` \x80\x85\x015\x85\x01\x01a\x0C\xFBV[\x81R\x8A`@\x83\x015\x11\x15a\x14=W`\0\x80\xFD[a\x14P\x8E` `@\x85\x015\x85\x01\x01a\x0C\xFBV[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x13\xD1V[PP\x80` \x84\x01RPP\x80\x83RPPa\x14\x86` \x83\x01a\x0FRV[` \x82\x01R\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xA6W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBCW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x12\x01V[`\0[\x83\x81\x10\x15a\x14\xE3W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xCBV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x15\x04\x81` \x86\x01` \x86\x01a\x14\xC8V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x05S` \x83\x01\x84a\x14\xECV[`\0` \x82\x84\x03\x12\x15a\x15=W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15SW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15dW`\0\x80\xFD[\x80Qa\x15ra\r\x1A\x82a\x0C\xD4V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x15\x87W`\0\x80\xFD[a\x15\x98\x82` \x83\x01` \x86\x01a\x14\xC8V[\x95\x94PPPPPV[j\x03C+ccy\x033\x93{i`\xAD\x1B\x81R`\0\x82Qa\x15\xC7\x81`\x0B\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[` \x81R`\0\x82Q`\xC0` \x84\x01Ra\x15\xF0`\xE0\x84\x01\x82a\x14\xECV[\x90P` \x84\x01Q`\x1F\x19\x80\x85\x84\x03\x01`@\x86\x01Ra\x16\x0E\x83\x83a\x14\xECV[\x92P`@\x86\x01Q\x91P\x80\x85\x84\x03\x01``\x86\x01RPa\x16,\x82\x82a\x14\xECV[\x91PP`\x01`\x01`@\x1B\x03``\x85\x01Q\x16`\x80\x84\x01R`\x80\x84\x01Q`\xA0\x84\x01R`\x01\x80`\xA0\x1B\x03`\xA0\x85\x01Q\x16`\xC0\x84\x01R\x80\x91PP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x16zW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xA9Wa\x16\xA9a\x16\x81V[P`\x01\x01\x90V[` \x81R`\0\x82Q`\xA0` \x84\x01R\x80Q`\xE0`\xC0\x85\x01Ra\x16\xD6a\x01\xA0\x85\x01\x82a\x14\xECV[\x90P` \x82\x01Q`\xBF\x19\x80\x86\x84\x03\x01`\xE0\x87\x01Ra\x16\xF4\x83\x83a\x14\xECV[\x92P`\x01`\x01`@\x1B\x03`@\x85\x01Q\x16a\x01\0\x87\x01R``\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01 \x87\x01Ra\x17&\x83\x83a\x14\xECV[\x92P`\x80\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01@\x87\x01Ra\x17D\x83\x83a\x14\xECV[\x92P`\xA0\x84\x01Q\x91Pa\x17ca\x01`\x87\x01\x83`\x01`\x01`@\x1B\x03\x16\x90RV[`\xC0\x84\x01Q\x93P\x80\x86\x84\x03\x01a\x01\x80\x87\x01RPPa\x17\x81\x81\x83a\x14\xECV[\x91PP` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x9F\x82\x82a\x14\xECV[\x91PP`@\x84\x01Qa\x17\xBC``\x85\x01\x82`\x01`\x01`@\x1B\x03\x16\x90RV[P``\x84\x01Q`\x80\x84\x01R`\x80\x84\x01Qa\x0BA`\xA0\x85\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\0` \x82\x84\x03\x12\x15a\x17\xF3W`\0\x80\xFD[\x81Qa\x05S\x81a\x0F:V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x1CWa\x0C\x1Ca\x16\x81V[`\0` \x82\x84\x03\x12\x15a\x18'W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05SW`\0\x80\xFD[`\0` \x80\x83R\x83Q`\xA0\x82\x85\x01Ra\x18S`\xC0\x85\x01\x82a\x14\xECV[\x90P`\x01`\x01`@\x1B\x03\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01``\x87\x01R\x82\x82Q\x80\x85R\x85\x85\x01\x91P\x85\x81`\x05\x1B\x86\x01\x01\x86\x85\x01\x94P`\0[\x82\x81\x10\x15a\x18\xC0W\x84\x87\x83\x03\x01\x84Ra\x18\xAE\x82\x87Qa\x14\xECV[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x18\x94V[P``\x8A\x01Q`\x01`\x01`@\x1B\x03\x81\x16`\x80\x8B\x01R\x96P`\x80\x8A\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x8B\x01R\x96P\x99\x98PPPPPPPPPV[fKUSAMA-`\xC8\x1B\x81R`\0\x82Qa\x19\x1C\x81`\x07\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x07\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x0CU\xE8m\x17\x1C\xF0\xDD\xF4p\xF1\x8C}\x9D\xD3I3=hCE\x0Ev;J\xBAK \xB3Y\xB7\x82dsolcC\0\x08\x11\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80cr5N\x9B\x11a\0\x8CW\x80c\xBC\r\xD4G\x11a\0fW\x80c\xBC\r\xD4G\x14a\x01\x94W\x80c\xC4\x92\xE4&\x14a\x01\xA7W\x80c\xD5\xF6\xEE\xFD\x14a\x01\xBAW\x80c\xF47\xBCY\x14a\x01\xCDW`\0\x80\xFD[\x80cr5N\x9B\x14a\x01[W\x80c\xB2\xA0\x1B\xF5\x14a\x01nW\x80c\xB5\xA9\x82K\x14a\x01\x81W`\0\x80\xFD[\x80c\x0B\xC3{\xAB\x14a\0\xD4W\x80c\x0E\x83$\xA2\x14a\0\xE9W\x80c\x0F\xEE2\xCE\x14a\0\xFCW\x80cJi.\x06\x14a\x01\x0FW\x80cM\r\x9C;\x14a\x01\"W\x80cp\xC5GO\x14a\x01HW[`\0\x80\xFD[a\0\xE7a\0\xE26`\x04a\x0F\x06V[a\x01\xE8V[\0[a\0\xE7a\0\xF76`\x04a\x0F]V[a\x02?V[a\0\xE7a\x01\n6`\x04a\x0FzV[a\x02\x8CV[a\0\xE7a\x01\x1D6`\x04a\x0F\xFDV[a\x02\xF6V[a\x015a\x0106`\x04a\x0F\x06V[a\x04\xAAV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x015a\x01V6`\x04a\x10\xA7V[a\x05ZV[a\0\xE7a\x01i6`\x04a\x10\xDBV[a\x07\x9AV[a\0\xE7a\x01|6`\x04a\x10\xF4V[a\x08\xB4V[a\0\xE7a\x01\x8F6`\x04a\x12\xECV[a\t\x0BV[a\0\xE7a\x01\xA26`\x04a\x10\xA7V[a\tbV[a\0\xE7a\x01\xB56`\x04a\x14\x94V[a\t\xB9V[a\x015a\x01\xC86`\x04a\x14\x94V[a\n\x10V[`\0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01?V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\x13W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7Fhv\xFA>\xCC}\x82\x1F!]\x82\x12B\xCB\xBE\x1F\x0E0\xA0\n\x85\xC2\"\xD6\x92\xA7\x96\x8F\xD3\xAF\xF1\x0B\x90`\0\x90\xA1PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02jW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB7W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xC0\x01Q`@Q\x7F\xFB\x08{?\xFB\xBB\x0F\xC9\"\xDC\xCF\x87%\x08g\x1Av\x05\x85\x94#\xEB\x90\xEB\x01LV\xFD\xBA\x14\x84\xDC\x91a\x02\xEB\x91a\x15\x18V[`@Q\x80\x91\x03\x90\xA1PV[`\0[\x81``\x01Q\x81\x10\x15a\x04\xA6W`\0`@Q\x80`\xC0\x01`@R\x80\x84`\0\x01Q\x81R` \x01\x84` \x01Q`@Q` \x01a\x03I\x91\x90``\x91\x90\x91\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R`\x14\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81R` \x01`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xF47\xBCY`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xAEW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x03\xD6\x91\x90\x81\x01\x90a\x15+V[`@Q` \x01a\x03\xE6\x91\x90a\x15\xA1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R\x90\x82R\x85\x81\x01Q`\x01`\x01`@\x1B\x03\x16` \x83\x01R`\x80\x86\x01Q\x82\x82\x01R2``\x90\x92\x01\x91\x90\x91R`\0T\x90Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x91\x92P`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x04N\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x91\x91\x90a\x16hV[PP\x80\x80a\x04\x9E\x90a\x16\x97V[\x91PPa\x02\xF9V[PPV[`@\x80Q`\xA0\x81\x01\x82R\x82Q\x81R` \x80\x84\x01Q\x90\x82\x01R\x82\x82\x01Q`\x01`\x01`@\x1B\x03\x16\x81\x83\x01R`\0``\x82\x01\x81\x90R2`\x80\x83\x01R\x80T\x92Qc\x94H\x08\x05`\xE0\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\x94H\x08\x05\x90a\x05\x10\x90\x84\x90`\x04\x01a\x16\xB0V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05/W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05S\x91\x90a\x16hV[\x93\x92PPPV[`\0\x80T`@\x80Qcd\x1Dr\x9D`\xE0\x1B\x81R\x90Q\x83\x92`\x01`\x01`\xA0\x1B\x03\x16\x91cd\x1Dr\x9D\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x05\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xC8\x91\x90a\x16hV[\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16cdxF\xA5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\x1BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06?\x91\x90a\x17\xE1V[`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD30\x86`\xC0\x01QQ\x85a\x06`\x91\x90a\x17\xFEV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x92\x90\x91\x16`$\x83\x01R`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xD8\x91\x90a\x18\x15V[P`@\x80Q`\xC0\x80\x82\x01\x83R` \x80\x87\x01Q\x83R`\x80\x80\x88\x01Q\x91\x84\x01\x91\x90\x91R\x90\x86\x01Q\x82\x84\x01R`\xA0\x80\x87\x01Q`\x01`\x01`@\x1B\x03\x16``\x84\x01R`\0\x91\x83\x01\x82\x90R2\x90\x83\x01RT\x91Qc\xB8\xF3\xE8\xF5`\xE0\x1B\x81R\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xB8\xF3\xE8\xF5\x90a\x07O\x90\x84\x90`\x04\x01a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x92\x91\x90a\x16hV[\x94\x93PPPPV[`\0`@Q\x80`\xC0\x01`@R\x80a\x07\xB0\x84a\n\x85V[\x81R` \x01`@Q\x80`@\x01`@R\x80`\x08\x81R` \x01g\x1A\\\xDB\\\x0BX\\\xDD`\xC2\x1B\x81RP\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01mhello from evm`\x90\x1B\x81RP\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x16\x81R` \x01`\0\x81R` \x012`\x01`\x01`\xA0\x1B\x03\x16\x81RP\x90P`\0\x80T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xB8\xF3\xE8\xF5\x82`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x08l\x91\x90a\x15\xD4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x08\x8BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAF\x91\x90a\x16hV[PPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x08\xDFW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xD7\xDC\x99\xAF\xB6\xC309\xCE\xA4PZ\x9E,\xAB4q\xD3Y\xCE\xBE\x02\x1E\xC1'\xDC\x94\xDD\xD3Y\xD3\xC5\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t6W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xCB\xCB\xCAfM\xFE\xB9$\xCC\xD8P\xA0\x08h\x13\x0B\xFB\x1D\xF1W\t\x9A\x06\xF9)h\"\xCB{\xC3\xAD\x01\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\x8DW`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\xBB\xF4\x8AR\xB8>\xBC=\x9E9\xF0\x92\xA8\xB9\xB7\xE5o\x1D\xD0\xDCC\x8B\xEF@\xDC}\x92\x99Bp\xA5\x9F\x90`\0\x90\xA1PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\t\xE4W`@QcQ\xAB\x8D\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x83\xE6 %\xE4\xBCXu\x16\xD0\xBC1^2\x9E\xAC\x0Cf6(T\xFE\xB7\xCDA5\xEF\x81C\xBA\x15\xF9\x90`\0\x90\xA1PV[`@\x80Q`\xA0\x80\x82\x01\x83R` \x80\x85\x01Q\x83R`\xC0\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x91\x84\x01\x91\x90\x91R\x90\x84\x01Q\x82\x84\x01R`\x80\x80\x85\x01Q\x90\x91\x16``\x83\x01R3\x90\x82\x01R`\0\x80T\x92Qc47VA`\xE2\x1B\x81R\x90\x92`\x01`\x01`\xA0\x1B\x03\x16\x90c\xD0\xDDY\x04\x90a\x05\x10\x90\x84\x90`\x04\x01a\x187V[``a\n\x90\x82a\n\xB6V[`@Q` \x01a\n\xA0\x91\x90a\x18\xFAV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x91\x90PV[```\0a\n\xC3\x83a\x0BIV[`\x01\x01\x90P`\0\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE2Wa\n\xE2a\x0C\"V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x0B\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P\x81\x81\x01` \x01[`\0\x19\x01o\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B`\n\x86\x06\x1A\x81S`\n\x85\x04\x94P\x84a\x0B\x16W[P\x93\x92PPPV[`\0\x80r\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x10a\x0B\x88Wr\x18O\x03\xE9?\xF9\xF4\xDA\xA7\x97\xEDn8\xEDd\xBFj\x1F\x01`@\x1B\x83\x04\x92P`@\x01[m\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x10a\x0B\xB4Wm\x04\xEE-mA[\x85\xAC\xEF\x81\0\0\0\0\x83\x04\x92P` \x01[f#\x86\xF2o\xC1\0\0\x83\x10a\x0B\xD2Wf#\x86\xF2o\xC1\0\0\x83\x04\x92P`\x10\x01[c\x05\xF5\xE1\0\x83\x10a\x0B\xEAWc\x05\xF5\xE1\0\x83\x04\x92P`\x08\x01[a'\x10\x83\x10a\x0B\xFEWa'\x10\x83\x04\x92P`\x04\x01[`d\x83\x10a\x0C\x10W`d\x83\x04\x92P`\x02\x01[`\n\x83\x10a\x0C\x1CW`\x01\x01[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0CZWa\x0CZa\x0C\"V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x0C\xCCWa\x0C\xCCa\x0C\"V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x0C\xEDWa\x0C\xEDa\x0C\"V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\r\x0CW`\0\x80\xFD[\x815a\r\x1Fa\r\x1A\x82a\x0C\xD4V[a\x0C\xA4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\r4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\rhW`\0\x80\xFD[\x91\x90PV[`\0`\xE0\x82\x84\x03\x12\x15a\r\x7FW`\0\x80\xFD[a\r\x87a\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\r\xA0W`\0\x80\xFD[a\r\xAC\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\r\xC2W`\0\x80\xFD[a\r\xCE\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\r\xDF`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\r\xF8W`\0\x80\xFD[a\x0E\x04\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x0E\x1DW`\0\x80\xFD[a\x0E)\x85\x83\x86\x01a\x0C\xFBV[`\x80\x84\x01Ra\x0E:`\xA0\x85\x01a\rQV[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15a\x0ESW`\0\x80\xFD[Pa\x0E`\x84\x82\x85\x01a\x0C\xFBV[`\xC0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x0E~W`\0\x80\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x82\x82\x10\x81\x83\x11\x17\x15a\x0E\xA1Wa\x0E\xA1a\x0C\"V[\x81`@R\x82\x93P\x845\x91P\x80\x82\x11\x15a\x0E\xB9W`\0\x80\xFD[a\x0E\xC5\x86\x83\x87\x01a\rmV[\x83R` \x85\x015\x91P\x80\x82\x11\x15a\x0E\xDBW`\0\x80\xFD[Pa\x0E\xE8\x85\x82\x86\x01a\x0C\xFBV[` \x83\x01RPa\x0E\xFA`@\x84\x01a\rQV[`@\x82\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x0F\x18W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F.W`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x0ElV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0FOW`\0\x80\xFD[PV[\x805a\rh\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0FoW`\0\x80\xFD[\x815a\x05S\x81a\x0F:V[`\0` \x82\x84\x03\x12\x15a\x0F\x8CW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x0F\xA3W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0F\xB7W`\0\x80\xFD[a\x0F\xBFa\x0C`V[\x825\x82\x81\x11\x15a\x0F\xCEW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\rmV[\x82RP` \x83\x015\x92Pa\x0F\xED\x83a\x0F:V[` \x81\x01\x92\x90\x92RP\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x10\x0FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x10&W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a\x10:W`\0\x80\xFD[a\x10Ba\x0C\x82V[\x825\x82\x81\x11\x15a\x10QW`\0\x80\xFD[a\x10]\x87\x82\x86\x01a\x0C\xFBV[\x82RP` \x83\x015\x91Pa\x10p\x82a\x0F:V[\x81` \x82\x01Ra\x10\x82`@\x84\x01a\rQV[`@\x82\x01R``\x83\x015``\x82\x01R`\x80\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x10\xB9W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10\xCFW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\rmV[`\0` \x82\x84\x03\x12\x15a\x10\xEDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x11\x06W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x11\x1DW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x111W`\0\x80\xFD[a\x119a\x0C`V[\x825\x82\x81\x11\x15a\x11HW`\0\x80\xFD[a\x0F\xDA\x87\x82\x86\x01a\x0ElV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a\x11mWa\x11ma\x0C\"V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x11\x88W`\0\x80\xFD[\x815` a\x11\x98a\r\x1A\x83a\x11TV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a\x11\xB7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x11\xF6W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xDAW`\0\x80\x81\xFD[a\x11\xE8\x89\x86\x83\x8B\x01\x01a\x0C\xFBV[\x84RP\x91\x83\x01\x91\x83\x01a\x11\xBBV[P\x96\x95PPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x12\x13W`\0\x80\xFD[a\x12\x1Ba\x0C8V[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x124W`\0\x80\xFD[a\x12@\x85\x83\x86\x01a\x0C\xFBV[\x83R` \x84\x015\x91P\x80\x82\x11\x15a\x12VW`\0\x80\xFD[a\x12b\x85\x83\x86\x01a\x0C\xFBV[` \x84\x01Ra\x12s`@\x85\x01a\rQV[`@\x84\x01R``\x84\x015\x91P\x80\x82\x11\x15a\x12\x8CW`\0\x80\xFD[a\x12\x98\x85\x83\x86\x01a\x0C\xFBV[``\x84\x01Ra\x12\xA9`\x80\x85\x01a\rQV[`\x80\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x12\xC2W`\0\x80\xFD[Pa\x12\xCF\x84\x82\x85\x01a\x11wV[`\xA0\x83\x01RPa\x12\xE1`\xC0\x83\x01a\rQV[`\xC0\x82\x01R\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x12\xFEW`\0\x80\xFD[`\x01`\x01`@\x1B\x03\x80\x835\x11\x15a\x13\x14W`\0\x80\xFD[\x825\x83\x01`@\x81\x86\x03\x12\x15a\x13(W`\0\x80\xFD[a\x130a\x0C`V[\x82\x825\x11\x15a\x13>W`\0\x80\xFD[\x815\x82\x01`@\x81\x88\x03\x12\x15a\x13RW`\0\x80\xFD[a\x13Za\x0C`V[\x84\x825\x11\x15a\x13hW`\0\x80\xFD[a\x13u\x88\x835\x84\x01a\x12\x01V[\x81R\x84` \x83\x015\x11\x15a\x13\x88W`\0\x80\xFD[` \x82\x015\x82\x01\x91P\x87`\x1F\x83\x01\x12a\x13\xA0W`\0\x80\xFD[a\x13\xADa\r\x1A\x835a\x11TV[\x825\x80\x82R` \x80\x83\x01\x92\x91`\x05\x1B\x85\x01\x01\x8A\x81\x11\x15a\x13\xCCW`\0\x80\xFD[` \x85\x01[\x81\x81\x10\x15a\x14kW\x88\x815\x11\x15a\x13\xE7W`\0\x80\xFD[\x805\x86\x01`@\x81\x8E\x03`\x1F\x19\x01\x12\x15a\x13\xFFW`\0\x80\xFD[a\x14\x07a\x0C`V[\x8A` \x83\x015\x11\x15a\x14\x18W`\0\x80\xFD[a\x14*\x8E` \x80\x85\x015\x85\x01\x01a\x0C\xFBV[\x81R\x8A`@\x83\x015\x11\x15a\x14=W`\0\x80\xFD[a\x14P\x8E` `@\x85\x015\x85\x01\x01a\x0C\xFBV[` \x82\x01R\x80\x86RPP` \x84\x01\x93P` \x81\x01\x90Pa\x13\xD1V[PP\x80` \x84\x01RPP\x80\x83RPPa\x14\x86` \x83\x01a\x0FRV[` \x82\x01R\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x14\xA6W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xBCW`\0\x80\xFD[a\x07\x92\x84\x82\x85\x01a\x12\x01V[`\0[\x83\x81\x10\x15a\x14\xE3W\x81\x81\x01Q\x83\x82\x01R` \x01a\x14\xCBV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x15\x04\x81` \x86\x01` \x86\x01a\x14\xC8V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0a\x05S` \x83\x01\x84a\x14\xECV[`\0` \x82\x84\x03\x12\x15a\x15=W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15SW`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x15dW`\0\x80\xFD[\x80Qa\x15ra\r\x1A\x82a\x0C\xD4V[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a\x15\x87W`\0\x80\xFD[a\x15\x98\x82` \x83\x01` \x86\x01a\x14\xC8V[\x95\x94PPPPPV[j\x03C+ccy\x033\x93{i`\xAD\x1B\x81R`\0\x82Qa\x15\xC7\x81`\x0B\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x0B\x01\x92\x91PPV[` \x81R`\0\x82Q`\xC0` \x84\x01Ra\x15\xF0`\xE0\x84\x01\x82a\x14\xECV[\x90P` \x84\x01Q`\x1F\x19\x80\x85\x84\x03\x01`@\x86\x01Ra\x16\x0E\x83\x83a\x14\xECV[\x92P`@\x86\x01Q\x91P\x80\x85\x84\x03\x01``\x86\x01RPa\x16,\x82\x82a\x14\xECV[\x91PP`\x01`\x01`@\x1B\x03``\x85\x01Q\x16`\x80\x84\x01R`\x80\x84\x01Q`\xA0\x84\x01R`\x01\x80`\xA0\x1B\x03`\xA0\x85\x01Q\x16`\xC0\x84\x01R\x80\x91PP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x16zW`\0\x80\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\x16\xA9Wa\x16\xA9a\x16\x81V[P`\x01\x01\x90V[` \x81R`\0\x82Q`\xA0` \x84\x01R\x80Q`\xE0`\xC0\x85\x01Ra\x16\xD6a\x01\xA0\x85\x01\x82a\x14\xECV[\x90P` \x82\x01Q`\xBF\x19\x80\x86\x84\x03\x01`\xE0\x87\x01Ra\x16\xF4\x83\x83a\x14\xECV[\x92P`\x01`\x01`@\x1B\x03`@\x85\x01Q\x16a\x01\0\x87\x01R``\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01 \x87\x01Ra\x17&\x83\x83a\x14\xECV[\x92P`\x80\x84\x01Q\x91P\x80\x86\x84\x03\x01a\x01@\x87\x01Ra\x17D\x83\x83a\x14\xECV[\x92P`\xA0\x84\x01Q\x91Pa\x17ca\x01`\x87\x01\x83`\x01`\x01`@\x1B\x03\x16\x90RV[`\xC0\x84\x01Q\x93P\x80\x86\x84\x03\x01a\x01\x80\x87\x01RPPa\x17\x81\x81\x83a\x14\xECV[\x91PP` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x9F\x82\x82a\x14\xECV[\x91PP`@\x84\x01Qa\x17\xBC``\x85\x01\x82`\x01`\x01`@\x1B\x03\x16\x90RV[P``\x84\x01Q`\x80\x84\x01R`\x80\x84\x01Qa\x0BA`\xA0\x85\x01\x82`\x01`\x01`\xA0\x1B\x03\x16\x90RV[`\0` \x82\x84\x03\x12\x15a\x17\xF3W`\0\x80\xFD[\x81Qa\x05S\x81a\x0F:V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\x1CWa\x0C\x1Ca\x16\x81V[`\0` \x82\x84\x03\x12\x15a\x18'W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05SW`\0\x80\xFD[`\0` \x80\x83R\x83Q`\xA0\x82\x85\x01Ra\x18S`\xC0\x85\x01\x82a\x14\xECV[\x90P`\x01`\x01`@\x1B\x03\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q`\x1F\x19\x80\x86\x84\x03\x01``\x87\x01R\x82\x82Q\x80\x85R\x85\x85\x01\x91P\x85\x81`\x05\x1B\x86\x01\x01\x86\x85\x01\x94P`\0[\x82\x81\x10\x15a\x18\xC0W\x84\x87\x83\x03\x01\x84Ra\x18\xAE\x82\x87Qa\x14\xECV[\x95\x88\x01\x95\x93\x88\x01\x93\x91P`\x01\x01a\x18\x94V[P``\x8A\x01Q`\x01`\x01`@\x1B\x03\x81\x16`\x80\x8B\x01R\x96P`\x80\x8A\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16`\xA0\x8B\x01R\x96P\x99\x98PPPPPPPPPV[fKUSAMA-`\xC8\x1B\x81R`\0\x82Qa\x19\x1C\x81`\x07\x85\x01` \x87\x01a\x14\xC8V[\x91\x90\x91\x01`\x07\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x08\x9B2.\xE3\xBA\xFD\xB1z\xDE\xE7(\x87(\x89+\xB7z\x0E\x8D\xCA\xC1\xD0j2!u*\x1B\xAB\x02udsolcC\0\x08\x11\x003"; /// The deployed bytecode of the contract. pub static PINGMODULE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/evm/integration-tests/src/tests/host_manager.rs b/evm/integration-tests/src/tests/host_manager.rs index d578cbb1a..ade75246d 100644 --- a/evm/integration-tests/src/tests/host_manager.rs +++ b/evm/integration-tests/src/tests/host_manager.rs @@ -24,7 +24,7 @@ async fn test_host_manager_withdraw() -> Result<(), anyhow::Error> { // create post request object let post = Post { - source: StateMachine::Polkadot(2000), + source: StateMachine::Kusama(2000), dest: StateMachine::Ethereum(Ethereum::ExecutionLayer), nonce: 0, from: contract.runner.sender.as_bytes().to_vec(), @@ -95,7 +95,7 @@ async fn test_host_manager_insufficient_balance() -> Result<(), anyhow::Error> { // create post request object let post = Post { - source: StateMachine::Polkadot(2000), + source: StateMachine::Kusama(2000), dest: StateMachine::Ethereum(Ethereum::ExecutionLayer), nonce: 0, from: contract.runner.sender.as_bytes().to_vec(), @@ -132,7 +132,7 @@ async fn test_host_manager_set_host_params() -> Result<(), anyhow::Error> { // create post request object let post = Post { - source: StateMachine::Polkadot(2000), + source: StateMachine::Kusama(2000), dest: StateMachine::Ethereum(Ethereum::ExecutionLayer), nonce: 0, from: contract.runner.sender.as_bytes().to_vec(), diff --git a/evm/integration-tests/src/tests/post_response.rs b/evm/integration-tests/src/tests/post_response.rs index aecf276ef..249750cd9 100644 --- a/evm/integration-tests/src/tests/post_response.rs +++ b/evm/integration-tests/src/tests/post_response.rs @@ -108,8 +108,7 @@ async fn test_post_response_timeout() -> Result<(), anyhow::Error> { let base_dir = env::current_dir()?.parent().unwrap().display().to_string(); let mut runner = Runner::new(PathBuf::from(&base_dir)); let mut contract = runner.deploy("PostResponseTest").await; - let storage_prefix = - hex!("103895530afb23bb607661426d55eb8b554b72b7162725f9457d35ecafb8b02f").to_vec(); + let storage_prefix = hex!("526573706f6e73655265636569707473").to_vec(); let destination = contract.call::<_, Address>("module", ()).await?; // create post request object @@ -197,8 +196,7 @@ async fn test_post_response_malicious_timeout() -> Result<(), anyhow::Error> { let base_dir = env::current_dir()?.parent().unwrap().display().to_string(); let mut runner = Runner::new(PathBuf::from(&base_dir)); let mut contract = runner.deploy("PostResponseTest").await; - let storage_prefix = - hex!("103895530afb23bb607661426d55eb8b554b72b7162725f9457d35ecafb8b02f").to_vec(); + let storage_prefix = hex!("526573706f6e73655265636569707473").to_vec(); let destination = contract.call::<_, Address>("module", ()).await?; // create post request object diff --git a/evm/integration-tests/src/tests/post_timeout.rs b/evm/integration-tests/src/tests/post_timeout.rs index ebc285e31..f15205fd6 100644 --- a/evm/integration-tests/src/tests/post_timeout.rs +++ b/evm/integration-tests/src/tests/post_timeout.rs @@ -26,8 +26,7 @@ async fn test_post_timeout_proof() -> Result<(), anyhow::Error> { let mut contract = runner.deploy("PostRequestTest").await; let module = contract.call::<_, Address>("module", ()).await?; - let storage_prefix = - hex!("103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a").to_vec(); + let storage_prefix = hex!("526571756573745265636569707473").to_vec(); // create post request object let post = Post { diff --git a/evm/lib/ismp-solidity b/evm/lib/ismp-solidity index 345fc9d1f..4d44b62b8 160000 --- a/evm/lib/ismp-solidity +++ b/evm/lib/ismp-solidity @@ -1 +1 @@ -Subproject commit 345fc9d1fc2c424be8b53af8c736c2eae7d57032 +Subproject commit 4d44b62b85189be568a5287b6874adc7587ae6da diff --git a/evm/script/DeployZkBeefy.s.sol b/evm/script/DeployBeefy.s.sol similarity index 100% rename from evm/script/DeployZkBeefy.s.sol rename to evm/script/DeployBeefy.s.sol diff --git a/evm/script/DeployGateway.s.sol b/evm/script/DeployGateway.s.sol index f03c276a9..1d97945a2 100644 --- a/evm/script/DeployGateway.s.sol +++ b/evm/script/DeployGateway.s.sol @@ -83,12 +83,7 @@ contract DeployScript is Script { gateway.init( TokenGatewayParamsExt({ - params: TokenGatewayParams({ - hyperbridge: StateMachine.kusama(paraId), - host: host, - uniswapV2: uniRouter, - dispatcher: callDispatcher - }), + params: TokenGatewayParams({host: host, uniswapV2: uniRouter, dispatcher: callDispatcher}), assets: assets }) ); diff --git a/evm/script/DeployIsmp.s.sol b/evm/script/DeployIsmp.s.sol index 2e190a53c..3b743ae7f 100644 --- a/evm/script/DeployIsmp.s.sol +++ b/evm/script/DeployIsmp.s.sol @@ -58,13 +58,14 @@ contract DeployScript is Script { HandlerV1 handler = new HandlerV1{salt: salt}(); // Host manager - HostManager manager = - new HostManager{salt: salt}(HostManagerParams({admin: admin, host: address(0), governorStateMachineId : paraId})); + HostManager manager = new HostManager{salt: salt}(HostManagerParams({admin: admin, host: address(0)})); uint256[] memory stateMachineWhitelist = new uint256[](1); stateMachineWhitelist[0] = paraId; // EvmHost + address[] memory fishermen = new address[](0); HostParams memory params = HostParams({ + fishermen: fishermen, admin: admin, hostManager: address(manager), handler: address(handler), @@ -78,6 +79,7 @@ contract DeployScript is Script { consensusUpdateTimestamp: 0, consensusState: new bytes(0), perByteFee: 3 * 1e15, // $0.003/byte + hyperbridge: StateMachine.kusama(paraId), feeToken: address(feeToken), stateMachineWhitelist: stateMachineWhitelist }); @@ -146,12 +148,7 @@ contract DeployScript is Script { // initialize gateway gateway.init( TokenGatewayParamsExt({ - params: TokenGatewayParams({ - hyperbridge: StateMachine.kusama(paraId), - host: hostAddress, - uniswapV2: address(1), - dispatcher: dispatcher - }), + params: TokenGatewayParams({host: hostAddress, uniswapV2: address(1), dispatcher: dispatcher}), assets: assets }) ); diff --git a/evm/src/hosts/EvmHost.sol b/evm/src/hosts/EvmHost.sol index 490c7f672..579d8a748 100644 --- a/evm/src/hosts/EvmHost.sol +++ b/evm/src/hosts/EvmHost.sol @@ -3,6 +3,7 @@ pragma solidity 0.8.17; import {Context} from "openzeppelin/utils/Context.sol"; import {Math} from "openzeppelin/utils/math/Math.sol"; +import {Strings} from "openzeppelin/utils/Strings.sol"; import {IERC20} from "openzeppelin/token/ERC20/IERC20.sol"; import {Bytes} from "solidity-merkle-trees/trie/Bytes.sol"; @@ -40,6 +41,10 @@ struct HostParams { uint256 consensusUpdateTimestamp; // whitelisted state machines uint256[] stateMachineWhitelist; + // white list of fishermen accounts + address[] fishermen; + // state machine identifier for hyperbridge + bytes hyperbridge; } // The host manager interface. This provides methods for modifying the host's params or withdrawing bridge revenue. @@ -102,6 +107,15 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { // (stateMachineId => (blockHeight => timestamp)) mapping(uint256 => uint256) private _latestStateMachineHeight; + // mapping of all known fishermen accounts + // (stateMachineId => (blockHeight => timestamp)) + mapping(address => bool) private _fishermen; + + // mapping of state machine identifier to height vetoed to fisherman + // useful for rewarding fishermen on hyperbridge + // (stateMachineId => (blockHeight => fisherman)) + mapping(uint256 => mapping(uint256 => address)) private _vetoes; + // Parameters for the host HostParams private _hostParams; @@ -130,7 +144,10 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { event GetRequestTimeoutHandled(bytes32 commitment); // Emitted when new heights are finalized - event StateMachineUpdated(uint256 stateMachineId, uint256 height); + event StateMachineUpdated(bytes stateMachineId, uint256 height); + + // Emitted when a state commitment is vetoed by a fisherman + event StateCommitmentVetoed(bytes stateMachineId, uint256 height, address fisherman); // Emitted when a new POST request is dispatched event PostRequestEvent( @@ -169,28 +186,32 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { uint256 timeoutTimestamp ); + // only permits fishermen + modifier onlyFishermen() { + require(_fishermen[_msgSender()], "EvmHost: Account is not in the fishermen set"); + _; + } + + // only permits the admin modifier onlyAdmin() { - require(_msgSender() == _hostParams.admin, "EvmHost: Only admin"); + require(_msgSender() == _hostParams.admin, "EvmHost: Account is not the admin"); _; } + // only permits the IHandler contract modifier onlyHandler() { - require(_msgSender() == address(_hostParams.handler), "EvmHost: Only handler"); + require(_msgSender() == address(_hostParams.handler), "EvmHost: Account is not the handler"); _; } + // only permits the HostManager contract modifier onlyManager() { - require(_msgSender() == _hostParams.hostManager, "EvmHost: Only Manager contract"); + require(_msgSender() == _hostParams.hostManager, "EvmHost: Account is not the Manager contract"); _; } constructor(HostParams memory params) { - _hostParams = params; - uint256 length = params.stateMachineWhitelist.length; - for (uint256 i = 0; i < length; i++) { - // set it to non-zero - _latestStateMachineHeight[params.stateMachineWhitelist[i]] = 1; - } + updateHostParamsInternal(params); } /** @@ -245,6 +266,13 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { return _hostParams; } + /** + * @return the state machine identifier for the connected hyperbridge instance + */ + function hyperbridge() external view returns (bytes memory) { + return _hostParams.hyperbridge; + } + /** * @param height - state machine height * @return the state commitment at `height` @@ -293,8 +321,8 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { /** * @return the latest state machine height for the given stateMachineId. If it returns 0, the state machine is unsupported. */ - function latestStateMachineHeight(uint256 stateMachineId) external view returns (uint256) { - return _latestStateMachineHeight[stateMachineId]; + function latestStateMachineHeight(uint256 id) external view returns (uint256) { + return _latestStateMachineHeight[id]; } /** @@ -341,17 +369,45 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { * @param params, the new host params. */ function updateHostParams(HostParams memory params) external onlyManager { - _hostParams = params; + updateHostParamsInternal(params); } /** * @dev Updates the HostParams * @param params, the new host params. Can only be called by admin on testnets. */ - function setHostParamsAdmin(HostParams memory params) external onlyAdmin { + function setHostParamsAdmin(HostParams memory params) public onlyAdmin { require(chainId() != block.chainid, "Cannot set params on mainnet"); + updateHostParamsInternal(params); + } + + /** + * @dev Updates the HostParams + * @param params, the new host params. + */ + function updateHostParamsInternal(HostParams memory params) private { + // delete old fishermen + uint256 fishermenLength = _hostParams.fishermen.length; + for (uint256 i = 0; i < fishermenLength; i++) { + delete _fishermen[_hostParams.fishermen[i]]; + } _hostParams = params; + + // add new fishermen if any + uint256 newFishermenLength = params.fishermen.length; + for (uint256 i = 0; i < newFishermenLength; i++) { + _fishermen[params.fishermen[i]] = true; + } + + // add whitelisted state machines + uint256 whitelistLength = params.stateMachineWhitelist.length; + for (uint256 i = 0; i < whitelistLength; i++) { + // create if it doesn't already exist + if (_latestStateMachineHeight[params.stateMachineWhitelist[i]] == 0) { + _latestStateMachineHeight[params.stateMachineWhitelist[i]] = 1; + } + } } /** @@ -381,7 +437,41 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { _stateCommitmentsUpdateTime[height.stateMachineId][height.height] = block.timestamp; _latestStateMachineHeight[height.stateMachineId] = height.height; - emit StateMachineUpdated({stateMachineId: height.stateMachineId, height: height.height}); + emit StateMachineUpdated({stateMachineId: stateMachineId(height.stateMachineId), height: height.height}); + } + + /** + * @dev Delete the state commitment at given state height. + */ + function deleteStateMachineCommitment(StateMachineHeight memory height, address fisherman) external onlyHandler { + deleteStateMachineCommitmentInternal(height, fisherman); + } + + /** + * @dev Delete the state commitment at given state height. + */ + function deleteStateMachineCommitmentInternal(StateMachineHeight memory height, address fisherman) private { + delete _stateCommitments[height.stateMachineId][height.height]; + delete _stateCommitmentsUpdateTime[height.stateMachineId][height.height]; + delete _latestStateMachineHeight[height.stateMachineId]; + + // track the fisherman responsible for rewards on hyperbridge through state proofs + _vetoes[height.stateMachineId][height.height] = fisherman; + + emit StateCommitmentVetoed({ + stateMachineId: stateMachineId(height.stateMachineId), + height: height.height, + fisherman: fisherman + }); + } + + /** + * @dev Get the state machine id for a parachain + */ + function stateMachineId(uint256 id) public view returns (bytes memory) { + bytes memory hyperbridgeId = _hostParams.hyperbridge; + uint256 offset = hyperbridgeId.length - 4; + return bytes.concat(hyperbridgeId.substr(0, offset), bytes(Strings.toString(id))); } /** @@ -399,9 +489,10 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { function setConsensusState(bytes memory state) public onlyAdmin { // if we're on mainnet, then consensus state can only be initialized once. // and updated subsequently by either consensus proofs or cross-chain governance - if (chainId() == block.chainid) { - require(_hostParams.consensusState.equals(new bytes(0)), "Unauthorized action"); - } + require( + chainId() == block.chainid ? _hostParams.consensusState.equals(new bytes(0)) : true, "Unauthorized action" + ); + _hostParams.consensusState = state; } @@ -462,7 +553,7 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { if (success) { bytes32 commitment = response.request.hash(); - // don't commit the full response object because, it's unused. + // don't commit the full response object, it's unused. _responseReceipts[commitment] = ResponseReceipt({relayer: relayer, responseCommitment: bytes32(0)}); emit PostResponseHandled({commitment: commitment, relayer: relayer}); } @@ -670,7 +761,7 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { FeeMetadata memory metadata = _requestCommitments[commitment]; require(metadata.sender != address(0), "Unknown request"); - require(metadata.sender != _msgSender(), "User can only fund own requests"); + require(metadata.sender == _msgSender(), "User can only fund own requests"); IERC20(feeToken()).transferFrom(_msgSender(), address(this), amount); metadata.fee += amount; @@ -684,9 +775,8 @@ abstract contract EvmHost is IIsmpHost, IHostManager, Context { * changes at the provided height. This allows them to veto the state commitment. * They aren't required to provide any proofs for this. */ - function vetoStateCommitment(StateMachineHeight memory height) public onlyAdmin { - delete _stateCommitments[height.stateMachineId][height.height]; - delete _stateCommitmentsUpdateTime[height.stateMachineId][height.height]; + function vetoStateCommitment(StateMachineHeight memory height) public onlyFishermen { + deleteStateMachineCommitmentInternal(height, _msgSender()); } /** diff --git a/evm/src/modules/HandlerV1.sol b/evm/src/modules/HandlerV1.sol index 85b0fa1bd..8438c10a2 100644 --- a/evm/src/modules/HandlerV1.sol +++ b/evm/src/modules/HandlerV1.sol @@ -20,11 +20,11 @@ import { PostResponseLeaf } from "ismp/Message.sol"; -// Storage prefix for request receipts in pallet-ismp -bytes constant REQUEST_RECEIPTS_STORAGE_PREFIX = hex"103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a"; +// Storage prefix for request receipts in the pallet-ismp child trie +bytes constant REQUEST_RECEIPTS_STORAGE_PREFIX = hex"526571756573745265636569707473"; -// Storage prefix for request receipts in pallet-ismp -bytes constant RESPONSE_RECEIPTS_STORAGE_PREFIX = hex"103895530afb23bb607661426d55eb8b554b72b7162725f9457d35ecafb8b02f"; +// Storage prefix for request receipts in the pallet-ismp child trie +bytes constant RESPONSE_RECEIPTS_STORAGE_PREFIX = hex"526573706f6e73655265636569707473"; /// Entry point for the hyperbridge. Implementation of the ISMP handler protocol contract HandlerV1 is IHandler, Context { diff --git a/evm/src/modules/HostManager.sol b/evm/src/modules/HostManager.sol index a01934c9b..e0c13c5ee 100644 --- a/evm/src/modules/HostManager.sol +++ b/evm/src/modules/HostManager.sol @@ -12,8 +12,6 @@ import {BaseIsmpModule, IncomingPostRequest} from "ismp/IIsmpModule.sol"; struct HostManagerParams { /// admin for setting the host address address admin; - /// state machine id of governor parachain - uint256 governorStateMachineId; /// Local ismp host address host; } @@ -59,7 +57,7 @@ contract HostManager is BaseIsmpModule { function onAccept(IncomingPostRequest calldata incoming) external override onlyIsmpHost { PostRequest calldata request = incoming.request; // Only Hyperbridge governor parachain can send requests to this module. - require(request.source.equals(StateMachine.polkadot(_params.governorStateMachineId)), "Unauthorized request"); + require(request.source.equals(EvmHost(_params.host).hyperbridge()), "Unauthorized request"); OnAcceptActions action = OnAcceptActions(uint8(request.body[0])); if (action == OnAcceptActions.Withdraw) { diff --git a/evm/src/modules/TokenGateway.sol b/evm/src/modules/TokenGateway.sol index 612c9549a..2a5a95bdb 100644 --- a/evm/src/modules/TokenGateway.sol +++ b/evm/src/modules/TokenGateway.sol @@ -8,8 +8,9 @@ import {BaseIsmpModule, PostRequest, IncomingPostRequest} from "ismp/IIsmpModule import {Bytes} from "solidity-merkle-trees/trie/Bytes.sol"; import {IERC6160Ext20} from "ERC6160/interfaces/IERC6160Ext20.sol"; import {IERC20} from "openzeppelin/token/ERC20/IERC20.sol"; -import {CallDispatcher, ICallDispatcher} from "./CallDispatcher.sol"; +import {ICallDispatcher} from "./CallDispatcher.sol"; import {IUniswapV2Router} from "../interfaces/IUniswapV2Router.sol"; +import {EvmHost} from "../hosts/EvmHost.sol"; struct TeleportParams { // amount to be sent @@ -100,8 +101,6 @@ enum OnAcceptActions uint256 constant BODY_BYTES_SIZE = 161; struct TokenGatewayParams { - // StateMachine identifier for hyperbridge - bytes hyperbridge; // address of the IsmpHost contract on this chain address host; // local uniswap router @@ -387,7 +386,7 @@ contract TokenGateway is BaseIsmpModule { function handleGovernance(PostRequest calldata request) private { // only hyperbridge can do this - require(request.source.equals(_params.hyperbridge), "Unauthorized request"); + require(request.source.equals(EvmHost(_params.host).hyperbridge()), "Unauthorized request"); TokenGatewayParamsExt memory teleportParams = abi.decode(request.body[1:], (TokenGatewayParamsExt)); _params = teleportParams.params; diff --git a/evm/test/BaseTest.sol b/evm/test/BaseTest.sol index 061d57bf6..1ad15819b 100644 --- a/evm/test/BaseTest.sol +++ b/evm/test/BaseTest.sol @@ -53,12 +53,13 @@ contract BaseTest is Test { hyperInu = new MockUSCDC("HyperInu", "HINU"); hyperInu_h = new FeeToken(address(this), "HyperInu", "HINU.h"); uint256 paraId = 2000; - HostManagerParams memory gParams = - HostManagerParams({admin: address(this), host: address(0), governorStateMachineId: paraId}); + HostManagerParams memory gParams = HostManagerParams({admin: address(this), host: address(0)}); HostManager manager = new HostManager(gParams); uint256[] memory stateMachineWhitelist = new uint256[](1); stateMachineWhitelist[0] = paraId; + address[] memory fishermen = new address[](0); HostParams memory params = HostParams({ + fishermen: fishermen, admin: address(0), hostManager: address(manager), handler: address(handler), @@ -71,6 +72,7 @@ contract BaseTest is Test { consensusState: new bytes(0), perByteFee: 1000000000000000000, // 1FTK feeToken: address(feeToken), + hyperbridge: StateMachine.kusama(paraId), stateMachineWhitelist: stateMachineWhitelist }); host = new TestHost(params); @@ -95,12 +97,7 @@ contract BaseTest is Test { gateway.init( TokenGatewayParamsExt({ - params: TokenGatewayParams({ - hyperbridge: StateMachine.kusama(2000), - host: address(host), - uniswapV2: address(1), - dispatcher: address(dispatcher) - }), + params: TokenGatewayParams({host: address(host), uniswapV2: address(1), dispatcher: address(dispatcher)}), assets: assets }) ); @@ -115,6 +112,7 @@ contract BaseTest is Test { // some approvals feeToken.superApprove(address(this), address(gateway)); feeToken.superApprove(address(tx.origin), address(testModule)); + feeToken.superApprove(address(tx.origin), address(host)); feeToken.superApprove(address(testModule), address(host)); miniStaking = new MiniStaking(address(feeToken)); diff --git a/evm/test/EvmHostTest.sol b/evm/test/EvmHostTest.sol new file mode 100644 index 000000000..283ac075c --- /dev/null +++ b/evm/test/EvmHostTest.sol @@ -0,0 +1,214 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import {BaseTest} from "./BaseTest.sol"; +import {Bytes} from "solidity-merkle-trees/trie/Bytes.sol"; +import "forge-std/Test.sol"; +import "../src/hosts/EvmHost.sol"; +import {DispatchPost} from "ismp/IDispatcher.sol"; +import {StateMachine} from "ismp/StateMachine.sol"; + +contract EvmHostTest is BaseTest { + using Bytes for bytes; + + // we should only be able to set consensus state multiple times on testnet + function testSetConsensusState() public { + // set chain Id to testnet + vm.chainId(host.chainId() + 5); + + // we can set consensus state + vm.prank(host.hostParams().admin); + host.setConsensusState(hex"deadbeef"); + assert(host.consensusState().equals(hex"deadbeef")); + + // as many times as we want + vm.prank(host.hostParams().admin); + host.setConsensusState(hex"beefdead"); + assert(host.consensusState().equals(hex"beefdead")); + + // reset it + vm.prank(host.hostParams().admin); + host.setConsensusState(new bytes(0)); + assert(host.consensusState().equals(new bytes(0))); + + // set chain Id to mainnet + vm.chainId(host.chainId()); + // we can set consensus state + vm.prank(host.hostParams().admin); + host.setConsensusState(hex"beef"); + assert(host.consensusState().equals(hex"beef")); + + // but not anymore + vm.startPrank(host.hostParams().admin); + vm.expectRevert("Unauthorized action"); + host.setConsensusState(hex"feeb"); + assert(host.consensusState().equals(hex"beef")); + } + + function testSetHostParamsAdmin() public { + // set chain Id to testnet + vm.chainId(host.chainId() + 5); + assert(host.chainId() + 5 == block.chainid); + + HostParams memory params = host.hostParams(); + // we can set host params + vm.prank(host.hostParams().admin); + host.setHostParamsAdmin(params); + + // can't set on mainnet + vm.chainId(host.chainId()); + vm.prank(host.hostParams().admin); + vm.expectRevert("Cannot set params on mainnet"); + host.setHostParamsAdmin(params); + } + + function testFundRequest() public { + // dispatch request + vm.prank(tx.origin); + bytes32 commitment = host.dispatch( + DispatchPost({ + body: new bytes(0), + payer: tx.origin, + fee: 0, + dest: StateMachine.arbitrum(), + timeout: 0, + to: new bytes(0) + }) + ); + assert(host.requestCommitments(commitment).fee == 0); + + // fund request + vm.prank(tx.origin); + host.fundRequest(commitment, 10 * 1e18); + assert(host.requestCommitments(commitment).fee == 10 * 1e18); + + // can't fund unknown requests + vm.expectRevert("Unknown request"); + vm.prank(tx.origin); + host.fundRequest(keccak256(hex"dead"), 10 * 1e18); + + // another person can't fund your request for safety reasons + vm.expectRevert("User can only fund own requests"); + host.fundRequest(commitment, 10 * 1e18); + } + + function testVetoStateCommitment() public { + // add tx.origin to fishermen + HostParams memory params = host.hostParams(); + address[] memory fishermen = new address[](1); + fishermen[0] = tx.origin; + params.fishermen = fishermen; + vm.prank(params.admin); + host.setHostParamsAdmin(params); + + // create a state commitment + StateMachineHeight memory height = StateMachineHeight({height: 100, stateMachineId: 2000}); + vm.prank(params.handler); + host.storeStateMachineCommitment( + height, StateCommitment({timestamp: 200, overlayRoot: bytes32(0), stateRoot: bytes32(0)}) + ); + assert(host.stateMachineCommitment(height).timestamp == 200); + + // can't veto if not in fishermen set + vm.expectRevert("EvmHost: Account is not in the fishermen set"); + host.vetoStateCommitment(height); + + // veto with fisherman + vm.prank(tx.origin); + host.vetoStateCommitment(height); + assert(host.stateMachineCommitment(height).timestamp == 0); + } + + function testCanAddwhitelistedStateMachines() public { + HostParams memory params = host.hostParams(); + uint256[] memory stateMachineWhitelist = new uint256[](2); + stateMachineWhitelist[0] = 2000; + stateMachineWhitelist[1] = 2001; + params.stateMachineWhitelist = stateMachineWhitelist; + + // create a state commitment + StateMachineHeight memory height = StateMachineHeight({height: 100, stateMachineId: 2000}); + vm.prank(params.handler); + host.storeStateMachineCommitment( + height, StateCommitment({timestamp: 200, overlayRoot: bytes32(0), stateRoot: bytes32(0)}) + ); + assert(host.stateMachineCommitment(height).timestamp == 200); + assert(host.latestStateMachineHeight(height.stateMachineId) == 100); + + // add the new state machine + vm.prank(params.admin); + host.setHostParamsAdmin(params); + // should be unchanged + assert(host.latestStateMachineHeight(height.stateMachineId) == 100); + // should be set to 1 + assert(host.latestStateMachineHeight(2001) == 1); + } + + function testCanAddandRemoveFishermen() public { + // add tx.origin & this to fishermen + HostParams memory params = host.hostParams(); + address[] memory fishermen = new address[](2); + fishermen[0] = tx.origin; + fishermen[1] = address(this); + params.fishermen = fishermen; + vm.prank(params.admin); + host.setHostParamsAdmin(params); + + // create a state commitment + StateMachineHeight memory height = StateMachineHeight({height: 100, stateMachineId: 2000}); + vm.prank(params.handler); + host.storeStateMachineCommitment( + height, StateCommitment({timestamp: 200, overlayRoot: bytes32(0), stateRoot: bytes32(0)}) + ); + assert(host.stateMachineCommitment(height).timestamp == 200); + // veto with fisherman + vm.prank(tx.origin); + host.vetoStateCommitment(height); + assert(host.stateMachineCommitment(height).timestamp == 0); + + // create a state commitment + vm.prank(params.handler); + host.storeStateMachineCommitment( + height, StateCommitment({timestamp: 200, overlayRoot: bytes32(0), stateRoot: bytes32(0)}) + ); + assert(host.stateMachineCommitment(height).timestamp == 200); + // veto with fisherman + host.vetoStateCommitment(height); + assert(host.stateMachineCommitment(height).timestamp == 0); + + // remove fishermen + address[] memory newFishermen = new address[](0); + params.fishermen = newFishermen; + vm.prank(params.admin); + host.setHostParamsAdmin(params); + + // create a state commitment + vm.prank(params.handler); + host.storeStateMachineCommitment( + height, StateCommitment({timestamp: 200, overlayRoot: bytes32(0), stateRoot: bytes32(0)}) + ); + assert(host.stateMachineCommitment(height).timestamp == 200); + + // cannot veto + vm.expectRevert("EvmHost: Account is not in the fishermen set"); + host.vetoStateCommitment(height); + assert(host.stateMachineCommitment(height).timestamp == 200); + + // cannot veto + vm.prank(tx.origin); + vm.expectRevert("EvmHost: Account is not in the fishermen set"); + host.vetoStateCommitment(height); + assert(host.stateMachineCommitment(height).timestamp == 200); + } + + function testHostStateMachineId() public { + assert(StateMachine.kusama(3000).equals(host.stateMachineId(3000))); + + HostParams memory params = host.hostParams(); + params.hyperbridge = StateMachine.polkadot(3367); + vm.prank(params.admin); + host.setHostParamsAdmin(params); + + assert(StateMachine.polkadot(3000).equals(host.stateMachineId(3000))); + } +} diff --git a/evm/test/MainnetForkBaseTest.sol b/evm/test/MainnetForkBaseTest.sol index 36637a840..4ab098e5e 100644 --- a/evm/test/MainnetForkBaseTest.sol +++ b/evm/test/MainnetForkBaseTest.sol @@ -59,12 +59,13 @@ contract MainnetForkBaseTest is Test { CallDispatcher dispatcher = new CallDispatcher(); uint256 paraId = 2000; - HostManagerParams memory gParams = - HostManagerParams({admin: address(this), host: address(0), governorStateMachineId: paraId}); + HostManagerParams memory gParams = HostManagerParams({admin: address(this), host: address(0)}); HostManager manager = new HostManager(gParams); uint256[] memory stateMachineWhitelist = new uint256[](1); stateMachineWhitelist[0] = paraId; + address[] memory fishermen = new address[](0); HostParams memory params = HostParams({ + fishermen: fishermen, admin: address(0), hostManager: address(manager), handler: address(handler), @@ -77,6 +78,7 @@ contract MainnetForkBaseTest is Test { consensusState: new bytes(0), perByteFee: 1000000000000000000, // 1FTK feeToken: address(feeToken), + hyperbridge: StateMachine.kusama(paraId), stateMachineWhitelist: stateMachineWhitelist }); @@ -100,7 +102,6 @@ contract MainnetForkBaseTest is Test { gateway.init( TokenGatewayParamsExt({ params: TokenGatewayParams({ - hyperbridge: StateMachine.kusama(2000), host: address(host), uniswapV2: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, dispatcher: address(dispatcher) diff --git a/evm/test/TestHost.sol b/evm/test/TestHost.sol index 16098bc33..f94514ae3 100644 --- a/evm/test/TestHost.sol +++ b/evm/test/TestHost.sol @@ -8,7 +8,7 @@ contract TestHost is EvmHost { constructor(HostParams memory params) EvmHost(params) {} /// chainId for the bsc mainnet - uint256 public constant CHAIN_ID = 1; + uint256 public constant CHAIN_ID = 1337; function chainId() public pure override returns (uint256) { return CHAIN_ID; diff --git a/modules/consensus/beefy/prover/Cargo.toml b/modules/consensus/beefy/prover/Cargo.toml index 557422ee6..84709d7d8 100644 --- a/modules/consensus/beefy/prover/Cargo.toml +++ b/modules/consensus/beefy/prover/Cargo.toml @@ -35,5 +35,7 @@ hex = { version = "0.4.3" } beefy-verifier-primitives = { path = "../primitives" } [features] -default = [] +default = ["rococo"] +rococo = [] rococo-local = [] +paseo = [] diff --git a/modules/consensus/beefy/prover/src/runtime.rs b/modules/consensus/beefy/prover/src/runtime.rs index d84daba46..ca4121f83 100644 --- a/modules/consensus/beefy/prover/src/runtime.rs +++ b/modules/consensus/beefy/prover/src/runtime.rs @@ -3,7 +3,12 @@ mod rococo_local; #[cfg(feature = "rococo-local")] pub use rococo_local::api::*; -#[cfg(not(feature = "rococo-local"))] +#[cfg(feature = "rococo")] mod rococo; -#[cfg(not(feature = "rococo-local"))] +#[cfg(feature = "rococo")] pub use rococo::api::*; + +#[cfg(feature = "paseo")] +mod paseo; +#[cfg(feature = "paseo")] +pub use paseo::api::*; diff --git a/modules/consensus/beefy/prover/src/runtime/paseo.rs b/modules/consensus/beefy/prover/src/runtime/paseo.rs new file mode 100644 index 000000000..0808bd5db --- /dev/null +++ b/modules/consensus/beefy/prover/src/runtime/paseo.rs @@ -0,0 +1,48279 @@ +#[allow(dead_code, unused_imports, non_camel_case_types)] +#[allow(clippy::all)] +#[allow(rustdoc::broken_intra_doc_links)] +pub mod api { + #[allow(unused_imports)] + mod root_mod { + pub use super::*; + } + pub static PALLETS: [&str; 58usize] = [ + "System", + "Scheduler", + "Preimage", + "Babe", + "Timestamp", + "Indices", + "Balances", + "TransactionPayment", + "Authorship", + "Staking", + "Offences", + "Historical", + "Session", + "Grandpa", + "ImOnline", + "AuthorityDiscovery", + "Treasury", + "ConvictionVoting", + "Referenda", + "Whitelist", + "Claims", + "Vesting", + "Utility", + "Identity", + "Proxy", + "Multisig", + "Bounties", + "ChildBounties", + "ElectionProviderMultiPhase", + "VoterList", + "NominationPools", + "FastUnstake", + "ParachainsOrigin", + "Configuration", + "ParasShared", + "ParaInclusion", + "ParaInherent", + "ParaScheduler", + "Paras", + "Initializer", + "Dmp", + "Hrmp", + "ParaSessionInfo", + "ParasDisputes", + "ParasSlashing", + "ParaAssignmentProvider", + "Registrar", + "Slots", + "Auctions", + "Crowdloan", + "XcmPallet", + "MessageQueue", + "AssetRate", + "Beefy", + "Mmr", + "BeefyMmrLeaf", + "ParaSudoWrapper", + "Sudo", + ]; + pub static RUNTIME_APIS: [&str; 19usize] = [ + "Core", + "Metadata", + "BlockBuilder", + "NominationPoolsApi", + "StakingApi", + "TaggedTransactionQueue", + "OffchainWorkerApi", + "ParachainHost", + "BeefyApi", + "MmrApi", + "BeefyMmrApi", + "GrandpaApi", + "BabeApi", + "AuthorityDiscoveryApi", + "SessionKeys", + "AccountNonceApi", + "TransactionPaymentApi", + "TransactionPaymentCallApi", + "GenesisBuilder", + ]; + #[doc = r" The error type returned when there is a runtime issue."] + pub type DispatchError = runtime_types::sp_runtime::DispatchError; + #[doc = r" The outer event enum."] + pub type Event = runtime_types::paseo_runtime::RuntimeEvent; + #[doc = r" The outer extrinsic enum."] + pub type Call = runtime_types::paseo_runtime::RuntimeCall; + #[doc = r" The outer error enum representing the DispatchError's Module variant."] + pub type Error = runtime_types::paseo_runtime::RuntimeError; + pub fn constants() -> ConstantsApi { + ConstantsApi + } + pub fn storage() -> StorageApi { + StorageApi + } + pub fn tx() -> TransactionApi { + TransactionApi + } + pub fn apis() -> runtime_apis::RuntimeApi { + runtime_apis::RuntimeApi + } + pub mod runtime_apis { + use super::{root_mod, runtime_types}; + use ::subxt::ext::codec::Encode; + pub struct RuntimeApi; + impl RuntimeApi { + pub fn core(&self) -> core::Core { + core::Core + } + pub fn metadata(&self) -> metadata::Metadata { + metadata::Metadata + } + pub fn block_builder(&self) -> block_builder::BlockBuilder { + block_builder::BlockBuilder + } + pub fn nomination_pools_api(&self) -> nomination_pools_api::NominationPoolsApi { + nomination_pools_api::NominationPoolsApi + } + pub fn staking_api(&self) -> staking_api::StakingApi { + staking_api::StakingApi + } + pub fn tagged_transaction_queue( + &self, + ) -> tagged_transaction_queue::TaggedTransactionQueue { + tagged_transaction_queue::TaggedTransactionQueue + } + pub fn offchain_worker_api(&self) -> offchain_worker_api::OffchainWorkerApi { + offchain_worker_api::OffchainWorkerApi + } + pub fn parachain_host(&self) -> parachain_host::ParachainHost { + parachain_host::ParachainHost + } + pub fn beefy_api(&self) -> beefy_api::BeefyApi { + beefy_api::BeefyApi + } + pub fn mmr_api(&self) -> mmr_api::MmrApi { + mmr_api::MmrApi + } + pub fn beefy_mmr_api(&self) -> beefy_mmr_api::BeefyMmrApi { + beefy_mmr_api::BeefyMmrApi + } + pub fn grandpa_api(&self) -> grandpa_api::GrandpaApi { + grandpa_api::GrandpaApi + } + pub fn babe_api(&self) -> babe_api::BabeApi { + babe_api::BabeApi + } + pub fn authority_discovery_api( + &self, + ) -> authority_discovery_api::AuthorityDiscoveryApi { + authority_discovery_api::AuthorityDiscoveryApi + } + pub fn session_keys(&self) -> session_keys::SessionKeys { + session_keys::SessionKeys + } + pub fn account_nonce_api(&self) -> account_nonce_api::AccountNonceApi { + account_nonce_api::AccountNonceApi + } + pub fn transaction_payment_api( + &self, + ) -> transaction_payment_api::TransactionPaymentApi { + transaction_payment_api::TransactionPaymentApi + } + pub fn transaction_payment_call_api( + &self, + ) -> transaction_payment_call_api::TransactionPaymentCallApi { + transaction_payment_call_api::TransactionPaymentCallApi + } + pub fn genesis_builder(&self) -> genesis_builder::GenesisBuilder { + genesis_builder::GenesisBuilder + } + } + pub mod core { + use super::{root_mod, runtime_types}; + #[doc = " The `Core` runtime api that every Substrate runtime needs to implement."] + pub struct Core; + impl Core { + #[doc = " Returns the version of the runtime."] + pub fn version( + &self, + ) -> ::subxt::runtime_api::Payload< + types::Version, + runtime_types::sp_version::RuntimeVersion, + > { + ::subxt::runtime_api::Payload::new_static( + "Core", + "version", + types::Version {}, + [ + 76u8, 202u8, 17u8, 117u8, 189u8, 237u8, 239u8, 237u8, 151u8, 17u8, + 125u8, 159u8, 218u8, 92u8, 57u8, 238u8, 64u8, 147u8, 40u8, 72u8, 157u8, + 116u8, 37u8, 195u8, 156u8, 27u8, 123u8, 173u8, 178u8, 102u8, 136u8, + 6u8, + ], + ) + } + #[doc = " Execute the given block."] + pub fn execute_block( + &self, + block : runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > >, + ) -> ::subxt::runtime_api::Payload { + ::subxt::runtime_api::Payload::new_static( + "Core", + "execute_block", + types::ExecuteBlock { block }, + [ + 133u8, 135u8, 228u8, 65u8, 106u8, 27u8, 85u8, 158u8, 112u8, 254u8, + 93u8, 26u8, 102u8, 201u8, 118u8, 216u8, 249u8, 247u8, 91u8, 74u8, 56u8, + 208u8, 231u8, 115u8, 131u8, 29u8, 209u8, 6u8, 65u8, 57u8, 214u8, 125u8, + ], + ) + } + #[doc = " Initialize a block with the given header."] + pub fn initialize_block( + &self, + header: runtime_types::sp_runtime::generic::header::Header< + ::core::primitive::u32, + >, + ) -> ::subxt::runtime_api::Payload { + ::subxt::runtime_api::Payload::new_static( + "Core", + "initialize_block", + types::InitializeBlock { header }, + [ + 146u8, 138u8, 72u8, 240u8, 63u8, 96u8, 110u8, 189u8, 77u8, 92u8, 96u8, + 232u8, 41u8, 217u8, 105u8, 148u8, 83u8, 190u8, 152u8, 219u8, 19u8, + 87u8, 163u8, 1u8, 232u8, 25u8, 221u8, 74u8, 224u8, 67u8, 223u8, 34u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Version {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ExecuteBlock { pub block : runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > > , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InitializeBlock { + pub header: + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + } + } + } + pub mod metadata { + use super::{root_mod, runtime_types}; + #[doc = " The `Metadata` api trait that returns metadata for the runtime."] + pub struct Metadata; + impl Metadata { + #[doc = " Returns the metadata of a runtime."] + pub fn metadata( + &self, + ) -> ::subxt::runtime_api::Payload< + types::Metadata, + runtime_types::sp_core::OpaqueMetadata, + > { + ::subxt::runtime_api::Payload::new_static( + "Metadata", + "metadata", + types::Metadata {}, + [ + 231u8, 24u8, 67u8, 152u8, 23u8, 26u8, 188u8, 82u8, 229u8, 6u8, 185u8, + 27u8, 175u8, 68u8, 83u8, 122u8, 69u8, 89u8, 185u8, 74u8, 248u8, 87u8, + 217u8, 124u8, 193u8, 252u8, 199u8, 186u8, 196u8, 179u8, 179u8, 96u8, + ], + ) + } + #[doc = " Returns the metadata at a given version."] + #[doc = ""] + #[doc = " If the given `version` isn't supported, this will return `None`."] + #[doc = " Use [`Self::metadata_versions`] to find out about supported metadata version of the runtime."] + pub fn metadata_at_version( + &self, + version: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::MetadataAtVersion, + ::core::option::Option, + > { + ::subxt::runtime_api::Payload::new_static( + "Metadata", + "metadata_at_version", + types::MetadataAtVersion { version }, + [ + 131u8, 53u8, 212u8, 234u8, 16u8, 25u8, 120u8, 252u8, 153u8, 153u8, + 216u8, 28u8, 54u8, 113u8, 52u8, 236u8, 146u8, 68u8, 142u8, 8u8, 10u8, + 169u8, 131u8, 142u8, 204u8, 38u8, 48u8, 108u8, 134u8, 86u8, 226u8, + 61u8, + ], + ) + } + #[doc = " Returns the supported metadata versions."] + #[doc = ""] + #[doc = " This can be used to call `metadata_at_version`."] + pub fn metadata_versions( + &self, + ) -> ::subxt::runtime_api::Payload< + types::MetadataVersions, + ::std::vec::Vec<::core::primitive::u32>, + > { + ::subxt::runtime_api::Payload::new_static( + "Metadata", + "metadata_versions", + types::MetadataVersions {}, + [ + 23u8, 144u8, 137u8, 91u8, 188u8, 39u8, 231u8, 208u8, 252u8, 218u8, + 224u8, 176u8, 77u8, 32u8, 130u8, 212u8, 223u8, 76u8, 100u8, 190u8, + 82u8, 94u8, 190u8, 8u8, 82u8, 244u8, 225u8, 179u8, 85u8, 176u8, 56u8, + 16u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Metadata {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MetadataAtVersion { + pub version: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MetadataVersions {} + } + } + pub mod block_builder { + use super::{root_mod, runtime_types}; + #[doc = " The `BlockBuilder` api trait that provides the required functionality for building a block."] + pub struct BlockBuilder; + impl BlockBuilder { + #[doc = " Apply the given extrinsic."] + #[doc = ""] + #[doc = " Returns an inclusion outcome which specifies if this extrinsic is included in"] + #[doc = " this block or not."] + pub fn apply_extrinsic( + &self, + extrinsic : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) >, + ) -> ::subxt::runtime_api::Payload< + types::ApplyExtrinsic, + ::core::result::Result< + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + runtime_types::sp_runtime::transaction_validity::TransactionValidityError, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "BlockBuilder", + "apply_extrinsic", + types::ApplyExtrinsic { extrinsic }, + [ + 72u8, 54u8, 139u8, 3u8, 118u8, 136u8, 65u8, 47u8, 6u8, 105u8, 125u8, + 223u8, 160u8, 29u8, 103u8, 74u8, 79u8, 149u8, 48u8, 90u8, 237u8, 2u8, + 97u8, 201u8, 123u8, 34u8, 167u8, 37u8, 187u8, 35u8, 176u8, 97u8, + ], + ) + } + #[doc = " Finish the current block."] + pub fn finalize_block( + &self, + ) -> ::subxt::runtime_api::Payload< + types::FinalizeBlock, + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + > { + ::subxt::runtime_api::Payload::new_static( + "BlockBuilder", + "finalize_block", + types::FinalizeBlock {}, + [ + 244u8, 207u8, 24u8, 33u8, 13u8, 69u8, 9u8, 249u8, 145u8, 143u8, 122u8, + 96u8, 197u8, 55u8, 64u8, 111u8, 238u8, 224u8, 34u8, 201u8, 27u8, 146u8, + 232u8, 99u8, 191u8, 30u8, 114u8, 16u8, 32u8, 220u8, 58u8, 62u8, + ], + ) + } + #[doc = " Generate inherent extrinsics. The inherent data will vary from chain to chain."] pub fn inherent_extrinsics (& self , inherent : runtime_types :: sp_inherents :: InherentData ,) -> :: subxt :: runtime_api :: Payload < types :: InherentExtrinsics , :: std :: vec :: Vec < :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > > >{ + ::subxt::runtime_api::Payload::new_static( + "BlockBuilder", + "inherent_extrinsics", + types::InherentExtrinsics { inherent }, + [ + 254u8, 110u8, 245u8, 201u8, 250u8, 192u8, 27u8, 228u8, 151u8, 213u8, + 166u8, 89u8, 94u8, 81u8, 189u8, 234u8, 64u8, 18u8, 245u8, 80u8, 29u8, + 18u8, 140u8, 129u8, 113u8, 236u8, 135u8, 55u8, 79u8, 159u8, 175u8, + 183u8, + ], + ) + } + #[doc = " Check that the inherents are valid. The inherent data will vary from chain to chain."] + pub fn check_inherents( + &self, + block : runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > >, + data: runtime_types::sp_inherents::InherentData, + ) -> ::subxt::runtime_api::Payload< + types::CheckInherents, + runtime_types::sp_inherents::CheckInherentsResult, + > { + ::subxt::runtime_api::Payload::new_static( + "BlockBuilder", + "check_inherents", + types::CheckInherents { block, data }, + [ + 153u8, 134u8, 1u8, 215u8, 139u8, 11u8, 53u8, 51u8, 210u8, 175u8, 197u8, + 28u8, 38u8, 209u8, 175u8, 247u8, 142u8, 157u8, 50u8, 151u8, 164u8, + 191u8, 181u8, 118u8, 80u8, 97u8, 160u8, 248u8, 110u8, 217u8, 181u8, + 234u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApplyExtrinsic { pub extrinsic : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct FinalizeBlock {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InherentExtrinsics { + pub inherent: runtime_types::sp_inherents::InherentData, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckInherents { pub block : runtime_types :: sp_runtime :: generic :: block :: Block < runtime_types :: sp_runtime :: generic :: header :: Header < :: core :: primitive :: u32 > , :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > > , pub data : runtime_types :: sp_inherents :: InherentData , } + } + } + pub mod nomination_pools_api { + use super::{root_mod, runtime_types}; + #[doc = " Runtime api for accessing information about nomination pools."] + pub struct NominationPoolsApi; + impl NominationPoolsApi { + #[doc = " Returns the pending rewards for the member that the AccountId was given for."] + pub fn pending_rewards( + &self, + who: ::subxt::utils::AccountId32, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "NominationPoolsApi", + "pending_rewards", + types::PendingRewards { who }, + [ + 78u8, 79u8, 88u8, 196u8, 232u8, 243u8, 82u8, 234u8, 115u8, 130u8, + 124u8, 165u8, 217u8, 64u8, 17u8, 48u8, 245u8, 181u8, 130u8, 120u8, + 217u8, 158u8, 146u8, 242u8, 41u8, 206u8, 90u8, 201u8, 244u8, 10u8, + 137u8, 19u8, + ], + ) + } + #[doc = " Returns the equivalent balance of `points` for a given pool."] + pub fn points_to_balance( + &self, + pool_id: ::core::primitive::u32, + points: ::core::primitive::u128, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "NominationPoolsApi", + "points_to_balance", + types::PointsToBalance { pool_id, points }, + [ + 106u8, 191u8, 150u8, 40u8, 231u8, 8u8, 82u8, 104u8, 109u8, 105u8, 94u8, + 109u8, 38u8, 165u8, 199u8, 81u8, 37u8, 181u8, 115u8, 106u8, 52u8, + 192u8, 56u8, 255u8, 145u8, 204u8, 12u8, 241u8, 120u8, 20u8, 188u8, + 12u8, + ], + ) + } + #[doc = " Returns the equivalent points of `new_funds` for a given pool."] + pub fn balance_to_points( + &self, + pool_id: ::core::primitive::u32, + new_funds: ::core::primitive::u128, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "NominationPoolsApi", + "balance_to_points", + types::BalanceToPoints { pool_id, new_funds }, + [ + 5u8, 213u8, 46u8, 194u8, 117u8, 119u8, 10u8, 139u8, 191u8, 76u8, 59u8, + 81u8, 159u8, 38u8, 144u8, 176u8, 63u8, 138u8, 233u8, 138u8, 236u8, + 208u8, 113u8, 230u8, 131u8, 75u8, 67u8, 204u8, 160u8, 100u8, 198u8, + 174u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PendingRewards { + pub who: ::subxt::utils::AccountId32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PointsToBalance { + pub pool_id: ::core::primitive::u32, + pub points: ::core::primitive::u128, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BalanceToPoints { + pub pool_id: ::core::primitive::u32, + pub new_funds: ::core::primitive::u128, + } + } + } + pub mod staking_api { + use super::{root_mod, runtime_types}; + pub struct StakingApi; + impl StakingApi { + #[doc = " Returns the nominations quota for a nominator with a given balance."] + pub fn nominations_quota( + &self, + balance: ::core::primitive::u128, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "StakingApi", + "nominations_quota", + types::NominationsQuota { balance }, + [ + 221u8, 113u8, 50u8, 150u8, 51u8, 181u8, 158u8, 235u8, 25u8, 160u8, + 135u8, 47u8, 196u8, 129u8, 90u8, 137u8, 157u8, 167u8, 212u8, 104u8, + 33u8, 48u8, 83u8, 106u8, 84u8, 220u8, 62u8, 85u8, 25u8, 151u8, 189u8, + 114u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NominationsQuota { + pub balance: ::core::primitive::u128, + } + } + } + pub mod tagged_transaction_queue { + use super::{root_mod, runtime_types}; + #[doc = " The `TaggedTransactionQueue` api trait for interfering with the transaction queue."] + pub struct TaggedTransactionQueue; + impl TaggedTransactionQueue { + #[doc = " Validate the transaction."] + #[doc = ""] + #[doc = " This method is invoked by the transaction pool to learn details about given transaction."] + #[doc = " The implementation should make sure to verify the correctness of the transaction"] + #[doc = " against current state. The given `block_hash` corresponds to the hash of the block"] + #[doc = " that is used as current state."] + #[doc = ""] + #[doc = " Note that this call may be performed by the pool multiple times and transactions"] + #[doc = " might be verified in any possible order."] + pub fn validate_transaction( + &self, + source: runtime_types::sp_runtime::transaction_validity::TransactionSource, + tx : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) >, + block_hash: ::subxt::utils::H256, + ) -> ::subxt::runtime_api::Payload< + types::ValidateTransaction, + ::core::result::Result< + runtime_types::sp_runtime::transaction_validity::ValidTransaction, + runtime_types::sp_runtime::transaction_validity::TransactionValidityError, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "TaggedTransactionQueue", + "validate_transaction", + types::ValidateTransaction { source, tx, block_hash }, + [ + 196u8, 50u8, 90u8, 49u8, 109u8, 251u8, 200u8, 35u8, 23u8, 150u8, 140u8, + 143u8, 232u8, 164u8, 133u8, 89u8, 32u8, 240u8, 115u8, 39u8, 95u8, 70u8, + 162u8, 76u8, 122u8, 73u8, 151u8, 144u8, 234u8, 120u8, 100u8, 29u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidateTransaction { pub source : runtime_types :: sp_runtime :: transaction_validity :: TransactionSource , pub tx : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > , pub block_hash : :: subxt :: utils :: H256 , } + } + } + pub mod offchain_worker_api { + use super::{root_mod, runtime_types}; + #[doc = " The offchain worker api."] + pub struct OffchainWorkerApi; + impl OffchainWorkerApi { + #[doc = " Starts the off-chain task for given block header."] + pub fn offchain_worker( + &self, + header: runtime_types::sp_runtime::generic::header::Header< + ::core::primitive::u32, + >, + ) -> ::subxt::runtime_api::Payload { + ::subxt::runtime_api::Payload::new_static( + "OffchainWorkerApi", + "offchain_worker", + types::OffchainWorker { header }, + [ + 10u8, 135u8, 19u8, 153u8, 33u8, 216u8, 18u8, 242u8, 33u8, 140u8, 4u8, + 223u8, 200u8, 130u8, 103u8, 118u8, 137u8, 24u8, 19u8, 127u8, 161u8, + 29u8, 184u8, 111u8, 222u8, 111u8, 253u8, 73u8, 45u8, 31u8, 79u8, 60u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OffchainWorker { + pub header: + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + } + } + } + pub mod parachain_host { + use super::{root_mod, runtime_types}; + #[doc = " The API for querying the state of parachains on-chain."] + pub struct ParachainHost; + impl ParachainHost { + #[doc = " Get the current validators."] + pub fn validators( + &self, + ) -> ::subxt::runtime_api::Payload< + types::Validators, + ::std::vec::Vec, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "validators", + types::Validators {}, + [ + 56u8, 64u8, 189u8, 234u8, 85u8, 75u8, 2u8, 212u8, 192u8, 95u8, 230u8, + 201u8, 98u8, 220u8, 78u8, 20u8, 101u8, 16u8, 153u8, 192u8, 133u8, + 179u8, 217u8, 98u8, 247u8, 143u8, 104u8, 147u8, 47u8, 255u8, 111u8, + 72u8, + ], + ) + } + #[doc = " Returns the validator groups and rotation info localized based on the hypothetical child"] + #[doc = " of a block whose state this is invoked on. Note that `now` in the `GroupRotationInfo`"] + #[doc = " should be the successor of the number of the block."] + pub fn validator_groups( + &self, + ) -> ::subxt::runtime_api::Payload< + types::ValidatorGroups, + ( + ::std::vec::Vec< + ::std::vec::Vec, + >, + runtime_types::polkadot_primitives::v6::GroupRotationInfo< + ::core::primitive::u32, + >, + ), + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "validator_groups", + types::ValidatorGroups {}, + [ + 89u8, 221u8, 163u8, 73u8, 194u8, 196u8, 136u8, 242u8, 249u8, 182u8, + 239u8, 251u8, 157u8, 211u8, 41u8, 58u8, 242u8, 242u8, 177u8, 145u8, + 107u8, 167u8, 193u8, 204u8, 226u8, 228u8, 82u8, 249u8, 187u8, 211u8, + 37u8, 124u8, + ], + ) + } + #[doc = " Yields information on all availability cores as relevant to the child block."] + #[doc = " Cores are either free or occupied. Free cores can have paras assigned to them."] + pub fn availability_cores( + &self, + ) -> ::subxt::runtime_api::Payload< + types::AvailabilityCores, + ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::CoreState< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "availability_cores", + types::AvailabilityCores {}, + [ + 238u8, 20u8, 188u8, 206u8, 26u8, 17u8, 72u8, 123u8, 33u8, 54u8, 66u8, + 13u8, 244u8, 246u8, 228u8, 177u8, 176u8, 251u8, 82u8, 12u8, 170u8, + 29u8, 39u8, 158u8, 16u8, 23u8, 253u8, 169u8, 117u8, 12u8, 0u8, 65u8, + ], + ) + } + #[doc = " Yields the persisted validation data for the given `ParaId` along with an assumption that"] + #[doc = " should be used if the para currently occupies a core."] + #[doc = ""] + #[doc = " Returns `None` if either the para is not registered or the assumption is `Freed`"] + #[doc = " and the para already occupies a core."] + pub fn persisted_validation_data( + &self, + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + assumption: runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption, + ) -> ::subxt::runtime_api::Payload< + types::PersistedValidationData, + ::core::option::Option< + runtime_types::polkadot_primitives::v6::PersistedValidationData< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "persisted_validation_data", + types::PersistedValidationData { para_id, assumption }, + [ + 119u8, 217u8, 57u8, 241u8, 70u8, 56u8, 102u8, 20u8, 98u8, 60u8, 47u8, + 78u8, 124u8, 81u8, 158u8, 254u8, 30u8, 14u8, 223u8, 195u8, 95u8, 179u8, + 228u8, 53u8, 149u8, 224u8, 62u8, 8u8, 27u8, 3u8, 100u8, 37u8, + ], + ) + } + #[doc = " Returns the persisted validation data for the given `ParaId` along with the corresponding"] + #[doc = " validation code hash. Instead of accepting assumption about the para, matches the validation"] + #[doc = " data hash against an expected one and yields `None` if they're not equal."] pub fn assumed_validation_data (& self , para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , expected_persisted_validation_data_hash : :: subxt :: utils :: H256 ,) -> :: subxt :: runtime_api :: Payload < types :: AssumedValidationData , :: core :: option :: Option < (runtime_types :: polkadot_primitives :: v6 :: PersistedValidationData < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > >{ + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "assumed_validation_data", + types::AssumedValidationData { + para_id, + expected_persisted_validation_data_hash, + }, + [ + 37u8, 162u8, 100u8, 72u8, 19u8, 135u8, 13u8, 211u8, 51u8, 153u8, 201u8, + 97u8, 61u8, 193u8, 167u8, 118u8, 60u8, 242u8, 228u8, 81u8, 165u8, 62u8, + 191u8, 206u8, 157u8, 232u8, 62u8, 55u8, 240u8, 236u8, 76u8, 204u8, + ], + ) + } + #[doc = " Checks if the given validation outputs pass the acceptance criteria."] + pub fn check_validation_outputs( + &self, + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + outputs: runtime_types::polkadot_primitives::v6::CandidateCommitments< + ::core::primitive::u32, + >, + ) -> ::subxt::runtime_api::Payload< + types::CheckValidationOutputs, + ::core::primitive::bool, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "check_validation_outputs", + types::CheckValidationOutputs { para_id, outputs }, + [ + 128u8, 33u8, 213u8, 120u8, 39u8, 18u8, 135u8, 248u8, 196u8, 43u8, 0u8, + 143u8, 198u8, 64u8, 93u8, 133u8, 248u8, 206u8, 103u8, 137u8, 168u8, + 255u8, 144u8, 29u8, 121u8, 246u8, 179u8, 187u8, 83u8, 53u8, 142u8, + 82u8, + ], + ) + } + #[doc = " Returns the session index expected at a child of the block."] + #[doc = ""] + #[doc = " This can be used to instantiate a `SigningContext`."] + pub fn session_index_for_child( + &self, + ) -> ::subxt::runtime_api::Payload< + types::SessionIndexForChild, + ::core::primitive::u32, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "session_index_for_child", + types::SessionIndexForChild {}, + [ + 135u8, 9u8, 1u8, 244u8, 174u8, 151u8, 247u8, 75u8, 226u8, 216u8, 53u8, + 78u8, 26u8, 109u8, 44u8, 77u8, 208u8, 151u8, 94u8, 212u8, 115u8, 43u8, + 118u8, 22u8, 140u8, 117u8, 15u8, 224u8, 163u8, 252u8, 90u8, 255u8, + ], + ) + } + #[doc = " Fetch the validation code used by a para, making the given `OccupiedCoreAssumption`."] + #[doc = ""] + #[doc = " Returns `None` if either the para is not registered or the assumption is `Freed`"] + #[doc = " and the para already occupies a core."] + pub fn validation_code( + &self, + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + assumption: runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption, + ) -> ::subxt::runtime_api::Payload< + types::ValidationCode, + ::core::option::Option< + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "validation_code", + types::ValidationCode { para_id, assumption }, + [ + 231u8, 15u8, 35u8, 159u8, 96u8, 23u8, 246u8, 125u8, 78u8, 79u8, 158u8, + 116u8, 36u8, 199u8, 53u8, 61u8, 242u8, 136u8, 227u8, 174u8, 136u8, + 71u8, 143u8, 47u8, 216u8, 21u8, 225u8, 117u8, 50u8, 104u8, 161u8, + 232u8, + ], + ) + } + #[doc = " Get the receipt of a candidate pending availability. This returns `Some` for any paras"] + #[doc = " assigned to occupied cores in `availability_cores` and `None` otherwise."] + pub fn candidate_pending_availability( + &self, + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::runtime_api::Payload< + types::CandidatePendingAvailability, + ::core::option::Option< + runtime_types::polkadot_primitives::v6::CommittedCandidateReceipt< + ::subxt::utils::H256, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "candidate_pending_availability", + types::CandidatePendingAvailability { para_id }, + [ + 139u8, 185u8, 205u8, 255u8, 131u8, 180u8, 248u8, 168u8, 25u8, 124u8, + 105u8, 141u8, 59u8, 118u8, 109u8, 136u8, 103u8, 200u8, 5u8, 218u8, + 72u8, 55u8, 114u8, 89u8, 207u8, 140u8, 51u8, 86u8, 167u8, 41u8, 221u8, + 86u8, + ], + ) + } + #[doc = " Get a vector of events concerning candidates that occurred within a block."] + pub fn candidate_events( + &self, + ) -> ::subxt::runtime_api::Payload< + types::CandidateEvents, + ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::CandidateEvent< + ::subxt::utils::H256, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "candidate_events", + types::CandidateEvents {}, + [ + 101u8, 145u8, 200u8, 182u8, 213u8, 111u8, 180u8, 73u8, 14u8, 107u8, + 110u8, 145u8, 122u8, 35u8, 223u8, 219u8, 66u8, 101u8, 130u8, 255u8, + 44u8, 46u8, 50u8, 61u8, 104u8, 237u8, 34u8, 16u8, 179u8, 214u8, 115u8, + 7u8, + ], + ) + } + #[doc = " Get all the pending inbound messages in the downward message queue for a para."] + pub fn dmq_contents( + &self, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::runtime_api::Payload< + types::DmqContents, + ::std::vec::Vec< + runtime_types::polkadot_core_primitives::InboundDownwardMessage< + ::core::primitive::u32, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "dmq_contents", + types::DmqContents { recipient }, + [ + 189u8, 11u8, 38u8, 223u8, 11u8, 108u8, 201u8, 122u8, 207u8, 7u8, 74u8, + 14u8, 247u8, 226u8, 108u8, 21u8, 213u8, 55u8, 8u8, 137u8, 211u8, 98u8, + 19u8, 11u8, 212u8, 218u8, 209u8, 63u8, 51u8, 252u8, 86u8, 53u8, + ], + ) + } + #[doc = " Get the contents of all channels addressed to the given recipient. Channels that have no"] + #[doc = " messages in them are also included."] + pub fn inbound_hrmp_channels_contents( + &self, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::runtime_api::Payload< + types::InboundHrmpChannelsContents, + ::subxt::utils::KeyedVec< + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::std::vec::Vec< + runtime_types::polkadot_core_primitives::InboundHrmpMessage< + ::core::primitive::u32, + >, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "inbound_hrmp_channels_contents", + types::InboundHrmpChannelsContents { recipient }, + [ + 132u8, 29u8, 42u8, 39u8, 72u8, 243u8, 110u8, 43u8, 110u8, 9u8, 21u8, + 18u8, 91u8, 40u8, 231u8, 223u8, 239u8, 16u8, 110u8, 54u8, 108u8, 234u8, + 140u8, 205u8, 80u8, 221u8, 115u8, 48u8, 197u8, 248u8, 6u8, 25u8, + ], + ) + } + #[doc = " Get the validation code from its hash."] + pub fn validation_code_by_hash( + &self, + hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash, + ) -> ::subxt::runtime_api::Payload< + types::ValidationCodeByHash, + ::core::option::Option< + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "validation_code_by_hash", + types::ValidationCodeByHash { hash }, + [ + 219u8, 250u8, 130u8, 89u8, 178u8, 234u8, 255u8, 33u8, 90u8, 78u8, 58u8, + 124u8, 141u8, 145u8, 156u8, 81u8, 184u8, 52u8, 65u8, 112u8, 35u8, + 153u8, 222u8, 23u8, 226u8, 53u8, 164u8, 22u8, 236u8, 103u8, 197u8, + 236u8, + ], + ) + } + #[doc = " Scrape dispute relevant from on-chain, backing votes and resolved disputes."] + pub fn on_chain_votes( + &self, + ) -> ::subxt::runtime_api::Payload< + types::OnChainVotes, + ::core::option::Option< + runtime_types::polkadot_primitives::v6::ScrapedOnChainVotes< + ::subxt::utils::H256, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "on_chain_votes", + types::OnChainVotes {}, + [ + 8u8, 253u8, 248u8, 13u8, 221u8, 83u8, 199u8, 65u8, 180u8, 193u8, 232u8, + 179u8, 56u8, 186u8, 72u8, 128u8, 27u8, 168u8, 177u8, 82u8, 194u8, + 139u8, 78u8, 32u8, 147u8, 67u8, 27u8, 252u8, 118u8, 60u8, 74u8, 31u8, + ], + ) + } + #[doc = " Get the session info for the given session, if stored."] + #[doc = ""] + #[doc = " NOTE: This function is only available since parachain host version 2."] + pub fn session_info( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::SessionInfo, + ::core::option::Option, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "session_info", + types::SessionInfo { index }, + [ + 77u8, 115u8, 39u8, 190u8, 116u8, 250u8, 66u8, 128u8, 168u8, 24u8, + 120u8, 153u8, 111u8, 125u8, 249u8, 115u8, 112u8, 169u8, 208u8, 31u8, + 95u8, 234u8, 14u8, 242u8, 14u8, 190u8, 120u8, 171u8, 202u8, 67u8, 81u8, + 237u8, + ], + ) + } + #[doc = " Submits a PVF pre-checking statement into the transaction pool."] + #[doc = ""] + #[doc = " NOTE: This function is only available since parachain host version 2."] + pub fn submit_pvf_check_statement( + &self, + stmt: runtime_types::polkadot_primitives::v6::PvfCheckStatement, + signature: runtime_types::polkadot_primitives::v6::validator_app::Signature, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "submit_pvf_check_statement", + types::SubmitPvfCheckStatement { stmt, signature }, + [ + 91u8, 138u8, 75u8, 79u8, 171u8, 224u8, 206u8, 152u8, 202u8, 131u8, + 251u8, 200u8, 75u8, 99u8, 49u8, 192u8, 175u8, 212u8, 139u8, 236u8, + 188u8, 243u8, 82u8, 62u8, 190u8, 79u8, 113u8, 23u8, 222u8, 29u8, 255u8, + 196u8, + ], + ) + } + #[doc = " Returns code hashes of PVFs that require pre-checking by validators in the active set."] + #[doc = ""] + #[doc = " NOTE: This function is only available since parachain host version 2."] pub fn pvfs_require_precheck (& self ,) -> :: subxt :: runtime_api :: Payload < types :: PvfsRequirePrecheck , :: std :: vec :: Vec < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > >{ + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "pvfs_require_precheck", + types::PvfsRequirePrecheck {}, + [ + 251u8, 162u8, 214u8, 223u8, 70u8, 67u8, 170u8, 19u8, 191u8, 37u8, + 233u8, 249u8, 89u8, 28u8, 76u8, 213u8, 194u8, 28u8, 15u8, 199u8, 167u8, + 23u8, 139u8, 220u8, 218u8, 223u8, 115u8, 4u8, 95u8, 24u8, 32u8, 29u8, + ], + ) + } + #[doc = " Fetch the hash of the validation code used by a para, making the given `OccupiedCoreAssumption`."] + #[doc = ""] + #[doc = " NOTE: This function is only available since parachain host version 2."] pub fn validation_code_hash (& self , para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , assumption : runtime_types :: polkadot_primitives :: v6 :: OccupiedCoreAssumption ,) -> :: subxt :: runtime_api :: Payload < types :: ValidationCodeHash , :: core :: option :: Option < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > >{ + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "validation_code_hash", + types::ValidationCodeHash { para_id, assumption }, + [ + 226u8, 142u8, 121u8, 182u8, 206u8, 180u8, 8u8, 19u8, 237u8, 84u8, + 121u8, 1u8, 126u8, 211u8, 241u8, 133u8, 195u8, 182u8, 116u8, 128u8, + 58u8, 81u8, 12u8, 68u8, 79u8, 212u8, 108u8, 178u8, 237u8, 25u8, 203u8, + 135u8, + ], + ) + } + #[doc = " Returns all onchain disputes."] + pub fn disputes( + &self, + ) -> ::subxt::runtime_api::Payload< + types::Disputes, + ::std::vec::Vec<( + ::core::primitive::u32, + runtime_types::polkadot_core_primitives::CandidateHash, + runtime_types::polkadot_primitives::v6::DisputeState< + ::core::primitive::u32, + >, + )>, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "disputes", + types::Disputes {}, + [ + 183u8, 88u8, 143u8, 44u8, 138u8, 79u8, 65u8, 198u8, 42u8, 109u8, 235u8, + 152u8, 3u8, 13u8, 106u8, 189u8, 197u8, 126u8, 44u8, 161u8, 67u8, 49u8, + 163u8, 193u8, 248u8, 207u8, 1u8, 108u8, 188u8, 152u8, 87u8, 125u8, + ], + ) + } + #[doc = " Returns execution parameters for the session."] + pub fn session_executor_params( + &self, + session_index: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::SessionExecutorParams, + ::core::option::Option< + runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "session_executor_params", + types::SessionExecutorParams { session_index }, + [ + 207u8, 66u8, 10u8, 104u8, 146u8, 219u8, 75u8, 157u8, 93u8, 224u8, + 215u8, 13u8, 255u8, 62u8, 134u8, 168u8, 185u8, 101u8, 39u8, 78u8, 98u8, + 44u8, 129u8, 38u8, 48u8, 244u8, 103u8, 205u8, 66u8, 121u8, 18u8, 247u8, + ], + ) + } + #[doc = " Returns a list of validators that lost a past session dispute and need to be slashed."] + #[doc = " NOTE: This function is only available since parachain host version 5."] + pub fn unapplied_slashes( + &self, + ) -> ::subxt::runtime_api::Payload< + types::UnappliedSlashes, + ::std::vec::Vec<( + ::core::primitive::u32, + runtime_types::polkadot_core_primitives::CandidateHash, + runtime_types::polkadot_primitives::v6::slashing::PendingSlashes, + )>, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "unapplied_slashes", + types::UnappliedSlashes {}, + [ + 205u8, 16u8, 246u8, 48u8, 72u8, 160u8, 7u8, 136u8, 225u8, 2u8, 209u8, + 254u8, 255u8, 115u8, 49u8, 214u8, 131u8, 22u8, 210u8, 9u8, 111u8, + 170u8, 109u8, 247u8, 110u8, 42u8, 55u8, 68u8, 85u8, 37u8, 250u8, 4u8, + ], + ) + } + #[doc = " Returns a merkle proof of a validator session key."] + #[doc = " NOTE: This function is only available since parachain host version 5."] + pub fn key_ownership_proof( + &self, + validator_id: runtime_types::polkadot_primitives::v6::validator_app::Public, + ) -> ::subxt::runtime_api::Payload< + types::KeyOwnershipProof, + ::core::option::Option< + runtime_types::polkadot_primitives::v6::slashing::OpaqueKeyOwnershipProof, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "key_ownership_proof", + types::KeyOwnershipProof { validator_id }, + [ + 194u8, 237u8, 59u8, 4u8, 194u8, 235u8, 38u8, 58u8, 58u8, 221u8, 189u8, + 69u8, 254u8, 2u8, 242u8, 200u8, 86u8, 4u8, 138u8, 184u8, 198u8, 58u8, + 200u8, 34u8, 243u8, 91u8, 122u8, 35u8, 18u8, 83u8, 152u8, 191u8, + ], + ) + } + #[doc = " Submit an unsigned extrinsic to slash validators who lost a dispute about"] + #[doc = " a candidate of a past session."] + #[doc = " NOTE: This function is only available since parachain host version 5."] + pub fn submit_report_dispute_lost( + &self, + dispute_proof: runtime_types::polkadot_primitives::v6::slashing::DisputeProof, + key_ownership_proof : runtime_types :: polkadot_primitives :: v6 :: slashing :: OpaqueKeyOwnershipProof, + ) -> ::subxt::runtime_api::Payload< + types::SubmitReportDisputeLost, + ::core::option::Option<()>, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "submit_report_dispute_lost", + types::SubmitReportDisputeLost { dispute_proof, key_ownership_proof }, + [ + 98u8, 63u8, 249u8, 13u8, 163u8, 161u8, 43u8, 96u8, 75u8, 65u8, 3u8, + 116u8, 8u8, 149u8, 122u8, 190u8, 179u8, 108u8, 17u8, 22u8, 59u8, 134u8, + 43u8, 31u8, 13u8, 254u8, 21u8, 112u8, 129u8, 16u8, 5u8, 180u8, + ], + ) + } + #[doc = " Get the minimum number of backing votes for a parachain candidate."] + #[doc = " This is a staging method! Do not use on production runtimes!"] + pub fn minimum_backing_votes( + &self, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "minimum_backing_votes", + types::MinimumBackingVotes {}, + [ + 222u8, 75u8, 167u8, 245u8, 183u8, 148u8, 14u8, 92u8, 54u8, 164u8, + 239u8, 183u8, 215u8, 170u8, 133u8, 71u8, 19u8, 131u8, 104u8, 28u8, + 219u8, 237u8, 178u8, 34u8, 190u8, 151u8, 48u8, 146u8, 78u8, 17u8, 66u8, + 146u8, + ], + ) + } + #[doc = " Returns the state of parachain backing for a given para."] + pub fn para_backing_state( + &self, + _: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::runtime_api::Payload< + types::ParaBackingState, + ::core::option::Option< + runtime_types::polkadot_primitives::v6::async_backing::BackingState< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "para_backing_state", + types::ParaBackingState { id }, + [ + 26u8, 210u8, 45u8, 233u8, 133u8, 180u8, 12u8, 156u8, 59u8, 249u8, 10u8, + 38u8, 32u8, 28u8, 25u8, 30u8, 83u8, 33u8, 142u8, 21u8, 12u8, 151u8, + 182u8, 128u8, 131u8, 192u8, 240u8, 73u8, 119u8, 64u8, 254u8, 139u8, + ], + ) + } + #[doc = " Returns candidate's acceptance limitations for asynchronous backing for a relay parent."] + pub fn async_backing_params( + &self, + ) -> ::subxt::runtime_api::Payload< + types::AsyncBackingParams, + runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "async_backing_params", + types::AsyncBackingParams {}, + [ + 150u8, 157u8, 193u8, 44u8, 160u8, 18u8, 122u8, 188u8, 157u8, 84u8, + 202u8, 253u8, 55u8, 113u8, 188u8, 169u8, 216u8, 250u8, 145u8, 81u8, + 73u8, 194u8, 234u8, 237u8, 101u8, 250u8, 35u8, 52u8, 205u8, 38u8, 22u8, + 238u8, + ], + ) + } + #[doc = " Returns a list of all disabled validators at the given block."] + pub fn disabled_validators( + &self, + ) -> ::subxt::runtime_api::Payload< + types::DisabledValidators, + ::std::vec::Vec, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "disabled_validators", + types::DisabledValidators {}, + [ + 121u8, 124u8, 228u8, 59u8, 10u8, 148u8, 131u8, 130u8, 221u8, 33u8, + 226u8, 13u8, 223u8, 67u8, 145u8, 39u8, 205u8, 237u8, 178u8, 249u8, + 126u8, 152u8, 65u8, 131u8, 111u8, 113u8, 194u8, 111u8, 37u8, 124u8, + 164u8, 212u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Validators {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidatorGroups {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AvailabilityCores {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PersistedValidationData { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub assumption: runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssumedValidationData { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub expected_persisted_validation_data_hash: ::subxt::utils::H256, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckValidationOutputs { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub outputs: runtime_types::polkadot_primitives::v6::CandidateCommitments< + ::core::primitive::u32, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SessionIndexForChild {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidationCode { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub assumption: runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidatePendingAvailability { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidateEvents {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DmqContents { + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InboundHrmpChannelsContents { + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidationCodeByHash { pub hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OnChainVotes {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SessionInfo { + pub index: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubmitPvfCheckStatement { + pub stmt: runtime_types::polkadot_primitives::v6::PvfCheckStatement, + pub signature: runtime_types::polkadot_primitives::v6::validator_app::Signature, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PvfsRequirePrecheck {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidationCodeHash { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub assumption: runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Disputes {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SessionExecutorParams { + pub session_index: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnappliedSlashes {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct KeyOwnershipProof { + pub validator_id: runtime_types::polkadot_primitives::v6::validator_app::Public, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubmitReportDisputeLost { + pub dispute_proof: + runtime_types::polkadot_primitives::v6::slashing::DisputeProof, + pub key_ownership_proof: + runtime_types::polkadot_primitives::v6::slashing::OpaqueKeyOwnershipProof, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MinimumBackingVotes {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ParaBackingState { + pub _: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AsyncBackingParams {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisabledValidators {} + } + } + pub mod beefy_api { + use super::{root_mod, runtime_types}; + #[doc = " API necessary for BEEFY voters."] + pub struct BeefyApi; + impl BeefyApi { + #[doc = " Return the block number where BEEFY consensus is enabled/started"] + pub fn beefy_genesis( + &self, + ) -> ::subxt::runtime_api::Payload< + types::BeefyGenesis, + ::core::option::Option<::core::primitive::u32>, + > { + ::subxt::runtime_api::Payload::new_static( + "BeefyApi", + "beefy_genesis", + types::BeefyGenesis {}, + [ + 246u8, 129u8, 31u8, 77u8, 24u8, 47u8, 5u8, 156u8, 64u8, 222u8, 180u8, + 78u8, 110u8, 77u8, 218u8, 149u8, 210u8, 151u8, 164u8, 220u8, 165u8, + 119u8, 116u8, 220u8, 20u8, 122u8, 37u8, 176u8, 75u8, 218u8, 194u8, + 244u8, + ], + ) + } + #[doc = " Return the current active BEEFY validator set"] + pub fn validator_set( + &self, + ) -> ::subxt::runtime_api::Payload< + types::ValidatorSet, + ::core::option::Option< + runtime_types::sp_consensus_beefy::ValidatorSet< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "BeefyApi", + "validator_set", + types::ValidatorSet {}, + [ + 26u8, 174u8, 151u8, 215u8, 199u8, 11u8, 123u8, 18u8, 209u8, 187u8, + 70u8, 245u8, 59u8, 23u8, 11u8, 26u8, 167u8, 202u8, 83u8, 213u8, 99u8, + 74u8, 143u8, 140u8, 34u8, 9u8, 225u8, 217u8, 244u8, 169u8, 30u8, 217u8, + ], + ) + } + #[doc = " Submits an unsigned extrinsic to report an equivocation. The caller"] + #[doc = " must provide the equivocation proof and a key ownership proof"] + #[doc = " (should be obtained using `generate_key_ownership_proof`). The"] + #[doc = " extrinsic will be unsigned and should only be accepted for local"] + #[doc = " authorship (not to be broadcast to the network). This method returns"] + #[doc = " `None` when creation of the extrinsic fails, e.g. if equivocation"] + #[doc = " reporting is disabled for the given runtime (i.e. this method is"] + #[doc = " hardcoded to return `None`). Only useful in an offchain context."] + pub fn submit_report_equivocation_unsigned_extrinsic( + &self, + equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + key_owner_proof: runtime_types::sp_consensus_beefy::OpaqueKeyOwnershipProof, + ) -> ::subxt::runtime_api::Payload< + types::SubmitReportEquivocationUnsignedExtrinsic, + ::core::option::Option<()>, + > { + ::subxt::runtime_api::Payload::new_static( + "BeefyApi", + "submit_report_equivocation_unsigned_extrinsic", + types::SubmitReportEquivocationUnsignedExtrinsic { + equivocation_proof, + key_owner_proof, + }, + [ + 20u8, 162u8, 43u8, 173u8, 248u8, 140u8, 57u8, 151u8, 189u8, 96u8, 68u8, + 130u8, 14u8, 162u8, 230u8, 61u8, 169u8, 189u8, 239u8, 71u8, 121u8, + 137u8, 141u8, 206u8, 91u8, 164u8, 175u8, 93u8, 33u8, 161u8, 166u8, + 192u8, + ], + ) + } + #[doc = " Generates a proof of key ownership for the given authority in the"] + #[doc = " given set. An example usage of this module is coupled with the"] + #[doc = " session historical module to prove that a given authority key is"] + #[doc = " tied to a given staking identity during a specific session. Proofs"] + #[doc = " of key ownership are necessary for submitting equivocation reports."] + #[doc = " NOTE: even though the API takes a `set_id` as parameter the current"] + #[doc = " implementations ignores this parameter and instead relies on this"] + #[doc = " method being called at the correct block height, i.e. any point at"] + #[doc = " which the given set id is live on-chain. Future implementations will"] + #[doc = " instead use indexed data through an offchain worker, not requiring"] + #[doc = " older states to be available."] + pub fn generate_key_ownership_proof( + &self, + set_id: ::core::primitive::u64, + authority_id: runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + ) -> ::subxt::runtime_api::Payload< + types::GenerateKeyOwnershipProof, + ::core::option::Option< + runtime_types::sp_consensus_beefy::OpaqueKeyOwnershipProof, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "BeefyApi", + "generate_key_ownership_proof", + types::GenerateKeyOwnershipProof { set_id, authority_id }, + [ + 244u8, 175u8, 3u8, 235u8, 173u8, 34u8, 210u8, 81u8, 41u8, 5u8, 85u8, + 179u8, 53u8, 153u8, 16u8, 62u8, 103u8, 71u8, 180u8, 11u8, 165u8, 90u8, + 186u8, 156u8, 118u8, 114u8, 22u8, 108u8, 149u8, 9u8, 232u8, 174u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BeefyGenesis {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidatorSet {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubmitReportEquivocationUnsignedExtrinsic { + pub equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + pub key_owner_proof: runtime_types::sp_consensus_beefy::OpaqueKeyOwnershipProof, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GenerateKeyOwnershipProof { + pub set_id: ::core::primitive::u64, + pub authority_id: runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + } + } + } + pub mod mmr_api { + use super::{root_mod, runtime_types}; + #[doc = " API to interact with MMR pallet."] + pub struct MmrApi; + impl MmrApi { + #[doc = " Return the on-chain MMR root hash."] + pub fn mmr_root( + &self, + ) -> ::subxt::runtime_api::Payload< + types::MmrRoot, + ::core::result::Result< + ::subxt::utils::H256, + runtime_types::sp_mmr_primitives::Error, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "MmrApi", + "mmr_root", + types::MmrRoot {}, + [ + 148u8, 252u8, 77u8, 233u8, 236u8, 8u8, 119u8, 105u8, 207u8, 161u8, + 109u8, 158u8, 211u8, 64u8, 67u8, 216u8, 242u8, 52u8, 122u8, 4u8, 83u8, + 113u8, 54u8, 77u8, 165u8, 89u8, 61u8, 159u8, 98u8, 51u8, 45u8, 90u8, + ], + ) + } + #[doc = " Return the number of MMR blocks in the chain."] + pub fn mmr_leaf_count( + &self, + ) -> ::subxt::runtime_api::Payload< + types::MmrLeafCount, + ::core::result::Result< + ::core::primitive::u64, + runtime_types::sp_mmr_primitives::Error, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "MmrApi", + "mmr_leaf_count", + types::MmrLeafCount {}, + [ + 165u8, 141u8, 127u8, 184u8, 27u8, 185u8, 251u8, 25u8, 44u8, 93u8, + 239u8, 158u8, 104u8, 91u8, 22u8, 87u8, 101u8, 166u8, 90u8, 90u8, 45u8, + 105u8, 254u8, 136u8, 233u8, 121u8, 9u8, 216u8, 179u8, 55u8, 126u8, + 158u8, + ], + ) + } + #[doc = " Generate MMR proof for a series of block numbers. If `best_known_block_number = Some(n)`,"] + #[doc = " use historical MMR state at given block height `n`. Else, use current MMR state."] + pub fn generate_proof( + &self, + block_numbers: ::std::vec::Vec<::core::primitive::u32>, + best_known_block_number: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::runtime_api::Payload< + types::GenerateProof, + ::core::result::Result< + ( + ::std::vec::Vec, + runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>, + ), + runtime_types::sp_mmr_primitives::Error, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "MmrApi", + "generate_proof", + types::GenerateProof { block_numbers, best_known_block_number }, + [ + 187u8, 175u8, 153u8, 82u8, 245u8, 180u8, 126u8, 156u8, 67u8, 89u8, + 253u8, 29u8, 54u8, 168u8, 196u8, 144u8, 24u8, 123u8, 154u8, 69u8, + 245u8, 90u8, 110u8, 239u8, 15u8, 125u8, 204u8, 148u8, 71u8, 209u8, + 58u8, 32u8, + ], + ) + } + #[doc = " Verify MMR proof against on-chain MMR for a batch of leaves."] + #[doc = ""] + #[doc = " Note this function will use on-chain MMR root hash and check if the proof matches the hash."] + #[doc = " Note, the leaves should be sorted such that corresponding leaves and leaf indices have the"] + #[doc = " same position in both the `leaves` vector and the `leaf_indices` vector contained in the [Proof]"] + pub fn verify_proof( + &self, + leaves: ::std::vec::Vec, + proof: runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>, + ) -> ::subxt::runtime_api::Payload< + types::VerifyProof, + ::core::result::Result<(), runtime_types::sp_mmr_primitives::Error>, + > { + ::subxt::runtime_api::Payload::new_static( + "MmrApi", + "verify_proof", + types::VerifyProof { leaves, proof }, + [ + 236u8, 54u8, 135u8, 196u8, 161u8, 247u8, 183u8, 78u8, 153u8, 69u8, + 59u8, 78u8, 62u8, 20u8, 187u8, 47u8, 77u8, 209u8, 209u8, 224u8, 127u8, + 85u8, 122u8, 33u8, 123u8, 128u8, 92u8, 251u8, 110u8, 233u8, 50u8, + 160u8, + ], + ) + } + #[doc = " Verify MMR proof against given root hash for a batch of leaves."] + #[doc = ""] + #[doc = " Note this function does not require any on-chain storage - the"] + #[doc = " proof is verified against given MMR root hash."] + #[doc = ""] + #[doc = " Note, the leaves should be sorted such that corresponding leaves and leaf indices have the"] + #[doc = " same position in both the `leaves` vector and the `leaf_indices` vector contained in the [Proof]"] + pub fn verify_proof_stateless( + &self, + root: ::subxt::utils::H256, + leaves: ::std::vec::Vec, + proof: runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>, + ) -> ::subxt::runtime_api::Payload< + types::VerifyProofStateless, + ::core::result::Result<(), runtime_types::sp_mmr_primitives::Error>, + > { + ::subxt::runtime_api::Payload::new_static( + "MmrApi", + "verify_proof_stateless", + types::VerifyProofStateless { root, leaves, proof }, + [ + 163u8, 232u8, 190u8, 65u8, 135u8, 136u8, 50u8, 60u8, 137u8, 37u8, + 192u8, 24u8, 137u8, 144u8, 165u8, 131u8, 49u8, 88u8, 15u8, 139u8, 83u8, + 152u8, 162u8, 148u8, 22u8, 74u8, 82u8, 25u8, 183u8, 83u8, 212u8, 56u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MmrRoot {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MmrLeafCount {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GenerateProof { + pub block_numbers: ::std::vec::Vec<::core::primitive::u32>, + pub best_known_block_number: ::core::option::Option<::core::primitive::u32>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VerifyProof { + pub leaves: + ::std::vec::Vec, + pub proof: runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VerifyProofStateless { + pub root: ::subxt::utils::H256, + pub leaves: + ::std::vec::Vec, + pub proof: runtime_types::sp_mmr_primitives::Proof<::subxt::utils::H256>, + } + } + } + pub mod beefy_mmr_api { + use super::{root_mod, runtime_types}; + #[doc = " API useful for BEEFY light clients."] + pub struct BeefyMmrApi; + impl BeefyMmrApi { + #[doc = " Return the currently active BEEFY authority set proof."] + pub fn authority_set_proof( + &self, + ) -> ::subxt::runtime_api::Payload< + types::AuthoritySetProof, + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, + > { + ::subxt::runtime_api::Payload::new_static( + "BeefyMmrApi", + "authority_set_proof", + types::AuthoritySetProof {}, + [ + 199u8, 220u8, 251u8, 219u8, 216u8, 5u8, 181u8, 172u8, 191u8, 209u8, + 123u8, 25u8, 151u8, 129u8, 166u8, 21u8, 107u8, 22u8, 74u8, 144u8, + 202u8, 6u8, 254u8, 197u8, 148u8, 227u8, 131u8, 244u8, 254u8, 193u8, + 212u8, 97u8, + ], + ) + } + #[doc = " Return the next/queued BEEFY authority set proof."] + pub fn next_authority_set_proof( + &self, + ) -> ::subxt::runtime_api::Payload< + types::NextAuthoritySetProof, + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, + > { + ::subxt::runtime_api::Payload::new_static( + "BeefyMmrApi", + "next_authority_set_proof", + types::NextAuthoritySetProof {}, + [ + 66u8, 217u8, 48u8, 108u8, 211u8, 187u8, 61u8, 85u8, 210u8, 59u8, 128u8, + 159u8, 34u8, 151u8, 154u8, 140u8, 13u8, 244u8, 31u8, 216u8, 67u8, 67u8, + 171u8, 112u8, 51u8, 145u8, 4u8, 22u8, 252u8, 242u8, 192u8, 130u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AuthoritySetProof {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NextAuthoritySetProof {} + } + } + pub mod grandpa_api { + use super::{root_mod, runtime_types}; + #[doc = " APIs for integrating the GRANDPA finality gadget into runtimes."] + #[doc = " This should be implemented on the runtime side."] + #[doc = ""] + #[doc = " This is primarily used for negotiating authority-set changes for the"] + #[doc = " gadget. GRANDPA uses a signaling model of changing authority sets:"] + #[doc = " changes should be signaled with a delay of N blocks, and then automatically"] + #[doc = " applied in the runtime after those N blocks have passed."] + #[doc = ""] + #[doc = " The consensus protocol will coordinate the handoff externally."] + pub struct GrandpaApi; + impl GrandpaApi { + #[doc = " Get the current GRANDPA authorities and weights. This should not change except"] + #[doc = " for when changes are scheduled and the corresponding delay has passed."] + #[doc = ""] + #[doc = " When called at block B, it will return the set of authorities that should be"] + #[doc = " used to finalize descendants of this block (B+1, B+2, ...). The block B itself"] + #[doc = " is finalized by the authorities from block B-1."] + pub fn grandpa_authorities( + &self, + ) -> ::subxt::runtime_api::Payload< + types::GrandpaAuthorities, + ::std::vec::Vec<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>, + > { + ::subxt::runtime_api::Payload::new_static( + "GrandpaApi", + "grandpa_authorities", + types::GrandpaAuthorities {}, + [ + 166u8, 76u8, 160u8, 101u8, 242u8, 145u8, 213u8, 10u8, 16u8, 130u8, + 230u8, 196u8, 125u8, 152u8, 92u8, 143u8, 119u8, 223u8, 140u8, 189u8, + 203u8, 95u8, 52u8, 105u8, 147u8, 107u8, 135u8, 228u8, 62u8, 178u8, + 128u8, 33u8, + ], + ) + } + #[doc = " Submits an unsigned extrinsic to report an equivocation. The caller"] + #[doc = " must provide the equivocation proof and a key ownership proof"] + #[doc = " (should be obtained using `generate_key_ownership_proof`). The"] + #[doc = " extrinsic will be unsigned and should only be accepted for local"] + #[doc = " authorship (not to be broadcast to the network). This method returns"] + #[doc = " `None` when creation of the extrinsic fails, e.g. if equivocation"] + #[doc = " reporting is disabled for the given runtime (i.e. this method is"] + #[doc = " hardcoded to return `None`). Only useful in an offchain context."] + pub fn submit_report_equivocation_unsigned_extrinsic( + &self, + equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + key_owner_proof: runtime_types::sp_consensus_grandpa::OpaqueKeyOwnershipProof, + ) -> ::subxt::runtime_api::Payload< + types::SubmitReportEquivocationUnsignedExtrinsic, + ::core::option::Option<()>, + > { + ::subxt::runtime_api::Payload::new_static( + "GrandpaApi", + "submit_report_equivocation_unsigned_extrinsic", + types::SubmitReportEquivocationUnsignedExtrinsic { + equivocation_proof, + key_owner_proof, + }, + [ + 112u8, 94u8, 150u8, 250u8, 132u8, 127u8, 185u8, 24u8, 113u8, 62u8, + 28u8, 171u8, 83u8, 9u8, 41u8, 228u8, 92u8, 137u8, 29u8, 190u8, 214u8, + 232u8, 100u8, 66u8, 100u8, 168u8, 149u8, 122u8, 93u8, 17u8, 236u8, + 104u8, + ], + ) + } + #[doc = " Generates a proof of key ownership for the given authority in the"] + #[doc = " given set. An example usage of this module is coupled with the"] + #[doc = " session historical module to prove that a given authority key is"] + #[doc = " tied to a given staking identity during a specific session. Proofs"] + #[doc = " of key ownership are necessary for submitting equivocation reports."] + #[doc = " NOTE: even though the API takes a `set_id` as parameter the current"] + #[doc = " implementations ignore this parameter and instead rely on this"] + #[doc = " method being called at the correct block height, i.e. any point at"] + #[doc = " which the given set id is live on-chain. Future implementations will"] + #[doc = " instead use indexed data through an offchain worker, not requiring"] + #[doc = " older states to be available."] + pub fn generate_key_ownership_proof( + &self, + set_id: ::core::primitive::u64, + authority_id: runtime_types::sp_consensus_grandpa::app::Public, + ) -> ::subxt::runtime_api::Payload< + types::GenerateKeyOwnershipProof, + ::core::option::Option< + runtime_types::sp_consensus_grandpa::OpaqueKeyOwnershipProof, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "GrandpaApi", + "generate_key_ownership_proof", + types::GenerateKeyOwnershipProof { set_id, authority_id }, + [ + 40u8, 126u8, 113u8, 27u8, 245u8, 45u8, 123u8, 138u8, 12u8, 3u8, 125u8, + 186u8, 151u8, 53u8, 186u8, 93u8, 13u8, 150u8, 163u8, 176u8, 206u8, + 89u8, 244u8, 127u8, 182u8, 85u8, 203u8, 41u8, 101u8, 183u8, 209u8, + 179u8, + ], + ) + } + #[doc = " Get current GRANDPA authority set id."] + pub fn current_set_id( + &self, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "GrandpaApi", + "current_set_id", + types::CurrentSetId {}, + [ + 42u8, 230u8, 120u8, 211u8, 156u8, 245u8, 109u8, 86u8, 100u8, 146u8, + 234u8, 205u8, 41u8, 183u8, 109u8, 42u8, 17u8, 33u8, 156u8, 25u8, 139u8, + 84u8, 101u8, 75u8, 232u8, 198u8, 87u8, 136u8, 218u8, 233u8, 103u8, + 156u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GrandpaAuthorities {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubmitReportEquivocationUnsignedExtrinsic { + pub equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + pub key_owner_proof: + runtime_types::sp_consensus_grandpa::OpaqueKeyOwnershipProof, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GenerateKeyOwnershipProof { + pub set_id: ::core::primitive::u64, + pub authority_id: runtime_types::sp_consensus_grandpa::app::Public, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CurrentSetId {} + } + } + pub mod babe_api { + use super::{root_mod, runtime_types}; + #[doc = " API necessary for block authorship with BABE."] + pub struct BabeApi; + impl BabeApi { + #[doc = " Return the configuration for BABE."] + pub fn configuration( + &self, + ) -> ::subxt::runtime_api::Payload< + types::Configuration, + runtime_types::sp_consensus_babe::BabeConfiguration, + > { + ::subxt::runtime_api::Payload::new_static( + "BabeApi", + "configuration", + types::Configuration {}, + [ + 8u8, 81u8, 234u8, 29u8, 30u8, 198u8, 76u8, 19u8, 188u8, 198u8, 127u8, + 33u8, 141u8, 95u8, 132u8, 106u8, 31u8, 41u8, 215u8, 54u8, 240u8, 65u8, + 59u8, 160u8, 188u8, 237u8, 10u8, 143u8, 250u8, 79u8, 45u8, 161u8, + ], + ) + } + #[doc = " Returns the slot that started the current epoch."] + pub fn current_epoch_start( + &self, + ) -> ::subxt::runtime_api::Payload< + types::CurrentEpochStart, + runtime_types::sp_consensus_slots::Slot, + > { + ::subxt::runtime_api::Payload::new_static( + "BabeApi", + "current_epoch_start", + types::CurrentEpochStart {}, + [ + 122u8, 125u8, 246u8, 170u8, 27u8, 50u8, 128u8, 137u8, 228u8, 62u8, + 145u8, 64u8, 65u8, 119u8, 166u8, 237u8, 115u8, 92u8, 125u8, 124u8, + 11u8, 33u8, 96u8, 88u8, 88u8, 122u8, 141u8, 137u8, 58u8, 182u8, 148u8, + 170u8, + ], + ) + } + #[doc = " Returns information regarding the current epoch."] + pub fn current_epoch( + &self, + ) -> ::subxt::runtime_api::Payload< + types::CurrentEpoch, + runtime_types::sp_consensus_babe::Epoch, + > { + ::subxt::runtime_api::Payload::new_static( + "BabeApi", + "current_epoch", + types::CurrentEpoch {}, + [ + 73u8, 171u8, 149u8, 138u8, 230u8, 95u8, 241u8, 189u8, 207u8, 145u8, + 103u8, 76u8, 79u8, 44u8, 250u8, 68u8, 238u8, 4u8, 149u8, 234u8, 165u8, + 91u8, 89u8, 228u8, 132u8, 201u8, 203u8, 98u8, 209u8, 137u8, 8u8, 63u8, + ], + ) + } + #[doc = " Returns information regarding the next epoch (which was already"] + #[doc = " previously announced)."] + pub fn next_epoch( + &self, + ) -> ::subxt::runtime_api::Payload< + types::NextEpoch, + runtime_types::sp_consensus_babe::Epoch, + > { + ::subxt::runtime_api::Payload::new_static( + "BabeApi", + "next_epoch", + types::NextEpoch {}, + [ + 191u8, 124u8, 183u8, 209u8, 73u8, 171u8, 164u8, 244u8, 68u8, 239u8, + 196u8, 54u8, 188u8, 85u8, 229u8, 175u8, 29u8, 89u8, 148u8, 108u8, + 208u8, 156u8, 62u8, 193u8, 167u8, 184u8, 251u8, 245u8, 123u8, 87u8, + 19u8, 225u8, + ], + ) + } + #[doc = " Generates a proof of key ownership for the given authority in the"] + #[doc = " current epoch. An example usage of this module is coupled with the"] + #[doc = " session historical module to prove that a given authority key is"] + #[doc = " tied to a given staking identity during a specific session. Proofs"] + #[doc = " of key ownership are necessary for submitting equivocation reports."] + #[doc = " NOTE: even though the API takes a `slot` as parameter the current"] + #[doc = " implementations ignores this parameter and instead relies on this"] + #[doc = " method being called at the correct block height, i.e. any point at"] + #[doc = " which the epoch for the given slot is live on-chain. Future"] + #[doc = " implementations will instead use indexed data through an offchain"] + #[doc = " worker, not requiring older states to be available."] + pub fn generate_key_ownership_proof( + &self, + slot: runtime_types::sp_consensus_slots::Slot, + authority_id: runtime_types::sp_consensus_babe::app::Public, + ) -> ::subxt::runtime_api::Payload< + types::GenerateKeyOwnershipProof, + ::core::option::Option< + runtime_types::sp_consensus_babe::OpaqueKeyOwnershipProof, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "BabeApi", + "generate_key_ownership_proof", + types::GenerateKeyOwnershipProof { slot, authority_id }, + [ + 235u8, 220u8, 75u8, 20u8, 175u8, 246u8, 127u8, 176u8, 225u8, 25u8, + 240u8, 252u8, 58u8, 254u8, 153u8, 133u8, 197u8, 168u8, 19u8, 231u8, + 234u8, 173u8, 58u8, 152u8, 212u8, 123u8, 13u8, 131u8, 84u8, 221u8, + 98u8, 46u8, + ], + ) + } + #[doc = " Submits an unsigned extrinsic to report an equivocation. The caller"] + #[doc = " must provide the equivocation proof and a key ownership proof"] + #[doc = " (should be obtained using `generate_key_ownership_proof`). The"] + #[doc = " extrinsic will be unsigned and should only be accepted for local"] + #[doc = " authorship (not to be broadcast to the network). This method returns"] + #[doc = " `None` when creation of the extrinsic fails, e.g. if equivocation"] + #[doc = " reporting is disabled for the given runtime (i.e. this method is"] + #[doc = " hardcoded to return `None`). Only useful in an offchain context."] + pub fn submit_report_equivocation_unsigned_extrinsic( + &self, + equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + runtime_types::sp_consensus_babe::app::Public, + >, + key_owner_proof: runtime_types::sp_consensus_babe::OpaqueKeyOwnershipProof, + ) -> ::subxt::runtime_api::Payload< + types::SubmitReportEquivocationUnsignedExtrinsic, + ::core::option::Option<()>, + > { + ::subxt::runtime_api::Payload::new_static( + "BabeApi", + "submit_report_equivocation_unsigned_extrinsic", + types::SubmitReportEquivocationUnsignedExtrinsic { + equivocation_proof, + key_owner_proof, + }, + [ + 9u8, 163u8, 149u8, 31u8, 89u8, 32u8, 224u8, 116u8, 102u8, 46u8, 10u8, + 189u8, 35u8, 166u8, 111u8, 156u8, 204u8, 80u8, 35u8, 64u8, 223u8, 3u8, + 4u8, 0u8, 97u8, 118u8, 124u8, 142u8, 224u8, 160u8, 2u8, 50u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Configuration {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CurrentEpochStart {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CurrentEpoch {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NextEpoch {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GenerateKeyOwnershipProof { + pub slot: runtime_types::sp_consensus_slots::Slot, + pub authority_id: runtime_types::sp_consensus_babe::app::Public, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubmitReportEquivocationUnsignedExtrinsic { + pub equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + runtime_types::sp_consensus_babe::app::Public, + >, + pub key_owner_proof: runtime_types::sp_consensus_babe::OpaqueKeyOwnershipProof, + } + } + } + pub mod authority_discovery_api { + use super::{root_mod, runtime_types}; + #[doc = " The authority discovery api."] + #[doc = ""] + #[doc = " This api is used by the `client/authority-discovery` module to retrieve identifiers"] + #[doc = " of the current and next authority set."] + pub struct AuthorityDiscoveryApi; + impl AuthorityDiscoveryApi { + #[doc = " Retrieve authority identifiers of the current and next authority set."] + pub fn authorities( + &self, + ) -> ::subxt::runtime_api::Payload< + types::Authorities, + ::std::vec::Vec, + > { + ::subxt::runtime_api::Payload::new_static( + "AuthorityDiscoveryApi", + "authorities", + types::Authorities {}, + [ + 231u8, 109u8, 175u8, 33u8, 103u8, 6u8, 157u8, 241u8, 62u8, 92u8, 246u8, + 9u8, 109u8, 137u8, 233u8, 96u8, 103u8, 59u8, 201u8, 132u8, 102u8, 32u8, + 19u8, 183u8, 106u8, 146u8, 41u8, 172u8, 147u8, 55u8, 156u8, 77u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Authorities {} + } + } + pub mod session_keys { + use super::{root_mod, runtime_types}; + #[doc = " Session keys runtime api."] + pub struct SessionKeys; + impl SessionKeys { + #[doc = " Generate a set of session keys with optionally using the given seed."] + #[doc = " The keys should be stored within the keystore exposed via runtime"] + #[doc = " externalities."] + #[doc = ""] + #[doc = " The seed needs to be a valid `utf8` string."] + #[doc = ""] + #[doc = " Returns the concatenated SCALE encoded public keys."] + pub fn generate_session_keys( + &self, + seed: ::core::option::Option<::std::vec::Vec<::core::primitive::u8>>, + ) -> ::subxt::runtime_api::Payload< + types::GenerateSessionKeys, + ::std::vec::Vec<::core::primitive::u8>, + > { + ::subxt::runtime_api::Payload::new_static( + "SessionKeys", + "generate_session_keys", + types::GenerateSessionKeys { seed }, + [ + 96u8, 171u8, 164u8, 166u8, 175u8, 102u8, 101u8, 47u8, 133u8, 95u8, + 102u8, 202u8, 83u8, 26u8, 238u8, 47u8, 126u8, 132u8, 22u8, 11u8, 33u8, + 190u8, 175u8, 94u8, 58u8, 245u8, 46u8, 80u8, 195u8, 184u8, 107u8, 65u8, + ], + ) + } + #[doc = " Decode the given public session keys."] + #[doc = ""] + #[doc = " Returns the list of public raw public keys + key type."] + pub fn decode_session_keys( + &self, + encoded: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::runtime_api::Payload< + types::DecodeSessionKeys, + ::core::option::Option< + ::std::vec::Vec<( + ::std::vec::Vec<::core::primitive::u8>, + runtime_types::sp_core::crypto::KeyTypeId, + )>, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "SessionKeys", + "decode_session_keys", + types::DecodeSessionKeys { encoded }, + [ + 57u8, 242u8, 18u8, 51u8, 132u8, 110u8, 238u8, 255u8, 39u8, 194u8, 8u8, + 54u8, 198u8, 178u8, 75u8, 151u8, 148u8, 176u8, 144u8, 197u8, 87u8, + 29u8, 179u8, 235u8, 176u8, 78u8, 252u8, 103u8, 72u8, 203u8, 151u8, + 248u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GenerateSessionKeys { + pub seed: ::core::option::Option<::std::vec::Vec<::core::primitive::u8>>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DecodeSessionKeys { + pub encoded: ::std::vec::Vec<::core::primitive::u8>, + } + } + } + pub mod account_nonce_api { + use super::{root_mod, runtime_types}; + #[doc = " The API to query account nonce."] + pub struct AccountNonceApi; + impl AccountNonceApi { + #[doc = " Get current account nonce of given `AccountId`."] + pub fn account_nonce( + &self, + account: ::subxt::utils::AccountId32, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "AccountNonceApi", + "account_nonce", + types::AccountNonce { account }, + [ + 231u8, 82u8, 7u8, 227u8, 131u8, 2u8, 215u8, 252u8, 173u8, 82u8, 11u8, + 103u8, 200u8, 25u8, 114u8, 116u8, 79u8, 229u8, 152u8, 150u8, 236u8, + 37u8, 101u8, 26u8, 220u8, 146u8, 182u8, 101u8, 73u8, 55u8, 191u8, + 171u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AccountNonce { + pub account: ::subxt::utils::AccountId32, + } + } + } + pub mod transaction_payment_api { + use super::{root_mod, runtime_types}; + pub struct TransactionPaymentApi; + impl TransactionPaymentApi { + pub fn query_info( + &self, + uxt : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) >, + len: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::QueryInfo, + runtime_types::pallet_transaction_payment::types::RuntimeDispatchInfo< + ::core::primitive::u128, + runtime_types::sp_weights::weight_v2::Weight, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentApi", + "query_info", + types::QueryInfo { uxt, len }, + [ + 56u8, 30u8, 174u8, 34u8, 202u8, 24u8, 177u8, 189u8, 145u8, 36u8, 1u8, + 156u8, 98u8, 209u8, 178u8, 49u8, 198u8, 23u8, 150u8, 173u8, 35u8, + 205u8, 147u8, 129u8, 42u8, 22u8, 69u8, 3u8, 129u8, 8u8, 196u8, 139u8, + ], + ) + } + pub fn query_fee_details( + &self, + uxt : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) >, + len: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::QueryFeeDetails, + runtime_types::pallet_transaction_payment::types::FeeDetails< + ::core::primitive::u128, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentApi", + "query_fee_details", + types::QueryFeeDetails { uxt, len }, + [ + 117u8, 60u8, 137u8, 159u8, 237u8, 252u8, 216u8, 238u8, 232u8, 1u8, + 100u8, 152u8, 26u8, 185u8, 145u8, 125u8, 68u8, 189u8, 4u8, 30u8, 125u8, + 7u8, 196u8, 153u8, 235u8, 51u8, 219u8, 108u8, 185u8, 254u8, 100u8, + 201u8, + ], + ) + } + pub fn query_weight_to_fee( + &self, + weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentApi", + "query_weight_to_fee", + types::QueryWeightToFee { weight }, + [ + 206u8, 243u8, 189u8, 83u8, 231u8, 244u8, 247u8, 52u8, 126u8, 208u8, + 224u8, 5u8, 163u8, 108u8, 254u8, 114u8, 214u8, 156u8, 227u8, 217u8, + 211u8, 198u8, 121u8, 164u8, 110u8, 54u8, 181u8, 146u8, 50u8, 146u8, + 146u8, 23u8, + ], + ) + } + pub fn query_length_to_fee( + &self, + length: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentApi", + "query_length_to_fee", + types::QueryLengthToFee { length }, + [ + 92u8, 132u8, 29u8, 119u8, 66u8, 11u8, 196u8, 224u8, 129u8, 23u8, 249u8, + 12u8, 32u8, 28u8, 92u8, 50u8, 188u8, 101u8, 203u8, 229u8, 248u8, 216u8, + 130u8, 150u8, 212u8, 161u8, 81u8, 254u8, 116u8, 89u8, 162u8, 48u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryInfo { pub uxt : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > , pub len : :: core :: primitive :: u32 , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryFeeDetails { pub uxt : :: subxt :: utils :: UncheckedExtrinsic < :: subxt :: utils :: MultiAddress < :: subxt :: utils :: AccountId32 , () > , runtime_types :: paseo_runtime :: RuntimeCall , runtime_types :: sp_runtime :: MultiSignature , (runtime_types :: frame_system :: extensions :: check_non_zero_sender :: CheckNonZeroSender , runtime_types :: frame_system :: extensions :: check_spec_version :: CheckSpecVersion , runtime_types :: frame_system :: extensions :: check_tx_version :: CheckTxVersion , runtime_types :: frame_system :: extensions :: check_genesis :: CheckGenesis , runtime_types :: frame_system :: extensions :: check_mortality :: CheckMortality , runtime_types :: frame_system :: extensions :: check_nonce :: CheckNonce , runtime_types :: frame_system :: extensions :: check_weight :: CheckWeight , runtime_types :: pallet_transaction_payment :: ChargeTransactionPayment , runtime_types :: polkadot_runtime_common :: claims :: PrevalidateAttests ,) > , pub len : :: core :: primitive :: u32 , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryWeightToFee { + pub weight: runtime_types::sp_weights::weight_v2::Weight, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryLengthToFee { + pub length: ::core::primitive::u32, + } + } + } + pub mod transaction_payment_call_api { + use super::{root_mod, runtime_types}; + pub struct TransactionPaymentCallApi; + impl TransactionPaymentCallApi { + #[doc = " Query information of a dispatch class, weight, and fee of a given encoded `Call`."] + pub fn query_call_info( + &self, + call: runtime_types::paseo_runtime::RuntimeCall, + len: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::QueryCallInfo, + runtime_types::pallet_transaction_payment::types::RuntimeDispatchInfo< + ::core::primitive::u128, + runtime_types::sp_weights::weight_v2::Weight, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentCallApi", + "query_call_info", + types::QueryCallInfo { call, len }, + [ + 155u8, 239u8, 155u8, 150u8, 103u8, 70u8, 235u8, 130u8, 111u8, 205u8, + 5u8, 202u8, 72u8, 0u8, 182u8, 17u8, 222u8, 61u8, 199u8, 150u8, 101u8, + 45u8, 164u8, 35u8, 177u8, 61u8, 45u8, 147u8, 51u8, 209u8, 175u8, 125u8, + ], + ) + } + #[doc = " Query fee details of a given encoded `Call`."] + pub fn query_call_fee_details( + &self, + call: runtime_types::paseo_runtime::RuntimeCall, + len: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::QueryCallFeeDetails, + runtime_types::pallet_transaction_payment::types::FeeDetails< + ::core::primitive::u128, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentCallApi", + "query_call_fee_details", + types::QueryCallFeeDetails { call, len }, + [ + 88u8, 32u8, 110u8, 248u8, 12u8, 186u8, 215u8, 24u8, 149u8, 3u8, 128u8, + 89u8, 75u8, 122u8, 91u8, 234u8, 3u8, 181u8, 30u8, 203u8, 252u8, 53u8, + 175u8, 235u8, 190u8, 47u8, 80u8, 112u8, 22u8, 149u8, 145u8, 205u8, + ], + ) + } + #[doc = " Query the output of the current `WeightToFee` given some input."] + pub fn query_weight_to_fee( + &self, + weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentCallApi", + "query_weight_to_fee", + types::QueryWeightToFee { weight }, + [ + 117u8, 91u8, 94u8, 22u8, 248u8, 212u8, 15u8, 23u8, 97u8, 116u8, 64u8, + 228u8, 83u8, 123u8, 87u8, 77u8, 97u8, 7u8, 98u8, 181u8, 6u8, 165u8, + 114u8, 141u8, 164u8, 113u8, 126u8, 88u8, 174u8, 171u8, 224u8, 35u8, + ], + ) + } + #[doc = " Query the output of the current `LengthToFee` given some input."] + pub fn query_length_to_fee( + &self, + length: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload + { + ::subxt::runtime_api::Payload::new_static( + "TransactionPaymentCallApi", + "query_length_to_fee", + types::QueryLengthToFee { length }, + [ + 246u8, 40u8, 4u8, 160u8, 152u8, 94u8, 170u8, 53u8, 205u8, 122u8, 5u8, + 69u8, 70u8, 25u8, 128u8, 156u8, 119u8, 134u8, 116u8, 147u8, 14u8, + 164u8, 65u8, 140u8, 86u8, 13u8, 250u8, 218u8, 89u8, 95u8, 234u8, 228u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryCallInfo { + pub call: runtime_types::paseo_runtime::RuntimeCall, + pub len: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryCallFeeDetails { + pub call: runtime_types::paseo_runtime::RuntimeCall, + pub len: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryWeightToFee { + pub weight: runtime_types::sp_weights::weight_v2::Weight, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryLengthToFee { + pub length: ::core::primitive::u32, + } + } + } + pub mod genesis_builder { + use super::{root_mod, runtime_types}; + #[doc = " API to interact with GenesisConfig for the runtime"] + pub struct GenesisBuilder; + impl GenesisBuilder { + #[doc = " Creates the default `GenesisConfig` and returns it as a JSON blob."] + #[doc = ""] + #[doc = " This function instantiates the default `GenesisConfig` struct for the runtime and serializes it into a JSON"] + #[doc = " blob. It returns a `Vec` containing the JSON representation of the default `GenesisConfig`."] + pub fn create_default_config( + &self, + ) -> ::subxt::runtime_api::Payload< + types::CreateDefaultConfig, + ::std::vec::Vec<::core::primitive::u8>, + > { + ::subxt::runtime_api::Payload::new_static( + "GenesisBuilder", + "create_default_config", + types::CreateDefaultConfig {}, + [ + 238u8, 5u8, 139u8, 81u8, 184u8, 155u8, 221u8, 118u8, 190u8, 76u8, + 229u8, 67u8, 132u8, 89u8, 83u8, 80u8, 56u8, 171u8, 169u8, 64u8, 123u8, + 20u8, 129u8, 159u8, 28u8, 135u8, 84u8, 52u8, 192u8, 98u8, 104u8, 214u8, + ], + ) + } + #[doc = " Build `GenesisConfig` from a JSON blob not using any defaults and store it in the storage."] + #[doc = ""] + #[doc = " This function deserializes the full `GenesisConfig` from the given JSON blob and puts it into the storage."] + #[doc = " If the provided JSON blob is incorrect or incomplete or the deserialization fails, an error is returned."] + #[doc = " It is recommended to log any errors encountered during the process."] + #[doc = ""] + #[doc = " Please note that provided json blob must contain all `GenesisConfig` fields, no defaults will be used."] + pub fn build_config( + &self, + json: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::runtime_api::Payload< + types::BuildConfig, + ::core::result::Result<(), ::std::string::String>, + > { + ::subxt::runtime_api::Payload::new_static( + "GenesisBuilder", + "build_config", + types::BuildConfig { json }, + [ + 6u8, 98u8, 68u8, 125u8, 157u8, 26u8, 107u8, 86u8, 213u8, 227u8, 26u8, + 229u8, 122u8, 161u8, 229u8, 114u8, 123u8, 192u8, 66u8, 231u8, 148u8, + 175u8, 5u8, 185u8, 248u8, 88u8, 40u8, 122u8, 230u8, 209u8, 170u8, + 254u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CreateDefaultConfig {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BuildConfig { + pub json: ::std::vec::Vec<::core::primitive::u8>, + } + } + } + } + pub struct ConstantsApi; + impl ConstantsApi { + pub fn system(&self) -> system::constants::ConstantsApi { + system::constants::ConstantsApi + } + pub fn scheduler(&self) -> scheduler::constants::ConstantsApi { + scheduler::constants::ConstantsApi + } + pub fn babe(&self) -> babe::constants::ConstantsApi { + babe::constants::ConstantsApi + } + pub fn timestamp(&self) -> timestamp::constants::ConstantsApi { + timestamp::constants::ConstantsApi + } + pub fn indices(&self) -> indices::constants::ConstantsApi { + indices::constants::ConstantsApi + } + pub fn balances(&self) -> balances::constants::ConstantsApi { + balances::constants::ConstantsApi + } + pub fn transaction_payment(&self) -> transaction_payment::constants::ConstantsApi { + transaction_payment::constants::ConstantsApi + } + pub fn staking(&self) -> staking::constants::ConstantsApi { + staking::constants::ConstantsApi + } + pub fn grandpa(&self) -> grandpa::constants::ConstantsApi { + grandpa::constants::ConstantsApi + } + pub fn im_online(&self) -> im_online::constants::ConstantsApi { + im_online::constants::ConstantsApi + } + pub fn treasury(&self) -> treasury::constants::ConstantsApi { + treasury::constants::ConstantsApi + } + pub fn conviction_voting(&self) -> conviction_voting::constants::ConstantsApi { + conviction_voting::constants::ConstantsApi + } + pub fn referenda(&self) -> referenda::constants::ConstantsApi { + referenda::constants::ConstantsApi + } + pub fn claims(&self) -> claims::constants::ConstantsApi { + claims::constants::ConstantsApi + } + pub fn vesting(&self) -> vesting::constants::ConstantsApi { + vesting::constants::ConstantsApi + } + pub fn utility(&self) -> utility::constants::ConstantsApi { + utility::constants::ConstantsApi + } + pub fn identity(&self) -> identity::constants::ConstantsApi { + identity::constants::ConstantsApi + } + pub fn proxy(&self) -> proxy::constants::ConstantsApi { + proxy::constants::ConstantsApi + } + pub fn multisig(&self) -> multisig::constants::ConstantsApi { + multisig::constants::ConstantsApi + } + pub fn bounties(&self) -> bounties::constants::ConstantsApi { + bounties::constants::ConstantsApi + } + pub fn child_bounties(&self) -> child_bounties::constants::ConstantsApi { + child_bounties::constants::ConstantsApi + } + pub fn election_provider_multi_phase( + &self, + ) -> election_provider_multi_phase::constants::ConstantsApi { + election_provider_multi_phase::constants::ConstantsApi + } + pub fn voter_list(&self) -> voter_list::constants::ConstantsApi { + voter_list::constants::ConstantsApi + } + pub fn nomination_pools(&self) -> nomination_pools::constants::ConstantsApi { + nomination_pools::constants::ConstantsApi + } + pub fn fast_unstake(&self) -> fast_unstake::constants::ConstantsApi { + fast_unstake::constants::ConstantsApi + } + pub fn paras(&self) -> paras::constants::ConstantsApi { + paras::constants::ConstantsApi + } + pub fn registrar(&self) -> registrar::constants::ConstantsApi { + registrar::constants::ConstantsApi + } + pub fn slots(&self) -> slots::constants::ConstantsApi { + slots::constants::ConstantsApi + } + pub fn auctions(&self) -> auctions::constants::ConstantsApi { + auctions::constants::ConstantsApi + } + pub fn crowdloan(&self) -> crowdloan::constants::ConstantsApi { + crowdloan::constants::ConstantsApi + } + pub fn message_queue(&self) -> message_queue::constants::ConstantsApi { + message_queue::constants::ConstantsApi + } + pub fn beefy(&self) -> beefy::constants::ConstantsApi { + beefy::constants::ConstantsApi + } + } + pub struct StorageApi; + impl StorageApi { + pub fn system(&self) -> system::storage::StorageApi { + system::storage::StorageApi + } + pub fn scheduler(&self) -> scheduler::storage::StorageApi { + scheduler::storage::StorageApi + } + pub fn preimage(&self) -> preimage::storage::StorageApi { + preimage::storage::StorageApi + } + pub fn babe(&self) -> babe::storage::StorageApi { + babe::storage::StorageApi + } + pub fn timestamp(&self) -> timestamp::storage::StorageApi { + timestamp::storage::StorageApi + } + pub fn indices(&self) -> indices::storage::StorageApi { + indices::storage::StorageApi + } + pub fn balances(&self) -> balances::storage::StorageApi { + balances::storage::StorageApi + } + pub fn transaction_payment(&self) -> transaction_payment::storage::StorageApi { + transaction_payment::storage::StorageApi + } + pub fn authorship(&self) -> authorship::storage::StorageApi { + authorship::storage::StorageApi + } + pub fn staking(&self) -> staking::storage::StorageApi { + staking::storage::StorageApi + } + pub fn offences(&self) -> offences::storage::StorageApi { + offences::storage::StorageApi + } + pub fn session(&self) -> session::storage::StorageApi { + session::storage::StorageApi + } + pub fn grandpa(&self) -> grandpa::storage::StorageApi { + grandpa::storage::StorageApi + } + pub fn im_online(&self) -> im_online::storage::StorageApi { + im_online::storage::StorageApi + } + pub fn treasury(&self) -> treasury::storage::StorageApi { + treasury::storage::StorageApi + } + pub fn conviction_voting(&self) -> conviction_voting::storage::StorageApi { + conviction_voting::storage::StorageApi + } + pub fn referenda(&self) -> referenda::storage::StorageApi { + referenda::storage::StorageApi + } + pub fn whitelist(&self) -> whitelist::storage::StorageApi { + whitelist::storage::StorageApi + } + pub fn claims(&self) -> claims::storage::StorageApi { + claims::storage::StorageApi + } + pub fn vesting(&self) -> vesting::storage::StorageApi { + vesting::storage::StorageApi + } + pub fn identity(&self) -> identity::storage::StorageApi { + identity::storage::StorageApi + } + pub fn proxy(&self) -> proxy::storage::StorageApi { + proxy::storage::StorageApi + } + pub fn multisig(&self) -> multisig::storage::StorageApi { + multisig::storage::StorageApi + } + pub fn bounties(&self) -> bounties::storage::StorageApi { + bounties::storage::StorageApi + } + pub fn child_bounties(&self) -> child_bounties::storage::StorageApi { + child_bounties::storage::StorageApi + } + pub fn election_provider_multi_phase( + &self, + ) -> election_provider_multi_phase::storage::StorageApi { + election_provider_multi_phase::storage::StorageApi + } + pub fn voter_list(&self) -> voter_list::storage::StorageApi { + voter_list::storage::StorageApi + } + pub fn nomination_pools(&self) -> nomination_pools::storage::StorageApi { + nomination_pools::storage::StorageApi + } + pub fn fast_unstake(&self) -> fast_unstake::storage::StorageApi { + fast_unstake::storage::StorageApi + } + pub fn configuration(&self) -> configuration::storage::StorageApi { + configuration::storage::StorageApi + } + pub fn paras_shared(&self) -> paras_shared::storage::StorageApi { + paras_shared::storage::StorageApi + } + pub fn para_inclusion(&self) -> para_inclusion::storage::StorageApi { + para_inclusion::storage::StorageApi + } + pub fn para_inherent(&self) -> para_inherent::storage::StorageApi { + para_inherent::storage::StorageApi + } + pub fn para_scheduler(&self) -> para_scheduler::storage::StorageApi { + para_scheduler::storage::StorageApi + } + pub fn paras(&self) -> paras::storage::StorageApi { + paras::storage::StorageApi + } + pub fn initializer(&self) -> initializer::storage::StorageApi { + initializer::storage::StorageApi + } + pub fn dmp(&self) -> dmp::storage::StorageApi { + dmp::storage::StorageApi + } + pub fn hrmp(&self) -> hrmp::storage::StorageApi { + hrmp::storage::StorageApi + } + pub fn para_session_info(&self) -> para_session_info::storage::StorageApi { + para_session_info::storage::StorageApi + } + pub fn paras_disputes(&self) -> paras_disputes::storage::StorageApi { + paras_disputes::storage::StorageApi + } + pub fn paras_slashing(&self) -> paras_slashing::storage::StorageApi { + paras_slashing::storage::StorageApi + } + pub fn registrar(&self) -> registrar::storage::StorageApi { + registrar::storage::StorageApi + } + pub fn slots(&self) -> slots::storage::StorageApi { + slots::storage::StorageApi + } + pub fn auctions(&self) -> auctions::storage::StorageApi { + auctions::storage::StorageApi + } + pub fn crowdloan(&self) -> crowdloan::storage::StorageApi { + crowdloan::storage::StorageApi + } + pub fn xcm_pallet(&self) -> xcm_pallet::storage::StorageApi { + xcm_pallet::storage::StorageApi + } + pub fn message_queue(&self) -> message_queue::storage::StorageApi { + message_queue::storage::StorageApi + } + pub fn asset_rate(&self) -> asset_rate::storage::StorageApi { + asset_rate::storage::StorageApi + } + pub fn beefy(&self) -> beefy::storage::StorageApi { + beefy::storage::StorageApi + } + pub fn mmr(&self) -> mmr::storage::StorageApi { + mmr::storage::StorageApi + } + pub fn beefy_mmr_leaf(&self) -> beefy_mmr_leaf::storage::StorageApi { + beefy_mmr_leaf::storage::StorageApi + } + pub fn sudo(&self) -> sudo::storage::StorageApi { + sudo::storage::StorageApi + } + } + pub struct TransactionApi; + impl TransactionApi { + pub fn system(&self) -> system::calls::TransactionApi { + system::calls::TransactionApi + } + pub fn scheduler(&self) -> scheduler::calls::TransactionApi { + scheduler::calls::TransactionApi + } + pub fn preimage(&self) -> preimage::calls::TransactionApi { + preimage::calls::TransactionApi + } + pub fn babe(&self) -> babe::calls::TransactionApi { + babe::calls::TransactionApi + } + pub fn timestamp(&self) -> timestamp::calls::TransactionApi { + timestamp::calls::TransactionApi + } + pub fn indices(&self) -> indices::calls::TransactionApi { + indices::calls::TransactionApi + } + pub fn balances(&self) -> balances::calls::TransactionApi { + balances::calls::TransactionApi + } + pub fn staking(&self) -> staking::calls::TransactionApi { + staking::calls::TransactionApi + } + pub fn session(&self) -> session::calls::TransactionApi { + session::calls::TransactionApi + } + pub fn grandpa(&self) -> grandpa::calls::TransactionApi { + grandpa::calls::TransactionApi + } + pub fn im_online(&self) -> im_online::calls::TransactionApi { + im_online::calls::TransactionApi + } + pub fn treasury(&self) -> treasury::calls::TransactionApi { + treasury::calls::TransactionApi + } + pub fn conviction_voting(&self) -> conviction_voting::calls::TransactionApi { + conviction_voting::calls::TransactionApi + } + pub fn referenda(&self) -> referenda::calls::TransactionApi { + referenda::calls::TransactionApi + } + pub fn whitelist(&self) -> whitelist::calls::TransactionApi { + whitelist::calls::TransactionApi + } + pub fn claims(&self) -> claims::calls::TransactionApi { + claims::calls::TransactionApi + } + pub fn vesting(&self) -> vesting::calls::TransactionApi { + vesting::calls::TransactionApi + } + pub fn utility(&self) -> utility::calls::TransactionApi { + utility::calls::TransactionApi + } + pub fn identity(&self) -> identity::calls::TransactionApi { + identity::calls::TransactionApi + } + pub fn proxy(&self) -> proxy::calls::TransactionApi { + proxy::calls::TransactionApi + } + pub fn multisig(&self) -> multisig::calls::TransactionApi { + multisig::calls::TransactionApi + } + pub fn bounties(&self) -> bounties::calls::TransactionApi { + bounties::calls::TransactionApi + } + pub fn child_bounties(&self) -> child_bounties::calls::TransactionApi { + child_bounties::calls::TransactionApi + } + pub fn election_provider_multi_phase( + &self, + ) -> election_provider_multi_phase::calls::TransactionApi { + election_provider_multi_phase::calls::TransactionApi + } + pub fn voter_list(&self) -> voter_list::calls::TransactionApi { + voter_list::calls::TransactionApi + } + pub fn nomination_pools(&self) -> nomination_pools::calls::TransactionApi { + nomination_pools::calls::TransactionApi + } + pub fn fast_unstake(&self) -> fast_unstake::calls::TransactionApi { + fast_unstake::calls::TransactionApi + } + pub fn configuration(&self) -> configuration::calls::TransactionApi { + configuration::calls::TransactionApi + } + pub fn paras_shared(&self) -> paras_shared::calls::TransactionApi { + paras_shared::calls::TransactionApi + } + pub fn para_inclusion(&self) -> para_inclusion::calls::TransactionApi { + para_inclusion::calls::TransactionApi + } + pub fn para_inherent(&self) -> para_inherent::calls::TransactionApi { + para_inherent::calls::TransactionApi + } + pub fn paras(&self) -> paras::calls::TransactionApi { + paras::calls::TransactionApi + } + pub fn initializer(&self) -> initializer::calls::TransactionApi { + initializer::calls::TransactionApi + } + pub fn hrmp(&self) -> hrmp::calls::TransactionApi { + hrmp::calls::TransactionApi + } + pub fn paras_disputes(&self) -> paras_disputes::calls::TransactionApi { + paras_disputes::calls::TransactionApi + } + pub fn paras_slashing(&self) -> paras_slashing::calls::TransactionApi { + paras_slashing::calls::TransactionApi + } + pub fn registrar(&self) -> registrar::calls::TransactionApi { + registrar::calls::TransactionApi + } + pub fn slots(&self) -> slots::calls::TransactionApi { + slots::calls::TransactionApi + } + pub fn auctions(&self) -> auctions::calls::TransactionApi { + auctions::calls::TransactionApi + } + pub fn crowdloan(&self) -> crowdloan::calls::TransactionApi { + crowdloan::calls::TransactionApi + } + pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { + xcm_pallet::calls::TransactionApi + } + pub fn message_queue(&self) -> message_queue::calls::TransactionApi { + message_queue::calls::TransactionApi + } + pub fn asset_rate(&self) -> asset_rate::calls::TransactionApi { + asset_rate::calls::TransactionApi + } + pub fn beefy(&self) -> beefy::calls::TransactionApi { + beefy::calls::TransactionApi + } + pub fn para_sudo_wrapper(&self) -> para_sudo_wrapper::calls::TransactionApi { + para_sudo_wrapper::calls::TransactionApi + } + pub fn sudo(&self) -> sudo::calls::TransactionApi { + sudo::calls::TransactionApi + } + } + #[doc = r" check whether the metadata provided is aligned with this statically generated code."] + pub fn is_codegen_valid_for(metadata: &::subxt::Metadata) -> bool { + let runtime_metadata_hash = metadata + .hasher() + .only_these_pallets(&PALLETS) + .only_these_runtime_apis(&RUNTIME_APIS) + .hash(); + runtime_metadata_hash == + [ + 102u8, 7u8, 150u8, 92u8, 106u8, 193u8, 143u8, 96u8, 129u8, 174u8, 223u8, 50u8, + 52u8, 205u8, 35u8, 147u8, 137u8, 227u8, 61u8, 2u8, 27u8, 16u8, 215u8, 54u8, 99u8, + 192u8, 40u8, 173u8, 15u8, 39u8, 236u8, 21u8, + ] + } + pub mod system { + use super::{root_mod, runtime_types}; + #[doc = "Error for the System pallet"] + pub type Error = runtime_types::frame_system::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::frame_system::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Remark { + pub remark: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for Remark { + const PALLET: &'static str = "System"; + const CALL: &'static str = "remark"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHeapPages { + pub pages: ::core::primitive::u64, + } + impl ::subxt::blocks::StaticExtrinsic for SetHeapPages { + const PALLET: &'static str = "System"; + const CALL: &'static str = "set_heap_pages"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetCode { + pub code: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for SetCode { + const PALLET: &'static str = "System"; + const CALL: &'static str = "set_code"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetCodeWithoutChecks { + pub code: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for SetCodeWithoutChecks { + const PALLET: &'static str = "System"; + const CALL: &'static str = "set_code_without_checks"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetStorage { + pub items: ::std::vec::Vec<( + ::std::vec::Vec<::core::primitive::u8>, + ::std::vec::Vec<::core::primitive::u8>, + )>, + } + impl ::subxt::blocks::StaticExtrinsic for SetStorage { + const PALLET: &'static str = "System"; + const CALL: &'static str = "set_storage"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct KillStorage { + pub keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + } + impl ::subxt::blocks::StaticExtrinsic for KillStorage { + const PALLET: &'static str = "System"; + const CALL: &'static str = "kill_storage"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct KillPrefix { + pub prefix: ::std::vec::Vec<::core::primitive::u8>, + pub subkeys: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for KillPrefix { + const PALLET: &'static str = "System"; + const CALL: &'static str = "kill_prefix"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemarkWithEvent { + pub remark: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for RemarkWithEvent { + const PALLET: &'static str = "System"; + const CALL: &'static str = "remark_with_event"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::remark`]."] + pub fn remark( + &self, + remark: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "remark", + types::Remark { remark }, + [ + 43u8, 126u8, 180u8, 174u8, 141u8, 48u8, 52u8, 125u8, 166u8, 212u8, + 216u8, 98u8, 100u8, 24u8, 132u8, 71u8, 101u8, 64u8, 246u8, 169u8, 33u8, + 250u8, 147u8, 208u8, 2u8, 40u8, 129u8, 209u8, 232u8, 207u8, 207u8, + 13u8, + ], + ) + } + #[doc = "See [`Pallet::set_heap_pages`]."] + pub fn set_heap_pages( + &self, + pages: ::core::primitive::u64, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "set_heap_pages", + types::SetHeapPages { pages }, + [ + 188u8, 191u8, 99u8, 216u8, 219u8, 109u8, 141u8, 50u8, 78u8, 235u8, + 215u8, 242u8, 195u8, 24u8, 111u8, 76u8, 229u8, 64u8, 99u8, 225u8, + 134u8, 121u8, 81u8, 209u8, 127u8, 223u8, 98u8, 215u8, 150u8, 70u8, + 57u8, 147u8, + ], + ) + } + #[doc = "See [`Pallet::set_code`]."] + pub fn set_code( + &self, + code: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "set_code", + types::SetCode { code }, + [ + 233u8, 248u8, 88u8, 245u8, 28u8, 65u8, 25u8, 169u8, 35u8, 237u8, 19u8, + 203u8, 136u8, 160u8, 18u8, 3u8, 20u8, 197u8, 81u8, 169u8, 244u8, 188u8, + 27u8, 147u8, 147u8, 236u8, 65u8, 25u8, 3u8, 143u8, 182u8, 22u8, + ], + ) + } + #[doc = "See [`Pallet::set_code_without_checks`]."] + pub fn set_code_without_checks( + &self, + code: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "set_code_without_checks", + types::SetCodeWithoutChecks { code }, + [ + 82u8, 212u8, 157u8, 44u8, 70u8, 0u8, 143u8, 15u8, 109u8, 109u8, 107u8, + 157u8, 141u8, 42u8, 169u8, 11u8, 15u8, 186u8, 252u8, 138u8, 10u8, + 147u8, 15u8, 178u8, 247u8, 229u8, 213u8, 98u8, 207u8, 231u8, 119u8, + 115u8, + ], + ) + } + #[doc = "See [`Pallet::set_storage`]."] + pub fn set_storage( + &self, + items: ::std::vec::Vec<( + ::std::vec::Vec<::core::primitive::u8>, + ::std::vec::Vec<::core::primitive::u8>, + )>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "set_storage", + types::SetStorage { items }, + [ + 141u8, 216u8, 52u8, 222u8, 223u8, 136u8, 123u8, 181u8, 19u8, 75u8, + 163u8, 102u8, 229u8, 189u8, 158u8, 142u8, 95u8, 235u8, 240u8, 49u8, + 150u8, 76u8, 78u8, 137u8, 126u8, 88u8, 183u8, 88u8, 231u8, 146u8, + 234u8, 43u8, + ], + ) + } + #[doc = "See [`Pallet::kill_storage`]."] + pub fn kill_storage( + &self, + keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "kill_storage", + types::KillStorage { keys }, + [ + 73u8, 63u8, 196u8, 36u8, 144u8, 114u8, 34u8, 213u8, 108u8, 93u8, 209u8, + 234u8, 153u8, 185u8, 33u8, 91u8, 187u8, 195u8, 223u8, 130u8, 58u8, + 156u8, 63u8, 47u8, 228u8, 249u8, 216u8, 139u8, 143u8, 177u8, 41u8, + 35u8, + ], + ) + } + #[doc = "See [`Pallet::kill_prefix`]."] + pub fn kill_prefix( + &self, + prefix: ::std::vec::Vec<::core::primitive::u8>, + subkeys: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "kill_prefix", + types::KillPrefix { prefix, subkeys }, + [ + 184u8, 57u8, 139u8, 24u8, 208u8, 87u8, 108u8, 215u8, 198u8, 189u8, + 175u8, 242u8, 167u8, 215u8, 97u8, 63u8, 110u8, 166u8, 238u8, 98u8, + 67u8, 236u8, 111u8, 110u8, 234u8, 81u8, 102u8, 5u8, 182u8, 5u8, 214u8, + 85u8, + ], + ) + } + #[doc = "See [`Pallet::remark_with_event`]."] + pub fn remark_with_event( + &self, + remark: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "remark_with_event", + types::RemarkWithEvent { remark }, + [ + 120u8, 120u8, 153u8, 92u8, 184u8, 85u8, 34u8, 2u8, 174u8, 206u8, 105u8, + 228u8, 233u8, 130u8, 80u8, 246u8, 228u8, 59u8, 234u8, 240u8, 4u8, 49u8, + 147u8, 170u8, 115u8, 91u8, 149u8, 200u8, 228u8, 181u8, 8u8, 154u8, + ], + ) + } + } + } + #[doc = "Event for the System pallet."] + pub type Event = runtime_types::frame_system::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An extrinsic completed successfully."] + pub struct ExtrinsicSuccess { + pub dispatch_info: runtime_types::frame_support::dispatch::DispatchInfo, + } + impl ::subxt::events::StaticEvent for ExtrinsicSuccess { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "ExtrinsicSuccess"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An extrinsic failed."] + pub struct ExtrinsicFailed { + pub dispatch_error: runtime_types::sp_runtime::DispatchError, + pub dispatch_info: runtime_types::frame_support::dispatch::DispatchInfo, + } + impl ::subxt::events::StaticEvent for ExtrinsicFailed { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "ExtrinsicFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "`:code` was updated."] + pub struct CodeUpdated; + impl ::subxt::events::StaticEvent for CodeUpdated { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "CodeUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new account was created."] + pub struct NewAccount { + pub account: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for NewAccount { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "NewAccount"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account was reaped."] + pub struct KilledAccount { + pub account: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for KilledAccount { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "KilledAccount"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "On on-chain remark happened."] + pub struct Remarked { + pub sender: ::subxt::utils::AccountId32, + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for Remarked { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "Remarked"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The full account information for a particular account ID."] + pub fn account( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::frame_system::AccountInfo< + ::core::primitive::u32, + runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "Account", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 14u8, 233u8, 115u8, 214u8, 0u8, 109u8, 222u8, 121u8, 162u8, 65u8, 60u8, + 175u8, 209u8, 79u8, 222u8, 124u8, 22u8, 235u8, 138u8, 176u8, 133u8, + 124u8, 90u8, 158u8, 85u8, 45u8, 37u8, 174u8, 47u8, 79u8, 47u8, 166u8, + ], + ) + } + #[doc = " The full account information for a particular account ID."] + pub fn account_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::frame_system::AccountInfo< + ::core::primitive::u32, + runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "Account", + Vec::new(), + [ + 14u8, 233u8, 115u8, 214u8, 0u8, 109u8, 222u8, 121u8, 162u8, 65u8, 60u8, + 175u8, 209u8, 79u8, 222u8, 124u8, 22u8, 235u8, 138u8, 176u8, 133u8, + 124u8, 90u8, 158u8, 85u8, 45u8, 37u8, 174u8, 47u8, 79u8, 47u8, 166u8, + ], + ) + } + #[doc = " Total extrinsics count for the current block."] + pub fn extrinsic_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "ExtrinsicCount", + vec![], + [ + 102u8, 76u8, 236u8, 42u8, 40u8, 231u8, 33u8, 222u8, 123u8, 147u8, + 153u8, 148u8, 234u8, 203u8, 181u8, 119u8, 6u8, 187u8, 177u8, 199u8, + 120u8, 47u8, 137u8, 254u8, 96u8, 100u8, 165u8, 182u8, 249u8, 230u8, + 159u8, 79u8, + ], + ) + } + #[doc = " The current weight for the block."] + pub fn block_weight( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::frame_support::dispatch::PerDispatchClass< + runtime_types::sp_weights::weight_v2::Weight, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "BlockWeight", + vec![], + [ + 158u8, 46u8, 228u8, 89u8, 210u8, 214u8, 84u8, 154u8, 50u8, 68u8, 63u8, + 62u8, 43u8, 42u8, 99u8, 27u8, 54u8, 42u8, 146u8, 44u8, 241u8, 216u8, + 229u8, 30u8, 216u8, 255u8, 165u8, 238u8, 181u8, 130u8, 36u8, 102u8, + ], + ) + } + #[doc = " Total length (in bytes) for all extrinsics put together, for the current block."] + pub fn all_extrinsics_len( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "AllExtrinsicsLen", + vec![], + [ + 117u8, 86u8, 61u8, 243u8, 41u8, 51u8, 102u8, 214u8, 137u8, 100u8, + 243u8, 185u8, 122u8, 174u8, 187u8, 117u8, 86u8, 189u8, 63u8, 135u8, + 101u8, 218u8, 203u8, 201u8, 237u8, 254u8, 128u8, 183u8, 169u8, 221u8, + 242u8, 65u8, + ], + ) + } + #[doc = " Map of block numbers to block hashes."] + pub fn block_hash( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "BlockHash", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 217u8, 32u8, 215u8, 253u8, 24u8, 182u8, 207u8, 178u8, 157u8, 24u8, + 103u8, 100u8, 195u8, 165u8, 69u8, 152u8, 112u8, 181u8, 56u8, 192u8, + 164u8, 16u8, 20u8, 222u8, 28u8, 214u8, 144u8, 142u8, 146u8, 69u8, + 202u8, 118u8, + ], + ) + } + #[doc = " Map of block numbers to block hashes."] + pub fn block_hash_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "BlockHash", + Vec::new(), + [ + 217u8, 32u8, 215u8, 253u8, 24u8, 182u8, 207u8, 178u8, 157u8, 24u8, + 103u8, 100u8, 195u8, 165u8, 69u8, 152u8, 112u8, 181u8, 56u8, 192u8, + 164u8, 16u8, 20u8, 222u8, 28u8, 214u8, 144u8, 142u8, 146u8, 69u8, + 202u8, 118u8, + ], + ) + } + #[doc = " Extrinsics data for the current block (maps an extrinsic's index to its data)."] + pub fn extrinsic_data( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::core::primitive::u8>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "ExtrinsicData", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 160u8, 180u8, 122u8, 18u8, 196u8, 26u8, 2u8, 37u8, 115u8, 232u8, 133u8, + 220u8, 106u8, 245u8, 4u8, 129u8, 42u8, 84u8, 241u8, 45u8, 199u8, 179u8, + 128u8, 61u8, 170u8, 137u8, 231u8, 156u8, 247u8, 57u8, 47u8, 38u8, + ], + ) + } + #[doc = " Extrinsics data for the current block (maps an extrinsic's index to its data)."] + pub fn extrinsic_data_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::core::primitive::u8>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "ExtrinsicData", + Vec::new(), + [ + 160u8, 180u8, 122u8, 18u8, 196u8, 26u8, 2u8, 37u8, 115u8, 232u8, 133u8, + 220u8, 106u8, 245u8, 4u8, 129u8, 42u8, 84u8, 241u8, 45u8, 199u8, 179u8, + 128u8, 61u8, 170u8, 137u8, 231u8, 156u8, 247u8, 57u8, 47u8, 38u8, + ], + ) + } + #[doc = " The current block number being processed. Set by `execute_block`."] + pub fn number( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "Number", + vec![], + [ + 30u8, 194u8, 177u8, 90u8, 194u8, 232u8, 46u8, 180u8, 85u8, 129u8, 14u8, + 9u8, 8u8, 8u8, 23u8, 95u8, 230u8, 5u8, 13u8, 105u8, 125u8, 2u8, 22u8, + 200u8, 78u8, 93u8, 115u8, 28u8, 150u8, 113u8, 48u8, 53u8, + ], + ) + } + #[doc = " Hash of the previous block."] + pub fn parent_hash( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "ParentHash", + vec![], + [ + 26u8, 130u8, 11u8, 216u8, 155u8, 71u8, 128u8, 170u8, 30u8, 153u8, 21u8, + 192u8, 62u8, 93u8, 137u8, 80u8, 120u8, 81u8, 202u8, 94u8, 248u8, 125u8, + 71u8, 82u8, 141u8, 229u8, 32u8, 56u8, 73u8, 50u8, 101u8, 78u8, + ], + ) + } + #[doc = " Digest of the current block, also part of the block header."] + pub fn digest( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_runtime::generic::digest::Digest, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "Digest", + vec![], + [ + 61u8, 64u8, 237u8, 91u8, 145u8, 232u8, 17u8, 254u8, 181u8, 16u8, 234u8, + 91u8, 51u8, 140u8, 254u8, 131u8, 98u8, 135u8, 21u8, 37u8, 251u8, 20u8, + 58u8, 92u8, 123u8, 141u8, 14u8, 227u8, 146u8, 46u8, 222u8, 117u8, + ], + ) + } + #[doc = " Events deposited for the current block."] + #[doc = ""] + #[doc = " NOTE: The item is unbound and should therefore never be read on chain."] + #[doc = " It could otherwise inflate the PoV size of a block."] + #[doc = ""] + #[doc = " Events have a large in-memory size. Box the events to not go out-of-memory"] + #[doc = " just in case someone still reads them from within the runtime."] + pub fn events( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::frame_system::EventRecord< + runtime_types::paseo_runtime::RuntimeEvent, + ::subxt::utils::H256, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "Events", + vec![], + [ + 134u8, 88u8, 68u8, 101u8, 75u8, 148u8, 65u8, 139u8, 117u8, 55u8, 61u8, + 22u8, 91u8, 38u8, 76u8, 104u8, 135u8, 19u8, 139u8, 20u8, 4u8, 155u8, + 73u8, 241u8, 84u8, 16u8, 107u8, 204u8, 196u8, 53u8, 110u8, 214u8, + ], + ) + } + #[doc = " The number of events in the `Events` list."] + pub fn event_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "EventCount", + vec![], + [ + 175u8, 24u8, 252u8, 184u8, 210u8, 167u8, 146u8, 143u8, 164u8, 80u8, + 151u8, 205u8, 189u8, 189u8, 55u8, 220u8, 47u8, 101u8, 181u8, 33u8, + 254u8, 131u8, 13u8, 143u8, 3u8, 244u8, 245u8, 45u8, 2u8, 210u8, 79u8, + 133u8, + ], + ) + } + #[doc = " Mapping between a topic (represented by T::Hash) and a vector of indexes"] + #[doc = " of events in the `>` list."] + #[doc = ""] + #[doc = " All topic vectors have deterministic storage locations depending on the topic. This"] + #[doc = " allows light-clients to leverage the changes trie storage tracking mechanism and"] + #[doc = " in case of changes fetch the list of events of interest."] + #[doc = ""] + #[doc = " The value has the type `(BlockNumberFor, EventIndex)` because if we used only just"] + #[doc = " the `EventIndex` then in case if the topic has the same contents on the next block"] + #[doc = " no notification will be triggered thus the event might be lost."] + pub fn event_topics( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<(::core::primitive::u32, ::core::primitive::u32)>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "EventTopics", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 40u8, 225u8, 14u8, 75u8, 44u8, 176u8, 76u8, 34u8, 143u8, 107u8, 69u8, + 133u8, 114u8, 13u8, 172u8, 250u8, 141u8, 73u8, 12u8, 65u8, 217u8, 63u8, + 120u8, 241u8, 48u8, 106u8, 143u8, 161u8, 128u8, 100u8, 166u8, 59u8, + ], + ) + } + #[doc = " Mapping between a topic (represented by T::Hash) and a vector of indexes"] + #[doc = " of events in the `>` list."] + #[doc = ""] + #[doc = " All topic vectors have deterministic storage locations depending on the topic. This"] + #[doc = " allows light-clients to leverage the changes trie storage tracking mechanism and"] + #[doc = " in case of changes fetch the list of events of interest."] + #[doc = ""] + #[doc = " The value has the type `(BlockNumberFor, EventIndex)` because if we used only just"] + #[doc = " the `EventIndex` then in case if the topic has the same contents on the next block"] + #[doc = " no notification will be triggered thus the event might be lost."] + pub fn event_topics_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<(::core::primitive::u32, ::core::primitive::u32)>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "System", + "EventTopics", + Vec::new(), + [ + 40u8, 225u8, 14u8, 75u8, 44u8, 176u8, 76u8, 34u8, 143u8, 107u8, 69u8, + 133u8, 114u8, 13u8, 172u8, 250u8, 141u8, 73u8, 12u8, 65u8, 217u8, 63u8, + 120u8, 241u8, 48u8, 106u8, 143u8, 161u8, 128u8, 100u8, 166u8, 59u8, + ], + ) + } + #[doc = " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened."] + pub fn last_runtime_upgrade( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::frame_system::LastRuntimeUpgradeInfo, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "LastRuntimeUpgrade", + vec![], + [ + 137u8, 29u8, 175u8, 75u8, 197u8, 208u8, 91u8, 207u8, 156u8, 87u8, + 148u8, 68u8, 91u8, 140u8, 22u8, 233u8, 1u8, 229u8, 56u8, 34u8, 40u8, + 194u8, 253u8, 30u8, 163u8, 39u8, 54u8, 209u8, 13u8, 27u8, 139u8, 184u8, + ], + ) + } + #[doc = " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not."] + pub fn upgraded_to_u32_ref_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "UpgradedToU32RefCount", + vec![], + [ + 229u8, 73u8, 9u8, 132u8, 186u8, 116u8, 151u8, 171u8, 145u8, 29u8, 34u8, + 130u8, 52u8, 146u8, 124u8, 175u8, 79u8, 189u8, 147u8, 230u8, 234u8, + 107u8, 124u8, 31u8, 2u8, 22u8, 86u8, 190u8, 4u8, 147u8, 50u8, 245u8, + ], + ) + } + #[doc = " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False"] + #[doc = " (default) if not."] + pub fn upgraded_to_triple_ref_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "UpgradedToTripleRefCount", + vec![], + [ + 97u8, 66u8, 124u8, 243u8, 27u8, 167u8, 147u8, 81u8, 254u8, 201u8, + 101u8, 24u8, 40u8, 231u8, 14u8, 179u8, 154u8, 163u8, 71u8, 81u8, 185u8, + 167u8, 82u8, 254u8, 189u8, 3u8, 101u8, 207u8, 206u8, 194u8, 155u8, + 151u8, + ], + ) + } + #[doc = " The execution phase of the block."] + pub fn execution_phase( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::frame_system::Phase, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "ExecutionPhase", + vec![], + [ + 191u8, 129u8, 100u8, 134u8, 126u8, 116u8, 154u8, 203u8, 220u8, 200u8, + 0u8, 26u8, 161u8, 250u8, 133u8, 205u8, 146u8, 24u8, 5u8, 156u8, 158u8, + 35u8, 36u8, 253u8, 52u8, 235u8, 86u8, 167u8, 35u8, 100u8, 119u8, 27u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Block & extrinsics weights: base values and limits."] + pub fn block_weights( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "System", + "BlockWeights", + [ + 176u8, 124u8, 225u8, 136u8, 25u8, 73u8, 247u8, 33u8, 82u8, 206u8, 85u8, + 190u8, 127u8, 102u8, 71u8, 11u8, 185u8, 8u8, 58u8, 0u8, 94u8, 55u8, + 163u8, 177u8, 104u8, 59u8, 60u8, 136u8, 246u8, 116u8, 0u8, 239u8, + ], + ) + } + #[doc = " The maximum length of a block (in bytes)."] + pub fn block_length( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "System", + "BlockLength", + [ + 23u8, 242u8, 225u8, 39u8, 225u8, 67u8, 152u8, 41u8, 155u8, 104u8, 68u8, + 229u8, 185u8, 133u8, 10u8, 143u8, 184u8, 152u8, 234u8, 44u8, 140u8, + 96u8, 166u8, 235u8, 162u8, 160u8, 72u8, 7u8, 35u8, 194u8, 3u8, 37u8, + ], + ) + } + #[doc = " Maximum number of block number to block hash mappings to keep (oldest pruned first)."] + pub fn block_hash_count( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "System", + "BlockHashCount", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The weight of runtime database operations the runtime can invoke."] + pub fn db_weight( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "System", + "DbWeight", + [ + 42u8, 43u8, 178u8, 142u8, 243u8, 203u8, 60u8, 173u8, 118u8, 111u8, + 200u8, 170u8, 102u8, 70u8, 237u8, 187u8, 198u8, 120u8, 153u8, 232u8, + 183u8, 76u8, 74u8, 10u8, 70u8, 243u8, 14u8, 218u8, 213u8, 126u8, 29u8, + 177u8, + ], + ) + } + #[doc = " Get the chain's current version."] + pub fn version( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "System", + "Version", + [ + 219u8, 45u8, 162u8, 245u8, 177u8, 246u8, 48u8, 126u8, 191u8, 157u8, + 228u8, 83u8, 111u8, 133u8, 183u8, 13u8, 148u8, 108u8, 92u8, 102u8, + 72u8, 205u8, 74u8, 242u8, 233u8, 79u8, 20u8, 170u8, 72u8, 202u8, 158u8, + 165u8, + ], + ) + } + #[doc = " The designated SS58 prefix of this chain."] + #[doc = ""] + #[doc = " This replaces the \"ss58Format\" property declared in the chain spec. Reason is"] + #[doc = " that the runtime should know about the prefix in order to make use of it as"] + #[doc = " an identifier of the chain."] + pub fn ss58_prefix(&self) -> ::subxt::constants::Address<::core::primitive::u16> { + ::subxt::constants::Address::new_static( + "System", + "SS58Prefix", + [ + 116u8, 33u8, 2u8, 170u8, 181u8, 147u8, 171u8, 169u8, 167u8, 227u8, + 41u8, 144u8, 11u8, 236u8, 82u8, 100u8, 74u8, 60u8, 184u8, 72u8, 169u8, + 90u8, 208u8, 135u8, 15u8, 117u8, 10u8, 123u8, 128u8, 193u8, 29u8, 70u8, + ], + ) + } + } + } + } + pub mod scheduler { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_scheduler::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_scheduler::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Schedule { + pub when: ::core::primitive::u32, + pub maybe_periodic: + ::core::option::Option<(::core::primitive::u32, ::core::primitive::u32)>, + pub priority: ::core::primitive::u8, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for Schedule { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "schedule"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Cancel { + pub when: ::core::primitive::u32, + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Cancel { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ScheduleNamed { + pub id: [::core::primitive::u8; 32usize], + pub when: ::core::primitive::u32, + pub maybe_periodic: + ::core::option::Option<(::core::primitive::u32, ::core::primitive::u32)>, + pub priority: ::core::primitive::u8, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ScheduleNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "schedule_named"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CancelNamed { + pub id: [::core::primitive::u8; 32usize], + } + impl ::subxt::blocks::StaticExtrinsic for CancelNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel_named"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ScheduleAfter { + pub after: ::core::primitive::u32, + pub maybe_periodic: + ::core::option::Option<(::core::primitive::u32, ::core::primitive::u32)>, + pub priority: ::core::primitive::u8, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ScheduleAfter { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "schedule_after"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ScheduleNamedAfter { + pub id: [::core::primitive::u8; 32usize], + pub after: ::core::primitive::u32, + pub maybe_periodic: + ::core::option::Option<(::core::primitive::u32, ::core::primitive::u32)>, + pub priority: ::core::primitive::u8, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ScheduleNamedAfter { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "schedule_named_after"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::schedule`]."] + pub fn schedule( + &self, + when: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "schedule", + types::Schedule { + when, + maybe_periodic, + priority, + call: ::std::boxed::Box::new(call), + }, + [ + 24u8, 92u8, 10u8, 118u8, 175u8, 209u8, 215u8, 197u8, 205u8, 32u8, 98u8, + 195u8, 223u8, 102u8, 30u8, 156u8, 44u8, 2u8, 56u8, 176u8, 211u8, 21u8, + 177u8, 43u8, 5u8, 13u8, 219u8, 71u8, 254u8, 22u8, 139u8, 222u8, + ], + ) + } + #[doc = "See [`Pallet::cancel`]."] + pub fn cancel( + &self, + when: ::core::primitive::u32, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "cancel", + types::Cancel { when, index }, + [ + 183u8, 204u8, 143u8, 86u8, 17u8, 130u8, 132u8, 91u8, 133u8, 168u8, + 103u8, 129u8, 114u8, 56u8, 123u8, 42u8, 123u8, 120u8, 221u8, 211u8, + 26u8, 85u8, 82u8, 246u8, 192u8, 39u8, 254u8, 45u8, 147u8, 56u8, 178u8, + 133u8, + ], + ) + } + #[doc = "See [`Pallet::schedule_named`]."] + pub fn schedule_named( + &self, + id: [::core::primitive::u8; 32usize], + when: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "schedule_named", + types::ScheduleNamed { + id, + when, + maybe_periodic, + priority, + call: ::std::boxed::Box::new(call), + }, + [ + 115u8, 140u8, 23u8, 23u8, 35u8, 185u8, 155u8, 241u8, 195u8, 133u8, + 39u8, 14u8, 156u8, 134u8, 48u8, 248u8, 92u8, 67u8, 57u8, 203u8, 238u8, + 142u8, 193u8, 99u8, 102u8, 206u8, 66u8, 46u8, 26u8, 192u8, 81u8, 131u8, + ], + ) + } + #[doc = "See [`Pallet::cancel_named`]."] + pub fn cancel_named( + &self, + id: [::core::primitive::u8; 32usize], + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "cancel_named", + types::CancelNamed { id }, + [ + 205u8, 35u8, 28u8, 57u8, 224u8, 7u8, 49u8, 233u8, 236u8, 163u8, 93u8, + 236u8, 103u8, 69u8, 65u8, 51u8, 121u8, 84u8, 9u8, 196u8, 147u8, 122u8, + 227u8, 200u8, 181u8, 233u8, 62u8, 240u8, 174u8, 83u8, 129u8, 193u8, + ], + ) + } + #[doc = "See [`Pallet::schedule_after`]."] + pub fn schedule_after( + &self, + after: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "schedule_after", + types::ScheduleAfter { + after, + maybe_periodic, + priority, + call: ::std::boxed::Box::new(call), + }, + [ + 243u8, 36u8, 168u8, 98u8, 61u8, 209u8, 42u8, 149u8, 143u8, 140u8, + 151u8, 179u8, 232u8, 53u8, 198u8, 102u8, 73u8, 207u8, 102u8, 245u8, + 41u8, 229u8, 181u8, 77u8, 166u8, 90u8, 177u8, 226u8, 178u8, 101u8, + 248u8, 53u8, + ], + ) + } + #[doc = "See [`Pallet::schedule_named_after`]."] + pub fn schedule_named_after( + &self, + id: [::core::primitive::u8; 32usize], + after: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "schedule_named_after", + types::ScheduleNamedAfter { + id, + after, + maybe_periodic, + priority, + call: ::std::boxed::Box::new(call), + }, + [ + 161u8, 42u8, 129u8, 253u8, 80u8, 172u8, 53u8, 254u8, 137u8, 189u8, + 55u8, 160u8, 164u8, 18u8, 14u8, 205u8, 102u8, 69u8, 38u8, 62u8, 154u8, + 233u8, 67u8, 140u8, 242u8, 129u8, 228u8, 213u8, 96u8, 30u8, 121u8, + 101u8, + ], + ) + } + } + } + #[doc = "Events type."] + pub type Event = runtime_types::pallet_scheduler::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Scheduled some task."] + pub struct Scheduled { + pub when: ::core::primitive::u32, + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Scheduled { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "Scheduled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Canceled some task."] + pub struct Canceled { + pub when: ::core::primitive::u32, + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Canceled { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "Canceled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Dispatched some task."] + pub struct Dispatched { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for Dispatched { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "Dispatched"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The call for the provided hash was not found so the task has been aborted."] + pub struct CallUnavailable { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + } + impl ::subxt::events::StaticEvent for CallUnavailable { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "CallUnavailable"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The given task was unable to be renewed since the agenda is full at that block."] + pub struct PeriodicFailed { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + } + impl ::subxt::events::StaticEvent for PeriodicFailed { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "PeriodicFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The given task can never be executed since it is overweight."] + pub struct PermanentlyOverweight { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + } + impl ::subxt::events::StaticEvent for PermanentlyOverweight { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "PermanentlyOverweight"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + pub fn incomplete_since( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "IncompleteSince", + vec![], + [ + 250u8, 83u8, 64u8, 167u8, 205u8, 59u8, 225u8, 97u8, 205u8, 12u8, 76u8, + 130u8, 197u8, 4u8, 111u8, 208u8, 92u8, 217u8, 145u8, 119u8, 38u8, + 135u8, 1u8, 242u8, 228u8, 143u8, 56u8, 25u8, 115u8, 233u8, 227u8, 66u8, + ], + ) + } + #[doc = " Items to be executed, indexed by the block number that they should be executed on."] + pub fn agenda( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::option::Option< + runtime_types::pallet_scheduler::Scheduled< + [::core::primitive::u8; 32usize], + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + ::core::primitive::u32, + runtime_types::paseo_runtime::OriginCaller, + ::subxt::utils::AccountId32, + >, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Agenda", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 165u8, 48u8, 160u8, 110u8, 125u8, 82u8, 137u8, 75u8, 221u8, 37u8, + 199u8, 179u8, 190u8, 152u8, 161u8, 160u8, 91u8, 67u8, 41u8, 116u8, 5u8, + 164u8, 69u8, 30u8, 43u8, 44u8, 234u8, 165u8, 225u8, 21u8, 23u8, 195u8, + ], + ) + } + #[doc = " Items to be executed, indexed by the block number that they should be executed on."] + pub fn agenda_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::option::Option< + runtime_types::pallet_scheduler::Scheduled< + [::core::primitive::u8; 32usize], + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + ::core::primitive::u32, + runtime_types::paseo_runtime::OriginCaller, + ::subxt::utils::AccountId32, + >, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Agenda", + Vec::new(), + [ + 165u8, 48u8, 160u8, 110u8, 125u8, 82u8, 137u8, 75u8, 221u8, 37u8, + 199u8, 179u8, 190u8, 152u8, 161u8, 160u8, 91u8, 67u8, 41u8, 116u8, 5u8, + 164u8, 69u8, 30u8, 43u8, 44u8, 234u8, 165u8, 225u8, 21u8, 23u8, 195u8, + ], + ) + } + #[doc = " Lookup from a name to the block number and index of the task."] + #[doc = ""] + #[doc = " For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4"] + #[doc = " identities."] + pub fn lookup( + &self, + _0: impl ::std::borrow::Borrow<[::core::primitive::u8; 32usize]>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u32, ::core::primitive::u32), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Lookup", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 24u8, 87u8, 96u8, 127u8, 136u8, 205u8, 238u8, 174u8, 71u8, 110u8, 65u8, + 98u8, 228u8, 167u8, 99u8, 71u8, 171u8, 186u8, 12u8, 218u8, 137u8, 70u8, + 70u8, 228u8, 153u8, 111u8, 165u8, 114u8, 229u8, 136u8, 118u8, 131u8, + ], + ) + } + #[doc = " Lookup from a name to the block number and index of the task."] + #[doc = ""] + #[doc = " For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4"] + #[doc = " identities."] + pub fn lookup_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u32, ::core::primitive::u32), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Lookup", + Vec::new(), + [ + 24u8, 87u8, 96u8, 127u8, 136u8, 205u8, 238u8, 174u8, 71u8, 110u8, 65u8, + 98u8, 228u8, 167u8, 99u8, 71u8, 171u8, 186u8, 12u8, 218u8, 137u8, 70u8, + 70u8, 228u8, 153u8, 111u8, 165u8, 114u8, 229u8, 136u8, 118u8, 131u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The maximum weight that may be scheduled per block for any dispatchables."] + pub fn maximum_weight( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Scheduler", + "MaximumWeight", + [ + 149u8, 252u8, 129u8, 80u8, 169u8, 36u8, 79u8, 127u8, 240u8, 156u8, + 56u8, 202u8, 219u8, 86u8, 5u8, 65u8, 245u8, 148u8, 138u8, 243u8, 210u8, + 128u8, 234u8, 216u8, 240u8, 219u8, 123u8, 235u8, 21u8, 158u8, 237u8, + 112u8, + ], + ) + } + #[doc = " The maximum number of scheduled calls in the queue for a single block."] + #[doc = ""] + #[doc = " NOTE:"] + #[doc = " + Dependent pallets' benchmarks might require a higher limit for the setting. Set a"] + #[doc = " higher limit under `runtime-benchmarks` feature."] + pub fn max_scheduled_per_block( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Scheduler", + "MaxScheduledPerBlock", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod preimage { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_preimage::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_preimage::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NotePreimage { + pub bytes: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for NotePreimage { + const PALLET: &'static str = "Preimage"; + const CALL: &'static str = "note_preimage"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnnotePreimage { + pub hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for UnnotePreimage { + const PALLET: &'static str = "Preimage"; + const CALL: &'static str = "unnote_preimage"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RequestPreimage { + pub hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for RequestPreimage { + const PALLET: &'static str = "Preimage"; + const CALL: &'static str = "request_preimage"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnrequestPreimage { + pub hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for UnrequestPreimage { + const PALLET: &'static str = "Preimage"; + const CALL: &'static str = "unrequest_preimage"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EnsureUpdated { + pub hashes: ::std::vec::Vec<::subxt::utils::H256>, + } + impl ::subxt::blocks::StaticExtrinsic for EnsureUpdated { + const PALLET: &'static str = "Preimage"; + const CALL: &'static str = "ensure_updated"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::note_preimage`]."] + pub fn note_preimage( + &self, + bytes: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Preimage", + "note_preimage", + types::NotePreimage { bytes }, + [ + 121u8, 88u8, 18u8, 92u8, 176u8, 15u8, 192u8, 198u8, 146u8, 198u8, 38u8, + 242u8, 213u8, 83u8, 7u8, 230u8, 14u8, 110u8, 235u8, 32u8, 215u8, 26u8, + 192u8, 217u8, 113u8, 224u8, 206u8, 96u8, 177u8, 198u8, 246u8, 33u8, + ], + ) + } + #[doc = "See [`Pallet::unnote_preimage`]."] + pub fn unnote_preimage( + &self, + hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Preimage", + "unnote_preimage", + types::UnnotePreimage { hash }, + [ + 188u8, 116u8, 222u8, 22u8, 127u8, 215u8, 2u8, 133u8, 96u8, 202u8, + 190u8, 123u8, 203u8, 43u8, 200u8, 161u8, 226u8, 24u8, 49u8, 36u8, + 221u8, 160u8, 130u8, 119u8, 30u8, 138u8, 144u8, 85u8, 5u8, 164u8, + 252u8, 222u8, + ], + ) + } + #[doc = "See [`Pallet::request_preimage`]."] + pub fn request_preimage( + &self, + hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Preimage", + "request_preimage", + types::RequestPreimage { hash }, + [ + 87u8, 0u8, 204u8, 111u8, 43u8, 115u8, 64u8, 209u8, 133u8, 13u8, 83u8, + 45u8, 164u8, 166u8, 233u8, 105u8, 242u8, 238u8, 235u8, 208u8, 113u8, + 134u8, 93u8, 242u8, 86u8, 32u8, 7u8, 152u8, 107u8, 208u8, 79u8, 59u8, + ], + ) + } + #[doc = "See [`Pallet::unrequest_preimage`]."] + pub fn unrequest_preimage( + &self, + hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Preimage", + "unrequest_preimage", + types::UnrequestPreimage { hash }, + [ + 55u8, 37u8, 224u8, 149u8, 142u8, 120u8, 8u8, 68u8, 183u8, 225u8, 255u8, + 240u8, 254u8, 111u8, 58u8, 200u8, 113u8, 217u8, 177u8, 203u8, 107u8, + 104u8, 233u8, 87u8, 252u8, 53u8, 33u8, 112u8, 116u8, 254u8, 117u8, + 134u8, + ], + ) + } + #[doc = "See [`Pallet::ensure_updated`]."] + pub fn ensure_updated( + &self, + hashes: ::std::vec::Vec<::subxt::utils::H256>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Preimage", + "ensure_updated", + types::EnsureUpdated { hashes }, + [ + 254u8, 228u8, 88u8, 44u8, 126u8, 235u8, 188u8, 153u8, 61u8, 27u8, + 103u8, 253u8, 163u8, 161u8, 113u8, 243u8, 87u8, 136u8, 2u8, 231u8, + 209u8, 188u8, 215u8, 106u8, 192u8, 225u8, 75u8, 125u8, 224u8, 96u8, + 221u8, 90u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_preimage::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A preimage has been noted."] + pub struct Noted { + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for Noted { + const PALLET: &'static str = "Preimage"; + const EVENT: &'static str = "Noted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A preimage has been requested."] + pub struct Requested { + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for Requested { + const PALLET: &'static str = "Preimage"; + const EVENT: &'static str = "Requested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A preimage has ben cleared."] + pub struct Cleared { + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for Cleared { + const PALLET: &'static str = "Preimage"; + const EVENT: &'static str = "Cleared"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The request status of a given hash."] + pub fn status_for( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_preimage::OldRequestStatus< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Preimage", + "StatusFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 187u8, 100u8, 54u8, 112u8, 96u8, 129u8, 36u8, 149u8, 127u8, 226u8, + 126u8, 171u8, 72u8, 189u8, 59u8, 126u8, 204u8, 125u8, 67u8, 204u8, + 231u8, 6u8, 212u8, 135u8, 166u8, 252u8, 5u8, 46u8, 111u8, 120u8, 54u8, + 209u8, + ], + ) + } + #[doc = " The request status of a given hash."] + pub fn status_for_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_preimage::OldRequestStatus< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Preimage", + "StatusFor", + Vec::new(), + [ + 187u8, 100u8, 54u8, 112u8, 96u8, 129u8, 36u8, 149u8, 127u8, 226u8, + 126u8, 171u8, 72u8, 189u8, 59u8, 126u8, 204u8, 125u8, 67u8, 204u8, + 231u8, 6u8, 212u8, 135u8, 166u8, 252u8, 5u8, 46u8, 111u8, 120u8, 54u8, + 209u8, + ], + ) + } + #[doc = " The request status of a given hash."] + pub fn request_status_for( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_preimage::RequestStatus< + ::subxt::utils::AccountId32, + runtime_types::frame_support::traits::tokens::fungible::HoldConsideration, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Preimage", + "RequestStatusFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 72u8, 59u8, 254u8, 211u8, 96u8, 223u8, 10u8, 64u8, 6u8, 139u8, 213u8, + 85u8, 14u8, 29u8, 166u8, 37u8, 140u8, 124u8, 186u8, 156u8, 172u8, + 157u8, 73u8, 5u8, 121u8, 117u8, 51u8, 6u8, 249u8, 203u8, 75u8, 190u8, + ], + ) + } + #[doc = " The request status of a given hash."] + pub fn request_status_for_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_preimage::RequestStatus< + ::subxt::utils::AccountId32, + runtime_types::frame_support::traits::tokens::fungible::HoldConsideration, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Preimage", + "RequestStatusFor", + Vec::new(), + [ + 72u8, 59u8, 254u8, 211u8, 96u8, 223u8, 10u8, 64u8, 6u8, 139u8, 213u8, + 85u8, 14u8, 29u8, 166u8, 37u8, 140u8, 124u8, 186u8, 156u8, 172u8, + 157u8, 73u8, 5u8, 121u8, 117u8, 51u8, 6u8, 249u8, 203u8, 75u8, 190u8, + ], + ) + } + pub fn preimage_for( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Preimage", + "PreimageFor", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, + 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, + 208u8, 49u8, 156u8, 200u8, 255u8, 109u8, 200u8, 210u8, 134u8, 24u8, + 139u8, + ], + ) + } + pub fn preimage_for_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Preimage", + "PreimageFor", + Vec::new(), + [ + 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, + 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, + 208u8, 49u8, 156u8, 200u8, 255u8, 109u8, 200u8, 210u8, 134u8, 24u8, + 139u8, + ], + ) + } + } + } + } + pub mod babe { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_babe::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_babe::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocation { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header< + ::core::primitive::u32, + >, + runtime_types::sp_consensus_babe::app::Public, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { + const PALLET: &'static str = "Babe"; + const CALL: &'static str = "report_equivocation"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocationUnsigned { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header< + ::core::primitive::u32, + >, + runtime_types::sp_consensus_babe::app::Public, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + const PALLET: &'static str = "Babe"; + const CALL: &'static str = "report_equivocation_unsigned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PlanConfigChange { + pub config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, + } + impl ::subxt::blocks::StaticExtrinsic for PlanConfigChange { + const PALLET: &'static str = "Babe"; + const CALL: &'static str = "plan_config_change"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::report_equivocation`]."] + pub fn report_equivocation( + &self, + equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + runtime_types::sp_consensus_babe::app::Public, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Babe", + "report_equivocation", + types::ReportEquivocation { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 37u8, 70u8, 151u8, 149u8, 231u8, 197u8, 226u8, 88u8, 38u8, 138u8, + 147u8, 164u8, 250u8, 117u8, 156u8, 178u8, 44u8, 20u8, 123u8, 33u8, + 11u8, 106u8, 56u8, 122u8, 90u8, 11u8, 15u8, 219u8, 245u8, 18u8, 171u8, + 90u8, + ], + ) + } + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + pub fn report_equivocation_unsigned( + &self, + equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + runtime_types::sp_consensus_babe::app::Public, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Babe", + "report_equivocation_unsigned", + types::ReportEquivocationUnsigned { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 179u8, 248u8, 80u8, 171u8, 220u8, 8u8, 75u8, 215u8, 121u8, 151u8, + 255u8, 4u8, 6u8, 54u8, 141u8, 244u8, 111u8, 156u8, 183u8, 19u8, 192u8, + 195u8, 79u8, 53u8, 0u8, 170u8, 120u8, 227u8, 186u8, 45u8, 48u8, 57u8, + ], + ) + } + #[doc = "See [`Pallet::plan_config_change`]."] + pub fn plan_config_change( + &self, + config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Babe", + "plan_config_change", + types::PlanConfigChange { config }, + [ + 227u8, 155u8, 182u8, 231u8, 240u8, 107u8, 30u8, 22u8, 15u8, 52u8, + 172u8, 203u8, 115u8, 47u8, 6u8, 66u8, 170u8, 231u8, 186u8, 77u8, 19u8, + 235u8, 91u8, 136u8, 95u8, 149u8, 188u8, 163u8, 161u8, 109u8, 164u8, + 179u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Current epoch index."] + pub fn epoch_index( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "EpochIndex", + vec![], + [ + 32u8, 82u8, 130u8, 31u8, 190u8, 162u8, 237u8, 189u8, 104u8, 244u8, + 30u8, 199u8, 179u8, 0u8, 161u8, 107u8, 72u8, 240u8, 201u8, 222u8, + 177u8, 222u8, 35u8, 156u8, 81u8, 132u8, 162u8, 118u8, 238u8, 84u8, + 112u8, 89u8, + ], + ) + } + #[doc = " Current epoch authorities."] + pub fn authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::sp_consensus_babe::app::Public, + ::core::primitive::u64, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "Authorities", + vec![], + [ + 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, + 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, + 153u8, 234u8, 181u8, 252u8, 55u8, 198u8, 175u8, 55u8, 211u8, 105u8, + 85u8, + ], + ) + } + #[doc = " The slot at which the first epoch actually started. This is 0"] + #[doc = " until the first block of the chain."] + pub fn genesis_slot( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_consensus_slots::Slot, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "GenesisSlot", + vec![], + [ + 218u8, 174u8, 152u8, 76u8, 188u8, 214u8, 7u8, 88u8, 253u8, 187u8, + 139u8, 234u8, 51u8, 28u8, 220u8, 57u8, 73u8, 1u8, 18u8, 205u8, 80u8, + 160u8, 120u8, 216u8, 139u8, 191u8, 100u8, 108u8, 162u8, 106u8, 175u8, + 107u8, + ], + ) + } + #[doc = " Current slot number."] + pub fn current_slot( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_consensus_slots::Slot, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "CurrentSlot", + vec![], + [ + 112u8, 199u8, 115u8, 248u8, 217u8, 242u8, 45u8, 231u8, 178u8, 53u8, + 236u8, 167u8, 219u8, 238u8, 81u8, 243u8, 39u8, 140u8, 68u8, 19u8, + 201u8, 169u8, 211u8, 133u8, 135u8, 213u8, 150u8, 105u8, 60u8, 252u8, + 43u8, 57u8, + ], + ) + } + #[doc = " The epoch randomness for the *current* epoch."] + #[doc = ""] + #[doc = " # Security"] + #[doc = ""] + #[doc = " This MUST NOT be used for gambling, as it can be influenced by a"] + #[doc = " malicious validator in the short term. It MAY be used in many"] + #[doc = " cryptographic protocols, however, so long as one remembers that this"] + #[doc = " (like everything else on-chain) it is public. For example, it can be"] + #[doc = " used where a number is needed that cannot have been chosen by an"] + #[doc = " adversary, for purposes such as public-coin zero-knowledge proofs."] + pub fn randomness( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + [::core::primitive::u8; 32usize], + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "Randomness", + vec![], + [ + 36u8, 15u8, 52u8, 73u8, 195u8, 177u8, 186u8, 125u8, 134u8, 11u8, 103u8, + 248u8, 170u8, 237u8, 105u8, 239u8, 168u8, 204u8, 147u8, 52u8, 15u8, + 226u8, 126u8, 176u8, 133u8, 186u8, 169u8, 241u8, 156u8, 118u8, 67u8, + 58u8, + ], + ) + } + #[doc = " Pending epoch configuration change that will be applied when the next epoch is enacted."] + pub fn pending_epoch_config_change( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "PendingEpochConfigChange", + vec![], + [ + 79u8, 216u8, 84u8, 210u8, 83u8, 149u8, 122u8, 160u8, 159u8, 164u8, + 16u8, 134u8, 154u8, 104u8, 77u8, 254u8, 139u8, 18u8, 163u8, 59u8, 92u8, + 9u8, 135u8, 141u8, 147u8, 86u8, 44u8, 95u8, 183u8, 101u8, 11u8, 58u8, + ], + ) + } + #[doc = " Next epoch randomness."] + pub fn next_randomness( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + [::core::primitive::u8; 32usize], + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "NextRandomness", + vec![], + [ + 96u8, 191u8, 139u8, 171u8, 144u8, 92u8, 33u8, 58u8, 23u8, 219u8, 164u8, + 121u8, 59u8, 209u8, 112u8, 244u8, 50u8, 8u8, 14u8, 244u8, 103u8, 125u8, + 120u8, 210u8, 16u8, 250u8, 54u8, 192u8, 72u8, 8u8, 219u8, 152u8, + ], + ) + } + #[doc = " Next epoch authorities."] + pub fn next_authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::sp_consensus_babe::app::Public, + ::core::primitive::u64, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "NextAuthorities", + vec![], + [ + 116u8, 95u8, 126u8, 199u8, 237u8, 90u8, 202u8, 227u8, 247u8, 56u8, + 201u8, 113u8, 239u8, 191u8, 151u8, 56u8, 156u8, 133u8, 61u8, 64u8, + 141u8, 26u8, 8u8, 95u8, 177u8, 255u8, 54u8, 223u8, 132u8, 74u8, 210u8, + 128u8, + ], + ) + } + #[doc = " Randomness under construction."] + #[doc = ""] + #[doc = " We make a trade-off between storage accesses and list length."] + #[doc = " We store the under-construction randomness in segments of up to"] + #[doc = " `UNDER_CONSTRUCTION_SEGMENT_LENGTH`."] + #[doc = ""] + #[doc = " Once a segment reaches this length, we begin the next one."] + #[doc = " We reset all segments and return to `0` at the beginning of every"] + #[doc = " epoch."] + pub fn segment_index( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "SegmentIndex", + vec![], + [ + 145u8, 91u8, 142u8, 240u8, 184u8, 94u8, 68u8, 52u8, 130u8, 3u8, 75u8, + 175u8, 155u8, 130u8, 66u8, 9u8, 150u8, 242u8, 123u8, 111u8, 124u8, + 241u8, 100u8, 128u8, 220u8, 133u8, 96u8, 227u8, 164u8, 241u8, 170u8, + 34u8, + ], + ) + } + #[doc = " TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay."] + pub fn under_construction( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + [::core::primitive::u8; 32usize], + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "UnderConstruction", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 120u8, 120u8, 59u8, 247u8, 50u8, 6u8, 220u8, 14u8, 2u8, 76u8, 203u8, + 244u8, 232u8, 144u8, 253u8, 191u8, 101u8, 35u8, 99u8, 85u8, 111u8, + 168u8, 31u8, 110u8, 187u8, 124u8, 72u8, 32u8, 43u8, 66u8, 8u8, 215u8, + ], + ) + } + #[doc = " TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay."] + pub fn under_construction_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + [::core::primitive::u8; 32usize], + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "UnderConstruction", + Vec::new(), + [ + 120u8, 120u8, 59u8, 247u8, 50u8, 6u8, 220u8, 14u8, 2u8, 76u8, 203u8, + 244u8, 232u8, 144u8, 253u8, 191u8, 101u8, 35u8, 99u8, 85u8, 111u8, + 168u8, 31u8, 110u8, 187u8, 124u8, 72u8, 32u8, 43u8, 66u8, 8u8, 215u8, + ], + ) + } + #[doc = " Temporary value (cleared at block finalization) which is `Some`"] + #[doc = " if per-block initialization has already been called for current block."] + pub fn initialized( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::option::Option, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "Initialized", + vec![], + [ + 137u8, 31u8, 4u8, 130u8, 35u8, 232u8, 67u8, 108u8, 17u8, 123u8, 26u8, + 96u8, 238u8, 95u8, 138u8, 208u8, 163u8, 83u8, 218u8, 143u8, 8u8, 119u8, + 138u8, 130u8, 9u8, 194u8, 92u8, 40u8, 7u8, 89u8, 53u8, 237u8, + ], + ) + } + #[doc = " This field should always be populated during block processing unless"] + #[doc = " secondary plain slots are enabled (which don't contain a VRF output)."] + #[doc = ""] + #[doc = " It is set in `on_finalize`, before it will contain the value from the last block."] + pub fn author_vrf_randomness( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::option::Option<[::core::primitive::u8; 32usize]>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "AuthorVrfRandomness", + vec![], + [ + 160u8, 157u8, 62u8, 48u8, 196u8, 136u8, 63u8, 132u8, 155u8, 183u8, + 91u8, 201u8, 146u8, 29u8, 192u8, 142u8, 168u8, 152u8, 197u8, 233u8, + 5u8, 25u8, 0u8, 154u8, 234u8, 180u8, 146u8, 132u8, 106u8, 164u8, 149u8, + 63u8, + ], + ) + } + #[doc = " The block numbers when the last and current epoch have started, respectively `N-1` and"] + #[doc = " `N`."] + #[doc = " NOTE: We track this is in order to annotate the block number when a given pool of"] + #[doc = " entropy was fixed (i.e. it was known to chain observers). Since epochs are defined in"] + #[doc = " slots, which may be skipped, the block numbers may not line up with the slot numbers."] + pub fn epoch_start( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u32, ::core::primitive::u32), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "EpochStart", + vec![], + [ + 144u8, 133u8, 140u8, 56u8, 241u8, 203u8, 199u8, 123u8, 244u8, 126u8, + 196u8, 151u8, 214u8, 204u8, 243u8, 244u8, 210u8, 198u8, 174u8, 126u8, + 200u8, 236u8, 248u8, 190u8, 181u8, 152u8, 113u8, 224u8, 95u8, 234u8, + 169u8, 14u8, + ], + ) + } + #[doc = " How late the current block is compared to its parent."] + #[doc = ""] + #[doc = " This entry is populated as part of block execution and is cleaned up"] + #[doc = " on block finalization. Querying this storage entry outside of block"] + #[doc = " execution context should always yield zero."] + pub fn lateness( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "Lateness", + vec![], + [ + 229u8, 214u8, 133u8, 149u8, 32u8, 159u8, 26u8, 22u8, 252u8, 131u8, + 200u8, 191u8, 231u8, 176u8, 178u8, 127u8, 33u8, 212u8, 139u8, 220u8, + 157u8, 38u8, 4u8, 226u8, 204u8, 32u8, 55u8, 20u8, 205u8, 141u8, 29u8, + 87u8, + ], + ) + } + #[doc = " The configuration for the current epoch. Should never be `None` as it is initialized in"] + #[doc = " genesis."] + pub fn epoch_config( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_consensus_babe::BabeEpochConfiguration, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "EpochConfig", + vec![], + [ + 151u8, 58u8, 93u8, 2u8, 19u8, 98u8, 41u8, 144u8, 241u8, 70u8, 195u8, + 37u8, 126u8, 241u8, 111u8, 65u8, 16u8, 228u8, 111u8, 220u8, 241u8, + 215u8, 179u8, 235u8, 122u8, 88u8, 92u8, 95u8, 131u8, 252u8, 236u8, + 46u8, + ], + ) + } + #[doc = " The configuration for the next epoch, `None` if the config will not change"] + #[doc = " (you can fallback to `EpochConfig` instead in that case)."] + pub fn next_epoch_config( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_consensus_babe::BabeEpochConfiguration, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "NextEpochConfig", + vec![], + [ + 65u8, 54u8, 74u8, 141u8, 193u8, 124u8, 130u8, 238u8, 106u8, 27u8, + 221u8, 189u8, 103u8, 53u8, 39u8, 243u8, 212u8, 216u8, 75u8, 185u8, + 104u8, 220u8, 70u8, 108u8, 87u8, 172u8, 201u8, 185u8, 39u8, 55u8, + 145u8, 6u8, + ], + ) + } + #[doc = " A list of the last 100 skipped epochs and the corresponding session index"] + #[doc = " when the epoch was skipped."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof"] + #[doc = " must contains a key-ownership proof for a given session, therefore we need a"] + #[doc = " way to tie together sessions and epoch indices, i.e. we need to validate that"] + #[doc = " a validator was the owner of a given key on a given session, and what the"] + #[doc = " active epoch index was during that session."] + pub fn skipped_epochs( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u64, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Babe", + "SkippedEpochs", + vec![], + [ + 120u8, 167u8, 144u8, 97u8, 41u8, 216u8, 103u8, 90u8, 3u8, 86u8, 196u8, + 35u8, 160u8, 150u8, 144u8, 233u8, 128u8, 35u8, 119u8, 66u8, 6u8, 63u8, + 114u8, 140u8, 182u8, 228u8, 192u8, 30u8, 50u8, 145u8, 217u8, 108u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The amount of time, in slots, that each epoch should last."] + #[doc = " NOTE: Currently it is not possible to change the epoch duration after"] + #[doc = " the chain has started. Attempting to do so will brick block production."] + pub fn epoch_duration( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Babe", + "EpochDuration", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + #[doc = " The expected average block time at which BABE should be creating"] + #[doc = " blocks. Since BABE is probabilistic it is not trivial to figure out"] + #[doc = " what the expected average block time should be based on the slot"] + #[doc = " duration and the security parameter `c` (where `1 - c` represents"] + #[doc = " the probability of a slot being empty)."] + pub fn expected_block_time( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Babe", + "ExpectedBlockTime", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + #[doc = " Max number of authorities allowed"] + pub fn max_authorities( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Babe", + "MaxAuthorities", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators for each validator."] + pub fn max_nominators( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Babe", + "MaxNominators", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod timestamp { + use super::{root_mod, runtime_types}; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_timestamp::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Set { + #[codec(compact)] + pub now: ::core::primitive::u64, + } + impl ::subxt::blocks::StaticExtrinsic for Set { + const PALLET: &'static str = "Timestamp"; + const CALL: &'static str = "set"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::set`]."] + pub fn set(&self, now: ::core::primitive::u64) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Timestamp", + "set", + types::Set { now }, + [ + 37u8, 95u8, 49u8, 218u8, 24u8, 22u8, 0u8, 95u8, 72u8, 35u8, 155u8, + 199u8, 213u8, 54u8, 207u8, 22u8, 185u8, 193u8, 221u8, 70u8, 18u8, + 200u8, 4u8, 231u8, 195u8, 173u8, 6u8, 122u8, 11u8, 203u8, 231u8, 227u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The current time for the current block."] + pub fn now( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Timestamp", + "Now", + vec![], + [ + 44u8, 50u8, 80u8, 30u8, 195u8, 146u8, 123u8, 238u8, 8u8, 163u8, 187u8, + 92u8, 61u8, 39u8, 51u8, 29u8, 173u8, 169u8, 217u8, 158u8, 85u8, 187u8, + 141u8, 26u8, 12u8, 115u8, 51u8, 11u8, 200u8, 244u8, 138u8, 152u8, + ], + ) + } + #[doc = " Whether the timestamp has been updated in this block."] + #[doc = ""] + #[doc = " This value is updated to `true` upon successful submission of a timestamp by a node."] + #[doc = " It is then checked at the end of each block execution in the `on_finalize` hook."] + pub fn did_update( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Timestamp", + "DidUpdate", + vec![], + [ + 229u8, 175u8, 246u8, 102u8, 237u8, 158u8, 212u8, 229u8, 238u8, 214u8, + 205u8, 160u8, 164u8, 252u8, 195u8, 75u8, 139u8, 110u8, 22u8, 34u8, + 248u8, 204u8, 107u8, 46u8, 20u8, 200u8, 238u8, 167u8, 71u8, 41u8, + 214u8, 140u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The minimum period between blocks."] + #[doc = ""] + #[doc = " Be aware that this is different to the *expected* period that the block production"] + #[doc = " apparatus provides. Your chosen consensus system will generally work with this to"] + #[doc = " determine a sensible block time. For example, in the Aura pallet it will be double this"] + #[doc = " period on default settings."] + pub fn minimum_period( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Timestamp", + "MinimumPeriod", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod indices { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_indices::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_indices::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Claim { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Claim { + const PALLET: &'static str = "Indices"; + const CALL: &'static str = "claim"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Transfer { + pub new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Transfer { + const PALLET: &'static str = "Indices"; + const CALL: &'static str = "transfer"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Free { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Free { + const PALLET: &'static str = "Indices"; + const CALL: &'static str = "free"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceTransfer { + pub new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub index: ::core::primitive::u32, + pub freeze: ::core::primitive::bool, + } + impl ::subxt::blocks::StaticExtrinsic for ForceTransfer { + const PALLET: &'static str = "Indices"; + const CALL: &'static str = "force_transfer"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Freeze { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Freeze { + const PALLET: &'static str = "Indices"; + const CALL: &'static str = "freeze"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::claim`]."] + pub fn claim( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Indices", + "claim", + types::Claim { index }, + [ + 146u8, 58u8, 246u8, 135u8, 59u8, 90u8, 3u8, 5u8, 140u8, 169u8, 232u8, + 195u8, 11u8, 107u8, 36u8, 141u8, 118u8, 174u8, 160u8, 160u8, 19u8, + 205u8, 177u8, 193u8, 18u8, 102u8, 115u8, 31u8, 72u8, 29u8, 91u8, 235u8, + ], + ) + } + #[doc = "See [`Pallet::transfer`]."] + pub fn transfer( + &self, + new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Indices", + "transfer", + types::Transfer { new, index }, + [ + 121u8, 156u8, 174u8, 248u8, 72u8, 126u8, 99u8, 188u8, 71u8, 134u8, + 107u8, 147u8, 139u8, 139u8, 57u8, 198u8, 17u8, 241u8, 142u8, 64u8, + 16u8, 121u8, 249u8, 146u8, 24u8, 86u8, 78u8, 187u8, 38u8, 146u8, 96u8, + 218u8, + ], + ) + } + #[doc = "See [`Pallet::free`]."] + pub fn free( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Indices", + "free", + types::Free { index }, + [ + 241u8, 211u8, 234u8, 102u8, 189u8, 22u8, 209u8, 27u8, 8u8, 229u8, 80u8, + 227u8, 138u8, 252u8, 222u8, 111u8, 77u8, 201u8, 235u8, 51u8, 163u8, + 247u8, 13u8, 126u8, 216u8, 136u8, 57u8, 222u8, 56u8, 66u8, 215u8, + 244u8, + ], + ) + } + #[doc = "See [`Pallet::force_transfer`]."] + pub fn force_transfer( + &self, + new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + index: ::core::primitive::u32, + freeze: ::core::primitive::bool, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Indices", + "force_transfer", + types::ForceTransfer { new, index, freeze }, + [ + 137u8, 128u8, 43u8, 135u8, 129u8, 169u8, 162u8, 136u8, 175u8, 31u8, + 161u8, 120u8, 15u8, 176u8, 203u8, 23u8, 107u8, 31u8, 135u8, 200u8, + 221u8, 186u8, 162u8, 229u8, 238u8, 82u8, 192u8, 122u8, 136u8, 6u8, + 176u8, 42u8, + ], + ) + } + #[doc = "See [`Pallet::freeze`]."] + pub fn freeze( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Indices", + "freeze", + types::Freeze { index }, + [ + 238u8, 215u8, 108u8, 156u8, 84u8, 240u8, 130u8, 229u8, 27u8, 132u8, + 93u8, 78u8, 2u8, 251u8, 43u8, 203u8, 2u8, 142u8, 147u8, 48u8, 92u8, + 101u8, 207u8, 24u8, 51u8, 16u8, 36u8, 229u8, 188u8, 129u8, 160u8, + 117u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_indices::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A account index was assigned."] + pub struct IndexAssigned { + pub who: ::subxt::utils::AccountId32, + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for IndexAssigned { + const PALLET: &'static str = "Indices"; + const EVENT: &'static str = "IndexAssigned"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A account index has been freed up (unassigned)."] + pub struct IndexFreed { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for IndexFreed { + const PALLET: &'static str = "Indices"; + const EVENT: &'static str = "IndexFreed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A account index has been frozen to its current account ID."] + pub struct IndexFrozen { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for IndexFrozen { + const PALLET: &'static str = "Indices"; + const EVENT: &'static str = "IndexFrozen"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The lookup from index to account."] + pub fn accounts( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::subxt::utils::AccountId32, ::core::primitive::u128, ::core::primitive::bool), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Indices", + "Accounts", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 48u8, 189u8, 43u8, 119u8, 32u8, 168u8, 28u8, 12u8, 245u8, 81u8, 119u8, + 182u8, 23u8, 201u8, 33u8, 147u8, 128u8, 171u8, 155u8, 134u8, 71u8, + 87u8, 100u8, 248u8, 107u8, 129u8, 36u8, 197u8, 220u8, 90u8, 11u8, + 238u8, + ], + ) + } + #[doc = " The lookup from index to account."] + pub fn accounts_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::subxt::utils::AccountId32, ::core::primitive::u128, ::core::primitive::bool), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Indices", + "Accounts", + Vec::new(), + [ + 48u8, 189u8, 43u8, 119u8, 32u8, 168u8, 28u8, 12u8, 245u8, 81u8, 119u8, + 182u8, 23u8, 201u8, 33u8, 147u8, 128u8, 171u8, 155u8, 134u8, 71u8, + 87u8, 100u8, 248u8, 107u8, 129u8, 36u8, 197u8, 220u8, 90u8, 11u8, + 238u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The deposit needed for reserving an index."] + pub fn deposit(&self) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Indices", + "Deposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + } + } + } + pub mod balances { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_balances::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_balances::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TransferAllowDeath { + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub value: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for TransferAllowDeath { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "transfer_allow_death"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceTransfer { + pub source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub value: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for ForceTransfer { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "force_transfer"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TransferKeepAlive { + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub value: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for TransferKeepAlive { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "transfer_keep_alive"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TransferAll { + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub keep_alive: ::core::primitive::bool, + } + impl ::subxt::blocks::StaticExtrinsic for TransferAll { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "transfer_all"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceUnreserve { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub amount: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for ForceUnreserve { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "force_unreserve"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UpgradeAccounts { + pub who: ::std::vec::Vec<::subxt::utils::AccountId32>, + } + impl ::subxt::blocks::StaticExtrinsic for UpgradeAccounts { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "upgrade_accounts"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSetBalance { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub new_free: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for ForceSetBalance { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "force_set_balance"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::transfer_allow_death`]."] + pub fn transfer_allow_death( + &self, + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "transfer_allow_death", + types::TransferAllowDeath { dest, value }, + [ + 51u8, 166u8, 195u8, 10u8, 139u8, 218u8, 55u8, 130u8, 6u8, 194u8, 35u8, + 140u8, 27u8, 205u8, 214u8, 222u8, 102u8, 43u8, 143u8, 145u8, 86u8, + 219u8, 210u8, 147u8, 13u8, 39u8, 51u8, 21u8, 237u8, 179u8, 132u8, + 130u8, + ], + ) + } + #[doc = "See [`Pallet::force_transfer`]."] + pub fn force_transfer( + &self, + source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "force_transfer", + types::ForceTransfer { source, dest, value }, + [ + 154u8, 93u8, 222u8, 27u8, 12u8, 248u8, 63u8, 213u8, 224u8, 86u8, 250u8, + 153u8, 249u8, 102u8, 83u8, 160u8, 79u8, 125u8, 105u8, 222u8, 77u8, + 180u8, 90u8, 105u8, 81u8, 217u8, 60u8, 25u8, 213u8, 51u8, 185u8, 96u8, + ], + ) + } + #[doc = "See [`Pallet::transfer_keep_alive`]."] + pub fn transfer_keep_alive( + &self, + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "transfer_keep_alive", + types::TransferKeepAlive { dest, value }, + [ + 245u8, 14u8, 190u8, 193u8, 32u8, 210u8, 74u8, 92u8, 25u8, 182u8, 76u8, + 55u8, 247u8, 83u8, 114u8, 75u8, 143u8, 236u8, 117u8, 25u8, 54u8, 157u8, + 208u8, 207u8, 233u8, 89u8, 70u8, 161u8, 235u8, 242u8, 222u8, 59u8, + ], + ) + } + #[doc = "See [`Pallet::transfer_all`]."] + pub fn transfer_all( + &self, + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + keep_alive: ::core::primitive::bool, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "transfer_all", + types::TransferAll { dest, keep_alive }, + [ + 105u8, 132u8, 49u8, 144u8, 195u8, 250u8, 34u8, 46u8, 213u8, 248u8, + 112u8, 188u8, 81u8, 228u8, 136u8, 18u8, 67u8, 172u8, 37u8, 38u8, 238u8, + 9u8, 34u8, 15u8, 67u8, 34u8, 148u8, 195u8, 223u8, 29u8, 154u8, 6u8, + ], + ) + } + #[doc = "See [`Pallet::force_unreserve`]."] + pub fn force_unreserve( + &self, + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + amount: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "force_unreserve", + types::ForceUnreserve { who, amount }, + [ + 142u8, 151u8, 64u8, 205u8, 46u8, 64u8, 62u8, 122u8, 108u8, 49u8, 223u8, + 140u8, 120u8, 153u8, 35u8, 165u8, 187u8, 38u8, 157u8, 200u8, 123u8, + 199u8, 198u8, 168u8, 208u8, 159u8, 39u8, 134u8, 92u8, 103u8, 84u8, + 171u8, + ], + ) + } + #[doc = "See [`Pallet::upgrade_accounts`]."] + pub fn upgrade_accounts( + &self, + who: ::std::vec::Vec<::subxt::utils::AccountId32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "upgrade_accounts", + types::UpgradeAccounts { who }, + [ + 66u8, 200u8, 179u8, 104u8, 65u8, 2u8, 101u8, 56u8, 130u8, 161u8, 224u8, + 233u8, 255u8, 124u8, 70u8, 122u8, 8u8, 49u8, 103u8, 178u8, 68u8, 47u8, + 214u8, 166u8, 217u8, 116u8, 178u8, 50u8, 212u8, 164u8, 98u8, 226u8, + ], + ) + } + #[doc = "See [`Pallet::force_set_balance`]."] + pub fn force_set_balance( + &self, + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new_free: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "force_set_balance", + types::ForceSetBalance { who, new_free }, + [ + 114u8, 229u8, 59u8, 204u8, 180u8, 83u8, 17u8, 4u8, 59u8, 4u8, 55u8, + 39u8, 151u8, 196u8, 124u8, 60u8, 209u8, 65u8, 193u8, 11u8, 44u8, 164u8, + 116u8, 93u8, 169u8, 30u8, 199u8, 165u8, 55u8, 231u8, 223u8, 43u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_balances::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account was created with some free balance."] + pub struct Endowed { + pub account: ::subxt::utils::AccountId32, + pub free_balance: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Endowed { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Endowed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] + #[doc = "resulting in an outright loss."] + pub struct DustLost { + pub account: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DustLost { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "DustLost"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Transfer succeeded."] + pub struct Transfer { + pub from: ::subxt::utils::AccountId32, + pub to: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Transfer { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Transfer"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A balance was set by root."] + pub struct BalanceSet { + pub who: ::subxt::utils::AccountId32, + pub free: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for BalanceSet { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "BalanceSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was reserved (moved from free to reserved)."] + pub struct Reserved { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Reserved { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Reserved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was unreserved (moved from reserved to free)."] + pub struct Unreserved { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Unreserved { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Unreserved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was moved from the reserve of the first account to the second account."] + #[doc = "Final argument indicates the destination balance type."] + pub struct ReserveRepatriated { + pub from: ::subxt::utils::AccountId32, + pub to: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + pub destination_status: + runtime_types::frame_support::traits::tokens::misc::BalanceStatus, + } + impl ::subxt::events::StaticEvent for ReserveRepatriated { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "ReserveRepatriated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was deposited (e.g. for transaction fees)."] + pub struct Deposit { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Deposit { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Deposit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] + pub struct Withdraw { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Withdraw { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Withdraw"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] + pub struct Slashed { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Slashed { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Slashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was minted into an account."] + pub struct Minted { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Minted { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Minted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was burned from an account."] + pub struct Burned { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Burned { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Burned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was suspended from an account (it can be restored later)."] + pub struct Suspended { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Suspended { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Suspended"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was restored into an account."] + pub struct Restored { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Restored { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Restored"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account was upgraded."] + pub struct Upgraded { + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Upgraded { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Upgraded"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] + pub struct Issued { + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Issued { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Issued"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Total issuance was decreased by `amount`, creating a debt to be balanced."] + pub struct Rescinded { + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Rescinded { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Rescinded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was locked."] + pub struct Locked { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Locked { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Locked"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was unlocked."] + pub struct Unlocked { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Unlocked { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Unlocked"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was frozen."] + pub struct Frozen { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Frozen { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Frozen"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was thawed."] + pub struct Thawed { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Thawed { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "Thawed"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The total units issued in the system."] + pub fn total_issuance( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "TotalIssuance", + vec![], + [ + 116u8, 70u8, 119u8, 194u8, 69u8, 37u8, 116u8, 206u8, 171u8, 70u8, + 171u8, 210u8, 226u8, 111u8, 184u8, 204u8, 206u8, 11u8, 68u8, 72u8, + 255u8, 19u8, 194u8, 11u8, 27u8, 194u8, 81u8, 204u8, 59u8, 224u8, 202u8, + 185u8, + ], + ) + } + #[doc = " The total units of outstanding deactivated balance in the system."] + pub fn inactive_issuance( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "InactiveIssuance", + vec![], + [ + 212u8, 185u8, 19u8, 50u8, 250u8, 72u8, 173u8, 50u8, 4u8, 104u8, 161u8, + 249u8, 77u8, 247u8, 204u8, 248u8, 11u8, 18u8, 57u8, 4u8, 82u8, 110u8, + 30u8, 216u8, 16u8, 37u8, 87u8, 67u8, 189u8, 235u8, 214u8, 155u8, + ], + ) + } + #[doc = " The Balances pallet example of storing the balance of an account."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = StorageMapShim, frame_system::Provider, AccountId, Self::AccountData>"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " You can also store the balance of an account in the `System` pallet."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = System"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " But this comes with tradeoffs, storing account balances in the system pallet stores"] + #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] + #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] + #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] + pub fn account( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Account", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, + 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, + 18u8, 17u8, 234u8, 143u8, 189u8, 22u8, 247u8, 194u8, 154u8, 249u8, + ], + ) + } + #[doc = " The Balances pallet example of storing the balance of an account."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = StorageMapShim, frame_system::Provider, AccountId, Self::AccountData>"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " You can also store the balance of an account in the `System` pallet."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = System"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " But this comes with tradeoffs, storing account balances in the system pallet stores"] + #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] + #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] + #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] + pub fn account_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Account", + Vec::new(), + [ + 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, + 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, + 18u8, 17u8, 234u8, 143u8, 189u8, 22u8, 247u8, 194u8, 154u8, 249u8, + ], + ) + } + #[doc = " Any liquidity locks on some account balances."] + #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + pub fn locks( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Locks", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, + 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, + 13u8, 220u8, 163u8, 122u8, 26u8, 141u8, 174u8, 249u8, 85u8, 37u8, + ], + ) + } + #[doc = " Any liquidity locks on some account balances."] + #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + pub fn locks_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Locks", + Vec::new(), + [ + 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, + 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, + 13u8, 220u8, 163u8, 122u8, 26u8, 141u8, 174u8, 249u8, 85u8, 37u8, + ], + ) + } + #[doc = " Named reserves on some account balances."] + pub fn reserves( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::ReserveData< + [::core::primitive::u8; 8usize], + ::core::primitive::u128, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Reserves", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, + 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, + 106u8, 193u8, 88u8, 255u8, 244u8, 2u8, 193u8, 62u8, 235u8, 204u8, 91u8, + ], + ) + } + #[doc = " Named reserves on some account balances."] + pub fn reserves_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::ReserveData< + [::core::primitive::u8; 8usize], + ::core::primitive::u128, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Reserves", + Vec::new(), + [ + 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, + 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, + 106u8, 193u8, 88u8, 255u8, 244u8, 2u8, 193u8, 62u8, 235u8, 204u8, 91u8, + ], + ) + } + #[doc = " Holds on account balances."] + pub fn holds( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + runtime_types::paseo_runtime::RuntimeHoldReason, + ::core::primitive::u128, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Holds", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 129u8, 137u8, 55u8, 91u8, 69u8, 138u8, 47u8, 168u8, 33u8, 159u8, 81u8, + 44u8, 125u8, 21u8, 124u8, 211u8, 190u8, 246u8, 14u8, 154u8, 233u8, + 116u8, 250u8, 251u8, 179u8, 82u8, 73u8, 234u8, 168u8, 184u8, 61u8, + 198u8, + ], + ) + } + #[doc = " Holds on account balances."] + pub fn holds_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + runtime_types::paseo_runtime::RuntimeHoldReason, + ::core::primitive::u128, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Holds", + Vec::new(), + [ + 129u8, 137u8, 55u8, 91u8, 69u8, 138u8, 47u8, 168u8, 33u8, 159u8, 81u8, + 44u8, 125u8, 21u8, 124u8, 211u8, 190u8, 246u8, 14u8, 154u8, 233u8, + 116u8, 250u8, 251u8, 179u8, 82u8, 73u8, 234u8, 168u8, 184u8, 61u8, + 198u8, + ], + ) + } + #[doc = " Freeze locks on account balances."] + pub fn freezes( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + runtime_types::paseo_runtime::RuntimeFreezeReason, + ::core::primitive::u128, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Freezes", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 251u8, 45u8, 163u8, 52u8, 152u8, 182u8, 26u8, 38u8, 143u8, 138u8, 9u8, + 249u8, 58u8, 31u8, 124u8, 3u8, 194u8, 161u8, 148u8, 250u8, 53u8, 166u8, + 90u8, 150u8, 37u8, 246u8, 110u8, 43u8, 114u8, 71u8, 180u8, 237u8, + ], + ) + } + #[doc = " Freeze locks on account balances."] + pub fn freezes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + runtime_types::paseo_runtime::RuntimeFreezeReason, + ::core::primitive::u128, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Balances", + "Freezes", + Vec::new(), + [ + 251u8, 45u8, 163u8, 52u8, 152u8, 182u8, 26u8, 38u8, 143u8, 138u8, 9u8, + 249u8, 58u8, 31u8, 124u8, 3u8, 194u8, 161u8, 148u8, 250u8, 53u8, 166u8, + 90u8, 150u8, 37u8, 246u8, 110u8, 43u8, 114u8, 71u8, 180u8, 237u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The minimum amount required to keep an account open. MUST BE GREATER THAN ZERO!"] + #[doc = ""] + #[doc = " If you *really* need it to be zero, you can enable the feature `insecure_zero_ed` for"] + #[doc = " this pallet. However, you do so at your own risk: this will open up a major DoS vector."] + #[doc = " In case you have multiple sources of provider references, you may also get unexpected"] + #[doc = " behaviour if you set this to zero."] + #[doc = ""] + #[doc = " Bottom line: Do yourself a favour and make it at least one!"] + pub fn existential_deposit( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Balances", + "ExistentialDeposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The maximum number of locks that should exist on an account."] + #[doc = " Not strictly enforced, but used for weight estimation."] + pub fn max_locks(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Balances", + "MaxLocks", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of named reserves that can exist on an account."] + pub fn max_reserves(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Balances", + "MaxReserves", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of holds that can exist on an account at any time."] + pub fn max_holds(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Balances", + "MaxHolds", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] + pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Balances", + "MaxFreezes", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod transaction_payment { + use super::{root_mod, runtime_types}; + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_transaction_payment::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,"] + #[doc = "has been paid by `who`."] + pub struct TransactionFeePaid { + pub who: ::subxt::utils::AccountId32, + pub actual_fee: ::core::primitive::u128, + pub tip: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for TransactionFeePaid { + const PALLET: &'static str = "TransactionPayment"; + const EVENT: &'static str = "TransactionFeePaid"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + pub fn next_fee_multiplier( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::fixed_point::FixedU128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "TransactionPayment", + "NextFeeMultiplier", + vec![], + [ + 247u8, 39u8, 81u8, 170u8, 225u8, 226u8, 82u8, 147u8, 34u8, 113u8, + 147u8, 213u8, 59u8, 80u8, 139u8, 35u8, 36u8, 196u8, 152u8, 19u8, 9u8, + 159u8, 176u8, 79u8, 249u8, 201u8, 170u8, 1u8, 129u8, 79u8, 146u8, + 197u8, + ], + ) + } + pub fn storage_version( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_transaction_payment::Releases, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "TransactionPayment", + "StorageVersion", + vec![], + [ + 105u8, 243u8, 158u8, 241u8, 159u8, 231u8, 253u8, 6u8, 4u8, 32u8, 85u8, + 178u8, 126u8, 31u8, 203u8, 134u8, 154u8, 38u8, 122u8, 155u8, 150u8, + 251u8, 174u8, 15u8, 74u8, 134u8, 216u8, 244u8, 168u8, 175u8, 158u8, + 144u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " A fee mulitplier for `Operational` extrinsics to compute \"virtual tip\" to boost their"] + #[doc = " `priority`"] + #[doc = ""] + #[doc = " This value is multipled by the `final_fee` to obtain a \"virtual tip\" that is later"] + #[doc = " added to a tip component in regular `priority` calculations."] + #[doc = " It means that a `Normal` transaction can front-run a similarly-sized `Operational`"] + #[doc = " extrinsic (with no tip), by including a tip value greater than the virtual tip."] + #[doc = ""] + #[doc = " ```rust,ignore"] + #[doc = " // For `Normal`"] + #[doc = " let priority = priority_calc(tip);"] + #[doc = ""] + #[doc = " // For `Operational`"] + #[doc = " let virtual_tip = (inclusion_fee + tip) * OperationalFeeMultiplier;"] + #[doc = " let priority = priority_calc(tip + virtual_tip);"] + #[doc = " ```"] + #[doc = ""] + #[doc = " Note that since we use `final_fee` the multiplier applies also to the regular `tip`"] + #[doc = " sent with the transaction. So, not only does the transaction get a priority bump based"] + #[doc = " on the `inclusion_fee`, but we also amplify the impact of tips applied to `Operational`"] + #[doc = " transactions."] + pub fn operational_fee_multiplier( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u8> { + ::subxt::constants::Address::new_static( + "TransactionPayment", + "OperationalFeeMultiplier", + [ + 141u8, 130u8, 11u8, 35u8, 226u8, 114u8, 92u8, 179u8, 168u8, 110u8, + 28u8, 91u8, 221u8, 64u8, 4u8, 148u8, 201u8, 193u8, 185u8, 66u8, 226u8, + 114u8, 97u8, 79u8, 62u8, 212u8, 202u8, 114u8, 237u8, 228u8, 183u8, + 165u8, + ], + ) + } + } + } + } + pub mod authorship { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Author of current block."] + pub fn author( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Authorship", + "Author", + vec![], + [ + 247u8, 192u8, 118u8, 227u8, 47u8, 20u8, 203u8, 199u8, 216u8, 87u8, + 220u8, 50u8, 166u8, 61u8, 168u8, 213u8, 253u8, 62u8, 202u8, 199u8, + 61u8, 192u8, 237u8, 53u8, 22u8, 148u8, 164u8, 245u8, 99u8, 24u8, 146u8, + 18u8, + ], + ) + } + } + } + } + pub mod staking { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_staking::pallet::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_staking::pallet::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Bond { + #[codec(compact)] + pub value: ::core::primitive::u128, + pub payee: runtime_types::pallet_staking::RewardDestination< + ::subxt::utils::AccountId32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Bond { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "bond"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BondExtra { + #[codec(compact)] + pub max_additional: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for BondExtra { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "bond_extra"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Unbond { + #[codec(compact)] + pub value: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for Unbond { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "unbond"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WithdrawUnbonded { + pub num_slashing_spans: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for WithdrawUnbonded { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "withdraw_unbonded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Validate { + pub prefs: runtime_types::pallet_staking::ValidatorPrefs, + } + impl ::subxt::blocks::StaticExtrinsic for Validate { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "validate"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Nominate { + pub targets: ::std::vec::Vec< + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Nominate { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "nominate"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Chill; + impl ::subxt::blocks::StaticExtrinsic for Chill { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "chill"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetPayee { + pub payee: runtime_types::pallet_staking::RewardDestination< + ::subxt::utils::AccountId32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for SetPayee { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "set_payee"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetController; + impl ::subxt::blocks::StaticExtrinsic for SetController { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "set_controller"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetValidatorCount { + #[codec(compact)] + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetValidatorCount { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "set_validator_count"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct IncreaseValidatorCount { + #[codec(compact)] + pub additional: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for IncreaseValidatorCount { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "increase_validator_count"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ScaleValidatorCount { + pub factor: runtime_types::sp_arithmetic::per_things::Percent, + } + impl ::subxt::blocks::StaticExtrinsic for ScaleValidatorCount { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "scale_validator_count"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceNoEras; + impl ::subxt::blocks::StaticExtrinsic for ForceNoEras { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "force_no_eras"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceNewEra; + impl ::subxt::blocks::StaticExtrinsic for ForceNewEra { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "force_new_era"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetInvulnerables { + pub invulnerables: ::std::vec::Vec<::subxt::utils::AccountId32>, + } + impl ::subxt::blocks::StaticExtrinsic for SetInvulnerables { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "set_invulnerables"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceUnstake { + pub stash: ::subxt::utils::AccountId32, + pub num_slashing_spans: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceUnstake { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "force_unstake"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceNewEraAlways; + impl ::subxt::blocks::StaticExtrinsic for ForceNewEraAlways { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "force_new_era_always"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CancelDeferredSlash { + pub era: ::core::primitive::u32, + pub slash_indices: ::std::vec::Vec<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for CancelDeferredSlash { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "cancel_deferred_slash"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PayoutStakers { + pub validator_stash: ::subxt::utils::AccountId32, + pub era: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for PayoutStakers { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "payout_stakers"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Rebond { + #[codec(compact)] + pub value: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for Rebond { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "rebond"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReapStash { + pub stash: ::subxt::utils::AccountId32, + pub num_slashing_spans: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ReapStash { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "reap_stash"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Kick { + pub who: ::std::vec::Vec< + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Kick { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "kick"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetStakingConfigs { + pub min_nominator_bond: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u128, + >, + pub min_validator_bond: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u128, + >, + pub max_nominator_count: + runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u32, + >, + pub max_validator_count: + runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u32, + >, + pub chill_threshold: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + runtime_types::sp_arithmetic::per_things::Percent, + >, + pub min_commission: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + runtime_types::sp_arithmetic::per_things::Perbill, + >, + } + impl ::subxt::blocks::StaticExtrinsic for SetStakingConfigs { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "set_staking_configs"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ChillOther { + pub controller: ::subxt::utils::AccountId32, + } + impl ::subxt::blocks::StaticExtrinsic for ChillOther { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "chill_other"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceApplyMinCommission { + pub validator_stash: ::subxt::utils::AccountId32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceApplyMinCommission { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "force_apply_min_commission"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMinCommission { + pub new: runtime_types::sp_arithmetic::per_things::Perbill, + } + impl ::subxt::blocks::StaticExtrinsic for SetMinCommission { + const PALLET: &'static str = "Staking"; + const CALL: &'static str = "set_min_commission"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::bond`]."] + pub fn bond( + &self, + value: ::core::primitive::u128, + payee: runtime_types::pallet_staking::RewardDestination< + ::subxt::utils::AccountId32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "bond", + types::Bond { value, payee }, + [ + 45u8, 207u8, 34u8, 221u8, 252u8, 224u8, 162u8, 185u8, 67u8, 224u8, + 88u8, 91u8, 232u8, 114u8, 183u8, 44u8, 39u8, 5u8, 12u8, 163u8, 57u8, + 31u8, 251u8, 58u8, 37u8, 232u8, 206u8, 75u8, 164u8, 26u8, 170u8, 101u8, + ], + ) + } + #[doc = "See [`Pallet::bond_extra`]."] + pub fn bond_extra( + &self, + max_additional: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "bond_extra", + types::BondExtra { max_additional }, + [ + 9u8, 143u8, 179u8, 99u8, 91u8, 254u8, 114u8, 189u8, 202u8, 245u8, 48u8, + 130u8, 103u8, 17u8, 183u8, 177u8, 172u8, 156u8, 227u8, 145u8, 191u8, + 134u8, 81u8, 3u8, 170u8, 85u8, 40u8, 56u8, 216u8, 95u8, 232u8, 52u8, + ], + ) + } + #[doc = "See [`Pallet::unbond`]."] + pub fn unbond( + &self, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "unbond", + types::Unbond { value }, + [ + 70u8, 201u8, 146u8, 56u8, 51u8, 237u8, 90u8, 193u8, 69u8, 42u8, 168u8, + 96u8, 215u8, 128u8, 253u8, 22u8, 239u8, 14u8, 214u8, 103u8, 170u8, + 140u8, 2u8, 182u8, 3u8, 190u8, 184u8, 191u8, 231u8, 137u8, 50u8, 16u8, + ], + ) + } + #[doc = "See [`Pallet::withdraw_unbonded`]."] + pub fn withdraw_unbonded( + &self, + num_slashing_spans: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "withdraw_unbonded", + types::WithdrawUnbonded { num_slashing_spans }, + [ + 229u8, 128u8, 177u8, 224u8, 197u8, 118u8, 239u8, 142u8, 179u8, 164u8, + 10u8, 205u8, 124u8, 254u8, 209u8, 157u8, 172u8, 87u8, 58u8, 120u8, + 74u8, 12u8, 150u8, 117u8, 234u8, 32u8, 191u8, 182u8, 92u8, 97u8, 77u8, + 59u8, + ], + ) + } + #[doc = "See [`Pallet::validate`]."] + pub fn validate( + &self, + prefs: runtime_types::pallet_staking::ValidatorPrefs, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "validate", + types::Validate { prefs }, + [ + 63u8, 83u8, 12u8, 16u8, 56u8, 84u8, 41u8, 141u8, 202u8, 0u8, 37u8, + 30u8, 115u8, 2u8, 145u8, 101u8, 168u8, 89u8, 94u8, 98u8, 8u8, 45u8, + 140u8, 237u8, 101u8, 136u8, 179u8, 162u8, 205u8, 41u8, 88u8, 248u8, + ], + ) + } + #[doc = "See [`Pallet::nominate`]."] + pub fn nominate( + &self, + targets: ::std::vec::Vec< + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "nominate", + types::Nominate { targets }, + [ + 14u8, 209u8, 112u8, 222u8, 40u8, 211u8, 118u8, 188u8, 26u8, 88u8, + 135u8, 233u8, 36u8, 99u8, 68u8, 189u8, 184u8, 169u8, 146u8, 217u8, + 87u8, 198u8, 89u8, 32u8, 193u8, 135u8, 251u8, 88u8, 241u8, 151u8, + 205u8, 138u8, + ], + ) + } + #[doc = "See [`Pallet::chill`]."] + pub fn chill(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "chill", + types::Chill {}, + [ + 157u8, 75u8, 243u8, 69u8, 110u8, 192u8, 22u8, 27u8, 107u8, 68u8, 236u8, + 58u8, 179u8, 34u8, 118u8, 98u8, 131u8, 62u8, 242u8, 84u8, 149u8, 24u8, + 83u8, 223u8, 78u8, 12u8, 192u8, 22u8, 111u8, 11u8, 171u8, 149u8, + ], + ) + } + #[doc = "See [`Pallet::set_payee`]."] + pub fn set_payee( + &self, + payee: runtime_types::pallet_staking::RewardDestination< + ::subxt::utils::AccountId32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "set_payee", + types::SetPayee { payee }, + [ + 86u8, 172u8, 187u8, 98u8, 106u8, 240u8, 184u8, 60u8, 163u8, 244u8, 7u8, + 64u8, 147u8, 168u8, 192u8, 177u8, 211u8, 138u8, 73u8, 188u8, 159u8, + 154u8, 175u8, 219u8, 231u8, 235u8, 93u8, 195u8, 204u8, 100u8, 196u8, + 241u8, + ], + ) + } + #[doc = "See [`Pallet::set_controller`]."] + pub fn set_controller(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "set_controller", + types::SetController {}, + [ + 172u8, 27u8, 195u8, 188u8, 145u8, 203u8, 190u8, 174u8, 145u8, 43u8, + 253u8, 87u8, 11u8, 229u8, 112u8, 18u8, 57u8, 101u8, 84u8, 235u8, 109u8, + 228u8, 58u8, 129u8, 179u8, 174u8, 245u8, 169u8, 89u8, 240u8, 39u8, + 67u8, + ], + ) + } + #[doc = "See [`Pallet::set_validator_count`]."] + pub fn set_validator_count( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "set_validator_count", + types::SetValidatorCount { new }, + [ + 172u8, 225u8, 157u8, 48u8, 242u8, 217u8, 126u8, 206u8, 26u8, 156u8, + 203u8, 100u8, 116u8, 189u8, 98u8, 89u8, 151u8, 101u8, 77u8, 236u8, + 101u8, 8u8, 148u8, 236u8, 180u8, 175u8, 232u8, 146u8, 141u8, 141u8, + 78u8, 165u8, + ], + ) + } + #[doc = "See [`Pallet::increase_validator_count`]."] + pub fn increase_validator_count( + &self, + additional: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "increase_validator_count", + types::IncreaseValidatorCount { additional }, + [ + 108u8, 67u8, 131u8, 248u8, 139u8, 227u8, 224u8, 221u8, 248u8, 94u8, + 141u8, 104u8, 131u8, 250u8, 127u8, 164u8, 137u8, 211u8, 5u8, 27u8, + 185u8, 251u8, 120u8, 243u8, 165u8, 50u8, 197u8, 161u8, 125u8, 195u8, + 16u8, 29u8, + ], + ) + } + #[doc = "See [`Pallet::scale_validator_count`]."] + pub fn scale_validator_count( + &self, + factor: runtime_types::sp_arithmetic::per_things::Percent, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "scale_validator_count", + types::ScaleValidatorCount { factor }, + [ + 93u8, 200u8, 119u8, 240u8, 148u8, 144u8, 175u8, 135u8, 102u8, 130u8, + 183u8, 216u8, 28u8, 215u8, 155u8, 233u8, 152u8, 65u8, 49u8, 125u8, + 196u8, 79u8, 31u8, 195u8, 233u8, 79u8, 150u8, 138u8, 103u8, 161u8, + 78u8, 154u8, + ], + ) + } + #[doc = "See [`Pallet::force_no_eras`]."] + pub fn force_no_eras(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "force_no_eras", + types::ForceNoEras {}, + [ + 77u8, 5u8, 105u8, 167u8, 251u8, 78u8, 52u8, 80u8, 177u8, 226u8, 28u8, + 130u8, 106u8, 62u8, 40u8, 210u8, 110u8, 62u8, 21u8, 113u8, 234u8, + 227u8, 171u8, 205u8, 240u8, 46u8, 32u8, 84u8, 184u8, 208u8, 61u8, + 207u8, + ], + ) + } + #[doc = "See [`Pallet::force_new_era`]."] + pub fn force_new_era(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "force_new_era", + types::ForceNewEra {}, + [ + 119u8, 45u8, 11u8, 87u8, 236u8, 189u8, 41u8, 142u8, 130u8, 10u8, 132u8, + 140u8, 210u8, 134u8, 66u8, 152u8, 149u8, 55u8, 60u8, 31u8, 190u8, 41u8, + 177u8, 103u8, 245u8, 193u8, 95u8, 255u8, 29u8, 79u8, 112u8, 188u8, + ], + ) + } + #[doc = "See [`Pallet::set_invulnerables`]."] + pub fn set_invulnerables( + &self, + invulnerables: ::std::vec::Vec<::subxt::utils::AccountId32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "set_invulnerables", + types::SetInvulnerables { invulnerables }, + [ + 31u8, 115u8, 221u8, 229u8, 187u8, 61u8, 33u8, 22u8, 126u8, 142u8, + 248u8, 190u8, 213u8, 35u8, 49u8, 208u8, 193u8, 0u8, 58u8, 18u8, 136u8, + 220u8, 32u8, 8u8, 121u8, 36u8, 184u8, 57u8, 6u8, 125u8, 199u8, 245u8, + ], + ) + } + #[doc = "See [`Pallet::force_unstake`]."] + pub fn force_unstake( + &self, + stash: ::subxt::utils::AccountId32, + num_slashing_spans: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "force_unstake", + types::ForceUnstake { stash, num_slashing_spans }, + [ + 205u8, 115u8, 222u8, 58u8, 168u8, 3u8, 59u8, 58u8, 220u8, 98u8, 204u8, + 90u8, 36u8, 250u8, 178u8, 45u8, 213u8, 158u8, 92u8, 107u8, 3u8, 94u8, + 118u8, 194u8, 187u8, 196u8, 101u8, 250u8, 36u8, 119u8, 21u8, 19u8, + ], + ) + } + #[doc = "See [`Pallet::force_new_era_always`]."] + pub fn force_new_era_always( + &self, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "force_new_era_always", + types::ForceNewEraAlways {}, + [ + 102u8, 153u8, 116u8, 85u8, 80u8, 52u8, 89u8, 215u8, 173u8, 159u8, 96u8, + 99u8, 180u8, 5u8, 62u8, 142u8, 181u8, 101u8, 160u8, 57u8, 177u8, 182u8, + 6u8, 252u8, 107u8, 252u8, 225u8, 104u8, 147u8, 123u8, 244u8, 134u8, + ], + ) + } + #[doc = "See [`Pallet::cancel_deferred_slash`]."] + pub fn cancel_deferred_slash( + &self, + era: ::core::primitive::u32, + slash_indices: ::std::vec::Vec<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "cancel_deferred_slash", + types::CancelDeferredSlash { era, slash_indices }, + [ + 49u8, 208u8, 248u8, 109u8, 25u8, 132u8, 73u8, 172u8, 232u8, 194u8, + 114u8, 23u8, 114u8, 4u8, 64u8, 156u8, 70u8, 41u8, 207u8, 208u8, 78u8, + 199u8, 81u8, 125u8, 101u8, 31u8, 17u8, 140u8, 190u8, 254u8, 64u8, + 101u8, + ], + ) + } + #[doc = "See [`Pallet::payout_stakers`]."] + pub fn payout_stakers( + &self, + validator_stash: ::subxt::utils::AccountId32, + era: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "payout_stakers", + types::PayoutStakers { validator_stash, era }, + [ + 69u8, 67u8, 140u8, 197u8, 89u8, 20u8, 59u8, 55u8, 142u8, 197u8, 62u8, + 107u8, 239u8, 50u8, 237u8, 52u8, 4u8, 65u8, 119u8, 73u8, 138u8, 57u8, + 46u8, 78u8, 252u8, 157u8, 187u8, 14u8, 232u8, 244u8, 217u8, 171u8, + ], + ) + } + #[doc = "See [`Pallet::rebond`]."] + pub fn rebond( + &self, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "rebond", + types::Rebond { value }, + [ + 204u8, 209u8, 27u8, 219u8, 45u8, 129u8, 15u8, 39u8, 105u8, 165u8, + 255u8, 55u8, 0u8, 59u8, 115u8, 79u8, 139u8, 82u8, 163u8, 197u8, 44u8, + 89u8, 41u8, 234u8, 116u8, 214u8, 248u8, 123u8, 250u8, 49u8, 15u8, 77u8, + ], + ) + } + #[doc = "See [`Pallet::reap_stash`]."] + pub fn reap_stash( + &self, + stash: ::subxt::utils::AccountId32, + num_slashing_spans: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "reap_stash", + types::ReapStash { stash, num_slashing_spans }, + [ + 231u8, 240u8, 152u8, 33u8, 10u8, 60u8, 18u8, 233u8, 0u8, 229u8, 90u8, + 45u8, 118u8, 29u8, 98u8, 109u8, 89u8, 7u8, 228u8, 254u8, 119u8, 125u8, + 172u8, 209u8, 217u8, 107u8, 50u8, 226u8, 31u8, 5u8, 153u8, 93u8, + ], + ) + } + #[doc = "See [`Pallet::kick`]."] + pub fn kick( + &self, + who: ::std::vec::Vec< + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "kick", + types::Kick { who }, + [ + 27u8, 64u8, 10u8, 21u8, 174u8, 6u8, 40u8, 249u8, 144u8, 247u8, 5u8, + 123u8, 225u8, 172u8, 143u8, 50u8, 192u8, 248u8, 160u8, 179u8, 119u8, + 122u8, 147u8, 92u8, 248u8, 123u8, 3u8, 154u8, 205u8, 199u8, 6u8, 126u8, + ], + ) + } + #[doc = "See [`Pallet::set_staking_configs`]."] + pub fn set_staking_configs( + &self, + min_nominator_bond: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u128, + >, + min_validator_bond: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u128, + >, + max_nominator_count: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u32, + >, + max_validator_count: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u32, + >, + chill_threshold: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + runtime_types::sp_arithmetic::per_things::Percent, + >, + min_commission: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + runtime_types::sp_arithmetic::per_things::Perbill, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "set_staking_configs", + types::SetStakingConfigs { + min_nominator_bond, + min_validator_bond, + max_nominator_count, + max_validator_count, + chill_threshold, + min_commission, + }, + [ + 99u8, 61u8, 196u8, 68u8, 226u8, 64u8, 104u8, 70u8, 173u8, 108u8, 29u8, + 39u8, 61u8, 202u8, 72u8, 227u8, 190u8, 6u8, 138u8, 137u8, 207u8, 11u8, + 190u8, 79u8, 73u8, 7u8, 108u8, 131u8, 19u8, 7u8, 173u8, 60u8, + ], + ) + } + #[doc = "See [`Pallet::chill_other`]."] + pub fn chill_other( + &self, + controller: ::subxt::utils::AccountId32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "chill_other", + types::ChillOther { controller }, + [ + 143u8, 82u8, 167u8, 43u8, 102u8, 136u8, 78u8, 139u8, 110u8, 159u8, + 235u8, 226u8, 237u8, 140u8, 142u8, 47u8, 77u8, 57u8, 209u8, 208u8, 9u8, + 193u8, 3u8, 77u8, 147u8, 41u8, 182u8, 122u8, 178u8, 185u8, 32u8, 182u8, + ], + ) + } + #[doc = "See [`Pallet::force_apply_min_commission`]."] + pub fn force_apply_min_commission( + &self, + validator_stash: ::subxt::utils::AccountId32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "force_apply_min_commission", + types::ForceApplyMinCommission { validator_stash }, + [ + 158u8, 27u8, 152u8, 23u8, 97u8, 53u8, 54u8, 49u8, 179u8, 236u8, 69u8, + 65u8, 253u8, 136u8, 232u8, 44u8, 207u8, 66u8, 5u8, 186u8, 49u8, 91u8, + 173u8, 5u8, 84u8, 45u8, 154u8, 91u8, 239u8, 97u8, 62u8, 42u8, + ], + ) + } + #[doc = "See [`Pallet::set_min_commission`]."] + pub fn set_min_commission( + &self, + new: runtime_types::sp_arithmetic::per_things::Perbill, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Staking", + "set_min_commission", + types::SetMinCommission { new }, + [ + 96u8, 168u8, 55u8, 79u8, 79u8, 49u8, 8u8, 127u8, 98u8, 158u8, 106u8, + 187u8, 177u8, 201u8, 68u8, 181u8, 219u8, 172u8, 63u8, 120u8, 172u8, + 173u8, 251u8, 167u8, 84u8, 165u8, 238u8, 115u8, 110u8, 97u8, 144u8, + 50u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_staking::pallet::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The era payout has been set; the first balance is the validator-payout; the second is"] + #[doc = "the remainder from the maximum amount of reward."] + pub struct EraPaid { + pub era_index: ::core::primitive::u32, + pub validator_payout: ::core::primitive::u128, + pub remainder: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for EraPaid { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "EraPaid"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The nominator has been rewarded by this amount to this destination."] + pub struct Rewarded { + pub stash: ::subxt::utils::AccountId32, + pub dest: + runtime_types::pallet_staking::RewardDestination<::subxt::utils::AccountId32>, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Rewarded { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "Rewarded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A staker (validator or nominator) has been slashed by the given amount."] + pub struct Slashed { + pub staker: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Slashed { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "Slashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A slash for the given validator, for the given percentage of their stake, at the given"] + #[doc = "era as been reported."] + pub struct SlashReported { + pub validator: ::subxt::utils::AccountId32, + pub fraction: runtime_types::sp_arithmetic::per_things::Perbill, + pub slash_era: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for SlashReported { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "SlashReported"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An old slashing report from a prior era was discarded because it could"] + #[doc = "not be processed."] + pub struct OldSlashingReportDiscarded { + pub session_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for OldSlashingReportDiscarded { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "OldSlashingReportDiscarded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new set of stakers was elected."] + pub struct StakersElected; + impl ::subxt::events::StaticEvent for StakersElected { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "StakersElected"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account has bonded this amount. \\[stash, amount\\]"] + #[doc = ""] + #[doc = "NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably,"] + #[doc = "it will not be emitted for staking rewards when they are added to stake."] + pub struct Bonded { + pub stash: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Bonded { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "Bonded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account has unbonded this amount."] + pub struct Unbonded { + pub stash: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Unbonded { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "Unbonded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance`"] + #[doc = "from the unlocking queue."] + pub struct Withdrawn { + pub stash: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Withdrawn { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "Withdrawn"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A nominator has been kicked from a validator."] + pub struct Kicked { + pub nominator: ::subxt::utils::AccountId32, + pub stash: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Kicked { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "Kicked"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The election failed. No new era is planned."] + pub struct StakingElectionFailed; + impl ::subxt::events::StaticEvent for StakingElectionFailed { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "StakingElectionFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account has stopped participating as either a validator or nominator."] + pub struct Chilled { + pub stash: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Chilled { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "Chilled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The stakers' rewards are getting paid."] + pub struct PayoutStarted { + pub era_index: ::core::primitive::u32, + pub validator_stash: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for PayoutStarted { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "PayoutStarted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A validator has set their preferences."] + pub struct ValidatorPrefsSet { + pub stash: ::subxt::utils::AccountId32, + pub prefs: runtime_types::pallet_staking::ValidatorPrefs, + } + impl ::subxt::events::StaticEvent for ValidatorPrefsSet { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "ValidatorPrefsSet"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Voters size limit reached."] + pub struct SnapshotVotersSizeExceeded { + pub size: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for SnapshotVotersSizeExceeded { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "SnapshotVotersSizeExceeded"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Targets size limit reached."] + pub struct SnapshotTargetsSizeExceeded { + pub size: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for SnapshotTargetsSizeExceeded { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "SnapshotTargetsSizeExceeded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new force era mode was set."] + pub struct ForceEra { + pub mode: runtime_types::pallet_staking::Forcing, + } + impl ::subxt::events::StaticEvent for ForceEra { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "ForceEra"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Report of a controller batch deprecation."] + pub struct ControllerBatchDeprecated { + pub failures: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for ControllerBatchDeprecated { + const PALLET: &'static str = "Staking"; + const EVENT: &'static str = "ControllerBatchDeprecated"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The ideal number of active validators."] + pub fn validator_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ValidatorCount", + vec![], + [ + 105u8, 251u8, 193u8, 198u8, 232u8, 118u8, 73u8, 115u8, 205u8, 78u8, + 49u8, 253u8, 140u8, 193u8, 161u8, 205u8, 13u8, 147u8, 125u8, 102u8, + 142u8, 244u8, 210u8, 227u8, 225u8, 46u8, 144u8, 122u8, 254u8, 48u8, + 44u8, 169u8, + ], + ) + } + #[doc = " Minimum number of staking participants before emergency conditions are imposed."] + pub fn minimum_validator_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "MinimumValidatorCount", + vec![], + [ + 103u8, 178u8, 29u8, 91u8, 90u8, 31u8, 49u8, 9u8, 11u8, 58u8, 178u8, + 30u8, 219u8, 55u8, 58u8, 181u8, 80u8, 155u8, 9u8, 11u8, 38u8, 46u8, + 125u8, 179u8, 220u8, 20u8, 212u8, 181u8, 136u8, 103u8, 58u8, 48u8, + ], + ) + } + #[doc = " Any validators that may never be slashed or forcibly kicked. It's a Vec since they're"] + #[doc = " easy to initialize and the performance hit is minimal (we expect no more than four"] + #[doc = " invulnerables) and restricted to testnets."] + pub fn invulnerables( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::subxt::utils::AccountId32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Invulnerables", + vec![], + [ + 199u8, 35u8, 0u8, 229u8, 160u8, 128u8, 139u8, 245u8, 27u8, 133u8, 47u8, + 240u8, 86u8, 195u8, 90u8, 169u8, 158u8, 231u8, 128u8, 58u8, 24u8, + 173u8, 138u8, 122u8, 226u8, 104u8, 239u8, 114u8, 91u8, 165u8, 207u8, + 150u8, + ], + ) + } + #[doc = " Map from all locked \"stash\" accounts to the controller account."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn bonded( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Bonded", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 99u8, 128u8, 108u8, 100u8, 235u8, 102u8, 243u8, 95u8, 61u8, 206u8, + 220u8, 49u8, 155u8, 85u8, 236u8, 110u8, 99u8, 21u8, 117u8, 127u8, + 157u8, 226u8, 108u8, 80u8, 126u8, 93u8, 203u8, 0u8, 160u8, 253u8, 56u8, + 101u8, + ], + ) + } + #[doc = " Map from all locked \"stash\" accounts to the controller account."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn bonded_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Bonded", + Vec::new(), + [ + 99u8, 128u8, 108u8, 100u8, 235u8, 102u8, 243u8, 95u8, 61u8, 206u8, + 220u8, 49u8, 155u8, 85u8, 236u8, 110u8, 99u8, 21u8, 117u8, 127u8, + 157u8, 226u8, 108u8, 80u8, 126u8, 93u8, 203u8, 0u8, 160u8, 253u8, 56u8, + 101u8, + ], + ) + } + #[doc = " The minimum active bond to become and maintain the role of a nominator."] + pub fn min_nominator_bond( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "MinNominatorBond", + vec![], + [ + 102u8, 115u8, 254u8, 15u8, 191u8, 228u8, 85u8, 249u8, 112u8, 190u8, + 129u8, 243u8, 236u8, 39u8, 195u8, 232u8, 10u8, 230u8, 11u8, 144u8, + 115u8, 1u8, 45u8, 70u8, 181u8, 161u8, 17u8, 92u8, 19u8, 70u8, 100u8, + 94u8, + ], + ) + } + #[doc = " The minimum active bond to become and maintain the role of a validator."] + pub fn min_validator_bond( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "MinValidatorBond", + vec![], + [ + 146u8, 249u8, 26u8, 52u8, 224u8, 81u8, 85u8, 153u8, 118u8, 169u8, + 140u8, 37u8, 208u8, 242u8, 8u8, 29u8, 156u8, 73u8, 154u8, 162u8, 186u8, + 159u8, 119u8, 100u8, 109u8, 227u8, 6u8, 139u8, 155u8, 203u8, 167u8, + 244u8, + ], + ) + } + #[doc = " The minimum active nominator stake of the last successful election."] + pub fn minimum_active_stake( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "MinimumActiveStake", + vec![], + [ + 166u8, 211u8, 59u8, 23u8, 2u8, 160u8, 244u8, 52u8, 153u8, 12u8, 103u8, + 113u8, 51u8, 232u8, 145u8, 188u8, 54u8, 67u8, 227u8, 221u8, 186u8, 6u8, + 28u8, 63u8, 146u8, 212u8, 233u8, 173u8, 134u8, 41u8, 169u8, 153u8, + ], + ) + } + #[doc = " The minimum amount of commission that validators can set."] + #[doc = ""] + #[doc = " If set to `0`, no limit exists."] + pub fn min_commission( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "MinCommission", + vec![], + [ + 220u8, 197u8, 232u8, 212u8, 205u8, 242u8, 121u8, 165u8, 255u8, 199u8, + 122u8, 20u8, 145u8, 245u8, 175u8, 26u8, 45u8, 70u8, 207u8, 26u8, 112u8, + 234u8, 181u8, 167u8, 140u8, 75u8, 15u8, 1u8, 221u8, 168u8, 17u8, 211u8, + ], + ) + } + #[doc = " Map from all (unlocked) \"controller\" accounts to the info regarding the staking."] + #[doc = ""] + #[doc = " Note: All the reads and mutations to this storage *MUST* be done through the methods exposed"] + #[doc = " by [`StakingLedger`] to ensure data and lock consistency."] + pub fn ledger( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::StakingLedger, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Ledger", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 210u8, 236u8, 6u8, 49u8, 200u8, 118u8, 116u8, 25u8, 66u8, 60u8, 18u8, + 75u8, 240u8, 156u8, 58u8, 48u8, 176u8, 10u8, 175u8, 0u8, 86u8, 7u8, + 16u8, 134u8, 64u8, 41u8, 46u8, 128u8, 33u8, 40u8, 10u8, 129u8, + ], + ) + } + #[doc = " Map from all (unlocked) \"controller\" accounts to the info regarding the staking."] + #[doc = ""] + #[doc = " Note: All the reads and mutations to this storage *MUST* be done through the methods exposed"] + #[doc = " by [`StakingLedger`] to ensure data and lock consistency."] + pub fn ledger_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::StakingLedger, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Ledger", + Vec::new(), + [ + 210u8, 236u8, 6u8, 49u8, 200u8, 118u8, 116u8, 25u8, 66u8, 60u8, 18u8, + 75u8, 240u8, 156u8, 58u8, 48u8, 176u8, 10u8, 175u8, 0u8, 86u8, 7u8, + 16u8, 134u8, 64u8, 41u8, 46u8, 128u8, 33u8, 40u8, 10u8, 129u8, + ], + ) + } + #[doc = " Where the reward payment should be made. Keyed by stash."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn payee( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::RewardDestination<::subxt::utils::AccountId32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Payee", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 141u8, 225u8, 44u8, 134u8, 50u8, 229u8, 64u8, 186u8, 166u8, 88u8, + 213u8, 118u8, 32u8, 154u8, 151u8, 204u8, 104u8, 216u8, 198u8, 66u8, + 123u8, 143u8, 206u8, 245u8, 53u8, 67u8, 78u8, 82u8, 115u8, 31u8, 39u8, + 76u8, + ], + ) + } + #[doc = " Where the reward payment should be made. Keyed by stash."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn payee_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::RewardDestination<::subxt::utils::AccountId32>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Payee", + Vec::new(), + [ + 141u8, 225u8, 44u8, 134u8, 50u8, 229u8, 64u8, 186u8, 166u8, 88u8, + 213u8, 118u8, 32u8, 154u8, 151u8, 204u8, 104u8, 216u8, 198u8, 66u8, + 123u8, 143u8, 206u8, 245u8, 53u8, 67u8, 78u8, 82u8, 115u8, 31u8, 39u8, + 76u8, + ], + ) + } + #[doc = " The map from (wannabe) validator stash key to the preferences of that validator."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn validators( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::ValidatorPrefs, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Validators", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 149u8, 207u8, 68u8, 38u8, 24u8, 220u8, 207u8, 84u8, 236u8, 33u8, 210u8, + 124u8, 200u8, 99u8, 98u8, 29u8, 235u8, 46u8, 124u8, 4u8, 203u8, 6u8, + 209u8, 21u8, 124u8, 236u8, 112u8, 118u8, 180u8, 85u8, 78u8, 13u8, + ], + ) + } + #[doc = " The map from (wannabe) validator stash key to the preferences of that validator."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn validators_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::ValidatorPrefs, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Validators", + Vec::new(), + [ + 149u8, 207u8, 68u8, 38u8, 24u8, 220u8, 207u8, 84u8, 236u8, 33u8, 210u8, + 124u8, 200u8, 99u8, 98u8, 29u8, 235u8, 46u8, 124u8, 4u8, 203u8, 6u8, + 209u8, 21u8, 124u8, 236u8, 112u8, 118u8, 180u8, 85u8, 78u8, 13u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_validators( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "CounterForValidators", + vec![], + [ + 169u8, 146u8, 194u8, 114u8, 57u8, 232u8, 137u8, 93u8, 214u8, 98u8, + 176u8, 151u8, 237u8, 165u8, 176u8, 252u8, 73u8, 124u8, 22u8, 166u8, + 225u8, 217u8, 65u8, 56u8, 174u8, 12u8, 32u8, 2u8, 7u8, 173u8, 125u8, + 235u8, + ], + ) + } + #[doc = " The maximum validator count before we stop allowing new validators to join."] + #[doc = ""] + #[doc = " When this value is not set, no limits are enforced."] + pub fn max_validators_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "MaxValidatorsCount", + vec![], + [ + 139u8, 116u8, 236u8, 217u8, 110u8, 47u8, 140u8, 197u8, 184u8, 246u8, + 180u8, 188u8, 233u8, 99u8, 102u8, 21u8, 114u8, 23u8, 143u8, 163u8, + 224u8, 250u8, 248u8, 185u8, 235u8, 94u8, 110u8, 83u8, 170u8, 123u8, + 113u8, 168u8, + ], + ) + } + #[doc = " The map from nominator stash key to their nomination preferences, namely the validators that"] + #[doc = " they wish to support."] + #[doc = ""] + #[doc = " Note that the keys of this storage map might become non-decodable in case the"] + #[doc = " account's [`NominationsQuota::MaxNominations`] configuration is decreased."] + #[doc = " In this rare case, these nominators"] + #[doc = " are still existent in storage, their key is correct and retrievable (i.e. `contains_key`"] + #[doc = " indicates that they exist), but their value cannot be decoded. Therefore, the non-decodable"] + #[doc = " nominators will effectively not-exist, until they re-submit their preferences such that it"] + #[doc = " is within the bounds of the newly set `Config::MaxNominations`."] + #[doc = ""] + #[doc = " This implies that `::iter_keys().count()` and `::iter().count()` might return different"] + #[doc = " values for this map. Moreover, the main `::count()` is aligned with the former, namely the"] + #[doc = " number of keys that exist."] + #[doc = ""] + #[doc = " Lastly, if any of the nominators become non-decodable, they can be chilled immediately via"] + #[doc = " [`Call::chill_other`] dispatchable by anyone."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn nominators( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::Nominations, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Nominators", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 244u8, 174u8, 214u8, 105u8, 215u8, 218u8, 241u8, 145u8, 155u8, 54u8, + 219u8, 34u8, 158u8, 224u8, 251u8, 17u8, 245u8, 9u8, 150u8, 36u8, 2u8, + 233u8, 222u8, 218u8, 136u8, 86u8, 37u8, 244u8, 18u8, 50u8, 91u8, 120u8, + ], + ) + } + #[doc = " The map from nominator stash key to their nomination preferences, namely the validators that"] + #[doc = " they wish to support."] + #[doc = ""] + #[doc = " Note that the keys of this storage map might become non-decodable in case the"] + #[doc = " account's [`NominationsQuota::MaxNominations`] configuration is decreased."] + #[doc = " In this rare case, these nominators"] + #[doc = " are still existent in storage, their key is correct and retrievable (i.e. `contains_key`"] + #[doc = " indicates that they exist), but their value cannot be decoded. Therefore, the non-decodable"] + #[doc = " nominators will effectively not-exist, until they re-submit their preferences such that it"] + #[doc = " is within the bounds of the newly set `Config::MaxNominations`."] + #[doc = ""] + #[doc = " This implies that `::iter_keys().count()` and `::iter().count()` might return different"] + #[doc = " values for this map. Moreover, the main `::count()` is aligned with the former, namely the"] + #[doc = " number of keys that exist."] + #[doc = ""] + #[doc = " Lastly, if any of the nominators become non-decodable, they can be chilled immediately via"] + #[doc = " [`Call::chill_other`] dispatchable by anyone."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn nominators_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::Nominations, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "Nominators", + Vec::new(), + [ + 244u8, 174u8, 214u8, 105u8, 215u8, 218u8, 241u8, 145u8, 155u8, 54u8, + 219u8, 34u8, 158u8, 224u8, 251u8, 17u8, 245u8, 9u8, 150u8, 36u8, 2u8, + 233u8, 222u8, 218u8, 136u8, 86u8, 37u8, 244u8, 18u8, 50u8, 91u8, 120u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_nominators( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "CounterForNominators", + vec![], + [ + 150u8, 236u8, 184u8, 12u8, 224u8, 26u8, 13u8, 204u8, 208u8, 178u8, + 68u8, 148u8, 232u8, 85u8, 74u8, 248u8, 167u8, 61u8, 88u8, 126u8, 40u8, + 20u8, 73u8, 47u8, 94u8, 57u8, 144u8, 77u8, 156u8, 179u8, 55u8, 49u8, + ], + ) + } + #[doc = " The maximum nominator count before we stop allowing new validators to join."] + #[doc = ""] + #[doc = " When this value is not set, no limits are enforced."] + pub fn max_nominators_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "MaxNominatorsCount", + vec![], + [ + 11u8, 234u8, 179u8, 254u8, 95u8, 119u8, 35u8, 255u8, 141u8, 95u8, + 148u8, 209u8, 43u8, 202u8, 19u8, 57u8, 185u8, 50u8, 152u8, 192u8, 95u8, + 13u8, 158u8, 245u8, 113u8, 199u8, 255u8, 187u8, 37u8, 44u8, 8u8, 119u8, + ], + ) + } + #[doc = " The current era index."] + #[doc = ""] + #[doc = " This is the latest planned era, depending on how the Session pallet queues the validator"] + #[doc = " set, it might be active or not."] + pub fn current_era( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "CurrentEra", + vec![], + [ + 247u8, 239u8, 171u8, 18u8, 137u8, 240u8, 213u8, 3u8, 173u8, 173u8, + 236u8, 141u8, 202u8, 191u8, 228u8, 120u8, 196u8, 188u8, 13u8, 66u8, + 253u8, 117u8, 90u8, 8u8, 158u8, 11u8, 236u8, 141u8, 178u8, 44u8, 119u8, + 25u8, + ], + ) + } + #[doc = " The active era information, it holds index and start."] + #[doc = ""] + #[doc = " The active era is the era being currently rewarded. Validator set of this era must be"] + #[doc = " equal to [`SessionInterface::validators`]."] + pub fn active_era( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::ActiveEraInfo, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ActiveEra", + vec![], + [ + 24u8, 229u8, 66u8, 56u8, 111u8, 234u8, 139u8, 93u8, 245u8, 137u8, + 110u8, 110u8, 121u8, 15u8, 216u8, 207u8, 97u8, 120u8, 125u8, 45u8, + 61u8, 2u8, 50u8, 100u8, 3u8, 106u8, 12u8, 233u8, 123u8, 156u8, 145u8, + 38u8, + ], + ) + } + #[doc = " The session index at which the era start for the last `HISTORY_DEPTH` eras."] + #[doc = ""] + #[doc = " Note: This tracks the starting session (i.e. session index when era start being active)"] + #[doc = " for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`."] + pub fn eras_start_session_index( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasStartSessionIndex", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 104u8, 76u8, 102u8, 20u8, 9u8, 146u8, 55u8, 204u8, 12u8, 15u8, 117u8, + 22u8, 54u8, 230u8, 98u8, 105u8, 191u8, 136u8, 140u8, 65u8, 48u8, 29u8, + 19u8, 144u8, 159u8, 241u8, 158u8, 77u8, 4u8, 230u8, 216u8, 52u8, + ], + ) + } + #[doc = " The session index at which the era start for the last `HISTORY_DEPTH` eras."] + #[doc = ""] + #[doc = " Note: This tracks the starting session (i.e. session index when era start being active)"] + #[doc = " for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`."] + pub fn eras_start_session_index_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasStartSessionIndex", + Vec::new(), + [ + 104u8, 76u8, 102u8, 20u8, 9u8, 146u8, 55u8, 204u8, 12u8, 15u8, 117u8, + 22u8, 54u8, 230u8, 98u8, 105u8, 191u8, 136u8, 140u8, 65u8, 48u8, 29u8, + 19u8, 144u8, 159u8, 241u8, 158u8, 77u8, 4u8, 230u8, 216u8, 52u8, + ], + ) + } + #[doc = " Exposure of validator at era."] + #[doc = ""] + #[doc = " This is keyed first by the era index to allow bulk deletion and then the stash account."] + #[doc = ""] + #[doc = " Is it removed after `HISTORY_DEPTH` eras."] + #[doc = " If stakers hasn't been set or has been removed then empty exposure is returned."] + pub fn eras_stakers( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasStakers", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 120u8, 64u8, 232u8, 134u8, 109u8, 212u8, 242u8, 64u8, 68u8, 196u8, + 108u8, 91u8, 255u8, 123u8, 245u8, 27u8, 55u8, 254u8, 60u8, 74u8, 183u8, + 183u8, 226u8, 159u8, 244u8, 56u8, 139u8, 34u8, 228u8, 176u8, 241u8, + 76u8, + ], + ) + } + #[doc = " Exposure of validator at era."] + #[doc = ""] + #[doc = " This is keyed first by the era index to allow bulk deletion and then the stash account."] + #[doc = ""] + #[doc = " Is it removed after `HISTORY_DEPTH` eras."] + #[doc = " If stakers hasn't been set or has been removed then empty exposure is returned."] + pub fn eras_stakers_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasStakers", + Vec::new(), + [ + 120u8, 64u8, 232u8, 134u8, 109u8, 212u8, 242u8, 64u8, 68u8, 196u8, + 108u8, 91u8, 255u8, 123u8, 245u8, 27u8, 55u8, 254u8, 60u8, 74u8, 183u8, + 183u8, 226u8, 159u8, 244u8, 56u8, 139u8, 34u8, 228u8, 176u8, 241u8, + 76u8, + ], + ) + } + #[doc = " Clipped Exposure of validator at era."] + #[doc = ""] + #[doc = " This is similar to [`ErasStakers`] but number of nominators exposed is reduced to the"] + #[doc = " `T::MaxNominatorRewardedPerValidator` biggest stakers."] + #[doc = " (Note: the field `total` and `own` of the exposure remains unchanged)."] + #[doc = " This is used to limit the i/o cost for the nominator payout."] + #[doc = ""] + #[doc = " This is keyed fist by the era index to allow bulk deletion and then the stash account."] + #[doc = ""] + #[doc = " Is it removed after `HISTORY_DEPTH` eras."] + #[doc = " If stakers hasn't been set or has been removed then empty exposure is returned."] + pub fn eras_stakers_clipped( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasStakersClipped", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 85u8, 192u8, 164u8, 53u8, 181u8, 61u8, 132u8, 255u8, 144u8, 41u8, 44u8, + 199u8, 34u8, 11u8, 248u8, 81u8, 203u8, 204u8, 152u8, 138u8, 112u8, + 229u8, 145u8, 253u8, 111u8, 111u8, 38u8, 74u8, 199u8, 164u8, 16u8, + 45u8, + ], + ) + } + #[doc = " Clipped Exposure of validator at era."] + #[doc = ""] + #[doc = " This is similar to [`ErasStakers`] but number of nominators exposed is reduced to the"] + #[doc = " `T::MaxNominatorRewardedPerValidator` biggest stakers."] + #[doc = " (Note: the field `total` and `own` of the exposure remains unchanged)."] + #[doc = " This is used to limit the i/o cost for the nominator payout."] + #[doc = ""] + #[doc = " This is keyed fist by the era index to allow bulk deletion and then the stash account."] + #[doc = ""] + #[doc = " Is it removed after `HISTORY_DEPTH` eras."] + #[doc = " If stakers hasn't been set or has been removed then empty exposure is returned."] + pub fn eras_stakers_clipped_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasStakersClipped", + Vec::new(), + [ + 85u8, 192u8, 164u8, 53u8, 181u8, 61u8, 132u8, 255u8, 144u8, 41u8, 44u8, + 199u8, 34u8, 11u8, 248u8, 81u8, 203u8, 204u8, 152u8, 138u8, 112u8, + 229u8, 145u8, 253u8, 111u8, 111u8, 38u8, 74u8, 199u8, 164u8, 16u8, + 45u8, + ], + ) + } + #[doc = " Similar to `ErasStakers`, this holds the preferences of validators."] + #[doc = ""] + #[doc = " This is keyed first by the era index to allow bulk deletion and then the stash account."] + #[doc = ""] + #[doc = " Is it removed after `HISTORY_DEPTH` eras."] + pub fn eras_validator_prefs( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::ValidatorPrefs, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasValidatorPrefs", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 134u8, 250u8, 229u8, 21u8, 44u8, 119u8, 43u8, 99u8, 69u8, 94u8, 177u8, + 180u8, 174u8, 134u8, 54u8, 25u8, 56u8, 144u8, 194u8, 149u8, 56u8, + 234u8, 78u8, 238u8, 78u8, 247u8, 205u8, 43u8, 16u8, 159u8, 92u8, 169u8, + ], + ) + } + #[doc = " Similar to `ErasStakers`, this holds the preferences of validators."] + #[doc = ""] + #[doc = " This is keyed first by the era index to allow bulk deletion and then the stash account."] + #[doc = ""] + #[doc = " Is it removed after `HISTORY_DEPTH` eras."] + pub fn eras_validator_prefs_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::ValidatorPrefs, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasValidatorPrefs", + Vec::new(), + [ + 134u8, 250u8, 229u8, 21u8, 44u8, 119u8, 43u8, 99u8, 69u8, 94u8, 177u8, + 180u8, 174u8, 134u8, 54u8, 25u8, 56u8, 144u8, 194u8, 149u8, 56u8, + 234u8, 78u8, 238u8, 78u8, 247u8, 205u8, 43u8, 16u8, 159u8, 92u8, 169u8, + ], + ) + } + #[doc = " The total validator era payout for the last `HISTORY_DEPTH` eras."] + #[doc = ""] + #[doc = " Eras that haven't finished yet or has been removed doesn't have reward."] + pub fn eras_validator_reward( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasValidatorReward", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 185u8, 85u8, 179u8, 163u8, 178u8, 168u8, 141u8, 200u8, 59u8, 77u8, 2u8, + 197u8, 36u8, 188u8, 133u8, 117u8, 2u8, 25u8, 105u8, 132u8, 44u8, 75u8, + 15u8, 82u8, 57u8, 89u8, 242u8, 234u8, 70u8, 244u8, 198u8, 126u8, + ], + ) + } + #[doc = " The total validator era payout for the last `HISTORY_DEPTH` eras."] + #[doc = ""] + #[doc = " Eras that haven't finished yet or has been removed doesn't have reward."] + pub fn eras_validator_reward_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasValidatorReward", + Vec::new(), + [ + 185u8, 85u8, 179u8, 163u8, 178u8, 168u8, 141u8, 200u8, 59u8, 77u8, 2u8, + 197u8, 36u8, 188u8, 133u8, 117u8, 2u8, 25u8, 105u8, 132u8, 44u8, 75u8, + 15u8, 82u8, 57u8, 89u8, 242u8, 234u8, 70u8, 244u8, 198u8, 126u8, + ], + ) + } + #[doc = " Rewards for the last `HISTORY_DEPTH` eras."] + #[doc = " If reward hasn't been set or has been removed then 0 reward is returned."] + pub fn eras_reward_points( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::EraRewardPoints<::subxt::utils::AccountId32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasRewardPoints", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 135u8, 0u8, 85u8, 241u8, 213u8, 133u8, 30u8, 192u8, 251u8, 191u8, 41u8, + 38u8, 233u8, 236u8, 218u8, 246u8, 166u8, 93u8, 46u8, 37u8, 48u8, 187u8, + 172u8, 48u8, 251u8, 178u8, 75u8, 203u8, 60u8, 188u8, 204u8, 207u8, + ], + ) + } + #[doc = " Rewards for the last `HISTORY_DEPTH` eras."] + #[doc = " If reward hasn't been set or has been removed then 0 reward is returned."] + pub fn eras_reward_points_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::EraRewardPoints<::subxt::utils::AccountId32>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasRewardPoints", + Vec::new(), + [ + 135u8, 0u8, 85u8, 241u8, 213u8, 133u8, 30u8, 192u8, 251u8, 191u8, 41u8, + 38u8, 233u8, 236u8, 218u8, 246u8, 166u8, 93u8, 46u8, 37u8, 48u8, 187u8, + 172u8, 48u8, 251u8, 178u8, 75u8, 203u8, 60u8, 188u8, 204u8, 207u8, + ], + ) + } + #[doc = " The total amount staked for the last `HISTORY_DEPTH` eras."] + #[doc = " If total hasn't been set or has been removed then 0 stake is returned."] + pub fn eras_total_stake( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasTotalStake", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 8u8, 78u8, 101u8, 62u8, 124u8, 126u8, 66u8, 26u8, 47u8, 126u8, 239u8, + 204u8, 222u8, 104u8, 19u8, 108u8, 238u8, 160u8, 112u8, 242u8, 56u8, + 2u8, 250u8, 164u8, 250u8, 213u8, 201u8, 84u8, 193u8, 117u8, 108u8, + 146u8, + ], + ) + } + #[doc = " The total amount staked for the last `HISTORY_DEPTH` eras."] + #[doc = " If total hasn't been set or has been removed then 0 stake is returned."] + pub fn eras_total_stake_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ErasTotalStake", + Vec::new(), + [ + 8u8, 78u8, 101u8, 62u8, 124u8, 126u8, 66u8, 26u8, 47u8, 126u8, 239u8, + 204u8, 222u8, 104u8, 19u8, 108u8, 238u8, 160u8, 112u8, 242u8, 56u8, + 2u8, 250u8, 164u8, 250u8, 213u8, 201u8, 84u8, 193u8, 117u8, 108u8, + 146u8, + ], + ) + } + #[doc = " Mode of era forcing."] + pub fn force_era( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::Forcing, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ForceEra", + vec![], + [ + 177u8, 148u8, 73u8, 108u8, 136u8, 126u8, 89u8, 18u8, 124u8, 66u8, 30u8, + 102u8, 133u8, 164u8, 78u8, 214u8, 184u8, 163u8, 75u8, 164u8, 117u8, + 233u8, 209u8, 158u8, 99u8, 208u8, 21u8, 194u8, 152u8, 82u8, 16u8, + 222u8, + ], + ) + } + #[doc = " The percentage of the slash that is distributed to reporters."] + #[doc = ""] + #[doc = " The rest of the slashed value is handled by the `Slash`."] + pub fn slash_reward_fraction( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "SlashRewardFraction", + vec![], + [ + 53u8, 88u8, 253u8, 237u8, 84u8, 228u8, 187u8, 130u8, 108u8, 195u8, + 135u8, 25u8, 75u8, 52u8, 238u8, 62u8, 133u8, 38u8, 139u8, 129u8, 216u8, + 193u8, 197u8, 216u8, 245u8, 171u8, 128u8, 207u8, 125u8, 246u8, 248u8, + 7u8, + ], + ) + } + #[doc = " The amount of currency given to reporters of a slash event which was"] + #[doc = " canceled by extraordinary circumstances (e.g. governance)."] + pub fn canceled_slash_payout( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "CanceledSlashPayout", + vec![], + [ + 221u8, 88u8, 134u8, 81u8, 22u8, 229u8, 100u8, 27u8, 86u8, 244u8, 229u8, + 107u8, 251u8, 119u8, 58u8, 153u8, 19u8, 20u8, 254u8, 169u8, 248u8, + 220u8, 98u8, 118u8, 48u8, 213u8, 22u8, 79u8, 242u8, 250u8, 147u8, + 173u8, + ], + ) + } + #[doc = " All unapplied slashes that are queued for later."] + pub fn unapplied_slashes( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::pallet_staking::UnappliedSlash< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "UnappliedSlashes", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 158u8, 134u8, 7u8, 21u8, 200u8, 222u8, 197u8, 166u8, 199u8, 39u8, 1u8, + 167u8, 164u8, 154u8, 165u8, 118u8, 92u8, 223u8, 219u8, 136u8, 196u8, + 155u8, 243u8, 20u8, 198u8, 92u8, 198u8, 61u8, 252u8, 176u8, 175u8, + 172u8, + ], + ) + } + #[doc = " All unapplied slashes that are queued for later."] + pub fn unapplied_slashes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::pallet_staking::UnappliedSlash< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "UnappliedSlashes", + Vec::new(), + [ + 158u8, 134u8, 7u8, 21u8, 200u8, 222u8, 197u8, 166u8, 199u8, 39u8, 1u8, + 167u8, 164u8, 154u8, 165u8, 118u8, 92u8, 223u8, 219u8, 136u8, 196u8, + 155u8, 243u8, 20u8, 198u8, 92u8, 198u8, 61u8, 252u8, 176u8, 175u8, + 172u8, + ], + ) + } + #[doc = " A mapping from still-bonded eras to the first session index of that era."] + #[doc = ""] + #[doc = " Must contains information for eras for the range:"] + #[doc = " `[active_era - bounding_duration; active_era]`"] + pub fn bonded_eras( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<(::core::primitive::u32, ::core::primitive::u32)>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "BondedEras", + vec![], + [ + 20u8, 0u8, 164u8, 169u8, 183u8, 130u8, 242u8, 167u8, 92u8, 254u8, + 191u8, 206u8, 177u8, 182u8, 219u8, 162u8, 7u8, 116u8, 223u8, 166u8, + 239u8, 216u8, 140u8, 42u8, 174u8, 237u8, 134u8, 186u8, 180u8, 62u8, + 175u8, 239u8, + ], + ) + } + #[doc = " All slashing events on validators, mapped by era to the highest slash proportion"] + #[doc = " and slash value of the era."] + pub fn validator_slash_in_era( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (runtime_types::sp_arithmetic::per_things::Perbill, ::core::primitive::u128), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ValidatorSlashInEra", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 245u8, 72u8, 52u8, 22u8, 10u8, 177u8, 127u8, 83u8, 180u8, 246u8, 17u8, + 82u8, 6u8, 231u8, 131u8, 68u8, 73u8, 92u8, 241u8, 251u8, 32u8, 97u8, + 121u8, 137u8, 190u8, 227u8, 162u8, 16u8, 224u8, 207u8, 63u8, 184u8, + ], + ) + } + #[doc = " All slashing events on validators, mapped by era to the highest slash proportion"] + #[doc = " and slash value of the era."] + pub fn validator_slash_in_era_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (runtime_types::sp_arithmetic::per_things::Perbill, ::core::primitive::u128), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ValidatorSlashInEra", + Vec::new(), + [ + 245u8, 72u8, 52u8, 22u8, 10u8, 177u8, 127u8, 83u8, 180u8, 246u8, 17u8, + 82u8, 6u8, 231u8, 131u8, 68u8, 73u8, 92u8, 241u8, 251u8, 32u8, 97u8, + 121u8, 137u8, 190u8, 227u8, 162u8, 16u8, 224u8, 207u8, 63u8, 184u8, + ], + ) + } + #[doc = " All slashing events on nominators, mapped by era to the highest slash value of the era."] + pub fn nominator_slash_in_era( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "NominatorSlashInEra", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 8u8, 89u8, 171u8, 183u8, 64u8, 29u8, 44u8, 185u8, 11u8, 204u8, 67u8, + 60u8, 208u8, 132u8, 9u8, 214u8, 13u8, 148u8, 205u8, 26u8, 5u8, 7u8, + 250u8, 191u8, 83u8, 118u8, 95u8, 17u8, 40u8, 126u8, 16u8, 135u8, + ], + ) + } + #[doc = " All slashing events on nominators, mapped by era to the highest slash value of the era."] + pub fn nominator_slash_in_era_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "NominatorSlashInEra", + Vec::new(), + [ + 8u8, 89u8, 171u8, 183u8, 64u8, 29u8, 44u8, 185u8, 11u8, 204u8, 67u8, + 60u8, 208u8, 132u8, 9u8, 214u8, 13u8, 148u8, 205u8, 26u8, 5u8, 7u8, + 250u8, 191u8, 83u8, 118u8, 95u8, 17u8, 40u8, 126u8, 16u8, 135u8, + ], + ) + } + #[doc = " Slashing spans for stash accounts."] + pub fn slashing_spans( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::slashing::SlashingSpans, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "SlashingSpans", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 74u8, 169u8, 189u8, 252u8, 193u8, 191u8, 114u8, 107u8, 158u8, 125u8, + 252u8, 35u8, 177u8, 129u8, 99u8, 24u8, 77u8, 223u8, 238u8, 24u8, 237u8, + 225u8, 5u8, 117u8, 163u8, 180u8, 139u8, 22u8, 169u8, 185u8, 60u8, + 217u8, + ], + ) + } + #[doc = " Slashing spans for stash accounts."] + pub fn slashing_spans_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::slashing::SlashingSpans, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "SlashingSpans", + Vec::new(), + [ + 74u8, 169u8, 189u8, 252u8, 193u8, 191u8, 114u8, 107u8, 158u8, 125u8, + 252u8, 35u8, 177u8, 129u8, 99u8, 24u8, 77u8, 223u8, 238u8, 24u8, 237u8, + 225u8, 5u8, 117u8, 163u8, 180u8, 139u8, 22u8, 169u8, 185u8, 60u8, + 217u8, + ], + ) + } + #[doc = " Records information about the maximum slash of a stash within a slashing span,"] + #[doc = " as well as how much reward has been paid out."] + pub fn span_slash( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::slashing::SpanRecord<::core::primitive::u128>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "SpanSlash", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 158u8, 168u8, 151u8, 108u8, 4u8, 168u8, 253u8, 28u8, 69u8, 111u8, 99u8, + 235u8, 175u8, 72u8, 48u8, 238u8, 239u8, 142u8, 40u8, 142u8, 97u8, 77u8, + 72u8, 123u8, 210u8, 157u8, 119u8, 180u8, 205u8, 98u8, 110u8, 215u8, + ], + ) + } + #[doc = " Records information about the maximum slash of a stash within a slashing span,"] + #[doc = " as well as how much reward has been paid out."] + pub fn span_slash_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_staking::slashing::SpanRecord<::core::primitive::u128>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "SpanSlash", + Vec::new(), + [ + 158u8, 168u8, 151u8, 108u8, 4u8, 168u8, 253u8, 28u8, 69u8, 111u8, 99u8, + 235u8, 175u8, 72u8, 48u8, 238u8, 239u8, 142u8, 40u8, 142u8, 97u8, 77u8, + 72u8, 123u8, 210u8, 157u8, 119u8, 180u8, 205u8, 98u8, 110u8, 215u8, + ], + ) + } + #[doc = " The last planned session scheduled by the session pallet."] + #[doc = ""] + #[doc = " This is basically in sync with the call to [`pallet_session::SessionManager::new_session`]."] + pub fn current_planned_session( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "CurrentPlannedSession", + vec![], + [ + 12u8, 47u8, 20u8, 104u8, 155u8, 181u8, 35u8, 91u8, 172u8, 97u8, 206u8, + 135u8, 185u8, 142u8, 46u8, 72u8, 32u8, 118u8, 225u8, 191u8, 28u8, + 130u8, 7u8, 38u8, 181u8, 233u8, 201u8, 8u8, 160u8, 161u8, 86u8, 204u8, + ], + ) + } + #[doc = " Indices of validators that have offended in the active era and whether they are currently"] + #[doc = " disabled."] + #[doc = ""] + #[doc = " This value should be a superset of disabled validators since not all offences lead to the"] + #[doc = " validator being disabled (if there was no slash). This is needed to track the percentage of"] + #[doc = " validators that have offended in the current era, ensuring a new era is forced if"] + #[doc = " `OffendingValidatorsThreshold` is reached. The vec is always kept sorted so that we can find"] + #[doc = " whether a given validator has previously offended using binary search. It gets cleared when"] + #[doc = " the era ends."] + pub fn offending_validators( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<(::core::primitive::u32, ::core::primitive::bool)>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "OffendingValidators", + vec![], + [ + 201u8, 31u8, 141u8, 182u8, 160u8, 180u8, 37u8, 226u8, 50u8, 65u8, + 103u8, 11u8, 38u8, 120u8, 200u8, 219u8, 219u8, 98u8, 185u8, 137u8, + 154u8, 20u8, 130u8, 163u8, 126u8, 185u8, 33u8, 194u8, 76u8, 172u8, + 70u8, 220u8, + ], + ) + } + #[doc = " The threshold for when users can start calling `chill_other` for other validators /"] + #[doc = " nominators. The threshold is compared to the actual number of validators / nominators"] + #[doc = " (`CountFor*`) in the system compared to the configured max (`Max*Count`)."] + pub fn chill_threshold( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::per_things::Percent, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Staking", + "ChillThreshold", + vec![], + [ + 133u8, 222u8, 1u8, 208u8, 212u8, 216u8, 247u8, 66u8, 178u8, 96u8, 35u8, + 112u8, 33u8, 245u8, 11u8, 249u8, 255u8, 212u8, 204u8, 161u8, 44u8, + 38u8, 126u8, 151u8, 140u8, 42u8, 253u8, 101u8, 1u8, 23u8, 239u8, 39u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Number of eras to keep in history."] + #[doc = ""] + #[doc = " Following information is kept for eras in `[current_era -"] + #[doc = " HistoryDepth, current_era]`: `ErasStakers`, `ErasStakersClipped`,"] + #[doc = " `ErasValidatorPrefs`, `ErasValidatorReward`, `ErasRewardPoints`,"] + #[doc = " `ErasTotalStake`, `ErasStartSessionIndex`,"] + #[doc = " `StakingLedger.claimed_rewards`."] + #[doc = ""] + #[doc = " Must be more than the number of eras delayed by session."] + #[doc = " I.e. active era must always be in history. I.e. `active_era >"] + #[doc = " current_era - history_depth` must be guaranteed."] + #[doc = ""] + #[doc = " If migrating an existing pallet from storage value to config value,"] + #[doc = " this should be set to same value or greater as in storage."] + #[doc = ""] + #[doc = " Note: `HistoryDepth` is used as the upper bound for the `BoundedVec`"] + #[doc = " item `StakingLedger.claimed_rewards`. Setting this value lower than"] + #[doc = " the existing value can lead to inconsistencies in the"] + #[doc = " `StakingLedger` and will need to be handled properly in a migration."] + #[doc = " The test `reducing_history_depth_abrupt` shows this effect."] + pub fn history_depth(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Staking", + "HistoryDepth", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Number of sessions per era."] + pub fn sessions_per_era( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Staking", + "SessionsPerEra", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Number of eras that staked funds must remain bonded for."] + pub fn bonding_duration( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Staking", + "BondingDuration", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Number of eras that slashes are deferred by, after computation."] + #[doc = ""] + #[doc = " This should be less than the bonding duration. Set to 0 if slashes"] + #[doc = " should be applied immediately, without opportunity for intervention."] + pub fn slash_defer_duration( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Staking", + "SlashDeferDuration", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators rewarded for each validator."] + #[doc = ""] + #[doc = " For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can"] + #[doc = " claim their reward. This used to limit the i/o cost for the nominator payout."] + pub fn max_nominator_rewarded_per_validator( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Staking", + "MaxNominatorRewardedPerValidator", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of `unlocking` chunks a [`StakingLedger`] can"] + #[doc = " have. Effectively determines how many unique eras a staker may be"] + #[doc = " unbonding in."] + #[doc = ""] + #[doc = " Note: `MaxUnlockingChunks` is used as the upper bound for the"] + #[doc = " `BoundedVec` item `StakingLedger.unlocking`. Setting this value"] + #[doc = " lower than the existing value can lead to inconsistencies in the"] + #[doc = " `StakingLedger` and will need to be handled properly in a runtime"] + #[doc = " migration. The test `reducing_max_unlocking_chunks_abrupt` shows"] + #[doc = " this effect."] + pub fn max_unlocking_chunks( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Staking", + "MaxUnlockingChunks", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod offences { + use super::{root_mod, runtime_types}; + #[doc = "Events type."] + pub type Event = runtime_types::pallet_offences::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "There is an offence reported of the given `kind` happened at the `session_index` and"] + #[doc = "(kind-specific) time slot. This event is not deposited for duplicate slashes."] + #[doc = "\\[kind, timeslot\\]."] + pub struct Offence { + pub kind: [::core::primitive::u8; 16usize], + pub timeslot: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::events::StaticEvent for Offence { + const PALLET: &'static str = "Offences"; + const EVENT: &'static str = "Offence"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The primary structure that holds all offence records keyed by report identifiers."] + pub fn reports( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_staking::offence::OffenceDetails< + ::subxt::utils::AccountId32, + ( + ::subxt::utils::AccountId32, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + ), + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Offences", + "Reports", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 140u8, 14u8, 199u8, 180u8, 83u8, 5u8, 23u8, 57u8, 241u8, 41u8, 240u8, + 35u8, 80u8, 12u8, 115u8, 16u8, 2u8, 15u8, 22u8, 77u8, 25u8, 92u8, + 100u8, 39u8, 226u8, 55u8, 240u8, 80u8, 190u8, 196u8, 234u8, 177u8, + ], + ) + } + #[doc = " The primary structure that holds all offence records keyed by report identifiers."] + pub fn reports_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_staking::offence::OffenceDetails< + ::subxt::utils::AccountId32, + ( + ::subxt::utils::AccountId32, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + ), + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Offences", + "Reports", + Vec::new(), + [ + 140u8, 14u8, 199u8, 180u8, 83u8, 5u8, 23u8, 57u8, 241u8, 41u8, 240u8, + 35u8, 80u8, 12u8, 115u8, 16u8, 2u8, 15u8, 22u8, 77u8, 25u8, 92u8, + 100u8, 39u8, 226u8, 55u8, 240u8, 80u8, 190u8, 196u8, 234u8, 177u8, + ], + ) + } + #[doc = " A vector of reports of the same kind that happened at the same time slot."] + pub fn concurrent_reports_index( + &self, + _0: impl ::std::borrow::Borrow<[::core::primitive::u8; 16usize]>, + _1: impl ::std::borrow::Borrow<[::core::primitive::u8]>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::subxt::utils::H256>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Offences", + "ConcurrentReportsIndex", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, + 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, + 138u8, 24u8, 58u8, 216u8, 72u8, 221u8, 232u8, 252u8, 244u8, 96u8, + 247u8, + ], + ) + } + #[doc = " A vector of reports of the same kind that happened at the same time slot."] + pub fn concurrent_reports_index_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::subxt::utils::H256>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Offences", + "ConcurrentReportsIndex", + Vec::new(), + [ + 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, + 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, + 138u8, 24u8, 58u8, 216u8, 72u8, 221u8, 232u8, 252u8, 244u8, 96u8, + 247u8, + ], + ) + } + } + } + } + pub mod historical { + use super::{root_mod, runtime_types}; + } + pub mod session { + use super::{root_mod, runtime_types}; + #[doc = "Error for the session pallet."] + pub type Error = runtime_types::pallet_session::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_session::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetKeys { + pub keys: runtime_types::paseo_runtime::SessionKeys, + pub proof: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for SetKeys { + const PALLET: &'static str = "Session"; + const CALL: &'static str = "set_keys"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PurgeKeys; + impl ::subxt::blocks::StaticExtrinsic for PurgeKeys { + const PALLET: &'static str = "Session"; + const CALL: &'static str = "purge_keys"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::set_keys`]."] + pub fn set_keys( + &self, + keys: runtime_types::paseo_runtime::SessionKeys, + proof: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Session", + "set_keys", + types::SetKeys { keys, proof }, + [ + 50u8, 154u8, 235u8, 252u8, 160u8, 25u8, 233u8, 90u8, 76u8, 227u8, 22u8, + 129u8, 221u8, 129u8, 95u8, 124u8, 117u8, 117u8, 43u8, 17u8, 109u8, + 252u8, 39u8, 115u8, 150u8, 80u8, 38u8, 34u8, 62u8, 237u8, 248u8, 246u8, + ], + ) + } + #[doc = "See [`Pallet::purge_keys`]."] + pub fn purge_keys(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Session", + "purge_keys", + types::PurgeKeys {}, + [ + 215u8, 204u8, 146u8, 236u8, 32u8, 78u8, 198u8, 79u8, 85u8, 214u8, 15u8, + 151u8, 158u8, 31u8, 146u8, 119u8, 119u8, 204u8, 151u8, 169u8, 226u8, + 67u8, 217u8, 39u8, 241u8, 245u8, 203u8, 240u8, 203u8, 172u8, 16u8, + 209u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_session::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "New session has happened. Note that the argument is the session index, not the"] + #[doc = "block number as the type might suggest."] + pub struct NewSession { + pub session_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for NewSession { + const PALLET: &'static str = "Session"; + const EVENT: &'static str = "NewSession"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The current set of validators."] + pub fn validators( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::subxt::utils::AccountId32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Session", + "Validators", + vec![], + [ + 50u8, 86u8, 154u8, 222u8, 249u8, 209u8, 156u8, 22u8, 155u8, 25u8, + 133u8, 194u8, 210u8, 50u8, 38u8, 28u8, 139u8, 201u8, 90u8, 139u8, + 115u8, 12u8, 12u8, 141u8, 4u8, 178u8, 201u8, 241u8, 223u8, 234u8, 6u8, + 86u8, + ], + ) + } + #[doc = " Current index of the session."] + pub fn current_index( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Session", + "CurrentIndex", + vec![], + [ + 167u8, 151u8, 125u8, 150u8, 159u8, 21u8, 78u8, 217u8, 237u8, 183u8, + 135u8, 65u8, 187u8, 114u8, 188u8, 206u8, 16u8, 32u8, 69u8, 208u8, + 134u8, 159u8, 232u8, 224u8, 243u8, 27u8, 31u8, 166u8, 145u8, 44u8, + 221u8, 230u8, + ], + ) + } + #[doc = " True if the underlying economic identities or weighting behind the validators"] + #[doc = " has changed in the queued validator set."] + pub fn queued_changed( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Session", + "QueuedChanged", + vec![], + [ + 184u8, 137u8, 224u8, 137u8, 31u8, 236u8, 95u8, 164u8, 102u8, 225u8, + 198u8, 227u8, 140u8, 37u8, 113u8, 57u8, 59u8, 4u8, 202u8, 102u8, 117u8, + 36u8, 226u8, 64u8, 113u8, 141u8, 199u8, 111u8, 99u8, 144u8, 198u8, + 153u8, + ], + ) + } + #[doc = " The queued keys for the next session. When the next session begins, these keys"] + #[doc = " will be used to determine the validator's session keys."] + pub fn queued_keys( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::paseo_runtime::SessionKeys, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Session", + "QueuedKeys", + vec![], + [ + 251u8, 240u8, 64u8, 86u8, 241u8, 74u8, 141u8, 38u8, 46u8, 18u8, 92u8, + 101u8, 227u8, 161u8, 58u8, 222u8, 17u8, 29u8, 248u8, 237u8, 74u8, 69u8, + 18u8, 16u8, 129u8, 187u8, 172u8, 249u8, 162u8, 96u8, 218u8, 186u8, + ], + ) + } + #[doc = " Indices of disabled validators."] + #[doc = ""] + #[doc = " The vec is always kept sorted so that we can find whether a given validator is"] + #[doc = " disabled using binary search. It gets cleared when `on_session_ending` returns"] + #[doc = " a new set of identities."] + pub fn disabled_validators( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::core::primitive::u32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Session", + "DisabledValidators", + vec![], + [ + 213u8, 19u8, 168u8, 234u8, 187u8, 200u8, 180u8, 97u8, 234u8, 189u8, + 36u8, 233u8, 158u8, 184u8, 45u8, 35u8, 129u8, 213u8, 133u8, 8u8, 104u8, + 183u8, 46u8, 68u8, 154u8, 240u8, 132u8, 22u8, 247u8, 11u8, 54u8, 221u8, + ], + ) + } + #[doc = " The next session keys for a validator."] + pub fn next_keys( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::paseo_runtime::SessionKeys, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Session", + "NextKeys", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, + 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, + 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + ], + ) + } + #[doc = " The next session keys for a validator."] + pub fn next_keys_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::paseo_runtime::SessionKeys, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Session", + "NextKeys", + Vec::new(), + [ + 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, + 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, + 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + ], + ) + } + #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] + pub fn key_owner( + &self, + _0: impl ::std::borrow::Borrow, + _1: impl ::std::borrow::Borrow<[::core::primitive::u8]>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Session", + "KeyOwner", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, + 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, + 253u8, 109u8, 88u8, 77u8, 217u8, 140u8, 51u8, 40u8, 118u8, 35u8, 107u8, + 206u8, + ], + ) + } + #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] + pub fn key_owner_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Session", + "KeyOwner", + Vec::new(), + [ + 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, + 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, + 253u8, 109u8, 88u8, 77u8, 217u8, 140u8, 51u8, 40u8, 118u8, 35u8, 107u8, + 206u8, + ], + ) + } + } + } + } + pub mod grandpa { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_grandpa::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_grandpa::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocation { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { + const PALLET: &'static str = "Grandpa"; + const CALL: &'static str = "report_equivocation"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocationUnsigned { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + const PALLET: &'static str = "Grandpa"; + const CALL: &'static str = "report_equivocation_unsigned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NoteStalled { + pub delay: ::core::primitive::u32, + pub best_finalized_block_number: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for NoteStalled { + const PALLET: &'static str = "Grandpa"; + const CALL: &'static str = "note_stalled"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::report_equivocation`]."] + pub fn report_equivocation( + &self, + equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Grandpa", + "report_equivocation", + types::ReportEquivocation { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 11u8, 183u8, 81u8, 93u8, 41u8, 7u8, 70u8, 155u8, 8u8, 57u8, 177u8, + 245u8, 131u8, 79u8, 236u8, 118u8, 147u8, 114u8, 40u8, 204u8, 177u8, + 2u8, 43u8, 42u8, 2u8, 201u8, 202u8, 120u8, 150u8, 109u8, 108u8, 156u8, + ], + ) + } + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + pub fn report_equivocation_unsigned( + &self, + equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Grandpa", + "report_equivocation_unsigned", + types::ReportEquivocationUnsigned { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 141u8, 133u8, 227u8, 65u8, 22u8, 181u8, 108u8, 9u8, 157u8, 27u8, 124u8, + 53u8, 177u8, 27u8, 5u8, 16u8, 193u8, 66u8, 59u8, 87u8, 143u8, 238u8, + 251u8, 167u8, 117u8, 138u8, 246u8, 236u8, 65u8, 148u8, 20u8, 131u8, + ], + ) + } + #[doc = "See [`Pallet::note_stalled`]."] + pub fn note_stalled( + &self, + delay: ::core::primitive::u32, + best_finalized_block_number: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Grandpa", + "note_stalled", + types::NoteStalled { delay, best_finalized_block_number }, + [ + 158u8, 25u8, 64u8, 114u8, 131u8, 139u8, 227u8, 132u8, 42u8, 107u8, + 40u8, 249u8, 18u8, 93u8, 254u8, 86u8, 37u8, 67u8, 250u8, 35u8, 241u8, + 194u8, 209u8, 20u8, 39u8, 75u8, 186u8, 21u8, 48u8, 124u8, 151u8, 31u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_grandpa::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "New authority set has been applied."] + pub struct NewAuthorities { + pub authority_set: ::std::vec::Vec<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>, + } + impl ::subxt::events::StaticEvent for NewAuthorities { + const PALLET: &'static str = "Grandpa"; + const EVENT: &'static str = "NewAuthorities"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Current authority set has been paused."] + pub struct Paused; + impl ::subxt::events::StaticEvent for Paused { + const PALLET: &'static str = "Grandpa"; + const EVENT: &'static str = "Paused"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Current authority set has been resumed."] + pub struct Resumed; + impl ::subxt::events::StaticEvent for Resumed { + const PALLET: &'static str = "Grandpa"; + const EVENT: &'static str = "Resumed"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " State of the current authority set."] + pub fn state( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_grandpa::StoredState<::core::primitive::u32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "State", + vec![], + [ + 73u8, 71u8, 112u8, 83u8, 238u8, 75u8, 44u8, 9u8, 180u8, 33u8, 30u8, + 121u8, 98u8, 96u8, 61u8, 133u8, 16u8, 70u8, 30u8, 249u8, 34u8, 148u8, + 15u8, 239u8, 164u8, 157u8, 52u8, 27u8, 144u8, 52u8, 223u8, 109u8, + ], + ) + } + #[doc = " Pending change: (signaled at, scheduled change)."] + pub fn pending_change( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_grandpa::StoredPendingChange<::core::primitive::u32>, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "PendingChange", + vec![], + [ + 150u8, 194u8, 185u8, 248u8, 239u8, 43u8, 141u8, 253u8, 61u8, 106u8, + 74u8, 164u8, 209u8, 204u8, 206u8, 200u8, 32u8, 38u8, 11u8, 78u8, 84u8, + 243u8, 181u8, 142u8, 179u8, 151u8, 81u8, 204u8, 244u8, 150u8, 137u8, + 250u8, + ], + ) + } + #[doc = " next block number where we can force a change."] + pub fn next_forced( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "NextForced", + vec![], + [ + 3u8, 231u8, 56u8, 18u8, 87u8, 112u8, 227u8, 126u8, 180u8, 131u8, 255u8, + 141u8, 82u8, 34u8, 61u8, 47u8, 234u8, 37u8, 95u8, 62u8, 33u8, 235u8, + 231u8, 122u8, 125u8, 8u8, 223u8, 95u8, 255u8, 204u8, 40u8, 97u8, + ], + ) + } + #[doc = " `true` if we are currently stalled."] + pub fn stalled( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u32, ::core::primitive::u32), + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "Stalled", + vec![], + [ + 6u8, 81u8, 205u8, 142u8, 195u8, 48u8, 0u8, 247u8, 108u8, 170u8, 10u8, + 249u8, 72u8, 206u8, 32u8, 103u8, 109u8, 57u8, 51u8, 21u8, 144u8, 204u8, + 79u8, 8u8, 191u8, 185u8, 38u8, 34u8, 118u8, 223u8, 75u8, 241u8, + ], + ) + } + #[doc = " The number of changes (both in terms of keys and underlying economic responsibilities)"] + #[doc = " in the \"set\" of Grandpa validators from genesis."] + pub fn current_set_id( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "CurrentSetId", + vec![], + [ + 234u8, 215u8, 218u8, 42u8, 30u8, 76u8, 129u8, 40u8, 125u8, 137u8, + 207u8, 47u8, 46u8, 213u8, 159u8, 50u8, 175u8, 81u8, 155u8, 123u8, + 246u8, 175u8, 156u8, 68u8, 22u8, 113u8, 135u8, 137u8, 163u8, 18u8, + 115u8, 73u8, + ], + ) + } + #[doc = " A mapping from grandpa set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and GRANDPA set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `SetId` is not under user control."] + pub fn set_id_session( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "SetIdSession", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " A mapping from grandpa set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and GRANDPA set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `SetId` is not under user control."] + pub fn set_id_session_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "SetIdSession", + Vec::new(), + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Max Authorities in use"] + pub fn max_authorities( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Grandpa", + "MaxAuthorities", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators for each validator."] + pub fn max_nominators( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Grandpa", + "MaxNominators", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of entries to keep in the set id to session index mapping."] + #[doc = ""] + #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] + #[doc = " value should relate to the bonding duration of whatever staking system is"] + #[doc = " being used (if any). If equivocation handling is not enabled then this value"] + #[doc = " can be zero."] + pub fn max_set_id_session_entries( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Grandpa", + "MaxSetIdSessionEntries", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod im_online { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_im_online::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_im_online::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Heartbeat { + pub heartbeat: + runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, + pub signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, + } + impl ::subxt::blocks::StaticExtrinsic for Heartbeat { + const PALLET: &'static str = "ImOnline"; + const CALL: &'static str = "heartbeat"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::heartbeat`]."] + pub fn heartbeat( + &self, + heartbeat: runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, + signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ImOnline", + "heartbeat", + types::Heartbeat { heartbeat, signature }, + [ + 41u8, 78u8, 115u8, 250u8, 94u8, 34u8, 215u8, 28u8, 33u8, 175u8, 203u8, + 205u8, 14u8, 40u8, 197u8, 51u8, 24u8, 198u8, 173u8, 32u8, 119u8, 154u8, + 213u8, 125u8, 219u8, 3u8, 128u8, 52u8, 166u8, 223u8, 241u8, 129u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_im_online::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new heartbeat was received from `AuthorityId`."] + pub struct HeartbeatReceived { + pub authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + } + impl ::subxt::events::StaticEvent for HeartbeatReceived { + const PALLET: &'static str = "ImOnline"; + const EVENT: &'static str = "HeartbeatReceived"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "At the end of the session, no offence was committed."] + pub struct AllGood; + impl ::subxt::events::StaticEvent for AllGood { + const PALLET: &'static str = "ImOnline"; + const EVENT: &'static str = "AllGood"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "At the end of the session, at least one validator was found to be offline."] + pub struct SomeOffline { + pub offline: ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + )>, + } + impl ::subxt::events::StaticEvent for SomeOffline { + const PALLET: &'static str = "ImOnline"; + const EVENT: &'static str = "SomeOffline"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The block number after which it's ok to send heartbeats in the current"] + #[doc = " session."] + #[doc = ""] + #[doc = " At the beginning of each session we set this to a value that should fall"] + #[doc = " roughly in the middle of the session duration. The idea is to first wait for"] + #[doc = " the validators to produce a block in the current session, so that the"] + #[doc = " heartbeat later on will not be necessary."] + #[doc = ""] + #[doc = " This value will only be used as a fallback if we fail to get a proper session"] + #[doc = " progress estimate from `NextSessionRotation`, as those estimates should be"] + #[doc = " more accurate then the value we calculate for `HeartbeatAfter`."] + pub fn heartbeat_after( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ImOnline", + "HeartbeatAfter", + vec![], + [ + 36u8, 179u8, 76u8, 254u8, 3u8, 184u8, 154u8, 142u8, 70u8, 104u8, 44u8, + 244u8, 39u8, 97u8, 31u8, 31u8, 93u8, 228u8, 185u8, 224u8, 13u8, 160u8, + 231u8, 210u8, 110u8, 143u8, 116u8, 29u8, 0u8, 215u8, 217u8, 137u8, + ], + ) + } + #[doc = " The current set of keys that may issue a heartbeat."] + pub fn keys( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ImOnline", + "Keys", + vec![], + [ + 111u8, 104u8, 188u8, 46u8, 152u8, 140u8, 137u8, 244u8, 52u8, 214u8, + 115u8, 156u8, 39u8, 239u8, 15u8, 168u8, 193u8, 125u8, 57u8, 195u8, + 250u8, 156u8, 234u8, 222u8, 222u8, 253u8, 135u8, 232u8, 196u8, 163u8, + 29u8, 218u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] + pub fn received_heartbeats( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ImOnline", + "ReceivedHeartbeats", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, + 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, + 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] + pub fn received_heartbeats_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ImOnline", + "ReceivedHeartbeats", + Vec::new(), + [ + 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, + 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, + 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] + #[doc = " number of blocks authored by the given authority."] + pub fn authored_blocks( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ImOnline", + "AuthoredBlocks", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, + 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, + 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, + 233u8, 126u8, + ], + ) + } + #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] + #[doc = " number of blocks authored by the given authority."] + pub fn authored_blocks_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ImOnline", + "AuthoredBlocks", + Vec::new(), + [ + 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, + 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, + 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, + 233u8, 126u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " A configuration for base priority of unsigned transactions."] + #[doc = ""] + #[doc = " This is exposed so that it can be tuned for particular runtime, when"] + #[doc = " multiple pallets send unsigned transactions."] + pub fn unsigned_priority( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "ImOnline", + "UnsignedPriority", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod authority_discovery { + use super::{root_mod, runtime_types}; + } + pub mod treasury { + use super::{root_mod, runtime_types}; + #[doc = "Error for the treasury pallet."] + pub type Error = runtime_types::pallet_treasury::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_treasury::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProposeSpend { + #[codec(compact)] + pub value: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for ProposeSpend { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "propose_spend"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RejectProposal { + #[codec(compact)] + pub proposal_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RejectProposal { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "reject_proposal"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApproveProposal { + #[codec(compact)] + pub proposal_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ApproveProposal { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "approve_proposal"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SpendLocal { + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for SpendLocal { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "spend_local"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveApproval { + #[codec(compact)] + pub proposal_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveApproval { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "remove_approval"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Spend { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub beneficiary: ::std::boxed::Box, + pub valid_from: ::core::option::Option<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for Spend { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "spend"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Payout { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Payout { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "payout"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckStatus { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for CheckStatus { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "check_status"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VoidSpend { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for VoidSpend { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "void_spend"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::propose_spend`]."] + pub fn propose_spend( + &self, + value: ::core::primitive::u128, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "propose_spend", + types::ProposeSpend { value, beneficiary }, + [ + 250u8, 230u8, 64u8, 10u8, 93u8, 132u8, 194u8, 69u8, 91u8, 50u8, 98u8, + 212u8, 72u8, 218u8, 29u8, 149u8, 2u8, 190u8, 219u8, 4u8, 25u8, 110u8, + 5u8, 199u8, 196u8, 37u8, 64u8, 57u8, 207u8, 235u8, 164u8, 226u8, + ], + ) + } + #[doc = "See [`Pallet::reject_proposal`]."] + pub fn reject_proposal( + &self, + proposal_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "reject_proposal", + types::RejectProposal { proposal_id }, + [ + 18u8, 166u8, 80u8, 141u8, 222u8, 230u8, 4u8, 36u8, 7u8, 76u8, 12u8, + 40u8, 145u8, 114u8, 12u8, 43u8, 223u8, 78u8, 189u8, 222u8, 120u8, 80u8, + 225u8, 215u8, 119u8, 68u8, 200u8, 15u8, 25u8, 172u8, 192u8, 173u8, + ], + ) + } + #[doc = "See [`Pallet::approve_proposal`]."] + pub fn approve_proposal( + &self, + proposal_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "approve_proposal", + types::ApproveProposal { proposal_id }, + [ + 154u8, 176u8, 152u8, 97u8, 167u8, 177u8, 78u8, 9u8, 235u8, 229u8, + 199u8, 193u8, 214u8, 3u8, 16u8, 30u8, 4u8, 104u8, 27u8, 184u8, 100u8, + 65u8, 179u8, 13u8, 91u8, 62u8, 115u8, 5u8, 219u8, 211u8, 251u8, 153u8, + ], + ) + } + #[doc = "See [`Pallet::spend_local`]."] + pub fn spend_local( + &self, + amount: ::core::primitive::u128, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "spend_local", + types::SpendLocal { amount, beneficiary }, + [ + 137u8, 171u8, 83u8, 247u8, 245u8, 212u8, 152u8, 127u8, 210u8, 71u8, + 254u8, 134u8, 189u8, 26u8, 249u8, 41u8, 214u8, 175u8, 24u8, 64u8, 33u8, + 90u8, 23u8, 134u8, 44u8, 110u8, 63u8, 46u8, 46u8, 146u8, 222u8, 79u8, + ], + ) + } + #[doc = "See [`Pallet::remove_approval`]."] + pub fn remove_approval( + &self, + proposal_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "remove_approval", + types::RemoveApproval { proposal_id }, + [ + 180u8, 20u8, 39u8, 227u8, 29u8, 228u8, 234u8, 36u8, 155u8, 114u8, + 197u8, 135u8, 185u8, 31u8, 56u8, 247u8, 224u8, 168u8, 254u8, 233u8, + 250u8, 134u8, 186u8, 155u8, 108u8, 84u8, 94u8, 226u8, 207u8, 130u8, + 196u8, 100u8, + ], + ) + } + #[doc = "See [`Pallet::spend`]."] + pub fn spend( + &self, + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + amount: ::core::primitive::u128, + beneficiary: runtime_types::xcm::VersionedMultiLocation, + valid_from: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "spend", + types::Spend { + asset_kind: ::std::boxed::Box::new(asset_kind), + amount, + beneficiary: ::std::boxed::Box::new(beneficiary), + valid_from, + }, + [ + 124u8, 75u8, 215u8, 13u8, 48u8, 105u8, 201u8, 35u8, 199u8, 228u8, 38u8, + 229u8, 147u8, 255u8, 237u8, 249u8, 114u8, 154u8, 129u8, 209u8, 177u8, + 17u8, 70u8, 107u8, 74u8, 175u8, 244u8, 132u8, 206u8, 24u8, 224u8, + 156u8, + ], + ) + } + #[doc = "See [`Pallet::payout`]."] + pub fn payout( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "payout", + types::Payout { index }, + [ + 179u8, 254u8, 82u8, 94u8, 248u8, 26u8, 6u8, 34u8, 93u8, 244u8, 186u8, + 199u8, 163u8, 32u8, 110u8, 220u8, 78u8, 11u8, 168u8, 182u8, 169u8, + 56u8, 53u8, 194u8, 168u8, 218u8, 131u8, 38u8, 46u8, 156u8, 93u8, 234u8, + ], + ) + } + #[doc = "See [`Pallet::check_status`]."] + pub fn check_status( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "check_status", + types::CheckStatus { index }, + [ + 164u8, 111u8, 10u8, 11u8, 104u8, 237u8, 112u8, 240u8, 104u8, 130u8, + 179u8, 221u8, 54u8, 18u8, 8u8, 172u8, 148u8, 245u8, 110u8, 174u8, 75u8, + 38u8, 46u8, 143u8, 101u8, 232u8, 65u8, 252u8, 36u8, 152u8, 29u8, 209u8, + ], + ) + } + #[doc = "See [`Pallet::void_spend`]."] + pub fn void_spend( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Treasury", + "void_spend", + types::VoidSpend { index }, + [ + 9u8, 212u8, 174u8, 92u8, 43u8, 102u8, 224u8, 124u8, 247u8, 239u8, + 196u8, 68u8, 132u8, 171u8, 116u8, 206u8, 52u8, 23u8, 92u8, 31u8, 156u8, + 160u8, 25u8, 16u8, 125u8, 60u8, 9u8, 109u8, 145u8, 139u8, 102u8, 224u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_treasury::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "New proposal."] + pub struct Proposed { + pub proposal_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Proposed { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Proposed"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "We have ended a spend period and will now allocate funds."] + pub struct Spending { + pub budget_remaining: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Spending { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Spending"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some funds have been allocated."] + pub struct Awarded { + pub proposal_index: ::core::primitive::u32, + pub award: ::core::primitive::u128, + pub account: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Awarded { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Awarded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A proposal was rejected; funds were slashed."] + pub struct Rejected { + pub proposal_index: ::core::primitive::u32, + pub slashed: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Rejected { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Rejected"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some of our funds have been burnt."] + pub struct Burnt { + pub burnt_funds: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Burnt { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Burnt"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Spending has finished; this is the amount that rolls over until next spend."] + pub struct Rollover { + pub rollover_balance: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Rollover { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Rollover"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some funds have been deposited."] + pub struct Deposit { + pub value: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Deposit { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Deposit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new spend proposal has been approved."] + pub struct SpendApproved { + pub proposal_index: ::core::primitive::u32, + pub amount: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for SpendApproved { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "SpendApproved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The inactive funds of the pallet have been updated."] + pub struct UpdatedInactive { + pub reactivated: ::core::primitive::u128, + pub deactivated: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for UpdatedInactive { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "UpdatedInactive"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new asset spend proposal has been approved."] + pub struct AssetSpendApproved { + pub index: ::core::primitive::u32, + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + pub amount: ::core::primitive::u128, + pub beneficiary: runtime_types::xcm::VersionedMultiLocation, + pub valid_from: ::core::primitive::u32, + pub expire_at: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for AssetSpendApproved { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "AssetSpendApproved"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An approved spend was voided."] + pub struct AssetSpendVoided { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for AssetSpendVoided { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "AssetSpendVoided"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A payment happened."] + pub struct Paid { + pub index: ::core::primitive::u32, + pub payment_id: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for Paid { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Paid"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A payment failed and can be retried."] + pub struct PaymentFailed { + pub index: ::core::primitive::u32, + pub payment_id: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for PaymentFailed { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "PaymentFailed"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A spend was processed and removed from the storage. It might have been successfully"] + #[doc = "paid or it may have expired."] + pub struct SpendProcessed { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for SpendProcessed { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "SpendProcessed"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Number of proposals that have been made."] + pub fn proposal_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "ProposalCount", + vec![], + [ + 91u8, 238u8, 246u8, 106u8, 95u8, 66u8, 83u8, 134u8, 1u8, 225u8, 164u8, + 216u8, 113u8, 101u8, 203u8, 200u8, 113u8, 97u8, 246u8, 228u8, 140u8, + 29u8, 29u8, 48u8, 176u8, 137u8, 93u8, 230u8, 56u8, 75u8, 51u8, 149u8, + ], + ) + } + #[doc = " Proposals that have been made."] + pub fn proposals( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_treasury::Proposal< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "Proposals", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, + 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, + 213u8, 87u8, 45u8, 23u8, 14u8, 167u8, 99u8, 208u8, 153u8, 163u8, 141u8, + 55u8, + ], + ) + } + #[doc = " Proposals that have been made."] + pub fn proposals_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_treasury::Proposal< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "Proposals", + Vec::new(), + [ + 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, + 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, + 213u8, 87u8, 45u8, 23u8, 14u8, 167u8, 99u8, 208u8, 153u8, 163u8, 141u8, + 55u8, + ], + ) + } + #[doc = " The amount which has been reported as inactive to Currency."] + pub fn deactivated( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "Deactivated", + vec![], + [ + 120u8, 221u8, 159u8, 56u8, 161u8, 44u8, 54u8, 233u8, 47u8, 114u8, + 170u8, 150u8, 52u8, 24u8, 137u8, 212u8, 122u8, 247u8, 40u8, 17u8, + 208u8, 130u8, 42u8, 154u8, 33u8, 222u8, 59u8, 116u8, 0u8, 15u8, 79u8, + 123u8, + ], + ) + } + #[doc = " Proposal indices that have been approved but not yet awarded."] + pub fn approvals( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "Approvals", + vec![], + [ + 78u8, 147u8, 186u8, 235u8, 17u8, 40u8, 247u8, 235u8, 67u8, 222u8, 3u8, + 14u8, 248u8, 17u8, 67u8, 180u8, 93u8, 161u8, 64u8, 35u8, 119u8, 194u8, + 187u8, 226u8, 135u8, 162u8, 147u8, 174u8, 139u8, 72u8, 99u8, 212u8, + ], + ) + } + #[doc = " The count of spends that have been made."] + pub fn spend_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "SpendCount", + vec![], + [ + 220u8, 74u8, 248u8, 52u8, 243u8, 209u8, 42u8, 236u8, 27u8, 98u8, 76u8, + 153u8, 129u8, 176u8, 34u8, 177u8, 33u8, 132u8, 21u8, 71u8, 206u8, + 146u8, 222u8, 44u8, 232u8, 246u8, 205u8, 92u8, 240u8, 136u8, 182u8, + 30u8, + ], + ) + } + #[doc = " Spends that have been approved and being processed."] + pub fn spends( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_treasury::SpendStatus< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + ::core::primitive::u128, + runtime_types::xcm::VersionedMultiLocation, + ::core::primitive::u32, + ::core::primitive::u64, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "Spends", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, + 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, + 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, + 5u8, + ], + ) + } + #[doc = " Spends that have been approved and being processed."] + pub fn spends_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_treasury::SpendStatus< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + ::core::primitive::u128, + runtime_types::xcm::VersionedMultiLocation, + ::core::primitive::u32, + ::core::primitive::u64, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Treasury", + "Spends", + Vec::new(), + [ + 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, + 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, + 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, + 5u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Fraction of a proposal's value that should be bonded in order to place the proposal."] + #[doc = " An accepted proposal gets these back. A rejected proposal does not."] + pub fn proposal_bond( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Treasury", + "ProposalBond", + [ + 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, + 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, + 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, + ], + ) + } + #[doc = " Minimum amount of funds that should be placed in a deposit for making a proposal."] + pub fn proposal_bond_minimum( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Treasury", + "ProposalBondMinimum", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " Maximum amount of funds that should be placed in a deposit for making a proposal."] + pub fn proposal_bond_maximum( + &self, + ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> + { + ::subxt::constants::Address::new_static( + "Treasury", + "ProposalBondMaximum", + [ + 198u8, 51u8, 89u8, 159u8, 124u8, 251u8, 51u8, 80u8, 167u8, 193u8, 44u8, + 199u8, 80u8, 36u8, 41u8, 130u8, 137u8, 229u8, 178u8, 208u8, 37u8, + 215u8, 169u8, 183u8, 180u8, 191u8, 140u8, 240u8, 250u8, 61u8, 42u8, + 147u8, + ], + ) + } + #[doc = " Period between successive spends."] + pub fn spend_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Treasury", + "SpendPeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Percentage of spare funds (if any) that are burnt per spend period."] + pub fn burn( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Treasury", + "Burn", + [ + 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, + 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, + 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, + ], + ) + } + #[doc = " The treasury's pallet id, used for deriving its sovereign account ID."] + pub fn pallet_id( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Treasury", + "PalletId", + [ + 56u8, 243u8, 53u8, 83u8, 154u8, 179u8, 170u8, 80u8, 133u8, 173u8, 61u8, + 161u8, 47u8, 225u8, 146u8, 21u8, 50u8, 229u8, 248u8, 27u8, 104u8, 58u8, + 129u8, 197u8, 102u8, 160u8, 168u8, 205u8, 154u8, 42u8, 217u8, 53u8, + ], + ) + } + #[doc = " The maximum number of approvals that can wait in the spending queue."] + #[doc = ""] + #[doc = " NOTE: This parameter is also used within the Bounties Pallet extension if enabled."] + pub fn max_approvals(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Treasury", + "MaxApprovals", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The period during which an approved treasury spend has to be claimed."] + pub fn payout_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Treasury", + "PayoutPeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod conviction_voting { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_conviction_voting::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_conviction_voting::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Vote { + #[codec(compact)] + pub poll_index: ::core::primitive::u32, + pub vote: runtime_types::pallet_conviction_voting::vote::AccountVote< + ::core::primitive::u128, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Vote { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "vote"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Delegate { + pub class: ::core::primitive::u16, + pub to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, + pub balance: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for Delegate { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "delegate"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Undelegate { + pub class: ::core::primitive::u16, + } + impl ::subxt::blocks::StaticExtrinsic for Undelegate { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "undelegate"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Unlock { + pub class: ::core::primitive::u16, + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for Unlock { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "unlock"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveVote { + pub class: ::core::option::Option<::core::primitive::u16>, + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveVote { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "remove_vote"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveOtherVote { + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub class: ::core::primitive::u16, + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveOtherVote { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "remove_other_vote"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::vote`]."] + pub fn vote( + &self, + poll_index: ::core::primitive::u32, + vote: runtime_types::pallet_conviction_voting::vote::AccountVote< + ::core::primitive::u128, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ConvictionVoting", + "vote", + types::Vote { poll_index, vote }, + [ + 57u8, 170u8, 177u8, 168u8, 158u8, 43u8, 87u8, 242u8, 176u8, 85u8, + 230u8, 64u8, 103u8, 239u8, 190u8, 6u8, 228u8, 165u8, 248u8, 77u8, + 231u8, 221u8, 186u8, 107u8, 249u8, 201u8, 226u8, 52u8, 129u8, 90u8, + 142u8, 159u8, + ], + ) + } + #[doc = "See [`Pallet::delegate`]."] + pub fn delegate( + &self, + class: ::core::primitive::u16, + to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, + balance: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ConvictionVoting", + "delegate", + types::Delegate { class, to, conviction, balance }, + [ + 223u8, 143u8, 33u8, 94u8, 32u8, 156u8, 43u8, 40u8, 142u8, 134u8, 209u8, + 134u8, 255u8, 179u8, 97u8, 46u8, 8u8, 140u8, 5u8, 29u8, 76u8, 22u8, + 36u8, 7u8, 108u8, 190u8, 220u8, 151u8, 10u8, 47u8, 89u8, 55u8, + ], + ) + } + #[doc = "See [`Pallet::undelegate`]."] + pub fn undelegate( + &self, + class: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ConvictionVoting", + "undelegate", + types::Undelegate { class }, + [ + 140u8, 232u8, 6u8, 53u8, 228u8, 8u8, 131u8, 144u8, 65u8, 66u8, 245u8, + 247u8, 147u8, 135u8, 198u8, 57u8, 82u8, 212u8, 89u8, 46u8, 236u8, + 168u8, 200u8, 220u8, 93u8, 168u8, 101u8, 29u8, 110u8, 76u8, 67u8, + 181u8, + ], + ) + } + #[doc = "See [`Pallet::unlock`]."] + pub fn unlock( + &self, + class: ::core::primitive::u16, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ConvictionVoting", + "unlock", + types::Unlock { class, target }, + [ + 79u8, 5u8, 252u8, 237u8, 109u8, 238u8, 157u8, 237u8, 125u8, 171u8, + 65u8, 160u8, 102u8, 192u8, 5u8, 141u8, 179u8, 249u8, 253u8, 213u8, + 105u8, 251u8, 241u8, 145u8, 186u8, 177u8, 244u8, 139u8, 71u8, 140u8, + 173u8, 108u8, + ], + ) + } + #[doc = "See [`Pallet::remove_vote`]."] + pub fn remove_vote( + &self, + class: ::core::option::Option<::core::primitive::u16>, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ConvictionVoting", + "remove_vote", + types::RemoveVote { class, index }, + [ + 255u8, 108u8, 211u8, 146u8, 168u8, 231u8, 207u8, 44u8, 76u8, 24u8, + 235u8, 60u8, 23u8, 79u8, 192u8, 192u8, 46u8, 40u8, 134u8, 27u8, 125u8, + 114u8, 125u8, 247u8, 85u8, 102u8, 76u8, 159u8, 34u8, 167u8, 152u8, + 148u8, + ], + ) + } + #[doc = "See [`Pallet::remove_other_vote`]."] + pub fn remove_other_vote( + &self, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + class: ::core::primitive::u16, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ConvictionVoting", + "remove_other_vote", + types::RemoveOtherVote { target, class, index }, + [ + 165u8, 26u8, 166u8, 37u8, 10u8, 174u8, 243u8, 10u8, 73u8, 93u8, 213u8, + 69u8, 200u8, 16u8, 48u8, 146u8, 160u8, 92u8, 28u8, 26u8, 158u8, 55u8, + 6u8, 251u8, 36u8, 132u8, 46u8, 195u8, 107u8, 34u8, 0u8, 100u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_conviction_voting::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account has delegated their vote to another account. \\[who, target\\]"] + pub struct Delegated(pub ::subxt::utils::AccountId32, pub ::subxt::utils::AccountId32); + impl ::subxt::events::StaticEvent for Delegated { + const PALLET: &'static str = "ConvictionVoting"; + const EVENT: &'static str = "Delegated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An \\[account\\] has cancelled a previous delegation operation."] + pub struct Undelegated(pub ::subxt::utils::AccountId32); + impl ::subxt::events::StaticEvent for Undelegated { + const PALLET: &'static str = "ConvictionVoting"; + const EVENT: &'static str = "Undelegated"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " All voting for a particular voter in a particular voting class. We store the balance for the"] + #[doc = " number of votes that we have recorded."] + pub fn voting_for( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow<::core::primitive::u16>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_conviction_voting::vote::Voting< + ::core::primitive::u128, + ::subxt::utils::AccountId32, + ::core::primitive::u32, + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ConvictionVoting", + "VotingFor", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, + 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, + 12u8, 29u8, 239u8, 220u8, 231u8, 24u8, 46u8, 134u8, 99u8, 53u8, 206u8, + ], + ) + } + #[doc = " All voting for a particular voter in a particular voting class. We store the balance for the"] + #[doc = " number of votes that we have recorded."] + pub fn voting_for_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_conviction_voting::vote::Voting< + ::core::primitive::u128, + ::subxt::utils::AccountId32, + ::core::primitive::u32, + ::core::primitive::u32, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ConvictionVoting", + "VotingFor", + Vec::new(), + [ + 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, + 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, + 12u8, 29u8, 239u8, 220u8, 231u8, 24u8, 46u8, 134u8, 99u8, 53u8, 206u8, + ], + ) + } + #[doc = " The voting classes which have a non-zero lock requirement and the lock amounts which they"] + #[doc = " require. The actual amount locked on behalf of this pallet should always be the maximum of"] + #[doc = " this list."] + pub fn class_locks_for( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u16, + ::core::primitive::u128, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ConvictionVoting", + "ClassLocksFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 74u8, 74u8, 8u8, 82u8, 215u8, 61u8, 13u8, 9u8, 44u8, 222u8, 33u8, + 245u8, 195u8, 124u8, 6u8, 174u8, 65u8, 245u8, 71u8, 42u8, 47u8, 46u8, + 164u8, 231u8, 11u8, 245u8, 115u8, 207u8, 209u8, 137u8, 90u8, 6u8, + ], + ) + } + #[doc = " The voting classes which have a non-zero lock requirement and the lock amounts which they"] + #[doc = " require. The actual amount locked on behalf of this pallet should always be the maximum of"] + #[doc = " this list."] + pub fn class_locks_for_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u16, + ::core::primitive::u128, + )>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ConvictionVoting", + "ClassLocksFor", + Vec::new(), + [ + 74u8, 74u8, 8u8, 82u8, 215u8, 61u8, 13u8, 9u8, 44u8, 222u8, 33u8, + 245u8, 195u8, 124u8, 6u8, 174u8, 65u8, 245u8, 71u8, 42u8, 47u8, 46u8, + 164u8, 231u8, 11u8, 245u8, 115u8, 207u8, 209u8, 137u8, 90u8, 6u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The maximum number of concurrent votes an account may have."] + #[doc = ""] + #[doc = " Also used to compute weight, an overly large value can lead to extrinsics with large"] + #[doc = " weight estimation: see `delegate` for instance."] + pub fn max_votes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ConvictionVoting", + "MaxVotes", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The minimum period of vote locking."] + #[doc = ""] + #[doc = " It should be no shorter than enactment period to ensure that in the case of an approval,"] + #[doc = " those successful voters are locked into the consequences that their votes entail."] + pub fn vote_locking_period( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ConvictionVoting", + "VoteLockingPeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod referenda { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_referenda::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_referenda::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Submit { + pub proposal_origin: + ::std::boxed::Box, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + pub enactment_moment: + runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Submit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "submit"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PlaceDecisionDeposit { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for PlaceDecisionDeposit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "place_decision_deposit"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RefundDecisionDeposit { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RefundDecisionDeposit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "refund_decision_deposit"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Cancel { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Cancel { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "cancel"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Kill { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Kill { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "kill"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NudgeReferendum { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for NudgeReferendum { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "nudge_referendum"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OneFewerDeciding { + pub track: ::core::primitive::u16, + } + impl ::subxt::blocks::StaticExtrinsic for OneFewerDeciding { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "one_fewer_deciding"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RefundSubmissionDeposit { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RefundSubmissionDeposit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "refund_submission_deposit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMetadata { + pub index: ::core::primitive::u32, + pub maybe_hash: ::core::option::Option<::subxt::utils::H256>, + } + impl ::subxt::blocks::StaticExtrinsic for SetMetadata { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "set_metadata"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::submit`]."] + pub fn submit( + &self, + proposal_origin: runtime_types::paseo_runtime::OriginCaller, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + enactment_moment: runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "submit", + types::Submit { + proposal_origin: ::std::boxed::Box::new(proposal_origin), + proposal, + enactment_moment, + }, + [ + 96u8, 69u8, 13u8, 83u8, 184u8, 69u8, 82u8, 47u8, 241u8, 183u8, 224u8, + 4u8, 1u8, 243u8, 93u8, 63u8, 189u8, 26u8, 163u8, 110u8, 4u8, 57u8, 7u8, + 212u8, 234u8, 88u8, 24u8, 112u8, 123u8, 17u8, 156u8, 116u8, + ], + ) + } + #[doc = "See [`Pallet::place_decision_deposit`]."] + pub fn place_decision_deposit( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "place_decision_deposit", + types::PlaceDecisionDeposit { index }, + [ + 247u8, 158u8, 55u8, 191u8, 188u8, 200u8, 3u8, 47u8, 20u8, 175u8, 86u8, + 203u8, 52u8, 253u8, 91u8, 131u8, 21u8, 213u8, 56u8, 68u8, 40u8, 84u8, + 184u8, 30u8, 9u8, 193u8, 63u8, 182u8, 178u8, 241u8, 247u8, 220u8, + ], + ) + } + #[doc = "See [`Pallet::refund_decision_deposit`]."] + pub fn refund_decision_deposit( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "refund_decision_deposit", + types::RefundDecisionDeposit { index }, + [ + 159u8, 19u8, 35u8, 216u8, 114u8, 105u8, 18u8, 42u8, 148u8, 151u8, + 136u8, 92u8, 117u8, 30u8, 29u8, 41u8, 238u8, 58u8, 195u8, 91u8, 115u8, + 135u8, 96u8, 99u8, 154u8, 233u8, 8u8, 249u8, 145u8, 165u8, 77u8, 164u8, + ], + ) + } + #[doc = "See [`Pallet::cancel`]."] + pub fn cancel( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "cancel", + types::Cancel { index }, + [ + 55u8, 206u8, 119u8, 156u8, 238u8, 165u8, 193u8, 73u8, 242u8, 13u8, + 212u8, 75u8, 136u8, 156u8, 151u8, 14u8, 35u8, 41u8, 156u8, 107u8, 60u8, + 190u8, 39u8, 216u8, 8u8, 74u8, 213u8, 130u8, 160u8, 131u8, 237u8, + 122u8, + ], + ) + } + #[doc = "See [`Pallet::kill`]."] + pub fn kill( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "kill", + types::Kill { index }, + [ + 50u8, 89u8, 57u8, 0u8, 87u8, 129u8, 113u8, 140u8, 179u8, 178u8, 126u8, + 198u8, 92u8, 92u8, 189u8, 64u8, 123u8, 232u8, 57u8, 227u8, 223u8, + 219u8, 73u8, 217u8, 179u8, 44u8, 210u8, 125u8, 180u8, 10u8, 143u8, + 48u8, + ], + ) + } + #[doc = "See [`Pallet::nudge_referendum`]."] + pub fn nudge_referendum( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "nudge_referendum", + types::NudgeReferendum { index }, + [ + 75u8, 99u8, 172u8, 30u8, 170u8, 150u8, 211u8, 229u8, 249u8, 128u8, + 194u8, 246u8, 100u8, 142u8, 193u8, 184u8, 232u8, 81u8, 29u8, 17u8, + 99u8, 91u8, 236u8, 85u8, 230u8, 226u8, 57u8, 115u8, 45u8, 170u8, 54u8, + 213u8, + ], + ) + } + #[doc = "See [`Pallet::one_fewer_deciding`]."] + pub fn one_fewer_deciding( + &self, + track: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "one_fewer_deciding", + types::OneFewerDeciding { track }, + [ + 15u8, 84u8, 79u8, 231u8, 21u8, 239u8, 244u8, 143u8, 183u8, 215u8, + 181u8, 25u8, 225u8, 195u8, 95u8, 171u8, 17u8, 156u8, 182u8, 128u8, + 111u8, 40u8, 151u8, 102u8, 196u8, 55u8, 36u8, 212u8, 89u8, 190u8, + 131u8, 167u8, + ], + ) + } + #[doc = "See [`Pallet::refund_submission_deposit`]."] + pub fn refund_submission_deposit( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "refund_submission_deposit", + types::RefundSubmissionDeposit { index }, + [ + 20u8, 217u8, 115u8, 6u8, 1u8, 60u8, 54u8, 136u8, 35u8, 41u8, 38u8, + 23u8, 85u8, 100u8, 141u8, 126u8, 30u8, 160u8, 61u8, 46u8, 134u8, 98u8, + 82u8, 38u8, 211u8, 124u8, 208u8, 222u8, 210u8, 10u8, 155u8, 122u8, + ], + ) + } + #[doc = "See [`Pallet::set_metadata`]."] + pub fn set_metadata( + &self, + index: ::core::primitive::u32, + maybe_hash: ::core::option::Option<::subxt::utils::H256>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "set_metadata", + types::SetMetadata { index, maybe_hash }, + [ + 207u8, 29u8, 146u8, 233u8, 219u8, 205u8, 88u8, 118u8, 106u8, 61u8, + 124u8, 101u8, 2u8, 41u8, 169u8, 70u8, 114u8, 189u8, 162u8, 118u8, 1u8, + 108u8, 234u8, 98u8, 245u8, 245u8, 183u8, 126u8, 89u8, 13u8, 112u8, + 88u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_referenda::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has been submitted."] + pub struct Submitted { + pub index: ::core::primitive::u32, + pub track: ::core::primitive::u16, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + } + impl ::subxt::events::StaticEvent for Submitted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Submitted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The decision deposit has been placed."] + pub struct DecisionDepositPlaced { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DecisionDepositPlaced { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DecisionDepositPlaced"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The decision deposit has been refunded."] + pub struct DecisionDepositRefunded { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DecisionDepositRefunded { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DecisionDepositRefunded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A deposit has been slashaed."] + pub struct DepositSlashed { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DepositSlashed { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DepositSlashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has moved into the deciding phase."] + pub struct DecisionStarted { + pub index: ::core::primitive::u32, + pub track: ::core::primitive::u16, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for DecisionStarted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DecisionStarted"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ConfirmStarted { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for ConfirmStarted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "ConfirmStarted"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ConfirmAborted { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for ConfirmAborted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "ConfirmAborted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has ended its confirmation phase and is ready for approval."] + pub struct Confirmed { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for Confirmed { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Confirmed"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has been approved and its proposal has been scheduled."] + pub struct Approved { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Approved { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Approved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A proposal has been rejected by referendum."] + pub struct Rejected { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for Rejected { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Rejected"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has been timed out without being decided."] + pub struct TimedOut { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for TimedOut { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "TimedOut"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has been cancelled."] + pub struct Cancelled { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for Cancelled { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Cancelled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has been killed."] + pub struct Killed { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for Killed { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Killed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The submission deposit has been refunded."] + pub struct SubmissionDepositRefunded { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for SubmissionDepositRefunded { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "SubmissionDepositRefunded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Metadata for a referendum has been set."] + pub struct MetadataSet { + pub index: ::core::primitive::u32, + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for MetadataSet { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "MetadataSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Metadata for a referendum has been cleared."] + pub struct MetadataCleared { + pub index: ::core::primitive::u32, + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for MetadataCleared { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "MetadataCleared"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The next free referendum index, aka the number of referenda started so far."] + pub fn referendum_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "ReferendumCount", + vec![], + [ + 64u8, 145u8, 232u8, 153u8, 121u8, 87u8, 128u8, 253u8, 170u8, 192u8, + 139u8, 18u8, 0u8, 33u8, 243u8, 11u8, 238u8, 222u8, 244u8, 5u8, 247u8, + 198u8, 149u8, 31u8, 122u8, 208u8, 86u8, 179u8, 166u8, 167u8, 93u8, + 67u8, + ], + ) + } + #[doc = " Information concerning any given referendum."] + pub fn referendum_info_for( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_referenda::types::ReferendumInfo< + ::core::primitive::u16, + runtime_types::paseo_runtime::OriginCaller, + ::core::primitive::u32, + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + ::core::primitive::u128, + runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + ::subxt::utils::AccountId32, + (::core::primitive::u32, ::core::primitive::u32), + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "ReferendumInfoFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 115u8, 179u8, 126u8, 231u8, 171u8, 230u8, 140u8, 252u8, 231u8, 185u8, + 224u8, 244u8, 150u8, 153u8, 110u8, 154u8, 84u8, 210u8, 75u8, 89u8, + 76u8, 59u8, 173u8, 85u8, 114u8, 141u8, 200u8, 54u8, 101u8, 226u8, 84u8, + 28u8, + ], + ) + } + #[doc = " Information concerning any given referendum."] + pub fn referendum_info_for_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_referenda::types::ReferendumInfo< + ::core::primitive::u16, + runtime_types::paseo_runtime::OriginCaller, + ::core::primitive::u32, + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + ::core::primitive::u128, + runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + ::subxt::utils::AccountId32, + (::core::primitive::u32, ::core::primitive::u32), + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "ReferendumInfoFor", + Vec::new(), + [ + 115u8, 179u8, 126u8, 231u8, 171u8, 230u8, 140u8, 252u8, 231u8, 185u8, + 224u8, 244u8, 150u8, 153u8, 110u8, 154u8, 84u8, 210u8, 75u8, 89u8, + 76u8, 59u8, 173u8, 85u8, 114u8, 141u8, 200u8, 54u8, 101u8, 226u8, 84u8, + 28u8, + ], + ) + } + #[doc = " The sorted list of referenda ready to be decided but not yet being decided, ordered by"] + #[doc = " conviction-weighted approvals."] + #[doc = ""] + #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] + pub fn track_queue( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u32, + ::core::primitive::u128, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "TrackQueue", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 125u8, 59u8, 111u8, 68u8, 27u8, 236u8, 82u8, 55u8, 83u8, 159u8, 105u8, + 20u8, 241u8, 118u8, 58u8, 141u8, 103u8, 60u8, 246u8, 49u8, 121u8, + 183u8, 7u8, 203u8, 225u8, 67u8, 132u8, 79u8, 150u8, 107u8, 71u8, 89u8, + ], + ) + } + #[doc = " The sorted list of referenda ready to be decided but not yet being decided, ordered by"] + #[doc = " conviction-weighted approvals."] + #[doc = ""] + #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] + pub fn track_queue_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u32, + ::core::primitive::u128, + )>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "TrackQueue", + Vec::new(), + [ + 125u8, 59u8, 111u8, 68u8, 27u8, 236u8, 82u8, 55u8, 83u8, 159u8, 105u8, + 20u8, 241u8, 118u8, 58u8, 141u8, 103u8, 60u8, 246u8, 49u8, 121u8, + 183u8, 7u8, 203u8, 225u8, 67u8, 132u8, 79u8, 150u8, 107u8, 71u8, 89u8, + ], + ) + } + #[doc = " The number of referenda being decided currently."] + pub fn deciding_count( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "DecidingCount", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, + 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, + 103u8, 47u8, 252u8, 126u8, 108u8, 166u8, 69u8, 252u8, 179u8, 126u8, + 245u8, + ], + ) + } + #[doc = " The number of referenda being decided currently."] + pub fn deciding_count_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "DecidingCount", + Vec::new(), + [ + 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, + 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, + 103u8, 47u8, 252u8, 126u8, 108u8, 166u8, 69u8, 252u8, 179u8, 126u8, + 245u8, + ], + ) + } + #[doc = " The metadata is a general information concerning the referendum."] + #[doc = " The `Hash` refers to the preimage of the `Preimages` provider which can be a JSON"] + #[doc = " dump or IPFS hash of a JSON file."] + #[doc = ""] + #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] + #[doc = " large preimages."] + pub fn metadata_of( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "MetadataOf", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, + 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, + 45u8, 193u8, 72u8, 200u8, 164u8, 39u8, 207u8, 224u8, 124u8, 191u8, + 110u8, + ], + ) + } + #[doc = " The metadata is a general information concerning the referendum."] + #[doc = " The `Hash` refers to the preimage of the `Preimages` provider which can be a JSON"] + #[doc = " dump or IPFS hash of a JSON file."] + #[doc = ""] + #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] + #[doc = " large preimages."] + pub fn metadata_of_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "MetadataOf", + Vec::new(), + [ + 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, + 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, + 45u8, 193u8, 72u8, 200u8, 164u8, 39u8, 207u8, 224u8, 124u8, 191u8, + 110u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The minimum amount to be used as a deposit for a public referendum proposal."] + pub fn submission_deposit( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Referenda", + "SubmissionDeposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " Maximum size of the referendum queue for a single track."] + pub fn max_queued(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Referenda", + "MaxQueued", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The number of blocks after submission that a referendum must begin being decided by."] + #[doc = " Once this passes, then anyone may cancel the referendum."] + pub fn undeciding_timeout( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Referenda", + "UndecidingTimeout", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Quantization level for the referendum wakeup scheduler. A higher number will result in"] + #[doc = " fewer storage reads/writes needed for smaller voters, but also result in delays to the"] + #[doc = " automatic referendum status changes. Explicit servicing instructions are unaffected."] + pub fn alarm_interval( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Referenda", + "AlarmInterval", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Information concerning the different referendum tracks."] + pub fn tracks( + &self, + ) -> ::subxt::constants::Address< + ::std::vec::Vec<( + ::core::primitive::u16, + runtime_types::pallet_referenda::types::TrackInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + )>, + > { + ::subxt::constants::Address::new_static( + "Referenda", + "Tracks", + [ + 35u8, 226u8, 207u8, 234u8, 184u8, 139u8, 187u8, 184u8, 128u8, 199u8, + 227u8, 15u8, 31u8, 196u8, 5u8, 207u8, 138u8, 174u8, 130u8, 201u8, + 200u8, 113u8, 86u8, 93u8, 221u8, 243u8, 229u8, 24u8, 18u8, 150u8, 56u8, + 159u8, + ], + ) + } + } + } + } + pub mod whitelist { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_whitelist::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_whitelist::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WhitelistCall { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for WhitelistCall { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "whitelist_call"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveWhitelistedCall { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveWhitelistedCall { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "remove_whitelisted_call"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchWhitelistedCall { + pub call_hash: ::subxt::utils::H256, + pub call_encoded_len: ::core::primitive::u32, + pub call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::blocks::StaticExtrinsic for DispatchWhitelistedCall { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "dispatch_whitelisted_call"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchWhitelistedCallWithPreimage { + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for DispatchWhitelistedCallWithPreimage { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "dispatch_whitelisted_call_with_preimage"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::whitelist_call`]."] + pub fn whitelist_call( + &self, + call_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Whitelist", + "whitelist_call", + types::WhitelistCall { call_hash }, + [ + 121u8, 165u8, 49u8, 37u8, 127u8, 38u8, 126u8, 213u8, 115u8, 148u8, + 122u8, 211u8, 24u8, 91u8, 147u8, 27u8, 87u8, 210u8, 84u8, 104u8, 229u8, + 155u8, 133u8, 30u8, 34u8, 249u8, 107u8, 110u8, 31u8, 191u8, 128u8, + 28u8, + ], + ) + } + #[doc = "See [`Pallet::remove_whitelisted_call`]."] + pub fn remove_whitelisted_call( + &self, + call_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Whitelist", + "remove_whitelisted_call", + types::RemoveWhitelistedCall { call_hash }, + [ + 30u8, 47u8, 13u8, 231u8, 165u8, 219u8, 246u8, 210u8, 11u8, 38u8, 219u8, + 218u8, 151u8, 226u8, 101u8, 175u8, 0u8, 239u8, 35u8, 46u8, 156u8, + 104u8, 145u8, 173u8, 105u8, 100u8, 21u8, 189u8, 123u8, 227u8, 196u8, + 40u8, + ], + ) + } + #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] + pub fn dispatch_whitelisted_call( + &self, + call_hash: ::subxt::utils::H256, + call_encoded_len: ::core::primitive::u32, + call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Whitelist", + "dispatch_whitelisted_call", + types::DispatchWhitelistedCall { + call_hash, + call_encoded_len, + call_weight_witness, + }, + [ + 112u8, 67u8, 72u8, 26u8, 3u8, 214u8, 86u8, 102u8, 29u8, 96u8, 222u8, + 24u8, 115u8, 15u8, 124u8, 160u8, 148u8, 184u8, 56u8, 162u8, 188u8, + 123u8, 213u8, 234u8, 208u8, 123u8, 133u8, 253u8, 43u8, 226u8, 66u8, + 116u8, + ], + ) + } + #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] + pub fn dispatch_whitelisted_call_with_preimage( + &self, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload + { + ::subxt::tx::Payload::new_static( + "Whitelist", + "dispatch_whitelisted_call_with_preimage", + types::DispatchWhitelistedCallWithPreimage { + call: ::std::boxed::Box::new(call), + }, + [ + 17u8, 254u8, 149u8, 203u8, 143u8, 97u8, 244u8, 47u8, 120u8, 54u8, 27u8, + 251u8, 196u8, 152u8, 191u8, 153u8, 100u8, 197u8, 248u8, 4u8, 180u8, + 195u8, 105u8, 139u8, 212u8, 172u8, 246u8, 156u8, 200u8, 221u8, 186u8, + 76u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_whitelist::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CallWhitelisted { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for CallWhitelisted { + const PALLET: &'static str = "Whitelist"; + const EVENT: &'static str = "CallWhitelisted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WhitelistedCallRemoved { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for WhitelistedCallRemoved { + const PALLET: &'static str = "Whitelist"; + const EVENT: &'static str = "WhitelistedCallRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WhitelistedCallDispatched { + pub call_hash: ::subxt::utils::H256, + pub result: ::core::result::Result< + runtime_types::frame_support::dispatch::PostDispatchInfo, + runtime_types::sp_runtime::DispatchErrorWithPostInfo< + runtime_types::frame_support::dispatch::PostDispatchInfo, + >, + >, + } + impl ::subxt::events::StaticEvent for WhitelistedCallDispatched { + const PALLET: &'static str = "Whitelist"; + const EVENT: &'static str = "WhitelistedCallDispatched"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + pub fn whitelisted_call( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Whitelist", + "WhitelistedCall", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 82u8, 208u8, 214u8, 72u8, 225u8, 35u8, 51u8, 212u8, 25u8, 138u8, 30u8, + 87u8, 54u8, 232u8, 72u8, 132u8, 4u8, 9u8, 28u8, 143u8, 251u8, 106u8, + 167u8, 218u8, 130u8, 185u8, 253u8, 185u8, 113u8, 154u8, 202u8, 66u8, + ], + ) + } + pub fn whitelisted_call_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Whitelist", + "WhitelistedCall", + Vec::new(), + [ + 82u8, 208u8, 214u8, 72u8, 225u8, 35u8, 51u8, 212u8, 25u8, 138u8, 30u8, + 87u8, 54u8, 232u8, 72u8, 132u8, 4u8, 9u8, 28u8, 143u8, 251u8, 106u8, + 167u8, 218u8, 130u8, 185u8, 253u8, 185u8, 113u8, 154u8, 202u8, 66u8, + ], + ) + } + } + } + } + pub mod claims { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_common::claims::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::claims::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Claim { + pub dest: ::subxt::utils::AccountId32, + pub ethereum_signature: + runtime_types::polkadot_runtime_common::claims::EcdsaSignature, + } + impl ::subxt::blocks::StaticExtrinsic for Claim { + const PALLET: &'static str = "Claims"; + const CALL: &'static str = "claim"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MintClaim { + pub who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + pub value: ::core::primitive::u128, + pub vesting_schedule: ::core::option::Option<( + ::core::primitive::u128, + ::core::primitive::u128, + ::core::primitive::u32, + )>, + pub statement: ::core::option::Option< + runtime_types::polkadot_runtime_common::claims::StatementKind, + >, + } + impl ::subxt::blocks::StaticExtrinsic for MintClaim { + const PALLET: &'static str = "Claims"; + const CALL: &'static str = "mint_claim"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClaimAttest { + pub dest: ::subxt::utils::AccountId32, + pub ethereum_signature: + runtime_types::polkadot_runtime_common::claims::EcdsaSignature, + pub statement: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for ClaimAttest { + const PALLET: &'static str = "Claims"; + const CALL: &'static str = "claim_attest"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Attest { + pub statement: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for Attest { + const PALLET: &'static str = "Claims"; + const CALL: &'static str = "attest"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MoveClaim { + pub old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + pub new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + pub maybe_preclaim: ::core::option::Option<::subxt::utils::AccountId32>, + } + impl ::subxt::blocks::StaticExtrinsic for MoveClaim { + const PALLET: &'static str = "Claims"; + const CALL: &'static str = "move_claim"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::claim`]."] + pub fn claim( + &self, + dest: ::subxt::utils::AccountId32, + ethereum_signature : runtime_types :: polkadot_runtime_common :: claims :: EcdsaSignature, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Claims", + "claim", + types::Claim { dest, ethereum_signature }, + [ + 218u8, 236u8, 60u8, 12u8, 231u8, 72u8, 155u8, 30u8, 116u8, 126u8, + 145u8, 166u8, 135u8, 118u8, 22u8, 112u8, 212u8, 140u8, 129u8, 97u8, + 9u8, 241u8, 159u8, 140u8, 252u8, 128u8, 4u8, 175u8, 180u8, 133u8, 70u8, + 55u8, + ], + ) + } + #[doc = "See [`Pallet::mint_claim`]."] + pub fn mint_claim( + &self, + who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + value: ::core::primitive::u128, + vesting_schedule: ::core::option::Option<( + ::core::primitive::u128, + ::core::primitive::u128, + ::core::primitive::u32, + )>, + statement: ::core::option::Option< + runtime_types::polkadot_runtime_common::claims::StatementKind, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Claims", + "mint_claim", + types::MintClaim { who, value, vesting_schedule, statement }, + [ + 59u8, 71u8, 27u8, 16u8, 177u8, 189u8, 53u8, 54u8, 86u8, 157u8, 122u8, + 182u8, 246u8, 113u8, 225u8, 10u8, 31u8, 253u8, 15u8, 48u8, 182u8, + 198u8, 38u8, 211u8, 90u8, 75u8, 10u8, 68u8, 70u8, 152u8, 141u8, 222u8, + ], + ) + } + #[doc = "See [`Pallet::claim_attest`]."] + pub fn claim_attest( + &self, + dest: ::subxt::utils::AccountId32, + ethereum_signature : runtime_types :: polkadot_runtime_common :: claims :: EcdsaSignature, + statement: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Claims", + "claim_attest", + types::ClaimAttest { dest, ethereum_signature, statement }, + [ + 61u8, 16u8, 39u8, 50u8, 23u8, 249u8, 217u8, 155u8, 138u8, 128u8, 247u8, + 214u8, 185u8, 7u8, 87u8, 108u8, 15u8, 43u8, 44u8, 224u8, 204u8, 39u8, + 219u8, 188u8, 197u8, 104u8, 120u8, 144u8, 152u8, 161u8, 244u8, 37u8, + ], + ) + } + #[doc = "See [`Pallet::attest`]."] + pub fn attest( + &self, + statement: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Claims", + "attest", + types::Attest { statement }, + [ + 254u8, 56u8, 140u8, 129u8, 227u8, 155u8, 161u8, 107u8, 167u8, 148u8, + 167u8, 104u8, 139u8, 174u8, 204u8, 124u8, 126u8, 198u8, 165u8, 61u8, + 83u8, 197u8, 242u8, 13u8, 70u8, 153u8, 14u8, 62u8, 214u8, 129u8, 64u8, + 93u8, + ], + ) + } + #[doc = "See [`Pallet::move_claim`]."] + pub fn move_claim( + &self, + old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + maybe_preclaim: ::core::option::Option<::subxt::utils::AccountId32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Claims", + "move_claim", + types::MoveClaim { old, new, maybe_preclaim }, + [ + 187u8, 200u8, 222u8, 83u8, 110u8, 49u8, 60u8, 134u8, 91u8, 215u8, 67u8, + 18u8, 187u8, 241u8, 191u8, 127u8, 222u8, 171u8, 151u8, 245u8, 161u8, + 196u8, 123u8, 99u8, 206u8, 110u8, 55u8, 82u8, 210u8, 151u8, 116u8, + 230u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::claims::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Someone claimed some DOTs."] + pub struct Claimed { + pub who: ::subxt::utils::AccountId32, + pub ethereum_address: + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Claimed { + const PALLET: &'static str = "Claims"; + const EVENT: &'static str = "Claimed"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + pub fn claims( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Claims", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 148u8, 115u8, 159u8, 169u8, 36u8, 116u8, 15u8, 108u8, 57u8, 195u8, + 226u8, 180u8, 187u8, 112u8, 114u8, 63u8, 3u8, 205u8, 113u8, 141u8, + 149u8, 149u8, 118u8, 246u8, 45u8, 245u8, 148u8, 108u8, 22u8, 184u8, + 152u8, 132u8, + ], + ) + } + pub fn claims_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Claims", + Vec::new(), + [ + 148u8, 115u8, 159u8, 169u8, 36u8, 116u8, 15u8, 108u8, 57u8, 195u8, + 226u8, 180u8, 187u8, 112u8, 114u8, 63u8, 3u8, 205u8, 113u8, 141u8, + 149u8, 149u8, 118u8, 246u8, 45u8, 245u8, 148u8, 108u8, 22u8, 184u8, + 152u8, 132u8, + ], + ) + } + pub fn total( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Total", + vec![], + [ + 188u8, 31u8, 219u8, 189u8, 49u8, 213u8, 203u8, 89u8, 125u8, 58u8, + 232u8, 159u8, 131u8, 155u8, 166u8, 113u8, 99u8, 24u8, 40u8, 242u8, + 118u8, 183u8, 108u8, 230u8, 135u8, 150u8, 84u8, 86u8, 118u8, 91u8, + 168u8, 62u8, + ], + ) + } + #[doc = " Vesting schedule for a claim."] + #[doc = " First balance is the total amount that should be held for vesting."] + #[doc = " Second balance is how much should be unlocked per block."] + #[doc = " The block number is when the vesting should start."] + pub fn vesting( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u128, ::core::primitive::u128, ::core::primitive::u32), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Vesting", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 206u8, 106u8, 195u8, 101u8, 55u8, 137u8, 50u8, 105u8, 137u8, 87u8, + 230u8, 34u8, 255u8, 94u8, 210u8, 186u8, 179u8, 72u8, 24u8, 194u8, + 209u8, 173u8, 115u8, 65u8, 227u8, 224u8, 58u8, 113u8, 200u8, 166u8, + 108u8, 198u8, + ], + ) + } + #[doc = " Vesting schedule for a claim."] + #[doc = " First balance is the total amount that should be held for vesting."] + #[doc = " Second balance is how much should be unlocked per block."] + #[doc = " The block number is when the vesting should start."] + pub fn vesting_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u128, ::core::primitive::u128, ::core::primitive::u32), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Vesting", + Vec::new(), + [ + 206u8, 106u8, 195u8, 101u8, 55u8, 137u8, 50u8, 105u8, 137u8, 87u8, + 230u8, 34u8, 255u8, 94u8, 210u8, 186u8, 179u8, 72u8, 24u8, 194u8, + 209u8, 173u8, 115u8, 65u8, 227u8, 224u8, 58u8, 113u8, 200u8, 166u8, + 108u8, 198u8, + ], + ) + } + #[doc = " The statement kind that must be signed, if any."] + pub fn signing( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::claims::StatementKind, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Signing", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 111u8, 90u8, 178u8, 121u8, 241u8, 28u8, 169u8, 231u8, 61u8, 189u8, + 113u8, 207u8, 26u8, 153u8, 189u8, 15u8, 192u8, 25u8, 22u8, 22u8, 124u8, + 26u8, 191u8, 39u8, 130u8, 164u8, 34u8, 4u8, 44u8, 91u8, 82u8, 186u8, + ], + ) + } + #[doc = " The statement kind that must be signed, if any."] + pub fn signing_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::claims::StatementKind, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Signing", + Vec::new(), + [ + 111u8, 90u8, 178u8, 121u8, 241u8, 28u8, 169u8, 231u8, 61u8, 189u8, + 113u8, 207u8, 26u8, 153u8, 189u8, 15u8, 192u8, 25u8, 22u8, 22u8, 124u8, + 26u8, 191u8, 39u8, 130u8, 164u8, 34u8, 4u8, 44u8, 91u8, 82u8, 186u8, + ], + ) + } + #[doc = " Pre-claimed Ethereum accounts, by the Account ID that they are claimed to."] + pub fn preclaims( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Preclaims", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 197u8, 114u8, 147u8, 235u8, 203u8, 255u8, 94u8, 113u8, 151u8, 119u8, + 224u8, 147u8, 48u8, 246u8, 124u8, 38u8, 190u8, 237u8, 226u8, 65u8, + 91u8, 163u8, 129u8, 40u8, 71u8, 137u8, 220u8, 242u8, 51u8, 75u8, 3u8, + 204u8, + ], + ) + } + #[doc = " Pre-claimed Ethereum accounts, by the Account ID that they are claimed to."] + pub fn preclaims_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Claims", + "Preclaims", + Vec::new(), + [ + 197u8, 114u8, 147u8, 235u8, 203u8, 255u8, 94u8, 113u8, 151u8, 119u8, + 224u8, 147u8, 48u8, 246u8, 124u8, 38u8, 190u8, 237u8, 226u8, 65u8, + 91u8, 163u8, 129u8, 40u8, 71u8, 137u8, 220u8, 242u8, 51u8, 75u8, 3u8, + 204u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + pub fn prefix( + &self, + ) -> ::subxt::constants::Address<::std::vec::Vec<::core::primitive::u8>> + { + ::subxt::constants::Address::new_static( + "Claims", + "Prefix", + [ + 64u8, 190u8, 244u8, 122u8, 87u8, 182u8, 217u8, 16u8, 55u8, 223u8, + 128u8, 6u8, 112u8, 30u8, 236u8, 222u8, 153u8, 53u8, 247u8, 102u8, + 196u8, 31u8, 6u8, 186u8, 251u8, 209u8, 114u8, 125u8, 213u8, 222u8, + 240u8, 8u8, + ], + ) + } + } + } + } + pub mod vesting { + use super::{root_mod, runtime_types}; + #[doc = "Error for the vesting pallet."] + pub type Error = runtime_types::pallet_vesting::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_vesting::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Vest; + impl ::subxt::blocks::StaticExtrinsic for Vest { + const PALLET: &'static str = "Vesting"; + const CALL: &'static str = "vest"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VestOther { + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for VestOther { + const PALLET: &'static str = "Vesting"; + const CALL: &'static str = "vest_other"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VestedTransfer { + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for VestedTransfer { + const PALLET: &'static str = "Vesting"; + const CALL: &'static str = "vested_transfer"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceVestedTransfer { + pub source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for ForceVestedTransfer { + const PALLET: &'static str = "Vesting"; + const CALL: &'static str = "force_vested_transfer"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MergeSchedules { + pub schedule1_index: ::core::primitive::u32, + pub schedule2_index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for MergeSchedules { + const PALLET: &'static str = "Vesting"; + const CALL: &'static str = "merge_schedules"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::vest`]."] + pub fn vest(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Vesting", + "vest", + types::Vest {}, + [ + 149u8, 89u8, 178u8, 148u8, 127u8, 127u8, 155u8, 60u8, 114u8, 126u8, + 204u8, 123u8, 166u8, 70u8, 104u8, 208u8, 186u8, 69u8, 139u8, 181u8, + 151u8, 154u8, 235u8, 161u8, 191u8, 35u8, 111u8, 60u8, 21u8, 165u8, + 44u8, 122u8, + ], + ) + } + #[doc = "See [`Pallet::vest_other`]."] + pub fn vest_other( + &self, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Vesting", + "vest_other", + types::VestOther { target }, + [ + 238u8, 92u8, 25u8, 149u8, 27u8, 211u8, 196u8, 31u8, 211u8, 28u8, 241u8, + 30u8, 128u8, 35u8, 0u8, 227u8, 202u8, 215u8, 186u8, 69u8, 216u8, 110u8, + 199u8, 120u8, 134u8, 141u8, 176u8, 224u8, 234u8, 42u8, 152u8, 128u8, + ], + ) + } + #[doc = "See [`Pallet::vested_transfer`]."] + pub fn vested_transfer( + &self, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Vesting", + "vested_transfer", + types::VestedTransfer { target, schedule }, + [ + 198u8, 133u8, 254u8, 5u8, 22u8, 170u8, 205u8, 79u8, 218u8, 30u8, 81u8, + 207u8, 227u8, 121u8, 132u8, 14u8, 217u8, 43u8, 66u8, 206u8, 15u8, 80u8, + 173u8, 208u8, 128u8, 72u8, 223u8, 175u8, 93u8, 69u8, 128u8, 88u8, + ], + ) + } + #[doc = "See [`Pallet::force_vested_transfer`]."] + pub fn force_vested_transfer( + &self, + source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Vesting", + "force_vested_transfer", + types::ForceVestedTransfer { source, target, schedule }, + [ + 112u8, 17u8, 176u8, 133u8, 169u8, 192u8, 155u8, 217u8, 153u8, 36u8, + 230u8, 45u8, 9u8, 192u8, 2u8, 201u8, 165u8, 60u8, 206u8, 226u8, 95u8, + 86u8, 239u8, 196u8, 109u8, 62u8, 224u8, 237u8, 88u8, 74u8, 209u8, + 251u8, + ], + ) + } + #[doc = "See [`Pallet::merge_schedules`]."] + pub fn merge_schedules( + &self, + schedule1_index: ::core::primitive::u32, + schedule2_index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Vesting", + "merge_schedules", + types::MergeSchedules { schedule1_index, schedule2_index }, + [ + 45u8, 24u8, 13u8, 108u8, 26u8, 99u8, 61u8, 117u8, 195u8, 218u8, 182u8, + 23u8, 188u8, 157u8, 181u8, 81u8, 38u8, 136u8, 31u8, 226u8, 8u8, 190u8, + 33u8, 81u8, 86u8, 185u8, 156u8, 77u8, 157u8, 197u8, 41u8, 58u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_vesting::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The amount vested has been updated. This could indicate a change in funds available."] + #[doc = "The balance given is the amount which is left unvested (and thus locked)."] + pub struct VestingUpdated { + pub account: ::subxt::utils::AccountId32, + pub unvested: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for VestingUpdated { + const PALLET: &'static str = "Vesting"; + const EVENT: &'static str = "VestingUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An \\[account\\] has become fully vested."] + pub struct VestingCompleted { + pub account: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for VestingCompleted { + const PALLET: &'static str = "Vesting"; + const EVENT: &'static str = "VestingCompleted"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Information regarding the vesting of a given account."] + pub fn vesting( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Vesting", + "Vesting", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 95u8, 168u8, 217u8, 248u8, 149u8, 86u8, 195u8, 93u8, 73u8, 206u8, + 105u8, 165u8, 33u8, 173u8, 232u8, 81u8, 147u8, 254u8, 50u8, 228u8, + 156u8, 92u8, 242u8, 149u8, 42u8, 91u8, 58u8, 209u8, 142u8, 221u8, + 230u8, 112u8, + ], + ) + } + #[doc = " Information regarding the vesting of a given account."] + pub fn vesting_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Vesting", + "Vesting", + Vec::new(), + [ + 95u8, 168u8, 217u8, 248u8, 149u8, 86u8, 195u8, 93u8, 73u8, 206u8, + 105u8, 165u8, 33u8, 173u8, 232u8, 81u8, 147u8, 254u8, 50u8, 228u8, + 156u8, 92u8, 242u8, 149u8, 42u8, 91u8, 58u8, 209u8, 142u8, 221u8, + 230u8, 112u8, + ], + ) + } + #[doc = " Storage version of the pallet."] + #[doc = ""] + #[doc = " New networks start with latest version, as determined by the genesis build."] + pub fn storage_version( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_vesting::Releases, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Vesting", + "StorageVersion", + vec![], + [ + 230u8, 137u8, 180u8, 133u8, 142u8, 124u8, 231u8, 234u8, 223u8, 10u8, + 154u8, 98u8, 158u8, 253u8, 228u8, 80u8, 5u8, 9u8, 91u8, 210u8, 252u8, + 9u8, 13u8, 195u8, 193u8, 164u8, 129u8, 113u8, 128u8, 218u8, 8u8, 40u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The minimum amount transferred to call `vested_transfer`."] + pub fn min_vested_transfer( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Vesting", + "MinVestedTransfer", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + pub fn max_vesting_schedules( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Vesting", + "MaxVestingSchedules", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod utility { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_utility::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_utility::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Batch { + pub calls: ::std::vec::Vec, + } + impl ::subxt::blocks::StaticExtrinsic for Batch { + const PALLET: &'static str = "Utility"; + const CALL: &'static str = "batch"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AsDerivative { + pub index: ::core::primitive::u16, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for AsDerivative { + const PALLET: &'static str = "Utility"; + const CALL: &'static str = "as_derivative"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BatchAll { + pub calls: ::std::vec::Vec, + } + impl ::subxt::blocks::StaticExtrinsic for BatchAll { + const PALLET: &'static str = "Utility"; + const CALL: &'static str = "batch_all"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchAs { + pub as_origin: ::std::boxed::Box, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for DispatchAs { + const PALLET: &'static str = "Utility"; + const CALL: &'static str = "dispatch_as"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceBatch { + pub calls: ::std::vec::Vec, + } + impl ::subxt::blocks::StaticExtrinsic for ForceBatch { + const PALLET: &'static str = "Utility"; + const CALL: &'static str = "force_batch"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WithWeight { + pub call: ::std::boxed::Box, + pub weight: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::blocks::StaticExtrinsic for WithWeight { + const PALLET: &'static str = "Utility"; + const CALL: &'static str = "with_weight"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::batch`]."] + pub fn batch( + &self, + calls: ::std::vec::Vec, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Utility", + "batch", + types::Batch { calls }, + [ + 23u8, 253u8, 37u8, 26u8, 199u8, 83u8, 229u8, 93u8, 110u8, 89u8, 174u8, + 198u8, 44u8, 65u8, 180u8, 215u8, 43u8, 52u8, 133u8, 102u8, 199u8, 21u8, + 98u8, 238u8, 211u8, 133u8, 92u8, 219u8, 191u8, 213u8, 6u8, 231u8, + ], + ) + } + #[doc = "See [`Pallet::as_derivative`]."] + pub fn as_derivative( + &self, + index: ::core::primitive::u16, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Utility", + "as_derivative", + types::AsDerivative { index, call: ::std::boxed::Box::new(call) }, + [ + 137u8, 203u8, 66u8, 13u8, 231u8, 22u8, 69u8, 213u8, 40u8, 54u8, 70u8, + 226u8, 83u8, 33u8, 198u8, 26u8, 119u8, 68u8, 20u8, 226u8, 153u8, 63u8, + 164u8, 147u8, 149u8, 133u8, 177u8, 27u8, 143u8, 146u8, 122u8, 192u8, + ], + ) + } + #[doc = "See [`Pallet::batch_all`]."] + pub fn batch_all( + &self, + calls: ::std::vec::Vec, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Utility", + "batch_all", + types::BatchAll { calls }, + [ + 23u8, 166u8, 218u8, 80u8, 139u8, 170u8, 104u8, 87u8, 157u8, 72u8, + 241u8, 80u8, 182u8, 240u8, 7u8, 215u8, 160u8, 150u8, 233u8, 100u8, + 110u8, 37u8, 134u8, 5u8, 230u8, 192u8, 140u8, 218u8, 197u8, 111u8, + 99u8, 53u8, + ], + ) + } + #[doc = "See [`Pallet::dispatch_as`]."] + pub fn dispatch_as( + &self, + as_origin: runtime_types::paseo_runtime::OriginCaller, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Utility", + "dispatch_as", + types::DispatchAs { + as_origin: ::std::boxed::Box::new(as_origin), + call: ::std::boxed::Box::new(call), + }, + [ + 145u8, 108u8, 98u8, 5u8, 213u8, 19u8, 190u8, 38u8, 1u8, 199u8, 33u8, + 113u8, 92u8, 124u8, 22u8, 111u8, 254u8, 169u8, 166u8, 119u8, 131u8, + 10u8, 245u8, 23u8, 35u8, 28u8, 160u8, 186u8, 184u8, 223u8, 233u8, + 117u8, + ], + ) + } + #[doc = "See [`Pallet::force_batch`]."] + pub fn force_batch( + &self, + calls: ::std::vec::Vec, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Utility", + "force_batch", + types::ForceBatch { calls }, + [ + 228u8, 181u8, 174u8, 174u8, 245u8, 207u8, 22u8, 6u8, 101u8, 237u8, + 103u8, 76u8, 202u8, 137u8, 235u8, 176u8, 194u8, 69u8, 196u8, 31u8, + 68u8, 168u8, 45u8, 123u8, 45u8, 227u8, 154u8, 26u8, 62u8, 239u8, 153u8, + 162u8, + ], + ) + } + #[doc = "See [`Pallet::with_weight`]."] + pub fn with_weight( + &self, + call: runtime_types::paseo_runtime::RuntimeCall, + weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Utility", + "with_weight", + types::WithWeight { call: ::std::boxed::Box::new(call), weight }, + [ + 152u8, 32u8, 84u8, 16u8, 185u8, 83u8, 132u8, 147u8, 216u8, 201u8, + 132u8, 192u8, 208u8, 39u8, 96u8, 168u8, 169u8, 203u8, 22u8, 176u8, + 99u8, 86u8, 130u8, 227u8, 135u8, 43u8, 129u8, 90u8, 184u8, 241u8, 47u8, + 144u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_utility::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Batch of dispatches did not complete fully. Index of first failing dispatch given, as"] + #[doc = "well as the error."] + pub struct BatchInterrupted { + pub index: ::core::primitive::u32, + pub error: runtime_types::sp_runtime::DispatchError, + } + impl ::subxt::events::StaticEvent for BatchInterrupted { + const PALLET: &'static str = "Utility"; + const EVENT: &'static str = "BatchInterrupted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Batch of dispatches completed fully with no error."] + pub struct BatchCompleted; + impl ::subxt::events::StaticEvent for BatchCompleted { + const PALLET: &'static str = "Utility"; + const EVENT: &'static str = "BatchCompleted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Batch of dispatches completed but has errors."] + pub struct BatchCompletedWithErrors; + impl ::subxt::events::StaticEvent for BatchCompletedWithErrors { + const PALLET: &'static str = "Utility"; + const EVENT: &'static str = "BatchCompletedWithErrors"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A single item within a Batch of dispatches has completed with no error."] + pub struct ItemCompleted; + impl ::subxt::events::StaticEvent for ItemCompleted { + const PALLET: &'static str = "Utility"; + const EVENT: &'static str = "ItemCompleted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A single item within a Batch of dispatches has completed with error."] + pub struct ItemFailed { + pub error: runtime_types::sp_runtime::DispatchError, + } + impl ::subxt::events::StaticEvent for ItemFailed { + const PALLET: &'static str = "Utility"; + const EVENT: &'static str = "ItemFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A call was dispatched."] + pub struct DispatchedAs { + pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for DispatchedAs { + const PALLET: &'static str = "Utility"; + const EVENT: &'static str = "DispatchedAs"; + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The limit on the number of batched calls."] + pub fn batched_calls_limit( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Utility", + "batched_calls_limit", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod identity { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_identity::pallet::Error; + #[doc = "Identity pallet declaration."] + pub type Call = runtime_types::pallet_identity::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddRegistrar { + pub account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for AddRegistrar { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "add_registrar"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetIdentity { + pub info: + ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for SetIdentity { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_identity"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetSubs { + pub subs: ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::pallet_identity::types::Data, + )>, + } + impl ::subxt::blocks::StaticExtrinsic for SetSubs { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_subs"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClearIdentity; + impl ::subxt::blocks::StaticExtrinsic for ClearIdentity { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "clear_identity"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RequestJudgement { + #[codec(compact)] + pub reg_index: ::core::primitive::u32, + #[codec(compact)] + pub max_fee: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for RequestJudgement { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "request_judgement"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CancelRequest { + pub reg_index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for CancelRequest { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "cancel_request"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetFee { + #[codec(compact)] + pub index: ::core::primitive::u32, + #[codec(compact)] + pub fee: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for SetFee { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_fee"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetAccountId { + #[codec(compact)] + pub index: ::core::primitive::u32, + pub new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for SetAccountId { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_account_id"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetFields { + #[codec(compact)] + pub index: ::core::primitive::u32, + pub fields: runtime_types::pallet_identity::types::BitFlags< + runtime_types::pallet_identity::simple::IdentityField, + >, + } + impl ::subxt::blocks::StaticExtrinsic for SetFields { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_fields"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProvideJudgement { + #[codec(compact)] + pub reg_index: ::core::primitive::u32, + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub judgement: + runtime_types::pallet_identity::types::Judgement<::core::primitive::u128>, + pub identity: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for ProvideJudgement { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "provide_judgement"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct KillIdentity { + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for KillIdentity { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "kill_identity"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddSub { + pub sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub data: runtime_types::pallet_identity::types::Data, + } + impl ::subxt::blocks::StaticExtrinsic for AddSub { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "add_sub"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RenameSub { + pub sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub data: runtime_types::pallet_identity::types::Data, + } + impl ::subxt::blocks::StaticExtrinsic for RenameSub { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "rename_sub"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveSub { + pub sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveSub { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_sub"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QuitSub; + impl ::subxt::blocks::StaticExtrinsic for QuitSub { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "quit_sub"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::add_registrar`]."] + pub fn add_registrar( + &self, + account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "add_registrar", + types::AddRegistrar { account }, + [ + 6u8, 131u8, 82u8, 191u8, 37u8, 240u8, 158u8, 187u8, 247u8, 98u8, 175u8, + 200u8, 147u8, 78u8, 88u8, 176u8, 227u8, 179u8, 184u8, 194u8, 91u8, 1u8, + 1u8, 20u8, 121u8, 4u8, 96u8, 94u8, 103u8, 140u8, 247u8, 253u8, + ], + ) + } + #[doc = "See [`Pallet::set_identity`]."] + pub fn set_identity( + &self, + info: runtime_types::pallet_identity::simple::IdentityInfo, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_identity", + types::SetIdentity { info: ::std::boxed::Box::new(info) }, + [ + 18u8, 86u8, 67u8, 10u8, 116u8, 254u8, 94u8, 95u8, 166u8, 30u8, 204u8, + 189u8, 174u8, 70u8, 191u8, 255u8, 149u8, 93u8, 156u8, 120u8, 105u8, + 138u8, 199u8, 181u8, 43u8, 150u8, 143u8, 254u8, 182u8, 81u8, 86u8, + 45u8, + ], + ) + } + #[doc = "See [`Pallet::set_subs`]."] + pub fn set_subs( + &self, + subs: ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::pallet_identity::types::Data, + )>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_subs", + types::SetSubs { subs }, + [ + 34u8, 184u8, 18u8, 155u8, 112u8, 247u8, 235u8, 75u8, 209u8, 236u8, + 21u8, 238u8, 43u8, 237u8, 223u8, 147u8, 48u8, 6u8, 39u8, 231u8, 174u8, + 164u8, 243u8, 184u8, 220u8, 151u8, 165u8, 69u8, 219u8, 122u8, 234u8, + 100u8, + ], + ) + } + #[doc = "See [`Pallet::clear_identity`]."] + pub fn clear_identity(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "clear_identity", + types::ClearIdentity {}, + [ + 43u8, 115u8, 205u8, 44u8, 24u8, 130u8, 220u8, 69u8, 247u8, 176u8, + 200u8, 175u8, 67u8, 183u8, 36u8, 200u8, 162u8, 132u8, 242u8, 25u8, + 21u8, 106u8, 197u8, 219u8, 141u8, 51u8, 204u8, 13u8, 191u8, 201u8, + 31u8, 31u8, + ], + ) + } + #[doc = "See [`Pallet::request_judgement`]."] + pub fn request_judgement( + &self, + reg_index: ::core::primitive::u32, + max_fee: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "request_judgement", + types::RequestJudgement { reg_index, max_fee }, + [ + 83u8, 85u8, 55u8, 184u8, 14u8, 54u8, 49u8, 212u8, 26u8, 148u8, 33u8, + 147u8, 182u8, 54u8, 180u8, 12u8, 61u8, 179u8, 216u8, 157u8, 103u8, + 52u8, 120u8, 252u8, 83u8, 203u8, 144u8, 65u8, 15u8, 3u8, 21u8, 33u8, + ], + ) + } + #[doc = "See [`Pallet::cancel_request`]."] + pub fn cancel_request( + &self, + reg_index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "cancel_request", + types::CancelRequest { reg_index }, + [ + 81u8, 14u8, 133u8, 219u8, 43u8, 84u8, 163u8, 208u8, 21u8, 185u8, 75u8, + 117u8, 126u8, 33u8, 210u8, 106u8, 122u8, 210u8, 35u8, 207u8, 104u8, + 206u8, 41u8, 117u8, 247u8, 108u8, 56u8, 23u8, 123u8, 169u8, 169u8, + 61u8, + ], + ) + } + #[doc = "See [`Pallet::set_fee`]."] + pub fn set_fee( + &self, + index: ::core::primitive::u32, + fee: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_fee", + types::SetFee { index, fee }, + [ + 131u8, 20u8, 17u8, 127u8, 180u8, 65u8, 225u8, 144u8, 193u8, 60u8, + 131u8, 241u8, 30u8, 149u8, 8u8, 76u8, 29u8, 52u8, 102u8, 108u8, 127u8, + 130u8, 70u8, 18u8, 94u8, 145u8, 179u8, 109u8, 252u8, 219u8, 58u8, + 163u8, + ], + ) + } + #[doc = "See [`Pallet::set_account_id`]."] + pub fn set_account_id( + &self, + index: ::core::primitive::u32, + new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_account_id", + types::SetAccountId { index, new }, + [ + 68u8, 57u8, 39u8, 134u8, 39u8, 82u8, 156u8, 107u8, 113u8, 99u8, 9u8, + 163u8, 58u8, 249u8, 247u8, 208u8, 38u8, 203u8, 54u8, 153u8, 116u8, + 143u8, 81u8, 46u8, 228u8, 149u8, 127u8, 115u8, 252u8, 83u8, 33u8, + 101u8, + ], + ) + } + #[doc = "See [`Pallet::set_fields`]."] + pub fn set_fields( + &self, + index: ::core::primitive::u32, + fields: runtime_types::pallet_identity::types::BitFlags< + runtime_types::pallet_identity::simple::IdentityField, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_fields", + types::SetFields { index, fields }, + [ + 25u8, 129u8, 119u8, 232u8, 18u8, 32u8, 77u8, 23u8, 185u8, 56u8, 32u8, + 199u8, 74u8, 174u8, 104u8, 203u8, 171u8, 253u8, 19u8, 225u8, 101u8, + 239u8, 14u8, 242u8, 157u8, 51u8, 203u8, 74u8, 1u8, 65u8, 165u8, 205u8, + ], + ) + } + #[doc = "See [`Pallet::provide_judgement`]."] + pub fn provide_judgement( + &self, + reg_index: ::core::primitive::u32, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + judgement: runtime_types::pallet_identity::types::Judgement< + ::core::primitive::u128, + >, + identity: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "provide_judgement", + types::ProvideJudgement { reg_index, target, judgement, identity }, + [ + 145u8, 188u8, 61u8, 236u8, 183u8, 49u8, 49u8, 149u8, 240u8, 184u8, + 202u8, 75u8, 69u8, 0u8, 95u8, 103u8, 132u8, 24u8, 107u8, 221u8, 236u8, + 75u8, 231u8, 125u8, 39u8, 189u8, 45u8, 202u8, 116u8, 123u8, 236u8, + 96u8, + ], + ) + } + #[doc = "See [`Pallet::kill_identity`]."] + pub fn kill_identity( + &self, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "kill_identity", + types::KillIdentity { target }, + [ + 114u8, 249u8, 102u8, 62u8, 118u8, 105u8, 185u8, 61u8, 173u8, 52u8, + 57u8, 190u8, 102u8, 74u8, 108u8, 239u8, 142u8, 176u8, 116u8, 51u8, + 49u8, 197u8, 6u8, 183u8, 248u8, 202u8, 202u8, 140u8, 134u8, 59u8, + 103u8, 182u8, + ], + ) + } + #[doc = "See [`Pallet::add_sub`]."] + pub fn add_sub( + &self, + sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + data: runtime_types::pallet_identity::types::Data, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "add_sub", + types::AddSub { sub, data }, + [ + 3u8, 65u8, 137u8, 35u8, 238u8, 133u8, 56u8, 233u8, 37u8, 125u8, 221u8, + 186u8, 153u8, 74u8, 69u8, 196u8, 244u8, 82u8, 51u8, 7u8, 216u8, 29u8, + 18u8, 16u8, 198u8, 184u8, 0u8, 181u8, 71u8, 227u8, 144u8, 33u8, + ], + ) + } + #[doc = "See [`Pallet::rename_sub`]."] + pub fn rename_sub( + &self, + sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + data: runtime_types::pallet_identity::types::Data, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "rename_sub", + types::RenameSub { sub, data }, + [ + 252u8, 50u8, 201u8, 112u8, 49u8, 248u8, 223u8, 239u8, 219u8, 226u8, + 64u8, 68u8, 227u8, 20u8, 30u8, 24u8, 36u8, 77u8, 26u8, 235u8, 144u8, + 240u8, 11u8, 111u8, 145u8, 167u8, 184u8, 207u8, 173u8, 58u8, 152u8, + 202u8, + ], + ) + } + #[doc = "See [`Pallet::remove_sub`]."] + pub fn remove_sub( + &self, + sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_sub", + types::RemoveSub { sub }, + [ + 95u8, 249u8, 171u8, 27u8, 100u8, 186u8, 67u8, 214u8, 226u8, 6u8, 118u8, + 39u8, 91u8, 122u8, 1u8, 87u8, 1u8, 226u8, 101u8, 9u8, 199u8, 167u8, + 84u8, 202u8, 141u8, 196u8, 80u8, 195u8, 15u8, 114u8, 140u8, 144u8, + ], + ) + } + #[doc = "See [`Pallet::quit_sub`]."] + pub fn quit_sub(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "quit_sub", + types::QuitSub {}, + [ + 147u8, 131u8, 175u8, 171u8, 187u8, 201u8, 240u8, 26u8, 146u8, 224u8, + 74u8, 166u8, 242u8, 193u8, 204u8, 247u8, 168u8, 93u8, 18u8, 32u8, 27u8, + 208u8, 149u8, 146u8, 179u8, 172u8, 75u8, 112u8, 84u8, 141u8, 233u8, + 223u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_identity::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A name was set or reset (which will remove all judgements)."] + pub struct IdentitySet { + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for IdentitySet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "IdentitySet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A name was cleared, and the given balance returned."] + pub struct IdentityCleared { + pub who: ::subxt::utils::AccountId32, + pub deposit: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for IdentityCleared { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "IdentityCleared"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A name was removed and the given balance slashed."] + pub struct IdentityKilled { + pub who: ::subxt::utils::AccountId32, + pub deposit: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for IdentityKilled { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "IdentityKilled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A judgement was asked from a registrar."] + pub struct JudgementRequested { + pub who: ::subxt::utils::AccountId32, + pub registrar_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for JudgementRequested { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "JudgementRequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A judgement request was retracted."] + pub struct JudgementUnrequested { + pub who: ::subxt::utils::AccountId32, + pub registrar_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for JudgementUnrequested { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "JudgementUnrequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A judgement was given by a registrar."] + pub struct JudgementGiven { + pub target: ::subxt::utils::AccountId32, + pub registrar_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for JudgementGiven { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "JudgementGiven"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A registrar was added."] + pub struct RegistrarAdded { + pub registrar_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for RegistrarAdded { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "RegistrarAdded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A sub-identity was added to an identity and the deposit paid."] + pub struct SubIdentityAdded { + pub sub: ::subxt::utils::AccountId32, + pub main: ::subxt::utils::AccountId32, + pub deposit: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for SubIdentityAdded { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "SubIdentityAdded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A sub-identity was removed from an identity and the deposit freed."] + pub struct SubIdentityRemoved { + pub sub: ::subxt::utils::AccountId32, + pub main: ::subxt::utils::AccountId32, + pub deposit: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for SubIdentityRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "SubIdentityRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A sub-identity was cleared, and the given deposit repatriated from the"] + #[doc = "main identity account to the sub-identity account."] + pub struct SubIdentityRevoked { + pub sub: ::subxt::utils::AccountId32, + pub main: ::subxt::utils::AccountId32, + pub deposit: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for SubIdentityRevoked { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "SubIdentityRevoked"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = ""] + #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] + pub fn identity_of( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + runtime_types::pallet_identity::simple::IdentityInfo, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "IdentityOf", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, + 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, + 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + ], + ) + } + #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = ""] + #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] + pub fn identity_of_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + runtime_types::pallet_identity::simple::IdentityInfo, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "IdentityOf", + Vec::new(), + [ + 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, + 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, + 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + ], + ) + } + #[doc = " The super-identity of an alternative \"sub\" identity together with its name, within that"] + #[doc = " context. If the account is not some other account's sub-identity, then just `None`."] + pub fn super_of( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::subxt::utils::AccountId32, runtime_types::pallet_identity::types::Data), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "SuperOf", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 84u8, 72u8, 64u8, 14u8, 56u8, 9u8, 143u8, 100u8, 141u8, 163u8, 36u8, + 55u8, 38u8, 254u8, 164u8, 17u8, 3u8, 110u8, 88u8, 175u8, 161u8, 65u8, + 159u8, 40u8, 46u8, 8u8, 177u8, 81u8, 130u8, 38u8, 193u8, 28u8, + ], + ) + } + #[doc = " The super-identity of an alternative \"sub\" identity together with its name, within that"] + #[doc = " context. If the account is not some other account's sub-identity, then just `None`."] + pub fn super_of_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::subxt::utils::AccountId32, runtime_types::pallet_identity::types::Data), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "SuperOf", + Vec::new(), + [ + 84u8, 72u8, 64u8, 14u8, 56u8, 9u8, 143u8, 100u8, 141u8, 163u8, 36u8, + 55u8, 38u8, 254u8, 164u8, 17u8, 3u8, 110u8, 88u8, 175u8, 161u8, 65u8, + 159u8, 40u8, 46u8, 8u8, 177u8, 81u8, 130u8, 38u8, 193u8, 28u8, + ], + ) + } + #[doc = " Alternative \"sub\" identities of this account."] + #[doc = ""] + #[doc = " The first item is the deposit, the second is a vector of the accounts."] + #[doc = ""] + #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] + pub fn subs_of( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + ::core::primitive::u128, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::subxt::utils::AccountId32, + >, + ), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "SubsOf", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 164u8, 140u8, 52u8, 123u8, 220u8, 118u8, 147u8, 3u8, 67u8, 22u8, 191u8, + 18u8, 186u8, 21u8, 154u8, 8u8, 205u8, 224u8, 163u8, 173u8, 174u8, + 107u8, 144u8, 215u8, 116u8, 64u8, 159u8, 115u8, 159u8, 205u8, 91u8, + 28u8, + ], + ) + } + #[doc = " Alternative \"sub\" identities of this account."] + #[doc = ""] + #[doc = " The first item is the deposit, the second is a vector of the accounts."] + #[doc = ""] + #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] + pub fn subs_of_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + ::core::primitive::u128, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::subxt::utils::AccountId32, + >, + ), + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "SubsOf", + Vec::new(), + [ + 164u8, 140u8, 52u8, 123u8, 220u8, 118u8, 147u8, 3u8, 67u8, 22u8, 191u8, + 18u8, 186u8, 21u8, 154u8, 8u8, 205u8, 224u8, 163u8, 173u8, 174u8, + 107u8, 144u8, 215u8, 116u8, 64u8, 159u8, 115u8, 159u8, 205u8, 91u8, + 28u8, + ], + ) + } + #[doc = " The set of registrars. Not expected to get very big as can only be added through a"] + #[doc = " special origin (likely a council motion)."] + #[doc = ""] + #[doc = " The index into this can be cast to `RegistrarIndex` to get a valid value."] + pub fn registrars( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::option::Option< + runtime_types::pallet_identity::types::RegistrarInfo< + ::core::primitive::u128, + ::subxt::utils::AccountId32, + runtime_types::pallet_identity::simple::IdentityField, + >, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "Registrars", + vec![], + [ + 207u8, 253u8, 229u8, 237u8, 228u8, 85u8, 173u8, 74u8, 164u8, 67u8, + 144u8, 144u8, 5u8, 242u8, 84u8, 187u8, 110u8, 181u8, 2u8, 162u8, 239u8, + 212u8, 72u8, 233u8, 160u8, 196u8, 121u8, 218u8, 100u8, 0u8, 219u8, + 181u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The amount held on deposit for a registered identity"] + pub fn basic_deposit( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Identity", + "BasicDeposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The amount held on deposit per additional field for a registered identity."] + pub fn field_deposit( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Identity", + "FieldDeposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The amount held on deposit for a registered subaccount. This should account for the fact"] + #[doc = " that one storage item's value will increase by the size of an account ID, and there will"] + #[doc = " be another trie item whose value is the size of an account ID plus 32 bytes."] + pub fn sub_account_deposit( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Identity", + "SubAccountDeposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The maximum number of sub-accounts allowed per identified account."] + pub fn max_sub_accounts( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxSubAccounts", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O"] + #[doc = " required to access an identity, but can be pretty high."] + pub fn max_additional_fields( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxAdditionalFields", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Maxmimum number of registrars allowed in the system. Needed to bound the complexity"] + #[doc = " of, e.g., updating judgements."] + pub fn max_registrars( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxRegistrars", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod proxy { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_proxy::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_proxy::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Proxy { + pub real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub force_proxy_type: + ::core::option::Option, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for Proxy { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "proxy"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddProxy { + pub delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub proxy_type: runtime_types::paseo_runtime::ProxyType, + pub delay: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for AddProxy { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "add_proxy"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveProxy { + pub delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub proxy_type: runtime_types::paseo_runtime::ProxyType, + pub delay: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveProxy { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "remove_proxy"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveProxies; + impl ::subxt::blocks::StaticExtrinsic for RemoveProxies { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "remove_proxies"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CreatePure { + pub proxy_type: runtime_types::paseo_runtime::ProxyType, + pub delay: ::core::primitive::u32, + pub index: ::core::primitive::u16, + } + impl ::subxt::blocks::StaticExtrinsic for CreatePure { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "create_pure"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct KillPure { + pub spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub proxy_type: runtime_types::paseo_runtime::ProxyType, + pub index: ::core::primitive::u16, + #[codec(compact)] + pub height: ::core::primitive::u32, + #[codec(compact)] + pub ext_index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for KillPure { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "kill_pure"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Announce { + pub real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for Announce { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "announce"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveAnnouncement { + pub real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveAnnouncement { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "remove_announcement"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RejectAnnouncement { + pub delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for RejectAnnouncement { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "reject_announcement"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProxyAnnounced { + pub delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub force_proxy_type: + ::core::option::Option, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ProxyAnnounced { + const PALLET: &'static str = "Proxy"; + const CALL: &'static str = "proxy_announced"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::proxy`]."] + pub fn proxy( + &self, + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + force_proxy_type: ::core::option::Option< + runtime_types::paseo_runtime::ProxyType, + >, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "proxy", + types::Proxy { real, force_proxy_type, call: ::std::boxed::Box::new(call) }, + [ + 4u8, 101u8, 39u8, 234u8, 241u8, 122u8, 131u8, 199u8, 192u8, 177u8, + 36u8, 9u8, 127u8, 157u8, 204u8, 59u8, 228u8, 47u8, 90u8, 133u8, 146u8, + 178u8, 17u8, 203u8, 71u8, 250u8, 79u8, 172u8, 32u8, 18u8, 192u8, 41u8, + ], + ) + } + #[doc = "See [`Pallet::add_proxy`]."] + pub fn add_proxy( + &self, + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "add_proxy", + types::AddProxy { delegate, proxy_type, delay }, + [ + 220u8, 202u8, 219u8, 231u8, 191u8, 245u8, 104u8, 50u8, 183u8, 248u8, + 174u8, 8u8, 129u8, 7u8, 220u8, 203u8, 147u8, 224u8, 127u8, 243u8, 46u8, + 234u8, 204u8, 92u8, 112u8, 77u8, 143u8, 83u8, 218u8, 183u8, 131u8, + 194u8, + ], + ) + } + #[doc = "See [`Pallet::remove_proxy`]."] + pub fn remove_proxy( + &self, + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "remove_proxy", + types::RemoveProxy { delegate, proxy_type, delay }, + [ + 123u8, 71u8, 234u8, 46u8, 239u8, 132u8, 115u8, 20u8, 33u8, 31u8, 75u8, + 172u8, 152u8, 129u8, 51u8, 240u8, 164u8, 153u8, 120u8, 2u8, 120u8, + 151u8, 182u8, 92u8, 222u8, 213u8, 105u8, 21u8, 126u8, 182u8, 117u8, + 133u8, + ], + ) + } + #[doc = "See [`Pallet::remove_proxies`]."] + pub fn remove_proxies(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "remove_proxies", + types::RemoveProxies {}, + [ + 1u8, 126u8, 36u8, 227u8, 185u8, 34u8, 218u8, 236u8, 125u8, 231u8, 68u8, + 185u8, 145u8, 63u8, 250u8, 225u8, 103u8, 3u8, 189u8, 37u8, 172u8, + 195u8, 197u8, 216u8, 99u8, 210u8, 240u8, 162u8, 158u8, 132u8, 24u8, + 6u8, + ], + ) + } + #[doc = "See [`Pallet::create_pure`]."] + pub fn create_pure( + &self, + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + index: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "create_pure", + types::CreatePure { proxy_type, delay, index }, + [ + 65u8, 193u8, 16u8, 29u8, 244u8, 34u8, 244u8, 210u8, 211u8, 61u8, 127u8, + 20u8, 106u8, 84u8, 207u8, 204u8, 135u8, 176u8, 245u8, 209u8, 115u8, + 67u8, 120u8, 133u8, 54u8, 26u8, 168u8, 45u8, 217u8, 177u8, 17u8, 219u8, + ], + ) + } + #[doc = "See [`Pallet::kill_pure`]."] + pub fn kill_pure( + &self, + spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + proxy_type: runtime_types::paseo_runtime::ProxyType, + index: ::core::primitive::u16, + height: ::core::primitive::u32, + ext_index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "kill_pure", + types::KillPure { spawner, proxy_type, index, height, ext_index }, + [ + 156u8, 57u8, 67u8, 93u8, 148u8, 239u8, 31u8, 189u8, 52u8, 190u8, 74u8, + 215u8, 82u8, 207u8, 85u8, 160u8, 215u8, 24u8, 36u8, 136u8, 79u8, 108u8, + 50u8, 226u8, 138u8, 101u8, 158u8, 120u8, 225u8, 46u8, 228u8, 150u8, + ], + ) + } + #[doc = "See [`Pallet::announce`]."] + pub fn announce( + &self, + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "announce", + types::Announce { real, call_hash }, + [ + 105u8, 218u8, 232u8, 82u8, 80u8, 10u8, 11u8, 1u8, 93u8, 241u8, 121u8, + 198u8, 167u8, 218u8, 95u8, 15u8, 75u8, 122u8, 155u8, 233u8, 10u8, + 175u8, 145u8, 73u8, 214u8, 230u8, 67u8, 107u8, 23u8, 239u8, 69u8, + 240u8, + ], + ) + } + #[doc = "See [`Pallet::remove_announcement`]."] + pub fn remove_announcement( + &self, + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "remove_announcement", + types::RemoveAnnouncement { real, call_hash }, + [ + 40u8, 237u8, 179u8, 128u8, 201u8, 183u8, 20u8, 47u8, 99u8, 182u8, 81u8, + 31u8, 27u8, 212u8, 133u8, 36u8, 8u8, 248u8, 57u8, 230u8, 138u8, 80u8, + 241u8, 147u8, 69u8, 236u8, 156u8, 167u8, 205u8, 49u8, 60u8, 16u8, + ], + ) + } + #[doc = "See [`Pallet::reject_announcement`]."] + pub fn reject_announcement( + &self, + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "reject_announcement", + types::RejectAnnouncement { delegate, call_hash }, + [ + 150u8, 178u8, 49u8, 160u8, 211u8, 75u8, 58u8, 228u8, 121u8, 253u8, + 167u8, 72u8, 68u8, 105u8, 159u8, 52u8, 41u8, 155u8, 92u8, 26u8, 169u8, + 177u8, 102u8, 36u8, 1u8, 47u8, 87u8, 189u8, 223u8, 238u8, 244u8, 110u8, + ], + ) + } + #[doc = "See [`Pallet::proxy_announced`]."] + pub fn proxy_announced( + &self, + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + force_proxy_type: ::core::option::Option< + runtime_types::paseo_runtime::ProxyType, + >, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Proxy", + "proxy_announced", + types::ProxyAnnounced { + delegate, + real, + force_proxy_type, + call: ::std::boxed::Box::new(call), + }, + [ + 148u8, 142u8, 182u8, 238u8, 93u8, 70u8, 231u8, 222u8, 100u8, 132u8, + 143u8, 208u8, 137u8, 64u8, 175u8, 10u8, 114u8, 132u8, 5u8, 124u8, + 146u8, 136u8, 206u8, 169u8, 139u8, 72u8, 65u8, 109u8, 60u8, 142u8, + 47u8, 103u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_proxy::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A proxy was executed correctly, with the given."] + pub struct ProxyExecuted { + pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for ProxyExecuted { + const PALLET: &'static str = "Proxy"; + const EVENT: &'static str = "ProxyExecuted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A pure account has been created by new proxy with given"] + #[doc = "disambiguation index and proxy type."] + pub struct PureCreated { + pub pure: ::subxt::utils::AccountId32, + pub who: ::subxt::utils::AccountId32, + pub proxy_type: runtime_types::paseo_runtime::ProxyType, + pub disambiguation_index: ::core::primitive::u16, + } + impl ::subxt::events::StaticEvent for PureCreated { + const PALLET: &'static str = "Proxy"; + const EVENT: &'static str = "PureCreated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An announcement was placed to make a call in the future."] + pub struct Announced { + pub real: ::subxt::utils::AccountId32, + pub proxy: ::subxt::utils::AccountId32, + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for Announced { + const PALLET: &'static str = "Proxy"; + const EVENT: &'static str = "Announced"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A proxy was added."] + pub struct ProxyAdded { + pub delegator: ::subxt::utils::AccountId32, + pub delegatee: ::subxt::utils::AccountId32, + pub proxy_type: runtime_types::paseo_runtime::ProxyType, + pub delay: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for ProxyAdded { + const PALLET: &'static str = "Proxy"; + const EVENT: &'static str = "ProxyAdded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A proxy was removed."] + pub struct ProxyRemoved { + pub delegator: ::subxt::utils::AccountId32, + pub delegatee: ::subxt::utils::AccountId32, + pub proxy_type: runtime_types::paseo_runtime::ProxyType, + pub delay: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for ProxyRemoved { + const PALLET: &'static str = "Proxy"; + const EVENT: &'static str = "ProxyRemoved"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The set of account proxies. Maps the account which has delegated to the accounts"] + #[doc = " which are being delegated to, together with the amount held on deposit."] + pub fn proxies( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_proxy::ProxyDefinition< + ::subxt::utils::AccountId32, + runtime_types::paseo_runtime::ProxyType, + ::core::primitive::u32, + >, + >, + ::core::primitive::u128, + ), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Proxy", + "Proxies", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 248u8, 226u8, 176u8, 230u8, 10u8, 37u8, 135u8, 74u8, 122u8, 169u8, + 107u8, 114u8, 64u8, 12u8, 171u8, 126u8, 3u8, 11u8, 197u8, 216u8, 36u8, + 239u8, 150u8, 88u8, 37u8, 171u8, 84u8, 200u8, 241u8, 32u8, 238u8, + 157u8, + ], + ) + } + #[doc = " The set of account proxies. Maps the account which has delegated to the accounts"] + #[doc = " which are being delegated to, together with the amount held on deposit."] + pub fn proxies_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_proxy::ProxyDefinition< + ::subxt::utils::AccountId32, + runtime_types::paseo_runtime::ProxyType, + ::core::primitive::u32, + >, + >, + ::core::primitive::u128, + ), + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Proxy", + "Proxies", + Vec::new(), + [ + 248u8, 226u8, 176u8, 230u8, 10u8, 37u8, 135u8, 74u8, 122u8, 169u8, + 107u8, 114u8, 64u8, 12u8, 171u8, 126u8, 3u8, 11u8, 197u8, 216u8, 36u8, + 239u8, 150u8, 88u8, 37u8, 171u8, 84u8, 200u8, 241u8, 32u8, 238u8, + 157u8, + ], + ) + } + #[doc = " The announcements made by the proxy (key)."] + pub fn announcements( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_proxy::Announcement< + ::subxt::utils::AccountId32, + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + ::core::primitive::u128, + ), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Proxy", + "Announcements", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 129u8, 228u8, 198u8, 210u8, 90u8, 69u8, 151u8, 198u8, 206u8, 174u8, + 148u8, 58u8, 134u8, 14u8, 53u8, 56u8, 234u8, 71u8, 84u8, 247u8, 246u8, + 207u8, 117u8, 221u8, 84u8, 72u8, 254u8, 215u8, 102u8, 49u8, 21u8, + 173u8, + ], + ) + } + #[doc = " The announcements made by the proxy (key)."] + pub fn announcements_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_proxy::Announcement< + ::subxt::utils::AccountId32, + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + ::core::primitive::u128, + ), + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Proxy", + "Announcements", + Vec::new(), + [ + 129u8, 228u8, 198u8, 210u8, 90u8, 69u8, 151u8, 198u8, 206u8, 174u8, + 148u8, 58u8, 134u8, 14u8, 53u8, 56u8, 234u8, 71u8, 84u8, 247u8, 246u8, + 207u8, 117u8, 221u8, 84u8, 72u8, 254u8, 215u8, 102u8, 49u8, 21u8, + 173u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The base amount of currency needed to reserve for creating a proxy."] + #[doc = ""] + #[doc = " This is held for an additional storage item whose value size is"] + #[doc = " `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes."] + pub fn proxy_deposit_base( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Proxy", + "ProxyDepositBase", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The amount of currency needed per proxy added."] + #[doc = ""] + #[doc = " This is held for adding 32 bytes plus an instance of `ProxyType` more into a"] + #[doc = " pre-existing storage value. Thus, when configuring `ProxyDepositFactor` one should take"] + #[doc = " into account `32 + proxy_type.encode().len()` bytes of data."] + pub fn proxy_deposit_factor( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Proxy", + "ProxyDepositFactor", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The maximum amount of proxies allowed for a single account."] + pub fn max_proxies(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Proxy", + "MaxProxies", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum amount of time-delayed announcements that are allowed to be pending."] + pub fn max_pending(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Proxy", + "MaxPending", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The base amount of currency needed to reserve for creating an announcement."] + #[doc = ""] + #[doc = " This is held when a new storage item holding a `Balance` is created (typically 16"] + #[doc = " bytes)."] + pub fn announcement_deposit_base( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Proxy", + "AnnouncementDepositBase", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The amount of currency needed per announcement made."] + #[doc = ""] + #[doc = " This is held for adding an `AccountId`, `Hash` and `BlockNumber` (typically 68 bytes)"] + #[doc = " into a pre-existing storage value."] + pub fn announcement_deposit_factor( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Proxy", + "AnnouncementDepositFactor", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + } + } + } + pub mod multisig { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_multisig::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_multisig::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AsMultiThreshold1 { + pub other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for AsMultiThreshold1 { + const PALLET: &'static str = "Multisig"; + const CALL: &'static str = "as_multi_threshold_1"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AsMulti { + pub threshold: ::core::primitive::u16, + pub other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + pub maybe_timepoint: ::core::option::Option< + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + >, + pub call: ::std::boxed::Box, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::blocks::StaticExtrinsic for AsMulti { + const PALLET: &'static str = "Multisig"; + const CALL: &'static str = "as_multi"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApproveAsMulti { + pub threshold: ::core::primitive::u16, + pub other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + pub maybe_timepoint: ::core::option::Option< + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + >, + pub call_hash: [::core::primitive::u8; 32usize], + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::blocks::StaticExtrinsic for ApproveAsMulti { + const PALLET: &'static str = "Multisig"; + const CALL: &'static str = "approve_as_multi"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CancelAsMulti { + pub threshold: ::core::primitive::u16, + pub other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + pub timepoint: + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + pub call_hash: [::core::primitive::u8; 32usize], + } + impl ::subxt::blocks::StaticExtrinsic for CancelAsMulti { + const PALLET: &'static str = "Multisig"; + const CALL: &'static str = "cancel_as_multi"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::as_multi_threshold_1`]."] + pub fn as_multi_threshold_1( + &self, + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Multisig", + "as_multi_threshold_1", + types::AsMultiThreshold1 { + other_signatories, + call: ::std::boxed::Box::new(call), + }, + [ + 119u8, 166u8, 80u8, 19u8, 68u8, 207u8, 46u8, 88u8, 128u8, 12u8, 111u8, + 204u8, 136u8, 33u8, 84u8, 83u8, 115u8, 94u8, 236u8, 90u8, 148u8, 149u8, + 227u8, 86u8, 27u8, 67u8, 92u8, 172u8, 5u8, 113u8, 253u8, 102u8, + ], + ) + } + #[doc = "See [`Pallet::as_multi`]."] + pub fn as_multi( + &self, + threshold: ::core::primitive::u16, + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + maybe_timepoint: ::core::option::Option< + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + >, + call: runtime_types::paseo_runtime::RuntimeCall, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Multisig", + "as_multi", + types::AsMulti { + threshold, + other_signatories, + maybe_timepoint, + call: ::std::boxed::Box::new(call), + max_weight, + }, + [ + 79u8, 23u8, 83u8, 217u8, 22u8, 44u8, 171u8, 253u8, 103u8, 78u8, 36u8, + 65u8, 107u8, 71u8, 57u8, 210u8, 25u8, 178u8, 204u8, 85u8, 205u8, 244u8, + 162u8, 136u8, 250u8, 91u8, 211u8, 94u8, 107u8, 205u8, 152u8, 69u8, + ], + ) + } + #[doc = "See [`Pallet::approve_as_multi`]."] + pub fn approve_as_multi( + &self, + threshold: ::core::primitive::u16, + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + maybe_timepoint: ::core::option::Option< + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + >, + call_hash: [::core::primitive::u8; 32usize], + max_weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Multisig", + "approve_as_multi", + types::ApproveAsMulti { + threshold, + other_signatories, + maybe_timepoint, + call_hash, + max_weight, + }, + [ + 248u8, 46u8, 131u8, 35u8, 204u8, 12u8, 218u8, 150u8, 88u8, 131u8, 89u8, + 13u8, 95u8, 122u8, 87u8, 107u8, 136u8, 154u8, 92u8, 199u8, 108u8, 92u8, + 207u8, 171u8, 113u8, 8u8, 47u8, 248u8, 65u8, 26u8, 203u8, 135u8, + ], + ) + } + #[doc = "See [`Pallet::cancel_as_multi`]."] + pub fn cancel_as_multi( + &self, + threshold: ::core::primitive::u16, + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + call_hash: [::core::primitive::u8; 32usize], + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Multisig", + "cancel_as_multi", + types::CancelAsMulti { threshold, other_signatories, timepoint, call_hash }, + [ + 212u8, 179u8, 123u8, 40u8, 209u8, 228u8, 181u8, 0u8, 109u8, 28u8, 27u8, + 48u8, 15u8, 47u8, 203u8, 54u8, 106u8, 114u8, 28u8, 118u8, 101u8, 201u8, + 95u8, 187u8, 46u8, 182u8, 4u8, 30u8, 227u8, 105u8, 14u8, 81u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_multisig::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new multisig operation has begun."] + pub struct NewMultisig { + pub approving: ::subxt::utils::AccountId32, + pub multisig: ::subxt::utils::AccountId32, + pub call_hash: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for NewMultisig { + const PALLET: &'static str = "Multisig"; + const EVENT: &'static str = "NewMultisig"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A multisig operation has been approved by someone."] + pub struct MultisigApproval { + pub approving: ::subxt::utils::AccountId32, + pub timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + pub multisig: ::subxt::utils::AccountId32, + pub call_hash: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for MultisigApproval { + const PALLET: &'static str = "Multisig"; + const EVENT: &'static str = "MultisigApproval"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A multisig operation has been executed."] + pub struct MultisigExecuted { + pub approving: ::subxt::utils::AccountId32, + pub timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + pub multisig: ::subxt::utils::AccountId32, + pub call_hash: [::core::primitive::u8; 32usize], + pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for MultisigExecuted { + const PALLET: &'static str = "Multisig"; + const EVENT: &'static str = "MultisigExecuted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A multisig operation has been cancelled."] + pub struct MultisigCancelled { + pub cancelling: ::subxt::utils::AccountId32, + pub timepoint: runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + pub multisig: ::subxt::utils::AccountId32, + pub call_hash: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for MultisigCancelled { + const PALLET: &'static str = "Multisig"; + const EVENT: &'static str = "MultisigCancelled"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The set of open multisig operations."] + pub fn multisigs( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow<[::core::primitive::u8; 32usize]>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_multisig::Multisig< + ::core::primitive::u32, + ::core::primitive::u128, + ::subxt::utils::AccountId32, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Multisig", + "Multisigs", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, + 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, + 37u8, 100u8, 14u8, 162u8, 158u8, 161u8, 48u8, 117u8, 102u8, 61u8, + ], + ) + } + #[doc = " The set of open multisig operations."] + pub fn multisigs_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_multisig::Multisig< + ::core::primitive::u32, + ::core::primitive::u128, + ::subxt::utils::AccountId32, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Multisig", + "Multisigs", + Vec::new(), + [ + 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, + 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, + 37u8, 100u8, 14u8, 162u8, 158u8, 161u8, 48u8, 117u8, 102u8, 61u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The base amount of currency needed to reserve for creating a multisig execution or to"] + #[doc = " store a dispatch call for later."] + #[doc = ""] + #[doc = " This is held for an additional storage item whose value size is"] + #[doc = " `4 + sizeof((BlockNumber, Balance, AccountId))` bytes and whose key size is"] + #[doc = " `32 + sizeof(AccountId)` bytes."] + pub fn deposit_base(&self) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Multisig", + "DepositBase", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The amount of currency needed per unit threshold when creating a multisig execution."] + #[doc = ""] + #[doc = " This is held for adding 32 bytes more into a pre-existing storage value."] + pub fn deposit_factor( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Multisig", + "DepositFactor", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The maximum amount of signatories allowed in the multisig."] + pub fn max_signatories( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Multisig", + "MaxSignatories", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod bounties { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_bounties::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_bounties::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProposeBounty { + #[codec(compact)] + pub value: ::core::primitive::u128, + pub description: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for ProposeBounty { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "propose_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApproveBounty { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ApproveBounty { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "approve_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProposeCurator { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + pub curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub fee: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for ProposeCurator { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "propose_curator"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnassignCurator { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for UnassignCurator { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "unassign_curator"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AcceptCurator { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for AcceptCurator { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "accept_curator"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AwardBounty { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for AwardBounty { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "award_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClaimBounty { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ClaimBounty { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "claim_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CloseBounty { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for CloseBounty { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "close_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ExtendBountyExpiry { + #[codec(compact)] + pub bounty_id: ::core::primitive::u32, + pub remark: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for ExtendBountyExpiry { + const PALLET: &'static str = "Bounties"; + const CALL: &'static str = "extend_bounty_expiry"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::propose_bounty`]."] + pub fn propose_bounty( + &self, + value: ::core::primitive::u128, + description: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "propose_bounty", + types::ProposeBounty { value, description }, + [ + 131u8, 169u8, 55u8, 102u8, 212u8, 139u8, 9u8, 65u8, 75u8, 112u8, 6u8, + 180u8, 92u8, 124u8, 43u8, 42u8, 38u8, 40u8, 226u8, 24u8, 28u8, 34u8, + 169u8, 220u8, 184u8, 206u8, 109u8, 227u8, 53u8, 228u8, 88u8, 25u8, + ], + ) + } + #[doc = "See [`Pallet::approve_bounty`]."] + pub fn approve_bounty( + &self, + bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "approve_bounty", + types::ApproveBounty { bounty_id }, + [ + 85u8, 12u8, 177u8, 91u8, 183u8, 124u8, 175u8, 148u8, 188u8, 200u8, + 237u8, 144u8, 6u8, 67u8, 159u8, 48u8, 177u8, 222u8, 183u8, 137u8, + 173u8, 131u8, 128u8, 219u8, 255u8, 243u8, 80u8, 224u8, 126u8, 136u8, + 90u8, 47u8, + ], + ) + } + #[doc = "See [`Pallet::propose_curator`]."] + pub fn propose_curator( + &self, + bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + fee: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "propose_curator", + types::ProposeCurator { bounty_id, curator, fee }, + [ + 238u8, 102u8, 86u8, 97u8, 169u8, 16u8, 133u8, 41u8, 24u8, 247u8, 149u8, + 200u8, 95u8, 213u8, 45u8, 62u8, 41u8, 247u8, 170u8, 62u8, 211u8, 194u8, + 5u8, 108u8, 129u8, 145u8, 108u8, 67u8, 84u8, 97u8, 237u8, 54u8, + ], + ) + } + #[doc = "See [`Pallet::unassign_curator`]."] + pub fn unassign_curator( + &self, + bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "unassign_curator", + types::UnassignCurator { bounty_id }, + [ + 98u8, 94u8, 107u8, 111u8, 151u8, 182u8, 71u8, 239u8, 214u8, 88u8, + 108u8, 11u8, 51u8, 163u8, 102u8, 162u8, 245u8, 247u8, 244u8, 159u8, + 197u8, 23u8, 171u8, 6u8, 60u8, 146u8, 144u8, 101u8, 68u8, 133u8, 245u8, + 74u8, + ], + ) + } + #[doc = "See [`Pallet::accept_curator`]."] + pub fn accept_curator( + &self, + bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "accept_curator", + types::AcceptCurator { bounty_id }, + [ + 178u8, 142u8, 138u8, 15u8, 243u8, 10u8, 222u8, 169u8, 150u8, 200u8, + 85u8, 185u8, 39u8, 167u8, 134u8, 3u8, 186u8, 84u8, 43u8, 140u8, 11u8, + 70u8, 56u8, 197u8, 39u8, 84u8, 138u8, 139u8, 198u8, 104u8, 41u8, 238u8, + ], + ) + } + #[doc = "See [`Pallet::award_bounty`]."] + pub fn award_bounty( + &self, + bounty_id: ::core::primitive::u32, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "award_bounty", + types::AwardBounty { bounty_id, beneficiary }, + [ + 231u8, 248u8, 65u8, 2u8, 199u8, 19u8, 126u8, 23u8, 206u8, 206u8, 230u8, + 77u8, 53u8, 152u8, 230u8, 234u8, 211u8, 153u8, 82u8, 149u8, 93u8, 91u8, + 19u8, 72u8, 214u8, 92u8, 65u8, 207u8, 142u8, 168u8, 133u8, 87u8, + ], + ) + } + #[doc = "See [`Pallet::claim_bounty`]."] + pub fn claim_bounty( + &self, + bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "claim_bounty", + types::ClaimBounty { bounty_id }, + [ + 211u8, 143u8, 123u8, 205u8, 140u8, 43u8, 176u8, 103u8, 110u8, 125u8, + 158u8, 131u8, 103u8, 62u8, 69u8, 215u8, 220u8, 110u8, 11u8, 3u8, 30u8, + 193u8, 235u8, 177u8, 96u8, 241u8, 140u8, 53u8, 62u8, 133u8, 170u8, + 25u8, + ], + ) + } + #[doc = "See [`Pallet::close_bounty`]."] + pub fn close_bounty( + &self, + bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "close_bounty", + types::CloseBounty { bounty_id }, + [ + 144u8, 234u8, 109u8, 39u8, 227u8, 231u8, 104u8, 48u8, 45u8, 196u8, + 217u8, 220u8, 241u8, 197u8, 157u8, 227u8, 154u8, 156u8, 181u8, 69u8, + 146u8, 77u8, 203u8, 167u8, 79u8, 102u8, 15u8, 253u8, 135u8, 53u8, 96u8, + 60u8, + ], + ) + } + #[doc = "See [`Pallet::extend_bounty_expiry`]."] + pub fn extend_bounty_expiry( + &self, + bounty_id: ::core::primitive::u32, + remark: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Bounties", + "extend_bounty_expiry", + types::ExtendBountyExpiry { bounty_id, remark }, + [ + 102u8, 118u8, 89u8, 189u8, 138u8, 157u8, 216u8, 10u8, 239u8, 3u8, + 200u8, 217u8, 219u8, 19u8, 195u8, 182u8, 105u8, 220u8, 11u8, 146u8, + 222u8, 79u8, 95u8, 136u8, 188u8, 230u8, 248u8, 119u8, 30u8, 6u8, 242u8, + 194u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_bounties::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "New bounty proposal."] + pub struct BountyProposed { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BountyProposed { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyProposed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty proposal was rejected; funds were slashed."] + pub struct BountyRejected { + pub index: ::core::primitive::u32, + pub bond: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for BountyRejected { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyRejected"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty proposal is funded and became active."] + pub struct BountyBecameActive { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BountyBecameActive { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyBecameActive"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty is awarded to a beneficiary."] + pub struct BountyAwarded { + pub index: ::core::primitive::u32, + pub beneficiary: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for BountyAwarded { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyAwarded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty is claimed by beneficiary."] + pub struct BountyClaimed { + pub index: ::core::primitive::u32, + pub payout: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for BountyClaimed { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyClaimed"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty is cancelled."] + pub struct BountyCanceled { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BountyCanceled { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyCanceled"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty expiry is extended."] + pub struct BountyExtended { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BountyExtended { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyExtended"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty is approved."] + pub struct BountyApproved { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BountyApproved { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyApproved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty curator is proposed."] + pub struct CuratorProposed { + pub bounty_id: ::core::primitive::u32, + pub curator: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for CuratorProposed { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "CuratorProposed"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty curator is unassigned."] + pub struct CuratorUnassigned { + pub bounty_id: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for CuratorUnassigned { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "CuratorUnassigned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty curator is accepted."] + pub struct CuratorAccepted { + pub bounty_id: ::core::primitive::u32, + pub curator: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for CuratorAccepted { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "CuratorAccepted"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Number of bounty proposals that have been made."] + pub fn bounty_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Bounties", + "BountyCount", + vec![], + [ + 120u8, 204u8, 26u8, 150u8, 37u8, 81u8, 43u8, 223u8, 180u8, 252u8, + 142u8, 144u8, 109u8, 5u8, 184u8, 72u8, 223u8, 230u8, 66u8, 196u8, 14u8, + 14u8, 164u8, 190u8, 246u8, 168u8, 190u8, 56u8, 212u8, 73u8, 175u8, + 26u8, + ], + ) + } + #[doc = " Bounties that have been made."] + pub fn bounties( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_bounties::Bounty< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Bounties", + "Bounties", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 183u8, 96u8, 172u8, 86u8, 167u8, 129u8, 51u8, 179u8, 238u8, 155u8, + 196u8, 77u8, 158u8, 102u8, 188u8, 19u8, 79u8, 178u8, 145u8, 189u8, + 44u8, 117u8, 47u8, 97u8, 30u8, 149u8, 239u8, 212u8, 167u8, 127u8, + 108u8, 55u8, + ], + ) + } + #[doc = " Bounties that have been made."] + pub fn bounties_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_bounties::Bounty< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + ::core::primitive::u32, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Bounties", + "Bounties", + Vec::new(), + [ + 183u8, 96u8, 172u8, 86u8, 167u8, 129u8, 51u8, 179u8, 238u8, 155u8, + 196u8, 77u8, 158u8, 102u8, 188u8, 19u8, 79u8, 178u8, 145u8, 189u8, + 44u8, 117u8, 47u8, 97u8, 30u8, 149u8, 239u8, 212u8, 167u8, 127u8, + 108u8, 55u8, + ], + ) + } + #[doc = " The description of each bounty."] + pub fn bounty_descriptions( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Bounties", + "BountyDescriptions", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 71u8, 40u8, 133u8, 84u8, 55u8, 207u8, 169u8, 189u8, 160u8, 51u8, 202u8, + 144u8, 15u8, 226u8, 97u8, 114u8, 54u8, 247u8, 53u8, 26u8, 36u8, 54u8, + 186u8, 163u8, 198u8, 100u8, 191u8, 121u8, 186u8, 160u8, 85u8, 97u8, + ], + ) + } + #[doc = " The description of each bounty."] + pub fn bounty_descriptions_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Bounties", + "BountyDescriptions", + Vec::new(), + [ + 71u8, 40u8, 133u8, 84u8, 55u8, 207u8, 169u8, 189u8, 160u8, 51u8, 202u8, + 144u8, 15u8, 226u8, 97u8, 114u8, 54u8, 247u8, 53u8, 26u8, 36u8, 54u8, + 186u8, 163u8, 198u8, 100u8, 191u8, 121u8, 186u8, 160u8, 85u8, 97u8, + ], + ) + } + #[doc = " Bounty indices that have been approved but not yet funded."] + pub fn bounty_approvals( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Bounties", + "BountyApprovals", + vec![], + [ + 182u8, 228u8, 0u8, 46u8, 176u8, 25u8, 222u8, 180u8, 51u8, 57u8, 14u8, + 0u8, 69u8, 160u8, 64u8, 27u8, 88u8, 29u8, 227u8, 146u8, 2u8, 121u8, + 27u8, 85u8, 45u8, 110u8, 244u8, 62u8, 134u8, 77u8, 175u8, 188u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The amount held on deposit for placing a bounty proposal."] + pub fn bounty_deposit_base( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Bounties", + "BountyDepositBase", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The delay period for which a bounty beneficiary need to wait before claim the payout."] + pub fn bounty_deposit_payout_delay( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Bounties", + "BountyDepositPayoutDelay", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Bounty duration in blocks."] + pub fn bounty_update_period( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Bounties", + "BountyUpdatePeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The curator deposit is calculated as a percentage of the curator fee."] + #[doc = ""] + #[doc = " This deposit has optional upper and lower bounds with `CuratorDepositMax` and"] + #[doc = " `CuratorDepositMin`."] + pub fn curator_deposit_multiplier( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Bounties", + "CuratorDepositMultiplier", + [ + 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, + 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, + 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, + ], + ) + } + #[doc = " Maximum amount of funds that should be placed in a deposit for making a proposal."] + pub fn curator_deposit_max( + &self, + ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> + { + ::subxt::constants::Address::new_static( + "Bounties", + "CuratorDepositMax", + [ + 198u8, 51u8, 89u8, 159u8, 124u8, 251u8, 51u8, 80u8, 167u8, 193u8, 44u8, + 199u8, 80u8, 36u8, 41u8, 130u8, 137u8, 229u8, 178u8, 208u8, 37u8, + 215u8, 169u8, 183u8, 180u8, 191u8, 140u8, 240u8, 250u8, 61u8, 42u8, + 147u8, + ], + ) + } + #[doc = " Minimum amount of funds that should be placed in a deposit for making a proposal."] + pub fn curator_deposit_min( + &self, + ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> + { + ::subxt::constants::Address::new_static( + "Bounties", + "CuratorDepositMin", + [ + 198u8, 51u8, 89u8, 159u8, 124u8, 251u8, 51u8, 80u8, 167u8, 193u8, 44u8, + 199u8, 80u8, 36u8, 41u8, 130u8, 137u8, 229u8, 178u8, 208u8, 37u8, + 215u8, 169u8, 183u8, 180u8, 191u8, 140u8, 240u8, 250u8, 61u8, 42u8, + 147u8, + ], + ) + } + #[doc = " Minimum value for a bounty."] + pub fn bounty_value_minimum( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Bounties", + "BountyValueMinimum", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The amount held on deposit per byte within the tip report reason or bounty description."] + pub fn data_deposit_per_byte( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Bounties", + "DataDepositPerByte", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " Maximum acceptable reason length."] + #[doc = ""] + #[doc = " Benchmarks depend on this value, be sure to update weights file when changing this value"] + pub fn maximum_reason_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Bounties", + "MaximumReasonLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod child_bounties { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_child_bounties::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_child_bounties::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddChildBounty { + #[codec(compact)] + pub parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + pub value: ::core::primitive::u128, + pub description: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for AddChildBounty { + const PALLET: &'static str = "ChildBounties"; + const CALL: &'static str = "add_child_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProposeCurator { + #[codec(compact)] + pub parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + pub child_bounty_id: ::core::primitive::u32, + pub curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub fee: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for ProposeCurator { + const PALLET: &'static str = "ChildBounties"; + const CALL: &'static str = "propose_curator"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AcceptCurator { + #[codec(compact)] + pub parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + pub child_bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for AcceptCurator { + const PALLET: &'static str = "ChildBounties"; + const CALL: &'static str = "accept_curator"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnassignCurator { + #[codec(compact)] + pub parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + pub child_bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for UnassignCurator { + const PALLET: &'static str = "ChildBounties"; + const CALL: &'static str = "unassign_curator"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AwardChildBounty { + #[codec(compact)] + pub parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + pub child_bounty_id: ::core::primitive::u32, + pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for AwardChildBounty { + const PALLET: &'static str = "ChildBounties"; + const CALL: &'static str = "award_child_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClaimChildBounty { + #[codec(compact)] + pub parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + pub child_bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ClaimChildBounty { + const PALLET: &'static str = "ChildBounties"; + const CALL: &'static str = "claim_child_bounty"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CloseChildBounty { + #[codec(compact)] + pub parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + pub child_bounty_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for CloseChildBounty { + const PALLET: &'static str = "ChildBounties"; + const CALL: &'static str = "close_child_bounty"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::add_child_bounty`]."] + pub fn add_child_bounty( + &self, + parent_bounty_id: ::core::primitive::u32, + value: ::core::primitive::u128, + description: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ChildBounties", + "add_child_bounty", + types::AddChildBounty { parent_bounty_id, value, description }, + [ + 249u8, 159u8, 185u8, 144u8, 114u8, 142u8, 104u8, 215u8, 136u8, 52u8, + 255u8, 125u8, 54u8, 243u8, 220u8, 171u8, 254u8, 49u8, 105u8, 134u8, + 137u8, 221u8, 100u8, 111u8, 72u8, 38u8, 184u8, 122u8, 72u8, 204u8, + 182u8, 123u8, + ], + ) + } + #[doc = "See [`Pallet::propose_curator`]."] + pub fn propose_curator( + &self, + parent_bounty_id: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + fee: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ChildBounties", + "propose_curator", + types::ProposeCurator { parent_bounty_id, child_bounty_id, curator, fee }, + [ + 30u8, 186u8, 200u8, 181u8, 73u8, 219u8, 129u8, 195u8, 100u8, 30u8, + 36u8, 9u8, 131u8, 110u8, 136u8, 145u8, 146u8, 44u8, 96u8, 207u8, 74u8, + 59u8, 61u8, 94u8, 186u8, 184u8, 89u8, 170u8, 126u8, 64u8, 234u8, 177u8, + ], + ) + } + #[doc = "See [`Pallet::accept_curator`]."] + pub fn accept_curator( + &self, + parent_bounty_id: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ChildBounties", + "accept_curator", + types::AcceptCurator { parent_bounty_id, child_bounty_id }, + [ + 80u8, 117u8, 237u8, 83u8, 230u8, 230u8, 159u8, 136u8, 87u8, 17u8, + 239u8, 110u8, 190u8, 12u8, 52u8, 63u8, 171u8, 118u8, 82u8, 168u8, + 190u8, 255u8, 91u8, 85u8, 117u8, 226u8, 51u8, 28u8, 116u8, 230u8, + 137u8, 123u8, + ], + ) + } + #[doc = "See [`Pallet::unassign_curator`]."] + pub fn unassign_curator( + &self, + parent_bounty_id: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ChildBounties", + "unassign_curator", + types::UnassignCurator { parent_bounty_id, child_bounty_id }, + [ + 120u8, 208u8, 75u8, 141u8, 220u8, 153u8, 79u8, 28u8, 255u8, 227u8, + 239u8, 10u8, 243u8, 116u8, 0u8, 226u8, 205u8, 208u8, 91u8, 193u8, + 154u8, 81u8, 169u8, 240u8, 120u8, 48u8, 102u8, 35u8, 25u8, 136u8, 92u8, + 141u8, + ], + ) + } + #[doc = "See [`Pallet::award_child_bounty`]."] + pub fn award_child_bounty( + &self, + parent_bounty_id: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ChildBounties", + "award_child_bounty", + types::AwardChildBounty { parent_bounty_id, child_bounty_id, beneficiary }, + [ + 45u8, 172u8, 88u8, 8u8, 142u8, 34u8, 30u8, 132u8, 61u8, 31u8, 187u8, + 174u8, 21u8, 5u8, 248u8, 185u8, 142u8, 193u8, 29u8, 83u8, 225u8, 213u8, + 153u8, 247u8, 67u8, 219u8, 58u8, 206u8, 102u8, 55u8, 218u8, 154u8, + ], + ) + } + #[doc = "See [`Pallet::claim_child_bounty`]."] + pub fn claim_child_bounty( + &self, + parent_bounty_id: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ChildBounties", + "claim_child_bounty", + types::ClaimChildBounty { parent_bounty_id, child_bounty_id }, + [ + 114u8, 134u8, 242u8, 240u8, 103u8, 141u8, 181u8, 214u8, 193u8, 222u8, + 23u8, 19u8, 68u8, 174u8, 190u8, 60u8, 94u8, 235u8, 14u8, 115u8, 155u8, + 199u8, 0u8, 106u8, 37u8, 144u8, 92u8, 188u8, 2u8, 149u8, 235u8, 244u8, + ], + ) + } + #[doc = "See [`Pallet::close_child_bounty`]."] + pub fn close_child_bounty( + &self, + parent_bounty_id: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ChildBounties", + "close_child_bounty", + types::CloseChildBounty { parent_bounty_id, child_bounty_id }, + [ + 121u8, 20u8, 81u8, 13u8, 102u8, 102u8, 162u8, 24u8, 133u8, 35u8, 203u8, + 58u8, 28u8, 195u8, 114u8, 31u8, 254u8, 252u8, 118u8, 57u8, 30u8, 211u8, + 217u8, 124u8, 148u8, 244u8, 144u8, 224u8, 39u8, 155u8, 162u8, 91u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_child_bounties::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A child-bounty is added."] + pub struct Added { + pub index: ::core::primitive::u32, + pub child_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Added { + const PALLET: &'static str = "ChildBounties"; + const EVENT: &'static str = "Added"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A child-bounty is awarded to a beneficiary."] + pub struct Awarded { + pub index: ::core::primitive::u32, + pub child_index: ::core::primitive::u32, + pub beneficiary: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Awarded { + const PALLET: &'static str = "ChildBounties"; + const EVENT: &'static str = "Awarded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A child-bounty is claimed by beneficiary."] + pub struct Claimed { + pub index: ::core::primitive::u32, + pub child_index: ::core::primitive::u32, + pub payout: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Claimed { + const PALLET: &'static str = "ChildBounties"; + const EVENT: &'static str = "Claimed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A child-bounty is cancelled."] + pub struct Canceled { + pub index: ::core::primitive::u32, + pub child_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Canceled { + const PALLET: &'static str = "ChildBounties"; + const EVENT: &'static str = "Canceled"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Number of total child bounties."] + pub fn child_bounty_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ChildBountyCount", + vec![], + [ + 206u8, 1u8, 40u8, 132u8, 51u8, 139u8, 234u8, 20u8, 89u8, 86u8, 247u8, + 107u8, 169u8, 252u8, 5u8, 180u8, 218u8, 24u8, 232u8, 94u8, 82u8, 135u8, + 24u8, 16u8, 134u8, 23u8, 201u8, 86u8, 12u8, 19u8, 199u8, 0u8, + ], + ) + } + #[doc = " Number of child bounties per parent bounty."] + #[doc = " Map of parent bounty index to number of child bounties."] + pub fn parent_child_bounties( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ParentChildBounties", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 52u8, 179u8, 242u8, 212u8, 91u8, 185u8, 176u8, 52u8, 100u8, 200u8, 1u8, + 41u8, 184u8, 234u8, 234u8, 8u8, 123u8, 252u8, 131u8, 55u8, 109u8, + 123u8, 89u8, 75u8, 101u8, 165u8, 117u8, 175u8, 92u8, 71u8, 62u8, 67u8, + ], + ) + } + #[doc = " Number of child bounties per parent bounty."] + #[doc = " Map of parent bounty index to number of child bounties."] + pub fn parent_child_bounties_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ParentChildBounties", + Vec::new(), + [ + 52u8, 179u8, 242u8, 212u8, 91u8, 185u8, 176u8, 52u8, 100u8, 200u8, 1u8, + 41u8, 184u8, 234u8, 234u8, 8u8, 123u8, 252u8, 131u8, 55u8, 109u8, + 123u8, 89u8, 75u8, 101u8, 165u8, 117u8, 175u8, 92u8, 71u8, 62u8, 67u8, + ], + ) + } + #[doc = " Child bounties that have been added."] + pub fn child_bounties( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_child_bounties::ChildBounty< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ChildBounties", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, + 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, + 154u8, 137u8, 126u8, 249u8, 238u8, 156u8, 233u8, 78u8, 28u8, 95u8, + 242u8, 147u8, + ], + ) + } + #[doc = " Child bounties that have been added."] + pub fn child_bounties_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_child_bounties::ChildBounty< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + ::core::primitive::u32, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ChildBounties", + Vec::new(), + [ + 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, + 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, + 154u8, 137u8, 126u8, 249u8, 238u8, 156u8, 233u8, 78u8, 28u8, 95u8, + 242u8, 147u8, + ], + ) + } + #[doc = " The description of each child-bounty."] + pub fn child_bounty_descriptions( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ChildBountyDescriptions", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 192u8, 0u8, 220u8, 156u8, 109u8, 65u8, 113u8, 102u8, 119u8, 0u8, 109u8, + 141u8, 211u8, 128u8, 237u8, 61u8, 28u8, 56u8, 206u8, 93u8, 183u8, 74u8, + 192u8, 220u8, 76u8, 175u8, 85u8, 105u8, 179u8, 11u8, 164u8, 100u8, + ], + ) + } + #[doc = " The description of each child-bounty."] + pub fn child_bounty_descriptions_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ChildBountyDescriptions", + Vec::new(), + [ + 192u8, 0u8, 220u8, 156u8, 109u8, 65u8, 113u8, 102u8, 119u8, 0u8, 109u8, + 141u8, 211u8, 128u8, 237u8, 61u8, 28u8, 56u8, 206u8, 93u8, 183u8, 74u8, + 192u8, 220u8, 76u8, 175u8, 85u8, 105u8, 179u8, 11u8, 164u8, 100u8, + ], + ) + } + #[doc = " The cumulative child-bounty curator fee for each parent bounty."] + pub fn children_curator_fees( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ChildrenCuratorFees", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 32u8, 16u8, 190u8, 193u8, 6u8, 80u8, 163u8, 16u8, 85u8, 111u8, 39u8, + 141u8, 209u8, 70u8, 213u8, 167u8, 22u8, 12u8, 93u8, 17u8, 104u8, 94u8, + 129u8, 37u8, 179u8, 41u8, 156u8, 117u8, 39u8, 202u8, 227u8, 235u8, + ], + ) + } + #[doc = " The cumulative child-bounty curator fee for each parent bounty."] + pub fn children_curator_fees_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ChildBounties", + "ChildrenCuratorFees", + Vec::new(), + [ + 32u8, 16u8, 190u8, 193u8, 6u8, 80u8, 163u8, 16u8, 85u8, 111u8, 39u8, + 141u8, 209u8, 70u8, 213u8, 167u8, 22u8, 12u8, 93u8, 17u8, 104u8, 94u8, + 129u8, 37u8, 179u8, 41u8, 156u8, 117u8, 39u8, 202u8, 227u8, 235u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Maximum number of child bounties that can be added to a parent bounty."] + pub fn max_active_child_bounty_count( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ChildBounties", + "MaxActiveChildBountyCount", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Minimum value for a child-bounty."] + pub fn child_bounty_value_minimum( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "ChildBounties", + "ChildBountyValueMinimum", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + } + } + } + pub mod election_provider_multi_phase { + use super::{root_mod, runtime_types}; + #[doc = "Error of the pallet that can be returned in response to dispatches."] + pub type Error = runtime_types::pallet_election_provider_multi_phase::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_election_provider_multi_phase::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubmitUnsigned { + pub raw_solution: ::std::boxed::Box< + runtime_types::pallet_election_provider_multi_phase::RawSolution< + runtime_types::paseo_runtime::NposCompactSolution16, + >, + >, + pub witness: + runtime_types::pallet_election_provider_multi_phase::SolutionOrSnapshotSize, + } + impl ::subxt::blocks::StaticExtrinsic for SubmitUnsigned { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const CALL: &'static str = "submit_unsigned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMinimumUntrustedScore { + pub maybe_next_score: + ::core::option::Option, + } + impl ::subxt::blocks::StaticExtrinsic for SetMinimumUntrustedScore { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const CALL: &'static str = "set_minimum_untrusted_score"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetEmergencyElectionResult { + pub supports: ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::sp_npos_elections::Support<::subxt::utils::AccountId32>, + )>, + } + impl ::subxt::blocks::StaticExtrinsic for SetEmergencyElectionResult { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const CALL: &'static str = "set_emergency_election_result"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Submit { + pub raw_solution: ::std::boxed::Box< + runtime_types::pallet_election_provider_multi_phase::RawSolution< + runtime_types::paseo_runtime::NposCompactSolution16, + >, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Submit { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const CALL: &'static str = "submit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GovernanceFallback { + pub maybe_max_voters: ::core::option::Option<::core::primitive::u32>, + pub maybe_max_targets: ::core::option::Option<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for GovernanceFallback { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const CALL: &'static str = "governance_fallback"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::submit_unsigned`]."] + pub fn submit_unsigned( + &self, + raw_solution: runtime_types::pallet_election_provider_multi_phase::RawSolution< + runtime_types::paseo_runtime::NposCompactSolution16, + >, + witness : runtime_types :: pallet_election_provider_multi_phase :: SolutionOrSnapshotSize, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ElectionProviderMultiPhase", + "submit_unsigned", + types::SubmitUnsigned { + raw_solution: ::std::boxed::Box::new(raw_solution), + witness, + }, + [ + 237u8, 199u8, 102u8, 43u8, 103u8, 215u8, 145u8, 93u8, 71u8, 191u8, + 61u8, 144u8, 21u8, 58u8, 30u8, 51u8, 190u8, 219u8, 45u8, 66u8, 216u8, + 19u8, 62u8, 123u8, 197u8, 53u8, 249u8, 205u8, 117u8, 35u8, 32u8, 13u8, + ], + ) + } + #[doc = "See [`Pallet::set_minimum_untrusted_score`]."] + pub fn set_minimum_untrusted_score( + &self, + maybe_next_score: ::core::option::Option< + runtime_types::sp_npos_elections::ElectionScore, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ElectionProviderMultiPhase", + "set_minimum_untrusted_score", + types::SetMinimumUntrustedScore { maybe_next_score }, + [ + 244u8, 246u8, 85u8, 56u8, 156u8, 145u8, 169u8, 106u8, 16u8, 206u8, + 102u8, 216u8, 150u8, 180u8, 87u8, 153u8, 75u8, 177u8, 185u8, 55u8, + 37u8, 252u8, 214u8, 127u8, 103u8, 169u8, 198u8, 55u8, 10u8, 179u8, + 121u8, 219u8, + ], + ) + } + #[doc = "See [`Pallet::set_emergency_election_result`]."] + pub fn set_emergency_election_result( + &self, + supports: ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::sp_npos_elections::Support<::subxt::utils::AccountId32>, + )>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ElectionProviderMultiPhase", + "set_emergency_election_result", + types::SetEmergencyElectionResult { supports }, + [ + 6u8, 170u8, 228u8, 255u8, 61u8, 131u8, 137u8, 36u8, 135u8, 91u8, 183u8, + 94u8, 172u8, 205u8, 113u8, 69u8, 191u8, 255u8, 223u8, 152u8, 255u8, + 160u8, 205u8, 51u8, 140u8, 183u8, 101u8, 38u8, 185u8, 100u8, 92u8, + 87u8, + ], + ) + } + #[doc = "See [`Pallet::submit`]."] + pub fn submit( + &self, + raw_solution: runtime_types::pallet_election_provider_multi_phase::RawSolution< + runtime_types::paseo_runtime::NposCompactSolution16, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ElectionProviderMultiPhase", + "submit", + types::Submit { raw_solution: ::std::boxed::Box::new(raw_solution) }, + [ + 55u8, 254u8, 53u8, 183u8, 136u8, 93u8, 56u8, 39u8, 98u8, 132u8, 8u8, + 38u8, 92u8, 38u8, 199u8, 43u8, 20u8, 86u8, 114u8, 240u8, 31u8, 72u8, + 141u8, 39u8, 73u8, 116u8, 250u8, 249u8, 119u8, 36u8, 244u8, 137u8, + ], + ) + } + #[doc = "See [`Pallet::governance_fallback`]."] + pub fn governance_fallback( + &self, + maybe_max_voters: ::core::option::Option<::core::primitive::u32>, + maybe_max_targets: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ElectionProviderMultiPhase", + "governance_fallback", + types::GovernanceFallback { maybe_max_voters, maybe_max_targets }, + [ + 10u8, 56u8, 159u8, 48u8, 56u8, 246u8, 49u8, 9u8, 132u8, 156u8, 86u8, + 162u8, 52u8, 58u8, 175u8, 128u8, 12u8, 185u8, 203u8, 18u8, 99u8, 219u8, + 75u8, 13u8, 52u8, 40u8, 125u8, 212u8, 84u8, 147u8, 222u8, 17u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_election_provider_multi_phase::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A solution was stored with the given compute."] + #[doc = ""] + #[doc = "The `origin` indicates the origin of the solution. If `origin` is `Some(AccountId)`,"] + #[doc = "the stored solution was submited in the signed phase by a miner with the `AccountId`."] + #[doc = "Otherwise, the solution was stored either during the unsigned phase or by"] + #[doc = "`T::ForceOrigin`. The `bool` is `true` when a previous solution was ejected to make"] + #[doc = "room for this one."] + pub struct SolutionStored { + pub compute: runtime_types::pallet_election_provider_multi_phase::ElectionCompute, + pub origin: ::core::option::Option<::subxt::utils::AccountId32>, + pub prev_ejected: ::core::primitive::bool, + } + impl ::subxt::events::StaticEvent for SolutionStored { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const EVENT: &'static str = "SolutionStored"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The election has been finalized, with the given computation and score."] + pub struct ElectionFinalized { + pub compute: runtime_types::pallet_election_provider_multi_phase::ElectionCompute, + pub score: runtime_types::sp_npos_elections::ElectionScore, + } + impl ::subxt::events::StaticEvent for ElectionFinalized { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const EVENT: &'static str = "ElectionFinalized"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An election failed."] + #[doc = ""] + #[doc = "Not much can be said about which computes failed in the process."] + pub struct ElectionFailed; + impl ::subxt::events::StaticEvent for ElectionFailed { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const EVENT: &'static str = "ElectionFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account has been rewarded for their signed submission being finalized."] + pub struct Rewarded { + pub account: ::subxt::utils::AccountId32, + pub value: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Rewarded { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const EVENT: &'static str = "Rewarded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account has been slashed for submitting an invalid signed submission."] + pub struct Slashed { + pub account: ::subxt::utils::AccountId32, + pub value: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Slashed { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const EVENT: &'static str = "Slashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "There was a phase transition in a given round."] + pub struct PhaseTransitioned { + pub from: runtime_types::pallet_election_provider_multi_phase::Phase< + ::core::primitive::u32, + >, + pub to: runtime_types::pallet_election_provider_multi_phase::Phase< + ::core::primitive::u32, + >, + pub round: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for PhaseTransitioned { + const PALLET: &'static str = "ElectionProviderMultiPhase"; + const EVENT: &'static str = "PhaseTransitioned"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Internal counter for the number of rounds."] + #[doc = ""] + #[doc = " This is useful for de-duplication of transactions submitted to the pool, and general"] + #[doc = " diagnostics of the pallet."] + #[doc = ""] + #[doc = " This is merely incremented once per every time that an upstream `elect` is called."] + pub fn round( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "Round", + vec![], + [ + 37u8, 2u8, 47u8, 240u8, 18u8, 213u8, 214u8, 74u8, 57u8, 4u8, 103u8, + 253u8, 45u8, 17u8, 123u8, 203u8, 173u8, 170u8, 234u8, 109u8, 139u8, + 143u8, 216u8, 3u8, 161u8, 5u8, 0u8, 106u8, 181u8, 214u8, 170u8, 105u8, + ], + ) + } + #[doc = " Current phase."] + pub fn current_phase( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_election_provider_multi_phase::Phase< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "CurrentPhase", + vec![], + [ + 230u8, 7u8, 51u8, 158u8, 77u8, 36u8, 148u8, 175u8, 138u8, 205u8, 195u8, + 236u8, 66u8, 148u8, 0u8, 77u8, 160u8, 249u8, 128u8, 58u8, 189u8, 48u8, + 195u8, 198u8, 115u8, 251u8, 13u8, 206u8, 163u8, 180u8, 108u8, 10u8, + ], + ) + } + #[doc = " Current best solution, signed or unsigned, queued to be returned upon `elect`."] + #[doc = ""] + #[doc = " Always sorted by score."] + pub fn queued_solution( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_election_provider_multi_phase::ReadySolution, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "QueuedSolution", + vec![], + [ + 70u8, 22u8, 249u8, 41u8, 72u8, 8u8, 99u8, 121u8, 102u8, 128u8, 244u8, + 104u8, 208u8, 244u8, 113u8, 122u8, 118u8, 17u8, 65u8, 78u8, 165u8, + 129u8, 117u8, 36u8, 244u8, 243u8, 153u8, 87u8, 46u8, 116u8, 103u8, + 43u8, + ], + ) + } + #[doc = " Snapshot data of the round."] + #[doc = ""] + #[doc = " This is created at the beginning of the signed phase and cleared upon calling `elect`."] + pub fn snapshot( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_election_provider_multi_phase::RoundSnapshot< + ::subxt::utils::AccountId32, + ( + ::subxt::utils::AccountId32, + ::core::primitive::u64, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::subxt::utils::AccountId32, + >, + ), + >, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "Snapshot", + vec![], + [ + 103u8, 204u8, 76u8, 156u8, 154u8, 95u8, 115u8, 109u8, 135u8, 17u8, 9u8, + 137u8, 3u8, 184u8, 111u8, 198u8, 216u8, 3u8, 78u8, 115u8, 101u8, 235u8, + 52u8, 235u8, 245u8, 58u8, 191u8, 144u8, 61u8, 204u8, 159u8, 55u8, + ], + ) + } + #[doc = " Desired number of targets to elect for this round."] + #[doc = ""] + #[doc = " Only exists when [`Snapshot`] is present."] + pub fn desired_targets( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "DesiredTargets", + vec![], + [ + 67u8, 241u8, 33u8, 113u8, 62u8, 173u8, 233u8, 76u8, 99u8, 12u8, 61u8, + 237u8, 21u8, 252u8, 39u8, 37u8, 86u8, 167u8, 173u8, 53u8, 238u8, 172u8, + 97u8, 59u8, 27u8, 164u8, 163u8, 76u8, 140u8, 37u8, 159u8, 250u8, + ], + ) + } + #[doc = " The metadata of the [`RoundSnapshot`]"] + #[doc = ""] + #[doc = " Only exists when [`Snapshot`] is present."] + pub fn snapshot_metadata( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_election_provider_multi_phase::SolutionOrSnapshotSize, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "SnapshotMetadata", + vec![], + [ + 48u8, 121u8, 12u8, 130u8, 174u8, 100u8, 114u8, 183u8, 83u8, 63u8, 44u8, + 147u8, 242u8, 223u8, 22u8, 107u8, 175u8, 182u8, 178u8, 254u8, 12u8, + 189u8, 37u8, 117u8, 95u8, 21u8, 19u8, 167u8, 56u8, 205u8, 49u8, 100u8, + ], + ) + } + #[doc = " The next index to be assigned to an incoming signed submission."] + #[doc = ""] + #[doc = " Every accepted submission is assigned a unique index; that index is bound to that particular"] + #[doc = " submission for the duration of the election. On election finalization, the next index is"] + #[doc = " reset to 0."] + #[doc = ""] + #[doc = " We can't just use `SignedSubmissionIndices.len()`, because that's a bounded set; past its"] + #[doc = " capacity, it will simply saturate. We can't just iterate over `SignedSubmissionsMap`,"] + #[doc = " because iteration is slow. Instead, we store the value here."] + pub fn signed_submission_next_index( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "SignedSubmissionNextIndex", + vec![], + [ + 188u8, 126u8, 77u8, 166u8, 42u8, 81u8, 12u8, 239u8, 195u8, 16u8, 132u8, + 178u8, 217u8, 158u8, 28u8, 19u8, 201u8, 148u8, 47u8, 105u8, 178u8, + 115u8, 17u8, 78u8, 71u8, 178u8, 205u8, 171u8, 71u8, 52u8, 194u8, 82u8, + ], + ) + } + #[doc = " A sorted, bounded vector of `(score, block_number, index)`, where each `index` points to a"] + #[doc = " value in `SignedSubmissions`."] + #[doc = ""] + #[doc = " We never need to process more than a single signed submission at a time. Signed submissions"] + #[doc = " can be quite large, so we're willing to pay the cost of multiple database accesses to access"] + #[doc = " them one at a time instead of reading and decoding all of them at once."] + pub fn signed_submission_indices( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::sp_npos_elections::ElectionScore, + ::core::primitive::u32, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "SignedSubmissionIndices", + vec![], + [ + 245u8, 24u8, 83u8, 165u8, 229u8, 167u8, 35u8, 107u8, 255u8, 77u8, 34u8, + 0u8, 188u8, 159u8, 175u8, 68u8, 232u8, 114u8, 238u8, 231u8, 252u8, + 169u8, 127u8, 232u8, 206u8, 183u8, 191u8, 227u8, 176u8, 46u8, 51u8, + 147u8, + ], + ) + } + #[doc = " Unchecked, signed solutions."] + #[doc = ""] + #[doc = " Together with `SubmissionIndices`, this stores a bounded set of `SignedSubmissions` while"] + #[doc = " allowing us to keep only a single one in memory at a time."] + #[doc = ""] + #[doc = " Twox note: the key of the map is an auto-incrementing index which users cannot inspect or"] + #[doc = " affect; we shouldn't need a cryptographically secure hasher."] + pub fn signed_submissions_map( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_election_provider_multi_phase::signed::SignedSubmission< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + runtime_types::paseo_runtime::NposCompactSolution16, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "SignedSubmissionsMap", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 118u8, 12u8, 234u8, 73u8, 238u8, 134u8, 20u8, 105u8, 248u8, 39u8, 23u8, + 96u8, 157u8, 187u8, 14u8, 143u8, 135u8, 121u8, 77u8, 90u8, 154u8, + 221u8, 139u8, 28u8, 34u8, 8u8, 19u8, 246u8, 65u8, 155u8, 84u8, 53u8, + ], + ) + } + #[doc = " Unchecked, signed solutions."] + #[doc = ""] + #[doc = " Together with `SubmissionIndices`, this stores a bounded set of `SignedSubmissions` while"] + #[doc = " allowing us to keep only a single one in memory at a time."] + #[doc = ""] + #[doc = " Twox note: the key of the map is an auto-incrementing index which users cannot inspect or"] + #[doc = " affect; we shouldn't need a cryptographically secure hasher."] + pub fn signed_submissions_map_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_election_provider_multi_phase::signed::SignedSubmission< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + runtime_types::paseo_runtime::NposCompactSolution16, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "SignedSubmissionsMap", + Vec::new(), + [ + 118u8, 12u8, 234u8, 73u8, 238u8, 134u8, 20u8, 105u8, 248u8, 39u8, 23u8, + 96u8, 157u8, 187u8, 14u8, 143u8, 135u8, 121u8, 77u8, 90u8, 154u8, + 221u8, 139u8, 28u8, 34u8, 8u8, 19u8, 246u8, 65u8, 155u8, 84u8, 53u8, + ], + ) + } + #[doc = " The minimum score that each 'untrusted' solution must attain in order to be considered"] + #[doc = " feasible."] + #[doc = ""] + #[doc = " Can be set via `set_minimum_untrusted_score`."] + pub fn minimum_untrusted_score( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_npos_elections::ElectionScore, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ElectionProviderMultiPhase", + "MinimumUntrustedScore", + vec![], + [ + 22u8, 253u8, 11u8, 17u8, 171u8, 145u8, 175u8, 97u8, 137u8, 148u8, 36u8, + 232u8, 55u8, 174u8, 75u8, 173u8, 133u8, 5u8, 227u8, 161u8, 28u8, 62u8, + 188u8, 249u8, 123u8, 102u8, 186u8, 180u8, 226u8, 216u8, 71u8, 249u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Duration of the unsigned phase."] + pub fn unsigned_phase( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "UnsignedPhase", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Duration of the signed phase."] + pub fn signed_phase(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "SignedPhase", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The minimum amount of improvement to the solution score that defines a solution as"] + #[doc = " \"better\" in the Signed phase."] + pub fn better_signed_threshold( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "BetterSignedThreshold", + [ + 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, + 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, + 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, + ], + ) + } + #[doc = " The minimum amount of improvement to the solution score that defines a solution as"] + #[doc = " \"better\" in the Unsigned phase."] + pub fn better_unsigned_threshold( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "BetterUnsignedThreshold", + [ + 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, + 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, + 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, + ], + ) + } + #[doc = " The repeat threshold of the offchain worker."] + #[doc = ""] + #[doc = " For example, if it is 5, that means that at least 5 blocks will elapse between attempts"] + #[doc = " to submit the worker's solution."] + pub fn offchain_repeat( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "OffchainRepeat", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The priority of the unsigned transaction submitted in the unsigned-phase"] + pub fn miner_tx_priority( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "MinerTxPriority", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + #[doc = " Maximum number of signed submissions that can be queued."] + #[doc = ""] + #[doc = " It is best to avoid adjusting this during an election, as it impacts downstream data"] + #[doc = " structures. In particular, `SignedSubmissionIndices` is bounded on this value. If you"] + #[doc = " update this value during an election, you _must_ ensure that"] + #[doc = " `SignedSubmissionIndices.len()` is less than or equal to the new value. Otherwise,"] + #[doc = " attempts to submit new solutions may cause a runtime panic."] + pub fn signed_max_submissions( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "SignedMaxSubmissions", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Maximum weight of a signed solution."] + #[doc = ""] + #[doc = " If [`Config::MinerConfig`] is being implemented to submit signed solutions (outside of"] + #[doc = " this pallet), then [`MinerConfig::solution_weight`] is used to compare against"] + #[doc = " this value."] + pub fn signed_max_weight( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "SignedMaxWeight", + [ + 149u8, 252u8, 129u8, 80u8, 169u8, 36u8, 79u8, 127u8, 240u8, 156u8, + 56u8, 202u8, 219u8, 86u8, 5u8, 65u8, 245u8, 148u8, 138u8, 243u8, 210u8, + 128u8, 234u8, 216u8, 240u8, 219u8, 123u8, 235u8, 21u8, 158u8, 237u8, + 112u8, + ], + ) + } + #[doc = " The maximum amount of unchecked solutions to refund the call fee for."] + pub fn signed_max_refunds( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "SignedMaxRefunds", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Base reward for a signed solution"] + pub fn signed_reward_base( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "SignedRewardBase", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " Per-byte deposit for a signed solution."] + pub fn signed_deposit_byte( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "SignedDepositByte", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " Per-weight deposit for a signed solution."] + pub fn signed_deposit_weight( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "SignedDepositWeight", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The maximum number of winners that can be elected by this `ElectionProvider`"] + #[doc = " implementation."] + #[doc = ""] + #[doc = " Note: This must always be greater or equal to `T::DataProvider::desired_targets()`."] + pub fn max_winners(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "MaxWinners", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + pub fn miner_max_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "MinerMaxLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + pub fn miner_max_weight( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "MinerMaxWeight", + [ + 149u8, 252u8, 129u8, 80u8, 169u8, 36u8, 79u8, 127u8, 240u8, 156u8, + 56u8, 202u8, 219u8, 86u8, 5u8, 65u8, 245u8, 148u8, 138u8, 243u8, 210u8, + 128u8, 234u8, 216u8, 240u8, 219u8, 123u8, 235u8, 21u8, 158u8, 237u8, + 112u8, + ], + ) + } + pub fn miner_max_votes_per_voter( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "MinerMaxVotesPerVoter", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + pub fn miner_max_winners( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ElectionProviderMultiPhase", + "MinerMaxWinners", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod voter_list { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_bags_list::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_bags_list::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Rebag { + pub dislocated: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for Rebag { + const PALLET: &'static str = "VoterList"; + const CALL: &'static str = "rebag"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PutInFrontOf { + pub lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for PutInFrontOf { + const PALLET: &'static str = "VoterList"; + const CALL: &'static str = "put_in_front_of"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PutInFrontOfOther { + pub heavier: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for PutInFrontOfOther { + const PALLET: &'static str = "VoterList"; + const CALL: &'static str = "put_in_front_of_other"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::rebag`]."] + pub fn rebag( + &self, + dislocated: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "VoterList", + "rebag", + types::Rebag { dislocated }, + [ + 9u8, 111u8, 68u8, 237u8, 32u8, 21u8, 214u8, 84u8, 11u8, 39u8, 94u8, + 43u8, 198u8, 46u8, 91u8, 147u8, 194u8, 3u8, 35u8, 171u8, 95u8, 248u8, + 78u8, 0u8, 7u8, 99u8, 2u8, 124u8, 139u8, 42u8, 109u8, 226u8, + ], + ) + } + #[doc = "See [`Pallet::put_in_front_of`]."] + pub fn put_in_front_of( + &self, + lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "VoterList", + "put_in_front_of", + types::PutInFrontOf { lighter }, + [ + 61u8, 76u8, 164u8, 177u8, 140u8, 44u8, 127u8, 198u8, 195u8, 241u8, + 36u8, 80u8, 32u8, 85u8, 183u8, 130u8, 137u8, 128u8, 16u8, 203u8, 184u8, + 19u8, 151u8, 55u8, 10u8, 194u8, 162u8, 8u8, 211u8, 110u8, 126u8, 75u8, + ], + ) + } + #[doc = "See [`Pallet::put_in_front_of_other`]."] + pub fn put_in_front_of_other( + &self, + heavier: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "VoterList", + "put_in_front_of_other", + types::PutInFrontOfOther { heavier, lighter }, + [ + 27u8, 9u8, 204u8, 221u8, 221u8, 253u8, 36u8, 10u8, 251u8, 149u8, 248u8, + 137u8, 69u8, 108u8, 9u8, 253u8, 106u8, 241u8, 139u8, 255u8, 103u8, + 27u8, 22u8, 69u8, 44u8, 10u8, 181u8, 252u8, 135u8, 69u8, 126u8, 205u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_bags_list::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Moved an account from one bag to another."] + pub struct Rebagged { + pub who: ::subxt::utils::AccountId32, + pub from: ::core::primitive::u64, + pub to: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for Rebagged { + const PALLET: &'static str = "VoterList"; + const EVENT: &'static str = "Rebagged"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Updated the score of some account to the given amount."] + pub struct ScoreUpdated { + pub who: ::subxt::utils::AccountId32, + pub new_score: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for ScoreUpdated { + const PALLET: &'static str = "VoterList"; + const EVENT: &'static str = "ScoreUpdated"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " A single node, within some bag."] + #[doc = ""] + #[doc = " Nodes store links forward and back within their respective bags."] + pub fn list_nodes( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_bags_list::list::Node, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "VoterList", + "ListNodes", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 240u8, 139u8, 78u8, 185u8, 159u8, 185u8, 33u8, 229u8, 171u8, 222u8, + 54u8, 81u8, 104u8, 170u8, 49u8, 232u8, 29u8, 117u8, 193u8, 68u8, 225u8, + 180u8, 46u8, 199u8, 100u8, 26u8, 99u8, 216u8, 74u8, 248u8, 73u8, 144u8, + ], + ) + } + #[doc = " A single node, within some bag."] + #[doc = ""] + #[doc = " Nodes store links forward and back within their respective bags."] + pub fn list_nodes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_bags_list::list::Node, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "VoterList", + "ListNodes", + Vec::new(), + [ + 240u8, 139u8, 78u8, 185u8, 159u8, 185u8, 33u8, 229u8, 171u8, 222u8, + 54u8, 81u8, 104u8, 170u8, 49u8, 232u8, 29u8, 117u8, 193u8, 68u8, 225u8, + 180u8, 46u8, 199u8, 100u8, 26u8, 99u8, 216u8, 74u8, 248u8, 73u8, 144u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_list_nodes( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "VoterList", + "CounterForListNodes", + vec![], + [ + 126u8, 150u8, 201u8, 81u8, 155u8, 79u8, 50u8, 48u8, 120u8, 170u8, 3u8, + 104u8, 112u8, 254u8, 106u8, 46u8, 108u8, 126u8, 158u8, 245u8, 95u8, + 88u8, 236u8, 89u8, 79u8, 172u8, 13u8, 146u8, 202u8, 151u8, 122u8, + 132u8, + ], + ) + } + #[doc = " A bag stored in storage."] + #[doc = ""] + #[doc = " Stores a `Bag` struct, which stores head and tail pointers to itself."] + pub fn list_bags( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_bags_list::list::Bag, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "VoterList", + "ListBags", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 98u8, 52u8, 177u8, 147u8, 244u8, 169u8, 45u8, 213u8, 76u8, 163u8, 47u8, + 96u8, 197u8, 245u8, 17u8, 208u8, 86u8, 15u8, 233u8, 156u8, 165u8, 44u8, + 164u8, 202u8, 117u8, 167u8, 209u8, 193u8, 218u8, 235u8, 140u8, 158u8, + ], + ) + } + #[doc = " A bag stored in storage."] + #[doc = ""] + #[doc = " Stores a `Bag` struct, which stores head and tail pointers to itself."] + pub fn list_bags_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_bags_list::list::Bag, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "VoterList", + "ListBags", + Vec::new(), + [ + 98u8, 52u8, 177u8, 147u8, 244u8, 169u8, 45u8, 213u8, 76u8, 163u8, 47u8, + 96u8, 197u8, 245u8, 17u8, 208u8, 86u8, 15u8, 233u8, 156u8, 165u8, 44u8, + 164u8, 202u8, 117u8, 167u8, 209u8, 193u8, 218u8, 235u8, 140u8, 158u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The list of thresholds separating the various bags."] + #[doc = ""] + #[doc = " Ids are separated into unsorted bags according to their score. This specifies the"] + #[doc = " thresholds separating the bags. An id's bag is the largest bag for which the id's score"] + #[doc = " is less than or equal to its upper threshold."] + #[doc = ""] + #[doc = " When ids are iterated, higher bags are iterated completely before lower bags. This means"] + #[doc = " that iteration is _semi-sorted_: ids of higher score tend to come before ids of lower"] + #[doc = " score, but peer ids within a particular bag are sorted in insertion order."] + #[doc = ""] + #[doc = " # Expressing the constant"] + #[doc = ""] + #[doc = " This constant must be sorted in strictly increasing order. Duplicate items are not"] + #[doc = " permitted."] + #[doc = ""] + #[doc = " There is an implied upper limit of `Score::MAX`; that value does not need to be"] + #[doc = " specified within the bag. For any two threshold lists, if one ends with"] + #[doc = " `Score::MAX`, the other one does not, and they are otherwise equal, the two"] + #[doc = " lists will behave identically."] + #[doc = ""] + #[doc = " # Calculation"] + #[doc = ""] + #[doc = " It is recommended to generate the set of thresholds in a geometric series, such that"] + #[doc = " there exists some constant ratio such that `threshold[k + 1] == (threshold[k] *"] + #[doc = " constant_ratio).max(threshold[k] + 1)` for all `k`."] + #[doc = ""] + #[doc = " The helpers in the `/utils/frame/generate-bags` module can simplify this calculation."] + #[doc = ""] + #[doc = " # Examples"] + #[doc = ""] + #[doc = " - If `BagThresholds::get().is_empty()`, then all ids are put into the same bag, and"] + #[doc = " iteration is strictly in insertion order."] + #[doc = " - If `BagThresholds::get().len() == 64`, and the thresholds are determined according to"] + #[doc = " the procedure given above, then the constant ratio is equal to 2."] + #[doc = " - If `BagThresholds::get().len() == 200`, and the thresholds are determined according to"] + #[doc = " the procedure given above, then the constant ratio is approximately equal to 1.248."] + #[doc = " - If the threshold list begins `[1, 2, 3, ...]`, then an id with score 0 or 1 will fall"] + #[doc = " into bag 0, an id with score 2 will fall into bag 1, etc."] + #[doc = ""] + #[doc = " # Migration"] + #[doc = ""] + #[doc = " In the event that this list ever changes, a copy of the old bags list must be retained."] + #[doc = " With that `List::migrate` can be called, which will perform the appropriate migration."] + pub fn bag_thresholds( + &self, + ) -> ::subxt::constants::Address<::std::vec::Vec<::core::primitive::u64>> + { + ::subxt::constants::Address::new_static( + "VoterList", + "BagThresholds", + [ + 215u8, 118u8, 183u8, 172u8, 4u8, 42u8, 248u8, 108u8, 4u8, 110u8, 43u8, + 165u8, 228u8, 7u8, 36u8, 30u8, 135u8, 184u8, 56u8, 201u8, 107u8, 68u8, + 25u8, 164u8, 134u8, 32u8, 82u8, 107u8, 200u8, 219u8, 212u8, 198u8, + ], + ) + } + } + } + } + pub mod nomination_pools { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_nomination_pools::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_nomination_pools::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Join { + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub pool_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Join { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "join"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BondExtra { + pub extra: + runtime_types::pallet_nomination_pools::BondExtra<::core::primitive::u128>, + } + impl ::subxt::blocks::StaticExtrinsic for BondExtra { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "bond_extra"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClaimPayout; + impl ::subxt::blocks::StaticExtrinsic for ClaimPayout { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "claim_payout"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Unbond { + pub member_account: + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub unbonding_points: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for Unbond { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "unbond"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PoolWithdrawUnbonded { + pub pool_id: ::core::primitive::u32, + pub num_slashing_spans: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for PoolWithdrawUnbonded { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "pool_withdraw_unbonded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WithdrawUnbonded { + pub member_account: + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub num_slashing_spans: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for WithdrawUnbonded { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "withdraw_unbonded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Create { + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub root: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub nominator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub bouncer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for Create { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "create"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CreateWithPoolId { + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub root: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub nominator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub bouncer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub pool_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for CreateWithPoolId { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "create_with_pool_id"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Nominate { + pub pool_id: ::core::primitive::u32, + pub validators: ::std::vec::Vec<::subxt::utils::AccountId32>, + } + impl ::subxt::blocks::StaticExtrinsic for Nominate { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "nominate"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetState { + pub pool_id: ::core::primitive::u32, + pub state: runtime_types::pallet_nomination_pools::PoolState, + } + impl ::subxt::blocks::StaticExtrinsic for SetState { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "set_state"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMetadata { + pub pool_id: ::core::primitive::u32, + pub metadata: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for SetMetadata { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "set_metadata"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetConfigs { + pub min_join_bond: + runtime_types::pallet_nomination_pools::ConfigOp<::core::primitive::u128>, + pub min_create_bond: + runtime_types::pallet_nomination_pools::ConfigOp<::core::primitive::u128>, + pub max_pools: + runtime_types::pallet_nomination_pools::ConfigOp<::core::primitive::u32>, + pub max_members: + runtime_types::pallet_nomination_pools::ConfigOp<::core::primitive::u32>, + pub max_members_per_pool: + runtime_types::pallet_nomination_pools::ConfigOp<::core::primitive::u32>, + pub global_max_commission: runtime_types::pallet_nomination_pools::ConfigOp< + runtime_types::sp_arithmetic::per_things::Perbill, + >, + } + impl ::subxt::blocks::StaticExtrinsic for SetConfigs { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "set_configs"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UpdateRoles { + pub pool_id: ::core::primitive::u32, + pub new_root: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + pub new_nominator: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + pub new_bouncer: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for UpdateRoles { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "update_roles"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Chill { + pub pool_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Chill { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "chill"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BondExtraOther { + pub member: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub extra: + runtime_types::pallet_nomination_pools::BondExtra<::core::primitive::u128>, + } + impl ::subxt::blocks::StaticExtrinsic for BondExtraOther { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "bond_extra_other"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetClaimPermission { + pub permission: runtime_types::pallet_nomination_pools::ClaimPermission, + } + impl ::subxt::blocks::StaticExtrinsic for SetClaimPermission { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "set_claim_permission"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClaimPayoutOther { + pub other: ::subxt::utils::AccountId32, + } + impl ::subxt::blocks::StaticExtrinsic for ClaimPayoutOther { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "claim_payout_other"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetCommission { + pub pool_id: ::core::primitive::u32, + pub new_commission: ::core::option::Option<( + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::utils::AccountId32, + )>, + } + impl ::subxt::blocks::StaticExtrinsic for SetCommission { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "set_commission"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetCommissionMax { + pub pool_id: ::core::primitive::u32, + pub max_commission: runtime_types::sp_arithmetic::per_things::Perbill, + } + impl ::subxt::blocks::StaticExtrinsic for SetCommissionMax { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "set_commission_max"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetCommissionChangeRate { + pub pool_id: ::core::primitive::u32, + pub change_rate: runtime_types::pallet_nomination_pools::CommissionChangeRate< + ::core::primitive::u32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for SetCommissionChangeRate { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "set_commission_change_rate"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClaimCommission { + pub pool_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ClaimCommission { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "claim_commission"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AdjustPoolDeposit { + pub pool_id: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for AdjustPoolDeposit { + const PALLET: &'static str = "NominationPools"; + const CALL: &'static str = "adjust_pool_deposit"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::join`]."] + pub fn join( + &self, + amount: ::core::primitive::u128, + pool_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "join", + types::Join { amount, pool_id }, + [ + 9u8, 24u8, 209u8, 117u8, 242u8, 76u8, 192u8, 40u8, 196u8, 136u8, 158u8, + 182u8, 117u8, 140u8, 164u8, 64u8, 184u8, 160u8, 146u8, 143u8, 173u8, + 180u8, 6u8, 242u8, 203u8, 130u8, 41u8, 176u8, 158u8, 96u8, 94u8, 175u8, + ], + ) + } + #[doc = "See [`Pallet::bond_extra`]."] + pub fn bond_extra( + &self, + extra: runtime_types::pallet_nomination_pools::BondExtra< + ::core::primitive::u128, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "bond_extra", + types::BondExtra { extra }, + [ + 149u8, 176u8, 102u8, 52u8, 76u8, 227u8, 61u8, 60u8, 109u8, 187u8, 40u8, + 176u8, 163u8, 37u8, 10u8, 228u8, 164u8, 77u8, 155u8, 155u8, 14u8, + 106u8, 5u8, 177u8, 176u8, 224u8, 163u8, 28u8, 66u8, 237u8, 186u8, + 188u8, + ], + ) + } + #[doc = "See [`Pallet::claim_payout`]."] + pub fn claim_payout(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "claim_payout", + types::ClaimPayout {}, + [ + 28u8, 87u8, 180u8, 5u8, 69u8, 49u8, 121u8, 28u8, 34u8, 63u8, 78u8, + 228u8, 223u8, 12u8, 171u8, 41u8, 181u8, 137u8, 145u8, 141u8, 198u8, + 220u8, 5u8, 101u8, 173u8, 69u8, 222u8, 59u8, 111u8, 92u8, 182u8, 8u8, + ], + ) + } + #[doc = "See [`Pallet::unbond`]."] + pub fn unbond( + &self, + member_account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + unbonding_points: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "unbond", + types::Unbond { member_account, unbonding_points }, + [ + 7u8, 80u8, 46u8, 120u8, 249u8, 148u8, 126u8, 232u8, 3u8, 130u8, 61u8, + 94u8, 174u8, 151u8, 235u8, 206u8, 120u8, 48u8, 201u8, 128u8, 78u8, + 13u8, 148u8, 39u8, 70u8, 65u8, 79u8, 232u8, 204u8, 125u8, 182u8, 33u8, + ], + ) + } + #[doc = "See [`Pallet::pool_withdraw_unbonded`]."] + pub fn pool_withdraw_unbonded( + &self, + pool_id: ::core::primitive::u32, + num_slashing_spans: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "pool_withdraw_unbonded", + types::PoolWithdrawUnbonded { pool_id, num_slashing_spans }, + [ + 145u8, 39u8, 154u8, 109u8, 24u8, 233u8, 144u8, 66u8, 28u8, 252u8, + 180u8, 5u8, 54u8, 123u8, 28u8, 182u8, 26u8, 156u8, 69u8, 105u8, 226u8, + 208u8, 154u8, 34u8, 22u8, 201u8, 139u8, 104u8, 198u8, 195u8, 247u8, + 49u8, + ], + ) + } + #[doc = "See [`Pallet::withdraw_unbonded`]."] + pub fn withdraw_unbonded( + &self, + member_account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + num_slashing_spans: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "withdraw_unbonded", + types::WithdrawUnbonded { member_account, num_slashing_spans }, + [ + 69u8, 9u8, 243u8, 218u8, 41u8, 80u8, 5u8, 112u8, 23u8, 90u8, 208u8, + 120u8, 91u8, 181u8, 37u8, 159u8, 183u8, 41u8, 187u8, 212u8, 39u8, + 175u8, 90u8, 245u8, 242u8, 18u8, 220u8, 40u8, 160u8, 46u8, 214u8, + 239u8, + ], + ) + } + #[doc = "See [`Pallet::create`]."] + pub fn create( + &self, + amount: ::core::primitive::u128, + root: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + nominator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + bouncer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "create", + types::Create { amount, root, nominator, bouncer }, + [ + 75u8, 103u8, 67u8, 204u8, 44u8, 28u8, 143u8, 33u8, 194u8, 100u8, 71u8, + 143u8, 211u8, 193u8, 229u8, 119u8, 237u8, 212u8, 65u8, 62u8, 19u8, + 52u8, 14u8, 4u8, 205u8, 88u8, 156u8, 238u8, 143u8, 158u8, 144u8, 108u8, + ], + ) + } + #[doc = "See [`Pallet::create_with_pool_id`]."] + pub fn create_with_pool_id( + &self, + amount: ::core::primitive::u128, + root: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + nominator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + bouncer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pool_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "create_with_pool_id", + types::CreateWithPoolId { amount, root, nominator, bouncer, pool_id }, + [ + 41u8, 12u8, 98u8, 131u8, 99u8, 176u8, 30u8, 4u8, 227u8, 7u8, 42u8, + 158u8, 27u8, 233u8, 227u8, 230u8, 34u8, 16u8, 117u8, 203u8, 110u8, + 160u8, 68u8, 153u8, 78u8, 116u8, 191u8, 96u8, 156u8, 207u8, 223u8, + 80u8, + ], + ) + } + #[doc = "See [`Pallet::nominate`]."] + pub fn nominate( + &self, + pool_id: ::core::primitive::u32, + validators: ::std::vec::Vec<::subxt::utils::AccountId32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "nominate", + types::Nominate { pool_id, validators }, + [ + 118u8, 80u8, 137u8, 47u8, 102u8, 9u8, 20u8, 136u8, 76u8, 164u8, 161u8, + 114u8, 33u8, 159u8, 204u8, 49u8, 233u8, 199u8, 246u8, 67u8, 144u8, + 169u8, 211u8, 67u8, 12u8, 68u8, 198u8, 149u8, 87u8, 62u8, 226u8, 72u8, + ], + ) + } + #[doc = "See [`Pallet::set_state`]."] + pub fn set_state( + &self, + pool_id: ::core::primitive::u32, + state: runtime_types::pallet_nomination_pools::PoolState, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "set_state", + types::SetState { pool_id, state }, + [ + 39u8, 221u8, 24u8, 65u8, 144u8, 230u8, 228u8, 24u8, 191u8, 53u8, 171u8, + 148u8, 131u8, 45u8, 10u8, 22u8, 222u8, 240u8, 13u8, 87u8, 123u8, 182u8, + 102u8, 26u8, 124u8, 205u8, 23u8, 31u8, 25u8, 43u8, 12u8, 140u8, + ], + ) + } + #[doc = "See [`Pallet::set_metadata`]."] + pub fn set_metadata( + &self, + pool_id: ::core::primitive::u32, + metadata: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "set_metadata", + types::SetMetadata { pool_id, metadata }, + [ + 221u8, 189u8, 15u8, 232u8, 0u8, 49u8, 187u8, 67u8, 124u8, 26u8, 114u8, + 191u8, 81u8, 14u8, 253u8, 75u8, 88u8, 182u8, 136u8, 18u8, 238u8, 119u8, + 215u8, 248u8, 133u8, 160u8, 154u8, 193u8, 177u8, 140u8, 1u8, 16u8, + ], + ) + } + #[doc = "See [`Pallet::set_configs`]."] + pub fn set_configs( + &self, + min_join_bond: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u128, + >, + min_create_bond: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u128, + >, + max_pools: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u32, + >, + max_members: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u32, + >, + max_members_per_pool: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u32, + >, + global_max_commission: runtime_types::pallet_nomination_pools::ConfigOp< + runtime_types::sp_arithmetic::per_things::Perbill, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "set_configs", + types::SetConfigs { + min_join_bond, + min_create_bond, + max_pools, + max_members, + max_members_per_pool, + global_max_commission, + }, + [ + 151u8, 222u8, 184u8, 213u8, 161u8, 89u8, 162u8, 112u8, 198u8, 87u8, + 186u8, 55u8, 99u8, 197u8, 164u8, 156u8, 185u8, 199u8, 202u8, 19u8, + 44u8, 34u8, 35u8, 39u8, 129u8, 22u8, 41u8, 32u8, 27u8, 37u8, 176u8, + 107u8, + ], + ) + } + #[doc = "See [`Pallet::update_roles`]."] + pub fn update_roles( + &self, + pool_id: ::core::primitive::u32, + new_root: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + new_nominator: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + new_bouncer: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "update_roles", + types::UpdateRoles { pool_id, new_root, new_nominator, new_bouncer }, + [ + 48u8, 253u8, 39u8, 205u8, 196u8, 231u8, 254u8, 76u8, 238u8, 70u8, 2u8, + 192u8, 188u8, 240u8, 206u8, 91u8, 213u8, 98u8, 226u8, 51u8, 167u8, + 205u8, 120u8, 128u8, 40u8, 175u8, 238u8, 57u8, 147u8, 96u8, 116u8, + 133u8, + ], + ) + } + #[doc = "See [`Pallet::chill`]."] + pub fn chill( + &self, + pool_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "chill", + types::Chill { pool_id }, + [ + 65u8, 206u8, 54u8, 53u8, 37u8, 97u8, 161u8, 104u8, 62u8, 9u8, 93u8, + 236u8, 61u8, 185u8, 204u8, 245u8, 234u8, 218u8, 213u8, 40u8, 154u8, + 29u8, 244u8, 19u8, 207u8, 172u8, 142u8, 221u8, 38u8, 70u8, 39u8, 10u8, + ], + ) + } + #[doc = "See [`Pallet::bond_extra_other`]."] + pub fn bond_extra_other( + &self, + member: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + extra: runtime_types::pallet_nomination_pools::BondExtra< + ::core::primitive::u128, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "bond_extra_other", + types::BondExtraOther { member, extra }, + [ + 32u8, 200u8, 198u8, 128u8, 30u8, 21u8, 39u8, 98u8, 49u8, 4u8, 96u8, + 146u8, 169u8, 179u8, 109u8, 253u8, 168u8, 212u8, 206u8, 161u8, 116u8, + 191u8, 110u8, 189u8, 63u8, 252u8, 39u8, 107u8, 98u8, 25u8, 137u8, 0u8, + ], + ) + } + #[doc = "See [`Pallet::set_claim_permission`]."] + pub fn set_claim_permission( + &self, + permission: runtime_types::pallet_nomination_pools::ClaimPermission, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "set_claim_permission", + types::SetClaimPermission { permission }, + [ + 36u8, 137u8, 193u8, 200u8, 57u8, 46u8, 87u8, 236u8, 180u8, 170u8, 90u8, + 99u8, 137u8, 123u8, 99u8, 197u8, 113u8, 119u8, 72u8, 153u8, 207u8, + 189u8, 69u8, 89u8, 225u8, 115u8, 45u8, 32u8, 216u8, 43u8, 92u8, 135u8, + ], + ) + } + #[doc = "See [`Pallet::claim_payout_other`]."] + pub fn claim_payout_other( + &self, + other: ::subxt::utils::AccountId32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "claim_payout_other", + types::ClaimPayoutOther { other }, + [ + 202u8, 130u8, 122u8, 10u8, 159u8, 181u8, 124u8, 215u8, 23u8, 85u8, + 234u8, 178u8, 169u8, 41u8, 204u8, 226u8, 195u8, 69u8, 168u8, 88u8, + 58u8, 15u8, 3u8, 227u8, 180u8, 183u8, 62u8, 224u8, 39u8, 218u8, 75u8, + 166u8, + ], + ) + } + #[doc = "See [`Pallet::set_commission`]."] + pub fn set_commission( + &self, + pool_id: ::core::primitive::u32, + new_commission: ::core::option::Option<( + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::utils::AccountId32, + )>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "set_commission", + types::SetCommission { pool_id, new_commission }, + [ + 77u8, 139u8, 221u8, 210u8, 51u8, 57u8, 243u8, 96u8, 25u8, 0u8, 42u8, + 81u8, 80u8, 7u8, 145u8, 28u8, 17u8, 44u8, 123u8, 28u8, 130u8, 194u8, + 153u8, 139u8, 222u8, 166u8, 169u8, 184u8, 46u8, 178u8, 236u8, 246u8, + ], + ) + } + #[doc = "See [`Pallet::set_commission_max`]."] + pub fn set_commission_max( + &self, + pool_id: ::core::primitive::u32, + max_commission: runtime_types::sp_arithmetic::per_things::Perbill, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "set_commission_max", + types::SetCommissionMax { pool_id, max_commission }, + [ + 198u8, 127u8, 255u8, 230u8, 96u8, 142u8, 9u8, 220u8, 204u8, 82u8, + 192u8, 76u8, 140u8, 52u8, 94u8, 80u8, 153u8, 30u8, 162u8, 21u8, 71u8, + 31u8, 218u8, 160u8, 254u8, 180u8, 160u8, 219u8, 163u8, 30u8, 193u8, + 6u8, + ], + ) + } + #[doc = "See [`Pallet::set_commission_change_rate`]."] + pub fn set_commission_change_rate( + &self, + pool_id: ::core::primitive::u32, + change_rate: runtime_types::pallet_nomination_pools::CommissionChangeRate< + ::core::primitive::u32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "set_commission_change_rate", + types::SetCommissionChangeRate { pool_id, change_rate }, + [ + 20u8, 200u8, 249u8, 176u8, 168u8, 210u8, 180u8, 77u8, 93u8, 28u8, 0u8, + 79u8, 29u8, 172u8, 176u8, 38u8, 178u8, 13u8, 99u8, 240u8, 210u8, 108u8, + 245u8, 95u8, 197u8, 235u8, 143u8, 239u8, 190u8, 245u8, 63u8, 108u8, + ], + ) + } + #[doc = "See [`Pallet::claim_commission`]."] + pub fn claim_commission( + &self, + pool_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "claim_commission", + types::ClaimCommission { pool_id }, + [ + 51u8, 64u8, 163u8, 230u8, 2u8, 119u8, 68u8, 5u8, 154u8, 4u8, 84u8, + 149u8, 9u8, 195u8, 173u8, 37u8, 98u8, 48u8, 188u8, 65u8, 81u8, 11u8, + 64u8, 254u8, 126u8, 62u8, 29u8, 204u8, 92u8, 230u8, 240u8, 91u8, + ], + ) + } + #[doc = "See [`Pallet::adjust_pool_deposit`]."] + pub fn adjust_pool_deposit( + &self, + pool_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NominationPools", + "adjust_pool_deposit", + types::AdjustPoolDeposit { pool_id }, + [ + 5u8, 203u8, 109u8, 141u8, 29u8, 58u8, 216u8, 21u8, 219u8, 139u8, 129u8, + 33u8, 49u8, 196u8, 255u8, 49u8, 79u8, 218u8, 24u8, 250u8, 254u8, 64u8, + 215u8, 33u8, 223u8, 205u8, 117u8, 209u8, 138u8, 115u8, 174u8, 181u8, + ], + ) + } + } + } + #[doc = "Events of this pallet."] + pub type Event = runtime_types::pallet_nomination_pools::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A pool has been created."] + pub struct Created { + pub depositor: ::subxt::utils::AccountId32, + pub pool_id: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Created { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "Created"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A member has became bonded in a pool."] + pub struct Bonded { + pub member: ::subxt::utils::AccountId32, + pub pool_id: ::core::primitive::u32, + pub bonded: ::core::primitive::u128, + pub joined: ::core::primitive::bool, + } + impl ::subxt::events::StaticEvent for Bonded { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "Bonded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A payout has been made to a member."] + pub struct PaidOut { + pub member: ::subxt::utils::AccountId32, + pub pool_id: ::core::primitive::u32, + pub payout: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for PaidOut { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "PaidOut"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A member has unbonded from their pool."] + #[doc = ""] + #[doc = "- `balance` is the corresponding balance of the number of points that has been"] + #[doc = " requested to be unbonded (the argument of the `unbond` transaction) from the bonded"] + #[doc = " pool."] + #[doc = "- `points` is the number of points that are issued as a result of `balance` being"] + #[doc = "dissolved into the corresponding unbonding pool."] + #[doc = "- `era` is the era in which the balance will be unbonded."] + #[doc = "In the absence of slashing, these values will match. In the presence of slashing, the"] + #[doc = "number of points that are issued in the unbonding pool will be less than the amount"] + #[doc = "requested to be unbonded."] + pub struct Unbonded { + pub member: ::subxt::utils::AccountId32, + pub pool_id: ::core::primitive::u32, + pub balance: ::core::primitive::u128, + pub points: ::core::primitive::u128, + pub era: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Unbonded { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "Unbonded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A member has withdrawn from their pool."] + #[doc = ""] + #[doc = "The given number of `points` have been dissolved in return of `balance`."] + #[doc = ""] + #[doc = "Similar to `Unbonded` event, in the absence of slashing, the ratio of point to balance"] + #[doc = "will be 1."] + pub struct Withdrawn { + pub member: ::subxt::utils::AccountId32, + pub pool_id: ::core::primitive::u32, + pub balance: ::core::primitive::u128, + pub points: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Withdrawn { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "Withdrawn"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A pool has been destroyed."] + pub struct Destroyed { + pub pool_id: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for Destroyed { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "Destroyed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The state of a pool has changed"] + pub struct StateChanged { + pub pool_id: ::core::primitive::u32, + pub new_state: runtime_types::pallet_nomination_pools::PoolState, + } + impl ::subxt::events::StaticEvent for StateChanged { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "StateChanged"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A member has been removed from a pool."] + #[doc = ""] + #[doc = "The removal can be voluntary (withdrawn all unbonded funds) or involuntary (kicked)."] + pub struct MemberRemoved { + pub pool_id: ::core::primitive::u32, + pub member: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for MemberRemoved { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "MemberRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The roles of a pool have been updated to the given new roles. Note that the depositor"] + #[doc = "can never change."] + pub struct RolesUpdated { + pub root: ::core::option::Option<::subxt::utils::AccountId32>, + pub bouncer: ::core::option::Option<::subxt::utils::AccountId32>, + pub nominator: ::core::option::Option<::subxt::utils::AccountId32>, + } + impl ::subxt::events::StaticEvent for RolesUpdated { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "RolesUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The active balance of pool `pool_id` has been slashed to `balance`."] + pub struct PoolSlashed { + pub pool_id: ::core::primitive::u32, + pub balance: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for PoolSlashed { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "PoolSlashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The unbond pool at `era` of pool `pool_id` has been slashed to `balance`."] + pub struct UnbondingPoolSlashed { + pub pool_id: ::core::primitive::u32, + pub era: ::core::primitive::u32, + pub balance: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for UnbondingPoolSlashed { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "UnbondingPoolSlashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A pool's commission setting has been changed."] + pub struct PoolCommissionUpdated { + pub pool_id: ::core::primitive::u32, + pub current: ::core::option::Option<( + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::utils::AccountId32, + )>, + } + impl ::subxt::events::StaticEvent for PoolCommissionUpdated { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "PoolCommissionUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A pool's maximum commission setting has been changed."] + pub struct PoolMaxCommissionUpdated { + pub pool_id: ::core::primitive::u32, + pub max_commission: runtime_types::sp_arithmetic::per_things::Perbill, + } + impl ::subxt::events::StaticEvent for PoolMaxCommissionUpdated { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "PoolMaxCommissionUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A pool's commission `change_rate` has been changed."] + pub struct PoolCommissionChangeRateUpdated { + pub pool_id: ::core::primitive::u32, + pub change_rate: runtime_types::pallet_nomination_pools::CommissionChangeRate< + ::core::primitive::u32, + >, + } + impl ::subxt::events::StaticEvent for PoolCommissionChangeRateUpdated { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "PoolCommissionChangeRateUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Pool commission has been claimed."] + pub struct PoolCommissionClaimed { + pub pool_id: ::core::primitive::u32, + pub commission: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for PoolCommissionClaimed { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "PoolCommissionClaimed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Topped up deficit in frozen ED of the reward pool."] + pub struct MinBalanceDeficitAdjusted { + pub pool_id: ::core::primitive::u32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for MinBalanceDeficitAdjusted { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "MinBalanceDeficitAdjusted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Claimed excess frozen ED of af the reward pool."] + pub struct MinBalanceExcessAdjusted { + pub pool_id: ::core::primitive::u32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for MinBalanceExcessAdjusted { + const PALLET: &'static str = "NominationPools"; + const EVENT: &'static str = "MinBalanceExcessAdjusted"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The sum of funds across all pools."] + #[doc = ""] + #[doc = " This might be lower but never higher than the sum of `total_balance` of all [`PoolMembers`]"] + #[doc = " because calling `pool_withdraw_unbonded` might decrease the total stake of the pool's"] + #[doc = " `bonded_account` without adjusting the pallet-internal `UnbondingPool`'s."] + pub fn total_value_locked( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "TotalValueLocked", + vec![], + [ + 141u8, 23u8, 101u8, 59u8, 165u8, 8u8, 41u8, 252u8, 239u8, 72u8, 142u8, + 19u8, 186u8, 29u8, 131u8, 8u8, 113u8, 64u8, 82u8, 158u8, 26u8, 87u8, + 142u8, 39u8, 80u8, 231u8, 46u8, 40u8, 71u8, 186u8, 35u8, 104u8, + ], + ) + } + #[doc = " Minimum amount to bond to join a pool."] + pub fn min_join_bond( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "MinJoinBond", + vec![], + [ + 64u8, 180u8, 71u8, 185u8, 81u8, 46u8, 155u8, 26u8, 251u8, 84u8, 108u8, + 80u8, 128u8, 44u8, 163u8, 118u8, 107u8, 79u8, 250u8, 211u8, 194u8, + 71u8, 87u8, 16u8, 247u8, 9u8, 76u8, 95u8, 103u8, 227u8, 180u8, 231u8, + ], + ) + } + #[doc = " Minimum bond required to create a pool."] + #[doc = ""] + #[doc = " This is the amount that the depositor must put as their initial stake in the pool, as an"] + #[doc = " indication of \"skin in the game\"."] + #[doc = ""] + #[doc = " This is the value that will always exist in the staking ledger of the pool bonded account"] + #[doc = " while all other accounts leave."] + pub fn min_create_bond( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "MinCreateBond", + vec![], + [ + 210u8, 67u8, 92u8, 230u8, 231u8, 105u8, 54u8, 249u8, 154u8, 192u8, + 29u8, 217u8, 233u8, 79u8, 170u8, 126u8, 133u8, 98u8, 253u8, 153u8, + 248u8, 189u8, 63u8, 107u8, 170u8, 224u8, 12u8, 42u8, 198u8, 185u8, + 85u8, 46u8, + ], + ) + } + #[doc = " Maximum number of nomination pools that can exist. If `None`, then an unbounded number of"] + #[doc = " pools can exist."] + pub fn max_pools( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "MaxPools", + vec![], + [ + 230u8, 184u8, 242u8, 91u8, 118u8, 111u8, 90u8, 204u8, 136u8, 61u8, + 228u8, 50u8, 212u8, 40u8, 83u8, 49u8, 121u8, 161u8, 245u8, 80u8, 46u8, + 184u8, 105u8, 134u8, 249u8, 225u8, 39u8, 3u8, 123u8, 137u8, 156u8, + 240u8, + ], + ) + } + #[doc = " Maximum number of members that can exist in the system. If `None`, then the count"] + #[doc = " members are not bound on a system wide basis."] + pub fn max_pool_members( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "MaxPoolMembers", + vec![], + [ + 210u8, 222u8, 181u8, 146u8, 137u8, 200u8, 71u8, 196u8, 74u8, 38u8, + 36u8, 122u8, 187u8, 164u8, 218u8, 116u8, 216u8, 143u8, 182u8, 15u8, + 23u8, 124u8, 57u8, 121u8, 81u8, 151u8, 8u8, 247u8, 80u8, 136u8, 115u8, + 2u8, + ], + ) + } + #[doc = " Maximum number of members that may belong to pool. If `None`, then the count of"] + #[doc = " members is not bound on a per pool basis."] + pub fn max_pool_members_per_pool( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "MaxPoolMembersPerPool", + vec![], + [ + 250u8, 255u8, 136u8, 223u8, 61u8, 119u8, 117u8, 240u8, 68u8, 114u8, + 55u8, 1u8, 176u8, 120u8, 143u8, 48u8, 232u8, 125u8, 218u8, 105u8, 28u8, + 230u8, 253u8, 36u8, 9u8, 44u8, 129u8, 225u8, 147u8, 33u8, 181u8, 68u8, + ], + ) + } + #[doc = " The maximum commission that can be charged by a pool. Used on commission payouts to bound"] + #[doc = " pool commissions that are > `GlobalMaxCommission`, necessary if a future"] + #[doc = " `GlobalMaxCommission` is lower than some current pool commissions."] + pub fn global_max_commission( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "GlobalMaxCommission", + vec![], + [ + 2u8, 112u8, 8u8, 116u8, 114u8, 97u8, 250u8, 106u8, 170u8, 215u8, 218u8, + 217u8, 80u8, 235u8, 149u8, 81u8, 85u8, 185u8, 201u8, 127u8, 107u8, + 251u8, 191u8, 231u8, 142u8, 74u8, 8u8, 70u8, 151u8, 238u8, 117u8, + 173u8, + ], + ) + } + #[doc = " Active members."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn pool_members( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::PoolMember, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "PoolMembers", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 71u8, 14u8, 198u8, 220u8, 13u8, 117u8, 189u8, 187u8, 123u8, 105u8, + 247u8, 41u8, 154u8, 176u8, 134u8, 226u8, 195u8, 136u8, 193u8, 6u8, + 134u8, 131u8, 105u8, 80u8, 140u8, 160u8, 20u8, 80u8, 179u8, 187u8, + 151u8, 47u8, + ], + ) + } + #[doc = " Active members."] + #[doc = ""] + #[doc = " TWOX-NOTE: SAFE since `AccountId` is a secure hash."] + pub fn pool_members_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::PoolMember, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "PoolMembers", + Vec::new(), + [ + 71u8, 14u8, 198u8, 220u8, 13u8, 117u8, 189u8, 187u8, 123u8, 105u8, + 247u8, 41u8, 154u8, 176u8, 134u8, 226u8, 195u8, 136u8, 193u8, 6u8, + 134u8, 131u8, 105u8, 80u8, 140u8, 160u8, 20u8, 80u8, 179u8, 187u8, + 151u8, 47u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_pool_members( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "CounterForPoolMembers", + vec![], + [ + 165u8, 158u8, 130u8, 19u8, 106u8, 227u8, 134u8, 73u8, 36u8, 237u8, + 103u8, 146u8, 198u8, 68u8, 219u8, 186u8, 134u8, 224u8, 89u8, 251u8, + 200u8, 46u8, 87u8, 232u8, 53u8, 152u8, 13u8, 10u8, 105u8, 49u8, 150u8, + 212u8, + ], + ) + } + #[doc = " Storage for bonded pools."] + pub fn bonded_pools( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::BondedPoolInner, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "BondedPools", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 1u8, 3u8, 32u8, 159u8, 147u8, 134u8, 43u8, 51u8, 61u8, 157u8, 15u8, + 216u8, 170u8, 1u8, 170u8, 75u8, 243u8, 25u8, 103u8, 237u8, 89u8, 90u8, + 20u8, 233u8, 67u8, 3u8, 116u8, 6u8, 184u8, 112u8, 118u8, 232u8, + ], + ) + } + #[doc = " Storage for bonded pools."] + pub fn bonded_pools_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::BondedPoolInner, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "BondedPools", + Vec::new(), + [ + 1u8, 3u8, 32u8, 159u8, 147u8, 134u8, 43u8, 51u8, 61u8, 157u8, 15u8, + 216u8, 170u8, 1u8, 170u8, 75u8, 243u8, 25u8, 103u8, 237u8, 89u8, 90u8, + 20u8, 233u8, 67u8, 3u8, 116u8, 6u8, 184u8, 112u8, 118u8, 232u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_bonded_pools( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "CounterForBondedPools", + vec![], + [ + 198u8, 6u8, 213u8, 92u8, 4u8, 114u8, 164u8, 244u8, 51u8, 55u8, 157u8, + 20u8, 224u8, 183u8, 40u8, 236u8, 115u8, 86u8, 171u8, 207u8, 31u8, + 111u8, 0u8, 210u8, 48u8, 198u8, 243u8, 153u8, 5u8, 216u8, 107u8, 113u8, + ], + ) + } + #[doc = " Reward pools. This is where there rewards for each pool accumulate. When a members payout is"] + #[doc = " claimed, the balance comes out fo the reward pool. Keyed by the bonded pools account."] + pub fn reward_pools( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::RewardPool, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "RewardPools", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 9u8, 12u8, 53u8, 236u8, 133u8, 154u8, 71u8, 150u8, 220u8, 31u8, 130u8, + 126u8, 208u8, 240u8, 214u8, 66u8, 16u8, 43u8, 202u8, 222u8, 94u8, + 136u8, 76u8, 60u8, 174u8, 197u8, 130u8, 138u8, 253u8, 239u8, 89u8, + 46u8, + ], + ) + } + #[doc = " Reward pools. This is where there rewards for each pool accumulate. When a members payout is"] + #[doc = " claimed, the balance comes out fo the reward pool. Keyed by the bonded pools account."] + pub fn reward_pools_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::RewardPool, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "RewardPools", + Vec::new(), + [ + 9u8, 12u8, 53u8, 236u8, 133u8, 154u8, 71u8, 150u8, 220u8, 31u8, 130u8, + 126u8, 208u8, 240u8, 214u8, 66u8, 16u8, 43u8, 202u8, 222u8, 94u8, + 136u8, 76u8, 60u8, 174u8, 197u8, 130u8, 138u8, 253u8, 239u8, 89u8, + 46u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_reward_pools( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "CounterForRewardPools", + vec![], + [ + 218u8, 186u8, 28u8, 97u8, 205u8, 249u8, 187u8, 10u8, 127u8, 190u8, + 213u8, 152u8, 103u8, 20u8, 157u8, 183u8, 86u8, 104u8, 186u8, 236u8, + 84u8, 159u8, 117u8, 78u8, 5u8, 242u8, 193u8, 59u8, 112u8, 200u8, 34u8, + 166u8, + ], + ) + } + #[doc = " Groups of unbonding pools. Each group of unbonding pools belongs to a"] + #[doc = " bonded pool, hence the name sub-pools. Keyed by the bonded pools account."] + pub fn sub_pools_storage( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::SubPools, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "SubPoolsStorage", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 43u8, 35u8, 94u8, 197u8, 201u8, 86u8, 21u8, 118u8, 230u8, 10u8, 66u8, + 180u8, 104u8, 146u8, 250u8, 207u8, 159u8, 153u8, 203u8, 58u8, 20u8, + 247u8, 102u8, 155u8, 47u8, 58u8, 136u8, 150u8, 167u8, 83u8, 81u8, 44u8, + ], + ) + } + #[doc = " Groups of unbonding pools. Each group of unbonding pools belongs to a"] + #[doc = " bonded pool, hence the name sub-pools. Keyed by the bonded pools account."] + pub fn sub_pools_storage_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::SubPools, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "SubPoolsStorage", + Vec::new(), + [ + 43u8, 35u8, 94u8, 197u8, 201u8, 86u8, 21u8, 118u8, 230u8, 10u8, 66u8, + 180u8, 104u8, 146u8, 250u8, 207u8, 159u8, 153u8, 203u8, 58u8, 20u8, + 247u8, 102u8, 155u8, 47u8, 58u8, 136u8, 150u8, 167u8, 83u8, 81u8, 44u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_sub_pools_storage( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "CounterForSubPoolsStorage", + vec![], + [ + 137u8, 162u8, 32u8, 44u8, 163u8, 30u8, 54u8, 158u8, 169u8, 118u8, + 196u8, 101u8, 78u8, 28u8, 184u8, 78u8, 185u8, 225u8, 226u8, 207u8, + 14u8, 119u8, 0u8, 116u8, 140u8, 141u8, 116u8, 106u8, 71u8, 161u8, + 200u8, 228u8, + ], + ) + } + #[doc = " Metadata for the pool."] + pub fn metadata( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "Metadata", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 10u8, 171u8, 251u8, 5u8, 72u8, 74u8, 86u8, 144u8, 59u8, 67u8, 92u8, + 111u8, 217u8, 111u8, 175u8, 107u8, 119u8, 206u8, 199u8, 78u8, 182u8, + 84u8, 12u8, 102u8, 10u8, 124u8, 103u8, 9u8, 86u8, 199u8, 233u8, 54u8, + ], + ) + } + #[doc = " Metadata for the pool."] + pub fn metadata_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "Metadata", + Vec::new(), + [ + 10u8, 171u8, 251u8, 5u8, 72u8, 74u8, 86u8, 144u8, 59u8, 67u8, 92u8, + 111u8, 217u8, 111u8, 175u8, 107u8, 119u8, 206u8, 199u8, 78u8, 182u8, + 84u8, 12u8, 102u8, 10u8, 124u8, 103u8, 9u8, 86u8, 199u8, 233u8, 54u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_metadata( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "CounterForMetadata", + vec![], + [ + 49u8, 76u8, 175u8, 236u8, 99u8, 120u8, 156u8, 116u8, 153u8, 173u8, + 10u8, 102u8, 194u8, 139u8, 25u8, 149u8, 109u8, 195u8, 150u8, 21u8, + 43u8, 24u8, 196u8, 180u8, 231u8, 101u8, 69u8, 98u8, 82u8, 159u8, 183u8, + 174u8, + ], + ) + } + #[doc = " Ever increasing number of all pools created so far."] + pub fn last_pool_id( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "LastPoolId", + vec![], + [ + 178u8, 198u8, 245u8, 157u8, 176u8, 45u8, 214u8, 86u8, 73u8, 154u8, + 217u8, 39u8, 191u8, 53u8, 233u8, 145u8, 57u8, 100u8, 31u8, 13u8, 202u8, + 122u8, 115u8, 16u8, 205u8, 69u8, 157u8, 250u8, 216u8, 180u8, 113u8, + 30u8, + ], + ) + } + #[doc = " A reverse lookup from the pool's account id to its id."] + #[doc = ""] + #[doc = " This is only used for slashing. In all other instances, the pool id is used, and the"] + #[doc = " accounts are deterministically derived from it."] + pub fn reverse_pool_id_lookup( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "ReversePoolIdLookup", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 76u8, 76u8, 150u8, 33u8, 64u8, 81u8, 90u8, 75u8, 212u8, 221u8, 59u8, + 83u8, 178u8, 45u8, 86u8, 206u8, 196u8, 221u8, 117u8, 94u8, 229u8, + 160u8, 52u8, 54u8, 11u8, 64u8, 0u8, 103u8, 85u8, 86u8, 5u8, 71u8, + ], + ) + } + #[doc = " A reverse lookup from the pool's account id to its id."] + #[doc = ""] + #[doc = " This is only used for slashing. In all other instances, the pool id is used, and the"] + #[doc = " accounts are deterministically derived from it."] + pub fn reverse_pool_id_lookup_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "ReversePoolIdLookup", + Vec::new(), + [ + 76u8, 76u8, 150u8, 33u8, 64u8, 81u8, 90u8, 75u8, 212u8, 221u8, 59u8, + 83u8, 178u8, 45u8, 86u8, 206u8, 196u8, 221u8, 117u8, 94u8, 229u8, + 160u8, 52u8, 54u8, 11u8, 64u8, 0u8, 103u8, 85u8, 86u8, 5u8, 71u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_reverse_pool_id_lookup( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "CounterForReversePoolIdLookup", + vec![], + [ + 135u8, 72u8, 203u8, 197u8, 101u8, 135u8, 114u8, 202u8, 122u8, 231u8, + 128u8, 17u8, 81u8, 70u8, 22u8, 146u8, 100u8, 138u8, 16u8, 74u8, 31u8, + 250u8, 110u8, 184u8, 250u8, 75u8, 249u8, 71u8, 171u8, 77u8, 95u8, + 251u8, + ], + ) + } + #[doc = " Map from a pool member account to their opted claim permission."] + pub fn claim_permissions( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::ClaimPermission, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "ClaimPermissions", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 98u8, 241u8, 185u8, 102u8, 61u8, 53u8, 215u8, 105u8, 2u8, 148u8, 197u8, + 17u8, 107u8, 253u8, 74u8, 159u8, 14u8, 30u8, 213u8, 38u8, 35u8, 163u8, + 249u8, 19u8, 140u8, 201u8, 182u8, 106u8, 0u8, 21u8, 102u8, 15u8, + ], + ) + } + #[doc = " Map from a pool member account to their opted claim permission."] + pub fn claim_permissions_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nomination_pools::ClaimPermission, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NominationPools", + "ClaimPermissions", + Vec::new(), + [ + 98u8, 241u8, 185u8, 102u8, 61u8, 53u8, 215u8, 105u8, 2u8, 148u8, 197u8, + 17u8, 107u8, 253u8, 74u8, 159u8, 14u8, 30u8, 213u8, 38u8, 35u8, 163u8, + 249u8, 19u8, 140u8, 201u8, 182u8, 106u8, 0u8, 21u8, 102u8, 15u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The nomination pool's pallet id."] + pub fn pallet_id( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "NominationPools", + "PalletId", + [ + 56u8, 243u8, 53u8, 83u8, 154u8, 179u8, 170u8, 80u8, 133u8, 173u8, 61u8, + 161u8, 47u8, 225u8, 146u8, 21u8, 50u8, 229u8, 248u8, 27u8, 104u8, 58u8, + 129u8, 197u8, 102u8, 160u8, 168u8, 205u8, 154u8, 42u8, 217u8, 53u8, + ], + ) + } + #[doc = " The maximum pool points-to-balance ratio that an `open` pool can have."] + #[doc = ""] + #[doc = " This is important in the event slashing takes place and the pool's points-to-balance"] + #[doc = " ratio becomes disproportional."] + #[doc = ""] + #[doc = " Moreover, this relates to the `RewardCounter` type as well, as the arithmetic operations"] + #[doc = " are a function of number of points, and by setting this value to e.g. 10, you ensure"] + #[doc = " that the total number of points in the system are at most 10 times the total_issuance of"] + #[doc = " the chain, in the absolute worse case."] + #[doc = ""] + #[doc = " For a value of 10, the threshold would be a pool points-to-balance ratio of 10:1."] + #[doc = " Such a scenario would also be the equivalent of the pool being 90% slashed."] + pub fn max_points_to_balance( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u8> { + ::subxt::constants::Address::new_static( + "NominationPools", + "MaxPointsToBalance", + [ + 141u8, 130u8, 11u8, 35u8, 226u8, 114u8, 92u8, 179u8, 168u8, 110u8, + 28u8, 91u8, 221u8, 64u8, 4u8, 148u8, 201u8, 193u8, 185u8, 66u8, 226u8, + 114u8, 97u8, 79u8, 62u8, 212u8, 202u8, 114u8, 237u8, 228u8, 183u8, + 165u8, + ], + ) + } + } + } + } + pub mod fast_unstake { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_fast_unstake::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_fast_unstake::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RegisterFastUnstake; + impl ::subxt::blocks::StaticExtrinsic for RegisterFastUnstake { + const PALLET: &'static str = "FastUnstake"; + const CALL: &'static str = "register_fast_unstake"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Deregister; + impl ::subxt::blocks::StaticExtrinsic for Deregister { + const PALLET: &'static str = "FastUnstake"; + const CALL: &'static str = "deregister"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Control { + pub eras_to_check: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for Control { + const PALLET: &'static str = "FastUnstake"; + const CALL: &'static str = "control"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::register_fast_unstake`]."] + pub fn register_fast_unstake( + &self, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "FastUnstake", + "register_fast_unstake", + types::RegisterFastUnstake {}, + [ + 25u8, 175u8, 236u8, 174u8, 69u8, 228u8, 25u8, 109u8, 166u8, 101u8, + 80u8, 189u8, 17u8, 201u8, 95u8, 152u8, 209u8, 42u8, 140u8, 186u8, 61u8, + 73u8, 147u8, 103u8, 158u8, 39u8, 26u8, 54u8, 98u8, 3u8, 2u8, 49u8, + ], + ) + } + #[doc = "See [`Pallet::deregister`]."] + pub fn deregister(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "FastUnstake", + "deregister", + types::Deregister {}, + [ + 228u8, 7u8, 6u8, 52u8, 110u8, 101u8, 41u8, 226u8, 254u8, 53u8, 44u8, + 229u8, 20u8, 205u8, 131u8, 91u8, 118u8, 71u8, 43u8, 97u8, 99u8, 205u8, + 75u8, 146u8, 27u8, 144u8, 219u8, 167u8, 98u8, 120u8, 11u8, 151u8, + ], + ) + } + #[doc = "See [`Pallet::control`]."] + pub fn control( + &self, + eras_to_check: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "FastUnstake", + "control", + types::Control { eras_to_check }, + [ + 93u8, 245u8, 35u8, 21u8, 125u8, 71u8, 144u8, 99u8, 90u8, 41u8, 161u8, + 90u8, 93u8, 132u8, 45u8, 155u8, 99u8, 175u8, 180u8, 1u8, 219u8, 37u8, + 182u8, 95u8, 203u8, 91u8, 181u8, 159u8, 169u8, 134u8, 139u8, 9u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_fast_unstake::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A staker was unstaked."] + pub struct Unstaked { + pub stash: ::subxt::utils::AccountId32, + pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for Unstaked { + const PALLET: &'static str = "FastUnstake"; + const EVENT: &'static str = "Unstaked"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A staker was slashed for requesting fast-unstake whilst being exposed."] + pub struct Slashed { + pub stash: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Slashed { + const PALLET: &'static str = "FastUnstake"; + const EVENT: &'static str = "Slashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A batch was partially checked for the given eras, but the process did not finish."] + pub struct BatchChecked { + pub eras: ::std::vec::Vec<::core::primitive::u32>, + } + impl ::subxt::events::StaticEvent for BatchChecked { + const PALLET: &'static str = "FastUnstake"; + const EVENT: &'static str = "BatchChecked"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A batch of a given size was terminated."] + #[doc = ""] + #[doc = "This is always follows by a number of `Unstaked` or `Slashed` events, marking the end"] + #[doc = "of the batch. A new batch will be created upon next block."] + pub struct BatchFinished { + pub size: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BatchFinished { + const PALLET: &'static str = "FastUnstake"; + const EVENT: &'static str = "BatchFinished"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An internal error happened. Operations will be paused now."] + pub struct InternalError; + impl ::subxt::events::StaticEvent for InternalError { + const PALLET: &'static str = "FastUnstake"; + const EVENT: &'static str = "InternalError"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The current \"head of the queue\" being unstaked."] + #[doc = ""] + #[doc = " The head in itself can be a batch of up to [`Config::BatchSize`] stakers."] + pub fn head( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_fast_unstake::types::UnstakeRequest, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "FastUnstake", + "Head", + vec![], + [ + 15u8, 207u8, 39u8, 233u8, 50u8, 252u8, 32u8, 127u8, 77u8, 94u8, 170u8, + 209u8, 72u8, 222u8, 77u8, 171u8, 175u8, 204u8, 191u8, 25u8, 15u8, + 104u8, 52u8, 129u8, 42u8, 199u8, 77u8, 44u8, 11u8, 242u8, 234u8, 6u8, + ], + ) + } + #[doc = " The map of all accounts wishing to be unstaked."] + #[doc = ""] + #[doc = " Keeps track of `AccountId` wishing to unstake and it's corresponding deposit."] + pub fn queue( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FastUnstake", + "Queue", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 72u8, 219u8, 212u8, 99u8, 189u8, 234u8, 57u8, 32u8, 80u8, 130u8, 178u8, + 101u8, 71u8, 186u8, 106u8, 129u8, 135u8, 165u8, 225u8, 112u8, 82u8, + 4u8, 215u8, 104u8, 107u8, 192u8, 118u8, 238u8, 70u8, 205u8, 205u8, + 148u8, + ], + ) + } + #[doc = " The map of all accounts wishing to be unstaked."] + #[doc = ""] + #[doc = " Keeps track of `AccountId` wishing to unstake and it's corresponding deposit."] + pub fn queue_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FastUnstake", + "Queue", + Vec::new(), + [ + 72u8, 219u8, 212u8, 99u8, 189u8, 234u8, 57u8, 32u8, 80u8, 130u8, 178u8, + 101u8, 71u8, 186u8, 106u8, 129u8, 135u8, 165u8, 225u8, 112u8, 82u8, + 4u8, 215u8, 104u8, 107u8, 192u8, 118u8, 238u8, 70u8, 205u8, 205u8, + 148u8, + ], + ) + } + #[doc = "Counter for the related counted storage map"] + pub fn counter_for_queue( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "FastUnstake", + "CounterForQueue", + vec![], + [ + 236u8, 101u8, 74u8, 61u8, 59u8, 250u8, 165u8, 139u8, 110u8, 79u8, + 165u8, 124u8, 24u8, 188u8, 245u8, 175u8, 175u8, 102u8, 91u8, 121u8, + 215u8, 21u8, 12u8, 11u8, 194u8, 69u8, 180u8, 161u8, 160u8, 27u8, 39u8, + 17u8, + ], + ) + } + #[doc = " Number of eras to check per block."] + #[doc = ""] + #[doc = " If set to 0, this pallet does absolutely nothing. Cannot be set to more than"] + #[doc = " [`Config::MaxErasToCheckPerBlock`]."] + #[doc = ""] + #[doc = " Based on the amount of weight available at [`Pallet::on_idle`], up to this many eras are"] + #[doc = " checked. The checking is represented by updating [`UnstakeRequest::checked`], which is"] + #[doc = " stored in [`Head`]."] + pub fn eras_to_check_per_block( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "FastUnstake", + "ErasToCheckPerBlock", + vec![], + [ + 231u8, 147u8, 37u8, 154u8, 97u8, 151u8, 16u8, 240u8, 87u8, 38u8, 218u8, + 127u8, 68u8, 131u8, 2u8, 19u8, 46u8, 68u8, 232u8, 148u8, 197u8, 73u8, + 129u8, 102u8, 60u8, 19u8, 200u8, 77u8, 74u8, 31u8, 251u8, 27u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Deposit to take for unstaking, to make sure we're able to slash the it in order to cover"] + #[doc = " the costs of resources on unsuccessful unstake."] + pub fn deposit(&self) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "FastUnstake", + "Deposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + } + } + } + pub mod parachains_origin { + use super::{root_mod, runtime_types}; + } + pub mod configuration { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::configuration::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::configuration::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetValidationUpgradeCooldown { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeCooldown { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_validation_upgrade_cooldown"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetValidationUpgradeDelay { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeDelay { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_validation_upgrade_delay"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetCodeRetentionPeriod { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetCodeRetentionPeriod { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_code_retention_period"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxCodeSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxCodeSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_code_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxPovSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxPovSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_pov_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxHeadDataSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxHeadDataSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_head_data_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetOnDemandCores { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetOnDemandCores { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_on_demand_cores"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetOnDemandRetries { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetOnDemandRetries { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_on_demand_retries"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetGroupRotationFrequency { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetGroupRotationFrequency { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_group_rotation_frequency"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetParasAvailabilityPeriod { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetParasAvailabilityPeriod { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_paras_availability_period"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetSchedulingLookahead { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetSchedulingLookahead { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_scheduling_lookahead"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxValidatorsPerCore { + pub new: ::core::option::Option<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxValidatorsPerCore { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_validators_per_core"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxValidators { + pub new: ::core::option::Option<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxValidators { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_validators"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetDisputePeriod { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetDisputePeriod { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_dispute_period"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetDisputePostConclusionAcceptancePeriod { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetDisputePostConclusionAcceptancePeriod { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_dispute_post_conclusion_acceptance_period"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetNoShowSlots { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetNoShowSlots { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_no_show_slots"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetNDelayTranches { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetNDelayTranches { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_n_delay_tranches"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetZerothDelayTrancheWidth { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetZerothDelayTrancheWidth { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_zeroth_delay_tranche_width"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetNeededApprovals { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetNeededApprovals { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_needed_approvals"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetRelayVrfModuloSamples { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetRelayVrfModuloSamples { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_relay_vrf_modulo_samples"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxUpwardQueueCount { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardQueueCount { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_upward_queue_count"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxUpwardQueueSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardQueueSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_upward_queue_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxDownwardMessageSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxDownwardMessageSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_downward_message_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxUpwardMessageSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardMessageSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_upward_message_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMaxUpwardMessageNumPerCandidate { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMaxUpwardMessageNumPerCandidate { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_upward_message_num_per_candidate"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpOpenRequestTtl { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpOpenRequestTtl { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_open_request_ttl"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpSenderDeposit { + pub new: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpSenderDeposit { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_sender_deposit"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpRecipientDeposit { + pub new: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpRecipientDeposit { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_recipient_deposit"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpChannelMaxCapacity { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpChannelMaxCapacity { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_channel_max_capacity"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpChannelMaxTotalSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpChannelMaxTotalSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_channel_max_total_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpMaxParachainInboundChannels { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpMaxParachainInboundChannels { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_max_parachain_inbound_channels"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpChannelMaxMessageSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpChannelMaxMessageSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_channel_max_message_size"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpMaxParachainOutboundChannels { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpMaxParachainOutboundChannels { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_max_parachain_outbound_channels"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetHrmpMaxMessageNumPerCandidate { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetHrmpMaxMessageNumPerCandidate { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_hrmp_max_message_num_per_candidate"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetPvfVotingTtl { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetPvfVotingTtl { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_pvf_voting_ttl"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMinimumValidationUpgradeDelay { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMinimumValidationUpgradeDelay { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_minimum_validation_upgrade_delay"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetBypassConsistencyCheck { + pub new: ::core::primitive::bool, + } + impl ::subxt::blocks::StaticExtrinsic for SetBypassConsistencyCheck { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_bypass_consistency_check"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetAsyncBackingParams { + pub new: + runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams, + } + impl ::subxt::blocks::StaticExtrinsic for SetAsyncBackingParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_async_backing_params"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetExecutorParams { + pub new: + runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + } + impl ::subxt::blocks::StaticExtrinsic for SetExecutorParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_executor_params"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetOnDemandBaseFee { + pub new: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for SetOnDemandBaseFee { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_on_demand_base_fee"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetOnDemandFeeVariability { + pub new: runtime_types::sp_arithmetic::per_things::Perbill, + } + impl ::subxt::blocks::StaticExtrinsic for SetOnDemandFeeVariability { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_on_demand_fee_variability"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetOnDemandQueueMaxSize { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetOnDemandQueueMaxSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_on_demand_queue_max_size"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetOnDemandTargetQueueUtilization { + pub new: runtime_types::sp_arithmetic::per_things::Perbill, + } + impl ::subxt::blocks::StaticExtrinsic for SetOnDemandTargetQueueUtilization { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_on_demand_target_queue_utilization"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetOnDemandTtl { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetOnDemandTtl { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_on_demand_ttl"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMinimumBackingVotes { + pub new: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetMinimumBackingVotes { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_minimum_backing_votes"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] + pub fn set_validation_upgrade_cooldown( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_validation_upgrade_cooldown", + types::SetValidationUpgradeCooldown { new }, + [ + 233u8, 224u8, 19u8, 198u8, 27u8, 104u8, 64u8, 248u8, 223u8, 51u8, + 175u8, 162u8, 183u8, 43u8, 108u8, 246u8, 162u8, 210u8, 53u8, 56u8, + 174u8, 203u8, 79u8, 143u8, 13u8, 101u8, 100u8, 11u8, 127u8, 76u8, 71u8, + 228u8, + ], + ) + } + #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] + pub fn set_validation_upgrade_delay( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_validation_upgrade_delay", + types::SetValidationUpgradeDelay { new }, + [ + 13u8, 139u8, 210u8, 115u8, 20u8, 121u8, 55u8, 118u8, 101u8, 236u8, + 95u8, 79u8, 46u8, 44u8, 129u8, 129u8, 60u8, 198u8, 13u8, 17u8, 115u8, + 187u8, 181u8, 37u8, 75u8, 153u8, 13u8, 196u8, 49u8, 204u8, 26u8, 198u8, + ], + ) + } + #[doc = "See [`Pallet::set_code_retention_period`]."] + pub fn set_code_retention_period( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_code_retention_period", + types::SetCodeRetentionPeriod { new }, + [ + 169u8, 77u8, 107u8, 175u8, 172u8, 177u8, 169u8, 194u8, 219u8, 6u8, + 192u8, 40u8, 55u8, 241u8, 128u8, 111u8, 95u8, 67u8, 173u8, 247u8, + 220u8, 66u8, 45u8, 76u8, 108u8, 137u8, 220u8, 194u8, 86u8, 41u8, 245u8, + 226u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_code_size`]."] + pub fn set_max_code_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_code_size", + types::SetMaxCodeSize { new }, + [ + 122u8, 74u8, 244u8, 226u8, 89u8, 175u8, 191u8, 163u8, 34u8, 79u8, + 118u8, 254u8, 236u8, 215u8, 8u8, 182u8, 71u8, 180u8, 224u8, 165u8, + 226u8, 242u8, 124u8, 34u8, 38u8, 27u8, 29u8, 140u8, 187u8, 93u8, 131u8, + 168u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_pov_size`]."] + pub fn set_max_pov_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_pov_size", + types::SetMaxPovSize { new }, + [ + 170u8, 106u8, 163u8, 4u8, 27u8, 72u8, 250u8, 59u8, 133u8, 128u8, 177u8, + 209u8, 22u8, 42u8, 230u8, 40u8, 192u8, 198u8, 56u8, 195u8, 31u8, 20u8, + 35u8, 196u8, 119u8, 183u8, 141u8, 38u8, 52u8, 54u8, 31u8, 122u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_head_data_size`]."] + pub fn set_max_head_data_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_head_data_size", + types::SetMaxHeadDataSize { new }, + [ + 216u8, 146u8, 104u8, 253u8, 123u8, 192u8, 123u8, 82u8, 149u8, 22u8, + 31u8, 107u8, 67u8, 102u8, 163u8, 239u8, 57u8, 183u8, 93u8, 20u8, 126u8, + 39u8, 36u8, 242u8, 252u8, 68u8, 150u8, 121u8, 147u8, 186u8, 39u8, + 181u8, + ], + ) + } + #[doc = "See [`Pallet::set_on_demand_cores`]."] + pub fn set_on_demand_cores( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_on_demand_cores", + types::SetOnDemandCores { new }, + [ + 157u8, 26u8, 82u8, 103u8, 83u8, 214u8, 92u8, 176u8, 93u8, 70u8, 32u8, + 217u8, 139u8, 30u8, 145u8, 237u8, 34u8, 121u8, 190u8, 17u8, 128u8, + 243u8, 241u8, 181u8, 85u8, 141u8, 107u8, 70u8, 121u8, 119u8, 20u8, + 104u8, + ], + ) + } + #[doc = "See [`Pallet::set_on_demand_retries`]."] + pub fn set_on_demand_retries( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_on_demand_retries", + types::SetOnDemandRetries { new }, + [ + 228u8, 78u8, 216u8, 66u8, 17u8, 51u8, 84u8, 14u8, 80u8, 67u8, 24u8, + 138u8, 177u8, 108u8, 203u8, 87u8, 240u8, 125u8, 111u8, 223u8, 216u8, + 212u8, 69u8, 236u8, 216u8, 178u8, 166u8, 145u8, 115u8, 47u8, 147u8, + 235u8, + ], + ) + } + #[doc = "See [`Pallet::set_group_rotation_frequency`]."] + pub fn set_group_rotation_frequency( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_group_rotation_frequency", + types::SetGroupRotationFrequency { new }, + [ + 33u8, 142u8, 63u8, 205u8, 128u8, 109u8, 157u8, 33u8, 122u8, 91u8, 57u8, + 223u8, 134u8, 80u8, 108u8, 187u8, 147u8, 120u8, 104u8, 170u8, 32u8, + 135u8, 102u8, 38u8, 82u8, 20u8, 123u8, 211u8, 245u8, 91u8, 134u8, 44u8, + ], + ) + } + #[doc = "See [`Pallet::set_paras_availability_period`]."] + pub fn set_paras_availability_period( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_paras_availability_period", + types::SetParasAvailabilityPeriod { new }, + [ + 83u8, 171u8, 219u8, 129u8, 231u8, 54u8, 45u8, 19u8, 167u8, 21u8, 232u8, + 205u8, 166u8, 83u8, 234u8, 101u8, 205u8, 248u8, 74u8, 39u8, 130u8, + 15u8, 92u8, 39u8, 239u8, 111u8, 215u8, 165u8, 149u8, 11u8, 89u8, 119u8, + ], + ) + } + #[doc = "See [`Pallet::set_scheduling_lookahead`]."] + pub fn set_scheduling_lookahead( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_scheduling_lookahead", + types::SetSchedulingLookahead { new }, + [ + 176u8, 115u8, 251u8, 197u8, 19u8, 106u8, 253u8, 224u8, 149u8, 96u8, + 238u8, 106u8, 19u8, 19u8, 89u8, 249u8, 186u8, 89u8, 144u8, 116u8, + 251u8, 30u8, 157u8, 237u8, 125u8, 153u8, 86u8, 6u8, 251u8, 170u8, 73u8, + 216u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_validators_per_core`]."] + pub fn set_max_validators_per_core( + &self, + new: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_validators_per_core", + types::SetMaxValidatorsPerCore { new }, + [ + 152u8, 112u8, 244u8, 133u8, 209u8, 166u8, 55u8, 155u8, 12u8, 216u8, + 62u8, 111u8, 81u8, 52u8, 194u8, 121u8, 172u8, 201u8, 204u8, 139u8, + 198u8, 238u8, 9u8, 49u8, 119u8, 236u8, 46u8, 0u8, 179u8, 234u8, 92u8, + 45u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_validators`]."] + pub fn set_max_validators( + &self, + new: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_validators", + types::SetMaxValidators { new }, + [ + 219u8, 76u8, 191u8, 139u8, 250u8, 154u8, 232u8, 176u8, 248u8, 154u8, + 185u8, 89u8, 135u8, 151u8, 183u8, 132u8, 72u8, 63u8, 101u8, 183u8, + 142u8, 169u8, 163u8, 226u8, 24u8, 139u8, 78u8, 155u8, 3u8, 136u8, + 142u8, 137u8, + ], + ) + } + #[doc = "See [`Pallet::set_dispute_period`]."] + pub fn set_dispute_period( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_dispute_period", + types::SetDisputePeriod { new }, + [ + 104u8, 229u8, 235u8, 207u8, 136u8, 207u8, 181u8, 99u8, 0u8, 84u8, + 200u8, 244u8, 220u8, 52u8, 64u8, 26u8, 232u8, 212u8, 242u8, 190u8, + 67u8, 180u8, 171u8, 200u8, 181u8, 23u8, 32u8, 240u8, 231u8, 217u8, + 23u8, 146u8, + ], + ) + } + #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] + pub fn set_dispute_post_conclusion_acceptance_period( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload + { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_dispute_post_conclusion_acceptance_period", + types::SetDisputePostConclusionAcceptancePeriod { new }, + [ + 251u8, 176u8, 139u8, 76u8, 7u8, 246u8, 198u8, 190u8, 39u8, 249u8, 95u8, + 226u8, 53u8, 186u8, 112u8, 101u8, 229u8, 80u8, 240u8, 185u8, 108u8, + 228u8, 91u8, 103u8, 128u8, 218u8, 231u8, 210u8, 164u8, 197u8, 84u8, + 149u8, + ], + ) + } + #[doc = "See [`Pallet::set_no_show_slots`]."] + pub fn set_no_show_slots( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_no_show_slots", + types::SetNoShowSlots { new }, + [ + 123u8, 204u8, 253u8, 222u8, 224u8, 215u8, 247u8, 154u8, 225u8, 79u8, + 29u8, 171u8, 107u8, 216u8, 215u8, 14u8, 8u8, 230u8, 49u8, 97u8, 20u8, + 84u8, 70u8, 33u8, 254u8, 63u8, 186u8, 7u8, 184u8, 135u8, 74u8, 139u8, + ], + ) + } + #[doc = "See [`Pallet::set_n_delay_tranches`]."] + pub fn set_n_delay_tranches( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_n_delay_tranches", + types::SetNDelayTranches { new }, + [ + 157u8, 177u8, 251u8, 227u8, 118u8, 250u8, 129u8, 254u8, 33u8, 250u8, + 61u8, 148u8, 189u8, 92u8, 49u8, 119u8, 107u8, 40u8, 255u8, 119u8, + 241u8, 188u8, 109u8, 240u8, 229u8, 169u8, 31u8, 62u8, 174u8, 14u8, + 247u8, 235u8, + ], + ) + } + #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] + pub fn set_zeroth_delay_tranche_width( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_zeroth_delay_tranche_width", + types::SetZerothDelayTrancheWidth { new }, + [ + 30u8, 195u8, 15u8, 51u8, 210u8, 159u8, 254u8, 207u8, 121u8, 172u8, + 107u8, 241u8, 55u8, 100u8, 159u8, 55u8, 76u8, 47u8, 86u8, 93u8, 221u8, + 34u8, 136u8, 97u8, 224u8, 141u8, 46u8, 181u8, 246u8, 137u8, 79u8, 57u8, + ], + ) + } + #[doc = "See [`Pallet::set_needed_approvals`]."] + pub fn set_needed_approvals( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_needed_approvals", + types::SetNeededApprovals { new }, + [ + 245u8, 105u8, 16u8, 120u8, 28u8, 231u8, 6u8, 50u8, 143u8, 102u8, 1u8, + 97u8, 224u8, 232u8, 187u8, 164u8, 200u8, 31u8, 129u8, 139u8, 79u8, + 170u8, 14u8, 147u8, 117u8, 13u8, 98u8, 16u8, 64u8, 169u8, 46u8, 41u8, + ], + ) + } + #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] + pub fn set_relay_vrf_modulo_samples( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_relay_vrf_modulo_samples", + types::SetRelayVrfModuloSamples { new }, + [ + 96u8, 100u8, 42u8, 61u8, 244u8, 226u8, 135u8, 187u8, 56u8, 193u8, + 247u8, 236u8, 38u8, 40u8, 242u8, 222u8, 176u8, 209u8, 211u8, 217u8, + 178u8, 32u8, 160u8, 56u8, 23u8, 60u8, 222u8, 166u8, 134u8, 72u8, 153u8, + 14u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_upward_queue_count`]."] + pub fn set_max_upward_queue_count( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_upward_queue_count", + types::SetMaxUpwardQueueCount { new }, + [ + 187u8, 102u8, 178u8, 141u8, 245u8, 8u8, 221u8, 174u8, 128u8, 239u8, + 104u8, 120u8, 202u8, 220u8, 46u8, 27u8, 175u8, 26u8, 1u8, 170u8, 193u8, + 70u8, 176u8, 13u8, 223u8, 57u8, 153u8, 161u8, 228u8, 175u8, 226u8, + 202u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_upward_queue_size`]."] + pub fn set_max_upward_queue_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_upward_queue_size", + types::SetMaxUpwardQueueSize { new }, + [ + 245u8, 234u8, 151u8, 232u8, 49u8, 193u8, 60u8, 21u8, 103u8, 238u8, + 194u8, 73u8, 238u8, 160u8, 48u8, 88u8, 143u8, 197u8, 110u8, 230u8, + 213u8, 149u8, 171u8, 94u8, 77u8, 6u8, 139u8, 191u8, 158u8, 62u8, 181u8, + 32u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_downward_message_size`]."] + pub fn set_max_downward_message_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_downward_message_size", + types::SetMaxDownwardMessageSize { new }, + [ + 63u8, 112u8, 231u8, 193u8, 226u8, 6u8, 119u8, 35u8, 60u8, 34u8, 85u8, + 15u8, 168u8, 16u8, 176u8, 116u8, 169u8, 114u8, 42u8, 208u8, 89u8, + 188u8, 22u8, 145u8, 248u8, 87u8, 74u8, 168u8, 0u8, 202u8, 112u8, 13u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_upward_message_size`]."] + pub fn set_max_upward_message_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_upward_message_size", + types::SetMaxUpwardMessageSize { new }, + [ + 237u8, 108u8, 33u8, 245u8, 65u8, 209u8, 201u8, 97u8, 126u8, 194u8, + 195u8, 8u8, 144u8, 223u8, 148u8, 242u8, 97u8, 214u8, 38u8, 231u8, + 123u8, 143u8, 34u8, 199u8, 100u8, 183u8, 211u8, 111u8, 250u8, 245u8, + 10u8, 38u8, + ], + ) + } + #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] + pub fn set_max_upward_message_num_per_candidate( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload + { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_max_upward_message_num_per_candidate", + types::SetMaxUpwardMessageNumPerCandidate { new }, + [ + 183u8, 121u8, 87u8, 193u8, 8u8, 160u8, 107u8, 80u8, 50u8, 8u8, 75u8, + 185u8, 195u8, 248u8, 75u8, 174u8, 210u8, 108u8, 149u8, 20u8, 66u8, + 153u8, 20u8, 203u8, 92u8, 99u8, 27u8, 69u8, 212u8, 212u8, 35u8, 49u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] + pub fn set_hrmp_open_request_ttl( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_open_request_ttl", + types::SetHrmpOpenRequestTtl { new }, + [ + 233u8, 46u8, 165u8, 59u8, 196u8, 77u8, 161u8, 124u8, 252u8, 98u8, 8u8, + 52u8, 80u8, 17u8, 12u8, 50u8, 25u8, 127u8, 143u8, 252u8, 230u8, 10u8, + 193u8, 251u8, 167u8, 73u8, 40u8, 63u8, 203u8, 119u8, 208u8, 254u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] + pub fn set_hrmp_sender_deposit( + &self, + new: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_sender_deposit", + types::SetHrmpSenderDeposit { new }, + [ + 4u8, 141u8, 15u8, 87u8, 237u8, 39u8, 225u8, 108u8, 159u8, 240u8, 121u8, + 212u8, 225u8, 155u8, 168u8, 28u8, 61u8, 119u8, 232u8, 216u8, 194u8, + 172u8, 147u8, 16u8, 50u8, 100u8, 146u8, 146u8, 69u8, 252u8, 94u8, 47u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] + pub fn set_hrmp_recipient_deposit( + &self, + new: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_recipient_deposit", + types::SetHrmpRecipientDeposit { new }, + [ + 242u8, 193u8, 202u8, 91u8, 69u8, 252u8, 101u8, 52u8, 162u8, 107u8, + 165u8, 69u8, 90u8, 150u8, 62u8, 239u8, 167u8, 2u8, 221u8, 3u8, 231u8, + 252u8, 82u8, 125u8, 212u8, 174u8, 47u8, 216u8, 219u8, 237u8, 242u8, + 144u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] + pub fn set_hrmp_channel_max_capacity( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_channel_max_capacity", + types::SetHrmpChannelMaxCapacity { new }, + [ + 140u8, 138u8, 197u8, 45u8, 144u8, 102u8, 150u8, 172u8, 110u8, 6u8, + 99u8, 130u8, 62u8, 217u8, 119u8, 110u8, 180u8, 132u8, 102u8, 161u8, + 78u8, 59u8, 209u8, 44u8, 120u8, 183u8, 13u8, 88u8, 89u8, 15u8, 224u8, + 224u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] + pub fn set_hrmp_channel_max_total_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_channel_max_total_size", + types::SetHrmpChannelMaxTotalSize { new }, + [ + 149u8, 21u8, 229u8, 107u8, 125u8, 28u8, 17u8, 155u8, 45u8, 230u8, 50u8, + 64u8, 16u8, 171u8, 24u8, 58u8, 246u8, 57u8, 247u8, 20u8, 34u8, 217u8, + 206u8, 157u8, 40u8, 205u8, 187u8, 205u8, 199u8, 24u8, 115u8, 214u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] + pub fn set_hrmp_max_parachain_inbound_channels( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload + { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_max_parachain_inbound_channels", + types::SetHrmpMaxParachainInboundChannels { new }, + [ + 203u8, 10u8, 55u8, 21u8, 21u8, 254u8, 74u8, 97u8, 34u8, 117u8, 160u8, + 183u8, 168u8, 235u8, 11u8, 9u8, 137u8, 141u8, 150u8, 80u8, 32u8, 41u8, + 118u8, 40u8, 28u8, 74u8, 155u8, 7u8, 63u8, 217u8, 39u8, 104u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] + pub fn set_hrmp_channel_max_message_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_channel_max_message_size", + types::SetHrmpChannelMaxMessageSize { new }, + [ + 153u8, 216u8, 55u8, 31u8, 189u8, 173u8, 23u8, 6u8, 213u8, 103u8, 205u8, + 154u8, 115u8, 105u8, 84u8, 133u8, 94u8, 254u8, 47u8, 128u8, 130u8, + 114u8, 227u8, 102u8, 214u8, 146u8, 215u8, 183u8, 179u8, 151u8, 43u8, + 187u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] + pub fn set_hrmp_max_parachain_outbound_channels( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload + { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_max_parachain_outbound_channels", + types::SetHrmpMaxParachainOutboundChannels { new }, + [ + 91u8, 100u8, 158u8, 17u8, 123u8, 31u8, 6u8, 92u8, 80u8, 92u8, 83u8, + 195u8, 234u8, 207u8, 55u8, 88u8, 75u8, 81u8, 219u8, 131u8, 234u8, 5u8, + 75u8, 236u8, 57u8, 93u8, 70u8, 145u8, 255u8, 171u8, 25u8, 174u8, + ], + ) + } + #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] + pub fn set_hrmp_max_message_num_per_candidate( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_hrmp_max_message_num_per_candidate", + types::SetHrmpMaxMessageNumPerCandidate { new }, + [ + 179u8, 44u8, 231u8, 12u8, 166u8, 160u8, 223u8, 164u8, 218u8, 173u8, + 157u8, 49u8, 16u8, 220u8, 0u8, 224u8, 67u8, 194u8, 210u8, 207u8, 237u8, + 96u8, 96u8, 24u8, 71u8, 237u8, 30u8, 152u8, 105u8, 245u8, 157u8, 218u8, + ], + ) + } + #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] + pub fn set_pvf_voting_ttl( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_pvf_voting_ttl", + types::SetPvfVotingTtl { new }, + [ + 115u8, 135u8, 76u8, 222u8, 214u8, 80u8, 103u8, 250u8, 194u8, 34u8, + 129u8, 245u8, 216u8, 69u8, 166u8, 247u8, 138u8, 94u8, 135u8, 228u8, + 90u8, 145u8, 2u8, 244u8, 73u8, 178u8, 61u8, 251u8, 21u8, 197u8, 202u8, + 246u8, + ], + ) + } + #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] + pub fn set_minimum_validation_upgrade_delay( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_minimum_validation_upgrade_delay", + types::SetMinimumValidationUpgradeDelay { new }, + [ + 143u8, 217u8, 201u8, 206u8, 206u8, 244u8, 116u8, 118u8, 13u8, 169u8, + 132u8, 125u8, 253u8, 178u8, 196u8, 12u8, 251u8, 32u8, 201u8, 133u8, + 50u8, 59u8, 37u8, 169u8, 198u8, 112u8, 136u8, 47u8, 205u8, 141u8, + 191u8, 212u8, + ], + ) + } + #[doc = "See [`Pallet::set_bypass_consistency_check`]."] + pub fn set_bypass_consistency_check( + &self, + new: ::core::primitive::bool, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_bypass_consistency_check", + types::SetBypassConsistencyCheck { new }, + [ + 11u8, 211u8, 68u8, 221u8, 178u8, 108u8, 101u8, 55u8, 107u8, 135u8, + 203u8, 112u8, 173u8, 161u8, 23u8, 104u8, 95u8, 200u8, 46u8, 231u8, + 114u8, 3u8, 8u8, 89u8, 147u8, 141u8, 55u8, 65u8, 125u8, 45u8, 218u8, + 78u8, + ], + ) + } + #[doc = "See [`Pallet::set_async_backing_params`]."] + pub fn set_async_backing_params( + &self, + new: runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_async_backing_params", + types::SetAsyncBackingParams { new }, + [ + 28u8, 148u8, 243u8, 41u8, 68u8, 91u8, 113u8, 162u8, 126u8, 115u8, + 122u8, 220u8, 126u8, 19u8, 119u8, 236u8, 20u8, 112u8, 181u8, 76u8, + 191u8, 225u8, 44u8, 207u8, 85u8, 246u8, 10u8, 167u8, 132u8, 211u8, + 14u8, 83u8, + ], + ) + } + #[doc = "See [`Pallet::set_executor_params`]."] + pub fn set_executor_params( + &self, + new: runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_executor_params", + types::SetExecutorParams { new }, + [ + 219u8, 27u8, 25u8, 162u8, 61u8, 189u8, 61u8, 32u8, 101u8, 139u8, 89u8, + 51u8, 191u8, 223u8, 94u8, 145u8, 109u8, 247u8, 22u8, 64u8, 178u8, 97u8, + 239u8, 0u8, 125u8, 20u8, 62u8, 210u8, 110u8, 79u8, 225u8, 43u8, + ], + ) + } + #[doc = "See [`Pallet::set_on_demand_base_fee`]."] + pub fn set_on_demand_base_fee( + &self, + new: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_on_demand_base_fee", + types::SetOnDemandBaseFee { new }, + [ + 181u8, 205u8, 34u8, 186u8, 152u8, 91u8, 76u8, 55u8, 128u8, 116u8, 44u8, + 32u8, 71u8, 33u8, 247u8, 146u8, 134u8, 15u8, 181u8, 229u8, 105u8, 67u8, + 148u8, 214u8, 211u8, 84u8, 93u8, 122u8, 235u8, 204u8, 63u8, 13u8, + ], + ) + } + #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] + pub fn set_on_demand_fee_variability( + &self, + new: runtime_types::sp_arithmetic::per_things::Perbill, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_on_demand_fee_variability", + types::SetOnDemandFeeVariability { new }, + [ + 255u8, 132u8, 238u8, 200u8, 152u8, 248u8, 89u8, 87u8, 160u8, 38u8, + 38u8, 7u8, 137u8, 178u8, 176u8, 10u8, 63u8, 250u8, 95u8, 68u8, 39u8, + 147u8, 5u8, 214u8, 223u8, 44u8, 225u8, 10u8, 233u8, 155u8, 202u8, + 232u8, + ], + ) + } + #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] + pub fn set_on_demand_queue_max_size( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_on_demand_queue_max_size", + types::SetOnDemandQueueMaxSize { new }, + [ + 207u8, 222u8, 29u8, 91u8, 8u8, 250u8, 0u8, 153u8, 230u8, 206u8, 87u8, + 4u8, 248u8, 28u8, 120u8, 55u8, 24u8, 45u8, 103u8, 75u8, 25u8, 239u8, + 61u8, 238u8, 11u8, 63u8, 82u8, 219u8, 154u8, 27u8, 130u8, 173u8, + ], + ) + } + #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] + pub fn set_on_demand_target_queue_utilization( + &self, + new: runtime_types::sp_arithmetic::per_things::Perbill, + ) -> ::subxt::tx::Payload + { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_on_demand_target_queue_utilization", + types::SetOnDemandTargetQueueUtilization { new }, + [ + 78u8, 98u8, 234u8, 149u8, 254u8, 231u8, 174u8, 232u8, 246u8, 16u8, + 218u8, 142u8, 156u8, 247u8, 70u8, 214u8, 144u8, 159u8, 71u8, 241u8, + 178u8, 102u8, 251u8, 153u8, 208u8, 222u8, 121u8, 139u8, 66u8, 146u8, + 94u8, 147u8, + ], + ) + } + #[doc = "See [`Pallet::set_on_demand_ttl`]."] + pub fn set_on_demand_ttl( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_on_demand_ttl", + types::SetOnDemandTtl { new }, + [ + 248u8, 250u8, 204u8, 180u8, 134u8, 226u8, 77u8, 206u8, 21u8, 247u8, + 184u8, 68u8, 164u8, 54u8, 230u8, 135u8, 237u8, 226u8, 62u8, 253u8, + 116u8, 47u8, 31u8, 202u8, 110u8, 225u8, 211u8, 105u8, 72u8, 175u8, + 171u8, 169u8, + ], + ) + } + #[doc = "See [`Pallet::set_minimum_backing_votes`]."] + pub fn set_minimum_backing_votes( + &self, + new: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_minimum_backing_votes", + types::SetMinimumBackingVotes { new }, + [ + 55u8, 209u8, 98u8, 156u8, 31u8, 150u8, 61u8, 19u8, 3u8, 55u8, 113u8, + 209u8, 171u8, 143u8, 241u8, 93u8, 178u8, 169u8, 39u8, 241u8, 98u8, + 53u8, 12u8, 148u8, 175u8, 50u8, 164u8, 38u8, 34u8, 183u8, 105u8, 178u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The active configuration for the current session."] + pub fn active_config( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::configuration::HostConfiguration< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Configuration", + "ActiveConfig", + vec![], + [ + 126u8, 223u8, 107u8, 199u8, 21u8, 114u8, 19u8, 172u8, 27u8, 108u8, + 189u8, 165u8, 33u8, 220u8, 57u8, 81u8, 137u8, 242u8, 204u8, 148u8, + 61u8, 161u8, 156u8, 36u8, 20u8, 172u8, 117u8, 30u8, 152u8, 210u8, + 207u8, 161u8, + ], + ) + } + #[doc = " Pending configuration changes."] + #[doc = ""] + #[doc = " This is a list of configuration changes, each with a session index at which it should"] + #[doc = " be applied."] + #[doc = ""] + #[doc = " The list is sorted ascending by session index. Also, this list can only contain at most"] + #[doc = " 2 items: for the next session and for the `scheduled_session`."] pub fn pending_configs (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < (:: core :: primitive :: u32 , runtime_types :: polkadot_runtime_parachains :: configuration :: HostConfiguration < :: core :: primitive :: u32 > ,) > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , () >{ + ::subxt::storage::address::Address::new_static( + "Configuration", + "PendingConfigs", + vec![], + [ + 105u8, 89u8, 53u8, 156u8, 60u8, 53u8, 196u8, 187u8, 5u8, 122u8, 186u8, + 196u8, 162u8, 133u8, 254u8, 178u8, 130u8, 143u8, 90u8, 23u8, 234u8, + 105u8, 9u8, 121u8, 142u8, 123u8, 136u8, 166u8, 95u8, 215u8, 176u8, + 46u8, + ], + ) + } + #[doc = " If this is set, then the configuration setters will bypass the consistency checks. This"] + #[doc = " is meant to be used only as the last resort."] + pub fn bypass_consistency_check( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Configuration", + "BypassConsistencyCheck", + vec![], + [ + 109u8, 201u8, 130u8, 189u8, 167u8, 112u8, 171u8, 180u8, 100u8, 146u8, + 23u8, 174u8, 199u8, 230u8, 185u8, 155u8, 178u8, 45u8, 24u8, 66u8, + 211u8, 234u8, 11u8, 103u8, 148u8, 12u8, 247u8, 101u8, 147u8, 18u8, + 11u8, 89u8, + ], + ) + } + } + } + } + pub mod paras_shared { + use super::{root_mod, runtime_types}; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::shared::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + } + pub struct TransactionApi; + impl TransactionApi {} + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The current session index."] + pub fn current_session_index( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParasShared", + "CurrentSessionIndex", + vec![], + [ + 250u8, 164u8, 179u8, 84u8, 199u8, 245u8, 116u8, 48u8, 86u8, 127u8, + 50u8, 117u8, 236u8, 41u8, 107u8, 238u8, 151u8, 236u8, 68u8, 78u8, + 152u8, 5u8, 155u8, 107u8, 69u8, 197u8, 222u8, 94u8, 150u8, 2u8, 31u8, + 191u8, + ], + ) + } + #[doc = " All the validators actively participating in parachain consensus."] + #[doc = " Indices are into the broader validator set."] + pub fn active_validator_indices( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParasShared", + "ActiveValidatorIndices", + vec![], + [ + 80u8, 207u8, 217u8, 195u8, 69u8, 151u8, 27u8, 205u8, 227u8, 89u8, 71u8, + 180u8, 91u8, 116u8, 82u8, 193u8, 108u8, 115u8, 40u8, 247u8, 160u8, + 39u8, 85u8, 99u8, 42u8, 87u8, 54u8, 168u8, 230u8, 201u8, 212u8, 39u8, + ], + ) + } + #[doc = " The parachain attestation keys of the validators actively participating in parachain"] + #[doc = " consensus. This should be the same length as `ActiveValidatorIndices`."] + pub fn active_validator_keys( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParasShared", + "ActiveValidatorKeys", + vec![], + [ + 155u8, 151u8, 155u8, 8u8, 23u8, 38u8, 91u8, 12u8, 94u8, 69u8, 228u8, + 185u8, 14u8, 219u8, 215u8, 98u8, 235u8, 222u8, 157u8, 180u8, 230u8, + 121u8, 205u8, 167u8, 156u8, 134u8, 180u8, 213u8, 87u8, 61u8, 174u8, + 222u8, + ], + ) + } + #[doc = " All allowed relay-parents."] + pub fn allowed_relay_parents( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::shared::AllowedRelayParentsTracker< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParasShared", + "AllowedRelayParents", + vec![], + [ + 12u8, 170u8, 241u8, 120u8, 39u8, 216u8, 90u8, 37u8, 119u8, 212u8, + 161u8, 90u8, 233u8, 124u8, 92u8, 43u8, 212u8, 206u8, 153u8, 103u8, + 156u8, 79u8, 74u8, 7u8, 60u8, 35u8, 86u8, 16u8, 0u8, 224u8, 202u8, + 61u8, + ], + ) + } + } + } + } + pub mod para_inclusion { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::inclusion::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::inclusion::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + } + pub struct TransactionApi; + impl TransactionApi {} + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::inclusion::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A candidate was backed. `[candidate, head_data]`"] + pub struct CandidateBacked( + pub runtime_types::polkadot_primitives::v6::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub runtime_types::polkadot_primitives::v6::CoreIndex, + pub runtime_types::polkadot_primitives::v6::GroupIndex, + ); + impl ::subxt::events::StaticEvent for CandidateBacked { + const PALLET: &'static str = "ParaInclusion"; + const EVENT: &'static str = "CandidateBacked"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A candidate was included. `[candidate, head_data]`"] + pub struct CandidateIncluded( + pub runtime_types::polkadot_primitives::v6::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub runtime_types::polkadot_primitives::v6::CoreIndex, + pub runtime_types::polkadot_primitives::v6::GroupIndex, + ); + impl ::subxt::events::StaticEvent for CandidateIncluded { + const PALLET: &'static str = "ParaInclusion"; + const EVENT: &'static str = "CandidateIncluded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A candidate timed out. `[candidate, head_data]`"] + pub struct CandidateTimedOut( + pub runtime_types::polkadot_primitives::v6::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub runtime_types::polkadot_primitives::v6::CoreIndex, + ); + impl ::subxt::events::StaticEvent for CandidateTimedOut { + const PALLET: &'static str = "ParaInclusion"; + const EVENT: &'static str = "CandidateTimedOut"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some upward messages have been received and will be processed."] + pub struct UpwardMessagesReceived { + pub from: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub count: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for UpwardMessagesReceived { + const PALLET: &'static str = "ParaInclusion"; + const EVENT: &'static str = "UpwardMessagesReceived"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_primitives :: v6 :: ValidatorIndex > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: AvailabilityBitfieldRecord < :: core :: primitive :: u32 > , :: subxt :: storage :: address :: Yes , () , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "ParaInclusion", + "AvailabilityBitfields", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, + 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, + 61u8, 32u8, 209u8, 54u8, 120u8, 187u8, 39u8, 114u8, 70u8, 212u8, 170u8, + ], + ) + } + #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: AvailabilityBitfieldRecord < :: core :: primitive :: u32 > , () , () , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "ParaInclusion", + "AvailabilityBitfields", + Vec::new(), + [ + 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, + 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, + 61u8, 32u8, 209u8, 54u8, 120u8, 187u8, 39u8, 114u8, 70u8, 212u8, 170u8, + ], + ) + } + #[doc = " Candidates pending availability by `ParaId`."] pub fn pending_availability (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: Id > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , :: subxt :: storage :: address :: Yes , () , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "ParaInclusion", + "PendingAvailability", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, + 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, + 87u8, 8u8, 142u8, 243u8, 142u8, 57u8, 121u8, 225u8, 218u8, 22u8, 132u8, + ], + ) + } + #[doc = " Candidates pending availability by `ParaId`."] pub fn pending_availability_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , () , () , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "ParaInclusion", + "PendingAvailability", + Vec::new(), + [ + 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, + 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, + 87u8, 8u8, 142u8, 243u8, 142u8, 57u8, 121u8, 225u8, 218u8, 22u8, 132u8, + ], + ) + } + #[doc = " The commitments of candidates pending availability, by `ParaId`."] + pub fn pending_availability_commitments( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::CandidateCommitments< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaInclusion", + "PendingAvailabilityCommitments", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, + 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, + 182u8, 246u8, 164u8, 108u8, 113u8, 16u8, 169u8, 64u8, 97u8, 202u8, + ], + ) + } + #[doc = " The commitments of candidates pending availability, by `ParaId`."] + pub fn pending_availability_commitments_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::CandidateCommitments< + ::core::primitive::u32, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaInclusion", + "PendingAvailabilityCommitments", + Vec::new(), + [ + 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, + 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, + 182u8, 246u8, 164u8, 108u8, 113u8, 16u8, 169u8, 64u8, 97u8, 202u8, + ], + ) + } + } + } + } + pub mod para_inherent { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::paras_inherent::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::paras_inherent::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Enter { + pub data: runtime_types::polkadot_primitives::v6::InherentData< + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Enter { + const PALLET: &'static str = "ParaInherent"; + const CALL: &'static str = "enter"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::enter`]."] + pub fn enter( + &self, + data: runtime_types::polkadot_primitives::v6::InherentData< + runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParaInherent", + "enter", + types::Enter { data }, + [ + 145u8, 120u8, 158u8, 39u8, 139u8, 223u8, 236u8, 209u8, 253u8, 108u8, + 188u8, 21u8, 23u8, 61u8, 25u8, 171u8, 30u8, 203u8, 161u8, 117u8, 90u8, + 55u8, 50u8, 107u8, 26u8, 52u8, 26u8, 158u8, 56u8, 218u8, 186u8, 142u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Whether the paras inherent was included within this block."] + #[doc = ""] + #[doc = " The `Option<()>` is effectively a `bool`, but it never hits storage in the `None` variant"] + #[doc = " due to the guarantees of FRAME's storage APIs."] + #[doc = ""] + #[doc = " If this is `None` at the end of the block, we panic and render the block invalid."] + pub fn included( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ParaInherent", + "Included", + vec![], + [ + 108u8, 164u8, 163u8, 34u8, 27u8, 124u8, 202u8, 167u8, 48u8, 130u8, + 155u8, 211u8, 148u8, 130u8, 76u8, 16u8, 5u8, 250u8, 211u8, 174u8, 90u8, + 77u8, 198u8, 153u8, 175u8, 168u8, 131u8, 244u8, 27u8, 93u8, 60u8, 46u8, + ], + ) + } + #[doc = " Scraped on chain data for extracting resolved disputes as well as backing votes."] + pub fn on_chain_votes( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::ScrapedOnChainVotes< + ::subxt::utils::H256, + >, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ParaInherent", + "OnChainVotes", + vec![], + [ + 200u8, 210u8, 42u8, 153u8, 85u8, 71u8, 171u8, 108u8, 148u8, 212u8, + 108u8, 61u8, 178u8, 77u8, 129u8, 90u8, 120u8, 218u8, 228u8, 152u8, + 120u8, 226u8, 29u8, 82u8, 239u8, 146u8, 41u8, 164u8, 193u8, 207u8, + 246u8, 115u8, + ], + ) + } + } + } + } + pub mod para_scheduler { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " All the validator groups. One for each core. Indices are into `ActiveValidators` - not the"] + #[doc = " broader set of Polkadot validators, but instead just the subset used for parachains during"] + #[doc = " this session."] + #[doc = ""] + #[doc = " Bound: The number of cores is the sum of the numbers of parachains and parathread"] + #[doc = " multiplexers. Reasonably, 100-1000. The dominant factor is the number of validators: safe"] + #[doc = " upper bound at 10k."] + pub fn validator_groups( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + ::std::vec::Vec, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParaScheduler", + "ValidatorGroups", + vec![], + [ + 129u8, 58u8, 65u8, 112u8, 4u8, 172u8, 167u8, 19u8, 96u8, 154u8, 159u8, + 83u8, 94u8, 125u8, 60u8, 43u8, 60u8, 70u8, 1u8, 58u8, 222u8, 31u8, + 73u8, 53u8, 71u8, 181u8, 49u8, 64u8, 212u8, 90u8, 128u8, 185u8, + ], + ) + } + #[doc = " One entry for each availability core. Entries are `None` if the core is not currently"] + #[doc = " occupied. Can be temporarily `Some` if scheduled but not occupied."] + #[doc = " The i'th parachain belongs to the i'th core, with the remaining cores all being"] + #[doc = " parathread-multiplexers."] + #[doc = ""] + #[doc = " Bounded by the maximum of either of these two values:"] + #[doc = " * The number of parachains and parathread multiplexers"] + #[doc = " * The number of validators divided by `configuration.max_validators_per_core`."] + pub fn availability_cores( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::polkadot_runtime_parachains::scheduler::pallet::CoreOccupied< + ::core::primitive::u32, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParaScheduler", + "AvailabilityCores", + vec![], + [ + 134u8, 59u8, 206u8, 4u8, 69u8, 72u8, 73u8, 25u8, 139u8, 152u8, 202u8, + 43u8, 224u8, 77u8, 64u8, 57u8, 218u8, 245u8, 254u8, 222u8, 227u8, 95u8, + 119u8, 134u8, 218u8, 47u8, 154u8, 233u8, 229u8, 172u8, 100u8, 86u8, + ], + ) + } + #[doc = " The block number where the session start occurred. Used to track how many group rotations"] + #[doc = " have occurred."] + #[doc = ""] + #[doc = " Note that in the context of parachains modules the session change is signaled during"] + #[doc = " the block and enacted at the end of the block (at the finalization stage, to be exact)."] + #[doc = " Thus for all intents and purposes the effect of the session change is observed at the"] + #[doc = " block following the session change, block number of which we save in this storage value."] + pub fn session_start_block( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParaScheduler", + "SessionStartBlock", + vec![], + [ + 185u8, 76u8, 120u8, 75u8, 154u8, 31u8, 33u8, 243u8, 16u8, 77u8, 100u8, + 249u8, 21u8, 44u8, 199u8, 195u8, 37u8, 9u8, 218u8, 148u8, 222u8, 90u8, + 113u8, 34u8, 152u8, 215u8, 114u8, 134u8, 81u8, 139u8, 164u8, 71u8, + ], + ) + } + #[doc = " One entry for each availability core. The `VecDeque` represents the assignments to be"] + #[doc = " scheduled on that core. `None` is used to signal to not schedule the next para of the core"] + #[doc = " as there is one currently being scheduled. Not using `None` here would overwrite the"] + #[doc = " `CoreState` in the runtime API. The value contained here will not be valid after the end of"] + #[doc = " a block. Runtime APIs should be used to determine scheduled cores/ for the upcoming block."] pub fn claim_queue (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: std :: vec :: Vec < :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , () >{ + ::subxt::storage::address::Address::new_static( + "ParaScheduler", + "ClaimQueue", + vec![], + [ + 132u8, 78u8, 109u8, 225u8, 170u8, 78u8, 17u8, 53u8, 56u8, 218u8, 14u8, + 17u8, 230u8, 247u8, 11u8, 223u8, 18u8, 98u8, 92u8, 164u8, 223u8, 143u8, + 241u8, 64u8, 185u8, 108u8, 228u8, 137u8, 122u8, 100u8, 29u8, 239u8, + ], + ) + } + } + } + } + pub mod paras { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::paras::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::paras::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSetCurrentCode { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub new_code: + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + } + impl ::subxt::blocks::StaticExtrinsic for ForceSetCurrentCode { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "force_set_current_code"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSetCurrentHead { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub new_head: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + } + impl ::subxt::blocks::StaticExtrinsic for ForceSetCurrentHead { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "force_set_current_head"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceScheduleCodeUpgrade { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub new_code: + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + pub relay_parent_number: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceScheduleCodeUpgrade { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "force_schedule_code_upgrade"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceNoteNewHead { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub new_head: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + } + impl ::subxt::blocks::StaticExtrinsic for ForceNoteNewHead { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "force_note_new_head"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceQueueAction { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for ForceQueueAction { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "force_queue_action"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddTrustedValidationCode { + pub validation_code: + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + } + impl ::subxt::blocks::StaticExtrinsic for AddTrustedValidationCode { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "add_trusted_validation_code"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PokeUnusedValidationCode { pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } + impl ::subxt::blocks::StaticExtrinsic for PokeUnusedValidationCode { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "poke_unused_validation_code"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct IncludePvfCheckStatement { + pub stmt: runtime_types::polkadot_primitives::v6::PvfCheckStatement, + pub signature: runtime_types::polkadot_primitives::v6::validator_app::Signature, + } + impl ::subxt::blocks::StaticExtrinsic for IncludePvfCheckStatement { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "include_pvf_check_statement"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSetMostRecentContext { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub context: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceSetMostRecentContext { + const PALLET: &'static str = "Paras"; + const CALL: &'static str = "force_set_most_recent_context"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::force_set_current_code`]."] + pub fn force_set_current_code( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "force_set_current_code", + types::ForceSetCurrentCode { para, new_code }, + [ + 204u8, 159u8, 184u8, 235u8, 65u8, 225u8, 223u8, 130u8, 139u8, 140u8, + 219u8, 58u8, 142u8, 253u8, 236u8, 239u8, 148u8, 190u8, 27u8, 234u8, + 165u8, 125u8, 129u8, 235u8, 98u8, 33u8, 172u8, 71u8, 90u8, 41u8, 182u8, + 80u8, + ], + ) + } + #[doc = "See [`Pallet::force_set_current_head`]."] + pub fn force_set_current_head( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + new_head: runtime_types::polkadot_parachain_primitives::primitives::HeadData, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "force_set_current_head", + types::ForceSetCurrentHead { para, new_head }, + [ + 184u8, 247u8, 184u8, 248u8, 89u8, 64u8, 18u8, 193u8, 254u8, 71u8, + 220u8, 195u8, 124u8, 212u8, 178u8, 169u8, 155u8, 189u8, 11u8, 135u8, + 247u8, 39u8, 253u8, 196u8, 111u8, 242u8, 189u8, 91u8, 226u8, 219u8, + 232u8, 238u8, + ], + ) + } + #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] + pub fn force_schedule_code_upgrade( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode, + relay_parent_number: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "force_schedule_code_upgrade", + types::ForceScheduleCodeUpgrade { para, new_code, relay_parent_number }, + [ + 131u8, 179u8, 138u8, 151u8, 167u8, 191u8, 2u8, 68u8, 85u8, 111u8, + 166u8, 65u8, 67u8, 52u8, 201u8, 41u8, 132u8, 128u8, 35u8, 177u8, 91u8, + 185u8, 114u8, 2u8, 123u8, 133u8, 164u8, 121u8, 170u8, 243u8, 223u8, + 61u8, + ], + ) + } + #[doc = "See [`Pallet::force_note_new_head`]."] + pub fn force_note_new_head( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + new_head: runtime_types::polkadot_parachain_primitives::primitives::HeadData, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "force_note_new_head", + types::ForceNoteNewHead { para, new_head }, + [ + 215u8, 12u8, 228u8, 208u8, 7u8, 24u8, 207u8, 60u8, 183u8, 241u8, 212u8, + 203u8, 139u8, 149u8, 9u8, 236u8, 77u8, 15u8, 242u8, 70u8, 62u8, 204u8, + 187u8, 91u8, 110u8, 73u8, 210u8, 2u8, 8u8, 118u8, 182u8, 171u8, + ], + ) + } + #[doc = "See [`Pallet::force_queue_action`]."] + pub fn force_queue_action( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "force_queue_action", + types::ForceQueueAction { para }, + [ + 112u8, 247u8, 239u8, 8u8, 91u8, 23u8, 111u8, 84u8, 179u8, 61u8, 235u8, + 49u8, 140u8, 110u8, 40u8, 226u8, 150u8, 253u8, 146u8, 193u8, 136u8, + 133u8, 100u8, 127u8, 38u8, 165u8, 159u8, 17u8, 205u8, 190u8, 6u8, + 117u8, + ], + ) + } + #[doc = "See [`Pallet::add_trusted_validation_code`]."] + pub fn add_trusted_validation_code( + &self, + validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "add_trusted_validation_code", + types::AddTrustedValidationCode { validation_code }, + [ + 196u8, 123u8, 133u8, 223u8, 3u8, 205u8, 127u8, 23u8, 82u8, 201u8, + 107u8, 47u8, 23u8, 75u8, 139u8, 198u8, 178u8, 171u8, 160u8, 61u8, + 132u8, 250u8, 76u8, 110u8, 3u8, 144u8, 90u8, 253u8, 89u8, 141u8, 162u8, + 135u8, + ], + ) + } + #[doc = "See [`Pallet::poke_unused_validation_code`]."] + pub fn poke_unused_validation_code( + &self, + validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "poke_unused_validation_code", + types::PokeUnusedValidationCode { validation_code_hash }, + [ + 180u8, 53u8, 213u8, 27u8, 150u8, 195u8, 50u8, 1u8, 62u8, 246u8, 244u8, + 229u8, 115u8, 202u8, 55u8, 140u8, 108u8, 28u8, 245u8, 66u8, 165u8, + 128u8, 105u8, 221u8, 7u8, 87u8, 242u8, 19u8, 88u8, 132u8, 36u8, 32u8, + ], + ) + } + #[doc = "See [`Pallet::include_pvf_check_statement`]."] + pub fn include_pvf_check_statement( + &self, + stmt: runtime_types::polkadot_primitives::v6::PvfCheckStatement, + signature: runtime_types::polkadot_primitives::v6::validator_app::Signature, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "include_pvf_check_statement", + types::IncludePvfCheckStatement { stmt, signature }, + [ + 104u8, 113u8, 121u8, 186u8, 41u8, 70u8, 254u8, 44u8, 207u8, 94u8, 61u8, + 148u8, 106u8, 240u8, 165u8, 223u8, 231u8, 190u8, 157u8, 97u8, 55u8, + 90u8, 229u8, 112u8, 129u8, 224u8, 29u8, 180u8, 242u8, 203u8, 195u8, + 19u8, + ], + ) + } + #[doc = "See [`Pallet::force_set_most_recent_context`]."] + pub fn force_set_most_recent_context( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + context: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Paras", + "force_set_most_recent_context", + types::ForceSetMostRecentContext { para, context }, + [ + 243u8, 17u8, 20u8, 229u8, 91u8, 87u8, 42u8, 159u8, 119u8, 61u8, 201u8, + 246u8, 79u8, 151u8, 209u8, 183u8, 35u8, 31u8, 2u8, 210u8, 187u8, 105u8, + 66u8, 106u8, 119u8, 241u8, 63u8, 63u8, 233u8, 68u8, 244u8, 137u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::paras::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Current code has been updated for a Para. `para_id`"] + pub struct CurrentCodeUpdated( + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + ); + impl ::subxt::events::StaticEvent for CurrentCodeUpdated { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "CurrentCodeUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Current head has been updated for a Para. `para_id`"] + pub struct CurrentHeadUpdated( + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + ); + impl ::subxt::events::StaticEvent for CurrentHeadUpdated { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "CurrentHeadUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A code upgrade has been scheduled for a Para. `para_id`"] + pub struct CodeUpgradeScheduled( + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + ); + impl ::subxt::events::StaticEvent for CodeUpgradeScheduled { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "CodeUpgradeScheduled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new head has been noted for a Para. `para_id`"] + pub struct NewHeadNoted( + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + ); + impl ::subxt::events::StaticEvent for NewHeadNoted { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "NewHeadNoted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A para has been queued to execute pending actions. `para_id`"] + pub struct ActionQueued( + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + pub ::core::primitive::u32, + ); + impl ::subxt::events::StaticEvent for ActionQueued { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "ActionQueued"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The given para either initiated or subscribed to a PVF check for the given validation"] + #[doc = "code. `code_hash` `para_id`"] + pub struct PvfCheckStarted( + pub runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + ); + impl ::subxt::events::StaticEvent for PvfCheckStarted { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "PvfCheckStarted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The given validation code was accepted by the PVF pre-checking vote."] + #[doc = "`code_hash` `para_id`"] + pub struct PvfCheckAccepted( + pub runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + ); + impl ::subxt::events::StaticEvent for PvfCheckAccepted { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "PvfCheckAccepted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The given validation code was rejected by the PVF pre-checking vote."] + #[doc = "`code_hash` `para_id`"] + pub struct PvfCheckRejected( + pub runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + pub runtime_types::polkadot_parachain_primitives::primitives::Id, + ); + impl ::subxt::events::StaticEvent for PvfCheckRejected { + const PALLET: &'static str = "Paras"; + const EVENT: &'static str = "PvfCheckRejected"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " All currently active PVF pre-checking votes."] + #[doc = ""] + #[doc = " Invariant:"] + #[doc = " - There are no PVF pre-checking votes that exists in list but not in the set and vice versa."] + pub fn pvf_active_vote_map( + &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::PvfCheckActiveVoteState< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "PvfActiveVoteMap", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 72u8, 55u8, 139u8, 104u8, 161u8, 63u8, 114u8, 153u8, 16u8, 221u8, 60u8, + 88u8, 52u8, 207u8, 123u8, 193u8, 11u8, 30u8, 19u8, 39u8, 231u8, 39u8, + 251u8, 44u8, 248u8, 129u8, 181u8, 173u8, 248u8, 89u8, 43u8, 106u8, + ], + ) + } + #[doc = " All currently active PVF pre-checking votes."] + #[doc = ""] + #[doc = " Invariant:"] + #[doc = " - There are no PVF pre-checking votes that exists in list but not in the set and vice versa."] + pub fn pvf_active_vote_map_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::PvfCheckActiveVoteState< + ::core::primitive::u32, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "PvfActiveVoteMap", + Vec::new(), + [ + 72u8, 55u8, 139u8, 104u8, 161u8, 63u8, 114u8, 153u8, 16u8, 221u8, 60u8, + 88u8, 52u8, 207u8, 123u8, 193u8, 11u8, 30u8, 19u8, 39u8, 231u8, 39u8, + 251u8, 44u8, 248u8, 129u8, 181u8, 173u8, 248u8, 89u8, 43u8, 106u8, + ], + ) + } + #[doc = " The list of all currently active PVF votes. Auxiliary to `PvfActiveVoteMap`."] pub fn pvf_active_vote_list (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , () >{ + ::subxt::storage::address::Address::new_static( + "Paras", + "PvfActiveVoteList", + vec![], + [ + 172u8, 215u8, 137u8, 191u8, 52u8, 104u8, 106u8, 118u8, 134u8, 82u8, + 137u8, 6u8, 175u8, 158u8, 58u8, 230u8, 231u8, 152u8, 195u8, 17u8, 51u8, + 133u8, 10u8, 205u8, 212u8, 6u8, 24u8, 59u8, 114u8, 222u8, 96u8, 42u8, + ], + ) + } + #[doc = " All lease holding parachains. Ordered ascending by `ParaId`. On demand parachains are not"] + #[doc = " included."] + #[doc = ""] + #[doc = " Consider using the [`ParachainsCache`] type of modifying."] + pub fn parachains( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "Parachains", + vec![], + [ + 242u8, 228u8, 175u8, 107u8, 242u8, 39u8, 52u8, 181u8, 32u8, 171u8, + 21u8, 169u8, 204u8, 19u8, 21u8, 217u8, 121u8, 239u8, 218u8, 252u8, + 80u8, 188u8, 119u8, 157u8, 235u8, 218u8, 221u8, 113u8, 0u8, 108u8, + 245u8, 210u8, + ], + ) + } + #[doc = " The current lifecycle of a all known Para IDs."] + pub fn para_lifecycles( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::ParaLifecycle, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "ParaLifecycles", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 2u8, 203u8, 32u8, 194u8, 76u8, 227u8, 250u8, 9u8, 168u8, 201u8, 171u8, + 180u8, 18u8, 169u8, 206u8, 183u8, 48u8, 189u8, 204u8, 192u8, 237u8, + 233u8, 156u8, 255u8, 102u8, 22u8, 101u8, 110u8, 194u8, 55u8, 118u8, + 81u8, + ], + ) + } + #[doc = " The current lifecycle of a all known Para IDs."] + pub fn para_lifecycles_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::ParaLifecycle, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "ParaLifecycles", + Vec::new(), + [ + 2u8, 203u8, 32u8, 194u8, 76u8, 227u8, 250u8, 9u8, 168u8, 201u8, 171u8, + 180u8, 18u8, 169u8, 206u8, 183u8, 48u8, 189u8, 204u8, 192u8, 237u8, + 233u8, 156u8, 255u8, 102u8, 22u8, 101u8, 110u8, 194u8, 55u8, 118u8, + 81u8, + ], + ) + } + #[doc = " The head-data of every registered para."] + pub fn heads( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "Heads", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 222u8, 116u8, 180u8, 190u8, 172u8, 192u8, 174u8, 132u8, 225u8, 180u8, + 119u8, 90u8, 5u8, 39u8, 92u8, 230u8, 116u8, 202u8, 92u8, 99u8, 135u8, + 201u8, 10u8, 58u8, 55u8, 211u8, 209u8, 86u8, 93u8, 133u8, 99u8, 139u8, + ], + ) + } + #[doc = " The head-data of every registered para."] + pub fn heads_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "Heads", + Vec::new(), + [ + 222u8, 116u8, 180u8, 190u8, 172u8, 192u8, 174u8, 132u8, 225u8, 180u8, + 119u8, 90u8, 5u8, 39u8, 92u8, 230u8, 116u8, 202u8, 92u8, 99u8, 135u8, + 201u8, 10u8, 58u8, 55u8, 211u8, 209u8, 86u8, 93u8, 133u8, 99u8, 139u8, + ], + ) + } + #[doc = " The context (relay-chain block number) of the most recent parachain head."] + pub fn most_recent_context( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "MostRecentContext", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 196u8, 150u8, 125u8, 121u8, 196u8, 182u8, 2u8, 5u8, 244u8, 170u8, 75u8, + 57u8, 162u8, 8u8, 104u8, 94u8, 114u8, 32u8, 192u8, 236u8, 120u8, 91u8, + 84u8, 118u8, 216u8, 143u8, 61u8, 208u8, 57u8, 180u8, 216u8, 243u8, + ], + ) + } + #[doc = " The context (relay-chain block number) of the most recent parachain head."] + pub fn most_recent_context_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "MostRecentContext", + Vec::new(), + [ + 196u8, 150u8, 125u8, 121u8, 196u8, 182u8, 2u8, 5u8, 244u8, 170u8, 75u8, + 57u8, 162u8, 8u8, 104u8, 94u8, 114u8, 32u8, 192u8, 236u8, 120u8, 91u8, + 84u8, 118u8, 216u8, 143u8, 61u8, 208u8, 57u8, 180u8, 216u8, 243u8, + ], + ) + } + #[doc = " The validation code hash of every live para."] + #[doc = ""] + #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] + pub fn current_code_hash( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "CurrentCodeHash", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 251u8, 100u8, 30u8, 46u8, 191u8, 60u8, 45u8, 221u8, 218u8, 20u8, 154u8, + 233u8, 211u8, 198u8, 151u8, 195u8, 99u8, 210u8, 126u8, 165u8, 240u8, + 129u8, 183u8, 252u8, 104u8, 119u8, 38u8, 155u8, 150u8, 198u8, 127u8, + 103u8, + ], + ) + } + #[doc = " The validation code hash of every live para."] + #[doc = ""] + #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] + pub fn current_code_hash_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "CurrentCodeHash", + Vec::new(), + [ + 251u8, 100u8, 30u8, 46u8, 191u8, 60u8, 45u8, 221u8, 218u8, 20u8, 154u8, + 233u8, 211u8, 198u8, 151u8, 195u8, 99u8, 210u8, 126u8, 165u8, 240u8, + 129u8, 183u8, 252u8, 104u8, 119u8, 38u8, 155u8, 150u8, 198u8, 127u8, + 103u8, + ], + ) + } + #[doc = " Actual past code hash, indicated by the para id as well as the block number at which it"] + #[doc = " became outdated."] + #[doc = ""] + #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] + pub fn past_code_hash( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "PastCodeHash", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, + 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, + 232u8, 8u8, 6u8, 71u8, 188u8, 140u8, 41u8, 10u8, 215u8, 22u8, 153u8, + ], + ) + } + #[doc = " Actual past code hash, indicated by the para id as well as the block number at which it"] + #[doc = " became outdated."] + #[doc = ""] + #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] + pub fn past_code_hash_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "PastCodeHash", + Vec::new(), + [ + 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, + 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, + 232u8, 8u8, 6u8, 71u8, 188u8, 140u8, 41u8, 10u8, 215u8, 22u8, 153u8, + ], + ) + } + #[doc = " Past code of parachains. The parachains themselves may not be registered anymore,"] + #[doc = " but we also keep their code on-chain for the same amount of time as outdated code"] + #[doc = " to keep it available for approval checkers."] + pub fn past_code_meta( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::ParaPastCodeMeta< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "PastCodeMeta", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 233u8, 47u8, 137u8, 174u8, 98u8, 64u8, 11u8, 75u8, 93u8, 222u8, 78u8, + 58u8, 66u8, 245u8, 151u8, 39u8, 144u8, 36u8, 84u8, 176u8, 239u8, 183u8, + 197u8, 176u8, 158u8, 139u8, 121u8, 189u8, 29u8, 244u8, 229u8, 73u8, + ], + ) + } + #[doc = " Past code of parachains. The parachains themselves may not be registered anymore,"] + #[doc = " but we also keep their code on-chain for the same amount of time as outdated code"] + #[doc = " to keep it available for approval checkers."] + pub fn past_code_meta_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::ParaPastCodeMeta< + ::core::primitive::u32, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "PastCodeMeta", + Vec::new(), + [ + 233u8, 47u8, 137u8, 174u8, 98u8, 64u8, 11u8, 75u8, 93u8, 222u8, 78u8, + 58u8, 66u8, 245u8, 151u8, 39u8, 144u8, 36u8, 84u8, 176u8, 239u8, 183u8, + 197u8, 176u8, 158u8, 139u8, 121u8, 189u8, 29u8, 244u8, 229u8, 73u8, + ], + ) + } + #[doc = " Which paras have past code that needs pruning and the relay-chain block at which the code"] + #[doc = " was replaced. Note that this is the actual height of the included block, not the expected"] + #[doc = " height at which the code upgrade would be applied, although they may be equal."] + #[doc = " This is to ensure the entire acceptance period is covered, not an offset acceptance period"] + #[doc = " starting from the time at which the parachain perceives a code upgrade as having occurred."] + #[doc = " Multiple entries for a single para are permitted. Ordered ascending by block number."] + pub fn past_code_pruning( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<( + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "PastCodePruning", + vec![], + [ + 67u8, 190u8, 51u8, 133u8, 173u8, 24u8, 151u8, 111u8, 108u8, 152u8, + 106u8, 18u8, 29u8, 80u8, 104u8, 120u8, 91u8, 138u8, 209u8, 49u8, 255u8, + 211u8, 53u8, 195u8, 61u8, 188u8, 183u8, 53u8, 37u8, 230u8, 53u8, 183u8, + ], + ) + } + #[doc = " The block number at which the planned code change is expected for a para."] + #[doc = " The change will be applied after the first parablock for this ID included which executes"] + #[doc = " in the context of a relay chain block with a number >= `expected_at`."] + pub fn future_code_upgrades( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "FutureCodeUpgrades", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 163u8, 168u8, 23u8, 138u8, 198u8, 70u8, 135u8, 221u8, 167u8, 187u8, + 15u8, 144u8, 228u8, 8u8, 138u8, 125u8, 101u8, 154u8, 11u8, 74u8, 173u8, + 167u8, 17u8, 97u8, 240u8, 6u8, 20u8, 161u8, 25u8, 111u8, 242u8, 9u8, + ], + ) + } + #[doc = " The block number at which the planned code change is expected for a para."] + #[doc = " The change will be applied after the first parablock for this ID included which executes"] + #[doc = " in the context of a relay chain block with a number >= `expected_at`."] + pub fn future_code_upgrades_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "FutureCodeUpgrades", + Vec::new(), + [ + 163u8, 168u8, 23u8, 138u8, 198u8, 70u8, 135u8, 221u8, 167u8, 187u8, + 15u8, 144u8, 228u8, 8u8, 138u8, 125u8, 101u8, 154u8, 11u8, 74u8, 173u8, + 167u8, 17u8, 97u8, 240u8, 6u8, 20u8, 161u8, 25u8, 111u8, 242u8, 9u8, + ], + ) + } + #[doc = " The actual future code hash of a para."] + #[doc = ""] + #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] + pub fn future_code_hash( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "FutureCodeHash", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 62u8, 238u8, 183u8, 12u8, 197u8, 119u8, 163u8, 239u8, 192u8, 228u8, + 110u8, 58u8, 128u8, 223u8, 32u8, 137u8, 109u8, 127u8, 41u8, 83u8, 91u8, + 98u8, 156u8, 118u8, 96u8, 147u8, 16u8, 31u8, 5u8, 92u8, 227u8, 230u8, + ], + ) + } + #[doc = " The actual future code hash of a para."] + #[doc = ""] + #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] + pub fn future_code_hash_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "FutureCodeHash", + Vec::new(), + [ + 62u8, 238u8, 183u8, 12u8, 197u8, 119u8, 163u8, 239u8, 192u8, 228u8, + 110u8, 58u8, 128u8, 223u8, 32u8, 137u8, 109u8, 127u8, 41u8, 83u8, 91u8, + 98u8, 156u8, 118u8, 96u8, 147u8, 16u8, 31u8, 5u8, 92u8, 227u8, 230u8, + ], + ) + } + #[doc = " This is used by the relay-chain to communicate to a parachain a go-ahead with in the upgrade"] + #[doc = " procedure."] + #[doc = ""] + #[doc = " This value is absent when there are no upgrades scheduled or during the time the relay chain"] + #[doc = " performs the checks. It is set at the first relay-chain block when the corresponding"] + #[doc = " parachain can switch its upgrade function. As soon as the parachain's block is included, the"] + #[doc = " value gets reset to `None`."] + #[doc = ""] + #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] + #[doc = " the format will require migration of parachains."] + pub fn upgrade_go_ahead_signal( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::UpgradeGoAhead, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpgradeGoAheadSignal", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 41u8, 80u8, 120u8, 6u8, 98u8, 85u8, 36u8, 37u8, 170u8, 189u8, 56u8, + 127u8, 155u8, 180u8, 112u8, 195u8, 135u8, 214u8, 235u8, 87u8, 197u8, + 247u8, 125u8, 26u8, 232u8, 82u8, 250u8, 90u8, 126u8, 106u8, 62u8, + 217u8, + ], + ) + } + #[doc = " This is used by the relay-chain to communicate to a parachain a go-ahead with in the upgrade"] + #[doc = " procedure."] + #[doc = ""] + #[doc = " This value is absent when there are no upgrades scheduled or during the time the relay chain"] + #[doc = " performs the checks. It is set at the first relay-chain block when the corresponding"] + #[doc = " parachain can switch its upgrade function. As soon as the parachain's block is included, the"] + #[doc = " value gets reset to `None`."] + #[doc = ""] + #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] + #[doc = " the format will require migration of parachains."] + pub fn upgrade_go_ahead_signal_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::UpgradeGoAhead, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpgradeGoAheadSignal", + Vec::new(), + [ + 41u8, 80u8, 120u8, 6u8, 98u8, 85u8, 36u8, 37u8, 170u8, 189u8, 56u8, + 127u8, 155u8, 180u8, 112u8, 195u8, 135u8, 214u8, 235u8, 87u8, 197u8, + 247u8, 125u8, 26u8, 232u8, 82u8, 250u8, 90u8, 126u8, 106u8, 62u8, + 217u8, + ], + ) + } + #[doc = " This is used by the relay-chain to communicate that there are restrictions for performing"] + #[doc = " an upgrade for this parachain."] + #[doc = ""] + #[doc = " This may be a because the parachain waits for the upgrade cooldown to expire. Another"] + #[doc = " potential use case is when we want to perform some maintenance (such as storage migration)"] + #[doc = " we could restrict upgrades to make the process simpler."] + #[doc = ""] + #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] + #[doc = " the format will require migration of parachains."] + pub fn upgrade_restriction_signal( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::UpgradeRestriction, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpgradeRestrictionSignal", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 158u8, 105u8, 62u8, 252u8, 149u8, 145u8, 34u8, 92u8, 119u8, 204u8, + 46u8, 96u8, 117u8, 183u8, 134u8, 20u8, 172u8, 243u8, 145u8, 113u8, + 74u8, 119u8, 96u8, 107u8, 129u8, 109u8, 96u8, 143u8, 77u8, 14u8, 56u8, + 117u8, + ], + ) + } + #[doc = " This is used by the relay-chain to communicate that there are restrictions for performing"] + #[doc = " an upgrade for this parachain."] + #[doc = ""] + #[doc = " This may be a because the parachain waits for the upgrade cooldown to expire. Another"] + #[doc = " potential use case is when we want to perform some maintenance (such as storage migration)"] + #[doc = " we could restrict upgrades to make the process simpler."] + #[doc = ""] + #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] + #[doc = " the format will require migration of parachains."] + pub fn upgrade_restriction_signal_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::UpgradeRestriction, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpgradeRestrictionSignal", + Vec::new(), + [ + 158u8, 105u8, 62u8, 252u8, 149u8, 145u8, 34u8, 92u8, 119u8, 204u8, + 46u8, 96u8, 117u8, 183u8, 134u8, 20u8, 172u8, 243u8, 145u8, 113u8, + 74u8, 119u8, 96u8, 107u8, 129u8, 109u8, 96u8, 143u8, 77u8, 14u8, 56u8, + 117u8, + ], + ) + } + #[doc = " The list of parachains that are awaiting for their upgrade restriction to cooldown."] + #[doc = ""] + #[doc = " Ordered ascending by block number."] + pub fn upgrade_cooldowns( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<( + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpgradeCooldowns", + vec![], + [ + 180u8, 197u8, 115u8, 209u8, 126u8, 120u8, 133u8, 54u8, 232u8, 192u8, + 47u8, 17u8, 21u8, 8u8, 231u8, 67u8, 1u8, 89u8, 127u8, 38u8, 179u8, + 190u8, 169u8, 110u8, 20u8, 92u8, 139u8, 227u8, 26u8, 59u8, 245u8, + 174u8, + ], + ) + } + #[doc = " The list of upcoming code upgrades. Each item is a pair of which para performs a code"] + #[doc = " upgrade and at which relay-chain block it is expected at."] + #[doc = ""] + #[doc = " Ordered ascending by block number."] + pub fn upcoming_upgrades( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<( + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpcomingUpgrades", + vec![], + [ + 38u8, 195u8, 15u8, 56u8, 225u8, 199u8, 105u8, 84u8, 128u8, 51u8, 44u8, + 248u8, 237u8, 32u8, 36u8, 72u8, 77u8, 137u8, 124u8, 88u8, 242u8, 185u8, + 50u8, 148u8, 216u8, 156u8, 209u8, 101u8, 207u8, 127u8, 66u8, 95u8, + ], + ) + } + #[doc = " The actions to perform during the start of a specific session index."] + pub fn actions_queue( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "ActionsQueue", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 13u8, 25u8, 129u8, 203u8, 95u8, 206u8, 254u8, 240u8, 170u8, 209u8, + 55u8, 117u8, 70u8, 220u8, 139u8, 102u8, 9u8, 229u8, 139u8, 120u8, 67u8, + 246u8, 214u8, 59u8, 81u8, 116u8, 54u8, 67u8, 129u8, 32u8, 67u8, 92u8, + ], + ) + } + #[doc = " The actions to perform during the start of a specific session index."] + pub fn actions_queue_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "ActionsQueue", + Vec::new(), + [ + 13u8, 25u8, 129u8, 203u8, 95u8, 206u8, 254u8, 240u8, 170u8, 209u8, + 55u8, 117u8, 70u8, 220u8, 139u8, 102u8, 9u8, 229u8, 139u8, 120u8, 67u8, + 246u8, 214u8, 59u8, 81u8, 116u8, 54u8, 67u8, 129u8, 32u8, 67u8, 92u8, + ], + ) + } + #[doc = " Upcoming paras instantiation arguments."] + #[doc = ""] + #[doc = " NOTE that after PVF pre-checking is enabled the para genesis arg will have it's code set"] + #[doc = " to empty. Instead, the code will be saved into the storage right away via `CodeByHash`."] + pub fn upcoming_paras_genesis( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpcomingParasGenesis", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 215u8, 121u8, 106u8, 13u8, 102u8, 47u8, 129u8, 221u8, 153u8, 91u8, + 23u8, 94u8, 11u8, 39u8, 19u8, 180u8, 136u8, 136u8, 254u8, 152u8, 250u8, + 150u8, 40u8, 87u8, 135u8, 121u8, 219u8, 151u8, 111u8, 35u8, 43u8, + 195u8, + ], + ) + } + #[doc = " Upcoming paras instantiation arguments."] + #[doc = ""] + #[doc = " NOTE that after PVF pre-checking is enabled the para genesis arg will have it's code set"] + #[doc = " to empty. Instead, the code will be saved into the storage right away via `CodeByHash`."] + pub fn upcoming_paras_genesis_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "UpcomingParasGenesis", + Vec::new(), + [ + 215u8, 121u8, 106u8, 13u8, 102u8, 47u8, 129u8, 221u8, 153u8, 91u8, + 23u8, 94u8, 11u8, 39u8, 19u8, 180u8, 136u8, 136u8, 254u8, 152u8, 250u8, + 150u8, 40u8, 87u8, 135u8, 121u8, 219u8, 151u8, 111u8, 35u8, 43u8, + 195u8, + ], + ) + } + #[doc = " The number of reference on the validation code in [`CodeByHash`] storage."] + pub fn code_by_hash_refs( + &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "CodeByHashRefs", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 47u8, 50u8, 103u8, 161u8, 130u8, 252u8, 157u8, 35u8, 174u8, 37u8, + 102u8, 60u8, 195u8, 30u8, 164u8, 203u8, 67u8, 129u8, 107u8, 181u8, + 166u8, 205u8, 230u8, 91u8, 36u8, 187u8, 253u8, 150u8, 39u8, 168u8, + 223u8, 16u8, + ], + ) + } + #[doc = " The number of reference on the validation code in [`CodeByHash`] storage."] + pub fn code_by_hash_refs_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "CodeByHashRefs", + Vec::new(), + [ + 47u8, 50u8, 103u8, 161u8, 130u8, 252u8, 157u8, 35u8, 174u8, 37u8, + 102u8, 60u8, 195u8, 30u8, 164u8, 203u8, 67u8, 129u8, 107u8, 181u8, + 166u8, 205u8, 230u8, 91u8, 36u8, 187u8, 253u8, 150u8, 39u8, 168u8, + 223u8, 16u8, + ], + ) + } + #[doc = " Validation code stored by its hash."] + #[doc = ""] + #[doc = " This storage is consistent with [`FutureCodeHash`], [`CurrentCodeHash`] and"] + #[doc = " [`PastCodeHash`]."] + pub fn code_by_hash( + &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "CodeByHash", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 155u8, 102u8, 73u8, 180u8, 127u8, 211u8, 181u8, 44u8, 56u8, 235u8, + 49u8, 4u8, 25u8, 213u8, 116u8, 200u8, 232u8, 203u8, 190u8, 90u8, 93u8, + 6u8, 57u8, 227u8, 240u8, 92u8, 157u8, 129u8, 3u8, 148u8, 45u8, 143u8, + ], + ) + } + #[doc = " Validation code stored by its hash."] + #[doc = ""] + #[doc = " This storage is consistent with [`FutureCodeHash`], [`CurrentCodeHash`] and"] + #[doc = " [`PastCodeHash`]."] + pub fn code_by_hash_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "CodeByHash", + Vec::new(), + [ + 155u8, 102u8, 73u8, 180u8, 127u8, 211u8, 181u8, 44u8, 56u8, 235u8, + 49u8, 4u8, 25u8, 213u8, 116u8, 200u8, 232u8, 203u8, 190u8, 90u8, 93u8, + 6u8, 57u8, 227u8, 240u8, 92u8, 157u8, 129u8, 3u8, 148u8, 45u8, 143u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + pub fn unsigned_priority( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Paras", + "UnsignedPriority", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod initializer { + use super::{root_mod, runtime_types}; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::initializer::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceApprove { + pub up_to: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceApprove { + const PALLET: &'static str = "Initializer"; + const CALL: &'static str = "force_approve"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::force_approve`]."] + pub fn force_approve( + &self, + up_to: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Initializer", + "force_approve", + types::ForceApprove { up_to }, + [ + 232u8, 166u8, 27u8, 229u8, 157u8, 240u8, 18u8, 137u8, 5u8, 159u8, + 179u8, 239u8, 218u8, 41u8, 181u8, 42u8, 159u8, 243u8, 246u8, 214u8, + 227u8, 77u8, 58u8, 70u8, 241u8, 114u8, 175u8, 124u8, 77u8, 102u8, + 105u8, 199u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Whether the parachains modules have been initialized within this block."] + #[doc = ""] + #[doc = " Semantically a `bool`, but this guarantees it should never hit the trie,"] + #[doc = " as this is cleared in `on_finalize` and Frame optimizes `None` values to be empty values."] + #[doc = ""] + #[doc = " As a `bool`, `set(false)` and `remove()` both lead to the next `get()` being false, but one"] + #[doc = " of them writes to the trie and one does not. This confusion makes `Option<()>` more suitable"] + #[doc = " for the semantics of this variable."] + pub fn has_initialized( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Initializer", + "HasInitialized", + vec![], + [ + 156u8, 208u8, 212u8, 86u8, 105u8, 148u8, 252u8, 11u8, 140u8, 67u8, + 231u8, 86u8, 1u8, 147u8, 178u8, 79u8, 27u8, 249u8, 137u8, 103u8, 178u8, + 50u8, 114u8, 157u8, 239u8, 86u8, 89u8, 233u8, 86u8, 58u8, 37u8, 67u8, + ], + ) + } + #[doc = " Buffered session changes along with the block number at which they should be applied."] + #[doc = ""] + #[doc = " Typically this will be empty or one element long. Apart from that this item never hits"] + #[doc = " the storage."] + #[doc = ""] + #[doc = " However this is a `Vec` regardless to handle various edge cases that may occur at runtime"] + #[doc = " upgrade boundaries or if governance intervenes."] pub fn buffered_session_changes (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: initializer :: BufferedSessionChange > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , () >{ + ::subxt::storage::address::Address::new_static( + "Initializer", + "BufferedSessionChanges", + vec![], + [ + 99u8, 153u8, 100u8, 11u8, 28u8, 62u8, 163u8, 239u8, 177u8, 55u8, 151u8, + 242u8, 227u8, 59u8, 176u8, 10u8, 227u8, 51u8, 252u8, 191u8, 233u8, + 36u8, 1u8, 131u8, 255u8, 56u8, 6u8, 65u8, 5u8, 185u8, 114u8, 139u8, + ], + ) + } + } + } + } + pub mod dmp { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The downward messages addressed for a certain para."] + pub fn downward_message_queues( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::polkadot_core_primitives::InboundDownwardMessage< + ::core::primitive::u32, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Dmp", + "DownwardMessageQueues", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 38u8, 183u8, 133u8, 200u8, 199u8, 135u8, 68u8, 232u8, 189u8, 168u8, + 3u8, 219u8, 201u8, 180u8, 156u8, 79u8, 134u8, 164u8, 94u8, 114u8, + 102u8, 25u8, 108u8, 53u8, 219u8, 155u8, 102u8, 100u8, 58u8, 28u8, + 246u8, 20u8, + ], + ) + } + #[doc = " The downward messages addressed for a certain para."] + pub fn downward_message_queues_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::polkadot_core_primitives::InboundDownwardMessage< + ::core::primitive::u32, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Dmp", + "DownwardMessageQueues", + Vec::new(), + [ + 38u8, 183u8, 133u8, 200u8, 199u8, 135u8, 68u8, 232u8, 189u8, 168u8, + 3u8, 219u8, 201u8, 180u8, 156u8, 79u8, 134u8, 164u8, 94u8, 114u8, + 102u8, 25u8, 108u8, 53u8, 219u8, 155u8, 102u8, 100u8, 58u8, 28u8, + 246u8, 20u8, + ], + ) + } + #[doc = " A mapping that stores the downward message queue MQC head for each para."] + #[doc = ""] + #[doc = " Each link in this chain has a form:"] + #[doc = " `(prev_head, B, H(M))`, where"] + #[doc = " - `prev_head`: is the previous head hash or zero if none."] + #[doc = " - `B`: is the relay-chain block number in which a message was appended."] + #[doc = " - `H(M)`: is the hash of the message being appended."] + pub fn downward_message_queue_heads( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Dmp", + "DownwardMessageQueueHeads", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 135u8, 165u8, 240u8, 0u8, 25u8, 110u8, 9u8, 108u8, 251u8, 225u8, 109u8, + 184u8, 90u8, 132u8, 9u8, 151u8, 12u8, 118u8, 153u8, 212u8, 140u8, + 205u8, 94u8, 98u8, 110u8, 167u8, 155u8, 43u8, 61u8, 35u8, 52u8, 56u8, + ], + ) + } + #[doc = " A mapping that stores the downward message queue MQC head for each para."] + #[doc = ""] + #[doc = " Each link in this chain has a form:"] + #[doc = " `(prev_head, B, H(M))`, where"] + #[doc = " - `prev_head`: is the previous head hash or zero if none."] + #[doc = " - `B`: is the relay-chain block number in which a message was appended."] + #[doc = " - `H(M)`: is the hash of the message being appended."] + pub fn downward_message_queue_heads_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Dmp", + "DownwardMessageQueueHeads", + Vec::new(), + [ + 135u8, 165u8, 240u8, 0u8, 25u8, 110u8, 9u8, 108u8, 251u8, 225u8, 109u8, + 184u8, 90u8, 132u8, 9u8, 151u8, 12u8, 118u8, 153u8, 212u8, 140u8, + 205u8, 94u8, 98u8, 110u8, 167u8, 155u8, 43u8, 61u8, 35u8, 52u8, 56u8, + ], + ) + } + #[doc = " The factor to multiply the base delivery fee by."] + pub fn delivery_fee_factor( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::fixed_point::FixedU128, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Dmp", + "DeliveryFeeFactor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 43u8, 5u8, 63u8, 235u8, 115u8, 155u8, 130u8, 27u8, 75u8, 216u8, 177u8, + 135u8, 203u8, 147u8, 167u8, 95u8, 208u8, 188u8, 25u8, 14u8, 84u8, 63u8, + 116u8, 41u8, 148u8, 110u8, 115u8, 215u8, 196u8, 36u8, 75u8, 102u8, + ], + ) + } + #[doc = " The factor to multiply the base delivery fee by."] + pub fn delivery_fee_factor_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::fixed_point::FixedU128, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Dmp", + "DeliveryFeeFactor", + Vec::new(), + [ + 43u8, 5u8, 63u8, 235u8, 115u8, 155u8, 130u8, 27u8, 75u8, 216u8, 177u8, + 135u8, 203u8, 147u8, 167u8, 95u8, 208u8, 188u8, 25u8, 14u8, 84u8, 63u8, + 116u8, 41u8, 148u8, 110u8, 115u8, 215u8, 196u8, 36u8, 75u8, 102u8, + ], + ) + } + } + } + } + pub mod hrmp { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::hrmp::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::hrmp::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HrmpInitOpenChannel { + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub proposed_max_capacity: ::core::primitive::u32, + pub proposed_max_message_size: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for HrmpInitOpenChannel { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "hrmp_init_open_channel"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HrmpAcceptOpenChannel { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for HrmpAcceptOpenChannel { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "hrmp_accept_open_channel"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HrmpCloseChannel { + pub channel_id: + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + } + impl ::subxt::blocks::StaticExtrinsic for HrmpCloseChannel { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "hrmp_close_channel"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceCleanHrmp { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub num_inbound: ::core::primitive::u32, + pub num_outbound: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceCleanHrmp { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "force_clean_hrmp"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceProcessHrmpOpen { + pub channels: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceProcessHrmpOpen { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "force_process_hrmp_open"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceProcessHrmpClose { + pub channels: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceProcessHrmpClose { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "force_process_hrmp_close"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HrmpCancelOpenRequest { + pub channel_id: + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + pub open_requests: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for HrmpCancelOpenRequest { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "hrmp_cancel_open_request"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceOpenHrmpChannel { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub max_capacity: ::core::primitive::u32, + pub max_message_size: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceOpenHrmpChannel { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "force_open_hrmp_channel"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EstablishSystemChannel { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for EstablishSystemChannel { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "establish_system_channel"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PokeChannelDeposits { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for PokeChannelDeposits { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "poke_channel_deposits"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::hrmp_init_open_channel`]."] + pub fn hrmp_init_open_channel( + &self, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + proposed_max_capacity: ::core::primitive::u32, + proposed_max_message_size: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "hrmp_init_open_channel", + types::HrmpInitOpenChannel { + recipient, + proposed_max_capacity, + proposed_max_message_size, + }, + [ + 89u8, 39u8, 43u8, 191u8, 235u8, 40u8, 253u8, 129u8, 174u8, 108u8, 26u8, + 206u8, 7u8, 146u8, 206u8, 56u8, 53u8, 104u8, 138u8, 203u8, 108u8, + 195u8, 190u8, 231u8, 223u8, 33u8, 32u8, 157u8, 148u8, 235u8, 67u8, + 82u8, + ], + ) + } + #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] + pub fn hrmp_accept_open_channel( + &self, + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "hrmp_accept_open_channel", + types::HrmpAcceptOpenChannel { sender }, + [ + 133u8, 77u8, 88u8, 40u8, 47u8, 81u8, 95u8, 206u8, 165u8, 41u8, 191u8, + 241u8, 130u8, 244u8, 70u8, 227u8, 69u8, 80u8, 130u8, 126u8, 34u8, 69u8, + 214u8, 81u8, 7u8, 199u8, 249u8, 162u8, 234u8, 233u8, 195u8, 156u8, + ], + ) + } + #[doc = "See [`Pallet::hrmp_close_channel`]."] + pub fn hrmp_close_channel( + &self, + channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "hrmp_close_channel", + types::HrmpCloseChannel { channel_id }, + [ + 174u8, 225u8, 93u8, 69u8, 133u8, 145u8, 156u8, 94u8, 185u8, 254u8, + 60u8, 209u8, 232u8, 79u8, 237u8, 173u8, 180u8, 45u8, 117u8, 165u8, + 202u8, 195u8, 84u8, 68u8, 241u8, 164u8, 151u8, 216u8, 96u8, 20u8, 7u8, + 45u8, + ], + ) + } + #[doc = "See [`Pallet::force_clean_hrmp`]."] + pub fn force_clean_hrmp( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + num_inbound: ::core::primitive::u32, + num_outbound: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "force_clean_hrmp", + types::ForceCleanHrmp { para, num_inbound, num_outbound }, + [ + 0u8, 184u8, 199u8, 44u8, 26u8, 150u8, 124u8, 255u8, 40u8, 63u8, 74u8, + 31u8, 133u8, 22u8, 241u8, 84u8, 44u8, 184u8, 128u8, 54u8, 175u8, 127u8, + 255u8, 232u8, 239u8, 26u8, 50u8, 27u8, 81u8, 223u8, 136u8, 110u8, + ], + ) + } + #[doc = "See [`Pallet::force_process_hrmp_open`]."] + pub fn force_process_hrmp_open( + &self, + channels: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "force_process_hrmp_open", + types::ForceProcessHrmpOpen { channels }, + [ + 66u8, 138u8, 220u8, 119u8, 251u8, 148u8, 72u8, 167u8, 49u8, 156u8, + 227u8, 174u8, 153u8, 145u8, 190u8, 195u8, 192u8, 183u8, 41u8, 213u8, + 134u8, 8u8, 114u8, 30u8, 191u8, 81u8, 208u8, 54u8, 120u8, 36u8, 195u8, + 246u8, + ], + ) + } + #[doc = "See [`Pallet::force_process_hrmp_close`]."] + pub fn force_process_hrmp_close( + &self, + channels: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "force_process_hrmp_close", + types::ForceProcessHrmpClose { channels }, + [ + 22u8, 60u8, 113u8, 94u8, 199u8, 101u8, 204u8, 34u8, 158u8, 77u8, 228u8, + 29u8, 180u8, 249u8, 46u8, 103u8, 206u8, 155u8, 164u8, 229u8, 70u8, + 189u8, 218u8, 171u8, 173u8, 22u8, 210u8, 73u8, 232u8, 99u8, 225u8, + 176u8, + ], + ) + } + #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] + pub fn hrmp_cancel_open_request( + &self, + channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId, + open_requests: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "hrmp_cancel_open_request", + types::HrmpCancelOpenRequest { channel_id, open_requests }, + [ + 10u8, 192u8, 79u8, 120u8, 6u8, 88u8, 139u8, 75u8, 87u8, 32u8, 125u8, + 47u8, 178u8, 132u8, 156u8, 232u8, 28u8, 123u8, 74u8, 10u8, 180u8, 90u8, + 145u8, 123u8, 40u8, 89u8, 235u8, 25u8, 237u8, 137u8, 114u8, 173u8, + ], + ) + } + #[doc = "See [`Pallet::force_open_hrmp_channel`]."] + pub fn force_open_hrmp_channel( + &self, + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + max_capacity: ::core::primitive::u32, + max_message_size: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "force_open_hrmp_channel", + types::ForceOpenHrmpChannel { + sender, + recipient, + max_capacity, + max_message_size, + }, + [ + 37u8, 251u8, 1u8, 201u8, 129u8, 217u8, 193u8, 179u8, 98u8, 153u8, + 226u8, 139u8, 107u8, 222u8, 3u8, 76u8, 104u8, 248u8, 31u8, 241u8, 90u8, + 189u8, 56u8, 92u8, 118u8, 68u8, 177u8, 70u8, 5u8, 44u8, 234u8, 27u8, + ], + ) + } + #[doc = "See [`Pallet::establish_system_channel`]."] + pub fn establish_system_channel( + &self, + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "establish_system_channel", + types::EstablishSystemChannel { sender, recipient }, + [ + 179u8, 12u8, 66u8, 57u8, 24u8, 114u8, 175u8, 141u8, 80u8, 157u8, 204u8, + 122u8, 116u8, 139u8, 35u8, 51u8, 68u8, 36u8, 61u8, 135u8, 221u8, 40u8, + 135u8, 21u8, 91u8, 60u8, 51u8, 51u8, 32u8, 224u8, 71u8, 182u8, + ], + ) + } + #[doc = "See [`Pallet::poke_channel_deposits`]."] + pub fn poke_channel_deposits( + &self, + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "poke_channel_deposits", + types::PokeChannelDeposits { sender, recipient }, + [ + 93u8, 153u8, 50u8, 127u8, 136u8, 255u8, 6u8, 155u8, 73u8, 216u8, 145u8, + 229u8, 200u8, 75u8, 94u8, 39u8, 117u8, 188u8, 62u8, 172u8, 210u8, + 212u8, 37u8, 11u8, 166u8, 31u8, 101u8, 129u8, 29u8, 229u8, 200u8, 16u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::hrmp::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Open HRMP channel requested."] + pub struct OpenChannelRequested { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub proposed_max_capacity: ::core::primitive::u32, + pub proposed_max_message_size: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for OpenChannelRequested { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "OpenChannelRequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An HRMP channel request sent by the receiver was canceled by either party."] + pub struct OpenChannelCanceled { + pub by_parachain: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub channel_id: + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + } + impl ::subxt::events::StaticEvent for OpenChannelCanceled { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "OpenChannelCanceled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Open HRMP channel accepted."] + pub struct OpenChannelAccepted { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for OpenChannelAccepted { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "OpenChannelAccepted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "HRMP channel closed."] + pub struct ChannelClosed { + pub by_parachain: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub channel_id: + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + } + impl ::subxt::events::StaticEvent for ChannelClosed { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "ChannelClosed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An HRMP channel was opened via Root origin."] + pub struct HrmpChannelForceOpened { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub proposed_max_capacity: ::core::primitive::u32, + pub proposed_max_message_size: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for HrmpChannelForceOpened { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "HrmpChannelForceOpened"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An HRMP channel was opened between two system chains."] + pub struct HrmpSystemChannelOpened { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub proposed_max_capacity: ::core::primitive::u32, + pub proposed_max_message_size: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for HrmpSystemChannelOpened { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "HrmpSystemChannelOpened"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An HRMP channel's deposits were updated."] + pub struct OpenChannelDepositsUpdated { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for OpenChannelDepositsUpdated { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "OpenChannelDepositsUpdated"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The set of pending HRMP open channel requests."] + #[doc = ""] + #[doc = " The set is accompanied by a list for iteration."] + #[doc = ""] + #[doc = " Invariant:"] + #[doc = " - There are no channels that exists in list but not in the set and vice versa."] + pub fn hrmp_open_channel_requests( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpOpenChannelRequests", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 164u8, 97u8, 52u8, 242u8, 255u8, 67u8, 248u8, 170u8, 204u8, 92u8, 81u8, + 144u8, 11u8, 63u8, 145u8, 167u8, 8u8, 174u8, 221u8, 147u8, 125u8, + 144u8, 243u8, 33u8, 235u8, 104u8, 240u8, 99u8, 96u8, 211u8, 163u8, + 121u8, + ], + ) + } + #[doc = " The set of pending HRMP open channel requests."] + #[doc = ""] + #[doc = " The set is accompanied by a list for iteration."] + #[doc = ""] + #[doc = " Invariant:"] + #[doc = " - There are no channels that exists in list but not in the set and vice versa."] + pub fn hrmp_open_channel_requests_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpOpenChannelRequests", + Vec::new(), + [ + 164u8, 97u8, 52u8, 242u8, 255u8, 67u8, 248u8, 170u8, 204u8, 92u8, 81u8, + 144u8, 11u8, 63u8, 145u8, 167u8, 8u8, 174u8, 221u8, 147u8, 125u8, + 144u8, 243u8, 33u8, 235u8, 104u8, 240u8, 99u8, 96u8, 211u8, 163u8, + 121u8, + ], + ) + } + pub fn hrmp_open_channel_requests_list( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpOpenChannelRequestsList", + vec![], + [ + 45u8, 190u8, 124u8, 26u8, 37u8, 249u8, 140u8, 254u8, 101u8, 249u8, + 27u8, 117u8, 218u8, 3u8, 126u8, 114u8, 143u8, 65u8, 122u8, 246u8, + 237u8, 173u8, 145u8, 175u8, 133u8, 119u8, 127u8, 81u8, 59u8, 206u8, + 159u8, 39u8, + ], + ) + } + #[doc = " This mapping tracks how many open channel requests are initiated by a given sender para."] + #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items that has"] + #[doc = " `(X, _)` as the number of `HrmpOpenChannelRequestCount` for `X`."] + pub fn hrmp_open_channel_request_count( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpOpenChannelRequestCount", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 136u8, 72u8, 56u8, 31u8, 229u8, 99u8, 241u8, 14u8, 159u8, 243u8, 179u8, + 222u8, 252u8, 56u8, 63u8, 24u8, 204u8, 130u8, 47u8, 161u8, 133u8, + 227u8, 237u8, 146u8, 239u8, 46u8, 127u8, 113u8, 190u8, 230u8, 61u8, + 182u8, + ], + ) + } + #[doc = " This mapping tracks how many open channel requests are initiated by a given sender para."] + #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items that has"] + #[doc = " `(X, _)` as the number of `HrmpOpenChannelRequestCount` for `X`."] + pub fn hrmp_open_channel_request_count_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpOpenChannelRequestCount", + Vec::new(), + [ + 136u8, 72u8, 56u8, 31u8, 229u8, 99u8, 241u8, 14u8, 159u8, 243u8, 179u8, + 222u8, 252u8, 56u8, 63u8, 24u8, 204u8, 130u8, 47u8, 161u8, 133u8, + 227u8, 237u8, 146u8, 239u8, 46u8, 127u8, 113u8, 190u8, 230u8, 61u8, + 182u8, + ], + ) + } + #[doc = " This mapping tracks how many open channel requests were accepted by a given recipient para."] + #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items `(_, X)` with"] + #[doc = " `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`."] + pub fn hrmp_accepted_channel_request_count( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpAcceptedChannelRequestCount", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 29u8, 100u8, 52u8, 28u8, 180u8, 84u8, 132u8, 120u8, 117u8, 172u8, + 169u8, 40u8, 237u8, 92u8, 89u8, 87u8, 230u8, 148u8, 140u8, 226u8, 60u8, + 169u8, 100u8, 162u8, 139u8, 205u8, 180u8, 92u8, 0u8, 110u8, 55u8, + 158u8, + ], + ) + } + #[doc = " This mapping tracks how many open channel requests were accepted by a given recipient para."] + #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items `(_, X)` with"] + #[doc = " `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`."] + pub fn hrmp_accepted_channel_request_count_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpAcceptedChannelRequestCount", + Vec::new(), + [ + 29u8, 100u8, 52u8, 28u8, 180u8, 84u8, 132u8, 120u8, 117u8, 172u8, + 169u8, 40u8, 237u8, 92u8, 89u8, 87u8, 230u8, 148u8, 140u8, 226u8, 60u8, + 169u8, 100u8, 162u8, 139u8, 205u8, 180u8, 92u8, 0u8, 110u8, 55u8, + 158u8, + ], + ) + } + #[doc = " A set of pending HRMP close channel requests that are going to be closed during the session"] + #[doc = " change. Used for checking if a given channel is registered for closure."] + #[doc = ""] + #[doc = " The set is accompanied by a list for iteration."] + #[doc = ""] + #[doc = " Invariant:"] + #[doc = " - There are no channels that exists in list but not in the set and vice versa."] + pub fn hrmp_close_channel_requests( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpCloseChannelRequests", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 155u8, 13u8, 73u8, 166u8, 58u8, 67u8, 138u8, 58u8, 215u8, 172u8, 241u8, + 168u8, 57u8, 4u8, 230u8, 248u8, 31u8, 183u8, 227u8, 224u8, 139u8, + 172u8, 229u8, 228u8, 16u8, 120u8, 124u8, 81u8, 213u8, 253u8, 102u8, + 226u8, + ], + ) + } + #[doc = " A set of pending HRMP close channel requests that are going to be closed during the session"] + #[doc = " change. Used for checking if a given channel is registered for closure."] + #[doc = ""] + #[doc = " The set is accompanied by a list for iteration."] + #[doc = ""] + #[doc = " Invariant:"] + #[doc = " - There are no channels that exists in list but not in the set and vice versa."] + pub fn hrmp_close_channel_requests_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpCloseChannelRequests", + Vec::new(), + [ + 155u8, 13u8, 73u8, 166u8, 58u8, 67u8, 138u8, 58u8, 215u8, 172u8, 241u8, + 168u8, 57u8, 4u8, 230u8, 248u8, 31u8, 183u8, 227u8, 224u8, 139u8, + 172u8, 229u8, 228u8, 16u8, 120u8, 124u8, 81u8, 213u8, 253u8, 102u8, + 226u8, + ], + ) + } + pub fn hrmp_close_channel_requests_list( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpCloseChannelRequestsList", + vec![], + [ + 78u8, 194u8, 214u8, 232u8, 91u8, 72u8, 109u8, 113u8, 88u8, 86u8, 136u8, + 26u8, 226u8, 30u8, 11u8, 188u8, 57u8, 77u8, 169u8, 64u8, 14u8, 187u8, + 27u8, 127u8, 76u8, 99u8, 114u8, 73u8, 221u8, 23u8, 208u8, 69u8, + ], + ) + } + #[doc = " The HRMP watermark associated with each para."] + #[doc = " Invariant:"] + #[doc = " - each para `P` used here as a key should satisfy `Paras::is_valid_para(P)` within a"] + #[doc = " session."] + pub fn hrmp_watermarks( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpWatermarks", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 245u8, 104u8, 137u8, 120u8, 131u8, 7u8, 178u8, 85u8, 96u8, 124u8, + 241u8, 2u8, 86u8, 63u8, 116u8, 77u8, 217u8, 235u8, 162u8, 38u8, 104u8, + 248u8, 121u8, 1u8, 111u8, 191u8, 191u8, 115u8, 65u8, 67u8, 2u8, 238u8, + ], + ) + } + #[doc = " The HRMP watermark associated with each para."] + #[doc = " Invariant:"] + #[doc = " - each para `P` used here as a key should satisfy `Paras::is_valid_para(P)` within a"] + #[doc = " session."] + pub fn hrmp_watermarks_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpWatermarks", + Vec::new(), + [ + 245u8, 104u8, 137u8, 120u8, 131u8, 7u8, 178u8, 85u8, 96u8, 124u8, + 241u8, 2u8, 86u8, 63u8, 116u8, 77u8, 217u8, 235u8, 162u8, 38u8, 104u8, + 248u8, 121u8, 1u8, 111u8, 191u8, 191u8, 115u8, 65u8, 67u8, 2u8, 238u8, + ], + ) + } + #[doc = " HRMP channel data associated with each para."] + #[doc = " Invariant:"] + #[doc = " - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session."] + pub fn hrmp_channels( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::hrmp::HrmpChannel, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpChannels", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 174u8, 90u8, 72u8, 93u8, 43u8, 140u8, 181u8, 170u8, 138u8, 171u8, + 179u8, 156u8, 33u8, 87u8, 63u8, 1u8, 131u8, 59u8, 230u8, 14u8, 40u8, + 240u8, 186u8, 66u8, 191u8, 130u8, 48u8, 218u8, 225u8, 22u8, 33u8, + 122u8, + ], + ) + } + #[doc = " HRMP channel data associated with each para."] + #[doc = " Invariant:"] + #[doc = " - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session."] + pub fn hrmp_channels_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::hrmp::HrmpChannel, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpChannels", + Vec::new(), + [ + 174u8, 90u8, 72u8, 93u8, 43u8, 140u8, 181u8, 170u8, 138u8, 171u8, + 179u8, 156u8, 33u8, 87u8, 63u8, 1u8, 131u8, 59u8, 230u8, 14u8, 40u8, + 240u8, 186u8, 66u8, 191u8, 130u8, 48u8, 218u8, 225u8, 22u8, 33u8, + 122u8, + ], + ) + } + #[doc = " Ingress/egress indexes allow to find all the senders and receivers given the opposite side."] + #[doc = " I.e."] + #[doc = ""] + #[doc = " (a) ingress index allows to find all the senders for a given recipient."] + #[doc = " (b) egress index allows to find all the recipients for a given sender."] + #[doc = ""] + #[doc = " Invariants:"] + #[doc = " - for each ingress index entry for `P` each item `I` in the index should present in"] + #[doc = " `HrmpChannels` as `(I, P)`."] + #[doc = " - for each egress index entry for `P` each item `E` in the index should present in"] + #[doc = " `HrmpChannels` as `(P, E)`."] + #[doc = " - there should be no other dangling channels in `HrmpChannels`."] + #[doc = " - the vectors are sorted."] + pub fn hrmp_ingress_channels_index( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpIngressChannelsIndex", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 125u8, 229u8, 102u8, 230u8, 74u8, 109u8, 173u8, 67u8, 176u8, 169u8, + 57u8, 24u8, 75u8, 129u8, 246u8, 198u8, 63u8, 49u8, 56u8, 102u8, 149u8, + 139u8, 138u8, 207u8, 150u8, 220u8, 29u8, 208u8, 203u8, 0u8, 93u8, + 105u8, + ], + ) + } + #[doc = " Ingress/egress indexes allow to find all the senders and receivers given the opposite side."] + #[doc = " I.e."] + #[doc = ""] + #[doc = " (a) ingress index allows to find all the senders for a given recipient."] + #[doc = " (b) egress index allows to find all the recipients for a given sender."] + #[doc = ""] + #[doc = " Invariants:"] + #[doc = " - for each ingress index entry for `P` each item `I` in the index should present in"] + #[doc = " `HrmpChannels` as `(I, P)`."] + #[doc = " - for each egress index entry for `P` each item `E` in the index should present in"] + #[doc = " `HrmpChannels` as `(P, E)`."] + #[doc = " - there should be no other dangling channels in `HrmpChannels`."] + #[doc = " - the vectors are sorted."] + pub fn hrmp_ingress_channels_index_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpIngressChannelsIndex", + Vec::new(), + [ + 125u8, 229u8, 102u8, 230u8, 74u8, 109u8, 173u8, 67u8, 176u8, 169u8, + 57u8, 24u8, 75u8, 129u8, 246u8, 198u8, 63u8, 49u8, 56u8, 102u8, 149u8, + 139u8, 138u8, 207u8, 150u8, 220u8, 29u8, 208u8, 203u8, 0u8, 93u8, + 105u8, + ], + ) + } + pub fn hrmp_egress_channels_index( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpEgressChannelsIndex", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 237u8, 183u8, 188u8, 57u8, 20u8, 238u8, 166u8, 7u8, 94u8, 155u8, 22u8, + 9u8, 173u8, 209u8, 210u8, 17u8, 160u8, 79u8, 243u8, 4u8, 245u8, 240u8, + 65u8, 195u8, 116u8, 98u8, 206u8, 104u8, 53u8, 64u8, 241u8, 41u8, + ], + ) + } + pub fn hrmp_egress_channels_index_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpEgressChannelsIndex", + Vec::new(), + [ + 237u8, 183u8, 188u8, 57u8, 20u8, 238u8, 166u8, 7u8, 94u8, 155u8, 22u8, + 9u8, 173u8, 209u8, 210u8, 17u8, 160u8, 79u8, 243u8, 4u8, 245u8, 240u8, + 65u8, 195u8, 116u8, 98u8, 206u8, 104u8, 53u8, 64u8, 241u8, 41u8, + ], + ) + } + #[doc = " Storage for the messages for each channel."] + #[doc = " Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`."] + pub fn hrmp_channel_contents( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::polkadot_core_primitives::InboundHrmpMessage< + ::core::primitive::u32, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpChannelContents", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 55u8, 16u8, 135u8, 69u8, 54u8, 180u8, 246u8, 124u8, 104u8, 92u8, 45u8, + 18u8, 223u8, 145u8, 43u8, 190u8, 121u8, 59u8, 35u8, 195u8, 234u8, + 219u8, 30u8, 246u8, 168u8, 187u8, 45u8, 171u8, 254u8, 204u8, 60u8, + 121u8, + ], + ) + } + #[doc = " Storage for the messages for each channel."] + #[doc = " Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`."] + pub fn hrmp_channel_contents_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + runtime_types::polkadot_core_primitives::InboundHrmpMessage< + ::core::primitive::u32, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpChannelContents", + Vec::new(), + [ + 55u8, 16u8, 135u8, 69u8, 54u8, 180u8, 246u8, 124u8, 104u8, 92u8, 45u8, + 18u8, 223u8, 145u8, 43u8, 190u8, 121u8, 59u8, 35u8, 195u8, 234u8, + 219u8, 30u8, 246u8, 168u8, 187u8, 45u8, 171u8, 254u8, 204u8, 60u8, + 121u8, + ], + ) + } + #[doc = " Maintains a mapping that can be used to answer the question: What paras sent a message at"] + #[doc = " the given block number for a given receiver. Invariants:"] + #[doc = " - The inner `Vec` is never empty."] + #[doc = " - The inner `Vec` cannot store two same `ParaId`."] + #[doc = " - The outer vector is sorted ascending by block number and cannot store two items with the"] + #[doc = " same block number."] + pub fn hrmp_channel_digests( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<( + ::core::primitive::u32, + ::std::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpChannelDigests", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 90u8, 90u8, 139u8, 78u8, 47u8, 2u8, 104u8, 211u8, 42u8, 246u8, 193u8, + 210u8, 142u8, 223u8, 17u8, 136u8, 3u8, 182u8, 25u8, 56u8, 72u8, 72u8, + 162u8, 131u8, 36u8, 34u8, 162u8, 176u8, 159u8, 113u8, 7u8, 207u8, + ], + ) + } + #[doc = " Maintains a mapping that can be used to answer the question: What paras sent a message at"] + #[doc = " the given block number for a given receiver. Invariants:"] + #[doc = " - The inner `Vec` is never empty."] + #[doc = " - The inner `Vec` cannot store two same `ParaId`."] + #[doc = " - The outer vector is sorted ascending by block number and cannot store two items with the"] + #[doc = " same block number."] + pub fn hrmp_channel_digests_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<( + ::core::primitive::u32, + ::std::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + )>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Hrmp", + "HrmpChannelDigests", + Vec::new(), + [ + 90u8, 90u8, 139u8, 78u8, 47u8, 2u8, 104u8, 211u8, 42u8, 246u8, 193u8, + 210u8, 142u8, 223u8, 17u8, 136u8, 3u8, 182u8, 25u8, 56u8, 72u8, 72u8, + 162u8, 131u8, 36u8, 34u8, 162u8, 176u8, 159u8, 113u8, 7u8, 207u8, + ], + ) + } + } + } + } + pub mod para_session_info { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Assignment keys for the current session."] + #[doc = " Note that this API is private due to it being prone to 'off-by-one' at session boundaries."] + #[doc = " When in doubt, use `Sessions` API instead."] + pub fn assignment_keys_unsafe( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "AssignmentKeysUnsafe", + vec![], + [ + 51u8, 155u8, 91u8, 101u8, 118u8, 243u8, 134u8, 138u8, 147u8, 59u8, + 195u8, 186u8, 54u8, 187u8, 36u8, 14u8, 91u8, 141u8, 60u8, 139u8, 28u8, + 74u8, 111u8, 232u8, 198u8, 229u8, 61u8, 63u8, 72u8, 214u8, 152u8, 2u8, + ], + ) + } + #[doc = " The earliest session for which previous session info is stored."] + pub fn earliest_stored_session( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "EarliestStoredSession", + vec![], + [ + 139u8, 176u8, 46u8, 139u8, 217u8, 35u8, 62u8, 91u8, 183u8, 7u8, 114u8, + 226u8, 60u8, 237u8, 105u8, 73u8, 20u8, 216u8, 194u8, 205u8, 178u8, + 237u8, 84u8, 66u8, 181u8, 29u8, 31u8, 218u8, 48u8, 60u8, 198u8, 86u8, + ], + ) + } + #[doc = " Session information in a rolling window."] + #[doc = " Should have an entry in range `EarliestStoredSession..=CurrentSessionIndex`."] + #[doc = " Does not have any entries before the session index in the first session change notification."] + pub fn sessions( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::SessionInfo, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "Sessions", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, + 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, + 130u8, 215u8, 105u8, 18u8, 163u8, 72u8, 182u8, 243u8, 31u8, 157u8, + 103u8, 111u8, + ], + ) + } + #[doc = " Session information in a rolling window."] + #[doc = " Should have an entry in range `EarliestStoredSession..=CurrentSessionIndex`."] + #[doc = " Does not have any entries before the session index in the first session change notification."] + pub fn sessions_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::SessionInfo, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "Sessions", + Vec::new(), + [ + 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, + 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, + 130u8, 215u8, 105u8, 18u8, 163u8, 72u8, 182u8, 243u8, 31u8, 157u8, + 103u8, 111u8, + ], + ) + } + #[doc = " The validator account keys of the validators actively participating in parachain consensus."] + pub fn account_keys( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::subxt::utils::AccountId32>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "AccountKeys", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 30u8, 98u8, 58u8, 140u8, 96u8, 231u8, 205u8, 111u8, 194u8, 100u8, + 185u8, 242u8, 210u8, 143u8, 110u8, 144u8, 170u8, 187u8, 62u8, 196u8, + 73u8, 88u8, 118u8, 168u8, 117u8, 116u8, 153u8, 229u8, 108u8, 46u8, + 154u8, 220u8, + ], + ) + } + #[doc = " The validator account keys of the validators actively participating in parachain consensus."] + pub fn account_keys_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<::subxt::utils::AccountId32>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "AccountKeys", + Vec::new(), + [ + 30u8, 98u8, 58u8, 140u8, 96u8, 231u8, 205u8, 111u8, 194u8, 100u8, + 185u8, 242u8, 210u8, 143u8, 110u8, 144u8, 170u8, 187u8, 62u8, 196u8, + 73u8, 88u8, 118u8, 168u8, 117u8, 116u8, 153u8, 229u8, 108u8, 46u8, + 154u8, 220u8, + ], + ) + } + #[doc = " Executor parameter set for a given session index"] + pub fn session_executor_params( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "SessionExecutorParams", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, + 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, + 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, + 84u8, 234u8, + ], + ) + } + #[doc = " Executor parameter set for a given session index"] + pub fn session_executor_params_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParaSessionInfo", + "SessionExecutorParams", + Vec::new(), + [ + 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, + 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, + 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, + 84u8, 234u8, + ], + ) + } + } + } + } + pub mod paras_disputes { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::disputes::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::disputes::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceUnfreeze; + impl ::subxt::blocks::StaticExtrinsic for ForceUnfreeze { + const PALLET: &'static str = "ParasDisputes"; + const CALL: &'static str = "force_unfreeze"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::force_unfreeze`]."] + pub fn force_unfreeze(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParasDisputes", + "force_unfreeze", + types::ForceUnfreeze {}, + [ + 148u8, 19u8, 139u8, 154u8, 111u8, 166u8, 74u8, 136u8, 127u8, 157u8, + 20u8, 47u8, 220u8, 108u8, 152u8, 108u8, 24u8, 232u8, 11u8, 53u8, 26u8, + 4u8, 23u8, 58u8, 195u8, 61u8, 159u8, 6u8, 139u8, 7u8, 197u8, 88u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::disputes::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A dispute has been initiated. \\[candidate hash, dispute location\\]"] + pub struct DisputeInitiated( + pub runtime_types::polkadot_core_primitives::CandidateHash, + pub runtime_types::polkadot_runtime_parachains::disputes::DisputeLocation, + ); + impl ::subxt::events::StaticEvent for DisputeInitiated { + const PALLET: &'static str = "ParasDisputes"; + const EVENT: &'static str = "DisputeInitiated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A dispute has concluded for or against a candidate."] + #[doc = "`\\[para id, candidate hash, dispute result\\]`"] + pub struct DisputeConcluded( + pub runtime_types::polkadot_core_primitives::CandidateHash, + pub runtime_types::polkadot_runtime_parachains::disputes::DisputeResult, + ); + impl ::subxt::events::StaticEvent for DisputeConcluded { + const PALLET: &'static str = "ParasDisputes"; + const EVENT: &'static str = "DisputeConcluded"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A dispute has concluded with supermajority against a candidate."] + #[doc = "Block authors should no longer build on top of this head and should"] + #[doc = "instead revert the block at the given height. This should be the"] + #[doc = "number of the child of the last known valid block in the chain."] + pub struct Revert(pub ::core::primitive::u32); + impl ::subxt::events::StaticEvent for Revert { + const PALLET: &'static str = "ParasDisputes"; + const EVENT: &'static str = "Revert"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The last pruned session, if any. All data stored by this module"] + #[doc = " references sessions."] + pub fn last_pruned_session( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "LastPrunedSession", + vec![], + [ + 98u8, 107u8, 200u8, 158u8, 182u8, 120u8, 24u8, 242u8, 24u8, 163u8, + 237u8, 72u8, 153u8, 19u8, 38u8, 85u8, 239u8, 208u8, 194u8, 22u8, 173u8, + 100u8, 219u8, 10u8, 194u8, 42u8, 120u8, 146u8, 225u8, 62u8, 80u8, + 229u8, + ], + ) + } + #[doc = " All ongoing or concluded disputes for the last several sessions."] + pub fn disputes( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_core_primitives::CandidateHash, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::DisputeState<::core::primitive::u32>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "Disputes", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, + 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, + 176u8, 157u8, 20u8, 105u8, 202u8, 192u8, 213u8, 164u8, 24u8, 227u8, + 15u8, + ], + ) + } + #[doc = " All ongoing or concluded disputes for the last several sessions."] + pub fn disputes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::DisputeState<::core::primitive::u32>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "Disputes", + Vec::new(), + [ + 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, + 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, + 176u8, 157u8, 20u8, 105u8, 202u8, 192u8, 213u8, 164u8, 24u8, 227u8, + 15u8, + ], + ) + } + #[doc = " Backing votes stored for each dispute."] + #[doc = " This storage is used for slashing."] + pub fn backers_on_disputes( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_core_primitives::CandidateHash, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "BackersOnDisputes", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, + 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, + 14u8, 137u8, 240u8, 243u8, 119u8, 144u8, 102u8, 245u8, 133u8, 126u8, + 103u8, 32u8, + ], + ) + } + #[doc = " Backing votes stored for each dispute."] + #[doc = " This storage is used for slashing."] + pub fn backers_on_disputes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "BackersOnDisputes", + Vec::new(), + [ + 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, + 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, + 14u8, 137u8, 240u8, 243u8, 119u8, 144u8, 102u8, 245u8, 133u8, 126u8, + 103u8, 32u8, + ], + ) + } + #[doc = " All included blocks on the chain, as well as the block number in this chain that"] + #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] + pub fn included( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_core_primitives::CandidateHash, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "Included", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, + 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, + 203u8, 163u8, 109u8, 212u8, 162u8, 86u8, 124u8, 172u8, 157u8, 165u8, + 21u8, + ], + ) + } + #[doc = " All included blocks on the chain, as well as the block number in this chain that"] + #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] + pub fn included_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "Included", + Vec::new(), + [ + 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, + 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, + 203u8, 163u8, 109u8, 212u8, 162u8, 86u8, 124u8, 172u8, 157u8, 165u8, + 21u8, + ], + ) + } + #[doc = " Whether the chain is frozen. Starts as `None`. When this is `Some`,"] + #[doc = " the chain will not accept any new parachain blocks for backing or inclusion,"] + #[doc = " and its value indicates the last valid block number in the chain."] + #[doc = " It can only be set back to `None` by governance intervention."] + pub fn frozen( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::option::Option<::core::primitive::u32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "ParasDisputes", + "Frozen", + vec![], + [ + 245u8, 136u8, 43u8, 156u8, 7u8, 74u8, 31u8, 190u8, 184u8, 119u8, 182u8, + 66u8, 18u8, 136u8, 30u8, 248u8, 24u8, 121u8, 26u8, 177u8, 169u8, 208u8, + 218u8, 208u8, 80u8, 116u8, 31u8, 144u8, 49u8, 201u8, 198u8, 197u8, + ], + ) + } + } + } + } + pub mod paras_slashing { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = + runtime_types::polkadot_runtime_parachains::disputes::slashing::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = + runtime_types::polkadot_runtime_parachains::disputes::slashing::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportDisputeLostUnsigned { + pub dispute_proof: ::std::boxed::Box< + runtime_types::polkadot_primitives::v6::slashing::DisputeProof, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportDisputeLostUnsigned { + const PALLET: &'static str = "ParasSlashing"; + const CALL: &'static str = "report_dispute_lost_unsigned"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] + pub fn report_dispute_lost_unsigned( + &self, + dispute_proof: runtime_types::polkadot_primitives::v6::slashing::DisputeProof, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParasSlashing", + "report_dispute_lost_unsigned", + types::ReportDisputeLostUnsigned { + dispute_proof: ::std::boxed::Box::new(dispute_proof), + key_owner_proof, + }, + [ + 57u8, 99u8, 246u8, 126u8, 203u8, 239u8, 64u8, 182u8, 167u8, 204u8, + 96u8, 221u8, 126u8, 94u8, 254u8, 210u8, 18u8, 182u8, 207u8, 32u8, + 250u8, 249u8, 116u8, 156u8, 210u8, 63u8, 254u8, 74u8, 86u8, 101u8, + 28u8, 229u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Validators pending dispute slashes."] + pub fn unapplied_slashes( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_core_primitives::CandidateHash, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::slashing::PendingSlashes, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasSlashing", + "UnappliedSlashes", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, + 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, + 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, + 126u8, + ], + ) + } + #[doc = " Validators pending dispute slashes."] + pub fn unapplied_slashes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_primitives::v6::slashing::PendingSlashes, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasSlashing", + "UnappliedSlashes", + Vec::new(), + [ + 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, + 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, + 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, + 126u8, + ], + ) + } + #[doc = " `ValidatorSetCount` per session."] + pub fn validator_set_counts( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasSlashing", + "ValidatorSetCounts", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 195u8, 220u8, 79u8, 140u8, 114u8, 80u8, 241u8, 103u8, 4u8, 7u8, 53u8, + 100u8, 16u8, 78u8, 104u8, 171u8, 134u8, 110u8, 158u8, 191u8, 37u8, + 94u8, 211u8, 26u8, 17u8, 70u8, 50u8, 34u8, 70u8, 234u8, 186u8, 69u8, + ], + ) + } + #[doc = " `ValidatorSetCount` per session."] + pub fn validator_set_counts_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "ParasSlashing", + "ValidatorSetCounts", + Vec::new(), + [ + 195u8, 220u8, 79u8, 140u8, 114u8, 80u8, 241u8, 103u8, 4u8, 7u8, 53u8, + 100u8, 16u8, 78u8, 104u8, 171u8, 134u8, 110u8, 158u8, 191u8, 37u8, + 94u8, 211u8, 26u8, 17u8, 70u8, 50u8, 34u8, 70u8, 234u8, 186u8, 69u8, + ], + ) + } + } + } + } + pub mod para_assignment_provider { + use super::{root_mod, runtime_types}; + } + pub mod registrar { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::paras_registrar::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Register { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub genesis_head: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub validation_code: + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + } + impl ::subxt::blocks::StaticExtrinsic for Register { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "register"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceRegister { + pub who: ::subxt::utils::AccountId32, + pub deposit: ::core::primitive::u128, + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub genesis_head: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub validation_code: + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + } + impl ::subxt::blocks::StaticExtrinsic for ForceRegister { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "force_register"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Deregister { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for Deregister { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "deregister"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Swap { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub other: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for Swap { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "swap"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveLock { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveLock { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "remove_lock"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Reserve; + impl ::subxt::blocks::StaticExtrinsic for Reserve { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "reserve"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddLock { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for AddLock { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "add_lock"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ScheduleCodeUpgrade { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub new_code: + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + } + impl ::subxt::blocks::StaticExtrinsic for ScheduleCodeUpgrade { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "schedule_code_upgrade"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetCurrentHead { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub new_head: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + } + impl ::subxt::blocks::StaticExtrinsic for SetCurrentHead { + const PALLET: &'static str = "Registrar"; + const CALL: &'static str = "set_current_head"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::register`]."] + pub fn register( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData, + validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "register", + types::Register { id, genesis_head, validation_code }, + [ + 208u8, 1u8, 38u8, 95u8, 53u8, 67u8, 148u8, 138u8, 189u8, 212u8, 250u8, + 160u8, 99u8, 220u8, 231u8, 55u8, 220u8, 21u8, 188u8, 81u8, 162u8, + 219u8, 93u8, 136u8, 255u8, 22u8, 5u8, 147u8, 40u8, 46u8, 141u8, 77u8, + ], + ) + } + #[doc = "See [`Pallet::force_register`]."] + pub fn force_register( + &self, + who: ::subxt::utils::AccountId32, + deposit: ::core::primitive::u128, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData, + validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "force_register", + types::ForceRegister { who, deposit, id, genesis_head, validation_code }, + [ + 73u8, 118u8, 161u8, 95u8, 234u8, 106u8, 174u8, 143u8, 34u8, 235u8, + 140u8, 166u8, 210u8, 101u8, 53u8, 191u8, 194u8, 17u8, 189u8, 187u8, + 86u8, 91u8, 112u8, 248u8, 109u8, 208u8, 37u8, 70u8, 26u8, 195u8, 90u8, + 207u8, + ], + ) + } + #[doc = "See [`Pallet::deregister`]."] + pub fn deregister( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "deregister", + types::Deregister { id }, + [ + 212u8, 38u8, 98u8, 234u8, 146u8, 188u8, 71u8, 244u8, 238u8, 255u8, 3u8, + 89u8, 52u8, 242u8, 126u8, 187u8, 185u8, 193u8, 174u8, 187u8, 196u8, + 3u8, 66u8, 77u8, 173u8, 115u8, 52u8, 210u8, 69u8, 221u8, 109u8, 112u8, + ], + ) + } + #[doc = "See [`Pallet::swap`]."] + pub fn swap( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + other: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "swap", + types::Swap { id, other }, + [ + 235u8, 169u8, 16u8, 199u8, 107u8, 54u8, 35u8, 160u8, 219u8, 156u8, + 177u8, 205u8, 83u8, 45u8, 30u8, 233u8, 8u8, 143u8, 27u8, 123u8, 156u8, + 65u8, 128u8, 233u8, 218u8, 230u8, 98u8, 206u8, 231u8, 95u8, 224u8, + 35u8, + ], + ) + } + #[doc = "See [`Pallet::remove_lock`]."] + pub fn remove_lock( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "remove_lock", + types::RemoveLock { para }, + [ + 239u8, 207u8, 248u8, 246u8, 244u8, 128u8, 113u8, 114u8, 6u8, 232u8, + 218u8, 123u8, 241u8, 190u8, 255u8, 48u8, 26u8, 248u8, 33u8, 86u8, 87u8, + 219u8, 65u8, 104u8, 66u8, 68u8, 34u8, 201u8, 43u8, 159u8, 141u8, 100u8, + ], + ) + } + #[doc = "See [`Pallet::reserve`]."] + pub fn reserve(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "reserve", + types::Reserve {}, + [ + 50u8, 72u8, 218u8, 145u8, 224u8, 93u8, 219u8, 220u8, 121u8, 35u8, + 104u8, 11u8, 139u8, 114u8, 171u8, 101u8, 40u8, 13u8, 33u8, 39u8, 245u8, + 146u8, 138u8, 159u8, 245u8, 236u8, 26u8, 0u8, 20u8, 243u8, 128u8, 81u8, + ], + ) + } + #[doc = "See [`Pallet::add_lock`]."] + pub fn add_lock( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "add_lock", + types::AddLock { para }, + [ + 158u8, 27u8, 55u8, 53u8, 71u8, 221u8, 37u8, 73u8, 23u8, 165u8, 129u8, + 17u8, 167u8, 79u8, 112u8, 35u8, 231u8, 8u8, 241u8, 151u8, 207u8, 235u8, + 224u8, 104u8, 102u8, 108u8, 10u8, 244u8, 33u8, 67u8, 45u8, 13u8, + ], + ) + } + #[doc = "See [`Pallet::schedule_code_upgrade`]."] + pub fn schedule_code_upgrade( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "schedule_code_upgrade", + types::ScheduleCodeUpgrade { para, new_code }, + [ + 234u8, 22u8, 133u8, 175u8, 218u8, 250u8, 119u8, 175u8, 23u8, 250u8, + 175u8, 48u8, 247u8, 208u8, 235u8, 167u8, 24u8, 248u8, 247u8, 236u8, + 239u8, 9u8, 78u8, 195u8, 146u8, 172u8, 41u8, 105u8, 183u8, 253u8, 1u8, + 170u8, + ], + ) + } + #[doc = "See [`Pallet::set_current_head`]."] + pub fn set_current_head( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + new_head: runtime_types::polkadot_parachain_primitives::primitives::HeadData, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Registrar", + "set_current_head", + types::SetCurrentHead { para, new_head }, + [ + 201u8, 49u8, 104u8, 135u8, 80u8, 233u8, 154u8, 193u8, 143u8, 209u8, + 10u8, 209u8, 234u8, 252u8, 142u8, 216u8, 220u8, 249u8, 23u8, 252u8, + 73u8, 169u8, 204u8, 242u8, 59u8, 19u8, 18u8, 35u8, 115u8, 209u8, 79u8, + 112u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::paras_registrar::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Registered { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub manager: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Registered { + const PALLET: &'static str = "Registrar"; + const EVENT: &'static str = "Registered"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Deregistered { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for Deregistered { + const PALLET: &'static str = "Registrar"; + const EVENT: &'static str = "Deregistered"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Reserved { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Reserved { + const PALLET: &'static str = "Registrar"; + const EVENT: &'static str = "Reserved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Swapped { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub other_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for Swapped { + const PALLET: &'static str = "Registrar"; + const EVENT: &'static str = "Swapped"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Pending swap operations."] + pub fn pending_swap( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Registrar", + "PendingSwap", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 75u8, 6u8, 68u8, 43u8, 108u8, 147u8, 220u8, 90u8, 190u8, 86u8, 209u8, + 141u8, 9u8, 254u8, 103u8, 10u8, 94u8, 187u8, 155u8, 249u8, 140u8, + 167u8, 248u8, 196u8, 67u8, 169u8, 186u8, 192u8, 139u8, 188u8, 48u8, + 221u8, + ], + ) + } + #[doc = " Pending swap operations."] + pub fn pending_swap_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::Id, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Registrar", + "PendingSwap", + Vec::new(), + [ + 75u8, 6u8, 68u8, 43u8, 108u8, 147u8, 220u8, 90u8, 190u8, 86u8, 209u8, + 141u8, 9u8, 254u8, 103u8, 10u8, 94u8, 187u8, 155u8, 249u8, 140u8, + 167u8, 248u8, 196u8, 67u8, 169u8, 186u8, 192u8, 139u8, 188u8, 48u8, + 221u8, + ], + ) + } + #[doc = " Amount held on deposit for each para and the original depositor."] + #[doc = ""] + #[doc = " The given account ID is responsible for registering the code and initial head data, but may"] + #[doc = " only do so if it isn't yet registered. (After that, it's up to governance to do so.)"] + pub fn paras( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::paras_registrar::ParaInfo< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Registrar", + "Paras", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 125u8, 62u8, 50u8, 209u8, 40u8, 170u8, 61u8, 62u8, 61u8, 246u8, 103u8, + 229u8, 213u8, 94u8, 249u8, 49u8, 18u8, 90u8, 138u8, 14u8, 101u8, 133u8, + 28u8, 167u8, 5u8, 77u8, 113u8, 207u8, 57u8, 142u8, 77u8, 117u8, + ], + ) + } + #[doc = " Amount held on deposit for each para and the original depositor."] + #[doc = ""] + #[doc = " The given account ID is responsible for registering the code and initial head data, but may"] + #[doc = " only do so if it isn't yet registered. (After that, it's up to governance to do so.)"] + pub fn paras_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::paras_registrar::ParaInfo< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Registrar", + "Paras", + Vec::new(), + [ + 125u8, 62u8, 50u8, 209u8, 40u8, 170u8, 61u8, 62u8, 61u8, 246u8, 103u8, + 229u8, 213u8, 94u8, 249u8, 49u8, 18u8, 90u8, 138u8, 14u8, 101u8, 133u8, + 28u8, 167u8, 5u8, 77u8, 113u8, 207u8, 57u8, 142u8, 77u8, 117u8, + ], + ) + } + #[doc = " The next free `ParaId`."] + pub fn next_free_para_id( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Registrar", + "NextFreeParaId", + vec![], + [ + 52u8, 14u8, 56u8, 196u8, 79u8, 221u8, 32u8, 14u8, 154u8, 247u8, 94u8, + 219u8, 11u8, 11u8, 104u8, 137u8, 167u8, 195u8, 180u8, 101u8, 35u8, + 235u8, 67u8, 144u8, 128u8, 209u8, 189u8, 227u8, 177u8, 74u8, 42u8, + 15u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The deposit to be paid to run a on-demand parachain."] + #[doc = " This should include the cost for storing the genesis head and validation code."] + pub fn para_deposit(&self) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Registrar", + "ParaDeposit", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " The deposit to be paid per byte stored on chain."] + pub fn data_deposit_per_byte( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Registrar", + "DataDepositPerByte", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + } + } + } + pub mod slots { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_common::slots::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::slots::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceLease { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub leaser: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + pub period_begin: ::core::primitive::u32, + pub period_count: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceLease { + const PALLET: &'static str = "Slots"; + const CALL: &'static str = "force_lease"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClearAllLeases { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for ClearAllLeases { + const PALLET: &'static str = "Slots"; + const CALL: &'static str = "clear_all_leases"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TriggerOnboard { + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for TriggerOnboard { + const PALLET: &'static str = "Slots"; + const CALL: &'static str = "trigger_onboard"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::force_lease`]."] + pub fn force_lease( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + leaser: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + period_begin: ::core::primitive::u32, + period_count: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Slots", + "force_lease", + types::ForceLease { para, leaser, amount, period_begin, period_count }, + [ + 27u8, 203u8, 227u8, 16u8, 65u8, 135u8, 140u8, 244u8, 218u8, 231u8, + 78u8, 190u8, 169u8, 156u8, 233u8, 31u8, 20u8, 119u8, 158u8, 34u8, + 130u8, 51u8, 38u8, 176u8, 142u8, 139u8, 152u8, 139u8, 26u8, 184u8, + 238u8, 227u8, + ], + ) + } + #[doc = "See [`Pallet::clear_all_leases`]."] + pub fn clear_all_leases( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Slots", + "clear_all_leases", + types::ClearAllLeases { para }, + [ + 201u8, 71u8, 106u8, 50u8, 65u8, 107u8, 191u8, 41u8, 52u8, 106u8, 51u8, + 87u8, 19u8, 199u8, 244u8, 93u8, 104u8, 148u8, 116u8, 198u8, 169u8, + 137u8, 28u8, 78u8, 54u8, 230u8, 161u8, 16u8, 79u8, 248u8, 28u8, 183u8, + ], + ) + } + #[doc = "See [`Pallet::trigger_onboard`]."] + pub fn trigger_onboard( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Slots", + "trigger_onboard", + types::TriggerOnboard { para }, + [ + 192u8, 239u8, 65u8, 186u8, 200u8, 27u8, 23u8, 235u8, 2u8, 229u8, 230u8, + 192u8, 240u8, 51u8, 62u8, 80u8, 253u8, 105u8, 178u8, 134u8, 252u8, 2u8, + 153u8, 29u8, 235u8, 249u8, 92u8, 246u8, 136u8, 169u8, 109u8, 4u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::slots::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new `[lease_period]` is beginning."] + pub struct NewLeasePeriod { + pub lease_period: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for NewLeasePeriod { + const PALLET: &'static str = "Slots"; + const EVENT: &'static str = "NewLeasePeriod"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A para has won the right to a continuous set of lease periods as a parachain."] + #[doc = "First balance is any extra amount reserved on top of the para's existing deposit."] + #[doc = "Second balance is the total amount reserved."] + pub struct Leased { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub leaser: ::subxt::utils::AccountId32, + pub period_begin: ::core::primitive::u32, + pub period_count: ::core::primitive::u32, + pub extra_reserved: ::core::primitive::u128, + pub total_amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Leased { + const PALLET: &'static str = "Slots"; + const EVENT: &'static str = "Leased"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Amounts held on deposit for each (possibly future) leased parachain."] + #[doc = ""] + #[doc = " The actual amount locked on its behalf by any account at any time is the maximum of the"] + #[doc = " second values of the items in this list whose first value is the account."] + #[doc = ""] + #[doc = " The first item in the list is the amount locked for the current Lease Period. Following"] + #[doc = " items are for the subsequent lease periods."] + #[doc = ""] + #[doc = " The default value (an empty list) implies that the parachain no longer exists (or never"] + #[doc = " existed) as far as this pallet is concerned."] + #[doc = ""] + #[doc = " If a parachain doesn't exist *yet* but is scheduled to exist in the future, then it"] + #[doc = " will be left-padded with one or more `None`s to denote the fact that nothing is held on"] + #[doc = " deposit for the non-existent chain currently, but is held at some point in the future."] + #[doc = ""] + #[doc = " It is illegal for a `None` value to trail in the list."] + pub fn leases( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + ::core::option::Option<( + ::subxt::utils::AccountId32, + ::core::primitive::u128, + )>, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Slots", + "Leases", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 233u8, 226u8, 181u8, 160u8, 216u8, 86u8, 238u8, 229u8, 31u8, 67u8, + 200u8, 188u8, 134u8, 22u8, 88u8, 147u8, 204u8, 11u8, 34u8, 244u8, + 234u8, 77u8, 184u8, 171u8, 147u8, 228u8, 254u8, 11u8, 40u8, 162u8, + 177u8, 196u8, + ], + ) + } + #[doc = " Amounts held on deposit for each (possibly future) leased parachain."] + #[doc = ""] + #[doc = " The actual amount locked on its behalf by any account at any time is the maximum of the"] + #[doc = " second values of the items in this list whose first value is the account."] + #[doc = ""] + #[doc = " The first item in the list is the amount locked for the current Lease Period. Following"] + #[doc = " items are for the subsequent lease periods."] + #[doc = ""] + #[doc = " The default value (an empty list) implies that the parachain no longer exists (or never"] + #[doc = " existed) as far as this pallet is concerned."] + #[doc = ""] + #[doc = " If a parachain doesn't exist *yet* but is scheduled to exist in the future, then it"] + #[doc = " will be left-padded with one or more `None`s to denote the fact that nothing is held on"] + #[doc = " deposit for the non-existent chain currently, but is held at some point in the future."] + #[doc = ""] + #[doc = " It is illegal for a `None` value to trail in the list."] + pub fn leases_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec< + ::core::option::Option<( + ::subxt::utils::AccountId32, + ::core::primitive::u128, + )>, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Slots", + "Leases", + Vec::new(), + [ + 233u8, 226u8, 181u8, 160u8, 216u8, 86u8, 238u8, 229u8, 31u8, 67u8, + 200u8, 188u8, 134u8, 22u8, 88u8, 147u8, 204u8, 11u8, 34u8, 244u8, + 234u8, 77u8, 184u8, 171u8, 147u8, 228u8, 254u8, 11u8, 40u8, 162u8, + 177u8, 196u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The number of blocks over which a single period lasts."] + pub fn lease_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Slots", + "LeasePeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The number of blocks to offset each lease period by."] + pub fn lease_offset(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Slots", + "LeaseOffset", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod auctions { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_common::auctions::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::auctions::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NewAuction { + #[codec(compact)] + pub duration: ::core::primitive::u32, + #[codec(compact)] + pub lease_period_index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for NewAuction { + const PALLET: &'static str = "Auctions"; + const CALL: &'static str = "new_auction"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Bid { + #[codec(compact)] + pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + pub auction_index: ::core::primitive::u32, + #[codec(compact)] + pub first_slot: ::core::primitive::u32, + #[codec(compact)] + pub last_slot: ::core::primitive::u32, + #[codec(compact)] + pub amount: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for Bid { + const PALLET: &'static str = "Auctions"; + const CALL: &'static str = "bid"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CancelAuction; + impl ::subxt::blocks::StaticExtrinsic for CancelAuction { + const PALLET: &'static str = "Auctions"; + const CALL: &'static str = "cancel_auction"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::new_auction`]."] + pub fn new_auction( + &self, + duration: ::core::primitive::u32, + lease_period_index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Auctions", + "new_auction", + types::NewAuction { duration, lease_period_index }, + [ + 116u8, 2u8, 215u8, 191u8, 69u8, 99u8, 218u8, 198u8, 71u8, 228u8, 88u8, + 144u8, 139u8, 206u8, 214u8, 58u8, 106u8, 117u8, 138u8, 115u8, 109u8, + 253u8, 210u8, 135u8, 189u8, 190u8, 86u8, 189u8, 8u8, 168u8, 142u8, + 181u8, + ], + ) + } + #[doc = "See [`Pallet::bid`]."] + pub fn bid( + &self, + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + auction_index: ::core::primitive::u32, + first_slot: ::core::primitive::u32, + last_slot: ::core::primitive::u32, + amount: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Auctions", + "bid", + types::Bid { para, auction_index, first_slot, last_slot, amount }, + [ + 203u8, 71u8, 160u8, 55u8, 95u8, 152u8, 111u8, 30u8, 86u8, 113u8, 213u8, + 217u8, 140u8, 9u8, 138u8, 150u8, 90u8, 229u8, 17u8, 95u8, 141u8, 150u8, + 183u8, 171u8, 45u8, 110u8, 47u8, 91u8, 159u8, 91u8, 214u8, 132u8, + ], + ) + } + #[doc = "See [`Pallet::cancel_auction`]."] + pub fn cancel_auction(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Auctions", + "cancel_auction", + types::CancelAuction {}, + [ + 122u8, 231u8, 136u8, 184u8, 194u8, 4u8, 244u8, 62u8, 253u8, 134u8, 9u8, + 240u8, 75u8, 227u8, 74u8, 195u8, 113u8, 247u8, 127u8, 17u8, 90u8, + 228u8, 251u8, 88u8, 4u8, 29u8, 254u8, 71u8, 177u8, 103u8, 66u8, 224u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::auctions::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An auction started. Provides its index and the block number where it will begin to"] + #[doc = "close and the first lease period of the quadruplet that is auctioned."] + pub struct AuctionStarted { + pub auction_index: ::core::primitive::u32, + pub lease_period: ::core::primitive::u32, + pub ending: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for AuctionStarted { + const PALLET: &'static str = "Auctions"; + const EVENT: &'static str = "AuctionStarted"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An auction ended. All funds become unreserved."] + pub struct AuctionClosed { + pub auction_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for AuctionClosed { + const PALLET: &'static str = "Auctions"; + const EVENT: &'static str = "AuctionClosed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Funds were reserved for a winning bid. First balance is the extra amount reserved."] + #[doc = "Second is the total."] + pub struct Reserved { + pub bidder: ::subxt::utils::AccountId32, + pub extra_reserved: ::core::primitive::u128, + pub total_amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Reserved { + const PALLET: &'static str = "Auctions"; + const EVENT: &'static str = "Reserved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Funds were unreserved since bidder is no longer active. `[bidder, amount]`"] + pub struct Unreserved { + pub bidder: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Unreserved { + const PALLET: &'static str = "Auctions"; + const EVENT: &'static str = "Unreserved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Someone attempted to lease the same slot twice for a parachain. The amount is held in"] + #[doc = "reserve but no parachain slot has been leased."] + pub struct ReserveConfiscated { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub leaser: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for ReserveConfiscated { + const PALLET: &'static str = "Auctions"; + const EVENT: &'static str = "ReserveConfiscated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A new bid has been accepted as the current winner."] + pub struct BidAccepted { + pub bidder: ::subxt::utils::AccountId32, + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub amount: ::core::primitive::u128, + pub first_slot: ::core::primitive::u32, + pub last_slot: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BidAccepted { + const PALLET: &'static str = "Auctions"; + const EVENT: &'static str = "BidAccepted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The winning offset was chosen for an auction. This will map into the `Winning` storage"] + #[doc = "map."] + pub struct WinningOffset { + pub auction_index: ::core::primitive::u32, + pub block_number: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for WinningOffset { + const PALLET: &'static str = "Auctions"; + const EVENT: &'static str = "WinningOffset"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Number of auctions started so far."] + pub fn auction_counter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Auctions", + "AuctionCounter", + vec![], + [ + 110u8, 243u8, 85u8, 4u8, 127u8, 111u8, 101u8, 167u8, 72u8, 129u8, + 201u8, 250u8, 88u8, 9u8, 79u8, 14u8, 152u8, 132u8, 0u8, 204u8, 112u8, + 248u8, 91u8, 254u8, 30u8, 22u8, 62u8, 180u8, 188u8, 204u8, 29u8, 103u8, + ], + ) + } + #[doc = " Information relating to the current auction, if there is one."] + #[doc = ""] + #[doc = " The first item in the tuple is the lease period index that the first of the four"] + #[doc = " contiguous lease periods on auction is for. The second is the block number when the"] + #[doc = " auction will \"begin to end\", i.e. the first block of the Ending Period of the auction."] + pub fn auction_info( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u32, ::core::primitive::u32), + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Auctions", + "AuctionInfo", + vec![], + [ + 116u8, 81u8, 223u8, 26u8, 151u8, 103u8, 209u8, 182u8, 169u8, 173u8, + 220u8, 234u8, 88u8, 191u8, 255u8, 75u8, 148u8, 75u8, 167u8, 37u8, 6u8, + 14u8, 224u8, 193u8, 92u8, 82u8, 205u8, 172u8, 209u8, 83u8, 3u8, 77u8, + ], + ) + } + #[doc = " Amounts currently reserved in the accounts of the bidders currently winning"] + #[doc = " (sub-)ranges."] + pub fn reserved_amounts( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Auctions", + "ReservedAmounts", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, + 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, + 142u8, 231u8, 209u8, 113u8, 11u8, 240u8, 37u8, 112u8, 38u8, 239u8, + 245u8, + ], + ) + } + #[doc = " Amounts currently reserved in the accounts of the bidders currently winning"] + #[doc = " (sub-)ranges."] + pub fn reserved_amounts_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u128, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Auctions", + "ReservedAmounts", + Vec::new(), + [ + 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, + 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, + 142u8, 231u8, 209u8, 113u8, 11u8, 240u8, 37u8, 112u8, 38u8, 239u8, + 245u8, + ], + ) + } + #[doc = " The winning bids for each of the 10 ranges at each sample in the final Ending Period of"] + #[doc = " the current auction. The map's key is the 0-based index into the Sample Size. The"] + #[doc = " first sample of the ending period is 0; the last is `Sample Size - 1`."] + pub fn winning( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + [::core::option::Option<( + ::subxt::utils::AccountId32, + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::core::primitive::u128, + )>; 36usize], + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Auctions", + "Winning", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 8u8, 136u8, 174u8, 152u8, 223u8, 1u8, 143u8, 45u8, 213u8, 5u8, 239u8, + 163u8, 152u8, 99u8, 197u8, 109u8, 194u8, 140u8, 246u8, 10u8, 40u8, + 22u8, 0u8, 122u8, 20u8, 132u8, 141u8, 157u8, 56u8, 211u8, 5u8, 104u8, + ], + ) + } + #[doc = " The winning bids for each of the 10 ranges at each sample in the final Ending Period of"] + #[doc = " the current auction. The map's key is the 0-based index into the Sample Size. The"] + #[doc = " first sample of the ending period is 0; the last is `Sample Size - 1`."] + pub fn winning_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + [::core::option::Option<( + ::subxt::utils::AccountId32, + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::core::primitive::u128, + )>; 36usize], + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Auctions", + "Winning", + Vec::new(), + [ + 8u8, 136u8, 174u8, 152u8, 223u8, 1u8, 143u8, 45u8, 213u8, 5u8, 239u8, + 163u8, 152u8, 99u8, 197u8, 109u8, 194u8, 140u8, 246u8, 10u8, 40u8, + 22u8, 0u8, 122u8, 20u8, 132u8, 141u8, 157u8, 56u8, 211u8, 5u8, 104u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The number of blocks over which an auction may be retroactively ended."] + pub fn ending_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Auctions", + "EndingPeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The length of each sample to take during the ending period."] + #[doc = ""] + #[doc = " `EndingPeriod` / `SampleLength` = Total # of Samples"] + pub fn sample_length(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Auctions", + "SampleLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + pub fn slot_range_count( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Auctions", + "SlotRangeCount", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + pub fn lease_periods_per_slot( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Auctions", + "LeasePeriodsPerSlot", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod crowdloan { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_common::crowdloan::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::crowdloan::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Create { + #[codec(compact)] + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + pub cap: ::core::primitive::u128, + #[codec(compact)] + pub first_period: ::core::primitive::u32, + #[codec(compact)] + pub last_period: ::core::primitive::u32, + #[codec(compact)] + pub end: ::core::primitive::u32, + pub verifier: ::core::option::Option, + } + impl ::subxt::blocks::StaticExtrinsic for Create { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "create"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Contribute { + #[codec(compact)] + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + pub value: ::core::primitive::u128, + pub signature: + ::core::option::Option, + } + impl ::subxt::blocks::StaticExtrinsic for Contribute { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "contribute"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Withdraw { + pub who: ::subxt::utils::AccountId32, + #[codec(compact)] + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for Withdraw { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "withdraw"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Refund { + #[codec(compact)] + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for Refund { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "refund"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Dissolve { + #[codec(compact)] + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for Dissolve { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "dissolve"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Edit { + #[codec(compact)] + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + pub cap: ::core::primitive::u128, + #[codec(compact)] + pub first_period: ::core::primitive::u32, + #[codec(compact)] + pub last_period: ::core::primitive::u32, + #[codec(compact)] + pub end: ::core::primitive::u32, + pub verifier: ::core::option::Option, + } + impl ::subxt::blocks::StaticExtrinsic for Edit { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "edit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddMemo { + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub memo: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for AddMemo { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "add_memo"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Poke { + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for Poke { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "poke"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ContributeAll { + #[codec(compact)] + pub index: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub signature: + ::core::option::Option, + } + impl ::subxt::blocks::StaticExtrinsic for ContributeAll { + const PALLET: &'static str = "Crowdloan"; + const CALL: &'static str = "contribute_all"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::create`]."] + pub fn create( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + cap: ::core::primitive::u128, + first_period: ::core::primitive::u32, + last_period: ::core::primitive::u32, + end: ::core::primitive::u32, + verifier: ::core::option::Option, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "create", + types::Create { index, cap, first_period, last_period, end, verifier }, + [ + 236u8, 3u8, 248u8, 168u8, 136u8, 216u8, 20u8, 58u8, 179u8, 13u8, 184u8, + 73u8, 105u8, 35u8, 167u8, 66u8, 117u8, 195u8, 41u8, 41u8, 117u8, 176u8, + 65u8, 18u8, 225u8, 66u8, 2u8, 61u8, 212u8, 92u8, 117u8, 90u8, + ], + ) + } + #[doc = "See [`Pallet::contribute`]."] + pub fn contribute( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + value: ::core::primitive::u128, + signature: ::core::option::Option, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "contribute", + types::Contribute { index, value, signature }, + [ + 186u8, 247u8, 240u8, 7u8, 12u8, 239u8, 39u8, 191u8, 150u8, 219u8, + 137u8, 122u8, 214u8, 61u8, 62u8, 180u8, 229u8, 181u8, 105u8, 190u8, + 228u8, 55u8, 242u8, 70u8, 91u8, 118u8, 143u8, 233u8, 186u8, 231u8, + 207u8, 106u8, + ], + ) + } + #[doc = "See [`Pallet::withdraw`]."] + pub fn withdraw( + &self, + who: ::subxt::utils::AccountId32, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "withdraw", + types::Withdraw { who, index }, + [ + 148u8, 23u8, 138u8, 161u8, 248u8, 235u8, 138u8, 156u8, 209u8, 236u8, + 235u8, 81u8, 207u8, 212u8, 232u8, 126u8, 221u8, 46u8, 34u8, 39u8, 44u8, + 42u8, 75u8, 134u8, 12u8, 247u8, 84u8, 203u8, 48u8, 133u8, 72u8, 254u8, + ], + ) + } + #[doc = "See [`Pallet::refund`]."] + pub fn refund( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "refund", + types::Refund { index }, + [ + 245u8, 75u8, 215u8, 28u8, 141u8, 138u8, 201u8, 125u8, 21u8, 214u8, + 57u8, 23u8, 33u8, 41u8, 57u8, 227u8, 119u8, 212u8, 234u8, 227u8, 230u8, + 144u8, 249u8, 100u8, 198u8, 125u8, 106u8, 253u8, 93u8, 177u8, 247u8, + 5u8, + ], + ) + } + #[doc = "See [`Pallet::dissolve`]."] + pub fn dissolve( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "dissolve", + types::Dissolve { index }, + [ + 60u8, 225u8, 93u8, 234u8, 160u8, 90u8, 185u8, 188u8, 163u8, 72u8, + 241u8, 46u8, 62u8, 176u8, 236u8, 175u8, 147u8, 95u8, 45u8, 235u8, + 253u8, 76u8, 127u8, 190u8, 149u8, 54u8, 108u8, 78u8, 149u8, 161u8, + 39u8, 14u8, + ], + ) + } + #[doc = "See [`Pallet::edit`]."] + pub fn edit( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + cap: ::core::primitive::u128, + first_period: ::core::primitive::u32, + last_period: ::core::primitive::u32, + end: ::core::primitive::u32, + verifier: ::core::option::Option, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "edit", + types::Edit { index, cap, first_period, last_period, end, verifier }, + [ + 126u8, 29u8, 232u8, 93u8, 94u8, 23u8, 47u8, 217u8, 62u8, 2u8, 161u8, + 31u8, 156u8, 229u8, 109u8, 45u8, 97u8, 101u8, 189u8, 139u8, 40u8, + 238u8, 150u8, 94u8, 145u8, 77u8, 26u8, 153u8, 217u8, 171u8, 48u8, + 195u8, + ], + ) + } + #[doc = "See [`Pallet::add_memo`]."] + pub fn add_memo( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + memo: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "add_memo", + types::AddMemo { index, memo }, + [ + 190u8, 99u8, 225u8, 54u8, 136u8, 238u8, 210u8, 44u8, 103u8, 198u8, + 225u8, 254u8, 245u8, 12u8, 238u8, 112u8, 143u8, 169u8, 8u8, 193u8, + 29u8, 0u8, 159u8, 25u8, 112u8, 237u8, 194u8, 17u8, 111u8, 192u8, 219u8, + 50u8, + ], + ) + } + #[doc = "See [`Pallet::poke`]."] + pub fn poke( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "poke", + types::Poke { index }, + [ + 180u8, 81u8, 211u8, 12u8, 54u8, 204u8, 105u8, 118u8, 139u8, 209u8, + 182u8, 227u8, 174u8, 192u8, 64u8, 200u8, 212u8, 101u8, 3u8, 252u8, + 195u8, 110u8, 182u8, 121u8, 218u8, 193u8, 87u8, 38u8, 212u8, 151u8, + 213u8, 56u8, + ], + ) + } + #[doc = "See [`Pallet::contribute_all`]."] + pub fn contribute_all( + &self, + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + signature: ::core::option::Option, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Crowdloan", + "contribute_all", + types::ContributeAll { index, signature }, + [ + 233u8, 62u8, 129u8, 168u8, 161u8, 163u8, 78u8, 92u8, 191u8, 239u8, + 61u8, 2u8, 198u8, 246u8, 246u8, 81u8, 32u8, 131u8, 118u8, 170u8, 72u8, + 87u8, 17u8, 26u8, 55u8, 10u8, 146u8, 184u8, 213u8, 200u8, 252u8, 50u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::crowdloan::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Create a new crowdloaning campaign."] + pub struct Created { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for Created { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "Created"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contributed to a crowd sale."] + pub struct Contributed { + pub who: ::subxt::utils::AccountId32, + pub fund_index: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Contributed { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "Contributed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Withdrew full balance of a contributor."] + pub struct Withdrew { + pub who: ::subxt::utils::AccountId32, + pub fund_index: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Withdrew { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "Withdrew"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The loans in a fund have been partially dissolved, i.e. there are some left"] + #[doc = "over child keys that still need to be killed."] + pub struct PartiallyRefunded { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for PartiallyRefunded { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "PartiallyRefunded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "All loans in a fund have been refunded."] + pub struct AllRefunded { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for AllRefunded { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "AllRefunded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Fund is dissolved."] + pub struct Dissolved { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for Dissolved { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "Dissolved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The result of trying to submit a new bid to the Slots pallet."] + pub struct HandleBidResult { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for HandleBidResult { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "HandleBidResult"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The configuration to a crowdloan has been edited."] + pub struct Edited { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for Edited { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "Edited"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A memo has been updated."] + pub struct MemoUpdated { + pub who: ::subxt::utils::AccountId32, + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub memo: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::events::StaticEvent for MemoUpdated { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "MemoUpdated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A parachain has been moved to `NewRaise`"] + pub struct AddedToNewRaise { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for AddedToNewRaise { + const PALLET: &'static str = "Crowdloan"; + const EVENT: &'static str = "AddedToNewRaise"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Info on all of the funds."] + pub fn funds( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::crowdloan::FundInfo< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + ::core::primitive::u32, + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Crowdloan", + "Funds", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, + 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, + 236u8, 237u8, 210u8, 116u8, 159u8, 191u8, 89u8, 212u8, 167u8, 61u8, + 41u8, + ], + ) + } + #[doc = " Info on all of the funds."] + pub fn funds_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_common::crowdloan::FundInfo< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + ::core::primitive::u32, + ::core::primitive::u32, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Crowdloan", + "Funds", + Vec::new(), + [ + 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, + 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, + 236u8, 237u8, 210u8, 116u8, 159u8, 191u8, 89u8, 212u8, 167u8, 61u8, + 41u8, + ], + ) + } + #[doc = " The funds that have had additional contributions during the last block. This is used"] + #[doc = " in order to determine which funds should submit new or updated bids."] + pub fn new_raise( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Crowdloan", + "NewRaise", + vec![], + [ + 251u8, 31u8, 237u8, 22u8, 90u8, 248u8, 39u8, 66u8, 93u8, 81u8, 209u8, + 209u8, 194u8, 42u8, 109u8, 208u8, 56u8, 75u8, 45u8, 247u8, 253u8, + 165u8, 22u8, 184u8, 49u8, 49u8, 62u8, 126u8, 254u8, 146u8, 190u8, + 174u8, + ], + ) + } + #[doc = " The number of auctions that have entered into their ending period so far."] + pub fn endings_count( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Crowdloan", + "EndingsCount", + vec![], + [ + 106u8, 22u8, 229u8, 157u8, 118u8, 195u8, 11u8, 42u8, 5u8, 50u8, 44u8, + 183u8, 72u8, 167u8, 95u8, 243u8, 234u8, 5u8, 200u8, 253u8, 127u8, + 154u8, 23u8, 55u8, 202u8, 221u8, 82u8, 19u8, 201u8, 154u8, 248u8, 29u8, + ], + ) + } + #[doc = " Tracker for the next available fund index"] + pub fn next_fund_index( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Crowdloan", + "NextFundIndex", + vec![], + [ + 192u8, 21u8, 229u8, 234u8, 152u8, 224u8, 149u8, 44u8, 41u8, 9u8, 191u8, + 128u8, 118u8, 11u8, 117u8, 245u8, 170u8, 116u8, 77u8, 216u8, 175u8, + 115u8, 13u8, 85u8, 240u8, 170u8, 156u8, 201u8, 25u8, 96u8, 103u8, + 207u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " `PalletId` for the crowdloan pallet. An appropriate value could be"] + #[doc = " `PalletId(*b\"py/cfund\")`"] + pub fn pallet_id( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Crowdloan", + "PalletId", + [ + 56u8, 243u8, 53u8, 83u8, 154u8, 179u8, 170u8, 80u8, 133u8, 173u8, 61u8, + 161u8, 47u8, 225u8, 146u8, 21u8, 50u8, 229u8, 248u8, 27u8, 104u8, 58u8, + 129u8, 197u8, 102u8, 160u8, 168u8, 205u8, 154u8, 42u8, 217u8, 53u8, + ], + ) + } + #[doc = " The minimum amount that may be contributed into a crowdloan. Should almost certainly be"] + #[doc = " at least `ExistentialDeposit`."] + pub fn min_contribution( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Crowdloan", + "MinContribution", + [ + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " Max number of storage keys to remove per extrinsic call."] + pub fn remove_keys_limit( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Crowdloan", + "RemoveKeysLimit", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod xcm_pallet { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_xcm::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_xcm::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Send { + pub dest: ::std::boxed::Box, + pub message: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for Send { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "send"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TeleportAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for TeleportAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "teleport_assets"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReserveTransferAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ReserveTransferAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "reserve_transfer_assets"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Execute { + pub message: ::std::boxed::Box, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::blocks::StaticExtrinsic for Execute { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "execute"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceXcmVersion { + pub location: ::std::boxed::Box< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + pub version: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceXcmVersion { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_xcm_version"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceDefaultXcmVersion { + pub maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for ForceDefaultXcmVersion { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_default_xcm_version"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSubscribeVersionNotify { + pub location: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_subscribe_version_notify"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceUnsubscribeVersionNotify { + pub location: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_unsubscribe_version_notify"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct LimitedReserveTransferAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: ::core::primitive::u32, + pub weight_limit: runtime_types::xcm::v3::WeightLimit, + } + impl ::subxt::blocks::StaticExtrinsic for LimitedReserveTransferAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "limited_reserve_transfer_assets"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct LimitedTeleportAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: ::core::primitive::u32, + pub weight_limit: runtime_types::xcm::v3::WeightLimit, + } + impl ::subxt::blocks::StaticExtrinsic for LimitedTeleportAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "limited_teleport_assets"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSuspension { + pub suspended: ::core::primitive::bool, + } + impl ::subxt::blocks::StaticExtrinsic for ForceSuspension { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_suspension"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::send`]."] + pub fn send( + &self, + dest: runtime_types::xcm::VersionedMultiLocation, + message: runtime_types::xcm::VersionedXcm, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "send", + types::Send { + dest: ::std::boxed::Box::new(dest), + message: ::std::boxed::Box::new(message), + }, + [ + 147u8, 255u8, 86u8, 82u8, 17u8, 159u8, 225u8, 145u8, 220u8, 89u8, 71u8, + 23u8, 193u8, 249u8, 12u8, 70u8, 19u8, 140u8, 232u8, 97u8, 12u8, 220u8, + 113u8, 65u8, 4u8, 255u8, 138u8, 10u8, 231u8, 122u8, 67u8, 105u8, + ], + ) + } + #[doc = "See [`Pallet::teleport_assets`]."] + pub fn teleport_assets( + &self, + dest: runtime_types::xcm::VersionedMultiLocation, + beneficiary: runtime_types::xcm::VersionedMultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + fee_asset_item: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "teleport_assets", + types::TeleportAssets { + dest: ::std::boxed::Box::new(dest), + beneficiary: ::std::boxed::Box::new(beneficiary), + assets: ::std::boxed::Box::new(assets), + fee_asset_item, + }, + [ + 56u8, 144u8, 237u8, 60u8, 157u8, 5u8, 7u8, 129u8, 41u8, 149u8, 160u8, + 100u8, 233u8, 102u8, 181u8, 140u8, 115u8, 213u8, 29u8, 132u8, 16u8, + 30u8, 23u8, 82u8, 140u8, 134u8, 37u8, 87u8, 3u8, 99u8, 172u8, 42u8, + ], + ) + } + #[doc = "See [`Pallet::reserve_transfer_assets`]."] + pub fn reserve_transfer_assets( + &self, + dest: runtime_types::xcm::VersionedMultiLocation, + beneficiary: runtime_types::xcm::VersionedMultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + fee_asset_item: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "reserve_transfer_assets", + types::ReserveTransferAssets { + dest: ::std::boxed::Box::new(dest), + beneficiary: ::std::boxed::Box::new(beneficiary), + assets: ::std::boxed::Box::new(assets), + fee_asset_item, + }, + [ + 21u8, 167u8, 44u8, 22u8, 210u8, 73u8, 148u8, 7u8, 91u8, 108u8, 148u8, + 205u8, 170u8, 243u8, 142u8, 224u8, 205u8, 119u8, 252u8, 22u8, 203u8, + 32u8, 73u8, 200u8, 178u8, 14u8, 167u8, 147u8, 166u8, 55u8, 14u8, 231u8, + ], + ) + } + #[doc = "See [`Pallet::execute`]."] + pub fn execute( + &self, + message: runtime_types::xcm::VersionedXcm2, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "execute", + types::Execute { message: ::std::boxed::Box::new(message), max_weight }, + [ + 15u8, 97u8, 86u8, 111u8, 105u8, 116u8, 109u8, 206u8, 70u8, 8u8, 57u8, + 232u8, 133u8, 132u8, 30u8, 219u8, 34u8, 69u8, 0u8, 213u8, 98u8, 241u8, + 186u8, 93u8, 216u8, 39u8, 73u8, 24u8, 193u8, 87u8, 92u8, 31u8, + ], + ) + } + #[doc = "See [`Pallet::force_xcm_version`]."] + pub fn force_xcm_version( + &self, + location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + version: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "force_xcm_version", + types::ForceXcmVersion { + location: ::std::boxed::Box::new(location), + version, + }, + [ + 110u8, 11u8, 78u8, 255u8, 66u8, 2u8, 55u8, 108u8, 92u8, 151u8, 231u8, + 175u8, 75u8, 156u8, 34u8, 191u8, 0u8, 56u8, 104u8, 197u8, 70u8, 204u8, + 73u8, 234u8, 173u8, 251u8, 88u8, 226u8, 3u8, 136u8, 228u8, 136u8, + ], + ) + } + #[doc = "See [`Pallet::force_default_xcm_version`]."] + pub fn force_default_xcm_version( + &self, + maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "force_default_xcm_version", + types::ForceDefaultXcmVersion { maybe_xcm_version }, + [ + 43u8, 114u8, 102u8, 104u8, 209u8, 234u8, 108u8, 173u8, 109u8, 188u8, + 94u8, 214u8, 136u8, 43u8, 153u8, 75u8, 161u8, 192u8, 76u8, 12u8, 221u8, + 237u8, 158u8, 247u8, 41u8, 193u8, 35u8, 174u8, 183u8, 207u8, 79u8, + 213u8, + ], + ) + } + #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + pub fn force_subscribe_version_notify( + &self, + location: runtime_types::xcm::VersionedMultiLocation, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "force_subscribe_version_notify", + types::ForceSubscribeVersionNotify { + location: ::std::boxed::Box::new(location), + }, + [ + 112u8, 254u8, 138u8, 12u8, 203u8, 176u8, 251u8, 167u8, 223u8, 0u8, + 71u8, 148u8, 19u8, 179u8, 47u8, 96u8, 188u8, 189u8, 14u8, 172u8, 1u8, + 1u8, 192u8, 107u8, 137u8, 158u8, 22u8, 9u8, 138u8, 241u8, 32u8, 47u8, + ], + ) + } + #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + pub fn force_unsubscribe_version_notify( + &self, + location: runtime_types::xcm::VersionedMultiLocation, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "force_unsubscribe_version_notify", + types::ForceUnsubscribeVersionNotify { + location: ::std::boxed::Box::new(location), + }, + [ + 205u8, 143u8, 230u8, 143u8, 166u8, 184u8, 53u8, 252u8, 118u8, 184u8, + 209u8, 227u8, 225u8, 184u8, 254u8, 244u8, 101u8, 56u8, 27u8, 128u8, + 40u8, 159u8, 178u8, 62u8, 63u8, 164u8, 59u8, 236u8, 1u8, 168u8, 202u8, + 42u8, + ], + ) + } + #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + pub fn limited_reserve_transfer_assets( + &self, + dest: runtime_types::xcm::VersionedMultiLocation, + beneficiary: runtime_types::xcm::VersionedMultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "limited_reserve_transfer_assets", + types::LimitedReserveTransferAssets { + dest: ::std::boxed::Box::new(dest), + beneficiary: ::std::boxed::Box::new(beneficiary), + assets: ::std::boxed::Box::new(assets), + fee_asset_item, + weight_limit, + }, + [ + 10u8, 139u8, 165u8, 239u8, 92u8, 178u8, 169u8, 62u8, 166u8, 236u8, + 50u8, 12u8, 196u8, 3u8, 233u8, 209u8, 3u8, 159u8, 184u8, 234u8, 171u8, + 46u8, 145u8, 134u8, 241u8, 155u8, 221u8, 173u8, 166u8, 94u8, 147u8, + 88u8, + ], + ) + } + #[doc = "See [`Pallet::limited_teleport_assets`]."] + pub fn limited_teleport_assets( + &self, + dest: runtime_types::xcm::VersionedMultiLocation, + beneficiary: runtime_types::xcm::VersionedMultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "limited_teleport_assets", + types::LimitedTeleportAssets { + dest: ::std::boxed::Box::new(dest), + beneficiary: ::std::boxed::Box::new(beneficiary), + assets: ::std::boxed::Box::new(assets), + fee_asset_item, + weight_limit, + }, + [ + 156u8, 205u8, 105u8, 18u8, 120u8, 130u8, 144u8, 67u8, 152u8, 188u8, + 109u8, 121u8, 4u8, 240u8, 123u8, 112u8, 72u8, 153u8, 2u8, 111u8, 183u8, + 170u8, 199u8, 82u8, 33u8, 117u8, 43u8, 133u8, 208u8, 44u8, 118u8, + 107u8, + ], + ) + } + #[doc = "See [`Pallet::force_suspension`]."] + pub fn force_suspension( + &self, + suspended: ::core::primitive::bool, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "force_suspension", + types::ForceSuspension { suspended }, + [ + 78u8, 125u8, 93u8, 55u8, 129u8, 44u8, 36u8, 227u8, 75u8, 46u8, 68u8, + 202u8, 81u8, 127u8, 111u8, 92u8, 149u8, 38u8, 225u8, 185u8, 183u8, + 154u8, 89u8, 159u8, 79u8, 10u8, 229u8, 1u8, 226u8, 243u8, 65u8, 238u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_xcm::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Execution of an XCM message was attempted."] + pub struct Attempted { + pub outcome: runtime_types::xcm::v3::traits::Outcome, + } + impl ::subxt::events::StaticEvent for Attempted { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "Attempted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A XCM message was sent."] + pub struct Sent { + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub message: runtime_types::xcm::v3::Xcm, + pub message_id: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for Sent { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "Sent"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Query response received which does not match a registered query. This may be because a"] + #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] + #[doc = "because the query timed out."] + pub struct UnexpectedResponse { + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for UnexpectedResponse { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "UnexpectedResponse"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Query response has been received and is ready for taking with `take_response`. There is"] + #[doc = "no registered notification call."] + pub struct ResponseReady { + pub query_id: ::core::primitive::u64, + pub response: runtime_types::xcm::v3::Response, + } + impl ::subxt::events::StaticEvent for ResponseReady { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "ResponseReady"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Query response has been received and query is removed. The registered notification has"] + #[doc = "been dispatched and executed successfully."] + pub struct Notified { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + } + impl ::subxt::events::StaticEvent for Notified { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "Notified"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Query response has been received and query is removed. The registered notification"] + #[doc = "could not be dispatched because the dispatch weight is greater than the maximum weight"] + #[doc = "originally budgeted by this runtime for the query result."] + pub struct NotifyOverweight { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + pub actual_weight: runtime_types::sp_weights::weight_v2::Weight, + pub max_budgeted_weight: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::events::StaticEvent for NotifyOverweight { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "NotifyOverweight"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Query response has been received and query is removed. There was a general error with"] + #[doc = "dispatching the notification call."] + pub struct NotifyDispatchError { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + } + impl ::subxt::events::StaticEvent for NotifyDispatchError { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "NotifyDispatchError"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Query response has been received and query is removed. The dispatch was unable to be"] + #[doc = "decoded into a `Call`; this might be due to dispatch function having a signature which"] + #[doc = "is not `(origin, QueryId, Response)`."] + pub struct NotifyDecodeFailed { + pub query_id: ::core::primitive::u64, + pub pallet_index: ::core::primitive::u8, + pub call_index: ::core::primitive::u8, + } + impl ::subxt::events::StaticEvent for NotifyDecodeFailed { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "NotifyDecodeFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Expected query response has been received but the origin location of the response does"] + #[doc = "not match that expected. The query remains registered for a later, valid, response to"] + #[doc = "be received and acted upon."] + pub struct InvalidResponder { + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + pub expected_location: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + } + impl ::subxt::events::StaticEvent for InvalidResponder { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "InvalidResponder"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Expected query response has been received but the expected origin location placed in"] + #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] + #[doc = ""] + #[doc = "This is unexpected (since a location placed in storage in a previously executing"] + #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] + #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] + #[doc = "needed."] + pub struct InvalidResponderVersion { + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for InvalidResponderVersion { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "InvalidResponderVersion"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Received query response has been read and removed."] + pub struct ResponseTaken { + pub query_id: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for ResponseTaken { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "ResponseTaken"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some assets have been placed in an asset trap."] + pub struct AssetsTrapped { + pub hash: ::subxt::utils::H256, + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub assets: runtime_types::xcm::VersionedMultiAssets, + } + impl ::subxt::events::StaticEvent for AssetsTrapped { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "AssetsTrapped"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An XCM version change notification message has been attempted to be sent."] + #[doc = ""] + #[doc = "The cost of sending it (borne by the chain) is included."] + pub struct VersionChangeNotified { + pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub result: ::core::primitive::u32, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for VersionChangeNotified { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "VersionChangeNotified"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The supported version of a location has been changed. This might be through an"] + #[doc = "automatic notification or a manual intervention."] + pub struct SupportedVersionChanged { + pub location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub version: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for SupportedVersionChanged { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "SupportedVersionChanged"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A given location which had a version change subscription was dropped owing to an error"] + #[doc = "sending the notification to it."] + pub struct NotifyTargetSendFail { + pub location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + pub error: runtime_types::xcm::v3::traits::Error, + } + impl ::subxt::events::StaticEvent for NotifyTargetSendFail { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "NotifyTargetSendFail"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A given location which had a version change subscription was dropped owing to an error"] + #[doc = "migrating the location to our new XCM format."] + pub struct NotifyTargetMigrationFail { + pub location: runtime_types::xcm::VersionedMultiLocation, + pub query_id: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for NotifyTargetMigrationFail { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "NotifyTargetMigrationFail"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Expected query response has been received but the expected querier location placed in"] + #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] + #[doc = ""] + #[doc = "This is unexpected (since a location placed in storage in a previously executing"] + #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] + #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] + #[doc = "needed."] + pub struct InvalidQuerierVersion { + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + } + impl ::subxt::events::StaticEvent for InvalidQuerierVersion { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "InvalidQuerierVersion"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Expected query response has been received but the querier location of the response does"] + #[doc = "not match the expected. The query remains registered for a later, valid, response to"] + #[doc = "be received and acted upon."] + pub struct InvalidQuerier { + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub query_id: ::core::primitive::u64, + pub expected_querier: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub maybe_actual_querier: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + } + impl ::subxt::events::StaticEvent for InvalidQuerier { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "InvalidQuerier"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A remote has requested XCM version change notification from us and we have honored it."] + #[doc = "A version information message is sent to them and its cost is included."] + pub struct VersionNotifyStarted { + pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for VersionNotifyStarted { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "VersionNotifyStarted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "We have requested that a remote chain send us XCM version change notifications."] + pub struct VersionNotifyRequested { + pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for VersionNotifyRequested { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "VersionNotifyRequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "We have requested that a remote chain stops sending us XCM version change"] + #[doc = "notifications."] + pub struct VersionNotifyUnrequested { + pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub cost: runtime_types::xcm::v3::multiasset::MultiAssets, + pub message_id: [::core::primitive::u8; 32usize], + } + impl ::subxt::events::StaticEvent for VersionNotifyUnrequested { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "VersionNotifyUnrequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] + pub struct FeesPaid { + pub paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub fees: runtime_types::xcm::v3::multiasset::MultiAssets, + } + impl ::subxt::events::StaticEvent for FeesPaid { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "FeesPaid"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some assets have been claimed from an asset trap"] + pub struct AssetsClaimed { + pub hash: ::subxt::utils::H256, + pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub assets: runtime_types::xcm::VersionedMultiAssets, + } + impl ::subxt::events::StaticEvent for AssetsClaimed { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "AssetsClaimed"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The latest available query index."] + pub fn query_counter( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "QueryCounter", + vec![], + [ + 216u8, 73u8, 160u8, 232u8, 60u8, 245u8, 218u8, 219u8, 152u8, 68u8, + 146u8, 219u8, 255u8, 7u8, 86u8, 112u8, 83u8, 49u8, 94u8, 173u8, 64u8, + 203u8, 147u8, 226u8, 236u8, 39u8, 129u8, 106u8, 209u8, 113u8, 150u8, + 50u8, + ], + ) + } + #[doc = " The ongoing queries."] + pub fn queries( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::QueryStatus<::core::primitive::u32>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "Queries", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, + 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, + 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + ], + ) + } + #[doc = " The ongoing queries."] + pub fn queries_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::QueryStatus<::core::primitive::u32>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "Queries", + Vec::new(), + [ + 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, + 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, + 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + ], + ) + } + #[doc = " The existing asset traps."] + #[doc = ""] + #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] + pub fn asset_traps( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "AssetTraps", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 148u8, 41u8, 254u8, 134u8, 61u8, 172u8, 126u8, 146u8, 78u8, 178u8, + 50u8, 77u8, 226u8, 8u8, 200u8, 78u8, 77u8, 91u8, 26u8, 133u8, 104u8, + 126u8, 28u8, 28u8, 202u8, 62u8, 87u8, 183u8, 231u8, 191u8, 5u8, 181u8, + ], + ) + } + #[doc = " The existing asset traps."] + #[doc = ""] + #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] + pub fn asset_traps_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "AssetTraps", + Vec::new(), + [ + 148u8, 41u8, 254u8, 134u8, 61u8, 172u8, 126u8, 146u8, 78u8, 178u8, + 50u8, 77u8, 226u8, 8u8, 200u8, 78u8, 77u8, 91u8, 26u8, 133u8, 104u8, + 126u8, 28u8, 28u8, 202u8, 62u8, 87u8, 183u8, 231u8, 191u8, 5u8, 181u8, + ], + ) + } + #[doc = " Default version to encode XCM when latest version of destination is unknown. If `None`,"] + #[doc = " then the destinations whose XCM version is unknown are considered unreachable."] + pub fn safe_xcm_version( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "SafeXcmVersion", + vec![], + [ + 187u8, 8u8, 74u8, 126u8, 80u8, 215u8, 177u8, 60u8, 223u8, 123u8, 196u8, + 155u8, 166u8, 66u8, 25u8, 164u8, 191u8, 66u8, 116u8, 131u8, 116u8, + 188u8, 224u8, 122u8, 75u8, 195u8, 246u8, 188u8, 83u8, 134u8, 49u8, + 143u8, + ], + ) + } + #[doc = " The Latest versions that we know various locations support."] + pub fn supported_version( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "SupportedVersion", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, + 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, + 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + ], + ) + } + #[doc = " The Latest versions that we know various locations support."] + pub fn supported_version_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "SupportedVersion", + Vec::new(), + [ + 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, + 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, + 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + ], + ) + } + #[doc = " All locations that we have requested version notifications from."] + pub fn version_notifiers( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionNotifiers", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, + 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, + 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + ], + ) + } + #[doc = " All locations that we have requested version notifications from."] + pub fn version_notifiers_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionNotifiers", + Vec::new(), + [ + 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, + 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, + 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + ], + ) + } + #[doc = " The target locations that are subscribed to our version changes, as well as the most recent"] + #[doc = " of our versions we informed them of."] + pub fn version_notify_targets( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + ::core::primitive::u64, + runtime_types::sp_weights::weight_v2::Weight, + ::core::primitive::u32, + ), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionNotifyTargets", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, + 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, + 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, + 173u8, + ], + ) + } + #[doc = " The target locations that are subscribed to our version changes, as well as the most recent"] + #[doc = " of our versions we informed them of."] + pub fn version_notify_targets_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + ::core::primitive::u64, + runtime_types::sp_weights::weight_v2::Weight, + ::core::primitive::u32, + ), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionNotifyTargets", + Vec::new(), + [ + 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, + 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, + 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, + 173u8, + ], + ) + } + #[doc = " Destinations whose latest XCM version we would like to know. Duplicates not allowed, and"] + #[doc = " the `u32` counter is the number of times that a send to the destination has been attempted,"] + #[doc = " which is used as a prioritization."] + pub fn version_discovery_queue( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::xcm::VersionedMultiLocation, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionDiscoveryQueue", + vec![], + [ + 110u8, 87u8, 102u8, 193u8, 125u8, 129u8, 0u8, 221u8, 218u8, 229u8, + 101u8, 94u8, 74u8, 229u8, 246u8, 180u8, 113u8, 11u8, 15u8, 159u8, 98u8, + 90u8, 30u8, 112u8, 164u8, 236u8, 151u8, 220u8, 19u8, 83u8, 67u8, 248u8, + ], + ) + } + #[doc = " The current migration's stage, if any."] + pub fn current_migration( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::VersionMigrationStage, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "CurrentMigration", + vec![], + [ + 74u8, 138u8, 181u8, 162u8, 59u8, 251u8, 37u8, 28u8, 232u8, 51u8, 30u8, + 152u8, 252u8, 133u8, 95u8, 195u8, 47u8, 127u8, 21u8, 44u8, 62u8, 143u8, + 170u8, 234u8, 160u8, 37u8, 131u8, 179u8, 57u8, 241u8, 140u8, 124u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on a remote chain."] + pub fn remote_locked_fungibles( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _2: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "RemoteLockedFungibles", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_2.borrow()), + ], + [ + 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, + 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, + 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on a remote chain."] + pub fn remote_locked_fungibles_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "RemoteLockedFungibles", + Vec::new(), + [ + 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, + 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, + 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on this chain."] + pub fn locked_fungibles( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u128, + runtime_types::xcm::VersionedMultiLocation, + )>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "LockedFungibles", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, + 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, + 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, + 35u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on this chain."] + pub fn locked_fungibles_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u128, + runtime_types::xcm::VersionedMultiLocation, + )>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "LockedFungibles", + Vec::new(), + [ + 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, + 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, + 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, + 35u8, + ], + ) + } + #[doc = " Global suspension state of the XCM executor."] + pub fn xcm_execution_suspended( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "XcmExecutionSuspended", + vec![], + [ + 182u8, 54u8, 69u8, 68u8, 78u8, 76u8, 103u8, 79u8, 47u8, 136u8, 99u8, + 104u8, 128u8, 129u8, 249u8, 54u8, 214u8, 136u8, 97u8, 48u8, 178u8, + 42u8, 26u8, 27u8, 82u8, 24u8, 33u8, 77u8, 33u8, 27u8, 20u8, 127u8, + ], + ) + } + } + } + } + pub mod message_queue { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_message_queue::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_message_queue::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReapPage { pub message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , pub page_index : :: core :: primitive :: u32 , } + impl ::subxt::blocks::StaticExtrinsic for ReapPage { + const PALLET: &'static str = "MessageQueue"; + const CALL: &'static str = "reap_page"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ExecuteOverweight { pub message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , pub page : :: core :: primitive :: u32 , pub index : :: core :: primitive :: u32 , pub weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } + impl ::subxt::blocks::StaticExtrinsic for ExecuteOverweight { + const PALLET: &'static str = "MessageQueue"; + const CALL: &'static str = "execute_overweight"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::reap_page`]."] + pub fn reap_page( + &self, + message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin, + page_index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "MessageQueue", + "reap_page", + types::ReapPage { message_origin, page_index }, + [ + 217u8, 3u8, 106u8, 158u8, 151u8, 194u8, 234u8, 4u8, 254u8, 4u8, 200u8, + 201u8, 107u8, 140u8, 220u8, 201u8, 245u8, 14u8, 23u8, 156u8, 41u8, + 106u8, 39u8, 90u8, 214u8, 1u8, 183u8, 45u8, 3u8, 83u8, 242u8, 30u8, + ], + ) + } + #[doc = "See [`Pallet::execute_overweight`]."] + pub fn execute_overweight( + &self, + message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin, + page: ::core::primitive::u32, + index: ::core::primitive::u32, + weight_limit: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "MessageQueue", + "execute_overweight", + types::ExecuteOverweight { message_origin, page, index, weight_limit }, + [ + 101u8, 2u8, 86u8, 225u8, 217u8, 229u8, 143u8, 214u8, 146u8, 190u8, + 182u8, 102u8, 251u8, 18u8, 179u8, 187u8, 113u8, 29u8, 182u8, 24u8, + 34u8, 179u8, 64u8, 249u8, 139u8, 76u8, 50u8, 238u8, 132u8, 167u8, + 115u8, 141u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_message_queue::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] + pub struct ProcessingFailed { + pub id: [::core::primitive::u8; 32usize], + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub error: runtime_types::frame_support::traits::messages::ProcessMessageError, + } + impl ::subxt::events::StaticEvent for ProcessingFailed { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "ProcessingFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Message is processed."] + pub struct Processed { + pub id: [::core::primitive::u8; 32usize], + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub weight_used: runtime_types::sp_weights::weight_v2::Weight, + pub success: ::core::primitive::bool, + } + impl ::subxt::events::StaticEvent for Processed { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "Processed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Message placed in overweight queue."] + pub struct OverweightEnqueued { + pub id: [::core::primitive::u8; 32usize], + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub page_index: ::core::primitive::u32, + pub message_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for OverweightEnqueued { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "OverweightEnqueued"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "This page was reaped."] + pub struct PageReaped { + pub origin: + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for PageReaped { + const PALLET: &'static str = "MessageQueue"; + const EVENT: &'static str = "PageReaped"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "BookStateFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 32u8, 61u8, 161u8, 81u8, 134u8, 136u8, 252u8, 113u8, 204u8, 115u8, + 206u8, 180u8, 33u8, 185u8, 137u8, 155u8, 178u8, 189u8, 234u8, 201u8, + 31u8, 230u8, 156u8, 72u8, 37u8, 56u8, 152u8, 91u8, 50u8, 82u8, 191u8, + 2u8, + ], + ) + } + #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , () , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "BookStateFor", + Vec::new(), + [ + 32u8, 61u8, 161u8, 81u8, 134u8, 136u8, 252u8, 113u8, 204u8, 115u8, + 206u8, 180u8, 33u8, 185u8, 137u8, 155u8, 178u8, 189u8, 234u8, 201u8, + 31u8, 230u8, 156u8, 72u8, 37u8, 56u8, 152u8, 91u8, 50u8, 82u8, 191u8, + 2u8, + ], + ) + } + #[doc = " The origin at which we should begin servicing."] + pub fn service_head( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "ServiceHead", + vec![], + [ + 17u8, 130u8, 229u8, 193u8, 127u8, 237u8, 60u8, 232u8, 99u8, 109u8, + 102u8, 228u8, 124u8, 103u8, 24u8, 188u8, 151u8, 121u8, 55u8, 97u8, + 85u8, 63u8, 131u8, 60u8, 99u8, 12u8, 88u8, 230u8, 86u8, 50u8, 12u8, + 75u8, + ], + ) + } + #[doc = " The map of page indices to pages."] + pub fn pages( + &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin >, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_message_queue::Page<::core::primitive::u32>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "Pages", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, + 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, + 232u8, 47u8, 10u8, 185u8, 113u8, 230u8, 47u8, 91u8, 253u8, 196u8, 95u8, + 102u8, + ], + ) + } + #[doc = " The map of page indices to pages."] + pub fn pages_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_message_queue::Page<::core::primitive::u32>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "MessageQueue", + "Pages", + Vec::new(), + [ + 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, + 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, + 232u8, 47u8, 10u8, 185u8, 113u8, 230u8, 47u8, 91u8, 253u8, 196u8, 95u8, + 102u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The size of the page; this implies the maximum message size which can be sent."] + #[doc = ""] + #[doc = " A good value depends on the expected message sizes, their weights, the weight that is"] + #[doc = " available for processing them and the maximal needed message size. The maximal message"] + #[doc = " size is slightly lower than this as defined by [`MaxMessageLenOf`]."] + pub fn heap_size(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "MessageQueue", + "HeapSize", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of stale pages (i.e. of overweight messages) allowed before culling"] + #[doc = " can happen. Once there are more stale pages than this, then historical pages may be"] + #[doc = " dropped, even if they contain unprocessed overweight messages."] + pub fn max_stale(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "MessageQueue", + "MaxStale", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The amount of weight (if any) which should be provided to the message queue for"] + #[doc = " servicing enqueued items."] + #[doc = ""] + #[doc = " This may be legitimately `None` in the case that you will call"] + #[doc = " `ServiceQueues::service_queues` manually."] + pub fn service_weight( + &self, + ) -> ::subxt::constants::Address< + ::core::option::Option, + > { + ::subxt::constants::Address::new_static( + "MessageQueue", + "ServiceWeight", + [ + 204u8, 140u8, 63u8, 167u8, 49u8, 8u8, 148u8, 163u8, 190u8, 224u8, 15u8, + 103u8, 86u8, 153u8, 248u8, 117u8, 223u8, 117u8, 210u8, 80u8, 205u8, + 155u8, 40u8, 11u8, 59u8, 63u8, 129u8, 156u8, 17u8, 83u8, 177u8, 250u8, + ], + ) + } + } + } + } + pub mod asset_rate { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_asset_rate::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_asset_rate::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Create { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + pub rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::blocks::StaticExtrinsic for Create { + const PALLET: &'static str = "AssetRate"; + const CALL: &'static str = "create"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Update { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + pub rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::blocks::StaticExtrinsic for Update { + const PALLET: &'static str = "AssetRate"; + const CALL: &'static str = "update"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Remove { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Remove { + const PALLET: &'static str = "AssetRate"; + const CALL: &'static str = "remove"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::create`]."] + pub fn create( + &self, + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "AssetRate", + "create", + types::Create { asset_kind: ::std::boxed::Box::new(asset_kind), rate }, + [ + 154u8, 152u8, 38u8, 160u8, 110u8, 48u8, 11u8, 80u8, 92u8, 50u8, 177u8, + 170u8, 43u8, 6u8, 192u8, 234u8, 105u8, 114u8, 165u8, 178u8, 173u8, + 134u8, 92u8, 233u8, 123u8, 191u8, 176u8, 154u8, 222u8, 224u8, 32u8, + 183u8, + ], + ) + } + #[doc = "See [`Pallet::update`]."] + pub fn update( + &self, + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "AssetRate", + "update", + types::Update { asset_kind: ::std::boxed::Box::new(asset_kind), rate }, + [ + 188u8, 71u8, 197u8, 156u8, 105u8, 63u8, 11u8, 90u8, 124u8, 227u8, + 146u8, 78u8, 93u8, 216u8, 100u8, 41u8, 128u8, 115u8, 66u8, 243u8, + 198u8, 61u8, 115u8, 30u8, 170u8, 218u8, 254u8, 203u8, 37u8, 141u8, + 67u8, 179u8, + ], + ) + } + #[doc = "See [`Pallet::remove`]."] + pub fn remove( + &self, + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "AssetRate", + "remove", + types::Remove { asset_kind: ::std::boxed::Box::new(asset_kind) }, + [ + 229u8, 203u8, 96u8, 158u8, 162u8, 236u8, 80u8, 239u8, 106u8, 193u8, + 85u8, 234u8, 99u8, 87u8, 214u8, 214u8, 157u8, 55u8, 70u8, 91u8, 9u8, + 187u8, 105u8, 99u8, 134u8, 181u8, 56u8, 212u8, 152u8, 136u8, 100u8, + 32u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_asset_rate::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetRateCreated { + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + pub rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::events::StaticEvent for AssetRateCreated { + const PALLET: &'static str = "AssetRate"; + const EVENT: &'static str = "AssetRateCreated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetRateRemoved { + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + } + impl ::subxt::events::StaticEvent for AssetRateRemoved { + const PALLET: &'static str = "AssetRate"; + const EVENT: &'static str = "AssetRateRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetRateUpdated { + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + pub old: runtime_types::sp_arithmetic::fixed_point::FixedU128, + pub new: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::events::StaticEvent for AssetRateUpdated { + const PALLET: &'static str = "AssetRate"; + const EVENT: &'static str = "AssetRateUpdated"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Maps an asset to its fixed point representation in the native balance."] + #[doc = ""] + #[doc = " E.g. `native_amount = asset_amount * ConversionRateToNative::::get(asset_kind)`"] + pub fn conversion_rate_to_native( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::fixed_point::FixedU128, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "AssetRate", + "ConversionRateToNative", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, + 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, + 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + ], + ) + } + #[doc = " Maps an asset to its fixed point representation in the native balance."] + #[doc = ""] + #[doc = " E.g. `native_amount = asset_amount * ConversionRateToNative::::get(asset_kind)`"] + pub fn conversion_rate_to_native_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::fixed_point::FixedU128, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "AssetRate", + "ConversionRateToNative", + Vec::new(), + [ + 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, + 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, + 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + ], + ) + } + } + } + } + pub mod beefy { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_beefy::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_beefy::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocation { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocationUnsigned { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation_unsigned"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetNewGenesis { + pub delay_in_blocks: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetNewGenesis { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "set_new_genesis"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::report_equivocation`]."] + pub fn report_equivocation( + &self, + equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "report_equivocation", + types::ReportEquivocation { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 156u8, 32u8, 92u8, 179u8, 165u8, 93u8, 216u8, 130u8, 121u8, 225u8, + 33u8, 141u8, 255u8, 12u8, 101u8, 136u8, 177u8, 25u8, 23u8, 239u8, 12u8, + 142u8, 88u8, 228u8, 85u8, 171u8, 218u8, 185u8, 146u8, 245u8, 149u8, + 85u8, + ], + ) + } + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + pub fn report_equivocation_unsigned( + &self, + equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "report_equivocation_unsigned", + types::ReportEquivocationUnsigned { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 126u8, 201u8, 236u8, 234u8, 107u8, 52u8, 37u8, 115u8, 228u8, 232u8, + 103u8, 193u8, 143u8, 224u8, 79u8, 192u8, 207u8, 204u8, 161u8, 103u8, + 210u8, 131u8, 64u8, 251u8, 48u8, 196u8, 249u8, 148u8, 2u8, 179u8, + 135u8, 121u8, + ], + ) + } + #[doc = "See [`Pallet::set_new_genesis`]."] + pub fn set_new_genesis( + &self, + delay_in_blocks: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "set_new_genesis", + types::SetNewGenesis { delay_in_blocks }, + [ + 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, + 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, + 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The current authorities set"] + pub fn authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "Authorities", + vec![], + [ + 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, + 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, + 23u8, 59u8, 59u8, 41u8, 0u8, 226u8, 98u8, 166u8, 253u8, 59u8, + ], + ) + } + #[doc = " The current validator set id"] + pub fn validator_set_id( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "ValidatorSetId", + vec![], + [ + 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, + 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, + 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, + 78u8, + ], + ) + } + #[doc = " Authorities set scheduled to be used with the next session"] + pub fn next_authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "NextAuthorities", + vec![], + [ + 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, + 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, + 13u8, 209u8, 205u8, 98u8, 104u8, 91u8, 3u8, 47u8, 82u8, 11u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "SetIdSession", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "SetIdSession", + Vec::new(), + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " Block number where BEEFY consensus is enabled/started."] + #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] + #[doc = " restarted from the newly set block number."] + pub fn genesis_block( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::option::Option<::core::primitive::u32>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Beefy", + "GenesisBlock", + vec![], + [ + 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, + 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, + 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The maximum number of authorities that can be added."] + pub fn max_authorities( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxAuthorities", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators for each validator."] + pub fn max_nominators( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxNominators", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of entries to keep in the set id to session index mapping."] + #[doc = ""] + #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] + #[doc = " value should relate to the bonding duration of whatever staking system is"] + #[doc = " being used (if any). If equivocation handling is not enabled then this value"] + #[doc = " can be zero."] + pub fn max_set_id_session_entries( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxSetIdSessionEntries", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod mmr { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Latest MMR Root hash."] + pub fn root_hash( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "RootHash", + vec![], + [ + 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, + 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, + 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, + ], + ) + } + #[doc = " Current size of the MMR (number of leaves)."] + pub fn number_of_leaves( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "NumberOfLeaves", + vec![], + [ + 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, + 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, + 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "Nodes", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Mmr", + "Nodes", + Vec::new(), + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + } + } + } + pub mod beefy_mmr_leaf { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Details of current BEEFY authority set."] + pub fn beefy_authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "BeefyMmrLeaf", + "BeefyAuthorities", + vec![], + [ + 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, + 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, + 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, + 7u8, + ], + ) + } + #[doc = " Details of next BEEFY authority set."] + #[doc = ""] + #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] + pub fn beefy_next_authorities( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "BeefyMmrLeaf", + "BeefyNextAuthorities", + vec![], + [ + 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, + 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, + 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, + ], + ) + } + } + } + } + pub mod para_sudo_wrapper { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoScheduleParaInitialize { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub genesis: runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, + } + impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParaInitialize { + const PALLET: &'static str = "ParaSudoWrapper"; + const CALL: &'static str = "sudo_schedule_para_initialize"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoScheduleParaCleanup { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParaCleanup { + const PALLET: &'static str = "ParaSudoWrapper"; + const CALL: &'static str = "sudo_schedule_para_cleanup"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoScheduleParathreadUpgrade { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParathreadUpgrade { + const PALLET: &'static str = "ParaSudoWrapper"; + const CALL: &'static str = "sudo_schedule_parathread_upgrade"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoScheduleParachainDowngrade { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for SudoScheduleParachainDowngrade { + const PALLET: &'static str = "ParaSudoWrapper"; + const CALL: &'static str = "sudo_schedule_parachain_downgrade"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoQueueDownwardXcm { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub xcm: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for SudoQueueDownwardXcm { + const PALLET: &'static str = "ParaSudoWrapper"; + const CALL: &'static str = "sudo_queue_downward_xcm"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoEstablishHrmpChannel { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub max_capacity: ::core::primitive::u32, + pub max_message_size: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SudoEstablishHrmpChannel { + const PALLET: &'static str = "ParaSudoWrapper"; + const CALL: &'static str = "sudo_establish_hrmp_channel"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + pub fn sudo_schedule_para_initialize( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + genesis: runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParaSudoWrapper", + "sudo_schedule_para_initialize", + types::SudoScheduleParaInitialize { id, genesis }, + [ + 91u8, 145u8, 184u8, 83u8, 85u8, 168u8, 43u8, 14u8, 18u8, 86u8, 4u8, + 120u8, 148u8, 107u8, 139u8, 46u8, 145u8, 126u8, 255u8, 61u8, 83u8, + 140u8, 63u8, 233u8, 0u8, 47u8, 227u8, 194u8, 99u8, 7u8, 61u8, 15u8, + ], + ) + } + #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + pub fn sudo_schedule_para_cleanup( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParaSudoWrapper", + "sudo_schedule_para_cleanup", + types::SudoScheduleParaCleanup { id }, + [ + 148u8, 0u8, 73u8, 32u8, 33u8, 214u8, 92u8, 82u8, 146u8, 97u8, 39u8, + 220u8, 147u8, 148u8, 83u8, 200u8, 36u8, 197u8, 231u8, 246u8, 159u8, + 175u8, 195u8, 46u8, 68u8, 230u8, 16u8, 240u8, 108u8, 132u8, 0u8, 188u8, + ], + ) + } + #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + pub fn sudo_schedule_parathread_upgrade( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParaSudoWrapper", + "sudo_schedule_parathread_upgrade", + types::SudoScheduleParathreadUpgrade { id }, + [ + 244u8, 142u8, 128u8, 182u8, 130u8, 88u8, 113u8, 34u8, 92u8, 224u8, + 244u8, 155u8, 83u8, 212u8, 68u8, 87u8, 156u8, 80u8, 26u8, 23u8, 245u8, + 197u8, 167u8, 204u8, 14u8, 198u8, 70u8, 93u8, 227u8, 159u8, 159u8, + 88u8, + ], + ) + } + #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + pub fn sudo_schedule_parachain_downgrade( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParaSudoWrapper", + "sudo_schedule_parachain_downgrade", + types::SudoScheduleParachainDowngrade { id }, + [ + 152u8, 217u8, 14u8, 138u8, 136u8, 85u8, 79u8, 255u8, 220u8, 85u8, + 248u8, 12u8, 186u8, 250u8, 206u8, 152u8, 115u8, 92u8, 143u8, 8u8, + 171u8, 46u8, 94u8, 232u8, 169u8, 79u8, 150u8, 212u8, 166u8, 191u8, + 188u8, 198u8, + ], + ) + } + #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + pub fn sudo_queue_downward_xcm( + &self, + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + xcm: runtime_types::xcm::VersionedXcm, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParaSudoWrapper", + "sudo_queue_downward_xcm", + types::SudoQueueDownwardXcm { id, xcm: ::std::boxed::Box::new(xcm) }, + [ + 144u8, 179u8, 113u8, 39u8, 46u8, 58u8, 218u8, 220u8, 98u8, 232u8, + 121u8, 119u8, 127u8, 99u8, 52u8, 189u8, 232u8, 28u8, 233u8, 54u8, + 122u8, 206u8, 155u8, 7u8, 88u8, 167u8, 203u8, 251u8, 96u8, 156u8, 23u8, + 54u8, + ], + ) + } + #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + pub fn sudo_establish_hrmp_channel( + &self, + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + max_capacity: ::core::primitive::u32, + max_message_size: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "ParaSudoWrapper", + "sudo_establish_hrmp_channel", + types::SudoEstablishHrmpChannel { + sender, + recipient, + max_capacity, + max_message_size, + }, + [ + 236u8, 105u8, 76u8, 213u8, 11u8, 105u8, 119u8, 48u8, 1u8, 103u8, 239u8, + 156u8, 66u8, 63u8, 135u8, 67u8, 226u8, 150u8, 254u8, 24u8, 169u8, 82u8, + 29u8, 75u8, 102u8, 167u8, 59u8, 66u8, 173u8, 148u8, 202u8, 50u8, + ], + ) + } + } + } + } + pub mod sudo { + use super::{root_mod, runtime_types}; + #[doc = "Error for the Sudo pallet"] + pub type Error = runtime_types::pallet_sudo::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_sudo::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Sudo { + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for Sudo { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "sudo"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoUncheckedWeight { + pub call: ::std::boxed::Box, + pub weight: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::blocks::StaticExtrinsic for SudoUncheckedWeight { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "sudo_unchecked_weight"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetKey { + pub new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for SetKey { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "set_key"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SudoAs { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for SudoAs { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "sudo_as"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "See [`Pallet::sudo`]."] + pub fn sudo( + &self, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Sudo", + "sudo", + types::Sudo { call: ::std::boxed::Box::new(call) }, + [ + 163u8, 237u8, 240u8, 166u8, 56u8, 124u8, 243u8, 253u8, 102u8, 224u8, + 236u8, 255u8, 250u8, 12u8, 189u8, 8u8, 25u8, 85u8, 163u8, 89u8, 115u8, + 98u8, 61u8, 150u8, 22u8, 49u8, 251u8, 251u8, 91u8, 231u8, 117u8, 38u8, + ], + ) + } + #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + pub fn sudo_unchecked_weight( + &self, + call: runtime_types::paseo_runtime::RuntimeCall, + weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Sudo", + "sudo_unchecked_weight", + types::SudoUncheckedWeight { call: ::std::boxed::Box::new(call), weight }, + [ + 243u8, 131u8, 7u8, 163u8, 87u8, 43u8, 160u8, 197u8, 69u8, 88u8, 235u8, + 182u8, 154u8, 94u8, 163u8, 92u8, 219u8, 90u8, 219u8, 172u8, 134u8, + 148u8, 138u8, 245u8, 175u8, 158u8, 235u8, 46u8, 94u8, 26u8, 202u8, 1u8, + ], + ) + } + #[doc = "See [`Pallet::set_key`]."] + pub fn set_key( + &self, + new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Sudo", + "set_key", + types::SetKey { new }, + [ + 9u8, 73u8, 39u8, 205u8, 188u8, 127u8, 143u8, 54u8, 128u8, 94u8, 8u8, + 227u8, 197u8, 44u8, 70u8, 93u8, 228u8, 196u8, 64u8, 165u8, 226u8, + 158u8, 101u8, 192u8, 22u8, 193u8, 102u8, 84u8, 21u8, 35u8, 92u8, 198u8, + ], + ) + } + #[doc = "See [`Pallet::sudo_as`]."] + pub fn sudo_as( + &self, + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call: runtime_types::paseo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Sudo", + "sudo_as", + types::SudoAs { who, call: ::std::boxed::Box::new(call) }, + [ + 70u8, 72u8, 19u8, 225u8, 154u8, 107u8, 245u8, 10u8, 252u8, 76u8, 15u8, + 85u8, 96u8, 0u8, 40u8, 203u8, 248u8, 158u8, 22u8, 93u8, 246u8, 67u8, + 3u8, 30u8, 248u8, 126u8, 35u8, 180u8, 32u8, 67u8, 108u8, 240u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_sudo::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A sudo call just took place."] + pub struct Sudid { + pub sudo_result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for Sudid { + const PALLET: &'static str = "Sudo"; + const EVENT: &'static str = "Sudid"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The sudo key has been updated."] + pub struct KeyChanged { + pub old_sudoer: ::core::option::Option<::subxt::utils::AccountId32>, + } + impl ::subxt::events::StaticEvent for KeyChanged { + const PALLET: &'static str = "Sudo"; + const EVENT: &'static str = "KeyChanged"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] + pub struct SudoAsDone { + pub sudo_result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + } + impl ::subxt::events::StaticEvent for SudoAsDone { + const PALLET: &'static str = "Sudo"; + const EVENT: &'static str = "SudoAsDone"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The `AccountId` of the sudo key."] + pub fn key( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Sudo", + "Key", + vec![], + [ + 72u8, 14u8, 225u8, 162u8, 205u8, 247u8, 227u8, 105u8, 116u8, 57u8, 4u8, + 31u8, 84u8, 137u8, 227u8, 228u8, 133u8, 245u8, 206u8, 227u8, 117u8, + 36u8, 252u8, 151u8, 107u8, 15u8, 180u8, 4u8, 4u8, 152u8, 195u8, 144u8, + ], + ) + } + } + } + } + pub mod runtime_types { + use super::runtime_types; + pub mod bounded_collections { + use super::runtime_types; + pub mod bounded_btree_map { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BoundedBTreeMap<_0, _1>(pub ::subxt::utils::KeyedVec<_0, _1>); + } + pub mod bounded_vec { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BoundedVec<_0>(pub ::std::vec::Vec<_0>); + } + pub mod weak_bounded_vec { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WeakBoundedVec<_0>(pub ::std::vec::Vec<_0>); + } + } + pub mod finality_grandpa { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Equivocation<_0, _1, _2> { + pub round_number: ::core::primitive::u64, + pub identity: _0, + pub first: (_1, _2), + pub second: (_1, _2), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Precommit<_0, _1> { + pub target_hash: _0, + pub target_number: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Prevote<_0, _1> { + pub target_hash: _0, + pub target_number: _1, + } + } + pub mod frame_support { + use super::runtime_types; + pub mod dispatch { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DispatchClass { + #[codec(index = 0)] + Normal, + #[codec(index = 1)] + Operational, + #[codec(index = 2)] + Mandatory, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchInfo { + pub weight: runtime_types::sp_weights::weight_v2::Weight, + pub class: runtime_types::frame_support::dispatch::DispatchClass, + pub pays_fee: runtime_types::frame_support::dispatch::Pays, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Pays { + #[codec(index = 0)] + Yes, + #[codec(index = 1)] + No, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PerDispatchClass<_0> { + pub normal: _0, + pub operational: _0, + pub mandatory: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PostDispatchInfo { + pub actual_weight: + ::core::option::Option, + pub pays_fee: runtime_types::frame_support::dispatch::Pays, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RawOrigin<_0> { + #[codec(index = 0)] + Root, + #[codec(index = 1)] + Signed(_0), + #[codec(index = 2)] + None, + } + } + pub mod traits { + use super::runtime_types; + pub mod messages { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ProcessMessageError { + #[codec(index = 0)] + BadFormat, + #[codec(index = 1)] + Corrupt, + #[codec(index = 2)] + Unsupported, + #[codec(index = 3)] + Overweight(runtime_types::sp_weights::weight_v2::Weight), + #[codec(index = 4)] + Yield, + } + } + pub mod preimages { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Bounded<_0, _1> { + #[codec(index = 0)] + Legacy { + hash: ::subxt::utils::H256, + }, + #[codec(index = 1)] + Inline( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ), + #[codec(index = 2)] + Lookup { + hash: ::subxt::utils::H256, + len: ::core::primitive::u32, + }, + __Ignore(::core::marker::PhantomData<(_0, _1)>), + } + } + pub mod schedule { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DispatchTime<_0> { + #[codec(index = 0)] + At(_0), + #[codec(index = 1)] + After(_0), + } + } + pub mod tokens { + use super::runtime_types; + pub mod fungible { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HoldConsideration(pub ::core::primitive::u128); + } + pub mod misc { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum BalanceStatus { + #[codec(index = 0)] + Free, + #[codec(index = 1)] + Reserved, + } + } + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PalletId(pub [::core::primitive::u8; 8usize]); + } + pub mod frame_system { + use super::runtime_types; + pub mod extensions { + use super::runtime_types; + pub mod check_genesis { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckGenesis; + } + pub mod check_mortality { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckMortality(pub runtime_types::sp_runtime::generic::era::Era); + } + pub mod check_non_zero_sender { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckNonZeroSender; + } + pub mod check_nonce { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckNonce(#[codec(compact)] pub ::core::primitive::u32); + } + pub mod check_spec_version { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckSpecVersion; + } + pub mod check_tx_version { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckTxVersion; + } + pub mod check_weight { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckWeight; + } + } + pub mod limits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BlockLength { + pub max: runtime_types::frame_support::dispatch::PerDispatchClass< + ::core::primitive::u32, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BlockWeights { + pub base_block: runtime_types::sp_weights::weight_v2::Weight, + pub max_block: runtime_types::sp_weights::weight_v2::Weight, + pub per_class: runtime_types::frame_support::dispatch::PerDispatchClass< + runtime_types::frame_system::limits::WeightsPerClass, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WeightsPerClass { + pub base_extrinsic: runtime_types::sp_weights::weight_v2::Weight, + pub max_extrinsic: + ::core::option::Option, + pub max_total: + ::core::option::Option, + pub reserved: + ::core::option::Option, + } + } + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::remark`]."] + remark { remark: ::std::vec::Vec<::core::primitive::u8> }, + #[codec(index = 1)] + #[doc = "See [`Pallet::set_heap_pages`]."] + set_heap_pages { pages: ::core::primitive::u64 }, + #[codec(index = 2)] + #[doc = "See [`Pallet::set_code`]."] + set_code { code: ::std::vec::Vec<::core::primitive::u8> }, + #[codec(index = 3)] + #[doc = "See [`Pallet::set_code_without_checks`]."] + set_code_without_checks { code: ::std::vec::Vec<::core::primitive::u8> }, + #[codec(index = 4)] + #[doc = "See [`Pallet::set_storage`]."] + set_storage { + items: ::std::vec::Vec<( + ::std::vec::Vec<::core::primitive::u8>, + ::std::vec::Vec<::core::primitive::u8>, + )>, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::kill_storage`]."] + kill_storage { keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>> }, + #[codec(index = 6)] + #[doc = "See [`Pallet::kill_prefix`]."] + kill_prefix { + prefix: ::std::vec::Vec<::core::primitive::u8>, + subkeys: ::core::primitive::u32, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::remark_with_event`]."] + remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8> }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Error for the System pallet"] + pub enum Error { + #[codec(index = 0)] + #[doc = "The name of specification does not match between the current runtime"] + #[doc = "and the new runtime."] + InvalidSpecName, + #[codec(index = 1)] + #[doc = "The specification version is not allowed to decrease between the current runtime"] + #[doc = "and the new runtime."] + SpecVersionNeedsToIncrease, + #[codec(index = 2)] + #[doc = "Failed to extract the runtime version from the new runtime."] + #[doc = ""] + #[doc = "Either calling `Core_version` or decoding `RuntimeVersion` failed."] + FailedToExtractRuntimeVersion, + #[codec(index = 3)] + #[doc = "Suicide called when the account has non-default composite data."] + NonDefaultComposite, + #[codec(index = 4)] + #[doc = "There is a non-zero reference count preventing the account from being purged."] + NonZeroRefCount, + #[codec(index = 5)] + #[doc = "The origin filter prevent the call to be dispatched."] + CallFiltered, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Event for the System pallet."] + pub enum Event { + #[codec(index = 0)] + #[doc = "An extrinsic completed successfully."] + ExtrinsicSuccess { + dispatch_info: runtime_types::frame_support::dispatch::DispatchInfo, + }, + #[codec(index = 1)] + #[doc = "An extrinsic failed."] + ExtrinsicFailed { + dispatch_error: runtime_types::sp_runtime::DispatchError, + dispatch_info: runtime_types::frame_support::dispatch::DispatchInfo, + }, + #[codec(index = 2)] + #[doc = "`:code` was updated."] + CodeUpdated, + #[codec(index = 3)] + #[doc = "A new account was created."] + NewAccount { account: ::subxt::utils::AccountId32 }, + #[codec(index = 4)] + #[doc = "An account was reaped."] + KilledAccount { account: ::subxt::utils::AccountId32 }, + #[codec(index = 5)] + #[doc = "On on-chain remark happened."] + Remarked { sender: ::subxt::utils::AccountId32, hash: ::subxt::utils::H256 }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AccountInfo<_0, _1> { + pub nonce: _0, + pub consumers: ::core::primitive::u32, + pub providers: ::core::primitive::u32, + pub sufficients: ::core::primitive::u32, + pub data: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EventRecord<_0, _1> { + pub phase: runtime_types::frame_system::Phase, + pub event: _0, + pub topics: ::std::vec::Vec<_1>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct LastRuntimeUpgradeInfo { + #[codec(compact)] + pub spec_version: ::core::primitive::u32, + pub spec_name: ::std::string::String, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Phase { + #[codec(index = 0)] + ApplyExtrinsic(::core::primitive::u32), + #[codec(index = 1)] + Finalization, + #[codec(index = 2)] + Initialization, + } + } + pub mod pallet_asset_rate { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::create`]."] + create { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::update`]."] + update { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::remove`]."] + remove { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The given asset ID is unknown."] + UnknownAssetKind, + #[codec(index = 1)] + #[doc = "The given asset ID already has an assigned conversion rate and cannot be re-created."] + AlreadyExists, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + AssetRateCreated { + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + #[codec(index = 1)] + AssetRateRemoved { + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + }, + #[codec(index = 2)] + AssetRateUpdated { + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + old: runtime_types::sp_arithmetic::fixed_point::FixedU128, + new: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + } + } + } + pub mod pallet_babe { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::report_equivocation`]."] + report_equivocation { + equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header< + ::core::primitive::u32, + >, + runtime_types::sp_consensus_babe::app::Public, + >, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + report_equivocation_unsigned { + equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_slots::EquivocationProof< + runtime_types::sp_runtime::generic::header::Header< + ::core::primitive::u32, + >, + runtime_types::sp_consensus_babe::app::Public, + >, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::plan_config_change`]."] + plan_config_change { + config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "An equivocation proof provided as part of an equivocation report is invalid."] + InvalidEquivocationProof, + #[codec(index = 1)] + #[doc = "A key ownership proof provided as part of an equivocation report is invalid."] + InvalidKeyOwnershipProof, + #[codec(index = 2)] + #[doc = "A given equivocation report is valid but already previously reported."] + DuplicateOffenceReport, + #[codec(index = 3)] + #[doc = "Submitted configuration is invalid."] + InvalidConfiguration, + } + } + } + pub mod pallet_bags_list { + use super::runtime_types; + pub mod list { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Bag { + pub head: ::core::option::Option<::subxt::utils::AccountId32>, + pub tail: ::core::option::Option<::subxt::utils::AccountId32>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ListError { + #[codec(index = 0)] + Duplicate, + #[codec(index = 1)] + NotHeavier, + #[codec(index = 2)] + NotInSameBag, + #[codec(index = 3)] + NodeNotFound, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Node { + pub id: ::subxt::utils::AccountId32, + pub prev: ::core::option::Option<::subxt::utils::AccountId32>, + pub next: ::core::option::Option<::subxt::utils::AccountId32>, + pub bag_upper: ::core::primitive::u64, + pub score: ::core::primitive::u64, + } + } + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::rebag`]."] + rebag { + dislocated: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::put_in_front_of`]."] + put_in_front_of { + lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::put_in_front_of_other`]."] + put_in_front_of_other { + heavier: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + lighter: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "A error in the list interface implementation."] + List(runtime_types::pallet_bags_list::list::ListError), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "Moved an account from one bag to another."] + Rebagged { + who: ::subxt::utils::AccountId32, + from: ::core::primitive::u64, + to: ::core::primitive::u64, + }, + #[codec(index = 1)] + #[doc = "Updated the score of some account to the given amount."] + ScoreUpdated { + who: ::subxt::utils::AccountId32, + new_score: ::core::primitive::u64, + }, + } + } + } + pub mod pallet_balances { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::transfer_allow_death`]."] + transfer_allow_death { + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + value: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::force_transfer`]."] + force_transfer { + source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + value: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::transfer_keep_alive`]."] + transfer_keep_alive { + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + value: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::transfer_all`]."] + transfer_all { + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + keep_alive: ::core::primitive::bool, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::force_unreserve`]."] + force_unreserve { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + amount: ::core::primitive::u128, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::upgrade_accounts`]."] + upgrade_accounts { who: ::std::vec::Vec<::subxt::utils::AccountId32> }, + #[codec(index = 8)] + #[doc = "See [`Pallet::force_set_balance`]."] + force_set_balance { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + new_free: ::core::primitive::u128, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Vesting balance too high to send value."] + VestingBalance, + #[codec(index = 1)] + #[doc = "Account liquidity restrictions prevent withdrawal."] + LiquidityRestrictions, + #[codec(index = 2)] + #[doc = "Balance too low to send value."] + InsufficientBalance, + #[codec(index = 3)] + #[doc = "Value too low to create account due to existential deposit."] + ExistentialDeposit, + #[codec(index = 4)] + #[doc = "Transfer/payment would kill account."] + Expendability, + #[codec(index = 5)] + #[doc = "A vesting schedule already exists for this account."] + ExistingVestingSchedule, + #[codec(index = 6)] + #[doc = "Beneficiary account must pre-exist."] + DeadAccount, + #[codec(index = 7)] + #[doc = "Number of named reserves exceed `MaxReserves`."] + TooManyReserves, + #[codec(index = 8)] + #[doc = "Number of holds exceed `MaxHolds`."] + TooManyHolds, + #[codec(index = 9)] + #[doc = "Number of freezes exceed `MaxFreezes`."] + TooManyFreezes, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "An account was created with some free balance."] + Endowed { + account: ::subxt::utils::AccountId32, + free_balance: ::core::primitive::u128, + }, + #[codec(index = 1)] + #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] + #[doc = "resulting in an outright loss."] + DustLost { + account: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "Transfer succeeded."] + Transfer { + from: ::subxt::utils::AccountId32, + to: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "A balance was set by root."] + BalanceSet { who: ::subxt::utils::AccountId32, free: ::core::primitive::u128 }, + #[codec(index = 4)] + #[doc = "Some balance was reserved (moved from free to reserved)."] + Reserved { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 5)] + #[doc = "Some balance was unreserved (moved from reserved to free)."] + Unreserved { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 6)] + #[doc = "Some balance was moved from the reserve of the first account to the second account."] + #[doc = "Final argument indicates the destination balance type."] + ReserveRepatriated { + from: ::subxt::utils::AccountId32, + to: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + destination_status: + runtime_types::frame_support::traits::tokens::misc::BalanceStatus, + }, + #[codec(index = 7)] + #[doc = "Some amount was deposited (e.g. for transaction fees)."] + Deposit { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 8)] + #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] + Withdraw { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 9)] + #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] + Slashed { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 10)] + #[doc = "Some amount was minted into an account."] + Minted { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 11)] + #[doc = "Some amount was burned from an account."] + Burned { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 12)] + #[doc = "Some amount was suspended from an account (it can be restored later)."] + Suspended { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 13)] + #[doc = "Some amount was restored into an account."] + Restored { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 14)] + #[doc = "An account was upgraded."] + Upgraded { who: ::subxt::utils::AccountId32 }, + #[codec(index = 15)] + #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] + Issued { amount: ::core::primitive::u128 }, + #[codec(index = 16)] + #[doc = "Total issuance was decreased by `amount`, creating a debt to be balanced."] + Rescinded { amount: ::core::primitive::u128 }, + #[codec(index = 17)] + #[doc = "Some balance was locked."] + Locked { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 18)] + #[doc = "Some balance was unlocked."] + Unlocked { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 19)] + #[doc = "Some balance was frozen."] + Frozen { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 20)] + #[doc = "Some balance was thawed."] + Thawed { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AccountData<_0> { + pub free: _0, + pub reserved: _0, + pub frozen: _0, + pub flags: runtime_types::pallet_balances::types::ExtraFlags, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BalanceLock<_0> { + pub id: [::core::primitive::u8; 8usize], + pub amount: _0, + pub reasons: runtime_types::pallet_balances::types::Reasons, + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ExtraFlags(pub ::core::primitive::u128); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct IdAmount<_0, _1> { + pub id: _0, + pub amount: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Reasons { + #[codec(index = 0)] + Fee, + #[codec(index = 1)] + Misc, + #[codec(index = 2)] + All, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReserveData<_0, _1> { + pub id: _0, + pub amount: _1, + } + } + } + pub mod pallet_beefy { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::report_equivocation`]."] + report_equivocation { + equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + report_equivocation_unsigned { + equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::set_new_genesis`]."] + set_new_genesis { delay_in_blocks: ::core::primitive::u32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "A key ownership proof provided as part of an equivocation report is invalid."] + InvalidKeyOwnershipProof, + #[codec(index = 1)] + #[doc = "An equivocation proof provided as part of an equivocation report is invalid."] + InvalidEquivocationProof, + #[codec(index = 2)] + #[doc = "A given equivocation report is valid but already previously reported."] + DuplicateOffenceReport, + #[codec(index = 3)] + #[doc = "Submitted configuration is invalid."] + InvalidConfiguration, + } + } + } + pub mod pallet_bounties { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::propose_bounty`]."] + propose_bounty { + #[codec(compact)] + value: ::core::primitive::u128, + description: ::std::vec::Vec<::core::primitive::u8>, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::approve_bounty`]."] + approve_bounty { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::propose_curator`]."] + propose_curator { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + fee: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::unassign_curator`]."] + unassign_curator { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::accept_curator`]."] + accept_curator { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::award_bounty`]."] + award_bounty { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::claim_bounty`]."] + claim_bounty { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::close_bounty`]."] + close_bounty { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + }, + #[codec(index = 8)] + #[doc = "See [`Pallet::extend_bounty_expiry`]."] + extend_bounty_expiry { + #[codec(compact)] + bounty_id: ::core::primitive::u32, + remark: ::std::vec::Vec<::core::primitive::u8>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Proposer's balance is too low."] + InsufficientProposersBalance, + #[codec(index = 1)] + #[doc = "No proposal or bounty at that index."] + InvalidIndex, + #[codec(index = 2)] + #[doc = "The reason given is just too big."] + ReasonTooBig, + #[codec(index = 3)] + #[doc = "The bounty status is unexpected."] + UnexpectedStatus, + #[codec(index = 4)] + #[doc = "Require bounty curator."] + RequireCurator, + #[codec(index = 5)] + #[doc = "Invalid bounty value."] + InvalidValue, + #[codec(index = 6)] + #[doc = "Invalid bounty fee."] + InvalidFee, + #[codec(index = 7)] + #[doc = "A bounty payout is pending."] + #[doc = "To cancel the bounty, you must unassign and slash the curator."] + PendingPayout, + #[codec(index = 8)] + #[doc = "The bounties cannot be claimed/closed because it's still in the countdown period."] + Premature, + #[codec(index = 9)] + #[doc = "The bounty cannot be closed because it has active child bounties."] + HasActiveChildBounty, + #[codec(index = 10)] + #[doc = "Too many approvals are already queued."] + TooManyQueued, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "New bounty proposal."] + BountyProposed { index: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "A bounty proposal was rejected; funds were slashed."] + BountyRejected { index: ::core::primitive::u32, bond: ::core::primitive::u128 }, + #[codec(index = 2)] + #[doc = "A bounty proposal is funded and became active."] + BountyBecameActive { index: ::core::primitive::u32 }, + #[codec(index = 3)] + #[doc = "A bounty is awarded to a beneficiary."] + BountyAwarded { + index: ::core::primitive::u32, + beneficiary: ::subxt::utils::AccountId32, + }, + #[codec(index = 4)] + #[doc = "A bounty is claimed by beneficiary."] + BountyClaimed { + index: ::core::primitive::u32, + payout: ::core::primitive::u128, + beneficiary: ::subxt::utils::AccountId32, + }, + #[codec(index = 5)] + #[doc = "A bounty is cancelled."] + BountyCanceled { index: ::core::primitive::u32 }, + #[codec(index = 6)] + #[doc = "A bounty expiry is extended."] + BountyExtended { index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "A bounty is approved."] + BountyApproved { index: ::core::primitive::u32 }, + #[codec(index = 8)] + #[doc = "A bounty curator is proposed."] + CuratorProposed { + bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::AccountId32, + }, + #[codec(index = 9)] + #[doc = "A bounty curator is unassigned."] + CuratorUnassigned { bounty_id: ::core::primitive::u32 }, + #[codec(index = 10)] + #[doc = "A bounty curator is accepted."] + CuratorAccepted { + bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::AccountId32, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Bounty<_0, _1, _2> { + pub proposer: _0, + pub value: _1, + pub fee: _1, + pub curator_deposit: _1, + pub bond: _1, + pub status: runtime_types::pallet_bounties::BountyStatus<_0, _2>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum BountyStatus<_0, _1> { + #[codec(index = 0)] + Proposed, + #[codec(index = 1)] + Approved, + #[codec(index = 2)] + Funded, + #[codec(index = 3)] + CuratorProposed { curator: _0 }, + #[codec(index = 4)] + Active { curator: _0, update_due: _1 }, + #[codec(index = 5)] + PendingPayout { curator: _0, beneficiary: _0, unlock_at: _1 }, + } + } + pub mod pallet_child_bounties { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::add_child_bounty`]."] + add_child_bounty { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + value: ::core::primitive::u128, + description: ::std::vec::Vec<::core::primitive::u8>, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::propose_curator`]."] + propose_curator { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + fee: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::accept_curator`]."] + accept_curator { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::unassign_curator`]."] + unassign_curator { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::award_child_bounty`]."] + award_child_bounty { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::claim_child_bounty`]."] + claim_child_bounty { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::close_child_bounty`]."] + close_child_bounty { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The parent bounty is not in active state."] + ParentBountyNotActive, + #[codec(index = 1)] + #[doc = "The bounty balance is not enough to add new child-bounty."] + InsufficientBountyBalance, + #[codec(index = 2)] + #[doc = "Number of child bounties exceeds limit `MaxActiveChildBountyCount`."] + TooManyChildBounties, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A child-bounty is added."] + Added { index: ::core::primitive::u32, child_index: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "A child-bounty is awarded to a beneficiary."] + Awarded { + index: ::core::primitive::u32, + child_index: ::core::primitive::u32, + beneficiary: ::subxt::utils::AccountId32, + }, + #[codec(index = 2)] + #[doc = "A child-bounty is claimed by beneficiary."] + Claimed { + index: ::core::primitive::u32, + child_index: ::core::primitive::u32, + payout: ::core::primitive::u128, + beneficiary: ::subxt::utils::AccountId32, + }, + #[codec(index = 3)] + #[doc = "A child-bounty is cancelled."] + Canceled { index: ::core::primitive::u32, child_index: ::core::primitive::u32 }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ChildBounty<_0, _1, _2> { + pub parent_bounty: ::core::primitive::u32, + pub value: _1, + pub fee: _1, + pub curator_deposit: _1, + pub status: runtime_types::pallet_child_bounties::ChildBountyStatus<_0, _2>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ChildBountyStatus<_0, _1> { + #[codec(index = 0)] + Added, + #[codec(index = 1)] + CuratorProposed { curator: _0 }, + #[codec(index = 2)] + Active { curator: _0 }, + #[codec(index = 3)] + PendingPayout { curator: _0, beneficiary: _0, unlock_at: _1 }, + } + } + pub mod pallet_conviction_voting { + use super::runtime_types; + pub mod conviction { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Conviction { + #[codec(index = 0)] + None, + #[codec(index = 1)] + Locked1x, + #[codec(index = 2)] + Locked2x, + #[codec(index = 3)] + Locked3x, + #[codec(index = 4)] + Locked4x, + #[codec(index = 5)] + Locked5x, + #[codec(index = 6)] + Locked6x, + } + } + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::vote`]."] + vote { + #[codec(compact)] + poll_index: ::core::primitive::u32, + vote: runtime_types::pallet_conviction_voting::vote::AccountVote< + ::core::primitive::u128, + >, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::delegate`]."] + delegate { + class: ::core::primitive::u16, + to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, + balance: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::undelegate`]."] + undelegate { class: ::core::primitive::u16 }, + #[codec(index = 3)] + #[doc = "See [`Pallet::unlock`]."] + unlock { + class: ::core::primitive::u16, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::remove_vote`]."] + remove_vote { + class: ::core::option::Option<::core::primitive::u16>, + index: ::core::primitive::u32, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::remove_other_vote`]."] + remove_other_vote { + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + class: ::core::primitive::u16, + index: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Poll is not ongoing."] + NotOngoing, + #[codec(index = 1)] + #[doc = "The given account did not vote on the poll."] + NotVoter, + #[codec(index = 2)] + #[doc = "The actor has no permission to conduct the action."] + NoPermission, + #[codec(index = 3)] + #[doc = "The actor has no permission to conduct the action right now but will do in the future."] + NoPermissionYet, + #[codec(index = 4)] + #[doc = "The account is already delegating."] + AlreadyDelegating, + #[codec(index = 5)] + #[doc = "The account currently has votes attached to it and the operation cannot succeed until"] + #[doc = "these are removed, either through `unvote` or `reap_vote`."] + AlreadyVoting, + #[codec(index = 6)] + #[doc = "Too high a balance was provided that the account cannot afford."] + InsufficientFunds, + #[codec(index = 7)] + #[doc = "The account is not currently delegating."] + NotDelegating, + #[codec(index = 8)] + #[doc = "Delegation to oneself makes no sense."] + Nonsense, + #[codec(index = 9)] + #[doc = "Maximum number of votes reached."] + MaxVotesReached, + #[codec(index = 10)] + #[doc = "The class must be supplied since it is not easily determinable from the state."] + ClassNeeded, + #[codec(index = 11)] + #[doc = "The class ID supplied is invalid."] + BadClass, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "An account has delegated their vote to another account. \\[who, target\\]"] + Delegated(::subxt::utils::AccountId32, ::subxt::utils::AccountId32), + #[codec(index = 1)] + #[doc = "An \\[account\\] has cancelled a previous delegation operation."] + Undelegated(::subxt::utils::AccountId32), + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Delegations<_0> { + pub votes: _0, + pub capital: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Tally<_0> { + pub ayes: _0, + pub nays: _0, + pub support: _0, + } + } + pub mod vote { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AccountVote<_0> { + #[codec(index = 0)] + Standard { + vote: runtime_types::pallet_conviction_voting::vote::Vote, + balance: _0, + }, + #[codec(index = 1)] + Split { aye: _0, nay: _0 }, + #[codec(index = 2)] + SplitAbstain { aye: _0, nay: _0, abstain: _0 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Casting<_0, _1, _2> { + pub votes: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + _1, + runtime_types::pallet_conviction_voting::vote::AccountVote<_0>, + )>, + pub delegations: + runtime_types::pallet_conviction_voting::types::Delegations<_0>, + pub prior: runtime_types::pallet_conviction_voting::vote::PriorLock<_1, _0>, + #[codec(skip)] + pub __subxt_unused_type_params: ::core::marker::PhantomData<_2>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Delegating<_0, _1, _2> { + pub balance: _0, + pub target: _1, + pub conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, + pub delegations: + runtime_types::pallet_conviction_voting::types::Delegations<_0>, + pub prior: runtime_types::pallet_conviction_voting::vote::PriorLock<_2, _0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PriorLock<_0, _1>(pub _0, pub _1); + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Vote(pub ::core::primitive::u8); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Voting<_0, _1, _2, _3> { + #[codec(index = 0)] + Casting(runtime_types::pallet_conviction_voting::vote::Casting<_0, _2, _2>), + #[codec(index = 1)] + Delegating( + runtime_types::pallet_conviction_voting::vote::Delegating<_0, _1, _2>, + ), + __Ignore(::core::marker::PhantomData<_3>), + } + } + } + pub mod pallet_election_provider_multi_phase { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 0)] # [doc = "See [`Pallet::submit_unsigned`]."] submit_unsigned { raw_solution : :: std :: boxed :: Box < runtime_types :: pallet_election_provider_multi_phase :: RawSolution < runtime_types :: paseo_runtime :: NposCompactSolution16 > > , witness : runtime_types :: pallet_election_provider_multi_phase :: SolutionOrSnapshotSize , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_minimum_untrusted_score`]."] set_minimum_untrusted_score { maybe_next_score : :: core :: option :: Option < runtime_types :: sp_npos_elections :: ElectionScore > , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_emergency_election_result`]."] set_emergency_election_result { supports : :: std :: vec :: Vec < (:: subxt :: utils :: AccountId32 , runtime_types :: sp_npos_elections :: Support < :: subxt :: utils :: AccountId32 > ,) > , } , # [codec (index = 3)] # [doc = "See [`Pallet::submit`]."] submit { raw_solution : :: std :: boxed :: Box < runtime_types :: pallet_election_provider_multi_phase :: RawSolution < runtime_types :: paseo_runtime :: NposCompactSolution16 > > , } , # [codec (index = 4)] # [doc = "See [`Pallet::governance_fallback`]."] governance_fallback { maybe_max_voters : :: core :: option :: Option < :: core :: primitive :: u32 > , maybe_max_targets : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Error of the pallet that can be returned in response to dispatches."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Submission was too early."] + PreDispatchEarlySubmission, + #[codec(index = 1)] + #[doc = "Wrong number of winners presented."] + PreDispatchWrongWinnerCount, + #[codec(index = 2)] + #[doc = "Submission was too weak, score-wise."] + PreDispatchWeakSubmission, + #[codec(index = 3)] + #[doc = "The queue was full, and the solution was not better than any of the existing ones."] + SignedQueueFull, + #[codec(index = 4)] + #[doc = "The origin failed to pay the deposit."] + SignedCannotPayDeposit, + #[codec(index = 5)] + #[doc = "Witness data to dispatchable is invalid."] + SignedInvalidWitness, + #[codec(index = 6)] + #[doc = "The signed submission consumes too much weight"] + SignedTooMuchWeight, + #[codec(index = 7)] + #[doc = "OCW submitted solution for wrong round"] + OcwCallWrongEra, + #[codec(index = 8)] + #[doc = "Snapshot metadata should exist but didn't."] + MissingSnapshotMetadata, + #[codec(index = 9)] + #[doc = "`Self::insert_submission` returned an invalid index."] + InvalidSubmissionIndex, + #[codec(index = 10)] + #[doc = "The call is not allowed at this point."] + CallNotAllowed, + #[codec(index = 11)] + #[doc = "The fallback failed"] + FallbackFailed, + #[codec(index = 12)] + #[doc = "Some bound not met"] + BoundNotMet, + #[codec(index = 13)] + #[doc = "Submitted solution has too many winners"] + TooManyWinners, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A solution was stored with the given compute."] + #[doc = ""] + #[doc = "The `origin` indicates the origin of the solution. If `origin` is `Some(AccountId)`,"] + #[doc = "the stored solution was submited in the signed phase by a miner with the `AccountId`."] + #[doc = "Otherwise, the solution was stored either during the unsigned phase or by"] + #[doc = "`T::ForceOrigin`. The `bool` is `true` when a previous solution was ejected to make"] + #[doc = "room for this one."] + SolutionStored { + compute: + runtime_types::pallet_election_provider_multi_phase::ElectionCompute, + origin: ::core::option::Option<::subxt::utils::AccountId32>, + prev_ejected: ::core::primitive::bool, + }, + #[codec(index = 1)] + #[doc = "The election has been finalized, with the given computation and score."] + ElectionFinalized { + compute: + runtime_types::pallet_election_provider_multi_phase::ElectionCompute, + score: runtime_types::sp_npos_elections::ElectionScore, + }, + #[codec(index = 2)] + #[doc = "An election failed."] + #[doc = ""] + #[doc = "Not much can be said about which computes failed in the process."] + ElectionFailed, + #[codec(index = 3)] + #[doc = "An account has been rewarded for their signed submission being finalized."] + Rewarded { + account: ::subxt::utils::AccountId32, + value: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "An account has been slashed for submitting an invalid signed submission."] + Slashed { account: ::subxt::utils::AccountId32, value: ::core::primitive::u128 }, + #[codec(index = 5)] + #[doc = "There was a phase transition in a given round."] + PhaseTransitioned { + from: runtime_types::pallet_election_provider_multi_phase::Phase< + ::core::primitive::u32, + >, + to: runtime_types::pallet_election_provider_multi_phase::Phase< + ::core::primitive::u32, + >, + round: ::core::primitive::u32, + }, + } + } + pub mod signed { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SignedSubmission<_0, _1, _2> { + pub who: _0, + pub deposit: _1, + pub raw_solution: + runtime_types::pallet_election_provider_multi_phase::RawSolution<_2>, + pub call_fee: _1, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ElectionCompute { + #[codec(index = 0)] + OnChain, + #[codec(index = 1)] + Signed, + #[codec(index = 2)] + Unsigned, + #[codec(index = 3)] + Fallback, + #[codec(index = 4)] + Emergency, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Phase<_0> { + #[codec(index = 0)] + Off, + #[codec(index = 1)] + Signed, + #[codec(index = 2)] + Unsigned((::core::primitive::bool, _0)), + #[codec(index = 3)] + Emergency, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RawSolution<_0> { + pub solution: _0, + pub score: runtime_types::sp_npos_elections::ElectionScore, + pub round: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReadySolution { + pub supports: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::subxt::utils::AccountId32, + runtime_types::sp_npos_elections::Support<::subxt::utils::AccountId32>, + )>, + pub score: runtime_types::sp_npos_elections::ElectionScore, + pub compute: runtime_types::pallet_election_provider_multi_phase::ElectionCompute, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RoundSnapshot<_0, _1> { + pub voters: ::std::vec::Vec<_1>, + pub targets: ::std::vec::Vec<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SolutionOrSnapshotSize { + #[codec(compact)] + pub voters: ::core::primitive::u32, + #[codec(compact)] + pub targets: ::core::primitive::u32, + } + } + pub mod pallet_fast_unstake { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::register_fast_unstake`]."] + register_fast_unstake, + #[codec(index = 1)] + #[doc = "See [`Pallet::deregister`]."] + deregister, + #[codec(index = 2)] + #[doc = "See [`Pallet::control`]."] + control { eras_to_check: ::core::primitive::u32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The provided Controller account was not found."] + #[doc = ""] + #[doc = "This means that the given account is not bonded."] + NotController, + #[codec(index = 1)] + #[doc = "The bonded account has already been queued."] + AlreadyQueued, + #[codec(index = 2)] + #[doc = "The bonded account has active unlocking chunks."] + NotFullyBonded, + #[codec(index = 3)] + #[doc = "The provided un-staker is not in the `Queue`."] + NotQueued, + #[codec(index = 4)] + #[doc = "The provided un-staker is already in Head, and cannot deregister."] + AlreadyHead, + #[codec(index = 5)] + #[doc = "The call is not allowed at this point because the pallet is not active."] + CallNotAllowed, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A staker was unstaked."] + Unstaked { + stash: ::subxt::utils::AccountId32, + result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + }, + #[codec(index = 1)] + #[doc = "A staker was slashed for requesting fast-unstake whilst being exposed."] + Slashed { stash: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 2)] + #[doc = "A batch was partially checked for the given eras, but the process did not finish."] + BatchChecked { eras: ::std::vec::Vec<::core::primitive::u32> }, + #[codec(index = 3)] + #[doc = "A batch of a given size was terminated."] + #[doc = ""] + #[doc = "This is always follows by a number of `Unstaked` or `Slashed` events, marking the end"] + #[doc = "of the batch. A new batch will be created upon next block."] + BatchFinished { size: ::core::primitive::u32 }, + #[codec(index = 4)] + #[doc = "An internal error happened. Operations will be paused now."] + InternalError, + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnstakeRequest { + pub stashes: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::subxt::utils::AccountId32, + ::core::primitive::u128, + )>, + pub checked: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u32, + >, + } + } + } + pub mod pallet_grandpa { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::report_equivocation`]."] + report_equivocation { + equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + report_equivocation_unsigned { + equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_grandpa::EquivocationProof< + ::subxt::utils::H256, + ::core::primitive::u32, + >, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::note_stalled`]."] + note_stalled { + delay: ::core::primitive::u32, + best_finalized_block_number: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Attempt to signal GRANDPA pause when the authority set isn't live"] + #[doc = "(either paused or already pending pause)."] + PauseFailed, + #[codec(index = 1)] + #[doc = "Attempt to signal GRANDPA resume when the authority set isn't paused"] + #[doc = "(either live or already pending resume)."] + ResumeFailed, + #[codec(index = 2)] + #[doc = "Attempt to signal GRANDPA change with one already pending."] + ChangePending, + #[codec(index = 3)] + #[doc = "Cannot signal forced change so soon after last."] + TooSoon, + #[codec(index = 4)] + #[doc = "A key ownership proof provided as part of an equivocation report is invalid."] + InvalidKeyOwnershipProof, + #[codec(index = 5)] + #[doc = "An equivocation proof provided as part of an equivocation report is invalid."] + InvalidEquivocationProof, + #[codec(index = 6)] + #[doc = "A given equivocation report is valid but already previously reported."] + DuplicateOffenceReport, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "New authority set has been applied."] + NewAuthorities { + authority_set: ::std::vec::Vec<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>, + }, + #[codec(index = 1)] + #[doc = "Current authority set has been paused."] + Paused, + #[codec(index = 2)] + #[doc = "Current authority set has been resumed."] + Resumed, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct StoredPendingChange<_0> { + pub scheduled_at: _0, + pub delay: _0, + pub next_authorities: + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>, + pub forced: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum StoredState<_0> { + #[codec(index = 0)] + Live, + #[codec(index = 1)] + PendingPause { scheduled_at: _0, delay: _0 }, + #[codec(index = 2)] + Paused, + #[codec(index = 3)] + PendingResume { scheduled_at: _0, delay: _0 }, + } + } + pub mod pallet_identity { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Identity pallet declaration."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::add_registrar`]."] + add_registrar { + account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::set_identity`]."] + set_identity { + info: + ::std::boxed::Box, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::set_subs`]."] + set_subs { + subs: ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::pallet_identity::types::Data, + )>, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::clear_identity`]."] + clear_identity, + #[codec(index = 4)] + #[doc = "See [`Pallet::request_judgement`]."] + request_judgement { + #[codec(compact)] + reg_index: ::core::primitive::u32, + #[codec(compact)] + max_fee: ::core::primitive::u128, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::cancel_request`]."] + cancel_request { reg_index: ::core::primitive::u32 }, + #[codec(index = 6)] + #[doc = "See [`Pallet::set_fee`]."] + set_fee { + #[codec(compact)] + index: ::core::primitive::u32, + #[codec(compact)] + fee: ::core::primitive::u128, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::set_account_id`]."] + set_account_id { + #[codec(compact)] + index: ::core::primitive::u32, + new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 8)] + #[doc = "See [`Pallet::set_fields`]."] + set_fields { + #[codec(compact)] + index: ::core::primitive::u32, + fields: runtime_types::pallet_identity::types::BitFlags< + runtime_types::pallet_identity::simple::IdentityField, + >, + }, + #[codec(index = 9)] + #[doc = "See [`Pallet::provide_judgement`]."] + provide_judgement { + #[codec(compact)] + reg_index: ::core::primitive::u32, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + judgement: runtime_types::pallet_identity::types::Judgement< + ::core::primitive::u128, + >, + identity: ::subxt::utils::H256, + }, + #[codec(index = 10)] + #[doc = "See [`Pallet::kill_identity`]."] + kill_identity { + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 11)] + #[doc = "See [`Pallet::add_sub`]."] + add_sub { + sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + data: runtime_types::pallet_identity::types::Data, + }, + #[codec(index = 12)] + #[doc = "See [`Pallet::rename_sub`]."] + rename_sub { + sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + data: runtime_types::pallet_identity::types::Data, + }, + #[codec(index = 13)] + #[doc = "See [`Pallet::remove_sub`]."] + remove_sub { + sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 14)] + #[doc = "See [`Pallet::quit_sub`]."] + quit_sub, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Too many subs-accounts."] + TooManySubAccounts, + #[codec(index = 1)] + #[doc = "Account isn't found."] + NotFound, + #[codec(index = 2)] + #[doc = "Account isn't named."] + NotNamed, + #[codec(index = 3)] + #[doc = "Empty index."] + EmptyIndex, + #[codec(index = 4)] + #[doc = "Fee is changed."] + FeeChanged, + #[codec(index = 5)] + #[doc = "No identity found."] + NoIdentity, + #[codec(index = 6)] + #[doc = "Sticky judgement."] + StickyJudgement, + #[codec(index = 7)] + #[doc = "Judgement given."] + JudgementGiven, + #[codec(index = 8)] + #[doc = "Invalid judgement."] + InvalidJudgement, + #[codec(index = 9)] + #[doc = "The index is invalid."] + InvalidIndex, + #[codec(index = 10)] + #[doc = "The target is invalid."] + InvalidTarget, + #[codec(index = 11)] + #[doc = "Too many additional fields."] + TooManyFields, + #[codec(index = 12)] + #[doc = "Maximum amount of registrars reached. Cannot add any more."] + TooManyRegistrars, + #[codec(index = 13)] + #[doc = "Account ID is already named."] + AlreadyClaimed, + #[codec(index = 14)] + #[doc = "Sender is not a sub-account."] + NotSub, + #[codec(index = 15)] + #[doc = "Sub-account isn't owned by sender."] + NotOwned, + #[codec(index = 16)] + #[doc = "The provided judgement was for a different identity."] + JudgementForDifferentIdentity, + #[codec(index = 17)] + #[doc = "Error that occurs when there is an issue paying for judgement."] + JudgementPaymentFailed, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A name was set or reset (which will remove all judgements)."] + IdentitySet { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "A name was cleared, and the given balance returned."] + IdentityCleared { + who: ::subxt::utils::AccountId32, + deposit: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "A name was removed and the given balance slashed."] + IdentityKilled { + who: ::subxt::utils::AccountId32, + deposit: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "A judgement was asked from a registrar."] + JudgementRequested { + who: ::subxt::utils::AccountId32, + registrar_index: ::core::primitive::u32, + }, + #[codec(index = 4)] + #[doc = "A judgement request was retracted."] + JudgementUnrequested { + who: ::subxt::utils::AccountId32, + registrar_index: ::core::primitive::u32, + }, + #[codec(index = 5)] + #[doc = "A judgement was given by a registrar."] + JudgementGiven { + target: ::subxt::utils::AccountId32, + registrar_index: ::core::primitive::u32, + }, + #[codec(index = 6)] + #[doc = "A registrar was added."] + RegistrarAdded { registrar_index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "A sub-identity was added to an identity and the deposit paid."] + SubIdentityAdded { + sub: ::subxt::utils::AccountId32, + main: ::subxt::utils::AccountId32, + deposit: ::core::primitive::u128, + }, + #[codec(index = 8)] + #[doc = "A sub-identity was removed from an identity and the deposit freed."] + SubIdentityRemoved { + sub: ::subxt::utils::AccountId32, + main: ::subxt::utils::AccountId32, + deposit: ::core::primitive::u128, + }, + #[codec(index = 9)] + #[doc = "A sub-identity was cleared, and the given deposit repatriated from the"] + #[doc = "main identity account to the sub-identity account."] + SubIdentityRevoked { + sub: ::subxt::utils::AccountId32, + main: ::subxt::utils::AccountId32, + deposit: ::core::primitive::u128, + }, + } + } + pub mod simple { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum IdentityField { + #[codec(index = 0)] + Display, + #[codec(index = 1)] + Legal, + #[codec(index = 2)] + Web, + #[codec(index = 3)] + Riot, + #[codec(index = 4)] + Email, + #[codec(index = 5)] + PgpFingerprint, + #[codec(index = 6)] + Image, + #[codec(index = 7)] + Twitter, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct IdentityInfo { + pub additional: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::pallet_identity::types::Data, + runtime_types::pallet_identity::types::Data, + )>, + pub display: runtime_types::pallet_identity::types::Data, + pub legal: runtime_types::pallet_identity::types::Data, + pub web: runtime_types::pallet_identity::types::Data, + pub riot: runtime_types::pallet_identity::types::Data, + pub email: runtime_types::pallet_identity::types::Data, + pub pgp_fingerprint: ::core::option::Option<[::core::primitive::u8; 20usize]>, + pub image: runtime_types::pallet_identity::types::Data, + pub twitter: runtime_types::pallet_identity::types::Data, + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BitFlags<_0>( + pub ::core::primitive::u64, + #[codec(skip)] pub ::core::marker::PhantomData<_0>, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Data { + #[codec(index = 0)] + None, + #[codec(index = 1)] + Raw0([::core::primitive::u8; 0usize]), + #[codec(index = 2)] + Raw1([::core::primitive::u8; 1usize]), + #[codec(index = 3)] + Raw2([::core::primitive::u8; 2usize]), + #[codec(index = 4)] + Raw3([::core::primitive::u8; 3usize]), + #[codec(index = 5)] + Raw4([::core::primitive::u8; 4usize]), + #[codec(index = 6)] + Raw5([::core::primitive::u8; 5usize]), + #[codec(index = 7)] + Raw6([::core::primitive::u8; 6usize]), + #[codec(index = 8)] + Raw7([::core::primitive::u8; 7usize]), + #[codec(index = 9)] + Raw8([::core::primitive::u8; 8usize]), + #[codec(index = 10)] + Raw9([::core::primitive::u8; 9usize]), + #[codec(index = 11)] + Raw10([::core::primitive::u8; 10usize]), + #[codec(index = 12)] + Raw11([::core::primitive::u8; 11usize]), + #[codec(index = 13)] + Raw12([::core::primitive::u8; 12usize]), + #[codec(index = 14)] + Raw13([::core::primitive::u8; 13usize]), + #[codec(index = 15)] + Raw14([::core::primitive::u8; 14usize]), + #[codec(index = 16)] + Raw15([::core::primitive::u8; 15usize]), + #[codec(index = 17)] + Raw16([::core::primitive::u8; 16usize]), + #[codec(index = 18)] + Raw17([::core::primitive::u8; 17usize]), + #[codec(index = 19)] + Raw18([::core::primitive::u8; 18usize]), + #[codec(index = 20)] + Raw19([::core::primitive::u8; 19usize]), + #[codec(index = 21)] + Raw20([::core::primitive::u8; 20usize]), + #[codec(index = 22)] + Raw21([::core::primitive::u8; 21usize]), + #[codec(index = 23)] + Raw22([::core::primitive::u8; 22usize]), + #[codec(index = 24)] + Raw23([::core::primitive::u8; 23usize]), + #[codec(index = 25)] + Raw24([::core::primitive::u8; 24usize]), + #[codec(index = 26)] + Raw25([::core::primitive::u8; 25usize]), + #[codec(index = 27)] + Raw26([::core::primitive::u8; 26usize]), + #[codec(index = 28)] + Raw27([::core::primitive::u8; 27usize]), + #[codec(index = 29)] + Raw28([::core::primitive::u8; 28usize]), + #[codec(index = 30)] + Raw29([::core::primitive::u8; 29usize]), + #[codec(index = 31)] + Raw30([::core::primitive::u8; 30usize]), + #[codec(index = 32)] + Raw31([::core::primitive::u8; 31usize]), + #[codec(index = 33)] + Raw32([::core::primitive::u8; 32usize]), + #[codec(index = 34)] + BlakeTwo256([::core::primitive::u8; 32usize]), + #[codec(index = 35)] + Sha256([::core::primitive::u8; 32usize]), + #[codec(index = 36)] + Keccak256([::core::primitive::u8; 32usize]), + #[codec(index = 37)] + ShaThree256([::core::primitive::u8; 32usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Judgement<_0> { + #[codec(index = 0)] + Unknown, + #[codec(index = 1)] + FeePaid(_0), + #[codec(index = 2)] + Reasonable, + #[codec(index = 3)] + KnownGood, + #[codec(index = 4)] + OutOfDate, + #[codec(index = 5)] + LowQuality, + #[codec(index = 6)] + Erroneous, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RegistrarInfo<_0, _1, _2> { + pub account: _1, + pub fee: _0, + pub fields: runtime_types::pallet_identity::types::BitFlags<_2>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Registration<_0, _2> { + pub judgements: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u32, + runtime_types::pallet_identity::types::Judgement<_0>, + )>, + pub deposit: _0, + pub info: _2, + } + } + } + pub mod pallet_im_online { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::heartbeat`]."] + heartbeat { + heartbeat: + runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, + signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Non existent public key."] + InvalidKey, + #[codec(index = 1)] + #[doc = "Duplicated heartbeat."] + DuplicatedHeartbeat, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A new heartbeat was received from `AuthorityId`."] + HeartbeatReceived { + authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + }, + #[codec(index = 1)] + #[doc = "At the end of the session, no offence was committed."] + AllGood, + #[codec(index = 2)] + #[doc = "At the end of the session, at least one validator was found to be offline."] + SomeOffline { + offline: ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::pallet_staking::Exposure< + ::subxt::utils::AccountId32, + ::core::primitive::u128, + >, + )>, + }, + } + } + pub mod sr25519 { + use super::runtime_types; + pub mod app_sr25519 { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::sr25519::Public); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Heartbeat<_0> { + pub block_number: _0, + pub session_index: ::core::primitive::u32, + pub authority_index: ::core::primitive::u32, + pub validators_len: ::core::primitive::u32, + } + } + pub mod pallet_indices { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::claim`]."] + claim { index: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "See [`Pallet::transfer`]."] + transfer { + new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + index: ::core::primitive::u32, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::free`]."] + free { index: ::core::primitive::u32 }, + #[codec(index = 3)] + #[doc = "See [`Pallet::force_transfer`]."] + force_transfer { + new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + index: ::core::primitive::u32, + freeze: ::core::primitive::bool, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::freeze`]."] + freeze { index: ::core::primitive::u32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The index was not already assigned."] + NotAssigned, + #[codec(index = 1)] + #[doc = "The index is assigned to another account."] + NotOwner, + #[codec(index = 2)] + #[doc = "The index was not available."] + InUse, + #[codec(index = 3)] + #[doc = "The source and destination accounts are identical."] + NotTransfer, + #[codec(index = 4)] + #[doc = "The index is permanent and may not be freed/changed."] + Permanent, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A account index was assigned."] + IndexAssigned { + who: ::subxt::utils::AccountId32, + index: ::core::primitive::u32, + }, + #[codec(index = 1)] + #[doc = "A account index has been freed up (unassigned)."] + IndexFreed { index: ::core::primitive::u32 }, + #[codec(index = 2)] + #[doc = "A account index has been frozen to its current account ID."] + IndexFrozen { index: ::core::primitive::u32, who: ::subxt::utils::AccountId32 }, + } + } + } + pub mod pallet_message_queue { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 0)] # [doc = "See [`Pallet::reap_page`]."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::execute_overweight`]."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Page is not reapable because it has items remaining to be processed and is not old"] + #[doc = "enough."] + NotReapable, + #[codec(index = 1)] + #[doc = "Page to be reaped does not exist."] + NoPage, + #[codec(index = 2)] + #[doc = "The referenced message could not be found."] + NoMessage, + #[codec(index = 3)] + #[doc = "The message was already processed and cannot be processed again."] + AlreadyProcessed, + #[codec(index = 4)] + #[doc = "The message is queued for future execution."] + Queued, + #[codec(index = 5)] + #[doc = "There is temporarily not enough weight to continue servicing messages."] + InsufficientWeight, + #[codec(index = 6)] + #[doc = "This message is temporarily unprocessable."] + #[doc = ""] + #[doc = "Such errors are expected, but not guaranteed, to resolve themselves eventually through"] + #[doc = "retrying."] + TemporarilyUnprocessable, + #[codec(index = 7)] + #[doc = "The queue is paused and no message can be executed from it."] + #[doc = ""] + #[doc = "This can change at any time and may resolve in the future by re-trying."] + QueuePaused, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BookState<_0> { + pub begin: ::core::primitive::u32, + pub end: ::core::primitive::u32, + pub count: ::core::primitive::u32, + pub ready_neighbours: + ::core::option::Option>, + pub message_count: ::core::primitive::u64, + pub size: ::core::primitive::u64, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Neighbours<_0> { + pub prev: _0, + pub next: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Page<_0> { + pub remaining: _0, + pub remaining_size: _0, + pub first_index: _0, + pub first: _0, + pub last: _0, + pub heap: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + } + pub mod pallet_multisig { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::as_multi_threshold_1`]."] + as_multi_threshold_1 { + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + call: ::std::boxed::Box, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::as_multi`]."] + as_multi { + threshold: ::core::primitive::u16, + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + maybe_timepoint: ::core::option::Option< + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + >, + call: ::std::boxed::Box, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::approve_as_multi`]."] + approve_as_multi { + threshold: ::core::primitive::u16, + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + maybe_timepoint: ::core::option::Option< + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + >, + call_hash: [::core::primitive::u8; 32usize], + max_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::cancel_as_multi`]."] + cancel_as_multi { + threshold: ::core::primitive::u16, + other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, + timepoint: + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + call_hash: [::core::primitive::u8; 32usize], + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Threshold must be 2 or greater."] + MinimumThreshold, + #[codec(index = 1)] + #[doc = "Call is already approved by this signatory."] + AlreadyApproved, + #[codec(index = 2)] + #[doc = "Call doesn't need any (more) approvals."] + NoApprovalsNeeded, + #[codec(index = 3)] + #[doc = "There are too few signatories in the list."] + TooFewSignatories, + #[codec(index = 4)] + #[doc = "There are too many signatories in the list."] + TooManySignatories, + #[codec(index = 5)] + #[doc = "The signatories were provided out of order; they should be ordered."] + SignatoriesOutOfOrder, + #[codec(index = 6)] + #[doc = "The sender was contained in the other signatories; it shouldn't be."] + SenderInSignatories, + #[codec(index = 7)] + #[doc = "Multisig operation not found when attempting to cancel."] + NotFound, + #[codec(index = 8)] + #[doc = "Only the account that originally created the multisig is able to cancel it."] + NotOwner, + #[codec(index = 9)] + #[doc = "No timepoint was given, yet the multisig operation is already underway."] + NoTimepoint, + #[codec(index = 10)] + #[doc = "A different timepoint was given to the multisig operation that is underway."] + WrongTimepoint, + #[codec(index = 11)] + #[doc = "A timepoint was given, yet no multisig operation is underway."] + UnexpectedTimepoint, + #[codec(index = 12)] + #[doc = "The maximum weight information provided was too low."] + MaxWeightTooLow, + #[codec(index = 13)] + #[doc = "The data to be stored is already stored."] + AlreadyStored, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A new multisig operation has begun."] + NewMultisig { + approving: ::subxt::utils::AccountId32, + multisig: ::subxt::utils::AccountId32, + call_hash: [::core::primitive::u8; 32usize], + }, + #[codec(index = 1)] + #[doc = "A multisig operation has been approved by someone."] + MultisigApproval { + approving: ::subxt::utils::AccountId32, + timepoint: + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + multisig: ::subxt::utils::AccountId32, + call_hash: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + #[doc = "A multisig operation has been executed."] + MultisigExecuted { + approving: ::subxt::utils::AccountId32, + timepoint: + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + multisig: ::subxt::utils::AccountId32, + call_hash: [::core::primitive::u8; 32usize], + result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + }, + #[codec(index = 3)] + #[doc = "A multisig operation has been cancelled."] + MultisigCancelled { + cancelling: ::subxt::utils::AccountId32, + timepoint: + runtime_types::pallet_multisig::Timepoint<::core::primitive::u32>, + multisig: ::subxt::utils::AccountId32, + call_hash: [::core::primitive::u8; 32usize], + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Multisig<_0, _1, _2> { + pub when: runtime_types::pallet_multisig::Timepoint<_0>, + pub deposit: _1, + pub depositor: _2, + pub approvals: runtime_types::bounded_collections::bounded_vec::BoundedVec<_2>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Timepoint<_0> { + pub height: _0, + pub index: ::core::primitive::u32, + } + } + pub mod pallet_nomination_pools { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::join`]."] + join { + #[codec(compact)] + amount: ::core::primitive::u128, + pool_id: ::core::primitive::u32, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::bond_extra`]."] + bond_extra { + extra: runtime_types::pallet_nomination_pools::BondExtra< + ::core::primitive::u128, + >, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::claim_payout`]."] + claim_payout, + #[codec(index = 3)] + #[doc = "See [`Pallet::unbond`]."] + unbond { + member_account: + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + unbonding_points: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::pool_withdraw_unbonded`]."] + pool_withdraw_unbonded { + pool_id: ::core::primitive::u32, + num_slashing_spans: ::core::primitive::u32, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::withdraw_unbonded`]."] + withdraw_unbonded { + member_account: + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + num_slashing_spans: ::core::primitive::u32, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::create`]."] + create { + #[codec(compact)] + amount: ::core::primitive::u128, + root: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + nominator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + bouncer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::create_with_pool_id`]."] + create_with_pool_id { + #[codec(compact)] + amount: ::core::primitive::u128, + root: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + nominator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + bouncer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pool_id: ::core::primitive::u32, + }, + #[codec(index = 8)] + #[doc = "See [`Pallet::nominate`]."] + nominate { + pool_id: ::core::primitive::u32, + validators: ::std::vec::Vec<::subxt::utils::AccountId32>, + }, + #[codec(index = 9)] + #[doc = "See [`Pallet::set_state`]."] + set_state { + pool_id: ::core::primitive::u32, + state: runtime_types::pallet_nomination_pools::PoolState, + }, + #[codec(index = 10)] + #[doc = "See [`Pallet::set_metadata`]."] + set_metadata { + pool_id: ::core::primitive::u32, + metadata: ::std::vec::Vec<::core::primitive::u8>, + }, + #[codec(index = 11)] + #[doc = "See [`Pallet::set_configs`]."] + set_configs { + min_join_bond: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u128, + >, + min_create_bond: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u128, + >, + max_pools: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u32, + >, + max_members: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u32, + >, + max_members_per_pool: runtime_types::pallet_nomination_pools::ConfigOp< + ::core::primitive::u32, + >, + global_max_commission: runtime_types::pallet_nomination_pools::ConfigOp< + runtime_types::sp_arithmetic::per_things::Perbill, + >, + }, + #[codec(index = 12)] + #[doc = "See [`Pallet::update_roles`]."] + update_roles { + pool_id: ::core::primitive::u32, + new_root: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + new_nominator: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + new_bouncer: runtime_types::pallet_nomination_pools::ConfigOp< + ::subxt::utils::AccountId32, + >, + }, + #[codec(index = 13)] + #[doc = "See [`Pallet::chill`]."] + chill { pool_id: ::core::primitive::u32 }, + #[codec(index = 14)] + #[doc = "See [`Pallet::bond_extra_other`]."] + bond_extra_other { + member: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + extra: runtime_types::pallet_nomination_pools::BondExtra< + ::core::primitive::u128, + >, + }, + #[codec(index = 15)] + #[doc = "See [`Pallet::set_claim_permission`]."] + set_claim_permission { + permission: runtime_types::pallet_nomination_pools::ClaimPermission, + }, + #[codec(index = 16)] + #[doc = "See [`Pallet::claim_payout_other`]."] + claim_payout_other { other: ::subxt::utils::AccountId32 }, + #[codec(index = 17)] + #[doc = "See [`Pallet::set_commission`]."] + set_commission { + pool_id: ::core::primitive::u32, + new_commission: ::core::option::Option<( + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::utils::AccountId32, + )>, + }, + #[codec(index = 18)] + #[doc = "See [`Pallet::set_commission_max`]."] + set_commission_max { + pool_id: ::core::primitive::u32, + max_commission: runtime_types::sp_arithmetic::per_things::Perbill, + }, + #[codec(index = 19)] + #[doc = "See [`Pallet::set_commission_change_rate`]."] + set_commission_change_rate { + pool_id: ::core::primitive::u32, + change_rate: runtime_types::pallet_nomination_pools::CommissionChangeRate< + ::core::primitive::u32, + >, + }, + #[codec(index = 20)] + #[doc = "See [`Pallet::claim_commission`]."] + claim_commission { pool_id: ::core::primitive::u32 }, + #[codec(index = 21)] + #[doc = "See [`Pallet::adjust_pool_deposit`]."] + adjust_pool_deposit { pool_id: ::core::primitive::u32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DefensiveError { + #[codec(index = 0)] + NotEnoughSpaceInUnbondPool, + #[codec(index = 1)] + PoolNotFound, + #[codec(index = 2)] + RewardPoolNotFound, + #[codec(index = 3)] + SubPoolsNotFound, + #[codec(index = 4)] + BondedStashKilledPrematurely, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "A (bonded) pool id does not exist."] + PoolNotFound, + #[codec(index = 1)] + #[doc = "An account is not a member."] + PoolMemberNotFound, + #[codec(index = 2)] + #[doc = "A reward pool does not exist. In all cases this is a system logic error."] + RewardPoolNotFound, + #[codec(index = 3)] + #[doc = "A sub pool does not exist."] + SubPoolsNotFound, + #[codec(index = 4)] + #[doc = "An account is already delegating in another pool. An account may only belong to one"] + #[doc = "pool at a time."] + AccountBelongsToOtherPool, + #[codec(index = 5)] + #[doc = "The member is fully unbonded (and thus cannot access the bonded and reward pool"] + #[doc = "anymore to, for example, collect rewards)."] + FullyUnbonding, + #[codec(index = 6)] + #[doc = "The member cannot unbond further chunks due to reaching the limit."] + MaxUnbondingLimit, + #[codec(index = 7)] + #[doc = "None of the funds can be withdrawn yet because the bonding duration has not passed."] + CannotWithdrawAny, + #[codec(index = 8)] + #[doc = "The amount does not meet the minimum bond to either join or create a pool."] + #[doc = ""] + #[doc = "The depositor can never unbond to a value less than `Pallet::depositor_min_bond`. The"] + #[doc = "caller does not have nominating permissions for the pool. Members can never unbond to a"] + #[doc = "value below `MinJoinBond`."] + MinimumBondNotMet, + #[codec(index = 9)] + #[doc = "The transaction could not be executed due to overflow risk for the pool."] + OverflowRisk, + #[codec(index = 10)] + #[doc = "A pool must be in [`PoolState::Destroying`] in order for the depositor to unbond or for"] + #[doc = "other members to be permissionlessly unbonded."] + NotDestroying, + #[codec(index = 11)] + #[doc = "The caller does not have nominating permissions for the pool."] + NotNominator, + #[codec(index = 12)] + #[doc = "Either a) the caller cannot make a valid kick or b) the pool is not destroying."] + NotKickerOrDestroying, + #[codec(index = 13)] + #[doc = "The pool is not open to join"] + NotOpen, + #[codec(index = 14)] + #[doc = "The system is maxed out on pools."] + MaxPools, + #[codec(index = 15)] + #[doc = "Too many members in the pool or system."] + MaxPoolMembers, + #[codec(index = 16)] + #[doc = "The pools state cannot be changed."] + CanNotChangeState, + #[codec(index = 17)] + #[doc = "The caller does not have adequate permissions."] + DoesNotHavePermission, + #[codec(index = 18)] + #[doc = "Metadata exceeds [`Config::MaxMetadataLen`]"] + MetadataExceedsMaxLen, + #[codec(index = 19)] + #[doc = "Some error occurred that should never happen. This should be reported to the"] + #[doc = "maintainers."] + Defensive(runtime_types::pallet_nomination_pools::pallet::DefensiveError), + #[codec(index = 20)] + #[doc = "Partial unbonding now allowed permissionlessly."] + PartialUnbondNotAllowedPermissionlessly, + #[codec(index = 21)] + #[doc = "The pool's max commission cannot be set higher than the existing value."] + MaxCommissionRestricted, + #[codec(index = 22)] + #[doc = "The supplied commission exceeds the max allowed commission."] + CommissionExceedsMaximum, + #[codec(index = 23)] + #[doc = "The supplied commission exceeds global maximum commission."] + CommissionExceedsGlobalMaximum, + #[codec(index = 24)] + #[doc = "Not enough blocks have surpassed since the last commission update."] + CommissionChangeThrottled, + #[codec(index = 25)] + #[doc = "The submitted changes to commission change rate are not allowed."] + CommissionChangeRateNotAllowed, + #[codec(index = 26)] + #[doc = "There is no pending commission to claim."] + NoPendingCommission, + #[codec(index = 27)] + #[doc = "No commission current has been set."] + NoCommissionCurrentSet, + #[codec(index = 28)] + #[doc = "Pool id currently in use."] + PoolIdInUse, + #[codec(index = 29)] + #[doc = "Pool id provided is not correct/usable."] + InvalidPoolId, + #[codec(index = 30)] + #[doc = "Bonding extra is restricted to the exact pending reward amount."] + BondExtraRestricted, + #[codec(index = 31)] + #[doc = "No imbalance in the ED deposit for the pool."] + NothingToAdjust, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Events of this pallet."] + pub enum Event { + #[codec(index = 0)] + #[doc = "A pool has been created."] + Created { + depositor: ::subxt::utils::AccountId32, + pool_id: ::core::primitive::u32, + }, + #[codec(index = 1)] + #[doc = "A member has became bonded in a pool."] + Bonded { + member: ::subxt::utils::AccountId32, + pool_id: ::core::primitive::u32, + bonded: ::core::primitive::u128, + joined: ::core::primitive::bool, + }, + #[codec(index = 2)] + #[doc = "A payout has been made to a member."] + PaidOut { + member: ::subxt::utils::AccountId32, + pool_id: ::core::primitive::u32, + payout: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "A member has unbonded from their pool."] + #[doc = ""] + #[doc = "- `balance` is the corresponding balance of the number of points that has been"] + #[doc = " requested to be unbonded (the argument of the `unbond` transaction) from the bonded"] + #[doc = " pool."] + #[doc = "- `points` is the number of points that are issued as a result of `balance` being"] + #[doc = "dissolved into the corresponding unbonding pool."] + #[doc = "- `era` is the era in which the balance will be unbonded."] + #[doc = "In the absence of slashing, these values will match. In the presence of slashing, the"] + #[doc = "number of points that are issued in the unbonding pool will be less than the amount"] + #[doc = "requested to be unbonded."] + Unbonded { + member: ::subxt::utils::AccountId32, + pool_id: ::core::primitive::u32, + balance: ::core::primitive::u128, + points: ::core::primitive::u128, + era: ::core::primitive::u32, + }, + #[codec(index = 4)] + #[doc = "A member has withdrawn from their pool."] + #[doc = ""] + #[doc = "The given number of `points` have been dissolved in return of `balance`."] + #[doc = ""] + #[doc = "Similar to `Unbonded` event, in the absence of slashing, the ratio of point to balance"] + #[doc = "will be 1."] + Withdrawn { + member: ::subxt::utils::AccountId32, + pool_id: ::core::primitive::u32, + balance: ::core::primitive::u128, + points: ::core::primitive::u128, + }, + #[codec(index = 5)] + #[doc = "A pool has been destroyed."] + Destroyed { pool_id: ::core::primitive::u32 }, + #[codec(index = 6)] + #[doc = "The state of a pool has changed"] + StateChanged { + pool_id: ::core::primitive::u32, + new_state: runtime_types::pallet_nomination_pools::PoolState, + }, + #[codec(index = 7)] + #[doc = "A member has been removed from a pool."] + #[doc = ""] + #[doc = "The removal can be voluntary (withdrawn all unbonded funds) or involuntary (kicked)."] + MemberRemoved { + pool_id: ::core::primitive::u32, + member: ::subxt::utils::AccountId32, + }, + #[codec(index = 8)] + #[doc = "The roles of a pool have been updated to the given new roles. Note that the depositor"] + #[doc = "can never change."] + RolesUpdated { + root: ::core::option::Option<::subxt::utils::AccountId32>, + bouncer: ::core::option::Option<::subxt::utils::AccountId32>, + nominator: ::core::option::Option<::subxt::utils::AccountId32>, + }, + #[codec(index = 9)] + #[doc = "The active balance of pool `pool_id` has been slashed to `balance`."] + PoolSlashed { + pool_id: ::core::primitive::u32, + balance: ::core::primitive::u128, + }, + #[codec(index = 10)] + #[doc = "The unbond pool at `era` of pool `pool_id` has been slashed to `balance`."] + UnbondingPoolSlashed { + pool_id: ::core::primitive::u32, + era: ::core::primitive::u32, + balance: ::core::primitive::u128, + }, + #[codec(index = 11)] + #[doc = "A pool's commission setting has been changed."] + PoolCommissionUpdated { + pool_id: ::core::primitive::u32, + current: ::core::option::Option<( + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::utils::AccountId32, + )>, + }, + #[codec(index = 12)] + #[doc = "A pool's maximum commission setting has been changed."] + PoolMaxCommissionUpdated { + pool_id: ::core::primitive::u32, + max_commission: runtime_types::sp_arithmetic::per_things::Perbill, + }, + #[codec(index = 13)] + #[doc = "A pool's commission `change_rate` has been changed."] + PoolCommissionChangeRateUpdated { + pool_id: ::core::primitive::u32, + change_rate: runtime_types::pallet_nomination_pools::CommissionChangeRate< + ::core::primitive::u32, + >, + }, + #[codec(index = 14)] + #[doc = "Pool commission has been claimed."] + PoolCommissionClaimed { + pool_id: ::core::primitive::u32, + commission: ::core::primitive::u128, + }, + #[codec(index = 15)] + #[doc = "Topped up deficit in frozen ED of the reward pool."] + MinBalanceDeficitAdjusted { + pool_id: ::core::primitive::u32, + amount: ::core::primitive::u128, + }, + #[codec(index = 16)] + #[doc = "Claimed excess frozen ED of af the reward pool."] + MinBalanceExcessAdjusted { + pool_id: ::core::primitive::u32, + amount: ::core::primitive::u128, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum FreezeReason { + #[codec(index = 0)] + PoolMinBalance, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum BondExtra<_0> { + #[codec(index = 0)] + FreeBalance(_0), + #[codec(index = 1)] + Rewards, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BondedPoolInner { + pub commission: runtime_types::pallet_nomination_pools::Commission, + pub member_counter: ::core::primitive::u32, + pub points: ::core::primitive::u128, + pub roles: + runtime_types::pallet_nomination_pools::PoolRoles<::subxt::utils::AccountId32>, + pub state: runtime_types::pallet_nomination_pools::PoolState, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ClaimPermission { + #[codec(index = 0)] + Permissioned, + #[codec(index = 1)] + PermissionlessCompound, + #[codec(index = 2)] + PermissionlessWithdraw, + #[codec(index = 3)] + PermissionlessAll, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Commission { + pub current: ::core::option::Option<( + runtime_types::sp_arithmetic::per_things::Perbill, + ::subxt::utils::AccountId32, + )>, + pub max: ::core::option::Option, + pub change_rate: ::core::option::Option< + runtime_types::pallet_nomination_pools::CommissionChangeRate< + ::core::primitive::u32, + >, + >, + pub throttle_from: ::core::option::Option<::core::primitive::u32>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CommissionChangeRate<_0> { + pub max_increase: runtime_types::sp_arithmetic::per_things::Perbill, + pub min_delay: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ConfigOp<_0> { + #[codec(index = 0)] + Noop, + #[codec(index = 1)] + Set(_0), + #[codec(index = 2)] + Remove, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PoolMember { + pub pool_id: ::core::primitive::u32, + pub points: ::core::primitive::u128, + pub last_recorded_reward_counter: + runtime_types::sp_arithmetic::fixed_point::FixedU128, + pub unbonding_eras: + runtime_types::bounded_collections::bounded_btree_map::BoundedBTreeMap< + ::core::primitive::u32, + ::core::primitive::u128, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PoolRoles<_0> { + pub depositor: _0, + pub root: ::core::option::Option<_0>, + pub nominator: ::core::option::Option<_0>, + pub bouncer: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum PoolState { + #[codec(index = 0)] + Open, + #[codec(index = 1)] + Blocked, + #[codec(index = 2)] + Destroying, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RewardPool { + pub last_recorded_reward_counter: + runtime_types::sp_arithmetic::fixed_point::FixedU128, + pub last_recorded_total_payouts: ::core::primitive::u128, + pub total_rewards_claimed: ::core::primitive::u128, + pub total_commission_pending: ::core::primitive::u128, + pub total_commission_claimed: ::core::primitive::u128, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SubPools { + pub no_era: runtime_types::pallet_nomination_pools::UnbondPool, + pub with_era: + runtime_types::bounded_collections::bounded_btree_map::BoundedBTreeMap< + ::core::primitive::u32, + runtime_types::pallet_nomination_pools::UnbondPool, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnbondPool { + pub points: ::core::primitive::u128, + pub balance: ::core::primitive::u128, + } + } + pub mod pallet_offences { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Events type."] + pub enum Event { + #[codec(index = 0)] + #[doc = "There is an offence reported of the given `kind` happened at the `session_index` and"] + #[doc = "(kind-specific) time slot. This event is not deposited for duplicate slashes."] + #[doc = "\\[kind, timeslot\\]."] + Offence { + kind: [::core::primitive::u8; 16usize], + timeslot: ::std::vec::Vec<::core::primitive::u8>, + }, + } + } + } + pub mod pallet_preimage { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::note_preimage`]."] + note_preimage { bytes: ::std::vec::Vec<::core::primitive::u8> }, + #[codec(index = 1)] + #[doc = "See [`Pallet::unnote_preimage`]."] + unnote_preimage { hash: ::subxt::utils::H256 }, + #[codec(index = 2)] + #[doc = "See [`Pallet::request_preimage`]."] + request_preimage { hash: ::subxt::utils::H256 }, + #[codec(index = 3)] + #[doc = "See [`Pallet::unrequest_preimage`]."] + unrequest_preimage { hash: ::subxt::utils::H256 }, + #[codec(index = 4)] + #[doc = "See [`Pallet::ensure_updated`]."] + ensure_updated { hashes: ::std::vec::Vec<::subxt::utils::H256> }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Preimage is too large to store on-chain."] + TooBig, + #[codec(index = 1)] + #[doc = "Preimage has already been noted on-chain."] + AlreadyNoted, + #[codec(index = 2)] + #[doc = "The user is not authorized to perform this action."] + NotAuthorized, + #[codec(index = 3)] + #[doc = "The preimage cannot be removed since it has not yet been noted."] + NotNoted, + #[codec(index = 4)] + #[doc = "A preimage may not be removed when there are outstanding requests."] + Requested, + #[codec(index = 5)] + #[doc = "The preimage request cannot be removed since no outstanding requests exist."] + NotRequested, + #[codec(index = 6)] + #[doc = "More than `MAX_HASH_UPGRADE_BULK_COUNT` hashes were requested to be upgraded at once."] + TooMany, + #[codec(index = 7)] + #[doc = "Too few hashes were requested to be upgraded (i.e. zero)."] + TooFew, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A preimage has been noted."] + Noted { hash: ::subxt::utils::H256 }, + #[codec(index = 1)] + #[doc = "A preimage has been requested."] + Requested { hash: ::subxt::utils::H256 }, + #[codec(index = 2)] + #[doc = "A preimage has ben cleared."] + Cleared { hash: ::subxt::utils::H256 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum HoldReason { + #[codec(index = 0)] + Preimage, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum OldRequestStatus<_0, _1> { + #[codec(index = 0)] + Unrequested { deposit: (_0, _1), len: ::core::primitive::u32 }, + #[codec(index = 1)] + Requested { + deposit: ::core::option::Option<(_0, _1)>, + count: ::core::primitive::u32, + len: ::core::option::Option<::core::primitive::u32>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RequestStatus<_0, _1> { + #[codec(index = 0)] + Unrequested { ticket: (_0, _1), len: ::core::primitive::u32 }, + #[codec(index = 1)] + Requested { + maybe_ticket: ::core::option::Option<(_0, _1)>, + count: ::core::primitive::u32, + maybe_len: ::core::option::Option<::core::primitive::u32>, + }, + } + } + pub mod pallet_proxy { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::proxy`]."] + proxy { + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + force_proxy_type: + ::core::option::Option, + call: ::std::boxed::Box, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::add_proxy`]."] + add_proxy { + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::remove_proxy`]."] + remove_proxy { + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::remove_proxies`]."] + remove_proxies, + #[codec(index = 4)] + #[doc = "See [`Pallet::create_pure`]."] + create_pure { + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + index: ::core::primitive::u16, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::kill_pure`]."] + kill_pure { + spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + proxy_type: runtime_types::paseo_runtime::ProxyType, + index: ::core::primitive::u16, + #[codec(compact)] + height: ::core::primitive::u32, + #[codec(compact)] + ext_index: ::core::primitive::u32, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::announce`]."] + announce { + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call_hash: ::subxt::utils::H256, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::remove_announcement`]."] + remove_announcement { + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call_hash: ::subxt::utils::H256, + }, + #[codec(index = 8)] + #[doc = "See [`Pallet::reject_announcement`]."] + reject_announcement { + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call_hash: ::subxt::utils::H256, + }, + #[codec(index = 9)] + #[doc = "See [`Pallet::proxy_announced`]."] + proxy_announced { + delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + force_proxy_type: + ::core::option::Option, + call: ::std::boxed::Box, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "There are too many proxies registered or too many announcements pending."] + TooMany, + #[codec(index = 1)] + #[doc = "Proxy registration not found."] + NotFound, + #[codec(index = 2)] + #[doc = "Sender is not a proxy of the account to be proxied."] + NotProxy, + #[codec(index = 3)] + #[doc = "A call which is incompatible with the proxy type's filter was attempted."] + Unproxyable, + #[codec(index = 4)] + #[doc = "Account is already a proxy."] + Duplicate, + #[codec(index = 5)] + #[doc = "Call may not be made by proxy because it may escalate its privileges."] + NoPermission, + #[codec(index = 6)] + #[doc = "Announcement, if made at all, was made too recently."] + Unannounced, + #[codec(index = 7)] + #[doc = "Cannot add self as proxy."] + NoSelfProxy, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A proxy was executed correctly, with the given."] + ProxyExecuted { + result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + }, + #[codec(index = 1)] + #[doc = "A pure account has been created by new proxy with given"] + #[doc = "disambiguation index and proxy type."] + PureCreated { + pure: ::subxt::utils::AccountId32, + who: ::subxt::utils::AccountId32, + proxy_type: runtime_types::paseo_runtime::ProxyType, + disambiguation_index: ::core::primitive::u16, + }, + #[codec(index = 2)] + #[doc = "An announcement was placed to make a call in the future."] + Announced { + real: ::subxt::utils::AccountId32, + proxy: ::subxt::utils::AccountId32, + call_hash: ::subxt::utils::H256, + }, + #[codec(index = 3)] + #[doc = "A proxy was added."] + ProxyAdded { + delegator: ::subxt::utils::AccountId32, + delegatee: ::subxt::utils::AccountId32, + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + }, + #[codec(index = 4)] + #[doc = "A proxy was removed."] + ProxyRemoved { + delegator: ::subxt::utils::AccountId32, + delegatee: ::subxt::utils::AccountId32, + proxy_type: runtime_types::paseo_runtime::ProxyType, + delay: ::core::primitive::u32, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Announcement<_0, _1, _2> { + pub real: _0, + pub call_hash: _1, + pub height: _2, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProxyDefinition<_0, _1, _2> { + pub delegate: _0, + pub proxy_type: _1, + pub delay: _2, + } + } + pub mod pallet_referenda { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::submit`]."] + submit { + proposal_origin: + ::std::boxed::Box, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + enactment_moment: + runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::place_decision_deposit`]."] + place_decision_deposit { index: ::core::primitive::u32 }, + #[codec(index = 2)] + #[doc = "See [`Pallet::refund_decision_deposit`]."] + refund_decision_deposit { index: ::core::primitive::u32 }, + #[codec(index = 3)] + #[doc = "See [`Pallet::cancel`]."] + cancel { index: ::core::primitive::u32 }, + #[codec(index = 4)] + #[doc = "See [`Pallet::kill`]."] + kill { index: ::core::primitive::u32 }, + #[codec(index = 5)] + #[doc = "See [`Pallet::nudge_referendum`]."] + nudge_referendum { index: ::core::primitive::u32 }, + #[codec(index = 6)] + #[doc = "See [`Pallet::one_fewer_deciding`]."] + one_fewer_deciding { track: ::core::primitive::u16 }, + #[codec(index = 7)] + #[doc = "See [`Pallet::refund_submission_deposit`]."] + refund_submission_deposit { index: ::core::primitive::u32 }, + #[codec(index = 8)] + #[doc = "See [`Pallet::set_metadata`]."] + set_metadata { + index: ::core::primitive::u32, + maybe_hash: ::core::option::Option<::subxt::utils::H256>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Referendum is not ongoing."] + NotOngoing, + #[codec(index = 1)] + #[doc = "Referendum's decision deposit is already paid."] + HasDeposit, + #[codec(index = 2)] + #[doc = "The track identifier given was invalid."] + BadTrack, + #[codec(index = 3)] + #[doc = "There are already a full complement of referenda in progress for this track."] + Full, + #[codec(index = 4)] + #[doc = "The queue of the track is empty."] + QueueEmpty, + #[codec(index = 5)] + #[doc = "The referendum index provided is invalid in this context."] + BadReferendum, + #[codec(index = 6)] + #[doc = "There was nothing to do in the advancement."] + NothingToDo, + #[codec(index = 7)] + #[doc = "No track exists for the proposal origin."] + NoTrack, + #[codec(index = 8)] + #[doc = "Any deposit cannot be refunded until after the decision is over."] + Unfinished, + #[codec(index = 9)] + #[doc = "The deposit refunder is not the depositor."] + NoPermission, + #[codec(index = 10)] + #[doc = "The deposit cannot be refunded since none was made."] + NoDeposit, + #[codec(index = 11)] + #[doc = "The referendum status is invalid for this operation."] + BadStatus, + #[codec(index = 12)] + #[doc = "The preimage does not exist."] + PreimageNotExist, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A referendum has been submitted."] + Submitted { + index: ::core::primitive::u32, + track: ::core::primitive::u16, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + }, + #[codec(index = 1)] + #[doc = "The decision deposit has been placed."] + DecisionDepositPlaced { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "The decision deposit has been refunded."] + DecisionDepositRefunded { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "A deposit has been slashaed."] + DepositSlashed { + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "A referendum has moved into the deciding phase."] + DecisionStarted { + index: ::core::primitive::u32, + track: ::core::primitive::u16, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::paseo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 5)] + ConfirmStarted { index: ::core::primitive::u32 }, + #[codec(index = 6)] + ConfirmAborted { index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "A referendum has ended its confirmation phase and is ready for approval."] + Confirmed { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 8)] + #[doc = "A referendum has been approved and its proposal has been scheduled."] + Approved { index: ::core::primitive::u32 }, + #[codec(index = 9)] + #[doc = "A proposal has been rejected by referendum."] + Rejected { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 10)] + #[doc = "A referendum has been timed out without being decided."] + TimedOut { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 11)] + #[doc = "A referendum has been cancelled."] + Cancelled { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 12)] + #[doc = "A referendum has been killed."] + Killed { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 13)] + #[doc = "The submission deposit has been refunded."] + SubmissionDepositRefunded { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 14)] + #[doc = "Metadata for a referendum has been set."] + MetadataSet { index: ::core::primitive::u32, hash: ::subxt::utils::H256 }, + #[codec(index = 15)] + #[doc = "Metadata for a referendum has been cleared."] + MetadataCleared { index: ::core::primitive::u32, hash: ::subxt::utils::H256 }, + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Curve { + #[codec(index = 0)] + LinearDecreasing { + length: runtime_types::sp_arithmetic::per_things::Perbill, + floor: runtime_types::sp_arithmetic::per_things::Perbill, + ceil: runtime_types::sp_arithmetic::per_things::Perbill, + }, + #[codec(index = 1)] + SteppedDecreasing { + begin: runtime_types::sp_arithmetic::per_things::Perbill, + end: runtime_types::sp_arithmetic::per_things::Perbill, + step: runtime_types::sp_arithmetic::per_things::Perbill, + period: runtime_types::sp_arithmetic::per_things::Perbill, + }, + #[codec(index = 2)] + Reciprocal { + factor: runtime_types::sp_arithmetic::fixed_point::FixedI64, + x_offset: runtime_types::sp_arithmetic::fixed_point::FixedI64, + y_offset: runtime_types::sp_arithmetic::fixed_point::FixedI64, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DecidingStatus<_0> { + pub since: _0, + pub confirming: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Deposit<_0, _1> { + pub who: _0, + pub amount: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ReferendumInfo<_0, _1, _2, _3, _4, _5, _6, _7> { + #[codec(index = 0)] + Ongoing( + runtime_types::pallet_referenda::types::ReferendumStatus< + _0, + _1, + _2, + _3, + _4, + _5, + _6, + _7, + >, + ), + #[codec(index = 1)] + Approved( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 2)] + Rejected( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 3)] + Cancelled( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 4)] + TimedOut( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 5)] + Killed(_2), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReferendumStatus<_0, _1, _2, _3, _4, _5, _6, _7> { + pub track: _0, + pub origin: _1, + pub proposal: _3, + pub enactment: runtime_types::frame_support::traits::schedule::DispatchTime<_2>, + pub submitted: _2, + pub submission_deposit: runtime_types::pallet_referenda::types::Deposit<_6, _4>, + pub decision_deposit: ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + pub deciding: ::core::option::Option< + runtime_types::pallet_referenda::types::DecidingStatus<_2>, + >, + pub tally: _5, + pub in_queue: ::core::primitive::bool, + pub alarm: ::core::option::Option<(_2, _7)>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TrackInfo<_0, _1> { + pub name: ::std::string::String, + pub max_deciding: ::core::primitive::u32, + pub decision_deposit: _0, + pub prepare_period: _1, + pub decision_period: _1, + pub confirm_period: _1, + pub min_enactment_period: _1, + pub min_approval: runtime_types::pallet_referenda::types::Curve, + pub min_support: runtime_types::pallet_referenda::types::Curve, + } + } + } + pub mod pallet_scheduler { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::schedule`]."] + schedule { + when: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: ::std::boxed::Box, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::cancel`]."] + cancel { when: ::core::primitive::u32, index: ::core::primitive::u32 }, + #[codec(index = 2)] + #[doc = "See [`Pallet::schedule_named`]."] + schedule_named { + id: [::core::primitive::u8; 32usize], + when: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: ::std::boxed::Box, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::cancel_named`]."] + cancel_named { id: [::core::primitive::u8; 32usize] }, + #[codec(index = 4)] + #[doc = "See [`Pallet::schedule_after`]."] + schedule_after { + after: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: ::std::boxed::Box, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::schedule_named_after`]."] + schedule_named_after { + id: [::core::primitive::u8; 32usize], + after: ::core::primitive::u32, + maybe_periodic: ::core::option::Option<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + priority: ::core::primitive::u8, + call: ::std::boxed::Box, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Failed to schedule a call"] + FailedToSchedule, + #[codec(index = 1)] + #[doc = "Cannot find the scheduled call."] + NotFound, + #[codec(index = 2)] + #[doc = "Given target block number is in the past."] + TargetBlockNumberInPast, + #[codec(index = 3)] + #[doc = "Reschedule failed because it does not change scheduled time."] + RescheduleNoChange, + #[codec(index = 4)] + #[doc = "Attempt to use a non-named function on a named task."] + Named, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Events type."] + pub enum Event { + #[codec(index = 0)] + #[doc = "Scheduled some task."] + Scheduled { when: ::core::primitive::u32, index: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "Canceled some task."] + Canceled { when: ::core::primitive::u32, index: ::core::primitive::u32 }, + #[codec(index = 2)] + #[doc = "Dispatched some task."] + Dispatched { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + }, + #[codec(index = 3)] + #[doc = "The call for the provided hash was not found so the task has been aborted."] + CallUnavailable { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 4)] + #[doc = "The given task was unable to be renewed since the agenda is full at that block."] + PeriodicFailed { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 5)] + #[doc = "The given task can never be executed since it is overweight."] + PermanentlyOverweight { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Scheduled<_0, _1, _2, _3, _4> { + pub maybe_id: ::core::option::Option<_0>, + pub priority: ::core::primitive::u8, + pub call: _1, + pub maybe_periodic: ::core::option::Option<(_2, _2)>, + pub origin: _3, + #[codec(skip)] + pub __subxt_unused_type_params: ::core::marker::PhantomData<_4>, + } + } + pub mod pallet_session { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::set_keys`]."] + set_keys { + keys: runtime_types::paseo_runtime::SessionKeys, + proof: ::std::vec::Vec<::core::primitive::u8>, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::purge_keys`]."] + purge_keys, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Error for the session pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Invalid ownership proof."] + InvalidProof, + #[codec(index = 1)] + #[doc = "No associated validator ID for account."] + NoAssociatedValidatorId, + #[codec(index = 2)] + #[doc = "Registered duplicate key."] + DuplicatedKey, + #[codec(index = 3)] + #[doc = "No keys are associated with this account."] + NoKeys, + #[codec(index = 4)] + #[doc = "Key setting account is not live, so it's impossible to associate keys."] + NoAccount, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "New session has happened. Note that the argument is the session index, not the"] + #[doc = "block number as the type might suggest."] + NewSession { session_index: ::core::primitive::u32 }, + } + } + } + pub mod pallet_staking { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::bond`]."] + bond { + #[codec(compact)] + value: ::core::primitive::u128, + payee: runtime_types::pallet_staking::RewardDestination< + ::subxt::utils::AccountId32, + >, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::bond_extra`]."] + bond_extra { + #[codec(compact)] + max_additional: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::unbond`]."] + unbond { + #[codec(compact)] + value: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::withdraw_unbonded`]."] + withdraw_unbonded { num_slashing_spans: ::core::primitive::u32 }, + #[codec(index = 4)] + #[doc = "See [`Pallet::validate`]."] + validate { prefs: runtime_types::pallet_staking::ValidatorPrefs }, + #[codec(index = 5)] + #[doc = "See [`Pallet::nominate`]."] + nominate { + targets: ::std::vec::Vec< + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + >, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::chill`]."] + chill, + #[codec(index = 7)] + #[doc = "See [`Pallet::set_payee`]."] + set_payee { + payee: runtime_types::pallet_staking::RewardDestination< + ::subxt::utils::AccountId32, + >, + }, + #[codec(index = 8)] + #[doc = "See [`Pallet::set_controller`]."] + set_controller, + #[codec(index = 9)] + #[doc = "See [`Pallet::set_validator_count`]."] + set_validator_count { + #[codec(compact)] + new: ::core::primitive::u32, + }, + #[codec(index = 10)] + #[doc = "See [`Pallet::increase_validator_count`]."] + increase_validator_count { + #[codec(compact)] + additional: ::core::primitive::u32, + }, + #[codec(index = 11)] + #[doc = "See [`Pallet::scale_validator_count`]."] + scale_validator_count { + factor: runtime_types::sp_arithmetic::per_things::Percent, + }, + #[codec(index = 12)] + #[doc = "See [`Pallet::force_no_eras`]."] + force_no_eras, + #[codec(index = 13)] + #[doc = "See [`Pallet::force_new_era`]."] + force_new_era, + #[codec(index = 14)] + #[doc = "See [`Pallet::set_invulnerables`]."] + set_invulnerables { + invulnerables: ::std::vec::Vec<::subxt::utils::AccountId32>, + }, + #[codec(index = 15)] + #[doc = "See [`Pallet::force_unstake`]."] + force_unstake { + stash: ::subxt::utils::AccountId32, + num_slashing_spans: ::core::primitive::u32, + }, + #[codec(index = 16)] + #[doc = "See [`Pallet::force_new_era_always`]."] + force_new_era_always, + #[codec(index = 17)] + #[doc = "See [`Pallet::cancel_deferred_slash`]."] + cancel_deferred_slash { + era: ::core::primitive::u32, + slash_indices: ::std::vec::Vec<::core::primitive::u32>, + }, + #[codec(index = 18)] + #[doc = "See [`Pallet::payout_stakers`]."] + payout_stakers { + validator_stash: ::subxt::utils::AccountId32, + era: ::core::primitive::u32, + }, + #[codec(index = 19)] + #[doc = "See [`Pallet::rebond`]."] + rebond { + #[codec(compact)] + value: ::core::primitive::u128, + }, + #[codec(index = 20)] + #[doc = "See [`Pallet::reap_stash`]."] + reap_stash { + stash: ::subxt::utils::AccountId32, + num_slashing_spans: ::core::primitive::u32, + }, + #[codec(index = 21)] + #[doc = "See [`Pallet::kick`]."] + kick { + who: ::std::vec::Vec< + ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + >, + }, + #[codec(index = 22)] + #[doc = "See [`Pallet::set_staking_configs`]."] + set_staking_configs { + min_nominator_bond: + runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u128, + >, + min_validator_bond: + runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u128, + >, + max_nominator_count: + runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u32, + >, + max_validator_count: + runtime_types::pallet_staking::pallet::pallet::ConfigOp< + ::core::primitive::u32, + >, + chill_threshold: + runtime_types::pallet_staking::pallet::pallet::ConfigOp< + runtime_types::sp_arithmetic::per_things::Percent, + >, + min_commission: runtime_types::pallet_staking::pallet::pallet::ConfigOp< + runtime_types::sp_arithmetic::per_things::Perbill, + >, + }, + #[codec(index = 23)] + #[doc = "See [`Pallet::chill_other`]."] + chill_other { controller: ::subxt::utils::AccountId32 }, + #[codec(index = 24)] + #[doc = "See [`Pallet::force_apply_min_commission`]."] + force_apply_min_commission { validator_stash: ::subxt::utils::AccountId32 }, + #[codec(index = 25)] + #[doc = "See [`Pallet::set_min_commission`]."] + set_min_commission { + new: runtime_types::sp_arithmetic::per_things::Perbill, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ConfigOp<_0> { + #[codec(index = 0)] + Noop, + #[codec(index = 1)] + Set(_0), + #[codec(index = 2)] + Remove, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Not a controller account."] + NotController, + #[codec(index = 1)] + #[doc = "Not a stash account."] + NotStash, + #[codec(index = 2)] + #[doc = "Stash is already bonded."] + AlreadyBonded, + #[codec(index = 3)] + #[doc = "Controller is already paired."] + AlreadyPaired, + #[codec(index = 4)] + #[doc = "Targets cannot be empty."] + EmptyTargets, + #[codec(index = 5)] + #[doc = "Duplicate index."] + DuplicateIndex, + #[codec(index = 6)] + #[doc = "Slash record index out of bounds."] + InvalidSlashIndex, + #[codec(index = 7)] + #[doc = "Cannot have a validator or nominator role, with value less than the minimum defined by"] + #[doc = "governance (see `MinValidatorBond` and `MinNominatorBond`). If unbonding is the"] + #[doc = "intention, `chill` first to remove one's role as validator/nominator."] + InsufficientBond, + #[codec(index = 8)] + #[doc = "Can not schedule more unlock chunks."] + NoMoreChunks, + #[codec(index = 9)] + #[doc = "Can not rebond without unlocking chunks."] + NoUnlockChunk, + #[codec(index = 10)] + #[doc = "Attempting to target a stash that still has funds."] + FundedTarget, + #[codec(index = 11)] + #[doc = "Invalid era to reward."] + InvalidEraToReward, + #[codec(index = 12)] + #[doc = "Invalid number of nominations."] + InvalidNumberOfNominations, + #[codec(index = 13)] + #[doc = "Items are not sorted and unique."] + NotSortedAndUnique, + #[codec(index = 14)] + #[doc = "Rewards for this era have already been claimed for this validator."] + AlreadyClaimed, + #[codec(index = 15)] + #[doc = "Incorrect previous history depth input provided."] + IncorrectHistoryDepth, + #[codec(index = 16)] + #[doc = "Incorrect number of slashing spans provided."] + IncorrectSlashingSpans, + #[codec(index = 17)] + #[doc = "Internal state has become somehow corrupted and the operation cannot continue."] + BadState, + #[codec(index = 18)] + #[doc = "Too many nomination targets supplied."] + TooManyTargets, + #[codec(index = 19)] + #[doc = "A nomination target was supplied that was blocked or otherwise not a validator."] + BadTarget, + #[codec(index = 20)] + #[doc = "The user has enough bond and thus cannot be chilled forcefully by an external person."] + CannotChillOther, + #[codec(index = 21)] + #[doc = "There are too many nominators in the system. Governance needs to adjust the staking"] + #[doc = "settings to keep things safe for the runtime."] + TooManyNominators, + #[codec(index = 22)] + #[doc = "There are too many validator candidates in the system. Governance needs to adjust the"] + #[doc = "staking settings to keep things safe for the runtime."] + TooManyValidators, + #[codec(index = 23)] + #[doc = "Commission is too low. Must be at least `MinCommission`."] + CommissionTooLow, + #[codec(index = 24)] + #[doc = "Some bound is not met."] + BoundNotMet, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The era payout has been set; the first balance is the validator-payout; the second is"] + #[doc = "the remainder from the maximum amount of reward."] + EraPaid { + era_index: ::core::primitive::u32, + validator_payout: ::core::primitive::u128, + remainder: ::core::primitive::u128, + }, + #[codec(index = 1)] + #[doc = "The nominator has been rewarded by this amount to this destination."] + Rewarded { + stash: ::subxt::utils::AccountId32, + dest: runtime_types::pallet_staking::RewardDestination< + ::subxt::utils::AccountId32, + >, + amount: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "A staker (validator or nominator) has been slashed by the given amount."] + Slashed { + staker: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "A slash for the given validator, for the given percentage of their stake, at the given"] + #[doc = "era as been reported."] + SlashReported { + validator: ::subxt::utils::AccountId32, + fraction: runtime_types::sp_arithmetic::per_things::Perbill, + slash_era: ::core::primitive::u32, + }, + #[codec(index = 4)] + #[doc = "An old slashing report from a prior era was discarded because it could"] + #[doc = "not be processed."] + OldSlashingReportDiscarded { session_index: ::core::primitive::u32 }, + #[codec(index = 5)] + #[doc = "A new set of stakers was elected."] + StakersElected, + #[codec(index = 6)] + #[doc = "An account has bonded this amount. \\[stash, amount\\]"] + #[doc = ""] + #[doc = "NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably,"] + #[doc = "it will not be emitted for staking rewards when they are added to stake."] + Bonded { + stash: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 7)] + #[doc = "An account has unbonded this amount."] + Unbonded { + stash: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 8)] + #[doc = "An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance`"] + #[doc = "from the unlocking queue."] + Withdrawn { + stash: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 9)] + #[doc = "A nominator has been kicked from a validator."] + Kicked { + nominator: ::subxt::utils::AccountId32, + stash: ::subxt::utils::AccountId32, + }, + #[codec(index = 10)] + #[doc = "The election failed. No new era is planned."] + StakingElectionFailed, + #[codec(index = 11)] + #[doc = "An account has stopped participating as either a validator or nominator."] + Chilled { stash: ::subxt::utils::AccountId32 }, + #[codec(index = 12)] + #[doc = "The stakers' rewards are getting paid."] + PayoutStarted { + era_index: ::core::primitive::u32, + validator_stash: ::subxt::utils::AccountId32, + }, + #[codec(index = 13)] + #[doc = "A validator has set their preferences."] + ValidatorPrefsSet { + stash: ::subxt::utils::AccountId32, + prefs: runtime_types::pallet_staking::ValidatorPrefs, + }, + #[codec(index = 14)] + #[doc = "Voters size limit reached."] + SnapshotVotersSizeExceeded { size: ::core::primitive::u32 }, + #[codec(index = 15)] + #[doc = "Targets size limit reached."] + SnapshotTargetsSizeExceeded { size: ::core::primitive::u32 }, + #[codec(index = 16)] + #[doc = "A new force era mode was set."] + ForceEra { mode: runtime_types::pallet_staking::Forcing }, + #[codec(index = 17)] + #[doc = "Report of a controller batch deprecation."] + ControllerBatchDeprecated { failures: ::core::primitive::u32 }, + } + } + } + pub mod slashing { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SlashingSpans { + pub span_index: ::core::primitive::u32, + pub last_start: ::core::primitive::u32, + pub last_nonzero_slash: ::core::primitive::u32, + pub prior: ::std::vec::Vec<::core::primitive::u32>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SpanRecord<_0> { + pub slashed: _0, + pub paid_out: _0, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ActiveEraInfo { + pub index: ::core::primitive::u32, + pub start: ::core::option::Option<::core::primitive::u64>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EraRewardPoints<_0> { + pub total: ::core::primitive::u32, + pub individual: ::subxt::utils::KeyedVec<_0, ::core::primitive::u32>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Exposure<_0, _1> { + #[codec(compact)] + pub total: _1, + #[codec(compact)] + pub own: _1, + pub others: + ::std::vec::Vec>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Forcing { + #[codec(index = 0)] + NotForcing, + #[codec(index = 1)] + ForceNew, + #[codec(index = 2)] + ForceNone, + #[codec(index = 3)] + ForceAlways, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct IndividualExposure<_0, _1> { + pub who: _0, + #[codec(compact)] + pub value: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Nominations { + pub targets: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::subxt::utils::AccountId32, + >, + pub submitted_in: ::core::primitive::u32, + pub suppressed: ::core::primitive::bool, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RewardDestination<_0> { + #[codec(index = 0)] + Staked, + #[codec(index = 1)] + Stash, + #[codec(index = 2)] + Controller, + #[codec(index = 3)] + Account(_0), + #[codec(index = 4)] + None, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct StakingLedger { + pub stash: ::subxt::utils::AccountId32, + #[codec(compact)] + pub total: ::core::primitive::u128, + #[codec(compact)] + pub active: ::core::primitive::u128, + pub unlocking: runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_staking::UnlockChunk<::core::primitive::u128>, + >, + pub claimed_rewards: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u32, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnappliedSlash<_0, _1> { + pub validator: _0, + pub own: _1, + pub others: ::std::vec::Vec<(_0, _1)>, + pub reporters: ::std::vec::Vec<_0>, + pub payout: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UnlockChunk<_0> { + #[codec(compact)] + pub value: _0, + #[codec(compact)] + pub era: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidatorPrefs { + #[codec(compact)] + pub commission: runtime_types::sp_arithmetic::per_things::Perbill, + pub blocked: ::core::primitive::bool, + } + } + pub mod pallet_sudo { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::sudo`]."] + sudo { call: ::std::boxed::Box }, + #[codec(index = 1)] + #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + sudo_unchecked_weight { + call: ::std::boxed::Box, + weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::set_key`]."] + set_key { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()> }, + #[codec(index = 3)] + #[doc = "See [`Pallet::sudo_as`]."] + sudo_as { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + call: ::std::boxed::Box, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Error for the Sudo pallet"] + pub enum Error { + #[codec(index = 0)] + #[doc = "Sender must be the Sudo account"] + RequireSudo, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A sudo call just took place."] + Sudid { + sudo_result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + }, + #[codec(index = 1)] + #[doc = "The sudo key has been updated."] + KeyChanged { old_sudoer: ::core::option::Option<::subxt::utils::AccountId32> }, + #[codec(index = 2)] + #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] + SudoAsDone { + sudo_result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + }, + } + } + } + pub mod pallet_timestamp { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::set`]."] + set { + #[codec(compact)] + now: ::core::primitive::u64, + }, + } + } + } + pub mod pallet_transaction_payment { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,"] + #[doc = "has been paid by `who`."] + TransactionFeePaid { + who: ::subxt::utils::AccountId32, + actual_fee: ::core::primitive::u128, + tip: ::core::primitive::u128, + }, + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct FeeDetails<_0> { + pub inclusion_fee: ::core::option::Option< + runtime_types::pallet_transaction_payment::types::InclusionFee<_0>, + >, + pub tip: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InclusionFee<_0> { + pub base_fee: _0, + pub len_fee: _0, + pub adjusted_weight_fee: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RuntimeDispatchInfo<_0, _1> { + pub weight: _1, + pub class: runtime_types::frame_support::dispatch::DispatchClass, + pub partial_fee: _0, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ChargeTransactionPayment(#[codec(compact)] pub ::core::primitive::u128); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Releases { + #[codec(index = 0)] + V1Ancient, + #[codec(index = 1)] + V2, + } + } + pub mod pallet_treasury { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::propose_spend`]."] + propose_spend { + #[codec(compact)] + value: ::core::primitive::u128, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::reject_proposal`]."] + reject_proposal { + #[codec(compact)] + proposal_id: ::core::primitive::u32, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::approve_proposal`]."] + approve_proposal { + #[codec(compact)] + proposal_id: ::core::primitive::u32, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::spend_local`]."] + spend_local { + #[codec(compact)] + amount: ::core::primitive::u128, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::remove_approval`]."] + remove_approval { + #[codec(compact)] + proposal_id: ::core::primitive::u32, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::spend`]."] + spend { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + #[codec(compact)] + amount: ::core::primitive::u128, + beneficiary: ::std::boxed::Box, + valid_from: ::core::option::Option<::core::primitive::u32>, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::payout`]."] + payout { index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "See [`Pallet::check_status`]."] + check_status { index: ::core::primitive::u32 }, + #[codec(index = 8)] + #[doc = "See [`Pallet::void_spend`]."] + void_spend { index: ::core::primitive::u32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Error for the treasury pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Proposer's balance is too low."] + InsufficientProposersBalance, + #[codec(index = 1)] + #[doc = "No proposal, bounty or spend at that index."] + InvalidIndex, + #[codec(index = 2)] + #[doc = "Too many approvals in the queue."] + TooManyApprovals, + #[codec(index = 3)] + #[doc = "The spend origin is valid but the amount it is allowed to spend is lower than the"] + #[doc = "amount to be spent."] + InsufficientPermission, + #[codec(index = 4)] + #[doc = "Proposal has not been approved."] + ProposalNotApproved, + #[codec(index = 5)] + #[doc = "The balance of the asset kind is not convertible to the balance of the native asset."] + FailedToConvertBalance, + #[codec(index = 6)] + #[doc = "The spend has expired and cannot be claimed."] + SpendExpired, + #[codec(index = 7)] + #[doc = "The spend is not yet eligible for payout."] + EarlyPayout, + #[codec(index = 8)] + #[doc = "The payment has already been attempted."] + AlreadyAttempted, + #[codec(index = 9)] + #[doc = "There was some issue with the mechanism of payment."] + PayoutError, + #[codec(index = 10)] + #[doc = "The payout was not yet attempted/claimed."] + NotAttempted, + #[codec(index = 11)] + #[doc = "The payment has neither failed nor succeeded yet."] + Inconclusive, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "New proposal."] + Proposed { proposal_index: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "We have ended a spend period and will now allocate funds."] + Spending { budget_remaining: ::core::primitive::u128 }, + #[codec(index = 2)] + #[doc = "Some funds have been allocated."] + Awarded { + proposal_index: ::core::primitive::u32, + award: ::core::primitive::u128, + account: ::subxt::utils::AccountId32, + }, + #[codec(index = 3)] + #[doc = "A proposal was rejected; funds were slashed."] + Rejected { + proposal_index: ::core::primitive::u32, + slashed: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "Some of our funds have been burnt."] + Burnt { burnt_funds: ::core::primitive::u128 }, + #[codec(index = 5)] + #[doc = "Spending has finished; this is the amount that rolls over until next spend."] + Rollover { rollover_balance: ::core::primitive::u128 }, + #[codec(index = 6)] + #[doc = "Some funds have been deposited."] + Deposit { value: ::core::primitive::u128 }, + #[codec(index = 7)] + #[doc = "A new spend proposal has been approved."] + SpendApproved { + proposal_index: ::core::primitive::u32, + amount: ::core::primitive::u128, + beneficiary: ::subxt::utils::AccountId32, + }, + #[codec(index = 8)] + #[doc = "The inactive funds of the pallet have been updated."] + UpdatedInactive { + reactivated: ::core::primitive::u128, + deactivated: ::core::primitive::u128, + }, + #[codec(index = 9)] + #[doc = "A new asset spend proposal has been approved."] + AssetSpendApproved { + index: ::core::primitive::u32, + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + amount: ::core::primitive::u128, + beneficiary: runtime_types::xcm::VersionedMultiLocation, + valid_from: ::core::primitive::u32, + expire_at: ::core::primitive::u32, + }, + #[codec(index = 10)] + #[doc = "An approved spend was voided."] + AssetSpendVoided { index: ::core::primitive::u32 }, + #[codec(index = 11)] + #[doc = "A payment happened."] + Paid { index: ::core::primitive::u32, payment_id: ::core::primitive::u64 }, + #[codec(index = 12)] + #[doc = "A payment failed and can be retried."] + PaymentFailed { + index: ::core::primitive::u32, + payment_id: ::core::primitive::u64, + }, + #[codec(index = 13)] + #[doc = "A spend was processed and removed from the storage. It might have been successfully"] + #[doc = "paid or it may have expired."] + SpendProcessed { index: ::core::primitive::u32 }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum PaymentState<_0> { + #[codec(index = 0)] + Pending, + #[codec(index = 1)] + Attempted { id: _0 }, + #[codec(index = 2)] + Failed, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Proposal<_0, _1> { + pub proposer: _0, + pub value: _1, + pub beneficiary: _0, + pub bond: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SpendStatus<_0, _1, _2, _3, _4> { + pub asset_kind: _0, + pub amount: _1, + pub beneficiary: _2, + pub valid_from: _3, + pub expire_at: _3, + pub status: runtime_types::pallet_treasury::PaymentState<_4>, + } + } + pub mod pallet_utility { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::batch`]."] + batch { calls: ::std::vec::Vec }, + #[codec(index = 1)] + #[doc = "See [`Pallet::as_derivative`]."] + as_derivative { + index: ::core::primitive::u16, + call: ::std::boxed::Box, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::batch_all`]."] + batch_all { calls: ::std::vec::Vec }, + #[codec(index = 3)] + #[doc = "See [`Pallet::dispatch_as`]."] + dispatch_as { + as_origin: ::std::boxed::Box, + call: ::std::boxed::Box, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::force_batch`]."] + force_batch { + calls: ::std::vec::Vec, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::with_weight`]."] + with_weight { + call: ::std::boxed::Box, + weight: runtime_types::sp_weights::weight_v2::Weight, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Too many calls batched."] + TooManyCalls, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "Batch of dispatches did not complete fully. Index of first failing dispatch given, as"] + #[doc = "well as the error."] + BatchInterrupted { + index: ::core::primitive::u32, + error: runtime_types::sp_runtime::DispatchError, + }, + #[codec(index = 1)] + #[doc = "Batch of dispatches completed fully with no error."] + BatchCompleted, + #[codec(index = 2)] + #[doc = "Batch of dispatches completed but has errors."] + BatchCompletedWithErrors, + #[codec(index = 3)] + #[doc = "A single item within a Batch of dispatches has completed with no error."] + ItemCompleted, + #[codec(index = 4)] + #[doc = "A single item within a Batch of dispatches has completed with error."] + ItemFailed { error: runtime_types::sp_runtime::DispatchError }, + #[codec(index = 5)] + #[doc = "A call was dispatched."] + DispatchedAs { + result: + ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + }, + } + } + } + pub mod pallet_vesting { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::vest`]."] + vest, + #[codec(index = 1)] + #[doc = "See [`Pallet::vest_other`]."] + vest_other { + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::vested_transfer`]."] + vested_transfer { + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::force_vested_transfer`]."] + force_vested_transfer { + source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::merge_schedules`]."] + merge_schedules { + schedule1_index: ::core::primitive::u32, + schedule2_index: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Error for the vesting pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The account given is not vesting."] + NotVesting, + #[codec(index = 1)] + #[doc = "The account already has `MaxVestingSchedules` count of schedules and thus"] + #[doc = "cannot add another one. Consider merging existing schedules in order to add another."] + AtMaxVestingSchedules, + #[codec(index = 2)] + #[doc = "Amount being transferred is too low to create a vesting schedule."] + AmountLow, + #[codec(index = 3)] + #[doc = "An index was out of bounds of the vesting schedules."] + ScheduleIndexOutOfBounds, + #[codec(index = 4)] + #[doc = "Failed to create a new schedule because some parameter was invalid."] + InvalidScheduleParams, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The amount vested has been updated. This could indicate a change in funds available."] + #[doc = "The balance given is the amount which is left unvested (and thus locked)."] + VestingUpdated { + account: ::subxt::utils::AccountId32, + unvested: ::core::primitive::u128, + }, + #[codec(index = 1)] + #[doc = "An \\[account\\] has become fully vested."] + VestingCompleted { account: ::subxt::utils::AccountId32 }, + } + } + pub mod vesting_info { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VestingInfo<_0, _1> { + pub locked: _0, + pub per_block: _0, + pub starting_block: _1, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Releases { + #[codec(index = 0)] + V0, + #[codec(index = 1)] + V1, + } + } + pub mod pallet_whitelist { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::whitelist_call`]."] + whitelist_call { call_hash: ::subxt::utils::H256 }, + #[codec(index = 1)] + #[doc = "See [`Pallet::remove_whitelisted_call`]."] + remove_whitelisted_call { call_hash: ::subxt::utils::H256 }, + #[codec(index = 2)] + #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] + dispatch_whitelisted_call { + call_hash: ::subxt::utils::H256, + call_encoded_len: ::core::primitive::u32, + call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] + dispatch_whitelisted_call_with_preimage { + call: ::std::boxed::Box, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The preimage of the call hash could not be loaded."] + UnavailablePreImage, + #[codec(index = 1)] + #[doc = "The call could not be decoded."] + UndecodableCall, + #[codec(index = 2)] + #[doc = "The weight of the decoded call was higher than the witness."] + InvalidCallWeightWitness, + #[codec(index = 3)] + #[doc = "The call was not whitelisted."] + CallIsNotWhitelisted, + #[codec(index = 4)] + #[doc = "The call was already whitelisted; No-Op."] + CallAlreadyWhitelisted, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + CallWhitelisted { call_hash: ::subxt::utils::H256 }, + #[codec(index = 1)] + WhitelistedCallRemoved { call_hash: ::subxt::utils::H256 }, + #[codec(index = 2)] + WhitelistedCallDispatched { + call_hash: ::subxt::utils::H256, + result: ::core::result::Result< + runtime_types::frame_support::dispatch::PostDispatchInfo, + runtime_types::sp_runtime::DispatchErrorWithPostInfo< + runtime_types::frame_support::dispatch::PostDispatchInfo, + >, + >, + }, + } + } + } + pub mod pallet_xcm { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::send`]."] + send { + dest: ::std::boxed::Box, + message: ::std::boxed::Box, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::teleport_assets`]."] + teleport_assets { + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, + fee_asset_item: ::core::primitive::u32, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::reserve_transfer_assets`]."] + reserve_transfer_assets { + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, + fee_asset_item: ::core::primitive::u32, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::execute`]."] + execute { + message: ::std::boxed::Box, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::force_xcm_version`]."] + force_xcm_version { + location: ::std::boxed::Box< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + version: ::core::primitive::u32, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::force_default_xcm_version`]."] + force_default_xcm_version { + maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + force_subscribe_version_notify { + location: ::std::boxed::Box, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + force_unsubscribe_version_notify { + location: ::std::boxed::Box, + }, + #[codec(index = 8)] + #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + limited_reserve_transfer_assets { + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 9)] + #[doc = "See [`Pallet::limited_teleport_assets`]."] + limited_teleport_assets { + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 10)] + #[doc = "See [`Pallet::force_suspension`]."] + force_suspension { suspended: ::core::primitive::bool }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The desired destination was unreachable, generally because there is a no way of routing"] + #[doc = "to it."] + Unreachable, + #[codec(index = 1)] + #[doc = "There was some other issue (i.e. not to do with routing) in sending the message."] + #[doc = "Perhaps a lack of space for buffering the message."] + SendFailure, + #[codec(index = 2)] + #[doc = "The message execution fails the filter."] + Filtered, + #[codec(index = 3)] + #[doc = "The message's weight could not be determined."] + UnweighableMessage, + #[codec(index = 4)] + #[doc = "The destination `MultiLocation` provided cannot be inverted."] + DestinationNotInvertible, + #[codec(index = 5)] + #[doc = "The assets to be sent are empty."] + Empty, + #[codec(index = 6)] + #[doc = "Could not re-anchor the assets to declare the fees for the destination chain."] + CannotReanchor, + #[codec(index = 7)] + #[doc = "Too many assets have been attempted for transfer."] + TooManyAssets, + #[codec(index = 8)] + #[doc = "Origin is invalid for sending."] + InvalidOrigin, + #[codec(index = 9)] + #[doc = "The version of the `Versioned` value used is not able to be interpreted."] + BadVersion, + #[codec(index = 10)] + #[doc = "The given location could not be used (e.g. because it cannot be expressed in the"] + #[doc = "desired version of XCM)."] + BadLocation, + #[codec(index = 11)] + #[doc = "The referenced subscription could not be found."] + NoSubscription, + #[codec(index = 12)] + #[doc = "The location is invalid since it already has a subscription from us."] + AlreadySubscribed, + #[codec(index = 13)] + #[doc = "Invalid asset for the operation."] + InvalidAsset, + #[codec(index = 14)] + #[doc = "The owner does not own (all) of the asset that they wish to do the operation on."] + LowBalance, + #[codec(index = 15)] + #[doc = "The asset owner has too many locks on the asset."] + TooManyLocks, + #[codec(index = 16)] + #[doc = "The given account is not an identifiable sovereign account for any location."] + AccountNotSovereign, + #[codec(index = 17)] + #[doc = "The operation required fees to be paid which the initiator could not meet."] + FeesNotMet, + #[codec(index = 18)] + #[doc = "A remote lock with the corresponding data could not be found."] + LockNotFound, + #[codec(index = 19)] + #[doc = "The unlock operation cannot succeed because there are still consumers of the lock."] + InUse, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "Execution of an XCM message was attempted."] + Attempted { outcome: runtime_types::xcm::v3::traits::Outcome }, + #[codec(index = 1)] + #[doc = "A XCM message was sent."] + Sent { + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + message: runtime_types::xcm::v3::Xcm, + message_id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + #[doc = "Query response received which does not match a registered query. This may be because a"] + #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] + #[doc = "because the query timed out."] + UnexpectedResponse { + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + }, + #[codec(index = 3)] + #[doc = "Query response has been received and is ready for taking with `take_response`. There is"] + #[doc = "no registered notification call."] + ResponseReady { + query_id: ::core::primitive::u64, + response: runtime_types::xcm::v3::Response, + }, + #[codec(index = 4)] + #[doc = "Query response has been received and query is removed. The registered notification has"] + #[doc = "been dispatched and executed successfully."] + Notified { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + }, + #[codec(index = 5)] + #[doc = "Query response has been received and query is removed. The registered notification"] + #[doc = "could not be dispatched because the dispatch weight is greater than the maximum weight"] + #[doc = "originally budgeted by this runtime for the query result."] + NotifyOverweight { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + actual_weight: runtime_types::sp_weights::weight_v2::Weight, + max_budgeted_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 6)] + #[doc = "Query response has been received and query is removed. There was a general error with"] + #[doc = "dispatching the notification call."] + NotifyDispatchError { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + }, + #[codec(index = 7)] + #[doc = "Query response has been received and query is removed. The dispatch was unable to be"] + #[doc = "decoded into a `Call`; this might be due to dispatch function having a signature which"] + #[doc = "is not `(origin, QueryId, Response)`."] + NotifyDecodeFailed { + query_id: ::core::primitive::u64, + pallet_index: ::core::primitive::u8, + call_index: ::core::primitive::u8, + }, + #[codec(index = 8)] + #[doc = "Expected query response has been received but the origin location of the response does"] + #[doc = "not match that expected. The query remains registered for a later, valid, response to"] + #[doc = "be received and acted upon."] + InvalidResponder { + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + expected_location: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + }, + #[codec(index = 9)] + #[doc = "Expected query response has been received but the expected origin location placed in"] + #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] + #[doc = ""] + #[doc = "This is unexpected (since a location placed in storage in a previously executing"] + #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] + #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] + #[doc = "needed."] + InvalidResponderVersion { + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + }, + #[codec(index = 10)] + #[doc = "Received query response has been read and removed."] + ResponseTaken { query_id: ::core::primitive::u64 }, + #[codec(index = 11)] + #[doc = "Some assets have been placed in an asset trap."] + AssetsTrapped { + hash: ::subxt::utils::H256, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + }, + #[codec(index = 12)] + #[doc = "An XCM version change notification message has been attempted to be sent."] + #[doc = ""] + #[doc = "The cost of sending it (borne by the chain) is included."] + VersionChangeNotified { + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + result: ::core::primitive::u32, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 13)] + #[doc = "The supported version of a location has been changed. This might be through an"] + #[doc = "automatic notification or a manual intervention."] + SupportedVersionChanged { + location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + version: ::core::primitive::u32, + }, + #[codec(index = 14)] + #[doc = "A given location which had a version change subscription was dropped owing to an error"] + #[doc = "sending the notification to it."] + NotifyTargetSendFail { + location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + error: runtime_types::xcm::v3::traits::Error, + }, + #[codec(index = 15)] + #[doc = "A given location which had a version change subscription was dropped owing to an error"] + #[doc = "migrating the location to our new XCM format."] + NotifyTargetMigrationFail { + location: runtime_types::xcm::VersionedMultiLocation, + query_id: ::core::primitive::u64, + }, + #[codec(index = 16)] + #[doc = "Expected query response has been received but the expected querier location placed in"] + #[doc = "storage by this runtime previously cannot be decoded. The query remains registered."] + #[doc = ""] + #[doc = "This is unexpected (since a location placed in storage in a previously executing"] + #[doc = "runtime should be readable prior to query timeout) and dangerous since the possibly"] + #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] + #[doc = "needed."] + InvalidQuerierVersion { + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + }, + #[codec(index = 17)] + #[doc = "Expected query response has been received but the querier location of the response does"] + #[doc = "not match the expected. The query remains registered for a later, valid, response to"] + #[doc = "be received and acted upon."] + InvalidQuerier { + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + query_id: ::core::primitive::u64, + expected_querier: + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + maybe_actual_querier: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + }, + #[codec(index = 18)] + #[doc = "A remote has requested XCM version change notification from us and we have honored it."] + #[doc = "A version information message is sent to them and its cost is included."] + VersionNotifyStarted { + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 19)] + #[doc = "We have requested that a remote chain send us XCM version change notifications."] + VersionNotifyRequested { + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 20)] + #[doc = "We have requested that a remote chain stops sending us XCM version change"] + #[doc = "notifications."] + VersionNotifyUnrequested { + destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + cost: runtime_types::xcm::v3::multiasset::MultiAssets, + message_id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 21)] + #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] + FeesPaid { + paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + fees: runtime_types::xcm::v3::multiasset::MultiAssets, + }, + #[codec(index = 22)] + #[doc = "Some assets have been claimed from an asset trap"] + AssetsClaimed { + hash: ::subxt::utils::H256, + origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + assets: runtime_types::xcm::VersionedMultiAssets, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Origin { + #[codec(index = 0)] + Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 1)] + Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum QueryStatus<_0> { + #[codec(index = 0)] + Pending { + responder: runtime_types::xcm::VersionedMultiLocation, + maybe_match_querier: + ::core::option::Option, + maybe_notify: + ::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>, + timeout: _0, + }, + #[codec(index = 1)] + VersionNotifier { + origin: runtime_types::xcm::VersionedMultiLocation, + is_active: ::core::primitive::bool, + }, + #[codec(index = 2)] + Ready { response: runtime_types::xcm::VersionedResponse, at: _0 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoteLockedFungibleRecord<_0> { + pub amount: ::core::primitive::u128, + pub owner: runtime_types::xcm::VersionedMultiLocation, + pub locker: runtime_types::xcm::VersionedMultiLocation, + pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + _0, + ::core::primitive::u128, + )>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionMigrationStage { + #[codec(index = 0)] + MigrateSupportedVersion, + #[codec(index = 1)] + MigrateVersionNotifiers, + #[codec(index = 2)] + NotifyCurrentTargets( + ::core::option::Option<::std::vec::Vec<::core::primitive::u8>>, + ), + #[codec(index = 3)] + MigrateAndNotifyOldTargets, + } + } + } + pub mod paseo_runtime { + use super::runtime_types; + pub mod governance { + use super::runtime_types; + pub mod origins { + use super::runtime_types; + pub mod pallet_custom_origins { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Origin { + #[codec(index = 0)] + StakingAdmin, + #[codec(index = 1)] + Treasurer, + #[codec(index = 2)] + FellowshipAdmin, + #[codec(index = 3)] + GeneralAdmin, + #[codec(index = 4)] + AuctionAdmin, + #[codec(index = 5)] + LeaseAdmin, + #[codec(index = 6)] + ReferendumCanceller, + #[codec(index = 7)] + ReferendumKiller, + #[codec(index = 8)] + SmallTipper, + #[codec(index = 9)] + BigTipper, + #[codec(index = 10)] + SmallSpender, + #[codec(index = 11)] + MediumSpender, + #[codec(index = 12)] + BigSpender, + #[codec(index = 13)] + WhitelistedCaller, + } + } + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NposCompactSolution16 { + pub votes1: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes2: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + ( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ), + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes3: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 2usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes4: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 3usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes5: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 4usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes6: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 5usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes7: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 6usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes8: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 7usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes9: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 8usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes10: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 9usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes11: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 10usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes12: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 11usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes13: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 12usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes14: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 13usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes15: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 14usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + pub votes16: ::std::vec::Vec<( + ::subxt::ext::codec::Compact<::core::primitive::u32>, + [( + ::subxt::ext::codec::Compact<::core::primitive::u16>, + ::subxt::ext::codec::Compact< + runtime_types::sp_arithmetic::per_things::PerU16, + >, + ); 15usize], + ::subxt::ext::codec::Compact<::core::primitive::u16>, + )>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum OriginCaller { + # [codec (index = 0)] system (runtime_types :: frame_support :: dispatch :: RawOrigin < :: subxt :: utils :: AccountId32 > ,) , # [codec (index = 22)] Origins (runtime_types :: paseo_runtime :: governance :: origins :: pallet_custom_origins :: Origin ,) , # [codec (index = 50)] ParachainsOrigin (runtime_types :: polkadot_runtime_parachains :: origin :: pallet :: Origin ,) , # [codec (index = 99)] XcmPallet (runtime_types :: pallet_xcm :: pallet :: Origin ,) , # [codec (index = 4)] Void (runtime_types :: sp_core :: Void ,) , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ProxyType { + #[codec(index = 0)] + Any, + #[codec(index = 1)] + NonTransfer, + #[codec(index = 2)] + Governance, + #[codec(index = 3)] + Staking, + #[codec(index = 5)] + IdentityJudgement, + #[codec(index = 6)] + CancelProxy, + #[codec(index = 7)] + Auction, + #[codec(index = 8)] + NominationPools, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Runtime; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RuntimeCall { + #[codec(index = 0)] + System(runtime_types::frame_system::pallet::Call), + #[codec(index = 1)] + Scheduler(runtime_types::pallet_scheduler::pallet::Call), + #[codec(index = 10)] + Preimage(runtime_types::pallet_preimage::pallet::Call), + #[codec(index = 2)] + Babe(runtime_types::pallet_babe::pallet::Call), + #[codec(index = 3)] + Timestamp(runtime_types::pallet_timestamp::pallet::Call), + #[codec(index = 4)] + Indices(runtime_types::pallet_indices::pallet::Call), + #[codec(index = 5)] + Balances(runtime_types::pallet_balances::pallet::Call), + #[codec(index = 7)] + Staking(runtime_types::pallet_staking::pallet::pallet::Call), + #[codec(index = 9)] + Session(runtime_types::pallet_session::pallet::Call), + #[codec(index = 11)] + Grandpa(runtime_types::pallet_grandpa::pallet::Call), + #[codec(index = 12)] + ImOnline(runtime_types::pallet_im_online::pallet::Call), + #[codec(index = 19)] + Treasury(runtime_types::pallet_treasury::pallet::Call), + #[codec(index = 20)] + ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Call), + #[codec(index = 21)] + Referenda(runtime_types::pallet_referenda::pallet::Call), + #[codec(index = 23)] + Whitelist(runtime_types::pallet_whitelist::pallet::Call), + #[codec(index = 24)] + Claims(runtime_types::polkadot_runtime_common::claims::pallet::Call), + #[codec(index = 25)] + Vesting(runtime_types::pallet_vesting::pallet::Call), + #[codec(index = 26)] + Utility(runtime_types::pallet_utility::pallet::Call), + #[codec(index = 28)] + Identity(runtime_types::pallet_identity::pallet::Call), + #[codec(index = 29)] + Proxy(runtime_types::pallet_proxy::pallet::Call), + #[codec(index = 30)] + Multisig(runtime_types::pallet_multisig::pallet::Call), + #[codec(index = 34)] + Bounties(runtime_types::pallet_bounties::pallet::Call), + #[codec(index = 38)] + ChildBounties(runtime_types::pallet_child_bounties::pallet::Call), + #[codec(index = 36)] + ElectionProviderMultiPhase( + runtime_types::pallet_election_provider_multi_phase::pallet::Call, + ), + #[codec(index = 37)] + VoterList(runtime_types::pallet_bags_list::pallet::Call), + #[codec(index = 39)] + NominationPools(runtime_types::pallet_nomination_pools::pallet::Call), + #[codec(index = 40)] + FastUnstake(runtime_types::pallet_fast_unstake::pallet::Call), + #[codec(index = 51)] + Configuration( + runtime_types::polkadot_runtime_parachains::configuration::pallet::Call, + ), + #[codec(index = 52)] + ParasShared(runtime_types::polkadot_runtime_parachains::shared::pallet::Call), + #[codec(index = 53)] + ParaInclusion(runtime_types::polkadot_runtime_parachains::inclusion::pallet::Call), + #[codec(index = 54)] + ParaInherent( + runtime_types::polkadot_runtime_parachains::paras_inherent::pallet::Call, + ), + #[codec(index = 56)] + Paras(runtime_types::polkadot_runtime_parachains::paras::pallet::Call), + #[codec(index = 57)] + Initializer(runtime_types::polkadot_runtime_parachains::initializer::pallet::Call), + #[codec(index = 60)] + Hrmp(runtime_types::polkadot_runtime_parachains::hrmp::pallet::Call), + #[codec(index = 62)] + ParasDisputes(runtime_types::polkadot_runtime_parachains::disputes::pallet::Call), + #[codec(index = 63)] + ParasSlashing( + runtime_types::polkadot_runtime_parachains::disputes::slashing::pallet::Call, + ), + #[codec(index = 70)] + Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Call), + #[codec(index = 71)] + Slots(runtime_types::polkadot_runtime_common::slots::pallet::Call), + #[codec(index = 72)] + Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Call), + #[codec(index = 73)] + Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Call), + #[codec(index = 99)] + XcmPallet(runtime_types::pallet_xcm::pallet::Call), + #[codec(index = 100)] + MessageQueue(runtime_types::pallet_message_queue::pallet::Call), + #[codec(index = 101)] + AssetRate(runtime_types::pallet_asset_rate::pallet::Call), + #[codec(index = 200)] + Beefy(runtime_types::pallet_beefy::pallet::Call), + #[codec(index = 250)] + ParaSudoWrapper( + runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Call, + ), + #[codec(index = 255)] + Sudo(runtime_types::pallet_sudo::pallet::Call), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RuntimeError { + #[codec(index = 0)] + System(runtime_types::frame_system::pallet::Error), + #[codec(index = 1)] + Scheduler(runtime_types::pallet_scheduler::pallet::Error), + #[codec(index = 10)] + Preimage(runtime_types::pallet_preimage::pallet::Error), + #[codec(index = 2)] + Babe(runtime_types::pallet_babe::pallet::Error), + #[codec(index = 4)] + Indices(runtime_types::pallet_indices::pallet::Error), + #[codec(index = 5)] + Balances(runtime_types::pallet_balances::pallet::Error), + #[codec(index = 7)] + Staking(runtime_types::pallet_staking::pallet::pallet::Error), + #[codec(index = 9)] + Session(runtime_types::pallet_session::pallet::Error), + #[codec(index = 11)] + Grandpa(runtime_types::pallet_grandpa::pallet::Error), + #[codec(index = 12)] + ImOnline(runtime_types::pallet_im_online::pallet::Error), + #[codec(index = 19)] + Treasury(runtime_types::pallet_treasury::pallet::Error), + #[codec(index = 20)] + ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Error), + #[codec(index = 21)] + Referenda(runtime_types::pallet_referenda::pallet::Error), + #[codec(index = 23)] + Whitelist(runtime_types::pallet_whitelist::pallet::Error), + #[codec(index = 24)] + Claims(runtime_types::polkadot_runtime_common::claims::pallet::Error), + #[codec(index = 25)] + Vesting(runtime_types::pallet_vesting::pallet::Error), + #[codec(index = 26)] + Utility(runtime_types::pallet_utility::pallet::Error), + #[codec(index = 28)] + Identity(runtime_types::pallet_identity::pallet::Error), + #[codec(index = 29)] + Proxy(runtime_types::pallet_proxy::pallet::Error), + #[codec(index = 30)] + Multisig(runtime_types::pallet_multisig::pallet::Error), + #[codec(index = 34)] + Bounties(runtime_types::pallet_bounties::pallet::Error), + #[codec(index = 38)] + ChildBounties(runtime_types::pallet_child_bounties::pallet::Error), + #[codec(index = 36)] + ElectionProviderMultiPhase( + runtime_types::pallet_election_provider_multi_phase::pallet::Error, + ), + #[codec(index = 37)] + VoterList(runtime_types::pallet_bags_list::pallet::Error), + #[codec(index = 39)] + NominationPools(runtime_types::pallet_nomination_pools::pallet::Error), + #[codec(index = 40)] + FastUnstake(runtime_types::pallet_fast_unstake::pallet::Error), + #[codec(index = 51)] + Configuration( + runtime_types::polkadot_runtime_parachains::configuration::pallet::Error, + ), + #[codec(index = 53)] + ParaInclusion(runtime_types::polkadot_runtime_parachains::inclusion::pallet::Error), + #[codec(index = 54)] + ParaInherent( + runtime_types::polkadot_runtime_parachains::paras_inherent::pallet::Error, + ), + #[codec(index = 56)] + Paras(runtime_types::polkadot_runtime_parachains::paras::pallet::Error), + #[codec(index = 60)] + Hrmp(runtime_types::polkadot_runtime_parachains::hrmp::pallet::Error), + #[codec(index = 62)] + ParasDisputes(runtime_types::polkadot_runtime_parachains::disputes::pallet::Error), + #[codec(index = 63)] + ParasSlashing( + runtime_types::polkadot_runtime_parachains::disputes::slashing::pallet::Error, + ), + #[codec(index = 70)] + Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error), + #[codec(index = 71)] + Slots(runtime_types::polkadot_runtime_common::slots::pallet::Error), + #[codec(index = 72)] + Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Error), + #[codec(index = 73)] + Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Error), + #[codec(index = 99)] + XcmPallet(runtime_types::pallet_xcm::pallet::Error), + #[codec(index = 100)] + MessageQueue(runtime_types::pallet_message_queue::pallet::Error), + #[codec(index = 101)] + AssetRate(runtime_types::pallet_asset_rate::pallet::Error), + #[codec(index = 200)] + Beefy(runtime_types::pallet_beefy::pallet::Error), + #[codec(index = 250)] + ParaSudoWrapper( + runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Error, + ), + #[codec(index = 255)] + Sudo(runtime_types::pallet_sudo::pallet::Error), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RuntimeEvent { + #[codec(index = 0)] + System(runtime_types::frame_system::pallet::Event), + #[codec(index = 1)] + Scheduler(runtime_types::pallet_scheduler::pallet::Event), + #[codec(index = 10)] + Preimage(runtime_types::pallet_preimage::pallet::Event), + #[codec(index = 4)] + Indices(runtime_types::pallet_indices::pallet::Event), + #[codec(index = 5)] + Balances(runtime_types::pallet_balances::pallet::Event), + #[codec(index = 32)] + TransactionPayment(runtime_types::pallet_transaction_payment::pallet::Event), + #[codec(index = 7)] + Staking(runtime_types::pallet_staking::pallet::pallet::Event), + #[codec(index = 8)] + Offences(runtime_types::pallet_offences::pallet::Event), + #[codec(index = 9)] + Session(runtime_types::pallet_session::pallet::Event), + #[codec(index = 11)] + Grandpa(runtime_types::pallet_grandpa::pallet::Event), + #[codec(index = 12)] + ImOnline(runtime_types::pallet_im_online::pallet::Event), + #[codec(index = 19)] + Treasury(runtime_types::pallet_treasury::pallet::Event), + #[codec(index = 20)] + ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Event), + #[codec(index = 21)] + Referenda(runtime_types::pallet_referenda::pallet::Event), + #[codec(index = 23)] + Whitelist(runtime_types::pallet_whitelist::pallet::Event), + #[codec(index = 24)] + Claims(runtime_types::polkadot_runtime_common::claims::pallet::Event), + #[codec(index = 25)] + Vesting(runtime_types::pallet_vesting::pallet::Event), + #[codec(index = 26)] + Utility(runtime_types::pallet_utility::pallet::Event), + #[codec(index = 28)] + Identity(runtime_types::pallet_identity::pallet::Event), + #[codec(index = 29)] + Proxy(runtime_types::pallet_proxy::pallet::Event), + #[codec(index = 30)] + Multisig(runtime_types::pallet_multisig::pallet::Event), + #[codec(index = 34)] + Bounties(runtime_types::pallet_bounties::pallet::Event), + #[codec(index = 38)] + ChildBounties(runtime_types::pallet_child_bounties::pallet::Event), + #[codec(index = 36)] + ElectionProviderMultiPhase( + runtime_types::pallet_election_provider_multi_phase::pallet::Event, + ), + #[codec(index = 37)] + VoterList(runtime_types::pallet_bags_list::pallet::Event), + #[codec(index = 39)] + NominationPools(runtime_types::pallet_nomination_pools::pallet::Event), + #[codec(index = 40)] + FastUnstake(runtime_types::pallet_fast_unstake::pallet::Event), + #[codec(index = 53)] + ParaInclusion(runtime_types::polkadot_runtime_parachains::inclusion::pallet::Event), + #[codec(index = 56)] + Paras(runtime_types::polkadot_runtime_parachains::paras::pallet::Event), + #[codec(index = 60)] + Hrmp(runtime_types::polkadot_runtime_parachains::hrmp::pallet::Event), + #[codec(index = 62)] + ParasDisputes(runtime_types::polkadot_runtime_parachains::disputes::pallet::Event), + #[codec(index = 70)] + Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Event), + #[codec(index = 71)] + Slots(runtime_types::polkadot_runtime_common::slots::pallet::Event), + #[codec(index = 72)] + Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Event), + #[codec(index = 73)] + Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Event), + #[codec(index = 99)] + XcmPallet(runtime_types::pallet_xcm::pallet::Event), + #[codec(index = 100)] + MessageQueue(runtime_types::pallet_message_queue::pallet::Event), + #[codec(index = 101)] + AssetRate(runtime_types::pallet_asset_rate::pallet::Event), + #[codec(index = 255)] + Sudo(runtime_types::pallet_sudo::pallet::Event), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RuntimeFreezeReason { + #[codec(index = 39)] + NominationPools(runtime_types::pallet_nomination_pools::pallet::FreezeReason), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RuntimeHoldReason { + #[codec(index = 10)] + Preimage(runtime_types::pallet_preimage::pallet::HoldReason), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SessionKeys { + pub grandpa: runtime_types::sp_consensus_grandpa::app::Public, + pub babe: runtime_types::sp_consensus_babe::app::Public, + pub im_online: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + pub para_validator: runtime_types::polkadot_primitives::v6::validator_app::Public, + pub para_assignment: runtime_types::polkadot_primitives::v6::assignment_app::Public, + pub authority_discovery: runtime_types::sp_authority_discovery::app::Public, + pub beefy: runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + } + } + pub mod polkadot_core_primitives { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidateHash(pub ::subxt::utils::H256); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InboundDownwardMessage<_0> { + pub sent_at: _0, + pub msg: ::std::vec::Vec<::core::primitive::u8>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InboundHrmpMessage<_0> { + pub sent_at: _0, + pub data: ::std::vec::Vec<::core::primitive::u8>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OutboundHrmpMessage<_0> { + pub recipient: _0, + pub data: ::std::vec::Vec<::core::primitive::u8>, + } + } + pub mod polkadot_parachain_primitives { + use super::runtime_types; + pub mod primitives { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HeadData(pub ::std::vec::Vec<::core::primitive::u8>); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HrmpChannelId { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Id(pub ::core::primitive::u32); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidationCode(pub ::std::vec::Vec<::core::primitive::u8>); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidationCodeHash(pub ::subxt::utils::H256); + } + } + pub mod polkadot_primitives { + use super::runtime_types; + pub mod v6 { + use super::runtime_types; + pub mod assignment_app { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::sr25519::Public); + } + pub mod async_backing { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AsyncBackingParams { + pub max_candidate_depth: ::core::primitive::u32, + pub allowed_ancestry_len: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BackingState < _0 , _1 > { pub constraints : runtime_types :: polkadot_primitives :: v6 :: async_backing :: Constraints < _1 > , pub pending_availability : :: std :: vec :: Vec < runtime_types :: polkadot_primitives :: v6 :: async_backing :: CandidatePendingAvailability < _0 , _1 > > , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidatePendingAvailability<_0, _1> { + pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, + pub descriptor: + runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + pub commitments: + runtime_types::polkadot_primitives::v6::CandidateCommitments<_1>, + pub relay_parent_number: _1, + pub max_pov_size: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Constraints < _0 > { pub min_relay_parent_number : _0 , pub max_pov_size : :: core :: primitive :: u32 , pub max_code_size : :: core :: primitive :: u32 , pub ump_remaining : :: core :: primitive :: u32 , pub ump_remaining_bytes : :: core :: primitive :: u32 , pub max_ump_num_per_candidate : :: core :: primitive :: u32 , pub dmp_remaining_messages : :: std :: vec :: Vec < _0 > , pub hrmp_inbound : runtime_types :: polkadot_primitives :: v6 :: async_backing :: InboundHrmpLimitations < _0 > , pub hrmp_channels_out : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: async_backing :: OutboundHrmpChannelLimitations ,) > , pub max_hrmp_num_per_candidate : :: core :: primitive :: u32 , pub required_parent : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub upgrade_restriction : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeRestriction > , pub future_validation_code : :: core :: option :: Option < (_0 , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InboundHrmpLimitations<_0> { + pub valid_watermarks: ::std::vec::Vec<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OutboundHrmpChannelLimitations { + pub bytes_remaining: ::core::primitive::u32, + pub messages_remaining: ::core::primitive::u32, + } + } + pub mod collator_app { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::sr25519::Public); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + } + pub mod executor_params { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ExecutorParam { + #[codec(index = 1)] + MaxMemoryPages(::core::primitive::u32), + #[codec(index = 2)] + StackLogicalMax(::core::primitive::u32), + #[codec(index = 3)] + StackNativeMax(::core::primitive::u32), + #[codec(index = 4)] + PrecheckingMaxMemory(::core::primitive::u64), + #[codec(index = 5)] + PvfPrepTimeout( + runtime_types::polkadot_primitives::v6::PvfPrepTimeoutKind, + ::core::primitive::u64, + ), + #[codec(index = 6)] + PvfExecTimeout( + runtime_types::polkadot_primitives::v6::PvfExecTimeoutKind, + ::core::primitive::u64, + ), + #[codec(index = 7)] + WasmExtBulkMemory, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ExecutorParams( + pub ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::executor_params::ExecutorParam, + >, + ); + } + pub mod signed { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct UncheckedSigned<_0, _1> { + pub payload: _0, + pub validator_index: runtime_types::polkadot_primitives::v6::ValidatorIndex, + pub signature: + runtime_types::polkadot_primitives::v6::validator_app::Signature, + #[codec(skip)] + pub __subxt_unused_type_params: ::core::marker::PhantomData<_1>, + } + } + pub mod slashing { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisputeProof { + pub time_slot: + runtime_types::polkadot_primitives::v6::slashing::DisputesTimeSlot, + pub kind: + runtime_types::polkadot_primitives::v6::slashing::SlashingOffenceKind, + pub validator_index: runtime_types::polkadot_primitives::v6::ValidatorIndex, + pub validator_id: + runtime_types::polkadot_primitives::v6::validator_app::Public, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisputesTimeSlot { + pub session_index: ::core::primitive::u32, + pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PendingSlashes { + pub keys: ::subxt::utils::KeyedVec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v6::validator_app::Public, + >, + pub kind: + runtime_types::polkadot_primitives::v6::slashing::SlashingOffenceKind, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum SlashingOffenceKind { + #[codec(index = 0)] + ForInvalid, + #[codec(index = 1)] + AgainstValid, + } + } + pub mod validator_app { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::sr25519::Public); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AvailabilityBitfield( + pub ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BackedCandidate<_0> { + pub candidate: + runtime_types::polkadot_primitives::v6::CommittedCandidateReceipt<_0>, + pub validity_votes: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::ValidityAttestation, + >, + pub validator_indices: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidateCommitments<_0> { + pub upward_messages: + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::std::vec::Vec<::core::primitive::u8>, + >, + pub horizontal_messages: + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::polkadot_core_primitives::OutboundHrmpMessage< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + >, + pub new_validation_code: ::core::option::Option< + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + >, + pub head_data: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub processed_downward_messages: ::core::primitive::u32, + pub hrmp_watermark: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidateDescriptor < _0 > { pub para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , pub relay_parent : _0 , pub collator : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Public , pub persisted_validation_data_hash : :: subxt :: utils :: H256 , pub pov_hash : :: subxt :: utils :: H256 , pub erasure_root : :: subxt :: utils :: H256 , pub signature : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Signature , pub para_head : :: subxt :: utils :: H256 , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum CandidateEvent<_0> { + #[codec(index = 0)] + CandidateBacked( + runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + runtime_types::polkadot_primitives::v6::CoreIndex, + runtime_types::polkadot_primitives::v6::GroupIndex, + ), + #[codec(index = 1)] + CandidateIncluded( + runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + runtime_types::polkadot_primitives::v6::CoreIndex, + runtime_types::polkadot_primitives::v6::GroupIndex, + ), + #[codec(index = 2)] + CandidateTimedOut( + runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + runtime_types::polkadot_primitives::v6::CoreIndex, + ), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidateReceipt<_0> { + pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + pub commitments_hash: ::subxt::utils::H256, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CommittedCandidateReceipt<_0> { + pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + pub commitments: runtime_types::polkadot_primitives::v6::CandidateCommitments< + ::core::primitive::u32, + >, + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CoreIndex(pub ::core::primitive::u32); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum CoreState<_0, _1> { + #[codec(index = 0)] + Occupied(runtime_types::polkadot_primitives::v6::OccupiedCore<_0, _1>), + #[codec(index = 1)] + Scheduled(runtime_types::polkadot_primitives::v6::ScheduledCore), + #[codec(index = 2)] + Free, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisputeState<_0> { + pub validators_for: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub validators_against: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub start: _0, + pub concluded_at: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DisputeStatement { + #[codec(index = 0)] + Valid(runtime_types::polkadot_primitives::v6::ValidDisputeStatementKind), + #[codec(index = 1)] + Invalid(runtime_types::polkadot_primitives::v6::InvalidDisputeStatementKind), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisputeStatementSet { + pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, + pub session: ::core::primitive::u32, + pub statements: ::std::vec::Vec<( + runtime_types::polkadot_primitives::v6::DisputeStatement, + runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v6::validator_app::Signature, + )>, + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GroupIndex(pub ::core::primitive::u32); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct GroupRotationInfo<_0> { + pub session_start_block: _0, + pub group_rotation_frequency: _0, + pub now: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct IndexedVec<_0, _1>( + pub ::std::vec::Vec<_1>, + #[codec(skip)] pub ::core::marker::PhantomData<_0>, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InherentData<_0> { + pub bitfields: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::signed::UncheckedSigned< + runtime_types::polkadot_primitives::v6::AvailabilityBitfield, + runtime_types::polkadot_primitives::v6::AvailabilityBitfield, + >, + >, + pub backed_candidates: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::BackedCandidate< + ::subxt::utils::H256, + >, + >, + pub disputes: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::DisputeStatementSet, + >, + pub parent_header: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum InvalidDisputeStatementKind { + #[codec(index = 0)] + Explicit, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OccupiedCore<_0, _1> { + pub next_up_on_available: ::core::option::Option< + runtime_types::polkadot_primitives::v6::ScheduledCore, + >, + pub occupied_since: _1, + pub time_out_at: _1, + pub next_up_on_time_out: ::core::option::Option< + runtime_types::polkadot_primitives::v6::ScheduledCore, + >, + pub availability: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub group_responsible: runtime_types::polkadot_primitives::v6::GroupIndex, + pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, + pub candidate_descriptor: + runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum OccupiedCoreAssumption { + #[codec(index = 0)] + Included, + #[codec(index = 1)] + TimedOut, + #[codec(index = 2)] + Free, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PersistedValidationData<_0, _1> { + pub parent_head: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub relay_parent_number: _1, + pub relay_parent_storage_root: _0, + pub max_pov_size: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PvfCheckStatement { pub accept : :: core :: primitive :: bool , pub subject : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub session_index : :: core :: primitive :: u32 , pub validator_index : runtime_types :: polkadot_primitives :: v6 :: ValidatorIndex , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum PvfExecTimeoutKind { + #[codec(index = 0)] + Backing, + #[codec(index = 1)] + Approval, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum PvfPrepTimeoutKind { + #[codec(index = 0)] + Precheck, + #[codec(index = 1)] + Lenient, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ScheduledCore { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub collator: ::core::option::Option< + runtime_types::polkadot_primitives::v6::collator_app::Public, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ScrapedOnChainVotes<_0> { + pub session: ::core::primitive::u32, + pub backing_validators_per_candidate: ::std::vec::Vec<( + runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + ::std::vec::Vec<( + runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v6::ValidityAttestation, + )>, + )>, + pub disputes: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::DisputeStatementSet, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SessionInfo { + pub active_validator_indices: + ::std::vec::Vec, + pub random_seed: [::core::primitive::u8; 32usize], + pub dispute_period: ::core::primitive::u32, + pub validators: runtime_types::polkadot_primitives::v6::IndexedVec< + runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v6::validator_app::Public, + >, + pub discovery_keys: + ::std::vec::Vec, + pub assignment_keys: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::assignment_app::Public, + >, + pub validator_groups: runtime_types::polkadot_primitives::v6::IndexedVec< + runtime_types::polkadot_primitives::v6::GroupIndex, + ::std::vec::Vec, + >, + pub n_cores: ::core::primitive::u32, + pub zeroth_delay_tranche_width: ::core::primitive::u32, + pub relay_vrf_modulo_samples: ::core::primitive::u32, + pub n_delay_tranches: ::core::primitive::u32, + pub no_show_slots: ::core::primitive::u32, + pub needed_approvals: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum UpgradeGoAhead { + #[codec(index = 0)] + Abort, + #[codec(index = 1)] + GoAhead, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum UpgradeRestriction { + #[codec(index = 0)] + Present, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ValidDisputeStatementKind { + #[codec(index = 0)] + Explicit, + #[codec(index = 1)] + BackingSeconded(::subxt::utils::H256), + #[codec(index = 2)] + BackingValid(::subxt::utils::H256), + #[codec(index = 3)] + ApprovalChecking, + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidatorIndex(pub ::core::primitive::u32); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ValidityAttestation { + #[codec(index = 1)] + Implicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), + #[codec(index = 2)] + Explicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), + } + } + } + pub mod polkadot_runtime_common { + use super::runtime_types; + pub mod auctions { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::new_auction`]."] + new_auction { + #[codec(compact)] + duration: ::core::primitive::u32, + #[codec(compact)] + lease_period_index: ::core::primitive::u32, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::bid`]."] + bid { + #[codec(compact)] + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + auction_index: ::core::primitive::u32, + #[codec(compact)] + first_slot: ::core::primitive::u32, + #[codec(compact)] + last_slot: ::core::primitive::u32, + #[codec(compact)] + amount: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::cancel_auction`]."] + cancel_auction, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "This auction is already in progress."] + AuctionInProgress, + #[codec(index = 1)] + #[doc = "The lease period is in the past."] + LeasePeriodInPast, + #[codec(index = 2)] + #[doc = "Para is not registered"] + ParaNotRegistered, + #[codec(index = 3)] + #[doc = "Not a current auction."] + NotCurrentAuction, + #[codec(index = 4)] + #[doc = "Not an auction."] + NotAuction, + #[codec(index = 5)] + #[doc = "Auction has already ended."] + AuctionEnded, + #[codec(index = 6)] + #[doc = "The para is already leased out for part of this range."] + AlreadyLeasedOut, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "An auction started. Provides its index and the block number where it will begin to"] + #[doc = "close and the first lease period of the quadruplet that is auctioned."] + AuctionStarted { + auction_index: ::core::primitive::u32, + lease_period: ::core::primitive::u32, + ending: ::core::primitive::u32, + }, + #[codec(index = 1)] + #[doc = "An auction ended. All funds become unreserved."] + AuctionClosed { auction_index: ::core::primitive::u32 }, + #[codec(index = 2)] + #[doc = "Funds were reserved for a winning bid. First balance is the extra amount reserved."] + #[doc = "Second is the total."] + Reserved { + bidder: ::subxt::utils::AccountId32, + extra_reserved: ::core::primitive::u128, + total_amount: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "Funds were unreserved since bidder is no longer active. `[bidder, amount]`"] + Unreserved { + bidder: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "Someone attempted to lease the same slot twice for a parachain. The amount is held in"] + #[doc = "reserve but no parachain slot has been leased."] + ReserveConfiscated { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + leaser: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 5)] + #[doc = "A new bid has been accepted as the current winner."] + BidAccepted { + bidder: ::subxt::utils::AccountId32, + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + amount: ::core::primitive::u128, + first_slot: ::core::primitive::u32, + last_slot: ::core::primitive::u32, + }, + #[codec(index = 6)] + #[doc = "The winning offset was chosen for an auction. This will map into the `Winning` storage"] + #[doc = "map."] + WinningOffset { + auction_index: ::core::primitive::u32, + block_number: ::core::primitive::u32, + }, + } + } + } + pub mod claims { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::claim`]."] + claim { + dest: ::subxt::utils::AccountId32, + ethereum_signature: + runtime_types::polkadot_runtime_common::claims::EcdsaSignature, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::mint_claim`]."] + mint_claim { + who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + value: ::core::primitive::u128, + vesting_schedule: ::core::option::Option<( + ::core::primitive::u128, + ::core::primitive::u128, + ::core::primitive::u32, + )>, + statement: ::core::option::Option< + runtime_types::polkadot_runtime_common::claims::StatementKind, + >, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::claim_attest`]."] + claim_attest { + dest: ::subxt::utils::AccountId32, + ethereum_signature: + runtime_types::polkadot_runtime_common::claims::EcdsaSignature, + statement: ::std::vec::Vec<::core::primitive::u8>, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::attest`]."] + attest { statement: ::std::vec::Vec<::core::primitive::u8> }, + #[codec(index = 4)] + #[doc = "See [`Pallet::move_claim`]."] + move_claim { + old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, + maybe_preclaim: ::core::option::Option<::subxt::utils::AccountId32>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Invalid Ethereum signature."] + InvalidEthereumSignature, + #[codec(index = 1)] + #[doc = "Ethereum address has no claim."] + SignerHasNoClaim, + #[codec(index = 2)] + #[doc = "Account ID sending transaction has no claim."] + SenderHasNoClaim, + #[codec(index = 3)] + #[doc = "There's not enough in the pot to pay out some unvested amount. Generally implies a"] + #[doc = "logic error."] + PotUnderflow, + #[codec(index = 4)] + #[doc = "A needed statement was not included."] + InvalidStatement, + #[codec(index = 5)] + #[doc = "The account already has a vested balance."] + VestedBalanceExists, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "Someone claimed some DOTs."] + Claimed { + who: ::subxt::utils::AccountId32, + ethereum_address: + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + amount: ::core::primitive::u128, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EcdsaSignature(pub [::core::primitive::u8; 65usize]); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EthereumAddress(pub [::core::primitive::u8; 20usize]); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PrevalidateAttests; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum StatementKind { + #[codec(index = 0)] + Regular, + #[codec(index = 1)] + Saft, + } + } + pub mod crowdloan { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::create`]."] + create { + #[codec(compact)] + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + cap: ::core::primitive::u128, + #[codec(compact)] + first_period: ::core::primitive::u32, + #[codec(compact)] + last_period: ::core::primitive::u32, + #[codec(compact)] + end: ::core::primitive::u32, + verifier: + ::core::option::Option, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::contribute`]."] + contribute { + #[codec(compact)] + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + value: ::core::primitive::u128, + signature: + ::core::option::Option, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::withdraw`]."] + withdraw { + who: ::subxt::utils::AccountId32, + #[codec(compact)] + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::refund`]."] + refund { + #[codec(compact)] + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::dissolve`]."] + dissolve { + #[codec(compact)] + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::edit`]."] + edit { + #[codec(compact)] + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + #[codec(compact)] + cap: ::core::primitive::u128, + #[codec(compact)] + first_period: ::core::primitive::u32, + #[codec(compact)] + last_period: ::core::primitive::u32, + #[codec(compact)] + end: ::core::primitive::u32, + verifier: + ::core::option::Option, + }, + #[codec(index = 6)] + #[doc = "See [`Pallet::add_memo`]."] + add_memo { + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + memo: ::std::vec::Vec<::core::primitive::u8>, + }, + #[codec(index = 7)] + #[doc = "See [`Pallet::poke`]."] + poke { index: runtime_types::polkadot_parachain_primitives::primitives::Id }, + #[codec(index = 8)] + #[doc = "See [`Pallet::contribute_all`]."] + contribute_all { + #[codec(compact)] + index: runtime_types::polkadot_parachain_primitives::primitives::Id, + signature: + ::core::option::Option, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The current lease period is more than the first lease period."] + FirstPeriodInPast, + #[codec(index = 1)] + #[doc = "The first lease period needs to at least be less than 3 `max_value`."] + FirstPeriodTooFarInFuture, + #[codec(index = 2)] + #[doc = "Last lease period must be greater than first lease period."] + LastPeriodBeforeFirstPeriod, + #[codec(index = 3)] + #[doc = "The last lease period cannot be more than 3 periods after the first period."] + LastPeriodTooFarInFuture, + #[codec(index = 4)] + #[doc = "The campaign ends before the current block number. The end must be in the future."] + CannotEndInPast, + #[codec(index = 5)] + #[doc = "The end date for this crowdloan is not sensible."] + EndTooFarInFuture, + #[codec(index = 6)] + #[doc = "There was an overflow."] + Overflow, + #[codec(index = 7)] + #[doc = "The contribution was below the minimum, `MinContribution`."] + ContributionTooSmall, + #[codec(index = 8)] + #[doc = "Invalid fund index."] + InvalidParaId, + #[codec(index = 9)] + #[doc = "Contributions exceed maximum amount."] + CapExceeded, + #[codec(index = 10)] + #[doc = "The contribution period has already ended."] + ContributionPeriodOver, + #[codec(index = 11)] + #[doc = "The origin of this call is invalid."] + InvalidOrigin, + #[codec(index = 12)] + #[doc = "This crowdloan does not correspond to a parachain."] + NotParachain, + #[codec(index = 13)] + #[doc = "This parachain lease is still active and retirement cannot yet begin."] + LeaseActive, + #[codec(index = 14)] + #[doc = "This parachain's bid or lease is still active and withdraw cannot yet begin."] + BidOrLeaseActive, + #[codec(index = 15)] + #[doc = "The crowdloan has not yet ended."] + FundNotEnded, + #[codec(index = 16)] + #[doc = "There are no contributions stored in this crowdloan."] + NoContributions, + #[codec(index = 17)] + #[doc = "The crowdloan is not ready to dissolve. Potentially still has a slot or in retirement"] + #[doc = "period."] + NotReadyToDissolve, + #[codec(index = 18)] + #[doc = "Invalid signature."] + InvalidSignature, + #[codec(index = 19)] + #[doc = "The provided memo is too large."] + MemoTooLarge, + #[codec(index = 20)] + #[doc = "The fund is already in `NewRaise`"] + AlreadyInNewRaise, + #[codec(index = 21)] + #[doc = "No contributions allowed during the VRF delay"] + VrfDelayInProgress, + #[codec(index = 22)] + #[doc = "A lease period has not started yet, due to an offset in the starting block."] + NoLeasePeriod, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "Create a new crowdloaning campaign."] + Created { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 1)] + #[doc = "Contributed to a crowd sale."] + Contributed { + who: ::subxt::utils::AccountId32, + fund_index: + runtime_types::polkadot_parachain_primitives::primitives::Id, + amount: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "Withdrew full balance of a contributor."] + Withdrew { + who: ::subxt::utils::AccountId32, + fund_index: + runtime_types::polkadot_parachain_primitives::primitives::Id, + amount: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "The loans in a fund have been partially dissolved, i.e. there are some left"] + #[doc = "over child keys that still need to be killed."] + PartiallyRefunded { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 4)] + #[doc = "All loans in a fund have been refunded."] + AllRefunded { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 5)] + #[doc = "Fund is dissolved."] + Dissolved { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 6)] + #[doc = "The result of trying to submit a new bid to the Slots pallet."] + HandleBidResult { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + result: ::core::result::Result< + (), + runtime_types::sp_runtime::DispatchError, + >, + }, + #[codec(index = 7)] + #[doc = "The configuration to a crowdloan has been edited."] + Edited { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 8)] + #[doc = "A memo has been updated."] + MemoUpdated { + who: ::subxt::utils::AccountId32, + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + memo: ::std::vec::Vec<::core::primitive::u8>, + }, + #[codec(index = 9)] + #[doc = "A parachain has been moved to `NewRaise`"] + AddedToNewRaise { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct FundInfo<_0, _1, _2, _3> { + pub depositor: _0, + pub verifier: ::core::option::Option, + pub deposit: _1, + pub raised: _1, + pub end: _2, + pub cap: _1, + pub last_contribution: + runtime_types::polkadot_runtime_common::crowdloan::LastContribution<_2>, + pub first_period: _3, + pub last_period: _3, + pub fund_index: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum LastContribution<_0> { + #[codec(index = 0)] + Never, + #[codec(index = 1)] + PreEnding(::core::primitive::u32), + #[codec(index = 2)] + Ending(_0), + } + } + pub mod impls { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedLocatableAsset { + #[codec(index = 3)] + V3 { + location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + asset_id: runtime_types::xcm::v3::multiasset::AssetId, + }, + } + } + pub mod paras_registrar { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 0)] # [doc = "See [`Pallet::register`]."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_register`]."] force_register { who : :: subxt :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "See [`Pallet::deregister`]."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::swap`]."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "See [`Pallet::remove_lock`]."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::reserve`]."] reserve , # [codec (index = 6)] # [doc = "See [`Pallet::add_lock`]."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "See [`Pallet::schedule_code_upgrade`]."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_current_head`]."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The ID is not registered."] + NotRegistered, + #[codec(index = 1)] + #[doc = "The ID is already registered."] + AlreadyRegistered, + #[codec(index = 2)] + #[doc = "The caller is not the owner of this Id."] + NotOwner, + #[codec(index = 3)] + #[doc = "Invalid para code size."] + CodeTooLarge, + #[codec(index = 4)] + #[doc = "Invalid para head data size."] + HeadDataTooLarge, + #[codec(index = 5)] + #[doc = "Para is not a Parachain."] + NotParachain, + #[codec(index = 6)] + #[doc = "Para is not a Parathread (on-demand parachain)."] + NotParathread, + #[codec(index = 7)] + #[doc = "Cannot deregister para"] + CannotDeregister, + #[codec(index = 8)] + #[doc = "Cannot schedule downgrade of lease holding parachain to on-demand parachain"] + CannotDowngrade, + #[codec(index = 9)] + #[doc = "Cannot schedule upgrade of on-demand parachain to lease holding parachain"] + CannotUpgrade, + #[codec(index = 10)] + #[doc = "Para is locked from manipulation by the manager. Must use parachain or relay chain"] + #[doc = "governance."] + ParaLocked, + #[codec(index = 11)] + #[doc = "The ID given for registration has not been reserved."] + NotReserved, + #[codec(index = 12)] + #[doc = "Registering parachain with empty code is not allowed."] + EmptyCode, + #[codec(index = 13)] + #[doc = "Cannot perform a parachain slot / lifecycle swap. Check that the state of both paras"] + #[doc = "are correct for the swap to work."] + CannotSwap, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + Registered { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + manager: ::subxt::utils::AccountId32, + }, + #[codec(index = 1)] + Deregistered { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 2)] + Reserved { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + who: ::subxt::utils::AccountId32, + }, + #[codec(index = 3)] + Swapped { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + other_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ParaInfo<_0, _1> { + pub manager: _0, + pub deposit: _1, + pub locked: ::core::option::Option<::core::primitive::bool>, + } + } + pub mod paras_sudo_wrapper { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + sudo_schedule_para_initialize { + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + genesis: + runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + sudo_schedule_para_cleanup { + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + sudo_schedule_parathread_upgrade { + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 3)] + #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + sudo_schedule_parachain_downgrade { + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 4)] + #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + sudo_queue_downward_xcm { + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + xcm: ::std::boxed::Box, + }, + #[codec(index = 5)] + #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + sudo_establish_hrmp_channel { + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + max_capacity: ::core::primitive::u32, + max_message_size: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The specified parachain is not registered."] + ParaDoesntExist, + #[codec(index = 1)] + #[doc = "The specified parachain is already registered."] + ParaAlreadyExists, + #[codec(index = 2)] + #[doc = "A DMP message couldn't be sent because it exceeds the maximum size allowed for a"] + #[doc = "downward message."] + ExceedsMaxMessageSize, + #[codec(index = 3)] + #[doc = "Could not schedule para cleanup."] + CouldntCleanup, + #[codec(index = 4)] + #[doc = "Not a parathread (on-demand parachain)."] + NotParathread, + #[codec(index = 5)] + #[doc = "Not a lease holding parachain."] + NotParachain, + #[codec(index = 6)] + #[doc = "Cannot upgrade on-demand parachain to lease holding parachain."] + CannotUpgrade, + #[codec(index = 7)] + #[doc = "Cannot downgrade lease holding parachain to on-demand."] + CannotDowngrade, + } + } + } + pub mod slots { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::force_lease`]."] + force_lease { + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + leaser: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + period_begin: ::core::primitive::u32, + period_count: ::core::primitive::u32, + }, + #[codec(index = 1)] + #[doc = "See [`Pallet::clear_all_leases`]."] + clear_all_leases { + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + #[codec(index = 2)] + #[doc = "See [`Pallet::trigger_onboard`]."] + trigger_onboard { + para: runtime_types::polkadot_parachain_primitives::primitives::Id, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The parachain ID is not onboarding."] + ParaNotOnboarding, + #[codec(index = 1)] + #[doc = "There was an error with the lease."] + LeaseError, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A new `[lease_period]` is beginning."] + NewLeasePeriod { lease_period: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "A para has won the right to a continuous set of lease periods as a parachain."] + #[doc = "First balance is any extra amount reserved on top of the para's existing deposit."] + #[doc = "Second balance is the total amount reserved."] + Leased { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + leaser: ::subxt::utils::AccountId32, + period_begin: ::core::primitive::u32, + period_count: ::core::primitive::u32, + extra_reserved: ::core::primitive::u128, + total_amount: ::core::primitive::u128, + }, + } + } + } + } + pub mod polkadot_runtime_parachains { + use super::runtime_types; + pub mod configuration { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_on_demand_cores`]."] set_on_demand_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The new value for a configuration parameter is invalid."] + InvalidNewValue, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HostConfiguration<_0> { + pub max_code_size: ::core::primitive::u32, + pub max_head_data_size: ::core::primitive::u32, + pub max_upward_queue_count: ::core::primitive::u32, + pub max_upward_queue_size: ::core::primitive::u32, + pub max_upward_message_size: ::core::primitive::u32, + pub max_upward_message_num_per_candidate: ::core::primitive::u32, + pub hrmp_max_message_num_per_candidate: ::core::primitive::u32, + pub validation_upgrade_cooldown: _0, + pub validation_upgrade_delay: _0, + pub async_backing_params: + runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams, + pub max_pov_size: ::core::primitive::u32, + pub max_downward_message_size: ::core::primitive::u32, + pub hrmp_max_parachain_outbound_channels: ::core::primitive::u32, + pub hrmp_sender_deposit: ::core::primitive::u128, + pub hrmp_recipient_deposit: ::core::primitive::u128, + pub hrmp_channel_max_capacity: ::core::primitive::u32, + pub hrmp_channel_max_total_size: ::core::primitive::u32, + pub hrmp_max_parachain_inbound_channels: ::core::primitive::u32, + pub hrmp_channel_max_message_size: ::core::primitive::u32, + pub executor_params: + runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + pub code_retention_period: _0, + pub on_demand_cores: ::core::primitive::u32, + pub on_demand_retries: ::core::primitive::u32, + pub on_demand_queue_max_size: ::core::primitive::u32, + pub on_demand_target_queue_utilization: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_fee_variability: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_base_fee: ::core::primitive::u128, + pub on_demand_ttl: _0, + pub group_rotation_frequency: _0, + pub paras_availability_period: _0, + pub scheduling_lookahead: ::core::primitive::u32, + pub max_validators_per_core: ::core::option::Option<_0>, + pub max_validators: ::core::option::Option<_0>, + pub dispute_period: ::core::primitive::u32, + pub dispute_post_conclusion_acceptance_period: _0, + pub no_show_slots: ::core::primitive::u32, + pub n_delay_tranches: ::core::primitive::u32, + pub zeroth_delay_tranche_width: ::core::primitive::u32, + pub needed_approvals: ::core::primitive::u32, + pub relay_vrf_modulo_samples: ::core::primitive::u32, + pub pvf_voting_ttl: ::core::primitive::u32, + pub minimum_validation_upgrade_delay: _0, + pub minimum_backing_votes: ::core::primitive::u32, + } + } + pub mod disputes { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::force_unfreeze`]."] + force_unfreeze, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Duplicate dispute statement sets provided."] + DuplicateDisputeStatementSets, + #[codec(index = 1)] + #[doc = "Ancient dispute statement provided."] + AncientDisputeStatement, + #[codec(index = 2)] + #[doc = "Validator index on statement is out of bounds for session."] + ValidatorIndexOutOfBounds, + #[codec(index = 3)] + #[doc = "Invalid signature on statement."] + InvalidSignature, + #[codec(index = 4)] + #[doc = "Validator vote submitted more than once to dispute."] + DuplicateStatement, + #[codec(index = 5)] + #[doc = "A dispute where there are only votes on one side."] + SingleSidedDispute, + #[codec(index = 6)] + #[doc = "A dispute vote from a malicious backer."] + MaliciousBacker, + #[codec(index = 7)] + #[doc = "No backing votes were provides along dispute statements."] + MissingBackingVotes, + #[codec(index = 8)] + #[doc = "Unconfirmed dispute statement sets provided."] + UnconfirmedDispute, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A dispute has been initiated. \\[candidate hash, dispute location\\]"] + DisputeInitiated( + runtime_types::polkadot_core_primitives::CandidateHash, + runtime_types::polkadot_runtime_parachains::disputes::DisputeLocation, + ), + #[codec(index = 1)] + #[doc = "A dispute has concluded for or against a candidate."] + #[doc = "`\\[para id, candidate hash, dispute result\\]`"] + DisputeConcluded( + runtime_types::polkadot_core_primitives::CandidateHash, + runtime_types::polkadot_runtime_parachains::disputes::DisputeResult, + ), + #[codec(index = 2)] + #[doc = "A dispute has concluded with supermajority against a candidate."] + #[doc = "Block authors should no longer build on top of this head and should"] + #[doc = "instead revert the block at the given height. This should be the"] + #[doc = "number of the child of the last known valid block in the chain."] + Revert(::core::primitive::u32), + } + } + pub mod slashing { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] + report_dispute_lost_unsigned { + dispute_proof: ::std::boxed::Box< + runtime_types::polkadot_primitives::v6::slashing::DisputeProof, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The key ownership proof is invalid."] + InvalidKeyOwnershipProof, + #[codec(index = 1)] + #[doc = "The session index is too old or invalid."] + InvalidSessionIndex, + #[codec(index = 2)] + #[doc = "The candidate hash is invalid."] + InvalidCandidateHash, + #[codec(index = 3)] + #[doc = "There is no pending slash for the given validator index and time"] + #[doc = "slot."] + InvalidValidatorIndex, + #[codec(index = 4)] + #[doc = "The validator index does not match the validator id."] + ValidatorIndexIdMismatch, + #[codec(index = 5)] + #[doc = "The given slashing report is valid but already previously reported."] + DuplicateSlashingReport, + } + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DisputeLocation { + #[codec(index = 0)] + Local, + #[codec(index = 1)] + Remote, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DisputeResult { + #[codec(index = 0)] + Valid, + #[codec(index = 1)] + Invalid, + } + } + pub mod hrmp { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 0)] # [doc = "See [`Pallet::hrmp_init_open_channel`]."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::hrmp_accept_open_channel`]."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "See [`Pallet::hrmp_close_channel`]."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_clean_hrmp`]."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_process_hrmp_open`]."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::force_process_hrmp_close`]."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::hrmp_cancel_open_request`]."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::force_open_hrmp_channel`]."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::establish_system_channel`]."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "See [`Pallet::poke_channel_deposits`]."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The sender tried to open a channel to themselves."] + OpenHrmpChannelToSelf, + #[codec(index = 1)] + #[doc = "The recipient is not a valid para."] + OpenHrmpChannelInvalidRecipient, + #[codec(index = 2)] + #[doc = "The requested capacity is zero."] + OpenHrmpChannelZeroCapacity, + #[codec(index = 3)] + #[doc = "The requested capacity exceeds the global limit."] + OpenHrmpChannelCapacityExceedsLimit, + #[codec(index = 4)] + #[doc = "The requested maximum message size is 0."] + OpenHrmpChannelZeroMessageSize, + #[codec(index = 5)] + #[doc = "The open request requested the message size that exceeds the global limit."] + OpenHrmpChannelMessageSizeExceedsLimit, + #[codec(index = 6)] + #[doc = "The channel already exists"] + OpenHrmpChannelAlreadyExists, + #[codec(index = 7)] + #[doc = "There is already a request to open the same channel."] + OpenHrmpChannelAlreadyRequested, + #[codec(index = 8)] + #[doc = "The sender already has the maximum number of allowed outbound channels."] + OpenHrmpChannelLimitExceeded, + #[codec(index = 9)] + #[doc = "The channel from the sender to the origin doesn't exist."] + AcceptHrmpChannelDoesntExist, + #[codec(index = 10)] + #[doc = "The channel is already confirmed."] + AcceptHrmpChannelAlreadyConfirmed, + #[codec(index = 11)] + #[doc = "The recipient already has the maximum number of allowed inbound channels."] + AcceptHrmpChannelLimitExceeded, + #[codec(index = 12)] + #[doc = "The origin tries to close a channel where it is neither the sender nor the recipient."] + CloseHrmpChannelUnauthorized, + #[codec(index = 13)] + #[doc = "The channel to be closed doesn't exist."] + CloseHrmpChannelDoesntExist, + #[codec(index = 14)] + #[doc = "The channel close request is already requested."] + CloseHrmpChannelAlreadyUnderway, + #[codec(index = 15)] + #[doc = "Canceling is requested by neither the sender nor recipient of the open channel request."] + CancelHrmpOpenChannelUnauthorized, + #[codec(index = 16)] + #[doc = "The open request doesn't exist."] + OpenHrmpChannelDoesntExist, + #[codec(index = 17)] + #[doc = "Cannot cancel an HRMP open channel request because it is already confirmed."] + OpenHrmpChannelAlreadyConfirmed, + #[codec(index = 18)] + #[doc = "The provided witness data is wrong."] + WrongWitness, + #[codec(index = 19)] + #[doc = "The channel between these two chains cannot be authorized."] + ChannelCreationNotAuthorized, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + # [codec (index = 0)] # [doc = "Open HRMP channel requested."] OpenChannelRequested { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "An HRMP channel request sent by the receiver was canceled by either party."] OpenChannelCanceled { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 2)] # [doc = "Open HRMP channel accepted."] OpenChannelAccepted { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "HRMP channel closed."] ChannelClosed { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 4)] # [doc = "An HRMP channel was opened via Root origin."] HrmpChannelForceOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "An HRMP channel was opened between two system chains."] HrmpSystemChannelOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "An HRMP channel's deposits were updated."] OpenChannelDepositsUpdated { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HrmpChannel { + pub max_capacity: ::core::primitive::u32, + pub max_total_size: ::core::primitive::u32, + pub max_message_size: ::core::primitive::u32, + pub msg_count: ::core::primitive::u32, + pub total_size: ::core::primitive::u32, + pub mqc_head: ::core::option::Option<::subxt::utils::H256>, + pub sender_deposit: ::core::primitive::u128, + pub recipient_deposit: ::core::primitive::u128, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HrmpOpenChannelRequest { + pub confirmed: ::core::primitive::bool, + pub _age: ::core::primitive::u32, + pub sender_deposit: ::core::primitive::u128, + pub max_message_size: ::core::primitive::u32, + pub max_capacity: ::core::primitive::u32, + pub max_total_size: ::core::primitive::u32, + } + } + pub mod inclusion { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Validator indices are out of order or contains duplicates."] + UnsortedOrDuplicateValidatorIndices, + #[codec(index = 1)] + #[doc = "Dispute statement sets are out of order or contain duplicates."] + UnsortedOrDuplicateDisputeStatementSet, + #[codec(index = 2)] + #[doc = "Backed candidates are out of order (core index) or contain duplicates."] + UnsortedOrDuplicateBackedCandidates, + #[codec(index = 3)] + #[doc = "A different relay parent was provided compared to the on-chain stored one."] + UnexpectedRelayParent, + #[codec(index = 4)] + #[doc = "Availability bitfield has unexpected size."] + WrongBitfieldSize, + #[codec(index = 5)] + #[doc = "Bitfield consists of zeros only."] + BitfieldAllZeros, + #[codec(index = 6)] + #[doc = "Multiple bitfields submitted by same validator or validators out of order by index."] + BitfieldDuplicateOrUnordered, + #[codec(index = 7)] + #[doc = "Validator index out of bounds."] + ValidatorIndexOutOfBounds, + #[codec(index = 8)] + #[doc = "Invalid signature"] + InvalidBitfieldSignature, + #[codec(index = 9)] + #[doc = "Candidate submitted but para not scheduled."] + UnscheduledCandidate, + #[codec(index = 10)] + #[doc = "Candidate scheduled despite pending candidate already existing for the para."] + CandidateScheduledBeforeParaFree, + #[codec(index = 11)] + #[doc = "Scheduled cores out of order."] + ScheduledOutOfOrder, + #[codec(index = 12)] + #[doc = "Head data exceeds the configured maximum."] + HeadDataTooLarge, + #[codec(index = 13)] + #[doc = "Code upgrade prematurely."] + PrematureCodeUpgrade, + #[codec(index = 14)] + #[doc = "Output code is too large"] + NewCodeTooLarge, + #[codec(index = 15)] + #[doc = "The candidate's relay-parent was not allowed. Either it was"] + #[doc = "not recent enough or it didn't advance based on the last parachain block."] + DisallowedRelayParent, + #[codec(index = 16)] + #[doc = "Failed to compute group index for the core: either it's out of bounds"] + #[doc = "or the relay parent doesn't belong to the current session."] + InvalidAssignment, + #[codec(index = 17)] + #[doc = "Invalid group index in core assignment."] + InvalidGroupIndex, + #[codec(index = 18)] + #[doc = "Insufficient (non-majority) backing."] + InsufficientBacking, + #[codec(index = 19)] + #[doc = "Invalid (bad signature, unknown validator, etc.) backing."] + InvalidBacking, + #[codec(index = 20)] + #[doc = "Collator did not sign PoV."] + NotCollatorSigned, + #[codec(index = 21)] + #[doc = "The validation data hash does not match expected."] + ValidationDataHashMismatch, + #[codec(index = 22)] + #[doc = "The downward message queue is not processed correctly."] + IncorrectDownwardMessageHandling, + #[codec(index = 23)] + #[doc = "At least one upward message sent does not pass the acceptance criteria."] + InvalidUpwardMessages, + #[codec(index = 24)] + #[doc = "The candidate didn't follow the rules of HRMP watermark advancement."] + HrmpWatermarkMishandling, + #[codec(index = 25)] + #[doc = "The HRMP messages sent by the candidate is not valid."] + InvalidOutboundHrmp, + #[codec(index = 26)] + #[doc = "The validation code hash of the candidate is not valid."] + InvalidValidationCodeHash, + #[codec(index = 27)] + #[doc = "The `para_head` hash in the candidate descriptor doesn't match the hash of the actual"] + #[doc = "para head in the commitments."] + ParaHeadMismatch, + #[codec(index = 28)] + #[doc = "A bitfield that references a freed core,"] + #[doc = "either intentionally or as part of a concluded"] + #[doc = "invalid dispute."] + BitfieldReferencesFreedCore, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A candidate was backed. `[candidate, head_data]`"] + CandidateBacked( + runtime_types::polkadot_primitives::v6::CandidateReceipt< + ::subxt::utils::H256, + >, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + runtime_types::polkadot_primitives::v6::CoreIndex, + runtime_types::polkadot_primitives::v6::GroupIndex, + ), + #[codec(index = 1)] + #[doc = "A candidate was included. `[candidate, head_data]`"] + CandidateIncluded( + runtime_types::polkadot_primitives::v6::CandidateReceipt< + ::subxt::utils::H256, + >, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + runtime_types::polkadot_primitives::v6::CoreIndex, + runtime_types::polkadot_primitives::v6::GroupIndex, + ), + #[codec(index = 2)] + #[doc = "A candidate timed out. `[candidate, head_data]`"] + CandidateTimedOut( + runtime_types::polkadot_primitives::v6::CandidateReceipt< + ::subxt::utils::H256, + >, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + runtime_types::polkadot_primitives::v6::CoreIndex, + ), + #[codec(index = 3)] + #[doc = "Some upward messages have been received and will be processed."] + UpwardMessagesReceived { + from: runtime_types::polkadot_parachain_primitives::primitives::Id, + count: ::core::primitive::u32, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AggregateMessageOrigin { + #[codec(index = 0)] + Ump(runtime_types::polkadot_runtime_parachains::inclusion::UmpQueueId), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AvailabilityBitfieldRecord<_0> { + pub bitfield: runtime_types::polkadot_primitives::v6::AvailabilityBitfield, + pub submitted_at: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidatePendingAvailability<_0, _1> { + pub core: runtime_types::polkadot_primitives::v6::CoreIndex, + pub hash: runtime_types::polkadot_core_primitives::CandidateHash, + pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + pub availability_votes: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub backers: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub relay_parent_number: _1, + pub backed_in_number: _1, + pub backing_group: runtime_types::polkadot_primitives::v6::GroupIndex, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum UmpQueueId { + #[codec(index = 0)] + Para(runtime_types::polkadot_parachain_primitives::primitives::Id), + } + } + pub mod initializer { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::force_approve`]."] + force_approve { up_to: ::core::primitive::u32 }, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BufferedSessionChange { + pub validators: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::validator_app::Public, + >, + pub queued: ::std::vec::Vec< + runtime_types::polkadot_primitives::v6::validator_app::Public, + >, + pub session_index: ::core::primitive::u32, + } + } + pub mod origin { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Origin { + #[codec(index = 0)] + Parachain(runtime_types::polkadot_parachain_primitives::primitives::Id), + } + } + } + pub mod paras { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 0)] # [doc = "See [`Pallet::force_set_current_code`]."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_set_current_head`]."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "See [`Pallet::force_schedule_code_upgrade`]."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_note_new_head`]."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_queue_action`]."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::add_trusted_validation_code`]."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "See [`Pallet::poke_unused_validation_code`]."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "See [`Pallet::include_pvf_check_statement`]."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v6 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v6 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "See [`Pallet::force_set_most_recent_context`]."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Para is not registered in our system."] + NotRegistered, + #[codec(index = 1)] + #[doc = "Para cannot be onboarded because it is already tracked by our system."] + CannotOnboard, + #[codec(index = 2)] + #[doc = "Para cannot be offboarded at this time."] + CannotOffboard, + #[codec(index = 3)] + #[doc = "Para cannot be upgraded to a lease holding parachain."] + CannotUpgrade, + #[codec(index = 4)] + #[doc = "Para cannot be downgraded to an on-demand parachain."] + CannotDowngrade, + #[codec(index = 5)] + #[doc = "The statement for PVF pre-checking is stale."] + PvfCheckStatementStale, + #[codec(index = 6)] + #[doc = "The statement for PVF pre-checking is for a future session."] + PvfCheckStatementFuture, + #[codec(index = 7)] + #[doc = "Claimed validator index is out of bounds."] + PvfCheckValidatorIndexOutOfBounds, + #[codec(index = 8)] + #[doc = "The signature for the PVF pre-checking is invalid."] + PvfCheckInvalidSignature, + #[codec(index = 9)] + #[doc = "The given validator already has cast a vote."] + PvfCheckDoubleVote, + #[codec(index = 10)] + #[doc = "The given PVF does not exist at the moment of process a vote."] + PvfCheckSubjectInvalid, + #[codec(index = 11)] + #[doc = "Parachain cannot currently schedule a code upgrade."] + CannotUpgradeCode, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + # [codec (index = 0)] # [doc = "Current code has been updated for a Para. `para_id`"] CurrentCodeUpdated (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 1)] # [doc = "Current head has been updated for a Para. `para_id`"] CurrentHeadUpdated (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 2)] # [doc = "A code upgrade has been scheduled for a Para. `para_id`"] CodeUpgradeScheduled (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 3)] # [doc = "A new head has been noted for a Para. `para_id`"] NewHeadNoted (runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 4)] # [doc = "A para has been queued to execute pending actions. `para_id`"] ActionQueued (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , :: core :: primitive :: u32 ,) , # [codec (index = 5)] # [doc = "The given para either initiated or subscribed to a PVF check for the given validation"] # [doc = "code. `code_hash` `para_id`"] PvfCheckStarted (runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 6)] # [doc = "The given validation code was accepted by the PVF pre-checking vote."] # [doc = "`code_hash` `para_id`"] PvfCheckAccepted (runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , # [codec (index = 7)] # [doc = "The given validation code was rejected by the PVF pre-checking vote."] # [doc = "`code_hash` `para_id`"] PvfCheckRejected (runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , runtime_types :: polkadot_parachain_primitives :: primitives :: Id ,) , } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ParaGenesisArgs { + pub genesis_head: + runtime_types::polkadot_parachain_primitives::primitives::HeadData, + pub validation_code: + runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, + pub para_kind: ::core::primitive::bool, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ParaLifecycle { + #[codec(index = 0)] + Onboarding, + #[codec(index = 1)] + Parathread, + #[codec(index = 2)] + Parachain, + #[codec(index = 3)] + UpgradingParathread, + #[codec(index = 4)] + DowngradingParachain, + #[codec(index = 5)] + OffboardingParathread, + #[codec(index = 6)] + OffboardingParachain, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ParaPastCodeMeta<_0> { + pub upgrade_times: ::std::vec::Vec< + runtime_types::polkadot_runtime_parachains::paras::ReplacementTimes<_0>, + >, + pub last_pruned: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PvfCheckActiveVoteState<_0> { + pub votes_accept: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub votes_reject: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub age: ::core::primitive::u32, + pub created_at: _0, + pub causes: ::std::vec::Vec< + runtime_types::polkadot_runtime_parachains::paras::PvfCheckCause<_0>, + >, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum PvfCheckCause<_0> { + #[codec(index = 0)] + Onboarding(runtime_types::polkadot_parachain_primitives::primitives::Id), + #[codec(index = 1)] + Upgrade { + id: runtime_types::polkadot_parachain_primitives::primitives::Id, + included_at: _0, + set_go_ahead: runtime_types::polkadot_runtime_parachains::paras::SetGoAhead, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReplacementTimes<_0> { + pub expected_at: _0, + pub activated_at: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum SetGoAhead { + #[codec(index = 0)] + Yes, + #[codec(index = 1)] + No, + } + } + pub mod paras_inherent { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "See [`Pallet::enter`]."] + enter { + data: runtime_types::polkadot_primitives::v6::InherentData< + runtime_types::sp_runtime::generic::header::Header< + ::core::primitive::u32, + >, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Inclusion inherent called more than once per block."] + TooManyInclusionInherents, + #[codec(index = 1)] + #[doc = "The hash of the submitted parent header doesn't correspond to the saved block hash of"] + #[doc = "the parent."] + InvalidParentHeader, + #[codec(index = 2)] + #[doc = "Disputed candidate that was concluded invalid."] + CandidateConcludedInvalid, + #[codec(index = 3)] + #[doc = "The data given to the inherent will result in an overweight block."] + InherentOverweight, + #[codec(index = 4)] + #[doc = "The ordering of dispute statements was invalid."] + DisputeStatementsUnsortedOrDuplicates, + #[codec(index = 5)] + #[doc = "A dispute statement was invalid."] + DisputeInvalid, + } + } + } + pub mod scheduler { + use super::runtime_types; + pub mod common { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Assignment { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + } + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum CoreOccupied<_0> { + # [codec (index = 0)] Free , # [codec (index = 1)] Paras (runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < _0 > ,) , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ParasEntry < _0 > { pub assignment : runtime_types :: polkadot_runtime_parachains :: scheduler :: common :: Assignment , pub availability_timeouts : :: core :: primitive :: u32 , pub ttl : _0 , } + } + } + pub mod shared { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call {} + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AllowedRelayParentsTracker<_0, _1> { + pub buffer: ::std::vec::Vec<(_0, _0)>, + pub latest_number: _1, + } + } + } + pub mod sp_arithmetic { + use super::runtime_types; + pub mod fixed_point { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct FixedI64(pub ::core::primitive::i64); + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct FixedU128(pub ::core::primitive::u128); + } + pub mod per_things { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PerU16(pub ::core::primitive::u16); + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Perbill(pub ::core::primitive::u32); + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Percent(pub ::core::primitive::u8); + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Permill(pub ::core::primitive::u32); + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ArithmeticError { + #[codec(index = 0)] + Underflow, + #[codec(index = 1)] + Overflow, + #[codec(index = 2)] + DivisionByZero, + } + } + pub mod sp_authority_discovery { + use super::runtime_types; + pub mod app { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::sr25519::Public); + } + } + pub mod sp_consensus_babe { + use super::runtime_types; + pub mod app { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::sr25519::Public); + } + pub mod digests { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum NextConfigDescriptor { + #[codec(index = 1)] + V1 { + c: (::core::primitive::u64, ::core::primitive::u64), + allowed_slots: runtime_types::sp_consensus_babe::AllowedSlots, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum PreDigest { + #[codec(index = 1)] + Primary(runtime_types::sp_consensus_babe::digests::PrimaryPreDigest), + #[codec(index = 2)] + SecondaryPlain( + runtime_types::sp_consensus_babe::digests::SecondaryPlainPreDigest, + ), + #[codec(index = 3)] + SecondaryVRF(runtime_types::sp_consensus_babe::digests::SecondaryVRFPreDigest), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PrimaryPreDigest { + pub authority_index: ::core::primitive::u32, + pub slot: runtime_types::sp_consensus_slots::Slot, + pub vrf_signature: runtime_types::sp_core::sr25519::vrf::VrfSignature, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SecondaryPlainPreDigest { + pub authority_index: ::core::primitive::u32, + pub slot: runtime_types::sp_consensus_slots::Slot, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SecondaryVRFPreDigest { + pub authority_index: ::core::primitive::u32, + pub slot: runtime_types::sp_consensus_slots::Slot, + pub vrf_signature: runtime_types::sp_core::sr25519::vrf::VrfSignature, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AllowedSlots { + #[codec(index = 0)] + PrimarySlots, + #[codec(index = 1)] + PrimaryAndSecondaryPlainSlots, + #[codec(index = 2)] + PrimaryAndSecondaryVRFSlots, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BabeConfiguration { + pub slot_duration: ::core::primitive::u64, + pub epoch_length: ::core::primitive::u64, + pub c: (::core::primitive::u64, ::core::primitive::u64), + pub authorities: ::std::vec::Vec<( + runtime_types::sp_consensus_babe::app::Public, + ::core::primitive::u64, + )>, + pub randomness: [::core::primitive::u8; 32usize], + pub allowed_slots: runtime_types::sp_consensus_babe::AllowedSlots, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BabeEpochConfiguration { + pub c: (::core::primitive::u64, ::core::primitive::u64), + pub allowed_slots: runtime_types::sp_consensus_babe::AllowedSlots, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Epoch { + pub epoch_index: ::core::primitive::u64, + pub start_slot: runtime_types::sp_consensus_slots::Slot, + pub duration: ::core::primitive::u64, + pub authorities: ::std::vec::Vec<( + runtime_types::sp_consensus_babe::app::Public, + ::core::primitive::u64, + )>, + pub randomness: [::core::primitive::u8; 32usize], + pub config: runtime_types::sp_consensus_babe::BabeEpochConfiguration, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + } + pub mod sp_consensus_beefy { + use super::runtime_types; + pub mod commitment { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Commitment<_0> { + pub payload: runtime_types::sp_consensus_beefy::payload::Payload, + pub block_number: _0, + pub validator_set_id: ::core::primitive::u64, + } + } + pub mod ecdsa_crypto { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::ecdsa::Public); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub runtime_types::sp_core::ecdsa::Signature); + } + pub mod mmr { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BeefyAuthoritySet<_0> { + pub id: ::core::primitive::u64, + pub len: ::core::primitive::u32, + pub keyset_commitment: _0, + } + } + pub mod payload { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Payload( + pub ::std::vec::Vec<( + [::core::primitive::u8; 2usize], + ::std::vec::Vec<::core::primitive::u8>, + )>, + ); + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EquivocationProof<_0, _1, _2> { + pub first: runtime_types::sp_consensus_beefy::VoteMessage<_0, _1, _2>, + pub second: runtime_types::sp_consensus_beefy::VoteMessage<_0, _1, _2>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidatorSet<_0> { + pub validators: ::std::vec::Vec<_0>, + pub id: ::core::primitive::u64, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VoteMessage<_0, _1, _2> { + pub commitment: runtime_types::sp_consensus_beefy::commitment::Commitment<_0>, + pub id: _1, + pub signature: _2, + } + } + pub mod sp_consensus_grandpa { + use super::runtime_types; + pub mod app { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub runtime_types::sp_core::ed25519::Public); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub runtime_types::sp_core::ed25519::Signature); + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Equivocation<_0, _1> { + #[codec(index = 0)] + Prevote( + runtime_types::finality_grandpa::Equivocation< + runtime_types::sp_consensus_grandpa::app::Public, + runtime_types::finality_grandpa::Prevote<_0, _1>, + runtime_types::sp_consensus_grandpa::app::Signature, + >, + ), + #[codec(index = 1)] + Precommit( + runtime_types::finality_grandpa::Equivocation< + runtime_types::sp_consensus_grandpa::app::Public, + runtime_types::finality_grandpa::Precommit<_0, _1>, + runtime_types::sp_consensus_grandpa::app::Signature, + >, + ), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EquivocationProof<_0, _1> { + pub set_id: ::core::primitive::u64, + pub equivocation: runtime_types::sp_consensus_grandpa::Equivocation<_0, _1>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OpaqueKeyOwnershipProof(pub ::std::vec::Vec<::core::primitive::u8>); + } + pub mod sp_consensus_slots { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EquivocationProof<_0, _1> { + pub offender: _1, + pub slot: runtime_types::sp_consensus_slots::Slot, + pub first_header: _0, + pub second_header: _0, + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Slot(pub ::core::primitive::u64); + } + pub mod sp_core { + use super::runtime_types; + pub mod crypto { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct KeyTypeId(pub [::core::primitive::u8; 4usize]); + } + pub mod ecdsa { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub [::core::primitive::u8; 33usize]); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub [::core::primitive::u8; 65usize]); + } + pub mod ed25519 { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub [::core::primitive::u8; 32usize]); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub [::core::primitive::u8; 64usize]); + } + pub mod sr25519 { + use super::runtime_types; + pub mod vrf { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct VrfSignature { + pub output: [::core::primitive::u8; 32usize], + pub proof: [::core::primitive::u8; 64usize], + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Public(pub [::core::primitive::u8; 32usize]); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Signature(pub [::core::primitive::u8; 64usize]); + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OpaqueMetadata(pub ::std::vec::Vec<::core::primitive::u8>); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Void {} + } + pub mod sp_inherents { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CheckInherentsResult { + pub okay: ::core::primitive::bool, + pub fatal_error: ::core::primitive::bool, + pub errors: runtime_types::sp_inherents::InherentData, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InherentData { + pub data: ::subxt::utils::KeyedVec< + [::core::primitive::u8; 8usize], + ::std::vec::Vec<::core::primitive::u8>, + >, + } + } + pub mod sp_mmr_primitives { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EncodableOpaqueLeaf(pub ::std::vec::Vec<::core::primitive::u8>); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Error { + #[codec(index = 0)] + InvalidNumericOp, + #[codec(index = 1)] + Push, + #[codec(index = 2)] + GetRoot, + #[codec(index = 3)] + Commit, + #[codec(index = 4)] + GenerateProof, + #[codec(index = 5)] + Verify, + #[codec(index = 6)] + LeafNotFound, + #[codec(index = 7)] + PalletNotIncluded, + #[codec(index = 8)] + InvalidLeafIndex, + #[codec(index = 9)] + InvalidBestKnownBlock, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Proof<_0> { + pub leaf_indices: ::std::vec::Vec<::core::primitive::u64>, + pub leaf_count: ::core::primitive::u64, + pub items: ::std::vec::Vec<_0>, + } + } + pub mod sp_npos_elections { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ElectionScore { + pub minimal_stake: ::core::primitive::u128, + pub sum_stake: ::core::primitive::u128, + pub sum_stake_squared: ::core::primitive::u128, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Support<_0> { + pub total: ::core::primitive::u128, + pub voters: ::std::vec::Vec<(_0, ::core::primitive::u128)>, + } + } + pub mod sp_runtime { + use super::runtime_types; + pub mod generic { + use super::runtime_types; + pub mod block { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Block<_0, _1> { + pub header: _0, + pub extrinsics: ::std::vec::Vec<_1>, + } + } + pub mod digest { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Digest { + pub logs: + ::std::vec::Vec, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DigestItem { + #[codec(index = 6)] + PreRuntime( + [::core::primitive::u8; 4usize], + ::std::vec::Vec<::core::primitive::u8>, + ), + #[codec(index = 4)] + Consensus( + [::core::primitive::u8; 4usize], + ::std::vec::Vec<::core::primitive::u8>, + ), + #[codec(index = 5)] + Seal( + [::core::primitive::u8; 4usize], + ::std::vec::Vec<::core::primitive::u8>, + ), + #[codec(index = 0)] + Other(::std::vec::Vec<::core::primitive::u8>), + #[codec(index = 8)] + RuntimeEnvironmentUpdated, + } + } + pub mod era { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Era { + #[codec(index = 0)] + Immortal, + #[codec(index = 1)] + Mortal1(::core::primitive::u8), + #[codec(index = 2)] + Mortal2(::core::primitive::u8), + #[codec(index = 3)] + Mortal3(::core::primitive::u8), + #[codec(index = 4)] + Mortal4(::core::primitive::u8), + #[codec(index = 5)] + Mortal5(::core::primitive::u8), + #[codec(index = 6)] + Mortal6(::core::primitive::u8), + #[codec(index = 7)] + Mortal7(::core::primitive::u8), + #[codec(index = 8)] + Mortal8(::core::primitive::u8), + #[codec(index = 9)] + Mortal9(::core::primitive::u8), + #[codec(index = 10)] + Mortal10(::core::primitive::u8), + #[codec(index = 11)] + Mortal11(::core::primitive::u8), + #[codec(index = 12)] + Mortal12(::core::primitive::u8), + #[codec(index = 13)] + Mortal13(::core::primitive::u8), + #[codec(index = 14)] + Mortal14(::core::primitive::u8), + #[codec(index = 15)] + Mortal15(::core::primitive::u8), + #[codec(index = 16)] + Mortal16(::core::primitive::u8), + #[codec(index = 17)] + Mortal17(::core::primitive::u8), + #[codec(index = 18)] + Mortal18(::core::primitive::u8), + #[codec(index = 19)] + Mortal19(::core::primitive::u8), + #[codec(index = 20)] + Mortal20(::core::primitive::u8), + #[codec(index = 21)] + Mortal21(::core::primitive::u8), + #[codec(index = 22)] + Mortal22(::core::primitive::u8), + #[codec(index = 23)] + Mortal23(::core::primitive::u8), + #[codec(index = 24)] + Mortal24(::core::primitive::u8), + #[codec(index = 25)] + Mortal25(::core::primitive::u8), + #[codec(index = 26)] + Mortal26(::core::primitive::u8), + #[codec(index = 27)] + Mortal27(::core::primitive::u8), + #[codec(index = 28)] + Mortal28(::core::primitive::u8), + #[codec(index = 29)] + Mortal29(::core::primitive::u8), + #[codec(index = 30)] + Mortal30(::core::primitive::u8), + #[codec(index = 31)] + Mortal31(::core::primitive::u8), + #[codec(index = 32)] + Mortal32(::core::primitive::u8), + #[codec(index = 33)] + Mortal33(::core::primitive::u8), + #[codec(index = 34)] + Mortal34(::core::primitive::u8), + #[codec(index = 35)] + Mortal35(::core::primitive::u8), + #[codec(index = 36)] + Mortal36(::core::primitive::u8), + #[codec(index = 37)] + Mortal37(::core::primitive::u8), + #[codec(index = 38)] + Mortal38(::core::primitive::u8), + #[codec(index = 39)] + Mortal39(::core::primitive::u8), + #[codec(index = 40)] + Mortal40(::core::primitive::u8), + #[codec(index = 41)] + Mortal41(::core::primitive::u8), + #[codec(index = 42)] + Mortal42(::core::primitive::u8), + #[codec(index = 43)] + Mortal43(::core::primitive::u8), + #[codec(index = 44)] + Mortal44(::core::primitive::u8), + #[codec(index = 45)] + Mortal45(::core::primitive::u8), + #[codec(index = 46)] + Mortal46(::core::primitive::u8), + #[codec(index = 47)] + Mortal47(::core::primitive::u8), + #[codec(index = 48)] + Mortal48(::core::primitive::u8), + #[codec(index = 49)] + Mortal49(::core::primitive::u8), + #[codec(index = 50)] + Mortal50(::core::primitive::u8), + #[codec(index = 51)] + Mortal51(::core::primitive::u8), + #[codec(index = 52)] + Mortal52(::core::primitive::u8), + #[codec(index = 53)] + Mortal53(::core::primitive::u8), + #[codec(index = 54)] + Mortal54(::core::primitive::u8), + #[codec(index = 55)] + Mortal55(::core::primitive::u8), + #[codec(index = 56)] + Mortal56(::core::primitive::u8), + #[codec(index = 57)] + Mortal57(::core::primitive::u8), + #[codec(index = 58)] + Mortal58(::core::primitive::u8), + #[codec(index = 59)] + Mortal59(::core::primitive::u8), + #[codec(index = 60)] + Mortal60(::core::primitive::u8), + #[codec(index = 61)] + Mortal61(::core::primitive::u8), + #[codec(index = 62)] + Mortal62(::core::primitive::u8), + #[codec(index = 63)] + Mortal63(::core::primitive::u8), + #[codec(index = 64)] + Mortal64(::core::primitive::u8), + #[codec(index = 65)] + Mortal65(::core::primitive::u8), + #[codec(index = 66)] + Mortal66(::core::primitive::u8), + #[codec(index = 67)] + Mortal67(::core::primitive::u8), + #[codec(index = 68)] + Mortal68(::core::primitive::u8), + #[codec(index = 69)] + Mortal69(::core::primitive::u8), + #[codec(index = 70)] + Mortal70(::core::primitive::u8), + #[codec(index = 71)] + Mortal71(::core::primitive::u8), + #[codec(index = 72)] + Mortal72(::core::primitive::u8), + #[codec(index = 73)] + Mortal73(::core::primitive::u8), + #[codec(index = 74)] + Mortal74(::core::primitive::u8), + #[codec(index = 75)] + Mortal75(::core::primitive::u8), + #[codec(index = 76)] + Mortal76(::core::primitive::u8), + #[codec(index = 77)] + Mortal77(::core::primitive::u8), + #[codec(index = 78)] + Mortal78(::core::primitive::u8), + #[codec(index = 79)] + Mortal79(::core::primitive::u8), + #[codec(index = 80)] + Mortal80(::core::primitive::u8), + #[codec(index = 81)] + Mortal81(::core::primitive::u8), + #[codec(index = 82)] + Mortal82(::core::primitive::u8), + #[codec(index = 83)] + Mortal83(::core::primitive::u8), + #[codec(index = 84)] + Mortal84(::core::primitive::u8), + #[codec(index = 85)] + Mortal85(::core::primitive::u8), + #[codec(index = 86)] + Mortal86(::core::primitive::u8), + #[codec(index = 87)] + Mortal87(::core::primitive::u8), + #[codec(index = 88)] + Mortal88(::core::primitive::u8), + #[codec(index = 89)] + Mortal89(::core::primitive::u8), + #[codec(index = 90)] + Mortal90(::core::primitive::u8), + #[codec(index = 91)] + Mortal91(::core::primitive::u8), + #[codec(index = 92)] + Mortal92(::core::primitive::u8), + #[codec(index = 93)] + Mortal93(::core::primitive::u8), + #[codec(index = 94)] + Mortal94(::core::primitive::u8), + #[codec(index = 95)] + Mortal95(::core::primitive::u8), + #[codec(index = 96)] + Mortal96(::core::primitive::u8), + #[codec(index = 97)] + Mortal97(::core::primitive::u8), + #[codec(index = 98)] + Mortal98(::core::primitive::u8), + #[codec(index = 99)] + Mortal99(::core::primitive::u8), + #[codec(index = 100)] + Mortal100(::core::primitive::u8), + #[codec(index = 101)] + Mortal101(::core::primitive::u8), + #[codec(index = 102)] + Mortal102(::core::primitive::u8), + #[codec(index = 103)] + Mortal103(::core::primitive::u8), + #[codec(index = 104)] + Mortal104(::core::primitive::u8), + #[codec(index = 105)] + Mortal105(::core::primitive::u8), + #[codec(index = 106)] + Mortal106(::core::primitive::u8), + #[codec(index = 107)] + Mortal107(::core::primitive::u8), + #[codec(index = 108)] + Mortal108(::core::primitive::u8), + #[codec(index = 109)] + Mortal109(::core::primitive::u8), + #[codec(index = 110)] + Mortal110(::core::primitive::u8), + #[codec(index = 111)] + Mortal111(::core::primitive::u8), + #[codec(index = 112)] + Mortal112(::core::primitive::u8), + #[codec(index = 113)] + Mortal113(::core::primitive::u8), + #[codec(index = 114)] + Mortal114(::core::primitive::u8), + #[codec(index = 115)] + Mortal115(::core::primitive::u8), + #[codec(index = 116)] + Mortal116(::core::primitive::u8), + #[codec(index = 117)] + Mortal117(::core::primitive::u8), + #[codec(index = 118)] + Mortal118(::core::primitive::u8), + #[codec(index = 119)] + Mortal119(::core::primitive::u8), + #[codec(index = 120)] + Mortal120(::core::primitive::u8), + #[codec(index = 121)] + Mortal121(::core::primitive::u8), + #[codec(index = 122)] + Mortal122(::core::primitive::u8), + #[codec(index = 123)] + Mortal123(::core::primitive::u8), + #[codec(index = 124)] + Mortal124(::core::primitive::u8), + #[codec(index = 125)] + Mortal125(::core::primitive::u8), + #[codec(index = 126)] + Mortal126(::core::primitive::u8), + #[codec(index = 127)] + Mortal127(::core::primitive::u8), + #[codec(index = 128)] + Mortal128(::core::primitive::u8), + #[codec(index = 129)] + Mortal129(::core::primitive::u8), + #[codec(index = 130)] + Mortal130(::core::primitive::u8), + #[codec(index = 131)] + Mortal131(::core::primitive::u8), + #[codec(index = 132)] + Mortal132(::core::primitive::u8), + #[codec(index = 133)] + Mortal133(::core::primitive::u8), + #[codec(index = 134)] + Mortal134(::core::primitive::u8), + #[codec(index = 135)] + Mortal135(::core::primitive::u8), + #[codec(index = 136)] + Mortal136(::core::primitive::u8), + #[codec(index = 137)] + Mortal137(::core::primitive::u8), + #[codec(index = 138)] + Mortal138(::core::primitive::u8), + #[codec(index = 139)] + Mortal139(::core::primitive::u8), + #[codec(index = 140)] + Mortal140(::core::primitive::u8), + #[codec(index = 141)] + Mortal141(::core::primitive::u8), + #[codec(index = 142)] + Mortal142(::core::primitive::u8), + #[codec(index = 143)] + Mortal143(::core::primitive::u8), + #[codec(index = 144)] + Mortal144(::core::primitive::u8), + #[codec(index = 145)] + Mortal145(::core::primitive::u8), + #[codec(index = 146)] + Mortal146(::core::primitive::u8), + #[codec(index = 147)] + Mortal147(::core::primitive::u8), + #[codec(index = 148)] + Mortal148(::core::primitive::u8), + #[codec(index = 149)] + Mortal149(::core::primitive::u8), + #[codec(index = 150)] + Mortal150(::core::primitive::u8), + #[codec(index = 151)] + Mortal151(::core::primitive::u8), + #[codec(index = 152)] + Mortal152(::core::primitive::u8), + #[codec(index = 153)] + Mortal153(::core::primitive::u8), + #[codec(index = 154)] + Mortal154(::core::primitive::u8), + #[codec(index = 155)] + Mortal155(::core::primitive::u8), + #[codec(index = 156)] + Mortal156(::core::primitive::u8), + #[codec(index = 157)] + Mortal157(::core::primitive::u8), + #[codec(index = 158)] + Mortal158(::core::primitive::u8), + #[codec(index = 159)] + Mortal159(::core::primitive::u8), + #[codec(index = 160)] + Mortal160(::core::primitive::u8), + #[codec(index = 161)] + Mortal161(::core::primitive::u8), + #[codec(index = 162)] + Mortal162(::core::primitive::u8), + #[codec(index = 163)] + Mortal163(::core::primitive::u8), + #[codec(index = 164)] + Mortal164(::core::primitive::u8), + #[codec(index = 165)] + Mortal165(::core::primitive::u8), + #[codec(index = 166)] + Mortal166(::core::primitive::u8), + #[codec(index = 167)] + Mortal167(::core::primitive::u8), + #[codec(index = 168)] + Mortal168(::core::primitive::u8), + #[codec(index = 169)] + Mortal169(::core::primitive::u8), + #[codec(index = 170)] + Mortal170(::core::primitive::u8), + #[codec(index = 171)] + Mortal171(::core::primitive::u8), + #[codec(index = 172)] + Mortal172(::core::primitive::u8), + #[codec(index = 173)] + Mortal173(::core::primitive::u8), + #[codec(index = 174)] + Mortal174(::core::primitive::u8), + #[codec(index = 175)] + Mortal175(::core::primitive::u8), + #[codec(index = 176)] + Mortal176(::core::primitive::u8), + #[codec(index = 177)] + Mortal177(::core::primitive::u8), + #[codec(index = 178)] + Mortal178(::core::primitive::u8), + #[codec(index = 179)] + Mortal179(::core::primitive::u8), + #[codec(index = 180)] + Mortal180(::core::primitive::u8), + #[codec(index = 181)] + Mortal181(::core::primitive::u8), + #[codec(index = 182)] + Mortal182(::core::primitive::u8), + #[codec(index = 183)] + Mortal183(::core::primitive::u8), + #[codec(index = 184)] + Mortal184(::core::primitive::u8), + #[codec(index = 185)] + Mortal185(::core::primitive::u8), + #[codec(index = 186)] + Mortal186(::core::primitive::u8), + #[codec(index = 187)] + Mortal187(::core::primitive::u8), + #[codec(index = 188)] + Mortal188(::core::primitive::u8), + #[codec(index = 189)] + Mortal189(::core::primitive::u8), + #[codec(index = 190)] + Mortal190(::core::primitive::u8), + #[codec(index = 191)] + Mortal191(::core::primitive::u8), + #[codec(index = 192)] + Mortal192(::core::primitive::u8), + #[codec(index = 193)] + Mortal193(::core::primitive::u8), + #[codec(index = 194)] + Mortal194(::core::primitive::u8), + #[codec(index = 195)] + Mortal195(::core::primitive::u8), + #[codec(index = 196)] + Mortal196(::core::primitive::u8), + #[codec(index = 197)] + Mortal197(::core::primitive::u8), + #[codec(index = 198)] + Mortal198(::core::primitive::u8), + #[codec(index = 199)] + Mortal199(::core::primitive::u8), + #[codec(index = 200)] + Mortal200(::core::primitive::u8), + #[codec(index = 201)] + Mortal201(::core::primitive::u8), + #[codec(index = 202)] + Mortal202(::core::primitive::u8), + #[codec(index = 203)] + Mortal203(::core::primitive::u8), + #[codec(index = 204)] + Mortal204(::core::primitive::u8), + #[codec(index = 205)] + Mortal205(::core::primitive::u8), + #[codec(index = 206)] + Mortal206(::core::primitive::u8), + #[codec(index = 207)] + Mortal207(::core::primitive::u8), + #[codec(index = 208)] + Mortal208(::core::primitive::u8), + #[codec(index = 209)] + Mortal209(::core::primitive::u8), + #[codec(index = 210)] + Mortal210(::core::primitive::u8), + #[codec(index = 211)] + Mortal211(::core::primitive::u8), + #[codec(index = 212)] + Mortal212(::core::primitive::u8), + #[codec(index = 213)] + Mortal213(::core::primitive::u8), + #[codec(index = 214)] + Mortal214(::core::primitive::u8), + #[codec(index = 215)] + Mortal215(::core::primitive::u8), + #[codec(index = 216)] + Mortal216(::core::primitive::u8), + #[codec(index = 217)] + Mortal217(::core::primitive::u8), + #[codec(index = 218)] + Mortal218(::core::primitive::u8), + #[codec(index = 219)] + Mortal219(::core::primitive::u8), + #[codec(index = 220)] + Mortal220(::core::primitive::u8), + #[codec(index = 221)] + Mortal221(::core::primitive::u8), + #[codec(index = 222)] + Mortal222(::core::primitive::u8), + #[codec(index = 223)] + Mortal223(::core::primitive::u8), + #[codec(index = 224)] + Mortal224(::core::primitive::u8), + #[codec(index = 225)] + Mortal225(::core::primitive::u8), + #[codec(index = 226)] + Mortal226(::core::primitive::u8), + #[codec(index = 227)] + Mortal227(::core::primitive::u8), + #[codec(index = 228)] + Mortal228(::core::primitive::u8), + #[codec(index = 229)] + Mortal229(::core::primitive::u8), + #[codec(index = 230)] + Mortal230(::core::primitive::u8), + #[codec(index = 231)] + Mortal231(::core::primitive::u8), + #[codec(index = 232)] + Mortal232(::core::primitive::u8), + #[codec(index = 233)] + Mortal233(::core::primitive::u8), + #[codec(index = 234)] + Mortal234(::core::primitive::u8), + #[codec(index = 235)] + Mortal235(::core::primitive::u8), + #[codec(index = 236)] + Mortal236(::core::primitive::u8), + #[codec(index = 237)] + Mortal237(::core::primitive::u8), + #[codec(index = 238)] + Mortal238(::core::primitive::u8), + #[codec(index = 239)] + Mortal239(::core::primitive::u8), + #[codec(index = 240)] + Mortal240(::core::primitive::u8), + #[codec(index = 241)] + Mortal241(::core::primitive::u8), + #[codec(index = 242)] + Mortal242(::core::primitive::u8), + #[codec(index = 243)] + Mortal243(::core::primitive::u8), + #[codec(index = 244)] + Mortal244(::core::primitive::u8), + #[codec(index = 245)] + Mortal245(::core::primitive::u8), + #[codec(index = 246)] + Mortal246(::core::primitive::u8), + #[codec(index = 247)] + Mortal247(::core::primitive::u8), + #[codec(index = 248)] + Mortal248(::core::primitive::u8), + #[codec(index = 249)] + Mortal249(::core::primitive::u8), + #[codec(index = 250)] + Mortal250(::core::primitive::u8), + #[codec(index = 251)] + Mortal251(::core::primitive::u8), + #[codec(index = 252)] + Mortal252(::core::primitive::u8), + #[codec(index = 253)] + Mortal253(::core::primitive::u8), + #[codec(index = 254)] + Mortal254(::core::primitive::u8), + #[codec(index = 255)] + Mortal255(::core::primitive::u8), + } + } + pub mod header { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Header<_0> { + pub parent_hash: ::subxt::utils::H256, + #[codec(compact)] + pub number: _0, + pub state_root: ::subxt::utils::H256, + pub extrinsics_root: ::subxt::utils::H256, + pub digest: runtime_types::sp_runtime::generic::digest::Digest, + } + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BlakeTwo256; + } + pub mod transaction_validity { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum InvalidTransaction { + #[codec(index = 0)] + Call, + #[codec(index = 1)] + Payment, + #[codec(index = 2)] + Future, + #[codec(index = 3)] + Stale, + #[codec(index = 4)] + BadProof, + #[codec(index = 5)] + AncientBirthBlock, + #[codec(index = 6)] + ExhaustsResources, + #[codec(index = 7)] + Custom(::core::primitive::u8), + #[codec(index = 8)] + BadMandatory, + #[codec(index = 9)] + MandatoryValidation, + #[codec(index = 10)] + BadSigner, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TransactionSource { + #[codec(index = 0)] + InBlock, + #[codec(index = 1)] + Local, + #[codec(index = 2)] + External, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TransactionValidityError { + #[codec(index = 0)] + Invalid(runtime_types::sp_runtime::transaction_validity::InvalidTransaction), + #[codec(index = 1)] + Unknown(runtime_types::sp_runtime::transaction_validity::UnknownTransaction), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum UnknownTransaction { + #[codec(index = 0)] + CannotLookup, + #[codec(index = 1)] + NoUnsignedValidator, + #[codec(index = 2)] + Custom(::core::primitive::u8), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidTransaction { + pub priority: ::core::primitive::u64, + pub requires: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub provides: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub longevity: ::core::primitive::u64, + pub propagate: ::core::primitive::bool, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DispatchError { + #[codec(index = 0)] + Other, + #[codec(index = 1)] + CannotLookup, + #[codec(index = 2)] + BadOrigin, + #[codec(index = 3)] + Module(runtime_types::sp_runtime::ModuleError), + #[codec(index = 4)] + ConsumerRemaining, + #[codec(index = 5)] + NoProviders, + #[codec(index = 6)] + TooManyConsumers, + #[codec(index = 7)] + Token(runtime_types::sp_runtime::TokenError), + #[codec(index = 8)] + Arithmetic(runtime_types::sp_arithmetic::ArithmeticError), + #[codec(index = 9)] + Transactional(runtime_types::sp_runtime::TransactionalError), + #[codec(index = 10)] + Exhausted, + #[codec(index = 11)] + Corruption, + #[codec(index = 12)] + Unavailable, + #[codec(index = 13)] + RootNotAllowed, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchErrorWithPostInfo<_0> { + pub post_info: _0, + pub error: runtime_types::sp_runtime::DispatchError, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ModuleError { + pub index: ::core::primitive::u8, + pub error: [::core::primitive::u8; 4usize], + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum MultiSignature { + #[codec(index = 0)] + Ed25519(runtime_types::sp_core::ed25519::Signature), + #[codec(index = 1)] + Sr25519(runtime_types::sp_core::sr25519::Signature), + #[codec(index = 2)] + Ecdsa(runtime_types::sp_core::ecdsa::Signature), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum MultiSigner { + #[codec(index = 0)] + Ed25519(runtime_types::sp_core::ed25519::Public), + #[codec(index = 1)] + Sr25519(runtime_types::sp_core::sr25519::Public), + #[codec(index = 2)] + Ecdsa(runtime_types::sp_core::ecdsa::Public), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TokenError { + #[codec(index = 0)] + FundsUnavailable, + #[codec(index = 1)] + OnlyProvider, + #[codec(index = 2)] + BelowMinimum, + #[codec(index = 3)] + CannotCreate, + #[codec(index = 4)] + UnknownAsset, + #[codec(index = 5)] + Frozen, + #[codec(index = 6)] + Unsupported, + #[codec(index = 7)] + CannotCreateHold, + #[codec(index = 8)] + NotExpendable, + #[codec(index = 9)] + Blocked, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TransactionalError { + #[codec(index = 0)] + LimitReached, + #[codec(index = 1)] + NoLayer, + } + } + pub mod sp_session { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MembershipProof { + pub session: ::core::primitive::u32, + pub trie_nodes: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub validator_count: ::core::primitive::u32, + } + } + pub mod sp_staking { + use super::runtime_types; + pub mod offence { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OffenceDetails<_0, _1> { + pub offender: _1, + pub reporters: ::std::vec::Vec<_0>, + } + } + } + pub mod sp_version { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RuntimeVersion { + pub spec_name: ::std::string::String, + pub impl_name: ::std::string::String, + pub authoring_version: ::core::primitive::u32, + pub spec_version: ::core::primitive::u32, + pub impl_version: ::core::primitive::u32, + pub apis: + ::std::vec::Vec<([::core::primitive::u8; 8usize], ::core::primitive::u32)>, + pub transaction_version: ::core::primitive::u32, + pub state_version: ::core::primitive::u8, + } + } + pub mod sp_weights { + use super::runtime_types; + pub mod weight_v2 { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Weight { + #[codec(compact)] + pub ref_time: ::core::primitive::u64, + #[codec(compact)] + pub proof_size: ::core::primitive::u64, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RuntimeDbWeight { + pub read: ::core::primitive::u64, + pub write: ::core::primitive::u64, + } + } + pub mod staging_xcm { + use super::runtime_types; + pub mod v3 { + use super::runtime_types; + pub mod multilocation { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MultiLocation { + pub parents: ::core::primitive::u8, + pub interior: runtime_types::xcm::v3::junctions::Junctions, + } + } + } + } + pub mod xcm { + use super::runtime_types; + pub mod double_encoded { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DoubleEncoded { + pub encoded: ::std::vec::Vec<::core::primitive::u8>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DoubleEncoded2 { + pub encoded: ::std::vec::Vec<::core::primitive::u8>, + } + } + pub mod v2 { + use super::runtime_types; + pub mod junction { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junction { + #[codec(index = 0)] + Parachain(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 1)] + AccountId32 { + network: runtime_types::xcm::v2::NetworkId, + id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + AccountIndex64 { + network: runtime_types::xcm::v2::NetworkId, + #[codec(compact)] + index: ::core::primitive::u64, + }, + #[codec(index = 3)] + AccountKey20 { + network: runtime_types::xcm::v2::NetworkId, + key: [::core::primitive::u8; 20usize], + }, + #[codec(index = 4)] + PalletInstance(::core::primitive::u8), + #[codec(index = 5)] + GeneralIndex(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 6)] + GeneralKey( + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + ::core::primitive::u8, + >, + ), + #[codec(index = 7)] + OnlyChild, + #[codec(index = 8)] + Plurality { + id: runtime_types::xcm::v2::BodyId, + part: runtime_types::xcm::v2::BodyPart, + }, + } + } + pub mod multiasset { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetId { + #[codec(index = 0)] + Concrete(runtime_types::xcm::v2::multilocation::MultiLocation), + #[codec(index = 1)] + Abstract(::std::vec::Vec<::core::primitive::u8>), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetInstance { + #[codec(index = 0)] + Undefined, + #[codec(index = 1)] + Index(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 2)] + Array4([::core::primitive::u8; 4usize]), + #[codec(index = 3)] + Array8([::core::primitive::u8; 8usize]), + #[codec(index = 4)] + Array16([::core::primitive::u8; 16usize]), + #[codec(index = 5)] + Array32([::core::primitive::u8; 32usize]), + #[codec(index = 6)] + Blob(::std::vec::Vec<::core::primitive::u8>), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Fungibility { + #[codec(index = 0)] + Fungible(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 1)] + NonFungible(runtime_types::xcm::v2::multiasset::AssetInstance), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MultiAsset { + pub id: runtime_types::xcm::v2::multiasset::AssetId, + pub fun: runtime_types::xcm::v2::multiasset::Fungibility, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum MultiAssetFilter { + #[codec(index = 0)] + Definite(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 1)] + Wild(runtime_types::xcm::v2::multiasset::WildMultiAsset), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MultiAssets( + pub ::std::vec::Vec, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildFungibility { + #[codec(index = 0)] + Fungible, + #[codec(index = 1)] + NonFungible, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildMultiAsset { + #[codec(index = 0)] + All, + #[codec(index = 1)] + AllOf { + id: runtime_types::xcm::v2::multiasset::AssetId, + fun: runtime_types::xcm::v2::multiasset::WildFungibility, + }, + } + } + pub mod multilocation { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junctions { + #[codec(index = 0)] + Here, + #[codec(index = 1)] + X1(runtime_types::xcm::v2::junction::Junction), + #[codec(index = 2)] + X2( + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + ), + #[codec(index = 3)] + X3( + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + ), + #[codec(index = 4)] + X4( + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + ), + #[codec(index = 5)] + X5( + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + ), + #[codec(index = 6)] + X6( + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + ), + #[codec(index = 7)] + X7( + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + ), + #[codec(index = 8)] + X8( + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + ), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MultiLocation { + pub parents: ::core::primitive::u8, + pub interior: runtime_types::xcm::v2::multilocation::Junctions, + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Error { + #[codec(index = 0)] + Overflow, + #[codec(index = 1)] + Unimplemented, + #[codec(index = 2)] + UntrustedReserveLocation, + #[codec(index = 3)] + UntrustedTeleportLocation, + #[codec(index = 4)] + MultiLocationFull, + #[codec(index = 5)] + MultiLocationNotInvertible, + #[codec(index = 6)] + BadOrigin, + #[codec(index = 7)] + InvalidLocation, + #[codec(index = 8)] + AssetNotFound, + #[codec(index = 9)] + FailedToTransactAsset, + #[codec(index = 10)] + NotWithdrawable, + #[codec(index = 11)] + LocationCannotHold, + #[codec(index = 12)] + ExceedsMaxMessageSize, + #[codec(index = 13)] + DestinationUnsupported, + #[codec(index = 14)] + Transport, + #[codec(index = 15)] + Unroutable, + #[codec(index = 16)] + UnknownClaim, + #[codec(index = 17)] + FailedToDecode, + #[codec(index = 18)] + MaxWeightInvalid, + #[codec(index = 19)] + NotHoldingFees, + #[codec(index = 20)] + TooExpensive, + #[codec(index = 21)] + Trap(::core::primitive::u64), + #[codec(index = 22)] + UnhandledXcmVersion, + #[codec(index = 23)] + WeightLimitReached(::core::primitive::u64), + #[codec(index = 24)] + Barrier, + #[codec(index = 25)] + WeightNotComputable, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum BodyId { + #[codec(index = 0)] + Unit, + #[codec(index = 1)] + Named( + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + ::core::primitive::u8, + >, + ), + #[codec(index = 2)] + Index(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 3)] + Executive, + #[codec(index = 4)] + Technical, + #[codec(index = 5)] + Legislative, + #[codec(index = 6)] + Judicial, + #[codec(index = 7)] + Defense, + #[codec(index = 8)] + Administration, + #[codec(index = 9)] + Treasury, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum BodyPart { + #[codec(index = 0)] + Voice, + #[codec(index = 1)] + Members { + #[codec(compact)] + count: ::core::primitive::u32, + }, + #[codec(index = 2)] + Fraction { + #[codec(compact)] + nom: ::core::primitive::u32, + #[codec(compact)] + denom: ::core::primitive::u32, + }, + #[codec(index = 3)] + AtLeastProportion { + #[codec(compact)] + nom: ::core::primitive::u32, + #[codec(compact)] + denom: ::core::primitive::u32, + }, + #[codec(index = 4)] + MoreThanProportion { + #[codec(compact)] + nom: ::core::primitive::u32, + #[codec(compact)] + denom: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction { + #[codec(index = 0)] + WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::xcm::v2::Response, + #[codec(compact)] + max_weight: ::core::primitive::u64, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_type: runtime_types::xcm::v2::OriginKind, + #[codec(compact)] + require_weight_at_most: ::core::primitive::u64, + call: runtime_types::xcm::double_encoded::DoubleEncoded, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::xcm::v2::multilocation::Junctions), + #[codec(index = 12)] + ReportError { + #[codec(compact)] + query_id: ::core::primitive::u64, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + #[codec(compact)] + max_response_weight: ::core::primitive::u64, + }, + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + #[codec(compact)] + max_assets: ::core::primitive::u32, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + #[codec(compact)] + max_assets: ::core::primitive::u32, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + receive: runtime_types::xcm::v2::multiasset::MultiAssets, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + reserve: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 18)] + QueryHolding { + #[codec(compact)] + query_id: ::core::primitive::u64, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + #[codec(compact)] + max_response_weight: ::core::primitive::u64, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::xcm::v2::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v2::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::xcm::v2::Xcm), + #[codec(index = 22)] + SetAppendix(runtime_types::xcm::v2::Xcm), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + ticket: runtime_types::xcm::v2::multilocation::MultiLocation, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + #[codec(compact)] + max_response_weight: ::core::primitive::u64, + }, + #[codec(index = 27)] + UnsubscribeVersion, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction2 { + #[codec(index = 0)] + WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::xcm::v2::Response, + #[codec(compact)] + max_weight: ::core::primitive::u64, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_type: runtime_types::xcm::v2::OriginKind, + #[codec(compact)] + require_weight_at_most: ::core::primitive::u64, + call: runtime_types::xcm::double_encoded::DoubleEncoded2, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::xcm::v2::multilocation::Junctions), + #[codec(index = 12)] + ReportError { + #[codec(compact)] + query_id: ::core::primitive::u64, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + #[codec(compact)] + max_response_weight: ::core::primitive::u64, + }, + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + #[codec(compact)] + max_assets: ::core::primitive::u32, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + #[codec(compact)] + max_assets: ::core::primitive::u32, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + receive: runtime_types::xcm::v2::multiasset::MultiAssets, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + reserve: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, + }, + #[codec(index = 18)] + QueryHolding { + #[codec(compact)] + query_id: ::core::primitive::u64, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + #[codec(compact)] + max_response_weight: ::core::primitive::u64, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::xcm::v2::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v2::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::xcm::v2::Xcm2), + #[codec(index = 22)] + SetAppendix(runtime_types::xcm::v2::Xcm2), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + ticket: runtime_types::xcm::v2::multilocation::MultiLocation, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + #[codec(compact)] + max_response_weight: ::core::primitive::u64, + }, + #[codec(index = 27)] + UnsubscribeVersion, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum NetworkId { + #[codec(index = 0)] + Any, + #[codec(index = 1)] + Named( + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + ::core::primitive::u8, + >, + ), + #[codec(index = 2)] + Polkadot, + #[codec(index = 3)] + Kusama, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum OriginKind { + #[codec(index = 0)] + Native, + #[codec(index = 1)] + SovereignAccount, + #[codec(index = 2)] + Superuser, + #[codec(index = 3)] + Xcm, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Response { + #[codec(index = 0)] + Null, + #[codec(index = 1)] + Assets(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 2)] + ExecutionResult( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v2::traits::Error, + )>, + ), + #[codec(index = 3)] + Version(::core::primitive::u32), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WeightLimit { + #[codec(index = 0)] + Unlimited, + #[codec(index = 1)] + Limited(#[codec(compact)] ::core::primitive::u64), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm(pub ::std::vec::Vec); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm2(pub ::std::vec::Vec); + } + pub mod v3 { + use super::runtime_types; + pub mod junction { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum BodyId { + #[codec(index = 0)] + Unit, + #[codec(index = 1)] + Moniker([::core::primitive::u8; 4usize]), + #[codec(index = 2)] + Index(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 3)] + Executive, + #[codec(index = 4)] + Technical, + #[codec(index = 5)] + Legislative, + #[codec(index = 6)] + Judicial, + #[codec(index = 7)] + Defense, + #[codec(index = 8)] + Administration, + #[codec(index = 9)] + Treasury, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum BodyPart { + #[codec(index = 0)] + Voice, + #[codec(index = 1)] + Members { + #[codec(compact)] + count: ::core::primitive::u32, + }, + #[codec(index = 2)] + Fraction { + #[codec(compact)] + nom: ::core::primitive::u32, + #[codec(compact)] + denom: ::core::primitive::u32, + }, + #[codec(index = 3)] + AtLeastProportion { + #[codec(compact)] + nom: ::core::primitive::u32, + #[codec(compact)] + denom: ::core::primitive::u32, + }, + #[codec(index = 4)] + MoreThanProportion { + #[codec(compact)] + nom: ::core::primitive::u32, + #[codec(compact)] + denom: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junction { + #[codec(index = 0)] + Parachain(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 1)] + AccountId32 { + network: + ::core::option::Option, + id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + AccountIndex64 { + network: + ::core::option::Option, + #[codec(compact)] + index: ::core::primitive::u64, + }, + #[codec(index = 3)] + AccountKey20 { + network: + ::core::option::Option, + key: [::core::primitive::u8; 20usize], + }, + #[codec(index = 4)] + PalletInstance(::core::primitive::u8), + #[codec(index = 5)] + GeneralIndex(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 6)] + GeneralKey { + length: ::core::primitive::u8, + data: [::core::primitive::u8; 32usize], + }, + #[codec(index = 7)] + OnlyChild, + #[codec(index = 8)] + Plurality { + id: runtime_types::xcm::v3::junction::BodyId, + part: runtime_types::xcm::v3::junction::BodyPart, + }, + #[codec(index = 9)] + GlobalConsensus(runtime_types::xcm::v3::junction::NetworkId), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum NetworkId { + #[codec(index = 0)] + ByGenesis([::core::primitive::u8; 32usize]), + #[codec(index = 1)] + ByFork { + block_number: ::core::primitive::u64, + block_hash: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + Polkadot, + #[codec(index = 3)] + Kusama, + #[codec(index = 4)] + Westend, + #[codec(index = 5)] + Rococo, + #[codec(index = 6)] + Wococo, + #[codec(index = 7)] + Ethereum { + #[codec(compact)] + chain_id: ::core::primitive::u64, + }, + #[codec(index = 8)] + BitcoinCore, + #[codec(index = 9)] + BitcoinCash, + } + } + pub mod junctions { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junctions { + #[codec(index = 0)] + Here, + #[codec(index = 1)] + X1(runtime_types::xcm::v3::junction::Junction), + #[codec(index = 2)] + X2( + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + ), + #[codec(index = 3)] + X3( + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + ), + #[codec(index = 4)] + X4( + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + ), + #[codec(index = 5)] + X5( + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + ), + #[codec(index = 6)] + X6( + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + ), + #[codec(index = 7)] + X7( + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + ), + #[codec(index = 8)] + X8( + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + ), + } + } + pub mod multiasset { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetId { + #[codec(index = 0)] + Concrete(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 1)] + Abstract([::core::primitive::u8; 32usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetInstance { + #[codec(index = 0)] + Undefined, + #[codec(index = 1)] + Index(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 2)] + Array4([::core::primitive::u8; 4usize]), + #[codec(index = 3)] + Array8([::core::primitive::u8; 8usize]), + #[codec(index = 4)] + Array16([::core::primitive::u8; 16usize]), + #[codec(index = 5)] + Array32([::core::primitive::u8; 32usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Fungibility { + #[codec(index = 0)] + Fungible(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 1)] + NonFungible(runtime_types::xcm::v3::multiasset::AssetInstance), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MultiAsset { + pub id: runtime_types::xcm::v3::multiasset::AssetId, + pub fun: runtime_types::xcm::v3::multiasset::Fungibility, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum MultiAssetFilter { + #[codec(index = 0)] + Definite(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 1)] + Wild(runtime_types::xcm::v3::multiasset::WildMultiAsset), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MultiAssets( + pub ::std::vec::Vec, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildFungibility { + #[codec(index = 0)] + Fungible, + #[codec(index = 1)] + NonFungible, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildMultiAsset { + #[codec(index = 0)] + All, + #[codec(index = 1)] + AllOf { + id: runtime_types::xcm::v3::multiasset::AssetId, + fun: runtime_types::xcm::v3::multiasset::WildFungibility, + }, + #[codec(index = 2)] + AllCounted(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 3)] + AllOfCounted { + id: runtime_types::xcm::v3::multiasset::AssetId, + fun: runtime_types::xcm::v3::multiasset::WildFungibility, + #[codec(compact)] + count: ::core::primitive::u32, + }, + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Error { + #[codec(index = 0)] + Overflow, + #[codec(index = 1)] + Unimplemented, + #[codec(index = 2)] + UntrustedReserveLocation, + #[codec(index = 3)] + UntrustedTeleportLocation, + #[codec(index = 4)] + LocationFull, + #[codec(index = 5)] + LocationNotInvertible, + #[codec(index = 6)] + BadOrigin, + #[codec(index = 7)] + InvalidLocation, + #[codec(index = 8)] + AssetNotFound, + #[codec(index = 9)] + FailedToTransactAsset, + #[codec(index = 10)] + NotWithdrawable, + #[codec(index = 11)] + LocationCannotHold, + #[codec(index = 12)] + ExceedsMaxMessageSize, + #[codec(index = 13)] + DestinationUnsupported, + #[codec(index = 14)] + Transport, + #[codec(index = 15)] + Unroutable, + #[codec(index = 16)] + UnknownClaim, + #[codec(index = 17)] + FailedToDecode, + #[codec(index = 18)] + MaxWeightInvalid, + #[codec(index = 19)] + NotHoldingFees, + #[codec(index = 20)] + TooExpensive, + #[codec(index = 21)] + Trap(::core::primitive::u64), + #[codec(index = 22)] + ExpectationFalse, + #[codec(index = 23)] + PalletNotFound, + #[codec(index = 24)] + NameMismatch, + #[codec(index = 25)] + VersionIncompatible, + #[codec(index = 26)] + HoldingWouldOverflow, + #[codec(index = 27)] + ExportError, + #[codec(index = 28)] + ReanchorFailed, + #[codec(index = 29)] + NoDeal, + #[codec(index = 30)] + FeesNotMet, + #[codec(index = 31)] + LockError, + #[codec(index = 32)] + NoPermission, + #[codec(index = 33)] + Unanchored, + #[codec(index = 34)] + NotDepositable, + #[codec(index = 35)] + UnhandledXcmVersion, + #[codec(index = 36)] + WeightLimitReached(runtime_types::sp_weights::weight_v2::Weight), + #[codec(index = 37)] + Barrier, + #[codec(index = 38)] + WeightNotComputable, + #[codec(index = 39)] + ExceedsStackLimit, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Outcome { + #[codec(index = 0)] + Complete(runtime_types::sp_weights::weight_v2::Weight), + #[codec(index = 1)] + Incomplete( + runtime_types::sp_weights::weight_v2::Weight, + runtime_types::xcm::v3::traits::Error, + ), + #[codec(index = 2)] + Error(runtime_types::xcm::v3::traits::Error), + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction { + #[codec(index = 0)] + WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::xcm::v3::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssets, + beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssets, + dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::xcm::v3::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::xcm::v3::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + want: runtime_types::xcm::v3::multiasset::MultiAssets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + reserve: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::xcm::v3::QueryResponseInfo, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::xcm::v3::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::xcm::v3::Xcm), + #[codec(index = 22)] + SetAppendix(runtime_types::xcm::v3::Xcm), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssets, + ticket: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 29)] + ExpectAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::xcm::v3::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::xcm::v3::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::xcm::v3::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::xcm::v3::junction::NetworkId, + destination: runtime_types::xcm::v3::junctions::Junctions, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + unlocker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + target: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + locker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 43)] + SetFeesMode { jit_withdraw: ::core::primitive::bool }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction2 { + #[codec(index = 0)] + WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::xcm::v3::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssets, + beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssets, + dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded2, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::xcm::v3::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::xcm::v3::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + want: runtime_types::xcm::v3::multiasset::MultiAssets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + reserve: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::xcm::v3::QueryResponseInfo, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::xcm::v3::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::xcm::v3::Xcm2), + #[codec(index = 22)] + SetAppendix(runtime_types::xcm::v3::Xcm2), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::xcm::v3::multiasset::MultiAssets, + ticket: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 29)] + ExpectAsset(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::xcm::v3::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::xcm::v3::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::xcm::v3::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::xcm::v3::junction::NetworkId, + destination: runtime_types::xcm::v3::junctions::Junctions, + xcm: runtime_types::xcm::v3::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + unlocker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + target: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::xcm::v3::multiasset::MultiAsset, + locker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + }, + #[codec(index = 43)] + SetFeesMode { jit_withdraw: ::core::primitive::bool }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v3::multilocation::MultiLocation, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum MaybeErrorCode { + #[codec(index = 0)] + Success, + #[codec(index = 1)] + Error( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ), + #[codec(index = 2)] + TruncatedError( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PalletInfo { + #[codec(compact)] + pub index: ::core::primitive::u32, + pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + #[codec(compact)] + pub major: ::core::primitive::u32, + #[codec(compact)] + pub minor: ::core::primitive::u32, + #[codec(compact)] + pub patch: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryResponseInfo { + pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + #[codec(compact)] + pub query_id: ::core::primitive::u64, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Response { + #[codec(index = 0)] + Null, + #[codec(index = 1)] + Assets(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 2)] + ExecutionResult( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 3)] + Version(::core::primitive::u32), + #[codec(index = 4)] + PalletsInfo( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::xcm::v3::PalletInfo, + >, + ), + #[codec(index = 5)] + DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WeightLimit { + #[codec(index = 0)] + Unlimited, + #[codec(index = 1)] + Limited(runtime_types::sp_weights::weight_v2::Weight), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm(pub ::std::vec::Vec); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Xcm2(pub ::std::vec::Vec); + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedAssetId { + #[codec(index = 3)] + V3(runtime_types::xcm::v3::multiasset::AssetId), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedMultiAssets { + #[codec(index = 1)] + V2(runtime_types::xcm::v2::multiasset::MultiAssets), + #[codec(index = 3)] + V3(runtime_types::xcm::v3::multiasset::MultiAssets), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedMultiLocation { + #[codec(index = 1)] + V2(runtime_types::xcm::v2::multilocation::MultiLocation), + #[codec(index = 3)] + V3(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedResponse { + #[codec(index = 2)] + V2(runtime_types::xcm::v2::Response), + #[codec(index = 3)] + V3(runtime_types::xcm::v3::Response), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedXcm { + #[codec(index = 2)] + V2(runtime_types::xcm::v2::Xcm), + #[codec(index = 3)] + V3(runtime_types::xcm::v3::Xcm), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedXcm2 { + #[codec(index = 2)] + V2(runtime_types::xcm::v2::Xcm2), + #[codec(index = 3)] + V3(runtime_types::xcm::v3::Xcm2), + } + } + } +} diff --git a/modules/consensus/beefy/prover/src/runtime/rococo_local.rs b/modules/consensus/beefy/prover/src/runtime/rococo_local.rs index ce13f7676..2b497ad83 100644 --- a/modules/consensus/beefy/prover/src/runtime/rococo_local.rs +++ b/modules/consensus/beefy/prover/src/runtime/rococo_local.rs @@ -6,7 +6,7 @@ pub mod api { mod root_mod { pub use super::*; } - pub static PALLETS: [&str; 64usize] = [ + pub static PALLETS: [&str; 66usize] = [ "System", "Babe", "Timestamp", @@ -16,19 +16,16 @@ pub mod api { "Authorship", "Offences", "Historical", - "Beefy", - "Mmr", - "MmrLeaf", "Session", "Grandpa", - "ImOnline", "AuthorityDiscovery", - "Democracy", - "Council", - "TechnicalCommittee", - "PhragmenElection", - "TechnicalMembership", "Treasury", + "ConvictionVoting", + "Referenda", + "FellowshipCollective", + "FellowshipReferenda", + "Origins", + "Whitelist", "Claims", "Utility", "Identity", @@ -39,9 +36,9 @@ pub mod api { "Proxy", "Multisig", "Preimage", + "AssetRate", "Bounties", "ChildBounties", - "Tips", "Nis", "NisCounterpartBalances", "ParachainsOrigin", @@ -58,22 +55,28 @@ pub mod api { "ParasDisputes", "ParasSlashing", "MessageQueue", - "ParaAssignmentProvider", "OnDemandAssignmentProvider", - "ParachainsAssignmentProvider", + "CoretimeAssignmentProvider", "Registrar", "Slots", "Auctions", "Crowdloan", + "Coretime", "XcmPallet", + "Beefy", + "Mmr", + "MmrLeaf", + "IdentityMigrator", "ParasSudoWrapper", "AssignedSlots", "ValidatorManager", "StateTrieMigration", + "RootTesting", "Sudo", ]; - pub static RUNTIME_APIS: [&str; 15usize] = [ + pub static RUNTIME_APIS: [&str; 17usize] = [ "Core", + "XcmPaymentApi", "Metadata", "BlockBuilder", "TaggedTransactionQueue", @@ -88,6 +91,7 @@ pub mod api { "AccountNonceApi", "TransactionPaymentApi", "BeefyMmrApi", + "GenesisBuilder", ]; #[doc = r" The error type returned when there is a runtime issue."] pub type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -117,6 +121,9 @@ pub mod api { pub fn core(&self) -> core::Core { core::Core } + pub fn xcm_payment_api(&self) -> xcm_payment_api::XcmPaymentApi { + xcm_payment_api::XcmPaymentApi + } pub fn metadata(&self) -> metadata::Metadata { metadata::Metadata } @@ -165,6 +172,9 @@ pub mod api { pub fn beefy_mmr_api(&self) -> beefy_mmr_api::BeefyMmrApi { beefy_mmr_api::BeefyMmrApi } + pub fn genesis_builder(&self) -> genesis_builder::GenesisBuilder { + genesis_builder::GenesisBuilder + } } pub mod core { use super::{root_mod, runtime_types}; @@ -206,21 +216,24 @@ pub mod api { ], ) } - #[doc = " Initialize a block with the given header."] + #[doc = " Initialize a block with the given header and return the runtime executive mode."] pub fn initialize_block( &self, header: runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, >, - ) -> ::subxt::runtime_api::Payload { + ) -> ::subxt::runtime_api::Payload< + types::InitializeBlock, + runtime_types::sp_runtime::ExtrinsicInclusionMode, + > { ::subxt::runtime_api::Payload::new_static( "Core", "initialize_block", types::InitializeBlock { header }, [ - 146u8, 138u8, 72u8, 240u8, 63u8, 96u8, 110u8, 189u8, 77u8, 92u8, 96u8, - 232u8, 41u8, 217u8, 105u8, 148u8, 83u8, 190u8, 152u8, 219u8, 19u8, - 87u8, 163u8, 1u8, 232u8, 25u8, 221u8, 74u8, 224u8, 67u8, 223u8, 34u8, + 132u8, 169u8, 113u8, 112u8, 80u8, 139u8, 113u8, 35u8, 41u8, 81u8, 36u8, + 35u8, 37u8, 202u8, 29u8, 207u8, 205u8, 229u8, 145u8, 7u8, 133u8, 94u8, + 25u8, 108u8, 233u8, 86u8, 234u8, 29u8, 236u8, 57u8, 56u8, 186u8, ], ) } @@ -265,6 +278,193 @@ pub mod api { } } } + pub mod xcm_payment_api { + use super::{root_mod, runtime_types}; + #[doc = " A trait of XCM payment API."] + #[doc = ""] + #[doc = " API provides functionality for obtaining:"] + #[doc = ""] + #[doc = " * the weight required to execute an XCM message,"] + #[doc = " * a list of acceptable `AssetId`s for message execution payment,"] + #[doc = " * the cost of the weight in the specified acceptable `AssetId`."] + #[doc = " * the fees for an XCM message delivery."] + #[doc = ""] + #[doc = " To determine the execution weight of the calls required for"] + #[doc = " [`xcm::latest::Instruction::Transact`] instruction, `TransactionPaymentCallApi` can be used."] + pub struct XcmPaymentApi; + impl XcmPaymentApi { + #[doc = " Returns a list of acceptable payment assets."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = ""] + #[doc = " * `xcm_version`: Version."] + pub fn query_acceptable_payment_assets( + &self, + xcm_version: ::core::primitive::u32, + ) -> ::subxt::runtime_api::Payload< + types::QueryAcceptablePaymentAssets, + ::core::result::Result< + ::std::vec::Vec, + runtime_types::xcm_fee_payment_runtime_api::Error, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "XcmPaymentApi", + "query_acceptable_payment_assets", + types::QueryAcceptablePaymentAssets { xcm_version }, + [ + 232u8, 67u8, 173u8, 246u8, 152u8, 193u8, 90u8, 68u8, 49u8, 200u8, + 118u8, 68u8, 139u8, 225u8, 161u8, 38u8, 177u8, 158u8, 83u8, 135u8, + 180u8, 97u8, 4u8, 94u8, 0u8, 232u8, 114u8, 119u8, 77u8, 5u8, 8u8, + 236u8, + ], + ) + } + #[doc = " Returns a weight needed to execute a XCM."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = ""] + #[doc = " * `message`: `VersionedXcm`."] + pub fn query_xcm_weight( + &self, + message: runtime_types::xcm::VersionedXcm, + ) -> ::subxt::runtime_api::Payload< + types::QueryXcmWeight, + ::core::result::Result< + runtime_types::sp_weights::weight_v2::Weight, + runtime_types::xcm_fee_payment_runtime_api::Error, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "XcmPaymentApi", + "query_xcm_weight", + types::QueryXcmWeight { message }, + [ + 58u8, 118u8, 149u8, 47u8, 144u8, 85u8, 10u8, 89u8, 29u8, 123u8, 249u8, + 209u8, 165u8, 160u8, 43u8, 246u8, 12u8, 106u8, 89u8, 20u8, 219u8, + 133u8, 189u8, 58u8, 14u8, 136u8, 189u8, 142u8, 123u8, 145u8, 77u8, + 68u8, + ], + ) + } + #[doc = " Converts a weight into a fee for the specified `AssetId`."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = ""] + #[doc = " * `weight`: convertible `Weight`."] + #[doc = " * `asset`: `VersionedAssetId`."] + pub fn query_weight_to_asset_fee( + &self, + weight: runtime_types::sp_weights::weight_v2::Weight, + asset: runtime_types::xcm::VersionedAssetId, + ) -> ::subxt::runtime_api::Payload< + types::QueryWeightToAssetFee, + ::core::result::Result< + ::core::primitive::u128, + runtime_types::xcm_fee_payment_runtime_api::Error, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "XcmPaymentApi", + "query_weight_to_asset_fee", + types::QueryWeightToAssetFee { weight, asset }, + [ + 86u8, 75u8, 169u8, 75u8, 0u8, 231u8, 241u8, 122u8, 197u8, 232u8, 188u8, + 66u8, 247u8, 240u8, 170u8, 39u8, 199u8, 82u8, 104u8, 16u8, 28u8, 40u8, + 214u8, 232u8, 177u8, 212u8, 117u8, 16u8, 181u8, 240u8, 33u8, 126u8, + ], + ) + } + #[doc = " Get delivery fees for sending a specific `message` to a `destination`."] + #[doc = " These always come in a specific asset, defined by the chain."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = " * `message`: The message that'll be sent, necessary because most delivery fees are based on the"] + #[doc = " size of the message."] + #[doc = " * `destination`: The destination to send the message to. Different destinations may use"] + #[doc = " different senders that charge different fees."] + pub fn query_delivery_fees( + &self, + destination: runtime_types::xcm::VersionedLocation, + message: runtime_types::xcm::VersionedXcm, + ) -> ::subxt::runtime_api::Payload< + types::QueryDeliveryFees, + ::core::result::Result< + runtime_types::xcm::VersionedAssets, + runtime_types::xcm_fee_payment_runtime_api::Error, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "XcmPaymentApi", + "query_delivery_fees", + types::QueryDeliveryFees { destination, message }, + [ + 248u8, 169u8, 153u8, 16u8, 58u8, 94u8, 83u8, 239u8, 80u8, 12u8, 183u8, + 141u8, 169u8, 8u8, 137u8, 178u8, 241u8, 228u8, 241u8, 66u8, 89u8, + 202u8, 78u8, 125u8, 240u8, 248u8, 109u8, 41u8, 189u8, 119u8, 20u8, + 149u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryAcceptablePaymentAssets { + pub xcm_version: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryXcmWeight { + pub message: runtime_types::xcm::VersionedXcm, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryWeightToAssetFee { + pub weight: runtime_types::sp_weights::weight_v2::Weight, + pub asset: runtime_types::xcm::VersionedAssetId, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueryDeliveryFees { + pub destination: runtime_types::xcm::VersionedLocation, + pub message: runtime_types::xcm::VersionedXcm, + } + } + } pub mod metadata { use super::{root_mod, runtime_types}; #[doc = " The `Metadata` api trait that returns metadata for the runtime."] @@ -610,17 +810,17 @@ pub mod api { &self, ) -> ::subxt::runtime_api::Payload< types::Validators, - ::std::vec::Vec, + ::std::vec::Vec, > { ::subxt::runtime_api::Payload::new_static( "ParachainHost", "validators", types::Validators {}, [ - 56u8, 64u8, 189u8, 234u8, 85u8, 75u8, 2u8, 212u8, 192u8, 95u8, 230u8, - 201u8, 98u8, 220u8, 78u8, 20u8, 101u8, 16u8, 153u8, 192u8, 133u8, - 179u8, 217u8, 98u8, 247u8, 143u8, 104u8, 147u8, 47u8, 255u8, 111u8, - 72u8, + 203u8, 103u8, 117u8, 19u8, 54u8, 45u8, 218u8, 47u8, 46u8, 93u8, 221u8, + 120u8, 188u8, 43u8, 183u8, 253u8, 108u8, 177u8, 242u8, 168u8, 97u8, + 191u8, 129u8, 190u8, 80u8, 182u8, 43u8, 75u8, 126u8, 241u8, 248u8, + 188u8, ], ) } @@ -633,9 +833,9 @@ pub mod api { types::ValidatorGroups, ( ::std::vec::Vec< - ::std::vec::Vec, + ::std::vec::Vec, >, - runtime_types::polkadot_primitives::v5::GroupRotationInfo< + runtime_types::polkadot_primitives::v7::GroupRotationInfo< ::core::primitive::u32, >, ), @@ -659,7 +859,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::AvailabilityCores, ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::CoreState< + runtime_types::polkadot_primitives::v7::CoreState< ::subxt::utils::H256, ::core::primitive::u32, >, @@ -670,9 +870,9 @@ pub mod api { "availability_cores", types::AvailabilityCores {}, [ - 238u8, 20u8, 188u8, 206u8, 26u8, 17u8, 72u8, 123u8, 33u8, 54u8, 66u8, - 13u8, 244u8, 246u8, 228u8, 177u8, 176u8, 251u8, 82u8, 12u8, 170u8, - 29u8, 39u8, 158u8, 16u8, 23u8, 253u8, 169u8, 117u8, 12u8, 0u8, 65u8, + 237u8, 214u8, 4u8, 255u8, 105u8, 58u8, 207u8, 5u8, 161u8, 200u8, 229u8, + 237u8, 83u8, 29u8, 131u8, 64u8, 244u8, 255u8, 15u8, 4u8, 224u8, 242u8, + 16u8, 182u8, 134u8, 20u8, 111u8, 114u8, 242u8, 218u8, 138u8, 144u8, ], ) } @@ -684,11 +884,11 @@ pub mod api { pub fn persisted_validation_data( &self, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, + assumption: runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption, ) -> ::subxt::runtime_api::Payload< types::PersistedValidationData, ::core::option::Option< - runtime_types::polkadot_primitives::v5::PersistedValidationData< + runtime_types::polkadot_primitives::v7::PersistedValidationData< ::subxt::utils::H256, ::core::primitive::u32, >, @@ -707,7 +907,7 @@ pub mod api { } #[doc = " Returns the persisted validation data for the given `ParaId` along with the corresponding"] #[doc = " validation code hash. Instead of accepting assumption about the para, matches the validation"] - #[doc = " data hash against an expected one and yields `None` if they're not equal."] pub fn assumed_validation_data (& self , para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , expected_persisted_validation_data_hash : :: subxt :: utils :: H256 ,) -> :: subxt :: runtime_api :: Payload < types :: AssumedValidationData , :: core :: option :: Option < (runtime_types :: polkadot_primitives :: v5 :: PersistedValidationData < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > >{ + #[doc = " data hash against an expected one and yields `None` if they're not equal."] pub fn assumed_validation_data (& self , para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , expected_persisted_validation_data_hash : :: subxt :: utils :: H256 ,) -> :: subxt :: runtime_api :: Payload < types :: AssumedValidationData , :: core :: option :: Option < (runtime_types :: polkadot_primitives :: v7 :: PersistedValidationData < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > >{ ::subxt::runtime_api::Payload::new_static( "ParachainHost", "assumed_validation_data", @@ -726,7 +926,7 @@ pub mod api { pub fn check_validation_outputs( &self, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - outputs: runtime_types::polkadot_primitives::v5::CandidateCommitments< + outputs: runtime_types::polkadot_primitives::v7::CandidateCommitments< ::core::primitive::u32, >, ) -> ::subxt::runtime_api::Payload< @@ -772,7 +972,7 @@ pub mod api { pub fn validation_code( &self, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, + assumption: runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption, ) -> ::subxt::runtime_api::Payload< types::ValidationCode, ::core::option::Option< @@ -799,7 +999,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::CandidatePendingAvailability, ::core::option::Option< - runtime_types::polkadot_primitives::v5::CommittedCandidateReceipt< + runtime_types::polkadot_primitives::v7::CommittedCandidateReceipt< ::subxt::utils::H256, >, >, @@ -809,10 +1009,9 @@ pub mod api { "candidate_pending_availability", types::CandidatePendingAvailability { para_id }, [ - 139u8, 185u8, 205u8, 255u8, 131u8, 180u8, 248u8, 168u8, 25u8, 124u8, - 105u8, 141u8, 59u8, 118u8, 109u8, 136u8, 103u8, 200u8, 5u8, 218u8, - 72u8, 55u8, 114u8, 89u8, 207u8, 140u8, 51u8, 86u8, 167u8, 41u8, 221u8, - 86u8, + 244u8, 247u8, 40u8, 151u8, 56u8, 125u8, 160u8, 14u8, 133u8, 36u8, 95u8, + 142u8, 195u8, 41u8, 58u8, 243u8, 51u8, 140u8, 131u8, 63u8, 3u8, 143u8, + 104u8, 164u8, 193u8, 39u8, 220u8, 141u8, 141u8, 17u8, 182u8, 168u8, ], ) } @@ -822,7 +1021,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::CandidateEvents, ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::CandidateEvent< + runtime_types::polkadot_primitives::v7::CandidateEvent< ::subxt::utils::H256, >, >, @@ -832,10 +1031,9 @@ pub mod api { "candidate_events", types::CandidateEvents {}, [ - 101u8, 145u8, 200u8, 182u8, 213u8, 111u8, 180u8, 73u8, 14u8, 107u8, - 110u8, 145u8, 122u8, 35u8, 223u8, 219u8, 66u8, 101u8, 130u8, 255u8, - 44u8, 46u8, 50u8, 61u8, 104u8, 237u8, 34u8, 16u8, 179u8, 214u8, 115u8, - 7u8, + 75u8, 75u8, 47u8, 107u8, 25u8, 45u8, 177u8, 137u8, 39u8, 157u8, 170u8, + 247u8, 55u8, 83u8, 48u8, 240u8, 120u8, 227u8, 107u8, 42u8, 84u8, 78u8, + 79u8, 170u8, 249u8, 233u8, 249u8, 121u8, 105u8, 119u8, 7u8, 248u8, ], ) } @@ -917,7 +1115,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::OnChainVotes, ::core::option::Option< - runtime_types::polkadot_primitives::v5::ScrapedOnChainVotes< + runtime_types::polkadot_primitives::v7::ScrapedOnChainVotes< ::subxt::utils::H256, >, >, @@ -927,9 +1125,9 @@ pub mod api { "on_chain_votes", types::OnChainVotes {}, [ - 8u8, 253u8, 248u8, 13u8, 221u8, 83u8, 199u8, 65u8, 180u8, 193u8, 232u8, - 179u8, 56u8, 186u8, 72u8, 128u8, 27u8, 168u8, 177u8, 82u8, 194u8, - 139u8, 78u8, 32u8, 147u8, 67u8, 27u8, 252u8, 118u8, 60u8, 74u8, 31u8, + 92u8, 45u8, 100u8, 230u8, 156u8, 157u8, 244u8, 49u8, 130u8, 181u8, + 20u8, 225u8, 159u8, 38u8, 33u8, 32u8, 147u8, 149u8, 41u8, 20u8, 158u8, + 61u8, 134u8, 225u8, 140u8, 5u8, 160u8, 223u8, 8u8, 11u8, 244u8, 236u8, ], ) } @@ -941,17 +1139,16 @@ pub mod api { index: ::core::primitive::u32, ) -> ::subxt::runtime_api::Payload< types::SessionInfo, - ::core::option::Option, + ::core::option::Option, > { ::subxt::runtime_api::Payload::new_static( "ParachainHost", "session_info", types::SessionInfo { index }, [ - 77u8, 115u8, 39u8, 190u8, 116u8, 250u8, 66u8, 128u8, 168u8, 24u8, - 120u8, 153u8, 111u8, 125u8, 249u8, 115u8, 112u8, 169u8, 208u8, 31u8, - 95u8, 234u8, 14u8, 242u8, 14u8, 190u8, 120u8, 171u8, 202u8, 67u8, 81u8, - 237u8, + 109u8, 63u8, 65u8, 75u8, 87u8, 156u8, 145u8, 106u8, 214u8, 111u8, 24u8, + 111u8, 229u8, 171u8, 147u8, 148u8, 51u8, 80u8, 156u8, 94u8, 49u8, + 229u8, 151u8, 155u8, 255u8, 0u8, 72u8, 104u8, 42u8, 124u8, 222u8, 90u8, ], ) } @@ -960,8 +1157,8 @@ pub mod api { #[doc = " NOTE: This function is only available since parachain host version 2."] pub fn submit_pvf_check_statement( &self, - stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, - signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, + stmt: runtime_types::polkadot_primitives::v7::PvfCheckStatement, + signature: runtime_types::polkadot_primitives::v7::validator_app::Signature, ) -> ::subxt::runtime_api::Payload { ::subxt::runtime_api::Payload::new_static( @@ -969,10 +1166,9 @@ pub mod api { "submit_pvf_check_statement", types::SubmitPvfCheckStatement { stmt, signature }, [ - 91u8, 138u8, 75u8, 79u8, 171u8, 224u8, 206u8, 152u8, 202u8, 131u8, - 251u8, 200u8, 75u8, 99u8, 49u8, 192u8, 175u8, 212u8, 139u8, 236u8, - 188u8, 243u8, 82u8, 62u8, 190u8, 79u8, 113u8, 23u8, 222u8, 29u8, 255u8, - 196u8, + 10u8, 97u8, 0u8, 72u8, 221u8, 159u8, 123u8, 113u8, 166u8, 212u8, 213u8, + 173u8, 250u8, 217u8, 54u8, 27u8, 120u8, 76u8, 219u8, 71u8, 28u8, 213u8, + 243u8, 103u8, 44u8, 198u8, 102u8, 43u8, 15u8, 81u8, 228u8, 110u8, ], ) } @@ -992,7 +1188,7 @@ pub mod api { } #[doc = " Fetch the hash of the validation code used by a para, making the given `OccupiedCoreAssumption`."] #[doc = ""] - #[doc = " NOTE: This function is only available since parachain host version 2."] pub fn validation_code_hash (& self , para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , assumption : runtime_types :: polkadot_primitives :: v5 :: OccupiedCoreAssumption ,) -> :: subxt :: runtime_api :: Payload < types :: ValidationCodeHash , :: core :: option :: Option < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > >{ + #[doc = " NOTE: This function is only available since parachain host version 2."] pub fn validation_code_hash (& self , para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , assumption : runtime_types :: polkadot_primitives :: v7 :: OccupiedCoreAssumption ,) -> :: subxt :: runtime_api :: Payload < types :: ValidationCodeHash , :: core :: option :: Option < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > >{ ::subxt::runtime_api::Payload::new_static( "ParachainHost", "validation_code_hash", @@ -1013,7 +1209,7 @@ pub mod api { ::std::vec::Vec<( ::core::primitive::u32, runtime_types::polkadot_core_primitives::CandidateHash, - runtime_types::polkadot_primitives::v5::DisputeState< + runtime_types::polkadot_primitives::v7::DisputeState< ::core::primitive::u32, >, )>, @@ -1036,7 +1232,7 @@ pub mod api { ) -> ::subxt::runtime_api::Payload< types::SessionExecutorParams, ::core::option::Option< - runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, >, > { ::subxt::runtime_api::Payload::new_static( @@ -1044,9 +1240,9 @@ pub mod api { "session_executor_params", types::SessionExecutorParams { session_index }, [ - 207u8, 66u8, 10u8, 104u8, 146u8, 219u8, 75u8, 157u8, 93u8, 224u8, - 215u8, 13u8, 255u8, 62u8, 134u8, 168u8, 185u8, 101u8, 39u8, 78u8, 98u8, - 44u8, 129u8, 38u8, 48u8, 244u8, 103u8, 205u8, 66u8, 121u8, 18u8, 247u8, + 94u8, 35u8, 29u8, 188u8, 247u8, 116u8, 165u8, 43u8, 248u8, 76u8, 21u8, + 237u8, 26u8, 25u8, 105u8, 27u8, 24u8, 245u8, 97u8, 25u8, 47u8, 118u8, + 98u8, 231u8, 27u8, 76u8, 172u8, 207u8, 90u8, 103u8, 52u8, 168u8, ], ) } @@ -1059,7 +1255,7 @@ pub mod api { ::std::vec::Vec<( ::core::primitive::u32, runtime_types::polkadot_core_primitives::CandidateHash, - runtime_types::polkadot_primitives::v5::slashing::PendingSlashes, + runtime_types::polkadot_primitives::v7::slashing::PendingSlashes, )>, > { ::subxt::runtime_api::Payload::new_static( @@ -1067,9 +1263,9 @@ pub mod api { "unapplied_slashes", types::UnappliedSlashes {}, [ - 205u8, 16u8, 246u8, 48u8, 72u8, 160u8, 7u8, 136u8, 225u8, 2u8, 209u8, - 254u8, 255u8, 115u8, 49u8, 214u8, 131u8, 22u8, 210u8, 9u8, 111u8, - 170u8, 109u8, 247u8, 110u8, 42u8, 55u8, 68u8, 85u8, 37u8, 250u8, 4u8, + 37u8, 39u8, 110u8, 177u8, 177u8, 107u8, 186u8, 189u8, 36u8, 252u8, + 88u8, 92u8, 92u8, 3u8, 118u8, 28u8, 72u8, 180u8, 56u8, 113u8, 168u8, + 228u8, 180u8, 53u8, 56u8, 77u8, 129u8, 94u8, 68u8, 18u8, 199u8, 163u8, ], ) } @@ -1077,11 +1273,11 @@ pub mod api { #[doc = " NOTE: This function is only available since parachain host version 5."] pub fn key_ownership_proof( &self, - validator_id: runtime_types::polkadot_primitives::v5::validator_app::Public, + validator_id: runtime_types::polkadot_primitives::v7::validator_app::Public, ) -> ::subxt::runtime_api::Payload< types::KeyOwnershipProof, ::core::option::Option< - runtime_types::polkadot_primitives::v5::slashing::OpaqueKeyOwnershipProof, + runtime_types::polkadot_primitives::v7::slashing::OpaqueKeyOwnershipProof, >, > { ::subxt::runtime_api::Payload::new_static( @@ -1089,9 +1285,9 @@ pub mod api { "key_ownership_proof", types::KeyOwnershipProof { validator_id }, [ - 194u8, 237u8, 59u8, 4u8, 194u8, 235u8, 38u8, 58u8, 58u8, 221u8, 189u8, - 69u8, 254u8, 2u8, 242u8, 200u8, 86u8, 4u8, 138u8, 184u8, 198u8, 58u8, - 200u8, 34u8, 243u8, 91u8, 122u8, 35u8, 18u8, 83u8, 152u8, 191u8, + 75u8, 218u8, 234u8, 239u8, 79u8, 135u8, 77u8, 217u8, 172u8, 222u8, + 123u8, 195u8, 0u8, 79u8, 68u8, 22u8, 143u8, 185u8, 45u8, 209u8, 235u8, + 205u8, 61u8, 159u8, 205u8, 15u8, 169u8, 73u8, 84u8, 12u8, 240u8, 155u8, ], ) } @@ -1100,8 +1296,8 @@ pub mod api { #[doc = " NOTE: This function is only available since parachain host version 5."] pub fn submit_report_dispute_lost( &self, - dispute_proof: runtime_types::polkadot_primitives::v5::slashing::DisputeProof, - key_ownership_proof : runtime_types :: polkadot_primitives :: v5 :: slashing :: OpaqueKeyOwnershipProof, + dispute_proof: runtime_types::polkadot_primitives::v7::slashing::DisputeProof, + key_ownership_proof : runtime_types :: polkadot_primitives :: v7 :: slashing :: OpaqueKeyOwnershipProof, ) -> ::subxt::runtime_api::Payload< types::SubmitReportDisputeLost, ::core::option::Option<()>, @@ -1111,9 +1307,9 @@ pub mod api { "submit_report_dispute_lost", types::SubmitReportDisputeLost { dispute_proof, key_ownership_proof }, [ - 98u8, 63u8, 249u8, 13u8, 163u8, 161u8, 43u8, 96u8, 75u8, 65u8, 3u8, - 116u8, 8u8, 149u8, 122u8, 190u8, 179u8, 108u8, 17u8, 22u8, 59u8, 134u8, - 43u8, 31u8, 13u8, 254u8, 21u8, 112u8, 129u8, 16u8, 5u8, 180u8, + 107u8, 224u8, 213u8, 121u8, 155u8, 13u8, 89u8, 111u8, 110u8, 3u8, + 143u8, 126u8, 104u8, 78u8, 27u8, 220u8, 212u8, 51u8, 70u8, 241u8, 98u8, + 135u8, 61u8, 253u8, 19u8, 250u8, 54u8, 46u8, 195u8, 234u8, 92u8, 105u8, ], ) } @@ -1136,14 +1332,13 @@ pub mod api { ) } #[doc = " Returns the state of parachain backing for a given para."] - #[doc = " This is a staging method! Do not use on production runtimes!"] - pub fn staging_para_backing_state( + pub fn para_backing_state( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, ) -> ::subxt::runtime_api::Payload< - types::StagingParaBackingState, + types::ParaBackingState, ::core::option::Option< - runtime_types::polkadot_primitives::vstaging::BackingState< + runtime_types::polkadot_primitives::v7::async_backing::BackingState< ::subxt::utils::H256, ::core::primitive::u32, >, @@ -1151,31 +1346,116 @@ pub mod api { > { ::subxt::runtime_api::Payload::new_static( "ParachainHost", - "staging_para_backing_state", - types::StagingParaBackingState { _0: id }, + "para_backing_state", + types::ParaBackingState { id }, [ - 160u8, 233u8, 215u8, 197u8, 160u8, 37u8, 2u8, 161u8, 93u8, 104u8, - 135u8, 121u8, 85u8, 43u8, 41u8, 202u8, 179u8, 31u8, 82u8, 56u8, 189u8, - 183u8, 226u8, 57u8, 211u8, 208u8, 229u8, 181u8, 44u8, 228u8, 202u8, - 138u8, + 207u8, 6u8, 220u8, 174u8, 230u8, 61u8, 153u8, 23u8, 219u8, 185u8, + 118u8, 139u8, 184u8, 122u8, 192u8, 47u8, 166u8, 165u8, 171u8, 69u8, + 119u8, 198u8, 51u8, 56u8, 141u8, 191u8, 148u8, 32u8, 104u8, 183u8, 7u8, + 51u8, ], ) } #[doc = " Returns candidate's acceptance limitations for asynchronous backing for a relay parent."] - pub fn staging_async_backing_params( + pub fn async_backing_params( &self, ) -> ::subxt::runtime_api::Payload< - types::StagingAsyncBackingParams, - runtime_types::polkadot_primitives::vstaging::AsyncBackingParams, + types::AsyncBackingParams, + runtime_types::polkadot_primitives::v7::async_backing::AsyncBackingParams, > { ::subxt::runtime_api::Payload::new_static( "ParachainHost", - "staging_async_backing_params", - types::StagingAsyncBackingParams {}, + "async_backing_params", + types::AsyncBackingParams {}, [ - 58u8, 107u8, 89u8, 87u8, 130u8, 230u8, 197u8, 81u8, 139u8, 195u8, 41u8, - 31u8, 249u8, 135u8, 222u8, 250u8, 82u8, 73u8, 191u8, 66u8, 49u8, 205u8, - 239u8, 241u8, 215u8, 181u8, 227u8, 210u8, 190u8, 114u8, 251u8, 88u8, + 150u8, 157u8, 193u8, 44u8, 160u8, 18u8, 122u8, 188u8, 157u8, 84u8, + 202u8, 253u8, 55u8, 113u8, 188u8, 169u8, 216u8, 250u8, 145u8, 81u8, + 73u8, 194u8, 234u8, 237u8, 101u8, 250u8, 35u8, 52u8, 205u8, 38u8, 22u8, + 238u8, + ], + ) + } + #[doc = " Returns a list of all disabled validators at the given block."] + pub fn disabled_validators( + &self, + ) -> ::subxt::runtime_api::Payload< + types::DisabledValidators, + ::std::vec::Vec, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "disabled_validators", + types::DisabledValidators {}, + [ + 121u8, 124u8, 228u8, 59u8, 10u8, 148u8, 131u8, 130u8, 221u8, 33u8, + 226u8, 13u8, 223u8, 67u8, 145u8, 39u8, 205u8, 237u8, 178u8, 249u8, + 126u8, 152u8, 65u8, 131u8, 111u8, 113u8, 194u8, 111u8, 37u8, 124u8, + 164u8, 212u8, + ], + ) + } + #[doc = " Get node features."] + #[doc = " This is a staging method! Do not use on production runtimes!"] + pub fn node_features( + &self, + ) -> ::subxt::runtime_api::Payload< + types::NodeFeatures, + ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "node_features", + types::NodeFeatures {}, + [ + 94u8, 110u8, 38u8, 62u8, 66u8, 234u8, 216u8, 228u8, 36u8, 17u8, 33u8, + 56u8, 184u8, 122u8, 34u8, 254u8, 46u8, 62u8, 107u8, 227u8, 3u8, 126u8, + 220u8, 142u8, 92u8, 226u8, 123u8, 236u8, 34u8, 234u8, 82u8, 80u8, + ], + ) + } + #[doc = " Approval voting configuration parameters"] + pub fn approval_voting_params( + &self, + ) -> ::subxt::runtime_api::Payload< + types::ApprovalVotingParams, + runtime_types::polkadot_primitives::v7::ApprovalVotingParams, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "approval_voting_params", + types::ApprovalVotingParams {}, + [ + 89u8, 130u8, 95u8, 58u8, 124u8, 176u8, 43u8, 109u8, 222u8, 178u8, + 241u8, 177u8, 242u8, 32u8, 84u8, 22u8, 252u8, 178u8, 168u8, 17u8, 38u8, + 249u8, 25u8, 229u8, 75u8, 119u8, 150u8, 112u8, 144u8, 118u8, 189u8, + 253u8, + ], + ) + } + #[doc = " Claim queue"] + pub fn claim_queue( + &self, + ) -> ::subxt::runtime_api::Payload< + types::ClaimQueue, + ::subxt::utils::KeyedVec< + runtime_types::polkadot_primitives::v7::CoreIndex, + ::std::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + >, + > { + ::subxt::runtime_api::Payload::new_static( + "ParachainHost", + "claim_queue", + types::ClaimQueue {}, + [ + 43u8, 105u8, 112u8, 222u8, 33u8, 252u8, 194u8, 53u8, 104u8, 185u8, + 210u8, 179u8, 95u8, 149u8, 44u8, 86u8, 70u8, 202u8, 154u8, 196u8, + 186u8, 165u8, 103u8, 172u8, 66u8, 4u8, 135u8, 9u8, 255u8, 137u8, 52u8, + 125u8, ], ) } @@ -1227,7 +1507,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct PersistedValidationData { pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - pub assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, + pub assumption: runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -1255,7 +1535,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CheckValidationOutputs { pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - pub outputs: runtime_types::polkadot_primitives::v5::CandidateCommitments< + pub outputs: runtime_types::polkadot_primitives::v7::CandidateCommitments< ::core::primitive::u32, >, } @@ -1282,7 +1562,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ValidationCode { pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - pub assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, + pub assumption: runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -1380,8 +1660,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SubmitPvfCheckStatement { - pub stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, - pub signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, + pub stmt: runtime_types::polkadot_primitives::v7::PvfCheckStatement, + pub signature: runtime_types::polkadot_primitives::v7::validator_app::Signature, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -1406,7 +1686,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ValidationCodeHash { pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, - pub assumption: runtime_types::polkadot_primitives::v5::OccupiedCoreAssumption, + pub assumption: runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -1454,7 +1734,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct KeyOwnershipProof { - pub validator_id: runtime_types::polkadot_primitives::v5::validator_app::Public, + pub validator_id: runtime_types::polkadot_primitives::v7::validator_app::Public, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -1468,9 +1748,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SubmitReportDisputeLost { pub dispute_proof: - runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + runtime_types::polkadot_primitives::v7::slashing::DisputeProof, pub key_ownership_proof: - runtime_types::polkadot_primitives::v5::slashing::OpaqueKeyOwnershipProof, + runtime_types::polkadot_primitives::v7::slashing::OpaqueKeyOwnershipProof, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -1493,8 +1773,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct StagingParaBackingState { - pub _0: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub struct ParaBackingState { + pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -1506,7 +1786,51 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct StagingAsyncBackingParams {} + pub struct AsyncBackingParams {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DisabledValidators {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct NodeFeatures {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApprovalVotingParams {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ClaimQueue {} } } pub mod beefy_api { @@ -1549,9 +1873,10 @@ pub mod api { "validator_set", types::ValidatorSet {}, [ - 26u8, 174u8, 151u8, 215u8, 199u8, 11u8, 123u8, 18u8, 209u8, 187u8, - 70u8, 245u8, 59u8, 23u8, 11u8, 26u8, 167u8, 202u8, 83u8, 213u8, 99u8, - 74u8, 143u8, 140u8, 34u8, 9u8, 225u8, 217u8, 244u8, 169u8, 30u8, 217u8, + 89u8, 55u8, 143u8, 190u8, 77u8, 133u8, 228u8, 92u8, 245u8, 253u8, 70u8, + 232u8, 213u8, 119u8, 88u8, 47u8, 122u8, 60u8, 179u8, 61u8, 199u8, + 251u8, 45u8, 230u8, 76u8, 202u8, 49u8, 178u8, 204u8, 143u8, 196u8, + 135u8, ], ) } @@ -1583,10 +1908,10 @@ pub mod api { key_owner_proof, }, [ - 20u8, 162u8, 43u8, 173u8, 248u8, 140u8, 57u8, 151u8, 189u8, 96u8, 68u8, - 130u8, 14u8, 162u8, 230u8, 61u8, 169u8, 189u8, 239u8, 71u8, 121u8, - 137u8, 141u8, 206u8, 91u8, 164u8, 175u8, 93u8, 33u8, 161u8, 166u8, - 192u8, + 170u8, 93u8, 106u8, 193u8, 102u8, 51u8, 222u8, 58u8, 165u8, 172u8, + 245u8, 128u8, 116u8, 25u8, 252u8, 107u8, 60u8, 93u8, 218u8, 91u8, + 132u8, 18u8, 214u8, 7u8, 135u8, 13u8, 248u8, 250u8, 7u8, 255u8, 169u8, + 231u8, ], ) } @@ -1616,9 +1941,9 @@ pub mod api { "generate_key_ownership_proof", types::GenerateKeyOwnershipProof { set_id, authority_id }, [ - 244u8, 175u8, 3u8, 235u8, 173u8, 34u8, 210u8, 81u8, 41u8, 5u8, 85u8, - 179u8, 53u8, 153u8, 16u8, 62u8, 103u8, 71u8, 180u8, 11u8, 165u8, 90u8, - 186u8, 156u8, 118u8, 114u8, 22u8, 108u8, 149u8, 9u8, 232u8, 174u8, + 119u8, 183u8, 178u8, 109u8, 57u8, 250u8, 176u8, 255u8, 11u8, 190u8, + 35u8, 142u8, 102u8, 112u8, 4u8, 219u8, 204u8, 81u8, 163u8, 87u8, 129u8, + 134u8, 34u8, 227u8, 213u8, 163u8, 50u8, 90u8, 54u8, 61u8, 84u8, 215u8, ], ) } @@ -1914,10 +2239,9 @@ pub mod api { "grandpa_authorities", types::GrandpaAuthorities {}, [ - 166u8, 76u8, 160u8, 101u8, 242u8, 145u8, 213u8, 10u8, 16u8, 130u8, - 230u8, 196u8, 125u8, 152u8, 92u8, 143u8, 119u8, 223u8, 140u8, 189u8, - 203u8, 95u8, 52u8, 105u8, 147u8, 107u8, 135u8, 228u8, 62u8, 178u8, - 128u8, 33u8, + 8u8, 1u8, 99u8, 227u8, 52u8, 95u8, 230u8, 139u8, 198u8, 90u8, 159u8, + 146u8, 193u8, 81u8, 37u8, 27u8, 216u8, 227u8, 108u8, 126u8, 12u8, 94u8, + 125u8, 183u8, 143u8, 231u8, 87u8, 101u8, 114u8, 190u8, 193u8, 180u8, ], ) } @@ -1948,10 +2272,9 @@ pub mod api { key_owner_proof, }, [ - 112u8, 94u8, 150u8, 250u8, 132u8, 127u8, 185u8, 24u8, 113u8, 62u8, - 28u8, 171u8, 83u8, 9u8, 41u8, 228u8, 92u8, 137u8, 29u8, 190u8, 214u8, - 232u8, 100u8, 66u8, 100u8, 168u8, 149u8, 122u8, 93u8, 17u8, 236u8, - 104u8, + 27u8, 32u8, 16u8, 79u8, 172u8, 124u8, 44u8, 13u8, 176u8, 89u8, 69u8, + 60u8, 45u8, 176u8, 72u8, 151u8, 252u8, 5u8, 243u8, 82u8, 170u8, 51u8, + 179u8, 197u8, 117u8, 177u8, 110u8, 111u8, 97u8, 15u8, 109u8, 169u8, ], ) } @@ -1981,10 +2304,9 @@ pub mod api { "generate_key_ownership_proof", types::GenerateKeyOwnershipProof { set_id, authority_id }, [ - 40u8, 126u8, 113u8, 27u8, 245u8, 45u8, 123u8, 138u8, 12u8, 3u8, 125u8, - 186u8, 151u8, 53u8, 186u8, 93u8, 13u8, 150u8, 163u8, 176u8, 206u8, - 89u8, 244u8, 127u8, 182u8, 85u8, 203u8, 41u8, 101u8, 183u8, 209u8, - 179u8, + 13u8, 144u8, 66u8, 235u8, 24u8, 190u8, 39u8, 75u8, 29u8, 157u8, 215u8, + 181u8, 173u8, 145u8, 224u8, 244u8, 189u8, 79u8, 6u8, 116u8, 139u8, + 196u8, 54u8, 16u8, 89u8, 190u8, 121u8, 43u8, 137u8, 150u8, 117u8, 68u8, ], ) } @@ -2081,9 +2403,9 @@ pub mod api { "configuration", types::Configuration {}, [ - 8u8, 81u8, 234u8, 29u8, 30u8, 198u8, 76u8, 19u8, 188u8, 198u8, 127u8, - 33u8, 141u8, 95u8, 132u8, 106u8, 31u8, 41u8, 215u8, 54u8, 240u8, 65u8, - 59u8, 160u8, 188u8, 237u8, 10u8, 143u8, 250u8, 79u8, 45u8, 161u8, + 50u8, 198u8, 27u8, 26u8, 92u8, 199u8, 8u8, 181u8, 12u8, 199u8, 116u8, + 247u8, 95u8, 70u8, 241u8, 24u8, 14u8, 250u8, 179u8, 77u8, 251u8, 55u8, + 133u8, 8u8, 142u8, 107u8, 6u8, 214u8, 228u8, 38u8, 134u8, 153u8, ], ) } @@ -2118,9 +2440,10 @@ pub mod api { "current_epoch", types::CurrentEpoch {}, [ - 73u8, 171u8, 149u8, 138u8, 230u8, 95u8, 241u8, 189u8, 207u8, 145u8, - 103u8, 76u8, 79u8, 44u8, 250u8, 68u8, 238u8, 4u8, 149u8, 234u8, 165u8, - 91u8, 89u8, 228u8, 132u8, 201u8, 203u8, 98u8, 209u8, 137u8, 8u8, 63u8, + 70u8, 68u8, 222u8, 110u8, 96u8, 143u8, 126u8, 136u8, 182u8, 163u8, + 104u8, 122u8, 21u8, 156u8, 6u8, 26u8, 86u8, 145u8, 153u8, 133u8, 251u8, + 137u8, 238u8, 218u8, 132u8, 218u8, 222u8, 140u8, 190u8, 232u8, 197u8, + 86u8, ], ) } @@ -2137,10 +2460,10 @@ pub mod api { "next_epoch", types::NextEpoch {}, [ - 191u8, 124u8, 183u8, 209u8, 73u8, 171u8, 164u8, 244u8, 68u8, 239u8, - 196u8, 54u8, 188u8, 85u8, 229u8, 175u8, 29u8, 89u8, 148u8, 108u8, - 208u8, 156u8, 62u8, 193u8, 167u8, 184u8, 251u8, 245u8, 123u8, 87u8, - 19u8, 225u8, + 141u8, 86u8, 122u8, 185u8, 215u8, 255u8, 142u8, 131u8, 8u8, 178u8, + 143u8, 200u8, 148u8, 84u8, 174u8, 215u8, 91u8, 251u8, 243u8, 155u8, + 92u8, 13u8, 44u8, 53u8, 128u8, 26u8, 165u8, 172u8, 49u8, 33u8, 130u8, + 148u8, ], ) } @@ -2170,10 +2493,9 @@ pub mod api { "generate_key_ownership_proof", types::GenerateKeyOwnershipProof { slot, authority_id }, [ - 235u8, 220u8, 75u8, 20u8, 175u8, 246u8, 127u8, 176u8, 225u8, 25u8, - 240u8, 252u8, 58u8, 254u8, 153u8, 133u8, 197u8, 168u8, 19u8, 231u8, - 234u8, 173u8, 58u8, 152u8, 212u8, 123u8, 13u8, 131u8, 84u8, 221u8, - 98u8, 46u8, + 13u8, 228u8, 75u8, 150u8, 203u8, 132u8, 82u8, 188u8, 17u8, 70u8, 169u8, + 19u8, 102u8, 96u8, 217u8, 209u8, 215u8, 196u8, 78u8, 141u8, 12u8, 14u8, + 151u8, 65u8, 173u8, 2u8, 100u8, 150u8, 18u8, 99u8, 19u8, 196u8, ], ) } @@ -2204,9 +2526,9 @@ pub mod api { key_owner_proof, }, [ - 9u8, 163u8, 149u8, 31u8, 89u8, 32u8, 224u8, 116u8, 102u8, 46u8, 10u8, - 189u8, 35u8, 166u8, 111u8, 156u8, 204u8, 80u8, 35u8, 64u8, 223u8, 3u8, - 4u8, 0u8, 97u8, 118u8, 124u8, 142u8, 224u8, 160u8, 2u8, 50u8, + 99u8, 80u8, 38u8, 173u8, 235u8, 48u8, 229u8, 88u8, 250u8, 165u8, 57u8, + 245u8, 85u8, 156u8, 114u8, 190u8, 144u8, 78u8, 37u8, 22u8, 36u8, 36u8, + 53u8, 174u8, 118u8, 222u8, 16u8, 159u8, 201u8, 254u8, 233u8, 82u8, ], ) } @@ -2310,9 +2632,9 @@ pub mod api { "authorities", types::Authorities {}, [ - 231u8, 109u8, 175u8, 33u8, 103u8, 6u8, 157u8, 241u8, 62u8, 92u8, 246u8, - 9u8, 109u8, 137u8, 233u8, 96u8, 103u8, 59u8, 201u8, 132u8, 102u8, 32u8, - 19u8, 183u8, 106u8, 146u8, 41u8, 172u8, 147u8, 55u8, 156u8, 77u8, + 165u8, 81u8, 77u8, 215u8, 27u8, 128u8, 36u8, 135u8, 216u8, 203u8, 60u8, + 250u8, 235u8, 22u8, 149u8, 99u8, 233u8, 114u8, 62u8, 69u8, 27u8, 185u8, + 45u8, 164u8, 136u8, 168u8, 108u8, 168u8, 24u8, 3u8, 66u8, 155u8, ], ) } @@ -2664,12 +2986,88 @@ pub mod api { pub struct NextAuthoritySetProof {} } } + pub mod genesis_builder { + use super::{root_mod, runtime_types}; + #[doc = " API to interact with RuntimeGenesisConfig for the runtime"] + pub struct GenesisBuilder; + impl GenesisBuilder { + #[doc = " Creates the default `RuntimeGenesisConfig` and returns it as a JSON blob."] + #[doc = ""] + #[doc = " This function instantiates the default `RuntimeGenesisConfig` struct for the runtime and serializes it into a JSON"] + #[doc = " blob. It returns a `Vec` containing the JSON representation of the default `RuntimeGenesisConfig`."] + pub fn create_default_config( + &self, + ) -> ::subxt::runtime_api::Payload< + types::CreateDefaultConfig, + ::std::vec::Vec<::core::primitive::u8>, + > { + ::subxt::runtime_api::Payload::new_static( + "GenesisBuilder", + "create_default_config", + types::CreateDefaultConfig {}, + [ + 238u8, 5u8, 139u8, 81u8, 184u8, 155u8, 221u8, 118u8, 190u8, 76u8, + 229u8, 67u8, 132u8, 89u8, 83u8, 80u8, 56u8, 171u8, 169u8, 64u8, 123u8, + 20u8, 129u8, 159u8, 28u8, 135u8, 84u8, 52u8, 192u8, 98u8, 104u8, 214u8, + ], + ) + } + #[doc = " Build `RuntimeGenesisConfig` from a JSON blob not using any defaults and store it in the storage."] + #[doc = ""] + #[doc = " This function deserializes the full `RuntimeGenesisConfig` from the given JSON blob and puts it into the storage."] + #[doc = " If the provided JSON blob is incorrect or incomplete or the deserialization fails, an error is returned."] + #[doc = " It is recommended to log any errors encountered during the process."] + #[doc = ""] + #[doc = " Please note that provided json blob must contain all `RuntimeGenesisConfig` fields, no defaults will be used."] + pub fn build_config( + &self, + json: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::runtime_api::Payload< + types::BuildConfig, + ::core::result::Result<(), ::std::string::String>, + > { + ::subxt::runtime_api::Payload::new_static( + "GenesisBuilder", + "build_config", + types::BuildConfig { json }, + [ + 6u8, 98u8, 68u8, 125u8, 157u8, 26u8, 107u8, 86u8, 213u8, 227u8, 26u8, + 229u8, 122u8, 161u8, 229u8, 114u8, 123u8, 192u8, 66u8, 231u8, 148u8, + 175u8, 5u8, 185u8, 248u8, 88u8, 40u8, 122u8, 230u8, 209u8, 170u8, + 254u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CreateDefaultConfig {} + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BuildConfig { + pub json: ::std::vec::Vec<::core::primitive::u8>, + } + } + } } - pub fn custom() -> CustomValuesApi { - CustomValuesApi - } - pub struct CustomValuesApi; - impl CustomValuesApi {} pub struct ConstantsApi; impl ConstantsApi { pub fn system(&self) -> system::constants::ConstantsApi { @@ -2690,29 +3088,20 @@ pub mod api { pub fn transaction_payment(&self) -> transaction_payment::constants::ConstantsApi { transaction_payment::constants::ConstantsApi } - pub fn beefy(&self) -> beefy::constants::ConstantsApi { - beefy::constants::ConstantsApi - } pub fn grandpa(&self) -> grandpa::constants::ConstantsApi { grandpa::constants::ConstantsApi } - pub fn im_online(&self) -> im_online::constants::ConstantsApi { - im_online::constants::ConstantsApi - } - pub fn democracy(&self) -> democracy::constants::ConstantsApi { - democracy::constants::ConstantsApi - } - pub fn council(&self) -> council::constants::ConstantsApi { - council::constants::ConstantsApi + pub fn treasury(&self) -> treasury::constants::ConstantsApi { + treasury::constants::ConstantsApi } - pub fn technical_committee(&self) -> technical_committee::constants::ConstantsApi { - technical_committee::constants::ConstantsApi + pub fn conviction_voting(&self) -> conviction_voting::constants::ConstantsApi { + conviction_voting::constants::ConstantsApi } - pub fn phragmen_election(&self) -> phragmen_election::constants::ConstantsApi { - phragmen_election::constants::ConstantsApi + pub fn referenda(&self) -> referenda::constants::ConstantsApi { + referenda::constants::ConstantsApi } - pub fn treasury(&self) -> treasury::constants::ConstantsApi { - treasury::constants::ConstantsApi + pub fn fellowship_referenda(&self) -> fellowship_referenda::constants::ConstantsApi { + fellowship_referenda::constants::ConstantsApi } pub fn claims(&self) -> claims::constants::ConstantsApi { claims::constants::ConstantsApi @@ -2747,9 +3136,6 @@ pub mod api { pub fn child_bounties(&self) -> child_bounties::constants::ConstantsApi { child_bounties::constants::ConstantsApi } - pub fn tips(&self) -> tips::constants::ConstantsApi { - tips::constants::ConstantsApi - } pub fn nis(&self) -> nis::constants::ConstantsApi { nis::constants::ConstantsApi } @@ -2781,6 +3167,12 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::constants::ConstantsApi { crowdloan::constants::ConstantsApi } + pub fn coretime(&self) -> coretime::constants::ConstantsApi { + coretime::constants::ConstantsApi + } + pub fn beefy(&self) -> beefy::constants::ConstantsApi { + beefy::constants::ConstantsApi + } pub fn assigned_slots(&self) -> assigned_slots::constants::ConstantsApi { assigned_slots::constants::ConstantsApi } @@ -2814,14 +3206,8 @@ pub mod api { pub fn offences(&self) -> offences::storage::StorageApi { offences::storage::StorageApi } - pub fn beefy(&self) -> beefy::storage::StorageApi { - beefy::storage::StorageApi - } - pub fn mmr(&self) -> mmr::storage::StorageApi { - mmr::storage::StorageApi - } - pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { - mmr_leaf::storage::StorageApi + pub fn historical(&self) -> historical::storage::StorageApi { + historical::storage::StorageApi } pub fn session(&self) -> session::storage::StorageApi { session::storage::StorageApi @@ -2829,26 +3215,26 @@ pub mod api { pub fn grandpa(&self) -> grandpa::storage::StorageApi { grandpa::storage::StorageApi } - pub fn im_online(&self) -> im_online::storage::StorageApi { - im_online::storage::StorageApi + pub fn authority_discovery(&self) -> authority_discovery::storage::StorageApi { + authority_discovery::storage::StorageApi } - pub fn democracy(&self) -> democracy::storage::StorageApi { - democracy::storage::StorageApi + pub fn treasury(&self) -> treasury::storage::StorageApi { + treasury::storage::StorageApi } - pub fn council(&self) -> council::storage::StorageApi { - council::storage::StorageApi + pub fn conviction_voting(&self) -> conviction_voting::storage::StorageApi { + conviction_voting::storage::StorageApi } - pub fn technical_committee(&self) -> technical_committee::storage::StorageApi { - technical_committee::storage::StorageApi + pub fn referenda(&self) -> referenda::storage::StorageApi { + referenda::storage::StorageApi } - pub fn phragmen_election(&self) -> phragmen_election::storage::StorageApi { - phragmen_election::storage::StorageApi + pub fn fellowship_collective(&self) -> fellowship_collective::storage::StorageApi { + fellowship_collective::storage::StorageApi } - pub fn technical_membership(&self) -> technical_membership::storage::StorageApi { - technical_membership::storage::StorageApi + pub fn fellowship_referenda(&self) -> fellowship_referenda::storage::StorageApi { + fellowship_referenda::storage::StorageApi } - pub fn treasury(&self) -> treasury::storage::StorageApi { - treasury::storage::StorageApi + pub fn whitelist(&self) -> whitelist::storage::StorageApi { + whitelist::storage::StorageApi } pub fn claims(&self) -> claims::storage::StorageApi { claims::storage::StorageApi @@ -2877,15 +3263,15 @@ pub mod api { pub fn preimage(&self) -> preimage::storage::StorageApi { preimage::storage::StorageApi } + pub fn asset_rate(&self) -> asset_rate::storage::StorageApi { + asset_rate::storage::StorageApi + } pub fn bounties(&self) -> bounties::storage::StorageApi { bounties::storage::StorageApi } pub fn child_bounties(&self) -> child_bounties::storage::StorageApi { child_bounties::storage::StorageApi } - pub fn tips(&self) -> tips::storage::StorageApi { - tips::storage::StorageApi - } pub fn nis(&self) -> nis::storage::StorageApi { nis::storage::StorageApi } @@ -2931,14 +3317,16 @@ pub mod api { pub fn message_queue(&self) -> message_queue::storage::StorageApi { message_queue::storage::StorageApi } - pub fn para_assignment_provider(&self) -> para_assignment_provider::storage::StorageApi { - para_assignment_provider::storage::StorageApi - } pub fn on_demand_assignment_provider( &self, ) -> on_demand_assignment_provider::storage::StorageApi { on_demand_assignment_provider::storage::StorageApi } + pub fn coretime_assignment_provider( + &self, + ) -> coretime_assignment_provider::storage::StorageApi { + coretime_assignment_provider::storage::StorageApi + } pub fn registrar(&self) -> registrar::storage::StorageApi { registrar::storage::StorageApi } @@ -2954,6 +3342,15 @@ pub mod api { pub fn xcm_pallet(&self) -> xcm_pallet::storage::StorageApi { xcm_pallet::storage::StorageApi } + pub fn beefy(&self) -> beefy::storage::StorageApi { + beefy::storage::StorageApi + } + pub fn mmr(&self) -> mmr::storage::StorageApi { + mmr::storage::StorageApi + } + pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { + mmr_leaf::storage::StorageApi + } pub fn assigned_slots(&self) -> assigned_slots::storage::StorageApi { assigned_slots::storage::StorageApi } @@ -2984,35 +3381,29 @@ pub mod api { pub fn balances(&self) -> balances::calls::TransactionApi { balances::calls::TransactionApi } - pub fn beefy(&self) -> beefy::calls::TransactionApi { - beefy::calls::TransactionApi - } pub fn session(&self) -> session::calls::TransactionApi { session::calls::TransactionApi } pub fn grandpa(&self) -> grandpa::calls::TransactionApi { grandpa::calls::TransactionApi } - pub fn im_online(&self) -> im_online::calls::TransactionApi { - im_online::calls::TransactionApi - } - pub fn democracy(&self) -> democracy::calls::TransactionApi { - democracy::calls::TransactionApi + pub fn treasury(&self) -> treasury::calls::TransactionApi { + treasury::calls::TransactionApi } - pub fn council(&self) -> council::calls::TransactionApi { - council::calls::TransactionApi + pub fn conviction_voting(&self) -> conviction_voting::calls::TransactionApi { + conviction_voting::calls::TransactionApi } - pub fn technical_committee(&self) -> technical_committee::calls::TransactionApi { - technical_committee::calls::TransactionApi + pub fn referenda(&self) -> referenda::calls::TransactionApi { + referenda::calls::TransactionApi } - pub fn phragmen_election(&self) -> phragmen_election::calls::TransactionApi { - phragmen_election::calls::TransactionApi + pub fn fellowship_collective(&self) -> fellowship_collective::calls::TransactionApi { + fellowship_collective::calls::TransactionApi } - pub fn technical_membership(&self) -> technical_membership::calls::TransactionApi { - technical_membership::calls::TransactionApi + pub fn fellowship_referenda(&self) -> fellowship_referenda::calls::TransactionApi { + fellowship_referenda::calls::TransactionApi } - pub fn treasury(&self) -> treasury::calls::TransactionApi { - treasury::calls::TransactionApi + pub fn whitelist(&self) -> whitelist::calls::TransactionApi { + whitelist::calls::TransactionApi } pub fn claims(&self) -> claims::calls::TransactionApi { claims::calls::TransactionApi @@ -3044,15 +3435,15 @@ pub mod api { pub fn preimage(&self) -> preimage::calls::TransactionApi { preimage::calls::TransactionApi } + pub fn asset_rate(&self) -> asset_rate::calls::TransactionApi { + asset_rate::calls::TransactionApi + } pub fn bounties(&self) -> bounties::calls::TransactionApi { bounties::calls::TransactionApi } pub fn child_bounties(&self) -> child_bounties::calls::TransactionApi { child_bounties::calls::TransactionApi } - pub fn tips(&self) -> tips::calls::TransactionApi { - tips::calls::TransactionApi - } pub fn nis(&self) -> nis::calls::TransactionApi { nis::calls::TransactionApi } @@ -3106,9 +3497,18 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::calls::TransactionApi { crowdloan::calls::TransactionApi } + pub fn coretime(&self) -> coretime::calls::TransactionApi { + coretime::calls::TransactionApi + } pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { xcm_pallet::calls::TransactionApi } + pub fn beefy(&self) -> beefy::calls::TransactionApi { + beefy::calls::TransactionApi + } + pub fn identity_migrator(&self) -> identity_migrator::calls::TransactionApi { + identity_migrator::calls::TransactionApi + } pub fn paras_sudo_wrapper(&self) -> paras_sudo_wrapper::calls::TransactionApi { paras_sudo_wrapper::calls::TransactionApi } @@ -3121,6 +3521,9 @@ pub mod api { pub fn state_trie_migration(&self) -> state_trie_migration::calls::TransactionApi { state_trie_migration::calls::TransactionApi } + pub fn root_testing(&self) -> root_testing::calls::TransactionApi { + root_testing::calls::TransactionApi + } pub fn sudo(&self) -> sudo::calls::TransactionApi { sudo::calls::TransactionApi } @@ -3134,9 +3537,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 137u8, 242u8, 30u8, 254u8, 116u8, 40u8, 162u8, 67u8, 171u8, 150u8, 221u8, 140u8, - 59u8, 48u8, 207u8, 137u8, 2u8, 139u8, 202u8, 39u8, 199u8, 28u8, 139u8, 64u8, 180u8, - 78u8, 96u8, 216u8, 5u8, 251u8, 82u8, 194u8, + 27u8, 82u8, 11u8, 155u8, 23u8, 35u8, 231u8, 60u8, 208u8, 155u8, 100u8, 30u8, 110u8, + 30u8, 123u8, 85u8, 188u8, 23u8, 52u8, 205u8, 159u8, 232u8, 66u8, 71u8, 2u8, 154u8, + 88u8, 156u8, 176u8, 3u8, 169u8, 14u8, ] } pub mod system { @@ -3291,10 +3694,63 @@ pub mod api { const PALLET: &'static str = "System"; const CALL: &'static str = "remark_with_event"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AuthorizeUpgrade { + pub code_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AuthorizeUpgradeWithoutChecks { + pub code_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for AuthorizeUpgradeWithoutChecks { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade_without_checks"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ApplyAuthorizedUpgrade { + pub code: ::std::vec::Vec<::core::primitive::u8>, + } + impl ::subxt::blocks::StaticExtrinsic for ApplyAuthorizedUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "apply_authorized_upgrade"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] pub fn remark( &self, remark: ::std::vec::Vec<::core::primitive::u8>, @@ -3311,7 +3767,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] pub fn set_heap_pages( &self, pages: ::core::primitive::u64, @@ -3328,7 +3784,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] pub fn set_code( &self, code: ::std::vec::Vec<::core::primitive::u8>, @@ -3344,7 +3800,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] pub fn set_code_without_checks( &self, code: ::std::vec::Vec<::core::primitive::u8>, @@ -3361,7 +3820,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] pub fn set_storage( &self, items: ::std::vec::Vec<( @@ -3381,7 +3840,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] pub fn kill_storage( &self, keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, @@ -3398,7 +3857,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] pub fn kill_prefix( &self, prefix: ::std::vec::Vec<::core::primitive::u8>, @@ -3416,7 +3878,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] pub fn remark_with_event( &self, remark: ::std::vec::Vec<::core::primitive::u8>, @@ -3432,6 +3894,74 @@ pub mod api { ], ) } + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] + pub fn authorize_upgrade( + &self, + code_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "authorize_upgrade", + types::AuthorizeUpgrade { code_hash }, + [ + 4u8, 14u8, 76u8, 107u8, 209u8, 129u8, 9u8, 39u8, 193u8, 17u8, 84u8, + 254u8, 170u8, 214u8, 24u8, 155u8, 29u8, 184u8, 249u8, 241u8, 109u8, + 58u8, 145u8, 131u8, 109u8, 63u8, 38u8, 165u8, 107u8, 215u8, 217u8, + 172u8, + ], + ) + } + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] + pub fn authorize_upgrade_without_checks( + &self, + code_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "authorize_upgrade_without_checks", + types::AuthorizeUpgradeWithoutChecks { code_hash }, + [ + 126u8, 126u8, 55u8, 26u8, 47u8, 55u8, 66u8, 8u8, 167u8, 18u8, 29u8, + 136u8, 146u8, 14u8, 189u8, 117u8, 16u8, 227u8, 162u8, 61u8, 149u8, + 197u8, 104u8, 184u8, 185u8, 161u8, 99u8, 154u8, 80u8, 125u8, 181u8, + 233u8, + ], + ) + } + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] + pub fn apply_authorized_upgrade( + &self, + code: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "System", + "apply_authorized_upgrade", + types::ApplyAuthorizedUpgrade { code }, + [ + 232u8, 107u8, 127u8, 38u8, 230u8, 29u8, 97u8, 4u8, 160u8, 191u8, 222u8, + 156u8, 245u8, 102u8, 196u8, 141u8, 44u8, 163u8, 98u8, 68u8, 125u8, + 32u8, 124u8, 101u8, 108u8, 93u8, 211u8, 52u8, 0u8, 231u8, 33u8, 227u8, + ], + ) + } } } #[doc = "Event for the System pallet."] @@ -3546,28 +4076,48 @@ pub mod api { const PALLET: &'static str = "System"; const EVENT: &'static str = "Remarked"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An upgrade was authorized."] + pub struct UpgradeAuthorized { + pub code_hash: ::subxt::utils::H256, + pub check_version: ::core::primitive::bool, + } + impl ::subxt::events::StaticEvent for UpgradeAuthorized { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "UpgradeAuthorized"; + } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { #[doc = " The full account information for a particular account ID."] - pub fn account_iter( + pub fn account( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::frame_system::AccountInfo< ::core::primitive::u32, runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "System", "Account", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 14u8, 233u8, 115u8, 214u8, 0u8, 109u8, 222u8, 121u8, 162u8, 65u8, 60u8, 175u8, 209u8, 79u8, 222u8, 124u8, 22u8, 235u8, 138u8, 176u8, 133u8, @@ -3576,23 +4126,22 @@ pub mod api { ) } #[doc = " The full account information for a particular account ID."] - pub fn account( + pub fn account_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::frame_system::AccountInfo< ::core::primitive::u32, runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "System", "Account", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 14u8, 233u8, 115u8, 214u8, 0u8, 109u8, 222u8, 121u8, 162u8, 65u8, 60u8, 175u8, 209u8, 79u8, 222u8, 124u8, 22u8, 235u8, 138u8, 176u8, 133u8, @@ -3622,6 +4171,27 @@ pub mod api { ], ) } + #[doc = " Whether all inherents have been applied."] + pub fn inherents_applied( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "InherentsApplied", + vec![], + [ + 132u8, 249u8, 142u8, 252u8, 8u8, 103u8, 80u8, 120u8, 50u8, 6u8, 188u8, + 223u8, 101u8, 55u8, 165u8, 189u8, 172u8, 249u8, 165u8, 230u8, 183u8, + 109u8, 34u8, 65u8, 185u8, 150u8, 29u8, 8u8, 186u8, 129u8, 135u8, 239u8, + ], + ) + } #[doc = " The current weight for the block."] pub fn block_weight( &self, @@ -3668,19 +4238,20 @@ pub mod api { ) } #[doc = " Map of block numbers to block hashes."] - pub fn block_hash_iter( + pub fn block_hash( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::H256, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "System", "BlockHash", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 217u8, 32u8, 215u8, 253u8, 24u8, 182u8, 207u8, 178u8, 157u8, 24u8, 103u8, 100u8, 195u8, 165u8, 69u8, 152u8, 112u8, 181u8, 56u8, 192u8, @@ -3690,20 +4261,19 @@ pub mod api { ) } #[doc = " Map of block numbers to block hashes."] - pub fn block_hash( + pub fn block_hash_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::H256, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "System", "BlockHash", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 217u8, 32u8, 215u8, 253u8, 24u8, 182u8, 207u8, 178u8, 157u8, 24u8, 103u8, 100u8, 195u8, 165u8, 69u8, 152u8, 112u8, 181u8, 56u8, 192u8, @@ -3713,19 +4283,20 @@ pub mod api { ) } #[doc = " Extrinsics data for the current block (maps an extrinsic's index to its data)."] - pub fn extrinsic_data_iter( + pub fn extrinsic_data( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<::core::primitive::u8>, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "System", "ExtrinsicData", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 160u8, 180u8, 122u8, 18u8, 196u8, 26u8, 2u8, 37u8, 115u8, 232u8, 133u8, 220u8, 106u8, 245u8, 4u8, 129u8, 42u8, 84u8, 241u8, 45u8, 199u8, 179u8, @@ -3734,20 +4305,19 @@ pub mod api { ) } #[doc = " Extrinsics data for the current block (maps an extrinsic's index to its data)."] - pub fn extrinsic_data( + pub fn extrinsic_data_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<::core::primitive::u8>, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "System", "ExtrinsicData", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 160u8, 180u8, 122u8, 18u8, 196u8, 26u8, 2u8, 37u8, 115u8, 232u8, 133u8, 220u8, 106u8, 245u8, 4u8, 129u8, 42u8, 84u8, 241u8, 45u8, 199u8, 179u8, @@ -3844,10 +4414,10 @@ pub mod api { "Events", vec![], [ - 33u8, 114u8, 223u8, 104u8, 185u8, 102u8, 140u8, 69u8, 30u8, 238u8, - 123u8, 184u8, 89u8, 201u8, 76u8, 236u8, 35u8, 111u8, 146u8, 125u8, - 143u8, 248u8, 51u8, 190u8, 175u8, 216u8, 109u8, 104u8, 160u8, 200u8, - 110u8, 20u8, + 202u8, 139u8, 66u8, 79u8, 166u8, 169u8, 247u8, 34u8, 243u8, 10u8, + 203u8, 114u8, 155u8, 129u8, 123u8, 151u8, 7u8, 237u8, 89u8, 178u8, + 71u8, 241u8, 218u8, 201u8, 35u8, 146u8, 49u8, 174u8, 143u8, 71u8, + 250u8, 198u8, ], ) } @@ -3883,19 +4453,20 @@ pub mod api { #[doc = " The value has the type `(BlockNumberFor, EventIndex)` because if we used only just"] #[doc = " the `EventIndex` then in case if the topic has the same contents on the next block"] #[doc = " no notification will be triggered thus the event might be lost."] - pub fn event_topics_iter( + pub fn event_topics( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<(::core::primitive::u32, ::core::primitive::u32)>, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "System", "EventTopics", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 40u8, 225u8, 14u8, 75u8, 44u8, 176u8, 76u8, 34u8, 143u8, 107u8, 69u8, 133u8, 114u8, 13u8, 172u8, 250u8, 141u8, 73u8, 12u8, 65u8, 217u8, 63u8, @@ -3913,20 +4484,19 @@ pub mod api { #[doc = " The value has the type `(BlockNumberFor, EventIndex)` because if we used only just"] #[doc = " the `EventIndex` then in case if the topic has the same contents on the next block"] #[doc = " no notification will be triggered thus the event might be lost."] - pub fn event_topics( + pub fn event_topics_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<(::core::primitive::u32, ::core::primitive::u32)>, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "System", "EventTopics", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 40u8, 225u8, 14u8, 75u8, 44u8, 176u8, 76u8, 34u8, 143u8, 107u8, 69u8, 133u8, 114u8, 13u8, 172u8, 250u8, 141u8, 73u8, 12u8, 65u8, 217u8, 63u8, @@ -4020,6 +4590,27 @@ pub mod api { ], ) } + #[doc = " `Some` if a code upgrade has been authorized."] + pub fn authorized_upgrade( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::frame_system::CodeUpgradeAuthorization, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "System", + "AuthorizedUpgrade", + vec![], + [ + 165u8, 97u8, 27u8, 138u8, 2u8, 28u8, 55u8, 92u8, 96u8, 96u8, 168u8, + 169u8, 55u8, 178u8, 44u8, 127u8, 58u8, 140u8, 206u8, 178u8, 1u8, 37u8, + 214u8, 213u8, 251u8, 123u8, 5u8, 111u8, 90u8, 148u8, 217u8, 135u8, + ], + ) + } } } pub mod constants { @@ -4087,7 +4678,7 @@ pub mod api { ], ) } - #[doc = " Get the chain's current version."] + #[doc = " Get the chain's in-code version."] pub fn version( &self, ) -> ::subxt::constants::Address @@ -4203,7 +4794,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] pub fn report_equivocation( &self, equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< @@ -4220,14 +4814,21 @@ pub mod api { key_owner_proof, }, [ - 37u8, 70u8, 151u8, 149u8, 231u8, 197u8, 226u8, 88u8, 38u8, 138u8, - 147u8, 164u8, 250u8, 117u8, 156u8, 178u8, 44u8, 20u8, 123u8, 33u8, - 11u8, 106u8, 56u8, 122u8, 90u8, 11u8, 15u8, 219u8, 245u8, 18u8, 171u8, - 90u8, + 97u8, 65u8, 136u8, 207u8, 137u8, 113u8, 206u8, 76u8, 166u8, 245u8, + 231u8, 162u8, 65u8, 47u8, 251u8, 149u8, 68u8, 179u8, 13u8, 123u8, + 209u8, 146u8, 83u8, 54u8, 14u8, 150u8, 62u8, 195u8, 27u8, 190u8, 76u8, + 224u8, ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub fn report_equivocation_unsigned( &self, equivocation_proof: runtime_types::sp_consensus_slots::EquivocationProof< @@ -4244,13 +4845,16 @@ pub mod api { key_owner_proof, }, [ - 179u8, 248u8, 80u8, 171u8, 220u8, 8u8, 75u8, 215u8, 121u8, 151u8, - 255u8, 4u8, 6u8, 54u8, 141u8, 244u8, 111u8, 156u8, 183u8, 19u8, 192u8, - 195u8, 79u8, 53u8, 0u8, 170u8, 120u8, 227u8, 186u8, 45u8, 48u8, 57u8, + 184u8, 158u8, 14u8, 168u8, 175u8, 23u8, 10u8, 63u8, 54u8, 15u8, 182u8, + 163u8, 5u8, 49u8, 223u8, 197u8, 45u8, 204u8, 216u8, 26u8, 126u8, 157u8, + 242u8, 233u8, 228u8, 203u8, 117u8, 216u8, 185u8, 157u8, 199u8, 117u8, ], ) } - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] pub fn plan_config_change( &self, config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, @@ -4313,10 +4917,10 @@ pub mod api { "Authorities", vec![], [ - 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, - 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, - 153u8, 234u8, 181u8, 252u8, 55u8, 198u8, 175u8, 55u8, 211u8, 105u8, - 85u8, + 192u8, 157u8, 98u8, 244u8, 104u8, 38u8, 195u8, 114u8, 183u8, 62u8, + 247u8, 18u8, 31u8, 152u8, 246u8, 206u8, 97u8, 13u8, 118u8, 211u8, + 104u8, 54u8, 150u8, 152u8, 126u8, 170u8, 228u8, 158u8, 108u8, 129u8, + 134u8, 44u8, ], ) } @@ -4456,10 +5060,9 @@ pub mod api { "NextAuthorities", vec![], [ - 116u8, 95u8, 126u8, 199u8, 237u8, 90u8, 202u8, 227u8, 247u8, 56u8, - 201u8, 113u8, 239u8, 191u8, 151u8, 56u8, 156u8, 133u8, 61u8, 64u8, - 141u8, 26u8, 8u8, 95u8, 177u8, 255u8, 54u8, 223u8, 132u8, 74u8, 210u8, - 128u8, + 29u8, 161u8, 79u8, 221u8, 198u8, 101u8, 11u8, 17u8, 20u8, 17u8, 225u8, + 144u8, 35u8, 150u8, 241u8, 190u8, 106u8, 32u8, 230u8, 14u8, 212u8, + 126u8, 1u8, 96u8, 73u8, 173u8, 245u8, 39u8, 153u8, 33u8, 205u8, 174u8, ], ) } @@ -4494,21 +5097,22 @@ pub mod api { ) } #[doc = " TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay."] - pub fn under_construction_iter( + pub fn under_construction( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< [::core::primitive::u8; 32usize], >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Babe", "UnderConstruction", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 120u8, 120u8, 59u8, 247u8, 50u8, 6u8, 220u8, 14u8, 2u8, 76u8, 203u8, 244u8, 232u8, 144u8, 253u8, 191u8, 101u8, 35u8, 99u8, 85u8, 111u8, @@ -4517,22 +5121,21 @@ pub mod api { ) } #[doc = " TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay."] - pub fn under_construction( + pub fn under_construction_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< [::core::primitive::u8; 32usize], >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Babe", "UnderConstruction", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 120u8, 120u8, 59u8, 247u8, 50u8, 6u8, 220u8, 14u8, 2u8, 76u8, 203u8, 244u8, 232u8, 144u8, 253u8, 191u8, 101u8, 35u8, 99u8, 85u8, 111u8, @@ -4556,9 +5159,10 @@ pub mod api { "Initialized", vec![], [ - 137u8, 31u8, 4u8, 130u8, 35u8, 232u8, 67u8, 108u8, 17u8, 123u8, 26u8, - 96u8, 238u8, 95u8, 138u8, 208u8, 163u8, 83u8, 218u8, 143u8, 8u8, 119u8, - 138u8, 130u8, 9u8, 194u8, 92u8, 40u8, 7u8, 89u8, 53u8, 237u8, + 169u8, 217u8, 237u8, 78u8, 186u8, 202u8, 206u8, 213u8, 54u8, 85u8, + 206u8, 166u8, 22u8, 138u8, 236u8, 60u8, 211u8, 169u8, 12u8, 183u8, + 23u8, 69u8, 194u8, 236u8, 112u8, 21u8, 62u8, 219u8, 92u8, 131u8, 134u8, + 145u8, ], ) } @@ -4821,7 +5425,25 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] pub fn set(&self, now: ::core::primitive::u64) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Timestamp", @@ -4840,7 +5462,7 @@ pub mod api { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " Current time for the current block."] + #[doc = " The current time for the current block."] pub fn now( &self, ) -> ::subxt::storage::address::Address< @@ -4861,7 +5483,10 @@ pub mod api { ], ) } - #[doc = " Did the timestamp get updated in this block?"] + #[doc = " Whether the timestamp has been updated in this block."] + #[doc = ""] + #[doc = " This value is updated to `true` upon successful submission of a timestamp by a node."] + #[doc = " It is then checked at the end of each block execution in the `on_finalize` hook."] pub fn did_update( &self, ) -> ::subxt::storage::address::Address< @@ -4889,10 +5514,12 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The minimum period between blocks. Beware that this is different to the *expected*"] - #[doc = " period that the block production apparatus provides. Your chosen consensus system will"] - #[doc = " generally work with this to determine a sensible block time. e.g. For Aura, it will be"] - #[doc = " double this period on default settings."] + #[doc = " The minimum period between blocks."] + #[doc = ""] + #[doc = " Be aware that this is different to the *expected* period that the block production"] + #[doc = " apparatus provides. Your chosen consensus system will generally work with this to"] + #[doc = " determine a sensible block time. For example, in the Aura pallet it will be double this"] + #[doc = " period on default settings."] pub fn minimum_period( &self, ) -> ::subxt::constants::Address<::core::primitive::u64> { @@ -5015,7 +5642,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn claim( &self, index: ::core::primitive::u32, @@ -5031,7 +5669,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn transfer( &self, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5049,7 +5698,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn free( &self, index: ::core::primitive::u32, @@ -5066,7 +5726,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn force_transfer( &self, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5085,7 +5757,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn freeze( &self, index: ::core::primitive::u32, @@ -5171,19 +5854,20 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " The lookup from index to account."] - pub fn accounts_iter( + pub fn accounts( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::subxt::utils::AccountId32, ::core::primitive::u128, ::core::primitive::bool), - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Indices", "Accounts", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 48u8, 189u8, 43u8, 119u8, 32u8, 168u8, 28u8, 12u8, 245u8, 81u8, 119u8, 182u8, 23u8, 201u8, 33u8, 147u8, 128u8, 171u8, 155u8, 134u8, 71u8, @@ -5193,20 +5877,19 @@ pub mod api { ) } #[doc = " The lookup from index to account."] - pub fn accounts( + pub fn accounts_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::subxt::utils::AccountId32, ::core::primitive::u128, ::core::primitive::bool), - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Indices", "Accounts", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 48u8, 189u8, 43u8, 119u8, 32u8, 168u8, 28u8, 12u8, 245u8, 81u8, 119u8, 182u8, 23u8, 201u8, 33u8, 147u8, 128u8, 171u8, 155u8, 134u8, 71u8, @@ -5276,27 +5959,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetBalanceDeprecated { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - pub new_free: ::core::primitive::u128, - #[codec(compact)] - pub old_reserved: ::core::primitive::u128, - } - impl ::subxt::blocks::StaticExtrinsic for SetBalanceDeprecated { - const PALLET: &'static str = "Balances"; - const CALL: &'static str = "set_balance_deprecated"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ForceTransfer { pub source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5389,14 +6051,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Transfer { - pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct ForceSetBalance { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] - pub value: ::core::primitive::u128, + pub new_free: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for Transfer { + impl ::subxt::blocks::StaticExtrinsic for ForceSetBalance { const PALLET: &'static str = "Balances"; - const CALL: &'static str = "transfer"; + const CALL: &'static str = "force_set_balance"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -5408,19 +6070,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceSetBalance { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct ForceAdjustTotalIssuance { + pub direction: runtime_types::pallet_balances::types::AdjustmentDirection, #[codec(compact)] - pub new_free: ::core::primitive::u128, + pub delta: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for ForceSetBalance { + impl ::subxt::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { const PALLET: &'static str = "Balances"; - const CALL: &'static str = "force_set_balance"; + const CALL: &'static str = "force_adjust_total_issuance"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub fn transfer_allow_death( &self, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5438,25 +6106,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_balance_deprecated`]."] - pub fn set_balance_deprecated( - &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - new_free: ::core::primitive::u128, - old_reserved: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Balances", - "set_balance_deprecated", - types::SetBalanceDeprecated { who, new_free, old_reserved }, - [ - 125u8, 171u8, 21u8, 186u8, 108u8, 185u8, 241u8, 145u8, 125u8, 8u8, - 12u8, 42u8, 96u8, 114u8, 80u8, 80u8, 227u8, 76u8, 20u8, 208u8, 93u8, - 219u8, 36u8, 50u8, 209u8, 155u8, 70u8, 45u8, 6u8, 57u8, 156u8, 77u8, - ], - ) - } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub fn force_transfer( &self, source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5474,7 +6125,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub fn transfer_keep_alive( &self, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5491,7 +6147,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub fn transfer_all( &self, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5508,7 +6178,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub fn force_unreserve( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5526,7 +6198,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] pub fn upgrade_accounts( &self, who: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -5542,25 +6221,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer`]."] - pub fn transfer( - &self, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Balances", - "transfer", - types::Transfer { dest, value }, - [ - 154u8, 145u8, 140u8, 54u8, 50u8, 123u8, 225u8, 249u8, 200u8, 217u8, - 172u8, 110u8, 233u8, 198u8, 77u8, 198u8, 211u8, 89u8, 8u8, 13u8, 240u8, - 94u8, 28u8, 13u8, 242u8, 217u8, 168u8, 23u8, 106u8, 254u8, 249u8, - 120u8, - ], - ) - } - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub fn force_set_balance( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -5577,6 +6240,28 @@ pub mod api { ], ) } + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + pub fn force_adjust_total_issuance( + &self, + direction: runtime_types::pallet_balances::types::AdjustmentDirection, + delta: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Balances", + "force_adjust_total_issuance", + types::ForceAdjustTotalIssuance { direction, delta }, + [ + 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, + 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, + 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, + 202u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -5987,6 +6672,25 @@ pub mod api { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Thawed"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `TotalIssuance` was forcefully changed."] + pub struct TotalIssuanceForced { + pub old: ::core::primitive::u128, + pub new: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for TotalIssuanceForced { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "TotalIssuanceForced"; + } } pub mod storage { use super::runtime_types; @@ -6059,19 +6763,20 @@ pub mod api { #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] - pub fn account_iter( + pub fn account( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Balances", "Account", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -6103,20 +6808,19 @@ pub mod api { #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] - pub fn account( + pub fn account_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Balances", "Account", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, @@ -6126,21 +6830,24 @@ pub mod api { } #[doc = " Any liquidity locks on some account balances."] #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] - pub fn locks_iter( + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn locks( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Balances", "Locks", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -6150,22 +6857,23 @@ pub mod api { } #[doc = " Any liquidity locks on some account balances."] #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] - pub fn locks( + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn locks_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Balances", "Locks", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, @@ -6174,8 +6882,11 @@ pub mod api { ) } #[doc = " Named reserves on some account balances."] - pub fn reserves_iter( + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn reserves( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -6184,14 +6895,14 @@ pub mod api { ::core::primitive::u128, >, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Balances", "Reserves", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -6200,9 +6911,10 @@ pub mod api { ) } #[doc = " Named reserves on some account balances."] - pub fn reserves( + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn reserves_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -6211,14 +6923,14 @@ pub mod api { ::core::primitive::u128, >, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Balances", "Reserves", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, @@ -6227,8 +6939,9 @@ pub mod api { ) } #[doc = " Holds on account balances."] - pub fn holds_iter( + pub fn holds( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -6237,26 +6950,25 @@ pub mod api { ::core::primitive::u128, >, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Balances", "Holds", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 84u8, 74u8, 134u8, 103u8, 22u8, 48u8, 121u8, 251u8, 28u8, 99u8, 207u8, - 65u8, 134u8, 19u8, 178u8, 217u8, 85u8, 221u8, 239u8, 51u8, 185u8, - 206u8, 222u8, 162u8, 153u8, 217u8, 15u8, 84u8, 162u8, 194u8, 242u8, - 203u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } #[doc = " Holds on account balances."] - pub fn holds( + pub fn holds_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -6265,25 +6977,26 @@ pub mod api { ::core::primitive::u128, >, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Balances", "Holds", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 84u8, 74u8, 134u8, 103u8, 22u8, 48u8, 121u8, 251u8, 28u8, 99u8, 207u8, - 65u8, 134u8, 19u8, 178u8, 217u8, 85u8, 221u8, 239u8, 51u8, 185u8, - 206u8, 222u8, 162u8, 153u8, 217u8, 15u8, 84u8, 162u8, 194u8, 242u8, - 203u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } #[doc = " Freeze locks on account balances."] - pub fn freezes_iter( + pub fn freezes( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -6292,14 +7005,14 @@ pub mod api { ::core::primitive::u128, >, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Balances", "Freezes", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -6308,9 +7021,8 @@ pub mod api { ) } #[doc = " Freeze locks on account balances."] - pub fn freezes( + pub fn freezes_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -6319,14 +7031,14 @@ pub mod api { ::core::primitive::u128, >, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Balances", "Freezes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, @@ -6363,6 +7075,8 @@ pub mod api { } #[doc = " The maximum number of locks that should exist on an account."] #[doc = " Not strictly enforced, but used for weight estimation."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn max_locks(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( "Balances", @@ -6376,6 +7090,8 @@ pub mod api { ) } #[doc = " The maximum number of named reserves that can exist on an account."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn max_reserves(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( "Balances", @@ -6388,19 +7104,6 @@ pub mod api { ], ) } - #[doc = " The maximum number of holds that can exist on an account at any time."] - pub fn max_holds(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Balances", - "MaxHolds", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( @@ -6497,10 +7200,10 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " A fee mulitplier for `Operational` extrinsics to compute \"virtual tip\" to boost their"] + #[doc = " A fee multiplier for `Operational` extrinsics to compute \"virtual tip\" to boost their"] #[doc = " `priority`"] #[doc = ""] - #[doc = " This value is multipled by the `final_fee` to obtain a \"virtual tip\" that is later"] + #[doc = " This value is multiplied by the `final_fee` to obtain a \"virtual tip\" that is later"] #[doc = " added to a tip component in regular `priority` calculations."] #[doc = " It means that a `Normal` transaction can front-run a similarly-sized `Operational`"] #[doc = " extrinsic (with no tip), by including a tip value greater than the virtual tip."] @@ -6599,22 +7302,23 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " The primary structure that holds all offence records keyed by report identifiers."] - pub fn reports_iter( + pub fn reports( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::sp_staking::offence::OffenceDetails< ::subxt::utils::AccountId32, (::subxt::utils::AccountId32, ()), >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Offences", "Reports", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 255u8, 234u8, 162u8, 48u8, 243u8, 210u8, 198u8, 231u8, 218u8, 142u8, 167u8, 10u8, 232u8, 223u8, 239u8, 55u8, 74u8, 23u8, 14u8, 236u8, 88u8, @@ -6624,23 +7328,22 @@ pub mod api { ) } #[doc = " The primary structure that holds all offence records keyed by report identifiers."] - pub fn reports( + pub fn reports_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::sp_staking::offence::OffenceDetails< ::subxt::utils::AccountId32, (::subxt::utils::AccountId32, ()), >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Offences", "Reports", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 255u8, 234u8, 162u8, 48u8, 243u8, 210u8, 198u8, 231u8, 218u8, 142u8, 167u8, 10u8, 232u8, 223u8, 239u8, 55u8, 74u8, 23u8, 14u8, 236u8, 88u8, @@ -6650,19 +7353,24 @@ pub mod api { ) } #[doc = " A vector of reports of the same kind that happened at the same time slot."] - pub fn concurrent_reports_index_iter( + pub fn concurrent_reports_index( &self, + _0: impl ::std::borrow::Borrow<[::core::primitive::u8; 16usize]>, + _1: impl ::std::borrow::Borrow<[::core::primitive::u8]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<::subxt::utils::H256>, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", - vec![], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, @@ -6672,9 +7380,8 @@ pub mod api { ) } #[doc = " A vector of reports of the same kind that happened at the same time slot."] - pub fn concurrent_reports_index_iter1( + pub fn concurrent_reports_index_root( &self, - _0: impl ::std::borrow::Borrow<[::core::primitive::u8; 16usize]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<::subxt::utils::H256>, @@ -6685,7 +7392,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "Offences", "ConcurrentReportsIndex", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, @@ -6694,45 +7401,90 @@ pub mod api { ], ) } - #[doc = " A vector of reports of the same kind that happened at the same time slot."] - pub fn concurrent_reports_index( + } + } + } + pub mod historical { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions( &self, - _0: impl ::std::borrow::Borrow<[::core::primitive::u8; 16usize]>, - _1: impl ::std::borrow::Borrow<[::core::primitive::u8]>, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::subxt::utils::H256>, + (::subxt::utils::H256, ::core::primitive::u32), ::subxt::storage::address::Yes, + (), ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "HistoricalSessions", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, + ], + ) + } + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::subxt::utils::H256, ::core::primitive::u32), + (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Offences", - "ConcurrentReportsIndex", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + "Historical", + "HistoricalSessions", + Vec::new(), + [ + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, ], + ) + } + #[doc = " The range of historical sessions we store. [first, last)"] + pub fn stored_range( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::core::primitive::u32, ::core::primitive::u32), + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "Historical", + "StoredRange", + vec![], [ - 170u8, 186u8, 72u8, 29u8, 251u8, 38u8, 193u8, 195u8, 109u8, 86u8, 0u8, - 241u8, 20u8, 235u8, 108u8, 126u8, 215u8, 82u8, 73u8, 113u8, 199u8, - 138u8, 24u8, 58u8, 216u8, 72u8, 221u8, 232u8, 252u8, 244u8, 96u8, - 247u8, + 134u8, 32u8, 250u8, 13u8, 201u8, 25u8, 54u8, 243u8, 231u8, 81u8, 252u8, + 231u8, 68u8, 217u8, 235u8, 43u8, 22u8, 223u8, 220u8, 133u8, 198u8, + 218u8, 95u8, 152u8, 189u8, 87u8, 6u8, 228u8, 242u8, 59u8, 232u8, 59u8, ], ) } } } } - pub mod historical { - use super::{root_mod, runtime_types}; - } - pub mod beefy { + pub mod session { use super::{root_mod, runtime_types}; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_beefy::pallet::Error; + #[doc = "Error for the session pallet."] + pub type Error = runtime_types::pallet_session::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_beefy::pallet::Call; + pub type Call = runtime_types::pallet_session::pallet::Call; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -6748,19 +7500,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ReportEquivocation { - pub equivocation_proof: ::std::boxed::Box< - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >, - >, - pub key_owner_proof: runtime_types::sp_session::MembershipProof, + pub struct SetKeys { + pub keys: runtime_types::rococo_runtime::SessionKeys, + pub proof: ::std::vec::Vec<::core::primitive::u8>, } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation"; + impl ::subxt::blocks::StaticExtrinsic for SetKeys { + const PALLET: &'static str = "Session"; + const CALL: &'static str = "set_keys"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -6772,750 +7518,274 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ReportEquivocationUnsigned { - pub equivocation_proof: ::std::boxed::Box< - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >, - >, - pub key_owner_proof: runtime_types::sp_session::MembershipProof, - } - impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation_unsigned"; + pub struct PurgeKeys; + impl ::subxt::blocks::StaticExtrinsic for PurgeKeys { + const PALLET: &'static str = "Session"; + const CALL: &'static str = "purge_keys"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] - pub fn report_equivocation( + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] + pub fn set_keys( &self, - equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >, - key_owner_proof: runtime_types::sp_session::MembershipProof, - ) -> ::subxt::tx::Payload { + keys: runtime_types::rococo_runtime::SessionKeys, + proof: ::std::vec::Vec<::core::primitive::u8>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Beefy", - "report_equivocation", - types::ReportEquivocation { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), - key_owner_proof, - }, + "Session", + "set_keys", + types::SetKeys { keys, proof }, [ - 156u8, 32u8, 92u8, 179u8, 165u8, 93u8, 216u8, 130u8, 121u8, 225u8, - 33u8, 141u8, 255u8, 12u8, 101u8, 136u8, 177u8, 25u8, 23u8, 239u8, 12u8, - 142u8, 88u8, 228u8, 85u8, 171u8, 218u8, 185u8, 146u8, 245u8, 149u8, - 85u8, + 251u8, 79u8, 44u8, 78u8, 55u8, 160u8, 150u8, 159u8, 183u8, 86u8, 129u8, + 32u8, 250u8, 138u8, 223u8, 100u8, 40u8, 203u8, 116u8, 224u8, 244u8, + 142u8, 7u8, 154u8, 147u8, 97u8, 160u8, 162u8, 95u8, 5u8, 213u8, 246u8, ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] - pub fn report_equivocation_unsigned( - &self, - equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >, - key_owner_proof: runtime_types::sp_session::MembershipProof, - ) -> ::subxt::tx::Payload { + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] + pub fn purge_keys(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Beefy", - "report_equivocation_unsigned", - types::ReportEquivocationUnsigned { - equivocation_proof: ::std::boxed::Box::new(equivocation_proof), - key_owner_proof, - }, + "Session", + "purge_keys", + types::PurgeKeys {}, [ - 126u8, 201u8, 236u8, 234u8, 107u8, 52u8, 37u8, 115u8, 228u8, 232u8, - 103u8, 193u8, 143u8, 224u8, 79u8, 192u8, 207u8, 204u8, 161u8, 103u8, - 210u8, 131u8, 64u8, 251u8, 48u8, 196u8, 249u8, 148u8, 2u8, 179u8, - 135u8, 121u8, + 215u8, 204u8, 146u8, 236u8, 32u8, 78u8, 198u8, 79u8, 85u8, 214u8, 15u8, + 151u8, 158u8, 31u8, 146u8, 119u8, 119u8, 204u8, 151u8, 169u8, 226u8, + 67u8, 217u8, 39u8, 241u8, 245u8, 203u8, 240u8, 203u8, 172u8, 16u8, + 209u8, ], ) } } } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_session::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "New session has happened. Note that the argument is the session index, not the"] + #[doc = "block number as the type might suggest."] + pub struct NewSession { + pub session_index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for NewSession { + const PALLET: &'static str = "Session"; + const EVENT: &'static str = "NewSession"; + } + } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The current authorities set"] - pub fn authorities( + #[doc = " The current set of validators."] + pub fn validators( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >, + ::std::vec::Vec<::subxt::utils::AccountId32>, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "Beefy", - "Authorities", + "Session", + "Validators", vec![], [ - 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, - 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, - 23u8, 59u8, 59u8, 41u8, 0u8, 226u8, 98u8, 166u8, 253u8, 59u8, + 50u8, 86u8, 154u8, 222u8, 249u8, 209u8, 156u8, 22u8, 155u8, 25u8, + 133u8, 194u8, 210u8, 50u8, 38u8, 28u8, 139u8, 201u8, 90u8, 139u8, + 115u8, 12u8, 12u8, 141u8, 4u8, 178u8, 201u8, 241u8, 223u8, 234u8, 6u8, + 86u8, ], ) } - #[doc = " The current validator set id"] - pub fn validator_set_id( + #[doc = " Current index of the session."] + pub fn current_index( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u64, + ::core::primitive::u32, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "Beefy", - "ValidatorSetId", + "Session", + "CurrentIndex", vec![], [ - 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, - 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, - 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, - 78u8, + 167u8, 151u8, 125u8, 150u8, 159u8, 21u8, 78u8, 217u8, 237u8, 183u8, + 135u8, 65u8, 187u8, 114u8, 188u8, 206u8, 16u8, 32u8, 69u8, 208u8, + 134u8, 159u8, 232u8, 224u8, 243u8, 27u8, 31u8, 166u8, 145u8, 44u8, + 221u8, 230u8, ], ) } - #[doc = " Authorities set scheduled to be used with the next session"] - pub fn next_authorities( + #[doc = " True if the underlying economic identities or weighting behind the validators"] + #[doc = " has changed in the queued validator set."] + pub fn queued_changed( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >, + ::core::primitive::bool, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "Beefy", - "NextAuthorities", + "Session", + "QueuedChanged", vec![], [ - 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, - 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, - 13u8, 209u8, 205u8, 98u8, 104u8, 91u8, 3u8, 47u8, 82u8, 11u8, + 184u8, 137u8, 224u8, 137u8, 31u8, 236u8, 95u8, 164u8, 102u8, 225u8, + 198u8, 227u8, 140u8, 37u8, 113u8, 57u8, 59u8, 4u8, 202u8, 102u8, 117u8, + 36u8, 226u8, 64u8, 113u8, 141u8, 199u8, 111u8, 99u8, 144u8, 198u8, + 153u8, ], ) } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] - #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session_iter( + #[doc = " The queued keys for the next session. When the next session begins, these keys"] + #[doc = " will be used to determine the validator's session keys."] + pub fn queued_keys( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - (), - (), + ::std::vec::Vec<( + ::subxt::utils::AccountId32, + runtime_types::rococo_runtime::SessionKeys, + )>, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "Beefy", - "SetIdSession", + "Session", + "QueuedKeys", vec![], [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + 54u8, 232u8, 4u8, 80u8, 89u8, 214u8, 20u8, 219u8, 48u8, 108u8, 26u8, + 89u8, 170u8, 210u8, 66u8, 37u8, 12u8, 60u8, 148u8, 186u8, 241u8, 64u8, + 83u8, 37u8, 124u8, 217u8, 51u8, 120u8, 148u8, 205u8, 85u8, 48u8, ], ) } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] + #[doc = " Indices of disabled validators."] #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session( + #[doc = " The vec is always kept sorted so that we can find whether a given validator is"] + #[doc = " disabled using binary search. It gets cleared when `on_session_ending` returns"] + #[doc = " a new set of identities."] + pub fn disabled_validators( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u64>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, + ::std::vec::Vec<::core::primitive::u32>, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), (), > { ::subxt::storage::address::Address::new_static( - "Beefy", - "SetIdSession", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + "Session", + "DisabledValidators", + vec![], [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + 213u8, 19u8, 168u8, 234u8, 187u8, 200u8, 180u8, 97u8, 234u8, 189u8, + 36u8, 233u8, 158u8, 184u8, 45u8, 35u8, 129u8, 213u8, 133u8, 8u8, 104u8, + 183u8, 46u8, 68u8, 154u8, 240u8, 132u8, 22u8, 247u8, 11u8, 54u8, 221u8, ], ) } - #[doc = " Block number where BEEFY consensus is enabled/started."] - #[doc = " By changing this (through governance or sudo), BEEFY consensus is effectively"] - #[doc = " restarted from the new block number."] - pub fn genesis_block( + #[doc = " The next session keys for a validator."] + pub fn next_keys( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::option::Option<::core::primitive::u32>, - ::subxt::storage::address::Yes, + runtime_types::rococo_runtime::SessionKeys, ::subxt::storage::address::Yes, (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Beefy", - "GenesisBlock", - vec![], + "Session", + "NextKeys", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, - 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, - 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, + 123u8, 233u8, 243u8, 13u8, 162u8, 60u8, 206u8, 97u8, 76u8, 43u8, 184u8, + 99u8, 17u8, 23u8, 110u8, 108u8, 131u8, 195u8, 109u8, 24u8, 217u8, 93u8, + 99u8, 41u8, 95u8, 196u8, 239u8, 243u8, 191u8, 131u8, 2u8, 57u8, ], ) } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The maximum number of authorities that can be added."] - pub fn max_authorities( + #[doc = " The next session keys for a validator."] + pub fn next_keys_root( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxAuthorities", + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::rococo_runtime::SessionKeys, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Session", + "NextKeys", + Vec::new(), [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of nominators for each validator."] - pub fn max_nominators( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxNominators", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of entries to keep in the set id to session index mapping."] - #[doc = ""] - #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] - #[doc = " value should relate to the bonding duration of whatever staking system is"] - #[doc = " being used (if any). If equivocation handling is not enabled then this value"] - #[doc = " can be zero."] - pub fn max_set_id_session_entries( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( - "Beefy", - "MaxSetIdSessionEntries", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, - ], - ) - } - } - } - } - pub mod mmr { - use super::{root_mod, runtime_types}; - pub mod storage { - use super::runtime_types; - pub struct StorageApi; - impl StorageApi { - #[doc = " Latest MMR Root hash."] - pub fn root_hash( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::H256, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "RootHash", - vec![], - [ - 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, - 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, - 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, - ], - ) - } - #[doc = " Current size of the MMR (number of leaves)."] - pub fn number_of_leaves( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u64, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "NumberOfLeaves", - vec![], - [ - 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, - 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, - 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::H256, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "Nodes", - vec![], - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u64>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::H256, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Mmr", - "Nodes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - } - } - } - pub mod mmr_leaf { - use super::{root_mod, runtime_types}; - pub mod storage { - use super::runtime_types; - pub struct StorageApi; - impl StorageApi { - #[doc = " Details of current BEEFY authority set."] - pub fn beefy_authorities( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "MmrLeaf", - "BeefyAuthorities", - vec![], - [ - 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, - 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, - 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, - 7u8, - ], - ) - } - #[doc = " Details of next BEEFY authority set."] - #[doc = ""] - #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] - pub fn beefy_next_authorities( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "MmrLeaf", - "BeefyNextAuthorities", - vec![], - [ - 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, - 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, - 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, - ], - ) - } - } - } - } - pub mod session { - use super::{root_mod, runtime_types}; - #[doc = "Error for the session pallet."] - pub type Error = runtime_types::pallet_session::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_session::pallet::Call; - pub mod calls { - use super::{root_mod, runtime_types}; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetKeys { - pub keys: runtime_types::rococo_runtime::SessionKeys, - pub proof: ::std::vec::Vec<::core::primitive::u8>, - } - impl ::subxt::blocks::StaticExtrinsic for SetKeys { - const PALLET: &'static str = "Session"; - const CALL: &'static str = "set_keys"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct PurgeKeys; - impl ::subxt::blocks::StaticExtrinsic for PurgeKeys { - const PALLET: &'static str = "Session"; - const CALL: &'static str = "purge_keys"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::set_keys`]."] - pub fn set_keys( - &self, - keys: runtime_types::rococo_runtime::SessionKeys, - proof: ::std::vec::Vec<::core::primitive::u8>, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Session", - "set_keys", - types::SetKeys { keys, proof }, - [ - 50u8, 154u8, 235u8, 252u8, 160u8, 25u8, 233u8, 90u8, 76u8, 227u8, 22u8, - 129u8, 221u8, 129u8, 95u8, 124u8, 117u8, 117u8, 43u8, 17u8, 109u8, - 252u8, 39u8, 115u8, 150u8, 80u8, 38u8, 34u8, 62u8, 237u8, 248u8, 246u8, - ], - ) - } - #[doc = "See [`Pallet::purge_keys`]."] - pub fn purge_keys(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Session", - "purge_keys", - types::PurgeKeys {}, - [ - 215u8, 204u8, 146u8, 236u8, 32u8, 78u8, 198u8, 79u8, 85u8, 214u8, 15u8, - 151u8, 158u8, 31u8, 146u8, 119u8, 119u8, 204u8, 151u8, 169u8, 226u8, - 67u8, 217u8, 39u8, 241u8, 245u8, 203u8, 240u8, 203u8, 172u8, 16u8, - 209u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_session::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "New session has happened. Note that the argument is the session index, not the"] - #[doc = "block number as the type might suggest."] - pub struct NewSession { - pub session_index: ::core::primitive::u32, - } - impl ::subxt::events::StaticEvent for NewSession { - const PALLET: &'static str = "Session"; - const EVENT: &'static str = "NewSession"; - } - } - pub mod storage { - use super::runtime_types; - pub struct StorageApi; - impl StorageApi { - #[doc = " The current set of validators."] - pub fn validators( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::subxt::utils::AccountId32>, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Session", - "Validators", - vec![], - [ - 50u8, 86u8, 154u8, 222u8, 249u8, 209u8, 156u8, 22u8, 155u8, 25u8, - 133u8, 194u8, 210u8, 50u8, 38u8, 28u8, 139u8, 201u8, 90u8, 139u8, - 115u8, 12u8, 12u8, 141u8, 4u8, 178u8, 201u8, 241u8, 223u8, 234u8, 6u8, - 86u8, - ], - ) - } - #[doc = " Current index of the session."] - pub fn current_index( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Session", - "CurrentIndex", - vec![], - [ - 167u8, 151u8, 125u8, 150u8, 159u8, 21u8, 78u8, 217u8, 237u8, 183u8, - 135u8, 65u8, 187u8, 114u8, 188u8, 206u8, 16u8, 32u8, 69u8, 208u8, - 134u8, 159u8, 232u8, 224u8, 243u8, 27u8, 31u8, 166u8, 145u8, 44u8, - 221u8, 230u8, - ], - ) - } - #[doc = " True if the underlying economic identities or weighting behind the validators"] - #[doc = " has changed in the queued validator set."] - pub fn queued_changed( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Session", - "QueuedChanged", - vec![], - [ - 184u8, 137u8, 224u8, 137u8, 31u8, 236u8, 95u8, 164u8, 102u8, 225u8, - 198u8, 227u8, 140u8, 37u8, 113u8, 57u8, 59u8, 4u8, 202u8, 102u8, 117u8, - 36u8, 226u8, 64u8, 113u8, 141u8, 199u8, 111u8, 99u8, 144u8, 198u8, - 153u8, - ], - ) - } - #[doc = " The queued keys for the next session. When the next session begins, these keys"] - #[doc = " will be used to determine the validator's session keys."] - pub fn queued_keys( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<( - ::subxt::utils::AccountId32, - runtime_types::rococo_runtime::SessionKeys, - )>, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Session", - "QueuedKeys", - vec![], - [ - 251u8, 240u8, 64u8, 86u8, 241u8, 74u8, 141u8, 38u8, 46u8, 18u8, 92u8, - 101u8, 227u8, 161u8, 58u8, 222u8, 17u8, 29u8, 248u8, 237u8, 74u8, 69u8, - 18u8, 16u8, 129u8, 187u8, 172u8, 249u8, 162u8, 96u8, 218u8, 186u8, - ], - ) - } - #[doc = " Indices of disabled validators."] - #[doc = ""] - #[doc = " The vec is always kept sorted so that we can find whether a given validator is"] - #[doc = " disabled using binary search. It gets cleared when `on_session_ending` returns"] - #[doc = " a new set of identities."] - pub fn disabled_validators( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::core::primitive::u32>, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Session", - "DisabledValidators", - vec![], - [ - 213u8, 19u8, 168u8, 234u8, 187u8, 200u8, 180u8, 97u8, 234u8, 189u8, - 36u8, 233u8, 158u8, 184u8, 45u8, 35u8, 129u8, 213u8, 133u8, 8u8, 104u8, - 183u8, 46u8, 68u8, 154u8, 240u8, 132u8, 22u8, 247u8, 11u8, 54u8, 221u8, - ], - ) - } - #[doc = " The next session keys for a validator."] - pub fn next_keys_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::rococo_runtime::SessionKeys, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Session", - "NextKeys", - vec![], - [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, - ], - ) - } - #[doc = " The next session keys for a validator."] - pub fn next_keys( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::rococo_runtime::SessionKeys, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Session", - "NextKeys", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, - ], - ) - } - #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] - pub fn key_owner_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::AccountId32, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Session", - "KeyOwner", - vec![], - [ - 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, - 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, - 253u8, 109u8, 88u8, 77u8, 217u8, 140u8, 51u8, 40u8, 118u8, 35u8, 107u8, - 206u8, + 123u8, 233u8, 243u8, 13u8, 162u8, 60u8, 206u8, 97u8, 76u8, 43u8, 184u8, + 99u8, 17u8, 23u8, 110u8, 108u8, 131u8, 195u8, 109u8, 24u8, 217u8, 93u8, + 99u8, 41u8, 95u8, 196u8, 239u8, 243u8, 191u8, 131u8, 2u8, 57u8, ], ) } #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] - pub fn key_owner_iter1( + pub fn key_owner( &self, _0: impl ::std::borrow::Borrow, + _1: impl ::std::borrow::Borrow<[::core::primitive::u8]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::AccountId32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Session", "KeyOwner", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, @@ -7525,24 +7795,19 @@ pub mod api { ) } #[doc = " The owner of a key. The key is the `KeyTypeId` + the encoded key."] - pub fn key_owner( + pub fn key_owner_root( &self, - _0: impl ::std::borrow::Borrow, - _1: impl ::std::borrow::Borrow<[::core::primitive::u8]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::AccountId32, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Session", "KeyOwner", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 217u8, 204u8, 21u8, 114u8, 247u8, 129u8, 32u8, 242u8, 93u8, 91u8, 253u8, 253u8, 248u8, 90u8, 12u8, 202u8, 195u8, 25u8, 18u8, 100u8, @@ -7632,7 +7897,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] pub fn report_equivocation( &self, equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -7649,13 +7917,22 @@ pub mod api { key_owner_proof, }, [ - 11u8, 183u8, 81u8, 93u8, 41u8, 7u8, 70u8, 155u8, 8u8, 57u8, 177u8, - 245u8, 131u8, 79u8, 236u8, 118u8, 147u8, 114u8, 40u8, 204u8, 177u8, - 2u8, 43u8, 42u8, 2u8, 201u8, 202u8, 120u8, 150u8, 109u8, 108u8, 156u8, + 197u8, 206u8, 246u8, 26u8, 171u8, 25u8, 214u8, 211u8, 138u8, 132u8, + 148u8, 48u8, 66u8, 12u8, 92u8, 17u8, 190u8, 155u8, 121u8, 222u8, 226u8, + 171u8, 208u8, 123u8, 253u8, 247u8, 253u8, 191u8, 90u8, 4u8, 224u8, + 104u8, ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub fn report_equivocation_unsigned( &self, equivocation_proof: runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -7672,13 +7949,24 @@ pub mod api { key_owner_proof, }, [ - 141u8, 133u8, 227u8, 65u8, 22u8, 181u8, 108u8, 9u8, 157u8, 27u8, 124u8, - 53u8, 177u8, 27u8, 5u8, 16u8, 193u8, 66u8, 59u8, 87u8, 143u8, 238u8, - 251u8, 167u8, 117u8, 138u8, 246u8, 236u8, 65u8, 148u8, 20u8, 131u8, + 109u8, 97u8, 251u8, 184u8, 77u8, 61u8, 95u8, 187u8, 132u8, 146u8, 18u8, + 105u8, 109u8, 124u8, 181u8, 74u8, 143u8, 171u8, 248u8, 188u8, 69u8, + 63u8, 65u8, 92u8, 64u8, 42u8, 104u8, 131u8, 67u8, 202u8, 172u8, 73u8, ], ) } - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] pub fn note_stalled( &self, delay: ::core::primitive::u32, @@ -7795,10 +8083,10 @@ pub mod api { "PendingChange", vec![], [ - 150u8, 194u8, 185u8, 248u8, 239u8, 43u8, 141u8, 253u8, 61u8, 106u8, - 74u8, 164u8, 209u8, 204u8, 206u8, 200u8, 32u8, 38u8, 11u8, 78u8, 84u8, - 243u8, 181u8, 142u8, 179u8, 151u8, 81u8, 204u8, 244u8, 150u8, 137u8, - 250u8, + 32u8, 165u8, 141u8, 100u8, 109u8, 66u8, 58u8, 22u8, 118u8, 84u8, 92u8, + 164u8, 119u8, 130u8, 104u8, 25u8, 244u8, 111u8, 223u8, 54u8, 184u8, + 95u8, 196u8, 30u8, 244u8, 129u8, 110u8, 127u8, 200u8, 66u8, 226u8, + 26u8, ], ) } @@ -7877,19 +8165,20 @@ pub mod api { #[doc = " during that session."] #[doc = ""] #[doc = " TWOX-NOTE: `SetId` is not under user control."] - pub fn set_id_session_iter( + pub fn set_id_session( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Grandpa", "SetIdSession", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, @@ -7907,20 +8196,19 @@ pub mod api { #[doc = " during that session."] #[doc = ""] #[doc = " TWOX-NOTE: `SetId` is not under user control."] - pub fn set_id_session( + pub fn set_id_session_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u64>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Grandpa", "SetIdSession", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, @@ -7928,18 +8216,43 @@ pub mod api { ], ) } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " Max Authorities in use"] - pub fn max_authorities( + #[doc = " The current list of authorities."] + pub fn authorities( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Grandpa", + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Grandpa", + "Authorities", + vec![], + [ + 192u8, 157u8, 98u8, 244u8, 104u8, 38u8, 195u8, 114u8, 183u8, 62u8, + 247u8, 18u8, 31u8, 152u8, 246u8, 206u8, 97u8, 13u8, 118u8, 211u8, + 104u8, 54u8, 150u8, 152u8, 126u8, 170u8, 228u8, 158u8, 108u8, 129u8, + 134u8, 44u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Max Authorities in use"] + pub fn max_authorities( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Grandpa", "MaxAuthorities", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, @@ -7987,354 +8300,69 @@ pub mod api { } } } - pub mod im_online { + pub mod authority_discovery { use super::{root_mod, runtime_types}; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_im_online::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_im_online::pallet::Call; - pub mod calls { - use super::{root_mod, runtime_types}; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Heartbeat { - pub heartbeat: - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, - pub signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, - } - impl ::subxt::blocks::StaticExtrinsic for Heartbeat { - const PALLET: &'static str = "ImOnline"; - const CALL: &'static str = "heartbeat"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::heartbeat`]."] - pub fn heartbeat( - &self, - heartbeat: runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, - signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "ImOnline", - "heartbeat", - types::Heartbeat { heartbeat, signature }, - [ - 41u8, 78u8, 115u8, 250u8, 94u8, 34u8, 215u8, 28u8, 33u8, 175u8, 203u8, - 205u8, 14u8, 40u8, 197u8, 51u8, 24u8, 198u8, 173u8, 32u8, 119u8, 154u8, - 213u8, 125u8, 219u8, 3u8, 128u8, 52u8, 166u8, 223u8, 241u8, 129u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_im_online::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A new heartbeat was received from `AuthorityId`."] - pub struct HeartbeatReceived { - pub authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - } - impl ::subxt::events::StaticEvent for HeartbeatReceived { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "HeartbeatReceived"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "At the end of the session, no offence was committed."] - pub struct AllGood; - impl ::subxt::events::StaticEvent for AllGood { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "AllGood"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "At the end of the session, at least one validator was found to be offline."] - pub struct SomeOffline { - pub offline: ::std::vec::Vec<(::subxt::utils::AccountId32, ())>, - } - impl ::subxt::events::StaticEvent for SomeOffline { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "SomeOffline"; - } - } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The block number after which it's ok to send heartbeats in the current"] - #[doc = " session."] - #[doc = ""] - #[doc = " At the beginning of each session we set this to a value that should fall"] - #[doc = " roughly in the middle of the session duration. The idea is to first wait for"] - #[doc = " the validators to produce a block in the current session, so that the"] - #[doc = " heartbeat later on will not be necessary."] - #[doc = ""] - #[doc = " This value will only be used as a fallback if we fail to get a proper session"] - #[doc = " progress estimate from `NextSessionRotation`, as those estimates should be"] - #[doc = " more accurate then the value we calculate for `HeartbeatAfter`."] - pub fn heartbeat_after( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "HeartbeatAfter", - vec![], - [ - 36u8, 179u8, 76u8, 254u8, 3u8, 184u8, 154u8, 142u8, 70u8, 104u8, 44u8, - 244u8, 39u8, 97u8, 31u8, 31u8, 93u8, 228u8, 185u8, 224u8, 13u8, 160u8, - 231u8, 210u8, 110u8, 143u8, 116u8, 29u8, 0u8, 215u8, 217u8, 137u8, - ], - ) - } - #[doc = " The current set of keys that may issue a heartbeat."] + #[doc = " Keys of the current authority set."] pub fn keys( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + runtime_types::sp_authority_discovery::app::Public, >, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "ImOnline", + "AuthorityDiscovery", "Keys", vec![], [ - 111u8, 104u8, 188u8, 46u8, 152u8, 140u8, 137u8, 244u8, 52u8, 214u8, - 115u8, 156u8, 39u8, 239u8, 15u8, 168u8, 193u8, 125u8, 57u8, 195u8, - 250u8, 156u8, 234u8, 222u8, 222u8, 253u8, 135u8, 232u8, 196u8, 163u8, - 29u8, 218u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", - vec![], - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, + 35u8, 71u8, 73u8, 255u8, 160u8, 250u8, 38u8, 205u8, 32u8, 139u8, 236u8, + 83u8, 194u8, 12u8, 20u8, 221u8, 114u8, 94u8, 196u8, 246u8, 136u8, + 175u8, 70u8, 98u8, 91u8, 50u8, 236u8, 131u8, 131u8, 146u8, 150u8, + 192u8, ], ) } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter1( + #[doc = " Keys of the next authority set."] + pub fn next_keys( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, - (), - (), + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::sp_authority_discovery::app::Public, + >, ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow<::core::primitive::u32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, ::subxt::storage::address::Yes, (), - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "ReceivedHeartbeats", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", + "AuthorityDiscovery", + "NextKeys", vec![], [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter1( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "ImOnline", - "AuthoredBlocks", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " A configuration for base priority of unsigned transactions."] - #[doc = ""] - #[doc = " This is exposed so that it can be tuned for particular runtime, when"] - #[doc = " multiple pallets send unsigned transactions."] - pub fn unsigned_priority( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u64> { - ::subxt::constants::Address::new_static( - "ImOnline", - "UnsignedPriority", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, + 54u8, 44u8, 61u8, 196u8, 2u8, 249u8, 185u8, 199u8, 245u8, 154u8, 178u8, + 109u8, 237u8, 147u8, 72u8, 209u8, 72u8, 196u8, 31u8, 192u8, 217u8, + 231u8, 71u8, 28u8, 148u8, 138u8, 29u8, 115u8, 247u8, 95u8, 185u8, + 189u8, ], ) } } } } - pub mod authority_discovery { - use super::{root_mod, runtime_types}; - } - pub mod democracy { + pub mod treasury { use super::{root_mod, runtime_types}; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_democracy::pallet::Error; + #[doc = "Error for the treasury pallet."] + pub type Error = runtime_types::pallet_treasury::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_democracy::pallet::Call; + pub type Call = runtime_types::pallet_treasury::pallet::Call; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -8350,16 +8378,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Propose { - pub proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, + pub struct ProposeSpend { #[codec(compact)] pub value: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, } - impl ::subxt::blocks::StaticExtrinsic for Propose { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "propose"; + impl ::subxt::blocks::StaticExtrinsic for ProposeSpend { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "propose_spend"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -8371,13 +8397,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Second { + pub struct RejectProposal { #[codec(compact)] - pub proposal: ::core::primitive::u32, + pub proposal_id: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for Second { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "second"; + impl ::subxt::blocks::StaticExtrinsic for RejectProposal { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "reject_proposal"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -8389,33 +8415,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Vote { + pub struct ApproveProposal { #[codec(compact)] - pub ref_index: ::core::primitive::u32, - pub vote: - runtime_types::pallet_democracy::vote::AccountVote<::core::primitive::u128>, - } - impl ::subxt::blocks::StaticExtrinsic for Vote { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "vote"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct EmergencyCancel { - pub ref_index: ::core::primitive::u32, + pub proposal_id: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for EmergencyCancel { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "emergency_cancel"; + impl ::subxt::blocks::StaticExtrinsic for ApproveProposal { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "approve_proposal"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -8427,14 +8433,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ExternalPropose { - pub proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, + pub struct SpendLocal { + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, } - impl ::subxt::blocks::StaticExtrinsic for ExternalPropose { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "external_propose"; + impl ::subxt::blocks::StaticExtrinsic for SpendLocal { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "spend_local"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -8446,14 +8452,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ExternalProposeMajority { - pub proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, + pub struct RemoveApproval { + #[codec(compact)] + pub proposal_id: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for ExternalProposeMajority { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "external_propose_majority"; + impl ::subxt::blocks::StaticExtrinsic for RemoveApproval { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "remove_approval"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -8465,134 +8470,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ExternalProposeDefault { - pub proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, + pub struct Spend { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, >, - } - impl ::subxt::blocks::StaticExtrinsic for ExternalProposeDefault { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "external_propose_default"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct FastTrack { - pub proposal_hash: ::subxt::utils::H256, - pub voting_period: ::core::primitive::u32, - pub delay: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for FastTrack { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "fast_track"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct VetoExternal { - pub proposal_hash: ::subxt::utils::H256, - } - impl ::subxt::blocks::StaticExtrinsic for VetoExternal { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "veto_external"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CancelReferendum { #[codec(compact)] - pub ref_index: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for CancelReferendum { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "cancel_referendum"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Delegate { - pub to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - pub conviction: runtime_types::pallet_democracy::conviction::Conviction, - pub balance: ::core::primitive::u128, - } - impl ::subxt::blocks::StaticExtrinsic for Delegate { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "delegate"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Undelegate; - impl ::subxt::blocks::StaticExtrinsic for Undelegate { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "undelegate"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ClearPublicProposals; - impl ::subxt::blocks::StaticExtrinsic for ClearPublicProposals { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "clear_public_proposals"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Unlock { - pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub amount: ::core::primitive::u128, + pub beneficiary: ::std::boxed::Box, + pub valid_from: ::core::option::Option<::core::primitive::u32>, } - impl ::subxt::blocks::StaticExtrinsic for Unlock { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "unlock"; + impl ::subxt::blocks::StaticExtrinsic for Spend { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "spend"; } #[derive( :: subxt :: ext :: codec :: CompactAs, @@ -8605,14 +8494,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RemoveVote { + pub struct Payout { pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for RemoveVote { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "remove_vote"; + impl ::subxt::blocks::StaticExtrinsic for Payout { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "payout"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -8622,51 +8512,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RemoveOtherVote { - pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct CheckStatus { pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for RemoveOtherVote { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "remove_other_vote"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Blacklist { - pub proposal_hash: ::subxt::utils::H256, - pub maybe_ref_index: ::core::option::Option<::core::primitive::u32>, - } - impl ::subxt::blocks::StaticExtrinsic for Blacklist { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "blacklist"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CancelProposal { - #[codec(compact)] - pub prop_index: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for CancelProposal { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "cancel_proposal"; + impl ::subxt::blocks::StaticExtrinsic for CheckStatus { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "check_status"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -8676,354 +8530,337 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetMetadata { - pub owner: runtime_types::pallet_democracy::types::MetadataOwner, - pub maybe_hash: ::core::option::Option<::subxt::utils::H256>, + pub struct VoidSpend { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for SetMetadata { - const PALLET: &'static str = "Democracy"; - const CALL: &'static str = "set_metadata"; + impl ::subxt::blocks::StaticExtrinsic for VoidSpend { + const PALLET: &'static str = "Treasury"; + const CALL: &'static str = "void_spend"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::propose`]."] - pub fn propose( + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] + pub fn propose_spend( &self, - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "propose", - types::Propose { proposal, value }, + "Treasury", + "propose_spend", + types::ProposeSpend { value, beneficiary }, [ - 164u8, 45u8, 183u8, 137u8, 222u8, 27u8, 138u8, 45u8, 20u8, 18u8, 234u8, - 211u8, 52u8, 184u8, 234u8, 222u8, 193u8, 9u8, 160u8, 58u8, 198u8, - 106u8, 236u8, 210u8, 172u8, 34u8, 194u8, 107u8, 135u8, 83u8, 22u8, - 238u8, + 250u8, 230u8, 64u8, 10u8, 93u8, 132u8, 194u8, 69u8, 91u8, 50u8, 98u8, + 212u8, 72u8, 218u8, 29u8, 149u8, 2u8, 190u8, 219u8, 4u8, 25u8, 110u8, + 5u8, 199u8, 196u8, 37u8, 64u8, 57u8, 207u8, 235u8, 164u8, 226u8, ], ) } - #[doc = "See [`Pallet::second`]."] - pub fn second( + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] + pub fn reject_proposal( &self, - proposal: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + proposal_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "second", - types::Second { proposal }, + "Treasury", + "reject_proposal", + types::RejectProposal { proposal_id }, [ - 195u8, 55u8, 178u8, 55u8, 129u8, 64u8, 10u8, 131u8, 217u8, 79u8, 1u8, - 187u8, 73u8, 126u8, 191u8, 221u8, 110u8, 10u8, 13u8, 65u8, 190u8, - 107u8, 21u8, 236u8, 175u8, 130u8, 227u8, 179u8, 173u8, 39u8, 32u8, - 147u8, + 18u8, 166u8, 80u8, 141u8, 222u8, 230u8, 4u8, 36u8, 7u8, 76u8, 12u8, + 40u8, 145u8, 114u8, 12u8, 43u8, 223u8, 78u8, 189u8, 222u8, 120u8, 80u8, + 225u8, 215u8, 119u8, 68u8, 200u8, 15u8, 25u8, 172u8, 192u8, 173u8, ], ) } - #[doc = "See [`Pallet::vote`]."] - pub fn vote( + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] + pub fn approve_proposal( &self, - ref_index: ::core::primitive::u32, - vote: runtime_types::pallet_democracy::vote::AccountVote< - ::core::primitive::u128, - >, - ) -> ::subxt::tx::Payload { + proposal_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "vote", - types::Vote { ref_index, vote }, + "Treasury", + "approve_proposal", + types::ApproveProposal { proposal_id }, [ - 106u8, 195u8, 229u8, 44u8, 217u8, 214u8, 8u8, 234u8, 175u8, 62u8, 97u8, - 83u8, 193u8, 180u8, 103u8, 26u8, 174u8, 8u8, 2u8, 158u8, 25u8, 122u8, - 203u8, 122u8, 32u8, 14u8, 107u8, 169u8, 43u8, 240u8, 143u8, 103u8, + 154u8, 176u8, 152u8, 97u8, 167u8, 177u8, 78u8, 9u8, 235u8, 229u8, + 199u8, 193u8, 214u8, 3u8, 16u8, 30u8, 4u8, 104u8, 27u8, 184u8, 100u8, + 65u8, 179u8, 13u8, 91u8, 62u8, 115u8, 5u8, 219u8, 211u8, 251u8, 153u8, ], ) } - #[doc = "See [`Pallet::emergency_cancel`]."] - pub fn emergency_cancel( + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] + pub fn spend_local( &self, - ref_index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + amount: ::core::primitive::u128, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "emergency_cancel", - types::EmergencyCancel { ref_index }, + "Treasury", + "spend_local", + types::SpendLocal { amount, beneficiary }, [ - 82u8, 232u8, 19u8, 158u8, 88u8, 69u8, 96u8, 225u8, 106u8, 253u8, 6u8, - 136u8, 87u8, 0u8, 68u8, 128u8, 122u8, 16u8, 107u8, 76u8, 209u8, 14u8, - 230u8, 49u8, 228u8, 100u8, 187u8, 10u8, 76u8, 71u8, 197u8, 72u8, + 137u8, 171u8, 83u8, 247u8, 245u8, 212u8, 152u8, 127u8, 210u8, 71u8, + 254u8, 134u8, 189u8, 26u8, 249u8, 41u8, 214u8, 175u8, 24u8, 64u8, 33u8, + 90u8, 23u8, 134u8, 44u8, 110u8, 63u8, 46u8, 46u8, 146u8, 222u8, 79u8, ], ) } - #[doc = "See [`Pallet::external_propose`]."] - pub fn external_propose( + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] + pub fn remove_approval( &self, - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - ) -> ::subxt::tx::Payload { + proposal_id: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "external_propose", - types::ExternalPropose { proposal }, + "Treasury", + "remove_approval", + types::RemoveApproval { proposal_id }, [ - 99u8, 120u8, 61u8, 124u8, 244u8, 68u8, 12u8, 240u8, 11u8, 168u8, 4u8, - 50u8, 19u8, 152u8, 255u8, 97u8, 20u8, 195u8, 141u8, 199u8, 31u8, 250u8, - 222u8, 136u8, 47u8, 162u8, 0u8, 32u8, 215u8, 110u8, 94u8, 109u8, + 180u8, 20u8, 39u8, 227u8, 29u8, 228u8, 234u8, 36u8, 155u8, 114u8, + 197u8, 135u8, 185u8, 31u8, 56u8, 247u8, 224u8, 168u8, 254u8, 233u8, + 250u8, 134u8, 186u8, 155u8, 108u8, 84u8, 94u8, 226u8, 207u8, 130u8, + 196u8, 100u8, ], ) } - #[doc = "See [`Pallet::external_propose_majority`]."] - pub fn external_propose_majority( - &self, - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "external_propose_majority", - types::ExternalProposeMajority { proposal }, - [ - 35u8, 61u8, 130u8, 81u8, 81u8, 180u8, 127u8, 202u8, 67u8, 84u8, 105u8, - 113u8, 112u8, 210u8, 1u8, 191u8, 10u8, 39u8, 157u8, 164u8, 9u8, 231u8, - 75u8, 25u8, 17u8, 175u8, 128u8, 180u8, 238u8, 58u8, 236u8, 214u8, - ], - ) - } - #[doc = "See [`Pallet::external_propose_default`]."] - pub fn external_propose_default( - &self, - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "external_propose_default", - types::ExternalProposeDefault { proposal }, - [ - 136u8, 199u8, 244u8, 69u8, 5u8, 174u8, 166u8, 251u8, 102u8, 196u8, - 25u8, 6u8, 33u8, 216u8, 141u8, 78u8, 118u8, 125u8, 128u8, 218u8, 120u8, - 170u8, 166u8, 15u8, 124u8, 216u8, 128u8, 178u8, 5u8, 74u8, 170u8, 25u8, - ], - ) - } - #[doc = "See [`Pallet::fast_track`]."] - pub fn fast_track( - &self, - proposal_hash: ::subxt::utils::H256, - voting_period: ::core::primitive::u32, - delay: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "fast_track", - types::FastTrack { proposal_hash, voting_period, delay }, - [ - 96u8, 201u8, 216u8, 109u8, 4u8, 244u8, 52u8, 237u8, 120u8, 234u8, 30u8, - 102u8, 186u8, 132u8, 214u8, 22u8, 40u8, 75u8, 118u8, 23u8, 56u8, 68u8, - 192u8, 129u8, 74u8, 61u8, 247u8, 98u8, 103u8, 127u8, 200u8, 171u8, - ], - ) - } - #[doc = "See [`Pallet::veto_external`]."] - pub fn veto_external( - &self, - proposal_hash: ::subxt::utils::H256, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "veto_external", - types::VetoExternal { proposal_hash }, - [ - 121u8, 217u8, 249u8, 134u8, 45u8, 19u8, 126u8, 166u8, 218u8, 223u8, - 165u8, 124u8, 162u8, 59u8, 56u8, 200u8, 227u8, 125u8, 23u8, 133u8, - 196u8, 93u8, 210u8, 15u8, 39u8, 26u8, 58u8, 236u8, 9u8, 101u8, 202u8, - 168u8, - ], - ) - } - #[doc = "See [`Pallet::cancel_referendum`]."] - pub fn cancel_referendum( - &self, - ref_index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "cancel_referendum", - types::CancelReferendum { ref_index }, - [ - 149u8, 120u8, 70u8, 20u8, 126u8, 21u8, 30u8, 33u8, 82u8, 124u8, 229u8, - 179u8, 169u8, 243u8, 173u8, 146u8, 140u8, 22u8, 124u8, 154u8, 228u8, - 117u8, 109u8, 88u8, 11u8, 100u8, 235u8, 243u8, 118u8, 99u8, 250u8, - 140u8, - ], - ) - } - #[doc = "See [`Pallet::delegate`]."] - pub fn delegate( - &self, - to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - conviction: runtime_types::pallet_democracy::conviction::Conviction, - balance: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "delegate", - types::Delegate { to, conviction, balance }, - [ - 98u8, 120u8, 223u8, 48u8, 181u8, 91u8, 232u8, 157u8, 124u8, 249u8, - 137u8, 195u8, 211u8, 199u8, 173u8, 118u8, 164u8, 196u8, 253u8, 53u8, - 214u8, 120u8, 138u8, 7u8, 129u8, 85u8, 217u8, 172u8, 98u8, 78u8, 165u8, - 37u8, - ], - ) - } - #[doc = "See [`Pallet::undelegate`]."] - pub fn undelegate(&self) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "undelegate", - types::Undelegate {}, - [ - 225u8, 156u8, 102u8, 1u8, 172u8, 145u8, 88u8, 12u8, 89u8, 32u8, 51u8, - 83u8, 25u8, 149u8, 132u8, 203u8, 246u8, 98u8, 155u8, 36u8, 165u8, - 206u8, 233u8, 169u8, 91u8, 85u8, 105u8, 67u8, 46u8, 134u8, 244u8, - 250u8, - ], - ) - } - #[doc = "See [`Pallet::clear_public_proposals`]."] - pub fn clear_public_proposals( - &self, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "clear_public_proposals", - types::ClearPublicProposals {}, - [ - 116u8, 160u8, 246u8, 216u8, 23u8, 188u8, 144u8, 63u8, 97u8, 198u8, - 11u8, 243u8, 165u8, 84u8, 159u8, 153u8, 235u8, 169u8, 166u8, 15u8, - 23u8, 116u8, 30u8, 56u8, 133u8, 31u8, 158u8, 114u8, 158u8, 86u8, 106u8, - 93u8, - ], - ) - } - #[doc = "See [`Pallet::unlock`]."] - pub fn unlock( + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] + pub fn spend( &self, - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + amount: ::core::primitive::u128, + beneficiary: runtime_types::xcm::VersionedLocation, + valid_from: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "unlock", - types::Unlock { target }, + "Treasury", + "spend", + types::Spend { + asset_kind: ::std::boxed::Box::new(asset_kind), + amount, + beneficiary: ::std::boxed::Box::new(beneficiary), + valid_from, + }, [ - 168u8, 111u8, 199u8, 137u8, 136u8, 162u8, 69u8, 122u8, 130u8, 226u8, - 234u8, 79u8, 214u8, 164u8, 127u8, 217u8, 140u8, 10u8, 116u8, 94u8, 5u8, - 58u8, 208u8, 255u8, 136u8, 147u8, 148u8, 133u8, 136u8, 206u8, 219u8, - 94u8, + 127u8, 68u8, 115u8, 140u8, 122u8, 90u8, 253u8, 105u8, 230u8, 137u8, + 104u8, 130u8, 221u8, 123u8, 49u8, 126u8, 247u8, 80u8, 12u8, 4u8, 223u8, + 218u8, 187u8, 192u8, 61u8, 221u8, 46u8, 211u8, 71u8, 196u8, 55u8, + 237u8, ], ) } - #[doc = "See [`Pallet::remove_vote`]."] - pub fn remove_vote( + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] + pub fn payout( &self, index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "remove_vote", - types::RemoveVote { index }, + "Treasury", + "payout", + types::Payout { index }, [ - 98u8, 146u8, 215u8, 63u8, 222u8, 70u8, 61u8, 186u8, 90u8, 34u8, 63u8, - 25u8, 195u8, 119u8, 228u8, 189u8, 38u8, 163u8, 58u8, 210u8, 216u8, - 156u8, 20u8, 204u8, 136u8, 192u8, 33u8, 210u8, 124u8, 65u8, 153u8, - 105u8, + 179u8, 254u8, 82u8, 94u8, 248u8, 26u8, 6u8, 34u8, 93u8, 244u8, 186u8, + 199u8, 163u8, 32u8, 110u8, 220u8, 78u8, 11u8, 168u8, 182u8, 169u8, + 56u8, 53u8, 194u8, 168u8, 218u8, 131u8, 38u8, 46u8, 156u8, 93u8, 234u8, ], ) } - #[doc = "See [`Pallet::remove_other_vote`]."] - pub fn remove_other_vote( + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] + pub fn check_status( &self, - target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "remove_other_vote", - types::RemoveOtherVote { target, index }, - [ - 144u8, 81u8, 115u8, 108u8, 30u8, 235u8, 166u8, 115u8, 147u8, 56u8, - 144u8, 196u8, 252u8, 166u8, 201u8, 131u8, 0u8, 193u8, 21u8, 234u8, - 55u8, 253u8, 165u8, 149u8, 38u8, 47u8, 241u8, 140u8, 186u8, 139u8, - 227u8, 165u8, - ], - ) - } - #[doc = "See [`Pallet::blacklist`]."] - pub fn blacklist( - &self, - proposal_hash: ::subxt::utils::H256, - maybe_ref_index: ::core::option::Option<::core::primitive::u32>, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Democracy", - "blacklist", - types::Blacklist { proposal_hash, maybe_ref_index }, - [ - 227u8, 200u8, 88u8, 154u8, 134u8, 121u8, 131u8, 177u8, 94u8, 119u8, - 12u8, 129u8, 150u8, 59u8, 108u8, 103u8, 109u8, 55u8, 220u8, 211u8, - 250u8, 103u8, 160u8, 170u8, 63u8, 142u8, 112u8, 244u8, 29u8, 238u8, - 101u8, 24u8, - ], - ) - } - #[doc = "See [`Pallet::cancel_proposal`]."] - pub fn cancel_proposal( - &self, - prop_index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "cancel_proposal", - types::CancelProposal { prop_index }, + "Treasury", + "check_status", + types::CheckStatus { index }, [ - 213u8, 5u8, 215u8, 209u8, 71u8, 229u8, 66u8, 38u8, 171u8, 38u8, 14u8, - 103u8, 248u8, 176u8, 217u8, 143u8, 234u8, 89u8, 110u8, 250u8, 3u8, - 190u8, 151u8, 74u8, 55u8, 58u8, 249u8, 138u8, 25u8, 191u8, 55u8, 142u8, + 164u8, 111u8, 10u8, 11u8, 104u8, 237u8, 112u8, 240u8, 104u8, 130u8, + 179u8, 221u8, 54u8, 18u8, 8u8, 172u8, 148u8, 245u8, 110u8, 174u8, 75u8, + 38u8, 46u8, 143u8, 101u8, 232u8, 65u8, 252u8, 36u8, 152u8, 29u8, 209u8, ], ) } - #[doc = "See [`Pallet::set_metadata`]."] - pub fn set_metadata( + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] + pub fn void_spend( &self, - owner: runtime_types::pallet_democracy::types::MetadataOwner, - maybe_hash: ::core::option::Option<::subxt::utils::H256>, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Democracy", - "set_metadata", - types::SetMetadata { owner, maybe_hash }, + "Treasury", + "void_spend", + types::VoidSpend { index }, [ - 191u8, 200u8, 139u8, 27u8, 167u8, 250u8, 72u8, 78u8, 18u8, 98u8, 108u8, - 1u8, 122u8, 120u8, 47u8, 77u8, 174u8, 60u8, 247u8, 69u8, 228u8, 196u8, - 149u8, 107u8, 239u8, 45u8, 47u8, 118u8, 87u8, 233u8, 79u8, 29u8, + 9u8, 212u8, 174u8, 92u8, 43u8, 102u8, 224u8, 124u8, 247u8, 239u8, + 196u8, 68u8, 132u8, 171u8, 116u8, 206u8, 52u8, 23u8, 92u8, 31u8, 156u8, + 160u8, 25u8, 16u8, 125u8, 60u8, 9u8, 109u8, 145u8, 139u8, 102u8, 224u8, ], ) } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_democracy::pallet::Event; + pub type Event = runtime_types::pallet_treasury::pallet::Event; pub mod events { use super::runtime_types; #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -9033,16 +8870,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion has been proposed by a public account."] + #[doc = "New proposal."] pub struct Proposed { pub proposal_index: ::core::primitive::u32, - pub deposit: ::core::primitive::u128, } impl ::subxt::events::StaticEvent for Proposed { - const PALLET: &'static str = "Democracy"; + const PALLET: &'static str = "Treasury"; const EVENT: &'static str = "Proposed"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -9052,30 +8889,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A public proposal has been tabled for referendum vote."] - pub struct Tabled { - pub proposal_index: ::core::primitive::u32, - pub deposit: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Tabled { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Tabled"; + #[doc = "We have ended a spend period and will now allocate funds."] + pub struct Spending { + pub budget_remaining: ::core::primitive::u128, } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An external proposal has been tabled."] - pub struct ExternalTabled; - impl ::subxt::events::StaticEvent for ExternalTabled { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "ExternalTabled"; + impl ::subxt::events::StaticEvent for Spending { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Spending"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -9087,17 +8907,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A referendum has begun."] - pub struct Started { - pub ref_index: ::core::primitive::u32, - pub threshold: runtime_types::pallet_democracy::vote_threshold::VoteThreshold, + #[doc = "Some funds have been allocated."] + pub struct Awarded { + pub proposal_index: ::core::primitive::u32, + pub award: ::core::primitive::u128, + pub account: ::subxt::utils::AccountId32, } - impl ::subxt::events::StaticEvent for Started { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Started"; + impl ::subxt::events::StaticEvent for Awarded { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Awarded"; } #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -9107,13 +8927,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A proposal has been approved by referendum."] - pub struct Passed { - pub ref_index: ::core::primitive::u32, + #[doc = "A proposal was rejected; funds were slashed."] + pub struct Rejected { + pub proposal_index: ::core::primitive::u32, + pub slashed: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for Passed { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Passed"; + impl ::subxt::events::StaticEvent for Rejected { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Rejected"; } #[derive( :: subxt :: ext :: codec :: CompactAs, @@ -9126,13 +8947,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A proposal has been rejected by referendum."] - pub struct NotPassed { - pub ref_index: ::core::primitive::u32, + #[doc = "Some of our funds have been burnt."] + pub struct Burnt { + pub burnt_funds: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for NotPassed { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "NotPassed"; + impl ::subxt::events::StaticEvent for Burnt { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Burnt"; } #[derive( :: subxt :: ext :: codec :: CompactAs, @@ -9145,52 +8966,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A referendum has been cancelled."] - pub struct Cancelled { - pub ref_index: ::core::primitive::u32, - } - impl ::subxt::events::StaticEvent for Cancelled { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Cancelled"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An account has delegated their vote to another account."] - pub struct Delegated { - pub who: ::subxt::utils::AccountId32, - pub target: ::subxt::utils::AccountId32, - } - impl ::subxt::events::StaticEvent for Delegated { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Delegated"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An account has cancelled a previous delegation operation."] - pub struct Undelegated { - pub account: ::subxt::utils::AccountId32, + #[doc = "Spending has finished; this is the amount that rolls over until next spend."] + pub struct Rollover { + pub rollover_balance: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for Undelegated { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Undelegated"; + impl ::subxt::events::StaticEvent for Rollover { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Rollover"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -9200,15 +8985,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An external proposal has been vetoed."] - pub struct Vetoed { - pub who: ::subxt::utils::AccountId32, - pub proposal_hash: ::subxt::utils::H256, - pub until: ::core::primitive::u32, + #[doc = "Some funds have been deposited."] + pub struct Deposit { + pub value: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for Vetoed { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Vetoed"; + impl ::subxt::events::StaticEvent for Deposit { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Deposit"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -9220,13 +9003,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A proposal_hash has been blacklisted permanently."] - pub struct Blacklisted { - pub proposal_hash: ::subxt::utils::H256, + #[doc = "A new spend proposal has been approved."] + pub struct SpendApproved { + pub proposal_index: ::core::primitive::u32, + pub amount: ::core::primitive::u128, + pub beneficiary: ::subxt::utils::AccountId32, } - impl ::subxt::events::StaticEvent for Blacklisted { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Blacklisted"; + impl ::subxt::events::StaticEvent for SpendApproved { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "SpendApproved"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -9238,16 +9023,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An account has voted in a referendum"] - pub struct Voted { - pub voter: ::subxt::utils::AccountId32, - pub ref_index: ::core::primitive::u32, - pub vote: - runtime_types::pallet_democracy::vote::AccountVote<::core::primitive::u128>, + #[doc = "The inactive funds of the pallet have been updated."] + pub struct UpdatedInactive { + pub reactivated: ::core::primitive::u128, + pub deactivated: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for Voted { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Voted"; + impl ::subxt::events::StaticEvent for UpdatedInactive { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "UpdatedInactive"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -9259,14 +9042,19 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An account has secconded a proposal"] - pub struct Seconded { - pub seconder: ::subxt::utils::AccountId32, - pub prop_index: ::core::primitive::u32, + #[doc = "A new asset spend proposal has been approved."] + pub struct AssetSpendApproved { + pub index: ::core::primitive::u32, + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + pub amount: ::core::primitive::u128, + pub beneficiary: runtime_types::xcm::VersionedLocation, + pub valid_from: ::core::primitive::u32, + pub expire_at: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for Seconded { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "Seconded"; + impl ::subxt::events::StaticEvent for AssetSpendApproved { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "AssetSpendApproved"; } #[derive( :: subxt :: ext :: codec :: CompactAs, @@ -9279,13 +9067,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A proposal got canceled."] - pub struct ProposalCanceled { - pub prop_index: ::core::primitive::u32, + #[doc = "An approved spend was voided."] + pub struct AssetSpendVoided { + pub index: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for ProposalCanceled { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "ProposalCanceled"; + impl ::subxt::events::StaticEvent for AssetSpendVoided { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "AssetSpendVoided"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -9297,14 +9085,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Metadata for a proposal or a referendum has been set."] - pub struct MetadataSet { - pub owner: runtime_types::pallet_democracy::types::MetadataOwner, - pub hash: ::subxt::utils::H256, + #[doc = "A payment happened."] + pub struct Paid { + pub index: ::core::primitive::u32, + pub payment_id: ::core::primitive::u64, } - impl ::subxt::events::StaticEvent for MetadataSet { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "MetadataSet"; + impl ::subxt::events::StaticEvent for Paid { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "Paid"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -9316,16 +9104,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Metadata for a proposal or a referendum has been cleared."] - pub struct MetadataCleared { - pub owner: runtime_types::pallet_democracy::types::MetadataOwner, - pub hash: ::subxt::utils::H256, + #[doc = "A payment failed and can be retried."] + pub struct PaymentFailed { + pub index: ::core::primitive::u32, + pub payment_id: ::core::primitive::u64, } - impl ::subxt::events::StaticEvent for MetadataCleared { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "MetadataCleared"; + impl ::subxt::events::StaticEvent for PaymentFailed { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "PaymentFailed"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -9335,23 +9124,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Metadata has been transferred to new owner."] - pub struct MetadataTransferred { - pub prev_owner: runtime_types::pallet_democracy::types::MetadataOwner, - pub owner: runtime_types::pallet_democracy::types::MetadataOwner, - pub hash: ::subxt::utils::H256, + #[doc = "A spend was processed and removed from the storage. It might have been successfully"] + #[doc = "paid or it may have expired."] + pub struct SpendProcessed { + pub index: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for MetadataTransferred { - const PALLET: &'static str = "Democracy"; - const EVENT: &'static str = "MetadataTransferred"; + impl ::subxt::events::StaticEvent for SpendProcessed { + const PALLET: &'static str = "Treasury"; + const EVENT: &'static str = "SpendProcessed"; } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The number of (public) proposals that have been made so far."] - pub fn public_prop_count( + #[doc = " Number of proposals that have been made."] + pub fn proposal_count( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, @@ -9361,126 +9149,114 @@ pub mod api { (), > { ::subxt::storage::address::Address::new_static( - "Democracy", - "PublicPropCount", + "Treasury", + "ProposalCount", vec![], [ - 51u8, 175u8, 184u8, 94u8, 91u8, 212u8, 100u8, 108u8, 127u8, 162u8, - 233u8, 137u8, 12u8, 209u8, 29u8, 130u8, 125u8, 179u8, 208u8, 160u8, - 173u8, 149u8, 12u8, 111u8, 1u8, 82u8, 196u8, 137u8, 51u8, 204u8, 153u8, - 198u8, + 91u8, 238u8, 246u8, 106u8, 95u8, 66u8, 83u8, 134u8, 1u8, 225u8, 164u8, + 216u8, 113u8, 101u8, 203u8, 200u8, 113u8, 97u8, 246u8, 228u8, 140u8, + 29u8, 29u8, 48u8, 176u8, 137u8, 93u8, 230u8, 56u8, 75u8, 51u8, 149u8, ], ) } - #[doc = " The public proposals. Unsorted. The second item is the proposal."] - pub fn public_props( + #[doc = " Proposals that have been made."] + pub fn proposals( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec<( - ::core::primitive::u32, - runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, + runtime_types::pallet_treasury::Proposal< ::subxt::utils::AccountId32, - )>, - ::subxt::storage::address::Yes, + ::core::primitive::u128, + >, ::subxt::storage::address::Yes, (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Democracy", - "PublicProps", - vec![], + "Treasury", + "Proposals", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 174u8, 85u8, 209u8, 117u8, 29u8, 193u8, 230u8, 16u8, 94u8, 219u8, 69u8, - 29u8, 116u8, 35u8, 252u8, 43u8, 127u8, 0u8, 43u8, 218u8, 240u8, 176u8, - 73u8, 81u8, 207u8, 131u8, 227u8, 132u8, 242u8, 45u8, 172u8, 50u8, + 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, + 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, + 213u8, 87u8, 45u8, 23u8, 14u8, 167u8, 99u8, 208u8, 153u8, 163u8, 141u8, + 55u8, ], ) } - #[doc = " Those who have locked a deposit."] - #[doc = ""] - #[doc = " TWOX-NOTE: Safe, as increasing integer keys are safe."] - pub fn deposit_of_iter( + #[doc = " Proposals that have been made."] + pub fn proposals_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ( - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, - >, + runtime_types::pallet_treasury::Proposal< + ::subxt::utils::AccountId32, ::core::primitive::u128, - ), + >, (), (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Democracy", - "DepositOf", - vec![], + "Treasury", + "Proposals", + Vec::new(), [ - 115u8, 12u8, 250u8, 191u8, 201u8, 165u8, 90u8, 140u8, 101u8, 47u8, - 46u8, 3u8, 78u8, 30u8, 180u8, 22u8, 28u8, 154u8, 36u8, 99u8, 255u8, - 84u8, 33u8, 21u8, 65u8, 110u8, 52u8, 245u8, 19u8, 6u8, 104u8, 167u8, + 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, + 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, + 213u8, 87u8, 45u8, 23u8, 14u8, 167u8, 99u8, 208u8, 153u8, 163u8, 141u8, + 55u8, ], ) } - #[doc = " Those who have locked a deposit."] - #[doc = ""] - #[doc = " TWOX-NOTE: Safe, as increasing integer keys are safe."] - pub fn deposit_of( + #[doc = " The amount which has been reported as inactive to Currency."] + pub fn deactivated( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ( - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, - >, - ::core::primitive::u128, - ), + ::core::primitive::u128, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), (), > { ::subxt::storage::address::Address::new_static( - "Democracy", - "DepositOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + "Treasury", + "Deactivated", + vec![], [ - 115u8, 12u8, 250u8, 191u8, 201u8, 165u8, 90u8, 140u8, 101u8, 47u8, - 46u8, 3u8, 78u8, 30u8, 180u8, 22u8, 28u8, 154u8, 36u8, 99u8, 255u8, - 84u8, 33u8, 21u8, 65u8, 110u8, 52u8, 245u8, 19u8, 6u8, 104u8, 167u8, + 120u8, 221u8, 159u8, 56u8, 161u8, 44u8, 54u8, 233u8, 47u8, 114u8, + 170u8, 150u8, 52u8, 24u8, 137u8, 212u8, 122u8, 247u8, 40u8, 17u8, + 208u8, 130u8, 42u8, 154u8, 33u8, 222u8, 59u8, 116u8, 0u8, 15u8, 79u8, + 123u8, ], ) } - #[doc = " The next free referendum index, aka the number of referenda started so far."] - pub fn referendum_count( + #[doc = " Proposal indices that have been approved but not yet awarded."] + pub fn approvals( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u32, + >, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "Democracy", - "ReferendumCount", + "Treasury", + "Approvals", vec![], [ - 64u8, 145u8, 232u8, 153u8, 121u8, 87u8, 128u8, 253u8, 170u8, 192u8, - 139u8, 18u8, 0u8, 33u8, 243u8, 11u8, 238u8, 222u8, 244u8, 5u8, 247u8, - 198u8, 149u8, 31u8, 122u8, 208u8, 86u8, 179u8, 166u8, 167u8, 93u8, - 67u8, + 78u8, 147u8, 186u8, 235u8, 17u8, 40u8, 247u8, 235u8, 67u8, 222u8, 3u8, + 14u8, 248u8, 17u8, 67u8, 180u8, 93u8, 161u8, 64u8, 35u8, 119u8, 194u8, + 187u8, 226u8, 135u8, 162u8, 147u8, 174u8, 139u8, 72u8, 99u8, 212u8, ], ) } - #[doc = " The lowest referendum index representing an unbaked referendum. Equal to"] - #[doc = " `ReferendumCount` if there isn't a unbaked referendum."] - pub fn lowest_unbaked( + #[doc = " The count of spends that have been made."] + pub fn spend_count( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, @@ -9490,506 +9266,176 @@ pub mod api { (), > { ::subxt::storage::address::Address::new_static( - "Democracy", - "LowestUnbaked", + "Treasury", + "SpendCount", vec![], [ - 237u8, 222u8, 144u8, 214u8, 0u8, 186u8, 81u8, 176u8, 51u8, 14u8, 204u8, - 184u8, 147u8, 97u8, 187u8, 84u8, 40u8, 8u8, 86u8, 241u8, 16u8, 157u8, - 202u8, 44u8, 185u8, 111u8, 70u8, 114u8, 40u8, 135u8, 1u8, 155u8, + 220u8, 74u8, 248u8, 52u8, 243u8, 209u8, 42u8, 236u8, 27u8, 98u8, 76u8, + 153u8, 129u8, 176u8, 34u8, 177u8, 33u8, 132u8, 21u8, 71u8, 206u8, + 146u8, 222u8, 44u8, 232u8, 246u8, 205u8, 92u8, 240u8, 136u8, 182u8, + 30u8, ], ) } - #[doc = " Information concerning any given referendum."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] - pub fn referendum_info_of_iter( + #[doc = " Spends that have been approved and being processed."] + pub fn spends( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_democracy::types::ReferendumInfo< - ::core::primitive::u32, - runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, + runtime_types::pallet_treasury::SpendStatus< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, ::core::primitive::u128, + runtime_types::xcm::VersionedLocation, + ::core::primitive::u32, + ::core::primitive::u64, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Democracy", - "ReferendumInfoOf", - vec![], + "Treasury", + "Spends", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 245u8, 152u8, 149u8, 236u8, 59u8, 164u8, 120u8, 142u8, 130u8, 25u8, - 119u8, 158u8, 103u8, 140u8, 203u8, 213u8, 110u8, 151u8, 137u8, 226u8, - 186u8, 130u8, 233u8, 245u8, 145u8, 145u8, 140u8, 54u8, 222u8, 219u8, - 234u8, 206u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } - #[doc = " Information concerning any given referendum."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] - pub fn referendum_info_of( + #[doc = " Spends that have been approved and being processed."] + pub fn spends_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_democracy::types::ReferendumInfo< - ::core::primitive::u32, - runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, + runtime_types::pallet_treasury::SpendStatus< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, ::core::primitive::u128, + runtime_types::xcm::VersionedLocation, + ::core::primitive::u32, + ::core::primitive::u64, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Democracy", - "ReferendumInfoOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + "Treasury", + "Spends", + Vec::new(), [ - 245u8, 152u8, 149u8, 236u8, 59u8, 164u8, 120u8, 142u8, 130u8, 25u8, - 119u8, 158u8, 103u8, 140u8, 203u8, 213u8, 110u8, 151u8, 137u8, 226u8, - 186u8, 130u8, 233u8, 245u8, 145u8, 145u8, 140u8, 54u8, 222u8, 219u8, - 234u8, 206u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } - #[doc = " All votes for a particular voter. We store the balance for the number of votes that we"] - #[doc = " have recorded. The second item is the total amount of delegations, that will be added."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] - pub fn voting_of_iter( + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " Fraction of a proposal's value that should be bonded in order to place the proposal."] + #[doc = " An accepted proposal gets these back. A rejected proposal does not."] + pub fn proposal_bond( &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_democracy::vote::Voting< - ::core::primitive::u128, - ::subxt::utils::AccountId32, - ::core::primitive::u32, - >, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "VotingOf", - vec![], + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Treasury", + "ProposalBond", [ - 234u8, 35u8, 206u8, 197u8, 17u8, 251u8, 1u8, 230u8, 80u8, 235u8, 108u8, - 126u8, 82u8, 145u8, 39u8, 104u8, 209u8, 16u8, 209u8, 52u8, 165u8, - 231u8, 110u8, 92u8, 113u8, 212u8, 72u8, 57u8, 60u8, 73u8, 107u8, 118u8, + 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, + 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, + 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, ], ) } - #[doc = " All votes for a particular voter. We store the balance for the number of votes that we"] - #[doc = " have recorded. The second item is the total amount of delegations, that will be added."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] - pub fn voting_of( + #[doc = " Minimum amount of funds that should be placed in a deposit for making a proposal."] + pub fn proposal_bond_minimum( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_democracy::vote::Voting< - ::core::primitive::u128, - ::subxt::utils::AccountId32, - ::core::primitive::u32, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "VotingOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + ) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Treasury", + "ProposalBondMinimum", [ - 234u8, 35u8, 206u8, 197u8, 17u8, 251u8, 1u8, 230u8, 80u8, 235u8, 108u8, - 126u8, 82u8, 145u8, 39u8, 104u8, 209u8, 16u8, 209u8, 52u8, 165u8, - 231u8, 110u8, 92u8, 113u8, 212u8, 72u8, 57u8, 60u8, 73u8, 107u8, 118u8, + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, ], ) } - #[doc = " True if the last referendum tabled was submitted externally. False if it was a public"] - #[doc = " proposal."] - pub fn last_tabled_was_external( + #[doc = " Maximum amount of funds that should be placed in a deposit for making a proposal."] + pub fn proposal_bond_maximum( &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "LastTabledWasExternal", - vec![], + ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> + { + ::subxt::constants::Address::new_static( + "Treasury", + "ProposalBondMaximum", [ - 162u8, 201u8, 72u8, 9u8, 78u8, 49u8, 72u8, 62u8, 240u8, 69u8, 20u8, - 135u8, 26u8, 59u8, 71u8, 46u8, 19u8, 25u8, 195u8, 11u8, 99u8, 31u8, - 104u8, 4u8, 24u8, 129u8, 47u8, 69u8, 219u8, 178u8, 104u8, 190u8, + 198u8, 51u8, 89u8, 159u8, 124u8, 251u8, 51u8, 80u8, 167u8, 193u8, 44u8, + 199u8, 80u8, 36u8, 41u8, 130u8, 137u8, 229u8, 178u8, 208u8, 37u8, + 215u8, 169u8, 183u8, 180u8, 191u8, 140u8, 240u8, 250u8, 61u8, 42u8, + 147u8, ], ) } - #[doc = " The referendum to be tabled whenever it would be valid to table an external proposal."] - #[doc = " This happens when a referendum needs to be tabled and one of two conditions are met:"] - #[doc = " - `LastTabledWasExternal` is `false`; or"] - #[doc = " - `PublicProps` is empty."] - pub fn next_external( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ( - runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - runtime_types::pallet_democracy::vote_threshold::VoteThreshold, - ), - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "NextExternal", - vec![], + #[doc = " Period between successive spends."] + pub fn spend_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Treasury", + "SpendPeriod", [ - 240u8, 58u8, 238u8, 86u8, 35u8, 48u8, 192u8, 51u8, 91u8, 4u8, 47u8, - 202u8, 21u8, 74u8, 158u8, 64u8, 107u8, 247u8, 248u8, 240u8, 122u8, - 109u8, 204u8, 180u8, 103u8, 239u8, 156u8, 68u8, 141u8, 253u8, 131u8, - 239u8, + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, ], ) } - #[doc = " A record of who vetoed what. Maps proposal hash to a possible existent block number"] - #[doc = " (until when it may not be resubmitted) and who vetoed it."] - pub fn blacklist_iter( + #[doc = " Percentage of spare funds (if any) that are burnt per spend period."] + pub fn burn( &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ( - ::core::primitive::u32, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, - >, - ), - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "Blacklist", - vec![], + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Treasury", + "Burn", [ - 12u8, 231u8, 204u8, 151u8, 57u8, 182u8, 5u8, 74u8, 231u8, 100u8, 165u8, - 28u8, 147u8, 109u8, 119u8, 37u8, 138u8, 159u8, 7u8, 175u8, 41u8, 110u8, - 205u8, 69u8, 17u8, 9u8, 39u8, 102u8, 90u8, 244u8, 165u8, 141u8, + 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, + 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, + 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, ], ) } - #[doc = " A record of who vetoed what. Maps proposal hash to a possible existent block number"] - #[doc = " (until when it may not be resubmitted) and who vetoed it."] - pub fn blacklist( + #[doc = " The treasury's pallet id, used for deriving its sovereign account ID."] + pub fn pallet_id( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ( - ::core::primitive::u32, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, - >, - ), - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "Blacklist", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 12u8, 231u8, 204u8, 151u8, 57u8, 182u8, 5u8, 74u8, 231u8, 100u8, 165u8, - 28u8, 147u8, 109u8, 119u8, 37u8, 138u8, 159u8, 7u8, 175u8, 41u8, 110u8, - 205u8, 69u8, 17u8, 9u8, 39u8, 102u8, 90u8, 244u8, 165u8, 141u8, - ], - ) - } - #[doc = " Record of all proposals that have been subject to emergency cancellation."] - pub fn cancellations_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "Cancellations", - vec![], - [ - 80u8, 190u8, 98u8, 105u8, 129u8, 25u8, 167u8, 180u8, 74u8, 128u8, - 232u8, 29u8, 193u8, 209u8, 185u8, 60u8, 18u8, 180u8, 59u8, 192u8, - 149u8, 13u8, 123u8, 232u8, 34u8, 208u8, 48u8, 104u8, 35u8, 181u8, - 186u8, 244u8, - ], - ) - } - #[doc = " Record of all proposals that have been subject to emergency cancellation."] - pub fn cancellations( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "Cancellations", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 80u8, 190u8, 98u8, 105u8, 129u8, 25u8, 167u8, 180u8, 74u8, 128u8, - 232u8, 29u8, 193u8, 209u8, 185u8, 60u8, 18u8, 180u8, 59u8, 192u8, - 149u8, 13u8, 123u8, 232u8, 34u8, 208u8, 48u8, 104u8, 35u8, 181u8, - 186u8, 244u8, - ], - ) - } - #[doc = " General information concerning any proposal or referendum."] - #[doc = " The `PreimageHash` refers to the preimage of the `Preimages` provider which can be a JSON"] - #[doc = " dump or IPFS hash of a JSON file."] - #[doc = ""] - #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] - #[doc = " large preimages."] - pub fn metadata_of_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::H256, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "MetadataOf", - vec![], - [ - 52u8, 151u8, 124u8, 110u8, 85u8, 173u8, 181u8, 86u8, 174u8, 183u8, - 102u8, 22u8, 8u8, 36u8, 224u8, 114u8, 98u8, 0u8, 220u8, 215u8, 19u8, - 147u8, 32u8, 238u8, 242u8, 187u8, 235u8, 163u8, 183u8, 235u8, 9u8, - 180u8, - ], - ) - } - #[doc = " General information concerning any proposal or referendum."] - #[doc = " The `PreimageHash` refers to the preimage of the `Preimages` provider which can be a JSON"] - #[doc = " dump or IPFS hash of a JSON file."] - #[doc = ""] - #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] - #[doc = " large preimages."] - pub fn metadata_of( - &self, - _0: impl ::std::borrow::Borrow< - runtime_types::pallet_democracy::types::MetadataOwner, - >, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::H256, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Democracy", - "MetadataOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 52u8, 151u8, 124u8, 110u8, 85u8, 173u8, 181u8, 86u8, 174u8, 183u8, - 102u8, 22u8, 8u8, 36u8, 224u8, 114u8, 98u8, 0u8, 220u8, 215u8, 19u8, - 147u8, 32u8, 238u8, 242u8, 187u8, 235u8, 163u8, 183u8, 235u8, 9u8, - 180u8, - ], - ) - } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The period between a proposal being approved and enacted."] - #[doc = ""] - #[doc = " It should generally be a little more than the unstake period to ensure that"] - #[doc = " voting stakers have an opportunity to remove themselves from the system in the case"] - #[doc = " where they are on the losing side of a vote."] - pub fn enactment_period( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Democracy", - "EnactmentPeriod", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " How often (in blocks) new public referenda are launched."] - pub fn launch_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Democracy", - "LaunchPeriod", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " How often (in blocks) to check for new votes."] - pub fn voting_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Democracy", - "VotingPeriod", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The minimum period of vote locking."] - #[doc = ""] - #[doc = " It should be no shorter than enactment period to ensure that in the case of an approval,"] - #[doc = " those successful voters are locked into the consequences that their votes entail."] - pub fn vote_locking_period( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Democracy", - "VoteLockingPeriod", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The minimum amount to be used as a deposit for a public referendum proposal."] - pub fn minimum_deposit( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( - "Democracy", - "MinimumDeposit", - [ - 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, - 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, - 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, - ], - ) - } - #[doc = " Indicator for whether an emergency origin is even allowed to happen. Some chains may"] - #[doc = " want to set this permanently to `false`, others may want to condition it on things such"] - #[doc = " as an upgrade having happened recently."] - pub fn instant_allowed( - &self, - ) -> ::subxt::constants::Address<::core::primitive::bool> { - ::subxt::constants::Address::new_static( - "Democracy", - "InstantAllowed", - [ - 165u8, 28u8, 112u8, 190u8, 18u8, 129u8, 182u8, 206u8, 237u8, 1u8, 68u8, - 252u8, 125u8, 234u8, 185u8, 50u8, 149u8, 164u8, 47u8, 126u8, 134u8, - 100u8, 14u8, 86u8, 209u8, 39u8, 20u8, 4u8, 233u8, 115u8, 102u8, 131u8, - ], - ) - } - #[doc = " Minimum voting period allowed for a fast-track referendum."] - pub fn fast_track_voting_period( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Democracy", - "FastTrackVotingPeriod", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " Period in blocks where an external proposal may not be re-submitted after being vetoed."] - pub fn cooloff_period( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { + ) -> ::subxt::constants::Address + { ::subxt::constants::Address::new_static( - "Democracy", - "CooloffPeriod", + "Treasury", + "PalletId", [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 56u8, 243u8, 53u8, 83u8, 154u8, 179u8, 170u8, 80u8, 133u8, 173u8, 61u8, + 161u8, 47u8, 225u8, 146u8, 21u8, 50u8, 229u8, 248u8, 27u8, 104u8, 58u8, + 129u8, 197u8, 102u8, 160u8, 168u8, 205u8, 154u8, 42u8, 217u8, 53u8, ], ) } - #[doc = " The maximum number of votes for an account."] + #[doc = " The maximum number of approvals that can wait in the spending queue."] #[doc = ""] - #[doc = " Also used to compute weight, an overly big value can"] - #[doc = " lead to extrinsic with very big weight: see `delegate` for instance."] - pub fn max_votes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Democracy", - "MaxVotes", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of public proposals that can exist at any time."] - pub fn max_proposals(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Democracy", - "MaxProposals", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of deposits a public proposal may have at any time."] - pub fn max_deposits(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + #[doc = " NOTE: This parameter is also used within the Bounties Pallet extension if enabled."] + pub fn max_approvals(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Democracy", - "MaxDeposits", + "Treasury", + "MaxApprovals", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -9998,13 +9444,11 @@ pub mod api { ], ) } - #[doc = " The maximum number of items which can be blacklisted."] - pub fn max_blacklisted( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { + #[doc = " The period during which an approved treasury spend has to be claimed."] + pub fn payout_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Democracy", - "MaxBlacklisted", + "Treasury", + "PayoutPeriod", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -10016,12 +9460,12 @@ pub mod api { } } } - pub mod council { + pub mod conviction_voting { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_collective::pallet::Error; + pub type Error = runtime_types::pallet_conviction_voting::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_collective::pallet::Call; + pub type Call = runtime_types::pallet_conviction_voting::pallet::Call; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -10037,14 +9481,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetMembers { - pub new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, - pub prime: ::core::option::Option<::subxt::utils::AccountId32>, - pub old_count: ::core::primitive::u32, + pub struct Vote { + #[codec(compact)] + pub poll_index: ::core::primitive::u32, + pub vote: runtime_types::pallet_conviction_voting::vote::AccountVote< + ::core::primitive::u128, + >, } - impl ::subxt::blocks::StaticExtrinsic for SetMembers { - const PALLET: &'static str = "Council"; - const CALL: &'static str = "set_members"; + impl ::subxt::blocks::StaticExtrinsic for Vote { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "vote"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10056,16 +9502,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Execute { - pub proposal: ::std::boxed::Box, - #[codec(compact)] - pub length_bound: ::core::primitive::u32, + pub struct Delegate { + pub class: ::core::primitive::u16, + pub to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, + pub balance: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for Execute { - const PALLET: &'static str = "Council"; - const CALL: &'static str = "execute"; + impl ::subxt::blocks::StaticExtrinsic for Delegate { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "delegate"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -10075,16 +9523,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Propose { - #[codec(compact)] - pub threshold: ::core::primitive::u32, - pub proposal: ::std::boxed::Box, - #[codec(compact)] - pub length_bound: ::core::primitive::u32, + pub struct Undelegate { + pub class: ::core::primitive::u16, } - impl ::subxt::blocks::StaticExtrinsic for Propose { - const PALLET: &'static str = "Council"; - const CALL: &'static str = "propose"; + impl ::subxt::blocks::StaticExtrinsic for Undelegate { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "undelegate"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10096,15 +9540,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Vote { - pub proposal: ::subxt::utils::H256, - #[codec(compact)] - pub index: ::core::primitive::u32, - pub approve: ::core::primitive::bool, + pub struct Unlock { + pub class: ::core::primitive::u16, + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, } - impl ::subxt::blocks::StaticExtrinsic for Vote { - const PALLET: &'static str = "Council"; - const CALL: &'static str = "vote"; + impl ::subxt::blocks::StaticExtrinsic for Unlock { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "unlock"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10116,12 +9558,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct DisapproveProposal { - pub proposal_hash: ::subxt::utils::H256, + pub struct RemoveVote { + pub class: ::core::option::Option<::core::primitive::u16>, + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for DisapproveProposal { - const PALLET: &'static str = "Council"; - const CALL: &'static str = "disapprove_proposal"; + impl ::subxt::blocks::StaticExtrinsic for RemoveVote { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "remove_vote"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10133,138 +9576,226 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Close { - pub proposal_hash: ::subxt::utils::H256, - #[codec(compact)] + pub struct RemoveOtherVote { + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub class: ::core::primitive::u16, pub index: ::core::primitive::u32, - pub proposal_weight_bound: runtime_types::sp_weights::weight_v2::Weight, - #[codec(compact)] - pub length_bound: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for Close { - const PALLET: &'static str = "Council"; - const CALL: &'static str = "close"; + impl ::subxt::blocks::StaticExtrinsic for RemoveOtherVote { + const PALLET: &'static str = "ConvictionVoting"; + const CALL: &'static str = "remove_other_vote"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set_members`]."] - pub fn set_members( + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] + pub fn vote( &self, - new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, - prime: ::core::option::Option<::subxt::utils::AccountId32>, - old_count: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + poll_index: ::core::primitive::u32, + vote: runtime_types::pallet_conviction_voting::vote::AccountVote< + ::core::primitive::u128, + >, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Council", - "set_members", - types::SetMembers { new_members, prime, old_count }, + "ConvictionVoting", + "vote", + types::Vote { poll_index, vote }, [ - 66u8, 224u8, 186u8, 178u8, 41u8, 208u8, 67u8, 192u8, 57u8, 242u8, - 141u8, 31u8, 216u8, 118u8, 192u8, 43u8, 125u8, 213u8, 226u8, 85u8, - 142u8, 225u8, 131u8, 45u8, 172u8, 142u8, 12u8, 9u8, 73u8, 7u8, 218u8, - 61u8, + 57u8, 170u8, 177u8, 168u8, 158u8, 43u8, 87u8, 242u8, 176u8, 85u8, + 230u8, 64u8, 103u8, 239u8, 190u8, 6u8, 228u8, 165u8, 248u8, 77u8, + 231u8, 221u8, 186u8, 107u8, 249u8, 201u8, 226u8, 52u8, 129u8, 90u8, + 142u8, 159u8, ], ) } - #[doc = "See [`Pallet::execute`]."] - pub fn execute( + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + pub fn delegate( &self, - proposal: runtime_types::rococo_runtime::RuntimeCall, - length_bound: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + class: ::core::primitive::u16, + to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, + balance: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Council", - "execute", - types::Execute { proposal: ::std::boxed::Box::new(proposal), length_bound }, + "ConvictionVoting", + "delegate", + types::Delegate { class, to, conviction, balance }, [ - 220u8, 65u8, 154u8, 39u8, 77u8, 249u8, 46u8, 170u8, 107u8, 97u8, 197u8, - 165u8, 125u8, 171u8, 163u8, 180u8, 134u8, 23u8, 96u8, 210u8, 240u8, - 31u8, 3u8, 32u8, 12u8, 32u8, 246u8, 134u8, 27u8, 60u8, 68u8, 123u8, + 223u8, 143u8, 33u8, 94u8, 32u8, 156u8, 43u8, 40u8, 142u8, 134u8, 209u8, + 134u8, 255u8, 179u8, 97u8, 46u8, 8u8, 140u8, 5u8, 29u8, 76u8, 22u8, + 36u8, 7u8, 108u8, 190u8, 220u8, 151u8, 10u8, 47u8, 89u8, 55u8, ], ) } - #[doc = "See [`Pallet::propose`]."] - pub fn propose( + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + pub fn undelegate( &self, - threshold: ::core::primitive::u32, - proposal: runtime_types::rococo_runtime::RuntimeCall, - length_bound: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + class: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Council", - "propose", - types::Propose { - threshold, - proposal: ::std::boxed::Box::new(proposal), - length_bound, - }, + "ConvictionVoting", + "undelegate", + types::Undelegate { class }, [ - 226u8, 226u8, 183u8, 194u8, 224u8, 242u8, 239u8, 175u8, 117u8, 164u8, - 95u8, 114u8, 17u8, 28u8, 25u8, 161u8, 166u8, 199u8, 159u8, 129u8, - 165u8, 30u8, 107u8, 171u8, 202u8, 23u8, 65u8, 107u8, 74u8, 216u8, 20u8, - 255u8, + 140u8, 232u8, 6u8, 53u8, 228u8, 8u8, 131u8, 144u8, 65u8, 66u8, 245u8, + 247u8, 147u8, 135u8, 198u8, 57u8, 82u8, 212u8, 89u8, 46u8, 236u8, + 168u8, 200u8, 220u8, 93u8, 168u8, 101u8, 29u8, 110u8, 76u8, 67u8, + 181u8, ], ) } - #[doc = "See [`Pallet::vote`]."] - pub fn vote( + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] + pub fn unlock( &self, - proposal: ::subxt::utils::H256, - index: ::core::primitive::u32, - approve: ::core::primitive::bool, - ) -> ::subxt::tx::Payload { + class: ::core::primitive::u16, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Council", - "vote", - types::Vote { proposal, index, approve }, + "ConvictionVoting", + "unlock", + types::Unlock { class, target }, [ - 110u8, 141u8, 24u8, 33u8, 91u8, 7u8, 89u8, 198u8, 54u8, 10u8, 76u8, - 129u8, 45u8, 20u8, 216u8, 104u8, 231u8, 246u8, 174u8, 205u8, 190u8, - 176u8, 171u8, 113u8, 33u8, 37u8, 155u8, 203u8, 251u8, 34u8, 25u8, - 120u8, + 79u8, 5u8, 252u8, 237u8, 109u8, 238u8, 157u8, 237u8, 125u8, 171u8, + 65u8, 160u8, 102u8, 192u8, 5u8, 141u8, 179u8, 249u8, 253u8, 213u8, + 105u8, 251u8, 241u8, 145u8, 186u8, 177u8, 244u8, 139u8, 71u8, 140u8, + 173u8, 108u8, ], ) } - #[doc = "See [`Pallet::disapprove_proposal`]."] - pub fn disapprove_proposal( + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] + pub fn remove_vote( &self, - proposal_hash: ::subxt::utils::H256, - ) -> ::subxt::tx::Payload { + class: ::core::option::Option<::core::primitive::u16>, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Council", - "disapprove_proposal", - types::DisapproveProposal { proposal_hash }, + "ConvictionVoting", + "remove_vote", + types::RemoveVote { class, index }, [ - 26u8, 140u8, 111u8, 193u8, 229u8, 59u8, 53u8, 196u8, 230u8, 60u8, 7u8, - 155u8, 168u8, 7u8, 201u8, 177u8, 70u8, 103u8, 190u8, 57u8, 244u8, - 156u8, 67u8, 101u8, 228u8, 6u8, 213u8, 83u8, 225u8, 95u8, 148u8, 96u8, + 255u8, 108u8, 211u8, 146u8, 168u8, 231u8, 207u8, 44u8, 76u8, 24u8, + 235u8, 60u8, 23u8, 79u8, 192u8, 192u8, 46u8, 40u8, 134u8, 27u8, 125u8, + 114u8, 125u8, 247u8, 85u8, 102u8, 76u8, 159u8, 34u8, 167u8, 152u8, + 148u8, ], ) } - #[doc = "See [`Pallet::close`]."] - pub fn close( + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] + pub fn remove_other_vote( &self, - proposal_hash: ::subxt::utils::H256, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + class: ::core::primitive::u16, index: ::core::primitive::u32, - proposal_weight_bound: runtime_types::sp_weights::weight_v2::Weight, - length_bound: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Council", - "close", - types::Close { proposal_hash, index, proposal_weight_bound, length_bound }, + "ConvictionVoting", + "remove_other_vote", + types::RemoveOtherVote { target, class, index }, [ - 136u8, 48u8, 243u8, 34u8, 60u8, 109u8, 186u8, 158u8, 72u8, 48u8, 62u8, - 34u8, 167u8, 46u8, 33u8, 142u8, 239u8, 43u8, 238u8, 125u8, 94u8, 80u8, - 157u8, 245u8, 220u8, 126u8, 58u8, 244u8, 186u8, 195u8, 30u8, 127u8, + 165u8, 26u8, 166u8, 37u8, 10u8, 174u8, 243u8, 10u8, 73u8, 93u8, 213u8, + 69u8, 200u8, 16u8, 48u8, 146u8, 160u8, 92u8, 28u8, 26u8, 158u8, 55u8, + 6u8, 251u8, 36u8, 132u8, 46u8, 195u8, 107u8, 34u8, 0u8, 100u8, ], ) } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_collective::pallet::Event; + pub type Event = runtime_types::pallet_conviction_voting::pallet::Event; pub mod events { use super::runtime_types; #[derive( @@ -10277,114 +9808,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion (given hash) has been proposed (by given account) with a threshold (given"] - #[doc = "`MemberCount`)."] - pub struct Proposed { - pub account: ::subxt::utils::AccountId32, - pub proposal_index: ::core::primitive::u32, - pub proposal_hash: ::subxt::utils::H256, - pub threshold: ::core::primitive::u32, - } - impl ::subxt::events::StaticEvent for Proposed { - const PALLET: &'static str = "Council"; - const EVENT: &'static str = "Proposed"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion (given hash) has been voted on by given account, leaving"] - #[doc = "a tally (yes votes and no votes given respectively as `MemberCount`)."] - pub struct Voted { - pub account: ::subxt::utils::AccountId32, - pub proposal_hash: ::subxt::utils::H256, - pub voted: ::core::primitive::bool, - pub yes: ::core::primitive::u32, - pub no: ::core::primitive::u32, - } - impl ::subxt::events::StaticEvent for Voted { - const PALLET: &'static str = "Council"; - const EVENT: &'static str = "Voted"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion was approved by the required threshold."] - pub struct Approved { - pub proposal_hash: ::subxt::utils::H256, - } - impl ::subxt::events::StaticEvent for Approved { - const PALLET: &'static str = "Council"; - const EVENT: &'static str = "Approved"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion was not approved by the required threshold."] - pub struct Disapproved { - pub proposal_hash: ::subxt::utils::H256, - } - impl ::subxt::events::StaticEvent for Disapproved { - const PALLET: &'static str = "Council"; - const EVENT: &'static str = "Disapproved"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion was executed; result will be `Ok` if it returned without error."] - pub struct Executed { - pub proposal_hash: ::subxt::utils::H256, - pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, - } - impl ::subxt::events::StaticEvent for Executed { - const PALLET: &'static str = "Council"; - const EVENT: &'static str = "Executed"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A single member did some action; result will be `Ok` if it returned without error."] - pub struct MemberExecuted { - pub proposal_hash: ::subxt::utils::H256, - pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, - } - impl ::subxt::events::StaticEvent for MemberExecuted { - const PALLET: &'static str = "Council"; - const EVENT: &'static str = "MemberExecuted"; + #[doc = "An account has delegated their vote to another account. \\[who, target\\]"] + pub struct Delegated(pub ::subxt::utils::AccountId32, pub ::subxt::utils::AccountId32); + impl ::subxt::events::StaticEvent for Delegated { + const PALLET: &'static str = "ConvictionVoting"; + const EVENT: &'static str = "Delegated"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10396,198 +9824,126 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A proposal was closed because its threshold was reached or after its duration was up."] - pub struct Closed { - pub proposal_hash: ::subxt::utils::H256, - pub yes: ::core::primitive::u32, - pub no: ::core::primitive::u32, - } - impl ::subxt::events::StaticEvent for Closed { - const PALLET: &'static str = "Council"; - const EVENT: &'static str = "Closed"; + #[doc = "An \\[account\\] has cancelled a previous delegation operation."] + pub struct Undelegated(pub ::subxt::utils::AccountId32); + impl ::subxt::events::StaticEvent for Undelegated { + const PALLET: &'static str = "ConvictionVoting"; + const EVENT: &'static str = "Undelegated"; } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The hashes of the active proposals."] - pub fn proposals( + #[doc = " All voting for a particular voter in a particular voting class. We store the balance for the"] + #[doc = " number of votes that we have recorded."] + pub fn voting_for( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow<::core::primitive::u16>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::H256, + runtime_types::pallet_conviction_voting::vote::Voting< + ::core::primitive::u128, + ::subxt::utils::AccountId32, + ::core::primitive::u32, + ::core::primitive::u32, >, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "Council", - "Proposals", - vec![], - [ - 210u8, 234u8, 7u8, 29u8, 231u8, 80u8, 17u8, 36u8, 189u8, 34u8, 175u8, - 147u8, 56u8, 92u8, 201u8, 104u8, 207u8, 150u8, 58u8, 110u8, 90u8, 28u8, - 198u8, 79u8, 236u8, 245u8, 19u8, 38u8, 68u8, 59u8, 215u8, 74u8, - ], - ) - } - #[doc = " Actual proposal for a given hash, if it's current."] - pub fn proposal_of_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::rococo_runtime::RuntimeCall, - (), - (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Council", - "ProposalOf", - vec![], - [ - 9u8, 230u8, 226u8, 199u8, 132u8, 16u8, 221u8, 214u8, 56u8, 220u8, 53u8, - 47u8, 17u8, 156u8, 18u8, 49u8, 204u8, 25u8, 79u8, 104u8, 130u8, 193u8, - 85u8, 29u8, 168u8, 40u8, 64u8, 255u8, 137u8, 119u8, 57u8, 207u8, + "ConvictionVoting", + "VotingFor", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], - ) - } - #[doc = " Actual proposal for a given hash, if it's current."] - pub fn proposal_of( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::rococo_runtime::RuntimeCall, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "Council", - "ProposalOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 9u8, 230u8, 226u8, 199u8, 132u8, 16u8, 221u8, 214u8, 56u8, 220u8, 53u8, - 47u8, 17u8, 156u8, 18u8, 49u8, 204u8, 25u8, 79u8, 104u8, 130u8, 193u8, - 85u8, 29u8, 168u8, 40u8, 64u8, 255u8, 137u8, 119u8, 57u8, 207u8, + 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, + 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, + 12u8, 29u8, 239u8, 220u8, 231u8, 24u8, 46u8, 134u8, 99u8, 53u8, 206u8, ], ) } - #[doc = " Votes on a given proposal, if it is ongoing."] - pub fn voting_iter( + #[doc = " All voting for a particular voter in a particular voting class. We store the balance for the"] + #[doc = " number of votes that we have recorded."] + pub fn voting_for_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_collective::Votes< + runtime_types::pallet_conviction_voting::vote::Voting< + ::core::primitive::u128, ::subxt::utils::AccountId32, ::core::primitive::u32, - >, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Council", - "Voting", - vec![], - [ - 109u8, 198u8, 2u8, 13u8, 29u8, 14u8, 241u8, 217u8, 55u8, 147u8, 147u8, - 4u8, 176u8, 69u8, 132u8, 228u8, 158u8, 203u8, 110u8, 239u8, 158u8, - 137u8, 97u8, 46u8, 228u8, 118u8, 251u8, 201u8, 88u8, 208u8, 94u8, - 132u8, - ], - ) - } - #[doc = " Votes on a given proposal, if it is ongoing."] - pub fn voting( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_collective::Votes< - ::subxt::utils::AccountId32, ::core::primitive::u32, >, - ::subxt::storage::address::Yes, - (), (), - > { - ::subxt::storage::address::Address::new_static( - "Council", - "Voting", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 109u8, 198u8, 2u8, 13u8, 29u8, 14u8, 241u8, 217u8, 55u8, 147u8, 147u8, - 4u8, 176u8, 69u8, 132u8, 228u8, 158u8, 203u8, 110u8, 239u8, 158u8, - 137u8, 97u8, 46u8, 228u8, 118u8, 251u8, 201u8, 88u8, 208u8, 94u8, - 132u8, - ], - ) - } - #[doc = " Proposals so far."] - pub fn proposal_count( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( - "Council", - "ProposalCount", - vec![], + "ConvictionVoting", + "VotingFor", + Vec::new(), [ - 91u8, 238u8, 246u8, 106u8, 95u8, 66u8, 83u8, 134u8, 1u8, 225u8, 164u8, - 216u8, 113u8, 101u8, 203u8, 200u8, 113u8, 97u8, 246u8, 228u8, 140u8, - 29u8, 29u8, 48u8, 176u8, 137u8, 93u8, 230u8, 56u8, 75u8, 51u8, 149u8, + 76u8, 63u8, 153u8, 193u8, 39u8, 137u8, 186u8, 29u8, 202u8, 56u8, 169u8, + 56u8, 103u8, 138u8, 192u8, 18u8, 179u8, 114u8, 56u8, 121u8, 197u8, + 12u8, 29u8, 239u8, 220u8, 231u8, 24u8, 46u8, 134u8, 99u8, 53u8, 206u8, ], ) } - #[doc = " The current members of the collective. This is stored sorted (just by value)."] - pub fn members( + #[doc = " The voting classes which have a non-zero lock requirement and the lock amounts which they"] + #[doc = " require. The actual amount locked on behalf of this pallet should always be the maximum of"] + #[doc = " this list."] + pub fn class_locks_for( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::subxt::utils::AccountId32>, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u16, + ::core::primitive::u128, + )>, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( - "Council", - "Members", - vec![], + "ConvictionVoting", + "ClassLocksFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 16u8, 29u8, 32u8, 222u8, 175u8, 136u8, 111u8, 101u8, 43u8, 74u8, 209u8, - 81u8, 47u8, 97u8, 129u8, 39u8, 225u8, 243u8, 110u8, 229u8, 237u8, 21u8, - 90u8, 127u8, 80u8, 239u8, 156u8, 32u8, 90u8, 109u8, 179u8, 0u8, + 74u8, 74u8, 8u8, 82u8, 215u8, 61u8, 13u8, 9u8, 44u8, 222u8, 33u8, + 245u8, 195u8, 124u8, 6u8, 174u8, 65u8, 245u8, 71u8, 42u8, 47u8, 46u8, + 164u8, 231u8, 11u8, 245u8, 115u8, 207u8, 209u8, 137u8, 90u8, 6u8, ], ) } - #[doc = " The prime member that helps determine the default vote behavior in case of absentations."] - pub fn prime( + #[doc = " The voting classes which have a non-zero lock requirement and the lock amounts which they"] + #[doc = " require. The actual amount locked on behalf of this pallet should always be the maximum of"] + #[doc = " this list."] + pub fn class_locks_for_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::AccountId32, - ::subxt::storage::address::Yes, - (), + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u16, + ::core::primitive::u128, + )>, (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Council", - "Prime", - vec![], + "ConvictionVoting", + "ClassLocksFor", + Vec::new(), [ - 72u8, 128u8, 214u8, 72u8, 78u8, 80u8, 100u8, 198u8, 114u8, 215u8, 59u8, - 3u8, 103u8, 14u8, 152u8, 202u8, 12u8, 165u8, 224u8, 10u8, 41u8, 154u8, - 77u8, 95u8, 116u8, 143u8, 250u8, 250u8, 176u8, 92u8, 238u8, 154u8, + 74u8, 74u8, 8u8, 82u8, 215u8, 61u8, 13u8, 9u8, 44u8, 222u8, 33u8, + 245u8, 195u8, 124u8, 6u8, 174u8, 65u8, 245u8, 71u8, 42u8, 47u8, 46u8, + 164u8, 231u8, 11u8, 245u8, 115u8, 207u8, 209u8, 137u8, 90u8, 6u8, ], ) } @@ -10597,31 +9953,49 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The maximum weight of a dispatch call that can be proposed and executed."] - pub fn max_proposal_weight( - &self, - ) -> ::subxt::constants::Address - { + #[doc = " The maximum number of concurrent votes an account may have."] + #[doc = ""] + #[doc = " Also used to compute weight, an overly large value can lead to extrinsics with large"] + #[doc = " weight estimation: see `delegate` for instance."] + pub fn max_votes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Council", - "MaxProposalWeight", + "ConvictionVoting", + "MaxVotes", [ - 149u8, 252u8, 129u8, 80u8, 169u8, 36u8, 79u8, 127u8, 240u8, 156u8, - 56u8, 202u8, 219u8, 86u8, 5u8, 65u8, 245u8, 148u8, 138u8, 243u8, 210u8, - 128u8, 234u8, 216u8, 240u8, 219u8, 123u8, 235u8, 21u8, 158u8, 237u8, - 112u8, + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, ], ) } - } - } - } - pub mod technical_committee { - use super::{root_mod, runtime_types}; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_collective::pallet::Error2; + #[doc = " The minimum period of vote locking."] + #[doc = ""] + #[doc = " It should be no shorter than enactment period to ensure that in the case of an approval,"] + #[doc = " those successful voters are locked into the consequences that their votes entail."] + pub fn vote_locking_period( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "ConvictionVoting", + "VoteLockingPeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } + pub mod referenda { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_referenda::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_collective::pallet::Call2; + pub type Call = runtime_types::pallet_referenda::pallet::Call; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -10637,16 +10011,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetMembers { - pub new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, - pub prime: ::core::option::Option<::subxt::utils::AccountId32>, - pub old_count: ::core::primitive::u32, + pub struct Submit { + pub proposal_origin: + ::std::boxed::Box, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + pub enactment_moment: + runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, } - impl ::subxt::blocks::StaticExtrinsic for SetMembers { - const PALLET: &'static str = "TechnicalCommittee"; - const CALL: &'static str = "set_members"; + impl ::subxt::blocks::StaticExtrinsic for Submit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "submit"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -10656,16 +10038,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Execute { - pub proposal: ::std::boxed::Box, - #[codec(compact)] - pub length_bound: ::core::primitive::u32, + pub struct PlaceDecisionDeposit { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for Execute { - const PALLET: &'static str = "TechnicalCommittee"; - const CALL: &'static str = "execute"; + impl ::subxt::blocks::StaticExtrinsic for PlaceDecisionDeposit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "place_decision_deposit"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -10675,18 +10056,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Propose { - #[codec(compact)] - pub threshold: ::core::primitive::u32, - pub proposal: ::std::boxed::Box, - #[codec(compact)] - pub length_bound: ::core::primitive::u32, + pub struct RefundDecisionDeposit { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for Propose { - const PALLET: &'static str = "TechnicalCommittee"; - const CALL: &'static str = "propose"; + impl ::subxt::blocks::StaticExtrinsic for RefundDecisionDeposit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "refund_decision_deposit"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -10696,17 +10074,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Vote { - pub proposal: ::subxt::utils::H256, - #[codec(compact)] + pub struct Cancel { pub index: ::core::primitive::u32, - pub approve: ::core::primitive::bool, } - impl ::subxt::blocks::StaticExtrinsic for Vote { - const PALLET: &'static str = "TechnicalCommittee"; - const CALL: &'static str = "vote"; + impl ::subxt::blocks::StaticExtrinsic for Cancel { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "cancel"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -10716,14 +10092,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct DisapproveProposal { - pub proposal_hash: ::subxt::utils::H256, + pub struct Kill { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for DisapproveProposal { - const PALLET: &'static str = "TechnicalCommittee"; - const CALL: &'static str = "disapprove_proposal"; + impl ::subxt::blocks::StaticExtrinsic for Kill { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "kill"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -10733,138 +10110,289 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Close { - pub proposal_hash: ::subxt::utils::H256, - #[codec(compact)] + pub struct NudgeReferendum { pub index: ::core::primitive::u32, - pub proposal_weight_bound: runtime_types::sp_weights::weight_v2::Weight, - #[codec(compact)] - pub length_bound: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for Close { - const PALLET: &'static str = "TechnicalCommittee"; - const CALL: &'static str = "close"; + impl ::subxt::blocks::StaticExtrinsic for NudgeReferendum { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "nudge_referendum"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OneFewerDeciding { + pub track: ::core::primitive::u16, + } + impl ::subxt::blocks::StaticExtrinsic for OneFewerDeciding { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "one_fewer_deciding"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RefundSubmissionDeposit { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RefundSubmissionDeposit { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "refund_submission_deposit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetMetadata { + pub index: ::core::primitive::u32, + pub maybe_hash: ::core::option::Option<::subxt::utils::H256>, + } + impl ::subxt::blocks::StaticExtrinsic for SetMetadata { + const PALLET: &'static str = "Referenda"; + const CALL: &'static str = "set_metadata"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set_members`]."] - pub fn set_members( + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] + pub fn submit( &self, - new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, - prime: ::core::option::Option<::subxt::utils::AccountId32>, - old_count: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + proposal_origin: runtime_types::rococo_runtime::OriginCaller, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + enactment_moment: runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalCommittee", - "set_members", - types::SetMembers { new_members, prime, old_count }, + "Referenda", + "submit", + types::Submit { + proposal_origin: ::std::boxed::Box::new(proposal_origin), + proposal, + enactment_moment, + }, [ - 66u8, 224u8, 186u8, 178u8, 41u8, 208u8, 67u8, 192u8, 57u8, 242u8, - 141u8, 31u8, 216u8, 118u8, 192u8, 43u8, 125u8, 213u8, 226u8, 85u8, - 142u8, 225u8, 131u8, 45u8, 172u8, 142u8, 12u8, 9u8, 73u8, 7u8, 218u8, - 61u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } - #[doc = "See [`Pallet::execute`]."] - pub fn execute( + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] + pub fn place_decision_deposit( &self, - proposal: runtime_types::rococo_runtime::RuntimeCall, - length_bound: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalCommittee", - "execute", - types::Execute { proposal: ::std::boxed::Box::new(proposal), length_bound }, + "Referenda", + "place_decision_deposit", + types::PlaceDecisionDeposit { index }, [ - 220u8, 65u8, 154u8, 39u8, 77u8, 249u8, 46u8, 170u8, 107u8, 97u8, 197u8, - 165u8, 125u8, 171u8, 163u8, 180u8, 134u8, 23u8, 96u8, 210u8, 240u8, - 31u8, 3u8, 32u8, 12u8, 32u8, 246u8, 134u8, 27u8, 60u8, 68u8, 123u8, + 247u8, 158u8, 55u8, 191u8, 188u8, 200u8, 3u8, 47u8, 20u8, 175u8, 86u8, + 203u8, 52u8, 253u8, 91u8, 131u8, 21u8, 213u8, 56u8, 68u8, 40u8, 84u8, + 184u8, 30u8, 9u8, 193u8, 63u8, 182u8, 178u8, 241u8, 247u8, 220u8, ], ) } - #[doc = "See [`Pallet::propose`]."] - pub fn propose( + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] + pub fn refund_decision_deposit( &self, - threshold: ::core::primitive::u32, - proposal: runtime_types::rococo_runtime::RuntimeCall, - length_bound: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalCommittee", - "propose", - types::Propose { - threshold, - proposal: ::std::boxed::Box::new(proposal), - length_bound, - }, + "Referenda", + "refund_decision_deposit", + types::RefundDecisionDeposit { index }, [ - 226u8, 226u8, 183u8, 194u8, 224u8, 242u8, 239u8, 175u8, 117u8, 164u8, - 95u8, 114u8, 17u8, 28u8, 25u8, 161u8, 166u8, 199u8, 159u8, 129u8, - 165u8, 30u8, 107u8, 171u8, 202u8, 23u8, 65u8, 107u8, 74u8, 216u8, 20u8, - 255u8, + 159u8, 19u8, 35u8, 216u8, 114u8, 105u8, 18u8, 42u8, 148u8, 151u8, + 136u8, 92u8, 117u8, 30u8, 29u8, 41u8, 238u8, 58u8, 195u8, 91u8, 115u8, + 135u8, 96u8, 99u8, 154u8, 233u8, 8u8, 249u8, 145u8, 165u8, 77u8, 164u8, ], ) } - #[doc = "See [`Pallet::vote`]."] - pub fn vote( + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] + pub fn cancel( &self, - proposal: ::subxt::utils::H256, index: ::core::primitive::u32, - approve: ::core::primitive::bool, - ) -> ::subxt::tx::Payload { + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalCommittee", - "vote", - types::Vote { proposal, index, approve }, + "Referenda", + "cancel", + types::Cancel { index }, + [ + 55u8, 206u8, 119u8, 156u8, 238u8, 165u8, 193u8, 73u8, 242u8, 13u8, + 212u8, 75u8, 136u8, 156u8, 151u8, 14u8, 35u8, 41u8, 156u8, 107u8, 60u8, + 190u8, 39u8, 216u8, 8u8, 74u8, 213u8, 130u8, 160u8, 131u8, 237u8, + 122u8, + ], + ) + } + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] + pub fn kill( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "kill", + types::Kill { index }, + [ + 50u8, 89u8, 57u8, 0u8, 87u8, 129u8, 113u8, 140u8, 179u8, 178u8, 126u8, + 198u8, 92u8, 92u8, 189u8, 64u8, 123u8, 232u8, 57u8, 227u8, 223u8, + 219u8, 73u8, 217u8, 179u8, 44u8, 210u8, 125u8, 180u8, 10u8, 143u8, + 48u8, + ], + ) + } + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] + pub fn nudge_referendum( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "nudge_referendum", + types::NudgeReferendum { index }, + [ + 75u8, 99u8, 172u8, 30u8, 170u8, 150u8, 211u8, 229u8, 249u8, 128u8, + 194u8, 246u8, 100u8, 142u8, 193u8, 184u8, 232u8, 81u8, 29u8, 17u8, + 99u8, 91u8, 236u8, 85u8, 230u8, 226u8, 57u8, 115u8, 45u8, 170u8, 54u8, + 213u8, + ], + ) + } + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] + pub fn one_fewer_deciding( + &self, + track: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Referenda", + "one_fewer_deciding", + types::OneFewerDeciding { track }, [ - 110u8, 141u8, 24u8, 33u8, 91u8, 7u8, 89u8, 198u8, 54u8, 10u8, 76u8, - 129u8, 45u8, 20u8, 216u8, 104u8, 231u8, 246u8, 174u8, 205u8, 190u8, - 176u8, 171u8, 113u8, 33u8, 37u8, 155u8, 203u8, 251u8, 34u8, 25u8, - 120u8, + 15u8, 84u8, 79u8, 231u8, 21u8, 239u8, 244u8, 143u8, 183u8, 215u8, + 181u8, 25u8, 225u8, 195u8, 95u8, 171u8, 17u8, 156u8, 182u8, 128u8, + 111u8, 40u8, 151u8, 102u8, 196u8, 55u8, 36u8, 212u8, 89u8, 190u8, + 131u8, 167u8, ], ) } - #[doc = "See [`Pallet::disapprove_proposal`]."] - pub fn disapprove_proposal( + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] + pub fn refund_submission_deposit( &self, - proposal_hash: ::subxt::utils::H256, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalCommittee", - "disapprove_proposal", - types::DisapproveProposal { proposal_hash }, + "Referenda", + "refund_submission_deposit", + types::RefundSubmissionDeposit { index }, [ - 26u8, 140u8, 111u8, 193u8, 229u8, 59u8, 53u8, 196u8, 230u8, 60u8, 7u8, - 155u8, 168u8, 7u8, 201u8, 177u8, 70u8, 103u8, 190u8, 57u8, 244u8, - 156u8, 67u8, 101u8, 228u8, 6u8, 213u8, 83u8, 225u8, 95u8, 148u8, 96u8, + 20u8, 217u8, 115u8, 6u8, 1u8, 60u8, 54u8, 136u8, 35u8, 41u8, 38u8, + 23u8, 85u8, 100u8, 141u8, 126u8, 30u8, 160u8, 61u8, 46u8, 134u8, 98u8, + 82u8, 38u8, 211u8, 124u8, 208u8, 222u8, 210u8, 10u8, 155u8, 122u8, ], ) } - #[doc = "See [`Pallet::close`]."] - pub fn close( + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + pub fn set_metadata( &self, - proposal_hash: ::subxt::utils::H256, index: ::core::primitive::u32, - proposal_weight_bound: runtime_types::sp_weights::weight_v2::Weight, - length_bound: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + maybe_hash: ::core::option::Option<::subxt::utils::H256>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalCommittee", - "close", - types::Close { proposal_hash, index, proposal_weight_bound, length_bound }, + "Referenda", + "set_metadata", + types::SetMetadata { index, maybe_hash }, [ - 136u8, 48u8, 243u8, 34u8, 60u8, 109u8, 186u8, 158u8, 72u8, 48u8, 62u8, - 34u8, 167u8, 46u8, 33u8, 142u8, 239u8, 43u8, 238u8, 125u8, 94u8, 80u8, - 157u8, 245u8, 220u8, 126u8, 58u8, 244u8, 186u8, 195u8, 30u8, 127u8, + 207u8, 29u8, 146u8, 233u8, 219u8, 205u8, 88u8, 118u8, 106u8, 61u8, + 124u8, 101u8, 2u8, 41u8, 169u8, 70u8, 114u8, 189u8, 162u8, 118u8, 1u8, + 108u8, 234u8, 98u8, 245u8, 245u8, 183u8, 126u8, 89u8, 13u8, 112u8, + 88u8, ], ) } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_collective::pallet::Event2; + pub type Event = runtime_types::pallet_referenda::pallet::Event; pub mod events { use super::runtime_types; #[derive( @@ -10877,17 +10405,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion (given hash) has been proposed (by given account) with a threshold (given"] - #[doc = "`MemberCount`)."] - pub struct Proposed { - pub account: ::subxt::utils::AccountId32, - pub proposal_index: ::core::primitive::u32, - pub proposal_hash: ::subxt::utils::H256, - pub threshold: ::core::primitive::u32, + #[doc = "A referendum has been submitted."] + pub struct Submitted { + pub index: ::core::primitive::u32, + pub track: ::core::primitive::u16, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, } - impl ::subxt::events::StaticEvent for Proposed { - const PALLET: &'static str = "TechnicalCommittee"; - const EVENT: &'static str = "Proposed"; + impl ::subxt::events::StaticEvent for Submitted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Submitted"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10899,20 +10428,138 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion (given hash) has been voted on by given account, leaving"] - #[doc = "a tally (yes votes and no votes given respectively as `MemberCount`)."] - pub struct Voted { - pub account: ::subxt::utils::AccountId32, - pub proposal_hash: ::subxt::utils::H256, - pub voted: ::core::primitive::bool, - pub yes: ::core::primitive::u32, - pub no: ::core::primitive::u32, + #[doc = "The decision deposit has been placed."] + pub struct DecisionDepositPlaced { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for Voted { - const PALLET: &'static str = "TechnicalCommittee"; - const EVENT: &'static str = "Voted"; + impl ::subxt::events::StaticEvent for DecisionDepositPlaced { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DecisionDepositPlaced"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The decision deposit has been refunded."] + pub struct DecisionDepositRefunded { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DecisionDepositRefunded { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DecisionDepositRefunded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A deposit has been slashed."] + pub struct DepositSlashed { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DepositSlashed { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DepositSlashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has moved into the deciding phase."] + pub struct DecisionStarted { + pub index: ::core::primitive::u32, + pub track: ::core::primitive::u16, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for DecisionStarted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "DecisionStarted"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ConfirmStarted { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for ConfirmStarted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "ConfirmStarted"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ConfirmAborted { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for ConfirmAborted { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "ConfirmAborted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has ended its confirmation phase and is ready for approval."] + pub struct Confirmed { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for Confirmed { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Confirmed"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -10922,12 +10569,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion was approved by the required threshold."] + #[doc = "A referendum has been approved and its proposal has been scheduled."] pub struct Approved { - pub proposal_hash: ::subxt::utils::H256, + pub index: ::core::primitive::u32, } impl ::subxt::events::StaticEvent for Approved { - const PALLET: &'static str = "TechnicalCommittee"; + const PALLET: &'static str = "Referenda"; const EVENT: &'static str = "Approved"; } #[derive( @@ -10940,13 +10587,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion was not approved by the required threshold."] - pub struct Disapproved { - pub proposal_hash: ::subxt::utils::H256, + #[doc = "A proposal has been rejected by referendum."] + pub struct Rejected { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, } - impl ::subxt::events::StaticEvent for Disapproved { - const PALLET: &'static str = "TechnicalCommittee"; - const EVENT: &'static str = "Disapproved"; + impl ::subxt::events::StaticEvent for Rejected { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Rejected"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10958,14 +10607,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A motion was executed; result will be `Ok` if it returned without error."] - pub struct Executed { - pub proposal_hash: ::subxt::utils::H256, - pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + #[doc = "A referendum has been timed out without being decided."] + pub struct TimedOut { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, } - impl ::subxt::events::StaticEvent for Executed { - const PALLET: &'static str = "TechnicalCommittee"; - const EVENT: &'static str = "Executed"; + impl ::subxt::events::StaticEvent for TimedOut { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "TimedOut"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10977,14 +10627,74 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A single member did some action; result will be `Ok` if it returned without error."] - pub struct MemberExecuted { - pub proposal_hash: ::subxt::utils::H256, - pub result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, + #[doc = "A referendum has been cancelled."] + pub struct Cancelled { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for Cancelled { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Cancelled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A referendum has been killed."] + pub struct Killed { + pub index: ::core::primitive::u32, + pub tally: + runtime_types::pallet_conviction_voting::types::Tally<::core::primitive::u128>, + } + impl ::subxt::events::StaticEvent for Killed { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "Killed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The submission deposit has been refunded."] + pub struct SubmissionDepositRefunded { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for MemberExecuted { - const PALLET: &'static str = "TechnicalCommittee"; - const EVENT: &'static str = "MemberExecuted"; + impl ::subxt::events::StaticEvent for SubmissionDepositRefunded { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "SubmissionDepositRefunded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Metadata for a referendum has been set."] + pub struct MetadataSet { + pub index: ::core::primitive::u32, + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for MetadataSet { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "MetadataSet"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -10996,198 +10706,267 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A proposal was closed because its threshold was reached or after its duration was up."] - pub struct Closed { - pub proposal_hash: ::subxt::utils::H256, - pub yes: ::core::primitive::u32, - pub no: ::core::primitive::u32, + #[doc = "Metadata for a referendum has been cleared."] + pub struct MetadataCleared { + pub index: ::core::primitive::u32, + pub hash: ::subxt::utils::H256, } - impl ::subxt::events::StaticEvent for Closed { - const PALLET: &'static str = "TechnicalCommittee"; - const EVENT: &'static str = "Closed"; + impl ::subxt::events::StaticEvent for MetadataCleared { + const PALLET: &'static str = "Referenda"; + const EVENT: &'static str = "MetadataCleared"; } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The hashes of the active proposals."] - pub fn proposals( + #[doc = " The next free referendum index, aka the number of referenda started so far."] + pub fn referendum_count( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::H256, - >, + ::core::primitive::u32, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "Proposals", + "Referenda", + "ReferendumCount", vec![], [ - 210u8, 234u8, 7u8, 29u8, 231u8, 80u8, 17u8, 36u8, 189u8, 34u8, 175u8, - 147u8, 56u8, 92u8, 201u8, 104u8, 207u8, 150u8, 58u8, 110u8, 90u8, 28u8, - 198u8, 79u8, 236u8, 245u8, 19u8, 38u8, 68u8, 59u8, 215u8, 74u8, + 64u8, 145u8, 232u8, 153u8, 121u8, 87u8, 128u8, 253u8, 170u8, 192u8, + 139u8, 18u8, 0u8, 33u8, 243u8, 11u8, 238u8, 222u8, 244u8, 5u8, 247u8, + 198u8, 149u8, 31u8, 122u8, 208u8, 86u8, 179u8, 166u8, 167u8, 93u8, + 67u8, ], ) } - #[doc = " Actual proposal for a given hash, if it's current."] - pub fn proposal_of_iter( + #[doc = " Information concerning any given referendum."] + pub fn referendum_info_for( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::rococo_runtime::RuntimeCall, - (), + runtime_types::pallet_referenda::types::ReferendumInfo< + ::core::primitive::u16, + runtime_types::rococo_runtime::OriginCaller, + ::core::primitive::u32, + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + ::core::primitive::u128, + runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + ::subxt::utils::AccountId32, + (::core::primitive::u32, ::core::primitive::u32), + >, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "ProposalOf", - vec![], + "Referenda", + "ReferendumInfoFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 9u8, 230u8, 226u8, 199u8, 132u8, 16u8, 221u8, 214u8, 56u8, 220u8, 53u8, - 47u8, 17u8, 156u8, 18u8, 49u8, 204u8, 25u8, 79u8, 104u8, 130u8, 193u8, - 85u8, 29u8, 168u8, 40u8, 64u8, 255u8, 137u8, 119u8, 57u8, 207u8, + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, ], ) } - #[doc = " Actual proposal for a given hash, if it's current."] - pub fn proposal_of( + #[doc = " Information concerning any given referendum."] + pub fn referendum_info_for_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::rococo_runtime::RuntimeCall, - ::subxt::storage::address::Yes, + runtime_types::pallet_referenda::types::ReferendumInfo< + ::core::primitive::u16, + runtime_types::rococo_runtime::OriginCaller, + ::core::primitive::u32, + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + ::core::primitive::u128, + runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + ::subxt::utils::AccountId32, + (::core::primitive::u32, ::core::primitive::u32), + >, (), (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Referenda", + "ReferendumInfoFor", + Vec::new(), + [ + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, + ], + ) + } + #[doc = " The sorted list of referenda ready to be decided but not yet being decided, ordered by"] + #[doc = " conviction-weighted approvals."] + #[doc = ""] + #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] + pub fn track_queue( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u32, + ::core::primitive::u128, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "ProposalOf", + "Referenda", + "TrackQueue", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 9u8, 230u8, 226u8, 199u8, 132u8, 16u8, 221u8, 214u8, 56u8, 220u8, 53u8, - 47u8, 17u8, 156u8, 18u8, 49u8, 204u8, 25u8, 79u8, 104u8, 130u8, 193u8, - 85u8, 29u8, 168u8, 40u8, 64u8, 255u8, 137u8, 119u8, 57u8, 207u8, + 125u8, 59u8, 111u8, 68u8, 27u8, 236u8, 82u8, 55u8, 83u8, 159u8, 105u8, + 20u8, 241u8, 118u8, 58u8, 141u8, 103u8, 60u8, 246u8, 49u8, 121u8, + 183u8, 7u8, 203u8, 225u8, 67u8, 132u8, 79u8, 150u8, 107u8, 71u8, 89u8, ], ) } - #[doc = " Votes on a given proposal, if it is ongoing."] - pub fn voting_iter( + #[doc = " The sorted list of referenda ready to be decided but not yet being decided, ordered by"] + #[doc = " conviction-weighted approvals."] + #[doc = ""] + #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] + pub fn track_queue_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_collective::Votes< - ::subxt::utils::AccountId32, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( ::core::primitive::u32, - >, - (), + ::core::primitive::u128, + )>, (), ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "Voting", - vec![], + "Referenda", + "TrackQueue", + Vec::new(), [ - 109u8, 198u8, 2u8, 13u8, 29u8, 14u8, 241u8, 217u8, 55u8, 147u8, 147u8, - 4u8, 176u8, 69u8, 132u8, 228u8, 158u8, 203u8, 110u8, 239u8, 158u8, - 137u8, 97u8, 46u8, 228u8, 118u8, 251u8, 201u8, 88u8, 208u8, 94u8, - 132u8, + 125u8, 59u8, 111u8, 68u8, 27u8, 236u8, 82u8, 55u8, 83u8, 159u8, 105u8, + 20u8, 241u8, 118u8, 58u8, 141u8, 103u8, 60u8, 246u8, 49u8, 121u8, + 183u8, 7u8, 203u8, 225u8, 67u8, 132u8, 79u8, 150u8, 107u8, 71u8, 89u8, ], ) } - #[doc = " Votes on a given proposal, if it is ongoing."] - pub fn voting( + #[doc = " The number of referenda being decided currently."] + pub fn deciding_count( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_collective::Votes< - ::subxt::utils::AccountId32, - ::core::primitive::u32, - >, + ::core::primitive::u32, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), - (), > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "Voting", + "Referenda", + "DecidingCount", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 109u8, 198u8, 2u8, 13u8, 29u8, 14u8, 241u8, 217u8, 55u8, 147u8, 147u8, - 4u8, 176u8, 69u8, 132u8, 228u8, 158u8, 203u8, 110u8, 239u8, 158u8, - 137u8, 97u8, 46u8, 228u8, 118u8, 251u8, 201u8, 88u8, 208u8, 94u8, - 132u8, + 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, + 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, + 103u8, 47u8, 252u8, 126u8, 108u8, 166u8, 69u8, 252u8, 179u8, 126u8, + 245u8, ], ) } - #[doc = " Proposals so far."] - pub fn proposal_count( + #[doc = " The number of referenda being decided currently."] + pub fn deciding_count_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "ProposalCount", - vec![], + "Referenda", + "DecidingCount", + Vec::new(), [ - 91u8, 238u8, 246u8, 106u8, 95u8, 66u8, 83u8, 134u8, 1u8, 225u8, 164u8, - 216u8, 113u8, 101u8, 203u8, 200u8, 113u8, 97u8, 246u8, 228u8, 140u8, - 29u8, 29u8, 48u8, 176u8, 137u8, 93u8, 230u8, 56u8, 75u8, 51u8, 149u8, + 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, + 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, + 103u8, 47u8, 252u8, 126u8, 108u8, 166u8, 69u8, 252u8, 179u8, 126u8, + 245u8, ], ) } - #[doc = " The current members of the collective. This is stored sorted (just by value)."] - pub fn members( + #[doc = " The metadata is a general information concerning the referendum."] + #[doc = " The `Hash` refers to the preimage of the `Preimages` provider which can be a JSON"] + #[doc = " dump or IPFS hash of a JSON file."] + #[doc = ""] + #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] + #[doc = " large preimages."] + pub fn metadata_of( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::subxt::utils::AccountId32>, - ::subxt::storage::address::Yes, + ::subxt::utils::H256, ::subxt::storage::address::Yes, (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "Members", - vec![], + "Referenda", + "MetadataOf", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 16u8, 29u8, 32u8, 222u8, 175u8, 136u8, 111u8, 101u8, 43u8, 74u8, 209u8, - 81u8, 47u8, 97u8, 129u8, 39u8, 225u8, 243u8, 110u8, 229u8, 237u8, 21u8, - 90u8, 127u8, 80u8, 239u8, 156u8, 32u8, 90u8, 109u8, 179u8, 0u8, + 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, + 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, + 45u8, 193u8, 72u8, 200u8, 164u8, 39u8, 207u8, 224u8, 124u8, 191u8, + 110u8, ], ) } - #[doc = " The prime member that helps determine the default vote behavior in case of absentations."] - pub fn prime( + #[doc = " The metadata is a general information concerning the referendum."] + #[doc = " The `Hash` refers to the preimage of the `Preimages` provider which can be a JSON"] + #[doc = " dump or IPFS hash of a JSON file."] + #[doc = ""] + #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] + #[doc = " large preimages."] + pub fn metadata_of_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::AccountId32, - ::subxt::storage::address::Yes, + ::subxt::utils::H256, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "TechnicalCommittee", - "Prime", - vec![], + "Referenda", + "MetadataOf", + Vec::new(), [ - 72u8, 128u8, 214u8, 72u8, 78u8, 80u8, 100u8, 198u8, 114u8, 215u8, 59u8, - 3u8, 103u8, 14u8, 152u8, 202u8, 12u8, 165u8, 224u8, 10u8, 41u8, 154u8, - 77u8, 95u8, 116u8, 143u8, 250u8, 250u8, 176u8, 92u8, 238u8, 154u8, + 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, + 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, + 45u8, 193u8, 72u8, 200u8, 164u8, 39u8, 207u8, 224u8, 124u8, 191u8, + 110u8, ], ) } @@ -11197,31 +10976,98 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The maximum weight of a dispatch call that can be proposed and executed."] - pub fn max_proposal_weight( + #[doc = " The minimum amount to be used as a deposit for a public referendum proposal."] + pub fn submission_deposit( &self, - ) -> ::subxt::constants::Address - { + ) -> ::subxt::constants::Address<::core::primitive::u128> { ::subxt::constants::Address::new_static( - "TechnicalCommittee", - "MaxProposalWeight", + "Referenda", + "SubmissionDeposit", [ - 149u8, 252u8, 129u8, 80u8, 169u8, 36u8, 79u8, 127u8, 240u8, 156u8, - 56u8, 202u8, 219u8, 86u8, 5u8, 65u8, 245u8, 148u8, 138u8, 243u8, 210u8, - 128u8, 234u8, 216u8, 240u8, 219u8, 123u8, 235u8, 21u8, 158u8, 237u8, - 112u8, + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + ], + ) + } + #[doc = " Maximum size of the referendum queue for a single track."] + pub fn max_queued(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Referenda", + "MaxQueued", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The number of blocks after submission that a referendum must begin being decided by."] + #[doc = " Once this passes, then anyone may cancel the referendum."] + pub fn undeciding_timeout( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Referenda", + "UndecidingTimeout", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Quantization level for the referendum wakeup scheduler. A higher number will result in"] + #[doc = " fewer storage reads/writes needed for smaller voters, but also result in delays to the"] + #[doc = " automatic referendum status changes. Explicit servicing instructions are unaffected."] + pub fn alarm_interval( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Referenda", + "AlarmInterval", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Information concerning the different referendum tracks."] + pub fn tracks( + &self, + ) -> ::subxt::constants::Address< + ::std::vec::Vec<( + ::core::primitive::u16, + runtime_types::pallet_referenda::types::TrackInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + )>, + > { + ::subxt::constants::Address::new_static( + "Referenda", + "Tracks", + [ + 35u8, 226u8, 207u8, 234u8, 184u8, 139u8, 187u8, 184u8, 128u8, 199u8, + 227u8, 15u8, 31u8, 196u8, 5u8, 207u8, 138u8, 174u8, 130u8, 201u8, + 200u8, 113u8, 86u8, 93u8, 221u8, 243u8, 229u8, 24u8, 18u8, 150u8, 56u8, + 159u8, ], ) } } } } - pub mod phragmen_election { + pub mod fellowship_collective { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_elections_phragmen::pallet::Error; + pub type Error = runtime_types::pallet_ranked_collective::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_elections_phragmen::pallet::Call; + pub type Call = runtime_types::pallet_ranked_collective::pallet::Call; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -11237,14 +11083,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Vote { - pub votes: ::std::vec::Vec<::subxt::utils::AccountId32>, - #[codec(compact)] - pub value: ::core::primitive::u128, + pub struct AddMember { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, } - impl ::subxt::blocks::StaticExtrinsic for Vote { - const PALLET: &'static str = "PhragmenElection"; - const CALL: &'static str = "vote"; + impl ::subxt::blocks::StaticExtrinsic for AddMember { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "add_member"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11256,10 +11100,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RemoveVoter; - impl ::subxt::blocks::StaticExtrinsic for RemoveVoter { - const PALLET: &'static str = "PhragmenElection"; - const CALL: &'static str = "remove_voter"; + pub struct PromoteMember { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for PromoteMember { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "promote_member"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11271,13 +11117,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SubmitCandidacy { - #[codec(compact)] - pub candidate_count: ::core::primitive::u32, + pub struct DemoteMember { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, } - impl ::subxt::blocks::StaticExtrinsic for SubmitCandidacy { - const PALLET: &'static str = "PhragmenElection"; - const CALL: &'static str = "submit_candidacy"; + impl ::subxt::blocks::StaticExtrinsic for DemoteMember { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "demote_member"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11289,12 +11134,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RenounceCandidacy { - pub renouncing: runtime_types::pallet_elections_phragmen::Renouncing, + pub struct RemoveMember { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub min_rank: ::core::primitive::u16, } - impl ::subxt::blocks::StaticExtrinsic for RenounceCandidacy { - const PALLET: &'static str = "PhragmenElection"; - const CALL: &'static str = "renounce_candidacy"; + impl ::subxt::blocks::StaticExtrinsic for RemoveMember { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "remove_member"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11306,14 +11152,31 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RemoveMember { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - pub slash_bond: ::core::primitive::bool, - pub rerun_election: ::core::primitive::bool, + pub struct Vote { + pub poll: ::core::primitive::u32, + pub aye: ::core::primitive::bool, } - impl ::subxt::blocks::StaticExtrinsic for RemoveMember { - const PALLET: &'static str = "PhragmenElection"; - const CALL: &'static str = "remove_member"; + impl ::subxt::blocks::StaticExtrinsic for Vote { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "vote"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CleanupPoll { + pub poll_index: ::core::primitive::u32, + pub max: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for CleanupPoll { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "cleanup_poll"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11325,121 +11188,187 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CleanDefunctVoters { - pub num_voters: ::core::primitive::u32, - pub num_defunct: ::core::primitive::u32, + pub struct ExchangeMember { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub new_who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, } - impl ::subxt::blocks::StaticExtrinsic for CleanDefunctVoters { - const PALLET: &'static str = "PhragmenElection"; - const CALL: &'static str = "clean_defunct_voters"; + impl ::subxt::blocks::StaticExtrinsic for ExchangeMember { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "exchange_member"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::vote`]."] - pub fn vote( + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] + pub fn add_member( &self, - votes: ::std::vec::Vec<::subxt::utils::AccountId32>, - value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "PhragmenElection", - "vote", - types::Vote { votes, value }, + "FellowshipCollective", + "add_member", + types::AddMember { who }, [ - 229u8, 163u8, 1u8, 49u8, 26u8, 130u8, 7u8, 228u8, 34u8, 80u8, 17u8, - 125u8, 32u8, 180u8, 174u8, 69u8, 17u8, 171u8, 163u8, 54u8, 42u8, 139u8, - 201u8, 205u8, 196u8, 18u8, 16u8, 211u8, 252u8, 64u8, 73u8, 5u8, + 2u8, 131u8, 37u8, 217u8, 112u8, 46u8, 86u8, 165u8, 248u8, 244u8, 33u8, + 236u8, 155u8, 28u8, 163u8, 169u8, 213u8, 32u8, 70u8, 217u8, 97u8, + 194u8, 138u8, 77u8, 133u8, 97u8, 188u8, 49u8, 49u8, 31u8, 177u8, 206u8, ], ) } - #[doc = "See [`Pallet::remove_voter`]."] - pub fn remove_voter(&self) -> ::subxt::tx::Payload { + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] + pub fn promote_member( + &self, + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "PhragmenElection", - "remove_voter", - types::RemoveVoter {}, + "FellowshipCollective", + "promote_member", + types::PromoteMember { who }, [ - 89u8, 43u8, 70u8, 117u8, 76u8, 84u8, 230u8, 114u8, 229u8, 91u8, 75u8, - 213u8, 47u8, 143u8, 233u8, 47u8, 108u8, 120u8, 171u8, 167u8, 14u8, - 62u8, 52u8, 20u8, 227u8, 106u8, 249u8, 239u8, 33u8, 115u8, 155u8, - 106u8, + 169u8, 155u8, 9u8, 50u8, 144u8, 133u8, 230u8, 60u8, 216u8, 147u8, 3u8, + 236u8, 94u8, 185u8, 106u8, 139u8, 235u8, 143u8, 189u8, 135u8, 208u8, + 176u8, 126u8, 124u8, 85u8, 140u8, 189u8, 125u8, 87u8, 56u8, 57u8, + 246u8, ], ) } - #[doc = "See [`Pallet::submit_candidacy`]."] - pub fn submit_candidacy( + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] + pub fn demote_member( &self, - candidate_count: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "PhragmenElection", - "submit_candidacy", - types::SubmitCandidacy { candidate_count }, + "FellowshipCollective", + "demote_member", + types::DemoteMember { who }, [ - 229u8, 169u8, 247u8, 102u8, 33u8, 7u8, 9u8, 125u8, 190u8, 179u8, 241u8, - 220u8, 205u8, 242u8, 168u8, 112u8, 197u8, 169u8, 135u8, 133u8, 102u8, - 173u8, 168u8, 203u8, 17u8, 135u8, 224u8, 145u8, 101u8, 204u8, 253u8, - 4u8, + 21u8, 185u8, 71u8, 166u8, 106u8, 88u8, 74u8, 251u8, 78u8, 28u8, 205u8, + 171u8, 199u8, 195u8, 97u8, 149u8, 175u8, 229u8, 25u8, 113u8, 96u8, + 25u8, 240u8, 64u8, 109u8, 246u8, 203u8, 45u8, 110u8, 205u8, 115u8, + 178u8, ], ) } - #[doc = "See [`Pallet::renounce_candidacy`]."] - pub fn renounce_candidacy( + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] + pub fn remove_member( &self, - renouncing: runtime_types::pallet_elections_phragmen::Renouncing, - ) -> ::subxt::tx::Payload { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + min_rank: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "PhragmenElection", - "renounce_candidacy", - types::RenounceCandidacy { renouncing }, + "FellowshipCollective", + "remove_member", + types::RemoveMember { who, min_rank }, [ - 230u8, 140u8, 205u8, 240u8, 110u8, 247u8, 242u8, 185u8, 228u8, 135u8, - 243u8, 73u8, 71u8, 200u8, 88u8, 134u8, 132u8, 174u8, 190u8, 251u8, - 81u8, 85u8, 174u8, 230u8, 94u8, 97u8, 96u8, 230u8, 15u8, 204u8, 247u8, - 214u8, + 23u8, 156u8, 32u8, 64u8, 158u8, 50u8, 64u8, 199u8, 108u8, 67u8, 133u8, + 128u8, 138u8, 241u8, 14u8, 238u8, 192u8, 173u8, 250u8, 11u8, 124u8, + 119u8, 177u8, 190u8, 152u8, 116u8, 134u8, 42u8, 216u8, 49u8, 113u8, + 49u8, ], ) } - #[doc = "See [`Pallet::remove_member`]."] - pub fn remove_member( + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] + pub fn vote( &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - slash_bond: ::core::primitive::bool, - rerun_election: ::core::primitive::bool, - ) -> ::subxt::tx::Payload { + poll: ::core::primitive::u32, + aye: ::core::primitive::bool, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "PhragmenElection", - "remove_member", - types::RemoveMember { who, slash_bond, rerun_election }, + "FellowshipCollective", + "vote", + types::Vote { poll, aye }, + [ + 54u8, 116u8, 81u8, 239u8, 223u8, 35u8, 11u8, 244u8, 245u8, 94u8, 23u8, + 241u8, 125u8, 231u8, 56u8, 150u8, 105u8, 125u8, 100u8, 171u8, 182u8, + 186u8, 134u8, 40u8, 4u8, 121u8, 119u8, 11u8, 93u8, 158u8, 59u8, 209u8, + ], + ) + } + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] + pub fn cleanup_poll( + &self, + poll_index: ::core::primitive::u32, + max: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "FellowshipCollective", + "cleanup_poll", + types::CleanupPoll { poll_index, max }, [ - 230u8, 64u8, 250u8, 74u8, 77u8, 87u8, 67u8, 109u8, 160u8, 123u8, 236u8, - 144u8, 158u8, 95u8, 32u8, 80u8, 151u8, 10u8, 217u8, 128u8, 233u8, - 254u8, 255u8, 229u8, 57u8, 191u8, 56u8, 29u8, 23u8, 11u8, 45u8, 194u8, + 157u8, 109u8, 86u8, 253u8, 62u8, 107u8, 235u8, 255u8, 171u8, 68u8, + 103u8, 92u8, 245u8, 25u8, 252u8, 158u8, 174u8, 137u8, 77u8, 251u8, + 105u8, 113u8, 165u8, 46u8, 39u8, 55u8, 166u8, 79u8, 103u8, 81u8, 121u8, + 37u8, ], ) } - #[doc = "See [`Pallet::clean_defunct_voters`]."] - pub fn clean_defunct_voters( + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] + pub fn exchange_member( &self, - num_voters: ::core::primitive::u32, - num_defunct: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new_who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "PhragmenElection", - "clean_defunct_voters", - types::CleanDefunctVoters { num_voters, num_defunct }, + "FellowshipCollective", + "exchange_member", + types::ExchangeMember { who, new_who }, [ - 99u8, 129u8, 198u8, 141u8, 41u8, 90u8, 151u8, 167u8, 50u8, 236u8, 88u8, - 57u8, 25u8, 26u8, 130u8, 61u8, 123u8, 177u8, 98u8, 57u8, 39u8, 204u8, - 29u8, 24u8, 191u8, 229u8, 224u8, 110u8, 223u8, 248u8, 191u8, 177u8, + 240u8, 208u8, 76u8, 147u8, 117u8, 23u8, 91u8, 37u8, 22u8, 101u8, 53u8, + 247u8, 161u8, 94u8, 109u8, 233u8, 104u8, 129u8, 67u8, 31u8, 223u8, + 182u8, 50u8, 233u8, 120u8, 129u8, 224u8, 135u8, 52u8, 162u8, 26u8, + 189u8, ], ) } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_elections_phragmen::pallet::Event; + pub type Event = runtime_types::pallet_ranked_collective::pallet::Event; pub mod events { use super::runtime_types; #[derive( @@ -11452,51 +11381,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A new term with new_members. This indicates that enough candidates existed to run"] - #[doc = "the election, not that enough have has been elected. The inner value must be examined"] - #[doc = "for this purpose. A `NewTerm(\\[\\])` indicates that some candidates got their bond"] - #[doc = "slashed and none were elected, whilst `EmptyTerm` means that no candidates existed to"] - #[doc = "begin with."] - pub struct NewTerm { - pub new_members: - ::std::vec::Vec<(::subxt::utils::AccountId32, ::core::primitive::u128)>, - } - impl ::subxt::events::StaticEvent for NewTerm { - const PALLET: &'static str = "PhragmenElection"; - const EVENT: &'static str = "NewTerm"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "No (or not enough) candidates existed for this round. This is different from"] - #[doc = "`NewTerm(\\[\\])`. See the description of `NewTerm`."] - pub struct EmptyTerm; - impl ::subxt::events::StaticEvent for EmptyTerm { - const PALLET: &'static str = "PhragmenElection"; - const EVENT: &'static str = "EmptyTerm"; + #[doc = "A member `who` has been added."] + pub struct MemberAdded { + pub who: ::subxt::utils::AccountId32, } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Internal error happened while trying to perform election."] - pub struct ElectionError; - impl ::subxt::events::StaticEvent for ElectionError { - const PALLET: &'static str = "PhragmenElection"; - const EVENT: &'static str = "ElectionError"; + impl ::subxt::events::StaticEvent for MemberAdded { + const PALLET: &'static str = "FellowshipCollective"; + const EVENT: &'static str = "MemberAdded"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11508,14 +11399,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A member has been removed. This should always be followed by either `NewTerm` or"] - #[doc = "`EmptyTerm`."] - pub struct MemberKicked { - pub member: ::subxt::utils::AccountId32, + #[doc = "The member `who`se rank has been changed to the given `rank`."] + pub struct RankChanged { + pub who: ::subxt::utils::AccountId32, + pub rank: ::core::primitive::u16, } - impl ::subxt::events::StaticEvent for MemberKicked { - const PALLET: &'static str = "PhragmenElection"; - const EVENT: &'static str = "MemberKicked"; + impl ::subxt::events::StaticEvent for RankChanged { + const PALLET: &'static str = "FellowshipCollective"; + const EVENT: &'static str = "RankChanged"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11527,13 +11418,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Someone has renounced their candidacy."] - pub struct Renounced { - pub candidate: ::subxt::utils::AccountId32, + #[doc = "The member `who` of given `rank` has been removed from the collective."] + pub struct MemberRemoved { + pub who: ::subxt::utils::AccountId32, + pub rank: ::core::primitive::u16, } - impl ::subxt::events::StaticEvent for Renounced { - const PALLET: &'static str = "PhragmenElection"; - const EVENT: &'static str = "Renounced"; + impl ::subxt::events::StaticEvent for MemberRemoved { + const PALLET: &'static str = "FellowshipCollective"; + const EVENT: &'static str = "MemberRemoved"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11545,17 +11437,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A candidate was slashed by amount due to failing to obtain a seat as member or"] - #[doc = "runner-up."] - #[doc = ""] - #[doc = "Note that old members and runners-up are also candidates."] - pub struct CandidateSlashed { - pub candidate: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, + #[doc = "The member `who` has voted for the `poll` with the given `vote` leading to an updated"] + #[doc = "`tally`."] + pub struct Voted { + pub who: ::subxt::utils::AccountId32, + pub poll: ::core::primitive::u32, + pub vote: runtime_types::pallet_ranked_collective::VoteRecord, + pub tally: runtime_types::pallet_ranked_collective::Tally, } - impl ::subxt::events::StaticEvent for CandidateSlashed { - const PALLET: &'static str = "PhragmenElection"; - const EVENT: &'static str = "CandidateSlashed"; + impl ::subxt::events::StaticEvent for Voted { + const PALLET: &'static str = "FellowshipCollective"; + const EVENT: &'static str = "Voted"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -11567,353 +11459,311 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A seat holder was slashed by amount by being forcefully removed from the set."] - pub struct SeatHolderSlashed { - pub seat_holder: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, + #[doc = "The member `who` had their `AccountId` changed to `new_who`."] + pub struct MemberExchanged { + pub who: ::subxt::utils::AccountId32, + pub new_who: ::subxt::utils::AccountId32, } - impl ::subxt::events::StaticEvent for SeatHolderSlashed { - const PALLET: &'static str = "PhragmenElection"; - const EVENT: &'static str = "SeatHolderSlashed"; + impl ::subxt::events::StaticEvent for MemberExchanged { + const PALLET: &'static str = "FellowshipCollective"; + const EVENT: &'static str = "MemberExchanged"; } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The current elected members."] - #[doc = ""] - #[doc = " Invariant: Always sorted based on account id."] - pub fn members( + #[doc = " The number of members in the collective who have at least the rank according to the index"] + #[doc = " of the vec."] + pub fn member_count( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec< - runtime_types::pallet_elections_phragmen::SeatHolder< - ::subxt::utils::AccountId32, - ::core::primitive::u128, - >, - >, + ::core::primitive::u32, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( - "PhragmenElection", - "Members", - vec![], + "FellowshipCollective", + "MemberCount", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 121u8, 128u8, 120u8, 242u8, 54u8, 127u8, 90u8, 113u8, 74u8, 54u8, - 181u8, 207u8, 213u8, 130u8, 123u8, 238u8, 66u8, 247u8, 177u8, 209u8, - 47u8, 106u8, 3u8, 130u8, 57u8, 217u8, 190u8, 164u8, 92u8, 223u8, 53u8, - 8u8, + 0u8, 141u8, 66u8, 91u8, 155u8, 74u8, 17u8, 191u8, 143u8, 41u8, 231u8, + 56u8, 123u8, 219u8, 145u8, 27u8, 197u8, 62u8, 118u8, 237u8, 30u8, 7u8, + 107u8, 96u8, 95u8, 17u8, 242u8, 206u8, 246u8, 79u8, 53u8, 214u8, ], ) } - #[doc = " The current reserved runners-up."] - #[doc = ""] - #[doc = " Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the"] - #[doc = " last (i.e. _best_) runner-up will be replaced."] - pub fn runners_up( + #[doc = " The number of members in the collective who have at least the rank according to the index"] + #[doc = " of the vec."] + pub fn member_count_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec< - runtime_types::pallet_elections_phragmen::SeatHolder< - ::subxt::utils::AccountId32, - ::core::primitive::u128, - >, - >, + ::core::primitive::u32, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( - "PhragmenElection", - "RunnersUp", - vec![], + "FellowshipCollective", + "MemberCount", + Vec::new(), [ - 252u8, 213u8, 152u8, 58u8, 93u8, 84u8, 170u8, 162u8, 180u8, 51u8, 52u8, - 156u8, 18u8, 58u8, 210u8, 150u8, 76u8, 159u8, 75u8, 43u8, 103u8, 21u8, - 181u8, 184u8, 155u8, 198u8, 236u8, 173u8, 245u8, 49u8, 134u8, 153u8, + 0u8, 141u8, 66u8, 91u8, 155u8, 74u8, 17u8, 191u8, 143u8, 41u8, 231u8, + 56u8, 123u8, 219u8, 145u8, 27u8, 197u8, 62u8, 118u8, 237u8, 30u8, 7u8, + 107u8, 96u8, 95u8, 17u8, 242u8, 206u8, 246u8, 79u8, 53u8, 214u8, ], ) } - #[doc = " The present candidate list. A current member or runner-up can never enter this vector"] - #[doc = " and is always implicitly assumed to be a candidate."] - #[doc = ""] - #[doc = " Second element is the deposit."] - #[doc = ""] - #[doc = " Invariant: Always sorted based on account id."] - pub fn candidates( + #[doc = " The current members of the collective."] + pub fn members( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<(::subxt::utils::AccountId32, ::core::primitive::u128)>, - ::subxt::storage::address::Yes, + runtime_types::pallet_ranked_collective::MemberRecord, ::subxt::storage::address::Yes, (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "PhragmenElection", - "Candidates", - vec![], + "FellowshipCollective", + "Members", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 220u8, 219u8, 115u8, 204u8, 15u8, 0u8, 135u8, 72u8, 241u8, 89u8, 10u8, - 105u8, 106u8, 93u8, 18u8, 63u8, 43u8, 117u8, 120u8, 73u8, 8u8, 143u8, - 244u8, 144u8, 223u8, 155u8, 217u8, 132u8, 246u8, 228u8, 210u8, 53u8, + 101u8, 183u8, 36u8, 241u8, 67u8, 8u8, 252u8, 116u8, 110u8, 153u8, + 117u8, 210u8, 128u8, 80u8, 130u8, 163u8, 38u8, 76u8, 230u8, 107u8, + 112u8, 90u8, 102u8, 24u8, 217u8, 2u8, 244u8, 197u8, 103u8, 215u8, + 247u8, 133u8, ], ) } - #[doc = " The total number of vote rounds that have happened, excluding the upcoming one."] - pub fn election_rounds( + #[doc = " The current members of the collective."] + pub fn members_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + runtime_types::pallet_ranked_collective::MemberRecord, (), + (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "PhragmenElection", - "ElectionRounds", - vec![], + "FellowshipCollective", + "Members", + Vec::new(), [ - 97u8, 151u8, 159u8, 133u8, 59u8, 215u8, 12u8, 178u8, 203u8, 24u8, - 138u8, 36u8, 108u8, 134u8, 217u8, 137u8, 24u8, 6u8, 126u8, 87u8, 49u8, - 90u8, 198u8, 16u8, 36u8, 109u8, 223u8, 190u8, 81u8, 7u8, 239u8, 243u8, + 101u8, 183u8, 36u8, 241u8, 67u8, 8u8, 252u8, 116u8, 110u8, 153u8, + 117u8, 210u8, 128u8, 80u8, 130u8, 163u8, 38u8, 76u8, 230u8, 107u8, + 112u8, 90u8, 102u8, 24u8, 217u8, 2u8, 244u8, 197u8, 103u8, 215u8, + 247u8, 133u8, ], ) } - #[doc = " Votes and locked stake of a particular voter."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] - pub fn voting_iter( + #[doc = " The index of each ranks's member into the group of members who have at least that rank."] + pub fn id_to_index( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_elections_phragmen::Voter< - ::subxt::utils::AccountId32, - ::core::primitive::u128, - >, - (), + ::core::primitive::u32, ::subxt::storage::address::Yes, + (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "PhragmenElection", - "Voting", - vec![], + "FellowshipCollective", + "IdToIndex", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ - 37u8, 74u8, 221u8, 188u8, 168u8, 43u8, 125u8, 246u8, 191u8, 21u8, 85u8, - 87u8, 124u8, 180u8, 218u8, 43u8, 186u8, 170u8, 140u8, 186u8, 88u8, - 71u8, 111u8, 22u8, 46u8, 207u8, 178u8, 96u8, 55u8, 203u8, 21u8, 92u8, + 121u8, 225u8, 69u8, 131u8, 194u8, 3u8, 82u8, 27u8, 129u8, 152u8, 157u8, + 45u8, 39u8, 47u8, 166u8, 28u8, 42u8, 92u8, 217u8, 189u8, 160u8, 102u8, + 153u8, 196u8, 94u8, 48u8, 248u8, 113u8, 164u8, 111u8, 27u8, 9u8, ], ) } - #[doc = " Votes and locked stake of a particular voter."] - #[doc = ""] - #[doc = " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] - pub fn voting( + #[doc = " The index of each ranks's member into the group of members who have at least that rank."] + pub fn id_to_index_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_elections_phragmen::Voter< - ::subxt::utils::AccountId32, - ::core::primitive::u128, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, + ::core::primitive::u32, + (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "PhragmenElection", - "Voting", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + "FellowshipCollective", + "IdToIndex", + Vec::new(), [ - 37u8, 74u8, 221u8, 188u8, 168u8, 43u8, 125u8, 246u8, 191u8, 21u8, 85u8, - 87u8, 124u8, 180u8, 218u8, 43u8, 186u8, 170u8, 140u8, 186u8, 88u8, - 71u8, 111u8, 22u8, 46u8, 207u8, 178u8, 96u8, 55u8, 203u8, 21u8, 92u8, + 121u8, 225u8, 69u8, 131u8, 194u8, 3u8, 82u8, 27u8, 129u8, 152u8, 157u8, + 45u8, 39u8, 47u8, 166u8, 28u8, 42u8, 92u8, 217u8, 189u8, 160u8, 102u8, + 153u8, 196u8, 94u8, 48u8, 248u8, 113u8, 164u8, 111u8, 27u8, 9u8, ], ) } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " Identifier for the elections-phragmen pallet's lock"] - pub fn pallet_id( + #[doc = " The members in the collective by index. All indices in the range `0..MemberCount` will"] + #[doc = " return `Some`, however a member's index is not guaranteed to remain unchanged over time."] + pub fn index_to_id( &self, - ) -> ::subxt::constants::Address<[::core::primitive::u8; 8usize]> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "PalletId", - [ - 157u8, 118u8, 79u8, 88u8, 241u8, 22u8, 185u8, 37u8, 42u8, 20u8, 133u8, - 240u8, 11u8, 25u8, 66u8, 154u8, 84u8, 163u8, 78u8, 92u8, 171u8, 82u8, - 248u8, 76u8, 189u8, 70u8, 142u8, 249u8, 153u8, 84u8, 180u8, 60u8, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipCollective", + "IndexToId", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], - ) - } - #[doc = " How much should be locked up in order to submit one's candidacy."] - pub fn candidacy_bond( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "CandidacyBond", [ - 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, - 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, - 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + 110u8, 48u8, 214u8, 224u8, 56u8, 195u8, 186u8, 24u8, 111u8, 37u8, 15u8, + 153u8, 245u8, 101u8, 229u8, 149u8, 216u8, 185u8, 7u8, 242u8, 196u8, + 29u8, 205u8, 243u8, 162u8, 92u8, 71u8, 253u8, 102u8, 152u8, 137u8, + 70u8, ], ) } - #[doc = " Base deposit associated with voting."] - #[doc = ""] - #[doc = " This should be sensibly high to economically ensure the pallet cannot be attacked by"] - #[doc = " creating a gigantic number of votes."] - pub fn voting_bond_base( + #[doc = " The members in the collective by index. All indices in the range `0..MemberCount` will"] + #[doc = " return `Some`, however a member's index is not guaranteed to remain unchanged over time."] + pub fn index_to_id_root( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "VotingBondBase", + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipCollective", + "IndexToId", + Vec::new(), [ - 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, - 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, - 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + 110u8, 48u8, 214u8, 224u8, 56u8, 195u8, 186u8, 24u8, 111u8, 37u8, 15u8, + 153u8, 245u8, 101u8, 229u8, 149u8, 216u8, 185u8, 7u8, 242u8, 196u8, + 29u8, 205u8, 243u8, 162u8, 92u8, 71u8, 253u8, 102u8, 152u8, 137u8, + 70u8, ], ) } - #[doc = " The amount of bond that need to be locked for each vote (32 bytes)."] - pub fn voting_bond_factor( + #[doc = " Votes on a given proposal, if it is ongoing."] + pub fn voting( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "VotingBondFactor", - [ - 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, - 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, - 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_ranked_collective::VoteRecord, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipCollective", + "Voting", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], - ) - } - #[doc = " Number of members to elect."] - pub fn desired_members( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "DesiredMembers", [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 180u8, 146u8, 236u8, 178u8, 30u8, 50u8, 161u8, 50u8, 140u8, 110u8, + 220u8, 1u8, 109u8, 209u8, 17u8, 94u8, 234u8, 223u8, 222u8, 177u8, + 243u8, 194u8, 246u8, 48u8, 178u8, 86u8, 30u8, 185u8, 56u8, 206u8, + 175u8, 18u8, ], ) } - #[doc = " Number of runners_up to keep."] - pub fn desired_runners_up( + #[doc = " Votes on a given proposal, if it is ongoing."] + pub fn voting_root( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "DesiredRunnersUp", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " How long each seat is kept. This defines the next block number at which an election"] - #[doc = " round will happen. If set to zero, no elections are ever triggered and the module will"] - #[doc = " be in passive mode."] - pub fn term_duration(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "TermDuration", + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_ranked_collective::VoteRecord, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipCollective", + "Voting", + Vec::new(), [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 180u8, 146u8, 236u8, 178u8, 30u8, 50u8, 161u8, 50u8, 140u8, 110u8, + 220u8, 1u8, 109u8, 209u8, 17u8, 94u8, 234u8, 223u8, 222u8, 177u8, + 243u8, 194u8, 246u8, 48u8, 178u8, 86u8, 30u8, 185u8, 56u8, 206u8, + 175u8, 18u8, ], ) } - #[doc = " The maximum number of candidates in a phragmen election."] - #[doc = ""] - #[doc = " Warning: This impacts the size of the election which is run onchain. Chose wisely, and"] - #[doc = " consider how it will impact `T::WeightInfo::election_phragmen`."] - #[doc = ""] - #[doc = " When this limit is reached no more candidates are accepted in the election."] - pub fn max_candidates( + pub fn voting_cleanup( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "MaxCandidates", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of voters to allow in a phragmen election."] - #[doc = ""] - #[doc = " Warning: This impacts the size of the election which is run onchain. Chose wisely, and"] - #[doc = " consider how it will impact `T::WeightInfo::election_phragmen`."] - #[doc = ""] - #[doc = " When the limit is reached the new voters are ignored."] - pub fn max_voters(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "MaxVoters", + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipCollective", + "VotingCleanup", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 223u8, 130u8, 79u8, 104u8, 94u8, 221u8, 222u8, 72u8, 187u8, 95u8, + 231u8, 59u8, 28u8, 119u8, 191u8, 63u8, 40u8, 186u8, 58u8, 254u8, 14u8, + 233u8, 152u8, 36u8, 2u8, 231u8, 120u8, 13u8, 120u8, 211u8, 232u8, 11u8, ], ) } - #[doc = " Maximum numbers of votes per voter."] - #[doc = ""] - #[doc = " Warning: This impacts the size of the election which is run onchain. Chose wisely, and"] - #[doc = " consider how it will impact `T::WeightInfo::election_phragmen`."] - pub fn max_votes_per_voter( + pub fn voting_cleanup_root( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "PhragmenElection", - "MaxVotesPerVoter", + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipCollective", + "VotingCleanup", + Vec::new(), [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 223u8, 130u8, 79u8, 104u8, 94u8, 221u8, 222u8, 72u8, 187u8, 95u8, + 231u8, 59u8, 28u8, 119u8, 191u8, 63u8, 40u8, 186u8, 58u8, 254u8, 14u8, + 233u8, 152u8, 36u8, 2u8, 231u8, 120u8, 13u8, 120u8, 211u8, 232u8, 11u8, ], ) } } } } - pub mod technical_membership { + pub mod fellowship_referenda { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_membership::pallet::Error; + pub type Error = runtime_types::pallet_referenda::pallet::Error2; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_membership::pallet::Call; + pub type Call = runtime_types::pallet_referenda::pallet::Call2; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -11929,14 +11779,24 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct AddMember { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct Submit { + pub proposal_origin: + ::std::boxed::Box, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + pub enactment_moment: + runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, } - impl ::subxt::blocks::StaticExtrinsic for AddMember { - const PALLET: &'static str = "TechnicalMembership"; - const CALL: &'static str = "add_member"; + impl ::subxt::blocks::StaticExtrinsic for Submit { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "submit"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -11946,14 +11806,33 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RemoveMember { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct PlaceDecisionDeposit { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for RemoveMember { - const PALLET: &'static str = "TechnicalMembership"; - const CALL: &'static str = "remove_member"; + impl ::subxt::blocks::StaticExtrinsic for PlaceDecisionDeposit { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "place_decision_deposit"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RefundDecisionDeposit { + pub index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for RefundDecisionDeposit { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "refund_decision_deposit"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -11963,15 +11842,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SwapMember { - pub remove: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - pub add: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct Cancel { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for SwapMember { - const PALLET: &'static str = "TechnicalMembership"; - const CALL: &'static str = "swap_member"; + impl ::subxt::blocks::StaticExtrinsic for Cancel { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "cancel"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -11981,14 +11860,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ResetMembers { - pub members: ::std::vec::Vec<::subxt::utils::AccountId32>, + pub struct Kill { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for ResetMembers { - const PALLET: &'static str = "TechnicalMembership"; - const CALL: &'static str = "reset_members"; + impl ::subxt::blocks::StaticExtrinsic for Kill { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "kill"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -11998,14 +11878,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ChangeKey { - pub new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct NudgeReferendum { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for ChangeKey { - const PALLET: &'static str = "TechnicalMembership"; - const CALL: &'static str = "change_key"; + impl ::subxt::blocks::StaticExtrinsic for NudgeReferendum { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "nudge_referendum"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -12015,12 +11896,30 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetPrime { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct OneFewerDeciding { + pub track: ::core::primitive::u16, + } + impl ::subxt::blocks::StaticExtrinsic for OneFewerDeciding { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "one_fewer_deciding"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RefundSubmissionDeposit { + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for SetPrime { - const PALLET: &'static str = "TechnicalMembership"; - const CALL: &'static str = "set_prime"; + impl ::subxt::blocks::StaticExtrinsic for RefundSubmissionDeposit { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "refund_submission_deposit"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12032,132 +11931,236 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ClearPrime; - impl ::subxt::blocks::StaticExtrinsic for ClearPrime { - const PALLET: &'static str = "TechnicalMembership"; - const CALL: &'static str = "clear_prime"; + pub struct SetMetadata { + pub index: ::core::primitive::u32, + pub maybe_hash: ::core::option::Option<::subxt::utils::H256>, + } + impl ::subxt::blocks::StaticExtrinsic for SetMetadata { + const PALLET: &'static str = "FellowshipReferenda"; + const CALL: &'static str = "set_metadata"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_member`]."] - pub fn add_member( + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] + pub fn submit( &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + proposal_origin: runtime_types::rococo_runtime::OriginCaller, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + enactment_moment: runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalMembership", - "add_member", - types::AddMember { who }, + "FellowshipReferenda", + "submit", + types::Submit { + proposal_origin: ::std::boxed::Box::new(proposal_origin), + proposal, + enactment_moment, + }, [ - 2u8, 131u8, 37u8, 217u8, 112u8, 46u8, 86u8, 165u8, 248u8, 244u8, 33u8, - 236u8, 155u8, 28u8, 163u8, 169u8, 213u8, 32u8, 70u8, 217u8, 97u8, - 194u8, 138u8, 77u8, 133u8, 97u8, 188u8, 49u8, 49u8, 31u8, 177u8, 206u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } - #[doc = "See [`Pallet::remove_member`]."] - pub fn remove_member( + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] + pub fn place_decision_deposit( &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalMembership", - "remove_member", - types::RemoveMember { who }, + "FellowshipReferenda", + "place_decision_deposit", + types::PlaceDecisionDeposit { index }, [ - 78u8, 153u8, 97u8, 110u8, 121u8, 242u8, 112u8, 56u8, 195u8, 217u8, - 10u8, 202u8, 114u8, 134u8, 220u8, 237u8, 198u8, 109u8, 247u8, 85u8, - 156u8, 88u8, 138u8, 79u8, 189u8, 37u8, 230u8, 55u8, 1u8, 27u8, 89u8, - 80u8, + 247u8, 158u8, 55u8, 191u8, 188u8, 200u8, 3u8, 47u8, 20u8, 175u8, 86u8, + 203u8, 52u8, 253u8, 91u8, 131u8, 21u8, 213u8, 56u8, 68u8, 40u8, 84u8, + 184u8, 30u8, 9u8, 193u8, 63u8, 182u8, 178u8, 241u8, 247u8, 220u8, ], ) } - #[doc = "See [`Pallet::swap_member`]."] - pub fn swap_member( + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] + pub fn refund_decision_deposit( &self, - remove: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - add: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalMembership", - "swap_member", - types::SwapMember { remove, add }, + "FellowshipReferenda", + "refund_decision_deposit", + types::RefundDecisionDeposit { index }, [ - 170u8, 68u8, 212u8, 185u8, 186u8, 38u8, 222u8, 227u8, 255u8, 119u8, - 187u8, 170u8, 247u8, 101u8, 138u8, 167u8, 232u8, 33u8, 116u8, 1u8, - 229u8, 171u8, 94u8, 150u8, 193u8, 51u8, 254u8, 106u8, 44u8, 96u8, 28u8, - 88u8, + 159u8, 19u8, 35u8, 216u8, 114u8, 105u8, 18u8, 42u8, 148u8, 151u8, + 136u8, 92u8, 117u8, 30u8, 29u8, 41u8, 238u8, 58u8, 195u8, 91u8, 115u8, + 135u8, 96u8, 99u8, 154u8, 233u8, 8u8, 249u8, 145u8, 165u8, 77u8, 164u8, ], ) } - #[doc = "See [`Pallet::reset_members`]."] - pub fn reset_members( + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] + pub fn cancel( &self, - members: ::std::vec::Vec<::subxt::utils::AccountId32>, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalMembership", - "reset_members", - types::ResetMembers { members }, + "FellowshipReferenda", + "cancel", + types::Cancel { index }, [ - 212u8, 144u8, 99u8, 156u8, 70u8, 4u8, 219u8, 227u8, 150u8, 25u8, 86u8, - 8u8, 215u8, 128u8, 193u8, 206u8, 33u8, 193u8, 71u8, 15u8, 20u8, 92u8, - 99u8, 89u8, 174u8, 236u8, 102u8, 82u8, 164u8, 234u8, 12u8, 45u8, + 55u8, 206u8, 119u8, 156u8, 238u8, 165u8, 193u8, 73u8, 242u8, 13u8, + 212u8, 75u8, 136u8, 156u8, 151u8, 14u8, 35u8, 41u8, 156u8, 107u8, 60u8, + 190u8, 39u8, 216u8, 8u8, 74u8, 213u8, 130u8, 160u8, 131u8, 237u8, + 122u8, ], ) } - #[doc = "See [`Pallet::change_key`]."] - pub fn change_key( + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] + pub fn kill( &self, - new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalMembership", - "change_key", - types::ChangeKey { new }, + "FellowshipReferenda", + "kill", + types::Kill { index }, [ - 129u8, 233u8, 205u8, 107u8, 5u8, 50u8, 160u8, 60u8, 161u8, 248u8, 44u8, - 53u8, 50u8, 141u8, 169u8, 36u8, 182u8, 195u8, 173u8, 142u8, 121u8, - 153u8, 249u8, 234u8, 253u8, 64u8, 110u8, 51u8, 207u8, 127u8, 166u8, - 108u8, + 50u8, 89u8, 57u8, 0u8, 87u8, 129u8, 113u8, 140u8, 179u8, 178u8, 126u8, + 198u8, 92u8, 92u8, 189u8, 64u8, 123u8, 232u8, 57u8, 227u8, 223u8, + 219u8, 73u8, 217u8, 179u8, 44u8, 210u8, 125u8, 180u8, 10u8, 143u8, + 48u8, ], ) } - #[doc = "See [`Pallet::set_prime`]."] - pub fn set_prime( + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] + pub fn nudge_referendum( &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalMembership", - "set_prime", - types::SetPrime { who }, + "FellowshipReferenda", + "nudge_referendum", + types::NudgeReferendum { index }, [ - 213u8, 60u8, 220u8, 4u8, 28u8, 111u8, 6u8, 128u8, 228u8, 150u8, 14u8, - 182u8, 183u8, 94u8, 120u8, 238u8, 15u8, 241u8, 107u8, 152u8, 182u8, - 33u8, 154u8, 203u8, 172u8, 217u8, 31u8, 212u8, 112u8, 158u8, 17u8, - 188u8, + 75u8, 99u8, 172u8, 30u8, 170u8, 150u8, 211u8, 229u8, 249u8, 128u8, + 194u8, 246u8, 100u8, 142u8, 193u8, 184u8, 232u8, 81u8, 29u8, 17u8, + 99u8, 91u8, 236u8, 85u8, 230u8, 226u8, 57u8, 115u8, 45u8, 170u8, 54u8, + 213u8, + ], + ) + } + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] + pub fn one_fewer_deciding( + &self, + track: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "FellowshipReferenda", + "one_fewer_deciding", + types::OneFewerDeciding { track }, + [ + 15u8, 84u8, 79u8, 231u8, 21u8, 239u8, 244u8, 143u8, 183u8, 215u8, + 181u8, 25u8, 225u8, 195u8, 95u8, 171u8, 17u8, 156u8, 182u8, 128u8, + 111u8, 40u8, 151u8, 102u8, 196u8, 55u8, 36u8, 212u8, 89u8, 190u8, + 131u8, 167u8, + ], + ) + } + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] + pub fn refund_submission_deposit( + &self, + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "FellowshipReferenda", + "refund_submission_deposit", + types::RefundSubmissionDeposit { index }, + [ + 20u8, 217u8, 115u8, 6u8, 1u8, 60u8, 54u8, 136u8, 35u8, 41u8, 38u8, + 23u8, 85u8, 100u8, 141u8, 126u8, 30u8, 160u8, 61u8, 46u8, 134u8, 98u8, + 82u8, 38u8, 211u8, 124u8, 208u8, 222u8, 210u8, 10u8, 155u8, 122u8, ], ) } - #[doc = "See [`Pallet::clear_prime`]."] - pub fn clear_prime(&self) -> ::subxt::tx::Payload { + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + pub fn set_metadata( + &self, + index: ::core::primitive::u32, + maybe_hash: ::core::option::Option<::subxt::utils::H256>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "TechnicalMembership", - "clear_prime", - types::ClearPrime {}, + "FellowshipReferenda", + "set_metadata", + types::SetMetadata { index, maybe_hash }, [ - 71u8, 213u8, 34u8, 23u8, 186u8, 63u8, 240u8, 216u8, 190u8, 251u8, 84u8, - 109u8, 140u8, 137u8, 210u8, 211u8, 242u8, 231u8, 212u8, 133u8, 151u8, - 125u8, 25u8, 46u8, 210u8, 53u8, 133u8, 222u8, 21u8, 107u8, 120u8, 52u8, + 207u8, 29u8, 146u8, 233u8, 219u8, 205u8, 88u8, 118u8, 106u8, 61u8, + 124u8, 101u8, 2u8, 41u8, 169u8, 70u8, 114u8, 189u8, 162u8, 118u8, 1u8, + 108u8, 234u8, 98u8, 245u8, 245u8, 183u8, 126u8, 89u8, 13u8, 112u8, + 88u8, ], ) } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_membership::pallet::Event; + pub type Event = runtime_types::pallet_referenda::pallet::Event2; pub mod events { use super::runtime_types; #[derive( @@ -12170,11 +12173,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The given member was added; see the transaction for who."] - pub struct MemberAdded; - impl ::subxt::events::StaticEvent for MemberAdded { - const PALLET: &'static str = "TechnicalMembership"; - const EVENT: &'static str = "MemberAdded"; + #[doc = "A referendum has been submitted."] + pub struct Submitted { + pub index: ::core::primitive::u32, + pub track: ::core::primitive::u16, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + } + impl ::subxt::events::StaticEvent for Submitted { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "Submitted"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12186,11 +12196,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The given member was removed; see the transaction for who."] - pub struct MemberRemoved; - impl ::subxt::events::StaticEvent for MemberRemoved { - const PALLET: &'static str = "TechnicalMembership"; - const EVENT: &'static str = "MemberRemoved"; + #[doc = "The decision deposit has been placed."] + pub struct DecisionDepositPlaced { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DecisionDepositPlaced { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "DecisionDepositPlaced"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12202,11 +12216,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Two members were swapped; see the transaction for who."] - pub struct MembersSwapped; - impl ::subxt::events::StaticEvent for MembersSwapped { - const PALLET: &'static str = "TechnicalMembership"; - const EVENT: &'static str = "MembersSwapped"; + #[doc = "The decision deposit has been refunded."] + pub struct DecisionDepositRefunded { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DecisionDepositRefunded { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "DecisionDepositRefunded"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12218,11 +12236,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The membership was reset; see the transaction for who the new set is."] - pub struct MembersReset; - impl ::subxt::events::StaticEvent for MembersReset { - const PALLET: &'static str = "TechnicalMembership"; - const EVENT: &'static str = "MembersReset"; + #[doc = "A deposit has been slashed."] + pub struct DepositSlashed { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DepositSlashed { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "DepositSlashed"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12234,13 +12255,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "One of the members' keys changed."] - pub struct KeyChanged; - impl ::subxt::events::StaticEvent for KeyChanged { - const PALLET: &'static str = "TechnicalMembership"; - const EVENT: &'static str = "KeyChanged"; + #[doc = "A referendum has moved into the deciding phase."] + pub struct DecisionStarted { + pub index: ::core::primitive::u32, + pub track: ::core::primitive::u16, + pub proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + pub tally: runtime_types::pallet_ranked_collective::Tally, + } + impl ::subxt::events::StaticEvent for DecisionStarted { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "DecisionStarted"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -12250,260 +12280,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Phantom member, never used."] - pub struct Dummy; - impl ::subxt::events::StaticEvent for Dummy { - const PALLET: &'static str = "TechnicalMembership"; - const EVENT: &'static str = "Dummy"; + pub struct ConfirmStarted { + pub index: ::core::primitive::u32, } - } - pub mod storage { - use super::runtime_types; - pub struct StorageApi; - impl StorageApi { - #[doc = " The current membership, stored as an ordered Vec."] - pub fn members( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "TechnicalMembership", - "Members", - vec![], - [ - 109u8, 100u8, 14u8, 195u8, 213u8, 67u8, 44u8, 218u8, 84u8, 254u8, 76u8, - 80u8, 210u8, 155u8, 155u8, 30u8, 18u8, 169u8, 195u8, 92u8, 208u8, - 223u8, 242u8, 97u8, 147u8, 20u8, 168u8, 145u8, 254u8, 115u8, 225u8, - 193u8, - ], - ) - } - #[doc = " The current prime member, if one exists."] - pub fn prime( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::AccountId32, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "TechnicalMembership", - "Prime", - vec![], - [ - 72u8, 128u8, 214u8, 72u8, 78u8, 80u8, 100u8, 198u8, 114u8, 215u8, 59u8, - 3u8, 103u8, 14u8, 152u8, 202u8, 12u8, 165u8, 224u8, 10u8, 41u8, 154u8, - 77u8, 95u8, 116u8, 143u8, 250u8, 250u8, 176u8, 92u8, 238u8, 154u8, - ], - ) - } - } - } - } - pub mod treasury { - use super::{root_mod, runtime_types}; - #[doc = "Error for the treasury pallet."] - pub type Error = runtime_types::pallet_treasury::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_treasury::pallet::Call; - pub mod calls { - use super::{root_mod, runtime_types}; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ProposeSpend { - #[codec(compact)] - pub value: ::core::primitive::u128, - pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - } - impl ::subxt::blocks::StaticExtrinsic for ProposeSpend { - const PALLET: &'static str = "Treasury"; - const CALL: &'static str = "propose_spend"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RejectProposal { - #[codec(compact)] - pub proposal_id: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for RejectProposal { - const PALLET: &'static str = "Treasury"; - const CALL: &'static str = "reject_proposal"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ApproveProposal { - #[codec(compact)] - pub proposal_id: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for ApproveProposal { - const PALLET: &'static str = "Treasury"; - const CALL: &'static str = "approve_proposal"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Spend { - #[codec(compact)] - pub amount: ::core::primitive::u128, - pub beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - } - impl ::subxt::blocks::StaticExtrinsic for Spend { - const PALLET: &'static str = "Treasury"; - const CALL: &'static str = "spend"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RemoveApproval { - #[codec(compact)] - pub proposal_id: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for RemoveApproval { - const PALLET: &'static str = "Treasury"; - const CALL: &'static str = "remove_approval"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::propose_spend`]."] - pub fn propose_spend( - &self, - value: ::core::primitive::u128, - beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Treasury", - "propose_spend", - types::ProposeSpend { value, beneficiary }, - [ - 250u8, 230u8, 64u8, 10u8, 93u8, 132u8, 194u8, 69u8, 91u8, 50u8, 98u8, - 212u8, 72u8, 218u8, 29u8, 149u8, 2u8, 190u8, 219u8, 4u8, 25u8, 110u8, - 5u8, 199u8, 196u8, 37u8, 64u8, 57u8, 207u8, 235u8, 164u8, 226u8, - ], - ) - } - #[doc = "See [`Pallet::reject_proposal`]."] - pub fn reject_proposal( - &self, - proposal_id: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Treasury", - "reject_proposal", - types::RejectProposal { proposal_id }, - [ - 18u8, 166u8, 80u8, 141u8, 222u8, 230u8, 4u8, 36u8, 7u8, 76u8, 12u8, - 40u8, 145u8, 114u8, 12u8, 43u8, 223u8, 78u8, 189u8, 222u8, 120u8, 80u8, - 225u8, 215u8, 119u8, 68u8, 200u8, 15u8, 25u8, 172u8, 192u8, 173u8, - ], - ) - } - #[doc = "See [`Pallet::approve_proposal`]."] - pub fn approve_proposal( - &self, - proposal_id: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Treasury", - "approve_proposal", - types::ApproveProposal { proposal_id }, - [ - 154u8, 176u8, 152u8, 97u8, 167u8, 177u8, 78u8, 9u8, 235u8, 229u8, - 199u8, 193u8, 214u8, 3u8, 16u8, 30u8, 4u8, 104u8, 27u8, 184u8, 100u8, - 65u8, 179u8, 13u8, 91u8, 62u8, 115u8, 5u8, 219u8, 211u8, 251u8, 153u8, - ], - ) - } - #[doc = "See [`Pallet::spend`]."] - pub fn spend( - &self, - amount: ::core::primitive::u128, - beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Treasury", - "spend", - types::Spend { amount, beneficiary }, - [ - 67u8, 164u8, 134u8, 175u8, 103u8, 211u8, 117u8, 233u8, 164u8, 176u8, - 180u8, 84u8, 147u8, 120u8, 81u8, 75u8, 167u8, 98u8, 218u8, 173u8, 67u8, - 0u8, 21u8, 190u8, 134u8, 18u8, 183u8, 6u8, 161u8, 43u8, 50u8, 83u8, - ], - ) - } - #[doc = "See [`Pallet::remove_approval`]."] - pub fn remove_approval( - &self, - proposal_id: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "Treasury", - "remove_approval", - types::RemoveApproval { proposal_id }, - [ - 180u8, 20u8, 39u8, 227u8, 29u8, 228u8, 234u8, 36u8, 155u8, 114u8, - 197u8, 135u8, 185u8, 31u8, 56u8, 247u8, 224u8, 168u8, 254u8, 233u8, - 250u8, 134u8, 186u8, 155u8, 108u8, 84u8, 94u8, 226u8, 207u8, 130u8, - 196u8, 100u8, - ], - ) - } + impl ::subxt::events::StaticEvent for ConfirmStarted { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "ConfirmStarted"; } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_treasury::pallet::Event; - pub mod events { - use super::runtime_types; #[derive( :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, @@ -12515,16 +12298,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "New proposal."] - pub struct Proposed { - pub proposal_index: ::core::primitive::u32, + pub struct ConfirmAborted { + pub index: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for Proposed { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "Proposed"; + impl ::subxt::events::StaticEvent for ConfirmAborted { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "ConfirmAborted"; } #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -12534,15 +12315,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "We have ended a spend period and will now allocate funds."] - pub struct Spending { - pub budget_remaining: ::core::primitive::u128, + #[doc = "A referendum has ended its confirmation phase and is ready for approval."] + pub struct Confirmed { + pub index: ::core::primitive::u32, + pub tally: runtime_types::pallet_ranked_collective::Tally, } - impl ::subxt::events::StaticEvent for Spending { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "Spending"; + impl ::subxt::events::StaticEvent for Confirmed { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "Confirmed"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -12552,15 +12335,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some funds have been allocated."] - pub struct Awarded { - pub proposal_index: ::core::primitive::u32, - pub award: ::core::primitive::u128, - pub account: ::subxt::utils::AccountId32, + #[doc = "A referendum has been approved and its proposal has been scheduled."] + pub struct Approved { + pub index: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for Awarded { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "Awarded"; + impl ::subxt::events::StaticEvent for Approved { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "Approved"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12572,17 +12353,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A proposal was rejected; funds were slashed."] + #[doc = "A proposal has been rejected by referendum."] pub struct Rejected { - pub proposal_index: ::core::primitive::u32, - pub slashed: ::core::primitive::u128, + pub index: ::core::primitive::u32, + pub tally: runtime_types::pallet_ranked_collective::Tally, } impl ::subxt::events::StaticEvent for Rejected { - const PALLET: &'static str = "Treasury"; + const PALLET: &'static str = "FellowshipReferenda"; const EVENT: &'static str = "Rejected"; } #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -12592,16 +12372,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some of our funds have been burnt."] - pub struct Burnt { - pub burnt_funds: ::core::primitive::u128, + #[doc = "A referendum has been timed out without being decided."] + pub struct TimedOut { + pub index: ::core::primitive::u32, + pub tally: runtime_types::pallet_ranked_collective::Tally, } - impl ::subxt::events::StaticEvent for Burnt { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "Burnt"; + impl ::subxt::events::StaticEvent for TimedOut { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "TimedOut"; } #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -12611,16 +12391,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Spending has finished; this is the amount that rolls over until next spend."] - pub struct Rollover { - pub rollover_balance: ::core::primitive::u128, + #[doc = "A referendum has been cancelled."] + pub struct Cancelled { + pub index: ::core::primitive::u32, + pub tally: runtime_types::pallet_ranked_collective::Tally, } - impl ::subxt::events::StaticEvent for Rollover { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "Rollover"; + impl ::subxt::events::StaticEvent for Cancelled { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "Cancelled"; } #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -12630,13 +12410,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some funds have been deposited."] - pub struct Deposit { - pub value: ::core::primitive::u128, + #[doc = "A referendum has been killed."] + pub struct Killed { + pub index: ::core::primitive::u32, + pub tally: runtime_types::pallet_ranked_collective::Tally, } - impl ::subxt::events::StaticEvent for Deposit { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "Deposit"; + impl ::subxt::events::StaticEvent for Killed { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "Killed"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12648,15 +12429,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A new spend proposal has been approved."] - pub struct SpendApproved { - pub proposal_index: ::core::primitive::u32, + #[doc = "The submission deposit has been refunded."] + pub struct SubmissionDepositRefunded { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, pub amount: ::core::primitive::u128, - pub beneficiary: ::subxt::utils::AccountId32, } - impl ::subxt::events::StaticEvent for SpendApproved { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "SpendApproved"; + impl ::subxt::events::StaticEvent for SubmissionDepositRefunded { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "SubmissionDepositRefunded"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -12668,22 +12449,41 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The inactive funds of the pallet have been updated."] - pub struct UpdatedInactive { - pub reactivated: ::core::primitive::u128, - pub deactivated: ::core::primitive::u128, + #[doc = "Metadata for a referendum has been set."] + pub struct MetadataSet { + pub index: ::core::primitive::u32, + pub hash: ::subxt::utils::H256, } - impl ::subxt::events::StaticEvent for UpdatedInactive { - const PALLET: &'static str = "Treasury"; - const EVENT: &'static str = "UpdatedInactive"; + impl ::subxt::events::StaticEvent for MetadataSet { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "MetadataSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Metadata for a referendum has been cleared."] + pub struct MetadataCleared { + pub index: ::core::primitive::u32, + pub hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for MetadataCleared { + const PALLET: &'static str = "FellowshipReferenda"; + const EVENT: &'static str = "MetadataCleared"; } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " Number of proposals that have been made."] - pub fn proposal_count( + #[doc = " The next free referendum index, aka the number of referenda started so far."] + pub fn referendum_count( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, @@ -12693,109 +12493,240 @@ pub mod api { (), > { ::subxt::storage::address::Address::new_static( - "Treasury", - "ProposalCount", + "FellowshipReferenda", + "ReferendumCount", vec![], [ - 91u8, 238u8, 246u8, 106u8, 95u8, 66u8, 83u8, 134u8, 1u8, 225u8, 164u8, - 216u8, 113u8, 101u8, 203u8, 200u8, 113u8, 97u8, 246u8, 228u8, 140u8, - 29u8, 29u8, 48u8, 176u8, 137u8, 93u8, 230u8, 56u8, 75u8, 51u8, 149u8, + 64u8, 145u8, 232u8, 153u8, 121u8, 87u8, 128u8, 253u8, 170u8, 192u8, + 139u8, 18u8, 0u8, 33u8, 243u8, 11u8, 238u8, 222u8, 244u8, 5u8, 247u8, + 198u8, 149u8, 31u8, 122u8, 208u8, 86u8, 179u8, 166u8, 167u8, 93u8, + 67u8, ], ) } - #[doc = " Proposals that have been made."] - pub fn proposals_iter( + #[doc = " Information concerning any given referendum."] + pub fn referendum_info_for( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_treasury::Proposal< - ::subxt::utils::AccountId32, + runtime_types::pallet_referenda::types::ReferendumInfo< + ::core::primitive::u16, + runtime_types::rococo_runtime::OriginCaller, + ::core::primitive::u32, + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, ::core::primitive::u128, + runtime_types::pallet_ranked_collective::Tally, + ::subxt::utils::AccountId32, + (::core::primitive::u32, ::core::primitive::u32), >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Treasury", - "Proposals", - vec![], + "FellowshipReferenda", + "ReferendumInfoFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, - 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, - 213u8, 87u8, 45u8, 23u8, 14u8, 167u8, 99u8, 208u8, 153u8, 163u8, 141u8, - 55u8, + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, ], ) } - #[doc = " Proposals that have been made."] - pub fn proposals( + #[doc = " Information concerning any given referendum."] + pub fn referendum_info_for_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_treasury::Proposal< - ::subxt::utils::AccountId32, + runtime_types::pallet_referenda::types::ReferendumInfo< + ::core::primitive::u16, + runtime_types::rococo_runtime::OriginCaller, + ::core::primitive::u32, + runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, ::core::primitive::u128, + runtime_types::pallet_ranked_collective::Tally, + ::subxt::utils::AccountId32, + (::core::primitive::u32, ::core::primitive::u32), >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Treasury", - "Proposals", + "FellowshipReferenda", + "ReferendumInfoFor", + Vec::new(), + [ + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, + ], + ) + } + #[doc = " The sorted list of referenda ready to be decided but not yet being decided, ordered by"] + #[doc = " conviction-weighted approvals."] + #[doc = ""] + #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] + pub fn track_queue( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipReferenda", + "TrackQueue", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 207u8, 135u8, 145u8, 146u8, 48u8, 10u8, 252u8, 40u8, 20u8, 115u8, - 205u8, 41u8, 173u8, 83u8, 115u8, 46u8, 106u8, 40u8, 130u8, 157u8, - 213u8, 87u8, 45u8, 23u8, 14u8, 167u8, 99u8, 208u8, 153u8, 163u8, 141u8, - 55u8, + 187u8, 113u8, 225u8, 99u8, 159u8, 207u8, 182u8, 41u8, 116u8, 136u8, + 119u8, 196u8, 152u8, 50u8, 192u8, 22u8, 171u8, 182u8, 237u8, 228u8, + 80u8, 255u8, 227u8, 141u8, 155u8, 83u8, 71u8, 131u8, 118u8, 109u8, + 186u8, 65u8, ], ) } - #[doc = " The amount which has been reported as inactive to Currency."] - pub fn deactivated( + #[doc = " The sorted list of referenda ready to be decided but not yet being decided, ordered by"] + #[doc = " conviction-weighted approvals."] + #[doc = ""] + #[doc = " This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`."] + pub fn track_queue_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u128, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u32, + ::core::primitive::u32, + )>, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipReferenda", + "TrackQueue", + Vec::new(), + [ + 187u8, 113u8, 225u8, 99u8, 159u8, 207u8, 182u8, 41u8, 116u8, 136u8, + 119u8, 196u8, 152u8, 50u8, 192u8, 22u8, 171u8, 182u8, 237u8, 228u8, + 80u8, 255u8, 227u8, 141u8, 155u8, 83u8, 71u8, 131u8, 118u8, 109u8, + 186u8, 65u8, + ], + ) + } + #[doc = " The number of referenda being decided currently."] + pub fn deciding_count( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u16>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipReferenda", + "DecidingCount", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, + 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, + 103u8, 47u8, 252u8, 126u8, 108u8, 166u8, 69u8, 252u8, 179u8, 126u8, + 245u8, + ], + ) + } + #[doc = " The number of referenda being decided currently."] + pub fn deciding_count_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u32, (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Treasury", - "Deactivated", - vec![], + "FellowshipReferenda", + "DecidingCount", + Vec::new(), [ - 120u8, 221u8, 159u8, 56u8, 161u8, 44u8, 54u8, 233u8, 47u8, 114u8, - 170u8, 150u8, 52u8, 24u8, 137u8, 212u8, 122u8, 247u8, 40u8, 17u8, - 208u8, 130u8, 42u8, 154u8, 33u8, 222u8, 59u8, 116u8, 0u8, 15u8, 79u8, - 123u8, + 203u8, 89u8, 158u8, 179u8, 194u8, 82u8, 248u8, 162u8, 93u8, 140u8, + 146u8, 51u8, 110u8, 232u8, 51u8, 1u8, 128u8, 212u8, 199u8, 14u8, 182u8, + 103u8, 47u8, 252u8, 126u8, 108u8, 166u8, 69u8, 252u8, 179u8, 126u8, + 245u8, ], ) } - #[doc = " Proposal indices that have been approved but not yet awarded."] - pub fn approvals( + #[doc = " The metadata is a general information concerning the referendum."] + #[doc = " The `Hash` refers to the preimage of the `Preimages` provider which can be a JSON"] + #[doc = " dump or IPFS hash of a JSON file."] + #[doc = ""] + #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] + #[doc = " large preimages."] + pub fn metadata_of( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u32, - >, + ::subxt::utils::H256, ::subxt::storage::address::Yes, + (), ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "FellowshipReferenda", + "MetadataOf", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, + 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, + 45u8, 193u8, 72u8, 200u8, 164u8, 39u8, 207u8, 224u8, 124u8, 191u8, + 110u8, + ], + ) + } + #[doc = " The metadata is a general information concerning the referendum."] + #[doc = " The `Hash` refers to the preimage of the `Preimages` provider which can be a JSON"] + #[doc = " dump or IPFS hash of a JSON file."] + #[doc = ""] + #[doc = " Consider a garbage collection for a metadata of finished referendums to `unrequest` (remove)"] + #[doc = " large preimages."] + pub fn metadata_of_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::H256, (), + (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Treasury", - "Approvals", - vec![], + "FellowshipReferenda", + "MetadataOf", + Vec::new(), [ - 78u8, 147u8, 186u8, 235u8, 17u8, 40u8, 247u8, 235u8, 67u8, 222u8, 3u8, - 14u8, 248u8, 17u8, 67u8, 180u8, 93u8, 161u8, 64u8, 35u8, 119u8, 194u8, - 187u8, 226u8, 135u8, 162u8, 147u8, 174u8, 139u8, 72u8, 99u8, 212u8, + 159u8, 250u8, 56u8, 189u8, 247u8, 165u8, 206u8, 166u8, 91u8, 139u8, + 124u8, 164u8, 25u8, 246u8, 199u8, 36u8, 159u8, 56u8, 227u8, 136u8, 4u8, + 45u8, 193u8, 72u8, 200u8, 164u8, 39u8, 207u8, 224u8, 124u8, 191u8, + 110u8, ], ) } @@ -12805,29 +12736,13 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " Fraction of a proposal's value that should be bonded in order to place the proposal."] - #[doc = " An accepted proposal gets these back. A rejected proposal does not."] - pub fn proposal_bond( - &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( - "Treasury", - "ProposalBond", - [ - 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, - 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, - 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, - ], - ) - } - #[doc = " Minimum amount of funds that should be placed in a deposit for making a proposal."] - pub fn proposal_bond_minimum( + #[doc = " The minimum amount to be used as a deposit for a public referendum proposal."] + pub fn submission_deposit( &self, ) -> ::subxt::constants::Address<::core::primitive::u128> { ::subxt::constants::Address::new_static( - "Treasury", - "ProposalBondMinimum", + "FellowshipReferenda", + "SubmissionDeposit", [ 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, @@ -12835,27 +12750,27 @@ pub mod api { ], ) } - #[doc = " Maximum amount of funds that should be placed in a deposit for making a proposal."] - pub fn proposal_bond_maximum( - &self, - ) -> ::subxt::constants::Address<::core::option::Option<::core::primitive::u128>> - { + #[doc = " Maximum size of the referendum queue for a single track."] + pub fn max_queued(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Treasury", - "ProposalBondMaximum", + "FellowshipReferenda", + "MaxQueued", [ - 198u8, 51u8, 89u8, 159u8, 124u8, 251u8, 51u8, 80u8, 167u8, 193u8, 44u8, - 199u8, 80u8, 36u8, 41u8, 130u8, 137u8, 229u8, 178u8, 208u8, 37u8, - 215u8, 169u8, 183u8, 180u8, 191u8, 140u8, 240u8, 250u8, 61u8, 42u8, - 147u8, + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, ], ) } - #[doc = " Period between successive spends."] - pub fn spend_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + #[doc = " The number of blocks after submission that a referendum must begin being decided by."] + #[doc = " Once this passes, then anyone may cancel the referendum."] + pub fn undeciding_timeout( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Treasury", - "SpendPeriod", + "FellowshipReferenda", + "UndecidingTimeout", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -12864,48 +12779,314 @@ pub mod api { ], ) } - #[doc = " Percentage of spare funds (if any) that are burnt per spend period."] - pub fn burn( + #[doc = " Quantization level for the referendum wakeup scheduler. A higher number will result in"] + #[doc = " fewer storage reads/writes needed for smaller voters, but also result in delays to the"] + #[doc = " automatic referendum status changes. Explicit servicing instructions are unaffected."] + pub fn alarm_interval( &self, - ) -> ::subxt::constants::Address - { + ) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Treasury", - "Burn", + "FellowshipReferenda", + "AlarmInterval", [ - 65u8, 93u8, 120u8, 165u8, 204u8, 81u8, 159u8, 163u8, 93u8, 135u8, - 114u8, 121u8, 147u8, 35u8, 215u8, 213u8, 4u8, 223u8, 83u8, 37u8, 225u8, - 200u8, 189u8, 156u8, 140u8, 36u8, 58u8, 46u8, 42u8, 232u8, 155u8, 0u8, + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, ], ) } - #[doc = " The treasury's pallet id, used for deriving its sovereign account ID."] - pub fn pallet_id( + #[doc = " Information concerning the different referendum tracks."] + pub fn tracks( &self, - ) -> ::subxt::constants::Address - { + ) -> ::subxt::constants::Address< + ::std::vec::Vec<( + ::core::primitive::u16, + runtime_types::pallet_referenda::types::TrackInfo< + ::core::primitive::u128, + ::core::primitive::u32, + >, + )>, + > { ::subxt::constants::Address::new_static( - "Treasury", - "PalletId", + "FellowshipReferenda", + "Tracks", [ - 56u8, 243u8, 53u8, 83u8, 154u8, 179u8, 170u8, 80u8, 133u8, 173u8, 61u8, - 161u8, 47u8, 225u8, 146u8, 21u8, 50u8, 229u8, 248u8, 27u8, 104u8, 58u8, - 129u8, 197u8, 102u8, 160u8, 168u8, 205u8, 154u8, 42u8, 217u8, 53u8, + 35u8, 226u8, 207u8, 234u8, 184u8, 139u8, 187u8, 184u8, 128u8, 199u8, + 227u8, 15u8, 31u8, 196u8, 5u8, 207u8, 138u8, 174u8, 130u8, 201u8, + 200u8, 113u8, 86u8, 93u8, 221u8, 243u8, 229u8, 24u8, 18u8, 150u8, 56u8, + 159u8, ], ) } - #[doc = " The maximum number of approvals that can wait in the spending queue."] - #[doc = ""] - #[doc = " NOTE: This parameter is also used within the Bounties Pallet extension if enabled."] - pub fn max_approvals(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Treasury", - "MaxApprovals", + } + } + } + pub mod origins { + use super::{root_mod, runtime_types}; + } + pub mod whitelist { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_whitelist::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_whitelist::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WhitelistCall { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for WhitelistCall { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "whitelist_call"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveWhitelistedCall { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveWhitelistedCall { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "remove_whitelisted_call"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchWhitelistedCall { + pub call_hash: ::subxt::utils::H256, + pub call_encoded_len: ::core::primitive::u32, + pub call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, + } + impl ::subxt::blocks::StaticExtrinsic for DispatchWhitelistedCall { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "dispatch_whitelisted_call"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchWhitelistedCallWithPreimage { + pub call: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for DispatchWhitelistedCallWithPreimage { + const PALLET: &'static str = "Whitelist"; + const CALL: &'static str = "dispatch_whitelisted_call_with_preimage"; + } + } + pub struct TransactionApi; + impl TransactionApi { + pub fn whitelist_call( + &self, + call_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Whitelist", + "whitelist_call", + types::WhitelistCall { call_hash }, [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 121u8, 165u8, 49u8, 37u8, 127u8, 38u8, 126u8, 213u8, 115u8, 148u8, + 122u8, 211u8, 24u8, 91u8, 147u8, 27u8, 87u8, 210u8, 84u8, 104u8, 229u8, + 155u8, 133u8, 30u8, 34u8, 249u8, 107u8, 110u8, 31u8, 191u8, 128u8, + 28u8, + ], + ) + } + pub fn remove_whitelisted_call( + &self, + call_hash: ::subxt::utils::H256, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Whitelist", + "remove_whitelisted_call", + types::RemoveWhitelistedCall { call_hash }, + [ + 30u8, 47u8, 13u8, 231u8, 165u8, 219u8, 246u8, 210u8, 11u8, 38u8, 219u8, + 218u8, 151u8, 226u8, 101u8, 175u8, 0u8, 239u8, 35u8, 46u8, 156u8, + 104u8, 145u8, 173u8, 105u8, 100u8, 21u8, 189u8, 123u8, 227u8, 196u8, + 40u8, + ], + ) + } + pub fn dispatch_whitelisted_call( + &self, + call_hash: ::subxt::utils::H256, + call_encoded_len: ::core::primitive::u32, + call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Whitelist", + "dispatch_whitelisted_call", + types::DispatchWhitelistedCall { + call_hash, + call_encoded_len, + call_weight_witness, + }, + [ + 112u8, 67u8, 72u8, 26u8, 3u8, 214u8, 86u8, 102u8, 29u8, 96u8, 222u8, + 24u8, 115u8, 15u8, 124u8, 160u8, 148u8, 184u8, 56u8, 162u8, 188u8, + 123u8, 213u8, 234u8, 208u8, 123u8, 133u8, 253u8, 43u8, 226u8, 66u8, + 116u8, + ], + ) + } + pub fn dispatch_whitelisted_call_with_preimage( + &self, + call: runtime_types::rococo_runtime::RuntimeCall, + ) -> ::subxt::tx::Payload + { + ::subxt::tx::Payload::new_static( + "Whitelist", + "dispatch_whitelisted_call_with_preimage", + types::DispatchWhitelistedCallWithPreimage { + call: ::std::boxed::Box::new(call), + }, + [ + 182u8, 92u8, 0u8, 194u8, 17u8, 44u8, 196u8, 9u8, 66u8, 117u8, 149u8, + 15u8, 44u8, 61u8, 4u8, 37u8, 25u8, 30u8, 236u8, 172u8, 53u8, 217u8, + 163u8, 20u8, 84u8, 208u8, 93u8, 230u8, 182u8, 56u8, 55u8, 128u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_whitelist::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CallWhitelisted { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for CallWhitelisted { + const PALLET: &'static str = "Whitelist"; + const EVENT: &'static str = "CallWhitelisted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WhitelistedCallRemoved { + pub call_hash: ::subxt::utils::H256, + } + impl ::subxt::events::StaticEvent for WhitelistedCallRemoved { + const PALLET: &'static str = "Whitelist"; + const EVENT: &'static str = "WhitelistedCallRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WhitelistedCallDispatched { + pub call_hash: ::subxt::utils::H256, + pub result: ::core::result::Result< + runtime_types::frame_support::dispatch::PostDispatchInfo, + runtime_types::sp_runtime::DispatchErrorWithPostInfo< + runtime_types::frame_support::dispatch::PostDispatchInfo, + >, + >, + } + impl ::subxt::events::StaticEvent for WhitelistedCallDispatched { + const PALLET: &'static str = "Whitelist"; + const EVENT: &'static str = "WhitelistedCallDispatched"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + pub fn whitelisted_call( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Whitelist", + "WhitelistedCall", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 82u8, 208u8, 214u8, 72u8, 225u8, 35u8, 51u8, 212u8, 25u8, 138u8, 30u8, + 87u8, 54u8, 232u8, 72u8, 132u8, 4u8, 9u8, 28u8, 143u8, 251u8, 106u8, + 167u8, 218u8, 130u8, 185u8, 253u8, 185u8, 113u8, 154u8, 202u8, 66u8, + ], + ) + } + pub fn whitelisted_call_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Whitelist", + "WhitelistedCall", + Vec::new(), + [ + 82u8, 208u8, 214u8, 72u8, 225u8, 35u8, 51u8, 212u8, 25u8, 138u8, 30u8, + 87u8, 54u8, 232u8, 72u8, 132u8, 4u8, 9u8, 28u8, 143u8, 251u8, 106u8, + 167u8, 218u8, 130u8, 185u8, 253u8, 185u8, 113u8, 154u8, 202u8, 66u8, ], ) } @@ -13027,7 +13208,30 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn claim( &self, dest: ::subxt::utils::AccountId32, @@ -13045,7 +13249,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn mint_claim( &self, who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -13070,7 +13288,33 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn claim_attest( &self, dest: ::subxt::utils::AccountId32, @@ -13088,7 +13332,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn attest( &self, statement: ::std::vec::Vec<::core::primitive::u8>, @@ -13105,7 +13367,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::move_claim`]."] pub fn move_claim( &self, old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -13156,19 +13417,22 @@ pub mod api { use super::runtime_types; pub struct StorageApi; impl StorageApi { - pub fn claims_iter( + pub fn claims( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u128, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Claims", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 148u8, 115u8, 159u8, 169u8, 36u8, 116u8, 15u8, 108u8, 57u8, 195u8, 226u8, 180u8, 187u8, 112u8, 114u8, 63u8, 3u8, 205u8, 113u8, 141u8, @@ -13177,22 +13441,19 @@ pub mod api { ], ) } - pub fn claims( + pub fn claims_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_runtime_common::claims::EthereumAddress, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u128, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Claims", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 148u8, 115u8, 159u8, 169u8, 36u8, 116u8, 15u8, 108u8, 57u8, 195u8, 226u8, 180u8, 187u8, 112u8, 114u8, 63u8, 3u8, 205u8, 113u8, 141u8, @@ -13226,19 +13487,22 @@ pub mod api { #[doc = " First balance is the total amount that should be held for vesting."] #[doc = " Second balance is how much should be unlocked per block."] #[doc = " The block number is when the vesting should start."] - pub fn vesting_iter( + pub fn vesting( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::core::primitive::u128, ::core::primitive::u128, ::core::primitive::u32), - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Vesting", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 206u8, 106u8, 195u8, 101u8, 55u8, 137u8, 50u8, 105u8, 137u8, 87u8, 230u8, 34u8, 255u8, 94u8, 210u8, 186u8, 179u8, 72u8, 24u8, 194u8, @@ -13251,22 +13515,19 @@ pub mod api { #[doc = " First balance is the total amount that should be held for vesting."] #[doc = " Second balance is how much should be unlocked per block."] #[doc = " The block number is when the vesting should start."] - pub fn vesting( + pub fn vesting_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_runtime_common::claims::EthereumAddress, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::core::primitive::u128, ::core::primitive::u128, ::core::primitive::u32), - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Vesting", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 206u8, 106u8, 195u8, 101u8, 55u8, 137u8, 50u8, 105u8, 137u8, 87u8, 230u8, 34u8, 255u8, 94u8, 210u8, 186u8, 179u8, 72u8, 24u8, 194u8, @@ -13276,19 +13537,22 @@ pub mod api { ) } #[doc = " The statement kind that must be signed, if any."] - pub fn signing_iter( + pub fn signing( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::claims::EthereumAddress, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::claims::StatementKind, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Signing", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 111u8, 90u8, 178u8, 121u8, 241u8, 28u8, 169u8, 231u8, 61u8, 189u8, 113u8, 207u8, 26u8, 153u8, 189u8, 15u8, 192u8, 25u8, 22u8, 22u8, 124u8, @@ -13297,22 +13561,19 @@ pub mod api { ) } #[doc = " The statement kind that must be signed, if any."] - pub fn signing( + pub fn signing_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_runtime_common::claims::EthereumAddress, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::claims::StatementKind, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Signing", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 111u8, 90u8, 178u8, 121u8, 241u8, 28u8, 169u8, 231u8, 61u8, 189u8, 113u8, 207u8, 26u8, 153u8, 189u8, 15u8, 192u8, 25u8, 22u8, 22u8, 124u8, @@ -13321,19 +13582,20 @@ pub mod api { ) } #[doc = " Pre-claimed Ethereum accounts, by the Account ID that they are claimed to."] - pub fn preclaims_iter( + pub fn preclaims( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::claims::EthereumAddress, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Preclaims", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 197u8, 114u8, 147u8, 235u8, 203u8, 255u8, 94u8, 113u8, 151u8, 119u8, 224u8, 147u8, 48u8, 246u8, 124u8, 38u8, 190u8, 237u8, 226u8, 65u8, @@ -13343,20 +13605,19 @@ pub mod api { ) } #[doc = " Pre-claimed Ethereum accounts, by the Account ID that they are claimed to."] - pub fn preclaims( + pub fn preclaims_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::claims::EthereumAddress, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Claims", "Preclaims", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 197u8, 114u8, 147u8, 235u8, 203u8, 255u8, 94u8, 113u8, 151u8, 119u8, 224u8, 147u8, 48u8, 246u8, 124u8, 38u8, 190u8, 237u8, 226u8, 65u8, @@ -13508,7 +13769,24 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] pub fn batch( &self, calls: ::std::vec::Vec, @@ -13518,13 +13796,25 @@ pub mod api { "batch", types::Batch { calls }, [ - 174u8, 162u8, 163u8, 35u8, 121u8, 196u8, 15u8, 55u8, 186u8, 8u8, 74u8, - 247u8, 127u8, 127u8, 69u8, 186u8, 1u8, 83u8, 205u8, 153u8, 203u8, 41u8, - 119u8, 247u8, 43u8, 140u8, 164u8, 137u8, 190u8, 125u8, 150u8, 5u8, + 83u8, 142u8, 31u8, 160u8, 204u8, 203u8, 126u8, 141u8, 98u8, 62u8, 10u8, + 59u8, 220u8, 181u8, 239u8, 43u8, 30u8, 252u8, 100u8, 136u8, 154u8, + 240u8, 169u8, 74u8, 74u8, 164u8, 30u8, 90u8, 255u8, 60u8, 158u8, 31u8, ], ) } - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn as_derivative( &self, index: ::core::primitive::u16, @@ -13535,14 +13825,26 @@ pub mod api { "as_derivative", types::AsDerivative { index, call: ::std::boxed::Box::new(call) }, [ - 189u8, 181u8, 54u8, 193u8, 227u8, 230u8, 194u8, 49u8, 105u8, 192u8, - 212u8, 46u8, 139u8, 81u8, 220u8, 189u8, 88u8, 159u8, 156u8, 101u8, - 226u8, 200u8, 197u8, 204u8, 60u8, 204u8, 166u8, 210u8, 109u8, 29u8, - 154u8, 172u8, + 92u8, 93u8, 220u8, 19u8, 69u8, 34u8, 253u8, 107u8, 69u8, 33u8, 203u8, + 90u8, 30u8, 192u8, 243u8, 233u8, 111u8, 180u8, 240u8, 68u8, 14u8, + 218u8, 129u8, 85u8, 20u8, 30u8, 244u8, 224u8, 194u8, 108u8, 227u8, + 103u8, ], ) } - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub fn batch_all( &self, calls: ::std::vec::Vec, @@ -13552,13 +13854,18 @@ pub mod api { "batch_all", types::BatchAll { calls }, [ - 172u8, 241u8, 177u8, 159u8, 233u8, 163u8, 241u8, 255u8, 113u8, 183u8, - 227u8, 11u8, 146u8, 158u8, 144u8, 96u8, 55u8, 162u8, 60u8, 13u8, 154u8, - 123u8, 17u8, 72u8, 43u8, 207u8, 14u8, 12u8, 154u8, 154u8, 89u8, 81u8, + 216u8, 15u8, 126u8, 234u8, 238u8, 87u8, 165u8, 88u8, 16u8, 53u8, 83u8, + 224u8, 183u8, 97u8, 176u8, 103u8, 19u8, 215u8, 71u8, 72u8, 47u8, 86u8, + 144u8, 185u8, 97u8, 187u8, 201u8, 247u8, 189u8, 248u8, 244u8, 86u8, ], ) } - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn dispatch_as( &self, as_origin: runtime_types::rococo_runtime::OriginCaller, @@ -13572,13 +13879,25 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 232u8, 64u8, 82u8, 13u8, 16u8, 163u8, 59u8, 248u8, 22u8, 231u8, 11u8, - 105u8, 116u8, 54u8, 29u8, 168u8, 76u8, 75u8, 37u8, 98u8, 92u8, 140u8, - 46u8, 167u8, 198u8, 9u8, 250u8, 191u8, 63u8, 236u8, 68u8, 62u8, + 41u8, 157u8, 8u8, 140u8, 185u8, 113u8, 126u8, 8u8, 142u8, 184u8, 155u8, + 195u8, 111u8, 25u8, 161u8, 139u8, 124u8, 204u8, 184u8, 250u8, 140u8, + 244u8, 132u8, 196u8, 100u8, 9u8, 3u8, 34u8, 111u8, 205u8, 249u8, 76u8, ], ) } - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub fn force_batch( &self, calls: ::std::vec::Vec, @@ -13588,14 +13907,18 @@ pub mod api { "force_batch", types::ForceBatch { calls }, [ - 191u8, 254u8, 80u8, 196u8, 138u8, 45u8, 7u8, 230u8, 109u8, 196u8, - 255u8, 17u8, 242u8, 162u8, 22u8, 102u8, 197u8, 45u8, 123u8, 26u8, - 216u8, 237u8, 186u8, 18u8, 182u8, 79u8, 182u8, 120u8, 187u8, 202u8, - 35u8, 200u8, + 122u8, 84u8, 8u8, 30u8, 243u8, 237u8, 66u8, 180u8, 92u8, 67u8, 49u8, + 153u8, 120u8, 174u8, 127u8, 12u8, 38u8, 170u8, 210u8, 43u8, 161u8, + 38u8, 242u8, 54u8, 34u8, 16u8, 4u8, 79u8, 0u8, 126u8, 224u8, 104u8, ], ) } - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] pub fn with_weight( &self, call: runtime_types::rococo_runtime::RuntimeCall, @@ -13606,9 +13929,10 @@ pub mod api { "with_weight", types::WithWeight { call: ::std::boxed::Box::new(call), weight }, [ - 114u8, 241u8, 162u8, 243u8, 39u8, 139u8, 195u8, 1u8, 1u8, 101u8, 18u8, - 189u8, 202u8, 149u8, 146u8, 202u8, 9u8, 66u8, 33u8, 190u8, 155u8, - 171u8, 2u8, 5u8, 30u8, 80u8, 78u8, 148u8, 61u8, 166u8, 9u8, 50u8, + 248u8, 51u8, 88u8, 108u8, 107u8, 158u8, 198u8, 46u8, 227u8, 144u8, + 222u8, 15u8, 120u8, 252u8, 249u8, 200u8, 235u8, 96u8, 195u8, 110u8, + 206u8, 97u8, 133u8, 132u8, 50u8, 49u8, 208u8, 189u8, 94u8, 122u8, 17u8, + 135u8, ], ) } @@ -13785,7 +14109,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SetIdentity { pub info: - ::std::boxed::Box, + ::std::boxed::Box, } impl ::subxt::blocks::StaticExtrinsic for SetIdentity { const PALLET: &'static str = "Identity"; @@ -13916,9 +14240,7 @@ pub mod api { pub struct SetFields { #[codec(compact)] pub index: ::core::primitive::u32, - pub fields: runtime_types::pallet_identity::types::BitFlags< - runtime_types::pallet_identity::types::IdentityField, - >, + pub fields: ::core::primitive::u64, } impl ::subxt::blocks::StaticExtrinsic for SetFields { const PALLET: &'static str = "Identity"; @@ -14031,10 +14353,148 @@ pub mod api { const PALLET: &'static str = "Identity"; const CALL: &'static str = "quit_sub"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AddUsernameAuthority { + pub authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub suffix: ::std::vec::Vec<::core::primitive::u8>, + pub allocation: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for AddUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "add_username_authority"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveUsernameAuthority { + pub authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_username_authority"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetUsernameFor { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub username: ::std::vec::Vec<::core::primitive::u8>, + pub signature: + ::core::option::Option, + } + impl ::subxt::blocks::StaticExtrinsic for SetUsernameFor { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_username_for"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AcceptUsername { + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + impl ::subxt::blocks::StaticExtrinsic for AcceptUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "accept_username"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveExpiredApproval { + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveExpiredApproval { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_expired_approval"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetPrimaryUsername { + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + impl ::subxt::blocks::StaticExtrinsic for SetPrimaryUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_primary_username"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveDanglingUsername { + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + impl ::subxt::blocks::StaticExtrinsic for RemoveDanglingUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_dangling_username"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] pub fn add_registrar( &self, account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -14050,10 +14510,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] pub fn set_identity( &self, - info: runtime_types::pallet_identity::types::IdentityInfo, + info: runtime_types::pallet_identity::legacy::IdentityInfo, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", @@ -14067,7 +14536,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] pub fn set_subs( &self, subs: ::std::vec::Vec<( @@ -14087,7 +14564,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] pub fn clear_identity(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", @@ -14101,7 +14585,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] pub fn request_judgement( &self, reg_index: ::core::primitive::u32, @@ -14118,7 +14617,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] pub fn cancel_request( &self, reg_index: ::core::primitive::u32, @@ -14135,7 +14643,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] pub fn set_fee( &self, index: ::core::primitive::u32, @@ -14153,7 +14667,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] pub fn set_account_id( &self, index: ::core::primitive::u32, @@ -14171,26 +14691,45 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] pub fn set_fields( &self, index: ::core::primitive::u32, - fields: runtime_types::pallet_identity::types::BitFlags< - runtime_types::pallet_identity::types::IdentityField, - >, + fields: ::core::primitive::u64, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", "set_fields", types::SetFields { index, fields }, [ - 25u8, 129u8, 119u8, 232u8, 18u8, 32u8, 77u8, 23u8, 185u8, 56u8, 32u8, - 199u8, 74u8, 174u8, 104u8, 203u8, 171u8, 253u8, 19u8, 225u8, 101u8, - 239u8, 14u8, 242u8, 157u8, 51u8, 203u8, 74u8, 1u8, 65u8, 165u8, 205u8, + 75u8, 38u8, 58u8, 93u8, 92u8, 164u8, 146u8, 146u8, 183u8, 245u8, 135u8, + 235u8, 12u8, 148u8, 37u8, 193u8, 58u8, 66u8, 173u8, 223u8, 166u8, + 169u8, 54u8, 159u8, 141u8, 36u8, 25u8, 231u8, 190u8, 211u8, 254u8, + 38u8, ], ) } - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] pub fn provide_judgement( &self, reg_index: ::core::primitive::u32, @@ -14212,7 +14751,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] pub fn kill_identity( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -14229,7 +14779,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn add_sub( &self, sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -14246,7 +14802,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn rename_sub( &self, sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -14264,7 +14823,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn remove_sub( &self, sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -14280,7 +14845,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] pub fn quit_sub(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Identity", @@ -14294,6 +14868,146 @@ pub mod api { ], ) } + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] + pub fn add_username_authority( + &self, + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + suffix: ::std::vec::Vec<::core::primitive::u8>, + allocation: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "add_username_authority", + types::AddUsernameAuthority { authority, suffix, allocation }, + [ + 225u8, 197u8, 122u8, 209u8, 206u8, 241u8, 247u8, 232u8, 196u8, 110u8, + 75u8, 157u8, 44u8, 181u8, 35u8, 75u8, 182u8, 219u8, 100u8, 64u8, 208u8, + 112u8, 120u8, 229u8, 211u8, 69u8, 193u8, 214u8, 195u8, 98u8, 10u8, + 25u8, + ], + ) + } + #[doc = "Remove `authority` from the username authorities."] + pub fn remove_username_authority( + &self, + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_username_authority", + types::RemoveUsernameAuthority { authority }, + [ + 4u8, 182u8, 89u8, 1u8, 183u8, 15u8, 215u8, 48u8, 165u8, 97u8, 252u8, + 54u8, 223u8, 18u8, 211u8, 227u8, 226u8, 230u8, 185u8, 71u8, 202u8, + 95u8, 191u8, 6u8, 118u8, 144u8, 92u8, 98u8, 64u8, 243u8, 2u8, 137u8, + ], + ) + } + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] + pub fn set_username_for( + &self, + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + username: ::std::vec::Vec<::core::primitive::u8>, + signature: ::core::option::Option, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_username_for", + types::SetUsernameFor { who, username, signature }, + [ + 208u8, 124u8, 47u8, 129u8, 27u8, 182u8, 185u8, 76u8, 173u8, 187u8, + 193u8, 4u8, 252u8, 195u8, 204u8, 101u8, 233u8, 33u8, 62u8, 6u8, 50u8, + 20u8, 224u8, 26u8, 125u8, 192u8, 220u8, 56u8, 255u8, 249u8, 85u8, 50u8, + ], + ) + } + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] + pub fn accept_username( + &self, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "accept_username", + types::AcceptUsername { username }, + [ + 247u8, 162u8, 83u8, 250u8, 214u8, 7u8, 12u8, 253u8, 227u8, 4u8, 95u8, + 71u8, 150u8, 218u8, 216u8, 86u8, 137u8, 37u8, 114u8, 188u8, 18u8, + 232u8, 229u8, 179u8, 172u8, 251u8, 70u8, 29u8, 18u8, 86u8, 33u8, 129u8, + ], + ) + } + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] + pub fn remove_expired_approval( + &self, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_expired_approval", + types::RemoveExpiredApproval { username }, + [ + 159u8, 171u8, 27u8, 97u8, 224u8, 171u8, 14u8, 89u8, 65u8, 213u8, 208u8, + 67u8, 118u8, 146u8, 0u8, 131u8, 82u8, 186u8, 142u8, 52u8, 173u8, 90u8, + 104u8, 107u8, 114u8, 202u8, 123u8, 222u8, 49u8, 53u8, 59u8, 61u8, + ], + ) + } + #[doc = "Set a given username as the primary. The username should include the suffix."] + pub fn set_primary_username( + &self, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "set_primary_username", + types::SetPrimaryUsername { username }, + [ + 3u8, 25u8, 56u8, 26u8, 108u8, 165u8, 84u8, 231u8, 16u8, 4u8, 6u8, + 232u8, 141u8, 7u8, 254u8, 50u8, 26u8, 230u8, 66u8, 245u8, 255u8, 101u8, + 183u8, 234u8, 197u8, 186u8, 132u8, 197u8, 251u8, 84u8, 212u8, 162u8, + ], + ) + } + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] + pub fn remove_dangling_username( + &self, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Identity", + "remove_dangling_username", + types::RemoveDanglingUsername { username }, + [ + 220u8, 67u8, 52u8, 223u8, 169u8, 81u8, 202u8, 74u8, 199u8, 169u8, 89u8, + 60u8, 57u8, 153u8, 240u8, 105u8, 188u8, 222u8, 250u8, 247u8, 91u8, + 137u8, 37u8, 212u8, 10u8, 51u8, 9u8, 202u8, 165u8, 155u8, 222u8, 29u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -14493,73 +15207,236 @@ pub mod api { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "SubIdentityRevoked"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username authority was added."] + pub struct AuthorityAdded { + pub authority: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for AuthorityAdded { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityAdded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username authority was removed."] + pub struct AuthorityRemoved { + pub authority: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for AuthorityRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was set for `who`."] + pub struct UsernameSet { + pub who: ::subxt::utils::AccountId32, + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + impl ::subxt::events::StaticEvent for UsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + pub struct UsernameQueued { + pub who: ::subxt::utils::AccountId32, + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + pub expiration: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for UsernameQueued { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameQueued"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + pub struct PreapprovalExpired { + pub whose: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for PreapprovalExpired { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PreapprovalExpired"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A username was set as a primary and can be looked up from `who`."] + pub struct PrimaryUsernameSet { + pub who: ::subxt::utils::AccountId32, + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + impl ::subxt::events::StaticEvent for PrimaryUsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PrimaryUsernameSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + pub struct DanglingUsernameRemoved { + pub who: ::subxt::utils::AccountId32, + pub username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + } + impl ::subxt::events::StaticEvent for DanglingUsernameRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "DanglingUsernameRemoved"; + } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] - pub fn identity_of_iter( + pub fn identity_of( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_identity::types::Registration<::core::primitive::u128>, - (), + ( + runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + runtime_types::pallet_identity::legacy::IdentityInfo, + >, + ::core::option::Option< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + ), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Identity", "IdentityOf", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] - pub fn identity_of( + pub fn identity_of_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_identity::types::Registration<::core::primitive::u128>, - ::subxt::storage::address::Yes, + ( + runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + runtime_types::pallet_identity::legacy::IdentityInfo, + >, + ::core::option::Option< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + ), (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Identity", "IdentityOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } #[doc = " The super-identity of an alternative \"sub\" identity together with its name, within that"] #[doc = " context. If the account is not some other account's sub-identity, then just `None`."] - pub fn super_of_iter( + pub fn super_of( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::subxt::utils::AccountId32, runtime_types::pallet_identity::types::Data), - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Identity", "SuperOf", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 84u8, 72u8, 64u8, 14u8, 56u8, 9u8, 143u8, 100u8, 141u8, 163u8, 36u8, 55u8, 38u8, 254u8, 164u8, 17u8, 3u8, 110u8, 88u8, 175u8, 161u8, 65u8, @@ -14569,20 +15446,19 @@ pub mod api { } #[doc = " The super-identity of an alternative \"sub\" identity together with its name, within that"] #[doc = " context. If the account is not some other account's sub-identity, then just `None`."] - pub fn super_of( + pub fn super_of_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::subxt::utils::AccountId32, runtime_types::pallet_identity::types::Data), - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Identity", "SuperOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 84u8, 72u8, 64u8, 14u8, 56u8, 9u8, 143u8, 100u8, 141u8, 163u8, 36u8, 55u8, 38u8, 254u8, 164u8, 17u8, 3u8, 110u8, 88u8, 175u8, 161u8, 65u8, @@ -14595,8 +15471,9 @@ pub mod api { #[doc = " The first item is the deposit, the second is a vector of the accounts."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] - pub fn subs_of_iter( + pub fn subs_of( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ( @@ -14605,14 +15482,14 @@ pub mod api { ::subxt::utils::AccountId32, >, ), - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Identity", "SubsOf", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 164u8, 140u8, 52u8, 123u8, 220u8, 118u8, 147u8, 3u8, 67u8, 22u8, 191u8, 18u8, 186u8, 21u8, 154u8, 8u8, 205u8, 224u8, 163u8, 173u8, 174u8, @@ -14626,9 +15503,8 @@ pub mod api { #[doc = " The first item is the deposit, the second is a vector of the accounts."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] - pub fn subs_of( + pub fn subs_of_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ( @@ -14637,14 +15513,14 @@ pub mod api { ::subxt::utils::AccountId32, >, ), + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Identity", "SubsOf", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 164u8, 140u8, 52u8, 123u8, 220u8, 118u8, 147u8, 3u8, 67u8, 22u8, 191u8, 18u8, 186u8, 21u8, 154u8, 8u8, 205u8, 224u8, 163u8, 173u8, 174u8, @@ -14666,6 +15542,7 @@ pub mod api { runtime_types::pallet_identity::types::RegistrarInfo< ::core::primitive::u128, ::subxt::utils::AccountId32, + ::core::primitive::u64, >, >, >, @@ -14678,10 +15555,177 @@ pub mod api { "Registrars", vec![], [ - 207u8, 253u8, 229u8, 237u8, 228u8, 85u8, 173u8, 74u8, 164u8, 67u8, - 144u8, 144u8, 5u8, 242u8, 84u8, 187u8, 110u8, 181u8, 2u8, 162u8, 239u8, - 212u8, 72u8, 233u8, 160u8, 196u8, 121u8, 218u8, 100u8, 0u8, 219u8, - 181u8, + 167u8, 99u8, 159u8, 117u8, 103u8, 243u8, 208u8, 113u8, 57u8, 225u8, + 27u8, 25u8, 188u8, 120u8, 15u8, 40u8, 134u8, 169u8, 108u8, 134u8, 83u8, + 184u8, 223u8, 170u8, 194u8, 19u8, 168u8, 43u8, 119u8, 76u8, 94u8, + 154u8, + ], + ) + } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_identity::types::AuthorityProperties< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "UsernameAuthorities", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_identity::types::AuthorityProperties< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "UsernameAuthorities", + Vec::new(), + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "AccountOfUsername", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::subxt::utils::AccountId32, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "AccountOfUsername", + Vec::new(), + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::subxt::utils::AccountId32, ::core::primitive::u32), + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "PendingUsernames", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + (::subxt::utils::AccountId32, ::core::primitive::u32), + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Identity", + "PendingUsernames", + Vec::new(), + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, ], ) } @@ -14691,7 +15735,7 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The amount held on deposit for a registered identity"] + #[doc = " The amount held on deposit for a registered identity."] pub fn basic_deposit( &self, ) -> ::subxt::constants::Address<::core::primitive::u128> { @@ -14705,13 +15749,11 @@ pub mod api { ], ) } - #[doc = " The amount held on deposit per additional field for a registered identity."] - pub fn field_deposit( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { + #[doc = " The amount held on deposit per encoded byte for a registered identity."] + pub fn byte_deposit(&self) -> ::subxt::constants::Address<::core::primitive::u128> { ::subxt::constants::Address::new_static( "Identity", - "FieldDeposit", + "ByteDeposit", [ 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, @@ -14750,14 +15792,14 @@ pub mod api { ], ) } - #[doc = " Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O"] - #[doc = " required to access an identity, but can be pretty high."] - pub fn max_additional_fields( + #[doc = " Maximum number of registrars allowed in the system. Needed to bound the complexity"] + #[doc = " of, e.g., updating judgements."] + pub fn max_registrars( &self, ) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( "Identity", - "MaxAdditionalFields", + "MaxRegistrars", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -14766,14 +15808,43 @@ pub mod api { ], ) } - #[doc = " Maxmimum number of registrars allowed in the system. Needed to bound the complexity"] - #[doc = " of, e.g., updating judgements."] - pub fn max_registrars( + #[doc = " The number of blocks within which a username grant must be accepted."] + pub fn pending_username_expiration( &self, ) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( "Identity", - "MaxRegistrars", + "PendingUsernameExpiration", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a suffix."] + pub fn max_suffix_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxSuffixLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a username, including its suffix and any system-added delimiters."] + pub fn max_username_length( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Identity", + "MaxUsernameLength", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -15141,7 +16212,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] pub fn bid( &self, value: ::core::primitive::u128, @@ -15157,7 +16236,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] pub fn unbid(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -15171,7 +16256,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] pub fn vouch( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -15189,7 +16290,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] pub fn unvouch(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -15203,7 +16310,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] pub fn vote( &self, candidate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -15220,7 +16334,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] pub fn defender_vote( &self, approve: ::core::primitive::bool, @@ -15237,7 +16357,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] pub fn payout(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -15250,7 +16379,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] pub fn waive_repay( &self, amount: ::core::primitive::u128, @@ -15266,7 +16396,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] pub fn found_society( &self, founder: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -15295,7 +16441,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] pub fn dissolve(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -15309,7 +16459,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] pub fn judge_suspended_member( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -15326,7 +16489,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] pub fn set_parameters( &self, max_members: ::core::primitive::u32, @@ -15351,7 +16525,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] pub fn punish_skeptic(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -15365,7 +16540,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] pub fn claim_membership(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -15378,7 +16554,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] pub fn bestow_membership( &self, candidate: ::subxt::utils::AccountId32, @@ -15394,7 +16572,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub fn kick_candidate( &self, candidate: ::subxt::utils::AccountId32, @@ -15410,7 +16592,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub fn resign_candidacy(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Society", @@ -15424,7 +16608,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] pub fn drop_candidate( &self, candidate: ::subxt::utils::AccountId32, @@ -15440,7 +16628,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] pub fn cleanup_candidacy( &self, candidate: ::subxt::utils::AccountId32, @@ -15458,7 +16648,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] pub fn cleanup_challenge( &self, challenge_round: ::core::primitive::u32, @@ -15915,19 +17107,20 @@ pub mod api { ) } #[doc = " The current members and their rank. Doesn't include `SuspendedMembers`."] - pub fn members_iter( + pub fn members( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::MemberRecord, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "Members", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 207u8, 227u8, 130u8, 247u8, 29u8, 198u8, 129u8, 83u8, 3u8, 6u8, 19u8, 37u8, 163u8, 227u8, 0u8, 94u8, 8u8, 166u8, 111u8, 70u8, 101u8, 65u8, @@ -15936,20 +17129,19 @@ pub mod api { ) } #[doc = " The current members and their rank. Doesn't include `SuspendedMembers`."] - pub fn members( + pub fn members_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::MemberRecord, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "Members", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 207u8, 227u8, 130u8, 247u8, 29u8, 198u8, 129u8, 83u8, 3u8, 6u8, 19u8, 37u8, 163u8, 227u8, 0u8, 94u8, 8u8, 166u8, 111u8, 70u8, 101u8, 65u8, @@ -15958,8 +17150,9 @@ pub mod api { ) } #[doc = " Information regarding rank-0 payouts, past and future."] - pub fn payouts_iter( + pub fn payouts( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::PayoutRecord< @@ -15969,14 +17162,14 @@ pub mod api { ::core::primitive::u128, )>, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "Payouts", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 251u8, 249u8, 170u8, 219u8, 131u8, 113u8, 178u8, 165u8, 173u8, 36u8, 175u8, 199u8, 57u8, 188u8, 59u8, 226u8, 4u8, 45u8, 36u8, 173u8, 113u8, @@ -15985,9 +17178,8 @@ pub mod api { ) } #[doc = " Information regarding rank-0 payouts, past and future."] - pub fn payouts( + pub fn payouts_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::PayoutRecord< @@ -15997,14 +17189,14 @@ pub mod api { ::core::primitive::u128, )>, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Society", "Payouts", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 251u8, 249u8, 170u8, 219u8, 131u8, 113u8, 178u8, 165u8, 173u8, 36u8, 175u8, 199u8, 57u8, 188u8, 59u8, 226u8, 4u8, 45u8, 36u8, 173u8, 113u8, @@ -16036,19 +17228,20 @@ pub mod api { } #[doc = " The current items in `Members` keyed by their unique index. Keys are densely populated"] #[doc = " `0..MemberCount` (does not include `MemberCount`)."] - pub fn member_by_index_iter( + pub fn member_by_index( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::AccountId32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "MemberByIndex", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 13u8, 233u8, 212u8, 149u8, 220u8, 158u8, 17u8, 27u8, 201u8, 61u8, 202u8, 248u8, 192u8, 37u8, 199u8, 73u8, 32u8, 140u8, 204u8, 206u8, @@ -16059,20 +17252,19 @@ pub mod api { } #[doc = " The current items in `Members` keyed by their unique index. Keys are densely populated"] #[doc = " `0..MemberCount` (does not include `MemberCount`)."] - pub fn member_by_index( + pub fn member_by_index_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::AccountId32, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "MemberByIndex", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 13u8, 233u8, 212u8, 149u8, 220u8, 158u8, 17u8, 27u8, 201u8, 61u8, 202u8, 248u8, 192u8, 37u8, 199u8, 73u8, 32u8, 140u8, 204u8, 206u8, @@ -16082,19 +17274,20 @@ pub mod api { ) } #[doc = " The set of suspended members, with their old membership record."] - pub fn suspended_members_iter( + pub fn suspended_members( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::MemberRecord, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "SuspendedMembers", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 156u8, 11u8, 75u8, 79u8, 74u8, 79u8, 98u8, 89u8, 63u8, 83u8, 84u8, 249u8, 177u8, 227u8, 113u8, 21u8, 26u8, 165u8, 129u8, 5u8, 129u8, @@ -16104,20 +17297,19 @@ pub mod api { ) } #[doc = " The set of suspended members, with their old membership record."] - pub fn suspended_members( + pub fn suspended_members_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::MemberRecord, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "SuspendedMembers", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 156u8, 11u8, 75u8, 79u8, 74u8, 79u8, 98u8, 89u8, 63u8, 83u8, 84u8, 249u8, 177u8, 227u8, 113u8, 21u8, 26u8, 165u8, 129u8, 5u8, 129u8, @@ -16174,22 +17366,23 @@ pub mod api { ], ) } - pub fn candidates_iter( + pub fn candidates( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::Candidacy< ::subxt::utils::AccountId32, ::core::primitive::u128, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "Candidates", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 52u8, 250u8, 201u8, 163u8, 0u8, 5u8, 156u8, 84u8, 96u8, 130u8, 228u8, 205u8, 34u8, 75u8, 121u8, 209u8, 82u8, 15u8, 247u8, 21u8, 54u8, 177u8, @@ -16197,23 +17390,22 @@ pub mod api { ], ) } - pub fn candidates( + pub fn candidates_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::Candidacy< ::subxt::utils::AccountId32, ::core::primitive::u128, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "Candidates", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 52u8, 250u8, 201u8, 163u8, 0u8, 5u8, 156u8, 84u8, 96u8, 130u8, 228u8, 205u8, 34u8, 75u8, 121u8, 209u8, 82u8, 15u8, 247u8, 21u8, 54u8, 177u8, @@ -16244,42 +17436,24 @@ pub mod api { ) } #[doc = " Double map from Candidate -> Voter -> (Maybe) Vote."] - pub fn votes_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_society::Vote, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Society", - "Votes", - vec![], - [ - 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, - 77u8, 214u8, 73u8, 158u8, 11u8, 247u8, 188u8, 156u8, 146u8, 59u8, - 160u8, 7u8, 109u8, 7u8, 131u8, 212u8, 185u8, 92u8, 172u8, 219u8, 140u8, - 238u8, - ], - ) - } - #[doc = " Double map from Candidate -> Voter -> (Maybe) Vote."] - pub fn votes_iter1( + pub fn votes( &self, _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::Vote, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "Votes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, 77u8, 214u8, 73u8, 158u8, 11u8, 247u8, 188u8, 156u8, 146u8, 59u8, @@ -16289,24 +17463,19 @@ pub mod api { ) } #[doc = " Double map from Candidate -> Voter -> (Maybe) Vote."] - pub fn votes( + pub fn votes_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::Vote, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "Votes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 34u8, 201u8, 151u8, 130u8, 149u8, 159u8, 32u8, 201u8, 127u8, 178u8, 77u8, 214u8, 73u8, 158u8, 11u8, 247u8, 188u8, 156u8, 146u8, 59u8, @@ -16316,21 +17485,22 @@ pub mod api { ) } #[doc = " Clear-cursor for Vote, map from Candidate -> (Maybe) Cursor."] - pub fn vote_clear_cursor_iter( + pub fn vote_clear_cursor( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "VoteClearCursor", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 157u8, 200u8, 216u8, 228u8, 235u8, 144u8, 13u8, 111u8, 252u8, 213u8, 209u8, 114u8, 157u8, 159u8, 47u8, 125u8, 45u8, 152u8, 27u8, 145u8, @@ -16340,22 +17510,21 @@ pub mod api { ) } #[doc = " Clear-cursor for Vote, map from Candidate -> (Maybe) Cursor."] - pub fn vote_clear_cursor( + pub fn vote_clear_cursor_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "VoteClearCursor", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 157u8, 200u8, 216u8, 228u8, 235u8, 144u8, 13u8, 111u8, 252u8, 213u8, 209u8, 114u8, 157u8, 159u8, 47u8, 125u8, 45u8, 152u8, 27u8, 145u8, @@ -16437,42 +17606,24 @@ pub mod api { ) } #[doc = " Votes for the defender, keyed by challenge round."] - pub fn defender_votes_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_society::Vote, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Society", - "DefenderVotes", - vec![], - [ - 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, - 110u8, 228u8, 48u8, 174u8, 16u8, 59u8, 72u8, 108u8, 7u8, 183u8, 119u8, - 171u8, 125u8, 159u8, 93u8, 129u8, 186u8, 115u8, 208u8, 5u8, 194u8, - 199u8, - ], - ) - } - #[doc = " Votes for the defender, keyed by challenge round."] - pub fn defender_votes_iter1( + pub fn defender_votes( &self, _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::Vote, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "DefenderVotes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, 110u8, 228u8, 48u8, 174u8, 16u8, 59u8, 72u8, 108u8, 7u8, 183u8, 119u8, @@ -16482,24 +17633,19 @@ pub mod api { ) } #[doc = " Votes for the defender, keyed by challenge round."] - pub fn defender_votes( + pub fn defender_votes_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_society::Vote, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Society", "DefenderVotes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 208u8, 137u8, 138u8, 215u8, 215u8, 207u8, 236u8, 140u8, 175u8, 50u8, 110u8, 228u8, 48u8, 174u8, 16u8, 59u8, 72u8, 108u8, 7u8, 183u8, 119u8, @@ -16811,7 +17957,14 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] pub fn as_recovered( &self, account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -16822,13 +17975,20 @@ pub mod api { "as_recovered", types::AsRecovered { account, call: ::std::boxed::Box::new(call) }, [ - 177u8, 16u8, 54u8, 27u8, 39u8, 117u8, 130u8, 117u8, 103u8, 52u8, 102u8, - 14u8, 228u8, 202u8, 90u8, 49u8, 5u8, 213u8, 187u8, 82u8, 17u8, 50u8, - 153u8, 205u8, 77u8, 100u8, 1u8, 33u8, 219u8, 125u8, 45u8, 147u8, + 52u8, 221u8, 147u8, 252u8, 118u8, 211u8, 70u8, 158u8, 205u8, 214u8, + 181u8, 63u8, 220u8, 200u8, 50u8, 38u8, 189u8, 21u8, 132u8, 66u8, 153u8, + 130u8, 15u8, 208u8, 156u8, 155u8, 18u8, 93u8, 162u8, 112u8, 64u8, 12u8, ], ) } - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] pub fn set_recovered( &self, lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -16845,7 +18005,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] pub fn create_recovery( &self, friends: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -16863,7 +18038,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] pub fn initiate_recovery( &self, account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -16879,7 +18064,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] pub fn vouch_recovery( &self, lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -16896,7 +18092,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] pub fn claim_recovery( &self, account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -16913,7 +18117,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] pub fn close_recovery( &self, rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -16930,7 +18144,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] pub fn remove_recovery(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Recovery", @@ -16944,7 +18168,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] pub fn cancel_recovered( &self, account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17086,8 +18316,9 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " The set of recoverable accounts and their recovery configuration."] - pub fn recoverable_iter( + pub fn recoverable( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_recovery::RecoveryConfig< @@ -17097,14 +18328,14 @@ pub mod api { ::subxt::utils::AccountId32, >, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Recovery", "Recoverable", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 112u8, 7u8, 56u8, 46u8, 138u8, 197u8, 63u8, 234u8, 140u8, 123u8, 145u8, 106u8, 189u8, 190u8, 247u8, 61u8, 250u8, 67u8, 107u8, 42u8, 170u8, @@ -17113,9 +18344,8 @@ pub mod api { ) } #[doc = " The set of recoverable accounts and their recovery configuration."] - pub fn recoverable( + pub fn recoverable_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_recovery::RecoveryConfig< @@ -17125,14 +18355,14 @@ pub mod api { ::subxt::utils::AccountId32, >, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Recovery", "Recoverable", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 112u8, 7u8, 56u8, 46u8, 138u8, 197u8, 63u8, 234u8, 140u8, 123u8, 145u8, 106u8, 189u8, 190u8, 247u8, 61u8, 250u8, 67u8, 107u8, 42u8, 170u8, @@ -17144,40 +18374,10 @@ pub mod api { #[doc = ""] #[doc = " First account is the account to be recovered, and the second account"] #[doc = " is the user trying to recover the account."] - pub fn active_recoveries_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_recovery::ActiveRecovery< - ::core::primitive::u32, - ::core::primitive::u128, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::subxt::utils::AccountId32, - >, - >, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Recovery", - "ActiveRecoveries", - vec![], - [ - 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, - 180u8, 197u8, 189u8, 71u8, 144u8, 88u8, 225u8, 13u8, 183u8, 84u8, - 244u8, 41u8, 164u8, 212u8, 153u8, 247u8, 191u8, 25u8, 162u8, 25u8, - 91u8, 123u8, - ], - ) - } - #[doc = " Active recovery attempts."] - #[doc = ""] - #[doc = " First account is the account to be recovered, and the second account"] - #[doc = " is the user trying to recover the account."] - pub fn active_recoveries_iter1( + pub fn active_recoveries( &self, _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_recovery::ActiveRecovery< @@ -17187,14 +18387,17 @@ pub mod api { ::subxt::utils::AccountId32, >, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, 180u8, 197u8, 189u8, 71u8, 144u8, 88u8, 225u8, 13u8, 183u8, 84u8, @@ -17207,10 +18410,8 @@ pub mod api { #[doc = ""] #[doc = " First account is the account to be recovered, and the second account"] #[doc = " is the user trying to recover the account."] - pub fn active_recoveries( + pub fn active_recoveries_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_recovery::ActiveRecovery< @@ -17220,17 +18421,14 @@ pub mod api { ::subxt::utils::AccountId32, >, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Recovery", "ActiveRecoveries", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 104u8, 252u8, 28u8, 142u8, 48u8, 26u8, 91u8, 201u8, 184u8, 163u8, 180u8, 197u8, 189u8, 71u8, 144u8, 88u8, 225u8, 13u8, 183u8, 84u8, @@ -17242,19 +18440,20 @@ pub mod api { #[doc = " The list of allowed proxy accounts."] #[doc = ""] #[doc = " Map from the user who can access it to the recovered account."] - pub fn proxy_iter( + pub fn proxy( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::AccountId32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Recovery", "Proxy", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 161u8, 242u8, 17u8, 183u8, 161u8, 47u8, 87u8, 110u8, 201u8, 177u8, 199u8, 157u8, 30u8, 131u8, 49u8, 89u8, 182u8, 86u8, 152u8, 19u8, 199u8, @@ -17265,20 +18464,19 @@ pub mod api { #[doc = " The list of allowed proxy accounts."] #[doc = ""] #[doc = " Map from the user who can access it to the recovered account."] - pub fn proxy( + pub fn proxy_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::AccountId32, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Recovery", "Proxy", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 161u8, 242u8, 17u8, 183u8, 161u8, 47u8, 87u8, 110u8, 201u8, 177u8, 199u8, 157u8, 30u8, 131u8, 49u8, 89u8, 182u8, 86u8, 152u8, 19u8, 199u8, @@ -17472,10 +18670,36 @@ pub mod api { const PALLET: &'static str = "Vesting"; const CALL: &'static str = "merge_schedules"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceRemoveVestingSchedule { + pub target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub schedule_index: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceRemoveVestingSchedule { + const PALLET: &'static str = "Vesting"; + const CALL: &'static str = "force_remove_vesting_schedule"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vest(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Vesting", @@ -17489,7 +18713,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vest_other( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17505,7 +18739,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vested_transfer( &self, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17525,7 +18771,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn force_vested_transfer( &self, source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -17547,7 +18806,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] pub fn merge_schedules( &self, schedule1_index: ::core::primitive::u32, @@ -17564,6 +18843,28 @@ pub mod api { ], ) } + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] + pub fn force_remove_vesting_schedule( + &self, + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + schedule_index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Vesting", + "force_remove_vesting_schedule", + types::ForceRemoveVestingSchedule { target, schedule_index }, + [ + 211u8, 253u8, 60u8, 15u8, 20u8, 53u8, 23u8, 13u8, 45u8, 223u8, 136u8, + 183u8, 162u8, 143u8, 196u8, 188u8, 35u8, 64u8, 174u8, 16u8, 47u8, 13u8, + 147u8, 173u8, 120u8, 143u8, 75u8, 89u8, 128u8, 187u8, 9u8, 18u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -17614,8 +18915,9 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " Information regarding the vesting of a given account."] - pub fn vesting_iter( + pub fn vesting( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -17624,14 +18926,14 @@ pub mod api { ::core::primitive::u32, >, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Vesting", "Vesting", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 95u8, 168u8, 217u8, 248u8, 149u8, 86u8, 195u8, 93u8, 73u8, 206u8, 105u8, 165u8, 33u8, 173u8, 232u8, 81u8, 147u8, 254u8, 50u8, 228u8, @@ -17641,9 +18943,8 @@ pub mod api { ) } #[doc = " Information regarding the vesting of a given account."] - pub fn vesting( + pub fn vesting_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -17652,14 +18953,14 @@ pub mod api { ::core::primitive::u32, >, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Vesting", "Vesting", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 95u8, 168u8, 217u8, 248u8, 149u8, 86u8, 195u8, 93u8, 73u8, 206u8, 105u8, 165u8, 33u8, 173u8, 232u8, 81u8, 147u8, 254u8, 50u8, 228u8, @@ -17860,10 +19161,82 @@ pub mod api { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "schedule_named_after"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetRetry { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub retries: ::core::primitive::u8, + pub period: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetRetry { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "set_retry"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetRetryNamed { + pub id: [::core::primitive::u8; 32usize], + pub retries: ::core::primitive::u8, + pub period: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetRetryNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "set_retry_named"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CancelRetry { + pub task: (::core::primitive::u32, ::core::primitive::u32), + } + impl ::subxt::blocks::StaticExtrinsic for CancelRetry { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel_retry"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CancelRetryNamed { + pub id: [::core::primitive::u8; 32usize], + } + impl ::subxt::blocks::StaticExtrinsic for CancelRetryNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel_retry_named"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] pub fn schedule( &self, when: ::core::primitive::u32, @@ -17884,13 +19257,13 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 123u8, 19u8, 39u8, 218u8, 201u8, 99u8, 2u8, 84u8, 148u8, 155u8, 9u8, - 143u8, 49u8, 126u8, 148u8, 7u8, 199u8, 65u8, 180u8, 32u8, 106u8, 248u8, - 57u8, 127u8, 1u8, 104u8, 34u8, 17u8, 226u8, 100u8, 17u8, 162u8, + 35u8, 19u8, 28u8, 165u8, 172u8, 38u8, 15u8, 253u8, 67u8, 92u8, 24u8, + 108u8, 26u8, 129u8, 198u8, 22u8, 169u8, 218u8, 20u8, 9u8, 225u8, 99u8, + 205u8, 195u8, 142u8, 213u8, 118u8, 251u8, 158u8, 183u8, 19u8, 193u8, ], ) } - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] pub fn cancel( &self, when: ::core::primitive::u32, @@ -17908,7 +19281,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] pub fn schedule_named( &self, id: [::core::primitive::u8; 32usize], @@ -17931,14 +19304,14 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 150u8, 185u8, 154u8, 108u8, 182u8, 15u8, 223u8, 151u8, 235u8, 73u8, - 209u8, 181u8, 134u8, 190u8, 37u8, 127u8, 241u8, 30u8, 113u8, 229u8, - 245u8, 102u8, 89u8, 198u8, 190u8, 202u8, 77u8, 75u8, 107u8, 165u8, - 249u8, 213u8, + 0u8, 166u8, 133u8, 251u8, 144u8, 195u8, 163u8, 255u8, 42u8, 123u8, 7u8, + 242u8, 119u8, 95u8, 130u8, 147u8, 65u8, 138u8, 107u8, 191u8, 58u8, + 157u8, 234u8, 14u8, 117u8, 49u8, 189u8, 206u8, 119u8, 106u8, 149u8, + 60u8, ], ) } - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] pub fn cancel_named( &self, id: [::core::primitive::u8; 32usize], @@ -17954,7 +19327,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] pub fn schedule_after( &self, after: ::core::primitive::u32, @@ -17975,13 +19348,13 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 176u8, 77u8, 164u8, 90u8, 186u8, 147u8, 12u8, 71u8, 80u8, 81u8, 39u8, - 218u8, 23u8, 34u8, 85u8, 242u8, 81u8, 26u8, 69u8, 30u8, 150u8, 243u8, - 250u8, 203u8, 34u8, 127u8, 9u8, 37u8, 104u8, 154u8, 188u8, 147u8, + 94u8, 63u8, 196u8, 63u8, 59u8, 47u8, 211u8, 255u8, 148u8, 125u8, 57u8, + 60u8, 89u8, 168u8, 236u8, 22u8, 99u8, 207u8, 5u8, 44u8, 43u8, 101u8, + 116u8, 164u8, 81u8, 11u8, 143u8, 148u8, 8u8, 23u8, 59u8, 230u8, ], ) } - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] pub fn schedule_named_after( &self, id: [::core::primitive::u8; 32usize], @@ -18004,9 +19377,101 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 245u8, 10u8, 2u8, 177u8, 65u8, 78u8, 17u8, 103u8, 135u8, 9u8, 37u8, - 126u8, 207u8, 117u8, 153u8, 67u8, 116u8, 121u8, 195u8, 36u8, 167u8, - 63u8, 55u8, 109u8, 69u8, 179u8, 250u8, 251u8, 9u8, 158u8, 187u8, 93u8, + 192u8, 1u8, 205u8, 150u8, 99u8, 21u8, 201u8, 223u8, 252u8, 69u8, 66u8, + 193u8, 124u8, 128u8, 182u8, 71u8, 14u8, 104u8, 147u8, 223u8, 134u8, + 19u8, 239u8, 206u8, 87u8, 134u8, 207u8, 97u8, 119u8, 220u8, 30u8, 31u8, + ], + ) + } + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + pub fn set_retry( + &self, + task: (::core::primitive::u32, ::core::primitive::u32), + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "set_retry", + types::SetRetry { task, retries, period }, + [ + 2u8, 242u8, 180u8, 69u8, 237u8, 168u8, 243u8, 93u8, 47u8, 222u8, 189u8, + 74u8, 233u8, 106u8, 54u8, 40u8, 160u8, 61u8, 78u8, 138u8, 232u8, 20u8, + 243u8, 17u8, 151u8, 194u8, 67u8, 200u8, 186u8, 192u8, 210u8, 214u8, + ], + ) + } + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + pub fn set_retry_named( + &self, + id: [::core::primitive::u8; 32usize], + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "set_retry_named", + types::SetRetryNamed { id, retries, period }, + [ + 240u8, 102u8, 255u8, 253u8, 52u8, 81u8, 164u8, 170u8, 184u8, 178u8, + 254u8, 126u8, 41u8, 247u8, 121u8, 22u8, 254u8, 136u8, 237u8, 37u8, + 11u8, 42u8, 227u8, 234u8, 132u8, 83u8, 109u8, 168u8, 31u8, 44u8, 231u8, + 70u8, + ], + ) + } + #[doc = "Removes the retry configuration of a task."] + pub fn cancel_retry( + &self, + task: (::core::primitive::u32, ::core::primitive::u32), + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "cancel_retry", + types::CancelRetry { task }, + [ + 142u8, 126u8, 127u8, 216u8, 64u8, 189u8, 42u8, 126u8, 63u8, 249u8, + 211u8, 202u8, 224u8, 197u8, 199u8, 240u8, 58u8, 94u8, 219u8, 177u8, + 20u8, 210u8, 153u8, 0u8, 127u8, 255u8, 235u8, 238u8, 170u8, 240u8, + 44u8, 49u8, + ], + ) + } + #[doc = "Cancel the retry configuration of a named task."] + pub fn cancel_retry_named( + &self, + id: [::core::primitive::u8; 32usize], + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Scheduler", + "cancel_retry_named", + types::CancelRetryNamed { id }, + [ + 76u8, 157u8, 253u8, 113u8, 162u8, 54u8, 98u8, 21u8, 62u8, 44u8, 155u8, + 202u8, 2u8, 28u8, 153u8, 219u8, 67u8, 166u8, 206u8, 79u8, 139u8, 3u8, + 119u8, 182u8, 254u8, 134u8, 143u8, 121u8, 155u8, 220u8, 192u8, 209u8, ], ) } @@ -18084,6 +19549,46 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Set a retry configuration for some task."] + pub struct RetrySet { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + pub period: ::core::primitive::u32, + pub retries: ::core::primitive::u8, + } + impl ::subxt::events::StaticEvent for RetrySet { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetrySet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Cancel a retry configuration for some task."] + pub struct RetryCancelled { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + } + impl ::subxt::events::StaticEvent for RetryCancelled { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetryCancelled"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The call for the provided hash was not found so the task has been aborted."] pub struct CallUnavailable { pub task: (::core::primitive::u32, ::core::primitive::u32), @@ -18122,6 +19627,26 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] + #[doc = "was not enough weight to reschedule it."] + pub struct RetryFailed { + pub task: (::core::primitive::u32, ::core::primitive::u32), + pub id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + } + impl ::subxt::events::StaticEvent for RetryFailed { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetryFailed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The given task can never be executed since it is overweight."] pub struct PermanentlyOverweight { pub task: (::core::primitive::u32, ::core::primitive::u32), @@ -18157,8 +19682,9 @@ pub mod api { ) } #[doc = " Items to be executed, indexed by the block number that they should be executed on."] - pub fn agenda_iter( + pub fn agenda( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -18167,6 +19693,7 @@ pub mod api { [::core::primitive::u8; 32usize], runtime_types::frame_support::traits::preimages::Bounded< runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, >, ::core::primitive::u32, runtime_types::rococo_runtime::OriginCaller, @@ -18174,25 +19701,24 @@ pub mod api { >, >, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Scheduler", "Agenda", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 47u8, 232u8, 223u8, 161u8, 75u8, 46u8, 163u8, 161u8, 33u8, 202u8, - 229u8, 97u8, 2u8, 80u8, 72u8, 82u8, 52u8, 2u8, 167u8, 143u8, 115u8, - 98u8, 199u8, 117u8, 28u8, 243u8, 215u8, 63u8, 1u8, 28u8, 67u8, 150u8, + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, ], ) } #[doc = " Items to be executed, indexed by the block number that they should be executed on."] - pub fn agenda( + pub fn agenda_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< @@ -18201,6 +19727,7 @@ pub mod api { [::core::primitive::u8; 32usize], runtime_types::frame_support::traits::preimages::Bounded< runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, >, ::core::primitive::u32, runtime_types::rococo_runtime::OriginCaller, @@ -18208,18 +19735,67 @@ pub mod api { >, >, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Scheduler", "Agenda", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), + [ + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, + ], + ) + } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_scheduler::RetryConfig<::core::primitive::u32>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Retries", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, + ], + ) + } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_scheduler::RetryConfig<::core::primitive::u32>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Scheduler", + "Retries", + Vec::new(), [ - 47u8, 232u8, 223u8, 161u8, 75u8, 46u8, 163u8, 161u8, 33u8, 202u8, - 229u8, 97u8, 2u8, 80u8, 72u8, 82u8, 52u8, 2u8, 167u8, 143u8, 115u8, - 98u8, 199u8, 117u8, 28u8, 243u8, 215u8, 63u8, 1u8, 28u8, 67u8, 150u8, + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, ], ) } @@ -18227,19 +19803,20 @@ pub mod api { #[doc = ""] #[doc = " For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4"] #[doc = " identities."] - pub fn lookup_iter( + pub fn lookup( &self, + _0: impl ::std::borrow::Borrow<[::core::primitive::u8; 32usize]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::core::primitive::u32, ::core::primitive::u32), - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Scheduler", "Lookup", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 24u8, 87u8, 96u8, 127u8, 136u8, 205u8, 238u8, 174u8, 71u8, 110u8, 65u8, 98u8, 228u8, 167u8, 99u8, 71u8, 171u8, 186u8, 12u8, 218u8, 137u8, 70u8, @@ -18251,20 +19828,19 @@ pub mod api { #[doc = ""] #[doc = " For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4"] #[doc = " identities."] - pub fn lookup( + pub fn lookup_root( &self, - _0: impl ::std::borrow::Borrow<[::core::primitive::u8; 32usize]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::core::primitive::u32, ::core::primitive::u32), - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Scheduler", "Lookup", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 24u8, 87u8, 96u8, 127u8, 136u8, 205u8, 238u8, 174u8, 71u8, 110u8, 65u8, 98u8, 228u8, 167u8, 99u8, 71u8, 171u8, 186u8, 12u8, 218u8, 137u8, 70u8, @@ -18520,7 +20096,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub fn proxy( &self, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18534,14 +20118,21 @@ pub mod api { "proxy", types::Proxy { real, force_proxy_type, call: ::std::boxed::Box::new(call) }, [ - 7u8, 206u8, 9u8, 78u8, 180u8, 57u8, 118u8, 7u8, 239u8, 80u8, 177u8, - 85u8, 219u8, 217u8, 184u8, 73u8, 46u8, 131u8, 237u8, 106u8, 87u8, - 165u8, 58u8, 147u8, 38u8, 243u8, 196u8, 86u8, 177u8, 218u8, 92u8, - 223u8, + 13u8, 80u8, 56u8, 8u8, 144u8, 212u8, 239u8, 163u8, 168u8, 6u8, 207u8, + 75u8, 121u8, 132u8, 147u8, 241u8, 105u8, 155u8, 154u8, 173u8, 226u8, + 196u8, 34u8, 60u8, 242u8, 0u8, 83u8, 29u8, 38u8, 192u8, 92u8, 150u8, ], ) } - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] pub fn add_proxy( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18560,7 +20151,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] pub fn remove_proxy( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18578,7 +20175,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] pub fn remove_proxies(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Proxy", @@ -18592,7 +20194,24 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] pub fn create_pure( &self, proxy_type: runtime_types::rococo_runtime::ProxyType, @@ -18610,7 +20229,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] pub fn kill_pure( &self, spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18630,7 +20264,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub fn announce( &self, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18648,7 +20296,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub fn remove_announcement( &self, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18665,7 +20322,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] pub fn reject_announcement( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18682,7 +20348,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub fn proxy_announced( &self, delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -18702,10 +20378,9 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 191u8, 22u8, 232u8, 9u8, 77u8, 135u8, 137u8, 13u8, 103u8, 132u8, 244u8, - 176u8, 86u8, 49u8, 252u8, 193u8, 124u8, 202u8, 202u8, 47u8, 251u8, - 169u8, 108u8, 180u8, 99u8, 96u8, 64u8, 203u8, 213u8, 10u8, 114u8, - 132u8, + 43u8, 239u8, 211u8, 67u8, 182u8, 146u8, 90u8, 172u8, 12u8, 224u8, 95u8, + 28u8, 231u8, 214u8, 216u8, 67u8, 89u8, 98u8, 188u8, 73u8, 103u8, 40u8, + 51u8, 217u8, 219u8, 249u8, 216u8, 86u8, 211u8, 177u8, 82u8, 142u8, ], ) } @@ -18824,8 +20499,9 @@ pub mod api { impl StorageApi { #[doc = " The set of account proxies. Maps the account which has delegated to the accounts"] #[doc = " which are being delegated to, together with the amount held on deposit."] - pub fn proxies_iter( + pub fn proxies( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ( @@ -18838,14 +20514,14 @@ pub mod api { >, ::core::primitive::u128, ), - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Proxy", "Proxies", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 92u8, 131u8, 10u8, 14u8, 241u8, 148u8, 230u8, 81u8, 54u8, 152u8, 147u8, 180u8, 85u8, 28u8, 87u8, 215u8, 110u8, 13u8, 158u8, 207u8, 77u8, 102u8, @@ -18855,9 +20531,8 @@ pub mod api { } #[doc = " The set of account proxies. Maps the account which has delegated to the accounts"] #[doc = " which are being delegated to, together with the amount held on deposit."] - pub fn proxies( + pub fn proxies_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ( @@ -18870,14 +20545,14 @@ pub mod api { >, ::core::primitive::u128, ), + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Proxy", "Proxies", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 92u8, 131u8, 10u8, 14u8, 241u8, 148u8, 230u8, 81u8, 54u8, 152u8, 147u8, 180u8, 85u8, 28u8, 87u8, 215u8, 110u8, 13u8, 158u8, 207u8, 77u8, 102u8, @@ -18886,8 +20561,9 @@ pub mod api { ) } #[doc = " The announcements made by the proxy (key)."] - pub fn announcements_iter( + pub fn announcements( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ( @@ -18900,14 +20576,14 @@ pub mod api { >, ::core::primitive::u128, ), - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Proxy", "Announcements", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 129u8, 228u8, 198u8, 210u8, 90u8, 69u8, 151u8, 198u8, 206u8, 174u8, 148u8, 58u8, 134u8, 14u8, 53u8, 56u8, 234u8, 71u8, 84u8, 247u8, 246u8, @@ -18917,9 +20593,8 @@ pub mod api { ) } #[doc = " The announcements made by the proxy (key)."] - pub fn announcements( + pub fn announcements_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ( @@ -18932,14 +20607,14 @@ pub mod api { >, ::core::primitive::u128, ), + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Proxy", "Announcements", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 129u8, 228u8, 198u8, 210u8, 90u8, 69u8, 151u8, 198u8, 206u8, 174u8, 148u8, 58u8, 134u8, 14u8, 53u8, 56u8, 234u8, 71u8, 84u8, 247u8, 246u8, @@ -19151,7 +20826,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] pub fn as_multi_threshold_1( &self, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -19165,13 +20851,51 @@ pub mod api { call: ::std::boxed::Box::new(call), }, [ - 94u8, 119u8, 239u8, 114u8, 7u8, 35u8, 44u8, 237u8, 31u8, 66u8, 162u8, - 122u8, 121u8, 127u8, 29u8, 218u8, 180u8, 148u8, 215u8, 62u8, 8u8, 72u8, - 157u8, 196u8, 185u8, 255u8, 95u8, 161u8, 122u8, 223u8, 248u8, 34u8, + 38u8, 209u8, 212u8, 141u8, 34u8, 146u8, 8u8, 219u8, 0u8, 22u8, 255u8, + 173u8, 17u8, 82u8, 118u8, 15u8, 26u8, 201u8, 190u8, 223u8, 68u8, 114u8, + 142u8, 93u8, 5u8, 19u8, 159u8, 240u8, 126u8, 209u8, 255u8, 224u8, ], ) } - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub fn as_multi( &self, threshold: ::core::primitive::u16, @@ -19193,14 +20917,42 @@ pub mod api { max_weight, }, [ - 49u8, 178u8, 209u8, 39u8, 235u8, 198u8, 188u8, 204u8, 40u8, 148u8, - 170u8, 14u8, 250u8, 151u8, 3u8, 14u8, 188u8, 89u8, 26u8, 15u8, 95u8, - 222u8, 182u8, 157u8, 130u8, 113u8, 210u8, 86u8, 151u8, 228u8, 34u8, - 222u8, + 99u8, 73u8, 213u8, 117u8, 31u8, 193u8, 46u8, 41u8, 33u8, 235u8, 221u8, + 208u8, 97u8, 22u8, 210u8, 90u8, 182u8, 241u8, 110u8, 57u8, 94u8, 6u8, + 111u8, 238u8, 215u8, 169u8, 186u8, 78u8, 6u8, 68u8, 93u8, 56u8, ], ) } - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub fn approve_as_multi( &self, threshold: ::core::primitive::u16, @@ -19228,7 +20980,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] pub fn cancel_as_multi( &self, threshold: ::core::primitive::u16, @@ -19343,34 +21115,10 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " The set of open multisig operations."] - pub fn multisigs_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_multisig::Multisig< - ::core::primitive::u32, - ::core::primitive::u128, - ::subxt::utils::AccountId32, - >, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Multisig", - "Multisigs", - vec![], - [ - 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, - 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, - 37u8, 100u8, 14u8, 162u8, 158u8, 161u8, 48u8, 117u8, 102u8, 61u8, - ], - ) - } - #[doc = " The set of open multisig operations."] - pub fn multisigs_iter1( + pub fn multisigs( &self, _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow<[::core::primitive::u8; 32usize]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_multisig::Multisig< @@ -19378,14 +21126,17 @@ pub mod api { ::core::primitive::u128, ::subxt::utils::AccountId32, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Multisig", "Multisigs", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, @@ -19394,10 +21145,8 @@ pub mod api { ) } #[doc = " The set of open multisig operations."] - pub fn multisigs( + pub fn multisigs_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - _1: impl ::std::borrow::Borrow<[::core::primitive::u8; 32usize]>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_multisig::Multisig< @@ -19405,17 +21154,14 @@ pub mod api { ::core::primitive::u128, ::subxt::utils::AccountId32, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Multisig", "Multisigs", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 154u8, 109u8, 45u8, 18u8, 155u8, 151u8, 81u8, 28u8, 86u8, 127u8, 189u8, 151u8, 49u8, 61u8, 12u8, 149u8, 84u8, 61u8, 110u8, 197u8, 200u8, 140u8, @@ -19559,10 +21305,30 @@ pub mod api { const PALLET: &'static str = "Preimage"; const CALL: &'static str = "unrequest_preimage"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EnsureUpdated { + pub hashes: ::std::vec::Vec<::subxt::utils::H256>, + } + impl ::subxt::blocks::StaticExtrinsic for EnsureUpdated { + const PALLET: &'static str = "Preimage"; + const CALL: &'static str = "ensure_updated"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] pub fn note_preimage( &self, bytes: ::std::vec::Vec<::core::primitive::u8>, @@ -19578,7 +21344,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] pub fn unnote_preimage( &self, hash: ::subxt::utils::H256, @@ -19595,7 +21366,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] pub fn request_preimage( &self, hash: ::subxt::utils::H256, @@ -19611,7 +21385,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] pub fn unrequest_preimage( &self, hash: ::subxt::utils::H256, @@ -19628,6 +21404,25 @@ pub mod api { ], ) } + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] + pub fn ensure_updated( + &self, + hashes: ::std::vec::Vec<::subxt::utils::H256>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Preimage", + "ensure_updated", + types::EnsureUpdated { hashes }, + [ + 254u8, 228u8, 88u8, 44u8, 126u8, 235u8, 188u8, 153u8, 61u8, 27u8, + 103u8, 253u8, 163u8, 161u8, 113u8, 243u8, 87u8, 136u8, 2u8, 231u8, + 209u8, 188u8, 215u8, 106u8, 192u8, 225u8, 75u8, 125u8, 224u8, 96u8, + 221u8, 90u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -19694,22 +21489,23 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " The request status of a given hash."] - pub fn status_for_iter( + pub fn status_for( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_preimage::RequestStatus< + runtime_types::pallet_preimage::OldRequestStatus< ::subxt::utils::AccountId32, ::core::primitive::u128, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Preimage", "StatusFor", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 187u8, 100u8, 54u8, 112u8, 96u8, 129u8, 36u8, 149u8, 127u8, 226u8, 126u8, 171u8, 72u8, 189u8, 59u8, 126u8, 204u8, 125u8, 67u8, 204u8, @@ -19719,23 +21515,22 @@ pub mod api { ) } #[doc = " The request status of a given hash."] - pub fn status_for( + pub fn status_for_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_preimage::RequestStatus< + runtime_types::pallet_preimage::OldRequestStatus< ::subxt::utils::AccountId32, ::core::primitive::u128, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Preimage", "StatusFor", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 187u8, 100u8, 54u8, 112u8, 96u8, 129u8, 36u8, 149u8, 127u8, 226u8, 126u8, 171u8, 72u8, 189u8, 59u8, 126u8, 204u8, 125u8, 67u8, 204u8, @@ -19744,12 +21539,39 @@ pub mod api { ], ) } - pub fn preimage_for_iter( + #[doc = " The request status of a given hash."] + pub fn request_status_for( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - ::core::primitive::u8, + runtime_types::pallet_preimage::RequestStatus< + ::subxt::utils::AccountId32, + runtime_types::frame_support::traits::tokens::fungible::HoldConsideration, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Preimage", + "RequestStatusFor", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 72u8, 59u8, 254u8, 211u8, 96u8, 223u8, 10u8, 64u8, 6u8, 139u8, 213u8, + 85u8, 14u8, 29u8, 166u8, 37u8, 140u8, 124u8, 186u8, 156u8, 172u8, + 157u8, 73u8, 5u8, 121u8, 117u8, 51u8, 6u8, 249u8, 203u8, 75u8, 190u8, + ], + ) + } + #[doc = " The request status of a given hash."] + pub fn request_status_for_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_preimage::RequestStatus< + ::subxt::utils::AccountId32, + runtime_types::frame_support::traits::tokens::fungible::HoldConsideration, >, (), (), @@ -19757,32 +21579,35 @@ pub mod api { > { ::subxt::storage::address::Address::new_static( "Preimage", - "PreimageFor", - vec![], + "RequestStatusFor", + Vec::new(), [ - 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, - 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, - 208u8, 49u8, 156u8, 200u8, 255u8, 109u8, 200u8, 210u8, 134u8, 24u8, - 139u8, + 72u8, 59u8, 254u8, 211u8, 96u8, 223u8, 10u8, 64u8, 6u8, 139u8, 213u8, + 85u8, 14u8, 29u8, 166u8, 37u8, 140u8, 124u8, 186u8, 156u8, 172u8, + 157u8, 73u8, 5u8, 121u8, 117u8, 51u8, 6u8, 249u8, 203u8, 75u8, 190u8, ], ) } - pub fn preimage_for_iter1( + pub fn preimage_for( &self, _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Preimage", "PreimageFor", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, @@ -19791,26 +21616,21 @@ pub mod api { ], ) } - pub fn preimage_for( + pub fn preimage_for_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, - _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Preimage", "PreimageFor", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 106u8, 5u8, 17u8, 46u8, 6u8, 184u8, 177u8, 113u8, 169u8, 34u8, 119u8, 141u8, 117u8, 40u8, 30u8, 94u8, 187u8, 35u8, 206u8, 216u8, 143u8, @@ -19822,6 +21642,261 @@ pub mod api { } } } + pub mod asset_rate { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_asset_rate::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_asset_rate::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Create { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + pub rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::blocks::StaticExtrinsic for Create { + const PALLET: &'static str = "AssetRate"; + const CALL: &'static str = "create"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Update { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + pub rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::blocks::StaticExtrinsic for Update { + const PALLET: &'static str = "AssetRate"; + const CALL: &'static str = "update"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Remove { + pub asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + } + impl ::subxt::blocks::StaticExtrinsic for Remove { + const PALLET: &'static str = "AssetRate"; + const CALL: &'static str = "remove"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] + pub fn create( + &self, + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "AssetRate", + "create", + types::Create { asset_kind: ::std::boxed::Box::new(asset_kind), rate }, + [ + 163u8, 173u8, 223u8, 197u8, 42u8, 251u8, 151u8, 159u8, 252u8, 132u8, + 225u8, 224u8, 207u8, 127u8, 38u8, 0u8, 101u8, 46u8, 29u8, 65u8, 2u8, + 241u8, 3u8, 79u8, 218u8, 10u8, 159u8, 122u8, 48u8, 7u8, 225u8, 103u8, + ], + ) + } + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] + pub fn update( + &self, + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "AssetRate", + "update", + types::Update { asset_kind: ::std::boxed::Box::new(asset_kind), rate }, + [ + 21u8, 51u8, 198u8, 111u8, 185u8, 155u8, 215u8, 34u8, 5u8, 135u8, 138u8, + 77u8, 76u8, 158u8, 63u8, 240u8, 117u8, 39u8, 83u8, 146u8, 70u8, 136u8, + 61u8, 159u8, 30u8, 66u8, 85u8, 41u8, 122u8, 174u8, 25u8, 49u8, + ], + ) + } + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] + pub fn remove( + &self, + asset_kind : runtime_types :: polkadot_runtime_common :: impls :: VersionedLocatableAsset, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "AssetRate", + "remove", + types::Remove { asset_kind: ::std::boxed::Box::new(asset_kind) }, + [ + 205u8, 34u8, 63u8, 131u8, 204u8, 76u8, 186u8, 233u8, 160u8, 45u8, + 231u8, 159u8, 186u8, 60u8, 97u8, 218u8, 174u8, 144u8, 106u8, 58u8, + 69u8, 23u8, 244u8, 129u8, 19u8, 250u8, 16u8, 99u8, 165u8, 165u8, 101u8, + 18u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_asset_rate::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetRateCreated { + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + pub rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::events::StaticEvent for AssetRateCreated { + const PALLET: &'static str = "AssetRate"; + const EVENT: &'static str = "AssetRateCreated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetRateRemoved { + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + } + impl ::subxt::events::StaticEvent for AssetRateRemoved { + const PALLET: &'static str = "AssetRate"; + const EVENT: &'static str = "AssetRateRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetRateUpdated { + pub asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + pub old: runtime_types::sp_arithmetic::fixed_point::FixedU128, + pub new: runtime_types::sp_arithmetic::fixed_point::FixedU128, + } + impl ::subxt::events::StaticEvent for AssetRateUpdated { + const PALLET: &'static str = "AssetRate"; + const EVENT: &'static str = "AssetRateUpdated"; + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Maps an asset to its fixed point representation in the native balance."] + #[doc = ""] + #[doc = " E.g. `native_amount = asset_amount * ConversionRateToNative::::get(asset_kind)`"] + pub fn conversion_rate_to_native( + &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::fixed_point::FixedU128, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "AssetRate", + "ConversionRateToNative", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, + ], + ) + } + #[doc = " Maps an asset to its fixed point representation in the native balance."] + #[doc = ""] + #[doc = " E.g. `native_amount = asset_amount * ConversionRateToNative::::get(asset_kind)`"] + pub fn conversion_rate_to_native_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::sp_arithmetic::fixed_point::FixedU128, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "AssetRate", + "ConversionRateToNative", + Vec::new(), + [ + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, + ], + ) + } + } + } + } pub mod bounties { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] @@ -20004,7 +22079,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] pub fn propose_bounty( &self, value: ::core::primitive::u128, @@ -20021,7 +22107,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn approve_bounty( &self, bounty_id: ::core::primitive::u32, @@ -20038,7 +22130,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn propose_curator( &self, bounty_id: ::core::primitive::u32, @@ -20056,7 +22153,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn unassign_curator( &self, bounty_id: ::core::primitive::u32, @@ -20073,7 +22186,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn accept_curator( &self, bounty_id: ::core::primitive::u32, @@ -20089,7 +22208,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn award_bounty( &self, bounty_id: ::core::primitive::u32, @@ -20106,7 +22234,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn claim_bounty( &self, bounty_id: ::core::primitive::u32, @@ -20123,7 +22258,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn close_bounty( &self, bounty_id: ::core::primitive::u32, @@ -20140,7 +22283,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn extend_bounty_expiry( &self, bounty_id: ::core::primitive::u32, @@ -20298,6 +22449,82 @@ pub mod api { const PALLET: &'static str = "Bounties"; const EVENT: &'static str = "BountyExtended"; } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty is approved."] + pub struct BountyApproved { + pub index: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BountyApproved { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "BountyApproved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty curator is proposed."] + pub struct CuratorProposed { + pub bounty_id: ::core::primitive::u32, + pub curator: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for CuratorProposed { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "CuratorProposed"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty curator is unassigned."] + pub struct CuratorUnassigned { + pub bounty_id: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for CuratorUnassigned { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "CuratorUnassigned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bounty curator is accepted."] + pub struct CuratorAccepted { + pub bounty_id: ::core::primitive::u32, + pub curator: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for CuratorAccepted { + const PALLET: &'static str = "Bounties"; + const EVENT: &'static str = "CuratorAccepted"; + } } pub mod storage { use super::runtime_types; @@ -20326,8 +22553,9 @@ pub mod api { ) } #[doc = " Bounties that have been made."] - pub fn bounties_iter( + pub fn bounties( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_bounties::Bounty< @@ -20335,14 +22563,14 @@ pub mod api { ::core::primitive::u128, ::core::primitive::u32, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Bounties", "Bounties", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 183u8, 96u8, 172u8, 86u8, 167u8, 129u8, 51u8, 179u8, 238u8, 155u8, 196u8, 77u8, 158u8, 102u8, 188u8, 19u8, 79u8, 178u8, 145u8, 189u8, @@ -20352,9 +22580,8 @@ pub mod api { ) } #[doc = " Bounties that have been made."] - pub fn bounties( + pub fn bounties_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_bounties::Bounty< @@ -20362,14 +22589,14 @@ pub mod api { ::core::primitive::u128, ::core::primitive::u32, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Bounties", "Bounties", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 183u8, 96u8, 172u8, 86u8, 167u8, 129u8, 51u8, 179u8, 238u8, 155u8, 196u8, 77u8, 158u8, 102u8, 188u8, 19u8, 79u8, 178u8, 145u8, 189u8, @@ -20379,21 +22606,22 @@ pub mod api { ) } #[doc = " The description of each bounty."] - pub fn bounty_descriptions_iter( + pub fn bounty_descriptions( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Bounties", "BountyDescriptions", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 71u8, 40u8, 133u8, 84u8, 55u8, 207u8, 169u8, 189u8, 160u8, 51u8, 202u8, 144u8, 15u8, 226u8, 97u8, 114u8, 54u8, 247u8, 53u8, 26u8, 36u8, 54u8, @@ -20402,22 +22630,21 @@ pub mod api { ) } #[doc = " The description of each bounty."] - pub fn bounty_descriptions( + pub fn bounty_descriptions_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Bounties", "BountyDescriptions", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 71u8, 40u8, 133u8, 84u8, 55u8, 207u8, 169u8, 189u8, 160u8, 51u8, 202u8, 144u8, 15u8, 226u8, 97u8, 114u8, 54u8, 247u8, 53u8, 26u8, 36u8, 54u8, @@ -20755,7 +22982,25 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_child_bounty`]."] + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] pub fn add_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -20774,7 +23019,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] pub fn propose_curator( &self, parent_bounty_id: ::core::primitive::u32, @@ -20793,7 +23052,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn accept_curator( &self, parent_bounty_id: ::core::primitive::u32, @@ -20811,7 +23088,40 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn unassign_curator( &self, parent_bounty_id: ::core::primitive::u32, @@ -20829,7 +23139,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::award_child_bounty`]."] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] pub fn award_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -20847,7 +23173,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_child_bounty`]."] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn claim_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -20864,7 +23205,28 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_child_bounty`]."] + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn close_child_bounty( &self, parent_bounty_id: ::core::primitive::u32, @@ -20994,19 +23356,20 @@ pub mod api { } #[doc = " Number of child bounties per parent bounty."] #[doc = " Map of parent bounty index to number of child bounties."] - pub fn parent_child_bounties_iter( + pub fn parent_child_bounties( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ParentChildBounties", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 52u8, 179u8, 242u8, 212u8, 91u8, 185u8, 176u8, 52u8, 100u8, 200u8, 1u8, 41u8, 184u8, 234u8, 234u8, 8u8, 123u8, 252u8, 131u8, 55u8, 109u8, @@ -21016,20 +23379,19 @@ pub mod api { } #[doc = " Number of child bounties per parent bounty."] #[doc = " Map of parent bounty index to number of child bounties."] - pub fn parent_child_bounties( + pub fn parent_child_bounties_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ParentChildBounties", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 52u8, 179u8, 242u8, 212u8, 91u8, 185u8, 176u8, 52u8, 100u8, 200u8, 1u8, 41u8, 184u8, 234u8, 234u8, 8u8, 123u8, 252u8, 131u8, 55u8, 109u8, @@ -21038,35 +23400,10 @@ pub mod api { ) } #[doc = " Child bounties that have been added."] - pub fn child_bounties_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_child_bounties::ChildBounty< - ::subxt::utils::AccountId32, - ::core::primitive::u128, - ::core::primitive::u32, - >, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ChildBounties", - "ChildBounties", - vec![], - [ - 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, - 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, - 154u8, 137u8, 126u8, 249u8, 238u8, 156u8, 233u8, 78u8, 28u8, 95u8, - 242u8, 147u8, - ], - ) - } - #[doc = " Child bounties that have been added."] - pub fn child_bounties_iter1( + pub fn child_bounties( &self, _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_child_bounties::ChildBounty< @@ -21074,14 +23411,17 @@ pub mod api { ::core::primitive::u128, ::core::primitive::u32, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBounties", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, @@ -21091,10 +23431,8 @@ pub mod api { ) } #[doc = " Child bounties that have been added."] - pub fn child_bounties( + pub fn child_bounties_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_child_bounties::ChildBounty< @@ -21102,17 +23440,14 @@ pub mod api { ::core::primitive::u128, ::core::primitive::u32, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBounties", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 165u8, 240u8, 158u8, 204u8, 183u8, 190u8, 129u8, 65u8, 226u8, 8u8, 182u8, 103u8, 46u8, 162u8, 35u8, 155u8, 131u8, 45u8, 163u8, 64u8, @@ -21122,21 +23457,22 @@ pub mod api { ) } #[doc = " The description of each child-bounty."] - pub fn child_bounty_descriptions_iter( + pub fn child_bounty_descriptions( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBountyDescriptions", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 192u8, 0u8, 220u8, 156u8, 109u8, 65u8, 113u8, 102u8, 119u8, 0u8, 109u8, 141u8, 211u8, 128u8, 237u8, 61u8, 28u8, 56u8, 206u8, 93u8, 183u8, 74u8, @@ -21145,22 +23481,21 @@ pub mod api { ) } #[doc = " The description of each child-bounty."] - pub fn child_bounty_descriptions( + pub fn child_bounty_descriptions_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::bounded_collections::bounded_vec::BoundedVec< ::core::primitive::u8, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildBountyDescriptions", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 192u8, 0u8, 220u8, 156u8, 109u8, 65u8, 113u8, 102u8, 119u8, 0u8, 109u8, 141u8, 211u8, 128u8, 237u8, 61u8, 28u8, 56u8, 206u8, 93u8, 183u8, 74u8, @@ -21169,19 +23504,20 @@ pub mod api { ) } #[doc = " The cumulative child-bounty curator fee for each parent bounty."] - pub fn children_curator_fees_iter( + pub fn children_curator_fees( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u128, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildrenCuratorFees", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 32u8, 16u8, 190u8, 193u8, 6u8, 80u8, 163u8, 16u8, 85u8, 111u8, 39u8, 141u8, 209u8, 70u8, 213u8, 167u8, 22u8, 12u8, 93u8, 17u8, 104u8, 94u8, @@ -21190,20 +23526,19 @@ pub mod api { ) } #[doc = " The cumulative child-bounty curator fee for each parent bounty."] - pub fn children_curator_fees( + pub fn children_curator_fees_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u128, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "ChildBounties", "ChildrenCuratorFees", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 32u8, 16u8, 190u8, 193u8, 6u8, 80u8, 163u8, 16u8, 85u8, 111u8, 39u8, 141u8, 209u8, 70u8, 213u8, 167u8, 22u8, 12u8, 93u8, 17u8, 104u8, 94u8, @@ -21249,12 +23584,12 @@ pub mod api { } } } - pub mod tips { + pub mod nis { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_tips::pallet::Error; + pub type Error = runtime_types::pallet_nis::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_tips::pallet::Call; + pub type Call = runtime_types::pallet_nis::pallet::Call; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -21270,13 +23605,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ReportAwesome { - pub reason: ::std::vec::Vec<::core::primitive::u8>, - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct PlaceBid { + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub duration: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for ReportAwesome { - const PALLET: &'static str = "Tips"; - const CALL: &'static str = "report_awesome"; + impl ::subxt::blocks::StaticExtrinsic for PlaceBid { + const PALLET: &'static str = "Nis"; + const CALL: &'static str = "place_bid"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21288,12 +23624,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RetractTip { - pub hash: ::subxt::utils::H256, + pub struct RetractBid { + #[codec(compact)] + pub amount: ::core::primitive::u128, + pub duration: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for RetractTip { - const PALLET: &'static str = "Tips"; - const CALL: &'static str = "retract_tip"; + impl ::subxt::blocks::StaticExtrinsic for RetractBid { + const PALLET: &'static str = "Nis"; + const CALL: &'static str = "retract_bid"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21305,15 +23643,31 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct TipNew { - pub reason: ::std::vec::Vec<::core::primitive::u8>, - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub struct FundDeficit; + impl ::subxt::blocks::StaticExtrinsic for FundDeficit { + const PALLET: &'static str = "Nis"; + const CALL: &'static str = "fund_deficit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ThawPrivate { #[codec(compact)] - pub tip_value: ::core::primitive::u128, + pub index: ::core::primitive::u32, + pub maybe_proportion: ::core::option::Option< + runtime_types::sp_arithmetic::per_things::Perquintill, + >, } - impl ::subxt::blocks::StaticExtrinsic for TipNew { - const PALLET: &'static str = "Tips"; - const CALL: &'static str = "tip_new"; + impl ::subxt::blocks::StaticExtrinsic for ThawPrivate { + const PALLET: &'static str = "Nis"; + const CALL: &'static str = "thaw_private"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21325,14 +23679,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Tip { - pub hash: ::subxt::utils::H256, + pub struct ThawCommunal { #[codec(compact)] - pub tip_value: ::core::primitive::u128, + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for Tip { - const PALLET: &'static str = "Tips"; - const CALL: &'static str = "tip"; + impl ::subxt::blocks::StaticExtrinsic for ThawCommunal { + const PALLET: &'static str = "Nis"; + const CALL: &'static str = "thaw_communal"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21344,12 +23697,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CloseTip { - pub hash: ::subxt::utils::H256, + pub struct Communify { + #[codec(compact)] + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for CloseTip { - const PALLET: &'static str = "Tips"; - const CALL: &'static str = "close_tip"; + impl ::subxt::blocks::StaticExtrinsic for Communify { + const PALLET: &'static str = "Nis"; + const CALL: &'static str = "communify"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21361,125 +23715,170 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SlashTip { - pub hash: ::subxt::utils::H256, + pub struct Privatize { + #[codec(compact)] + pub index: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for SlashTip { - const PALLET: &'static str = "Tips"; - const CALL: &'static str = "slash_tip"; + impl ::subxt::blocks::StaticExtrinsic for Privatize { + const PALLET: &'static str = "Nis"; + const CALL: &'static str = "privatize"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_awesome`]."] - pub fn report_awesome( + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] + pub fn place_bid( &self, - reason: ::std::vec::Vec<::core::primitive::u8>, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - ) -> ::subxt::tx::Payload { + amount: ::core::primitive::u128, + duration: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Tips", - "report_awesome", - types::ReportAwesome { reason, who }, + "Nis", + "place_bid", + types::PlaceBid { amount, duration }, [ - 184u8, 245u8, 162u8, 155u8, 89u8, 108u8, 138u8, 43u8, 1u8, 178u8, - 186u8, 173u8, 193u8, 197u8, 201u8, 118u8, 3u8, 154u8, 224u8, 6u8, - 162u8, 6u8, 74u8, 153u8, 90u8, 215u8, 52u8, 254u8, 114u8, 184u8, 39u8, - 123u8, + 138u8, 214u8, 63u8, 53u8, 233u8, 95u8, 186u8, 83u8, 235u8, 121u8, 4u8, + 41u8, 210u8, 214u8, 35u8, 196u8, 89u8, 102u8, 115u8, 130u8, 151u8, + 212u8, 13u8, 34u8, 198u8, 103u8, 160u8, 39u8, 22u8, 151u8, 216u8, + 243u8, ], ) } - #[doc = "See [`Pallet::retract_tip`]."] - pub fn retract_tip( + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] + pub fn retract_bid( &self, - hash: ::subxt::utils::H256, - ) -> ::subxt::tx::Payload { + amount: ::core::primitive::u128, + duration: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Tips", - "retract_tip", - types::RetractTip { hash }, + "Nis", + "retract_bid", + types::RetractBid { amount, duration }, + [ + 156u8, 140u8, 160u8, 45u8, 107u8, 72u8, 2u8, 129u8, 149u8, 89u8, 103u8, + 95u8, 189u8, 42u8, 0u8, 21u8, 51u8, 236u8, 113u8, 33u8, 136u8, 115u8, + 93u8, 223u8, 72u8, 139u8, 46u8, 76u8, 128u8, 134u8, 209u8, 252u8, + ], + ) + } + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] + pub fn fund_deficit(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Nis", + "fund_deficit", + types::FundDeficit {}, [ - 127u8, 232u8, 112u8, 136u8, 48u8, 227u8, 202u8, 51u8, 78u8, 191u8, - 248u8, 44u8, 159u8, 76u8, 101u8, 107u8, 212u8, 55u8, 85u8, 250u8, - 222u8, 181u8, 58u8, 130u8, 53u8, 103u8, 190u8, 31u8, 113u8, 195u8, - 186u8, 44u8, + 49u8, 183u8, 23u8, 249u8, 232u8, 74u8, 238u8, 100u8, 165u8, 242u8, + 42u8, 6u8, 58u8, 91u8, 28u8, 229u8, 5u8, 180u8, 108u8, 164u8, 63u8, + 20u8, 92u8, 122u8, 222u8, 149u8, 190u8, 194u8, 64u8, 114u8, 22u8, + 176u8, ], ) } - #[doc = "See [`Pallet::tip_new`]."] - pub fn tip_new( + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] + pub fn thaw_private( &self, - reason: ::std::vec::Vec<::core::primitive::u8>, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - tip_value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + maybe_proportion: ::core::option::Option< + runtime_types::sp_arithmetic::per_things::Perquintill, + >, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Tips", - "tip_new", - types::TipNew { reason, who, tip_value }, + "Nis", + "thaw_private", + types::ThawPrivate { index, maybe_proportion }, [ - 4u8, 118u8, 48u8, 220u8, 210u8, 247u8, 11u8, 205u8, 114u8, 31u8, 237u8, - 252u8, 172u8, 228u8, 209u8, 0u8, 0u8, 33u8, 188u8, 86u8, 151u8, 206u8, - 59u8, 13u8, 230u8, 4u8, 90u8, 242u8, 145u8, 216u8, 133u8, 85u8, + 202u8, 131u8, 103u8, 88u8, 165u8, 203u8, 191u8, 48u8, 99u8, 26u8, 1u8, + 133u8, 8u8, 139u8, 216u8, 195u8, 22u8, 91u8, 240u8, 188u8, 228u8, 54u8, + 140u8, 156u8, 66u8, 13u8, 53u8, 184u8, 157u8, 177u8, 227u8, 52u8, ], ) } - #[doc = "See [`Pallet::tip`]."] - pub fn tip( + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] + pub fn thaw_communal( &self, - hash: ::subxt::utils::H256, - tip_value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Tips", - "tip", - types::Tip { hash, tip_value }, + "Nis", + "thaw_communal", + types::ThawCommunal { index }, [ - 241u8, 5u8, 164u8, 248u8, 140u8, 60u8, 29u8, 9u8, 63u8, 208u8, 249u8, - 210u8, 221u8, 173u8, 70u8, 240u8, 50u8, 131u8, 80u8, 236u8, 131u8, - 101u8, 191u8, 49u8, 94u8, 216u8, 74u8, 234u8, 184u8, 167u8, 159u8, - 176u8, + 106u8, 64u8, 53u8, 173u8, 59u8, 135u8, 254u8, 38u8, 119u8, 2u8, 4u8, + 109u8, 21u8, 220u8, 218u8, 220u8, 34u8, 10u8, 86u8, 248u8, 166u8, + 226u8, 183u8, 117u8, 211u8, 16u8, 53u8, 236u8, 0u8, 187u8, 140u8, + 221u8, ], ) } - #[doc = "See [`Pallet::close_tip`]."] - pub fn close_tip( + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] + pub fn communify( &self, - hash: ::subxt::utils::H256, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Tips", - "close_tip", - types::CloseTip { hash }, + "Nis", + "communify", + types::Communify { index }, [ - 85u8, 213u8, 248u8, 146u8, 90u8, 110u8, 217u8, 109u8, 78u8, 6u8, 104u8, - 71u8, 184u8, 209u8, 148u8, 81u8, 145u8, 71u8, 151u8, 174u8, 25u8, - 238u8, 48u8, 0u8, 51u8, 102u8, 155u8, 143u8, 130u8, 157u8, 100u8, - 246u8, + 206u8, 141u8, 231u8, 98u8, 101u8, 34u8, 101u8, 190u8, 22u8, 246u8, + 238u8, 30u8, 48u8, 104u8, 128u8, 115u8, 49u8, 78u8, 30u8, 230u8, 59u8, + 173u8, 70u8, 89u8, 82u8, 212u8, 105u8, 236u8, 86u8, 244u8, 248u8, + 144u8, ], ) } - #[doc = "See [`Pallet::slash_tip`]."] - pub fn slash_tip( + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] + pub fn privatize( &self, - hash: ::subxt::utils::H256, - ) -> ::subxt::tx::Payload { + index: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Tips", - "slash_tip", - types::SlashTip { hash }, + "Nis", + "privatize", + types::Privatize { index }, [ - 127u8, 21u8, 252u8, 189u8, 121u8, 103u8, 54u8, 155u8, 71u8, 81u8, - 109u8, 0u8, 159u8, 151u8, 62u8, 81u8, 104u8, 31u8, 2u8, 83u8, 248u8, - 141u8, 252u8, 162u8, 173u8, 189u8, 252u8, 249u8, 54u8, 142u8, 108u8, - 19u8, + 228u8, 215u8, 197u8, 40u8, 194u8, 170u8, 139u8, 192u8, 214u8, 61u8, + 107u8, 132u8, 89u8, 122u8, 58u8, 12u8, 11u8, 231u8, 186u8, 73u8, 106u8, + 99u8, 134u8, 216u8, 206u8, 118u8, 221u8, 223u8, 187u8, 206u8, 246u8, + 255u8, ], ) } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_tips::pallet::Event; + pub type Event = runtime_types::pallet_nis::pallet::Event; pub mod events { use super::runtime_types; #[derive( @@ -21492,13 +23891,35 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A new tip suggestion has been opened."] - pub struct NewTip { - pub tip_hash: ::subxt::utils::H256, + #[doc = "A bid was successfully placed."] + pub struct BidPlaced { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + pub duration: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for BidPlaced { + const PALLET: &'static str = "Nis"; + const EVENT: &'static str = "BidPlaced"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A bid was successfully removed (before being accepted)."] + pub struct BidRetracted { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + pub duration: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for NewTip { - const PALLET: &'static str = "Tips"; - const EVENT: &'static str = "NewTip"; + impl ::subxt::events::StaticEvent for BidRetracted { + const PALLET: &'static str = "Nis"; + const EVENT: &'static str = "BidRetracted"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21510,13 +23931,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A tip suggestion has reached threshold and is closing."] - pub struct TipClosing { - pub tip_hash: ::subxt::utils::H256, + #[doc = "A bid was dropped from a queue because of another, more substantial, bid was present."] + pub struct BidDropped { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + pub duration: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for TipClosing { - const PALLET: &'static str = "Tips"; - const EVENT: &'static str = "TipClosing"; + impl ::subxt::events::StaticEvent for BidDropped { + const PALLET: &'static str = "Nis"; + const EVENT: &'static str = "BidDropped"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21528,15 +23951,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A tip suggestion has been closed."] - pub struct TipClosed { - pub tip_hash: ::subxt::utils::H256, + #[doc = "A bid was accepted. The balance may not be released until expiry."] + pub struct Issued { + pub index: ::core::primitive::u32, + pub expiry: ::core::primitive::u32, pub who: ::subxt::utils::AccountId32, - pub payout: ::core::primitive::u128, + pub proportion: runtime_types::sp_arithmetic::per_things::Perquintill, + pub amount: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for TipClosed { - const PALLET: &'static str = "Tips"; - const EVENT: &'static str = "TipClosed"; + impl ::subxt::events::StaticEvent for Issued { + const PALLET: &'static str = "Nis"; + const EVENT: &'static str = "Issued"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21548,15 +23973,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A tip suggestion has been retracted."] - pub struct TipRetracted { - pub tip_hash: ::subxt::utils::H256, + #[doc = "An receipt has been (at least partially) thawed."] + pub struct Thawed { + pub index: ::core::primitive::u32, + pub who: ::subxt::utils::AccountId32, + pub proportion: runtime_types::sp_arithmetic::per_things::Perquintill, + pub amount: ::core::primitive::u128, + pub dropped: ::core::primitive::bool, } - impl ::subxt::events::StaticEvent for TipRetracted { - const PALLET: &'static str = "Tips"; - const EVENT: &'static str = "TipRetracted"; + impl ::subxt::events::StaticEvent for Thawed { + const PALLET: &'static str = "Nis"; + const EVENT: &'static str = "Thawed"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -21566,122 +23996,195 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A tip suggestion has been slashed."] - pub struct TipSlashed { - pub tip_hash: ::subxt::utils::H256, - pub finder: ::subxt::utils::AccountId32, - pub deposit: ::core::primitive::u128, + #[doc = "An automatic funding of the deficit was made."] + pub struct Funded { + pub deficit: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Funded { + const PALLET: &'static str = "Nis"; + const EVENT: &'static str = "Funded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A receipt was transferred."] + pub struct Transferred { + pub from: ::subxt::utils::AccountId32, + pub to: ::subxt::utils::AccountId32, + pub index: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for TipSlashed { - const PALLET: &'static str = "Tips"; - const EVENT: &'static str = "TipSlashed"; + impl ::subxt::events::StaticEvent for Transferred { + const PALLET: &'static str = "Nis"; + const EVENT: &'static str = "Transferred"; } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " TipsMap that are not yet completed. Keyed by the hash of `(reason, who)` from the value."] - #[doc = " This has the insecure enumerable hash function since the key itself is already"] - #[doc = " guaranteed to be a secure hash."] - pub fn tips_iter( + #[doc = " The totals of items and balances within each queue. Saves a lot of storage reads in the"] + #[doc = " case of sparsely packed queues."] + #[doc = ""] + #[doc = " The vector is indexed by duration in `Period`s, offset by one, so information on the queue"] + #[doc = " whose duration is one `Period` would be storage `0`."] + pub fn queue_totals( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_tips::OpenTip< - ::subxt::utils::AccountId32, - ::core::primitive::u128, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( ::core::primitive::u32, - ::subxt::utils::H256, - >, - (), - (), + ::core::primitive::u128, + )>, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "Tips", - "Tips", + "Nis", + "QueueTotals", vec![], [ - 25u8, 31u8, 187u8, 85u8, 122u8, 104u8, 176u8, 120u8, 135u8, 32u8, - 135u8, 148u8, 193u8, 43u8, 143u8, 235u8, 82u8, 96u8, 162u8, 200u8, - 125u8, 117u8, 170u8, 70u8, 47u8, 248u8, 153u8, 70u8, 22u8, 194u8, 31u8, - 150u8, + 40u8, 120u8, 43u8, 203u8, 97u8, 129u8, 61u8, 184u8, 137u8, 45u8, 201u8, + 90u8, 227u8, 161u8, 52u8, 179u8, 9u8, 74u8, 104u8, 225u8, 209u8, 62u8, + 69u8, 222u8, 124u8, 202u8, 36u8, 137u8, 183u8, 102u8, 234u8, 58u8, ], ) } - #[doc = " TipsMap that are not yet completed. Keyed by the hash of `(reason, who)` from the value."] - #[doc = " This has the insecure enumerable hash function since the key itself is already"] - #[doc = " guaranteed to be a secure hash."] - pub fn tips( + #[doc = " The queues of bids. Indexed by duration (in `Period`s)."] + pub fn queues( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_tips::OpenTip< - ::subxt::utils::AccountId32, - ::core::primitive::u128, - ::core::primitive::u32, - ::subxt::utils::H256, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_nis::pallet::Bid< + ::core::primitive::u128, + ::subxt::utils::AccountId32, + >, >, ::subxt::storage::address::Yes, - (), - (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Tips", - "Tips", + "Nis", + "Queues", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 25u8, 31u8, 187u8, 85u8, 122u8, 104u8, 176u8, 120u8, 135u8, 32u8, - 135u8, 148u8, 193u8, 43u8, 143u8, 235u8, 82u8, 96u8, 162u8, 200u8, - 125u8, 117u8, 170u8, 70u8, 47u8, 248u8, 153u8, 70u8, 22u8, 194u8, 31u8, - 150u8, + 144u8, 181u8, 173u8, 134u8, 6u8, 165u8, 174u8, 91u8, 75u8, 241u8, + 142u8, 192u8, 246u8, 71u8, 132u8, 146u8, 181u8, 158u8, 125u8, 34u8, + 5u8, 151u8, 136u8, 148u8, 228u8, 11u8, 226u8, 229u8, 8u8, 50u8, 205u8, + 75u8, ], ) } - #[doc = " Simple preimage lookup from the reason's hash to the original data. Again, has an"] - #[doc = " insecure enumerable hash since the key is guaranteed to be the result of a secure hash."] - pub fn reasons_iter( + #[doc = " The queues of bids. Indexed by duration (in `Period`s)."] + pub fn queues_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::core::primitive::u8>, - (), + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_nis::pallet::Bid< + ::core::primitive::u128, + ::subxt::utils::AccountId32, + >, + >, (), ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Tips", - "Reasons", - vec![], + "Nis", + "Queues", + Vec::new(), [ - 99u8, 184u8, 64u8, 230u8, 54u8, 162u8, 73u8, 188u8, 49u8, 219u8, 170u8, - 2u8, 72u8, 75u8, 239u8, 136u8, 114u8, 93u8, 94u8, 195u8, 229u8, 55u8, - 188u8, 121u8, 214u8, 250u8, 115u8, 61u8, 221u8, 173u8, 14u8, 68u8, + 144u8, 181u8, 173u8, 134u8, 6u8, 165u8, 174u8, 91u8, 75u8, 241u8, + 142u8, 192u8, 246u8, 71u8, 132u8, 146u8, 181u8, 158u8, 125u8, 34u8, + 5u8, 151u8, 136u8, 148u8, 228u8, 11u8, 226u8, 229u8, 8u8, 50u8, 205u8, + 75u8, ], ) } - #[doc = " Simple preimage lookup from the reason's hash to the original data. Again, has an"] - #[doc = " insecure enumerable hash since the key is guaranteed to be the result of a secure hash."] - pub fn reasons( + #[doc = " Summary information over the general state."] + pub fn summary( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec<::core::primitive::u8>, + runtime_types::pallet_nis::pallet::SummaryRecord< + ::core::primitive::u32, + ::core::primitive::u128, + >, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), + > { + ::subxt::storage::address::Address::new_static( + "Nis", + "Summary", + vec![], + [ + 106u8, 21u8, 103u8, 47u8, 211u8, 234u8, 50u8, 222u8, 25u8, 209u8, 67u8, + 117u8, 111u8, 6u8, 231u8, 245u8, 109u8, 52u8, 177u8, 20u8, 179u8, + 253u8, 251u8, 197u8, 218u8, 163u8, 229u8, 187u8, 172u8, 122u8, 126u8, + 57u8, + ], + ) + } + #[doc = " The currently outstanding receipts, indexed according to the order of creation."] + pub fn receipts( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nis::pallet::ReceiptRecord< + ::subxt::utils::AccountId32, + ::core::primitive::u32, + ::core::primitive::u128, + >, + ::subxt::storage::address::Yes, (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Tips", - "Reasons", + "Nis", + "Receipts", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 99u8, 184u8, 64u8, 230u8, 54u8, 162u8, 73u8, 188u8, 49u8, 219u8, 170u8, - 2u8, 72u8, 75u8, 239u8, 136u8, 114u8, 93u8, 94u8, 195u8, 229u8, 55u8, - 188u8, 121u8, 214u8, 250u8, 115u8, 61u8, 221u8, 173u8, 14u8, 68u8, + 123u8, 179u8, 0u8, 14u8, 5u8, 132u8, 165u8, 192u8, 163u8, 22u8, 174u8, + 22u8, 252u8, 44u8, 167u8, 22u8, 116u8, 170u8, 186u8, 118u8, 131u8, 5u8, + 237u8, 121u8, 35u8, 146u8, 206u8, 239u8, 155u8, 108u8, 46u8, 0u8, + ], + ) + } + #[doc = " The currently outstanding receipts, indexed according to the order of creation."] + pub fn receipts_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_nis::pallet::ReceiptRecord< + ::subxt::utils::AccountId32, + ::core::primitive::u32, + ::core::primitive::u128, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "Nis", + "Receipts", + Vec::new(), + [ + 123u8, 179u8, 0u8, 14u8, 5u8, 132u8, 165u8, 192u8, 163u8, 22u8, 174u8, + 22u8, 252u8, 44u8, 167u8, 22u8, 116u8, 170u8, 186u8, 118u8, 131u8, 5u8, + 237u8, 121u8, 35u8, 146u8, 206u8, 239u8, 155u8, 108u8, 46u8, 0u8, ], ) } @@ -21691,15 +24194,59 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " Maximum acceptable reason length."] + #[doc = " The treasury's pallet id, used for deriving its sovereign account ID."] + pub fn pallet_id( + &self, + ) -> ::subxt::constants::Address + { + ::subxt::constants::Address::new_static( + "Nis", + "PalletId", + [ + 56u8, 243u8, 53u8, 83u8, 154u8, 179u8, 170u8, 80u8, 133u8, 173u8, 61u8, + 161u8, 47u8, 225u8, 146u8, 21u8, 50u8, 229u8, 248u8, 27u8, 104u8, 58u8, + 129u8, 197u8, 102u8, 160u8, 168u8, 205u8, 154u8, 42u8, 217u8, 53u8, + ], + ) + } + #[doc = " Number of duration queues in total. This sets the maximum duration supported, which is"] + #[doc = " this value multiplied by `Period`."] + pub fn queue_count(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Nis", + "QueueCount", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Maximum number of items that may be in each duration queue."] #[doc = ""] - #[doc = " Benchmarks depend on this value, be sure to update weights file when changing this value"] - pub fn maximum_reason_length( + #[doc = " Must be larger than zero."] + pub fn max_queue_len(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Nis", + "MaxQueueLen", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " Portion of the queue which is free from ordering and just a FIFO."] + #[doc = ""] + #[doc = " Must be no greater than `MaxQueueLen`."] + pub fn fifo_queue_len( &self, ) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Tips", - "MaximumReasonLength", + "Nis", + "FifoQueueLen", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -21708,13 +24255,30 @@ pub mod api { ], ) } - #[doc = " The amount held on deposit per byte within the tip report reason or bounty description."] - pub fn data_deposit_per_byte( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { + #[doc = " The base period for the duration queues. This is the common multiple across all"] + #[doc = " supported freezing durations that can be bid upon."] + pub fn base_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Tips", - "DataDepositPerByte", + "Nis", + "BasePeriod", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The minimum amount of funds that may be placed in a bid. Note that this"] + #[doc = " does not actually limit the amount which may be represented in a receipt since bids may"] + #[doc = " be split up by the system."] + #[doc = ""] + #[doc = " It should be at least big enough to ensure that there is no possible storage spam attack"] + #[doc = " or queue-filling attack."] + pub fn min_bid(&self) -> ::subxt::constants::Address<::core::primitive::u128> { + ::subxt::constants::Address::new_static( + "Nis", + "MinBid", [ 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, @@ -21722,11 +24286,32 @@ pub mod api { ], ) } - #[doc = " The period for which a tip remains open after is has achieved threshold tippers."] - pub fn tip_countdown(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + #[doc = " The minimum amount of funds which may intentionally be left remaining under a single"] + #[doc = " receipt."] + pub fn min_receipt( + &self, + ) -> ::subxt::constants::Address< + runtime_types::sp_arithmetic::per_things::Perquintill, + > { + ::subxt::constants::Address::new_static( + "Nis", + "MinReceipt", + [ + 184u8, 78u8, 161u8, 6u8, 214u8, 205u8, 82u8, 205u8, 126u8, 46u8, 7u8, + 198u8, 186u8, 10u8, 66u8, 116u8, 191u8, 223u8, 17u8, 246u8, 196u8, + 190u8, 222u8, 226u8, 62u8, 35u8, 191u8, 127u8, 60u8, 171u8, 85u8, + 201u8, + ], + ) + } + #[doc = " The number of blocks between consecutive attempts to dequeue bids and create receipts."] + #[doc = ""] + #[doc = " A larger value results in fewer storage hits each block, but a slower period to get to"] + #[doc = " the target."] + pub fn intake_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Tips", - "TipCountdown", + "Nis", + "IntakePeriod", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -21735,45 +24320,51 @@ pub mod api { ], ) } - #[doc = " The percent of the final tip which goes to the original reporter of the tip."] - pub fn tip_finders_fee( + #[doc = " The maximum amount of bids that can consolidated into receipts in a single intake. A"] + #[doc = " larger value here means less of the block available for transactions should there be a"] + #[doc = " glut of bids."] + pub fn max_intake_weight( &self, - ) -> ::subxt::constants::Address + ) -> ::subxt::constants::Address { ::subxt::constants::Address::new_static( - "Tips", - "TipFindersFee", + "Nis", + "MaxIntakeWeight", [ - 40u8, 171u8, 69u8, 196u8, 34u8, 184u8, 50u8, 128u8, 139u8, 192u8, 63u8, - 231u8, 249u8, 200u8, 252u8, 73u8, 244u8, 170u8, 51u8, 177u8, 106u8, - 47u8, 114u8, 234u8, 84u8, 104u8, 62u8, 118u8, 227u8, 50u8, 225u8, - 122u8, + 149u8, 252u8, 129u8, 80u8, 169u8, 36u8, 79u8, 127u8, 240u8, 156u8, + 56u8, 202u8, 219u8, 86u8, 5u8, 65u8, 245u8, 148u8, 138u8, 243u8, 210u8, + 128u8, 234u8, 216u8, 240u8, 219u8, 123u8, 235u8, 21u8, 158u8, 237u8, + 112u8, ], ) } - #[doc = " The amount held on deposit for placing a tip report."] - pub fn tip_report_deposit_base( + #[doc = " The maximum proportion which may be thawed and the period over which it is reset."] + pub fn thaw_throttle( &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { + ) -> ::subxt::constants::Address<( + runtime_types::sp_arithmetic::per_things::Perquintill, + ::core::primitive::u32, + )> { ::subxt::constants::Address::new_static( - "Tips", - "TipReportDepositBase", + "Nis", + "ThawThrottle", [ - 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, - 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, - 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + 41u8, 240u8, 41u8, 161u8, 238u8, 241u8, 63u8, 205u8, 122u8, 230u8, + 158u8, 65u8, 212u8, 229u8, 123u8, 215u8, 69u8, 204u8, 207u8, 193u8, + 149u8, 229u8, 193u8, 245u8, 210u8, 63u8, 106u8, 42u8, 27u8, 182u8, + 66u8, 167u8, ], ) } } } } - pub mod nis { + pub mod nis_counterpart_balances { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_nis::pallet::Error; + pub type Error = runtime_types::pallet_balances::pallet::Error2; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_nis::pallet::Call; + pub type Call = runtime_types::pallet_balances::pallet::Call2; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; @@ -21789,14 +24380,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct PlaceBid { + pub struct TransferAllowDeath { + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] - pub amount: ::core::primitive::u128, - pub duration: ::core::primitive::u32, + pub value: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for PlaceBid { - const PALLET: &'static str = "Nis"; - const CALL: &'static str = "place_bid"; + impl ::subxt::blocks::StaticExtrinsic for TransferAllowDeath { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "transfer_allow_death"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21808,14 +24399,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RetractBid { + pub struct ForceTransfer { + pub source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] - pub amount: ::core::primitive::u128, - pub duration: ::core::primitive::u32, + pub value: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for RetractBid { - const PALLET: &'static str = "Nis"; - const CALL: &'static str = "retract_bid"; + impl ::subxt::blocks::StaticExtrinsic for ForceTransfer { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "force_transfer"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21827,10 +24419,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct FundDeficit; - impl ::subxt::blocks::StaticExtrinsic for FundDeficit { - const PALLET: &'static str = "Nis"; - const CALL: &'static str = "fund_deficit"; + pub struct TransferKeepAlive { + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + #[codec(compact)] + pub value: ::core::primitive::u128, + } + impl ::subxt::blocks::StaticExtrinsic for TransferKeepAlive { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "transfer_keep_alive"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21842,16 +24438,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ThawPrivate { - #[codec(compact)] - pub index: ::core::primitive::u32, - pub maybe_proportion: ::core::option::Option< - runtime_types::sp_arithmetic::per_things::Perquintill, - >, + pub struct TransferAll { + pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub keep_alive: ::core::primitive::bool, } - impl ::subxt::blocks::StaticExtrinsic for ThawPrivate { - const PALLET: &'static str = "Nis"; - const CALL: &'static str = "thaw_private"; + impl ::subxt::blocks::StaticExtrinsic for TransferAll { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "transfer_all"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21863,13 +24456,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ThawCommunal { - #[codec(compact)] - pub index: ::core::primitive::u32, + pub struct ForceUnreserve { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + pub amount: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for ThawCommunal { - const PALLET: &'static str = "Nis"; - const CALL: &'static str = "thaw_communal"; + impl ::subxt::blocks::StaticExtrinsic for ForceUnreserve { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "force_unreserve"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21881,13 +24474,31 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Communify { + pub struct UpgradeAccounts { + pub who: ::std::vec::Vec<::subxt::utils::AccountId32>, + } + impl ::subxt::blocks::StaticExtrinsic for UpgradeAccounts { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "upgrade_accounts"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSetBalance { + pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] - pub index: ::core::primitive::u32, + pub new_free: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for Communify { - const PALLET: &'static str = "Nis"; - const CALL: &'static str = "communify"; + impl ::subxt::blocks::StaticExtrinsic for ForceSetBalance { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "force_set_balance"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -21899,140 +24510,202 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Privatize { + pub struct ForceAdjustTotalIssuance { + pub direction: runtime_types::pallet_balances::types::AdjustmentDirection, #[codec(compact)] - pub index: ::core::primitive::u32, + pub delta: ::core::primitive::u128, } - impl ::subxt::blocks::StaticExtrinsic for Privatize { - const PALLET: &'static str = "Nis"; - const CALL: &'static str = "privatize"; + impl ::subxt::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "force_adjust_total_issuance"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::place_bid`]."] - pub fn place_bid( + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] + pub fn transfer_allow_death( &self, - amount: ::core::primitive::u128, - duration: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Nis", - "place_bid", - types::PlaceBid { amount, duration }, + "NisCounterpartBalances", + "transfer_allow_death", + types::TransferAllowDeath { dest, value }, [ - 138u8, 214u8, 63u8, 53u8, 233u8, 95u8, 186u8, 83u8, 235u8, 121u8, 4u8, - 41u8, 210u8, 214u8, 35u8, 196u8, 89u8, 102u8, 115u8, 130u8, 151u8, - 212u8, 13u8, 34u8, 198u8, 103u8, 160u8, 39u8, 22u8, 151u8, 216u8, - 243u8, + 51u8, 166u8, 195u8, 10u8, 139u8, 218u8, 55u8, 130u8, 6u8, 194u8, 35u8, + 140u8, 27u8, 205u8, 214u8, 222u8, 102u8, 43u8, 143u8, 145u8, 86u8, + 219u8, 210u8, 147u8, 13u8, 39u8, 51u8, 21u8, 237u8, 179u8, 132u8, + 130u8, ], ) } - #[doc = "See [`Pallet::retract_bid`]."] - pub fn retract_bid( + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] + pub fn force_transfer( &self, - amount: ::core::primitive::u128, - duration: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Nis", - "retract_bid", - types::RetractBid { amount, duration }, + "NisCounterpartBalances", + "force_transfer", + types::ForceTransfer { source, dest, value }, [ - 156u8, 140u8, 160u8, 45u8, 107u8, 72u8, 2u8, 129u8, 149u8, 89u8, 103u8, - 95u8, 189u8, 42u8, 0u8, 21u8, 51u8, 236u8, 113u8, 33u8, 136u8, 115u8, - 93u8, 223u8, 72u8, 139u8, 46u8, 76u8, 128u8, 134u8, 209u8, 252u8, + 154u8, 93u8, 222u8, 27u8, 12u8, 248u8, 63u8, 213u8, 224u8, 86u8, 250u8, + 153u8, 249u8, 102u8, 83u8, 160u8, 79u8, 125u8, 105u8, 222u8, 77u8, + 180u8, 90u8, 105u8, 81u8, 217u8, 60u8, 25u8, 213u8, 51u8, 185u8, 96u8, ], ) } - #[doc = "See [`Pallet::fund_deficit`]."] - pub fn fund_deficit(&self) -> ::subxt::tx::Payload { + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] + pub fn transfer_keep_alive( + &self, + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + value: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Nis", - "fund_deficit", - types::FundDeficit {}, + "NisCounterpartBalances", + "transfer_keep_alive", + types::TransferKeepAlive { dest, value }, [ - 49u8, 183u8, 23u8, 249u8, 232u8, 74u8, 238u8, 100u8, 165u8, 242u8, - 42u8, 6u8, 58u8, 91u8, 28u8, 229u8, 5u8, 180u8, 108u8, 164u8, 63u8, - 20u8, 92u8, 122u8, 222u8, 149u8, 190u8, 194u8, 64u8, 114u8, 22u8, - 176u8, + 245u8, 14u8, 190u8, 193u8, 32u8, 210u8, 74u8, 92u8, 25u8, 182u8, 76u8, + 55u8, 247u8, 83u8, 114u8, 75u8, 143u8, 236u8, 117u8, 25u8, 54u8, 157u8, + 208u8, 207u8, 233u8, 89u8, 70u8, 161u8, 235u8, 242u8, 222u8, 59u8, ], ) } - #[doc = "See [`Pallet::thaw_private`]."] - pub fn thaw_private( + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] + pub fn transfer_all( &self, - index: ::core::primitive::u32, - maybe_proportion: ::core::option::Option< - runtime_types::sp_arithmetic::per_things::Perquintill, - >, - ) -> ::subxt::tx::Payload { + dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + keep_alive: ::core::primitive::bool, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Nis", - "thaw_private", - types::ThawPrivate { index, maybe_proportion }, + "NisCounterpartBalances", + "transfer_all", + types::TransferAll { dest, keep_alive }, [ - 202u8, 131u8, 103u8, 88u8, 165u8, 203u8, 191u8, 48u8, 99u8, 26u8, 1u8, - 133u8, 8u8, 139u8, 216u8, 195u8, 22u8, 91u8, 240u8, 188u8, 228u8, 54u8, - 140u8, 156u8, 66u8, 13u8, 53u8, 184u8, 157u8, 177u8, 227u8, 52u8, + 105u8, 132u8, 49u8, 144u8, 195u8, 250u8, 34u8, 46u8, 213u8, 248u8, + 112u8, 188u8, 81u8, 228u8, 136u8, 18u8, 67u8, 172u8, 37u8, 38u8, 238u8, + 9u8, 34u8, 15u8, 67u8, 34u8, 148u8, 195u8, 223u8, 29u8, 154u8, 6u8, ], ) } - #[doc = "See [`Pallet::thaw_communal`]."] - pub fn thaw_communal( + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] + pub fn force_unreserve( &self, - index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + amount: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Nis", - "thaw_communal", - types::ThawCommunal { index }, + "NisCounterpartBalances", + "force_unreserve", + types::ForceUnreserve { who, amount }, [ - 106u8, 64u8, 53u8, 173u8, 59u8, 135u8, 254u8, 38u8, 119u8, 2u8, 4u8, - 109u8, 21u8, 220u8, 218u8, 220u8, 34u8, 10u8, 86u8, 248u8, 166u8, - 226u8, 183u8, 117u8, 211u8, 16u8, 53u8, 236u8, 0u8, 187u8, 140u8, - 221u8, + 142u8, 151u8, 64u8, 205u8, 46u8, 64u8, 62u8, 122u8, 108u8, 49u8, 223u8, + 140u8, 120u8, 153u8, 35u8, 165u8, 187u8, 38u8, 157u8, 200u8, 123u8, + 199u8, 198u8, 168u8, 208u8, 159u8, 39u8, 134u8, 92u8, 103u8, 84u8, + 171u8, ], ) } - #[doc = "See [`Pallet::communify`]."] - pub fn communify( + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] + pub fn upgrade_accounts( &self, - index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + who: ::std::vec::Vec<::subxt::utils::AccountId32>, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Nis", - "communify", - types::Communify { index }, + "NisCounterpartBalances", + "upgrade_accounts", + types::UpgradeAccounts { who }, [ - 206u8, 141u8, 231u8, 98u8, 101u8, 34u8, 101u8, 190u8, 22u8, 246u8, - 238u8, 30u8, 48u8, 104u8, 128u8, 115u8, 49u8, 78u8, 30u8, 230u8, 59u8, - 173u8, 70u8, 89u8, 82u8, 212u8, 105u8, 236u8, 86u8, 244u8, 248u8, - 144u8, + 66u8, 200u8, 179u8, 104u8, 65u8, 2u8, 101u8, 56u8, 130u8, 161u8, 224u8, + 233u8, 255u8, 124u8, 70u8, 122u8, 8u8, 49u8, 103u8, 178u8, 68u8, 47u8, + 214u8, 166u8, 217u8, 116u8, 178u8, 50u8, 212u8, 164u8, 98u8, 226u8, ], ) } - #[doc = "See [`Pallet::privatize`]."] - pub fn privatize( + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] + pub fn force_set_balance( &self, - index: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new_free: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( - "Nis", - "privatize", - types::Privatize { index }, + "NisCounterpartBalances", + "force_set_balance", + types::ForceSetBalance { who, new_free }, [ - 228u8, 215u8, 197u8, 40u8, 194u8, 170u8, 139u8, 192u8, 214u8, 61u8, - 107u8, 132u8, 89u8, 122u8, 58u8, 12u8, 11u8, 231u8, 186u8, 73u8, 106u8, - 99u8, 134u8, 216u8, 206u8, 118u8, 221u8, 223u8, 187u8, 206u8, 246u8, - 255u8, + 114u8, 229u8, 59u8, 204u8, 180u8, 83u8, 17u8, 4u8, 59u8, 4u8, 55u8, + 39u8, 151u8, 196u8, 124u8, 60u8, 209u8, 65u8, 193u8, 11u8, 44u8, 164u8, + 116u8, 93u8, 169u8, 30u8, 199u8, 165u8, 55u8, 231u8, 223u8, 43u8, + ], + ) + } + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + pub fn force_adjust_total_issuance( + &self, + direction: runtime_types::pallet_balances::types::AdjustmentDirection, + delta: ::core::primitive::u128, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "NisCounterpartBalances", + "force_adjust_total_issuance", + types::ForceAdjustTotalIssuance { direction, delta }, + [ + 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, + 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, + 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, + 202u8, ], ) } } } #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_nis::pallet::Event; + pub type Event = runtime_types::pallet_balances::pallet::Event2; pub mod events { use super::runtime_types; #[derive( @@ -22045,15 +24718,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A bid was successfully placed."] - pub struct BidPlaced { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - pub duration: ::core::primitive::u32, + #[doc = "An account was created with some free balance."] + pub struct Endowed { + pub account: ::subxt::utils::AccountId32, + pub free_balance: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for BidPlaced { - const PALLET: &'static str = "Nis"; - const EVENT: &'static str = "BidPlaced"; + impl ::subxt::events::StaticEvent for Endowed { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Endowed"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -22065,15 +24737,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A bid was successfully removed (before being accepted)."] - pub struct BidRetracted { - pub who: ::subxt::utils::AccountId32, + #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] + #[doc = "resulting in an outright loss."] + pub struct DustLost { + pub account: ::subxt::utils::AccountId32, pub amount: ::core::primitive::u128, - pub duration: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for BidRetracted { - const PALLET: &'static str = "Nis"; - const EVENT: &'static str = "BidRetracted"; + impl ::subxt::events::StaticEvent for DustLost { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "DustLost"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -22085,15 +24757,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A bid was dropped from a queue because of another, more substantial, bid was present."] - pub struct BidDropped { - pub who: ::subxt::utils::AccountId32, + #[doc = "Transfer succeeded."] + pub struct Transfer { + pub from: ::subxt::utils::AccountId32, + pub to: ::subxt::utils::AccountId32, pub amount: ::core::primitive::u128, - pub duration: ::core::primitive::u32, } - impl ::subxt::events::StaticEvent for BidDropped { - const PALLET: &'static str = "Nis"; - const EVENT: &'static str = "BidDropped"; + impl ::subxt::events::StaticEvent for Transfer { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Transfer"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -22105,19 +24777,248 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A bid was accepted. The balance may not be released until expiry."] - pub struct Issued { - pub index: ::core::primitive::u32, - pub expiry: ::core::primitive::u32, + #[doc = "A balance was set by root."] + pub struct BalanceSet { pub who: ::subxt::utils::AccountId32, - pub proportion: runtime_types::sp_arithmetic::per_things::Perquintill, + pub free: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for BalanceSet { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "BalanceSet"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was reserved (moved from free to reserved)."] + pub struct Reserved { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Reserved { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Reserved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was unreserved (moved from reserved to free)."] + pub struct Unreserved { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Unreserved { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Unreserved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was moved from the reserve of the first account to the second account."] + #[doc = "Final argument indicates the destination balance type."] + pub struct ReserveRepatriated { + pub from: ::subxt::utils::AccountId32, + pub to: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + pub destination_status: + runtime_types::frame_support::traits::tokens::misc::BalanceStatus, + } + impl ::subxt::events::StaticEvent for ReserveRepatriated { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "ReserveRepatriated"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was deposited (e.g. for transaction fees)."] + pub struct Deposit { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Deposit { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Deposit"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] + pub struct Withdraw { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Withdraw { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Withdraw"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] + pub struct Slashed { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Slashed { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Slashed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was minted into an account."] + pub struct Minted { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Minted { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Minted"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was burned from an account."] + pub struct Burned { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Burned { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Burned"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was suspended from an account (it can be restored later)."] + pub struct Suspended { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Suspended { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Suspended"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some amount was restored into an account."] + pub struct Restored { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Restored { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Restored"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An account was upgraded."] + pub struct Upgraded { + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for Upgraded { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Upgraded"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] + pub struct Issued { pub amount: ::core::primitive::u128, } impl ::subxt::events::StaticEvent for Issued { - const PALLET: &'static str = "Nis"; + const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Issued"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22127,20 +25028,34 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An receipt has been (at least partially) thawed."] - pub struct Thawed { - pub index: ::core::primitive::u32, + #[doc = "Total issuance was decreased by `amount`, creating a debt to be balanced."] + pub struct Rescinded { + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Rescinded { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Rescinded"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was locked."] + pub struct Locked { pub who: ::subxt::utils::AccountId32, - pub proportion: runtime_types::sp_arithmetic::per_things::Perquintill, pub amount: ::core::primitive::u128, - pub dropped: ::core::primitive::bool, } - impl ::subxt::events::StaticEvent for Thawed { - const PALLET: &'static str = "Nis"; - const EVENT: &'static str = "Thawed"; + impl ::subxt::events::StaticEvent for Locked { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Locked"; } #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22150,13 +25065,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An automatic funding of the deficit was made."] - pub struct Funded { - pub deficit: ::core::primitive::u128, + #[doc = "Some balance was unlocked."] + pub struct Unlocked { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for Funded { - const PALLET: &'static str = "Nis"; - const EVENT: &'static str = "Funded"; + impl ::subxt::events::StaticEvent for Unlocked { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Unlocked"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -22168,304 +25084,443 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A receipt was transfered."] - pub struct Transferred { - pub from: ::subxt::utils::AccountId32, - pub to: ::subxt::utils::AccountId32, - pub index: ::core::primitive::u32, + #[doc = "Some balance was frozen."] + pub struct Frozen { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, } - impl ::subxt::events::StaticEvent for Transferred { - const PALLET: &'static str = "Nis"; - const EVENT: &'static str = "Transferred"; + impl ::subxt::events::StaticEvent for Frozen { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Frozen"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Some balance was thawed."] + pub struct Thawed { + pub who: ::subxt::utils::AccountId32, + pub amount: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for Thawed { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "Thawed"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `TotalIssuance` was forcefully changed."] + pub struct TotalIssuanceForced { + pub old: ::core::primitive::u128, + pub new: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for TotalIssuanceForced { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "TotalIssuanceForced"; } } pub mod storage { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The totals of items and balances within each queue. Saves a lot of storage reads in the"] - #[doc = " case of sparsely packed queues."] - #[doc = ""] - #[doc = " The vector is indexed by duration in `Period`s, offset by one, so information on the queue"] - #[doc = " whose duration is one `Period` would be storage `0`."] - pub fn queue_totals( + #[doc = " The total units issued in the system."] + pub fn total_issuance( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec<( - ::core::primitive::u32, - ::core::primitive::u128, - )>, + ::core::primitive::u128, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "Nis", - "QueueTotals", + "NisCounterpartBalances", + "TotalIssuance", vec![], [ - 40u8, 120u8, 43u8, 203u8, 97u8, 129u8, 61u8, 184u8, 137u8, 45u8, 201u8, - 90u8, 227u8, 161u8, 52u8, 179u8, 9u8, 74u8, 104u8, 225u8, 209u8, 62u8, - 69u8, 222u8, 124u8, 202u8, 36u8, 137u8, 183u8, 102u8, 234u8, 58u8, + 116u8, 70u8, 119u8, 194u8, 69u8, 37u8, 116u8, 206u8, 171u8, 70u8, + 171u8, 210u8, 226u8, 111u8, 184u8, 204u8, 206u8, 11u8, 68u8, 72u8, + 255u8, 19u8, 194u8, 11u8, 27u8, 194u8, 81u8, 204u8, 59u8, 224u8, 202u8, + 185u8, ], ) } - #[doc = " The queues of bids. Indexed by duration (in `Period`s)."] - pub fn queues_iter( + #[doc = " The total units of outstanding deactivated balance in the system."] + pub fn inactive_issuance( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_nis::pallet::Bid< - ::core::primitive::u128, - ::subxt::utils::AccountId32, - >, - >, - (), + ::core::primitive::u128, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "Nis", - "Queues", + "NisCounterpartBalances", + "InactiveIssuance", vec![], [ - 144u8, 181u8, 173u8, 134u8, 6u8, 165u8, 174u8, 91u8, 75u8, 241u8, - 142u8, 192u8, 246u8, 71u8, 132u8, 146u8, 181u8, 158u8, 125u8, 34u8, - 5u8, 151u8, 136u8, 148u8, 228u8, 11u8, 226u8, 229u8, 8u8, 50u8, 205u8, - 75u8, + 212u8, 185u8, 19u8, 50u8, 250u8, 72u8, 173u8, 50u8, 4u8, 104u8, 161u8, + 249u8, 77u8, 247u8, 204u8, 248u8, 11u8, 18u8, 57u8, 4u8, 82u8, 110u8, + 30u8, 216u8, 16u8, 37u8, 87u8, 67u8, 189u8, 235u8, 214u8, 155u8, ], ) } - #[doc = " The queues of bids. Indexed by duration (in `Period`s)."] - pub fn queues( + #[doc = " The Balances pallet example of storing the balance of an account."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = StorageMapShim, frame_system::Provider, AccountId, Self::AccountData>"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " You can also store the balance of an account in the `System` pallet."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = System"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " But this comes with tradeoffs, storing account balances in the system pallet stores"] + #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] + #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] + #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] + pub fn account( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_nis::pallet::Bid< - ::core::primitive::u128, - ::subxt::utils::AccountId32, - >, - >, + runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( - "Nis", - "Queues", + "NisCounterpartBalances", + "Account", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 144u8, 181u8, 173u8, 134u8, 6u8, 165u8, 174u8, 91u8, 75u8, 241u8, - 142u8, 192u8, 246u8, 71u8, 132u8, 146u8, 181u8, 158u8, 125u8, 34u8, - 5u8, 151u8, 136u8, 148u8, 228u8, 11u8, 226u8, 229u8, 8u8, 50u8, 205u8, - 75u8, + 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, + 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, + 18u8, 17u8, 234u8, 143u8, 189u8, 22u8, 247u8, 194u8, 154u8, 249u8, ], ) } - #[doc = " Summary information over the general state."] - pub fn summary( + #[doc = " The Balances pallet example of storing the balance of an account."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = StorageMapShim, frame_system::Provider, AccountId, Self::AccountData>"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " You can also store the balance of an account in the `System` pallet."] + #[doc = ""] + #[doc = " # Example"] + #[doc = ""] + #[doc = " ```nocompile"] + #[doc = " impl pallet_balances::Config for Runtime {"] + #[doc = " type AccountStore = System"] + #[doc = " }"] + #[doc = " ```"] + #[doc = ""] + #[doc = " But this comes with tradeoffs, storing account balances in the system pallet stores"] + #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] + #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] + #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] + pub fn account_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_nis::pallet::SummaryRecord< - ::core::primitive::u32, - ::core::primitive::u128, - >, + runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( - "Nis", - "Summary", - vec![], + "NisCounterpartBalances", + "Account", + Vec::new(), [ - 106u8, 21u8, 103u8, 47u8, 211u8, 234u8, 50u8, 222u8, 25u8, 209u8, 67u8, - 117u8, 111u8, 6u8, 231u8, 245u8, 109u8, 52u8, 177u8, 20u8, 179u8, - 253u8, 251u8, 197u8, 218u8, 163u8, 229u8, 187u8, 172u8, 122u8, 126u8, - 57u8, + 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, + 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, + 18u8, 17u8, 234u8, 143u8, 189u8, 22u8, 247u8, 194u8, 154u8, 249u8, ], ) } - #[doc = " The currently outstanding receipts, indexed according to the order of creation."] - pub fn receipts_iter( + #[doc = " Any liquidity locks on some account balances."] + #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn locks( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_nis::pallet::ReceiptRecord< - ::subxt::utils::AccountId32, - ::core::primitive::u32, - ::core::primitive::u128, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, >, - (), - (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Nis", - "Receipts", - vec![], + "NisCounterpartBalances", + "Locks", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 123u8, 179u8, 0u8, 14u8, 5u8, 132u8, 165u8, 192u8, 163u8, 22u8, 174u8, - 22u8, 252u8, 44u8, 167u8, 22u8, 116u8, 170u8, 186u8, 118u8, 131u8, 5u8, - 237u8, 121u8, 35u8, 146u8, 206u8, 239u8, 155u8, 108u8, 46u8, 0u8, + 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, + 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, + 13u8, 220u8, 163u8, 122u8, 26u8, 141u8, 174u8, 249u8, 85u8, 37u8, ], ) } - #[doc = " The currently outstanding receipts, indexed according to the order of creation."] - pub fn receipts( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + #[doc = " Any liquidity locks on some account balances."] + #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn locks_root( + &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_nis::pallet::ReceiptRecord< - ::subxt::utils::AccountId32, - ::core::primitive::u32, - ::core::primitive::u128, + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< + runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, >, - ::subxt::storage::address::Yes, - (), (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "Nis", - "Receipts", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + "NisCounterpartBalances", + "Locks", + Vec::new(), [ - 123u8, 179u8, 0u8, 14u8, 5u8, 132u8, 165u8, 192u8, 163u8, 22u8, 174u8, - 22u8, 252u8, 44u8, 167u8, 22u8, 116u8, 170u8, 186u8, 118u8, 131u8, 5u8, - 237u8, 121u8, 35u8, 146u8, 206u8, 239u8, 155u8, 108u8, 46u8, 0u8, + 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, + 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, + 13u8, 220u8, 163u8, 122u8, 26u8, 141u8, 174u8, 249u8, 85u8, 37u8, ], ) } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The treasury's pallet id, used for deriving its sovereign account ID."] - pub fn pallet_id( + #[doc = " Named reserves on some account balances."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn reserves( &self, - ) -> ::subxt::constants::Address - { - ::subxt::constants::Address::new_static( - "Nis", - "PalletId", + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::ReserveData< + [::core::primitive::u8; 8usize], + ::core::primitive::u128, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NisCounterpartBalances", + "Reserves", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 56u8, 243u8, 53u8, 83u8, 154u8, 179u8, 170u8, 80u8, 133u8, 173u8, 61u8, - 161u8, 47u8, 225u8, 146u8, 21u8, 50u8, 229u8, 248u8, 27u8, 104u8, 58u8, - 129u8, 197u8, 102u8, 160u8, 168u8, 205u8, 154u8, 42u8, 217u8, 53u8, + 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, + 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, + 106u8, 193u8, 88u8, 255u8, 244u8, 2u8, 193u8, 62u8, 235u8, 204u8, 91u8, ], ) } - #[doc = " Number of duration queues in total. This sets the maximum duration supported, which is"] - #[doc = " this value multiplied by `Period`."] - pub fn queue_count(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Nis", - "QueueCount", + #[doc = " Named reserves on some account balances."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn reserves_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::ReserveData< + [::core::primitive::u8; 8usize], + ::core::primitive::u128, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NisCounterpartBalances", + "Reserves", + Vec::new(), [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, + 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, + 106u8, 193u8, 88u8, 255u8, 244u8, 2u8, 193u8, 62u8, 235u8, 204u8, 91u8, ], ) } - #[doc = " Maximum number of items that may be in each duration queue."] - #[doc = ""] - #[doc = " Must be larger than zero."] - pub fn max_queue_len(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Nis", - "MaxQueueLen", + #[doc = " Holds on account balances."] + pub fn holds( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + runtime_types::rococo_runtime::RuntimeHoldReason, + ::core::primitive::u128, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NisCounterpartBalances", + "Holds", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } - #[doc = " Portion of the queue which is free from ordering and just a FIFO."] - #[doc = ""] - #[doc = " Must be no greater than `MaxQueueLen`."] - pub fn fifo_queue_len( + #[doc = " Holds on account balances."] + pub fn holds_root( &self, - ) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Nis", - "FifoQueueLen", + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + runtime_types::rococo_runtime::RuntimeHoldReason, + ::core::primitive::u128, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NisCounterpartBalances", + "Holds", + Vec::new(), [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } - #[doc = " The base period for the duration queues. This is the common multiple across all"] - #[doc = " supported freezing durations that can be bid upon."] - pub fn base_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "Nis", - "BasePeriod", + #[doc = " Freeze locks on account balances."] + pub fn freezes( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + (), + ::core::primitive::u128, + >, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NisCounterpartBalances", + "Freezes", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, + 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, + 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, + 163u8, 4u8, 68u8, 218u8, 179u8, 224u8, 118u8, 218u8, 115u8, 64u8, ], ) } - #[doc = " The minimum amount of funds that may be placed in a bid. Note that this"] - #[doc = " does not actually limit the amount which may be represented in a receipt since bids may"] - #[doc = " be split up by the system."] - #[doc = ""] - #[doc = " It should be at least big enough to ensure that there is no possible storage spam attack"] - #[doc = " or queue-filling attack."] - pub fn min_bid(&self) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( - "Nis", - "MinBid", + #[doc = " Freeze locks on account balances."] + pub fn freezes_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::pallet_balances::types::IdAmount< + (), + ::core::primitive::u128, + >, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "NisCounterpartBalances", + "Freezes", + Vec::new(), [ - 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, - 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, - 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, + 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, + 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, + 163u8, 4u8, 68u8, 218u8, 179u8, 224u8, 118u8, 218u8, 115u8, 64u8, ], ) } - #[doc = " The minimum amount of funds which may intentionally be left remaining under a single"] - #[doc = " receipt."] - pub fn min_receipt( + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The minimum amount required to keep an account open. MUST BE GREATER THAN ZERO!"] + #[doc = ""] + #[doc = " If you *really* need it to be zero, you can enable the feature `insecure_zero_ed` for"] + #[doc = " this pallet. However, you do so at your own risk: this will open up a major DoS vector."] + #[doc = " In case you have multiple sources of provider references, you may also get unexpected"] + #[doc = " behaviour if you set this to zero."] + #[doc = ""] + #[doc = " Bottom line: Do yourself a favour and make it at least one!"] + pub fn existential_deposit( &self, - ) -> ::subxt::constants::Address< - runtime_types::sp_arithmetic::per_things::Perquintill, - > { + ) -> ::subxt::constants::Address<::core::primitive::u128> { ::subxt::constants::Address::new_static( - "Nis", - "MinReceipt", + "NisCounterpartBalances", + "ExistentialDeposit", [ - 184u8, 78u8, 161u8, 6u8, 214u8, 205u8, 82u8, 205u8, 126u8, 46u8, 7u8, - 198u8, 186u8, 10u8, 66u8, 116u8, 191u8, 223u8, 17u8, 246u8, 196u8, - 190u8, 222u8, 226u8, 62u8, 35u8, 191u8, 127u8, 60u8, 171u8, 85u8, - 201u8, + 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, + 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, + 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, ], ) } - #[doc = " The number of blocks between consecutive attempts to dequeue bids and create receipts."] + #[doc = " The maximum number of locks that should exist on an account."] + #[doc = " Not strictly enforced, but used for weight estimation."] #[doc = ""] - #[doc = " A larger value results in fewer storage hits each block, but a slower period to get to"] - #[doc = " the target."] - pub fn intake_period(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn max_locks(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Nis", - "IntakePeriod", + "NisCounterpartBalances", + "MaxLocks", [ 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, @@ -22474,57 +25529,53 @@ pub mod api { ], ) } - #[doc = " The maximum amount of bids that can consolidated into receipts in a single intake. A"] - #[doc = " larger value here means less of the block available for transactions should there be a"] - #[doc = " glut of bids."] - pub fn max_intake_weight( - &self, - ) -> ::subxt::constants::Address - { + #[doc = " The maximum number of named reserves that can exist on an account."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] + pub fn max_reserves(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Nis", - "MaxIntakeWeight", + "NisCounterpartBalances", + "MaxReserves", [ - 149u8, 252u8, 129u8, 80u8, 169u8, 36u8, 79u8, 127u8, 240u8, 156u8, - 56u8, 202u8, 219u8, 86u8, 5u8, 65u8, 245u8, 148u8, 138u8, 243u8, 210u8, - 128u8, 234u8, 216u8, 240u8, 219u8, 123u8, 235u8, 21u8, 158u8, 237u8, - 112u8, + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, ], ) } - #[doc = " The maximum proportion which may be thawed and the period over which it is reset."] - pub fn thaw_throttle( - &self, - ) -> ::subxt::constants::Address<( - runtime_types::sp_arithmetic::per_things::Perquintill, - ::core::primitive::u32, - )> { + #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] + pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( - "Nis", - "ThawThrottle", + "NisCounterpartBalances", + "MaxFreezes", [ - 41u8, 240u8, 41u8, 161u8, 238u8, 241u8, 63u8, 205u8, 122u8, 230u8, - 158u8, 65u8, 212u8, 229u8, 123u8, 215u8, 69u8, 204u8, 207u8, 193u8, - 149u8, 229u8, 193u8, 245u8, 210u8, 63u8, 106u8, 42u8, 27u8, 182u8, - 66u8, 167u8, + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, ], ) } } } } - pub mod nis_counterpart_balances { + pub mod parachains_origin { + use super::{root_mod, runtime_types}; + } + pub mod configuration { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_balances::pallet::Error2; + pub type Error = runtime_types::polkadot_runtime_parachains::configuration::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_balances::pallet::Call2; + pub type Call = runtime_types::polkadot_runtime_parachains::configuration::pallet::Call; pub mod calls { use super::{root_mod, runtime_types}; type DispatchError = runtime_types::sp_runtime::DispatchError; pub mod types { use super::runtime_types; #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22534,16 +25585,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct TransferAllowDeath { - pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - pub value: ::core::primitive::u128, + pub struct SetValidationUpgradeCooldown { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for TransferAllowDeath { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "transfer_allow_death"; + impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeCooldown { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_validation_upgrade_cooldown"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22553,18 +25603,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetBalanceDeprecated { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - pub new_free: ::core::primitive::u128, - #[codec(compact)] - pub old_reserved: ::core::primitive::u128, + pub struct SetValidationUpgradeDelay { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for SetBalanceDeprecated { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "set_balance_deprecated"; + impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeDelay { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_validation_upgrade_delay"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22574,17 +25621,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceTransfer { - pub source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - pub value: ::core::primitive::u128, + pub struct SetCodeRetentionPeriod { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for ForceTransfer { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "force_transfer"; + impl ::subxt::blocks::StaticExtrinsic for SetCodeRetentionPeriod { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_code_retention_period"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22594,16 +25639,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct TransferKeepAlive { - pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - pub value: ::core::primitive::u128, + pub struct SetMaxCodeSize { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for TransferKeepAlive { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "transfer_keep_alive"; + impl ::subxt::blocks::StaticExtrinsic for SetMaxCodeSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_code_size"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22613,15 +25657,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct TransferAll { - pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - pub keep_alive: ::core::primitive::bool, + pub struct SetMaxPovSize { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for TransferAll { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "transfer_all"; + impl ::subxt::blocks::StaticExtrinsic for SetMaxPovSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_pov_size"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22631,15 +25675,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceUnreserve { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - pub amount: ::core::primitive::u128, + pub struct SetMaxHeadDataSize { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for ForceUnreserve { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "force_unreserve"; + impl ::subxt::blocks::StaticExtrinsic for SetMaxHeadDataSize { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_head_data_size"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22649,14 +25693,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct UpgradeAccounts { - pub who: ::std::vec::Vec<::subxt::utils::AccountId32>, + pub struct SetCoretimeCores { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for UpgradeAccounts { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "upgrade_accounts"; + impl ::subxt::blocks::StaticExtrinsic for SetCoretimeCores { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_coretime_cores"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22666,16 +25711,15 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Transfer { - pub dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - pub value: ::core::primitive::u128, + pub struct SetMaxAvailabilityTimeouts { + pub new: ::core::primitive::u32, } - impl ::subxt::blocks::StaticExtrinsic for Transfer { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "transfer"; + impl ::subxt::blocks::StaticExtrinsic for SetMaxAvailabilityTimeouts { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_max_availability_timeouts"; } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -22685,1222 +25729,44 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceSetBalance { - pub who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - pub new_free: ::core::primitive::u128, - } - impl ::subxt::blocks::StaticExtrinsic for ForceSetBalance { - const PALLET: &'static str = "NisCounterpartBalances"; - const CALL: &'static str = "force_set_balance"; + pub struct SetGroupRotationFrequency { + pub new: ::core::primitive::u32, } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::transfer_allow_death`]."] - pub fn transfer_allow_death( - &self, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "transfer_allow_death", - types::TransferAllowDeath { dest, value }, - [ - 51u8, 166u8, 195u8, 10u8, 139u8, 218u8, 55u8, 130u8, 6u8, 194u8, 35u8, - 140u8, 27u8, 205u8, 214u8, 222u8, 102u8, 43u8, 143u8, 145u8, 86u8, - 219u8, 210u8, 147u8, 13u8, 39u8, 51u8, 21u8, 237u8, 179u8, 132u8, - 130u8, - ], - ) + impl ::subxt::blocks::StaticExtrinsic for SetGroupRotationFrequency { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_group_rotation_frequency"; } - #[doc = "See [`Pallet::set_balance_deprecated`]."] - pub fn set_balance_deprecated( - &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - new_free: ::core::primitive::u128, - old_reserved: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "set_balance_deprecated", - types::SetBalanceDeprecated { who, new_free, old_reserved }, - [ - 125u8, 171u8, 21u8, 186u8, 108u8, 185u8, 241u8, 145u8, 125u8, 8u8, - 12u8, 42u8, 96u8, 114u8, 80u8, 80u8, 227u8, 76u8, 20u8, 208u8, 93u8, - 219u8, 36u8, 50u8, 209u8, 155u8, 70u8, 45u8, 6u8, 57u8, 156u8, 77u8, - ], - ) + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetParasAvailabilityPeriod { + pub new: ::core::primitive::u32, } - #[doc = "See [`Pallet::force_transfer`]."] - pub fn force_transfer( - &self, - source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "force_transfer", - types::ForceTransfer { source, dest, value }, - [ - 154u8, 93u8, 222u8, 27u8, 12u8, 248u8, 63u8, 213u8, 224u8, 86u8, 250u8, - 153u8, 249u8, 102u8, 83u8, 160u8, 79u8, 125u8, 105u8, 222u8, 77u8, - 180u8, 90u8, 105u8, 81u8, 217u8, 60u8, 25u8, 213u8, 51u8, 185u8, 96u8, - ], - ) + impl ::subxt::blocks::StaticExtrinsic for SetParasAvailabilityPeriod { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_paras_availability_period"; } - #[doc = "See [`Pallet::transfer_keep_alive`]."] - pub fn transfer_keep_alive( - &self, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "transfer_keep_alive", - types::TransferKeepAlive { dest, value }, - [ - 245u8, 14u8, 190u8, 193u8, 32u8, 210u8, 74u8, 92u8, 25u8, 182u8, 76u8, - 55u8, 247u8, 83u8, 114u8, 75u8, 143u8, 236u8, 117u8, 25u8, 54u8, 157u8, - 208u8, 207u8, 233u8, 89u8, 70u8, 161u8, 235u8, 242u8, 222u8, 59u8, - ], - ) - } - #[doc = "See [`Pallet::transfer_all`]."] - pub fn transfer_all( - &self, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - keep_alive: ::core::primitive::bool, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "transfer_all", - types::TransferAll { dest, keep_alive }, - [ - 105u8, 132u8, 49u8, 144u8, 195u8, 250u8, 34u8, 46u8, 213u8, 248u8, - 112u8, 188u8, 81u8, 228u8, 136u8, 18u8, 67u8, 172u8, 37u8, 38u8, 238u8, - 9u8, 34u8, 15u8, 67u8, 34u8, 148u8, 195u8, 223u8, 29u8, 154u8, 6u8, - ], - ) - } - #[doc = "See [`Pallet::force_unreserve`]."] - pub fn force_unreserve( - &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - amount: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "force_unreserve", - types::ForceUnreserve { who, amount }, - [ - 142u8, 151u8, 64u8, 205u8, 46u8, 64u8, 62u8, 122u8, 108u8, 49u8, 223u8, - 140u8, 120u8, 153u8, 35u8, 165u8, 187u8, 38u8, 157u8, 200u8, 123u8, - 199u8, 198u8, 168u8, 208u8, 159u8, 39u8, 134u8, 92u8, 103u8, 84u8, - 171u8, - ], - ) - } - #[doc = "See [`Pallet::upgrade_accounts`]."] - pub fn upgrade_accounts( - &self, - who: ::std::vec::Vec<::subxt::utils::AccountId32>, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "upgrade_accounts", - types::UpgradeAccounts { who }, - [ - 66u8, 200u8, 179u8, 104u8, 65u8, 2u8, 101u8, 56u8, 130u8, 161u8, 224u8, - 233u8, 255u8, 124u8, 70u8, 122u8, 8u8, 49u8, 103u8, 178u8, 68u8, 47u8, - 214u8, 166u8, 217u8, 116u8, 178u8, 50u8, 212u8, 164u8, 98u8, 226u8, - ], - ) - } - #[doc = "See [`Pallet::transfer`]."] - pub fn transfer( - &self, - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - value: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "transfer", - types::Transfer { dest, value }, - [ - 154u8, 145u8, 140u8, 54u8, 50u8, 123u8, 225u8, 249u8, 200u8, 217u8, - 172u8, 110u8, 233u8, 198u8, 77u8, 198u8, 211u8, 89u8, 8u8, 13u8, 240u8, - 94u8, 28u8, 13u8, 242u8, 217u8, 168u8, 23u8, 106u8, 254u8, 249u8, - 120u8, - ], - ) - } - #[doc = "See [`Pallet::force_set_balance`]."] - pub fn force_set_balance( - &self, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - new_free: ::core::primitive::u128, - ) -> ::subxt::tx::Payload { - ::subxt::tx::Payload::new_static( - "NisCounterpartBalances", - "force_set_balance", - types::ForceSetBalance { who, new_free }, - [ - 114u8, 229u8, 59u8, 204u8, 180u8, 83u8, 17u8, 4u8, 59u8, 4u8, 55u8, - 39u8, 151u8, 196u8, 124u8, 60u8, 209u8, 65u8, 193u8, 11u8, 44u8, 164u8, - 116u8, 93u8, 169u8, 30u8, 199u8, 165u8, 55u8, 231u8, 223u8, 43u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_balances::pallet::Event2; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An account was created with some free balance."] - pub struct Endowed { - pub account: ::subxt::utils::AccountId32, - pub free_balance: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Endowed { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Endowed"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An account was removed whose balance was non-zero but below ExistentialDeposit,"] - #[doc = "resulting in an outright loss."] - pub struct DustLost { - pub account: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for DustLost { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "DustLost"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Transfer succeeded."] - pub struct Transfer { - pub from: ::subxt::utils::AccountId32, - pub to: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Transfer { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Transfer"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A balance was set by root."] - pub struct BalanceSet { - pub who: ::subxt::utils::AccountId32, - pub free: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for BalanceSet { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "BalanceSet"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some balance was reserved (moved from free to reserved)."] - pub struct Reserved { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Reserved { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Reserved"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some balance was unreserved (moved from reserved to free)."] - pub struct Unreserved { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Unreserved { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Unreserved"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some balance was moved from the reserve of the first account to the second account."] - #[doc = "Final argument indicates the destination balance type."] - pub struct ReserveRepatriated { - pub from: ::subxt::utils::AccountId32, - pub to: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - pub destination_status: - runtime_types::frame_support::traits::tokens::misc::BalanceStatus, - } - impl ::subxt::events::StaticEvent for ReserveRepatriated { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "ReserveRepatriated"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some amount was deposited (e.g. for transaction fees)."] - pub struct Deposit { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Deposit { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Deposit"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some amount was withdrawn from the account (e.g. for transaction fees)."] - pub struct Withdraw { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Withdraw { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Withdraw"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some amount was removed from the account (e.g. for misbehavior)."] - pub struct Slashed { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Slashed { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Slashed"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some amount was minted into an account."] - pub struct Minted { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Minted { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Minted"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some amount was burned from an account."] - pub struct Burned { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Burned { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Burned"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some amount was suspended from an account (it can be restored later)."] - pub struct Suspended { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Suspended { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Suspended"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some amount was restored into an account."] - pub struct Restored { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Restored { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Restored"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "An account was upgraded."] - pub struct Upgraded { - pub who: ::subxt::utils::AccountId32, - } - impl ::subxt::events::StaticEvent for Upgraded { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Upgraded"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Total issuance was increased by `amount`, creating a credit to be balanced."] - pub struct Issued { - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Issued { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Issued"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Total issuance was decreased by `amount`, creating a debt to be balanced."] - pub struct Rescinded { - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Rescinded { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Rescinded"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some balance was locked."] - pub struct Locked { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Locked { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Locked"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some balance was unlocked."] - pub struct Unlocked { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Unlocked { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Unlocked"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some balance was frozen."] - pub struct Frozen { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Frozen { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Frozen"; - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Some balance was thawed."] - pub struct Thawed { - pub who: ::subxt::utils::AccountId32, - pub amount: ::core::primitive::u128, - } - impl ::subxt::events::StaticEvent for Thawed { - const PALLET: &'static str = "NisCounterpartBalances"; - const EVENT: &'static str = "Thawed"; - } - } - pub mod storage { - use super::runtime_types; - pub struct StorageApi; - impl StorageApi { - #[doc = " The total units issued in the system."] - pub fn total_issuance( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u128, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "TotalIssuance", - vec![], - [ - 116u8, 70u8, 119u8, 194u8, 69u8, 37u8, 116u8, 206u8, 171u8, 70u8, - 171u8, 210u8, 226u8, 111u8, 184u8, 204u8, 206u8, 11u8, 68u8, 72u8, - 255u8, 19u8, 194u8, 11u8, 27u8, 194u8, 81u8, 204u8, 59u8, 224u8, 202u8, - 185u8, - ], - ) - } - #[doc = " The total units of outstanding deactivated balance in the system."] - pub fn inactive_issuance( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u128, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "InactiveIssuance", - vec![], - [ - 212u8, 185u8, 19u8, 50u8, 250u8, 72u8, 173u8, 50u8, 4u8, 104u8, 161u8, - 249u8, 77u8, 247u8, 204u8, 248u8, 11u8, 18u8, 57u8, 4u8, 82u8, 110u8, - 30u8, 216u8, 16u8, 37u8, 87u8, 67u8, 189u8, 235u8, 214u8, 155u8, - ], - ) - } - #[doc = " The Balances pallet example of storing the balance of an account."] - #[doc = ""] - #[doc = " # Example"] - #[doc = ""] - #[doc = " ```nocompile"] - #[doc = " impl pallet_balances::Config for Runtime {"] - #[doc = " type AccountStore = StorageMapShim, frame_system::Provider, AccountId, Self::AccountData>"] - #[doc = " }"] - #[doc = " ```"] - #[doc = ""] - #[doc = " You can also store the balance of an account in the `System` pallet."] - #[doc = ""] - #[doc = " # Example"] - #[doc = ""] - #[doc = " ```nocompile"] - #[doc = " impl pallet_balances::Config for Runtime {"] - #[doc = " type AccountStore = System"] - #[doc = " }"] - #[doc = " ```"] - #[doc = ""] - #[doc = " But this comes with tradeoffs, storing account balances in the system pallet stores"] - #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] - #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] - #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] - pub fn account_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Account", - vec![], - [ - 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, - 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, - 18u8, 17u8, 234u8, 143u8, 189u8, 22u8, 247u8, 194u8, 154u8, 249u8, - ], - ) - } - #[doc = " The Balances pallet example of storing the balance of an account."] - #[doc = ""] - #[doc = " # Example"] - #[doc = ""] - #[doc = " ```nocompile"] - #[doc = " impl pallet_balances::Config for Runtime {"] - #[doc = " type AccountStore = StorageMapShim, frame_system::Provider, AccountId, Self::AccountData>"] - #[doc = " }"] - #[doc = " ```"] - #[doc = ""] - #[doc = " You can also store the balance of an account in the `System` pallet."] - #[doc = ""] - #[doc = " # Example"] - #[doc = ""] - #[doc = " ```nocompile"] - #[doc = " impl pallet_balances::Config for Runtime {"] - #[doc = " type AccountStore = System"] - #[doc = " }"] - #[doc = " ```"] - #[doc = ""] - #[doc = " But this comes with tradeoffs, storing account balances in the system pallet stores"] - #[doc = " `frame_system` data alongside the account data contrary to storing account balances in the"] - #[doc = " `Balances` pallet, which uses a `StorageMap` to store balances data only."] - #[doc = " NOTE: This is only used in the case that this pallet is used to store balances."] - pub fn account( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_balances::types::AccountData<::core::primitive::u128>, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Account", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 213u8, 38u8, 200u8, 69u8, 218u8, 0u8, 112u8, 181u8, 160u8, 23u8, 96u8, - 90u8, 3u8, 88u8, 126u8, 22u8, 103u8, 74u8, 64u8, 69u8, 29u8, 247u8, - 18u8, 17u8, 234u8, 143u8, 189u8, 22u8, 247u8, 194u8, 154u8, 249u8, - ], - ) - } - #[doc = " Any liquidity locks on some account balances."] - #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] - pub fn locks_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, - >, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Locks", - vec![], - [ - 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, - 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, - 13u8, 220u8, 163u8, 122u8, 26u8, 141u8, 174u8, 249u8, 85u8, 37u8, - ], - ) - } - #[doc = " Any liquidity locks on some account balances."] - #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] - pub fn locks( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec< - runtime_types::pallet_balances::types::BalanceLock<::core::primitive::u128>, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Locks", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 10u8, 223u8, 55u8, 0u8, 249u8, 69u8, 168u8, 41u8, 75u8, 35u8, 120u8, - 167u8, 18u8, 132u8, 9u8, 20u8, 91u8, 51u8, 27u8, 69u8, 136u8, 187u8, - 13u8, 220u8, 163u8, 122u8, 26u8, 141u8, 174u8, 249u8, 85u8, 37u8, - ], - ) - } - #[doc = " Named reserves on some account balances."] - pub fn reserves_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::ReserveData< - [::core::primitive::u8; 8usize], - ::core::primitive::u128, - >, - >, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Reserves", - vec![], - [ - 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, - 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, - 106u8, 193u8, 88u8, 255u8, 244u8, 2u8, 193u8, 62u8, 235u8, 204u8, 91u8, - ], - ) - } - #[doc = " Named reserves on some account balances."] - pub fn reserves( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::ReserveData< - [::core::primitive::u8; 8usize], - ::core::primitive::u128, - >, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Reserves", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 112u8, 10u8, 241u8, 77u8, 64u8, 187u8, 106u8, 159u8, 13u8, 153u8, - 140u8, 178u8, 182u8, 50u8, 1u8, 55u8, 149u8, 92u8, 196u8, 229u8, 170u8, - 106u8, 193u8, 88u8, 255u8, 244u8, 2u8, 193u8, 62u8, 235u8, 204u8, 91u8, - ], - ) - } - #[doc = " Holds on account balances."] - pub fn holds_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::IdAmount< - runtime_types::rococo_runtime::RuntimeHoldReason, - ::core::primitive::u128, - >, - >, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Holds", - vec![], - [ - 84u8, 74u8, 134u8, 103u8, 22u8, 48u8, 121u8, 251u8, 28u8, 99u8, 207u8, - 65u8, 134u8, 19u8, 178u8, 217u8, 85u8, 221u8, 239u8, 51u8, 185u8, - 206u8, 222u8, 162u8, 153u8, 217u8, 15u8, 84u8, 162u8, 194u8, 242u8, - 203u8, - ], - ) - } - #[doc = " Holds on account balances."] - pub fn holds( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::IdAmount< - runtime_types::rococo_runtime::RuntimeHoldReason, - ::core::primitive::u128, - >, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Holds", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 84u8, 74u8, 134u8, 103u8, 22u8, 48u8, 121u8, 251u8, 28u8, 99u8, 207u8, - 65u8, 134u8, 19u8, 178u8, 217u8, 85u8, 221u8, 239u8, 51u8, 185u8, - 206u8, 222u8, 162u8, 153u8, 217u8, 15u8, 84u8, 162u8, 194u8, 242u8, - 203u8, - ], - ) - } - #[doc = " Freeze locks on account balances."] - pub fn freezes_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::IdAmount< - (), - ::core::primitive::u128, - >, - >, - (), - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Freezes", - vec![], - [ - 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, - 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, - 163u8, 4u8, 68u8, 218u8, 179u8, 224u8, 118u8, 218u8, 115u8, 64u8, - ], - ) - } - #[doc = " Freeze locks on account balances."] - pub fn freezes( - &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::pallet_balances::types::IdAmount< - (), - ::core::primitive::u128, - >, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "NisCounterpartBalances", - "Freezes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 69u8, 49u8, 165u8, 76u8, 135u8, 142u8, 179u8, 118u8, 50u8, 109u8, 53u8, - 112u8, 110u8, 94u8, 30u8, 93u8, 173u8, 38u8, 27u8, 142u8, 19u8, 5u8, - 163u8, 4u8, 68u8, 218u8, 179u8, 224u8, 118u8, 218u8, 115u8, 64u8, - ], - ) - } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The minimum amount required to keep an account open. MUST BE GREATER THAN ZERO!"] - #[doc = ""] - #[doc = " If you *really* need it to be zero, you can enable the feature `insecure_zero_ed` for"] - #[doc = " this pallet. However, you do so at your own risk: this will open up a major DoS vector."] - #[doc = " In case you have multiple sources of provider references, you may also get unexpected"] - #[doc = " behaviour if you set this to zero."] - #[doc = ""] - #[doc = " Bottom line: Do yourself a favour and make it at least one!"] - pub fn existential_deposit( - &self, - ) -> ::subxt::constants::Address<::core::primitive::u128> { - ::subxt::constants::Address::new_static( - "NisCounterpartBalances", - "ExistentialDeposit", - [ - 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, - 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, - 136u8, 71u8, 63u8, 49u8, 237u8, 234u8, 15u8, 178u8, 98u8, 148u8, 156u8, - ], - ) - } - #[doc = " The maximum number of locks that should exist on an account."] - #[doc = " Not strictly enforced, but used for weight estimation."] - pub fn max_locks(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "NisCounterpartBalances", - "MaxLocks", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of named reserves that can exist on an account."] - pub fn max_reserves(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "NisCounterpartBalances", - "MaxReserves", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of holds that can exist on an account at any time."] - pub fn max_holds(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "NisCounterpartBalances", - "MaxHolds", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] - pub fn max_freezes(&self) -> ::subxt::constants::Address<::core::primitive::u32> { - ::subxt::constants::Address::new_static( - "NisCounterpartBalances", - "MaxFreezes", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - } - } - } - pub mod parachains_origin { - use super::{root_mod, runtime_types}; - } - pub mod configuration { - use super::{root_mod, runtime_types}; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::polkadot_runtime_parachains::configuration::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::polkadot_runtime_parachains::configuration::pallet::Call; - pub mod calls { - use super::{root_mod, runtime_types}; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetValidationUpgradeCooldown { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeCooldown { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_validation_upgrade_cooldown"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetValidationUpgradeDelay { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetValidationUpgradeDelay { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_validation_upgrade_delay"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetCodeRetentionPeriod { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetCodeRetentionPeriod { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_code_retention_period"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetMaxCodeSize { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetMaxCodeSize { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_max_code_size"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetMaxPovSize { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetMaxPovSize { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_max_pov_size"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetMaxHeadDataSize { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetMaxHeadDataSize { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_max_head_data_size"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetOnDemandCores { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandCores { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_on_demand_cores"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetOnDemandRetries { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetOnDemandRetries { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_on_demand_retries"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetGroupRotationFrequency { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetGroupRotationFrequency { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_group_rotation_frequency"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetParasAvailabilityPeriod { - pub new: ::core::primitive::u32, - } - impl ::subxt::blocks::StaticExtrinsic for SetParasAvailabilityPeriod { - const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_paras_availability_period"; - } - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SetSchedulingLookahead { - pub new: ::core::primitive::u32, + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetSchedulingLookahead { + pub new: ::core::primitive::u32, } impl ::subxt::blocks::StaticExtrinsic for SetSchedulingLookahead { const PALLET: &'static str = "Configuration"; @@ -24382,7 +26248,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SetAsyncBackingParams { - pub new: runtime_types::polkadot_primitives::vstaging::AsyncBackingParams, + pub new: + runtime_types::polkadot_primitives::v7::async_backing::AsyncBackingParams, } impl ::subxt::blocks::StaticExtrinsic for SetAsyncBackingParams { const PALLET: &'static str = "Configuration"; @@ -24400,7 +26267,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SetExecutorParams { pub new: - runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, } impl ::subxt::blocks::StaticExtrinsic for SetExecutorParams { const PALLET: &'static str = "Configuration"; @@ -24512,10 +26379,64 @@ pub mod api { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_minimum_backing_votes"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetNodeFeature { + pub index: ::core::primitive::u8, + pub value: ::core::primitive::bool, + } + impl ::subxt::blocks::StaticExtrinsic for SetNodeFeature { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_node_feature"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetApprovalVotingParams { + pub new: runtime_types::polkadot_primitives::v7::ApprovalVotingParams, + } + impl ::subxt::blocks::StaticExtrinsic for SetApprovalVotingParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_approval_voting_params"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetSchedulerParams { + pub new: runtime_types::polkadot_primitives::vstaging::SchedulerParams< + ::core::primitive::u32, + >, + } + impl ::subxt::blocks::StaticExtrinsic for SetSchedulerParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_scheduler_params"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] + #[doc = "Set the validation upgrade cooldown."] pub fn set_validation_upgrade_cooldown( &self, new: ::core::primitive::u32, @@ -24532,7 +26453,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] + #[doc = "Set the validation upgrade delay."] pub fn set_validation_upgrade_delay( &self, new: ::core::primitive::u32, @@ -24548,7 +26469,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code_retention_period`]."] + #[doc = "Set the acceptance period for an included candidate."] pub fn set_code_retention_period( &self, new: ::core::primitive::u32, @@ -24565,7 +26486,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_code_size`]."] + #[doc = "Set the max validation code size for incoming upgrades."] pub fn set_max_code_size( &self, new: ::core::primitive::u32, @@ -24582,7 +26503,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_pov_size`]."] + #[doc = "Set the max POV block size for incoming upgrades."] pub fn set_max_pov_size( &self, new: ::core::primitive::u32, @@ -24598,7 +26519,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_head_data_size`]."] + #[doc = "Set the max head data size for paras."] pub fn set_max_head_data_size( &self, new: ::core::primitive::u32, @@ -24615,41 +26536,42 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_cores`]."] - pub fn set_on_demand_cores( + #[doc = "Set the number of coretime execution cores."] + #[doc = ""] + #[doc = "NOTE: that this configuration is managed by the coretime chain. Only manually change"] + #[doc = "this, if you really know what you are doing!"] + pub fn set_coretime_cores( &self, new: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", - "set_on_demand_cores", - types::SetOnDemandCores { new }, + "set_coretime_cores", + types::SetCoretimeCores { new }, [ - 157u8, 26u8, 82u8, 103u8, 83u8, 214u8, 92u8, 176u8, 93u8, 70u8, 32u8, - 217u8, 139u8, 30u8, 145u8, 237u8, 34u8, 121u8, 190u8, 17u8, 128u8, - 243u8, 241u8, 181u8, 85u8, 141u8, 107u8, 70u8, 121u8, 119u8, 20u8, - 104u8, + 179u8, 131u8, 211u8, 152u8, 167u8, 6u8, 108u8, 94u8, 179u8, 97u8, 87u8, + 227u8, 57u8, 120u8, 133u8, 130u8, 59u8, 243u8, 224u8, 2u8, 11u8, 86u8, + 251u8, 77u8, 159u8, 177u8, 145u8, 34u8, 117u8, 93u8, 28u8, 52u8, ], ) } - #[doc = "See [`Pallet::set_on_demand_retries`]."] - pub fn set_on_demand_retries( + #[doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] + pub fn set_max_availability_timeouts( &self, new: ::core::primitive::u32, - ) -> ::subxt::tx::Payload { + ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", - "set_on_demand_retries", - types::SetOnDemandRetries { new }, + "set_max_availability_timeouts", + types::SetMaxAvailabilityTimeouts { new }, [ - 228u8, 78u8, 216u8, 66u8, 17u8, 51u8, 84u8, 14u8, 80u8, 67u8, 24u8, - 138u8, 177u8, 108u8, 203u8, 87u8, 240u8, 125u8, 111u8, 223u8, 216u8, - 212u8, 69u8, 236u8, 216u8, 178u8, 166u8, 145u8, 115u8, 47u8, 147u8, - 235u8, + 53u8, 141u8, 53u8, 9u8, 149u8, 145u8, 48u8, 165u8, 157u8, 2u8, 45u8, + 23u8, 128u8, 233u8, 27u8, 132u8, 189u8, 212u8, 45u8, 187u8, 2u8, 112u8, + 26u8, 88u8, 233u8, 84u8, 148u8, 73u8, 222u8, 208u8, 195u8, 153u8, ], ) } - #[doc = "See [`Pallet::set_group_rotation_frequency`]."] + #[doc = "Set the parachain validator-group rotation frequency"] pub fn set_group_rotation_frequency( &self, new: ::core::primitive::u32, @@ -24665,7 +26587,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_paras_availability_period`]."] + #[doc = "Set the availability period for paras."] pub fn set_paras_availability_period( &self, new: ::core::primitive::u32, @@ -24681,7 +26603,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_scheduling_lookahead`]."] + #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] pub fn set_scheduling_lookahead( &self, new: ::core::primitive::u32, @@ -24698,7 +26620,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_validators_per_core`]."] + #[doc = "Set the maximum number of validators to assign to any core."] pub fn set_max_validators_per_core( &self, new: ::core::option::Option<::core::primitive::u32>, @@ -24715,7 +26637,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_validators`]."] + #[doc = "Set the maximum number of validators to use in parachain consensus."] pub fn set_max_validators( &self, new: ::core::option::Option<::core::primitive::u32>, @@ -24732,7 +26654,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_dispute_period`]."] + #[doc = "Set the dispute period, in number of sessions to keep for disputes."] pub fn set_dispute_period( &self, new: ::core::primitive::u32, @@ -24749,7 +26671,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] + #[doc = "Set the dispute post conclusion acceptance period."] pub fn set_dispute_post_conclusion_acceptance_period( &self, new: ::core::primitive::u32, @@ -24767,7 +26689,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_no_show_slots`]."] + #[doc = "Set the no show slots, in number of number of consensus slots."] + #[doc = "Must be at least 1."] pub fn set_no_show_slots( &self, new: ::core::primitive::u32, @@ -24783,7 +26706,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_n_delay_tranches`]."] + #[doc = "Set the total number of delay tranches."] pub fn set_n_delay_tranches( &self, new: ::core::primitive::u32, @@ -24800,7 +26723,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] + #[doc = "Set the zeroth delay tranche width."] pub fn set_zeroth_delay_tranche_width( &self, new: ::core::primitive::u32, @@ -24816,7 +26739,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_needed_approvals`]."] + #[doc = "Set the number of validators needed to approve a block."] pub fn set_needed_approvals( &self, new: ::core::primitive::u32, @@ -24832,7 +26755,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] + #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] pub fn set_relay_vrf_modulo_samples( &self, new: ::core::primitive::u32, @@ -24849,7 +26772,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_queue_count`]."] + #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] pub fn set_max_upward_queue_count( &self, new: ::core::primitive::u32, @@ -24866,7 +26789,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_queue_size`]."] + #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] + #[doc = "once."] pub fn set_max_upward_queue_size( &self, new: ::core::primitive::u32, @@ -24883,7 +26807,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_downward_message_size`]."] + #[doc = "Set the critical downward message size."] pub fn set_max_downward_message_size( &self, new: ::core::primitive::u32, @@ -24899,7 +26823,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_message_size`]."] + #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] pub fn set_max_upward_message_size( &self, new: ::core::primitive::u32, @@ -24916,7 +26840,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of messages that a candidate can contain."] pub fn set_max_upward_message_num_per_candidate( &self, new: ::core::primitive::u32, @@ -24933,7 +26857,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] + #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] pub fn set_hrmp_open_request_ttl( &self, new: ::core::primitive::u32, @@ -24949,7 +26873,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] + #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] pub fn set_hrmp_sender_deposit( &self, new: ::core::primitive::u128, @@ -24965,7 +26889,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] + #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] + #[doc = "channel."] pub fn set_hrmp_recipient_deposit( &self, new: ::core::primitive::u128, @@ -24982,7 +26907,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] + #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] pub fn set_hrmp_channel_max_capacity( &self, new: ::core::primitive::u32, @@ -24999,7 +26924,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] + #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] pub fn set_hrmp_channel_max_total_size( &self, new: ::core::primitive::u32, @@ -25015,7 +26940,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] + #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] pub fn set_hrmp_max_parachain_inbound_channels( &self, new: ::core::primitive::u32, @@ -25032,7 +26957,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] + #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] pub fn set_hrmp_channel_max_message_size( &self, new: ::core::primitive::u32, @@ -25049,7 +26974,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] + #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] pub fn set_hrmp_max_parachain_outbound_channels( &self, new: ::core::primitive::u32, @@ -25066,7 +26991,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] pub fn set_hrmp_max_message_num_per_candidate( &self, new: ::core::primitive::u32, @@ -25082,7 +27007,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] + #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] pub fn set_pvf_voting_ttl( &self, new: ::core::primitive::u32, @@ -25099,7 +27024,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] + #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] + #[doc = "upgrade taking place."] + #[doc = ""] + #[doc = "See the field documentation for information and constraints for the new value."] pub fn set_minimum_validation_upgrade_delay( &self, new: ::core::primitive::u32, @@ -25116,7 +27044,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_bypass_consistency_check`]."] + #[doc = "Setting this to true will disable consistency checks for the configuration setters."] + #[doc = "Use with caution."] pub fn set_bypass_consistency_check( &self, new: ::core::primitive::bool, @@ -25133,10 +27062,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_async_backing_params`]."] + #[doc = "Set the asynchronous backing parameters."] pub fn set_async_backing_params( &self, - new: runtime_types::polkadot_primitives::vstaging::AsyncBackingParams, + new: runtime_types::polkadot_primitives::v7::async_backing::AsyncBackingParams, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", @@ -25150,23 +27079,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_executor_params`]."] + #[doc = "Set PVF executor parameters."] pub fn set_executor_params( &self, - new: runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, + new: runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Configuration", "set_executor_params", types::SetExecutorParams { new }, [ - 219u8, 27u8, 25u8, 162u8, 61u8, 189u8, 61u8, 32u8, 101u8, 139u8, 89u8, - 51u8, 191u8, 223u8, 94u8, 145u8, 109u8, 247u8, 22u8, 64u8, 178u8, 97u8, - 239u8, 0u8, 125u8, 20u8, 62u8, 210u8, 110u8, 79u8, 225u8, 43u8, + 79u8, 167u8, 242u8, 14u8, 22u8, 177u8, 240u8, 134u8, 154u8, 77u8, + 233u8, 188u8, 110u8, 223u8, 25u8, 52u8, 58u8, 241u8, 226u8, 255u8, 2u8, + 26u8, 8u8, 241u8, 125u8, 33u8, 63u8, 204u8, 93u8, 31u8, 229u8, 0u8, ], ) } - #[doc = "See [`Pallet::set_on_demand_base_fee`]."] + #[doc = "Set the on demand (parathreads) base fee."] pub fn set_on_demand_base_fee( &self, new: ::core::primitive::u128, @@ -25182,7 +27111,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub fn set_on_demand_fee_variability( &self, new: runtime_types::sp_arithmetic::per_things::Perbill, @@ -25199,7 +27128,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] + #[doc = "Set the on demand (parathreads) queue max size."] pub fn set_on_demand_queue_max_size( &self, new: ::core::primitive::u32, @@ -25215,7 +27144,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub fn set_on_demand_target_queue_utilization( &self, new: runtime_types::sp_arithmetic::per_things::Perbill, @@ -25233,7 +27162,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_ttl`]."] + #[doc = "Set the on demand (parathreads) ttl in the claimqueue."] pub fn set_on_demand_ttl( &self, new: ::core::primitive::u32, @@ -25250,7 +27179,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_minimum_backing_votes`]."] + #[doc = "Set the minimum backing votes threshold."] pub fn set_minimum_backing_votes( &self, new: ::core::primitive::u32, @@ -25266,6 +27195,58 @@ pub mod api { ], ) } + #[doc = "Set/Unset a node feature."] + pub fn set_node_feature( + &self, + index: ::core::primitive::u8, + value: ::core::primitive::bool, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_node_feature", + types::SetNodeFeature { index, value }, + [ + 255u8, 19u8, 208u8, 76u8, 122u8, 6u8, 42u8, 182u8, 118u8, 151u8, 245u8, + 80u8, 162u8, 243u8, 45u8, 57u8, 122u8, 148u8, 98u8, 170u8, 157u8, 40u8, + 92u8, 234u8, 12u8, 141u8, 54u8, 80u8, 97u8, 249u8, 115u8, 27u8, + ], + ) + } + #[doc = "Set approval-voting-params."] + pub fn set_approval_voting_params( + &self, + new: runtime_types::polkadot_primitives::v7::ApprovalVotingParams, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_approval_voting_params", + types::SetApprovalVotingParams { new }, + [ + 248u8, 81u8, 74u8, 103u8, 28u8, 108u8, 190u8, 177u8, 201u8, 252u8, + 87u8, 236u8, 20u8, 189u8, 192u8, 173u8, 40u8, 160u8, 170u8, 187u8, + 42u8, 108u8, 184u8, 131u8, 120u8, 237u8, 229u8, 240u8, 128u8, 49u8, + 163u8, 11u8, + ], + ) + } + #[doc = "Set scheduler-params."] + pub fn set_scheduler_params( + &self, + new: runtime_types::polkadot_primitives::vstaging::SchedulerParams< + ::core::primitive::u32, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Configuration", + "set_scheduler_params", + types::SetSchedulerParams { new }, + [ + 191u8, 87u8, 235u8, 71u8, 143u8, 46u8, 2u8, 88u8, 111u8, 15u8, 251u8, + 230u8, 241u8, 172u8, 183u8, 110u8, 33u8, 26u8, 43u8, 119u8, 74u8, 62u8, + 200u8, 226u8, 83u8, 180u8, 123u8, 132u8, 171u8, 65u8, 30u8, 13u8, + ], + ) + } } } pub mod storage { @@ -25289,10 +27270,9 @@ pub mod api { "ActiveConfig", vec![], [ - 126u8, 223u8, 107u8, 199u8, 21u8, 114u8, 19u8, 172u8, 27u8, 108u8, - 189u8, 165u8, 33u8, 220u8, 57u8, 81u8, 137u8, 242u8, 204u8, 148u8, - 61u8, 161u8, 156u8, 36u8, 20u8, 172u8, 117u8, 30u8, 152u8, 210u8, - 207u8, 161u8, + 9u8, 85u8, 45u8, 253u8, 3u8, 175u8, 115u8, 58u8, 71u8, 169u8, 68u8, + 163u8, 231u8, 24u8, 231u8, 216u8, 61u8, 134u8, 59u8, 89u8, 31u8, 103u8, + 105u8, 8u8, 182u8, 99u8, 51u8, 130u8, 255u8, 2u8, 0u8, 147u8, ], ) } @@ -25308,10 +27288,9 @@ pub mod api { "PendingConfigs", vec![], [ - 105u8, 89u8, 53u8, 156u8, 60u8, 53u8, 196u8, 187u8, 5u8, 122u8, 186u8, - 196u8, 162u8, 133u8, 254u8, 178u8, 130u8, 143u8, 90u8, 23u8, 234u8, - 105u8, 9u8, 121u8, 142u8, 123u8, 136u8, 166u8, 95u8, 215u8, 176u8, - 46u8, + 7u8, 170u8, 38u8, 177u8, 76u8, 75u8, 198u8, 192u8, 247u8, 137u8, 85u8, + 17u8, 74u8, 93u8, 170u8, 177u8, 198u8, 208u8, 183u8, 28u8, 178u8, 5u8, + 39u8, 246u8, 175u8, 78u8, 145u8, 37u8, 212u8, 20u8, 52u8, 110u8, ], ) } @@ -25386,7 +27365,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), @@ -25408,7 +27387,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), @@ -25418,10 +27397,9 @@ pub mod api { "ActiveValidatorKeys", vec![], [ - 155u8, 151u8, 155u8, 8u8, 23u8, 38u8, 91u8, 12u8, 94u8, 69u8, 228u8, - 185u8, 14u8, 219u8, 215u8, 98u8, 235u8, 222u8, 157u8, 180u8, 230u8, - 121u8, 205u8, 167u8, 156u8, 134u8, 180u8, 213u8, 87u8, 61u8, 174u8, - 222u8, + 228u8, 111u8, 152u8, 198u8, 158u8, 9u8, 193u8, 222u8, 92u8, 190u8, + 91u8, 24u8, 98u8, 156u8, 88u8, 231u8, 255u8, 1u8, 74u8, 56u8, 44u8, + 110u8, 175u8, 29u8, 45u8, 242u8, 129u8, 181u8, 145u8, 5u8, 28u8, 40u8, ], ) } @@ -25484,10 +27462,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A candidate was backed. `[candidate, head_data]`"] pub struct CandidateBacked( - pub runtime_types::polkadot_primitives::v5::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_primitives::v7::CandidateReceipt<::subxt::utils::H256>, pub runtime_types::polkadot_parachain_primitives::primitives::HeadData, - pub runtime_types::polkadot_primitives::v5::CoreIndex, - pub runtime_types::polkadot_primitives::v5::GroupIndex, + pub runtime_types::polkadot_primitives::v7::CoreIndex, + pub runtime_types::polkadot_primitives::v7::GroupIndex, ); impl ::subxt::events::StaticEvent for CandidateBacked { const PALLET: &'static str = "ParaInclusion"; @@ -25505,10 +27483,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A candidate was included. `[candidate, head_data]`"] pub struct CandidateIncluded( - pub runtime_types::polkadot_primitives::v5::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_primitives::v7::CandidateReceipt<::subxt::utils::H256>, pub runtime_types::polkadot_parachain_primitives::primitives::HeadData, - pub runtime_types::polkadot_primitives::v5::CoreIndex, - pub runtime_types::polkadot_primitives::v5::GroupIndex, + pub runtime_types::polkadot_primitives::v7::CoreIndex, + pub runtime_types::polkadot_primitives::v7::GroupIndex, ); impl ::subxt::events::StaticEvent for CandidateIncluded { const PALLET: &'static str = "ParaInclusion"; @@ -25526,9 +27504,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A candidate timed out. `[candidate, head_data]`"] pub struct CandidateTimedOut( - pub runtime_types::polkadot_primitives::v5::CandidateReceipt<::subxt::utils::H256>, + pub runtime_types::polkadot_primitives::v7::CandidateReceipt<::subxt::utils::H256>, pub runtime_types::polkadot_parachain_primitives::primitives::HeadData, - pub runtime_types::polkadot_primitives::v5::CoreIndex, + pub runtime_types::polkadot_primitives::v7::CoreIndex, ); impl ::subxt::events::StaticEvent for CandidateTimedOut { const PALLET: &'static str = "ParaInclusion"; @@ -25558,100 +27536,37 @@ pub mod api { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields_iter (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: AvailabilityBitfieldRecord < :: core :: primitive :: u32 > , () , () , :: subxt :: storage :: address :: Yes >{ - ::subxt::storage::address::Address::new_static( - "ParaInclusion", - "AvailabilityBitfields", - vec![], - [ - 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, - 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, - 61u8, 32u8, 209u8, 54u8, 120u8, 187u8, 39u8, 114u8, 70u8, 212u8, 170u8, - ], - ) - } - #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] pub fn availability_bitfields (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_primitives :: v5 :: ValidatorIndex > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: AvailabilityBitfieldRecord < :: core :: primitive :: u32 > , :: subxt :: storage :: address :: Yes , () , () >{ - ::subxt::storage::address::Address::new_static( - "ParaInclusion", - "AvailabilityBitfields", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, - 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, - 61u8, 32u8, 209u8, 54u8, 120u8, 187u8, 39u8, 114u8, 70u8, 212u8, 170u8, - ], - ) - } - #[doc = " Candidates pending availability by `ParaId`."] pub fn pending_availability_iter (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , () , () , :: subxt :: storage :: address :: Yes >{ - ::subxt::storage::address::Address::new_static( - "ParaInclusion", - "PendingAvailability", - vec![], - [ - 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, - 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, - 87u8, 8u8, 142u8, 243u8, 142u8, 57u8, 121u8, 225u8, 218u8, 22u8, 132u8, - ], - ) - } - #[doc = " Candidates pending availability by `ParaId`."] pub fn pending_availability (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: Id > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > , :: subxt :: storage :: address :: Yes , () , () >{ + #[doc = " Candidates pending availability by `ParaId`. They form a chain starting from the latest"] + #[doc = " included head of the para."] + #[doc = " Use a different prefix post-migration to v1, since the v0 `PendingAvailability` storage"] + #[doc = " would otherwise have the exact same prefix which could cause undefined behaviour when doing"] + #[doc = " the migration."] pub fn v1 (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: Id > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > > , :: subxt :: storage :: address :: Yes , () , :: subxt :: storage :: address :: Yes >{ ::subxt::storage::address::Address::new_static( "ParaInclusion", - "PendingAvailability", + "V1", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, - 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, - 87u8, 8u8, 142u8, 243u8, 142u8, 57u8, 121u8, 225u8, 218u8, 22u8, 132u8, + 168u8, 102u8, 148u8, 186u8, 81u8, 2u8, 106u8, 60u8, 191u8, 34u8, 196u8, + 207u8, 208u8, 186u8, 138u8, 3u8, 31u8, 128u8, 200u8, 132u8, 34u8, + 248u8, 248u8, 14u8, 109u8, 197u8, 44u8, 140u8, 253u8, 33u8, 186u8, + 71u8, ], ) } - #[doc = " The commitments of candidates pending availability, by `ParaId`."] - pub fn pending_availability_commitments_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::CandidateCommitments< - ::core::primitive::u32, - >, - (), - (), - ::subxt::storage::address::Yes, - > { + #[doc = " Candidates pending availability by `ParaId`. They form a chain starting from the latest"] + #[doc = " included head of the para."] + #[doc = " Use a different prefix post-migration to v1, since the v0 `PendingAvailability` storage"] + #[doc = " would otherwise have the exact same prefix which could cause undefined behaviour when doing"] + #[doc = " the migration."] pub fn v1_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: utils :: H256 , :: core :: primitive :: u32 > > , () , () , :: subxt :: storage :: address :: Yes >{ ::subxt::storage::address::Address::new_static( "ParaInclusion", - "PendingAvailabilityCommitments", - vec![], + "V1", + Vec::new(), [ - 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, - 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, - 182u8, 246u8, 164u8, 108u8, 113u8, 16u8, 169u8, 64u8, 97u8, 202u8, - ], - ) - } - #[doc = " The commitments of candidates pending availability, by `ParaId`."] - pub fn pending_availability_commitments( - &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::CandidateCommitments< - ::core::primitive::u32, - >, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "ParaInclusion", - "PendingAvailabilityCommitments", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, - 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, - 182u8, 246u8, 164u8, 108u8, 113u8, 16u8, 169u8, 64u8, 97u8, 202u8, + 168u8, 102u8, 148u8, 186u8, 81u8, 2u8, 106u8, 60u8, 191u8, 34u8, 196u8, + 207u8, 208u8, 186u8, 138u8, 3u8, 31u8, 128u8, 200u8, 132u8, 34u8, + 248u8, 248u8, 14u8, 109u8, 197u8, 44u8, 140u8, 253u8, 33u8, 186u8, + 71u8, ], ) } @@ -25680,7 +27595,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Enter { - pub data: runtime_types::polkadot_primitives::v5::InherentData< + pub data: runtime_types::polkadot_primitives::v7::InherentData< runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, >, } @@ -25691,10 +27606,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] pub fn enter( &self, - data: runtime_types::polkadot_primitives::v5::InherentData< + data: runtime_types::polkadot_primitives::v7::InherentData< runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, >, ) -> ::subxt::tx::Payload { @@ -25703,9 +27618,9 @@ pub mod api { "enter", types::Enter { data }, [ - 145u8, 120u8, 158u8, 39u8, 139u8, 223u8, 236u8, 209u8, 253u8, 108u8, - 188u8, 21u8, 23u8, 61u8, 25u8, 171u8, 30u8, 203u8, 161u8, 117u8, 90u8, - 55u8, 50u8, 107u8, 26u8, 52u8, 26u8, 158u8, 56u8, 218u8, 186u8, 142u8, + 244u8, 74u8, 26u8, 233u8, 127u8, 208u8, 55u8, 137u8, 180u8, 244u8, + 70u8, 55u8, 177u8, 211u8, 53u8, 224u8, 167u8, 95u8, 71u8, 211u8, 204u8, + 137u8, 42u8, 149u8, 209u8, 214u8, 26u8, 2u8, 67u8, 107u8, 131u8, 72u8, ], ) } @@ -25746,7 +27661,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::ScrapedOnChainVotes< + runtime_types::polkadot_primitives::v7::ScrapedOnChainVotes< ::subxt::utils::H256, >, ::subxt::storage::address::Yes, @@ -25758,10 +27673,9 @@ pub mod api { "OnChainVotes", vec![], [ - 200u8, 210u8, 42u8, 153u8, 85u8, 71u8, 171u8, 108u8, 148u8, 212u8, - 108u8, 61u8, 178u8, 77u8, 129u8, 90u8, 120u8, 218u8, 228u8, 152u8, - 120u8, 226u8, 29u8, 82u8, 239u8, 146u8, 41u8, 164u8, 193u8, 207u8, - 246u8, 115u8, + 97u8, 41u8, 197u8, 241u8, 12u8, 210u8, 132u8, 148u8, 4u8, 230u8, 206u8, + 170u8, 41u8, 135u8, 147u8, 63u8, 47u8, 192u8, 0u8, 133u8, 104u8, 186u8, + 137u8, 94u8, 227u8, 108u8, 253u8, 86u8, 207u8, 233u8, 65u8, 27u8, ], ) } @@ -25786,7 +27700,7 @@ pub mod api { ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< - ::std::vec::Vec, + ::std::vec::Vec, >, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, @@ -25803,10 +27717,8 @@ pub mod api { ], ) } - #[doc = " One entry for each availability core. Entries are `None` if the core is not currently"] - #[doc = " occupied. Can be temporarily `Some` if scheduled but not occupied."] - #[doc = " The i'th parachain belongs to the i'th core, with the remaining cores all being"] - #[doc = " parathread-multiplexers."] + #[doc = " One entry for each availability core. The i'th parachain belongs to the i'th core, with the"] + #[doc = " remaining cores all being on demand parachain multiplexers."] #[doc = ""] #[doc = " Bounded by the maximum of either of these two values:"] #[doc = " * The number of parachains and parathread multiplexers"] @@ -25816,7 +27728,7 @@ pub mod api { ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::CoreOccupied< + runtime_types::polkadot_runtime_parachains::scheduler::pallet::CoreOccupied< ::core::primitive::u32, >, >, @@ -25829,9 +27741,10 @@ pub mod api { "AvailabilityCores", vec![], [ - 134u8, 59u8, 206u8, 4u8, 69u8, 72u8, 73u8, 25u8, 139u8, 152u8, 202u8, - 43u8, 224u8, 77u8, 64u8, 57u8, 218u8, 245u8, 254u8, 222u8, 227u8, 95u8, - 119u8, 134u8, 218u8, 47u8, 154u8, 233u8, 229u8, 172u8, 100u8, 86u8, + 250u8, 177u8, 44u8, 237u8, 5u8, 116u8, 135u8, 99u8, 136u8, 209u8, + 181u8, 145u8, 254u8, 57u8, 42u8, 92u8, 236u8, 67u8, 128u8, 171u8, + 200u8, 88u8, 40u8, 31u8, 163u8, 128u8, 15u8, 96u8, 181u8, 224u8, 162u8, + 188u8, ], ) } @@ -25863,36 +27776,17 @@ pub mod api { ) } #[doc = " One entry for each availability core. The `VecDeque` represents the assignments to be"] - #[doc = " scheduled on that core. `None` is used to signal to not schedule the next para of the core"] - #[doc = " as there is one currently being scheduled. Not using `None` here would overwrite the"] - #[doc = " `CoreState` in the runtime API. The value contained here will not be valid after the end of"] - #[doc = " a block. Runtime APIs should be used to determine scheduled cores/ for the upcoming block."] - pub fn claim_queue( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::subxt::utils::KeyedVec< - runtime_types::polkadot_primitives::v5::CoreIndex, - ::std::vec::Vec< - ::core::option::Option< - runtime_types::polkadot_primitives::v5::ParasEntry< - ::core::primitive::u32, - >, - >, - >, - >, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { + #[doc = " scheduled on that core. The value contained here will not be valid after the end of"] + #[doc = " a block. Runtime APIs should be used to determine scheduled cores for the upcoming block."] pub fn claim_queue (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: subxt :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v7 :: CoreIndex , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , () >{ ::subxt::storage::address::Address::new_static( "ParaScheduler", "ClaimQueue", vec![], [ - 132u8, 78u8, 109u8, 225u8, 170u8, 78u8, 17u8, 53u8, 56u8, 218u8, 14u8, - 17u8, 230u8, 247u8, 11u8, 223u8, 18u8, 98u8, 92u8, 164u8, 223u8, 143u8, - 241u8, 64u8, 185u8, 108u8, 228u8, 137u8, 122u8, 100u8, 29u8, 239u8, + 192u8, 65u8, 227u8, 114u8, 125u8, 169u8, 134u8, 70u8, 201u8, 99u8, + 246u8, 23u8, 0u8, 143u8, 163u8, 87u8, 216u8, 1u8, 184u8, 124u8, 23u8, + 180u8, 132u8, 143u8, 202u8, 81u8, 144u8, 242u8, 15u8, 141u8, 124u8, + 126u8, ], ) } @@ -26048,8 +27942,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct IncludePvfCheckStatement { - pub stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, - pub signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, + pub stmt: runtime_types::polkadot_primitives::v7::PvfCheckStatement, + pub signature: runtime_types::polkadot_primitives::v7::validator_app::Signature, } impl ::subxt::blocks::StaticExtrinsic for IncludePvfCheckStatement { const PALLET: &'static str = "Paras"; @@ -26076,7 +27970,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_set_current_code`]."] + #[doc = "Set the storage for the parachain validation code immediately."] pub fn force_set_current_code( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -26094,7 +27988,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_current_head`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub fn force_set_current_head( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -26112,7 +28006,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] + #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] pub fn force_schedule_code_upgrade( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -26131,7 +28025,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_note_new_head`]."] + #[doc = "Note a new block head for para within the context of the current block."] pub fn force_note_new_head( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -26148,7 +28042,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_queue_action`]."] + #[doc = "Put a parachain directly into the next session's action queue."] + #[doc = "We can't queue it any sooner than this without going into the"] + #[doc = "initializer..."] pub fn force_queue_action( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -26165,7 +28061,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_trusted_validation_code`]."] + #[doc = "Adds the validation code to the storage."] + #[doc = ""] + #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] + #[doc = "is running for that code, it will be instantly accepted."] + #[doc = ""] + #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] + #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] + #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] + #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] + #[doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] + #[doc = "manipulation."] + #[doc = ""] + #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] + #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] pub fn add_trusted_validation_code( &self, validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode, @@ -26182,7 +28091,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke_unused_validation_code`]."] + #[doc = "Remove the validation code from the storage iff the reference count is 0."] + #[doc = ""] + #[doc = "This is better than removing the storage directly, because it will not remove the code"] + #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] + #[doc = "dispatching."] pub fn poke_unused_validation_code( &self, validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash, @@ -26198,25 +28111,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::include_pvf_check_statement`]."] + #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] + #[doc = "enacts the results if that was the last vote before achieving the supermajority."] pub fn include_pvf_check_statement( &self, - stmt: runtime_types::polkadot_primitives::v5::PvfCheckStatement, - signature: runtime_types::polkadot_primitives::v5::validator_app::Signature, + stmt: runtime_types::polkadot_primitives::v7::PvfCheckStatement, + signature: runtime_types::polkadot_primitives::v7::validator_app::Signature, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Paras", "include_pvf_check_statement", types::IncludePvfCheckStatement { stmt, signature }, [ - 104u8, 113u8, 121u8, 186u8, 41u8, 70u8, 254u8, 44u8, 207u8, 94u8, 61u8, - 148u8, 106u8, 240u8, 165u8, 223u8, 231u8, 190u8, 157u8, 97u8, 55u8, - 90u8, 229u8, 112u8, 129u8, 224u8, 29u8, 180u8, 242u8, 203u8, 195u8, - 19u8, + 207u8, 92u8, 120u8, 222u8, 183u8, 105u8, 82u8, 155u8, 62u8, 41u8, 87u8, + 66u8, 240u8, 71u8, 160u8, 114u8, 99u8, 195u8, 247u8, 190u8, 40u8, + 132u8, 71u8, 161u8, 109u8, 207u8, 9u8, 163u8, 125u8, 98u8, 71u8, 107u8, ], ) } - #[doc = "See [`Pallet::force_set_most_recent_context`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub fn force_set_most_recent_context( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -26399,25 +28312,26 @@ pub mod api { #[doc = ""] #[doc = " Invariant:"] #[doc = " - There are no PVF pre-checking votes that exists in list but not in the set and vice versa."] - pub fn pvf_active_vote_map_iter( + pub fn pvf_active_vote_map( &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::PvfCheckActiveVoteState< ::core::primitive::u32, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "PvfActiveVoteMap", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 122u8, 196u8, 26u8, 2u8, 55u8, 206u8, 194u8, 194u8, 50u8, 49u8, 211u8, - 2u8, 112u8, 194u8, 110u8, 119u8, 68u8, 229u8, 121u8, 94u8, 159u8, 57u8, - 28u8, 34u8, 162u8, 185u8, 139u8, 7u8, 172u8, 171u8, 250u8, 238u8, + 180u8, 73u8, 103u8, 207u8, 245u8, 111u8, 142u8, 8u8, 159u8, 143u8, + 245u8, 212u8, 149u8, 78u8, 213u8, 224u8, 206u8, 8u8, 95u8, 40u8, 24u8, + 72u8, 123u8, 41u8, 198u8, 190u8, 9u8, 33u8, 247u8, 205u8, 60u8, 199u8, ], ) } @@ -26425,26 +28339,25 @@ pub mod api { #[doc = ""] #[doc = " Invariant:"] #[doc = " - There are no PVF pre-checking votes that exists in list but not in the set and vice versa."] - pub fn pvf_active_vote_map( + pub fn pvf_active_vote_map_root( &self, - _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::PvfCheckActiveVoteState< ::core::primitive::u32, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "PvfActiveVoteMap", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 122u8, 196u8, 26u8, 2u8, 55u8, 206u8, 194u8, 194u8, 50u8, 49u8, 211u8, - 2u8, 112u8, 194u8, 110u8, 119u8, 68u8, 229u8, 121u8, 94u8, 159u8, 57u8, - 28u8, 34u8, 162u8, 185u8, 139u8, 7u8, 172u8, 171u8, 250u8, 238u8, + 180u8, 73u8, 103u8, 207u8, 245u8, 111u8, 142u8, 8u8, 159u8, 143u8, + 245u8, 212u8, 149u8, 78u8, 213u8, 224u8, 206u8, 8u8, 95u8, 40u8, 24u8, + 72u8, 123u8, 41u8, 198u8, 190u8, 9u8, 33u8, 247u8, 205u8, 60u8, 199u8, ], ) } @@ -26486,19 +28399,22 @@ pub mod api { ) } #[doc = " The current lifecycle of a all known Para IDs."] - pub fn para_lifecycles_iter( + pub fn para_lifecycles( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::ParaLifecycle, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "ParaLifecycles", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 2u8, 203u8, 32u8, 194u8, 76u8, 227u8, 250u8, 9u8, 168u8, 201u8, 171u8, 180u8, 18u8, 169u8, 206u8, 183u8, 48u8, 189u8, 204u8, 192u8, 237u8, @@ -26508,22 +28424,19 @@ pub mod api { ) } #[doc = " The current lifecycle of a all known Para IDs."] - pub fn para_lifecycles( + pub fn para_lifecycles_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::ParaLifecycle, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "ParaLifecycles", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 2u8, 203u8, 32u8, 194u8, 76u8, 227u8, 250u8, 9u8, 168u8, 201u8, 171u8, 180u8, 18u8, 169u8, 206u8, 183u8, 48u8, 189u8, 204u8, 192u8, 237u8, @@ -26533,27 +28446,6 @@ pub mod api { ) } #[doc = " The head-data of every registered para."] - pub fn heads_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_parachain_primitives::primitives::HeadData, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Paras", - "Heads", - vec![], - [ - 222u8, 116u8, 180u8, 190u8, 172u8, 192u8, 174u8, 132u8, 225u8, 180u8, - 119u8, 90u8, 5u8, 39u8, 92u8, 230u8, 116u8, 202u8, 92u8, 99u8, 135u8, - 201u8, 10u8, 58u8, 55u8, 211u8, 209u8, 86u8, 93u8, 133u8, 99u8, 139u8, - ], - ) - } - #[doc = " The head-data of every registered para."] pub fn heads( &self, _0: impl ::std::borrow::Borrow< @@ -26564,7 +28456,7 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::HeadData, ::subxt::storage::address::Yes, (), - (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", @@ -26577,24 +28469,24 @@ pub mod api { ], ) } - #[doc = " The context (relay-chain block number) of the most recent parachain head."] - pub fn most_recent_context_iter( + #[doc = " The head-data of every registered para."] + pub fn heads_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, + runtime_types::polkadot_parachain_primitives::primitives::HeadData, (), (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", - "MostRecentContext", - vec![], + "Heads", + Vec::new(), [ - 196u8, 150u8, 125u8, 121u8, 196u8, 182u8, 2u8, 5u8, 244u8, 170u8, 75u8, - 57u8, 162u8, 8u8, 104u8, 94u8, 114u8, 32u8, 192u8, 236u8, 120u8, 91u8, - 84u8, 118u8, 216u8, 143u8, 61u8, 208u8, 57u8, 180u8, 216u8, 243u8, + 222u8, 116u8, 180u8, 190u8, 172u8, 192u8, 174u8, 132u8, 225u8, 180u8, + 119u8, 90u8, 5u8, 39u8, 92u8, 230u8, 116u8, 202u8, 92u8, 99u8, 135u8, + 201u8, 10u8, 58u8, 55u8, 211u8, 209u8, 86u8, 93u8, 133u8, 99u8, 139u8, ], ) } @@ -26609,7 +28501,7 @@ pub mod api { ::core::primitive::u32, ::subxt::storage::address::Yes, (), - (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", @@ -26622,27 +28514,24 @@ pub mod api { ], ) } - #[doc = " The validation code hash of every live para."] - #[doc = ""] - #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] - pub fn current_code_hash_iter( + #[doc = " The context (relay-chain block number) of the most recent parachain head."] + pub fn most_recent_context_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, + ::core::primitive::u32, (), (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", - "CurrentCodeHash", - vec![], + "MostRecentContext", + Vec::new(), [ - 251u8, 100u8, 30u8, 46u8, 191u8, 60u8, 45u8, 221u8, 218u8, 20u8, 154u8, - 233u8, 211u8, 198u8, 151u8, 195u8, 99u8, 210u8, 126u8, 165u8, 240u8, - 129u8, 183u8, 252u8, 104u8, 119u8, 38u8, 155u8, 150u8, 198u8, 127u8, - 103u8, + 196u8, 150u8, 125u8, 121u8, 196u8, 182u8, 2u8, 5u8, 244u8, 170u8, 75u8, + 57u8, 162u8, 8u8, 104u8, 94u8, 114u8, 32u8, 192u8, 236u8, 120u8, 91u8, + 84u8, 118u8, 216u8, 143u8, 61u8, 208u8, 57u8, 180u8, 216u8, 243u8, ], ) } @@ -26659,7 +28548,7 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, ::subxt::storage::address::Yes, (), - (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", @@ -26673,11 +28562,10 @@ pub mod api { ], ) } - #[doc = " Actual past code hash, indicated by the para id as well as the block number at which it"] - #[doc = " became outdated."] + #[doc = " The validation code hash of every live para."] #[doc = ""] #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] - pub fn past_code_hash_iter( + pub fn current_code_hash_root( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, @@ -26688,12 +28576,13 @@ pub mod api { > { ::subxt::storage::address::Address::new_static( "Paras", - "PastCodeHash", - vec![], + "CurrentCodeHash", + Vec::new(), [ - 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, - 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, - 232u8, 8u8, 6u8, 71u8, 188u8, 140u8, 41u8, 10u8, 215u8, 22u8, 153u8, + 251u8, 100u8, 30u8, 46u8, 191u8, 60u8, 45u8, 221u8, 218u8, 20u8, 154u8, + 233u8, 211u8, 198u8, 151u8, 195u8, 99u8, 210u8, 126u8, 165u8, 240u8, + 129u8, 183u8, 252u8, 104u8, 119u8, 38u8, 155u8, 150u8, 198u8, 127u8, + 103u8, ], ) } @@ -26701,22 +28590,26 @@ pub mod api { #[doc = " became outdated."] #[doc = ""] #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] - pub fn past_code_hash_iter1( + pub fn past_code_hash( &self, _0: impl ::std::borrow::Borrow< runtime_types::polkadot_parachain_primitives::primitives::Id, >, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeHash", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, @@ -26728,26 +28621,19 @@ pub mod api { #[doc = " became outdated."] #[doc = ""] #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] - pub fn past_code_hash( + pub fn past_code_hash_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, - _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeHash", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 73u8, 209u8, 188u8, 36u8, 127u8, 42u8, 171u8, 136u8, 29u8, 126u8, 220u8, 209u8, 230u8, 22u8, 12u8, 63u8, 8u8, 102u8, 45u8, 158u8, 178u8, @@ -26758,21 +28644,24 @@ pub mod api { #[doc = " Past code of parachains. The parachains themselves may not be registered anymore,"] #[doc = " but we also keep their code on-chain for the same amount of time as outdated code"] #[doc = " to keep it available for approval checkers."] - pub fn past_code_meta_iter( + pub fn past_code_meta( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::ParaPastCodeMeta< ::core::primitive::u32, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeMeta", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 233u8, 47u8, 137u8, 174u8, 98u8, 64u8, 11u8, 75u8, 93u8, 222u8, 78u8, 58u8, 66u8, 245u8, 151u8, 39u8, 144u8, 36u8, 84u8, 176u8, 239u8, 183u8, @@ -26783,24 +28672,21 @@ pub mod api { #[doc = " Past code of parachains. The parachains themselves may not be registered anymore,"] #[doc = " but we also keep their code on-chain for the same amount of time as outdated code"] #[doc = " to keep it available for approval checkers."] - pub fn past_code_meta( + pub fn past_code_meta_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::ParaPastCodeMeta< ::core::primitive::u32, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Paras", "PastCodeMeta", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 233u8, 47u8, 137u8, 174u8, 98u8, 64u8, 11u8, 75u8, 93u8, 222u8, 78u8, 58u8, 66u8, 245u8, 151u8, 39u8, 144u8, 36u8, 84u8, 176u8, 239u8, 183u8, @@ -26837,22 +28723,26 @@ pub mod api { ], ) } - #[doc = " The block number at which the planned code change is expected for a para."] + #[doc = " The block number at which the planned code change is expected for a parachain."] + #[doc = ""] #[doc = " The change will be applied after the first parablock for this ID included which executes"] #[doc = " in the context of a relay chain block with a number >= `expected_at`."] - pub fn future_code_upgrades_iter( + pub fn future_code_upgrades( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeUpgrades", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 163u8, 168u8, 23u8, 138u8, 198u8, 70u8, 135u8, 221u8, 167u8, 187u8, 15u8, 144u8, 228u8, 8u8, 138u8, 125u8, 101u8, 154u8, 11u8, 74u8, 173u8, @@ -26860,25 +28750,23 @@ pub mod api { ], ) } - #[doc = " The block number at which the planned code change is expected for a para."] + #[doc = " The block number at which the planned code change is expected for a parachain."] + #[doc = ""] #[doc = " The change will be applied after the first parablock for this ID included which executes"] #[doc = " in the context of a relay chain block with a number >= `expected_at`."] - pub fn future_code_upgrades( + pub fn future_code_upgrades_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeUpgrades", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 163u8, 168u8, 23u8, 138u8, 198u8, 70u8, 135u8, 221u8, 167u8, 187u8, 15u8, 144u8, 228u8, 8u8, 138u8, 125u8, 101u8, 154u8, 11u8, 74u8, 173u8, @@ -26886,22 +28774,57 @@ pub mod api { ], ) } + #[doc = " The list of upcoming future code upgrades."] + #[doc = ""] + #[doc = " Each item is a pair of the parachain and the expected block at which the upgrade should be"] + #[doc = " applied. The upgrade will be applied at the given relay chain block. In contrast to"] + #[doc = " [`FutureCodeUpgrades`] this code upgrade will be applied regardless the parachain making any"] + #[doc = " progress or not."] + #[doc = ""] + #[doc = " Ordered ascending by block number."] + pub fn future_code_upgrades_at( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::std::vec::Vec<( + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "Paras", + "FutureCodeUpgradesAt", + vec![], + [ + 106u8, 115u8, 201u8, 132u8, 198u8, 78u8, 236u8, 157u8, 246u8, 176u8, + 236u8, 158u8, 90u8, 166u8, 25u8, 230u8, 30u8, 149u8, 163u8, 15u8, + 108u8, 145u8, 167u8, 118u8, 74u8, 211u8, 96u8, 173u8, 56u8, 11u8, + 181u8, 146u8, + ], + ) + } #[doc = " The actual future code hash of a para."] #[doc = ""] #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] - pub fn future_code_hash_iter( + pub fn future_code_hash( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeHash", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 62u8, 238u8, 183u8, 12u8, 197u8, 119u8, 163u8, 239u8, 192u8, 228u8, 110u8, 58u8, 128u8, 223u8, 32u8, 137u8, 109u8, 127u8, 41u8, 83u8, 91u8, @@ -26912,22 +28835,19 @@ pub mod api { #[doc = " The actual future code hash of a para."] #[doc = ""] #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] - pub fn future_code_hash( + pub fn future_code_hash_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::ValidationCodeHash, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "FutureCodeHash", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 62u8, 238u8, 183u8, 12u8, 197u8, 119u8, 163u8, 239u8, 192u8, 228u8, 110u8, 58u8, 128u8, 223u8, 32u8, 137u8, 109u8, 127u8, 41u8, 83u8, 91u8, @@ -26945,19 +28865,22 @@ pub mod api { #[doc = ""] #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] #[doc = " the format will require migration of parachains."] - pub fn upgrade_go_ahead_signal_iter( + pub fn upgrade_go_ahead_signal( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::UpgradeGoAhead, - (), + runtime_types::polkadot_primitives::v7::UpgradeGoAhead, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeGoAheadSignal", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 41u8, 80u8, 120u8, 6u8, 98u8, 85u8, 36u8, 37u8, 170u8, 189u8, 56u8, 127u8, 155u8, 180u8, 112u8, 195u8, 135u8, 214u8, 235u8, 87u8, 197u8, @@ -26976,22 +28899,19 @@ pub mod api { #[doc = ""] #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] #[doc = " the format will require migration of parachains."] - pub fn upgrade_go_ahead_signal( + pub fn upgrade_go_ahead_signal_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::UpgradeGoAhead, - ::subxt::storage::address::Yes, + runtime_types::polkadot_primitives::v7::UpgradeGoAhead, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeGoAheadSignal", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 41u8, 80u8, 120u8, 6u8, 98u8, 85u8, 36u8, 37u8, 170u8, 189u8, 56u8, 127u8, 155u8, 180u8, 112u8, 195u8, 135u8, 214u8, 235u8, 87u8, 197u8, @@ -27009,19 +28929,22 @@ pub mod api { #[doc = ""] #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] #[doc = " the format will require migration of parachains."] - pub fn upgrade_restriction_signal_iter( + pub fn upgrade_restriction_signal( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::UpgradeRestriction, - (), + runtime_types::polkadot_primitives::v7::UpgradeRestriction, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeRestrictionSignal", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 158u8, 105u8, 62u8, 252u8, 149u8, 145u8, 34u8, 92u8, 119u8, 204u8, 46u8, 96u8, 117u8, 183u8, 134u8, 20u8, 172u8, 243u8, 145u8, 113u8, @@ -27039,22 +28962,19 @@ pub mod api { #[doc = ""] #[doc = " NOTE that this field is used by parachains via merkle storage proofs, therefore changing"] #[doc = " the format will require migration of parachains."] - pub fn upgrade_restriction_signal( + pub fn upgrade_restriction_signal_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::UpgradeRestriction, - ::subxt::storage::address::Yes, + runtime_types::polkadot_primitives::v7::UpgradeRestriction, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "UpgradeRestrictionSignal", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 158u8, 105u8, 62u8, 252u8, 149u8, 145u8, 34u8, 92u8, 119u8, 204u8, 46u8, 96u8, 117u8, 183u8, 134u8, 20u8, 172u8, 243u8, 145u8, 113u8, @@ -27090,8 +29010,10 @@ pub mod api { ], ) } - #[doc = " The list of upcoming code upgrades. Each item is a pair of which para performs a code"] - #[doc = " upgrade and at which relay-chain block it is expected at."] + #[doc = " The list of upcoming code upgrades."] + #[doc = ""] + #[doc = " Each item is a pair of which para performs a code upgrade and at which relay-chain block it"] + #[doc = " is expected at."] #[doc = ""] #[doc = " Ordered ascending by block number."] pub fn upcoming_upgrades( @@ -27118,19 +29040,20 @@ pub mod api { ) } #[doc = " The actions to perform during the start of a specific session index."] - pub fn actions_queue_iter( + pub fn actions_queue( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "ActionsQueue", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 13u8, 25u8, 129u8, 203u8, 95u8, 206u8, 254u8, 240u8, 170u8, 209u8, 55u8, 117u8, 70u8, 220u8, 139u8, 102u8, 9u8, 229u8, 139u8, 120u8, 67u8, @@ -27139,20 +29062,19 @@ pub mod api { ) } #[doc = " The actions to perform during the start of a specific session index."] - pub fn actions_queue( + pub fn actions_queue_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Paras", "ActionsQueue", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 13u8, 25u8, 129u8, 203u8, 95u8, 206u8, 254u8, 240u8, 170u8, 209u8, 55u8, 117u8, 70u8, 220u8, 139u8, 102u8, 9u8, 229u8, 139u8, 120u8, 67u8, @@ -27164,19 +29086,22 @@ pub mod api { #[doc = ""] #[doc = " NOTE that after PVF pre-checking is enabled the para genesis arg will have it's code set"] #[doc = " to empty. Instead, the code will be saved into the storage right away via `CodeByHash`."] - pub fn upcoming_paras_genesis_iter( + pub fn upcoming_paras_genesis( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "UpcomingParasGenesis", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 215u8, 121u8, 106u8, 13u8, 102u8, 47u8, 129u8, 221u8, 153u8, 91u8, 23u8, 94u8, 11u8, 39u8, 19u8, 180u8, 136u8, 136u8, 254u8, 152u8, 250u8, @@ -27189,22 +29114,19 @@ pub mod api { #[doc = ""] #[doc = " NOTE that after PVF pre-checking is enabled the para genesis arg will have it's code set"] #[doc = " to empty. Instead, the code will be saved into the storage right away via `CodeByHash`."] - pub fn upcoming_paras_genesis( + pub fn upcoming_paras_genesis_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "UpcomingParasGenesis", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 215u8, 121u8, 106u8, 13u8, 102u8, 47u8, 129u8, 221u8, 153u8, 91u8, 23u8, 94u8, 11u8, 39u8, 19u8, 180u8, 136u8, 136u8, 254u8, 152u8, 250u8, @@ -27214,19 +29136,20 @@ pub mod api { ) } #[doc = " The number of reference on the validation code in [`CodeByHash`] storage."] - pub fn code_by_hash_refs_iter( + pub fn code_by_hash_refs( &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHashRefs", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 47u8, 50u8, 103u8, 161u8, 130u8, 252u8, 157u8, 35u8, 174u8, 37u8, 102u8, 60u8, 195u8, 30u8, 164u8, 203u8, 67u8, 129u8, 107u8, 181u8, @@ -27236,20 +29159,19 @@ pub mod api { ) } #[doc = " The number of reference on the validation code in [`CodeByHash`] storage."] - pub fn code_by_hash_refs( + pub fn code_by_hash_refs_root( &self, - _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHashRefs", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 47u8, 50u8, 103u8, 161u8, 130u8, 252u8, 157u8, 35u8, 174u8, 37u8, 102u8, 60u8, 195u8, 30u8, 164u8, 203u8, 67u8, 129u8, 107u8, 181u8, @@ -27262,19 +29184,20 @@ pub mod api { #[doc = ""] #[doc = " This storage is consistent with [`FutureCodeHash`], [`CurrentCodeHash`] and"] #[doc = " [`PastCodeHash`]."] - pub fn code_by_hash_iter( + pub fn code_by_hash( &self, + _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHash", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 155u8, 102u8, 73u8, 180u8, 127u8, 211u8, 181u8, 44u8, 56u8, 235u8, 49u8, 4u8, 25u8, 213u8, 116u8, 200u8, 232u8, 203u8, 190u8, 90u8, 93u8, @@ -27286,20 +29209,19 @@ pub mod api { #[doc = ""] #[doc = " This storage is consistent with [`FutureCodeHash`], [`CurrentCodeHash`] and"] #[doc = " [`PastCodeHash`]."] - pub fn code_by_hash( + pub fn code_by_hash_root( &self, - _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::ValidationCode, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Paras", "CodeByHash", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 155u8, 102u8, 73u8, 180u8, 127u8, 211u8, 181u8, 44u8, 56u8, 235u8, 49u8, 4u8, 25u8, 213u8, 116u8, 200u8, 232u8, 203u8, 190u8, 90u8, 93u8, @@ -27360,7 +29282,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] pub fn force_approve( &self, up_to: ::core::primitive::u32, @@ -27423,9 +29347,10 @@ pub mod api { "BufferedSessionChanges", vec![], [ - 99u8, 153u8, 100u8, 11u8, 28u8, 62u8, 163u8, 239u8, 177u8, 55u8, 151u8, - 242u8, 227u8, 59u8, 176u8, 10u8, 227u8, 51u8, 252u8, 191u8, 233u8, - 36u8, 1u8, 131u8, 255u8, 56u8, 6u8, 65u8, 5u8, 185u8, 114u8, 139u8, + 52u8, 253u8, 99u8, 88u8, 47u8, 128u8, 246u8, 183u8, 252u8, 144u8, + 187u8, 140u8, 169u8, 21u8, 167u8, 72u8, 246u8, 217u8, 140u8, 234u8, + 222u8, 57u8, 254u8, 33u8, 237u8, 212u8, 136u8, 204u8, 79u8, 185u8, + 83u8, 36u8, ], ) } @@ -27439,8 +29364,11 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " The downward messages addressed for a certain para."] - pub fn downward_message_queues_iter( + pub fn downward_message_queues( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< @@ -27448,14 +29376,14 @@ pub mod api { ::core::primitive::u32, >, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueues", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 38u8, 183u8, 133u8, 200u8, 199u8, 135u8, 68u8, 232u8, 189u8, 168u8, 3u8, 219u8, 201u8, 180u8, 156u8, 79u8, 134u8, 164u8, 94u8, 114u8, @@ -27465,11 +29393,8 @@ pub mod api { ) } #[doc = " The downward messages addressed for a certain para."] - pub fn downward_message_queues( + pub fn downward_message_queues_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< @@ -27477,14 +29402,14 @@ pub mod api { ::core::primitive::u32, >, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueues", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 38u8, 183u8, 133u8, 200u8, 199u8, 135u8, 68u8, 232u8, 189u8, 168u8, 3u8, 219u8, 201u8, 180u8, 156u8, 79u8, 134u8, 164u8, 94u8, 114u8, @@ -27500,19 +29425,22 @@ pub mod api { #[doc = " - `prev_head`: is the previous head hash or zero if none."] #[doc = " - `B`: is the relay-chain block number in which a message was appended."] #[doc = " - `H(M)`: is the hash of the message being appended."] - pub fn downward_message_queue_heads_iter( + pub fn downward_message_queue_heads( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::H256, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueueHeads", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 135u8, 165u8, 240u8, 0u8, 25u8, 110u8, 9u8, 108u8, 251u8, 225u8, 109u8, 184u8, 90u8, 132u8, 9u8, 151u8, 12u8, 118u8, 153u8, 212u8, 140u8, @@ -27527,22 +29455,19 @@ pub mod api { #[doc = " - `prev_head`: is the previous head hash or zero if none."] #[doc = " - `B`: is the relay-chain block number in which a message was appended."] #[doc = " - `H(M)`: is the hash of the message being appended."] - pub fn downward_message_queue_heads( + pub fn downward_message_queue_heads_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::subxt::utils::H256, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Dmp", "DownwardMessageQueueHeads", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 135u8, 165u8, 240u8, 0u8, 25u8, 110u8, 9u8, 108u8, 251u8, 225u8, 109u8, 184u8, 90u8, 132u8, 9u8, 151u8, 12u8, 118u8, 153u8, 212u8, 140u8, @@ -27550,20 +29475,23 @@ pub mod api { ], ) } - #[doc = " The number to multiply the base delivery fee by."] - pub fn delivery_fee_factor_iter( + #[doc = " The factor to multiply the base delivery fee by."] + pub fn delivery_fee_factor( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::sp_arithmetic::fixed_point::FixedU128, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Dmp", "DeliveryFeeFactor", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 43u8, 5u8, 63u8, 235u8, 115u8, 155u8, 130u8, 27u8, 75u8, 216u8, 177u8, 135u8, 203u8, 147u8, 167u8, 95u8, 208u8, 188u8, 25u8, 14u8, 84u8, 63u8, @@ -27571,23 +29499,20 @@ pub mod api { ], ) } - #[doc = " The number to multiply the base delivery fee by."] - pub fn delivery_fee_factor( + #[doc = " The factor to multiply the base delivery fee by."] + pub fn delivery_fee_factor_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::sp_arithmetic::fixed_point::FixedU128, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Dmp", "DeliveryFeeFactor", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 43u8, 5u8, 63u8, 235u8, 115u8, 155u8, 130u8, 27u8, 75u8, 216u8, 177u8, 135u8, 203u8, 147u8, 167u8, 95u8, 208u8, 188u8, 25u8, 14u8, 84u8, 63u8, @@ -27675,8 +29600,8 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ForceCleanHrmp { pub para: runtime_types::polkadot_parachain_primitives::primitives::Id, - pub inbound: ::core::primitive::u32, - pub outbound: ::core::primitive::u32, + pub num_inbound: ::core::primitive::u32, + pub num_outbound: ::core::primitive::u32, } impl ::subxt::blocks::StaticExtrinsic for ForceCleanHrmp { const PALLET: &'static str = "Hrmp"; @@ -27757,10 +29682,55 @@ pub mod api { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "force_open_hrmp_channel"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EstablishSystemChannel { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for EstablishSystemChannel { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "establish_system_channel"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PokeChannelDeposits { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::blocks::StaticExtrinsic for PokeChannelDeposits { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "poke_channel_deposits"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::hrmp_init_open_channel`]."] + #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] + #[doc = "parameters."] + #[doc = ""] + #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] + #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] + #[doc = ""] + #[doc = "These numbers are a subject to the relay-chain configuration limits."] + #[doc = ""] + #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] + #[doc = "change."] pub fn hrmp_init_open_channel( &self, recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -27783,7 +29753,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] + #[doc = "Accept a pending open channel request from the given sender."] + #[doc = ""] + #[doc = "The channel will be opened only on the next session boundary."] pub fn hrmp_accept_open_channel( &self, sender: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -27799,7 +29771,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_close_channel`]."] + #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] + #[doc = "recipient in the channel being closed."] + #[doc = ""] + #[doc = "The closure can only happen on a session change."] pub fn hrmp_close_channel( &self, channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId, @@ -27816,25 +29791,38 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_clean_hrmp`]."] + #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] + #[doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] + #[doc = "immediately for a specific parachain."] + #[doc = ""] + #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_clean_hrmp( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, - inbound: ::core::primitive::u32, - outbound: ::core::primitive::u32, + num_inbound: ::core::primitive::u32, + num_outbound: ::core::primitive::u32, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Hrmp", "force_clean_hrmp", - types::ForceCleanHrmp { para, inbound, outbound }, + types::ForceCleanHrmp { para, num_inbound, num_outbound }, [ - 0u8, 31u8, 178u8, 86u8, 30u8, 161u8, 50u8, 113u8, 51u8, 212u8, 175u8, - 144u8, 43u8, 127u8, 10u8, 168u8, 127u8, 39u8, 101u8, 67u8, 96u8, 29u8, - 117u8, 79u8, 184u8, 228u8, 182u8, 53u8, 55u8, 142u8, 225u8, 212u8, + 0u8, 184u8, 199u8, 44u8, 26u8, 150u8, 124u8, 255u8, 40u8, 63u8, 74u8, + 31u8, 133u8, 22u8, 241u8, 84u8, 44u8, 184u8, 128u8, 54u8, 175u8, 127u8, + 255u8, 232u8, 239u8, 26u8, 50u8, 27u8, 81u8, 223u8, 136u8, 110u8, ], ) } - #[doc = "See [`Pallet::force_process_hrmp_open`]."] + #[doc = "Force process HRMP open channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP open channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of opening channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_process_hrmp_open( &self, channels: ::core::primitive::u32, @@ -27851,7 +29839,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_process_hrmp_close`]."] + #[doc = "Force process HRMP close channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP close channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of closing channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_process_hrmp_close( &self, channels: ::core::primitive::u32, @@ -27868,7 +29863,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] + #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] + #[doc = "or the recipient for that request. The origin must be either of those."] + #[doc = ""] + #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] + #[doc = "already accepted."] + #[doc = ""] + #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] + #[doc = "witness data."] pub fn hrmp_cancel_open_request( &self, channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId, @@ -27885,7 +29887,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_open_hrmp_channel`]."] + #[doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] + #[doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] + #[doc = "configured limits."] + #[doc = ""] + #[doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] + #[doc = "governed by the system, e.g. a system parachain."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_open_hrmp_channel( &self, sender: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -27909,6 +29918,59 @@ pub mod api { ], ) } + #[doc = "Establish an HRMP channel between two system chains. If the channel does not already"] + #[doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] + #[doc = "deposits for channels between system chains, and automatically sets the message number"] + #[doc = "and size limits to the maximum allowed by the network's configuration."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A system chain, `ParaId`."] + #[doc = "- `recipient`: A system chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] + #[doc = "the channel does not exist yet, there is no fee."] + pub fn establish_system_channel( + &self, + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "establish_system_channel", + types::EstablishSystemChannel { sender, recipient }, + [ + 179u8, 12u8, 66u8, 57u8, 24u8, 114u8, 175u8, 141u8, 80u8, 157u8, 204u8, + 122u8, 116u8, 139u8, 35u8, 51u8, 68u8, 36u8, 61u8, 135u8, 221u8, 40u8, + 135u8, 21u8, 91u8, 60u8, 51u8, 51u8, 32u8, 224u8, 71u8, 182u8, + ], + ) + } + #[doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] + #[doc = "with system chains do not require a deposit."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A chain, `ParaId`."] + #[doc = "- `recipient`: A chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function."] + pub fn poke_channel_deposits( + &self, + sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Hrmp", + "poke_channel_deposits", + types::PokeChannelDeposits { sender, recipient }, + [ + 93u8, 153u8, 50u8, 127u8, 136u8, 255u8, 6u8, 155u8, 73u8, 216u8, 145u8, + 229u8, 200u8, 75u8, 94u8, 39u8, 117u8, 188u8, 62u8, 172u8, 210u8, + 212u8, 37u8, 11u8, 166u8, 31u8, 101u8, 129u8, 29u8, 229u8, 200u8, 16u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -27926,13 +29988,12 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Open HRMP channel requested."] - #[doc = "`[sender, recipient, proposed_max_capacity, proposed_max_message_size]`"] - pub struct OpenChannelRequested( - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - pub ::core::primitive::u32, - pub ::core::primitive::u32, - ); + pub struct OpenChannelRequested { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub proposed_max_capacity: ::core::primitive::u32, + pub proposed_max_message_size: ::core::primitive::u32, + } impl ::subxt::events::StaticEvent for OpenChannelRequested { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "OpenChannelRequested"; @@ -27948,11 +30009,11 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "An HRMP channel request sent by the receiver was canceled by either party."] - #[doc = "`[by_parachain, channel_id]`"] - pub struct OpenChannelCanceled( - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - pub runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - ); + pub struct OpenChannelCanceled { + pub by_parachain: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub channel_id: + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + } impl ::subxt::events::StaticEvent for OpenChannelCanceled { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "OpenChannelCanceled"; @@ -27967,11 +30028,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Open HRMP channel accepted. `[sender, recipient]`"] - pub struct OpenChannelAccepted( - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - ); + #[doc = "Open HRMP channel accepted."] + pub struct OpenChannelAccepted { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } impl ::subxt::events::StaticEvent for OpenChannelAccepted { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "OpenChannelAccepted"; @@ -27986,11 +30047,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "HRMP channel closed. `[by_parachain, channel_id]`"] - pub struct ChannelClosed( - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - pub runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - ); + #[doc = "HRMP channel closed."] + pub struct ChannelClosed { + pub by_parachain: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub channel_id: + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + } impl ::subxt::events::StaticEvent for ChannelClosed { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "ChannelClosed"; @@ -28006,17 +30068,56 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "An HRMP channel was opened via Root origin."] - #[doc = "`[sender, recipient, proposed_max_capacity, proposed_max_message_size]`"] - pub struct HrmpChannelForceOpened( - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - pub runtime_types::polkadot_parachain_primitives::primitives::Id, - pub ::core::primitive::u32, - pub ::core::primitive::u32, - ); + pub struct HrmpChannelForceOpened { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub proposed_max_capacity: ::core::primitive::u32, + pub proposed_max_message_size: ::core::primitive::u32, + } impl ::subxt::events::StaticEvent for HrmpChannelForceOpened { const PALLET: &'static str = "Hrmp"; const EVENT: &'static str = "HrmpChannelForceOpened"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An HRMP channel was opened between two system chains."] + pub struct HrmpSystemChannelOpened { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub proposed_max_capacity: ::core::primitive::u32, + pub proposed_max_message_size: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for HrmpSystemChannelOpened { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "HrmpSystemChannelOpened"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "An HRMP channel's deposits were updated."] + pub struct OpenChannelDepositsUpdated { + pub sender: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, + } + impl ::subxt::events::StaticEvent for OpenChannelDepositsUpdated { + const PALLET: &'static str = "Hrmp"; + const EVENT: &'static str = "OpenChannelDepositsUpdated"; + } } pub mod storage { use super::runtime_types; @@ -28028,19 +30129,22 @@ pub mod api { #[doc = ""] #[doc = " Invariant:"] #[doc = " - There are no channels that exists in list but not in the set and vice versa."] - pub fn hrmp_open_channel_requests_iter( + pub fn hrmp_open_channel_requests( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequests", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 164u8, 97u8, 52u8, 242u8, 255u8, 67u8, 248u8, 170u8, 204u8, 92u8, 81u8, 144u8, 11u8, 63u8, 145u8, 167u8, 8u8, 174u8, 221u8, 147u8, 125u8, @@ -28055,22 +30159,19 @@ pub mod api { #[doc = ""] #[doc = " Invariant:"] #[doc = " - There are no channels that exists in list but not in the set and vice versa."] - pub fn hrmp_open_channel_requests( + pub fn hrmp_open_channel_requests_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::hrmp::HrmpOpenChannelRequest, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequests", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 164u8, 97u8, 52u8, 242u8, 255u8, 67u8, 248u8, 170u8, 204u8, 92u8, 81u8, 144u8, 11u8, 63u8, 145u8, 167u8, 8u8, 174u8, 221u8, 147u8, 125u8, @@ -28105,19 +30206,22 @@ pub mod api { #[doc = " This mapping tracks how many open channel requests are initiated by a given sender para."] #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items that has"] #[doc = " `(X, _)` as the number of `HrmpOpenChannelRequestCount` for `X`."] - pub fn hrmp_open_channel_request_count_iter( + pub fn hrmp_open_channel_request_count( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestCount", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 136u8, 72u8, 56u8, 31u8, 229u8, 99u8, 241u8, 14u8, 159u8, 243u8, 179u8, 222u8, 252u8, 56u8, 63u8, 24u8, 204u8, 130u8, 47u8, 161u8, 133u8, @@ -28129,22 +30233,19 @@ pub mod api { #[doc = " This mapping tracks how many open channel requests are initiated by a given sender para."] #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items that has"] #[doc = " `(X, _)` as the number of `HrmpOpenChannelRequestCount` for `X`."] - pub fn hrmp_open_channel_request_count( + pub fn hrmp_open_channel_request_count_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpOpenChannelRequestCount", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 136u8, 72u8, 56u8, 31u8, 229u8, 99u8, 241u8, 14u8, 159u8, 243u8, 179u8, 222u8, 252u8, 56u8, 63u8, 24u8, 204u8, 130u8, 47u8, 161u8, 133u8, @@ -28156,19 +30257,22 @@ pub mod api { #[doc = " This mapping tracks how many open channel requests were accepted by a given recipient para."] #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items `(_, X)` with"] #[doc = " `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`."] - pub fn hrmp_accepted_channel_request_count_iter( + pub fn hrmp_accepted_channel_request_count( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpAcceptedChannelRequestCount", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 29u8, 100u8, 52u8, 28u8, 180u8, 84u8, 132u8, 120u8, 117u8, 172u8, 169u8, 40u8, 237u8, 92u8, 89u8, 87u8, 230u8, 148u8, 140u8, 226u8, 60u8, @@ -28180,22 +30284,19 @@ pub mod api { #[doc = " This mapping tracks how many open channel requests were accepted by a given recipient para."] #[doc = " Invariant: `HrmpOpenChannelRequests` should contain the same number of items `(_, X)` with"] #[doc = " `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`."] - pub fn hrmp_accepted_channel_request_count( + pub fn hrmp_accepted_channel_request_count_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpAcceptedChannelRequestCount", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 29u8, 100u8, 52u8, 28u8, 180u8, 84u8, 132u8, 120u8, 117u8, 172u8, 169u8, 40u8, 237u8, 92u8, 89u8, 87u8, 230u8, 148u8, 140u8, 226u8, 60u8, @@ -28211,19 +30312,22 @@ pub mod api { #[doc = ""] #[doc = " Invariant:"] #[doc = " - There are no channels that exists in list but not in the set and vice versa."] - pub fn hrmp_close_channel_requests_iter( + pub fn hrmp_close_channel_requests( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (), - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequests", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 155u8, 13u8, 73u8, 166u8, 58u8, 67u8, 138u8, 58u8, 215u8, 172u8, 241u8, 168u8, 57u8, 4u8, 230u8, 248u8, 31u8, 183u8, 227u8, 224u8, 139u8, @@ -28239,22 +30343,19 @@ pub mod api { #[doc = ""] #[doc = " Invariant:"] #[doc = " - There are no channels that exists in list but not in the set and vice versa."] - pub fn hrmp_close_channel_requests( + pub fn hrmp_close_channel_requests_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (), - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpCloseChannelRequests", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 155u8, 13u8, 73u8, 166u8, 58u8, 67u8, 138u8, 58u8, 215u8, 172u8, 241u8, 168u8, 57u8, 4u8, 230u8, 248u8, 31u8, 183u8, 227u8, 224u8, 139u8, @@ -28289,19 +30390,22 @@ pub mod api { #[doc = " Invariant:"] #[doc = " - each para `P` used here as a key should satisfy `Paras::is_valid_para(P)` within a"] #[doc = " session."] - pub fn hrmp_watermarks_iter( + pub fn hrmp_watermarks( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpWatermarks", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 245u8, 104u8, 137u8, 120u8, 131u8, 7u8, 178u8, 85u8, 96u8, 124u8, 241u8, 2u8, 86u8, 63u8, 116u8, 77u8, 217u8, 235u8, 162u8, 38u8, 104u8, @@ -28313,22 +30417,19 @@ pub mod api { #[doc = " Invariant:"] #[doc = " - each para `P` used here as a key should satisfy `Paras::is_valid_para(P)` within a"] #[doc = " session."] - pub fn hrmp_watermarks( + pub fn hrmp_watermarks_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpWatermarks", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 245u8, 104u8, 137u8, 120u8, 131u8, 7u8, 178u8, 85u8, 96u8, 124u8, 241u8, 2u8, 86u8, 63u8, 116u8, 77u8, 217u8, 235u8, 162u8, 38u8, 104u8, @@ -28339,19 +30440,22 @@ pub mod api { #[doc = " HRMP channel data associated with each para."] #[doc = " Invariant:"] #[doc = " - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session."] - pub fn hrmp_channels_iter( + pub fn hrmp_channels( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::hrmp::HrmpChannel, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannels", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 174u8, 90u8, 72u8, 93u8, 43u8, 140u8, 181u8, 170u8, 138u8, 171u8, 179u8, 156u8, 33u8, 87u8, 63u8, 1u8, 131u8, 59u8, 230u8, 14u8, 40u8, @@ -28363,22 +30467,19 @@ pub mod api { #[doc = " HRMP channel data associated with each para."] #[doc = " Invariant:"] #[doc = " - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session."] - pub fn hrmp_channels( + pub fn hrmp_channels_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_parachains::hrmp::HrmpChannel, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannels", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 174u8, 90u8, 72u8, 93u8, 43u8, 140u8, 181u8, 170u8, 138u8, 171u8, 179u8, 156u8, 33u8, 87u8, 63u8, 1u8, 131u8, 59u8, 230u8, 14u8, 40u8, @@ -28400,19 +30501,22 @@ pub mod api { #[doc = " `HrmpChannels` as `(P, E)`."] #[doc = " - there should be no other dangling channels in `HrmpChannels`."] #[doc = " - the vectors are sorted."] - pub fn hrmp_ingress_channels_index_iter( + pub fn hrmp_ingress_channels_index( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpIngressChannelsIndex", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 125u8, 229u8, 102u8, 230u8, 74u8, 109u8, 173u8, 67u8, 176u8, 169u8, 57u8, 24u8, 75u8, 129u8, 246u8, 198u8, 63u8, 49u8, 56u8, 102u8, 149u8, @@ -28434,22 +30538,19 @@ pub mod api { #[doc = " `HrmpChannels` as `(P, E)`."] #[doc = " - there should be no other dangling channels in `HrmpChannels`."] #[doc = " - the vectors are sorted."] - pub fn hrmp_ingress_channels_index( + pub fn hrmp_ingress_channels_index_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpIngressChannelsIndex", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 125u8, 229u8, 102u8, 230u8, 74u8, 109u8, 173u8, 67u8, 176u8, 169u8, 57u8, 24u8, 75u8, 129u8, 246u8, 198u8, 63u8, 49u8, 56u8, 102u8, 149u8, @@ -28458,19 +30559,22 @@ pub mod api { ], ) } - pub fn hrmp_egress_channels_index_iter( + pub fn hrmp_egress_channels_index( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpEgressChannelsIndex", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 237u8, 183u8, 188u8, 57u8, 20u8, 238u8, 166u8, 7u8, 94u8, 155u8, 22u8, 9u8, 173u8, 209u8, 210u8, 17u8, 160u8, 79u8, 243u8, 4u8, 245u8, 240u8, @@ -28478,22 +30582,19 @@ pub mod api { ], ) } - pub fn hrmp_egress_channels_index( + pub fn hrmp_egress_channels_index_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpEgressChannelsIndex", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 237u8, 183u8, 188u8, 57u8, 20u8, 238u8, 166u8, 7u8, 94u8, 155u8, 22u8, 9u8, 173u8, 209u8, 210u8, 17u8, 160u8, 79u8, 243u8, 4u8, 245u8, 240u8, @@ -28503,8 +30604,11 @@ pub mod api { } #[doc = " Storage for the messages for each channel."] #[doc = " Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`."] - pub fn hrmp_channel_contents_iter( + pub fn hrmp_channel_contents( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< @@ -28512,14 +30616,14 @@ pub mod api { ::core::primitive::u32, >, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelContents", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 55u8, 16u8, 135u8, 69u8, 54u8, 180u8, 246u8, 124u8, 104u8, 92u8, 45u8, 18u8, 223u8, 145u8, 43u8, 190u8, 121u8, 59u8, 35u8, 195u8, 234u8, @@ -28530,11 +30634,8 @@ pub mod api { } #[doc = " Storage for the messages for each channel."] #[doc = " Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`."] - pub fn hrmp_channel_contents( + pub fn hrmp_channel_contents_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< @@ -28542,14 +30643,14 @@ pub mod api { ::core::primitive::u32, >, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelContents", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 55u8, 16u8, 135u8, 69u8, 54u8, 180u8, 246u8, 124u8, 104u8, 92u8, 45u8, 18u8, 223u8, 145u8, 43u8, 190u8, 121u8, 59u8, 35u8, 195u8, 234u8, @@ -28564,8 +30665,11 @@ pub mod api { #[doc = " - The inner `Vec` cannot store two same `ParaId`."] #[doc = " - The outer vector is sorted ascending by block number and cannot store two items with the"] #[doc = " same block number."] - pub fn hrmp_channel_digests_iter( + pub fn hrmp_channel_digests( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<( @@ -28574,14 +30678,14 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::Id, >, )>, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelDigests", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 90u8, 90u8, 139u8, 78u8, 47u8, 2u8, 104u8, 211u8, 42u8, 246u8, 193u8, 210u8, 142u8, 223u8, 17u8, 136u8, 3u8, 182u8, 25u8, 56u8, 72u8, 72u8, @@ -28595,11 +30699,8 @@ pub mod api { #[doc = " - The inner `Vec` cannot store two same `ParaId`."] #[doc = " - The outer vector is sorted ascending by block number and cannot store two items with the"] #[doc = " same block number."] - pub fn hrmp_channel_digests( + pub fn hrmp_channel_digests_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<( @@ -28608,14 +30709,14 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::Id, >, )>, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Hrmp", "HrmpChannelDigests", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 90u8, 90u8, 139u8, 78u8, 47u8, 2u8, 104u8, 211u8, 42u8, 246u8, 193u8, 210u8, 142u8, 223u8, 17u8, 136u8, 3u8, 182u8, 25u8, 56u8, 72u8, 72u8, @@ -28639,7 +30740,7 @@ pub mod api { &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), @@ -28649,9 +30750,10 @@ pub mod api { "AssignmentKeysUnsafe", vec![], [ - 51u8, 155u8, 91u8, 101u8, 118u8, 243u8, 134u8, 138u8, 147u8, 59u8, - 195u8, 186u8, 54u8, 187u8, 36u8, 14u8, 91u8, 141u8, 60u8, 139u8, 28u8, - 74u8, 111u8, 232u8, 198u8, 229u8, 61u8, 63u8, 72u8, 214u8, 152u8, 2u8, + 180u8, 187u8, 151u8, 97u8, 28u8, 143u8, 44u8, 107u8, 127u8, 16u8, 82u8, + 208u8, 210u8, 99u8, 211u8, 54u8, 252u8, 164u8, 138u8, 142u8, 124u8, + 117u8, 217u8, 184u8, 223u8, 65u8, 45u8, 143u8, 220u8, 212u8, 254u8, + 173u8, ], ) } @@ -28679,66 +30781,67 @@ pub mod api { #[doc = " Session information in a rolling window."] #[doc = " Should have an entry in range `EarliestStoredSession..=CurrentSessionIndex`."] #[doc = " Does not have any entries before the session index in the first session change notification."] - pub fn sessions_iter( + pub fn sessions( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::SessionInfo, - (), + runtime_types::polkadot_primitives::v7::SessionInfo, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "Sessions", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, - 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, - 130u8, 215u8, 105u8, 18u8, 163u8, 72u8, 182u8, 243u8, 31u8, 157u8, - 103u8, 111u8, + 234u8, 87u8, 239u8, 243u8, 224u8, 177u8, 208u8, 208u8, 80u8, 111u8, + 190u8, 108u8, 189u8, 81u8, 68u8, 30u8, 108u8, 83u8, 43u8, 150u8, 87u8, + 156u8, 68u8, 231u8, 151u8, 67u8, 26u8, 223u8, 218u8, 137u8, 229u8, + 228u8, ], ) } #[doc = " Session information in a rolling window."] #[doc = " Should have an entry in range `EarliestStoredSession..=CurrentSessionIndex`."] #[doc = " Does not have any entries before the session index in the first session change notification."] - pub fn sessions( + pub fn sessions_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::SessionInfo, - ::subxt::storage::address::Yes, + runtime_types::polkadot_primitives::v7::SessionInfo, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "Sessions", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, - 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, - 130u8, 215u8, 105u8, 18u8, 163u8, 72u8, 182u8, 243u8, 31u8, 157u8, - 103u8, 111u8, + 234u8, 87u8, 239u8, 243u8, 224u8, 177u8, 208u8, 208u8, 80u8, 111u8, + 190u8, 108u8, 189u8, 81u8, 68u8, 30u8, 108u8, 83u8, 43u8, 150u8, 87u8, + 156u8, 68u8, 231u8, 151u8, 67u8, 26u8, 223u8, 218u8, 137u8, 229u8, + 228u8, ], ) } #[doc = " The validator account keys of the validators actively participating in parachain consensus."] - pub fn account_keys_iter( + pub fn account_keys( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<::subxt::utils::AccountId32>, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "AccountKeys", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 30u8, 98u8, 58u8, 140u8, 96u8, 231u8, 205u8, 111u8, 194u8, 100u8, 185u8, 242u8, 210u8, 143u8, 110u8, 144u8, 170u8, 187u8, 62u8, 196u8, @@ -28748,20 +30851,19 @@ pub mod api { ) } #[doc = " The validator account keys of the validators actively participating in parachain consensus."] - pub fn account_keys( + pub fn account_keys_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec<::subxt::utils::AccountId32>, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "AccountKeys", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 30u8, 98u8, 58u8, 140u8, 96u8, 231u8, 205u8, 111u8, 194u8, 100u8, 185u8, 242u8, 210u8, 143u8, 110u8, 144u8, 170u8, 187u8, 62u8, 196u8, @@ -28771,47 +30873,45 @@ pub mod api { ) } #[doc = " Executor parameter set for a given session index"] - pub fn session_executor_params_iter( + pub fn session_executor_params( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, - (), + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "SessionExecutorParams", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } #[doc = " Executor parameter set for a given session index"] - pub fn session_executor_params( + pub fn session_executor_params_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, - ::subxt::storage::address::Yes, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParaSessionInfo", "SessionExecutorParams", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } @@ -28847,7 +30947,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_unfreeze`]."] pub fn force_unfreeze(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "ParasDisputes", @@ -28954,19 +31053,26 @@ pub mod api { ) } #[doc = " All ongoing or concluded disputes for the last several sessions."] - pub fn disputes_iter( + pub fn disputes( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_core_primitives::CandidateHash, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::DisputeState<::core::primitive::u32>, - (), + runtime_types::polkadot_primitives::v7::DisputeState<::core::primitive::u32>, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Disputes", - vec![], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, @@ -28976,12 +31082,11 @@ pub mod api { ) } #[doc = " All ongoing or concluded disputes for the last several sessions."] - pub fn disputes_iter1( + pub fn disputes_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::DisputeState<::core::primitive::u32>, + runtime_types::polkadot_primitives::v7::DisputeState<::core::primitive::u32>, (), (), ::subxt::storage::address::Yes, @@ -28989,7 +31094,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Disputes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, @@ -28998,8 +31103,9 @@ pub mod api { ], ) } - #[doc = " All ongoing or concluded disputes for the last several sessions."] - pub fn disputes( + #[doc = " Backing votes stored for each dispute."] + #[doc = " This storage is used for slashing."] + pub fn backers_on_disputes( &self, _0: impl ::std::borrow::Borrow<::core::primitive::u32>, _1: impl ::std::borrow::Borrow< @@ -29007,41 +31113,18 @@ pub mod api { >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::DisputeState<::core::primitive::u32>, + ::std::vec::Vec, ::subxt::storage::address::Yes, (), - (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParasDisputes", - "Disputes", + "BackersOnDisputes", vec![ ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], - [ - 38u8, 237u8, 141u8, 222u8, 135u8, 82u8, 210u8, 166u8, 192u8, 122u8, - 175u8, 96u8, 91u8, 1u8, 225u8, 182u8, 128u8, 4u8, 159u8, 56u8, 180u8, - 176u8, 157u8, 20u8, 105u8, 202u8, 192u8, 213u8, 164u8, 24u8, 227u8, - 15u8, - ], - ) - } - #[doc = " Backing votes stored for each dispute."] - #[doc = " This storage is used for slashing."] - pub fn backers_on_disputes_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ParasDisputes", - "BackersOnDisputes", - vec![], [ 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, @@ -29052,12 +31135,11 @@ pub mod api { } #[doc = " Backing votes stored for each dispute."] #[doc = " This storage is used for slashing."] - pub fn backers_on_disputes_iter1( + pub fn backers_on_disputes_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::std::vec::Vec, (), (), ::subxt::storage::address::Yes, @@ -29065,7 +31147,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "BackersOnDisputes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, @@ -29074,9 +31156,9 @@ pub mod api { ], ) } - #[doc = " Backing votes stored for each dispute."] - #[doc = " This storage is used for slashing."] - pub fn backers_on_disputes( + #[doc = " All included blocks on the chain, as well as the block number in this chain that"] + #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] + pub fn included( &self, _0: impl ::std::borrow::Borrow<::core::primitive::u32>, _1: impl ::std::borrow::Borrow< @@ -29084,41 +31166,18 @@ pub mod api { >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + ::core::primitive::u32, ::subxt::storage::address::Yes, (), - (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParasDisputes", - "BackersOnDisputes", + "Included", vec![ ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), ], - [ - 136u8, 171u8, 20u8, 204u8, 135u8, 153u8, 144u8, 241u8, 46u8, 193u8, - 65u8, 22u8, 116u8, 161u8, 144u8, 186u8, 31u8, 194u8, 202u8, 225u8, - 14u8, 137u8, 240u8, 243u8, 119u8, 144u8, 102u8, 245u8, 133u8, 126u8, - 103u8, 32u8, - ], - ) - } - #[doc = " All included blocks on the chain, as well as the block number in this chain that"] - #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] - pub fn included_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "ParasDisputes", - "Included", - vec![], [ 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, @@ -29129,9 +31188,8 @@ pub mod api { } #[doc = " All included blocks on the chain, as well as the block number in this chain that"] #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] - pub fn included_iter1( + pub fn included_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, @@ -29142,37 +31200,7 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasDisputes", "Included", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], - [ - 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, - 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, - 203u8, 163u8, 109u8, 212u8, 162u8, 86u8, 124u8, 172u8, 157u8, 165u8, - 21u8, - ], - ) - } - #[doc = " All included blocks on the chain, as well as the block number in this chain that"] - #[doc = " should be reverted back to if the candidate is disputed and determined to be invalid."] - pub fn included( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow< - runtime_types::polkadot_core_primitives::CandidateHash, - >, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "ParasDisputes", - "Included", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 47u8, 105u8, 189u8, 233u8, 206u8, 153u8, 162u8, 217u8, 141u8, 118u8, 31u8, 85u8, 87u8, 53u8, 100u8, 187u8, 31u8, 245u8, 50u8, 171u8, 4u8, @@ -29233,7 +31261,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ReportDisputeLostUnsigned { pub dispute_proof: ::std::boxed::Box< - runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + runtime_types::polkadot_primitives::v7::slashing::DisputeProof, >, pub key_owner_proof: runtime_types::sp_session::MembershipProof, } @@ -29244,10 +31272,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub fn report_dispute_lost_unsigned( &self, - dispute_proof: runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + dispute_proof: runtime_types::polkadot_primitives::v7::slashing::DisputeProof, key_owner_proof: runtime_types::sp_session::MembershipProof, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( @@ -29258,10 +31285,9 @@ pub mod api { key_owner_proof, }, [ - 57u8, 99u8, 246u8, 126u8, 203u8, 239u8, 64u8, 182u8, 167u8, 204u8, - 96u8, 221u8, 126u8, 94u8, 254u8, 210u8, 18u8, 182u8, 207u8, 32u8, - 250u8, 249u8, 116u8, 156u8, 210u8, 63u8, 254u8, 74u8, 86u8, 101u8, - 28u8, 229u8, + 18u8, 73u8, 202u8, 17u8, 170u8, 157u8, 84u8, 74u8, 185u8, 45u8, 77u8, + 154u8, 79u8, 108u8, 36u8, 247u8, 125u8, 6u8, 170u8, 179u8, 64u8, 149u8, + 201u8, 138u8, 74u8, 148u8, 37u8, 120u8, 235u8, 220u8, 214u8, 95u8, ], ) } @@ -29272,34 +31298,40 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " Validators pending dispute slashes."] - pub fn unapplied_slashes_iter( + pub fn unapplied_slashes( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_core_primitives::CandidateHash, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::slashing::PendingSlashes, - (), + runtime_types::polkadot_primitives::v7::slashing::PendingSlashes, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", - vec![], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ - 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, - 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, - 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, - 126u8, + 139u8, 156u8, 52u8, 31u8, 151u8, 223u8, 139u8, 230u8, 222u8, 217u8, + 12u8, 49u8, 83u8, 192u8, 23u8, 89u8, 204u8, 185u8, 212u8, 185u8, 176u8, + 49u8, 91u8, 206u8, 184u8, 98u8, 65u8, 151u8, 246u8, 128u8, 149u8, + 186u8, ], ) } #[doc = " Validators pending dispute slashes."] - pub fn unapplied_slashes_iter1( + pub fn unapplied_slashes_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::slashing::PendingSlashes, + runtime_types::polkadot_primitives::v7::slashing::PendingSlashes, (), (), ::subxt::storage::address::Yes, @@ -29307,58 +31339,30 @@ pub mod api { ::subxt::storage::address::Address::new_static( "ParasSlashing", "UnappliedSlashes", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, - 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, - 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, - 126u8, - ], - ) - } - #[doc = " Validators pending dispute slashes."] - pub fn unapplied_slashes( - &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow< - runtime_types::polkadot_core_primitives::CandidateHash, - >, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::polkadot_primitives::v5::slashing::PendingSlashes, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "ParasSlashing", - "UnappliedSlashes", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], - [ - 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, - 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, - 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, - 126u8, + 139u8, 156u8, 52u8, 31u8, 151u8, 223u8, 139u8, 230u8, 222u8, 217u8, + 12u8, 49u8, 83u8, 192u8, 23u8, 89u8, 204u8, 185u8, 212u8, 185u8, 176u8, + 49u8, 91u8, 206u8, 184u8, 98u8, 65u8, 151u8, 246u8, 128u8, 149u8, + 186u8, ], ) } #[doc = " `ValidatorSetCount` per session."] - pub fn validator_set_counts_iter( + pub fn validator_set_counts( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParasSlashing", "ValidatorSetCounts", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 195u8, 220u8, 79u8, 140u8, 114u8, 80u8, 241u8, 103u8, 4u8, 7u8, 53u8, 100u8, 16u8, 78u8, 104u8, 171u8, 134u8, 110u8, 158u8, 191u8, 37u8, @@ -29367,20 +31371,19 @@ pub mod api { ) } #[doc = " `ValidatorSetCount` per session."] - pub fn validator_set_counts( + pub fn validator_set_counts_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "ParasSlashing", "ValidatorSetCounts", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 195u8, 220u8, 79u8, 140u8, 114u8, 80u8, 241u8, 103u8, 4u8, 7u8, 53u8, 100u8, 16u8, 78u8, 104u8, 171u8, 134u8, 110u8, 158u8, 191u8, 37u8, @@ -29435,7 +31438,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::reap_page`]."] + #[doc = "Remove a page which has no more messages remaining to be processed or is stale."] pub fn reap_page( &self, message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin, @@ -29452,7 +31455,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::execute_overweight`]."] + #[doc = "Execute an overweight message."] + #[doc = ""] + #[doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] + #[doc = "as success condition."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `message_origin`: The origin from which the message to be executed arrived."] + #[doc = "- `page`: The page in the queue in which the message to be executed is sitting."] + #[doc = "- `index`: The index into the queue of the message to be executed."] + #[doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] + #[doc = " of the message."] + #[doc = ""] + #[doc = "Benchmark complexity considerations: O(index + weight_limit)."] pub fn execute_overweight( &self, message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin, @@ -29490,7 +31505,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] pub struct ProcessingFailed { - pub id: [::core::primitive::u8; 32usize], + pub id: ::subxt::utils::H256, pub origin: runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, pub error: runtime_types::frame_support::traits::messages::ProcessMessageError, @@ -29511,7 +31526,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Message is processed."] pub struct Processed { - pub id: [::core::primitive::u8; 32usize], + pub id: ::subxt::utils::H256, pub origin: runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin, pub weight_used: runtime_types::sp_weights::weight_v2::Weight, @@ -29568,11 +31583,11 @@ pub mod api { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for_iter (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , () , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ + #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ ::subxt::storage::address::Address::new_static( "MessageQueue", "BookStateFor", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 32u8, 61u8, 161u8, 81u8, 134u8, 136u8, 252u8, 113u8, 204u8, 115u8, 206u8, 180u8, 33u8, 185u8, 137u8, 155u8, 178u8, 189u8, 234u8, 201u8, @@ -29581,11 +31596,11 @@ pub mod api { ], ) } - #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , () >{ + #[doc = " The index of the first and last (non-empty) pages."] pub fn book_state_for_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: pallet_message_queue :: BookState < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin > , () , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ ::subxt::storage::address::Address::new_static( "MessageQueue", "BookStateFor", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 32u8, 61u8, 161u8, 81u8, 134u8, 136u8, 252u8, 113u8, 204u8, 115u8, 206u8, 180u8, 33u8, 185u8, 137u8, 155u8, 178u8, 189u8, 234u8, 201u8, @@ -29617,42 +31632,24 @@ pub mod api { ) } #[doc = " The map of page indices to pages."] - pub fn pages_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_message_queue::Page<::core::primitive::u32>, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "MessageQueue", - "Pages", - vec![], - [ - 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, - 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, - 232u8, 47u8, 10u8, 185u8, 113u8, 230u8, 47u8, 91u8, 253u8, 196u8, 95u8, - 102u8, - ], - ) - } - #[doc = " The map of page indices to pages."] - pub fn pages_iter1( + pub fn pages( &self, _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin >, + _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_message_queue::Page<::core::primitive::u32>, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "MessageQueue", "Pages", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, @@ -29662,24 +31659,19 @@ pub mod api { ) } #[doc = " The map of page indices to pages."] - pub fn pages( + pub fn pages_root( &self, - _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin >, - _1: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_message_queue::Page<::core::primitive::u32>, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "MessageQueue", "Pages", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 56u8, 181u8, 157u8, 16u8, 157u8, 123u8, 106u8, 93u8, 199u8, 208u8, 153u8, 53u8, 168u8, 188u8, 124u8, 77u8, 140u8, 163u8, 113u8, 16u8, @@ -29727,10 +31719,11 @@ pub mod api { ) } #[doc = " The amount of weight (if any) which should be provided to the message queue for"] - #[doc = " servicing enqueued items."] + #[doc = " servicing enqueued items `on_initialize`."] #[doc = ""] #[doc = " This may be legitimately `None` in the case that you will call"] - #[doc = " `ServiceQueues::service_queues` manually."] + #[doc = " `ServiceQueues::service_queues` manually or set [`Self::IdleMaxServiceWeight`] to have"] + #[doc = " it run in `on_idle`."] pub fn service_weight( &self, ) -> ::subxt::constants::Address< @@ -29746,17 +31739,29 @@ pub mod api { ], ) } + #[doc = " The maximum amount of weight (if any) to be used from remaining weight `on_idle` which"] + #[doc = " should be provided to the message queue for servicing enqueued items `on_idle`."] + #[doc = " Useful for parachains to process messages at the same block they are received."] + #[doc = ""] + #[doc = " If `None`, it will not call `ServiceQueues::service_queues` in `on_idle`."] + pub fn idle_max_service_weight( + &self, + ) -> ::subxt::constants::Address< + ::core::option::Option, + > { + ::subxt::constants::Address::new_static( + "MessageQueue", + "IdleMaxServiceWeight", + [ + 204u8, 140u8, 63u8, 167u8, 49u8, 8u8, 148u8, 163u8, 190u8, 224u8, 15u8, + 103u8, 86u8, 153u8, 248u8, 117u8, 223u8, 117u8, 210u8, 80u8, 205u8, + 155u8, 40u8, 11u8, 59u8, 63u8, 129u8, 156u8, 17u8, 83u8, 177u8, 250u8, + ], + ) + } } } } - pub mod para_assignment_provider { - use super::{root_mod, runtime_types}; - pub mod storage { - use super::runtime_types; - pub struct StorageApi; - impl StorageApi {} - } - } pub mod on_demand_assignment_provider { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] @@ -29809,7 +31814,22 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub fn place_order_allow_death( &self, max_amount: ::core::primitive::u128, @@ -29827,7 +31847,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub fn place_order_keep_alive( &self, max_amount: ::core::primitive::u128, @@ -29893,76 +31928,93 @@ pub mod api { use super::runtime_types; pub struct StorageApi; impl StorageApi { - #[doc = " Keeps track of the multiplier used to calculate the current spot price for the on demand"] - #[doc = " assigner."] - pub fn spot_traffic( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::sp_arithmetic::fixed_point::FixedU128, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { + #[doc = " Maps a `ParaId` to `CoreIndex` and keeps track of how many assignments the scheduler has in"] + #[doc = " it's lookahead. Keeping track of this affinity prevents parallel execution of the same"] + #[doc = " `ParaId` on two or more `CoreIndex`es."] pub fn para_id_affinity (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: Id > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: CoreAffinityCount , :: subxt :: storage :: address :: Yes , () , :: subxt :: storage :: address :: Yes >{ ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", - "SpotTraffic", - vec![], + "ParaIdAffinity", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 84u8, 171u8, 103u8, 180u8, 176u8, 210u8, 232u8, 184u8, 221u8, 129u8, + 174u8, 253u8, 250u8, 168u8, 2u8, 250u8, 105u8, 143u8, 120u8, 204u8, + 30u8, 242u8, 151u8, 44u8, 48u8, 150u8, 81u8, 194u8, 191u8, 91u8, 29u8, + 46u8, + ], + ) + } + #[doc = " Maps a `ParaId` to `CoreIndex` and keeps track of how many assignments the scheduler has in"] + #[doc = " it's lookahead. Keeping track of this affinity prevents parallel execution of the same"] + #[doc = " `ParaId` on two or more `CoreIndex`es."] pub fn para_id_affinity_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: CoreAffinityCount , () , () , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "OnDemandAssignmentProvider", + "ParaIdAffinity", + Vec::new(), [ - 8u8, 236u8, 233u8, 156u8, 211u8, 45u8, 192u8, 58u8, 108u8, 247u8, 47u8, - 97u8, 229u8, 26u8, 188u8, 67u8, 98u8, 43u8, 11u8, 11u8, 1u8, 127u8, - 15u8, 75u8, 25u8, 19u8, 220u8, 16u8, 121u8, 223u8, 207u8, 226u8, + 84u8, 171u8, 103u8, 180u8, 176u8, 210u8, 232u8, 184u8, 221u8, 129u8, + 174u8, 253u8, 250u8, 168u8, 2u8, 250u8, 105u8, 143u8, 120u8, 204u8, + 30u8, 242u8, 151u8, 44u8, 48u8, 150u8, 81u8, 194u8, 191u8, 91u8, 29u8, + 46u8, ], ) } - #[doc = " The order storage entry. Uses a VecDeque to be able to push to the front of the"] - #[doc = " queue from the scheduler on session boundaries."] - pub fn on_demand_queue( + #[doc = " Overall status of queue (both free + affinity entries)"] + pub fn queue_status( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::std::vec::Vec, + runtime_types::polkadot_runtime_parachains::assigner_on_demand::QueueStatusType, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", - "OnDemandQueue", + "QueueStatus", vec![], [ - 241u8, 10u8, 89u8, 240u8, 227u8, 90u8, 218u8, 35u8, 80u8, 244u8, 219u8, - 112u8, 177u8, 143u8, 43u8, 228u8, 224u8, 165u8, 217u8, 65u8, 17u8, - 182u8, 61u8, 173u8, 214u8, 140u8, 224u8, 68u8, 68u8, 226u8, 208u8, - 156u8, + 44u8, 67u8, 88u8, 179u8, 0u8, 178u8, 233u8, 101u8, 156u8, 215u8, 99u8, + 242u8, 236u8, 2u8, 153u8, 32u8, 214u8, 247u8, 193u8, 234u8, 194u8, + 30u8, 182u8, 151u8, 18u8, 121u8, 208u8, 146u8, 231u8, 6u8, 162u8, 20u8, ], ) } - #[doc = " Maps a `ParaId` to `CoreIndex` and keeps track of how many assignments the scheduler has in"] - #[doc = " it's lookahead. Keeping track of this affinity prevents parallel execution of the same"] - #[doc = " `ParaId` on two or more `CoreIndex`es."] pub fn para_id_affinity_iter (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: CoreAffinityCount , () , () , :: subxt :: storage :: address :: Yes >{ + #[doc = " Priority queue for all orders which don't yet (or not any more) have any core affinity."] pub fn free_entries (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , () >{ ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", - "ParaIdAffinity", + "FreeEntries", vec![], [ - 145u8, 117u8, 2u8, 170u8, 99u8, 68u8, 166u8, 236u8, 247u8, 80u8, 202u8, - 87u8, 116u8, 244u8, 218u8, 172u8, 41u8, 187u8, 170u8, 163u8, 187u8, - 13u8, 9u8, 19u8, 55u8, 167u8, 67u8, 30u8, 57u8, 162u8, 226u8, 65u8, + 229u8, 190u8, 235u8, 140u8, 35u8, 221u8, 62u8, 119u8, 131u8, 211u8, + 177u8, 218u8, 84u8, 132u8, 135u8, 118u8, 138u8, 227u8, 186u8, 52u8, + 102u8, 190u8, 155u8, 123u8, 232u8, 136u8, 97u8, 203u8, 55u8, 113u8, + 194u8, 7u8, ], ) } - #[doc = " Maps a `ParaId` to `CoreIndex` and keeps track of how many assignments the scheduler has in"] - #[doc = " it's lookahead. Keeping track of this affinity prevents parallel execution of the same"] - #[doc = " `ParaId` on two or more `CoreIndex`es."] pub fn para_id_affinity (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_parachain_primitives :: primitives :: Id > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: CoreAffinityCount , :: subxt :: storage :: address :: Yes , () , () >{ + #[doc = " Queue entries that are currently bound to a particular core due to core affinity."] pub fn affinity_entries (& self , _0 : impl :: std :: borrow :: Borrow < runtime_types :: polkadot_primitives :: v7 :: CoreIndex > ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ ::subxt::storage::address::Address::new_static( "OnDemandAssignmentProvider", - "ParaIdAffinity", + "AffinityEntries", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 145u8, 117u8, 2u8, 170u8, 99u8, 68u8, 166u8, 236u8, 247u8, 80u8, 202u8, - 87u8, 116u8, 244u8, 218u8, 172u8, 41u8, 187u8, 170u8, 163u8, 187u8, - 13u8, 9u8, 19u8, 55u8, 167u8, 67u8, 30u8, 57u8, 162u8, 226u8, 65u8, + 130u8, 236u8, 62u8, 133u8, 71u8, 121u8, 51u8, 37u8, 27u8, 240u8, 134u8, + 28u8, 221u8, 211u8, 28u8, 182u8, 222u8, 220u8, 249u8, 227u8, 2u8, + 124u8, 71u8, 252u8, 208u8, 36u8, 219u8, 147u8, 235u8, 254u8, 36u8, + 90u8, + ], + ) + } + #[doc = " Queue entries that are currently bound to a particular core due to core affinity."] pub fn affinity_entries_root (& self ,) -> :: subxt :: storage :: address :: Address :: < :: subxt :: storage :: address :: StaticStorageMapKey , :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > , () , :: subxt :: storage :: address :: Yes , :: subxt :: storage :: address :: Yes >{ + ::subxt::storage::address::Address::new_static( + "OnDemandAssignmentProvider", + "AffinityEntries", + Vec::new(), + [ + 130u8, 236u8, 62u8, 133u8, 71u8, 121u8, 51u8, 37u8, 27u8, 240u8, 134u8, + 28u8, 221u8, 211u8, 28u8, 182u8, 222u8, 220u8, 249u8, 227u8, 2u8, + 124u8, 71u8, 252u8, 208u8, 36u8, 219u8, 147u8, 235u8, 254u8, 36u8, + 90u8, ], ) } @@ -29991,8 +32043,127 @@ pub mod api { } } } - pub mod parachains_assignment_provider { + pub mod coretime_assignment_provider { use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::assigner_coretime::Schedule< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::assigner_coretime::Schedule< + ::core::primitive::u32, + >, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + Vec::new(), + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors( + &self, + _0: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::assigner_coretime::CoreDescriptor< + ::core::primitive::u32, + >, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::polkadot_runtime_parachains::assigner_coretime::CoreDescriptor< + ::core::primitive::u32, + >, + (), + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + Vec::new(), + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + } + } } pub mod registrar { use super::{root_mod, runtime_types}; @@ -30174,7 +32345,26 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::register`]."] + #[doc = "Register head data and validation code for a reserved Para Id."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin."] + #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] + #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] + #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The account with the originating signature must reserve a deposit."] + #[doc = ""] + #[doc = "The deposit is required to cover the costs associated with storing the genesis head"] + #[doc = "data and the validation code."] + #[doc = "This accounts for the potential to store validation code of a size up to the"] + #[doc = "`max_code_size`, as defined in the configuration pallet"] + #[doc = ""] + #[doc = "Anything already reserved previously for this para ID is accounted for."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Registered` event is emitted in case of success."] pub fn register( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30192,7 +32382,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_register`]."] + #[doc = "Force the registration of a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function must be called by a Root origin."] + #[doc = ""] + #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] + #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] pub fn force_register( &self, who: ::subxt::utils::AccountId32, @@ -30213,7 +32408,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::deregister`]."] + #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] + #[doc = ""] + #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] + #[doc = "on-demand parachain."] pub fn deregister( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30229,7 +32427,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::swap`]."] + #[doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] + #[doc = "holding."] + #[doc = ""] + #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] + #[doc = ""] + #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] + #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] + #[doc = ""] + #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] + #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] + #[doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] + #[doc = "parachain), auction information and the auction deposit are switched."] pub fn swap( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30247,7 +32456,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_lock`]."] + #[doc = "Remove a manager lock from a para. This will allow the manager of a"] + #[doc = "previously locked para to deregister or swap a para without using governance."] + #[doc = ""] + #[doc = "Can only be called by the Root origin or the parachain."] pub fn remove_lock( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30263,7 +32475,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reserve`]."] + #[doc = "Reserve a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] + #[doc = "The origin account is able to register head data and validation code using `register` to"] + #[doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] + #[doc = "be upgraded to a lease holding parachain."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] + #[doc = " para ID."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] + #[doc = "use."] pub fn reserve(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Registrar", @@ -30276,7 +32504,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_lock`]."] + #[doc = "Add a manager lock from a para. This will prevent the manager of a"] + #[doc = "para to deregister or swap a para."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn add_lock( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30292,7 +32524,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_code_upgrade`]."] + #[doc = "Schedule a parachain upgrade."] + #[doc = ""] + #[doc = "This will kick off a check of `new_code` by all validators. After the majority of the"] + #[doc = "validators have reported on the validity of the code, the code will either be enacted"] + #[doc = "or the upgrade will be rejected. If the code will be enacted, the current code of the"] + #[doc = "parachain will be overwritten directly. This means that any PoV will be checked by this"] + #[doc = "new code. The parachain itself will not be informed explictely that the validation code"] + #[doc = "has changed."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn schedule_code_upgrade( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30310,7 +32552,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_current_head`]."] + #[doc = "Set the parachain's current head."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn set_current_head( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30411,19 +32656,22 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " Pending swap operations."] - pub fn pending_swap_iter( + pub fn pending_swap( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::Id, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Registrar", "PendingSwap", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 75u8, 6u8, 68u8, 43u8, 108u8, 147u8, 220u8, 90u8, 190u8, 86u8, 209u8, 141u8, 9u8, 254u8, 103u8, 10u8, 94u8, 187u8, 155u8, 249u8, 140u8, @@ -30433,22 +32681,19 @@ pub mod api { ) } #[doc = " Pending swap operations."] - pub fn pending_swap( + pub fn pending_swap_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_parachain_primitives::primitives::Id, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Registrar", "PendingSwap", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 75u8, 6u8, 68u8, 43u8, 108u8, 147u8, 220u8, 90u8, 190u8, 86u8, 209u8, 141u8, 9u8, 254u8, 103u8, 10u8, 94u8, 187u8, 155u8, 249u8, 140u8, @@ -30461,22 +32706,25 @@ pub mod api { #[doc = ""] #[doc = " The given account ID is responsible for registering the code and initial head data, but may"] #[doc = " only do so if it isn't yet registered. (After that, it's up to governance to do so.)"] - pub fn paras_iter( + pub fn paras( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::paras_registrar::ParaInfo< ::subxt::utils::AccountId32, ::core::primitive::u128, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Registrar", "Paras", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 125u8, 62u8, 50u8, 209u8, 40u8, 170u8, 61u8, 62u8, 61u8, 246u8, 103u8, 229u8, 213u8, 94u8, 249u8, 49u8, 18u8, 90u8, 138u8, 14u8, 101u8, 133u8, @@ -30488,25 +32736,22 @@ pub mod api { #[doc = ""] #[doc = " The given account ID is responsible for registering the code and initial head data, but may"] #[doc = " only do so if it isn't yet registered. (After that, it's up to governance to do so.)"] - pub fn paras( + pub fn paras_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::paras_registrar::ParaInfo< ::subxt::utils::AccountId32, ::core::primitive::u128, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Registrar", "Paras", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 125u8, 62u8, 50u8, 209u8, 40u8, 170u8, 61u8, 62u8, 61u8, 246u8, 103u8, 229u8, 213u8, 94u8, 249u8, 49u8, 18u8, 90u8, 138u8, 14u8, 101u8, 133u8, @@ -30641,7 +32886,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub fn force_lease( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30662,7 +32910,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub fn clear_all_leases( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30678,7 +32928,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] pub fn trigger_onboard( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30765,8 +33021,11 @@ pub mod api { #[doc = " deposit for the non-existent chain currently, but is held at some point in the future."] #[doc = ""] #[doc = " It is illegal for a `None` value to trail in the list."] - pub fn leases_iter( + pub fn leases( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< @@ -30775,14 +33034,14 @@ pub mod api { ::core::primitive::u128, )>, >, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Slots", "Leases", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 233u8, 226u8, 181u8, 160u8, 216u8, 86u8, 238u8, 229u8, 31u8, 67u8, 200u8, 188u8, 134u8, 22u8, 88u8, 147u8, 204u8, 11u8, 34u8, 244u8, @@ -30807,11 +33066,8 @@ pub mod api { #[doc = " deposit for the non-existent chain currently, but is held at some point in the future."] #[doc = ""] #[doc = " It is illegal for a `None` value to trail in the list."] - pub fn leases( + pub fn leases_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::std::vec::Vec< @@ -30820,14 +33076,14 @@ pub mod api { ::core::primitive::u128, )>, >, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "Slots", "Leases", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 233u8, 226u8, 181u8, 160u8, 216u8, 86u8, 238u8, 229u8, 31u8, 67u8, 200u8, 188u8, 134u8, 22u8, 88u8, 147u8, 204u8, 11u8, 34u8, 244u8, @@ -30946,7 +33202,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] pub fn new_auction( &self, duration: ::core::primitive::u32, @@ -30964,7 +33224,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] pub fn bid( &self, para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -30984,7 +33259,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub fn cancel_auction(&self) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "Auctions", @@ -31199,43 +33476,26 @@ pub mod api { } #[doc = " Amounts currently reserved in the accounts of the bidders currently winning"] #[doc = " (sub-)ranges."] - pub fn reserved_amounts_iter( - &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u128, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "Auctions", - "ReservedAmounts", - vec![], - [ - 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, - 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, - 142u8, 231u8, 209u8, 113u8, 11u8, 240u8, 37u8, 112u8, 38u8, 239u8, - 245u8, - ], - ) - } - #[doc = " Amounts currently reserved in the accounts of the bidders currently winning"] - #[doc = " (sub-)ranges."] - pub fn reserved_amounts_iter1( + pub fn reserved_amounts( &self, _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _1: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u128, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Auctions", "ReservedAmounts", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, @@ -31246,26 +33506,19 @@ pub mod api { } #[doc = " Amounts currently reserved in the accounts of the bidders currently winning"] #[doc = " (sub-)ranges."] - pub fn reserved_amounts( + pub fn reserved_amounts_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - _1: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u128, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Auctions", "ReservedAmounts", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + Vec::new(), [ 77u8, 44u8, 116u8, 36u8, 189u8, 213u8, 126u8, 32u8, 42u8, 131u8, 108u8, 41u8, 147u8, 40u8, 247u8, 245u8, 161u8, 42u8, 152u8, 195u8, 28u8, @@ -31277,8 +33530,9 @@ pub mod api { #[doc = " The winning bids for each of the 10 ranges at each sample in the final Ending Period of"] #[doc = " the current auction. The map's key is the 0-based index into the Sample Size. The"] #[doc = " first sample of the ending period is 0; the last is `Sample Size - 1`."] - pub fn winning_iter( + pub fn winning( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, [::core::option::Option<( @@ -31286,14 +33540,14 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::Id, ::core::primitive::u128, )>; 36usize], - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Auctions", "Winning", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 8u8, 136u8, 174u8, 152u8, 223u8, 1u8, 143u8, 45u8, 213u8, 5u8, 239u8, 163u8, 152u8, 99u8, 197u8, 109u8, 194u8, 140u8, 246u8, 10u8, 40u8, @@ -31304,9 +33558,8 @@ pub mod api { #[doc = " The winning bids for each of the 10 ranges at each sample in the final Ending Period of"] #[doc = " the current auction. The map's key is the 0-based index into the Sample Size. The"] #[doc = " first sample of the ending period is 0; the last is `Sample Size - 1`."] - pub fn winning( + pub fn winning_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, [::core::option::Option<( @@ -31314,14 +33567,14 @@ pub mod api { runtime_types::polkadot_parachain_primitives::primitives::Id, ::core::primitive::u128, )>; 36usize], - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Auctions", "Winning", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 8u8, 136u8, 174u8, 152u8, 223u8, 1u8, 143u8, 45u8, 213u8, 5u8, 239u8, 163u8, 152u8, 99u8, 197u8, 109u8, 194u8, 140u8, 246u8, 10u8, 40u8, @@ -31594,7 +33847,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] pub fn create( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31609,13 +33866,15 @@ pub mod api { "create", types::Create { index, cap, first_period, last_period, end, verifier }, [ - 236u8, 3u8, 248u8, 168u8, 136u8, 216u8, 20u8, 58u8, 179u8, 13u8, 184u8, - 73u8, 105u8, 35u8, 167u8, 66u8, 117u8, 195u8, 41u8, 41u8, 117u8, 176u8, - 65u8, 18u8, 225u8, 66u8, 2u8, 61u8, 212u8, 92u8, 117u8, 90u8, + 93u8, 62u8, 50u8, 153u8, 231u8, 103u8, 233u8, 109u8, 182u8, 182u8, + 174u8, 247u8, 176u8, 234u8, 224u8, 108u8, 143u8, 213u8, 99u8, 60u8, + 91u8, 209u8, 120u8, 83u8, 54u8, 16u8, 169u8, 156u8, 49u8, 232u8, 228u8, + 89u8, ], ) } - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] pub fn contribute( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31627,14 +33886,29 @@ pub mod api { "contribute", types::Contribute { index, value, signature }, [ - 186u8, 247u8, 240u8, 7u8, 12u8, 239u8, 39u8, 191u8, 150u8, 219u8, - 137u8, 122u8, 214u8, 61u8, 62u8, 180u8, 229u8, 181u8, 105u8, 190u8, - 228u8, 55u8, 242u8, 70u8, 91u8, 118u8, 143u8, 233u8, 186u8, 231u8, - 207u8, 106u8, + 235u8, 111u8, 40u8, 4u8, 141u8, 19u8, 229u8, 202u8, 158u8, 30u8, 112u8, + 53u8, 113u8, 65u8, 162u8, 226u8, 116u8, 221u8, 118u8, 54u8, 204u8, + 50u8, 23u8, 246u8, 20u8, 245u8, 187u8, 150u8, 142u8, 184u8, 96u8, 84u8, ], ) } - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] pub fn withdraw( &self, who: ::subxt::utils::AccountId32, @@ -31651,7 +33925,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] pub fn refund( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31668,7 +33946,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] pub fn dissolve( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31685,7 +33963,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub fn edit( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31700,14 +33980,16 @@ pub mod api { "edit", types::Edit { index, cap, first_period, last_period, end, verifier }, [ - 126u8, 29u8, 232u8, 93u8, 94u8, 23u8, 47u8, 217u8, 62u8, 2u8, 161u8, - 31u8, 156u8, 229u8, 109u8, 45u8, 97u8, 101u8, 189u8, 139u8, 40u8, - 238u8, 150u8, 94u8, 145u8, 77u8, 26u8, 153u8, 217u8, 171u8, 48u8, - 195u8, + 185u8, 194u8, 173u8, 141u8, 104u8, 157u8, 104u8, 216u8, 223u8, 189u8, + 184u8, 104u8, 71u8, 177u8, 70u8, 129u8, 207u8, 167u8, 80u8, 247u8, + 149u8, 151u8, 211u8, 119u8, 224u8, 214u8, 214u8, 15u8, 88u8, 116u8, + 191u8, 234u8, ], ) } - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] pub fn add_memo( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31725,7 +34007,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] pub fn poke( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31742,7 +34026,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] pub fn contribute_all( &self, index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -31753,9 +34039,9 @@ pub mod api { "contribute_all", types::ContributeAll { index, signature }, [ - 233u8, 62u8, 129u8, 168u8, 161u8, 163u8, 78u8, 92u8, 191u8, 239u8, - 61u8, 2u8, 198u8, 246u8, 246u8, 81u8, 32u8, 131u8, 118u8, 170u8, 72u8, - 87u8, 17u8, 26u8, 55u8, 10u8, 146u8, 184u8, 213u8, 200u8, 252u8, 50u8, + 167u8, 206u8, 26u8, 124u8, 97u8, 175u8, 170u8, 30u8, 34u8, 29u8, 1u8, + 189u8, 8u8, 168u8, 108u8, 7u8, 154u8, 248u8, 96u8, 158u8, 15u8, 160u8, + 222u8, 205u8, 143u8, 18u8, 128u8, 215u8, 29u8, 109u8, 158u8, 11u8, ], ) } @@ -31959,8 +34245,11 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " Info on all of the funds."] - pub fn funds_iter( + pub fn funds( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::crowdloan::FundInfo< @@ -31969,28 +34258,25 @@ pub mod api { ::core::primitive::u32, ::core::primitive::u32, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Crowdloan", "Funds", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, - 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, - 236u8, 237u8, 210u8, 116u8, 159u8, 191u8, 89u8, 212u8, 167u8, 61u8, - 41u8, + 201u8, 39u8, 80u8, 58u8, 162u8, 213u8, 138u8, 215u8, 11u8, 6u8, 39u8, + 197u8, 142u8, 151u8, 231u8, 166u8, 255u8, 142u8, 219u8, 116u8, 56u8, + 187u8, 128u8, 11u8, 216u8, 49u8, 95u8, 154u8, 55u8, 241u8, 185u8, + 198u8, ], ) } #[doc = " Info on all of the funds."] - pub fn funds( + pub fn funds_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::crowdloan::FundInfo< @@ -31999,19 +34285,19 @@ pub mod api { ::core::primitive::u32, ::core::primitive::u32, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "Crowdloan", "Funds", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, - 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, - 236u8, 237u8, 210u8, 116u8, 159u8, 191u8, 89u8, 212u8, 167u8, 61u8, - 41u8, + 201u8, 39u8, 80u8, 58u8, 162u8, 213u8, 138u8, 215u8, 11u8, 6u8, 39u8, + 197u8, 142u8, 151u8, 231u8, 166u8, 255u8, 142u8, 219u8, 116u8, 56u8, + 187u8, 128u8, 11u8, 216u8, 49u8, 95u8, 154u8, 55u8, 241u8, 185u8, + 198u8, ], ) } @@ -32136,6 +34422,171 @@ pub mod api { } } } + pub mod coretime { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::coretime::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::coretime::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RequestCoreCount { + pub count: ::core::primitive::u16, + } + impl ::subxt::blocks::StaticExtrinsic for RequestCoreCount { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "request_core_count"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssignCore { + pub core: ::core::primitive::u16, + pub begin: ::core::primitive::u32, + pub assignment: ::std::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>, + pub end_hint: ::core::option::Option<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for AssignCore { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "assign_core"; + } + } + pub struct TransactionApi; + impl TransactionApi { + pub fn request_core_count( + &self, + count: ::core::primitive::u16, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Coretime", + "request_core_count", + types::RequestCoreCount { count }, + [ + 8u8, 225u8, 74u8, 162u8, 188u8, 3u8, 191u8, 45u8, 167u8, 21u8, 227u8, + 200u8, 65u8, 221u8, 49u8, 212u8, 12u8, 229u8, 160u8, 178u8, 136u8, + 13u8, 131u8, 42u8, 220u8, 3u8, 151u8, 241u8, 210u8, 158u8, 218u8, + 217u8, + ], + ) + } + #[doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] + #[doc = "to be used."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] + #[doc = "-`core`: The core that should be scheduled."] + #[doc = "-`begin`: The starting blockheight of the instruction."] + #[doc = "-`assignment`: How the blockspace should be utilised."] + #[doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] + pub fn assign_core( + &self, + core: ::core::primitive::u16, + begin: ::core::primitive::u32, + assignment: ::std::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>, + end_hint: ::core::option::Option<::core::primitive::u32>, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Coretime", + "assign_core", + types::AssignCore { core, begin, assignment, end_hint }, + [ + 113u8, 133u8, 153u8, 202u8, 209u8, 53u8, 168u8, 214u8, 153u8, 232u8, + 170u8, 35u8, 63u8, 87u8, 5u8, 108u8, 188u8, 55u8, 111u8, 55u8, 22u8, + 1u8, 190u8, 216u8, 233u8, 185u8, 135u8, 172u8, 15u8, 254u8, 91u8, 92u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::coretime::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The broker chain has asked for revenue information for a specific block."] + pub struct RevenueInfoRequested { + pub when: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for RevenueInfoRequested { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "RevenueInfoRequested"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A core has received a new assignment from the broker chain."] + pub struct CoreAssigned { + pub core: runtime_types::polkadot_primitives::v7::CoreIndex, + } + impl ::subxt::events::StaticEvent for CoreAssigned { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "CoreAssigned"; + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The ParaId of the broker system parachain."] + pub fn broker_id(&self) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Coretime", + "BrokerId", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } pub mod xcm_pallet { use super::{root_mod, runtime_types}; #[doc = "The `Error` enum of this pallet."] @@ -32158,8 +34609,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Send { - pub dest: ::std::boxed::Box, - pub message: ::std::boxed::Box, + pub dest: ::std::boxed::Box, + pub message: ::std::boxed::Box, } impl ::subxt::blocks::StaticExtrinsic for Send { const PALLET: &'static str = "XcmPallet"; @@ -32176,10 +34627,9 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct TeleportAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: - ::std::boxed::Box, - pub assets: ::std::boxed::Box, + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, pub fee_asset_item: ::core::primitive::u32, } impl ::subxt::blocks::StaticExtrinsic for TeleportAssets { @@ -32197,10 +34647,9 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ReserveTransferAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: - ::std::boxed::Box, - pub assets: ::std::boxed::Box, + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, pub fee_asset_item: ::core::primitive::u32, } impl ::subxt::blocks::StaticExtrinsic for ReserveTransferAssets { @@ -32218,12 +34667,82 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Execute { - pub message: ::std::boxed::Box, + pub message: ::std::boxed::Box, pub max_weight: runtime_types::sp_weights::weight_v2::Weight, } - impl ::subxt::blocks::StaticExtrinsic for Execute { + impl ::subxt::blocks::StaticExtrinsic for Execute { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "execute"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceXcmVersion { + pub location: + ::std::boxed::Box, + pub version: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for ForceXcmVersion { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_xcm_version"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceDefaultXcmVersion { + pub maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, + } + impl ::subxt::blocks::StaticExtrinsic for ForceDefaultXcmVersion { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_default_xcm_version"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceSubscribeVersionNotify { + pub location: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "force_subscribe_version_notify"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ForceUnsubscribeVersionNotify { + pub location: ::std::boxed::Box, + } + impl ::subxt::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "execute"; + const CALL: &'static str = "force_unsubscribe_version_notify"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -32235,15 +34754,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceXcmVersion { - pub location: ::std::boxed::Box< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >, - pub version: ::core::primitive::u32, + pub struct LimitedReserveTransferAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: ::core::primitive::u32, + pub weight_limit: runtime_types::xcm::v3::WeightLimit, } - impl ::subxt::blocks::StaticExtrinsic for ForceXcmVersion { + impl ::subxt::blocks::StaticExtrinsic for LimitedReserveTransferAssets { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "force_xcm_version"; + const CALL: &'static str = "limited_reserve_transfer_assets"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -32255,12 +34775,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceDefaultXcmVersion { - pub maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, + pub struct LimitedTeleportAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: ::core::primitive::u32, + pub weight_limit: runtime_types::xcm::v3::WeightLimit, } - impl ::subxt::blocks::StaticExtrinsic for ForceDefaultXcmVersion { + impl ::subxt::blocks::StaticExtrinsic for LimitedTeleportAssets { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "force_default_xcm_version"; + const CALL: &'static str = "limited_teleport_assets"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -32272,13 +34796,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceSubscribeVersionNotify { - pub location: - ::std::boxed::Box, + pub struct ForceSuspension { + pub suspended: ::core::primitive::bool, } - impl ::subxt::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { + impl ::subxt::blocks::StaticExtrinsic for ForceSuspension { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "force_subscribe_version_notify"; + const CALL: &'static str = "force_suspension"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -32290,13 +34813,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceUnsubscribeVersionNotify { - pub location: - ::std::boxed::Box, + pub struct TransferAssets { + pub dest: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, + pub assets: ::std::boxed::Box, + pub fee_asset_item: ::core::primitive::u32, + pub weight_limit: runtime_types::xcm::v3::WeightLimit, } - impl ::subxt::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { + impl ::subxt::blocks::StaticExtrinsic for TransferAssets { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "force_unsubscribe_version_notify"; + const CALL: &'static str = "transfer_assets"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -32308,17 +34834,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct LimitedReserveTransferAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: - ::std::boxed::Box, - pub assets: ::std::boxed::Box, - pub fee_asset_item: ::core::primitive::u32, - pub weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + pub struct ClaimAssets { + pub assets: ::std::boxed::Box, + pub beneficiary: ::std::boxed::Box, } - impl ::subxt::blocks::StaticExtrinsic for LimitedReserveTransferAssets { + impl ::subxt::blocks::StaticExtrinsic for ClaimAssets { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "limited_reserve_transfer_assets"; + const CALL: &'static str = "claim_assets"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -32330,17 +34852,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct LimitedTeleportAssets { - pub dest: ::std::boxed::Box, - pub beneficiary: - ::std::boxed::Box, - pub assets: ::std::boxed::Box, - pub fee_asset_item: ::core::primitive::u32, - pub weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + pub struct ExecuteBlob { + pub encoded_message: + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, } - impl ::subxt::blocks::StaticExtrinsic for LimitedTeleportAssets { + impl ::subxt::blocks::StaticExtrinsic for ExecuteBlob { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "limited_teleport_assets"; + const CALL: &'static str = "execute_blob"; } #[derive( :: subxt :: ext :: codec :: Decode, @@ -32352,21 +34873,25 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ForceSuspension { - pub suspended: ::core::primitive::bool, + pub struct SendBlob { + pub dest: ::std::boxed::Box, + pub encoded_message: + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, } - impl ::subxt::blocks::StaticExtrinsic for ForceSuspension { + impl ::subxt::blocks::StaticExtrinsic for SendBlob { const PALLET: &'static str = "XcmPallet"; - const CALL: &'static str = "force_suspension"; + const CALL: &'static str = "send_blob"; } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::send`]."] + #[doc = "WARNING: DEPRECATED. `send` will be removed after June 2024. Use `send_blob` instead."] pub fn send( &self, - dest: runtime_types::staging_xcm::VersionedMultiLocation, - message: runtime_types::staging_xcm::VersionedXcm, + dest: runtime_types::xcm::VersionedLocation, + message: runtime_types::xcm::VersionedXcm, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "XcmPallet", @@ -32376,18 +34901,36 @@ pub mod api { message: ::std::boxed::Box::new(message), }, [ - 147u8, 255u8, 86u8, 82u8, 17u8, 159u8, 225u8, 145u8, 220u8, 89u8, 71u8, - 23u8, 193u8, 249u8, 12u8, 70u8, 19u8, 140u8, 232u8, 97u8, 12u8, 220u8, - 113u8, 65u8, 4u8, 255u8, 138u8, 10u8, 231u8, 122u8, 67u8, 105u8, + 47u8, 63u8, 128u8, 176u8, 10u8, 137u8, 124u8, 238u8, 155u8, 37u8, + 193u8, 160u8, 83u8, 240u8, 21u8, 179u8, 169u8, 131u8, 27u8, 104u8, + 195u8, 208u8, 123u8, 14u8, 221u8, 12u8, 45u8, 81u8, 148u8, 76u8, 17u8, + 100u8, ], ) } - #[doc = "See [`Pallet::teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub fn teleport_assets( &self, - dest: runtime_types::staging_xcm::VersionedMultiLocation, - beneficiary: runtime_types::staging_xcm::VersionedMultiLocation, - assets: runtime_types::staging_xcm::VersionedMultiAssets, + dest: runtime_types::xcm::VersionedLocation, + beneficiary: runtime_types::xcm::VersionedLocation, + assets: runtime_types::xcm::VersionedAssets, fee_asset_item: ::core::primitive::u32, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( @@ -32400,18 +34943,47 @@ pub mod api { fee_asset_item, }, [ - 56u8, 144u8, 237u8, 60u8, 157u8, 5u8, 7u8, 129u8, 41u8, 149u8, 160u8, - 100u8, 233u8, 102u8, 181u8, 140u8, 115u8, 213u8, 29u8, 132u8, 16u8, - 30u8, 23u8, 82u8, 140u8, 134u8, 37u8, 87u8, 3u8, 99u8, 172u8, 42u8, + 124u8, 191u8, 118u8, 61u8, 45u8, 225u8, 97u8, 83u8, 198u8, 20u8, 139u8, + 117u8, 241u8, 1u8, 19u8, 54u8, 79u8, 181u8, 131u8, 112u8, 11u8, 118u8, + 147u8, 12u8, 89u8, 156u8, 123u8, 123u8, 195u8, 45u8, 50u8, 107u8, ], ) } - #[doc = "See [`Pallet::reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub fn reserve_transfer_assets( &self, - dest: runtime_types::staging_xcm::VersionedMultiLocation, - beneficiary: runtime_types::staging_xcm::VersionedMultiLocation, - assets: runtime_types::staging_xcm::VersionedMultiAssets, + dest: runtime_types::xcm::VersionedLocation, + beneficiary: runtime_types::xcm::VersionedLocation, + assets: runtime_types::xcm::VersionedAssets, fee_asset_item: ::core::primitive::u32, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( @@ -32424,16 +34996,27 @@ pub mod api { fee_asset_item, }, [ - 21u8, 167u8, 44u8, 22u8, 210u8, 73u8, 148u8, 7u8, 91u8, 108u8, 148u8, - 205u8, 170u8, 243u8, 142u8, 224u8, 205u8, 119u8, 252u8, 22u8, 203u8, - 32u8, 73u8, 200u8, 178u8, 14u8, 167u8, 147u8, 166u8, 55u8, 14u8, 231u8, + 97u8, 102u8, 230u8, 44u8, 135u8, 197u8, 43u8, 53u8, 182u8, 125u8, + 140u8, 141u8, 229u8, 73u8, 29u8, 55u8, 159u8, 104u8, 197u8, 20u8, + 124u8, 234u8, 250u8, 94u8, 133u8, 253u8, 189u8, 6u8, 216u8, 162u8, + 218u8, 89u8, ], ) } - #[doc = "See [`Pallet::execute`]."] + #[doc = "Execute an XCM message from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] + #[doc = "partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "WARNING: DEPRECATED. `execute` will be removed after June 2024. Use `execute_blob`"] + #[doc = "instead."] pub fn execute( &self, - message: runtime_types::staging_xcm::VersionedXcm2, + message: runtime_types::xcm::VersionedXcm2, max_weight: runtime_types::sp_weights::weight_v2::Weight, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( @@ -32441,16 +35024,22 @@ pub mod api { "execute", types::Execute { message: ::std::boxed::Box::new(message), max_weight }, [ - 15u8, 97u8, 86u8, 111u8, 105u8, 116u8, 109u8, 206u8, 70u8, 8u8, 57u8, - 232u8, 133u8, 132u8, 30u8, 219u8, 34u8, 69u8, 0u8, 213u8, 98u8, 241u8, - 186u8, 93u8, 216u8, 39u8, 73u8, 24u8, 193u8, 87u8, 92u8, 31u8, + 71u8, 109u8, 92u8, 110u8, 198u8, 150u8, 140u8, 125u8, 248u8, 236u8, + 177u8, 156u8, 198u8, 223u8, 51u8, 15u8, 52u8, 240u8, 20u8, 200u8, 68u8, + 145u8, 36u8, 156u8, 159u8, 153u8, 125u8, 48u8, 181u8, 61u8, 53u8, + 208u8, ], ) } - #[doc = "See [`Pallet::force_xcm_version`]."] + #[doc = "Extoll that a particular destination can be communicated with through a particular"] + #[doc = "version of XCM."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The destination that is being described."] + #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] pub fn force_xcm_version( &self, - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, version: ::core::primitive::u32, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( @@ -32461,13 +35050,17 @@ pub mod api { version, }, [ - 110u8, 11u8, 78u8, 255u8, 66u8, 2u8, 55u8, 108u8, 92u8, 151u8, 231u8, - 175u8, 75u8, 156u8, 34u8, 191u8, 0u8, 56u8, 104u8, 197u8, 70u8, 204u8, - 73u8, 234u8, 173u8, 251u8, 88u8, 226u8, 3u8, 136u8, 228u8, 136u8, + 69u8, 151u8, 198u8, 154u8, 69u8, 181u8, 41u8, 111u8, 145u8, 230u8, + 103u8, 42u8, 237u8, 91u8, 235u8, 6u8, 156u8, 65u8, 187u8, 48u8, 171u8, + 200u8, 49u8, 4u8, 9u8, 210u8, 229u8, 152u8, 187u8, 88u8, 80u8, 246u8, ], ) } - #[doc = "See [`Pallet::force_default_xcm_version`]."] + #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] + #[doc = "version a destination can accept is unknown)."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] pub fn force_default_xcm_version( &self, maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, @@ -32484,10 +35077,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] pub fn force_subscribe_version_notify( &self, - location: runtime_types::staging_xcm::VersionedMultiLocation, + location: runtime_types::xcm::VersionedLocation, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "XcmPallet", @@ -32496,16 +35092,21 @@ pub mod api { location: ::std::boxed::Box::new(location), }, [ - 112u8, 254u8, 138u8, 12u8, 203u8, 176u8, 251u8, 167u8, 223u8, 0u8, - 71u8, 148u8, 19u8, 179u8, 47u8, 96u8, 188u8, 189u8, 14u8, 172u8, 1u8, - 1u8, 192u8, 107u8, 137u8, 158u8, 22u8, 9u8, 138u8, 241u8, 32u8, 47u8, + 203u8, 171u8, 70u8, 130u8, 46u8, 63u8, 76u8, 50u8, 105u8, 23u8, 249u8, + 190u8, 115u8, 74u8, 70u8, 125u8, 132u8, 112u8, 138u8, 60u8, 33u8, 35u8, + 45u8, 29u8, 95u8, 103u8, 187u8, 182u8, 188u8, 196u8, 248u8, 152u8, ], ) } - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] + #[doc = "version changes."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] + #[doc = " notifications which we no longer desire."] pub fn force_unsubscribe_version_notify( &self, - location: runtime_types::staging_xcm::VersionedMultiLocation, + location: runtime_types::xcm::VersionedLocation, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "XcmPallet", @@ -32514,21 +35115,49 @@ pub mod api { location: ::std::boxed::Box::new(location), }, [ - 205u8, 143u8, 230u8, 143u8, 166u8, 184u8, 53u8, 252u8, 118u8, 184u8, - 209u8, 227u8, 225u8, 184u8, 254u8, 244u8, 101u8, 56u8, 27u8, 128u8, - 40u8, 159u8, 178u8, 62u8, 63u8, 164u8, 59u8, 236u8, 1u8, 168u8, 202u8, - 42u8, + 6u8, 113u8, 168u8, 215u8, 233u8, 202u8, 249u8, 134u8, 131u8, 8u8, + 142u8, 203u8, 142u8, 95u8, 216u8, 70u8, 38u8, 99u8, 166u8, 97u8, 218u8, + 132u8, 247u8, 14u8, 42u8, 99u8, 4u8, 115u8, 200u8, 180u8, 213u8, 50u8, ], ) } - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub fn limited_reserve_transfer_assets( &self, - dest: runtime_types::staging_xcm::VersionedMultiLocation, - beneficiary: runtime_types::staging_xcm::VersionedMultiLocation, - assets: runtime_types::staging_xcm::VersionedMultiAssets, + dest: runtime_types::xcm::VersionedLocation, + beneficiary: runtime_types::xcm::VersionedLocation, + assets: runtime_types::xcm::VersionedAssets, fee_asset_item: ::core::primitive::u32, - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + weight_limit: runtime_types::xcm::v3::WeightLimit, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "XcmPallet", @@ -32541,21 +35170,38 @@ pub mod api { weight_limit, }, [ - 10u8, 139u8, 165u8, 239u8, 92u8, 178u8, 169u8, 62u8, 166u8, 236u8, - 50u8, 12u8, 196u8, 3u8, 233u8, 209u8, 3u8, 159u8, 184u8, 234u8, 171u8, - 46u8, 145u8, 134u8, 241u8, 155u8, 221u8, 173u8, 166u8, 94u8, 147u8, - 88u8, + 198u8, 66u8, 204u8, 162u8, 222u8, 246u8, 141u8, 165u8, 241u8, 62u8, + 43u8, 236u8, 56u8, 200u8, 54u8, 47u8, 174u8, 83u8, 167u8, 220u8, 174u8, + 111u8, 123u8, 202u8, 248u8, 232u8, 166u8, 80u8, 152u8, 223u8, 86u8, + 141u8, ], ) } - #[doc = "See [`Pallet::limited_teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub fn limited_teleport_assets( &self, - dest: runtime_types::staging_xcm::VersionedMultiLocation, - beneficiary: runtime_types::staging_xcm::VersionedMultiLocation, - assets: runtime_types::staging_xcm::VersionedMultiAssets, + dest: runtime_types::xcm::VersionedLocation, + beneficiary: runtime_types::xcm::VersionedLocation, + assets: runtime_types::xcm::VersionedAssets, fee_asset_item: ::core::primitive::u32, - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + weight_limit: runtime_types::xcm::v3::WeightLimit, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "XcmPallet", @@ -32568,14 +35214,16 @@ pub mod api { weight_limit, }, [ - 156u8, 205u8, 105u8, 18u8, 120u8, 130u8, 144u8, 67u8, 152u8, 188u8, - 109u8, 121u8, 4u8, 240u8, 123u8, 112u8, 72u8, 153u8, 2u8, 111u8, 183u8, - 170u8, 199u8, 82u8, 33u8, 117u8, 43u8, 133u8, 208u8, 44u8, 118u8, - 107u8, + 70u8, 61u8, 32u8, 43u8, 101u8, 104u8, 251u8, 60u8, 212u8, 124u8, 113u8, + 243u8, 241u8, 183u8, 5u8, 231u8, 209u8, 231u8, 136u8, 3u8, 145u8, + 242u8, 179u8, 171u8, 185u8, 185u8, 7u8, 34u8, 5u8, 203u8, 21u8, 210u8, ], ) } - #[doc = "See [`Pallet::force_suspension`]."] + #[doc = "Set or unset the global suspension state of the XCM executor."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `suspended`: `true` to suspend, `false` to resume."] pub fn force_suspension( &self, suspended: ::core::primitive::bool, @@ -32591,6 +35239,145 @@ pub mod api { ], ) } + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve, or through teleports."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] + #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] + #[doc = "operation will fail and the sent assets may be at risk."] + #[doc = ""] + #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] + #[doc = "to `dest`, no limitations imposed on `fees`."] + #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] + #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] + #[doc = " `beneficiary`."] + #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] + #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] + #[doc = " to `beneficiary`."] + #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] + #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] + #[doc = " and deposit reserve-based assets to `beneficiary`."] + #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] + #[doc = " assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] + #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] + #[doc = " from relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + pub fn transfer_assets( + &self, + dest: runtime_types::xcm::VersionedLocation, + beneficiary: runtime_types::xcm::VersionedLocation, + assets: runtime_types::xcm::VersionedAssets, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "transfer_assets", + types::TransferAssets { + dest: ::std::boxed::Box::new(dest), + beneficiary: ::std::boxed::Box::new(beneficiary), + assets: ::std::boxed::Box::new(assets), + fee_asset_item, + weight_limit, + }, + [ + 44u8, 155u8, 182u8, 37u8, 123u8, 148u8, 150u8, 191u8, 117u8, 32u8, + 16u8, 238u8, 121u8, 188u8, 217u8, 110u8, 10u8, 236u8, 174u8, 91u8, + 100u8, 201u8, 109u8, 109u8, 60u8, 177u8, 233u8, 66u8, 181u8, 191u8, + 105u8, 37u8, + ], + ) + } + #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] + #[doc = ""] + #[doc = "- `origin`: Anyone can call this extrinsic."] + #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] + #[doc = "was the latest when they were trapped."] + #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] + pub fn claim_assets( + &self, + assets: runtime_types::xcm::VersionedAssets, + beneficiary: runtime_types::xcm::VersionedLocation, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "claim_assets", + types::ClaimAssets { + assets: ::std::boxed::Box::new(assets), + beneficiary: ::std::boxed::Box::new(beneficiary), + }, + [ + 155u8, 23u8, 166u8, 172u8, 251u8, 171u8, 136u8, 240u8, 253u8, 51u8, + 164u8, 43u8, 141u8, 23u8, 189u8, 177u8, 33u8, 32u8, 212u8, 56u8, 174u8, + 165u8, 129u8, 7u8, 49u8, 217u8, 213u8, 214u8, 250u8, 91u8, 200u8, + 195u8, + ], + ) + } + #[doc = "Execute an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether the message could be executed completely"] + #[doc = "or only partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + pub fn execute_blob( + &self, + encoded_message: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "execute_blob", + types::ExecuteBlob { encoded_message, max_weight }, + [ + 186u8, 47u8, 116u8, 116u8, 237u8, 238u8, 159u8, 254u8, 15u8, 213u8, + 224u8, 36u8, 171u8, 108u8, 158u8, 60u8, 171u8, 48u8, 129u8, 136u8, + 60u8, 67u8, 123u8, 254u8, 87u8, 175u8, 28u8, 25u8, 70u8, 191u8, 241u8, + 211u8, + ], + ) + } + #[doc = "Send an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "The destination, `dest`, will receive this message with a `DescendOrigin` instruction"] + #[doc = "that makes the origin of the message be the origin on this system."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + pub fn send_blob( + &self, + dest: runtime_types::xcm::VersionedLocation, + encoded_message: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "XcmPallet", + "send_blob", + types::SendBlob { dest: ::std::boxed::Box::new(dest), encoded_message }, + [ + 3u8, 31u8, 32u8, 202u8, 245u8, 152u8, 169u8, 214u8, 126u8, 92u8, 199u8, + 157u8, 94u8, 211u8, 139u8, 143u8, 5u8, 113u8, 144u8, 253u8, 42u8, + 217u8, 161u8, 237u8, 81u8, 152u8, 130u8, 9u8, 242u8, 111u8, 105u8, + 47u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -32609,7 +35396,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Execution of an XCM message was attempted."] pub struct Attempted { - pub outcome: runtime_types::staging_xcm::v3::traits::Outcome, + pub outcome: runtime_types::staging_xcm::v4::traits::Outcome, } impl ::subxt::events::StaticEvent for Attempted { const PALLET: &'static str = "XcmPallet"; @@ -32627,9 +35414,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "A XCM message was sent."] pub struct Sent { - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub message: runtime_types::staging_xcm::v3::Xcm, + pub origin: runtime_types::staging_xcm::v4::location::Location, + pub destination: runtime_types::staging_xcm::v4::location::Location, + pub message: runtime_types::staging_xcm::v4::Xcm, pub message_id: [::core::primitive::u8; 32usize], } impl ::subxt::events::StaticEvent for Sent { @@ -32650,7 +35437,7 @@ pub mod api { #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] pub struct UnexpectedResponse { - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub origin: runtime_types::staging_xcm::v4::location::Location, pub query_id: ::core::primitive::u64, } impl ::subxt::events::StaticEvent for UnexpectedResponse { @@ -32671,7 +35458,7 @@ pub mod api { #[doc = "no registered notification call."] pub struct ResponseReady { pub query_id: ::core::primitive::u64, - pub response: runtime_types::staging_xcm::v3::Response, + pub response: runtime_types::staging_xcm::v4::Response, } impl ::subxt::events::StaticEvent for ResponseReady { const PALLET: &'static str = "XcmPallet"; @@ -32779,11 +35566,10 @@ pub mod api { #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] pub struct InvalidResponder { - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub origin: runtime_types::staging_xcm::v4::location::Location, pub query_id: ::core::primitive::u64, - pub expected_location: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >, + pub expected_location: + ::core::option::Option, } impl ::subxt::events::StaticEvent for InvalidResponder { const PALLET: &'static str = "XcmPallet"; @@ -32807,7 +35593,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] pub struct InvalidResponderVersion { - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub origin: runtime_types::staging_xcm::v4::location::Location, pub query_id: ::core::primitive::u64, } impl ::subxt::events::StaticEvent for InvalidResponderVersion { @@ -32846,8 +35632,8 @@ pub mod api { #[doc = "Some assets have been placed in an asset trap."] pub struct AssetsTrapped { pub hash: ::subxt::utils::H256, - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub assets: runtime_types::staging_xcm::VersionedMultiAssets, + pub origin: runtime_types::staging_xcm::v4::location::Location, + pub assets: runtime_types::xcm::VersionedAssets, } impl ::subxt::events::StaticEvent for AssetsTrapped { const PALLET: &'static str = "XcmPallet"; @@ -32867,9 +35653,9 @@ pub mod api { #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] pub struct VersionChangeNotified { - pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub destination: runtime_types::staging_xcm::v4::location::Location, pub result: ::core::primitive::u32, - pub cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + pub cost: runtime_types::staging_xcm::v4::asset::Assets, pub message_id: [::core::primitive::u8; 32usize], } impl ::subxt::events::StaticEvent for VersionChangeNotified { @@ -32889,7 +35675,7 @@ pub mod api { #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] pub struct SupportedVersionChanged { - pub location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub location: runtime_types::staging_xcm::v4::location::Location, pub version: ::core::primitive::u32, } impl ::subxt::events::StaticEvent for SupportedVersionChanged { @@ -32909,9 +35695,9 @@ pub mod api { #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] pub struct NotifyTargetSendFail { - pub location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub location: runtime_types::staging_xcm::v4::location::Location, pub query_id: ::core::primitive::u64, - pub error: runtime_types::staging_xcm::v3::traits::Error, + pub error: runtime_types::xcm::v3::traits::Error, } impl ::subxt::events::StaticEvent for NotifyTargetSendFail { const PALLET: &'static str = "XcmPallet"; @@ -32930,7 +35716,7 @@ pub mod api { #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] pub struct NotifyTargetMigrationFail { - pub location: runtime_types::staging_xcm::VersionedMultiLocation, + pub location: runtime_types::xcm::VersionedLocation, pub query_id: ::core::primitive::u64, } impl ::subxt::events::StaticEvent for NotifyTargetMigrationFail { @@ -32955,7 +35741,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] pub struct InvalidQuerierVersion { - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub origin: runtime_types::staging_xcm::v4::location::Location, pub query_id: ::core::primitive::u64, } impl ::subxt::events::StaticEvent for InvalidQuerierVersion { @@ -32976,12 +35762,11 @@ pub mod api { #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] pub struct InvalidQuerier { - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + pub origin: runtime_types::staging_xcm::v4::location::Location, pub query_id: ::core::primitive::u64, - pub expected_querier: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub maybe_actual_querier: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >, + pub expected_querier: runtime_types::staging_xcm::v4::location::Location, + pub maybe_actual_querier: + ::core::option::Option, } impl ::subxt::events::StaticEvent for InvalidQuerier { const PALLET: &'static str = "XcmPallet"; @@ -33000,8 +35785,8 @@ pub mod api { #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] pub struct VersionNotifyStarted { - pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + pub destination: runtime_types::staging_xcm::v4::location::Location, + pub cost: runtime_types::staging_xcm::v4::asset::Assets, pub message_id: [::core::primitive::u8; 32usize], } impl ::subxt::events::StaticEvent for VersionNotifyStarted { @@ -33020,8 +35805,8 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "We have requested that a remote chain send us XCM version change notifications."] pub struct VersionNotifyRequested { - pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + pub destination: runtime_types::staging_xcm::v4::location::Location, + pub cost: runtime_types::staging_xcm::v4::asset::Assets, pub message_id: [::core::primitive::u8; 32usize], } impl ::subxt::events::StaticEvent for VersionNotifyRequested { @@ -33041,8 +35826,8 @@ pub mod api { #[doc = "We have requested that a remote chain stops sending us XCM version change"] #[doc = "notifications."] pub struct VersionNotifyUnrequested { - pub destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + pub destination: runtime_types::staging_xcm::v4::location::Location, + pub cost: runtime_types::staging_xcm::v4::asset::Assets, pub message_id: [::core::primitive::u8; 32usize], } impl ::subxt::events::StaticEvent for VersionNotifyUnrequested { @@ -33061,8 +35846,8 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] pub struct FeesPaid { - pub paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub fees: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + pub paying: runtime_types::staging_xcm::v4::location::Location, + pub fees: runtime_types::staging_xcm::v4::asset::Assets, } impl ::subxt::events::StaticEvent for FeesPaid { const PALLET: &'static str = "XcmPallet"; @@ -33081,13 +35866,32 @@ pub mod api { #[doc = "Some assets have been claimed from an asset trap"] pub struct AssetsClaimed { pub hash: ::subxt::utils::H256, - pub origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - pub assets: runtime_types::staging_xcm::VersionedMultiAssets, + pub origin: runtime_types::staging_xcm::v4::location::Location, + pub assets: runtime_types::xcm::VersionedAssets, } impl ::subxt::events::StaticEvent for AssetsClaimed { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "AssetsClaimed"; } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A XCM version migration finished."] + pub struct VersionMigrationFinished { + pub version: ::core::primitive::u32, + } + impl ::subxt::events::StaticEvent for VersionMigrationFinished { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "VersionMigrationFinished"; + } } pub mod storage { use super::runtime_types; @@ -33116,65 +35920,68 @@ pub mod api { ) } #[doc = " The ongoing queries."] - pub fn queries_iter( + pub fn queries( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_xcm::pallet::QueryStatus<::core::primitive::u32>, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "XcmPallet", "Queries", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } #[doc = " The ongoing queries."] - pub fn queries( + pub fn queries_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u64>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::pallet_xcm::pallet::QueryStatus<::core::primitive::u32>, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "XcmPallet", "Queries", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] - pub fn asset_traps_iter( + pub fn asset_traps( &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "XcmPallet", "AssetTraps", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 148u8, 41u8, 254u8, 134u8, 61u8, 172u8, 126u8, 146u8, 78u8, 178u8, 50u8, 77u8, 226u8, 8u8, 200u8, 78u8, 77u8, 91u8, 26u8, 133u8, 104u8, @@ -33184,22 +35991,21 @@ pub mod api { } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] - pub fn asset_traps( + pub fn asset_traps_root( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::H256>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, + (), ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), > { ::subxt::storage::address::Address::new_static( "XcmPallet", "AssetTraps", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 148u8, 41u8, 254u8, 134u8, 61u8, 172u8, 126u8, 146u8, 78u8, 178u8, 50u8, 77u8, 226u8, 8u8, 200u8, 78u8, 77u8, 91u8, 26u8, 133u8, 104u8, @@ -33231,30 +36037,35 @@ pub mod api { ) } #[doc = " The Latest versions that we know various locations support."] - pub fn supported_version_iter( + pub fn supported_version( &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", - vec![], + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } #[doc = " The Latest versions that we know various locations support."] - pub fn supported_version_iter1( + pub fn supported_version_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u32, @@ -33265,414 +36076,954 @@ pub mod api { ::subxt::storage::address::Address::new_static( "XcmPallet", "SupportedVersion", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } - #[doc = " The Latest versions that we know various locations support."] - pub fn supported_version( + #[doc = " All locations that we have requested version notifications from."] + pub fn version_notifiers( &self, _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow, + _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u32, + ::core::primitive::u64, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionNotifiers", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, + ], + ) + } + #[doc = " All locations that we have requested version notifications from."] + pub fn version_notifiers_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::u64, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionNotifiers", + Vec::new(), + [ + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, + ], + ) + } + #[doc = " The target locations that are subscribed to our version changes, as well as the most recent"] + #[doc = " of our versions we informed them of."] + pub fn version_notify_targets( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + ::core::primitive::u64, + runtime_types::sp_weights::weight_v2::Weight, + ::core::primitive::u32, + ), ::subxt::storage::address::Yes, (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionNotifyTargets", + vec![ + ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ], + [ + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, + ], + ) + } + #[doc = " The target locations that are subscribed to our version changes, as well as the most recent"] + #[doc = " of our versions we informed them of."] + pub fn version_notify_targets_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ( + ::core::primitive::u64, + runtime_types::sp_weights::weight_v2::Weight, + ::core::primitive::u32, + ), + (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "XcmPallet", - "SupportedVersion", + "VersionNotifyTargets", + Vec::new(), + [ + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, + ], + ) + } + #[doc = " Destinations whose latest XCM version we would like to know. Duplicates not allowed, and"] + #[doc = " the `u32` counter is the number of times that a send to the destination has been attempted,"] + #[doc = " which is used as a prioritization."] + pub fn version_discovery_queue( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::xcm::VersionedLocation, + ::core::primitive::u32, + )>, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "VersionDiscoveryQueue", + vec![], + [ + 95u8, 74u8, 97u8, 94u8, 40u8, 140u8, 175u8, 176u8, 224u8, 222u8, 83u8, + 199u8, 170u8, 102u8, 3u8, 77u8, 127u8, 208u8, 155u8, 122u8, 176u8, + 51u8, 15u8, 253u8, 231u8, 245u8, 91u8, 192u8, 60u8, 144u8, 101u8, + 168u8, + ], + ) + } + #[doc = " The current migration's stage, if any."] + pub fn current_migration( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::VersionMigrationStage, + ::subxt::storage::address::Yes, + (), + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "CurrentMigration", + vec![], + [ + 74u8, 138u8, 181u8, 162u8, 59u8, 251u8, 37u8, 28u8, 232u8, 51u8, 30u8, + 152u8, 252u8, 133u8, 95u8, 195u8, 47u8, 127u8, 21u8, 44u8, 62u8, 143u8, + 170u8, 234u8, 160u8, 37u8, 131u8, 179u8, 57u8, 241u8, 140u8, 124u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on a remote chain."] + pub fn remote_locked_fungibles( + &self, + _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + _2: impl ::std::borrow::Borrow, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "RemoteLockedFungibles", vec![ ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), + ::subxt::storage::address::make_static_storage_map_key(_2.borrow()), + ], + [ + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on a remote chain."] + pub fn remote_locked_fungibles_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "RemoteLockedFungibles", + Vec::new(), + [ + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on this chain."] + pub fn locked_fungibles( + &self, + _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u128, + runtime_types::xcm::VersionedLocation, + )>, + ::subxt::storage::address::Yes, + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "LockedFungibles", + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + [ + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, + ], + ) + } + #[doc = " Fungible assets which we know are locked on this chain."] + pub fn locked_fungibles_root( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + runtime_types::bounded_collections::bounded_vec::BoundedVec<( + ::core::primitive::u128, + runtime_types::xcm::VersionedLocation, + )>, + (), + (), + ::subxt::storage::address::Yes, + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "LockedFungibles", + Vec::new(), + [ + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, + ], + ) + } + #[doc = " Global suspension state of the XCM executor."] + pub fn xcm_execution_suspended( + &self, + ) -> ::subxt::storage::address::Address< + ::subxt::storage::address::StaticStorageMapKey, + ::core::primitive::bool, + ::subxt::storage::address::Yes, + ::subxt::storage::address::Yes, + (), + > { + ::subxt::storage::address::Address::new_static( + "XcmPallet", + "XcmExecutionSuspended", + vec![], + [ + 182u8, 54u8, 69u8, 68u8, 78u8, 76u8, 103u8, 79u8, 47u8, 136u8, 99u8, + 104u8, 128u8, 129u8, 249u8, 54u8, 214u8, 136u8, 97u8, 48u8, 178u8, + 42u8, 26u8, 27u8, 82u8, 24u8, 33u8, 77u8, 33u8, 27u8, 20u8, 127u8, + ], + ) + } + } + } + } + pub mod beefy { + use super::{root_mod, runtime_types}; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_beefy::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_beefy::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocation { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocation { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReportEquivocationUnsigned { + pub equivocation_proof: ::std::boxed::Box< + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + >, + pub key_owner_proof: runtime_types::sp_session::MembershipProof, + } + impl ::subxt::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation_unsigned"; + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SetNewGenesis { + pub delay_in_blocks: ::core::primitive::u32, + } + impl ::subxt::blocks::StaticExtrinsic for SetNewGenesis { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "set_new_genesis"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + pub fn report_equivocation( + &self, + equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "report_equivocation", + types::ReportEquivocation { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, + [ + 196u8, 92u8, 30u8, 54u8, 79u8, 96u8, 54u8, 238u8, 29u8, 255u8, 252u8, + 236u8, 8u8, 104u8, 107u8, 190u8, 115u8, 54u8, 232u8, 58u8, 145u8, + 191u8, 110u8, 12u8, 165u8, 154u8, 48u8, 216u8, 178u8, 99u8, 123u8, + 218u8, ], + ) + } + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] + pub fn report_equivocation_unsigned( + &self, + equivocation_proof: runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >, + key_owner_proof: runtime_types::sp_session::MembershipProof, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "report_equivocation_unsigned", + types::ReportEquivocationUnsigned { + equivocation_proof: ::std::boxed::Box::new(equivocation_proof), + key_owner_proof, + }, [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 106u8, 120u8, 157u8, 177u8, 251u8, 12u8, 39u8, 235u8, 94u8, 241u8, + 75u8, 204u8, 100u8, 82u8, 246u8, 168u8, 238u8, 155u8, 163u8, 20u8, + 83u8, 81u8, 77u8, 206u8, 10u8, 159u8, 196u8, 223u8, 11u8, 98u8, 128u8, + 97u8, ], ) } - #[doc = " All locations that we have requested version notifications from."] - pub fn version_notifiers_iter( + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] + pub fn set_new_genesis( &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u64, - (), - (), - ::subxt::storage::address::Yes, - > { - ::subxt::storage::address::Address::new_static( - "XcmPallet", - "VersionNotifiers", - vec![], + delay_in_blocks: ::core::primitive::u32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Beefy", + "set_new_genesis", + types::SetNewGenesis { delay_in_blocks }, [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, + 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, + 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, ], ) } - #[doc = " All locations that we have requested version notifications from."] - pub fn version_notifiers_iter1( + } + } + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " The current authorities set"] + pub fn authorities( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::u64, - (), - (), + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "VersionNotifiers", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + "Beefy", + "Authorities", + vec![], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 135u8, 146u8, 24u8, 144u8, 245u8, 251u8, 253u8, 63u8, 44u8, 46u8, 72u8, + 115u8, 190u8, 93u8, 201u8, 244u8, 80u8, 80u8, 156u8, 171u8, 69u8, + 126u8, 67u8, 51u8, 196u8, 136u8, 93u8, 176u8, 111u8, 247u8, 19u8, + 161u8, ], ) } - #[doc = " All locations that we have requested version notifications from."] - pub fn version_notifiers( + #[doc = " The current validator set id"] + pub fn validator_set_id( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, ::core::primitive::u64, ::subxt::storage::address::Yes, - (), + ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "VersionNotifiers", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + "Beefy", + "ValidatorSetId", + vec![], [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, + 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, + 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, + 78u8, ], ) } - #[doc = " The target locations that are subscribed to our version changes, as well as the most recent"] - #[doc = " of our versions we informed them of."] - pub fn version_notify_targets_iter( + #[doc = " Authorities set scheduled to be used with the next session"] + pub fn next_authorities( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ( - ::core::primitive::u64, - runtime_types::sp_weights::weight_v2::Weight, - ::core::primitive::u32, - ), - (), - (), + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "VersionNotifyTargets", + "Beefy", + "NextAuthorities", vec![], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 183u8, 185u8, 111u8, 92u8, 70u8, 221u8, 225u8, 184u8, 218u8, 97u8, + 108u8, 66u8, 60u8, 148u8, 40u8, 73u8, 236u8, 28u8, 169u8, 32u8, 202u8, + 125u8, 238u8, 246u8, 210u8, 51u8, 25u8, 61u8, 220u8, 195u8, 156u8, + 217u8, ], ) } - #[doc = " The target locations that are subscribed to our version changes, as well as the most recent"] - #[doc = " of our versions we informed them of."] - pub fn version_notify_targets_iter1( + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ( - ::core::primitive::u64, - runtime_types::sp_weights::weight_v2::Weight, - ::core::primitive::u32, - ), - (), + ::core::primitive::u32, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "VersionNotifyTargets", + "Beefy", + "SetIdSession", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, ], ) } - #[doc = " The target locations that are subscribed to our version changes, as well as the most recent"] - #[doc = " of our versions we informed them of."] - pub fn version_notify_targets( + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - ( - ::core::primitive::u64, - runtime_types::sp_weights::weight_v2::Weight, - ::core::primitive::u32, - ), - ::subxt::storage::address::Yes, + ::core::primitive::u32, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "VersionNotifyTargets", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + "Beefy", + "SetIdSession", + Vec::new(), [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, ], ) } - #[doc = " Destinations whose latest XCM version we would like to know. Duplicates not allowed, and"] - #[doc = " the `u32` counter is the number of times that a send to the destination has been attempted,"] - #[doc = " which is used as a prioritization."] - pub fn version_discovery_queue( + #[doc = " Block number where BEEFY consensus is enabled/started."] + #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] + #[doc = " restarted from the newly set block number."] + pub fn genesis_block( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec<( - runtime_types::staging_xcm::VersionedMultiLocation, - ::core::primitive::u32, - )>, + ::core::option::Option<::core::primitive::u32>, ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "VersionDiscoveryQueue", + "Beefy", + "GenesisBlock", vec![], [ - 110u8, 87u8, 102u8, 193u8, 125u8, 129u8, 0u8, 221u8, 218u8, 229u8, - 101u8, 94u8, 74u8, 229u8, 246u8, 180u8, 113u8, 11u8, 15u8, 159u8, 98u8, - 90u8, 30u8, 112u8, 164u8, 236u8, 151u8, 220u8, 19u8, 83u8, 67u8, 248u8, + 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, + 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, + 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, ], ) } - #[doc = " The current migration's stage, if any."] - pub fn current_migration( + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The maximum number of authorities that can be added."] + pub fn max_authorities( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxAuthorities", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators for each validator."] + pub fn max_nominators( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u32> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxNominators", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of entries to keep in the set id to session index mapping."] + #[doc = ""] + #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] + #[doc = " value should relate to the bonding duration of whatever staking system is"] + #[doc = " being used (if any). If equivocation handling is not enabled then this value"] + #[doc = " can be zero."] + pub fn max_set_id_session_entries( + &self, + ) -> ::subxt::constants::Address<::core::primitive::u64> { + ::subxt::constants::Address::new_static( + "Beefy", + "MaxSetIdSessionEntries", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod mmr { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Latest MMR Root hash."] + pub fn root_hash( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_xcm::pallet::VersionMigrationStage, + ::subxt::utils::H256, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "CurrentMigration", + "Mmr", + "RootHash", vec![], [ - 74u8, 138u8, 181u8, 162u8, 59u8, 251u8, 37u8, 28u8, 232u8, 51u8, 30u8, - 152u8, 252u8, 133u8, 95u8, 195u8, 47u8, 127u8, 21u8, 44u8, 62u8, 143u8, - 170u8, 234u8, 160u8, 37u8, 131u8, 179u8, 57u8, 241u8, 140u8, 124u8, + 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, + 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, + 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, ], ) } - #[doc = " Fungible assets which we know are locked on a remote chain."] - pub fn remote_locked_fungibles_iter( + #[doc = " Current size of the MMR (number of leaves)."] + pub fn number_of_leaves( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, - (), - (), + ::core::primitive::u64, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "RemoteLockedFungibles", + "Mmr", + "NumberOfLeaves", vec![], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, + 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, + 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, ], ) } - #[doc = " Fungible assets which we know are locked on a remote chain."] - pub fn remote_locked_fungibles_iter1( + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, + _0: impl ::std::borrow::Borrow<::core::primitive::u64>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, - (), + ::subxt::utils::H256, + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "RemoteLockedFungibles", + "Mmr", + "Nodes", vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, ], ) } - #[doc = " Fungible assets which we know are locked on a remote chain."] - pub fn remote_locked_fungibles_iter2( + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes_root( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, + ::subxt::utils::H256, (), (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "RemoteLockedFungibles", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ], + "Mmr", + "Nodes", + Vec::new(), [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, ], ) } - #[doc = " Fungible assets which we know are locked on a remote chain."] - pub fn remote_locked_fungibles( + } + } + } + pub mod mmr_leaf { + use super::{root_mod, runtime_types}; + pub mod storage { + use super::runtime_types; + pub struct StorageApi; + impl StorageApi { + #[doc = " Details of current BEEFY authority set."] + pub fn beefy_authorities( &self, - _0: impl ::std::borrow::Borrow<::core::primitive::u32>, - _1: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - _2: impl ::std::borrow::Borrow, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::pallet_xcm::pallet::RemoteLockedFungibleRecord<()>, + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, - (), (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "RemoteLockedFungibles", - vec![ - ::subxt::storage::address::make_static_storage_map_key(_0.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_1.borrow()), - ::subxt::storage::address::make_static_storage_map_key(_2.borrow()), - ], + "MmrLeaf", + "BeefyAuthorities", + vec![], [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, + 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, + 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, + 7u8, ], ) } - #[doc = " Fungible assets which we know are locked on this chain."] - pub fn locked_fungibles_iter( + #[doc = " Details of next BEEFY authority set."] + #[doc = ""] + #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] + pub fn beefy_next_authorities( &self, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec<( - ::core::primitive::u128, - runtime_types::staging_xcm::VersionedMultiLocation, - )>, - (), - (), + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet<::subxt::utils::H256>, + ::subxt::storage::address::Yes, ::subxt::storage::address::Yes, + (), > { ::subxt::storage::address::Address::new_static( - "XcmPallet", - "LockedFungibles", + "MmrLeaf", + "BeefyNextAuthorities", vec![], [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, + 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, + 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, ], ) } - #[doc = " Fungible assets which we know are locked on this chain."] - pub fn locked_fungibles( + } + } + } + pub mod identity_migrator { + use super::{root_mod, runtime_types}; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReapIdentity { + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::blocks::StaticExtrinsic for ReapIdentity { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "reap_identity"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PokeDeposit { + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::blocks::StaticExtrinsic for PokeDeposit { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "poke_deposit"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] + pub fn reap_identity( &self, - _0: impl ::std::borrow::Borrow<::subxt::utils::AccountId32>, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - runtime_types::bounded_collections::bounded_vec::BoundedVec<( - ::core::primitive::u128, - runtime_types::staging_xcm::VersionedMultiLocation, - )>, - ::subxt::storage::address::Yes, - (), - (), - > { - ::subxt::storage::address::Address::new_static( - "XcmPallet", - "LockedFungibles", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + who: ::subxt::utils::AccountId32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IdentityMigrator", + "reap_identity", + types::ReapIdentity { who }, [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 187u8, 110u8, 202u8, 220u8, 54u8, 240u8, 242u8, 171u8, 5u8, 83u8, + 129u8, 93u8, 213u8, 208u8, 21u8, 236u8, 121u8, 128u8, 127u8, 121u8, + 153u8, 118u8, 232u8, 44u8, 20u8, 124u8, 214u8, 185u8, 249u8, 182u8, + 136u8, 96u8, ], ) } - #[doc = " Global suspension state of the XCM executor."] - pub fn xcm_execution_suspended( + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] + pub fn poke_deposit( &self, - ) -> ::subxt::storage::address::Address< - ::subxt::storage::address::StaticStorageMapKey, - ::core::primitive::bool, - ::subxt::storage::address::Yes, - ::subxt::storage::address::Yes, - (), - > { - ::subxt::storage::address::Address::new_static( - "XcmPallet", - "XcmExecutionSuspended", - vec![], + who: ::subxt::utils::AccountId32, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "IdentityMigrator", + "poke_deposit", + types::PokeDeposit { who }, [ - 182u8, 54u8, 69u8, 68u8, 78u8, 76u8, 103u8, 79u8, 47u8, 136u8, 99u8, - 104u8, 128u8, 129u8, 249u8, 54u8, 214u8, 136u8, 97u8, 48u8, 178u8, - 42u8, 26u8, 27u8, 82u8, 24u8, 33u8, 77u8, 33u8, 27u8, 20u8, 127u8, + 42u8, 67u8, 168u8, 124u8, 75u8, 32u8, 143u8, 173u8, 14u8, 28u8, 76u8, + 35u8, 196u8, 255u8, 250u8, 33u8, 128u8, 159u8, 132u8, 124u8, 51u8, + 243u8, 166u8, 55u8, 208u8, 101u8, 188u8, 133u8, 36u8, 18u8, 119u8, + 146u8, ], ) } } } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The identity and all sub accounts were reaped for `who`."] + pub struct IdentityReaped { + pub who: ::subxt::utils::AccountId32, + } + impl ::subxt::events::StaticEvent for IdentityReaped { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "IdentityReaped"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + pub struct DepositUpdated { + pub who: ::subxt::utils::AccountId32, + pub identity: ::core::primitive::u128, + pub subs: ::core::primitive::u128, + } + impl ::subxt::events::StaticEvent for DepositUpdated { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "DepositUpdated"; + } + } } pub mod paras_sudo_wrapper { use super::{root_mod, runtime_types}; @@ -33766,7 +37117,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SudoQueueDownwardXcm { pub id: runtime_types::polkadot_parachain_primitives::primitives::Id, - pub xcm: ::std::boxed::Box, + pub xcm: ::std::boxed::Box, } impl ::subxt::blocks::StaticExtrinsic for SudoQueueDownwardXcm { const PALLET: &'static str = "ParasSudoWrapper"; @@ -33795,7 +37146,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] pub fn sudo_schedule_para_initialize( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -33812,7 +37167,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] pub fn sudo_schedule_para_cleanup( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -33828,7 +37183,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] pub fn sudo_schedule_parathread_upgrade( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -33845,7 +37200,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] pub fn sudo_schedule_parachain_downgrade( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -33862,25 +37217,30 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] pub fn sudo_queue_downward_xcm( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, - xcm: runtime_types::staging_xcm::VersionedXcm, + xcm: runtime_types::xcm::VersionedXcm, ) -> ::subxt::tx::Payload { ::subxt::tx::Payload::new_static( "ParasSudoWrapper", "sudo_queue_downward_xcm", types::SudoQueueDownwardXcm { id, xcm: ::std::boxed::Box::new(xcm) }, [ - 144u8, 179u8, 113u8, 39u8, 46u8, 58u8, 218u8, 220u8, 98u8, 232u8, - 121u8, 119u8, 127u8, 99u8, 52u8, 189u8, 232u8, 28u8, 233u8, 54u8, - 122u8, 206u8, 155u8, 7u8, 88u8, 167u8, 203u8, 251u8, 96u8, 156u8, 23u8, - 54u8, + 35u8, 59u8, 126u8, 248u8, 211u8, 246u8, 239u8, 67u8, 252u8, 100u8, + 231u8, 46u8, 197u8, 83u8, 150u8, 54u8, 215u8, 188u8, 76u8, 193u8, 60u8, + 38u8, 251u8, 162u8, 19u8, 15u8, 214u8, 51u8, 24u8, 2u8, 9u8, 116u8, ], ) } - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] pub fn sudo_establish_hrmp_channel( &self, sender: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -34006,7 +37366,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::assign_perm_parachain_slot`]."] + #[doc = "Assign a permanent parachain slot and immediately create a lease for it."] pub fn assign_perm_parachain_slot( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -34022,7 +37382,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::assign_temp_parachain_slot`]."] + #[doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] + #[doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] + #[doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] pub fn assign_temp_parachain_slot( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -34040,7 +37402,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_parachain_slot`]."] + #[doc = "Unassign a permanent or temporary parachain slot"] pub fn unassign_parachain_slot( &self, id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -34057,7 +37419,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_permanent_slots`]."] + #[doc = "Sets the storage value [`MaxPermanentSlots`]."] pub fn set_max_permanent_slots( &self, slots: ::core::primitive::u32, @@ -34073,7 +37435,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_temporary_slots`]."] + #[doc = "Sets the storage value [`MaxTemporarySlots`]."] pub fn set_max_temporary_slots( &self, slots: ::core::primitive::u32, @@ -34176,19 +37538,22 @@ pub mod api { pub struct StorageApi; impl StorageApi { #[doc = " Assigned permanent slots, with their start lease period, and duration."] - pub fn permanent_slots_iter( + pub fn permanent_slots( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::core::primitive::u32, ::core::primitive::u32), - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "AssignedSlots", "PermanentSlots", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 133u8, 179u8, 221u8, 222u8, 50u8, 75u8, 158u8, 137u8, 167u8, 190u8, 19u8, 237u8, 201u8, 44u8, 86u8, 64u8, 57u8, 61u8, 96u8, 112u8, 218u8, @@ -34198,22 +37563,19 @@ pub mod api { ) } #[doc = " Assigned permanent slots, with their start lease period, and duration."] - pub fn permanent_slots( + pub fn permanent_slots_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, (::core::primitive::u32, ::core::primitive::u32), - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "AssignedSlots", "PermanentSlots", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 133u8, 179u8, 221u8, 222u8, 50u8, 75u8, 158u8, 137u8, 167u8, 190u8, 19u8, 237u8, 201u8, 44u8, 86u8, 64u8, 57u8, 61u8, 96u8, 112u8, 218u8, @@ -34244,22 +37606,25 @@ pub mod api { ) } #[doc = " Assigned temporary slots."] - pub fn temporary_slots_iter( + pub fn temporary_slots( &self, + _0: impl ::std::borrow::Borrow< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::assigned_slots::ParachainTemporarySlot< ::subxt::utils::AccountId32, ::core::primitive::u32, >, - (), + ::subxt::storage::address::Yes, (), ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "AssignedSlots", "TemporarySlots", - vec![], + vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], [ 184u8, 245u8, 181u8, 90u8, 169u8, 232u8, 108u8, 3u8, 153u8, 4u8, 176u8, 170u8, 230u8, 163u8, 236u8, 111u8, 196u8, 218u8, 154u8, 125u8, 102u8, @@ -34269,25 +37634,22 @@ pub mod api { ) } #[doc = " Assigned temporary slots."] - pub fn temporary_slots( + pub fn temporary_slots_root( &self, - _0: impl ::std::borrow::Borrow< - runtime_types::polkadot_parachain_primitives::primitives::Id, - >, ) -> ::subxt::storage::address::Address< ::subxt::storage::address::StaticStorageMapKey, runtime_types::polkadot_runtime_common::assigned_slots::ParachainTemporarySlot< ::subxt::utils::AccountId32, ::core::primitive::u32, >, - ::subxt::storage::address::Yes, (), (), + ::subxt::storage::address::Yes, > { ::subxt::storage::address::Address::new_static( "AssignedSlots", "TemporarySlots", - vec![::subxt::storage::address::make_static_storage_map_key(_0.borrow())], + Vec::new(), [ 184u8, 245u8, 181u8, 90u8, 169u8, 232u8, 108u8, 3u8, 153u8, 4u8, 176u8, 170u8, 230u8, 163u8, 236u8, 111u8, 196u8, 218u8, 154u8, 125u8, 102u8, @@ -34483,7 +37845,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] pub fn register_validators( &self, validators: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -34500,7 +37864,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] pub fn deregister_validators( &self, validators: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -34732,7 +38098,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] pub fn control_auto_migration( &self, maybe_config: ::core::option::Option< @@ -34750,7 +38118,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] pub fn continue_migrate( &self, limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, @@ -34769,7 +38157,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub fn migrate_custom_top( &self, keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, @@ -34786,7 +38177,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub fn migrate_custom_child( &self, root: ::std::vec::Vec<::core::primitive::u8>, @@ -34804,7 +38200,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] pub fn set_signed_max_limits( &self, limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, @@ -34820,7 +38216,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] pub fn force_set_progress( &self, progress_top: runtime_types::pallet_state_trie_migration::pallet::Progress, @@ -35022,7 +38426,7 @@ pub mod api { #[doc = " - [`frame_support::storage::StorageDoubleMap`]: 96 byte"] #[doc = ""] #[doc = " For more info see"] - #[doc = " "] + #[doc = " "] pub fn max_key_len(&self) -> ::subxt::constants::Address<::core::primitive::u32> { ::subxt::constants::Address::new_static( "StateTrieMigration", @@ -35038,9 +38442,106 @@ pub mod api { } } } + pub mod root_testing { + use super::{root_mod, runtime_types}; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_root_testing::pallet::Call; + pub mod calls { + use super::{root_mod, runtime_types}; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct FillBlock { + pub ratio: runtime_types::sp_arithmetic::per_things::Perbill, + } + impl ::subxt::blocks::StaticExtrinsic for FillBlock { + const PALLET: &'static str = "RootTesting"; + const CALL: &'static str = "fill_block"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TriggerDefensive; + impl ::subxt::blocks::StaticExtrinsic for TriggerDefensive { + const PALLET: &'static str = "RootTesting"; + const CALL: &'static str = "trigger_defensive"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "A dispatch that will fill the block weight up to the given ratio."] + pub fn fill_block( + &self, + ratio: runtime_types::sp_arithmetic::per_things::Perbill, + ) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "RootTesting", + "fill_block", + types::FillBlock { ratio }, + [ + 164u8, 37u8, 43u8, 91u8, 125u8, 34u8, 208u8, 126u8, 67u8, 94u8, 184u8, + 240u8, 68u8, 208u8, 41u8, 206u8, 172u8, 95u8, 111u8, 115u8, 9u8, 250u8, + 163u8, 66u8, 240u8, 0u8, 237u8, 140u8, 87u8, 57u8, 162u8, 117u8, + ], + ) + } + pub fn trigger_defensive(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "RootTesting", + "trigger_defensive", + types::TriggerDefensive {}, + [ + 170u8, 234u8, 12u8, 158u8, 10u8, 171u8, 161u8, 144u8, 101u8, 67u8, + 150u8, 128u8, 105u8, 234u8, 223u8, 60u8, 241u8, 245u8, 112u8, 21u8, + 80u8, 216u8, 72u8, 147u8, 22u8, 125u8, 19u8, 200u8, 171u8, 153u8, 88u8, + 194u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_root_testing::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Event dispatched when the trigger_defensive extrinsic is called."] + pub struct DefensiveTestCall; + impl ::subxt::events::StaticEvent for DefensiveTestCall { + const PALLET: &'static str = "RootTesting"; + const EVENT: &'static str = "DefensiveTestCall"; + } + } + } pub mod sudo { use super::{root_mod, runtime_types}; - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub type Error = runtime_types::pallet_sudo::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_sudo::pallet::Call; @@ -35119,10 +38620,25 @@ pub mod api { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "sudo_as"; } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RemoveKey; + impl ::subxt::blocks::StaticExtrinsic for RemoveKey { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "remove_key"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] pub fn sudo( &self, call: runtime_types::rococo_runtime::RuntimeCall, @@ -35132,14 +38648,17 @@ pub mod api { "sudo", types::Sudo { call: ::std::boxed::Box::new(call) }, [ - 66u8, 222u8, 170u8, 253u8, 64u8, 12u8, 159u8, 168u8, 74u8, 227u8, - 128u8, 58u8, 177u8, 239u8, 116u8, 109u8, 203u8, 179u8, 75u8, 51u8, - 158u8, 121u8, 152u8, 91u8, 18u8, 127u8, 214u8, 243u8, 251u8, 135u8, - 23u8, 92u8, + 97u8, 100u8, 144u8, 48u8, 16u8, 1u8, 34u8, 229u8, 117u8, 124u8, 207u8, + 45u8, 56u8, 17u8, 86u8, 27u8, 227u8, 175u8, 40u8, 180u8, 48u8, 95u8, + 8u8, 138u8, 13u8, 127u8, 19u8, 167u8, 41u8, 21u8, 205u8, 63u8, ], ) } - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn sudo_unchecked_weight( &self, call: runtime_types::rococo_runtime::RuntimeCall, @@ -35150,13 +38669,14 @@ pub mod api { "sudo_unchecked_weight", types::SudoUncheckedWeight { call: ::std::boxed::Box::new(call), weight }, [ - 41u8, 239u8, 123u8, 30u8, 171u8, 220u8, 201u8, 166u8, 17u8, 108u8, - 64u8, 84u8, 229u8, 170u8, 117u8, 32u8, 145u8, 223u8, 140u8, 74u8, 50u8, - 109u8, 156u8, 231u8, 75u8, 187u8, 43u8, 73u8, 4u8, 195u8, 17u8, 246u8, + 19u8, 20u8, 129u8, 75u8, 99u8, 251u8, 108u8, 195u8, 81u8, 253u8, 152u8, + 102u8, 13u8, 207u8, 15u8, 88u8, 49u8, 198u8, 10u8, 34u8, 63u8, 41u8, + 242u8, 154u8, 161u8, 204u8, 237u8, 248u8, 173u8, 119u8, 199u8, 239u8, ], ) } - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] pub fn set_key( &self, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -35172,7 +38692,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn sudo_as( &self, who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -35183,10 +38706,25 @@ pub mod api { "sudo_as", types::SudoAs { who, call: ::std::boxed::Box::new(call) }, [ - 150u8, 181u8, 117u8, 217u8, 29u8, 19u8, 156u8, 245u8, 173u8, 121u8, - 9u8, 239u8, 163u8, 27u8, 78u8, 62u8, 130u8, 154u8, 119u8, 23u8, 168u8, - 215u8, 224u8, 144u8, 176u8, 84u8, 75u8, 163u8, 228u8, 20u8, 134u8, - 253u8, + 130u8, 122u8, 138u8, 196u8, 206u8, 231u8, 19u8, 25u8, 255u8, 200u8, + 56u8, 108u8, 197u8, 16u8, 236u8, 19u8, 60u8, 28u8, 230u8, 90u8, 134u8, + 15u8, 168u8, 46u8, 222u8, 202u8, 80u8, 36u8, 126u8, 96u8, 86u8, 57u8, + ], + ) + } + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] + pub fn remove_key(&self) -> ::subxt::tx::Payload { + ::subxt::tx::Payload::new_static( + "Sudo", + "remove_key", + types::RemoveKey {}, + [ + 133u8, 253u8, 54u8, 175u8, 202u8, 239u8, 5u8, 198u8, 180u8, 138u8, + 25u8, 28u8, 109u8, 40u8, 30u8, 56u8, 126u8, 100u8, 52u8, 205u8, 250u8, + 191u8, 61u8, 195u8, 172u8, 142u8, 184u8, 239u8, 247u8, 10u8, 211u8, + 79u8, ], ) } @@ -35206,7 +38744,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A sudo just took place. \\[result\\]"] + #[doc = "A sudo call just took place."] pub struct Sudid { pub sudo_result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, @@ -35225,9 +38763,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The \\[sudoer\\] just switched identity; the old key is supplied if one existed."] + #[doc = "The sudo key has been updated."] pub struct KeyChanged { - pub old_sudoer: ::core::option::Option<::subxt::utils::AccountId32>, + pub old: ::core::option::Option<::subxt::utils::AccountId32>, + pub new: ::subxt::utils::AccountId32, } impl ::subxt::events::StaticEvent for KeyChanged { const PALLET: &'static str = "Sudo"; @@ -35243,7 +38782,23 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "A sudo just took place. \\[result\\]"] + #[doc = "The key was permanently removed."] + pub struct KeyRemoved; + impl ::subxt::events::StaticEvent for KeyRemoved { + const PALLET: &'static str = "Sudo"; + const EVENT: &'static str = "KeyRemoved"; + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] pub struct SudoAsDone { pub sudo_result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, @@ -35439,6 +38994,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PostDispatchInfo { + pub actual_weight: + ::core::option::Option, + pub pays_fee: runtime_types::frame_support::dispatch::Pays, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum RawOrigin<_0> { #[codec(index = 0)] Root, @@ -35487,7 +39057,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Bounded<_0> { + pub enum Bounded<_0, _1> { #[codec(index = 0)] Legacy { hash: ::subxt::utils::H256, @@ -35503,11 +39073,45 @@ pub mod api { hash: ::subxt::utils::H256, len: ::core::primitive::u32, }, - __Ignore(::core::marker::PhantomData<_0>), + __Ignore(::core::marker::PhantomData<(_0, _1)>), + } + } + pub mod schedule { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DispatchTime<_0> { + #[codec(index = 0)] + At(_0), + #[codec(index = 1)] + After(_0), } } pub mod tokens { use super::runtime_types; + pub mod fungible { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct HoldConsideration(pub ::core::primitive::u128); + } pub mod misc { use super::runtime_types; #[derive( @@ -35713,19 +39317,24 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] remark { remark: ::std::vec::Vec<::core::primitive::u8> }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] set_heap_pages { pages: ::core::primitive::u64 }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] set_code { code: ::std::vec::Vec<::core::primitive::u8> }, #[codec(index = 3)] - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] set_code_without_checks { code: ::std::vec::Vec<::core::primitive::u8> }, #[codec(index = 4)] - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] set_storage { items: ::std::vec::Vec<( ::std::vec::Vec<::core::primitive::u8>, @@ -35733,17 +39342,47 @@ pub mod api { )>, }, #[codec(index = 5)] - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] kill_storage { keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>> }, #[codec(index = 6)] - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] kill_prefix { prefix: ::std::vec::Vec<::core::primitive::u8>, subkeys: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] remark_with_event { remark: ::std::vec::Vec<::core::primitive::u8> }, + #[codec(index = 9)] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] + authorize_upgrade { code_hash: ::subxt::utils::H256 }, + #[codec(index = 10)] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] + authorize_upgrade_without_checks { code_hash: ::subxt::utils::H256 }, + #[codec(index = 11)] + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] + apply_authorized_upgrade { code: ::std::vec::Vec<::core::primitive::u8> }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -35779,6 +39418,15 @@ pub mod api { #[codec(index = 5)] #[doc = "The origin filter prevent the call to be dispatched."] CallFiltered, + #[codec(index = 6)] + #[doc = "A multi-block migration is ongoing and prevents the current code from being replaced."] + MultiBlockMigrationsOngoing, + #[codec(index = 7)] + #[doc = "No upgrade authorized."] + NothingAuthorized, + #[codec(index = 8)] + #[doc = "The submitted code is not authorized."] + Unauthorized, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -35815,6 +39463,12 @@ pub mod api { #[codec(index = 5)] #[doc = "On on-chain remark happened."] Remarked { sender: ::subxt::utils::AccountId32, hash: ::subxt::utils::H256 }, + #[codec(index = 6)] + #[doc = "An upgrade was authorized."] + UpgradeAuthorized { + code_hash: ::subxt::utils::H256, + check_version: ::core::primitive::bool, + }, } } #[derive( @@ -35844,6 +39498,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CodeUpgradeAuthorization { + pub code_hash: ::subxt::utils::H256, + pub check_version: ::core::primitive::bool, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct EventRecord<_0, _1> { pub phase: runtime_types::frame_system::Phase, pub event: _0, @@ -35883,6 +39551,110 @@ pub mod api { Initialization, } } + pub mod pallet_asset_rate { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] + create { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + #[codec(index = 1)] + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] + update { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + #[codec(index = 2)] + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] + remove { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The given asset ID is unknown."] + UnknownAssetKind, + #[codec(index = 1)] + #[doc = "The given asset ID already has an assigned conversion rate and cannot be re-created."] + AlreadyExists, + #[codec(index = 2)] + #[doc = "Overflow ocurred when calculating the inverse rate."] + Overflow, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + AssetRateCreated { + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + #[codec(index = 1)] + AssetRateRemoved { + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + }, + #[codec(index = 2)] + AssetRateUpdated { + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + old: runtime_types::sp_arithmetic::fixed_point::FixedU128, + new: runtime_types::sp_arithmetic::fixed_point::FixedU128, + }, + } + } + } pub mod pallet_babe { use super::runtime_types; pub mod pallet { @@ -35900,7 +39672,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -35913,7 +39688,14 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -35926,7 +39708,10 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] plan_config_change { config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, }, @@ -35975,23 +39760,21 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] transfer_allow_death { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, - #[codec(index = 1)] - #[doc = "See [`Pallet::set_balance_deprecated`]."] - set_balance_deprecated { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - new_free: ::core::primitive::u128, - #[codec(compact)] - old_reserved: ::core::primitive::u128, - }, #[codec(index = 2)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] force_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -35999,41 +39782,75 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] transfer_keep_alive { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] transfer_all { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, keep_alive: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] force_unreserve { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, amount: ::core::primitive::u128, }, #[codec(index = 6)] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] upgrade_accounts { who: ::std::vec::Vec<::subxt::utils::AccountId32> }, - #[codec(index = 7)] - #[doc = "See [`Pallet::transfer`]."] - transfer { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - value: ::core::primitive::u128, - }, #[codec(index = 8)] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] force_set_balance { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] new_free: ::core::primitive::u128, }, + #[codec(index = 9)] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + force_adjust_total_issuance { + direction: runtime_types::pallet_balances::types::AdjustmentDirection, + #[codec(compact)] + delta: ::core::primitive::u128, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -36048,23 +39865,21 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call2 { #[codec(index = 0)] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] transfer_allow_death { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, - #[codec(index = 1)] - #[doc = "See [`Pallet::set_balance_deprecated`]."] - set_balance_deprecated { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - new_free: ::core::primitive::u128, - #[codec(compact)] - old_reserved: ::core::primitive::u128, - }, #[codec(index = 2)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] force_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -36072,41 +39887,75 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] transfer_keep_alive { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] transfer_all { dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, keep_alive: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] force_unreserve { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, amount: ::core::primitive::u128, }, #[codec(index = 6)] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] upgrade_accounts { who: ::std::vec::Vec<::subxt::utils::AccountId32> }, - #[codec(index = 7)] - #[doc = "See [`Pallet::transfer`]."] - transfer { - dest: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - value: ::core::primitive::u128, - }, #[codec(index = 8)] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] force_set_balance { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] new_free: ::core::primitive::u128, }, + #[codec(index = 9)] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + force_adjust_total_issuance { + direction: runtime_types::pallet_balances::types::AdjustmentDirection, + #[codec(compact)] + delta: ::core::primitive::u128, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -36145,11 +39994,17 @@ pub mod api { #[doc = "Number of named reserves exceed `MaxReserves`."] TooManyReserves, #[codec(index = 8)] - #[doc = "Number of holds exceed `MaxHolds`."] + #[doc = "Number of holds exceed `VariantCountOf`."] TooManyHolds, #[codec(index = 9)] #[doc = "Number of freezes exceed `MaxFreezes`."] TooManyFreezes, + #[codec(index = 10)] + #[doc = "The issuance cannot be modified since it is already deactivated."] + IssuanceDeactivated, + #[codec(index = 11)] + #[doc = "The delta cannot be zero."] + DeltaZero, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -36188,11 +40043,17 @@ pub mod api { #[doc = "Number of named reserves exceed `MaxReserves`."] TooManyReserves, #[codec(index = 8)] - #[doc = "Number of holds exceed `MaxHolds`."] + #[doc = "Number of holds exceed `VariantCountOf`."] TooManyHolds, #[codec(index = 9)] #[doc = "Number of freezes exceed `MaxFreezes`."] TooManyFreezes, + #[codec(index = 10)] + #[doc = "The issuance cannot be modified since it is already deactivated."] + IssuanceDeactivated, + #[codec(index = 11)] + #[doc = "The delta cannot be zero."] + DeltaZero, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -36287,6 +40148,12 @@ pub mod api { #[codec(index = 20)] #[doc = "Some balance was thawed."] Thawed { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 21)] + #[doc = "The `TotalIssuance` was forcefully changed."] + TotalIssuanceForced { + old: ::core::primitive::u128, + new: ::core::primitive::u128, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -36381,6 +40248,12 @@ pub mod api { #[codec(index = 20)] #[doc = "Some balance was thawed."] Thawed { who: ::subxt::utils::AccountId32, amount: ::core::primitive::u128 }, + #[codec(index = 21)] + #[doc = "The `TotalIssuance` was forcefully changed."] + TotalIssuanceForced { + old: ::core::primitive::u128, + new: ::core::primitive::u128, + }, } } pub mod types { @@ -36411,6 +40284,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AdjustmentDirection { + #[codec(index = 0)] + Increase, + #[codec(index = 1)] + Decrease, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct BalanceLock<_0> { pub id: [::core::primitive::u8; 8usize], pub amount: _0, @@ -36493,7 +40382,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< @@ -36505,7 +40397,15 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< @@ -36516,6 +40416,12 @@ pub mod api { >, key_owner_proof: runtime_types::sp_session::MembershipProof, }, + #[codec(index = 2)] + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] + set_new_genesis { delay_in_blocks: ::core::primitive::u32 }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -36538,6 +40444,9 @@ pub mod api { #[codec(index = 2)] #[doc = "A given equivocation report is valid but already previously reported."] DuplicateOffenceReport, + #[codec(index = 3)] + #[doc = "Submitted configuration is invalid."] + InvalidConfiguration, } } } @@ -36558,20 +40467,42 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] propose_bounty { #[codec(compact)] value: ::core::primitive::u128, description: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] approve_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] propose_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -36580,38 +40511,92 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] unassign_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] accept_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] award_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] claim_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] close_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] extend_bounty_expiry { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -36705,6 +40690,24 @@ pub mod api { #[codec(index = 6)] #[doc = "A bounty expiry is extended."] BountyExtended { index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "A bounty is approved."] + BountyApproved { index: ::core::primitive::u32 }, + #[codec(index = 8)] + #[doc = "A bounty curator is proposed."] + CuratorProposed { + bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::AccountId32, + }, + #[codec(index = 9)] + #[doc = "A bounty curator is unassigned."] + CuratorUnassigned { bounty_id: ::core::primitive::u32 }, + #[codec(index = 10)] + #[doc = "A bounty curator is accepted."] + CuratorAccepted { + bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::AccountId32, + }, } } #[derive( @@ -36750,9 +40753,9 @@ pub mod api { PendingPayout { curator: _0, beneficiary: _0, unlock_at: _1 }, } } - pub mod pallet_child_bounties { + pub mod pallet_broker { use super::runtime_types; - pub mod pallet { + pub mod coretime_interface { use super::runtime_types; #[derive( :: subxt :: ext :: codec :: Decode, @@ -36764,166 +40767,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { + pub enum CoreAssignment { #[codec(index = 0)] - #[doc = "See [`Pallet::add_child_bounty`]."] - add_child_bounty { - #[codec(compact)] - parent_bounty_id: ::core::primitive::u32, - #[codec(compact)] - value: ::core::primitive::u128, - description: ::std::vec::Vec<::core::primitive::u8>, - }, + Idle, #[codec(index = 1)] - #[doc = "See [`Pallet::propose_curator`]."] - propose_curator { - #[codec(compact)] - parent_bounty_id: ::core::primitive::u32, - #[codec(compact)] - child_bounty_id: ::core::primitive::u32, - curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - fee: ::core::primitive::u128, - }, + Pool, #[codec(index = 2)] - #[doc = "See [`Pallet::accept_curator`]."] - accept_curator { - #[codec(compact)] - parent_bounty_id: ::core::primitive::u32, - #[codec(compact)] - child_bounty_id: ::core::primitive::u32, - }, - #[codec(index = 3)] - #[doc = "See [`Pallet::unassign_curator`]."] - unassign_curator { - #[codec(compact)] - parent_bounty_id: ::core::primitive::u32, - #[codec(compact)] - child_bounty_id: ::core::primitive::u32, - }, - #[codec(index = 4)] - #[doc = "See [`Pallet::award_child_bounty`]."] - award_child_bounty { - #[codec(compact)] - parent_bounty_id: ::core::primitive::u32, - #[codec(compact)] - child_bounty_id: ::core::primitive::u32, - beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, - #[codec(index = 5)] - #[doc = "See [`Pallet::claim_child_bounty`]."] - claim_child_bounty { - #[codec(compact)] - parent_bounty_id: ::core::primitive::u32, - #[codec(compact)] - child_bounty_id: ::core::primitive::u32, - }, - #[codec(index = 6)] - #[doc = "See [`Pallet::close_child_bounty`]."] - close_child_bounty { - #[codec(compact)] - parent_bounty_id: ::core::primitive::u32, - #[codec(compact)] - child_bounty_id: ::core::primitive::u32, - }, + Task(::core::primitive::u32), } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "The parent bounty is not in active state."] - ParentBountyNotActive, - #[codec(index = 1)] - #[doc = "The bounty balance is not enough to add new child-bounty."] - InsufficientBountyBalance, - #[codec(index = 2)] - #[doc = "Number of child bounties exceeds limit `MaxActiveChildBountyCount`."] - TooManyChildBounties, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "A child-bounty is added."] - Added { index: ::core::primitive::u32, child_index: ::core::primitive::u32 }, - #[codec(index = 1)] - #[doc = "A child-bounty is awarded to a beneficiary."] - Awarded { - index: ::core::primitive::u32, - child_index: ::core::primitive::u32, - beneficiary: ::subxt::utils::AccountId32, - }, - #[codec(index = 2)] - #[doc = "A child-bounty is claimed by beneficiary."] - Claimed { - index: ::core::primitive::u32, - child_index: ::core::primitive::u32, - payout: ::core::primitive::u128, - beneficiary: ::subxt::utils::AccountId32, - }, - #[codec(index = 3)] - #[doc = "A child-bounty is cancelled."] - Canceled { index: ::core::primitive::u32, child_index: ::core::primitive::u32 }, - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ChildBounty<_0, _1, _2> { - pub parent_bounty: ::core::primitive::u32, - pub value: _1, - pub fee: _1, - pub curator_deposit: _1, - pub status: runtime_types::pallet_child_bounties::ChildBountyStatus<_0, _2>, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum ChildBountyStatus<_0, _1> { - #[codec(index = 0)] - Added, - #[codec(index = 1)] - CuratorProposed { curator: _0 }, - #[codec(index = 2)] - Active { curator: _0 }, - #[codec(index = 3)] - PendingPayout { curator: _0, beneficiary: _0, unlock_at: _1 }, } } - pub mod pallet_collective { + pub mod pallet_child_bounties { use super::runtime_types; pub mod pallet { use super::runtime_types; @@ -36940,105 +40794,200 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::set_members`]."] - set_members { - new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, - prime: ::core::option::Option<::subxt::utils::AccountId32>, - old_count: ::core::primitive::u32, - }, - #[codec(index = 1)] - #[doc = "See [`Pallet::execute`]."] - execute { - proposal: ::std::boxed::Box, + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] + add_child_bounty { + #[codec(compact)] + parent_bounty_id: ::core::primitive::u32, #[codec(compact)] - length_bound: ::core::primitive::u32, + value: ::core::primitive::u128, + description: ::std::vec::Vec<::core::primitive::u8>, }, - #[codec(index = 2)] - #[doc = "See [`Pallet::propose`]."] - propose { + #[codec(index = 1)] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] + propose_curator { #[codec(compact)] - threshold: ::core::primitive::u32, - proposal: ::std::boxed::Box, + parent_bounty_id: ::core::primitive::u32, #[codec(compact)] - length_bound: ::core::primitive::u32, - }, - #[codec(index = 3)] - #[doc = "See [`Pallet::vote`]."] - vote { - proposal: ::subxt::utils::H256, + child_bounty_id: ::core::primitive::u32, + curator: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, #[codec(compact)] - index: ::core::primitive::u32, - approve: ::core::primitive::bool, + fee: ::core::primitive::u128, }, - #[codec(index = 5)] - #[doc = "See [`Pallet::disapprove_proposal`]."] - disapprove_proposal { proposal_hash: ::subxt::utils::H256 }, - #[codec(index = 6)] - #[doc = "See [`Pallet::close`]."] - close { - proposal_hash: ::subxt::utils::H256, + #[codec(index = 2)] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + accept_curator { #[codec(compact)] - index: ::core::primitive::u32, - proposal_weight_bound: runtime_types::sp_weights::weight_v2::Weight, + parent_bounty_id: ::core::primitive::u32, #[codec(compact)] - length_bound: ::core::primitive::u32, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call2 { - #[codec(index = 0)] - #[doc = "See [`Pallet::set_members`]."] - set_members { - new_members: ::std::vec::Vec<::subxt::utils::AccountId32>, - prime: ::core::option::Option<::subxt::utils::AccountId32>, - old_count: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, }, - #[codec(index = 1)] - #[doc = "See [`Pallet::execute`]."] - execute { - proposal: ::std::boxed::Box, + #[codec(index = 3)] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + unassign_curator { #[codec(compact)] - length_bound: ::core::primitive::u32, + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, }, - #[codec(index = 2)] - #[doc = "See [`Pallet::propose`]."] - propose { + #[codec(index = 4)] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] + award_child_bounty { #[codec(compact)] - threshold: ::core::primitive::u32, - proposal: ::std::boxed::Box, + parent_bounty_id: ::core::primitive::u32, #[codec(compact)] - length_bound: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, + beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, - #[codec(index = 3)] - #[doc = "See [`Pallet::vote`]."] - vote { - proposal: ::subxt::utils::H256, + #[codec(index = 5)] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + claim_child_bounty { #[codec(compact)] - index: ::core::primitive::u32, - approve: ::core::primitive::bool, + parent_bounty_id: ::core::primitive::u32, + #[codec(compact)] + child_bounty_id: ::core::primitive::u32, }, - #[codec(index = 5)] - #[doc = "See [`Pallet::disapprove_proposal`]."] - disapprove_proposal { proposal_hash: ::subxt::utils::H256 }, #[codec(index = 6)] - #[doc = "See [`Pallet::close`]."] - close { - proposal_hash: ::subxt::utils::H256, + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + close_child_bounty { #[codec(compact)] - index: ::core::primitive::u32, - proposal_weight_bound: runtime_types::sp_weights::weight_v2::Weight, + parent_bounty_id: ::core::primitive::u32, #[codec(compact)] - length_bound: ::core::primitive::u32, + child_bounty_id: ::core::primitive::u32, }, } #[derive( @@ -37054,84 +41003,14 @@ pub mod api { #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Account is not a member"] - NotMember, - #[codec(index = 1)] - #[doc = "Duplicate proposals not allowed"] - DuplicateProposal, - #[codec(index = 2)] - #[doc = "Proposal must exist"] - ProposalMissing, - #[codec(index = 3)] - #[doc = "Mismatched index"] - WrongIndex, - #[codec(index = 4)] - #[doc = "Duplicate vote ignored"] - DuplicateVote, - #[codec(index = 5)] - #[doc = "Members are already initialized!"] - AlreadyInitialized, - #[codec(index = 6)] - #[doc = "The close call was made too early, before the end of the voting."] - TooEarly, - #[codec(index = 7)] - #[doc = "There can only be a maximum of `MaxProposals` active proposals."] - TooManyProposals, - #[codec(index = 8)] - #[doc = "The given weight bound for the proposal was too low."] - WrongProposalWeight, - #[codec(index = 9)] - #[doc = "The given length bound for the proposal was too low."] - WrongProposalLength, - #[codec(index = 10)] - #[doc = "Prime account is not a member"] - PrimeAccountNotMember, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error2 { - #[codec(index = 0)] - #[doc = "Account is not a member"] - NotMember, + #[doc = "The parent bounty is not in active state."] + ParentBountyNotActive, #[codec(index = 1)] - #[doc = "Duplicate proposals not allowed"] - DuplicateProposal, + #[doc = "The bounty balance is not enough to add new child-bounty."] + InsufficientBountyBalance, #[codec(index = 2)] - #[doc = "Proposal must exist"] - ProposalMissing, - #[codec(index = 3)] - #[doc = "Mismatched index"] - WrongIndex, - #[codec(index = 4)] - #[doc = "Duplicate vote ignored"] - DuplicateVote, - #[codec(index = 5)] - #[doc = "Members are already initialized!"] - AlreadyInitialized, - #[codec(index = 6)] - #[doc = "The close call was made too early, before the end of the voting."] - TooEarly, - #[codec(index = 7)] - #[doc = "There can only be a maximum of `MaxProposals` active proposals."] - TooManyProposals, - #[codec(index = 8)] - #[doc = "The given weight bound for the proposal was too low."] - WrongProposalWeight, - #[codec(index = 9)] - #[doc = "The given length bound for the proposal was too low."] - WrongProposalLength, - #[codec(index = 10)] - #[doc = "Prime account is not a member"] - PrimeAccountNotMember, + #[doc = "Number of child bounties exceeds limit `MaxActiveChildBountyCount`."] + TooManyChildBounties, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -37146,110 +41025,26 @@ pub mod api { #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] - #[doc = "A motion (given hash) has been proposed (by given account) with a threshold (given"] - #[doc = "`MemberCount`)."] - Proposed { - account: ::subxt::utils::AccountId32, - proposal_index: ::core::primitive::u32, - proposal_hash: ::subxt::utils::H256, - threshold: ::core::primitive::u32, - }, + #[doc = "A child-bounty is added."] + Added { index: ::core::primitive::u32, child_index: ::core::primitive::u32 }, #[codec(index = 1)] - #[doc = "A motion (given hash) has been voted on by given account, leaving"] - #[doc = "a tally (yes votes and no votes given respectively as `MemberCount`)."] - Voted { - account: ::subxt::utils::AccountId32, - proposal_hash: ::subxt::utils::H256, - voted: ::core::primitive::bool, - yes: ::core::primitive::u32, - no: ::core::primitive::u32, + #[doc = "A child-bounty is awarded to a beneficiary."] + Awarded { + index: ::core::primitive::u32, + child_index: ::core::primitive::u32, + beneficiary: ::subxt::utils::AccountId32, }, #[codec(index = 2)] - #[doc = "A motion was approved by the required threshold."] - Approved { proposal_hash: ::subxt::utils::H256 }, - #[codec(index = 3)] - #[doc = "A motion was not approved by the required threshold."] - Disapproved { proposal_hash: ::subxt::utils::H256 }, - #[codec(index = 4)] - #[doc = "A motion was executed; result will be `Ok` if it returned without error."] - Executed { - proposal_hash: ::subxt::utils::H256, - result: - ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, - }, - #[codec(index = 5)] - #[doc = "A single member did some action; result will be `Ok` if it returned without error."] - MemberExecuted { - proposal_hash: ::subxt::utils::H256, - result: - ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, - }, - #[codec(index = 6)] - #[doc = "A proposal was closed because its threshold was reached or after its duration was up."] - Closed { - proposal_hash: ::subxt::utils::H256, - yes: ::core::primitive::u32, - no: ::core::primitive::u32, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event2 { - #[codec(index = 0)] - #[doc = "A motion (given hash) has been proposed (by given account) with a threshold (given"] - #[doc = "`MemberCount`)."] - Proposed { - account: ::subxt::utils::AccountId32, - proposal_index: ::core::primitive::u32, - proposal_hash: ::subxt::utils::H256, - threshold: ::core::primitive::u32, - }, - #[codec(index = 1)] - #[doc = "A motion (given hash) has been voted on by given account, leaving"] - #[doc = "a tally (yes votes and no votes given respectively as `MemberCount`)."] - Voted { - account: ::subxt::utils::AccountId32, - proposal_hash: ::subxt::utils::H256, - voted: ::core::primitive::bool, - yes: ::core::primitive::u32, - no: ::core::primitive::u32, + #[doc = "A child-bounty is claimed by beneficiary."] + Claimed { + index: ::core::primitive::u32, + child_index: ::core::primitive::u32, + payout: ::core::primitive::u128, + beneficiary: ::subxt::utils::AccountId32, }, - #[codec(index = 2)] - #[doc = "A motion was approved by the required threshold."] - Approved { proposal_hash: ::subxt::utils::H256 }, #[codec(index = 3)] - #[doc = "A motion was not approved by the required threshold."] - Disapproved { proposal_hash: ::subxt::utils::H256 }, - #[codec(index = 4)] - #[doc = "A motion was executed; result will be `Ok` if it returned without error."] - Executed { - proposal_hash: ::subxt::utils::H256, - result: - ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, - }, - #[codec(index = 5)] - #[doc = "A single member did some action; result will be `Ok` if it returned without error."] - MemberExecuted { - proposal_hash: ::subxt::utils::H256, - result: - ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, - }, - #[codec(index = 6)] - #[doc = "A proposal was closed because its threshold was reached or after its duration was up."] - Closed { - proposal_hash: ::subxt::utils::H256, - yes: ::core::primitive::u32, - no: ::core::primitive::u32, - }, + #[doc = "A child-bounty is cancelled."] + Canceled { index: ::core::primitive::u32, child_index: ::core::primitive::u32 }, } } #[derive( @@ -37262,13 +41057,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum RawOrigin<_0> { - #[codec(index = 0)] - Members(::core::primitive::u32, ::core::primitive::u32), - #[codec(index = 1)] - Member(_0), - #[codec(index = 2)] - _Phantom, + pub struct ChildBounty<_0, _1, _2> { + pub parent_bounty: ::core::primitive::u32, + pub value: _1, + pub fee: _1, + pub curator_deposit: _1, + pub status: runtime_types::pallet_child_bounties::ChildBountyStatus<_0, _2>, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -37280,15 +41074,18 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Votes<_0, _1> { - pub index: ::core::primitive::u32, - pub threshold: ::core::primitive::u32, - pub ayes: ::std::vec::Vec<_0>, - pub nays: ::std::vec::Vec<_0>, - pub end: _1, + pub enum ChildBountyStatus<_0, _1> { + #[codec(index = 0)] + Added, + #[codec(index = 1)] + CuratorProposed { curator: _0 }, + #[codec(index = 2)] + Active { curator: _0 }, + #[codec(index = 3)] + PendingPayout { curator: _0, beneficiary: _0, unlock_at: _1 }, } } - pub mod pallet_democracy { + pub mod pallet_conviction_voting { use super::runtime_types; pub mod conviction { use super::runtime_types; @@ -37334,111 +41131,137 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::propose`]."] - propose { - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - #[codec(compact)] - value: ::core::primitive::u128, - }, - #[codec(index = 1)] - #[doc = "See [`Pallet::second`]."] - second { - #[codec(compact)] - proposal: ::core::primitive::u32, - }, - #[codec(index = 2)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] vote { #[codec(compact)] - ref_index: ::core::primitive::u32, - vote: runtime_types::pallet_democracy::vote::AccountVote< + poll_index: ::core::primitive::u32, + vote: runtime_types::pallet_conviction_voting::vote::AccountVote< ::core::primitive::u128, >, }, - #[codec(index = 3)] - #[doc = "See [`Pallet::emergency_cancel`]."] - emergency_cancel { ref_index: ::core::primitive::u32 }, - #[codec(index = 4)] - #[doc = "See [`Pallet::external_propose`]."] - external_propose { - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - }, - #[codec(index = 5)] - #[doc = "See [`Pallet::external_propose_majority`]."] - external_propose_majority { - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - }, - #[codec(index = 6)] - #[doc = "See [`Pallet::external_propose_default`]."] - external_propose_default { - proposal: runtime_types::frame_support::traits::preimages::Bounded< - runtime_types::rococo_runtime::RuntimeCall, - >, - }, - #[codec(index = 7)] - #[doc = "See [`Pallet::fast_track`]."] - fast_track { - proposal_hash: ::subxt::utils::H256, - voting_period: ::core::primitive::u32, - delay: ::core::primitive::u32, - }, - #[codec(index = 8)] - #[doc = "See [`Pallet::veto_external`]."] - veto_external { proposal_hash: ::subxt::utils::H256 }, - #[codec(index = 9)] - #[doc = "See [`Pallet::cancel_referendum`]."] - cancel_referendum { - #[codec(compact)] - ref_index: ::core::primitive::u32, - }, - #[codec(index = 10)] - #[doc = "See [`Pallet::delegate`]."] + #[codec(index = 1)] + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] delegate { + class: ::core::primitive::u16, to: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - conviction: runtime_types::pallet_democracy::conviction::Conviction, + conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, balance: ::core::primitive::u128, }, - #[codec(index = 11)] - #[doc = "See [`Pallet::undelegate`]."] - undelegate, - #[codec(index = 12)] - #[doc = "See [`Pallet::clear_public_proposals`]."] - clear_public_proposals, - #[codec(index = 13)] - #[doc = "See [`Pallet::unlock`]."] - unlock { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()> }, - #[codec(index = 14)] - #[doc = "See [`Pallet::remove_vote`]."] - remove_vote { index: ::core::primitive::u32 }, - #[codec(index = 15)] - #[doc = "See [`Pallet::remove_other_vote`]."] - remove_other_vote { + #[codec(index = 2)] + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] + undelegate { class: ::core::primitive::u16 }, + #[codec(index = 3)] + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] + unlock { + class: ::core::primitive::u16, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - index: ::core::primitive::u32, - }, - #[codec(index = 16)] - #[doc = "See [`Pallet::blacklist`]."] - blacklist { - proposal_hash: ::subxt::utils::H256, - maybe_ref_index: ::core::option::Option<::core::primitive::u32>, }, - #[codec(index = 17)] - #[doc = "See [`Pallet::cancel_proposal`]."] - cancel_proposal { - #[codec(compact)] - prop_index: ::core::primitive::u32, + #[codec(index = 4)] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] + remove_vote { + class: ::core::option::Option<::core::primitive::u16>, + index: ::core::primitive::u32, }, - #[codec(index = 18)] - #[doc = "See [`Pallet::set_metadata`]."] - set_metadata { - owner: runtime_types::pallet_democracy::types::MetadataOwner, - maybe_hash: ::core::option::Option<::subxt::utils::H256>, + #[codec(index = 5)] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] + remove_other_vote { + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + class: ::core::primitive::u16, + index: ::core::primitive::u32, }, } #[derive( @@ -37454,78 +41277,42 @@ pub mod api { #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Value too low"] - ValueLow, + #[doc = "Poll is not ongoing."] + NotOngoing, #[codec(index = 1)] - #[doc = "Proposal does not exist"] - ProposalMissing, - #[codec(index = 2)] - #[doc = "Cannot cancel the same proposal twice"] - AlreadyCanceled, - #[codec(index = 3)] - #[doc = "Proposal already made"] - DuplicateProposal, - #[codec(index = 4)] - #[doc = "Proposal still blacklisted"] - ProposalBlacklisted, - #[codec(index = 5)] - #[doc = "Next external proposal not simple majority"] - NotSimpleMajority, - #[codec(index = 6)] - #[doc = "Invalid hash"] - InvalidHash, - #[codec(index = 7)] - #[doc = "No external proposal"] - NoProposal, - #[codec(index = 8)] - #[doc = "Identity may not veto a proposal twice"] - AlreadyVetoed, - #[codec(index = 9)] - #[doc = "Vote given for invalid referendum"] - ReferendumInvalid, - #[codec(index = 10)] - #[doc = "No proposals waiting"] - NoneWaiting, - #[codec(index = 11)] - #[doc = "The given account did not vote on the referendum."] + #[doc = "The given account did not vote on the poll."] NotVoter, - #[codec(index = 12)] + #[codec(index = 2)] #[doc = "The actor has no permission to conduct the action."] NoPermission, - #[codec(index = 13)] + #[codec(index = 3)] + #[doc = "The actor has no permission to conduct the action right now but will do in the future."] + NoPermissionYet, + #[codec(index = 4)] #[doc = "The account is already delegating."] AlreadyDelegating, - #[codec(index = 14)] + #[codec(index = 5)] + #[doc = "The account currently has votes attached to it and the operation cannot succeed until"] + #[doc = "these are removed through `remove_vote`."] + AlreadyVoting, + #[codec(index = 6)] #[doc = "Too high a balance was provided that the account cannot afford."] InsufficientFunds, - #[codec(index = 15)] + #[codec(index = 7)] #[doc = "The account is not currently delegating."] NotDelegating, - #[codec(index = 16)] - #[doc = "The account currently has votes attached to it and the operation cannot succeed until"] - #[doc = "these are removed, either through `unvote` or `reap_vote`."] - VotesExist, - #[codec(index = 17)] - #[doc = "The instant referendum origin is currently disallowed."] - InstantNotAllowed, - #[codec(index = 18)] + #[codec(index = 8)] #[doc = "Delegation to oneself makes no sense."] Nonsense, - #[codec(index = 19)] - #[doc = "Invalid upper bound."] - WrongUpperBound, - #[codec(index = 20)] + #[codec(index = 9)] #[doc = "Maximum number of votes reached."] MaxVotesReached, - #[codec(index = 21)] - #[doc = "Maximum number of items reached."] - TooMany, - #[codec(index = 22)] - #[doc = "Voting period too low"] - VotingPeriodLow, - #[codec(index = 23)] - #[doc = "The preimage does not exist."] - PreimageNotExist, + #[codec(index = 10)] + #[doc = "The class must be supplied since it is not easily determinable from the state."] + ClassNeeded, + #[codec(index = 11)] + #[doc = "The class ID supplied is invalid."] + BadClass, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -37540,91 +41327,11 @@ pub mod api { #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] - #[doc = "A motion has been proposed by a public account."] - Proposed { - proposal_index: ::core::primitive::u32, - deposit: ::core::primitive::u128, - }, + #[doc = "An account has delegated their vote to another account. \\[who, target\\]"] + Delegated(::subxt::utils::AccountId32, ::subxt::utils::AccountId32), #[codec(index = 1)] - #[doc = "A public proposal has been tabled for referendum vote."] - Tabled { - proposal_index: ::core::primitive::u32, - deposit: ::core::primitive::u128, - }, - #[codec(index = 2)] - #[doc = "An external proposal has been tabled."] - ExternalTabled, - #[codec(index = 3)] - #[doc = "A referendum has begun."] - Started { - ref_index: ::core::primitive::u32, - threshold: runtime_types::pallet_democracy::vote_threshold::VoteThreshold, - }, - #[codec(index = 4)] - #[doc = "A proposal has been approved by referendum."] - Passed { ref_index: ::core::primitive::u32 }, - #[codec(index = 5)] - #[doc = "A proposal has been rejected by referendum."] - NotPassed { ref_index: ::core::primitive::u32 }, - #[codec(index = 6)] - #[doc = "A referendum has been cancelled."] - Cancelled { ref_index: ::core::primitive::u32 }, - #[codec(index = 7)] - #[doc = "An account has delegated their vote to another account."] - Delegated { - who: ::subxt::utils::AccountId32, - target: ::subxt::utils::AccountId32, - }, - #[codec(index = 8)] - #[doc = "An account has cancelled a previous delegation operation."] - Undelegated { account: ::subxt::utils::AccountId32 }, - #[codec(index = 9)] - #[doc = "An external proposal has been vetoed."] - Vetoed { - who: ::subxt::utils::AccountId32, - proposal_hash: ::subxt::utils::H256, - until: ::core::primitive::u32, - }, - #[codec(index = 10)] - #[doc = "A proposal_hash has been blacklisted permanently."] - Blacklisted { proposal_hash: ::subxt::utils::H256 }, - #[codec(index = 11)] - #[doc = "An account has voted in a referendum"] - Voted { - voter: ::subxt::utils::AccountId32, - ref_index: ::core::primitive::u32, - vote: runtime_types::pallet_democracy::vote::AccountVote< - ::core::primitive::u128, - >, - }, - #[codec(index = 12)] - #[doc = "An account has secconded a proposal"] - Seconded { - seconder: ::subxt::utils::AccountId32, - prop_index: ::core::primitive::u32, - }, - #[codec(index = 13)] - #[doc = "A proposal got canceled."] - ProposalCanceled { prop_index: ::core::primitive::u32 }, - #[codec(index = 14)] - #[doc = "Metadata for a proposal or a referendum has been set."] - MetadataSet { - owner: runtime_types::pallet_democracy::types::MetadataOwner, - hash: ::subxt::utils::H256, - }, - #[codec(index = 15)] - #[doc = "Metadata for a proposal or a referendum has been cleared."] - MetadataCleared { - owner: runtime_types::pallet_democracy::types::MetadataOwner, - hash: ::subxt::utils::H256, - }, - #[codec(index = 16)] - #[doc = "Metadata has been transferred to new owner."] - MetadataTransferred { - prev_owner: runtime_types::pallet_democracy::types::MetadataOwner, - owner: runtime_types::pallet_democracy::types::MetadataOwner, - hash: ::subxt::utils::H256, - }, + #[doc = "An \\[account\\] has cancelled a previous delegation operation."] + Undelegated(::subxt::utils::AccountId32), } } pub mod types { @@ -37653,61 +41360,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum MetadataOwner { - #[codec(index = 0)] - External, - #[codec(index = 1)] - Proposal(::core::primitive::u32), - #[codec(index = 2)] - Referendum(::core::primitive::u32), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum ReferendumInfo<_0, _1, _2> { - #[codec(index = 0)] - Ongoing(runtime_types::pallet_democracy::types::ReferendumStatus<_0, _1, _2>), - #[codec(index = 1)] - Finished { approved: ::core::primitive::bool, end: _0 }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ReferendumStatus<_0, _1, _2> { - pub end: _0, - pub proposal: _1, - pub threshold: runtime_types::pallet_democracy::vote_threshold::VoteThreshold, - pub delay: _0, - pub tally: runtime_types::pallet_democracy::types::Tally<_2>, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Tally<_0> { pub ayes: _0, pub nays: _0, - pub turnout: _0, + pub support: _0, } } pub mod vote { @@ -37724,9 +41380,14 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum AccountVote<_0> { #[codec(index = 0)] - Standard { vote: runtime_types::pallet_democracy::vote::Vote, balance: _0 }, + Standard { + vote: runtime_types::pallet_conviction_voting::vote::Vote, + balance: _0, + }, #[codec(index = 1)] Split { aye: _0, nay: _0 }, + #[codec(index = 2)] + SplitAbstain { aye: _0, nay: _0, abstain: _0 }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -37738,51 +41399,17 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct PriorLock<_0, _1>(pub _0, pub _1); - #[derive( - :: subxt :: ext :: codec :: CompactAs, - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Vote(pub ::core::primitive::u8); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Voting<_0, _1, _2> { - #[codec(index = 0)] - Direct { - votes: runtime_types::bounded_collections::bounded_vec::BoundedVec<( - _2, - runtime_types::pallet_democracy::vote::AccountVote<_0>, - )>, - delegations: runtime_types::pallet_democracy::types::Delegations<_0>, - prior: runtime_types::pallet_democracy::vote::PriorLock<_2, _0>, - }, - #[codec(index = 1)] - Delegating { - balance: _0, - target: _1, - conviction: runtime_types::pallet_democracy::conviction::Conviction, - delegations: runtime_types::pallet_democracy::types::Delegations<_0>, - prior: runtime_types::pallet_democracy::vote::PriorLock<_2, _0>, - }, + pub struct Casting<_0, _1, _2> { + pub votes: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + _1, + runtime_types::pallet_conviction_voting::vote::AccountVote<_0>, + )>, + pub delegations: + runtime_types::pallet_conviction_voting::types::Delegations<_0>, + pub prior: runtime_types::pallet_conviction_voting::vote::PriorLock<_1, _0>, + #[codec(skip)] + pub __subxt_unused_type_params: ::core::marker::PhantomData<_2>, } - } - pub mod vote_threshold { - use super::runtime_types; #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -37793,20 +41420,14 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VoteThreshold { - #[codec(index = 0)] - SuperMajorityApprove, - #[codec(index = 1)] - SuperMajorityAgainst, - #[codec(index = 2)] - SimpleMajority, + pub struct Delegating<_0, _1, _2> { + pub balance: _0, + pub target: _1, + pub conviction: runtime_types::pallet_conviction_voting::conviction::Conviction, + pub delegations: + runtime_types::pallet_conviction_voting::types::Delegations<_0>, + pub prior: runtime_types::pallet_conviction_voting::vote::PriorLock<_2, _0>, } - } - } - pub mod pallet_elections_phragmen { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -37817,44 +41438,9 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::vote`]."] - vote { - votes: ::std::vec::Vec<::subxt::utils::AccountId32>, - #[codec(compact)] - value: ::core::primitive::u128, - }, - #[codec(index = 1)] - #[doc = "See [`Pallet::remove_voter`]."] - remove_voter, - #[codec(index = 2)] - #[doc = "See [`Pallet::submit_candidacy`]."] - submit_candidacy { - #[codec(compact)] - candidate_count: ::core::primitive::u32, - }, - #[codec(index = 3)] - #[doc = "See [`Pallet::renounce_candidacy`]."] - renounce_candidacy { - renouncing: runtime_types::pallet_elections_phragmen::Renouncing, - }, - #[codec(index = 4)] - #[doc = "See [`Pallet::remove_member`]."] - remove_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - slash_bond: ::core::primitive::bool, - rerun_election: ::core::primitive::bool, - }, - #[codec(index = 5)] - #[doc = "See [`Pallet::clean_defunct_voters`]."] - clean_defunct_voters { - num_voters: ::core::primitive::u32, - num_defunct: ::core::primitive::u32, - }, - } + pub struct PriorLock<_0, _1>(pub _0, pub _1); #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -37864,60 +41450,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "Cannot vote when no candidates or members exist."] - UnableToVote, - #[codec(index = 1)] - #[doc = "Must vote for at least one candidate."] - NoVotes, - #[codec(index = 2)] - #[doc = "Cannot vote more than candidates."] - TooManyVotes, - #[codec(index = 3)] - #[doc = "Cannot vote more than maximum allowed."] - MaximumVotesExceeded, - #[codec(index = 4)] - #[doc = "Cannot vote with stake less than minimum balance."] - LowBalance, - #[codec(index = 5)] - #[doc = "Voter can not pay voting bond."] - UnableToPayBond, - #[codec(index = 6)] - #[doc = "Must be a voter."] - MustBeVoter, - #[codec(index = 7)] - #[doc = "Duplicated candidate submission."] - DuplicatedCandidate, - #[codec(index = 8)] - #[doc = "Too many candidates have been created."] - TooManyCandidates, - #[codec(index = 9)] - #[doc = "Member cannot re-submit candidacy."] - MemberSubmit, - #[codec(index = 10)] - #[doc = "Runner cannot re-submit candidacy."] - RunnerUpSubmit, - #[codec(index = 11)] - #[doc = "Candidate does not have enough funds."] - InsufficientCandidateFunds, - #[codec(index = 12)] - #[doc = "Not a member."] - NotMember, - #[codec(index = 13)] - #[doc = "The provided count of number of candidates is incorrect."] - InvalidWitnessData, - #[codec(index = 14)] - #[doc = "The provided count of number of votes is incorrect."] - InvalidVoteCount, - #[codec(index = 15)] - #[doc = "The renouncing origin presented a wrong `Renouncing` parameter."] - InvalidRenouncing, - #[codec(index = 16)] - #[doc = "Prediction regarding replacement after member removal is wrong."] - InvalidReplacement, - } + pub struct Vote(pub ::core::primitive::u8); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -37928,97 +41461,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { + pub enum Voting<_0, _1, _2, _3> { #[codec(index = 0)] - #[doc = "A new term with new_members. This indicates that enough candidates existed to run"] - #[doc = "the election, not that enough have has been elected. The inner value must be examined"] - #[doc = "for this purpose. A `NewTerm(\\[\\])` indicates that some candidates got their bond"] - #[doc = "slashed and none were elected, whilst `EmptyTerm` means that no candidates existed to"] - #[doc = "begin with."] - NewTerm { - new_members: - ::std::vec::Vec<(::subxt::utils::AccountId32, ::core::primitive::u128)>, - }, + Casting(runtime_types::pallet_conviction_voting::vote::Casting<_0, _2, _2>), #[codec(index = 1)] - #[doc = "No (or not enough) candidates existed for this round. This is different from"] - #[doc = "`NewTerm(\\[\\])`. See the description of `NewTerm`."] - EmptyTerm, - #[codec(index = 2)] - #[doc = "Internal error happened while trying to perform election."] - ElectionError, - #[codec(index = 3)] - #[doc = "A member has been removed. This should always be followed by either `NewTerm` or"] - #[doc = "`EmptyTerm`."] - MemberKicked { member: ::subxt::utils::AccountId32 }, - #[codec(index = 4)] - #[doc = "Someone has renounced their candidacy."] - Renounced { candidate: ::subxt::utils::AccountId32 }, - #[codec(index = 5)] - #[doc = "A candidate was slashed by amount due to failing to obtain a seat as member or"] - #[doc = "runner-up."] - #[doc = ""] - #[doc = "Note that old members and runners-up are also candidates."] - CandidateSlashed { - candidate: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, - #[codec(index = 6)] - #[doc = "A seat holder was slashed by amount by being forcefully removed from the set."] - SeatHolderSlashed { - seat_holder: ::subxt::utils::AccountId32, - amount: ::core::primitive::u128, - }, + Delegating( + runtime_types::pallet_conviction_voting::vote::Delegating<_0, _1, _2>, + ), + __Ignore(::core::marker::PhantomData<_3>), } } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Renouncing { - #[codec(index = 0)] - Member, - #[codec(index = 1)] - RunnerUp, - #[codec(index = 2)] - Candidate(#[codec(compact)] ::core::primitive::u32), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct SeatHolder<_0, _1> { - pub who: _0, - pub stake: _1, - pub deposit: _1, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Voter<_0, _1> { - pub votes: ::std::vec::Vec<_0>, - pub stake: _1, - pub deposit: _1, - } } pub mod pallet_grandpa { use super::runtime_types; @@ -38037,7 +41489,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] report_equivocation { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -38048,7 +41503,15 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::std::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -38059,7 +41522,18 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] note_stalled { delay: ::core::primitive::u32, best_finalized_block_number: ::core::primitive::u32, @@ -38172,6 +41646,33 @@ pub mod api { } pub mod pallet_identity { use super::runtime_types; + pub mod legacy { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct IdentityInfo { + pub additional: runtime_types::bounded_collections::bounded_vec::BoundedVec<( + runtime_types::pallet_identity::types::Data, + runtime_types::pallet_identity::types::Data, + )>, + pub display: runtime_types::pallet_identity::types::Data, + pub legal: runtime_types::pallet_identity::types::Data, + pub web: runtime_types::pallet_identity::types::Data, + pub riot: runtime_types::pallet_identity::types::Data, + pub email: runtime_types::pallet_identity::types::Data, + pub pgp_fingerprint: ::core::option::Option<[::core::primitive::u8; 20usize]>, + pub image: runtime_types::pallet_identity::types::Data, + pub twitter: runtime_types::pallet_identity::types::Data, + } + } pub mod pallet { use super::runtime_types; #[derive( @@ -38187,18 +41688,41 @@ pub mod api { #[doc = "Identity pallet declaration."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] add_registrar { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] set_identity { info: - ::std::boxed::Box, + ::std::boxed::Box, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] set_subs { subs: ::std::vec::Vec<( ::subxt::utils::AccountId32, @@ -38206,10 +41730,32 @@ pub mod api { )>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] clear_identity, #[codec(index = 4)] - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] request_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -38217,10 +41763,25 @@ pub mod api { max_fee: ::core::primitive::u128, }, #[codec(index = 5)] - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] cancel_request { reg_index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] set_fee { #[codec(compact)] index: ::core::primitive::u32, @@ -38228,23 +41789,47 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 7)] - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] set_account_id { #[codec(compact)] index: ::core::primitive::u32, new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 8)] - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] set_fields { #[codec(compact)] index: ::core::primitive::u32, - fields: runtime_types::pallet_identity::types::BitFlags< - runtime_types::pallet_identity::types::IdentityField, - >, + fields: ::core::primitive::u64, }, #[codec(index = 9)] - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] provide_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -38255,30 +41840,128 @@ pub mod api { identity: ::subxt::utils::H256, }, #[codec(index = 10)] - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] kill_identity { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 11)] - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] add_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 12)] - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] rename_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 13)] - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] remove_sub { sub: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 14)] - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] quit_sub, + #[codec(index = 15)] + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] + add_username_authority { + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + suffix: ::std::vec::Vec<::core::primitive::u8>, + allocation: ::core::primitive::u32, + }, + #[codec(index = 16)] + #[doc = "Remove `authority` from the username authorities."] + remove_username_authority { + authority: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 17)] + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] + set_username_for { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + username: ::std::vec::Vec<::core::primitive::u8>, + signature: + ::core::option::Option, + }, + #[codec(index = 18)] + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] + accept_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 19)] + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] + remove_expired_approval { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 20)] + #[doc = "Set a given username as the primary. The username should include the suffix."] + set_primary_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 21)] + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] + remove_dangling_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -38326,26 +42009,50 @@ pub mod api { #[doc = "The target is invalid."] InvalidTarget, #[codec(index = 11)] - #[doc = "Too many additional fields."] - TooManyFields, - #[codec(index = 12)] #[doc = "Maximum amount of registrars reached. Cannot add any more."] TooManyRegistrars, - #[codec(index = 13)] + #[codec(index = 12)] #[doc = "Account ID is already named."] AlreadyClaimed, - #[codec(index = 14)] + #[codec(index = 13)] #[doc = "Sender is not a sub-account."] NotSub, - #[codec(index = 15)] + #[codec(index = 14)] #[doc = "Sub-account isn't owned by sender."] NotOwned, - #[codec(index = 16)] + #[codec(index = 15)] #[doc = "The provided judgement was for a different identity."] JudgementForDifferentIdentity, - #[codec(index = 17)] + #[codec(index = 16)] #[doc = "Error that occurs when there is an issue paying for judgement."] JudgementPaymentFailed, + #[codec(index = 17)] + #[doc = "The provided suffix is too long."] + InvalidSuffix, + #[codec(index = 18)] + #[doc = "The sender does not have permission to issue a username."] + NotUsernameAuthority, + #[codec(index = 19)] + #[doc = "The authority cannot allocate any more usernames."] + NoAllocation, + #[codec(index = 20)] + #[doc = "The signature on a username was not valid."] + InvalidSignature, + #[codec(index = 21)] + #[doc = "Setting this username requires a signature, but none was provided."] + RequiresSignature, + #[codec(index = 22)] + #[doc = "The username does not meet the requirements."] + InvalidUsername, + #[codec(index = 23)] + #[doc = "The username is already taken."] + UsernameTaken, + #[codec(index = 24)] + #[doc = "The requested username does not exist."] + NoUsername, + #[codec(index = 25)] + #[doc = "The username cannot be forcefully removed because it can still be accepted."] + NotExpired, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -38417,12 +42124,54 @@ pub mod api { main: ::subxt::utils::AccountId32, deposit: ::core::primitive::u128, }, + #[codec(index = 10)] + #[doc = "A username authority was added."] + AuthorityAdded { authority: ::subxt::utils::AccountId32 }, + #[codec(index = 11)] + #[doc = "A username authority was removed."] + AuthorityRemoved { authority: ::subxt::utils::AccountId32 }, + #[codec(index = 12)] + #[doc = "A username was set for `who`."] + UsernameSet { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 13)] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + UsernameQueued { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + expiration: ::core::primitive::u32, + }, + #[codec(index = 14)] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + PreapprovalExpired { whose: ::subxt::utils::AccountId32 }, + #[codec(index = 15)] + #[doc = "A username was set as a primary and can be looked up from `who`."] + PrimaryUsernameSet { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, + #[codec(index = 16)] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + DanglingUsernameRemoved { + who: ::subxt::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, } } pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -38432,10 +42181,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct BitFlags<_0>( - pub ::core::primitive::u64, - #[codec(skip)] pub ::core::marker::PhantomData<_0>, - ); + pub struct AuthorityProperties<_0> { + pub suffix: _0, + pub allocation: ::core::primitive::u32, + } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -38534,58 +42283,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum IdentityField { - #[codec(index = 1)] - Display, - #[codec(index = 2)] - Legal, - #[codec(index = 4)] - Web, - #[codec(index = 8)] - Riot, - #[codec(index = 16)] - Email, - #[codec(index = 32)] - PgpFingerprint, - #[codec(index = 64)] - Image, - #[codec(index = 128)] - Twitter, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct IdentityInfo { - pub additional: runtime_types::bounded_collections::bounded_vec::BoundedVec<( - runtime_types::pallet_identity::types::Data, - runtime_types::pallet_identity::types::Data, - )>, - pub display: runtime_types::pallet_identity::types::Data, - pub legal: runtime_types::pallet_identity::types::Data, - pub web: runtime_types::pallet_identity::types::Data, - pub riot: runtime_types::pallet_identity::types::Data, - pub email: runtime_types::pallet_identity::types::Data, - pub pgp_fingerprint: ::core::option::Option<[::core::primitive::u8; 20usize]>, - pub image: runtime_types::pallet_identity::types::Data, - pub twitter: runtime_types::pallet_identity::types::Data, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Judgement<_0> { #[codec(index = 0)] Unknown, @@ -38612,12 +42309,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RegistrarInfo<_0, _1> { + pub struct RegistrarInfo<_0, _1, _2> { pub account: _1, pub fee: _0, - pub fields: runtime_types::pallet_identity::types::BitFlags< - runtime_types::pallet_identity::types::IdentityField, - >, + pub fields: _2, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -38629,129 +42324,16 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Registration<_0> { + pub struct Registration<_0, _2> { pub judgements: runtime_types::bounded_collections::bounded_vec::BoundedVec<( ::core::primitive::u32, runtime_types::pallet_identity::types::Judgement<_0>, )>, pub deposit: _0, - pub info: runtime_types::pallet_identity::types::IdentityInfo, + pub info: _2, } } } - pub mod pallet_im_online { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::heartbeat`]."] - heartbeat { - heartbeat: - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, - signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, - }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "Non existent public key."] - InvalidKey, - #[codec(index = 1)] - #[doc = "Duplicated heartbeat."] - DuplicatedHeartbeat, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "A new heartbeat was received from `AuthorityId`."] - HeartbeatReceived { - authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - }, - #[codec(index = 1)] - #[doc = "At the end of the session, no offence was committed."] - AllGood, - #[codec(index = 2)] - #[doc = "At the end of the session, at least one validator was found to be offline."] - SomeOffline { offline: ::std::vec::Vec<(::subxt::utils::AccountId32, ())> }, - } - } - pub mod sr25519 { - use super::runtime_types; - pub mod app_sr25519 { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Heartbeat<_0> { - pub block_number: _0, - pub session_index: ::core::primitive::u32, - pub authority_index: ::core::primitive::u32, - pub validators_len: ::core::primitive::u32, - } - } pub mod pallet_indices { use super::runtime_types; pub mod pallet { @@ -38769,26 +42351,82 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] claim { index: ::core::primitive::u32 }, #[codec(index = 1)] - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] transfer { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] free { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] force_transfer { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, index: ::core::primitive::u32, freeze: ::core::primitive::bool, }, #[codec(index = 4)] - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] freeze { index: ::core::primitive::u32 }, } #[derive( @@ -38846,108 +42484,6 @@ pub mod api { } } } - pub mod pallet_membership { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::add_member`]."] - add_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, - #[codec(index = 1)] - #[doc = "See [`Pallet::remove_member`]."] - remove_member { - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, - #[codec(index = 2)] - #[doc = "See [`Pallet::swap_member`]."] - swap_member { - remove: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - add: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, - #[codec(index = 3)] - #[doc = "See [`Pallet::reset_members`]."] - reset_members { members: ::std::vec::Vec<::subxt::utils::AccountId32> }, - #[codec(index = 4)] - #[doc = "See [`Pallet::change_key`]."] - change_key { - new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, - #[codec(index = 5)] - #[doc = "See [`Pallet::set_prime`]."] - set_prime { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()> }, - #[codec(index = 6)] - #[doc = "See [`Pallet::clear_prime`]."] - clear_prime, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "Already a member."] - AlreadyMember, - #[codec(index = 1)] - #[doc = "Not a member."] - NotMember, - #[codec(index = 2)] - #[doc = "Too many members."] - TooManyMembers, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "The given member was added; see the transaction for who."] - MemberAdded, - #[codec(index = 1)] - #[doc = "The given member was removed; see the transaction for who."] - MemberRemoved, - #[codec(index = 2)] - #[doc = "Two members were swapped; see the transaction for who."] - MembersSwapped, - #[codec(index = 3)] - #[doc = "The membership was reset; see the transaction for who the new set is."] - MembersReset, - #[codec(index = 4)] - #[doc = "One of the members' keys changed."] - KeyChanged, - #[codec(index = 5)] - #[doc = "Phantom member, never used."] - Dummy, - } - } - } pub mod pallet_message_queue { use super::runtime_types; pub mod pallet { @@ -38964,7 +42500,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::reap_page`]."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::execute_overweight`]."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } + # [codec (index = 0)] # [doc = "Remove a page which has no more messages remaining to be processed or is stale."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Execute an overweight message."] # [doc = ""] # [doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] # [doc = "as success condition."] # [doc = ""] # [doc = "- `origin`: Must be `Signed`."] # [doc = "- `message_origin`: The origin from which the message to be executed arrived."] # [doc = "- `page`: The page in the queue in which the message to be executed is sitting."] # [doc = "- `index`: The index into the queue of the message to be executed."] # [doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] # [doc = " of the message."] # [doc = ""] # [doc = "Benchmark complexity considerations: O(index + weight_limit)."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -39007,6 +42543,9 @@ pub mod api { #[doc = ""] #[doc = "This can change at any time and may resolve in the future by re-trying."] QueuePaused, + #[codec(index = 8)] + #[doc = "Another call is in progress and needs to finish before this call can happen."] + RecursiveDisallowed, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -39020,7 +42559,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Event` enum of this pallet"] pub enum Event { - # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : :: subxt :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -39093,13 +42632,62 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] as_multi_threshold_1 { other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -39110,7 +42698,36 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] approve_as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -39121,7 +42738,27 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] cancel_as_multi { threshold: ::core::primitive::u16, other_signatories: ::std::vec::Vec<::subxt::utils::AccountId32>, @@ -39297,24 +42934,49 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::place_bid`]."] + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] place_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::retract_bid`]."] + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] retract_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::fund_deficit`]."] + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] fund_deficit, #[codec(index = 3)] - #[doc = "See [`Pallet::thaw_private`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] thaw_private { #[codec(compact)] index: ::core::primitive::u32, @@ -39323,19 +42985,24 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::thaw_communal`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] thaw_communal { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::communify`]."] + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] communify { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::privatize`]."] + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] privatize { #[codec(compact)] index: ::core::primitive::u32, @@ -39391,7 +43058,7 @@ pub mod api { #[doc = "The thaw throttle has been reached for this period."] Throttled, #[codec(index = 12)] - #[doc = "The operation would result in a receipt worth an insignficant value."] + #[doc = "The operation would result in a receipt worth an insignificant value."] MakesDust, #[codec(index = 13)] #[doc = "The receipt is already communal."] @@ -39455,7 +43122,7 @@ pub mod api { #[doc = "An automatic funding of the deficit was made."] Funded { deficit: ::core::primitive::u128 }, #[codec(index = 6)] - #[doc = "A receipt was transfered."] + #[doc = "A receipt was transferred."] Transferred { from: ::subxt::utils::AccountId32, to: ::subxt::utils::AccountId32, @@ -39554,17 +43221,35 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] note_preimage { bytes: ::std::vec::Vec<::core::primitive::u8> }, #[codec(index = 1)] - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] unnote_preimage { hash: ::subxt::utils::H256 }, #[codec(index = 2)] - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] request_preimage { hash: ::subxt::utils::H256 }, #[codec(index = 3)] - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] unrequest_preimage { hash: ::subxt::utils::H256 }, + #[codec(index = 4)] + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] + ensure_updated { hashes: ::std::vec::Vec<::subxt::utils::H256> }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -39596,6 +43281,12 @@ pub mod api { #[codec(index = 5)] #[doc = "The preimage request cannot be removed since no outstanding requests exist."] NotRequested, + #[codec(index = 6)] + #[doc = "More than `MAX_HASH_UPGRADE_BULK_COUNT` hashes were requested to be upgraded at once."] + TooMany, + #[codec(index = 7)] + #[doc = "Too few hashes were requested to be upgraded (i.e. zero)."] + TooFew, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -39619,6 +43310,20 @@ pub mod api { #[doc = "A preimage has ben cleared."] Cleared { hash: ::subxt::utils::H256 }, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum HoldReason { + #[codec(index = 0)] + Preimage, + } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -39630,7 +43335,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum RequestStatus<_0, _1> { + pub enum OldRequestStatus<_0, _1> { #[codec(index = 0)] Unrequested { deposit: (_0, _1), len: ::core::primitive::u32 }, #[codec(index = 1)] @@ -39640,6 +43345,26 @@ pub mod api { len: ::core::option::Option<::core::primitive::u32>, }, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum RequestStatus<_0, _1> { + #[codec(index = 0)] + Unrequested { ticket: (_0, _1), len: ::core::primitive::u32 }, + #[codec(index = 1)] + Requested { + maybe_ticket: ::core::option::Option<(_0, _1)>, + count: ::core::primitive::u32, + maybe_len: ::core::option::Option<::core::primitive::u32>, + }, + } } pub mod pallet_proxy { use super::runtime_types; @@ -39658,7 +43383,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] proxy { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, force_proxy_type: @@ -39666,31 +43399,82 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] add_proxy { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] remove_proxy { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] remove_proxies, #[codec(index = 4)] - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] create_pure { proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, index: ::core::primitive::u16, }, #[codec(index = 5)] - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] kill_pure { spawner: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, proxy_type: runtime_types::rococo_runtime::ProxyType, @@ -39701,25 +43485,67 @@ pub mod api { ext_index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] announce { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] remove_announcement { real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 8)] - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] reject_announcement { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call_hash: ::subxt::utils::H256, }, #[codec(index = 9)] - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] proxy_announced { delegate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, real: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -39827,10 +43653,216 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Announcement<_0, _1, _2> { - pub real: _0, - pub call_hash: _1, - pub height: _2, + pub struct Announcement<_0, _1, _2> { + pub real: _0, + pub call_hash: _1, + pub height: _2, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ProxyDefinition<_0, _1, _2> { + pub delegate: _0, + pub proxy_type: _1, + pub delay: _2, + } + } + pub mod pallet_ranked_collective { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] + add_member { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 1)] + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] + promote_member { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 2)] + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] + demote_member { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + #[codec(index = 3)] + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] + remove_member { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + min_rank: ::core::primitive::u16, + }, + #[codec(index = 4)] + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] + vote { poll: ::core::primitive::u32, aye: ::core::primitive::bool }, + #[codec(index = 5)] + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] + cleanup_poll { poll_index: ::core::primitive::u32, max: ::core::primitive::u32 }, + #[codec(index = 6)] + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] + exchange_member { + who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + new_who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Account is already a member."] + AlreadyMember, + #[codec(index = 1)] + #[doc = "Account is not a member."] + NotMember, + #[codec(index = 2)] + #[doc = "The given poll index is unknown or has closed."] + NotPolling, + #[codec(index = 3)] + #[doc = "The given poll is still ongoing."] + Ongoing, + #[codec(index = 4)] + #[doc = "There are no further records to be removed."] + NoneRemaining, + #[codec(index = 5)] + #[doc = "Unexpected error in state."] + Corruption, + #[codec(index = 6)] + #[doc = "The member's rank is too low to vote."] + RankTooLow, + #[codec(index = 7)] + #[doc = "The information provided is incorrect."] + InvalidWitness, + #[codec(index = 8)] + #[doc = "The origin is not sufficiently privileged to do the operation."] + NoPermission, + #[codec(index = 9)] + #[doc = "The new member to exchange is the same as the old member"] + SameMember, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A member `who` has been added."] + MemberAdded { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "The member `who`se rank has been changed to the given `rank`."] + RankChanged { who: ::subxt::utils::AccountId32, rank: ::core::primitive::u16 }, + #[codec(index = 2)] + #[doc = "The member `who` of given `rank` has been removed from the collective."] + MemberRemoved { who: ::subxt::utils::AccountId32, rank: ::core::primitive::u16 }, + #[codec(index = 3)] + #[doc = "The member `who` has voted for the `poll` with the given `vote` leading to an updated"] + #[doc = "`tally`."] + Voted { + who: ::subxt::utils::AccountId32, + poll: ::core::primitive::u32, + vote: runtime_types::pallet_ranked_collective::VoteRecord, + tally: runtime_types::pallet_ranked_collective::Tally, + }, + #[codec(index = 4)] + #[doc = "The member `who` had their `AccountId` changed to `new_who`."] + MemberExchanged { + who: ::subxt::utils::AccountId32, + new_who: ::subxt::utils::AccountId32, + }, + } + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MemberRecord { + pub rank: ::core::primitive::u16, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -39842,10 +43874,26 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ProxyDefinition<_0, _1, _2> { - pub delegate: _0, - pub proxy_type: _1, - pub delay: _2, + pub struct Tally { + pub bare_ayes: ::core::primitive::u32, + pub ayes: ::core::primitive::u32, + pub nays: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VoteRecord { + #[codec(index = 0)] + Aye(::core::primitive::u32), + #[codec(index = 1)] + Nay(::core::primitive::u32), } } pub mod pallet_recovery { @@ -39865,50 +43913,134 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] as_recovered { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] set_recovered { lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 2)] - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] create_recovery { friends: ::std::vec::Vec<::subxt::utils::AccountId32>, threshold: ::core::primitive::u16, delay_period: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] initiate_recovery { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] vouch_recovery { lost: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 5)] - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] claim_recovery { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] close_recovery { rescuer: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] remove_recovery, #[codec(index = 8)] - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] cancel_recovered { account: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, @@ -40051,6 +44183,775 @@ pub mod api { pub threshold: ::core::primitive::u16, } } + pub mod pallet_referenda { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] + submit { + proposal_origin: + ::std::boxed::Box, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + enactment_moment: + runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, + }, + #[codec(index = 1)] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] + place_decision_deposit { index: ::core::primitive::u32 }, + #[codec(index = 2)] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] + refund_decision_deposit { index: ::core::primitive::u32 }, + #[codec(index = 3)] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] + cancel { index: ::core::primitive::u32 }, + #[codec(index = 4)] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] + kill { index: ::core::primitive::u32 }, + #[codec(index = 5)] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] + nudge_referendum { index: ::core::primitive::u32 }, + #[codec(index = 6)] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] + one_fewer_deciding { track: ::core::primitive::u16 }, + #[codec(index = 7)] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] + refund_submission_deposit { index: ::core::primitive::u32 }, + #[codec(index = 8)] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + set_metadata { + index: ::core::primitive::u32, + maybe_hash: ::core::option::Option<::subxt::utils::H256>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call2 { + #[codec(index = 0)] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] + submit { + proposal_origin: + ::std::boxed::Box, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + enactment_moment: + runtime_types::frame_support::traits::schedule::DispatchTime< + ::core::primitive::u32, + >, + }, + #[codec(index = 1)] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] + place_decision_deposit { index: ::core::primitive::u32 }, + #[codec(index = 2)] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] + refund_decision_deposit { index: ::core::primitive::u32 }, + #[codec(index = 3)] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] + cancel { index: ::core::primitive::u32 }, + #[codec(index = 4)] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] + kill { index: ::core::primitive::u32 }, + #[codec(index = 5)] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] + nudge_referendum { index: ::core::primitive::u32 }, + #[codec(index = 6)] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] + one_fewer_deciding { track: ::core::primitive::u16 }, + #[codec(index = 7)] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] + refund_submission_deposit { index: ::core::primitive::u32 }, + #[codec(index = 8)] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] + set_metadata { + index: ::core::primitive::u32, + maybe_hash: ::core::option::Option<::subxt::utils::H256>, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "Referendum is not ongoing."] + NotOngoing, + #[codec(index = 1)] + #[doc = "Referendum's decision deposit is already paid."] + HasDeposit, + #[codec(index = 2)] + #[doc = "The track identifier given was invalid."] + BadTrack, + #[codec(index = 3)] + #[doc = "There are already a full complement of referenda in progress for this track."] + Full, + #[codec(index = 4)] + #[doc = "The queue of the track is empty."] + QueueEmpty, + #[codec(index = 5)] + #[doc = "The referendum index provided is invalid in this context."] + BadReferendum, + #[codec(index = 6)] + #[doc = "There was nothing to do in the advancement."] + NothingToDo, + #[codec(index = 7)] + #[doc = "No track exists for the proposal origin."] + NoTrack, + #[codec(index = 8)] + #[doc = "Any deposit cannot be refunded until after the decision is over."] + Unfinished, + #[codec(index = 9)] + #[doc = "The deposit refunder is not the depositor."] + NoPermission, + #[codec(index = 10)] + #[doc = "The deposit cannot be refunded since none was made."] + NoDeposit, + #[codec(index = 11)] + #[doc = "The referendum status is invalid for this operation."] + BadStatus, + #[codec(index = 12)] + #[doc = "The preimage does not exist."] + PreimageNotExist, + #[codec(index = 13)] + #[doc = "The preimage is stored with a different length than the one provided."] + PreimageStoredWithDifferentLength, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error2 { + #[codec(index = 0)] + #[doc = "Referendum is not ongoing."] + NotOngoing, + #[codec(index = 1)] + #[doc = "Referendum's decision deposit is already paid."] + HasDeposit, + #[codec(index = 2)] + #[doc = "The track identifier given was invalid."] + BadTrack, + #[codec(index = 3)] + #[doc = "There are already a full complement of referenda in progress for this track."] + Full, + #[codec(index = 4)] + #[doc = "The queue of the track is empty."] + QueueEmpty, + #[codec(index = 5)] + #[doc = "The referendum index provided is invalid in this context."] + BadReferendum, + #[codec(index = 6)] + #[doc = "There was nothing to do in the advancement."] + NothingToDo, + #[codec(index = 7)] + #[doc = "No track exists for the proposal origin."] + NoTrack, + #[codec(index = 8)] + #[doc = "Any deposit cannot be refunded until after the decision is over."] + Unfinished, + #[codec(index = 9)] + #[doc = "The deposit refunder is not the depositor."] + NoPermission, + #[codec(index = 10)] + #[doc = "The deposit cannot be refunded since none was made."] + NoDeposit, + #[codec(index = 11)] + #[doc = "The referendum status is invalid for this operation."] + BadStatus, + #[codec(index = 12)] + #[doc = "The preimage does not exist."] + PreimageNotExist, + #[codec(index = 13)] + #[doc = "The preimage is stored with a different length than the one provided."] + PreimageStoredWithDifferentLength, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A referendum has been submitted."] + Submitted { + index: ::core::primitive::u32, + track: ::core::primitive::u16, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + }, + #[codec(index = 1)] + #[doc = "The decision deposit has been placed."] + DecisionDepositPlaced { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "The decision deposit has been refunded."] + DecisionDepositRefunded { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "A deposit has been slashed."] + DepositSlashed { + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "A referendum has moved into the deciding phase."] + DecisionStarted { + index: ::core::primitive::u32, + track: ::core::primitive::u16, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 5)] + ConfirmStarted { index: ::core::primitive::u32 }, + #[codec(index = 6)] + ConfirmAborted { index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "A referendum has ended its confirmation phase and is ready for approval."] + Confirmed { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 8)] + #[doc = "A referendum has been approved and its proposal has been scheduled."] + Approved { index: ::core::primitive::u32 }, + #[codec(index = 9)] + #[doc = "A proposal has been rejected by referendum."] + Rejected { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 10)] + #[doc = "A referendum has been timed out without being decided."] + TimedOut { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 11)] + #[doc = "A referendum has been cancelled."] + Cancelled { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 12)] + #[doc = "A referendum has been killed."] + Killed { + index: ::core::primitive::u32, + tally: runtime_types::pallet_conviction_voting::types::Tally< + ::core::primitive::u128, + >, + }, + #[codec(index = 13)] + #[doc = "The submission deposit has been refunded."] + SubmissionDepositRefunded { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 14)] + #[doc = "Metadata for a referendum has been set."] + MetadataSet { index: ::core::primitive::u32, hash: ::subxt::utils::H256 }, + #[codec(index = 15)] + #[doc = "Metadata for a referendum has been cleared."] + MetadataCleared { index: ::core::primitive::u32, hash: ::subxt::utils::H256 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event2 { + #[codec(index = 0)] + #[doc = "A referendum has been submitted."] + Submitted { + index: ::core::primitive::u32, + track: ::core::primitive::u16, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + }, + #[codec(index = 1)] + #[doc = "The decision deposit has been placed."] + DecisionDepositPlaced { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 2)] + #[doc = "The decision deposit has been refunded."] + DecisionDepositRefunded { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 3)] + #[doc = "A deposit has been slashed."] + DepositSlashed { + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 4)] + #[doc = "A referendum has moved into the deciding phase."] + DecisionStarted { + index: ::core::primitive::u32, + track: ::core::primitive::u16, + proposal: runtime_types::frame_support::traits::preimages::Bounded< + runtime_types::rococo_runtime::RuntimeCall, + runtime_types::sp_runtime::traits::BlakeTwo256, + >, + tally: runtime_types::pallet_ranked_collective::Tally, + }, + #[codec(index = 5)] + ConfirmStarted { index: ::core::primitive::u32 }, + #[codec(index = 6)] + ConfirmAborted { index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "A referendum has ended its confirmation phase and is ready for approval."] + Confirmed { + index: ::core::primitive::u32, + tally: runtime_types::pallet_ranked_collective::Tally, + }, + #[codec(index = 8)] + #[doc = "A referendum has been approved and its proposal has been scheduled."] + Approved { index: ::core::primitive::u32 }, + #[codec(index = 9)] + #[doc = "A proposal has been rejected by referendum."] + Rejected { + index: ::core::primitive::u32, + tally: runtime_types::pallet_ranked_collective::Tally, + }, + #[codec(index = 10)] + #[doc = "A referendum has been timed out without being decided."] + TimedOut { + index: ::core::primitive::u32, + tally: runtime_types::pallet_ranked_collective::Tally, + }, + #[codec(index = 11)] + #[doc = "A referendum has been cancelled."] + Cancelled { + index: ::core::primitive::u32, + tally: runtime_types::pallet_ranked_collective::Tally, + }, + #[codec(index = 12)] + #[doc = "A referendum has been killed."] + Killed { + index: ::core::primitive::u32, + tally: runtime_types::pallet_ranked_collective::Tally, + }, + #[codec(index = 13)] + #[doc = "The submission deposit has been refunded."] + SubmissionDepositRefunded { + index: ::core::primitive::u32, + who: ::subxt::utils::AccountId32, + amount: ::core::primitive::u128, + }, + #[codec(index = 14)] + #[doc = "Metadata for a referendum has been set."] + MetadataSet { index: ::core::primitive::u32, hash: ::subxt::utils::H256 }, + #[codec(index = 15)] + #[doc = "Metadata for a referendum has been cleared."] + MetadataCleared { index: ::core::primitive::u32, hash: ::subxt::utils::H256 }, + } + } + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Curve { + #[codec(index = 0)] + LinearDecreasing { + length: runtime_types::sp_arithmetic::per_things::Perbill, + floor: runtime_types::sp_arithmetic::per_things::Perbill, + ceil: runtime_types::sp_arithmetic::per_things::Perbill, + }, + #[codec(index = 1)] + SteppedDecreasing { + begin: runtime_types::sp_arithmetic::per_things::Perbill, + end: runtime_types::sp_arithmetic::per_things::Perbill, + step: runtime_types::sp_arithmetic::per_things::Perbill, + period: runtime_types::sp_arithmetic::per_things::Perbill, + }, + #[codec(index = 2)] + Reciprocal { + factor: runtime_types::sp_arithmetic::fixed_point::FixedI64, + x_offset: runtime_types::sp_arithmetic::fixed_point::FixedI64, + y_offset: runtime_types::sp_arithmetic::fixed_point::FixedI64, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DecidingStatus<_0> { + pub since: _0, + pub confirming: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Deposit<_0, _1> { + pub who: _0, + pub amount: _1, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ReferendumInfo<_0, _1, _2, _3, _4, _5, _6, _7> { + #[codec(index = 0)] + Ongoing( + runtime_types::pallet_referenda::types::ReferendumStatus< + _0, + _1, + _2, + _3, + _4, + _5, + _6, + _7, + >, + ), + #[codec(index = 1)] + Approved( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 2)] + Rejected( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 3)] + Cancelled( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 4)] + TimedOut( + _2, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + ), + #[codec(index = 5)] + Killed(_2), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReferendumStatus<_0, _1, _2, _3, _4, _5, _6, _7> { + pub track: _0, + pub origin: _1, + pub proposal: _3, + pub enactment: runtime_types::frame_support::traits::schedule::DispatchTime<_2>, + pub submitted: _2, + pub submission_deposit: runtime_types::pallet_referenda::types::Deposit<_6, _4>, + pub decision_deposit: ::core::option::Option< + runtime_types::pallet_referenda::types::Deposit<_6, _4>, + >, + pub deciding: ::core::option::Option< + runtime_types::pallet_referenda::types::DecidingStatus<_2>, + >, + pub tally: _5, + pub in_queue: ::core::primitive::bool, + pub alarm: ::core::option::Option<(_2, _7)>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct TrackInfo<_0, _1> { + pub name: ::std::string::String, + pub max_deciding: ::core::primitive::u32, + pub decision_deposit: _0, + pub prepare_period: _1, + pub decision_period: _1, + pub confirm_period: _1, + pub min_enactment_period: _1, + pub min_approval: runtime_types::pallet_referenda::types::Curve, + pub min_support: runtime_types::pallet_referenda::types::Curve, + } + } + } + pub mod pallet_root_testing { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "A dispatch that will fill the block weight up to the given ratio."] + fill_block { ratio: runtime_types::sp_arithmetic::per_things::Perbill }, + #[codec(index = 1)] + trigger_defensive, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "Event dispatched when the trigger_defensive extrinsic is called."] + DefensiveTestCall, + } + } + } pub mod pallet_scheduler { use super::runtime_types; pub mod pallet { @@ -40068,7 +44969,7 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] schedule { when: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -40079,10 +44980,10 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] cancel { when: ::core::primitive::u32, index: ::core::primitive::u32 }, #[codec(index = 2)] - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] schedule_named { id: [::core::primitive::u8; 32usize], when: ::core::primitive::u32, @@ -40094,10 +44995,10 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] cancel_named { id: [::core::primitive::u8; 32usize] }, #[codec(index = 4)] - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] schedule_after { after: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -40108,7 +45009,7 @@ pub mod api { call: ::std::boxed::Box, }, #[codec(index = 5)] - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] schedule_named_after { id: [::core::primitive::u8; 32usize], after: ::core::primitive::u32, @@ -40119,6 +45020,48 @@ pub mod api { priority: ::core::primitive::u8, call: ::std::boxed::Box, }, + #[codec(index = 6)] + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + set_retry { + task: (::core::primitive::u32, ::core::primitive::u32), + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + }, + #[codec(index = 7)] + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + set_retry_named { + id: [::core::primitive::u8; 32usize], + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + }, + #[codec(index = 8)] + #[doc = "Removes the retry configuration of a task."] + cancel_retry { task: (::core::primitive::u32, ::core::primitive::u32) }, + #[codec(index = 9)] + #[doc = "Cancel the retry configuration of a named task."] + cancel_retry_named { id: [::core::primitive::u8; 32usize] }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -40175,18 +45118,39 @@ pub mod api { ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, }, #[codec(index = 3)] + #[doc = "Set a retry configuration for some task."] + RetrySet { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + period: ::core::primitive::u32, + retries: ::core::primitive::u8, + }, + #[codec(index = 4)] + #[doc = "Cancel a retry configuration for some task."] + RetryCancelled { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 5)] #[doc = "The call for the provided hash was not found so the task has been aborted."] CallUnavailable { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 4)] + #[codec(index = 6)] #[doc = "The given task was unable to be renewed since the agenda is full at that block."] PeriodicFailed { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 5)] + #[codec(index = 7)] + #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] + #[doc = "was not enough weight to reschedule it."] + RetryFailed { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 8)] #[doc = "The given task can never be executed since it is overweight."] PermanentlyOverweight { task: (::core::primitive::u32, ::core::primitive::u32), @@ -40204,6 +45168,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RetryConfig<_0> { + pub total_retries: ::core::primitive::u8, + pub remaining: ::core::primitive::u8, + pub period: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Scheduled<_0, _1, _2, _3, _4> { pub maybe_id: ::core::option::Option<_0>, pub priority: ::core::primitive::u8, @@ -40231,13 +45210,32 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::set_keys`]."] + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] set_keys { keys: runtime_types::rococo_runtime::SessionKeys, proof: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::purge_keys`]."] + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] purge_keys, } #[derive( @@ -40304,38 +45302,113 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] bid { value: ::core::primitive::u128 }, #[codec(index = 1)] - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] unbid, #[codec(index = 2)] - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] vouch { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, value: ::core::primitive::u128, tip: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] unvouch, #[codec(index = 4)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] vote { candidate: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, approve: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] defender_vote { approve: ::core::primitive::bool }, #[codec(index = 6)] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] payout, #[codec(index = 7)] - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] waive_repay { amount: ::core::primitive::u128 }, #[codec(index = 8)] - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] found_society { founder: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, max_members: ::core::primitive::u32, @@ -40345,16 +45418,44 @@ pub mod api { rules: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 9)] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] dissolve, #[codec(index = 10)] - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] judge_suspended_member { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, forgive: ::core::primitive::bool, }, #[codec(index = 11)] - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] set_parameters { max_members: ::core::primitive::u32, max_intake: ::core::primitive::u32, @@ -40362,31 +45463,49 @@ pub mod api { candidate_deposit: ::core::primitive::u128, }, #[codec(index = 12)] - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] punish_skeptic, #[codec(index = 13)] - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] claim_membership, #[codec(index = 14)] - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] bestow_membership { candidate: ::subxt::utils::AccountId32 }, #[codec(index = 15)] - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] kick_candidate { candidate: ::subxt::utils::AccountId32 }, #[codec(index = 16)] - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] resign_candidacy, #[codec(index = 17)] - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] drop_candidate { candidate: ::subxt::utils::AccountId32 }, #[codec(index = 18)] - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] cleanup_candidacy { candidate: ::subxt::utils::AccountId32, max: ::core::primitive::u32, }, #[codec(index = 19)] - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] cleanup_challenge { challenge_round: ::core::primitive::u32, max: ::core::primitive::u32, @@ -40762,14 +45881,36 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] control_auto_migration { maybe_config: ::core::option::Option< runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] continue_migrate { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, real_size_upper: ::core::primitive::u32, @@ -40777,25 +45918,41 @@ pub mod api { runtime_types::pallet_state_trie_migration::pallet::MigrationTask, }, #[codec(index = 2)] - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] migrate_custom_top { keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, witness_size: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] migrate_custom_child { root: ::std::vec::Vec<::core::primitive::u8>, child_keys: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, total_size: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] set_signed_max_limits { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] force_set_progress { progress_top: runtime_types::pallet_state_trie_migration::pallet::Progress, progress_child: @@ -40880,6 +46037,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum HoldReason { + #[codec(index = 0)] + SlashForMigrate, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum MigrationCompute { #[codec(index = 0)] Signed, @@ -40959,23 +46130,36 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] sudo { call: ::std::boxed::Box }, #[codec(index = 1)] - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] sudo_unchecked_weight { call: ::std::boxed::Box, weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] set_key { new: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()> }, #[codec(index = 3)] - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] sudo_as { who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, call: ::std::boxed::Box, }, + #[codec(index = 4)] + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] + remove_key, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -40987,10 +46171,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Sender must be the Sudo account"] + #[doc = "Sender must be the Sudo account."] RequireSudo, } #[derive( @@ -41006,16 +46190,22 @@ pub mod api { #[doc = "The `Event` enum of this pallet"] pub enum Event { #[codec(index = 0)] - #[doc = "A sudo just took place. \\[result\\]"] + #[doc = "A sudo call just took place."] Sudid { sudo_result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, }, #[codec(index = 1)] - #[doc = "The \\[sudoer\\] just switched identity; the old key is supplied if one existed."] - KeyChanged { old_sudoer: ::core::option::Option<::subxt::utils::AccountId32> }, + #[doc = "The sudo key has been updated."] + KeyChanged { + old: ::core::option::Option<::subxt::utils::AccountId32>, + new: ::subxt::utils::AccountId32, + }, #[codec(index = 2)] - #[doc = "A sudo just took place. \\[result\\]"] + #[doc = "The key was permanently removed."] + KeyRemoved, + #[codec(index = 3)] + #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] SudoAsDone { sudo_result: ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, @@ -41040,7 +46230,25 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] set { #[codec(compact)] now: ::core::primitive::u64, @@ -41048,141 +46256,6 @@ pub mod api { } } } - pub mod pallet_tips { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::report_awesome`]."] - report_awesome { - reason: ::std::vec::Vec<::core::primitive::u8>, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - }, - #[codec(index = 1)] - #[doc = "See [`Pallet::retract_tip`]."] - retract_tip { hash: ::subxt::utils::H256 }, - #[codec(index = 2)] - #[doc = "See [`Pallet::tip_new`]."] - tip_new { - reason: ::std::vec::Vec<::core::primitive::u8>, - who: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, - #[codec(compact)] - tip_value: ::core::primitive::u128, - }, - #[codec(index = 3)] - #[doc = "See [`Pallet::tip`]."] - tip { - hash: ::subxt::utils::H256, - #[codec(compact)] - tip_value: ::core::primitive::u128, - }, - #[codec(index = 4)] - #[doc = "See [`Pallet::close_tip`]."] - close_tip { hash: ::subxt::utils::H256 }, - #[codec(index = 5)] - #[doc = "See [`Pallet::slash_tip`]."] - slash_tip { hash: ::subxt::utils::H256 }, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "The reason given is just too big."] - ReasonTooBig, - #[codec(index = 1)] - #[doc = "The tip was already found/started."] - AlreadyKnown, - #[codec(index = 2)] - #[doc = "The tip hash is unknown."] - UnknownTip, - #[codec(index = 3)] - #[doc = "The account attempting to retract the tip is not the finder of the tip."] - NotFinder, - #[codec(index = 4)] - #[doc = "The tip cannot be claimed/closed because there are not enough tippers yet."] - StillOpen, - #[codec(index = 5)] - #[doc = "The tip cannot be claimed/closed because it's still in the countdown period."] - Premature, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "A new tip suggestion has been opened."] - NewTip { tip_hash: ::subxt::utils::H256 }, - #[codec(index = 1)] - #[doc = "A tip suggestion has reached threshold and is closing."] - TipClosing { tip_hash: ::subxt::utils::H256 }, - #[codec(index = 2)] - #[doc = "A tip suggestion has been closed."] - TipClosed { - tip_hash: ::subxt::utils::H256, - who: ::subxt::utils::AccountId32, - payout: ::core::primitive::u128, - }, - #[codec(index = 3)] - #[doc = "A tip suggestion has been retracted."] - TipRetracted { tip_hash: ::subxt::utils::H256 }, - #[codec(index = 4)] - #[doc = "A tip suggestion has been slashed."] - TipSlashed { - tip_hash: ::subxt::utils::H256, - finder: ::subxt::utils::AccountId32, - deposit: ::core::primitive::u128, - }, - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OpenTip<_0, _1, _2, _3> { - pub reason: _3, - pub who: _0, - pub finder: _0, - pub deposit: _1, - pub closes: ::core::option::Option<_2>, - pub tips: ::std::vec::Vec<(_0, _1)>, - pub finders_fee: ::core::primitive::bool, - } - } pub mod pallet_transaction_payment { use super::runtime_types; pub mod pallet { @@ -41303,37 +46376,214 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::propose_spend`]."] + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] propose_spend { #[codec(compact)] value: ::core::primitive::u128, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::reject_proposal`]."] + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] reject_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::approve_proposal`]."] + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] approve_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::spend`]."] - spend { + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] + spend_local { #[codec(compact)] amount: ::core::primitive::u128, beneficiary: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::remove_approval`]."] + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] remove_approval { #[codec(compact)] proposal_id: ::core::primitive::u32, }, + #[codec(index = 5)] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] + spend { + asset_kind: ::std::boxed::Box< + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + >, + #[codec(compact)] + amount: ::core::primitive::u128, + beneficiary: ::std::boxed::Box, + valid_from: ::core::option::Option<::core::primitive::u32>, + }, + #[codec(index = 6)] + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] + payout { index: ::core::primitive::u32 }, + #[codec(index = 7)] + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] + check_status { index: ::core::primitive::u32 }, + #[codec(index = 8)] + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] + void_spend { index: ::core::primitive::u32 }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41351,7 +46601,7 @@ pub mod api { #[doc = "Proposer's balance is too low."] InsufficientProposersBalance, #[codec(index = 1)] - #[doc = "No proposal or bounty at that index."] + #[doc = "No proposal, bounty or spend at that index."] InvalidIndex, #[codec(index = 2)] #[doc = "Too many approvals in the queue."] @@ -41363,6 +46613,27 @@ pub mod api { #[codec(index = 4)] #[doc = "Proposal has not been approved."] ProposalNotApproved, + #[codec(index = 5)] + #[doc = "The balance of the asset kind is not convertible to the balance of the native asset."] + FailedToConvertBalance, + #[codec(index = 6)] + #[doc = "The spend has expired and cannot be claimed."] + SpendExpired, + #[codec(index = 7)] + #[doc = "The spend is not yet eligible for payout."] + EarlyPayout, + #[codec(index = 8)] + #[doc = "The payment has already been attempted."] + AlreadyAttempted, + #[codec(index = 9)] + #[doc = "There was some issue with the mechanism of payment."] + PayoutError, + #[codec(index = 10)] + #[doc = "The payout was not yet attempted/claimed."] + NotAttempted, + #[codec(index = 11)] + #[doc = "The payment has neither failed nor succeeded yet."] + Inconclusive, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41417,6 +46688,33 @@ pub mod api { reactivated: ::core::primitive::u128, deactivated: ::core::primitive::u128, }, + #[codec(index = 9)] + #[doc = "A new asset spend proposal has been approved."] + AssetSpendApproved { + index: ::core::primitive::u32, + asset_kind: + runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, + amount: ::core::primitive::u128, + beneficiary: runtime_types::xcm::VersionedLocation, + valid_from: ::core::primitive::u32, + expire_at: ::core::primitive::u32, + }, + #[codec(index = 10)] + #[doc = "An approved spend was voided."] + AssetSpendVoided { index: ::core::primitive::u32 }, + #[codec(index = 11)] + #[doc = "A payment happened."] + Paid { index: ::core::primitive::u32, payment_id: ::core::primitive::u64 }, + #[codec(index = 12)] + #[doc = "A payment failed and can be retried."] + PaymentFailed { + index: ::core::primitive::u32, + payment_id: ::core::primitive::u64, + }, + #[codec(index = 13)] + #[doc = "A spend was processed and removed from the storage. It might have been successfully"] + #[doc = "paid or it may have expired."] + SpendProcessed { index: ::core::primitive::u32 }, } } #[derive( @@ -41429,12 +46727,48 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum PaymentState<_0> { + #[codec(index = 0)] + Pending, + #[codec(index = 1)] + Attempted { id: _0 }, + #[codec(index = 2)] + Failed, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct Proposal<_0, _1> { pub proposer: _0, pub value: _1, pub beneficiary: _0, pub bond: _1, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct SpendStatus<_0, _1, _2, _3, _4> { + pub asset_kind: _0, + pub amount: _1, + pub beneficiary: _2, + pub valid_from: _3, + pub expire_at: _3, + pub status: runtime_types::pallet_treasury::PaymentState<_4>, + } } pub mod pallet_utility { use super::runtime_types; @@ -41453,30 +46787,93 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] batch { calls: ::std::vec::Vec }, #[codec(index = 1)] - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] as_derivative { index: ::core::primitive::u16, call: ::std::boxed::Box, }, #[codec(index = 2)] - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] batch_all { calls: ::std::vec::Vec }, #[codec(index = 3)] - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] dispatch_as { as_origin: ::std::boxed::Box, call: ::std::boxed::Box, }, #[codec(index = 4)] - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] force_batch { calls: ::std::vec::Vec, }, #[codec(index = 5)] - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] with_weight { call: ::std::boxed::Box, weight: runtime_types::sp_weights::weight_v2::Weight, @@ -41555,15 +46952,45 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vest, #[codec(index = 1)] - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vest_other { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, }, #[codec(index = 2)] - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vested_transfer { target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, schedule: runtime_types::pallet_vesting::vesting_info::VestingInfo< @@ -41572,7 +46999,20 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] force_vested_transfer { source: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, @@ -41582,11 +47022,42 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] merge_schedules { schedule1_index: ::core::primitive::u32, schedule2_index: ::core::primitive::u32, }, + #[codec(index = 5)] + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] + force_remove_vesting_schedule { + target: ::subxt::utils::MultiAddress<::subxt::utils::AccountId32, ()>, + schedule_index: ::core::primitive::u32, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41676,6 +47147,94 @@ pub mod api { V1, } } + pub mod pallet_whitelist { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + whitelist_call { call_hash: ::subxt::utils::H256 }, + #[codec(index = 1)] + remove_whitelisted_call { call_hash: ::subxt::utils::H256 }, + #[codec(index = 2)] + dispatch_whitelisted_call { + call_hash: ::subxt::utils::H256, + call_encoded_len: ::core::primitive::u32, + call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 3)] + dispatch_whitelisted_call_with_preimage { + call: ::std::boxed::Box, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The preimage of the call hash could not be loaded."] + UnavailablePreImage, + #[codec(index = 1)] + #[doc = "The call could not be decoded."] + UndecodableCall, + #[codec(index = 2)] + #[doc = "The weight of the decoded call was higher than the witness."] + InvalidCallWeightWitness, + #[codec(index = 3)] + #[doc = "The call was not whitelisted."] + CallIsNotWhitelisted, + #[codec(index = 4)] + #[doc = "The call was already whitelisted; No-Op."] + CallAlreadyWhitelisted, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + CallWhitelisted { call_hash: ::subxt::utils::H256 }, + #[codec(index = 1)] + WhitelistedCallRemoved { call_hash: ::subxt::utils::H256 }, + #[codec(index = 2)] + WhitelistedCallDispatched { + call_hash: ::subxt::utils::H256, + result: ::core::result::Result< + runtime_types::frame_support::dispatch::PostDispatchInfo, + runtime_types::sp_runtime::DispatchErrorWithPostInfo< + runtime_types::frame_support::dispatch::PostDispatchInfo, + >, + >, + }, + } + } + } pub mod pallet_xcm { use super::runtime_types; pub mod pallet { @@ -41693,83 +47252,282 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::send`]."] + #[doc = "WARNING: DEPRECATED. `send` will be removed after June 2024. Use `send_blob` instead."] send { - dest: ::std::boxed::Box, - message: ::std::boxed::Box, + dest: ::std::boxed::Box, + message: ::std::boxed::Box, }, #[codec(index = 1)] - #[doc = "See [`Pallet::teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] teleport_assets { - dest: ::std::boxed::Box, - beneficiary: - ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: - ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::execute`]."] + #[doc = "Execute an XCM message from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] + #[doc = "partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "WARNING: DEPRECATED. `execute` will be removed after June 2024. Use `execute_blob`"] + #[doc = "instead."] execute { - message: ::std::boxed::Box, + message: ::std::boxed::Box, max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 4)] - #[doc = "See [`Pallet::force_xcm_version`]."] + #[doc = "Extoll that a particular destination can be communicated with through a particular"] + #[doc = "version of XCM."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The destination that is being described."] + #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] force_xcm_version { - location: ::std::boxed::Box< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >, + location: + ::std::boxed::Box, version: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_default_xcm_version`]."] + #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] + #[doc = "version a destination can accept is unknown)."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] force_default_xcm_version { maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] force_subscribe_version_notify { - location: - ::std::boxed::Box, + location: ::std::boxed::Box, }, #[codec(index = 7)] - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] + #[doc = "version changes."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] + #[doc = " notifications which we no longer desire."] force_unsubscribe_version_notify { - location: - ::std::boxed::Box, + location: ::std::boxed::Box, }, #[codec(index = 8)] - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] limited_reserve_transfer_assets { - dest: ::std::boxed::Box, - beneficiary: - ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 9)] - #[doc = "See [`Pallet::limited_teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] limited_teleport_assets { - dest: ::std::boxed::Box, - beneficiary: - ::std::boxed::Box, - assets: ::std::boxed::Box, + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, fee_asset_item: ::core::primitive::u32, - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 10)] - #[doc = "See [`Pallet::force_suspension`]."] + #[doc = "Set or unset the global suspension state of the XCM executor."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `suspended`: `true` to suspend, `false` to resume."] force_suspension { suspended: ::core::primitive::bool }, + #[codec(index = 11)] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve, or through teleports."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] + #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] + #[doc = "operation will fail and the sent assets may be at risk."] + #[doc = ""] + #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] + #[doc = "to `dest`, no limitations imposed on `fees`."] + #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] + #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] + #[doc = " `beneficiary`."] + #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] + #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] + #[doc = " to `beneficiary`."] + #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] + #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] + #[doc = " and deposit reserve-based assets to `beneficiary`."] + #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] + #[doc = " assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] + #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] + #[doc = " from relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + transfer_assets { + dest: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + assets: ::std::boxed::Box, + fee_asset_item: ::core::primitive::u32, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 12)] + #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] + #[doc = ""] + #[doc = "- `origin`: Anyone can call this extrinsic."] + #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] + #[doc = "was the latest when they were trapped."] + #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] + claim_assets { + assets: ::std::boxed::Box, + beneficiary: ::std::boxed::Box, + }, + #[codec(index = 13)] + #[doc = "Execute an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether the message could be executed completely"] + #[doc = "or only partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + execute_blob { + encoded_message: + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 14)] + #[doc = "Send an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "The destination, `dest`, will receive this message with a `DescendOrigin` instruction"] + #[doc = "that makes the origin of the message be the origin on this system."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + send_blob { + dest: ::std::boxed::Box, + encoded_message: + runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41798,7 +47556,7 @@ pub mod api { #[doc = "The message's weight could not be determined."] UnweighableMessage, #[codec(index = 4)] - #[doc = "The destination `MultiLocation` provided cannot be inverted."] + #[doc = "The destination `Location` provided cannot be inverted."] DestinationNotInvertible, #[codec(index = 5)] #[doc = "The assets to be sent are empty."] @@ -41826,8 +47584,8 @@ pub mod api { #[doc = "The location is invalid since it already has a subscription from us."] AlreadySubscribed, #[codec(index = 13)] - #[doc = "Invalid asset for the operation."] - InvalidAsset, + #[doc = "Could not check-out the assets for teleportation to the destination chain."] + CannotCheckOutTeleport, #[codec(index = 14)] #[doc = "The owner does not own (all) of the asset that they wish to do the operation on."] LowBalance, @@ -41846,6 +47604,28 @@ pub mod api { #[codec(index = 19)] #[doc = "The unlock operation cannot succeed because there are still consumers of the lock."] InUse, + #[codec(index = 20)] + #[doc = "Invalid non-concrete asset."] + InvalidAssetNotConcrete, + #[codec(index = 21)] + #[doc = "Invalid asset, reserve chain could not be determined for it."] + InvalidAssetUnknownReserve, + #[codec(index = 22)] + #[doc = "Invalid asset, do not support remote asset reserves with different fees reserves."] + InvalidAssetUnsupportedReserve, + #[codec(index = 23)] + #[doc = "Too many assets with different reserve locations have been attempted for transfer."] + TooManyReserves, + #[codec(index = 24)] + #[doc = "Local XCM execution incomplete."] + LocalExecutionIncomplete, + #[codec(index = 25)] + #[doc = "Could not decode XCM."] + UnableToDecode, + #[codec(index = 26)] + #[doc = "XCM encoded length is too large."] + #[doc = "Returned when an XCM encoded length is larger than `MaxXcmEncodedSize`."] + XcmTooLarge, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -41861,13 +47641,13 @@ pub mod api { pub enum Event { #[codec(index = 0)] #[doc = "Execution of an XCM message was attempted."] - Attempted { outcome: runtime_types::staging_xcm::v3::traits::Outcome }, + Attempted { outcome: runtime_types::staging_xcm::v4::traits::Outcome }, #[codec(index = 1)] #[doc = "A XCM message was sent."] Sent { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - message: runtime_types::staging_xcm::v3::Xcm, + origin: runtime_types::staging_xcm::v4::location::Location, + destination: runtime_types::staging_xcm::v4::location::Location, + message: runtime_types::staging_xcm::v4::Xcm, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] @@ -41875,7 +47655,7 @@ pub mod api { #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] UnexpectedResponse { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 3)] @@ -41883,7 +47663,7 @@ pub mod api { #[doc = "no registered notification call."] ResponseReady { query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v3::Response, + response: runtime_types::staging_xcm::v4::Response, }, #[codec(index = 4)] #[doc = "Query response has been received and query is removed. The registered notification has"] @@ -41926,10 +47706,10 @@ pub mod api { #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidResponder { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, expected_location: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 9)] @@ -41941,7 +47721,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidResponderVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 10)] @@ -41951,39 +47731,39 @@ pub mod api { #[doc = "Some assets have been placed in an asset trap."] AssetsTrapped { hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::staging_xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, #[codec(index = 12)] #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] VersionChangeNotified { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + destination: runtime_types::staging_xcm::v4::location::Location, result: ::core::primitive::u32, - cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 13)] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] SupportedVersionChanged { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, version: ::core::primitive::u32, }, #[codec(index = 14)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] NotifyTargetSendFail { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, - error: runtime_types::staging_xcm::v3::traits::Error, + error: runtime_types::xcm::v3::traits::Error, }, #[codec(index = 15)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] NotifyTargetMigrationFail { - location: runtime_types::staging_xcm::VersionedMultiLocation, + location: runtime_types::xcm::VersionedLocation, query_id: ::core::primitive::u64, }, #[codec(index = 16)] @@ -41995,7 +47775,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidQuerierVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 17)] @@ -42003,50 +47783,52 @@ pub mod api { #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidQuerier { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, - expected_querier: - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + expected_querier: runtime_types::staging_xcm::v4::location::Location, maybe_actual_querier: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 18)] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] VersionNotifyStarted { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 19)] #[doc = "We have requested that a remote chain send us XCM version change notifications."] VersionNotifyRequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 20)] #[doc = "We have requested that a remote chain stops sending us XCM version change"] #[doc = "notifications."] VersionNotifyUnrequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 21)] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] FeesPaid { - paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - fees: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + paying: runtime_types::staging_xcm::v4::location::Location, + fees: runtime_types::staging_xcm::v4::asset::Assets, }, #[codec(index = 22)] #[doc = "Some assets have been claimed from an asset trap"] AssetsClaimed { hash: ::subxt::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::staging_xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, + #[codec(index = 23)] + #[doc = "A XCM version migration finished."] + VersionMigrationFinished { version: ::core::primitive::u32 }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42060,9 +47842,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Origin { #[codec(index = 0)] - Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Xcm(runtime_types::staging_xcm::v4::location::Location), #[codec(index = 1)] - Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Response(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42077,21 +47859,20 @@ pub mod api { pub enum QueryStatus<_0> { #[codec(index = 0)] Pending { - responder: runtime_types::staging_xcm::VersionedMultiLocation, - maybe_match_querier: ::core::option::Option< - runtime_types::staging_xcm::VersionedMultiLocation, - >, + responder: runtime_types::xcm::VersionedLocation, + maybe_match_querier: + ::core::option::Option, maybe_notify: ::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>, timeout: _0, }, #[codec(index = 1)] VersionNotifier { - origin: runtime_types::staging_xcm::VersionedMultiLocation, + origin: runtime_types::xcm::VersionedLocation, is_active: ::core::primitive::bool, }, #[codec(index = 2)] - Ready { response: runtime_types::staging_xcm::VersionedResponse, at: _0 }, + Ready { response: runtime_types::xcm::VersionedResponse, at: _0 }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42105,8 +47886,8 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct RemoteLockedFungibleRecord<_0> { pub amount: ::core::primitive::u128, - pub owner: runtime_types::staging_xcm::VersionedMultiLocation, - pub locker: runtime_types::staging_xcm::VersionedMultiLocation, + pub owner: runtime_types::xcm::VersionedLocation, + pub locker: runtime_types::xcm::VersionedLocation, pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec<( _0, ::core::primitive::u128, @@ -42259,7 +48040,7 @@ pub mod api { } pub mod polkadot_primitives { use super::runtime_types; - pub mod v5 { + pub mod v7 { use super::runtime_types; pub mod assignment_app { use super::runtime_types; @@ -42273,7 +48054,92 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); + } + pub mod async_backing { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AsyncBackingParams { + pub max_candidate_depth: ::core::primitive::u32, + pub allowed_ancestry_len: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BackingState < _0 , _1 > { pub constraints : runtime_types :: polkadot_primitives :: v7 :: async_backing :: Constraints < _1 > , pub pending_availability : :: std :: vec :: Vec < runtime_types :: polkadot_primitives :: v7 :: async_backing :: CandidatePendingAvailability < _0 , _1 > > , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CandidatePendingAvailability<_0, _1> { + pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, + pub descriptor: + runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, + pub commitments: + runtime_types::polkadot_primitives::v7::CandidateCommitments<_1>, + pub relay_parent_number: _1, + pub max_pov_size: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Constraints < _0 > { pub min_relay_parent_number : _0 , pub max_pov_size : :: core :: primitive :: u32 , pub max_code_size : :: core :: primitive :: u32 , pub ump_remaining : :: core :: primitive :: u32 , pub ump_remaining_bytes : :: core :: primitive :: u32 , pub max_ump_num_per_candidate : :: core :: primitive :: u32 , pub dmp_remaining_messages : :: std :: vec :: Vec < _0 > , pub hrmp_inbound : runtime_types :: polkadot_primitives :: v7 :: async_backing :: InboundHrmpLimitations < _0 > , pub hrmp_channels_out : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v7 :: async_backing :: OutboundHrmpChannelLimitations ,) > , pub max_hrmp_num_per_candidate : :: core :: primitive :: u32 , pub required_parent : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub upgrade_restriction : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v7 :: UpgradeRestriction > , pub future_validation_code : :: core :: option :: Option < (_0 , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct InboundHrmpLimitations<_0> { + pub valid_watermarks: ::std::vec::Vec<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OutboundHrmpChannelLimitations { + pub bytes_remaining: ::core::primitive::u32, + pub messages_remaining: ::core::primitive::u32, + } } pub mod collator_app { use super::runtime_types; @@ -42287,7 +48153,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -42298,7 +48164,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + pub struct Signature(pub [::core::primitive::u8; 64usize]); } pub mod executor_params { use super::runtime_types; @@ -42323,12 +48189,12 @@ pub mod api { PrecheckingMaxMemory(::core::primitive::u64), #[codec(index = 5)] PvfPrepTimeout( - runtime_types::polkadot_primitives::v5::PvfPrepTimeoutKind, + runtime_types::polkadot_primitives::v7::PvfPrepKind, ::core::primitive::u64, ), #[codec(index = 6)] PvfExecTimeout( - runtime_types::polkadot_primitives::v5::PvfExecTimeoutKind, + runtime_types::polkadot_primitives::v7::PvfExecKind, ::core::primitive::u64, ), #[codec(index = 7)] @@ -42346,7 +48212,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct ExecutorParams( pub ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::executor_params::ExecutorParam, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParam, >, ); } @@ -42364,9 +48230,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct UncheckedSigned<_0, _1> { pub payload: _0, - pub validator_index: runtime_types::polkadot_primitives::v5::ValidatorIndex, + pub validator_index: runtime_types::polkadot_primitives::v7::ValidatorIndex, pub signature: - runtime_types::polkadot_primitives::v5::validator_app::Signature, + runtime_types::polkadot_primitives::v7::validator_app::Signature, #[codec(skip)] pub __subxt_unused_type_params: ::core::marker::PhantomData<_1>, } @@ -42385,12 +48251,12 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct DisputeProof { pub time_slot: - runtime_types::polkadot_primitives::v5::slashing::DisputesTimeSlot, + runtime_types::polkadot_primitives::v7::slashing::DisputesTimeSlot, pub kind: - runtime_types::polkadot_primitives::v5::slashing::SlashingOffenceKind, - pub validator_index: runtime_types::polkadot_primitives::v5::ValidatorIndex, + runtime_types::polkadot_primitives::v7::slashing::SlashingOffenceKind, + pub validator_index: runtime_types::polkadot_primitives::v7::ValidatorIndex, pub validator_id: - runtime_types::polkadot_primitives::v5::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42429,11 +48295,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct PendingSlashes { pub keys: ::subxt::utils::KeyedVec< - runtime_types::polkadot_primitives::v5::ValidatorIndex, - runtime_types::polkadot_primitives::v5::validator_app::Public, + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub kind: - runtime_types::polkadot_primitives::v5::slashing::SlashingOffenceKind, + runtime_types::polkadot_primitives::v7::slashing::SlashingOffenceKind, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42464,7 +48330,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -42475,9 +48341,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + pub struct Signature(pub [::core::primitive::u8; 64usize]); } #[derive( + :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -42487,8 +48354,8 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Assignment { - pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub struct ApprovalVotingParams { + pub max_approval_coalesce_count: ::core::primitive::u32, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42518,9 +48385,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct BackedCandidate<_0> { pub candidate: - runtime_types::polkadot_primitives::v5::CommittedCandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CommittedCandidateReceipt<_0>, pub validity_votes: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::ValidityAttestation, + runtime_types::polkadot_primitives::v7::ValidityAttestation, >, pub validator_indices: ::subxt::utils::bits::DecodedBits< ::core::primitive::u8, @@ -42566,7 +48433,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CandidateDescriptor < _0 > { pub para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , pub relay_parent : _0 , pub collator : runtime_types :: polkadot_primitives :: v5 :: collator_app :: Public , pub persisted_validation_data_hash : :: subxt :: utils :: H256 , pub pov_hash : :: subxt :: utils :: H256 , pub erasure_root : :: subxt :: utils :: H256 , pub signature : runtime_types :: polkadot_primitives :: v5 :: collator_app :: Signature , pub para_head : :: subxt :: utils :: H256 , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } + pub struct CandidateDescriptor < _0 > { pub para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , pub relay_parent : _0 , pub collator : runtime_types :: polkadot_primitives :: v7 :: collator_app :: Public , pub persisted_validation_data_hash : :: subxt :: utils :: H256 , pub pov_hash : :: subxt :: utils :: H256 , pub erasure_root : :: subxt :: utils :: H256 , pub signature : runtime_types :: polkadot_primitives :: v7 :: collator_app :: Signature , pub para_head : :: subxt :: utils :: H256 , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -42580,23 +48447,23 @@ pub mod api { pub enum CandidateEvent<_0> { #[codec(index = 0)] CandidateBacked( - runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v5::CoreIndex, - runtime_types::polkadot_primitives::v5::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 1)] CandidateIncluded( - runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v5::CoreIndex, - runtime_types::polkadot_primitives::v5::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 2)] CandidateTimedOut( - runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v5::CoreIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, ), } #[derive( @@ -42610,7 +48477,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CandidateReceipt<_0> { - pub descriptor: runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, + pub descriptor: runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, pub commitments_hash: ::subxt::utils::H256, } #[derive( @@ -42624,8 +48491,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CommittedCandidateReceipt<_0> { - pub descriptor: runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, - pub commitments: runtime_types::polkadot_primitives::v5::CandidateCommitments< + pub descriptor: runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, + pub commitments: runtime_types::polkadot_primitives::v7::CandidateCommitments< ::core::primitive::u32, >, } @@ -42651,27 +48518,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum CoreOccupied<_0> { - #[codec(index = 0)] - Free, - #[codec(index = 1)] - Paras(runtime_types::polkadot_primitives::v5::ParasEntry<_0>), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum CoreState<_0, _1> { #[codec(index = 0)] - Occupied(runtime_types::polkadot_primitives::v5::OccupiedCore<_0, _1>), + Occupied(runtime_types::polkadot_primitives::v7::OccupiedCore<_0, _1>), #[codec(index = 1)] - Scheduled(runtime_types::polkadot_primitives::v5::ScheduledCore), + Scheduled(runtime_types::polkadot_primitives::v7::ScheduledCore), #[codec(index = 2)] Free, } @@ -42709,9 +48560,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum DisputeStatement { #[codec(index = 0)] - Valid(runtime_types::polkadot_primitives::v5::ValidDisputeStatementKind), + Valid(runtime_types::polkadot_primitives::v7::ValidDisputeStatementKind), #[codec(index = 1)] - Invalid(runtime_types::polkadot_primitives::v5::InvalidDisputeStatementKind), + Invalid(runtime_types::polkadot_primitives::v7::InvalidDisputeStatementKind), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42727,9 +48578,9 @@ pub mod api { pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub session: ::core::primitive::u32, pub statements: ::std::vec::Vec<( - runtime_types::polkadot_primitives::v5::DisputeStatement, - runtime_types::polkadot_primitives::v5::ValidatorIndex, - runtime_types::polkadot_primitives::v5::validator_app::Signature, + runtime_types::polkadot_primitives::v7::DisputeStatement, + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::validator_app::Signature, )>, } #[derive( @@ -42785,18 +48636,18 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct InherentData<_0> { pub bitfields: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::signed::UncheckedSigned< - runtime_types::polkadot_primitives::v5::AvailabilityBitfield, - runtime_types::polkadot_primitives::v5::AvailabilityBitfield, + runtime_types::polkadot_primitives::v7::signed::UncheckedSigned< + runtime_types::polkadot_primitives::v7::AvailabilityBitfield, + runtime_types::polkadot_primitives::v7::AvailabilityBitfield, >, >, pub backed_candidates: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::BackedCandidate< + runtime_types::polkadot_primitives::v7::BackedCandidate< ::subxt::utils::H256, >, >, pub disputes: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::DisputeStatementSet, + runtime_types::polkadot_primitives::v7::DisputeStatementSet, >, pub parent_header: _0, } @@ -42826,21 +48677,21 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct OccupiedCore<_0, _1> { pub next_up_on_available: ::core::option::Option< - runtime_types::polkadot_primitives::v5::ScheduledCore, + runtime_types::polkadot_primitives::v7::ScheduledCore, >, pub occupied_since: _1, pub time_out_at: _1, pub next_up_on_time_out: ::core::option::Option< - runtime_types::polkadot_primitives::v5::ScheduledCore, + runtime_types::polkadot_primitives::v7::ScheduledCore, >, pub availability: ::subxt::utils::bits::DecodedBits< ::core::primitive::u8, ::subxt::utils::bits::Lsb0, >, - pub group_responsible: runtime_types::polkadot_primitives::v5::GroupIndex, + pub group_responsible: runtime_types::polkadot_primitives::v7::GroupIndex, pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub candidate_descriptor: - runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, + runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42870,21 +48721,6 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ParasEntry<_0> { - pub assignment: runtime_types::polkadot_primitives::v5::Assignment, - pub availability_timeouts: ::core::primitive::u32, - pub ttl: _0, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct PersistedValidationData<_0, _1> { pub parent_head: runtime_types::polkadot_parachain_primitives::primitives::HeadData, @@ -42902,7 +48738,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct PvfCheckStatement { pub accept : :: core :: primitive :: bool , pub subject : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub session_index : :: core :: primitive :: u32 , pub validator_index : runtime_types :: polkadot_primitives :: v5 :: ValidatorIndex , } + pub struct PvfCheckStatement { pub accept : :: core :: primitive :: bool , pub subject : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub session_index : :: core :: primitive :: u32 , pub validator_index : runtime_types :: polkadot_primitives :: v7 :: ValidatorIndex , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -42913,7 +48749,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfExecTimeoutKind { + pub enum PvfExecKind { #[codec(index = 0)] Backing, #[codec(index = 1)] @@ -42929,11 +48765,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum PvfPrepTimeoutKind { + pub enum PvfPrepKind { #[codec(index = 0)] Precheck, #[codec(index = 1)] - Lenient, + Prepare, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -42948,7 +48784,7 @@ pub mod api { pub struct ScheduledCore { pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, pub collator: ::core::option::Option< - runtime_types::polkadot_primitives::v5::collator_app::Public, + runtime_types::polkadot_primitives::v7::collator_app::Public, >, } #[derive( @@ -42964,14 +48800,14 @@ pub mod api { pub struct ScrapedOnChainVotes<_0> { pub session: ::core::primitive::u32, pub backing_validators_per_candidate: ::std::vec::Vec<( - runtime_types::polkadot_primitives::v5::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, ::std::vec::Vec<( - runtime_types::polkadot_primitives::v5::ValidatorIndex, - runtime_types::polkadot_primitives::v5::ValidityAttestation, + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidityAttestation, )>, )>, pub disputes: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::DisputeStatementSet, + runtime_types::polkadot_primitives::v7::DisputeStatementSet, >, } #[derive( @@ -42986,21 +48822,21 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct SessionInfo { pub active_validator_indices: - ::std::vec::Vec, + ::std::vec::Vec, pub random_seed: [::core::primitive::u8; 32usize], pub dispute_period: ::core::primitive::u32, - pub validators: runtime_types::polkadot_primitives::v5::IndexedVec< - runtime_types::polkadot_primitives::v5::ValidatorIndex, - runtime_types::polkadot_primitives::v5::validator_app::Public, + pub validators: runtime_types::polkadot_primitives::v7::IndexedVec< + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub discovery_keys: ::std::vec::Vec, pub assignment_keys: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::assignment_app::Public, + runtime_types::polkadot_primitives::v7::assignment_app::Public, >, - pub validator_groups: runtime_types::polkadot_primitives::v5::IndexedVec< - runtime_types::polkadot_primitives::v5::GroupIndex, - ::std::vec::Vec, + pub validator_groups: runtime_types::polkadot_primitives::v7::IndexedVec< + runtime_types::polkadot_primitives::v7::GroupIndex, + ::std::vec::Vec, >, pub n_cores: ::core::primitive::u32, pub zeroth_delay_tranche_width: ::core::primitive::u32, @@ -43058,6 +48894,10 @@ pub mod api { BackingValid(::subxt::utils::H256), #[codec(index = 3)] ApprovalChecking, + #[codec(index = 4)] + ApprovalCheckingMultipleCandidates( + ::std::vec::Vec, + ), } #[derive( :: subxt :: ext :: codec :: CompactAs, @@ -43083,9 +48923,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum ValidityAttestation { #[codec(index = 1)] - Implicit(runtime_types::polkadot_primitives::v5::validator_app::Signature), + Implicit(runtime_types::polkadot_primitives::v7::validator_app::Signature), #[codec(index = 2)] - Explicit(runtime_types::polkadot_primitives::v5::validator_app::Signature), + Explicit(runtime_types::polkadot_primitives::v7::validator_app::Signature), } } pub mod vstaging { @@ -43100,84 +48940,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct AsyncBackingParams { - pub max_candidate_depth: ::core::primitive::u32, - pub allowed_ancestry_len: ::core::primitive::u32, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct BackingState<_0, _1> { - pub constraints: runtime_types::polkadot_primitives::vstaging::Constraints<_1>, - pub pending_availability: ::std::vec::Vec< - runtime_types::polkadot_primitives::vstaging::CandidatePendingAvailability< - _0, - _1, - >, - >, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct CandidatePendingAvailability<_0, _1> { - pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, - pub descriptor: runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, - pub commitments: - runtime_types::polkadot_primitives::v5::CandidateCommitments<_1>, - pub relay_parent_number: _1, - pub max_pov_size: ::core::primitive::u32, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Constraints < _0 > { pub min_relay_parent_number : _0 , pub max_pov_size : :: core :: primitive :: u32 , pub max_code_size : :: core :: primitive :: u32 , pub ump_remaining : :: core :: primitive :: u32 , pub ump_remaining_bytes : :: core :: primitive :: u32 , pub max_ump_num_per_candidate : :: core :: primitive :: u32 , pub dmp_remaining_messages : :: std :: vec :: Vec < _0 > , pub hrmp_inbound : runtime_types :: polkadot_primitives :: vstaging :: InboundHrmpLimitations < _0 > , pub hrmp_channels_out : :: std :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: vstaging :: OutboundHrmpChannelLimitations ,) > , pub max_hrmp_num_per_candidate : :: core :: primitive :: u32 , pub required_parent : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub upgrade_restriction : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v5 :: UpgradeRestriction > , pub future_validation_code : :: core :: option :: Option < (_0 , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > , } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct InboundHrmpLimitations<_0> { - pub valid_watermarks: ::std::vec::Vec<_0>, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OutboundHrmpChannelLimitations { - pub bytes_remaining: ::core::primitive::u32, - pub messages_remaining: ::core::primitive::u32, + pub struct SchedulerParams<_0> { + pub group_rotation_frequency: _0, + pub paras_availability_period: _0, + pub max_validators_per_core: ::core::option::Option<_0>, + pub lookahead: ::core::primitive::u32, + pub num_cores: ::core::primitive::u32, + pub max_availability_timeouts: ::core::primitive::u32, + pub on_demand_queue_max_size: ::core::primitive::u32, + pub on_demand_target_queue_utilization: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_fee_variability: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_base_fee: ::core::primitive::u128, + pub ttl: _0, } } } @@ -43199,7 +48975,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::assign_perm_parachain_slot`]."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "See [`Pallet::assign_temp_parachain_slot`]."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "See [`Pallet::unassign_parachain_slot`]."] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_permanent_slots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_temporary_slots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Assign a permanent parachain slot and immediately create a lease for it."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] # [doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] # [doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "Unassign a permanent or temporary parachain slot"] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Sets the storage value [`MaxPermanentSlots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Sets the storage value [`MaxTemporarySlots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -43321,7 +49097,11 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] new_auction { #[codec(compact)] duration: ::core::primitive::u32, @@ -43329,7 +49109,22 @@ pub mod api { lease_period_index: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] bid { #[codec(compact)] para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -43343,7 +49138,9 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] cancel_auction, } #[derive( @@ -43461,14 +49258,51 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] claim { dest: ::subxt::utils::AccountId32, ethereum_signature: runtime_types::polkadot_runtime_common::claims::EcdsaSignature, }, #[codec(index = 1)] - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] mint_claim { who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, value: ::core::primitive::u128, @@ -43482,7 +49316,33 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] claim_attest { dest: ::subxt::utils::AccountId32, ethereum_signature: @@ -43490,10 +49350,27 @@ pub mod api { statement: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] attest { statement: ::std::vec::Vec<::core::primitive::u8> }, #[codec(index = 4)] - #[doc = "See [`Pallet::move_claim`]."] move_claim { old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -43610,7 +49487,11 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] create { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -43626,7 +49507,8 @@ pub mod api { ::core::option::Option, }, #[codec(index = 1)] - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] contribute { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -43636,26 +49518,48 @@ pub mod api { ::core::option::Option, }, #[codec(index = 2)] - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] withdraw { who: ::subxt::utils::AccountId32, #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] refund { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] dissolve { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 5)] - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] edit { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -43671,16 +49575,22 @@ pub mod api { ::core::option::Option, }, #[codec(index = 6)] - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] add_memo { index: runtime_types::polkadot_parachain_primitives::primitives::Id, memo: ::std::vec::Vec<::core::primitive::u8>, }, #[codec(index = 7)] - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] poke { index: runtime_types::polkadot_parachain_primitives::primitives::Id }, #[codec(index = 8)] - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] contribute_all { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -43890,6 +49800,82 @@ pub mod api { Ending(_0), } } + pub mod identity_migrator { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] + reap_identity { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] + poke_deposit { who: ::subxt::utils::AccountId32 }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The identity and all sub accounts were reaped for `who`."] + IdentityReaped { who: ::subxt::utils::AccountId32 }, + #[codec(index = 1)] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + DepositUpdated { + who: ::subxt::utils::AccountId32, + identity: ::core::primitive::u128, + subs: ::core::primitive::u128, + }, + } + } + } + pub mod impls { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum VersionedLocatableAsset { + #[codec(index = 3)] + V3 { + location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + asset_id: runtime_types::xcm::v3::multiasset::AssetId, + }, + #[codec(index = 4)] + V4 { + location: runtime_types::staging_xcm::v4::location::Location, + asset_id: runtime_types::staging_xcm::v4::asset::AssetId, + }, + } + } pub mod paras_registrar { use super::runtime_types; pub mod pallet { @@ -43906,7 +49892,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::register`]."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_register`]."] force_register { who : :: subxt :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "See [`Pallet::deregister`]."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::swap`]."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "See [`Pallet::remove_lock`]."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::reserve`]."] reserve , # [codec (index = 6)] # [doc = "See [`Pallet::add_lock`]."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "See [`Pallet::schedule_code_upgrade`]."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_current_head`]."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } + # [codec (index = 0)] # [doc = "Register head data and validation code for a reserved Para Id."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin."] # [doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] # [doc = "- `genesis_head`: The genesis head data of the parachain/thread."] # [doc = "- `validation_code`: The initial validation code of the parachain/thread."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The account with the originating signature must reserve a deposit."] # [doc = ""] # [doc = "The deposit is required to cover the costs associated with storing the genesis head"] # [doc = "data and the validation code."] # [doc = "This accounts for the potential to store validation code of a size up to the"] # [doc = "`max_code_size`, as defined in the configuration pallet"] # [doc = ""] # [doc = "Anything already reserved previously for this para ID is accounted for."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Registered` event is emitted in case of success."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Force the registration of a Para Id on the relay chain."] # [doc = ""] # [doc = "This function must be called by a Root origin."] # [doc = ""] # [doc = "The deposit taken can be specified for this registration. Any `ParaId`"] # [doc = "can be registered, including sub-1000 IDs which are System Parachains."] force_register { who : :: subxt :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "Deregister a Para Id, freeing all data and returning any deposit."] # [doc = ""] # [doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] # [doc = "on-demand parachain."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] # [doc = "holding."] # [doc = ""] # [doc = "The origin must be Root, the `para` owner, or the `para` itself."] # [doc = ""] # [doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] # [doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] # [doc = ""] # [doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] # [doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] # [doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] # [doc = "parachain), auction information and the auction deposit are switched."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "Remove a manager lock from a para. This will allow the manager of a"] # [doc = "previously locked para to deregister or swap a para without using governance."] # [doc = ""] # [doc = "Can only be called by the Root origin or the parachain."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Reserve a Para Id on the relay chain."] # [doc = ""] # [doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] # [doc = "The origin account is able to register head data and validation code using `register` to"] # [doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] # [doc = "be upgraded to a lease holding parachain."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] # [doc = " para ID."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] # [doc = "use."] reserve , # [codec (index = 6)] # [doc = "Add a manager lock from a para. This will prevent the manager of a"] # [doc = "para to deregister or swap a para."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "Schedule a parachain upgrade."] # [doc = ""] # [doc = "This will kick off a check of `new_code` by all validators. After the majority of the"] # [doc = "validators have reported on the validity of the code, the code will either be enacted"] # [doc = "or the upgrade will be rejected. If the code will be enacted, the current code of the"] # [doc = "parachain will be overwritten directly. This means that any PoV will be checked by this"] # [doc = "new code. The parachain itself will not be informed explictely that the validation code"] # [doc = "has changed."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "Set the parachain's current head."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -43957,8 +49943,8 @@ pub mod api { #[doc = "The ID given for registration has not been reserved."] NotReserved, #[codec(index = 12)] - #[doc = "Registering parachain with empty code is not allowed."] - EmptyCode, + #[doc = "The validation code is invalid."] + InvalidCode, #[codec(index = 13)] #[doc = "Cannot perform a parachain slot / lifecycle swap. Check that the state of both paras"] #[doc = "are correct for the swap to work."] @@ -44030,35 +50016,45 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] sudo_schedule_para_initialize { id: runtime_types::polkadot_parachain_primitives::primitives::Id, genesis: runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, }, #[codec(index = 1)] - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] sudo_schedule_para_cleanup { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] sudo_schedule_parathread_upgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] sudo_schedule_parachain_downgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] sudo_queue_downward_xcm { id: runtime_types::polkadot_parachain_primitives::primitives::Id, - xcm: ::std::boxed::Box, + xcm: ::std::boxed::Box, }, #[codec(index = 5)] - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] sudo_establish_hrmp_channel { sender: runtime_types::polkadot_parachain_primitives::primitives::Id, recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -44103,6 +50099,9 @@ pub mod api { #[codec(index = 7)] #[doc = "Cannot downgrade lease holding parachain to on-demand."] CannotDowngrade, + #[codec(index = 8)] + #[doc = "There are more cores than supported by the runtime."] + TooManyCores, } } } @@ -44123,7 +50122,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] force_lease { para: runtime_types::polkadot_parachain_primitives::primitives::Id, leaser: ::subxt::utils::AccountId32, @@ -44132,12 +50134,20 @@ pub mod api { period_count: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] clear_all_leases { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] trigger_onboard { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, @@ -44194,6 +50204,125 @@ pub mod api { } pub mod polkadot_runtime_parachains { use super::runtime_types; + pub mod assigner_coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + AssignmentsEmpty, + #[codec(index = 1)] + #[doc = "Assignments together exceeded 57600."] + OverScheduled, + #[codec(index = 2)] + #[doc = "Assignments together less than 57600"] + UnderScheduled, + #[codec(index = 3)] + #[doc = "assign_core is only allowed to append new assignments at the end of already existing"] + #[doc = "ones."] + DisallowedInsert, + #[codec(index = 4)] + #[doc = "Tried to insert a schedule for the same core and block number as an existing schedule"] + DuplicateInsert, + #[codec(index = 5)] + #[doc = "Tried to add an unsorted set of assignments"] + AssignmentsNotSorted, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssignmentState { + pub ratio: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + pub remaining: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct CoreDescriptor < _0 > { pub queue : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: QueueDescriptor < _0 > > , pub current_work : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: WorkState < _0 > > , } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct PartsOf57600(pub ::core::primitive::u16); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueueDescriptor<_0> { + pub first: _0, + pub last: _0, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Schedule<_0> { + pub assignments: ::std::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>, + pub end_hint: ::core::option::Option<_0>, + pub next_schedule: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct WorkState < _0 > { pub assignments : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: AssignmentState ,) > , pub end_hint : :: core :: option :: Option < _0 > , pub pos : :: core :: primitive :: u16 , pub step : runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 , } + } pub mod assigner_on_demand { use super::runtime_types; pub mod pallet { @@ -44211,13 +50340,43 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] place_order_allow_death { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 1)] - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] place_order_keep_alive { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -44236,20 +50395,12 @@ pub mod api { #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "The `ParaId` supplied to the `place_order` call is not a valid `ParaThread`, making the"] - #[doc = "call is invalid."] - InvalidParaId, - #[codec(index = 1)] #[doc = "The order queue is full, `place_order` will not continue."] QueueFull, - #[codec(index = 2)] + #[codec(index = 1)] #[doc = "The current spot price is higher than the max amount specified in the `place_order`"] #[doc = "call, making it invalid."] SpotPriceHigherThanMaxAmount, - #[codec(index = 3)] - #[doc = "There are no on demand cores available. `place_order` will not add anything to the"] - #[doc = "queue."] - NoOnDemandCores, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -44287,9 +50438,59 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CoreAffinityCount { - pub core_idx: runtime_types::polkadot_primitives::v5::CoreIndex, + pub core_index: runtime_types::polkadot_primitives::v7::CoreIndex, pub count: ::core::primitive::u32, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct EnqueuedOrder { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub idx: + runtime_types::polkadot_runtime_parachains::assigner_on_demand::QueueIndex, + } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueueIndex(pub ::core::primitive::u32); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct QueueStatusType { pub traffic : runtime_types :: sp_arithmetic :: fixed_point :: FixedU128 , pub next_index : runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: QueueIndex , pub smallest_index : runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: QueueIndex , pub freed_indices : :: std :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: ReverseQueueIndex > , } + #[derive( + :: subxt :: ext :: codec :: CompactAs, + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ReverseQueueIndex(pub ::core::primitive::u32); } pub mod configuration { use super::runtime_types; @@ -44307,7 +50508,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_on_demand_cores`]."] set_on_demand_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: vstaging :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v5 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Set the validation upgrade cooldown."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Set the validation upgrade delay."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "Set the acceptance period for an included candidate."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Set the max validation code size for incoming upgrades."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Set the max POV block size for incoming upgrades."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Set the max head data size for paras."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "Set the number of coretime execution cores."] # [doc = ""] # [doc = "NOTE: that this configuration is managed by the coretime chain. Only manually change"] # [doc = "this, if you really know what you are doing!"] set_coretime_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] set_max_availability_timeouts { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Set the parachain validator-group rotation frequency"] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "Set the availability period for paras."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "Set the maximum number of validators to assign to any core."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "Set the maximum number of validators to use in parachain consensus."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "Set the dispute period, in number of sessions to keep for disputes."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "Set the dispute post conclusion acceptance period."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "Set the no show slots, in number of number of consensus slots."] # [doc = "Must be at least 1."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "Set the total number of delay tranches."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "Set the zeroth delay tranche width."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "Set the number of validators needed to approve a block."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "Sets the maximum items that can present in a upward dispatch queue at once."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] # [doc = "once."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "Set the critical downward message size."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "Sets the maximum size of an upward message that can be sent by a candidate."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "Sets the maximum number of messages that a candidate can contain."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "Sets the number of sessions after which an HRMP open channel request expires."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] # [doc = "channel."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] # [doc = "upgrade taking place."] # [doc = ""] # [doc = "See the field documentation for information and constraints for the new value."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "Setting this to true will disable consistency checks for the configuration setters."] # [doc = "Use with caution."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "Set the asynchronous backing parameters."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v7 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "Set PVF executor parameters."] set_executor_params { new : runtime_types :: polkadot_primitives :: v7 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "Set the on demand (parathreads) base fee."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "Set the on demand (parathreads) queue max size."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "Set the on demand (parathreads) ttl in the claimqueue."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "Set the minimum backing votes threshold."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , # [codec (index = 53)] # [doc = "Set/Unset a node feature."] set_node_feature { index : :: core :: primitive :: u8 , value : :: core :: primitive :: bool , } , # [codec (index = 54)] # [doc = "Set approval-voting-params."] set_approval_voting_params { new : runtime_types :: polkadot_primitives :: v7 :: ApprovalVotingParams , } , # [codec (index = 55)] # [doc = "Set scheduler-params."] set_scheduler_params { new : runtime_types :: polkadot_primitives :: vstaging :: SchedulerParams < :: core :: primitive :: u32 > , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -44346,7 +50547,7 @@ pub mod api { pub validation_upgrade_cooldown: _0, pub validation_upgrade_delay: _0, pub async_backing_params: - runtime_types::polkadot_primitives::vstaging::AsyncBackingParams, + runtime_types::polkadot_primitives::v7::async_backing::AsyncBackingParams, pub max_pov_size: ::core::primitive::u32, pub max_downward_message_size: ::core::primitive::u32, pub hrmp_max_parachain_outbound_channels: ::core::primitive::u32, @@ -44357,21 +50558,8 @@ pub mod api { pub hrmp_max_parachain_inbound_channels: ::core::primitive::u32, pub hrmp_channel_max_message_size: ::core::primitive::u32, pub executor_params: - runtime_types::polkadot_primitives::v5::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, pub code_retention_period: _0, - pub on_demand_cores: ::core::primitive::u32, - pub on_demand_retries: ::core::primitive::u32, - pub on_demand_queue_max_size: ::core::primitive::u32, - pub on_demand_target_queue_utilization: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_fee_variability: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_base_fee: ::core::primitive::u128, - pub on_demand_ttl: _0, - pub group_rotation_frequency: _0, - pub paras_availability_period: _0, - pub scheduling_lookahead: ::core::primitive::u32, - pub max_validators_per_core: ::core::option::Option<_0>, pub max_validators: ::core::option::Option<_0>, pub dispute_period: ::core::primitive::u32, pub dispute_post_conclusion_acceptance_period: _0, @@ -44383,6 +50571,68 @@ pub mod api { pub pvf_voting_ttl: ::core::primitive::u32, pub minimum_validation_upgrade_delay: _0, pub minimum_backing_votes: ::core::primitive::u32, + pub node_features: ::subxt::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::utils::bits::Lsb0, + >, + pub approval_voting_params: + runtime_types::polkadot_primitives::v7::ApprovalVotingParams, + pub scheduler_params: + runtime_types::polkadot_primitives::vstaging::SchedulerParams<_0>, + } + } + pub mod coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 1)] request_core_count { count : :: core :: primitive :: u16 , } , # [codec (index = 4)] # [doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] # [doc = "to be used."] # [doc = ""] # [doc = "Parameters:"] # [doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] # [doc = "-`core`: The core that should be scheduled."] # [doc = "-`begin`: The starting blockheight of the instruction."] # [doc = "-`assignment`: How the blockspace should be utilised."] # [doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] assign_core { core : :: core :: primitive :: u16 , begin : :: core :: primitive :: u32 , assignment : :: std :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 ,) > , end_hint : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The paraid making the call is not the coretime brokerage system parachain."] + NotBroker, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The broker chain has asked for revenue information for a specific block."] + RevenueInfoRequested { when: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "A core has received a new assignment from the broker chain."] + CoreAssigned { core: runtime_types::polkadot_primitives::v7::CoreIndex }, + } } } pub mod disputes { @@ -44402,7 +50652,6 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_unfreeze`]."] force_unfreeze, } #[derive( @@ -44495,10 +50744,9 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] report_dispute_lost_unsigned { dispute_proof: ::std::boxed::Box< - runtime_types::polkadot_primitives::v5::slashing::DisputeProof, + runtime_types::polkadot_primitives::v7::slashing::DisputeProof, >, key_owner_proof: runtime_types::sp_session::MembershipProof, }, @@ -44586,7 +50834,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::hrmp_init_open_channel`]."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::hrmp_accept_open_channel`]."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "See [`Pallet::hrmp_close_channel`]."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_clean_hrmp`]."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , inbound : :: core :: primitive :: u32 , outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_process_hrmp_open`]."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::force_process_hrmp_close`]."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::hrmp_cancel_open_request`]."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::force_open_hrmp_channel`]."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] # [doc = "parameters."] # [doc = ""] # [doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] # [doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] # [doc = ""] # [doc = "These numbers are a subject to the relay-chain configuration limits."] # [doc = ""] # [doc = "The channel can be opened only after the recipient confirms it and only on a session"] # [doc = "change."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Accept a pending open channel request from the given sender."] # [doc = ""] # [doc = "The channel will be opened only on the next session boundary."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] # [doc = "recipient in the channel being closed."] # [doc = ""] # [doc = "The closure can only happen on a session change."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] # [doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] # [doc = "immediately for a specific parachain."] # [doc = ""] # [doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Force process HRMP open channel requests."] # [doc = ""] # [doc = "If there are pending HRMP open channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of opening channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Force process HRMP close channel requests."] # [doc = ""] # [doc = "If there are pending HRMP close channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of closing channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] # [doc = "or the recipient for that request. The origin must be either of those."] # [doc = ""] # [doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] # [doc = "already accepted."] # [doc = ""] # [doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] # [doc = "witness data."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] # [doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] # [doc = "configured limits."] # [doc = ""] # [doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] # [doc = "governed by the system, e.g. a system parachain."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Establish an HRMP channel between two system chains. If the channel does not already"] # [doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] # [doc = "deposits for channels between system chains, and automatically sets the message number"] # [doc = "and size limits to the maximum allowed by the network's configuration."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A system chain, `ParaId`."] # [doc = "- `recipient`: A system chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] # [doc = "the channel does not exist yet, there is no fee."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] # [doc = "with system chains do not require a deposit."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A chain, `ParaId`."] # [doc = "- `recipient`: A chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -44656,6 +50904,9 @@ pub mod api { #[codec(index = 18)] #[doc = "The provided witness data is wrong."] WrongWitness, + #[codec(index = 19)] + #[doc = "The channel between these two chains cannot be authorized."] + ChannelCreationNotAuthorized, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -44669,44 +50920,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "The `Event` enum of this pallet"] pub enum Event { - #[codec(index = 0)] - #[doc = "Open HRMP channel requested."] - #[doc = "`[sender, recipient, proposed_max_capacity, proposed_max_message_size]`"] - OpenChannelRequested( - runtime_types::polkadot_parachain_primitives::primitives::Id, - runtime_types::polkadot_parachain_primitives::primitives::Id, - ::core::primitive::u32, - ::core::primitive::u32, - ), - #[codec(index = 1)] - #[doc = "An HRMP channel request sent by the receiver was canceled by either party."] - #[doc = "`[by_parachain, channel_id]`"] - OpenChannelCanceled( - runtime_types::polkadot_parachain_primitives::primitives::Id, - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - ), - #[codec(index = 2)] - #[doc = "Open HRMP channel accepted. `[sender, recipient]`"] - OpenChannelAccepted( - runtime_types::polkadot_parachain_primitives::primitives::Id, - runtime_types::polkadot_parachain_primitives::primitives::Id, - ), - #[codec(index = 3)] - #[doc = "HRMP channel closed. `[by_parachain, channel_id]`"] - ChannelClosed( - runtime_types::polkadot_parachain_primitives::primitives::Id, - runtime_types::polkadot_parachain_primitives::primitives::HrmpChannelId, - ), - #[codec(index = 4)] - #[doc = "An HRMP channel was opened via Root origin."] - #[doc = "`[sender, recipient, proposed_max_capacity, proposed_max_message_size]`"] - HrmpChannelForceOpened( - runtime_types::polkadot_parachain_primitives::primitives::Id, - runtime_types::polkadot_parachain_primitives::primitives::Id, - ::core::primitive::u32, - ::core::primitive::u32, - ), - } + # [codec (index = 0)] # [doc = "Open HRMP channel requested."] OpenChannelRequested { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "An HRMP channel request sent by the receiver was canceled by either party."] OpenChannelCanceled { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 2)] # [doc = "Open HRMP channel accepted."] OpenChannelAccepted { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "HRMP channel closed."] ChannelClosed { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 4)] # [doc = "An HRMP channel was opened via Root origin."] HrmpChannelForceOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "An HRMP channel was opened between two system chains."] HrmpSystemChannelOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "An HRMP channel's deposits were updated."] OpenChannelDepositsUpdated { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -44776,97 +50990,62 @@ pub mod api { #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Validator indices are out of order or contains duplicates."] - UnsortedOrDuplicateValidatorIndices, - #[codec(index = 1)] - #[doc = "Dispute statement sets are out of order or contain duplicates."] - UnsortedOrDuplicateDisputeStatementSet, - #[codec(index = 2)] - #[doc = "Backed candidates are out of order (core index) or contain duplicates."] - UnsortedOrDuplicateBackedCandidates, - #[codec(index = 3)] - #[doc = "A different relay parent was provided compared to the on-chain stored one."] - UnexpectedRelayParent, - #[codec(index = 4)] - #[doc = "Availability bitfield has unexpected size."] - WrongBitfieldSize, - #[codec(index = 5)] - #[doc = "Bitfield consists of zeros only."] - BitfieldAllZeros, - #[codec(index = 6)] - #[doc = "Multiple bitfields submitted by same validator or validators out of order by index."] - BitfieldDuplicateOrUnordered, - #[codec(index = 7)] #[doc = "Validator index out of bounds."] ValidatorIndexOutOfBounds, - #[codec(index = 8)] - #[doc = "Invalid signature"] - InvalidBitfieldSignature, - #[codec(index = 9)] + #[codec(index = 1)] #[doc = "Candidate submitted but para not scheduled."] UnscheduledCandidate, - #[codec(index = 10)] - #[doc = "Candidate scheduled despite pending candidate already existing for the para."] - CandidateScheduledBeforeParaFree, - #[codec(index = 11)] - #[doc = "Scheduled cores out of order."] - ScheduledOutOfOrder, - #[codec(index = 12)] + #[codec(index = 2)] #[doc = "Head data exceeds the configured maximum."] HeadDataTooLarge, - #[codec(index = 13)] + #[codec(index = 3)] #[doc = "Code upgrade prematurely."] PrematureCodeUpgrade, - #[codec(index = 14)] + #[codec(index = 4)] #[doc = "Output code is too large"] NewCodeTooLarge, - #[codec(index = 15)] + #[codec(index = 5)] #[doc = "The candidate's relay-parent was not allowed. Either it was"] #[doc = "not recent enough or it didn't advance based on the last parachain block."] DisallowedRelayParent, - #[codec(index = 16)] + #[codec(index = 6)] #[doc = "Failed to compute group index for the core: either it's out of bounds"] #[doc = "or the relay parent doesn't belong to the current session."] InvalidAssignment, - #[codec(index = 17)] + #[codec(index = 7)] #[doc = "Invalid group index in core assignment."] InvalidGroupIndex, - #[codec(index = 18)] + #[codec(index = 8)] #[doc = "Insufficient (non-majority) backing."] InsufficientBacking, - #[codec(index = 19)] + #[codec(index = 9)] #[doc = "Invalid (bad signature, unknown validator, etc.) backing."] InvalidBacking, - #[codec(index = 20)] + #[codec(index = 10)] #[doc = "Collator did not sign PoV."] NotCollatorSigned, - #[codec(index = 21)] + #[codec(index = 11)] #[doc = "The validation data hash does not match expected."] ValidationDataHashMismatch, - #[codec(index = 22)] + #[codec(index = 12)] #[doc = "The downward message queue is not processed correctly."] IncorrectDownwardMessageHandling, - #[codec(index = 23)] + #[codec(index = 13)] #[doc = "At least one upward message sent does not pass the acceptance criteria."] InvalidUpwardMessages, - #[codec(index = 24)] + #[codec(index = 14)] #[doc = "The candidate didn't follow the rules of HRMP watermark advancement."] HrmpWatermarkMishandling, - #[codec(index = 25)] + #[codec(index = 15)] #[doc = "The HRMP messages sent by the candidate is not valid."] InvalidOutboundHrmp, - #[codec(index = 26)] + #[codec(index = 16)] #[doc = "The validation code hash of the candidate is not valid."] InvalidValidationCodeHash, - #[codec(index = 27)] + #[codec(index = 17)] #[doc = "The `para_head` hash in the candidate descriptor doesn't match the hash of the actual"] #[doc = "para head in the commitments."] ParaHeadMismatch, - #[codec(index = 28)] - #[doc = "A bitfield that references a freed core,"] - #[doc = "either intentionally or as part of a concluded"] - #[doc = "invalid dispute."] - BitfieldReferencesFreedCore, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -44883,31 +51062,31 @@ pub mod api { #[codec(index = 0)] #[doc = "A candidate was backed. `[candidate, head_data]`"] CandidateBacked( - runtime_types::polkadot_primitives::v5::CandidateReceipt< + runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v5::CoreIndex, - runtime_types::polkadot_primitives::v5::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 1)] #[doc = "A candidate was included. `[candidate, head_data]`"] CandidateIncluded( - runtime_types::polkadot_primitives::v5::CandidateReceipt< + runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v5::CoreIndex, - runtime_types::polkadot_primitives::v5::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 2)] #[doc = "A candidate timed out. `[candidate, head_data]`"] CandidateTimedOut( - runtime_types::polkadot_primitives::v5::CandidateReceipt< + runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v5::CoreIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, ), #[codec(index = 3)] #[doc = "Some upward messages have been received and will be processed."] @@ -44941,24 +51120,12 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct AvailabilityBitfieldRecord<_0> { - pub bitfield: runtime_types::polkadot_primitives::v5::AvailabilityBitfield, - pub submitted_at: _0, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct CandidatePendingAvailability<_0, _1> { - pub core: runtime_types::polkadot_primitives::v5::CoreIndex, + pub core: runtime_types::polkadot_primitives::v7::CoreIndex, pub hash: runtime_types::polkadot_core_primitives::CandidateHash, - pub descriptor: runtime_types::polkadot_primitives::v5::CandidateDescriptor<_0>, + pub descriptor: runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, + pub commitments: + runtime_types::polkadot_primitives::v7::CandidateCommitments<_1>, pub availability_votes: ::subxt::utils::bits::DecodedBits< ::core::primitive::u8, ::subxt::utils::bits::Lsb0, @@ -44969,7 +51136,7 @@ pub mod api { >, pub relay_parent_number: _1, pub backed_in_number: _1, - pub backing_group: runtime_types::polkadot_primitives::v5::GroupIndex, + pub backing_group: runtime_types::polkadot_primitives::v7::GroupIndex, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -45003,7 +51170,9 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] force_approve { up_to: ::core::primitive::u32 }, } } @@ -45019,10 +51188,10 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct BufferedSessionChange { pub validators: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub queued: ::std::vec::Vec< - runtime_types::polkadot_primitives::v5::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub session_index: ::core::primitive::u32, } @@ -45063,7 +51232,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::force_set_current_code`]."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_set_current_head`]."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "See [`Pallet::force_schedule_code_upgrade`]."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_note_new_head`]."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_queue_action`]."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::add_trusted_validation_code`]."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "See [`Pallet::poke_unused_validation_code`]."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "See [`Pallet::include_pvf_check_statement`]."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v5 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v5 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "See [`Pallet::force_set_most_recent_context`]."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Set the storage for the parachain validation code immediately."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Note a new block head for para within the context of the current block."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "Put a parachain directly into the next session's action queue."] # [doc = "We can't queue it any sooner than this without going into the"] # [doc = "initializer..."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Adds the validation code to the storage."] # [doc = ""] # [doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] # [doc = "is running for that code, it will be instantly accepted."] # [doc = ""] # [doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] # [doc = "into storage with reference count 0. This is to account the fact that there are no users"] # [doc = "for this code yet. The caller will have to make sure that this code eventually gets"] # [doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] # [doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] # [doc = "manipulation."] # [doc = ""] # [doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] # [doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "Remove the validation code from the storage iff the reference count is 0."] # [doc = ""] # [doc = "This is better than removing the storage directly, because it will not remove the code"] # [doc = "that was suddenly got used by some parachain while this dispatchable was pending"] # [doc = "dispatching."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] # [doc = "enacts the results if that was the last vote before achieving the supermajority."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v7 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v7 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -45112,6 +51281,9 @@ pub mod api { #[codec(index = 11)] #[doc = "Parachain cannot currently schedule a code upgrade."] CannotUpgradeCode, + #[codec(index = 12)] + #[doc = "Invalid validation code size."] + InvalidCode, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -45228,6 +51400,8 @@ pub mod api { Upgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, included_at: _0, + upgrade_strategy: + runtime_types::polkadot_runtime_parachains::paras::UpgradeStrategy, }, } #[derive( @@ -45244,6 +51418,22 @@ pub mod api { pub expected_at: _0, pub activated_at: _0, } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum UpgradeStrategy { + #[codec(index = 0)] + SetGoAheadSignal, + #[codec(index = 1)] + ApplyAtExpectedBlock, + } } pub mod paras_inherent { use super::runtime_types; @@ -45262,9 +51452,9 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] enter { - data: runtime_types::polkadot_primitives::v5::InherentData< + data: runtime_types::polkadot_primitives::v7::InherentData< runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, >, @@ -45291,20 +51481,69 @@ pub mod api { #[doc = "the parent."] InvalidParentHeader, #[codec(index = 2)] - #[doc = "Disputed candidate that was concluded invalid."] - CandidateConcludedInvalid, - #[codec(index = 3)] #[doc = "The data given to the inherent will result in an overweight block."] InherentOverweight, + #[codec(index = 3)] + #[doc = "A candidate was filtered during inherent execution. This should have only been done"] + #[doc = "during creation."] + CandidatesFilteredDuringExecution, #[codec(index = 4)] - #[doc = "The ordering of dispute statements was invalid."] - DisputeStatementsUnsortedOrDuplicates, - #[codec(index = 5)] - #[doc = "A dispute statement was invalid."] - DisputeInvalid, + #[doc = "Too many candidates supplied."] + UnscheduledCandidate, } } } + pub mod scheduler { + use super::runtime_types; + pub mod common { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Assignment { + #[codec(index = 0)] + Pool { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + core_index: runtime_types::polkadot_primitives::v7::CoreIndex, + }, + #[codec(index = 1)] + Bulk(runtime_types::polkadot_parachain_primitives::primitives::Id), + } + } + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum CoreOccupied<_0> { + # [codec (index = 0)] Free , # [codec (index = 1)] Paras (runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < _0 > ,) , } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ParasEntry < _0 > { pub assignment : runtime_types :: polkadot_runtime_parachains :: scheduler :: common :: Assignment , pub availability_timeouts : :: core :: primitive :: u32 , pub ttl : _0 , } + } + } pub mod shared { use super::runtime_types; pub mod pallet { @@ -45340,6 +51579,81 @@ pub mod api { } pub mod rococo_runtime { use super::runtime_types; + pub mod governance { + use super::runtime_types; + pub mod origins { + use super::runtime_types; + pub mod pallet_custom_origins { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Origin { + #[codec(index = 0)] + StakingAdmin, + #[codec(index = 1)] + Treasurer, + #[codec(index = 2)] + FellowshipAdmin, + #[codec(index = 3)] + GeneralAdmin, + #[codec(index = 4)] + AuctionAdmin, + #[codec(index = 5)] + LeaseAdmin, + #[codec(index = 6)] + ReferendumCanceller, + #[codec(index = 7)] + ReferendumKiller, + #[codec(index = 8)] + SmallTipper, + #[codec(index = 9)] + BigTipper, + #[codec(index = 10)] + SmallSpender, + #[codec(index = 11)] + MediumSpender, + #[codec(index = 12)] + BigSpender, + #[codec(index = 13)] + WhitelistedCaller, + #[codec(index = 14)] + FellowshipInitiates, + #[codec(index = 15)] + Fellows, + #[codec(index = 16)] + FellowshipExperts, + #[codec(index = 17)] + FellowshipMasters, + #[codec(index = 18)] + Fellowship1Dan, + #[codec(index = 19)] + Fellowship2Dan, + #[codec(index = 20)] + Fellowship3Dan, + #[codec(index = 21)] + Fellowship4Dan, + #[codec(index = 22)] + Fellowship5Dan, + #[codec(index = 23)] + Fellowship6Dan, + #[codec(index = 24)] + Fellowship7Dan, + #[codec(index = 25)] + Fellowship8Dan, + #[codec(index = 26)] + Fellowship9Dan, + } + } + } + } pub mod validator_manager { use super::runtime_types; pub mod pallet { @@ -45357,12 +51671,16 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] register_validators { validators: ::std::vec::Vec<::subxt::utils::AccountId32>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] deregister_validators { validators: ::std::vec::Vec<::subxt::utils::AccountId32>, }, @@ -45399,25 +51717,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum OriginCaller { - #[codec(index = 0)] - system( - runtime_types::frame_support::dispatch::RawOrigin<::subxt::utils::AccountId32>, - ), - #[codec(index = 14)] - Council(runtime_types::pallet_collective::RawOrigin<::subxt::utils::AccountId32>), - #[codec(index = 15)] - TechnicalCommittee( - runtime_types::pallet_collective::RawOrigin<::subxt::utils::AccountId32>, - ), - #[codec(index = 50)] - ParachainsOrigin( - runtime_types::polkadot_runtime_parachains::origin::pallet::Origin, - ), - #[codec(index = 99)] - XcmPallet(runtime_types::pallet_xcm::pallet::Origin), - #[codec(index = 5)] - Void(runtime_types::sp_core::Void), - } + # [codec (index = 0)] system (runtime_types :: frame_support :: dispatch :: RawOrigin < :: subxt :: utils :: AccountId32 > ,) , # [codec (index = 43)] Origins (runtime_types :: rococo_runtime :: governance :: origins :: pallet_custom_origins :: Origin ,) , # [codec (index = 50)] ParachainsOrigin (runtime_types :: polkadot_runtime_parachains :: origin :: pallet :: Origin ,) , # [codec (index = 99)] XcmPallet (runtime_types :: pallet_xcm :: pallet :: Origin ,) , # [codec (index = 4)] Void (runtime_types :: sp_core :: Void ,) , } #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -45478,26 +51778,22 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Call), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Call), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Call), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Call), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Call), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Call), - #[codec(index = 13)] - Democracy(runtime_types::pallet_democracy::pallet::Call), - #[codec(index = 14)] - Council(runtime_types::pallet_collective::pallet::Call), - #[codec(index = 15)] - TechnicalCommittee(runtime_types::pallet_collective::pallet::Call2), - #[codec(index = 16)] - PhragmenElection(runtime_types::pallet_elections_phragmen::pallet::Call), - #[codec(index = 17)] - TechnicalMembership(runtime_types::pallet_membership::pallet::Call), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Call), + #[codec(index = 20)] + ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Call), + #[codec(index = 21)] + Referenda(runtime_types::pallet_referenda::pallet::Call), + #[codec(index = 22)] + FellowshipCollective(runtime_types::pallet_ranked_collective::pallet::Call), + #[codec(index = 23)] + FellowshipReferenda(runtime_types::pallet_referenda::pallet::Call2), + #[codec(index = 44)] + Whitelist(runtime_types::pallet_whitelist::pallet::Call), #[codec(index = 19)] Claims(runtime_types::polkadot_runtime_common::claims::pallet::Call), #[codec(index = 24)] @@ -45518,12 +51814,12 @@ pub mod api { Multisig(runtime_types::pallet_multisig::pallet::Call), #[codec(index = 32)] Preimage(runtime_types::pallet_preimage::pallet::Call), + #[codec(index = 39)] + AssetRate(runtime_types::pallet_asset_rate::pallet::Call), #[codec(index = 35)] Bounties(runtime_types::pallet_bounties::pallet::Call), #[codec(index = 40)] ChildBounties(runtime_types::pallet_child_bounties::pallet::Call), - #[codec(index = 36)] - Tips(runtime_types::pallet_tips::pallet::Call), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::Call), #[codec(index = 45)] @@ -45566,8 +51862,16 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Call), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Call), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Call), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Call), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Call), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call, + ), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Call, @@ -45578,6 +51882,8 @@ pub mod api { ValidatorManager(runtime_types::rococo_runtime::validator_manager::pallet::Call), #[codec(index = 254)] StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::Call), + #[codec(index = 249)] + RootTesting(runtime_types::pallet_root_testing::pallet::Call), #[codec(index = 255)] Sudo(runtime_types::pallet_sudo::pallet::Call), } @@ -45600,26 +51906,22 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Error), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Error), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Error), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Error), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Error), - #[codec(index = 13)] - Democracy(runtime_types::pallet_democracy::pallet::Error), - #[codec(index = 14)] - Council(runtime_types::pallet_collective::pallet::Error), - #[codec(index = 15)] - TechnicalCommittee(runtime_types::pallet_collective::pallet::Error2), - #[codec(index = 16)] - PhragmenElection(runtime_types::pallet_elections_phragmen::pallet::Error), - #[codec(index = 17)] - TechnicalMembership(runtime_types::pallet_membership::pallet::Error), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Error), + #[codec(index = 20)] + ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Error), + #[codec(index = 21)] + Referenda(runtime_types::pallet_referenda::pallet::Error), + #[codec(index = 22)] + FellowshipCollective(runtime_types::pallet_ranked_collective::pallet::Error), + #[codec(index = 23)] + FellowshipReferenda(runtime_types::pallet_referenda::pallet::Error2), + #[codec(index = 44)] + Whitelist(runtime_types::pallet_whitelist::pallet::Error), #[codec(index = 19)] Claims(runtime_types::polkadot_runtime_common::claims::pallet::Error), #[codec(index = 24)] @@ -45640,12 +51942,12 @@ pub mod api { Multisig(runtime_types::pallet_multisig::pallet::Error), #[codec(index = 32)] Preimage(runtime_types::pallet_preimage::pallet::Error), + #[codec(index = 39)] + AssetRate(runtime_types::pallet_asset_rate::pallet::Error), #[codec(index = 35)] Bounties(runtime_types::pallet_bounties::pallet::Error), #[codec(index = 40)] ChildBounties(runtime_types::pallet_child_bounties::pallet::Error), - #[codec(index = 36)] - Tips(runtime_types::pallet_tips::pallet::Error), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::Error), #[codec(index = 45)] @@ -45676,6 +51978,10 @@ pub mod api { OnDemandAssignmentProvider( runtime_types::polkadot_runtime_parachains::assigner_on_demand::pallet::Error, ), + #[codec(index = 68)] + CoretimeAssignmentProvider( + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error, + ), #[codec(index = 70)] Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error), #[codec(index = 71)] @@ -45684,8 +51990,12 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Error), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Error), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Error), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Error), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Error, @@ -45724,20 +52034,18 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Event), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Event), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Event), - #[codec(index = 13)] - Democracy(runtime_types::pallet_democracy::pallet::Event), - #[codec(index = 14)] - Council(runtime_types::pallet_collective::pallet::Event), - #[codec(index = 15)] - TechnicalCommittee(runtime_types::pallet_collective::pallet::Event2), - #[codec(index = 16)] - PhragmenElection(runtime_types::pallet_elections_phragmen::pallet::Event), - #[codec(index = 17)] - TechnicalMembership(runtime_types::pallet_membership::pallet::Event), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Event), + #[codec(index = 20)] + ConvictionVoting(runtime_types::pallet_conviction_voting::pallet::Event), + #[codec(index = 21)] + Referenda(runtime_types::pallet_referenda::pallet::Event), + #[codec(index = 22)] + FellowshipCollective(runtime_types::pallet_ranked_collective::pallet::Event), + #[codec(index = 23)] + FellowshipReferenda(runtime_types::pallet_referenda::pallet::Event2), + #[codec(index = 44)] + Whitelist(runtime_types::pallet_whitelist::pallet::Event), #[codec(index = 19)] Claims(runtime_types::polkadot_runtime_common::claims::pallet::Event), #[codec(index = 24)] @@ -45758,12 +52066,12 @@ pub mod api { Multisig(runtime_types::pallet_multisig::pallet::Event), #[codec(index = 32)] Preimage(runtime_types::pallet_preimage::pallet::Event), + #[codec(index = 39)] + AssetRate(runtime_types::pallet_asset_rate::pallet::Event), #[codec(index = 35)] Bounties(runtime_types::pallet_bounties::pallet::Event), #[codec(index = 40)] ChildBounties(runtime_types::pallet_child_bounties::pallet::Event), - #[codec(index = 36)] - Tips(runtime_types::pallet_tips::pallet::Event), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::Event), #[codec(index = 45)] @@ -45790,8 +52098,14 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Event), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Event), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Event), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Event), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event, + ), #[codec(index = 251)] AssignedSlots( runtime_types::polkadot_runtime_common::assigned_slots::pallet::Event, @@ -45800,6 +52114,8 @@ pub mod api { ValidatorManager(runtime_types::rococo_runtime::validator_manager::pallet::Event), #[codec(index = 254)] StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::Event), + #[codec(index = 249)] + RootTesting(runtime_types::pallet_root_testing::pallet::Event), #[codec(index = 255)] Sudo(runtime_types::pallet_sudo::pallet::Event), } @@ -45814,8 +52130,12 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum RuntimeHoldReason { + #[codec(index = 32)] + Preimage(runtime_types::pallet_preimage::pallet::HoldReason), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::HoldReason), + #[codec(index = 254)] + StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::HoldReason), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -45830,9 +52150,8 @@ pub mod api { pub struct SessionKeys { pub grandpa: runtime_types::sp_consensus_grandpa::app::Public, pub babe: runtime_types::sp_consensus_babe::app::Public, - pub im_online: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - pub para_validator: runtime_types::polkadot_primitives::v5::validator_app::Public, - pub para_assignment: runtime_types::polkadot_primitives::v5::assignment_app::Public, + pub para_validator: runtime_types::polkadot_primitives::v7::validator_app::Public, + pub para_assignment: runtime_types::polkadot_primitives::v7::assignment_app::Public, pub authority_discovery: runtime_types::sp_authority_discovery::app::Public, pub beefy: runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, } @@ -45842,7 +52161,6 @@ pub mod api { pub mod fixed_point { use super::runtime_types; #[derive( - :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, :: subxt :: ext :: scale_decode :: DecodeAsType, @@ -45852,10 +52170,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct FixedU128(pub ::core::primitive::u128); - } - pub mod per_things { - use super::runtime_types; + pub struct FixedI64(pub ::core::primitive::i64); #[derive( :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, @@ -45867,7 +52182,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Perbill(pub ::core::primitive::u32); + pub struct FixedU128(pub ::core::primitive::u128); + } + pub mod per_things { + use super::runtime_types; #[derive( :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, @@ -45879,7 +52197,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Percent(pub ::core::primitive::u8); + pub struct Perbill(pub ::core::primitive::u32); #[derive( :: subxt :: ext :: codec :: CompactAs, :: subxt :: ext :: codec :: Decode, @@ -45938,7 +52256,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); } } pub mod sp_consensus_babe { @@ -45955,7 +52273,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); } pub mod digests { use super::runtime_types; @@ -46159,7 +52477,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::ecdsa::Public); + pub struct Public(pub [::core::primitive::u8; 33usize]); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -46170,7 +52488,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub runtime_types::sp_core::ecdsa::Signature); + pub struct Signature(pub [::core::primitive::u8; 65usize]); } pub mod mmr { use super::runtime_types; @@ -46278,7 +52596,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub runtime_types::sp_core::ed25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -46289,7 +52607,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub runtime_types::sp_core::ed25519::Signature); + pub struct Signature(pub [::core::primitive::u8; 64usize]); } #[derive( :: subxt :: ext :: codec :: Decode, @@ -46392,56 +52710,6 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct KeyTypeId(pub [::core::primitive::u8; 4usize]); } - pub mod ecdsa { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub [::core::primitive::u8; 33usize]); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub [::core::primitive::u8; 65usize]); - } - pub mod ed25519 { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub [::core::primitive::u8; 32usize]); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub [::core::primitive::u8; 64usize]); - } pub mod sr25519 { use super::runtime_types; pub mod vrf { @@ -46457,32 +52725,10 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct VrfSignature { - pub output: [::core::primitive::u8; 32usize], + pub pre_output: [::core::primitive::u8; 32usize], pub proof: [::core::primitive::u8; 64usize], } } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Public(pub [::core::primitive::u8; 32usize]); - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Signature(pub [::core::primitive::u8; 64usize]); } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47198,7 +53444,440 @@ pub mod api { Mortal255(::core::primitive::u8), } } - pub mod header { + pub mod header { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Header<_0> { + pub parent_hash: ::subxt::utils::H256, + #[codec(compact)] + pub number: _0, + pub state_root: ::subxt::utils::H256, + pub extrinsics_root: ::subxt::utils::H256, + pub digest: runtime_types::sp_runtime::generic::digest::Digest, + } + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct BlakeTwo256; + } + pub mod transaction_validity { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum InvalidTransaction { + #[codec(index = 0)] + Call, + #[codec(index = 1)] + Payment, + #[codec(index = 2)] + Future, + #[codec(index = 3)] + Stale, + #[codec(index = 4)] + BadProof, + #[codec(index = 5)] + AncientBirthBlock, + #[codec(index = 6)] + ExhaustsResources, + #[codec(index = 7)] + Custom(::core::primitive::u8), + #[codec(index = 8)] + BadMandatory, + #[codec(index = 9)] + MandatoryValidation, + #[codec(index = 10)] + BadSigner, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TransactionSource { + #[codec(index = 0)] + InBlock, + #[codec(index = 1)] + Local, + #[codec(index = 2)] + External, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TransactionValidityError { + #[codec(index = 0)] + Invalid(runtime_types::sp_runtime::transaction_validity::InvalidTransaction), + #[codec(index = 1)] + Unknown(runtime_types::sp_runtime::transaction_validity::UnknownTransaction), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum UnknownTransaction { + #[codec(index = 0)] + CannotLookup, + #[codec(index = 1)] + NoUnsignedValidator, + #[codec(index = 2)] + Custom(::core::primitive::u8), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ValidTransaction { + pub priority: ::core::primitive::u64, + pub requires: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub provides: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub longevity: ::core::primitive::u64, + pub propagate: ::core::primitive::bool, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum DispatchError { + #[codec(index = 0)] + Other, + #[codec(index = 1)] + CannotLookup, + #[codec(index = 2)] + BadOrigin, + #[codec(index = 3)] + Module(runtime_types::sp_runtime::ModuleError), + #[codec(index = 4)] + ConsumerRemaining, + #[codec(index = 5)] + NoProviders, + #[codec(index = 6)] + TooManyConsumers, + #[codec(index = 7)] + Token(runtime_types::sp_runtime::TokenError), + #[codec(index = 8)] + Arithmetic(runtime_types::sp_arithmetic::ArithmeticError), + #[codec(index = 9)] + Transactional(runtime_types::sp_runtime::TransactionalError), + #[codec(index = 10)] + Exhausted, + #[codec(index = 11)] + Corruption, + #[codec(index = 12)] + Unavailable, + #[codec(index = 13)] + RootNotAllowed, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct DispatchErrorWithPostInfo<_0> { + pub post_info: _0, + pub error: runtime_types::sp_runtime::DispatchError, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum ExtrinsicInclusionMode { + #[codec(index = 0)] + AllExtrinsics, + #[codec(index = 1)] + OnlyInherents, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct ModuleError { + pub index: ::core::primitive::u8, + pub error: [::core::primitive::u8; 4usize], + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum MultiSignature { + #[codec(index = 0)] + Ed25519([::core::primitive::u8; 64usize]), + #[codec(index = 1)] + Sr25519([::core::primitive::u8; 64usize]), + #[codec(index = 2)] + Ecdsa([::core::primitive::u8; 65usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum MultiSigner { + #[codec(index = 0)] + Ed25519([::core::primitive::u8; 32usize]), + #[codec(index = 1)] + Sr25519([::core::primitive::u8; 32usize]), + #[codec(index = 2)] + Ecdsa([::core::primitive::u8; 33usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TokenError { + #[codec(index = 0)] + FundsUnavailable, + #[codec(index = 1)] + OnlyProvider, + #[codec(index = 2)] + BelowMinimum, + #[codec(index = 3)] + CannotCreate, + #[codec(index = 4)] + UnknownAsset, + #[codec(index = 5)] + Frozen, + #[codec(index = 6)] + Unsupported, + #[codec(index = 7)] + CannotCreateHold, + #[codec(index = 8)] + NotExpendable, + #[codec(index = 9)] + Blocked, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum TransactionalError { + #[codec(index = 0)] + LimitReached, + #[codec(index = 1)] + NoLayer, + } + } + pub mod sp_session { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MembershipProof { + pub session: ::core::primitive::u32, + pub trie_nodes: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, + pub validator_count: ::core::primitive::u32, + } + } + pub mod sp_staking { + use super::runtime_types; + pub mod offence { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct OffenceDetails<_0, _1> { + pub offender: _1, + pub reporters: ::std::vec::Vec<_0>, + } + } + } + pub mod sp_version { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RuntimeVersion { + pub spec_name: ::std::string::String, + pub impl_name: ::std::string::String, + pub authoring_version: ::core::primitive::u32, + pub spec_version: ::core::primitive::u32, + pub impl_version: ::core::primitive::u32, + pub apis: + ::std::vec::Vec<([::core::primitive::u8; 8usize], ::core::primitive::u32)>, + pub transaction_version: ::core::primitive::u32, + pub state_version: ::core::primitive::u8, + } + } + pub mod sp_weights { + use super::runtime_types; + pub mod weight_v2 { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Weight { + #[codec(compact)] + pub ref_time: ::core::primitive::u64, + #[codec(compact)] + pub proof_size: ::core::primitive::u64, + } + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct RuntimeDbWeight { + pub read: ::core::primitive::u64, + pub write: ::core::primitive::u64, + } + } + pub mod staging_xcm { + use super::runtime_types; + pub mod v3 { + use super::runtime_types; + pub mod multilocation { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct MultiLocation { + pub parents: ::core::primitive::u8, + pub interior: runtime_types::xcm::v3::junctions::Junctions, + } + } + } + pub mod v4 { + use super::runtime_types; + pub mod asset { use super::runtime_types; #[derive( :: subxt :: ext :: codec :: Decode, @@ -47210,18 +53889,306 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Header<_0> { - pub parent_hash: ::subxt::utils::H256, - #[codec(compact)] - pub number: _0, - pub state_root: ::subxt::utils::H256, - pub extrinsics_root: ::subxt::utils::H256, - pub digest: runtime_types::sp_runtime::generic::digest::Digest, + pub struct Asset { + pub id: runtime_types::staging_xcm::v4::asset::AssetId, + pub fun: runtime_types::staging_xcm::v4::asset::Fungibility, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetFilter { + #[codec(index = 0)] + Definite(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + Wild(runtime_types::staging_xcm::v4::asset::WildAsset), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct AssetId(pub runtime_types::staging_xcm::v4::location::Location); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum AssetInstance { + #[codec(index = 0)] + Undefined, + #[codec(index = 1)] + Index(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 2)] + Array4([::core::primitive::u8; 4usize]), + #[codec(index = 3)] + Array8([::core::primitive::u8; 8usize]), + #[codec(index = 4)] + Array16([::core::primitive::u8; 16usize]), + #[codec(index = 5)] + Array32([::core::primitive::u8; 32usize]), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Assets( + pub ::std::vec::Vec, + ); + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Fungibility { + #[codec(index = 0)] + Fungible(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 1)] + NonFungible(runtime_types::staging_xcm::v4::asset::AssetInstance), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildAsset { + #[codec(index = 0)] + All, + #[codec(index = 1)] + AllOf { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + }, + #[codec(index = 2)] + AllCounted(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 3)] + AllOfCounted { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + #[codec(compact)] + count: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum WildFungibility { + #[codec(index = 0)] + Fungible, + #[codec(index = 1)] + NonFungible, + } + } + pub mod junction { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junction { + #[codec(index = 0)] + Parachain(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 1)] + AccountId32 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + AccountIndex64 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + #[codec(compact)] + index: ::core::primitive::u64, + }, + #[codec(index = 3)] + AccountKey20 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + key: [::core::primitive::u8; 20usize], + }, + #[codec(index = 4)] + PalletInstance(::core::primitive::u8), + #[codec(index = 5)] + GeneralIndex(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 6)] + GeneralKey { + length: ::core::primitive::u8, + data: [::core::primitive::u8; 32usize], + }, + #[codec(index = 7)] + OnlyChild, + #[codec(index = 8)] + Plurality { + id: runtime_types::xcm::v3::junction::BodyId, + part: runtime_types::xcm::v3::junction::BodyPart, + }, + #[codec(index = 9)] + GlobalConsensus(runtime_types::staging_xcm::v4::junction::NetworkId), + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum NetworkId { + #[codec(index = 0)] + ByGenesis([::core::primitive::u8; 32usize]), + #[codec(index = 1)] + ByFork { + block_number: ::core::primitive::u64, + block_hash: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + Polkadot, + #[codec(index = 3)] + Kusama, + #[codec(index = 4)] + Westend, + #[codec(index = 5)] + Rococo, + #[codec(index = 6)] + Wococo, + #[codec(index = 7)] + Ethereum { + #[codec(compact)] + chain_id: ::core::primitive::u64, + }, + #[codec(index = 8)] + BitcoinCore, + #[codec(index = 9)] + BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, + } + } + pub mod junctions { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Junctions { + #[codec(index = 0)] + Here, + #[codec(index = 1)] + X1([runtime_types::staging_xcm::v4::junction::Junction; 1usize]), + #[codec(index = 2)] + X2([runtime_types::staging_xcm::v4::junction::Junction; 2usize]), + #[codec(index = 3)] + X3([runtime_types::staging_xcm::v4::junction::Junction; 3usize]), + #[codec(index = 4)] + X4([runtime_types::staging_xcm::v4::junction::Junction; 4usize]), + #[codec(index = 5)] + X5([runtime_types::staging_xcm::v4::junction::Junction; 5usize]), + #[codec(index = 6)] + X6([runtime_types::staging_xcm::v4::junction::Junction; 6usize]), + #[codec(index = 7)] + X7([runtime_types::staging_xcm::v4::junction::Junction; 7usize]), + #[codec(index = 8)] + X8([runtime_types::staging_xcm::v4::junction::Junction; 8usize]), + } + } + pub mod location { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub struct Location { + pub parents: ::core::primitive::u8, + pub interior: runtime_types::staging_xcm::v4::junctions::Junctions, + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Outcome { + #[codec(index = 0)] + Complete { used: runtime_types::sp_weights::weight_v2::Weight }, + #[codec(index = 1)] + Incomplete { + used: runtime_types::sp_weights::weight_v2::Weight, + error: runtime_types::xcm::v3::traits::Error, + }, + #[codec(index = 2)] + Error { error: runtime_types::xcm::v3::traits::Error }, } } - } - pub mod transaction_validity { - use super::runtime_types; #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -47232,29 +54199,427 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum InvalidTransaction { + pub enum Instruction { + #[codec(index = 0)] + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { jit_withdraw: ::core::primitive::bool }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + } + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Instruction2 { #[codec(index = 0)] - Call, + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), #[codec(index = 1)] - Payment, + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), #[codec(index = 2)] - Future, + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), #[codec(index = 3)] - Stale, + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, #[codec(index = 4)] - BadProof, + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, #[codec(index = 5)] - AncientBirthBlock, + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, #[codec(index = 6)] - ExhaustsResources, + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded2, + }, #[codec(index = 7)] - Custom(::core::primitive::u8), + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, #[codec(index = 8)] - BadMandatory, + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, #[codec(index = 9)] - MandatoryValidation, + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, #[codec(index = 10)] - BadSigner, + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: ::std::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::std::vec::Vec<::core::primitive::u8>, + module_name: ::std::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { jit_withdraw: ::core::primitive::bool }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47266,13 +54631,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum TransactionSource { - #[codec(index = 0)] - InBlock, - #[codec(index = 1)] - Local, - #[codec(index = 2)] - External, + pub struct PalletInfo { + #[codec(compact)] + pub index: ::core::primitive::u32, + pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec< + ::core::primitive::u8, + >, + #[codec(compact)] + pub major: ::core::primitive::u32, + #[codec(compact)] + pub minor: ::core::primitive::u32, + #[codec(compact)] + pub patch: ::core::primitive::u32, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47284,11 +54657,11 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum TransactionValidityError { - #[codec(index = 0)] - Invalid(runtime_types::sp_runtime::transaction_validity::InvalidTransaction), - #[codec(index = 1)] - Unknown(runtime_types::sp_runtime::transaction_validity::UnknownTransaction), + pub struct QueryResponseInfo { + pub destination: runtime_types::staging_xcm::v4::location::Location, + #[codec(compact)] + pub query_id: ::core::primitive::u64, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47300,193 +54673,29 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum UnknownTransaction { + pub enum Response { #[codec(index = 0)] - CannotLookup, + Null, #[codec(index = 1)] - NoUnsignedValidator, + Assets(runtime_types::staging_xcm::v4::asset::Assets), #[codec(index = 2)] - Custom(::core::primitive::u8), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ValidTransaction { - pub priority: ::core::primitive::u64, - pub requires: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, - pub provides: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, - pub longevity: ::core::primitive::u64, - pub propagate: ::core::primitive::bool, + ExecutionResult( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 3)] + Version(::core::primitive::u32), + #[codec(index = 4)] + PalletsInfo( + runtime_types::bounded_collections::bounded_vec::BoundedVec< + runtime_types::staging_xcm::v4::PalletInfo, + >, + ), + #[codec(index = 5)] + DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum DispatchError { - #[codec(index = 0)] - Other, - #[codec(index = 1)] - CannotLookup, - #[codec(index = 2)] - BadOrigin, - #[codec(index = 3)] - Module(runtime_types::sp_runtime::ModuleError), - #[codec(index = 4)] - ConsumerRemaining, - #[codec(index = 5)] - NoProviders, - #[codec(index = 6)] - TooManyConsumers, - #[codec(index = 7)] - Token(runtime_types::sp_runtime::TokenError), - #[codec(index = 8)] - Arithmetic(runtime_types::sp_arithmetic::ArithmeticError), - #[codec(index = 9)] - Transactional(runtime_types::sp_runtime::TransactionalError), - #[codec(index = 10)] - Exhausted, - #[codec(index = 11)] - Corruption, - #[codec(index = 12)] - Unavailable, - #[codec(index = 13)] - RootNotAllowed, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct ModuleError { - pub index: ::core::primitive::u8, - pub error: [::core::primitive::u8; 4usize], - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum MultiSignature { - #[codec(index = 0)] - Ed25519(runtime_types::sp_core::ed25519::Signature), - #[codec(index = 1)] - Sr25519(runtime_types::sp_core::sr25519::Signature), - #[codec(index = 2)] - Ecdsa(runtime_types::sp_core::ecdsa::Signature), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum MultiSigner { - #[codec(index = 0)] - Ed25519(runtime_types::sp_core::ed25519::Public), - #[codec(index = 1)] - Sr25519(runtime_types::sp_core::sr25519::Public), - #[codec(index = 2)] - Ecdsa(runtime_types::sp_core::ecdsa::Public), - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum TokenError { - #[codec(index = 0)] - FundsUnavailable, - #[codec(index = 1)] - OnlyProvider, - #[codec(index = 2)] - BelowMinimum, - #[codec(index = 3)] - CannotCreate, - #[codec(index = 4)] - UnknownAsset, - #[codec(index = 5)] - Frozen, - #[codec(index = 6)] - Unsupported, - #[codec(index = 7)] - CannotCreateHold, - #[codec(index = 8)] - NotExpendable, - #[codec(index = 9)] - Blocked, - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum TransactionalError { - #[codec(index = 0)] - LimitReached, - #[codec(index = 1)] - NoLayer, - } - } - pub mod sp_session { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct MembershipProof { - pub session: ::core::primitive::u32, - pub trie_nodes: ::std::vec::Vec<::std::vec::Vec<::core::primitive::u8>>, - pub validator_count: ::core::primitive::u32, - } - } - pub mod sp_staking { - use super::runtime_types; - pub mod offence { - use super::runtime_types; #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -47497,40 +54706,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct OffenceDetails<_0, _1> { - pub offender: _1, - pub reporters: ::std::vec::Vec<_0>, - } - } - } - pub mod sp_version { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RuntimeVersion { - pub spec_name: ::std::string::String, - pub impl_name: ::std::string::String, - pub authoring_version: ::core::primitive::u32, - pub spec_version: ::core::primitive::u32, - pub impl_version: ::core::primitive::u32, - pub apis: - ::std::vec::Vec<([::core::primitive::u8; 8usize], ::core::primitive::u32)>, - pub transaction_version: ::core::primitive::u32, - pub state_version: ::core::primitive::u8, - } - } - pub mod sp_weights { - use super::runtime_types; - pub mod weight_v2 { - use super::runtime_types; + pub struct Xcm(pub ::std::vec::Vec); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -47541,29 +54717,10 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Weight { - #[codec(compact)] - pub ref_time: ::core::primitive::u64, - #[codec(compact)] - pub proof_size: ::core::primitive::u64, - } - } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct RuntimeDbWeight { - pub read: ::core::primitive::u64, - pub write: ::core::primitive::u64, + pub struct Xcm2(pub ::std::vec::Vec); } } - pub mod staging_xcm { + pub mod xcm { use super::runtime_types; pub mod double_encoded { use super::runtime_types; @@ -47613,18 +54770,18 @@ pub mod api { Parachain(#[codec(compact)] ::core::primitive::u32), #[codec(index = 1)] AccountId32 { - network: runtime_types::staging_xcm::v2::NetworkId, + network: runtime_types::xcm::v2::NetworkId, id: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] AccountIndex64 { - network: runtime_types::staging_xcm::v2::NetworkId, + network: runtime_types::xcm::v2::NetworkId, #[codec(compact)] index: ::core::primitive::u64, }, #[codec(index = 3)] AccountKey20 { - network: runtime_types::staging_xcm::v2::NetworkId, + network: runtime_types::xcm::v2::NetworkId, key: [::core::primitive::u8; 20usize], }, #[codec(index = 4)] @@ -47641,8 +54798,8 @@ pub mod api { OnlyChild, #[codec(index = 8)] Plurality { - id: runtime_types::staging_xcm::v2::BodyId, - part: runtime_types::staging_xcm::v2::BodyPart, + id: runtime_types::xcm::v2::BodyId, + part: runtime_types::xcm::v2::BodyPart, }, } } @@ -47660,7 +54817,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum AssetId { #[codec(index = 0)] - Concrete(runtime_types::staging_xcm::v2::multilocation::MultiLocation), + Concrete(runtime_types::xcm::v2::multilocation::MultiLocation), #[codec(index = 1)] Abstract(::std::vec::Vec<::core::primitive::u8>), } @@ -47704,7 +54861,7 @@ pub mod api { #[codec(index = 0)] Fungible(#[codec(compact)] ::core::primitive::u128), #[codec(index = 1)] - NonFungible(runtime_types::staging_xcm::v2::multiasset::AssetInstance), + NonFungible(runtime_types::xcm::v2::multiasset::AssetInstance), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47717,8 +54874,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct MultiAsset { - pub id: runtime_types::staging_xcm::v2::multiasset::AssetId, - pub fun: runtime_types::staging_xcm::v2::multiasset::Fungibility, + pub id: runtime_types::xcm::v2::multiasset::AssetId, + pub fun: runtime_types::xcm::v2::multiasset::Fungibility, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47732,9 +54889,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum MultiAssetFilter { #[codec(index = 0)] - Definite(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + Definite(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 1)] - Wild(runtime_types::staging_xcm::v2::multiasset::WildMultiAsset), + Wild(runtime_types::xcm::v2::multiasset::WildMultiAsset), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -47747,7 +54904,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct MultiAssets( - pub ::std::vec::Vec, + pub ::std::vec::Vec, ); #[derive( :: subxt :: ext :: codec :: Decode, @@ -47780,8 +54937,8 @@ pub mod api { All, #[codec(index = 1)] AllOf { - id: runtime_types::staging_xcm::v2::multiasset::AssetId, - fun: runtime_types::staging_xcm::v2::multiasset::WildFungibility, + id: runtime_types::xcm::v2::multiasset::AssetId, + fun: runtime_types::xcm::v2::multiasset::WildFungibility, }, } } @@ -47801,62 +54958,62 @@ pub mod api { #[codec(index = 0)] Here, #[codec(index = 1)] - X1(runtime_types::staging_xcm::v2::junction::Junction), + X1(runtime_types::xcm::v2::junction::Junction), #[codec(index = 2)] X2( - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, ), #[codec(index = 3)] X3( - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, ), #[codec(index = 4)] X4( - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, ), #[codec(index = 5)] X5( - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, ), #[codec(index = 6)] X6( - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, ), #[codec(index = 7)] X7( - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, ), #[codec(index = 8)] X8( - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, - runtime_types::staging_xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, + runtime_types::xcm::v2::junction::Junction, ), } #[derive( @@ -47871,7 +55028,7 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct MultiLocation { pub parents: ::core::primitive::u8, - pub interior: runtime_types::staging_xcm::v2::multilocation::Junctions, + pub interior: runtime_types::xcm::v2::multilocation::Junctions, } } pub mod traits { @@ -48029,36 +55186,36 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Instruction { #[codec(index = 0)] - WithdrawAsset(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 1)] - ReserveAssetDeposited(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + ReserveAssetDeposited(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 2)] - ReceiveTeleportedAsset(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + ReceiveTeleportedAsset(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 3)] QueryResponse { #[codec(compact)] query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v2::Response, + response: runtime_types::xcm::v2::Response, #[codec(compact)] max_weight: ::core::primitive::u64, }, #[codec(index = 4)] TransferAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssets, - beneficiary: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, }, #[codec(index = 5)] TransferReserveAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssets, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 6)] Transact { - origin_type: runtime_types::staging_xcm::v2::OriginKind, + origin_type: runtime_types::xcm::v2::OriginKind, #[codec(compact)] require_weight_at_most: ::core::primitive::u64, - call: runtime_types::staging_xcm::double_encoded::DoubleEncoded, + call: runtime_types::xcm::double_encoded::DoubleEncoded, }, #[codec(index = 7)] HrmpNewChannelOpenRequest { @@ -48086,73 +55243,73 @@ pub mod api { #[codec(index = 10)] ClearOrigin, #[codec(index = 11)] - DescendOrigin(runtime_types::staging_xcm::v2::multilocation::Junctions), + DescendOrigin(runtime_types::xcm::v2::multilocation::Junctions), #[codec(index = 12)] ReportError { #[codec(compact)] query_id: ::core::primitive::u64, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, #[codec(compact)] max_response_weight: ::core::primitive::u64, }, #[codec(index = 13)] DepositAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, #[codec(compact)] max_assets: ::core::primitive::u32, - beneficiary: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, }, #[codec(index = 14)] DepositReserveAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, #[codec(compact)] max_assets: ::core::primitive::u32, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 15)] ExchangeAsset { - give: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, - receive: runtime_types::staging_xcm::v2::multiasset::MultiAssets, + give: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + receive: runtime_types::xcm::v2::multiasset::MultiAssets, }, #[codec(index = 16)] InitiateReserveWithdraw { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, - reserve: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + reserve: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 17)] InitiateTeleport { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 18)] QueryHolding { #[codec(compact)] query_id: ::core::primitive::u64, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, #[codec(compact)] max_response_weight: ::core::primitive::u64, }, #[codec(index = 19)] BuyExecution { - fees: runtime_types::staging_xcm::v2::multiasset::MultiAsset, - weight_limit: runtime_types::staging_xcm::v2::WeightLimit, + fees: runtime_types::xcm::v2::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v2::WeightLimit, }, #[codec(index = 20)] RefundSurplus, #[codec(index = 21)] - SetErrorHandler(runtime_types::staging_xcm::v2::Xcm), + SetErrorHandler(runtime_types::xcm::v2::Xcm), #[codec(index = 22)] - SetAppendix(runtime_types::staging_xcm::v2::Xcm), + SetAppendix(runtime_types::xcm::v2::Xcm), #[codec(index = 23)] ClearError, #[codec(index = 24)] ClaimAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssets, - ticket: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + ticket: runtime_types::xcm::v2::multilocation::MultiLocation, }, #[codec(index = 25)] Trap(#[codec(compact)] ::core::primitive::u64), @@ -48178,36 +55335,36 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Instruction2 { #[codec(index = 0)] - WithdrawAsset(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + WithdrawAsset(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 1)] - ReserveAssetDeposited(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + ReserveAssetDeposited(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 2)] - ReceiveTeleportedAsset(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + ReceiveTeleportedAsset(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 3)] QueryResponse { #[codec(compact)] query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v2::Response, + response: runtime_types::xcm::v2::Response, #[codec(compact)] max_weight: ::core::primitive::u64, }, #[codec(index = 4)] TransferAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssets, - beneficiary: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, }, #[codec(index = 5)] TransferReserveAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssets, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 6)] Transact { - origin_type: runtime_types::staging_xcm::v2::OriginKind, + origin_type: runtime_types::xcm::v2::OriginKind, #[codec(compact)] require_weight_at_most: ::core::primitive::u64, - call: runtime_types::staging_xcm::double_encoded::DoubleEncoded2, + call: runtime_types::xcm::double_encoded::DoubleEncoded2, }, #[codec(index = 7)] HrmpNewChannelOpenRequest { @@ -48235,73 +55392,73 @@ pub mod api { #[codec(index = 10)] ClearOrigin, #[codec(index = 11)] - DescendOrigin(runtime_types::staging_xcm::v2::multilocation::Junctions), + DescendOrigin(runtime_types::xcm::v2::multilocation::Junctions), #[codec(index = 12)] ReportError { #[codec(compact)] query_id: ::core::primitive::u64, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, #[codec(compact)] max_response_weight: ::core::primitive::u64, }, #[codec(index = 13)] DepositAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, #[codec(compact)] max_assets: ::core::primitive::u32, - beneficiary: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + beneficiary: runtime_types::xcm::v2::multilocation::MultiLocation, }, #[codec(index = 14)] DepositReserveAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, #[codec(compact)] max_assets: ::core::primitive::u32, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 15)] ExchangeAsset { - give: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, - receive: runtime_types::staging_xcm::v2::multiasset::MultiAssets, + give: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + receive: runtime_types::xcm::v2::multiasset::MultiAssets, }, #[codec(index = 16)] InitiateReserveWithdraw { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, - reserve: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + reserve: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 17)] InitiateTeleport { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v2::Xcm, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + xcm: runtime_types::xcm::v2::Xcm, }, #[codec(index = 18)] QueryHolding { #[codec(compact)] query_id: ::core::primitive::u64, - dest: runtime_types::staging_xcm::v2::multilocation::MultiLocation, - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssetFilter, + dest: runtime_types::xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssetFilter, #[codec(compact)] max_response_weight: ::core::primitive::u64, }, #[codec(index = 19)] BuyExecution { - fees: runtime_types::staging_xcm::v2::multiasset::MultiAsset, - weight_limit: runtime_types::staging_xcm::v2::WeightLimit, + fees: runtime_types::xcm::v2::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v2::WeightLimit, }, #[codec(index = 20)] RefundSurplus, #[codec(index = 21)] - SetErrorHandler(runtime_types::staging_xcm::v2::Xcm2), + SetErrorHandler(runtime_types::xcm::v2::Xcm2), #[codec(index = 22)] - SetAppendix(runtime_types::staging_xcm::v2::Xcm2), + SetAppendix(runtime_types::xcm::v2::Xcm2), #[codec(index = 23)] ClearError, #[codec(index = 24)] ClaimAsset { - assets: runtime_types::staging_xcm::v2::multiasset::MultiAssets, - ticket: runtime_types::staging_xcm::v2::multilocation::MultiLocation, + assets: runtime_types::xcm::v2::multiasset::MultiAssets, + ticket: runtime_types::xcm::v2::multilocation::MultiLocation, }, #[codec(index = 25)] Trap(#[codec(compact)] ::core::primitive::u64), @@ -48373,12 +55530,12 @@ pub mod api { #[codec(index = 0)] Null, #[codec(index = 1)] - Assets(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + Assets(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 2)] ExecutionResult( ::core::option::Option<( ::core::primitive::u32, - runtime_types::staging_xcm::v2::traits::Error, + runtime_types::xcm::v2::traits::Error, )>, ), #[codec(index = 3)] @@ -48410,7 +55567,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm(pub ::std::vec::Vec); + pub struct Xcm(pub ::std::vec::Vec); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -48421,7 +55578,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm2(pub ::std::vec::Vec); + pub struct Xcm2(pub ::std::vec::Vec); } pub mod v3 { use super::runtime_types; @@ -48514,24 +55671,21 @@ pub mod api { Parachain(#[codec(compact)] ::core::primitive::u32), #[codec(index = 1)] AccountId32 { - network: ::core::option::Option< - runtime_types::staging_xcm::v3::junction::NetworkId, - >, + network: + ::core::option::Option, id: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] AccountIndex64 { - network: ::core::option::Option< - runtime_types::staging_xcm::v3::junction::NetworkId, - >, + network: + ::core::option::Option, #[codec(compact)] index: ::core::primitive::u64, }, #[codec(index = 3)] AccountKey20 { - network: ::core::option::Option< - runtime_types::staging_xcm::v3::junction::NetworkId, - >, + network: + ::core::option::Option, key: [::core::primitive::u8; 20usize], }, #[codec(index = 4)] @@ -48547,11 +55701,11 @@ pub mod api { OnlyChild, #[codec(index = 8)] Plurality { - id: runtime_types::staging_xcm::v3::junction::BodyId, - part: runtime_types::staging_xcm::v3::junction::BodyPart, + id: runtime_types::xcm::v3::junction::BodyId, + part: runtime_types::xcm::v3::junction::BodyPart, }, #[codec(index = 9)] - GlobalConsensus(runtime_types::staging_xcm::v3::junction::NetworkId), + GlobalConsensus(runtime_types::xcm::v3::junction::NetworkId), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -48590,6 +55744,8 @@ pub mod api { BitcoinCore, #[codec(index = 9)] BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, } } pub mod junctions { @@ -48608,62 +55764,62 @@ pub mod api { #[codec(index = 0)] Here, #[codec(index = 1)] - X1(runtime_types::staging_xcm::v3::junction::Junction), + X1(runtime_types::xcm::v3::junction::Junction), #[codec(index = 2)] X2( - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, ), #[codec(index = 3)] X3( - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, ), #[codec(index = 4)] X4( - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, ), #[codec(index = 5)] X5( - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, ), #[codec(index = 6)] X6( - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, ), #[codec(index = 7)] X7( - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, ), #[codec(index = 8)] X8( - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, - runtime_types::staging_xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, + runtime_types::xcm::v3::junction::Junction, ), } } @@ -48723,7 +55879,7 @@ pub mod api { #[codec(index = 0)] Fungible(#[codec(compact)] ::core::primitive::u128), #[codec(index = 1)] - NonFungible(runtime_types::staging_xcm::v3::multiasset::AssetInstance), + NonFungible(runtime_types::xcm::v3::multiasset::AssetInstance), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -48736,8 +55892,8 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct MultiAsset { - pub id: runtime_types::staging_xcm::v3::multiasset::AssetId, - pub fun: runtime_types::staging_xcm::v3::multiasset::Fungibility, + pub id: runtime_types::xcm::v3::multiasset::AssetId, + pub fun: runtime_types::xcm::v3::multiasset::Fungibility, } #[derive( :: subxt :: ext :: codec :: Decode, @@ -48751,9 +55907,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum MultiAssetFilter { #[codec(index = 0)] - Definite(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + Definite(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 1)] - Wild(runtime_types::staging_xcm::v3::multiasset::WildMultiAsset), + Wild(runtime_types::xcm::v3::multiasset::WildMultiAsset), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -48766,7 +55922,7 @@ pub mod api { #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub struct MultiAssets( - pub ::std::vec::Vec, + pub ::std::vec::Vec, ); #[derive( :: subxt :: ext :: codec :: Decode, @@ -48799,37 +55955,20 @@ pub mod api { All, #[codec(index = 1)] AllOf { - id: runtime_types::staging_xcm::v3::multiasset::AssetId, - fun: runtime_types::staging_xcm::v3::multiasset::WildFungibility, + id: runtime_types::xcm::v3::multiasset::AssetId, + fun: runtime_types::xcm::v3::multiasset::WildFungibility, }, #[codec(index = 2)] AllCounted(#[codec(compact)] ::core::primitive::u32), #[codec(index = 3)] AllOfCounted { - id: runtime_types::staging_xcm::v3::multiasset::AssetId, - fun: runtime_types::staging_xcm::v3::multiasset::WildFungibility, + id: runtime_types::xcm::v3::multiasset::AssetId, + fun: runtime_types::xcm::v3::multiasset::WildFungibility, #[codec(compact)] count: ::core::primitive::u32, }, } } - pub mod multilocation { - use super::runtime_types; - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct MultiLocation { - pub parents: ::core::primitive::u8, - pub interior: runtime_types::staging_xcm::v3::junctions::Junctions, - } - } pub mod traits { use super::runtime_types; #[derive( @@ -48924,27 +56063,6 @@ pub mod api { #[codec(index = 39)] ExceedsStackLimit, } - #[derive( - :: subxt :: ext :: codec :: Decode, - :: subxt :: ext :: codec :: Encode, - :: subxt :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum Outcome { - #[codec(index = 0)] - Complete(runtime_types::sp_weights::weight_v2::Weight), - #[codec(index = 1)] - Incomplete( - runtime_types::sp_weights::weight_v2::Weight, - runtime_types::staging_xcm::v3::traits::Error, - ), - #[codec(index = 2)] - Error(runtime_types::staging_xcm::v3::traits::Error), - } } #[derive( :: subxt :: ext :: codec :: Decode, @@ -48958,16 +56076,16 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Instruction { #[codec(index = 0)] - WithdrawAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 1)] - ReserveAssetDeposited(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + ReserveAssetDeposited(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 2)] - ReceiveTeleportedAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + ReceiveTeleportedAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 3)] QueryResponse { #[codec(compact)] query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v3::Response, + response: runtime_types::xcm::v3::Response, max_weight: runtime_types::sp_weights::weight_v2::Weight, querier: ::core::option::Option< runtime_types::staging_xcm::v3::multilocation::MultiLocation, @@ -48975,20 +56093,20 @@ pub mod api { }, #[codec(index = 4)] TransferAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + assets: runtime_types::xcm::v3::multiasset::MultiAssets, beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 5)] TransferReserveAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + assets: runtime_types::xcm::v3::multiasset::MultiAssets, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 6)] Transact { - origin_kind: runtime_types::staging_xcm::v2::OriginKind, + origin_kind: runtime_types::xcm::v2::OriginKind, require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, - call: runtime_types::staging_xcm::double_encoded::DoubleEncoded, + call: runtime_types::xcm::double_encoded::DoubleEncoded, }, #[codec(index = 7)] HrmpNewChannelOpenRequest { @@ -49016,59 +56134,59 @@ pub mod api { #[codec(index = 10)] ClearOrigin, #[codec(index = 11)] - DescendOrigin(runtime_types::staging_xcm::v3::junctions::Junctions), + DescendOrigin(runtime_types::xcm::v3::junctions::Junctions), #[codec(index = 12)] - ReportError(runtime_types::staging_xcm::v3::QueryResponseInfo), + ReportError(runtime_types::xcm::v3::QueryResponseInfo), #[codec(index = 13)] DepositAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 14)] DepositReserveAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 15)] ExchangeAsset { - give: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, - want: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + give: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + want: runtime_types::xcm::v3::multiasset::MultiAssets, maximal: ::core::primitive::bool, }, #[codec(index = 16)] InitiateReserveWithdraw { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, reserve: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 17)] InitiateTeleport { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 18)] ReportHolding { - response_info: runtime_types::staging_xcm::v3::QueryResponseInfo, - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + response_info: runtime_types::xcm::v3::QueryResponseInfo, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, }, #[codec(index = 19)] BuyExecution { - fees: runtime_types::staging_xcm::v3::multiasset::MultiAsset, - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + fees: runtime_types::xcm::v3::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 20)] RefundSurplus, #[codec(index = 21)] - SetErrorHandler(runtime_types::staging_xcm::v3::Xcm), + SetErrorHandler(runtime_types::xcm::v3::Xcm), #[codec(index = 22)] - SetAppendix(runtime_types::staging_xcm::v3::Xcm), + SetAppendix(runtime_types::xcm::v3::Xcm), #[codec(index = 23)] ClearError, #[codec(index = 24)] ClaimAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + assets: runtime_types::xcm::v3::multiasset::MultiAssets, ticket: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 25)] @@ -49082,9 +56200,9 @@ pub mod api { #[codec(index = 27)] UnsubscribeVersion, #[codec(index = 28)] - BurnAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + BurnAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 29)] - ExpectAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + ExpectAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 30)] ExpectOrigin( ::core::option::Option< @@ -49095,15 +56213,15 @@ pub mod api { ExpectError( ::core::option::Option<( ::core::primitive::u32, - runtime_types::staging_xcm::v3::traits::Error, + runtime_types::xcm::v3::traits::Error, )>, ), #[codec(index = 32)] - ExpectTransactStatus(runtime_types::staging_xcm::v3::MaybeErrorCode), + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), #[codec(index = 33)] QueryPallet { module_name: ::std::vec::Vec<::core::primitive::u8>, - response_info: runtime_types::staging_xcm::v3::QueryResponseInfo, + response_info: runtime_types::xcm::v3::QueryResponseInfo, }, #[codec(index = 34)] ExpectPallet { @@ -49117,35 +56235,35 @@ pub mod api { min_crate_minor: ::core::primitive::u32, }, #[codec(index = 35)] - ReportTransactStatus(runtime_types::staging_xcm::v3::QueryResponseInfo), + ReportTransactStatus(runtime_types::xcm::v3::QueryResponseInfo), #[codec(index = 36)] ClearTransactStatus, #[codec(index = 37)] - UniversalOrigin(runtime_types::staging_xcm::v3::junction::Junction), + UniversalOrigin(runtime_types::xcm::v3::junction::Junction), #[codec(index = 38)] ExportMessage { - network: runtime_types::staging_xcm::v3::junction::NetworkId, - destination: runtime_types::staging_xcm::v3::junctions::Junctions, - xcm: runtime_types::staging_xcm::v3::Xcm, + network: runtime_types::xcm::v3::junction::NetworkId, + destination: runtime_types::xcm::v3::junctions::Junctions, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 39)] LockAsset { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, unlocker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 40)] UnlockAsset { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, target: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 41)] NoteUnlockable { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 42)] RequestUnlock { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, locker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 43)] @@ -49158,7 +56276,7 @@ pub mod api { AliasOrigin(runtime_types::staging_xcm::v3::multilocation::MultiLocation), #[codec(index = 47)] UnpaidExecution { - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + weight_limit: runtime_types::xcm::v3::WeightLimit, check_origin: ::core::option::Option< runtime_types::staging_xcm::v3::multilocation::MultiLocation, >, @@ -49176,16 +56294,16 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum Instruction2 { #[codec(index = 0)] - WithdrawAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + WithdrawAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 1)] - ReserveAssetDeposited(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + ReserveAssetDeposited(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 2)] - ReceiveTeleportedAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + ReceiveTeleportedAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 3)] QueryResponse { #[codec(compact)] query_id: ::core::primitive::u64, - response: runtime_types::staging_xcm::v3::Response, + response: runtime_types::xcm::v3::Response, max_weight: runtime_types::sp_weights::weight_v2::Weight, querier: ::core::option::Option< runtime_types::staging_xcm::v3::multilocation::MultiLocation, @@ -49193,20 +56311,20 @@ pub mod api { }, #[codec(index = 4)] TransferAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + assets: runtime_types::xcm::v3::multiasset::MultiAssets, beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 5)] TransferReserveAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + assets: runtime_types::xcm::v3::multiasset::MultiAssets, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 6)] Transact { - origin_kind: runtime_types::staging_xcm::v2::OriginKind, + origin_kind: runtime_types::xcm::v2::OriginKind, require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, - call: runtime_types::staging_xcm::double_encoded::DoubleEncoded2, + call: runtime_types::xcm::double_encoded::DoubleEncoded2, }, #[codec(index = 7)] HrmpNewChannelOpenRequest { @@ -49234,59 +56352,59 @@ pub mod api { #[codec(index = 10)] ClearOrigin, #[codec(index = 11)] - DescendOrigin(runtime_types::staging_xcm::v3::junctions::Junctions), + DescendOrigin(runtime_types::xcm::v3::junctions::Junctions), #[codec(index = 12)] - ReportError(runtime_types::staging_xcm::v3::QueryResponseInfo), + ReportError(runtime_types::xcm::v3::QueryResponseInfo), #[codec(index = 13)] DepositAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, beneficiary: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 14)] DepositReserveAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 15)] ExchangeAsset { - give: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, - want: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + give: runtime_types::xcm::v3::multiasset::MultiAssetFilter, + want: runtime_types::xcm::v3::multiasset::MultiAssets, maximal: ::core::primitive::bool, }, #[codec(index = 16)] InitiateReserveWithdraw { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, reserve: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 17)] InitiateTeleport { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, dest: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - xcm: runtime_types::staging_xcm::v3::Xcm, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 18)] ReportHolding { - response_info: runtime_types::staging_xcm::v3::QueryResponseInfo, - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssetFilter, + response_info: runtime_types::xcm::v3::QueryResponseInfo, + assets: runtime_types::xcm::v3::multiasset::MultiAssetFilter, }, #[codec(index = 19)] BuyExecution { - fees: runtime_types::staging_xcm::v3::multiasset::MultiAsset, - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + fees: runtime_types::xcm::v3::multiasset::MultiAsset, + weight_limit: runtime_types::xcm::v3::WeightLimit, }, #[codec(index = 20)] RefundSurplus, #[codec(index = 21)] - SetErrorHandler(runtime_types::staging_xcm::v3::Xcm2), + SetErrorHandler(runtime_types::xcm::v3::Xcm2), #[codec(index = 22)] - SetAppendix(runtime_types::staging_xcm::v3::Xcm2), + SetAppendix(runtime_types::xcm::v3::Xcm2), #[codec(index = 23)] ClearError, #[codec(index = 24)] ClaimAsset { - assets: runtime_types::staging_xcm::v3::multiasset::MultiAssets, + assets: runtime_types::xcm::v3::multiasset::MultiAssets, ticket: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 25)] @@ -49300,9 +56418,9 @@ pub mod api { #[codec(index = 27)] UnsubscribeVersion, #[codec(index = 28)] - BurnAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + BurnAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 29)] - ExpectAsset(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + ExpectAsset(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 30)] ExpectOrigin( ::core::option::Option< @@ -49313,15 +56431,15 @@ pub mod api { ExpectError( ::core::option::Option<( ::core::primitive::u32, - runtime_types::staging_xcm::v3::traits::Error, + runtime_types::xcm::v3::traits::Error, )>, ), #[codec(index = 32)] - ExpectTransactStatus(runtime_types::staging_xcm::v3::MaybeErrorCode), + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), #[codec(index = 33)] QueryPallet { module_name: ::std::vec::Vec<::core::primitive::u8>, - response_info: runtime_types::staging_xcm::v3::QueryResponseInfo, + response_info: runtime_types::xcm::v3::QueryResponseInfo, }, #[codec(index = 34)] ExpectPallet { @@ -49335,35 +56453,35 @@ pub mod api { min_crate_minor: ::core::primitive::u32, }, #[codec(index = 35)] - ReportTransactStatus(runtime_types::staging_xcm::v3::QueryResponseInfo), + ReportTransactStatus(runtime_types::xcm::v3::QueryResponseInfo), #[codec(index = 36)] ClearTransactStatus, #[codec(index = 37)] - UniversalOrigin(runtime_types::staging_xcm::v3::junction::Junction), + UniversalOrigin(runtime_types::xcm::v3::junction::Junction), #[codec(index = 38)] ExportMessage { - network: runtime_types::staging_xcm::v3::junction::NetworkId, - destination: runtime_types::staging_xcm::v3::junctions::Junctions, - xcm: runtime_types::staging_xcm::v3::Xcm, + network: runtime_types::xcm::v3::junction::NetworkId, + destination: runtime_types::xcm::v3::junctions::Junctions, + xcm: runtime_types::xcm::v3::Xcm, }, #[codec(index = 39)] LockAsset { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, unlocker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 40)] UnlockAsset { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, target: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 41)] NoteUnlockable { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, owner: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 42)] RequestUnlock { - asset: runtime_types::staging_xcm::v3::multiasset::MultiAsset, + asset: runtime_types::xcm::v3::multiasset::MultiAsset, locker: runtime_types::staging_xcm::v3::multilocation::MultiLocation, }, #[codec(index = 43)] @@ -49376,7 +56494,7 @@ pub mod api { AliasOrigin(runtime_types::staging_xcm::v3::multilocation::MultiLocation), #[codec(index = 47)] UnpaidExecution { - weight_limit: runtime_types::staging_xcm::v3::WeightLimit, + weight_limit: runtime_types::xcm::v3::WeightLimit, check_origin: ::core::option::Option< runtime_types::staging_xcm::v3::multilocation::MultiLocation, >, @@ -49464,12 +56582,12 @@ pub mod api { #[codec(index = 0)] Null, #[codec(index = 1)] - Assets(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + Assets(runtime_types::xcm::v3::multiasset::MultiAssets), #[codec(index = 2)] ExecutionResult( ::core::option::Option<( ::core::primitive::u32, - runtime_types::staging_xcm::v3::traits::Error, + runtime_types::xcm::v3::traits::Error, )>, ), #[codec(index = 3)] @@ -49477,11 +56595,11 @@ pub mod api { #[codec(index = 4)] PalletsInfo( runtime_types::bounded_collections::bounded_vec::BoundedVec< - runtime_types::staging_xcm::v3::PalletInfo, + runtime_types::xcm::v3::PalletInfo, >, ), #[codec(index = 5)] - DispatchResult(runtime_types::staging_xcm::v3::MaybeErrorCode), + DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49509,7 +56627,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm(pub ::std::vec::Vec); + pub struct Xcm(pub ::std::vec::Vec); #[derive( :: subxt :: ext :: codec :: Decode, :: subxt :: ext :: codec :: Encode, @@ -49520,7 +56638,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub struct Xcm2(pub ::std::vec::Vec); + pub struct Xcm2(pub ::std::vec::Vec); } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49534,7 +56652,9 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum VersionedAssetId { #[codec(index = 3)] - V3(runtime_types::staging_xcm::v3::multiasset::AssetId), + V3(runtime_types::xcm::v3::multiasset::AssetId), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::AssetId), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49546,11 +56666,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedMultiAssets { + pub enum VersionedAssets { #[codec(index = 1)] - V2(runtime_types::staging_xcm::v2::multiasset::MultiAssets), + V2(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 3)] - V3(runtime_types::staging_xcm::v3::multiasset::MultiAssets), + V3(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::Assets), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49562,11 +56684,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] - pub enum VersionedMultiLocation { + pub enum VersionedLocation { #[codec(index = 1)] - V2(runtime_types::staging_xcm::v2::multilocation::MultiLocation), + V2(runtime_types::xcm::v2::multilocation::MultiLocation), #[codec(index = 3)] V3(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49580,9 +56704,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum VersionedResponse { #[codec(index = 2)] - V2(runtime_types::staging_xcm::v2::Response), + V2(runtime_types::xcm::v2::Response), #[codec(index = 3)] - V3(runtime_types::staging_xcm::v3::Response), + V3(runtime_types::xcm::v3::Response), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Response), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49596,9 +56722,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum VersionedXcm { #[codec(index = 2)] - V2(runtime_types::staging_xcm::v2::Xcm), + V2(runtime_types::xcm::v2::Xcm), #[codec(index = 3)] - V3(runtime_types::staging_xcm::v3::Xcm), + V3(runtime_types::xcm::v3::Xcm), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm), } #[derive( :: subxt :: ext :: codec :: Decode, @@ -49612,9 +56740,38 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] pub enum VersionedXcm2 { #[codec(index = 2)] - V2(runtime_types::staging_xcm::v2::Xcm2), + V2(runtime_types::xcm::v2::Xcm2), + #[codec(index = 3)] + V3(runtime_types::xcm::v3::Xcm2), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm2), + } + } + pub mod xcm_fee_payment_runtime_api { + use super::runtime_types; + #[derive( + :: subxt :: ext :: codec :: Decode, + :: subxt :: ext :: codec :: Encode, + :: subxt :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: scale_encode")] + pub enum Error { + #[codec(index = 0)] + Unimplemented, + #[codec(index = 1)] + VersionedConversionFailed, + #[codec(index = 2)] + WeightNotComputable, #[codec(index = 3)] - V3(runtime_types::staging_xcm::v3::Xcm2), + UnhandledXcmVersion, + #[codec(index = 4)] + AssetNotFound, + #[codec(index = 5)] + Unroutable, } } } diff --git a/modules/ismp/core/src/events.rs b/modules/ismp/core/src/events.rs index 1b6ae54ce..e49cc9be8 100644 --- a/modules/ismp/core/src/events.rs +++ b/modules/ismp/core/src/events.rs @@ -1,7 +1,7 @@ //! Canonical ISMP Events use crate::{ - consensus::StateMachineId, + consensus::{StateMachineHeight, StateMachineId}, host::StateMachine, router::{Get, Post, PostResponse, Request, Response}, }; @@ -20,6 +20,15 @@ pub struct StateMachineUpdated { pub latest_height: u64, } +/// Emitted when a [`StateCommitment`] has been successfully vetoed by a fisherman +#[derive(Clone, Debug, TypeInfo, Encode, Decode, serde::Deserialize, serde::Serialize)] +pub struct StateCommitmentVetoed { + /// The state commitment identifier + pub height: StateMachineHeight, + /// The responsible relayer + pub fisherman: Vec, +} + /// Emitted when a request or response is successfully handled. #[derive( Clone, Debug, TypeInfo, Encode, Decode, serde::Deserialize, serde::Serialize, PartialEq, Eq, @@ -46,6 +55,9 @@ pub enum Event { /// Emitted when a state machine is successfully updated to a new height after the challenge /// period has elapsed StateMachineUpdated(StateMachineUpdated), + /// A [`StateCommitment`] (which is ideally still in it's challenge period) has been vetoed by + /// a fisherman. + StateCommitmentVetoed(StateCommitmentVetoed), /// An event that is emitted when a post request is dispatched PostRequest(Post), /// An event that is emitted when a post response is dispatched diff --git a/modules/ismp/pallet/call-decompressor/src/lib.rs b/modules/ismp/pallet/call-decompressor/src/lib.rs index 4314af995..e73d790a9 100644 --- a/modules/ismp/pallet/call-decompressor/src/lib.rs +++ b/modules/ismp/pallet/call-decompressor/src/lib.rs @@ -83,9 +83,8 @@ pub mod pallet { ::RuntimeCall: IsSubType>, ::RuntimeCall: IsSubType>, { - /** - The `encoded_call_size` which is the size of the not compressed(decompressed) encoded call in bytes - */ + /// The encoded_call_size which is the size of the not compressed(decompressed) encoded call + /// in bytes #[pallet::call_index(0)] #[pallet::weight({1_000_000})] pub fn decompress_call( diff --git a/modules/ismp/pallet/fishermen/src/lib.rs b/modules/ismp/pallet/fishermen/src/lib.rs index a4af5ea56..d7cee12cd 100644 --- a/modules/ismp/pallet/fishermen/src/lib.rs +++ b/modules/ismp/pallet/fishermen/src/lib.rs @@ -16,16 +16,19 @@ //! Enables fishermen keep hyperbridge safe by vetoing fraudulent state commitments. #![cfg_attr(not(feature = "std"), no_std)] +extern crate alloc; pub use pallet::*; #[frame_support::pallet] pub mod pallet { use super::*; - use frame_support::pallet_prelude::*; + use alloc::vec; + use frame_support::{pallet_prelude::*, traits::OriginTrait}; use frame_system::pallet_prelude::*; use ismp::{ consensus::{StateCommitment, StateMachineHeight}, + events::StateCommitmentVetoed, host::IsmpHost, }; use pallet_ismp::host::Host; @@ -70,7 +73,10 @@ pub mod pallet { } #[pallet::call] - impl Pallet { + impl Pallet + where + T::AccountId: AsRef<[u8]>, + { /// Adds a new fisherman to the set #[pallet::call_index(0)] #[pallet::weight({1_000_000})] @@ -109,7 +115,7 @@ pub mod pallet { origin: OriginFor, height: StateMachineHeight, ) -> DispatchResult { - let account = ensure_signed(origin)?; + let account = ensure_signed(origin.clone())?; ensure!(Fishermen::::contains_key(&account), Error::::UnauthorizedAction); let ismp_host = Host::::default(); @@ -118,6 +124,17 @@ pub mod pallet { ismp_host.delete_state_commitment(height).map_err(|_| Error::::VetoFailed)?; Self::deposit_event(Event::StateCommitmentVetoed { height, commitment }); + pallet_ismp::events::deposit_ismp_events::( + vec![Ok(ismp::events::Event::StateCommitmentVetoed(StateCommitmentVetoed { + height, + fisherman: origin + .into_signer() + .expect("origin is signed; qed") + .as_ref() + .to_vec(), + }))], + &mut vec![], + ); Ok(()) } } diff --git a/modules/ismp/pallet/host-executive/src/params.rs b/modules/ismp/pallet/host-executive/src/params.rs index 4a3d2c3df..9d41657e5 100644 --- a/modules/ismp/pallet/host-executive/src/params.rs +++ b/modules/ismp/pallet/host-executive/src/params.rs @@ -28,11 +28,15 @@ pub struct HostParam { /// The consensus client contract pub consensus_client: H160, /// The current consensus state - pub consensus_state: BoundedVec>, + pub consensus_state: BoundedVec>, /// Timestamp for when the consensus state was last updated pub consensus_update_timestamp: u128, /// The state machine identifier for hyperbridge pub state_machine_whitelist: BoundedVec>, + /// List of fishermen + pub fishermen: BoundedVec>, + /// The state machine identifier for hyperbridge + pub hyperbridge: BoundedVec>, } impl HostParam { @@ -85,6 +89,14 @@ impl HostParam { if let Some(state_machine_whitelist) = update.state_machine_whitelist { self.state_machine_whitelist = state_machine_whitelist; } + + if let Some(fishermen) = update.fishermen { + self.fishermen = fishermen; + } + + if let Some(hyperbridge) = update.hyperbridge { + self.hyperbridge = hyperbridge; + } } } @@ -112,11 +124,15 @@ pub struct HostParamUpdate { /// The consensus client contract pub consensus_client: Option, /// The current consensus state - pub consensus_state: Option>>, + pub consensus_state: Option>>, /// Timestamp for when the consensus state was last updated pub consensus_update_timestamp: Option, /// The state machine identifier for hyperbridge pub state_machine_whitelist: Option>>, + /// List of fishermen + pub fishermen: Option>>, + /// The state machine identifier for hyperbridge + pub hyperbridge: Option>>, } /// The host parameters of all connected chains, ethereum friendly version @@ -146,6 +162,10 @@ pub struct HostParamRlp { pub consensus_update_timestamp: alloy_primitives::U256, /// The state machine identifier for hyperbridge pub state_machine_whitelist: Vec, + /// The list of whitelisted fisherment + pub fishermen: Vec, + /// The state machine identifier for hyperbridge + pub hyperbridge: alloy_primitives::Bytes, } impl TryFrom for HostParamRlp { @@ -172,6 +192,12 @@ impl TryFrom for HostParamRlp { .into_iter() .map(|id| id.try_into().map_err(anyhow::Error::msg)) .collect::, anyhow::Error>>()?, + hyperbridge: value.hyperbridge.to_vec().into(), + fishermen: value + .fishermen + .into_iter() + .map(|address| address.0.try_into().map_err(anyhow::Error::msg)) + .collect::, _>>()?, }) } } diff --git a/modules/ismp/pallet/src/child_trie.rs b/modules/ismp/pallet/src/child_trie.rs index c643d28de..118206576 100644 --- a/modules/ismp/pallet/src/child_trie.rs +++ b/modules/ismp/pallet/src/child_trie.rs @@ -2,7 +2,8 @@ use alloc::vec::Vec; use core::marker::PhantomData; -use frame_support::storage::{child, storage_prefix}; + +use frame_support::storage::child; use sp_core::{storage::ChildInfo, H256}; use crate::{dispatcher::LeafMetadata, Config, ResponseReceipt}; @@ -30,24 +31,21 @@ pub const CHILD_TRIE_PREFIX: &'static [u8] = b"ISMP"; /// Storage key for a request commitment pub fn request_commitment_storage_key(key: H256) -> Vec { - let mut full_key = - storage_prefix(PALLET_NAME.as_bytes(), "RequestCommitments".as_bytes()).to_vec(); + let mut full_key = "RequestCommitments".as_bytes().to_vec(); full_key.extend_from_slice(&key.0); full_key } /// Storage key for a response commitment pub fn response_commitment_storage_key(key: H256) -> Vec { - let mut full_key = - storage_prefix(PALLET_NAME.as_bytes(), "ResponseCommitments".as_bytes()).to_vec(); + let mut full_key = "ResponseCommitments".as_bytes().to_vec(); full_key.extend_from_slice(&key.0); full_key } /// Storage key for a request receipt pub fn request_receipt_storage_key(key: H256) -> Vec { - let mut full_key = - storage_prefix(PALLET_NAME.as_bytes(), "RequestReceipts".as_bytes()).to_vec(); + let mut full_key = "RequestReceipts".as_bytes().to_vec(); full_key.extend_from_slice(&key.0); full_key } @@ -55,8 +53,7 @@ pub fn request_receipt_storage_key(key: H256) -> Vec { /// Storage key for a response receipt /// The request commitment is the key pub fn response_receipt_storage_key(key: H256) -> Vec { - let mut full_key = - storage_prefix(PALLET_NAME.as_bytes(), "ResponseReceipts".as_bytes()).to_vec(); + let mut full_key = "ResponseReceipts".as_bytes().to_vec(); full_key.extend_from_slice(&key.0); full_key } diff --git a/modules/ismp/pallet/src/events.rs b/modules/ismp/pallet/src/events.rs index 35e493d46..bcea979f7 100644 --- a/modules/ismp/pallet/src/events.rs +++ b/modules/ismp/pallet/src/events.rs @@ -16,6 +16,7 @@ use crate::{errors::HandlingError, Config, Event as PalletEvent, Pallet}; use alloc::vec::Vec; +use frame_support::BoundedVec; use ismp::{ consensus::StateMachineId, error::Error, @@ -90,10 +91,11 @@ pub fn to_core_protocol_event(event: PalletEvent) -> Option PalletEvent::PostResponseTimeoutHandled(handled) => Some(Event::PostResponseTimeoutHandled(handled)), // We are only converting events useful relayers and applications - PalletEvent::ConsensusClientCreated { .. } => None, - PalletEvent::ConsensusClientFrozen { .. } => None, - PalletEvent::Errors { .. } => None, - PalletEvent::__Ignore(_, _) => None, + PalletEvent::ConsensusClientCreated { .. } | + PalletEvent::ConsensusClientFrozen { .. } | + PalletEvent::Errors { .. } | + PalletEvent::__Ignore(_, _) | + PalletEvent::StateCommitmentVetoed { .. } => None, } } @@ -125,6 +127,11 @@ pub fn deposit_ismp_events( state_machine_id: ev.state_machine_id, latest_height: ev.latest_height, }), + ismp::events::Event::StateCommitmentVetoed(ev) => + Pallet::::deposit_event(PalletEvent::::StateCommitmentVetoed { + height: ev.height, + fisherman: BoundedVec::truncate_from(ev.fisherman), + }), // These events are only deposited when messages are dispatched, they should never // be deposited when a message is handled ismp::events::Event::PostRequest(_) => {}, diff --git a/modules/ismp/pallet/src/lib.rs b/modules/ismp/pallet/src/lib.rs index dd1f63fe0..46cb535bd 100644 --- a/modules/ismp/pallet/src/lib.rs +++ b/modules/ismp/pallet/src/lib.rs @@ -423,11 +423,18 @@ pub mod pallet { pub enum Event { /// Emitted when a state machine is successfully updated to a new height StateMachineUpdated { - /// State machine height + /// State machine identifier state_machine_id: StateMachineId, /// State machine latest height latest_height: u64, }, + /// Emitted when a state commitment is vetoed by a fisherman + StateCommitmentVetoed { + /// State machine height + height: StateMachineHeight, + /// responsible fisherman + fisherman: BoundedVec>, + }, /// Indicates that a consensus client has been created ConsensusClientCreated { /// Consensus client id diff --git a/parachain/chainspec/gargantua.paseo.json b/parachain/chainspec/gargantua.paseo.json new file mode 100644 index 000000000..e3c28ee33 --- /dev/null +++ b/parachain/chainspec/gargantua.paseo.json @@ -0,0 +1,76 @@ +{ + "name": "Hyperbridge (Gargantua)", + "id": "gargantua", + "chainType": "Live", + "bootNodes": [], + "telemetryEndpoints": [ + [ + "wss://telemetry.polkadot.io/submit/", + 0 + ] + ], + "protocolId": "gargantua", + "properties": { + "ss58Format": 42, + "tokenDecimals": 12, + "tokenSymbol": "tNAND" + }, + "relay_chain": "paseo", + "para_id": 4009, + "codeSubstitutes": {}, + "genesis": { + "raw": { + "top": { + "0x0547bb1f7973a07fd94e01a0d0dcd16a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x0d715f2646c8f85767b5d2764bb2782604a74d81251e398fd8a0a4d55023bb3f": "0xa90f0000", + "0x0d715f2646c8f85767b5d2764bb278264e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x103895530afb23bb607661426d55eb8b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x15464cac3378d46f113cd5b7a4d71c84476f594316a7dfe49c1f352d95abdaf1": "0x00000000", + "0x15464cac3378d46f113cd5b7a4d71c844e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x15464cac3378d46f113cd5b7a4d71c845579297f4dfb9609e7e4c2ebab9ce40a": "0x0470f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c", + "0x15464cac3378d46f113cd5b7a4d71c84579f5a43435b04a98d64da0cefe18505": "0x00e40b54020000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96": "0x000000000000", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9afa172acf083421926d6cfe34805cb00588177cf191e890d83b10e9653cfd663c8a382d5afce8518636dd9565c22a631": "0x00000000000000000100000000000000000010632d5ec76b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9f3348a0d38f168e401926958f66bcf0b70f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c": "0x0000000001000000010000000000000000e40b54020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x99032467617267616e747561", + "0x3a63": "0x", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00580484041e6405a611551050aa8873d4810bd44f46ce3c819e063ea3860d26930ede230c3612f21aa710a7246d41c6bf53edcd99e3da73de019a50903e29c64b13baaa17cf1ab8753ac67414104b668c07f4d1fff6b38d9696369152262965f8131011a31072d868b1e1b1b1c1c6092049007207103b80d401840e20450032870d0f363bd8ccd0dad2b2a3d58356914d8f0d0d363a00890348518945b982525612510e510a5166510a953a28735036513251dea0b4415945492b6b50d2a0a4a29ca294a28ca284a20c2a6550c6a09c9530285f500251fe5002954b944a9449942e287f4a24ca234a23ca22ca16942c287dca1e4a1f4a149429287328b59438943a9437943ce50c2d3a5a4968d5d19aa375476b8b16172d2d5a51b4825a59b4a66851d182a285450b072da19614ad1ab466ad275a3368c5a0f582160c2c0c5a402d266c901da285442b88960f35443569d4b051a3468d106ab8a8d1418d163559d46c5193839a296aa4a871418d0f3feea8b95283a526cb0f3b7e18e1871c3fd4f841f4038e1f64fc18e347193fc4f8c1831f61fc18fa01c68f2f7e9cf1c3f6038d1f54fca0c10f18fc98fd78014d0d3f8af8014403041a34686c2d229a1fd080414305cd143452d0444153044d969935688898b9d1e840c303cd10336fcc1081660534b29921d05ca1e1a1b981a604342da0f181a687993668b4ccb84113040d961936687098818306881917ccfc681f740f332b98510139c58c0f2f409841c10c0b6668325dc8d4584ad4e0e034c34c11334133469cda9869c1cc10a7d84b1b2f6ca080801ac20c123354f8a083c544c90c960c58312001511aa33434c3c38f3a6a7e4a69b08ec00a02cba651403a024923a320ab20d120b52069c0fa216b2023066903120af20c1207a48df482fcc1cb8de482f401d903d20cb20b3207a40ec81a5986ddc26af1e3e7129190d05a83c71d30369617a3157a06981f8440b07680dd08838899c3b4864a8b931c6315a637626426a2d10626371e871e6af410420f20fc4882e6081e43f4c8d2e30a0f3b64c090294366073ca6901943060d1e32193264748012824b1266827881c3c50e5410665230f3033903991fc884210384531134161a215674fc9882e607131d570dd30eac2e5062f8a0b968e1a38a1f4ad0e4e0b205eb8b1f47a07c60e9a0e608528a1721b0869821e2650d960b64b86039c18a823503d6142c235855b08278f4c0a2f1f0810505035854b0b2603df192068b062c29582b38d1b0cac29ab180586398ae98f189492326083160906d98701093c5c60b183a607a0053060c193063c00ccd4401c383172296102c16bc04a144c64b1260b0bcb801638217395e90c04a814b1d2c9f17229059bc18e1c58ed3104e442f45303bbcd00183c38b193350bc0cc103881f46ac6a2b205631973b56359056905bb8ccb1a2c1650b4a0d173a64b458d92033249303992f5c8a582d60f9b0e291e1012b89308bd50d2b1f5638bcd84827c82b5044241564100b88d5959516d4965417a9305077a46aa83a523f487d9112036547ca96ea410a8d940f524348ad917a23d5462a082920a48890baa5dc489d91322345940223b583940e5264a486526ca48490f221e5456a8c944faa8c941aa934523c5895a0668893114c6db8c0e17203a998e98145060b0d95cd44849a1b30125cca10f2840b192e63b8f060460a17315458a8aee0e1a3b202dc4125852a0a1514aa209512aa24542e907942a6063237907142260a191bc86421430319211928483e3258c85431738292182e48007b007d60f1c0c281a583cc143252c8502163850c0e64ae90a1c904c9cc809585c58372034504541b2815a0d8502db19a21750314125848b064ac235257a0e6486591c2029504d20f2f6ab0824869c15241ca8ad410325ea454f07206f90489c50c10d605a822a48848c950466835818283d5c3b2817543ab0a54512a08541cac1c582660ed9012022507ab042c2d283a5242a8375a4ea47e08b558dda1632d1acb07a81390b690ec18671863a43b60ce38cd712abae1691d81c70f271d780871aae174c3898dd31a279ed3d0298cd30e4e609cc638f1e024c6c98bd317271f9c6ca7334e584e3d38fde084462a8ed4969319293854b1d30ee213220b4417884888331081441a8854885388416214a2142214a212220c44234419883fe24c6c811803d1097109910931899027c41266096b108f105f201621d6406cc27403688549cba966dac2c4c5290753cd9403930e4c5d9c6c107d441f4e5a4e38bcc47c07a6394c456e85dfc06de05538cd6be034702a7c0a97c2a370283cc89ff019b813de8433e132f018f88c25862907160f740dac374c58b0e0d034b0dc3069c152c324c40242690760143444309580e6b6c2c22ae265082f68947850020209831218a520f050414908251beb05314394ca602d6162834710a723a8bc608131d660a4d1bc41e3c648056a0df28d7cc5a6966d886141d621efc02232d5800503fbc4080429c4838891079b13908c303a62f4c468062324484c909e20cd80d4c4cb1b2c14b0882041410a42a5c1fa81d503d904ea466a01a908d2105e230931da4052c108cb28369a8114035210a459cb072c21886ed428e13dbce4b0aa23860e531d2c365e6c40e9c03404531aac21b08c609382911323168c5630928d88180d3112621404490e9c038f3a7e78117611ea40bc122a21ce10ce408c852f0881c225c2264226c221844e846b8432107f107b305961ba416885a8025108310871081108512612f112076803b08a1007a6201314a61998a23035016a0166115e01e3458c0d2f35d8fc803900b9005d00fa80408041845b804d804c80323821c12607bd039e41e3a04ba04dc0ea01ebf64203ab0d961cac357e2001c6008506caf672c3cb15dd637345e7402a026ba82c41b9838f2f5676b0e2b0d101290e18345a70b4e2601581468d561b2f45609de023e31bfac69811624646de40668b1927be2fbe1d9cdc2849a1fa823cc17884be02b2a014c50b0f48254a3e242de40fe906560e5e8648245eb4bccc4093c6cc0c1887179ed2143737947ec04618d9a159500334baa3b445e90b54ad6504aa0badc30d113e0c561aba05373f78192354c10d19333bdce4d0c38707e3870dca184a0ad4193f767043072b0c130f3d7c565b7c9071e3469024b0ce5085d11aa2a44509889b1d7e073acb88448f1e4874681b4c3d2f5966aefc172c22b8c4818f707302ad4575c68d1a3ec6b029c14d103f8ae0228462e2c711483c33588210896d9874d045c0f88044c1680beb073f5ca002633402b351f3021ca3998155864d0d41e8b8b943f3e81b4845ad226ee478c1c147143776b86471c343903b7e2c1144082d23984cf0a38a9958cd0d687a4c6ad020d16a01ab46f2f082e5a60e1b2c3ea00892468d15342c20cd81c2e1c60b96193436dcb4414ac28f386868b0b901db91b1e419f01d3986ebc05b301cf80d4c041c075e030fc1e60b5c04fec127c02ec02dc02bc03c6016e0236a68808dc03be01a30161b29b016cc83b3601bb00ef84a4d11378e2bc735424b768b708f5063c405c245e30aa1b5821611378d1b04f781f3c0857020fc076ef3243c8b9a25fc0a7781ffb8123554b47e1c07ee450d128e85fbe029a8b9a2c502e7711b1c07cfe25afc0cdb02ab03cb84edc29ac0ca2c0e6c11160a6b843dc2b2c096617960c5b025b052d815d81d6c168bc55ea9451509b6064b839dc1c6ea1db58e4a474d429da392518950d1a83fa86dd45b7da39e516dd58d1a472d423d4235a3c251e5a846a869d4356a0faa10aa1a95a8faa06a51b7a86554362a175507f58a8a45c541a541a5d51ad0d8a0de50671506758afa820aa4a3425d424a8d59a956d4192a0d3b958a294f5ca837709244c90a2050c0862d00e70006b04e0c2000455e02007213c4063403ac9b56971578d675a628010192284a74982041025657e1890e12245f90202b2e62565b50169aacf0048a0e15253a52964c693245e7894e0366565a2c41026585270f70e2048a02a82cd171e2048a0280acb2a05374a63c8112650a6b2544a75099a203c30b3a529050d161010bca0489ce93264c962871010995293a54943829617505d571a109952830ccac704075a828a13205c91418a63cd199f204ca121e2b2b985069120224e5ea06740a95273a31e8208959d980ae00058a9428555015a03491a21305890e0b4f749c3851c264498f158d528102458acbaa0614c90a4a749c2091e2820b489a44d928447161ca0364563470ada870e244c912274e9428600a3ac549132554745440a2a3b342cd4a0a26545878a2e3240aaaa3b302122854905061c242139d10942b282894159e34412202293a30bc20022527fc2a88ea2c7902e5091225489a44d93a4b9e40a1009527304059b264cbac9e5001ca121d157aac6640a78840a7052453a6884027024fa034993245e702e4ca091a822651b6149d16a440d14005c8551314890e0c3a30582047051d165850920364c5049dd2c2121d264b6440a75079a2234587c99326bf8ac193262bc4ac66744993294f9a48a122830e1211388912450912293a2a38690203ac8525509cc0582b18d02930ab17502548582b20ea0212255494a8a0848ace044aab2546d0c4899226549a3c69925a2901c3121d19744cab24a814280a08572ea04fa0448101890a4e9ac00002244f942c41d224caa6f244c70516742ea0828e0a303859f2a4c9130c289102c3ae59fdd0293a4da834910285091518949c5648d027509a505122050615905081e2640a922651b6122930ec14890cdac212284e408044878a12159a385112c388561d27205042e5090c2b20a1b244474a13159e344182e4c5063483ebe288d9a63b20a5c562bbeef84b067b00f6a046a9dc4dd9548a954a59964db15829cf945e8e72d4bf7b4be358b33bca2baeee5ebdcbb434d2eb95e67b31a5dafde67c2fc638e31576a7b4e65c3d534af1bd357bbd947a773dd75a3b7aa9dfeb58bcf776d8dd2fb6b7bbd433cdb8739aa95baf147be76152d77d22879df3eecd5ce7f7bbf77eee6097f1a5f9e48e29a598a260817be9ad9efdda6c33b5b5e69c419b73a63967c7f98a1dcd9dcb7427f4c0175fbf177b9e7b39e34c69a6b7a339d34c69f67b73a6d433cd949afc3aced7fabd385fdc753467bf15708ce9bd18634a1d5f778cb15fda51ec9d77debd1ef54c6f2e9d71f74b2ba5b966bfb926775dd751e056ce29a597769756da5dea97fabd3ea2eeb4baa6201de95565a7eeb487f770efe1a7eefa757a3a75de79e7e35e7beff5939f3c7ba69e29eddc633c67cfddbddef509c8d07cb348a904f2e862c7d7efa5f7ba5f8acaee3e30a5f4de7bf3cdd6564ae9a537dfee7ad7b977b8e4d84747b17ba66ead757bf1b5175f4c31c5985ecfaf67a963a7d4627cbf7ba95fcfee37f4177abbecae69e7d7a997b3e38c33bdd5bdd2ea2fb9eb3ad1fd9272ce59bc11b010b8f75ecff33c140ae35baf7b39c3e00b73efbd7706cfb8c93de79c3b945ff7dcf3fa65fbd54ca9cdd7efa594fa75ec177b14a33c4a69f5fc52ef70a6df03bce69a6d57ebcc85818181b1395f1773b616e37bb17baea571ccd42fbef7e2ceaf7bb6b8736bf175a7de03bbc517771763ea1deeba7bf1ed28c6a3915f937fdffdc62f674ab99c47945eeae3c6fdae64468ebb950380dc3b7af146f8e57b0912a4ba57a7369d6b6cb32a612433aa2577e73c3b75cadd9b2b75da004aa947b3bbdf4a3fbaa26e3da4b7ebf015c52aba786fcef9de0ee79cf1cd36fbed6ebd5e815c67c00bbe947aa64e414a29e528558114a446fcba534aab98a93bc5948ad76bceb452777afd7a27d2cec55a29bdb5d65a69d751c794e25a69e7b4eb3e2c96b8737cad5fef2e263975b7f876d85a8c6f87b18b2216458cddf3dc31c6ddbdb8ebbcfb61ef481e3c78f0c01e097ba44c7a98f430a634e74bbb8e761da5d4a9287ad74924b7f73a0f7a9d76ee97d69c6b8731ce395f777aafcbdc9cdd6bbe99d2eb9eab655def1cfbcd7eb37bc6b8ab3997403dd7eaf7e2ebd8eb708729c5d81dd39a69a6d45aeaf4aedcebbd0bf07befc5f77aa6f5faf59b73bd8e9de6ecf8524a31aed73175eaf75e9c73ceb5524a31a5d9b1775d479d52da61f1ebb047ea388ebbb773cf177bd8fd524ae9bd4eab67774aa9bb5fdc759de7247577d2ad37e79af1c536635cb3c5f7de7bddfd5e8cef75ecde7916956d27de7b9dd27b7356408773eebadbd596cd5dae396758cedee19c378e981390b3cd083880015a0530c1668baab1f9d24c802227c799bb187bf8629ca997c691d2ecb95e7b73a5345fcf669a7397a93ba67ebbebd4dd9dba6377c7d7ef75bfee9eddab57f7ce71f67b6b75b739d39ab3fbcd94faad3eca39674af3755c33f5eaeeee5eeb75cf39d36c7376cff4de9bad674a1d5f2e5b9a7d080d43ae388a5a114881e2828e0bf9a5828e141d15a440d16922854a09d5054a87e848590189142854942c81e2c489121611274a964071d272a10995273048d1aa15a8c020a3c3040995274da44441b2644a1317580170d2a405d7006a04d00a40eb6dbe0600250c71c5a8e0a409932548a8388141c90a3a2a942f838e0a4f9a2079d2440993252bac00450b80888c0c50424085470b4a962cd16981c80000f02e450030040900745a50e20404485878d284c914254c5e8a122a536a62a6bc982800a0409102d3c212252070e2048a94125c4a74a4c0d0e8b480848a0c3a4f78d050d161e1c5650a95294d64d0617174c813284da82c5132e589122954905069e2820b505a4f012043931574a444d12a3a44898e9325313174c8139d28519420d1614189142854a6b000e043081da2434589149d273a2c48a1514167ca141d29515c80b2e415520048d18901ca121d2948944c5161890e92212d10190000a22cd19962f343042b3491a2130312020c19c00000a0820e122854a28840ca121fa0139d18749c209141890b3d6278a2e3253a04c913284da648d18901090b509c2061e14913165880e204091519745e6278a2e340c4372cb5d2592b563e6ca5d2247467c73b77fcdcb94976aa959d4e4cb25377ea8964c5caddb149a8b572ad154f62a5ee58b1b2733b8ef392ecd41d2b3b9ec48a152b60122bd5cace9784eeec58b17293502b566c12ba6365676707d31d2b5676aa959a845ab162650727d9a956766c122b56ac58b1b2e33b5d126ac50a97c44aa549766aded9c14928b53b3709a53b3b36c94eddd9d9f1243b75a726a13b35c905300d2aa5b4ba3045090dadfff1ad5a6b4f7d18187d565455e9330a0ac571b2fa286e5647fae454a4aa52d9587d954a9ff55651faacb6faa56c43dd50375245e9d3541ff5d654bf54aaa6faa31fe933cb464faaf54d267d3a6d549f54f32ff57dd447696cf3b2d657e93cf3b2d687d15ccccb5a1f88e66a5ed6fa25e84e36f67cccc5dd689c8d54d6ffa1cff3c7936afd963eeb4cebffc1f5d0bc7e1a99edc9357bcb3d5ec3b51e33cffa99afef439f77f6a2cfee56e3e37bd8684d7c93dae8ad16e368b5879b551927ab33aee7873e6b4deb7fa9f569f469653ad3c8e7f1648fc772cc6d98c6fa4ffdd79fd1e7a575361f3d9e55abb45aab362e566fb798cdf6d4ac2cd3b43e2d8d078f7fa9f5497d7a0f0f7c9379979789f9292606cf56f55f9fb756bf874ed1ecccd26c2dcfac2dcbec2df7c472cc7b6e3cf4e93317977fa9f565f479632e7f6527967959c7fa2b7d5e5b7d963e817252a6cb9c866d5ec335b7619adff02c86652efabc327dbe681c1bffa4cf953ebb9997f5533a46dfdbed31af6ca6bad150b65aa96633d1767d79f3de464f61306f76b35d5f468d7b706c57d253188c897b767df0e3f1d7f9f2314760fef44280d5ff60bebe57e442bba5fea4638e9c7efc32467d8ea7afe3d707ab6881532ae5e20203f3f2f23896faeb459f4039ab7f7995a65e726fc787d127ad6dfa2ffa4469ea65f72bedf24039aa47bdbba0f459d2d44bef553af54039a82ffd4d654dbdfc1ea51f3ff5d70934e973a4a997e0973450cee8477d92f448bbbca49f9f8adaa4439bbe7d0d8ca1f66cfe0275d666f769accdd1d3579bab4ebbb6719ac663db38d69bf9cbb379593fbfd999e37d73359bedfaa067f317bd4112b66cd9b2258e305e00abef11f90b00656cb9e3054320628b1db0fadecd5f9c1c3b6401840f4744b106acbe57e42f27604c9186cf0f5a1c2109b0fa5fcc5f506e68410b8660c317b13560f53f1e7f5d2c4b04010848a8e34a1658f56c9ecd5f385a7abca43e599b9d0c6b73fcb9da5ccd5c9bef2f1c2d415ed26db56dd7a73355b7f0f56ceac30a8f1dd1068006903e48876a429b3ea5b44d9f522f31d666914ddfe5325d60cb5f67959697f4ff57ab71b4c00eac0a508efdfa579faeab58dd7949bfea980cd4a7b01d187deaaf2a55532fe9bf0eb24d1fc7ee542bd7e22b209d31ad6cfb537fa99e7ee7afd4d31ffdb57afa2b7fb93cfdf797e9e9b7fc557afa20584315a9fa1279c4f4271d734215a01cd49f5e741594cba3562fba8a8b063ae2e2a242fde97f60a5076d8a148fa89e8a288847528f635724e86189443d8e7521ab98737a1329a250c51cd35311851aba90a75f91a8a7e2911248c506b8b6d525f2349d502a7d9eaa47e913bcf4d54ae39cf4e9f2d23f65d2e77be97f2af99b5cfc4b4fbd3c5d1e28e7e55df4a9f24fa5f4897a185d6b5e3a4cea6174b5d9606074bddd6060b48d79e93030daf678e9fe2fba544ae913f5927a7da61ea5a39c4efa447d8cae312fdddf64d2e7e96374edf1d2fd4b257d9a3e46579997eeeff22efa2c7d8cae332f7d7cd776177781d1a7ea5f74122ffd57fe26add91eeecd7aabb65a335dfb3e858d6f565a9d816f5659f866ed11dfacb1a7b0d19bf4b6dd45532f2f8591fc715c4552588aa4301449612792c24c248595480ab324dd23e92229d99123b9223fb25564dbef3249bd34e9d0b656b6a90f2b2e3bd68e5e00d219d39be1a70f62b2c23a3ad2157deadaf43befc75fa7ce16296c6046133119a401abe257d6441c3d680942085e1ce18291fb0461055009664060838c2a4ea80294835ffc51a7cf1d1f35b650e2a6c514273003967515ac818ee0cf2f667d8e8f75cc0c302549c4622830c22c16839df48a182d168bcd904418b09398737a2aa250c59cf1a988421573c4a7220a55cc193d1551a8628e3f1551c8b95f49efc75ff75edab62ff3978f14cbb6fd0bd66e1ccdc75fe34c166586b271b51e7fbd580b639c6c566db41577e36c3cfe1af5797a952b75ab7939bea9f69440dae664a218abb730eca1e5d1db5a57bb3cde63db62e76e5ecc5f277d9e327f52e9132705f33218b31ee659267d5659c946b3b1d9e67a6e368f8bedae969d763bdb7902e5c47ceed9f65d78e88e36ca7ee6a2b41b96d12786d1e709f358579a9796a5cf3a53a91e06c7b0ede555ff627b702dcfec2dcbb898d7f2adb39d563ffeca459f49bcec8971f95377a3b512172da8638c1e94c022891e7aabc5663d3219adce6c30fac43195eab3b6332fed8b3eadcc647ad5bde15aea4d9ff218a665d9cd6db927df46d4878f5ae9b3d6ba9bcbe9475ba5ed00314517b5327ed2480208c76cb67aa3c57a7a66565653e9f3de4ca6cfda655eda943ebdc764c334d29762278867b927147ff4287d5a5ab67969ffa4c31cdbf64d3b33021a29f8410547b08176ab71375bcddeb8584ce63d34933eaf8d44fa5cd2e78d916e0dcfbce47e24ead3675ee6988865dbbee93ac4e1851b5604410c37c2b0d162359bed7b33dffce6bd997b62dd9b7846d2e7ad7979d66005c67d3e457d5e1a96dd9e4f0a28c0b0e9c00a2d70c0280cbf796bd4e66f763db5d6dd2cedd39e4fb6f9ccd35e4f8ee537afacd31e0f96654e5fda9d5121021669547146ed0557c0280c6b2f7669194802e6c578b2f67a9e8a39597b3e5edabfa41551782ae65cedc94414fc3149619e4cccc00f30d7de8f97f671ec102246d7a6349e9917f357d78de36af5bbbef9dbf4622feaa5d9daf5cdd636bd9837dbd48715d64eb5255c01d219f3d2b67d7ac7ee7a3fe22e365ed77eaf3d9dcef5b6ba94e692eddae3206863f516badbfe8e680da7ceaaccf6d8d86ddb777d5a1bc93efd167d5db97285a708ec3e4f0b76ff0acf0a769fa783ddbf72254b07ab8154148bad60357075c462b0fb57b2b46035f81d31d8fd2c45603709b58d95566756667b3c666f21a55eda2769aef4a06ddb1fe913bcb44fc777511aadd55aad8deccccabcc763df7bff55dbb61fea338a9798f49c3e5b25edb651571ab5c56a4f95d559a5599aa58132eff152fcced6b6fd4f9fd5e6a5173e8e6dfb9c3e9fa4fd36d276566bf516b33d566667b399c87da66dfb9d3eade7fdd7bdd7b3ed637daebcac1fea1bf3d23ea8ddd2ac6d5b8f798fccff6aaf7969bdf6e5f73f8172f0674f9fa397f53b7d7bbcb4cf69a7cd68b5d99ad3ce1328e7fe79f59d7969df9f7a6976dbbcb36d3febb3f3b23ed657e6a57dd36b30312ba868c1165b7200846d0b1dd63842108078c1183cf05b10a4d8c1ad0b15a0c0881ac4a81a3e4d805102276ed046113d3cc2d8b2858d1bbad8b2054661f7cd2bdbf687fc3052d80e145b6ab065cb963bc250024661575bd9d132c7962d5d6c29c2163b60aea997f5cd3bbbb44d7d5821ed54abba02bcb76d1fbc24cda5f09274832015f33bd961d2ac1bbf2fc012c19ec9ae23c30e93748314b42115f13b999f92d8a4b46d9f892562164981c88925225607e048809a40b7fdbbb2adfa28dbaa1db02f0ae3e12962004bc447d4b82d7e1ccb910da01beb95db4fc18a3aa81933b665f50bc0b6ecbb6ccbbef9db7e152d0f23fe4cc474a540c30b3821879ae1b2445cb76ccb3ed536b665df7eeb86e7001b3082a0dbef48ba1d5044029688b8ed1bc0be2a8ca86589d4b76fc3915dd86dee4523f5412a76dadcd9dd57722451b6b5baa2918ae395e49e9279fb7b47d6cd912bdbb29f49966dd937572fdccda241eabbe561345ddbfe7dac5145a8d0251d605fefa57dfb2e4b84d26c3063db17802552ebb6b14444036cfbd44bd7b628d5e6d35a1120b53658b1e9d311387a3a63d2daf60741da42f8e39be1d7ef48b3eeee410b7a383262791851b6c5f99b2e5711fba2b5582c1683f9b37850b0bdbe1ee6ef00095013ea767fc7ef0fded08a46b84d693c4554d148fe2bd25c1a3f2b1ae91ef4108bab4d693c3d1b655bdc5fb2ee2ae60fa909e20b75cbbe6f447c709c80fdef7b90a4bb02f6c7c7b11f69d63d6af37bef4107c9ba476dd63d3ee9410f3d727c2a36c0e23888c391b4ff91f63d327cb08a0d00a93881d28fdaecf6f8557c41862b34cc10db523c4f53dbf2fe85293bdbf46608e8b063cb9e426b3f28b8619beef6b4398223497789042948c32c3280f49c8b0cf85c8c40499b326cd28f0f52b1019e36ebf67efc4e64c0b7290d627a3f7a1cf748baab6864d42d8c7efc2a3260f4a37ee1dca6efd153f101dd26e916beb73f22cdefebe338152360ff03c9ba411b8e8c88fa85ba65838f6343d27b1cc7b12049f747d2ed91747799c4e425431a84d2daa63e76c69aaf00ebd3994ac246a41ad61d52136c3b867064c50adc586cd7afe203c6d8aeb1bdc72380349746dbbab685c2520748ad1723a5616963d36d8edb862b4bc46c6dfbf66d2c916f5b2c666cfb284bc4be2acc6455e008236810ba716c6889d0b74f676c4d02a4258cf4eb530fdc9476c58a2b4bd461ff2d91962562ded112f19fb144beed35d4b67f688938916fffcbc2cc709bddf6f7bf96c88ceb165c53e88c3952db323b5bdaa70f52048cfe75db2a464aa3a18e4d69345cd92669db0fc0a6b4196adb8a466608daf6a925c2bdfddb815634c2b993747364dd6015fd4127a9d4178c5cdbbaff00d10146a86d99e1ae589b3b1b77ce91e6dde67d2abef353d1087e1c0b82546c40d6e6ddf9bbe748f337f74e9aa6693a9328a60c9b7b6a5bdce37847be706e7f8e3459fb3e58c34cd2ed24dd54acc0dd8ec9177cfb5f92da56d5d7b62a579d0790da52685bd4b6ccd5ae8f37a5cd30db28dbaa4f5997b2406aadbb7bb58f63dddaafd65a7febb57eb7ab8e8940fdfbd5b559b7f55a85406a89545a4112b5442811fb17ac301538a2081a846eb052d1d252058c58c2b6e8f6fbfef55d345235ada50a18d1846dd16ddf496a5bfea08795acdb8af6a97835b52d1c4b4523d7b6fc716c1525b0b3ed53d1c84ead9508209d317ffb8354c80852048cd4b6cc71fbd7a7a291fa5564800cb1586c865d1fb421b544ead3bf9688ed6ccb1fc75632b42dff21a389dafef6ef9bddf607519608fd952552b73fcb12a9ef0fd6706589d0ed4fc54bc6d0634fd9e9b6fd6e5b1d1301fbf7ed5f4da5eeaaaff880fa569bf6e98cdb5ab500a9ad8d9436836c9bdda63f5a229416f3d9f43b4b84d266f0d9f4434ba46efad4be28cc446dfa7486ea167e531f3bb5e28074d31973dcf6c1f7a70f33c488b1be196e5b6b252d6dc79045d0869d2562d64d9f5213ea9bfed4b6e8834e0260f46f008e056d58c9bbc3db7e81db3198c470144326811e56d2b7484d905263fb8504ec18f2ae6f3fa42648a9b61d43b8ebdb1f5113a4d4d87e2101bbbe7d2a56e0c662bb3e8eade203c6d8ae1f5a2274dba7e2036a6cd7c7b13816c7e2583a63750be3a63e766cb565807477968869df9f3ecc102346fbf54d7f6a5bf441273bdba2ef1aedfbd3a76205ecb7e0bab32dfad7b6e8e3d89d5a17008294962a60c412b64537b52dfa5434726d8b3e8ea52cd0f230d6a7b4586cd3a723902660ac4f9f7a4368b033a0438c6f880f43b40ce961c80d437218a2c390120cd961880d436a188283eb0a97908b0b17cd45035716ae1cb8b670d5c045854b0b57172e2f5c60b86aae1db8be7045e10ac3c5039714ae1bb8c4700db9a6702de1027261e142c3f502d7cc85c515844b05ae14b850e02a816b07d7095c3db87c70f9b8707099c0f5830b08970eae1b5c39b8b4b86c70f1b8b2b866105286103884dc84b02184c81513b2454891103a84dc21640e2149106287902108a943081a42da10b2869033849821a407428e20c40d216f08b109f9811024083182903884c821a408427c208408429410122424899b396ee0b809e3468c9ba11b1edc7c71d3c5cd153758dcdce0c68a1b1cdcd8e0468b9b1adc547153bbc9e2867603c68dd00d1137413749b81122c81c37430441e3e68d9b276e7a7053c6cd14376804a92348d10d1b376b0439e34676630b6287901a6ea80882841b1a0451e3e60c2134dc4871038590196eb6dc14dd441104084182202476436453049b386c806003874d106c886c846093864d173639b011b2d1c2260b9b296ca8b0a9c226091b256c96b031c2a6081b16d8b8c0660540024336a29b2da2d120d5ad970508b6fce55ffdb38e39a18afd7b2df799bbba8ad54047acb5d75e8c73aeb5fae37addea2c15567500c1967dccd11ff3631d7304bfd3ef9c3ef5a7d871ce1c676dcb4b6af5f9579fdf71abd52a8fe3099463df627d7667079463df5d9fd60a57af0d405a1fd4c0c8f9782df2b73cfed627d4592a0c45e455c8bf0e11d1dc2b91fbd81ecb6363feb5e8e63edbebcd4baf45db63db79b66b60b46f65a02d027f047a20e891c230fcc20f0445716487fcf57da0fe3c2d82b6c85fa3d092a6ad09f94b4cfd48c788a5301c994a474a2f7e5852a95461381aa552a3fd0947292de4af914aa79e44ba3c0892aa93f7a71408a65c48af4a7def02a6525f2af5de8974025527d50995fa2fe542aac8934782ab2f912e2a95e7a212dfc55bad56a3d5ea472e2317d548354221c75b9122e942aac8104c912e7f22550f92c85191bf501af5f5ed6d342259227f91546ff3d789f4d92192adf92b95225dfe437d29d409451aa14628148a648bbe93b6352f55a3cfda46234b44b2b7fd7d488242966667f6e7fa88428e15f2d2067959edbb3faef7ad365dfe13189d6660c457d75abf82b5072481a43014c5ef73ed5a83769dedfab3ab6c576d569f5d1fac5586fa5142265f922ffc42511c8d40b0f2f8cbab3c35e62fb0c664f0d7488628fe12a330f157c824491210fb7cdf47123f12e92be9fb407034f2bc22d3078e747dece32fef66a930d3d7072fd129f59e47fa46a447bd8722fde83f92aa8e545fc59c2ae67c4f4514aa98434514aa9893fa9c2be4afd137f248a9affee955ba3e68225dbe44aa1e0cc9948fbf469d7af0c7af8f7b523a2615621e7f852eba8a4af5a9af8f63fe2ab988affafab7287431e96a225dc0d1c5e5c1b1a40247d5e3d830058e297004c731c43edb851449d52d4ac5760531cfae1845864f22c5073f1224f2d7e9f4f52ff8d5bf43fefa42f0ebdf9abf48f5af5058513afcfaa08fbcd3287cf08628327cef44f2d03b7df664c3133d5d222f43724456b1de212febcd40c5daa4b65da9ad7a3fbe7fb5f9cbd3a7f7601d1af9d79abf4ae28fdebf0a559abf4cfaf3461c9ac8efbdb104ded01b716c38563167ac445efa7fa4387290f4c83ae4a5579b97ae81b17baccdda83df6afffb9802f63b6dba702ceb0de4c7bf8111bc41deec7b50c7881f82e0877f65fe22811ae808f8a30fdffffa901e046f0f48024961288adfd7e32f507bd0e78d66e2c8fbd9fed41b9134e8d767fbe8c1f7de47df87e13722f9f7855f288aa311087a97c75fdea848bc6927fab4dbbcf49f40ccb55ddb1d6bd3b53730bacdca6466356124306ad3358c04c64b73b96ddce92c0b6c802d7f5501b2408555b1ffe92a59ffd35f81bf5a8d16a8b00775952f7bba4ac7e9ace9099473ffeffbaf3abd1ab1e6f4e825a560c0f0d7fe3e58c50cd0ae1bc79cf56a2566e03e7e2ae65c8d53f0b72f1e71ddd256be7ab5088f8c47c6fb191871fe0d8cdd730e76da746d4e9bae6d7ab6cfb381b28fd681b28d3db292f88f8cdc1f19f36b60345dbbbe06c6098c668e6dfc1b184dd706467faaf1d38791c0687658d69939c78ac09bf79f8e111f282724f2d72804ca097fc4b65057f9f4e8f1e3a1f1bfaff68ddf381a89a2e7d5fcf569b0c803c39b188244231ddaf6a871cd4bdc69130f61a1f0bf07c370e485a317cfd17b1e9679236f248a61f87d58c85f2016a2f9eba305f92b0c9af94bd4338d7f70960a03359679891fbf06464e9bb56767fa26966199e9b68ddf750446f3d2307ef006f92b7cd0f33cd11b477114bf2f0c41174f7f3ad4a3bf41fe02b5ea479da5c25c1e3f7879fc057ef824d3833a06fc31f41e2c8dba4a18be37e230f4bc9c92a7c7074793f6f093fea4b35458e9f1832e64ea51e4c914e42f95e9bf57cdfcf5e9f37bd303e5a47e747ffc354ae92aa72bf3172a25fee9f15f1f7f89fa147f94ba3dfe72493d7ed0c54f25a61ebca10b997a948f401b7e2a136843d5f73856a5d29fa5c28236fe1499a5c2502fa24e3e26d9c6fffdecd19d6dfc60891cfd488a0f7ae477b29eef6afea2b020a119ed27a89bfd0cd988fc8630298c94c75f24fd3df8a4c77f63fefa748cf89f87df8bfce58d741551039d50e5ff7bfc7ef3d7383ae27df8e2e377227f85fa0cdf1be1779bbf4a1a3f884390148e1ecc61891c7df838760471089270ac07de10247de0052dc9fb2c157679bcc43f22b354d8e8c391769b48e425feb4dfbcc4e0a7bdc84bec31d363a6c7aa6b6b00d71e93da4c570646ec177f06468c1f460223d6b593dd861031bacc4adbd4a4b64e5669618cb33eea005bfef2db81de9d203ed8011dc9cfbdf8f4bbd36717fad4e5a9cbe904822d7f65925ba7796423d564b1283da5dae87118ab891fa3f5541b8ad69d5c4a3353edc1a3114703c7f766310eccdd459d3cdea54776238198bb71b7c7cb6a5c6c66abc96cd8668bf5d06eb2dc53a3713db836b3f5e4d88d268bd572ec8667a38d0676b3da67b379dfd33ded86b3be3331745b8d36a39ac2bcda192190ce981edbf56128686bfeaa82bfe84674af766ddaa15d412b6485bcac4fa30505cdfcc5e97376bfcafff88bb33f5ed6bfb7be95f9abcad556e665ad38cc76d5438c181def588bdd00e98c79aa99269e13464abba1b64d1351104dc85f5fcd5fde90bf38db779d07ea2adcc769a0231c077ef719931ec971647e8fecfe23c1a7e211cf1f98f1eaafae3f5edafae3e3c3c32343a6454c28510a5edaae5bd52007d022b8488b5badbc0a79aa212b64856c10b641f6e7c7c74b9b6dad4595a812d53ae43cdbfee5f1a2eb454e848986bcb4589f1ee43ffec3b90fe73e3cae1087bf4f9f18ff601f2f2dd1b6df75fabc43df1dea3cf364a23cd4651f4f68db1f3b9fcce3a51ddaf67958ece33c3e5485bcb4d6a7a34374a8a3442b5ad4aa45aa0f155ae9b306a954efda12796989b61d3a9d6c91e5397dcae7f2b8900709e1a05b74898a887e7cbc44fdeccec74b2bf40dd59f20eb23647f866c1091152ab2433cb6e8747ad7f7c74b7b7faecfe906097969496f1a12c23cb788e3290adaf6072c958276f7e3a51d02892c912df2211e27f2f1a29fcb13747d5c2888447ad798c84b8b89864818f3703ef8c52c1474857617c411715cd1fdb941d84708ff0ce120222c748bf0100f2ecaf95d733f5e5aeec727076da1db0d755c11cfb66f62225c94877832914f2efae17882389f2c94f5c9059dae3b22a26df5d9f17445dd10f7c305f908fd0c0511097145bb1be2f1aea8eb8ab67d138fbfeedb37f5f80bbf7d938fbf4a6fdf24f317e9ed9b7efc357afba699bffced8325f2f424927b7044e67bdf47265d8503ca313dc974429527e92a230d746434d297fbfc8efd622f9d4ae4e9fdf43896c4f92867124a68dbcffae44e337fb537e4a5f5863c2fc80bf27eb89f6ddff49ecfc867db923e3d9ed14ce967141a853289c4c3f1907e483f2e0e9148fafffbf97c3e9f8f277f3cdb3e89a44fafc81be9d323e2b871885454b4ed73249fec330a1a05b948341a7d451f1126daf647237d7e43f91bdaf6394e9f9fd0c53cdb7e26fdfc7023212fda9613daf6394e9f6050d0b6599f60d0b67f5f9fa3a1d1906ac4e373431e991111f6d9f6f328241af17869431eb1c84bfbb3ed9fb448e4a5fd84c4212fad47240a793c1e8f0b793efee3fd388f17e4449e900bcde8b3f4a3f55ffd057969bfa0fdfde852d038d4e34990e72b1a471e7008141a7d484161e843121a11c9c814ed90c8cb910f9d4745de90ff100d7945413cd7e7f3b9a4a2efe70e95827af478ac411f2fadcfb64fea13e4e951121a8958cf03240287c6a2d1270c0ac71f9210171323f28445a3d71c6968db37bfa01bf40961a26f080b7d44f8e72bc23c200f26ca3df45912627dd6609197162c3a41222f2dab3416bd8442619097638967fc59ad7cb6c8e325694826e64963900f16fa118b82868472d050f60189f258c4b1f4591af2f284794e87435eda7028148221da96c74b3bbef823fa7839069960511ee251bd39e2f149bd3922fa41bd49120a3abd39fe6c1b0a99de2cf1904a44242d068941fb459f251f2fedaf74a948fc0987b6e54a4444aa32908043091e6e88c21cf98445291d531f15c7145aeee8e10d1991392ae241e998fa3b2cc872051c58c82193156192867c4e3aa63ead5941430e40b8e2461d4b9863d0b6a537c59f6d4d3aa67e09730869c1040a7ad8220cb3e4b36da954240691b4290836d2315553da0db2bda3254b1c53083111060e37304b45dbbe489a784c3d261fd224234d3fa46946dbf6b3d0b68f6bdbfe1ddaf6dd643bf96cfb3923a5e570dba66b9b269e6d4d3ca7daa63eace89d6a2b200390da2f464adb61895d770c79df0749f6e98c8965fbbe253930a230d2fbf6c17bf35795ecd3c3530528877bfc18c7f6ed74154edf9b97b76af316ed0b5ea24be4e57d9b6d68a8567b215d25eb2be46506f0ad82f5a57979afd5f73eccbd7a8811a395ed07c11a5af23e0646faa6959d80df92172685d1b432d1c80b75cb96820285615d030a5762315816a01712b0ef5798bf8b15a055983bfb7e158ddc4bda5a1f66881023b56dba4db77d5fdff5e6bfb9dad51c7735bb22f52fcd5f9fbe377f5198a771b404b53a8da365f69cc6d1f2b3ca1a478b6cc4daec8ad02c49695ba806bb342ccb3bd77e3ce4d03393849ae03f3454ab090965f0bb4f1f2491e383a4f7e047760fda30e7bf5857f134d009558072f0835857f91e28070475954f031df9beec811e72647ef086f7862472fc0b92a07bdded1ec76af076fa1c797cb638aec724d2c7a307df3237cb1704635ea6ca6a4f7d509fd5ab9f3ea3785ea6799e3e3959be9f8dd9af7afaac36aee37a7abc9b7723799e3eadadfb132827dbac4faecbdf719c3e9d96f3aa9b79695ff7d04e26a141ea6decf999abbbdce51113f3572606bbfc697bf24cc6c5bcc6fdcb8aa551588735522003991b36b0c128ecda625dac4726ebb81817171817acf25896b92ddfc4a7d59a2d110902a88d346aa005bd8163b6da2dd6d3d3712ea793ea8469d81492c2b0e753259416614ee0b0c50624e4c012c4ad46b371b158c79dc6d13486f849a3980a0c1960b1c42c0c2220c146eb6635afe3462c030c8fc4708a194f38f1c411a068220918855d50b73ad9a79fa3adb26df4b272baf3b26257510e6ef004172ec8820846619716dbd48715991d6b5b41209da1b66d521b0446d363a66bfbcc631ef398c728edcd22dd9be39babce632dfb10184d2bb3325babdf6afdafc6b1dbf5eb9b45683421215aab0dd9afb7b75f69ada1afad84c437294d7cb3c89bddb8fa56f821087edfa8f45546de537f95f4a9ab9046a3ee5dfeaa32d22e2db42d6a57a8a9d0b645b6ed361df76affa666cb6d9bfab0727742eba101527f751c6974edd30f1443ec4f1f14c9f143327fdf7b7eac4ffc59c7849eae3286de8b9eae126aa023e183fa043ffcb283d841f071ace8a1488e1f66ecd9f567a930ef23b35498f8a018fe18829fc1eff10792c8fc231277dd5bfc579ff7b18ec98f1f2867fcd1a8abe4f1f303e58c9e34d255460d7464fcb1cb8f391205da3de8dce35812993f3f8e1d8136c48f632968437badbec2930098fd2c15d6f2b28aa48b2ce2657d90c4f1b2fe473ac0cbfa4e7a640a2447738747ff4b5ee14900cc75960ab3fabdac6f8554bf3740fa74c6fca8bfbcae1bc7d5ea8f8ce1bbfc357afa4570fcf5f2f41de02f98a77f420afe223dfd9cf1851c1f86443da8227346d38b1d19ede78ca637dbc058a4a38d42abdadbeccc8b516d761dd6e638ae56aecd7f5a474f2255fa3ca94e0fa3cfd309551e46575169a0232a951e8d8ffad2931ebca1890471687a1cfb428a2880387c21c71f1fc7c290e055811e92488f632b4c094faa257da2468d3acb4a715c7ffa97177d527daa7e7cc9d9b85b7d555747faec60803ca93e4c41a064ccded97453b1d5fa5fad4423fe966c323aa56fd61e4b84d2af94921edb55889a406b92ba6518e9d7a200edc5a0c891de8b64f720e7799ec879df5dcf7b1c2b769ce7e1bfd6d327e92f8e9796bab8ce4f77af23dd5bbb58ecd3a7ebd3b998971cd8e9b324eb89bdc891381f81e088e4b791f8d44b509f28fd8ddcb338ea539fa03e673d9f3ecf1ae7facc35d4f82e5bbaa1ed89e5db8763e0c8b9cd947a2f4ae762adea5eef49e913f58132a09cf1b99b098c89a2b58ef1bbbdb7268aa03db1ecda3a6cbbc5bcc7effdaefb2c15c6dd1ab669ebd6ad5bb79e3dbfe34e5f9aed76633d32dcd3b9c53d9c2dcf70eec139866ff63bddb27785aba530afaa9d6a1f0e90ce78f4567feaac06555a152aaab71b1191cd56654857b119b0553c5d6b59637db5ebaa6bc7651c85a3b74c6f98de2ebd551debb88ccd96475258158d9c500474f9eb043fe688f7616bf41d09fffbbef0ed77360c45713472b9aa4fabe5650f69f4cf23c6ceb73f9e32d8efa274f4e6da74d91967c39f19d35a6b2dfe9823fed9fe77f647eeb38e3992ffdaefaecd37735cd7b9638cf5d93af1a77082d7ad560ee0c61127bfd54039fe2e4a82b13e096cd5e22d403a63e2d8b62fb45d36a50131db20b55c8c9406846ccb6c4a0322b6c15b22290cf4a7c1309a57666d3d2ef31f9f79909d711977d77e087e1e6763ad6d67a09e7976c6d9999d05319a3666632b731cd9986863a18d5980c28e18adadd5fad538444df084e084c8426021ee480cc1ef6bcdecc6d5d75a9191363b519b63087eba1a31d657bda7ef739f1ffffd2af3974a47f1d27e6aec50abf1f42b53eb2991155a5cd979c790b7b9233ec069d866ddf73bb20601c60f436c1087f46bb2b15b8dbff2dbb65f7423b2dda16d1fcc21ad300a7321f30e5d22ecdc094ef35288d1a444db32f1976db5fe572ba218accdcb4ef3aa314961358891d27c10bad5f3835c158d9ce0b4ea341f8ab6696dd6e62f6f99ad377f65ae4673dca6b5d1422663fdeeab68047f4736b158a340613514ed187cdf9a2572b5bda4c7f61da226f80b47889a9774482684edca842012e276654214e1a060c84b6aeb88c6db0a05459e8298d3400fe95bd1c8095588d1ec6e11f685c3030a6c49653c70615b665801c6145c3461c5125314d1040e0f2ab025dde65d62db22feba63b72ab232af6c9b45b6bdadea349abf3ab0e5075bb66cd992841830fb2ee42f52125bb6180107486cd902b3ef357fed30c1051049d840c61947e00166df87fcb5230321d60842420737f0f00398a5b9420e3a64a0830f4bb001b3628c05437821842d69e400665f86f187da766dba3626d9dfa13219eb5b4a93504ae911ae5c71bdd5abada50fc7ffbad1e7fb1589d13e9371b4318c16f49e0353f0d799fa9823a7579d70fafa0e58e1b8bc4ac71c513daa084af5f55da8af2ad45731a78a395444a18a39aba7220a55cc792aa260faf34cbde95dfe427d7d9ad2e7cbea57429d4b4a9f6f8e2a7d9ef499d29496466d8ebb92b4b9da75a4cddf55d4f588d16ad3952404a9c761f74168fb2b89cbe5029330892243add496c45f383e14f9c4a80f0ff5e9a13e3ed447462bb763b223208eb80931db94a68226b68961b0edbf36a50551c70649f4e9cc15ba352226e6a198c712b18f73b0445ac8ef9608a50921b4ed5f2e70cc1289b96030c0d502069d5a118b6d4e4b7981de62b14dc5b4bd77a7126eefbba76205a274a4941712b02d0d429f4ade1d69da4d9f23a5744f256f249b7ba1c7e6be235f48c07ea16ed9dc53d2ac12d8d99ca6d4866a333ff6cf9a3e8ec5e4adc3b6ec5f12c7f015dbaa6234f115c22ab044cc5b07e6e929c212f1b1447edbc73fd404df96164410b689ebb0af0ab38faf582294ee7bf31791bfc65548e2b1f96b1c8d5ae2f781d6d4e3473e22cfb60f9e406b42bd784a7d499f26d3bf3ca84f17107c988f79d6cb3c8fb77f85fc85fa1ea59978694f620db23ea61334bd4ea10749490790f587b43ca4255f4815992257ad2254880ed5a13a647f7c421946ad957622175d8528114ff5a93f35a80a59212fade9c77d4895287ced4536a80ed5221eeb637f6c5050104ab443a5f1a42f8fff58214b649dc77d7e7ca844d257bb5050472b911d72a113d45fa8efcfd0b644db7ad1b63cdbfa6cfbb32df8691a84679d752901489fce50d2f2309add6889984f5d0fb3ad0fb36dad85b10256198cb5c660ac8f77a51901ab69b7e9bb3e7871ddd4b62988432a1aa1348879cdbbab19bbbef5edef76fb5f91d22066ddaecd5a49ba6fa595de57e7a525da66b72d131ac43e8ead3a8c74d3ed12226457f1e666573148905d451b9b5d45204076154b286157b12c77155bad5dc59a9a5dc51f3f761569687615676676157df8d855d47a5791247715ff77157bf4d855e4c163575146665791c5da558c89d9558481d9557c79d9555cad76155d5c761555aa5dc5546a571185da553c9d76154da65dc5526957711c771549a45dc5d1685751147715c3705711047715bf6f57d1f37615bb6e5791e3761573de55c47857f1de5d45f75d456b77152b0d52ff2660fb5ff2054adbae694e424db09b7e1519406daeedbab32d4e8a1e8a7878fc558b3aa76d7f2aa21119a807d120458c9d6dd5f78f42c512b9ef2fc36989584b84d2b65feb03cfa6b41e88806c4a4bc1cfae75d89725826fdbdfb457b63f88c95c43820b3576151d678b3a6c4971b8b8625b74dbaf44feba0cb01b4b317a169bee5ae42f1c2e78b8e8e9f6c55877b665df69770756a4948a0da896542476610a88b6fd2b52132c91d4a6b4147cb1fd6efa3f00af6d511c4b7b80d4b6fc7502e5dc3b7a23be1ee7d9ef1dbbce557b72acde4207c5cfda48f78a62085e930f7852e063773052da09ccd84036a59d2006db92e88c596bdb1f7477d7e6cece5f8d18fd7e355daefbe6df375b99d6cffb90a47488991f7c26e3479aabdf555fd2ec40d2dcd92e26fe1abbd5f8abd6bb5adb5d2e7fd918ccbfc8b8fa6dba5adb7455996df97b11b6f4f7ca858dcdcc0c8b85da6ea2b6152d4061d50788d1a444db9f89bfc6f78fe22fd2fbbbf8fe95c75fe1fbd71e7fa5e0a5d73785802349228b78e93f2271bcf417490778e91f922778e95fc9177ad01f8875d7f748b3dbde83a4f93df820cc1023c68f8a11c0bbb6f0e9980774fb7eb7ef5fd3459af9f18f248591480a1b911426921416921496c916ae8e7980906d5fc8f61785b9fbd0f65da909e0dfbb531f24290d52edb6579b76dfefbe92a6955deb06cd2956f6fdfcdc536ac2f7e0536a02a541406ddec7effd47521ac4d3667dfc387eb9fc9534771850777e1c7b5bc83a86fa00bbedbdb6ee5af32ca803d7b3abf51cda13aa8419eb2a57031db98f1f1cff9a4c230886a1b5ee6e4ff733ccd8f5296acbc5807246a0f89ce7d5fb7d6e2bf9e902e5e41238ba4635acf6a4bfbf3ea3599b47d33b0eaaca4861a964ebfefbf2ece61e52cdb3e77d134ad7d9a88e4aa348c3b5977ce6da4a9f30be8bd2ac2cf5670ce313df3c31f69dfeb4a14adf4571e1feb4551ab5c56a4f95d5594af7384a9f27cebb699c8172489f6f1f9e403961386a3bab351bb33db23b9b79faf49ad87dfabcb1fc279671dca8566b2f7e5bc57b7bfc397d5ee149008cfb2c1596417d6b1adbb4d3bc9cd16ab3357b9e355481e1b7faba3eb3d49acd6f31fbe695597c671c17bbe55a96d9ea3dd946c3b3dc9363f7866b9836b32fe3740bc7b2fe1bd62b2f6975cbf5ac76aaed51f4fec242fa7fca955ef5f983d8c7f2f2a3bff1c7a2a5feea853cf51796177d9ade611e4b8f07b18cfa1cfdb1b8fccb6351e953f524d2bf949e44beea4f953e4b33fff2a70a8bebb3eb9e3b3bada5fed93d8f2fbd88c5da07f5733ebee62df72f7fda7fc13feaf3fbf1cf97071fcb7d187da2506fd2a73f09fe499adeff043fe64fe3f8a13e31d6a7cc7f3ffa8f7f863fea136b2df54ffce5d3fc393e8d3e51288e7b1efa44f1f814977a9a3fb9a7d1270fcf79fce9cd682dad933e4f9f4a7dcc2995d2efe3fb9e87ccf7819f47a65e54251f39eb7d2aefc014269138b4dd4b89643b921b7dfcb8148843d58baa234925fc799e8323972a85a3ca0b5f4a9cedec472271ca71eac5bb9a1246d09248f0819468be9a9ad30be85e59fe69bf2c3d954a7f6becbe159650c29fdf975002c971a4d75f86df97b8d5fa93fc564dab23a5c6d75fc24be94b78207faa1e4859fe097e49533e903f3d5c530392afbf8553dfb235353525fcc97d09faaca929f903a1a191f9337c19eff5973c5ec6870ac8977fbe7cd96afd781a7db6de07cd977f7eefe3cf51cffce9645f5e7f8d8cccfbe0c1e3635ec6c7cbfc597a99ee6bdee64fd2db5417eb81fc497a2075e67d00799b3f55efe3cfeecb168ba59f553eeb4ff259f54ff0594f1313f33e78e853469f32efe363787ccc9fe1c7d43ff1d37cebcff15bf547cd9fdcd7e8f347cd6b7dfe781e3cbef5a7bffed37b1b7d9650c2cfe833469f317f3a3d4b9f30301fa34fd69f4e1ff367ea63f40913f3307f861a8796f5671e888fd0f432302ff361f8facfefb53e4d3e5eff09ea28b4ac6f7a207f7e5a065ad607a2cf12b4965a824fa3cf0ff520cd837f7a3a05509f1ff82cefc33f497d022debb3fe4c6907d0b226f53ff4a9f5a99f86fc197dfaf8d7faa443b83207175b8428020f3c30d20b1b50d04512880004162f6058c8c779d11d2d5fbf4a535ad6efc143e6e559fa8c5949c1041bb5a12392d08114b0979d206820c3043618638e2122602f7f96f48aae34f552c849d22355fde99a092debabf499d25a2a0c0be94f5a8b0b86c5dfa4cfd2e849fadc3102093b9030a2480e37e080392de3c6440b4c1044910de68061f127fd39ea22b4ac3727a75db4ac2f9e5627a127a8b5b460580cf0c4146fc0408e2f6e4ac03cade561587a547104276a40469624b001c3d2e9163d839c583f2debdf1db752da205bc0da63c5a69466821c36d554eca601002d1163fdae04da148c5d89071b556bcd6e5a05115e686a310d62af9376c8b60319db0e89b1edd34b4df0b78fa90934d7424b84ea2b1aa99b564184181b45bf7a6203eaf6a7e4152b5937e861251b40f70b758b6b6a5b644783d8afa41d63a4b41d68db0cb7d75113ea0e53581a84521a84be8f61419aefd6ac11a4600d77beb7a429c3b6df6332ff992501b0d15a6d261999f0240056faaacd2857c6e7a9b092a6da9461738f49efc507f8ee1ec75a920ba909e29bf6ef0746fbe66d80d5a16d8d1ea4fe3ac117c9ba852260bcdf6dd043eaaf2ae7f82e1a011f0447200b54943e69ea25a98ac956fc54ec6aa85b6040a26ec1beddb88214bc2115ab36adecfa9834c78ddf922349fab1a44d4fd266671abfa4ede338193e0886f9dad2436bbf8add8f2485517f5598d5438418efd33d7a178d8cacd800df56bfe01b89f139f1841a2a6cd4224977279e303e26cd6ee31f492a32807bec98cc8fe3a087d412a1e11ddb3e48be50b7fd8f7cc1b77d8f7cc1b76cd952c7b6daacbbd32f547367dbe748938a5ffbaa30ff3093553482ef1bb98f6331d96d1725b0b3afa6e211a05bb66cd9328ab693c203367c7710e377c736dcb1b59a01d20753f09efe093faa367fcda322fe1a915c544401735cad5d5745fccfeb4eefc52ad9ed83bacae8c3ba7ad755f2dbaffef951dd8f1ef5a3bfaa8c1ac8021576d25546549ff84d9a7b54f7232a3f7d17f7a3a74f9f3ed891dc7ffa04ad3eeb8ff40994e33fd21c58c514b8777989f18fb43bad5621f0c11fe99004ff23bdef48ee3389ff92fe96ac4fc50c782f821fe9e98ee43425b1ee48b764dda9564ed6a381f52b69c4e6588ca35d986cf3e76861252bdd95a375b24bb31918298c044618b724ddd649b3d22c68bfaf4475a80add6a518ca7c767c3d898cfdcc7749e209a50cd876ccd5a6d7f02a2a6a8148b359799a8648c2933332309004003e31540303830100b08c469a067ba0714000e77984c583a9d0844d2488771100719e6942108110080010099010080009b3061a688f7ccae477709a6681068636d68d8f92a09e84c521ddacaca0997fe3699a64282b311eaa9b0c0ad8683da650987457304e84047807485b1fe41f9cc29b08adbc71ebb8cc6b7d7700670a0ba190d3cbc652a86def7e52fa353ca0eba28a3e99cc50ac4dd89ad1e346ecf491fbd913f70d22bdfc87d36e9f337f2274d7a068e445dc8e4300aa115a8b3ab71ef334e9954f9a3c8274a3ae8780601c9ec007b7c9636ffa391c4c76d5f9054fe47444ec38ac73351b51fe39affa1fb0431ce7a6178715a11dbb01818f306b7441302d5060240504eff7806cb9c63473520a5438b6230fb9012a25dbe8fda99fed535b537bf7e49b7db9d26df06cf71ebc08bdd47e125684fbc0c7b2513ee0f68460041acaa79a33f057aea2044e863cb70b293c3d146dad6e5682fb548befbe42d54c30875601a4ef572e6d564ac41348bb4aae39eedd470cfb7709e0cd7299af35c3a76d9038c4540cb7b58c6c3ffb9fc3a6129402abdd343ca312bd984c81a48ff18c196934b49236d935d76a3eaea56788946798a95f0b4b529110faa9882770a2e7ef3a9834d8424c0ac664d6a9ba94625b1352035df4c5e8a40b7fd52171f19d46cdfe3dd2569b9cecfe8fa9141f6641ae38f65f64ba816688a64a59b841b53e0e6c08b143f764aca82dc5ebfeda06d9a37f774d8e87bcaa28a1b331790e3d249e65575cb07f9a00727b660d51302b0f6fcd966a9ae094299f4438df7adb4eaf72fe2aa800451f4606bf614b1a87d28342de270690411aa6eb9eaf2a5b387195bd1234cd73ab3c84e786b479d366cb88281c9a9dbe2358c53d0a124285c0ad66d4586d319fb6c88fd498d67a15811f54a079c6a464f835509b4db34f9ca81a54d60328bb43e7b06551138c4e39590adebb62220cc20b50b170cc56ca96f8527f09354106e134ab031905410b5a4f492d04b962c18c0bc6ebb727451316a554cb75dfb72c20801cb30237abe6c5ac5fa4c5742581a5857551a0145db7f15e54107ba0408c0a08d27c7ee806c6581441150c4c97fd066f9bd3968d143b07b170b57a170e825a32d29bd00dc466976a6db6e6150005ea83a5e2149ac6667be4202144964eff497c474dbd908ef0a97b42a80aa2c059688d5fb745b847751389ba7a09971a7478108834a8bf7e781de617ad0801c2103c9fa140c892ba93c1fdc65227244675069298609d07ce37d5e24d605bd25624d4b56f845613e8ed0309b2a84a21392425134a6296b01510df8fce662bbf0f70c2b1ced50b7452426ac645434075ca2db9226f350b72de227159a6b8f42c852661344af87672124d138473e2aa0e703d531a411bab4373419d392d7c5b0ab7c00afdb9314fa4b6dbdb35c68eab6adc76c3592d9b7b5ecd649ec03664b6e778190e16716bd6164ecda5b906e2b27f97632b22f806835d7dd384d99a249b7c19656931ac6d07c180a695be9e6e5da64ed61f6dfc7aa663154f7053449b795346aba04fb25f2bd88acf35f2afa8cd0ebf4329ed9ba674999ab3a856fcbde3530410c3ea601c0d8e89924f2916ac939df0993e298d79dbfe50cf23bd81041beb4a97b9796cc0da3e9b03b0beb5704d27ac3e4e6c737ac64e1fc20c63e592a5a71afd48185a0438785b218f8c53128e025d68181c220ba8afd135037eb50fb843141ccc9ad0581c708f77eb9fbe1b5dde1164a4e680c8342fca86866aa05a08ee312423b0995111c026be17ab9bd5333019981f6b4bcd45c7aa5d11ece0760a214fa536160c5565afdc5f993189bec6a7bbda6cdaa22efac03209699d564a63a3c14a94c0b9aeba07ce849b09b9f9cda040053f83a7465d01ad13b5da3221e1033ef1362e2d4e1066d0ebd60593acce509673cfb12ad0188687c32991ec51789cf1d6810256bc872536f803ecf299daadba6cf987893710ff06de5552cc29ff0eb11c1bf9de2000a38f4292248a196437690e7518a4a8a08a1b07ba740f842798b822a0601cdb2f5141da7e53ab31c599f9cd11ca8000f67225f656df2e9e1e8206e0813f2e1a0d4252b7a384a9dc9a8e31baaeede9da5b64053f370b0283b439b29ecbebdc328e608b842c3765d27bcae5ecb2561d0661ae837d82de041a359895e9670b0673d3ea5e3015c340356873413955e7311e1c027a0c079e0cb6c1afb16b54e1f4e7b9d4b08211c3089b179c94274f8f3e7d0d392c24c0374de364b7d440b56491c685319dc7113d46e0a99aed41ad96af7c7ccacdf4144168ac690c246fa015ad58021cff463ff238f558287e6913ca17997658472cf8600e1af8c1740d1552dba088ae47c53a883f4a19d6227c2095084e1286290b1bc14c40b105efa01b87e40f3abd4842561b53629bf7c9f0f83a200d5a4cc00dd8565d63159b57e53be0af5529edc48593a8c12c8e8d615517a6b229d2bca98fb0b0c9f82738e91ff70b292ac58ba524f4035a42e4934291526dd0247b8bfdfd1ed2ee876de241a276302cf30838b6884ad420511e045006d234b1f89441eef351242e59f6f399a13f752d48ec62694729eef0c0381aa9cf7cd32e0ac142823a87048068401106e017602e6d00bfeb10117f4004422b4304b100240dd16e12b2d7c07ad6f382fa8b5c84ec1a3736e6462f92a1af6fde0452c4abc43ffc8d770f71d8168ddbae9e830e2b308043650458cc128a38f3ce1840709ac030fac2343fcec53b698ebe7d669c48a1979a8feec7733f2172a7f668a4c4bbd12de19625d304dc80a8d591898e03bc2ce3186144d6cc91fa8ba6a41397af3ee0915abe478bca8457b8af0f7597b1705d27b6e32cd59ca19070b2f281b1257721a980a22f6dd7a7e8a8cf21d8df6f9630072e4e8f4c7778f6dfa074be2bdf20e08e723bf956052705d450461777aec48a64fb67278a83cc8e8df34788a8621808f557a825416bebc8f67e73d096a61f8ed0522216f561e80d6c00ab0c69c1a53243d3b40d622143ecfa25c9a369166311b747cdfe40165037894cfa5c9478476f7f77322b143e0eeb1341aca2ced50bae2bf55afb04900eb7206530dcd4aadc57b4e963f8e7e94dd650b772c8f80a91b3dc70a9285eda6bd0d4b332cecb3ac285a82d7f4423c6d561923fae8d3ab173e62a9f868bb97c22765c0def550187ede2d031fb2007ef52812e81e133b98490b40e6faecf3107e4d3f5145febebfc368eca7ff69d3606c847c9478251b3af91e2560b63af53c8ec0e15e99b70600e2c240e32cc3f17e67b973c8a63fe87d66287cfcb17db0c4af1a46a3441e8b48298e6aab88d50d890d39232f8ffb94715c03c775b19c079e81d0ac5eaa2327945196efe5783c127090687ee20f934989356f9c902cd3fa3e529a12c04ac1004592a1879170aa6c199d8a265f02856a5e1aafb6a0ce5f6c7df95720430beb0ba5ded96c10247c25779b1046d59077f99d9a0b2980b2382b903fa264563a1a71a3cfa1d5ae618f748d5a12a3c0c98d787238a207905086b0d9a3c6b2132f20bb4d08568952532717870c233a4832523f5102682d4ed243bb7f21d23a41841bb25a649a0f0b91418227686dac98d513a457f030cb0524ae47f4fed9856b2a82463a34922e63b2c4b662db3a0c480d8eb5351f037e227c293fe62d3e17a21491c4e5e0a0e2d5dad723674e45b2b4fefc4eb2ebe5ecfb45f0b8b879d48ced5c2268c183ab06650e0e42a59de536d831cfca582fd78a8f4810bdabbad4d43b0fcb6281794aee42a12108955acc01faea02592b13e28ac081e8ee40448abb1911245d181a0ca340333721ee387f4a28e88b643cec836c0a4513c2bc7d01e9e8137ebda034f65194fd566d2d21247af81a9e632888da60df2ecad1a85221346b2304330575bc29e86b4e4154f51474da59421915f41ba582686a2aa8af4d7054411bb4fda6aa643c3cc97196eaa3258a3607840229333f8d1fc422735541211b5784d6cb0a2a2482968e81b462fb6cd8f8a641ee738ad6326b51601e99182b9043d6fc15cfa6d6e1c09712c8589d137903b0ba6c48528ae1bdee16f8b921429f07b78f01f7c5577566eb9c3a066bdfca84a350af097dc1652e3d9532ebf4d6d0c4e1230a8b1ce3ddbd8c0cca469a4aed2b8257e7df1aefbf51c44c8668c01ada49b3ad6492089169f3ddb4aaf2031f3f8521e97d892b2ecbb1fa9c062239f088409df8548f9f8cfe4be9e1dc0e506fed79ae743f925cd1b2dc08aedaeac9a55eaa0dda4a62ba7d72ca570a7b8a9a075bc90e8b27afa9d77a068f10deb42298de62318bd994100216b6378904b2f596d5cc17c36c3863ec76a737005abf10f566239e2117cc963dd50a6914b26adbd0c5ebb25fa524c78d1f452ea6658732e993d3b026bedee47bb7649c79c15ffdb0d263dd2e2170df1e699393d0a51da0cb42b5e83b68748853a5fe59d63cc1af5c934d31c7ed4670d9b7ada9a9ec581dd712a7ab62b7415b8d534516c681e0f372324a13cad991d75bf2b942b4e60e0ae174c43c8807820647d4d13442a8141415b48c7dbe87376cdcc7943744dac1193598e041bdcde136b82719037ba3534a7cb069f29a30a126f9be05b8d47b4d1e31fed306d9bdaf608010e85a97096bbfeccf4cd429dc3881f538e93b0250bf0b9ae25639b476888c284edb5a62411080a0d7e501bbff3dfe91ebe73ca04c27ffc70a0019b4c4092d5797efe5963c6912f961f6c2ae4050c7c3ef094cc4520f6140b78a1d0e9c15f234d79c3d944dc2ae451ea0c9ea3f0c2dc28bbdf16d1a36bb9aba61b2c9ea6c2f04b3f2b84a13f799d0f35089a76127cf749d0e126bf12f649761749630e7f6660209dcb507ed4c25346d5d3068021088cd8a18b40f932e5b754fb6a183b69dfe2bc7dae35f85c8b47d16cc850c02fc887faa93c8c373da4262b18d848a1cee69ed2a8434f1db96de42953749bac722d14cd4ebc1fc167c91f07b7614dbd67b5b2ac1593bf85ac95d07bf305ff48b6318f6e4057f394eadf590efe41abe79272ff6956dde72fff9e616f0c8696a5daf7ce6567bce345bb9bf6cf356fbc838b5bae73c6a665de3e640949c49a2d9cc353785a77580b9517c31f602355561ff96445750c6bde2786dc4b18f93b78e8db7166171ad82c65b6a4d8bf4393371490ce460358e482f336c82cd74b42790c3d9aa0e5d043da4598c903195335a6444faac11507c51ab6594513549cf883726ba1187054bf489991cb3a7481e28262ebc48e7dddcb3e143e28cb652164bb73fa6fd97722e36a463941c47954b02d93cf381a47b24f26627a62c889aa4c882e0f62559044a3957d6c61ff8e2b344626de66e1e80559421861ec28a31938a4f2a921f74ca0f47be196107cbade337c6decba240c3ec3e79a27823957f46981c442a3a719cd0b62af8542089ea16e1350fd3a45410eab1bc90b9d538352ab3bc73667c8955eeebcc37164b2a4b348698e03eb4748a6253c1aa6bdffef775f324f2dac6db3a928760686f24f973bae2adabde5667af8f7479a5d4964fc49a629f965434bd583ee80eaabeebd8f54618ff14279df4ae4de3ce111cbd4cbd9189ef7c25ffdaae9146cf1648e2c8e348057b4b9670347c522fbdf15bac597ed3083ec9a38cd5407301f4c234ea72fdc57e29aab4745422282cddc4d642b062d032c0b5e8fd7c1aa756c472ea361e1ee4b721a6e294a08b59ef229abc6cd830b44a5ae03e552ee607e85ebf319b7eb6ac28ec9dc7687b7c51f1401cf59b601f47fc53d2c06050e3a31a73aab01623b692e61c484f38d078a565b2bd1886025b93e8704d9dd717794c93781229b23e5e8fb05ad0d4e6296b1cabfba015c970cdc9310486303f88bd98dca91e4c1278f128d039ba252fe9752fa71755ad1041d9b749c7ceb394f83c824cf1c6154b4cedc51eb3c8e525f245d6b8c6c935d9f3ae38a43cfeb5e15f53f907e9d46f2aac8843139472c525ea8d1afae593c9de5370e59eef52f9a37a43d04c96c136bd8f7e19269d012cce39218b95f4c0279abec431fb2fec6a54713bf6ef65f061ac014e5448019c4c169ae67fda7bacdb8bd75753edc4bfe7ec5c65aba8b9ffc46f7fac8e0ff8cbc39e0122c6c7194ecda2b631f4eb05a6c50e1ccbe98415b44aa66079fb46a7b092f37156f62e60560024ec04868126e42edcfd2045742996cd5e0c172c60fcdb92081568fdd22dd1e3a883cad4bb5be735874d06f2cdb095e179187b4df065a2718a4e4e173d065ad783f62f84cb27ff7437dfae3ce89845b558a25c92dd33cda45f3133df6839c711e8d1a87e080b2de73f42589fc5ad81763d7802057d19525044e6281dc664088b995c07934e3c76290333252f0a4ec855b40476f93a6abcee6003134532d4798f517659825273e165f5a33bec4d947726597ecff7160c9a69b8edbb69c868d60f175fce527b6c7a139a2f7470b91c83c72189fe7a7e0ea4eb82cf3cbc08d4547ccad77c36a65e452b41c8127c9b4b00415abed72cb1e0eb844773e2f252b972f1f6a85f165301deafa69e8c86d9c54e429670863d83aaf02e37eff9c36797b9796e547446e0cb9ea1979903113bbdc9b56c357b82c78df36439a8e5a83d76960e9cb7a2680b9f31d261642ceee0c3a5b7c7b3899cc269bbd2ca027d8dbe4c94c845abbfb37ab80a28d1a832c170394b68f5dfe11fe78904c9ba72f840c28dd2a483c3eeb6ccab09e4397516b470e2668cd1e513e04a151eb8005737192f021fd3d960fee78338f10ada19d70e0f6622de1c091fd00730de0f0ed560d564861fdc5367c2dbbd8dcde32857b399336f1d48ecf5e15702a1829a9fb4becdc718503c73600a7cbdc142ec9a0c3e813b278ae20c1387f5e04813c281bb47731c2b81f82e61940be478e5f31ddebe3ef4f5591c1855e208a5b238473d6a60984a9f3f1094cc28bbfd7c438bc8b5552f4a1682f8a2daf823dd9a3ff2d085602c84f635c01fb23b0d6a6b7a619b635617f7742efe5b1fd4c9bea16c765b5e74c96656009a1e62a2cef14a75bcbea5540036ec079d1d819bc6cda4ce37a749775800fad867aab24354fc28566b33c62d2b717944e5b844661657c721fc6860ba04dc59eb25b8c69d115445cbbad11f9b05ccdeb36efe4967ab0b8cc69f6246f1a66d725e5ccd4394f225c2480eba302fac1a87d76b3bf316b1965a146f94e9a682a6d3d7291b350f0eea816b1d7017133f08991de0a0176c007410a04ae87e3897775049b2820b135c9d96e2da74e66370787d1fb3a59eea60dbe0ecd2845656036c81b40943a91568823d35222f1adf04847b01d2edc8fa1c3049ee8273c49e80b3d0d27b6cb5ba78aa9e6b1cef52f044b712c35d75bb36114f0c507271e10031591529da8101623f61d0d1323f7412f3a58d137290c78cbb84a20630b870f6602822ee58e8f42b2f88908490019a79617450b3d913d4a6b98d2a9a1834eed84b1fb520fdfca04bb4b9905bfd5a56b53751df403bf7ebc602af4dcd41f1561bd43e16dd30a13d49909abecfce83b31d3d2487beefe5a27bca9d4100ec80e905274266f9ca7e08e6696d7f27522b8d43498b00e60a031f969826eaef39979afecbb81a578e142845f91a20dae6b58df7f6f57b1539eb08e89e46ea85653beb52ec37194f983dc844ccba14f90d8e2cf568b09dba14d33d8b34eb6db545ba14db1d1c39f4dcb6857b14d12d8a3ceb656e8bbb15911b1729f4dab28df72bf2158a3ce9c56c1b752bea3b1079e8cd668bf728f6fb4624183d6544e45d8afc1a460eba5492bb73d45f91719dab9a6617ea3bf037943d30fa42450f7341e4f837d36c4b89ae763914e1c8480b55b418b40d6cbfb1e2d8dd00fe00a5995a2e4af482b245ed1e90c33b5f7ff084611aa1dc23cefdaca5f93aea406fcf8ed15d3dee4bc8dbbb0099d8fab9ffba200bd3f5ff3cc50b8162df09ec968163d650e0956375c50096a68db2ec6ce15235b165ba076c2bfb145d0c7ca7abf89ea22fbb44d01ae4b5eb4d58d7d8f0e1db921e05218d104166b3dd884bc56dd26629a312d9e1ef4420e9d67b9abeb2cbeea37e6f7cb9e8b2d83a11b79263887a624a73bce9e3641367332bb73dce5a30efcda349cb0a9353af5c693a8809266d0a07be6caa0d86ff385e1670831dbb32d769361b4cc7a5ee2d659ce02e5487311b99dd3f1db70a112188ad3ed9a141676bf4509c3e2b83e21bbfff3fbabb75d6eda8ba5a90c22838266e7a8d9ed59fae5476dd36551a27e426a22a4c83eda2b80f5cd3b8ae27e9ec3fd167741b416e5a2a3c97506899ca4b10bfaf80477386a5b71caebbc0c44a94398773661cca34b1ad8f3480ac7b07001abec97e62ccc7dd3b0bc558f5a444a8a3a1be472340e0eab13283744225a1031d9a17207ee1e181a478088ae860d1863f0305459790853c161a9c6ba07e7e71d7ff8248a92f8478f182a8179081363208027239c3bf18f432b871b17ab05c8ce872267a1f346cdca3d4f83299b86c9116176465a0c2d5096d85b506069d5b77410e754d682bb87ede0c911006c362ab265f83a504a126b8460f10853f908db65b84f02128cee739235ad5a21fb519bf39b7ebebe96f037572c99a03115fe75e60ad17b46527af3474da4eb0a92cbbb746330d4fb28bf4705979faa6aabc0cd7ca2faf03727bc333bdab5d87620c7f18f96754de10e278a4073ae5b227956539590576c5444d752f1c5cd25ae23db2bee2b00f85f8168952e5d9196b5e0332ebe053ff54602f0eb9839e9023b51ca9ec1cb6f9df2f8a6d20504cb2de213ff8a501a560786978810697c5431acba0f6b0205fe016a3a71a38d2ddfeda5065c985577ec734407cffce4971f59a42d44b748862f5500a48471a269c5274fd8ea5b1fd0d2d96a2ea7704d2f6580a523f72b152e70e3df554c130adfc3b85be818eb9df022773830cfcbe0944669db10b6ace902c52739908e0548b26146471e31fa23caac5ee0f3e0fa2884ce09580e1d96cb31e744ad61c167e3bdde8c309973f45aa4800d42bd9e3703d4a625666f0a2c28d72834d313cd75498825145cec1048907370c09f7ff9cca1ac1274317cf885504a767a81dc9451484407042dfb67e52003fffded8a7b30e78efb76d58aa195a164e36dfb01f0a85ee713bbb76e93d0e28aae9574c1467c48ea20f7a9583e34f0ede0ff9ba30a61623b63410e683018977effc470c52ea49a12fabe603c5dacb6211d61c618cce99dcc814e1161a7af5c61aa545a09b7da11e97d6f001d3276154fc8f5aaac02880d3cde35a21efc374ac3f74f7f04968cc473d9ae60632a47b9780475503ad78cf1967f21ec209140cb9f8000b983419e831e2469deb6f29b7771acfd78de638aae5a0299a261a6d30e96bd10ebc0bd12f5183758dfc428efa3e6c54a602c85411f55d116fc30a2796837b706fb90959296fba8c4ac2bbc16d449d649499c4ef633049336dfb85f5853c281e361b38b42922418219640addf7005f17a926ce9c9ef384ed980ef1d7a5459103321591b036d0d5eabe23e44861b36de44a2709847c20d5df23a0b67f4040f4eaec5250712b335d4d5ac8194f1ea831025e96b620d609a9268706284a4e4d0277423a21c353d916d116606a0df54b50b9fee01b6b5409f034519dae2a7f49ae61e874a133ccaa261da12b05d684c5ad8647a2765c594d357fa348566c4b033c72fea620599c596e8211251ef3db3f26f3049155b140a35e544418520bbbadafcd6290b914994f9fdd399ef51cf43a29a930505e4275658e86170b4b2faaf0eab9906f3894b7dd2374c8add70b9917dd5b050b4942a73fee7ffbb91f892a13fad2dc43b2a76d4d6f7627884be223d025f9d79219af4b127416198c767c66c49c2e46aa37218968295a6dcae39e15dcabec6da0555e00626f58a936803ca03a0e3bae8b9757672972aa362a59c1ab5a5ed93c180eddcff9e94b43d20e4558c0ae0fc8eddbe7dd2f55da9e1873ea6811b31e8000e379a54979f3ef223817779f8b848669dc1a5348fc342e2636b1ab54b06560690542c6fb4acf20fce74530816eadbae6835cc57c06ca1c11f2c669620d29238b651d14444ed7d779a88745fd078e29200bcd1a352074da2ff31a97fc75aca63b330ea8621a0cadc5004b16c43d197e336fd0282d31f365cb546320597801d48762e1f369ed23d4ba2076cdae9cecac30441cb8d9079c88f27b1a84594e16241c28243df21a810738045957924cb536df708742f653c1ad2b19242824f2a6be540b62930e19150e38660ab899755568176fc94cf36b25615d368a524b737a2bc5ba70477b589d575878f5e8e2b32b6c49c50b8754b0a3fd81de751f19abe3cdee8e31df4aa3795f4799ce1d7711b8fb5829548fe2bf8aa3f70f99e9a50616d4e679f5d48fc7b90e02064a9f10948815f5d4d47ac84e5db2b76e6a96379032a8c47d95b30d87dd2c2d35296f23a8adf4b6c1b8a81f6fa09283a97b04be4c11871888270115a98ea94a600959892e31b04b1e0af6619b80381bdcb37ac072fd8864c10622fc235795dac427287676026d52307fc99093841cac523dcae11a49ed672492dfc3d2e4b2dc8d0569e8854958ce3c3955056896633582301c5b78beafe353f69cae735fa6c95cf828374eec871c5c5adcf20aa94319adf450fda5718c2c974b43e32375c3f65241197d2f37fa9b8566acb1fc70c38a1ca0cbe5b7a5b5bc74a7050568672476cb592f92f2f1d0008774d0e7973eeb78e5c9c7366899e0663c1ec7b56c8a1c608b971e1a1a5b00034f68e4b088b9737f4df7991b639fc5eed299d613a16bc6893aaa73d84e5476da65e531c6eb1c598e060ece2cae913a08ffc4a9eae2d14115e1ea6c74b5c815551bc3a3c948088acedc1d00c0c1b27dd12e304aca7eaca807f35e60e6e0800f78b184c8291af770e2332ecbfe47dc03e3bfa603333f1b5627b0328254cb9922076adebe492f8b45db24d86da9c1e3c61becb467cd81c9c1a6a43c1aa72e1e47f81f0fd6251e6d62250f7b571c728e79106ded0ec6d99015f7478ed1515ac2d4c263bc523acf132b2590242a91be0837dc4447a41b232320ee01a25f6e4cb03f3d0d841e9302ad9fa2feaae800bb3c8dbb965e3a201f76b1c2916b03c7c2435b069d2c4c3ca002efe8ff42bbbea3c7e8f989b3bf4e6fdcb102802d0043f97f65c49b0b0d96750383d55f0698466f8e73d6704f697d74d5abe10405c0576d39436ff83dcaa85796215f20cb7d7a8bca5d0d7c79932618584dac70aca33bee6acfac53b29d0e1b890927d6d8426159701ae69286eba56ccc0c8315b6f0dfd636472243145e396acfda66aa658b8201c13f9056e4bafb868c3fa3bf8233f4395557b2869c2190cd4f7b3f194dbf920d86616a93506281fac4badf69cc9ca5f52a48d09bbaac2ab1c2d6aa462763acd268796c4a82834afe003ecc4087bcfd63859b43d346eef57ece3050b62bc619ae44bb2296d012bef11e41bb1b5ecc8fe875bbe44a322f11508202048038cdb4918ffeb90844784c4a666528c37d7bdcc7413597ca86ad77b602b7ea29eb598950ac1f82e1622771bf2d55529344b4da787497ef82b5cacd6e34db32ff4d01ccaa561926fa713dda9991458eeb579211c2c1b76ce1fa4126c747a95e998da9dbb160ed064ef2d00fc7588b6ab3e24cdb0e0dd16ca5fc2e5486b9f83fdcf24aec56769c092c55cc960990e3669a6de3451573a31a02656f34b035393f8bfce462c3288edcd56c5ff6d4d942f7e308c4151505d09a897808551031fe6857b335a0ac83d382f7f0fae9219bc8f33a7c9f3083cd6594ed934eb57cb80ea125ed22290061acc5833b250d42f970478d45f73194fcdd33a8f084c070b6081508e71fc7a29a543f32eef70031b5858dc1234d1708114d0ad91f98628499d8e7a88090e4cbc5133a67f1ed04d04520762ad24515002554dcd2b7038d7ba20dc6c8a6886d169e16ed1f2da3ff0dab6390fc62cacb98b2324a290caaea8305114e44ffe298d80c14eca52b6d8ecdbe167c72b318ac597c44818d693adc677da73ccf3da91ce49873bdb606cd669ed3a5c98991a485f690f77ce1949a0ef1b1e76396ba933ca3ce17badcd8b586877cc5f24e2acf9ff34df17dcb78b427db4835428d1e0950e99cf8b0656ba2310b7d43d712531c39f6ce1c9b6e12a8d73d6641f1738e3706099251a25fffb3390eab1d3700b25bd8ba4033b42209f70686b1ef29282cb5f17f148548f2d9718c7afb5be4276550cc5478701e78318fbe8cc794cea5e8530509b518ecb3b5130e73c0ec6b39cac36b594d480b357909cd48c29ca2f1f06663816e6c656764060e542a5166d3c29643568f719e4fc9952799a8ae110aedbea3241b98299bda2e227cedb18c848b10cebf790f5618f5d7bdc0c4b30583e4cc2171201da5ba849d9ec201a1a987f80753670e35ccd3dcda6e74bd40c9bb9a752cda702e6e48fdb08a32ec76de3b38781190bf6231047a0021859992020dd6c3546956fec51a1e311211a0e0cc4165ec9b7969537618c3cad86d4690683b4433ae94842aa179a7f6ae52e9519e8a40e7d0e618b4d20192083c83daebe191a4bbc656abef65c60929bdd75a85193e9d86d9a17d600a4bbe8129951d3884ceae3cbc272752b4cbf6095ad020e676b7cbbe67e677bbfc72c5c6e469b7d1a94a7f323665f85abe060e505a819f4e0a685cdd6d30f4cae8840c01d098c1278a8c3884e057ff723c343fe36cc288971f851185d8a1a695e36f2c1f42738854ad61cacb18f7a9524cd0526706ea1306bc05d8275020c4c934353b342a3ae798d5c53f0951c162a1d97132f6aae7316167e3edb93b66e3424f62f2f20b29192dc5122b65671ce8f4b6950fb40c882e3bd3afd4c5f67e2aeb71cd13fdddf42f4836a64e0bd82ea5fd753b206ff55f6209df3fd0855a6b5fe7859695e693dabe6e2e7332d2175ce186e074a44f3007e4155fcc2e3a2045fa3cae6be20014ede28344806ed845ee15fc78d6a109021f896ef6c2cd06bd056ab258b6043994272c257c44ce65e14ce2c8ae1891a5be8d63ed56a3babe09207a81599321e2ab11a3bc802a47ff1ccf320156c1d81b5b2d5e6b560387d612caf0205be53bc8078073a637f9d79a770a004317396b0c41b96b0b563abd33a90531b9ab4aa408d68c6915b52500eb3310d56f740b21a83a173c440a2c86088989d78292fc859e286855e35b10f12e0ccce21b2864f5b10f1dfb173309b46e87e5bf27bc38e8e96a9447ae2ff27f61fe8e95670b79b2e8bb6b5807e8df930088e47a064cfe3cbf85fc7fdfe2165a8503359231f43e38cb64dac8b84a6db8796a156c7b9135def6592053cdf28638d23c37a0039ba7f5b10ae2581580214bf72e3028bc5b60720fbb1962526ca05aca67eb93ca86694f4ec3d1958c779b8264f6c3a40f3b8013fac5a1539889d62cc048dc580038bf57d3969f5a0cb1b66201d00ab05e390fcc0c8d4a3322ebdc7cb5f3a872717d289423145386712dfd140983332285407c719bb85bbb45205dcd693846c34027b6906d6948373a2173de47d5028ac0a7373abae3651b7613ea0909e822d05613c8a42fc7607d5704433cc7b6e7dbdb74a0530d652eb30df29f298324562f6fd23f725e24ebe707ca9476556a4f69deb339e99929c017942fdf898afb5d8b15f5d8ef62e0be079641040bbf1f40a9b68f6e70c506ea32633bd0bae85885a599fafefe0b4b0e56da5d6af2fe94ba524a49bd881780b3c6de93df5c8d9a3bc90904c7b5733912b664487054fe60e42c244a5e8ed68f559f2c03fa76db34c8fdabd8ba979c46a221ba83d55eaa364812300725469d102466f23dfd2af4d0c42589989628c30209648935cd864c33fc5eeeef7c1464fb946d8868a3d815aecdcc40106e674583614f9c0243310042c54bf335189532c00f253b0c99b25d01ddecd5aa64799bf0d04086f3603bf424d195ef803cea1edaf485c9747292a0aa7a2fe944a4da86910a6caa00595aac1293614f76dea5d078914b3e4954648ba57e4a85ae2054fe209c93c4762c84a7fd030bdbb435428b04814e864e2870872e097f6c40d960c5e40b2541b395d84af130bcd1c4b4abc234414990286b8ccf058ea3b4d93e95a1004a82367eb377bdc3d2441b374a2276d9150a0660a5fa8c251084e8895a43c56052138e4d0f77544aa509f96204f3f681628994f9f811078a3261fd08f5450961fe08e5453109a944e269faca2d4943a7955f8d3dcc7eca3eba7f70bb380c42258802422201f11bffc31709a10448317540a811083f6e811434101eec81140108e350d57faab265c9d381dfd45b14b6c6a36882188a9ed2e0d49b14e4efd4c5201d49cf90d558e2731086cedc830721d5484f0f490805a63768eafac0c16a93b649b0314380604621daa3ea503152930af90a755c48a0511127134e1c19223483458c6a46744806a1fed5b5bee4d8f890b1bcf2ab2d626d5bddb6057a345e3a52cf522dde97840f57d9b602e71241d016c2c200ee13d9c31de532e891fb14a15f4883e17bb78faa22a554f12214bb4b158ee124ce6d45bee77336cab58856b29fdbb917a1538b91eee7751a51e44ecaf924543a9b91216e1ef199af46eebc0b5c262cfec2c7469234539d56a47b4d57dc9ed844764d58c485fe007692a0306902564f603c80270e37d61c627e0f14d8ae7f056901534f230e0b98a606429401c31fd3088fdcb4226f83f81d9169b03eb71554f6d155722cdf99c073ef6c64b8930d9ca9e1661d0d811b5aba828b3e1da299f75e8c14a66995cc70f92c3f1aaecec5687a01f48e67154c2fec7e3cfb58b0e0cde07919a3c7da3aa1050dca468ff0bc716a220f71d4fb29f812d1b0d2b0658e9ebef2915faecb011d2f7a9613602397841de39d1d6f43f9c5181bb051894582224d4c23ec5531e1a034b80a89e4834db3088f84f8443adbb45750eee2ab9da477d6b45b68e59158dab94e6ec835ab3ff12309e7878bb2f2c3039daf23d1ec21f7262e7920126860879b07333b3a31c1a433c5a94acd36b2b8c590ab8b7e4c05823a6ac66ede41961d2850e8de50e8283e8de48d1a41d48ca402905ba2c4752826cd01c8a09c5e00166d424272b27fc1baf4604286890224c569f91b3c6521b350295479dc0a78b078ac2cb24028aef05cc4a3a160c2d634747a2979762b1e8750f655ad64b52ad61e24ca29faa9a313cdbdeb88562c2f9e8890baa4a12f7fa78846a015a188491e2842eb532970a55a8d821731765e7712c836ef9f10b8fc965a400fbaf67f9d6d0abddc177f957a5558278705b89bc0db1c9ac06661432bc8c1b90ece799d9ec2d587b608c6873bf23ea2910ee4206c4ec121577d85f313952eddb9556b1ea83b99d9525b39f5205d7b4bbb2dbcf6e1d2daf6b5cc2405a2b53f5d53529a6bd23dff75954974fca1dfc1b3bceef2f5be7a2317a2ba4d915853ffd38694d42c6a5acb10d88938d12e9427bb8904d0f73b36e933918f2efaa4f02791271aa60fcb1a44b65af700cb68bfb3a8ae57b589a32042be95d63a47984394b59b231963ca8909ad619d722027e1a06caa8f93700765961949ae88084f5bf073f8cc2d792228ed7ace7911093585b724c4dbff272020a73161dc82e4fb1097546490ba587a7d835a6c4c8318e9da74ebcffe822f02f4ccfe08a33ac24ee37ecf9a6b5f5069485ad1053a8a670de8620b7966bb075af6aa0799b52de81e426226f28e7efd81996e02f7074890adf4cac47e194416e98bf5eb374870eae686ae43830e127550666a7d82f5d6d2c676cc411ee4569024519cb785e6060a5ed9c9d26f210480a3bb2035dc5c4348fc07c28425359964bd062db3edc6aada11aa989928ac01d70ee3db8cdb54b79c8e49d877061aafd1ade149d31103072b712180c5ec74df2d611846653116ec24c741fd35cfce9677e1bf40c3aa37bab0ee42ddec2e40d8aab2ddcbd8ef193ee4be733fe5572a18cc882f30768af8d81f8ca15246ac2a931617a43d1fcbc2068e8bc079b371d193d6998c6b08f369876c5d8698da8bae9c99aaf59d852043a580643a14f01e76bf8bd7a9f64cfc466bff423601c7497859a103731f7c30bee94d84c5016ea0a438bcb95e5d206b13c39ba1d88838f3047996ce700e8020dec473e7dad946dbfc147312ca4444f9f3ce1b177ab91ba9f7670eeb55e2e36de938a90c82d1d823bc3d5a895cb2f1c99fc0adfb142b51e8b289264f5541d778d2b0c1bc31b490ede7ab5a74ea9be5c026231b3f83a783609e4e826fb07fd6d5fb97100885f7e398e0816d45b33317227e3fdd958a3c7031885b4021d3a1c1d4f16067cc8074ad6f779324228982d9bf4981011df8a708beaf3fbabbe939a4407763a3d34dc3569ec99980a45237745541930796b56ba8f7644919107e70a0b1977e7231a08634de44cd9f527aaa7c99784e71979a0760caab28b8217dfad974048057f78f034e13fb547c56a2c7bf2f7e61b1ad637233bffc441eb7af1cca1e87bcf2ee101f6cafced81cea89d9559352de7b2c50ecfefc726bed3a164193c40319ce8083eaded2a68c27810f2e389cd3a94418862d5b15359bc6f78d61653d4dcc1c2076f2099fc77518124a913784df5309869c5768879540d159c838811cdee830db4ef02468780864c1e248e7fc002232a1533d73a971b818bc5b2b7efc36602e123c237076b9c2b07448c5282a13afe2fa2e2dd02271dda6c87a8bca711d211ca4f55e37a470d9f8c7393986db5f1e73ef39bc927b7c0f08e2dcde93a7fe5dfdaec6b0c470fce568d651414acb061a0ce90fad0428d9a3b49fb75241d933740bb1d1183d19cc766975c35176d7963b5aa179dcb67175a3720ac7a9207ec9d8c079504b946c8fb00c900e4f80fa285830e2dcf2d0efea38d4dfdb5a31d0c59cf2a18f5236737f9e278119a7d9f76690ccc006692e9029981bc580aef2cb36b3bae297d37670bb30ec74eb615ae677aafeac16cd6c8ab17f0dd72394a4282e3441c463fd756f1ec367e1bb9dbe34c9ea86bd8b5173205bb380f82858385c3755146589fac462cb36211285481f3c79532c8409f48caf849abda929b7aa93364521213a2da021257ac16ad25bb83b9e2e72a4f7bbd09d14e3cab660c21c44d1fa63735ec100838b00a383fb95ceb7c86ab694ba3ad5c1f0fd7453e265644c8099e0cb444ad9425ae331f73ebd8d8274ed4b0923b0fe6183fa226f9cdd30cb0eaa02d2b5f5641c9b0262e52ceb53e8b86ba720801b98d8e395d5b4a5d5721b1e47714c048cfeee0d842f286ba00630fbfb6e4b091f5b39218fdf04ae70cf33d39fdf55585f1bba0737471a56b63a71fa25102cdb485036144a7e98fc5194a18d091da541255d51f6e260c203df7b67defab1ece8b1bbc354c9dd884dd85ec24ae1d6d684c7697c47b9cca0305538874cc5908cac4d5f704ddc9248cfa26210f2d06cdc4732c43408de542ac449c910d8e22f2542d50959e47120c90cf5e28b73c6b7e724c909dd2a3400754a93445cf9f8f9ee4d05589881cde75a1c12d337f9d421798cc58371dd9648f84b9584650985f25cb70292c607c8892a3f436df0c4c1a2f29d9705dc40ecb48f18cb2e0bc8650687ceeda9ebd6447594954e04c0a8ec3e604c7610d83464e35c2067ff8ed5da67ea8e54e23e32118a049480cb8125445bb266a2235c8ab6771fe5fd0bcc522d015d8ec08424ebf909f25bb2edbfe971b74ac3b7ebc88d3070c71729d5a503506aa7610173d0b9160dc70286c473e885cd02dc7461d42b52a56ae417b8100526451f6426488c4400a613efeaa9308f6013411987e7bc7081fe69be5df59b229b19105aef66f8d535b2808cc0b27544ffc128c232180486fc0a406d84e4140ba0427061ae07a50b6dc0e2aae0f25eaa3ca4dd27ce2ebbbf96d352f94f4c543e586007d5f96cadd6044aff62575bf03fbe5e0284e3d77e750bc11c414fe5c673ae045358c0860a3cc78a253405929a9a1991d3b4e20ba3baff5fa527ad50883d05d601c002140cd8e20deb2322977ea45dc4d73d26848cf834fc21235452571805fe3fa1089d0a9039aa4c3f080af7d0f07cf3c42c640186f6e4ea4c21b23477bc45ee9f87410b0768c9b03c88901acffcc3fe9f420ab92ab9be04bb589088c0d4ebc630b38026a5fe2cef23cf027c5d9de22238aca4ceb53cb8d131be4a190e2946365c08dd49316024673dafa2c64eab078b53c9eec02b671ad0c85446d56187b95c1d3ccd610528b980b1641356009b97ecd60cd269040c790453bd677cdc25b67fe5d82ccafb3ecf7f634693a9f4ac2981cffea5d6853b618f30a45a55086286aed76305070b8feec708d6ba690e42ac60690a43c8985a00d79c8d01bddc700de1c42a21ca15e4d7ed65ab23d484d0150894416e8290964cac6bb6262c3a45919dccef823cca76eb858e95f925a853a4505b0a9562d8d68301c4a1e10b6adf0c088ca3a0abc33fdce7c1ba82dc72f3a6868125f983a5f115b846ab6b981e137484211f5c13430547b1804b44220685e0321644ed5f7d30900c8d4c80a1d52fbbb2073c958f7827f27c43ce39c7021423a43a7c795afa409f235aee58504d3cd93416209c1bfdc6062dc8694dbb2c100d9badd3356416043da129bcbbf39cd2c35a5a551c2d28652b885725aa2574786d83289916bc123d467a598b5c5a104cf66d7a56eecbbebed2026946fe868686469346ce13973eb97b06bb5a80504f5e28ffd3f6a61db1865e2f6e4a8f88415194548fbece83e395b253d4821fc97b87bfb2403330db620e161428fb9419081bfa6e24fdbf728376328372890566c93c10cbf5b14071f5643d097182d0b38501ebb1112c1e477586257e9ecd1b16bad561ab0cdffd061b6052cf7b552f29c9d3359f954a37adfc726304d0cc5f40b2dd03bcaca9b8056bdae4d857feed89d2df2a3878effb757777088fabfc4827bfa615fb5d4bc83855bffd5c4f308f5efa8d1f97f20a164289ca0cdd4952bca9dfbd682565097080c3eb1d0fc838f50ea5838a061d06e2e8943880385a04d007f0bfcd11ff730fe6ffe8f428fffb2bcf87e01058fefd3db8ec094d90252f94ba064d9259d6b90d592f738951db3083218bf55568b88ed67c81ee74e8d0122e1123255cfc1c329eae7bfb4bef9de1bbaa443cde8ee89ad5267d04ee0a80e63f885b72610e7cf410b96becb86fe3dc7290c6f88eeed45a6aed748eb54536acbed25d42f33ad0043ad1acef1eafc92015061b0b7372c8eab86592c03ad754bca833904f4249f01f04fedb4d4e03cb54ed7e4d8ac189d028f64add0b9a941dee37cd3ed26d794ebac69bc255a9fc5fa2faa6c3664b247d31acff8315b3bb59cbe7b2c78158274e498a26d1e0ea52ffbd060d890f621d07d5189584e68e1fc451d4667029512949144ffdaeae17cf3fc7492fc98b4518be13a0ac64d6190f4c66668b7991adc4799040ee08ca47718773fcc8b035ba1161c6217bbfb3771a703f9d71a0c0544dabf3328c53df467482e53312b45d0e584c0f2babf8582df077c8be805416ae4c0c7eb02e87beb7a3af2dbc5dfa521eb3210597cad1fe23d7894725cf61942353b94135c173f068be645cb8e462c861e798233b51b596de578bbacc97b385c56c14ed1d87bf371f9095abcdd9f1623b9246eac531b45d05ae3814ae51b43e2dff6043f3de2500c6aa6e355a5c6fcd4430d80c0735a19a54cab01e49199151d141ad85f620a61c303b9fbdc4b34c4082179a81f61faedb9c0897c1735d02e167005233c5159d7de5baeb33ed5263971b1f6b0fb5fa6f780bb6a0a1dfeaec2038a2c6a14600415d1c7332a214ccb4517d46e1da1d63a395c40bb85127dcfcf23008c8748533549665fa0f91f2116562a064c01c806d898fcd460abee14fc16a92e8b8eacb14f597e3137a3003740549c9784ab916d9ff237486541ec23997d46c9d80f7355b00bbbfa1fdf3a772b6d50fdf0764f8c0dd60fcece01c59e980ad9bf111901018a7758fa9af93973beb768bf2b821d0fc102853e3b013a3cb4fe17b7fd748fd0d5f6564e21be49a972191d089c4072b62999c5f619fd78082e9e18b2945ee5f7941b1ff4501f1cb029d101d7d7af3b933168df92b045c3dd0ac056d0f7fb2b2881fd1a92b38d145efe07fe5f385a80e7f678f535990f5030467ec79366999197a94f5e75096467fda0def807ffd0f11fe3ff32fc762af313b224e7fa1c3c872a454a78afcda80659323f395c8462c5fe8686d03d2f247e0db58365379083713310ceb1778608674dfe5054bd60aaf2ce3b2bbb1d5d9d2317a62935bb2770b6d646716817537fd86ec4a59e88ece0ba3c1d435745990e9ceae70dc332302098904cff47cd49232e600f9562e349b6d36b10210e61307dbebccd41ca1f3fe406a0b366550004303764f95123e1936842b5a7816444ce577834319be91b8b01de86a88b52b916f4389b2594973bf9cfbec20f0116b274680bc87afc494cd88eccc81fd2edc5f93de35582c0e6a98b70ce1d48db0cb52d57a6bc9b9b1ed7fb4abb4d1079db3b3d24d1b2c6c00e5a9808855762035ed4a72747016631ffb80ef935f0e6fd79d10d1999600eca388ea098cd907308058493cad3f18a5e0e8c22d1b840ed44966ab3ddd2e4fc66f3d516b6087c4e011fac17527af71b2933eacb943bc8c13144bec4b57a74b881a1c671220a1f139d8a6b7cad605115e422fd7f11154ddefbff352cfce6e9b4362d4829f8badb88e4a90941640e29c5c8f343e8fe757f29706cf8cc9cb48835f2825c0cbf20017105b993642afc7e0ee39c2081e73238d0f3eb5fa087e94b3570fdddd3bd422d6be50a55446b1e2d5391da3c511d979bba38ce9c448b390eff7759dfff0bf8100997df58aae2362526c505fc4ef5e32220e0d03f82e20bd866270e5ba5e45d7205011cd27d8ae56d3d04f0ba35af325f04f7213d03aebb98c5fba63b8c63b270c0ea86ef5a95c86b8f1347f794594bcee4609a1b954b588c504cced1ccf3e44266405251c72723fc2c07eb1bc561f4b861836e3db18f9990df8dd46f9c4b927bf716979912da228d1488072717c42f8f1d168b92845f11c7b908a262131214fda6f2c0394223ad5457af40fa119ed899f8bc85cadc658c0b47e3443705ba56e8673b2965e49e0dfb183027d077a1311c0a134831449ac332f45696e1eaea4f3be03c9cdb4087338889eeb8d724b0215eefc85f5caf228ba50527b7ee2891ccfb8e71adb768627be5fe3069c7a45fe357eb71e1d99169076ac35908cfdf1b1b8c926c06f806257195d995ce9f66c1881a45ca133bf2ce28cd39b4a9b583655e5d0464aa43fb89695473567707daeba25fcffa2e9316d7b9709e206c09f31d7fbdd07abca014f2f4ba873d4e96e815a5a9cac310770e997ca95289536dfc06c3b8aae42e95a103b6fb7c827759e16fad96a630fa91e32c72f980fc9c56ecea941eeb7690f1eedfe3e17aedf417116a5c5e80d18928f99e1751144d482e21c244dbe2de605bccaa55e2b7e71f347d1539de2ee10e9dfb599d3eed247a00c1a518d8987c2ab0250064572532b94b686627798f42f0e63aab9b35750d4484b5281df5c0a1c40e5768a5083b063af1a4afa71586bcb89db7de044097d479567ab6931cea6f6946e7a03c2a93c8926ce331a6f40005de3924505ec3534a3030da13c645f8ca5f3bf8e861ea7a7b63fd60176f568fa0a0f3a0bf7b18e25ca40697302681ebe93278b3b0350fa09f889c1de6d0191126562e9715fab2cbef9322a6bc496f3153441454f660f72e0d885f147159f0f32923c4535887ce8941a2320df2f581982d2cad4f943afc4db1e4844dfe6b340ee1922c6dae6a3c568eee6dea7f61be399b43a5d9814055e901fbb54c48cec2b5c93455ee7c4eea7eecd0cfb1b742e8bf4d678b7d57269b3f24e5b9641e6d89b6f6d8774ff3894a1a25ba30c631b56ba8ac0615d502b0045bc20fea86f41d1ee424a5dd486d91cb422aa603e20612facb596c0b1ccbdb56aa382008de77b49a1f635a708f8bc286b45ede6d8afc19ffa2c45b0492190149168c38752259982c85b29859c693092de1450e4117d79ee5a4adccbb4500d8828b899a23aa8546e30f9af3d3c969bf08feb22fdd44c8052357d62a6481bb49a849ad992b2838d61e278865733e953036468297d70e1cbd6ca949520295c36d27352b5708449dfa4a125bd82b99050ea368e70ec356e104b421b22e4235ae4c2cd3da762a546d360c44e49d56e198296504a804b32082e7a0b924afd7f709f59c21e74617061b5550c9e8b3596c4cab6957015cb84e92afd41c4af80172763b04a588863c7df9c318cbbea290eed5bbac9f4823798504a415c6225cbbb040a019cc8c5122893454b7a39e956c2c47b796f6c2ebe641faf73de82c1c5e91131c858ae31f5cd7a51a6eaaa6b8f166b09321fa1d22b7aef57896f61c9484eaf583552430ca4781d2bdd15d5e57f1759b66e9c127cc70bffbb0ca1cb09a0da1f778540fcbdaa2e79f67a9c064472cfbe1c18d0337680f7fb31ae0f24f5424b823525f5ac20b1a8f6e62b15bdd57d17ea23b1c651315b2c8369b0ad1132be72e7bed066095c285ff14999e502c492a9ad8593963cb0243115c7770dcbb2a619c52f66361025932869151731e57b1f5b74e2d9ae5a75d52311660f6ab6240540614d48b275f736c442ae13d6e22a44710cd2d8d73eac0fd307e7f7383c9aab7de9af36c1cd91487d78da6e076683deffe932e7076d50222fd0466b011922175a858952c894bce2b443b220ff58ccf492b6d4405bb10c4297cbfa8e6166f6446001c01d7b9a71e2e141a4cfa8862014d832f72a37b1e218ae27ce7ea3bf56072c189e67429b073d76e3fd0fe9595a59b4d0d8eb92ccaa7e0c1e9359a7b3566f37e312cacd17945f96f16b107bf260b7bb49212921906bab19c6c08151efa22e22d57461c66a07c046d661585433bd3ca80924866585ec0ded6833183a88ace381c06a0d5792e060f3aa593c0ea55e2ae1db5ea798732986b4205eab2d324ad12b5f49c326dc9b2c77301275b5f13bdde77fb35b767c55d417a58b26f8a90e54e9b657714d4d3565e70f690a056b65093b981e45e20cd4bcd8104c9a1a1409cf4952304927bd5f92873dbdadf632c2aabe19fb843f4c35665c9f6a15b53225d7218c8aa2289979c4450209d401a8bb6cb0f2fb7cd64c543483d0712f4799150590ff8a44cfa2491cb7e77d5d2123f84b527b39576d4dce922354f4b972133ec85edb4418801dab67c231a13e1e66d4a483717c9d87fa006d2bc238923d6a7e552bc5b5842b89b1e240e16e08430edb358a89bc1bebc2f22f3c5b5afcd84766407bd33d5efbb4f61370685b7f8d7c1bcd4bb7f0d660a99923d7facf03829b947309a45c2134a3eb8ac5f7b661dc65cdcbde5bc3a2fbb234d6c7cd47c8b040072124e81b53d7b2ef8a233bc8db31a0a06bb022bb565b0927b4104a3576cda51102d7a31439ab260dc622598161a11549ade7aaac54a4f57387d349bf265e522944c270c12e9dc06b4b6d911c5a8881b38a95cf65ad2f02f0131b2ba5aa92d56a6e54f0810771cd9149f7a83ac38a1a231d9535278db777cdc6795f7bb5ea1b738316c421a3f8105b55cc8ae1c421171e3d0dd5cbe4c26e9cc8de0ad86c407f57be1b7f5731abcbee6260bc994494466195afb77fb5651c882c72268f8e3e6bcafa3e09df795b8cf5bd3749aa6621f2efffcfde91f2dda9af15cbb5b48f77a9969d1c881759ed701dbfab047a8f52078ba620cd2cf39464d8e062e7f54b748a5c2ac488f98e7b10214aa65bc4d9c6d8d1d5e2a6651a7e2878f826706850627d096a0653e02e0b88577cba09f0c10ba098c2a224fa495baa9dbb79a06aed48ab59b19e852636558b531ab20cbd82a13ebc0b16a709a1f3099cf63a4a21e3f2fe52cf816521c7dacb14c94a501ff764e2cde1fa7c1b8e95b49def875044fc86ca1dae76449db7ccaeae903ed2cd2b8da536f68a598209de08133434a4661d1fe6a1fe0721ff071f8b6d52062634e212487b79ed3ef85e9b6599550df99fac8adbc61f19b918ed0fbe0716705e75c07b835fb266f6a7867bfaf36a69095a4280631f7ee1ec13a1b0d7172e0ddd556c3b68fad7c0f29fa9e5dffec6d1aebf3ba2ce9dda50f1998fa6c848b5cab882824cbc05b2f3db878618056ba42d7bf00ee7ff44d83ad524d80978296f81f3c1e68b6e1066fac3e55226d9253a02bd35840e2b44117be06800dbe9b064c2d7af70ac0b5cec455d9c86fce8030e206a14f994d568143f46b6f8d350db5c2d10f6a20f276a1a02105bc5db118bad77586fd28b12994bed3cdea46086e5a0333597122c22ba9bcb92fe501505153df6b8573fc6239da615636e372a0ae41f8ee32c0533ecb5fe595f95da96c473ba86f3d6a1d9c77e3bf89985d50a89271a8f4a6cb31db200072086b66e54da1f9f2ecaee251eb8844884ee32801c1a3641e81fe6e9bfdecbd0fbb4f58f5b4d522479e16473aeae97401ffa5a47e115f2003e0de8e6c5fd2c9de8b6ec0c520488cee53c6d7369df4ecf4248dd65c0f25feb84aef74ebc39e054fa6e1641ebf2665de480ee4e28f433bd2824bcf1cb568e68f095a4433144518fd5c901b7882ab12f149fe31a1b70a71d9be0b8681cf9b28cc0f730ffcc05fca6230359f1eb378f5200515abe2264b9ce52994d38e2cdd3181dd2599e028dc50367b79f4903f37ae933af467d5524a17dfdf93afbb4619eed2e08bab0a09b36c5bf137550fdcd1ba0a02c65390a995a464846abe047780224fbc2e867a6130b3993a9ccf37e4c6e1ac2c0112cbdbf5a63fb59654aa0302d5fa8ab8cfa709a9b78872c468d37a4cfc5b5a34d79a92be6bfda5d960012c2a580cb8462c7f8d9f42ee6364f6eb77c2f5c240b05fd07ee22fbf902bb8026b4331f50443be5fa54693507ec0d720df52510648d317d4dcfee27fe5137da3947b30437e54460224c52ef8aebdd602538c36a4108c4d7c43a191a0e15052f4735e5cffc77aca22d26306bdfd5b3cd3bc6609e30b7969eec8ca8f1da02485ac88c8c0de9c0c5144bf0b5388a3a4ff81994191226acbb4b365d8e92c03c3df2f8f96c1071633185849b17d860748121ef2e1f1e48d49c2ea0093f54db6baa2e2b8f19672b75238c3cb9abe9bf04a6700862be0bb9d2a05c937dae3b738284c24127e00de510713e1177d08016789d95d179d6d8ceb727fb9b78d5e73aef82ee81b5e90e4850d9aeecd08ec86d5049cddb9c7abd7a06fc5abff072cc821c6e8087dea29256567a341beceddb3cd750b129b8a71f3488a39d75c821f4e19bd451cac0b3d1b8b4174fc2885d253861b4f1fc413beecdf4e236834e0e298c81c00960d7f3f936eebe664413a1990cd78e9ce404d22c36deb7cbd94f45e12ffbd7b4b36d0781216882f32611bd286e39b109f8c250a210037c27bd5382179b3f52561cdc7528aaa11abdeaf456104a2331d5752f884e0e88c911e8b2f8428ced3f116043453752216e8535bb3710205464b1b1bcbfe754f132af35a7968bc3a120016ae828d654c9361904bad7eea4b8cc13c6921074886badd9e1bec724e9b11e33410390e87b52652991d99623b9c3774887a975b493c1aa97da65c4c19ae12a231f5399cb2651528a43b442620504d9dc6e8105107959d188a5110ad8a5510c61e0978d7840b0bfce8b491e4416ab1f06fab51b63c2136f7387d2fe7ab7de0d3d36e9aa5ee525a3e4db0387f344b75763f0ecdc455602fce85e2446028e34cabe4a3de707dfa2ce84bac7ac85442b2f29dd505c1f4073341df9cda88b4ef5cdc9a5027f49ea816012b87b760f261bc697215d4b6ec87d62ba8fa0c4245706a4c47bfa3cb242be8da189622f2e8c46f400d721e70e7ae4d4e46024266a10dc5fe03e7f9898e8d743ddef1502332fc79a38c03b0cb1be01f3dcecffb2ffa3a0bf21516c3b603f1b7b386026f283bb30daa98eaa3b9d3160cc98610e43c156f2fefae7ed7500250139c7bf7ad68e5ee3cd348e8d392468dc302e2d6135405a5cbf2d62f651a51fd9fac124cb17f56c23cada3240d232cb276eb695dc8b08a0363690beb29bea6d4b4942a3cd6956004e358133f02862f83113464b3bc51afb664fb3433e0889d8970d6dc7dd85a2ead59d00a675e1caf257e7ffaed800f3b699c2aa636fab38ce180433c461b8119ff9af16e6504c02c7335038546929abdf52b9b3fd14a19c21309782092c4e4133efa10c5f79ba734697e7b327e9aacc00a675ed0eb125be5a95636b268ce3488a7c6cf8b9adeb61d29cc77d00ee43d734ecf867cc3274a683ccc8d80423b36a7ac923ac7bcbd03c53e1705085a5527480dcef3caef69b95c90b786a0cad68687c4d34c3da143657b996821eb2e6a0450b87207cd1d7d31906b85d1b2682c49c81fb461335cd1525a1981d8277392759766ad635fee2c19fa0466f51ac7673c701418646d847ad452c0766d9f7ec425945bb65901f800d64bb116258c6f63e1dea8f329fd4c73f14d3025a52be715a8018cd56077980dacf707d4817a6f5359f4483d921682ce9eb86d119e5c4ac6f969697f32154e1a08acb186eae44f08bc6cd9acbc27d040beab0ae82c21e06500c17cb40bc29331a525227f0ede9ed9fa4b264bb57489a4c52caf4060007ff06d2dfeca277a4a732c09224bdad1e1c927e61c78c071c7bfe7582f3f9cb70fbfa39ab7d3d9d9e29fda5c1eb5e5fffba3af63580fde292b20e3d845b07ec27b9e744612914e64c71fd455dd0800985fd82ea5b39759303ed820e33607042615b3abaf8a322c8b14ff39c28e69c274efc7f5fc7a479060c7674b887deef1851d27278fbe99e6cbad5c83e25afe746d7e3d1f5dbe87a6d747da6391f966348db868ecc06efbbc7f2ef0f9a0212ce20c2c2fe9ed90dde779ebea18e78c7ce4d43806908f065ad652b7b2d6527fbd70d3778c73e0bf75858cce01ecb0c20eeb180741feeb1e88f0679faa3b39deef08eb53010811d9b5af082f86af0b3d2e4b0fa451db59a51a1a3c20009bbd63a451a0638d045b826075809edfa2e285b10da17d574cbc0024cc93df7c4dc2bbd725771c3e50f18dc461a2eb48d36711359701cc0fe2017d244ae89b89016daf5af086260d09a8c60b0927021ab3c01b69e57f13ccff3b6577aa5577aa5575211e06ae41e373129cb931391080565344aa129612822228a75c4515046a3993253c2504444144746c691842414a225e00db9a7925c917b2a87f3ff7d18dffb4192e43631294b921309e049bc11c0b4925c9cc83d20aa8a742197b2ab35dd9f7ee246bb5a9506dd89d29cc83bf5e24eb8aa34714f6542baa722a72fe14ab81017d220e64f4580e9835c88c52465ba3554c42017da750a91ec7b067bd8ee19a472216c948d9cffb0d125b11136aa6f9557689596555aa5045a56095e6a425344c491910b75a35dafafdf915da823e9c66ec4a43c117121f75c1a040529ce89dc33329eec9111ae1c11399311118e1c09b9120e851b71295dd88954421c4fb82607d8b59829e6fe6e762755776c108be5589665598ee3388e588b2ee438cec9979f0926c7927b31febe2e144546c47184a48e21eb2b4b571a97805db8b9912bddd3855f47d29178c77f1cb111d13d98e81d0789b807eb44bce35dd8699ffdd5e0c59ed220be7ed2e067bda4ade646f7681a8f78c73fc317fbf0732337767058f4ce0fdef5607b8783eddd0cb677436cef56b0bd0b627b1782ed7f8dfc4e601776a17b66c8d560274269b013270d76239206bb71fb5b0d7624dbffc2f0c83df85e8cbfef1f8fba50dcfe5de81e9091f4d1642cc7935134a274e1f6498ee416dd63bd3f1ec1a37bbcf7c72438e49eebfd71897baaf7bfbc5c799cb5bfae9c559a56c19755c1b2e7e5ca57575665d555bd5731f1160d43182df48785a69998424b665988494c561fac75256bc8b1fed431d334fda96296d9d23f731113b5522b2b2d1cf96b7e61fe988b32d1f51f8c348ade717f8c5e957f5666ee8178c7fd35fdde71bccd529b1a39b5906a24d54213fa4391397fa56bcde544e2dfad480a796812d5b084bfe7214c23ab98e13a66650d656225b3b2969998f5872a4990f8ca5da4a6714322ed681af96bb8867f09d7faca4a2fb1771126f21136da101359111b29d166f3954bbe994219ca3152f896eb1626123b463a0a5d21f2b2a3ca2b5e51a3cfe52b4d8dde714af489f48e67aec61f944417352aab498aaab072b20aab89b42e1f4b5f913f47856e158a3434d651e8fb4b767ecbed1615e232fa8ebce3f95f5dbefc97337f6d99c399cc4583b66fd35ee6b9c7dde5bf4d7ff4a7328edb9fb344efb8b87dd31f2bf48e5b6135aa46dbfffbf4a7125565b9fd3f1f0bc65f4445c8c6bbc8eddf75fa7385ae50778ddd355ee2255ee1156e1eeb8f46e34aacc2cb77e936b0723b46622416c22efa838de3f6ff5e7f36a266dcfe168bcc7099cda6dcfe19fdc948eef527cb64a1ed7ff9193568e8cb5b34e588f15f7f12da2233fac3e94f86dcfe1aafa13f5a28b4fdb2fde5f232684829dafe587faa10b9fd5f5bf4e7a23fa148638d2af20b6d7f8cf5e71afd68576525aa465668895779951b1b98082b3526137db2720b3f16715b23ef58a18b68fbff47dc3e662e4472749a72fb9bd017698d577889d778852e121b61235d19ed4ce49dac3fbf8ddbdfa23f98e89dabc4a73f99869e5183c67fcfe9cf16f28e3f09cd5d484da32da2edbfa131d155622316c248acc44495c75a0bbde3e1f6d7469a28536eff8bfe6ce4f79f6cd49f0ca33f0dfdddb8fd373ac3465996655925f48e87dbdfdb445bf9e98fb8fd315abb686dd4da48d3421aa9959a481b6dc71bde1eeb6de41d1f6d17757a13f5168e2172136dc738dc465a9891d835ba446db41ec461268e5819125d61455a234cdc9e8d9ae658a14cff25c2f49785db2f4ddc6e55fa6e62279aea0d3e5ce44c31f7dcd49f7b8ac899a26e72d7ac86174d943bc29ef28533b3617a69d292e67887fa8043d13da0a9c45276dc6e4544bce36f431ba6a48c1cc54192fb672073fa03a6efda451a69c48ec082bd47d105a221aefa9303f430539292e40b3c5b018370cfacdc1711601db3152f18f7cc26398ef60f787e1d8998747bd88416842b5cf082fa041690340534053bf907111a52bd0c1521da83b811d583d4cadbecbd94bb9f32f754c67ff3a6c9f9cb39e70f901958e41bf2cd549eb2946df64cb321c63a04491d22548728a94390750893effbe770e80ca9b5d6a754bca00c51567d75d4497e6cd01ddea91fbbd6ffff3e8cbd53eff54eb57a564deb12aec9014e2e3058a911f83e0d02fbdf9ff47698fbf0268da454724ebe0c4369944669e48c2c69492dc32ef072e0b74d69942412f77c5f355f5f2a9148c94493316fc999bf6a2683d96c3408b379cde6d39fef92f92ade774958c503a91a09d364cc57bccc652bf592bf8aa93297ca656afafbae1636831d275e3ae9251ef29077b1d2e421eae9c55f2d9dc4492adf58f9462a9f587111f77c170daa6817f1d0430f3dbc17e3efabe525f315bdf93098cb77b93ce652a9582a160ce6fb3299cac95cbc3a527a744797c426dfa8524cab3fd851dfa5511aa551229142528964b2eb4f2157b507aec901661408ecef0fc2f69dfa8b892a0d766cf0c2c26bc4c22d55d295a907454d51245589286a522455428528126aa4462891124b422423256a901aa144a694494489502254488553ca94328da6d18432a14ca249e41de92591879334c690466bc3b00d850548dbb6cf360cc3b02cd3b4ebb22c0cb3b66bc328f6d6a6372c40d9f55b96bd765d5776659ab66d186659968561d666611a6665167659b6a3c3a5a94a94ac2a51a555fd8cbc356385abfaabca2b5c444dd24f7f1a04bee3388ee358358f65bd8ec31e0a8542a15088d692b256ec38bc59716e2b7abab32267456cc5cd8a63a5349d694c5fdad241e04a1fac25c0f7c13a5679854845ea4e115529c9ae3454ff6a3151462934eca8b5d65aab57d23d99af0f4ef2c169f2e02cbf8c06116244472043800c01328408ca68a6841ba4a2485731101586e7028606420eb770811169e1028606c220f0d7b156c9ba46d63ccd7419ef34b2a6eb36ddbd187fdf087f3fd23dc56434549379fa797a060ede6352bef746dfa7c964369bced35db5b132fac2682cfbeb92bdb7e4ae088ce29eeeb1deb00059367ca9589e7a5e656611a8504a3b0b873d4c25735d57c1701be6b60ae6360ce6394b256f1da6e2e1cc5db28731de30ef3da626eea950b2c2592adc85db308739ceb2552c9a921ea61c75812bfe69d9ea98d1f8cfd3c89abfbe8cc95ddebcb7d1fce6dbd020cdb7f11a1b1af4e919387c9fd19fcc7f18cd6fba9cd1b81cf3f297e1b07990fa1a59f35fdefccc70e8b80d93d15436f9e2658d05f068de394d69da39a93b49d6bdd76860321b1cbac7bcb7f9aeeb361b9ad530b308d0ac068d9f5904a6e6315d276dde5e1abc9606f1e62b0d7e99bf1afcef274cf6729735363af39ed1fabae4ee2dd9fb8b7a5de7d54bee3aaf4ecb77d9bbbaecfdc5c25dba8b67a9582ade6f968bc562b15c6fabe2c5dfa5e2c51f89694b6f9cc5c3fc05078ba5dbfe72acc26d158b5d2ed97b6ee336ed71f624eb53445e4a2dd5e88866baa38e147f75b4ba8e73a422f5d453d46b2c80efc5f8fb9e96a004783e1dd59152eae2cf35f8ba965a7d00115c6077f7a729c0d58edc5347cec9979fc98725c55a724ebe34114d0d5e17d5d245b574512d5d544b6a04a61ee2afff96cad7bf2cb9fb4ae6b297b9e72a9da5a267e050f90aee9edb3ccdb374bf55b88ddbb689b3d65d8edab254020cd639ffeae9618ac7fda6759df6b582f19fb8076fb5b255ba4ed338ae96eed92637614d6df53e2de2e2ef9f4347f549b2a4241422a9245ef56a1defc5f8fbfea95847dce3fdf65a85dbb8f7ba6d7b6e7b6ca975b36c1ce77995caa6b7fab57e15718fa7eb57d13d15ae7e1d718fa6bd6ad1f5af2e5b9ecb95bf2a36f2ce1422e58658e413ed102396524a690725019e5aae7c456f2cd9739906593a4ecfc081db2c5fc19e862f09f33248ed2e09ebb2e5b5086435685bc6997b4be62a197b59ebbe4993f4d60e5d3b6a4747add305aeefdfe2e2ca7181eb77dc8bf1575d63017c71e56c6b3bf60cb9f87b4b563d5c15062350b4085cdf9f16e1a20dec3029104460d6575a56e9aaa257045a5497766940a3d6538bd230cb1ad0320c17b9857728103becb00310b40809843720694ac406c2228ac093de61871d7670910221c8285023303502dba740dca7a811987a6a049e9e1681e78353488bc01bc0e014124189d801085a448c1151848a3b143181c0120562070e14d4bfb6c971cd99c22b35c10330786b78eb57f1f2122ff18ef421f75c2112f75c24a37bae1134e29ecbd2a04afb8877a4bf1774b514d69077a42fb9e4964cb6f456835fb94fb6f454839c1aa200837374afea62a2907e662ba8093078c52dfdf57404f83ecdf59d04f8d6ef6157107f1077d23dd94b2e4e72fb8924bd8beec9348810a28f408428f1ce947e0a11f2ce948420f1ce948418bd33252146bc33a5774fd952b825912d895b1ab1d73df7a5773153d497fea2738254120b4c0fafc2e4482ffd9c1e7372c0198519850dde934d3305d45db58f268a180c068321f9beeffbbeef657c847c994c2693c9645ec6474846d3344dd3b4cc87b9582ab96376fcbdfcd165102ecf80338b2ddfe0d90c5303a7a88771266086cc9f1301330494f6fc390f304340ca37ae1deb01ab1c0faec9617775ac05b6ed66d3ed21eeb1f4e753607a50224c4efd39b30b6a325154cc83b473789418b5036305bb3e18430c1cd3831ad2839507a710ac9eb503562e0d18a4252d2549922449924ea6699aa6699a4414455114455128f7de7bef7d191f21f7abaaaaaaaa7a191f21950f25aa7c67c7ff663c3bfe54fe66c77fca3f3bfe52e6cc8e7fcd72903206f4b0a9dee1db31be6d84d57376fca7ebf9b67a802c2e0aa324c916b6ff9d2938b7d5e3a1300c551042e9d76c05c5cad99927737a404844d30384640a93333788d19beddad65a2d2244dbfe352908f0ad1cfb170969c4b82fb774dbd78836ddb48872cf3db710a8b02719042a0481dc1a79dd2900ed17cb4433c5a444645591d0d09ca82aadc22aabba15c6e2759cfded928f5f7becadbf7fddd11d5df28eee470c1abc37001ac418001afcbe8e06ff391ae4d8afc6d74f021b5f436bf49fd0e02461d0e0c70b1abc1c1ac42674d6d33895deb1ff1ae494d0208784067f4383ff6d34f8e18c06f1651ac56904a7d1641ae934d2f2fbb858d320c634f85d7db26db9adc9b695dc568356c9b654f898b7bcd7715b56515468c9d012612536620db3b0f16383d8f893c68378f3e0a7c1c6073929c02eba870a290ee7ffc3f76e68f0e34343839324371a9c26261a0dceb2cc682a3ca9212d39275f7e261fd86ad65af6b242ee0109c07eff5d2e950a0addf1320ce0513c0afde9d0a00168147a638300b415f20ed55628bac70a5922f7689f06e7094683f3e4a2c1595a34384b134f83d3a4d3e0243f36a7c18faf34f81cca12596cdcf6a7f1daa73216d8e81dfb1cc094a2130e6d8b8d3804351160d09e5c99c83d04784d440bb3946c94a188db6a23db6ae3b61ac9b65a685bad64db6d740f01defe26c3839b49c7831b398007b712013cb885503cb8919c6c229451cab6af91ee218006418136b232d80e3b002b008b4233d152421171db6d64db9f46660afad6fe9482e9618f3039f62d15821036684f6ea680baa9b6e54461dfdf660ea0bb5a5bee005b8bc389c23e48a539c0e0456e2ab2a9b5f667b6c23e10707dd06e8b459d1a80217458649084233a94a0513d2e3045dbef8ee19b062b093250c2a66ff305a6c86efad6527a3212e12feaf5416a9541c722e0ef43a4bf97a5a8085efcdd497b8b1660708a6e9e680b2e8d0540fc66b0876d416a876fd9f79c295380cd2fa6bf7f8174cf7d7fba186b1ff6d4cf30db1560b0633b155b5c8c356cae00d7bfbc630da3a4ef70cf455312eb0d83dfbf2459eb54245df39a980b5c9f05a7b100e6f414c3f77deaed4bd903a4bf9a8769d76cc5f45139f4a71c63dad201dc3dd83f7fe77887bf444468533ad2aad6836b72cc39a7952acc3e6501c2aa4ba9afa2691866adf4f4eacfa4a44d74479f7b7039c210bbf28ab07b7eca301792221559c84edff27e3e59b7555cdcb611a9695675afcba54bde4f89ff340b1012341bd5900a61228b1a5d89cadc10f61d92a4f192a6218df1fbcdd7691251a3979aeea9688323ce912814a948d271745d0abfef29fd89188cbb8b28f1a5908acad10dc35015457514eda852794abb5744538627f22ffe8d6a4956d1a88ec6b074710aad88e39eb2dcf49fcd439b93e525125994e8a36a22ed53dc87d276fa48a31dc55b4e114744cb4b7f59494b7fa4872a8d43db9db2a40d49564fef54e10b30b8260748e7bc57266ffecb241e9337de92357ecba0fb99af64fbdb83fc2bef6590c5f29f06d9dfbecb204c89f734487acb7319f4e9ef4b68d0f498c719d4e91935dccfbca741d47f7f6dd9fb4cdefecbf831997b4bee34feca1b8f65129fe5cddf0cda3e7bcfdedf0755dedf6650856990f7f7a50cba4a5c6f35a8fbeaa70cc274090de2fe7a2a83a4ecad06e1c7febad96299fa4bba92545d58767ffb99d9403df5987b9ad5303dd73dcd321becdbf72afe951bdc6369d0e53736b0cf3408f3d7d79fa122917d8f7d7d904a7b1c2c5f3d090dca7cf6f53f348de5ab0ecb575fbbce82f93235bb61b3013ff5359b990ddc4f5fb31ab89fbaee25fb35abc17b5b79afbc6b50e66780acdfd8f819190dba1e4342832c247ec6860661ff7d65a1f9cdcfc0a17acb93d0a0ec33af41da6ff4a686ea2d1a1a54bd259b990dda6b9e663568aff999d9907df6999f990dd863ff613017eb2f2d2e1730344045302234a4f2972c8279192a422eff7d98cf64bed7685e868a90cc5f1a1b4ea3ebf4b661fdd1fa839ff3bcca779df71cf7325484748ff36fdb672b368b4563a9befef551ebdfc0e29a190b1fb2080df1b7b2c8653d865d9f65d86bdacb501192fd65adbf24d99fa67b518ca234fe6ea89f34a697a697a122447a2bbd0c1521ae3ffa2369503fa3066aa33fd44f3ed0905b05128935b948ac893599443091acb426d4242bb3322b1dc59aa0b8883f0dc60d621756e298683b76b21d33d98e9578c73172fb8585301292711cc146bce322267ac73111f780268d8978c731916ca2986465b8a916d2429ac83d33643c19294513b204c5b5108aa4c10e2da4035c03d1c644b663229bf85aa8a12d3df6335b913d48b5ae99adf0b73fdfb30c4460fbf7ddda7f029ee40c27ecfbf66df600fb173fa541ee299a3d003ff5dd839f57b93cd314ff1757a81ce9416ac5eb74fdfe5eae4929a5947a9052eaa5bf66b680df54c39829eedc2ffc53540fba02546cd7e14c51690c58fff5a507712ed3809fa2ff654c0639e2922d19e408925c37ce3c489b7a4bfdbef7fb52aac7d5d4354da12317e01f35a0c4b64faf503dec4b4f47d5e3becd565c3baa1e1a224d4a29a55e5594525ae9cdd7533af76502ddf4e649ce60c2a699065bbcf593655deb5ad65f0dd20694d8d8532d905a45f7d0f07260cc14734b7eefa5217843aa9d7e45a9e7ea6fce41457ee17f7d95417fccc1ebef630fde4bf3f533a3c1f58b7b5d3483939c7142efa53fd14df324679c6caa62d30cd25dd1eb66f03e38b900866caa5f80930b5b9ad300b8ee9bc1c98504eceb5fdd6fbe3cbfb8ef5f3378bfd6a7fe35d32fa8ce8176613b8c9982bef497f5d3fdeb72bc234dd2cad7d39c838a7d376d7a0ec7a2bf6daf3d487f7a137293309bd1bfb2e6190d967e41350c726fdf016a00ac75e0e16efb31eeb62ffd94418eddeaf6dbcf6cc5a661540e7dbab35c83a81ce9b15ce53a5239f7c13a5239d257b172a4a72ff0b82f7d1da91e5ffdf4bfe906692812822dcdf8614b4f7fa81e3504d8cdbfab583daa97be06513d360cc3700c91feeefbe0dd15887755fdfdaafa8befcfe9a1a3df74e49e2a821c41e796244b928e1839623c82e406b8fa2a5a1abc9f745ffa2acb4004be3a0715fb3e9803c8be3f593fcdb0340fd3be7fddfcc2fafb5306ad9f2cfdc2fa49eee9416b85653d489d720c9499c27a09cc01645b1a84c09eaaffd0103a5efac5441e11dae0f415c8ede9889214204790138575446876e6b63438bd00f60472e8283d0d29c9f7617c3baa073fa44aaaa44a53d196fe9a09c0f7e9b6d9a4af844d99ee99dd1895d3857df516367dc024c34d69b0c4b66ff949a36cfaa025bf7f9f4874725296262677df5d43b89e9873cea9a7b5f76218c695caf74d0f1d74e0e1dbf479b89bbe0e31eecec1b9106efa31be4db506c8e54fbdbb3bc709986efaf33fa687a2e16e0c7cdca7fed2c8c0023cfddc205d31690ca8d856ff20c343aaa75e8601422a3dc3fecd5a4615429508a1b610eabd136e498356834c14f4e924bd075ba5121c6145d3e39a9c5b3915c4b67a7ef0817621e47ef573d36c01e24451ff9a1caa411fc1ae5fa507312dbde34307c2907bb387d00c02589c29e8d7f7114c0fcb84c9a95fa93d9928eacd3e12034c4daa8711aa87fdfa9704e214a4db7fca4185a4e744e156dfdac3545d0a74d21898c4809c9b0dea5584b6271983915da99c4aa7d53634f8f6f7ed6007f6c4c25527372b87eafa336b00dd544fc0a3a2f6621546c5ea5181eaa1c215e616f6fc61cf106c4bfdfc16d523fbf905000f8085708d80044e0ccff15536b6e75b1a44f5b858c19ed2bcd39a73e42f3af2d5c8a447dee948a52618638c31c61cc7711cc7715dd7755dd7759ee7799ee779954aa552a9542a9a8b4c83740b970663d8203541a12e97cbe572b95c30180c0683c160beeffbbeeffb32994c2693c964341a8d46a3d168369bcd66b3d96cbebefdf8f8f878104f1a1a1a1a1a1a1a1a1b1b1b1b1b1b1b1b244890204182040912254a942851a2448912ffffffff39e79c73ce5f9f9a3448b740af40a9b0eb530dd228ecfad409bbbe5443adb5d65abf8c8f106dc2840913264c9830f1f5abc8c1c1c1c1c1c1f1323e42385e78e185175e78e18517be7e1d61800106186080010618be7e253971e2c48913274e9cf8fa7686b9ed899fd5a303e4893c67c73e0cf9ce8efd17329e1dfb1cf99b1dfb26f2cf8e7d9d39b3633fe78ed9b1fff96376ec97c820b3639f449e6176ec6f6416b3635f23df303bf637b9c5ecd8d76417b3633f9361cc8efd2f6b6076ec63320d2715991dfb964cc5d9b15fc9746476ec7b998eb363bfcb946476ec73998666c73eceb46476acbe2a6a2da5f6ada594524a7da0d58d2c5c93e3a22dc0e9843d27128c208403ecf905a81eece777548febb18a06c79ed68331ecf9d7c757bad6ea02cb3034485700722a0dc640699043d2d6b5348e948486680935b1590eb3052db10d9c9294a43f981e0e8259b2b54c4d5ce4031385aea07a869801c541a53dd8577d3a523d3217d5e3c118300f725c1ed4b03c58d9e044d11e9c57d8d8c7ac1deb63d6cead9de9a376acb46ddbb66ddb8631c61863cc711cc7711c47d2755dd7755d17f23ccff33ccf2ba9542a954aa5f2323eb24ccbcaa948a81d4c83740b20c7d2600c57831cdfa4418ddab11aac6c909a5013172d168bc562b158462e97cbe572b95c460c06139c29a8142d163741eb108d080800000000c315000040200c870483c1244904c50f14000b758e4e6450461809d5348821a39041ca10810101000101080041000010a2a5d848627c6b9691ab3398aeaf783a6edf84ce8cbca2a4c631ff502c59e23847215dd9fae849903971b1fbdd294e554e0b98554ded52d99d862aa3f881a60c979f168815e92e9b27cc5e56e83c7db9c3133da20e02c67a4696d36aaeb56cee521db8e92e1bc9ec6299c8ab03a818deadcfad21e9030bf061b941fd7df57fa19e0278f74d25aec710d3ba0b34b9271a8456afaab985306fe3141ff72e8777752be4f0873eddb294d76b25ae3d6017b7bebb8383c8fc8d7dca549b4f8af48eb737a9a14c5da80c47ffd15b9181dbad99491426ad24bad2036eae8a6bb7659986b4116390e122fcc4656e5206c04b7788378fe97441e40dac5dce461771767fb31deae21426e658117eb8eec276375fc480d531605716b1b4c448a83f6275c83fb4e2c51cdb9a77787e8e65054dff78f387f94fce4b77435a51d0ce9fe49cb54018c3506946499aebbc1836e07d10ffa062fb6cedfd7d7d3c6199b4bc4481b0f84437a54ab2448e70141558f5cb14009d708fc16f2f5c9342a66e7691f3a995d99e6cc1af689be54e8445f777bcad0783db2cdad0530dee534679f690054e4da124fee2294d3ee8a1f920347e6e607fcbb86732ff23035864d1db68297d6534562f008a1c1a8dd1a8123607e27d1140ff18040483c926398ee0ac7ad6fc18efe8e719c2b3649b10f9b987e97005527ed1896fa0a258f95202abcd854c96a1b0f3c723a21cf47aa3d2a0f8ea2886214cada32bf346db8e184987a59591f8166e212971349ad072fce3b5a063ffcb137360c7a4424c68c394998d400fe470a517b9bfa9cbfe52a5b5f4ee95fa29a123868a6e7764a702bf494b4626f6ae2333f7bb968703053a19e723b96f379cf1a9ab12ba375ed611641b393f73fd7889ef1dc2c8718c796cde4e52d5a10443b21394e0a49a32ed994feb0bfb94ca3b5fa83e528e7d2cfd451d88a3586fca07a169f06f513097e0f388202850801f232f83adde577abd22e1b21da94be0c020927e9db2958f00331458ebb73e3d90b3b6e20b37e835fcd555255c56eedf906ad895d085e54649768d24c6e9edf88c2948324dc81a9c451ca80e42788888a212281274b40ce16c0bd9ada4d613da0599536fa19165f99400c3928b8274a4356a31e2ce65b68152e6a5198c0706bb179e9c6d7b079548582f7172ec8bb902c902e8b56956371343b8b85d938de840f72f51e3dedf89f096d9bdb71056118d2471536cd9a67eb1d1c751391f796925dd4f549ac767b3b1d516ea25c89b2a20a96f02de9064ec709a3cfd6473ed1bcbf2b0d77ab22d90a2e085f98e48e31de5f3628a8c4719e27127ace56b73a1fe04ed77f00a6ad894f72880a03dc2aaff4700a3b8f5404adcc22b99e9870f951e279fbc17e17db36256639d15026e77483721ce7132b9f8fb1cc72df5eddf87467f39c05d8a0b7e8ef40bb2e904c66c1e50e1f00558df882ca56aeca74252c9a1877870e514a9e4768517fd0e98bad24f8e7415817738d7207307e9307e239ab63184fb5638232a5970837d49dd53788ddad8140729a566abb45581d8cbbdd56105fe664c7c347d71c21b2ab86288f13ba7b81c811a7c8cfef950ef8f3a7a10d9a3aee46e9c6926a8eae5ce1545fd35096cdbb592f2e7701b183795f6a97ff5f80d5916d36515caa4e7ca1c4b47e6b75463596e12c4f8bd4beada358c179a860b9dd6d1556436aee472e8f3e2907c8e56c0d111cdc18bce076152f01ee52cbd36889ae23bf370fbf1db32fb6a7ee4b062e48c9aa5c8d9170f86aa3ac589a4954c69a8fae84641aca40cc716164bd5541c26ee2039ed767316b4dc86798b2561549204999400c5bd27da684e0fa1eb80b66212bab963ade4b647e6548f1a363227d3d894cd6b2e543dc934058689d1d2433053b023cfc7cea6b937b6d42e90577ba82827b43d79bc3b0025865282903752d2df7cd6387212ad9a6bc59456845a2b36ad390b93f1a41d5b4cc34d5471cec124de8b0cd35266a2d92e5ce9a72a9fd235f78852d57c3fbd5fd37eb18735276bcc7b48dd7fd9ebb7d293a64be5a29d5d0bad124836d2c97101d1abb3bcbd8165af752800dc84f9a4d4f53c56f9b42f7774ea5603b1d5f6ee593f842c23b7dbda4d7f00cad522d68f436ec116a4377774bf0328a14688a3333689dc225880e64060ef83bf60da418381f0dcb8c8393eea6210335282ceaa49704afcee9d321baf5ec9b00ddb093c53fe84386015b01f6a72ef48ad9584c44f49563bf6c39f24c03e42446b4b51d816cd465e78be6bc5c2cda865b6e39a55a2945d38e5b94e138b0bdbed6e6083be2225c4ca9608a4ade4e249fd8d82d87ee12dbfb95d4320541a5bd97c6644bc44225d659157f2661ed570a0786342eacce7ebacdd081eb955dadb81c2a36a7ae469114bf2966791336811d3ad30691a41224195629c60119ac5af72e8d15ba5f1d48754eff495d5683883e2df11de40057b788fc5b5911bf81a180c778f9bbd08e8e273d4f626b9b7e30f2777d3d6c45d5b3fb46ce4139baad16814b8697d775e6eea3ca8fa5e4c37f8134204db72f67fa89e22c1a09e1c11e1d4235a3e49859b9caffcb48237e3d5adce0a7c58060ad0fac4181de58013d33549a5a2808b4b6a831c55835c4c5f8f2e7a5ea3b975f2b262e3dbd69c50078b1ae0fdf15deb4dc9c8ef87a81459ec3c29f890d4ffbe91fa4c78890c88dfcd6a16b3e898d58b18eb915043bed3e251242a315babc0873f8e54230ceb092ec5ba114cf104cd0cdcbcca7b1a1368ca18052c2202b47676d1a22820f1bb9318a32602329936fba94caee259a22536afa3419359a647cd842f7e2669c2667a2c682669ed55b2d82576b56052953c5390f653cb4ea5fa6c022daf0453684e8f4c2a08e0f4d4caa337b10bcf18fd60a31a069eca1afd14667ef919a50f32552220582c4ef4079a3e6bba01a52b613d580f9c6b197478b198db4608c1a827101271753cd15d874a500413e934ac48b04b6ce7d74a6d0cd043691497c9ac4bffcf1bc2b39610e237c217d812fb7fec535b6278d73b227b1329d39117f563ab0dd00e0a300a9439eb3aba5128e148823558a96a781be69baac44774a6c37e0f52082a503fcce0cb747113fa201b5c8e2afd61700fb15100d48d1a2d12a6e6f7700ff72e6a74a7210c8a339c7bed6a1982eeae453668603107cec079b0e61f2a3aa06d09d5a49d2bc8d8bcc0a88a29df2c0952e03735be92d765df189d2a29622adb734db1bf583e025dbf8100da13617aca78f4221924370b1ae720a7200f2861ec56b019474d4373e1281565b3f93747c30d0f10daf8f880790167195471d12d2e98e2a25e5cb489dde28750519a8aa829cc5531bb9d9afeeaca83af16e0c2f7f07b54d7d3c6145b15368ba9b6885804325e6cb269bd4cf48ae81514d932c59742af20ad02352201febd6056fb05fa17521360b056d0522e15653621f406ae48a9eb08aab6a0262220f782252f10d546a775d9459e2e8a9486dc951bbae4503972b3c2d097ba508e549e5c2c86f3b9548291c17a764b04673f151079402afa68f16048c5645cf521d3f7cdafb547414e3fb8861cdccb1aefb8571b4750ae6050f93ac12bc998522967f9d1c3a3e22b5cd6a998c73e3808ee70e6a13303059899d7a7e5ce54cca884824e32ccfe5a13af283f267b1586e099c9022b5cb47ac65f654b1c85979c7ad3d0a05933d660cee7adb5c2cd9a3fd40ad52d9ddcb5145959c99f03aa50d3b43d15602bac783fe9a6d6cc745a6f3d1e11eb75392b6a8709dedaa86bf2e16f95f03ec226890e617b3dad9972fd9513089e3e6d3ba456cf55d1cb3831e176aff798a7a50e6129b773696048d8d351430d13931f41cdcff12347ad0e9b9ef348cc95214657218b91a62838899df7b01478e1518910294a8f02dd1a30036d53ae6faf244dce56bc71b6ecbae1b2da1f913c24d53a46f552bbbd50bae93980ab63b6f0af39dbf20eab30df246c34b2a11f8a7b12a75f582537849a06aa4c9fb0a94fa07f0f74d6a01fcaff4ba7f555b8c04eba80994250038ccdbbf1ffee1acda5a9a4e838cc7ca2650c90409da0f136ad63c76cb8867269c415745cccf3a3f1500d5708f897dfb3386d396c691b7753b3dfd3663fd3a2c39a72a36b62f159963fcf1029b11fdb55c99ba75c0f7d0646a5258089393f8ea1799003b64b6d1e50b5f32cf376d2e734ab5a76b8b666df60c1644a2b39bcbf92eceb9e2d8ce4e4511034f73b827e29100891c9823d81d1ecf4320bbea56f41c013f531a9c17c0cfdbd860823542188f76d0167bf748103fecadeee5240b3adb18871f06b20ad52be0dfb07c56f1c212383ae3a2d7f12c75524ff2011734489e94b2933544ca1e6f11486a900cced89ecdcc1117fce8ff6b0b6fd0bab44d9045bc9ac0f8d1b42b6d68dec2cf03ea6bcaa0291d26a740ce59bb8a58affadce402710a63b24147ed86d030247c7269b22041843dc4d82582544941f51a640c9aded0afeca70cba30744657d655834fcfd022c38e608f418a19856424e18e4cac2161504f684664aace9451dc6347e260436948403973ac75a2c1051f314de607e2e4f5050eb0f38d4fb45a1980620cde5e8951279af8733357937f474f083cf5120101506f6104715da5654280b9e6f6d90d71920081a0435c24814108e180a24a0e1fc6210ba1e5ac37428ad7db2a6d6670fac592b9a47166c4d61afce068274e98d9dd6d660d71ed07e24c9f56a8c7a69d105239e85492857b6fc1ad6c33e56e58aa63eacc62385abed67b8b6880a8bbd0ea165423e06a7a19a00474c561dd54e35eeabfa7d7743a6ca9435d1e2f50f48d866fe6de2cc1562e9c76900bd115876808d1a95fa370d5620b0f6caca192037017d925ca6e74cb14680539093b049b91c8740a21fea04ef00ae89d3896acaca67d87928524fd6ac1188c3c9671dff45522453e5d4488d85699369a45170016fae2aff8a3470947e6a8d6c7e1be12ca11ba93888143dd98e80e2e0a7d9c4b56f0570fef669cb2280e4d5332d5b80f93fb1df21f1813dad623a731ba7cd76233bd50490a2286a60499066941970bf1561499e76e27103fe4a65250b01c2010a2bafbd3eeae3d741374ce9d892b24551c9b0da2cd504e26e44cddf80ab18024a3aed8b4be04b6afcaf24cb095e063f8015a08eb540ca5c8f3332c649615a6afb81641454b833b5d9354ab1c8794e35e6d3e612357313bc87ff727a0d1374e6f645c30a2229e9dbefd210175c0bfad12c7754172dae3531e3375b031a6a1bc1dd2681e9d1075e2ad4cd12856b8f4c96b736a5833f46fb751276f94c33d6c5961738a9e53dcc640f0c8aa02257dd44fe20554bad3a09a2e325e3aecbcabb4998d60b176653bc4d83ae842f3fd4c6ded54f4c23a37bb04031a9bb9ebf3c4d5e401bc160db432f2a347465690bac5bfadb7920bc9705003067ce61ec7c2eb54c5ab038a05188327ed6c2169f101abb8b538197909c62f11306c27a5ca077b5bff510adffd0c3c0e122789622e230aa54063c4db756864b6659be1efcb32db818c1b7a84fceb36b5a014efb85140a5ef1ba0c047e17cd04eff5cad061fabe6176d85d47d6440c51e35a4dd78c5b2844f241b9b02098ee0c2e355c0ea81611594644965d428dcd890d11c82548a8bccd3dbd07786f3a16154d196107d5dfc7985ccab71fe6963dc6daa15d475a865bb301b8c75b1f16a022dbd8643ab147ef8b76cbb41ce71b59d6fb173a940481eb340afc6f0f2823edb45732445a5ec32854f7b69bd3ad67fe2779aaa6dc8efcf965296bb15ed895ed16ba6e0ab3bce60a253ed4eb9e53fc5eda90b51e496cceeaefd4872bc97d3a08902c7bd351c04ffb39d206ac298eb6e88f3570d72ace3edaadbe78fb3de61518f6e8e5adf5f5859d948508d6f25c422217b66e44a860570a3753ac31fd9203137af6538b5bfd5fc2b7444b1d0b2c152f39370b8a5b0fe44bf6be11126cd6973f8245f4c1815943fef274ecb236875ae9fd675dd6cde3d4a5db0908a83d9b83d8f8be15b0d4f799803809c28bb47a0599810a495acafe6c047f305bb710f772f28f904ee201ff54ce64d7de4723ce39135b8a113765754743b44233c7065eaa029139159677d899b632c4e6b0598e417230b0a12fee68cd9005573118791173dc750af489213696f15cb9ac167bc14281036c6e83d8f5958f08ea275f833c4965017a4b3bbab3ecc9f5e743da9eb199a825fcb18cfab0fa6437843583145a82b44676ac88fa6923f217d23d002721444055832ac90c469e08c1f66d97d460e06d6d93cb29fa596d70b7c56766542ea87a31c399347d8c242d182c24423b0337cc485c308d0d0690e60e4adcfe228e9b9f0c15140336887c2a2ad1ee8ce24846b80373e7a3329c4d5c944f916b05861fa02d436c170b475dd50686d490f6ea45029cf1430156628555c1d07efd87b6819111d0628b960f64ab2b420adc7d27aca5192cdcb663f58a35ba46612beaa27614261cd6600129cc4e7a2f773812300fe87754d912bf5cf329be597a13b2d3ae0b3f1a128dfcf136ec73bf719f0ef2dd652b7fceaa56690d465d6b1a8c64a25bd2640865cc34de617b13400b248667c974f8e5d99aa86423fcad2d5e12055e91bf31d60863e276a93aee6424e17030eebfd1beeaab1cecc4078e8abc012ede3079a0745e7f8c4256f6d08ab308019c3efbb14a64af28a6d4f75e71b0bbdfe2a57cd869c33b7520f0379e929e6229cdcc1cd55e94c8ad0aea185e9b705a557967f1673463fec96235eb81279d43e129d06980e3a479b12bdbb4f28b05910e508e3b3a584858aac9787dba89b83d5445f138651122fc815977000152d6f7f39f074eb48ae4f410fc6b4264c0c5ea90b866cbfb126aac0d0f42affd0b898ac4922ed351651ffad44b2e58471f96e8dd82161c13a2ba25b2636903a9a471d38f503f03182f441ef5368d310fa1527ed0a1c0214033301a6261001ba946232d455b0c17a1d85ff0299268122554203593a4052774c716b141a73a202f3693041a79522f29a95c2d418d0bf36f8a2178bf09edfb999742c1cdf3cb792509d569fb618cd6be62374bd5076d4348b9864eb35392cc085bd0a37b95ea52944bcd8b774550ba756cb40cb5a3e6e5dce7e71508798a748cfaec62149a8936befe0d7932d0f00218a5dda759fe8fb973a88a83f481f22f34fe9387fab78f86efa675a073c014c93e203c8056e9aa7109b90feaf7d0581fbb24c9cfc08bbc033ee9077840273b292b4152731b966463870a8b5b672729c6692e8ac698d176902e92d1c541170c4d881aef195d46f24216044950982e8ac60bc44823d266948d57e2792a366974c58475426af97dd4ffec55470924eac7c190f5313e64025199ff2141cb587164eabe6ccd41cbc054e8348efefd8da2dcf314c5950bf0c35096718d3e74de1b12d3c48962eaa2df2e6bc221e30488042fb5ac52d0654111bc309466396a5420aeb99461b15a6c162045098f85bfb1be5c2cf4ae916f0c446fc611fb8c43b13faffc3cb7c8b105fe9efc042238f5d077923d3f2507fba61a84dfdda84876b4c4c72249d2417b6f3528c6919531b6c8577bf429135b60e22cf55a24df244a4854eec7f3b0b3b756bf84d50e9987af7cf8284ddf7c6465f68afdee40b13e5d84ddf42b759e836a1a37c76473b537f3d52ec62bac2a7694b36e2e60374bf57ae23034eb5d8088035047b81cc116cbfffc1d178e8a4e3daadad5d497a8c781e21d08d6f8a3801f3089d750d033169195d97fe27bbb703890c6a7656c42f5921826b19793cc637a7db1ac04f969325033a40004f726d1ddfcd047b7730bd01aa296a8e1a3e8377ef787be2f4a0384a017c25e46f2ac593ffa6b1133f1e41e1c91a28d01bbd69df1014d3f36c219a736eaacfdcd4cc9213dbb214cd607977a38af112f81b12bdae9546d9c513076e851f3b56dc8eca3b0814bc519d7ad193a750a2e93aa2e3eacca50b3264f9d0c8dc9c06592ec5505ce8933e3512d628a5d1411295f1d691d7f9cffb8c0230f544ac291071ac2fc81bf5876cb32ff54df6bfdcf3f150bb66d18cc47e004194041a8dd2b207b28265121771e6ed2a851c858179a9695175d05d106a9def070f1dd00c7b7860ed2b16f380d648779714f9a21370f5b78f147e46d68fafd75a9fe0517628f4938f185ede073b7b1b1817e5ddecc1c504c1b3120983a8e4591d0cf513cebc522073de85bda31126195098b58e9bb192e70672995069fa31c61ec4310d4f9b737724f74b43ec4c09dfe91adec1f7c2002999e4a9104bbc5bf98bae331dce33dda0df529e52d457a7eeca8eabd65b2ccba42574447ab7e590bfada4174316721388aebe130dbc0618e17d05caaa5d9070bab9ad671dd528e73d9d9249a60b8d584ca91661ae97a156e94a47e17a689f8683154aef93c9cc4f1d0481c8e40881fc37788fc86a007d088f3a8ff9a41653fce5a04ae09a51297aaf0dfc384dc74be7de9838a9fb026dbf3872a18111103c29f2278282d149c12428351724383309020ac6fa4ecbe9baf88205d5179b5558c3e63c8c41bc1c2c779d06ab6e7c6b4aacb5244b58357988704880cccf4ce78650fd5c5fd27b5252a11018202b7a6790cd176d6b7a2b92e247c0e0fc30664c18fd06d7b7d3dbbd7ee69dfb95268a850a0d4676e5f14e6fb09b2eb25e0897f7669cb4c35b2a98de3845081bd8dbb0e2a458e5d0ecd65273cf0e8f929ffb46ab4d178a9f307a5026254aa0190b2f61680566a568dbce17524e63aaf58f96830fe7054b4b6fdf3ff11b5a8a868a81247c334598c252f4ae337052ff7eeae45f4d01045911bb8f618201599df12a170c363807f98468abc5ad91cd9883c2ae1edcab5b50a6ce55bd97616cfd4b7558b1a7e549f985157d1495d994dd3bd896a97b69fbc1237575cece909a82151f0168ab365c2287576d05eec046bf42270aed251471809b214ec3eb6162020f3bf5666a7bc9d22df041f9e94d8f84e84858ee739666416f061df102d31c4475fb8498b0f70a4c5e9359c7109df8b00c827bdb68cc82d26743c8b07d860ba87514f54044a01b30b06f944ada3418dfeef0b53a8bd3221a4208899fb7e945efab390551e799933fd4e0aad9632934a237d4f629596586b5a8f9a15db8ca7a660d175f6d71633eecbc50c1f6a55f36266d3c09849d096bc6a897b35b12644526ae840a76ecc75673931987d60c78c3ee16c5a23915ceaa1b7c323c453da92288b07db1e9c9c07b49b7d361c7ae6f6fce84cb8748ea95b785dc2a31d2b7fff5d6b8495a6c9897e25fcad3ac1b7115642f0eb317e7a5053ecd46c84bb306f9776afa534926ab9efd277ad9157753aacb0e008d005bf5025d215f43621d0f06a71f70e7e1111ed01f3cf296c0cf98db383cd0a03b164f827d8a3e2a7dbc0419cc4e6fb1591effa775d5c9d74abd43ebb6448279f586400aae028bc9e58b86d52127658c30b27d256f1731064319060b047283856d6f07bbb0e1766454e8f04d3c53160a4de323296dcd0e6d1d2cd4beaf9d8c828f6b9d2e49c35b8f53b187d15ba4d210b21aff8af1a55c43f649f131b38651b023e2c693607fe75fa13aabf4aa294216c1c635419fb0e140ff7f4c06e57a736f2b4527f359e0911129dc36945c250574c6767da853c6c26496a415510d7d8df83cc63e5bd3510536f95415b6f6eb4b2273433e412237de2da484fc1b534c8e4e37bdb0ac50ee25d1143b7f0c9e244b0b246d1b659287ae7a6879f81dd14d11d819a01881f890a8c4907f2496165c29460594d250e5a7a38ba318f4c6b900469567b62ca5d32c7dac6e1800b2d4c4dcf66cb634551e3216012dbcd12257b0dcfd8b59bee496d25cdfb7d8afd3cccb6d01a51ba23c389fd0eb446755336f0f5c5ea6ac462fe8e4bdb150e594ef95ed0a1c5d5eb5b4e1aede8658225bc6dccb869960eb28182d4668ee1c364d823eeb55d0947a665289435ae897ec622413480b25e45b82b2c528229691102bf44d27eb646595b0096ad052a74b9caba23c0daacecd19b44592b2033a44036d4de8a08c242477806c3e83fdab63d9b5cc91175a2a82a9c018c045ecd1e0e82e4a112a6bf07b6692360c7b09e0a3b500b70501b2f74cdec9bcd3862ca20239e5ec840c5fd19f82fa50682ecae4425220c249fcfa8a7a57716fa4788ead57bbe7ed2f01ab7c7dd0aba2b61f7f1656025121120bed09845c627cf35ba8270c55d1150cd051c72a79bc15a27e6a92163018c21abf32c64d6b0e3495cd8c981eb12aaa4dffe1ba5cb34c090f24d8998447ed0cb9366cb79079e4e63d1ba7a633641a39d65f11aacd1f65cbcce96af8101f646a341dcd65f18ca8d090f7475475ab230e38b2ce3b91335e98c16149cc5fcc5339cfbbe0766c15b76cba763d0eb4c0ce78a782828d52f96a2ded53956b9a0991112631f09cdb07c56b42270b98cc8e56012b54f4669b28e52245479426fc9e2d69a087050d5f6093ac0c59049b9d37afce538218257573d65d5f41c17a74b3da0f1eeb54cf5a0c1ae5a01d3659f70e6553e0bd855aa002dd8306d862d3da8568153eeca60db22d19fd5005354b3b109195b2426385b2b961b2c3d7193c16fe0dece03d5741dc07515d0ad80a6718993828d462413cc880efa869a8a65919e562c7ef809a4cb223455aba023ac04631907b31cc49859228c58c75b3f9609e34bf706df9a22bed00577a318c8e8697b914213422bbe768062470a84babd82c368ff9f0cbd6a7fc020bf7fa0613b5dad99cc8da4d100bdf237ff9d306d945e0f0b21b1f3370f094ce9591d297ca1ce03b5e158c3de8e1436cef864c68829f55d0b3d77a4b87ab2e50298aa281da73458d75b709f8d4d3a5280966b09c6f1fa108e235b6020da365ae3fde3406d2648978bac4b020ccdca5eb780bd5be9b763238fd18ea97ab1691f3b1d4e1435cc693710c0e31487593dbf9fc8e386b192c22064661d33c697423b74690eadc5be47386f40ef9dc7b1471b1b0afe0142a1df58aae14fe986969b72b4ec404438f21ad89b6d1d0705454d578fc322ce621832282804105e4620a34f4cb25a3b82bfcf5e6dc5fc4537f2641b7c8893e724aa85d286954c02b3eff3469e0614d9a5d2541c9a0b0f62fb7afc2e42e65d6ae3482f43dbd48760d25a7e1f4ef13c24ae0807fac535320aee4c54eb99ce4b5b21713d9c465282403aa542a1d8570562d6245e6f1533dca4ed1585b34d08c9512f531e6fd2354f48404616b2235d338d2d1591aeec3dadc8205d58a1968462d3c790e7ec0454a3986769c15c6b0262bd824ea82512da3712deff81840070a1016c790578dd03c058f4c306f4c81486002ae9d178a391b624ab51d82742ace969529b30181d3e9a505b83b01b71a839d2ca3bd22c3ed25ecea35107d4b9b1f4562ad9704e0dab24086e80b0fd947432efeb91f1adfba34f70b539be5389a1d3bc7bd7c910362ccbe9ced031b6c6c169e8685be3d2d8d02d63e8b4b9c9ded3c697c7a84654ed211fe06197406267eb9d78661a996b9f2373295fd4572d23e855b0ba16bd1df1b3286d626ea0ad6af062b6317151491ab4091666cef6ee05d006b900347efc1ba681b6dd222565652ef7ca1cb5f0a7c87ea49cf13f07b2409089041d0a74e71b95994483058e9850e85851cde71c4d09a232815fe393cd353d167817ef78329e79a9a86fab2a1ca35df78ec7e20f87d157b28e783ba2f1d297b6302c400dc799695adab3d0c70c454dbc66392bc98e663750d79c314eafa766ef634022af46e0332f7f075c1fb7d4a3ee8ae6967d6db86094c01ed449855af4946443edc15e3c129ca7bf1f07040e70f4f68c021c080ae297effcb69f622d0770608bf558113d64e567a14931d003cd6a7b9c7539d12aeadb49ab977916575b247387fcd41aa5b55a3670f39479bf9acf56c4a5ade4e4561bf5d6047cd3e1ba05efb61596ff5934446edc6431e77651019914b22952cfdba34c61258ab631454c48f70a17cdafa83f322b6dd7681293c11d529743587b44b98ecf87b3d0f8e8a9b6577d8dcc61a011476d8a467047a21e6a5fa9f19cb1fb75a45f3d496b478df84d855224a35c57b3b474399597f0d884386d7827b2e38243b3bbcf91d600b39c086170e95874b3c5f6c51ba90b65696f0518350c1358bca99c6a67553bae173cf9c3f4e83f8f36ca3332189b95ed39ee82a20a15322270bcc561aab4f10ce8fcdd9276465280c444ce9a05bbeb9af6d1662afb586bba8b8b27e0eb94370cef58f9c6e74bba2cdea5bf55dbeb688cb9745d3ffb0c716cf34c4a0175388a7a9ac483737c2eb91c60577dd859a2c40409da044462967b2c7e56e58a7a01031cb12535aecf473186fde72905fdf9470a14e9a05c3db33b1afab4d9cf875a3ce294461fe7b1e7b79fdb6b093b324ba02ad32ef21db200dc600d72f8777b4625d91776b75e2f9ad1731b6e37b61fb3641c840a3192c6a4c02b5b23012cf202f1e9813476018bf073a1ad6cc6d8ca669dfd363196a635e9217af5e350e631a82b42cd56643f30d50ab3883094a13c736c7da1ecdc19245e38ea59124e6cd5b9c53f427134ec7cfd1f6e7949d6a8a9e679778f62997e4bb27e46d2d6f4a731afa6abb991e538d077c75c7f6b99669b19d70c74457e48d34de7578c21eb7559f39f697b373d36fd08ee2b1d25b54654cbaa39ea9eec55713f40b60c8a8c05c5b90323c7d51d729544d581deaea3c3eab2a60af0c801989f0e7ad7e57061fdcc63dd8b1b40a583f5ff809af3b48ac1b44019db503db65a95ed6af4a8bd89f7c0aeacac28a409254f6336475d1073aac12d7c3c377befa1d2fada0bacab77b11d789b25ad65fdb0ae3d298fc86c97e0e514ef26a70af281060328b996a5d45111f0b2f1b15843b8ced893b70a8fa15c29a311bcdbf5e10ed798370f1eac607b7895b8862101457242a201664b9b8e0c0a58bce7c91c2977c7aeb881d8d56c139d729908d17d895ebb62b675521e437f96092980a65e2366931be8e554a8c3d0f755fe90a72a82076ee07fc257fa980174f81c8098cd8dee9aa3362a157c619d1bc8462a281eb1e89b34d8cae9e54fe301984b8f9412fb8e6a67d5fe89520ad124f1b9df7639520409068a68a33ca060552e398d19c189fc0e552ad9ad4ea1196a5cec71b98291a3840b3d30093faad19a01d3b9c14dcd66b3b00bcf6064ac61398e311b2ebbd8c8416e501e2cc6d2448093e022c3956f3780f9ae8f125758b121f9ef1da098847fb1c8e57c3f854fff8b15f78c13c37f85df4da1e717f76f993e5635b7d09e46dc4890803668c29d462c1da4ce2665511b62e2ed8d9c58ab6a68b6eb110137598a211ab8bad8e06068ddacb4ba56a24011ed0ab456ff0693e9c060bfb9a06ffc9507bfc88d5a7525d0489d17158da1b5ab4f86d25eaa6d6647db50641d69dc0326658735b3032ee14a41c7aae6347c39238f081fe4515383d0ee477dcb17ebfceee54241919f64c8af38960830d6ebea8d0d154e415197ad12ef86284234987c1326830a25f0c19c11e7030d4df72654f1dbd60e786e64446e3f7d1bf04015b0297d8c8f0dee282e01776cb9ff761ca5fa76e8f3c909e558fba285f7e6a51e357e5088cdbdc51cf676a766d6010be2feb637154a5335dd571840a011524819d156d7e3d3889c063655ff0fb11fe8145251436d4d514a278cef401fa43811553d385380326f0b940178fa4ea9acf475641ba4748e39c728f9393ac10117fe8708779644657e0c9cd61f25397ee61113cecf611acabb80fc434cf187abd9d02d5c2d191519f808e43865c7e510feba36f48af73c1ddbc6c8eb4f0c4efc4f6a0281cc65547424595c3913844dfb9f66da63c4def4e4f88aeaeda17a6bdc6afd823becb4b7ea1e47ea7aab996bcca7c707fc1bb94c23f3d62e7c310fe5adf1568d75ca52b85944471a5ae5648db66d95b79ec048833142273a35dc0cc887f265413b24fa42f828215a67cfa8689aa061f4c00728b8d3527692475fef581e0dc092660f20b2f2201a013bc878780ef2b89c81dd9df6c25c0fcd633dfcd435ad79a2a074894d24d862e8406b24139fe3e35daf6c10845cb05bdc56a363d3ecf3432505b351d3ba35af9753e0b1b06ed20698fb1501c529be2f3f4f672cb551b4ee712ff83880476b252168c3512a9518777af2c9b750d8e0b5609d7801c0ae4845a4c334f10d64a89f530da3638fdc8e468199a76efd2a0d86df38684c850a23c569d921b2d1e5ef090b1a98c293ae9b4900d1fd50a2cc7ab690cb6f1cf6723c6a5670c6a26d49acd76706b1b140e0e50d4428086943f11b2cd10e8b016778310273244b2b8274da2c5872ff58dc8a03050b1ec61ca97c0f2c243f52809471dc4a16487d34a48311f99147fd87ea5b15625e0cb5d40548d5138905420c59efcbe6df3f68df76a5a442211aacd1ffd87bb30154b09e160e90b29019f6c856c47d3c7edc5e9b9b00e7cca7f4c042b4cf12de918f6fd91f8786226b5b344cb5612668fca91678c616b17244117d648b2eeca4010076e1b5ad07ef3b4fb1f9af06425e7f0a96a495a2e1832fca11cec0c73c937a9707033b5740d7a6f3940065959c53e2d85a28025f7b04479f3f37152284c29d859b28311826c894c916f8de4da2779e793f2023c16c7b1efdc246e361af27ed840ea2eb89369197f9fe80766a1b80812b4cd917c0c719ec057a7102a7e0e95eeb304a9ae64c51b5d508ac80984d14c42bc9f5f7b5426ce3a56406982021ab0e71c3a6105676cd60a537de960e04c5b66421ae50d801374692068c073792eb8c22a5215c2d68ef21dee6ea8454f020f98669c34b39d51ea0fbaf2bd71434800633d115196052f6959b33e3a4ef46c6799b57698bf58bc3e7ec4c9ed2dd522c406161314716efee0bf5213f00bc2d735ee71119da4ab913a4d8b78087c4a9063c1c295fddee4d89b49cc80d99dd6591c415fe91a53fa69dbb9b867fdd3a050b04a0c0df830fec674e5fc1179a6fa3297d3b216f43624f669696ae9ff5e4e4cfdb050d46c8104a1c103c87df85d30818b33a3606525f41d50d6788801bb2486b7a80e87743556b499ee7ab03523ca96076e3c0e7440223d17d6dec7c2e93c2526fc251b7c67cf0602f45ec9fd7956912df526b2001cbf5694ee9c4ffc984249d2a6a10e5fad0cb10aed3193c6e4e964b59173aa5fb6d240e849c2cb836aa1959c78bfcf7a71d52904f52fb458fb67aefa4f37fbb48f854ced260a10fbb539b0cb60404083de50b234c09c5c9f4a96e2e1b35e071de06e9bb5f0b439ef639917ff7054fae85f7155eb8377fb1ad47d2bcb71ef7453344d06b6eb3d7086fc3df7c0e1ec7f0523be77a597842997b3dbff6de2fb2fa10d9e3353cf61ea8971b37a9de23bcc007e93de914bd02154b2ad9bce70e9e867db2b4bd78aeb3d2261f0669c1469f1267b3a77da0b2c9e53e1d1c3b64de0b72c08388cbd50200dcbab796321a9a7c44bff32cebdd66ba6177cf71e08c182fc2fa6beacb64fc316530954a0e8a750f89ab6842eb0cc9655f39b3307927ecd07517ec9d1c3c8d79a7a3c41e336334d571c08750228dce96fe03672308eb96ae4d52af22aa991752e8fad90304c043aff270c15e78e2050d000bdfb2090001ecabf92a1701403672dd004016eb610a00a8fe3cc6f901feff7d344319cbe1ffdb1b3efb7fc9c6cbfc7d44ff4f72aadc56679da29025d2a1ebf36eeb80e0ba97f8046a7f2b9e9b809ebd43636f6eed6173c3e8fbb985cfadabffd75445e8c825e603816b8452e83d98e619aead8e8159990a30a734382ad3f671f93779f6c1865fb3c815280a0468041c4bc81cc84098c8508c09f0440fc03bd9afbfd8c1a15c1081e0212eebe49b0e132d4066954e49bc7b7adc32903c245496f06f66e30f122280ea48225586fd6f78a1a7b4aec46bfd0f550dc354fd2f32fd0fee2589d0ffc61c980d266c650a2bbfd414a569e57f2d88b68ec8ff487b0a85189bbbcd5a39fe9784f82ee27f99db199a360e8d0bff13364e80ffd15811df42f06fb470dacd8b89707fdf7f0416231eba7d749330fd61f9beba7aa1cb015295a22fccbf4f5501db7f1699854b56f6c0e38fe2074efb0f7af1de39d40b04cb776603124138210b28584304858b2ac70a8245bf87e0743e7d8760ed16af3804dbd3fd16cbd9100c566fdd72d9cb1bbd6021483a8186fa2229040b8f7542f0563010d13b8684e0a308c1e5c7728310824d328378c2be97fa43091a23e2f7a30167346dbae9f2213b04a2e68320bd06b37c07417593de20e892918b82c620089d3c30ab1f28541286959ecb1504b7fa87c704419e3e81223ac10e663ef579c1247cea9e4309a7de99ebc3628cffe788eaf1aee0bad7cdd51f205395499861cdff6d8887d1b0004cc06f2868c8941859dc498f3a8dc65f8147c460c5e698b7a3dcfe98b9e4e868ee7f9b9ea395ff9f6df5eafb627b56993a7abc6f8e41efdf4d1ca7e48dd88907eebb033b653631eeae4a6bb9d9614489558fd0ce0fea10d9419b2f0f59828302403dd76a5e9820f5e590b9d3827011517946e74e0faa9edc5b2da607c2a09a35af1b872de2bd04c7dc0b6f8a871807e11b7d52c979fab55a1bf7440af9631a56c43395e1f50e9b72e983bfc256a71d96adb09e569002a5b58098b13afc635593b6f89eb908693bddb1fe88dd19b15a2f246423a8c4a448887b5f3874cb09cc8a88cd5b2583890d89e7b604f55534d8ba06c2f7b327b30f135f4b3ce0033af344aa16a97f2423f2ce6131720891bdc57c6791ef3f652aa304c845a17aa79ce7bed2e3158c63b774991ee87a81aa54031e66a8dd1bc80a3c86ddcc3f1ee15dbda0dc0de1ef4628b09f626b8c7e7a845318bd1f195198f9d3b08585020c38ec4f41ac352b281b4f71b032653259149a014c66b3da5603fe02e9db83b029168ef87e7da65629ab53849bf867bef9094644c4b7050bcd55724f2c02fd99dfa8cb988b41c88bbaa8fb7368fa7111afc028fcf42a00b33685d76537ea2ddc5c30d02bcd0b7375cd266ec026e8a889d9f521efa2869e6df436985068de55e5729e4d186d19858117233c05735b9d07c9c267d5943f398877dc340d55bafe22cb4c64423ada6a84156aa846fbb6ba1c65621bd462fd5624c7f95c8f3baf5863c091dd3a65468c6246060d9827030d100b8864fa61218960b6987918a053dc66497346a2da8e08021121cb7b6e9456f9304deb4557d52f78789ffa256d7a1263976cd6759933b2928a3953e62bfac828ff14ebe40bbd50a65fef9468950b035993c958a9ecec666dd989a99793475b9dd15c6f619da852db3859680936f902153419f269b410d93bdec5302b7f47cbe826ff85570341d806c4966b0b32db10442ba0979d13d2b0f368253ce17a3120ead9d0b8e929449e4d690e92638d171872e950be2a08866ed1131573c5f32737d1be94b62b0050ff76d281bfc20f6bda16b30bf6deabe9082477ec97bb2aa93d045a7212bc7d920f4cd0c9c511d394db1ca481a6d2a7bb463942b6b4b3f95f03c1b7cd2eb32cfba0de58a0e3fa2694f3c5e83f4042cf6c046b428057f8ade516d0149a640cce0435098c6392f029e9e5469e6084676e8e791158bb465a1ad2c6870d23c1ffc9b56e4c74b7e9db4651ca0581e3f0a9533077e838280ac246e5b566907cca14deed2743f4b9d166e70e0faaa7ded45503c5e53aa39c024c4be103f8c90d0875c9cff3b929e673f93f20709433c56c671533875620c05476b325a80a63cad9ef1904484bc33b1a609d14a8f2c2ab0233ecb929a807b15e171c9bfbec9d20e2be18b6ac65a96133092d6bb5579a55f4b5f333d4368165960ddaac0635f2dd943426dda3e1c874fcda03b015b90fa64da4295ec8237fcfb1d643a041a1212a65fcd4e0b661c3a0b86bfe88ab10b0d453133c035714fb3efe2b7b111182a905e04e7689d9df17fb68d8bcee23e863f2fda56b304b265853bd9c20b1a7139024e99b5c22287b409726739c6cfb38b8e1a783b9db2d43593392b6963f6b461729f714a0f49c16fb4206361e3b1aa2edec7190a0b3be210bc5e9001c20985515c8118dd71b48455405c145fc3fa430c104ce05d5e764cf4d00a76364da51a6090cacf85f85e308e178bb8da856b869773311a2c8c70fc63eaf26102eca77c623da4d60f9e6546658dd219ead73b208e17a5f1294ebdeca42b0a89d503d4c9cf0dcbbe10363fccc30d0522a2f7ab33101ef265ebc883b92a003094cf466016f3300c4d51d46aea482c965249cd131a20c84cb1984f190e0b09e195432bea8bf38b24c597e690c0382d03da72037438e69017528de91f6b3dff410dfa6de87ddaab3fc7732207d71ea9818c3642d4a19507cde4561bd0a0199015a389da9fc486c67820196b854ea634c0f0ed7f4574a735924e5821d8454dd0679ce51ab0fc43346b37a75e1b34212fa5fd318b8c2ff01864176fe1faf2fa806003c5fe2bb00382b089337da40316bacb2c8020b4a3eb85157c8b1a8503dac847acb75bffb113493cb882a9bd2f26081c494cddc489772d332709247b41784c837d2bc809b88300867872b1f0e0edc4cd9e4001c5cd2ac444273a5ef7b8a4f9d345deaad86a0af9aaa7235ee6622d1610de3c7917801711d8973a6812ec3484d3d1137e729d87bc7929f8d286ba022c6baa34af27b181f84a8af801cafb86c79e159f276c65350a70fb6694d1de874eaed432509cfa8e92e1f12ca5f24cadf9acb42363cc3bdcd705be5ad5f16de5ec9cea5681ae806410cade4f715bcf64ca9dae41a3fdb37215ca632af35a3eadfa78451a4459234e1412d58400025a574d6acdd7845030d451a32e3748c89cfe0c2a9086ef3f74347548209e5c853d0fe1e00f4b8ec64c92b2c89f7b12b391a3005c194184fc1284df975db29960e8488085d0b2fbf212b87b9982b36bcf5b6296fff86d946a85026767e0fd06b6e496f84fa828f435a58c142e391c4c28ff9b1e0668d247e120c166b379d49b54bf5760d0eeb86445446d81609a51e9d4862cc003a57b2989125a04c5480c03047ced7a418e9957c5ea9047ff0835ba6be59109d6587a20a68e17c57474295ba6b7a8c808b2517a34fcc903e8d87249ce3f2e4052a565f5499f8c9aea5e468bf8eba34273d977c811784420009d28029fa5afffce846f3a6dcdd83a0636c400bb386d5925d58ae53f8cb68a57d4a054f1ee5d1068714b674ac256f9bfc455636d1bc046d98c09d2aa15bd4d39e7f8fa3ec381209fa8784a7eb3435b6fb98fcf7486412ad5696a9326e1081d04f19956f79aab132a7c7c98542c33a2c0b48c6d57a2fe9582d8ba6c61c44db2e34fdcd743e888214e4be081a3dfe8437d40cae89be9c24932a3b5b3a907e377900eff289a56433236d9e9221a25880a06030ea7ef0ae37a0eb336677f266074b37f3dd32c9889d0c41b59326142b5eb414dd0654d7e1537bd3c6bc477cd2eb74020c8d8a90eb5b8559c2f8cc74ba640bf0b995a995b54211980b9c814014175a114e844bda2d5623b6a9baceac12170e0ca2a5c8ce5193c71be8cf19a1b4af3cc5381060864394ab8d0a1f0885c6715ba5618cdd9119f779710aafdfe137dc9ccc3aa8349a4b9734254d37f791571deb329e0f5e2fc19ac8b2bad37b7992328b863469670c09363dcb86ac3d5e679e6f0d10ca8c390b7e3b575585f1859a7570c50965d6cce2fb11cca368f406744fede42a457d25c1226244c263196e6a89ffa7183cbc267588dfe900103cddad534273ab2bb86224065e3af4dbf566ecccc26edc65094ffb48b4136d00f33e7a721c48e146b85f359065e33ea79c4c811147385300b5b9fdaa36a4443c0730c2f7282d42eacf27f3667f35358471760e2716d0b4432188130d06479066126d20420db5d57a852b4ca801ee6cfcbbbbeeafdcd7af4bb9502e62a5050c19e55ff97e2d2313d06bfc0c5f4ed135f9ce84ca2cf2ac098c405e1f93507a0b9a11551db913dc8270964af644553c44001c63222af1770b263198454dd68249d51de9349a6e92834679e5ee80e566de471b254b881c73048924ecbf93144bdb7ea6c5762713b5e7500e0dd34095cc2a59ca77cbc7410b5a19f9040e35eea711403d6422415213324eb320d1ca1a3611783d0884cda86b142464ddd047a0db4f1b3c2b362feb3d2ba4ea223bb86cf15aa7314c44f219fcbbcbba8d83918a41adf29254d305da63d103c71d0b76d0b8e5d88663d77be9c25fc24eb2eb7ce310780d81f53006360f143cf0fc1f9d15cf5fd656cb18adb6727308dd626f28004893990f86464dc41ab5bfd4e5af46488e871cb1bd381112a016044ce41d0918f348edf6eecda7a9d4fe03517fa47d769cd6535cb210984881396822e506bd26a8ba03dee6d9c47db332d226a8cb0c26df0d5bae768e1e4c5cf328ad50f381e0056ed118187b3f3c3aab981b7876348e462e6b3f1ad74f3ecc33400dfb82291c9a9ce7106c66590026259c61b1b23691a2f017fc61b2787c062dcc88853d377043a4f9c50bbd7a6ee0bf4acb4170e9c8096da72c19e7a4f820744ea876a7e0fd5c307a1425345ea06afc8305dc0cf27cddd27ebf1a2fc838cd87ec781ae6e760fc256181b6040241b586e246dfd93a74fb404eccbb2cf9ba98d630e66298bba0a431b218d804b10a4b060963f0474bd9e6911a206b115ac2347dc4307982ab15d2d89bff4c71f22002f191349c65bbe353019fa68b0676d34c4dd9b9ddd598d5d0a7da892ccfff0aa5a646de7c0196dfd3f43177d42a1e8aa9481d1506c951770794fdcd0bebf645db89a01943e20d79d4ecfc414eac4e0eddef13f044ea2fd9d1b3706232169a1e502ed8dfc1bf96e49f75601a92f3f7cbdd64832f526bbaaf61d48b01ef49026fd6e5bc1434c82cd455d67f3a69c8981f907aee5edd4b1dedcfe85e1c36c0d357e0e887f3d8d69834769232086d0f588ec0467ba8a2a97541f1155ebab49c5145ec0caa17d8ac123eaeedcc7fe21f13d9ae758f5a56dc7b4d17399aaf140d90ae68e1d83ad1c861adc98a56cb46c6b915184707b0656fa979c3b2f243b19b20d1d7e7191ab31f3b1480eb2d699353899fd00e7744963a2486545a4d8b459566631d098ba37dade7e0813ffec1cfac18c596058559980e9c7af2a9b5b3439269a8c69d56a7474c48567fc4b680d63da474dc10b40ee436abccd3c964040aa045a017dc018c06eca98c51e4d6baf251ce62656fbb32aab76513a2059ecb4f3af745c9a84b174bab1f8d9acbfa1ecd8c849bb9cfd68f6d6c6a8594c183a9e72a671eb7ad97831ea54f183965664f4834d54442f0e94dc1d6b758e2ef41c5aae2fbbf78b37a5410217c5aa75e3c1e1bc0b18421d8947f7633e6a3156438e437415c19c3e04784c84a690b27b39cd1761419a10708ff5c4033fcedeadbe9147a910a2340ca21d892a6eae816ea3b77cb488a018281ae9bb3e79838b05de6b8b3c45735f07fad65707a89a19bc1d80f949929f3b9d5527540fdbb81b966f7110ee2544e0513fbf1e6a705cd810e0cda2684a45250380736835024b8ff163f1441c545014bab05cb6b4f3c7986b382f4109ac6664145142383004fc7f7b319d35e014a3efbe55738efaba4a8523edc67b33e24f2a2bd550fcfbbda15f37c6dfd92b7bcb142f2ca2ff0d46733c2174b15bee067c57faef2a91588519645153afe96250f3a7ea1a6a58862cd60b37c6a67a33207a23fd4d3cab174fc70bf02619e371ae83718cb28bcaa9e81038ddb7082c2fd9043674428a1418c16c336b160566053bdd9d975217a1d43a2882da50da950f6753319058b37527f6a814407dc8a591dc2a64d0d3d1acab0398f7675c78594648c8c42ff6a8b50494390ee2ea14298bf3629d8e2e15e88ef65ece44c04e0b9cb0e7e823df9c06f1c5edacf65412fb0578e43500adb38a690021aeff9388040d87639117ff3be0a20c002006833334f0ac499fa7b3b48307444f508db049c756fd4f7c85cd0117c2067ca646759472bd5bfa63439f4ec461401974d9ca74dae576aa434796f7d7f9d205ccd8265d1e4cd7e13fa215b2884cfeb2a56add9c5aa7d231f7a05acd75d418d0fd7fc3cd3501c7764f2fd537196dd9bd188539caf673c9bbb7f092c0ac5d94d88780f0980a6d4cd84c6c9a1f79d2d136beacea617aef9be4103dc3f048e5384310d53205e55493af93899838631926b98bcad00123ace99e496e96f9e677d1ab1f60b9da7f03ace84fed6778c62498108047889756e718a1354a635bfda65b579cfd5ef45fc69693ab6b5a4914d36218490bdb7dc3bf40df30cfd0ca96c68e3d986b01497a14428510f3d6d4134a86e3c110bc282b09f20d150d6c32342519ed4f64387b61376429d0c71a9dac3d35c0f86e2b01e8e074b71d88f68481494fd4418fec95222110f456d29ed5487326ca85614c7a54e864e82b02051507612fd643ca2548612f5643d22549612f188682ac230edd97a349efa5383b27aaa5c10771294fd405136b40dd1d3164479b61f8ada52b467ebd9505a8fd6a3a152f587fe68f5c40d7141273f27299a821b8a066d3c74683b69a73aa4f1d4200d557f6a4afb8930aca5b493133774923ae9d17a604d61a78a0d555456e94f3d69294d0b3ae139e139e93939693f5a10973a19e24e82b8a0931f6ee82475728a273d27a8139e13170806ae27cab0a4522ba7d4ca69e5944aa9fca8a018e8fd3c9f972242b4558dc6944c4a4aaae33aa6a4ba968e29a9eeddbd4001bd9fbfb21365eef92b3c5186c6f92b44a2cc8cf357505146c6f92b46a2cccbf99486b59f617f38656d686868a8e505cb8a8aca1bc5809161570aca092762e161e189307cab9a12b2a4e28bdb712d2b97c472b564dcc54437b270ef284806ee7a91f177788a323fd078f9fb1251e6879f741a7f1f4194f9e1de20bf5254e0bf27fdfd0336fe213230c4df107f55023648241a345e5e64c890714d325e2e03260808e67e50a711bc5c41320740103fa40b2025c4bd7eae09070e217a2c928dd7803c000802860f040d12c9042d103dd76906ffd81f865e0ef097bf0873019888f8107cc30027a2ea91b9012e03838031f1a987c60c6b0ddd9f989211643249e123e61fc0015e3ec4a1fe83c33abd54cf0b11d7340d704d2603fce54299216e80aa001fe205602b480004b81027c0001e33800b0088e70d059d78204f0aa286600fca00d7344f430cf117c0c687a86c1c47b484b871d26f1040000310c085f8992718f40387aed3a987798218c533840d1b3f8e6b8a3c0108c06d0455351e80d73845003c882a45823910bf714d9c9a02b8249f21fe4971d0100fa14e3f91a73ad9b82619148000fcb7c635c953008200020007028624c485098aa977574f7c6705c5a07716cfd0bb2a757a37871e00005c93e9570200886b8221dd19c495289e77f2e705d1b06e077782e0cf8cea76f0f4c3297b9974ecf9e1766fa81fff9d44fd95ee13eaf7cb948c8be3e56620c23c56411dbe1494134e745a098291fd056a43559486a228174806eec58f554196173fa3173f315efcc078f193bdf8c17e564e9d0a4a051565565aee8bcb7257aecacd62e51465522e775d1c770d5d67e161e179ef56502b271514aba03a15d4cae95a395dfbff627fb88c6b92f11feee888203380b841ec0c204e03881b64c695a202333ee33fbc5c192ff7325eee679886a561ed65bcccf08c1f64bcfc20e345c6cbcb7d818a306cb11faccbb059701dcb1be25a5ea0a20c4a10ca0b14ca0b14ca0b14ca0bd40bd40b222f785eecbc3831191a7af9e1e5f72f6719c20e813896a1289332d4729621161e96148b108b104b5094b9412c4051e602b1fc4499fbf312440a1f32fe729f2873af89c56744811796549409f2725952ddb1a4585251662528c2706a8525b5c2925a6149f50a0b1c03d7b1b01c79e9f9e132eee85a162351c64ae1e39ff17b3e0b2acaccf80d22e34a510119ffedf92c44a2ccaf69c665c860e1913143c60c6beffde1879797cf300b4f949121e3e5190bcf0f2f67e1b97f61e1b12f67e19921e3ae04bdb0f000711dca4a50f35782a24cca4ad04ad04ad04a50b61294929282f2ae77294343f04a713e2d3f1f4a49a5a45c29cea7e5e7a9534a4a4a4a4a0a165c87d21384828282821214dfa15cc15def50564e2ba795d3cace0acf0a911554f38a91e6b78c18ae400661080a83501886c2c0440c2731ec8881e70b4d70d142f4fb82902121fa24a8230d030a6ad1491aa805d75554507c2930f0745751a9be702ce1ba8ac2c106aee32322e0ba0ba8e32397993da7d3e908a5f89f25ef678bf7c3c5fbe9e28141c803030c82a0794274d005c4312ff5a3a4e32f251c03af251d33223411e09ae0ba0b68041cc38fe71e56c28bc974f08620153ce5bc9ccc570a7936a23c3129fe4ad2f1315c575149ae1f8ee9ae9feb0a8e21001094a7287301f1cd88dc70fceb032fc77b3c085e0c0685478a8f4a5a09d9dd05d4f14ac82927f37d4cda017bf6dc01a117b80a4535c231f115c5312f15869f283a9eed05c4a4f8692f25cf46bcb4571093e2bbd811eebdbb804e82b02a1ce1d42f650421dd89788a00d4229e289371a88e9509c3ccce7c9e0d1870afb71315f15c46443cd8110d7be6f3730171412d42d6d016b80e3b529944198b0891ca24bb954965821d8932db575e5c6247aaafd894bfb028a72796b3620a2f38d1543ecb27c20045190b08e8e7c7c7c722420411d7c5712d2def2c22da9197037604da6c4db9414e524eee462b4d54a9a5d5154b5bb129af2f2aad4ead7e8663f5c1894ca26f1789081381607cbb0de088d88820b5c47a4d97a93e3e4564e35198a0402114280481a08f8fcaadd7048f4498931514168e48dc79c18489143e568cb4c850895f5969810143be882b9771555a80885497cb31ae29e5c58c2bf12a5fb926a0b8b3724d4c7c224c6c39b2c489508c1d193b570b89082612612291d1e8db1123289747382626131ff9c08a8c9ba291949423f79afec2a7e3ede59d08037d201014824c7827fa4498e8f34dfa449819d72403250ab19148e429d7541d31f9f8a800c523118699c49d48241a894744af570a459818bf6d42403ea6b973822281a28f24228dc823d2470289b8d73b994498c8c4d4021461e235553b924945640a09cd39e714aa5ce55e6fc524c24426425bb5b3c3c4c8111fa05aad9d0853e1914d482477b849e484088ab5b31911412222200eee703e1c93132627474e844ee60eca13426123281108a5934c3a563bf484bbb8164e742397116d87eb1114280c1cfc0f4f430814655e2948688832d1e2b586990fad4ca018b82186c04dec48756b174c8a4c9814af040ebe833cf1d2c6c70b28caa07c7b770975fc6524caa0dc999f786c279edc999f999f9e38f36364bb333fa8f8f763848708ca08d6c3a132b6a1448b9a8cd20e528310423981be10345fae50bde897fa4214bc8397fac213dd5dfdbe30a4e1e5a55555555d58172a429876559aebbab0cc0aa094574d19193e6b7b17122807d9c0c570ef9d944caa0c9770af5fca8a240de1e38dedfba3014b50062a9acab00d389b77e27e293254d1b0e1b9f280a753bf536977a40fae24ff6ca7d35dfca826eb786f445d44fe65d138ba7b4dba7bcfbe96f6459867d9091c3cec7af31baee3756112fc09ea307318aae0a2e52b9997e4742a51c931d5df99d874ec7b36b48ade8e35dbe5b4b6557af96cdb6e471f5f8fd9f76cd4db698fafa1bc663b9daee46de40552bd7aac3ce4f9763acd7f4d7554df4eeda846beeed0fe9e0da8d9cd8ee42bebd8cd4e5fb5cfb01784eca8a7b7934d2303b97afb7661ad915d6db7d3e9ed9a0572b5a6dd4efb8f1cfd9e0d7a4ab77b13bbdaaee2215f2539ada069f6d7a4b5fb9e8d8e4e7adfab813dc257f0f46c4c3ed4c16025a40b4a1e0cfa5809f7525da8a2e9e1d5417d353369de4e277bbc666db26b3f7c0b931e040ebe6b71b967d24c3147c49c5da0a2b557a79ab5a9aebd0b5170c189e6aa83bbbe06c7d4dbc14ef924757dd796aeb5d694c39b92928275da0c5f95073dbc35ea27caed48a493dbbde5ce1f38ba9e46b53584c0d57734769098345f6f8d8eabdec55fef7068af2c0ddaf8578da08f9fe11a3331dad79aa557c56616077675cc76d5afab3169deb236d55f53a8b5f46c6198f94783c4325c9a7f413dc32d2e87bf3fb8f2c8b03002162daf86537038b07f54179eaeb58e085e7dc011693089d4b9347734a2955b4035ff3ac7d46808c417b8ab71f0494f86f427f39627d3c23d19ee7a3257847931e2681c7bd802cf164e3e4272037c5dac052ae29128037d18065eed039fc0c570918811231cd3c5233d1cd3419fc8c3312fa505281a3e3ac131b1e163141c23444321bad360178fc026b80efac097c2c2e9c45ca08f060caa50d629861584f2ae422de90ea652a8ca49ac22ecf38815348fc023dcf6794402af54a1bad9237f2a54945989009756eeec893092fe551aee54d61dd6e3ed463b5eeba0fae48f4e2dda93c3aac3fac95f55a934f411421df25dfc4c8cf033915aeb2a29b6938d328fb4fc89ed7e58b024e7494a29855aca9f1d1e22a869a4e5a1b52c67a3101444b6dbeca87d80b45045bf4a73044c45181987e8a3923e057030d5d7161c037fbca0a68f4ba88d5b0481a3efe2929642f4c62de2504ac6a12813e3f212f58ef4166e68686868483e2ee1187af928c4325c9230d5f1146562dc991cf448182d2f582e79ebedde110edefac5a7daa5d534ed334c35ed54d34e352d45b1ecd266199665c7b2ec58964d8151d67569afebba6e5dd77d2929d8d80fd54f08eae7857ea927d4a04f7d35656d569710f2bca0eeead527ff747558e5ed18d5d51d62085c3cf54b1d41c9786a987a36e0af540abf70c213de515dfdc8237a9e0f87c0598750e0a2756f571d5e4ad9e1a85a520a2b8df5ca7696ed70b40eaa674533e1a7fdf182b887c3409f02b80714d3b0a9889e4ea71350e91dda979a02070d1f10f77b127a6698c24af3d3a2a007f384ded0630293777a3b0f4e218307f3ba1340c38b65aaa0d3e9e484d23b8c691337c3ac86537715a8fe2c8149c7d72baa928e1a0bb8eaf372bccc27889999999959483609243333331f46a6d2be664dda1bd8da0e93e26dae8eb3b69efa1365e8cdae0be3b8aba5c5baf50707579acc08911ed41123520c7587499bf9b0114cc876964f7719d9c1745c960fbfdb7a9690a4df16faa594c04409421dd32fd59362c24f6b3c1c13afed70cc4b31c1a7e3b5215173a2a31378a6984353597f2a21cbe70813705d2524af89eb2a211e6d07055c478d040660696f2c69dfaf1eb1f9f2dec4c706e85e6a09148dc3cd288e79301d2f4431e9f1bdb11ae2813212387e94828b42bcb335411dc809a0f2fd1cc131d6e37d20210463472b99145f23016fc4fb6052fc114744992be1ac05eea4b2874540f8226cc91fc9cbeb009d9e977c6c898297433e3e031f8823580216613d9ece8f64b52399d991cc325892f6087a6b4aeca36a54dd23b42b36cdee685e1776c9eb347926b98618075c77a53ac531d6e5af241cc397bf7c38e6fa7c7755d1f27489130d44bf141bb6e838c0969fd36a517032fefa958449f2578a49f2dd357fddcb070ae04a45998b8761e4252f819bbf52170f93e4e7d9879b7754c3a753c7e79c4e6d13fffabadd4a0391529e0fa99ef7c7fca801afe7f5d9383dc39435353c018b782de569d4842c7bf1b4bc7860114eb4a1e52f221c1323c3b8d9111f88d537f0d4d861cf9103741abb455ab0805236e2bf141bd8d02fc586253daa89736af172cc4bedf21790e8f297102ce2ba3cad3e9a3741156d822eb4c88ee661894b9a1dcd1b814bfba126b2b034ed11f597ed4ce085ae9a46862fcaadd3e9d111f4236b1481ed23eb1eb15d265e1326d96573c39ee1d8d532014bda1d55f746d4a48bec14a0949d09511f4a42aed3e9442f13569352a601783805780d556cade1a76fbf141ba260c3133da35f6a0d5dac618bb6fd526be84253d1b3b2493d4fc3e5af4a1b7e7cc7bdabcee7cbf1da70520d3d9f0d5f3e5623f86c982a3d5d7a5e9bf839afb5c022b8073f46d8d52d01d7385c475804f73c5723625787d5081cfd9e0d187bd4906aac011ca392862860cb4f9a6900cb70a7d3490525fe111c83a3f93eb8e5a79f92ee3495d682bb1acde798a786eeb456195d248e913db2abe755015f0ab6c4c8a745cc4ba96148f319c031dc7068697e112606492dd0f8d357d754a7d5ab3377ae34f1ce442a39c658d9c46b7fd58878470560d2f5f80e7637c2eec2a4ebd9e3edf8f15a07e4a44970d3cd50820c1322cdbfe9663479a2c91d9a6f91edf274b3a74babc4ac62802a6d77c4dfbe8df85200085412b4d0a4b4fd75d6f09254b6cff07ca4d776f051beb21e6d64be9d7c65c51ef6266ef6d62beb5632295a3e02f7de114104c7744700c75c315d0118c0311dd7008ee95c1ec031d70bc03123ecf4a31aacb3639dfd3a65ed9b7d251a35529481bffe28034bd735c1128425cad508229aa5ddf16a0e9063c48388e6e368be1d3dd79a1fb325fd6504ffc7ecbe8292348c7ea9a0a0a02e1a6bac5fadc19a5eda24a292383871ea78cce6479de1962a6f646185d37549be16ff826f12f2720d529c2c4b936b90e2d4f12c091092aaaa040891550c507356314075bc8a153c525a116345a96f89b49565b549bc251d7f2263539b1ff19ab449641dcf6937891176acb36b2f26e12032a4092654900aea29e1e88b63aa5fd738c6fa755d72ccfcf547e3ba36efa7e2ea04ca46e0780c550c506df3230142521202ddc8c20aa7969f510c6f49dbfcb084fa5d5e8a7793b0845ade081cf74ba5010ccd8f87fd5a0a69bda1258f0408a9821df1bd81ed924a83917ea934fc740ed4890cb9209406d469704c77a3e1e155e0dfd03085862e1a366ce9b199010d3f64d0aa931b704f6adb500341e9f7de7bef9d6dec9a430918f4f81dbe3f8d460923ef54148368c9efd9a82e0fada5035ab7fb35e201ad0b9f35bcd9b311b5495f75ab7acf6a0ffa6cf0dfcd9e0d9e6178eaca7657f3dfb3c1ac82cfcb312988965705365fa1a7e11f8deeb727b4e107689ab5e11d7c7878e62b702f85865467c70393ce5a3ba5518375c775ec36f459f6518d3c9dba5e76ec57cf169eba524ba3efd9107d9eed7691edf81da783bfdd0e76d511393be2c1dbb5231e59f3b366ae4eac736c5598142ffa665f3f1b9df6da236bed315e8ef8597b8c9e8d78edc67836b6cdc253bfba039e8a9c7c86b928737265751b7ef68eff1ea053852c9b612af9afea8067aee16736dbb3112f7a36e2a925f370f2a482aea718ad57f4f76c6055f44d7b6cfa8d1ea7eaad5a25369148fb46ab76ac06bdd8677886dfb9837f0cffaa13eb724caaeeed79bfb1d5837e293414816fc0cd7e293440d110885a6bd54e5f6badf58f46652194524a29a5f48f06e503866118866118f64703bb8375fa98f98f2d7831c93ab4fe2c9381c9c0c9b6acd79783866f59d75e0eeb8f864587949414949fa4a4a4a4a46841df45a7efbdfa6c88ae3d1ba243cb40dcf6ca405c669d81b84a74d1b597832f129dad280d745eebea343eb65d8e8eeeeaecf31d6cfe08b2ce6e125997d3123b7d363fb29e37898cffea0d4483909e8d617fb547d5d87d4c9ab6935d4dae3559cf63169bf332bc51f1b30c6f54a71256974caa984f99c74b35df6ea6a7857d32cf70857e47d27c2593aaeaba7e683d5fc15f50ea81cec971cc656b249597fca8d460a7d32a10086c39ad9c36f08f382daff53c5dd2f4b1b9e92b0b7b54f3ace069fa59630935bd0fdee8b86775417e717bf0c6fca1b51df188af5e5d9beaf1af950061164767d521e7807bd6317b1ddaeab0de5cd77d57de4b935dd01aebf2544aebafee90b73ec317f6eb5575599716086ccbb24e996f84fcbc6c072fb1c353d958e4eb76d8e12573c592251ff26758f4ec48b21dc9f3ad53691b30631d5ec2aa836f5dd6f02deb37b08912385adf2ca0e1086a32d0d7af87dd46de923ab0eb315ecf32799caab377ac4476619fe10b7b26b14becbe574372d5312f6fa7735d16deb2afa71251e782d691790aafe3252951514df5ea15d43eb567dab16799c52c675f6581c0ee2010d8157cf0b1dce0fdb3f16caa631cc7d01c166cfa2a4d761cad1deac0b6a98ec13f1b38fa9d5a8e49ef6a8b4775ec8a32edb0b2135c3cb730e95dbbaf3ac46ea7d3d8350bad66bbec58763bd9d9e9a18ddcc1d6de3940a70afd5e0ded76d9237d0db1c759e06ab88ee71bd95665bb79f8cb8ee0bd816d5d21da465bb6d2b160b5020aff68c87b26497a2fbe1d4e6c158ea115adb2ec76d9b167553cc731d9e36965615358773c35b46412f60a2776760af9c1b855af33ad864bc3c3db59344268d96b01f097c5990d559aabc36b637dd549a775fc93950693e2ad9f4916ecea7d5e2ebee7c231eff81a2f47ecd8d1c8e02402e51a70ef2a140f4b3a7baf88076f745757307b39608eac1f1eeef06cf0df2b62060f5cbc1bef5dd58336bc5d4e03e1f680122a194735edaa40e4f672a4ee20d437a2868f17bd1c8f0f1d5fc1221e7757758a83a7b0721438b6e2f492dcc8d3e905c9235349b5e4c122a090927e6798c122e429561d4f89755dd755f17545785da40dde62823ea646d41e5ccb470b44b6bc37b049c7bf179f0dd8033aff6874f34174375fbf949254f3eb0ebc1c4ae0e822ef3acf0d877fef56574813364ad577524a433846a565f7a3e77174a7d242aac3214c92e7215c0787b4a1e54def5c84b1c3134ff8c1137a82e069655f09da933c820c84b082204ca124a4091b25f89d94d213d20497acef28a0045fd91d0594e04d4744187958c95b175ed3a57c7768c1168ac8a10c465043184aaf246f50c5147ce00324404ba843e9957e3a95e0108e0902f2304b2028e969977e29254e348e963a2299b5bc949f391d0fe792967756ef72daba4954d7e6c74de2d5bb783b53f568e55fedf1ace0e9ea16b93edfe574076ff3e32d69eb338967054fcf7728e8caba49bc253ddf99baba1d7c4c220142523d6f91203937b2b0c28d2cac70bb253a1ebecb0adcc8c20a4582e4bc2525ecef263669d2454e2f311882132825804025c1e7843382b7a48b9c6e64618513900408492d717a56f094de3b14f45cc15b52c2eee92d29bd77a69eb78345bc77a37ba93254d138b08b9c58d0a00426e0703a95de0d9273ddd37b270f6f37828e3e4ed4800622f441c80c1b91d2f1be1cd6995c1d81ca786be53bb98302d66f4e29be8a84f5ea9a744a262e559635e994a0c4892defbcf2051cfbc899872569e3ed6017add2ab3e6209be2bfb4a9265ae127392b90aec029c084fa7d3092766112d10175070a5e1b8f8170493d0702d1cc3323f9d4ea712f31bf000910b4745f3555e1a9ad3d065a03559697ab459698854956688a5558f0ca786159cf3f19cf1872d5ef4724079558858d2400898b06a02e88a9efd525930e987a2044a49232e41e2e8ab0ed069297520a491424c648006945411e3e36bf3ee4d4ebf77fc77612a0b25fd525950d19da865163c2d2995f5013adde97475af57af3eaaeed570081436e16c980810ee105df792b3fa7b1ce9e0c7c7fbe66de2e5abea17c77057700bf4710b382aca425e5e9e8a201f6e725abe969703f4313fb21d62089c94f133dc013a862d2ecd8e61e7dd6abf9884801ddc05adecae2336949d1ec4810d6a580210194400c50fe870861319bed085d111425810040d2cf8e1618116d0b0a4c4674183610936a842280f784052827ffd004085784f26c6773bf82c1059c3f57b8c52de1b51bf78660358c682f2295bf820cf630b445e92511a6b728a865ccb7e95d381f0015808014a89e2714c271bfe5d7162612c98603114b150031663c0c2e73df68bf775d172c282eb56b81e8c873b713d188ae3e15027d10fd6c3713ca88c4714a3f9ace0a96280ea0a090e7efa81a12116dc4bdd01a8bb969697ef3879071f3b1c012262840891b6d10f490e8474c045cbf443a2831d50d131fd90ec40480e80724005921c44d12ffd90e400090eba68977e487010d454d3a61d599707d6d561676d09f55b62097555254048aabad555d34d9b76346fd9d1bcd5b1be5aabb692c9de19a6cf9071775ee26e8e4b8ecbce024a2cd02971e7bec285863fb13b2f9d7c64775ed22eb239a2af3cc6cdd1be7272734430ac49a794729bd8ae14370b689beec11bdd4302039f6e586ab13b2f992ed34d3b2fe568af4ff90b6b62b9399af6959b7250be72775edaae72775e4ab9392877e725ed367172995840e9e4daeb2d6df0e2c807868637049c15ddcd223dfde3fdf475508d69dab7cb5f9502db45e7a20c13a26f77e7e44a515da7246fd507e87435afcd04744a1c97b6cb1cee32c1d3895be2a5ee687e7b132f6dafde8da0ab3b9ad707070f83d4c322e07d552bf053f5a15ddbaa868303a2ccef8210c2778e90ed4d6c78087fe3a282260de462126649266116c46e60172d5ff18170fd439e54d01df61bab0b15346920d7b4918feff06256eb30ec62bfb984ac4005ad0490aaaf03b19a043a7d55b7dd8d35d4f31586c32d6f8d6a60aae32b7b450b845b9e32f7ab81bdba3a86f6902f0c73c0f577f8abe341fb66cb6b130fdff9be4a0f514a29a3e42bd58c0406479a2ffb652165ac3ce4ace13a5eca3965e49926de7c5a210f2f2f443f243b5c34121840d1d5e3a52191819d2ba4d4e208245e808a5a2889248e19553f3f627e9232f0018ee95a9ecf033826eb89c405413d5f008e995b74a775f77ce2d0dd53f2bab7c52cc59322c70d61f558fd3d789c8a06c7dcc0267d9c8a07069a5ff11fe4fb5e0d782b0dacea03fee2218cb68bb74e2ddba5a0ab9b8204c9b97258073f3e00bbd7edaaea9147753b18e4e718b6f114f680e7c7c3eaf280e7b7708cf57997268874651ffc44b21345577636c731affae4431ffa009bbc1aef95854dfa5507e854a1f9f46a3c3ea9a021c7701cc29c401f27e1e4e3f957d3b823723cecc1cf2e448a4829665f8a99b216743ad507c8da835fddccbe12d3f9d8013a33e8ab078e37048199be1e2b0f16f17b0fceadcbe1e106ccf475ae3b92e89b9cb6fe6a8dd633dafa0c3b40e7077de9d041f54d0620bf6deb72505dfdbd1add75685d5a7661f69528a665f69530fb4a5c6bf8d5a519c317b72ea79134114557e7ec4f35f2f1c6dbc5da43dec4b6899f56150f233cbc3cc164421fff709388392792269ee879173774a7712af31ac7c0976a01e52a709c847e48988043f30ffa215101179ad40fc9490f35384c0c75a74345d55d096890857e54c455e0a215faa5f870a461927ea93d70d135faa5f6f004ac3b322f04f54d06b2211ff44dced61dce1ad0d0f283ee708cfc80aea13b1c18ac617647023234418828fc744782233ffd6aaed3a9d634e9f7f73bdf80dec0b6e0dd416f4900dbcaae0d7ca6872ef250865602e7ea9bd7a42badb3d9763b5e579fcfecbb7cddc390aecf4e67c6345dc643befe551eb5eab8ae65b69e2b0f4c0776d8f185cf067c762d0372d90e07b68e05230b684475bcef3a861d5e0cda2bd351c58ed9cf90d9a96d99d432beae67d945eaccaa4e333b6f65afaaa33e7bb4d7354b4f3b1cde6c0771b819da7a0c7bbca7d15ab76a0f52c7dbcd53ee331cedbca9b52c7276e725ee8f15c05d538ee8a6c70688a486d72c5f0a4d935766b1aaa3ca4eb3ebaa2acdfcbc43f48083a87e10a57135039db670e4e3ed70b86be6ed74a2ed4cad0490ebd5c591afceb507a95b62464f31c43c04a13b1d315833ce2064a58917c8d5969d8f57f4260ef788076c7ebfe1cd8c86a6aefee6ab2e56dd3b0eeb901ac86c786a781d0bc6391869f98c48cb63676034702fc50593ae4eb9106af96a879d96a747405f9c4a8bcb699038a67a652586698f9a764bd3680fd954446d463caecf5fd745af6cbb6e9d62d95f63d9d5611d3ba6ddb2b0ab0e66f3589661b5877c766de63b7912d41ef298769beaf2d7edaa6b177b57f6b5a5d3d3d66756a7b5dbe9b426b295ede8a34dbdc42eb242840811227a13ef0d01b9abc35213ef0dd1c5ae2e2ccdc41b53cbbf12b5af3b9dfa186b0d7d75bb7a7a47f4574dbd237a7958afb25fd6656319112dabb19aea54fb08fb1b6157c73c3dbdafb5d36336d9bbaa07bdefd9c0ee0d6c127bc8d39958c1ceb0ebf52c40bfee107069b0085641bfce813a196b2da0f4693a31c693c3909e59dcc09e95c71c502d7548ee74463c66162d3fb3e88e043a2dedcd6bd2a409901554c32dba68dbb66716cd3b0e64055e1cfeb436ccf18e6ae0e377c0c78b4371b8e7edf84060c7ebb4ed686d330eed779d09390f11869dc0c14f40a7c40f12cf82785bb08012e730fc1b424af920ba93c3133d75b2393f6f912bc788c7869eb7c8f567af4f4b811b592069527a97b348909c67054fe9baf21dd631887e56f09482e81ca83399c540e35f3c91a466d275f116a79617d7a205d4b8231d3504c452a7f53ba9aec6a479b57ea93870d1526742eec3154b986042a80a3424419574a6b086233208a201155b94a1f4fe6e1ca0e8f8ac4af5cc9c885a96698fb5477c26a4e3a1034ac075274fa7c6c9b24c83d73bd836f0d9c55a55696e3a180f6f55696e68e0e9a9a5c1eab49e7f26c4e619b079cdc9113becc378ada3382419bdc6618a8eb46adab5bac578a5dbe845c66b442f3244b06754eb6778ab23eeaaa3631f8db09417bee265341a8d46f605a57a39cb5f5e2c9519a3c8643443ab2936319e1d47a7541d319e5d561ef1d9c9759aad97fa17afa7d58ea2e098d1e7e95569a8a6b9d4fba259256a3419d744afd97e5d93713591b63da159d8a3d16b97d1b5117775ad271d5d8eea5b5e4f499584306c073bc65fed01d3f5312c0c182d2fec64b1910b269dd8ce84623b13673b53c3498463208c5cf01534bba39a789beaf0f1b201f251704cfd3cadb59eeba185dcce4bd79e3dbbbfa65f5d44584fa556ab06b1ed15151cb36ddb46b36c3b1cf54be5a10a71b8220e4bb4e0428b255a5c8169dab9cc2a519365f4d7b32ca39a369f78cd6da798a6d9d7d9067b3bcdb46dfb0c5bb5074c6f77c4a31ebe5e180593e67fbbc47f6fef3dfdd642cdde4a513dd3ae5969aabba48aae8169782b2a988475763b137476fa5801a7d39c6e8986bf6de2a52039f6ff292a898313a7d2af90c706b8dec44bff753bd9affa70fb4add7ca2b237b0ba37b109f6cc2ed1d85f3582d4587c4505ec79827f98343bade7e429f43cffc09e09a7e8c9fdafe761149fd75801ff94d587fd1fab8fdf74ff6b3faf4d35625217e8e3334c91a15a3ec6df2f5884c5038a8e8f613beed1b7c7f80c8f8ea33b88a371f4aba31c43340fd1afc6c0d11df775587bc478c75d21ecaa8e03f47b36ae435b6fa7c33a74bab23a0dede89bed629cbf7dc68c19331e67cc388dda8c199f618e932143860c19e74a2363db344dbb060727a0cba1f6c26188d12f95879da6313418d77754f7ba4e43bbd56f710bad9a436e0c29126917551a8db3afe9488315dea542605608cc570d9817652e7f7197bf70717171c95cfef2e2e2f219bebd81ed720a351717973be231e3da67689a084211c376b047b7645cbb0cedcfe5dde87c5a75c48f60bbfc8a5bbcccda03e6c55ffee22f1dbf54299a68f2885e5eb49797172bca5e1e6b0f987eb9231e2d17bde5a25317ab846c978ba48a564da18944a2edaf1a81892eba231e30be1dc6b7d3cd6a77b1574314c76897a7bcf242029dee2c20d89ba6bd7e79d5784017fb1a9e6a1fd9189f8931ec6b18d6ba8249f22db6ea6192fc0b3b8758409d29b39da9bbc9c383d4da1df160f976967b316192fc76216a25766701b5fcc5c40252b13c058edbba82636035458ae52970b0ab1e8ed98438e6e424cb5e7904d19910c76497ccec939d2b4d764ec23110721cc7fdd519e61e8d1d84a2b9c74ac39dd8d7dc6588a21806b16345eca1ade0a96699fa3ab4d6eebc64b56be7a56bb2cfc94a8f0d7059f9ea82746a18d680f9ea23f8d73acde37af51dd7ede2162d0fbbeeeac2d4f03a0d2b0dfc4cc4e11e30f4dbe9b73bb327280e37a5b03aac874c8217877bfb19e8e120a46df44b095d01872e5aa65f0a0e49b448a2c510a12442468488f44bbfd41b98f41b84ded085a68f5edaab3bb68b0e6d65ab55a2a6fe7a0dcaeb9f1235d74f5ec3fd7a45b9f576b24f6e7703bbfeba1db7b1cfd5454b91bdc9697a7a699b7d5dedd3ec0d6c7a8a69947e86abda03a6e91df1b8518849f2d8b3273806bb3caa0b888ac13ddc7b7a7a3878ad3f07e84c81b3b9feba8b5bb04f0c9e02072faf0badea16d979c9c453a0bc00845329470a21d981154a414e60d229d1780b70949ac05192027e0ee198b805c7c07ea29f3c57f14314fa817d58013f40d1f2d0c8e5241742c10ab89744fa75c731a3ea45765eb27f2d0f511c33aaae0fee74e2860ab02df006fcb4315e0df8598df0716f1fab8fdb1f2e1761e0b53743bdf00d3c88de4741bc198127ab5faa0d43fa5d76f1184c85255cf4bbe19aadb3eda465775eb2342bc7b2c44042e170471e4174a46c692613264d6ac976e7a54bbb765eaa5edd4e2ae0baa6eb39d61f07fc161779ec9a260fa9853dadc6a4eb59b6aa2a199999c20a0bfaaceeea348ecfa42bab046ccbfa65594847fb5263d8a2af54165b7455692a4d075f79df9b2e5256534a3965b50669cd695d96ac5ead62ca392d6b5ad5aca694724a31d027a1d4e12d98f94ac9cccc0c99ce191942f8f841c944de4e4a999d34478271ce37e78d31c618b9783b9528a30abff8d805f4ed785dcd39a73c418249d7ad39e7bc1ecd9c382def69f2bdf7ded39e7cefbdf7de2b38b790932d6b2699735ad6b4ac39e7bc1d9c73ceebbae2aca69472ca173c9f1bd0c79aacde457af17ad7e39c40c2144d1f154929656577bcae2e26451798932b5acaead64bbb1dec9090a4b9358e91153c1552cadba948dbc996d26223dc439204254d99bb18265e1ca3c345b88724095534571ef30c1c638cf1a7d3096746201ce6d3e974c2e12c7e108102c5166c40040b21a0e3b96b4e769208e10702c620638c587f20a0e161e571b29324080d65eb30843080fc070f6466afb025acbe4ee1909968e5f0c47a205143a346b758172649b6f2ec06ee7aa7b53cc732a6119c5e822f80048097d74c77c299c8396d5d6ee0e4ad6b5144a8820846823085a853e9eb559334f04a26bd6a9dde27790d9062f05eda12ae7bc7ca6ae06caccfeedef41c8365223aa11dd23aaf529821012b0f3913e7dd6c0b93e22beba2d2e2c231fce4e435c8c96ce0aa43151a35178e5103079b06a9068eedb183ddc117c01bd98547420422dd1d0144e0e9781a355ecd2edc813724dca4fc7cb55366b783d62f3b752ac428d41e7f8ab657b78bf005d5b4555555f3d565a5a9a89889b2d2c04933254422c6ea3de8458249f1afbab6c8c9375b64e7a59353cd3a15d12a8a29a220d2346a13259f8844d809d848c09d0b87302966879ff39df6193fafc7776bfe64c2edf3d1e2c4ae961d6208dcbbd9c5b9152fbb5e9bab56b7de69d79a5dc5cfae97afc7da6376bc9f611df4aaaa935795c6d9eb95ed5afa42f9652dab3a6751340b1ba5b27e71af966a7d9db39261ae53fb98743dc871d33ec39aa59cbd18063eb39c4a8bcb852f8037a28ebcbc892d73a24ee5ca07ecfa3ba5524a9baebaacac2b25476b9b7c61c74ea986611886bd57b16b1a46ef0cd72cbbc5d56bef44af58c727147bad17bb727b5799bb1d09743ad1b51ac5f81976addb55b3a188ab3244b1d301e887e4084a8e50454319f44362042a9a8aae11ffb5f557dd4dc79465d53322361df6f99cae2096dd4ea7b34a5aafe471b86786599dec93ab86e10b44cfb26dcbb62ddbb66cdbb2cfc44c646dea5fc6659928bba8daee4de46c97d336b047fd45ef50cec5907f2ca3322f5f9dbb8a7d0c737271b8b1ebdc3999723b12e874284fb455d95fa075763bec9a872f8037549834e173a00ec7961446888227b3119e2802174558d203e887a4083dcc3aa63a5f0f772ad7699d6f62d75975e8b4754abb775f55f5bd56b556f5bd56f5bd564462c3d7faaa8ad5233f36a42102d7d5bfbf3a6bad431061d28bc355fb7cc7db6b6553dd0e528ea257e76eb55d1c6eaa44a45d9cd8f4763a1976dd4b45ab6c4551049411264d459229b446843a887e488ca48cf43401fa2129d2453fdb71ad63b2de91b00e77ac173b5a9bd78f2f2bb46e07fb75b2b1bf77f0e2f0ab4a63d1587fd53a79579d3bfaeb8f65b85b3fb18f61ac7a6d83e970a2c83e266db756172776152f8bc35dbdcbe6ab6b132f63f7ba2edbc05735f0d5bc1a93b4967c379e4f9801a58f2432b9faf78b6af19a364f11665e66be1d6fb5ee8801b1d7d81fc7f010e118ec7cadd2b04fac34198832ef27d1186f61d94e4e29d718eb9822c6119350581bd1731a622e182679b0538e2ef4d86798459f713bee24117859740a19c66b635d747eddd5712b7f4688f816b4ce77247a7cf5f909e3f69b0acae1f97635f00ccf91a91d62085c2763cc38d319f119e0eeea11cfedfda78cdb5d2c23621976671c9bc781f167c878d95e601786a6491f6bb6a86a917d6d31f38d3a263e06314c4211e339cd9042e9042c029e9f602c86cb3b4924bec2ced82f0c1e8b138b138b13b3e1c7389682a560fc2ace38e3ac8971e6578f2cdbb2cc17c5904ec01bf056dd1183ef52d5c7e8fe240f93268cf982ebd9b272bb969eef0e47f73eb91d89e3ac8c721042685d9b8c9338a08fef3828f2952d7a8723b53333cf165d1b7aebd83b9c192184f01877989dbba30b4794b99fcf4094b94040bcfb7dd7f2c33b8e060e202ee4a13127f6ea31a46cfacdba430c81c3990dffea1ae5a19f97388045c0db89aec401bc515de3dbe1480eea6abe8eeb496f8733258f7689034d9344eaacfaea4ed0ccccc728ce6c9a6598c4017c8142aadf0f8910ae18424fe3e8876408a716429216a21f12200c81a2b5de6e51d1728b36403f2445a6282284084aba88134de190965d69d8514eb38c3bb975addad1fbadf6a06dd5ba63bbbca4101e0ee1984a03adac3497526a5dae29b42e29bcb42ee96722b5b99ed396ed62375b1609fa78590e6f62db30fd0c436abdb3aee8c2210d6f5957427a78796d5864c4053b962be11d5d97afb10e6f1dca08595e7dd3ea8eed7093f0d5a5253b96bb41b8c3ba8dbcdb31cb82df2e2a66d5577702c810ceee60c7b58e29877641da8244baab2ead4d7c4e43dbc5d819121cb3038bb02e3bc8d3f72676077b74dcf12b727b779dfe76704857e79f5e6889b6fbeeba59cae925c7a89cde4bbe38dcb2d9ce868f7007deb06ed51ddbbf62b3abd893a758ceb2d5fb22c12494d1f5d77443111d056e50b49db2065f008ba82e8d9d61afde558f310411381ceeecda60b74edf9d4688726837943bba0e5f59af7062c3edd5b30e273b671f93b89f58c924ee7638b1e2705b17597507bccd76ebabda436b08add7674782635e008b789d7d569a6c0836abbe4ed0f4b11a6149dbe1f053d2d529e4c85b9702ecb1d6ccc6ae65655f35b4ad0b5f006f542710650f5df820411961243f50d2ef6f8b52da7908ad39ad39a774a910686a615ed254d745ca2899b1a0ef3966ec5c705c8fd563f57822ae2a3ec6482bbe42cec3ea2379d8dc232986ead3c2ebd9782dc340dfbc7c39aabfcf9703760198346f45e3883c060e874cf67904bc1c7f36aecfd7e0188e4917468365ae514f191586b9de15a0e7472f07ec89d9d805ebda428fac91751f921f24e987e4075a68150bb1ebc2a46b3e1befafca6703764c828eac21c7772333ec41abd30a569aecdae52d5bad0e9deeb467cffabb663bab1f921fa45abeeae0bfc2e65fd7abbd7af075bbebda295fcdbe8c465aff2ed434ed768f3e3ab5cb32bda4957659e6516fb744d3bfbfcfaa23ebec654dafcd757e775dd7934c7ad7a1504a813ebe82938f487c80eaeebab403bc0147fc0025e57085bc55bde5e232c031d611601d892ddaba053826b665b98188b65e1533ecc2316cad29e012dae26ee9b9814dfa711c136f5d8563e42deb0d4525f88087e3fb251b10a3cbcbcba1833e182c701a5745f3555a5c6011f00b40d28329b81a11c9135b74841d63bc801458b0828aa2fc8ba2d988279a8fe4092a9a1fb1cbfa0089a3b3f80c667166317bd4aec5c3aa23ab2a05ae07b96e908b565aac3c2e0d560a5c1508d2042c55d58354b71ee442e2ba25617c823e31a4e34d55e541171d1fa784f7e49565e27af56973b292f5eae664a5ea3d8ed8c13e6109b352dc2c80b7c0656fc2ba14f4a7ac342f2ffa6b1e6c6193c89a5eb335d9765975c0a3fcbd1cd5dafca055874d82be1ec5763a7d022f129d7b00bc221bf88dda11ad3c98a26d3f243ba8820750348d7e487870dac1d0d4a81d6db556d5d2a81dd1cd8e689dd5aa3cea91f020d556e59175fcbb4c5cd7a453ca6e13d66169565b64c7d22efd4ccf6baae62dacba3933e77a75775eaabef3127673ae59453a3fa23287bb4cdc12f38ee8e73c847744e7d54135579a7818812ba7e20b0ef4d1a02c7a0e1225ee35478583d4b7fc551f2dd7ae29e5b5faab48d4b7580d5e7f47c214a4747d7089bb1624c6b507e17cc4b87667b822c145d1f14874f044c7c759355bbfd92029df3e6b0560bcbeb23e527e724ddb5774e8d43ee3a60dc6b5bf128a0da21dc667d820309ef2151bc4a43de598ed745aa861f443a28353d36993c86ab29e5f39a5b05660fbca4536c876d14fac69fbc9396bdacefdd50aa41c8649f419d7ac69cb4e2d6d9ab40a984e5e6f121de5affa48398c6be25e67d82026533df7d1b9846283984cda2b89acc9f4cbf8890d621fe40f22e3a69c202e47f9ca4d2d37b1ccea63fbc96745827bca35e994448f614db024bad3fad8e64f6e10ee2714d00ee306a9df6ed5eafa487910eda2b7d89c202f3e0309ed3201e3da453727cbc94adced7074919deddacdc94adaab9f58d1395b3f13ab85a51df0d63569afb789ed5254d7e6c73cf90cd3dbe168ecd9ede0f9f1984d223201a3746f90d135c5b8e9e4337e59eb9a6502c667fc8535b5fcc5e9b401a353a8642b14d7b922e61c5324231a000100b3140020381c12094683d190a0289af80114000d9eaa505621cce328c8629042ca10a40c001100011000000400020072c16a4635ae6fe5c9b0e06409c77b796e400e053f7a3ac9331915661678df45702a629689d70bfe22a08ef95618320220da8edfe4be4b0efcc5aa6de169bfb304b98cfddbc8d40d26e062fd8913aaceeac8816bafa0b252c00d69e08014ae39d1d253b6c0d731f4498ff71b8086b1b73d000ece02ed588cdc5c168ed80dedca7c440433d80c0024dc25f7dfc5c7594b70339a9a9791025425b3ea8e5ead08ef5fb2bafc7ddf0230a301d5ea7d8dd74d0e901e88a0735542513ca1dd5402fe35f4c5876313ee1d833d5a589610ca62657eb8c26a5c7c9d4b2b86b0c94f8093e3c81156b8ccaaacc529be2c718ad7214dd6c77aa8ff2b02f0ab4132025028bbbfc9e18e03477f44c3cf514ca4e8913bb4aa29d2825b9fc7dfcc66f26db51df9a4f409f5265ba566985070ccc868d496eec43ce71b15d6a1cd56e5ee32385dfc4fc495675da6bf3b884c0b33882728de114960f1d7912c6cb614bc26dbf7beac6e7abc00155f4e5e46408eedf96b561c9d2e8ac19135e808353a5a959918d4946eea568b9dec0d2af0da0e38581d4e02922c437848dde5e7b6094d1583e0b9a1c2ca6be0e6c034ca984b1fbaf43c06f6c172b9caf6e652a96658cd99ef4fadf60f4d6df0f5577836938ca171ba4361a0f986e671c7d548c8e22437394b91768f7b2ddf05f6e46fad93be6519492051b80fd22f7f729c2517ca44dc1c9674a792babe6ed31420030d295a0402ee4c9ad5f600230d206c15d0feb66eae681ea5f6897f2af50fa02920de5b32c070d759df059a24c23f15c255645c720d4d578a2a324e8e2b8853ad58264ddf15b5e14d37d42a9f33b59e1b6a4c4dd1d08dff441373f53365996b91237a82722068dcd24f810a173c1c6e724e91d123902a0aa8007ee73b587ba74cc451cfd8cfac4d62e6c85fdad733c8c9cf6aa0abe1497f79242ee9fd14610c4a2ea7886c0c9c9aaf236115224c3a77010c301a6ac8e5fd7801be6c3802bcb4341315de4feecc5b0610a5faa6d7141d0cc8c4f2cf7966b2e0f497c578931e88e058881a9a5c2f122093fcdfb6a2bdbde2d48aaf91483a6e85860b8c3260b5fb1faa46b2e66952cccee6bb8b3fbf56cc2ed3994191d10963ecd89a4db44133b6ecee96b05b640ba7d3d98acd942a05ab3388ff9b7a57581c0df2a448dbb01173ffb84c71089a7a1e538dc9cc1596d3d9a139f8dd75e1afde7cabb37291aa32baf95285e7d330f8ec03b2b88b9c0cc4b39352fbb17f2c0c41d5cad3f612260588f5b6592f584ab81cb8d619cc91b94d272a4a6f0bc33aded6fea3eb37ffcc3044acab44efe368811e71eaf40e8d78e5b276e92aea08ced9a68cd765c93864399b43e001180867ca81097f98be338dc6a9f32585b0d72fb75486db28b8f6504d24936bff453c95c2f25b2f2488f8ff1278e18d220c15f8da8841fe0298a678b02914dd4ad0bb21e8c04dca78b4092d8632fb414abb8e24900bc104cff4284d5137189fdaca1687d81dad22408c53f9afe4842436c82ea04f5e5a6bfebb1f31987b4437992badf5a4b6c3b0668f386f44f453486bf78b4fb6da053a377e4f4b554ca24f99af121b32809ff9b4b6e80bf2fc2069049af122e9e5a85d1d3130935d0590ddd47c4506d0cdc70ac2d4449220a76ed0688ff9198bdee51726123229eef5d3ebcc8807af6f49e88060a72188dc191563e8a2f1dd622b197de4b75cd4a31a684c1394c2de1e7b4f4f10f5350b9910091532c38218af420649da68a8852b322049d61be6d77fa19af21757642efe0b1b259b8b868617cf31a4ea352569d45396cfaf0b8f25e73bd2afe4bf5850fdde80391d37682835f10d255655a4919e057baf87aaf311074e7c14e4d82f8a32a22c6e17c975d3fefd8ac590cd3273ddb7da295ec95e4d63d8082851cf055cfaea73c755c135e99a30be66ae05faccc8451b7be454f9227c64a56fd16d334d0ddb2d69700cb33f5dbe803c008448a29bc399515e814192b83de69888b30ad8481121143a5418f7d16cdf228f25cdbcce67a59785fd097768014d808e8b95354ebe29547c7228c4b7388c0cf85e142b8633e4ab0aae70d8e3df3d2d1bd06719ec3f34490bbdb5d5bfca7b4635073023598be92f6350ab561530afdbe639d141efa5fd9d22aa999f6dde0fc950cacd7b78c727feee3fdb62bbabe42f85c8d4c86e5b11da3c9763c1c51408f0322498873f52be0c6e290d084e958a0fc6f81a2345cf590e1c0f792c2876c753924d809664956d4deff2c9f4f965eae607ba588dd276540ea36c1a5d8b56ece402401077b52e50b01ccc7f434013256af1d294260fc619410a3df273a576af4f546fc493a932d22e61743564cd38285896903bb7e14c2e4e9fc61420b38e57a6fe695726a43a69fbd9e5f30977009ee0aaf923f0b0d77980461eacb74e41624471dff63091ef285ac051931599d3be587c869a4f6a3347131391d5fe7d1beaf18e5e86847be9452c70561a717a8532b3747c9f56ab2e6e90c598792a5810ebd328b5aebaeaacabb88f4d943b2bbac025091020e1b728a2f05cc1ba0797e01d1d881926d71b533c9df1ff53c57fdbe1fffd02cba5d6133eb8f29b17257b98b0dfdc81762828aeafde2bd1a1ab09c37f72956a82204232e2bdca56a84e9aa5607ed65f2ad4a942299748db68ff8592b56bd5e3ca963c5695586233f030baafc0e100ff9fbc52e2dba44399e61baea37b9b78a25158c72465cf6125ede7488090b237a825c34ca9081a1e8ac9a774896674d53052229486e7983fb3ddd7b43025f6ac4506a08460ee3629116d3874a03ddbd441ae3211e0329275e4f520f24155d9e88cfcd02abb230a72c44bf600924d690ef866ae7d3b90278d7d04c8219e7106ceb786de40585f4a0d581021fd526646f44410e8f3b10a209ea21590b965979ad9ac9b60064cd31ddd09b251eecc3819a3f046db60ab38799df38b8abec36fd60699a917859cf6d3b9c52b36a17debed8658d6df897cb57ad83f59d9f9eb66d6e82842a994c3ad32d37c7e2626873c14f3ead49823d1b5a6cf84432c0e5ea1632ae32dee071ef14eece11fe9ef6a46bdd00a9554fc6d2ebbc06b1a7d1519d7d2535c43d25b896bd8c7e292e31879569bc54cac66f9dd1ddc7f19bc3f0952a6dd927520a896007c33a95dd4852904c6f6afb37d58087f6e1e1747f98aa60b056237634b1977d0873e11fc4a5a2cfc9385d0fc151d0f71a021b14b3e11850e24c4876aa8d19b1d91d7dd1de29c527b15e8b4000cccc993afaf534400baaa2aea95e9118851656a4e2de1ccd8571cf659a8c6c7f594227e21a5fb2e01baf3872ba76ad8675b314bf2f93154b73dfae62ba40f9c9f35875430eda477cc03615cacb4eb51a757641d6eb46b53b37237b8032b4d7ee12fdda1c85bc2d053a00e3713aed805bb6e69e7eba8f2fd3b1e1293ba2e619a00c6a0068a923586d9c8fc65be2bc5bafc66ad277ff8c69f81b310d7f93f1d75ba56c232a2a0a1dd85ad9187623c5324de200eac8e272d95c09de64857f94662fda7ab79f07413e0a815b821a768cb800addbeb8abd2f2f11ab4f2d2fa4bddbdb5b526f157955ec293d120ae0f48a3a743afe3c3523b45d4ab7f5a74d4d104df4cd18190ff165f36f4a5eea446455dffbb49d570a0d70df6b6871c709f2c744848cfa837238f94e6751abb1a912f52e5f41963fdba77482295215c018062dba973f3fb25ca93ad05436d4fa0e4acb151ffe0ae8178a942f7ea131e456cd97d76c036e056ec6422bc0db24a6dd20d0bd6a50ed1d382e539283a48ab172f004c50404ce042b7aa8acfbd2f7dab80e1cb2de309f0cb22ee7f66ad600da2efb035342013ae340f84930997428e6d53bbfd0d3e71d8c5e0202e2aac967635409a7caa562498c1fa87468feb41400030c908ef394cbf3bebcef0d7fff0d95828e390a3f6f681912efa8a75d3c05f8d53c31389af91e62d812407fd0ab1fc9898cb5e31a4ee02bdbca8376041721e193a6f9abf020c0a0c4ebc67013a0d8d6c5193db35745ce388536542a047ffac60463e47ea46a70a4da5cab6e63493cf48a9ec24346ad82e9b1c2a796894063711d9cf74172082ef0fa3b07babd6df946b7e88d81fd10ef1418db9aa18190312b52a2c23380031fe2df07e1882fb0a7b0d7f9825c8d7ce2b04185ee9088c0900a62db23ae6049185bf0df25f5c8b53a910a40486f772a10a8d850a3ce90d59739c8c01cb143720205ddf08a380a3ab91d4717a9ef47f34ee2949c04fc64942ebbda183e222b5dd8fd797243499be1ed124b33418971e23b0d6b5afd43dede223ac2354db7a94eb31820d415288df472d53b2b7f19d2d05a8c546e6cf0b5783b2e741c605287658ca46555c53273fcd2a12687b07623c3a141e109298b2efa997f1d3976c6d7ef948bafa0f6218924cb54e82ca92ea8e305208f2400f232291f6ee108240e1030c6152a21b43de83727088bd47bad74a5e27bc986b402a5a908c1b040b82a397e148e28c9dfd9cf840d007243d67a3b340940cc8f397aaf2809b967322e726ccff28008940508ca8a36fda01d1c24e8bbecf01440f0d5b941b28c9741e6fc5fb0a01ef7a67d5e443c3a8acf73690054859c2070e3c9235686bf2e86525ff0bb4d3d20d38226f8a293ee5248e6c2767e15e1f9a81f3d44033fea652e8827ea5b0e710a2f3f5f745cb32c0c6e514445d44fe6713a0b74001eb892d39087e6b18cccbb8a025afd6e6407d259549002e474a190649cef0c9414d8fc559250123e1d93682344ca241d5b8ee1100fda28390c2790c75db0ab46b69895fd1f5882373b7a029d15ba3696750707f32e8089f0baf961d9c20f23ac78f9a49d5f67f19310a8a93903145a7be489fa19248e85306d9c8f6c55292cbed2433aef125722c27af52084c4dc2f28ac1bd8924844136e7d203d57073ed72ee2ccc3624eec64500c06e5a5d73449ca83c6f2fa49230aa17c3fadebbb0db3ad81f1204dd689c83b1f8e4bf94f30b42c280eb0aaa98ed8b1d9032132a5f5515bc99a15563af3549c99f48cfc35981ace12980db4d5e71428f0111b90c87006e14970dfb4284cc7a4e12841728f913063e6f61208ce2cf52d20c5d50a3c5b60ac0def24e6384f04ab478b13603feebfb1a11985e3731d007cd58669fe70f22139d6e426a617ada176ab78b3136324b4832721f5fc36f6c160973760c22a76ee25401de8e0d87c6a371fb158734a24e8cf62e71d3827101741478c82e702d316d05130f476d41ed34229e419586ee1878a1bd555fe4d3e329c5c40dadc56fead0161bdbabda1e667bf562a511b565b8d7cc69c7eeedd19156b9bf7863917a18729d4deb922117c787ac9fda3987e730aa418a4d4d27e70468fa443d4d5ebfc437f380966638c6f1b764bb31a723120aa6ed062fc089e274d495318ac9274df5ffa87ced93c194364ed17e8a75b594a22b2ed33f3d15add45097c7f49f386ed872789c388abab1cad1f7a2c0942a21101d3276aa0168d093982656f96ff76232374b875a027b44849cbfc77e7921494e7b76db1e2c27354ce91c076a1ddc822378a9f1953970ee6e9691608c38cf32c39181855e8448ad7cb5bfa5a3429bffff49fe33277265882dcbe9f446a052f4047a5777fe8d5bff4d6f1e7033a49a09ed7e493d15194620ef62896f95f91ba2bc949e7430be5da0334c38fa245a3c4951127aeac05928f141f99ef4e1407d5468e0d27b57fc67bc2b0b726eeedc37e958a2e56206b4bf4ed4065ea1701af61a95380364b9e9460239c3b09d3854d9dc69b5bcce4fbd3d919282926b5460c0cbc3374d72ee77dcd26d8d026fd7b31e4cf733d18910c1637a4c065bf82a13019b25a6cf728125250404ebe1c6c4c139dd3a57f7d137c4688c852d32a2ccd3934cc3147d906cc98bf53d2d36c43bd62b89926223b250469c0e9d97eaac778db45aabec5c23a358cfff72ecf5a82588650d4a8ac55ac76cae13fa8b6aa5e10b786e1cd00245d84c88166d0674a852e31e5defdd4a5a38c418be9c31d09efdf36dcf6e2a374461e3ad945c446d07ec42d6a4a58b4f9ab715079f5a34883e45e30ec2c7bac69d9b72e240fe7f021b6807dd52f017415d9e0f526c9f26d8addf976dde1f8208e71da3c7819f42fa2214c87d90850652c92a3d1ec7f10679226bc782241c7669bd0ad943418e1dd406fa964d041b4041f57576ff083680b91a7f25b54b5d25a18ca1048266f91a7c3a474badd29ee159bad8095674a84b5d547248ca123a6bdc3d32d7d981bd8b6cd8e66e4907e79ad3fd4508c9f05d2e2ba94add0777fd9a9f6171482f6a05e0b029cd3b12eb51c5a34351018498c5af6c5333cc81963063a10e698ecf115352ab7aa306b2a63af4b4b0b55ffd7289810d019c0a9890c536fa800915af8dd83e8176eac4de40b2c53689e6e73f87e5f60839d471e40bc5b2d8e6e359feaabc46d2281f71a062461e0ea6da2adc725a086ede5c1a40fc7b0dfa7e57c20225bd41161fb7f5cb719a0fd3d62dd20970e94d5b5de1e23d2f5b274ed9cf76393c5c710c3b38ee1d13b119d89c024ed9dd5190735d261d4219e9c1b4a6318f9c21056ea6652702c03cca6ebe1bb3fd984a6296ee705fc086e9b1520d61e00dc3e2312b9c42aba2f71270a85111bfca34a56b58be71215c56b3a93e5e7351a8b536f7b8d72683d56cbe6faee24b3bba7850f466158edce81d7ec8b19aa3e0799b05b438ac9668610b06d48e4a97e8c957501b8af8ad42f1e4282c0e370461babeb2e56588af87a8347dac1f35cdfaad4f01b0234066b7ff01e98c5b7ca0641e11ca138f7190fff0dad83b9ef75d88a113d0680307525fe1b5448f370b2801044de4daf14a2fd06ed30b023298a488c86ef77b2c42ea0ea8363b5f41f669292ea9e89888d1affdfb838e3b86cd3e65b49ab1d85e23717ec2778b312cbc25ed679656c165298f21fc4614e4be14ab5b210981ec40437e089b0250e95cee5fa8cab1d7e5dbe75b21bb12bf8eca67a2060e1862852866a898fa504e6f2786005f06d673a767e7015883080e38ecbef1e5343d4202a1f7fbb3a6d2b70fac238ea6c56a03dddff1e8d89cc9ffab436a86d558e9127970d1b93e5b1b4474c062792332482e3eed223b726856af5f0135ace3e4d1277e878b3aab92ee900ae1373635ac7a88d367ddd009ccbfc60790670bd0bd423bc048d97e196082e377f0ad5d08e0c5f28a0dbfbbe2e8b5141ca5d788b2f83ac00721e1623311c37d61f2b724ed194c6ae9bf18b2d48daedec3c867e6212ce42490ff4bedc350b8b814071e51e8d650da86f73a122563f6fa161cac5f348b5134bc1893318a3e90d449047602fc202202c2d12c01a6604c121f60e8d20503ecf1a2ff4d26c8b3094d0a57eb79544db3e0a9084e11100d0a3529b2ea5029b5a7022badab2a5f54ba7bf7c9db0c37e53262570d2c3d2162235c9e89926e6ccc0765f32d4ed4df47fa080b9665618e8d5bbeed2d346b144b134682b47988598932c48a89384a587b02bae2ea8a04b54b7600295816e9e4af3e226f08d21e40e01df57acac52ab3477d4cc6d64cf91f85d6bf53a50e0deac9435703ceeb4985ddb9fd5098fad92161238886bea154d07f70a127bf63f9d18728c8bad4dad740e790f19c9c1d10307a41b2f304562ae6978989c23808800b59f333245b12f80e500ed929afd1f78bc2d36cd28bb5b8b7565a4caece88022cf9b08ce74475f8ab8c84c012447b5b5d2e121d185dd4fe08880da5908c45d34ab640928086264a280df7d74ea9bbabd32c847cd4e858b5040278a534ea22cf997b0d97b89133d74b36fe7d8553c719a306271733c164a2def3d527a05773270556a4e24f1ecc74a970919ba86cccba8da1512e07cab9da4a3ca900359fc7f44c97416e145a6990e3409a175fc33e784538631540d77ad12327550b4b0cf4730f49fcbe74d2a8f11f357216f6e09a923395015fab6380270fca352fdd8135c6bd4edc129a559cd1c68896f1e4a709b7a4b3564159515075f1dd1b69107004a0aa01fed49abc244e41c48df80382c0dd9412c0660bbbdd16b8827afbeab7f61bea76d5d2ef340ea6efa5cf4a122517956a55b4b868f0e62dab18b0d86fd0e853c3e65f630762fa51d5713b0f4beed0ba42fe7f457e2acb1fb3d9625606f57ecc45bbd5d0888ed508feb0f827896b443e96319a5737cf43a9f9ae26863fef3a6517d675b7736e7d32189e1b9cd4554d4974dc57a19e39211dfcee7f73385f4456083ca67bbcb5a783ebfb9fcee66f8864fbe6b6a0c0712b1e4dccb4eef3f2a751878b04dc7536d9ceca8f7284b8477480c90374603678cbecf1a167c7a471a2a2a654394c23afbb6b351db41b37e9b31336bfa81cf5583008a77015a2227d4de6374eedfbe03ece7d0f76a5707c103231a2b1b0aca26e61928f41b428be89023631166675428c21dace5526b6d969d8ef74f24738d92dc292a68ecc886f641835754776aec878bdc8acf03bc4f12901f22fee7cd28e8fa949bf232b9bc9a4f034ceded744902b9d995cdc6df1bba7f773042479357fd1dcee2b00eb7998317a521b4e5f83915bd3e631989cb7684a4932096e78139ca6d640eefbbfc3eb4d21d46ef0d18fd0fdfd275384015d9dad6e4820a9a683a8619aeb10d22da4a1a781ac73fb1e86e8865c8898ad96d0bc0e1bd41ccd1d4885242e500f5c52359271d50ca31b7ae09f25c84308da0f9e1e991d07924d51a46b31a5e41dcbe969ebbfc47bd2ab6e685212eba1f3737be7d93b0d0bc919fdbc5293d0399bb75e6b2d25d9290576448bdea96f0fced0f05121d98cfec4f3fc8523b3055a6ec73a68a2685740b2d6bc8774165f680ef6c89e20cdab23e2849026c23960a5c134dcc9a1a2fa4f8cfd8c724a358aa4294725a87619c38a42279cdc7f6db1751121bc0b4bacc2b8150279759a4ed53ce154aeb20150887cd2d3b6394342fd53a2c7c3b9d553341ae995f1ea43f5d42adf6a67a8e284ebe4c8a83b9da9b865f66d8756985335ef4d1782daea66cbaecd5c18ac3f75464b6d51d402f1e3ffd0448f5c4b7ea6bb1981f2079b02f8e9b58ed0f9c42d0ac2d9b6a3a0f69fa49e30ef63bb0a98c847533bbd1c75be93dbbb2cac906c3703f2976bb55ff2c51c93f7e4ffaffe6d678873f28349301921fbc22ed9cfa5c0bc4a16d162876dc3dee55bca8aa247a1557de0888d4080a74f9f13e505c8f0b3c3a237490063c0bb7b2c4fa652dc640820041ba75b9742e2c45c7d7924cc4032afa0325419ba2048ccae4b061c82e04fe533e4f335d154bb2e0d8749a199a5443940dd71a82241c6671c9b8802397fadcb6f4b49218de031e4bacdc0b9d31dc1b5e190e2f54e2a3ba20609d29f7712ac97c3e11bea6521d1dd91b89403a903ae095f4e4dc076f54f39e22d3c14ae8fb042973d7abecea38f5e3152bdf29542694c2a4bcd506a8a6cd4e64a46c6c7e8c6fed7dc666e2c050aa68a4c909f5f3179b173794f2b5c043fed3ab01e2cdc4d0060ccca56e4ddc779a3689501de206c915efad62f166d2f7ef3cf99b4c3c264e71cbb9e2ad2b8e142de59e0d9cc82f5078a1bbde370ddea734fe2345cce2faf573159412b67294d6df081331301877e123857c4f544808819da18915097171742c10695b9a72855cb6970285835c79bdb46d7909acb36cae1f9868faf319d75e05e7c77ae1bfbb7b2fb0be4eb11e4e4388d03a40d3d905e3314652c9b76b21eab2eeef534810a8cfe84812dbd4752ca0d0c64cec122799c6085fa3e04ddec427cbd97d9320c265283346570a2cf0493add31154bdda285a523134fb7cc813ce102d644a2b7eea737baf906561d41d92033e506c4916b73911975d736c5beefde4e6d93277be135d9d15f7c473cfe5da3daa4de240bd812064d7259dcd9fc0f477f4d2e3523ac7f77cd715a1468339088bb07782422a4946214cf559a2e1a71544e4eaca2a0b9bfaf8cbbc6d8cf4462dbee88d4884cf213fc1e0a69135169c6b33779907509c89fdba0532ab083a83562c869f4f8d85598d0010936ad3c05129ca61ef50a6c86f84a8e809e2853c668148abcaf8cb139f2ba2de74d1d69d1f289119bd0b8dd9d19fdccfcecee26a69d52dfe739cc00e82b14d8347d03ef251d1a9110eb2604af6cd6aa753d896d55733d67c04b4a02964b1d0a70c6ba9257a14fa2cc552a5a037bd0a215e2eecf130e78a47a5c637fb835bca3a66ce36e139af70a5a138807000f98d352681804c41a76b920b16af36934be2466082ac2467150bdd0286819ed2854d40aa04518800110c883d3f8f73e8e62396d8e61260c1bfa01b6413d2c21606766ba6f9d60b78bd804d9d519c578b4546ea1a5fa7b314d43ace25fe326e80452ad11f4b70a658660fd171401b094af78b2e1d7c45e50801d873870cd1a4ae5b214d66e816cba16492b6a92957aa8b4135ac674663c7a3b0adfe16bd35d8b49250dc1dcf84c474a9f28f9002bc6bf029d5ed1c9795b3316d9b4abb9434591782f797127d98175ff1f491538907d08edee80a6a4df8ee61354e30fbf3712a237170e3195593ea608a136163d1b523a5fa485eb50a5d387801b8eb595d1ed25a8726f514741af9a0cbbd0f6de92224f4fad8db3650e0e65b122e398ca014febda167173a2e606fd8ce85bb2be291ecebe89a388037c5f5f22d2845e28e954d50a071ef2bd720e347a8442f306fa0415daccca53ec4bfe37c432ea5054fe1942fc53192abb95fbb555c99329bfce1e74d8b4cdac687ee841e09e1e7557b0c326f4b4e070aa63d2df7cf32f1fa7554f46b661d02b371a439c66fbca3b1b62651d5238c6cc2dfa060343577a4324e360c51ea73700a194eba272ceee8ef323d3437e9452a2fa6caa1d66dd639b1086aab871b80f56b7f45a672a20d1ca6ed80ced3d040a48bd64abbb77ce45cd8576e99834e41aaaeaad06bc44a23988ce1fe7cb1cc2be79530943cd28760738ce0d1940079033f7f3db0e21f8fc4aa2dc78f7fad87693157d86b91f91259b4b1a12b4990672f1d508a706aa321ac3f6d37dd4a8d74e5c229e1b887f0075e140605ec33034db4de821578134b26f5ea799396023529d75113d2dab239aaf4e8a2527bc2d2a4f44e33aebcd667771a6ccf68f814765f09efa7227c91d533647fcef0c7f7a02348bfb910d5b431b921232ff3e783c354882e138ac7b52900fc7a5a9bdee8ab9ddeb71595889fc6f3265cdcbe83a040c3e9cc0c0e77168599a956b23f1c8d64263cb906c1026c60bbb45e524fa546b343188a19280f7b7da261089ddd9627b137519c476db0ec4df3c05c7d22861c5863702539d2c273104da09cdf54727cdccb0faeca336054441a39d7a58af3daac14f0aef5d93db07ef8c2013f45f795a96e5b1c52e2bfad91a4a1abd5dc75346504554f8c42c8172c10fa93ecda6cc7741dcf7b553393df8ce1e4d61954bbef0a5be6ddc23f97094968c4a0fc3913551499c91796eac8112805f24e3e7caeeed0ee7127274d7b01d99c52df874e53577d5b775fe8d3d3c5d00feed35769a1be5b5c7f30da0fe899d19ff270092f83b77bcdcf00f02b86444149ecf7b3df34d887c7a12b5987c9b0e46f86fd926bec37bbe15e6f454475a6f4086fd082b9a33d1fa0a24cc29820b947d62efc3294f36d29315c70aa2024dfce0161f45eaaa7a50f7c947a3b145eeae41cc3698cc8c9c0212d9aa0fee83b681a4c71bf74046df3b46cd59f70d72ebe036a06283d00e3d86e218affa9cce899b3cd651a791d0b28d201dbb967019df6c76da821988d3bc03c1e8a29c70bc122391b461f17e6884753a0fd2010e48c68a2803a4782cad46999c68ab9b0e70b7e456c067246e8ba16f423de7506e675c3dade8fbe1c24fa53a477c6aad3c292e0a9311e5c15770799b71fa69205ed23e99cfce53c9cc26e446f5b97648257e969848d2181801f610edc6932dd361adc1460096b7af5b2e374cdca5ca6b7c54ee218935943b2609b0956d3486199c80585a7e23ed8600b7b86e7a669a0d35c556644b9fda54f56c58123706a5c0de6322ae63b54818f8bb58976eb3e815ad1eabfd90d02ff88d7af5745cb6e46733dad87ad53aacb240da65ca5f6e6373c6f29633a16479968c0e9912e139dfb0bc566dcd426b4b978f2172467a1348a63b82dab31c948f742d48bbe52bdeed3fb57e2920030e27889f0473c446f778a8271d7e7cf3bdb7768dcdf3f02a972ac53703087cfeb6470666290bf522ade3ccaca8d48635e3c2697837738210e5934e56706b6e8902769cacd3b5625b5457ade95d79b074543b46040948eb6729a76ca76d81d4871b949f728b4b48f0f64ec23396bbd82ec8d5445992235e6cc73e7045472dc793756dabc9e35dc12a01da980762302a16e208a036dd4341629cee37a1e155d8c8e7a0897369283bb51123353e88aae2b29bfd9ba8e344fd5e1626f3281945c23f768cb715ba0d6dbb4117385cc8dcefb94b719ce9298fb166ffd80ecc195fc9c472783184145b61be6bea0580bf0bbb61cecb3b07c64a0eb2a88ae5dc6a231738074f42295ada3ef41c345f33a133684755b374344340b9e9a33ec3de2f99c2979115840f80b7be74c2283d9cacb127b9b21c6319127a488a07886da3eb0914c51385826f18c6da303107dbf69802f889985ba18e10f28d52881996b876039336f9b843741d37544e5335c1b75fb411a6942e2f7bf152fe0318454383c65218df7373ed362eab1da4d46538d53d8c098cedc6d3e75f2f3efd5860c25364d665d385a35e26bb2692ab3d9821c66c06cf621f58478ef8daaf39596a8272f139926fea8a2551710ae2eb14447896adee1c7a584d8e9cde9463840e526da28f0dceeaa1abaa7210652f6212a102278d871bb8b7cc82fae06193dc6cad0cca349f0ab47515bc549c681a6235ca6cf633655a7091a2c1eea9b90062cb490f454a7e4f2f7b5bc85c3f1138bbc853e1742ac1c301cdea82e5bd87c6f914a0f0bef5c2cacd58bb0de89d01c1a76ba48f5d2a966859e138ba38ec206773a60876cc6b8c8c1ae84c742d4ba9b427675c40f368c4a51fe1c80d07763ec1450b3759626f22bef1cc22d04cce2f992e5bcf3c0b03beb8b26f7b590dfdf2f7998c9f676fccffebdddd4fb9a36886873ec72bdd1fdd51f2d342a329600d5530a5e2d2b6ae642400ac3ade55b6aa6d5fe986e525e3c7eaff963b540437d4346e4d157e52bf80e04d893fa7eeb211bd364f1d4d47c1901b2e34d8d64d0048714e018da86b70465308f739e25e811176a617bcd2abf645330e235da2708be5bcd9a3bc09a9dfee78aa713a5fee67e91d365dcbc66ed06b23ddb927c3721ddda1a2e81cb430120d6a0c5704a662cbc8e66582e593f0b929a9d7d868d10a3bedc3941e9775251f84e53e21807ca7edf0bc553726e1665c5a4429c32ade2956034e88d1bfdff0df53153a27af3043cca5a7f089485cf953da2718840078f6d34dc1ccc3ac820e6a765ed473829ea6a3e3969092463d3965cf39c9e599d0ac2587e77d37065e822d5654a762f0a838603cfb7ede2ee86f413e486de7102da14645a8b99925fdb53b89745c4576211445cb40ad9b30ee8476d47352100b81ff057118b1493efee9c4aeab4546df1943a1cc57aebc95983f54a33807e5fcbc572309dbf4681e5ae8e1bc679d7aaacd9b7db5c738b472c82b3d9fae6edee975ea7b3df06d92d4a3b4ea6dde24f7b58b49939f701258b5435faa764c707a4f82b0638af0a0c78c8d2eba47992365cd8e139c1647e989383cdecbf0ac0bc89f670b51ea9c96ac6c6150b92f769cae42514f6d8b099b871cfa33a4244d5932eae0e1bb132c248922a1a7e4da8a9ba02a6592c094401d86cafa1af176afca21171379c6ca34c2ef776aab627581c6f5cb5b9d3f09427dfcdc26f9a7fe0187144d71ef4232d2775d4d541f41cc2da976b45ec332b78c6e0502f20b7e7705066e60f769fa54440e0b244886928b46cc8bde1db17d42e57637a3490576693aae49c76ff89c881605545dddc9a2a72fd77c26709d96ca5455f789c7fb24b7b020c2925df6151514eea16890db01b3ba80421a649a26e3031d22c583361e3f60a60f86519fa6680e0bbe2a194183d87c42c2feccb8304ba2e2ccd86ccbc325f5c29b615ff0234641cbe888fcdf12471b219a08c69a2f91ce6873f97efb851f8ed88b9c6a6034a6d9450f455d79da5f71329cd88d62dccb43e82f2473af2e4f09e2ce6f4e1ec213e8912150f3efb4653c334531433bcb1608af9aaf751bdf0352a4a47a64a2e739175c94b01be01019ba80acc558e958a3841682d260570880191fb03d897124fcb1e9b6f895e7679dcc92f1aa06758c382f55a25de3d98ef76849c561a0626cb7d0e2f506f1084715dc9d67fff7e1074be43b3f2e6e363bc6764be328caeb6a1341d5c860b6c3ba65e25fcc28774df0288f5963ad8432ffb1f14085f1748abb11c7efe4a3a004d7fd265236ff54dae70e9e316061b902a8528abca3f28260e28f03cdd41eb20793f25f9bcafe9dfa1e3812b87b12f8ac739c2f2bc50b73ce40f330ba6b5d85b86b95d7296a98fd267b312883673abfc1c3b3b46de93d44b01ed94d8733fe481082a6d00e1fde9906400eba53e9754df0f4dad0c0db9e3f2478e63fd8f04a101e21f2fd02e0201ecac158448cc6a86ecb5c255b217d304fccab56e6b363db23a8c6e2da8961e69c62211e7b303191c2a01babaa284bf077e9f3c4a4bc0c8455cd83c360f17ca1b906f49ee8fae49612093422053b6bedefd71481f721b3fc05eafedcf9ddeb1c48eac241f0f9e5879db4c1c3c98fab84e4ad874510f988f745c84e753a95f7fe1befc8883b67fdd85516bfb1c83b83c1966f5092e22f1661489c4dadb53d75f60dd1e9ad9b9b95c7dc14da2b72709f10460cf21a87bf7f34240c2ea64f659450962fc2d6bd49c133bdc19f1eb27790f235783ae0736a6e025b0d0ee0af00784380a1b62fefe04ebc09746af536a571dff43a2f25188fc29a7236e3dec90f06009283e410d59cdd9b8c39d7bd5b67f57c0b8ef16cd20ec2c329a7d26f3d0ba112227ed0741f87decb0330c7653f5eb7563835263de88c4c3a6412a0cdc9a6e830582a5734e919d3eb884378bd2ff153bfd2b08b7360c328bbb5cb59b0b941da2fc06fb02a17cfe1b6afb61e34d28470e2d949929e31cab4705fd12ca7a365cc31ff1f2e14772e8f2945b9f9dc7ca3f3605344094c4731e834ade52a36b7346095f7126940ec305d972304510248c98e4f2567cc5eda21af6fb52685bb20122ad0f25ea54645d4e294e4001d695074e28b7909866d3fd4ab2f015c0c11d4c91fa8a152e83d37b27aef2cbd2d151078a534869b5b87920f1416566c3c594060772386447c9eb31fe715469b4823f86b872985638e0560e3c43a4b65b4f20d5d70fba33e918edcf46a57ac1045180522a0d12f13b8390d784e8e78ed3a0ae092e9521d683b8b41d6f3a2a44ac0d8eab1c02c1d56d57b74e44717a0e6dd8accb5d5a926e92cc798d2c688743af615744d61962f371a542afe5cca0838e5d7fff4ee2bba7754706d934d99421385c01620671f8fffd36a5356e41ff8144a7bc7f4d1a635955a05f11bae3929fc85eba0121eba38ea34587be373f1c091dab13470ed78e2233994e54d03bba6600d7274d14e1d69151d098a1d4aed06726a082e575a16bef519eeaaae909416edaa074ce117868e7a74bb9a2a638f453d6b3f073cd606471893d1a9f56f63a3c1459e2afd731241bcc8cd28e45439d7b92aa6510e48843971e76e133ce0a9e1a823ee4995608f8ac4e350a7aba5526537a7e57d2c46f1d8af5138cff68daca45995783c788a21db2d604117c2de21267d5ed59ddacd7f92f6ace397e9d5d21c31dec9d219f4a95b60fa3a1f26bdda0214ec9ad90554e11e25801d40a5d22f4e55aa98e78b8b24b588bf60a768532bcfe9edff31b0959ab28da40694494bb906cb0d7567d5dfb8e49c5511c0ffd9a745ca1855a6dc42114b15b9af49832c831c68901da1ab92324666a0da64a82192828e092524829c87408caab0ad206165bde3124f86510b965843360e5737ee6feb8fdfeebab66ad0e3bbc6cc8d3a1275cc26fa2a69912a1e1a0afc61a0bfc723a126822292c9e707f285546201ca14dc2252192281be39ed5b70b2e8d7129749182362c23a5a472e3f744dd39712807b5a9067167d9cdd79a0bccc1bd5413ffb7d1fec080bcb03c210aeb791ebbcbd165ece0288923f75574affee94b4d3b3241505412774b080addb0b9793968449cdd039c17620d4bc6aece84864004563babe37548b69a81a625e35e4e183a365c4490cfcb116d582e1da5c89494c2382678775d57ec9e9480983d6e6a96537114a5215c53f2e136133acb4759b60cc8b3e1b4422d6a589fd3e8a6b2f8cb7798b658ff651545e7c26894f4b9618241ca169e90d5d9f6e60f67c19c9b3cc718c1023923fc4f2f9c9e9af98eb5350d9189ca04819943e94011dcbe12a01a1b480b9f969020cf4fb77a04fca2d8bed3b8b12d85cf1725486f725527ed623162a7e50d96680c7bacdabee7b59fc22bbf36720aacb17389845cd82e9d3a8c50c09a9cb247cd3a747b51858b5192e78ff05c9f1669496d67b1927234c325eda5b87286c148c44d375d693b2adc0fa919091b8bbe9cd528b1f5c7113d00cc8f9ff1fadd809bcd9fbd17064ec438e4dbb270a950174f4f0536c0a5835bb583d6761a73225bdb4e3e44b413350a178ddf1049159274f19838d91127ef53fcfb1ad6a84d4df91774060ab679196ec25d5cdbc659831f7dda7cd918c2c84e3666e7fc9955004e7e590642c69c47c712e1c344347fa330656a1d8c6243a2098617d36ac67c761673538753bb8b8e733c7f1c44680696e2b0a9293dea6a86aa8d85f58431b2b002ca3a90fe6d02559664c62bf6d77ad9452e29fb87f8cbd3240e9ac95b53fbf9927830f7632847a0429f84f940ea25a51f3f44f5006508245601d0f0265d14103d1b3fd08321190456d8dedca5e909819f124f3f5d7fc081f3f8db7ce60518e3a4000f05ac666dc84852050a874f086193181ca0eb96a8b1028e06b018045efaa9cb990831017947fef025f5ef216ce77ec9ece4066f0a4bdea1c34caae43dbf5eb957ab3e83b002db9c8fe88da5ba615894d774d87a4537f6e5511bac6fe239b485a1b7cda9271c1ef200ff96670263d25de6e37f6eaebd03c66645e34d6cc138454bad93e6c05b2f8fcde019f4aaabd9fb522c6b40f9d1129f148e023247e337dba4f1445d946463cbdc1d9e5ad5edce794c1883613e7883c9710914e317e8357f103f5e7d2239d5a54095fa913c0d6e7158cc47dc6067a3043a0800fbe27d63300bd0e152f3e7ed37e9e08cdb3e59ff7f80f9bc54e8819743a5ea5339e0ec254c260c7a3953ce2e5cb246c5b3932bdc73b487a2e5c0591eb004bd57cca2a83aeaf261dc3be7192a8e3620be1d5841e2931eae43e62395941eb854b94daf127c3688ed49859c0c16122867d42dfaa0f6247d69010c3d626efdc5caa446613317e1687a295d2410c4a084d19c332dbab037f361b027c1a2687a33b35a248cd325e9c5d8c3e9d8d9b0cd9e7b9365b1e921c2fde4b7ea0618c258e2a462747c7ddb92fa56ad57c72de96db7e3c35514296a2c29c546e96b3c14e035b257a12cf16c7ac86980f004d1b3e3a1f8dcc142381417bfedb99ab3b586326cf5e6891726878db6b9cd086c0eb09177af82eef8000ccf20a62d92b2a5403d3ac17a0cfb6a8aab136b1aa21ae1f30cfa9b5eb58c5631dc90ff7397cca0f077aa198fed24de097073ade9710e59e45d6c0cf059245a3d4886537fbb2fb0fa2cb07cc3aba78cc6d9c70ab12d0c1c70dae9588a35f1e03f4d8a3aea48014bbd96f5aa5948d74dc33c208d4166a98a74a5a99af3ad00fe9c9ff411a220d46b0e71681bb10ab3555413f7d99da9eaf63cbad49e4c7c970434b2479d5860a4bf49491688ce6c823a5c9092ddc068ff5e13cf88c91423e47bf81b9296b7b8d29c693d697e6d487647fcb4210d36d1f58864f7ab91c50c4c1808f9c09f948d6cc9e60f37f7f4f42661938dac8c4c8f6367f958ee115a76bbeabf3063381a472b5fe5033a1020f1be3f2fbecd27aecea1d15f76319a218afd1b6dfafb68a75b74dd40fc68fe0bfb97d10ab54b678171b86cbb8d837c50d4c345abf7349a25849d014116980ba21f6bc05ca4bcd633d9b0ac7ca159be66de40086e9984f1612edb391617c5a380c259b745fd60a2104b83e0aff028d2887c35b19c4d03689e8ac3792177e4e9b8931768a21bc3990b016e1bd74e7dd5a4fdaf37b771766ad6bf204cd6118ff9538278476ae7f20f9a6d6f694e6953a68858135ae9e1537ce39f00701b69739522d35cb390e728e168deb9a60f5146638cf7355823996cbd71d3aa7fad0f59d4490d2e16ff2223c712eb169925e0b96c749380858a501edae689ceddd9f7db4022924cbfc0f757aa38630d279ef268e340f7ab1e0a5a36080d31367a435b6c062a1855b14bb7430aaae2f5662f0a7845d214bd0eafb5ddcf3cb88c33fcc82af57ff9e06e56861e2656be5da7036ca2387b35e708851f58fec8279dc0dc673af90ac2b42161f665fd71757d313af0335af33b209642e6a7451064282d27f1d9fff50445e5c3240456518f37f3d6c5b99487d0f1df950d5664975798e969e857248bd6e11bfccef4c09ded128766fbc4b83164921f75982b5dbe8cb6a429249a1f681591620df5049d2c747d105cc81360e77fe60e34ca4e7940834415cc607317c980437ca5dd9bfc9f09e22af916c06019e21601125813c6ad0557a884bfe3f2b592e0af17514c44e4ef4708b63784206db78b75a3c820f4b018dec264e6eaf7334a9e6f51d2043261412048f317624192de080842166428a230c439d0fb3985b6f68e0f1da5ff65bf65928a8ab772a3f632d05f7f928bb571a283c1d42c0343848ed4c646097fe6eeac9d9c017f2236324e174c884f279554e9a32d6902ab0bb9db9407863c0840710d8cba7f1a268c3de9162c6bc8b8562240abe2caf0299ba824d256d74b576264153abb2ef385d2e09d1256f1aa7a788dcb8daf9c5ceaa8391b43adadc9e935cedd378c484fd15ab0872cf2b20edf51e5fbb00f019249f971364b5c2a37287c5ebbfc383477ad64b75fbc4594a1981d4e0533a98554ba767c0be78a55937ba9e5a801e1eb1a0e7b0fffb62bd85725f4c5f1f881bda9d82d8ee58a73376d97334489e4e61ed8e1b95d9351ace0e4cc66ecba89ad4a0b18f1e6c4b80d76a043be658b7f2db0fee884fed6acad285dc489fe62a5b77d322940f6794fd0f8991f26feff812fc486d970115b9c50369248949d0f149bd3c9bae546940f4c8909edb459b92e49464f8f55a660949040cae50a5d6ce0ece649ca6132cef4bfb60fbeac3680b76d9dc8ab2d48797e82f409793c623a13fe93e7166d5d42a563a9526a91aa43d4d7a0b5a45489c99e22940fe2e9f6609a83adef8f1c55ff09dd8ec6b68f6c8f88f90e3bfbd8ae0eda058a0fd8d9d05f5090c6602ce1a5cf9e4f73f9573c2eb517434f6e337a2ca4b5745071114999291a72da0584db8385bcaabfe4a5c7ee60c8e8e103be17fbe54a8d6c96132b2d82761fe4604685b3e6e21ac47ae96c9609df42256390a2ca66b1a380da0f278f497a71bd4d307d9209c9bbe1c84fd57d5bcfab26f131ee151e45299e7aff2a2e5432f72d170f8ba5e6103d4f6f88e8e28a33972e35a9f69810183646f51d0349cde9ba43dde56ae46861b21d3d10475dee8e1eaf3c58dd715b155a65c539e6728b913eec7498051dbef8e3c9993d749b5b8f14d9fb4008ee0407b8dc2b51f4713ab3ba6c3cce5aaf3c88b9ab896fb15579984b0c8c79ef42ceb0d7d8c8fda424359dfc2ea2bfc506d201b56c29d2a2b0657e64fb099fc3874552a5c99618951e63a101e62ba1ee1c1a729c42467bf70fb83df69229c6a33e9d5019274c565a0f6a31f9b374258f4837cd5a515a00633900f6148799154312ce08701056a6e61c420767582524660ae201c43a9624a75510ab77398d23dd70a72f946d7710f190374ddeb46bed7ba2f0dc4eaa401e8ef573ede2f6dae51141a2d5ac88455edc61a8d7a869f9a1b4f73c61a2741ee60caf063aedc34ac898d6c8b8063b992ce4415023f640a11f7f543b1c8ce218d4d269d1f65b61cd007232a3bb720028697866991ee53ec0b272af62ff3d3da4ddc920775a26f291bac2acbcc208f37fd50953b62c9c2ff3d2f98469da592958c4d5f5e2311229c1f51fca413022fc4cb21707d7fe4ade94d6a08dd41a89a955bd56eb4800d7ffb635177a34030a61e365313d5c940bb2580e2159221953db4a3f73b7954ba7308045a5ad488393d9004b2d06bdb0b06881b8f2de1511d89965a1bc9e883b79cb9a2024c786477894ae38478d018da540c75842903301941da5379078ed903d320a2ff2e5d9e582481e323953358f3ee75aa3380a4bfc1eb227f443f634aef98043135a7ec8bc2105f3e8b5c490817b9e0afc66c06af5050ab99800acbc53c08b01d14849398c8402ec3a3c8ef54dfb7fc6448b2189c2e03f6393795567d3fd2c44aa05923c0aab559d59870894579e54c758485b472f4729d14170abe52ca929d78d9901ddab6d989001ab533155802aa69080769c489ef0fbf56a45675663b0b822f87bb00a3d78ee35afbde3f90f6343ec60d2d309e82fc6f2ee5fb4c675d350e6542527dd7f7f6caed3de918cf92a7ba60380182191b1f89c288051510bae574b6fc8c846aebacc35194f2397e87b677283fbf324da629a83dfddaa521f65364a234b184a39a4a08862e4ef108447329c9e6a49204737e1286c945651f21b5c9a8daaceaaeaef6456c4117b40d5697bc43170ae1e454084c8610e6964eba237aa239217efaa8d885c59e5f3c4f02458e8b76d32a22349319470e01f1105450c4d1c55a06ce10923128a181c412a4cb8b381f610cf8098c52a837c8555e6b37cd631324949241914f05e8e657a4aef107ae8e778d960a6044b11dc50e2c11af10758ee03438343d425a1806c38d3574d767d75beb0944c1debeec69b5c55e56f09556d05f391aafccf15678a74e633545d3d58161f94d04c17508873e0397787c0102a476ca281a17a2925023204fbcd8385f9ec4455a6538fee02643de26f76b70001459b2d65689d0f39ce2a8897bc3d554a6c0aca3362da65511f18463f07418136184a39d06988a08c04c98c900c4486864c23bb608665690afa1f7296ab22f3450e70576cd3c027cd37dd3252f93b08621a248e48201e80a88979d094268f7e1549a92bc96cc909f8e09f1ce144317d93532d8358958f4e151ad51f0c62b6c817049231122468c2399bda6395a469c224beb23efe7e4435a810007688291c085687c3f5a5e7597eaaba424a810cf02e23671efe116bfc4b2cfa03b1f67fb13603872819312d3a56d7541d82518532854155c873ce929e7fa5d8f3c43f3e27b084c898ddbdaff9ab796217a2dfa90856abdd2629630444ea682b47581c4dca182184dca739c53fb38e082f4f19632c28c2c859912967c020405324863493b063a294174015b2f9a68181cd7e07ac37fedb90e3fb832a4caafd55d365fd278ccfee9d469d121b614dd210456923c968c15ecf3744df8e828ae60f5b9da7b669d6872b014a50cdca4a75ae96d7298462c24533a294780204110b7884bffa4b30e1fdfcacdb3802e6a2382f46fe22ab30552b26873047b33ebb2cdd27d8ee0a969f3d45aeacfdbcddb8b3d30ea3f19fd52a345cf9afe0eb810f74acf4e4ee1143ca9441863240d6618dfbe37efe961ecee83148997b55cdcd13cecde3cecdc3ffbc852ce89a814ea89bc3231c020db66dafe3cd29185cc4ade8d5600779f474303afc70fd6005838d4484e3d4000481478a58b3f43862b4cd04d4a83b26ac3746879ef0828b9e65528800a7f8494470b74dd075a4787949286404f20b7c9fc0fda41842fd0209602d122d6fb0eb3505381d671a9fc21c992e68cc869ff6b9f469f6b9321f47d797f427f973ab53834264fad35c1414aeb97ecda68afdb541bdc75cb2fc3c29aa2a3aed3e5e4fe4e2a0fe358bf5f20014f017e638dc9c1c61f2a0152418e1eb80e9f3ee2f7cd9634cf9dde5e00acb93e1663f57c1dcf227437fc6441312f7472b06bccf04efa5fbf6db60f5b08c85963bc6f2c26e3651e13078bf2c548864196c08ac2e41330f13b3923eaf3668fa053a699c7a4edf8ddb532e814445b8142d650fade7d51982762d9535c449852db5095143a3671e41973b88153d9e232a00a914489d8793fb2e775c2446f26cd4c55cc8de963b4076147d1be8b6c956c47287649b118ff65a4236975906e286fe89dcf0a605b192198a60242310c54826c172c7e18cfeb81bd28590addeab32e0474f50719fc38dcf7287b45985b4ee79a871212d547043b22dab1a0a7af865b903843b5524ed63a29b4538b9c7a21dbd5bee503fe2bac184259dda97f5858ab4c7862ad8cff3052f77642ba05d31b6c92f1bacb04c1b775e0219368d185c4f9f852092d4f3ea9ceb6dc29bec85c272c7dfdbc3ae333cdb2e77005e5f978fbad467ff724739908022f4c105d651cfcdd3e7c9e50ee51f7502fa24d1d653bb700529bfd4c796d69f1ce412d8e7f3e50e15a0b0e771a9cf2f0bc87cb7fe1cde7da4b962852adad5bcc0d4a83cb485e1d0ec79351ab7dc714d6b2078ea04a27dba33f81a3c2d3696688375c01e2eec3bf0a95bae6fc5a6a4353320d6b0b546a1c7fb570ec95407a63390422c77ec41171c8c34b43e40741d504f1c010ad91b62053217d41a64399f572f9ca668bbab7a35109a5000e6f9f36aae0b0dba05d7884663b8e3281fa29405d7116fa82172cb4e969b204fe87f0eee1e1c7778164ba0cc817f7b60f589a2e9807ae00b70c8761d77307ab08e6d9cf850b755e78cd82cafde31e7fb4c9412ca6b8955516e29c731092580008412273e4ecf7535541e54cc39256076194d43497bcd565ff638dca10de9b13934e29926a6d4527faf0dd11eef3209f874b883a2c170b47b1fcf5473b8e2305fa20c1d0d6a13c489c3cbb162da4bfbdad84ea68475011da06fe74e92b5680a3e3e0311912c10ee86877e029d3789e43d202a8757e74b0ceb7d569557ac184645fa96cd0dae9c7733095714ac8b95d838d3350a92720daee03ab07329bab6f2c44646eb541433781b58e9f8e48a5307e19c59f28ad9e54188a6f1d463ff3a2bd8a5a0fdd4c91f96ea8e5457572861bd792e726051f845fd8276c8b8045b6edc50acf19f764ceaa8c235c4006dda4e38ff7a9aa141b3c398729c1fdf4d0a998547dba00dcbe3786497f6abc40716b3ffa9d0abd3afc8f5ccbb9fb8d0fc3002c13146d2db054583e10fa1eea7937551c22651e22d59b4625fcb0fe69cf86863c91cea2516684ecd3a8622d3d47c680a8d2d3861e04becf824e7ed29cfacd1d7e34f31de4fcbc79fc23d5f04d13b872b30fa53484c32b3200ab3a652044322da2e41c766768875a8c7ad1895408e0451e55927899750d607900e2c31f93d9adb8894975d14410c2cb554596dc898b181e8bc7bc512d03716f1f64294c4b517f7b6bdee280d9e50736259bfd4076fab3d4a9274bf709fa708f3431a0f33e841bce60b49a5f4ae10ba24356382f2316e966d6210821cfc557f48ac9e3cd133f756aab19d46dab26f57dc4b934b3c668e177071ca589834247626d50b3f3829319ac1d096e51525140aae1754b95f7646e28db042b511e2852259cacc74a97e180ea0e5e6e11b1eac2dc62a620c68bbc0349234a436aed98023fe48eea3250b9286401378e69e79c8e545d59e3162b36a0c638328e5fa2cbe566ef3912ff18cc9f3a4e5d7fff8ae40a360d04b2d813bce452e50bbc9571636e6faddc2055c1002185658f4616ac10b8e692d5f2119cf38b7cb7089698e548673a8495a216f27c3a6ec80a92c5a9fead57d59c6528b9eca44f70a7483c89afacbdc83e4941e4694355641cac099d6364b2da2a77b30434194576e9f676eeffa18bfd003f50b72cb4844f4bdf76725048bd91f17a54e28a526cd45f35f0c15ca91844abd97b4dd25db4da8669bf87da1bec7597cca25834856f6b91bb2db7d95d9558609c93c03be3d945a960ce6839b4491a6e4e299e4ab3d596dd55e097eb9c501ed3fe68aacc5103adc3e069f50a5a3ecd523d3110095991b4d9df6f6c53b63c30e4522fe37aa3455f240152a28779dea61e269aab4954089597dc010b0feb9952b80f02ff89ebcc26e83cc42a82200f4a24788b1461d78cb609da505ce4c0d61bc59349285fab026e08a2d35ae1882e69c675721840a269a998d011aba67cc4492b46838ae456b93b4580f72dd0537cd0c0c4936aed1a6c59ece1c062bf4306d03465c422dab9867d176a8bc37606ef01c0079060cc0aaab0ddcc23ede61e4d6f407252a09ca994523124bacd79f179832eeceee037b70e37a2d8b12476d2cb0aa6968d59984abc889b91659c403e895680f6eac3a5c588c34eba0968a12553ac177c8912dc33e2876cd58019d19f71a9dc06e6839e383ba235279646efb53ec2430534ffdaa71aa19ca7975a3242cb69020967112eff380c02dbc5f0b6ec520a6c47deb8bc9714eb988aad20a57d6f96ceb70232fad023463119d741aa5548ba3cc5b858022e8283490914e1bf0132424d3c920b59a78871f2a5842c1187d39689a4163bb6ddc073896359a7d7af77ad602f5e87886d883e2aacbfe2a2f37aa13372ab84c65ea946de0f288a5a860924b19f93b8de0c30c51310125b1d09f12a2c2b59a8566ede965fcaa6235d11c1a57137a211d811bce1ace538c8989b6f9008b09656be2417831eee836cfcdf80c5353fd4061ebd62ae1113221159059c4356160971d0d43639430b700e6ddb00c18e45171ff0e5db3eca3953bac70cf726f0230201dcef5b77dc364245f85b8ed575e96775a2bfa82032b93e1fbfab5016a52205a7a0b7f085d44dd0b018e423c1785081320dbb8b068d2f4dc31975d833ac475067420a26686222b671d42c1141aa7f33b2f14a9a4224e4012b85096a74f556470848635f40066def907d8e7f2c32f2d41cbe09bcbdfb900b945390cd8844f5b997eb1313fb27d4920ea3537cf44b187f6f0ea2de61079955f435f65f6147b2887ba52c950a3a670654cb0249ce97ae678dcba88cc2914f6558f1c99ebaffd58dbad953777ba80baf79297e83d34710c69e1686ab6f41681c82dd39757e8266c15f4ad60f8a6d94acdd9d918e1c046b3b062f8c7de3baec6493d32c62bab03e92449ef2e57b1833cdfb1cda890bf0b8e4cf4a0b6f3ac95b0f932d26b0f81a7201da76e08cd3f63e3d8c44078ec26db07a3e92e757c9a17dc82ee3baea78cfafcd0814a01416333ee71b4b6100e1bcb6a9243bea4ce96346542a7758815f0a1aa4e6a272b99aa4b5e7901ef0dc544154a875589f9e3d55645638c3fd32a1ca9411ef2ac2c6f3ef4f6a3f0dfbb55419b0dd85efbda69487aafaa98e46a8b920b7b47d5728a104d3871221a5a31b0026eb909d59c886aafd8d1acf3e431111063813d55d10180bddff706eddbdd5aca12d72e0357a977d58b22c755b68b0765059cbbe434c18011c5ac179e4c895ba3c1d9b92e2c9a60a02d8230d4d6e34583b057cc1ea866edfb36944ab86024aa3d26155569eba1df8ae0637e01ee1521be820e910d9386f3046141cf23b04eea63236f91877fb805cb7f11d81fdc2f4476578bfa58ab83c1e761b191df1c7bd1101c343788adf6bf811802fe00abc0236312c1b08a23e55cc9817b7e7014c13996ead9ed67ef2a5215065a01cef42048696bb91b95b5cf3b13d5d0d414e636b8ecaceac9297cb4c8d81ec18aee23b5edd7e62e1e86a9665297e0340898ad0b0c3e0c3c9f04ffa9ce03ce3f49e3b384a9cc1b0797d2ff7bd7fe5eb56e1bdf11bf746360e28d7a4b93c5c9279ca6547cf6a1b155fd9753e313e82634d275b8b4e569a6a953ac7115afb9aff304fc1dc73a8a40fb3820a651ef49acdacb5d102f0b7f13a27670acc3334f7cb854129e39358acbbe9c7fd4b1a0053b415fd612531417158b7cc402ebc37de9118c7d992f01336ffd14aefd287259c25445c3dd8fc2a308e99814d1d053444ee861c836c6b9a3588587a04bd26c415bcb530ba7008cab67b238734da9969991dbda64b637efa145641dc6eb6c8c934103b22a3638acbaf5f3e626fc5e5c691c244f706b48b7a5f96427cc2b569fb752ce1315aeb7f3f030985e3fd2cc159bda3b7d8f96e1eaade7d33ee327260a3f6981d5329b80169c648ad6ec397aeb96b316ab404b496e622adb4a648e7a8d15b15677905c752a323c5a138e6ef4331af062ae98acc7cf0509ce72eab5347e2e52915833db7b87e930a07ec8041ed322d24dc8af8922dea4e0aa7aba928ac9d913fb818af1e4e06fc8b6ef54307aff1d16c8346c240d13f380a42a74c327b03296130e2529ec25e746af3450e0a2cf8debc38d0aaad2bec564c40785209ee7139882a05e81ab03996cdcc2677a1201b4ebded8d66db31b5417d73824ddfc9b73605ec52453c737c5e80f3c86128c2a084c5612d0c5058b342335dc76ae1fa36946c11788805b194a3b2c5d557650eea0a9bc8225dd1e66804373ee9cdc1dc253a3e7c580a578d32af7eec0c9384d016643fdf79c3966b4566ad5f062c7ba448ff64128e49c6f4a3b1ca9f93d642f168b67f77098090baa62af3c312f1a9609ce3469a8149362966c377aa97c27b5af095c5f61addc246ec625987eedd4ba0dc39a3bd4f0112d52ba438e1dd124a71df0df4634fbd436bf4376ae8ba871b3cf451c4c749ea46b7431311579aa9a3fd354636bb11d482a319071f08c2f72292a584774384ceedde52f349c45ce3b33ae1a510908f5e00e0a63d54d662dc6fe67620295bd73d238392277d7e53f76f1d746f75927c28f666ed8ff7532bf6a2632b4990cd29f2171554ff9133ce0b0b0bd73e5a336cc416ed4913ce1c28cf8d3d10553a184abb1981c096f0585c140d7d3a982679c4d454959b78adea8660c10ea76236d157bf9e222147ca7084c963bf97507a315a1e57e207a97af433ed170e21f3dc8d94bb939ed83e8c963514efb5bac91b62d4e644d98f27bce86840abd7058f4ac28bb22050bda887f7cfc89646245e555fce5e4451a146a02dd3a0ea5cbb6dc6e676a50087490f42b8fc809074f97146a50e80534e4a93350b5472cd9a94129cb6362d4d8bdb4488174b63e2bef0d885c7a0b3df0a6ec845316e8f6c08e2c6f386769b9b48f49afc7c01a80c85ff67685aa0932b6f87a31c4fd4f112ce1a7719ed179debeaf6bab4df646a5c8295ef1cd1d0652049f1f626bf4a98ccfaae86a9bf30d57dd6cd687a9799d1dad5ea98f8fb90f43846e651426c2b4d509cfbe02255d14732675f6da69c01a5a30339fbb8992844496d445f34f1cfc0ccef1c2e9f3fad5d6e684d37bda8dede81a1b20f9f7993156f5627b2bcadc03e12a9a7ed6fe8901dd96b66d844b51626b5a1e55ec969180830438c3a3d7c8ac6887bc340fba42012db7c3f99b34109c845ab51329b7dbcc958930efa34109c44e82cb8a90c0e3cd557d61e6979dca23321508a31bd9f7e90e741cd9392c775742b2f3d0828a0fdf80d74df5f625c49012d1f6cde8bd295ae91ea23532c2a005be4d8c457316f046adac62c743398fca7c3688f5c70c69d0c0def6980941d46e8e5a1eecc35648da6a787e725efcbbd1a513ae5dcc96720a96f8eae709bedc8a62fd7a53feed0e810ea1bf5fc0ef3e580b9c146e209312dfe8104c808353ec036c8d9d9b157713207f2ec6f29e4bb76bbd04f84b1f64f2f9457b6cf2f3650ae33cec4b94312ab8ad6cc86a1f48fa4a98d75624e47305007a6f38c43433ca512e506d34fdb68f5246e75d1d0cc540eaa89836687a01b4b828338488a7dc4928f30fc2ec14a272359dcd22bc4adef3f72efd5ec7915a8184725009ff663de16498bc6b8c434430b557c0f13bd6cfc15e06eb17d286caf6cbf42c5531efb24d46c29e94c0dc4efe3f7a260fb89f6262c6ccd910d12ca99a3119d4c3a0727d8d760a8009b0403b008ffeeae40f093327025c052339df6bb7226e5e36ff2c7f56930f7b4e87c868efbf460df037ff30a868f86ddd96e7dfa06487079cf882b168b94277e81360e437fc1e54033c8cea377e2bcabb382be6a564192e155a4ee19a3a60d18685d83cf1568f7368ffc6b2e6d16bccdc1c48c1fd011103aaefc331a8f85da319fbfe782e7deceef310d88b23b408f0d8040b8cd207b8995023c55244edd07ee6d0921dceda852b0e3acffecf80042d90d5b5548470918b3001daa5db07d47f603a64b50f4bd2de1cb518d827879b935e9b2fec9d228b33cc1f6dddb8cfe843acfb848f2118e2d6df1b46c75cdb1dd5cf90dd79c39307fb157770ca99bcb5789e955fa1fd64ce1b5bff73b64cf15d7caa5b937ec807aa4690c9aa372046637a287c0918f67323f9769802347e6bf465e67264f5f2de5a2ca81c6d32b52e96645f246bd816850148d1f951ce427e083d51a504de56ce50ed926aaed8570add421e31853a2a4187371625c19862d706ab36bad2f16e00b557d3a37a5b4a7d1d59724a18b8b1b91d7adfb0b28532fee2f652e1565c76fce5d930924a9e90446cbc0b729fb68286573196c18a2c24418ab2b1438410cf86e192a0ea5dd2e0ec4cefe764e691a179b231f0d12f42554be4c3890a4110c76369b3c8d61cbbd8203d2ff59055ed7bc4f1748f15dd4c489290a98fbd703bf5ee03b3f227201c98e6b69c84c10c6bfd3ad80fae54cf3dc427fc06f10267421f0886792497c4b1f09027fb15375cb73dd78d78a00a38724a4e644b6cc7a71324d480a44fde3af0718c0a907b34085fd3609b12d50dea92ee13402f8797b64923e4d74aebb1d0aa63ebe2a857433df2725a1d516d412a8df3a2b197ee2311991289d9618dfd90dd77049b21d533f70aee207815e8c4d99fef55832e2dc1968ffc618efa626dc60af5e562b469a58befea67e3773e52cd158111c51330ddb9f6d9756c5cc48227f2298c4e3e6199d308aab7bbebef6b00f6317db4ac9572b8fbcc184876d89f54e8a9ddefac1e9197e9fbbaf4e94c698c81c936c28afa68487855c3cb8967966241af644d543e3b0b750e58abe9b5e0a43c22feed8d342542e35ec06f286f724f2634ca220f2f58a095dca7cbfb8ad28b7c1cdc630e048bdaf3c55857abe99fa2db192ed589ff342df27d7ce4607b683cc2d8e03c2738a319391f7ececff42cd99e74e386606ff455c408e525cf716ea6f1c3e46b8f5f1b179c77f4d273ff40affe436ffc833fec6614be20a41b123edba51b38da26777a1f2f55651c079934a6711ad5b6b2f06a13a92ed301328fb83d023f08f8c7f9d11a8d782a1e468c1e81455cd75de21e909863c88d29d79c3c09c5a2882ce55b900a6e79d5e0223fbafef662c4537c449270c7022423251b90a5d18c4983779cadd8ef0502f8b7e39077d9628ac1dcdada10175894045eaf8e1d1aac3c10f06b756b86e1b77766af3de2d3e62492a9f45cf9129159784fae06a9b975a7342874c22921a7b2715446d220c8424cb2167d98bbcdd83fff10170613e646fbddac28a1159243dc70a3e303a8dd4ef01a28df69a518348c67a01e6af54e944a10dae38c8017a2f1709bb1052fc58f053ba4209b741f4f27779fe6ef6faf87bdef3a38324234e8625f69195be1c56cb496ab32d27b20f651363345b4ce1695bd0152684ef8d32fba933e52ed6601bcf5037a40c3a159309a59a503558a0c7add881b339709d8e8117be8560757820c7a3dbb160b722a7e2d3aa9440985849e7919a2b6f0aee33ab76a9f1c8f694517a01c37c56da87d64e5866d40ce5ea20363aa4d232b09d97b932db79452a69402a3091b0a350abbab49139f6b202be53086e6ed26affe29ce8714a2ac6a9f06ce8714a4ac6abfe37c4861caaaf6358ee37c6461b3aafde63e14f7ed131e3a0ceee39e1fd2d475744cb32854412bd47d7a62811bcdca9c49942c09526975edf8a73de826a81fd744bf587107e4a266a2f672c4e4c881b3aad559d57e163c5914a1f1fc596bbd691ebb5ae25c7c74414c1ebbd3b393f6a066da8dc7741f705fe3a2f68874e8950f3900e9e1871c397248a188149228c991c2921dfaeb99d4a47ff2e3ce5c94e32f7171bd208af85e8f76476ebc660995c647bf8256b54c6893bacbf221056f579426d2781dedc19f9f15fa1dfff1140f3d63a1e7d633d10ff51f1eb886e861fcc73530fe88bb8ecea8671c6f0dea240e2e0c758c8b0b43e5aaa8c31716b43cf5ede6e103a2b30dd7b477437bd06397a3b3a189fa718e87ce4e7af5c1281fc30ffe17f3b38a0e7d64c16455db6455fbb373b2aaf591c593552d778d2422437745da86716c18fee311fcb20876a68ffee39fff64fe47119df6808890e43fe79f238842c59fee1bdff1628432a81d824d0174f64673655ae792c3bee63cf635f7cfea0f0f5de3326f382137443ed64e2ecd5f761f2a06f006f5939181d1a313b24d7d6b745a3f4914cc6f0dbf320c51a3af9f5ab62e8e9e5ca45ae5841852b746f4b8aae83766c0a06af8e85f95e1045972c67f335efae6f4a37b900504aaa4d665de9380c0ed1deabe16eedbb35eee1277a78581753de8f4e2e87ad02717d7831efc847cacda77fcee82d8ba6d150f40da934e7b1ac936f5f9cef42fd462ab226743727a0473aaad0de9943b82eeb0b139c277ec12e05379e947c4ecd8b5f1b1bcf46d0b201dda546617a206f421a88f453cbbaca979ee783dc9816792ec2060175376e02eb813e2f221f47961faf340e4ad47fc0b6e3fe2b36753636e88feebe317c63aa92da142871db720c5a1cf529c07529ec12beab74729ee06249761c3080d9348ccd4d7c61135a35aec952482746999633b5c74e6308f1c0f762c5eac03c69d5ef1686059b58bcc24ae4256ec6995ec3a3982da4e887a68d60f3bb32c5e55e78bd974de61dc479f52924be75c03d5a513b1333cbd42d2ab766a4415c1cbea1f9fe0e58dff9a8813a207f7a4ce6baff316cf987aacdcc7dfd12ed55ee719d4346e0d9676613a4c23d51051044ecd7cfad744feed51d765d3b3166ebf552ac479c971dd919473fc1127a7898888889aa89b88899e0005c5149b818839371af78c2916497107aa76221288aa7187c61d48831a9d2e94adcbeae199e93333a55a15eacef0b8d1b8f7c038482efd013b83b97408ecaaabc1bffa2bbecbba56457dc53b0eae479dc4edd6a01e673cf51a603cf59489877fe4becc4998c9a967f3a234d44083ebe8aef38eb78b1886fd303916bb8f520fc25e2f12e7b493b4cf89e3481c0d5c0bb527bd06ae99b44a7a06a9478eb6473da3393a38387127eee0bcf4b8d3abce5929971e8bf42a46fc89ad8844c9cb252f3bd7d1191677e24ee471e1d1dd2744631f223ef5204c4f3b18feedd10f93d36e087eaf2c180e1190c51d69407ac5dd4772c62108e743f83b2775315ea85fac11e2b878d371d106d3b4d8f332eeb44ac210d4cb5f5c06cc264706972887f2457a8c176a10f6ea41e24d7bd287f0479b952fbd886c236c5e592279c7758aeb56ab24926ff1af89388771dabba9e1ba8fbe0e3803f7f1cf40ea88684f529fe132dcc58928a2573bc3e90bdf7de1ce459ef6a4532ef6b4273d6e4448a714eb8e6674f1c5bf3d92c1bfb8630475227a15436e3f504e7d6e3e504e44af62b8f422b8866e3e504eb121f8b1ee5399e1c54506273d06b7f148ca5f705f6de13ed679e927eed358b80f257d8513e2f232afdc107e53a7437bd27b985b47243d07c84a75dbaa18a5a4dd4c6bd75eadd71e0fcde81a60303dcb56bb0064c1f0a979160306c72a0fbd85db557dd84368c3a6669b4d6d7bb5b43a8bc78bebbf321b21a8cb1dfff8c5b197381e97330e1df418f9a757d0379fce584c4755c1b7f0738b9fce945e9e5dcfc22d57a7a35093458994df9caf38999e5a2f42a987d34934ba944be3e443c467f1204ccfc2e2f5c7e62cdd10fca7eebb825c5e8a310a49e39ccd6ba90404aa66fcbc6f7e6af7d3fdfc643fda7af0875b5ebd87fc532a31a741182324f52e41989ebbb8fdd89cbb21f8af926b90e39cf62610d7dca27e9eb671bca43d6eb56abaa35095c29f11d49838fde31f568b4f67281c653a4fe915fbf44ed2ababca225491da3cd3bf1bff71d14ee3fcf4160e08544d2f71b1bd8d93590ffa36f1d9c9f1d0837a9820d9260fa76bbe713237da83d7b55b4c18ea17a7921a28bdfaf8e727e8970b3f9d8b7ab5403c389a1ce5a767548397fc497d42f919d31eec7c589611f6b24766719ede36bbbba61bcfd2c5b4c79d0f2bdcc7bfe2bc514ea32a2abe403a88c23f4e96187d3b14d4ab8f3fd6f9e9f302acd3ab159fbe52b9232d6ee284e0e9256e08ffd64920e7029045a7ff00592d9d0f18173920d06717a47d4c3d430e32cff6f3faa1e8f6672e84881ecb42415586a2c2b3e2b3182c3ef3a559b6d7c5dcb607a40327bf517e817c8c3ee38d76f439c6f6f88bdf8de71b1272cb95b3e4d2633ef5f8b4fb3cf057b79d65be54e504e4e3e4bf1c9ff9b742397af5551dbdcafc861c566855ec5af769f4eabe535dda7d2fcfa8cfaea81f8a47876a2febd679b16e8572d819f899ebd02be819cdae2e3aaa57d4b3eef2cc4fbda25c33bbc8b68fa04c9102a2c73c1a7d7b37b786600bb2f849abda678b7294cba115f58bdf4e1e07f95cd41e0daaf671af185379861e5f7211546d34dc1e8ac68f8bbe19cace70106c14fdf28fabf098c7227ed2abe8dd91fab5574723345a92c19bcabe07a897c716124a7e5b47fcb48ec0f92996b0f99d82e74600bf53b8c0c967a61843e56185aa76f8a22deb65f44c6e34f18a57f6b4bdab8b2ebaf0c2b377a7b5d7bcc10a593b214aab15b2b6462efe20db03602d455d201f268fb92ff52f06f54fe5c39e9d9705045451e7c7aeeb8adf1b0301593259c41873f6ebc218889dc1e19d0a2c4b86759e795a5b107aeadf6ef1d43f366236f7032781f6a80fed515fa9a2b5475dca404aa2a8bf361efe9873b650456beff26fa13cf5762076063e7521bd824efd3aa2f989baf70a3a752f864296d6d197c73a9a7a4ae3b9678a216a74af88852aa5afc74d3529bb21cd73762e3dba1ba2615761b4bd6cc49c4551c618e75c988e3242083932c491916e341a8440b48739bde855b92bc6186137e5b944b632b6a35ee69c334a081de36944e4851e390cf04796d2dd31c6d8b11b3633374b23a48a0f58e69a46f26da31bc7afd5a8f18442b64f78ac94d735b95d1828a78c31ca6802d35064082124929025c709a5caeeee2e94114218a118b2cdf600553a7f6c485b3a69a3c9a40c734e8eb3e004c8a7bb00ea6949f9de66580241dd2966b006f8429d11b70b0c8046d48f3eac30052330a57ef5a57454ed40fc40fde0b7141a78f4731786cabe363254d5da3b7240b65b6f51a38e8e1e696aa150f2a95fa0276c3e63edc865c34875e9115d0691defec9abdbd8def46d2ea698414de5e624d9c223d4056a3d692748a80bd42af29ff6b1c5c3a47eb4e8a36b5040f9b8233a6d6fe776adb5277dbb54ec253297e972524c8b30c9472169466f3c663ced8298f1d43392563f0836c2c13f082e7aca38da884c2379b64d5992513ac9218739898ba46edb7e4847c0efe643fad70f7920e06957b5dd1926358c250cf40f319f5e1dec7c5428506d51aec57c31afb5aa3d2baaed9d03295d2ce743f1d1c5acda45cd6228ad6216ffe8c9bfdae21faa853b712cdcae2a6e34cc507aa54591d22b7e16efd28ab7f34fafe69266f10d07357ddaaa6e5b45729ad1649af4cd33e6b6210ad8e71291377936b5154efa6e26d7d1dbb6398ffdaddb9cc843eeab0fb7ea2aaea32547e4556ac961c9754013f7223b547b0dc4aa9af4f14d16371a2d2bb90d18d40c87ade3df874e736a2f737ede38cb6e3e5ef29ddec977439efa6dd0dfd02be68ec74aa0572e3a00e9f6875e49d42908513e761fea59a53526a4d0a2c94f77f1315dba097ed4b11da663dcc577f1d8b5fd986efad9457ed9511ea68f5d10a62772310321d3d11e94415565bc5cccc745821639df7e62235ebe6d90f1d86786472a7b8547b657d4f9f979ca1ce4459b6a326c18a94f298661ce631f73224fb9cf9ffe40bd2ff66b88fc29e1b5d1c08e7d89fef38f22a58d9cdaee349a854521a4679a4329bc71474c8e991cb6a43cfc0897f0f0dfe2cbee225cd2de1041c0d207618b09d1132338e546a727c94fd0901328bd929299389b1b6c7e84efb88174b8a47d0b0293dfbcb71dbacfb4a9cd8db607291402731efc2f379a52b75be3cbbc7d74e03387be75bcf9984178a066f321b38d371ff0a7bdad834baa14972fe955e64376f0a73dea8437084bbe7beb519fa993ba20f8a7530e621c045a185e284b523ae5a45fdcd70118d41e941d6c2d0c748883fa41250f1d2a813f7049af648dd614c912a11fc02fd0929dcf4c59a6f9f4e8716e3f24f48be3e8948bad1a32e4bf7521dab77f44be65f31692988c547ede819f7996dc38b104084672fbc1a7164739cac561f80bdf5ec57019d5b5ac722c4ee24cec5ad16b1e630808adff504db41e3aaa899f87fe62627193d71f2ace7dda9356482b9d0b4b35914a9e719f8aaf2bc0c5575c476753ab5cc9775b00bfcb57bdd4d93052ab933ceec0e29a57ee1bf2d5e7b603c94d5ef28f7e2d752e2bae759fcb0f152f696eea3e9795ae4749f3fd216ffa547ce6c0efe22c9d0d23b5e4a61f2e5eea82b8f84a1724866b426a27447b976edb43392986afcbe0bef82f1c6e3ed835efad478c2eb687ea1c46b7edbdf0d8de0bd30ea6eee36fd9a1c5376fe13e0ffc6672de9cb71dbeeada0f5f72b9ed007f73d20e5a07bfa5fb3af0db0efd9b93763079bdc097ba4ffa10f8db17db23b9e9d49d5cfac93b4d23719ae6941b42a391a091eae283bf7a17243339bba9fb489f79901ea4af8e3971f4347e819c60f2196f3bb0678e615c56b9d213d8310782cf639e99b86fc89b7c7bb5e22cbecd7a7193b3742abec26d7b2add475ff335b9e62fdcb64adbdcc47d42b41237047ff5b8f5e8af8e39d67d9957af5ce9c7766f38d4aee4264ec535eed35e73b8f530b94ab7ed69fd1af7697e95bc72a64e6b6feb2f75413267ad13a27dd661bef52fee43c51a21da0fc13d5a3e466b5cf410636496ccdcdd3d744b8e51624e3f893b71055127e6c415c49db8c39375bbcb310ef7f96edd0d829677b9b98f5ffaba74e6b6379a95be1d73ef2ed7317274e54e1336acd15ac468b3d5ae5237a7af60de986b6ef2d8492cfb18371e3df00868fac52f95ca6deb80259f5c6d6f9d7cebe4da6878045ca38796b23ddb687a2a0947f2083a169f180bb7adcabed9494b9f38686fda53a81f15a2c19754afa4337391fa69b28696e3f9e4e2e3eae6642744fbe8ed16c8f14152109e20dbd417f3ddb19db616f5abd1eea95ecd2bd656b16b7d22e2e9159dd2ebe9e7819f8ed108b1ed6d7b94fa757117e908c975c0b8da43295a4f3fdb1eaacba40a4b62b8e6994915923cb74c7455cce2f6fd72b0d0289dfde450899a833de64647b5eb08891350a034b1c18e15d00938282a02185c90c3832776405fdac543082bad32eddd688fc2ff5263f84f66a750851259c002065c2c31861d5fbdd1317222e70949e0c20b3b3eefa1115628420f6a8045112ca060870f80e04e3c740a590f8320fc000a0c70d0041576b4de5ba2d26fefd502f96007b425b3f0c5ff84c8392fe682b8ae386367d01d3a648ed183b83e326cf65eadbf00ca0f8e7cb0e42527b96f088cdcdd2db7bd96107a6c975c84de1ee38a57acddd14d5f7acb20ae97ddde9db717a1c8a247ce091d5d987619ed84ba4044f0f94ffb966cc51bc102324264b460019915e4c90d213f08740d6afc5d4ebd87c88c7616eae5fb11e3e8d321ba21e4cf2e4874d9c16e12645ca3042c9e4009c1125a4052c58e2971479c91a40a4d985841146a9ed8b1be14289a815a15b374501a5029d48bfb0084871e80f0d0437b4958c2c445c705bc00146e84421006a31b84e109286cb6d842c9cd0dae50b9e8b84039ea05055940e044220b4c9c70e1440b96d841009e6014042c6841e4052da488810d5208d11006203d0cf10084c808889053a4d304285450b44bc0a2284914294e9cf44861a34991a3b2050a85ba11e32fa8f6520da407947b2f7e817cc083a2473266f965696b5a560c0482f997230686f63c447ed4d84f46d879955f202124bf9b12f55b1d3e2132cf7e430ebdba3a1dedf10d39b4f785d2e53a2e2e87eb0696d6aa2538c8a235746303654785ac035cc182298092408211aad871f96af1a6bf9c3229c15fae1dfdb5e3faabfb84c8bc16a5ee7fda7b5caabdca69eda15ac5ce3bf5db168beee09a9a9a9a9b1dec5ab3e80ef653b3b65553e32951b7075a3c0dbf403d08d27648369191c7f2ef139c273a4f788a84807706faf6eb193c32d70587e7c8439530721651b29092c59427363006596daf779b45f28f52a94567d20da84fa7d1e1a60391a7452c7f1c90cfb4e3f5a8dc013ef54c6ad2e1f6236abdf9a09d10d487d0df8599db45e9dc4dbeb4d7a8f6da4f5dccf1bd4440f893e996f9f621059b55adec7456b53cabdab845574b2d649ba2bdd1a890e046738ab95155a616b3d1dc682f477b30fb45310e19fc9b1f656e25f6bb6461a07f1215637164beeeb233245f7fd919ccd76572f4aae4eb8cd3ac1cad826ec38d0fe6abc1bb98966159bc7282e137dc90e3861c3a6e80472f2a1fcd15ee81c1c2e23a3a47b3f60616872aa6ee8b6ff2169799e19f8c8d8faa8ffbe83196157706e5d1e5cecce0d127e390e1c5c5dda3a3764686c7ee1392e3a3c7b42773851b324b6a62d09ed17d337e06aec7c24097815300d780fec2e9d01e74170e487bd09de3a1552fa3f36161a0a3b81c16063a4ca2a27c7576a61f3a8ae3560e182f628cfee558a13c7ace05e0354e3e699584a9a27e2c8b7aa5a459f2892c7a52a1b3c7cdc7e96197da9ca8b267d754bd0c54b51531a422ace9d11295e10092b8b9a9c20c0c8d47c550a1d8aff30f1f9d590a600642861c792a7b744165dfd882caae44658f3b95b51ab68aa11d7af1b2c5044ddb9d499568882ca8ec710595fdd7ab29f8b2d59e0a54766766fc3a2ac6afcaef170363cdd949e9df8cff624cffbcef6ea16c1541d9c2c20acb0c49dcdccc88c27292018a53cb0b142d2e2fb4a80303a551c89231ea110a5556549416531003860c2da2c0458b2778d1766764d062ce0c5a4c6286164de05a2c01a7459c4e8b24a0418b23a85c8376a4a7877423821a3224fe8bf12b6b1e87191e335a182b0040dbcc062dde5495465fa5452402a0c52304a0c510d0d0a20d8c1641500750a36bc4c468bb3330e663acaa59d25b76b2d5aa15f42f25bb054565ffa40d6d77c6464c8d01c0d0104000549e0d00a8214543c7f98c1964787191110305e345cb896545a5c694766162e7b08645090c79b2479753b2c7185932771a6f01b5a89148070d10d9eeeeee2eb7945d90652fed2d8d51ca79d1243424240b43cab613aa6e14f2fcfaf6fcfaeee8d0ecc497390b83aa998a56b7762886da0e99abedad6cddddcd31cdcf121a25fde205bfe8efee6b80cf672ca753cb8b0c460b0c18304e2c2b3060a85418306098609436183060d8406ac27a665a08218c114618a1c70b1b96be20cf51b2cc543936d520dc7accef0ed6fcc6fc4e9171d2a8f55c704afd2aa51a4502777e1d4ea91fa55add4eed908b5adb5b762d0cf5ab2993977ad3c6e3e5b7bdaa625af9ba1bc2860ddbcb585658542a8ba9b4691909a3170b0b0bcb94314a2a5ec8b2e598681d127593274552fe10e5bc68a41436d39d17c5762946cab4a869b0592365da568aa5126c2eadb6db9ab4e54a454a497edd84a4c8afd7aae4d7557c56e2ca0a6c5e69294752a61c49691ba320a1202642414d865a3b3accc33bacc339fd24caaf43284fa418fd9043e66f6c500c774318a39c714ed83cb9218c51ca79c5eb82cd5794735e17a518299248b09974510c2391b24cdb36d8bc91324ddbb652c95463adb0b97249639349e35a355651d1788525b2b0c06696156d97fbe8b6b468fbe285b63050118582cd28956c45638e25b268cc9d361efcf4a431d7b2f168d1987bb1f1e0af30220c18b019062db9f4e8ab85965c7a7c18f81e6a6f7d002bc87667d80625aa012c9012929212a30552b00bd00b2968852aa60ff70c31317d886448adc5220a2448ad2478319850418927f9092028a40f9190d4cbcf169e084935015a01fa740e94a400fa10d9a0446587de41609780ccd4beed32c2f6fdd8913b2290390acd68fa70f14da0e9b385998309f41283e9c33d4348a68f66445b7248ad8f0ec550b5fd4854905a5a204141a222e603a4d66211c511a4564b0e13e2e7bdac32a65e9e5e6acf92f984782f6516aa9432d161c4649e761f2a42af30f84e5146ef6330a1020f5e5ac08bbf455c908c1ec24f027d9458c8c14fff2490eceac2408f3f9585601a1f929f007a4292e00ca6d36914afef1886daf2d175b4f75a1381493ec2221f21cf47a8f311e234b4f9e83de5a88357a831c216094a0a638ea0f786c38b9f1dbc01aaec5f8538bf0395b193737642a0cfc71c28410175e96101e8f3d368da60273b9d4a50bf0d6a87bb3734cffca351511b653efac579242eb6378f70f3d3698a3bf116f787600aea4d65a7dbde768ddd18abb8d134edf3ec8339441c40700df68fa1136a4968e76b736f0e904581601c29aec150b8cd29647929c671038a3ed314c72e7d1ef8ad13b2307c81f6d83dc6b15b8366dd87ba66befe6f831e12d5f66d8febd701292704b34f1ff5a3d74f48eaa31329b18441f665dfdbc5c681c873878337734327d47602f7e781e7ae896c531fc9a70913f75609d1f0d4cb2966a95e4119369cbd083c0fdd7d6a98767a294ad1a0526a9c82b2f11d9d5f8f511a2b822cd20de9062bc28ab022120ea90889a7094987888443cad1285193e7a1f6381a5d4fa85f2c8a518a7af5d5a108e56291483915e531a41bc88a46ad32ea15bb3b0a554937518ac491365f9c22e528da40418d4c167a0f6442fdfc217452bffafd79fb29e8d96fd8199f9de99d699e563fb9493204a5ec4cefcc929de9ef69af9d6e3d542f85da6b4fb517d96b96ec69553b92982a836aad90d3b030eddfc5f2e4e2e0b60651fd6aaf3ad539bed37ffefdd1f876b9f1f0875d0b6a7ea750c2e83f5722e8491bcb4c63092784d5c607aaec89b0976589e4b39285d1b7f3c4e88447eabc13183423947dfa96b36110fdd8c1567bcd4fe813ea3173fdde8e380342df85a1d0d783bb35a02f731107ff1837a3c9936d67996999083d92223635b0083a59f2b3a3d352da68884912243736fc848b5a4b7876f668a53419fa181a51a40e3b0f31498224de449b2745ad259007ee1c496932e493a471fa06ca93a0d6f730cf94a35fa2267f63a3890be3c12b6aecbea1fabda24a186184a5988559cf782eec4b968090c126d4ed22cf9423a2264a7c600ec489024528a848f774cd1427443f4a38c748480edea732d884ca5de46558924e64597bb0495dcfbae1c6089f77194258da233844e079d32fd0104e1061936d8630baf4901f0477f115d1c52885f892bac11d8d8f4130fa4fc6886db513502fde1edb60c9079a1003255784e10b45d4600b355c00830c46f003263fd89804d1c038484cf068c8051b3cda7e81866033c390fda7e5643618017e8182a8086a55910105f9e47841fd50a829b2ee5565d69835d77cb7a86924c9b4519114d4f331bf4051185d986730c6e83ca8c7a869116a5ca66597c3cb49d76ceef5ee78ecdf9061b80ab2128a6c5370065552ed9a3133a8daea448df542b95aa7bbf438797b77df8a9f9cc8ebe8288afec62f9010927c7669570b8bb738918c29bd2e15df8d2fcc9bc334da72f248254eba892b79c69a173dd5ab7a79ad5f6b11ed451fd25e741ea250bf6df2977f2be5a303117fe8d5ee43383b171e57735f2c71cc4d951247e455d609110fbdf6226f95871e7cf84102bd2a41eca3ff6d13da9e766a2f56e882fac5c4dc90c9d1abb9ea2efa0dbdda8f9e830e0da4572edc51af7d46223eae6e3b971edfe5443ebaf70af654ea92b697ead57e2f1fbfd4af30090a13edb1eb7d3f8ad8cd877ce83d624dcdf673f74597428ba0873d3af0d1878cd3e7860311d87dfd70f20efd0121f0080167ca14a028de7a9262abec4bfdd2f8787898f27a28719ef261e35efc078d43bd4820e34e2820485c3d09c138ad524d7ad277257c221bc712f011242e50a104149a8c014867bf10852b9040075838190311a6e03535351fd8416bfbb6d37654d3dfad6398a99071087e65707c408b1204e9e01c41c58eadc20a2bb88085cd099800861ddf4e65ff96562e34d5a2b718ea777da78f4eb50a2184d7cec06b5ef332aa9fff759d685c7e79cabb1cf532e79c97d75ecd98fe40d75eb8a2fbd41eaa3d2e2e18ea773aa15e628c95a7c011d6d4af7eacbd8a7e42452965e4b993a6c7503fd44f54afe6744f79d3eba9579c0d23d7c57cf124cae845fb08c9af7975412e6fffaecea5bb53534a29a5d429c5ba9d6384c052f616eae72f63caebec30c08c8450a97f5566ce29e66402c100bb581bedf307b2606b32e915349a53ec0a76a1f503c130c1f0ed3d8d76766159b3e89b70319b18d184469b78c4b7c79a2e405f485c4974018da6d1349a46111ac12369045954aae4dc7a5068d4ab29a7bc60170b064ab1ab04bbeb698c10a7e14dafe4ce4017d219e2695894044251028d82228b722d4f3939bdb53eead58b28752012bb1b5d4c0c6c4116c644a8c990936fc79e448112f4df9cf2d368b2ecb0d634fa76c81d1733d29c80d0a733e4e80c21e4d58ce8134c15f5a3cd429d4e32d8c090f4695f21d2275e515ba310609d20156a74f6e99fe47bec14fe23e2d283bbf8d97db3fb61e4e88791a3259f2d6f73ae76763f8c1cb5b7ffc388d1ff3062d4ab1f468c3efb41839af6f6a59cf3879129ededffa001fc41839aa366d5ff61a47f1831daff61c46857e5879128ed1991c2693f8c18b5b73f513005ce3ff92978584a4f76a8f6362d085543a1da835ca82829a5d62b222b8350e5909239d444c638141465e402c6b831c618574a29a594ccc518a3fc91314297be52768c1e25c78db123952027fe707b1423e496325edc89a4836fffb88ecf0eb9f8598ccc9209920e6636e79c55fc676a82899b69faa94265194bb09372c69d3535d3a659194e7693dd4cd8dca59a439281fb0c59ab2936a517a4bd5a6ffd83f03f484728d05fe93a1ac618a1b0bb2bbb85114618638c31c618638c3146496324fa5d6c07986c62de905a3f50d52b120909fb0359a421a15e918a90b02b52163fd74603c426e331497e04dd91396908b248508a7a453aca6257242e86188955b593384e626db493a040560c541df58a6bdae362570c82f5daa1bc8dcd11be6399001feb7cf30aba00ed319095b16055ed9dc1e0db39899b1a9871ec36db7af873a47c818fce9599888f2afacc35bbded5ad963927b12c24fa086a9660c7f333ee86522754f68e914d7ccf9b199e6ba2a350eb6fd2414c56d3269faca69b4405ec85104218e10722c32b767729e428634dd6f1464c4c0e199986709f23919425c804c6b42f38a3dcdddddddda61b195b5269eab8eceed68e54c0226014304e79cd6b77d709c3168c82458b4ee49c2b194945cbb4d853379af51d4269ab948a89e41749690e6137934685ca0acba945ca1961686068faf060fd0515b00818058c920a58048c02c6e8440b525476182780923262b48b0c7e2962e8370a977da1210aa9cf2b64c5c8416e20503d4d7a3e777068618eda3b127af833e10ffe8b0187b8caf10ede28853eff5d3570083b6a0fe8aab102e30c421f25639072853284d850744265b93bd6aac4c7c7a857b16767a0946661363e3d3e3d3e3d3e3d3e3d3e58cdf4f19142984db518638cb0d2d8446d62cacd24ad42d270a7573ccd9a3f53c90e85b2d38247d07c94eca04225f007fab4d7b30642a9732a495ee8833581d810c472b016a6d32cad0836345bd8d06c6143b3850dcdd6d47aaa0f96a30d1db10b2184703b546daf63519550a68cd22c29a748b19153706c7ea70eceefe4d1f9ed91463d3915f5d228e808d3e76507deeca35ec59ed2ac69037d3ce8e3419fcf833e9ec7b19b359273d4f481392fd8cb15f3f2f2f2924aa59e5254ad31ac05b63ba810e7bf17099945fde63f886406b5aab5a85acba3896467e49466614e9c3c7912258a94d9ba3a2c67fecc255349b743243049b366d06c9d66eb5bb3651260cf4b11cce927cd6a29ad6aef2951a08d94283da5a5f494ff1ce2f410776d3485562964a1f6047b7a665e5e9a99777979f9e5a54356e6eb242ce5d1c82437438ff84732a75c967193e381ebc1071c64bcec801861ca882f7f713764daeb182ed46f85583a72642167f3c6c8b93caf155e247f906deac35807f025fa54be5e5c547b59544d0e70106f50d93726a9ecd106957d6bc044655f24957d5f2012ffa1e68c6f97218da688474e2f2d1b6950d98dc422957d671065505d5c5e5e5e5e66a05c660feca101f6f424a1b27f50066d77e6a514b11ed8f4274b5dd1f1a44597524697d18348dade5ed13c6818f73a72e33b32481d5becd4de91ccb3397dc41c21792442c9b4aa6ff888f9d8a5daa30d95c8b290ed700e54add7d80134cc2e0af551f787ce34e20a400660aaae26723cda840d249af5bd421300c426d490a576b58aeaa14ec3bc22f57271134a9423a91ef4183d48849ca96a11092a5eb56834236681cec0b222c389667d5f4e2ebb2d9a0c27118582b12b23c60b17192d10ba68bb33a7ff7677f7458b58b464903f50d5048b0cdaca8c19547cc64e755e98584d1da7c59cba53ea6e9ca834684ea6cf8fc294f6410821ac61170018a4f18a6f7777bf4835daabcfa3af43670fc20bb3dd1440065aa4d60b48ad5f0f00ec7129002d5e6177777761608c918616b350b93324fcf416553e33a9ecd18616d4f80eb7a8f0d9a86e51fbf989ca0eb7a8fcbc455dd87d0df8e8047e341b004cd71800c7681b188a4d54e684d4d868d6e3159d431b94a81ddd98528e25722eea1864917c0350a3286281157daf00c5528e5c6995e67408e5bc26efc8483b5872ae863f0150794310b30133a2d1d4f34d8d620b338a3f714887bb62ab5a1649680600bf2721d46e8b2404593908097d0eedb5939c909cf4ea235df157ac90148a4794d68a42b90b7d0e4b58a122e668c4ce8670a3c15c7624d48b63f4058592c9d15ea798467b5e4721b560e460c4484412c88a1cd2621be379d81656b6189372caa0560e1999d66cc8936daa77354a51ad6aef4ed1bbe623cb08df0bd9a6be18948c5fa7be2e238ce1e614a05eb4fc695b150b7a772fec1f8a5f96d42f070e1c3bb3dfb241fd912dc89a429075c91ffca762f1f91d1757a9a376079459d14f6d25c13d2bbf4ea5c71c89e4d76761da7d484059ce9280b21c68a352e78c8957e2fcfa09a5b238244ee5e44e7b3acc7cb98e66be985484548484a45952a755ed3267faec78e88e0e0ee39027488109727c6017b24d7da65dcaab6a2fb14c48268989cb4947b5084f8f5c810b7e5d2ab138a40ed7685f3721812cb9d3aa76eee48e69896949af3e9313262730239098f8963ba4a3abc384e48e2c227b248fd4611c5209e902b902b9636a4526586a78e3111f7afcb9d999e9f107ff716948ea487f2205bf2e4fb038b0255ca3b72d34f19bd19cd7b4f90f63f2830961d812c681016d8df68e027b0276586b61805099a52609120bedcc0cbf3b368cf0eb516867a273cd35311bdf1b3bacc8a78380b9763d8cb5bea090c83ab533fb53fae660dd6855fb0d28556befc6a38e54a8f2a0b7071fb660b708b24d7da5a1ef18a8e43f2d02e53446f4edb559d850abdae3122351fec3a2f8f6762c8a92118d0d956a3022ac093684057d63419850b3b026d81036b4a5211805bf7626676760a402e89dbb3834279cd24fcd4af96aedf53410097651bf65c29e350fb5371a0819ca063cf423da67be8eda75d9f3452aa6f88f7482eff6f9197e76a49c85698f56e085891e78cc49bb307486dfee2352e228168f442b2a0a888e1b7a45bd3d071d7af0a157b38b5ab2084a7b45adca1196643780879942eb614783378fa3f118b7ebc52264917c22a3b4d7ae71f2e2e4919cd29eea6127a160a172a487a8f48cf575514f32352322000000a314002028140c0845a301713cd746db0314800b96aa4a624c1b09931c085190318628640800c618203022304233895000eba0e012f9f5fd452ad8b9cb34d0b023b831901c0557c0f104e4d5322d3c4e6b1a2bb9d24523bd1555c1445859d346fda5d6a5c64f5af82409dcfd3a285158d296b51bed2ef6ae2f0d776d3f777d6aad76fe06fdcb1cb920abcff5ccfb4a59d2f0fa0fc61f34e7032f2ff33ad666d728082bd352d7193562d3bf15bf341a22cd79d3e3702c08c15ef2097f926f1bcceae199783997e98da866801bb689dd1108f64ad7f288489d340141579f0687b7d6a7eb5999d2fd6f20ebe324a6b76ea175421ac0588191f86fcf67a622ecd0312a6f4800d142c7e57e92d10f9c69f18645965f4b528732b08eb0cbaef1b0b2db40a87a57526d94509501b6869334715babed0549f8e9b8319bc0f8114c1e128a81065f4f6e41cdfbb67dc69f004c8593a04ee854cc84af324db68bec12c10834f0b0062f87db62a182a4da58786e173c777fbd4a346e10f62f6144069e729b8340ee297eb210c9010c8645ffbc378d4a62fb52bc1fc540a606db10911e938341d5749e7f4163f2397ccc7dfe4e5ac4e71b6e410b11e217565a1754ad176cdc73f381cd26c4fe3c019ebd803f8b6c90f4408b04388fe95c21f026abfb9b6dc46bf89027b6be76b2c39f02252a00c82f8894993332d7a72ed1f4174acdb5a0b90304abb34c3f123e971e500a945c72b5cd58197266052d2b10725c42aeef075a717e35320ef4a27e89014ffb893496730687436431342ebe418c2f77933e1423a8bcae1368dce8e00a745f0c000aa200dde36ee000a1daa3cf5b65baac1d09e541e8d7e470e7c60121d1614119f8e41f015930b426df0d7000e4255fa8407c4683a0deebf543e0346dfa1757ffe33d88936f14776ac409630a08af7aeff7a87f6511a66e4d473036c042ac3b1af2e0df4ba96332b392313b4b872147f12d028ad287daf084bb067419f754923e8ab76a52e0a621b3f93feec8902d49fe74ef9b6070415ef5d0fd20009692ff1aa9aadeac3f8bb485fa00f5ddf28bc477de24de6c0bdcc9c13f0970068d2227fbfcbefa72d862c4632307e3fff275f69459b905b04b640c059e14a20107ecf24a904d13e8c03dc07c6708d974d1ac85dd9cf0cb55fd81d6c5ed6b333bbaa32f96d9cf318e174f698334a0897a4b9aae7809f3846b23a300a2bba67264ad96ebd33c19a5515a6ef9fbfb88512dae4d1d5c75ed59ea11221089025dd528f4151c9de0f2c1bb265e666d72f0174826e08691a3e09c3ebead4d038074efa8a099012935dde5df1fd2b49ab1b46f46f61c49a56e729a88382b626feb1b6625c662898b6ef367bb5eeac28c2a52ead1edaad905cc2d336c061d83a8b0d1e25380f4726da629846e9702c79febb11da4b157ca46175261209106bf77ac82630f03214edd997ea600ee100b094e91d1591ec136f69c42f30149ac09663b07eacea31731d1caae040933df7b793725e79376afa2527bb03d54e0b226b9a0bedb805565cb433e094a3b43ed1061ce2a7ea171d9b01bc7cd15694532c89249041eb07f01347477e6441ed6226c3b2bf73e04e99469595358682bcbc9a9b9d64e0246b5961a35b26231ddc8c58874a0bb19e75b34e548a43deaa6f5b1973522391de65984eb2d4f0a555616207f5f17f1e9d9a275e8059874a696a5ae841d768a137bab3276252d9eba1878fd9f390c5be09b9d790861904633944886e0f7f6d63861c6615c5ab64d8fa0b591e1a16f62957f6ea5845808973b0f5f1f80827047b8347324aafb08c77d7a90a17fb100dad3e0eded1fe5cac7028975b2596df0b87d82f0bcc782280ab5a2c86cbb1eef6cc15afe99a5209998e7425113901351989722fd4ac9d0b7b5258f26966a83cfd3b419a4da4269baa740a0657e8e3f5746ad1f1818bd043baeec5679dcc867f84a0a985575b760f91e69c76dc1c176165736e7304723cd34f770dd8850e4d082035cc1678acfe96bfda5135e659a6f73de788a09913c5c5f5d1f0ebb0a8d39e1f0594831f276306ce324bd02bdf303e5cb5b4988bd5bf793d8fd232f16d4c79d752804cd0b29e87f74c0f5b52ce300a7a77a6a2b1014b10bc107071fb39dc326ca8eedffc87cb9c197c147e7c55503a18e4d3021d66e9048c4c82435ca9ae92d0f246dfc41aaba5d1809a9d3d88722bbc80b835379fd87dd689f8a6c34725c0af4d7153f5d978bf65f2748ffe8dae5696b52b98824556bf832b4c0d137dc5297fb0f30c9b6724724101086fb72b2c323f423c10b6520274e5b63ceb602a20cf4a2a8455e5f213719f8a83352647ea278c62b3350cd8e985f2e249300dd05a808bc01a69022715faf14feaa5bcd286fe58cb893d397a4d0e8104d623d38e769c31fc5a43a3c28d7812e074ad1d90fb9bb401706075aa9f06816bcc9760a6fd7036e0e149a1ff2148642ef8ff81177a5b53d031543f8b73345c7775903f21a379af3f7898bfded873408fb20896431a1c2192442ae8362971fd9ac6e9715ff1cd711a7e478657abdf630e493bf35860c9d49c559cd827c6e2e14f26dd8898ec8fbf887a4b82e1a33982dadd114aed7290a41134e537749504b4ad0a4d88b2588584a9a56ecd31a659ad76d546676bbdcda3f0207132cf932ca24022c3f07106f5b008199ba5b6c14b8e96efc57543ff951c5003cb7ec5bc3b0ffdfbd6ef926ce79f265724ebfd4d4727e74296e494c9a3f1a596c7b2add493beff3a99b1922edcaefbfdc8fef7f32670e1c8044562334d6b7e473b73940dddb4e538103a4ae9c6990f21a834048a224dd33e521881dd96db63ba2ab0159c7959c389ebbc6a7f205d479af5f32a40f033a5ab19c51c543f4777302de9c0096ef03f8bab1cbada4700e2103a4b6f9c45929248680f5b1d6f68c8945fd0ce09be4c6c12591fde39ac5f6190bcfa3f67fcbf960c8a5d9b957e79d58826d164b606303c9ed178f88bc66880ba9e4c7614c7c06ef8c1935215c273be5a48e4ec7a49e35ae59cf3ac52be3a6c92499f4ba750cf94425706516f4bba8d4522ecc8031044d56f6d771b6edd56b900fc6e02a5794b9f1cee424433dd28c97d432ede75d9d2510cdabf75f3bd162e5a4340e8f2e16fda10796ce06a614e53599f166e29ea798703ac2cd83fe4204f7f000bb4b02c46d6dfc290e10097df183320bd750c1455aadae844ff2bd36f99e5d9acd9ba24baf28c0df400e074a87c89fe1e8d5b67c0498f8d1cf1d8c77e9715a56410756def24e69540a502f305680de785c1699e6453733cddf71d12e474795e786871c0ae940cf5ab9b003b4d171d001e066c2cca12d30c384e4b7877dcd3b74013e90187b8b7885fc3698e4ad1467326eb17156afa81e7d4df20c82a0dd3a523571395f10834c802f2352d7f2060cda7e248777119a7f95d0206d874f042d59b20b9a56723094f6b772120738b5984588a94f5534c6135cc975b1610d970fb6b43535f4ac763e3442ddefa736d0e5f80bf83d17c7c769f8f508ba463d6b26ceb1365dce033b13c01a6f89f355af55c288e6dfb6e83c92f742f5a3269605b248886a7d4efa6c3215adf06464518acd4aac36cb2977e2800cd7c85bc16b367227fff6b4f8888e97a33ae4a36923a722f7e57c499f8e6af1ece75a41614291ae63bfbba01b3da628cac040c83b6ebc9fbf9d68bafa23930f49fde518d8dca2f0a42b0ef7d085947bbf3f286ebfb7fa0ca6068fa08d46c835572e9db247cdc79fe1e3b4b5ccad6252b0b24b0147b1cf94a3b5dad6d17f8def0802ab68057a19b50239f6b31537997b829c80319a36ae1ebf2b47d37fe831355d27b99c06f28c6cfc661dbdf4ab98c97e17234b378e9ceb5e9559d310aa2c958f169514a847619f36d716daed2d47f42fe42fe85ddccb854fe935111dba489fc50bf21f86f34939938f4c961c75fec1445d12b0a23859890434fa55be38ead289f3566f71501e159f6a7e43f3a3cae73249b20c1c0708fb9ab89ce3d3a22013ed00c2da566c73d6e380ebd96966dbf34d5a9e02dc065be0c7a7a9ec80ff507798155faccae102ac34352b9e91a3226f909579d167f20332c3627795a2289fd5a7f3e588083d10295c7d6b6d3c1825d6bc23290246c7b216ed299e2b628e211ecf179cd81222a93a5e2ea6ff16aaff4208afa076a3ce6401101f5a0542f8340a0cbdb41344588242d3a83d78134118d56905e57f024145ab4e7c4a2cea33c488c8b044f09b2047c988c57a04ccfd0ac6424a3a01551a058459bdad27b53aac25d0af714f050a6c3f00ca80287c355d7f1e059c33c7581475be5e70aae9c78f0bdf355d55021926cb32cba7295d07e5fc47fde887cfb6599c4afd85658da92af7e65ec4938e332ac4d73262abc8f2a6c46f73613320127b77a1536746910756daf43fec84bc9daf78fb689dfe9f649e974c9a921dde596f340a0a4392c272623bea3c8dc56d3506774bb6e6c871b33addcebc0c69bda2e4e87b567360287470e549db52401de1da518019c446a23b6e5861144628d4383caeb429d4b79a12b6b3966e6a3021c5d3f816ce27889b4c24c84c8f1042c6e0164919384d39fa0b1e2d91e7bc1aaf9a0f6090066ed8e82b88d5e33498dee39cf5e7ab3afa84e965fab8666b7443e17f49a6673f7a096939fc33782617398278ebbce034295dd25f92381fe4cc31f8d04c6e3b6bb79744b30c8a041121eeec85cfaaa61f8dafad51912ffa262980ec580127bbdf716a4501b640488eb306356c38947ce3261b5b2e920296cb7f7b84b6fca22c40b1ff6257805915695a2e57189936836a9e7a113ceafe42fc52c8e1f718ca75fe824e656da023005206df1e877542985528905b89592022d1a4b54ebe16494103df4747bcdc4d0b5280d60fe6c836a61037f5b05c51f8cd724f3d0299c50bf45b0d37524e2d6a12ab9ae712e3fe17ca620c8b3c02c9108da8e99b331db0230c5661856d25f6c425eeebec90fa2c583ca02203674e6681c2f1000d0a977aaeeb9840ad92d2a781a277b17ab9e51e769f8ec1818c5bd0bdffa761229209a4730b1cc5354ebe8e96ed782be2892ee16ef58d20898f9c1a7884d8901667f96f35f7932a729af8865ac4c8f4fef262b0b2cc9102198c4d72fadbcd7d08d8b88ec6f90165702a1c442d680c2211fd63649fb6e0bdd2793e9493c20d638e37cac4526efede5be86ad845ba8f18bb8c43550ff85320439075a0209ec6372ba65e4e901709ea169627738a38298d7eb7fa86b536a7109b896e190bf79d87e6a3c0594353cddf0ddf9b688abdced5ce5371f9d19d7a00c63da400a87d0f1a1a146b70fca1df149dafc78ecfb24597181404ce3209017d60e8303fd836d4674d6d410d600a3e5b38eb96a058ba04adcf47b2bfce804a55658beada03a5bfb0774648a68ade428070b010f22b54053eb0569cace93841f8cc098d52a807b0a4f345fe2d510e439c73161d4913f06d3721018b982f74a1552daab9bc2a602a911ac56916835faea7993b9f2c529918d79f15e7104afa8880019fb8fb761cde3dd23cbedea6b86e2041af4381b2c7cbf11ab313506c4a684167fd5ed51e9fc29ae1d3b2aa40503ed440c88a5cd71e6508bf2d1cd0444242cf618f3af0938a4b82dd750fbf446ed6f594dfef110e2efc21171a4af06ff660953a3dc661b35eb18161cd50a9cf4caad93d272a476538eee9fd1c4066443fa492ee192a702707ba5f919b622cb39dc9e192c0be54c3c565fd6130053ab51e84fee34744143ec5037e1802b0087fd24cac33b5ef413536a73659ec132955a04d545e54af3052e765466d865cba53c6f5b56cd48d7d3f74639bf9d09c7cd616d8925bc71e6fae4fa36a31043dd99416f7066ed7aac8328232fc7951135a049cfa8a90d75750c7fd51d59bf539e39ce990660748c9559220c749054076afd3ed8ac8d4ce831a7e05ef40c81a8cc0915563d85d00d7a3f15a983f9929f7efb487c4d0f8f39ef47565922ec0087fbbc8768115e700ad732449a398c199252d6dd0c711d5f93c4e7e9c262e78832111963b3b9f11800acbb876470e75035ad6894673a220215d1a573845f9f47aba7d6a25d642b72c4959a1e5116d0a5b20e8510ad1bd267a206551d7c1df551f6baa2df3af048f33b175afc715e58502cf923f7fc42efff9128d9ff9ba5a78253f2696cfd709dccc582b77858fb4e096af0bcb789ecc4907d2bc10bb9503ea404cb9eb259de9d6fdc7da98db6f445953fdd85cbb2ebb41f29903ba873b9a6c962ee97100fbcda4aa9011139a466901de69a53fec0fd4cc11b01a591917ae2d2d664788d8c57e22d2d829e4cd7e78782d24742b25a16c9027aa8261055bc7a16eb2511d968ac19efed9e68681d49168c8791599e6bcc68a8e0f6783e8be2d6b748b7ebb304152ac9b7eade03d87e42f59fe6a6c1008fc278024e72766e7e95b9638fc8c6090ffdd3b3b3429e94b531e7ae3283fd2d6155c67cb7532e702048ac0b110efaa5e736e38ff4403c4941165c63b1bcd2c0a7928d03faae6bedf0b71bb27faa9fc44474dea267c0be5a961d1c5cc94a09cf08b5c89ccd8c8643797f7bd45d156e1b80de608985ed1952c3eb1051853236365f016431b9b951e7741516be54c1a6e723634a305cff7031f30ba5b6ea1a64a091a991e3b5f4f7361001cc863865ee60c41d5590e87d23fbafdb5c52c54a158bb491166cad5c7ec939beac8c3a3aa00516fa879721a29065b40ca6ff95ca3b423d5859119c389a32311822375af15c94d3e73a333985b4741e115302f3d7263bf4aaf89a2fc8dd69e7634b8fd93b6b87e303210ec9f0d00f44d966ef2eabd1bf6845d820ab54b507ed8885fd60abae9e66ca733736661ac04a0f313ae2422fa898330c485a42f07233824c546b6e0e8ef0e66e9497156cb7e03e5f5f8a04ec0cdc3a73c29f6e81949c882ad17928a92b73890dff4bda78f4830c3aa1a8ad3542ef8402a5b84df89d9122db69099f9c6b4fe475d3bca290a5a26f85597cf7fd8bde0392e85acdd92984ff3516510e6642481bdcc41094fec05edd131c36956901b21095d538994be33d900ed05734012fad24e346037faa72a5819f43cb7f627357a2aa0398f5a3ce0d09340ff12473f34a3eb55a8d816e9b24676e5972c8d6037103c46f68459b859883a75ac75a62a7f7c6a3052ccec43336c73ae34d72ea3bc92c82282cdaee585316059bc07b00b038b5d08820136f76eab47ead988828c4e3422dbda7248ab08d617392919c391dbb104aef50a8ac60b60a1aa7acce52b6767f1c7bd54fdda1138a5032301a140fe1fdb9f8e9380e17ee7fd7c41cc7cd4e12df68e0fe71be77ddc77733f96907b49a8afdd71583d90056a220520e54d7f288c9b214911e9982643616800a50f2315265b4b8f09ff8582abb8ea1378e484f799b1c67a345a8019ec07e959d9b5489e42c9892e18a6e452fa3fd8e3d44350ceaeb88c15d3a40c419be34a7755d9d11a131b42d1c78a0da5fe4c835c2ca510ee8ba141314a8f3479c297b8697e0f96f948e3ab16ca79adf50b5b16d4d2ca89f10f26610f5433d9b60731607a05b348e773faf78f2e5959f8c8c71d0df817ff71bd6c778f0b900aec8d94765b8464d0b5d69e6988c52b17ee4ed9a5b83b5c4254d23d429338fddc1c8e5d8e717b726331a54904050f43f5a97511996f989825c0ebfecea301503402029c8168d447c069bc5f75d3277c11040a3d87a1080766dbcb6a51cfd6579b68a004d85d7ab5785783afbcc30164e7277391902a0ac0fac9feddf4dacfcc1af6887ed57b10186e2fdd271d9097e57f1707729b4ed6409d005c4d5737500baed6ab819862425070815021b57b766a8f8bc7e34301d00e2fe055f4d94a6117c3cc8220d4063262a049721cd175480606f887e33f0ffce83ae603271f7a817cd469119b462587231ac56070eea950c045f7ca4aeeadc0a953f3cc9aa8170a7f8538fb2e8de1f771205e115e9cdb71b5ccda713076e59996ab752ee766e68052636244f9278565567fa1a1d9cd4c19edc69a0da4ddebcdbaa3f168eea1c624cd834b634f7681fe776cc95fd0260019e16b1150e3df4ed14b9f438a7f0d9ff7239601fd10b3a3a2244de3abb505513a7f73571a1002f132c06f49cda75690298f475a09ffb0f3671b5f54f8a6ff834a7dd4e73f363b2aa9f346187fa13fbad2fd2ce551675a54308c6656a90a95a03650ae6bfaa9982c3bc65ddcbc7588e187c24225def9d971408914d7f677fff64f05d2083356f1f83d2f4575b29040ab6a102e8b1dff9e9e19e3269e155b396023c067fbf75d462bf761e479a3c9a2d61248e891ee82d3d6367b617ecd60b28e36e6f2a1f9fea77b48ea5a3c1f5322cad17cff9017da3518a968c50dcea33517c024045f52fa263eccdc99129f5d39413a58d60210f697f545e00a52833584ab42e7cc3d4652c982576139286b40fd364e0d0ee73040154e108f5eccb11bac3f0511e066ad8ad3c42c1a5221f73623e0b7ca514ba14061aff03a83baff8cd46b220c09509da9cbb68819e165d8901cf122e3657bd3b52194eb4df3703d76fd2b51458b0ec363261028dce809e3bc7a078b4570186dc5aea21bab18f49f99dc9a5ddda818d8a0cca865138689e4ac139799312e5dc3e64758241efeb469456470e932d428cf0ee1d77653a8bde7cf3a9411776fb0af742c344696ce774cce28133c0f0729e6e9222214ae5bdf5f10a23ab57ed299be19f3e7aaea88e19289a78cef4ca1ce7cdc5ed76910834ba74a49a3d08a01dcd0c3633a5e87db885a073e7c7f382b631b8b18a6cb8ccbcae2bf8cbe7ef41365bfc4acfcd13cd920ee65ec22ad4efa417605505f738d8face26a882e6e1cdc6cf6348681889c64cb82a6d22e10ed1ba1eb554d29cd0ae43251ba51508cf2d4c19c1ed6372550eb7892ae81c4f4a3264673cc60f31f7225c346c6c673ac69e07688916ccfd618150a3d787ff112e81dec788fb352e3dbbf939c6b7716d229c2833b5a781ad575580681718501117491ac7d534615994e9a941713dc5ea8b6a6da357ceb5c2431e48862065cb821911a5c6ccdb471d3c15cf54c57022a8f461f7b6c40814639aa1906cc2802d198d6898aa47b761268ea4caf694411ae89843802d327622091058762b45836d262ba2a9b0c7ea19810701b6235ac2a8f2e8e456849403ecfb8a01ab5146244d57595ddb71520e0042d293b03b5c0ead7aa1b69a718d432fe362bf2838ea8a219384c48705188e4a9896cf0300df19d1dc513ec0b6e1497d00dee03c712ef8973758a77b0aaf4bc47fb4f9793d48c5a1a0a344900c09e0995e9d1c6fd00e1038c6109e89896bb07752c580cae3c5dc4321e9709a66edca264f334c6a17a0ec5a7cae87d04526812d8651a51b21f1adf1005191bc4ae41895580229502ce5e82c43c92e7f3a68f18fa23131f59921e94ac7572a5243028771b2367e25756ba9df75dbe9a488b1ce7613804537315fa017c9c6146bdbfc450b99c64a9cee38e6a7ac52aae262989eb9e220b6bdce35eb0a7565f9b2ac5aefd680c5b880147aeeb335b08469d3522d3393332c08ab9675a5e55f4cd7bd85daddba1570c3913d5bea7159f207900356970a4f8a590ecb428943a3a80e051652841e79fb69f3f1c5bf673c16d1b46b706808a18e04c81c656d20c1283971dc955fda257d8cc33472a821ad250e0299106bf041cb1cec050122d5cd52fd51ae91ccc044d60f9dfa58c539cdbace13631bdb4b0cd7f17b23b8e62bdb95420c88daacb841d7b46db9168ed4d4b695b2e093ee905a9defa72f8fc551d2dad21b60e9813d5d55ec4d90076187d4e064a2b01d15eb570511cb63d1a474dc63de612d151477aed90515e38986e90b263e7a00e45fc660ecc90e4c970e8adad3db1baff6de6fc374e8c108406492558bc25b7e57550e3f68bd4b92a40e441ca766167a89fdaebb605c367c725be5ce54a7fb1ef34109f548d2a8628199e4dcea0d65ef04db91721a22a37573ff80636fb546f6748d5db8c7f99c99cafdb07868ef58d00ca6f079e017a852c2423ef6ea65a67f894589c4ccb5d4ee43224870c1559172b674eb7467fb0be2fc53a4a89ca413dcbae4de901ccf1240388f175008e0d196e44024a01884e21c1ab6fc60b8acf390bc66ccbe7cd512b94a43257ae91b09f269ade67392c74f4e2cb8b8799bc0cbb42f8a86f5e47a124da7e0f356d80900447c5c04881dfd0867acd22991222be3ed60b49d860739238983666c4e374c6e94b08745f065f672358015d68b12b572c1bd0cb811763a135fce5a9d69048cf4fbc4d3deb15da5b7fe602d0864ad8ff9164eb82eb4824ea7af120b7910579169ecb9527f5c4edb3bbfc10cbc54458baec17ee9577a78822c8c0abfe8f025ce22fc1793f559b3931d52b995a4bf973aa7fba6abbe0916e42d783a35214a4f73acc70036f57062eaeef3e41431e363291fd37a920f5bb28d8f356e9abcddccb1399951b7574a21768e6ccdc0f602acd9b29eef24bf05210def26df365457052fc7ac869551c9f48374c150bf41218a0894abeae5219736dfb6600f3609c2da9567a59cec8eb5943b943829a06576d78277c2d6800ff1ec557aeab705a21e5b46d9b57069abb28d7fd37b593ced52bf6c57be5aea530849e184a5602e535e808c9d9b221b639817730eaac93e4836e9a27616b6189a0b00ab1ad3aa9708b110a2af46afabbab40a6d084fb1d5ca28c83781ca4e01652dccdf0243b286645f1e9954ffdac31c2a7db761ce109e8e97259b0f442d87a869264cc3e086fb6f5ff6ac2be4d464fb23fd00cabe2600e3438286d187874f3345bf0a92413ff0188ecbfa73f7d3e2b7f72a22e9333dd6615357a457a3ef5e4144281c92c565620216045e4e1913d3b8dd5591a87f37f0d0d34b72880b84931d6a3ff34028f7cc1cf124e8652799f6378bda35acac8225062b6be1d00066892ee3a3fd198035a9f27c9eaf3010832afea8030aba03f094cac5a22f613e8e9c2dc8b398d0f1aaf70261b19f637fae2ebbe5003820da4930cb18b002b6ab8a7d622eb3d44b9d0ad5976e8395c0f82148ad65b907dd88702bc09eba6d8c99aa1977e4a35956eff517025b63e910997aac9cffabcdec546be51a833905e81e00300a1409a5620c9e03f40c9d4cf1688e7d995f952f158b84ac6d05d1a0b75b75133a865c51476eb9ca164f7403ffaeb9f2decb34c7ecd73f5d398f0ec7b41649d9b93e13d573b65ac7e949daa6e303510d60df82c88c1d88bc9a660d45535a1526f11f0832353f5a243ac3664f5562857a48c437212308021ea10809edd248f307d66be70e791d538abb95af5c554b61e09c4d7c1b53a5103b44912586eb32482c119b087668682d8e62edba8b552d241ab355fa6881d4bf2f7ce2bd3081f28dba686153c50e04d450806285d843a20f303813501d369bca82caa0c39fb703d070c05a1c2213c87646525106d24b2ee98363909882117fe47495dfe661ec1810f9c49e8f2c730c970bf308184c5831c1ee01d174b8309a9704074bd91ef8c9e34708dc0d63e5eb1017c5d14572a3039e0375b530fa243e1ce6e55c4ebf7932a658f3b6ea09f4c958eacfcc3c2671ed391c8db4fec8ccc2783ccbd1c6913753c94238ae118e4877de94ffbce231c2c358567afe38ff56c338c5148df15d497a5c6b4c3d6feeb4ba26a3915d61cb6f74f5f3a794de5b64a74943adbecbebda4a196b3da3e788bf6e8df9e1e7acf61663f2124fbe6c66cf95f75361a91ea54024252cb908220191e395f2e6033c3747b080dfa6a607382b36c94ec6121d8889b106d3e59a836c1e71092094559531badf07e9f7bcbadd2fdd817bb0aff8322a1da5d5224d05b52f007a90ca121a03ed4bab1c39cedf275d321b71af51ee1f4ff07459f9198c45deff6b294f8ee89ae5e529241f09c105b9848d08db7723d455a9915bd727d25e38d5c2118bdded00ac5d5cb35deaec5639bf998024f653d1d01729878c99b6dbed51c9acc20f4ecd3a1d2b801d4beca8ddb48f4ba75c59399d73c348b9e4b17c34d6c1e3664642713976373e8c3bb8a9ac7a15f6004229546b23b44fe3e3a1e78efb37f481f9209992fbad763f6e2c07162af74f10c624618892e1f796aae5158e53ddcce12b9ca56aceafa3e099253e21057e654697f3e5311a1e8570ac087a1b3c8879deea29dbe97aeeba7257cd1549b75daacd680444b1270d6d9a4548bbd827c4aa09735b27c1755a09dcf6a33ce29dabe6ae677916a40f575449cb8ba144233cfe69574e4afc7202da57e7e02509c29b1be6999988ecbad60e52a41ff0c2ce9255f739e81bd804a0281ffd4656824bb2af7f71be21b6391e00efb2427de322d0ae416598399c14a0333be7f6745b3f8377e8fa56ac57b891e578c5e0470f82f06c9f6604717797d20562ce1158efb82f257590531a3b80334817e86f54a0e018552ee952d0cd710d099e80af5e935efc224aa545f4a46067c5e1e2e0973cbdd8723ac5bd2c778c21bc7ac56e8bbf09d1478575ec72d36992e9876e9237a1f9b66ec6ed43e2ef9936d45b86505a63ff9034fdcfffd10834ab0f987ffb0146a95b400f7247bda4bcb9d0bdbf129b97ee6a75aeea66fa5f38651f5aaf7a54350e2d1b9679b2e7277d978b7b0e520af7aa8cda6bec063af8f84cfa39b57e7c22b2b90b2effff8ab00357afc555686d00afc7e32c91e63973480b523fe8bbc8bb9face72e7d271d754c53557897711c8938c4a1a48eb0084128ca30a0ca2783d7bb38ea9e341a4dabf8a08e49cc9c9655915c631338724e227a81722ef8947970b42bc37beaec853d19754c59839a012f593f5ae68248f511598b7225674a5138696a4b6dcddae65d6aeb1008dc89947c66847e74723e65e5cdf033623c9ad5c8f795d67fcad42655bb0010a63cacc989f81ad3deb2b36a3cf9140ac62397f626df76d13470b22a1219dab43aea144300097ccde925bde45c706f6c96eb8694e6a1173825f836b8388f973c5b81c206c9e57bafb74eca08dcaa7315c39d595750842f49c04d068e1cdb16e428117f5c5d35f89b72483b8f3b65e2ebae124a8bb2f9749d2900fca8e46661404e1475797dfc37089b7201ba9626f7414d0834c17d4eec00be4b39f0a7d5f55c114966a8a32a7172923a4eb0be2f6a6eb13cc86bce5b70288b9717f712198514c5d68ec1e2bca9c54cbbb84c79f9efef24fc6a2143bfa1be093aafad69834e89fc5d97a433167958e930daccb7508b02c73b01196cc4ab48dbcac2160a054aa3c34f9d998f33285a1ae9937addb5592555ee25c10271b487af3dd36e6220488313aa2b5f79726ff0abd3c87445a161c7e8c24a577b033a234d765e747c8d7257ff7f2b81e8ca91c50a3b486ba3e311be89876386bac0d7ef2c55b0bee1dc30a8b180254ad0ce81efbda1fcb3993f4dfdb3d3585dd057a7f6bbd5b2cb0c46a9bc5179a97bd350482b6a5a28aa309048d945ba041b0a566d605ba97abaa87d290b5c1ae9ee6271ccf6910b783966cc5bd404b52760cc1363cf51195b8875f7721f464741f9510b6facf7cca8f5ef58fe25fa19878da12a4810f322358d12b5ae87e5cca41bda689dd1e8b2208af697a9763520af2f599ec72bc9483be4613bb1f1353c8406f1cc17013d82af9d3bace9272d0ae6b62b763a60cea754dddd5584a82786d13bb1c97c2205d6f6277c7a6085abd2e31893c685b17844cdc4ad9d4e00d61ecf14c060a646b1f2c723c45d6e407a4ba7830595b35bb7567205d91794318cc8d3680744434a8a3d8a02aaa5592e26ae9080c7c9e99c90365bc1e285b281e6fa0b369fffe519e1751cecac274e9103afd7c3ed0727bf151860d3e419f297efe4341306fc40acc4768ce1d23d2230b9af42da8f8e6584a678b113daa9422301bef850f2ff14788fe70d46c497b5895ce1435fa89d0857fef43fdc8bbf5fa1894e5ecb154c413def088d9e2bd08c5b199287678443eb9bf4da34d75313ddf025338ab94756f769b7ff9123a08605909935e12fc17817a10446ea740691a98798144724e09af38f9d1069c3709f80b6ed880e493ea621289d41da5719750b64576c93bb0f19ec5dcf21118d87eb4cdf3998e83131916898e35aeb30367eb08a31d5ef5e5b70e777d9fc466787c02f3f97bbdd71d88b4092aaf21efdf168bd68d4e3fb93a3eea7bc3982bb2b078da1f44d813514b2acf061955a2bca00132fef909c62fa7f6a0eb82e20eb3da40bbc492d9bddb7461993fedf540c6108e090ea0ed71fa00652b2d33867a40a5b652693423b54636955a82b58919c152819dd167765359122366f24ced88619cb9ff8569c239e1e728f5a078bae4a5f464ba6e4baa85c31df65332b9ebf16d21ac708243a01d58db3a6fdd7dd47fb597da44903b1edc1e658762c7a3ee030f1db366da87a22e3abcb57d35b01c010e6f30333a4ac3062c2c0a354bcc56a35b28676a57eb12bc2ec6e05c90c8365015f9baade943b60142d6a76e68222b50eb99491301889460582279affacd84048ebafe91d0d336902efd4facc6ca2872525b6513e3d9e17a5c9ee1169d6e471f56e6ba1df26061539d4c0150abb84c628341340bd4547a0c8268881d90ac7025aedcf209bb9853868815ff471dc90cc060670ecad805c43e8005739ad17e2ec42cc09f2426aec9351c06db62c75a229691b93ed40db1b6e011190db15ef72ae4baf8fc1227479dca89bb0cbad683e14ee5bf862b8655d3ec61a40721f9e60484bd884fba9b10dade4f68b4e679ab6c0afcc80c7746032e0ca307698bb8a55ff2f9f608f999c6e84702cad566d01d0f462d4ec721f2b429d322a2c2cc1569095babf4ca6769b783dcbc160a3338087c42c09d74ff355b421c01ddea80490f1c8de57eefc5bd163c6da1e1fd22362aa4df19cbcae841edc4425c2bf67a8110c70ade87655c56c81a031da715dc1debc9ec60bf2fc558e93b21ab48816ec2afad4afe5881ff81d865da01a2024fa54ca796357f24ae2bb276818af30aedc7aab271b0f7b112c78ade8725657110f76399e1487685bed52c500377f20af2de197284952e02cee8c84c428baf2a0bca43231a4124631eec418e98ba88998446ac407b45442231dea356949a6e750d257c8c34279910c2640232f45c0bd8f888e42455edafccbce3c8e9d79565461203c67721bd17eabb206e26a5b09306747ab842736feafd2d1c7caf59a89de3df5f7a4535ec0c6b21b1bff1e88626ad751166ecfcaa65ee035662b2fd2fdc9500ac1a7755b8c4518549d775c68274aa2381f65131794489ff976836d67cda60a736024dbddeccc51427edc29db21ef637774c94849a392abcb07ea91af4e0965927837861591b50608a438c7ee029853b02934fefcaac39bee077a9f7c11a3770b693cb6f5432c8632754fb7ae4b04d992454ea684e4efc5b7027211cf4909c9fecc487f753071e42f98ee929ddb73f79f0a71a171d286f7751d702946db9ea78632bf715832aef526efc55017f50e5a620a9a8b9f0b70c84ea3a791683f16b06357fd3de8ddbc5c071922954d2d3084e31689e520f2a5160c4eb2ff9680755b25e66f40da74cf9a311d7f610508d91af3957630f98e82c5a24e95d184f96d9e4d688abf7a200617014ae12d09bf70262908ecb161d4dff015212d8e718674f6038de5a7d1ad82eb0f1c9f758aaaa259df005dc0a56f17ffc22b7d1c8c7aea26cc7eb914ae4775c56a81064bd8696339202cd4be43ba6bc2874299dcc004ad04bd887c5220ca3766c906cdf40fd3f457d72acd49897433089cf678b97d5a8681dba7f2f5df202e671c9cfcb5943ef9a5222697c8cad146913b5449b8d8ee1034537f61c0d39c84924a6695b1ec9b918610040e1788ab9bacf1e4a53c272f43dc95748a7292efa538a575ea4a2848946996a11cdbb1faaef909765067c29b2f63920f9ae9a384c383bb362a36b2e529e23f53cec1d2bec0627da8a83a98c9db47317f2bb0410ce7073db4a33d85f6ebe41214125845f98a317534a10afbe0e48975c8eb47ad5d3a3bb49e7bba06c0a731c148f771a50c24f3e52892dcd8e969cff85875f45ceb399db61e4c53aa7ed0512b313f56c5f972a0c65358874dd7f98d593d78662e06f8076e61ae8e288febe3a684437dcc5b8e65555a622a44db41c9d311022bc65989b74c966653febfbe9492ae927c8ce785bbc1329467bee4b5f95ab10ddd0aa63fc1848bdec123af44e721f1ff3335b317a554fb86e5b9b5d8480770eef19c4ba50ffb7da3baf4ee39ff909a2eddf92815cb1d67298b760e7e504e0b069413f168c71bf39275407a817ba004cf9cea5c881b1115e611832e5206ddbe114e103140920ad2e81022fd2cef29e75dbe441a12c0be0e646f0602155b34bb86c18a6dd5d53d487869f28f63077ba1821340044f72c40181572b46e8334bc4841473ca3158d8905354a9d10161adb899a0e5f08ef42c1c0f14612dc81f6b313482751d1b229578a0317214e542c8901bdd74335561d692ce4dfbe2e258e19f04120b07ac04d1121c893e1e9b26a4b4c46f7f7a29d0b88cc0431c2a8d05c3028e493da522afb3b554869587d9c16f6b14cbfa0528fa0e8d6549d905709b95ad1bdacf9aa2b84e698f76a18a8dd4f869e82989478269f625d5d673fbe3ebe2c7ab9ebb3a9eb2760bf3c34d2daa444f35bb3b2731b13516d6859ddc65085b646cf723a609e2a4724f35cae6b6910404663581217a7cea3ad62d6ca5bd0ea7b2d9578d7499236b4ebb89c91cc9a2363d780729a164dc65ed01e670ad102ad77a29eb1c25361f5a865327c3f2679d1489911a88c94cb8f8d31989783fb50873a48a866d1915b646692d7ef72a87492880e0a425e288c8a018d601b02a9f7b67f9aec18bf3ecd0e2cfa2b4ff2bf38e0c96bf196b71148ece45bfb785dd87aebf51965fba0bff0c95695402ba001e86a29fec88d126937efaf23629c2d4106a381e70d6a55e32ea0e8138cafc7dfeed09a8fbcef090486a8f6998a47b656b96821e0d0e5e218972bab6d1ce2f0d88d8fd8bff4d309b68c8cbcb64e2a434b52322423797728827335dda018ee757f6d7fac48443ec63bcdd02636fb00d73ffa1ee7bba336c10ca16162c7aca139e1ea5f7302df87ec82527f9d0603db7b3167f566f7470f8de389aac9efecb1ffc6d9ef563cc442d5653d94b0b257307940cfbb2fc65406059d702f1d19b1e5d43519826977b83a4ea072bb3a0afd019a3e3f91e0dee3768a6b66f16ccd8d1d8558a2b537b11bb295fec373275ea821841754e250917672c7e903c1d470b10af2ca93fedd6b1ed22ac71b68f5afcc83750898fe276fb2638aefbdcb1ba1b24459d9eabd76a5a567725756112c73ad5dfe316da322d7747ddd8a99f5d95287482b6829e9745d303248aa818b22a8f37c22d09cd3774a68a59a0b35b99f9825487270313faea5778298009551ed09e950164bf84c86f8f0a6a154ceba584047ac16d9931d9095455e590844e5001c66bcb255d709dafffe8491462b87e6af82541c88ba0a38ce0264125dff9a62afa16e63a4a0db9de35b43c516fc1dda1e4d5a0bf27ed87ebabbfc7cfb3394d2cef6502ac1e9f03207dcf7e60d2e0c81ab75ae48f9a122bf45efdf043c67df157ab09f15504a60d826c268b551d834805d94b55f1bc80e84c5983f72bea96390c7c4dc75c21ec32a81eec1e87a9e1259a717b6b43f1b8231126b1e3fca33ae4b98e4a6ede8d689db72ecc9465ea4888cbd5775315285522e1b0191200b495281612714140244da3198c16ed4f0c9eafb800fe74142f392cb98fef063e5b9b6fe43d892fe0d0bf7443ad16ae853e9f7db730dcecb6d04fbaac28da13f810ed9d3766e71fbbec9b42b5a58e542c9ea649e4c1c3c08f9ce4f5cf5de7576e3c894b000f6eb905551d59db5680a8017a823a042b6c07add004f6075a7b72439d6c5b85094b72c5f8307da1664459f1f8fcc90ef668279ac8b4e5d18d77ef756145072309b92067708edb86d843edba4a0276d048463d2b8833b616733c6e3da027103387ed62da96230b9f02e7317e81460f37afade142f9c31e85cacf28c185e3c5fa655ea08ae9829f5bfd4d9e04a45be8641057aacded189d9ded98ce7dac501c9d196e9f31062686a7e496fe17c94aa3fd97d509fbb764852f43d8330345c66a3049ddae9c87d975af11e35c50c38ebc4fcf872179a9e55fc16cfaa5e0a17811815246e7be5d0be0096ed2c6edf0c577967e29006bab574b2b9560bd44da5f2629623e6bea0c97fb06a53639265767a1187c56ef56e44e08f996c605ec2304f1c42f979cf9fd6cf10b3be94c5ab35d564dfdc6117302c085762c5931e73866588ae8f63dce4ebf435ac3ca66008d53191f9658c109d7a8fee43c04093bd0258a53b6fbf454f9ff8d6e4a1e368308aa657e827c5de533c09c0d598042f05ec8a871280776b4194f69ba1c73e655706954996fe05f686dd0616765b563418cf5bc728b12e6e85a7beb0a94e2707b5398523fe3728f7c755c3df8b9d2d822bade027f231dbe4aedae639444ffdb32ab3945d5e089229d4526166de63894f52f79928497aebf8784e5bb4a7fa12feb2636224d2cb8e92100cdf538fb7b5aa43bdc83efff5c14a4e41629e784f87a6d7075279a26e1ee22c39ac245e5efac05d9fc9ed1d4bb2bc5a31cf9bfdaec20988684c6987433b34466014f7f4387c90cde8896717ed38297432453389c68a3fae5ed7f7c42cc04d2e4ef1fcd3696e02c5f984bd4541052b13d1934fa84e51e91ed07a58b7691b5ed3b12777470c323f8959b98b348a7c504282c9d5b1b1e27a687686aba84b4021dd5850a6af31fe6a1fa6bdc005dac983458c28350230ff64ef8683c929a204e59294c967fdeb2f34d89651eaaf7a4b6c3a2cc9c8c792be70ce0854eaeb5d728a4f5f04c6ff869a97f863b383aa4b8bf60a92031998b3f21551b7e011d3af608f8f10029741e379d87c74283b61ccbb520b328ce3863ec67096b97a930a0224d8d3b7f39f941482a0ab8e940a99d5c36f7acbd81af959089f1aea8602c729e77d6c5b14ba91b2dba6f55e5e00db789ed507d56ae601bde06509ef75fa8a1239e73a14c3d186a5197b1ae4d463b94bf2a21f6d84919c15095deec5d1c4c7236378ee8b65dfd2cbb12e1426e8f616cbe1fda68c649426d06a63de8b6fa94c2555d718239c5c039c8d3963cc31553e7d959e165f0a1c0d6262387381089f1b331ee6f2eab2ff0dc4167a9611fd99c319e586a40e2e873745d82f55a38b91d15cfc9247906ae2c36e0e0fa739a2ca732a70cafb018309eec1f7a144be2f17f547ecf304444b9572e9591b40adc46371a34d6885918a989d2ee8890a017fe22af5c4acf88cabfa15b3893f70bcf3c584b2bd0908c9cadf864804b73162233babbcac2e39cf89b7192d773448ec72922dab9a18346481b8978e817efad34c6a1c25e9e6d8e70d44501ea6bc33bf52d22060e6503b4324c7011cb01597df9ea7ca63ac582d3274cc42549296c56d8899edee0dd42f5d2fb5e8d89826fe420c0e630c67690f0e6d8dcf5251b63b3ad9a610c7c04ca50447ea8c7c41602230d441d78d926f4552a7902f2bc9e5d3ca507af131de98f302109a336e1c56ce465baeae151be37e1d5c61f6b54dd10d8a8fd2ae39ec88f5e912832673e47c6d6039885538d6c23813c251a287c01103154f5c0ca838c5e3d8957c66fb1b8720f846b5da1e3c5a28e81cb6470adf019d3af0a6348e81500538eb443b0e657fe328cf170d8ca6790711a7e52e310a791abe6454c45a2c5681d07d5b38ee0ae4357f6c94620087779b5b439add1b7444420af20f6b153af6f9c5a93de2969bd6212f78b58a5304faf685f07b8c46b124baa1397686a908e6a188c4d552a1658e49510be34206fe10067d751ae493a8191c1ef9dc18ee1ca25e41c01739c23e869a2c43487d7aa33d383196153270c54e0121622fc8e031fb580e11e3714f1253658d9b076494ef586e256484043b75f18a4a937a3a0d363eeb3423022cf1806235b7b3e3462176bd4a0d4c549d7cbb85b4ae76d0ed269112ce29014aeb62cb546dde9c225e3f40a61159ab6e1d7572e0c6b8fd6a9277bd4e47b9e77ff802f7be905ed222dce654f49708c1b367dbd0b4d9d234e75537e37bf7ac662c39b1d64302bdc07af2d1e0f20c7e3fd1a1583ccf343e20f3a0e06ac9855dee17c34728bc4aa906b71b2b2e09f5482d882783ab1798c4404678fd91c8e4bb71833a3f93e227571e4552f669b8070c257f9f03b01830d2597d43523423495a70a7ecf9f4c936c2cf66e9f69bab5717444cf50af36310cf0eec9dbfcbdd49275789ff882deeff98c2cee165f428f52f0669e0d760ee3bbdfc291db77b577e36415c5a3c04c40af0188b98191c5ba8958a114c13b4fe4a4312535fc744c0685701190c49fdfca80364f51a859f9c4fdaf22d4caebcab85e4a744d7519c97511b218a3d39d969206e2978c88208efa63d7b230e7be05f53cfc9ae2cc0212de9a5caba92cf774e85a3c5482a32ef44d033203ec41d7f7bd67e35790e3a0fb95f55cfac150b871910213428d4ca903643f88c97ea4de8704faca148c3c9089e9800753a3c504e2a72bf8d4279e944a6c97a22d28653caf69ebe07a49694944ba38de5e9009778e1fefb6ffe5ea853c8a229fd9f75aa25587df8a615ba1cbc2c7ac45f3962bb2de2dac9ce0b6d4461766d135c8c9163a7e4ef8a69ef32608a473ef4de03ce06c20e36fc77cc701bb1fb85627357a38084adca088f2167104a4ef5cb2ada0e7dfbefe02cc30d548643c6c0988761a2af0a8e31426e8be7a2461d333528adbd3d91f1e9253657dbde078b16096d41c0c65b6ea2b84ceebba1af99c6a1c01ec5f4a63bab4ec433ae5bf8da61410427dbab74c0099e5432518ec1264e691a7a1ef862e42d02d8291a75573496859e1dd3acf5c2f93d262ecb11e8bf7c124261aa51de0569470e5917d21f3ada0986a60423d2141876afa329bb21745dbdc64c9738703428cbe971384c4a1d8a02170e69819aa18a6853abd8e44f0eab9002ae5382febf797d53423e21e335e8f975c41b0f8981c2561b046d6a8d4718d3c5575a156f62a8d190f0c7e035dcb0c3e592d4d3f95c2e659db9d1350a121c8b81decfd17deb494c155eb01aa3d9a20bf9054499ebd24f76c5bd268a2d2dd5012c1d02d6314682c9e98c0c5b74fc17e4d48b6020c34055aa774280eeaeb667b6e03507bd6778c8a46093359b80d9e8b8fab53d65ed0cf7a138937cbf5c112a8b772eb7e31e7ba826557f60378f2a73c141c3e0b103b93c74535fe4984329b8396f363613b093915decfe4fc67aa2af816d2e30eb872168f456ff7d23504026f3c5b854f3c0a108421a6d6132a12ed602e5bb1446a4c5ddcd9bb37d1e6f4cd153ad7a368811531af060596a725023d4ffa0c23446d52d1a8f200486f83b6ddfcf52f997957dbf38712ceef4ec806d6b8be45d489c1bb81c1596cd3ca692c2c82942869bfa6711c7752f043274792ec525245911696c1919f47e37999b1a61ffc2d6702f44f26f9d530d3b76b036738475a4ae8807118d2b627e56f37e2d859be9b882ea3c3a7f084bbebad74444a459cd88e2c21cdb9e7b2ae7869b6f5a8377894b378ae2f3396ec6b1b076cc2c5f7e26903861bd1ca59dbf088befa855766f7b4815b222015217da933687d656bda4bcefceaad162952a706916ba756425909bd7bf0f2b7a6448253e2888e1233e5b6b8948e32dbc5934062e236d982143ca3bcc460a1f89c0cfc6f9bf954f10e59ef05997a83107dd30e07018c8287b8b0918f4be3df9f8fbe3a4bc8c30cca5bd6466ff41a5a3a77cfa8bc71c5cd6d390362873677c2ac943e367bc3298b207ed75790c6179cb267d0ee083582f73fe77456878cdad9bbaf7c26ddaffb805e54d96164759b859916a719cd22b40cbec37570e320086e703a80c6122cc83ccba6429a65cbd168f3787394235cb8e3306993f26dddb0d49b733563bfd8ee9af56bb5c0ce526d64abc13aedb11d80c13e0820331f812dca78753df9b0694f7ceded39486adb427584c9c9b68fe76fa12b8e3a6a491ee87d1921df23ea5c00f25874b74e28ff19f3cc1a3d6f040ca5da62d4a7e9707fdbbcf5fc345ade3c2fcf6ce8a95a53f7418521bd2ac0f38344420519434d9c1cf750d0526116ce151023648c6aa3c84463e86d409e8062f68849de3dea5f86ae13285d45be349532ea2dfe60482d725e37a2be438f6581fca627eed42a38bb63cc63c158f7663b91e99b8f9cb4a5cf78891100f7d71a094ec839b5676a40160ffd3510d4305be08ce6305780c9f7b0860096a469c8185942362a24cb585703c8ef4e86f58c37e22ad0e70db70dd06cc5721038781a425e4484807357e4f83cb8ce2bdd61a7c1f9bf03896acb8c6732bc0078f727c80e4ccb6cdf7a9c3ecda1af90191a4e05d41d79274a065e9364909a85599e934aaed34e82486d331ea08ff223f537a96d42e7c2d48eaab08a27b9227a842efe0fdf73806bf7554577d74efa663abb803310a494b16131c550e9542caa1b8048c3d5e8de9ab92db62bd015d72e1531a4568662dc7be6ea9f258fb0321be8bd283cf22500c10a93f52920ae656b36130e94b18911fe3b125832a14e2fc482606247a3138ea616f4d5c75e7ae03c65e9c48e62731e1e92c8fcb713a320d31c4c550c5e2f15d17690e561061ab29512ce883b68cb050454b3885d5ae0a29a0fd576e56a210fe8f1481b20daffc2e0127205cb620c6a46c15061e5412fa2e9a1cdc91ace8d952234e3f2ceab3db6afe015e0309907baa1658a72eb76259d4a66ea323e8d7003755d5f895c16f868f85233f3b805883bedb20374e526dde5fc589784667cfc8b8ed19b688bcac92030a98ab73363ce4cce9f97a4b26d0e28c25e2e0d99af8fb44145964cf5e1d13c132365f48b2adc25f7c1b4f3589bfb52b9ae96b6f1f310dc64badeee1d59434d209a789ef590449ddd32ad9b551d3686cba87e5426fe1a9df3f4ac35989398a3a1467841d697b0bbc203b2702b84deb9c122d840ee4679c69dd9fbb30549926d100ce8bdcb09b451e7a8f4d8ff9bd92fd6682260ba9bbb94c9b36afe959486458dc1d4ea0d38e9c9af2d5e2b6fff7173d4b49154f119cd02333434acdc464b9fae13770860f59e013d6ec8bf129579e68892eaac48a8d9765db0bd7997e911b114e952e71b608bd39112dde316be78726a4a851b291216987a6e9e76cdd4f792c32eda8bb078e62fa1d5e21ea1f596a380734ac4b26b41bfcbfe11cf6665065297c4e3ddc359cf6b22ce208a04f87914401f9bc6051f2e0d9cc05bc56dc45eb87c34723955d531ebd7b74caa0d5da3c049d3aa4491b59a35b9607adc8a39d6c4939ba496674768f22f5e917c1781f850e7feb445bc8eb59d51e2a74678d048aa4daf8200409fcb883b4faeb62b96580802796cce66a89e173f180fe569be943072f986946330a1deaae9bd0b6e049355e7060dc4ab30c3f908ac84b6b568d72620f0fb51df23555e55d707985baaf3cdbcc0abe1d76cab6073524e62ee80daf89d1109fad0210bafda4764e23f6e5ae5513c5fb318293622cbf81692cfd50eeffc5cbd212ff5c5c64c3ca8fd3319c223ac0d2f8410589b701ede27cd52eedfe5f12bc1ede3ab7335227815c7c97ac356ae0aba57824f54f5864bc398dbe7bd357fb014b90579df876d0ba55c75ea553bd7fea5b60a17fa6efff2a427fc43f316ff3249413d130ac785bb96cc95c1bce67d06b3feeeb4f73a1c7d42149fc86958a208cb1fcf5dd1cd2f788a0cc8bee06f8a20cf44f59b8943a42c15b612b12be063d4911a51241f78e17a8fa9dc8f7f485709ea945d33e05a9dda268a0bf78619af9206704eda7cf84829afcb4cc102ccbe97e097b440347c3a6abbe9233d13ef0ed01d8be77dda906bd21b59bb1116829336e29ec740ad184df3addce3a74f34c57e83de914740e57dba0a22ecb4577fa98c40160321891a8057acae10e17c9c0f083a1a7ffeaea0a615cb98f43a85aa1598ceeea8df016982270f7f0dcfa0fc7c616e56c2cfae3e98027d760736a578f5bc9d532809ce78e999791b8492a74871f18806aabdf4d4460df77c8336667d5108f3e8813d0865725d14cb9377ca432314c86470651250bb944c241c05bf23c452898ec9cd44fd36dbe4552eeab92f3d472a99e5dd9a84a6181ba7c632d87525ceb1e552e538d4d1effcf4abd8afe7f4d20827b7ce7784e63135e1eeb03778cd149cf4e2145227afd4f78bf689e79a8e970733e0463680fc34e8d22fe2beb3ed4a4affd17862fabd8cd31203a76f0414375669a1da3f98133406be4efe948fa10cb36eb1970347804e2a17402c55d9a39bafd570106f09dce3b5c73bc3ac7a86e8020ceb96cc55481e772862377d004464831ca52a32f37f4371882a863ba65c633e4a053ece01d1ca8eae070ad99eb96f5477ca8fca8742bab36f0c0638b79c4a390292672fa61026735e03db25c4f21c06b6458206207b809dc32a2ff3706fbb3f7743a6d37d4dab9c4bb224e0286739bd447b89f00d2cfa40bcd46b3c5f494bd261fca0bd22447f5e359c63737b45124d5344fe6d149980621b67f441c00a456e9d7b8daae1a17f56c56c861f2e26b719d0493f0dbb1e84b2fd8509b2dd0198660dd65ed019b858f00f5cdaefca1487b782f9106024773bb68b41b6290eacafe4b3dddffbca9ec081819d7c3ae4785af0e0a881886e998dfe7f2aaef3cb50583837c7ba714921b7861b9b6356ef63d757d4f210b8bca00ea7e732e98a62725ab7d43186aa4a24746669148227fe18d207c8dee618a3370744f04234fd943b40a57a5602ec4e1c1160d25e2e232e888322da83e0838936efc9849512f4e765bca2a4d4f5136ad4d5012227c4d4f8539dd4e179783f3d1b4e877a247096bff0deb1888b6004ef416c9fde65f533e042aa8ae6c44f4187a4d2e138d6942d543eb195c7c02e27a61fed56b4f79d92256ba5ab3a0fd254740fe846e1894a6490b88fdc941c641592e646b061d8a21a63609e68cf6e85580eb0df142fc5d443b2729362bc6e85607806cbbab081f21f6ecc907883467d2d6aaca7f0f05f439a1a317e497cd47d1e8fd2b1dad4361dfe6d40c36afd3741faa177044d19decb6dd717e432de3721d46a67e08f7852487b336e4b2c9f1aaa2ecab21621329379b66f0453461f8ed73ef40d8238c0b482a2404d618ad30ffa9905cdc1f7783bbc2315cdce5d7e8094a87578da994aa44c05460e13790fc26b2e67ae71424a7daeb1d05e49caeae121f27636ba6a8c60c0f82908699449b8a9096ea23d943d24d87da207a7de82f70256afa7611f88bca47955ca3e95f874207525a8d05d9eed68e0d6215a516e1fc77ca3b2837548633e73e8492f3b0a49b0a810e927c19d621cb15b1995d9330bcc1f574129c908a1a3782da4d07d0fd878405b3054a56a8a9c08e4f762f9871e71e1443f26cc6ba8ede456b7c9da9fd7078006e732ff175cc6e8783416a72c15c41c0a80175acfb0e4c1c377c0bedd937d2e5a6540a729186caf74a678b53115a077848f091df38ebf5e9075480a8802ba26f9d85c48669b9aeef2ac3deaa263b70e50e6f1d8bd3e8ec4b49e6565c918c69749741d2c2d149ab90ff947f653a9db03021c56117c7a9419d00c93b3f0d79bf1db375d23754a3cb2b9b057835527f896541c4c78d953f65e5a05146119c984c31ff223d99a5c567639161a84a5998c64da62cdefd7393cf03aa76b3d92c020fe49bc173d3345fec4beb71285845f772ec542513084c00aaa22aeed6b3cc72dd6513185543c1835ec198bf5499a7eaf3311c9bda7b687c9492b6b8f4c29ae69854071506364385892227db479ce832db18f26a895dfd75254920fa5a3297c7257a0dd0277aad46dd10206246f6cc3e715704483f49ebbe14a0cd95606de23273adcf565911e7a75d8ea9b54a99ac19525806e20be8dc749704780e1e321c1e895b7c2f0306f1009d6c8397f82efaf84c9141a82a7e8203a63d5c57c838d98b0fd50fa6e0bf7c103fc56fe8d6f909d4506e4c083bdab0a40b205bd1580e3b0323ab56b1e4af5648951cee50a0a082809c843872c509f33716ac05a5a77b978ebbb25a7124cda74a13061df978b410bfaafa1cdc95ecea22a7013043c4a075ff59bcaebdaaf60550d54c5056c500ea441468d4faac2a477cc695a790c607f4b027f498117815fb510f7454b2cab6e6cf8c6d4d82cf42bb01133b0b6889f123c1aaf24f36e9a976faa200ad5bf9a082bb7a406ca29f917929757ab7ef2fc7bfe23cbb0e3aa779d5b4c22239ea38918a6527dd4ea906180da51764da5b0162d7decc64fa6ef80a6aae071268c7174cbedaae3697bb546d27644942b5416f1c8c5d1494e25e57356bd0b7d4121989426630a31b7aaef610fd4c907b2062218625b6dd39f57adf1817580ba61b14f7f8f512b3410b8222590e75981977ce854a06a9d39732211fcdb4e6217e38375f1e467f6261d1a74c64380a941601e1d58554afe2d8f57aff3130c29aad837e6144558e232442eafca03787495ae8070ae6220d6525f610dcd3f06a1324ad8fd45ff8eada92e58f87a09f09e92b9d1cd15a2a220fe6fb1d48f44e38fe47a5791e014160c7a36b991e8e49bf5c0d8482e97655b826b058fa8ae21476d45469def619428a433a26e3cba55e841c07521c8a8c3ffe021ab4033c59008a6b0baaa0f1469888e6bae9078f2e221d3e6a5be96d661527fc618d24f5c86bbd8e7f4264b7adf031ade62f526e797adb0c9cce57d65e6858f64e0c218679dd1bd620a01fb8f019454c552d1513a050d4a0db37bfe21e8eb2c1c6103cecd7077ad39d6ded609e8aa059f7e9448728eaaaba77de057503cbf7b27e1efe6e11c48db96878b9825b09b8972150a2671b08ac4f91c3651286348d801412c3cd8b9d1449a40218e4a968ea38eaf1be845c49109169cca5dfa8212cb1a9d7c24d668ea1a0d060613dc14e066a1fab6f5e6dd66223ab67eb797edafe2b64753a1f9f54cde3848c8fabafc04a02cbe02651b7587b013b2ff1abe319e680a13fdbe25626ab89cf00466cd21bf4334b4a1db8dcf87cc1ad1cc00918d67db0035c3ef97e93f934199939ce23699664830c35b1f45360d5c91b4a228d8674249136cb6a3695dc6f227ba2182fbd953655a682d44ca5167c2503bc165acc3034dc80232e43c305892c39aab4ba963d559b18c24ef34a38f707cb424e1d1c89ac1e74b9f6521078b9191585900b7731c5311375eec0714f0e09640a1545754a798f02237a4f5e2ee59f4eeb715201996a293d8cf40000b2fdb478b3fbd85e19cadc3f402db56e9a8314418f08097a3d4c1915fb976c07a5bd4865e8838cbf9667ca3bee306c19d0662c9ed462e519f047889e3521feac947bb46ce6fd3ed5299065abdd10e4aeb5680380618bd4402c89eb4502f3f30080a6fdbb4958a3ed657b39a823eb4d18843d1888afc346c326a22c41236b4d86155e0a70d8fbcf0bca2decb1132bacd09e82b0570c7e89f8a8924788d084efef2a74132db2f0d91339d4073ae12e4acf980cdcab30b5bc531202fe8909b38930c67669589019436a3829795614328d84fcd89c634ef805b3f994d2e6cc3169d7b981ee8cbf941470c3849cb4e809a23bc606627dbec5636886d66bddc17aa17720379a30736325c21adceb9eda05e05efe140fd989f66ae15dc2dba42e2794cdd80fb5ad08d9dc5a450a35a1dca363eb0ce01bf9c25b9e9fc98ff79fe943a623284e7db2458ffa3d4b15f94c8d6f99c073234274fab401f56c0ec678757ba0a105962ff2929cdab5030b58272676baf9bf24ba0631294723f97181fef20eb6bf25c7a62237b76c5302dd9665817335b1831538deff4b2ceff023ae6739ad61b615af44a3a515918cccf6a716df0505a421a4798ee28986c4cc6947130090d548bd55d300bb752bcea76279e7794eb7bb3a40f37b809073b58975539a74f258ebad58104dcb91cea8740819aed7f4c35e8ffa5c8a9eb3dd52f639b0a754b53a19c8a416124841db1ce551c3cb0d6d2b56d5353e6a2363b458ae8eeb91f56c4481d77b67fa8d11813f34f052b81e42bbbacaa162af09103dc9918f353be51b7894a3331c1a3ecda97aa0bc665fec99d9b95b183055cf6ed2f5a1558d86cd6a3e4f0e749ab54d3ba87e9041047e6e72b0a1a77c8382baca8aba3e5ff0f34fc7ab5854b3379a24e73585b7da98201e174e4235fd7b28e70a61e7ca8f1533100128c695aa650657a059b9b98464d6aa26a76dd2c84183f2d44391d47bdf870f252afeca02149b5570f42a144aef29bc00668e4123030211f7cd75e6c41dc95bb4765b3bfe2b3bd05176b18a487a3cf39c010ea3ba8143bf479deb08ffced2a7d98582d36219adba046e483ac4224349ef8a01ae3fc6790ef20199d5fd0288bc77de77531ad9f46e262bbd4de31c8c7f58612cc9ce4fc3543b132cdfba40e5e088cf113a184b4e0fc3e3422ee8861413c50653a4b1fdbdda79d6a45e9fb525b286ca15ecb2673406978a2f3850e6d4b343b63c7a2faff4a290a6f50e0344550b85b0b1beb77cde3c785781ad60c3090a01e8732f67241df190ad520ee14ebf6220d801dd330317644e3604ba58f557d9ac432a288efdaaca7480aceef58017f9d00bf7a3988eaf4718a256fc7f681a4281a990e30d84645e3b08a1162c2f2ecdc946dcef4325126040ead100571989d9608856ef2085e86c350ffa78f1678e01e3853c9504813a727611cac2a0f579ae37e94aa5d6bd89e1d8758c1fb40dec50372884294dbc7d3b9aeb2b30b18b8737c5b55d281b4d604f3cc8e39c7a96c68e2456c0de1a198fb0fbb3214c2b085f79c1851bde7cbd648591ca81cc8012825f4286c9d1adee6cffd9c8b898803d2453520f202e60b6888308a4419f396e4a355cfb2174b18feea69d24aa4ffe38df4f09808fd541c1557a4e1500acc09679e57f23b07709f18422528f9722c4e9d9dff2c4bc379af94911a2bd169b07a1d915e99b5308f434dac06508b29929c2cacfec9c950c0d51af3ba80742e559582650de3f54c60ecf1d0e4a2ff3cba686e88c1abd0e128042d47cdf0cf45a9614b0aa04d8cd90294efa46f693990e18e48940918140cc5e40b3e5e44804f1735281dc72bbba0cd7d2d53626f67b817f2e7570baa34c6cab3664bd97dfd3ab68a321919c6f44ad4a120b1a753001b17be217f0b3cc83dc1ebc596ee0e8ef4013ce72db47b506da764d86425bcb7f3c1bd9b24ced2c1679c9ee5cbcfc71af19b26566fa684c7ae09822685a6cd7bada2e2c8738fda6a1e92d48174c28f635600064934d9f49837f7419ee7d761739d43b11d831eefdce0591f09ce961fee76ac740fd0d1f656674bac5f190963b988a7ea9b182214e877f44f5e8f4cdc5c174225fc569455f62d687920bb41fd8c671d4124bf20aa1a0119f8fe299ff2b1dc10fb022263c74dd09b76c924476dd4f98c0c956d4bfee351fb87b9e12c65931f47099ebfffb51457616e1abd779ef1fe4dfa4677d3e8b3a9c3abddd08d42808cc26ddfbef4e9161d6bc115f47abb03c7a4d31a256b434442a87585d971322495be09d883705358276f8a98bccc4b526f58bc0623ca5710aee7618057fcdf6da9881e457cc04c3473f5d8c1e3da9dc44d1019c6687c9efdae8f1a921e0fb73479e65ccb780c0da6d417c38de8bcf9de0e22a8ec01b6b8a7a54dba0fd187f0488b79e21112c4c9fb848cf1860d0b5f93b648887f4e2b380f1859b171b70e2b13e3f94fb3eb69efdba8a3a43d0e89265db2898bcfcbb9c26d2180e85c6f471b9e36613c4513e4e4bfb9001388a166961b29205a24233a544aea11dcf043bd855ab5ac3e72484405976a5f231b0cd19f6532e949037df6d2639b11927cbdc4d8b59e3b8dad0a29a794485dc6885f6ebe241e5ce058903f33efeb894965331308edb2f9d6d1867115a953e204385dc09e3fb709747b015aabb4e36fb74127bf70f38af2733c03507f5685e8e6f7646f378462b736b0a39d1b838d81b4fe50e021ac41c3e09dbde6e5312e3ac26b581d057ad588d2f41433c46d2b371ebda304f7b3f3732d3c6dbd9d474ea4d05a781b25252c10ee89b29d067fbcc4405139cd949b624de2a1ca5e52ef29d4999f64cade229305982c81c614121aef4036bc1f72508dd7af1362d4cb943e7e164e01f6c000514b37194ea45f6c4909fbc48afb5cdd21e6b12efab1ad8371939f2f7217cda735ad0440100987a9e4c484b1b8b588e4b4d506a8fbf3d31dd152eac237e18ce6089d0fff50403bc05ddcd6986541cd83f717fbfe8345424cf9c28581226b495751f20100f04b91c197c58e7e720144f9ef0753f7e24a24e3803e613fdb1ec93981a8d3e632c804b3a270509c0a4a0ea7a698a07bc780fe6d0e8c29cd70c4aa9ab7ab306268e562e6eec0288b5af216c08a19c3c7be47e4b87e65b4b9482c8384fe9550e912f8cc2350bf8106fe39a1e320747a7216887029782deebe41bb6386b6cad098a9dd29f77179eedaf83b69bd42018a01de8f8dcbd7eee77031f4ac0cf881cbd211b0783a79f18f8b77a2ab63a3bb00ec3f37b089a84c881735b284c6b918cde751b34c9b470f0aa4905d5958a715f409004706ee4c7adfbe8006ec75c290fd0cfa7f64c48dc9654714e3fe6550926d959d83f66cc50d46f43dc34549ccc9d05c14b8836353112ac4b002554a50e4c323a64bef7dbcd83de7c492a0ecba9a71b06bdc2aadabbd2e90e638034573e9966a4b933bebbdad9477622b1dde909ba013561ee8b687946474f57415ec35f6f5fb5415921ba143a06c1dfa57642b0169c0b18b51f5dfeeb5167299f0afcbb1fbd3cda9759226d30310a00a3c6327f749181090d5cc61032f33f10ffd2181cf14d07d27bc26ac7eb0f4a36d646ca74c03d8c477195d4e76cc959ab9fa8fe5bfef924b303ead402915b30d2324a0756aecf05cf89fecd25052c4653880dcd1463e2121a4c739855aced896f9d58c994792e92a874eb178866cfeff26038809a31b927c91c58696ba27e1eda07ab166c702fe40cd26dfb84102209d95bee2db79452262903f0084d098708581c2519f5504434a3852589193f98d2022d50e029260ff667081d86b8186207244f809408b346133450b9e20236b4ac404b15ca2429af76083083161471461a5d30b18408142486b84ce18212d0408bab6a3101275d594b0f99961cec0f72528ebf03ec5699a626be7680e4ceb3bc7251f68257cb3bb3755b5e6981258b164a79cbab2ec4dca7e6751a943c1a944c70a071cc6f74e60d8fadb3ecf0580bf32d27f2d44c7ad3c8e1cd8dceb6a2b9f191284b942c407c5883356503c7de22764ecc891ccb7afccc312f7ae191ccbb41872794817e75561029f4f59b5f732cfb09c13c3e0b99e75afb11397dfda25cd9faeb615e8fa0367dc1bd3c71e6cc3b250f068a90908c5e375fe4b0eb68bc8625e47a7c16bac593799e399ab7863d24419727cb322d069603224fe646e28bc703d73d9039019eb65a1e9f05c98a9f90cc36458a4446432f898c923ebc774b801ba05b4a9c498bf4fff447b98e23ed22131949f9ce02e9db57cdb1d02d9eeb31e846b91e4ec7a2d306e30c6778ebd8176dcf4f3ffd64981fc503d7551f391668ab255b2d9ecb427cf1dc2f4e9b4997e01871289d6d80ee8ff27b8ac837a13d8cf2a7a3c7e833949f6cc59904c71a2ad5a3dc70a58279f58a04a18f619e8c600541fde98fe956bd222cc856756ca7cb2099c623a38df5eab1205b280da07efa60356073ec2d6c5f0bb1841364225129f3e8e581788078fafa8779d6350f89e6d84382bd7a25982013894a1f79622c01b358f59d89bdc8a31d995c0a04f8eb38cac899b24f86d6fa5a6ba736afb553f3a8d83a6fd7221c670e15ead49354ac53af88f582d46f6741b63e196db20e64df4382a810d1f91ef08178ae532e08e69f4572fd062a4474fe67966051681eea8547be5532c6d8d5343f19fa319f6db48151ac5e8f4a753a5b522774d24f46b05610544f86b695d2b6b525755c29b5402ddb89f80329e39cdaeb07914291c31dbfa371420108209a106d8c75a3d141a60d8634f1287f350d4aa7710ebcb4970934da6d95883e76886ec9f9a97f45ea53f7286b7e71e8b5976d8111a59452dadb963a9772f64bf962f69772fda58cb518593afd1095e54842f44b294629a5d4bd4842744a29a534c6182fa574b552e9ccf951ca05534a29bd3a94de9b8fd4284b8f117fad35c618b5ff3989d1b22795a9e10d68e35e7723a366884031470e6951b0875288cd43e903e7a1dce14d1eca244348dde10f944852c6625bf570e6e335018b8906a8157801c9477230ccbf1e0b429a1b7274a70a408e7ae85413fdbc1964b83f1d0411677e3f0d760c49737241e86b26ecf3415532524ae949b9654d466e5bf47b756e6cbc1bd9ca67955dccd62db4f9e831bc79ed66dac56ca55c87e526e6781f6fa0322a91668ebc396312696868840f25d2d0ccf140b469a7a10a0e2f26f2072d28e09fdf0c596429db843f93396d2719acb96ecf24d164d637462e98add5d230c618638c3787fac5e49c5a9c53cb4cd789cc2e76a3a5b3353ce79c75de19669c546e189be81153b6a209d3bba88504532cdddddd451fbd853e3a662b9d4db17477f737361423ad5f6844884d4e5aedac16bb19cdb2d932b337d3b0b671a693693365544ab5a2abd56cb94a5202134629a922a9ad24552b0649bb4cd04c936fef5c37e88d1bb3e58d569525a0a83274e53534bdcc2ef3cbf4329126989934915c4f9a4079e2224248522cdfdef44a532bbe7d522c7352a36faf450d367d15e590f635818031c65a0bf55057e95763497a61293a429a43ad2e6ab55aad561f21794952ca8686868686865aad56abd5ca8142a1503a56494addeaa0763d7961293a427abd5eafd7cbe572b95cae8934d442434343435286bacaebced7ebf57ab95c2e976b6868686868c88bb20ed54b62914547485e5eafd7ebe572b95c2ed7444a424252ea560761afd7ebf57ab95c2e97cb359126d2449a481e8b0600000001841c39dcf3664b2ff5aefb440a4929432fbc5eafd7ebe572b95c2e89a5481e217979bd5eafd7cbe572b95cae1c39dcf3be2f84106a74501d3a664b1da817a21725d9a2492fe90241f7aecb593e9142528aacf27abd5ef4f5d157085f0835353a748820c2082005c1d912cc37422f212c454234e98539e7bc5e7252a7e4ad20cc568ad1244b936a52588b92264daaa9919e08448830e5db479032c226bd22f4c3cafd0037e98575896fb7e17ec8af433100340001982d0330bf7afa125290856eba2e3aaa4233a7e6ae7eb528046b518332283245907b196411b8988f9e45dbb240949b6ddb7a90c31a9943d3c91f8c4c29e6105008fc0ad090524ae307f06d9c1bdd8c8ca494c6ac5429543e99b80d6bd9c56ca5b3e5bdd1e130b58793d2794402cde69ee0db38382ac6a7db38383efa8def7ec6ca7ccc635e8d36947bea7203970b72df7aabc7779b9eea71b64d2ff558dba6877a8cb7e9e5c7db36bdd36393e9b1699b1ef7f8b44d6f7b9cb7e9e1c7a86d7ada63d5867991677ad963d536bdfb78856366b6e9d5c7331dbe81696eb07098e6472309d4a94b10543abbe5f4a2892c7d8939e79cd89cb346a7ab958ace39b93831e79cb39b933a91a5cf39678c99891524fbe9f2af1739d844e5065944bc7416fd6680048a1c1957cd4d0f5a34c587e0233109518944587cf9900716afff305a61b4421152bc154e70e4ad70022e0d86abd5cb1da49452ca29a7a44e67a44fe6a415c3b6a7408034c804c69897fd7decf1ac8f79f3f1dd30af9f7a27703bf18559540a6b26cc31db38b82bd2b08e28240b3e12d900e9fb63689c50121581f9fedee12311163e60e6c74aa17ffa8ffef9ad5004d07b3f7da733cc621a67a50f9bd91e54eae8681f7dda70114d88f27e945bcdaade2daf7c561cd7d9bccabc2e9b4c5c111fd3ab9fb65a6ba558bdd77a53fef45410d2603be67cd00fc81459724d65a426fbc9bfa7c6998dc365d2753282526f06dd70ce392b16d95b91845aa75f9f5e6b6d4ae96d3052fa63e667fd01c79a701bfa19144d30ea9c8e8b7701bfdc4c9df9dd9b73d7b9f797273d9f703ffaadb552d62f9d6385a68d97c6a92e65a8cacb6269628ba0d8a3999349699bf64c8a141a84660e0ed336ed48a428196a5205caf746c4b74f296aac6403293f2395f9da458d3363b9b4cd5176f4ed5936a5732694f9248ca2c6e9b6a18f21dc356c4f5ae79c735a0cc342cac7a21845e8e3ea13af1cd9218915a5af33077bb74d54fab6ac5bcbedb18ee16dcb328c31c6187be1cddf06b39b6d5e5d86fa3dd5a9e7509e97745c2fcd6dcf1e768f0de570c7b767d747e74f7e356f3f79d84dded6b50dc6f8facef48b79f6fbb617a5426dc7f03f374fbd0ce8843a4f9d7ea1ced39a973aad53b1c89bb7873adfbddd5536711ee9e9d3dcc479e1cdd7af080d816859fe7c6a523052c58c30a47ce6d10ce8d0238c279516bb1bb7711886b5d860ad16fbc2ae5eadd5fa3db2d344e457a7b42995b19a689c52204e562a2a952e00598cd0a29b46b9e7746bad35fa680d7fa4c0f4c4d5907eb516eb69bf5a97c8010e823ec8a43de76caf7aad93d239e7a53eac142c1d63e963d62879c8b74bef477cea03be7c3c3bca6b0a8f38d09452052e7bd26ab19b6d53e362ccb41b4829a586bb709973e2ad8b155d5eb5d6ba715d86ec47a22e52b80dc3308c333d6962dab22ccb4ca72eae7bda30c6f894bbb4e60f388ee332aa2a9d4ea7132ae545fb48140697d486e27ccc899a8e42713f648a9393280c2b88c2b8d2a9285a6283a00a46b092371cc357a16cefe5b9f7de7badb5b60ae52032f6510fe312f85bace60a44b65e2d76b18a5528997aa65e7fc8d5259095130dccaa5166ad75d6b93df8b673aa10d97a57c73ceacdf9a058b5d5524c86fa618eff39291557935c7bc86ea471821a9c31348e75896486c6b19f6c75275421d9b22ea9d792cb7eeadbc67ec81073cdaf17de12586badf6853f3b13cc55882ca7fc666e9c7641c1b166e6a5e78826cce9e1967e634ee6d7a5773107737bbd27594a9a8843e79cf5490e6fbe524ab9ea1cd961cd77d6612c41a584314562a61b8e078c6f8cde3cdd5d7dc8dddfed6effe9706f3140c93ff4a70c225f31c2e9212e81bff42247817205224b9fd2a31f6d50faaca61fb274a0292512587ab7f4fa438edf3ff5bbfd815a52a01d8781e4b153bf9af645effa90354d9bd89b0ba2b9f6b150905fdddfce0cbb99b2a8fbd38f488eaf4fc31cdfb399a84eaad39f2a6b16446034f9f0dea009d10d94c494d79379783da579985ddf01decdc3bc7de10d36e19417524f390efd373ab72fc6db7ce56daef2a873be3369ca33e7c3e43b8d535e751c21cdd3535efc1dde36d23fe5c547792e3428f3e9944f1ec4f40de9e1ba442e0886bf1d0d4acfbe2b1dfb585f0ffdea12314f60c84bb08b17f0a7177551ca5454974e95edd4738393fa36c20fb99df6d02fd71a72b8cd2eafa86c25cfd2a3f42bbd93584430c512a436b4d80110604459a1716402279a5cd1c5121667de561429e969f674b56d3fbd9ad85f106d848b728fb762d6ceb93cd1eba4916ba01b9692b63cd10613327e40757441f282347cd0858b091e8ab4c4538a34c5539ba7b288a794524a290532c20820cef8e10a26868022011828714614575800450f4841483f3c653d9529784a29a594d29905174162b8ced001145fd0c80283329880810230c0e0a15f80f1947e71c6d398a79288a794524a29ad6156f0021ea4e0010f84c0885dae38e20b1620b860a3071efa05144fe91733783af314054f299dd3b68e8f445c943ee623119730ec16345e8d52fa79405cf3f9514a5b85c6d134bf8e35cdc378a5477320f26beb61c6b24f85ef84063bc6131a47e6509ef6f83be4fb8535df928ca27c4fd899666c3f984337a858ea7ceeccea45172a2f92e40e90cecee9d18b2a7e3af522cbcfd9753c6e6ecdcba81482df374ebe9d76edeec3b7df1a2f6dfc4c577485e0813a59a59e7821d4c51158b51e8f998d98544ef204d36f74a6873773cef945eb27f6f38b243ff1cf3967c5b858c14a5bbc703182cb153a00255145972b4770e1410a908608420438082131821f8c6200c68b07415992204ae3891090132d48427ae2431726cce0891e6100c1df915734b1520f23966e0d2d46e4000418af22cee09939397a80440cceb82106423cc1433d5e219e52da31c9d204b106492cd1032d6d2ca1811ab1cb185c6ac8e243181f28d912c6962e5bb6dc2d2fe91274890661960481c6154a38e18208e450851625945c61c20936b22d49ae0ce2c894838e0b17b0b8c8d2fde041071a14095d59234c0c588021a38c2ab098c1850b245cf810828412b9904110105f70f08408bc68b203183ae8f284922e35d8620bd5165f3a5902213868a20809336cc0218a47250641ac200a29ba48638b2aa72da648492086740e6ea14187a48d817d9877a27c45aee630ebf8d47c8f06a59b91b18f445ba6f8306f21baa1e6b5e505486a28550348ee7ce623d19622b6b83e04a7d03574b4a06b68a1a3437f70af4e4d0d6583d21ada469d01152656d430823172f0c31547988089952c4cb46c49e3280830b218daa2062ff9a484337a60c203368c84607074458bd16740e7439d8f33670235e00195274a9a60528527ec1e086a8295f42106364019e30c2642433ae0b9d169b07e736ec1e4e7f4eb73ce6d5e2abfb0db62876fa7ddedee1c1a7af791e8488d577d243aeaf23508470464ef9e763435728b73462cf28baf4e6badb5d65a73f55a2bfdbc4149c33cad475bbe22e1a9b556ca231f9bd18331daf062e9861f78c27cc4857402e41241d20e9840238d2938f0cc693f121d19d923237b034694976e99c65a8fdef541b6973648b3f5b845126fadb5b67e5b981c9f4a1941041d37a809e1f35e2e655fca3940f8b99401b0cda54cf37329b37e2e651c3f97f28d978e4fdb5ccadd5cca33322f1da7b61180c8f7c31bf34b79f5d2f16a9b4b59f5d271cc369772eaa563996d2e65d44bc733db5ccadd3697f2699b4bd9f4d2318e6d2e65eea563d63697f2f6d231cd369732d65e3a0661cbe1de17428d8e4d846d841140d3f488533da494522ac19f9f0dc2b40a89e3a50e98f2a0b62209dd12842a6ee3d820c15c04a7eb8df022bc8e9acf3ccb3920f25ca41bc27fefbde700010034acc7dc363d1c8f4da78c512a11c410a38d943e3d860b725faa56313233dd8d0d078b0600206c39dcfb42a8d1016ed393380036a0697e3c9817790a402bd8364edbfa90a3c502167cfce8508e99e363f700532db4e8ee1efae8d1b1e8367aa5d1a7165a844f68b227ad16bb998637ce74caa8946a152333d3ddc0c1a241126ad1211a168e1bdd8c0c083900305d42b508492666a54aa172384dbf84a60b954f26ce3d9674d9246ec3d6fb7048e9c25e495a76bf106e48ffae2b849aee4b484146fa38940d0d65c986663e4612b2e890d16270a874289a0042ad4391841dd435f217931647282dc4984aa79635a36826ab620e8f98f160659abcead490aec2ce0940f2ca56a14d3179f071030f01da87d4c58b0b0d4a3a4f8de9b00d7d4db41e7db3761bd2a0b5b1cb5b0795e45006c9a0c6c130b7f65b12d138fd59b750a4501d62fdde6c8f4027d93a90996364b35eabe4301ebdb53ea47136b7eec20bf2890d52d2389a5b97aec669225b46e217e6ed56e365f505d6baf78ece89f7cbd6e55014403e562d743e464a5b0661744a29a552aa11a78d316629d13a8661d631eb3d98a5d6d2acacb5d6d21dd66258cb88b9635a794412a25b6b99e0d838ad3596b133af351f256428b49775c4d34d5e4de360d3cb2ee7adda465acf7ec406391f98bd5ed4bc3debd5743ffd7ad83cd240b86919ac203f34bc1e626e5d7ef273f9b18260670591d5c3f650fac70ab2397eecdb76b9cb7dd7dbbceb618bb15b1c5fa17fbcd7b1fb0169303aa52734186db5b8bb3e6d69bfceaee9353415a209462209d2431e3dde85b69139ddc675d693df980ed663d62732d8389acfebd8c967e6d84e0fad47fcab699f4f4d0a3455cc08e333977ef23cf926d0a7cdcd10203307e5d351de9d36f2f19d393bda6662218f9f5509202a0861c1cb6b9ef9f4219a070345b24de058b3ea9c1db50539acf95cabcfebd369fce8472efb7cb6bf9e5d4f018e08c89cd3971998cf58e89c1f20b87360689bcc4da71cf2f83864da6440a64de6e0947c1db71a44d2e00a320795448ec382394f7e776753865e34be6ccd9c9ab6c9fcde1ce6ef66a8160cc05851a53d63b547f9bad238770a14d80de824d7804e32e69505b941ebddb6bfccebfd6cc851158ceac69e719c0fcc7d3ff4fb05af3d472ca71b53f7ed618d4f24a11d48e659e6d50539942d299f65f133974161cd6752a6348ee6d9128d13fe6099cba3c6e13c7369d4389b671ea5d1679b949f4f2c7a8e3ef6e8f364be43a773224f967947255226b5236aadb5c6186335aa34c8d2b1d83efa5451031e3b1a542192b0aab566176ab4f8d4805bdd8276d8121ccaaf59e490ca22d37f3e56905884be8fceb7fb003dd0033d96d1ebd3bf61b9f6d947ece967bfbd70eb7ad26acb98150aa3be22629942bb3b2979dcece8d77939148bac88451948c592c3eddb4787ce13976c6a6e6e1457cd66d8b6a2db6a9569a4dce8af62c4a9005501683af5afce204b07fa3e1d81e39cd1a8a75797b54ec9c60d88c939e76c5a69359ad528cba64ee79cb331176aa6a06ee9dd5e7019609c0fead588ce784dd3ab31f8a14f63c5300cc3a611e581a1c0b47a74393d8c1e63f5d8132ba534fe42954196b5d219059ed65a4b6735aa4759ee001bddcea18c329e7cd71786af55d6b0a3be6536f5bb95a5794fe6d7b3ef3a0c5fdd7eb113d24dade710648ce1f50a19639411f4978c316e8c6733aee264fc86771bca5318e5993cf332d2a37c2bfa72bf6cab315ef9cbfdb2ad4c9e65c8f1d8b35b6e8594a3bacfb2ecf42900e8312a67283779e1caa32b40c64f2806c897f19d46a53c3379ca515e08c3a3dc720bc83ca3561ee65f7d2c0500fdaa4b6d00e84f1f0772fcea6361ef39f9caf1c9577e3af9ea034f5f0803b8fa42183ee52947f9ce4479e1ca2d4ac6535e984a7d2bc838eaeb91f1d3d7b339caa77b94672f4c7d3eddcb7cd9d6a1bcb920db471be43ebfd17539cfb86ac65533aaec28c7a819954a9572d46ace4f396a46a5f22c7b6aa5ca598cea8b89f19dcebc18142a43a150ae65a8ac5ec9ac143ee5f9deecd273bea94b0619d8af875363dc3186fe9ebc9517c2f0ab15ce8c772894e7ee0bf36797f1192f3628f385f951aef2501e3b87e532325f781ff58531be7295b3bcd836aa2fdcfce42bcf7a8c17fa749ff22de5940bd29f0a92f2fb85d853ee9924a700a0542aa5f2ecad1ce585dda37c9ebc27fbca4fd9579e7df5c506517e72d587f29d99f2fa5129af9f95f21e94674f7d2508915941509e1df5719e3fcebbc7dfcd91070c5dd7a72f5d5c5042a167cf2c024f2e5f91a49432bc79210d5629a5944a4930fc604f65c0fe6e53061d44ad9558adb5564a6b552269bbba098db76ab06bb0891cd2f80e4ee8d3398db74991e7b744ee35f0ccb28cd2b6487680450c28d4c9a4b409754d3a3175d127575a1b6a12d9272afd6df0015f9abc003e12ede0a852f1433b66deae066376692f910388d1add74ae400e8d741d68b3350af5df1d668bd4a8d661b45188661988e4e4dce9eb3ead1607b3cdaa65de5a53cad06d5140538d654a2dc5ebf58f436c8984b86f91b8b301b25f39da6b4b32f369234c3295ed16099c3eef15784fa6cde4e747246814e501ee82463cf3c7b1b263189b909939873986f58d8817ff3f20bfd7f2896659761748405bb1887420fe6d731af71b02f8c5e1e33715be8312a0f79f4c943fa314a8ca3541ee8246b33322b94ca1bc4bc3da5f2681ac440cc673cb06d3097f130d049ce50315ab7d320e627ef84063137792c348839e70d6910f3cd73c17b219280798c77db068b330748db60dedaf5f9b6efc654572e38d64879b0e505e947f848e4a5ca8ba1e46f7c24f292f4786e95082a34a1f493c7b0b75f93ffdad520667ffae587e5a8ec179a3ce5e1f568adb577e6a89cf3ec2a2fe5c5b6c9e1cf7c8cfa4e99e9fba18f619b735f944e1ffb7ab62f9471a87ef6f5b463de5f8ff4fa7df50bdbf5b69768734eb07bcc6553189efa3cc562f7210c1811f9f6cb40f7f4eb914ebfe9f48b3a48ca81d1472a31cc712bb4ebf5f4732ce654ca255e52d941ad6449bb28e7035b626dbb5a8934407cac831a678934808bf60bb3b5831aa415fb84cc9c69bf9a25df7b73ee3a1034f2edccdaae257200b412995f6b529e82697af0d87145f6a4d59eea2bd77aeffd7bb15ba59452525a6fbed08dc4f0d3bd3758413bc3ddc2558d2f1d9f58f4b4bf8a4438c3570184492d0cbd35de9df0e7a7cfcf18b623f28f2cb508b6c5acfceaed78ea855dd8754d65d772cb7f73ae477a5f72b44b2100598cc8f2f3634d07f20e749267983927377998bff809994eddfba66ccd104596fdcdd0608d420a659d1d5527725853d3d77b62dd3a636c69a288da78691aba5ac9edf846a5a6f1ca950f6550dd92af873983f94c0b3287aa65d9b7651efa6c8f3dc39a47650e2899ea02c744429d30f6d3b59ed036757e3de76ccaf9e8efde3047cfe459c5655996cd1e1c65b28ce338ef4ce6ebe11c4f1cde3293733c59d8595cc7c464de8ec3c31e662e3be3e042d6e7b3e58bbf5e32b90c477f2cacb3a9e6ecb658e3c081b9ceca63f5d58cb3be1087df989f0f8eaf9b2ccfa63b8ecceb64e1f8c2e937b6d9cd7c188671383ec76140468ec4ee9d39ad63733a667bca4cb73f6ddbbdbf10c3bdb587738b89f12fc43a9b18c7613ba5cb78984fcf9e62bc70fbf07ea90f25bf10c5b94449c939ee255666d2e5b37d863d34797f3edbf7648e39e7a1e9f3713cb76e944b4f437daceb2754af9957ce33f6f9709fcff69c9b1ce3be505a6e85595d08b73986bf507afe2af785f2f3d928e6033b719c29cb6664f7baa1f5fed10a92263624fdcd472b36bc1e099217c0472b3568e9f2dba7bcad044df9027cb492c44a922b0f7eb49204ca5b4962f4f8a547cce363bcd9ee4fb6e6b4715a76502fb19a472dc6d633f94d39c699a659d7b49e1c4f9a96a1dc6aa7af07e539b35226bbcc17f67b61bb529ffc32ca332a856c3f16ca635cb56aa9d92c6bd76b6ef242f923e512a7349789e9cc6b7b4ff6a53cebd5a7fa5a7aaa97a0324af3f6c2fc40468eb40d43d00de5c3ea9ad763cab476ad9b7c58adc9abe6b5fa4fbfccbe1ee926ead6a56b8dcaa6768cfb61727bf2366faf62ef207a3929af5bbfceb9e53e16e6d2678eceb4a16ebdfa742f3df4e9a6f665de3a936a5fe8d365be6ddb76ab7dcc037f97480384f26d754dfb7cbaef916e7dbad7bc6ad9bddf952ab96ac1eb461e373a5314a1840e9818830a2acac802cb16486544e1451a537250c60da21b9df0fa5471942469053c385145b4e28a2494c49841134364d0b0d19085eab58135321fadd440a4c3ebd628e9ecb2124b3a777995e7b55243949f4a78e69c734ee731bd1e3a3d9464d3472b35fcf061ee7634b87db452c308be7eb45243d087e06b7e61ed95b7b68d903607216c50e71d061660d830250d1da851259fd14a9234854b133180a00105de0b68609265b14ad09044db3e12b56143450287d1439487290f370f4d1e9e3ccc1e721e620f310faf87d543eb61d82b57395ead56f2b53abdb40f2128d4915651de2c42791daa3ce558955195d72f554aab296f0a9143294f3eca93df527ae28a2da528ffb4b9c9f1b66d269329cadf864c1b4d93221f6b9af6dab64dbb993618d84d9b986599a6dd691325566bb5d602993675ce2944297d2265ec89f18c7e4c4c3c2281569d4bc00696d886194d74c0a2090bd648a3d640052d1002ca104a4948cc24622414f823111b5aba0b5b430eef77959993c997c4921d2165565679e1b622475f98369d3bac799207f3844c9b0cbc1eab052c04d8319ec8e3630ab999e61773ed3b923976fd3af68c50694192c144152d1eec981b3992b9e6f83b9279088e6898cbebed05a84742e2b491d2604f79e9ac16ae631eab05cc33c73cfb84f8b4e9169a362d454a6ddb05df68827c9ee8f824e5e5ca2347a405cdb32a722bafc82ae5d9ca2ba25ac921f94aad6491d2d1cb1492745576dada9a4cce5a794e5de79cfb42d07e5b60b5c039ca515f0878288a4ed437a40b80b4729303f1e4945724759d6bbfdc75ee63c5f88915f3095979428aa8bc089116349f9ef222445aa89e79eafb113f0af522438c606e04fbf5222ae7bc39ef271ee7b152be39100f567945629c489116582d54d7bc7ae4e1bc05560b9a9ffcf48580c7e40e883c27c792136272c909e15ce5c98f9c90d317bb00d26f66a5bc1d8867e5859b87633c07441e24d535c732c68baf79f5c80dc15f074d1be9dac75a79e640da553dd6ea1342e707c4a3f2c2f812723381e891dcd708c76e922911816567a7b471d3c84c4f40008a142d9a5c41022b421c81058d24a4188a8111972d9c17d3135398b25825561f89d800838d348eacb490b4c184a64946043681b5d20a42bac0e67081c042e8c90e624071c5102d5df00d26ca132d5ae06afdc0d361acf8fc91280c149d1d8a1e2f20ad0e997e240ae3441825a8c581d230492811664a98294f5b3e10ea30503eecd610faf6359e7cf797cc4367aeb6da256b1e57d03cf31aa4baf685daa4eef54cb79957cec7cd6490ebd917f64cbf3dd3b9e9d7eba17e254ffb8a3a5153537140698d8e4e0de35e9d0a861297a5366ca058cd41d63e122da1f133a75bda810e4b612459e202871d209d83393e122d3db124057bb22414b4040589d292d2172bfe74df31df30a75fd88e49287f1d5352f2d6b17a46d66ca59e39e6dac70a623d73ebd9bc5f0fe65c10cc6f094564ecebc1b620d802ec875dff68a260eb5de3102941f1d4abd29434d4783cbbce5108ab538f41bab91f196a051418755f8ff5f6d07aad1ed6eaf6eba99f7fb3072ce757a525387aecf0f40852c7b2a3dd1ea7b3629c2f1760f8c112ee08435b68ece0c3edb93472f83022a1c145473977344ed823943bc82a4e7cb8bd0efa23111a471ff6903ffd87fcb9d3f58b627da76937296a05145c7936301a2ab8f2e309318747db489f989c342b5b711005153e50c1050e534811811c3c21a20b1664a1460dcca8016ba2db01a2d1e4ef47223486c8530538360ea694526a35ab59cd6a1ad53e8c4e6f3ce753f99af685dfce9cd8f40d007d5f225393f486baa4c60a8428e3861ba8a1a508044b8c71850ba6f0c24b521a37890d2a9938c00b60708221bc7039620d2762090ed0780575e14152979ac4c9259030cce3d1634e31ac226d1f89d04802a6a86da4cb1b4257d3d178d7d1784de7960d1c7a07cc193a7460c6b8a186c6d70e1030481fded43692ca38aa6b8091a206302f115425302f30543cfd48042606a81550f0656b9c895a01054434181ff726fbb356abd5a24147e8a59433aef8b0e60c291fdee8f890478f97446628f930bee295978d6777777f3529ab3e12f500899748380e20cb18effd889c5ede4fca9d29c37a837cbd56bfb74b6ebf5e6fe5247732b57328f4ccdcda2236f36889c836be5f056f8f97f361312cecd7ac5f00f57043161b48612568c91a402c68b243174244c99283242fa41215490533a85ecc239dea45cd0e101d2d7c747a486b77d8afbb23a82bc8d241286a17595e91b78fb69d68420c9104798a3c6e1ee5d1dd64bf6fea66ed898cda7ad3bc35acdd7c4a6926bf990ea6386de6e86c335ed9e263bf3ba6df609f3a78722a00fdf6f9e8bce6934b214504153c3c0ea365a8f44cf8643d0995a90100002000a315002028100c89842291581a478a661f14800c7ca246605219ca434992c3208a8220649031061860003006119a22022705a0ec8cde241c6b790c50f8c44c5841b4eaad3705610a1a1a2ece488319412844fe9f094efb1995e3c0bc6a59fb09681791beb99b92780f0fcbcaa054c12de18061bc327dba1b16caa413c5ba031a774ca7ef94914fa098ee1d3c06597ad80a04ad32b0731507750eb9cfb0d9d51e481237de921db0139d354007bb436fd47baf12bbeba9448f28ce901f35941caef7d4e51f9ad6ce83e326d6ae8995f50d817ad1d16445fb62098ee33c3de8f2de5b9c2337c33c02d61705d5e6916fc134595d7d362990c88257afd5bce11800e2ebb87109b7d3a6622dc305899f795270d16177ab2dec9faa55322e355afe17df9292cbb246ebc651d029ccfac0aeabe12cfb7988fed4592df06f848496a2076d4fdff769a2770482066bcd01ac78a73d1d935e75862c73e728458dd5d564a069db4c30b7e94c4067b70f603d3a685aa90773ed8a4cee9802b637b84c01dbcea98270445682eb3df2221b19da5bc3e7947f73ac871fb73df4aaac2d6a5f8dbd3159d1a1ca8d5c740a8d27e4c2394ac93e1394dd2113cfb203186257ce8b9981a240c604a6a389e447ba336dad35159aaa84708cb6dde2efee4e57d33b051f37c549285373d93cdde9fc8360fba7590d2ca4a60fc1eca13e1341ee28faf1eee8c072694b9d605da4bfdbec4fe0e6f62d39d9e598186709e746b06f0b0b3c68f509b523a05f641248cab61862b3a9d59b9d6111a578f8e56e793843ac6dde66943a6b7b95e9eeeeaa018c278bb75bb8a47f2004422988fca81fc7a498ec6d0a593372c5e03a8e4ddd84c084d1f790476b7369efddf75000ecc44154d797fd1da6d98b58bfddf7806476aa8089f57cf6d9c89d4015d5050d5f1744091cd09526051f1fd088bc6ea40dd0e59b1ef5f9147d0830d5cf77c65b32ccab2b5c7720c5ced1f96cbe42a1beb58af29e98fd8e7a622ea42f19d0fe5e6040ec502fd715c1d6747fb48c077d383422cedb219f0dd00fb0ab84b0540f5ca00fce40cff8d3d02e8aaa95c00b3744ed85f9a051427a63107d23d21aaf20ee0074b0c79b3ee8a5afe320f2d127eca0ba5d1f8887caeea349f9637d82c1d581bfd0faa05b6ce7271d753b75d39110142bb636d783727a632d93c317f55957819bbf14aaff7b21180054207dfe31508ce9137c2376e677efa1c627c0dc7fc155599a98294b03a940ad4674ae42c49a59f3b39f581e58acdaf4813b56f871df723f39ab9eb8cc4fa5035198e9035d7561553a9f1523b0e88cd08e09bad1d71c50a5cd9ea708e30be4e6fbdffa1d8cf38f6590e2ecd220b4a40d4f9d106e958f671af8a045e37f6057b2bc95fbea07451c1705e58394f746b19ff4561aee0532c5244e0aa64a73c18ed717b647b5e2eb202b75dad95a90e7b9fcbfa97b9d6984494181d3f2b821e1fc0aa1bc3ebaa62fd61d7bdabccfb1412e34ad683eb87abdf27075697392371dfcee331f0a56db80c7c406915afa2e6a83dbf01f263673e2c55abf68c585a5e207fdb640be7f2a11efefff49819a18036f5b12e6dcdc8fadf505b54991768df37399ab8d41894d75819282c65e5a33a1dd3b3e50d7f686c2e5c7db6d7f00fb0e4e511314a284635fba284d09755af4309c7380de5307fa95a1504c7907e60468f2e27f116132e77bc2cf519f9d3a28e66b4fb22602d6c690af0e8552cddb011101a1991602ced1ba6172cd0269c64b3f311229dd67e5975dc83418fd82efa32d1182d02810d1734357bf634cb5e7028891770daae777f960e140bb34f1e12a295acb599c481310484a5ea18d053c4d1ebe2e3ee469313f71fc5e053b8ed7e290c1ecd01648bfe66ed5e6ffbe327588ecef5acad4fba961b542ec773f1584661ea4cf5032a9881027fdc9f124ac8be15ea9c391ed69082c4adb59f56bd8334046aba254b6e0261b82e62ce872d8fab5c358e9f3a3ed3e04fe1c087fda7c731962fb0093401f1145a8daff8d4438a6f221cf8bd7992e1bc2a75ccc4ab2b8f0d8ad9436e36046c91b1550b4a9a4e985d552525e35ef729a3beae185b4ea3d155cbacd337cf27e573dd2d285707679dd6ad900c190a7df432ced6b7f2fb822a1201d25eb61b61c4cfa7f5e6921884af75ea3783c04be3432c81edebb4b7fcf6485be934a3dfc66e975841e8e519f96c1bc180cb7b86dfd39beb4bb904a67249a9fafd779badacb4e79fe9566ca234fcecd57bce5b224bec7914b973c084b244a83380cccb8489fc26002334e8038bf4bcbdabdb4a9f7be0fabab1e338a77b909e661db1df8132ce82eb1341274147dbca02e9a8a953c61f4d4591c509c50b5134016bd16b056af82b89373e732008d48c70f1984da8c547ef27113b34c0e3d23a701d42369469f11ffe30f9477bf3889e47090240bec012626722cb4b66205bfd078e5089f1e0dc25ab7a16bba7a83ac55aa8730cc2da64f210b489d3bbabab20000c8b2089dfa8200a66ce7fd0045d4bc8acbaf24091e452ce2f50e307e7ffb97e6d57ec14e079b020df8ce09956cdbf6566aa297a1c6c5b78e3901cd1a009f482b8b79f97292b06606ebb0d9736b094ee24fb36cec303936813ddfde052d533f80dfce81439cfb8682dd03776ea4a3a27cf548901689f1472d9e12ca4a3638c08139721a53793df2412580a32c672fd63dc42f67c169baf80afc41da627f2eef2a35611f8518c64ac1efe9c3b18d2194855d93e60ad2b1d8d382e5d0898b26f8f581a773c72fd2b601b38707366f7661e500327fe3b9c6d5e07ffed7925d5333cfa6404c91315fdf33cfe11ae5a3ca907a935b163c1f6ca36f82fbcd561a957d7055dcd63948fce88dfa18bb2cf5bb57b189e2694f8c725652a2a5c704c3aee6d0717e45366bd899fed4f2303c08673b2788289ce70011ce019acb673b72b8d5969d7d2d40f1dcc82e3f38feb18f4070f18fa715431dfed9008e36d063a7ef8c4e2ef6837539ccf4a618bbb16c2ed3c32cc4c0d54f088a1c9d6ae2d4a36126f9a0b0999af39936be68199ddbb77f011f5bd88e334321df5d31c2b3855ed088f5b80978ee8408118b01605197847d9b103ba0140e9aaf735adcddcf7a2c134e3da0f8e7dc2a9244434e342dac101478ec7c6c1acc6d7dc69e7e1e6dd24572df04d79603e7c647c6f0cf0f7a1150625b5ef67b3eb256831dac0a81a32e41f4069d5fc1cabbead8e2b2e3d8663055a5f38656311a68fb474fff742297e8bb1d45f1196b21fe5ba47a7a74d3a73b352bc5317746ee76fd63fe5bd90f9b12b7dc5527f300345d72f59eeacab9bf148967173e3ecebf15643ef6c0686921b0ac8117a7ba9ae0c17486ee6bb495cff120e51390c1914d5955f77e442fa870370b349180f533619f4d379b3c0d8092ece155e4f5a9df1bf24f89e9d8e8f8ed2c7c87c10e2ee01ffe75683068527caf26cc66716f971d3d42b723da4ccedc41ec1f621fefedc242ce8426ac08a219c220325a7c3edcbf773dfc7b97b0d9a7ee08f72a8981c26baa7337e18326e135186c3438dc68230dc3a16648e7a2b80468a6bf776be1c12585effbbdc70687eff31152a5494c665e71b204eb1df1c07cac6574580b506c2e27b4ee7dc98230a54e0b61fdc249a3057a6a11c536fef9169edba9589e112fb89f6118ddfad3661dd2af267559786622aaa4a2ac78a00ba07adcd869e68fe1b2bc2119c95b6f63e3efd316842e9c67b0cc8ba4a1cd54d5caf53266774415f74feda24dc4c2b289a5a21d6a16ede625b647969716806e3e8983bba148a73d8bb6bb5e59c7479689ff8c5693f951c7515cc7f5a8977768ed085327b07a34144a7a31bc8c93ab38708069a09e493e8e9554a53e826463027fd5dcb3ea2d7dc3ed1755b48fe45dbf809990699c9d87ef8203538ca1d9aab21facdd974694f5f67fb9e636851fb2cb7a3bbadd912d6bdeea5fb52c01c5b5236fcf1ec7f64c8ebe2da00e65295544cb27d616ef7580f4534e2d2a9dd45a76c6ee2e07b5717bfac0e06b74a0fe06de4b75f4f88a52489352be2307804c7f6a1d0e6cd566cdf7c03c1c6be47ed98e8daa060d96a2ecfd181ca2a75500194f75f46818142faa722d7d20e469f958e2c0944955fa1287c1afab09ba5aa77bd978e7e03fb6e80b75a1d21f4eab65608ffc718d5078f055f1e445b3a69a06bf830952cd5b8a1fa61b259d2b957f4a752bb49182e207b11c414c7952a33e0057e8a53ce0cd07ee39f39beeecc8b16f49895500460c19949db8d5e83833810caf16905e0cb78d4031f5ed5db807946ede93f4607406e9f82fccd0d34b79f810d046f75336d2ea8f3272d1df1c65fc9158f8813f42efd4ca6f39688255813a51d5396cf2e1c35d1ec3b21050a39756cc37bb97aea10633cd140aaa4f13624b5cf05061fad3474f7f5fd56331caca7a89a70af3410bae363488bdf5188e5b46aa990683fc58f75683c53409823edddcd5c65a9aa4a0e44c3d2b411e7769ddb33c3a2255e0be249192b7b0c371f3d7a44f13d5956d2716a63568bec6edde71dc03af8e979828923f9af199b931a3ba34e89c08b97111b2fe3aee9f45e4215824b007c50be2cfb3b45e246d5333f01d1ad619c737d8dc775d37d53b52ce3692163750453851ce31192dcf62e062ad91d8f33e6a2ab935229ab7187cee365acc8cfc10c1c005b355c74824e85486b47aade680acbb199ad2650bb0b590ecb8aea70e399b6d3d27682b5fb705a0a1bb25dc6780cb3525e511ad6a468eed96018706e4020002cdff9cd71f215031019493c6bc2f1e3ef1250cba3af86dffd4f6ed46297cb5c2aa7d84286ed55558380b0cf9f192cd525cf16cc116ee48d2ac040eb52dd6a5a7b8f7946a60c0b172927e5f77e486ef425f370980745df9fed93394db93940adb851292eabf3ff902728f0d0209720242ea30692d3d4c230da539b0100b0ebbaf5826e9f83e4737d6ac39f243e635a6f20c6d170af5ad85b83714e0dd392f4c75bc4a3878392016c96c0d0c02d241ad42a6a9d89b517e6a23f64a79d0d1a67c44bf56f3a06755a62ec6b409798c02b07ce2f6858079c130a77d068ab9781883238b9b5615e9d700db84069c4118b290a71556bdc5ebb32dc307279f5f414d719cff0b6b6c457e808e6e478989ac9f9754410cd5c663a7d42d3b1acee96e8fa94cac88bba168543cf8b54166f7f66882bd212a92088e67a10f4d9d00d97474d77522d203c48c3fb6999014171f3ab1f0d7255f19e02b2487a48b80e8b5392180c4430623e94aa779e076b47a7965370bf1aedd988810ef4f17b912420a991e88290861a1e500e862a8e928c03e926a5b90fbec5307408115ac7e5a0c19f1cc0a1b3ed65f875f3e26b94525b7be5af6941c01b8621310929f9462c9936615f2e69008e65578e5d2d26b0752d0eb2e4cdd195cb8891efb4b00bcbcf4b24b97a284058872831e5347b783bc550ce01e008c958b532e10e883c56e4e6b09ae337763e0405d3cd16c2d067d525f61eeb3e621f31508405109fc601c676f40de4507317ae2b680bd21d550eb4c87eefc057ec229a4a47a47455d7130ae1a20e154af27f5c42942419391ce8af4e7deb0b0a304aa3cae09a26e7bb776e6a15e37552aed94018aabb6d50716c06d6d508851badf66a37f4077c47ef49c8c870156c980135ce43399d5611e5f0b56fb295f8b7f6ee39904700d9acc83067b124c0643e15424b853babb1d0101bfd984d967a6e49cb77bff7fe7bfec83e8984e6fea190fc649d757201412a2a8b2075d8b3cd49332d06e4b9f22806ea01021aab8fe7ee7fec77825edd5b218fb0a3520d072c4987aef8b505003e358605d8f716811ea2c05127e686eb9a867cf22e81c3c58c404db30d35dbeff67669f2053d6d00ae9790bc10c5feb2e8d7974767bd7ba53b288ee5211a4cfbb5bf1a7c71d6cca52a66ce07e7abadb5cda90cfac274fa7cf958436142e9f6686378719501ab918f4ca6592f46693ec1c218947fa984ff9d67c9780d4de88d70ffee09c7ffc93e540a88f39684691806228086422397da820c8fc3c247569aad3a4f94c635833ec7c01c42a7683f025e3b4b92cfd5ae4cec9590c79a7cb84489ca856ecd05b03f2bc680160bf7dce3bc4d9414652e51f799ac2eabe14cd1dd5002fc8504f7d56a8ec0eaee112e08e5830a4914933fd5bcbb13b5c7f2149f04ae397501374d33b990dce7d7bf313f69eda31928e7b9281199db6a59ba89fd003cac5321914a78a94974b06870c7a15d48d98ca39322010738aad76151c582d43fece53b796a9a6ad151af016249502eb4c8b9a93ae9a7ed204825f43abe80349ba07f702d54b6e8393551931e837727ba55dd550adc4ba30017a12121f0ac559191bc8b294ed4e4a495ded8a9e2af4b43bb5b368c1a94ebf62b7fcd74d7b65822dd54843db5c46d1a9857337a83747c1ee8b1cc9dc1408e9b849d0a53d0868591185fb8fc970584f4c2aa0776af8de58db71404009ff641956a63e65e47616a1be90e1344de5018d5cf275dcd7874873efa63dbcbdfeb564dd2ce6c47e45c19139daad2c48401a77515afbca05d1ef5c60209346065ddcfdbfb2aaf9c59e6d24c803873c1d0fa99f12d1271faa3817a080880cbda4df98f70f223f61cef2b14d20fb89e8c231221c25ad536bd248f442b482a5092fff3a5cd29285c52eb6c099fb0035cd39dcdf1e813d07cead39ca34c669a738ceead4473f1b63aeb8d56308a86bc6eec6fbc04588b9c8d2036bec75f2b37919061e3b8b1140e5dcd95f51fb49f89d446020223ddd5439ebe95353504e5cd9b981ff1cecf54c604f83b0c00eb73c32d7027bf221011cba85cae512887be88b6a49dd08d5dd447880db3b3e6c67489b6c340e6d3402c53d8d79d4333d0c39951848b353982ad2cb83555409f0e6d546d67bc999a8784e2e53a4711bf2a61cef68709c3037213cbd946ac5ff8e30c248040eaec36a05b8515362f0d10d1e1ae65c306e54b39614dac524ba7a261dc051c2e644616cec3d317a14f44fc5debc0c55b4068204be8360c28b761d252a30e697d434adadcf3cfc8318a65267346af12b47ccf2a1ba87a6009e03b5bbdba88ef693007c53bf40eb0054775d084a0cddaa53b93802b12686dd2607f6b233d916253b6778180e3df1b79adbe32086d9f747ba602311deb795c7d41ba72bbfb6875a2d9ec27a9448dff8ae02012da625fe107e480d9aa8c43d49d07bc6782b473ecaa1aa47c724ddc622089db287a191c0a415edfb57bb9b6d7d076f9c1205e694e1da725af76399a2f298f76ce682cfd7a27cf33915764ef7e8d7b6f230a96b267e706fc38cec3e3e0e46230b378a76e6f6719192b5ef884a37ec00904039c6b319e697bede4103464ec479186589175b7e23a0063d08b4df667f92c52a26562e4f95081a75b67259204f9bc027b6e5f4192ee2d998be8c73835e6fba9dfaa32af56a53145f8ab22fb177aee1a0b6a04f861b94f4910cfedb9dd8582cdc62ff1e01a55b56ae193c7f171dc0ebed59d90096f0571331f96c2b08e717bc66f403aaa1372bf3e0832188b545653f56533c45440ada5becf764cceaa394cde4519a32aad37b2ad86f189762990283ca50d16b8f43db2c3ea3065945206d29662723bf5d8c76d7b4e423187403c7468518ab077f4fa783a5c559573a4143425d2a52c1373f2ac40a91a45173d5cc3152a79f023c6453d43cb008fe4802d8f10d8b134a4599c1bae653e7b56d0a1032b9a989bf9f00f7c6db5c03e9a08917d1ea2b6b8263a72a894709765fb80e30451770c4e70d5406f8a2843498a1c7d78a4943bfa982b52a816d0b6df354e3c4783e85487a3d2d48e2a1c0090ac427a075548ab5d35f7ac111f7e843c469f330cec08c7ec97d595cfe04b7ec9248a08c3f94a2dc10eaee5f0efa340f937731db311cb23fb8dd255e364c8e6eccf4505701855040eb02a57b2b649abf0fe2ba82ffdefaf6e5c2a6eab0227334639b385dcb3f0c569b140e400cb681dc8f8e25bcdd5a66719501514b40b99397b8e3259c62ba3531bf3b5a68989996102a95cf34bbd49497bfb38b5c5913c8e2e22942eaae8efeb4b8c3420cf3a7f98695037ccda047f9ed8c95b5ca22d583653417df08454963446af7e25e77013822ae2bd9e01404e91cacd42700bbdf463e8a83b1b7c22074f0494aa5ba8e068220c00a8f1aabb3d6310f40601348e3b7bf55b3485251b415239e4a8d179df2aba10bb63d523ebf94c06c74cd11b1ac79436293ba96430b8c87030a0419458bd92e167ce0fe64da5e3ff58a89c4d9b4e53e0c58146b496cc397a3766045baebb5a87a4dd81bce32c9c4f90a6eb2fe308565e79222e0444f024f725abad839e9eaeb3a521bffbb9fa77cb8a234d983a7761b9ce6c7ab3bbcfd45c14d798cdc09e52f82c1df9fe8e1809333fdeba94dc34aa97303f62748fdbb289fa4fb8eb3c340824181e693f5b6d6c9660e3bfe545f75c74c8cb90a0451e137d0309baaa9d7b38aa91c72784178368c5915f9d10cc404958765e73a41ae3af83e30de66c3ae75ba993cdc3c4f7ef64c413f88bf2610134f9f35ee622f5259763bb2adfef64dd4577433fb50aa7982935834814fcd0fc4536edffc838858b5679de39b46ef6d5279f7c68ccedad39a477295e7de4f298d5b9af02f7d3c1f44f6b97c46b79837ad68fdc1ab94f7756fcadb0ef3ce2ac2e71e077099e6d56199b7f9f0c047b593e21549604401a60f2f194cb9f235f01ace38f98a259fdac46fc60467c4583ae15fd2bc8f1424eff3b4cab8d159f6159bd3f8fd56488a6ef02fe980a5ddca2521bdf897236eaf9fb7933f8b23ba4dbd4f99a1f987d7c482c6197203bdc46164654f488aa1cc328ce3dcb8ff888523be51346cc743741a3dd6fac570bcbf330c115ef75655bbe0929d727fab4b3401b19529d56c98993c9f96a6bb4f5f6854023585f7066facb986f03a4ad57c6c52aa5a7ebda96cd020a569961ce9f6f7e9c180dc8a5fbea4a42007b2040007594748b8790c9e4461d6851212cb1235325712b58ba3a55505194172edb234947e2d28e04610eca0e0e8b943e266a40d5f1b68c38668285fbad6795182701866e031fa4f42a4dad6e27d578e9d2f8eddec1046c8d9e3082dd34a6ceee6dae4d02e63a501aee112258ee090d65eb134b9cd8c3e21d2c40ae2bad80ba38b8f04e0874abf3fb3e1ea36008ded77400d179044803caed1586e614dcbfc90dbc3881aa9940db892e7aed940d34ee1cffe1771840682eaecbaea44a327ceba69c22d45841b6bbeea754b8b3fa33e296ed9b700a8fe7095804e535c526fa7ba3d95d36c3c9ae37a6df2e4f6732e6838854c95665f8f6d7d0488840872e30d47e68b7e4c81edcc149058565b6e061eee9709b5242073b25e8a2094dca819fc99cc7fd6b3060386e0a0640b74260fb0399531481273d0e9db9e38d76d786273db0f04a7f33970bc3f0226050f5cfd121d6ee7611a05b63111b1296b0e687fa7c2902f4f34c486dd5f0a3b923c4051232778ee4feb125302abe1a916cd6e3af0e05582c754fd2f4f6f6516437a73c4a0219c23cf59cbf3b2936491d2db5b34ab152df9b6a15af56e5182de83cac98083f2438200ade1f1181ef72036b63d92e79e0697410eea5ee570cf198cfdc4a088c8cc3d6fd03ac0df221c09ed219e26a4f157d8dd17b5bc6a05b7c82392a08f46784161b6901b7ceca4ec3665d1d130b05d5f737626d6927a1c02d47cc6da1ad372b7d240a080fbe7300b78072875c28169871186dfcb3545953e6cdfdbc004ae8f32cfd1adaf1a4a414f16961d2fb65a3dfe14621bee4b154d181653b8c62963f058c73bdc153d90cedd88f5b17e404bffc05a7727d22eb60feb98d84776c8ec24826bc321d39e512e7999d8ed752e1e2fe01c0a2562699b23fd4f96fc3034d64904b6a53a32146b26b4347764a85818d212070a556ed211751ffcdbe804e6f4acbda4e39ad90267b7aa024fd063e171c34a48f295f1ab187badc518c78bdaf40480c369530116e8545f39d9b80694aabfc8802301abf51c7b0a7d59f302baf4c113dde895fc8339eaca7f16fa78485de9f2a250e00960c19cf416df700303e37539c6db9a1d82665366de508a8ced00993f9d36a5ceb86d413389a7ee0325268640ce3ef9fd5c0afda53336dae90425fba161ee180c0e868f71812a71a781d8c2268b738f28c9998eb81a793a96badc02a179e2e68c567c0bb891ea14ecdb44a1650ede90fc6d0837bb7e0292ed60166ccd0e6e811f152f1f587747ebc64c479e100a1028d8e33849fb390122087cfc41299d5460b9f8630041db4556c035ae8f184ad27a0a035a9af174f2d90986424421410b8f3448c1705b25c0010b7608f13be1947232245e3cf5ecaf3f7115e6e84a1d936384d32e715dc153e557c47b78abf0677fe4e8da4a0e6190875296a31a14b82afd19a9fca424e238a70743b49a1325181691082a44b92d6276b16346b22622f4470a724767c057cd4628c6cd499b4b2455f046cb4390a2b47e805bbe1437d48f532c2d1d22176e7a445847fb0c8c3680fa7d48d0d85e7c590ac10cb9e77e3bb3f6fe7f7fea78c6d9d5e8281e601910c658cd0fe8ba4f110c4a445b79a63af70ce7853cc902650976a5913450d1d3f08aa33686f85e1aa0a3a67774443d4dbc29939afe2198889d5b2c9d3056c19caeb70973f9b6d81a493e7bfe5a2a93cbaef5a815c952e35c4e7b4d1da7dbcf1e0d27bb49ae2bdd30237f9672e6dc5ca103c06a2742934a9dde696b2f9883811428e00c88b0927fc7a6ebbc694102e10ce80cab3acd2af4e7e26bde8b1885d09e54a2f5f079f4e31aced380fbb415d6d01caf2d9b66e9f7dfe012d8a696e8e660c007e2663ce83d2541ff42c18e43eaa3d1220ec65b444b28918a471c6cce447234182769f4aa53c8d97da14afe8b80a58883a9f2d8e01c645b523bc4c16e4216ad002cca00dffe011e3d184e5b6543c7b8b5333dee69366162e9c4426d8ed86ba5d3a58c305a6c0c9697abebfc2a6b534791332fa3a811031b890623db793ace2948ebb72ba75d344b4cab4ba3cd3105bba618186e02f4d3b71f7fde7986e33becf32909990a66eee53b68ce1a558042c300b31200c7c0a78211c347b016990a26c42c542a4e30584dfb60ff4831a22c7e78f304099f0a76286f06f92156ac513eba0ca9d0cdf0a960b370ae0f607ad9190e6636bb48ab1c3b793cf6caf4f7a9601bca7e7bdbce836f2546c91c53c188f92dec9a2622ed2b1852f29220054c20e44c8960bee5abbeef192cd0b39312f1b08774efa5e08dfc0fc1160067ae4da4b8d8d64176d3a9c7cff9a46e5c153515eac0867f1c7d84557f292ce26260cc41373b3d9c777e7d13323981a589039b83f71ca422200f338131b7de9659acaf2a1f6f34abd2f0c6dae56ac2ddcc33004c8eecda33a275497e912c5cb6bddf627cc0ccdda0fe99a12fd2b85eec998ebc06ae64ccc477bdaee3866dbf5a09073d2cc77d7fef4eda2b8d890e0930c5057136887d811422cc6aa02fafc597941c69b4f68d8e35a6fca2f198c0b49cba526cc02213fbbbfc95406390e2fd9b439b4a89d2abd085ade38a05c9fd85f805407d8361b30b339ea962dfc1b2e56e541c468e62712466532d6b58dbd74e56ccd511061461de5b5465a3d7b573af108191230cc13b7079ad38a0e38db201cad4e72f38d7913aa84a5223e18dfff71f0f0d8f0fa0ee06946404a7e9587ce6acd0df3141dcfe06e5d70962cb511b2342fe1f1b40aa3cf13de5d206dc4fa574ba03f15032d3f8c55e89da84a02f1de217fbbae9c731635152e55f733a4212f30d4f1c1943e16eb953eb47e6147faa8f21224570ceeb0716602a33c34e8e0e2c2dff919c2166ea1e2dcc041fd0a65605e2fbabb07cb69960296383fe9fd8a52e324b2808b015556a5e43deb6b7377d97ae76eead77b46d9afe8b3945c2476f9f4a17b571366c018389362d0334532efc75961cda6042c054197b1d7a9f4dcf74d9f6e21e3eddefd5d98698354032716630cff7f54f31653568d4944a9d7ee69392c2368567824c94b67dd3b4effe3f155ae1aa9e6ae0bf560ab89375b21306821b88a185fedad8e8e687b5333b61ed0fb396f185923cc22e32e4eda2ae9059bb20b309e1c554610f26268b7d4092731f08c57ce444ee1d0cb09c8f76e9511bd8dafa4cfc93ffff546892f5ffe43cb755206afcc5509f64aab145505dfa927b1f6af0ff7dade5e02ef05c7c447afbac839ad197decf71edb779694b01dacd632143b0d14e2ea2b248cb9fcb5c2c2bdc460e705e169bb539b3e79cd13fa7369b730ffc2013462344e0815afa00cd1244a6944a1cf482cf057bd44fd7c237a3cfe743c7a1060f9899099a4fe0b5b4c16a61fd134ae9e0447c567690f5c9dfbad2b30ed93c0c6acf3f073e82b3d7c41a5ffc04fff895b8c0002de611257ce449f6a468f89f052aa42b92add2c5585277580615ae66d90c6b641dd23ddd8514fe0a599e37599ce654788e6d367ebae7745793b67ef2aaccccdbb9226e7cf9da0eab1c714d1d0395701b694fb821c0f6dc1fc71321a5cbca10d1fd4c6728000d9748ca382dba9f3b31a93b7d98c4498b3ff16dfb6a09960763eec3dc0e390549e908e137d8b7eca5e37426590d519e7173eb60e4ee58a2780be6a1ea263cf9285debb70e7f347ea43ddf2c874f404c168797a5ce987b9532a971434bdf2597e3257d8b80e7be61341bfc57d28a13951896737d2caf7fcf9a50e6609d6e77c27089728e5e15e975115b5affe5e49a26e37a824a66eb0cdc567d19703dbd3b39f4aa8555ed040571b5f6753fbb0d1b60413bd95f93d39630b576710fc870e11f2dbc8a81ddb69afeeb3127aa09ca5e95a297f9ab569a71c94c4f949bbaa67cf37e91836b59dd0ca338cae32abe69420118492d68bff18843733e3ed5e49d8d38181c356a26993cbcdde85d8ef0139b36dc38b990b92bd773a9ea0d28a2651652fde5a3a3a4b8b6510c481672ba98ad1940ea96a7c5bb14ab571a304b450a762577ae24478068bd662e1e897198414347d2cbb7a609bb346481d9760663b420d0486dcfe648f354c1286531b6b4c14955dc9b561ed7d44f831368b990da3a36f85f276a8ecc674eb16da25059268b49eac02b733d498d974d958f2c8a5c59d4c5fc3b154145d66319e3f95ae5645ef3b98f6d8f0a21a581d785d78d9fef6dc95720226d82d1acecf76d28c7962268b80c2727ff3235f08ad438b80db9dab20f899d1f65391ee53ef13bbc4f6fc0af5a6717a420615ed7e0bd054bb0fef5888e01819a0b0fcc788077fe374519026d829e043f5ab34f9334f6195e4c4091ac93e0479935b0241d4c298d0607dc1e64535b88835095bddb1ae4260c05bdbfd9431c46f34e3e2634fe874a5cc01e706c345e1cc6bd6b6c50347eebd3e81b25bc28909e8120cc1605dfb7bc7aa9d9b77271f8f8a4137cbfd1ef650f7f911c5fb562c83dacb875172c21e959c344107d936a8c29aa6ed92bef40a276386b57f1625227dfb0ebcae6db8af4a4902b467b675b4dfc238581b2fdf10861d7f0af7c2332a608b615fa0c31d895b8ba284afde38c408a2f8888c8dacea664ef578739a0f54628b0eb4d30f86b1553bbb8d9dd01bbd22829a8ac1e6b07aab95c36cb8ab45aa91592bc949f49fbdc817e909d92c369014f194d6850161b448e6805126a5a903407eb30af90d0658c4e6143e5e06b6380d8423dac7512b1493527834c0ff20d551bf43e3bb095813c15251cd82a8b3ddf23d9f773eb36035bd6f1326d5328f61d12aaa58c1c9277a6002861521e7175e01f91b7a32b83e411bcd298fc808a518a524a29ea3b23473064126e4ac3711edbd8ca635c2b282adb8f225463545093c489a5f1fab063cd954d7225ca30949d50c0cb91e04ae01d226df6658b1c76c2fe5878eada81095c6b314e1e4f7b5b4c0214907027ffc9dad11416cb52dc3716d84d49e11b94829530918f29e2013dfef313d8ab1ed134003d91f0db97265f75e17f2a8213f6b84c5e61ac1000f4500cfd0e6a51d5e68870ef4542efb62ac8868fe626464907e80eb32dbeea40e2fbecc6a564805197464b49c397be60944c4da403cb36de7d2f81f9c6c7422414cc341b56450b1ed46ffff332ce6c479729161987763f8420adf24249887a579c92cbdee89a617e1f87d9762487006cbf4b9c68145577179b1064c5210409942306557611bd8ed45a8838d76ec09c0bd721ed43ff2f7ab8c1d943536adca08c821f4e9d09bcd01a7ef914a45a040e68db27ecd051c4ae66940a57424e017e3da471a04c9964867d6b8f5e7afeff947a4c24f1336e2ec4866ecf59230e25a7fe874cffd118681ced38c329d7fe386f3b6879b43f4802fdf999025cb4b2da3d48f8dcd658623821227e138af5dd973a7af32771f260faacc9327a0e1b1bfee7e492e91bbafe949610d09999c19179552e26c0480f2a42b90418630a40533495b16ab13426be50d5fa96556b7d6302ec0b36f07452a1c05cc1fba277549029ca6ddcee331133ef9f555385d9d8d56db481dbbafc35b862c3cb16d6d8a6e8b7d471d4ae447234753fa8269f8a664e8fe1986b62af8bab3ce58bef06d6a2fc0c22f994af789c08a48e0371c5d3cbe228bed29481082e1f2c33d327f0e7d154f619cc23e763abe283631798d73d3920659249997537b4bc613f6f2beb14abadec685e7e5aaad8dfea60254a4bae785e65b842b34f51dc6b9cdf46bd5faea309e3aa300a9d5ee827b1938dc53a17fb1314fc16a36ad66c98d8dd2190ac040c679700cec7c06d592b092613b299f2d5b6f6013c68ecc5dfc1f0a1a32c0c9073167d1035648832cd31f091a11ce93c7525f54a3cc940a7687acfd65dad3d2022d964bbc59e26ff14e89a8777828643bab93969a9da3c45eeed8c42e6794a4c2b006add507dab8024636b499aa36a61ea11257600256d301c7daa13582e7af49b3179c75a8bd190b0d2513fa3dcd84b49214fd9a3c11ebcf3e2e446319900ba081b6f554a9182247719f16152eba4008122b4d242efc951a08bb1a7c64accf4e47629473602835e91188d90441c5d58456170c2a1320566fad684d60faccb06920b13ee37cae14b042200c01604e217e17d166daf38da02e6aa1d4e489e014e832d113f433cd17c36fd17f107c11294cb731262b27cd5739556e1c601ff4e3460f17b9e2c5d96b7f3ef907c717fe3fea50e2c4607cf6071dc455d339aae07147a909ee2ab65831e82545fea8e5430109730ecaaaeed4218b9b63fde8449dabed02fc9ad553413ad600ce751668ed8896e0708624298289f6bbe7b3481bd0fa8cf2adea7871956a68cca400d7f21b905316e49760b4ff79157369bce27ed350cdb8ca6f3ea47d36b816cdf0eeb6499d0fdc1231beb12204416d194ec2ceebf127ed08492ac22bceb1b34659bb2bb628a5de6ec99549314d284fa6bcfc912a6c588e7cea4009e0659f9db71c099eafd39cec18618c6bdfbeb2d36ace7884895aa13fc3ba47047e7e7737affebbeac571ce23bcc14b4f9eda79083bb895a37c7e0a4d282b8feb90b303ed8e9f5b4e1a73140430068ae2c2c5f1a52c5b050d5181fa4cda319a8b16b42dc9b483d3a79a3ffef4f3f629b3af3fb5223f4029d7da01594c1310a3637819b0202427b0b9177d949be652ad78339da0ef04af676ecd00ce21258f8b7d069e7b797913d266b5801e6ad58bba3248c06c683bf4942af2b2f0fb01825dd4ee0b1909965e21b690098e6c51b81f8b882efa62529087328f53f9d8bca1f75a853c0ea1fe993021998539ff3ca338577edf3f4909ac0dce9cf49eea9e6e0c57c1ac007eec935cc54a99842d6592a482fbed9c624d9946b8b13d213712122fdf60fbd7a10c26afac71eea29aa49cdf5a82710ccc6d9289efdba87fb4baca7f7e1407072395b3d7d28573aa6498c1627ba77bbf2632753c716912520856dc931a7e00ec10ddc86ff2dde7027903e1ee331f6c902e09abefc7ffc256c6f7aa9f7be93e10bc99a8af1c349721dffd1e5c4532ff500619b0d24b17523fde6acd9001de1045213756db8304a615390c2568fba56c934a13178afcc657dc34201fd0fb4a0042d28410bea032d2148e565fdfc68480180492027d062f3d788ccdda327612f8859e52692ce19c7cd299161a5a3ef29ba889e2b240357b212f02bb5197a752ed1cfa7ccbd079889b6a25b8674fe0c6fa1f4d02fddec3ae5ae913ac7086ebd49adb5abbae9b171f04c89e7a9f776b60f098a4416e3f373955572177f2eb96bc8958fde87c174409c31544d94bb0c6421b908e8c98251331d8467275df721224c9b9f586feb7bc8e81273d3a12e26ee6f160ac3046c5ea123b64bd7768b11889c59810058c31e20ab7283dccf7d97ef2103a9743ae48a037ac459432624a4cf1bb320a141fa42b363ad726ea6029ea4bc5144dbff7ca34bc0172a0a7a74586d71f988347ada0001b8bd3e3d23bb3fb463af8f5f42bab8f7889d5bc33d284575fc933613e655b674f802bd3d70f536810a1dbedb94f9aaab2b56994c68b29e28676aa8b1bf4b10c6915d6887dc34dfda3cf143514b0336b454038bbb1dd1d8ca30125a20af63c424f7662b2691119591b3bfc0bb7645b92dee2077787c3310988d2b5b3a138d3d43bc6dba17781e3afe76f3ba92d37dc3058ef330c8d542b2bccd319fe197ac796babec64466dd33ca31cc0623be4441f406f4a6cc45252beff274aaf13353f9a530580ac83a1831f81cf0da3305d2211e6b995bbaba15667433452675d5e8d910a3e26dfad26b4ab4047c36a60eb12b5adfe88a462c2c0d7189173251f58f31beacb8a9525e7499014d7f49b6cd1390468c520f7a8cfb2d173205eb8313ead4808fa5046e6cd3458cb54a76194654c11e1d189ef7772a577ceae735d8db009169f0bc4cffd730604e99f145a344eeb4a33de6078923be8de7ede33eb4f917393e61f961e99ac9f07eca27643c2da58ed7d3e0a1525bcf236fe89607a4116f668519479a4e64afba14ab0f86ed1aba842657b28f5b367a3aea376f2ed6632827232e230ba39d10f081f7fa347e62908e30a24882690077c444d3b6b0c0fe744e1af71962d4118372235349b59804c24a32475d674de8b333887764c28c09e6d8acec8be6fc3c1cbbcb836c4a8d5b15962cde5c76551241758e07d13d41b475b231839550538367454bce151884297f826aafadf93a1d3bb3121ff743e0f41311361eb1c61e78ffe3f1ce09c16e0d17babb169c5c9936e105257c24d79e2b11fcc72d0a0f4b9ed40ca949da940eb7f877ee68ad4d40dd2fa432690c7072027ba0b625c8c6cedd75cc71578198a2f9bcd171241749adef9f69f82326988d18459a309130c2e438d9cf47d97b26023d49effced951ab869fd10e651c7e68213d7d213a3a1002643ff350be62e416947ebbbb3c7f29e2635724db91cae21d46baa1f295b6e955d0f92b2fcc990975233868ae42515daed6153d70f9b96d9119d511c304e3174d3e14f93291654878d66819dda7355201a68cde8bfded113b7719cd62aefbdd5093f7d56b0bffb1b714bf5640b313ee3868ddffedc9675ad7d11751d81f27d1f94ae277213afa47e5ac74be78e546a972915358ec4f1cabc46134132340cea82337789cbd4e9384184737b24c88a40c9f9b7165ba8742c70a5087a8c1315c403f8c8ee13b6add89c354bf6638bd1eacec2d43121bf7e641a4752b9a2939990c9ccd4773029386ef99abad1773f91bffefda7a3947e51084a3c6ddc4e0a2c2a6b83b8abd048b5d80290b23bb53bf20587e4a8ed9944a6d167a6698e65a58711447628f2ba2f65d4c0cc17965b79bf35ab7322666d24e88ae97d168555a1227130b403a67741ec151bf1f7f2d1aac3a805a6147df1990c48b87b1ff9f0256f43832012ad4d601c0b529c6660993f30e2a953caf260b07ba38cddc7fc96ca42acc27c1b3bb0f198e9755eb5c9f7f4483694c21688b6fe99e8d8c5352ef0e823a9e77b1d73b252a4e3819c0885eb3335ecaa21955862ede591a1503b2c87e7748624d342000296148374d4c7fb5ddbacf5a3ae5385837781f457cbf69d55247ba820c486983722bfeada0feffd769b592c0f803c59a5cd47c6c127d4a0021a16d9acf07cc06c0c98fb7e3ec6c63fe9c0a38e59e060c0dd65bca3f1264a7fb53b06f08ebc9a7c488565242664f283503e43b85ce49fa0518f0a1105a966651dff5b7597e99780683a8b92e3798a3cd8cddb5eb616368e16865a1d7f57b689419a1527fe5f17309ca6d45c7a1956de95c4a9a833f72c8c21fe9061caf3521c693ef98a6cf9751c0a03f509e5c0eb44f3901abcc84cd4ebd668a3e4521e4261b36e734e21c3e5863b8a2c5fe4124036c9cfb1262b50e9f4079e6dedf8cca1be9b7ad9d1dcd9ca95d222ea6d258cc7b80b2c3758de8d12ffd54493f074a3007faf8dd6c60ff2004c3712d8c75bd3855813bf6f3849bdf132ea2de9f2b1b051b2d8889d6297ac9354b6abf5b7b5d04a63299ad89c28f4dceef08e40ea7cec9c10fe662f908e5d4ce0c6cd1fb10ef05221f3352f571da63d89e6e379f7d271d8ea7a7fa2f004040c8359cc0ba3c339f098aafad766bb2035dfe1b93167f896e2dec74298fadd8a45855d8a571695af3c266844b94924812d49a747f28c9ba86594034f18a637aabe23450ef912444a0f36a02563990fd00be1fe0b000be7cc08be916e3e871840fbe53eb7ddf71e680eefbf8095ee8130180ac09bd6038160f86ca0242bf5dc5e47ffd417572ef3e9dda9a4b2cf653405302895878b50711932afdb3e103e84f3c47c5dc8803f9123e3cd464b99349e4b4183b8155eb77e897f50999e14a86ae6bd97157495e87d0f5b334f3cd080d78b44d1be7e2c34c5ea5f1622dbc89b85949ca2a6320cfc48b805ad370190774307e4cab73c7d48e40fa3f79ad63e48e92d46a2b48eb7c0064e7129ce8e653b2001f1b3dc10ce93c128481244e639a516fd50b9d6acbcb9d8e09d57c05be49f7a4af74cacf95a5b55afbcea5a45c96166e544003958c9cf3d2ea1caadeb12b5f58bb61f637ad03b03d6ec5c6b1b533cdf90bc822938e2c53af477bd7389319af0c6a71a431e63db898618f2b367b81e664066637da08e25d92cd59f8d0b102aadd0e7f3a06c8c55b4a0289c5e889710cd20a06bce671c83d52fb34f061940fa723789361b0907296a0c6e6e41eb8e317c18b0c12920f2b19f4e9fdb96fd43f48fc616e8c9e04a48c65a52a0d90c30c346d060b7b13a49d1ef08df3cd7683066a4c7e63b73db7e68163b36849058e1f8aa5439da6ac95ecfb5d12219b3d8fd13389180d262db109ba8c6903365720546d7073c0b58d45f42ea46c7c7551c02ec8f83e4aef9297d2d75273bc44bd4bfe58b8d624e2f60aa9f858e55128ec32bdca46a58d3e1302b907919ad24a7bd95eb2e46abf5de67ddf5872c3b62da73d2f5a9f18b4ff629851ec89e4f4639d5ca81ec7e36328e9c32ce82e5fa1b14f4ec823e52e9d8b93ce1474b882784fb0f05264928f9962c417939c2c1f1ce5c6d14d7eff29e622dd30c9cbd81423d9fd71d75a308d70ac037294509c6250eb8b232693ab5bc681ac51a267d980dd0fbbe3201ff819a80d9cf228b090d9eb758ae9bd75a65497d615c2a918b50afc6cb74831ba3cce364e5ea385db44e8bc5049cf2d17e76f7db33d31f3d2a1f5baea7ed9ceb7cecb0c4d13ac3694bf0c2369b6751f2828b612a524ff60bcb59aabc2ad67c6d04615555a85a991fb9aac3fa97edc1019fee2d29bd52346d2aa362f2c9a745ccb5a5f1d505ba6d4df2016fb97cfc23e072c2e975eb21e7da21b7aadd0f1d21cba514a78a3e43e2707de413463f8a15b5f71eb912949b1c62addbbe5d1473e5810c5ac674ce44a76b3a333ba9ee81c3af38e8a24507396deab7d21737679814ed9dfdd1960e5de4429d713da7a27302ce115a5dcd1aabdb55fc1815fbb5821529a032c70a8fc8023f838a1e3aff622db2c083b222bc37698e86f87412d0114d8c065db481a0573f2f13439c265ad7f310d5ee9d03b464204c896445e95f4e62a7d80d13c54f78d60fa053da14486eca06aa90d0c54bae59d0cce3d4735fa6188a866c9a930849abc2828259e26d64a6653dce825603844c298b8791ec13249e2c2a3d09f7e3031067a23bc9e9a458026a34e01c3493240853f71f122ad027c8099717d22899a5a8b031b1fe8891e794c7e3f91d54f7b7ec01bbc82b0ab5ebb512852ce8822e619d10322f989a06b20ef5b25e6adc7e5901932762441da2768eef998ab60e9203a71b292c89deeb124595198553de955c16fe7a0ab9e00ff3baa27bd3cde20999ce2b6cb8ae2838e02c9e1b08bca0f6114e8310881d3a050ada98cab51537b425dadd6b738947e0948de878582b72410bcd5f98990c10c8ae81c20bd3285bd297320c3910d8a30cbb6a6be9f0fe7044e5cfd958e31f859a45056314fe91d92d6d0ac5bfe12f2b2914b451969861fa91d9c468109159300ec647c3993be426f367be85ee00febb7494a2c4668fc74448d756d7655b1176812ea90f202abaa3d6c9167afa7438e8d4cd801bd987b4d82de5b732b7ad1024a3995a688969639ab9bdb976ab528e9d6df561be56e5beefd2a20a366d0a56bd34dde4e0c5c5d901ac71f51fb4486dc0712f2e3c389c426d68926443e820537263294555524cdf2a0efed51c481c1d2a0af8e9fa40e117f2df53f7a4d6afc35f9895b3599068e91fdeaa343a9a16b206e181e627928e52ed3e6c47af695fb34d819cd92351d8712c36fc95f53b351d9240d7fe7ed1423f1df49e78ea124595e25ac54688aac59d580ef5abe4b6e95aca5a535db41ba275e87deb94247b489c1124b403e048f711e073aa97da7b899b77a72ecab0d161a270b5ddc9916facd07b2a35c2e10b21a2635bfbe1d305bebb1c3af35bab4e7da92c8f704b1456c0f575608b26157647d928a2431a82ab967f6beb3476204d48a0a43e821d80aa388856a7432e056401653e1444168196145c7ad2fbac45650b87d8f8d9cde771e3a60d2cfcb3677577c1eef29551acca810f2eb72c6bbec92cdcac10fbe5b7db5c059849f93796acb26fda9894c1db49b20a6678aeda50816f02544b961cb5ef98344f19ca7defd80df16d86b698b3b29690bddd1ae702169f038ee081f92fddd181afd3c23ea7e08790e149d960af2c2618be81a26afe740a65087dbff98e257510f4ec52aefba801fd84c1b30e4068c7d33d37e7477420eb1eacc9773736e1be8c78f31b31e5c0416f91113e828fe6e13509c76ce6299b9ee549435ef9cc63233dd993863d23b6790cf37342c41a8e82fa84e54bd954b045ed799a17075add038f31109f7eab7b7e28a7d1d8c9479bd454d8793c8dfdb39f257c11bf3b51596785cad37efe5843bb64e98bdb51bbc407c7a37c75856ce1f774ae80edf93e20a461deb5d91dc506b1beea699b53a93169b8a284f2dae5db80796fd240abfd553a3c0f6cdd0c22c382838755fb1ac750ee707fe15cbdd6174fbae9358b61bf54c03fd2295dc520e842ce80a758ce9d8b771d8132e56c9e45736cb71400b04101211e3722db3b292a9ba04334b05724396c34073d596c8ca362185a4200580d172eb801a77061f0c4acd8d36a84d06174d20149e41a4468e63756d195162612dc1faef6269aa662fa39350173bf8931d7862745829112f2543b2a1c5b7fb66a698790af096865e3faa2216c1609feb1b9564adce1a57a4773bc9a7430fb1cea2265248dd2f6f7e290c2773a1c78f801697407090bbfca89b410cfeec04df59c04d36a9cf745cc1151bd342290b11c3c8a43e61015ce76a4c94455f14ba65d4b19a7a19c98803acbec29fcb39db17cbdef45acd0c2dbfc4a4acb531837fe56c8764cc68b64afb520f427b5f274161fc23c68cf68fbb1eb7463066704448eacb07fef8836863de3b44fb3905348cff733574219ed88b0df68754c0846024562f1d3b9c59932b0f3b58708f4d7d43f415310b135db155d757c918049e71bc455bba312df3f0ca18313211c41b09587010f52ce22b331d9d3ec2c4c2bcdac65416a3d6fb0943c11aeed4c367564f9f1ce78e37ff4216114af1676c8c4409435f0943c53b1328796d691ec2c596176ee101afb3679902ad031444c016f67e36180e14b09f16e22f1a7c6b89ea6915dc3417dfdf4c4ed6481eb09bb8dbbc89dbdca49df45af1cf3a38d13a11bcbe2020366abbdfb0b918886a9836cca851f53f5e9a0b30b429196024e7549542bdc485a3c1924c2e5b53a6f5505ae188b628fb1cf012fc4fb3699239162ab2c8e064b4ce388960e518d95ed69550736fb3c367955b09ee336c705bae6e4a9a666a9a31c967910252c5f1c2ca04d56083cc5ce84e381c2be64aaf1029457a25f7da140880d4adfbc73e01f314ef65b499c69258245b8a346bd30b42024b204ae95b2db492430b7a78bcdd1b42828908c5a4fda0c7c4990dbfbfb4f4952df544cde55c619cc95884201ae422a1b529bb380984b714d67028ea59a00b65867e2544a995a166508581b487e5e5ab1224e6711136457525dcec8aa00394466ad1b082cd2b6d2cce0fa6acc6431aabf85abee0a3ee393fe0def6121ff5bea7936132fc136b69ce1b31a15badd3cf0221707d0d682e4b5a5d78f566f70b64bcc483846befbdc6d49b1bf4671ea0d2d2f07c92e212144eb3c123d7fb2d748a0487119d004b706fde23575c2b2dc40efa587569a1cc4b467b81e271cb05c5bf21fb9144066c0b938ef6f3090cfc20b7068f3075464dbd1112a93d160dc427b67808f90cc71bdd0047c26ce682cd50fd82cf9436f8c128363acb844714977db866c62078c845d96c6f6cb6e7899f908eab42bb9f2b83f96d7fb7555796f275ad2ecaa5c17e2861783a82211bb74fd571e2306cd688378f7ecf15ba5497d95fe5e187a3ad7ba9f3a314b5f54676ae58c71133e142614cb8147c7fd79383e240ea9838202459d56864ebc55e175b8e28be473c3d48df5b26f40ab9cfb50c20bdb642c035c8f34460f762f9e6b5bd25a45126c3f9dbf8b228ff4ec0f950558cb04783e1cb864e891c0fe418af5782a3496f44f83ecfad2856f086a010867dd56eeb0e02c9ba5ed60d5ae865ac50a23e78c51c216d7f93a43c415e94423110ac85b2f4071669d3593fc78601c780fe6256118f3e49b8ccfcf45da9a7172c4008c2aae4550281a9e7379f6c494fc6211cc7d246dc944343956141f392bda776d41c060498f9e957c23b521c9542133107203906a08bc51039ff5c108788240b89dc728a6b01d37108711af80f19536a33dc43e756600120d8f914ce43aaffe5d02af59f7b14eae569680d01f6d3659f612ea68474254d988fac39497aedf3299fbf3479c7343071b3d28774ba5f9d2816a35fca22e5821159e7f77dd019906fde22bd6412f4d4a080ff82c291574afd3113ce05c5022f4a5749e07c951f111230c0f03a74fd14a27c65cb7b078c3ef660a197489880f600144a0e62926c343150582332144905cf82086cd8926a07d8adc0eaea8001a3e536262ce8b78b69fdd9167be25093d3dc56d71ef6123b60cc2c5915cbdf7d463b8a665d047ea108bbe42a9934436d93473aea837cba034998e655e429083f8e4379150dde6216208e6adb12590f5606d041d3aac0f1eda1249f5d107ec5e04b753aaad980b2c9e26f99bee2921d701a165cc51c86ce1c4a5db1922643740b785708e10dd2fb9d646c18aaed4085a683816ac1e0b4da1a7b97c7d52761295c30a83acd0916d979d2298750f60a24f8e9a261109a3af7955f93886d03c45e29cf2bc8da40a69639ca7600391348da6473d4cb7718ea923ce1b360f28e788feea1a5f1630d0ac681bb7488348ec4433f28bd466242f89d88799d0c39b0a5c54022a77580c1b5e8509b63bbaae9a776c398385b0ead6f48baefc104fc2717c0ff501c21821fab1796d7a4b4426d1974d9582b5a86818fbccc6c5890d4a194c7f6f028448009469138d7fcaa2d3bd2d40762b62a8d6a537cc4ac516fc2ad34f6c8045f5b4139dc8b9c0963b24d097b3f4382712d5e4c57e2127f0b751db95cbd4e1830c5c055ac88f53dd5d4e4119da6979a1f421019643b5820e78df444ea3a475e87112696abedc3b5d63cfdf537b412404730a9a6ac9e7512ad6df0bd48f574fd167c1a7edcabd0d30b8103cbb9a6b9cc450d048b264ddc715447d6c487413226c2567f0834f24720444b7a3cf64247766139d0fbcaf22bdc8e700c1250bc71779e619f6eb54a2b34646559cf5fae9774acbb80f9a27844d809e14edddd8b525c549b732f55bd28e8592b681601171d5ddcaba6bc509b90b2df403bf2128acd4460883e08e4a47837f3b158154971aee4bb8a44f1195b40a242b402c19c9e5914ba2b358d9e8403807edc491103c5ccc45d64cc6661bcaa660d87a06676cfa1fc59ab15405c969daa720b65093a3fa2fa1840e4be9e5ce822228a410c11611d71d0aed9e60187ae50815722c2d89ecead1271798a7e264ca7d710440428c32c7b4168a0a47a870faef4f3af0015016dfb41269824541f0f4c986cb8ea395aafafadb062efc013277ae29b1babab567e954df54ca3bc3c531a25b68bc4f6e28e1875a755100a3d1e284812ed13324858b0ff55c0c4193d43ebe45f23f5104d795285ab1f57ae88a7404638df871b0802f78b18e13221c090a127b59123776e56220858563e8ec0571c4a882a52204581e9a4e111974c78a017117a8c60acde78d551d7fa87810204b64ce122a101a038d25f1d4031e28a087451603e02fdc9cd9a673091c8dbd26ce1ee987c717efa8433d033f3ec1872e8c83a7702570891f908efe529e36e608c159c30bbd441549eb219c090f7546cfbb5879c374a25b5e33ea844935072818cee06f7e6ff54b2090d1d39429438415ed4cadd08d4cc17576e28a0a2736db208690c22f8a9a7ba6a02dca7b700dab465479015e0304ddfa2486a73a4191ead6690ca0f34edd94f0374c8d237394a0dfd4bc940e8e3cf930a0d3b20a6500cc97ba0fec6220c8f26b2cc7494f16d227eb6f70cd0b00983be4e9373051b52d5bf6f3d913385eac52603df51e6434628e81149cb47665fcadc1c2c68c80e5b9953a769179defcb3b5d7891c47a059a798594a944c33930fdd265495c0a66482b629c9001d1da52e4a7937bd77202ca53363969eb3c7b708ae18db02ad0936faaabdedc59df6e44489862b9671ee9913d703a9a432a0b654213ee67a2398fb152fe2e956d5d4411222284dd8dab9527f04e20a5a11c6c7348ee8d9669b05742f48c9e3ef9a8c0e3e1fc997fbfe6a5a8f2fd1ec90b8cabe140c92ab9c9d68c285d7358fb648bb9a056f3f5a5a39566ac4d876b16b605838205548035c789067f9dfb9eea8fb3d011cfca86898e60afb80cd1252f095ebec1a5f69fd89f5157aa18211302e77e7bea3aef9332a952dc3b89fd45e3eadbbf5b62c933960633f7bab0c8693b80e34cefb37dbfa67d7b39b5189ad4128f3e105c91cf16de979e949c84f1e921213e78fad85af3b598538834e43471f0ec51ad34cfc655bdce65402f99b3e061e9abff8fa9da4fe9f8d543ea8440dd86f4b348675a4b6edfa6b3f82e09419f464f607721f8294a9113bc0aa5171213b553dd25247e06ba6698da7664075aaf6e27f05a1a14b2e0f58940766a802c43d3f59b0d4a32f27627dc8208ead72714a8b4c1bbac201389a5442ce7f550c18c3056b64547ad3197b75adb26350007d2e2e7b5b2e20ea2a91a4e4f4ff73d8b6b2299f75478c2924b0b917ad6e4f21f752891e5498eabe457ae8a3ad70932e895dd4243a57e8eb915269b89880d60acc65c493856509366ee0cc0cd0413e60a957c7d52cb854c592415c275b2242fea64a7fc06402dadcfa41480f54e3de06c91d4ca684221bb7fcbce0d7b89f5ceb55e53a75be2cd9f8dc20d36d246ff718274bc47772199ec866940ff4a58667eef359f03ffe70d13776682811e8b030cedcdfb63cad6ce9eae436463c21c138c7373298da61130721386176de02b3bde7ba18179df738af9f575c64444d10251517f5f751e1d0296289977efe9e78162a589a43d3dc70ab94fcf7938ff50a3c506eb6181b6f63f5a57ac64c5cacee3dd74d38d9b3d478c6c1018e77db641b887d5c8b243db277010394c00f396581e9a34cc6b2a42db107e2c9c9e988737beaac5a0e053537f042d7e734c677d3adc193d2b765740c989a81a191331450bd00485348d1d7c0bcc57997c64b2446b986d8bee605c3f16a28a138014498e4123af564bd30bb75ab89c0cd5b849c28c1157bd51c4a199b8ae3207ae0f6a2839fd333d7bbd295be43455a8586bbfc4459e2b046b40d75237bb791b371e3dc5b823b99626c15f480f53ff42068baddc22da6239f0213ef409ed1f52d6becd307e98a2d49b638ddd6bc68d7891022f8286677ce746f4cb883a72faebe650179c4fe4dbe30bae118d7dff0b0da07788cfa8114121fbaaff54cd5315abbd7d6318597476b044c00364b2f06cae363af866b67c5021bad240302889e7d5a934112883fff8a58af17fc6ba4d23931557baaa19686aee14393ec4136a02091393d03fd423f6ce74e55c21072af4b246b3bee02efe95d78e13d12227f00ea08e06372ac2002298b03786982bc00dc798b412e25e389a17308c1cb28fa075965ef08a0fdee73a56ce24d1e9226736da5e766613fbc5f87f6358fb973bdc77a0b2026573f81ea9777c8acc6ff6966347fde0d15a687e510da540f6f0a0abad09795254dea41ceba4a61fd8715fee5c9e3ba47b74df1a385523c6204e8aa382fda485580d2d9ee75aaf17dfcfd377a431fd95b7c6714e1b948ca25cf6744806d5d5a07060bbc8a4973954ca7ab6826968a0fb7da60457fdda708a0c839bba32cce0decc3066aa9d6114ac6f6169f8f2aac5cc891401556e86f3ceecab8cc413aff3b43aea10373f5af16c3a8c8571627eee827b026ce2935710a14bf6021a2a344fc6b9ab0b2485e62aa70da7b5f5341da2e87a41e09e3bccea94f7018dc79510ae8ca07c057cd627290fb11143533943539f95a2855ad96fedc1000e9f57b5c8399f11a7709af70b2b769cb5a0a58141792c6b980f1dd30fffd71291f1de0e8a76a2f1bfefaa2f9cf85d7ad65a67840bc6efcd35dd575237b0c73176ae0ec38300ff9319593664cd0305190df82af4df7da24f1cc8a24d3a765bcbd2b4b0dde201a26bc09b88efec6984a7089b9d5505e1996e4b8e1b7e5ab72b361deed7b711119d0e38466fe1ea156340d56b7f21636f0e149e2c8935ec68df67087ac353c8fbc2731c855a100d332ea2261184d732d100a43e4e6c5ec743490d8f38d15594c4d0345489a6727eb427ba4572c6ca3e871e1e517fa20c41c6f8f0f2ea6c950bc2148571e94d57c5c081b929e7bb885540494a93851e55f2f1c68c733e72077e5cc20aaca8de9498944c024aa00454811650044a4009540125d00594400b680225a00bb48012005d6ee0d2e663d3009ce7e00c1788310f73a454da6468eb7202b6fbbd8fab34298c8a8ccae89ac94402b8b0ba528fe83d64a118fb514927eaccd9ab29cebdb6047124014f390e9623ed3387299abac512013704d3a07ab73f4f2257027e22e84b7e9ebe2860daebc4496a0a38193296fc3fd0b02a3f88e498ee99fb4bd6dc99457d673dee641a17b1e2dc98070531960a9084a7d8e14c4441319e3e675802a0cd3178c2f9327999e904491be99ed9a8502ddd4cbcfa0e1ee83fc9be2b2625ad35a9c798aefb971d3282fea58a1f77717b86d5f3d9c2498a4b71b1e3677562ac29878857c9f4b53e80f336ece7c9a52576c2cc978eca8d809562e3d46e18961587ff523fb5265b3958cb41353b7ff5afc62c0b918987a10d4a965128c922a6571c0ec186a8a0495d06f3ed49f2972dc25ffb68138b4e055047bcc5c1b5985e9711ada6527703c9c7235d02ba432eef23643c3ced332336f0d9c3453ed2bbdcfff4d323e1ad3cb1189422ed65c6564da816acd4c6b00cd3c52faba6bd6ab3060ea466db002db1f492f263efccc27f1ee9199f656ff2ba20fb3c760d96906ce8e716b69f9ba1d5bddbb2938404ac515787cf09d5e8eafa72c0f7ab510f3ad66e6c259877b9722ef055cb8b1d45d7212179464986a866988591cea8a150a43b51348288ffca0e472af2196ecf97214deaf6e21655101ce6cbfbca9ab4c3808f8c21fee0197f6898af379cdfdac19ce85df710ace42db4d79036a9ce9eafdfe4cd762c6e85057982f45b5c4818840514c99089e43b1ed3a20ad0df7278890cf251721e7f9618a98139ad8b321daed8cab7d6033cc94400158d42e6a21b0a341eefc068761894ae1cce5b6cecb494b3c1fc58f3e0b7adec1c6d6368687e0771986eeb2e08c224c79b8ea95e717f423488618134b4fd9fe141590f505057a3a93308f49c2fde25b2bd4e8ff7e3a086a6135ac7b616d1a0adaac4efe19d062ee36285b210f825fa60dd3106525131fd5360c7a84433cc23cc6fef09b2671dae621220c1216ddfe86c0c5af6b8a9a78ffe304fcfb2c97cc33f4dd011f45ce5e25e6cb960f698f5f38b1c7782e44dd88df64eace111c72ad74dbc0230e5ceb958c0b8fa08d6748891af6cd42242bd8d92c48fb090e3a10f8a035a1aa103e55c1b664965de548a7f571020036871af9255362779c1cd7868a3b2e81f14545fc7a03d1cebe952469c35bdaccd3001f59d0007415d3a47620e3ebf38d64515085950e3aad278a43b1d5faadadd045bcb7968e8f7e7202cedcc22b9b90ab50f5033a39b9f89d7abcaef84f4a78ce7113685a6430f5073c8bca406604c02ec122b3eb001d57722238a6f4e24a18e7b4d529d7fdbb1303ed8699dd8e26c39887441bf40516aea663076e88ab060ae40d35e84ad09fe3596c034a7e8ff420ee894fa6a1f2c104874c2477f76f1d9cc7cc04767aec8aa6ab6f2ccba74f08ff1e5566644c6679c4894514074a7834ba5f6ebb36d4d6ad3235f2babb902747b1aea18dc375c514eec418f92161545ba0d76bd951fbc05bd59a1a5f0c8d3f165b3c20fee62db6ec5f94a1748afcd792d0e6fed6b5c9b4bb1c03655cb7b853646ddf3257c36b2708490069ce165f7f3eb10c3b82dc60260685f52c20c6921832972bb801aab0c01daa168579cea7d640f8de16e3a6e4e14c9c96736cd634855621307316f66fc09a555ba0a3a992de9468f30d093e768bf0c39e7e2a2465ed062982fa84614a1c376272489452285be26387aa5818669ff1940363bfee75d2768539f5aa4d410e9b562bcbae42319f057822afc9815007ecafbd4fd53622720a0d33722dcbee9bd8c7d5a94a31001659e493a8dc8d544b2a8ce92b19e9482a5d22b4a5a96181330528c7d7a21d479d3def6edb4dcb1a928a96f4aeac55c12b2ee187a5ed80724a0981d38246558868c19678fb5f1068449a896f67df21f880cf4c2037aadfe885d40d495491b99e2dd0d2cae372b453a84e97b09fd0475ef985d69223a631bd09b56ce828e3025125b88a9447bb99b7ee4270e5839c2f60408dbbfb7963074e729eb80b37fcdd43e8afce66113f2b2ae515a6c84102229b4b2bb7bd32601dc07ef074908d765c3870d1f79aef25ce5b9b2e1c3864f8dd9868fe9b3e3f4d9199b3e1b5e7ef9e5b56218bb367ca8b45620007c50b97907b7e210a7c10ffabd10df8b93702b5ebf1e7e9c638cd1a3c9ae2dc6ec5105276d377f76535452706bfbe72c42e810e6cf1e66fe3767f7de8715c2fa386738541e6215ef83bb76ef3d914654f9afa0eed3b8cadfbb12555745a352b42aefe49cefc5488e9bf647dfa3c11fc386f75e2458e37ec54b7e5b3809d6a8f1e2d6a6fef03a7effd30bf5d6e40c6b9c849120ccc51f37aa3df6ae7deabc07c39d0c35f61ccc3809e2f72c7fce701284e1fe931b07ee64efb13d7b3e4ebaa26cf8f9b79a6bae28fbfe3671124eca1a27e1969641ece2a42196135478916e908824fb2b946df4b34036c876ca51203788cfc85aa05e1d897d156fcb1ef728cf6be6c2556f74c460555728de154dfe18345987a2a66930ed024155acaa682afa86430a21841a7e841788fee0c6a876d1dedf3a8bd2a7d429a5df0db2fdb99ce1a84f71f5531c5ab12cf5b1188d4c095c2d550f55cf5856b445da9886514afd4647b5aa2b54ef6a7ff66d9c8693b156abba42f40eedcfc669a8445d20f56d7c73d1abde778388e08a315f02178d0ec4085c0950f9aa539cbeb595fbea7007856ea92737e651fa9afd2b94df6e8ff2b0e7bebc4f9eca617420d2705614c145c3511b77db3b2bd2882c3772d188463aecc10e420ec2fb9d05c29e7e8e84158d5c34e00aae18f3276ce50e7829fce0b8a79f71affd678176f69b1781cb00d84f4e6f7005178debc27e4ae06aa11d88342ebf40367d815420abba40e20d526bcc17c8d5daf652cc6a9a5b631fd7640b74eb05125b5290e7b524c367c8fa9a7d4c6e1976c2fc0eaf2923c367589f76527777ead1e06b73b74fe9e9add34d06d6f0b7b3dbf4e76e4f983e9e58cb4018fbd36a17fcd8cb39e7430cc2af7bf99f8c8d7db61902197b99afd33963198ef9349dcef365608d9931ec5aa2947edcbed161e75f31b0c667021a9f3306d6988fa9202d751932f6cb9f651a536de39b067e59db38d6927a0c8499f9ed4b6c7af2da1ad6f5a796a1d9bbb60cac315f7e7263316b99f9f8b19791b13d5927ddb43e8e5906d6980f6bfde9d5aa379d5a06c2c89b0d6e4df0f02cb1b8bc4263a4942752156f257eca8aa537c7a594520a952845a19c5bca9f0a55814a34bef631318bf45e2dc6ff141de90ac5a2c61329852d1a2fd4285c8a4b4e35a594a39446a8045b2ade0ac7ad3c54faa59c99b28a0a548ac9792546fba9790c54824a506929e79c5554a0928a77798cc9f98a0d313a4f5d62c959fdcc51aee2db7b5ce9de26b67874a5583dbad4bc96bf528f71ac1556e82f3ec616ac111fab2f340d7e0d83da8bd72f9666d4ead0dddd1ddb447777777780063f6aedf2c2c50ba0465abf458b2db10ae05dc038801addddddfd378dd5390001e89a65cef3e2458d11b6e2475b9c29b6b47c009430874b71c68f2d1f3f012effd51dffa33bfe371300808f93fe7725e03f3ebc12e07dfc08bfe2172d08e35a00bcecb5777acfebfe3dee4ff0561e00def626782affe2a1dec54b79f768fe96168e638195e5efbb854a8ed12cc31e3acb438f859b9c6b29fce0b015cf00a8cee33cbf0c007ff3e46500a82b75a8046b54fde1cf3e0754cab2a5ec4e0385c7b063de6713dd95200c45c1bb2eeda9a31b8d228f96739e577f30cb70b0c09d1eb0064fce5a8895e52f9514af3556150dce6a95f7dd848f358b2e6eea61ea86c78fd338c6549d91c2f16f6642f6356a17dce2f2f218eb2fc61a3f139ed667b91f6f3dad7cec51bd161374fd9b41e0457f2917568b8e5fa3518c31c6a86bdc893b31eec4a8a261f91876746fc51d58037ed597e55dfc1779620f9e7dc579e3bc715e879a263ecbdfff326b2f8ebb52a92b3e65f9c812638c2c3af6d881309025be0b2f7fcadb1e7a547b1696a8bde530a84d49f5c09f3df75e630f08b3f99fcd9c39f78030dc430ffbca6917fbf353a91ed0cbf26f59cd589555bfab47a6630f6fc51e9147bb18966ddc97620f17301584f4894dde8a4c3936352d59cb71a9546ce2de8a4d62938f4728adc8149dc426f063fda5d824c6a6d8149b786cb2e4139922146f45a6e82436c526b1c9979a966a726c1299bcc5617d39bc1c5e0e6313ec4d35b9262fc526b1494d5e8a4d621308539397bc159bc4a6d80488a6136c2ac2f8b11741ff5231cb208037cc190ece2ff8398aa2f62c5eeabdf3e8aba01ec7cdf5c7ed5973ac72ac72ac72ac8ed0e42ec65565d5eef444b0c6ed628e2ba7fc2b5e84c455fc4187f5f37bd64e14637efada2f20d28851f9141aeff5228d3ee765198ed37b3e51158dd2fe5afc13d51cc707b178ca34d56ed602f6a69c23f58ffed1577e647fdadb380df7316c8739de57acfd69d08bf6a769517f5eb4b5793fd668f16a1aff6ce28c19975231c68cfe1af76e13299739cd5710c69f6638b8bfaf79f06f44162ff59d979fe3fc8adbc36c02758514c02d5648fd1569c444fd71f07e1792930d6adafef69b76a931f36328d43ecbda1f7f4ad31f940bd034fa9913e5c79f03bf13e18f590bb8e812b976d4ae16b5e1dfaa6968b03c7d8845772208e32cdef5629e3ca5eab46cef85399e218f0d5e1bc6308a3d9aece2300c63cc691afc59ca3b874a41e5480c7f069d6a97ec230d2ee54f17c3b66eebeee953a0a760dd5fd79fec6cd6c2c559e65d1be37ba303f6d06c98e360dbf60e733098b327a6e97f74db6af2967be26c9b1be7ddfcdb3639cd66fc5fde587f50fb1bae6997faf7e773cf65f8310a79607dffe2712fccc93413e32e557fd359292b65a5ac949576581faced4647e7d305d9e6d60175aa4ed5fd743fdc8d8eadebd9bef3d9ba205cb769dcf5743e5c07b4759d6a7e3573e39e7be9d5fb1fc7cd6fb1899c4dacdffd743fdd4ff7d3fd40161458b55ace39534ab58f8199ca90918130f933f53eee4687f63179bb28a51bfd2da7504dc6ce526a2954eefc32b0067df99927036132c6a8feae9691b9e1204592736413605f4472727236d4d917111e51f263ccd55af17b4ea58961576c56fb75e2ff96147e60f73fdfb12fb84e7d8cbb1b1ddcc5d5ef3c1aed2f7ce2b8c7b8c3df556efb1b7ed2b6ff20ce73a793fe50cfe9d3af3cc7fd0aee3e15ddfde552457f28ddd5e4bdfd77daa2ecf486f1cfd7bc2c5f8d721d0883b2354479efbd57de8b912e6e92f756bc7471abde7b3fe79aad62af699ba6699c0aa76a7977a7d3a6bd8cb54eeafceea0b1763d9d4f17a4f301a235d62c73d732cff83efdeea7fb69ca34d619d50cd00c50106a6d22ce309bf865d23d7bcfda739ae37b1d6d98b6893341a88c85ccbe53b11b1d99662cbb4fcdd8d79a73cdb9e65c73769f5abdebc2ea63ce9373ce39dffff2638f7d79fb4dcbbffd77b98aef67af65dcd56a566be5ea6b9aa6d50cbbae63b7c091c6186ba55fe3d7b865a52f5db8d9f6a5bcd181935bd909cd84eed25f32ed2fca5a2bfd2f2fd55a6db52d75a3f116f91b9619e3c71ccef0678c73ceb87bec9f82fa4da7fcb6b97fca69d39fa66b529dfe6a5298cec94aa8bcf935e2d1e42ea78cfd4de781c443080fa02db32f22343899735e7affdad4ef8d8eeb8ab9f7c6a870fffaebde7badb6f15defb7dc8c657c63a90c2ad31ccc29e5a4373a648ca4544e2a655c19db29a58f6d9c5e191919190c651212b76e745c1849e2268c5baa8deddcc7d1f44ece7a7bed64b57dcecb9beb3afdc9cd6dda5e5e8b56b12c630c0727e1249c8493543527e6a5eb38b975b393bc94977a628c6ae37b4fac6fb3f754d79fe7d4ed2b777a5bed9f3cefbccba95bed8ab2abe7d4a46a529eb3e367a5ac9495e250e6f5886c4868463503741d21e43a42e83a42881e5d7cd4428ff26ffa68dbcf971eed8a7d8ef4684b7a741ded99a099a099a06c488b4aa9ec5410c21b1d31743d9d8f95f6af7d795f1704da4ed5a9acb5acf8e5bfb0c6d0b67af6e9e531f047af06b2e8c7ac5990b56b206bc7ef7eba9feea7fb9958d0d0a261e5f28b8f2f8f06a18dc2be88d0b0c3c946c0be88e0146d7ba3a35e715b18279d5056afd6cfb7d238e9178eb5ed742ac670ededf62fdcfee91ddbcedb1eeb2f6fab69fb6ef5b769ed339dffcb5eab3ac3f1dd04619fe387e99a8fef3ab086d53455468d7218fe0442f9044b237cf98c152c832fa594badab7ba422d6b25228d7c46d642b5124af9e29dbe7afe9ac762ffa5c5c584fa0078cf5cc0fae336adfa43615389e563c9928fa354919255b18aa6892a5fa5ca0946bb02409ba0bf57828b967f5d2f5a4a1c5fc29755caf85a947f411795b7b73be137ceabfa7b417e8580fc6a6bad9fdb67c9f2a14dbda73f145e7f9fa200d026e86a82862e2576a17c9ae2e46ff23b6982fe2e2449c4ba7c125554bc6bc7ea557ba3a33e949f83551f4a89c45629a564c11af2ad3c02a534722ca5d1f687e1b9e862367c08e14b9796fa2c0f31bc964019902861c32c5856d0ff2e29627eb0e185546195d8a357ebabf84b1684a9dafb8b777a170ff52d5ecabbf0549e6567a7f3a4ce71490a29a6fe1f0afb8bd9b4e69587198e78fa2bd28021c6a04f7fe543e1a3fe7ed32f45b3a76188b30221862bbfa25deeab7c7d18280a28fca752ad967ddc3da7a253f8d17dfdec519e576786033f4da73f283308ec442a8437e44288fe15b57d8ebe24026b60fbdb679f4312914693ee2b895829258c02752dc0ceb0c7ffd5146057ecede36a63b5725fab2511085321eb059e30040e5eae93219fb1ca5712db008f01a11058b47de50e3991c76ebbf746c7eac2a1fb7e2f17724316741715de970befd5eef73f57b9d725ba50c886da05ffc963ad5eb4525f565e6e441a306c2c2c2def22b34bd42f7fdfe3cbe6d2a2736ef21b1d7e8466e5de0b877c05e3ca5f2f72a27ae9c7087f25f551c7b8f27065453b11bc2bf0ae78d74eb15cac1538b4412ba5944e74a5cc32278242606880d3b8ae242d969450080c4ee44436726e434e048538510abad839014ad5b64eb66572323b006793e8cee4244695e38a576e743893c728342f2eee4cf149f6d1a5bacbcb09f5e54f881046ec2f0eb37f7978532f3a36f197f7cd6b75e2f54bedede3f667f7f69709f784bf31d74f5861892ee25213a97a7971262626a618657fb4a546267f125dfe8b4edc098e38e288aba689df1223fe6cc42dde52e3bf305517ed5b3e2ee2952630b3f6c226f05fc39dd4df7c218e71ea9a9c7374e2e22f452c6e23091b3e2ad9fdec33ce5329776b9d6a87970f1b3e2d40b78ff2b8a7a74ff1ee533a7b620cfab452eaf471eca8d753758feb2f15b3bbdbe8b12194af945addf3dbe88135a08aa6689a8cb2e103b2a0586cf86cfaee9ad64cddddf36befee30dfb7429b0aa54fe985b5de4a33cb7511e3dbf0c192c20feeb399d96388398c2c9c508c6e531f77c54d7f365e1b49e49c23842df8367aa00da1fdd9d3c7b0a95708a9fdfb367a6ca8e0e9dd86cfb66fc307ac71df3e7efdd9f0d9f625fcfaf0ab8196fee9e1d3b7d6721c06e9f53c9fb40d1f10c6dae88130f46986e3e47f23a23cee533c2d460ec77211b39bfbe8614e389c48834b719c6b9c6a776cd75d86d0860fed298739d9f339a14863a6521cc709edf9367c7c9ba6f3d45ef6ec4f1ed933ebfb5b93c80c4717911990ecf870c967c0a6eee7eace07c2c8ae474eddfdc4881c6b4b7d7f889151a526132323a34e4a698c8c0c59a9cc0f29c3c990a8175bbf4a2cd3fe7a56e2c8fa7afbf57a59cbccfed5aefd9b7dbea4cd97062c1c158e0f4e0f0e0fce0e0ecc99dac6f7cc81d9f5b6feadd8679ecc5eb697a6c197fe248f7969cc79c01c1e3195396893630e8f1c1e393c7278e4f0b8707268bcf01891474e51965f788cf890070e8f9c221e39383c728a78f078f102888bffbdf01c1e393c7278e4f0c8e1c1d26cb85a330979241a394b6e3feb7f195ca550cc3df6d45361d753ccaedaed65bf6afdd5649c318abf4b7f31d87f996b9afbf86a1afa73e399e110b88243204cad10cee7503015a19ed751f25e9b10c84d83f10b190e23fe6ac86ac86ac86ac86ac825a4aa90e10a32a9702346c22150081c025770c80a0a8143e00a32c121130e8961c91664b8088a590d590d590d590d59c1211d13099778e012cf76b552a0125ce2814a7089072ac94ff96cf328e661d884229f4427b5d6aae192c3a81f5cf24cdf9479c5c01a3ff47b652f1f2a5d4d93651b5ca218c6208c9a0ebc6cecab81a82d350da6793c9c4e8f35e79d9e7a190fdc04ba4ff9586bfd1b11d3cac329f3e86312e83e85f34ef56146b5e6f1c061d5fb501bc3711fcb3ed4c63ec5cb3ceb30b03f79d963600f3317ee63dd9f3c197ed06c7d1eb8af5e0b9d273d3b8c97e734e7312054fa4e45a790048a2af7893d3bf2e0ece7d31c79e05316ba42ff761a4de91d570c4d53183415eff2b84775dacf3fd5b9ed7ce9dac6b7f9f7e5b69aa6d3f6bb9736fe754b9aa6e9de769aa6fedc766aaeeb620f98755dd77591e7512927231e231a376885958b3de24eec11798cbad883a78b3bb147e4318a3dba4e3e0d9557d12b4f354a7f366a7cc59872fa8bfdd4df8b0d43a53834b82fecb50bee805abfd853cec94dfc73833be2b6799a276114c061c8701830725ce4893d54a821ea0492aae8e33d55fe55e5addfd5125ef7b5fbf655f01898eeb4e51e86fa36d238c11d0cbbfe24bfbb3ec3f5390d43bc744dded773bf69cd4be10777ffdbacb77d66e9cb7d354dbef93599c9ebde4b6f751defcb50be444e539a2a8055c161c47721c4ede8ece8ece8ece8ece85c393b980a1e23e27c70c7ab0a9e0a3a57cea5b3c3ba7476ae9c4b6787a573e9c49b5d08ede8ece8ece8ece8ece868dee1e8f0d999201467539feb574959db68c7a742e88a0a29127218340815a2433b46d9d10270052ec600e23eca34017924b4ed3ee2283bdaf16782a86a2668466826880ac919d54cd08cd01147334133aa99a0ec8842a93b7c85ba23c6d8815227f63a4268260835f4035f2fe44422938847dc68af58db8b2674f7a28b9dae6b86feaea6eeb1e79636f7d8a778d7d33fd94b5f17f6da86424d68ffab415d488e115d44454437e63240fc22a222a222a222a22222493106bda8e96a5a9244350751510ea2a21cab1c44454439882280f5c76137e647115111511151115111917684e33c228de2a6da378d51cba0547f3276acf4dd9f6a1bffa47cb9b1a6b934cebaeef832f9f10b59d3c89f1b6b6de31b4b199b6a190843e98c912113036bc8c890735e3232e894b964200cfefcd4f3ae9d3dfc3722ad5fdfe2cf1e6ec1660e258341bc04cf28124a7ce24e60d3967289c95ecb316df9337301eed37f76e5bf94fcebb231acfd15efba2cca4bf14ede75c5a0fab39972ee2a65e57e72ff02a769e0cf2d6fac9289c96462c2c484890913132626ad2526269009d396bb67e37a5d3454f86c2693d6528b09538b09536ba9c58429f63069318130f2471063c48f397298bb1270ed984a7117e3ae04c0e80276b9795db7fe08bac757f6506aa7bf548ad3eefd6b0436469ab9803dadd775599b1d46b7e3e531c61867722690b5f9a9095f2fe46c924c71c95b28a48d3ab2ffa18ea6b5a823a6af54c7ebd2d76bbf5d35906967fc9afeaea36a13779634f3e5ce9a065f4c7b62d25e75fedcf0c2a9514a50472825d4999a767c24244647ec650028515a4b498e8e48299f72003ad93472870c1275843a52c1814cbbbe44294121412541214129411da190a094a08e50495048504a50472a382825282428254cdbfee6398eef380e0fdc677dc7461da194ccd6f683c734078e86fedcf19f6c17fb229273b4b16798bd3077f61931d67aad8a76fc152bc850901d854095c38810684229e753cf0331b8503de0a97684423b92605fa91db80f1ed9f171c0bf323a91a8b6ed906cbbb1ccb7fba93e9deaea5450763ddd4fa7ea90743f10763d507e54c11bb1b5233c72a103175fa7f083eb54dd8f6c6933c8e69c99b5d1569ab36c46350394356b3f6759963356e9fcec3966f9352d6bf85b86cd04cd04cd04cd04d1560fcf73763e79cecff44647ee7a3a9fdc05c9ac66adfd2c6b9f6115b2dccbb22ddbc4fc19f6dd4ff7d3fd743f9095799d21db3973ebaaee906a373a2ca6659e5b99666d8eda7f11277b96ce8f5766b3cd3c9595b25256ca4a46dc7a4e666d363fb3f462164268b3cc7eeea3596b35fb1a066dce4e9f6dfaeb3ee3fedb3ee53387382d27adb9ed74def497352d6bab5dc7755c87ab451966e79c33d27cf5659df36da5f1628edde8c0f05f9a7bf6cf9886f1bbcd9eb1f99e79b4f9b5cfb45ce9fc4ccb5a863fd3f6e3630f274118ec5afdd55d7dc0524a1963efdf1b1df8632ed695d55c3f73584accc9c8c8ecb904ee46879cb5094b39f1126ee1164eda6e745c1809376d9ddce46fb5c31b6e411cce65e0bc6ee33a0ee78c9370124ec24938a92e81b6b819a02a84c378e23b133413b471dc8c6a0668ebf08c6a0608d6c0bf717fc33b6eab1bfd6d72db77dda6bf1a7a34b93fd9c499a099a099a099a09920da9262c3373a724b662758ca893393cc4b79292b65a51b1df0b1e3e45676222587f14b293313961dfe6a8e8d2267f75fc4d93c0e07f6054c373b406c21c510748004124eac76ad3618ed4a821cb4a0c91280b4208a1a348900b0c15111961cb1e3a88a231d7000820da0dc40088b152ab561870b2a98c02e4c20c8a10190cf097880d09343098b28ace8d9e28a24481b7070617a8262258068f28a590b8a26589c8203c2539c0ac593ec03222e4ee150f8c4299ae6ecf69c734e18a8b24d421290ecf0c410472ba0624eac043e4bf400b2440d4c9498cc999150b2052b101d4d408a264420714513132988e8b12911313042123f7294d8c0822146a4780249cc484b985690ac30d243099324480079b2430e1331405282688993b8a408a8a5a315a594522341e821c238c11282c8c18ad610110a8c14d14115427882054e1c458112420e01d2129a10b1a840628910475690458f170c010426513ce99484b8ab8a269f245cb16349113fdca8a0061a7aa628c2021a10a941d082871f50a1c390232582d001143951a20061c90f2b1f20a9ad9b212838c861c915495558f184480f9090451537ac86a0c8e18070851ba1fdec8083223ab46a50423522034a0346b0aa90c1891a7a828049284481645368a80192164110e2471227180c61c312268a50821451f460fa2008f683130b70b4b0483542ab1edcc0a42409a318a440c99320544b4796ece03097ac32120b7e608bb0400aec62010928526c31041e4b24c1470d4b8a24b16353ca22b229038220c2448a1ea61e1944418f5cb0e79c73064109542905d1099ada73ce397d70c43c32e7c44aa0e2126c851e2b7a43914d29a52e701672609a214a0d36b8e08a24491815c9c1092da2c38efb424906426ab0b343072c1f1ce0c687d5164bd8c20735e4a8c004254c8ce023470a27ab24089105143db000c44e54e224082a961809e243162b221d8a281124298a222b50d6d1ae0fa300a8d491c70c54c1f382180cf1841439a03194e407900ca84042074038c99810ca4b2e2b6d0f576448555f9470290e95626168c5a568132978c491672ba3e80816403091548427465a3471850f2a40b241063d60dd1ef0e04589e56ce69cd801230dd4a544110a7a408216aba41d12586267c791950a08114b1cd1a427767d180540bda41c867cc904ce9c2f28802b0461e7a7c90825d050430ece0b8828cdb0292d00928f1e3f3e08818a1f4952ae10d261579d1f76754193956559e13168c2a24e44d14316514275a2d65a6b5d02b32f243b3062848313244376b8f1d1628a1e3cc881ce4f0b56a051826cdad40320b5d68a811c207ec0f484121b600065c062490e4fa400072e40f2a94410a1d244ac37e880065144130a6ec8a206408882e4a68624fcd0e3636409390c81a41ad1198ee0e032c30e96e80110493c61032a0731b0420949135090604235798418c2063c32fc4431ba8e4041c514323c694284c9073b22111e96b021069295243be2c28f0d5480c30a8e869ab080021e46c0c1124a34b580070994c80e56a20a962240d102070b59e841a5c98889109c30720395d12dd2034bba114a4f10a9c1064845495440498f1b94b2c03922c98e1f281945b9810d53ec6842886b62a521f13287524a290b49acaca44b36a53c4c36bda0cc39e79cd3843de79c730842f7669b84b567dc73ce39e7b41935e79c73ce395128d44b16d85befaeb5d68ac56aceeba138288ab0c1480f29d001901a9468f1825db15d758ae4408925a3214830b1c2110a50320424a8a8d022ca0e0480aa282ac2908e8fa1286ea0498aa07800b3e38a1d26434953f85ca0e58316472d8022ca0db280e2592021e5c8cf19ccd62a0844d8546e1a842c36a546a4802b14c1b480277e10d2e9c1a808282062c3934ac4480feac6872134397241910ab05019c1a4d65ae3aeb5d68ae21cc60d41604ba8201a71291417695c711ecd200325a008a2828a225b4069ea8188931c2590d0a9011119d822247d6d84118eece0082a1e1461033ca8a2053d96a862a9758525c232428546545f1cf7565c2cf8b0bad129821246e049d2a4450a2ea54d8bf880c5761511846a063a457e7c5645a6a09fca76051e5cbb2180832623b2c84228478815bed4666267531a1801031e84b8a1092100b1021147822936a09088136b06506926e8e7de8b31ec5e7cb17bf1bd7f237ed8df392b8661f82dc618c32e7643c4868fb1be11bb980ece68c3c7186bc3eee707d7898e7d6de1de17307a2fce1c80c199dd87735606c07b69d602f616abf8c2b5662ddcbfd902ae7d750a33e0e496d1660c8898fe46b0310fdbcc85fbf3b1ec8579330638fc68e3f08a726af46de2b63762f53c00b7a0def4e48d851307fbdd58893f620b35ccfb521b8b9ee6e1b8b696ffca1e20e56b5a7bf99afeb0879f69da6501d7d61ec7b535eda9f6f4356dff6ff60d879987f3cdc6ae1b0c1d296bd1165d9a119a11aa383bce04cda866806682289428bbe21c31137444d6a20186477c06f44ed5a928955452291d7ad7d3f9743f10066ad8a245743f454c1e5838393b38b8855b2c88c3da31ca248c84935442993504878ee0249c748402e1ebc517a5cbd4ce4b79694a09f3bbb452c2dcca4a10466a1844af228d14a6b9951159292b19c1f95fd2d224d87a1d818c79cdaf1ed431328f4ac9a022e4016733178b30be3ca61c4a592585fec269e48f9f8a34f0474cbecb08c4ecf6f386107aef11883452fa566a84f3185d0722404a2abf9b69849bd6d224f0f5e2abaa1d9fd225cab4af4fdddc03ac162504f7d51d9c0ed562f92b853d760688cea86682287d42a1d0284f7c068de233e625690f92521d840e71f3e1feea8e27340ad581833baa0c15a7e6d49dca537b7c06fe9920087335bdb4e2f88caffad41d55869a33133403646754742608d6a0973e86693d5f7e567f36d9ac2a2136cb20982bb501fdc1d1dc5b7196bd9bac63f025835dd8cb0f1f24a70af4078c61f407c664200cd65806c2c018996f6a1987b607be5ec8d4b63e405c83e03e577110a85e3ce1ac18e9569ca40212520109d540b5f241ce8997660d54418684ac8480380881820c0959e124dc9a532514440514042761a47ab92aa59ad5aa3857659c34d4c2d78b7c611b6344cc6621582f8712c27d178b537134d84f6cc6a5dad709e7cdf51c7a61da7564380c1b327c86c4367c86bd84e49c4138fb707f17cb868a833714d080085020879ed844baa1802b09d7f19c7bdde0f2df6f80dfc7be0fdc7cf7464daeaea3a4faecaa1f577d491e2a9e15de80fb5c68078ec6fec4f3e6c710fed2fc2bc33ab76eb53a2b4588398e10e6c12043424340c8ca83ac353355205c88eec041a138e4427c86f52267f90c2c2b41189b97aaad3ee433be58e4421ec48564250803736b628e5379f6e74298508d382db7eab7fafbc04dca85a2d0f4b252645d2ce0119f216112fbe2e2950e04da4a87701f6cd11c389afbd3fefd1b5eb16ca158ddf9743d57df8853c3241e3c8248497c863c42bae404726d393b204a038efe079320d11c3808bffe844e7cc613dcfd4098aba7fe6e3c10b7d86207a7eba8446d5856b1532325000840013316000030100a8603c3d13c0fd4b4e50114801174a2506a5218090452928328631022c418620801c09001802122d28000c78f7413f5b0c8d434a3340005599e38259620b535801d49c0b3c834fbc6fc38317468e15bd94eee014053943ff6a89775a6273cede51d4a93d1d8cea5a6a7244c9b825398980ad11032a7976e4624190cd75d9837b69a09b7128abc5e7c521a9cd8faf30999a270643ef0e6748bece9d46bc5422aadb40aac77061c32804e3a3c449309a368d556ce75473d23b84cb19c719f28265e8ea81e503ca51eda048cb18c2936cd8ec99173e1d0e8008a9f3aefa2037de8d54baa87a15ff71919a0c153ff11662899ac2c77aa47cef239d2089412b5cc0e4f58d9470c6b1d3fbfa9ff63cea3f99c54a51bb6fad0438156eb2be851e99b067e36ef5bc8e5bf3b6347803501ec1909f8e99556f5ad5e43ff9cf926e88478bf6e4d457fbdee5d3d305f6199b4a897ae0f6005517c7a47e1fef5da2b077e7e071480e10e610b4500b085427082eb9c8872b8217b1e8662eeb809f4945ab821b4f764783fd28bf773866704ea1924cfb3db64ef01c75eb131cb70b225a91b97f28e6e1e3384dd068d145486badeff34e09537318b32ba8df43e3307fdfd3aa07d695faf173474d04be8953f06c58fc63850e79a45d23c7f7a51f622ea7a7f629591c940aef6cbca38d0095266b5ea3a6cbfbe70897631b6718cc8246aeb858a31d6c77dc99deece9bd1de1732932a943c6ba210551cbe5efb6281b2496167fe8149482ab1e37add3ede26a01ea0ff0fb0773f84f36ce699c92af47f2cc5f510770573b0f845d24db3f77507aeb75253c338bafd103036c95108f9f71ae09e1dada11ed5ff005e3c1df2e8b679f8f7d0e6a6c31f9ab5a9342bc67b4d99a184784744dde9592bd3a7356e22bda54c017add23dd8d8212776a43b7648f3a15f68c78e3d95813e6889fad86dc670b9ae41400b7adebf7d82f5d6bb68fb01858e0b8ee0b90515144a4150470867bd621cfb61bca96fdcba75f4c100da979ea91d86f0e920a15b424c4ea96606d0802b5f2b8a863fa0acc703edf236df1702462b7e1f29031cdc7316805740a3e3f4512b6f11ab69fa8562e78855656544538828eb32c72d3f317b40457dfde7cdd2b6d7e99be53254c6d84846ed9f984cfef9e65c5cec9035c031ce452155fbb69505d8753b993b59d8b97f675407104bc8f43925ae9c871f0c74499bc15e618e95d39930fcaf60fa55652a42ae201f61220b1e743c2be18ea4db1233d7f59d1444e3d087749f57019741e4be596cdf57e5d5a5ad7ee7cbbb2745d10816ae0e76ec24c64a42b3a966920b6238bc9117bf96c8e9c26ca9d78140523c109834861af764f02ab2daeb651a35e4225af327e7283ead15856b07a61c5b0057902719bb3ac8a8ca302c43eb8841ac28e98f079b5e6500b2fe94d015591300b1351ea5411b0b92477ba876fa015a2df20b8decfe183eac632a9b1446c636ee9fd0fa4dcdb69d4f29464acb4520e7abc11d72dfd358b40c2d218d7d864ead1b7fbc1b72bc2de60d6f40baf0e05d328464551aa8085366a8b08978719f51b795124fb94bc711f2bd6abb572f2c752a230f3477aad560ef2e4547f77b41c5323e2d51261e571bd260fe174da7f868b0c200ac0ddd5d4cd52fb65eee9088e9a62f2d1bf5f1c3e50dd3d9863502b6d358c01b8747b03356128f6606973441c99344e08fde480b08d352d71f548e53bfe34db663645c62b041d54190a29e88b8a3897c22332acaaed5db74d63e88383a80ddd1deadb907c0273f37253fc4948fede157c842352608bf44b91b40c23d59295ea65360a47d8838d5f87d4528800c95c422a1252beb80c3abc2b7b22a9662940692d057cdac77e2aa115535d934d00281e23d114eb9e922f28486ef9580fb7464fb5cdc9541d5c3fd712902606d71cbf87cd1ab1467aa5b3e6d67e6a55d33cd475a299ed3d28f668d5da1b2fac96c8f7954e8172f3652697c3a37b90f24081db647c114c2f4e2b2af468f7d5be97d2346585099b82a4a66c4e66276c475993101c3796349388041beb27284eaae334d6649ceb96931a2c5a7db067a0504d46b145058655bc00514d25d16e5f8be79c1b0c4b7e690eabcb77fba89b572d48d22244ac76a7bdd19f442aa1ecf4d1b345dc639dcc9cb3892db9a3f49ae030b7da6063e566c2b8ab8b273de785e6d06f0cad8d409ada3d12ffc086541fd6cf636a30d594225e210834e81930238996bc22509330370cc6f905d71b858643eeaf7dcf030a86135c80e40f4e42734b3a466a137a489490caab1d97f785d567cb228af6fc26ad0a94dc734a3029ac102c16ff9fc2dfb5c62616c297574f66db68d33dfe2fead1c2f26c0890c07664dfd5395dae5844ac79428429e07c5e4355590e42b8c186f6e2590a4ebceda4e0c5c3a95f400eb4ed378cc53ddf20a0eb4fd0f0d20b1e560620b764dac91bdce0ce5267407ada4881f7802a516b633bfaccaf60248640fd4d50386e11afc4656a9b48e61f00630da24ce123ca796a875aee1735179d58bac952a16f22d25d6712afd5257412886be60b0a7c405a6b1e41a993021b7b33d7211a2d654ac7fe76ef3018ed9eb858ecafbdc029b90b297b5bb98331134a2ab3f30e7b11241033bdeb7c2201737be8a9da085300b342f6f5fc31de612d79953b63e755c29a7de0a5eedc2c9c096829bad23cac7b250984042cc622d31997c1f3e760149f44853d600c3e855f5e4c160b1aa6d4b36afb7b15a4a28e28fc4a9a402eb74f5984502d3200f0c5bcfb12cf971703524b8aef64fd2e043d1b4e8821f26d3dac37994e47d5e83d8aa1d9a0985a69ed42caeb10af8b45f5662404fbcf4406ef0df436b26f87695c4b798029b6c4e3a4b9c423114e1422af8a388f29515ea778ed44c6eea798c431a6264e2295919ebfb20477896487afb2b130988c7f7d9961da6775e067529465d0615834157236014d4e5d095ecf24655d4cc89a50897256fc6c8634e4f371b395973badac2bedeee755b7d330be2babc3978306ad72eb604b73662bab8e86dfbd5a65ec2e2b665a69ed850a7f3e13993ad5cb9196624f91fb5f375d9484cdb4a0f9b8068cc17449d04f9bc53463c958ceff3dbc2f1bb4a238ca322a0f1c6e8cf806998fcf5501fa8078a3b8941b7b0280a33af846a2eb90d6eb34775a18c77a2c3f23a1237ec5cd4fa97284f813b9b909b07ca7c339ce5ab65397f9eb88d567938b289e997820cba09328a5fe96210cfdc6eaa449bebbe710496f11485960bd373ced2352f5d93756217ae09de60024e570f6093f20c0b516330d9326ec9a8eed479c81ba34691e1b920e56d6c551a3f478a09893dd691ee1ec08da8a40d9f2af6364f56db8a38ce157745d012ae0ce5e649078dc400247ee03cc3d55868d18c2102823b410249b2d0a8c12e5955fa02624379ece8891210c2ee8672585bec5073bf60aac74842a69c1c3858175fba6f6d10244cd6e10dc08cdeba34094f2d18a66e9ad801414495409b78356b68b84134a070744d75bec316431a749d3c06cda65e8e7b1d03f53ce5a3c4d0899419c25e92004271f5344004be8048a5e474650083e342226cb03e8927c171ed81c9a57bf3b27c7910df9f8231e2d1789445491e0345fa822e601a274850445fe70f59446945a413b3d19da4f221a5f47979e23c869bb4d0e5cffc6c87538ec06c43b7d7913aca37641708a72a9cbe8f83d693fdf55a0ac7409e66250758acb05a38e6078ae75425174ea49b50d6c82c1de80550abf4db75ade80d3f783adec5569c807e1211eec9ce6840f8c325982da836b8c9375261aacb9ebb708edd10145be26df676450e652e5b49f4a461707df6a2ae1fff810388487b8c788fda500e7df109f0de9008d0dc2043eeec8318424d7a6407feef419092b84f738a8e618305747d9fd6052b77566679a3c82ab2afad747d1dc29d4154f71b0a7c5706a81215cbc2f8f70b3a8161d3b6000c2b5582b1b8d7a4338a4351130687876c520d83946ac9c636b8c31f79e9386b30071708b1a3b8a5c8dc4993abe470dd8a97a861e0e6e66d129a084d27db48c0c48ca8ae3e0465afad4c38da774da2744a70f315b57a737d150924889c99c350f850285b02404a143a824d059da0b1e5cc7cb49a3b0b06bc97bd7d08e25f50bc314442674c56054866237c08cb0150f8fba42aadebbf306fe59ae3c77570cb9c7ae351d4f2c01263261a08111cfbe7add1b0e2a6d193bdcce54ef57826277fba1108a06bb932e9e46fef6316c5c9bf79a2fb9ceca920075d2d729e52c5e59681efc67fab12c130b1a7e5b35fd421952aae98da1e80e85fd9bdbe01b1e103004f207b789aca5ba63e3147f152a9a7c56400db128abcbff2f785a86522005eeae184774f779d47c2d64d764afd5699c1c42e8e283325cf2a5f7160a9a88141c6b9e614e404572f7b853742e8a7fde7db0979c270534aaa1bb2f24dcf18308b728d58f92ec7825152fc896f02f85f6db9d1ba9ca89b397c8112d40731a4545d5fc6ccb25286904a5b96215827eb65c8b48d5f4aff05bfc87664453d82f2710fafaefe537f12579f8fa863fdba923089b912037aaa59f24f031258f6c1418487fa342566482b1b4554218a48137fde8b72c467fb6fcc0a4ac1c08e8507c2b7097c951245786ebc87e6c4e46dc36f5e0bd8a318e51cea2e729e1e185b6d84c5db3818eb4d9921f8123a5ce32bc388a0080fd57cca6a31d4209b28253f9c7f8cfc50b17249f6afe6c831fb56d6232dffe8ccbf3388d8827d70d61063d590d19a312f5568bae06d16d11503748433778d6c69d74a36dbdf777b3101d38a7603206f2db245a9a1826cd0979c3e01fab8c4a6308d81b3943605167a3d98d457ade50bacf1ff07dc489d1382df5ca49dac8cef8e5ce59fb2a9f1ee479432a728db438382409bf377512dc8a7f6be99f49d03d7cb50a2f06d0645c7a1347a1b8aade084b6638d7c9c7f051877805817dc99cef6995fb39d306f4443d4c28736ba25e12eea9febe8fdb1dd7cc1462e3c0ab322caae32388b1bf762fd1c80b738c197ad78632103ac3ca29ecfd2c8f2d6b4d6aaa87bb168c4713e4fdeec717d884763b599e3897032fb9a8050053aba69dba568773ebd52668ab04952a82221a7da3b461ce72df0771c73122a5a8bd1030797c7ecd72cf7ff8d166adc0972cd7b51e9cc23af4b733d7e7f3534f4be24361f8c81e58dc136ca0fd20201656d0f14c5f3b99f2523a35b9889a74cb8fc8dc1588d5a8746f5261fd6ca3fd8cc4a8ac1a3be67ebe90f9c3035206e8187227bf4b9fcd0a2617d38d3237353e503dcf409f57f3a7c573134fd6f2f1d3ce8b08244505ecde78e7f9cfe28aa4f809c4e72cb5878836ff092ecb9d7594e11e6603b68c54dbd2375ff7b09df216564ee5f1ceda23a4561157a6f77fe794b0bd8714df8b7323ad023dcabd7a19decbbb1a884581925c6476aca2a52627d6fd1750812b4ca090b58b891ca3bdb5504a3804994f09741007664362fc0aa4907098929fe29831957c2f44c3a06d926f04f2b7b4cc24bea970918e96a4ca205d7b2ff1a9b104c5b52890703ded925ada218075c22be56cca4fa0934cae897027b6dfecc64b5391428481a560e7f2b0ac9aa9cbeb53497331d554ff2046c99971328f55d36ab33f46f23f6ba9b934b704b01514b702d2760e457542b863b9bfef9cde48de432bad12fd4f9e0e21a9b2d465003097ec4fa224266e26b148b74c199e64414699e03491ca221b13a3af7b268c7b237017ef97d77a160ba332b28529f4a3d11319c82b15912ad05cc76d81e710aa5166f98d6d8f0b9dfe5f234b4fca8dd024a343a029cfec516968aca3b64826edf5afd8b44468574684b67e1ca4312ca3539ead6b0aa4a17f507390e335a50de1e1ff5b3db3ef578053d570796bd0e2d398f403a175c35f40ad12080d790c243995b0b85e5f20bbab1e8f2d93925cf3b30f9a2a3d00277d3d0571b6e9eb4c54a00d230d7470caa20edac576854c8fc271307f81323be53bd883b96db076fa7f44a276436a83b93673295c8c0aa73a8c0d1a6d89227d6f682e558426b50cbbc1bec608fa2ca66719c648621fb09f0049a6ab90064d417b06da437c47d1a0398b81869e5a89280bd315258762b846380febd3d8a00a40441512efc74dc684bbc634902ddd6142c84c505a0d5a28a221294579aebdb4915842bfd972dde89fa34a3000fd0de02d4cac1ae41a77c30b0fc69be3003829391bc0053a18f50e90f380d508526e4e8b73fdb8395cae8bf1613a60034140109c9b433ab5f95ce8e6582d1c02772264bc993230e52942a5af109ace90f4192bf7c8c81d69a229b1c2a899e28d47675a14fe9e4c533c6f0a6666b988ddde11a3adb50a58b534af60f21b0f2292868b766463a0a257742b2b19846a558b6c69a501b75b70181fdf2d21b3e6401d7e604e4f28fcb72fc76867431307c0c245635878bfcd07b84576b0857cf6a2e2f0744b5ce8704f156e5707966d0cf3a897ac65ee67a1dc3bddf9f4f8f47074763ca4d398be9247935f7d36f0f09aed2b30c01f965d3352d7c0ca4c7c0f6688f4c6100cba154becbeb47ac0cf0219e2a98afdbb3dc4b98e13fe99af8a44f3b1b670a9d1be76c56dbe3cb857794e28b3991216532fcfe18cf12c31cb7316ea8eb3e70b9e42e21c304270a8993e1110e535fb9ae6ae0fa9bde1bbbdf8f79d56dfb2b54c183beada2f63fb151f3bde3b8221e71be48310f5293a1e9bd5dd1fa3ef569148f955a481a1f419b72c6db5d98b2e6117747904d371b38ef80bd00ed9069943677e992684e739826d7ce83d9052714b497b87c95f2731988f22d24f943495796706332a768e888e465a0e491c5dee9e829a679f3af2ae23168716ea5db0b893ab9a5e29791c7899aeef1de3259e0f85acfd0232d4af63684e446aa4eb3a67bc469d3fe29ad96f2202d60ad5b0c10aa8187ecca138a316b787a284f597c42c8b42948bdc2ac3bb969a6837ec06e8c3a5a01b29360ec9f5f05dcb4abda0f2b23d1e48c0a333749dbfd7a38e813936eecadc9ab7fac4705575fce11728890ab054b0aade53ce210bc74d73383889159247be5a132113cd16317738bab1df05147cd95a893e521016c21903ac8756ce6637aff6f7be20ba3acf58aeb2f1d6e36ec2c5035283df3256092d163b08c7fc28e4757e17b6dad29b22f718d4addb9fa3a7c15e60ea49dfc6c193ea31fa9a950b048196cf6bbb9195576f0f9d7a062724f80d476a99397c5645a1605798e5f27950105e7565b0b57579caa88b74d63ab0cfe679e6fc7547d2cbb7480a2234c3bafc0cfb90734bdae63a633fbc6bbc48da9969008b48eac51572d6b69bb02d6850a070833ad4f4e387c763bb3ac9304545e55ccc3edc804295a8d7c081bbefd6441cb0856c977b7b3e70bd05e42dd54b72a217bf32caf5d505206c59b74391260a912abd764a8cfcdc77237cfe5607984a0ced40282d34b62cd4b38495a666678feae61561b3f49cf450cab138695e5385dff28a68884a4237b7c5943ec6e06537afe262da67d1b8ac7ecc7264681432460a1877629cdb7047a0ce5d8228a7bea118a91559410793083dfa314f42757d59d3cbc05875f9e93f17c18d7c7d7942ad82533dc980dc25909e943802bc4c0c9bd8d67e54986fe04cd84e653db713d776c3e6af746e0ce4f5c426a8f9cc9828f7f54442f113539b06abc3b114d5e9c14cd6d21389a253d399e1e4cdaf30c3172f45b99531d6c2654085d0a5065e2bd38315331793e7e0283286e2d669fff6dec25cac162c77eb0fa914b9cd6a9327c68b03f65cae1dfbcb092764fed7c1f4c3b0ec368e6215c540f1a7159119c2f00b03b2ec4433f8b41e9b959190cc6f020cc2297b32c1c11ffe8273d278258a7e62cc34c175216af4138c54aea926720d5ef388de0af586811662fef1e3364791b02e4121834bff0b75e7d9c4c99de55a40abcf9eec65467d4ada38b4fbe80547b481b52956ec2b52ff4f914f11023d47cc41e15c5fda8515f070a1f136485a099b6bbe8dfd066e6190e5dd4e2cfd0d26380a7f0b559be9f189428a423abaed49eac6d0dbe27937a0138660152bfb24b6366c0a856447f3e908968e8754bc5bdf121e9466f272b6ee06f0c742be461b00228a22e800c921a97ef08307b2ede261ccd5b5dafb2d1a26ddabb515abdb743b40a7076a336860fe45d89d93f4ed2883135044ace909e6743434b821425c330eefe30931674b4cb7cd2c729ffde05ab03035c928f3d0242c150007c30d5faa2c6c094aa39422460afd4230e043c419552bf368445c2317ae85082f2b0e0e81d924d0443725678b84d9e86cd0ecca129cd866eae40826a8304011c97c182a73f34200d70eb1e39bdb6a81d159b304300873977e96f6456c1723c0f1a292358578396041be1f99ad08b18f22150e4e807dd3b3bd2d8d4ce7976ab5ce590e02505a6747a61009bc82fe684f358669fa4f9b1d5f01ecc1fe82d257ab01b203949088bdd1b0a706a30d16b2fb811eb6aef55fa7749239dcc390558b9e123d915ac94c96b0effa214b4281fd1f51f92280c4b7ea7b4e6f37ed1f29c7427c44e6192bceb3f71a2147cd7b11462e1bca59f3e3188eed526303d4a5089ecf2084ae9b28f83fe9db96ac25b4e718b72e66d011accf3586ef5cfde67042fcf899141ec713a09471011ae8a3c4d97c92590dcb480f885f4ac3dac5c266d2d7d4721a211dc3da079c141553a1626f3ed343697dc56d5f653bf04dd100b0111b187d08cb9bbf4cc8c04e777a7e917903552408cb11f741f15ddc18d4059fa0e7f47461b50bb73aadc6420e49797ae077f3c70f5b2f913630ce0b8a54a85a72f2eaa422c4093be79c66686d2a465ed95b7647e389468d4c20699e040e7c3328b5c3fd1485a4ee958d42ceea1ffa0054949bf4f5e1242718c33a96dfe9aa4d1b1137a417badf267254ae672c0f429a42879c8fa4f66c30a9172a3ff2cf9e62a85e28c26b1f4227f58471a01d8f3463eb59da056f4b653b8988163f09b111c29eaecd43fe21945c213c8d63a0f4373dd8ce0100229dd586b46acb9471a78580bf92f71745c105d5d03b66bb646433e9ebb07ce3b1a9be31943c0e8aa78b512056ede80724405f97266306fb527afccdad77322741a51d3e6ba861fada04c323d77fe400633d4cb4d97932ab28e108a25cbe7ef25a36fdd1b8be6835e2374fe76ca1ca36e402ce1b79850b0d6d1a0f2aa95f23a5e4142a65e9687220e8fa4c7501f49f16d872dd094c772566e72bd64f88de4276a98512befa3d9fd6415837cc2ef832f7f533406616bfac7f60c61ecc8270551a8f74477b0052788dfd6b45e6e5514616731084fd6b0edaa7c71fac14f3e2d06b4ce5572d1f9024baf0f8c6fe3e8eeff98522cf35e4e329dcd60270313688f4170a2db8f3816b33e0b220d868bbceb61a852bd497554a6308bd27454f9331e6d30dfc8fb6801d5ae4dee8c26a8016225db8573c05afe7d07fa770240fd434a530a5c1d643f2f5f80019ea43fc9a7015610e7364a057a5b8435607904f4a402ba3d52414a530e782b997cfa4cc905639c88fe6f8be6d50616ffe89844abb08f38b0a6d58a5ce73b7ae9fd3a70be945cdb3427797d1f34ad12e6098c4bfe541a274f6c56d093940a1d4b5af1c80de50344867b5536920d42001bc2d15e3a492a3bfa48c96511e6e47df06e2e079a9478dc4b84557667a80d54e205baf050d74ce16ae2a9ef8e10daf29c1c7bff4aad31145952d18d8647e791f6a3952537308b1654c70e4f2005e4f3608ef06d728bab801b6b951855aafc57b97600b1145b0730963346617a20b79c78131d53ad94eb2a99947add230f38d681bbbbe4dba1ea483b5c1c7d71444b06a44e51b87b354468c65c400e4703b451bfddc0d6fd3b103fd6a9bd2546d60b33a7022ec04f0f6c00aaa697d25c487b6699781c6847d75a36481e699b5f1fc95a4b9cfceaad7bdba5d5794d1f9399cd2335c9aa1e6a0798ac0b193b1ac0066f87148c8fc3f425d5d2c287cae63e10125cc4c9f2f782c9bae29f31b8f994b2924cf7dfa0e1c46246cfe622db33acf35053f11d8383f3658c3742aba5280f63610272d07d4509668de49028ce18cf1d963e9cd384929d14ff18b9a4562494050d45df5c473f05196631640737e8de11ed804ab53fd7cd8dbb8460195c9c95f6684583359d613c6abd5faea8cb9e222806fd187228b71e7ed72203d24013fd88b1b2fff2254f771180d6262f65615e5623e1b62cc7f56ab461fe35145744cde393b095831deebc1294d3fc00e1cf9186e43c470160d0a89c43918b21120a7744b503e96a6bb993b56635598223c979589f714293d469d87a92dba9f5599da4f293224014b7b3c5143d966d7c709456cf98974ad3dff7e499e7f1fb5a46ad45c1201a6206585ffa95825558bbeceb809ba0a45d732af5aa476bd5a1c236de615dd6ae3da0420d1c7a3e3788a1c275a4952271116e5baeb23d7e50f62976e7cc759bdf2a9272368914f055acb99a8fbb7321597b621acd92f3bb329b96b83132b0c2af68a7b8a4e9b54c68c8699019deca588ecd58dab4e89b99f0b2ef191b171080ad828a39a1545a5f51d0121d57056544a71904c355609a0a7e2547d4d222c84c0f11a4d6bbab3ea8f9e0d28c2442554ec55266027245c6a54a50e8de32ffec28b397b08037b21db338af193a207a3a9cd9d38e2820d17e7cf8992e40f985fb2d3d3816e15cec54bd5fab19670930a1630cf8adb9685ea3705380401c753d8d08c2b96800e9badd11f1e32220893456181d9747a5d59cb09c7c30e79804055ae0e1f4d8bf8629d7304ffb77c304c50f0881681c26ce5a556ae7e7d4009d272d5cc23e858900c74b97257553fbc5cb1a4f25e3af9e352e651e9cb15f53dc42e0423380a3d8b9f21f83e332e0b5a6b2bf15341a46ffe0f28f4d7402b3d63103d271a8c984534515c45f83a1f44afb0ab5774c6470835e3c249b08d5d89deb192d4b7160b1b012d73ab2f537b35d8e04ac47bb4dc16f4c1466d3f65e020b86e37db0dfea08cd8156bc2f6351dac94cc5ac64cb23c95a2d7dab03ed7f24b6e134eb064bbe7d5256bad6bf47d323020d8ca1abd749c7474ad107bcc6e980f6ad2745c571c050d930d284a1e31d73d9795100ff91aecfe36fa97118997d74766084a4f60fd6a12baac86d207eb8b0aebaf651da3ba1f3ed59d147fbe05c6652ab6aae4c9faec1c0862f16262a48807c52f18535ac57d8a887dd94424b17e8183719eea264d0568810bfb9434e228d523b835f83029be8c08b51f6e3fb79c5db0015bd22f6bf3c975e16adc1294a4acb92f2fd3b78cd4ac2917ecfefc10e05752f8173abad14f564509ea88d03e320c93e8469ff23a7a039caeecf5a3e0ef586b1d3cda9c27e0c144b9a703474e464564af4bf44efdb033fc031d8c5d95a73c342ceda365c1a04238d348922be39c523c06a2b6ee4ed9ee153aa4e06e419698118ccc7d9d2ce37a6badafaacc1d94184549cd64e22f51d0fc10a06674a59fd9e37e2104b00fafba7a31945902fb5978a899a8c27a0fb75e3bc697dd313a09f2a5ee635ce02006a898a199b8b02a218783efcc20f4bfe309307280129437ce88d800f35b3830ffa13d0a22e04cc9ffe6eeaf94da8657e8c10be3810c86a7273325b2c406147f47a03a052461bd95f50b6ad1ba4838084fa8f9d8f85d2ac42b55f8cf9d56bfe938a4c3635addf563f772c032493ead3ed5351c7748caeb85d5299145c89667cc8941774ca199049240c223dbbc6a1daeab7d6697004395286b6c699870e6f81556a426b4e25307921cbf3831870bd9b561a834bcd317db4806901f01e53c0597dd7f242fabde01715d3b4528bfe2daa252bc169554a3ab83547e83ec25c45afcb77cdac7141ca27929b6b097037b8303d43e24790ce66dc7ef895f448078f835d854143c8388b0951ba9725ee1f92fe89812cd92971c0993a0dd75c688f4e85ed92eabb2b61936e77471c17cda65fc46a9d32f40aa89f28e5e7967e2bf4c317e827b71c48ae71365e50dd3feaf710b839a26208bdfd1e9de2e0110ee47d9893bd1a8efabf414361619b25cbe867c72cc95b9140705730b6beacaf01100a9967a8c5c2922ec0381bdaa63fc6a9ed8429277dc939d9deddc7c0854e0a1ff8a0fe21ec315ea2e5a2572c832fdd7cf9f38e88901696695ea8fbf1dbd2248b86dc778d4ebf6344246a7757ed561fb8092313728021c0c54da7a44a07408518a8bae946d491a7a4e51a666a79e7ad42d711853567aa5189ec2606e7a411ba7150e463a121f945d69bf412330d238c81e6d3c9a7455c4c2498fe75e9958b49eff2ebaf80a67addf7f2932b14b64f8c57fcebb59b27e6bfcf369b3d55c7c6b3c808f0b2b4dcdcec537c1d264419b3fccc16970faa0ea38305aa958ccc9226f165d84505dc1709074e25c1b627c75e31fbf87f166f481eed922a5e14796ee81084154a64aad8639ec581c5725b5e67c44966d01ca1558070763835a79713c363e743004a5a6dcdf146a9ef9598288eabd445e1e5bd2b9c30e871b853b178be3b169804da29118487952c21e8bc19f2c322ba2e0c6b5ac9278074207903351f4026dda8891ac80e5aa839982ec622303c863471484134e598e1497cb0475216ef590f17e3adf30e13235ba0660767bf375ec31488a681dae5268596afbd3f7ff97922c5f963b411ee9c10833d4b3efa1129a0cca1ddac26b1b9dcdd65707b9743d936b82338644453652e18c38bebcd255cbbf4ebeb4ff94d5b752014c09be06a1ba971e63cac7d1a16e4834f7dec28b9a375241d7b11442ba918a37dfa5ad16f98bb37f5423a7126d37085c072839fc9767e9370a9ea63254a5eb484f5308ceed47b25aef19a73d978aad620b217ce2b3089a9c30e4f2394f0cadb0c90687fb4a7b7b7944b0839a5ebba80aef91ed491a725d6f55e016e8bc8b71c2d5109bfa0ce809bae129c9fd97dd1b02a01dec5caf6c9c65f0a1066d94b6c9200b9b523b40b2bec83b16a676451f8e64b14d5c58b2162767686ca39f3232c569bce5b23c59e25f92b42b228e0394acdecbb1bc97e1af980d17b5b469d6cf374820a4908ddb46667d6447df144edab32ee1551966e889725eb2cbab10d2056e3cb2c0bfd21d19a8c153ec3c423d320d2553a0cc910f3a6c4927193fe05b2c3a3290b64fbb6a7d89ad0ef06a98231c7d643b0a40e30d7592423b3bbf1dc1bd06144d47b0605447eea6e6fa803ae4f61c99182063185224939624c3ed36058784ed8efdb44b0612288e9f4f28d19bac91d4b03c7121b7d746159ec76b120846b43c59782ffde3669b6714a64229ebc5bdbd8a1a5977fb31a0aeb6053aee2ad9827298009e2c1edac225f7af2d388f0175eaa0f064cf1e77f6700ca8dd9bf2263993a7f0268c41930842b189e150bb84a8f1a5c1dc107adf41658eeae444696a5b0cd44cc31d77e891899f112ade53dd821059b87ad9dd10d6ce2cf85dc3daa67998571e4a00db73d1cde4d2a6323d86c3ec92d1c42ce0c9d7b3d577ce15f644a9761e3cc6a1fd8cb21e70efb79316beb5a86fb0a360d9dfa6ab4fdeba56c6b017c68a6500e6c9e4a08693703fffa039aab936d9737ac17ebdaa01cd162cf38b2a77fd6909269c86bd8f8eaf5fe65b166da2f3287a09000b64ba89a4e3aae3c2989001f09b9e2cdfe230cbdf290c3f9f2d77ab15f8963f3c7730bd77af64c86cc3377bc8f867c3ef5b490deced907c80914665b69e5c41cc71cbb6e9b8c5fdb4b081f310778d6003f2d963c37671d466ca9392bcc7541f2dc6d11248bb32ac54f80823bb2073d8c2b6f3c9a87343d1776888a88fdf3734ad5646ec34c5dc3b63f61690e96c6661a57e5e8d63bcb2e32165287e0d1cce9253761a78622013c362a7092470b30b4c30caec0aa1fd0b994190e9448a78e0b59143bbc25c70c007e2d514de87945009c0b671e6cc68654d91a7a1ae2f2164daea89d38e2a8de3621e9f00509823c0dd84844cd77a2a18ab6422d7ad643a8a83d4954c742dd5ee1737c6d13cb36432ea5a3241de92c90e0781187bae26082b3b0068545f2de246ebc7a9c1d6de1906ccde91e859b25dca0db801f105cfc60844dc30fc79c4c60e15be52a32d2beffb9215f783ffb10d306d0be5471a0d55bbe7e6a7565066fa5e01016929ce2e99a58f35b7672383d63c49ff3ecd306df5082125204e5eff33db427fdd70c642678ac7ff07e6aef60d68784642bf11b5fc55db83232c38241fd9672cf51aabe920b14aef9e67fabacd1f2ad5e355d169d09e5f03d04816bd11e30278a97619e7eaf5c351fac01ba25d2ca716d3dcb540ff0ff7f27626800af4c088d731ee6023f8b69f02c8e438255f52ebdba6cd49decb4ef98362e3b53ba8f3bd1d5a80932ff2cdb8fe5f55926e6e1303689faa589b07be2c178c2136250160e2410a76d5b82ca2b967bb29220c3f51c0a451fd0545f741fb9a7ea6302cbc3469a506145f2ba5731fe7f2e82ff64981ddc084e73e803bf884ad9f53d9bfc994a8fb461cec74b013e4c6eeffc61f24290d7dc93ca92ba10256c9b1d18a8c839f9b8968d528de6c905dd1d861819ed0f83baa51071958308022b4a9ad229b63020a8237df2b74430be8a23306ad7305ad0af7e5a9a45bc0ff477d584cd6b384be401e26f2e9ee05c5e85473b260211b9e59e9666377d0737f20a4007d82c2cfded3ee2fd09add900c80bdcff6fb655d8d287cdf4020bafe1571196ee119b72fa982ed356c625fa41155cb215df755b42fea9c949abdd00c771dd6a78180de95a03903ca7899979cd1ee2ce3725da2f9fb6f2c63d5a82137a94260e577dbd03d1750c4920a5dcde2a8bcb32897753f798fab6e7bf2957202b0049bbc10d64f261b9b3f4514d0780335d3663541a258647e4aa64d507987aa2a7c96b2fa55f04d04e02d54111083062204b406003460fe7bfc9dbbc760ba87ea064d49f4b78f8be23aec0d0af87db368bed1eae58e0676980218f7f1b12b33ff51b6e007726f7256da1dc4cd69ecaa2a39a8a8e28b72ed1b38db96c9be4ad424c7726a9db7bd88c491108ac4c747016928dac8d43e02e630b85d6a173e818643129df42acf50241f09e5388822559f2bdfc5042716459108fedb2c10c92896cc1c6b1449a11ac64b8d12479188279c2535895561cace29a5395df80565b1620a34296ec4397b889022153b2dd2a7a616096b190c5094d5229557e51601d869148de6c51b810b652435c2f0c062c1106d9160f26d913c743037f50cd58f1f14ce62aa938ff23e006f48bf3cd6b9452e4d17c2fff999e58642534048c3a2096576ca26617e62df3f9e29f30a75014d39c6bb8c3e2b198649bce01e94d7aee2f77614da3ae18e6e0fa446351e56c56ffa5a8841418453f090ba45841a9c0aead2af24081277aa34fdc41a9c9a465940a4a68f760d4e0d938c9fcc498fd7e5787e4ec5511e0a8cd3b3e95b962986e4234f51e166cdd35b1833847c24a6a2a2b4573f27d72023bce132e599d36ef2d12ec95836c0297bb437424b7d8562cbf1c85c381e8aac400c500f72b6cf49ab3c2c94f08260cda74ce8569c4f43dca3aacd92d391c9054aab30e942103e2e57986848033041e69db1b6a161761777cc4e9ff688740cd195beb08f36c3afc1304cfb1ea703af97614a58091aca8831192c1f982ccc9aed0f4230345414826c853245cd686009bac9d97744678eb74b699f2cdf087d1ad25e5536162a6709e26f25bc8fe4c31c351b5c0da2a8cb70c9683ff115a05b678c09fd690e685e2e0f0dba2c7e9ef41e9cd8d49e9287a17b9f807a19e4839ec671b76025e3f1cfc823557d9ded5093d44b081eaf279f79d81546677836f4328de709c9b5c945d7f41868f3b05bcfe9ce24b3d9f90174a500a9211c4448f0b273a80da40a6c1caf62dfb85d0f459e77132187004731e371d4c523cbd9697be10f3de31f1c173b99c0344f19bc6cd267959bb9aae5f1c08e22ed3f3b214c400d0780f8b44c082d7ffd8aa5a215b99d2623873d2ebf83524e08fee5fca05ba12350ce571452e7f353209344a10f42cc272da91fbc062870ff24d06346fb45b38c4b491d38aa0dacf2487f763e9fef9b40134277991cea57bbd4beef7dfbdfaf34d27fb510e876beb124f5f464ec776bcc4644fd6b12bfb5fb3bc4d3ba48fbc780be5cce06e60128bf5f6ffb887ebad111f4f140901175cd27172229ac92eb9abef76dd83b7027468fa86b5a1c82dfca18caef500da3d8819a2f2d409e4252871290b0764207c49bc967414eda968035c704fb8413382328c11a2afe2b8790cd885f84ef98dccb5c0289450058818eb10018db74703173328c34c8ebd1cc855cb8719f9457e8701054a1f0157a2042bcd4c8256982c693bcb4b0487f423870835bb9e2ee64414d6016dca6c5c2e9aa0bc1b2ee61fd1ca67ebf4004b3aaedff452739f95fcdd0ce24a2a04f968f3ba095a42f43616d1b00337def7462318b460e01bf2cba1619cde467d241412243ed08a7c66c0fdaeb09f403899ba86d382676a4372db291a6921f01e6177c5dbc812ab8afa84ae2635a93068b3c196605a47ecd1be01d3e120625e134db19d980ead0ceb007e022003aac00ff437f1c260bc59eb4018d56c8801faeca97da1800d05721576b5806ba26704c624232227a38ab43cfea46c5fb2e7d38ec853e4e962d19504c090325321e3b5e878364d0e6c57b46fb1a055f62a654f655831db10d24f73c8a3f0cba33771a241c70ac09f499d98fc55b42adc274a9ddd655791a051803439f8d1be5f67a26cd82b913b9fdafc1eae6c46d5b5c2d5731dc5c38088aa7969b081d9e9499f3391a674845cdfdd061eccb902bd0bb89fd2a3b94415a1995e6e93ce9886a6d6cdff69c9ef15231bb5ae77dfe8ff68e34a9d1f50eda2e2cb58cb41a042fa21cb14a912b27394a61f1dea17300e348842c94b292d4d6d6a2009852090407d5201b0349b8de5a0ba41be266ddea1eb5be08c14c403a3f1cc8479d685ad0669bc3ea492d88c9ba7e5abd95c124bb289d392d1d0e22b2fbe447024920c58bb9ca262b42f579e8c8b10a2901f08b8152aeb03c67037d5617d3ecf736f194cb94223abfe4a39a05f412d565c98730e3a96832c5a38998e6e92d3e893e6705d44bf15d67e42b4af9438d1050a8577792d072da33d9b4a4757e557b00d45affeeccd646e9122071ae24644c521e59f126b22424c4b0e51ed19250cf1897bbbcd23976f09621860f3d1f7f2cec489608d3231691275524790d4382a6a984881a225b156d0ef082023dbc05097499eb11fd041c8255daa4e5c684ac15391c4ca318a53b1825e92aeef3681e00ac25017d3942c80ba87d1c7a87192b67464263a66226fd8e3c093474314e1e1e4276e9855c735f7491999089812512d63e377044aa777a344577bf24975ce0cdfcd1357daa950c3dd185068064f1847820975dc278428427339bf4e561594d80e920a4cc4f68ede92754763fa1235e6a1ec83692a14c5425fc7d0b943d58b995a86bdc3ab9f21379cd90b314f117bbcbe91fc6119fadec87e54d7b17719657b8454315d6d0fa5ca2597e867bb36d95b3a4cc7115d065ca637a30a729f345b9187de96a7087b2779498f0b4de662d63a8dad5390409aab40225a56fc407726292f52e10f088ff4c4fa5160c5d58d14d18449cec5dc05d73c3b26e82ecc68ddfae5d52aab75921cfdbc9f122d658163c44fd36a3ba09a47280c5deaa03cf87d76884463594c9815afcdc26e8d811a5295e85ee640fe657d90d3de42c3af551e9e900d31727d07e5a250c588beae678632b7547782fd826a4f1a1775a34cfd570e6ef702966a6c95416e5511f6068250e593f3501619a9e1b98ae93ddbac859532490ad8c6c9aff58a8c3b18f1a785f1d839f574d83a34d89ff261b86015a63f726bf6a1af8d2b90582e5561d5d7aeaa3b7b6bde3da3b573112af1be89798834f01fbdc57fc0460324a7263c6865866a663df8c4eebc131bda4dc2c9e1db69ed9a8f5945b96b1a634b00382e5be55017f4e1f2be58f0b11ca16c975cd77fc3a509f533a9f367f7d7a89f38abad7ffb8068377f6d7de5b32341e70cca58074f79333d7ca183d6fbba4e104bc972f0889927d91b8d05d79eefd702a67d81ba4d77f16155d982ffbdec5bf147a0738d8c7a33a9dc2e2f990c17c5e969ad2dfd379045724ece1dd19e4e040dda84a91c23ec08b1e736a0fbeb51255de13dee489bbb3ceeff182b3ebb12e20f727832405e19ccbf941156c2837442da0169c3c5076f82d6fb37879404e42ead312fb680b2b28b8483b4173aea96b1f96f9a16a3e605f1eba0490d7b955ec2f45ee092205422a195d1b181d0e23cbc784ac82efffa9643bee785c10a02d9efe7866f352d9d8c571568c14c043076aaaa0d2b0427c56b03733c8c6643fd1fa248546a38a4a1ff5bc00c3434b3916a127649310b45267d0f9e5f0d8be8a49fad8f65380e1ce6c1c4bc6db2e9324fd177e0ddf9e61e50ee84ca5e77d4aee6724232a949318dbbac9bd08d440be089ce668b5cfa7a3c1791c504e373142d9e713e0fd0db36cc60cff16d54567d97c3e43495ce04ec108a15d861bd71548f733d116e067f2d58948febfd33480d8af355dd8f27c3142c02116a75984be60d714916cac3b803acedbfc745803e3003a6a47a59dccc1cba5f02dbce15fb85ea18070b9548c562e441615e671b079ab809a1a055468d270ea36c62e5c8a52f9dec54303ded7ddcfccd016316aa7abf0ccd6a3c6a90c80b70e35e64fdfb7adff2c7bee3285af69844ef025b7a902665116fbc92d2457ad3134f9a0ba14e2a5c9a756043784c51d44454d70eaa8152e0f0146ea8f8f217f59f13189251e4e5931fa49a5414d0c32e7eb04d8f8998a34aa900647f448e738c761dd62f50368209f2be92b4f431780d8b8fa8e7caf8dc9282d0ff258afacd28806018814d7c039335b17bd4635196fe0ffb9e69575a7bc41508236558d26f72c8c7710951666c8a68f41a52024fe988a60820d31b8c9749a6ab7be90bd10b8ed746e47f96acde9e51002d72dbb8493a924d40d052bc4d46864c7046332a1e739d8e2cd542fd04acecfd9996ac1ae1b03474252fafad264162229cc18cdcafa21f71332e3af81c84ed2cca066ab2940842173da261c1508ad2cba8b865879397e6778420348d98860cf95049e563e96f97fa353e010f3a4db17558c3e814484d6a9f84beaa5a561ab3b1f8a62d5b90a6d8dc0c21000d520068a69a6221b85d0d1032c08a975b2a3a916841e7597432a887b559c9fe593fd10fd05188db9c9efa2333e0078593a2c0ceab628b11f1a1f141734c6c7fe4a1728bce2258346adac5f2c7c1cea9e1fc5f129fa7dd625e3656bed0be21d09cd717e66f68e9561155afa0aaf86487454c2b82634a31b0521f5a17a0cc492e2b517ccb59eb23de14c294a8a9d02aec33321f3c8f6fea2d7b5be04f70464989720fe333f6dfaf9b578a8f14eff8f6cdb3add14e28e6f39c5b8db9e1bb20937ba1c8b6584fd15d67da1ee47a6ff740287d997f69579d0c3d3faba10887f4568558ead1a4b8dce46862a90d2998d6e7753e97d5f87fe8191c351f63757c9f8a834fcef16f27fa71b90b21702cdb6af4cd224387497fda704f57e2f72b834f957da8b2cb3406930a9597b1b14e2a6c8b866112de80464b47f80faa6d75f1626e24597b6a9002ccc2b5f266cd1306286c92938ea05abc6a7af67d425b9c6943659c3004236f6d34c00e5be09cf9d2f1bc923aa4937d42a08261d31f9f0b5d4dd4c5354c86f4329415cda08e03b95cfc82b0186fac6a7a8fc21a5b75cf02bfbd67218e5551059f0f89e7ba2a299557380e9368c03d4873a7c9d21a9faccc94605551d6165359578a01fbd0162b30fcad435e2e597d833da0f0dcb9b21972453e9f4755c87dc32af5d800b09ec383aa2e69edbe0ac6c1af1713e3153a59ef159f47b85f2edc9a4aa43eb949533123aa4c2aa3f5440f1ead6c8883836213eea616abf929061b5f6be8e3aa1144b3b18ddc7248a022390ca24dff59e04c14215d024c6a9daa8a675618a95d3dc64cbbcb7c6ecad0976a0d8a2bfcb05d15a4ce90117d55ba91342b1f402c82555f3de4ce875ac18a77a698f44452c96a2071c5eec32e2a561b25c0f037f2d9e366bec44dab5cacf5a8972e78d57627ec3c1558b674be62d4ddd4160bf59764717ea560b9e8d9377698fe3dfdce2bc7c977f46b90f7bbdff8cd16a18102e3304c39c209e4ff437b2af0075a92c95365e0da66b59c64360733302761a610834d180e8c200ef62780f64e91cf769c4f698c3dd41e89fb87912d3368b3e934887e4a0766619e48915e2aaa5f39ee4267b43ef5796279c39641b0014a01cc74e4d0b9803dcdcc2ab7c5751607df6b53695fc02d052a09271ad4bcbc89477c17de2a62c432b659df1436e290ff31b45282b49793bc250c09ad2fa7464a6e2fd4aa97df2f8f231c3a7a77d4e047ebfa955ff4ba8326ee22c0eda8c82e51e7a9312f88764443b1dcdd9746d4afe9408f722ca86a3de5c092caf515015dfd71661541751f6748b66fa12fa57bedc777a053ca920ab324c1740551f3fbf6944865c19aec0764729929aa33f8d0778ba5f7991a27f29ed43b0acd820e86052213ed106eb6f3b42128e7ae9adeb8a045683e72d18c60f2c79d4a215c678198896fd97388eed8bb6fb328c57a8b248d3d3e51f1587662653d002a617b5f12499d0b447c0d1b8fbc2f64b2685fd7976425e77a0f97cff98e3d1a8da1d503ad5034343fd3e57ab39f5c39abbed63e27daeebd5b6e2989a0ad93242a275e56a448626f3f8fd696d83ab9debd0e0e51da1fdbc1200738dceb2e637e29b93ef7866d5eb8e3a1f4ed72cda2dcd26cee3afcc2de4c541681df50c326e316e0c9f71d4ec70ccc5571e369227accea19dfcb8f8bf5f4dd4a58ed8189e7c612a221d845c26236fb448e8bcf74bc6c3acdc2292a3f552e17de9034bbf54fd01ee8cca614d2b75b4a7881ec40754ea8ec387b61a84acaf90171ffdd399d7a8f47f85f5b3d2920ffb425b883484a1a18d338fffbebd342158c8a3b769e12d1db22c4363534e39724b26cc9e517b0b14f599d11b6e34240ff34bb265ab9d49b29995c164eaa07023dd3e090df3362b240cc1388c76862c242200ce9d6176e4952f3582e2c29944b554271c3f7db36c3ca4ff5aca6b8f459bf03073281e47ae6050f9f07439b969e6cab2d99c2f98dfd186ac9757cd733f46b8791f53cde4d15eaa6d3c3ad8c3f97fc8e58233bcc94a56728664f635e4f8802adabb1b14f0f9eb54709446ee708677442ab06e88c353d97133d7c38978edbd6d485a02a1b52adfa38a05111c8823af5007ef51d1c2c0b5a89caf8721e2e49640bfd49d39bcf299e10c8d430908e2c43b09563b61e8d2f3c3cc86a062b625e107204e6edc0e09b3df0fa8500230fd083e8d87ab6b61df4bc5912f7654eabe0f2e0e0060196db58f00a8ec27e5eec271fa830fe2074aeb2c483b1207c42ec43f4aa37fb8db408a5483649c5901faaa47adb50ce10215ff6a30db5f6fc5a2b6bfa9ee6baba27c6b175a12522a971b3b21f92095ad2ecd9539c19feffc26af14024809866ca4d96ba2b0608908b7b076e487286012bdfc82d4e9a04fdc8fda09eb51b3ad68a8d641209dfcbf99d8b95d5635c72c57685dfd8a649d1c10173222de4c577bb8a60e2f542cbb1c099f721e307439401ba308c33985faf940cc4254fc037dd8cd82c797092543d1e64ab89b1035b212fdbb5319345508f4687417d27775b0aea3201db8bca0164d34826cfafd18bcfc00200155fd54b2086f5f61b808036af08c332b038ac28c3363fd5971b0528f13a7a610b250f345360b4313bc4d109205907317faa9eec0e869ed23b5f5af6e757ca751ddd3f5388ae3408036e1731a2cae84b8aeef04c7412cea1b643ad925fce2b326c69ca82fe831675c932ae8f9c4ac704d404e3d5939a39d49e1d63003852b4a97e13b73ebdd6a1d5e7f8e8d7618ce996a8da3938ae8ca22541320e13a3dee589fcfa6dd22d5d177f85a7488530210f17ea54b016c3867349d7d529a82e3861d694813a3a33f0018b135246764ced766071c79acee5eb1d53ccd4c8b3ea6a93219561fd956d6277a92347e39f1905e155a0bafa5829828749bd296d7c11aebfc640bbe1376283b1a2e2cf26a730fda9d48af4df4e2a324b1bc4112a8ffff80e4632ec2f90fe69d714b7f877e84d2177e9ad56a7cb72decbf8d2e142df8ab700094127af686c738e39d5096ad35bce8555c4c0aa8f51b4feea59ce07b837a282cb10b9e814110fb599e10b794997c28cf7cefc0ea934a9af0d33bd02f689f32a010f79b7c0fcf569cebe9cb6424519c7b6a74ee649a7182e7ec14c9a84843ad2d9e42fc29c3e38267b49305d50db4628fa9c3bb89ee4cfb1771995cd5d35f7fe1af64e20bc5a0b67df917622f8c08dc7e239f01a477d4b94c722f02d0677ced8850bc0ab651ab1e2f0adfbc0c99ca286337731c4e8bc27125e0bae73ddeaf9b743ee60ce4044b14429dae190344a12781201c55a574040a879d86178c35f6c4814bbb36937a5d03279c073db3eb84f64239e34b3b1f1cb977f248feade8549ddadd988d0037c51eb99a6df3917278d00d453242fb4b4927898fd82a8edc52d5cc5fd422c3425667172a12143d2e95f5368f24c89dc7767ba4243d12c5213ead41466a919490703ae7e3bcdb6d4319ef8e1351382a5d6f7267edb0b78d8c5bfd298500ebd69be2aac769f01175db270d5c7e4f53840576f20e829a1620f809c981c8b40d3a11a41da98810b8033ed80c20c99578f9013321ad7306401c930ba681d1f7d0b2c1b85bcac3c7ddd2694a059fcd03b1e7acda90c7541558ded9321e23d57e4f0352942ad6a50960abb1a5b87d212214d4d0e5c61fe1395cf2bd0642718e1afc15d5874eb3248350d187e6d50e9f43319328c2026aec57f463af066493b1a91bb300440bb282de13cb61854cd8a9973f33622fddf6d910188ac0c6f2fb68396832ae2db715cb3313f02e2c9a2292d50aa26f514971c40cd0a79892209d15034431a544b95c2159f746c6fac104e298e8cc843acd06ae971220415d2f986ce21b47417cb31c4563e6ad447f3eb184d564425f1971a666a3addc6d29e63fd2aae2a3bdf56fe6e174fbbf08ff5a0d80c5a364e5a06d304bb4048169a241ec19a3111c5dacc32d4fdba6d2e5841ea41d7b04a412a1473882772a02e0101a64ca7feb157d9509e4345d668d7b5e68981efed3869c3d1a0358105c864f837411af60355c48966ce3ad4c4fdc9b74fcbc9fcfce4cdb0d3cfa4a961a08a864acaf1aca1805d7a38f1bf8d20962a5b5637d416ee90a5714a49e1b160729c66c8500f51e5de1f296c9c4a28aaecef0eaab0ddfbb6db085f93f98572a7dd7cd07726ac3880fd86c9038ff2b3833147d64154efc2bcf64b506cec67ad31c127d0510d7891b0896519c15b66219efe0d3a04503bfe32f72fd44e631dd0f0a3bbec4a1661fce9fd69957724a8f83ed12c19a2ee99329883c34b9a114a4ab095f67269d4a26266598679ec5c26d32c12001802eccdc3529f4a6e62e61c6733c27913cd2270985729622c4504022df4bfe3b18ed8ca5cfb2d0d982e0547a844f923fc1775e1ed8155f76078c758cdaed2f94d28f3827d9454c4b258e22933b6c7ca42847a2f2357052511a95adc30eb1a94a9176998496f6bb43ec41491f4fd5ffe18ceba5fdc96ce2e1c4d0a534f3ea025beae02f5752b2018dee446aa18c8aed022a3cd7d2464b47dfdd6a570f9c7129404009ad3d1fc9c80fe9e3f5851f883d9d1fba4d9dbafca32bdd403ac934556998c922678e72f75dc5a3914c5772a67854c7c4a58f3d9919c694b01b09690586f8659aee3a5ee2ca746f81745514fe45602b4a7061829e1a585bcc74d3c1ba22c7bbabd22a0eab12aef2634457677095076affdadf0efd2c6d740d1ff98e160634fc2ac57d4d36cb7581f8e11540d0cf708758499f59a1ae8071b17a9e0e9b38a3af42b374f4d5af0dce921419518f7d4a71245b3be071627aa4f5c51befb3b816a9cd73470f12354f521107916c5551107e1ff6b1f1be1bbac0df4133590c6ef8a62575ec6de25eebe11275ad31bd170e6aeae31d146da6d9ed381020eed44d6d46e8b39cfd248e12310271843a7cd6ba851bbc95f5445a93c0efb1f5a84482628df852d5ff653a464960036c75fe4b48575c571c08df1a381670013f11b1377f5eff5cb92af2d4b668a55cc054b8d434efa2922c16534d3065889e887d3271dc51fbeddf6484c79997f5990abd919d7898bca14f8e6e4b9fb544a3a6e81ad368d223d5b8dd8852bd04ca394d3d08dacb922743898bef8f34038983d56461b64c417262b0afb8b444678de8f1f9c97213e483c26b6a29ef4a3d8dbfd0b576e1c2118ddd1866b7cd274d91817150a46eebe04c610051efb08dcb41bb59f594fa0fa60c72f44ccae40e6777120c1cfe924147fb9f11b4e90e0cc01b126a1001183e318628d9da3b2c7ab59642337af392421baf62e9f616ae435696dcb9f7aaf713e9135f2cb6f3b776e8aeda04395105f8895ea3942a8a6116a79311176a92d71b065f268008de3c668a3b02e85133c337fbe826ccbd639c4bfd837659392c1cc8bf4247a1f49706e8eebf499dff3cbd8ea8df2bfcf6519a5c91459f0943989f79d94b0919f8c8577cc45e59e9c21f9a832f84e9fabe75025c2e25dd9f33351e5b48e8016390cf782939206a49503f9abe0b966d43f48348f3616e6738205fb6ecd4009afb08a4ef09dc60eef6b1817a8a63258302404498114e2aad90ac57126a25254c4a57fe3f65c6a1cb51655dac3d8da2b3438e56eb2db8ee70abbe99df0abe3f048ef55e04388de554b3e7ab7eadef4ce64325327b1d8665e31bcc96d0ade4e2bac0ec5cd453828ece7fac487cb268f46050e751316c11feed77454c6de4f2379857340a6010ade2cbae80285938caeebf740826959f2d52ca6ea6413482cea21cc285376e4b7c489002f2470b0f56a36ab2e85d61109e3c0a31bd88b5b9277e74cf97ee28fe60585449d1fb93a45ad2bbac8b83d6b759fefaaa5f0d4d816072eef61059a9d1d2e2721151b022487650a1b82442295a731515d93d0352a319215759405bf087c55227be83dc8c055a2d2337eaecdc5bfc41c91111cb51fd7d6a12bb37fda03f14851f86c071fba834b71e96e37f339d50ae6f46e519b6fede34fa19cf222b0e58819cc1dda37fe913db1b30f90e3ed032dee325271156c108dfc1b683bef9a9a082d168b044dd775c5d50dfa80c6a506d32306bbc95e9897a95a40c7a883bbca75c2ccb0053867b31b24734a5c4a741d37bd96caac2b529875d70934558cd738d5990f2f099efc3fe5351614c686aa18342e0d741fc1a8182b09eaa37fab8ad4469c0792b6615922e4e69590c4ec03405bf3975cd6e5d6069399bd37234d8e031fa2c216202e6edfc269a51fa0bd279fbdc6b75644b0894c69b5a3ae3c6bf53fbf39fd2e88cdc1ee5b4431192a5f04d7f803fc40c1c5d5daf76fa96946f4ad1a57a1b234c8a73813bb048597e9ad4a22e3cb8cdce746e5a408176888faa027d8cf8e9843cb72cf5effe5122c69927c882670a18dc26113426bc45dab9160ed669c7618869696cce6b1769988ed050939b66a94b0fc490313f09f21f54c5398c50640e0a7d54f1015a766908c25b28c47f4213c7f99908adaafd692eea7a564d84104d4cdf4c08ea173964590fabf8dd347c720856f32dd615b07a4a691512d3de3216ec2a88249e23068886fce9f40439eb7d23ef2ee2026e9baebb003101703a09f7299d6fa747a7578ea35a9c0a0581efb8b3244d2e6ffa5b18e2f358754973e75ba75b046ac22b3d1b3fb3158bd19314282c7cd2d94ea420ed7480871a7bdcf1bdecf4956711a2a434dabd7cc73fd3d003fda580c0dc2450206329a268cf2daa052673adda1907841530232a251a3ad9940f9223f4d75de859aab2e933f466bab91efca8baa20d25636f90c581b9a77def6b1d2d7f7c81fcb115350ed557c97d613184195ab2805cf1380e314907f69a1a2daf99abd15fe987eb90ee9a6c17057329eca87ed55ea3b5d7243c14b9555e27cb173099dc053651fa0e738f05665dc7dc0ffa9fceecc7931e5c8732ec0d54afa7fa0a4fc284370f19f3cf6a084cba8479806f48620cd81084b2410be1ae98ecad032ca9097c8637729ed6946acf861e0c998f8fcc5628688821aa2931df290804217db24a04fe2211e6a0b35624457edf4a478874d19954164d5b3e12248ee2c5be374697adc47a76197679599bc4672bc1ff29c13946138d015ad5a9dbfe15b37cccc2980c45c328d275554e7610bbced7e102d42c93bc92c9b8ac00146c96f0eeb70d676b3c4fc94a8914476e04b846b6f5fa7384f248b3e454abdb6348564073e4a000935cd68657198e917132f00d82cbab05aae9f5651cd722ec90919284291001deebc60cd721f1128d64eb296b1781356026c75bcc8658e57c450e8740555e93ecb5c4c924543763e8f70a9461d284ef8f103548dc3f93ba195bb249269f221bb5262acd143f73aaf9f59bb2f0daa14cc27b12af8f42feb2292e787f17b5afd23a2410f3a99eb6b23eb19724969ca75f81ba832482d5120ac0f9882c380270e964dedd7184c7201e5d3b670a8f927701247fe7398d8015750a6ec6026d3d32e269156423e3a6fdd4f4439d5018d1c2f4ac547a91c20e3a9ef7be144da79328f934b0828effc5e363d06dda9516806661b404953b9bfe91c31b2d981b92fc0d4a21fe3889e946b973c2a37c19c1687da3fe482e2cad61cd0d9e7caed1f00d2b771a659f4512de6068801c667d61c9336124b47e32107e85850c924cc7fd754ff0d5e58133e490f8d0fdb2fea157d6d42370bed88a3cd178147fc1ee6a82e64d5951c6aa754f7f75e2c25d12f12180eb79d05e6a8f6515668f39779a8586667020ce22b17c61f659817264a8ccedea1b1cb4ba04dc7772b4f54fc3b5dab8fac6be051221fc0bf4e5374e2021dcc510d377744461c0408b891c760a2f400263551700f9aacdff9040ab0bfb89394feb0d84e01d800930c440d01b0ba271a2a0fe77e4cae01d9f0198adfcb77d28a806f90c783c02a46ee18345069392903641abf2e02447ed4bafdea213d4baed903802bc480c376901ef5a5879cef1c028a76a17448d351d894582862c9d40bca0003a7add58d8f85efabc216e7de2d576ab512b3456ffdfdc29bbbaa20e02e827b2badda7b5157ba52217804b88c3cebf907116c176c6243a0f2ed6931ba8dc4b69622aed46ff425ae3df8680f75a6054088fa4e6609c19f141bd90a801ca0c8ef76583a1ca03081ca7fafa47f944c2a52bf5bd8f408d0514bb9c3c4992f815bd6c32a4289d7ca2c27e7e7360f97873491685140a4c0c203a70c43490b335e4961b7ed20c1c6ff6f585bdb50767f8fb1c88400994a081c30aae21269258e7bdad0f9a0145d0669dfe1a124ce5cda594a763b2ccd915bbaf0b0761c9042b5c374e948e9f1887815c1549655972343454d97e63497a7d249c794ca5b6a9c61c2bed1ee7b20ec9226112e737526f9a9e56423a9548f20b2bdd266228df9188b9c04439d04b4e98483ac52831831d58e198c592270f05d256d613eb6e139f65e58aff1f874bd5eaab88598cc1382d4de1a7f35b1059152d1bb50899b842f4f7eba03975f7455a9a0485c936ae412fd1a87578146882647c62003f48fe4b6f966b5f7efe0f1a34afea9cd2f3ee6f0e0898cdfdf118a0b4cafc94b5c41cdbcd6d2764a0690d96550be5ff07f20ba7e69d69bb91a0307e38e2c0ca383fd419a604984df3729626e761ccfefd85a8c0e5ff70d79c4da44e45804fbc045cae5a21b64466f21666b57ea9b4e2b5ac791ef7672d23b4b57323d62a7bc779908c36f33819dbbd016963dc2bdb28360f335a6340e277b66433f2b0ec59de3c445b29d867d9b9d8bc035ce00ff2fdf1f21359146b0cad65fa95928f6eb3c7ac8a76d048ad59486d9eff8b66458f4b161b90e8af4199f69773651996cee35c83f45a30168cbd8332fdeed86ecb273b33878f4daca1473124924037a73211df721a10f73c26e01229af028ca6a5a22f615196975991adb05356512ab02c202023f25fa1f1013b07c1f8668ce5e223a0c762dbbd0e49384ef60cf68aaaf1e840f71736d44a4310d0434c638587b09e38b072e5c2b2818f6b8a6cf3921bd0d51723294aa7dd1d24363237119900a49f305a2dc14d648639ae15893250da420fae8fb9996ec1956cc3436dc6f840283588e9ad63b2a19885a22c48b4c2e43833cdc7e2f8a417d96ed14ecd3a123adae260a0c77b18eb788d073fa1b003e57d72abf30efa30102099d2d170135b6c565951efde6d991e91c1268a23de34d6fc22ec237b76db0c4c044adba462b18fead1c3ef1e6de09916a696ee413dc8caba71610782f63ff2b9b631b2228dfd93d471bbfd3e05ce4915e74f21855d3e5449acf60a197e460b4a424ea982290d3910340e3754a17d6c1e008f056bb4a24b4bd3c29a0872516b62e2da8c1cbcd49b677ba33dc40177aff3bf39c95208d9d848aa2935b0c77776e0f99b49ef9393b6703a2e49eb15ef8ffff9142131ed3f0bf79e946e577b984d0046d2ac78ecb14f588d09d9b38726b85abc9b272403f98675f2f363d1e5e6991bbad097d2868c7560e85fdec0318edd01c22e15cbc60948ad26c322e6c0b16cc467f71b73720d724cb444731044215b1a332701aaae23d568eb09f3dec5eef9748b4a50bb13c4083eabc164737c35449cefcbdab677ad7e8a65c30a0427525862728b482ce579983c7a9158363ad7a906cd9ff8280613d0cf6a9c20ecc11980659e92a4db59db49ce30aac037612094650927960dfdc1392600daec596eee5985b430bd2ed41be91557c6f10dea42860f2f200a59b0aea7338814fb776cf40c978b5ab075be8efe8ac3afdbd20c0a7519bef748b1989594f1eac6b2417b6cff2254eb3a050b05323fd8882d6665c237e4d32c1b663196d37066452e36d53808bb171ab432012e3f76c4e90ac99f9c83503eef7c158f64cb58bd2cf49b9a33d890850413f42e4949b7a8b9cb46dcc7c82d599a28cc9e0e540bfd65970d6ec89f5b717eaf66c6017fce917f9e1077a88c12c1032fe89c394a693d5a11205da7ed3dae22deb008c7ce266841518f0ba9214b3d2a3e25be3ab545e317e268443851940a5e074e932313b22cd103b687c9eb8157981811feb7dcbe7821671f4422892356aff5c9897155465686df0ba06bf3be6e487aa06ba319401e7a6d5d794873658cd5c4e9c5a808cd2ea9cb33344e6d2d463623d61bde8e703f8629319ee194ec0cea67667d907e785d8b43cc09d6f2e2f6f189d6226dc4e5d7706313504e561fbcb05a084c09efc5415adfbdae6f6707e291d700b208124c614451abcca417c53d5a34170a447bcf4b5c2f02e5745166a1b2e57a6170f7fd268dd9e7e69f3fa07b79479f6e261c71fc31c0fd0db0e641bd141b5c7b52fe97c85776c826c114495c93c99202831d6846a803abce3103049f00cab8aa5ec40c3b74988dc170b5fbfb7bc1ea69c76e8ec7620dd285ad2c9c38393208f053a8057acc683bd138d5dc1dfea335f0dc2d804ce75e549060630111509cda771713aa5f6c432dce12b391aefa644311e4a7b2c38a72aa66fa510d7a42119968748d84e2d418db0e4eea2d74215e9a0c3294969cc3b13acaeb2e749e7c438e31dc1034b978b5ce16029bf9f79e27c86f0c9b11199c77650f7a97e3bdce03b0463ee55162fee373c62f51ffe3a81dd98b7d78a12f50aed14abb8c832a49a08974456b28eeb033bf83382807470106da4ab9bd77885068b5d8e7162ea88bd7d0aee36975c884d9c5883f3cc317f48295c0bdd01d1554a84fff4b6d6930a1d27d67e0a8dca57a4c2523aca85f3c35236b73052ecb251122355dd04c2c17ea1fe24eb5ce4a95e129dac44f94591756c709606481a613e57c17fb18d836607778e3bc2f4aad560d52ae214e3a85d0b948640368432f66f1f474d3684f2d5b9d3af457ab5b76545bb67bba781f346a8edb59358ec84b4be6e01d1f2cff3f942ba69625bdd79e8c022a9963d9140f9734e18d8f17e221b35322884a5240eaa17962f3720740e2fc0b5a69bd3ea0fde1e82c51cc2e1b5127de65dd0f4a0dcc4482138c724b4c620d44d9325978df55b20cc44e9f9f16ad4f0e8c9c3e64652ffa9cb41abea2c2e8e4212888a5b5261e8b979b8c5020d36a4ea7404869831fc57c7ae1ba3fb6577bc6955bfbc49781ea56354551717516e7d66eb77a5a93c75b602156f4795ce66604b011ef946ad03610e49a1f7b9aa7dd1c18f83a8072b92051856052b310d768321597e897ab8d44073577b8c9d761b97c7d930336eeda79f48075169cec4aa3c8d8335a11fc577c292700032983bd70a89b070733308b9e171419b48404c73b8abd6c5e007370e9fa56e7c509c6051f282dea385af4dd79c9aa2a8febe1dbd6f604b326bcf6e19edfd71f44c273860f2b749d78162ded0d07e6195c61034cffd5ea25696ea34a21d88088280926cd0bbd96880b66da16a9c68d67b57794cb8991c10e74a78960f5d1a42987efdf60b3b88636d8aea12ed2c0787ddd9e4b0d269fa6f290c0082b2eca925542feb3d2b08db74510ad5923555b69b01aedc24856fda30a8f37d06a180d19f095ecaea85890df4234e6ca7dfcf8d64b3424d466900e8944bc3b861b2542b44ea7e6b3f95d58f6814aa4c732cdec0410bbe5316edd514d2ac55ac2709a55567db541f652a2ee70c6c44767d6687043bfe42917818302c1047566f931f4514c8bc9e3b93922ad5d3d3c4f017a02813b58608e8c9e0eca47e29e061c017434f1099a6e42495f298396607a69be57074b1787bb27eeb309b8cf2d119fd4480365a9039a286299e2b2d7897286a950872b95d00163ad54837b33b9ddfa764e58e442408c5bcab45f4501a603a00392039cf3acd066833ae1710b5afbffff5ffcd9328a425b4bd96923e79c7396decc89f4ce1a953ac08e33302b692b5d395d728fc6665172ce39e7d652b20916534812330c1b37c50f083fc060422a42422269b24756ef02580ef04ea2001a10a443f43b26f13a86a141645c259f58365503f8c04a64cea4a7b3004c4e5b25a7ead3157483c8c29984528f903b10d5043362f574181387f5887435814e7cf6788ab82168c5d3f2e19923e4cf29aa002cc87caf622e49cc92998d73feffffcf12b6d9feff9ffb5ada97ecdae776efbd7380912f6a1c36d4f6ce2efabaa134ab72328a9503d7e5a839e3d5142ce20026c74c8466ab2b59b6227ff43a778e9273da2ece697bbff5929436dd41827ebec57d9f6a2d99b6fe2d8f1c97428e96062527d8c7e88bcc8353138f14b00aca0153e14392c20cdd400b963077b53fb86ed410ae2affdcb53b0c91664b9d6621a56a65beaf2520a6f1d8850c01c219abdbcbc1785c997986394d9c8853508f980ec6ec1a62b9cd587a675b9c2187ddf9ed0841e0d2193b5b39a7e5115a702a0a8c9da4f3859e3a6f226e20046eba01d63b84d544ab2e6f3c40bd3fa41149d580403b883a10f38c61b2031ff2236929e461da1c5a498c00c749e48f6b28560ba943b07fe9efa2141dbfa006095c2ba6b09c2427c85098c64f4871676907ea2b254c0317eed1b7d4136350d1d8608d41eac87c58097ba6915d00c639e752196e9d22a364986be38841e310df3d4e30d2d7c306ce39f76e6d36211cb11c6c4fd158ab27c2a9053d410a544c563069c5e66ba2970167922900af8e1a40f803860a5b33c65d01d9c60f54eac4a4094ff8119fc1a06da671b8e91ca50491c1dcd2b59c0ef67d4aba907ef62cd922a053c56a32838acc70006965c7390e8aa57c90119e3e3a135e9c73ceb5774d3fa5b0704f282097eb8109e71bde7fedffffed9600fbf56aefbd779b33650c2aaf5496f73ffc2ca92ede5be42ce8105bd302475f212b3b2a5e34d3e384da558469788b949401bb66624d73c034d59204a700a51c8579fc888cc72d72491b423e5aa87ae02d3004ee4b412c4cd7a4385dcf01226e8824b35991805eafe7c3e8bdf7de7996f2452d48bea861f040ed8a26336a760669dcb4e88a876fcd282e825bed0b3264f2452d23d9932f6abc106afb8955477d29c24aba96460fb79c6ed2efb047bfc1dfdaf25db4efa2bdeb6e0b1cb2161333c78041e530e73c9ac539e71860a1cdc639e77708c6c3a79b03484c58677575657e2d1da571c9fcce9635306e2ab21eb92a19741c3e4e8a3e243422ee3b07ff5f47fd7038643b9b37d1e493def94d1fb3b52847cd95f0e7b82176c1b0802ea156490c25b91a934dba3d89184165e64f475bc653d216bbe0ff2de8d7e19c73feff1d0a0542ce961910eef57a1f9c736ec3255fd4c26a9bb1cd5111b428f180f73746f91f041e04646befbdf79746dc74971e7a6b0d5613b286eef74310684b7b96a129e9cb638c2a03117aa189c7e512ddff3f6e8bbe49cd59bbd7fbf3de75b705df11406741894e593628a5817664b51ca52cbd6401898d5a241017343d516d606fc47e2188992db76e8c582e508e9c3c52c3b032b93882c5ad9d9ee4176d9dd200c7c7216eb139fec8c3397aac8b51484a2028184d65bad273cd022a8199f2e8a65109e1346ccf37bba292cf47e25324497f95365b450a9218174cf5b1cc817d12ceba62554c5b3c1d1bb208e79cf7a352766c2cab5c6942f17ac15866f1834999911c422387c976f6d0eca5f42eda775119cabbcd45b0c75c1628ccdc4875a94ce5d445c9c8c9e1a4ca09839371f13858cec05d723b7b86466c7bef504e84a0650f344cb292c08a46cc2f29148893572c0c324f4147ae14332107e91c5de73094a8f66c23f10b736b888ede3bf7e70968308681c93cf5ca2420cde9ba712629c5e1120f3210624bd72250d05ac255f0f6de7b05afcd7938e73c2c395fd4ea9ae6fcee1ed9f9ff6ff7acdca05cdaff6f91a3fed763ddaa82c174ce6826dfc6ac27bc7618ec2a302822db61d0b3785e2b4a72ce8132982c24a8122a298f18a747cdd3859d1ee7f29f475e105eb7f0a000ff6f1182cddbfd06154861327e2379e58b1a8f730be98497d32b17819fc48ab49a3fd5ccdd1c1c4976ea0456815eb10f3e6435dd5d530a19434cafca5b291842e605b094c6baaa491c94ba06330a0d18a2991164ab350acbbfafe0e523616f56444f078c1eab5da215be4145dcc5da4b7369e5968cb95b845c23b924ae31297adcecfc5c617809cfc860c8b242d15a9dfc01e59bc0758c2e5d4530560fca5212cf370d38acc2ba6887b8a39bec5143c0fce68b9aae519b396ccc6f9e9f30d4095c642f4ad62295392dd2fb5f51b34ca019c3544d49afbaa41e504d8a9d560c3b501eb43a662054a08571e152b1f2f280014c06309fa0b318330e155c2ecc257be95e873e32323f625ff0d4ca040a4b21fba2a236f92b73a3ce17356059cfc47cbb5526a05078dd829ea1b34d15b1e51f10c22ba1cbd5d914f39e34252cf1f852101368143f4be40bdcff7faf30571769fdffbf368482c2ce07a035e6a5064ae3b8b10c62ba966d84a1b86c798307fff3f3a6de7a35286f243958924b71bafbafc4ffdc4d82168a1e6a5f70537b4c80aed43b932bd3f5f3c3c5d268f856c64dce9730d14b14568ffadae41b6d44c68526e7378ec669cb8a93e42a1142419af83c9fbeaa445f90051b9cf3ffff737508cc3f17394ed8c039e79cf3ee6c520dbd703875bda2672f4744b3b4910a724d577a79d7420aaa78c4be19367ae0dad519586c79e18808ee8d2d68741c25191c46bb7371e23aa7ed396def378b7e1372ab2db7c85b21cd856876294d36ce3600c150b5886f1a25692e32666095abd30c14186464c159c6b8d4d03c48b252b72fc59864f980d7410f6b479bed5fba8b428835e91a4eda87bb68efba1240d33cc68ed522b493103393a7ef778cc3850d64ea1521ff9c76e29fdb63092bdb4379c3608bd3753f4238b858aa298fdaf3ca6b2cc814e5d89063e62b15ea66e2ff7feaced511e012919fd95415d213273cf5c5fb973959aa38a5805d3190f57f0e5b2f9bcb7b49ad28329360ead6a09ace91de01c1ee74079e269dd3f278576a181dbc54b288d95adb75ce3ef6de7b84240ca66d275a01f904db55aec7f9ade6f3b3fdff4f78591c053fb88cbd34aa5f05b4904c588640aa4651ca08324ccd5f2ecafe3f9fcd88fe249be794dbaee23e7e0d21f7de55e6efa2f6defb8ff07f883f47bbc23a4453311510c6841dcafab054d0f1576145348d1a66608651425bf9452ea166d045f6ff6fd3b3d9fc6c36429badee1137cd7388e6fd84f6ba47ada6eba3e6d17d44ad38ca5a1c6d3d3862f2043c9d3daee36c82e906989cd5e8086760b01580e9c2828c2015cd9e62b5cb7f1cff760705a0fbc52465b032319f3488a05754425722b4988e96a4062020da12c147949d64f7558d5cbd5e752bcab83bfeff57a9b9faff5fde45fb4d536ffff42e3a410348a8734d29d3f9910e99c84cbe461523930c587429bf8825dcdca5eafaffffff5cfd5a2309abff5ec54d51ab1051645e1644a8fc6f5201a8e288ff51ce39e7ffba9c31aceb15459aee6f8c6c381d000c383cde464984e495f0d118ec439512948908d05c3ec6d91016295a56c9d6d8662ea79de76d0682ba5635c50f1ff22701170c57501d3430896c8cd2a0055c691d470dc32b8f96abd3c9737c34e4bd20454ece175dea834632b95c4452790e7bd3185a3d2dc5ee432688e834962158b37a2e7f4e7ae3edf08906e6719404f0623e585a485eba2e7c856290253e9b9f4bd5431a00e21cfeffffff5cadad7a26dc9684a765c77d1f8ac7a692659a32f733797f12984a0bea821aa2741df98c9eb478b62fc010a92e442a03f9ee22271d1938de3410141faf95eb43c371c4151a391e4b8e624a92e94c463ac04b50d5b26864eb74c208a122a85846657ec54b2d0fe4a35a76b67afa2075523e94d0440afa1ede5c2a222051b2510696f04b8e0be0d0d0c55c3aefaf8950c2a485c7a552189025acf05586defaca549912d1159ad0c8f4e3ccec2b526dfa543478ca22b72c223482ad87acd7d4c643f697d5aa2ea6f00a16a30ef191909d282345a732341d20a0da781984ccd9b822d5ec04402ee2446b06516b6ff8a44834a018900c23840ade313bf13c6e494de568a5903dbe240cb939733aa7b5e0d188bf6bf74c980b4e4912f1f871d223eaaa54af1d5f3211cdecad4eb0719c254e908cd27bb772a0a091e2c39a05f9a4326307e074c5624926431130a7a1095cdb9d2ddd457bd7859fc0c0c250cfb08e8d9e15270ad76f284816aa752877f66bbdfaffff5773f519d7a9554133aa3a3ca9bcb96795f536e7b4bb66b2a9bcd1353aca37c88059d5370a7cc9161bf093438575fd8ec8d874102433737ca93a37a7edfdb6614e7699eb67d7f46a7e35c21a62cdb12659a3a4281e75e0c22046a3e3ad7da34ce00d552e2a275ca00b949cebecaed4236e6e8f2784441c8ddb3eeebbc3b0957b3f5b8ff3db9d2581d8fb8d625834f3b69c64489ee0bec2022359fa347d81fd70ce79cd4fe7afc0fbffff2fa2cd2646de86badd97f7ceba6086fe7768f7f09bbf58665376e9443bac30ce4a3979ca0a2ff4983ef0494af0ca7ecd672e664f14e764594b1ab0ac488c4ba931ad6a7a613af5326262ba4070ce018f73ce794d7309ab240ed80cc2e880b70e00191888ffdaffdb7d41f2b3f12466c412c4005249c994c361d61d13f3b858eeb932776286905d909a210a508d0035303968b1ae5edc152c020f56b98147d96a6c463e779f5ce66e04a2a67c5123ba6b9b04d06c34cb9a12fcbdd3a73601d099984cd5307b26eff4deadb58d850d0cb58880822e5b4a150c959ab23c24833e57164b88a617c8cfd00d97b0ab41bc1a293a2bde4457b20e8b0661eacfd17fdd4dd1339cc86e5aeeffffe7ea7f72d9b44614aa2361e4d4b8a1a462845061730d9e85e1accc2c2be4d856b29c0e736dd54f2e0f12ffff5c8716b931999cf7de7b1752ce17b57a67e3a672c4dde35c370016aba1711852d9cb8f025ab050233da5d28bb6a9c6914f7abfc9f4073868d26bd078f50205eaf8948909f5686d78f83850cedc549a39ad8423e79c73ee04db7ed9f98e9dd0b01421f01bf29c18bb4e3f0e177fdf50bc8e62a8a4eddaaac40020dd008319040000300cc491409355190014800415baaca8a04c2828208e04c26028080a02c16010a02018000000c1a0401810089083c4a4c06ce61010adbc0c62a401c34dfc7d3f4725790ae3b223ecb64b577310848faea50110d28b47092afbc99206541d90f84f878075d79472d4df0dbe3c06929a2805c8c271c1b353d81274d875e91e7139098d0ed9ac1ea5af53ad02b486a2aa5d7b43cdfbdffac4e35e620867059e05a4f56564829b07af7dac40d1929f24b654a4bcf0165b1241ed6acca0248718b768c64450f98c29cb0deb18288648354659878966c8530e667c1840cd76c0609691922948e7a047f4ffa622ccade78ed081a8226b46927778fcd51412b744c07878ff5184fe222d36a53ce7025d22a3fd9541de641690b320b5934c80ea6e33959bc9bd1086a1e098d2e7225d31956d444058745319c02a0e4b6615fb70b0d2e3e6a83a478b04aaa1180e4ebc27c3a63f5f833a5fe1adbee1088d19622f67a369f7ea2f015f47df97d1e429868f02448b6eb2190a73087ab7d4a7ee266fe6f66316d54544a132fbf739f8bd51396840898b657ce049612e5fd70a5d6f0e55409a0bd1727123a3766ec536b3b131fa5371a894a4b61ca233c433a8063071d0c50b14840d304e909f89d940c3a44eba2cf6ae0081b77f67a819436c8273b3223ff561a72a3c1ae5b20ab8fce1435176a6513832e73183a0279d2496aa53f4fae0a287c5277a8eb3c515b361b98b09c98dbb5c641e7c202a272113396de0aaf6b04dbdf94193f9939cc9ecd2d5cd988933174567eb981f77e403af99de2fc7ea5ec527f70ce5470a12e40c98878f89d081461f2dcc8a356196d32217b12e95a0584f59076fbade241c268934c4df59aa521a24aa7f2c6a73a84280a10d850e4d95b516ae73f490bee88ab20e194ea3741a813619ccad4e9ce5e3a30cafd707d72aa3888d1e3b61bf96cbb7abc10969543a06eefc19e599a9f919d50d877a2175d9007e4ff8efa0c1ea6fe6d50fdf5052e550ac24055101adb506af6dfaaf150322fbb4ee33b7093680d9ce9ec66ebf68aab051bb1736d24f1f74eb9d81b971eb4ca2bf2d08ae7639809dccce56c0dd1e50e957d0909b4b63507a9149c9a0271bfea3eb5012e6cf529e35e61f931f4bbb655813c521719e451ac8e3e3e5403e277bda578c373d0eb13a0f1c5334c9bb72b92dcc303baca171fa49d7e492ac9f2ff3c0a30f490eeb9a8ec3af317f529608049c18a2409d52b63ef78cb17cc098a5c302b728bc1d7bd803775baac9030c3c284c6901a7e106961f252484cd1f550086abd86aa6a08223d2affc5b9065d8199a83c9e1af3d98128ab07695ca0b319ae663f519d9a7f190f1e89a45196398b5da3246e2fe76e98cd7c3c0c978d1603dc8873d3ae578f684a091ea267c09cadca2af7e7e2e29ccd6faac8e15fb7138c4534e4fea63ca70c6036d6f0a47cda9679fc08937f13f5438018ea7586d00f1e3fbe95a3804cd9b4ca374c247d914ccd32ac96b6bc3b8dbdb32206391c933e41b289e9bfdd0481b81a6be4688326e41e8e1dc8ec655ade1a4c28bd6846bbd2cb4f0dcee3cb270f26584ddb7e8798c707a6039bc5c20092a08ae35b3462c226ae041e124eb8ba8fe096eb116e27d46d4e5079d4f0f325849143043a21a7c860ed7d709fc8890c1394066848237e754c1747a79c8072fba61b0aa03a943230eef162e147e692b6d21b4be9c063e41782030ab45f15339fcde9136013c9211e4e54186c53383ff7c83161ac74602e440528230922c6ea416b7fa2d0f0c27f35f23609b2e0ee87368331b051844cc63924116b749ba320963a211e3f191c34045857d573c1087e815b78e89bcca8577067541c6d7365ede82805eef355a0976e3ae79b1a8abb85ae77252fbe986ebee7ce58653072fb08260001b06f53bddd6e97062d8a42e9bac7f39793e75c13531a4448fb1e801c7e4557d7942456383e031be038e4f903441bd927c0ee14e548161106875f15dbd1b305d8737952caf1dabdfeafecf952d5c2bd2f0583a025e32e965541efb5364ce460476dc4e3e6168270cec8aead9e35178e37a1613d5e1999d73a9bea95c9b269943bd15b61e8d934e2c8f2df816916a49369f03995d2424ea727c9e9e6e0ebf1bdee096ddebb4e27804010281154fc626b6a2deb12098aab80e1ea99dab7e11cdfa3790e462e9868e217f902d40058eadfda5d6c57f18c4574ec29ee6b113006f2791b8a7f5917a28e9361e12cd1c7ab844f007986fdd4945b15f2007648c617d71774faf1285fb45545940b28891efab91d4c4367d9016178cf9a0b8f880787ec6084a65734a1ec69c5f4156ab046c1fd4628e391fc6d01870dda8def6da11cd2256c7fd50cc746dbcd91b28c39e8df415f81010e6c09d9d79a4b83733ecc0f605170e13867610b094d6430baf1fe7d751217753d7bf40975814e4633fdfc970827b50fb5a74b39cfc744194728332f11e4c483e7e5c660d6b16c778e26aa9d8495a8afd5e3db3a620666a491e641968c1e85e8dd4ac88d269103152e1f10804031332d716226d1d9a15baeff2a9328920dbdef1a6f41c45d4a788dc4578994ff375491844b01649283562fb19216f3844d6f6e934d2ec54afcf1fab2170132a63a4d42008c76a3e817ed588b245523080c2c0b5fbe83fd430349ce4ec6a3f98c4bb1bdb26b12d287ea2f10a9912f771d12f3555078a991ad66e3d020cd1f80040d00341b321e0f4d1d9545b6400bfed6fafdcd83da43f1206e859cfd47642373a2ec6921ee2200f286447d2819de3f8680c62bbd2d1f2c3dee12305ddde566592f8747c16a986643a56ec1d1ccf092387a4a2598dd2099e269207e7bcec7cf06a09b4cb5950a2810f87ba9b63d23b97cd048b1885b04330f5ce6123d2d4488e5de8572d940078e61b97be85e4e7a5b6b4d4dd4c3b07bdaad32c5267a612c62e9bb16aec1ea1385a268bdb80c4f0746a344101898ce87306476b0e9c87ea8161bb64218cb86b450760b736b6389790d04dae81e4299d1be9252d95644cd94e29ee1da0fdc93ddcec5de21e83598d417bdc05cc580e2b5c6439fe7e10a8c8076bbc777416ab9d1ccfb91dbb6446bc1af4959917bc93b8328c5ef5ac9122dbf17857ac2cc004aea932ddd543940f3f352230ba94997149e0a09590fd0f4001bd438b164d59ffad1c2ed4162c990f2c18862585166fcd7d26408de4a7b745caa4178de584e6e0cbc1a7a9b94355c1384ac25af1f9304a1f4b8305270ebe709ccf9aece3466c2fe2dd0ee7871c4a45e6160ae1ae5712b47ebe9aae71eef2184568bb97892460c4ec98f0d8be63aad0f31d0cd023ab4ca8d058fd15dff6179d3d42f8109309ded1bfda96a086706bfb7c4ffd8a658bef5b4436d8ab59ab72e3a8d0373a6df0143ef51841f7a8d8715d5694b108ae7bf8803220f4f09e8fe16ae16909da09ac55cb97d3e46079ce70ad990484aec8a44558d72070098a11e50666901ab9bd0872ffa424bd4d909d38f1446de7a7a855c4213b4bff78a62db844a03278b9dc806201bc47b4b59298208d02915029b465f714dce73d8099f4158b334cf301ad7acab8fb01c837a5e35661055b9a43a03083266e2e0dc036c7e502afcd1bc89860392050f2cdc02f46568a489450129ac544e6882968b9f693fab9ae4ab54c92855144e81b8001f0681e36a3180f67f0cace02e813a18920741150e8ed03f62a791878ef9a5a502e62b4f57c8d15c2460465c744e78182533039115bd193d174d9189a9914ad7f48293ee2ffedc75d40d3645902c095247c4091e1329cb5e1d3aa4ea25ef0390da956b58d70d1eac418151e98b9a91ecdfe888b0a01178f5c3d330aa5f138ffc7384c801ccb8e0b42e04bdb4252c9cf60cb89d0864feb034d4d5255123761104c77811f74d53c33866451e7fffd09b645f4a8b095c39cc7ae0213cfb80091e80af4359ac072be50f8ccc13045b448d11c7c9e9221946eb0933047ce18c5b551e3c2fe2b14eebf1ca0f1fe91a4f9c54a2694b6c8dd2e0e3a360e31513555cc05433844c61f93bfa81c7624025cbb61f993ec100190139f060d07663113a20f853611a243f9e8aa820c7adc6d14e23d74a7b3423658804b3a641208e130114b18a302a2c731a5dc18740eef94144cf5bdd4444ff15a8765565d8e52215fa395652a98209c7767dc7110c7486bbd9fa37c3d3c61194799f9c72453c9b143f84882fed5c100b5ec03684185f09c0f26ed839d706aacf20fd71d9d77c0b4cc854fcca508b3515bebde378d1513da41bb7f85fa6519f2b4f415ffc5ee9bcee187ccb42614952aaf219d179c393d8f658ce5a2d313fd4d14690222f2d87a4e6c559bcb345c70acb70b92c716a400032557a25e9602c5cac2dc046d0970674fa84e64bbab195712909af49626da9e3c1485ea53b18bde2063c8e4d1f145ca4a56805fb0772c95209566d78a023a322eb169c0b2d6562d5247c2f8648bd2c5717f8f3161f849027075d94f1779d003224d7f15076b56f03a20b0dc94e829721e4c4ead21f09bc1f6a2c1654feb0c5463091800d6c45e2d14390d31c362fd68bf01003c29fd4879b1e6164ec983e5ca2e24e5908c1779e8f5067004d04531e44979a3d92557bebc7e7b1c1430639b909479f84d7f000c9d141f66343c7afe4e4cfa1fcb752923cdbfb78f79441535b2078ba4c6c5abf7eeebbbb0526bfde9cb6de635739606465a85c4177c185885cb607746c274baae33a225daa82e056798a41df86ccc3a618098860056b7b920fdff4fa2c42e507ee96ca2e8cf51e4eb3d5bb642960363cd3facd5ff4e866aba31247901046e143f8ab723244398a8a5f3b883ee6960c9f612fa480d7c785f5245e744d4993bf04dd5692713915fac9ad8645ac4cbeacf904fd2b0d3f4b259b1263968c1ce32cb80d0760b6b08f21d7319beaba5852905ecebb8f2a57c1eb00d048c1a46ace4f346cc22aaf3cef5c213c4efcc5ad613bdf315144f26cd1496781d62dc85a41f29cfedff97903d3c2b313334ddcda5614ce5701d22f383720ccb88ea2b73c563a23fc326396566a5a8527f00e1ea8357fa1cf5d74ade56bb60b34a17e4c8dfd4ca38643cb52432f895888b97bea341137c4789461355f1482035ce18788e2a0c7df53a923e60a43551b0097c60f06d079ea0975ba53d938a2d8c64855c10c1b9276a72469b01ef79db190ca296036ce03f6748cf0aba7ad229d037b13efb3241c885f53fd9c70bb9dad9f70e027bb9caca669bb70378e8e65bbe660fa902ef880318126b97659bf0f9bc419f21307fccad6740a4071d9df5194bed6efc41d83a50764abfeb083d61cfd5f17d0aaf5d39d606a9db6349330e051f04ee7907e64dc9946bb8ea01681a50a9c0ce2cc52ea2c656083d8cf95082f03246228e25f2fc2160a21312b5ca5054895b89a8ea88c4065dd822e5a229640d43409712bd0f43100754e24447d65785b003e2e094d0da57a12180ebbe32b00cef42b6f58c1210a4baa1219889882bf692f9a3fe18d6bd0cb4a70cba276cc20ed2b3f1568289f590f151840440c2f1e6b56ff2c7ee00840e8584edfc0398d045326ffaa1a9391b8ffd0b47493f6eddad78c12df477cf9c19bff1e76b56326d05a93f21e14580aec378734da47ca34f0603eae38b18da031c6c10860aa11dd62c7935d34b7638910039575245c09c6e8eeb33f33e4f56604b9fdc37fb20c151638fa3837b4c05cc83acf5a5a9d8c4837407f437ca8ef1c68a5c719012e2f703505974be69d0f70f80b73d3904aac8f11de556a9dc1ac06dd07a85b6be3220d3a04f6a5cd1275afd4e5e35b337184936c859f408a6e8ddc75cc17f9788b08b0f30bcbf32419988f9ea11ce5cac7fc42553b215ef6c9426fda0dcc3c39f5e6f12f950227247e268ffe801bf1726f6b728ba3db53418d67b65441ab6ea46da121a0f003f682689d82860ead77189fe78b9c010e07436c7c9d5c47d7936ec1775bc1b284e7689cd68ea06f4527b56d085d85d9357219ccb545709629f26f666b4810e4eb3e4f5f5479c1163f6a63cd8a2248cb63ff1aba49a62969cb3ec01b34f5bc262ca4bac920b52d01982ac33e6d8aa633be658f5d37ce4b5911bee8fcd24307cc4847a7e211a81933f19c4e1fdfc049c0a99a3785edbb07a2ecc0cf5a11c8ed92700fd0ee5021170d20ced792f0b054e110f966caab0c9c48595623a19ae04fc28aa41b44566003156d82fe742f44c431fcf7b5f89cd2ceb5705371234cfb96013e520e64cbece60e628d988aeb5b75c2e2005b079f5e4580aa19510888262d1430a790a064c814e566e8a7e71657ef18a39e2c02da2a500d7579898ead22f7b973abc26cce0469f6571b27408109213bec61b5cc6c3257afda4c7786677e2411747babc353ae344d049971dd81b296d2e6699b06c251fb91e5587963a0be461394768238937c0b031b6a827fd6163dd98bacfd7f8d715aea92e6447b707866f285d6314f61c6ae9f9f827e7f8e8e61bf82423d6136f09b2a767e2be47e235ffcbeaf382403bca61b56de2fe8b6ff33711f0358cdef03cc807fb5999bc29d462372beb1267767ad43411e4ad48c52031389a211d4573d4aa897e298f14709641bb032d476f4592bf0d8967a591648bec745cece07954726b7fb4bb4569d4c7bac4f132c6aaadcc491e8ae8cf857b861741154dd03acbe7f55b9c76c4f3c92e9f3913d933c32f5abbe996fce676e84f027b1523248cb58c5b270fc34fb9182b5799b6c9f548141f0bed65310d8930cc6e0a95eaa497e55ef5561616c5c0b3756bfab9b0c2514bd33685c5c3a5f64a67e897592cd45135ae2fe70189f71fba89fd7078e316aed86132a21b4d3aaeb890c5fe9ed6d57b5af92f84152e4b0add1f508c0429121f9ccdf9451ed56a4e34b192b50d3074b8534e258ffd713de805004020d417bf691d348cf50f97064d5085d662e4490b5c5492b71a190239e18e91c8fa3402b021e4952cc2bd345140d4228bf2010b151592c96e6f32ff4ae33b43a79709ff56068b0c520182025deb130af6dab1cffcb293aac499f3d506c9f62c3de278a269fc43baf05ebbdc1f62088c94803c965886cf32d78f2d0a1e79c2af60bbcd8f714018b08c671ce5f5dfc3842331490f529205af4671923f6ef0e03426c7056ecb3dd117dedc6896237633af1d8942625a7e103c6dfa21a1390a26eafe6cf9d68fc87df6547f3323e266c9b369cde7e2e5617c82f52bd446a3db6d37a225a3b54a01b7c4c8980ecfadc885e1e95ca21306505b1500025a4a572ad007d90e7868d7fd98944fb25ce5d1b443ced3a816cd141b075a125884b1cf0e0ce30ce68fee0b2c35bd71c9714981d0e6b122fb73391eac4fc7cafccfd8bbe0dc72b0363a14786b51bc160773a323d3b7b7ac2dd7bb3bcfc9a8a33b1e7bfa32d4a9230a28c9e2d4018f0b7397fca2b0bd114fd35a8a99a2d19635cb4cd7e44436a01841632daac0b881273bde2d386c16a16534104de66a3a12a06c947589235c5739ddc202e4cc3fa79b4f37e20b456e161acadec52ed32947ca177897a0f84b80112a56564558a5306042f9d950064a931b10504a58203f3314dc4c96308a943ad1ef6053934000be18fad1829c5017a0ddfe91d3818c10e7cb5ed4bec75f25dcb69d159302958aa355817086ff817647fe19f2c580488d3cf99bd3c5f8e122bd191c2b657c7891cce18147d26e03c23a9e65d4e4ed838fba8659696d56d0149a63b35cb3f71deeba3fd517f1fb4c2d47f00524568f255e90cab075ce31886518eca49ad98b9ddc23e032f067cd770cc5d71a1dc594e4a15bf5449a0ec90162ea072801f8a9d1257f8c9c8863eca629e883a85374c1702f8d42b80f61737935928fe50099d1facfd02f43d50e51b7b8f633556104adc108f4d026da5370b68d5e27f851c41f172cf992226a85c16440768e4a27c65269963e05dad604e7da7e4f901e40a1189fd0131791387de76437a7888dfd48ff9b55ae2224f4b5816f3767041a4f11ba05eb1c59bbe07819e87a4645636eeec1ab6c4bbc768ef8e16e43183666ae1807ab292b7cf531542e70e219c0a286cc8aaa5939e3ab148c92f68301874ede33355e16dffe798832ea24c4c3f8b19d358d25f11ad10feaba73ac916d0f9993db589875187b1b1bbb029a810aadc19a333353b20bd0d74a49948d02b7f03b7e7345d4bbd2d039b68f5c982a79ad4f7912e76c219473bacbf727f1573ed76402173d2c401f73a27ccde4d39e715b53c366f2c082dd2630ebadfa8d4c071e9de8a00292473a154d85ae0f25f40477db212e4bca9ee5b3a41be8a4916d0ab63396099e055fedd344e3f02289efbb074671c53732ece8d7109fb6e1be0669fe63e8b17d0b6720d0ac27a141b7a5fce99916c68676a0a19c62efc9ed7c085f821ad92d1bdda25854031fb2dc1ab2c14d9adb47126e4b5385af2cec86f5f06e35fa36f509914a4acbc6715575fb8d92b7eec9470bc5a6787c22247f2c5185b30dfbd32eeba6f4b25267a8da7f093df563f33e2e71d98a0542e2406332872ff119837b0737a54a46473d89222931f7decd246bf009451d2255978a13faadaceae383beaf0ddd50cb863099ac1b5252a86a4ae5764e73ba74d1b5117dff14f9caca8c767a820eef56b2dd4d143d74ff4d52fe89f6d018638b00458ebba53dc5ba242b9b2d64e0a5a0863a04e8b10f59dbcba94736f56f100b83ef379447e44722149e3cddb3340a3793129617d810fb05ddaf5118614f7ef28fc1c2586d98f13a9df83bdabd88e98351a7928e7efaca9f191d35b6689113d13528866e7b73f8313ba8abaacd998e5201ddfb8babb828d321090bed51ac42dc243e3938ec6101d832157f400d02f98789a3fe765532625fcdf36aa1cf8df7e8bf356e237f056591a6cd4b0e20a80ebc18d4a86fdded25e3345f332259f8584a1e8012a20921722aeda6faf1b9f187e0c6a31f3d78f2d47ac64cf49303873f13dd1f0cfa24119c05db22fa71d6711e705a1494b727495ffff30fd7887db510543689631cbc7b00a325c056760bf50414b0f6e74280ce3ba3093301bb0173bfc9cd207f43ee85d06c88ecb7e0291a0173e189a649ef447378f3127205af41d23b61a4468048d523b5a83192efa6796989cdce0ae7597bfc8dc8cf6c3ba7662102d4e1543a2e728805fe8b7da632d098eaee6f8f873439af1b7c0ca6c2cd406767cc7b3fa9faa6be155a98a9fbf2f174c292139fb93e9cd68ce9badb094e5c2f86b9055d366f68d57b681df1b955d153b83e4aa976129529a7b072cae0e01ba9e1d04ca05ec3b021559724f340a469629d11f0c5be4809249eaa80e5ac17f1b672b5647e7c833840aca69897585d1d44fa22a779183e113e331c6fc44a9e38a2b5dbe78f9ced27a1e6ecc8a7f69a2a86b36e516bfbde6854201c5510be43e0412a6a8a3cbc5b7a0a94e7fcfda6c3a766cbff56bec50b3318507246fcc1983771efa194f121f56992d8202fb77687ef04caf34e993ade14a08dcd72ba65e697fd2d031513ae1f9afe1fd79733260f7238bb38dd976c92e75d9cf48a44d769dc8999a96f874b917abfbdd24085d9118390a646ed19395f3fb4a40d4cac7d0ecf1dbf17957589553a1fb2e2352001e890bd93c467c9325d66f24d04d13c313997c7f21873a70deb7e01b2cd83a78a59aba2caa186a2543bf018e4b8025a0eee695b30903a4a1ba720189dfaebd435d4f678bd8c620d6f7d739e5eb59df8b92d8d1c3b14de7a43de71311bf45e207adeff391d46f7e281e000156368692e11c7161171884563acb051ae84ea9921b4df1a694d249114b2b4b2bbbb7b07350766064106ab188ef872575a10135c501a6490500c4c855850a7ff01a10f20d1691c4a416b8ebb469dbee652a039b7eaf5bf8ad4e74befa9a434e78c9478418b51c784506044f498601c276b95967eadb5d62a3bce26f7681df2f5b66220f5297eba45c013d3eb41ca45dd22c89fb4eafaa4ce60fead1a973af06b47a52afe985f1920abc743a3175a94441b14184018b18c3ac582030103c8f1008661999cc030f7640364195d5173a8f5da58416db5a22640a7379d76f24a3c6377584000141358d046d5e8c2dc0020cefccd090e475a4a11d0a1204a71aa9ed412aac798d71882eb49a190aad1c533c366a994524a29a594d65a6b6d82ab54d5e9142a63fc1aed574969a4f82967a30397b291aa19853ebcf46da50f7bad94564a2de652361a668192050ad59dbe0cb0a053871b36148d61f2c10665832c84d538e21d5021fa54a802956600bb70d2273762a3578f12419cf937c4f8a81195024911860b409d66a1298828d69cc454c60869c6618e31e71fc72acc4d4fb0e62a4deb9faa76eb711e18711cd6dc4a4b5f528eaa406a4d35c7ea5f39a5b9ccb0034115e34b55f400429c681f7fc71c776435a739f7c1a3ee762968faac5aa6ea35a7571cbdc6d6bc99bf61cc39d752a9ec7fab543a27470ac5960b3cdeff6878dc6ebdf804e2cc3fc1c0239459edbe7be3135982e69cc43f585e566050724185162dfdfbeb846e31bdaf6b7b1fbffb07fd51815e73472f7ce18b636ac434c40d29956b5deb5f130b344fd9944d71ddf6705673a973b96e0dd0a40a18dd5e8b02378320954ee1954ee97f1deeb0f0e5a8a88e208854a2010b3168ee701bdd8636b324cc53312806e11884a35bcf048833ffb9c02b95225d6086300289a5455b0484f1befadeef57d56f4ebf38fab51de31f38c6dc43231534c2b1954cd9e33c532a05bf3ec63af7e3759f9e50b18f1d33668cad67c8e0835c8ab89c41a934a3ceda7d3f3d60b7ff958ce0f4d2fd2376ab7f7aa5b6e6505cabfc9e73f663ad13735a3e4e698c47948640807ed3ebaebad6fa30c229fd5e24f835fdfcf887e3e339fc536def7bed7da99269eb30f6f8e1941f27bee7afcbde5781eea3ebbaad40a7df75fa588d5066367e0f9ca2b19c10010a704a266d1037e2d757adf3667ea542f0cb53bc5f4fafbdd78bb5769a339f982f65f7d10e73f675a07f3d39bdfe7d1db37a765e704707a5262038a53a30582f225cff42a21bddce2ca9b527e704250b949c4aaf5899c0a4182e9f7af365cd8ff9f4a9c743e78a524a698d235a4d46d820a2e607fdfad5e3a9f951dfbef53ecf668720b8ead446f30f6e812b1ea01470cb3dc50057190f4361e02a098309b04fbb08d6fb648c3146fbb24ba1488f31428eb3b191aa59afafafbd8fab9d4d09789d365717a5d6c73cb83eb4b5faa89ed6b87022bdd249a50ffda1803163c6ac403bad4d6a70c13f7b648d8ab056d8231b1928d628eeb05ac21a6d21995483656ae2b580f2701aa709f227c1e08627ae88a102331ca0c4162e7cf9a1892f65546163cb16ab49032c5813201b422548220a304168d800850d6070b1e24509115174a1410a5a5a3e2801095e6801941384794204520fad269a90a286a116946411b718e51cb4d8599fc020a3a096ced76681a4b3e65293c098108b24279b065789a054d2bc815480eabda61218a12fe4358489accd38aac8c1ca0b1e9208c20c2a435f104104d1900b9670c146628102cb859609c6bc0149ad473841c1ea8997298884b2ccb410840cb6c0a245185dc4dc1caae064b1816e49d2c20818981224d48ad19051eb8aa15a6b5d400d401ad7c0a4d67a81319e6c01831970d182a500440c5da1431843455eeca8148a1a4c70b16413724052e445952eb420ada08a206468e2a44b9316848101069948000f68959183275794c8c10e3f38dca0b5440c9cc832840dced802e68a0e6028a2063dc890451156963499420c1a7ce122a60932aed45a6b1844b5d61a460ca34c8c2eb5d67ac4916bc71149ae0b5f2cb804d6c9124bcee0a1891e80f8ae2c81858ad00b53c8b8f7dea47903f116f3564105c3b257fb2708345830860f509654418302455ca9d26ac18996141c309146282e826d882186a0300a77653e3185afcac036b858eeb558f60a8b0e3334a50f2066b0850c535831a2a5811e7e60e2072eba10ba21073e7c60c58988cac40aa46c34a795a43db130d13a8b1d5718c98235392af048c8768002252d2a5a54f0f064869f248a28422806618c204aeb881337556446d69abed83b20d53ab9d450a51449a922054bea892ba623f8142cec11335f2c37c95a6badb50bf842842918a213982ca72f24083f18a1431834acc8c20827703044181534918409325a20e3032bd9026600aab5562eb566c8423181748211b4b2082183245a48e2032fc4d8a0873062288124abc015064635d51eb618d1dc59b4c5051906889424002659ca98b2022d492f98528486981d4e10439631478880871b5474b087ae20c1519630967cb1400ca26042e5062b2ba8c28a9b29e0d018f72a815d36006306104f247103130fdc200b13639ce1c3122b36a0a1471083a44203ab6c9425c662d262e28509960e1f7758c4648a2226459da32d2c7e8c31c618678c507ea73b1e7600ea520b87453b18e9f07787454dcce8717e5113a4ce799006d8edea0e2cea19e7b45828895125aac105cd480d45246999a68d9aa75491767207c6214eec104a691f770b71e200a46ac639adc7b261356dc441d475cc9b8bbf0e6152638ff5ebbada10c03c2213ead0bcc1a60c047fce3d004628b54134e7c908c4b9f0e71eb96722887361a9ca58941f9d578d8f8a1f841ca9c2ac1100cdbf3a39774290fdfe1060af3ff374e079831f6e0860afbd11a4eade8cbf26e7eb7be44e0df2894cd2e8b74ad03422024cbfbb8886286e110d3cecfec525b4d31d5f04a2dfcf17fe06903301a9f3e10822753eb8925db8e855b8dc2d7a0722840e893bfb58477f003920ec54fb5fffde1985b42c644841ef3a2c9201492f4292d46f746e0a2496f4103a9c0209a13e0310b028063033f0d063910c32c990d489df149a48489d0c8b6440ea51f6a8c5148a446e743183e48e1079033f2929c2bc0109828b4f6541aae2fffc68841fe13289d499de102d44994f3fd2ac090e6f7ce06e69a0f2e5a843a8d22145905f4f9ff1057813bf06231cb49880d5e3178f2045692591d423133dc62310a70311f0f8f1080b73271e9137f1e3c7198d481d188f6046fca386811046609c1c49d265477cb99a3b3560f0628b09bc7c49a3851df1e60635d0e2054362bc90b223be1c9a3b1d1cb9e186328e30e289233b626b125d19a49452c608024a7560f700c61ec01be09c049cf3701ce6512ac5d8fbe64b082bd0e7571fdf79a6c7314fc5afd1db409f4f7758c8e7cf9411085a3379c40ee5c71f9187f4780c580dfc9af8b0d7f0883d7ab26b104260eed4df613b086f3cd0e7cf1db58b3be00682a78c33501aa3ea9b2fa5fc01823e9f674a24518338f2e18e5e15c3638f234c0a2184d0a312060cc29d293f7a9c6bb3eb248041b883f18db107a552ca5929ad544e2ef5e39c74d239e74ccd397de451a5d67a9ad6d73472a9a2ba531ba9433fc5a9add5567a03fa6870fdc9ff3c9cd255a7349729b836204080912ad8bff834728e7af20629ffa7631a84396a0ef9f031395ff280fd87c615e69c0bc05a5c6fffc6971796f12dc570a8328ec1827a64adb8fcc85131a5f47ae00e214e8c4de0af50aa64fdfa387eeca0545131b41486f3577c6b8f1a19784a2c849838a850506083fa82b2726ea8a04a0a2984578a2d78861854038ee35af7747b2f5675bdeeada914c7c369ce6114b86e3d9e4abb5c6cb1c597d4f96a14fa78ffb86fff6e1f15634a31e55d545aa90ebaa72414eb1db8d09c7b2189628d57494ca8a490410de817f8548310740cae3597eae12c0bb8b53695e27a38cd3914382dd63eb594ca6aadf7d52aa5a842ca2710de9a294d690ebba4f1c65aebadb5d65a2bacb5d65a29a594524ae70b14098581feec28387ddcb5d61c07020e006af413a7b91e34e752a954090729cd391c38ccb071c40f4ea8c88010da2a61a4966a1dded20841b19631522eea535aeba41ee614e35a6badb5564aa9159456ce0ba12f5d6eaca0525a93e0b566ff901dfed8d9ed986b57985c04de63555c2a8522fdde1468b7def52a7d9e7a92aa9c54798003a752e581c685471ed6524a3fda1be3153c823bef77fbfdcff6fbc11cfbefec17e6d0febe8439b2d7e12fc5a9af7511e2409cfabba310a7beeeb0fad9f6fad7edf529c6f85e241652887108f8c2b64e2f88e9536cc236d24698d19573b5319a0629a671ca15425f08dd12a0db9b6ebb6e67baddbabdbab51f91300163ce5329550ef5e64ebcf6fe0fefbfe094efc789be4bb0d1f547201e81b2e9e99b4a753ddffcf95ef6626a518053a2900e97d29b05ad44ac7890620b0cab202199afe4dc80626da49eb5766a8c7f3d41c7b4f7a9bd98de6b6b7c48ebad50fbbc01c595524a29a5b4d65a83881a009a72418a2d48a219423e1431a549960b44e9922ff089866894c242e460995f550cfffee5e44c38754c5c69b596c6156a0bf6ce2fe7e70eefb40ece9e1cfc78775763b90ae9f7fa6123e784733af56896d40906133029b51e8c7442e9e3f5322ea794c603dcaf6fe301aeaf8f610eeceb5f3087feea51a99a184bf8417d48e107f51691fa3ea629bd2eec72f3d822d4f0e8b1a710c7740a712a083afd982f22d4e21b6f9c5d602d4873fa35c2e0f4316a853abd4cb4d45adfa12b749f74fa3768ee5cd6bca11e467257512e6beec039afcb9af8b2e6bd2c7b597d5e26fd4b21993bb2776f7049dd21cdb91b430f2f88331fb378f788f1021173ed1e52e2a92f8caf6e93f0d38984e9b907ed9ae6418893791f91d6cef4358c72d29a650f5f2b2010e24488733f6e4cf5fd1eb3e3fb75f7b03df27dec7d3d11f722433d7185a530f292f1f6d7873bea51dfcc9f9ed31ebb3a9ad7baeda367bfdc40b28f9dfff55aeef6f30da407957df30e76fdb9bb7c50a9da9fbbebfa087130ab7377f188b9bb5e5eb6763aefbfbaebe1933073cdbc0e7979da539acfbaebb56e5fd7cba401e6074d91a112b4dff9b1a8bda939f0b3bb6b3f46f52c22a56abaf5f3eef2be1a20fcaf87bdc8508df67cf0fd5791257af6b0639676fdd8d59cc7c416bb34efaeae1fcb14d3df5dd7ebd721f95f5dc6f75fde5764a8679fbb8fbfbddeee11629ff9acfbb2a7f166fef278663e7b3c323d71f5655e4f5cf519cd9379f8a9eea39d93f1e8c98352c53d952ace2ba1f4709760fa52f715e9a56d2a954a9ff1d27eed3353a9a4f1d2de4adeb66d599665d9dfec7ae1353f62d73e76edf3fedc334fd632a6753aeffd59b73f5bf56c775f4f5c714dc3de975fd33a9d755f5ced0664198f59c6e9ee213bcfb2af8f599d656f37cff8f3df1c7b4d76cdfb62d7e2aaf3c7e8f601210e8438706752db1eb4678f4d7df708b053e9fcbfa9a4f39fbbc7ecd9f6c19f6713d29a65d96f0fa8f3cf3626b78f293b16f78f007bdc3d66df3d64dfdb07952aecb1beb70f2a1d7bbaf76375f7c87e7fb6bdb88238d8c7ff7ae2aa670f3fe4dd765f91a19eb842e5c0efdb9c855c9ebbeb79f0df2be40449c50b8cafeb4a81f7156ab64b6badf7de7ca80fa55488101fea43f77571ce0b8c31c61863cc85ecd87c96d960cc89702294770f52328b02a357ad50aaaafd2b4b0c4488101f2aa1b03036fdc55d8ff10efbabd3b4f660bfe601d93e7b7e61d7be30219d0b11224408e6437da80fe538eec4711cf717c7fdc56926ce33994c99c585ecd4f8528d0eca1b1fda31c69c73a9f2a11df330874252b863c68c69759f3923f518aedfd71b638c7de6755aded4c7ba5a7f57fd3c18017ce035988767115d30c6b90b0b2ce0c75194c392221cbce8e8f7e994cebf57e7c739035a3ea125735915e15054b404a968090fa9fd328f9ac1b62efbdcf1f8db92247dfb99344800e6a5cefc94973edfc603bd699a57a3b5d638ebbdb34ffe0f6badb5d65a7befa3b7de7b46773d7a9b4c3a67cd3397ebbaae221c9028c201c9755d5cc4bf8a48c0a55f8f99387fedb30e6f5fb39febeb62416bad9fbf66017390bf8fcec99ea03d6caf5175dc71b5a9b10322fa081821081ad98000896011ac52a3e4b40b4d3164c92d6808401d77dc67fac7a9ccabbcea34afe40dfde8d17c0005ff32964e5f43823924924e85b8112820189d4ca489d13fadd5a996f45f6e652f192983913af67fffcf8e28bd1a07e8df0f012d9fc87e8d2190bd7eed11d19f793f3be24aea54f9fdb12e71d46365c538d42312514a084842b0211e2004a09e421cf32b23b903bfcca5d3cf427327b3e60d918402ea642aa08abe50f43ebaa52e11d4b30552755663990aa803612aafa44e84aaf83423f528b2c3c7a6a65a7655cbae464acf6ad9c9ab65272d0e10873e86b5ec2e2dbbac658769d9615acb6eebd831a17609c4a112937a7770def4b05d7adb0249153f42ffa64f3f4d49a7af01c11cf2a90ab16716cc519f7e6d0273e42388439f7eddc18b4eff0c23cc80d269fed2e97ff5049db2200e7d2d555bcb5a53abfccc923b0030ca48598c11fa5812299d2275fa1fb6a4d34f778a1de99462409d624c3afd2a332075a8eea148586657b42a208cb1bb0f25961a15aea52261b3cb1fbbd86b152396d4f12275f46f08776499c262078b9474d1b56e6647146cf2251da39c14231dab7b061db32617b03a76b5d645a999ff41d7e9b1ab991eb4d202343ab4e202281dc3699400c9a5b52e4a0a76c0d2671210a73e964b503a86e91e3aa6b5d64529b52049c73697d4f38e5ea6b52e4a26a3639ad6ba28f5e35006b3ac220171eaef1e3b686589a32eb708552809ae3dffaf02ad847abdcee8f5af249863be0ab1d7550582392a158853bf7e553245af7fd4eb0369e1a4d77a45935e57355b3895aacae9961effbb8ae8df4d57419c383d2dddda1a9bd595dcb911548db854a42ae68625bdb2d2e895b2a2e857260404a65b20a1fe5530bdf69a648df4fad98c27489d20524776d16b17acad3aad9bb5ca0af7dc41a9925ab854565d652c78ad01f43122b45f6fbe65a18a9892e69ee6c46940f6638ffdf6300f9eb43e6d9fb1bc793eb68779b013e99a3e69cd69eee1d398b892c9842a3daa842aa1502854098542a1c400f1b1aba094de48845e8f888fb4315a7933564859a79eabe19f9f7ff618d7727e9a14685fa1463fe5e7ded313f6fbf77e0cb56118df3ef31a127e3ae62333077efaf63a60a3639ef679639b87793ca5df3c1e9acf3eb267d94b33b226d3cc686dd226ad33ecb1c61ad359cfdcc9689aa6696664fa63a6ed1f1f29b5cd7dd67db8671cb56ddee723fbc781b9bff4a6ecb98a6bde7d3e922b6d1e1fd94bde0ab1571d726fcfb3dfbebba15451a9c23e7790632269749fb8c55896650d09baafc21415888604a950845f85292a100d091a126459ad2141439c0c713204889e0d7132246848d09020cbb22ccb6a6dcbb2ac6c4fc932cbda53ecd19eb28b36913db25eec916559d69020cbb22ccc9e6075ccaa2186b07ab0626fd6d7d0561d750a4106c6d85fa947d5e89fa17993f65757faace334297c5f8146fbebfbecffc45ddda55dd909fd7abe7d29cea77e2774edb5bfbeededd7aa953c99bf3c1e99e73c1e9abf6abf7c6acd67340fdf34435393d23333a9542a95ca320cc33032fe84be650f610e1b3db3d14107356ad8d8d4d4d0d0cccca452323228d4e9c4712653a9b46d9c6b5a96edad3586e57c5d3232de8721cee9f6ec6bf8a76abccff6ec679ea6831067c6fb6ce78fe229efa31007e57db467d9e933aef2a9ffff5a3d81d57de84ce48a5a2dac05943d3669b5773b2112049475d88db80544cfafe535b1871f317eedb396939e39f73e22413d1701da985461adfb4a962851b204a805d4ba8cb4c0b45a2dadb5d65a6b9d75d6396bad3febace7634835a41a88bfce1968c912a0dc6a65254a72ab959528c94079c912a00c94952801ca39e79cf3fe0ca45bbad56a81d9baa55b3dfb562bcc519823315ec4780973c46a853912e325cc519823315e5861c2881113a6d5026ab568a08fe96befc7222ce5cbe9767eba48122c824649fe0b4a2bbdccf319ee338cebf29f3aad4daf39efe3fe54b37924fc7493c7fd97c3fdc9c4953e73258efb53feec39eeed2ee1f4fab9ae86849fdea33f3371fa3395f2f6ba54fa6cea7a6011573a795f0f2c9ae1294c8673ad3d0d7b0dd334a6691af7d949cb304de34e5af63a43691e0a85cabe68ad79f02f7926d36fdb635d7b10ea707f7a78f23efddb676fd2314ddddebaaf0716f5ebd25afffc91d2f56bcdf52fa7efffa0185814877ea4c0229dc4757acd9e5eabad3672b87a18e75e23d0c37d182419fda8999fc13ef5a6ad7df69ad695b2ec37d6dc892b65af7d5cbfae8bf348f8e925edf9f6278d046cc3b4dfb4d2675dd3bc1a12b8e79f71e0a7735e076cf4cdfb7a3affafa7679f61250ec3bee4f1eccfb89e695e0fd7b119ae6fd3cffd63fbd81e95aa19efab2613ea51afb9466d97bef86b9b8c8c8c4c969134aefbb8cefdd67d3d7de3bcf3cffed441a9cab22c3b9db8d73139ae8465db4ffe9bf7719dcbceb9dec3713ddc9ee26d7add57108c31968ff1e5a3e74f218e19a1e7203c5e06f4ed338967901e1b1f7d2b95bc11faf63ae4e67dfc217d0dd27befbc6fc240109b20368f3901c6bda9c7f951fab5cccf3c46b37df6d8d69d3eeb34eeb5fddacb0d84ff16fb7e9b9ee1ec4bf52c7b0c77daefd9b55ddab68f10477b7b71b79570b76dbc7d49db3afc5c47820c96791d127ff6f494751ac66f3afdc6dd17a484ecb54d7ebce30d3fb6751cf8e99bd7011bbde4691928fdd66defab01b27fe3af755bfb0d039d3fec41bab675bbb475bbb475bbb475bbb475bb54dab66e3fdc3cb8ed77c721c4d9bc2f48d7bee405e9fcdb58e6374fe6b1c723f3258fc7f4f877d763d3f16bddb7793d365dc6cbbcafc7a69b1e3e0de6c3e451a9d2de0c8665192a3f2aa3b28c42a1b6d736ea71f6db6b19857a9cfdb651da675a0ae5a552294dc39a565ffb0b6b388391793c39cb59c793fff27bf3979fdffbb9f4bbfb6c7a101d2e7b4dfbb89ebd8cf65996fde9511d94aa93c769278ffb9a0efb6deabe1e9bce1ffb12e797f36edb744dd3b6f885d0b56dd3b4ed31ab35ededdeb6ed63d3cff7d67d367d8310076e4d93b746dffe0ba16fdaf69ba6699f79db6b9d8eb99fc3f8d5e83acbf4eb4c3f84385f8dae9fee2cd33ed39f79361047ef0ff37a6c7af62e0f62236304a5b9eef5b93e9657b773d644c27422ad9aa1a8742c998a73c90cd1084000009316002020100a850242d1601e072118f90114800d72964664449748a3b1408ec3380882180862188631c6106208414631254dda009689b9a46c75cb1585cbf5107a91dfd76e8b26be37056761afb001b08ade9408182337297b362187a673f5089baf982904c3f51ec1ce4ada51dab7bd9379183344df105414cad29e5cbf74a98abebb34048b3b0bf6692a3852a79730af2fb7450521ea4c36b844b9d71c6f9771b07c696c69ba79d23deba7d04cc9c70f9288781e0ce7512a8c483688b440bd013a3bf743775f47f08f834398326a5c1d0847dec8b494612906d463f1985cde6d76d68e7adeb4a7726958acda3d89f93f42cf0b26f0cbb413fa0947de7fd1a4f4ebebebfb52ce59d77d07202823e7ea0416b541a1c8172e8204be758dbbd65d38ebba18fda57a95b681f474722b492de8fc25ef8af38f8fc46659df6c414544ee064060fab41d89bbc26ec5da4ce64ca1e187d180b83d1bf4e5d3d5b054ab2f1b801a7e012084f3a6938a2084845b62d3b8636444d70544b28f228631094584b961d1d9cc9747834634fd5a60fda14f8c3e7d29ef1f077084b1441ae8867595efde6d864280a7282fb4fb8232ec972a863b5ac22a810d8921372c67f9ec0becac24a8d3544003e78685a16f91e41ebbfb105334ba2257c6a684d9bf4c796513537c8eb076c3820d2724aff3619a6a1fb6dc2693a433215ff0b721f17e730ca95005d5c19517b311b6967e9d9f65e6d35665d7a289ed92105e3410bd7ea4fd49220c49846e171e7604179d45c6e358d9d30b3e78b6fa8335454536d2fd2b0c5dcb06a9c4807d34d3ae2bee7edab04f697b73f803fb5ada6cc64905e6ab1c2319eafb20fdf7ec5e3a0c1bf5f905ee1f56e58959b8300fa4dfaaec4f58c8cd20bc1575cec75b88850ee4511329787f0b6ef180c2d45d7e7d040d08b18a80ab5d79974b4bb774917a0f8911b09f3a4e14d205465dee459c439d9d418d21a71e83f8032e751951aa495a43e9d022ad59faea7a57d783c90d47de26c5a1a190844f675a31e5a61b52bb2224753b9a88f5f72650849825c07d224b5b8da89fdc389829ee49298860cadd4ced9fa6cdef0c1b62e8ce8b036117b659bfda4339f96979e4012adc251fe052460396651cd6ac48c053401e6c09c3bc280fdd4061fdc92f1b9db199ee1a422f0870e3b3373b0abe5dbb382aa9fc728379813b19c7f3e01e34da8903e4007d3ad3740f7e8c6207ead190d15f3a860d9fa8937236ec7cac2a555d408e05e342c10b23b17eb47cd200453a89d24ba7c1f932c605dcf9e36825d7c0a502b6639b50619144fc7cabdca32fc0323bfb42f19f7dcab0cca2f8be20877d677aa1ca537d06d645459a723a1b17e7d731979aad8c75e7985bd9ba6a3797c989767ed90f66b76c3c4a05901deb6ccb8c107742dab04a2c08561597f5eba85e01cc37f009d08bc1192a6b307b0ab1c09d79084f68370220458bcdb5d9fa43a40dec794ec2ae7fbbf2c0a887450766d449be6971025e28678068ae3fa766fb427c3287dfb020a6fe8c0d9781f327b025e5d2f1e5fca4382c30707e34a1c86111e0d3086bee62fcb50862e329a282a042931ed9ac3059a15a6784c259d1405759f42accab7f8c433540321fbbc98508e7c06aaede7ee2382b144a7c7c54ca733f2898005803cc4cfe34d645349e15dac036e00b2296342cb3e2451255382d66fc7cff928f223ddd70e753d261a2c34947128f263848ee20f948f2a32487490f241d4a74987474c251c283c90e921d493e4afa80647942f7290a7ae5c98712911ae8d8ae9103288fe35844b3e788440929297a0b43f8d0dac8c012fa0d7a59c44026dc3856dff34865cc4c171af06dfd415d3ee3fde00485b6fb4af157860e784a135a8e6c5038a8354e0e5c01344306ccdbeb6dc986520454762e7e0ccd860afd66a2175e02b8543a0ab4bfa442dedec02a7c5372dbab258de7db5518301b6f5e4e2056fd3d9adb7c51700e463b611bfea3698a7fcbb58434066f8847e8955831884beaa60b879ef5a7a026cd52157d84fa343ee0380b91aac1eee496db43025ceac57569881ea145914e0dbf009180d6be894d0698e648180c99406de92a250c08c4362a6eb376d754ffb8c78c12ca6227febfd98f0058097bbf0c7a21f0dabc4ad002a17f43489000b4139c1d45096d0862f200d5c2a320c6a020b04b3a27d9988698230590e4cddb1881cef8d3456829534bf86e84c334d8cef0014bd853e2e5830f396b2b08444d09ff80fa6fd030e88134e1e3efb04701f55e4d2794e902c34cbfdf14a8ea5e83ad3861df1538bd8624748aa6f50a5a2784b2e939b0f9600e3638caaa80e99701f32714079f80fd818e5749feb441162d1f234113c0f37c2e392aa0e8d202a779e5ecbc35c9ac1ccba7fd5d9788de768c9cd1b00fe048a0720cc34d3ca0ff7a7e063641e42a548c3ab23599f4a83ed248c2cf1dc74703e571636251ab1aa9866572d4dd947710c15fcd7db4ba09673301f879770a4a34aad65d5dda78ffe567dfb5b0384d584624def42b98ff1e65363409765b075e80ad5271a37ac7cb5b03370cc06be4cf0f6556050499c1df82023ba7c1754fc213349feed378e3142d0babf672d8671f5424e06b2e1b0d862f8904cac410a0b032054c48fa0e371ff474e3f4bf7f41189f0a473470b6d66fe1b7b92c48879c6fd4ac56515704182c1268446b85e65d2a8764a7a855d18a08d58e400e2eed51c8c84a94d2a24012dcf4725ca52f5a1017a8a8b296e7748fd7e5047e7c4a2057884e1d5c429dde59ac946907e6008704d23d11a4c272163111429b594b2c927a47490d1db46bc98d5f2004bb4998fc6051d517a966a0dbd1149ca99a9e57ebbbeb53f6d146ecd95b8a763cd845f980c11ae365a32ca4060d079b3f03843c436ef7c8673c990401833624f91ae1dc0a209534da3397702b9985cec8a44eb24d82d4b6495815cb56a863f1836bb6bdd171fec587c68df6821da9ccd59a885c8eb11928fc8f152ef6280661db7d463cc724a8623da3581529d3c1059b1d9bd3e9156e16d36faad834cf5f45ca346c692794b1a4669496d6b515bfe3862dc5f7d921374863b5d0847177c7f57d72fd0dd90c8501a73273aaa74904b11e70de034b704b8aeaca096a85251d44780ead3ce75dbb666d03788a39226c1116dbca07665b1514dd26f08eb4bf58e27b11c0b71327956b4b808ca4f2da28fad13002fd2c22c5677befc06ea9a74c552f93bd6b3d2456a6d0f66e55eff57199af37f77e7d0c29a0d90b10ba99444cd2fbce2ba92192e0888bfdecb19649d6f2e0c07c7684429a01135e8ac8262fc7b9fc2ea81c2f2ea156144b1ab28b904b03d245fe368d43f0a4645049af1481bb0a47870d31502283ad9c63a504ddf0ea31fb4628f6a7dcd0f5ed52054d462301c144f0a38683f6c18f61b5bc205ffd304aedd2c8bcaec71fe22d2bfd90067af0508e5a7250e4141a5081536ef96e0e3ff8c44753090001659528457a1e02fc3ce2686a202490258c07787d6637ae7d3729144e415c502ab05c07055613726a1cb765f01cb7db81b85b81e61a1cd24830e57ae6049356d76bc20623a0e77beebcf05676021912928458faa15e66f783e121c03c5c317c06d2c324df0609fd21dcc2feeadf3c0321fb1ffda063f757748b4b86ff9e2ffe09f9e73b52a8ac7f86de7f46ff37fcbf8a0a005cdc9353b121346baafb177897248f5101c076d7a50054277b7bff0180c2e410fcfe2b5c96a5b6ff9b0cf85a4e16cbd457bec18b1a15a7c7e84fdf4aa93d548cbe1d9bbe52446144787225e1a38ff1d51eba8d1ed1e755a1e845bf43262efe4134d1277e5a54de09fb069e2080a6f303a730332f14feca887e833d798afb6c176accb8ffe8cffd939a569c68b859735d9ad0459f739818a234a81a743dc23ac471aa6f2685580d82b1586588340cd472d5f24e50dbe88e11941de67853710b2cefb13ecbfacfe039b32c9db6e53b0b8eda678c676789e7727652a5a8ab38bdfde59aa08fa9fa09e9ff452ef48b3dddce38d2f4d547d52106850f837b9e32a2467d8e986be6491894d8413f40a9d2f167d59b1f5f1714a47b98cf9e38e922bd44fac4f9777bbc7bfe7eba7ddff13d0b541b84bdff460edd19c30bfebe3f2ed54df29691beb7778a3dea98401cf2f27aa2b751c7dff8825f4584112314c5e8fbece2fb38b94c2cd26fdf5b26b6cbc15cf86fed8d01e004e7278191eb220e729e36defd3beb04eb52da25c1004cc293971f287dd13beefb04e27b3da17d1494e66f7c21cef944545a4b0ecffef6f02caee22b9eddeb5876f6b804a62bf9ccac40fd88b2c810765a7b172ea808115e36a9a9568cf74449f7e4f24429530a300a9c3386d70cdeb0a021f05e46dd72f08d1e40f5ef6b2da27b74525ff3d79d65195e0cfdd21b4bf019341d17e303e000143d03deff4b208f7aae63bbbcbb30032da949701524d352278a9145faeda9974c3d83b8166f6babae0270a2c3d52754202ec9f2dc3b6c45afad07c7e13f7d73444dd7a7b634fbbb9ebd2e3c0676a97f0c70b1a232af9372c3695c7f01d83759d23fb2067b036c410fc3ce4493d47e12c46ec9af9ab113b5d9e67490bd60d9c15831193b60b355506acb633fbac5fd459a09acb3bfd22f227024a978028610ee50dfe541b84fe5afd056a061ac2a31db50004708d6031bd6dc41c37fd442eae04e841c6f08477aa5f08cecd889fe1bc1f6e8690f53494ae403e0402a085f7a048304bbc7eb25639223483176250a5ffede05bc2959d7795012984f5132d346967bff04f191ec4fcd6b89abb71e26e27e4cd1d1e10f026814e9e51e15c6e580c644bcbf13a8f205c4e3ef12f3b3dcf9691d5466025a4cd3a5dbae2c4feb39f5194ecf0731b802a668180da53eade0a17ce59af91781894827487454388b8603f6f6c952ffc2ee4cb97ca689c12b081b7432bb2e6dec402059f8426452f8e3dee22cd99237cced09e9ba276401165fab28da48e20fa1c252ee46586f8ca0fd26ad8d5fca751ac9d6a847192dc7d3dc7d09a2c8b133b11f4d16c121b925baffa81976cab0974fb5942868105335904ea605744e8d3cfdf673ae0a451599eac0d51198c64feffe1eab299a7125d4f1ca8e89eedeab44a60e60918bd678fda1a07b2770a28e90d8d3882ebaba55142de78760e8532efd8029581c076991a6d7cb62651a34d9e9894e4ee26a412be3104948caa9d7a5634ac0c99bee17ac011b2963d8de3533cab45dc71a496eff18d805239f9c1b2bf056444313533c4f6a5b6ab178fe4bc5f3856d12a45c655c4f44b60ca938a48e8dd12499cd2c88257f58e51f36b7b3f1820d20b3342e81cda8076674af23808d691184e115318fc2ab7ef7488d848fd47cd872db0042472ab202a83017d821ee633785433fe186aeb563703a820c99f5e70a3d788a70b6a9e8f6159c319100a03a100a103085c8e0ef402e770e7745d2d23ec86a414ebf71121d3b0c2eaf480ed5e51edbe3a7aea7838777811f1406b7ae3788cab19b673a047bbc4d22357d029b889af720df126bd09823732b7d8a4a0a17673c1fda44ce686efa3d51116d1d520db8a5e024c10654e7e617514652cd8044930f05c38c17d0ab8c24329100ee085eee0412015c988e2e7ef26fc38c1eada7c6e588a40da955fc3a1c354a256575a648501636e3062c5627e5239b224f8bc7250d20d6722e0e928699409e8fbf7211316ad41d842e2b77a2ea579408f0ef8bb80e18bb14b92dc0c143ab6ed8a3e1008e90d9b4091356de7bf08b73f92b3e297faf887eda34c59464283a1a5b52e71f437bca3ed79d0e2e9a0622ece7281f9660ed614b6c8ecfc523eaeba8126ded775104e20269b4bb3fe32d1462617fd2005f258960af36a560a2606d8e6ff381be08ca678ec00e14a2627fcaff59291a394e712682f3309d158e8157ee76c9b3bdee6282b0eac137f75d4c1f21449f5d282f45cf810d0981f0fd4097008aec2f03b14f8d40618fa5db567370473ea69ca98119cab9e3267366c6e06beb6e2de5723713117040fc1ea15895d4c2ec239c31af1f274c5231cd7b4e70fcccb1e311d59095bd2f7a2fb3dd0df93128d42294c8757cdcdfe0bc1a516511732b133596e5e13b34a5512a731a5474afb09361c683c7271314e0d048e5a7e4d789a0d2d2dff2d80305044ea58dcf3eedd200abee7e21ef8d9797bb096e69c78562c26cbc7a9c651b2257614518ae951904c66313b804fe453ebbe44d6699cd84ca241e992ffc4fd817696446ee803549ea7e0957304012eca9df77994d861bb6883d1b22dc13e82f900eca69f21fc5ccbf7a4ac49b7fb93a3503e440c7fdfc23c8ee16118880da0a0335ca1d834b806d7c11df24a906e34200ae2750283e7710690bc5b7ea7196e53d302440819ee68c7daa9fe360ab1edd0520a459ee331fdc99ae2934cbcc358aad7a3cd1332e175eec4ea6e6252a82cfebe8b8b303fbcc0b82b4558f716a5ca01140b3e5ac12b149a95e67705a5e6c159bda7f8b3be6b676e6263cb1f342b782a6409a474ecc7161f876db474bc46f675d32dcaa872e288f1a1b6c4bf301e9d0032c431e8b043aec3e57528f4b366f11a4dd8a51b387cfd96d6f2bf281401ee556345bcaf0f50a7204b7e2e65d22f30152b5bf4cbffd6221261c256bad1877795977ae01ad02ec24b155faf85ea6163c17c8e1f0d7abb89f8ee7fd444f455bd1a62e81eed8b043385129a728781484c6e0b7bcd59c85056d2338ef703db86f08f619310cedebbf345c27da56d033ced8a81f89f3b649f109682bfe4eea48a023391688e61672480e7eabee523a8af810c439150fd587e4d053974dbd2dc99aeddd4f8afff1109c738b44842b493c6ed1c82122ac81b44ec4b68a51fbd4440492e57a3e8b08cb58fa3fc26c871c1d35c489c8946d73acb9490ee77c193f01fb02a47fe41e7204c5276269a9960b7116b954f38978ab4d210fd1f020671054685efd7105c7fdce3dd1013bd6067c9a708a4f44e9da0b448229c8f2f21a396f398c0a99468b4d22de7744f802a388820c81f72bb28f7d629c3945cc002b875e62513c4a19c2c58cde51dbff3f91a1410e8ac08abefb2285606ea0f72153b2b1fd3502329ca05bfe43e1bf62a322bb90dbf08e5cd8c771e0e05540bc902a8a76069f53c488b989ed2bb8a9a9fec3e97381df4f402906e13885f0b734153130ac1ac985b3162058447b7013c1d70efa4326ece3c8e4cda6d01f4ca8bb390f532f055163b216065cc42602b03ab51b878d37f82fd6b2de808b987fb1865b26a48527561d2e66404b1648c2bdeedecd3a1a854b695d4110e718970649ad03985674831e0715fbf4b29999ab70011ce41335d34a6df62bd0284f8d2b2d0baec56356b4688fbfd037691c8bec0743d9b18cae41a2da48a04f0299f039e83e71f8fcbc2c44ad30769817e360f21f8e4d2a712c9004ce726ee4c478ff75a2755a34d602324333490567ddcca80380f5aca388a621cf7a8bd6f5e7eb88115f35311b85b3169e84fc40d3930e7c75c6038c3ca48070d14b9090af1e84f3ef05d3f7f6fdf9e8463a0ead3dbaa5774fef11497151d2ecdea41fdf02181501ef1960048dc202135e715bcb0465185ec9cdc4e10b5fdae775ada08b9d19e4de7ccbda6a2e1ecd0b99922fa6891be1acb36a9af07eea27c7135df5910af5ea6210a7799fbea469561669402ad0333fccf53150c6c9ee34cb5be1a20e21aaa88eb82c9a2fe3d93c6f9c568a397810a298a60f2daf7dc52a099ef6db56b95a880d02b125f5d3cf1327fa330d86bcd8687f21ff8eac3e1a9e167594d00cf66c57c887510379079f2fe4b8e656106e52cf5aabca00ca301db58a2fb6f260ccd5bbbbc2e0d4e475656cb75775c0137b86bf5a5ce22320dcc1da2a0a8bcd88e53563bde0fd400a592c162b1072e29487a55ffe07ff84296b82720442a4fc68d4d47162cff9c13d34eed2d6a53189a28468c6d02a38ffe81373305a9c500d795e894df3d0559080469cee3a0f5a149ff7b97be72926cbc0443a1e80416151572bd7767b9c04f68cb2b577ba958bfeba1525571bbe6067042b9dcecf83ca7ac85da6d60949a801be35481de08e032068dcc6a65dfcd41905ad8ebe47946792c12e3178af447e63c5202d10b14a80b9227c9b7459934520649a787ebd2441fb09dafc690275657f10e7b97616e03ad85c8648cc6293eec70e71f399d7264f7066351a85b0ef4ad1652ee94b9941dca80625e178144b718484b4e5d736af8b5f6f07d87f13c947bf74de0db662c5d3bd1fab91510ff337729790257572ca1263214bbd773089bc8b9b32500107fddb7e6ff66315b180d01e474b0f08bace93af2b8a6043265bdc04aa73f7fdb71821686f5688fbf708e1f8c1f66772bfd4add57d623be80debc7683db1e0c61eeabd34d57b98e95ecb459d18e4a12249350cd44708559d01adb0832a2648b1cba89313882ba35744b77fd16fd99dbdbe4da53eac9ee8f316f8822ebc138cfbad519dc7b95e20eed07d4e6eae99a10e4a01920301f32c39ce03eb421d389ac139c395ae12e870a8c5faad2c41c83a6f4801106bb979590ca42860c4ee3a292c6756f80f1d5a378ef332e1359ed71be04ed238e44e069d095b58cd14a4387d0be014985e84c3691f0549479fc2193365ff9c2bbd988594bbd0b0370c4dca9c04d48fd6138364419eccede646b4820e46069db75d78e861c5d00d5ae182d21983a5da934757a019f76ca5a020ecba9a332c2310292cfb06f3a4423620c0c511b88dd75511f64e868c2c906308bd80ba7f7b0dd6b107d933036b875dea1192f032498534d9da3316734c5aa528bb78e0258a6f64212a5c9e875eff839a7c7d71b7e49adf4ed9e1563da9a2835addcca487717bab59127dc1deacd666adc0b23a755ab5aa8a7fd10e2d853ea4d349e4ca73d1f99246bbdbbf21290649aa4c0c4daef3bed8dd8624f750cced2506cff6a0473dd6218658441b4f9da6ed877f343b6ca27ff0406991b61d410ab0a009baabf056d4892063542644761b3a28f7da78d1053e0e116068207e315e0bb9f1d8f4cdc8f474bb80b7370b80813412560a066c579fb398e6afad0821c9121f596811f6ab492e39376b83de4938027c81dc3158449c82a16a16639b2380d957b94137185f8ea2f6b7006688a318196dc1368ef54705b303b3972d03a0fa4bd43433055df55097f929a459be04c1e93fbdfa9f14be15665444935e52856d23b65f904235856e4b58dc9b87e61fcf4c333479665d016b1d7712b5a1b26f8e2569ef6c4f8bf529b5b7a4716d2e0d317f85493c4760f7df58b3c24b0e2f485907dfb46e7e05400fcab332501c9d8ca2da91aa36b1a77261025e22ca577b9076700f592809588ade77974275472d6da148c18d375b6b0028f49db16d4c35e73dc76507ae0de2a796b238ea5a9c310f7dd71637a04bc4519721a6fabc1ccd74f51b684b0c34ccf7c310a3f70d629bbebe3bd3755cea60452b8fa733cd353ed1e3736dc0f12d772c7c1245e8ba62faaa921221f3d1d78c97a320f4d50273e4484e6d7964fe6d3a279d5daf22213b6b55debc1c07e0b3f0a0d2ac32b1af5d7230854e2c19b6ca9fbb7bee94cc8ab9e07815fbc9d8b13bb86746c963a809b5eb0bbeea250fd8045854e09c8e988586c7b4f5ce66649e1baf0f8acae8585f9c20ef3e992f381157f86a847bc86dc1e05f393c99a4053a5b4ddb0da3ed980eb32292ef81e176733df8b3af6e2c0a832ca25ef6e89c83306875919b40ac4d26708277cd55cf0fff34b30120359657589879e530ee1d67270df7a6a126e55aa5773243333e4155cc829bb8e15269babf0cf5428c4c51b8705d8efa454a33d52d0a4c072399a06d55004c0bc2dd16167970291333f36fa05ca89c936e9660870528641ba17cf3f6f9599a78b491066ab905cf51b86ae079d78302b0eb101cc704e0e942cac5e39581935a3d9898e1a14b404ac48a5227cd9c5630676e374b7d6c7770cdf2560025e2d0515a26d59f395a6519821b86621bd98a006a5c07d48177818651c31acb82236f250b0fb32973631751c134fbf28178847892e3de40d45d99f87ee10189d255a81cee859c6b0578e506459e97f2f41d760da1376f6adf8e51a314115bb80f4120d86d0ebe67005ff09ae42f3e191769a1e08fafad2ed3458943b287c4c41231efa11dc70ce019afb2c900474567d9d3179e60a02dc4375d2249a809f759214e441ec7cb0ae30f538ced755f9a16adb829c7701246b905a34d1fed3829f214146febfe2ca5207127080cf2367e22100cc0486cb658c05f3fa4a1b3007253b7048919bfd14371efccfb304c2202e5e24557969aae4248c8f05a28773227298c486eeb68b2b8136b9e87b9a521c8f04242754b7f9ce0e80549b86f25b51f88fda71082145fa4f04731b9aa5969a94cf98ab942bb19f7250a951a1975b6c2428215767c03222e4b4dc4982d212c49801603b0a0d6a6b43928e4699f2a72d802103cee44fec0364c4cb6bdc8285cacfe8b59665c0b340ab6af2c4de493242137328404ab13ab40146143f8ad254b32ca5368842076bbedb067ad64e91cbdd6ef9f5ab471e8b81639064befe9278ab07c3797741e9027e8dd89a5626c16d964d762cc1f0f2e9054a6435df9cb929d0a6d690b746dbd5082a98ba147afac09cd04e2fa60bf886b18438fa7b6dcd7e1a922b186413eade7cb35b426c48b8d8885c24ea3f65626255eb92b8dfe20e74501e05f77ce05b03debbcb15d2d9de72d455e12227a254aefba34f35e85085be2be58b89752843c85935d4c0d3ddeac823f1e9815da0c473dfaf9c4f66584fc7ea6b18da89fd206a16e6685e25815bd1348d88d98418a984e2d40407515b022a3f92aca2246bf4c76abf5c870778f19837dc469c128275ecadb1175d979299b814d995ce0bc4015866639fd6983273d15cfc82af3adcbe9d0d26d74b9f631df3e79c262419c10afcd3fa595fe0db08b09a85817380389f45564421b02f147fcd190b348e613e0ae9bbd6ac84d5e21acfc31006f109491cdccd5323cfad9fd6b3f96730053663293fe6c01be85deeca1f815847907bde3c1b0cc77c20e872cc1ad451cc82ac65df96ed6e53b21e2a0f042312534877cab9caaf1a63f61a6b968b72aa51d08e5f2e74b9ca5097296b83c283ab9632f0d1e51d1f00a87ff004a16dd3c8c49d3ee113ae7794f23e26b4bf34fc0d55e73885ab59865ff76528bc39e730524cd7a7358f1071e179142e7a128ee91bb6461a9d285652e6adf14ef961eaba010249b2454bb173a230b56c043acac2ccf84894898f277dd48476fd6ce3f77f1719f136ba40008a4ffcd5c5fff304b58e0fc51667f5955f0767c1ebfe8bd59d41bf0f220091cfcf638f744ab0878a33c4c179ca217daba80345683da521309aff6d2a0589e9bd40e6286f91408c2a96f56cf87bc2b1a352b8ae20b6c963cfe1fdcc1bed6cb9475ac7d4a5e7493dc655a72754178e89896f8aa80681fab79ee20b1a11908839c892f54494d63a20ae23a8f810dbea821609504440d20b1a08cd423e60abc5a7ce60865f1970d034f384f8f42ae062152e78eb564ea8fff81102b62cce15044917a11a94e7335a483114ebf8e12fd9a819e64042d8d196885a3ffb7e190cacafac5c0da301465cbaa371bfc00fd429a850dd568d6eef1ca22383667dd715eb85c92b5756c80be3540c444a24f65090887416f19a65775aa9107e63818338a7001a6a49e900ddc46a1b9896d43bf30071faeea29271ba28efe8c138389a5cbae995ed3f1d12016212cc8daec817dadcb0ff916850dff57ee1bbc3e5a157dea821557065770e251e0bfd89324df7479b0aaf75a5fd500f61104442fd7881a722201d2bcb2f86f729a44b05e7c618e572665bb210333e4504434466abb7a0ae8f99e58b2714f1f2b81488c6245f2df14f993e13f872e39db58d7a44dc70fae3ec13df56cceb5321078f95cfbaa8956ff216aa7d15a9f37eb93d129002f73b52730830b1a4c72256b88ce70f553a39ed21fc10a504fe9f6d72f52427c64b8294ac1aaac6e9e1ee8b1100d6c85a2a368f83a808b64e5741be99d0fb4ddb1f5b6fe2e68af739878d573ceae1761976f63ba7e9bc1eb80ff93292a046568bdf219b0ac4b30197ffb680d33cfd5a41d0319fd26646aab10edf267a0c4923b19664da316b82df65c38d02b730a0f686ad4c0c753ee6080188516044e027954212ae4f4b6b1c8a75c1c1392012de17efde60a49c8e81162e9dd84565bc8b40b533943725c0544e5f1875a0ef18bb66af94c96b80e57e883d9575af48be9e951a31c485c9ce64dc541fdec5ca578ad05f76a7434aa15951458c498c0f74469d70cff0559591436770754fb1c9060b65f9e8346057b8afbef5c1e29668fdb2480d0782217c8fbde5049ff0e15041a1085cb07d5d3634db3d0bb0ec69ce9bc2ca3385f51fd2f87998df29d44c233c7db73511d19e8fdf9007413feccdeb389b4b78a000191f907d184874811b0cfc8cc991bd9322f5a1cabcbd1be3c375e4b78a41ed22003639d35b13ccf467351ef78e17bef7427d2be4189a7301060336c81922bed16c73fc200247676b725c150c4a3c08fc09036cf0da989d9eaf9a4270aa9d0006e4150b3ffe685e7da29119c1048b34f506c68c805ea40e53c97469566cc00336bb0f777e48448604c70ee941b9dacad53ed3592680c9e9ff77c59dcd6cde727b3cecc7b8f352461a400ae1d6e4b7dfba3a0bc6f42af86b5793fde401411c5d1793898c6b0b068487091c14450309d3a425491f9b9263711ce1cdb90117a85b8f489b8c8c56ac7024c491c9143df5b29fdbee5681454a73eb9ed8337fd84379c9324b4b2c2dcfc7673a8baa25645d8841ea8720c344d5bd8e30b8baa19f4a043b4a8671d6e30b0c537f4f39b7d4da281908bf3d8816380ab7ac873a2268c1d05a895ba231f5a6c1e787ad69148c0466a51a0911a1540d6b3a01f8d7452e3b87d481e5d4b8467b78036eead91fee070aec1b056483cb0080c8ea5407674761cac3827c7a360a7bdbdd959b13e6c9b807c96e8252806904b32ab452d71377376cc6acf568b2cc6357673b2ceb8c9ed41f557ca6f9ec9d4eaa3a82788959bbba15310325ae18330501ec70a7a6b7ecb83cbcaab57c39ae53a87fda6be34209c2637981a2537b0dbed8ba8feca84cebaf6d1a1bbdb31180c5461a07da0e185086c5d5fae0afc5eead9a9c9602b71837d44c86a20a90dabe205e6c077a976084c76ace9dd055efc158af6f65d889e9793a403c4c8b8d8583cacfeb77903c1ca014b8d8b93c786255239352172a690dd9acc5f86b4847585dbc189cf9e61721adb322c82cfc95fb786edc875c9a9a339c6c6445f19a1f1a8299aa1fd73f49aade0617ccd8495831d74b1759e154933b3dccbaf66dc8c725fcebd63ed140fff7ff0c742e39da899f12004dcbdc68b05f1086ed48529be78ebf4c0ae916356c6484ee4e3d7482f941e7f3f0abbb86310b220c243ce87534eaf6ef7e32c92508f6f052e5d8cf03237d1a5b961e4cdcd55b3b3262eb4842fe890edd4555525326e70a9635fa792a1eb28da0880b91596e4bf33aa0aeec9cd3fe2628a670b65d7e865095e39e0e25e7a88b93cf4c8538b562e57a6575ebdeff7c0f57fb9fb300e61cefcfddc7f6a485b9831295249f3912eac81ccf961310f2c9b02eb28c9ff7800a19cd63a2f67bca96fe0c46c8edf86be57aa71fc02f382f0f2f1b2ceacdfe53b964d4dc5e0145cd0e7160f6d9d295794c39bd6b449a7a0e7177a20af096a1214f48629243cfd319d243607ee025a360253d7da9714cae5dfbc6f75791c1081a2eb30f43fade23b13d25645af214598d86030aaf0ce71ac3530310c227278ac34b014d1eec5c8771af53428b0c2ae650c8c27c8948121f1e877b827380955f5709cf5c98345eda3b311b981ce7185a6a0dc08f7679992580380584a7a7ac293d3cf62a3fc284f593e81e658608233b60589edd5290af68730715155e2fba899569ac502f93a88486df60872762638d18b1b6bfed15aa15b6334cf1e2ef612e1b1e7731cbc86008634cd8965b7efd6bf0d42fce3aeb9d3accea56fb561b6d86c9f1c3f3c2256825c905156b0c48d11abc65abbaa4708ee31840801512a1e635ef99ac215ff4c76940a2bf198597d7bc4e1027be10200252e69da1e3820f940aea71d91f4fcba055e9ef2b886e5bf9adc41cbc130123b3009b710bd65adf9de6f70b1dfb7e5f173d9018e4dafd4a0e2a9ba175c285c3f14fbaa3505608b806ee5de6e9b13fd501481ee024cc028b0a051a032cd47f37d63cc0cde05c93ce024da69ab51c088aa3b3221700b75d1200e49b6ec40185c6befc1ce9e8c569063845ab1922adb4d032dc85e403004b885784ee8a23aead83400756b4423a07f853448468075569126986c2631282801a1b88f63ee16be107e4041794d6a9a8fa427a0b07f16a97d58089ad9adc712cb9b578982e65bc6aa28b096721546313dc9b8360a7c612eda4a31fba57e14aebb410ab06941e85d12538ad27db884c60ea42398557eca03e5027df5e47120c216abeb628b6f85640bee49b75a9442d6f4e73fb68e604b8cca34f2028050f36c358c0ac5e9c01f2ff2bf828f90be68c588beb6359c32dc44445fb465ac27e5bf0cc1dc15c2c63c4c2f48a6c2ddaef67520667407f0ee28fbaa0fc06962e0d6d208748461ffbd68d1dd13e997f57e46a45599f328857503e05eea3bcd4be9d6367b2166bb0ad905f257f84e30e497712694f6ab549f08433489c95fa57daa1a3199e6fd83198e3d1e3be813e1bc7bb49749ac611dd80429ff9884988396432c7be61e441d0859aa4c007b0c92cff9709935612c06e30f932d4e99dd5e94da2c8d23b9a9f3360e47032f255e685e60c2a845d42863e7f389099b5f734421a8d21183782abf0a0d58891ee1ed31fdc05c0217e6e3a679e2e683cd38dd22dd393be1f5c11966f173a4485b9668e788f9bbee8db961948e3e8d200bde242d5bc1a27f0b95db6c451993aa48f1ee565ea9aaff63de10a4597c325f0e1ef0cb682ef8748e9b32079b34846f0214b5ac3f111eebe0cf92835fbeb8c16b91b222a0b76d1b287aef4ae940e9a27d5b759dcea8e68bb3ab588908875176f99865f7ae9c3862b55485c91ae1db3d42ade585ad62a121bb7c78505569ad64f9801015920c61e83ad3c6e1fff9f0d089d134fe8f97a3bf2f6778dea63ae181c7dc1fa5df33197323bd172a50a194bfbcf381a87490702daf12b61bf86e05d9de0eedf579ffd3f47d234d1539af3492c43dd5f657e94dcab1a1df70fd4b372a8eea692a35d094e8da164d8ebbfa13f29e7724f1b4cebdad96d99b596079e5ede51d6428b55441a485bc81ad27e97f162ceeaea429aa1d96c4351a879ec815e9e9d922be819d45d3e657dc31e26efebdca2ef6bb70e4631fa93008cb2badcc2eb4a37e1696d7d0821a4f3d960f21388a161671441fc95ce2e8b596097cd8190b6593471a0e485f64689de90012f4a2218460f6bd6a4bf5727696fcda07515238004243a6d1405dea75b055a887ef7029a8a780d32a3cab9c9b86b8b5b0b87ab3ef86e205f821b128666c3c7e1c6146228a6f86f1663d294a2104c294537790bf1bdf25da15e07cde26e2953f54bbb8490e4d2c1fb6d73f0b6f50345206132af5c730c6a3c71aa1f3ca888cd1c4116ac2c0c0b4b1a8b5f6d9dcb0c258e540d562041c1137277eca1989b2374e2706ce792e41c17af595647da73030519be22ec59511a56b1aa770df686a4bd2abc1f752d9076b0f4516626a29a266a66708d4585907e57d01624a6dc03f1255c8c1eed45b9ea420f583a937da9db2241745e446c27255079115313e7e131503e1fdbd02e6920db1f69021bab5ea020ac9a5882b9d8f6a3a118d6b23fc4c02c00e874be5116119b416173b11103fa7f635a208016adacf340aac545ee9aefc93d04df71de849e8f01d9c50cae4f1b91d5ef5775ea6197a541c04eae15f2bb5012c5ae9f09528dd7c478c253bac9f8ecd0dde1e67d5aa738946b83ece83ebc4c19cdc59fc5129af1a863ebcbfddc9e915ba3b2f18978d99a93da44828756f6c58e6f630ef3e31395e7816c03ef9ce935b3b1b99fde3d4e129a9507743a561f78b9ab0e3b2b21ec55f128c6bc3e5e8b383c96b5e63352118586a898507346892f7c2c254e2b6deb773f2e1a35e8a003dbbc534dea0b1bdcbee43d08df9f3ab3449ed5d9d8aa68dcd44c9635287092f5faf88da612f7e9cb1f30d7457eef1d4f87be5f1c0617ba2c62fe87788df4929ae0326dfd7c4ebc878eebfde97cc379c046c91c9cc6dcf41f0e22d53efa04670182aab963a0510552e8a2eb8336636461ea13277c0c836004654751010292bcb6167941273296c184203f7e520d232d86434efc79235956165c921694dd427aec6c58d31e41077c90f26e9b278afc205b452c72bbff733cb45bfeeb2719194c398dda8130f75efe661ad6f2af14736ed74be4266e37dc5b6ffbd0c025c738e7a58eb327b134055d5d5c71275a0ad4bc5582cc275f4dafabcd3134797ee02bbf5273fe9677304e35953398225ef9b5a28ac0d73fb8cbadf6592b6a6185ede2d66b3b72d2ee16b1190ddca51585f4548d6da5af6c23e76268dbf6ef22ed6ab8a41c1b7bb2511d1cce1daaf22b32662fe8f7de354fa683bea80ffce8e0707241f74dc51e0925e4de81f11e69043d58cba8f48113bd33356627ba23649c9ded06fb82817e8e18f0e147d26d8929b9ea6fa654bf269f189ff738266bf2b6880fb10452701a196c5a2cba667006da3a5f0236defded5a3378da77a86450da7da8f8f99e6642c5166495ecdcba24740d2dfc3f814b48448a9a0b376c7b5c9bcd2b8c7d295e9ab30f1afc0ff0721c47aab240aa313bb2b6813353a711c2c47886fbafc29ac58007295d02f1c9c3346f712caee2039b502e6ac68501eb478ba14603e54985e6747edfcda22d3d542a02987aa8c1e6107f056bfb4d86bb25794bcb0b30ab4412ba9c860a0338ef41e83ac46e231a7bb457e16e6281dffa89852fa6bca5d34c0e4f8faf0ab4a1f8660cd87961cc3b8aa4f48c52d63e4d489dce4bde98f589b8ff14a2e3d4dc4b1cdba4aee1c7567962955fc1ddf2fa8c8ae2361021311674df1bdb076a42e85ad44d0f78e39d1d633f8d48a398d12d10b09fb2a558946ab443a8382c03c23fbe5afd37526412a172ebdf3667cd99433044106c126884e0116bf7a53a23a72a209d921e5bcd9a076842929e4272e1b08c997cb1273e232af94edf808aad78e98d39aca365f7aad474534dfc30e01f28c08cef138912b7cf03bb631f7d2cf821fb32a738c747bf5d25639b6f71b5fd4ddafd639d9c6cbf9fe6e223c2420e22fafd1a74f69af4874ced81908ba219ed9153bee6ffe9aee58c00fde98fd0d04a8fb9f90ca654e146deb29fe9ebe8e7716c8da606dcdfbd25a50f07b68cb2c77fbae2086b591139e534a8c228b8ff9e0b0acafdb4919a0c05c07cc15cf00de51f9a00805d1bef9202943a3a007ff81b38e6c34902f3ca7512af486760e78ac02e3ea6b304e7d89eaa24a400d57baf716ee96335636091bd51b9d1faedc7645f35b15676e17e9f698593c1f368d6f88201aae09d94740a3d6349e1345156a8f2611b5f5912feb9948e1a632073530fd70a952e0bd342616ac978ed15f359276feaa230dd9cc5b162e49e7a4939687b78971da33d24b127b299962e586008045f788184388585f8983d851dfe0990286c4c6c0f724f079729e0dfe71f033f66b3c64ed7320e15764b0fb7c177fe3cb8e8a6ce4779cc79e4f18ed8cb2c07fee32e2131b1cb3ba70b59212cb092909017cea2f0fd55614829f464c041cd0691f5ceedc13621fa7117ed428dbf46db15476f7db22a233b9a5424ec20ee806fc9a40dc6f876d2828b859fa92213aacb2e8ffe0abe2ef6aad53db306c5c4de526025ccf76526fd1e06172f04263b53be56a45b5311271883fb129fceaf821e8b12426a449b6cc10c10111117427cccdd7271911377c6151ea4941902b6fea7b3cad926141fc5eb04eebde2dd0ce914861f6b5d302136cadd535f815cf7b3ea6c5ad94e057b8abee36e0af5de3e4a37637d0fc6fede30ec1d2a5a8694c16d4d5b8256600aab5aafaaa57a0b33a772c5f11ca9c0ebf7729650bf12ba8c06dc1987705bd4617be8b4c3b67d02605f5f367559c4ea5d65e35a354a900c243cf4be96acc0ac0a72b2a8d93525a574776b3073d728556a14c7ec14c388235f226a598507b45ac9feb5b9ef61cd4d6ba3c7652d17f15adfa7a430c9d7ef2ee04d29edf321308ca4258261fbfb4c1f042f91ecf3b7dafcc7d3343a66b93ff1825985b693037accb3eb614f3338b77dfa0ae32371bab583a55c5b5f7f1b4c1d227e4bcc6aa9cbb8bc5ae418a56c51f96491c538bef0d2e552ae4806c5dc3aa8fe0c2cef26e12bb04db32b0f43e67f4a762790839a9e7658eec299c511ce7b72a136d8eaeab7cf0ab0d733582b16f2e6b8866113527c8e86233371b7567fba9fa4dd172f0d2222be3a77159a9ef4a0fe85be623a0ebc5a31e767885f33f3a9d5c3e014401cca6c4f8b77685f89347d263618561b5285a26a126d3f2cfadae4f0c92fcfeec961ebe14b54a80518eafda9d140e5a5496436f49b4417b3437f5ddca716b70836658f771316d98931c6d5d46636540e1091b4bff64e61971fef23eff9d4f7686fafe70936847ea10ec5df10ec7ab1720ba3a19ceebe110077df30654e4b426336674819fdc6362b77190c960dbf47ade331129860c61da3c7f1a7a56e200dff009483d23fc3ded5bbb53123d7a167c3816a5fc6e19dbf0ae12e679c3a7cd7ce5e394cc0e225f0c09c858023e0dec575ded031aead2b154c05ca56657524ea69e9d7fb47994427179e1f21d52cb7026a9d11beed109779b125710558e691b8fd0431254bcd57f8d708f133d1ec63bb3a3dd48fc46355617daa25145b5700e79b9c51779707d2b23492cd0dfd7a2b25adeb27a2e6baeb72a6b17eb1adc4e9f863d659ccf474bf4ba40c54d860c3c474fb5b52ea060a0042f3344b2db46e70ae668aab654d9fca56ab04e4a15bdfb605190bc9b8f4c50ad32c129923c5bde5907560df6beb3ff08caf85ee60a12fec749ef78381e81d71f1b5f202b1ba933fd410f1c4d7b091e457fb6fffeca456a6d8ec60d2239908fc3149e76f404499dc8749c04bf3bbd772a2b9642f62e714279262d37e3338689d41455e4f7227867fe13f7046997cb72a0f788f6ba52bbc770c84d4cd7e6b31103e51c3711b77650bc140e7bc36de08de2d7c1f687f33ce9aa61f4e4ff4a585f22a64408c5a39e290b7283a40e382edac03e76a2571280adf5570651acf32e31b2999d25e8b34f75153ba370ce1ee60c48301a558e80dbea7da643a7ad36086e0aaa3db1f2445319c71ce9d2edeb3f79d8b66cd4a3e510356d276c4bc4c0ab21720af846b88a5359e938d44fe8c21b26a0c04e66d5e67c20145411228dd5b84dcfab50237eac742fab0da6858736ee094f3035686e1a37c8e0b0184a63f93e106d32dc63106d8363cf4b2e1e129c22d135c9c3c2b6c9a33dc0d08fa3bd19426eb072772f9572600839e141340b87c0fa4da955c2164bf0d9fdd00f033de1658a6d99c7b5511d4ef71d03e457ca5f798681746850ed2746db14703c7620e8edc7754adb114e178fddace27b1a263f726d282ea585958253239488d628cdfc522e7c3416f8d7f50cc26574cd91400475a2cdf2d9b6f58e57ed3b741d50a4e8faa4790b38cac7ea7a6b336b38314a70edc8f3dd0a0427f68660f32836137b8fff3c290e70c6967a26b392ab4289a4dc001916be4c2a6acc83d74908297d1297eb2798e0824c52cfd00e36b14e373551eebb0e6e9f1156484e9f87c8070f8763d1d9275da9b42fa5fb45911952c8f5e723fe0360d013b814ec44a34b944b197724ece0e38cef55e501dd996b3e20a195616edfa979c7e506198a5e1c316eac991764d622932c7a2c1584b8690ec19fbdf0ac5551d87491501c8be914315dbb56e1b43459d429169071abb74f130e06c638030471b1cfc04105e3c9d98a4a93d6fe428425006bc5613fc81190510b239a670d105b5279ff7d1e0071e2ccf71ae46d49d186700c822e38611924378fe35d6037a55b879ff39dca4862147ed0bebc1648c18661477afc012e5ad6b7247a6e4506ec0edc8a456b6f577d07f1f142c4d01a2e6817879af0f29109e651b22e2a06d7c54adffa47d0fb7270bf64f3929c0750b4a57dabb22955712c0d26927e63e8aa1dbd1ed8d91f7d600e4d725b024f00e850c1f0c53e36f0549c234023d227cf8400238b3ead3dbaf15280a73806c3a407956a01664bc9c26cfbfecdce9d8e7574fc8b652d00b86e60fa764483a5c70a07e548894e89a8d027d10abb8df76d0fc475bef6388129705186bfd7af045af22f92ce291378ef84ee1482b5c4bbdbd1833a86f2465ad550ae4fe783de35615d0fcaa69050c66d908c374ddacdfe52b8ca10d07fe4572dc3eb407ce288dd470994fbc352a8b8375c4d1904b72bc16a67a6c7dd3b4440e4b29eb4c6991ea8df077f869ce03b8f4b9e043647bab67d20d5380eab4a6fac1a1582129a1328ad2134163b72ae55fb35d6ec2944eabab57fe1537310d9b0b38c2ea174003080838e1fc11bfe1b84968ed115e317c81832b212397781b8ba7912df11628969d701b064ad20559cb4d31b4d745b5b52b43c1941877902a5823ea6c95c0583bbda204a226b8128c28b593f6e2920fe8ac8fb6c238ebcde2bebdee92c19b6fa0d38e6d618b791064781f9556670cd40bfe9316d0d26a9578a18b9116952cef39d7b267280272433a4f70168629c046339f9a983c8c71c01db4abcbcea1759f42d18bfe3b62ea4f9b3fc7043fd1ef0e21981d345842c6428d439548fde2a9887f090f2d9ea3a8ff906a9c937f50ce73082ce5dd39e9e8b518bc448a01e41dce1a49302bfa28354cc3d19ceccd473076254014b07b8793769fa837a38a32a51a251b449d5aedef2d0877a145425fd55a9bd9e7cabc6c79d8384498c39699c87df6f77f24d74468ee2908920f68fe9835dbb34cf0a0d6f47ca9744f60d307a8b67add4f8493092714b1463b17a0e5d1912b39f61cd0fe8e305c4cca0fef1a77ba7a27e3be6b79c5394148b2be9978edac941137b3fe2f694d77395586c92532cd55a5a1e5e0f7ffcd9d70e9a46ae5c1d83dcac3428805189fb5baad743f4c97b2664651ab81c49d174577cef623d94e06035cf7e3381a3b96813fc2605b3f388fafa13a0ce890d1887f75e3d1973ba882f215a765f665f17ccb4f7f05f8e13e5b73128508e9811e07430eb5345e40230481c7858f791015bda32240d3cd2cd160b7be2ee7380cc3cf9c5ee8c6b6b863e5d4d6c5539f04cb782d484141369a438d91d584b5015088d839a72a500b39ee9be1e9ffc2daad3a498a7670f49a5042a772b9385906bee3ec6cd70aeb3ec9508bd06c320106652615b7dacaab391bcf928f9a94ef2436eb894da9e34ae40a91d34f9f0fb0ece678fbc485874667fcc2b75c201f1c389e8e3bad0fb09b7a8c9436e9e6f5dec214acd26e9ae808112a14ae827f6a34c821fbb0b464e3a9ee10e4462cefac8021bac219fcfbe4b429144ec9d0e92e612c929be4960dfc7c53cc7ca41469317fc822d6637a3be37bff64b3eae59c3467636ebe91b1a9f1d2f470e1572995f75036c1004ba8d93b85720ce426a0e4d0f1c8cea9648e8425154cfaa3f3085d5e9b16a700242bde3680f8465bc0b4ebfda3bebe125c710c501040033bfb9f6488bb6eef2ea8b55e1c3952f2de81c93aca102fdb6ef4d5a0b2d2d6d12b2a59452cab00a440b2d0caccb44fe65ba4c9769fa84318336af5bf67de3fcbe6ffcbe6a7cbd69ba9c39adb77257a4ed2b2d84a633c81c51a2d789dc268aa2984551cb442c5e5b2910704e1fb45bca2a294737bd7a579d25c692ad4dfe7566af617c4d9a22e56b6ded71c6e9949072e59229bcad5d93bdd67a7786feb0d584ead63be8a0baf54b668dda2cd73393d646326959c7240a1e6ca46f9ecb254bb4f5b9bef9afaccf751324305b49242081d9cab7d23b84fe6842d429267189024d5249f84c3042bd964b9654af25081298ad2621589febb589fa6c559f6a682b5b9f6cec52379d16991a08e62ddc4a244a907847923c184eaf3ecb23d5e77d7cb1d3923b92f9fc2597ecbc0f937e7d88053f9748947c3d9264094726b10f963c1ed0bf4eff9648ecd7cc77788628e6803ad7ddf2c8f48b71aebe65faf81baa4f3326af639fd975ede972734ec9aa6423917879fa9c7e9d3a2e91509e5b0ead7e4faf5c9b2c739c6559966956d398ee5724f3ccedbd996b9a96791033b3f85e26fa89808d5c8ce72d95d0b728d077027bd7b130bad8f9988b8c2e7a461601ddb364f77ddec1a0afa66914cc1af5ecd4bf8e8a1e82c9f44772bcf3bc7d439a4fdfc1a2751ff89143aca651727f2490203ad07547eaa97d7ee490e69fe679a5a6c25661e9bb20409f53035dfb3e94ebcf270f077f84eb68484d50e1f527301962bbf971700293d74ad0b50f9547e691cf3d2646b4ebbc734a6e23b6525a6e239476e44641d1831ce8949ce5a69c97436a3899344d0b6f47eeda64e951d5dc2b77e79e96755f587e7ee4a475ce13bae6194fe79c66c210f5e95d39e4f91782c9f443f488e9b5f28826734ad1c3e7460f3b1f4717556457bd91fcca3d9239fbe61fc933d4b9e89d8bd93d4d73249ef6a9dcd37c67e52ad7c8a921994cddf77d4654e07761a9f23c1248107a7a9d774c22ac7c5a1f2d2cb748cecfa97245ee000962db32ad5a693dbb82e69cbbb47d424799bcebf0740dc964fa481468e7da50f71a0fe861486adfa779487a1bf48ee401439e10f4d9b9c783f2936bdfd7755d177e1fcfa77dfac803fac93fcf1b5d557a3e45729b4051a5111de70137581a59b90ac9640a754895872b52e51a09fa89d45c87d4aed2e0476efa403e8d8b93c5a06f12cd33aaea88512644f3d86f99c76e939e3ac6d5d66aafdb5a671daa8fe9d0b58ecb8cdc46a6f5b1a512fad5aa7132c148d2a1c9739ed221ca6bb748ca47c76491d03def28c9752f50cf9ebd7b415bcf9c731205fb1a754ea7dca3a360ff488e67de85e1cc9e7724f4f95d46862bda79487d7e2a0c710e7a4e439f36c8f39caaf0257070c4f3f9273079d0bbd0579c538ef48e805ec4a9e720f5c9c3417864f3f9b3a374fa507907921d5951d475b9517367db84125eafc4fe094c9e4ba2c27f4968760293e7cae91fe53c73ae3cd279e8597904742f8590049b6b6824a4af27e1e7e61e925db9e9ebb7b0dc74f3dcadacae26d01741c73dcf87d8eb5992257fe2c0f27a96c4fec92bafcfefe4432ae8474e250af733e7783ee74139e719cfe79b67e566f24295260c85439e8328d8cf7c48c33e2b8f509f9ef3fad74f92f3948f22a448cfe73734a6486d2bb11ec933c4799bd7ea193d937250a2d33cfa15493d2d8f644e7d521f52a7effce14e57ee149e49e7799e9115e87124b8cae1ca531f496ee43c2377fe6c5a9facdcf939327bcefe79a791d4b3083ae5e753bfaf6ba2a9cfcc377765fb0426ff39f58e43e9905d09cf8161586eea39cab5679ceb90ee4d4d1e51621f950d759f79e8a0e71db8fac8cc41f20b7d83ee3947f284200f581ad1193de401fd73946724cfa91b49d1f33852f491e4446efaa61bf43c1eaf34a223f27428b2739144896487ea4ca0fb541ad9719e7087a5119d19fa0eb97250875c794686aec9cc77481d9f9f111dcf03209e1224f6b31285faf4a5a94fec75306d9364ee1a26697d8d55e749d75d9fe42d350a9ed672958208d66ba9ab4f2656855aa9151dced36916412bb1268256a6606d185b6dadf752da69e410a5d47af56c6ad5d6eab8de6a6be5a07ac6d505ed44d722456aadd887584cdf72c001757a3d939b5bf29246b26ff52db9752e73dd66e82e3945c87c9298a44c8c7e4ea777fa744b7e22646508d667d65ba912d386b34c5b12615a9facdc4c8c1efbc6c48889c6717128f334cc7e0753da61927eced8ed57847e876786b36aadadd7b321ea167f1c58a6f9192987d416340bd36a8e492058347b3b5b5e6bed5f8d3e75fa7733c9480ee8467293c9c8e65c39adcfb54eeda64746a6f599be952158023c750e87704e4a2f35817e75ebdf676e6db63eb7dc4a30c665122d2b4fc0b83c01e36b6b5503274571f3b4ce4929a626d0b77e5d7325df6b43744e26a6677aecb33cc23344e76765925ca2e081cde4a93379ad3c21f3133247e1f45979027525df535c2641813e758b0486e1271548735cee14714cb4ede4729b80cd63c7ae61d867b8fa1c41d3efe9483091144c34478751a38baa1dcff1940ee7a17bee917a35afa7cbed3a0cb5770277bc03777c48e540cfefe7dc033cd71e923c9d739ceba113988209d8bcf6709fc01d0edc71b03cb2e35d7964e51c124cf4dc8e57ae7cba4e6aa51a7352a9711cc71014c391f3448d124b140aa5b5d65acfb16ddbb66ddbb685de89f4dc622270db3011ec3929df95dbd4a19109d860224ce499d1de6f9bdf4ddbb6cd2be7483e84e7b4cd3add3ae8b67222196d0e6f943c2f6f9c6ac777743c87c7b5264fa7b2c8e8e1097b7ccde9d71c79729123430e52ce3917929ca3c81dfa743124394efb0547e7c88de439cfbe07683f8521e75d489e440fc9b13ce1473f1d11cb2443b3b23848b9e8f34fa1fed318726359e413cb23a0731e9248c6e74a24e37fa52ef7749e1c0edcd1c9c9399d54aef221d53b792a954a87aad1b5c79d7c0c555ac5912badb5d6de717e3f97e6de681efaa29fca239e6f0e9ebc1379c41331fe863cdf52e566f2290fc93d7ef8234a3b8ad43a54393e3aca757c39e44632bee89fa74814e88b3e24fa56d6af88d7f90d0da9b513c9d0c51045a6fc44eef11b42794afb287e9e3b0b7670723d56962e41a73ebe576eae5f23b7109251874eeb3a4df3113a6ee58d3002921ea538b28e6faa95efb83782ae3b904c79489ec653ca4f9e7d45b48345444779cff60f4b9e5439246e9e436ed0a7af1c05929bde423d42e8271004dd7f135da346e011cb21d4c9c11146f813b8729d2a91ac7c2b8fac1c551e197d43d2f35b89a4e7575fcf8fdef8753b9ea75275aa4ea5529d54a74ea5529d4e3aaa524747e7743a9d4ea738444791bbe7510e927b8407434ff98727d52915ea085d4718a674a45c07e9396a3a48663e921b498f883a9d507e2277cf9f50a7534f65f57c57663da7d2083d1ebaa069f7abdbbb30ec482fc4d333bfe566822fc8e43772fbb6713ebfaedb666571e5d0e6996f65b9eb47add28f1b3539be819eaf5cc579e822890a43df4179d7d16fa81b4fa0432a8adcdea3509f8f2e3acabb2f244f43ecfd3ef0fce42319fa0d1de5d783cf39a7df0350ddf89b7324de8f2e1e197dbee85dd98d240a3c5eeb8dd464e843ec580e9d3cf453a9e4450ff3733ec46a1f11faa18f44e85702c1a2b752243754b99178aa7047272cf74aa5024110d4bc8d044fa26be00974ec1a28821b58e638f621b57e4339a19f4ea7d3e9e446f378f09f87e511cef310e799e33e9f1c5cadb71254588a3e8a27d7b19178dff77d9ee75fb945e7e9603e934ff929159e7c88fd3a105d6229fae82139bad861effb7c483d91ddf37ce550e860e79e6ee386c7b9e101358852a93ed4ef0b8daffbee2bc5efbbefbeb0aff7ee8bf4f5c646307fb411e7dfa460dd7c75fb6a22c36f2be5c85adb84051bbfad9aaf6f8932307fc0995fc4f95a69ad6ede00710c307f50df14ce5721aae62badaff0776d42e7f85d77dd55e92b937db576857dadd5e8abcf5d91bed6d8d3375f9d82a9411f7c71be3a0a2602bef9837a3d83e62bdd14a6f4956e2a65ab4e5f50befa921964be9b0f50afbba7ccf7549f113a1046ca57bfab1ae5ab13a99eab57a1aaafd0fb6a2b34f9e4b679ea578d0dc2b0386724d1658d289a545942002dbc31e2218c379868a185ab9a1cd26440f7b187508366cbd2980dc2458e0675a027578c29a3c1635c64a4b3a4f7357aea601b76cd5307dbe86d999e3a8f283ac70a4d06a1df3c75128b2e7dd0bb2e3d75151bbaec41ef5af4d431d042ef0a7bea2725bd299ba7ce93466fcaf4d47b66d0494fbde7893e1da137f5d391de14f6d453b041183633f6b9c2534c59c1636f40ccc80824640c6b434f8a06c330d10b7a8f48e87da98f47685da4f77d6d45af5eef83d22b6cbad9b3555c54469d123d3a5af201b2548b8019d92c44291a522dca570b16136b9a1952b656b3420a52deb2b45561a4c479a941b776618a6231cf0823a55b7b7a7c421c2d69a3d59123b1623f4ae0981c2a31b9b9525e6723ede6f49abfd49dbc300bbdbba5b7ceb3a4a7981fbafcf4535105dadd998f7dd7f4d6bb331568774b4b1588a9881abdb5d85e47fd551de57c314257a76e7d52d1b302d572df396b5df1e8a2b3dffe73acac59599808e372890aad2316bad00b4dfd071751bc12d0c4798c2ca13d90c9e2a675b525798c58bf3c30d1b24c5ab4061be01cb52c797960a235bf0e2c1a7ae755103be2d03d6378a8d72971b051d3aa4b5fa429e2a1a50fac35d1d030bf05e11927cbc40f59d088b1c0062d60092190e66b6ab4a53ec14841a6a9d569d19aae29022a0aa6bd3aea2bad78ca6d5d9be17befb5d65a178060d1d65a5b6bad70d86aeb699b41d35a8c338c338cefbd77cba7af76075fe52836ebf7e27ba7b5d6d65a6b6522cc98e8645f5fab4e0223e5b7476f4fd9e512135516cd15869ff8c9e3d6f43c83689e2786fd3cbdbee209d44d56757a7a28395f36d6a77a04708b73ebd6b5cef9fa3e7d85d28461d307f54c5ea4e9a3b62e1b9bb3d61ad9916083700dd3a7bafb6aa5b5c5b9680ae04b5cc354fdc635a834ef7c7e15a8adae5ca2428b2b679e3eb6a73e4f99d81886a758ab22679ae74ccb3cf325455480b260cb159b6bbe24fb46835823cbab959db6a66b2466b23ed4338a6b66d4cd9e8dab51fda2e79739907e7e7983e6b76dfaf905ce166f8966101b9b3ea8046acb22599f16f4ce4fa93bcb066940e60d308e5e2dea3f3688b24921c80e5718c55e2d5a6394488a0d02a9c8e20aa2578bcea5d7abc2e942f4aa48f50523b241a8251dd04859526383666d5a8ad9a0caa6b2a146f4c822591fea480e820d42001648c45ad4432061880db2afa9f4d4856c10455aaa4dfa45a92d9b5ad53661270878ea3b6f3083665003aa0f75df42badf1b3cf528a428f3a79f514481e6022b7aeba4ec9ab6695b26b3c41c63a871a385062e4fbcd04698263758b1a60569d820451a39bc06e4b59ae6354d43c538b2076ba5a3bca08ade1b6c202489cad19f7e2659d1c6773f937ae0a2ef0e9d85f39b3a4a8bf6e9e39446275911c6ef9ce957392c4a8ba6748aaecbd55e8c2dc6b6e2acda3b377033f9d98593c2e8936a8d7ad072a4d589a469b9bd90e366d7d12edc3e97123f29f50b9a74e5907e72471cc75d8eb395a3dccc013793579d38a03919800f1d95d90346bbf5b7d69663654db74e8dec95ca9a4e45ca13d1274dca19013b959ce90c4dd2f44a476549a0b632c6dd9c99a65d8046ae546b736e3de8d965605cf085cebc7a9efe746daa17a4a167ad6547771ca1edaaeb41db526f59cb74a7f5f839f3e6df55d1dbeb7886f0a627f85a7e2e972db78de33e57d7759ee77d1f08767386a1d6aeb183fa73fac8bccf1572a15d8f42c464b052ebe9ef03adbd38b3d62651e16da56ffd863b8eb42db7a7f5e984d2e23852eefb40300cb53e9d50e49e6d3aa85fc2f431e707e2e8d5ff60fa983e7354aad54a47a7c74fdf61cd6e878747878e0b2ed8b183070f776f92e4d741fd3b47b12c4bd4498760f9955ec79565599665a53cc0cde4ab4fd0ebb80d04b30666f85ab08214554b5a3675b376614869b5d829cd6846b35b1ddb5ab70a5dd8157556f4f42efc5c73fad07348c55f076166b39a65a17e0f1e549a3ea6d39f7726594106cfcf242d8a28f5e92b5dafef4a5afa1d0e7a574d9d88ee7483a6feb393b4a3024d77a0d0d4efbcb6c420ce1d400fcc874e165903ecb9980cc632d747f340384a1e543299d3050f7288bba3f34a21b20e064c37e72426057a272e990bbd90865b433534f5ed596b2dd544684aada3de7668ba5314cd731f7f57bd1e18f4ce3a64f4cea8efb2f16789c47b4fc077b9d269b337afa4eab0b5f258dffefb6efb797f4e0fe853af24f580fef6f3ebc03e2d7940f81e3f0f08db4f7256968ea73f4ca6d2cc31a377d602cd2ba95f0ea177a6e4a6dff3930990efc0d0a32479c26f027e2558c4d75a51ac746e943c2da177d676d25223f1e6053793d71ebdcebdfe5e7f462825edebcfc88cb56e99adcfadfb7ec9e43b8bc4a3a409f791ac7046c9fc5dfebc6d9bc9e7e9633a9db65211e419423d75d4d37203b6723f6499cf9e4da7a5d5df5a7701b1a289c827fae963dd0a3663de7a17bf493543a60febf39e8a60015359f3b3335d2a0bfbf45d678c4e0bd6d7e3924865d92164032acbba6f317deca2f78c45d17bc6863480889665be353fc26d5e02ce4ff9663cb904819bb1d656faaabb41df72fffc742288bebab54cbecb3cada9898c262d6f9fd7715bd6bef236794db1ae29c635c5b6a6586e8a694db126284d1ba7864623630087ebdcfaf4bcd0793fd23435b1a60f9d31ded7144be33107e31f18c7c9c02d7cdd3c963da679cc639e8583e18d73df5063f358f698e63177e3a1f63cd6798cf3d8e6b1ec31cd63be83eb53deb8aee3b6ace570714279991442d49a388f6d1ecb1ed33ce641b838c662b1582c26c50cd25c2b2f1a349e5be35b1bcf6f5cc34dfc89376dd134a69a9a9a34ad744d87c7507ee33acfebb82dd798566358a4726e1a257254aba618191e73197ca5a36968f2c69ee57ca98f03265fb15b1dada9a9a9a929cd0cca5e73a9711edb3c963da679cc8d7c675fcfb21ceca9cf853b225c1d8c856915d0978559988559180d3a0890d7d427a56e899cda279555612b8c31feeee29f5ac45a7993df960a91951281dacaa51dbfd8282c8bda721b649f58586555ff962c7dc1dc6e48be35b9b021d926eb536d0d16664b4bc482855d0fe3368bcb507daa25c2026179b0375827e30ebeb1711a54168f295c97c1cf124e5fbe85771d26f16b8e31693f23e9649de0e9d0f5708671e96ee455d79eea63613097567a0e7aacacaabf8065be5ad90d3cc65be80708cb27675b6e0bc512cf75def7791db7b158f9c7c1b885e24938a516465f5606a72f7fe2e1189a7abd6eafb51646be8559988559283368db4ab7d6089bc55ab13abc9cbe7c08ef89d3cd9edd1dbd96634e028053e727f9d307c84f9f97695e26a6e9839cc15e6fde349a8c9c319803ffd42c4511b0ad1e17f0d424d8a0cdc53055244a6a5fbf239d68eabb83e123eb93c9cb647d6a799ba68feae40a34d3062046290ca50761657d1c8be9e3bee15e5c399e0d34c8a82bf771cc0cd2e3a7e78de3b60cbab1711af0e081eb32f8d9b8cef33a6ecb394cd3e72f7e13dcfbaf913533c15ba76ec9fa1eeba7e78deb3a6ecb5f66f9406f56245645aa4815a9224d1f276650be672a195fbda864aa0aaa141d9accadd15b9baf5e7d56b40913065c68eafb320509c0cf2df40384e593332d3786825f78aef3d27c397b5a77ab15e7beb15879f561420d80344d61349db6e889c1cfcb74bdf81ace80f2b20dca392c43533a7d601cae81cf9512e2c1834716249e8767e073f1f01de3eff0b975fc0e297ec70e2c637e47105e7e07161a7e878ff0b97660e07389405f36a1c3972ec2e72a490b7b32e524293a490e21a607339e90d105125b5a641a717420938258519b2256783201bfc71775bc88c4c68ba2c8c40e2f32c1c58b7e81cf257a2a954aa53c84cf95720b7c2e52c8a1c0e2dd2bf0b9dc0916ec0b8f31068efdc70a3991c463ebc28740420fc64eb4f118c4d609c61800b8cb14aaa5c95325ba5481e607c0372d439bba30edfca6685af84ddd3cf6fab241b92500dff509d163af52bc54794ce5311c38d585e5bb2655a5c75e97bcac20f5bb96c15ed95420d2b1d7363ebeeb9b17ec8a7d52f47887960c7c5b2590624f8cc1f3db26b180dd3655201e8edda2d1c0b75d63d93c76eb060a2b8fed9b157e5f22a7d2c3f7bd62f4d8ef51ecf155e2f1ebf75daab70cf6e1fb9e797c9b1e4b998187308a8e702389295a5ee420c687243839a4e00b036080c57106e968cb9bd69e31315d844163660d141ba2b42420831532457409820a17ec4f96dc20229212a64a6bd397088078a1e1e4891964e2686d7ae4f1b024431b164cd9f2466b532422474d3114d186cb15345a9baa8992064c1a6ddca0b1a535b157a3ca549b88c630420c0c474d90a181a8b5add263336e5a10e30a2aa650696dbbf4980b112b90a10915bcb102962dd6785981268b9438b02b8b3269f0c003144d5cb0133191c64913616c1106762888781f3e9c029fcb47599665e9463e57e93da090e17bf8043e570f0d9640e389365fa69cb1a5b5f5bb7b9c77cf36e801548cdcd0424317453869f91370de5d029fcb35784289d7c023f0b934e0c1c3573c3cf3e0e1207c2e1e19ccf1197891cf95c18e1d3b76ec70087cae1d09781f2f5adec71ff0b97c48922449ffe07391ceead2e659eec1e762a57c95f29c5ae353ee80cf95f202bc00b0bc007ce8730920005d5af8003891cf1580fce301e004150f00efe07301203fa00832bcb4e0640c27b888758e1731f8028e2e5d9ab011668a96e884132f3a079f4bec7182e87bdcf5b97a32f9183421c663e00df85c1830e073e1ab268a1e3ef43074efe951817678e83f360a331fe6847284a18f10f208c3300c531e861e866118921e86651886611886a114475f7ae9adcf5566922449d2ff7391cee6dd877c2ecfa9542a95f205f8781e5114f13c5c019f8b87288aa2288aa2287a023e9798c5ef00f33b5cc8e7da71e17c517aec0808f2b9c298190f3ef8e641d07b7ad4a0db027d830a341f74a1189b0785c8f12154a0d0411f61a27910fcf2c283a01885ca9507bf143d288266804e952a05039679f0cc836c986106145f8c7a08e20924dcd862a68635e23863a965421957ca70614a106580c185134a57ec9074e64c6bcfd80bf4b9e9d1839edae153a954ca0ff0b952a2af44cfe297155e74a1cf2586611886611886a1077daed0628cb16d418c8cc79e634d8f1dc8009f0bf4bf2076c45fe01b7cae0b74e8d0a143870e1d1ebbf23adafc3ce805f85ca086228dc74e80cf85817c2e1d423c3d50791efff95c3c55887e1cc7d17b7a8cfe63c71e60f8718c63147d1cc1711c7db46244961a7638020e2f44a34f1b5402239acc7053430d4656460ffa3d56d112802a593ce83f3e17288abe123d8b55b0bce803f85c6214610fbcc1ef0d1e4ff1d8330f603c765df4d857cefa39f39887298fddc7e7c242290042071bb678018e1a5cee87707c588609a3316d7a2842c94c2be401870fbdc7e70a5d83cf35eef884fd8e67f0b97672f83abed2d1d1d1f11f1dcf3a1a8ed7e9a18a0709f0a0fb7c2e10638cb1b33e1776017c2e1da1951149fcca03f0b95639c7cde7b85720d073bc272787e8f57ac1d0ca593a83056dca1885b1452bc7a70d7a1caabc3183082b7e20a2b5f5e71861e573bc0b3c0693c13cf098df427c7ecf2422d478ec580b0c5ac628228914b880e5b10f49811b8f1d004af5b7d08373b3e1469a2a4c4768f1c4dcac07fde7419fe05c7a107ce34177321ef42165e83ce1668b21dc1cc980440b24e28b07bde773814d187cae9c33affa618a5779f9b954454bb8f1d7bde71635fd056f1bf73a09e2bd3e4cf157bc6deee8d769142a463f70f94bb5fc65438982b99732fd55c11932906060c343125e5a55a6484104868b36def0615e30dc4481614c1b40e020476b4f375ba2e8e0c4052a448001a7b5e92b006a72804d71610c29905a9b1efd7516905830b3868805275a9b22fdf5418ccfd1e2739cfc5c393ffe857f2e2ce653456e7cca797cae14105c965e6862c3962e45adad7f1cd7f8d1b30dba64b450f9a18b1b9e20a33516b1e047dff1b9c69d177d52f1a25ff0b944d0e71e1fd4f12008bab6b2c58345571e74e241d7f1b9404f401a16a2bcd9421443526beb0fc3167ce8d906255901cbeb0b3053c4d1b282c487cee33b9feb36a194c43cca753e178a8a165e6ba3d7eeac1eba8a2c5e8b9a8dd61a6b9f4db4d213af4f5a0d9d5bdaa9144da968cf5aeb2623c87811e3061429ba8d99297318110bb34613ad3d954c20c41a2a40143dd10284f6698334f8a20da43845ac910518ad9f2acaf87baf120d7f7db5fa827d9478ecab361e5321c363577d2eec20e82bd033e8a0e77c2e10830fa768fad0539f2b1c3f979e4a7ff219e54f2e7eae5311ff69ffb1e0bfd6e7ac1e1508f4cf7f6c1216ff7d1fd23742f87d5e42059a495334f96fb6f90fe9734a5481ae7f4ea37cfaa345ff3981428c19e04071428399d65e2206345000f1440b31adad3f9f7bbaf9cfcc67f0da519f4bef58a1ca185aaabc6184c64de32f104944493a9304176ca869dd1ebefcf5d3e7ba3a1f2af1a1ebcf15e6e83005125fe440d38512adadd730e9e2440c4c1c44c860a54d0bfbc0f4d8c3cf851d4c82e141073f17f8b93e6ae4bdf7de179e17dee7791e175e065e96f7fc7a9e9568f39eeb2d5edee3b2c37b5cda78cf5b8285f79630f31ed2112e0ffcce579d7b4fe73d8a5eaf570cadce73e7fabb2425a67c87c538cbfcee79fcbbc7de4008d3ef99f4e3f7047354c4e3308f3d1fc9f1d8f5114a8f7de547303d769696c7fe238444138f7d880d8f9d4812673cf6ee73e1a58bc6ebbf575e698658a1054230f1d0daac87f3a40cd31626b06869ed9fd57517e2afe7a4232a7f9dfb5cf77375420378ce671715e8fbed8cdfdc593d36ffb19b0b5d09f39b90df56f07b2ee5d6e6246c6a7ef36c83a6173724312171a58b2da4b4362741888144186b78a1a4466bebdf42314f94a1218c0aa060635be30627af379852b08686d69e4a3bfc9674258b00a615bfc71eec7acc63208ac09f6b63f32e1bc34fac676e851e1361d8121a3b51612771beaa304ca5e6ab0ac3542a345f5d05a606e12295ea28fbaddaaa2ae5b76aabb60af655b555455f555b85f45515bb65e4dc327276ce5593c3e66b4ece991c345f7dee1c356bbe7a0e981a74db541fea6d72ca7cf51c2e393be78ddf393b67e7c0bee6ec9ca2af393b07e96bce98d498d44e9549a5da7cf5d4cb4b6aa7a4ec542a954aed14ec6b6aa790bea6bc8c5ec63dc6c6d1cd571f5f7b1ce1fc1ec7710483c5ef71dc23ecebb847a4af2396f9034b9cafe23512c56b248a60cc8859fc16b7b8455114b708fb2a6eb1e8abb845a4afe2ad01756b406dd48d825af3370aaacd5747811103b5511b35c46f140a8542a136aae82b0a0567fe8013e7ebe9be4ef7756af3d54f605670da2729fb743a9d4efb04fb7ada27a4af272de60f2de2bcb64cda3269cba4b5d6606a905d63d7680d260eefb786e2b7de7aebad615ff5d6455ff5d6485f75cccbfce125ced7d0c6421b0b6d2c0c5d086ff81dee70876118ee10f6350c7788f4358c09010a01fa6ff0cd5b2dd587fa06d7bcd502b6f9ea600c60930d8220d804aaf9ea7383455f41233bc3fc616788f3f5db9f9aaf9f25fadc7cf52fca57df1fd3efaff2f0fbdbdff77dfb837dfdf657f4f5db1fd2d7af8cf9a38c385fbdaac6ab6abcaac6f33c0f4c0daa6fea1bafcc57f7ac78dbdbdef6b607fbea6dafe8abb73da4af5e0c8bf9038b38df2d754bdd52d71975bbdb1d12bfbbaeebbadd157ded7687f4b58b6de1b670abdf1c1287c421719c168ee3388ee3aa6c5536d5efad682bda8ab62d89afdbb66ddbb6355527b93ac93b5758ce1596f31279671ae777de39e7bc33ec6bdeb9e86bde19e96b8ea5317fa411e7abc64663a3b1d1342c9e38fdd6b6e6c46f6dca6f4dd3b4adc1be6a5b2bfaaa6d0de9ab16d322d3221b7f674c1953c694b9f9ea9918ee77d624cbb22c6b2a62fe2822cee3237c848f30c6382909e32ebefec64da46c7c84372efa8a8da8934b9d3cbd1476d5b0d9d7cddf33174c442a0b3547990da0fcf41092655996b5d5d32749098ff54da23ac96896cd6cd22ccbb2fab6e4c15edf5a4d23aa5e6ba53eabb5d6d2e9e3daac56d8a606d70217853b7927324f1f4e6385ded1c9f23cfb3ca75968c9fa20094ed6f58ff4ea47df825df94d1fd784c7ef4d1fd7ed67e43e617f79e2d309ac991268f4e8b1c14f8f6be3f8cc20f5290226fdb10730800c289009949564fad052f84c8a77d0344dd3344df332e7ca9d779de65c96655aa73997651a9779a7711da769dbb6795ecee166975e4a2badf7de7bcb2c1ad6a893cdafa6699aa669dab6ddcf031aa7e6a1ad54523fbb66e3c4891367bbf95a6befbd1c2746af72fee19983359de8244b1edf70850cc9b22c13f203a5074b48966599adcfb24175278bdefed65e30a33d17af907375b29dd9e0a787902ccb32cf1b471d3d9ee78da6bd71a4753055a05954af54a24a5424a502ed6ac447a944b5c89fbaa9acb10bbd2bacc2ea134dcf3c3772b6b29a6534a335cbb28cb6b64cde7aab1cfd081981844c4d967da084251416050c1535f4459f104999678c0061829967b22ccbb40dca59c232f4cafae832342e37a8ac1f1be4da8ffbd14d2aeaf1a3695a08242049a1023511a24f98d8bca1300d68f718624588500f4dd334d6979f07f899759ed37d6650081e820d12b23ed6b36512cae4b680cf0b815b9949e0ed14b2e7b16851182596120844505ff4eee961695a1c5996651bfcf410926559668019243b01f1a103800b36999a3e49e690015c700809d1348da5b12ad016fae9c112d2344dcb9ecb0f6a0f113d364b53e33ddee33dee3d396763882c591f4bde964712a00bf2d78958a53995867e6cabab1e39a78fe61db943f098b64ed3c7f58dfaeb1cb99173fa9c1e67a5d68f7396a2cbb22ccbb22c9b14837bc92759c2adf005575403d764b925ae8c3b6b83211f70b1322e94a4b4c4c4c52ad0e69636170697c4c5b8a5209c0e6f02cd4acf01a33787c421715d2cd77487d8c8a8994f1ffeb89ee1412635a26ab5de7ab53ae9bc2bcdf29f9f4a462a903759d7f5ca06f9f4b93f423668c8f4b94e244fd6645dafbb84c759969549963cf65966d194c8b22ccb59ebd5ca9dc5faf93d957e8484c823340d4fd1344d2342a407adb946bf22f55a6ba974b3e776af26192bcb583f4288186173861503b3c494d15a5f6f7785f296b2a9af2ccb32fa04450035c3cb6fd667252d434fa1a91a1d748de69a17a2db44b639e79c73ce99579fae7a6b56b2c23e741f3ff6fb809c6dbe5b568418d90c45996b5a916b7dc8b22ccbb22ceb3c3dae7478e407d5c71299a2770f47eac9c2de83ff7a097a23b3929bb5ccf3b01a5ad534ad5a4dd3b4a00f887ca1b53d953c98685ef34e2351a8afbd5eb7e73af6c0bea6f9d54a1334ec3dd795555bf654205c8e59b2db993d493aa3ccbca75c593d6fed57cd796abd208cf001256cde5a6b834d3283844d32c382b5b65ecd5ab738bcb5517abcf51107fd33c9ccebb7104dd3b49f7f82df27a0775af096334bb6797e39136149eae2e8a74fd10d9d93569f3e54bf7a2d377d1e0f585fbd962c4aa503aa15a87a129ca49f497094780d7e26ad60cd67b77318bdff4c9a03f69db59df576b267bf3ef1cd1ed634bf1802f32b0729bc5eaf15481eecacbf9e953cb8f480f5d76fc99aa19b3d396bbd1a5923d7ed6c24574a7a8f3c97e4b99e1dfbfc38e0b9d99d3e380e6ac9391c3570ca7c57bd2deb3a1ecef7c8b2b4ecfcf270cefafb7b7ccbc3951eb0be2b854caecc5568cef7483f17576efa2878603399df90cf57cf23eb3129a4c742b175a6bd745a0fbc5e17b54e6fb555743383a3f9e3648e8a7220fa2ae606a5e7be219fbf185f9d3f17fea95e33324909f87bc0f5ca93f95e792d79b2d203d690cab2ae432b93d0c7b86c80968ddbb8ad4a79e95daf64aecd20586610eab66af9246176c5dc80f4d82ff6fb1f90205496cd4a2395559f549667a9578110e9ebd7a7520f96fb6aa53b2a348fe699f368a507accf4ad654ca9e1aba3aad47db0ea725fd33898b184dca5eab130eb45a29962c49646f143a652efed2e44b388b29817164da027e5aad572b7716ebe74748e8e35145cb0af03132a1e9161619e041a51c2f364ec8cf6ce7b59843c0df92880e549a4182fcf4fbd5bdef00dc9206857e7af653647daae7acb7ac911999b587453668661d167dd6ab19067dea84146aa09f2c84a20da0a4e91f347550690699539c42ad35f869adb5a67586f5b5baea363a05dd29871fb2861f3a5a68e0633200e528795821c7263ce70c8f39a763e7b1a3d4a203343d572072e2d2abcfca3a8d49f540e94e4c702191a63e6bad5503a1a9d75a6b0dc1afc3a193f24aea9f74d0d3bbcac59557b28584a6129dd6fe94fbfef52817b05752bfda2dd6bc92fa2150127ca379f8a0a777da00d8d0d399bcf60dd5df14f85959395fe8e965117a7ac791639e0472c2a4a865f85e5b299ddcfcf2dd479f7c6badb5d6da693370ea2b7a7a37437c6d05e9d464ad1995a42b5c9814ffcc1e4b19251bb2c185fbe9957aa6fd745bc6883246d4f1e7026245579f495684718158d15602930d2498d230438623a218a315e403624553ef72cd5a9e39cb995e9c2d08ee255fdd871d2c68fa338987287f82a3f70453e64b0bf4f48ecb1b7acf3663cc18b1461a9a511bad431c198a1a7a4f36655840435f0f7f269161e377fe37fa9249c3ce101335aaba2dea23ab67d4deca85bc51079933bf7b626b6c50d05dddd7ebf52a6acd5ba6b2e6ef5b8170ed29eb9736b5d65ab3122a6bce2ccbb2ac4efa99d19e9df427b92aaf1ebda7024d9fa5c84653fba523dfe87d57589064e89dbf35f4bea817f4ce3f59f84e3be7ac740349c0e365e8ca504ac9144d307b2ecdae4e4aed741e6b83a614453d3f422ad07dea44b43ca595a80dbabd92acd0812665d1859e28ad73b450be0e689ce7f1e0fef40eee4f3a7d66e5c05271fa42eb27ba3ea1c40c484a5890a820a301356c6962062d4b41ccd0a253d850d406d11856c808a18b2db8bce06813c59916f57a2a02c415ea1864a1abfbd3367efa84939dfcf4ada7ef55165ac9f4a102a3ab973668d6f4528ad6449a06ed4fa58a24a618b88469d25ac0174a67cc50840d5f985af40d12b031908033c60c01e8a2c58a25b85c71469a16754b965059458058f3f567d218305ec3742d37c5e107ca1666c361891d721367bcbce8eb8256457751b6297ab392b7d0d7088ad696d0e0e8d31365362d3a7c6d318f8a26da1b9d1d694170c961b466e68cce62683fe428d908cdfd4cc22286fcd25d942c7ab3a20da1af91d684d696c871e8d313318deaa286ed071dbed41842c4cb228d0db405e895a6fd4cd2028c9f3db4b640671ad33d6c473afbcc0cad71c9d0d0da4b19fac362e3a235339a183a8b210698153cd1decf243071686bf475418ceea26c5bf4666583e96ba459a1b525720bf4e9890d49e79f4958a0e185fe7e2661c106133afcad352f7afb991406ca6b5474f633298c94d8cd9a6a2d9cf8cd4a81900b65351ecb2b21364a4d4d9f3d53a3cf4b7ff3afd87cb6b1bfafcf4e2602306cfea03e710c2ffca4463f9d16317982055c5451050b528011c3e492c41a2c52d2f8a1f5451646c010030e7314cd2417d0849146062e61b4365da2618609678ac008a4159889030e1817add9841a312c78a9c1881bd46835d1364f3ecfe953e8a7ffcc1580f17246162bb4a881468b880d02c19b305dbc800688a52e5a1988b1658c58d11a4eb0c8b9820a2a53acb0500613ade9b4c90c727f8640e88ff892144aa84056869f31fcf421d35915885af1d3f574aae6f57abda44c9f2f581f57eec5ffee79cbeae17b837de6edb553699621c10a286f279ab753cd1a94efd986be7c78eb59187da2f24da34879ebb4e8c885b7464ac4acf8f0d65225306f772c55b3691b1b1bf35687ef0a7b7281ef1a45ca5baf455f92787ba51a6951a2cb5baf31366f6bd22b55306f6b99b7f50c14615434f6f57ac9d0da75cddbdac6ba7d61f1f6b76d42fab6301b45ca5bb74562deda2b6fad91d5f2d62a41e5539ef20d7cae54962a2951144522885ef4440b83c8c3453125fadc534d025e501c919903d6c418e2a7f1831835475b9e6041f4d4b875a4d2fcdee0535c3ee537e5d9a8864f19bdf99410657c2ae53f4308f1a9a45aa8542b188ba3a054ea6624001000d315002028180e098542c1280bc330e9f200140014869646644c9a88e324cb614c1963002206000800008c80c868d2460113b8313fd395798bed52e05c13f1dea75f8e9823953ff68fac00f3c1f134caa1d87df5488c079e1d42d47ddfbde418981425052c8aeccf13684e69dd46d27162d41e30542d95d9342c16a9be89b5a74e5b0411d44eb03507764cea57a1fe0ecb4aad70c14109d53baa0169b838e6fc845eca9c3f049c0f428a4188490353d4fbec83580427a85a04cb6353b3465929b4c5f1d3e7549ea545b8a7ad6a48664c39dde557ff04595e51c19eb5ab790ac3e05276183507b6e7101641c9058b3064f6dfe9770879286c7f9cddc013ca3f2b43b58a1e85bdcdbda8f798771822e47fa516dbece528f536074d64aff981b89f726248d0876ce4748504de5fd753589346eec08202dc5a43634d24ba869a288f6416046f1c0d4035a52d9152b095404ec6958d20820492926e084f17719b9d488560a79ecff14a53f96e30e4bb91d0587903b5d1ff72d5704655b58edba8b5fcbfd81c8c35edcc6e7694e5eb3d62170bee3be90a0cf519e90e201150e2b49f43223b117226ea75bb168bde0d1eef63c516401d4ab3a56eb22e22454d9204045669052be08f973f24a334bd95f7cb9db99f4b589e581dc368b65dc416902a30c9b92bfc134694e6a0bececbb964892d267234be630abf23d7e56bc54d6cfc1864f3a879b5a10ab980ff5a2abc073d196fede15da7470277df024bd6222322dbd1077d80f42bc7ff9feac4506fbc5b6205f2b25e271cfe3ff0e43bb237ce34d7ba82b73486efb931e51941cab18003bbd8ea5f03444d4c567c40a386585bb5cfdf2c1c2079d515253d1d8f7d878b59a77eaa58ad9556f1228321a467ac2d6cdfcb8590cce3738a4e35a049b8fdd9c3b4851524095f860dd4114113bce47163d6197ec8906b94978e5a8746197fd7ae398a9ceae73fb5875bef5fb18e2a2217ddde6b7b33808465388c7be832901b84a54ed32207b3043f97a8d80477313acd255a32acffbd20afbad81f8d1c62a32e3f779c73128794effc0a3a9477717fd97abbc056cf265949e734844fb614ed32e6d623ae7b598a68de85fdf1388c077ee6c96888f42f445553cfbc1626113175a46f99bf89cc9f67078db1fa4a5267c7bf193c7b032776cdf241929210e71400a7dc82c768d2417ec2336e74c77d08980aa4ef16952954f06cb1ea64794dab85953f5591ab9fc3875d835bbd8d041321bb79c88c438c636edda31afa8b27204de75ec1040f9d14e946bec997b7416642072ee93785e9d4e4e4465ecda940788e683f7e9d1fcacce351a0d79c46d77be17f5f361e664420bdd634a468144a65425baa7fba0383d0600fe1e6831026c262326a37088992e3422e8788f08e143b9e7ace2525845b7ba199fe543f8514c8b819a2c1c72e216c48794f0b313c96d90ef007a5a98e6a7a773bc11f6d261cf4bafe065638b9ccbda1565f0c4c59692fc3e33c8f65cbca98720755f3c25536e2d81b325d4953c656ffaa93d133f718dd396f0a5df1258d26ac0d5631ca1d30f84e032664990886235749449ad228ce3adf60ec6c6ae6e6103187646691e5cd5158d8819318b3285b483a48544a441cbfcc507145cc72634016647c8ac0dd1134f8a4c4061b4154ae64bd24ef7620c0d802893c4121b1efd848dc46f2b5cd853f39b950f2b60b696987256036bd60a0bc8994cb6ad8ace7414cffea8075d35746c594ce4575f0a6dee1e7af911eec5c21fe488a279029bbc3b293dac73a3b8651769f163d814d35eea22d348622862a1857be51010a0f81a6f996b18b96a8b2b403435a0ba53e805d36cbaa353d60a1cf8dacaaa6820e987c4f987ebf9324f12958083439207f0be6d4c39e8a349989cd006752bcd7afe5bf172d11932bbce91e8206f54033696d057d7dd5e2592f4eef459bcb5f66abc29fc195e081754cb8e8b5a4dd1d855effeb274bc3c34f9fd6d18bb5742ac4f1063d1b27c061208895dc3cb8ed5a32b28a3fb4c09d7f0352c3d8beb3fea4081cfa130044a04fe842c6a3836ff3c584d2711e6967dc45e524d800661d10a5b6e5db25ed84033f20d1904e45977fd23887c1f220a5a8e041427363c62c1df23d7927fdaedcd79197e5874b3606643ee48d79c0b801ecf62ef5971b7ea6e6244cb47cd7f0ffb2e19887ae4379b4a10e45c199ea66aa7b287743fa8d73911be1a91021c2a9588cd8a081914654bdbfe392491a67ebc4f34d65e8a6badeaa4d2b07f8d3c3893240d222f10b3ccf5d096170601d879a414e38c885b69dd912990d67769cea4f33842bfc466330461f3912eb886f2f33acbb847946e295bcd67ab1ebe2f43635da2969d845ae830f47fce8d2c4a8f5b30d92bb94684adde913ffb069d5f9ffe550965147c7c5cb7541da45756fd66827f35b971dd6925431ef6fae3ec64e067633f6fb6b16821d9ae5edcd8da0bd1a1dfeb82b1f5d5b74b2ae453d3a47ae6cb68d2bd3c474fb0891a13f56bcc82762f7899a033921de04c27b01a3d55c780f7a315edb1a6a2376a01f9df3c5acb6675ccf8698843992c520a613dddf66c8fe2cf086c06fca3229e99d0ba95ea4a3670e0c488f498981aea6e59a528daaff7f2372071819da93852e0c228388c2ed1f48480b4085126c5ab69c6cbcea6d82740526ec4549470981207ffcd34aa8c4888f454fa4026110747dc40179aab1bb9f84139c372abde76c4eaf293ead37ac17e10c593dce9f8d4ccf53a3feeb62ad7ba2c0f77189a44a210db8a1ffe6c5b2b6c07a921954c1a6b7f605474e4f4d4b59d74d4ec3a826dafe5529b7e74dd556bce43049c87a9b8c455ce14a7aafb67982865ce2aa8cb177455d230318cbcab5b90842190ca8017d668539bf0b157c91b90355d4e6201c336f6311f175ec6e6e9a0f14d5c1d4b2b0d825de14c9bd20bf3beb16d04b2f34e5f4809474b58472a0560e295a1e3071dc8fad2314629fe60c9d4c5994c5ca3c5c4fa0573c5d374d9cf473f970060ab2f6abf1273c91cfc1886722edbad1e1ea75244a8bb2ca5d9d1f9e40bd517d2d2253b2b130d300469fe4f17de4936e87ce4097bc853ddd1a8420225a1785cb3f49c147e038df3a800865d420f3b6a38592412251cc7fb678ad66e74a475006ec472918fc0cff1699b000a7c9e0f142b2bf2e9094e585ec990922d701b68dc9ce59d3918c0d78ca259a65baad73c23971c29ba8627391bd71833b6743228900e7fc643fb50768b542e2ce53e7739202dc664fd1aa77dbd672eacfb808df16dd2fa6abf91328ffa904faa97ac9496713cc580875aae363985b5bdb736e3663973c6ec878696b28278b3faa2db00764edcbc56a0c2fb1f6a2a96ecaa2e90dc82ab149b03530246c80ac03b2107bce04deb419fda2cd788505b2b03520d3e3de0a030764ad738628ef1cbc88b2804c21a6262941a5e29e40a64a3fa0aeb6ebf54ee33ee0763be00c67a572b5fb08dbcda1aa845480625270a2a96bf8d3dfcab63728cf0eaf3adcafac93097b7ae1117f0e5eda7a3e43ff937c08ad9030505dc44f1a093e9e001ce0c916103d61151d9e27bd9c53fc5023e8e983db8ca8cc1e9b869fd18abdd1d99cebcc58062538979e5d24011ad417137f0256bb7d6fda729918f3cf430e854cd7813de8b1ac8e48f35007f244e127e049c799eb6418ffa5bf3919b618c8f94c447d6791fe298b3a50b09ca63bbb569008b056121c5ab0f34700ae6c4cad92797a610ae144d0cb54310eb84ef2477a1aed026dfa978def9ce129f279a232c7db78f68c7d6180692f5788f2506c0b0c7405245a0be8b82c1954200c989b56749a8565b278067d3e07f53572a2e2f18e891d1788d8992fd445a17840b37e228c32051171508f4f7fe77f45db78592ce6af9652b4fcb6929c850791e75e18c5357ce2b246d0caad294bfe96899e1a18883e1186a61ce226abe63ecb9fbf8a54e2ace5561bd2d11daea741a9174cbe2a5848cd37f8bf944d8dbdf3e0ed68b6255a5b89bb5b22b0055393bdb770ac52fcd91c662757222b6e949a1fd93b5f1acd01d40aa8d039f8430cd464e79696cc77738b742cf2a0409722c5511df662d3626ced88e4841cd09eb2eadf0f4bc5fe44ed98869d2f955c4b26d68fa2f56ebcebbcdb18fdc90c019d284746657990def11469c443fb1b4c045690c9863427c57aa8c83341ea7b734ee7c1627debbe34d0589d381584a049755c37f487224f10bb72e5c65d0e5953ec46376c5f9a4635e3ea54cb04cc190471b0f9e431536959249701bb25918c7de8503a79521ca5d3a54d79bec96a1d6e3f187f4b828340ad840b6c322c2e96fe45ba41118d49dd018b2610b02b836f9a37eebde215ec81872fd1fc153425e78465d03ab2d153c246a7a44c34c49ec1e3717975011f7e2e623beef0924d586f6d824ccd3a379152bbeac8a5c9dc3c33b9fa62be435d966fb87b3ff7f4c41449550f4e6ff8f0f382e8002e498b172e814de4aba7d8a65233cdab123804814612d0ccb18374525605b3dfa1ebe91d8cb5c8a7414acc24cb1d7c09b6ae7cd60011a1673415b5da0d63f2c49241a2f3fcbaa7076e589157861b102439f43d5e788b6a1ff59834b42b697575d1e524147e68502f1fd9f209f55b32f22aa3eb91204f6d454a611d0a0f086b7e79c53a3412dbfdcbeb37621ae2c89f71383c306e297c4f22630aa519292debf430a0657178fd897c48824ad8839117888c2acc0f33c911f20a3899fbc113caaccfc2fc565f4506ec21b20fce54b35a23395f7e39fbe60b02a59a33994e55232f0ebb2ea6ee1b6a9ede640e0a7a1544db80d014fa6eae0f04c587f90a149801dc2d281e1a743e2406e38ac0f0e75313e3427417a75df92f85a2a90a37aac860cb5391c3bf6abada08464604b964d33207895d3d518b03a6102a35c86804e83dde757f28b4ac41ad22d0af040acc3c805ad655e31244b730b0d54044d8a7e7d278782fcad07ed0d6628683d9bcb07ef0b564a58bb814f0dce8171a445843c6bd2c459128ac9a2d3e04aabcc36f44a38ce2c0eab075b231c86340eef35e42d855efcc7b71033be6fadc2e15439686ad08da5e99f09af9e91dab718f65755e8ecc24a1bd5ad6e569fe6d86d9a8a584e7284a745a6e1eee4c6817766137a27c8f5aa31424d856acc97f7dd8537ebcde8fc97e4aa6c3295fb260e41396824fb8a7d91a3e3df2ab38f695aaf2349ad01a3414761731056f69a79f80525845dab2d25be65f3e17e2d3e60604518aa2f63a25a061d68622c842cf5409f81713ba08941b84b409537304dcaae381e69adeed033e47ba4d5d85145a3652b70f191c9bc452e87723a8371d4114ba0b089ecea846c8d0dd9e817ad0ed6a006e3e810cf9e1ee93f778be1cc29f7f9fedd3785831b711f6758e3e6360fba48805709c3f85cf0ec4a10fe44b1fd825432197202b0016cc65a9094ae478703a941c8f4ca7da6ecd055630087f8dc3ba34c0a417e1407098958d3179bdc6faa8f36d1c5acfdc531ca4ab1daec8f235e13054ea0ecafc5b17cc5beba928d66d28c781b2ea9e2ce0cc4eb108df666229258e11b41ad0e5ce37746835c7295b69f5d54057f8ead971823816be301a9300c79f2b9abd8ce2f6f10fa7cbf44c8b7d5450266c33a62d3b2cd681346b9df5ac839500ca12a459bd35d4ddca7912d86880cd402f58fbdea97482c7740101e02b0d51e10b6d239b7be8db44e746d4953f528c9a5593060eed258b31fe24fc7868fdb657aaca004bb5555e29d31cb88baa2273dd596f6fb9a45ddf285640807216a34b8ff05d32a1a8a6c7ae99350f265e10ad0912eced0b060afe1851adde0bcbdc78e3a18e4c8d56d405fe9a97bdbc77b1e4ec2348df6f8d5a26b300368b0b3120583730129d0435c07717f8dd057676819e5d2077761416e9393c6122a2dd003ae73800ba8dad5061e076e0485138ca73c1900e99af1b987abf48dd9080f0e4451004e9558145f2ef2ab2c3d3c1d6805af25ff47fb4b553b1b0fe05ad3b786390ef8ddb842f25595ba761c543b47916bc28b08a1adb226a1b030885ce5da163762516f11ecfb7774f1ce9f32b76935f9779334819c7bb1780777ee3ebd607b4142a8e4e47bcff9091cdf84b9f97c015edc80d44772c4a3f3844a962049161c2f920164f25a6f6784dd11e04ba1913ceaf7df549778ba433324612ff640ec48d33e41fdd85f3649e605c1eb3bb3f476a04e7a77e1020e8d0d4990c062a766d84c4158030878975003fe53322828c239dfb59398e5cd4b403388367eb1874a6f3ea336ad9fa2b8aa26b331be3bc8e5d461b112bce41d14241668804cfbeaea2d7c38b30dec49843bcf8156ec47db02c34e9af3c7d9a34761c6c481202297bccda222f22469f6563a42260e46c3c4695bc76e640fa012cfec8ebb84cf11354084bc4176ded4c8e2fb37ad09da99bfdd0a03de28336487188374196d73aa0e5f2a562d103d3a055a03112673390d38ecc52c4fe40819fc7c4846235f6adec67b3c063cfd321c7d057910ba596dfb17385cbe98ab8c5cac081c2b73d2fd3f218478884086a3ef996229c1e2a8c79bb41d65f43de533a6d4e13170c55bc1f1c0ca48700544217413e7f82725c8c59fe33c071fb445170ff9d215ff863c9b09f3824f42d536799fb88f6cc173a62077de1bbaa2ad7ba3986d29eb15f40f69c578b05d5ed21d82108baf55655b250f5827683f308ee3580749cd321734d8ff8febbbfb3045d5fbef5b3397e28e08f453f4976c4b4e118ce432cf57f8f83a575cacfc5d85554eeef3c8ad5072096280bb6d967305b9fbb219b09e92321e1ccfe03bd2f5e215feba0c359c2f721e3e9ae48760335e61bc7772c41efc28c9519689c39831d35eb877d28674a8b9c1e43ba05039a34c552abcafcf5437c5e5caa64aaa4efce9ec099b7d2738a2c970b11f46373cf1a70435b45c15b548f842e80b77934eb8c22057f4a680e9cdacb1c5dcc5461e8b9af236b4d7740ef58ad4d2ca1eab6c4e2d0e04d65cba3279aa899f41b9f81b2299e5be21b499394997608c7b05a408da9a1d14cfaeea6ad9f3bfb1d3208fbbfb1afa86e587aa162b372bd9aaf58481f1361700078e5e2e00bdedb85574301f73de20080de096592e7148ce20b0269bd9c4abdb424925c5b8aeef718de3e33ec4e86a8b294ee60472dcc3b7e3d78252740094261efaa48b2824b6e061f0e9fb75374891eece1f01a97c84bf63ec0457d20eb05f5fed33bc89315e71df961ad4b0187bf7679b73a8802c38469e0ab82da1f4d8da73f2fa2d93b1090c87620cec382c2d02805a2df609c88b00214e18d1ffa3aa02f16b9b02ab55f10262c21c2456d21d340f53d704890353041fd02b08a000435a1338a420dff1572995ed710d058e71d6a4996a0f45e0591e06edb9c9dae61c9fb0907250a12bb56c8a41bd28970a726d6e2933e9831fd9ec7ac88544db5227a7495f5cb24bb55948c9755acd255d6835f9b1e00037eefef7389ffe5f88b7e5d12d79349ce1a66be24eb6ce5bbee8fcbf0105824c3e3015cad16b5b027f8a426bc0834d50849802882b60c684a64d43cda5e84ae6c8d518eb91aecc03e34546234db019a9e095ada02fd99760385c76f0197f8b9ff7604950f900dc8b77b9e8937efe701829fd8477bb68fd4e50fcca1876ed9f621f6d35e5a1af498638226f4dceee780e7b4b0cff9440255253605e090412d06bf142049ae0967fbb6cc086f6392be5b6cdeb7c6b10e96844ed076d4a8935725a87c39a573beb9bf5f00a2267a3dd0b04bd0bcc459431d6b36e5155b3cbe8bbbfaabdf48a5707ef828da1e6c16d153885361f41c5aa53e6d5221bfe712544749a4922e14704cfa301e863679cda18ddc2b2e58ca61d64c79f8d381968820d092708ece675f55ed36c4302b7d883ff44ae8068b59a884f933a4d321098e6018261d8eba5038a8db0c043ac95d405737c1aa23ff0d1690ee82694b116e42e9882a5be20982e1e5402804ca4060bb2db14725b85debba90e5696fed00a3a9fb7d9749a09d64ef2993ca317fd5a5257765c1c6225e4214567163dd810b36bc2b8a0908d803eab6a84d284eb5af609d0d2cf682e0b7136c1e2ced17aedf98549ab614cdfcccec6fa06fc5d8ef8da80706394ea436d3a61a7061761f7e2d79fbad8d910eb63319b177205054465a8dae46b1406273fff6cb195478fd43336cd855780deeb79f6e437f9c3bb9b694f06438a0196c4245eecf1c01d6fb5211b4bfd0e345b3b3c9f256f124ea9cc1ad47edaae070814fe5f5bc24e1b45727aa268af850eec6950bd1a7772b385233bf721d435336168ed745045b6217682ec2dca4f4fe51be492354021e8986ed29c6882d309a98f915cb55a25d06f26f063579fae8ca6423ca93b2d75350b22d39b76fd60e333e25858684f738d3aebbaa0e110308902e651e4335d48e28bedbf62279e84a1a3b8c93c51c673662025c5cc5e30fd0a0fcd33c190f26f96f8f1f4196a40bbd9a8b55716db1df18251d6afbdfdc1c3ed152d8d26533c752f6ff55534c0c6115379cda77be4dba82d3996336c1c0d4e2db53ff77da6c0383a516ece54cb1005555120c35a7cf580a1fa45bec9c2a734713611f475068d00157145eb5e620410695ec2e022c6a28b801165b125a5c2884a36dd82f83a9bb9695e5b02a1967f2dccd211d53c41bdb252715ae203a3933f971937b159bf86ad5a30794709f0e32192da7d8e41c4ed20dd38eb9cb6ed00f9509ce19b5a8c2e087c6025e85e6faa86dcb7479d1e45785b208343c1fba8e1a32587df5e931f0e07a4abf8ec6e59a5e03b72dfed8e5f2424c08c7713b92a5d66bdc6f0c1c528a4a286fe8c75dc9243481755d8c17b335025bce246b4080323b4b6e4b838ef8d6359d7c4f22f7d04c0afecfdeaa4db1b52114e74ca6ffe12543d0db5fe1112f6fb878e3317927a09173634966c7fdc8df8b00530d0993944d06abbf6451d07fc9bfb78953d66ea849e920245613492f9ef6701408fd53e42e4609ab67f55a7011c4092d59cd38b49fa0e954e7259f3d1a93f738bdf4b1701a73dababf2be5acd9dda9cb4799ecf3ace615435a292dc5c62d6d2b70d3f89541a7a177006313d9bc33775bf5b81435d0ebbdc67ad9adfe96f5ba8ccdaaa02ac1bb67151d3cd11aa4cc74ad37e7757835fa4f47a7faaf949db1ecd84e67194bfbed88554eb03f9266de9860cdb7d7d726763ee8c25080c026c08636fd0afdb3be42ad31a55ff9e22c78df4dee40be8587280bbe917a37e027f103d4bd1da03cbc3d64cf384b9bc7a5d6f3969677b307b0a3830a41543bcd98c3bdbb3795acdc00054020e0fcfc24d00d92476edcc7063ae4136face081e08454821c805002188f603f3be152e11a4e0272f867e9263eb2ac96df0d44c16e0ec0ed20e86a05f66331b6f5433dc540110c92e57bd44330c7dbf2a95ba5ace601e78dcbcaa4792c5a181874599831ee99910d67805be1b3b688fb1f9681ab85505165c8b13e741ae9f7eb08f66684eb3f28bd65d65fee46ec36ae8d279c8c012b20d45f0a12d6047631c8a634e1562330cd9babde4a42fe8c9e361830c2b4ee7200718c589dcef2128963b69eb355ea2266b7b19c412a55a435ff182ae378c6e7d106a00835c247ed4384061651479dbe25120cb15c06c4e1f6c789042f718d98534425eaaaa7ca9cfa2794b7d69604b02a692c3482fd780e74bf788c274f0ddb780c9da359c927f007929c62b5b2cd3a0844824863c8b5be33d204b91a0681c6a418479f7b5797296233a89ac29d563ef15cd9aea409222b783e78beb9b3e3eca2ba652fb01065402c5fb72664360de08a13e4181bbde5141c29a813a2ccccd8cfbad987f248c88acf09a6ce230122ae76358ed3668438eb2d1fd07c42d9c26cddaae032e24e3ce006bba7b26861bf09be5a832f852d9622bdb0c79224970b148d89d416e0c66c240d5bf984e53b58c3d707fdfaf07956729d3ec8c52abe26f20b53542e6231d2db211815f58ec8109a8d6229a1da5393875a9e7eb3762c960bb8298bf95694ec0cd1a42d1cf43984c3a61859806228e7609fb5cc7e53e738d1ce39767c013d143b87d02e1e6169c3b416bf340ecd0b2477d8dbdfbc94b34bdee30a01371af27527129d3c89ac2e45bc91d0224b7bd1dc321121b2177f5e49af229514b8668a1924f8222c50f2a4b56bc904d94bdeaa6f9f7dd5af7b447b459cf002418205b48c40bf5f3db415df1b9ff292dd14a08128a91413837b57e67fefc4ec1855384bba898d0d01903add632dbf64828938082798250ace96c8b4621a1aa6ee1510afd65c481132a46ea92ba5ec503dcbdf5ab29caeca481e6f573621084d83f17c1b41410028ff62b520d0706a559732eea9f9d56f3eb1fe6d8fc26eb12b8485d2633ad0fd5cc043d0d46502a3dcddf9b0ef565875c219c1375aa3a82b6d6f5948060861f3876ee02177d559dd1cfc54be5fdf85a19554915af8f035509648b4f763cbba5b84f47f091505c73c44b108f7c8242833c14291e2fb0dc79e7a4a5ca7579090f462bafeb92ff357580920bf2319cd6630f79cd975427203fecaf64065a0261292f169d11a07c14e2b26b10a0f575578b5b18bfc056e1e54249f025b978aed56a69c855f6eca3137407405f77448a4c9aebfd1bcccd79510cf74d42f4df575e0e65723c7d978cc385c29972912b21f6d722eaf1b0a788cdb2e018cc9f0b9f903d64b427042faafdf8943e6bb0c308889699704e6a9c0107aa0039a31536ff1d76ba2370a5c7f7f70f5034e40f10f7b84ed73fb997c2ef83f92f9717f7d6f5ab1c44ea93f64468339bcb4da55d88562ae13ba2eb773b7d9fd889fddde07eaaeef7659a7dcb37863fdb8a6694f295eada692ef1ce7c60aa68fc28160afb4c68ae0307c2ba536c7d55c5a73f32b75149c6d4bf6e62af5ab4183d81453afa55a99a5ef7c9bc7b000c734a50992400a6cb24a14121a9b95cf371de07c1cb1e5b24249d16b8df626fc72e8dddfa877f7336521d34264c2f2ff425901d25cef8bbbdbc61da50351d869e0244bc1dba66ecb548b954d853207e90290d02f9389262ee07c4d94cf8cbe6c8088b0cc603780f9e928a9c99eadd681ea82dfc14985cefa0beb13d62a92c514c8fd1e6952b09d5b0d9b5484ee77a33eb3166c6dcf0c52ca87d689c427f7bfbc49cb67a3fc65abf18ac45de6178a61f19678265fd7822785604f6f483725a4bdfa92e6c888978d38215c5934438064fe2ea6a187ba65591a873dbab1e6b901a46ba0682c00a5ca448603058ad94bc2393783d49d90c5e3bdad3b50861508d84c0d68fa218a4efee19654391c08b670a87d6b2e2b8d5176f30eda1ec6c3f3afc061c776428879948cce15baf8dd6a8bdbf04c4e180f853c7ff263e6ffd9705dc1197abb4b883bb302d4643bf1bc93ef78a3611f57e9567622fb78adda8fc702277069e57894c94eca0d8cfc55fefbfacd26ed700489f56e55c1dd0198b0c33d2b5c62f2e0fdddf2dd684a0d9e60b1048f483e578f599c1c20fa733b9b7d7566c1ab9846932100a8a8c38e289e697b14974f1d8e47df49fa76b3b591a551655c952b53e2c7bd0939fa080907156f553a2e8fff8dcb8b1204ff2c046a6c1644a2c4059c2095f275200517f26980fdfcc0f589dce8e3d216da18ef68a4df50049f1c07cdd00883d9c2baa9ea4817c5418ecbe82935b67c766151b1e65594708c4eac5a262cb92c2368758cf8714a41c237a51f72cdceda83f418e06ef540bed3683e2cb339b69184c21271225e7ac9836611374490aeb83a7926708a9af69b046388a1c42b2a88dd8afa27a3d9ac6f48c65c94d3bd14f39cffcd516d38f93a0e1c2940e60b0ae7cfbd604a04646e29b3b2d928f6c518c5edc4df2cda94ca564d495a1e87ebf214b434fb678b7a0f382d76b9f9cf51709877545f048d56ca0d730686281072d55dce21d9d25ad9acb45619a7bb0965ebea7fb225cc1f3d6d218424b490ae99aebd07dd725263ef5c6035915be1a53b2c8d57c807a407145fe95f8d301c46176d2bae08b8363659bd5b5175a1a3feeee552cdbddc575e5bf96cfb5fb195f63bfbff41d04e00a128a551c6ab8c1d343676f26b367971bc472a1c72151a4e7d4bebb853c506db0b711819a73d4ce3421cc0b8102bd180246233817fd83c8c825e55148a65bc6564a21242568097944f1f1268aaa005ba4fdb4a65e662327fb38927d8a0191f3f47dee3ff1c844a8819be7030933a075d1577134a32dd844e2fb8aae50240ca378d91c9d839e4ae70f48c603cc135ed76bd1f049f8b758f6b38fc82cc640f844fa18120c730f2a0f62b1156631595fd8307d481ddd59c2d95ab61a1fe0f3680495c06b64888320ff92f021442a81d66f460311cdf01c848b90a7a88c645bd307f65159e511a0acfa4c2afb78d07c5c8343168295b0ac5710c1008f966c28a321075cf89c41c071225a05842d168c2484314e9334738a9b2fc9b14a53612d40608a9b2c1e2d456fa840633f1a059f051bda844458e4ce173b67f82788c222233b9868142330d1f467c637ebefa1a66ee1dcce854a1b3359fe040e65a14fa328e2ebc8c43a72c5086ae65fba06bc87106b82368c94b11b488b940c898cb28a4ad05644efd1f13267c722dfa652623206d480d5cf41ebee8e6b98cd9edc776b7cb6d88fc98976bd04dde12e86db708e01a0b98f055d9ffef055e4b8c40be42f62ac2867dbdc0404f5220f6a8dc93a2a3ae03990e1ddf011792d5d9eab972dffa22699888e6fae1173dca20e64bbb17472b6b9e688a6c73b042db467b6ef0c78831aa7cfef61500c29ce055d30fc3d1f9b1992323dbaf2408eb4a047784cbb2f82bb667f82b36fdb424f5a356a6662d9683edbd303bf076f0f6ae23c2b4dcbff171b212c2c291b64b3f7bc8a51f10d300fd372164eb9b30e8b980390353de348345362f7d8c03eb7b6c836f3f21cfee0c337b78db0bd4e0d337026f691788808cb1ea1c8623cbef8ed21120e7b98e4b2a201e06332db46d40529dc7b1a727284a4c746e1065e7dc0a94ea0a3cd1cd853b11744e1737fa7372332902a078976e20d8a049b1345b28aeb3f5cc7d45471d30a556a23059168125dc10218e02667dfe4a92ef17413787c95513009b19ef5f431c6a9346c8fe98a3166445687b078c6ab7e8cb8f5af48d6b076c5fab22f286f484192de218c0b19c23d655aab0d064ccc315c816b2e9de24d5624b4b9c2fde9b11f2fa1c8a800b4edbbac21451dc79ec2e972261f797b3790bf438c0f12cae190ce0a49f0fa0ec7c39b9ab65ae0abf153859aac835c2c065f9014ac3985b66fbc4699a539358dd48b60e2ff796ba2814bee58cc5a524744d400ee544cd6a67147a12eeafd903182da3b97ba5a41292a5df20793924aff0b9ee460c0927739ecb92b54ecbe6204ecb5ebcee0e82cfee72847f0523e90654c1352e8c9ed426a58c076b374a45a8fda7fd6852119626a6b81c32ff880866251549c60ff292b4062ee7cfd8178a55814d7d58df066765cb8178f1e34942c6750e416f27285e76c225544f53011252d59e22a84120a6a13f256697b7b7afe82f956167c4cc5444cc5bc2d21d5a0542b7aa708194ff85422a954147a558d916ef87c55f09cf73bed86618660c0ac85dc499771330fa4fee04132fb41d022127ccfed167c19cfe053b0638bb76a987a53f402cf24720428bc2c0443a95fa9ee85d0c42276824192d0369ef8b3dbfea0a698e36d96b0b55ffc79277a1fb956e549074fe51fcb17ca393412eda081750a1de8f8517cfde95d48bf10b6932430b2e1ce75167a544c2ac803c262c68a3aa80167d623e83d5f659bcae2c03b39e06f24232f3ceac0d94c0d9ffef5532b5aa97b6d46dfe81d8704d17c00864ea29752690841e1d36a6370296ab10e92904a5fe095ebf8c6d053d27863f45231173882516cdb3ebec2a6da4b9fe5d233112fec83016d0576657ee36bd88ae99a8f795608452d218a2d5602d49272152c8b63c8ab076a3d869760edd8a87808b43ae8110e7d0ccf04586d5bb7a8d1a5d47b7759d5fe21124e79b70907f9197d422294a947f4bd396f4ecb68190b3ac4eeb5216f83ed290ca31859351f0261d52a2dbc48a1262d08530c656bbff48434091b91b69e05faab296686f52f04861b21b32d6855dde59eca97f5ad242487d642565df382d1649864fcf7a14a2c91ff6a91ef95cfad55382fad5297efd6aaf8b7c755661688b8ff62cd749ffcff0d31386e2d7ecb0cb1b24a47bc01ddf582cc663619416822cbfbc3514af32da5a6295382522537536e1a995fb747254a9fb3682480f938c4cc24a7571352b9eeb3aa4ca01ff68b0238468759742f9f5305c46847b5f4034354eb01568949574cafbecce1ea00cc30c87d0210c8bdfb42f53516f20cd6a548b0a7377f387dce9c796f52bcabefdb805721a178bc54e45f5791e888a74cefdad82bc7abe5082cfb3c30b09fb1839e790204e708f48fd30c2c6ca49f30150bf18e39d64e5fc16171dabae362b34ec8132af4d827fbadb889553440e04020139c3d0bddaf16e9f0f00dfdc1aa887f027e252d5d4e0cc79c8ccc93b30bb098b34a9d97809bfe980b9c00182d68f62e2374a59b79f46276a26252cdbe78be9b5016946ede48fce262ba1b1c5d53e07859f93b3428f443fe50e6b4888595c2b6154d18860ad88f259eac6b1d21a28825b661ebd7c3648430ba2e2cbb5b12e95dde6d4ec1a74b1b3219969b1663ef791a16ceab488850c1ccd48b3abf61b0bc97c913451822dba2652ffb8846847635346a83c10d6545bee41f348555ebd5b70eb7b47ab8c400d061e057e7e2be9404582f6c2a830c2d87c99b67f2c76c15024617e52e423fa16715ea2aa70ff53c249a15f4b6033f563ca1eb4971cdbba4e8d3672bccc6b0e80265ebb926d4e4bb8d7f736ba44307eb4775acf3b6034d922f61e3c4d01bf132361e5f2ffdfa5a5e39aa3e22c8dd518d5072606623b08f4aa5d7413d7b5d0f804593ad7b89f19e9e401407f66ea86e7bafe99a16cf1cb3e5c9d241c4f9c58b637f10b69351a875963b3f829c187cfeaf109f19caa18a10726e0c9c25a46c6798e5a19811b0c20f8eb4656413c268694b8465ec354d0a2b91dc92edccea7f50f4be373d4d7bf726f45959d151a70984edc20a21c9c1f6c454ea75a6b0bcc845602c4c9aa0e633b46ecf03134a909bbc382664009902a8cac5009a399ff9a3f0076c2301d60116e67a2d60ac76217c339f4b54c955976e79eb990b0ca75e79aafd83e4b8f4beb09521371336a192063869a026899393adb5c66172daabdc4c284c01dc6fed441c0244eeadf7301b2724b452e3dc9928ae46a457226e118210001686624326ac4025265b555ffa6050f77b24779480a4e72af830022f4393b40c02bd5aba6ad2210fe3fa373f83f0578539c6fe4195d9588ecbb36ee729a289329fa21ddb9a6d250024cad5507e3ef5614a7668b20d671b97d479e18eb82c63b4885ab1d3594768236766c9c38daa93f13462722de82195276323f84d622bde39bc98ec8cb8c871cb7fa50975dfdcf9cc36de18a258da31d79fb85f625f840b8fd5ad14db0b63e5ddadacf66e5da963940640ce763e6916a4e1d3b27972a5943ca29f1591896425fb88504c3f13052344a95f6bcbfca304a9d3007455276ec53c8e2e7734afab7c5eddaafae914253ef123214e9c421184c981889af322c00eec11d14d86457f92ff45dc0906f068b614e3aae96daeb5544046dc90747ef84934c8a3028fe2246f61193113caf150e143041b71a8302ed72ef1910d1098b38e28b7d62b8a6ae3e359a8387597fcab33b001540da3a1617b0bd7164b0429587647702d50d4b9218bb8e3aeb90c682be087a464462dbb3c1d921cb031a87188d7b9a3c120334eab1673d2be68ef8bf0ad1fda4163980167e49c9b9200c45b5a5ea408ac6e761be5f98185f7e552aa5db54b468c4e123b96f086a8955a40f3b467fe518f7a38e9d696d92ebf5ef276013684c9767597bf294220193f154fcf7f66eea9eee5dd71cc06fcac0b799f77d392c3074117c4d494a9b3246baf75846d9df084602f368f6beeed8155f12e0f640ecc2c14454d72e0baf3a00141b2679475f5389c83cc466644d6c622a05ec4935dbb64a1d46a026010b6426ab998dd18ca4cbc62734737b861ae516fcc1098d674d1da9c34efc9251def431f431240a9708d463d44fe3bff7a2a646d64039fd10062cb6b43cda634eb4b2f7326acfbe35ed3b106e61914360ebec8babb1718bd058b640cffdb0d6bce9cfb2185c14fb7434c0904849a10eb49fb533e8d0d0a08b209a029e2a5e8dff4d060a062fadce996cf0c05d80e9bd02ed65caf0f070adcc860b505168b21a188b3deb29a9475b1e68d6a6b06701599cad669597a2ea15dc8fb039d011e3d69b74caec9362ebf718856206cd1b7f3acaa9b1eef5b832026f4edbc64c068b53127fbd0211ca31a9743ecb1a23c9046a312f9470861a8e115ad58eefb09c02ef2459a0792b18b0caca449d06913ad9b3bd5a28fc86e95a5880a43ab0a304031549686366cd4411c8317bd5040bbaefad3becbf0bac61dc5723ac546f5aebc66c4772d0562c1c2f5689ac1dc7a556d3a172b968f32966976581eb9f3a9e74f21be85e319adc71ed8a0ede5af4e256ff75ce6d084e7408b16c31664031dd5a6832f5aaecdd0dca7e6719663c47c03c1354fbd212921fa5ddc9b5dbd4276c6704169140d2429e780928cfd734250eb6cb7796f455f04b1bd9e1c9f06d068d070733063cb3117f4e25ce3a1aa9e60ab7600e82f65acd2374d3c35eb2624dbf0cf71cdd0da7ae8460bda93b65e0058ec2c780a872286f71b22ff30fe96f743aca34bf69b2bd6f6c9df29a7006649f0380f7ea2e3d4c0211b26873d2e69cda7be45228b91c5105388483fbfc8332d9c4c7940071cdfdb5f90e293487d87f56f3e654620dc9a9781d66cd993f42a84a8a167eb213c89857e72acb0b7acba9ea004152e623d46d0d4f5054cef92b7125b0256d39acd17707fcd3a913d55557bbc58b6e7ef338881923f469315c691808a151c88a87cf287756a4e3309ec9a90de092272deb4baab9301953d04530882a9d8d24fd42d13100e73d7090822946e1875ecf73cb1cf1d8f18ade02f21a315b20dab9731b27bcf9c441632aed97f528a6e5c6469c8da328aa1384a465f2ff87e5f6cb6852f898a0273b076d9eeb9015c775ac5d066c87cda5ce84c43d807d9880b59bb1396ff8fed0fe680cc326b7beb23907a4c1fb4cfb3ed09db7b5e5afc6fe446e252094e2df711ad2df1335820f555b7bd92d438664997fbaedca301d6a0fd1bd3dcc7d8ce6f4e913e57ceb896a0cc3940feda08568208e98f9f6c15263b87d72b48b45aaae89487237acf67b61e33034e0091b1a948c00fbadb459ed034671eaea97c8bbc87fcc822b2cbfaced9672cd58f5f461bc1a535dc54cbeedb1294a7b60c4b1b4290c001e8192778c94e6cb72834fe5d5a82b86043434dcd101654f8796dcb903d531d3ae4c94aba19a09f68977dbd7a0c0ddb917ac8abe2c69953674f8754cfeb286ad7d2baf319fea9abd69c6f8a48aa18eed82a8c8c85e68466312eb585b394873c6c72eb3571f062b94657f8528c93988bec4d91d8269d12de9529e16f7eae27629c15393c7d0ae69c4926bc004e5395b5add3df7e6659ec0c15f84e850cf3e6a8723716c0b4e8417f1da75b8aeef377c755fd20b40cf5571ff3ac0a4dfacc501ef5bb178367d2a5c13b916c9a56a465858652ba3d3899ccbfc445a5f8f1e2821e70fc960dff86440ebe8e723f7907d1fb9cb09cebc61b451114da7bbe213d17b636ce8a29c5d75fb617a1736ff2bac984772cf64bbda656418d122ada8c4a88b298e047f9c1d81c2a10fda143ac295262c9dd58485ad95a62b3c8916a7faf1311e589915c914b1199e2c27a3894830bf9f9cd24f02da0208b5ed6e4ac7573e492deaf6568e65badba841d2d6234d94ea5e748acf19b5874ba6e31ba32286df2341dc97d1d67d32f1a65730dd9cd79d2340d535f4d424e8003980828403336a4f1416577fab0d1c50e56f8aa09fa2794991aed8c2af35f61ca886276a7c2f382ce59f462d3ce1b21aee03d48fafc552b591f450ef671ef6dd075f15bb13b75aa6ca47825d0bcd49d65b721177eee27a9a887f344c7203d27a0a8e5d476f2fc809dd061207222646737d1ea2ac4b8245bc85ae6349c8d0fb839c6a8d783c2e91acd1d7793c97d387c587bfe10972cd63537cc80f5d6afe5f3a0181ad8002da015095f6be16ffda2d6e82c4cc81e9a0bdbcf705ad25ed87ded60296866285f0c3ef15f771fd7098936cacdb7a530a102bd56b10d9207c445be53427c119cff919331328c67c9720e8b197044fd722753fe7cc6583bb71c6a652852e928fa97e63600b703889b7515c0bf32831c5208a6eb56c13d7f29b4ee099dadf5ae659a59f0eca1c0ec49b84386653a26ccb175f41bce4d032be3eee95b395c21e5826a0c6158ba52ef143e231a28bb27ebf8e9e6f5de7c17828dcf8fccf2f859ae3a9c47e5c54c6e113311485b752d5a7b5eeeeb8936c8c536f6431dc71a54d5fa62a2e89433f838d1849dee072987b4251ae6fdd30612611deb38c3584afab88a5b64ebbea929b0af3c1ff5af40f655a0f5ec5da30b3a919bc074ab0e92e3d30dd249b71e3086d664d14bc09babba667e815b41b75c2030bbe9d72f010c8834f3097fa27e2bd7f953cb43e0259c395705e7b9af9c1ad3d12b80538c09d2729b6a5ccb85b9a1982e8ebc089e8636fb8152bab47a553cb1a9d0268831a6d557ea96f9a079b8a228d1a8a028df113e152969fb3ce52884c463ed3f6034bd51a63b7d3de184bc331616b2ad4c0997749b00e46a4eb2602b47682b93a566c46710de644ef4c55522c08e19f127555b4199e08f6f51c2052574f61b59488794714ad0ac6d1c57762bd4fa0389b8b0f155709d3129a09cec98291534d53f6e7c9197272f2a58ffdfb154ce7059df559229068ff0b6d6b839135c97a18aa06ffc38fff4b7fd5e8f1bff7c7cde3a3c91bbb5a2e0efe9b58c1551a66578ce34aac3698c64abd0f86b7498b90b06f7780548ba87aaa0f2288d98c581c202e5cb93e60b488c37dcc02915399e24c821c0fe78e70798453c4f01bf0f804b360b89b73f76d11f0893e5db003c140203b806f8a4dcbfe7c62aa031c245940601419b70e4102d36e0e3d0723c63731161a8a951d2a4689273ceb1bf092114b0e4b1115065772b5432a0a34252f8696ec66ab62244a71624097e1d023bcb1c93c6bdacdf7f739c5952f13889bf1ad3266ef72af84eae48c4bc280c0f1758726d092b9e1e0ae189eb2c5120e05c43280ee7e81f4c13b2b628c92e6cee08eeb49930dbf36df609ebb5d76820a5ada1b46e875ff75962718ac5b6c020bf173397a08321031c68941070d1450413c5676a4370b734ad9f1bbc635743a988f9a6956d264f87c8ced3347930195af3788a03250ae4993eb273bbcbeab84e108d71c2e5ffb26a02e94fb7243c382152f4da273b9dbb2253233ab33c511bd0865f85670b986c4cce232d9972ad4c1f26831ec1694c3daae0d34b9389245f508c32c62fd0b0a884db739eabacaeca36cedc0f0401a0d7250d626c946875bf51165a60ccb60f06e8e2a8f0311bccc80f1e345357e52c8c6e77e2aa1f8f2435f882fa6272688fe20045884a2ef15d07f9a8d84e27b0a002bcdc984a2f7fe0b1c0d4942f17942e2a151d1114a076420530945b77e4f407f42a1f840e399c35980935467412a61cafbdb430d1851c211c11578de5a99f6b9792afce37892355bdff4cc735321972bbd2ab05d15b586fe79c39e068cdf2173bd66a90258cb03842d8d2ee4ee11a1940e34c501649d15a875f002f826cb3ec8df67faeec3327c1a004d10e7bcff88aacc9426f2406b03ea530aed3b4853379f885bc3cda6582087b95e540f836329ed209b2ba2ff7124eeb3f14c31a8a8b5050d4bfa28d5515044b8c5e0f2038514f97745b661b7b8089e67211c2e1a02caad9979f24351e55a0b4ba8fa0a9d388413c91151b888ac542f0f5e0ecb4909ad11a101656e83bf10aa4981353220624b40b32229711e3cbfa886b074d77e8546d5544d7a6b3fe7ab6a48fbc92f60c74212981761bf1a2ba1e790c4f4e699e3deebe173ced51cbe462e3480ab62805f712c9e1a8f75926949f80c8383a1e5f455523002147784efc914ab95eddbc295cf1d2ef406bb8a0494c510a8a5d3878583f6e6793911b7abcff7d5bfb985894defcdeda2711d202d5bfd2615c29034e3bc0b82aa5fcf1d52c5e539d9636f454970f4d0df5b244e3ab1d1afca98e58bc19f03f80a0693b66cc1e9d2273e31af81182282fb8f12843a506067b6ae95e0bede4b27d28a5fd8e72eae4f80632b3cdfa3ad25d3232ea86871a7ef0c67669df05b379454668208ef2383da894fe96de315eac6dd29a30222fb3c75a7c5efc86b8472ee394281218944c7f5a253c9190b41fb3fc2b697a9e9a934964a0bfde9cac73e13c00ba1d85b05c372f8e3910b4c3bf42c3ed907c8b68ae57d45730498dd9e98cd3a2324624cd75ef8044d250efa527c0898ab98c825d765a2a2bc14cb10fd5f4bbe9ee447b1fb2af389ca0331eeabd74d0ecb95b6a00e1ef09af58a388525ba838309ef5e015ac4614ce11de530283f220d04a59838ecd328a88118663633a58590b2acd5998a448207c2a516d71dcb3c8090bc94304074363970a2a4cbd80f2eeca187c7e96513eefab2fcbf6c89f5ac4b842cc897a67ba206361c9ab80a3dbddd3a7e0afa61886e7bef1c63b2cada70750d05aaf4a2a886ab35d44ea517e819b6ac81854de2389afa02ab09c502736a9b64df1a3a831e2234ed9fab90d9ea326fc6626df403bccedccee5ff5bcc93a1da2f4c84666c4d781ac09bc0034ac4e2455893457ddf719ac40735c1259073a3b5b1434954d0535f3a1cd66354f29b57c49bac735f9265685e64daedf493100ec5f6cd136ee1c8093c7318ce8d962824e7fc3e50b3fc9cef49204cd8413dfb0b31b53718a108e13fd9e47e1b4f6f14b02361fe8bad78fd0d232fa8f1cb0c9b191d896d8103157f2f640702ca62e55b8d3c46bc429bb70b99f5c8478e8b51109ef7f5d3ba9da70531828f249c7d1190a7510737e44da43adf360ac0bc3d4ffb1a17a7515f473d98838a1ac9fe029dc4bb8c086cbbefbd0592fe79c8870f23cc09a37fded8bfe815f6a006118a356d8fabb8de3ac24345adf5b8560b0e9e8dde1bb26db5af07b2797e9f0add32fdbb84cfd42ee990de275b241a931552ad206f505fd7fba417ad5a83caccc7165aec23470dead37e1960c626e45855e8624ae25bcd18e8d8675befaf1b436f4743976703d5a86975a1269dbea483a26b16ff8734e608ca4130ac8df501d0a1711c4402939609e0be2facfddbbddad22c4aa5adbbe885908f593d0734f6902fcdab14bc18621022d8244a894e6b4e75bf2c85fe967f28de9edcd5a7721df6588c5126437b84b173003e710f67e2983093b927f4d332e1c46fdc4a59e2ae394bdc06ffe555a890e410d9545c9f7b48daa01d8da7fa47dab8e9cbc07da631e2d9dcdfcdeec5c68498dca515f98fa2610ce27b3e63e3149e335c06024a7ad42765664f04d0825d51581f455402ba0ce8850fa8f1401000d359ca3382b4a15df825ffa7e46bf410082aed56c9542bb347b07e857fc32fc2336d1a8de99031d4c810c623f716707cd43de063dde2bbbd81dd4c41d8e7022921f2de04a3ca3a79d757467c0252820be8cef55877f49def6f1f3a8634480c08ddbfae46ec3c7c4f11c738352ae18602d3854559acde31ebad0a8a22ef75af9079c12055c6436f2ae01510c102b976dab0eccc15ab073e71ccc8ae3ed5c0c991a94e01a63ab16d2d18bf9b4c6b6208058b2a75384986c8fd91e7ffa0d445ecd6cb2c2f284abed5992d21d3b7ae22fa29bdf7d46d73e000863dc15e320460973991e3f70172c82797cc033e08300aa38ff5e3f0dd0270c1454a7ea1bd9a982a733ee6c913fdabcf9aadc676f4602647a4eaa9b84bae1e86ace09dabc186eddc37f848ef2492a440b1ed3ce49410df5a72669a47cc3fcc7216c1c4ece7ddb48bf16567b928566adbcb7fac3f60972e810baa7d15449271f2c3caea578677b5ddcc7511dffddca4c59a4d17c73b5e5f11f9fdefcccc579a18e47156ef1d9498b07c5135572190edc687b420b37e61ec6bebec270396a7a6aeca782d0b53632899e6003f35af96f0b638d2c8f3e431ebe2a3670d67163785d4486812d16e43c96a7d03d00d13f6784d84ad97e294e6769f11168aec6b48ea178a7290e83232f4841c60ba12aca1b5556f5e8f92b9b63c90d89e9862f36fdc09e98b9b5e2f7ccea954b0b7a908a17b9c7f85b085e585932297739444b957b5a59dd04d9d4cec8aaaa08333db6e6405b8b3b379631287a15963ca92cc8cf293094a3fa78c481acc5bdbc638be03954972728b8ab98e282b6bcca1d6938b25a33a954162a8186aec492ff6245f58191e581cf5c580604279aeefcaccb1e53ed41faa10c96cb9669829e39ecf5e0402c41e06748f4168467e0ea52b3b805c44e89b534858213db165d63584ff10968a643b8fae6918a302ee67835d006b5e58075d2ed7c7e25656e23d58b392166e4e137d3526d83f2c1324c45e0961e9334239ee65bd23ac1fb7fd62178bef1a4b869fa6872ab177f01d3087c6e621b286e06354bd678dfb7b41dc2e7b0e6a7d68e1e6e81323656e7fa581c733f7f82313eb4b4b547b8e0b1d4b5a91fb4e752d9c859ffab6a347d6c5690c09e802ad6cb222c5a9259355ebfec6827a285c0d6faf657113671f042e63986c3b9c4819ef35b300729f32c7cad4c0d6bbcbd848eaa9826a67afd1e0a6ffd3ff0d8d2c9404015be81b5ec228115644a9d48ebc3c2d685115aa667968b5b30d28dbf8d86d853a70d8bb35c51cbb61f57e64cae61c46bfacc6241e2f5f14094a975270e4fcaad2715413389b088670ae69f48f07eb16c73fa9b3345879c5dbe6042f1a75784831edc748da268fe1f0630c875cb7ff6cebc14710d7376d0b8f48d441737dc90c1ed45613c0c64185b32c47fa03ae16505e8210e1be1f055361fe68345becee20b0d97dc91f8c12274b24bfb77f3fd0fe5fc2a60f77e3d6efacabe8ecff2d7a0eff42667f98605b35e54caf917fac8764471e51017163dcc8b29e61b06b24dd780cded98196a95920ce84d440b70ab9d52009a07e1520bf152e2a4e41dcf1643a5d8772e751b96179d3397305999887c9ab56b78f44b3ad0946328a7447c2f0ad52d0bd0caa82dd29222eb72cf3388f5e4370bb4f36a3f63b1624082bd17d92560e844672a5d59b80bf61168e02ee097b69c14851858118fc33726706aa6fccb197b8973e89c3e17284be868e5b2afeccc47579c320276649dc3ac7d3231eb5b7cbc9348fb4b521444312f24167cf1a5ef1adf035439d327c6f02497a760cea65c9f077184e56d7df12a0d954306c11a4d2fba00d3a2819ccb771aca6d7214d4fc62f5a25439c96b53dd0dd6ac932d0376682d92a8b5fbaeb223c1a06575bd6bb523a10113a842ac222fdfb8674ef969764e5c5979f6711862504d56088fa00856006b44d87545f977443c00be53ea17980080d29116c6cf806be592dcbaafb4506edddd0d428e5674c6ecce2b47daf0215954f341dcdbfe11edef5aca8110bde0659c599c7532919795a46daf75deed1528a8da6871c23d9ae0a9fa527ea3369cc70486bd4d2048af5eb90a55712d35d1974cbc52c7d6612a9f337ccb501fc2d327774d3113c1c5c7e8b65de729d674eaf2ad2bbb1d16de0aa2057a517ce87d1eb852f4fc968a175198bbd3fbba5e83f341684ea52b355a24bfd6669aa722d8d8ce9d91ad6ab47fbbc87f0ce37779977c9f5ba3cd0c5dc0c557017454286e7e63f56ae6895ff1300947a746f119f9401426aaae9d4c2c780bc14e4201c95f72600657e34eca4cb261055ab3ec130cead9628f2cc5cc8c1eaa0690cba42c52a294196642494402596f1bb9ffeaaea50bb1e1664f7ca75ac92d34ca2c00ccbce8681ee76fe5199ca4faaa785b90967ae99a0c825852970afd7cb4a8397814d8accef7452e224c3f7d68550b7b8769d2ebf38e007009b2605b2f50ad3639622e5a45d5df62811aa8f2d4234726e43435c4b9a4ddf68bbb3a3529e892194196d2369955e6946d93c63491cf9d8f44fda231886743b8631692af53dd9f80760ae17fe6b15c3ff212e2999eadf5d2a3b8d9edb96a2b6d993a4012525f5a268d016b2acf47ccbdeab366887e395f32da5c40b4da89c7d9c7d3283aa765d9c0dcbdb68e0f26dff9dfb9a43b8ab833a9bd3cf4ac790c98c2dcf76039472fbab001186a58730353d77cd189dc52d5ca6829becc8ac3e32f7cc5184111a02d562e1db97cec9e7f3b29377fac0bb677b666bf4c7cf35744bd59e12e79d1c08d784048be174dbd5cd7c053ee06accddb99ddb7ea07e460202fa4d27e267b34542d618dd4f5ff8ce65599ea462730a79a2543b6fda0ab9a0ece02fc33330246fdc0d4052d1851e3a0f7b8b58d8a318c6ce4c2723ba07edec8f337f0b524d6b46c72d5dbbed7de2d4104dc5d031434a95a55fb062c54f63664a1c0faf024e2ae428217b8bae4c896d1efa26533c302872d5797276eebe0c954247ba8894fa94cce72f4da75405c3619edab5b05f0ebcb9fdf27cd611ac9ca0a8d0d304a8e6003947fe74a84e83589cb7c4233c664ae4447d3530fad661715675dbb6aa0c0d0175edcbfcd0df630b776be1f2d608b8d4d49e4f540eaa4278b93fa0abd19eed6245202f8df75c3cce8cefbd4b7e699bb5e9e801b3d3730e2a77bf2a4b7e49c9dd0ef1bef5a208c3474c3a00b2b95acde954fdc78b8cc22082eb8e5813ea5a5697e504b83e1a569ac5ea0e45aa1f65bf86d108aa699a114c4cf41762a5570a75a27bc1b8a00eb40fb1de7f8912328064ce2673a193f0aa055fd8e307f3f0217644b011e2a3602d0c2a120e31002ab239ab4ddb54d7e1da2fa579409477fdd420c70cad78852015613b5802a90aa0dd0de43efef03f1b96b4aaa26202edb35bdc5bd1f20e390ce4a689b6165de8d2f5daa38be340a960718d8b5c90a0e0408c44427c9e38be9680807b7942e9162e5fe0497027cec29177cdc0ed55fb60414007d4e67a73f331ac1904f6fb6232e0dedec3741adf11885f9dc1d069e535d4413daf7ada2f27d36ffdae0007552a33d851b8b50b1683f1187f39f6045f18ab1651ee0bbd57c2f4453aeaf4ca5641df60eaf699721e42233a086cd6061e443f949ac4167cf492e13b4a57638231c1d4659578c4925fb6e8f2d0769d8849bec8419a27aeb8ebebd89de1050b38f0d34a54cabaf4bdacf37d3947c9a3a68a3a5f4213b2a768395a1a9308e56eec2790505f825be84e9d58a9acdc99904c62228414b2ca21b616dcc5335d57e08d3ef9d4a623b281dffe39be3975d5195805e51489a054d5892aa806588e5f8c59d0ef119e351f87c874a46cd586de4336c4b1f71dc09e1fdee39104e0c66bd98c9682d122fa2514b540ed3b2c793fe8c4cab238d4a93ab43e21297fa6ca9f8f010b2ad1105149261e538445cbca6a37d641a01237b4174ce8eba1abe9dea258139e90ab29969d8c36a434ddaca8861ebe21049ce52f4cd402b856d6b7082c68af596a06e8eb9771586398a6447c8d8077dd81bbc9f0e53f9e25228044d7d8f2c509c4e9985625094356e830c90292843f02badfd9a6459308041900004937b4e8179b69f641585db325ad2aca5cbbb2b5fc7c6fd2e1888b7f380a43baa8e97c67d9772524ecd3c17f56c6a8225415c76b544ea010944e47dc14a593a107ffdefb894a1b953c8d25aca2f83480a9df2ab8555842456747a1ab503216220471c2f350b7b9269d37c6182e4c6d252df1a736030ab6c8da85cdee72e33ba49c76bcd45f7c89a94015bfd4cac02406dadacbcd5badd7a184e3c08557b75cc98358ab84bffba7c39e2165da1e3ef4f4ff9c2d496f22dd36a6c04ecd975b78115d1b0bae6c779f209d0eeddc3b653487e9d815d6859aad4e46926b5fc21b5723fbf4821b8adcd1d60f91b9a93f53ad8225ad92e6f8cf2cd1e3c7c7c91281ec8b660aa6cf565caf8f3040531608d6c881636e17aaddf5c416931fbb5230b37d893aa283b43eaf3921322f8a97bd99253662eb34fafae6949de93646d9b03daae71cee6dd25249082ed4491143b4fd5df78ae92d425263c2f65ed258927596a416984c00ef51468ba6f05076554db44f2a3308f9be8e71f2014fd38431d37455c85453c829c4981812b3f8aa874586220adbb057538acff99f83b5872d0955355d5e026fb02e997d4f2ce77726141f6aa6426958996eeb3e30ef4c68499e1e0d24f009dfa45ae3573bb42bd0a2b9d632e97634344babf2d4a35713207eaad0e261ccf6a4c883fc648a810563aa15237cc004a6567e88139d4509aac96ece2a7f963c42ecaa11016b24b9dcac11f2d9029a446573c9dbb02891346447e56e5ef93e652d5f3067bd7994568296b012771d3cd0b3ed77855c8e48d9549799fd704dc5ebc404ad04b043876640707716010ddd0d171a6daa71921b9688934d36c2fd5444ed0c8b485cb955c0a9d5e7ffaa16fd0728bd532ff76888fc3f449e6668337d08a6b718309444a8e71bf03179c17642711b0255256a7638fe3080e06866cf83ed3c9dd317c8e556c817e3ece5fb1004291fe0f3a2e4528d59250850067f75848527c8df94a7eba8960cc696149946ea23a6b4ca812c113e717c0cd7ff452936f9e42921fcb1cd9c90da4bc9fed8985943ee95a82b024ea47d90423b2fe73d135cc94d6256e6e08d1f2b298f5309d6aaaa78b7caaead5d0a46d1dbcb31ed49d4b23635b09e843d900aad1a303c6657030d995d86718a4d1931c4477c59d909553462f6d21b18d887ba2ad13aba15cc78246aeed0af621ef3c422d1e81feb2720304f83790b00f72dd4297aa5c7cfcb4f43974605399c8a51e4058c159429ab9bbd7015a32848fc478a7bcd645a1c2312a878b88f81ec931664acd6881c322b0ce0acd24dd2a2558ef5ec3bfea0af2c587116218890eb46b719a5991deccf4daf142af5dcb3dfeec76ec435ee46e0884e46e389a852add92043af6049b2bb53eafc376b5cdd24e925a7ea1949db80af11d1ccee7ea860644011f0f08f367937e39d20f2c2c2bdedcbb1d93ffba5dcf6a1011ab2a33062e71f4e3561418c001af24e88760a02fe7487fd72dd1902f489936f3c3d1c97d0184d2fdfff08195bf3cadcd63d649b75c18197217c99a42139f1f127ed1d62920a1ea501f09c9cd06705af34ff5ebbf9689aa44f03a5153318327eddceab2ea16e2d64ea0881dcbe5d32314aef4b64e05a5077aec49dc174bfd20db42d2ca93bf4f0cea9446dd5f2e526dec0aebdee7cb851fdd9af85a80fd00bc1126abf4c824ced632c20018808f8c629093ed57e89ef0629fff36fbb7e456e7fd8c7688428d998fe59d63a4a383538203f4340059caab5d607db9606a80faed5df20cce06e862b1ef7b06038a5310eac376b57a32933474ab62d992936f4eafe4c6da543b0a555e3b4f5ca6c4135cb3abf69796f4b29b58c7b98958f9a0b5c692692648d668cbd1f969a350b324999824f1c6650c54c425864c882a54c959dbd6915c3b8391e1baf82533b2c5306fb3b90bf0e0b3c987a37f4e3fba291c689fb5f537404b3da34c07f0747f074c7bd3be5afb3305c67381ba78c650dbe7c366f2a7b40523a48a334d2e19499a58af809efe9eb41a92fa80fa2f895d4dbbe852fef505af17e662df5f8897a255371d7629a02e723f39c277cdad0c510d629fd1d25c284412e8b0964e2fac530c6d2c3f53c535649658f9dc272060e008ef6a4acf0cae209d7e57a7a2c65959ac4ec780e35d3f59d9f9ccd7d30b36818f16a47415bdef7e8a161683c9560c15502bfe0b98613135e596ec00ca0e7e85c40bba01c8a64a9f8a285154bd44c2f5e2cc93f2b43137bb5de06fc9d885975cfe46248bbdc8d3b5828c42afc7b06955950d12e5f648275f24d2342662690661d39b9b574844f165a0919bd5438323b7be077f287c672699be39e094430408fba6d1abff5a2e5a189f610c11fcc3cfbf492f20818cccce91728a72fbdc313b18a13dbbfb2d05dcc1b5ace9d76d23a64ee34de01d26c8c9f95a631a00b92d585666b4fe4c1a0f469e8e665391345284bd2061ed1383182885107ca1dfb84edaec0c1b73a3e1c3e155397e95b7e9c51980056a56f03d0162ab697e4182d016c2b0103ddd12a3124a37e483825882c806ca56ede64abec54353874497a0cb90c994ffa06b295705987645be9324eaa72f07a3c17199888cf9d14277e81d24a2bc07c6a05d490bbdf81098dbf8801c2d4f8143944504aa29135eabc9eed200109830afad6608342cbec5b1dce17860a715b7a1a53ec3e3d57733f4f6e932b6eb355a6c3b2061d551ca84c56c7033ccf6ab167b76aca21a347bc86e37c9a61b85bb6bd5f0c07241c10a4cda73ddee5cb29fad4346840794b2c1b99d4341c8882efb4359c2978cb63b718bece4e940fe569e6be3e1a13ad6d3e0ac4b0ac7909e2f9a783ea21f2f98d05ac2fb29de3b67c40ed7b308964e3fb4e7de5502d4ddd2f5580ae044499b92a9cb9fb8c1e37d514b859999d29eb90b0106aa622bc44074a1b64d779469e03dcf9fc68c312c9506739229f9ed385e89ebd2d83c415321e940ddc8fe59ca4aba14d71e05314f37aea4cba7231f12174c2058e30886a75eebc5ad59915fe61ec0263606c5cea0a67b079479e99959e367a214b75aefe87bde1e941000e74622b169f8d64023576ba3b5b785cc1ee44fda0aa3233477c6f1b8bfa600bba3c4ab223e2fc8af2b69e70d4b2f3251571963c6e1fd09e25cb48b42f06f42afa0593f71ae00fa552e1a2ec8075e76dcae63049c700bff169a45672eb3a31c219f0018dd5b072e505b9d0886c86c1256e5110a51b78decb40c7156b639c6eebd0d11d6026bcb09b382d6fcab3f32de86869c3c5568c83ae38b9b6d53be8a7353ad7e35f08e07bdbf248577c53901416fbcc8671c5fae595cc6dbd4fbacee6d21cde2948cf033cec0747c14a2e53f3d05109be693d3b35c2069e1513e99e5944bff656fceb2d9302bdcf58fe65eaa439837da73a05c2330fa743429ca352e79c2dc1bf49a79e82a5a082653e1ec230b0ebbfae48c95cfa5c83f4f4ed604c123c9a727a327d9ae2b6b3ababbff928d2e4807ab21b2e6608932f26f24a525a1fb3268a4a2b8575d0291cc394322fcb763b477b2441e30f524010bd7c806cbc9f599e8906092ed3b310ea0f51d030d5a3f97bcfe2ad2dd0e7aa4234344ea6f4434f5e44765430ce784cb31d95c62c2ac3be4f1e9cbe435c9e2534413aa50e7510fd586187598831fa9d5f59c113b87cc1f0de5c71f2ba6708a2c4967e108591a3b5248ff24ab06c7594da3b84f06a3ad6d3e3d20c4018ac37699db2610b236ffb376388351f583baad20ba8b1e1647c865d9152e1689a03353972c55bc4a533bedcbb8fc1badd46bf81e618374a782139a3806daad1d23a324dbcd401f06c8a2da2eaa668fe1be3f7a568fa0f067fe7c54e013ed015ed1c8a87d67db9ce5cc545ea060008c1759fedb9386e8da85e45f806be8d79c1c578f6f812aad33464acbe4f5801002b812ea7a2bd6713f59809f2cbb5d39d47100669cf564554fe829b0225c49780a3fc4b58c89a632f7d8a61a0d2652b605ccb8bc88296fee3178e2056094d8e2146bce93d097db8f3994a7fe52e313f0f1ea718af20cfae0c272beddf9403ba8123528836200c85324e716d8e2ccd7ee039627c103d936432f5d661597cf252674f739c99679c69a366260b653f6ad67256fa8cab3524c87d9cbc3c32d9cbd95c898ef5f532cf0424909c4196963841d82fed0408837ee145d2cdeced623565fcda80dbcace0fad4d77d6d0584dcb85831c40afd95b8225735d8a16b90f37646d88e69b494711f070ca8e8d514a997b0767f6e429eb93ff88e0b9c91571d403bfc93ea0a5486ff317f22034463707cffaae94ffd6c4580dd4b4032af8569359301c554d3a9984d47ad9569ea8c99fbd57734773d30b884a4923f77ad9564ed4153d9f615e1510c21d288f04760e1ce0344b7b00304066df1ba5dbc90017e6eaa757fae28a813023a64547e5d7bfc4124208d964efbde5de0128092b091509b5d201a47a3505cf26e4859a4aa717e443ce292db5b6be084996178c4c952a854bb18e2c8115f44345db4abf7024cf141cd9c9ad752a9595c8737e3182b45e979d9753867e251bf4f3df952924fba323439c29a4116e909ee27781d0836a3100c6c346daf0a8e58996171dc820f7b76d035746788b2e2d2f31b6d196c161ebb1397810124c9fee220471227703418427c88007ad9e26e8200241b2c08222426883142168612984bc89822b54ec6762ad04ac873e4933e43e25f56f3f62414c6821214b190988280660d7670959aab800af74ca27e37a3df8d020360210a020e70737108314548a214c61850235dce0086fa05228915b00b983501dd41e483b1ae97d49214424a3411fbafb7e582877f3800db9bfbdfb52b1ba5a7aa5071f7ee8d39d8208654dd1229d34ca9135054fa639b2a660e59656a4d618634c21d56a3f8bf356eb57b241bf9be90ae245d98ba749a6d06049e72fd8e0466ff5561a94f9f5312cddc835b7c85fa62a3908d935d2a38ac717b161caad0681b8adbdb0e505b85b5bd08f4fce2ea3339ebc89301fd247a3a24f8ffc1184d2fc4895143244fa4822393bb6d148ac847d343a638f4ba011828a53b8c12939bb0bd02a6731ba67480e4739db54405bc8e1817872c892b3b7e4ec2567d9b14d273bcd13e4ec9aa86bd0dc34daa81379608e3a11a7b5386e7444cb02953426d88faeeb4a5a2828266f935313d98333f9640ec92866d49d9c9c78a1e49958fa683023651c890aafd49fc92abed1e0f0eadcd6e913f7eceda351a467d74813c563c549d324350edfb903177ba3c7b898ed2bf5476949c947a3371733baf7be46ccf72b69d835ecf7c366727b21d591b76b5e3479e4b699bc9994bc698904d2a03ce64151f398924d8577a92079d2a64d99ac69303bceaea2091c5ed1434993b3a9024b9e9cbd591061b667ef16481eb0671779217d76cc6b15c81cb234e4edeb14a8a8010e254d287de4ec92a64ff4d9a5b4e9d37d76a923798839cbae69cfb62cbb76eddc396ec3c93e995689fa0404d10519d65b6f5b9ed8eb315ab30bfb85d96c013664b4c47e9d66d79679d58342fb92d86644d1afd8b3527dcdf4f70b2928cf10857e6830c2e08830e4631c8d525256565858faa14b8c18fdad8aa0d0ff214ebc9d00875b6996e67ccd765a6da32fdd87dbf44af7d87183f62bddba85180178ce2f3a81e7b1af4b1fe5bc6d23a12268b4658c431ce2f0861ca1d8d1a7790e089bfb95bbf5bafd65edf541711f39286a3ee37e4990664441391af436d357eb95ea57734f4a8fc4046672ccb1e67ee3198695565954b886b788d83b1a8c35b4d8b56be7205d6a021c4bf6f17128c7b77dcdf5978d34dbafd43b1a8c9f997206d1c1526e76089fd9e222e30e92bcb552be79a0c5eec1231f5ce891fb78526abd70cbf1caf8eeee78bf1a31df7b3792f5e8e5e7d75409dc43bdd2a20b3894aa49238104112279e490929d6f01845b4c316f237f643738393ee48ea6d9b0b800cbcb98b57e343de4f59199a2e9b6e91e9fa6d96e70d84351a648467091a1db825f56ab3cdf3c3d4244941c9aa6896a1d2de4e41d726465a10bf9c668d3bc0f29bc38b2eebd18934860d8a233e759242179ca219d6d686868a27ad5aa896a9d36cdf7b4f08071f5fe216d5fd882c1bb22651551c0325f765e5f8d98af2039d57d93d3a0bc5f6cf0babda4fde4e76d7c5879f68886a0699a46af2882020eb72da5b6b5dd5e48ca917e5bf7d3ddb7c1ee8ff69c46b4fab812ce9590c8c56c3658763d43ba25b7f94d04580438944668746e161458de4a89e3d3a71f225b13381227b33488061c5249274d79693e669953bfad092c73832f32531796961832e6fc6434385725d0e8555d103efc706f110d36112c1e9f1e9590203994361145e830824817456c5d69292dd1cfdb7b4bf4bb51f38e06e73727adb55e17bdaebaea51cd8d010d06d160fbf04383fd8a6df717765df7d7dd2e735d938bb9d935c475af7b69da57babe21aef7f5ec3361a5ebf3f7c34ad7178732cdf3faf5edd8d1ede030b686983cd7bbc2b6c9d1609f72433c019f3bf7c5a643a401875b6bc32352ca57409616468146af02b2c9520a39b2b800246b2d82026eb0c1ae2f2e0de234287d481d9a674b1b59338928428711fd030e2182a021f3bccb4b0f35cf4ffe68b1010e57723fca68cc518f924af3bb5169af7a585b50b1b4b093b5d6320fe4e8bb879d2b4b0eea2723bf227290728da92dd31423c2b0af243fd9a3cea36d92f20b739032f7d2c57d2579d9e4ab73e96ac93d736c7965e59bdf767131da35596badf5b25ebe7e17a593d27941d15d76af5c0caafb5c64cc98fbb5b001f7c3163c272dcd6fd697e6ed7f95e6b7e5518e5fc00f0dc6976ed43c3f298c781566698d05a02bb82067e1478e2c2cf8e4971c59583092b5c8c56c4de0b8d9e018cf096149eb5723a67ca5443f99233fb726700b1a6409f0fb17f530207347037cdf5d74102cddef46cdf7777479ab06eb659006eb4752010659b9be5eb2fa84f10ce9d34e4dc9b5befefe92f9de37177375fa8447a42a7a1579f199775d33cbae795c8cd675dd6bc4dc7d257c99ebf8d867f2f5c22d5f1ddd15715cf64b1bccb22f62d7edefbdaeeb933d9bb43c73f3000e47998ee6a90e31a893de687165fb00ee7e597800cb875b9f307c9a6d191753b3532d25d32cc37e689fd9388ee3b8d773afe7eac5913c72d74cbebc1c5b26f9301ac81cb25b2fbc3e72b6f548e953f6c91cec853207e362ae7bebe30c155685777b87f9eac53738d3554fe6abc2aaa895dad7aa5d4697acbdd5340c7b9665d7755d5f497499eb388baee37cc523d50b7544aecee4ba61b7d865cc4caa1a8cb1a6c87cddd6ac096dc34d83e3f5ba3f85f800e2030813a6c8c9f1488e4ce8820e2b6bb1a1c0910958f0c9db0730a5de4cae5b8c606cd05a29fa8dbdc3c5c506639f226e90878cb6544f3f5393b3e720651a436baeaf333639bbbf3331d835695f23cad8e3cc657b9cedc73db2b0c0ca33b97ae1168fe48c7a5c9dc9d4cbb165edbed2e4f8d83f5789da4f722d0dca19df45deed1dfa9d4fad5666ebd5fad559bf21396a6daba04d4a836564c2144ec891b3d1650ab0b0b8b4b0b8b0704ac0214be692801910aefc802346848951903e6e86f4fcb4e48dcc9138f246ea8058b61fe8a2091cca9a1a1b2cdf8b8339e79ca7d64e1c3c52d65a59236f7aec00292244d6e8fc500559e538a2c309461439f289ca302903c2ae071ee8a50588080614214386eca11d03a80fa0cc602289faebba2e7a2678cc27c1c4cc0cfa31417f7dd65afb315177d821e411a301a20ee14c0ee325fd62d441c619f486cc3227117f76dec0840f9014e010c50c1e51c8e369eacfc8246e6744b4d85a6c4deba6803b24e0f0e628e01915d0b4cee489213c3b3e68522d224282e4e01811ea19f263a78606a8b512d22367c8884fec69618930e27b86fcd8a13440ad9590d963e60c19f1e951fd689bae090262ad8eb4b4c91373d2cde4091ae96c596ba7828d082b1b1170fdc18f19ac84cc4008339881a426c9d58819e3fa6bb15181972c13df5fe8c3f50c4784892f895741128fe7f5be2dc210bdbded259e0a8fc40b49cf02c85aec117d23528e973cbffb80a3c1bae3dea77ef43bf019a31f3e465eec1da2977de14a8e61a768cc799ce77b5efae8532875342f1ce2c61b1f8e78d4d7f918650d5fc4fa502534c9f12d2e5c44e1c862fc287a252dc0b17e2932153f99f2244d83f5d19b9ff1b2c6549f6866e931cb401f1aac5fc1315128bf211e3d24a5260ae53bf9eae8ab31f2fdf44297ecd2e0f5ea8dd1ec94d1b68d6112794e146d137d7d9ce06c992f330433b60030e6de7bef9d397e218f98ebc54b121f594339398c3d367aa306afcf8806e37b4a6c137f82a817a21eac67a9b43529a5f7dc5e9865a922cb908594607dadf5f40b5f728dab6d075796959608d3a77e3d8eda9a2aa09f3595e565a04822f6cc882294f9de39b1e9d98ff3b08915d1a027c4100dce97163ac0f30b5d726c1f3da441f9fe69504e2fcf872bf23cee3ccedb8080b1cbc79905d139727c1ff64d1576bf26f2b54f835335510a18c3913629800c34d7c311c3094469e6fc3a20607a1dc55d9e12a1ab7c77f20f7a695540224cb68308a36dd7b45b2fdcbe50d21b4a3fed0da589626ad77af4d0b11faa610da5b23cc591a766e891f26e68e5f9eb06a16c8fd11c8ad3a07cbdb9c9e2bda648f301066a14477ba84f9be4372138e69eedaa3133bdc1e913a511660bb16692c4ef0899437983d1d79850709f3e7dca7eb84fa552a9ba1f60191d32531dba335b2d6bc021ed71b1ec9890ec3e43581d67c39427119327f011544ea0065b3526a569500e01cb60d7417b64e66d9f2e251261b0907917e8ae2f94b487c601613fed46e7698f062d869deef4e9479f549a8c40d407d5799ede119dc3d9da4284e18244d19e69920fe94f18ce90e5a34485b30d5ba03d134567104df238c8f23da0ad4c8790695096df38ba1361c86f3b783ee690f6a046fa14d21eb927c2f8fcf46928c2c42c3f5b11867c8f10d4e993a53ee4694d9f5a13d55d882679315c34cc7603692e91e55b597e02c126912cc3a9220d911732312e66ca5cb29169d83ef28f3e855b962b294406695092209ae4b13b4970b742177948a3e20ca90307703855d87703ccd8b16f761b8e3031cf18f7de7baf4b8c1ae0fbd8e01de206c51ee0128d7b7f392066c946ccd9177fb88f65c8f2d40b5df25c439671b01ec8d202d1246fbf201a9cdf565bd62a2ad9a0193bcd58e5628c6870f3e44d84213fbd984bb0df38e450e609637ea18e2b63776970fe871f644a36ecefedefc11f7a28828d30e6b711d1a7928d9beb735c1989994399ab10431421e390b195a9d24ad9a55083d933230dce1e4498664184e1e16850fba67d5b8f08935d5e0ac9dffff7623924ab640e1126ec7c0dc9d814e1c8d8c7636606d75c0c5d823b8f99199c2a8c4cc8d8657442c6ae7daa300e5165807bcc1307f771c73cfb69208579967bb3608999d44ae7a68686034aa466303133a36b1422254483716b161c685aaf3418654fd934c2882d1d8b0d539e60952da2264f60bab262658b381a33cb532a2ad9e091e517a7157e58ddaa0336324baec6f3ec689ddd4050431bbc2085bcd9a49041555555b3ae8a4823b98fd5a070b2264fa3aace34759fb03b5955355973d69daa2ad2a80a04fbea1c525593a7c15661557555d56455560da2aaaa0aa406a1d7cd35066d03b2dd40caee0cdc608c31c63ba9542a951af5c063f091e78f05ad56abd52ad5d3d3d343877a561385056141abd56a8515a1c18e6046b0223d3021da73b10187b2a7c70aa8e6071684090505a5b0a089a23d3d3d58500f16d48305f560413eb4080522e2d3e3076fdb1070887b1a245d0187140bea90f6a4fa14521a596b7a1abb04c143871564a3f2e9a11e2ba09a1fa99d51aa26954aed8c30c6252412bc4d815323169c8205a56e4a78708582d84093231172640dadb2b6e100cb220df6e5278336150e2f9a8b46d21be010d7a8597e37574da36e6b5e347da21b8f0c0a2f9adcbfad392b4a1669537fdbe827831aec2e07587ef4ae614596975e44cd2144535f5e46d4ec99a6fe943d93155112a81fce21b91f92bed9337bb6a0922fe0edd7c52e29b42d8aeebe22134c7080090e689fdaa7f6795deb00969fd7a6d9cb734b94b812f7ddf8bcb6ebd2ae6b7ab17faf1b9af2f5ca2d605e93725e03c13bef37e7755002dbd7b8727d3271c582ed72bbdc2e1f3b80b91857e41638e07a6e091c3edb92a824fa6e80f9dacf7de1bd9694a507c64b92d22016dedaaff449de1e8c309a27b30c4d0b90df4a36e4b7afa45dfb6883da919059fb581aec2ff370342831ef6b1d94c0f534aed895cabb8c343863ec1425d22a1234593c3e3d79c638a54e8333c6af6d7a34cebd71e6f8244e83b3b6cd91d955da126851071aacc56e990aef16031cca9cdc4d13c511b2039f91bd436993fbbdc3c5d168e95d5fb8929f658a46ac37708ec76112a9ace3e6589136f2a64f4364d92259a29cb426887b312691fef8f393c38b50c524c3883c041173e8cb7311f5324d778b30395eb2bc26bd921660f9eb91ab21bfab0313388c3f39084f8806eda5176fbd1a924628ade468cc20fa34e54bf3e195f27ea5393fadf732efc518cb18179706ab5663cf2aeb5be25024d7532a696c6a3f27382124c3e4e804275259939b8bcb11312c49b0c5091ca5578a07f3f519bf1b60be3e30531d34c74b0f899b631c5cfa243f16fbf9f981deb74d215964c009eac97dd9b72d0d4b396f7406b29c34c2a05fd8dfed1274f6b84f251bf5fd99fa99bca5dceb5e79e5755dd755b37a5dbfd7ae7bfd3abd15bb7ebfabe6eb53e63a4598986b8c33e3ec67a3be966ed0544a86662e744a9dd79c73ce39e79c73ceabce396bad95463a4d73da77a8813c698c272ee6b25ea533ad204d23f5a9bf928df93a93476f56d02a6399fafe70e9466fa7dc8d0cd44c6596594647ee8aa0d52e5b1f6bff23b51ab4b822b53a03b7c724f962cf8016db56da922c1fc629648b6d73f79adbbdea166166be6183165742d98a2b7e80af8ca67d9a40b4dee4754d5e1e77d145328b7e79dbcc27771abc174d84b97e2f6bfa24fa24900625114c9255dad77c7d521561dc6f57c0db454748ce0be9cdd63b22943bf95ef3421d99c723dbc23c164a2de4fbfbe9c994b7a3c1fb166bc052356f634c225daa6ac4bc19d127fb68a41594ef45d119f738ee57e4ebe56bcaf7318c91efbd8f372469dd19683177962b2b12bc808c438cec62747001ee1a1f95dd4306203f3f3f41f706b75035177315be2ad26f37b30fc56e568582f2ee9a8682a2a1bcf3a6c8aab055d91fb92377e48fcce220a2668d4dc28f9a89922a1eb9336be4cebc913b3f327af021c2c48c92d184228485f2d00ec9504e8f03efb47d5a7deadf1ee02164ea3db449c8f4b33f995a22994e7a948f7e7131d7513cb04114fc79282828368855592054a0abd025a38c469eccb266161132c2d328bc62b5562b568c11256b307e71ec560765e553a95c7c7231bfac913c6010449826e2c95b21bd209148f7f08b95f01e1f73a2ce7bd1e34304c8bb8cf6bc7fa1ec562b168fe7e1ef5035f6648a87085b1f9ad5b980ae2016b72a204174f03daf875e787d44a6b0fca1923b72070047ad0cf969d1a03ea9f4f8100102005ead583c3b1a9c32c563d60859f529635da6b0c7c2aba1d54451d58759243cab150cb00a5d75cfae591edb637ffaa46257966587589f2199e2217fc89d89a22a95dc21a936887700785d44a8b412d2a0ea53799fdc59599d111e9ddce45607055b1d176fd142e5e2a155599555592036489f5c9cde0a494949a949a12c1ecdaa264ad6d458558daa46e5e2a32bd5aa07405441544082dc7953ac6a47b2323d0bab52d558958aae5699e29a9a1a17fa227218a103cbe821c6555cb9bcc4c018632033f76dca619501088b0c3cac32b04c9ed8a4c032c391ae5bdc40e52636ea59bb97c467ea5e142a57518951799ea93e653fa99c66364bdd39e7a43fdd0f114a2f19339b4ad0cf0f507a15afd5f4d7f72305bcfd3a77d14cd544189a46c9685239c56c4870541ece1e2a1ed8a0cabbeeb17b97c5642a99ec4ce59a8a57335393c60763bf0fa54ec892a9ca0d39e510d9b38956acaac94ceb34acb1b8d4b9625284a0612fa2689068a2d7a6895e6bf9013dfd9928990a6911328974bf80bb6b392b2895609fb26b9a9635ece910034c63522e53920311263bbd5c229e544e3ff246dd48fbe82adaaff64ebba7fdda33adcbec755d782e2ea3bba8723395aebbee108da77dfae784f25c9e4cefc26ba106e93daf8db4495379a7f21d57c82a4810faf3437f28110a4485e8504dd1205a841aa16f7119ad613f3f445a998a1173878e99923f54407476ec68106b41e447e867a2e80efdc994b632a53f6da20dfac02bce5df4799dacfb1164b5e2aa2c81642192858568901d3a3e193c517407efd057b9732fa35b780d14d42614fa0e886a67aa7c2c585caabdf450ea6c3a51fe88a4c78892a4148f1269b0d520a59ca63351324553a9d2477fa4ce8f9cc14eb55247fa903b378c413a522794427448f423ef88eb1a31512c210b1145e49011e385a5c5e5de7b81d49b947e41062dae84574b669a86e592ca65ece6625c680dda94e46226097f21887f49a5561694630b65fa9045ff4c93f6d8fd33513bfae7865667c6a6daa4d3a7ae94fdf4d88549deef177367fa6e27d367d9f7ede0d120c5d7bcecd8aba13dd39e3dfba8d43c1973070f896d54f3686f3b264a003f8b9b681f5d009e8c26ed01f0b46b97d17f698bd876e2953025e2a9f4d143cbc4f7d07ee07a6843e03db424f843eb44a61f4d145df6d0a620d36bf16e59b66ddba50d6a1d8d2cdeff9f5c03a2f47f48c8ec75da65b2e3498bf8e0438334a3db7779ef403c22a57c658b0d6a35ab958bc9a4f6852d39ccb19275ddc9b55b0e885286ef4383b40e75b5621a835f22a87df45dde3b50e336932730a73d6a9fa669b325883e7527b7f16204c31859fbc88b51fbe7c5a869f7bc18b5df8b517b97753ff15e1aec3e970635dbd2061c562133fce4d0a622cb0c3d32bd10f43645ad4dd6b2aa655a779abb2f4c22cfee3efaa47d0feff7bdf3baafa5c1eea3360d523cba24db23cb0c413615449f426a93e9691c1aa24fb4883eed6091ead3356a10fb675350bc38f674c85cfa7cd8312f8b2fbc26a32f24e5171fb5e953ff4c944d4d13fdbd186b9aa66953c6394531639fdb7505a142e88ab2684e8b4eb953aaca94d43ef20f1682ae2d76161e6759f62dcbb25b62021cb37654005e7a6cd48b57a1890ac0a77539c0736bf1c9c5b8781092877bfa074418edf41088a79fde8c8261ba87a48c124dd9517e6f4630cb217be722670f8097fd4597b30e03a0fbfd9fcf602467efee236b7fd630c9cacaca0a0000f095ff32fabf5f28e93515f1efbadbfd7e48c8fc2fd49ec9649d46526f35a255a10b489fbed35f411af5e2f42b6e53343555e8fe85d7ab36d19f7ec5eb210dd203c0eb9e06e9e96d303b8e3ea9a8d4043b280ae80de40d85225317647a434b70ef4d8de7d3ff7e7e25f486de501c9ad339c7964b48d09cfd025dcebafbd0203d454266edcbbe1f1aa4a45b1b7bd3a70ca7570dd2df6b56833870682595864c6cf0382d69c037ffc29b4bb62879e8548e01782180935d228294de4c94003eeb8168a2a7d6053b014041a62fbe1164fa90e6f060533207fab0391061d0873435e9e3a4598d678d6acf66f79634e030f2c8e068905e87cc3fc8dceb9099478394a6686dfa5316f49a276f3a5a3a2dd1631c8d9affed68905e871bac3da3377dea4e314ce87eb4c555bc506695dc7d36d520bdf616d7e2dc6afad4e2f4d6a64f7d531e3be52e3c8ae3d19c06e939adc5a626ea629b6af1d19b0629f730fe68f603da65a6daa926379bea138dad893031d35beec6bc8655425cf2424acfc20b254ea65fe1851bc90b4928de11d7891752132f1cd190ded0d320e8e94be85590d01832fa3449137f348abc372833cd03356bcf2ac2d9abe5758683080a31521a3b23c81496daed852d475618c21024873477186e10e38582860105dd34b4d24a294d21514a2bcdb5565a29fd620c3a11b769197669112e5bfb0af20b2e5aa8a49458ac20a19c988cae09b4396f890a12dc89b84dcbb07bd94a67b3682be098849d16a5550aadaf7da111d929762f6352cfd65a6badb566df35e2b3b5d65a6badd7755dd7755d35dc7199c833f597d759a31efd4d5d34e48a0ca0fb00381ba67c39a0016c1917b4993e73669089e28a4c1fc903b70512ce3982392341b82e4418f53eb93e7e5c6b4303de2691d4bd18d73458df799cc8e380268a0b6a53bd28852791d99a405c91a18b730d5d43d7d0c559713b9cee721a3500ae0850509f5ab2781268decfa089ba4393d2481eb4233287fa4ac2b83e6a47a8d7596baf7f3daec87687266aab69d311c9c3a644cca1be5e8744c2337587725d22c2a80f3538e4faecdb5268c0f461b7c23576ab6e95ebf5217d0ab9d6e5d35ee7ab677a5cab4f408d32bd9e2bc2097146fa44808d9b11b46fef8aa0d5b0e4c6906b49b61563e1360963db64d67d2fa309e0896844a9d44471ad36d5df9bd2c1043884c2f4ebd745351a8c9633c2a8a24933e6499f06eb07e0c99f36d5b3983c92f7066bad979cd044c5c8b5266a2427d7c237348d9a39d354b7d1cc9973ea8c1ac501b5a9be722dfb71ad06ebb956aedffa44bb9e953ee2085a5c91d7d59a28bbba2af03bfb5dab32c2c8081363e6413969c5c951aea5d05b7a4b6f45a26fa26f3ff96662f213a9069f1c9f90234b0da9ac7d9a003ecf0b4feea2458bd20a0a8ac94b5c8cc98a87a49b98904a262607338b934c58ac403159c182543a0b1627796189c50a4f66161c102626dfbc984d4826a4af731a4441414121913820504e020047c304c5e40b4f5e6cf208ee323e8c8df6698b2c56ac40d9ae14b54d89cdb16593dbbff4c9e4db76fc93977031275f69dbbe65d8467a88f2936b1b0a864fbcd2c9313e3998571ce52b9d7c37c0bc022399987ca50bc86c7224683ef905baed27286f9a064f8ef22121b3c905c0d130f94e3ed366579344c238ce8b7b482f31e090fae4ebbabdccd7493820e8edfc89f93ae66ed0db8f465f38bac9e910ed97cc4679fa24e26e486e01f7228eb3b15d64377b91a7d19d8992ad5f6bd96484b99e5bd480c3be991bddb92ed17548612cb3fde417e9d79b05116605caaf6b9bc7e22bb6af388a17b2f88a8fe4c9dc71409c7c3bf976adb7155ecc242f66142fdcde37374e504ebcc6414266946f7bdbf4293479db346800cd65bb01381a5a013619612e76823b2ad3390d5e8dd3e07593bea1c9399139b9c9af77261771364e4c509b8c303464daa6c1eb3a64ee9ac77b2d69982d6ec061d3e4eb7afbb0bfde3db43ec9905cc4dde06c90c8ce649cf6daddeeed8b6c55b20d4db23d1751b2354dd7eddd228ce8d65a6b595cda36f2622ef15478e125f142ca44be8ebd70cb5246d3740d65229aae87c0897cb1205fd7451ea58930ae8ffbc2ebb54e83f5dad73dea7bd4c7ab95ae67c75c32c63c6b7f5dd795d7b650e40a0aeec59844fa41529b220f38b2c04024b7fd8c6fd0c64c924d6901048724af9e850e32f2210e3c0ae5e97ca36e891338daf905dc5fa1cc1dcac406af3758bf991cce63f37a3a64fa2335681b1061d88e52ce7afd76d2f8e6ebfd6ccc3a932917c38008c37e3303aea4943ed9dfdebeb4b480e06f19e0a3d5a02592a2cb6b740b6734ba6ddc066e6910ca910939b28ce0644d723568a65f9c283a59b84ef45d9511a08cf37d7711be080bdd6f1656f91e53751761bfddaf135ad0a391b61638e050e6155bcb1b308bad050e584687cc32d7b5ab9458ac584142827272725d90c82f94f9e51ec3488ec2c5907c2a1e9278f5184909c30ee6929394a8f074d07cffd2f2067c7d8abe70cbd8557037ba7caf619ecddab7c53e6db1b3ecbaeeea4497e8125d179bc80b9fb395d12dc9c14122d1475c8c284683f361fbe4f6e99f3e118930f8130bf325dd57c2b8fb7515a5eebb01e6ee5d779a323c1ae66ec816a872b780eef79c0decf7914bd1b0c9ed48f0bb8b61a28b441c10dd455a63dd4597d1178b7047b269df26f26e83dd45a1e46e88f28db973b881cef833cb99b1f7d2713125d14b839d572ff2ae0e4e6c22af847fe18325fcdd00b3e8f6b5fb5e1a942e73c3b8b90bc8ac430a5f2457f1f91efa244372ace4f3078830a3cf6b23ef025d5621f3c60181fd6227f12e09c9273ae6c9602176fc8cbbd1fd1ee36cdc34b47214438e2c2346b2066eb14fa52dc2e0b2b431739844be32af6819b6b252457db116917ce10644dab4954e519844be0d8aae4d91e89d270a4931c21b443117daf266a0c9c7957b31c61d82789ae8e74b72da9e4ed3a4947a34474bfc9cf3368845187433c38d2b9a04ea4383f4348c71ce06690cf115c3961c5fee46065c7d6890a27e78796969014fba6c0f5b114ca98d144a659a6d4f6e181e96d5cadc22caee4c537fd6cc887769a1bc33af500e2f4ed99d560e2f8f12d9a66f1a6cf9b5cd26061c953086236d937b95c34b732669dada93ebd47456e4f44d9e97317273461868c0c9dadc6450154a19aa9145bb24225b126892dcf7a75084915baa51711a21d19b7924d7df941196d94e2ee6fae4b06b666b9a2a0d4eaec7e6509b6a7fe1adb5ed71778d866d13db2abff0f64743d2bcbaa646cdda37851ae4727d97037c1d3585e61661e82bad79817d214dd5afd6d7ae91a67a12499ac29b713175ceb0e5359287f9fa6e22f608224af45ad3e5b06b50ae9a2b9aae63de8ce0f5e9c598c375eefa76dd5ed38b99d65a1b330b1d6230a7b5f6f2d2dac39540562e9ce10b48c87d925534f52c42446da3256c41255f581163962b3e5288525402d51ee195ca400d36fd64ab41150e379c16112b5b7456d9129aa878b16cc9966cd10d27a7519cd086d3a759371cd9da70729f139ab37ed7bd5012a846ebca3b45a9ab091729b2c01ee3809919dbf569e7b08fd4a0366a509b420fdaa986a6bdc5a54f3562beaefd87eb63b8c957fba6ad689f4cec693104210859d0c20f7e700522289c6560ce362ab95f4f84c99f06b3061261fad827818280c3969c69d493403266016bbdd96a67959f97b2156164dfb480b1f7696b9fde11b27ae1cd2eb39fac43fec85ad4932ab9d360f6165bc0d9652b0b2f26c956ceded2a72cbb4b8c3e5dcfee7dc8883036d965888968149d9165467276a4884fc6337b78713cc9674fc213729665bfc16c4ad0441082a0852cbcbcbc802f6da28ff292a45763911cd1448f7b1801c81bf28cd1203d3d1522d6f91261d030895c4484418968909ec3c1e18bd4618405064081c803f81cd706cfaf48a67fb9f420a503a8d42ea1c515dca0c913d8b6487e03ffcd6ed13e1e0b1161d8075183c32ddb4b5b236d24e05344a35e4e4404220f0c1822c25c01a100a8942cd6c54d6c1da21100002000c314000028140a87c342a1602c1c499b941f14800c97aa4c664c98674910c32808298490210428000000000200231a360185988a2d13e1ed6ab13981bbbb0c31f984c21d83c789e27958d27d0f3527459968e7f6f0d1f7b9554a4da35e029030b7e414ff8d13b51dac4e18890a6d5c924a3a9d8be4e4b74b6c41787abdd60f54deeb90d31fb81bc05120a0e1e9322e80003f1104cb0051f9ff15cc1dc554bedfd925073b974821f93113b6cb985c7d83ef09fbc531be7e618a636787ae38f5d34a86aecd33f0fda662b21f9aaf0ffe4ffbdbf5957954253858795e878ded237800ff4c7106d8434050e514e4da59a2fd01f7cebe9b5a0f0db1ad93ce5e4750c73e2ca1f182a2598960f9b88f78e36a3e45b56d7d66f3ad08c947300dfa6897388bb0459b3f7a56cd36da3de394cb8600927fc7799bd66892c2e4da4951862e5b25946cb5a7c2da515eb4cbe61529378f0e94627b7b53aa7af2c0bb896ddb74535c1f083b6427191fe25e0a8e9ac561c0e0f295fe1b78c78d2b2501373f57661aa43f166c7d701902f1ea7776f70ead1482a2c65c779e729fbb761d7217126d5f447419a3b2a2571c050921f220787001bf56dad8b37678a4b3e30f8e680cc8f8698560cb1e085b6ae7934991fe82464047f94aea87d2dd5d6c7b6b52af5e535b28bdf8f90e8f564d5bcda9167812fbd28c03b3589562f600dab9cffaa8dcbb09d2dcab8a162d535b6f62b0d86b2b9f7fba89ce43df52da4b29bef3bd4a330eb0289e56b4b19272a95a5be72fa0b97eb4168fbf7fd6130b7c514bed7a862f10d11842752272ad54cbc8f5eec53a9c43fa92d61ba8c6f693a91986f87a94869a75a21946fcd8b70b42270e600a44ba0ae431d7206446cbde6ee5aa14a88b1a17ceda518ac0824f7f878af044e3701b2c0dd8a03b10d910bc0e76497b8472118089f102743817cd2924feda81a493a7ed3c72947acea2b20594c81389de67aee321ee365f88017954cde4d272ec1a86af423745602040c901349897d105d16cfaf1d80cb74ea231c56fd380bcd2aa48e016534141cd46c90cfa9d03fe431b96f173155737957657e7447d9eb4e353c64bfbae1d39086540c8fcbfdc643576b54ac82a9add506b87a1fb3e243289a2bfdcef9ee1656b09717f0b28a66ec825a91647f2bb326c7f11919126d52bae8f7648a670b88af4803dd20794178e5ceb09217f7c61afde28e83fb31b855f0724303b4a32f4727d165ee982891f28774ac086e636b5621320710543fe3000630563f0268637136b81823562f49c7fe0d6e139c7af6201823e0a46e57e29860604abdd4ec1969b4f2902400a00599552eb31096abeea6ccbb41ff0108d1907aa7c3daa542d830b74040417fc233a53fcf011a00db41ef91425828b75861e0a072dad5aeec285961dc728a92d623b16b375f182cb22f33888f04898688232082cb1bdc7a7ee99b12a8b9b93f61c5f370e337a79b96e263e36e8c6a8a8631db05f6ee7fc4e12779138d65e82ce35fb3c583665eebb4b546bfefef39a949f58df3ff00d5cc41bc4abdba61e8fd3b4184bb3f991a1cbd94819d7d3957a6faaba057abcc15f5b0abeffaed28e5e0b6a8edd2235ccc43060bad25f97d2f8aa3b1e338ba454f1c71f9049143ea329de205ec77501d1e9a912f5cd7949e4a8a2ccc713612ff0ee292a7c8ba68950b986dd10603512421a262cf2e2ff5089f07dd8c3c5cb75c777224857b8a1c6e089235919c3ffdf52142c8dc2458c37b25fac876a753e92cc3cbe31541c20ffd61898e25d969ab68169e46f2317cb1f897c71add8d37fed3f84ee1a2d3b66b93124496a752fa4f8936b4f15b5ca080ca077f048caf7b1c9f446ec21f78015b588aabb3e5403083de24f3b95ad943c1b081eca42fae26e54a860753172360b0163757a36e130449a8baa3d6da442b0113c42498ed16a9133df2b8c456d9fe24af9132955ec6e12646ec167f6855cecd5d87caea136f5eca66c7a32fc92c36f58cf585ebc355ed8e71e77ed12c853551628d54895faf8b621545f4e5d945a1caa9941e304d7e3ebb36aaf7dde5e4e3ef128690be46e7c607c498dd8acf13794870f3a49c99e7aeb267cca994c6526ba68f9457aaa622f21d25b609d94834a3e3ba44930fc383003be5cb2e058a06d5947494c1f6a7fcc041532324bfa67088329ee79db24a2b2302e6928ee7e57285f246405257d603033d3884684e430e7453544f0e1d5658498eb9ba40ad6af4df7011b89ee5ec5f8ef620cf3671c8f1bb85058cd28b58f11d188aa31dba51f6e4129ebac4eab8f8be746d057297a638b3ef54eab28f630d329b65294659fc8660a129635e093b0f77287b547808066da031384363381350852b965cec29c5574b52e423052cc08bb0401f63914541af08c06515dcb3294a14f09a511ad14b49dabc7c01f8b416b583d9019b421e8f8a93f48037665187d50e818488792e06d93ac05b424f6a416a9591fabd6abd03ba534124628db5c41913d027acc47256fa0b1bc2b0a07a0f158fc505c82e82be8721f3815798a1a75854366e20e7118ceb509600acd1484a4ce959d3eec884514a0025868dab2f112d34578549d8de9f03fd1f8b62cb79b012c35dc072566208be9e16de593003b16d17f26aa9456412ff16d59a879509c87691d6c30b3a682ce445514b03d6f95596d41dfdbf4869761de2416625641844be26a116e02d05da8285ea9f784747cf4a37967fbd9575401adf4d158b76eae97c2bf8ed9606160072b6468320079c787ef602b68aff14d0cb28522316dbcb2b4804041d0eb136808eb214dfc63c64ffa303cc4b60203a3a11167504ffffe515a95ce8bcaf31cc9c9ab25dc29df408ba8d04403f53e9630c17ebcfd90c7f8cf5dc54887081b57b92cb5a935a4c4752e5bb043f2392d2a64130f40c969257da7e9b5affd48fd03d705b0b00fabc6c438afa610410605f392a0d1d07d965f3415feaa1d03c02cd2f7e9e8d4114c9e08ff12b3e9d010fe65fb0f950b05c1aaaaf48f5ffcd9de7267764639ea1565ef10eb00a82451390bb732dd01a9a4f33a3c990d49adcf38ea9f91321c374648788b0c218bc7c3cfda8941c8c795ac9b48061aa377bbca5dba45f8e946cdb3a9b4b10b5e1ea4614516bf564dcf956633c4fbbe4a919ad5f4d24ae5b3b47177e0e6c12904c3764f6d154a62281b51271ad20b8d8f7a5d93d01cae247bb339fd2e24e30470ea539480477bd5dbb027482fda318a2054341a3a57ee36f43a7d1f0abff6450cda2c0d513087d8214b38f40393ea00ada17fc097d973c66ab6f92402ee65f41942d02e473cbcbea03c12acd76e75c44f191dcb1d0bf61aa71f4ed0013dec30cdcc34f7d4a38c2d721aa7d0cbd5c20fc40159e925be3f834242bb7ac4b8a9c8ed100daf412c3b4cfe7ebb8014d15fd0a35361ccdc425fc9bc5388b052debb3d172952bc0bfd5fb0f769b953e7efa77cdbacf21490660e0d765a90f3eeb72df5672735e21579fd2cae3e3ee5416522460019ef91ba424ea03a173bb64a40a4c036032374f3ee7e0945254696dbbd27e62a68c326c131ddde945a0ad51951f8d6098611ccf3c05a7db28e4763ca9d80ee412e4f716748df728f9237f4686e54ce4c7c61a55b6b91240e23b6ebfcbbb630d66f51f495be0cf899037702f35fc7d8b701a54c3f7c99468f2268771c24d3323a142267ace292a4f8f57fc7596473de8eaf3a4a96c0a90744bab65a10a75dac12568a95c92070d323eb73069bf89385b7e1142661ca8046c8db1ca00b13654091eed0d3d2b273968b50abc81a43339ba02f844058b77a34f68c76b65b056a0c61945e777dc5bf1dba29ff4343623d0054bb80810d8798acfb538adeae45a11a609f6becbda4765c53a56193c98ca2d119bb94f948c7b0955a1c0641f081446ee898c154a6f60deae11fee99ac3625f80a102523ec1a804183fe409802d0802984da7bfdfacae53bb6c1da087a48c5155fbd776a3545352084dbf7adc5506c7b87e7eeea8899f1c95739740951f05da79e7a041c7021326333fa0f2fb064068c5ec580e5b796d975dda3fd0959545a2e5ef786fdc12e6afbde6c18018caa508ac1be821c7b0174bb458999717249ffb83b715afece168c4776c55ba0239fdc62d8ead805f29a131cc2fa4d4e2e24f267fcee51ccaefa2722a9ca5afe5333fffd096e4591bf83769ebfa1ab921fa1d6f8286de4910fb97578b041015ab119f06370b42e990aa3f1b0d1dd0368fbb187eff5f4bf14374f3e271bc0de06e8808906b6ac451d78f3dd889c6a480459a0307a013a65f131e9d53be695112f52f1487b8e4acbd10cef8f030868c2bb70935befb1b8958d8e2f703c7916c8a48923fe0a5b82062b3331e3292df3fdba46d6a888decfd29fd50849d7b71889abe5202a874135f4032b223e20101bd486ba203e75b3c5226c061215e29d4ab6ec0f594fd0288c0ddaf02b318c0d69237bd896d2718cbe33a0f92a067dac552b286bff6f0382fd6803cebae5112b2a1c02610bad1b62d29946f277f672ec7e6144e153e0e5151922bb15e220286a6838346a40baff66e16a2ecae289a696f985855738f28fdab0607e6d6102abf1c2a20d8ec647e303b2180c94b28aa3f2a32f3f48bd155e0fc246ff2dad5771413c52ec9472c65ab29bd34b6736ef635cd823fc634a9d24d584857db6e20b2b640fa26ba625a90fded27b15303a8cc39c1243430b09b3c979ee8a4430e1e72dbd3eec93a6550e502c9de4613111f39e42b996c3ac41ce54554168857e1b006a8c895295af63d86ad31afc32713ce7c256d4a1d55fa55f75aa3717d3d6150b02ad395afebb0f282e9b78e207b8a7ee823d9915e2e0505c7c5cc34c68e99f63528613b06f4c7a627e21dfd1ea746b0a805e0d4f22a79db62bc9fc97ba1e092a69f9d3b88157ff42627b776b796f7142f5d4257519ebbdab9d5d463481d2ba5d8b5a0e279742f7cf8381abd21ce8575084b354dc661250721416873eca444576eec30e0c5a877da6a8801bee9e8d6e140076d2406e3c7b37139a2fc759978c024c2ac2e2033a70e40571ddff18d7a16683829c51fabd80ba1de4f155ed499a9d255fe8e3628395e3c4a632028a43e214fd1da57803420131b800efab50704952fb247b4ccc1b672706ee55b70d2254d9ab50ae2b81d8bd9d9abb4d226b26d76e9ee4c31ea41ee74046f4ec5e692ab0a4343d56ecbe917e899220ce799c18a9468c974c27404b7ecf2bdf01e9b63c0447f3ff39c1e91ad7f13b44dfe5cf46285a025aa363d9bd0db716000b6252c1dcfe298be6d800040f50c3ba7c4ba77a4c2b652d70958d5b901efd09d2ddd3060a511751848faee0d078481519180dd90757a640bb2f914103a79179c019ff25448b247ba0752aa1e1b2e1503443dd8e52fdc9aeb6f2c2b8cc5e7d34a5914a5629569c59dfab79ebbbd8814649f38a4b1f0c57f2407f960f4d8d89b594877a1b147be95c07bd7ddf2b5bf4bacfcd3e091074d3e1994d470352b31998e034a94694bb87b7c4f960f2256a77d96f1af055d14b4f918cc956066202af6a9fdcfacdb32905807a88f6a46b5605775020db90cf49d69d710f086bca2a08ea375c37cfe6a473cba235460fc5e9754d822f4d9dc0df30dcfbaf91d708c87bf75334dab73469618b2c418731b260b8f8b6878f79da921637570ee7d9b1d377a934758a337e8a972ef921f75c0137808a17cf291ef19488d3dc295565a9f48cced7b563b09add77cbb06dd83ecd53660047e47486b32620a496f52acdb27e0e17fbcc10500487ced0e988a87c42333cecce746cb6f8dea4ead8d820a894a67e41aa32df81c1fdac70f4713bddd15d0d62aa07060fb2a6b88dabfeec80fbc17809cb0cd6e7f7d36cfa57a13da9ac46118defd9c759d4e60b0c44cec6122a9877182bc6098e620b773afaa7f4c7b69ce06960062a4e1569072994666a1aca63411aee28fc223a40cd40581d335be13855615f59fab10fc6342536771df204da4ea2b3519111805517a52817d14bb88cd89c0ed56b31c2ca959a5dd979866fcf5012e1ac30800ae5463523a0f502ca7c18075dea728dfc392d093a1ab145c69228b6a3934f23b6c8d8132db636913c9e933815aa5ccba1ab847d5158279b562b80421643d6045b7e38560827f922989c103fd5bf8aa2aa88495a1002c5888f573ae9cdedc463b4c8bd20724eb30dda4e6913fa90ac5a09b8f0083a8b4b1a37d47474f09da1d2e1941a4055fc3a8a6706088c4b7c67f0132904ccf21b3a63319a43bde4dff41e6c2fb1bfc1bc57be09b8a7d10f003cb3d290c94d545c8425fc139281c636edc3a97c6f8a8a6a61766363c712a662fb99da63aa422bc6dd3fb0650e828a0ac159667ac288d6d061d3b96a8014c1826fda29ab7e4741ac76cbdd1f8b3b3b5f5062cbc1104563aff45d752121fd3f707f2103ebbf0c07cda3b332241397a900c95028c80e5f28eb2d95e63194490cea9604d3ef7d40375f2453cc2209914e099c50b257864e681125a9e47e6427b27dd5133288f75a8b0e7dd9e6872dcdfa20c780c4ac3421ed5341370328c589e766314e48a1fdcc21de0b43359c6000e5436912626b97a0cc3abee811703754722f6eec857f3dd2fbfbfc1a5c446bc0b67eec0be30cc1ff65d0e19eab482fc3deff500d4665ad09002af4ea0e8d9ce83b4a508c88c56c02b8e9a0d9b19d0da82e0cbd599e130b93b3f45728051a1e17a915e2fd10252be2044ed2574c05b14df113a110137b31e33930d0914c7346e1acb5b8fc4a1e2295e59ac5aad254418f0b2dd32fc4f85ede2ee01bca10772a42fa8663bd9387f31851050fa5c75c6c7fe4b14a56ab5969211e498a94837040a294af7710b9326574dbcc89c4290df1eb66c15134142d889ee9f22e3aee9e4d111456850c2f97492bebcbb14fc9225458c4fe68c9d00b457cedaf22bcc661335903eddc514b93d47384c2b8921478857b418e573ee09ed3ed5440c3fe882df2ab21b18480c460d36acdfec45b9a604d0f9cddd4692dcea34dfff7f851153b0529b4b79aa2fb68e7c68a4bca8cc2a1d932106d1d39c8ce522941208309b83b724f3b88c7193494f3ea4370e7ae805bc03a85f0555f396f45db80464073bbf123fd72eefc1ba59a7b6280249984fde0eb873dedd7c5ccf0e1a456a4797fd3b6b20c90db7c69b79addd93825124219ec6346bd67e6e675c5686fcba753ef936deced74e6e9f926a8198aecf5c47f541ea5e82deb6428301974811a35cda17b646249f819ffcab23070d547e9872d0b2378ee37d32200f57e14807b1905c0f8e604ffa65ef85f466de642d5ae8a145a86281acd3161c9634f9702bb0889385d83d1f8a8a871d5827f9b90eebd8ece9e2a35adb6040f1239c5bf890d4d053397a1d846d4909c82a5510e4074c83e6a4cae455e63dee6029b77ff51d7422620ac8e913c045aea9275c3a4772ae20cd572c905565354f3ec0ac6c2f6c9e8cb8d2ec3c598629ec037fd7006e77a20c2240cbb5a742e9f9528b1c6d236b93a7eb63f7325812f8046eb92f9e7d8a925892c6f299722b998112cf7841b36b751933b17471da17f9fb1bdb1eda5276d321ee99a3b2511e35fa9dc92341f88478bf8f6bf9c736abc29dbd04d392b0715a66983791904fcbbb92be53d4e9fd5b01ade3bde311c9d403a01f9d9c914a915b23e2eac8153b8cf239ac8c16784e9b2758e1f3f165e2c4211c1f0308f7c2d53d87ad047230527bbe784ca81bc9c0e741e638695cc19e4b0accb572d8ac301f516e229c3cb5819a8d7652887613cd15af6467890ff66bd3ead177c43afbca7e388761cebac3b0e0e5c5e7e34e4bbe37fb0bf70c48aff87f4fee8b33a032451a8cd015bd8913339d2fcd74174e375790e40adb36e1289e72837984f42cc0b3a4d14eb8daac07f2f37f3c9ff4bbece7081ee7e097a6ef1233f4e0d512f6daee36039a2557c06c1657302d2118022895a4d87035ccecb48d6a148724b7d66af098deca8bbfc8c6cc5bb288042b49997c90f520fc9d25d12f5e3976962a3e5688401b51ee780d5495e9407f3f1de2ae3e5b8322245b763d7d35590a22c54764ad4332e2d243aef74c16b5e20980f31c8f64d1dfd5ea11590070aa39ef3538615918aa4de42e01ecb547f961a6244f1723ae92dd4d737bac30373d5291eaeaff819fd29034a991021a946be5137fdda0c855b9c7288e8eeca8d93388506f8898def8d2292f604ab8e28e3caf73d29c56b9a4258d7b9ad0cf6d402c8d9566e7c0c4661823e5b820b49345985897b04e44808134ac00146c588ffd11f0e263cd78ace6f041a9b09b1568759ea207e8783ad9e83897f9fa195d137ceb357db867713fd39d312f1d5973845fa8df230132542c8d8825c5297c2d90e51b90b4496040f21c3b2a6df39e3ca8fd9191c023d8799320eb0642ae9ef26e99d8522cee21a40269b43313afd7e0f6379352ea11229ab57b658ead1c0bd1249c61ac35a30bd5a080386b180d060e4a8388feeee624c2aa4c459e878d47b24a280d507a6dee9bf0d9c124ed2a614c9bc3a8e9b84f128cce824ac1d1b66dc4b394825071a02333287bb04cea42c1be0717598a884e5053763055d28e9bd14a8dbd6223313db52f0ebd12999ef89dd69ebaba099449089b74486cc35420a153e5082592859b028a9460eda249003f33eee639169d161248b0cc2a9b14f2f0dce16010c1fcffab5888cb7f4c1166f7a4001aa894c48ad86e2192673228d49461191a97f01e3f0efe2e8d0ec10f45e9d07cc1e6138ed2645e5e7a75b9f21d3c5910cce928c3c7d196ba5c772295bba5908425f65bb4d5da2ac380098ba94204b8c8a83460a10fde6131c36e5c5cbcba0e25027b057761b8ee6ddefc3d9b00b7417382c9812e3e4a192ae04ece28392b45817361c6e2970f4588b61d62e4d0e13480a0b8c8ab51cf9da80e83325b483d518384f63042052a1b369cb02b296a3571e1a110f6a77c9d6409726ea462f3560960998711da7d85972649821005c33098a1d95d252db439cdf55d6b1404bec7a344b8d6d8edc45389da2ab3a4d5c34d91816bdacc67da7f69283ec418c39353c8cdd27c40e03cf0699de6be6173d3d92a75c25fb80f9e9f523017573911a8acda0f0dd35d0a041d85e1a205ed209443bca57f6cedcf957add2641795afdb6802f1696628b5e8c9a292560cd3176d83afa729ad087287248e5fc192551ba61dfdb6ccc5b15b75535a6a9434dd1ce07e6c79bca9076ea5b6b678d7a630578ac8a1c84d5225b2046603e7e1578298483a3271ae2ac6bf5a5b0ac4ed3af1d1f1f20ba7a13d975a97ab2773ab9eb19c45c8e751f752e36f15bab8d67cd56419e7d70dc48f9b6432966e36450efffe827d83873e5ea035e25595b55bbf722d806740cb3e170380e4ce4c900872a0fa09c8bc336a61e5ad388dc4c7a472a7d9dc674d831a6cdab7cade5a7adaab3d75f9314e211eac72be79acea4275b6cf56083be6603c071d7feaa793b3d3c4feb69b8cf2ee439f5e87c0ba87e8215de820eeec7afe55397f394a5bb7a03fa52184600a7dab195a1feaea6b8875b676f446c09efcbdce1e790d92a1fbaa55fb9bd76ad8e6526c1e343d91a3bcfcdbda3ad024149919240c05e4349b9d4a98094c62972248bf42eae005107ccbac4b09754a25d5b2303f148c45ec7640032180db134c3c1b5dc28a398fec6d68fd536cc5636f43df0f5561c561c54cb0f3f89a3d73872c888fda3e17094e4f8a949f714380ec61293aa5c5c5844ca5083dd348ee22400f7a138e045886bc535bd2ca8c9acd8b70cbeda96812f83f7f51f980810d10d8a6e75d28b1abe0850e13ae825b61dfbf9ec4e4cf2a8525afa2c0d177dd632c1cf5eb774e48de65241b554797a1c264565bcdca2d234cc1d308a195280d1b559167473c5f2299fdd88c86febaa145facf1049c51b39f358b6dd8bde4a19fc6b2eb90c11d2134b7a7e541566f1746819673414be2618606993eb8f1d4ba26780c201808a57bc0985760cb824d4745a711632590e2ecf028607ad0e42a8e979ca50164023f9f76d9837cc2a2b9ed07872c2a53d2be1ffa798ed20af8f28468239107f5f06bb7885cc35bfa8c84b67e33af5c8e7c58795a036a7460eb5f2ad2a670811d9d34dc4e26b9e3fa1da84b7416e123ea88df6f35ec74d0b9327aeb8f2b381c2c88898f5ad42b3a79b159d9e94eb9c0d8ed65922f899bb866b900006aa8f2c3fd8ed19dce44f82e2367b2aab3a4948707c24f1150aaf7446e15212279ce056bb9892ad2d609eef328c390a871bd51166aee215c275aa10a41a8500f85134c919aefad7283c8a4254b6c7f5517d9252fcbe016ef7ac41c91302c31622808fafdb9026ac3fb267244f6a4e028982229bda8f1e3c235502456c11b33212938f1085d90f148a7054ef6458e032054aa5314cdd2ab427a7057356f00e0a80ffd46c6f6ade7aa65ae4a9ddd19030a8297c2f76bb39c63ac0c0b4d101d11875dcd595d8d118a06023852941f94ed4a4ddebcd604259158a890ff8ab24541183820f429966eb0c2291818b0debcac48de8e31f9c953b10420437eeea89ec43d48847028bff62aea74d90c1be87dedf98543eb7cde487a4f940e186085e2984c06a7c6881f6a513fa2434e5888388d4be9fe40658631edcb1061c9d7fa962813c689bc68350019ed78bae310a0ac4427099e06e7864e1569679843c8a7681360329de4e1ad537a944b4ed146fd04a8264cd700e377e375fb31c9c24cf5e495537b437e178c3838a380de8b7d0e05f61f7e8b58cc44e9e0b3f21378b6c62b621e371eb044d9180f2f11604759320074411ddafb1063db9a1621fbc4c57e9f6c6b0e775101fd10f695ea805f87bc216e19bceea51cbaed898c602291373076fc0eb0d52aca0b975dc09630a158fd4c5b21146e7f5dfdbfff1a8018ec1e751674ee0f178e5f7ff8bf3856134801049a18141f0385d1b90c6f52b4c22839577641266428cac9259d79371da16e4ec46b61317164810d2a1187123bf1f0774345711a3bdce069d64bf810ed5b146d3b67797a7c6bd43db0df9dfb2ea2d652ae0cbce484f54e56d124314d73ae9cf4a17e9093d4327f00c3b904750c86a3474ce915dbd6f73eb2187b9c8e7d91c3204be1b6cee9c8dabd7c3e4db5e486f520bd94f31d5ae9db89512c46386861ede645a7d0c9ea7b8de21597e0692641ffd8981d34f327f12ccc1dac1de857aaf58fcea3aa12ea0b6279155e65dfa6b71371902233c98bf84051cb613318f62a1ae647e38dfc612726478a267612764a33c77291a98b025247289901733026956d8a6628a619d4a895f2b363b10c556bc070a380c0b497b5372f3f3c8899e450510a85f66eaeff9165cdf75271b8ab5ba27519e4bd87bd7450d999a3a4cd49bba584fab4df752ce4983f7b8f6264871d2e0041d0e5ac99b0be4485656e7d783b43e463fe2271a2a64ca03c971b5fa6d2bafbd985153da8a19b45ab40e38570777fdb901f1a83fe544adedc6d8bdd372ea1b6eec1ae101a3725809a25894b9909cd33e7acfc4ce8dbfba9b09a5e326893e843cf32cd4e3b5e93911498ceffae195abeb6930bdbdd623237641192e29ebe4770d6787b0055a6512b650030dd1310c940b20a5eb495e587dd74a6d7d5428ae4bd601f34c82a62c3f44ea93c3158fe534e7c80f422de24ed36524627812ef6f08fce383223a042adc7c5e29c79299901f03298ef8f2c87fdeff6eb91c5379cbb53f4ce0e73b8e004c17ff497742b222c8b350f8a7dd6c7f81ec0f8ff63106a764730e4476043bcf5f607bb44801f45eedac6cd6a92a8c6f662162e528a1102e79d2493d5821fd84ed341e2e72b279912ea8f30ff72a7204a2719f3bd8ad8915c280da6844df95f93e896f36707b10c39245773ba10502becdce896d19f220e71e16d0e314529545fe54bf481eb4d084c7c176ad331c328eb4b8802bcb025f55741ad05cf0fbd9d4fa5e45b1962c53bf221d5003cfc6b10edd36d102cfb48bcd3662ad19549164e1650a9b17d51fe754d79376b3d6b4a0dc65ddd2acf0bbdc03bbd6861c4609028bc0c037ef03cb86925bef0394a2f66b7c70837d5dbf3bf2342bd9de9cdaa90996eaf521f825322e7431565d647fe6e4792dee100b7052a9a9e94fab114a9251574ab0d692ffd3c44db36234bb7f5802ca3931c3d8b1d4d9d23e3181c708963c3568f66628330314120062932eecf4caae485b1a0d1d00c115bd905d9373206b844d408bd0b876c8087da2c7b96af5b8afe38f29a15fbe9326cce2f7670eb3ceeff8abe4b759f27585993fbfb6fd87be52f8fffd9e381548eec3ccf6aa4dd31e2aee9f55f1223e2db6fdfa4668487f9e4b9175ea2241fbe8de4330aa35835f9e53307c8ec977e8c5a24a93095126e375e3fabf3259134f32cba99a61b633c643b1914f761bea96ad9829c52c2a624d07fc709d77573772e58b424b75c254a72573d71decb0ca3f616305f39ff5cbc0900801eff1ab89013ac7af83517b18e2f86108f2107336899886fb5397442fd865fadc83abea4215d324f2af4bc3c6742e672e2056136afc65aab90b8b729c2647cc3cdb60e6de4c72856aa4b8d62c141d97b2cc9a6f12a3c4edff068aaa2df508cf27e12fd52889a7382ef1f728dfb2d099bf683cace0530f28a3053afcfec880a4fa2b4c501705c1a1776816ca5b45b238da315c05706b569cf8b8e1aaf10ea355ace6906435c34c29d8bbbe8a67c844ef89d0ed0692aca6a230c1c689bd5f7789326ca17bc9b618042c5735e4ec4d0187f7c186e6facc421fb7df01af44c8284444c441d679570126b340d3246b8646023886eaef12410e0f87dbd922ba40b971f80e72856495f24c919bd7377748a76b2f39620d5bc5389c4ddcbc110e37b949d7d28cf0da7077ad94c29e8f6aa2d48d272f1ffd6de39b3d041f29bc04c662b09a9c966ba2f46f57d42242fc77314486ab0386b35db5c757feff986f145bc27f6836e14b50a96e9f6006156d364efbeca4f1d139aeb814c9b51266c5a4179b046c8286391fdd2994f782bf3de93b8067033a575e4b63960974e5c7777ae4195deda36938fa0557f5a427568ca27570d5dd75d2475945695d5eb80a45d7833ba874e3385511dd91886514fb682e023f5908b18ca8e298010f85ed9b0ed434c45a26afbdc443ba2a05ca57a68f16d6761f8465c0837d30df38715c40fd54a93ec8e9cfb035c337a5081e921e680d4833181688535f634a5ffd67ca5cc13af8513a2ab64c5bb94d0bab1557510cfee8354b24bcd1f431c0b3f5fad6a1b51fd306579a8a0e0ecbf278e157431defe28de0d58ac099d9add7177a080910e9ff56b88474df5e3d8f1f2747d41b6f6d73a3bcf5cf5a56170625689d567ff06496c9861e49f2afca6b62ab35d719e182fdf2643bff64af99b8a0591a6420101ce55cbf33b91d6790f9c08512639caaaf8ab975eea6420af34a9ab47159bf73afe31a73a9c6f69269d6b94c139d933e84e48ff79c58e604373bf2c12aab016add77c4d1233062eaa335656504a4ea81fdf3be107db1ff8057a02f0cf86cef0965060594d0820e3a28a1042d619cdc89fef0b21194ef44769d3350cabc2330f5363a5050a00a3da8a082167ad0410125b4a0830a5ae8412750a0c6ef87d455c9ab0ad1653449be7031e07cfb908a05b424fbd53a9ebf198399d1e75516a48fe435013748669b9b1a28c0a9e1fe7a62bb14d512648be7f1c0021e5d87350a95d633b6462ff295f66a778897a691c89c6aa63190974d126cd416c2ea63b69327584d00519d9ac9561b8314438e705a95c47a5d73ec893d421732378a389eb0bf9fdac05015f70733b351f0cfcbd66429da378c7fd18d1ed0b04ecf491357512f430011433f85f84d11221c565a73aa75c2de4af910979d5d0d27c28ed6070b775f6be0c4a34b322fad8e25854abb2a0333f7f298a58bd952825840424899ca1dfd0f50410b522820840a54d0400815a8a081143a90410122d440830e542881040da8501be85c0c7d374a16cecc4294416fa963f5cae1ba7a84e3b33a798e257e261ecc675f17ad65127b1ea1ab2ec5138e31a971f54f513ad171131cd344e3c4bfa4dc44e34c38be1349db4908fd816e7ed0b551ea08f5db3608ab235c30e810d3119e84cfc41548c067d13c94a1fe7064f6c36dc607187d7b0ff8ec77578e70ff56dcb1182201841c2b2c0a8ca540643130d6068ab5c0b118281605c6c2c0b11638560335acdf816411c002edf0254db759a523bc4e6501140883890c7214820ac37ee620c07766c7abcdfaf243d23b47bd807a032d7b6ba17fef8d1fb75e7c03fe632bc13c56225be12c96b5432fc422da07b31a93c808d263849ca2346aaa26482b5f47cf82c7504cf530b2683e9de58d83c23eadb287ff2aedb99de5fad333bc5a88783401efc734b35f3c5a8717e0d32c44816e9cc00f90d518101c2c83ad92ce897643d0636c17da17aa3028c10f224a51dec02856a5471350a22216007f0a5a4b22ab2752405014e0a4b472c186f3cd1af3d9582a68c556597e3b476c8ab3f1ea5e7b3f395b5bf2fc42e0fe5a0c0bfcf50fdfd06144368f659464adb7fa1088c7ce3d7d48859436d28863a60f99159925a1f842b7d587201e05678b99bb28805acefb91950cc4b589c9ddc803e94327127eba25b95ca4d4397e0297e423362bfca1dabb5898571f125927e29cfe12a4a98184557ea87c2a2cb4558b2eebc8974ae7369234acc99ab07fc8fa2871f594a61f5060ce250a06717513868e66b64c7043d0f6f23336e0c684a22716c21197ee976d31db7206b43f4c51f49f25c7cc3fdf440d40f3f98eff081836f5517987b063baf33ac8b7205ce02d6db2398afcf85e46a4945d3d0c598fa20ad80ba3699cde6b792972634d743cd72dccd954ef3b2406ca6dd8aebc06ed0fd8dc76e9c48a09e3aa82b8856aa9b1d9c038c7ce273ccf0c34a1f65a7569d37ed2dda75b4761778c8e30305960f995a113dc65481ce05e8e325a163701b7e30198e90270a78cea3981232057ac172446e85873beeadbe254d6350e4dc0d3cc55faae998ad5dc64a29a8b6d1d33fd7871ebd7da4dd26a66b26053ec346821b8a0c8bc62f93415e9077a08269aa1ec85f269440daaa62e30072a8117a3719d54b5136ce1363f453941e574ebbddff2210953e74562ff1a215cb4f65f1b07e14c73cccc5d75f2617eb4010d1a505d2af2c757ed096c3210991b658d32ee82e76a47ff4b512de6038fe9b1d550b2970a4f5333be530d3fa83e803bb33970b02de5a01b6ea4b6a396a3b527842c3ff0aeffa979b11a1654ae01f4409572396eab56db5b69efc1376a8ead1515f04feaad7702ef7673580d01e8bcad313b3f70dc7ce0560ffc04393cbb87d08be576700314b02f9aab6001a376a449003def697445cae00f639d649fba68cfab13f242bd532553eae1d3faa8b3aa28d3b12e6d602e3c4a8a6637a22e5bd949ea7f116a5bd0b13edb2b46345e9e3726ac84deb8084298031d2d3071ddf81c3832b3932fd30bc037f8eb6d45132a1628356d50858bab9be15a0216fb0c93ce2847a2c80ca907faa878422258ebaac1de8a079e60c2b59e7777da99e169f0f30883e167cd9c521565c19b9a605922b7557515cf4195051c43ff3e44d2fcade68c2a18160d88e79669bfb7028722fcd6d18ac1822cb5035538d6a4ba791b7ad62d7e60c0fa14b81e9a522676122e4a361fe65d192bbe6b256be016625a4df0a1c121c7f8b66ed648a433bfaf67bb3dc7385ddb659bfc110d97f343944a550c6a8b2e99b5ff9a16761eb1ecee4d0d135918d67a2e6fddae3320447533c5b927920c98f4cabe13d484123c57195172330d1b9f4b4a75aeea8f4a995638d94a0445eb12c2f64cdfb9f3dff12251fa61815e7049728dae5024415128c03c18ddc2ad7adfbcd836a028189b33f3cb9c8d176dc72384c654bf5a3fbd85071d2dbcfb42421a2131da471e3b77fd8a62d685a4982e9ce93fa84246cb04f80084cf5655a196848917429b851d48f502bf5e44e98a6dca891dc15d183f66580ea7e6271cb7b3d6d905ba4e0018716b9bba09a063f0437afe56eb45bdc54510ffb9fc1e0b5c4bf28efb6e6580fc58cab5d16cc5ed1a8e68b5e30747ad764a618cc1b7b231a90b9b86f80e1daf8624cfa73024407b0a55ba9625dcb1ab3b17eb6ecbda5d6df6c6e8b87cbfa5c85219b40935266fae938e1931cbda975b549cf5c71de8f1fc6dcb1cdb31db525d3cd316bdb5c0643e85ad51a420b966f3426a4e59e40e02060ffa84cd1742fcf7211c23e8a79d5722bf905f0daeb10e982437ff682ddc47773f0b043012518e3ef5da077677d2da14bd3daef8b2c8ec32ca75524884e62e5010750aa83077bce2adc187f279e39307d0600c00dab8f9cb0f422d718206edcaa29e11335ae644e0a9522fb41624585a462c54ce53408b461b31975e28695dc4ebbe035a3a5b4b9ecd646dab51a96da8c42394d0b3b59d796ffe36500c7242272b5b27ae68549efeeff43ec0e750d55887995709fc20724a0d8c6098977a8df9f595ec9a4adcb476feef2829f82d776aaec3c296ebc9b58f64d658e1d1b4340a6085278083a889e12bd283eb6d1b72b7680406c1e66bbe2625ef1a9aae443473f33e000ae7a182497fb475755fd66c2c10c0bdde073988b93063aa8d61e2c5912d99d1c1de22fec190ae9ca175efde046513238af19203dfdf6ebcfb3f7e875f45cfb34ee82b1ce0cd1ba661c270424bffb547ae4a1c4b8933622f5fa5a2ae75f003fc8a8878b141f91ea15014d8eb331dc99bc83a92b4dafb791e6499db05fa0d881ca15db44b720a44d15182afeb99ae012f4136ee07d88e391b3a962266c6457dec0caed9660e3e0b192eff2ceaf1a2b1c14ad2448bc3f85ac48ee75fe331500e1989341b552bd16c8c12574bc46ca09efe5013eb064a481dc6df9cbc4c22a3b17825dd09e3c1c01d24dd8b390567483502828040a61e7262450edfca109f90d3184a3390e8efbf7676b751967e9af24d179840ae906de5118a2f90bccea2f6a7dbfc3f2bf27385e193452c21b1f5274c043fdce1b4ab1feec3c1410a0d52286b08fc8e95799ec0046cd543b87f1ef07e45bfc3e59924500f1d515f0823322585c57d0f7210f759071547bfdf63d3952a06bb5182bd3251e6cd457876c981d123bd949458b1890c4fe442edce04e98e2a04130428e87b8be29c1ebc9592752dcf039e29cfb51ab567e6404a0a205527f6823176ab72b568036f85368d337b5e954d356e3d50bb61d5f91c7f24781ab8bd90e8d1b4ce7e07fc399d436ea2891bf43603167ee325a09663f78380e8744067ab14fed6cf05c190ae55ab72170b1a7e3e65bd00f8d517e484afd61eecc1713b621fcaedd63b9246c7055d781979ba14827119984cc0f05ad021a922987fb2801a706a3ca8a7dc5f244a530fe25979188a78186ff3c5072119a198f9cc34dc7b7ab02c32e94e8ec9c4dc763a508b8bb991d0c5a842bc3d9baec7d70ae013fe34484262b3440a176a941e5cf2103806424eecf48a04446b890863fde29c441df6913a5ae36081351b1b103f765aefa972ae5bca7c67a36100fe9e0f40f037f6aa116c0ef83c50f204546ca3cae49bab48fe735b54cda9fc95593d94ba324f8f7132d99fc80d81665cc7a9051563804469ac3d015bc79993be065a6e00bbb11b9166157b7a71c09d52ede1f27aa91f542562cbdb344fd31cc0e0c9d9e0e7ad0b287adabbfc44aec4ea8bda43d235a7858ef58737cf4ce409d20c5746f93a19adf831d5841a169ae78ba52ada976c77c1e9a105d7e040ddf325fc6011cbfbf8313d71e47f2b29d3e322fc38a959a5d9e3569aca494017bfed6396edf9a6175b7ab9b7377c34c81bb0a2371926f46cb0d8a53566cf4e98e12996f76d4e436c1d6f5a6030b7f5db71882ad34b516d36129b8e744cbff7ae693f2bb7823b622dbdf77081781d0d144248d56b2ce9044ce1a70c3c998149f5f7fdaee88fbd3a927a8ce73b194050f72ea580e7ea9bd3776240909b6d47a2cc208695ca50e8ebb9858d9ccce0a7bd237a8eb85f11e2faeb2dc0cb48945e3c24770b791d9042764be756c0a6a50370a9cbc0cc88623a3a7a908a3a0199b79f1d3dc4b791e91e109f5e7d76ac813871855ec2d6acbbf7d951b704a070e3ca83fe4e3c3717e21a8e9eb7e85d491d4af9865d1ba17f95f13549cf7c9927b8364f2e9133affcc644e3c13b94ba2e5d30e066d745d17529e22e118672eada15ff41404322445e528e230e1101a5e8fa280928655d3261b6f9302891584c34c1a95eb0625bd8c0d9812603eae8c0ca16802598ae9d42771976d107420c7f5f86aa97e48afc6afe105c958e5fc3aa252a656753e91d7ca452762a5464cd6a2b345f1d4495902b03354cd647664af255baed6bad9d05bf0544d511c58c553d310c6d5cd1837be64c9b5beefecef2e74c06524835a156848f04fa08b6fab1cb9fc4c299fdb252c02f062dd597986a907d30b2958e50d5fa3c8dc3bd2aa51145bb2b9726cda87393a9567595e2492b93d2e468fb56b076e55f3d1b583b49eaa9a64e36b0569811a038111a2060537863d2b365a28798ea3128562fa69de7b4375b322087cd45529f78ed4d29148e4ccde12121bdb5a3a79aefa6dfc0009d12fdd62e93d52910a6dad5d980e4ab33007480b0d67374c1b7a9a5c923d8c31dda30c47b804655b024d4a7fb938ead5934edb55c42e10291b2d7c7a8517e0fe235363a851ea564dca8514a802b8a781098248da51731fc5fa8a4dfc017fea030fcf4c619484b47d3b829a670fba722e0ef4ecd6a6888cf99a96bcf32f864dd77ed223c7591944a1f242682577a35b7d5096ca092b1e1a156aa5c4c81d7ae3769492cbb045197b1e74290c1ab9211161aaf170295b14abd7b1e4e6648001db0e969b129440c9c27771cfe20a488d5e1834c8236a6434be96a6e4a07fdc6ba54864e31d1132b3e14416839e522b515769738082bae87e8e96e1ea043846eccd97b9654ecc347c19dda6cb3c0e98272d4544670e20063da05f37994343083219b5b14dd56549c847748e8b12d3e830516796d860d58b66d9f4dd1819de68c675cd0ff88f02552cf5773caa3fbed7e7691f60d0b45bd2b7cc22246ff44382282407151b80722bdc08a70e73d4d73590154650f7985bddb2ebe1fcf659eaa7b2d3ff4792b4d0b90e9cceffb878570571d8b7947a1d22f0723354d1d28c58183f6f416a4589d050c0a7a7f0faa4e84c5420d6ad879d74b1e515da78574507d4c15289ce49c43acd96e819c70df71fd4371e7e961795b20f5895bdc5caf0aaf66377bc0d5dc9b86e21c439fe098ec4e51619d8038ff65067858bc78b91768247c43bc2836c586bdba198c25678968697f4f417ede301a696b6ee6380be573262a7bd40ccc18ef24e4f517902985b8de24ebec70b40e25061208c28b6d6ccb301fd08a1111c2e466c04831181f0874abb749fc42b64d3646337716af4693a95eeb09b77fcf65a306657cea4d8135547ab52428ce3c15d3163e21eead2b8126b62edaaf7da08359d6a569469d4232328a18df7baad1659cb7ec299cec7f7a758077c979e59999ad352e4a6aff17ef178c8c2b0da3c2ea47786b4d981162503c9fff477b466b499085d584f2a47890f7ba3942769652e196cdaca22fabe29f02e013615dc0e83f2b95025461e6ad6d7858f919b5d204a76654c048f0c82ac5a6892421ce621925c97ce41f6622385f762bc7aad427278518cb3fd4798596a2babed886b489a14c008b8bfadd75d939fb91413a4d85dbb35d7e9ffaaa844164a5d815f61e03811c4c97fef721d23609128e0f200268ec5a062ac0486af5d6c917c4e645a777b8e3c3e030d2ae0459035997a02a6107b47ae3d16e49dea382f42986281a038f6816f4e64d977109dcecd2d9f1bd9bb2b8703713458d8dc16a7f2518c7fbec543ad0fcc93053f482a61ca822412559e3488e132d470155782cbfafb220db76d579a3f05990553d98e586e00fa5f088a991c1246eaa7958f89de23d8078e86640acb0a3566e9d2530728fabb9bdd0b25090dc5081e070544837388f8da39b819efa2a79e80205b684ccea0dc4a28b0e3570b7b490ad41f4cd16111e2584ac91f1afb4cc8371cfbc3a5084d78919e517d8476ac8c096dc4688d918f443d6df826167744154b0e1f38a777dc38844dc403fdf78d8e490ccd0e93f6ad84845b346c16dd850e8699b0c5262a40e87a8978f5b4a242aa18391bb7315ffcd5f23d916e98b32855cdb30c7295ab7c3b5aa5bb1e3e15ba51f9f3b072b3eb03d90c9a6868f74006b2836b3950f901eb3b80f1d120ac4d05e5fe32eec6fb399fa009bf8b92ece242013f3096439c48711471e2d97f94f2f4ba0ae81dadeece800c1ed844af40117b91e8aab92eff72ec8f75164033e62b2d0326b35fef301147caf9f46be824251fbd57991dc26ce80947f19f72b6a23870386def7d06f9083f454571135d149aa607f72f666a0231eff25ca1e220fbfaf10abf28e331101199b61c2639984cb65b4fc1c8f3b121e208286bce576980f0bf863a05c8f5ff8d395f8ceb8691369e0d53ea849e25060ceb2261ad4489fac923132ba5e78d143e2b335f5b1f5d85c31cef063af2493986b2fc819456eddbd0c46cc2290a8213a6e3d9b0d41f1bb632c1f88ea034672e5ce00f8cad7f42da3e43b97018979de236142714f182117cb5762040a6b734173e512f3a7794f8211007ea34a3928ccc9f39edff751e3da38c66f6428ac48611aaf0ab85d4ed801a3269254dd296410ce1cbfb226c6fb0bf2f1c43e7819bfe8c528115f8cc6ca45868fb224a455fa74dd5ae55b212a6706be32192f2078e8e66e22766ca71bd22b4e6437c7c9b081ba96a701eae0cca2511709d44bae0787f5f58fa923648808cf3ead7baa8b802707983a21e1dcb1c2289d42703851f92e6c443130b2862cb8ddf7644be0dbddb075dc7655ba3ec812b8711bb07eef4a7a9215702766c2f2209c0f8b407d804ee6a295ed142de52bf97cebe6e20ecdc323f778fff62807ab4549bdf82ea31be49ecfb8e9c4a7d4a4ec6538d0a6fc6f1fbf92ed87087d33d91c6ab227e1f2308226ef4715b8bc25d21ab416795616353f1ece46c72d289b1451cc692ef32a039ab033b21ae6a2716c394167775f091db9b03a8c6544c3ea49b0684f0c472eacac1dddad880369582a46aeec542259ed4809c0f289f8e26723db4c013fe02cfacb5ce00a0ac54e92ed096310451c6453bd954ca50f1e7bb0363f36763ed9c2cec21490b3dab950d2d29a8205d19f4de74da263546f5ab276c4fd60b56ebbf65aa655a7e3d021c8759b9637426b0ee0cfddb5ca5f111107731bd966637fa261420e09bd3f46364d0a30fb0f55fca954e44b19e4bf136908fa72ba76f6bad4c6996dfe825488096101a2c31bfd0d7433c02084f1a80295f6e672ba835002212eb133d6e839cc1611266077f21a13fb8a0c3c0986b82810526470f3b3693f12fb36e8fa45c991b78139710d71fc667b203e765cc3e0b2decd694f5e4d12ae992e6d9934968bc467c3649dd4fe73ee1a0f3e2d05a4c2c7503b12674a53a552ac69e9ec3bf074c7b6268f9696d75c734a3ab89846c492084aac990da0660417bacbea9b3ccfebfe98f991adee0ce6576eb6c7eb322fbadd38121baa7f32a444145d7b462319c78b93978f9ca56963ad4b749094cb00d1497c6c1cdf8af1018f7996fa8f42bac46569942314e344590724d3ac7aeef846c928d0ecf043b17a64bcaa6c01630082c296ed596fbaa1c86f1250cc0d1e0e8a5863b36b411ca6f6348c8b52c63cec86a9653039c90a13b5907dca20305b11026f6bb9913db19f3a31a2d9aa1b03a02003fb08e0a4fa54a45fa56ecf69542aadd82574c07e2e8c931970cffaf25e22179d0d6169c91527c5c7d3c929f215a12d376a9f757db01991dc15a3c283ac0cde01a8b151753ff3a9a5f40bc2a5581b7fe04f2a94c04163cf69408f7eb8331fc1eb2bd5c6e314876bad8c9ec53751e01e378a7ce99047af48ea25545bc79dc0fb2b3154d725280f6713ae8b275f3f07653841f72b6723045c8a5d99043a9011d5a6955011754e670cd553c40dff70322e12367928ccafb630af1134e37c8ee755cbd26247a44658c100915c6e8f3a7d6b11c282ee6e9311411ff9caf37e5024ecda0f45bf78fbe057291a196838da1c099046589342fac93256a045f4c9b9b910f6c20629282d8d0e34dedf55b8b77f16e2f0a05079325c15913662b2415a5a8568099cc73e98f6ee381504bc6c1a1b59f1cbb3adccb005b2acd61e26bf4f0777e291e40a23fb3aef33b62c38f67446501de08f69ed03d7dfc139132f7aee4a5c0a3df29b16675dacafa9b25727a888e8edd56b8aa91050323f65df1830b6cdc8fbedfdf547853080ca91c2587f58c59f596a7856a9264259d8550def41e30da9f4431a80ec58c8033e8d9f5b629cd34547482d8077cef693d242032415228bb3bfd4d6d4dc0e8a0b21d250b4ba58c46e6320cb13baf9b148a9131c39115b72376795b21aa045aa6651426532a30240f33e28d5e2dd230e405e580464634cbf492484bbd958eb61a4f3325bbe6691ed89dc24239f7672b70f821b5bca3c66558d1e0597d7638d7dd74a382948efa3c77868d00865218e71e14991be0efad1981091cadf7e1adc3b03a43946672ef4103709430faa56684e28863233abc8d071673dc0c5001255d32e311e8785f6a8cf1183c1f3e095cacfb1b326dddd9b5c22922bde60209092f08f9d7bd8eb95195bb328f268294f9d520f848c703c3b2442a3ea03c314c18a0b02c0cd3e3a635d1094c2cb15e8d6cc4237e0b2d5e0677da237b2efd902092bec2ffc256ed4de680ef50b261254519e896a2c57695fb0c876fa243fbff29a1b991efa5be7ad5359d244fc2ce19393f2a6d6b714b36e0ca258ea43876cb0b0bbee4b059e2ba6aa125b45ebc2f42a466ae6d3d720deeca1e0d44497ff3840f9aab42ff397a64847345e68427dcb311848cd2a05301e3c20d1abdb987ad073fca7ac5c499086938404a2d286eff725f276834516a1ed4850becddf3cca73e6f657c43a10c304f546335f28117d848fb3e3ac2077d4a49a8d4b4cb65a9ad5986b815cdcff3ffce161a82b9bdc1222b17ff5535f4b2f7c2a416bc443ad10a1951aec089d7b59890e2be9bf65c2ed6c950a5e528be4e251c8b033ea5a30fbcd8222ac92fe188eb9a07505cf229690ae81b755ef4f08c6d6fbdd38a2cd6dd184dd14c04824958bff0f50aea8ddc384ca93e4dfe2a60681e744a9f9275e21959791d03e5e14306161867f2ae00a2d66b9b03d02205e0b3f48e5a99d5689e9dd1d3402f2a3ece79061fb85f407089c15346948cc33b048424dcc6838c9087ea817b27b47e0b5fccb38d61a40f706bb7371c27a011e874a1c6769464949258d657df3a282298d1c434fa352d97519be35fe0c1a192facbfc2bba8fc60bf765313a13426532a497852e0c466e0585422af43add5207e92fd56f12098415691d083372bb5d767d38ae6328ec57224f12029eeb44a7d3b82312c1a1ddf2a245138b0b470be50ff8b63c62c82b6f907a6f03d6900d1f22f78c4baea84fc345e9bfa8f37ac6f972dd9f7770bc05496138c023c3986e6f85f368003ae82c4712d68bb5c6bcc4257afef10b1d7f918c1fbc2044082ee82862a1ac34f48a67a2bc2821f833e2f10514bf51d80a1ec39d6e380c35fdef1289f2d489976197e88eb8d15a7bc234a50bfde630844e6e0221b4389e7fa4fd707a1cacd7745e8d5334f833fbe439478d06a2cb20880471893ec73f55802b4d419f9c6c475aed4c661c97abdd6befc79a925ff627956a71b65117a8f8f48971acf68674308433b90f71d6221a78b17b24c16492f42694dcaf5a8a9525c80dd0920ccd5ef08a0a39c5974fc4e5c38dad22fcd5246ad9f8dffeb76b19b05ac8ed3a099587945ec948d50f5088084abde06764acfc0129aa4757da6bb7e16148439e00ef04a03a5644daa1be755c89ca62640dd11492b58f96c7b68def9f06347f68033d33b4b5db0147f20929b90740a001b74722a49ac508b58b772bdd488f07f34e39f0fc6f6f6d28e30be1ab16bb71615ae7d9bbddbba3e19b0edbd97be1321718b0594a015eeb46f58a1a808f228d4e1458f3a4f222a7a9a0063343c6485df2655b0cf87055e9cfc9bcd2cbc8fbc11fa42469cc368984b394ed2b0ea56c0ce424bcab029f0171b314a058608288c1f367d10680c52d529c8bc2d22ad22ddccebd59aa04266e692370a908bd4c2618173c50470a003a37560ec8dc5b74a35179f39095c0dccd8c2110998e36e21bb49631a86d579940b4c5c47d39da41083b39081949f7f5ffb49f55562bc0701443e6b6020354e7ca81588a60f49f30066404d2077ad4aa6e1a83e2f6ddd4ca71934c523779365240679825c5361878e8766b317510b89b782a96b1e21df9c80641234086b8dbd9f6ff6dcd26c1187f68bbcfe7fe4a508a47190b8a66c2481d7c80d031a789851457301e76900fcb99686f6c576f51899d7bbea2854636082dfc0e47de638e0351488444f47f7817a24c91d38aaa898f5d4af55160921baee3705f06af22cc44680cf71c37a682ea59089673aa7270ae28d00624a74bb6c11cb92a2a0443d111e4096dfdedcee704644d887e27c2045b46dd54577ed0881c0b9427c6378fbee0457f6a14236df81677b8246dcd19a61391923904c78df4f141466b917eb12e8623bc0e529a36c831d3cc1925302ed407695eadf0012e24ea3a3cb75102d1007071e4b1073e68980474c510040727555623d8788848e4d64c7b1f31cfe23ff9642a956c8e89d66256af8452c8482eac801f5d4daa75db3352890491ec002799bf23a803f1ae0a76411fae23686a3116e3766a62fe3236039be58f84b7cb5f14f9ae88753485e5b85970a0462ccf1547d9eb9fd92b705d155c1d69e9a74d865db67b0ca297c4dcd83c0e8ba2158d0f044d1065d224c408a987a4f36b7191f1c6158f30f9fe6a00b84b396ce1c988c22c7e6066c39888063ae17d808e82e5feec4e72d46b4c8562311203c00e05d4e08672b0b7d2c161ffa2321120e33d4842bfcb497c225f873276c9623050dc11da9dcbe20ce05d812f3ce4b327ad6b449654ef03f9efd75ab9794db5a0611fd567d0b0034bf1c80a6aac8aea4e26b7ef95fdd211657205b6360e737e76b1c3b12268a897f2748265e9e6ef7787a54d19c22addeb86ebfb12df7ab80a58b97145adf0299e230bc7ac9fae67832b1b3e4e2364010bcbe9f6289bca8f246a8a8e5da3b66b82cec3489ae290592446e8f4127b1cf8c57998fc49129ccc0b0c476e57ea0335e82a5d4cd991fab9ed4a6a002da22a06471cf9e0aa00ca6df7d3d50116e609cfd95908d4aa2635914f950e33c74d3f59ad2ea31b54ffb57c67d18605dbb2856946b9d5e89be2c4fb0dc50c800e58c69892f9e6e299d923c0d9bf5b6b96072bd5e1800f6acacf35cabfc4de96a057b2384f27045c3a7ac67f6fcb987e116f5a0c333fd1f7fc5e05f8d687b2ec2db423182b4af9e8b3b495adc44cced3a539c73a89729b4224b31b982921e9ea88db0457938b999228869328abd83b2d1208460f3ac06dadc16430c2b16aee08c01b61c7a5804628174550c3e08c46f213dcbea6c15045002fab770f742ff86a2e49eebdef082600572c77d0e4e2ef7367e6e318193eae2685868ce94120d72181d143502fef95aa317bc7fccd60e905dd0b106feb803701220b18030c3b226324458e480707787b7bd5e3fbdee3f27c0ad30935390f646aca793cd926abaccc99b2d56e8e2d7b576dbb6cc19fc1c1356f1b1f6278605749980dff13b23d4ac5fe826f428c747d31fbe2a5b28bf7db89b5b239585207d8c4ee57412bb0edb6125cb306c5b51755480df46a0999b652c9308b3ab80cd7f78fb300c88b867a1243d5bbccf5a9952b039d3fc5cc8fe28e92cc50ff20b204ec7513c4571891f95141aac52547ef47d64ba1db7b8f7942a28cd6d30582af21ea6455505057abfead8652e302b1f5f8f03b92a454267e06e6e8cd5f072d03b922c8ec34b88e1feeda0030a4a4691253159eade3fbbcf1cc6b9ce262cf4874cdcd9a25dcd34ebd91920c478fb5238f056cb28f5fcef0f0a545c55b8981566bb98708de23f991b7e40db8c58cac836bd4be324fe998ac6d6a3d0aae594d14ad1882ad55f834eda9e01ca560bb5fb680a15f74271794d3fc72247933f6fa7bcd50a3ac09d68e4e7f2148dc5a2f6397c04fa46f110b41afa34faa7eb19039761201a50210f26244029342389b4295f890151c37eda389994d9103d0c3860d451b4e2a2a4ae0292abb82a0d4878670729e7febdff32ce2118adc6586655c63072ec1dd064b026abc530765bc220585972f9df39fac59fd60259e4fc29521189a9140884cf4311d2a95e91c80afe3234035c0a997ec19433d58d190dce1321385450973945925fe9a5dca4f0f34091e85bb88be686786b09cd58a0d6cd4f7da548be38f97be7a9dfa1a1a34f777cda4c209dbc4a3b536d5c3e5171c436ef4fa9551380512e36230c67eb0f8c6d7c4d921021d0025b49e88690e1cb0ffcf448229303fdfeed6fc6f1436728d179196a742111d4a3287eced0bd640257c6b18965d7d70053b21ba1e995d0637c8da23237b5715ea3681636b2895899e2f2cc35f6d3122128e3df91cc4f7282b8c94bb4fc8b2cfe679c8081c0c7c849077a142af00d9b1a2549c05172f124bf823b15f240cde23e68e992c0fd42511f19d95c522d362ba94cca29013a72a184c2d182543c61da91524e82af95fb23ac522e2be1644163375b69da9aa84360eb4c81f3a28762fd48ad6c0b2f800ba036c28417ff6bf11c1adc08e3bfa46948d40636791027541b1b1e1e0533eb43149054a5a0f20f48f1e7e4deaaba79c117ade786c993d7dee250ed8a40a44c66188431d17ab654ae2d1fa15f4a36471d9be47d13461fd8e536d41d55ac8dd0b558c70abd6b95cd651870d0ab0fbe35a70eb1311efea8f5d45f5551c02a179fd5d31460dad8e77829822a7cbad981ffc86c4d3a8a725105b8fc24f492afd8d79d99cc667c3ae81d9236d3edc1b39a84f40bf3aa530bc0e1690c184e2d779cd2b87d37b42e17824cbd61ddd2f5fd20623dd4125324b4169a9b9c1fff717ecfa548c25174a2570f51edd3e8c39a05f1185d21860b42ad7a55da4aae7b4b8656b9f7ac9c11d324b71574699da05b688e3a90fa7144c662892a5d199a70e10a82fe6d4183f92f2db0baad5ba4e940608468b0551b6996adda8f00485bda354465e16614251df02d161a3b04d883e328c4c0d3c1080c5f547a309218c6747cce730acb904e2fc5f94e001bd47f0a5500f7d2cafe22a2269b63a008b463560961102f51f8dda081116b0104db75230b9aff177a2cc59b18eca06bc316a706c1de58acd5bcd9bf3946bca5dff6bb377021e375c17de490163746338e443655d501f9ca95d0427f9a0d2e2023fbf24689998346662022385b97fd0c0b09a2de96f1a521d5d7378fe7d5190a871cee821fed76a560f9ef54eeb7c81742ab0e5e0ce6a60707798bb8f93df5693744a4eb29edaaeba9aaf1a8acf7fdd54a217ebeffff587830d0887c19287d55491de78f329f9eec66c27573810b2590c1f2e12dd2c996ee5992b3b1a9d017948c3fcfa12165d47fa5128a6ba5c8fcc42cb2d9032bcfba8a64c1718e34987813696564afe6d0c9787747615fc7f23b845fc8854ae323daad3d06ac6d2f3223c745ce0e7120eb0706c15d5953e23c7a8237792b1a318c877474072dff42569f2f152cddc0ab9ae3d7922bdb37701121332d7b550e94ed1bb64c23f48184d85ca8eb6feb1921a9652161cf4f4d5cb5300482330fc1efa15a7033c3f6ff1d2ac9b60527af9813ff57835415d9d2323bbbc0ef24be54bc85d74073da25f0179720bbeeab211396a0fabddf13b3a2ae34b58962f873f3590c98e756e4e2281b319843e9c6131b7e8de980279a2cae1f074360f09f3daf33780cc5ce305282bc6bfe8ab2952e2bf603269dbace9404a5edc8316a388602ab6cab84686bb38ccb80031f569359454c9e0cf3abbdcc52090ff46c2198710e3d8e043068d22b9db9f7569a7c0057799c55db2f12f3086c33d15dc1d7d4e8c0add18b24d88e51bec1e4592ec47d82c16054b21d7cb081a832dfb4e9dbb167e294e1f68ddeb42c060bf67945bf414a9e025182af56e2134ded2e5bbdd0c8f6d8cc6bbd67b3ddf9a8808b3bed09d32f0c07537919736880a32d30296fec238c7fb7c4d15b1875a385b6c37400323ec65f313ef730685fef419833da79b428c7f2fabbe3af440b914b0860c61e25d04b169f5c9005febd83f7ec0ca4077f8f055142c259f8b24b0ceacfb8ec40bbbfbd8b0633d03022f80a23df8207f26595e8d9d72ab4c7124b077e073beb131f05e53622bbbdeaf9d7037bee2b2321dbd5a925996e944eac958dbd5a6c73b48b1930bae37a9b5e9ad11793c9d4a8ed2de39da6a73d31b60865004f3956dccf4aaa0aaa26af2a4876d02fcb1182a7131102108a30c5106b921c6b4ae473ec38fa87d8febfca32b7da0632e7ef827ec0347009b53165e555e017408b15025cb89a4da5156f2c808f385dd085c656137e255411dec7962e988655430c92d0a47d484fe1e4b1b7e9998ebbcfd9fab98a13f2222b62d9d6520494f7d0b79281b90660d30f40b8321411de8d5ecd36c98c062fae07c3ad33e01ad4cd961133c465b5a0f8d163998688f5863dae4afb522a4548851c761e43ed8a140098610a50fdc517232cfe8bb861f76717247dcd72c820999298e4d1f31688c9462af22e108e1ba9afefd8c5618a5566eb9261a07b0b439402be747c8252c583afb540b11cb3e2618f1af8fa2cdd749abf56f07f029312e0593e9b6aec253656489840c56ba66a7916953fa5624a7f48d535a86268c9666aa251b8ceceadde12e1a74a73315408b01abaada6e3eef641d65e31d39c08370abe8cb02ca23d0dabc3648908b4cfef7000bd10d1bb273c29097b5ef7d6fc60059aa564c15006a9088d344a58c7c7c278343c3941359030b96e390ce6460ac70c67061c83d74d7b4114e0ec976d3c28513037b9434a25a56d55f271a2671cccb877501d39383b10daf981fa4f646d5ff6e3f3f1062dd3d27606307b2178d2d937805c019188784e73ce84a053ab357597745d9cf52d845ef9e88221006ada810fc279c022b80785014e1f5a970b5d12aee6030a7b35d06ce1af9e49db9ebae11ff9a219e06603cb1e992ccf2e02ff82471f91d0c35e7afe82d81d680244c4029a64ae7959301a55710ef9001d7b37f033e4580ea6e11db4702369a7fe6c60c673d04466039cd941fe0a4993584b5ee1ca0d0becb010c008ae609c7c406d5d50f3bed5151f0294b33b2b52ad5b29f3f00efe2a3711111121227b4b99a40c9b07b90730074918a2835397402255213dac9e9e1e96094992244992a3d1e847235205d8322249d28f9e342a37d52449925493b9ca541ab86a5a1589d1c824bb5e915d7b18168361188661312a4422914824129124f9242912812da448347af24764b9a9168944a219d5a2d9cf1a622a4c7d2942923e58668565b00c9659958442a15028141289442f128542608b2814225ff4a42814fa5028a44375482746851ed98e1544a29c92ec5ac50c66369bc1a4008140201008140a853e140291802d211048f4a117814a1008549322530dca6ee34ae0f88d0bf120844239aa9c9c1c15c9388ee3388e2010e841a03105d8021ac7d0833e3496e3389264aa4787f1951fa1e9b75cc659be0210a89cd39422bbf66eeba5d56ad1971004411004c1711c7f1c4110d83282e00882a08c6a90ca28111a8617fa437de818c6f1ba5c97eb725da88bf87ddff77d1f08820f82df08b680df373ef823f87dff7ddfcd77035b622796d304308c9120168bfd741cc7711cc77ddfc78960cbc771e07f0f7ee5a61c47359767a80d84d8d0d01b7c3521a8a9a9997918638c31e6380e87600b87f1c7959b62fc837fa88b11165d5115149c975d77aa1ff5bdcd5a6badb518e3c7d8fe6cc1d672d4da2d3687cc2bf810e1c182a68fe94ea5a9498e63bd9aa6699aa6596badf6812d56d3ec63aa6931b4183b074dbfe6d4c05e3a683a57a689bedeb26bcfe49b28b33bc29d325eb054e72a615a62eaee180cfe5a495d6b3e773c2474fdef89d1df63d5ef5c28355e4bd77b04d6b84b9af491d5a55d2c637c792c8f557f6b9a9e3c566a96e86bf900b344bf73d51302668ad631a177f7da2d3e1b23e7c01ab765e9fa9ef6566be52e020394d6c00a45d860c4881123468c183162c4889122458a1499cd66b3d96c369bcd66b322458a142952c4870d3c7ad4fea397ea374d757ae9ebaf5492dc2b75a58ada3f6709fbdeb3d01693a88afdf91e75a7d85930fd5a62da054d5f9b293a64a2b4a7db6aea25fc5e4b2843682a4f15fbd6fe76ab953f4d69d8defae85eb73a4b77a6d8edb7df48daba7daa3ddd1173b4d63df8f3579c25fc397aa700bc6b5f3d63f363685587aaa46a8caa681adc19ebc86279609e7ac5f6596dbb98ebbc0f0cc51194e2a5adf642221525e4688509e984458bcfe58bea16dcf15e7cd5554f78e6fdc4684a7c5115d618d398f5b560542fd3a47db7023255c497ccecbf1468edc5d78ddd98b30cf1138cd2f701c8dfcc27e3259791b6c498b5116f78517cf1a2178bc56222ca8bde6c26ba78d173b95c2eb17cd1d3d111f38b1e4b1445f15ff46c6cc4162f76b3d96c267e5d7931e2c98b5d2c168b89a4173b1f1fd1e4c5cee572b9c4152f763a3ae2e8c58e258aa248bed8d9d888252f72b3d96c26aa78b18b1145d18b5c2c168b89a117391f1f91e445cee5125da298e2454e87aa683a22e8458e5553b4c7322d2a8a9c8d8863b158cc47fc0ecc14f6a1ab891a5ffc219c857bf17b4c94e792b9767e879fb0aba6683ae2e39829acc31259226689e08bf5451b7126ce44f13b6c238a77268a4f670ac75015edc59fe10bd08678c3e7127bb186514489cd62b1d84c6b9f5d84a5e7d2f15c9ecb73e968ed3f83efb13c1b8fe5b13c9667a3b56fd1e26331f36266b39917a3b56771e291623eb158cc476b7f62d2ade85c9d8ee872b974b4f6a4114776acce46ec585dc70a3b968dd6dea404abe0665d8cc8cd3a6e36eb62b4f62b4437c4c5381f918b755c2ce6a3b51f916c293817a723722ecec5b9381dad3d095ac3a8e97d71381667c3b13816c7e26cb44649515cad623eb158cc476b5ef69e2bf13ccf8575b00bbbb00be7faa08a8a59d806b3300bb3b08dd6bed6c7a28ac3d7e53bd61bf3c4fcb5be994ff5bd7c2ed3f4c1c4b498ab05adfde71a379ee119fef11300de87193fdd584dd1fec56f4ba36ff86d6d70f86d85e8f0ad8cb3943e7c6b8399ba3e28bfed0d74f836c844b9f8f0ad8b9f6eab65552dbb6a59d68fb3bc9199ba301814b3892a87f8e9aa7888f8c49c255f61a6eecc0c167426aa85cb4f9b4cf692c164393a240961a6eecb106a268ac5875f63fcb4c16035086c0646a3c3930fbfb260a6361e9eea021d7e859928931e3f6dadd6ac555d88380b498699da6ec277d944adf87053e9a886f0c09c65c4c44c6d33334fb899a892969f3499ac46e60a431fbee360a6b617d7810edf65264ac587ef2f7ed2600e1313bebb388be8c84c693c3c51fc4c14c98e9fb4564bd6ea09536461a6b49b9b2de8f0696ca2401f3e15e2272d54e1501725c24c693354459b29820e9fda4cd4f8e153969fac4c4665642d96eec39718e8f0e90b664a7bf9e1270bab29dafff0a04187df8199b23c7435448f89aa2d596b67879f6caba668e1e398297b4355b49f3733543afec644dd0f370e3afc919485b5ea17336567a8ca44d90f1ffba9cac2a733655fa88af661f825a08df0a54b37767d70286fec86f2c65e94378652fa68ed5d949fcb34f98ce2df0b6bdd7b615a7b9232ccf7debff7a6680192b62bdbb60b62f19d6cdb46dab66d34f1c86d6bbdf6e28a6eb4a9b6994d456eaa4db5cd68edc3122e24db5e64211928db5eb4f6a00a2c82f184b0100cc6a3b5ff486e8ad68d8cd65aadd68dd6de036d9fa6d266484d35a3b5ef46adb332eda5b4322b93b9f69ccf68f5be3816c60383c178b4f62247c317ad852fad9b56ab75e31a57706655335665555635a303e0b7787204a22aaefb090255a0d2777678fca82c6db78dd1d6c64c6d3e28731e275261eacb8fcfc703e248d115c64b1eb014c74b28b412f192854d93e551ff078591719696b3d05425260afcf0c1b0044b1be3a571ea8ebe0dd2867157560cec459bd0df96254825527b1c8999625f07f807e310484782f3ec4c186da9fb0fb544348cafac0d6a75579fdaafac1ac4592c75519b4c6bb2b3ea891ef12d4624e85655f61de791d51395f98e8cf6d80ad315c75976adb089e2de7e85c244b97dafe332d5186cf1a7fedfe5a9e9d75a4e37a9bfb3492d69cf5d964eaba9a6c9561867c1250c2f4b257b2d7689f1837fa54f7d6a1a5ad6416959ba6d01030f8514a23e5130562727caf5f63346f374a3a66cbf6ddb66b7d7720f2f6ddcfba0bdd52cd59603ce327ffb1e37b44df39fd97aa9746badb5768336b81dc3c62c636c96d66d6e796290fd79632466fbcb0167d97a90da2627b9a29298c31cb6437869de2a14a12689156badb5b6d65a6db5d6daafd67e3e18ed4f6badb5d6b27e8e1c3972e4c89123478e1c3972e4c89123477e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7ee619ec1cd19913036f7ae244293fe7ffff939327917e347a927c91e843a107817e1c1f04fffb9ee31ee3b7af4d125786eabd74e56454a5fe9c9c8ca6ba1555597132ea892433859a68ba2a0175602bfae69c240cee5cb9ba95cbe5f2c449324bb4c47a3b68617ffb28efaf088e8cb3cc9b2237ba7e27c46339cbbc712288b3d0edcde85ab5052d116b8379a23541fcb63bd056094b04056423f344633b7edb12687b847dc10ff70af3e42e3a7e572ee81a867a061cbfabcf8910e6c95b377e5723e8ba4485828ddf35e74f9ec3c3ef2a035d6d5077a07f579a1119e6c967347ebb13da8dd4121480c4c43c559919bf3d0adaafe05c20c06fe7119d2a4cc66fef817621b81176f8ed2ff25463fc76205a87dfce0297410ebf3d08e864577ed326547e5332984293ead028502660fca649d0fe94082f7ed31ada031c7e531c947e531a80ef28bf294cf99b0271f17b1ed9730ddabf032a7e4f99498bdf930a278dfbbec40ba07d07ed26ed9be7ce69ff17f3a4edd414dc61cc809a05d428a06647ac05881f684c470e9704b8e07069dd68f9d0eaa165a395c3430e02726ae4e81c1a2c9f71acd98c940c4a8600323019b0138c05b6032c860e03c8a1f6aca8b004c032b15e2d18af00bc00f04a79613c8ee40b2b4359952eca3db228376e516ebcc24445b95b686da7a4dc2d52ec90ec84251ebb728fe4e6b15c58c881bd60b305396e5bb9ed8cced9b577d2ad82d0ea643a9675794ed6a5a073e1665c4fceae4fb26b6ff4f2422c07e622712cae085c0dd7e2644e4eca5d6348d9f528bbf6443d9c0b3815e732eb216163d889e58c1c87ccae45d9b507c2324b70d5b45aa1199e015e61157611894ad7a0ecda0373d020db89ed68da7ac2cb550302959b0ad1d435785dee0dee8ac68af4c87640b0dcd3e7cbaeb9ecdad36aa6007bb9b8d263a9eac9a381e74a4208323d607938d0f5f7b6d2f53f2846ff0d0306ceaeb5ecdacecc13add1c06f4b9381dfd606039edf5784f0b741accb3cd1d8057e5b95057edb5505dc6350c087cc93bb4ce077e591c0ef4a2402bfab8ff6af2e0302cec2354fde7ac0effa72c0ef0a6b80fb8c20dcbfc6cc93e730e0770db280df7546013e7aa7b1c357f4cc93cf5a7efb0c88dfd5e507771e7438ce3c55991cbf5d2701bf7d080e7ff71b375c456b9e2acc87df5ed3c36f77d9f0d0bb0e1edcdf5fe6a9f620e0b7c3d4f8ed31da41ef3b68788a9d79b2ac03fca63203fca63d05f0f13d88192e649eec2bf59bdea07e531c02b8204055aa0c7f6a3351e1fb53d63c59d9e9379561f94d5b3bf8f7319c023fe649cbe1f7fc19c06ffaa27558f1efc04c094155aa7f8f89ea547e4f99007ecf1dd3ef9815863f8e99da0055a929bfe7cd9e118087314f9d4bc78d89f24abf7178d2ff720065a2b6f7c7d3e94cf5006d788d066a3250ee11032b3445698428b7d3583d7517282d5056e063d0146d51a0dccec926e022019708949bac2f83a6e80c04caeddceb01de7280b71a50cea0292a1344b99d6331a0dc7801e51eeb2ba0dc647d1a344583ec28b7fbac9e704f4bb93110e50fe52679a029cad27123534f18964326013238ca4ddea0291a73a3dcaeb18c0fb01e603660babe0e9aa22b1ecaedface10506e5c43efa0290a43a3dcae6f4e4d3900cb00ac02949bd441d014555195fa33caeddabeeae9b66a0a4dd197eb42019aa22e54a57eea857a11e025a3c4a7726396728f3b9431caed5a5bd5d316ab29344502aa52eb69abd9004d8580aad4d7613580550eab951d9572930228f7a84d258c72fba6e2004dfdd0767ad0d41054a53e0e40b93100cafa2965a9dc8e43b9c91bca17254a498486a6345775d1e49c73ced9b309d852e68cf2e5a394e5a63a9739e79c32539d737434571488f00c9982a6bfb523a0a0d055ab5b75ab6ed572f1ffffff39e7cff957802df9dfc5e77791cb4df597ff4fe32253fdd9d6d81ec0eccbbaec0f7276915d97b2194e36c3e2e4e4e4e4e4e4e4ffffff6404b6fcc949fefffce5a6faa43c39396191a93ec916c602b13336888db12978fa9279bd5e322d4824128944229d9c9c9c9048b0e58444fa3ff93f21919e4422f1b4c8549378644d68ea5267b5a782e1e4a49cd3e49a4576ed71ac2041568c46a3d168342291484f228d4ac016d26874f2a43f218d463f1a8d5e2b32d5a35c032f3e7d1a3c380bf8ddd3d7b1230808f8a97cfa4238cb47c1165a6fb0f8936751f2e0257ac34bf47578c903275f69aba56aa95ab55a2bccb477eb39f813e560bc8f5bfc97b9b799c56bd976797b30771f6670cce283f2f829527c2893bc28875e45167d49c98f3279927d14e1e2834681f148612d4dca2dde24937e4536f9515ef15ea6bacc2f4ab078147c8df24198913e95f989c26acae57e9c5daff9df2e04c7c135633d8e64b9fda5a44fbc918f21727c5feb7772d222bb4e6c088b5c675a9e729f6e60a64c942502d3d747fbf5003dc9dc778235299b648f651fe23bce935d969d48f69eec3e5ef29997fca7ba78e9fe98eb4b55e50a535735a6b2827849c64bf7cb5c673c85c607c7e99ee7c659e8cb6130f4bd3f5f082ff9bb53ed56b3d6828ee3a51c168c9bf2e010d9f40c9ac759b4771e2aa344341f6bad31f1d017bc89b237197e2249988c188a9760dca8989b289afa66ca7f86ef85a0b5dbe61bccf4c7768631115683ef43d4a08765789ef7d8c318635c55d89bc0de04f626b037815f9b276f62a6dcc7187b604be8799e879de75698faf2e3e344c6f0b9b1dc25f0b9d27572781f7e055b8678e94ebf9fe765ea71b09c184d0aeaaa0a7196d7578970b7ea84f7e7fdbaaaa7e9a57f921c47af2b77777777777777775808965ce9955de9759c8e97bceffe5e1be4abcf06a3ef6f2a0a7e0f1e31ee4db5adb617e8fb1b8c4fd4ccd1bd87bf2c786bda1c233a1a007ade1869690f04f242d52714c44bd67e8fbfc7e487b3f660b6bf5dcdd91c4b055dcb6a6175e6f84afb6d2a5d7b36d506b3da689ca5725d57bd7befdefdb97fef5d7bfabd07720f7e8f61005bf9ac7d6f860f83b7adcef092f7f889f6f84a0cf7c79f3f3753537b9504b67839a3561d5ee244ae821cf75ee21198a38ae5167f7b126ca9cf793a7c560710478ab65f13461ccff1d2b537eac95dd97f304df73d7b0fa6ca7d2dbb8dd70081aadce7b22b314df7b7ec349ad57c0598c39654454b0ae3a5ae63ad542e3db5a723755d577b6a4f37eab42ffc0e86f66c2a192b31fa76bfe90b2e2b1156d7f721eababde7a5cfdff3d56a25c34f7495b5530cfef626608b9733b6ff3675a7af9a721f16831c24623bb2300cc3300cc3300cc330f441f5f72468237ca92555754f615e7555fa27c9716cbd305eb1acb6f7755301e6f0afdc22a8bd68bfe6a9c123c6ed3adbff1875e8491e7c2e13918918874c14d53e688fe654802dddbb8eb370223047f7fe9b07e87f509de2bd3556354cd37d925c9d982af75364aac2752c37c6e3f879d7dd4f01e6f0e74a22a806dff3f29785b1354df76978eda1a9a9ab4f9ddd93b76acafd9acfa5efefd0fd4dba39f8e7afa861dcf4657eb5fee240fc65a23a7ff1177ff1177dbbef3cbc7109d8f28d200eef3b1e5fc9032c290c55d197176731f1f780b53826eea3ef5bd8c423f925185ef2b7306f00dfd3ea4363f47d9fb3ac3dd374bd017c355fbde5da539da869a83e7566573646dfa8a7fae330f7e5be371dd75a9fab3526a3be969a734e16cd035b2aae383ea8de3eefeb57778c1c5e69718977f858badf82a0efa67aa1e79cf3b579da5433e5fefc6d05f3547b2c6b08ff0352072312faee2d0676baad59357730304f740a3151f8472310c84d4458edef43d4fedd570cb678ef251154e337017bc0e568bf9065adb4f86adef4b6ad6054319e72df46068dbebf574a41f47d6badb5965aab3dd6ac5df119f19f68ad4ddfd768fc345dcb71161c7db51b7d3521fa6a36faaa5c07c7d05b6b8d3ca44644df8973b59fcf03cbbdd57cef954450cd95fbbf2e6f4236d76693b72d6fab69bacfe5ed05d374ffcb1b0ca84a8c9637562602eb5abefc463d6d413ce53e0ce78cb11d19ca846d33fade6701f6e03a05aa89bafabe9d390bce44555d4f9bcac2a8caed81f2bd0f517f8f67cca033bc44b91e7ddfca724898afdcf7170a79328ab45b1ce8fb1bd4feda3c591ccc94db4dd4d6812d1c183ef8e1d4a00eead9cedcbf21858c36f72dccc2440be340d15b600eeec19208aa43154d91aa51bb3cc4d26bb81b3d563631fa2373e332981a9d20387bcb4bf77b5c823d78d9863fce9b2a6f302b4fb9ff4f8ea3f675abd1d75b39b4d269e86f30d374dfe64da51ab7ef9e3ec65eaa3ef0f09e7baff1d27d2effa0fa2b9da6d5b582e8fb4988febed7b80154fcfd30db69f20755942577b1aa550ecae702ecc14b1e5fe943bcd2639dceb65ce933e4c3a19144fe5d717f8d3032e74bf7bd189f977fd37497c97ada549e721fe37124c9fda4bef4fd4bf7b95b7ee5e8a58bdf6a7cf5dd7a3c7086242c218a28928822fc1a7e0dbf5a01e64febfbbbbb1b61f4dcda13073ca57e5e8ae67c45277e8d2f8cc7fad2160653594db1ee3d595faa7d2f1dc64be06f7fed68557332fc503fd4b4771cf5c3d244d35ed3aa66f13cf98ecbc691dce141fff5d4db61bc643dc69bbbe2542215364daf71db181efe3fe84b9dd15416c6ae262a7cfbf60513258e2f8a0fe63d76604bd73d9dbacebc64e9d370cff6a7cacccc60327f02bd7d6fe60aca15c7537ca7d65957765e0328172a6f4ddf2740de9cbe2f236f50df3f6596bc45fafe0e3946de27fabe0e79677d7f0079bfd0f773c82b799bf47d95bc73d0f70590f70efabe296f02e8fb30f22e80be1f80bce712fa3e00f29e4ce8fb29794f28e8fba5bc6714f47d1cf29e54d0f76fc87b5e41df7f91f7cc82be8f92f7e482beef22efd984be3f4df7c18ccb3c4ed3fd9c43d374ff33394df75b64d234dd67917f9aee9f649469ba4fcaa569ba6f92614cd3fd1579659aee8f728c69ba5f92654cd37d1579c634dd17651a3cdcd0b1238869badf650850609aee935988699af65edb3d71334b594f72c491309556d1f3e68918ed6d9f672fb537287d264723e8525ba750fa4c8e5af507f3e450cc14ed5db830312121d1bbb6bcedd5788a46b51e13ad67cbe105e3aeaddb6a4dd4f71a155f7b2bc44f54147a5207c74b6d1c49f25f634191a34b7ade40d1d2d486db086d73ea49c33da48c97668fe0b7bfb51e77798af62f0ccba97961d593ab3c856661a6685f536a3d8db1368d6d1a6b029361748234321b324dda7b1a8c9e7141bf687e860c32c6b0fce506477e0de419c630684dbb258d81abf1fe8ea16550b09e9869143d6f9ed0d1d6da9fe1bf4fbc782abe121047d59ef85a8f977c9cc5c6658d30515e9827eaaa295b982c1e4d5d9a9c225a43836b0c34e277dffefda1fefd5aabcd26389bd8dfb8c79f041040943122329f1e3ac31646c5ef6d2bf9ad4445e5aeb5d96e1ea2ff41f2d4755ffb4b435354dfa7d1f3fbee41a00fe3f6a5d8e770f3b502da425f1635fd72f865f0cbdf97bd2f775fe6be8cbf7cbfbc7d59fbb2a5abaabfec5fa6ba9c5a9457fc49f25ed1545356c5697925a00bc6a9cd902184a6699308c704280a5abb82d6ae8cfbbb005a7befbeed8182eb098f311ac325aab7ada911711c8d694f87606dbe08ec81fcbcbfd9bec7a37ba0e8fb9ea8699069ea5ed45b0e67a1de32a803ea2d7f359fdeb25761b6dcc93abd65ee86d35bc62e83f596efcf16d36c34bd654b57d3d455dd639abaa7e1372aca34754f03e248d195c75b01dab0355eb20159c092e235ede9ce44815e7bdac44485afbd9dc13c51564d89c16459d1541d521304adb592d0da90278139bcbfde7dfbd7da7b6d8a6c62bf7bfba03c6613fbf7b9efed579e6cf2c9348fada9295a0c26c7bec07e7675172f3961b4cff9188203813fd8ff461087fdcfa4466bb5e5257f7921c2722f5a7719e225ec713c7e5a808551c06ffbb2e377fd69f95d7d80d0ded6d4d3024a1a735b2ae07f0749b68c2310a506fec64360e3a631138c9f7b8bbfa4452c7eef63088d77c909e3fd0e67ef7ef987d5dfd79d4a63d984fb5d02ff2bb932474983a5bb7849fb92c6d907edd1dcaf989ad6a3f938cbcc595cdce3b28f21f4771f025b486ce9836ace0a331cf8f1dfcfc403b6d2e40f18a16b8bfb1f54df07e56d84bea5498ed2f4ea108d248d57fbefda055df214ff155c5b2fb2a4bde75b0f5eae643b4ddae798ba89d5f7d6e0707ac416d8f084bbbbe6bebd055ba87bd532dd7197798f5b6f5a4c5f668a9660aa4c143dc134d9c7ba96d4250de38e21849d73a7627f7119b72ef767046dea424b305d266ad223a6a501f5d1955a233cda37c0012f59178b6ba9954278c986bcb481482f0de125fa3bd3fed4ddfbf87e8740f3f01e973e66143a89f1b7fdee3d9bc3300cc3b0ec4a708971fe2c6b4aa763c2d8b6f4767c9f37def63dac4365e983fbefbba7e10b9835349b376863070a680dd0837684ca13849e0446d408bdb7813df8a051683ba7c944fcfd25fbd6e67083f1b52d7d7cbfc327a2ea244410fa1da1f2042428228a2578010d45a03812458dd00331a246a80442f261e9e37bfb1d68c3ce1add713989d093e422688d13cc286a8ca56a5423541e117a20450031e2412010883c018da28612f84351d0f443d99638df134637b1bfffbd04a408d312c2d00326a0810a3988d500bd114960c1044ffc00091f94a00a3542a1504809ad34b1a1f288921a4048100281402010080422f912c808a0a0841920e10b67b0414d0d924ff1408a000202d912344ed8c0093c60430dd017112a818c5f020191c07c81891d249610c34d0d7f929c228f9e4267a0042bb4e00b46c8c21135fc41793a7d91c24b0e707ec09053c37fa278119a11a187622a50410b6af879a2f8e18b61f5c44f0561187a6118865e2886a1f85c18861ee7fd16dff3c217b970ea305331ac9ef8a920f444d10bbdd00bb56c737ac450d3b44eeb42af070a446c0e98230c27cadb8e98a810e3e7f08be1178a61485fd342cfa35feb7f619e3a04412c6ede267e8f378cc551c49c088af8b972730fe217c3da552a7a5fd8755d1786f5c510c4e5873118865f3f71f3364ffc36effbb65a6badb5d65a6badb5d6176b088621e769ef65fba20f79a2288a2948402307be28449242048d1c2882a2174ed4575627262a5c41188661c9c3fbf2d59e58431c82a8890a31c6e117e20f0c5710869ea6022f0cbdb07ae2a70231143dcff33cf045cf13398ff3448ef3c2f0bd2f6f3aa49a47b51584ef859e8a92bf2f96a808c5304ffd654d7bf907d5395e6bff230794a48e02c28cf6f71cb2a3a6d014a62ad5ce6a73ac1346eba5b7d6badef4f3f7eca41ed270ad9cd50cf5ef7bb5ae6aadb5d65a6badb5d65a6badb56e4178c53336e0274aa9cc8f93de64c588fc1215a2d0d314a03199fba8148b190c8ba4534423000000410193160000300c10860322b14088e24457f614800d7698505c5a349809b31849420c304831038c210000000008808008d906006fe95d2793ae5018901ac95b9570f03c59f0d56976b39da2f8d74f41d42a8bf4e62011b155e0bc5f9e0f2f8f70d0eca9142002642c50133b68826c6e99ebcaf9f4ce77ba0ca062fb4c4e272088d5054ce523c769b2a29e75cbd73cac648473f8745de32fcd62eed505dae605b48d39291f330cd0d279a03d5085d3d3695b72b22ef67375f3173359c283c7cfb89158b5971002a7369ef4f089910469e223e04c5bbc4f16684262c090fa8afefb1f924dd40022e2340ef781c3a32527d85b17014b7eec313e90a5e153127cd4ed1dd6f377b1ea71a1a9b2066dbdcab41eedd7ef348f75ce7937d5602835b86c4671abb0a9661b4ec96313d1999e604722428885d4122b8405e451c0f812b07b3d16259672b13934f09f8be03ef43c7d738c8a6ba439b064374cda73e93234232bcd3610b7d9e17f2e2d017fd25e13f43121269c86d31bbf540a8afe9c0f51e0b62b0c5d5f203f50aa45c1e5b41dd9d5da8ba46741ab683d80192a9678c37952e3474915603537a3e4a6b72f1d3f1b9f3bd6ecc37ddf681b122b3fb481bb587217302952ea9beba0d7f8676792e766630b69acd842b31ce56d7fb70cfb33506b3bf34293ae491de1cd86b514b26a2e721c022d186049061506698e7b29f39dd0792d68978a5a0ae4e97398c23006b6486cb4dc2e2996d0f864eeef4c55164c5c048791ad2cf21df8fb4f7c8d6aa41dda6575967024d44a4e06d0b08c460607cb8891193edc84322ccc32ec2519ca87cf82a96008f174edbc1f638544edbc03a5b876ce05a9edd693c913a30e373d5ba31a7ddf6690926feb293f44e323033a925ce49e421f0f5797c428ad42029f403b4285b867cef7ff20dfbf43e450746899bc2f3c8909e46276a0fed24242900aed98fb537126344c94c79bc3636f6ca1e62788c459d9bf4c7940b1efe623f41c5d6009856a1bb9b4e714fb41054138228dc1d3570c1fe636a759e4554429cc162d0cfb3fc5dfba3ad4a389629945dd3e9f32b9cbeba403c46db57738c5caa48867cd46e9534a326156218e91e28c614e936ceb963976af654bf4541e2abc97f0dd587d2cbce06b11ac24f32aa4df6e13a730b911de1e280258f3ecdb4c7396d9ede8ac88d5b35fdfce7890928971dea215798089960c46708b59a4433138bd9d51a72a42c9782b5fcd1d97bc8e58773f8718014a4204fd0e736ef4c90ee34ce848b51cedef1dacb4c5925491a41c0d86a0b021d4dee05be9925129bcab28d60eb79c9faeb306fa619dbbd9896b397f3c9b6779ec8457875b0bb1b739c3ed65c89e36bbaf35f52b125dba163264d6007bb41cdf4f8644b93bed98869d72e5c5b7f5209628401ae1bc12faf488480e8aab511751f986e912b104320eb138240a913d320611ea5404d242aaf823dbc1e8c3e290d843f6c8c843a85371470ba9a28ecdf4161ecc52e7dc8e5db84f268e00c9bcb1f36d92364eead6dba352e2651927cb161606c03265735c5eaa4151f87ce491cf455378443098a98e42b75ad395555c3878cc51f20aaa1f3152a5b0ced46afea73f66584d963925b98d0781c0ed28ea53d661295a735708a47bf42d2704684d2378b2c4fef587c2e448a6e3179a1f09f6232272690ac7d7bc8307fadfb4c61aae3828b32773c0455c71054a12aa49cf7ab2028756d55c7658c02afbdcf24f10b25d47ac93ac10f52ac760a004b90d28b768dc39bf792c80421be2374e6beeeccb028c24045bebf81819d62c57a662fea695e21ae7f1f3a6b585260f77281f19e73e3f04e1082140f6e691eef0c15be3f1621eb259bf63624cd2abcde830d4ceaaaba1306306e80c110b063cf0a8710e7d0f2e486ec280c5393648ce558967168408d49c840a5c2aac0433ac1773cf8c788134cd6645896791099da451e1ce744c8291c83829cd719f8c40fabb69433b346d7dade58bc7057315ad18889b62a99f551cdc547d24d58284e2cdbda5df9b19a43d52e249660511ea9a7eadda777bf0a8fe596d80901e702d1c74d4a15177b6b4d3c2a9a0f8da9d60d54231d0c3ebcd7f512c832a0006c53b31858b4440bf22597b3ea187fbe786fb88c4bcd16a75c2f3686f9ea8491c09716b66a9f6daf07882122a12abf09d7c729cf6a82268af7df8c6dd4efb4b0d6484d6e2d3142e876e0883b450c8f48a3c1f818ef5aaf69ae5d2817f097abd9382c4ed0084af747e0c14a8f9c800772eb19bc93c042d4671643a07a6bdf9fc4ac53b955ce90021be51308d835030cad0501a984919a801725d5b5bfe6adf6996eed6cbe5218e7861c7a0e2616a7f9a19d700d41a950440eefe44e160c7045f546d75042ba4f08e53c81e0d9b3f234faca4972c2e9730b225b5d0139ee0f856c4f11a5cdc7ffba7070b7d88347319a0e35d499e0ed93d5d6f1f320f612c769d8bfa7b580dd6d283320449a78e383b74925ab50aec4a50e5c71081409dc39a728fc2270c07293c66f17c77fdb69ca1768673c91dbc17d90b97f34f724c924ecb418b1c86878053d858eeb49e28ce95fd8580e354d747e72b35e0056bc03f0be3e0d1a704c7e79adaea02864c6fbf8ab04f4430b1c08a0d75d95858416ee37ce90d9a132b6dfed5b787c6ae1758f936e1833c1d46a00406d0d10a85dbdc3f9114b07df061e6888f3f152969dfbcdfb1a3c01324a059c343f5f76f6be4c5a0adf0de0aa8cbc81306b52eeb206627f4264ff16fa555289de7e70331716b1c826d79ec67b73f82512d686074915bc87ab104e2cfb6e438a19225b11171bb082167de5cef01a9b438dfb4dd3676480ac622a4db17d0a89258a155f4dc4697daa96990a20353c14571579c07a5ad5c5d2e85b3a8720a849e5124517293fd4c651256ce2ed5424052497899925f8e4bd308277acf87f68031885069cc01cc6e5026ddd6acecf97e42ca8c312c42429473d787b1eacb2114da0ae42ee592dc011570fb7331fe47942e7835a479fd7a716f8b14246840b8619335fde257bed556451bf57b6e915b7722d0559be436e808f50e372a70c9c028946cc288d75d7eaec11ee891c8822b0b3f01017c605f3ebba6899a207bb72c8cb4637502a8ca22bde5f3fb4307dbc06c359ace0b753a4cc6317fc281b52a55051e57b8c444a2e4ef6dd3369ce6a18acc12684b66b945faf17c437fa5880c8e907724cb4a60f40565e02ae9ee654153e92d29cfbcf63964645a3006f8590af53cc14c2f2ae40223edf94f049db13a24e0566996696912459d1bc97b5204fb2d1903ded909ea7aab159c90a6e499474482517cd1a3224ab60c4ac88a07aeef93197da77b3f8ec49aecdcd943e221f97a33313c01b4d43d50e13f254b47586bc07f9bc89f8ceea565d4bea030105eb2c303eee250308e42bfd3aa6029cf1ba52f994c4ca2d9bf61a8f32b6ee89625f9d15546a294621910d11c93d2c89055f754d7b04736b03ad0abd35aaf1afe23c888747819cd1c0f287844f579b6224bd02ff635bbeb14646b193d97c35cecb1ac95f035b11aec5514604ff2c6f0766cdd011158d05677364336275c7972fa17c214c0aa69ebb7798d80f3e379816f0b6a9dcb5955a493b6e8c61ca33a839373aae6fd1bd44887eceea87e9b8e6ed454b8da990faf5759d83937f7486656d499ddc910b0c74ef5c81b8ca1831da70454f41a7fd1e53cceee5d535f4338a900677b85a969989b7025cac4afb6d0c16d89c2ff8db2bbc1fccd7071a295afa7de56d49f4a6338fe77a9327070e22bd499d943aef5419c6b516a49c30a6a445ee11ff99cbf98d38461000c41bd9af2f11c125fc12fade2f1d8a043de3037c84466759068ebfdaa04970570d308ca1a18de740f9c9c976403d205c24fee2008552b81cc9bd49c96d31bd07a425c252ce5b84ef60f0df29effd7123a8d955115713eafe6bf01063b6493031fcd725decc267c96d46edbbe03c7ee77ce8f68d62012f7fdb93cbb52840bacc1ece39630d9d475f311f5d93aacaa81fcbda67193956f0ff937006b951c635b7394696e9bed67d0bd52af2e5d0d37013f11b78b64622e21905cb88ade074be3e5bf264993a7c897d8da9ddd35ae9dd7177b976a5c0e0197a1f03556bb0453e996aed502581900b380a726c1b6d59e14a146a3c8eee1970abf00c885980dcb8df6beeed3d5c195f98b661e84d4078c2d20e8650344609eb52672698c467bc1126b64f42fa0e30159af1e3d3dae4002eb421709358bf4c459d2b7460472ce33f30038ead6546f170b7501dc4315017e476983794cff2cbf8428c8ceb5d7007f0564488913337f5411ab15589f15cf40bf850400344bcdb4e42c25f5ad10f2aacb3580f0ed8eb6fc463428521163ef1b16f072b4e869275beca8bbab8386a94dcf0ff6a2c82c9309a402527d79cc11cfb2d5bbe862b0cab9569c7ae564d4a16cd73010067a71eb14057189983b79ee37bcd64e703af5398f9cdbb30ef26aad2df0f0c5fd59ee52fa27b7ff1e90003ea2a2340023dc040d3d1a6a6e3719a7f6175d4cda7d45f28e063a35b4c39a02f5e38206577f4eb5eed33726ed07f85f7801856552207e8395f6ca8c9402e3648a1bfd1149b89eb371ae1861fdf94be40c1d387a22ef7842e51f21275ae7a467b3cbc8fb433b77c97fe64b3aaf42a800b7ef1312f193894f8452657f3244eaf6cf5b18b327a6c962ae7cfe1d16766729858f4c210c77cb9c2dd2bb7e2af0121e10564407940b41c7cb58ba2d3da6a542ea23583f8c7560a7a8e41ccda8f765b72ff705046f213162dd20db951290de8029a4bd41b5bc915542f731806778eb1893ef5cae05fedf93e0ee25813cb694dece2b62fd0e2357894b5b14984246c72778102a751ecf839c05f3d2e41bcadf83075cec463d290ca607e0ecb942cc8f31dfe611bb130f760a4b9402a62bbbd23b8e1025eb5223af1b23b070de66f01befea40dea0156fd8d77824443b143e7990dd886860b72d15fca58194329ef72697a65d72987cd451c604aa9b28e2d87452005d91e72ac23ce6b495d907185822390b576d53da8b317d6c71315806c8852988effc168833ace16be04e4dee5759960f05f83a1baffa25593f1d80a625483ae329e249d2080b49ac7ebf149556bbcbac40b560b3729e896f8737cb47b9f60772c5f3c98e83d50bb8c21de09a91cd5f812ad5ab5a93b5b515496522be551c76532e64455a46fa6df45405fb4366785ddd0418005e89d758a0fe67a16089723f1ebebfd9c8fb489d8df5ae589ebd4ab5a41223ca897027a2415118bef994c82522a2093755771d9c7e85d0dcb0803321921a21a7b114a6f5e642d6aa960d639d289fe9482350d2c456bce7630d1b52219a1acc98a051305da4bcbe0258f38da44b59c6dc3f11cabdf3d52b3f723854853bfad8a5014df47886a9fbacdc358e6c28a3a80f2261412249f1da13e17d142cac8dfc900bda6aba14745e066ba0cf24aca444b4d40e893bfd864f3c7cbc28c7f2b95f23dbdbcb2b1d1c1cac129a7468381b20fb4b4d00bdfa615441cd4aaf293c4111b34f09a9a3e274724e5f94b5c641b1d5fa4652764ecd46232ac415627401c47b72f0be6ee266e67c78d2d846cd095caa5416cd468c99d8addbcc4491e02e3c44f94084daef3142754ec31f9e9fa6397e1de173f34334b6e90a902cd638c128bb898f3700f683fd89cb3d72b0d50b2d65eabab6ba1938052a51da6ad7438b397ee4ea3e11ae4d285a256017256ef6cd5688ce74528421479fb2aed76747b451e0c20747c3a41d581340bf39858b1416154954bc1c432d77578b13b41702545b42110dd41b5bac06e4c0b76966ba136d665479fc333caf0363961c4c03f03a2bbf194f03202b48385be50197d35be51b7d62ea0745d3bb9cdb008b709f351cec67b4e494fe3bb4224aae0adb0b2d948b04398e99eeb1127d1f33e871666f308e0adcd4819a2ac2835c904e14965a7eddbab3fc79a9985b8cf43b998af87fe3ad76206992a9d2ef5686ec096064e633fb02c66d0a947fece7e0d5566a9e2b0b658dbbdedec03b6f10f0a768ab443e2beca12013628dbd769a5a98b26314576fa2dab6bae6cc7d76b66ec05b6ec688416cbdf961a55128669eab834ac666e57f09385cfeadb02c56c4675d95a1383ec0c2ea371e693cbaa1e9a18dfed592597e18a56d1510c92a9118fd72b45432ba54b4f0f5008f0bd28c8f1f24459849e63cce60270df2962ff81c3c567c184aead55d30934e199c275eefcd8af75e85c123af1d30f316ec564e3249f48e8eebbdcab1a75ef9cbec3c1a26953189a28ce7141816339a845a019ca2956268b35cefb4b5d6ebe98df1adb7f8f691df4456a87230bf430abf8ccc53222693b3b27af51a93583ab5a292d256e7328ff029ab810f742733911bd96f29aafff807d7ee234bcc84f9954a970d043f221d0d75796f1ceffd409cf9844dd42d47f1d50f15910f7cc14e20a880ef2fabeb8fec6d75398268b3c5b6bcb5a05239edd9ebb4e12a61435598b30308398a39a3081d06cb1c0d6ddaa1f27028868028a1a30261486b1643c9199b7f99bad8822cc396521e4cd77b435e3b6e1d9415ac0e9d3fcc21e3663dd1303ddc52cdca362bf72c97d9f2827105bf5a4100c6cd37df23f8b5a87307ea530a90a05a6820054d405341e58e83b10a5222cc10f80fbf461b1aaee379b7154d558951234fd34ce1192f5f61e7a2af47e8cfcb8b8ee9ac4507115b5c9b47a5c757ef032ad90ef6f47233dc868bbb72fb72ca35cc3376d155c69a63b15be7068613b0e940617aa9b5095c1bd4451f2c79fe8e9989a64a5de29074cd2e5e4b472257b37d9ea3e823393fca6932af5b9625d29798e18e54ac591a5cb12a8b0b41ae5a46c2cadb66264e7517d1fe14b21736581c011f2a8b28c6fc501b4df4fdb3e3a15797c4b4a9a5bad2a8240792c60978bd1b47270a6595b119cc94f7d9cb48dad22603f84d8f1ece3446b62f115aeb6c8ae1636209a1d2034e6e4178589ded2ac8b80091f4a771a5c808cc2b702683547161c886fbcb6e095ce1f80c3a09cb1183a6472ed221a15d0e0d6e6cd3e03629cb893274963311ff521108e11952ae3939bd2a3e952f10f558376cd609f2e8b9f66542f24dfa19fe088de39355a9c9e731a7cd0c246377f6c8e8415b4dc09f2c4523f88024b625f1976bfa450375da9323a7433f504ccca349f187e82f22efbc42cc95f01204709831750df3f543b4fc7e397a5ca49f7c18018820e16f42b8960e1a61e0d5628030bba53eeb4abb7ea1a8e85d98089f2f4cd42f11749071d95bfa5e48e8acb5631a0071959219bc96594698bee0f51153df7991810d2f089417a18cc7791f99a86f44c23c2bb58b4ddeefab7d02c72c9023a402f2ef4fb91d055822b2089d57876b4c80731cabc7d23e3fcf040dff3d39c849b1ca64c92ff897bbe37c1f3365c07ec9bdfa66a4ad834a44169b272695a0878010a87e39a310c93d1ed5dd17daccb0914987177c784a4010c3373c4a0fe5e4ff5206692f62e5dc4dc3dff604f7b22ea7e3a05138d58e432627e2710302df073ec5bc11daa60a7d38d4aefee8d0042876a9377496e368d83e2a4336ae702ddabaa016b539ef62eeaffa07dd6cf26ace206974ff27fdc0c1ad4ca38555127fe5de7fe5ae6fb537bcb0631018d44b590c37a2ac4d7f84cb0adca8a10212b4b1f0357d63dae669ee8069dc25447cf5b1122f16b53ec4392d4e3f60b4d2f13911a13f1117349af9828b0712e93a2a73de859f556dc06f539067a7e18ce5d85a3534959c505400d853231b74263111c574aee2f9a94ca47beb945a515e0d01e72daf401b0215b1c2c0985cf4067979b941097dcb69b345125871e4182b99969c86ab1887bf9c00a80552379967ed34a6bbf621efa198c927f19e6146a56c916f36b3221f3aab8a1b58f808e55e05d21fbf3b6b46fcbba91853c85be2bfa26f0a456a7090887cabc902d8382948537639629997c8a7d6e52c3f38e7faf2c25caa4eeeb55545da8f75ab28d49343fe40554b0567950447e07f8c178b0e63f5ae8eeb7c612cb322a605df6852d1ea2278a291525b74b332591455554061bb290c88ea0e7c0dfde8fbcf6cc1888f23b381ad0c36eef2d97098cfbcdbc6429bd8bd692c191e0cf4014ed18eaad816f899d14cfa50944204af72417aedaf432b17c6165d5120444060a0d12a6f2f0d5926662ac94ea00d167fb4476bf523eec95771e07961eb706d470c2b00d5fa9a83c0b95da9302989283897339f59a7851e06e0e8977bc78932edff478209c0dcfbf1646445833c914906f37b2b30517d11a4759100e9e97c7dd8aa72f81c56c6a5edbf51691aa087dc5c88ad4c2943267ec305e42c234c2f41ae770b53e4aeba715b50f8c6288ff94ad332bfe93038b995825e528acb43537c6a6300f2ce10314484cb8ebeb81f5836ac14ce79abc35f08d984a504aa8a4430d95248c5a5a716c63c02b89d4f4fad3ee28ba36dac3a7cdefb5bd81d8864dc55640a258d76e4a6e3f337ce20e3128cfba9e398d9e3521b7cdd74978c36937c75668e975e1b06b104aebbd5bd01900b36f9d6afd901ebda7c15fbb5fe3d9825c9dd2f0cfe0bca8267126af2126aad4f6471b7a94e51cee207ad2fc5b46f953685e2290af5d09aa364c5d9289b89b91228b333685e6c66a734ac0b2091fa64e471070a5d4c99cf968dd301f2adae3444597ed1bb2080d75f725075f53a75fadb55426d74649aaf8334dc8ba08fdfc37ed08589a7c73e24ee31bcbad254f73775a26c611aa1f8db3e4b6353ee76a6e9d5c5f8004e2f41bfd5222b10143c7ee5d9f019aa62694173f9dcf7af4113c96341e7db1f5493b1e35a3914b315ba982ac55a305a6d014c723bf77ba9a8ea332e050f2a54fa5c4099d69355fe3437571faa27e51d7105278fd61ec75844ee458d3c8dfececa2638d72a2d0f08b98a618a7bb4b96fbc0a442cbfa92906362c4d28646298de3c82c3b84af0d0f428bea5cfa1776fbf6ceace9ef9f794deee15fdd0f832fd066a197943570e7bc779983f9ef0cfb9964a973508c00e0a1ec6cddba83f65cb0f6da46f0533a231a6390bed7a1563409a1b7c2a39dedeacc6a26aec242c203c0f39037cb1882d3395c87b86f8a33aa7a27e3d093a3b08d9bb58ec51df747c5a3f8688d01592bed46a8e345766323a50c840bbb1b945361fcb04b5939b92cfeac040ed745d521698146505310302cb06830df1d44ed4f37468b87291b7c3bb879e8982f22dfb080e2827d35455e85d817768b0b676265890985e0be1b793805c45778e3c22e4ce2674c7cba4f0e0c6d63cc779495e5bb2545f98e2b393cb7347c07ac2797bf9364ffb7e9c2040c12179f383ee751cde77bae047390c82f8585dcebaf2ebd045ce2fbbe9d57c92c344191a309f04cba4c6e2aa35bcd86e2ec208ec28465f218246ee3b8113ce0e66e845a7be9a2670cc76667fd522a29fb88b8d7ebf84ebc2e473a9caebe707e8f1252f34313820f567de7ca0605472f6a22d6b4405e457a5a79c3d49110ee7a4e4a01eb8f82afe9a1cb54a32304c628f9582276e9418a863a62664979a29038ae4441df46dc4aaf843883e4e3ba0694288bd39e4e8e3aba1382678bf0e8de4bf974df7a2145dfb4f4be3ea12db4be87dd131d8885a7ef56028b2076822917a2024d41a963c4434d8261310f6c058d6942371d6667ff460d6f87a1a398c0ec763257d7373e3498044cbe11042b8614fec90955ad578963bfe1a03c588f54ef31485aca7a13e983d113051ef0d9adddc73a01714942621dd8c7e141b04eed7b2de78b6ae967da68a58547be382d9f57d93738101d297bb626fe586f3d239f60a05f8263bfbc13e3743291b8b92a727d199ad37952b80f69a752c150f07e7332ec2a91cd9981c393e6c5950fc9f41b7c24e042e1caa99faf680480dc80cbbc96bcbcebf3d97abc8e48d0dc315dd8e9b8dcc32c0478ffea25a72b7aab7f208162105329a10edc587c95e3d40766eb070505e84a365b2781319d08c957cd9e4da93a826c4a85161b36c7693fcfdbc4100503d4a17075bf2fe354fda6aeb24107ebb550b80b920bac2b8ecf88b0bb91c1c696f12d85dd66e943d702d5430f044389ed97b9a00ee5cf0ed1139f9eacc29360377c6839d90e8bfb7a57e39ac4adfaddb439db7a20cbe29f67f8b8dc38a362e68241481169bbeda009163360bdde2fe4ad960212d0756a54115e8b23c854210ceee140e440894e662b330e69895978dcecb4d012bb0868e30e2b10213bcf2ea01960383334068aee1b4806dddbc07b1d8d4412aed048bd3085dc80ee8487714d34a8babdd53dc8dd99c951c831f0cbba2a7c49f6cd1725d760962d792efa3e1ef0d7c1d9b5b6528d3677dfafa4fc6ff947ef9ae345660212287d764169f82fbad583287c542043cff1eb73f6fcec4e74133d7b83b8f15921df0d44d2eb892e8f6c2756ca60d5a44c0a9237a48e7034f4903151387be3c35d5e818fe498919aa22d781f46138aa3123e3c5d0a4cf32b277ea9fa6935074eb540963187255965fe5d573fde17957b59773df7247b031eae3afd89eed6acce729facd025ad2379b18bc2172ec1c77e75437c7449476bba674a97fc0ca289aec7f127dc2d25c38e83a7644a156cc06a0c98212a65aab8c8be1f0c2853d36c1358a7983db290b37b5045be4a56aa43aeed45b5dc558ce895650359d1054d46df10db69690d962a386b1557b7c7b9d98acb6ac35f8a48e1ea6f8ab22dec80c2e3200e57bdd94110574fb151fdd90d576fe20fb3c3f88eb0b8e10a4f208b131a94109cb11a460cb60263da0d6daaa6afb723d82e379b1e99521703cb83f30909b690d2923740e06ae1d74c15f0be68720fed799ee894273a7b3d0a4f9d608cff4e04caf389dc1714bb313302f88c69b1246018f28073aae7e8b501da60b3e4b8e08e8d1caa8e237de61bd598ab8a3c09200051259981837a7b9d8e51ba2417d330e353e9eb6051dd450bcbf39d60c13a2e81e38aa11e0eac142277d16e7e7c4f5e8908f4bc8d396f536f925dbfc4b4805b0985fe8f0dd2c184ff6f989b9eb47c3f71d71f50bf90a6ea01314800e3a708d9581c6872bb76c782e7002526d571197f0074e86eb0ac4cad1a4f5f2ff2d80b473dfffe82f7f6b19c782e34fb531cef37fa53578b0e4785846c2068cb53c5094d1596d30638fa1ec227f02bf5efbf968713b231c33f0a52e9d7934913d62bd0755c16e56ba4c461fac18c4564677c221b5af6a149c1e6438da83aa46a3e90e2c7da0c51501a4a93718d0e066c41ee7632dae96164e82cc57ba57632f4368ad2317fcc91456cf2882cffec631e8af0d80cc3345589b49889339b01e9e5dedf4436c34776f980c4deefd144f738a70f7fa2fa1ee5d9be88ca6b4bb774f336b36cd36d55e98a1164ed237554e58b634bc95b316aa894a4eaeba00eeb085b2840bfc787a9362ae1d1a9b2ca951177cfd83914ab3084e016e89f17d9c6d3c6025a6bafde3eb79a0a26761163fbe546be01a17a79e8f3ae5b612ffc42b6c1d85e711b460348730335c49ae55ddcd7e97d81fb6692d3925cf13295a74fbb0d3891c8e1ac561495a05095e3fba95f012eb6ea40ae9bb27f7b06cb32b57d4bda6d08432f353c839116f60b2ad860d6d037a2c03667960f938cbe962d7d395d9ef17e43e59a5f1a88e93b867be76e70cfa5d83a01af57b1b55ba40ddd3a581cfd43330e858fe47337e6e3fedbf708ef0a82a3bd6ccbb563552bea2ba45ec1be1aeb69f394c1044e5406ca8d003afbdf73e2015750e6950c160d31dd2d73cea09f638c9f62abc45585aadfcc943e3ae60b71e4705264c7497294b4e859bd2bdec49e8824cbb2b76806b68d56746728057b3b550715a3908158becae1eeacd2e3709d3ec157225a7d12d2f57b00e68af34310853328f90f9ba273a42de285dac0734e45535969b00e2f20d44d53822b5e3de1e00d7278643c9950e1d4bf91cac594a373594e44ec661dcc42398591e121cd7af5ed47a199b8d1ed89dd880da4d5ccbde5291b4b7fac77c9a5368c3529376c2fea0d46d448ac54399e2ffe6632b4177230610f4aeb98d611434e52648ea950a8ac40a24fbf36c551520cedd4313191d1af4bd18d622082dbae509669997ab2a6ecf6115d47e76417c0e7ff922eb5d6c02f05f73546413f4751318d5196c651ec4c89bff83add6f1479fce9302b9bae52b376d2a305299c83253f535466de8e16387989571e7e847b06ebac5e38d286fabb0de5c9eec1af803b65b628effa9a293d2c99b2826c6b511fc4dfd2190c8165e0a4e322270bd7e6658dacc209c7731c9df857b5d374b45f8be7e1ccd58001dc14547125f911a03d946311efc83137da11770c03aa483b4fc3f344c6b3c671667e6b29a1871af064b97329092f882875c6f27eb6910c8a658d2abfa07f6bae38101a9933f5cf4b787074f62333d12e584096ca6bbab04f76c6b77766515e429c2dec29224b799ab78c8c2d2586cf9b8c12e91ed3661d2efdd3d3157dc3cc6c701e7d13a71bc46d32b342accc34968b3c04cc1b444891c1092976b6569ba4373f6e8d1833b7ca84cf8d5c564c8cebb849c6bc0d9d62569b38e7a33002af4ed118ee5048eca2c88f24647c2cdfc43ff19ae42d93ab4d44042ca2bb22861cf6c9296adf0febc5bbd6260d3e49ef720c6ffa048c857d01c78e7d0162e39f0063635f80d8705f80d8f8072056fc876c174f03bd40d48b41bd20e889815e10e9c1406f10f562a017c47a62a0f7033d17eaf5413d17e82104f42ee5ee7c0d9172b310a328237b1f24ca214bc187f9b3fc56103d61455d7a792e61be42ab8619acc6223a9c6b9cc3d0995b05de6f2c7838909b4d8f60c289d02952c5a7086755af56f70428eaba76c50f446a993bac461ed313ccf080e14197d127b7160e7a4a984f5afa4acc23c47d963c67caf52c108c7d04e69181c8e309a30f6f9d89f9ec42674e8ce7e4ea1e461b91cd418ed3524743003bf0a4567afdf84fff005b8acd8df240bee1d620e2302d3d61ffa2f666b294628ae907e8d4167816b528999b5efb11d9c925053777ab7c797ad7b727d6229d601adb98c0507b32e334d5bde8ca98aad9930cbaa8161693336351ab6ee19489bc347e6f1f0892a529e442d75137ee0ebecf0b4540b81022b029643e1f4993e6440ce3b4e5b8a08748dcb7a9089fda2485208b43d9e9cd8a4f1f041059b6911d42423604b6c703c9952484a75e6af8b6519fd706ac795cf80f312d5a45c8ec926eac8a90930bddfe43e80287fca9dc437ba8c76ee9bf58d8354466ecdf2555cc19553cd899e3e266a172f9d34022f54c2922b7d3037ec40ff424fc807cf288134b5bc9e3998b1f8f4dab0dc8379fa7f01db0683c060948a66f953605d4a3abcb9b2c37f800c521b13b4b3fe781c4b4e8f3c7dc12092b91c09a78e69524b7f4f3879d17c1aa44e6734bcf990b97272514917a58442b817a18a5b0ef9283cfa484e4d9c2f4627850253cf99283cf9c97e4d96a7aa1d3d0ead0394bccfc25079f4955c9b3e8f461b83a09a60817c17af9ea6971f7e5248d7e9693fba18d985689987cfc637a21398e17989d31a23e3799c24e0ea0f42f8cf4a589b94e86006e85707a2bed1e5c403b4729dea3660fbf27ee4a8060790eb1c46df348a44161b9c4921570aa67585f54714d50a6f437601a090e2dcec6d3d9312275a3eace457d0f9aa5a72b4b19d2a886d35c29952c64da4de38d6a77b01abefcba1d6b38c3800a3e80599a9d2895149e6b6fa9744cb1f1b66f29fb9abaf02ddf017d52bda4a8a998ca0f15972aa6755d2e2658a4794749b94fc99d8af84c70a7f74c91d679205570f316b80b319b201d7c36a17be0bff4d0cdf46a9cc48815c9f36609eaa358911eb90c627662ba13898e804c878abc3bfdda569fe64ee581e04e3ad0bc2ed1700b7aaa152c9f941d389fc04288557ae5760a43506e944e502f0cd6d31b728262271d7fc4634bc6fc3a77eca1dc38d6977aa871013f948060619ba81e9c9734aa2869b91abd17872a2f0487d280e68089a655d0ff6dbc7fe478e3e1489f1ed31b0fcf6dd1cd27fc512faf35149982b905b0d1a226ac03e48a5c40995473522bc67145513c4ef3dd4447d463b9f6f35601395c4ea5904e8afd630dee7a880d354deaddebddd4beb9e86e8b8d72a51c5384ba1fe2e837a56e1c67b7a298c5467ae930887b085026dd86af356159f183b85338e04119f9e23122570d3ec8f72f3e75f8718870823ac3a0181190b4904a0aa0ee167100c0916c6511259b9fb05e88fe11d3f437b90a15af2a6fe0f3fcbe6266a472cc57cb371ff1fd2d7ac93faef4242615f24163009910c727b174aaf7f30f30cde2f5e789834b9b1836b9300ff4cfb1999de3d9ff9e662b5357a5927ee43ca0b11624b76f5a23d71164f3f370ceffad874cf984eaf3e621e30f3fecdc87096d4125138b9527a330b8e74140d206b95f7ea85e334617c77bcab65c5ede1935f4e01ed7875ab8ba3cf88ffeff2f5889577e0fd0b621429934618150608e606e8fb50667c0a80ac72f4536ac03d47ff355dc974eb9673b7965ab010dfd873391997f27085eb44578d2e7129d0b265376e14a20c2a653170713c13289abd74500b2b5529fe213590a4b6487044017d52dde851bd277069cf8f46bbc64c0042f10cb110d9aa0586c07223a796b9f006c447294bd786fa650821713a5c79784a6e0cdc53a4f54108ffa0a53497c8bfcc277c34b7a2be8b508bad92f3e1a7c33d7c4867d432d705d8c8e86dc8275813b9c88e08d1e187010c9b509c6783f3509a8f8e8361c066e13f3708b4178385f860af11d05753d6ec15de3cac0cdd5ee070cf36f8823ca782fa4812ba230e5c3dc2dc802008330bcd55babffbdb2c1d26686c736b0c0a45892da255fd23678aea0d63af04ef8d934454dfc16dd3ac299c4013dba372f4a4eec1efa73193c790c43f9b37eb5695a1c4de0b88965fa485c209d1d49719c5eef1b89097da77c8f8cd4f11de32edb2899fb4fe652c150b8f82b40bf6811188f61be0257ca19a838915d8760bdbcc57ea890d35b3ffec08cacaaa8ba4de90da0bdf1150becfb330a5b437a37c8119206f492f3c35986f602da9b8c2c5cd8b2a531170f38a9c1acd8e220116c76948bdb146f35cf58ac061c2491ed396437341a70a3295bc49ca348344972ed62e8a3aba0cd81bf7f1a47a5ad224212140ba0dec7e4e0334df11b3d50c292b002798ed7e439b97e6632d6860d0565b4cd4264d28d152c883ad1ab6c14f60ee01c910d499e8cc9b6fb159483ca9ac4b30a80ee8148983ee0155c388ac40af61a321ea990c4dc80c037af918fff8cf82fa625e57ee4e4b6d3d7440bb02d73aee4225815a67969ad0b99aceb46821f8e78d544a1088aa727ee0a9334f18357e641b44db04bf1f443d4c0d5fd758ae3b4d1ad62a8b5b1933cdd9b25ef89c21da10cc672b499f24e6305a10b5997bd165d450a004ab0428ebc224148092f7f66f475a239d06d8404544199d75eca1cd6818f3f354d0d7d88ee5ed01c3a67be0235cb4afe5c7d144b76fcf7fb69dbc6a0cff6d5c0ca56c2fa02f3b564b47f79e2e8ceb097f65ca4d12848a6433f548d22a11f8389c6c56d49741e102b11fe8ca78be9852bb12d95e6f4cc10e00ad93bc899d23f4e682c52504e5c5f7ea8eb08bbb1b00ae4df638d5bb840232cb15d0e50965ae03815d1e4c0a3a402012e6ed5a28222b42e0a741b802608ef5f088e6d1b07850c2b425bbcdb7e73ce18d25a2650dfe72fe0e7ad2c84a8074f3378c7a0f2831182a56942c820e7877c0142507cd8db64486d19fba8a7d20fabf1bbe0bc256447c79612a3b1b0a244a5e9956afd44710d10b92e40017e27d8be8ab21dd7f914642313250b2b92e819d610a3869c4cb46c045c9e5df79ed2b3a3992b0948988c49b36a7478d5f465f0b78bac2600fb6d98f01084bda04eb78c4db4dbdb361b30ef4de38141ad40a3195c4606df68dcb83b4fe9ecd0b88504094e4f4df507c4cdcafcd1473698c87410b24c42f689f905280a01296421a3ed304530a9bd6ca6bf4d83b2443531c356730cf37f25924d204b092538cc82a5e86ea502f250f55c3541fb43f9704e34e7020c5df595e7cf6223978a869009280d8c19bff32f892c2d5b4818c1698a2d44b7955afd130c139f11243b61fffa696ebe5858b9e77b4d90de4e34fe39fb1be935484dbfac13e6364b69bbaf46dbae2cf8c219e679122f239252bb06a3525f1ee8780611dfe9900dca83149089098a35b83c5925955a2f5538b51925ed3a0d2f7b99e80a52b8e7098ead64ab6dfaa982b0579d5d09b2e15888066836391e0e0632e8546087a0186ec331c7ef3c4ab38fa2d62464e8b792adb6e9072a1f1e03bb445c4f83b725c73f18481ee23ca532eb311ca78654f2922aad0853e2778862553634f6c69fe8ff95a63fc5ac254a5031459eaadd0755cd6cde073b496a480e2f92df9e115ba7d0304483cad04c2a7912d079086a25e31085f61ad924b9218ffbf0989120ebdbca4c1b6999d5644bbb01f25b3f360bddf14be3d071d4d54200659b42bb2752ee6192bc6978cbadeec8ed994342140888e54c2d06b60e4c43ba5ea8807651f901ff8f21b40c3652aff70a9807d57755013600a79e000479862a55a5ae4d30c08562dac63c05293b76821895acf171c6733d4ab39f22eb126410b28d32e92e13a855f5790fafed32e861fa5210de5f3fc6c1d5841a0f728d0197742a9939f30e481e5886c73195194efa6cc1e54a831d63e271dd57c9ecd1ec92441c92c842a5f9030c6c23f48c61a506d1bcb9668b28603022add3c0aeda44b527f3c915ec8a893db83c28e25e32ebfb43d6890d603d2945a5ab96403477ff053b2eef79305d21583f255583a5e8b0686cac4931654b14b6d15d0d37a1748187c4673244b81fe8c209c894fd774fa51c45b5b5f4659227079978c3f52cd5ab3448d1e45d1db03798829c3189b895a872f5905f621eca254eb9fca390100b6909761e6d9d472abe8a3b9f4287b03f3a2c2b071eb4c104f62c0a5a7e3bfc31d4bca349184b105c24a54a046a38b1e126761632e87218f217bd1142277624c15a7ef260e4c25f9192d723e626ac0f0d19f41fc7ec836677a10350d922294e2742baa4d37989a51307333dcc5c1a50fadc400e1422ea8cce0fa59246e498f7dee9073561929a87856ae04b92140869bda73e7aa84490649a28f1949928087d4a2e6cf01594090891a9dd65c41a7f421f85927f6fb16b523fe1fbffac07b19cdb06762f9e8a2b03f8613fd358109d3cdc5b56d4f6cf9d687ff050fbb60d34cb71e9f5db28098eb0a41d4f0aa9baadaa443dd8d6d0f58c6b5bd1c6a78991827348bc7d4cc05a591111226d0ea671b3e97941582e773c823c8a742f411c201cd8c4ab813be090d813b33595ec5722482b8c60a70cf95ed23cf37624ebe4bcfe85321e409f51cc4ac37af7832312412bf0db0b196687983c1313cfa0222613c00ed91894dabf03261d36af6c8c6daa18537bbe411123797659fe0e9509f49d27d4a6b8c3f0ed817b137abe661e092d7dfb21aa67ae7f4a6bd0f875d5695e8233958f65d18b5a91d74fb625461fa6e6e063f2da134c2ee265fd899dca8ea0c2b27b2e14fb073d6f7a598ce044ac169644b814468f582d281de92e8816b17aa21442371ddde8f846a41b8e73fc82d5889242f788e8052b11250ab922d00b5746944e768be026473710df48f3c6047a2900bd4e11fb4bf0f41ba378f42e862d30e39163245245581d418437a11e0732481cf37b9afef221e237f10c9dd7edb6c2bcf33e2b6cd5e7fbc20813cfac5f80c95c540d6f072849addbf2fb6d5c782c1950c48760e420e9bfb4bdcd44ee62c0d98de65e5420cc8fe33784fc916b6037eed36b8ce7826f1c97fe5faa01a242710d6467401f1c84696280ba8513d3e0dce621929a765803d96d70b56b052d5d64697219f49b20094df4c1d506afc4df8e259db5ff5f6d0ba62f309c52c0792c9fcd93aeb8305794fe8d8811d50be5e3b42834d3c1c2e84625bd123804c68b4e53aeafcfc292cc070e85abbd163e468264f1630121d743a1c22a8eee7ed1d30d9a6f9629cc91e30d6aa85b371b1593453368fc09dd82776fad2b448c8cb40460208fdf8097fcd550981629c9551b33812fe5c69057ed7e77ed59747d04bcc760510e19727740ca7579f73a456aef85f7bff6a75dbc0af955ba54e9e0327876269cc954ac91a8b800a82f8eb0f519d7bec2bf5bab2fec07daccad2f2175011b790c38123143ca30bd23c2c7bcb447c0b69e9bb78965ddc881131e2224afcdbc0dc49386401ca27bc3e04d28bdb66dd5cf6a913204b8d102b2cae761ac2851027d82f8b00a22559123c441cee91ef81825c4c2b05e3fd3c3d0e623b2415665b707de6a691ddba15cbb5499170ea9b08030915c24dcdf86af8bad00a323446de169fab81f5b8384b4ab6771d94aa84ab0faa85a1cfbce6150a1f5acf2d7c0251e7935023cc67ff66df5a102b9b3a55eab912531265bb52652b7538085071960c00a83107c0b6b8f905e6147060f06d2a0993a1ed367d7be950debdaf7c96251f34d592c417d90fe5e8eae22e0353258aff35e66d66ade91c962bd37509683a5fcf565d91712a2f6b4e7a5145f1d957dd2bce211a06bc8d80b0b76a906ec48f868b7fc3d67449196258370bfaeeafc8d759325dd9675e2b47221a3a15a5c113e2858b60828ab336ea91652706caee864f0e412b1be8e3cdbb17dd6b0c3fa97b97d2d3cf3c31d0e9fd2cbc5347954e97cb385486be54d4dbe086760bdb9c0b4aef3e5121b6f057035174e38fa4ecf542760b1db84682118755f4c8d6f8af22c91148c52b8fabe51738a0de24f9bf7f994fe298edf0b2099ca88efee46605c549c46b1406bbd0b2b675ff7d64d3d67fca004bde6c1610a5ffda776fffca8fc245f8330e526bfd1d07a9872a4dfa4ce8ff7ea9fe06a14a6dcf437ba2ad32c242b08cbc513f05b67f0dfab42c114befe8f4e29308593ff573bff6c547e900653ec8ff1883065f6fc7d374f2f9b822937fa3beafca31df8398036c09403fe2e767b30e5007f479d3fa2833f1fd40e987280df456a06a3d0a2d0993be64015b811218ed4035309f7ff62c884291cf0bfdaf1a706f0f390bd8010ba1b745b6b61ca44ff92f2ff4517fed47d3598a264bfe1f4194c75feff9325549230a5dcf871eb039908e3d92a98d2dd33a8d4e7608aef0f62aaea52c4eb08037d9df8d5fa4e67db114197c888fdb8e04d3058781484837509a7315e03271aa612733bc03bcdd8aad4313e144c98e844c9c203884761aa735a7e9d4c8caedac23d4c4d31b45bf6b87441ba7b87fd207d82842906df390fa66818e2f2ad4633310566986eb74ee1355e75766027682e06a6ae110f1c1d300fa2cdf528354a51c423a403729a7d02edc3521a8db55e53d792e6a847e5a6dc4ec8494ce033df6b5d843744987abc401a82d1483e6dedba5c8b4cd98b1b215056f9298d37b6b19d3020ab3d19b7fa0ce9ca385463c6db46bc22606652f3df901df5715668a68618c7465e57dfad22ccd0e43d463a62c8e6da522b6d5f79344734820413a207e48483a9689b4a3d98c3a8913d6b6fbde4edd60dad30a8740397132d1e171a68f0d701dd13790ac13b904604d3c9ebec13c546391420f4055541a632623ccec161fb377888882f17d21ca6c6c96543aefd3b37db1af457cbdefd39b5ff33b49cf252d565e32b9f74e35c4bf749c1120aa4113b663d88e2b0426cd3853f8df7482f82f2afca57e2ac04839dc575aa128b426f3ab16e92d2c40114be6ac1387ddc49b748da4049c60481ebfceee76a4652a9679b0cae985c9be668602d3577f3ddccc3569a97c0b7630bc4320fc9a2a4c34f185d05aded2afce0e0d4ba28583a02990369ef525a28a49808e9faa5023ff763fe97a8389ef20b780d7da966c67f9b556c392f188cfd8640e27f08a8d10b86e1cf7530e59a82fb2f73b1baa8be5b0894ff90aca03484cc32e6d582b2778f0d16a22c618a3ab2064b40a250715ae336d664008552bf1aefc45bb59873a9fb9f17056be0bdb19581d287880befc90bcb9985112081fe6c58b08d22179d3778b25f0efee0f9b73f67771067ff307e7a57596cfef949b2d319defb40891b365d564010bf4129fff97e4825af3756098613ed9bff968d19dced29c0d85fed0423abc232ddddb65ddabb4a12336f6dd0b9937b0ef80662e760c33618192742173f83095772e6603dee80c1d17adbe2b90ddfdab7077ad8f703a20065e61c0e40793f6cd3c2d9a0698b38bb0c8b6ce7619e94cced51fc6c03e9c06d139de5238909db627eba7e826615565c04a270dae748bdada8a75f726d955c80d6a6819718d3ab6ee0b6dd3a5a25aa7b2d4743ffab35d570efbff17fd86162c368843a9d4120e3e25efa683a8fe7d4b4f61ce0e8292508e74ffe6f248337c98e2d92f3b47b4e1fd45de6139ae54b13df8d8f189a5a6c626ea13e2411bc36626ee1983e34eed3f94943a99d6c7fc4e235144edcf7a3fafb2590139f32b456a80d76a3bb08ab7e6d7caf8b4c637295e8f3a2ea09b64a69db1c59bd2197f14023ee6bf5f34127db7e0a194205e97d9f3148987c6410fcc5811b13dd93094fea15141f46e3113b20bc04b6bb4294f056be57c8b29e60d0adc9eef5b26e46a1566b7cebd728695d49dc24c54a20e3f10e48a80d9ae8462820fb069d401da9d40fddfac6cb0d552510914b764e45c9f9377d402ac8e30540008fd03a996adf372c1ebb28464be4e1d112ab90f1d5e577a89068b0d741dd03cc44c38ef44303ea79e27c59405c55a503393e90706e2eab7185d5479384f0cb50835502dcbd4f05f03a1dac02617c6aaed60486ace6743f62c82eb1c9049f03d0e00aaa5885bb96112b0aa155f1dc6d742b456c9b6d09d9846cb9f7de926c29b79432c914ec075607a807a8c979dace853b060802b54cccf3e38f4f049adb66613b6caffdc8aeb17952ab3eb5deab795f2fe1483e6e904e8890d04fcbd03c3f12c522472ed7a9c49f0bd76cef93b5d7de92ae0b43d741b398ef38e816437ce28561b634623362b640b3d8aae8d91744de3c09733a61d82cda755f858a6dfbe0a6fd86abfe11b6037dcdfbc1e7070849d6f120b833ba86b8cb85b8924bc33fd4bcfd8d30b147f57183c49bb7a81379c49c258e92c25960caadf0c3c4fb893c4d9e6346dc6e992a56a21b8bba1b9973da7067252e49fc888c459ac5fcf853820b5f3e578b4ad87d840c8140181ea9324cc211bac5fc9908039d88dfedbf5fb915071c11c851b388f792a23d06a4bfb8923c2390bfb88f059c653ee4d11e9007c441202208b4e3e3e3536a6c07961ca570d48448e6f51f6c4206c276e05e5e17920aabc1bd7c9329be7c8742fbf96e854e693f3fe2c41c5fe2f77ddca79b4d2487257799f0cc37ce9fb13e3fa66b7ad39bfe7bd37fa86c391c7f1c355dc270e77b38b8dfa1d18f7f619861137fa95e4afdebe7c3a2cb3315e1bcf853c23dd443166816f3298e220bee1327dc7196f99957e4e3e306e9843c913cdf141db66966d9cb9c615e059ac57c8b6186455a66e4e1607918e6287f4a19456cafc4d8bd944fdfe93bc50e24dd75dcdddddddddddddddddddddddd7f022b3cd2141415ddc9c9c49548dbd532ecb223abc2f5c27680ee2a4f834ac41888aff29e1361bcd60b6485a431c658c558d9186394347cc5fe155e715df4552a9008e44ac1347458c54b9c2456442035b2cc39857461c8b388f422f7769d1779ef8b402aa86c3b0c730d2a8f613b742fffc26a742fbbae464703f6234892acc0b1478fb3cc972d438174585647798c597c155c2976203f82a2627e87fd04fb09bb09fb10877d0976127622ec4cbcc89bc49b881373220f1c75e28ea3308e3d9cc5871731c18d12c7e7cb9c983f48833ce73b9e4084a980b3f8bb7b97e77cc774a82a2fe228a059c4677e110794be4720feb36b504abd9c0975aa8ad24aeaa87887042388308288aef3f8f2ea5496b8df156d1c4220b6573eea93fd2dbc7c706da44fb3984f1f06758bf92b576508ad2e413fb0e826c34c2287431a257b28a5dfd19e40fa653e053a552d012e018a4c7f0212e854e504273891e947a065603c7d0874aa820214a690e9f7d032a3a7ff806622d3e7a165aca7df807e42a67fa365aaa7af433321d3b7d132d7d3cf813e8d1a192d537afab997c8f4671e010ac8f463b4cce9e9c34865fa312d73f2f46f80c9f45fb48c8aa7efe20099be4bcba0dcb4c8f459748aded890e9b3748ae2748b9933804c3f009da239f471a7288f96964979faa8965179fa2b2db3e269d0a921d35fd129aa435f45a7e88ea9539487fed629da43a5656ac04f9f6b19efe9df96e19e629da23df4ad4e511ff467a728904ed120dda2b64c7d9987794a9f52d9bd633b5049a3f41ac220fa7dbb3752ff7f772af5dd31627c370210f0dd0948c0772b4001df3d33f3dd397f370dcd772f6001df2d4346cd77d7e0f0dd38ccf8ee19df4d83460e0ca86123fbcfb30edf9dc37733e0bb6b7cb78dec75f80e8f308cb7f0e8abaa84b537e1920a7c9282515e05a7fc0aacf234e0155f03a6e131ae0106cbbc0ed8460d06e44063060e35321640936714900004c4483d69bbb25a025c420f2fe2c2a02acf49049b0079ce7461c4249a3c8e9a29174f0f1e22222222222222223b8126100f0f0f0f0a15e310eae469963959d030550f6a893c27103a1ddc1ae49e18c434123a7978660f7f49a9acea45201e10cf8b4060d07419e4f9b0c861e6145090e7cf9dae87c7795c87c773985c292a1cba4ffaaa870835f27aaa9eaa87dab744560ac54b076c03d7c00cc01fed91e7e7803fca93e7d3c033f04775f27c1c700d968117806970c63358013801180138064ee1af12fa2a251bfe2a28544ec87309180000fee40ef2fc95f901c09f0c429e2f00fc4925f2fc01e04f1ac9f351f89347c8f359f0279590e713007fb20979be0df89350c8f35bf0279bc8f359e04f5221cf2f00fea415f2fc16f89357c8f35df027b390e7bbc09fc49ff4429e7f00fcc930e4f92ff027c990e7df803f69863cff057fb303797e0cfee61079cea7f89b24c833e6658e9191310806d73c77606a12ede4f993049daa82828ae0d13236049daa942819414ecbc018a25395d0fc397f76a053d5d0fc79d33296193a552d5932459396a9c8d0a94a0a29ca50d43257183a5511118d8149cb685ee854c5840918885aa6b4854e55454552b44c163a5535812de67cb9a4654e57e814bdb99158c8f3e550cb9cfc7c698529a168191554e814cd69a2539407143a45759ad029ba83f2f36550cba4fc7c99a465547eae78e944e631051d26769e90e74b25748af21ca153b4076c61a453b407b6984a748afaa0e1670d3f5f166919fcd37b1e26f448428f11f2944bc8fc7ca98320748a02812d269196e15234086c31b11d740a0ec141a7260f6c311f881c820442963dc0ff1ec6cf61ef31cc7dc5d8cbe0fa16770f035b00006065250001108000063000148a85850004b0c1869616162c0a5080162d5c5c5cb830c0015edcf0f2f24f03aee157601a5e05af38c12afe844fde844f5f2afd75bd852b192c1f061e3d0ca23fe9d3490400004ca2a095952025010880122101084068680003185a82422d918285450a2202108088890d3630296a6929caf3ab262c58544d6e0a50801b9c162d70725cdee53fa73c5cbc0b1d03ec1c80e7c5cfa73d6ee8797903e81c6027bfe0b9a1c74b4f9e4f7dc0008981f1f3e110999f3f79607cc40081f10196655df6b25a096ff8bb39b3ac6559d65b96bd4ade8ccef67acb7a6d7db682ca300a08ae8fde5aeff2c25faed35b4fbfc5c55fb4b7fe7bf1c5642b46b6b4fb96a6fd863f9bbc91482412e9af27795fc21c26d9936fac54d2dee2affa98f12d86bf681ee439e1ac54b24a361933598b75d75f950977eee694d6de2c7b4dd3acbd2e6baf6bcbde667fb39f891a667d4b0c1b97cb0bcbbe657bc5f270345166c4871099439d420833ea1e132b56e33111a6d2aeab3008060579ed4d96f80d5c6235b06872de325646c0dd9dd658672a2dc9e5a1b47a771ffe022b1e3adec3ab0b070583e46730a337d30a3dcf7194f41c18eb7d3743ccfbba1c8781342f5d238c47999343bac1c5196668bbe6c77d9795f4517e0993f086fb127194fc0a83437470e5c3a120253118e7fe079ee67a49c02761350e377abf2f8499c6d8e0c6ffe0cefc6f87a747679f0c7627b12c242c8bf2480d62ed28082186d5c0d114d94bd11e07fd8cbef6f56db23bc41ace1c42afde512e8e925f7dcb90eb52da5c7e22628aa03967bdeacdb4cc669b879addda75afeb9af39a73ce59b5348bf9a424aefc39e79cf36bc99356b09a48ac23d82639a13ea598f43e80346bb11ad25bac268b23ac06c6f843da892cb38b14df5a0bb11a5a7ac7d0a2a4771a3626367aacbabff523ac867a29ee593f53fc71c4af3e666f291502afeb61e96dc438463874649a4b1e0effce351e67502bfe65470fad121cadec39d82afc77f0ad8a0b6233b6bf20f6116b3fc2f73312eaa2e130dacb97a149e8b0880c195d15aef55f17c9f2db817d8e2ec79a0884a33009ef4bedb1d6b84e25c691157214fc1aff6c20ccf027fd614e76f8efa31184f627568301fbd04a0ebb6d896919bd0c1a366ef88b67f910fa7c5cbd9284c48df2bae601242d33b8feb0c6cc9fa3bbc13d8601edb39ff1941af36a40dc125cd284c1e1fe034fc37977d658e74dc9be1f082ce2d74c99dea5d1c1fd54e2abbc4a8e1fd332ad6929d9f5664c8ef763fcc5c29f4c8964faf088a36244ade07ea81cb7d8ded7126fb78ab3c418af9f71e8a3f2d70b6d3ec4b6dfeefc7bb7cf4aa5addf5212b6c95667525b1cedccd18ad2eeaf35ebfeceb20bc3b09bb7fb776b9c65b576d77a7d5f9f5d3f13314abf7f841bb361d316a5af25b9315586bff4c7191b379ad69b055bbf57785ae4585d1567cd6206d7bfec9a955eb55e2965d6b5a24639ba3caa19513aabaabaaeebbadefff2fcb1876f936b85df8e5c2db6beb19135bf625a335d2410accb395d3a95e93a604542df29726ac833bb327cbb0bc8757dfd2cbbea955d5ee65524dc7ec39c5595f58e2cd33e4797b3cfbc94ebfa4bd3b6ed2dcb9252befdf83659fb7b6da5df58669333bafd85b5ed67a265a915447bfaa3d1e8defb333a5f2f657b1cf7eb6f9e8b236ecaad365f0b7df8db91b39a2f2dc3e85ff42dedca7baa02db0e2befaebccf07474529a97c1f1c06d2c407c25f7cf0a6779b08fa303be8eb9fafa14ebcdd4f1335910fce12ff565d86deb4d183ea3ca4252646f5f169f4c8f2b9ce7b21e3fd057aef3233b10f11a6fb26477a5d414a067886a2dc45ceb0c4257791330c69f197786be6b5384ab674bdd57a8ad5582d0e03696a8461d12cf26fc81201591ab1bc9666219f3483dbd22cf26bbdb225cbd7e6ace69c73d6cfd1655b63eb1563fcecfd6bfdebcab0d135b270f5a00f123a4412d27ac5b25ffa7e5bea1cc351d75b5e8ca35a9ca57e5f29b8dee5ee0d47d5bf4a70b5d25ff8b37fd590dec28dfd36017fb95fbf0216f017d2571407891471d4e8ef5b3ca3b37d7b61359744baa49f711eec973e4797ef5b58cd9d40d42f55fb8eb2242f5eb83387bf955c2ffe50b9769817eed752575a5c5ec4586f4667ac3e8d14ec3bc32156ad195663350be6ccf4d6ab5afb0d14eb4b47a30a6b6c87b5575ad65bf76aa4d73ecbb2520af7384a7f3357fa9b4ba5e72cfc5d5f37c9f749d8e26f47b6cf91f0f68d599b6c718e2b6f9ead026ca1697ff14cd48460239fd1e8b524b72506cc76f43134465f676458d668a4657771c48dfef1ab87a389ac166c939a70a5a3608a8c57a35cf4bafec6307c576f7c17410f6eec6aca213ae476954e58241e5448eb8fbc91351a59d6a84e282c92900babb4c28cce36c28f556681e2f6edca1ca37bed82acf5a2157dcb7321834b7fbe55bfb365d58f4ab8052544118444848b222bfa5fe54d087d8ad829a288228ad82962e704272081843cdc028e9a10e648e89994b2a590ed99059ac5945e05606ed0133673dfef321359e6f63d01684a69df6fabfb340b21498268b6f1aab8f35673bd8631b0e3d6da31012aa15b1c4102891cb56d6fab6591de5e3fb81f04c2017a0feabfebeead35c6182704ba8a7ac850d432f7326d455bd156b415dd9ff1edef76b76dfbf624f7d55193094a48e22c5274434af27c138640cdc2e7c224ecb03df7b3fec40c813e9ab6bdb6bdb6bd465fe35e722fb9976fb7eb5ae24a12c9ba8ffbf86c1f7d09c7792ea48db01a9cb6dd9b2ec7a58e5bec4d38665b8a3ee4a8796151942212d5dbfd7c2197a2fb798ff77cadf7027540401cbe7f2f0432e198316c068eeaa8896133368fe35ef3382ed6db3d04823a1e16e925c9f274d0b75efa5bf59da4c37a3f42402a954aa552a9542abd56449be09c218686f44190bc52a954fa2eb218e14e2f3d8e4d0e8944223d0ece072a8d1073c84d4723c4c4b9b9a121fd075034424414dcd090ea1240cee083c61b62e50829342127091e463c812609cbeb22ccfc1a61e6bbfc8b71dce4ccf3971bc8d226d3fa52beac41e4ebdd2291accbb29655dffa01e611fd1c345bde0f3157efc319ca73ce89ed505570461bcc4d65987fbd9d57f5171cf735ed63bc712365778a6cfd8ab98aeea3bf2e5cc5fa9a8d4f6e0c074b87b4bc1f5464ebabaf209643cd3ae4670047fdfb38ea474c62f5eb63d5d36105d1457ca0e426074c80e4c004345d0e30b4e007470c09410540a0915f52a1a2a2a2a2c2eb76c1bdca5beb7d3ee44a050505050505050525aaa83ea0a0a0a0a8f05478b17a3742c8043e6886d8008a6584254a7268baaeebac8af82a2ae2ab54950aac1269542afb282a9f44d58e3279dd2c4374b39c782727f8b3f1f96ee4f8276cc21f0f393e87bf0d7c1cf86672bcdf197b12c66e7c0c7b141733b8f3e7633f6f8e1bc0e9334c41d3bd10399466081b9ace8b8ffd4c8c3a62657d333aeba0338e611ce48faecf6163e393bffa396c7c727c1dd67f40e4e8fda02267ffc51a3d1dd67f55f7d5faeaeb471c63e7793a32ef4708ba1f2288216c1e050505c576bbf838906fa8a878dd2ebe3e72230bfccb08177ef629d56b285dd7755dd7755dd77549645eec3a1414141414141414151414141414141414954ff921503e88ce1b42c57b43a03cfc2ec2c057c1dd2c29183e0a86af0277b344efb3f1c99837fad15f3fe3f9a56213e3f04fc9c1ca31be55319c227f58cda8285795f759de577f74ef9d97924396d9c8104932fc0a8d08d12443982f4073f536d9b11cb25c793b62ae3eeee0373735575e4a0d1d7e8099e6a0b9f27e80f9c45d881065ef2e5cf9ed313433c1c9f49f5a1606a9d8ac99c8e260c0c9f6bab89f990af84be7dcd3818e90dd9134e1a789ca7116abb9bec467228cff54f7fef97ce8c57aeff71feb7d158b309a97d58add3be3af0ad33aa216a5b35f62bfc07e81f623b63e4658656b21a6037c2b5ecb4b89318ef274c05cc5f07e5c4f7186837e658dac1f59b45ed8779cc51fdaf0cbc5cdfde25b3f7a7f57a265ec7b04b2465565739441a33ec5fed1b3313dc7715284a4194739fca118a8ffaebbeeb4925e7f3243271ab96606219030214bcbd6942cdf92292d832debe35b6b41abf2e98522381194b5dc4508529285f0918dc91f2276b20db989e00126721582d4e468ed1a5d3fe3da857d6323fb188e1612b0c5f5f62d20b0458457b490802de20391af8fd80a122536433e8fdb35dbb782cc441d34e291911c2320e8409698f516ec813d1ce5d83582db38f0667681c8486e233740b211217a9c88dc463aa0936d63351709aebf910edc683c48925041482b91bb8812a2ac442877912904e50f1601b19a24d91f23baf042c51bcd223ebc97eb7af366748e9d127b42228e727fbf691978935d4b725f629cd5a35abcaf96617fbdcb93f2766f52620eab380aaea0700b767911338365d0b857111e89401d0b0a19a194525e24b8447047b657b017b84e761edfc155777fc4170aee4c91dfd1cb5cbe2a2afe12bb8ade8ccefdf05d5ec4c4805fe5b8326d145cf92955e314e90f896458247b91ec5028c22041bc04c447ee6ff782cc861012c13689095214aeb4b0bf961c940c7f69e8bd2723a703c3dd9e7b282fe9303828285e12dcf737f7a687df90e3629c80bfb455b787d6656135276f613572dbbe1fe21ab72de7922774eb54fc0943ac468597d2d9789dfc890706737cee56fde9f4a4cfd1e5ee2daca6f3524e5e8d994f7ff2807014e9a5a3483f311af42dfa9bb4d96561f9159fbc6d0ce2bfb89461eced7dcf07474d213ee4554975db4e24920e9ab72032e9b3c92408b7cf017fdbe13ec4db5f6c95e00f6e1d65f69764fa2d9ea2554f2b346cdce021028e9231810af88be9672f6929384c226519899491b27bb39ff12b921efe2591fe62f8246c95c01617de6f6c0712d7fd8c5f466e7864c419336762353ed88bb38739f1e7fbe02f10ce44f875110c03f62f86c38ac466d8bf4fc29da3e675948aa3b6d27f376fded74017be0c1af37dd8404b8f7b7374b2d1f6230c96ec97ec93aeb7c91067192ce186dbfd0ddbe4abc16cf43311bbecf4599926378d20c3961f577e1594e4b6c1af4c57d2a8ce32aae044a33a7f31d3f8394e5e996e84b5b2485a3c23232571e3cb6937b9d98961198665d9adb58e1e07fdf823cfc511d7df265bab8d68f58d615875ef67f767621dddaaaaa391b557f5b6fa51f533d19ab49a5ed5734742995a568ba3288a526aaf12dcd2db277df6f72d89447aed4d9fe3cad8dfe0a1072d85e4d59899f424ef72d4f69ca3b62b5e32fc2523792959f6d94cbcb8b39537cc0bf75379a1afe22f17e5cde86c8d52ac6d7bba792820b86e557e858efc057bedbf954cbf964c318a61af69dabdf78e464ffaebb7ed5ad9b699b0b730adbea5578bbf34563fc8e34206db361a6d23ab846d72e9f45ed5f934ebacd5ca4677dbb6cd4b213d8eed6f26912ceb5e126e4bfbc64623cdaa57adb5aa64fa2a2d31468f8af91597179d2dab56eae16821ac0921eb2f7fb1df7f63bcc5318eb22cabbe652dcbb22cd3636fad2fbd86bfeb356bb73fb12ceb4f1aabe12e4765cf392ab37fffc23366e4e1baac153e9a45e70b778e1ec416c8b103880d04c0e7c6ff7a894f65a3b929ea64a796ca8e73565a430875049135dbe319ceb5f4c2b9fdf088c3b86cd0070ac1400ffe380cec89b007028930a5ef873e1186fb56f10d99c0a1e63a955f41bd8889e12f9af650fb811262ed734dacf6441817d2e32b485c880426e12476f10fd35ff8c7e92dfe71f223fca37b0b4f3ce7fcd3db9e714aabed19b7ac1a34778ed5fc30c94a56a69ff11f2791fe8427d5731f24dc13956e7efc6a84d9b0c9d15bf97721cee2ee0383dbe228f74139ca39ec43b354459f4d8efb208935c8857c498c305de7398d2436914e960f1b89b4f1c9f2a1cb8d12aecd727d20e11a21a4d9306c9669e5a9012bc76e16f39b46ea8c6c323f2da1df42b97fc5156e6cac66c5186e7b9fec1a566498adf7205c3b8eb3d0efb7a635dd6708a6004111286896ce4437373747d4906122929b9b9b16d0b49228767472bba0597a06d506b746043a6896ce9f6945a657c56a6ad0078f64fa19ceb56eb9e5e298d2e71c452dafbabb6365bdec2e13e27eb1491325382e737c496e47c126b0c809f7abb9a2f00753fad787e4af7f84780ef69bc8429f7318e7f1a2a565e5f2605164a11eb85f649269f4a8248a9d190029824d6ee4b6723f5824753415581544b816cc6962ab3073224ccf6fea648741048c1c1848d8ea3e3434f484500f4ff400876e60bf1cd7d0f5c425740d5d4340b03b62963fb928704938249443c2051d61774822428810f9c110e8037d7c6079f010418e0878b409ac74182b7f3b3cc69b3c10227d6c87da31a5a83e94afa885b84448281235317d522848eda474664ecb54299d148f10f6769ee33930b0eefe2d759c08e7d1ae93031b24bb8fdc31c618a785848cb1f668116819af3dd5ab20b65760aa7b88a6bf46181b9afefbb10334fda8e8d1a3c77797d13d3a135f8e2b470b59406a8f15e49568210b48edb182f87bc36681df357ee5ab59c0bf42dcabdd5dcee000291c21420b35f8d10413410cc9317284892b18410b468ad8804411c820440bc6c003236c88b8c2103400030dae10c511da0c40d70a77dd0e66c561e8f79154865d8cde1d814f116450032162884211cd8d30361e10c30d48800450143f808226d6b8448e31728e8212c7380ab25cd7e53a225c0a3039410972848040840c4447ba30d403e70958e899023261040437463e3006cf2bfed2463e30865c8f607ba56fb4d75fa25fd75f3cbb4b8eff91257e84f1e405637d7cfba37e633c5c1c179a0f3c4d12fe8de1e092ddc5254f2fc65ffc63b00b0907d7dd61768931335cb24bbddd6789ca52c628600ee4e102e7d1aee3821cd327c593da49e9a45090e249f1b4c08722515ce242510b912812f57c323b9cb4aa5e6497331ac005b6802f2584dfd80e06802de003911dca17b93198f3e5983912860e0c1e30726010014307868e12568915b2424bb4921d91070f11e4f420021e438062fbb9f06340111303adc02d71e17f3b628f9ad2aff51b93d9f2e8573cdf72492617245530c4e4931714d24ad81eed2086bf7c31d9a557bbbb2f4ce87e1cd7a9fc0aaac5e5c51723c6102aa594d259e79c3568c631e97ccbfa1ec121cbb26aad9462283429a57088524abf5ae790210be7c2a75f6bbdea686447a30f22cbfefaeb4fdc5fb1f3802d664dcff9b34e59eb338158e552e342bb572711434c62ccc1b913f121fe03224e440e2143afc2ef468f2bc9e9d5d073e15f4cc9fdba46bde88c25172efc2f46f6c8a3871e1a824f40a11ee01370080e1901879488893123837b62080b53f89142135f10220214852c2c2149135ef017ecc8fdbaec2bd2bb7f75bb634db836fbcb5419352a5cf8439c7042f743a4aaa4741d27c27938113ca886a0c2754ec4880a344001c90f8764cee8c920254790c8223a700917c445814bc221e1a2c005714116acc4c005e5ea3d3e68991c1efea2e33bfef2e5804451f81160b89df72c211477e24e2c41d471a15882b81377b82054fdd8b8c1c34adcb9c870e3d74ed47add30dcefff858a58dc9256950d7d2abf318a25852d317fbbc34af9b964e9c94b49129c5a3ffa1047c5593dfab6b11d200f608b58612804b690ef9007b0856c29311ce2a80a87d8785d95a783ce99d8940a4388d0e2f26287843c18e2040d6220420474f71edc75d0ecfe332e5fe26e29057739ea2b21dc8f7bf1ec137e39aeccf94b0f3cf0280c5001d9dfbd3a8a062e5ceffac78730e3105ad2bad3565555c9afb57a17b87265e57c5965adf097e3cad5579f49483f8270a149a26ea5876f2dcbb22ccb3ea99499b010a63f299d4e4ca7d2e9747272727272727272723a9d4ea7d3e9f4419c4e4e4e4e4e4e4e4e4e4ea7d3e9743a9d9c9c9cdcc8d6fb646792c9f48e391367aa9ec3a43791485ba9c4715ce987e9dbe405e1429384e53732662f77bfff7d7654beffa16ca6c56c45f7e7b8eb4b583ee9fd2fdccd02fb72dcc8f8466e0c87cb5ede0f2a24949f3d0ef9fed6f4d664e59b3c1d97f72304a6d3e9743a9d4ea7d307613a9d4ea7d3e9743a994c2693c9643a9d4ea7ef460fd97164df395cacb5d65a6b32d94b4a93c964b2f2b2d74f9ab0bd622ddcb966c76ae45bb8661baf88e1a081fc494f0710f9b3993aaef921bc5e47f5fb9ffff5242c04e9b9bf6ae9af0dd8d090bee4a5ebfd084189e3388ee3388efb0fa2e4ddc8322b572a954aa55289e3380e87c49ef48ead47b25f91b4b6ae7abd7daf169221fbe5e900225f7f791fcdee59cbddfd2d772fa586f5fe9667557fc15165efd6b5ccb5f8ee1f5b26360b8fde326eb1c3968115c366e17fbd85ddddbe0efa1f10d97f509169f638eabb7b3ae87f019deea8f40c77853d0d15a2010000208000131500002014088683c2d168304cf34cdb1e14800f8ba24664481609b41c8671100419620c50c40060000263406448864601010fd3e74ec6f76d8c326f17ab6c9c0cb302137f0506004e02c08bf07cb6cffd4ec180891ca2dc6720cc5b29be8bb3abb444d660031cd50d3b88035a66121b47c4339627a1e19d6500775426be7b517bc4ce4828cf60509c1f8bc57a27c4e12d1a39603b4aacf82b723ab7d0f42bca59996516c3f28769e7ed254995cff5a3197ddde6a43299700be42813b08f9bf43554a5bd84227db7acefffecfb056415e032f409604fc8e4c453d792289997132bcabd9358428ceedd0d6e3debd4ac0a023a8ea7368984662348a7a89a3a27ecffd7fe66ce81d8dbd467c21ec0b53bcac0cd8fad70b60edad52561ac032be1044a13245c7dabda06c06747afdf4c4a267a4c3a5c429ba084e6bffb6d3e09331873cf7bac2730786e47eb6c794f864015b5e56a9697ff2e2bd7035a8411e54c2eb115a0f73b9e990f6c60f3c2fad5132c0e96df6f5760b267b7e408986542811bcff00d60485ef08641d67358f014fe5a590ede43078080cc07578e6fb20020525de7eb0c8bddbd8d7772957fa8c2d347c7bb999e513e960d4d159d89844f97dce226ab4dbc645e128b73b82a22fbbe47422b7f4149ba221a281261a9099d0c577198794d29eaf082541098a1d23c8f5cc5c15dbefe6c4784c13dd1c0a5169807b2e64d3be9b9a3b30badb3cee0873a78c61c0cf5237f3cabb363598d7eee370fb47c5278f86aac298ef4309b91467f7dd397c5173c056a660535e7a5035ed5564277f8215e1042ea7190495000d57d9292846061075318cdc5da8b5a23326038eb8bcfacc2915aaf8136c0f97186ff58b0fd3c6b18efeecacae4e6ff144980b3093b9af5460dc28e346959ba596349e039d50fab565a81afe773e2f0a87bd63bfe42a1d0a9a634b32128ebbf491078af02fe9b6c144eedfde11c4ee8f4747c3169e2fd456fc3a8edc8096e62205628a5f07063b5cb9508165972963c79d1c3628599837c7578edc35665d4d40e010073dd4bc4ae110a0bf56049cee20113970d7af89a89f37e2bda278ed910f9b8b71c9257e08a834a51ccdf5366bf38a76c59ceb0c5200504b48a4147ea92fadcf4528c5f201c2d5c240e34c6cecdad985af2f3d18c798c0331083f82b37ba4a5973cfc13a40fb12f12dab5ead723cd5bdb91e8e2b63230470c20dcbb3595a6e9615367a4a382258edc8c1dbca303dc02826206c73efeec66deea2facc586725a0abea0d4ae0b674b4f9621e6f80fad5680969493ad6aff7b1c9471dc9b8480aa2d59b1e472b82136d443876a32948e73caf5ed85a3e59c89e75e64bcd217be4543d0be2e7a204259058e4e2395f7093ed9c9d2780776cc87a8c88b4d287faa96c33c13cd2bb41aef0bfefd0f1571874aff898983d431a32161555dcab609f63dc5a3c041758e07be1398f6390ef1deb77ce7ab9b2067a9ecc52537d2027a56d93a912985f355caa6ac1bda07c4e204b2b114050211bd716d46392758b0d650d842776902ff828097ca92aa547bbce4a301409e0b338d11e8e68072918459d3aed860b4d90d858cac7c2ca31004035985293182c406aeb97c53212770449f7638f6178fc3b808a43f6063e353a0ad24d10c8b113c53f729ae764c8312224677f968b8ebc8f307ad1102c4521b70c6fa0fae3336d1254e77fa417298f4324b16bfc1620c4ac4c49475e92e382a2beac01491fd3d859ec0c0c5fd18ee01f2f859148410b1f47640b0f83ca94100e13831cadf6742642eb95c1eaf8ef0ae52a92400661a224ee739c3e7a65a97f56be5cae56702925be46f394fdbafb7431864c698ce344a35ff49c66fcb2131badf2704989fdea08f9bd3bec96fc37591301ff166fd59bac1baab33092b885b5f4c75857a444e5a4b58c1dfeee645f4904820c29fd8928a71cb342b6fcaef9af8929d3fe01c8116904cf61d2957a385c39d86f0cfcb6f5d103d9143405ef225c5529be3eaefdb8bd90d8cf08811d4fe2d811a1850c6c26900defbe7da4861c6c0146641f53f56e554e73209c63c42c0be98901219d6f9b8ce64aa5482b1dca56926ea6c4c68488cf0f153a38cd0c744e6feb78b3e788131dc6a3fa033263826ff3ceb604c65324a8d3ffc5503c31da58e13945e33792fa13a4fcda5cc6488ca5c2773a854aff0f7530d6c963163464961621a6e28f2f4b97f41b4739b1077d46bfc6dc47b35e91243773e08456f2f67cdacacfd285b1ff4f50b17ee1f8c584c743167d4133345043ddb410d4a3c4ba8a396a6e4475dd04c107dd91a11dca3f59c0ce990c616c415fc61f8f5c328d4254678fa4c62717a762a8c7cb3d70515583a980f271fd83a943d21e7815ae8f284520d13ca2ff6f38118cfc09477318ad0a5377cbc3aadf3bf4dd7254eeed02cc33d234e11b2f9038bf52267ed45129ca707af9baff1299503874074c89bfb72f7cd93e7a2e4d27886d2755279200f381b283b972b92dfcb05b28158ee2131bac74f024ca2ded27b5379b0ce21d4233659518d1331258548b1e962fc6aeff26505f024d86c11fb61e9294df6891e7af179c2acc842446ae739b0b3dea236b0e9ab039da5a3e46a1f6f4d95a6f5cfa2389fda35b05697f2ad7fb65108afc55ca9564f9f2745856cabb93a1584cc13cbd4ea35cf83711aa6d803c39f8db59610965acdaa176394af314ddc188e0a51823b2c7d0a6d077fc233f445bc1dedbf6a627168390b585f339a7af1661bc248706370256e59ed07e2294f4a4f62fcf5cd55d7be53ef01c1978c6c59553cdbafb9f374ac3b6cf0d66d4c9af08a02f6d99c853a5875c5239d5e5350bdbd21f12ea0d05f9b0f1cb15470a2d0c8dd3603273e99bbe4d6279962019cc4c6967f3b81130353ee6688d5db24d98a8a2cc91aaa5851e8480587c9de210be56852cc8a27b7c0b6372eff004e267be2882d845f7c307d5436d54b946a26ebb1539e314ddfbf25ed4177d16521f765e33588f1242cea09b05226c511865e64749df0b4bbc42a4d93af826cfc792be382cb58ed44422dd954b523e021986264fec334f93216ec1c620c00aa0b12a23445b4c9e1be5509993b04c73a0cc1bc83628323619581679606aa67529af9a63bfbad457ab4670ffcfbfad7e2d8264d83d67ff24642b733dc4b8083fdedb5c5942261554382821317dd748f4e43a04a4f8dc6bcebc67b2f09e238c08390ae0c8955893cd209dc7c5b3aad82b0bb9dc5454171e48ead220ba3455d2f9add7dbf41f1490d740a54d163d59b293c7786e45ee469ec5c1562e140bf51f54d38118b1ee3a24e9c1d1addcba559903ee9d63c4a6731f1b9c8532a33f8a4b6c57365518cfd0c13fa7640c24d2e340052a23c4f86a4822b355a574318dc77ac153f774e253b62808fe48eb820184bb086104c3ec7413a011f4becd41230ee208225c2a695f641cd2c6034ff238016504e1c01abdd3f500bc3ba0af8925fcad38a502c1660fce2ac459d25c0eae9ddf4474227cae80a5321076e1833a4e20437d97dd2de48b3ee1612f869ab6181618d817850c8ddb4c4196e4c2bf2b0e6bdcd033080fe9708b97f2e3a430424e91b38b93f9609f9ff246eddd29bcce3a7a0117a59061c694c661b7f4bd72b70733225f6fad419f11719c12ea7f68ef060b02164947c91a661aba56ed6ae41a56f860889c54799e9004c366406535954c68d2a417558ed4d7f7765d29b1289897eeac402883c69c5bb3a057c09004c1c7026794dd4a7f3015df97f89be91a967de42617782ec7b766f033108fa87ab99022f2e45813ef5a674e17adee5c80e477867ecf9d2f02549bd25ce23a39e3de9d0cf40f1ede6b14012a08860e68891e334c554b8078e2e146be11019270adcd9eb5ba201947c0db48191731823245adb2c2fddf6c7e50fe02443a6a495554f06fa96c838122ac38adf94776b265d904cc127a9803ae1eaf82ad334397dcc8a465d5d3c82cbddae8609c558cd9bf45d348573ba4da8cd0c2ab5ecbe3fb81d2b333358d00c87ccb10aad11b2ca314dbd4612a2b4abca0af929bb0163f96a054d2915ad18aab677e1471180d9d1bd31a662d14821a9ead19a940aca78134a3f9c468d59558beeae80e47998363e6bc564d27165e9a711b20fa1afe8e0f8cf31bce1ae5114a40f52025783d1205072ab5dd052aef885242e8e3bdc20df6522f73f89d536d8db9ad3f3bf7a78b22f6f0f58fd58b02a88084f40a379c6fa77d8788d559298d8820ce58f189eb5710429a7cec5a10ba1623a5e2c4a55cc3a877cb2f3e39c420e90f48692816ae496a5b1d2864034cc4aeabf317ce2c8dc5d1cb07c6540295f1bb3b55e0425698ebd8eab1b881edade57a62062f4aae2b484f821be4e437a4c766ecd8ed47138bb7478b90c8152b720decb9e2a1b4828336acb4c0b1cfa73f37884bf274591bff5bd53285d20f75fe9613c2a24fcf1c5c3f63f2c9e8a2a21d5b7a589772bb5807bd67cff9adfbe1d8f3cff2c502cb509f89e348656f61da665db231eb512e906286c5ad9f4c3c9f4c8e2da1f3161df75bc562f07dabba7dd09006c45db792c69863451bc4f7a9c1b33d129c841a741fc1939d42a41b0e5770a2f22eeaea321c5add3b16e9cc9c597e14a44138ec282ca5ab43e9ae99128bc5a3ff895af2e023b0136197800636c836fbff98053c017c87ed329ffb646070238e683fd0f11653bab4ab8b5c4025947ab36128bce68060126811fd5208ab9bb5c7dee4b02dd67a978afdf7f2b3ea158e43e2216fff85c23767b150b5d5486c26d0ab87bd108f44534caefc5f6d9068bbb20185980e94aa26d902fc78371b6beeb20fe237fb6d69d32f9e5ae57dd44de8fe79a036c23ba2b3dfa70df4e43e837d59e46a51e0eab4eff706f281e929047cd36917a809edf9322e0a8ddd62ecd845e54fceb16ef617a7987a88355a314eca3f7bdbaac38c279c626d11cacb2c2e693c23da10dd7226204b707f44c31cc0c4cef3d14aee0250611d4c5415c6c123da4a810500e3e0ae24ada06a636d8241f6fe5b45f9b6e494c476976c9d195af44680af6e07f9380621d125c47767175ca46699d370200d91d77dc089c6d5357bfc23cd96ee0ba604caf3e7317283fc2b3f09755dfc47781a44582b442eff3310c201451b784886d5afc918dd8b5dd2784f80de2a1e40d8d33d310bd8cf2957660bd648363d66b5941a2c79f1e9ab95a8738bdf65c9a22527a103d2c429969b85eea1dad90a04638a4e41fdaeefb261cb344a10712ca2cbeb4dd8270471b0f5334956fe02c568e3f80787e6e825e86430b0e79321c6438b3ae28aee1b55b22a826ceae67da86e345d2ee66349fbc0215fd41521af9de13017bf6c859a952029af551ad63d17b48b457891eadd7480643e1bc392c8f80ba115d526012d7606c3c224348501f9ee8da44838cce238af34b486ea9cb29d749871081e70d4fbb195397574e22373f1618365987354bceb48c56cc5d26b2bfee6a8565966a3382814f7d50c0121a0560fc077ce0e2fbb2ecfa346506753eeff79bb56f22a417f4fe6bd58e35d69ea4cbe3cbce688158fa58e33f38ed23861dfe0709eed410817ec6501d34ecad93e88c8818aa39724aa11cf66d119011a69030a75f2ef4fb0951c5b15607fc917b831e3388ed5ad1b8e747ae00f58e90a6b4ec021de28d086feee1e02bb806424e5eec120dacfbf486422c2c69556fcad71d8d6e202eb74010e526527f230d1a3a7ece42a803da6050b021c7892d826fb9588b405e65831494386b188278f0af057b27b75f56dee15853c9aeed3971e9d8f7361fa389895354d8431d287aa2d2b9a7707566d774d08f568a983e4335deca3058ff3f8d0f34a106479c0ffa71a41da300597a72e1a2aa8f160f7ddb93e9f1487dfc41169a22a569e44e52b9f0147e61e90397b434449b599b3e52c0201514d9d0b096b29a6404b227d607d36de7be226af00831af92387b3c6bc3e260e4237776c315c39419389fd254d39261dfbaa601199fdb42334be6fdcc1e76185dadd1402d0b78fba82c4bf74f2a5fe617b12590005acad2654668b4bd7eefd812b87c384a038c63f6fd39c0cf12b491da67189e0a46c164f398b26fb602e1551741988cc28895802106837650476abd5b2b8cfb292a11bcd817c142dde8e7fa146482173b33a6046fda3563187929c280355175f9d788c565a70eb911eb63ba2a253229fe8ed8e1a0335452f9f1c77b17af92bb023cfac2a74686f5bd8471f09b4a733dc46ac1009f17fef9c108247fb5c89a85195b06d4a772e79b9d5e1173c4f4c9fa7172f10f7806401c1ffdc4bd65fc6e65d80c28de63fda7bc8b92f652102906d14bc41f4b01615a1343f4b3aac9beb9498390efa8ed82a1945e3ff6fd46469fc787788dc9b6c3e7deff737f05b6979daba3cdec9941f6565f2922c2bd16843ba670e807912a1f7c0a702822ff80e6d07743f021296198e528202a563c661a812e0cb900304588b97de24e891161d7784e337c7f2a12e486be2ad51648918c2889d12ab50d004abed7a370e041a75666d489a69dc0c9239202897a7951229f0081fa3e814f35a58026b48d2655ef9f997a02776d2b703a13371d949b393842ed8023b0a243919d4924a6b85ecbd0bb78054155cc103b02de452157f1556d1b35abc65d9593d918e9db3c216dc9868f9adc6b7ca2fcd0c0d2167a258b34c2473cccab7aa5a0ccccab81da0be42cebe1317ee4f856388cd5c8c27ba13b0beb1723251b01c9d9ae95f7a41fe061d2982c53cc790ede97ef99e2b508a0f04688322257f46aef2a2ff2803b30199b3c7ccb333eb394c55fcac9f46342e3b5b8f386cb719b8746c82a193ee02d872470735715b99cff9bc0eae6a0a0628c21bf239979ff504b40567a19c1543bb2b174a9553654d02779df92cda5d54e15f87b437b2a509d2e892f4accabf73aa85a125fa615c750a197d7854e80b64a4db03e4115cbf83dc3f593f6e2488f4ffd29929525a4df3bff0181d288468ba24337dde7e6907451ba0a815f5f1d671c44d288621835ea486a47b1f0993065a867144e08cca3127bc624f13f8a71d7837424a493c7c3c230691fee7a047863878fa74003bbe3a665508a26591d2ef08fd38bc9b9cb4dd01151658a7ae6deb72ebce734aee7b9a884e5c476a614a28ad545d04836f379530e3914e378e6502b31a07219d30b21f574eab4a48cf0fb9f583adfd3c329b3f0340cb384d28878b38f22aa1e228b214186fe7c8464cffd658d7e133f415cbfe0dc8a96534462e6d7084e5f65b00fe8278eedac04b9c1c28983ebb55694475840b11a4568cd261a2f0f3c62dcd439a0b8edb58c402b4bf11082382ddd2950a2d13c313510465b8acf9ec7f5a984dbf5377be164c295716141a8b47a47bb43624b4f535e8dd229b705ebbb1ebc44d25b0cca11f6ab73af2ff7da7f370961d39e96c2d3f83bb998e4d990625700ec59a4e89c6ebc3b576d9f8948c284ad190fcfe37014ca6d8ac46c51340e1f18de5b25409b1266bfffeedbe171057b84399195a1f69182c64765904bc81b39038eb5df8c5ed2634962bae7744a03979d9e90c4f5c707dae20b1b2cfcc406422f8f558b0914c651633a5dbcfa4b3a3e801a2a42aaabd8f91b9161885ad35daef1c1a7570a2df17b193a01a55a94e70ab9544109c162b047bb4c594c877841a7ac7926e78792f422d155b8b6ccc4b8a5559c185b98ff7d642edee93df874ceff4d6d4ef8b0e8df075110254880d3b75a4af5b2283e4cf35cd0e727b978a5c66b4c15fe0018b2adbb469e03dd1142a02fddfd13e56f9d86f6ca2a2907a2ae01d00edb513d9e459894b5ce426db71c146591cfefa3fb86fd2d2340e5d969f8e84c00e99114cdf537c79ba4902580684d6cfc9c541f3b5b2b0c5766c489286d244e6619cca7d7b438266dd73d6f660fed096d4eebfa3e48b0474852113b92e8f07ad222d6a2e1ad5e1e6d1b8ff786428d4896477b8447bed36e050e901e1a296fa1468bcadd98643e5fdcfe8a10728554509afa093b025f93cb60d94ae210cef3199cb607eff2a08e5bbde0dbdd80e1b3fbb01955ce3f6c314ec1ffed29f98185a803adf626fa40a08e6bce0454c49bc7a29127b084fe88ce8b0df6816cf2603cac032e60d81de4e6c569e85f94aed3b1247e10c7f69b313059c50b85ca3792fba7b482b4b0f3a822b178b55fca128fe30b44d1e76e45ee6bd5839698f5391825962a78987ec1da1debb9af421001cafbe447e0b145eab0973130a93fff34c5246865915af40d42e67b1e825b2207f109550bc22e90efb7658b91e460b2f66a00387575d7036ba5294317e12c1082f8b0ce928012eb05e417a3038219c81c72480df30198b57b778d36ceb3e768ecef41e3bff819cabd38b2f090a6458647fbe5c27dfa34fd214c092a6da2d669b9fe1adf2b1d3901621a9bf09d5074bf660315370eb390687651dce412608743aa8495d448bc478ffb5db5a4f639c4b5e3f0d2de774e6a13d85910ea1770b7d20f500fc08d7298985e08c8defb92c236c9b6b3c473359878f4cb7fe0144b6ac8835f6a2451741ea4a1baf893c670d670b21da5d6a9f06f07040d5a83523a3656c0af3a41a5e7a2e85070a3211ceefc81baa1e2b21f88263edc4b95e0f5a6239a60c76a46d14d25584ac819abb16d405705bfe398ddc32ca2766a96f3abaed3321564e5c1feb3f966bdedf7ca5a1cc29860511388e130022255d68119646f9a285706be0e2739bc4c20653e5d6150003f2c660d474bf1cc5b0eb0f7c00cfa52fa3d27cc1bad9e5f512d0901641830974d9aa224a93ff4765e4217ee3f456545bd62c1cc01c6b943e222578b5361b52cc362ca0631e16d739e5c5847a64a07e0858cde0fb486bd9a8c74e3b183f71896522a9f1151a205b611bd544c70924dbfb2de7fb88a87a4b8c5ca00a68d550dec2ab843de94e8690012a78a70822eca9402d588ad0cba8df4c0efc995f015392cc800fefb01af8f2f75f0dbbd5ef97b9c0859fb3aaad4e6a2879bfeb7e9e6e69bdabc70166b0e20ea7f5bf8936de07706be204690f9ca02c85e555978a78f6aebeff040bcb29d075e1dc1896a5c019276c8a2ef4de946201df231f1334ec96b2e1b5fc64169e72b260a9cc3b4fefbb094866b2a975a0ceb94c24e5c3b1f2c687d218253312339edeb77fdb02870a33123a5969748bc92da3a206955f626f65370a232312d6f1f5536f47f2f17ee6f1ba58c84b2135e17b8510d7013c390c4b5135e8bd64d7703ccb0bc8109668c1bcdfe0d79ab0dc40a66005da4be45cd50f878db208d3f2454e22110da2b03207bca47cdbbb9544f51081f6c9dcbdb8b4a21a12ef8d82aea68528df6d8a01195b0e2c30032a804a06a4de25b15429aa2e2fa9170d2fc9365634e09335a77c10cb965329d9538ed55ad0fb71e760c3bb00f6f6ae988d825904e4337b9d81529cbeb749ba87f6b6b6b703600460028bf812af3c07b01255dd062552009c4a067ac9b477815f09b8778870582537f54949cf71fac29a4439932dd0abfdd49b59f08c0afb5c33d3545bf4a0c4880c7d995dbf246ff940efa8d98d8dc96c381391c4d8a8725bc370c6703316edd7060e2b0aa60aeb075c3551e90062f5b09226e9b86206ca4b8667d4959226697837521830f98b4f014e386884aa20507d51d1b84514c8c4ffcc6c2515411010787a80b9bae0fedc39aa203e1d01bbbf05d01374aca03047f4a6aded6281cfb5c244f961a4f67124ec7817c3c260750b576b11176ff5f2cf7b94de43647f535dd9e0df70b6ee5c3c0d147deafa06e04769847c0547cd1c1ae3d038584be3a07428289543b99d8a7833db6d557d95fedbb78202776253ac51207ab2e905426998e612aa8e4a97ccedd838a928b51820dfc41455e8fba07be0c0fe6f1c9dfcafd0a91274c740f9f778f1829b26fbb2a6c51f91b822e977118c2efd38feabfbe4dccf163906795576cf155c74e0bb1f8666016918a97c575b53412e432c62f06df3acf4bda00dd89ac328687c215a0a156356dbe7c81eabcb6c48d525d577b909034c839947f71cf15958e1bda1aee62d687edec5592e0a06c75ce88a81f1d353a6caf7c0c62c1b972065082fe8c6cf358599c3f685aea37aacef307955d465742f088e51d2ac8e58dafee93c3b8f95be6098515485d9f2dc9f60eecddab626fd09bcea7a61e031bc4ee0683bcf4dbe746b3f92aa2474795e693f0a15a0c2e2da4e90d976fe81884efd3a72852b55becc76d69a4125cc59bcba146434bbf75bb076a3d18ac870002d2149cc6e2a0c1972e489a3ec24ad699f99fdf4426f94a4336e9cb72dd56b533ee75ca60dd60e35af8b4b97d0215c0ac5c8c0a3b675919004ee15aea4796e7d0c99f8c0fb7c83e0ff03d06bfd8046245942e327cd5e6c8f5df40715ff2a0e0fe1c0fabb6daab500c786c37bb1bbd337c3f43e967a01c4e63c41718c4c15e922abc32e6e84b7ce1c071e38b5d7de4e4105fe3ab5f31b9606c9fb5ba846b27ef666a87485cb09b3d0479d8d93bd7791045ef572a2538203203c62c2ae23f2bad6554a07209b12d46bb1ed7bf931b6a8edc10e27aa66d372fe6821e503790f6b51b352af7b24fef9b1f17ea7d17bd86d0ce2a52da36a6999ce639c5cf17ba8d4784d61bad9bff6309e0b99808b7514931f70721b60b95798eed15d3cd92ce96cda80153af97be52a9795bc411b17c88f5246e049eedc5c9bacea01e29fa517e3e9534359dac526294efa22d9caa051d0c7dab332546df4357d1a47c1135f3ecbe56200d9dfed76a63711edda00ee74d20eabe80927fc885f20a7054eb857373e41f44cd4cae0164a1a7530544a96e179af1a56255ef1070e074725c8d5ef2ec331a0a96c301d4caff3fe48fbcd6dfd88b20d7058b6bcbfd804543853f329c10eae2ca4e2ed285d3b4c9b2dd2756e90f1ff1969414ac10f8e9785832d70dce5236147eb3506ef00503ce413ccba0572307545045c9189dd7fc6a1fb188997651a35d08009e2c0ec8ecf8ba84940df614f6870dc01f0fd194812ba7de8aae21746fdb2511d9fead55c846dba650f14d76537fde7728f28ac550c3999bcffc91a407f0803ce3f7ba30eb3de395f04e5475e37c03395b428e7ed50b8052f43fcd261395e6386b0025cc60a1ffaabf77881c3bf1bcb9c3ed9a28af70d0b2dc1bf28188830cb259d6cb20165a004172292b3e80ccfb277bf57849fe0c4732f0430db493081b22d156e00c5976d37c615e25450b49524ad1d30d1c538113941d374632f427304a053e19dffb39b260f1536c2d9d6e200562520b096218d03c227e063c3b29a528a12e5c98d23cd3b92c7abf9f38b9f69ba0215866f700276cd890b4e824345dd67b1319c8977b976a51a97b8b4b2307700a57f7f8e803bb8438fac00887695493524e406c86ea0b55f33f8f67b194b3d4872ae23d0f56a56c7dd179d19dc671c055e822487f5628c55f51975928223ee4e0dcb0405f0f481c7481f654f74bc7682e1c81e03ed5f03e850081020d54fa345cec7a17b6b950f7bd678df8d0ddbda91e38a4a11b8e96f7c19f0be9cff97d0996771a1d637befb44a033c221dc1996d00c7eb715cb3ad68c30f25145bd916783f55f64477f7a5b272cb83d89f6f4037c1c74f7fc0baa09a31ddc7519ca0d4d175f4039e148670077030440f059931e386dc043b2125534beaae9d952fc70f28555032a9bf6fe9d02e4f5b087789f8eb8a74b26c06225532613f6b4dffd4d57af08b789edb058c6a469ccf450c0eecd5cc73f67741664642b8ba573dcfecd4415a8f104ed88e5d6a97063403945c24b575bbaa34463b6292b2f7941a413569f3b29a4c54138cb5abcca7ea0481f5d83a690e0be766b78e5a4d75a69e5f145309aca003bbd48374f77272d90c5ea4bfa1414fae64f010ec32c0101dd1403cbf8267e25862a03136494d5f41ece4feee445c6514ca66944e3f459a2bb6c37242b8eea46ac088adba724ab173d004509286210a743d999d95a7bde8a80c7b507f7ce1cd8eb859e9c8a9bd7d63b5707fc78136c483dc78890ea8a26a212c09cb43bfe5c2ca8ca16bb6cfd5d9fd8988e8637c7f62514bdd7890766c1a0248f6bbccbc16e0485a577287fe2257f154c2fbcb45beef47dd16a7c0e0b91abba9747417f9610dcd556e9d8f8a72151bcc25076efecc2df28dceb8c02a0124455c66eb854b50b15cd2432654ee558d280c16dece0d7a00693eee453798ed0fbcf610672630e124b30461239c5fad1d6d1cd62331699b5e07ad1c28308d58be3a8217b62c24aa9fc9609e18fbd86c0aca44c74b912cb25c7d65c73eb145a6eb0b4bcaa46059e355e041fb294733a60f5e7d89aaac626a6389ecd4295ebaf353f8887ddb4a629da2d0b65c5461ac7079791503600fc49159d7e8b8faaa117c69ca62afa6baccefdafbd1e3365ce954fde2dcb8eba98a938bc34799459f08e8cfd5ad97fdc62ac0b048436b37b9bbfb245910b0f4b38cd7ab0834fa28fad582dc08d050f060aac75b760944b2caf21472fb9ca1ff10ca356e2ec33edd0de81e5e2684948d97ebb8df295bc9329b95fcef2ddb150c23af5ce9d3a35c2382e8675551dc81b2dde287d6c305037db62e6101741da2232de929b48744a1b33a7506ed81d2bf031a7f51343529a40bc753960f437f73ff8e3ff501409190be218cf8bb2c7d0c298cd1e697ae46507dd3011b0d2b6876437c8130e7cfe19a4d327c92a00a52a8e1a9f8605528b5434dafa2ed14d0767ba4559511314a485f493bad3f162d431d94ee1b71a29228b495ffe5d1e35d7d8b8104db0b494e06ddc1bb8da81f250836b201a9f68db479206f1a0134d0c4e5ba163638c230998a8746300815fa031ff166f0b350073f004e582cde11db16233e027d5695958020b24a4030900d0a563b904621636bd31892743b98e8b8163a19ba7f80f9a60d539f450c12fc2e519e285d3af412abe79af3b783ff82544ff676232297886c0111ca99f8a1247bfbc1b31a190431eb3d720a042f530cbd20bcdc50ae02fed93aea6e5e6e31b9097da4ccbef3ccb5ccad32210ad6b9a2656f6afc092e6eb4796f455196b6f8f3df8efd3c2b95b706ef7991fc06a675ef0ad040f6fbce319557fe40d0eaa5d0dd621f71d038e82bbd754fbf1f124ec53945310b1dde9bec2d70715b039b201b3b58d409c4ba4d97c18e59d0427cc31fef004db61e518127fa1b6031709fc0cafe7aa8bbf0cc4ce4db026022999868c4465829abc0fce67828be364b6ced6f2ba7cf15871a5b10b984e1499ed860fdc1b67bb405f7e171f278db7d95d00ef5580dd8a8c8a618d1ddfd821bb9c65cf25766748e9764fe12391fa885deb17da730950b3f4cb1992755e026b57ebc577dea7401afa0bcf4096a761cb4ed2aad7cbf69e7d98749e057b3fc6efee1158af800cfe9f9b2231bb565423f7785d0ab5d55bb80a3f49acdcce806671cc7e612c482841007eb534e1f83337bbb5346d943e8e3f44ee307aab4d20f11c988753a1a23a688f31547b75571523659eea034c83d400178ab10d25f6b93f65e81bc0c678ca5f25f3b0220fb4e8bd8f3179e3532bfbeac791777ff04794f09db59adbdf9230929eacab96ea96af10f1bd7a61ee5d64021c5f2c2982604e0fb376c20f764a2d6a67e6f8cf111d79a11c3616307b3449d2909636059f14a69a891df438aaf5f16340d12ce45aa0a9f38ef7c95429e66180e1364aec6501508a27c0b621451fa9389059d7a7512d2483560d6d70bd24297f5f924d84f1ba6f7590aedd957d1b4cce6af03f5fdac8ca03e2bded8caea0fc3792bbe3ebb33b27831a0105c56b13f8bb412e34b44e9cf72ee31242de2f60fca7fd68f274ff653758c97bc4d2e0e309ddc3f8be227283a93d5fe88b95204381c34a01585481be3808e39e044e1e2970003e48cfd249d486c38d5ef24fec541d7b771d746c83d3890c56f7f02a1fe2522f13e11e58fc0cfdd3ece8bf10280083f4c78d982667ffe5555839849dfb64bedc5297bd66db34c586b62c47c1dddc84cfb45c50389933a2d32cf261616cc5be3b596747c08cfc7a3871dfb6531764035158f50e611e7e0131830c75a965e3c8ccb44808d0adb3ce49338e7aa5923460139ad59b68d3839d336bf3159ddf2f3c0fa81b3559a4f203cf9a6a19e6e20a946f73a49a90d2db797b3aaf6bc54b7b2a4b3e1d60118fe617f28dd4f8c494a64a422aff23d056719a734cd355c32519a5e49eff11abe33e7909684fc1e729c253b1e9fa4c243ca2ffcbf23c4a1c3230cc75a1bf2ef7a3701cdacea21fddd3a5fc5707945f8f62cf27adc56880a74960ead520d4f77390076f287417fbee24a739c00ab9f7a099916873b5ece20f23e7009f2229d1ac261395259cad84a2418082b099055cfdc4482fb4c9c54200ab656695517e583f34abdc806fc19e88c637d70b24e156b580eeaa917ae9e1925cab8201f15ce16a89b841be11e0ee06cf8511a89016a2a032e2ace9311a70b752c98550d3416f3f9f46095a1aa6ae6a4a800b1cb3d6eb98ea2f2403dbd28ec39f780d32d8fa4d437be60f6f7e3b97f5b1906a8f49aff99519ce1f8c7632dc4285d7943e4de80ec9c7cf50662b5e99ad4606dc64dcd872830ba48bd4b2960ed4687b19349d0ea3a13ffc64ceac62a8ac8c3c6eeefc5a6b87c368b599447d2c716814842467d2b151dc352ee59090c49bd5e036e903676b35c5ebac6758ad118235c89d1c365a67f098f02272430c28efaa24850aec340e6bff11a5cf07c354384de154c328e404fe10d3d34b870e23de3aaa22603d13f4db0f45d20baa63f8d824ef142a0c133341862a74b1cb5e2db422749ce51cabfe676e7f84bb58558eb91ee4ca67630ba041afa87b2a95c16a07f414c0b48aa2fe383356e5645cffffe133702fa719180f67c6788c852d60fd3991a7456ca56a2b7c35ea06794a8cd648c20344cde828b2564822601e5da2ca6f04696b2dd4926ceb88c0390770c4b27fd9355d76cf81a4ae42c815f26c40ab62b02dbec61aebe15db6136abb5d6496c3a288359e424ac90c41de501883011d3319976324462f1d33aaa46aaa9d2d953421916c5c20c380dd115b4613a954e1807a5192de2c45baed6e7a903938a899e9f5aeef3913eb8374ac8be497e52a06426972943915cce21a27e8be1b0562e6b306edcd69260d2a09afb5ff3a26ad2d983c7e880605d83e9a0e4bb8a781a057052c9f5dd719d9d1670586b375b40da594b93bc923ac3f8721367672d8c712675a486df063ff8d86139d5100c0276dbb9895faa5a21e472f6e139933af7d5f290f3c7cdc3d2520b0efd4ceaacc7d3a8a9f3a21950f52df7a7d491e15eec8cc87640aa417f62a218fbe26f73ed999a12e0d9a5bf5baf6692700afca73f8b3f9c8f7b7b34d4fbd8c0c090445d06e2e11ed109ddb6c0c4a6ad00428ccd83897a9237775b4fbb5328fb7f2090a90b52f00de0684fffee45a361cea2855ffbc2f5af19169a6c9f71b0d4e99d3f412387271c8ae4755b72a1d3f2ffd62639ab9fb6c84d759fa80b06b300e1890c2bacb10b67ad292273dbd3934ede175100d0ac35b066d4879a6c6946576ef96a636baa5f8c9fbfb94c6623737979151fa2a3c857718511a1c87674156cf35472fd6276a56a380d6757fbed220e89af552278e6712fafec367b40cc4de6d2ac7568109616b9ad852f9bb8ee4166787b727c715243de140bd835efef7f2db5eda2ea0e9ca8b8f4c79f5b04c0562bcdf0d8e87743a3814d283113729849339502fb690e31d729e1ac2cf30b26cd30676fc1c69b4a1ab473bf0e22c62a95846cb1f3ade687d2946850330cf18aa03ea84e5aa225f8e912c62205fc4f6d7d6bcbe73d1956e634b43cd130325fab779272ee6de6bfbfdd33fdfa13d4718142fa2a7e0fb27417ead30e72b689c1aa31992d6e0382b47e5c1775d5067686b297fcb0d336fa282d853286d4bc6f10cda2aa286ea84749f92f2b8a9d34a2cde321d5a955295c066751b58036379b6810b10ec0c75ffaa65242d95adaeceba1c034bc0a43d168a644260b55a824b51a49f6f30092c024fb403448c507351cb8c862c751794bd4f4a18b0096b27663390b1a3723f9c76bfacc180b7a9675a504aa0c3e5b694802b582395acddaaef1652f831d2533614519d815b632bb5c4e55c3cbeafec40f868f383b2bca562db6c08dfdeda5673a72c10f00a4f3e48936b96d17f70090b63c46f6c950ccc1ef7dba5a945ab6362e7008ee08b9ccaa9d6b4da119fd340942b6c5b047b7368713c2bdf67f780500d2f154f58e9d2918d9c9572d6c09f27445671f1018ab8d3314689bfd6ab5a7f9276d6b62c02bf11870e883414b352c6cc510e9d56c546d19b18652259fb739ee059656f09b82570128c5fcf9e797999564e63a5bd924f22cbf6b60302aab6a4ada2f5c7c0a5975ce222cc31355e0a6c29f38c527da1f86ff19bf1d47775494063ec04e16c16f5b3ce4f4c9f19aa7a4df183d9638b58e44b2dca04f773e4316b89b4ea9ede89d78418838f70a107c40361f6b35af77a14481d18de6b475957e0443d9d81852b555c398e8d575e87829aeb42ab5069d675743173e1cd0834310fb2f2f3d804ef4d30259058ed3f6002148bb4e311af4a2536c28d9b79a0bcc92613d7354f7f12b9fafbcf3b8fbabac349f3abc923a03ba15cb4d137033b5e023d0b7b07649bc5fc4c83c45b1ab953ecb6858fbc8f25fc71cc8eae9a611589ec08cb4025a6abb1b0cc51b61b97e9a49c98026246eee7bd4f7a6072020a387a2e31f658a9017c058f21043f1710da263356575ffc483817ecf4db325f95adb33054491606e9a190483c5b4ede7bd1910e5eab89de54ddf3aaae694b6cd90f28af648f3b03dea0619e7b22f90e6766452bb355dbede683305045df1897e1c0e377e19b27d8d154946a05773f7fd14e8743a81fc1ba70377ea2b7e9fafb3005b58ae36d0dd313cb1aeeb6d0a54176450d128e211d60a2718f327c62d141bee9f260be44b99109636cbabc18893177a257a7732e816b8d56649377d1401aa69a1fc2c4c0545a1ec6f05d218e161b18ce49975102b2a6b605fc0c085465989db30315b9e6ccd7fcd3aee0d9888f194990dbb6ad00c641e32de9e5a654ddf2379479f66857eb804b39f6b9da4ec919fd0bb48d7ad661efa48e447320a485ea5494c9b2422d3d12dccb15d77b059116b81002110e6ac6ad7bba28398f42cd5dd1b2c8d5f31fb87cd94b11262b23a53dc98eb9a6a85ef826aa6305d484d0e75eb01433585d80c8f5aab7fd538da07bc72e966692ce675e9f37fc8d833cb6d7b526dc201d3d8a64b6b12aca1b00686e6ec9c1ec00ef187550d0caa5d0f69cdacb88600803a83aa4747c8484133ff8fc60c408780eab43cfbe1ebf5f67732b626c499276a3e13f496236b642639b2f2d9f4f3d7b8b98b0cc240560bea9e99b709808d12aa01f0a86595c60bf95738f4da037398d47c5fc307c1f6ca54fb8e1949cd19f620fe649587788b39f1e4b3ec7fc1c6aa6764e05bfba144b2b5e8935b1ec21e2661f6704d74cfdd3a73bb22c2769509ddcc3f2507e2ed16d9f462a0f7685e9064d661b0c230f9d3007c67d6497a5f1a0783a5e9e1f0b67e105a45cce64c7b9d3eff638b96fcd5decf3a2c014d02c63ba3919eca8ab27e5d75f93f810730cd9d6dee38e77cf61983e3af3eb2844cbbc5010a130441bfe7d514a431548e8c372f72867e393b96618027f55a50214d36c785829be8b6c6049f5e0ffdcf61131daed2004686bae562d10619c145fbdaa2ace46861c4cd942aed9e7d6cba6532c015671ca32b45701ab73414d44d9849e8cf3668fada75f11d8d0119374b694869e45dbb9ed9eab72d798c29f7147b12a985be7859e462e6145511ce6139098887513d1e4297e4df1704a980ccba10601c808f83f5430ada0a00e89c85301bf8b0103b5cb45ea5565d4616af666a291e7e47405f904d36850bae07d97ad2dd8db9955efcc9455161426022c611c8b0bd2e8f87be67ac9f782538226c6e613594b454328b85da08945f8554240a882b39f1f3f85877e71a89f63d5d4a8c30393ac3893adfb26e1476c311920ca6b34748247d91c05dd455fffcad0fe577aa74dc67b1c739257fa541cb776f0d6256735e69634166d63fc553eee60d482b731b89e834b2a2bb17a33a56e49dafcd47f9cefaa3a85f441b1b6265d81e58d47c49f70359f98a2861abc88415d58c0ccd39dc67d793edb09ad2f2abcb74d51e14bd7b39146fcfaf5667419412f17cd3fcd4c0481134a2bf926060a573867856d9a540f8d076c4abdcd48351521aeb8ab854b5b471d548ab0929df9753e0cfa9f87d6bf0d988fa127f6fccf7196281ac8659e8455d613cfacc4330729fc1b83bf93afb9cbf10a2d02c40aa78336595a2c051dbae6b6c70a88f85225ccbc3622beac9c4bc3723e6ea6d0a0e5ade3aabc0a4837c315ef8486dce63d98cd09209ca800a8930b605a635eb39e4f25de2ef68d4025900522c5cc01e90aa680f1c50dba7750bb351c0c93851460588b63aaf07d5831392b644265b547db9980a1d49fe3f91162b9a3c658088d95f2baa16f09cef4fc191da3ff721d153a0a4f4453c97e62bd36d1d7309b85c7c5c0f9d8fcfaabae2c2a48e3f92a50775ee01cf1e5db837a72d1c997acb26086d88cd1bcfc388feae5829aa2a07dcdbd5037bb46d3470bd2158381228334d3b4cf951e7b7e772ef161d7dc997a78c14cb684852d1a5f44b13fc986048c4700d42d45a4f5d090551bea53fc2e3c40f874542c8935fed4e352e7fa3a6bd89e428c244796d8ed746532be1e05250ba08867ed4dcbfac746ca1ef40eb7f891577f2950760358773d92de4c0bb8cc8520ebd3814fb156777042cc96485e6caff4901795e8b1437f375c7a6c5b2980dc2a2c082a04f70b7ec1b86f128f74a160cea35019e8daf93e296c3c9a7c2193ddbd536b9c7cf18d4533d94faac6027eb7b48bd5752df958639de99e6115b0110acfe2769d6d72e556016b79657c6a802ac0b4803232b8dde4e5d4c552b7387a527428f3155d274eccea88e4992dfb964e46646c89b125f7e82dc134cedf77ea129ce6a541453624f404348d4205558a56e3dc114acb0e9060d8d7095ce7e94739e34ac8688ef54edc7190a194125c6f7580897af4af3762fc34fe48264c45465b842c562587a677c929e23a1515876de77a4b52798d1e53556ad182062102e671e4e409dc1e1acac02306348df97e43b6deda283157f981c8873e853f3677f96d1d481491423c5341d7a241e8bf8338220ff9beeaa018a04ae185729ae0897bf0ddcc518192df7d9e67c54d7217b255487c5620dc6e22368ced6b87fa8b6952ddd404fc83941906f4c76d6ee7b54c4a35bf62c93ef3feaa4124d2416ae5fb3295a4c2fe94e7c9dd3c84a1dedcfeb54418b8320e534f012c8e5bc86c21a17dd4932ece199a6c2a35368c98dd91f9d24c7253c6b0abeb2f74d12b13408fafc9f66f55e10036753ff182bea9b111de89c93a252c8f631b4278211a748af8cffdce18b0a5e1de804aaa3f2362cad19a27d3485bbf5952bae5ace1a8b56b8108ea789f741e2b9eb8bf210ac8d2eff11649d642ecfc3b5ccb440af119712c4bf9e4628289813e14212fa99fa80e83427058d1d8b4ed158a874c49cd6cd6859eeaebc2880b0f1b985392407ea8981da02463d55eb5ce0125bea6167eb228016072c551ed84df6c4363df109bb835d58feb223f91853c8ca23f0cd76269b604d9df063f862508846bbfb5009a55001a36f2135875232a68bb498f15da095dbb1a73d9089da4128d49838b4ac202924f23d3a9294968e2277f128980cb90f90a1b47a0a536b44978ab4199dca43aaa1eba1fc9aa712ea2fd1ffeb53816a2b89623b3411be1a05e8dd46da4ba3b664631eed93077c090ddf0b5bfd9322ce110e7d476e5214b02de1fe5f19aac05e1f9cefc0e774d2cf70811ba844c294a34d18051ed9a06cf3632e4fc32e244056a357d122ebd29b6bf658ff5314ef05bfff8e4b01e071614bbee222ae1f3ddd8358ba6e8ee29b5ebade80d53f157d285f1d85ff0af91963fcfd9cbf55e227e9fc2bd3cb38f905d5ab75bb3fc55e8ce95e312b9dc77393b491be1f63e6b09b70648e3970c5d2f0106db69a62ea49e864b76b949a912cd642efa05556479b1a224699546f93f4b9e525d0b4f15b301fa197babb40ce18c37428b8f52d9db1601959e5ee59bc0230df42ed2026df500e8a83463ad1ca9a4cf69289fe805869e26ed2cc7c345f2b73f33fed985217310651e9769e0f312930a4d8cd429e393464b060907358cc23caf649e0a7f31901bf59c90896a116ea0c923a33deff8a06b0a6ae9843e3e8021f7fbb17ceb3647fca75c5ebe41b8955987d892dca14afe06f904eb9fa7ab4ca98fc846c4b0463e4a95496248d695132e6cc1c8bce5278824fe1aefe2115b1b90d8d0a8e8b74556818f8782264ae2459624bdeecdb3aecf4cba8d2b69d9670ca80d5d3a2ecd0edab22827b9c1a3a2a49fc5c6e941632a25e63f482de0dd146b83f919d7e8c66a2cfa01036bc9e19841af36b20999c14f6b369b4d66f7cc8f9bc5d982876e3366c90f05a8bfa308494efd2d3e29f3cfa5189d1efc405e66b34fedf0102d441fed31bfc14f9c1149672eecd48f4d71ee1f1ff295446824e0561fd5ec6eb62f9a71da79a444205ec7e1ee7c7d7c64d5b23a692a3720d77301961a4cac834fae5d26b3f8412331c39a3f63d144060964c135581f3ab572b05da145e919d696e05876edcf9563160ea9588e03c9c333109528b8231154ba6794e8297c8e0f65c8229e43e954b6a63a184fd8ed229f8096c98e370d8a25235c9d78d5c2e24c48c22b09766a0967b8002b9d15cfbd8f449250883f7dec017d0bba55dbfcbcf2f7d2de91ac6b2774dcd8d9a6fa0d1cf938a2e9979a01b6631ae04d509e454ec391126ef7ccc170ff8e8d68fa0b5a22f84cc88a0a14fa95294f93081626859ca14fc64ab12fd4f9d7f608a288bc63a219d853116c8ae519b18774fc9c57c4a02eb85afa28c7c72529cfd42b16dba66c5ef392f532e6e41eb798e5c67207e8160ba36d9a60cb2c91c3048b78a7e93c6bc8206b3bea474bdb0172f715beb23cee694f575c76a41535cb5a3c6bb2c469c1ac1c16e0abca645857295873733d518c827e5237c11904412ba22a60087e4e84e7cffbca2387a8c12d343110cd11029888aa4cdea52dd10ab08ce44752b4e510811b038cff266e97f6e18d61cbcce2e4be41376e09d820797cb03c4d9bf68784ae2ca70d4ac8c91f57486da73d968976c7a9946a8bb256bcc44704082942816da3397a2a4d243132ccd5ba0565a54160bb3d640fe493e64931af37786868426689cfb043b16bc9118d34e30b59c0be2ade96af9f09e56a0af4e6dc20fb6590b489fe380c8318c49abcac4cc6202770374bf037bd0f0d14c322a309f3b5b1bca80f35aac347da9716198bcffd1525d66caf379555813dcb3a2a662ea929b8ec86c810be01b32ad9329ae545c500a0eec74436877cc1c735661c1b7b488cfdb2b762b449078aeb2bfdd63c293e3af9d5e60c21fe643c13425c45782da8870e774118c14519c48cefb8df810b5587900063c6fa4713fcdcd97683137fa600f705da6922f01087aa1b5bc1acb08a2644ec756b6455b12d89138fcfd80414ba62ad3d7f8da919f3d486aca489f705c7aae784b694c25dc7ed26624a058abc9d38ed1405f7a66a3941240b74ce61849bb35b34f068b923e28e5e705cb60e84d4d924cd36c81177c85bc9102ab44e71133d0ac57a27e1ac6a2f5bf29d13d26965d9e8a8499f77a3efd4cc19bc8272d1804ed78bbca204f1ead7553f9adcaf7ff1038b2b27b5a9a28878b4ac38bb1d0c247c58b6d3bfb7994eee1a715cfda7912c249164a72750adff98c98e88cc03686d61fda1fde4e960c63ed8fea5f1f783eab4175d916aa3c44b1026e051148356b445e180d340e7d409a8cb1aabde3786d7025f0e742c1102e31fe47abd5a9290d6402d87529bef643e6d5b569918fae3c915a9af08b1ec842088abfc871115d79a91fd0e8692bb3f4d3b2edeb218df4ea4ccf53c4bad0b87af43e66c418c8bb7ecfa2f35d75e1f0a4d158725827c1459c00e0f1672cec441a6804c364f5f11f2bae6091ad9c3331aa96a20a7c665c71009086d5336e19a27c901fa0f51fe668cdb1a1bca34334bb2f5bc3e5f3c0aa38e99e2b638fc2f57b39f59cad187ac352d5df3df1db3021a0285f50e272e4e920848fd340242bbd94377d4da3609efd3c35568ed9520ece040312817303661331053beb196777e3b14b095bcd842913f0a914f19479f4fc08dce028aa2b3777e49887b8754bbd370b9632aca2d42a42a94d67d4c461f0d8d16927f8367883f086ed3ada14ff098215f33fc4b93ca9df3ba2d442a94680d48ed097a3b406f90e07a800f2b13d06a747a339419ccc088fc2729d9a7b000a32be4751fe839aede3cc67ebc77c2c4af601dd39707376c89827a4fc11928c8d8f50b9de6eb126db031a17abec0bcaa189b1dacfa0081d8baa5e0e9427f01f0f115fe60e9aa624847e278a8005b0a5d1ce481482883e516295b32e7d259c711758eb470e89e66d1b6de8120b254e1a25c6fb32b2986cb887e9c7a18978e8a15e78129c1069eafafdd3a1f18861ab22a54f37fa0ec014a4d3f682d4110bfd26016df8ba9f23dbae9c74abc6d2bad5d51974a5136535713875aa243e3c9f4488e7371e6d770a6ff462361797994bc903d5d7e1b965248cca8650f09ea8b304142cbcc63a000825b49328ffe0015a9bc02816b4e32367aec84112c70d40eead95462fa7b711735820927b10b8e70e01a34a9db02c48408a3e73ee0950a33c247ae1d0876ced4ab01ec4b26d4d8c535b2027321377e3d9019e03be06bd5df870811ab1fd260637301aa3d5a5ab3fdceaaf56aa08fb891cbf4d67c50f360766f6c1b88b720f4c5f9cb91073b2ec4f174e80f665403be4a632a0f777037db370cad8b5bfe0f2c9d5ae6f6640aaef75898eda91b5a238971e440deed1b6e12697360fa41d25c99d9a0e2a831e54217936ce60c83613f0bcfd3bb80b8fc10f4b63e5d153c7ffa3edbc07bb9795ceafb66b68995542738f8d2aad947e431362ffba58bfa1605a60b1084984160f0e4fda5442bf7179cd1f6f253ed93b2da9a68a0fab6dd06a91c1270258bf7450ab74be5d86c77ed8b321998737c1f78709cee847bf46c01d976c93bc21464229d858f593027d150ebddf05eec0cd37094cbd31b068c3bee5a0a333e10c13dfff41a67b6b9e0e1adbb1230bc1024f170120f6ad48ecb8c7734bbb25623dc095f07fbf9fbab3d4eacdd1c635f2b82b13a8bbebc4d02f84d860da90e216a01bf4739448f4753c2db78649ed2c33a3eb18139464598ae92763d3153f26caf52a310cfd5ea0e4402343e82805f85d92873d343f80c42d71979524a253b921475ece036dca595a9a9376d39a72163fb522c00a11b2e20c14a6c167f0f3e50ced7c62ac6200d0719753929bea77d406ef74f60899035bb31d803fc334e84795f3724ae0a1ee41124542f807541a1c531b5ad9bd8fe4586100929dd2b6a2652359b822e5dc0e857c7729a374f50460924cbf99bb782a899e88d0c739179a84e782678129330a512d8eec7999a5bbcc9809caaedfc4a033698ed76f7f58fb9f1b27e0e16ae4f4f5dbbf31cb8fa2a5d0f2fa9d411332f7896bff9b087f68e0fa7d64b10b5865ebf7e4a6ea7b47c3b134089dfa6dc59c8fad6741b247805613a084f27e04beca82fa3e86df24a5a1bfeafdc85c1f4d012fc0de7084f1f7e708ec07aef8a7d0f889c362a1efa111807c8b7ab922607885c582a37f6c8a5247f3e13e1adeefab4248e512c9a7884ae51f0c44bcdc0fdc333bc018dcd95676972a8b7d68f91c869cd6f71b74b38086e217209d83fc6106213051d25b9d64e56f7bf40f93844a4d4fa7d54a1fce54ffdc6d7f74fd66c12ea5d80e89495da9a54745672d0f2e5806bc591d5114db20fa7b43595718e2efa274375cdd6479e2d45e0efa2565e469810a617a83fb99d0aa3ee8901927dee00b455eb2fa88540585a7789409c4521942922c7ee450a8d66029603aa49e229e2f14e508e5ffe72d2c5e600a28a460807211ae96a04287ce1a0aef2367eae575cd0e4a670e9c951e7ca22ab8e4e5b07eed76e4d4af54a9c9a873201e5115d86c6ed663a14af74b357f2841318c95be1695610c67e5d64a658161adc4daa92c742b6bb8c173cf8a8ce4a9b83b576cc25bbe5580d567b35d099d86779980d253587a252f4c7a1843606985955e60382ca1f0fa0b198ca50ae4c232400b2f6fb1120a7bd4a15564d45502e1b054ffc484a0e4baf261f10e7909f10a8752e29571267ea85932770bd165e8196788f9bd4097e47d8f4418f062653922a4d62b811fae154a8a2f594d68b7bdbe24b26fa6d9bf363c102a6a8e95fd8fd5b77fecc4861aa8468f822eff4163ec6ec9d94c0fdbdcb92201d4fcdc1cff2a1fc26fbeb008a12bd156089f82980786de3d1907514a201494246498427a764f7ab83abd57e4f858a05817ba41255ac0b6e1ced002060b1056a8e7a4bebb13f3d1004c75e9c7d34474419a5bae62387de6229cffe59e5b8e1b1c90c691258655ed6dbf1c6793062458cc8a6144e9c22f1b17e401b1907360baa3de29d718a10cbfdeba58b41530c37982e022c15af37c38346558209b0075d98068690703b6bd34281ce8f1082a7f0f18a8bfe9c200e4b58553b002fa49b28b80046c39ea87ae107593b62bdb77b84761eeee178997c507141ee7b444a2c352f984c223bc929dc407df5bd5934ae5aa41edee1fa9e5fa108d53f423e3e4b6a93eaf5f9391829f6430c26c6d2a8327be5ba310f128cf986788ac34d18a8df813fc1f209abedc84c0914e487bd23759c58a7ab1948aba0088384bda39a2bd8c2eeb566047b385cef105ec70f2c85f3a2430e638d14215894a16772319d8af7ca1067d137e9a22be0c06c2bb31521cb35bd19da38141da9dec18a0e2e30690e0cb689698136937fc9cbdaf74e1f2ef7cce89fc2206bba4a319dbba286a1e3944a39b6abdaa307cf2d8bb6089308801d183d3563302be8829db70b2574df3c56d68f43aab68d57c0b82965a36e8fe04424b99e78bb36bf4b889d74c526767ce7eeb5757040a3c9d8823c2ba00c6fc41709c470e0d545f42d03faa5f21976649d950ba50fb09e6776058d4da6531c58331827327255ca1d36434c8f5d48a13c257014962bb70ebf363ca51a23f73d89edc7ae74e27dc9afaa8e0bd9856c205e9834ddf28ac240e067d1437c278a8636e012a8643d6ad0455ea0f3967bcb52e9c086f528f57287da23ca6f13400f16f20f729a3d13a1c016be5715b2168b4b2672c29a7cf3c368c8a15fa1c2af92b3286ae972b8ac61d2178af99b32b7aab21692f699f0a6ccfc07d974757688a2bc42c8540100fa3b27f299c82c596c2bbca5052a571aa1c6f04f4b38157e27e046d578e348fc76b3155081eb9dabb9b32e08d9051c63574bb46e34a1fc94f593e266fe519b5042120f340d81c20b5c1ca194e298173452c1048acee9817444a79b80b2890c78aa0001fd1ab501aea307e94045aeaf5b7770779c3246fa99e6f3b709af44c2d89921342dc181329b052e64127751454ad41e95e53a9f6b767114c95760264ce40b76df2dc0eda3d6ebc31a0faf94231572f9e4eb71b978579ee39812ee0ece7dff81207038624ca8e978f59b79a75e1958ba8fc53053e26d231435475e34a74a0b5cbf653159c3d74186753eb84b708c9739efc88772905cc9bb7d8c44cfe0bbeba18240879e21856efa3fca0327050f5e990642d67a3873970de7e7f0fc88e7d2f496e5a7f3f6e8a45ab8a5136cf33991852b8e7d2f57708c3c2f8c9d1e219b3f758b8ba4e06da9932478ee3be977322394d74327a90ab4559c75bda078a62c47ff44fc789406535290b5c8764c18eed82f23eb6fcf2157ba42eaadd577271f57de917d4ec92bbb4e69efccbbb3faaa2ab84a40ef7ad670ec76ca3adf42f1c0b8f47d57f95f7763c16f62af3ef6cfcad34fd4707a8dbb22774986f41608999a49e2e90e67a01584409cc7a01c44fe5bd5e803c0e48578ef555a08dc930c4c5ab3aa9d10ed2f3c3dbed7c0488396dace0efd9fb81716dc1cd35bffb323e082aa1f5f52a78057b17f801ef9e18e29558f49eef341f93bee2a427ddf78b8dc5687ec99827f029eca5da1d664556fbbec514527b8f16b0202b92d58b46277db0b4994dd49f54db042e0a04560d5820ceb2da1c753aaa2bedd8198ef2171ebc075f3e161ad872e2b738312020237ac205fc2c660fe2451931733833df5cd0b30a7a1e0a3e734e1d5fa0389dafafd91d82fcbdc4fe970c322aaf8830b326b6bb6b5776f79649caca0c790d580d3fd741a8554811e2605953001df9047a1d2ea40c32800bf199102c4d58f201a09deb3c4eb07fbde5e0cde70b29595022c40d504e3181897d1b07f3122165901077e2349b30cdc177d278cb439ad226aa55dadca8e09b1ba7719fb6896a190d8d9f609f269f4bbe1b21def2cfc700f3e350cbce1c279ba8969de3d018a565a9ff7c24126a195d1aa3f69fdb846959ff67734bfd297ed8228d8734e5799dc6041a9a1b05dc64243479c9f75284f8fdeba302becf716a994d3ec13e98a508f1cf799494eeccb88f9d296bbc55d69752000f5b6ce970215ced751420fb744db6b9d94011a4b409d33158b6b979505eac04884fdbdc6cecf3d70b63afe38f8cbf3af09b3b28c7281dfbf23824538e5146a236bf71c8868a71a80ad118e875e82cc12dc1cde63633e33a66fc45e36ab55a2d974b6626bb5c4776f92bd3641919999919191999d6acd572c95aad2cdadafcc42736616ca258a58d98b1bca9dd04dda8ca9b27e58d509b9fcdcd089fa2ed3f574277c0371e3cbf1d3742d6de0cfd7743646f8cfe739b9bfdfc06c9d2ebaf17a52fa6ff6c6effd19ba4ffc6319f404862fe44319f45783828af2b09f3897f9494c6c0542a9f2888b6967db69681d9c5272df36222d04e571cc0c098688c36d1180d4e34466918839add5607d8fbb40ae929ad4521c771dde5666881d10a6329062410849cd7b3e6db390ed0f3f3cef6c9014a776a3e3fef3e5abf5a5f167325079650ba4377c4aefae7dc79bd5ac2baaf72760a13aa33b19f91707edf7279c97782fd0af467f5be419d074da9eec4b44ebd04df7e731b97d43125a8b51a85940201393a82703312eb5c570984b8674153cef6ea414e783877e23418c739d0033d75ce01613bf5531c490ae43e930f003d9325df23b14e1fe8bbb28e79a05a35105e9b90a33b889ef331cc5ba87cb2c8aeeb3ad0bbf24c253deb2ea9f8d6a60d69388eddf8f3e4ad873685e5ed11a9eabaaeebe8774b4af0accbf2e9b0bbd9194d27a6673abcbbd99b9dd91a67859e5b9201eae9d75f92c1e9e9d3efb8fc74375e1f39229ab2c9cb695ee5148ccb13ea770b87ad6a6117f0c9d55a58f5e4dea0eea6a3079a0bba4ad5aa0bd5e61d7fea8731308d3118ad6830b250f66986a8e7dc7eb1609ef310bc2340b2af17b6606a281505cc29284f29289d9f1c91d8c9d0748e00e993744d7f9b9eb6398ee3cfcd38aa4deb4ab4cd51a51a7f3aa7299bd0f8eba9b45f3ac6f9aba429a79c50c3f1a7c3424e50364ef0c909e1b273eaba7461da3c93d02cdf09711d5497bb2f6d72aadcddac73506dde0650da0a9589c6d96ccc46bdf513df1ea47445678872856adcd17fa29fb64674764db656050e17d8fa539b5cae4d98cb734f62ad56ab3dd138ef4a010481e91351cb8ab8aef32f16ca3ed56ce19eec8cc639e7a090684a6a63f6e5849b985e2f9ba54d50d6c53e91e30f98ed1795d8956411e68c5a469762406a195d9a21cb73ce1571e31ad832dd6c95b2c0acdc646ea33639ce6dcac0675b798ef34e6a99952ba8ecbccfd4587a4669dc96d68202a12278c03e93faed241098ab7d98fa319365579ad0f295872c079d15ee00dd059627a832922575cccff87d952f9199c927dc97c9dc91ab8cdae4b8220ea9e4ac003161c9929b3923bac3399325df7343d01dce41ef3257e4ca1cd15da9584e3a387aca5b65a862b9ddf2d68aa7634b55c25ad956f1968a0f6b1d63999e8ed74ef12a0fbbd284ce99d847d26a6524d7ef836708f457f8822abfafaa7de8220d4d59936c8c6bdbb5ce11d919a581f9bcafb671b6126c8c73286fd6853939a22e5bde04ee4f8ea8bbb5c9b98e1eb0d05bb711a5885a6d2a85d52ba595d25ab60a305d3a83e9dbe92fdd70e56b98d02bc316dc3cb8a28a12ad5b310008309e80ea417b75d3ce124063d5659e6a9943ccdb7ce2a236e96fb1a91b546ed68152752324246999fdba040397b3d6ac928d057f8abfd4c2973fe9175b973fe96de64f2ae66bd057e72c4fad435fb5885f6144ec5b0fc1beb5a91e70ce9502e8011b69b37a9136b7d421602043e80a0e72ac9144d3c041892e5f3cf1218e31ba2872c0a1a200cbc79e2ea14028ecb8cfebfcfbaaf83523e9bcc63b8efcbc9ed5d60ada5a6d05bdea5e25b3f7e3e5d789d38d20584f79f885a1832018721ce736955bf695a7e7df97f111f69c7ee3cfbd3873e093a7a9524f902799eb58f52ed75cc343075cfd747da73a0526a4ed65e989cbd327e1bd03d019ce15895a8133a0339c3fd0e03fe85945ea587b9f54c9b6dce4f956ae53ce176b8557e0c52dc72b67f9f97a1a6b67e978ad5638bf0fdde953fc1054513a2bc1c6da55f904fdf3d448c4737004c14be553fc9497d091b71ed19d76d286393febd1f71117076ea7ee39fdaf9974df5dfc729387ec0b44abb65aad560ba956abd190441344a2c8a26a49c1aacfaa98ce308d55bf942b2915b9cbb1acc5ac2e5ccd712c2958d6532b0614656111d56ab5198028c2032251204137a07f625612fe628c8bb193814fd7bb5e97b316b7b51d07f6020b7d31c6c50c283abdcb22f7d55adb5d3b083185059fae7a3b6a29a5d45a6badb51cd762a870605c742feae59a1e4a607fd59fae5aad1603ad99688c3e9128b2a031fae7f79c57d5af90841054bcb55c5b0142671dd580ceba5ca4e9490077efa35c56c0ebf382bd2ebecbd6134077ac8f38b0f59a99b469fda45b6e457ac644546273c4c5af5ab74d62e9044f9e6a79baf48214df51514498f7fcf3c6947cfada42799e2ac5304e3d7d978cace645e3d48fb46cc6a97fd02d202ca73cf2b7c3757858c71d9f77ddb923041dfef9e79edb381d7f6edca7efbdd7e66f7694483ef75c8777a3089f7bf872e2db78f99627cf5fcfeb1c2c41efca5acbeb60fdb9b53ae83e1d56b004fd7358596115c6a39cf1fa72b0a471581902fd991d02100233e1bec64f97bbba0c82fe3976812effeead29915c11be9188bbdcc72ea163c68c19f327d073dfd12fe9872dc024d8d90f3039bce04a0b4ee4f881d65e829d013511475094110c5080c6165af8821672647125cc97255afb113b6b6911c5152950c2f67485d6b6c80e87e9706abfebd4ceccdcd9cbe6cbbca951ca4a548bda7c52565b0d2a8dd09d7656f9002fbe1d97edaafbe408c6b78b617c7b48bb7cfbcbb4330a0c7d533153b4808d3ea3c818f8bc5d89c2575f7a8189b7fe31b14f9d28904d5d9911d2aec6c5d27a69674872c64572469c719f1e7f44b7e3cfcb7fd0b89de19ea9882eafc1532622903e0cc5aecabc444c56c7140b6c49c769b3a36f494b660fbfcf5a6b4791ac01834ff33b27d7086d90fcc69261daec60303f719ec23c35fedc3805652ac6167419106cdca7552a9f5681a0f2cf03af47a2f2aff4ce6705c30c9c8e3fb9f39a6aab6fad125952718b370386f9d9b6aad4433b767438ca96544ced6d904bc969e1b84fe794476c2c1c3d0c5b24c9398bc585e1587a8d524d9b9dcdce72bccb4965b02a919e931eb64a5a66508a6d5acfa5aa3c5f5feb73b7250f7755c9c3e95866980896e53e6dddfd2b4f1e4ec710482fabd20d1375aa5646506525098b4d2905c7c3503c5f8f9dd296913232a14d595b5b8ecbd3f53cfc1b7f5ab9c5c269190fefbc1ef50cc779e0d0f4d1b24e86f46efc2171cadad4b1ce7994754b9b59da54e269b3f32e3a320112e8cbd8f1a7556badd5b1afaa63af2e1999552d439990954d9bad8e3fa08f24064187e3229b2170a72a6b4af0c795ad287e2fe361288a4bbe27cf127ccd27d0579f29e98b335e6b493a89ada5ffa365b57e4f87c293165b8bdd96d5e928832b97979196d178e7b89c7158a9a4e3e59df704f1f9a0652f5a67bc73232db31956b3f83479a6bc612531aed903e25bda32dee38fcc8a241dbf444cca38fe950c1933757ae0f869d6237616cbe6bd3a99da58a54e394e3826e8a1db32c4ceb56c74ec57c4389f495ee6c5d8aa9cc4558954a2b1ce49d2ff74fd7895efb0e11f415a46e9cafaca6b932db3b4aa572ed589c5f256ab25e348b0bb5e06bbeb7196f155adb696aeea62b1dcc7fa74abf4d166b7a565a7f94a354bcf5aa956ab41a1755e9b58d96cb3738a67477afc59b98e7434c340f8f1aa7c5d74922bafd7f27a2adf6cf2d4749d7f59e9968384fba679aa5c6b2fd7b6adb596e32ce796e3ace59c586badb5b66ddb341a4b27f5128d4583af1f565bf238035b160f17609b4f8e5c4366fd13c3162b7496e7b5906ab55a1146a4c0092d58fcf4d085ce6b60635f3f4cd95a33c1932f9f46e104ea3951053446c9b869e037688cf62087ff10a94077a8ed846ab5da1036a684b56a31e998277ae30fe9ac91e52dd5926ac7556ebd44bc1abdc5f3839eaf97316b943675e4126cacf3d7bd34b9b3317f99e68722b9060a3dabb46f56699d2b61225eeaaf1ff049a1586ef329ae98b48cb52aa193b48ce5ad5c8792ac7464c1e78b88a572511c626725bc70a763093fe76725aa45d548c713b8fae8ddf8c3fab1fe95670bd54a44773a6f82029324b62cc10afcaa71220a847e2792ae6fb99ee5ae67e5962d45bb5ae1dc3058d0c9f27a37fe8ce31831649144c49324a84ca1513094f062c61a4f7871a20a1a75430d1e9c2c5106952735d080826048228c154e708992210a162c35477a89c6724616988d265513a2a5b57b512d13f3d55a56bd270408e1c617834d15dc4ec7fe02bf3ea12b5644b5a40a75ab615a669de3cca863b8e0d3dd6b5a6a1ea47ad01f24080df2ea2041683e28328112a07c75cadd60001384147201863f2997a72f348cecc458f5d56bbce8d5ddfd814f105afdd68408b91c5a78218aa7b747181aa350c4dc20fc84c6680d33d8fcf73dd56a35217a74a96d454e268c5a6be7b1a8b0d67a5fe844d775df6d1571c3a74b6410bdabcd3bfedc7bc1141942e3d3253258b879baf4f4e5fa1052aaf4a3875217b62fb09fe7791e9854ae5f9cb67cf5310c7c8a9f74efbdf787ad9673cb3912eb85def7895e2a2cbbceba87646bedded74bacdeaf17a55f16db7461f11b89ab65a92c96a1e779469e28ba44dc66dbd80e257c8ad6662f9f1726c2e7294f7d60be4034eabd0c13c1f3cfbf9c4fee9388dfe522f4eb33713999d8b79ec4f540cf85d30fb89d82105a313a2a6a937ad7d21b6a933a7da25f5e8aed4503fdbcb7e67b03eeb133d039374fb136819ed1ae3f3d037350bb934b13b1ab6bdae4dcfbbcefbbd2c98b56d31c704ec7579b5ee07629d7c1d27669373b092b1a61573bc8a3afea715dad9f8be2ce7ad779d596363ee04a85eaa97daad56a3cd04ef19d5418aa0d354af569a89036ed4cc1dc689498a70ea66f4fbfd4eeeeeedadd67433ded274bc56a08c94aadb5d65a95be5b11ad88563caca2ac86563cac88c0371040444b04189d1e52ea48568a8c8abca3f7bc28f7eb96d4af7e4b6fa84dcf237acfebb27865edbcd2fa51fa555a8551870021baae4440110288102044d775653b57d6aef78c2ad6f1470ae8d31ca5dceda894eb9ddbce3ae775b394530ff48c53f36b087314ecbceb9cebbaaeebba2c72b1c671b58983dbec4e4c4871ce98d07f3e1d622c8aa20eeeae1cbc61487343a82eff854da69d895132a72ec46f8484c8c4283bbb19b2b1cf79c6da7fa4509b1f9067027a7d3093b61ba2cf65f68a252860fe73fce4f3db2285482847180a1e1ab1509b1fb609d366b6b9b5c9eaf2f49fdf34dd7081fa1955a373aa5103eff10700bee374fcf1b1b3e39c69ba4f83a6fb74e89e1ac1c0a7cdada6636bf3b3a1626e826e6c2da3fef9cd939681592708d4a9f5e49ba08e7d189344607208b2087c522b18630ca5673ab5192691c05c7a16866967722cf6a6d632f70f0c98306142a8ffc22e59fe7347b2b3b089e9cf94101354920885f4df8dede6c97f374201f09b28ffdd1069e0e74dd103e0e6c8a6543d20ab609b211b223bc34f4e1b266c33b1cda3fc673304e5a6098a8aff4e9ba18742054fa9b0d1e23f8c836dd606fbcdd10d151b2afef30a3261cecf300c8f281e625aa6c33fb7a9d904d9d86c9ed808d999cc6b88fef39acf6ba2b48cc639239adb7f4e03450386264bcf40281a249a241a2c2dbbf1cf69945a66f3c3070d120dd28f0c6e6a3651a46d24a9601acca0610d1ae0a0610e282bdcfcbd1c52ad560322837b499b29d32307270b8067039d99a70c686ca48db4c9388d4d0034361e1adb06f9c4ae43f334b2bc473e6f589e93cf17cb71f28929cbf38ccce8e348da46d29641be41b2b96dc15c8e938c8c0c982f6d9a4f33aef21ca7a41ca7a61f8097512e34955de0d33442da8a98dc004a1bb0ec71e846212a323a1a91462b2d4b6a194c9543a8db4c09e63fb7330e3a70b06726f3b36636f3136726c44f1f3ff01016b2b19e4c3ba67221afd72c632ccb3f5ed4e6e777bca31b0d4579f21fa523088223485de83fb7b5f9417102428101846203084507d0ee705fe350cc298f9fb469837b3b30ed4b002e003a5325f1502039aa271bfbc6a171687669ae7a22403e7d0059f594554fd90590340e7d33ce93cf9b0df2f9ea913f8c5f2feb20f4e764cc44773ee7a0c43aa8c09c9fe6d3f58f82f9ebf49a66509b9f598bd5463fcdda6826253951cb6ee9e77d1ca73dd3c13949969fa4cd8d9832c8c0e666b3e305fb8d1e177cc66afff9073eb19a1d1bf0d158a863681c64dab10ccad38fbce874fd4c795228386f33c7a965b7cbd317283039b79c3039512d838d39ecf25f3efcc4d62612aed9748caecdad7a50dfbc3c9803bf7eed0c885f1da31f309d5d9a914c66e513bf1ecc274fcd2642d9d968130295c5a821db90cd3d248fc03a626e846ea0fc6704eea1e33e1dd23c23333333e3619661cdb88c8c4c592ea92f53e69075fc51791d9780507ff41fd0759ee808fde7d9e9f883936d720619d8944b6a06eed3363a441ce7332f11dbf8ccdf649da252278aab24a10cf5b0b5f9f57892e363477ebd5c956dfcb50a40075fbf267ffdf0d554abd58258baa20b2f50cac0e3cfcdf15e266c89545ea03203951ca8fc4085082a55a8b91a7f5264e9a3a714f2127b4a21259756ca4506c04ae95476299fca2fac12eabf9d5c36b5f985b7282a352ab6d78e27cb1ddf7d0113460c12412cd2be138d51a4a78b04855f62abecbe8d3862c0d22192a553c1828a1754c4a0b202d6f893e2217a896df849aac442180a0e4089774aeca3e83f378dfe730d8efe73002059f9cf1b7572033a70211e9246e0eefa2ce5a619e61a261cf4a97a40ba6046fde7b15a94ffcc32489b0d98b4994da6539b5fd214dca3a94779964d3f3858f0e951ff794f8f28ff79e965ee01a54d1f6160fb740969cbe71ef64fd236f393b4c2007e925cbc496499f8cf0ca2872c22c74ff2081d3f49244c3f4925aa07a695bac1e71f49c47f4edaec7deae1b39264a24f1fab9161fc4956f19f571f61f0d9a36626d1367be4d3cc926462f9cfcd20e82cd60225b2b358cd4af5c0bc4237a8995b622dd099a985c904dd31536026d19dcfc3e0d3cda7b2f4f2e9b5a394115d65fe56d955892255a58a54952d5255c0485529832cb3abb4f956d95529a2315ae5e856b182ab2c31f3290f6d9e2c6d684457a9fa56695fa6892c2927c79f1459aa1e070bbef974db7ffee3bb3f99747f3374f38d509b3961d01c3368ce1a746626d998d94492359bc801e33faf3c2ce0b347520f26680f29e82c48909284423ef9cf7b584167394e3d927a2cf179a1b1af47121925c70be9c37fbe02763f49db8dcdc63e9e2a58c667fc146d4d3eb96cd0d8e72d3ad381b25496f2eb1f9591b2965f575199cbaf53ea818e98bac1f773654a9da29952274aeb49878d37a074c4540f72544037c80943cc7f1eba5e545240c5092a5ac8f2f5b7246572ba3cfde7ae9c1ca8cf218fb08e30b0cbada03a5c509d30e8ac47928d31550f4817e8069ff76842a7093afb4e40774e1d26d246773e9e1df0f72769cb51019dfd20ed4063340832a6e4a4f15f123acc2bd44ca240ea7f23884fd066ee31d55410faaff6b2d136c68ca1cdfc969f504d05a1a7e308bdc29831b4d937545341e86db8c0a78e914e94ff1ca7d4d139ca20eb64ff5cc7a86539ebd4da44729d241d2c3a4a3a50509d250a044acacf1ca7d779d23a351d285fc34798e83f6f408f0b29c9f294f1d157484f90a02045a13bdeeac972b532b2b123d4c6ced5d07f3e0b80182b6803c7f18a812305f5f894770178b20c4004847807b949a5f5381d4710926d234d88f7e41592ede0882052474c491d9144ea882696682c75c415e6a78ee882e7534778a13bf4cf9ed49365073f8e5026d9d8e733a7e391597621b964b2b18f46a6e65b65fd235c481d2143ea081c5247f8f04ad53c59d6cc883265fd16110fd83fa11f7412086cc2f59389f732cec43e92eb333e96b7ff689ba4989e994f25939d0519c11b9b9d19c0cda7a0ff7498986e84fef3b2bc21eaf1b34ceac0cf52e93f7777facfcb2630ff317d29bb98492597999fce24c44f6ffacf5d394e375036c9c64455690699352df0693ed5fe737a57a48f7e5de52e3fcd27959325ccc7d1493b45d932611c47274712bc6ed67a665ad3d6a20187407f262ff9bee532f904fbad7cde4c66a0cdcf5592d0664d8709051bfbbcc7939d01c93d9cec8c03df12a62af548ea916467b5e7daa717c964b342a4cd0e91364bd40192d17f4e1ad9b6b59e289e9bf9f4720a59a5140edc4cb233f20907b9471269c3502e59f45f528f1e4944e0d33afde73db2d81c611b1ff0697b24fdd763c8ce92888c9a729c949c72a2aa933de9538f8dc7bcbda030164a0da588524c762664c64faa24a4bc319a95365145ede70f979f3e4e9caef93325c401c6b6ce41283b236d2708c502a140a8ff8ad8d93834e6d359f97cdd1ca70fdb72b6e428e524e560c9c952e630b5f9b9accc69b2b12f83a7ff9c47998153065d38a39fc92755ba39ba31b289b21153ded484ecec26e887bbf2e923e3fc6973abf9d3e6b68323aad56a3f90361bfb9c52d2666729217fbd3069fbcfa10071a11471a120717fa030f1fafb03450aff9b9f2c029fd846040ec921f0390e39c0d27ee41d3bdc3c0e21fde0c971b2339b3036623ec769b4b9e11ce14ea965a768ebb2b48c0669f3eb947a545df029b29eeccc00fe39b6e12758084369598d7f8e87ec4c887f8e89eccc03ff1c1bb50ce69fe3a39e05f1cfb1939df5f8e7f8c9ce80f8e7180a8369d9ad653bfc731ca6652fff1c47d95907fef9eac9ce7ef8e72b283be3c03f6735d999cc3f6739d9d9cc3fc7497666a16cecb3504a368aa9e93ba5ff3e6741b1c0b06e2d0bfd73569896b1fc7356144b4ccb56fe79abd632ec9fb7825aa6f2cf5bb655ed3f374049696c6666c6ebbda0a756e0bdf7ded42af46958901a29425a941b897c3f93c5275e53b6bcc72501a38f398529d7c58c5fa28b3905d1c7fca20df16913468473d0c18c0446e43ee8f7c1ec8107338c08880446248584f394f94191e6c0ba37c55bffa11bf404f941957ed480eb532e7b75d513d89c96ae7b4a81c838afd5adad3fb5b3458ef80cb1e5ab06f7875eb47bbbd98edb5f3d821fc13737812d41f3f2b5b11a01cfbfdc845621870f4a342f531babf66b61aaf6a087a9d276d72742fd3c36067a05bd06d9ea939e7dd031d041b7002dc2511e04411fd2b39bc61b570eec048252c654c93db6a1da4611848df0a510fae79406826e010ac473d041075d6504fa05eaecd218e8580dca8207e90b78e80ee85f79c7928e0ee86863366d0c849981cffb2035c392c3b5ee6e89d0f3297045b2339e9e216daefcbe70f398deab5cdeab4eef3dbd07f59edf55ff00556ba5ffe538e1113d5df221ccd7a45aad0501618464c5ebeeeed08ab0379066473ac6b55faf2308f66fbe5ee0aae47965f2bc2279ee4fe0ebce04bedeca8f1431d2339c8e79d3ca7dda61ab0c827d3077fe4076b3e7e1aaae563108adea0f56bacbf283f16748cb6044567e7d9587ac5663fb57c244f8803cdb2ad71a12095e4d52c29654d8ca817e95abb5965c395db9fd55cbc51e70cb5b65fd9e14a6b05c26f7f0d8196c04199ff199dc04882693796ccc734af3ac5d358cb5f2faa55919847e1652cf2a0e4435098be7d5f3cad454b978ef79ede235cd73d6aa3dcfab91d07b760884ee6eaeb6e5381226827d97db779d25f8d143073dcc40abe59edf8bf1ebe5de69be13e15549de3093363dec8e844f6fb56aad659e7bbeca58e4019f7886cadc6c314752b7bfdaf492b4e9dd319f37cc277e3d98bdb6d2a6975491daf43cbf91025f6f6684571d47c0753442e33334f9da588bf6bd4dcf4d6f3432e332b98910314ec0449bc97454c0cd9d3f68d3ebb104029f35efbd9c089faff7ec08344ec711666872135a45134d265f233271108d51a2c9649f7ea97ac795d0a7c08d5f76e663635c9136afd826774936703b08d56d48ed8ac2ba0994b8cd7ececd9ed5188838e769d92cc8deb6b4f1dc90047479ce8bb48cf59c162ba03ce724744d7194e7dcc569d9c2e539afe128a5748c986f1a446ab902054f4710aac5224c409bd65bc4a129d309f49c4884db2b97619c033d97cfcae3719ed7dd6e44d528a912755d3737a36d34d55b15637b82deb60f62b4edad73b4c77a109f22306f7b28ed4425f762fc7a798b57b4e843256aa24ad48559e0ea549bdabc91027b4d416e99a484362b114edd4af44756cce77d2257029fb5a9e9e2543ef1cbe9cdec3227b35f2e3befbe5299e7797b9d8f3f5ee7f5bb93422529c1f30228862e2bec80060e4a04f106cd024d71d2f2820ad85822a20acd7a6db25e9d88983edab40e33323ae9646e32a57dccfeb2335891d1c7dca4d25e36661d8866dd89305d41117265e528a51ce7a147ab8d7e5df7719d574b5a2bad9ec775de711ce7f5f012710b8de169c2052d591c91c50d302c173b78710129f1c60f42598cca082208520b7cbe70381c93a33c50ecd0c51522a50516bc800ca13682b6d88105192f451c0183db93283088a92bb0c2ca141c845470825a2d74181adf2a51310412172e7043a80a2021bac8c0c3134a5cc921a8298717b006200693113a7cd962861c6008c1408ea61682d670218b1bb42840195f78b1016a07a72daa361cbc548e1ba648bdf57bedccd5f67b8120984feae5f3762f57cf2acd1671ef49bbbc529820285c9001b5022e34122890217666adc5e22d196f3fc8020e377870a286272f68369f4928d4b35a80ad7362fb7062671cadbd936a5f69ba60aec45dd7cda816a49e0f8a4ce0f585873271717af28ef35e359e44edab9b496079f9f03ccfc3fd34735ceb064a774eea9c48a9774e93882fe5cbafbf76c6d1ac179f213c3dde17234d808c3401a2f4e3e80b972e5cbd521044410993947b16acc4ce7cfc7cad7cc0a2937e52251f3b5b7997cfabf29b693e5f24555a592ce6b3ba3d533909cf73cef9f779d9f1d8ae01a2931e01d1c94c6d2c02a3774978fe7bb5d9458ef80c118552fdd55069bad8a6dd1f15424441ddfd514a290d993c924beb06a7f7d769dde0e4bc0fe679de333ac5cd4c0012612e172b64e58b8f484838f9b3c7872d9532d1faa34b3e3cf9ea221efaba64a5cbd79aaf97668fbaa549442c72d7cb093da0d1051731c0618d311830c3153480410595a038bafcd2680fa3d05ca1b0ce9e5ab52941a1c7a7a7e7726edde614ac73f98e9053e0bccb94e627ae21b5ddd33d6119d8a59821092d5bc6f0c20b2bb4b6010b3264700306377288a275b77325b531ea16d39dcab9a06269b3863cc8c0d4e948534a399514034e25a5ae0d3b5bcbea0bbd75cc8203db10c41775a0a7399f9ded3fc7220ad29b4fb1d021870fb98ee8e6c126ba533d65d4b2fad58e0aa066bc3d5f63004cd075b5ff7e021084cfd7d710ec10dda95eeb9c8ef7039ddffce5106c98e84e759aa413ea520ae8604e2575ac7abdbf83565a759c8203fb9f5df50ec9ce74205d21c4122a1c65a98256bd4bb2330b0c01e1a58b2aa8c06004ad7a47a452fa7808abb7620010582e60d4a6ea886bef2b3db79f27e2b6b6eb52803b9f2267bb7edff751903c812cc7711c94aef3bc0ee9270c7c62104ca5a888e2abf3cf3892642593a8731c8f27dc944b293d05efe775e3c88da3edb18e74863c816022d0acbef37981e79c13394a773a6cb9dcf4a363b583f580e98faf9c0ae9a977e804b6f9bc74498d2dcfa4e9194840f1c319b73986a841e04b97286c453871018be84648b9dae519a5cdea43067cf2883db5adf8c3cf205ffb4ea146921963d0c802871d21a658e186a81b5e1086569d56bf4a2fe07a6676ac3a87a305ced77a434871182085165b0c524c0184106d0042082104114bc41087131aa51508298d18312a494b4766c071c4162535238808224b15305c40ab8e5ff457e86edf127a755cfd559d56bf1d68da1476eb990f5a15976c3715a078b2b424050b5036a62430415ed0a2a04f9e3c79a1daea0bf5490c946bdafda83fb8e6a103a0f4c715a416985a1f38a5b5cd3d935e418a1f6c53b0414313b4ba848d862eb478e2863768d5e9ad5197e3daac5e75f8e206751c8290e2845f60ff8a8f58505ba2895b142ee81c2ca8b2840e4b204d418326822730a07c819425872e4051b26042895b1a5ad88690c0df1660a74e1d9f40fd5e1a755b621bab1e9e0134c40a364059c9410d27bea075514435715b411a54a08056ddcd2a14c2aa535a3bc5296b49c5500d7c5143071aca004384131aedc01659e6b86288182ca541a3943ac5a1dd4c3c8f470ae87606867d2f8f0d9178cef9c7b9e79c33e9de6301aecf79253dfa7eef8950339e731e7b2f0f11cf3fef4a245e79d610ea98aeeb4e26dddf7c7aced9520ae862c768db59a575cf17a643ebf59122a591239ed7ad04859b941998dd7df058db81ddf5aefdf3eef36effbcbde2580b02f93ee88ef5b03cc2a93f7d28e0837ace95dc7b2bf29e7779d63ac222007a1881eb3ed6ebbc52209d5bdfa1b325371f5d564277acaf8a700a29840e7a0a29bf3ee014a6b4a7007ae8295cb72b8789e0c15eef852db8d90cb89146195f7238438c29684bd82082055ba4c1e5892834eb4a50b0627984f19f3e609d8f007ae8235c4fc1badc00d04337027ae89d8d982dfbb26d1b4b9545aced6c676d7984b922dff92cf25de493f03ce7b72ba5dc5ca463f9d28ad45ab529414168942202c174290556de3269b37da88a658552c3a38fa2cd28b4d94a95a922d5a42c05bb7591e7d5dee476d6f2f68ac44f1e25c03c5d4ac1edcf8ab494822c5f91ec4cc65bdeb76572ae42ac2a54853ac0948aa3a0177df41e4118898c2e7a2dcf243c3f3a154558ca45871121bd7aa54f47221fd42bb979f45631b6e4c31a807de523601f81e5ad4c6decb6abdcb28aa83c7405a8546f02f79f17a9b0d14557f957c246e781a532ac012bc71e8155c611205decbc3cc2f64de03ccc52b027e1796b6797d6edf845363984edeea3a0f658546bfd9366f1d519506bb5b576f8829aa487299e6e70d000871ab4aac11757b0c440cb1a435768b536fd1036d849c09c01a512be24c94009ed791cf7674de8597e8a3c92f69367e503a6366663d5cf6b79becfd487d3669bdf95b4a6cd22477c86501532ccbabf14cfbb0ce3792936a779198be12f84382d197cf830cb1d02100233e9fefc00d07bde71de324b7dba3cc2df1341f2f9f530e5290f81be9fe7e727d4f77cba7397a558f0f8b40f69e769eff1a2ce5a7cd1659d57e7a88c93fd54b12cc2f54ff19b0221bf8970ce009b312706f63fdd9fc7ce7c744162091ab8f8a18d2c6843b08859810f6458b9e1090d88ca9827a4c071a5cb973968bd86132e535479e38534aaa0d960bda666884d0d0ff1f9e0cb26709f84a77bda94723d04f26be88ef5f208b7b75be741671600c19a1a0a847c0c7a57f2f0e037707511f9d048bd17816136b1cdb005378ba62970140183932a56003a82628b2b436cb1e4c40509433578297a63055c8408011a36ccd074c615213134eb3ed692df9904ba53843fa463f5afeb243c2fe53abe8fedecd2acbf7c5c80fd4f25d651b04e82f512ac770d2a9968547174821f6200c7ed8b9e195450018e157618c3051c402b9c48e30b3982604117291648a9c109314e40051a39d413da840daa3379bd0774a7da25768c18057436a1832e7740cdca75573dfa1dc771b987ee54ff407d9808590482cb777ff6b89dd13802332057882883852ec4e8c2a5842e4362f058052ea149140a2d33fef41530bc7579d72c3c48419a1dbe60a66d76d9ace6fdf2895f2db36795666b0ab06587b7feda12c75b2b9ede3a6bfcb14ec5dcb4881a03061cb2a042871663a8c1c6ed490e728411a586155d6950c5b75ffc72935a61c3b7e3034c4941174b4d480c11b4802d666c01c5748372f4b260e43034f3a34d2558ae1a1c1f3faa28c28aa06fc72f377954e34ff7d0126a511434545bf40c09d2b90e2bf87cbdb8d080c90701306d41c514b38adab7933ca9a728159e74a0a10721a02b7254b1c4182600020c0f2ae0810c72145d3538b36fbff8e553a8f1ede204bcc030470d490899714312a8335e9084174ea0f44073babd7deb431260adb5d65658187ffa78fdf9c3cb9291969a161dbeddd4e2826fe799628bef2c567c7b6afce91e1d82d021a3cfe53f5d37cb106f9d4a51c65bbf32e8e084ab8a2e11bbbe1e2988f8fbeab65f7cdb20c437f9ddddeda30a1da3e0e147145b48b1c38f7dd11c54b0d65a1f4b501b15fc5983f3adb4f4dd5044f96e2896f88e82866fd3d6ca450f38586b6d4a09d3af348b2e348a3f7d3421c7b773ed4416df4e383d214589059e37b014b1022dbca8d20515da89bf03610c45c1460d4facc102cd7a91831230d1d55ab0a9830ab6c2e2582c486fc178dbc40b6f9be8e26d1d214a86182401861454bcd00c80458919c6b400032ab6d08ed8da850d4dabb7a2f8a6aa0d7c9a544c9396515ae59cfe14bf6bbebda8fef4f1bdc5b7df2554f0ed98cab7bf9a892cdf587c58c204dffd4e8414e75c117dbbe528a5d4bb563de816be1db7f70a75569b68acfdbed0e513cff0edb4e6a61cbeafe77da9cf6d586f7606f31c88467ac3bc5c2408bbca8168a3abcaae91650b752cefb1b176b2c91423a3636f32c5c8ca4737423a2b37315d959b4c31a272323779659c9b34b9afeb9446e20c0bbde5403473ccb030170952f9ca8168b05486456074d28d606fe52653528e3d954707a2511a2bc36caee11cb6b16c211b6b5f955db3311bebf2d9432a9f6284f4d1c7d1b11b191de726533c6f626474556e32c4c6dac74c3a75cda99a71841a42e4c082925a8d86828db54f392115a500d1fb3c89f861ea841a66d13dcfbbcef3dc731fdbe4f4f19f8756ec3aaf760ce01ef4948d2a6b985b544a09db9b5776ee79b67e1211da261ad8bf857aa86b6d5b11858d8708ad732d4342dbfc4622dc5b0ec67124b46c5657501a62c4e90ad4cd57eeb3a302ec0fe7425d0c21c5e998cd9ee5382ec344a8ce7908d52fe79e03594e2cb9e682fd8bb41f69f719d26fd4da974f974e706bca751d939ab79d479d76f7b3e3cf2772fecd83e3a3e33a666d4d7eb5691385392821c56952020faea8a2449bc2f9e7b4a9bd48e714b7bfdae9ed4ada1ea2d15e427b91234559ac1865210416547c0134258b0b53a678e1567482f6170a305042c98931ae48c30b0a582144135151bc7872a3fd1506f69de7729e6b573e93f43c8f9d551e3ba3b41e251a7ed10123aa7c41a2872b5a78210159c46145940d2db031416b2f72e434d2663b7deeb9b216e1023b6e7f5da62e6dd468adc40b319883caadca95179e52e044176bb400c59526c24a2bb5e4c5a185a31a0db7bfdae9bda5e6b8527bba9474cb4f9792b6bc0d5da4385caab447da4c596fb55cf9047a572a25a6526e6d093e6cb552672d532917dd96295bddc0e623e2b76cd84a79585a17cb560d22b3cbb1cbe561ca9505fbbb668090726508305fd4b030c38bad8d2dc0d8b898c17ac25ca817a715840853c5cb0d2af46002ea881c5a80c40b49dc6e379b4ab1bce0eab591ea4d8cf736d7306d86474376f6f22a8e5ab0985f650dd3b1ae626e58601142177385d266ad254c04cf73d8d1f10cba533dbc750c2082b03c4921268c0fb44871c452192dd8404316ccc25295cea040da6120f4d723ba53bdbfef153aa2b45a8dbe3ad2ca8ae7043ebf95d7b63592b5f2e45b80cfea5f15ad58a67278c3dc121f3771a54eee6d924fb9a8e4539f872b4f9567cdbb563f9fad23911174414417447fabcbed092eb7a9d3857fd561188661485b1e96a7ab954fe07e954f258f24e5a1fbb458a6fc54f2e14a0cdd7a4bcca973959970ffb9ab46b5596b989208c344f0cf719bae166038a6bcc185d3ed865b19266ca183981f66286287186ab53549cc1589070c1a09491caf88c244afd0210abd224a180f305df2727b97e3a52b42ef72eca127762349faaa652ec7b022320e7300a5c9c046a832fe2abb561609b2b1eae61a98d2482a6c9802032a45b51aede5343ec5c88ccbb84c6e3205d600197fb911197fe52653ac3779d9587599dc93294dc6cf974c8659a7346aab0b00074c699406b379c86d8a174b302154abd18ad858f53928530f2c6610838815dca062852d872c5d5c90c693a2183a712c572e96a4a73c89f8e209f55b6ecb93e73ccfd404debaf526ef725b9e3e9e74d977b94f8fee2a576e4b31e562b8a4048f7d87e8a487b60cbd1b7f480fc3d5ca5719097697734f96a2b74db94fa7726a2442bb20a20b22c852f455499dc71c257c510444142c5b147169401494932d72bcf144087bf58a14b24aeb7524e272dccab80cdd96ac3a8ac062a548afa3086186850ef4613eeb63bfee6371593f8978bab00896848970ddfa75792b55c5b451d9476de2923e1d53dc5b1f57ee2a535c6aad15a94d2b51385f7e10e3e6a409a71790ba18c19145862861a0718b1ab5e0504c9bb586b98181cf7a6b25a64692f19b9dc9e413bfdccd8a7483aa4315ca5a305f4978faea3e3609cb53a5a74b4a88f99086b6842421d726cb9572eba94cdbb4f9a46d5a17118bc4b6446f89194644f4d04310739220dfcaa7f513ea8bbef2d081dec5123bcbebf883dd964accc067bd3d96ea354c8daa62c20e6a99ad65156633fd54c905e95e0e29069866d17205871dbec0c20c169aa880441b4936b01035c62dcaa69af44cc6abdb1ef09924c877509b55a66ca38e5517cb1aa66b6da632970d7021c7156c40010311a6115758d0010552a06005a0ed6b880652d259913cbf4579651553c35407836f9f81369e38438a1b414b5c6895a2d1c61550a29cc812c410484996da2cd6707f87a4c4cd8d13ccd00228a0204c6025063bb4413446050daa44a91525c1860b58a0861a50ec00c40d524009c32b068a38d2d244ed053d14d1aab7cdce68154760ca3823879bad861ad54fae0672e43913b53198cd4586d8186c0bcee28727282d3b7ba20809d5187aecac4993272b4e359ae74d46108326689ff774b6ab4edcbae36cb70f59be47e8548882f6391d8dd81eac30aad14c1acf57525a11ee35bac0a9a74b46acd183112ae0b9c1082e183f5d3242c9882423848eb82fbfaa1ba6be2a6b79ce8307ecea7cb1d8260c68b84ba4587082ef89a2278e9eb0d231fae00b8cbff75e7f5defefbdf70e758c125da38ed147ea9833cdd029d9be289c7058a0bc2a42f6a9bb3c43b8d0175f113bc16363d52f104e2a4eee69e25e9067cad077ad5d74bdda1d2757c1f40fb084988ed13f0013411d6bc77ff114a1ef4b95385ee958bc17bfbaa74b47507ffaaf58b8ffd1194fc76e87dfce83076c5ed1070e0d98f574c9c9197f7dc0e0d325275de8fd397af26e5953be78ec807ff40439b2a1dec635cf3d5d3a9ae1cf170ac2f33ee8a34deab1df291d2642bf75effbc35a2bed69933ac7715c36eb5941ce964d698f032c8d0746a4d6b2be3d01a59ca5b43471388eeb1629a5b4d21dea3cdd9362ede87a0345edae77bf7bf34957277e5b41ca59ff66d7695baef3ae486b5b5abb5220f4bb94f290d026d781dffd2e2852daac1def79adfe7134a7a6c0a614b7b11e6ee4e149799fe7a05772b43014bdd2d26e79a5501b7b8d2a33b057362d1c45afac34b2a3b41a8e96a36d2dc96512e84e25a1e3ac73344b399204ba53bf92506b221121c539b11b58e5c6e5fcb4962b5f95ca424a694d10ae96da1bda0b535caaec16a3fb6e91978db5ef38e3755aff14d039e8205856eb9d7589d40b03ac779eb2edd5b01082628b443af7bc1b8990e0e4907019d7b090b2b6e33a163abb025cfdbcb609d75cad1da53b392aac6d399af29a54896dac1d2c7740e1ca51d3e328e56c739dd832ca35f9ffe857f6dfb2a9d9b9c77d5fae74a75bc67dcd25bdcce778e88b76d2b77351383e9a6ab55a0bb4f61e22821c9980c753abd558a04b472dd030df5cfed293467dd7da4caca7f83bbe0f007fe2fc474495bf2bfce7f82b22ca7f4584f1993ab0148906f8d3f59e91d27bce7943dcf0de106bbcf7badf719c17dc17dcc5424cf19cbf76784e4a98e7a23853c6d56a6fbdf677c30bc4a77e7b76cb1b82f0223f0e467cfb072d0bbf7d48028c1c21a176d3ba411052de3a0cb0eb15e609f03dbb160621c5a140549e7724d8d8879b788e730936f63910edc460add96c0ffe6f880d256a3d550ccc031752a2685ec9e97085760306f6e9d8e7f7626c675f0a53dabd6cba9dc1466802f439a57d2efe8041ff3e6c5abb391266bf92370c4403a2b5a7bc5762679d7f4e829d51daf741d5fa95dc58bd8e2a0f4b58cd2630e0888760bdd29188f59a79a8c88da3984a8540ab079c0a4fab075885a7de25927695930e963011c0ea1574a0e746113aab44e7c6d143b197d431aaf224c1d97d0581fb761138fb3eb60ef98002a9413f74566b6a6464fea4f4acb5af5f0924b4f9f98d14d8fa799fc4ffee77c106b3787aeb615903ee5a3dead8067cfa5020f6ad7f3024012a9be586580e095b878d207aa86ca8e46cf495554f32c5d4c800000210003314002028100c88c562d170349cc982281f14800b91aa486e4c98c9d3288831858c210000210020202000203233690401e3de827d76f766f9f56ea322e0c86abbf4cb88b177e44329226de655a9f60c49dbdafe1bf1ce5ebba226328d9b6b710b3b5e1969f771fa9031921d16f0bff0cb23830ac4fc0b3706e17f4351a7f6b6d40b50004526725bd310703d6195a28670692fa42396320fd190c80f902ab9f2072413163804b019a12e2f27205783202176634a39ee6cb0c8769ac64430da1a7958c3853b2e6e2e177b90d5f1f2f0917e24c2bedb8d9bedc1b1dff36995b44da57863fd4798fdbdcdf17b79b6fd31b255adc7d6b80ec5be563d348cf855d541866a847b818e5fef8ff7aeec2d1785d8b5963e6c5e22281174d31e67095a119fac944b982a3f582929bb6c1099aaf229e2caf7b40d0f23f59ad18c87f53b741b7788937df71ccc46f81100524fe96e95882233a6f74883ce1786f9ede946f1ba511a42e7298b41f49a76b68c656ef0a39ff513b5079aa6d270ec897ce9970ac42c2f838caed0e1c24dd81e4599a0b7fe4419aa5c34d07afa18772b43902ad66eeb5b93586e5d1ecf1e79cb5c8b86d487f148b3568d5e579f80e9701c1012455672d711670adf424edcc3dd71a99eb176f49b4a4115d1ee0f6bd27ad37d6c2934df3aba302d5f265c6eb40cda8dfe32748fb78ae030fca3f1cf489348b144bacce4e8d5d4cf9b8f8511f8b9b3f632523cb78a04f0041a80bc34818fd80ae1d81da809afe1c03915fc8017a78bd0838e395f80ee6b338c2150d22e32589044f168a3ac0f2e4f68e307a61e88d483e68a91e0412014649826a4ddf5f8f351cc7ee2de1142fbd4770d8dcb2b5fcbdd71e31dacd289fbf4968862f11b4b93574aa116480457d77c128ccf3361ad07191b8967a2884beddecced1b0ceccf665a8cff0df6f409dd8289ca90b884582eb9ab8088687cdc5b6b0ef4bbcfc7696726a0f7fff61b07fbc9e00799430e2c4cfb24160bfba1dd17c227f30fd2f2a387a9e4180d018bd8acf19da2cb27495b80321d1c1b3d758c3df3ffb2945bad80b81a949784bc2bcd2a17031d32f149ba98d28b78eb17c0e72d165c3266fae96f96b9e72fdf05c864c705becb1fcab92d66e121c3a0815ba718dc5e9310f7b68c0e3406eab134f0cc6bb6e70b2497b3bf1b624b899eb5f61b181b9b2e0547de634b89776f7af52ceb3e4aa4b9905efc5b0b1863cd6ee3b9cc3e0c6b985fac179dba2d2274c0cd03e98193479c3d48594886025b9d0e4c7bc412149b2d5f1a4e913c9d54e14793c3aba3996603680b2ba0330063e7e35873398f94bfa09ccce51a31593ac771a7a0e2f8324bca0f722610b6984365f0faa5d3f7aec968456cc85d9ef86fc553b2cad3b04eb9d336b4e276ece19b83ca766617e0d8b2093958d534fa1e55cc9a3e2413c0fe3ecb8aa445afef872a010e56888c9975e5412346611bb02697f759de2ffbcf96ef4e2604b6f36a243d05e5e9017eda7f0239b09a1a6a2f4f72dd623708d28cd1756c3d046cbb3421a599b8213206a743b1d999151b81fc105e044bc9cb5021e0c1fbf910f4bd767702472fe61b8e0433b3ac9fc07e83b41dceeea17aaeb84b9dd5f180db9a40dfca1ea0c0c5ed784659b0cbe52c0a446bbc51aeb3c433fdd7786e2071f88a67238cea181a726e972530d73c6122fd1b735d8bb9502ca6f5fa94ca7badd89c6e5ed24962e53df89d1bfaef73f115361969160f232ce9a4bb48f8eff196d077b2ba1907137722f71c6d8dbbebc06a2205bf884fed6ff491cecbb8c50bd6f30cca3b4a7565bc574fb6f41850a341018f1d5112b1f68697dfc6dc256d14fdcf3fff6e402aba2e361be098a7bfe09a46d761ee655c091207b8d60c33cc6ea884e4a0e2dea837dd9d5929d3ad772bf8fc0c91a6482f1d987b4a5ca7c80a7238838b4e31fddd1b5a84184ae6a825ce07bb20cae9901182b66e722f47b246d83ab255b263589ea686543ee2c854a4b2c1c60722f74448964af1d91d18ff3d669b577b636b0f775457d62a09b95df1214171cc25ba4b76c204efa8fe521af68a0bc701dba234a2e3a4f060354827d878a3f8fc883a1dc2c3b50fa53924de6bc51ab7ad5a4615bdbfb98af1161190a67c2b9530b610ab1809af8267adc12c71a4175d7b63fcc75ea05d7ba08576d1892812ddb79d4d0221b0facdaad5560e5c351ffd81c646fb6a32695e4b14b16422c28493f2466c2cf63eb81f984f5e27f44a9048634ae16b656e208a4edeae37782c9b416569c7accc3c4d246ea7bc64c93fe26e4b0a839ca48f264565971da316fad59590ee424198e17f0e6848214302e901deca1ea465fa5663d273405f1155beed1b0f7e078ce7b526062eb118e793f940c0c6daa359d0fb9f3af805779717f49e5ea08227abcae6f3b559022028d928ec7a14d044533f796242b1be3180eb825beb067f4bd37be1eac39206ab23f5c6571fa4b17d2a0268c67b446f5198a8349cc7c62893c2f58e3c9e95a3a870aac5f84881456ca29b5adac54a9f3953ccdc25333036ba68edc5f162c8c5459490245a608da93526cc3100974970b48be419c6f131711d9e69910d3c71d592040ddce9cd3dcaeab9f1cc905bd08885668115d17a147a201e8260defab6578050fed2b0b0200b64a72c125d64f5a82754d4a8f7f75269256f1c1504379dde78029ead3799c51239f7217cbb8a5fb6fa976c55ee51367688fd615d079f58e88ee6cdfd05635beab8d5ce983dee8326f7e45a6126522c10a5ab27abef7fd967123bcdd4ffa31aa84f300d283314932062074612929586a281723877b2aa44037a8a0ea40eb400767171c76d8e77206c6106e040d19bb0366101d7267c30d4c6466b60da2a1fe8973bfb183b759a8d703ba7b615d89e8dc3ca8527040736582bdc420e813814056df848537cb471557218d4b483202d633f1955eceacf2add5011ab2516653c357ed20a3b5b318bbb74e678e97fda440d38fb00cd408141c01d2c75298bee03c31f3e4902e1d6393c992ee4fabe74706f0c56d7afb04547360f4b32a2fdcd361b062b908b10cd6169728bb8d9f17d435a873eb63b44e41ef172056d98d939d1f4593f3fb1e2ddb4e2fb3621c286336ad0eca0a0f36e7ed635152acf81977b27bd791e650f964bce4a1394f71769ea15d9ebd0727b03ee5c26fd660c9587c924017a60f531ca3f6965c37ffe83a0b469c758fec84757ac3e866e498e5f143020bc226521842f42a3a5b8c279c9fbddaedfeb262f8b921de2400c1b6f9185897f0d936a89922562bf1a6b45d09f83e2dddbe8684ab62456cdb1ca5547602d3b6f81a36bb48d7c536f8ed07c4869a48acab10ed733553fb312f71879903dcacda43a12f72e36177360b8f9563506516311e4bf53611c1f47d2ae4be5fe1e3eab8961d112213e1c766a4a50a108b15a81033b1e0e79bd490a94dbe7966e7311081914a6536c4554520ceb506e8d184c6d27e38b7ea80d8dfecea0d74358bff8a36b73fab5e1dbad78bb8bcfc12fbe00f6d5706b3b19c5d878cfb0cd899f1de6082268e6924706bc4c907c61f32691c7e6cc5d962b581e59bdf4bb56f339819511e34890991c5479e12dcdb1dcf8bf70acd1ef931ac501ec318e085bec2832808e72b965162c7ff7153bd255b98889061b449436071f25200d6e180dd7c45d118a519f31a83efaaa63d4870c6e8bee0aec607c692c5c49f5906d66c2b584a00d3fe0649a75aad505b6a27ee07da55063acc2490ff04607c8895a5bada73174812d32f285041480e89511b84e7c248137647af7a96ffd7fdd2c6c34a36ed8b8d2088f3a2aa29f3f871732b516ded54ecbba2adf2a7b4c477f603e4405a24ce302e301d54c4f2e01baf3c366c263141c536f878c74fd6563d0762a7d98a2eee714d262ae1d3bcf1faf24cd3d19b55161590a40d76869fd4d40d53cb5a701ee824ac086494aaaa651de71cf06291f4450ea871fe0cea1d8d44cdedcc5f2aa672d98e64b8d71ebe3ca4d1a1cf373cfe3923ab5ac26fa584dac4242ca0b3cba0eb9895cea16ff899f699260f2a7130c93862bb4f23ebcceb288b38bbad788c6bd0e75069476b265570d18a719a85183b141faa2cb51f0d853f6f447ae8c5354df0137399302618e23714b59918240e574aba2fb56b71601305f46c880aad1342dc79c2dc09acc949986da96569f708681363acff5f759b830b372cb17145e10c3014934cf2c20b9dd8e20b0f9de4c8ab9736288ec20b5eb2d57983c13153ad15729830fd89f0f5f831587eb8a9b458472ca5b8f5ba932b69016ed71a78e6ea3b49a80401c611e08b234ddd4c03ce272e68770ee1eed16a3c7782275a3e9ddf121fdcded72b9a0c4f68892624548a841fd4480ac7e2bbe5999ab55c8e6a7ce06c525ebc840792987f27d1589bd48eb2c507691854260973588d3b437a11191384fec633fb07e0066b8f4783018456f84e7671ecd64aaa599eaeb7c635a6ec73964d337fe393e0beb84933906c8afbf661c0d63875dc4236bf692011d7512f97b5075a224ecb482c267aae14592fdcb0484610bbd0a04d866dafc6840f4874a3fe56d4eec966c832d9d48bceba94e69f2681d07331a4692c9aabe863e68a26c5d1d7148b776aa2ac9f1d82ae92a660d4a48565b50fc460822e1cca9d56cdec18a27802a1416b30019eff8469a81c44f1212afc2dde2246ec0a1a111fa77bfb26a05e0f5c33f93da8c82a2087976e0ed5885e4380e3e6a0a2190efceef314c428d90ea01f647d5a164f9803590b9847d83e2bda202575673418fbe8e0a93fbaaa0213984004c6b40e6f88f63ae666a238446488b830edd0c13006f810b234f22008142f8be8655a814b6eeac78b1820dca5cc00af232d199d725be793d3917d13bc01e29a7149e081eae65bc6204db99a1b103786bc884e3cd4fc034fca5833308033a02fe0aab98ddcfddd8d48b377ae2f1c25cb617a76e6c85f92aaff63e5c91728304fdcbbcd5df07118af130e685d2e7e40d58c712c9c2955a67964415edc13aaaa2a866b0c5d0076c052dbe07ce2c7891e1b91b891f3943fd4b0af9d9b9cbcde7cbd9436165cd99e36858eec86766b283feee421d00699e86007ffe6d8828b21bcee2bf1fa0be0c0d4e67512f62ef1e01a0618c76f76bfa6b4e451b71bd84b02b6a9fb5722bb87555731a2a0093d58cefcc4a10e6eff61e1dff15aaa0521fd21cc8a59c2b6e1853d6c3c2e98fcfff4bccdc460fc72218d2b7c456c78e74902fcff26ab8a942410ebe37d6095fbffb6802335e4064ea0b8228aee802de040cfd851b3e85935bde28d6a57724dbdbb0692952eb83556c8f0a11aa6fb12dcd2cdd63a73217943749972a613eea29e4b2e087b5edcc8a9e5fbb1bb834c5297cfd46441842d362b0507c3933e82c5eb58585c237ce9c2d91f9a1c167f5d78e609830e323be30c99252059372a74b8a154906356943ccbbe0712d8e83c69d26f90d1a6163e0c8020cd708009f2bf9dee489857db17c6bef9c537476814e2ee30062bbdfa00848f1caa73d572d28422cc762cef2b26f0c1623e34655b2fde68656106d2d7c93826d11159f4ee1bc1536141c2dc82cd5804d9a102f870649b51b9b3d2c3aff6b8a34c7e75ba26c40e1d1012ffcc5dda26880288e14127ef94317c1e0b76a8c21f03b926bf1080b5e1fb9ef001d63b7e04152b19710ec5078b24eed19a1c94340675bfe83595b830b9855edee4d78b61e66ba4ed3501a7c14b035891fa6f8a1ef70e98ba0809632ff523b7a117296f4893db35aeb3b5f48d350e373b229b29392b3d005ded3ffe7a1cd95d452cdf215a3aa7b69cca25383224e6f24e77b1911e2ff4b5d25440cd69cdab6598705a2f3f59e810ae0b582faa003841722b3ae9112654c05a312fcad48aee3374336aa5addca121f0eb21732f100b4eca29a21cacb4fa8441859b47e3eb3ee06cd70c5f1bab581fc917760d38f87a928f7f4c299e9336eec867c6780a544a095b17783f4fe2cfd36c4c0316b0a337682ede5fb8ed80fedea4467f3565b2722e58fcdca603871ad78dcd782d98429cca35bf17f3da1689646b6bcb6a0177d8db9fcc0287747b2b1ab7fb14576bd7e88aa7413ad3a63989b34f57a0bb146eac3a777a07d3434b6914531e5e5a0702c96a5ccc4b6552443b38d83fa83e9497c3a751b2c776584d2b70a128a540d1d5a75cee8f9b863129c02960fbc8db8e37fb24d817aa476ebfe80435874dd00a67cde88bf3d06f32b62996e2c9d788ef39b47022456bfc564f42627096f4305d7fa0cf03fa93aa3b5faa661db9f3e4a62c3788fef8014489659643d1dba5cb7bc5ee7a12a79db6a30a75ad6028d487542861ac21b56fef526652e049eea541d515c00fe9006c231d99c60b57dbcbdc5946493be4136f025f34fde188b7e80af6b3ffbe3a51d75772d38d6c67d9fe4a5a6bd29bcd81276055d0b53459ff306e94a1c772cd245a8c8191ec8da5fac23634bd37211f9f7af3274b095b91c54290cf80db1a66c5495fe67f4c9aa6cab205b2cd711ad38f1672aae09128aa238cd663401d2ec571ac422e94f99023de93bc4a15b51bed749a14ce1aa8740cc1b434aa2f2607532a4a28147000c5a11d0adbbf29190184410298ad9c96d0a03b7a21497aebebee13e4968e63fa2f61c028e85fe40cc38d14ada008bba69e17e9c988667586c651368c65f527c4281ac67486d03592c0a16e2b5073a1ee3928e426e452dd24a065c29385844e86f0e08db725fa37ef1d8b38e92c40c9de91bdcb94cf844b88b4750069571638b1e5d6a9ffac36f0d35e728794a26f76ca3ef11b42e3323ade8bac6562e71e96633fa64d1d7e2ad34cd5cf38f9e4bc5d9405538f17d8d387f304c3b5c75824cdbabcfc00e9aff01f87b870550a02aed13421e006b2f08d10d997651d235ab25bf5a1635bedbb5b12d0c32e499d7f05a6dc29966dd6604713db489b0d4b60ae85d812cb866a428b044d4a0d6d6636b96881d4f01aa33888b4dcceab041a2a476d6734904b082555e4986878dc567d79e0f9f49610cd222e7721ccecf195048699585c4a95a38bba827c0582cfc8c56537414ea05f59ab0a6513adfa92d278b8a8bab074cbb81b0a529adf60c776bb132508b4e5501e57713614009dbff20af392ec34a4bb1860473d10382ac798dde09d3d6a15d0d617e3246097f41e9049cd6c249e0c7977a11b9a1171231441af08635e419e75a02e62ae486910980c34f02718c54f3e3422a3b3b39191d20532cffaa958801e14957674cd3b422593db7adba10d4c2159837ee8ba5e0a9cb900cb70346d8ef5d732f95d2de560c3a942b95c770b60432549afa3c03f10618221f8d03877ae915fffb5e69f546c3e213ead45605bbbf325cc158b74a443a913fcd1af30abc6b01c3dad0b94a389dc20cb31304723acc304c1c82de551510864871728fe7d28c50e33efb7eb07d9f73e2230e438ba70a4fe3fda5cf53d5ceff97d0504157d2532445ad8608bb28fa22fca657c50c21c6ebac4ca8d5051642da460487bcccd597e024af92aed442d541e18294a77453c5e33ba88859c18b2735904a9eb9653f51905bd799edc9c8ec56dc346eea415cb8e8f4332840a03f9de886c03fcdb75c8ebd7b000aa9bcdf94708b8707c2115eeeab5ad376f2c199519d6da618039c4905f55ba5e950df8af8272d086d583fe64f92eb8574b29e7831bb63112b07ac2081fdd2ed142832b5171ae93206a4eb53d3a1fadbb1e91ac0d04c9876528176af34e95dfe956519f08821004ff7050072cd4d15fb801ffcc4c86746545880cf611611564e79a0ef41128605275979642a4305ac372b4d60b960aa7ea491870c091f26900320c0ea462611f5a9c7b3efc7278ff4bdba5357b77b4faf7d2a2c42ea4e7a3985976629600f3772a0d6e871554cda82373e4b2e4447b21be57db113e57f8550bfda0847ea0d96bdde48f4d51f5cb7b2a5735cbe8600919e83cfba6b41c24ea8e10aebd326235f0b2625c7f9e95e6de39232d29b1c855d89c77245a1131dcd2824917c1e52b5c3936c34935013c4914ef429f48d05f7d2fa4d1d69a98be5e918e218aba646f22d4085444f4fa8e5c529a22f46ac501dfb9979138169088822320412e99bda257db31a5fbf6d49bdf6707c4e50e5241cbb296caf2bd3892821862876962cdc9f29b04955d47878617770599b273f75bb15ca0df1f0a6c34108a3984bd92feb39525b46db6c852da46340e9b960b9a701a5d7daf343aef357dc49e73777cd07e7708d518a26490413f490a580e21a68050b0c60f4d6803f64c511f72efb45d502acc7d5632c00630224c91ad29eb1bcf6d6c31cc5da752996adaee53430a64f205f890b0145efac6d1d205a45e11383fc2918158658488ad1b66f71d4e94e6dbbf2ee9b3c5867b3f683096ad67beb981d9767d6a1a5f5d58e2c13b475eda3306002b4ed26a1900c8c4183894527e3e3d0b1a4daf06ad98d832b12a2c5f908ba40e3a3753e05d99018e47cb21f39975b0372a657add72b1c094757b2285b7e9f55889a0f1a9f2b3fa18d298bec58ca73ed2216ebc1b0e6ac0bf38f1941b3a0b229f897899b903c73d9994345292ee3d2f71c54fb245e91b6dcce29b9d8f9d2aac09a5c30b7c86a14962789b8019074683015b180c0df6f559def2e0ff5e61113db4997b9ec6dfe868f019286db6c7a07c4d46c7c97f8b318339c897341679ccc3d0626007618003761d6a811d7c7057a35baee438c7022bd903ffcc02d1fa0f312d83785724aaae6556f2acf855ba5ca54a15ea287d4acd8fd60d69d8fb9411b7ba442e687f9b682414b269c9098bcbbd07e046ade1ce187ad91b0082a9d57a5d027de0efb53844c9b2f34c1f01127a7588769a3afc00b48440bf6db8e617b8c656e38f26d597cd935facf2e1d4d381e995780f00fe25c849597979336bfab0b911f23d110d41fe1d7ef361fa9889cca7bebc73031ff838b7281ecc1344fbee45aba6f40dcf6923fa882d595ef21be628c8c77657272ca099c7c1d4efce40b0ecb1929b0b06ff6fdf89057645032bde61b30c5f4886fc2bbdcc8e52b7f82c7360c313ddb6112fa0c9fb554e30bdf899202dfb923197ec273be959e70af2c7101387de7568d33d0c49cfbf50940ad495f9f06c46ff0c0c63abb6198770f7ddf54f45e5e4a2af913929ae0a4294b14713dccbf6a2a7f3ca0e3ec8a810ec1e8f8e814379280744042914dc4dfd3bbe32494b444c24a2540ff4608b60d22948fdd49ec7b15f899c7bc604b38b4a59e2eb74c4490b802ed10a812750c79454cb235836c2b4d8e724e66fb9c24f328f3fcf854928cba493f10a0dab9daaa68dfda5a0b10f9023a83fae5127832444944c04cdae7f01abacfc0b91acb54352bfcebc45777b0c85f88c97c6f99194b13855427df990acd88e0550f5f197025691170ff06b620942486320d517ee28e58732a525a2f7c69813a1e3c721c19376ffec83d1d98d38f50ab7afacb52b21aa57d26b0e9dec5e8b7a80217bc4e95ece341ecb0be5ec12ef513ad8d2d4a593db93233972a803f2cf059752cdc10e3376b51376ac2340f67bb14a8365b997d80bdcc2b5c66bb1ed54de4937d5377539306a73e593a951f1734161dbf45fdb1eebb30174a84ab4dfb63bcb70a53e5dc501e088451e1f034509091f48f971dd509de9b0548835bee234e260a9c7cbec8b7cfaccb6389f6e1fe80afc3d41e4c7782801b348454e9784169b5dc99e578ea6d56576a74fb5c2c3430616f01d36122cbc0dc76c212a9702c7fbba406a512b50baabf730d205e75216e16de3fde3a3163d43d391a547b95459dcb0818b2e53b857a4e6d468921dcf7d0165f141efbcf13cfd4d625bb4f43515394bd0a0cbdd04844673cd86c329b501ff15710b9e4beb78e7859fd86f082c1a9cec0e987167fb157419949c175493b0c0048dc7ae571ef3ff6cc988bef5040f9165a1a8963c2be7be1c3d921e40cb2f8d4b6e687fd488db2b14556ba31ce56372eeead1de2e8c024d72dc69d96015b2b44b0a6d48bcfead9d510ca8ec99bb0c68f0a7a22dfb838ad4b04979557740eb8f481702ae67c927dcec7c5b34cd0fb49f771e60605a7938d5df86c2534089d14414f82784f6257e6e265a6e6c94a4df0e2571f61d45c967b1b125bd93b101b00442fba69a7764c42d67f436653b2c8e2552aef11695326449cffcc872460e46e7f64b71a48b9e5d234765c7abc25fa35a64f0d06244486ee86527dc80594c8bce66870547ca0890d66153c5d91faeb47f4cb06a09f3e68192e466381ea596e0996a1381e05de351bef8f08b25ed4502c4375136d6f6643e75bbe1e619f80db3cb8ba36df7faa4c2c5a810f4c7e461547c77acee58316e5fccf55342a5b0cec00aa97d36378a2efd680b3956a5d2f0b4484366744d2da13ce6e88cc28b64675c7627562a9520666329c89e5ab3c90af8162c0c5a65f64def517c4bc7de58d50c8303ca64fb8043eae0adbf55ac9bad16acc59a544a8453b5945d086487b02bdcd100c71aedc2911f1489b9df031ce5cd4d7ea3c88299589e473ef0d2f86f75734040146713421315b31c3c8a23e23e8fade20bcefdc4df875fcb4e45be2c070b69622a2575a737e803bfd3fc82c08f0ae31d143cb087a17cdc701ab4d51c8114079b1af6ca2f069f1c111cdc40e9cbfb91c279b4d7347374f80ad8cfa026c2fa3bfcd01b84db321dce0703ff487c122d965d0ebeb0ba6e6bd80839ac28eb2b877911959ce5cbd6511f37f059689d07db2539afdabadf149779672c403d112207b3422f05ba473aa9598e08ba8b26c526b33414d29214cd8c734aafc4c21e206c4b06eea2fa76070268cfe4834a34616ae030beb048bc3110359be27723c1c17ac7dd0d4c4ed83ebfb8a26e07540bcbedca3d1105652f970f9e302fe48eb22ac4b71819a88774727ae3c6de627335ca95b75d9e599059d971f0a4cf414272e7de716b26e5d02f92fd060bddb096ad4289b9c8cbdcf7d3a5f81ae70746fdf4edfea19b267bb8ec0b5cb32a92eba48f658a65c6fb9301f4939273c7b27ecc7c80897e50e35ede61f7931fbf0ef4e4f7644846562a3941736c99a8c091d793cb8e77b94df1298b7f5fcf3d69806b7bb620ea547ddb548079dc21fc117ecb3b458df8c14d3c02750c72423156f8d1ec8de768ab772b9c4b7adb0cc6727d9420e1c7b9ed6e7e652bd5c8700c4f79184239b24abb6ad5675aa6dde212f2025342f5d81b398b18e8d146121828339f335116034cc3c4b7f55d85931ae5a7f2dc2780c38ab7b482bae5b159b378deab1977c55c8bb17c188f6a0df4c8c65e1faf76f0d03151354649426b57a8da61a1be459d19ba5154a46d0944cb3ed7c4998b217cfb968d31c3c6f294ab05f7f780d8e8811f8a0decc9945a986454ee0c5dfe607bf2b7db7568743944eb877d954caf78babac9bf38797650b37863efc9e956d85c4a4fbfcf9d9b2f27007eb2a7615064236cba245b15a715d44c93fff22681a88a3953a82147a3be1116d4b38dfbcced7a07e9bdeb8b4d5121e0220ce5c099c1bef833ee9cbb26ecc4731086e69146b4b5b346da3301f74b76832d5a16919f928fcb70583b6f1cba71628b9bd7f28886a798cbe0da4624ee621e55c3433bb1226fa9a8581e15bfeb0029b76083ba45292f7fc17a1eca54956ba9006ccd9649174a624ebbe7e764a5c90eb5be8926586dc11deda4d1039a5b8185dfe45ab0dff078a00c5e182dfcd34382a413cfcef79120e69acf0fedce2ad4bf3433d3c25eece67836bef540f0510d28b02f22584c473d274c1e20fdb86897a89d6d3fb14ceb49a0414bb38cec90463cb85442a9324c768abfb313f0998a32d17ead8b4e4edcaf917662aceb4b36e6c6915198322f10a4d673602a05d5d6ad560afd038475534dc0634cc4039558c6261443b89fd8b12266abb7f11a4dedb6766c75b881ae828e72faf12147a90038a2684c9dbf20e90ce4767a658d47902078ecfd30dd7f1977a37f0ea50a1443c19ac7f8b25483947953140a3dc0f3ce353d6b49b16a89ad167b4b39114329dbbc23c2e561d50e698904e7572b18a4650189e40789c806ff1e90d968d8e001673e5bddd2bf3642b2031efc603839d7e1022b520040a3c572a517e1ae74af5cd7ff82dd47e9d6241bef275691bf58c1a53834d5cf257a584935ac517bb6c12fffa08773206be58c24249f03729b2832adc836fcafee8e2493ed4b20bceab1eb9d409cb230dcfa7866aedb2807f92992ce77445f014808ea86f971708f42d590408c7d240395083537397e9be4816a7fb400ab81e33cb2c5e72240032a064b908acee4e47b57342afb7701fe2838f496fe4a5f57e827c78bd041e0ff75cfa5119492f1c1a01dda07f119682d957ef1557188ea40f226f3303823346157dfa4f51a5f855a584773671ba11c4c7bebede858398c50e53c6f1b274c7f6edb32cadbf1cd17348359f9066b0e1994b638d918af054adc1b71a70fbc05a1fa7920d7ff054229846cf28e88752547cf5742a2ef80ebdd21056d3c9aee91c027ec4e0f41eec10b82a1dd4935ec8a39f94330d9adc7203d44109c33ad1dac981eade00eeaa80edb36c1c1807caab1c09171408fcd0321772fac274d9b51966283875b4940dffaeebadd32e797a2fc22c93f1efb667214e29be4df2dd41c37d66042828994f6cebcba6eb1836a47921e5a03a43b8ec498ac6ff46d9368be219091ee8782648a18487eaceff79304ea10dc1a53fd7b62561e07bfc09117f2cfeb7ece4378f10dd5aa3cb220022cecf73bbfd0482303d33d716e50f28d51e4cd9537eccd0505a8706fdb87cb4f4c9fa31aa88a5e75dfbed2a91a3a3fa39bfb07000906145857fc7e0c108bc8d683a0ebf157ed8df6131421ff8c98824a8bdffd64912af20af50e1c60b22dc1518b56e7a388df49b37f6e9f41d51361a3cb023b9766e3130dddfaa3c771a1b58da070cf8427666218b1ca9ff485c677a5ac1aa3669a4563ee070f303df5ffcfa934cb2e957a3c10420658e785180daaf4628a46c456272ed145880972b96bdfefd3d01ac610f01407b885c81610d35a277bc03e0340fe18141638a9e7f203a9214f43380603113460bfdda090b4b760fb70a8fc0da9841004e6b657a563057f8e98ad65a3935638ffa013b91d1fb5d01ca4230739adf0c6ce950e680f198a4e39efaa5f9ce9a18e2c551a77421790bb6fa1e5f157bcea78ceee513eef0f460dc56b893f0e118a9babbacb81c8d987912ab1d8e36de41858347afb3657587097ca5b8433e567809c1375345377957d23eb308baa6c2f551ee982d1b6b5587a5cc0e42de8a1421dc3122805e6b2f206c25ce6189be254a13050ad14af84d130900f7663276ada7f4cdb87f81d968ef6d39cab51c8964677907a6d3eda1ce9a3271d2265d6d9504ac31b72305d2fe9c2df423568a88a0c127599d8742571becc7dab005eef7cf29866bc5fd47ee810e72c598ee842d1161538c89dab9ac5fe2b576ae1f36188703df820855696775e16e8584766b5dcc6939018dafe0943ef9752832c4c028c8ddfe28c1abd1e40b13be65ae07b0c3bea97dc2401ca499083421e2d67c294f8469dced9e8788bb15c022617ac98c8904c3465771d7150a1fad8d94304989388fb1176b8871820f8938bc1721d6c2b56a02723fe4b7baf39568a15bd7a3b7a48640f65a55ab4b778393ed585d4ea332ae870c0a6ddac7104454953eb7802c75c6d78d156e333bed9ab3b11bcba96cd6061313c11134c83c8430f6242e8747d7c7e4b140a0e4877cfa3da1c77acb9e66af382348a82e5ef201c7196df84a323e730f08d093d216a3c5163ff348c49ebbf5aa0c7c8d1aeac53c56eb784ccf7439cdc755f88d795eb36d6772d04ff7c0f630812ce427e61460d794f1eb97f80263f493d672af2178a6ccbe61723b14f03d840ab3d917ce0b2cd0673228f5014ff6b3553fd325fa4a6dcdc8c8ae0f0082d3301cbe8ba904f285ee85fe98028cf9c2358fb25e9d9feb91541a0cfb4b1ed9a1c626617cdd468e0d878502f24c632d298831ac9139d2d92c5ef57ca5780a1df6bbc26d8a8d555910d7d6fb5c309d2ad4b5b75956b2d47344a8b503e9b505449de6cdddb92604e9a093a047ba223816ed39508ce970c49aa1a148e0c371fe1b74de4b882fa3629442bbc6d91c07960d33951b19cfe05e49a149846c3b69c0794189bc67607cc0c09d987813e37c8056713875e1d5b7c7e6ef2f4f80094290149a026b5872cdb8d5d177045cb170dbd6985fa58a7b3192151ac282c26ced1c4259971824f365dbb9c94fcd39344257e75024da613dca4b45ab7b1399d523cf9c2fc9f41081a1882728087e340dd059f625264638a27f4ffab4e315ec650fddd3f2fd982680c87fa7e004bf9a42e6f1be9428a53daa3bf724a4e92fb400d4e30e3f4390abb943c9334500676695bfe2194d3611ce0a4fdc7212258370ce56511c58bb0910b7c25a93dd0552bec52c16af98cbc844048585158772e2aab0a3abf1d1c4a7fc25c74b6259707a5f9ec4cbbc16f7c6085fddfee2dc48dc216281616a415826af1a39ef632fd8210a60c803c5555588c3b0aa351f644e1eca075a2de27502735f3363283d887f659e7438523369781f8a8b5ed0d92f8e520c28ecc7fd416ae7b03e7d3bdcd0591ded1fc0434300db616f7bc5cac82d1490f7c1fe463f7907e8329d347926e4fab5852508a905e57b69f3614abe3464faceb72a7479317d412eca83511bff88b6f820bb1fb66a3bf5b01f3807132ef459f2ccf309073c1eeddcdc0026a8c2f3cd0a37feefd91d2fbcdaf49901b91f8d8fdc0aa023a69cb0e39234f45db15e20858c4c82df9c42035388dc57a8c8a776ae52532234a43577d056aa01f7dad9b250514ea08e50268a04b01effb7b9a62f2cf260fdc70fdb850f3487e8c770aca384250ff81e588243e2665c4580e6d2c1fe628e750303f5f6dac8abc8c17060a76b79a956dad01e68c5f7c5b2f09cc37ca048c82697394edbac94957c28ad5649f89ed4777faaba4a04321c15d19e34c01a3ef85dc1fbfd79e9e42fd6f7aef416531e4f5f7888a60f8e43aefb8ca11b38a1bc621a0fe8518afd31b5675ccecbd3d406083248e32584cd32bc085c3a2ad2d0924a97c34d7c6b303569089756974cacc8e1fbb8274ddd15a8583ae08c40a024a169243141d3257b846782e420b331a6c87335f47a49e6cf874e7d46f1f0179de1787d00c770cef80720e542b406437f8304506cff5d216f0dd8fbfa9a484a03c4e6823b20bed4256259f46b7635fe4eee4f5e2343de1cc756d1c44125bdf7533891e5f28a595b9a37611d1fc63153e5017047383c43054f4cec232d844ac8c779ed30bcca36d40b4e451db32871b0dde79629a19584de5d4b0ebdf1a343c79f1e0a4c045aadd8654b6e3f4fbc3abb527c929e18d218123f6aafbebd53e445d9f7145dd4ca041e922984a14709a6acde0762802ee4197f8cf6d448896135b146bf6745031568a2b89055cbd625a6ef293a9989e3fa6b68bbc83250c186f3e986595ba0d9b2837611beb8ddee2f7e72238943c5ba31730ae8902faa144810fab63de50ba38a74de645ae6d0545d3ad01a42ca41450faf2c22390c7c964ca875f8fa47a7278dd81cb58addc061726372811b414d9c81e0f1e0d71a4539fa79c12c08e1193412ee27c1fe058622a5783b31fde33de8b2bda1a1bd1def7083eabbbe013d70f5b95ff8924a3d6dc7aa873cd5c46a9f0b719cc165e4f630393ac1f7e7f22708274d94997d06f783e82a7593cf800403062387874d9aacd2a4e01b210ca8c32b4b4ec82fcbe96baf5e53a4c7623e417b416155c3f2e290d2229da5f71a8277cda02c74237d72464ed39c9c3df11ecb366c48fe468803e97b597de907f07c1424554a3ea0ec12f1350a8c4e76cb73a38f5e1cd084cde5078243c3b1cdff3f046df53c24f2390a97f9cd1241b5c497c9b439ccaadb097ca5e0febdac091239ffb0c5ac8fc64ba124304a56fd371436400f7e9c5eb7754bc53ca9ec8807f3a8771f70efb6150c0b375c301cc0a5a5cc91578ab1862d860a18dde34429c4d47e2bcd2f6227d5a5740712cf16776f0eee51fe92b8296bf8e25e19030eebd2faa8c0fc6661fd338b4116e6a21916adc69a0b5e10816aea30ce7e034a9e8c3a83af7238ba0b4b7ce4e986c11116eb95891e6d11b49c8c4143995f1c495cc0ac5c7cb0226af9fe738b21130194a75ef03c59fde0094fe68079a7062decd125dfdd5d7a6a8f8abb81183b353534a94cae79ccdb6645a7941f47443da236a7adc0bba3cd64839459892f0e20967960f8c3ca6608832525f1f48707ba5f729578d3bd6049b4baaa888e937f5031c2f1d8c8b21b1a7eca1528e2d4fee52556c9bc0241f4de3af5e85474f47adca2bb5379248a1a20f32c40637b0640fc8e16859296b07d73e773221471706e6f716c9e9d2a3bfaf51b0894d38d491beeae940ee88f147666b099d6c6f1c5dc744e00ef8333aac288d07a5fbbae398729e4978e4cb083c414429164725060509e9314e4d1684273ad6d9499a8ea8277a13f401e3548d70c953a20fcdd89effd594ab8ef775a082b7c2e33cd2cc3d5d48c9727848ea2f9b3f9ee763b37eec6bf73d6fc626f9a1bb451b6de3922c868f2344aa1da4d3142770966cc153bfa11da1a1aa70e420d9a3eb3048edd8077a5da129e5c0a83acad32cea5b7049b5824cdebf137860b143cd8ebd39eb0666f762078ae1bab5e57e4cd4b2d27cdf10ec40ddc55b68a0f67956cd70eb004ee2a2018b36b80adc5483562a824748e0088278d8406f1328cbe32bb3ada339beb4bc638f80dc5c6a62360d4e622f7a04ab099226c163703857be3f9e583ca18374ee156f0824a4955d52861a0ea6b6ea31dd932170d23e428f7466de23147648d3e113e3ddd6cfeefc24ec72e9ac883fd97ddd424b4ce49755c8a12142f542aa9302c71a6d2d554b2402613fb50208521e98d5b5739b522f11e4bcff112641f9770725e25804e8c0ccb67a2027404d1f276323be4e751c1c630aaef66ebef722c2dcc4404e352adb2258472b30ed407a3d641e75615acf041bc5e68aa7dfbec63854ac25eea75f936dcce68285bc272beca9644a0cebf00ffc47730fea440de9112ed6069a2dceec2a473cdda630ba6675c0959773957968d5cd40d147685eeaf11bac8edb8071cde378fd3850ee3e0147fccf621016328699a60cb369daaa8a25a4d0ef9ad491eb2622c49b796f980efe3e7a441a8b2f170917ec393270bd981c0cf4dea86f2ce8f58f26a3ee8aa68f85d77c35ff1c82fdadb72353285ee34148ce22ad9ce03d5b0b8fe1b7120f9f0d11357dcaff4011b2852fbb670bbd34fced0a5feaadc4425065981cddb6de3d5609757127444fc1ca5487e14f43be0fea388618e15fb7326ddaed11c62dade9c274448f828ca5ab2213cd78bd004f6a526ae39f586ea6a184d2905635a27f615cdf03d72335f4b66d8f4db497551dfd5711d2270ff275ca738350d529ddc61d21708a348126cd2e72e9d4f70fca40b95667f7b8db8c1290347e97a806d70bf7aaebe123cd2d596744966e986995ede612b37c22b29b4df9f7870ed02eaa418b955702fafd8d2117c1598b20c6fed05b0cfa2b3c43d16c508c976b89deff2283e3c92e603c65476c76e4782e40d6b8882313da4e5f1c557a2824009b544f7ec5fff0a4bac6a3e19a70cc7ba335218ad8c1c0c16b8dc67259d5b196fe64f2c7a29024e3b5b693e3095bb66b385bc6333f88a835e98b021429cf8b67a5c5c1bb25226dc1512a21001c523526f4573fd42c421ce982bc12f90b885d6ddb3643b132de35231536be254e22fa0b38387f1d927a7563c8338d52270b206eec58e9ac05073935dcd2b720b4d1e25f65758c290efbc858ff6e66ad9b10f173e2721a84dc273d8e1e15b7aebf5f90cf6ac6d3cf9c959f9bcc796d4f92c5d307112416cb32ec88fd417f735c89717afad39c6e0f79776624884e03e5f5a906dd218a715112287d01058d861af49aca5037a7c0d92c55a8c7bdae82d505d67db4cd6d71d71acedd8334b32648eb715893ab7b6e80a08fc8b220642c1a9eb6eb43d28f4aab1b8f2c3cf8f7107faeef3f581f3f0bc1b17001677148960e6d3ee175ae5af74edcb6183b35066a1707f91d177aad70b1cf1d19d3ce12435689330564417b3c340a3cf5706484a1609e094c9815146ed751a23089c904b7023b7a0f11ad615b59a1d892baf3f732484233f421014a8018668e368cf8019eca5630cac99b0b62fbc6f619cb0bed10f5628857e6ba59b5e94a6c4087a333c8876b18252e25c171ea909e0a0f77a5be01090031cfc6c8585bac1b9c130e450c1738730d9656a18605604c0c4719214e43b638795a19c4ef2e5f5a8e165584b81f30ff69b186d0d0a51940d62e0cd609ddcbc2bfa4e0a1e2bb698be6ab5d446e98aeb37a3a42fafb8041c78903845bc517eb1529a371205fc38059603c3f50a7b8b98ffef9f9a8a121e98b6f0ef12f45203c3ffa7edfb1a690b9fe82fc701bf5b00a1843f76e4f52e4ee6ec7b3ae835deb4c8e35550cdafaa5da8e973eae17558c4797d22e26f37cc3f4f6b771e2ba3c77a4030b093f112c1b665e79615396aaf18805368eb7715c6fe3372b1a233b388da05fb0d917c9f650790f2ec6ec33da68d343f4f9f86b35d6a6fbf1c0194089637a4e3564d5ac0f5de6d30a4679b1349ef231322ac0da34a63b10059befebd681179a170ea8a4ec0ddd73c4bbf1a0db90a3bb9fe9d2ee0d3d3daadcccd627937849290d2269ef52c04269a3c058dd7680afa1a0d48e8e2f23c491aa54f9f911628ed97a1fed6e7d5c45bd98d816d5cbf366ee379d56c17ea5dc2971d3a38552993112e9509f0a25c152794da885d0979995bb1b1f6b95155593637cf8bbe8793cdfd42a1cf65f0603b1db3361e4e28988330ad7548356e7caba2d5ef80727f3859d36a385b91dc984f965dc79df931ea9d8f6bfdee98ff30141d7b58b21073c28598c584c6db507cf384e17ee93e02b0db1ba7726f76745d830d048da3b40b85f3f390715009a3d46893aa8abe5c13e75dc58c31296b5b2aa2321630d62f2cdf5e85c0c3d745960051bab4ccbd9961babcebfc8401d11bd519afb515fb3af4c0758b912f0422ecab3964213fecd3a7b2b7ca73394b349531c1e353c46d7baf9c09de5d63f87c1d2cc531446d1b44a9be502982b889128e540d6e742a08ed2635f3efbd339b4b04a54413e5b0c97a8cb901e37dc40fab1356409556b4b3aaf831f58f888349a6e1e1e232b5315b301bc38f1f55af000ce4c7f447ca29b7b7a7374fa01f9b42b60344c9873afa91bb711fb5bdb1e28ccf2bfae1edb1f86f519615bc9796826619f84ca9562de9c707fdfbf4cfc867d50f1b6ef959bafca0ea40927d2bfd38848302cb15dd8f32f20238b08a3d6af31ffcd1fd052e8c468db09d09f63d1559f2ddbca48b76b3b5a4312767b97259003e5d4c281d217414369adeffe67e168cd8fe6cfd2d4a3fe28af71a936bb8312eb833528771189f42a25418e33773159097f287e01a382599620caaa07556032f650ec6313e25890e93df17cba0f0dc1677b5f11116a23123572d840f458c734607cfccb91073bbc14b42235cd5781cf3edc8d1930c103623a5130d3c2e09843ec56477c9c58cbe8b91ef7f2225596049d192835c59cfe37bfef8ec1012fcfe8ade3a38f81db088fe5af7b67bc0eb86a9a94a225e1535ec3e0d7ff0bbd3f0e8de9fa6a54561a7c218e988b32868551ea31f0a24484ca78c283992c27d959a7fb14a45b8c318c618b54aadf63a2d0c21986bd1291a1cd41b07eedf7239ca24243a0e48d7e0f025306421336a125d36cd64227371831d1b3aaef92ac0ddaac6e645f0a5424724abec2cf31c1ab1a9a2c3ee2a1aa700f174c24452f3fc2e2a613fffe0ec8080cd60f42872078c82767ac8936459e3953538d2b19d6491ab7a26e02e0f2fda6c420409a280c5a1778e34a57f3987cf5e2a460c1ce805081ca3607ed0e320bcbe416a67b2332a04f88947c3ceacec04b968ac5e68da95fe53acd7b12634b210d7b4bb48086fcba9bee0ad16565c3571c1466458f153eda042aac857e600f2d9c8df805f88ec20afcabb68656c8d095be7d374c3b0ebd40695f3f5e89955094e408a767303d2e0b13e25f82c8d1127ab4e4878e31e36ef525b900b3a21f28af068081791ef5f6fc957b1a32030308cf1afb8579bd02549d5604e8c8db7975f58c88bdf74de77857c10ba1f03e60251d83d115426826b3257767e0266a0650413d04d4faede87b4d51622ea5ed4194433ebb287745ccdbb4be7d6e5ae55f350edea6ffcdd6fc7314032ef8903a85c453a750aacfb77f412c78334fc0fff797cc2babf5fe17a5ed6df2b7813d62789a5e25454e230aaac4d22afed38810a300dbf4d8c5a8f9b48d83f376df0487399b19624fa40bb3deead42a7dd4aca70b3b0c8d5166edf34ddf03eb66cf49043daab25afe7299913253ecd805e967b4f14b62fa2a3b63ee97961f889f675044649af892af9280b4bd24aeb3d75243948b50063b1cdfde25d9665f7b0d9faf89b1aa0ec95cb1c857ce0660787b93cda0662b492ac32855c4faf43b489b8bfeed54cbd2209fb51f1eb41eba03f5574261654426fb3fa50537a3bbeca394e28ddce7b16f0c26a5c57e68744bffa326828b51427bfa989afc6b1ef7ed199702d2422923d80ebdc565fe9abec4942dda387c302e8a78e6314315f3e9bf0ba6bc26f10640fca679f4cbd4b68c4963d814f4a2ef2816765ad9f0ef9406c3740e8b43085c705ded44c4ee308fcd2f272de5e11dea8e31d1c546b55196f3b6b9b297bd9a49a83b5307a2c503b488202f067a7b59788375bbdccdb7aa80be46d1013d5b293a14745c1c7032f6fbdd93c70a686fa9cb2e4ba530e1728d0e50465d039a8fa06cc6137f2c73b3383ffccd4055a4def094b96b53c20b2dee0e8fe836859b79b313587998d802a1517c66e2667490e24c4a16b150bf21fad65c3c23687a7f1e625c92d28d410d2eaa6a31b75b0ba1eced47cdd82fa4e63d355e9b5f20beeab92a69f65b3927fcb07c8f6886a5e450f59bf886815e6403adafa23217486a84bf4906f2140397ac76f9a155fd44b8268e216fe4456e3260d4ba5f7db815603a51a73b0ebefbf2dadd14b237f6ac08d3460d5579601c59685614d9ed9540fe9ea7468e55ade92143a31a2c0623e8593d039a0581c4804ff1c2b6a87a6c12fa156b15e29b67ded76412d55d3d37175366c2a524f90fa6236f999e66b0e90e7c181de17c1d9eac93c8f4f0845c362a7805317969abde471b92249c897d900b10b6c2faeaa9b4ef3a41ca89957027060856bbb8b583dd81d9c00e8566c633529030632ef95b77020433515eca38396841fb964ca1a83bebf986012f25777d5808dd498b1a4b4c020a33361a8b9e84b6f1e470a225267d664b17cca7940088a12132cba9cdc1509b022ad257125c9b2748b9498333f15fa379f64848d8f648a3e2d4d3d6771b6ee236398330473a20ea7836fe207b5d5aba175dfb073a2584df2d1301e7bdd089ea93d36e25fff555fe4d447ab94fce84456eeaeb9d907a81ebdfda8da4fc29dfcfb72789348d784fa5efec2b46a3434c5c8f9992679a0411dd936fe3926f6430fda5acc44fd74443eb22e4b2152365e5d7e7daf2dc7f06e60817d487aa788a3673f1de16241b54618fc77720caef3b85e80051a3e58c3c2b1d9da4c02998898aad4e41a50de7636bef661880c50a9d36b58260f9cf5566e15df390d6f8b214fbc1732ef1478ea08c00b28e0d0d06b82d45e7b521024561b8d521dd8ec067955dcd7da4ed2e7b5368646dfd3184a40bce8cda53188fdeee0676fdb43677fc18e8ac0ac199a61f0a1786fbb722c2a727fab2662acb387fa15fc117b0e81f9b32a7a123375add9cbcc640558e67b91bb2280d10bff5755be019cafb6a8ace345961ec9ea061b2244134f8cf9e6b31b5baf811d546a210258a2f621808885a3f6f71e154f000cbc2d5b05daf4a2f788000ea8e5a53e1e0870d5feb4ad1808d7c588afe397b0414314109dd064b93539dd4349a0ad8dd31f252547899969949764c4d44fdfb9507133cfad44e80e4e173477035b18d9144b762b6982bf18809905a8bce462b0279717585f6b7b1598a08e143ce606616f8942d52990e12db3b38d5146da5a8abd9b2d96c6af6d533504478f3403f7fd66cd51e5b0426387094117e7eac2a8664093ead2ab1240b3310ddc167b8c95589c72e582e01e5e51a35540d90caa06adda6acfa2a4ed4ff35ea800d9802fb6dfe6f8a2e7e9cdbfa66206219d14e65eec33777bf2e072da2eed740594f50b0153dfb06f4bd0b44aef660203855ab744f711a21becd437d7979130ce8a0980c496e20918eb3bbaea3d4c0f339a761c83f71dad49172c383bbbc0fd4bdae2672ae3fa3397060ebed65581b2722cd91ad5fc3ad0aa1e723532df1f9db3e79c196a3bbc21b518233be5b992ccf2bc331568f5c3b5e7d011c8538627a3e86314f7082687511366645166da12dab460d15dab033611926da3573d994c0c6591b63aeb944252b94475c349e2702135cfc48014a5e9af076c6ece752d16c6b62c460984accf4207510af04703a5efdde1b0db562393c00859be15f87bebaca265a66c317e261075840730e3201129bc60b4bc783413dcd9ec80a89afbf723794f5e1d274f523b18f2b3469999df2466ef2562bdd7841bf699f58c8625023553bad64c216773bc1b63f78ff0192e1ffcb769061c02d0c263d488d3773495d2bd675af376ce0b776408277b84be6b81dedad61b197542660926b196f8a6e1b8f295a4e17fa8b318b68885522234554e0f2db773fbca7d19e79d5b953dbc473d63665106ce1547e361f5ce17e37f2542b0b0c425601b7cba2bb4108b05544db20fda40e223a7a1f3d903f020d81916cc451062e10573c50205bd2697d25e9f4f543bb28432ebea19ee155c03074508a190a9946cba65060b03a7bdd0270fff55c04219d990765a100b3f98453af7358d921a695c184006eb820c941f620b165c1285f225c9ca09160909c277d892a4cb11a21f6317a88ce1925a538d04e14fbf00e56cc72e265f63080ea609902b9dfc1518a66886c3e85669c68521b3598c776f71170f007ee14339440fe21608da7c0d5af3305944ef5540b6dc3ad0357ad57e3e65749af9493bfbde54b774d1d0e78073f625d06e323a53326197ee6321d956ea58538bd5873748215bb1a7a45c21c653c0470761bfa9c0c5174b1a074996b7866ab1d297d9a7b263cff355ea818350b0a45902315827ee965310ab7a98806b91c76f65b4fc9205ab0b7a64b87f8864bfc50d03b46f2af958fdf855a957ce3511242109e343d5801fcfffdc9e477a3cf8c8cb4bb6d5a4d3c2fdc024b00fa569a24fc6140496a4ee8114885d0718257ecbee5e64e95f706ba4c4927e0d3077fe21906c36011949cec830fd08344d08b04c2e30ab8ee31b67b05680b00d21795dece57a99c5b3b40008fda592c9f587585c016127d27f89b6a324b7d564894909faddc75b217e188486e9f7fa40e6dc544c7917b7ee7e7ed59261f3b6e3d8b11fe54c30a0ca8aa089a4dae27ba489886928636d2851e478a54cff8af2e6f4c70c69f2c2b071f2e1ebe182dde9bdcd250c45920fb3d944b52474757691ef174403467ac0b455c84af9676c68ed55fcbca0b55dd7fdb98812bceb9543bdc66699e240478afd4af0cb828010b56b489cb7d1ce7a6253f7676208dc9e004aa2a53f6f95b51a9104d85e4c2617017d28e181ba4a7aa914998bc5cac6b235ccb9b805a4d066d54e339eff9d1b3d59b28d35e3b11957a198a1de888d0d23f8cd71b82c0d5983d2d42b8a738261044a9fe38815b3acad506590e771f3521f5d1a2ef923a358c10b2651bd1fbf824960dd87e1cb8e7dfa13dec3d8b7b69fcca277c0ac590e59a0f9342b5474231755a258a228090bf8fdc256e0107101e9dd305238d50db0d30ef454098cd2f09d14a096e8336926b4af7639a46fbaca9551e826df729aba9f92a3d64149345da39ef09c5eabf62d162e58ffe99986885dfeccd26f5daee088c73626ca1742a3ed91b5607159854a07757f9d9fc072473ab21e3add01b24710136c5cf1644313772005473e42b4afe5e3e5c9bf36718519cec73eca060a783bf5e35200a6ab13036dbbad275ad5201fdab2debfc7421f8cda04c5e441e56e746173a4da94475e943ee81758f902df1d7a67d8191272ee820e5092a022c87fa9bf43ca069775ddb3ee7f28550bb96e39366d0523c290f2412443dfe0d5a8a9533dc7d6dd8a613a8c4e97bf50de82751deea8ac2d2eaf75525227113e6b0c4ed04b944d12c9f9f825c902ef31f7f9ba5d2a298d40b8a61f25ade3e31a8d61a293c26ea44984f0cb4caab204ded454099a7258cc8ef5b38789c0a52de984be906e0264622ffc5bac4eaaa5f1c5b13a3ffbecfa81c14812e98eb612ed1c20651b9bfc672f5e59fadd47aeff1414702fe36aa6617b6422fa88bcc4b839d0166b63f7577e59bd77107ed04996561ab822f8299c1f7a2e98adc425f5b3b283ab5fe0302e1927698b1426b50b664b84bfae01577743a078e0b4ca86aba684f79b481a8a9e369cf8804963ece6b07a4e66fd9295c004c536ec2bc49ea992da8cfe4967534d6c2f29b6af065b82c2ddf8fb6cdd97b9bce02281aa377adf12faa5c8e342c6168d3ef28d009bdbb9574ae98a5d80ec2537fb1c5fe9a2d133cbc040a0cf6be982a2b4aa0701e0d4e4f10ed13235cdb7a69aaa5eb10e3956b7a5cdbe459078f59299cd85dcaaf7b06a36e5695d001b575c3f93aad84afdff28c1bf4f5bdd475e1c38eecce253e798ab309784f669b923f92bc6a73552a643ee5e97310cb736858f451eff724e36473370fdf94057b24f9c5a8c63c9199a14e0a71328d409c1d3dafe0b6b5d06e2b0f716bc1cd191d01fa6a6e76a3364a88d518b04f632a06bd15b74a15870b20c98e5e32514393285b9d770758c7a8fa7097800496ed18d29d1b439a434eeaa956630795bf00bd4f3708d18a26f707350d2750fb21473b4f843a932c1c82f1a1e6cdc2c76545795e1f7ee21871fc3844eec17028c2496a0b499a8ed7da5f785275e3c073888a6c22dde243601b3a44626f2be64cc3792ba46d2ea0352854eec8c1074b926195d0c597a4ddd473a725c50d6fb78e4c3c2c4a9f180e9395bca762371fcc6662edec2f1f15be060615245d63074ed22dcaf5467887f668d70171821a44144241c19c7f6d90bf13e2fc971bd228d7c83f5fc7be3310fdc7f373bf727325fd30cbc41bad5138b9b4b2586b7b5075b7d929d42042ac9c3d54f5579ac3a086f48b209e476e8f0a0034129db809749a6d7fa5b9d9cd41ac4a7bf994e22ac74727bd1e68464fdab1259738cdb6a9911656a84e7f65a24304709b6b0b1c53afea5a547b4c8e5d93a03bcb030702b5ed8df859f1c7f45693f2dfcbec814bf1db2b45fa64de69dae50736b3d3217db4e624dcebe992be53dd6f9cfa1649c89e2496cfc56e948215607d3943aa85ff4fe154a2df3b6ec02001466773e2501f57a21d8cb31522a067ea1f0e7f2592d19b2b0d2299e5b248e2d9cf4e26ea0676e6c1d1d912311a3a92247a954a76c1d0f39e9bd9b4d701dfb285e4e88e614905a84aa3d65a7da93e64bcb29b0a331420076e92bd197bc4f78dc384565e96b4b4ace5488c28c225ec2109e303b97804d82ca32eab009fdd92cd3a23601ae361ee0c96199c793a3d343ba8081d1041fa02e157c5a82605a9466f613d13cf5c7b3c92c5fb7a98a61d6a55af10ce00ea3f0f781ea05f2b902ed8e7514c54964e61dd7e0b847626eaa35cadbbf6353043c10f20d1440d80a24f401e604d728bd75942b4127040de19b370f295c2a359be1b468307d84186c5e7eaf5d25559eaee07fa10c2a47a3f1ebbe85202f2639e0c58e8b46b2cf4ad904a4b2ffe1f93acec9a77c5e4cba19595352594545cc4e6d8b4a174476dde74d4150cdba49e5dde0d378f803408beceb1424b5c1aba50e241345da156408207110d4ca47c6c1df26fa3ce10f4881fc0f626520968e61419e40d7635918651b0b513c14c80c63cbe0bbbf2edc246c541a25a6f024bd02e70726e5700f0e274dc35b3de4277aa124c8f35074a318c5e6c9a55ebeb307d053a04bcbbc16b0cb03e22be6729648fc873b9d471de0dd61fdcafcfeebbe5909d466267204c1abcf9a05e14cf508f89d8e9c47a18aaf98b137b0fd1e18be2f9983846a93894e131b28c903abc1799aa0344f3dd2ad0dfce2ac6acf9ad12380dc96d50344e6ea66115bd0c2b2e51dbfe7037f7de7d86b2b999e8e6660fae0e4585ff251b0dc794fc25ccd144f714a3467277bcae5063c273b09c7592c78252adf069b366787cd3d7abaa6b6b1696088c8130836de687878cb19e9e1b96a9a377f322612c4644c623a24433cbb1ed1f0107dfe1a9f60eb3eef21ecb25470f8594b486b286f56010421cd351fd78c1991a174cf8b81f8b58f365803848c9f69235b98492bb23a7a5a4e9c9280bde5a0a737c541f887cf60364409aae1178e38ccc66af2fe0ff5a7289b2cbfa4a126ffa25241dac85054ea16eeef2e87aa165a8d5e64d2bd810a53730bf10eb2fe44d43e1befe2dace03fd9e9dc14c6f78ef3d91fcef317f2d30bfba66dca75c39c92f3379f18c6b3016441fa3e33b9de858c556b92ac64a707faed3e1c204419af7810fec0d0fc2f7ab82227b32c533427828d28c7c2087797f423b37fe36025c96a481363bc8169b04862239a10f2c4a275fb14e1db18618a075523cb4d742a67e8192151ab9aa1f656b19fdbebd283aac7ca999ccf4245f7f07bfd15816e4e6230cf4885d160258eab4e8004f66353b824c36da83db3636dec2a8415d7a6dea7848c0c513b5cc589f22aad0e1bcb863d46934b27094fc28de79db7f8fa62d74f7391573097fb5e908e1e96e74213e893099250469a85565544f41922553c8afe46f34e0d8bdaec3d6056406382d778c08be9094347f2cbd75b627a9605659bf5e9f883561e57985848f19349a0a2bce200704275805ff19c2c50fa7b771c359d6510e082bf64c2ad01d09105826dfc9267e9d19635ebd62d20ff6b52060c379a34156054fdf227faf49690207e49c8e43b817d53c6e199d2b7a6a1894ffe372da8286e5497ee85906426ca108893bb75e9495f86a81895ae2ee639fe763fc56fcf44a18f2483cc7cf1387703788a40e4950631196783fd49874cad6724559dd0e21e8682c8339b7b73828d108b8fd2d8926149de726f6d9883b5f399000aa865de576943a974bb3f5c4a351e6e3d60d1ea654d3d8bcb70c0090d0e4d0a2aa646a99883e88367c7209948829747c1d269c4ebe9d0bb9a18f2388b762916925860554eb58f79c0b44d13949d566cf140295b1b30e768a87b7d4a4aa47435480406e28d20965e17fa02406901ade8a24eb19ed1600e9a2ef0c3a597b13cf1a26cd06db6b06175b06d6a34cd9d6e091402b33cbceb837e098b35c8796e2652c4b9c60f5d1979c0149b2d98f61c4ed75352371543694e56b868eb1ba94f7542ed166188e7af14e8a745dd46104076c78597f9477de0d534c0133c2ff2b3631496cb526ec1a37ab3455ee88c3e507136d27dea00b3cc32f5403a22b2d42165589a76d665b73c84bafb99a0c89b34a7895d60440011fd86b906d173d8156d85e18bb77788612743071f39b2c3a7fb4f48d286f9baaca3870cab140ffe1b9b1401d0fb155c55206966ca20450d900fe5ce310af5d9bb024eafd8c67b51bfe8222baaf806f47fd03992927ddaa6682d901d466c0c1f59130accad982951b21e1086927b55abe69927c74980f250ad54fd5ff336550b4a6e7c226753f16798b9594eb75e5dadd14c54548245e64b7c3dfd10b5f09754ad3457d8e1858447bde9d793a80783a0352ee1eac83731f36717cb27f7b1ef704a2e21ff8b5ed6c5c0a86c922e4f32eec19304483f9f6374694832c7ef1adab5fc9d7508b8df7f9bcef0ea0a57ba5402925038fdb5d10848fda6bebb49c3c01a0fccaf5d35f88f05bed13b1762f6ae2b41ab1b6c3862d8206c0ab2929c865045c7fc24c4db3e12da042de7656b9d2d8d00f18457eb5eec70d897d597c8f5e32ab86b2b73a51f40ba97a966cc34cfb27d47ce0099e4010674fa493bfc54f8fa060ea158cb9b1601721e6db3b1b8d2d5321a66c7401539a1349e56bb4c580dcafba7fa2f051949af565d08447a748cd6405595949a2540262a4c17254f88a18111a11a65c3d109b42c795830ee9286f351fd5d907c951d74c15d77589b5810d80771323e4323d02f818469e6a121f724863de47fb1a894d292393b493f25bdd828eea8e484719fba1d86ba7e830a2d431f00168fff0f41a9e81f979e9e6a872622ecce6fccfbb97458159200971ee4254af9c0b89e96af2ce2d9f212379195a691595a116df2d1b49dd8bbb5ad2b3fb4b7b304300009288555e15f4a89f06a28e66075a57b740cca67f77153c811545b476abdbda8b5b987a338aca9c7d2134ba919ebd18b64a487f9bc6902928a08fb0a36f70fc94395777e19206962287c89242b3c2b7db12e8dc394eaa3f91a2d6c982863e52b0ace6392761c620d4f8d37643db05f20d512614a1e8b672dbccf8b5b94375fdb64c4a3b544ffd7c17f2ff5288030adda13458c5340363ffe683000781aded760d09ef8cd499f6dcee3e54ec8db115bd814d4805836020261049a28253736c098e822f1202a3592368efd329f46b0e2d51b44100cc208c58168afc719e72e62eaac0292b490b75d8e2d32b93b99f1a770739f9edb3a85bdd6b5024be3c2c6b769542ffd492aadeb1828267f9c361b8d3dfd0151bb47f80ff118da32b10db56e49ff6a349ef060ba54acb0b7b5e9c80b7bceb0a52db2501de12e7b280cad912a6855cb29c67c12a264fa3dca3598bcbb4a08b8eff07708b605566f0070391c82dc5560e0c83ce6cefab8ef1460466a17a664016ef1202144ee81339b57db2d2d49b220b86fcb41e0f531ae64d4aef2f02d84121f2a0ada689c56d036dd0c58d6ca1b61dcfb0c609ef25e8ddd60b4460295d83626c7b7f33190a049a71cb75a49b7d905a786171e995c884968b71573512370e13c52955b8b9867faea41547212f6448a8478f97c1a084fd265bb026c9052ba1adc102c24eb9b004bf511914ffd8f39f0dd13f49234a4bc043017b59096312677a3148eb58b5340b4dcc4a587e88ff026438b03096cb98ec628170f706878ec455c485a32786296c700834e4e12f2f7a58b949b4ae532f3f57da5e0b491216419e00e9dc12167c06614b1f78910f3aba231f31e567ed52663bb9c7d6a0069431b0e0a41729fd5ef5c181dcc41d452812eba15672bcd01af20b2a96cac4f277403c9229f879861ba2c184ca3934931d3ae3b28cd9d9398bf016869990d0e0ef42226f6b9ce07174b7f653c0e22c1941edc9720420c5d234763788a52346eb0340c2420eb1d5fe520e5fef3a49ccc1253713911d1e300b849f49587a67ab369a1938db4a14228436609e490f6d98a88e853adcbc61865bbe5735e634b178e1e00a142a8f1f913d423150991df2d4402c6d388638b47223ae6414d9b54ec92f67c8de38b3ea4710d61bf31c25ce6974580cd5cace3fa4165fd390e7941c50e6675d9ac632a614b624866b17fa34ee544e9a87b9239199f29f1425e43b94d498b9ea4c85dbcd295114d6ab0317a9a733d4d02c930484381b4159be4b6d942616321d0d177ae3890a1dd4ab9d8e43312f1d45d8f86922eea8bfd27c0619c5c2c12ed4deb14560002525355eed58180d27b3732ed342326a4e89f33a3b1514414f9bf25c0e10f6d6ee58614e6ad04b9d741bc37e1443130039a29c77e16f3dfb13e9d64514f89b536f1a91638ac3d603ce2cff23b1fa906312261a64caec56b70e90765113be22f192c2f4d76e4807415ed40c2029852b9648135e3d92becc58ea67f814159c1b70e570d477178fec318b5acd9c8e48dffce07b0e4c474a6e9cc69e15ff34750ccc2ec28fed9520c4501b0a6846c7d2ead66ac6bfd7c752da8875252d449bb1a6d80ee12a85399de701917f2311d13cea5216f5e2b91e842f573ad3d3f2516246c63de58b8054733902e33e30995315018138944fde0444e02f53c90f60b6996f740a79484963924da5da444d54379a48f87da6e9485987d4c17f744113c2a3a3c3b4f6deaaec2cb1971b8f644d3ecde710f45c4ca4a7e9d3b3548f6c3df86fd2bcee3bc48961988d16248232231fa6802a8adfbd96026f303ced73d0643f9d9b98c402df142efbc8e6b8c6a89994404041f1fbfab42458d976f36dc21dae8c1d6a10c355955fc8771c89b1b2c74e0fb82cdc7f23b5473a75e96d10977a82cd5842c529220995bcd41cb03a4a9c7a6ebe895122658458d89583300d8c1fbf22c20cd038868fd83d0d0e659703eeb0dc079b3909a619a78371494a8da6e031261c1aeaf9a945f38b4bab5ecd12df95b3824df52a20fee3944350b863a3430c506d7ecdfb718951b07fa0293bfb1ee4bf7fbbd0d0ab1628c9dcd29c6f46e34bc09ff13c0de3157164a0e51f11e7655db7a1ee4da875ca210e51158d14d70f42ad7d3d3ca6a5f48f9b20f873c30766b0351b0c297706cde7a636765ba8c4d8fb2adc9487e2a1644834ff72d8c9c2923f458151117d06582b8d8676d4cf49711c06a26ef2780c668c2691661e3fa35f82421b6fb5e5289bcfe03aec770628a2cb374493c9a1144a6803c3510bd325176bea8fa8f36626cf12126e41672389b0aea0134cff3bb9f93c6c26102c33438a9143378ea5253cefc7b1f1f27627cd023b9a10fa6d84c1a1ab9a2c82cf6b42cfd0c91e0c601343d7dd48fcd3426fe66a284408fe72e14d0ae159c6f28079badb68e778549686d912b1c9cd37d5f1ba928c35bc1fce91801c53ac9e624bb784316a77c241200c0d83969ea1641cf7d309af544c027f7ae0219c3b25c2f4bffe8e23621681d050981eb15451ae1e0aa23a04ef05aacfb2c98351e724c5ea0dda875674376b70365169534a2bdf1eb88bf205bc090ef897a3e731714e5207d9571a44241255c7c31904f6429412a3bfebb18983fb2831b785fd70b71e43b0c7abe5700a6cb12954ef044f1c117ea98fda060f166286601b1093e9f864db372dd36190119921fb950ba14d3f7d86961913019007146e8e40631da282a264b3b90905875c0069d7ed7a91ff9ad08ddecf6221240a313edc16a52d74396af08c0bf77e5966616ce0e06fe02fad958f3f2d794ddd3a79640159d8d06de9520b029c973f34336d469f480b050bf890a15b212291099ff65afd8e297531127fb33c08d988987ea632663d13257d189dee9871b6b5d74cd6ce1ee89d73a1981133516c9259f488c25026ed0e249333a8a04a74fb368aaccad83c7a378f0d05ba7043c6377d9c55d9ed855e6a72d7ade29ecd6b3e35d23ab1f47cb2d052d85978b980f4a4ea1d269829f25bac803fdbc26b854f1319e2fe0037b78fe5e4f73405579e2b2445b8024e69f357240706a316fa16f4130a65f26d6249b657db150ca332afdf7928cbeb93c4a7571637b19ff71ebf8da72e737e1a60fdc53f04af0057a954c62f5f735375722ce0bb02af1a1c52088980fd85e449a258acf5c6a7a1ee7c94bd5399b630149564d5f56a468994c61059aa8031aec237528abe9fa34b3c9a75fe53896d4e45cdf4a827633fabeb9796d8417c154e841bfd1342b394fc54e3dc2991681b7053ddbaf24776f08ffc5fb30c1462c80d797bce37f41f60c2e51cd85680db4ecb9ea6d56d9e0816aa3029f6f00d8b8b2c3d160855321e388ba5e8b55b5a051a55464393d74c1dcbd8b111ccc2727741d2099afa7075e4f92a6e5cc017a6fe033d153e2e090b0d6d5778a68d3b0afbbee117b6a07e51ebcfb105841250d2b1cbfcf2d29d04f48d218bd9afe1f9542d4c48b37af3d1ade9a99c6c89353fc8c5717dec6b6d12ac0422cb16304ac51744cd64a62952f08639c5fbc7cdc3a5e108ad3d1d2a79f005b92ecec223ed3336b2dddb4c25d79e02c6ca26a81c7f0091421cae2ea9967a00c489611a2094802a53301e65f3d2ce50c8620f6d22f84d0e638ba58f1fbe5e4a31f57fde40d5434f0b676d54e0ee6ca09e97d4aa03ce8986fafb04a713696d20a9b9827a5f00c29c05e15bfd53327923dd93a2da72cc160bce0189ca4cb471b141e3ef50cc5b416e4957d064bea18059f7fd258c6eaa4c41b23767abdcc4e9dce4cfb2c90842104aa155574542cf0d6dfa941d129995096ad972b0710992522ecf022b22a175bf5d30958ddd8db0e6ea5d47c06cc124a484f18cd7d72218ecae9d0ea67a7094af6d84df820e5aa394023c04832b5ef2f02965c1ee39a4546aa2e031e8ef0751f88b71ac395e13816f585d73c175be13140adec23d93d76342fcb9eb9fd1e8416370d7c7faed2ba01e6bcc0be85772686fb8d44fd5334fb2a71e71d5d83c9b5eafbb5dc4f62bc4aac051fe3c131459bd14d02362282ed2193c790f3927c6f84ef889524d4768669f7d8642228b372bb6bcc8f7c6eb786b36d9dc2a7ac6a4949d6e2840397b354171157381ef6ae2d02b675ce0f50935a423681798728105c43449766992f93addf6209e21808dca974b9b80ce4d68e1d03d4f4e7639328886e830cceef930484998e57c1d4ad9fbdd13ceb73773cc619bf2cc881fd2e65f940341fa2fc59d83b6cc67076ede8f849e309ae9cd94035b0548cc2bab7ef37f273140ac9a4dc18b92aebeb30de75e111cd8f6da161b87e59b5fa0bf2d7c6e97e87b760b1bde674cd121eb5602d87b6eaac15790d2a2d86254b1a5de37fc944936dba068182b4fd861c7635c73d50f77db013637a3807ab0ef5de36923d2598856824952893f284a4b078701e291c3e0f981ed775ffdc0b3599e8f1c7d4ddc82ab959bb7ab9e0850137514e7d7369ec87af41f45dfb12162a96ad70fae0300a48e5ba1ab177248ac134de10205a4eb1c11a69f412f1fd2107d549b5105a4e5fd19129f7d803010a629835f960ec0049d016122f6f69492aaa0c95d08be68574b18f8218150beb1e6729e91de150ea440f4043d3759213b20a2b4d434e4d087b66750d96a1e0c3abb1af0cdfdb01975b6bb8e5d9a318a795617e869ccbd32f2365a0e5a67d29500c32c253109f0b556450d3d7fac51dd249b0f60df5d068b22474aa133a01f7642a77b8addf6706d5957e78cb7811e9fc3b930345f24ee2172b02b1a484ef06649f4148c77d35625d990cf35faf8165728fc51a9de6f32349a0041d4c985083264b8e26574d9ea0af5654344811162407269c28499d0508ce4ea1522354e192bc6080d9e03e5436cc7b2d2655e938950ecab8cc5b887ab337400972a01b8d28f374b3116f6395757a8b6f6cdb95af68f9772e1625214f2ddc3954c94dd9335e6b75207438a7f86a54029cff4009c4a79a416078f9dde400f8f1782e12a02d305a1e0d596b22a7c8fb2f42f3eb38ef27d169480b69a8f832f983e302c406e0d78ebf7cf5322e5fff71f66278be2056d65f2d12b283fcba094a4af64aa26f1014cd935d84f9664214950325f914c35c7611858532d158975c20a7d8782dad3e61e30e5e25c370af3976d9508fc461ddf07e686c0f182cf3434bdf5e38066da75a0d261b7a7d042a80361c478cf615061fe1db295be50528b5868c92e68f9180e02e91047c51a802178481d3f1c4b24cef663b2405258339605954f68c19b1b1f992ed238ebcef86218c3b3d73240c5e8d30774d9572ff56106f654f57df63e22384643a37a47544fc3feb8d194da4586bd3b1978ae737112170af25fa640ad6ba81559659331b725d4be830ec37fc8c0bb0e9e1b9f17109263dcfc82a5f5105c928b6b301b6ac90e518619ab917cdfb6f36cde98edee7084e08c1591d2dc2071b0e53dc0c739b95ed1ece9d35daaac3c912a2c62aa3a9f1232547b33ba76360f6182c0087ae669a0e2a03531d83e056ecfb41008a34043672c80718066b80250111045fb01a1807c1e5a52791563f6de4a67c65822e3ba112f4a17a2cdf505efa58187611afb57f91431030fe856c5ad02eb2bdb6e34eed4c7485ceb1b159ed3cb9db3c7a8d3ffec29b62670309c980b359c66206b4780dd84d3bc154eee0dc313f9a30d36c0e72da1a21b7f4a3e2037a0dbb08f546999e8fd788a7b5b387cbe4b226afa3c9762e4a8bab401ae880118a1f6f1c73a3fae72b217ee465ef47e18a28cc207de33c0df1d05be5b5536e97a88942a720bd1e434e1578f25b25f77d5d7d9d455ddac818a552a828361acfc8301c429f17ac2a49231d5af9452cc736023f0bfc11902aa03ce92e490261f54e5ff821f1c1850301cb22e95445e8e74cb66eaf765b4a47c357ff9e5d57167e8bf6a79404ec0caf519b340f53e11c053b45af053544554bb6ccc09a99cfac22249bc64789943f78251d66691c2e26508015f8469202beb2a4259d41c1bbfe856c0397bc63336c8731690ba6b760f2aa08d2a9369d7a90ce876b1f021427d65a92e85dbaa115773b9c1f97c15b089d1d68a4c71bb1f6e84594ec99581d80b657c7074434ad2384fe85efa40eda6a0ccb1e72ba3a61410f5483fec0635010800e8bc0936df3c2c06ec7daea09d99584bcfea6680e164236e9273ba87ec2e8643fb1688f2fbc9b0537624273d02d9dc2131fbfbcfa46c081135ad4f5fecf304fa2b423818b8460a7f596180202130092bcdbfddbea907e0d8bd1077794c6c1e01b87fe3bfa555cfede6f63303200db8b0edd982bac2d0b2a50a154ddbcc453561be7cb707bd6079bdb43973523afb5e7dde64406e2f64e695480cf23fe21c616ab145949bc8965b9a043c9f6479090801f2b984405805367da24aeeb03d8b8a625acfc02e4a874edb10a476569c6d4ee4f1035a2e19b3d39157536e50e1eb57ee532dd2e204a6311de752b28831b0593d63381fc392b88a9a9f4001232b372ed45ad15dc288b4668a540fbb32648a22b3116d569c3054bb527143ed74444be0df00815a07717ade01f04bbd02952303e6067529f0264e34cd8c1a0b4d9ba0113e535eda4976526af29a1ef11dd3c5b7a09856e4457cd9f7245ab4eb61292f41d47c38192965f6c0ab8d6913e06b82eb3d0f69313c22d2b267eafb39cc793da817d23efecc61120a0cfb8f9e7154cfde5001e4794ec2a78a4d47ff8ccb41f6e6e84ef07c5ff5d49df52977e8e81c52bcfb9cf41e08f04eec7f95c9f2ff04c1f3ff6520568c4b4a20c3a7c645a5867683570b06215e93ab1a862d4a9b4e4b1bf05a64c24dd9d70ede9fac27f480d6954a91dd7f7de7828f8f19d2453388aa8535d0faedb5b0effb69b61cf8fd75747af5c3e3b5fcf7384990ea78b8a15af2641ca896e7665723a94df3366ba1522c5b7dd6bf3744ba52a07a7de2d8d8010f017cdd755e4c94eb377c5ea8df2981cbce665e7a44bce40316c5fb21906b6a7802d45db13862f288b1634236d313c8bc401711b01fa1f31be8a44c99e6dd78e723e29ff5effc917c06d0db2aa7a1e60680bd593731f762dca024fd937b99a7c46efd41b7a4b36edd3bee344b6e0bfcf0ec735b639d5ae730ef2b0207d087e3ef3a3561fbfa5a6e783bd16bb41ac969392fff43253ca1ea7cfb09754d441a35d79d183ef4c25a3f2f8c41017fadc50dd73d9ddb125f1e9d7be0862c14ac2e79c5084a6e5f81c9b6c78de87d18446426b3196237e602d510340c18920306679333aafef92c2b49a0f7a901b801877defcd7f1cd487643fa4ade663eb315cf1531e96b19ea50c5ea83da65dbe73f391486a784b0ab37d23ee5c1619cf8938b7857d8a11c874f462da61f5931f894a3df465f9a983ac0695a20e1cc03933267c1ba193452af8ea94a35749d789dce7d97cb5a7733c1c50f80f132d8c8ed7d27b27de313d3b684997d4f5804adf91edd52977c9d9dd3363cb69e3652bd07538c2ed0c0702c188dc802d1485cf95af444e94d1b0d5027b53cbe6a21e04830d901052f27435e29a3494edb9cc7d07f8fb0ae4db94967a89904d7648aa2d4385a6544f79c032ddfb2107cc9bd85842ac8f8d51f60e2b645bd86a13155c52820589f191336029c656604fc4736127f5451ebb9f44610400ab2cbfa696fe833a4b15ea71da9485a812d4a136ad9308b5418cefe614b44e37b450c3444487cc55972f8e3a242bfe84197e16aa35cc0976be27d9a17e2aa7c3bf888ff5892df276295d4be20e26506d832765469761230d127e6bdce4293113946f15d731225972dfa1f91dceefb0614fc183c05dbf98681a44ed46db4aecfdd084a36c25dd1b034ed151507d9fb6d869355342d79c45fb605fafa85a22fe16a739e01efcb7670c6a05d274feea40c8a097809e940a0f513d09b3e152fcdb085f43079b231a05a8fb08f6c22eef3cdeeb812c3145e6866f939dec9dd23cc45c1c0d88097c1a56e79a53ff4d23105b77ff538f8c721f127804e134bcd0a5c48171079e91255bfe8cb7f88635fac20c23ecb6392c15f5cc09cf598335f7a4f18ad8f064dbd79c8fd2d914d1a59503e8c934df03121132d7d2bef4f931e55bac9c55b2d5f9b350b99f1aec25041a4603ae5820ceba9a0ed5b35ce0270fe8abb21c87ff3eecbb22fa8961dbc2f0985b17cfe40241754d3afa514017861025b92902f798bb77ef5ee25b6eb61fb9147e2b266806347b4bf1bfee354d6ab88b186a76efbdb7dc5bca24a50c7d0a1d0bc20a3cc422eaa25068140a3a09a1c106c13c8aa2a977fb7b0eca2ab497f5784b2e60e73594bbbedfa0acd2e36f8c3cd6c35c3db9eb53f2588ffffe268a85e9a4b13050df2c6cb502cb558f5243796c7573d7928dada2e874b9dcb9a239bd29adb4928eb9726ac2356b45e1285b6b5c45b6d5caadda8db215a503a5fd7dcfa3ecc0769ff669e2f6f71994e6cd5cb2ad4f272a49070aa7d4d13112a1746aeefa1cb76fcc93de46dc5e2dad6ee5aa56aea2ac8c6ceb7b5df3d8ea68a5c5b6bf1d24704533da61ae7010a14f9c196d7f8f33b3b08c536461483a16842c44ba03d3a76e9d5e7c41dbfe2a9d1688d95dd817c148dae2dd1993319baf3f7e877fcfd01c73fdf17cbd8c201952a105198a6a4749596e5d2ccc6e6b53165d115f745249f8d63ccd8d9f5499a44e62370cd76e4b83544a2a9961ff20217c31c497528bbd4a42cbb62ab92aa3cf9d24767bd56c99670c759f55090c23f1da7b5ff8615b3789cef92f09049ab9fcf14175ebb6629b1986d896ef6bbebce87367a705051e89569edcddddcb3264b66af4128badfa466badfd32cedd7b6f066f9f139ee779656c39e71c221985617ea1b6317aad65684c65665b655bd5fbc033f5ab39c4b6f07b5df4e9aa958e7f5f55725ffc23f745936887e559cfbb6b7df08940a841befff10f9b61b55cd444bc46ace2ceb6ee372bc2a59dd5355ff4596775cdf6a775068224499224f9f849d2b3560c7f1cfc4c3c56878167af68dbcff1220d9b6305c26d502076b66b16ca57daa2d27ad1676d637b1bb48716419985d1f6b179ab23a9a1b467fcd1cc43e833ef151ecd73cce3388ee3a7305e14fe6ea945ea1ec7bb84ffaa4652cc999ae668526aef92986d48ef97f806cdbba506797d9e573194c5d4298deac6078bd36c9c02c58fc2c6f8afb87d6fae78d0e7eaa7f57de6776d6cac4f6a910a6545befd2ec6f8c7bff5c9cd29bd3008b548bda3550dc17ea4e2fb65a27d97d8fd9920d420fe3fee0dd97757120f11e37f077dbe9197ae596f4babd97a8f69ab1600c90a74fd3c82117380e6f855524fad08d11ebbe98be083e6cab6ee7b40e81f8f8d17fcab03fa672b1bfc4ce53e083e88442d52412b5eeaefaf74dec6f4dff73e04ebba2120b93f7f73cedff7bd0d08e2ff715ade2b5a1c4514531e4c8f2154f8960412ff08dda2c91a9f05f1ef8b7f7f7cfc44fb03cb73c9067ffc32d1cea6a3a941ac53cd29ab89c26a63207a2f7af671e920088220f8fea049c3bfe5b904cc359744bb7ef66979de93aec94460ad69dead38ce12dafdee116abff0ed1870482f55dfd61f93d82e4e1e332530b3849927cca820d3767d4addf5448a8814111990200312d840b166d39fe1a81a2556faad14a858917eadd5dace1c553257aff40c143330006b99cb6cca64868d0c9a2163aba875ac443299c131990983c98c6eabbc10559b322991c656e9d8d1fb32fe80c86852eab2efd9a4b81feaa2b7fd820ad65afbda2fb870bab06d59f7b5f7560db5c29228dbad4d4cd128451950a430e3c8bd5a6bbd2f519b8ad994690b2af4f3908f9ff2d2dd439baf363569e37a7be1e719dfcbb17e18445751acb5fef8e38fa57f1dc7f16b1deb38d6b01c1d27c499ef375258a77d2eb14bf0fe1c32870cc94ffcf0c5afd520fea493e47be951c2900c4bf141d0419c17cb071d07639cdb120e2874dfd9388f53562d350bd31651b66b53262d9ef66964572fb34be397e1d5ae373773dca06bf53ccfabe0f7815e35a22ab3bbf0974468963f755736696e3693b1dc14aab8a62baca8e1179d9e70420c152560f0850da22570f8018d2a608ee8a205dacd1cf889ce7183fefeac49f9ebbe250be75fff7debc759b3ec9dd68f3644085ffc23e18b758fd79fcc798f687be512bb734cefa10621ab926ded64f9160903504e7db6694155b36849f2585db22efcd8b67192adde6c0b8f4eb0f8c2c994109891439414c8f0f378ec870d295073d4a50a9811c8f03ffe16fef005369f2223550ad9167e9b120532faa464525061022bb4e0c212199844b130ea787c712445f2a9c952227ef8474493da16198ea57db1b46125817cb5d3e7ff4eeb877984eeeff1f7f88d7c39c7164a3fe39cc1d72a2ca4852e67ad51f0bbc51f801799f79e73d6a199330a3f486cc6d0fe757f8f43f3d4f8893ef3e3f7ccfbb0ed25934ac6105a74321a461a10506457ee8b5f452b0c75f2270b2e4cc01485088240a3091e64fe3c1eeb401261ec9078f264040399ffb76e99537ec926fd3d46528af4bfa77e66c0b33136ab3557a057f64897a443caa269d319a57d5a23fb839d62756b36956253269dd2d602b77b3665d2028acac9a0baedb3a02a6b0d352c6eb27a846471baa8a2fa9ac754a60b5019e0d92792cd027ef26b2902fe13c9269f67e3279f6cd2f9c58f3c523ff59ffd81f654da3385f6a4cc0a8502f1776b030502467f75aa4a0efea963df154ed6b51cb3bed78a639e7a03b39a277ef153a6526d756690cb33db942df0886073e1ab4a4ac51445cc64941ccd6a2496b5e6d5fff18abd72890c391738d069ddd9028ff7cec2fdfcfe958c0ca2abbcba6b0b3c3b7faea27a173ca6326bedbae0b12babd996bf90c75efecaed2ca1295316babd7364b240da67d5591865ca428c93195fab95d695fc60885acd6354965dd09abafc5dbf3c56c35097bf16615c77c7e5fc6b927fad55a34ada182c093004f15fb2dad587a03b9b551e68cbbf9249eee58102f1ffbcd26b536bac2478dfc7dbdf6bcd555f85f6329549ad0b06a02374d79cf7a0abb5ada6d0bf9f43d67bb06fc7c2c898cd9fadcd1a9f6e9195325f2ebe9674ddb1295b61908c651ed3c82198a3907ce58f162e779ef4ef1f24b754a5f183e4c5335acfa86442fbff931846a12d7d8553bcaa5ed1fcb2cf63ff5b6b68bb5f2f9e6fe1333970bafe59377e4a293531beabd3ddddad534a29bd5e29f58af03c8f27c70b27dc5fdfdf73f3e766dd7a8aa3b95a2f76ebfddcc69c3dcfe6e7467be80e5bf14affbcf7961408fd77a7a417ba864de86adfcbf20c5d5f67e6ef6571fd5e7bc7ec64b0576b2d4d0778e503769272fb8b9ebd4f3dcfef352fa629325fadd58b8caf13d5fa1db35fbff76aaa81cec1a60bfe276bdb5417d8ddbbf0aedb5a89dc7a47f6decfc39fba362479c77c3396b4a7beaed57bfffb222902d1fefe96a7894d1134364ffcde9f59e78f54f28032c96f16f07b8fdd3546c3fd4c2a2193f863a0cffb58c01ef542d7918b9da3ab38177094d13934c7f33c32097e7f6c91f2473d5b6bcf8c1923664c0a3218638cc8639e0841f3cd68a21c2c42e3d894098b3236165a18d13068d659e54bbd17e45b0e2d165ea07c4f35100b2d3c78676c39636183120612163e88000c9d983582006326e68c1bcc449d995917dd67d662bc8862a626a68b0f4f3b77d14c5345a00fba4f077db329530e547c4a7ab529530e2600a3e89c4d997238ea6053261dd2e8babaffe259bd5e35b5e9676badb5446c6badb5d65ad50aa2d82e86b6fd77563f6481e38aa7313b3413464b3970680140982fb6fbe72ba0d8fea616a22c8d5cff1ca64aeecbf67fed823153c4404af345132130b08619ba28259d193b78192312686033d5a189e4a46c7f0e8000220330556c400279ae958a1150b1b9bf410c6217cc083cd059d92ea688a10aa1d0676ba7c6583dadc02281ac2b8ded9fe3e8081247eb8b97ed2b1194a10109748bec5305c2971eb67bd96dff1b2490af523af810c51152b8408d9c0776832fdada82a13e7e5b2e29ede3cf9f231bf1def3fe9241e5c6e6ca3df7c7189be6f97ddf57fdc72d79e4be1673ce3988858cad789e67c408ce567b1967090dfe9947d0d4b6e5e59c33edf14db16d02e69a3db6f238f8e2fd98dfcb60ce9f19869174dfeab6fdf069fff6f2dbafb4277caa845432c35bf3dc81213ff85f794b112cbfd359f021db2bb7f73f299c7a508706db53dbdf29cc7bd7fafd3ffa6e9ee0531083ef7aa440f08f25d0f7eb3e870cf959e102b4e73ec669fdb02df26f6eca6c5be47be5a53a76ad767b0c39bfbfd79d6180a1a6cad1b6cc9b457badbd6fff9aa7fd7bad603c8ee5f54addc65a132fa1c3bfe6f78db4c737c5b649fde100cc177dd21bfeb116a91bbfce8f41337f31d46dff24b2a92418dcbd7fef0583b6470b733066db77fcc75ab762285e17dfaf08de7b83763174d0ba753195b43e81d7f732625ddfff0698c4644896b556aa80420af5ab509ad06735aa46f54885573984e7b53d9b8b44ec240447d4f6f75e0804080106140210ac7ca16e2020d8531228f63ff606cecfeb50caf3397c28a534df3cf5b91159253c258148f81fabc4e77face824fe9475fb941be4e4eceac1f378b07f4a20f07f8af6f734dbfa7e7eccf6f7a3645b1fcffff09899e7e7334f4977f8438b6d7de58f2cb6f5290085049cf0e76b53059828e89c00539f60ae1060fe900902ee004294f6f750a88b9a8992cd1c69334464904b1f1e1e1e1e1e36a9b108eaa24960e1796a613c39384e44d1f4c5698c5317a26adc5191403b4e3e6cb6f5f9c8921a42a790f40f9cc740c0dd3c7680e7f993e705f467eb6fe78fdb1632fb81f398101cf30421b70ac13cf5c3cc73d50232cf7fb584cc5efb04019722811632db39746e36d0b31f9a4ed240f5dfca04a1a0a7543fa594f2689cde659658011bf2a9ef017c094a129880008c14e921128021394240f82067a79abd820000c80f0f7cb45437d5ee012a4020020ef80e7af0d8d961962590f00550f2dfe7602525194147ae01488e88a02385a485cc84d084d42ccc00ffbd10258f21e089d0105012b9b9eb7b039444864a2242a2d8189123223421332234213322342133223421331fd3e648cb2cf0a0d0ccc242f8ef858a2c8c00ffbd10cdc280fe7b21281626fbef83d8a8b06c83b6a831fd040dd282f6fcfcf7414ab4c7e7bfa7d5042d1444354d0551b131a112a082902c8ce7bf0f3ab2b0d87f1f646461b0ff3ea8468e7b00252895605482ae845d094f1e63c0af0460a4480f91002889f2980b01e103253a254a1ebb4a8c3c7657af200000f2c3835bf681e46a8d10e5b18b531a4137c2ce6327fcf7233c8d00e53114fefb116c1e1bfa550735dd83c663b5b3c34c824bd2e54b024411600d07e5f71cbc0fcea78b0f151b4be97c6a1e3bc07fef63e473e4836461e3eb30cf212b1cabf07f2879cc02a60fd40f9a073a8fadf0dfffc8e2c1cec27c8c6cabb440e973fb51f3980fce03271bf339f2a979a0f3a979a0f3a979a0f3a9e130cf1f3fcc736747c7039d4fcd03ddfe7cd2dccf03a5adc40347040a91d3032bb48ea84a9eaedcfe1ec7f380f2d803fefb1e338f41e0bff751868f9c074f3c70e2830d1f66f808c3070b7c68e1238c0a7ff2888ac09f3d68fb7b1e391f348fe91d0f9c8f248f55e057af574278e0724d1bed90f6f7ae9cc76e66368fdd20b90bca6312f8ef5d511e9bc07fef63e6310afcf73e6c16b6fad593decd5c3a9792eb86cbb27d28ddd8f6f71dd43c967383f258ce2ee731d52de98674ebc0a803da2e6aa69bed664ffb7b1f5a6c4ce37ad83ca642ea51f398eae6a38b8f259cbe212965a35b0f24d5ad47128d46a3e128cf9dd9fe5e272511a125a9543b07886346f218023e01ff3d0f2278cc684ff82b282a968ac4fe9ed6984fcd5d245801a179a04468202042e3d1647f7f7e120a7ffecc6342664a1e5b414794c72cf0dfefe83c96c2afde48af7444edef86cbedef77661eabb41d3b8fd5a41d248f29e0bfdf49f2d802fefb1d9bc718f0dfefec2c6cf52b235da3edd0f2d30ea81d514efbfb73e7a9bc79cc7148e5cc635797c3e1564adab6cb245a49a395359ad1fe7e278d8d09ed6e1ebb38777d7a8ddd416315a5a1929e324ee7703e358f69adb54fede77fac18967513a179ece5aeef73d6da3f22b4fdf9fc8f0d2d5056999099c7ee93909990d91532db1600121a7a9e873d08f2f0bc7863a416c6e3c4021ea730789ccae0715a83c74c131e33349e0f49201e0f409ebf29856842339d52a868835208caec67fb7b0d5434da2725250521051d051955a00caae1344ee3f44eef28300109dccc6e906e6637b39bd9df20fd7973cbb9e5dc726efbfb9c9d6aa642ea91b33b73763b39bbbd6366cecad9fe5e85a442dadf4700022a3cc001aa9b6a77ae745437d54db553ed54bb3f3398edef4b20e1cf0c76fbfb0228f99395b4bf1f2109922322e8c8e9c8e9c8e9c8e9c8edefbd011e502914422944805248560a41b1ad20366aebfb6f9b270513839f32480b0ae47b9f32488902f9b6a82f8f053d415ddf0fc08c9500cc938241b33f23e649c1b4a04898558f79523055ecef8998270523054f19841474149442195473571015bb82c74a08c010f3a460ace4849827fd12954198e90fcc9382a131a02c610165090a284bd0b9ab849ae4b1125eb955109c068079d22f3720e649bf20d12f49f48bcdceb60ff3a45d8c3e25ae596ed17407e649bbd4f6f7e431253a777d1e53a2e4ae9be43125463d789827e5f2b4639e94cb6e476e65e27479a33d52d6619e944bd2fecc9372b1ed0f8572840494239c508e80807284a172049bbb46881a41c9cd9372a9adb8502eb31cb9150e9ca656dc9eb606e649abc8954932289374b12d9579d2a5197e22401401d6dc98a74f4eb4f974f1c1f918f91cf920e93ce643c567e97db4ac7cb2681f2b29dd014c1f22349fdafe9e088d08144c7337880a6015b084f89e31c629803983e423a1d4dafce7a55250610274698f5a36d852bdf628b441f15ffe7a6d724421558aa30c1bfcfa36e5ca82a6904ed22b3dea3cda6f09a41c4f1b04c3cf01822028b21eccc162b134f8b1a22a47a47ab77536d0a13a14a4ba9db7f88d3bfdf4e9f80771a0d8d80dd28ea78f33f3d80ef3267783843313597f6a55ce0d2dc36afa6676556694bbbe67fdb9d20143251d9365ea1b9d8585e68e3f41306f10dc516a2877dde88ca8e7eb2c0c0441f008a813fe8dcec24ef0c5ff587f8a7f9313cb1b1d101a7cf1cf9b20f05910cd9bccd2294f1d37399cd9e9a2b96837b91b31373af0c3672509c10fff8936d1165949c207cd16c6ad9f72dc88b1ad2f873343bac9815ff8676b837a957b810f3ed5ed1feba2692851ebf4cec272b88c741a57cd9db60e8ba523b2eeeec75216054156f942bd39b2adef268a6d7dad0e78ececf8b3e5b1967993ebe0cc3cb4eeb15a21ed3091f6e7a2d996abe62ac5af648ebf41ba49ca516a10a581abe6310dd614edcf55bb412b6fa8ca1b4f37d2d8960639777dffb4da2969a0bbc9790c47e795c699ad7066fbbbc9e1d8f6f73d99a54d996ee8b24fd710fbfbd8a64c5c20ed4a020169176dc34e576d5b18dd2b2a1646f7efef5749b4c7b9a0ed73b55d351babb2ef5d462e9a85e1d06ceb338095e1d81ce97f1ddf8a6aadb1301c16c6faef5d4516b6fa56ad15c5c26e7460f3188f376fe69285a95e074a47a7e6b19d5fdd564bab231bd33bfefbd5f7ab282b230b1bffd3b2caa2ade89a8e52e7bfe4e0cb72833f63b3ebbed7fc37c5ef2381cad741451d2ffeff8f0d2909f4ff63c733f4cca64c5f8c608367f4a7a33cd6c17f4efb1337d0115fa77c81869b9b2816a6e3cbfffee648e77f2c08ea981c3c586a100c759e83f2051a3607cf8159be5037071dfcace2643b43b452d6e367a0a1e2641d98b38a93f1781eff63cbd761ae6a348f691d074468f0cfd537d6a88b7e31c5dbe0d7dd6c36d3c1060441b0051b044c6a44edb0b4f913b4a1f44ff03df2fcfc6dde8644f223a6c64a8a002a09b2314ffae077818ac11e4d5a9e298cb1489f057c820fbeff05dffe254900df1fa4e6493fb40f6e80089bfba4f45eb17a65acd20a62bc7ac68baa40ed813eb5c08b0a916e01250d2a72553c814676ea186cfa42b21b850a4e10e54a1b604c20a34f2b50be6dd52c1e149e7f6941eaeb128e6bac7ea5f3e3dfcd6bf22a18b9ea32c42d4b63c635c67daeae1a303c263562b0366552d3657b9b32a969fa22a6ced0f4e9675b30c60e4876a98c276e4958616402992d77c0582327588840664b77c1192f63c4dcec0e595eb08b71618509cf92144a321aae0f48b22fc7a2104194cc9654e9c584a64c68ccf6b93a036a9f7995e677b068ca04c50445dbf6e9ce3926a8a2201c07110792cda5c1659ca539d3c5e679271003e64e00e5c4879166362961cdd6440ab4dbb0f40062c9d2c50be9eda6d46cb82869a0705270c04d31da02d7b0a8c937db1a5d5890adeddad43885485138740983c8b884191f14161bbcdc701d0a290d2a6e69b0e049a882b2484d8c21de9c9845116f62c8d8aa780206552c41660810a776461237245daf063546a936260b2b5f38b321e144dc212185890b24677749a031d692b4f072826fb4dd1a131b3b1b1abb286e6e2eca98c372c3e5b8e0724760c20e664e17c949ce0a26a8585182345ae0e0b041a92963441a638c0bb285caf90ecb3e5b332ab0c851d184cecb19244dcc90590a67a6c5674d666c31da9ac8806a32636907b0c674e472bb8e397b23630c118d6e9f43c8d0ed93deba50b7f55546bbeefa5aacf7c276f0c453ef1ddbf2fe961ef3a72878cc7b1e8fbdcd13ed896df7ace751dcfd53ef574293af7a6b83f8e4db80f32ad2647d2a93f599df100e137f1c9348b641164dbe489a2d7779af95d0335cf97e06f1553f03f9e37f9b9240aafbaaffcc21d264e1fb43a2c9c2f787c8f7274d163659269024397e252750858ac8c779b7f992058238387f02493e0ea92a5bdbab97f654d769b3cf1b9b3eadb1af2eef4f6f7fbb8e37e3206212887cd16482f3a2e9244b88c4794a82cfe4bef843e2e3984cfcc5fd52b4fdf3bf52e3b0c50f874d2dcdc3de677312591cb60896df8b95649960f3e22fc0e64593959f7c22d902f4b3b2c932417cf287c4fc4c522f7e368770fee6719e4856c924162c3d21f10d4065e20cf7c93fc1c9b8c087366438e60cfee3b7c1179fca86fc59a0c93241f5e29fa07ad19ce1ca90f8383f43ce0ce2e33c95b1605052f70ab6e53d4b2827e75927882fbeea71585f4ec9fa4c9609e2abfe049ccfc09c21e7715e65ce706528c7c43167104daacb1f77799f2a79dcf579ef913f749f34cfd690ff68bebbbcffca6fbf149609f7c51fba2f9aac6f88cab4bbbc37a33d1c120cd688411159d4b29079b3238c08034b96143039c9bc7f8f11d9b003184f5061c379d922f3bee5b1204a5851a2e90a13606124f39e924245f7fd691089b0b551b261813e694ec8058fd9a22a90c05159fd4f42b3eaac7ea5d5774106218f6977d5cfb9d6541a6d77d10d3e327f5a95e1d7d54d264432265786f6109322a2a499b184ae49f7909b2eb8abfe8f7d29fa7c7985aa2efa4c2c6d41d9b508e67dc1431931a89926744a300911a64c4e46e9e8d46f3850b16b43c704bce26427a3814ef1440e64c8fc6dc9e42b23a3419584cc4d6a03708ebb3e65da410449636a578c6818a52c6c529ca04293d9f29545267a1fcdc2cc179acc963a2090d1606b2d416e14475c566fc4250ce2db9a246f2a1b4b2afb46b1a4d4551f971ab849a2c3f1237ffc13c8517c9cc5b2481ccba2f1a9bbc23c9654269654162a11e2514a3f321cc5bbd37289e18f1ac47e48fef8b1d37289a0fd987865d1dfb6ee984b2af312862fff677bfe5bf0f39f00e6fb9545dfeba2fcf403fbf73f9754f6955476fdabfed9ffffef2910fb4f7b700e5ca8ec96feb91983ddf8d67ac5ed751e7088cb7ac74f7237f8a212fc17343d3429755d57c2818d93e48de926da79f472f818fc17cefa7d581685f48313bf574520c22f03cbf32ac9c194520fdb643306bb419024c1db68235f0b0b4390fcc4f0fbcc3fb51622ddb9e257ea7b09c3578bd1d077a87a66b6240ab42b2ff06c1696f8bedfda4432ef3d499197e907f69dccd965f8fa35dd3dd720f62d99f3e75a84ba9b99ea2eaac760b79bd9370cb5e7de6b7a0e43dda7b7ed57da538bd08a2910fb4078639b84a7fc457cad7912ed1c277e374ffbb4871279b53f88d47681cb781eddc1d87352c907bc773be2182c25533b7d2dcc5a9284b106c9a99db6fb1cc75a849ea0bd7ec49f3881c5629fbeae45e8a6391158c1c9c47a83134ad064a2d582c44d263a192a48b2bac5c92849569778e09293891e171b0fb9af0a086c32318f5e5610f8b0862613c1315b683231dc92c4852613c5251744c99850304eae384346832a27a33600e76a57abc9449b31530cb14626a6b670699224133598294cd464e20d1351463211678b09b04892893943ec5093d19c1156663231031ba6308376c3899a34a03418bdb4362c25ed64b67cdd64e20a872bd2a8c9441ca397b528082f3b999863f4927e0943abc944d6e8a513a1eb6107992d6b0d5364a2cee8256e22030834325b56273999b8c1982e92642207a39774cb142b6c3251c7db9c447f03145224c96ca9c3858c065b6f0f68b4d421b6fd1e9b3285d1658b29efe94e0abb25f7b52a05dbaad65ebc722bb4826d55dbaab58322348e1ababe1942a5d956abb4e9b3d22a8ddea87d4b18ead35b1645b731b49d6653b2622f6a178a0eb525a89d551ac6e24e2c23eea4c05d4aefa517859a73ce190471cbb6aae799e60f8fd2f02e7d5fce778be7dd1b0a770b5eb2ad8ac16c9d36be947ad4a3def534d7f3bc4a2bf6349ec6bb37fcc2f3ee98eff5ae77bd7bbdbf466e0b934af0f64ccfc318e3d169741a77630b46a7708b6ad3f263b1d56295aacdb6aed5d2c4110dd76a62d33c97b8d5c142a1e980712ddb2be416f7e2eff3bc7bad0fd9161ec3689dd659b53efc256d2f63d0bcf63e087aa07712ddc7e5fd07936a108c3f8bb187b1f7a27b9fade487af9bfe6db1b9a248ad8851912945a214a9159952c4e88b7db267ac933d639fec93dd613c3a94a3f1a79d43f9c0c57b2f3d22b44a497caffb7dcfbb446ade8b940c2272df4bef3176274223a2c3f5eb79e5fd4ae27bfdbf8ab7485561ad2db2bb1411ba057c64e4c8c89191208c181909c2c8919123ec84528a3196c1b6d6dc5e43765a2b9a066ae72446b78453d262c5768454645b55699f2f5b7463e7ddd8dd287383cc8d3237763776600a682b4b4b0a6d4c92fc1bd79fbeefe63350e53c388e23ce3b9a5a4404c19d85a1f93e2421dc280bf01ea39ec1abcc1cd3fb3e6b433a59274763d7bf294f87dae0872490a3b130bb7b42e350babc225dd22987221dcd6ffb61b804dfec68f0531f4d300cc3fc95ef6134354875340e95535510cbf7fea1bd85231994637edfabf028fea83f937f49f3cce06f9e5ef3ccc06c61dcf771c4bcaf6975208fdc7165aa54a5ce7ba0831ee88de4fd71b43747db56a5dde05297a7adedfca37fce39a7c829b48d7912a52ebda179922f86a16975f0c41ce003e50210ed71cce1252a026958b3ed5b1dac0e39155c42f430acd4d1dd065b4806a54c9bbff1bc25363fbd24fe4c06893b9bf50979e40909e4adb4fdb15e4a9ff71c436a1f8be5480259336fd1a17912b5c82415fc0b9a1f286ed0ac4f3e3002044119bcfaa406c1f8411208dbff84c0f7fa638c59c06fb1793dec8edfffdaabb2260760f455edfbaa55f630ddb93140e256e596dfb1e72e9b6d2bbf0703d079df9b77469e0a4a30821b094a50c3820da226ae60f29244e5882649d02723c07283230ada63a7a4d9fe3ad9852b5a48c9018b1234e102ca74860c306ad07cd9e970413082273694654eb162fbe7c852ac7a6ad31425166cff95fea149065583153449d161fbdfc8444184a1c3145e902801162b7448c252040cbcf8f024bb3421aec0c9008b284f6c7f151112462788028a2d8038414da6978aa8a2e54a1433538c64eeeeee7e71d8eeeeeeee392490e3f01013868811ba74b35f2bdab68a6d3f7ba999d1c443530f3f6cfb2f9e1e72dbfecf11db3e121fd6d8f66f48204b73d9c828ac307d7718b3fd533666a81842b90cd9360425a04d2108b3edaf8c9a74e8b2ed0e3ff0d87c01450c23db3e4902591b27286174b6fd318832bc0a13ef16283b6cffd0b62a8f85d515545186081289c756ab14ead72bab0f9240f6f6e05b73b85130dbff83ca21881edbbe97471046639a7b62c5f6bf9988871c44b086166aaa3851c1011628582046898b12153224f7861fa688385ee87395eb93a46d6ecf475ad8586bedadcec6f632f439d62610dc7a76a6edef06816dd3261020ed532463d7ffb169130d0d116ad7d593aea1cebefbcbff8934eaaa4f439dbbeae72cf465665b56b22dbf092ac2699ff9a7d0e703dad84eb69bf8a99ce11adaae1fce8a6c6ed3b145fb7b49c37bb7e896b45f6dbd611c5ec2372ef4df429dc7f212d455ff899d14bb7e15bbbece6354b67bda156adb28902cbcf18a493656c588362d1686b3303116469b6850ce21e26dd79d7d8a49bb565137ca4ed12d94240b3b6d6dd73f6d140bc46983c059d86985d8f5eb694f9bc5ae5f71d1ae5fb10a76fdfaa1514d60824aa5d62c5a76ba0cd9674522e394c6867d5634762dda675db3f5eb07a3c259b6e976fd0f0d0bfba2f2ec8bfaa2bea83ccbb45cfba2325245aab68a5493b00a5e3fafdbf8a26d7b4af866c36d6c8469b886699846f31895d5b051c5346ccba20af9752623cd0f9250c15dd4494665e20942e28f4f659414224d9685b2adfa44b222f4697559a93cb230248f65259bb4d2bfb2fdeeb448a34db229dd4e8b330095659bbbea896fbb3eced5c7bafaf8867142b8b0042a880cd89bbdcd66db4d960c4c6814101968813a6da8d96c5f93556745d469db923aed59141a141a8e2a5bdc808417295c245132968a00c2893550ce90626bb528168a85b1aa51b6ed5a3fdf322edbb29208f536b7edbbf714e6993b26b5ae53dce699b32deda9372575d93fc12ab3b717cfb7aaf914080fdafeeb1a74b6ad7abecdb99148775867e4df7457a226489cc1e10b1bd43449810c27a90d10ecc4d02107858cbe5e8948365a68fbf4290e3fec1492124abf88f65967b8605f06152cac9aac5412ed0980c7340468ec0775d9a76ed464db5f5a4397f1230c02d02034f6d4457f05dbc67cb67d3156cd98adb0046ffb154a9a7ac321877d8e7bcd3e6b91bd4ef5ade13ad9b920830a2b041df16353b030fa428a584c7b6e2890cf5dde1013244e24abb67656a522b4bb6a650de5ff3e9bd4ccaca1efbdff3c53c8042b9bb9cd5022bdb956bf9e57fd71b5ef36db7cb3df8bbdef260a2bb665cb56544a8d295b965a439b6d55a5fa34d36a8260d8aff64bfbf4b13fcb08a494cd7e4ac97e0a2995542db8edb6a69b278e5dcf10e9cea9a3b6eb8bda48db6ca1534a5b07945ddf8a76bc01a5968c34fdba59d4b66a6ac712e16d95a5701f18a153485c722a97daa59e52b9944e47ed22694aeb2aa888bab5c75ed4459fbec44dabe8628c5dcd53eff3b5752d5863055cd4a8617b4273474944a951c3124a9c80fe0f7d24f45f3cbe45a45487166d5f8716ed9bdafb59324905637be0a64b5648d9acb7e4117083a2b8f2cb93e30bed4f2dacbc4640712c3ffe48be085dff24dab4d65a7790e18fe4c7eb7ffc91e46cda74030af67fa19b6e2862d7f717eb8cd88d2b742bb0218c1849b421cbc1841341a0e0e8090a7c90f9bf7846dca4e908c93edd1ae4900cd5102593596ad9d400c63ee9ad862cb97d52dd252337d9f535fd7deaecd93e77764d29edbc6bb5b031b4fd6b9e99a6947610b52d0ae53b27474ea23439d1b26993132bb14d9b9a50d9bf6361fe4da2ecf39b40d9f5778054385bbc3e7c313cb57ed5e7a9ffad500ced4abea74d9db6e39cb5364ffcf83d7fbc046fa07bf153ba830a7d2ec1db4d5375bd2a5ea448b3716cea458adc0f51699170b6e953f271d0d5acc21af267727f0627fed7bcc2ca5b76cd4a0ab96bfb2d6b2d8da90d28a6369e9a66babd42d32cb7eb4f80a6d9952524def26c6d2fd54568fb4351652b54cf23daa2add856fda497a2e9e7f89ba64f7f2c29f5ec11fb3b9a347efae7dd957e7ded31f16b7d17645061057fea9dffdaf8bb799909932b43e38b2613f14793c9189a270d50a049dda332fb826fdac26b5b33dbbc3644efe98ee895777b4e72b3e97b5e452293784fcd7a54c98f65823ff827d80fdf2be9669960dfff0a7d26fe76087c26f641f3478802c1ef998065d95df849f442e3342676b22dacc38baee28f3f24fe6832b972df6e0ba5ac60f999560a0582edfe20347d0ce542bc80cafe4d995ed02484dad503389b8d7514487d1d6bf419ee76b8b3b0738893859d3c4f4b611a0b3b31cec923578740bff736bfa402ce71ce633666c5e6e901ddf61f8293f6aa6c012b6d6abbb1c376cdd39a1d0c8c60505b83b429d39ada6a53a617a8b1b1cec22e19bc7b410eef2cac3e7e01190bab1b3bed0a9222e477f39334d276d19e0cc2f79904fabcbabfb21ef98b20a9040420cfdb9ed3b42759f38dd027d66d29b42769fbd7f7a23c268660c63a8fe9af1863ec79de7b4f698cb44969daf6ff52b56c63a4a9639d50d1a8b41ddb9ea61d6fd03c3fdaae9f6b9467747a4adbd3b58043288f28b4e11822fb43f74d2657a83964df4d26fe4cec13d9622cfafe54c6a226cb84fbf84fb076c8df9a2c3a83fd6bb22895d15bd65a6badefb65abb844877c4dfd97563fbf6c14c057612ed9be967f0369bcda8c8c07f0aab6fbf6f6783d9fc3129100c05b02def91bc14ed645cfb7a53a6a81f36a530ba6dcb4b105058a660e2055588b05183931e8ea0b2c515b5aa208d0f59b04871421ba3b92053268a1151a4410220161a5ec2848142451520d690e10720cc04b143124f209d8985c005675d7487c025675b747fd6947efd567dbd7a25bd75662241982431484879c224c34d4c51b4ea612f0ca28bdcebf57ae12ee86c0422dde9a24c17f882ab271a137297fd154e4575e86ba460298375d925687415fade2395904a1eb0fd96f37dfbd7ddcc292feebd4e2a79c0393be2af756b5bd801a55b506d6c45b11cefdd3d09dd6bda95cede8be6eb00f3f7a2aed418df5b9598c195f8de8be278bfeaecead455ffc7aed7bbde826ae3247536db5f1694f6b88f07a12efffad11e4b7acc04eaf26d4d210ac45f47d1f62b09a4438ba6a914ed7951201efb80bafc71e0c0c139c37dda6c7f1a8402f10f92b54859e2a28da62b4c20f35fc1632480c152430ecc1a27d4c8fc855050aa54dc9402d96750ddc1a64d4530d82314319451220c128c698283184c9a88c11259aa1821860f5d14b9b7e1dab4c9062adbc68a16f4f643cdd6472a083ffb60a9ca64d6646b75f8f1d8b4a9288b1d6ecaa4a6879dbb5b78ecc3519f5dbf0ea1f5cab5a23e84c7c84f53d11abd7a1f9b36d9e065db6ccaa4a6689f2d9a732dbb7d126d356ebbb52993184d5b24e9dbbad5d8963c626ef1c5ba668b568d186cd1679b498d937d7a1b3791020d998d698ff8d41c63b863ec17527b7cd11bd9d822b55368caa446cead87370c431c865e188661ce61731251d9e2d39206a42ea8146d3477414c19aa1900000000e314003028100c884442d150244ea4654b0f14800c8198486a509b0aa4698ea328c820640832841082880132002224541a0063588d5bf3523d6bf31dcca3f322042ff74c8c3494dcd536e8057dcb6daab72ad073602820cb7452bd2c17cbf39c1da040ecd00bd9275c91fe2e56f69f50fdcf160b631bd55e72f6ace8f31e7d1cfb73550467641310ccf9d1efbcef346c2df410281e6ed67ebdad749f3bbafa9a46a497dd5b55fbffc895406fa407b906a45555ac450b75ad24d0d56b77b9ef5d3b4e2ad492daa50cab2d5eb2d480c00c2a7041a38b73c2cdde7ea45945e1eeb0e5649609a102baca5bbf8b4a26845e009aaccd9ee40228d195d32f5bfe95fed1ff0028d3b804fda9fcd39ee20d06d1c98a1b4fee1d73010acd7ec1e9be1aae4d41089007838934cc212b8b52b15bc8be14e788180c93b3785d3491e694082cba488bad6d06428036b97ffd7decc0feb1565d3f9d6212b4202ee1f98776217f55ec586ffc8ef534d5fa072bbaad5cf52f569178e8472821ab45f0952383df2e1f82913380eccbf56127858f12bc0129f7ef55c99bee5bcb233049942c79fe978fc274ccb1bdd786984b0422091bae07dc8da17a38aef5fcbe772c5ff0aafa7623f486a39b043c773e709f6ba08b196629202d49c7fb21ceeebd68a727159b7bc3818670854dc5cd7d410b3df90aa9a7f40378e4e62064274d59ee982357943bf463703740622636e22eb282ebf1017af578378a919b88267e13dbe3d4b843c19de3fe954a61270dc73c14d86b0239c0e0e6fcaba6b7ddd05f89c53f13137a46037b17b86d207a9fc248133efd056da6a9d51301965b5d647a73c6f4371168515799922b0ea4002506c06e0615d1f84548035daf6663d93a736fae4755301450310404ad360045ec8e0425607baa7749099a1f04541d480108bbc998598b8e4c7958a7383568d90e1b2152112e7e404cba18004f505ee9ee2313f0a782701e7d290781e8a4935732a8b6d35a3d82705d041396e3647ca7d37a01d62e53975b40f106992e2988f3121ed393b0472400e4738e030c78a8731c5b977500589492a829fe82eabbdc2eac044255ae1069b0e170479ac91b6ec684c74c9cdb9c06dc921111e77f9fc607d0e172199b585c727548d6c6aebe74aca776f07322476bef66840cb4ae7d391d74034168a72697e906ef970112026e15519cf175e2c056a30cb03b01a8ce6230001e96b8cac10a76fdf35c2d21db72ae8fd0b84d4b5d9b4576979a99456ecb1ea12e4736aee6360f0a730cbccb4ec2711a8b7cf5d272c19269cb6a75af61586a28820db85143962c1c091e07c7accf2e1f04944178d7490342d24f40f07f7b0a7020be7aab68acab23a6aa4e82fb3da64db2dba3ca2b99cc503506664a970a036b6fc4d7aa8c73522c4c586cb33b95cf7e2bb0658497285ab4f49d466084564dadf02414b83fa136c1e76286bbff3ded8143f14f05ddb3a5ce159ec04c2e0d0dfac5f465dc8ae421839cb018b6bc52a583c99ed0fd1e325d4ed7ddfb0d0205d020c8f575945e2546c3a4f111d30c6d4cb3b00884101a0a8984a10089e2f3e73c45b23662feb69cc027a5411aca0a229751302d4f451854b2c60a91d7936c4b1b414d7030bad0067d65cbce7144804ff66838894adf312ae3a75c5e9e116cdcb2675211c29bd2900ec70c281f792703094ec05f1a441b78b4358296148b28c3b8e1498d290f4e1e31b88ccab653d3349601b1bcb438ca6841ff5f0fdf3bf88962242d18e35a9ece7edd2ca8bf20ea0230fa3d6d1db7720087b4b143081cd5a62414c04870035154dff1532717d3d08b3f3c1bd61b2a7895e2c1195dc821a0bdeaea6d0cf81bc2a43be992148b4c2a556ee2b5335798e41a00f5ed3b7d2582a4098fae6d7c104e1c7ed8dbd8d77e050de42cedddf8afa8d88fe0fbac928482b76d60fdea4af671c09934505268ce95aefbea78572f0a9a8984d22e2990581b04ca144ec83632e0ae9f6f9952d4488496b030cfb0a2d3c6c800ea933f734525a5a8909cc56e283c7e37000db9bfde7f8d15877822f3d2241e37231e0c715e261becedee312dccdb81d330a098a32efcb72f2e44ca66b71ee3d49ec9cbc46ececf27b317ce2c065954ea1efc679b418c3ce59b28e9bd7eaf9a1fcaa229dfcdc55f3403c10de2dff8fc01809c2afc3bc88a4f9c6de9856d66c4b02110d23d33caae2408a42d0a322348d615827645730110351a0176bcdd198def54b42e52afe840aed6cabee078ab471e1297b9671c09cc7610de3cb91d036d1538e45e0fb3bafe4244b9a6d31cc65af8e8b521a9537e4db48b8749d050029a0d0d7a2f161d11a1fb01f4960eaf139f93273875b5161a2bc53e1342f45f2ccc266983d797baefd8095bd8e52298e4c9649a09f9102285dbef34870258cdad5172619db6b13dd22b2a2973ad7f10e21927251ffedd4a316d22c7020916b040fa4e9dcc8319c453abca263776eb9081ad7dc518d8dc55020f2b66b9d535a8e52e9cdcc860805182252943280bb0c35ed3e0226edaf6ccd5b53e8f7638dd12efc0d8d7c2f2ac7f6a003e14c8719a711399c00a3e19336c346caf320424b0b5bc3a82f23eecca98791eab23a479c64eb8080ec0520346656ea2be30b14ac4aeca8d5cef863ad58b15e8942cccd870aa6883f1f30e01daa41dea01cbac22b6d516dfd92d4f7fb90e9f667cc36f9c3cf714d5e584c0cfdaa1d94afca99d9a8d90f19aac3e20924b190fcbf5395431ebd2550562eb66d97e6c2cfc86708f44ceab3db326df234b7549767339448a1160dbad58addf975e5c205943e30a8a32646441de493c4fd15750634698f25cc4ced2933b5324ad2eb886c0277a42584462a16cbb6ec3fa9d06c6f6419576072f4a7216ede4e4f37623915903d06666ea2d54f19bf071d623a696a1f587d308f19a5cdda353425be13097c5305fcf7092e4b79314c7e04a9597e25285f1f2a04c7e0925e13819922d4c89b09d3d3843163e0fe0c0d0ed2bd35eeca5b449ab16103d76b6285128cb2d9a8f878dcb66dea699b5fc52481b6a239bbbd0fda5c0a0b5bf4acf09194f03bfbe167b9feffd76ca38c084301d1f5298eaeb61a1c254aec801d6282e0b53ca02c0ecbd28902f1fa9bc48e1985f5123a2a22263eb45c6158280bafc61eaae9cff6fa60d1cf6f08f23a604d459d3c414bfd52f2210765d2b73062410ebdb0582fe9b6000634ad4d6ca8ae8fe666b575c5997e4f13d8ad5bec4c538e97ea0b05799c6badce499045655ce49dfc6d760d3b5eb1282b4aeacf96946f1b4684d95e3caa80975c3770e948eae519dbcbc0712716a41f3d928088e06f6ad45b5592c10193e83db9ad5cf9b63c54fb7bc6e2bf0a3b009b1370b49009dfa940e2f8765303fa066db52c33c1f15f07550063de009d374f1ce112a33887cfc56305538b8441a3306d063f233eb4687da61c21820924d54b500eb5ac792276e308ba005f265c648c5ffbd89265ab3e4d22a66170d799c126ba3ceaaea0222d67be6618a33c1302d28c208b65d531b74319c8062c9b3f5e059105175a4ce6f0110932633cde992a1e67205de4c910d96faee01b3adcaa1eb75bc68872567ddd270afa94987b8fc14900a3e1c71e33aa5e2cabee1de68369078eb8beda89e2c149448192b952f44c8df1d48d9eab744a55c910b580b6f16bbea2d1b2e0e5b172f4cf5b6a1ff1a38c2a89f21a3a14f1232c291604ce19db55b15e254d0c13f167e51bed8f9344d4bf7371675778d144893e292f3655b3adf1798d0d77a017d343b03dc280bdeb3e9245e9575db5a5f8de6629443432338d0db1bc2a20d146336535f99d7d0046a0c548045ac3517ca18796e5af9657eaf438daa1eb08c7548f1927ef88b900f04d68b0d94d77a4fab1f407894605b8c3c8c0d8e71dbb8893052e20a5b03b67dd54cd0f554506b7829d43608f59465085446f1efcfc78f6db9c28d80e7754de567a120ace0eb5941c4046982f45054d268298bac135a5fa2afd05d10ef59a8975da1d1fa8d34f8a0a21e5bae7214959c27d2953f6d82752ac7880cc21d7474c40cac36af744261f99816fd6f022b660af6a1e519336513927c06b19c5257b84eb4ed9210a4e236e391aab239e745871ad4d1b0443cf74de78e84a520f5d45b8066d199c9623ebb3010ca0eeb195fee4532960f327153ce0b160d811339287442533cd9dc811c875826ff74be83fa0c1dd3712526f6eba910653792cdbbbefa8445dd1221f4010c100f128e19bad2cf5b7eba57a7d8ddf6cf974e9fb993e6256f090056abc9e480ce0f40f0c6fbf8cbe1d14cbd6bbc44c6988c44b2f42c8ed51f11ada2ab0db69d528cebc5e12426d21ea0eec8db80e60b8f26046a4665cb2c764c705d920d060544068432bc3e1c0bff13c7e292e8f4084dedbea0e8c33f8970ab548d3c2fc8437216658c9657c983a95e0ba414111a82e749463f3a9c0bb568fce6aaed26413de8be90da7bc1f7703134d16ee3566e1d5f7782cf6cf8cb4e15b4a85989680ec8246571871b0a357c51a782d51e3986c157541de612591bd4257d95a160a30ea54277c35a350182c31b737dd699548763437ee94d814a87a4b84c05cbf4c825fef94a829ab437b3e75d1c9f175b4491174fa1060dc6e6fc517e08c8af3051ee135bdf6ba5ee3910cff9722f650b12ad106a455eacc136320b49e08ec623d00d2c37e465fb384b657237cb851ab3fd640dec40b54488175abc8e01e6628bf163e5e4bdb04266ab0815a391eff88e15ed754b422d4ab95a0ddeefc8c16059056a7f4cf84d92bba838576b71a6a7ab1544e491ca69c1273c1a3f6406905b178d8b13eb5fbb4d1288670f05bdcd072d100e450309104e0770a44af4ac005838272c4fb2f55fc2ec43e0ee8e964fca1a6737ff4445b25d7b763a675771c7c7e1654849cd46e7cee0dda062da7456210c1c7667554270d8f188cf0f0c5332914eb2f263b7e03cf21c7c07f8f002dd7b00bf1b21d1aa22ba08401b88fb08f2a18c9999a9cbd745f46c77338509d58eaf35a8c86fa58781bcfa84eed25fb405d6d2332a51beb6becbe0277bf8ea89eb6324de2b7795e25cb1fa245312bd10208a04eb51eea86d5e7e0cb403b5d4b853074835de99df62b304ee75b8247aaf3c8ab53c7b2cfa2ba6b3986af2e1bd9550aafe50f540dfde89e2318e2cc2ab578739e4fc36c143af797be532ee0878a3c4e14d3e6dbd8076a59897ca13046cc3f250f95ca02c134124fdd2f152e2682946b9bc72be6967afb27a05b60d653a88cb83488a74632d8979b4a30ca0e31881547de4f9d777ade91485ba93b3ec6e1a7fe07c63f4678e75b31d49204b869194039195dd61720f0c91b77e0cbe25d077150392d7f3929b8abc0e4b4dca2ba94c94c8b37d070d4f7505cf054b5ea6f6f1ab602fc15590c4d8205b98dc4a826935699d18b2cabc0501c18a14cb58b3be3fdc0dca3276159350d097d47d2ca3ef0dd2f28cb187e9a92a5d2a726dd7a0fd9de75d2660311007a73dcb251d4402fc6ead48c4fe071ecdb9260f27fcae6f9d9aeb7391e360e64d6ff41721c044846d5c4f6273502d9d37b52f2761bc574f7b653fb2ca061decabfb4d12096ee5f26103af8dd30303da292b712b2f2f4893850e4cc2cf1359fa4a8bcca36cae9e846c8b209c2ce3c1c2d699378d5e28d0ac64b2af2c2bdc81d916a5c824aba29fe322cb0dd6ecb4dc4ad9ae5606670dcb45f5d7a1c060f172318534f0506e3037638b4f846f2cd1d7101480c49fd2fed7acef689e4c3dbe3849caa44d94e22b744c9847468e7da42c36c9d4fb3f529444341c05a4d102a389a78c0a8e7a7366589798c5ab6f126416928969009525bbaa07045a2ae5a1d10d630c02b154e132fa22af33c6e5724a4dfef837b0991741b1ecbfee108db7887c9255b59e7f1d37e42b9ee3ff9c1fb4ea890c7b6e0490edfb61d35c268fcf7da56f1ebf0646aba6b4a68e59bc95e385980e39ebe34ca5e56b95e818ed075fe612d042eafbcbd040d84e4602f997c401e693fa41f755d1af0d19ec848da6762749a2c26affd941f97260978bc2e22f2e076d6cb8cf12c7c3ca609fd4abab820fccf3d1d6d01d01b7b8674139f0a70d1e1af966a0a51f4e45f88daf811f5a19b16d1de015812d9fb4f0871c118eeacda7abb176b2d2c8ed4013de93bc25178c6af78403ea0fe253b386eb65b5d742a512baa77b8a0aea5ebf292b3554b57a915e8239d488bce764e060e75a96a67be1784766c2492b6c98a147ddbbe1418fded747b603cca7fb4d8439b10e74bbf6f49c1e1154710e6b0067220dd996309fe3db82a3f05ee67241466d68064ed6ff4ec55279e6e03fc04df44630725a105208f2486b38f88f53c86637323560279823b8ac30e8c8f254255fae653403051d0f023483813eb5b9fb68b740212ab62b500d580b30ea66b0800d410d6a12a05c4303cf9060e60629dbe73da13a4b31aa64c8889dc38185bfa28806154a484326fbec144d9b2c8d56a32bcb63161e3ffc020f8ab94453a15544234cd2620d2068da92004321649f090532a9dd0e0473d827713328f3f229ee409e41f2f6dfa9e9d1372be02e2220e612e222a7d07c21222105830ed80b4cd45139cfe58c1e1def0242e6fb33cdda3f93752c300e48210f5322eb60b0d83bf77320ef9484d5ce1968baf202453e36e3a55695ffa9e0d98e56632a489102ad31d2201f832e0f73bc7aec7ef9c38cfb2886bbea74405e6e6f7e1f54dbe54be8548fe681aa07da405587d102c9912970ddc29688b0ccd2ebb5f502fccb50abbf85ef8e7728d8da9a09e551865582105dde9699e2a8d49d0c33dc710af093a948878b3b09eb5fa2c504045013919ee5f463d8ac9d327f1db7540fd809ffbaf9c6a2632af9cc7c632c4785f183501472f1d552f771650d4bb7ba601cd85a14364b19c7e644058b6a0465c3d145e8183683b8bdd2f8fa8d8f59c2f5e0a69e72d33882d0fc391b959a93e33e22023f138012923ae450b1d7688eaf45dc9edf26fe084e0acff7a625015753807480952dae08aeaa9db53ef81cc1ea8ac3890e0e4d6b2f43be394cecf18ca8855c58275c84c3c7cf4ebe98adb6e329ad5b3739ec1e4a34580021c1599a8af8e334c536bd41e14318531eb198480a4deb81ff41ddfba24155e2fe65eb4ed95d7309238e0982d2f9ed0b278bed9a442dcc06f16674f811cb04670f4e6f53821bd909e1f43ccf5929156ff6485360386a7bfdaa79901e9f0c4af5ba2007e921ab2ca8e0030baf5ab562a44f87f0084d6a80793d2fe86620703e8e7f6cb4e43e52d2b19d3f20db5d9aab831c4a371427fa92bc3f51ea3062acb906c4a17919cab5fb20d286c451b060df3ddfca9e85e53119f3ea8d72f91a2c2718781fc9afd4b7e3521d1a2b82c4a612b19c77b6c2efdf03f5a52dec5923437658d0deb8be38b4ed31800ce5cc5f80db25cc46b9cfdffe0c66096e4d0b8f5245644efbed5eb6ce25de1071448ff098d3a007f82c8b71922f11ff981e4967943dcaa486462c8b33b0b3577dff489145941d03e2ff3647ee1700f08ca062697cbbf0736fc730f021fb5ede58497c173ac5959deb1d1655a755b8af2581ed0b000a80eee081bbd0424a62159f45482eee77c9a3f40a3bf9ec680cc34fddf5c8f502eb3a72837f200e7451b2fb50410fb8f1b9eac9c05ded55d77581ac057f1504aa193d313bb03d206ee09abb6a8f8c5d6eb08a0bca20ad802a70aac0aece0557fd8d15daf31803c4b42a964a94d823662b386e880dae44dcb5dde176a1e2b27d3117ebe0f929842ab5ce7603027d84c6deb93ba17a6006b72809de4a74939909f3d31baff123bcd64c861eafa6665491420fedf888b109ccea1cdd10a95f2fa43b16aa07251bbab8a7721e8f13920e562c86ed82ded915b6e508cb868b9eb60432b3a295d093320c33ff50e1a35088540690d4661decdf203f53063b624f90cf54b6f9a66fe6be2350b6c201d56240cf244b131ab6760f2f57416a12b5015efa45699efeafc8fff88ae16fd7a233672efdf650845a6daf93b0934a3920caa4522a9b72092f938aafb1979b1a8887fbf59d03cdb3325aacaeefd0624081b8ee4850301a2605a150581ae23900aff17e4ef21e36996e1f4be7e4a58681910656ab51862619e865974ff2935db8d6111919ed029dea674ceb5be389400d6e04022146a0af7c4e983fbd00c90f767662b52d776e8b9329fc624f0e56f10dd52fa169023f20bc4440cd3291e961442bfbec2546d0695ac010fcbd52e7d4494d3fc1a52564bca273bc707ef4783f09388a86463375b234bdf57f1e3f90aea881de91653a4856dd7897dcc102367e84822290c4445bb06bd184970b1ccccb1e2c65cf793eb9ac2b97bec2992c728d837dcb9c6e4e02b3bce5257ef69c583e78890dd0774d04da734ca150f8bf27312f9d871f8795d80c5f1b5359933b7a66e6efeea69be209fb200ce08680dcfc678ac9fd42aa9ce2997841ee67d4cdd0fc9e1dce1681e327b2dbaf21b23f71a974c8dd9ed25b4c7a651aa262700bb55eef1b449e74689c107af1011513670a4dea7927e4d8fdcef65bf6f8b11ff52be8c17233eee5cc33cb7efb4804bc780266c4e1a97d526c3e7689c228608ff6b33a64d44ae6c15e65cbaa9c522be8860c7367fc1f30cc5afa9d8081007157257d9d401eac47e1dc35a127b203cff3ac8849b144c63d0893fe60f7b0d8737e9009a10322d48d51ff8051867bbb611342e4c6537c132bbcc86368ef12a6b7275572bd2cd877fb34de637aff3f2ddbf9838341b8473eb04188da0d11f30f27394819f11089df200ecc849d1063374d3f3a29a654826585afb20f82985d88d359826a3f99ffb1509c9b0ead4cfd28e7220a3a8569fcfc011214f0edc16bdb650c465273f63f6041fa85eaa2ecdf87a10756881037903d9cbb92e71fad291fc09f1f22d2dc391b205986ff19d2b9ecc7f7a28f2024d19a142afe0327a9f93add24ade4b0246d7945552201d5031b0e3d5f83ac8cc29b69af8aa9c208afd5e920b4bcb4576eb44da2fe47241d7c8451376b22ca38e226e2f2c7fb2c21760c6b4336aa3268b786710ab89842e09e22b9f266a2017b8da98c4333260c26866c5410214a2a9275fe53026ef38a0ef8324fbd408592a6b1d225e05f0d3ca27e701ad43672de1ccf50dfb32f7d1ea547b99ee120b509255f2d996b5e5c62535a2fa0e407f5764cb960d583e7749369255b60a1b6fb57270c846ae5f10d3eaa43f08fa27355d305fc44cefdfb616b9aac4b2a1c77d9dddb9f4250e61cf45cb7adf7296c0563c464ad4a3c36ede64b5c324996c8d0ed429f9d4a0d2472e1972f09e398bc5323bbb4043425d1116e1942fa802dde815c94e76ce2b68faddb14cdaf856e74b407bda076060d8e26f0bd72e4ec652a33a3f1e03ad5622959137f5469ce1ad557194480c494b3f9d22bb6b5821e7599d380c7ab45bb585e3f70c611555b043a15a14edd28b8d984f9f0eb82cb761d0e2533a663cc42eed9a13aa1b8d908d0757504f9bd07a6073c80fbef1001ee553065d0eff61b7e7d7c805afa190d9900c93d7142e74131c29d89ccb5a9ea343abf0348a912a755e93c50360a58f0f335276b6e80c4a90f5535534ad6da375d507a8642ef5114c2e243b8f81f9dcc9144513ddb2841e96a116d1d26750edc7c9ee9851e972721b79ce201aa340bc9d35014cd713895db1bce94212623a7f96107db77984cc5b03b807ec2fb427416d5f83a21db5eb3bb8162939f52816d84a02b3334a784af44dcb3dee16af6c9c24fe81fcbd73fbc0c69634a940e4851a5b89b239fa0cd11fe30197a39601448e8a4642446e72a215db3b00e0c51f3a67646b326f99ff312be8b42c754ba2543530985a7af34d594de491ecb5104570da161980a855eb928e88961e5d65b730112ad98fd32cfd88fb024e9d433d9c35d587b4a326c3b205e92642c63d8718a0a85cf48da731fc403d980505a5d311c79c0901e02666e73ee07ec476bf2956945ebc7b9d4b0c0081370c7e420bfb96e2d20f7dca8b66c663db5312eb8ec4aeaabf675fa8eef0b0987c4f7595dc42c62c48d938852caf4205859fa32dcb0a2e00c21a1f71906884d6ae76d47071d670a280cd659613aceb2599ebae3465d0969238ad22befbe7dc02d576be13c47d1f6188936ed8efa378a132c353c77b2c94dbdd93802f44f168717f34a6a4b64be5e331e29b4d228b6d0690df7aa956ae29258e2699a6a48c21e49d8ca7a81ebf30819b1d3311c305d6a03c21a639720413dd3a656a5b52475846e8d244f9a924d0268a3901af65d92845ad09cd33173062015db19f3d3670e5000b4e9d56c197d4136010448e6621361528dfe984fba924d3ed4c33c6ef1372b8d63dbe6638704c71ef85901cc6ed237a4a0f63594de04304f1c8b5b03e080dc783d735a03e3a4e1712c1ae2fcfc9a096ae847277ae1604d56655739969895d1071e197515d0b98c4800c033650aa09c7ae9e2e5668ca3fd8c66da0cf6c0206d815121a7a6bd7c4716eb954b024e7fc4d27d77b09f1ea74d12124bc8bbde5b6a6da028c851939289b38ebc4ec1287fbc7488f234ffb4c6087400b4cd5a62f4d7c28d6ea1818812f192a4414912d26264106daa082a4dc7eeabbad0d9e536a33c5735a67656b263bfbac4810ef7bb6b62fb8a1d17518d347db533eaa77b9b07bc2e9af357623b36cc1171dc8265566f4f5d7afd0c993e1a92c1561c18185851599386865b2ab9ab3152f275735362c6f2137528ba31a7c2064d6b230a280d78a93db575278db7532a8defc4932507241c0a9da5c7a54678989c30537b194e689e88f897e17c84fea3a63a49de92bd1e3adf4f5345b50fce54c0d54795375246df90f368b229ecfc3b43f8227f0fa0297873b261163b6564f3288d3551313fab1b5e39dfa1099b8e0d86c181345a610d7e6f34a3055522aaae3c446dcfb8de97f8155b117f37c7eab029bdfdd4fd4d2327216363fb6d21e4391e84999284ecb5a50833c79f8a358fe7af9056261c6e6e904808afecba9cdd8f4835f657683333d1b5b01f0447d92b9e030dc32b83ec5ef85a29615497e0aa8b9e4b0838544d9861568c497999d55ba1e0ec15ffcafbbb06d522a0f2d5d41518586f9d262633156e7bc5cb9955a6bab0bd42cfd8b9da410a6a0280cdaf8bf926430aa522eb06c5ee80fb89fdc25c877b1e464b33e13f4c7eba080f1dda75421129b54ad8e86c9184c688ac2959b80ab1df8a2dec3352d2255a233b9875ba710c92444f6c50122c2dbe1c3247cb0dc0b32b27e4cec5c3e206cd5108e187464d1ae1041a1ab7a5155db45bced09958d5e4e98379fb2ae10450bb9363aea12312ec05d04b3e0aa4fea08cfc4e12ae5b238e7515166cf612f490c46c2b8bcaf62624a4cee658478f451f64798a9cb458c2ea91bc364356e69a2524976fb51d2ba6eac5d620e8b4accda21205b4871f4dcf8bdc4c97933411862789fa59f2a908ade926f2476a1b72ac8c0c01fb4f80929da808e479e9f1c2b1f17887b4ca14f7908f6039f7327f538ce2d411e55fc976ac9acdde23a807d204d1194ec940314c40c8c8c5f17b1f89a009846da4ce3f09cfe3279835376f41887c5bd1ec4ce2a6b7041c6b89e4ed9541554b430858e2e86e44c9d0c46dd53e6314051f4b715482ad1c2aa3153b315446e0f157870e09b67114383a820c3641eea84f435677a04f4c2ccd0119a3c8b1ec7fc0f3f9ec4f66a05ef1dfa9fa0d0c3fef321049cf45d0abdab1fe0ef632401b38cdcd16049991be3e7bd7a851323fe77e79c0b44e18d3ec206eb905bc41779c68e723287e6fe5f162cc24370850ca3a5a8a93e4e4709c94111018186a8364fe33c2a16821530d03972ab5f4153bc22b83f04e00a3c3294f889a23c43500a8659e14a03977092768215fec4c47738082c26e110354a1503f8a899b4f9752188a2d563c376b1b8ac9fbaef7cf4972e9a25a4b99179b2629542e585103da10d88e8ff7ca26e32cd98ef7edf4173cad02ae82a452250b768fdd63caab356f94286ee54c5e579d651a10e251bd31ab838407264954d3bc796f10991589b85225b115d63113f3530628b43280a618c81027f3dd49b96f6bbacc8433993a9ac910a5ddc10fb3f3ecea2337233c0699663244bfbc6334259c4ed521685f309970da7d221478661a45095e2a8317b41b2fee5e040c1b0e91e0cfff0206bd2f51e896777c657838444d051cb8c3b802fd5106c32d1b82d4e7353e8a487f55b64fe2050790bcbda153e19357d335a5e4421e8a1ea74c4949800e4ae1edd3d1e1d301f6c5db8acac6487ba6aa8cd4ff4c5276ca09d2fce7b3e309f649cf7eec9c0718d4ed23744c939820f90bd51b0abcc69b0df16a0cfc8cf0a1db4ee7d1fa1eaf66f9e2121c32aceec3c2581f4bffdc835ca7c0dc785702a7eb6af16c2b00fd671208232ee5cb645763904f6f299221fa4f19b02836a65901c40bb76a9229d11bf7a1d065ac0352e36f42df83e905844c02db8101d45b9f7c8c69b7b66ce54ab120316fb4bc84233f755d8f9c28e405aeaf6cc244f1cf6463834427982814e54b6719821e851dc975eea77264823896eee2a3fea88ce0a84bc280e95f4a85a2bbed80cabc1c04eace57254b2958ea4f6afdaf300dfb66a0df328ca6937e61dc3ddec8cc7f6ae9068edd249990aeb3e64edabe12133e74d613a09ca94d22665a286997325dd9fa6de4aec651ca23c2bc8980d22329f4c0cd7160089dc89f472460681f0cd9cf63c76bebc41cdf8f300139987bdbee958f075175d2f107555b376b467ae287e37132a368842e824bb9c6be4a1b70a43c6c0b9828148f4c302855630cd628c98494d4a7ee15782737b54ea9ea34237dc51c76a28a93a6e68b3e5e0657dd8229bf5eaee3b03dd1a15710e4eca12742b583dbe53707983522deb5182790f8462e0ad713579245f9f0663918a29a758ec7aeb074d8601e1f0c2e48f2d9f08ba50855bd76ac63651fae43385f15f65ca0e13f5a43d37fd15be086234945153d49b919db6e8b1246b3be2d4f038e2ce99917fe0158e77a3e7dede82aed5a2f9bcc1740b1ae3fa42d046ce9408d681a5aef40b444006dbeb6fac3c790a89b5976ce7a8663a203838bd930bb65fee74050bab03bd6d21e4b056604ba866ddbe042c87c885dc3b2bb0c6c38a5f9a6c4608b7733907461a38452b753928d7da0f74613c6e9c57d33daf5b4444b837a77f1b48078e5ca0eb43bf0f15d33b84212c31bbccdba4d9558a12b1c60ada9e6128d28112217e7a4c5ecd521706120e95266f5e5bdd60836dcaa4cc5f58c6bc0c5067fcc0e72631ce81e59b02d4d05b7f0f7c944d59a13d1b937306ecf1981cc3c2bc8c4b234da8d6bb8e2c4095064120fce249c9b86e7c9069fcc329f555de2aa7eba97fff5d185541fb6b762a1bacdc40b58bd6e790d020bba8442b1cacab968fb8c262158a6913fe8b25eb5bebbfc5806a2e564e76fdaff0123c72066d10ca1bf1d52e9b24e2d248388d574419909f87cd9cfd34618406e0df0fb6b6e3f15bf5ced53a6145fcc73a99bd32247c8add0144a83336d1c111e2c13b0925fe379e5a8a23a5e2494a8a90f0dcb838b669d764922c96d816d92b173da53694ddedb2754fc1c187a57109a42e7cf0a8edcc7e8c80f2dc3f8df34e2a4c9f0b9961f3a4542913fcba1bc5aba731607c85249998a726493f448d1ea7e65795f7aa5481d24e84c4decc048273c0d39122c24e4651874ee0c1a9b896a62e456d9d030c39d3373e10577997f5610133ec27c669e9cc0775f32f469481ac80cfe9fac7d22e506b7c3508f32a1ac1e957fcf3861174c8df5f55b1f069d7870ea93791325570265f2ee0c3ad5aa2aadb20590aec16988c02407500f490b760bd0e607fce7dc7fcfff3fd3e7cc7fcef815a7427bff49f6c5570a1c78ec550839e6be8db5272e25f3b8fb98e6e6d0d79b444dbafbc092400eeb98f41b79f7319cfd5358a101c8ccb3864c18de8726caddf9654cff9921ca728c7623ccbad2951938cd7fa61239cbdd3ddfe95b062acc10b661a1eccc554bc65c62f1672f83ee4d086179aa7f98a3a4e5a28165e90e6c09f441d34b076b97e31d904b3e3a3ba0a76459ba0ed86d0bb6c44f6a40ecb5cb2763ed1cc743b61622b6791fd815ce611ef3eb08c66f80c3022f4fe06ddbeb3cf298f524c87cb3ec26f19500d4f0a67a071b1682ab923bb1f3ba4ae8108d5e8631ca2720539574bfe0648ae0c088333098d06ac5fd720483cefb8b63600efaff0df0f8a8d48205db648972b321d8f866124f301ed9d78a65850cef2595caacfb139719068a6610d1b7c400ec6032cad0f58a9127c714b8d4c17c4f51146cd9a63afc607aea73f9eb7228cea2365a7b04115b004cf8e4ba7f3209c1c4c6f0cfc94ef7056274c40a6e2f811f2e37010145ce62c16978e8c078e4a041dbbfdd4323eedbf490c36a484682d359394b43413c6d28845d43a48b7eaa6781f0fd1633cf2642affcc68656643c5595bc47c92aa202fda69e23fab4af14c6922ddcb9df942dac192aa125cd56d80c75e59cfefd468235e56bd3f69620769962c7183fed44f050fc36400b50f697c1bc6fe314daf27a3fa867728cd0e9fed6612e81b48efdaecf39adb922a277a629b9fd699526c255c2b8eecec019f19b4c11df2d139d06c7622c13544ec9dbed7190cb5b323a6308fdb50f1ef193027c0dc7a134dbc908d3aac8810ffef7dfde86c22c7e40c773f46eafbbbe14c3db617442e089df92bfa230b4fae3c2c3648062a81c8628211c27c7b8fef8711188e541fc122c1917112f7e09fff6b28d80e4a37bfac8efe5d0450237ec849c052230395cad3c12e07f07ad48a1fdeb98c15330b4ab7521821e5e57a3e14cb909ab6d29e1216de31f3e5f3e0c50f66f5b36d3005d2c62d7aeca9c5f196a4a11dc4559b33475a8593366c091b6844d6a2d42922136241fd6d2d9ee068dfc558b97fc046755474259ed20e39dd4e8d562c71fcca910f160192172e5c7b54c2a55c641d59e3723f3c2232dea63dfaedf811c766edc1882b17f1f94cc5a236f455d4a1f042556fc637e866de309fe214921d78aeea99853074386dc766cacd92a6c0a2eb7fcac82e15947a933a9ada5ca006b99092701885d8861dcfaf5c2bbe98fe30138d039c435cc78150ea61ef6af252d23e4dad7c440ccb5092081b0ea74d891a239c0d347ded14596c4c0221e7274088b4f347e064bce513cc5a50fe1aa96437b09833c944088f810d263e560a38891ba802692acfd9e2246650e0d2dc02eb960afca3bba5fb15dd99e0b54a18af691c3f10862427b6cb1fc80f8242f6b36c5722db9d0f472a918f7cf6f77525a2be8ae54dc2e378d135d7d1e475df9f83a5fdd754ced4f902c5a7baf6c5e71fe84f1101c82102f08afd7fe5e4f64838eb2b84c6e1dff52f74ed2a48d03724b19f2f2194276b839e1e6398db5417646f26644d5c5bc5e3bfeced34587e511581d6c658174911b983b8d7ba905a4cf1c27a183c5079b61e078a1c759408160229d7465d29a5137ebbd48077bd863568e0e0d8b64ab0ba3815c9a8036d944c84ab03708e1c005e02c517ef8fd8bdd475bd4ffc75b017328af603118e56be51a6c517fc813e7f5b5f2c3a740a56199876899ee4a8f104655052ada967a71f8901fc4b1aba703d3a0985833918bc596b1c1cd84674c4e68b9e60621b222b4c8791ed52fc8a3ea76df2fcfcfc3772168009c16fc7db95e6c7362ecc9de994590ea27f43382f51ce62a8c2d0a5af53dff68d34e6f5762b76cc0586a7de08d74c5d7fdcdc5b7d11819fdcccf44f9ebf53d92bb17e3666cf09db9658d67ce3825c1d967b649179b131e5d3c684d485b7d55c613b60f403675ba372f02e13741867911f9b9520a63fe80f1e28eac3cbdcd7bd8d4d5d2298ad77b8b8f4e46af2844a80df048abc5891f45b7a79715c0b8cf01924b7b4184449d9291accd52e2adc5cd5c91329881c2c0e297dbf7bc671e5b1cfbc5393667156d774cf3d226aeb71c0aa31831c33623f80023e3b5395d0e5aff72b90d023369add2caba5a84f79f09730aa39afa533ffe7e8b50bb767684055dd126fa830667630011f0be5a39f536aea7c0a53be4a8737303442d7df93c38ed19f3275f0a7057a9c9a06555962650704fd21815722c3fa3b4af369c4b9b1828f700bf1137125bdc22046ec01a56e83cf84207d24e0f06e3da8aa0471b7705cb31bb181a97095ec5454c5c6c8be00b9b799eb4e9cfd588e89b6e6132b1003369ba56b23818a2c1e840158909d2df9ea734171971317b1bf830579d39634c4510acacd51bc4e60b1fe83157aaf48c4b0279e94ac149edaceba1e8bb018ad909ff4fa68210b91285e543a8e45e993d11e312b1a211f1efb67cd35d41768caac98ff14dcb4b12999257325ab0ed318fed3e037c613b07ce1905cdb89d1118bc4f709c8b01a6c074b9aa4eaa988d185086edf8a6912bb82eae7780a3498f93c4c56accd7d6ec7e6a8e6dae5accee768327d4aa6086ddcf19877fec95fb008d01d8dae9059ec4b6314adc816b5f895d618e8c839fe8ecef48268e56ad327ccc8133580d98086b521d36ae852871a445630294b795b01b809f7a5037503d222b006981e586c2fe821a727174a3b3c792ce486fca589ce273906c52f7f53b58c685c11541169784ba2e416c63e84e0f08fbac2c544c224844edc2e85886597eb26c6f2397a8b0c808bae3943bc8622b0d3ec54d081c4709895098e729a7abe55c7309a79f2bed7a3d5c841aa54a82dd864d3755c2f00ed3315705f2f6d4041f7f86df05a671cc558443aeeed3ad6455582526a3c34d556940c88e601038087a79c3234a2c95628f5bc9e32792fe112cb5a6e2c07a7585e2b2f02fb1326134bfe3837e83415b55ab83774513d3ec270688b671018349973d9ff38ea2f64798801ca3bf7b454d40d0655001016ac0ec070b125fced4bc61a99dcf9b028ccaa973ec1bd9f35141fcb93b0e087fc709782086c68afd4bed839a2a5ff54507ca65da2681a0a806c7b4e710364428016006a01b99cf791ef3517714fc5da6fae12494048f734b08eefe875b4d74b02425fb04ceea32cc8e4d5fdcf73fa5132ead7dc20d8e2688717ea4121f9f7ec0564363ab8c453ac1799fb7fa786e89c209a84bb32a82529b98ce32fafd34d6c6f923e9c01620aeb7e927805ea2768db36f20cea77a208ed1bc9890a4d5bfc77f6418ae4d7482d6b88316ba04cdcef0f4fe1e5d3ace1015de76137858d4cf244127ad24c321363d2135bb76103d212a5926b93034e9057ac4a8378be87189e1453f3f20aedacccdea9a05c48ab8e45720175d5f8ba0659c0a4008c35ed8bdd37e85e922a5f41bbdd319848e7247d88ba0c2ae787ea47748c6bec8699b82227bf612c45034085ca239c694212101267f1e5417c3722173fa48da13cf62776eceecde15cd52d720125b786b47c7fdc4f2d3fa77938d5710d2ce12c5d39759b0da16f423ab3a52cbfeab3c3f71a1fc8c60c4f0cc4097b4db68c54402fb7e9ef19c4b4aa40375dfc2ca50600627310506e124a24913b46c315382af5672c8e05c5daebc2c8a46a6e367fe316d9409d264f57d001b2943a19baddc8cd74a4844ec68c5058713cc1e84e66c2c60a379e37e65aaf1a519df0f71114224c6c41dfb38dab112ff83e83f82fd9fa06e6ef301ae93a027519e370e5b3a800a080b5cb5b641d5b99d713194a0da77dc3d867485316c340d41ada53071b4388f7ef58a30fbccaaab74e183405fa1d4abfc15b13d59e5349657ea104b3ad28f0aab1868fd2afb3a5e80bcf2888aeae1acc636c805336c6dd846175675e8dc47988be5f52193d8418a3a5b9b03763a4a1328a41555ac9f7f719a53498bab1411c38a761511336bca46722a4c3d350941d5ca566f5c8748ebb086b687ee55774d1045e4685c82bd52f5d5695fbd2163652d5d4411c3e6ca72c55b459a5463ecbdca20f8dae558c6dc51c40d24c407b14a2e575ca2dd8af7ca1aa6b76a82adaf4429a28d0145c487884a2be2197acb42d08253c4c6d785f92e79014cb28e186d14935f4144f89f4b655f10eb694d17e55fd4c747f71b5bc59ec6795d4e5b079046cb7e4bb230769586c1216c296009157f21c083650339cb14f4766ab5221482f6d675e30d71b112c6367c34a405df5acb78b87cf8b7eea9d7be84a1143e8a10d844516aa77b5d7a5302da23d6cd18893d55e07a08d23d8dbdec69f9303fddf3760ae342d3f7d9b44f107dff9f99f4af0b3806d194b9b7e7286af920dd51e83bc8bd785c10c5c641a30b2d6cee1d3f13b0e5eb9c28a1f3b21ad40ad6811a6409d0d4dc5b8eecc533128dd2f41e2dc120d2549d5f32e960dd6be2738af9f6ad7b4d2999f68b955e8767ae87c8f934c8da9ec5593b5a380b3c53ebdeb20ef3b6f6fee3c1b685f948eb5ebb6d49cc175ceb9e5afea45c2c55698af98da288e6d9428f63be6cabcc47a1bbb7d504f856c2448e4dd7bdadef809dc29761c4e989ef9d517c8091c58cfbe1eb309fe7fe1e7e9759a26f6a1053a4eef76230bd08f080be3c6f674529f06ce56bf8c9c71f47ad361f35380339337d72af3c828a374252a8665aac15d026be65523e5614e82d5bd2ea507532cdf4d1fc93879a93b9f6e809b9ee034610d79f32c592d8f6422d1b599878bf759fa1908d0414e1f0e05fd3b0b02b3f73631e2a53d12e21b5d9f825671ccf5f2686c2b49a522d3f95c740932a893668baa6fc844c07564fa5209d0f6222c2d9db5ee1ecd92cdb41089814bb8d05da71c6dafa828e4dfbda6c0dfe20e21da08d2e17f4e5c7c5fd63e61c4114b02cbf4bc830824db5bf69ec504be82dd29d6957594d86c18a0030509ac4561de66aee95496cbc66634cc058274eb08545e3b243d73f21ab0c1e84c37464252c1bfa93c27bfe041c9492befa1afa4b34b821f6f769302d94cae3bf30fd98b7d8cc2ebbf8e2e9e31013a9876d685851bdc52a2cf3af288459e3eb3c672a5b54beb8e32d3af89c92b855a3c4ae66b4c8f6380f3d45bc390168a2dbeb38fb589fe02c184032bc32cbe17a4ed06d6c77555faa51ef4e0c5612d942c86ef8a202a2aec771f6f9e73c9b5a107a0112c63ba5d6cc3f2cdf39053d860f2de083468c0b5032dde5b251dddc438ee3cb4b8e7c5cce1500af38ca36a49582034b5a09cfe908d33faee353f7644a864aa6e22508bb222f79c93c890297bc4484efa370a941b5c2bb125feef6ce711df7a042e906c0200547f6cf0782753d5ca71c6151334533e499ab34bc2627cc7f7848f8574fbb7b59308a5fb560a1ed4ae7de30b521a1dd61c08d63c30da20d8560e87430704cc197fee70f5b2936775209c6ca36a3b88cd42ed95ec9fefe5422abf09e5550812ae4062119e37084fadbdb5196247ae1aca05644ffd0646a7631a46670b4076e2371458a1ac9a4a9fde140898d60de3c92426a94a788cb91a71e13b0ffbb680448407c4d898ac9a6e881909eb1271977b2a72d01333809526aef5714ac53ede245c515f6575778e2d666d1b26eb7822effef10d7cce11b44fc1a19c2ee8c03889d5f5c905d78f605ed7631a04c3083f0300d94bdb421fbae325ac4791d0f47381e70d1a904fc4ece16f664028b8efa09584d507601b3632f54885052246ac49551c50290d2bf3880f793a0576ab7560c19a808c14311ec6c08d24f51a6708a603a607598cb575f9e7f20a922d2e798e59c40f92f58b441892ee9eebd3cd22818725562be497220a32edd729953522c9e894606d45748441ada6dd54098840debd13650789fcf9b8977d9b331ee225318a90a4141ae6bfbeac1fc307fa68e8cb628c8bd6899cc0cfaa7b31b227565f2a1d4e650d72920951bd0e9baf0f2a517eb84c138bd2c5e340084ec0fa9386d18e3e710b37c82581e1ce68f37fd2ac5bb7a7695ecf40ca123ba6c6777f26f8c9b2ecbfdfe8ae9588c00d68ad6d58510de3af224b7b96e930d149e2988dbb4030de5fad6b7259eeb5bbfb32555194d8f6d832ebc6497c29e0256027dce0272ad6f034d98204c91d26796d6b69e1ec3daa60ab1e3bd2e241cf50fc1858b1838c749ffe5044416e6115dd52f80ed9f63fab6b6bee834a3c39e5b3520d23395ec5eaecebafa31163852893cda4fb99cb714e0b488e5eaaac2edaf1ff140ae9496049b9ec3a92cfcba5760dee770756c93a623a66b9ef62f2865307b18ea0e3b157a5fcfd2af8e32a02719f1f02b4c69ef56c0b8ebf1a37461a52c24b19d7e358ae24e47d34e1d8a330e1e0a12f4485a4fe56eb33ee23af4d26f41b05da30ed1be27ef630c2c3247c5a021938933a586eb5adf704b9491d854638e735d393d2308f817c6f6863aa6294e4b61c950a1933a1e0959e1f66f266d656a50a8c2576fb6176de9846bfcc664d79ad5518be1a553391bd89d2eeeab33bcb0f6850bc188908dcc616cd2a0a6a7c7baa644f081e563fa1b3dae1a57b1649d54c660dc18ed27b306b8c46d761498225513c2e285f8e5e60faa3faad1cd5314c0190253dc1359703c09119da14b88045c7f2b621f60d2454c4a020c7a0ff0973b2c0091b85cc2a145a92417bacc0c30c828d2304ab00057aa73c5938f3d284b0d5eaf5e01990ca10d73eb41817af57d353833413389315feb778cff82254a70aa8c8d9e518d46eb2df3862edee3153ab0a6519873e50c436676f3975fc33856505ea08b51e7bf5a2b58b1ce1ae7c50ac8a2cc5f22c5e22942a138f62c3a1cc1abdaa61aec412407110e9f56d32e90b3d1d34b1a1e6b481ddebe7d0748131313db55e7f7917dd96d627c455523889184a85304635aed4369fbb97a2cc591e2297dd2af8cf8b484ee38b786f49b7a72097487acd52f08c1406552a3d2e271559e6979c89ae563ac0f65a5a76418f330f28e4a86b3246e99c765b2451516aafa6ca9967060be5638dbb910846ffb0baa84674bde40565e103d999e8afef96c27e4a2c542d3d7c11a1614195e1948e6e97395f453433645b79ea9e0a450ead0e002472459d946b84cea5acc28ea3792a325b76e5d95f36c7c74ac7445b9fb889c5093bd76c2e728ccf952140f31c275a1189936ae8328c9bf7d59f8fcfd7216d5d99fde746cf4de4ca2024e4c591a1ac3fd4924782420643a134c502f0b63d6128eb964fcf02a7e3e2de33b83c6cb910a1ea4a05f6b20965d0362460025e3d0295d8902cc7db7d624bf98c14b4b166f25268f9a9ae0cdadd62568e991c44c6c2a85af8e2936d16618a5c51f6b18101a66bb6ae1ee6c390ab17caa1b43e2822e36afa93729ae24043ea0d634b8107827ba0b63f278e8a16c339cc9b7e7a822459457c2a276cbeeb1025eede2b2f04e5e285415c74e655f84ae9f9027b6ded4fd8437fd9d76bb1f31f68bdfacb0f9e708004d9f05482dac6438d723d8724cb895ab6643fee854561905b43d0762a6a3c77a52ff9df7d9071ae9a2e8cab17dc6903d8cab4e79ff257810439e843741663b1b996b93500b2fb29fcd158aca6263f71e1754d7221e02340d7582d92d802411303d1d62230933f7b6b4841e6c4622f181481ebc7eb86ff6113b22838e22e5479860d121b2a1c87fee918c0687afbf9d8ce43a0f2409ed40d985992e8ad03021d9e0a2a05844018018f05a224b7877d4911bf8359e6362bec40ece5d7f33b82ffa36073be38698ecea1c2318b97059868d890f5ae6084faaf37b2679ef09d0ad00cdfe3f2a5b6a8c21910a90b3fc979500c014c0ccff0af23c9e9c00a015c0a7ff05d7c8d91b82df8e8ea580beedbf8504e085805402c02847ed78424f1b9a1e05ff107536633b67338e4b4d92cbdcff1037dab3b9cd7542bf819597cf35dbefc6907f9a2be98ab532e574147d50c8a02fd375e7af8490dd21b2f8a9aa23d9b1bb938dc33cd9beade23a15997916c1043262b625964df1099b069052c1bb49581782469afa960fa316dc0aa1d243dbae79d9f929aa9346c44f38613ee9ca8c52a6d1391b7d01b39b6c1b66bb5d9c856d45803cc359e33ba0d16e4361015e913929d8d2c34d9c99ddc793975e9cab192622eac3ae0b9f8ab82bd111fe6f6928458e8e07b70f41f203e007e5df84c91185def279069aa1e511fcd8cace56b5cb2c7d7689972cd5b9f570d5948738d249891a48877673fb30a84baf0625e4df376c3bb26006fdef0fe00200ca6cb3fe3f58ded56bb41f10a20cfa19c255e9fc0038ec42d0a86b086e2e4e6ae90762f5c64ef162b8f973ea50fe8c10ec5dcb94085a467f905f12e03b3bcdd790fa7cf6811c8e959b4664362bcb887f5a23e8df85c231f97701504ec629fba584a3b7c18a48f1d91c3fedc9623161aa45c1ede098419932b33535c7b65bfa4c41f089d5fa959c89c0c74d3314ea7efd5105825fbcced3ab92b6886a3e302d5a0785ef6921662c83abb9405d9de04bbf0b7aa7b4a072f8437875c8f3309b71d8e2057d72fee63d5f72bcfa121cd45f8289532ce329266af4ecfbd93209573596f0e97cc69060f9eeca201b64b436f51b015854e16e2aa0845a3b139878c918d832fa8a7430b0e879054bb382a677afdddc8b61556d047cdfdcc89ccd939d92697c8bb3527402f1c2871e3bb891fb95e25cbfab48d6e7065be01f85d8b03868c7cfc0fe2cee41a8a49903905577589facd0c9c978f936b903bccbf4bdb1647d9ed27f9944ca622d667ce73525f8bfe351aabc3252509987bb5e4a5c2bee2c3a20ad51afb72d86c645b959bf8304a9edf95bd566c5e7980716e04ba0a29809cea3d3ee0e8897cdb7ae33e6808f18d4e3e1eecbb2ed8d71b60a3dcea4436f22aa8e38f45c7a36e5a8e4fa107b6f55a1ad0993abde88b8b6aac6d548716d29bccecd67a0bd7f625c22b005bac1f91c0be36c71600c9678d38ad461284251e31636cdb8289dc2afc92e5048565e101d6034e0f44a98d8c5fdf4b4eda523c74a4096422dfd3fb007a54f5af980f3f72c0abb0153059008affaf47fc3a9188559b14e0408f74035b1408bcf03dcb65933b4502e7e753c63c0021e9a2baa0079306b6cc8021598cc111475ec49cb3de605cecfb799092eba9bff133dccc352ec91676262502466aa4cca64328d9abccc8949b16e4ee54f35f6c98f05214fa04c6e5e7d57e79558c24758cb84fff23062aa50e6845cb0b37c996fe420d2904958b2ecaee5873e6933fb5bc6fd274088a6ccd44f56445ed0c97323799ca3fa051a43880c65c8c28994a6754188546307901f797d899e7ec25a710a486ffc1a7129fd796ef31e1219ac285fabc0ed1b23e506ff2bcdf9e0e21d097250ef9ffed54e4ebed29c86553ff1b22a4b6172969db427a603d5cc742a23ec0a349fab008005502d71e18bd041afa0fb953838634093cf602173a23a5a42a93759277f00492a013f39bcb27c99b847412f452a1e5e68558cb41c8d0800a80c927b46bf7b5a356b11bf00402417392cc56159388b4a00ec18f68bc995b3702e74c951e69ea72f46f20485a8e18d755135c3e331f75c6ff168292813eefb620c27d69404f233579aeeeb958eab2346f08bf382fe96eb6b4aa8ff26229cd271eba6bd408683ae05cd2a913b6d144cbe20c9a09d328761ad2a7f907c4cf760118e40268b19851610d0794772f3fec2105d941c25716ed3c260ffd54c0fc6e1937eae7a9cae3eba8dfa8340ae0b0f0a8769516323e95d85c1e8adf329ee3f69513ae3b9b58fd9daf775ecc54c76f4d9487f26d63c1d43e1b380be83b7430fb082ebd1da9bc57e7e286a8f39bc1e1e04a98422ce8185cb18425ca0e4413a380db1bf739447c5f22fd4bddf6cf01a33e7139192c3f7f1893158da2154debfab6c7ef99a032be5035d1cf754ee26a5930273e378a556796dc2d0c737927bc6a770782791f9a090fa1e4cd7c18400c29898fd039fdd5883f75542728cfe5a496ec08bc8c661c9389cb622d23d499c837377e2629e216983ce060dd265b51f2bc5343bbc0de079619729ef96267854a9ac4d040710919daaf661df5850382f9fc011e4230b5555532288f2e792aa3e48256c8650b0751e93ad302b88137d38a350ae446417e7f3e9a47d8f2f703a03348fec458c9fef7b4c3dab9c949af798c3014894ece8bf5aa1861292ee2130b7aca26efe6efdb1ec9c6abdd2763b6607b80b60fe03caf063b44e2c2b47fc8345a87dcb57e7a314282c2f842298b81bb8634f1896ec6b2231a029a4d73ff537dbd7c47440f8cf47388538b045b45442cc9d5b391c5065fab9a247b6ea1381c5a0e80505967907705795219850a067217d10d5a2f6e3a59776964596fa08f21d29c3f251144374e19c43c47055d3e033dd50749c9801c23f8906c59546da53b2a54218704a6c19934c90b8155fe7fd709642d314d33223114a71077ef63462b7a398cb7d483e676b58ac6ff1a1a11db9f153b9103ac8450cc5f43ee6f356a7100f2d2bde92cee3bd15f3d6cd23f07cde16dd3e805d5d5722ab69b86eea2ad57073c4e2ae3799903d991c068780e3b387c6cb7cf2430c1917918baa322a3b895f70ed45b72fe7f3e824267d369dc9f6674ddfe70b361d281f7490c019a6fb3a70a4d9628e50b901620e5417f3ed211aaddffd8cd018c32f815a8d22ac084a181a7110a9ea3983ead3acb6d4ccf17f7222211638a79c0aaa09d0ca4b9c37d6c3ab164938ae30095030ddedac9f27a4e6f98a054b52c24a459f59ad0c8a7a3a95b16eb8b8bace79778d39ae02f812e9e6a6277e1f80d2e2ccb95650caf8ac7712218542f357fe82d186b23b74499b202330b4eea8b6d026ab5ac4d5ba480bc147d8e27dde440cfeeed44967bb7238c01957831885445f636976fec852ecab1d02d572b841fccd7cf5a9efbf1e2a3f0736675e5f1131400755530c80aa8f0cc64907818844341d5bbf11b227c0a1c1f5f3d682b7d936d4e11587e8edb7460e901edce87848c8ebf32a587025730c52a3bde79b948f7fe71f521b565f2ae6290914c7e953c1b469859471308982d3cd83633281acb29df7e04846624dd8d58a9e991f1d2887181bbdaa1a007785069e158ee0786f46f7baa0fe1487c111ed9a89d9c507c39074fed628e304797b650ba1b81b4a28fec7fc174524d00a269c5ea3ea497a1917d20b5fce5f0623bf78100afb44082f1623ff688ce2e71d55da40803bd7a62ad2c87b3af05e9b9723eb798d21cd808f8679ff5740fb008b4ab8e1267914879a0f1f13c5b32e4a3a63eb9c82ba97734db167824dea4f31b947d509bcef3596c74404e33983745e5c37b43d0b788dcbe1a7606a6a0b675aeb1f940cad84f2eecb5405226457df124d90b01dfc60d44185069a497d35bc25c29ed2843d675db3c7546f192a2ae2d38a458834fe1e0d296f91341358922582413ad1b1042d74d8ab7b446c290e51d12755d10c71be57d2fcbe775c035c3b2168537481274bd3ac3678f7357d326d7c558de49c857e26a1bfc9e66e21eee7989f5ae1b60ac3fbe1ec31287c85262c26af93e9d480ef452506644031fcc9c65d56cb8985150ea4e62188a12e86742b5edec2155d6d8f4a1490ee5b6001c4e872fa5af3c5d057f6cd3644a8fcffaf6d99704ec620f20253fa21ba6853c65c7a3ce5514ef5b084e23119a983f00d1508d0f192aab2cb8c812b6aefc1403518141dd188438d775463076bcc81861da311871aeda0860ed798230d3b42238e35dcd1d3207360fb0ad6614d55e77727a05503876bc0118d3bae41c71aee98068ed688231a765ca30e35da318d1cae1107347478d2203ba041df2e0b97f5a24b8be3b89547b5cf39fd875b09d73e0dfb3a26d4519c9fd3bb1fbe869491e6d75f3f1234201bc532274d48d09bed6a7bd6eea324b3c946577290d5418d42d1dc017688b3baf8e2efdb655f577c487765593af0c30d1d7738f244613af047ba3633a58ecf8a5abb31d54f5ca457a1f5d892ace1d75b909d701e7b48ab4cb3b2937eb38137c9250420bd34374806ffaff597569bb32ecdb9909489d44ed27e3a04288f3e04cce41442cc05697b25616ab2a18a4b54f681cb9049f9a6eb0dd0d35b19e060386baf056d272d3eeb65e28df19c32a5e324f44034d2f58e92c7818412ad23b53e7b59df9e65155b34702959a50eb68aef8739c024296f0744129ef194550a9c1228c653f637fb90f2ab81d34b1078b890bc7e01623689ef1a8704996e3ce6930c00e7c648a89a1ade80077e9e6312c64830e021d734876abf161f7416c5fc3b30b94ea692236bc0093c8fc82f8711a5854332d65c58642929a29e8ec88677263ae2d34f67981035169b522584dd994d3e76010f7cf4b28901347a5ce07fbd36b41c195678c95a7fc7056cf4b6b2161f0b75ab46b540c1ec7e0153bced342166a99d691f569c88d750e877763996b6fefacbeab4952e3f0032cf5309ad62ca974d1831bc6cf9f1e6c7814690c20c2a82bd2b6394d7a037399fcaf25f1f602e3f0d629db86498a90878c4eac9772e380210457e48b141ea3b9c14479babb4c303f4bb0bfb0261faa65ec4870b88300006dc20d4296c8615e4e15480800dcb746a1c92acf421a6133fabae78cf18d4390eb93632415ff2cb8563c96af42f1f53d985f54fbb64500c79683d67bbd351c95850200e4a2470163f2fefa25cd5c4f41ef12706d062fa722eb94466fb378243bb5c44f225107dcdebee6d511ddbbf4d7af340e0258d3ec797fa6b06e0feddd73df2aca037c7ada2873192b92d63e428bb08c97b7c4b9cd2b55cfa1e1fde8eb17f4f798767512e4de28a14ef413efef573d10cb8d0325f4da12c60b2a1dc8606b34168cbbde2ebcc0cb986f20ae4487926b73d8d95e4c86b726cc14bde76c7b5f1e6796b191b38d2b53a53aead5d818c233f05d1d5de364d62b55caf36be44cf790fd31541fe1f2928b3872e17627ab4bccf96b2d1f07606048d4c528e87c3eb9ad6f5d77f76226826546d9238b88076f1c11e25555b928caa82a233f2f8c39f9aec42046e79185b2ae46e577cbe08595685ce4ca7cb86a01539fb43ce9501b57fc8ee5f692ed0a195c79600225626910c1731967e49e57666bf037711d11109cd4d8d7fc8c0e383a79962d59c7342b9a3f25866625d4534e1c2a831556808e2c184ced047c9fd708c6587d2be724f85949989322f1c028340e75d5b6ce860e7ebff7df4cf55c9b8be9660714f61ed03f56e2d36f6be483176045f9909e3208b9592504e4728d55b8e9e451401a554f8d9cf41eca7f15d421e4499d1160c832700714197185cc081656207bdd2895eee3262283728990a67d59b24c0d13e1505694fe14c6e49716913e339925fef027418397672b8aecccff2a2c5c0a308405d560583a4db6edaa566edb2ad771dd0c1d4fdff77400921d0f14e6cf7a5384fb0b5281f6d7c6a73fd878dd357cd920f6add74c936e2a9935bd4370c89dd5b9bf1efd8a717e162b8b52528f9e0c6b02c466e1e22331764152f9941fcb417760e2fcb86ee43fa6f3a3c6347e45448c6e573763b4f96da45da35252a1980174cb221b7cc9d6305030adeac772540bec255e4e7e8992f2b54069d15f0afea3253ee29e206f40e224c314554724af2b4a95150131aa69e3252b23384f531620af6201f539a16d99a41a9480eadf6a52e15471acf6aa6085b0ace83e57c7b472a0d4bac7b50211e83a3f22f315ab76fdea6cfa546b1fced74fea9c8ba68ae0a515a255a590464118715021c42183fc5f2d10eadfb21ac38101b3aaa94e7e41e236eff05d542b0471d79cb46796a81a9abad81a7971855f0ff71aaff8cbe737baeb6255aab84aa99d397c4fa5202267b5f82679ae30b7e038e6fa6daa7b28d463e6138ce03f6d85d5d0d359da85de615b09a26d7f1f262b4db320441694ec8a5e9380b5c9e3b7532f57d03ca3d77ca6be9d98465d70792820589e539363c155ecba527d24cbbe6f9ef355b549ba30e42a66647ead608da51d438fb364928cf1ec8f8652fb0e0336d7fd31848f4fa0d312b15112a2892b5a233427811246151d4d537d0f3265928eac39c949fe2d224984f8579d8bb6d96b42373b51ada9305fbf73b6f3c01a8bbb98363eb0206ac64bd41fe0bc09229f2890b8e5c1c6ff455a71d781dac840e4fd73e048abe7b49bf65a6f1eadcf14a99ad351a4bb29eea2dbe9e37cbc3393311bfb5c897dca28ecfab47f1915051ca157d4e58fb0bbd8286f7befbc21aeef66e34378ef338d21a3c2f583a2664cb53094808a507f843133fbe7609b46f2f9d45cfdcc7f290af2f48ccc0f0b08b19e11c1e611a73f6198d87cb8185a472badcd07ceb632dcbf185f465cbf4a81494e83ef51f9f9ecc30a197c42598f25b5775abb2959e099382ffda469eb1122d911e68b65901a4123ac4980c5b88815804cc8b27dc271461b7a7b15b55d67d69f6ace7487fed55a1c41327ddcd81f5cdb1bd6cbba836efbf5033eff641c178b298edf61ee4c09bd516e82604f30f850351e58e0d467110cd44bd01ac4b20582ec6f70e56cbeb2e8e07ab06b3fb2c46aedd3082425cfa08a12a61a315f8a6b66ad9cad8c752e77c645fbc76a1266e1a04d184941134b55bc6682fa9247bf606141767bca7f7ae5a3f1c485c1ae0a0d5283946539f4a37c9e77f3a317a7ada1107f6e58dd58e3781ca2558d304aeaa1257af7bafe6ff87f55e48c21bce97a6976946eab232cb63981cee2fccb9192cbd5386688507f3ef05ad1134ef534888bb5377c3c3a1627d4756a8d76f8c970e3c423021d853c91fa074343dc365d79eac08ffcef1af617e640c85fa9dfdf53bd5d167409305696f36d70656abc06a0f4a0f81a4264023d1033a32b8919038c129241fbc04e0184f20dd866b5b0a22636dede1e1a4cd56b867de31b7223d7246b4b6885c9064993f9ea51d27b1ea3090c85966569903db3d1292f8509a32d9c741ccca18c0360193c4ecfa50d6ee43f4834dcdd5153bc99b9293f2014e56555a965d8de8af5b2fc5f3a224c31495aba9d658630bcb109126f63a67c9fa41a0fa349fde05945df245af686c1d466b378eab42571420687eaa2217e540d0e99534dad84afd8a1a98a72bb037ede6ed5e71c90a92348c188f879ff2211b4cbd5dada6b76a9ded346acc7642725e5fc2ea052ccecb0799a2876e754b73085bd86d0c0cae679f8d68a13458d94dc376a741e2b5ab0754b3693c9c9d83b9d6043a77d338ced5ec286c05204ecf24685a30772d9d0888707e83a596f0f1fa9fdcfa7585dac1974319201d0e362a88d160832d14629cb889c056c478e0a6285c2b871dc03a335227b29b613998e724be091ed7d35712453200fc953fe0b4d7984c9cf834b345119fa0463de1d7d597aed54ba7ff43db69e0eabd55b4b8717b9c802b00a62275d1e0c612823fec3510d04ace329f65dafd57c14268e0f799d54cfca01159e88727a1098c4e38c8d68cd53a57d4c579a8cb7da0bebf7d7381069b021fde5988414882615c6c35649d241a2a65697451ff53956036b2b40505469cdd01f61b47a962526a053787e4fcf4e6b51085b08676bca626f74d9df18ddd15a42aebe67ec9b0a76ae53d38ef4214291cf8eb2710dcb10957e413f8f716a435589285d04c6bc482387f408aa47c84627a9c130421ebbb722591698a71ddfe9e08f0177986d65890a9b1d54d248081b151926dbdb18a392681c5c7291f5367c80e693e916dabf0e412b7835741907a15540ae10255af1a9b404ed2d74a03579ff3b5b2a782824943d91005a92827a35a9491ff5cc1dc2ca397bd8dbf8b127d24db4405ef94a2b4911e824a1a0b336cc230391009d4bf75208f95d5b139382923d492d0244da48190d5e79561925249f15d17040c29468d53c8a03cbe4e21234a089ea409b803d33513b7ef0c6f00ae77d5a6b3e0fad829ee0cee6686cb962e7d4c98f4a8019282fdc506472016faf596809f00afa9789f70410dba0235817c9b5b0d77f58d24ce0e2eb3536a60ddef309804d3c7eb0925cde8193cfc844145ab9588460651431e461113265fef4759027166ca5ceaf40913c537322d4ca87b62aa39eb0da5d837de27bce93696b1aa9034c070e6c475be1e52d327ddd1ed69b84b0d2d0750261034d9f9e01dd15250cb7c3483b1d54d49bed53cc0f509e5ed7768c3771c221a571e38621f993f6987022d71d70fe5a1179bc41cf0f9e80d762f1a540a0f55418ab8b021bc8f433cfa303ccdb71860d7864f9736085c927b03adbaf72f2847406cc8a3be3e9e3ead73b87520c32816f1a73f5c484a7a8fac579c0dbdcc2c096cdcffae2030b6c4f34a3a571fbf52bacf76127ba8907420f921d3e0b81c75fcb5456c41e971ae8ccf751e40ec2582ea4a554dfa6864609fe517ff0c7d3ace2faf38755cb52a37067b7b1907bbe481c4e045346005f6bbda9c5d9853b6fe7aba584ab8df69430db94badbfae76eee90e894bd275cc35b52e9238c456d11b545f5cc0e108e68d2b6f0e3b249f6a932c8331c8b86232731c0c088700f357b06a7ad6ce8726a3fbcecd070edb994be159318febf2696897248b72139cc3038f4e6531964b8f68a67a93f85b5596e709a74e17bc0c10b534ac77404e6b736979f549ec909fe2de4ee494a8a77482868456cff79ba93cafaf4cae9d1b0916ef899f0f00475c1c453bf7fcd751ef53710f81f738ffd4ca114dcc90c17f74a487ec4eafc3c9d6a5683d2cb40c4869884cfb5bcc43a44fc70e66d340af4f20bbfcf9bf1bb27a86422f03c019c2150bb8eaef3febaa4138a8c5575ab471600d9420e2404fef5c4868acc64cd3d4710b397be77b0b1ff6547bb60198af1f8ca557bcfb0467ad1b3766670200bcf698fb4e226462d32c9c36eeed7e04583b0a5c2940e7fc0e2138904c578a791a4fec2843d9ed50642738b473e76c5570b29aa54ff7e7201d67eca09005e2147de4af3204070314818973ab1a9dde643158b1f3486740fda304f9dd0f1b5dc8ae058e3124e29a87cabd4f632d8914c70c2cc214917ae0d10c81e2ac735c47da891cd2010d89ca895c786a01001384406b86441a6e995cbba8ba12eee1e3af21113145c2aebbef0fbdb41984899f1dcbf1e61a6e4f8d51f6eaef7a0679f8fadf1c602f0efe4817d9ea8723aa187008370ecec6b29ba384841a7e4c3dd273003a52d33719bfdf2ae0fb4129a72502f6bc9cbf585a6b7a47f301aa0b2f4c3105205110cd8489ce00d828213655a590a1e687cafca2973cc0e950e2232647fc516c56e32df90cd22094f6d320070bae7b7e4e219042974500ba17f43394e55743470e90de4c9c1c3380be50a2d95ca6f9d095f3faae96ecfc3b97c8c4b92a02c8f8f43160044e5d6826a22694f954d78e418e37dca801e453c2ac2e3c9fd17ec1d379eda7c32b76ed1890f87e7b49c9ec41dab0afdae7f6e89cfc05f7a9609844ba29720fa495666114005e891714840da0b9289ecbadfe80e7db2489d723739b998770ef393e8405052a68b63d38a428820ac2fb6b5fd30a9371468e6ecb2c1199eab969a8fd1e84c45ae6282b56682c9b98121d65a58d8aaf2d0753a0280b1bf701463a6d3dcbe17651c5a24019290d3436b436580730ebe2e67c2c401b748e834c5dc27872cb5566436ab60f1050134f9a3813a02c28ebd097d17fe0ccf67c5322550edb095de34a135d4027af21cc869cb254586eaf7a3b4730dba40c493925f193acdae42e98fd7f1718d329751ef599f688660396d35d7e3b8e991c877867307298ad09ee1a020494197a00a1b36cd0e5ac96626c7444c0816dfa540244f051e713f0f7037f2fccb08f006f2236b234ed819c7208f3aea6afaf4a09af5a9416bf452987a04a986e65fcf31cf2c84043d6ec00660d766470ccc109a44237afe7bd406ccc49680981fad1c8ed010a95b9a9ce6de24d24bbffea8925974ae0cca40e92f4aa0f7b194eb20d27299527196eef03512ba3a1cd47c6bc689afd1b1cf546f679a89585346b7141ff9a0c94e3ae4dd1f49628346e5446a15d82b2e56b1598fb9035c7410ca37e26dbc7375031e04c6faba0a82e9d0e58cfe74297bc75462611df009cc0a3463cf27ffba21b0f232c25930cd9659782729dcec7d5f72f7342a3cf0e71829e06900ba400033a656e7b5d3050ba9a0e4e2f6027fd52ce04117e42c656242b6c820e93cac2f99aa99489dae7c9bef54d5c954d99bdb0f86888ede8f0d68481e14c0181204da9ef8d68f884344a6071d2d2242f50f5dcebbaf3a972bf6d216defbda594524a29650aa3077707a8078fb9e791bf038136b047063f60df5db3d70d92927b22dbf45d474885f885eba83e0bd8358586765cf359c02ea97249964b521da121ec5a396008bb740386582e0dc2d08e4b7f0813a3dae00eabe893d232c0e8a38092398fce9631666d9e9e9e765347f5b4e6290da3d18b93d4fcd327e57b3fe5dba0569b6b478f0ab813dec4a6ef1e5e618c02fdf822ca81226d4a91367d5ce3125923d44548f4b5128a14638cba68ea68c04a9195220d58e9f1711cfa3f44c7a79b8c4f02c7a11fbf385482d8a22fbf535c401853d8f4391005c7a17fd385bbf1e306facc291f0441ab4f7faf4d691ef542aaef9e43c1794e9bcaeff4f98dd073eb5ffd08fa57e00affeadd3542ea5778f53cbc5f8140473ff24f0f34df7b1ea75ffd0a04927f7a77cd3ccd27f3aa0fe639d495799898ef3ed47bcca3bcd3779fbb6a3e77d17cee52550b03f43903e60809c1803f5bf48550e009fc562efd9d5e3f0fef5120100ae8e807f5de03e93fd1f81caac75dda5d28210f4461b6a8eb51a0752a084b5411dc05825c546b19b409fe01d412e7d1f12d3f400c64c7f7fcdbe38ff7a35064525b527b0e004660b248c3e26b2211f653a7eb62d7394e0a3a7f2b1f6b7fc523c7599b3aae031a0a42b068c4c9c71c9c4b1c5ac1941d6353ba909504e4961f82dc322e912ca1fa980387e26bb6e207660b3663ec2bb280bb2888635366156a3b27eef0f09ee679c88f20507cf93420d0d14f7c0924dd31f7fbb57d10cdff784ff3fe3434bf813e603c0dcdfb50bde77d908be6fbd99a2f4594cde647a5f95196f40227dbab6c4f72c1144030808e7e607c7c20d56a87eae58f00e3e373319478ab9fc8394dcdc7408771f5db4f9987f9f9e27d9672080536df5105dc2554f334bffadcc5c9cefb6a7efb683e7a3dab1d412eef2b10e4f268defb9afff18103112c3f5c1ecdafbee8e2a2b7c35d4233ab5b4373c385764e7651660140f3ed7bc6ed46e8a084891d76db881db2ec302a39d961b4c2b4e7b5ae99648de946ecc064cfd756826cda748f49646b7e92574c22934c2f729cf93f44fbfb5cdd1b2e749439cefc9b2edadf3bc13d13ec1ba1e93e81ee135617f4a9a1f111128af99917827999e76a3e9b7f2d839639cfddf3f590f3e8ec191fd334d37b6ff33fdedbc8f7fe823fdbaf401fb1e6f39ee6db5ef5b90bc6e72eaeba4be67357cce72e98cf5d2f2b1f1967bed3cb7cdca7fee5d36fbf0ab84b4808f5a717ea563ede57c05d9b8f90d00a29b087100af4395fe834853ad067b6e60b71e08dd99abf8139b335bf461f69971fbfb61d00268809b232b584b35eddbddab959af4e29a5b34e3b699e97524a29b696da0f29f55a4b8871a4a37f1d50bd4f7a279633e2d9f2b8cdf7e91e7dee3939cd8369ed9c32549973ce39679c74524a27ed41378d9c1cdb432b958175b1b573e62eaae06ced9c398b2a79b3764e19aa6c9cb573ca5085ebf08c13efd8cd39ad057f5c892983a6dc963d7c6dedba2ce2bc999b9282205976db76b3b5565bbf0cecf96ddc591a395de7d18f77ce0739f0b76e5e8e091a60f358dec9e259c642cff8a53fa16a941e8c6740681b158a6e315acfe9711da6ef7904755efbf1ebad554750b430dc963b7c6d771ae2b8edcfedd09d80b0b3b3ed2d77ddfdf28e60a68fa97b274c23e7d49dbc9ef9a88eca1ad8ab4ce04a1901033861b150da26d133fe75aa02d1362a55ea85c668fde2303f48a6e820a6c35ee77e44043c04ef317532f81337245364b82dcb7427afab9d80c8524a21746a7b520d529a685c032fb4b73da906265df4b63da90620926ad8c10517139254a251db936a28ba29d07a7b520d4335bc72d2112a5da8b47eb9a688b9a45882444853d2912031b8acc4b21c9158e34ecb64cba1b8aecca80a0734c4286651284d9d64048a10afb9a068922ddf21d632ac55a81fb00b5a95c48c25fa577095e8d4119c834e6d7f8285c86281e5875dd2dd1629d05c15d9050dc306d8051a6f7f62c51196499fb63fb16208236db73fb1e205388c1461ea34764070ac6336dd9e94822476a8c281e3fe55f20b3d492907cac9cc598a676b6e8e4e29259554b839e79c94ce39a58cd6dddd11f07da4744e392b8d117c29c3b8a594d2ddfde6a5e38b0cb09452cabbe910e59d4cb9d664a3a415679a8aa68580cf75e2ebbdc7941f5ff1552db577e7144d1c8ab01d8b84c497abe03a3d54cf729ec91369310617b6d431411d5174e4b05837664b4621bfc7d4d111e228341ca7adc371e4cbf822caa5ef4fe33cf17d155f8eb329783dd5dd2a1c5f8e233fbeba239ccff0286385b92a930e517bbe929ba2000e5a4896efe9fa6823ef2f36d5320796d47236e322e57b2863f2251309db522e9135ba97d2c8962f8b640d4f4a81932d4349b4e51b204788a32fd04854ad9c76e85ad89891124c24a338ad4ab472c58c1992e8b60b1e70c188134c4c40ba5862025882505a62092e624d4324d104134458b0c40f34b8c278e58b296680a4c813433c7179ac8d400396a3580b64b2245cb285da154b4b34b98112ae5077496c0f6d6c7638636f56f6f65b90bdd1b0b4b7ff1418eded37af6763d920c0ee3e7b3d9db4995184c9b7b9c75e0fb7816003aa78a09a33d9f2adc4a2e530edd4641138a249b67c870ea5288b9dbf27e377d7e1b6a8c95cf8add783f52d12d273f1bfb6a5b589ed35e8ebf5fa517bbd5cd249d8ed1968a0815fa0d0a1ca090eb32d67de0d58479fed7893ca8fce09627c855be598db7f6e07dd71a23f9dd4c610ce23379d4b9838cf10dec73884fa1863119c55e53e53ed481374928ecf7dd85939876073ceca34739e7d6cee63deaaaf3ff7cabd6f488e53ff875d4da0c49e1f1d69b667849d8a62b4f8f2566dc14c50dbf3a3bf42a7ed1abbe08ddfb5c7db1dc4971545d58a23552ef111a2c8142a48c0208505be84174a24918216a26082c6026b450b084063089a0105465b9860d242132064508e2042a58922da1556dce05118acd0c1bd57e8e94a954bdc8a37499f3993d7848819b1e5f788af4e065270b5e53c72ea706edd71668bce7bb7fbf1ab87833ecef8b69c475efad6cb41ad278104ec4abd1cf32948252b017b825dc7cd38412768d8651be082871db4347d518406413f5880c50a5170790116325c61abd082a343a2e42a3b70b3e90aa601912bf30b8f0eb90177af9cae549174af0cb979c90aa29a97aaa0d9bc043bb2e5d3bce42a1a396fa3c2aa4973e24a0ec56737681d10b4181adc40e39077245650c3101adc60080e7250c5122cdb812c025621b334c8010c3e78320222e8f098e040114d1805614588c9942d55a4b0e1c7165868994188534c05aa5779db936245b40d8b98695dedf8514a1a3888bdb0437de37a2164de1021022248d64c73db936cd0b2351527d0a133f43f31d48119db69b6954e97dd8880083af292925669d4f6241b6a70c5653b9255050bf785d315214cdc2b32863b216bcb1c1b946cf9d20621b69432c986d8c6db936c28e2c2f98cb8431a37ac1289f3f307b9bc9fdf297e78d7dac56fd34abffb1fbab220fd6eb6efff747f022b94557dbbe3f6bdb94b5625dcc5bb2b6cb6a6c02cd2926efbdc453fbba48d42020557f12909195c45cffabc5f8b66eb3e4c626c6752561ee28c167ff7fb765c96b3c3ca7996eaeb53ed3375b44f16534e6dc79b64d1eba3664045d87c1267b0ed51db38cf476364d1c8d9c999b1e33b3934727268ece4ec1840059da3cac9a1532676f79dd9f27c7666ab8b8e2f73400863586f540a560c86f46fec802059f25f92e8dfde63c7b923278da21d6fc929f3f6a426427bee6c1905c967489ae5a5ad54c99f5247c71758920d439a8220bb38514f68968e3939f46bd70a7692e53c15c41137f6d7b620058f68fddaaf1d03a7fd019c767fdf9c760770daddb1dfe07c4638f39ad43e515fc6c879dcc91ddab26b965d71bdb007d27d90abbe659a3a2b0b823e8e6cb7b2ef2e1fd456719c6a8d825cf5f709f84fc87fb7cf5a91adfadc8725047a5b28be10e06d9f709c8a414b739c5a895422b24658613bacb15d5f5e9b935d7e6dfce1cd4d9ced6b7375d20c4afadaf8bb3e424653877efd1a9b3af3eb57d8cff61cadef2e1fb67e1c9aad4adbb5d2665e3ce0e88d142d7748b7144d6fa4e8ba43ba8af6efffe0afe06a7efd557cee82abf9f957115cedc8b93e0702ddaff72bb8335bf481eae750efa8ae18a148168d5140fa3747e8e82432a11f3fcea29458c8d4f6c5b8fba6952253e43ceec436592af6b54fec6ba9ec7b5f7768df7f20dace3aab3475b68d7ea66f6140f337705591709cfb45fbdeff22fad31a08fd7bfe0f055718f6b3c2ff437ffb9ff9f189e3dc8f4337e417d12b0ceea0bf3d09f4377085df5d24cccfe00a8378b6ae56a27d4b3babd51c389f11564955f2b389745aebf6c3ba2d9e12ccf91f76864d9d819e3a3f5b9e4ab2ec6b19e8b8a5e854c4e23836eec071ec3f0db246954d29dca5ce1325aeb18d2b2cb6f08776e388f1d7af7e7473b78b1fadf587210ea3e43c15e63c4ab506dbd626dbdacac3b615c9b6b588b5cfd58470b27ff3850e6584b67d2b23246b0cc91a612592219235c218a43dbbbf2163964c9dfaf66390a60e7dfbd5fef45cb2f06b20b47d3cbfbcb36c6173b6ab5e8ed4e694240bbf7b39e4ce609d225938af76d4f77e04faa77afa1fef4fa08fa3fc3eea7b31b58d3f833fdefba0ef81314cb385639a7654570cd26c614e6648b2b00c9164e1e7401921c9c2f86f90d0f3c30a13da187f5861d6c96791660bbff7e1af1609c7c1ff34688cc1ec9db06e019f56ab1df54fff5357ab1ddea31ee808833ff4510f547f4e0f441f05eeccd6fdbbedf69dbfbba73781b8c3a0cdbd7454d6b8db718c12c9ba314b629024eb082d3fac30a47dfff4c5d86cdd2a547144268e73eb774f422581fe108e73ff69d06185ed3b24b325a1f487761ea5dba6543ea594524a835cd4c751057ff067d047f7185c551fdedffb412efc92355bf4b9eef33efcf7796c9f41a0fcdb5f10887ba02e7a3e2bd0f8b7fbf857c8bfbd475bf0c1dbdf907268bbd7c38147f57dccbf15fcc9bf813ef43efe9ffb78fedcf751c11dd70d4a299df22ac1451b72687bfef9683897c06dfba822e7d1c16fed45d5b6fddfa8dad459d597a8a6a9337f7b1edc4b7003572e0e5c55a00caea8f71204caef3df61e084f70555d52cc7a94e03342fdb68ff5dbcfe99ecf08a1de18c4cf7d06b9fa17fcc98fff2783ab8aff67ca0c021dfde49f0fd401b9b6f73e775d9633d33f75145cedc82f9fc7fc1308d4fd7cd9cdec7d3e9cc59fff0783ab9bc1157d77fd6cf77fe6e3ff91ff2b0aeedce85182cf0836dab81bdc311f3f09f331b8ba8fdf5d24c8cf207e1edc6310e8e807e3cfefaea24864db7ec5c367b6eceabab66f55035dfc5639fce347709523be7f949fcce66258f7b739afa755fca003d0a0c39ded5f0db51ab16ea20c23568c79ed57a49a36b4d695fb10aeb134b3d93662c1c8b52ed999d98afcadd17623192ea6938ef3b4d6d8c378d855754a56ecc339e7ec6284e858db5ed3ba5623162a75721fc21e4c57ab118b93f1198bb67d9bc930b0aad6253b97a6d6253bb6a6aea8cd8cd1b90f6129a343d5581f6f74fc9d355b1e2324c60f1d9fce257b67fbff0741bcbcc942c60c8bd734126b1318c0748c315a9957ab51ba8016e3ac935e0932836cd5489020439ad06030da122a183f68ad794666d297186160408fa99898989817f07dcfc85c091204467253cc28b17bcdb9c3bf55bc59db3561e9b496ab35e7eeeb63900395cbd9da5cff7a39ea8d4febc7bf76bb76a9b21024489cc970a0bd999c74f6a3356b7acdb0b8128436e7a459235b9452ce49affc8852ca39e915a128a59c935ee942f643f6725e9cb96d526ebb92efbdf75e6b99c864593e59ad26a35782d02e2291140ca92129584a482ac896d40b29a2940ba913a4806c490d6d49b5906221b5c2962d29a1940aa914523f52af2fbcd8b265cb962e5cbe29e306c3cfe8cd0d3222ce35536b3d097860535ac18c54e914c25f276d020398bed6da1e8ca3cabc2c6311da9cf5d6d0c9445489b64a67944929ad931211c16855480523887b2f17615ee88c297083a2e3c3bc3059a24a448926516da625372468e389efe9ad9ed4bbb572d69ebe4b690f47d0c69f71e0fc5d87f1a3228ecc612f7fe7e5c09f7177b1172f11b1c36e3fe7bf5f4f93de5ab3b55baec23d0a07ce4f254b02dbe3dfbc1cf9f357cbd92e6ff9564f02f6f3532fc7fd7c67c5b582315707a76c8990cd592f9d444baf292f228cc499ecb6a0bd19a593a8356bda5e336a036dce592f9d4c4495b6c16874d26c946d524a6ba69329884929ad7432b960524a2b9d4c4c64b22c9fac56934d39839071f666eb75747a1d53ce99e3be7a3d1c8e8caf2542065b7e2592355975827fdb3ed3faf6dacbc16ad8d2088d73b6e1dfbe7a12f080de990319d4f85a25434413cc331b2fa6ac2ac8ae8b2d4d5cf000e72e5b68a1456791a54b4da7ba60a1afd0f1f50e6264bac8cc74c16285ae4253a1e36b263d85be1243461719375d6ebecb7f5db41460a7ad00000020de9cfc0d1732b6572de28971bf5aeb0faf8c545fdb4bea7092d125432ed8e1266d9ac000a66bad357a59645e4d76aa39d1ea6bd66de95936f352fca0c98fed3847ef649a2cd368999699b2952c9b3a194b5e8a36f213fe817c2e598b2ccb51e4a54c1b72caf344c3810a06e7eece552f04b9f5cfa45e5ee663ccbeb46c7f13dc8635120214648deefd3fe03cfa35134da7d2664b3e1725b6ff04dc46e5123f90ffe3a3c379b8b74654945e9e7b7989f1050606472a957a790153a9d44b4a26c6b32f6bc4beac912d9f6ad489c6c5a34dce1ad91c6c128b442693d648b2a44d629158265689c521da98942d6d6c9bd918f722392e73c6c82ec6b8fd0df971a07fc76d525a395d3a731efa54c90e6d785e628cef2de62f4f912c9967384fc94a9225f34c9f7e48a9b1d3eb34a32f592a168b3161f27abd8c18a9f9d7580d4f918e65fbeb903a5556a1c462443091e5284d965e535e33ce6476497bdb2cbafca4b75ca71acd96fc6efbfc006c19634b992d5b54949aea4cb6e4631d41a33a9bfd68cd9a5eb36d36b5c0715ebb7d3775bae768481d0cc20e0bb0fd5b6ea32ec50fe4c7eedb8d36c46957b62493c58dc90a96272e18562e5bbe05c3aac5961f85e3c89f34da36e4a3d536188d66916c2c6416f0526c4a0c88ec765cace3a8d8be0ac5c9526c4a3522820519bece63fffd73648cc957a3425a7bafe31b9b3a350a9368a32e21ed294644388e7c265b26cbf2c96a35d926c3627be9852077fdccf26aabdba846be2e89546c7fcae433efeb388ee3aad15773784d9d9a44b68c441b15897f209fc996af0be2e038f22d6864cb8f3516f382123bcc529076586314cc33c7916fc325b6c5680d280d858eef4fe8f84ed3f1b50e747ced84bd2b5d45c777bda4e36bdd848eafa9749e8c563aa160340e747cd74ce8f8fa062f30289898939ea2e36b1bcc747a09189d96a2eaf48ca6d34ad4743a89958db5895163c8a0326eaa901dc6ada8c28a648ed3031d3fe46e3a8d848e9d8ea2bfdf66a05863ada2431b6f0ee52fd87aff8cf83b2bec3802066254c1153bc2c4f89148d4e1063bc2c41823ad881dadc4a64d48c28a54c0c4fb503a9133232c3bca9aac71faf8528b9faf1d1fc797bd225374493352b2518ffa93d783c209d8a7f7bc9e93b74395ed7de7f5785df79cd7d371cfed30c4e67460dadc6f5e0fa7e3152d30e2e5da1e67af67cb3afcc07ebd1eacbb7d1f43a102afe7ea0b03268c5e2e6bbf6a07e450c45cb28288f624260e54e0800255dd52d238b451d15b61ee88647f8b1bbed8526b4f8256450b3244b1410f4474186922524510567c08e236f0e208a90818b648a10b970d2136c04289133c0c49e1a228d892485213a15cabf3481b34854d7f4e9eed610c1348b4ecf9fa86232447f6547d45ac30604b79854a0999af54701c9635eee7f73e55a92afea7200d5595c669ddc110633963fdfb5cbdb59e1edb2b82e3f8d76b6ba5b5eeccd66c055513486981c869fd8b4c1ca706754aa7123a239264b9b443388e4b54cc68d239274ccfc7ae737f82a1b57a5bd4e680f5bfd65da663957306d248b2ba0fbde740ef2589dedefb302a51607b0e783207c9b21e18feeedee2977c85dd47da1795beb8245976f39e7b97fd48fbbd81328964d922da2a79cb3ec6db877a03431d95b6fdbbe432b13f9924eb8af8817dee4e2c2fd827c41d668934c169df53332c3919e733c20eb66d9ddbdf48d1dc07d1de1159b1cf29d538fbdd8bc3b2ed73b4a690e322b4ed90c5dc3777f4a213c7b1cf7da98d4f889bfbeccc712c7ec171ecdbe7366ec3dbf6cfa1805d7fbb9ff3be9f3b4fed605aa0b04bf9533ed0ea675d71319468779dde3d9f13b8cabffa8936a7185586878241a353aa4e26c69f5ec6e7ae18ef7d27adf5c7d0a797f14517ea03aa79994f7d40473f352ff340ab9f59e1e7317fe679c89779f7563946f4b6e7a4b536db3ce576f3e96ddcb60cfac48861828f90ea61fc0aff08f3677e04f932f9657c902bc6b7cae06a873e7d9601faa879ef6d3ec8c57199e3b61a242846b5222857ec300a41a90190a518b92d3b142853367d6d2484fc21c49d573bf4c7f81ffd31401f47dbdb803e56e02afffc99d7bf8135e06ac7fc99ff912ff3f265defb629ee68379d5f7f2303ed473339fbb522f8ffad4cb7ca7d49f563e5a7b2f43f3b96b66cbd41898979446817f02f56cb990100ab345e9cf8709c252af80c236ad91cad34d95d0e6b9fa2ad091a6439b4d5335684f21d135d4f6396709d5a3c824a20d1a247e409f2211f70971871126678e435fd2171c87ca19bd967ef42a405df65934ccfbb792e3500bcad96c5149a4887e28679bfe4d113ab4919266e17c067723455bbc4ff587d3b6b5087e15e8b0c2accc2259249c07e64fec9222a36dbfd6664853677bfb153675363b645f4d4c345ba16c5b6516c45883433a7e0cd2ac8293cf45247770d6dc34452551894b0f01e73338ebf76575e53dbd1ca93d1f6be06fbae81895c81a4abee687884350974f9f737ed2e55e0ce34e41b6f109f2e7eff9c9d7e624ad5136ae43d4893baf42380eb64cb118265cdbf86d93b74830b6523086c1c63f6cfcee3ab369e39f9589e3e0bfe942471b9335429c83ac117646b2465867610e92ac11ea25b2060eab105626717c0cc5ceacd2c6bf2dfe2a44ced4a98f7fc779e4e3098679e7582309dad86ce1bfb981aeb3a973241f03d1e7b807aadf7da831c611d4551ab376937a3952fb324916be13b4566cec3e7d798ffa114eafa9d7b3da817afd3fa8d7dea32c6ce39fe00fea7d9c1e05daa1688bea6cabb2ea64032b933aab4c36be53be2b9b2dfca80b65e39f61cec6ef7d2b099ab0da419f7b11e87dbffb8a41bc335bf8b10cb408f036c184b86f98b3f15d721c7cab6019d9949c0e1569e3ae628cdf88be6f9f855915292ab9f74251db618e0c47545c1bf4ccf6a4231b6c71d404061a667bd2d10a6c96a323b78ad6db938e5e48a2515e64a1392d1989eea668a2b313f806fd120547a15f62709d24e1418be66ac84d92c4709592bc00e3c10b14e86e7b52921f40f0007f51bb2cf0418abba4edf6241f74b082bedb937c50f261e6581fa1b243550e5863d5cc9120303519222faf5a4c0ef6610521a99c9d1c1a3b5fbc6030ced942a4b1c69dee81eca5871a10d4cb08022fa4949e02c8898b9aeec109201e0f98503d4879a1eb8276eaa10643dc9698d7c30c4eb07581d4f5a0c485dc8317d70392187017a42e4bbac836550f3104b950720f404e606538a907a115a078e16a2ae2a2851f455610b9b840c2500089393b399bc68e17b1d972cc83d2095c5b6a3ccc640fe5dedb0415457457c53aa1b9257c20e20a2d43e02dba6e7fa265c909b4ec909f6899ed4fb4c0f084466d7fa2458516b4d6b2827e7902ef40c72061a710c249164757481648ee0eb2284245162de8a0b72e527497e548d31de015b49d22ffd0272ab68a864962d2580656c42049d3ed4fb2b8001fc9624425cb0c296469818bf6b63fa975819174b7fd49ed8a2335266bb18c3c186d99ed4fb63802278929d5a4599aaabd98ebb2f6b2deae532f1f0be609a61819294a3308d80ec200a1d82430e28c94711fc231b4849a37a14d4d30f5c5a6aec6b147e55a8d58a7cd731fc25d07d3737a944e5c2b4c6fee4338bb0f61ac6f6a4e3762d99739dd885561bc0913138d993222cc96cf66adb5523aa992929cd171ce39e7173156a92a1428ae3aeda05e5b463969b5376f5ce79d503af5021303c3638ccc8ccd37db5cf3b5353a8fabfc712d520dcdc0888930545d093515152d653300012a1adcc403529396b4d24b2dadf9da18986bebcb8b8ae6e55f5e686a522f7f6d4dd154cd4ad7d4783d5865c342d51829d171e4e644c7978fb717afe76e42db906455707b15a175b48971a231647851c64d176f9ea34f6530d6f6da246e2f2a6b38fdc01c418f43310260c6a57277c89a11001b00017454c98852c9a9b80d6db0adc8a30006d0d52226c779c35e0329db9dcaf6df7803438c33ae791a9a01b0260d0dab258233603b02be9c959094b4a420a5f96b6b8b009dd744436b93469bad8ac4da5e5ad24a2fb5b45e4b80ce9d4755808e364179c10e594d32ce3a45b3695bb6237db0e5b66ddbbfdb4c9b3adbcb669aeab7d7d47117de5ea71f685b6e2fd50929c66b7ba9b80274fe9ceab46daf0df50a618628674ab59dabf6ce3065e54dc6582c925272f9c09c534734e2e476307eefc58feed0c12e7e8f923a1cc7bfa6532f30319da62c199f95a4c172da0c0c150dab6665133f1cbffa3e5ce622017d12d44f51077d2ae87b9523fe8c73ce9b9c5ba8d44b1a6b7ad22155330000000053160030200c0c888322a124c9425155ed0114000e6c963a6c5832170823490cc32806821806628001c400408821c621851cb31a03d79a9c7b3d27273031bbdc133523d36f979f3206db1d27da7d6519261f202f2a99c3f0f49f21634b7902f14bff357713b256fa41b5477a05e4125894c6a19ecfea8f950746263f47be67d4fb1c2f2c25268825d41e6eef90e06c1c9a04cd05339bbf3ead324e662fc000ec8128724aa6841e5b23243e51b418bb10ccb205f956b67548c26fcb2cc8b2f07b725ce76ff2b0e5bd393645d199e7e6a85993b3695b42cb608a5c6648179d271c8511edfacb17f24385e2d4622e0bed4e23f5098d88e7549accb75fc08d4d9b80cd088c461ab2ffb72711c98a5832d3b17b2533939d4b612e74090ab9307367f14f9931826c7350668aa8801f6a7e78585795d9652a231e1e3fbd16c3f5983fd50f53e81ff8f3654dc8b0182ff5d522b45c24a0040b74b8acf5e4861fb14974a2c4bf8e944971319bb5d9d47646442d55a5a6a4f74778441b95c16fdb101f67acf1e559184a65bfa3cb7582fa597c88a473570ca96e21314b15d28a8fa400c3c9b1c7a433a18d21a38662b48b6ed118b857f3778b52dc6292130734f6acbde484ddd1faf2d8e8d502266a85124da9efa9adf6c24f8b9c782b19cfdea27231306280fa5da9b1e182362538a79f9afc215a5dd03ad5b669c99973666dee60e7fa83b882d834543722d0aba22b2abf261131d4bb5155643fe47443fc24a55516a131960847464a3cb0065e4b4aabdfcfb240bb9744956617695fcf0e2197420e6c63ab3b419f365dfeec1d690de9da94622743e591367b03a6706a1207718ad1a93ff560b24f88b7bb86c4fad1d569ee150d787e2afb2a4f95fda9b46b1e1aa264d93852da2ab21fc415ac1d38ce9a5392e9489175ff634055f40b1ead6e39b5fc6285aa0eea1654661ff2dfee804162d52725041d2768c0bbffa4db93c3970a137836f474ec70d242f050397ca96ba5d90c3decd0b687e659281734612fb5cee15208828ea65e4a9666eec35491c46b58a68f658a92d295b8f0263ae152ef49e7c2741be22cb3c674632fe8c04ea126d5e07e2c569c9c51c24d47cf2fe515916745d9b5fd6d5c29f3c1ec16fdcb196f39728492d629fedf8042b254b644ed98b5f273d0c221d6f98b92e7a4e5c1f32d1d4c50ae11316a6052f9cad1d216589db7511146c976e25c0daf35e19578bc089d2845ca8de2c8a790a9d3ce36a261a26776b6ce74ccd2b49f6e568e123b1bb1ce4267e22db4fc49ffc724e369194c5a14e1e24e096587f08f60e28a8c5d1612c96b54cd2d818ec146b9be674a38c4c95e4587d991c1496c8182d97f8a4f87472f63c9df54f68089d5ee085aac43a1f749987e37365cdf7895580867bf35dba0f146b4ffca939adbc8c12e474023b0161cf5e0647b3bf6c63bb09e3067a54d6363d500444a2911be3e27c16e442599d98d44525281b533e8597af6cea419cab1fc9ff920b2a1270351daf8ccbae3a2aafdd87e9f8b729d3fc70ac1ed5b203ab3a6e42959f27831ca7b318a575640d53d606a6c2573a76e144246f8773b8627f89ec0f5e3df0302fb41d631ee632484ac839130862bc853c3ed8c1acc8a6ca20cb2f2ccafa914232e12428ab734480baa3119e735e2a2a189c2c3156e4128808bf07db8f41a66847d2b8b83c6494880e4c66243ad6c6c2c88cf0a9971bb93f34fe4a9fe77ce10cfe25d9de16642ac8ba0d564a0c3c3272159e34ca90a49dcad31e4d8067de866c930dd0bb2b6e7876c15cf36509ace801c1e3baa08e637bf21a050caad5087bcc851dcabe71e6ff87079408c8ad3774264325f7664bc9a10cef18305bd39cca2ab21ecf891efac43ad5b2271170f59010307c0fc8c368187e2641bb86f7e1ded3b4ceddfa1b25f88798729d1a1065dc196973d2375ee7e94813819fc3aee0f7110880f15b1c1b1c0d59bf14f4873ffa387a2df3ffe2320fcab4b1f90921a42c506b343d09608074f7fed68dc591dc2d330eb84e5b75773e910500b2a861e61c2fc3ddeb1acd10c699cb78b6568b867562cf68d350c5975a383dd1fb8fb7e9254c86617e4ab66445a86a5307e24f19141fd0f40aa10e8518e4724795787ced5c41f737f3ff832055208f4dfdb8e7e7a1c82daad069cd403f016a2adf8eeb7022eaf30460a7c668d79c14e29cbe231e9c8290d09a83a977661d44911e0b2ac8af0e044694903f674862cc7f6ab547c3f68a85573c4420900bf04210afbbda123df620c84f85908266e454beed13f20b8cffb790a085170eea3fb7fddc34288910fe2ae79952eebec5fdeba6acb52ed0d235e5f57b19967ff262c23af9a1c2f0d25623c289612b7b720ecf2cd2ba96e0d12a63377f167af6ce34933820b0771ef23b415fd94e1e4efca60c597693183157c4e640725ca0e478737e2d72eda9043e45817dd198b6bdeca41dace06209ef2bf21f9b63fd10f0641319d2d7ef09fa51f5a231c3ab56f02851f5cbd30adc4dd19c39819e2ee9ef829fb0d153c8df51ba5fc6d322421df3f78c1b6fd353fd02025fe4d1f86954faaf9703de5e560261ca4efa0163fcbd6663bbe5f0225c87c8d274cc7b07e128641c378022902443cd405abb4728d246ce1b211308d8c2ed05ddc73e8db2377382540dcb5754a524673b28c3a3781f8f2cd8119f0f17d5aac19e6d6db51e81502be285de3e5cfe8ca8e7e3127029eecd8ad85aff62f45e950119d8df7c253151301e240f56f66b972bc92b7a3b758de2bf46dcde8af51bf1f733a25027c7a0612c1a3ff1256c47ad4de2003335556cd58e6e802af267316eccf66106cd52505e75984516d4b70661665aa2f529ccc20f86a4b0687b30a3f9a0226fbfabca806643807450f44896f321ce6f8f10168a2d1676806a06fb3bc4f56afa1df4da4ec2fc19f935644f2b58e5e211b6d9104eb865fe741faa01393eab5c6981246e15fa01f37c77255293aa8db5975e0c2b54018e794f320685d4adb11c27b87e18a829224c1a7126a5d937eeb927d278bfa71f62ab79ac6b0dba9aee105958c86c17f6d88408974a320632470d3e8df087f6eb96786bbb461948d6563580fa013c939b398db976ea34d373f7a49edf41ca8318f55400ba5501d454fb9681164ae18e4d6cecb62f15bafb106b746a35a92302f7e21ffa3774f3057a2c9b5e2b6347887587de75a716817597d7251e7c01e56c85d37aad154f179b7d78ce45cd71c688c152811bac7b7c3fa1a55ada3c5f0c8e5c4d8f5aa955771db1960143b204893cf17213365fa850618844c18003c0a8755049dff1d20fe8852b423c73c85e6d13db062e325868f7d5268b614a93efaf27001a19d8b8f33af05c6f94ff9013e907248dd7f74faf61e89423a70b242840e7b050e1a4a4050987aa8e41b4005b5b1037ffb22e98132a78d51b742b0f6b39ef4b9ea4b362bd5532c89fec03fac5a6100ce457fb371e8dfe90488123487b384d648d8b38a6e11e3a0b81295cd1975f39572a4b87c3d39b54c59ea1a901a9e778136b718a17a94a1b46104b7d95d659aa2424c32d2d7e8e86fcf25e28973bc5122883b4df45f05e78f406c5c1fb4189df0076a3e5e3f218749ecc85456fc6be4c0d763836122395a10608659d39945531a8429b28f2daf1c1a0a9e80b31c73995b1ac020936be9b1652a36a00a62e5eb692127bf64b70f3cef6155df92535e4e5bd367cceec1e248b4d1a45ea1cadfd157974343479b8c0f3a56adbac2e1a7462c64bae2ea74e5cc5fb166a8b445c485a86e93241585b1eb634269fc3661c2dd5bcac77aaaa34654433327c31a500b8a8302f2baa3e42c521552128183baa3accd2cef518346ac21c0599b292f98c0e78e9ab8e7daa8fa60e3174341c6c62f242cde187eb4b9d28803f47b2ba4a32b798e1dbe2f936132f192bf246d1e0b43dca8bc2f2345e5e24d7fa4fc6e14546107890e1cc396854173e3a81603bd1a9ed7c21e33abb4df7d7e5b208d2bbfb230b96add3bb203d7240a44c3d6bdd29bc13133e2f26468ea6f69030aabc421ba77f44b539b2a1830ed9bba24422751c44db7595abe2933995ddf39d4d20a77f3c8e12b8b8e29cb5ac96804c0373cdc28dbc6805c8c2b79ac42b43b370f1b0c1c894b3a03240dce2b60d5812734aa06988954626812a930405a0d54c52665fad14b61d9e531deac33b5d1cf940fd29064beeb12a29b731ed26863bd738055b3d2950c605b22bac61ecb8ad4792d70bfe1ac219f6a944a19159eee3566ea11a5a516e01c8ca0d2a3c5417731eb9d546b82a873c7242ad22fb878ec687f04d9182064a95a8cf1270a6c8fb5937f862bb0f92d425376ca9bfd48c6f9a916585429cfc712b0a53843f9242368772a027533f84b7e54ea7e2fe1a37d5ecd72002be508e97c0304dcc74a4f57ba4ecd00161814d86341adf337ce279b13984bb56761c9c0589e85dfca744f4fb21984a5ee391ce2dc9d3707b9fe63a5dea75ef843d9dd818d5016fb30fe2f26277bde20105758663819f447f7169f938705cf59141c8280be7825f8b259b00037dada4cee1d8835f9cc19374c291a9bd122228d719c26133f2d00eb4a7abdeee6c08ec915c94dfc21b52e378ed1b81c388cd39b7bea9bf5b1741f62eb25b481f03d0831c2404828303de095012846a264476cc6962382a0b79d585b3b61c2d53d474945b75a0112e4e392b268d44df8f55642b39e3d64d1a1d64bacfcf8e0e81279ef2c5f098f286af148f8235b15a13ef08c89b5e6a969d7f9569b1d53063cb397d90545087488b7dd7e065d5b3b4e7340ed446ec794186df3c93ff8f5232d41eba3bf6dfe7580a80e00f645296fa46e7fa5e0e3e22c4d5f30622393b75144859a97e86a43a02ffe022e736d57ea2c6d7d5d7a4841b3947a3ce28cb148196ce0c09a1b9ac0465654e6c80859b568442dbd66d1b066cf9110f1752d23e880637fbe52cbecadde411ca3423018c76998bd4dbd79c4c3f69c84fbb89352205374afc78e7d768cb42cfde21f612d179d02fda59d16012326832fdc9c4939775502293ddc90179221f9aeaddd08c2dbeef887b782322a01004a3066ddb0f621c3616acdcbff0d4426459389b50d55a6a0af5f4d898732d5c48eb4dbfa27679572edebd8ec416b26d6818d6cfec034c83b09fa58c58760424d285ad7b545c11f370e2dda0d43618132209cd548cfdbc3bab2a002c2beb6b588c3b2ef1feb3f58fa0ed373f0ba615e372722b155f782b99e746115e7287ee4339bd89f8a806afbdb6b5344b6130e91c267aaaf5233a49080f830f0a58d5a76d1d158481cbf48b10f059bccae305a8ec839849af5465c953f42853ee53e901839d3d44a6f372b5c6764b6adc7d35d5305a27e3b67749321b01d93665188d4ba03137d84e8e423cec37cda22034f37441bf8667fba3dd9def70e89cef168da227b1360a1692c04865dd43d09f623c026bda386ea81c17d8c79ed187ca8ff58e7537dea3f4b5fd427070756870fb66d912ce0d3dc79d5176791ca6d10964366567711bf1bcbfe93f628b774712dc6b5c45ebd3936e8c87e7b68761e21fa7102d2a0222a30892691e1d45a51d54b12b90e1301495dedbe9c1c3d2f5aa84de7da18727ad27ee9854e364e8c818a89ce320290a6c4f461f70bd2c2624cf432f46d8ad99e9719b11cf339b9af54bd439917135997ab4e6b80d590b9883f42e89f31f722572f681872f1840131e69e4ee6555d377b25d1ed53a166e5e973825f3e03f23e292681751e1ca1a5e430f35cd7dae1c89969cb06c514291c88d8ba788f243cda3b8d65b1b46499e7e3db37c6bb0a16270330ad8f20db45f95570c8f2158344b1f050a2cf431932da5d5d0d58c040977467be93605e8364aa6b56f9454ad35d8a749e38a125b02e96b83a2d0ae69ccaaa06d7765b7e35edff8b462e47a60c661857c9d14c2cd14a238d6296e9e975cb347b276be615450a7e158271a6bc1ef3d30bce75bf2e64f2b22ab40b5ea848505b098a84e5d55d7118e465a7b121fe32cc9085b83003f935cf85dacf983861bd62c0efee3ab871b2c41ed52a75d681e5d652b744548f1a3f6e06276e91d3435adb676550bf0738d381c8a684147475dd6424b2b7528cb3856bc1d8a46ab655fb5cf245f5b3204505691e39020b10db802c9655469590db903163510af82797f06f613996a3ac34104376f48a2dc5f3f75a063879afc9a3fd1aa7ce0c0a65194dfdcde438f2dbd54197af8e6d4e2d6f0d8a38ab46b8d2ec7018a9d8f0abba70f1b9670d74d3d0a36062daa031f40b6a57f9260d5818450241a68c9c1a3dd1866fdccb1f83f537e7a892a0a414df14d03f99433f58d061b40c516c9535418eea8cd23b7144b9a64a3269055396088494c8d81589c47acaeda453bb77437c73d1b188a76390ac68c6a6d79cd0e6c689982238c0914afa88c819cc30ef955ea277cc2919917d0ea35c9af5de8ae2ad34af20ffbb30d594f8050da090918a4a5843a67f94b1b0a942f0bec8e18bd38c3a5734598d265645e1d2949414bf5a655ac17cad16bb4dcdf27c38e2918388ab8395b55d16590b52e8f1e87bbb81a40026d988aa1425ab9f10b5efa5b9fdece648fb309474a43e077ef381252c3cf59416788a2092dcef15561223dd22b1f6c4b25b77888adc36120815966e04d6089d9517ef851040f3a667c2b86797763e8c9b78f2835843f0efb06982a56da479c7837933481fa97b4ba102728790195e742ed73a53ae2cef79c06b7c05f9d3a08c8fd862c9534edfae1f3c9a7c9f24e1ab39a44c2d83028936e8e9c6483da5f4cf1a68a442b970943312903aaaca39de4b09fe0ab6088c8f3417c3dda02f325637a765ce4720b9b44c17b2504cc5859319fa89860338544237622c57d2514c93af1876178590927ab6a5dea1b58d453fe1e23e1858c4db84bcfd414a7a73a8c4e52653ff01565f1736f56f9cc96632c0ad708d78642bb289b11105b20167f8c6c7b2f824d30fa3f81e206c411daaa936aeec28b2fd6f0d80f221e93005edfe2c98b17b474c7c678b4625f7be231c72ccd8f486f379103b62f9c1f282d01731e28e8a56eca9739fdb778f1b3d52a3157fea27314a0f27e89e87db960d3652402da3620939bb3fe2efd6ce49b2b7b25132136250b835a80b1440101b1ba09994643b2398cfd803d28aefd790623241a04a0ce2bd6494e41df18eae9f4d4e19d0b54958a0aaaad1cb7fa993cd8557d0db00ff9d83d7482c9f16f1de571102d1ff5bfed420c276192585c7f88e0abf269e9b13def8f6e78505d0410843ae6138fbd43ef11b404661fd003c2d6acf1e58769d72479598712a117edf3228d016e2e434a4c168f71eb2b4f301337018a900ddff28458caf9c2b3c3a838d6ce1a83e70a32a2897ce4276e5eb5c6ee9894bd6cf35943b6969cbe5f0b5bcd7936e436ff1107fa0f69a82f30d541346ab36597ea1d67940b060c64c374124c619216d907058819f4dac0349d88359ba821933bd087ee64d5c51516428d270342a168f453d0ab883054494d1de45f2576978567840d5a3c0e87343f9210abbc3303109c3ba194adc14607778e1178d07686b8ddd4b522800b2d6acb42d2df4459e18fa10ff45fb9b15be0d5403a2433cb16bc1082568565e8aba193a64df1b697040af46cfa2ffefa7b2c3a1c74046b7e8bff81b64e8dbbe1f9ef7ea37fa5036c861fc2fe03f2b738355a73fa5ce67fc11e6de7926bfa1d2475a289efce002eb02432704f10f2dcd3db7ff68aafb52bceacd8142fb0a2953b3df05f362110c466f2e326dc68a5fbd5c16a42ae90823dae13fb75b78bec456048e2b0596f48a4df2de253d8360b07fba3b6106d09cb9bfff85efbfe3d7ff41fc592b8b5cf9a79212c2d5f9f2fe0772a3f9bc7f4cd2c0adfdba9d9a8df52a374eede941c5b6f2cb866db93fc9c8defd8b3ad917016a78dadd0e2127062984b9224aef184e4259acbc77a633f866c1950522f57c98bee46ba6f804998fc619b78bac86f0dfeee90ed90f6a976ec1742d0011528368772af42d11fca228121d1d09305ac1c540facd0efae3ecb56eb081418189a3ba017771e25386d6f83cbb692452efed0c6912ad28b78731e6fb85252904283e8ffaa6b589bd43c5f5e5654a14bcfdf9d1103bc577fcb55c91d4674153a813c317720a084f01ed1789ee8e80b9c74910ddf1bfa0ce1f9cfc301d2174d7caed7a485cb4575f6e85448b6c968cc09c3030347bcbd1b5b5e542ed46d5c388d25a9b55923d37c0c4e2b3eb5a6fac01ca2cc6ff817284ee6378cdb19025e797da018db98c950e2fc0d805d3377679cda7f8248f3d679a4fec46b16bb7960dc76556ee0123b60eef73f83791a86639ca9a1205acd2e11cf0892a06b73277068350c10455df6828ccc5f48b969d0c1b29d4e8f1a66f0f97e31703ec815f6da28000be96bb376a41bc743a011fc7afbab9cff6c38f5c7b27bc556b36b92757ba63ed69993e6832d0df8c618188bb75ef198ee4c1c15b450228df05b604afe8b7636b67242c6d1c41bc3311a5f4b9f669a54cd86b943b18fff0102e38bec13ae0ddc1986736f0be35fc2d130d7387b50ed026f39b9ebe71a7d892d57c629e9e88f70cef0ee3a5e79f3c942c23cc3e99f1acb3c76ac4b2e803db40d6108ed607e04d61b3f7f9974fb1804f88805d81128f120a60d28bcec0bd668f21c83f73c6299361533dbd368b0e62ec9070f0a773781df5ea549fe194c985a444599da237a3b1f082d00f746bacc17892990cb23633a0247236729532719e8fbc4ade794e4a754eeb65f6caa9872c27c30ac4834ca249a3bac48b41a906a2409fae1068da4087e220c948f1109d71d87c8192a4ee58f12f5c5f2809516f5a35abdb6502d7c6a7303d97b12f216a4d0e283b24140cae430c2ffd372db0206ab06ec9aa473a3dff0951eb326b837f13092b606bc27c666a7a9715afd47cad2d33756bc2c738faf9d0e9c79f4bb1c8c60387ed14b84e22fac1b65654d7b996693092b85970f6799918c0a26b0123d38d72f9e8e7b5744e3cb530e04ad9820fd4fd371a4e8627f8a7578b27b233bc65753753478c1b909ac9c41fe7f839775bf27df4de284510b17e2c7c133b281221db75120af0e3d28b54112dcf0626098e333c96932332e13703ed3516ce0bde978c550b9458753c08b7738db4bdf6acdbd387489c6479b491d7311a51ddfaa4a93cc09a1e607908890c1c3b5b4562157109b0dedc3cbd1aebbe59fe77c372d7a8618f00e0710d3fb1a1fe0a153b09b0ef483762b9858a9217ac037c17e2845602c8f7296ec5cb2d9313a1ac093d8ac19d556a76e10d9352f2e11460dacc78b2ae4e7cae4e5cea02f34062ddecdc75b5e38b7b7253e7a23d797ec5ccedce1b54a2c1d4581f001c8de0c167676742f3785c1ff000245a09c2762ded1c39392eb42a0bfac8d3fe74610df4d1111f79000c993d563392163a1776548dce0688eb993fd39e58cb597a2c0d88130b541969eb05a7bd38356a5e17b26d08d2e9ca3040898e0b6b9267747f1d7d5ccf71717f990c6f29a99aab941559a410cba5bdf3d8c2f452ee0950165c17274a645804f717b929f13683450676c64128c0c1da7d64ce879240d01a2d2a8e5e49369775061b887e6ce165b76e1be5d0d510d0b4206a38dcce65f42ac7744d4d35b628c1ba6e52deb9d9e5e68bb13ce0eac250ba49ba396286da386e74225b69680ddeee66b141ab65d3fb603b1046a6dfee0e8000cad4b2ab5ea657c71f4078d21aca53e346016ac8b81625fce7b1d335bc330a76f1342c3f92bf19de0751ad454840d22c238fd2a8f94394e72e7b26b2b72c314f77b8b4e4a00397eb18e5bac18716acb4496a4305f2f2567aa3748d9a3664d1309b48d868b7f7535f100cd002f7ea1324b11b2ba40aa4f402633fe27dcabb92038a74fb9852c7d466ee9bf4c581bbb6fca8bdcae2d3ad47cc4dacc514404ddd3d864631d6c2c3d254056c95a9a7221ff79dc06e0df3a629d8e74a4b5878c27767e5ba2fd0935978d4edd4c5200a30b31e6931f79cd01a0047d418a94d3c5392e8416a9302b5d7a76f59529bcc31a328b460fce2c97ccde86e4c5da3f1cd8187b5b378f592ddd37a281389a6af4539a449690927225d15e26db44f7692256b6625c7432525e1d02ca485f5b3a7901fc10a524eb25c8c3b23687c1f6f709d77b13a4b126cacece5df8cc22ac1db20ed7dcc3d3067ad26d698b7a2ef4ce21964de2b41b76f995e3c63798e7dbbd97a924909daf5f1aff125e52f3d73f90fcea733f20298cc0df7a9031ebb1a82476cb7775fda08b285d3297ad34a7ce1f48052c28149d3cf2d146c185d37dc8c91f6c1aa56b5763b9c7721df1d0f35db9ad7a30dfce879fa4bb89f2746a2c916853d372df7f29194e32197286fe4aa0ba635af36ea21b56ebb294cf15dddba9254add466730e9a3c8f6ff90064f795cd2d28582804890b5d9a46f9cbb60d7e423f1094fd96e9294ada21ab62c5dfe812ce41f6c9f16e5649548c9192431a6e98418d1b3a81f8869719c159f88008b096b5a5d18143a388f11b240dc1ca293925ceec09e6089688d7273431b72da0c780bad5c2e82d98d0762156c0406030fb9cd25a96a325622020eed02ed5590543250b0547240b2abccbf18ab3116600c1525af42b482490030f0bf4baa4830cfcc182372e2e88fbc30ea645f3e3737a045c0b0e674566bedc9a1c1f04c2304bc2442697e945e233540da4728179feeefab41709551c25a44689ed383181f93f67d7031dc3fcb8421cdb7044f2880f4290a3011ed5e476a8850f0d1d7733738ff64b935a89b9aa48b329c6546eb1eac9514a8fcd8915564e160948448b52dda4b66a48e78dc390a7a99850648c21b6a3ad00bcaf3352ddd56347856250377491280f6030bee1558f5a19ac52619880014cda6c97487042482fc38e060194cb8a2be23f42db798524a3cf7c6814a87ca81e0194d04e926848de25aa1af1ebf917d79798c981f8c1b536216cf27a1d2a5639777ab1e97bee4c9282f8aea73ce7d15b9a30c7103a76cb56f58e3265aa179bb97c30f065ae21df5246264b3065a53f3f8459b959b3af0ce7f393acb02172d569cd2e9f0e17176125737674ad7343c58ec33768159f7aa6d81c661836a0e3acc2ff889efe8b4be971fb212439330912f37167546fce1d8ffcd397832d234654d2b3c01510e368936f6d3844e6185237decb5936fdece54fe1e51b6149d49f89583c49734be557f1d5711289a37637fddbe5f716b06f5992170fdac64634459ce8b4c2e05da12de4e8e8ecc557db1e30f2c1dfbb8c728186fd54fa9cdfbaeef94a3e57b62c087391127a7a30b12436aefa02d637f08cfd0fa6495db56158c49a8c0f216b3b33888a62520cc66ef112cccfe1294fe0ab8e69890139a8e782a33d322469d24132a551500a55183d2a5240fdf903d366a79fc3c72922916b9ed5e8cd80c7b9ab6925aa25e0e5acc1ebb876426734d626e2f9d4d1826c1f74a2e9cb034bafbc6da8542dc5481689a810a542897dec7500544b19e2b6898802eaccd9223e75d5d4b68e841f8d040c4557daa609544663603e293837990546afc51120015ee4db1e84528bb787527401b9ba540669e0b6dad6756203eccc6624bd24e014e4afc3c1ef46ddea99bd8c315e8a48382fb401f5114e380ca3a2726a2701d559914e8c49c1ac0ab43c8ffdd0b08061518f27854d717749f4e76a2d40ddc798748fd48a83adf663687608a66d59ece70fc7f4a35eaba78866c362ace8a87bf1644789e9dd12d956c1828fca0c96b43a60d222b0e7713726a8905d37e620e542bdffdd4aa8bf9fb395f3fa9dd86604586425d3a39434c0f410d470a02856f61709b22059a37d2d88eacb241363230d32bf26c9161e02a03cc80874ebdf1fa6b0e1b17e7a25e2a8b78699d8964bc212effea179b183197039dab382fcd00e8e19738bdd80602bbdd076c4300ee69e0856db6c152f693d25ef341ef9a052d395a05d99179f08fbdd987ec810a51525509fadb1b588a529855775b1a3a625a5bcae94d16953ffe239a1627ca1507107e7997d4335a847fcb6c9cd0623c10d4ebf919bdc49699b478c3fa557f6d0d93f90a0bfb72307aedc08b5f41bdc0c45e646c15a0423f3c6034c1781d9a89c327aa48100137d041e6e27bdd5518e7b1855e0865fac355a2bff68e7a5aa2fac93cbc4ae1d102572f84b55db39d81bb71a068ea2a89459520d04b4daf61672f2de89a41750c7755281806207644b754efc814d54e7d21ebebb95200d136732e68a9b54dc504573551dfaeb1754e579125ad2ea9af343f28a68f82854a92a40f55cce9dc0b16e658c5bb226cda1020b60b7438cf617e89b898e1995c60a61ae0afa95da48969bf4f3e11d6c7bc177360044561e6050c14e829979f0dac07a9f30ba23e644634909e96dfbc78b36d579ca0a702aa7601c1d2e8bd608b774bae56477932d785ba505deab42de2a3712c87a150bd574c6aac98f2ca8ee21820b31786c06d1d2955e48e00d1e42daf45641bfabc007dde82515ef5becfc0bfa3b6dea4343208179b79f50896db94497f5f3cf809d647ca38350bac9781cf9983944c70ba348498060a0ca7b648e66d1f38fc3cfde69c70c876468a264252fbfe08000fd036ef018225081e64f31669d2f425c74a5a20f89a5e7e89e0451d15b7ea16315f39c4310de71e6ad0dd94eb48ccabc3f214c518b46e5333665fc72278c1e59222141bc30b4a50c1ed14b9dc251f7c8468db863a3e8fb8f25fa10fe6b55686288ebf8e43d0becc07bbdb7a4e3b7db0038ca42dfa17b6e74ae9668bcd432bef823528821f5e682cb78004dd1aebeb99d2acfd157c34d615ccf2a4eaa183f1122269c4b4d2768fdcc0770fa4bc5581378e096a971762f8e5b874989c564f498e5b2db29a0795c454a8ad8af16072bb21777f27c23a1bda5b9e8354155caa598f9e560f3853b51504cb0538e4c00c56775df3cdf2d211ad9d565d2e48212ddd445d42471cb5ff8a568b0fb11c0c9861237abbcfc6aba47b18031fc38bb423a1ee83e26d5b67ff73695b07bf000a50be5be7ca617b311d8b3411d94901f719a362f8129003d2c5e1514d5c0ba7e15f3e6ed5d317a9300a361f0c4d35e9db6336a270199500b58238be307273dcdfab01e81a33ce12954a199160d5315273c17ff9fb3ef846638fac9d3c6e6237c6658e1b8c8473303c6926b275f78fc57296dc310b788699d58d3c329f27b81f1a60455a058b066ebca8398fd5e1205abf570e6510815c46d42c5ac9f9e39524cb18dc0d947e91b0e74c3b53c50083b544e889b42bb54a56ece97e6ed840f0c306baabe9e865d4048699c078796bf69cc21b8c815d0ebcd5ec2ee3709acd34424c0b5053bf54a7f4829c14b29c92b2770b3dcf97827ede3ae90194399a0191b73d659c26989780765dadf19c100e790f65ef7399ae13cc0a7c4bed293b91854571e6f5b7cb586c4f6e1a685458e7db56218d9af86c1684563d5ba913a689995f6366eb104166cfabc1ec608b998d814cbac1bdf68700941d28e0ee98f96a2af8234d862e96ec4e56be4282fb5ca8a482d7124e5ed278772fbd683a898f2d364e47cbf3844f00bb671fc8435d65aa8fd82c1f27db8891aeb7d10830fb568ed435975bd0394fe2eb5dabdebfe16eab0a7d54700990aac6357bcea992c93d72274d186ea7c6035bfa45339d74a31e32f00acd69e07cc27e12f84b67458b1354a0a10881c932715352e2b98da4ec3cf54209e186a670a199866730ac5caa9389e96c95b4111fba7a4a24b470faec88abbc7dc7255864fc5007448d17eac358251944b32ae76b9901e73ae9efab2b08bc185b313bc2443c6733a9b900ccc24e9e34245005111d3f1496f06328fee0391f6d61f46ae075fede3d6f5bfac4816581d771c37f15f07b20d2e4bf671dd16f1ef7e0e3cca3ceb28d4fa22b0b4bdff8a4923e37a50a18a3e5e740f28194fbeb533eb8d37d443dee68331d231bc524525266366411c0c2f45b269d948d9fc09329c3229b327d8489d5aa75bcf07eff58107145909e1f9e9f4a7c071719db3984275609e464988dba9342192fe6d376a5c809d82897740a8a84189ccfae36ef3e56eadd8cc5b64cd86f45c4c4aa2897e8eacc286f73c368ad3a204a736d5d969a15a1c1ad50ebc7442a3183ba0acbd453845e614712369b09c1705fbb3f877ef7d8c37dfd5eebcab0157f8bd2492d422e87b4f0aa905183e59fc2a4dd06ff3f4cc71743c808c662d4f57430568325743bbaacc8c97c403c4984b973027f821ae868c4b39ad41d963a737c583fe5f9434652bee261d6e3f71ab2129eac1916bbb09f427d130c84cd045ec83b60431b36c4998fc383ba22db8410d401f17e87d808dd8c7c3654a8381d0b33020c1332ca0701a8a0729a85d84d0eb21627f8a3e2fd526569a2493d8d704a56882f64ba994912679fcbfcd65b78b7d87ccc5840b9fb934d12a0c75da49075e1f35652df3b2e4e8554bfc2e57df55499c855b0a7a7f27b6d01a25262d6592c4abd15ddd4f04f8ded831e5b917b55a5c6fecb1a78f18516607cc584ef8e185faf07867b9fac88751f2d81105ba2b867af7bdd9c27d77e02a437050b982c0988e9bd89611d439513f4b13fa9f5fc7f509fa9413facc40f76ea067af2ec68167507a2952beb2fb26ceb5e69be93b112480022b9d131427284ed1d7da0494eec8c6ce093be6faa61cc1013c843b54ae04a62e02c666d085c006bdfbe10de6d587c6aff2bef8eee5df907b43e89b3f9c150741a707e11ad537d62f3a1f26c0d5d83a3d8e12b95c4c1ca5fada8a022be4bd85e2e97fc67b07d54027760e060ef52666f8e25bc858ea209e6f25960da2a0cd16c69b753eb7c2b40bab3347cb39766b6bffe39331ed0b23ba6bfa590a92ecebd145bd3880e95fde335ca6b1d13a17e03d0867076e84e87430d404c8f5fc9d36eaeda3d11233471905d0144ecce84dc3c1a9b92bd9245a42bd6fce52388bee0c6ffab046edb381f3ad0f6d33a05dcc10385fad1b9d4b16f3833ca01d2397f7891b4883a65a54609035daa3ad17e2b7a7e4fba2a7647ba4a7642b2a253d06fcf4deb2640d2a218cd326750de0cc1f6b2560b3c7d820112d40a6a041e39322c5904ed379b2da0e8b4defb9ce1f062159225bdcfc31d58180f4ea28a6016748c01f96a2192b1288850179da85ea368136764b34a2960569f9d099fc1f0cb1509e1f9a05af8c3074ad80158983996250ce03d49b073a145c15436d91a90d36df5b18c60740b7030dd7ca1c7318306c633b7488f886e893125d4912922b6536da5d9b6dba745a24f9346c15c5bb21c21022088e85208882dfc2e4261ac09c0dfc72cd017536b617170816fbaa11b1184f8b5abd53fb4c30d3e914afd42f9dd0d1ec452d0a8f58dcb9be0e5e61b7a3c3a491667d969de8d43fed74f79c7dfa23f686b4ddc57594db4c9da1ad9bb2c0de3dbe201ec5e6d005223675ccdb88a7e46e0f0b3f712ef17394c4c4843a1c9bd38ae1f8d4675f2e0b38c064bdb386acaa75a046aebc20bdbbf990de90aa83c56373a98a36eb1269af15b17bf25e76dd11fa450567193410a83709ed8cc181e0103ac8635a01a56237f90f7765373fb721b06d9302ae8cd57dcad9e747589f88a71ae7470ef0e4bb24c85eb1d72c442e491b20cf38bc8288f02cc67b22d93552f7b81236e75042bcc56d3a9a133bae40ec2d76e4df1099a01302afbcafe5a60ed3e27dde51d71f5efd65a917f7fc69a1124765b393d3d3798e55f308508c2f73eadb907c4dea14f676b75bb7af703b5f9944036743395be874231124e7e3eb5c4bf5f760cc17f5b299dbb3d309cf9285ba886aa4c0e9db486d4a5b7935c570d7a69d8d7bfc8a21d3d39606b7c0a21b50cc36db49ef71fb0c2de1de549069bc81edc89cadeb58277c23f679dad1b95955b12ea7b661173560458895bd9a882a6d1ca847d81ea6d0730ee45961f2ed0fb3b359477d70b316a6cbd3f81b01f4d73bf082473edc1d84bfbd42c16310826dfb314bfedc0afc56a7a8b91a88e91853c05b8d979218cc91f3f3f9f79c322485eaf9488d11439ac1db0f15ada29e20fc84c6ee74a1c0aa519d262f10df659cd6ebbdd20e27132cd588f982633325af8afe2e45f9dd7508fc44040219e60327a0a2d9a77319976e7825e0b5dfffd0b05e7560538f88ccd31434da407eca72d7e480f2a84bd7813cb923208f0050fcf9fc42fcb128e3b1aaa99bd6f7cdb01232c78457d8866ceb954e73b9dbcc089b03b20ed4d07029be5c532b63e1e688d7c4b737b210f03c8f525281f2655c5137b1467ecdfc8f876dae22452e808623f4ecea9f3bc24055d1be58783c1d90db94e87f060febe90cdc23185baaed853902f2086a091ea78ae28748976f94139b47c2784d809d17da9bea53dddffc20a978c1a27c0866396a255c529e259f9117eb91026593f5dd6705212dc77d7a4c6c00f48e4c15b47c8010813e3fbf24abaa6e7cfa8b927e290374c58f4876702ecd7daf433144de723e2659eaa9a2802c73d5efbd79de3290424595a0521cc0d7c8f4a8dc4ef939484340bda346572ba47569788d3ad822fc1b32ca482103588c980e3a9ece4a6327d9ca0e43fba6b2ea5023b4cf3882f67ae780761f2ead76ba21802aba56f1bebac38eca9e94a423f4fd2e14cce004ccb18d71cac15042d3a03ab2dea63e210a277f6b9607908ffc91dd414197b0da5639b1f2cfaffc2f132eff658afe65de731c0e921a570a970985b69810896050c0aaa7d0ba99e6ea5bdf0841a6e8faef7ecdbf4405bcb50a9cd3204a26cb330b8a7c55e7b5b266dafa51cd845ea34b014792fdeba1fa804b8ea288835a1c2324d2571fd26b54f124a0ff61f0cdc2d1b88df302182383d8e2b031e93ef0d37798e3b51fbe5d862dd00b300745424c090470fe5a28a9b21a0066e83efcdef8327fd0fe4c742a69677ec3139532644ad1ec80cad082b8f43a9c4fe90acd7322740d783948a3304835ea503cdfd0b859bdc4771eab318619bf45cf8848bb55ef9dd1c24183bdd5b3dace07e601b86c693ff344dcb37b42c0497d2abf43ad851537237ca3db63131ab89a686b799c26b122d6b4d4aa937946fbf17804e532687036d54957fb655113569f1382557ecc5e1c366e35b5f52fea1d2f9f26c56acb75510820d5bfc9f7094a5f27e1df5ce9d4a79d0c877ace3afca99b414d8274feadaa9b0642059adfd744ea08b88709f6cb244cf271690979334e7aac5fe51654919d18b88daa9474fd5655ae58aa83f89774310530e6e239463f3e11893fc312c7c230ab46e6ece591313cf6feb50ffa5c8a572c84f1e706e36ba683a9e99ca346e5a1585fbfff8f2d46870b4f57a2b012513267f0954d959a781b09570091287f7aa134996956b3e010f42bfad8781833d03bd916a9721c94b41a385f9ff924a7a174502301d5a9c2b57b2cce5739fbe7082adf5655ed0698ae3c003d5c178c29c55d37da73760b03f4be3b845a76135bdb5894cddd4b66d9c6332e5a393eefb6aadf681e786ad0c7dbea24870c52fb4d96cd9f225fdedeadd3be17913ce5e6f3ac120cc21b6ad6bccefabc4a89dd36720b6c065c9d97be0d339097dc9048331770277951dd620eff7b3fe1a0e0fe9cc40d3b45dc8834695a42930f770861689247b198ea784c178029afc9ddbac7dc849299a48cf4a5030ed23f9e869d9fd3a4a7f8e2547dcee477f199998a7401431cd5011a446414962eae495ea25f672ae36d6f658b75e5b8e5b35fe8b591e4acdf069b81fe34b53fa435714836b68ee7e121cf91d803d56a9d288e6a475707b7bd803a7330d33eb4f0e7df378f84d658f2588232ef57bd0a502096d8db2cec9de694358c7d923dc07b50ba68af16c6b782c531ddb96dede96cade38bb103d53bbfc609754e63337fc86f3ef600b174097d4faa311484728cf1662dc6db8928a6e649df0d9c2312fba7344db708a30ea3727bb3ee0e44987fd6027764eaa1e6d1a172c5fdd483a97d6d71425b62395bb3fbc39304f887275fbaa82a0c7d65c18af67e56b3c2bbe8ff3927477587ad37c1c29458a19a27a09d22f4b2fa1ac03f87d5ed24af5d25f171da76beb8bebd9bbc36998f2fcb68390a1b7f88c3f22e89d48e8d8864794da527eae333e58ca081c89b984730cfa27a2ac35611515a2469141fc254660488d02a929f5d7437f1a1fb4bbf3eecd4a085d3c45fcae892ad6364a477588961c5fcd4cdfb43cd442aea050202cedd4a90f465a021d22eb6b960e32c8080a7126e669db7b03426b7e79f9788f07b79f6994fb20070e33c84bc0fc7f4e7e6064375e903a0fbda5529cfb208af6722d909c0ab75dbe423dbb5e26d28e119aa1659f8d115be820ca82b18ae20d707bd15febda4188fa98608a3e501b7693132b2612305e25fd26eb3387c4162a5f25a65b15374a375e59714dbf98399c466335649a4bd081f8b34c3666d970a070868ed91963dc48f261565de0196b14b07f2e9d5cd899b98bd1155ec42e60fe3c772cb0a72f583a3da81ab82f89db53e8195334ef66f35f3c30b2e02d004e5d0b22f2ab60560009dc1e5113b620b1d572e30e781d398336c66007a1af84523aee8cdfeb4541a10513141037ef2af3a6bc3acb6a00c838c7204debd4bca572dcabaca59f03ee79296a39901e914117438f26f0f8cec14c53e051e97cf6409053ddc86f6cbbc7da589af0e09a343bf7775541055f8eb4835c4091535a1cd0ca94ac6a9d5e51f8d719dd81000bccabd2cc10eafb6ed5c183a15438f497f4ffc0e4c85407a1110afba140b2309ecc71b25d11f9744ac5dd15e270037365bbefc8a0c8b17235103170282e3b1e429d602fb340e47d7c0ad2ee7f6876689f8e887e9c5d6a216f483c69ebe26182e98145a52a42ec810b3bc068386efab78978148eae9be24621ebe4dd0626fc83e02df8525a877c8865f59756c3c106194b00b6e3acb8bee3049631595b9dd6145a6205a659d9d927d38cbc32f971e07c99c8f92778b1dddd962fb2d2c34afe8c1d0fd539b6c9496cec912d3cde50968d8b303861d656bcc513505f46932009b2fe2948e26498b71b036c89adbec88dab44fe51465754bac6b535de88f57ce01f2012f6d47092468e455cdfe26d1fd6c8c114271948df30412a913e0ca02fb761cb64df6402b10d060734704027c932428a1e095757d3246a04341df78c692b2ea19d5df08ede0ad1dff42c28630ad3599b83ba1333e6ab903c507ad0671b0529e012b9d6cb33a3374a4c3e3cc6e11352c429c86bb710bb9736d9d154366660ca9a625a248107c86da6f10e20be3f1738791ddba84f51e4a212b337f046c0be096bbc77441d12705eec12870d6a71820ad0840a1db90b134fd6c5c8dea37696df6a785ee56ba8b07902e940d4f3cfa56da2ae83719e777e906a7981bcfac5425e20722baf6bf34c49d88f08eb5e1c0efd7f7055ffaf38253ad96820272be1a574e39044a7a1e7363c2e93d395edfe43694736d1861994a14d8c167a329811c83b4f397b715c70805cd3405d0aada053bdb35466e27655304bee48db5eed5f859eee27e07a8aec23ea32f484b9429481fe436d79038b2b3ba259f6afba8151bfcecceb07cdc15a99a9b6857dc553f556315d85b8fff49ed1d1427ec62ea947297aef697ee648623ea5aebf4ce38b1878a40209115321096f52f8c951b2e3a0f19f571dbfdac54777d9f01613c529678cb054b4d3ae4be6d01b3b0b31f548ddd972741db9360f89e8263621b961e0f11ec620d8b0448fdc349f2be5a10cf7dddc5ff63decab8055b7bffc45227fd79990bfffce4026abf438324f8349821ffadf8bcd2a71eabdbce0ebac4037e8a2a388e4f194d2d363b074fb4c0c3bd02c75a5dd97bfeb5a35714fc5a93fa95c47d18e229f4b43430b856c2c32df71aa131c7b008adb1d3264658eaf8254dd3262f59513c8e8edf8108fc0bdf75980ce289490b0bee41b5a6e4cc33a71ea91221d42e22f96b320bbbc802c0a82a67aac2b5716596c9dc32a5f90284def20bc3b86df70146fb6c9e4c6921de056b8362ad5b9fddbfa1fe2ac21fad0a875266daeac3497ad625f2903969819fc3c7842b2156e193c3584a1322795a6e915685ab4421b01dae06b930ab6fefebbe2bcf1df55494574844cf784fb8e66036082a3883528ccf9e0f7d725842e1265fff2ac96caa055697f943c11a9327181903509120e000013d03a2c197ab2281c824cd0fb1f122fae4bd257d73db4a784edc8f81cdf30facc077223bee0a6835fabbd836c2f1a2be768055a91978af898a5ff3e560172e1f2bd48f1d02ae4a4bec76ba642387a6830061f37015963e4595758461d40bd928d7b909bb742a9677287f39a60f47d0a227699f3bb49a16af3a19e6237f284c20d55716fdd8c2d33ce49ec310bf30b66cf8848447e4f71ec28f6ea9e88d8ea11b10448b1bc5e839a41da1d9d49ad1d1580ba167519ff8ab1dbef87d749c3675ed903516a5f079e005e3e80bbbc27d28163e138f1c8f84a310eeb039e7ca4b4a70c38120f74a113ea504b1e707482c8868c1450d4bdea0cf536c33ef89016aaa1c183c85e3445dfd4e6d03ccde5cec262fddf51cef7c688bc97de773f9ab548dab2d9dc45bcdb067422c8dd6f325c4847bc4539b3bfbe26fead5c31fff442a4f99adb44f2534aa8c284dd4b45465b5a1ed9a336a3f795e83317e5db27d054ca73c24cba2e8826ae23d025a504d9d3ae661d62468cdb8429b25f1ab6449f5dca56148028b55f86bcd32ff7bb27b75594f2ee6146336ea85cf9f19ac551b2cbadc01b19a0414266d7901cd67f98453b022f508160de543421db89c33fe2a3610d606ec7be0e9cea16f7a7f20051b9469e528222800b6a0a144d88843938e371044eab0a6e08ac01b339c9b30bf84ab5c15533710e89f84ba5cfb13ec102487de8c33aac5fd6321a2490167378f53dfbc2a8259059ce5d2d5b963fe460fcbefc8b825866535c1785350cdd01cfd67165e0ab414961befa4d0eb4359b868e36ea7da39481672d0a9b0d690d1891b13813e1ac80b7e26e0c4d9f8a74dfd024dc528a7a0a4477794e56935e78436dc8268de5377877c34911c327a53c70c5e521f39453df00a5c3deced669e8750c44a7632b98f5419f7fc084ab04d29a26d2d707001d028bdad4660e09fa52534f0d5c45a68432ac3a6788b5a686db7752d59530917648ad4b1481b4cfd05de4303682b274b2a010eface047ba1a1c75ec8c7677989a23431a4e896f7c0529d038ffac0d053ddc9260681314b8dbaacdeea6610304b3430bf3b47f5b19153eb55a7d6d413d137573fb56b324f4a3312a10904e6f0ea9873b58ad61991c6b0ad48a32c38e436d9771bf5fddffc6c6d5c5548f90cf04cad0887a0ed99090846d3474c04ab21679bf0f938780737b64c132f976166892108b9b160bb942c337d8e808e1fea02ad886c5fbeaf7489674282ab471db3d18b58af5cb8107a372197a1e72662e997e10f34ca2bf4a64df682339c8e80bd0acadc77c8ccb6d6f8151ede9c1b9c75c2811e436632458696512838e065cd2b234088cd54d6b33243f35f42fc9441edc0626b05a89e08794601e0c74755f02f0bde01cf7ff6de0520e54530f60fd7486007436dd80cd58b8dcf47f3ae1838cdf58b9036f2339f3a1c9b93a67eb17d57d3074159683c1a09414d11aca9a489ab022b02031097fdcfc6c805a3eb9773b6b40baff94849de51b7517f904738b04d353e1aa59a68df1a06a77a44bbb5d9fb3fe26f23c593899a68e698693bc2af0ad9a233e9384309b44c50a026884b502434ef7534211f11e9dd86063b85e962709204dde0ade3455c699ec54de203c6917d7525ec60979c38e21470698296b0d1d299e6b159756d2dc805be30eef28ff2a2fd66fa5313b90fd1a6bd31a6ab31ce7d0e9fe3aeb97fdf01440e544336b4f06d4606013970eaef05a60916cfaea6f87590bc3a552e3b4102e4badc0f21a2e858c6edecd7aa6aa46f3e2c4bba1778a6b3afacc4ee80bdf838bf4b737d3cd8cd7dd8f55efc0ef671d3519606e452c397531b3a49bc7335c3eb52614a34d479050a450850f1a4284f2a89bfcd4227dd9312b0382ed77499f83b58dff6598c0261dec64b4b67782dd8c693e1563ce065d36e0a0635257c456a56e5fc338bad5dd8a42b6235f19a0400d6d811d7ba878ff30ffbb10e0ef7949951e740f3d5aedf9a1ab99f7b51720c8eb021f4102bcb38dd42b26360f292e5d9c66cbc1952fcd384749c8d4faabdee1bc2b53036231c46f46d668c1164186ca0cd8c54cf847d136ef3a9ff7d57c4ad29a6af225eeb6d8a504f9983de1471dd24c584b45038d7f757e12b10aad3e83baba4b6ae9a4a6eb774911bc5907e9e7d82b7f184b98cf790aab925368a4f5ad55d2357f179be0ecdff35c60a0b8df5805b09161bc57b5940288578dd06e9ce2d790788128397ba30475a0e5344d1f9085c9c7695fd8c3dbe4296024874cebcb8ccbd15c3214123db0e2eb6ef52b94ed859ec37cca13076943c43efe4b747cee4f8450262fdb0ea12f291f84cafc4677cfc6d249827c79dbd770f6d5e156726a4f40694ea14ea1800eb9676b8c1d26fbb0972ff1ebe426b8ca9879f04cde14be9c8c1599cc581e773dc39c170ecdbe4e4bc313c8c294d96329deda436553816ca7d2fe471abcb8a73384b3199a49a38767547ec4c007d076f52f59fef0d4f00f5d2d48e4d23a7213c5737b63ca451ec966f268dd2048a034472fcf76f934930bf466bbf8a528ea1585f3e5df1ad2e38c2830a34f9c00587a2dec3046a522aedc63e9a45ece60872a8357052308c0c32b8325c10fd70e62996508ca84b7118180459c13eec881f4f00a2c50828066901247ec17ee973a147fa2d01877d6006283f12bfe1281f852d6f71105d08598ade9cf3108394924f6e2c838e42b88327c21b9b93f820fa0fda8c8dd77e1d5ec7e45ade1b1b548464e1e5122b3304432037a51b0ffcf277cb6f866daa08fd197bb9fab96762d5dccc2a148855542a481b0011a065f26215946fb3fb34ffab1d8019ff80dca7e78ababa604e99d173f1d79e91e8b5c3f6a2e85257f931acb619d8bf115df00da7840269c768d8d982f586a2afef843a2375a8f46f97be3e04bb0b200eb1cc092240611a919e40843adc92a20ce21683202dfa41f5f4f55f65e09c8ce0bee19d718bb72514a63a8e281b8267a5e6128d1fc4b798b40930ed83392d8e77473656d02c56bc34e39a2c04f95b2cbcf76f4c62276ecce471789849db3474e8e58ed43cdcca25bee7590183652a8a28e05b40e4288e8dce10abcab439222ad1702292728f8150bb28701a6b717558ac86b3b017e341a11c1b360451d2b34d49ec6788af0d6c4c898f9eeecda92e28d59a8c9a52d14be02617e429d32a6c8b03bab4d6895b3054324e070ebfbe64367af37038576a4cb2ae560c30cad133987735a530039dfb971e82a2bd3e9ae9a4c73c32185031dab6c101828eefa6f06f73a880c35af211e03225e20a18d8b897cc854528fa490b697bb73529a5942925195e088508ea083d7ec7b3e03dcbfb1dde23b1dfe3214c636e7bc89962113f2de81824a1754b69ad07cacc3e527a93c7e2fa0a2833bfbb26ea1a0b76cd8fed05f57a0665fa08a59ec6ff624fa76a1fc25029b0f64ff2594ab7e6c79f3b61283d8bd33a186c6400f898df3c5604ecf77822a7f7befa8b25008e1501140a954aedac9ef54356cff26ea2687f637ff59a37e4e505e0dd9cbe47dee8ba0f40f70f808ec7c774395eebd141d80e1e9fa347b7e3bd8eb5e3592c1b1d1a6f01e8200c001d84c57410d6a383308f2fa976de7b8dc3c383ee92edf0a0bb74700e8f8f581e17cd1d7f51990cf5ab8779992cf52f6fe351373a9e2bef2565a3abd1b5b082e954dd3773bb1f9e3a167dd4fbdbeef4f187a03c16fd978730eab1707a947d148b7eea21cc7a4d64ffe559407dca43927ad4bf7848a20c49cd47796dd43a79f37d9828a31b49487da388395df31fc75df37166349ca6e1257f59cc62ee59b0df1e927e1fc2d98730eeaabdc18c888b78c643d67aac92c5e1af1c3fb99f303f9f8fe637ce9cdda45bb3de6141587312b0389efdeddbd00cfbfa83998032f35f3c2525454a5205d21be3dc00e74fc6994199393b225f080cf2a51fa9cf2ae1b091c9565fe365361ee6b9c8eecce7217ff5cff93c833fea9df2a5d0eac64e88802f66024611e54e2aee7c662952d89ecf7a22a667794470fcfb60794acb2a7936a6970084993c24514a8fc4dfe2f090f473ac08f8db1fe24d2255ea82bba6cc7ab29347c45df365264f851a77cd6d5aa3d9766726ed0f96ed0b9bb821ed4f6cd4c5e7c8a348c0be0af5a6cea2ecab529e0d0a655f78011d5df157fe728f63fe7f3ff661f137f39c4e37fd6ef258fc1076fa243053fc53642016621ffef9c14840995803bf38094ea54aa50ed21c8b6a31c634c01723015df123897dd807caf8b0f3ab5ff41e895708df23f3e56b286b733ad91fac4dca63211ff8831ef56c4892bef4b2edb9266c02ea879c1ee5dd9c5e7a434c6fbd9b7e938dcc8624b1d748bf959efb93c99b71d7d6d9742db82b7ea9237533332e49ec6d8b93690cfbcdccc01f7d33030f912589225814fe19b8092d8088c1a2b01cc045ea739b38e6d3730cf2d47d36d7f4de19d9ba141ef0f4b587b7a65b5d024bfb7a356f867b0047e7d7debd8f7f7ba6cf1dbc26baf1c64ca957c3f14da15f0ceb7f40d35c71a176ab5be87741e3c2decfc8cc65f1c31b59fcf583404366a40987656dcd4c094168c1051b22ab1c52ac166dfa05cf200a02e2727ba6375804b974f783471c8b3ed3341f53bafdf0db6e0b2ed810f1cb2fc42ff36f3fd060cc47816e7c8d9b0717b6e3d31f7fa93e3ec5f1d7caa711edf1d7cb67638cd4e746e722df691a9603b626cee34ee08ffaf19d0867019b40faf85c047fd08fcf630cab752c076817078f23dbdfdfaf41373de1643835b0d42ba930d3cbe62ba9b0d437d7c9644a1e667a2533b0d3dbd7dc51ffe23bf14bf1499db3807da4aae74ea04c3ce21615b1f49c08368232f15fbae67157fc54c76540577c5407dd85808f850021091fa7010ff071116e94abf83b333a9cc745ee3a0148b7e2c71a0a44ea49030dc67c3574ae6c1c18376719d0251fe6478e81c4953f8de08f1a57be7cba039c65485ac4953405575226b7521aaea4375cf93cb2d86f1a5dede5539ca6892f9ff6d09c7e3110fda13e57d2254daea44ee684d308e5c44298ff347297cfaa4658ec206cf94f237f45e8721c3a8fae8c53d8846a04fb803f98803fe8cb233c8da08c7cae51a08cfc07c24e2edd9247d3a85bd248873e99f4f965dd554a75b20a2833afb06bfe0ce3cedfc2e518aa9e39e79cd374a927a91881fd24111577fec4699af94925ee6c9a4ffe5c22a9a55f53b6ea62b9c82d7792ae26378db63394749afad28ede2995009a1326d683d8e51837f8437e7d0ebea413d005a5955bff83b9b5364d8d63a87a6e8d5f85706b19b79271eb4e7def7c8498ceb0443e5a9ae6fb22285b9ae6936218755d114d1c2986fcf180a48f570934c5d29ff3486c22448c2fa13c6d02652a1502cad487894d0de8d2d7a88f4be712d0457f3a71e9f4d199aec6f307ca50edd6dacf9de94e206ffe4879827ee909cbaf87d1975c109642fe621845225f9b4fa5b4945c668cca4fb1dffc41a5c0726f7a1b990df3b7b7414aa36e5178e7cf5c62ea245157c48ac0fced87ccdfbca121f235295404eb5f7fee4c299f7f89f45fe9ab0754fa3a9700fd253dadb5e44da0f9d34d29dda2fe93d68fd57f2650d3c03b9b748b9ec04a217fcd1fe8a23f74fee49054b4d2c6e30a8be20265289b0165e8e7689ad6804861a854fe566502fb499feba59f9294a6711f1cbb95809ad060cca702bafe1a49a600bafcf9c573eea78272bd74fda593a6e9a689efd125cfe3603f55fcacaa69f8371590141a8ca9322533b07e1c0bf3d7c90410d4cb0f82d565ef894c4985f12bb130ffcf377fc9706660fe4a2cac3fc6d87e3a31abc787e08fd7e5a2d489ab87f968e3797896a55bf1edaf3a15ebd4e1f8ade34e27ee4f27ee73dcf81589d541d80664f8cef8010f6cc98522de01caf0c03a40dcf8cc3acc1d61913c1b1cdccf2f753632598dbff132985f21a11de7ccd045c98d0f6fa04c8d389ef544707848a2901e89ffe9591e741711ce43d2bf3dfbb82b7eedfa32e482f810d5afbc9b7e158eeef45cb7fd8d8efb55a78a80ffe987f89f9ee40de9dffc6a5af7f236bad4c32cd7d957759c7dee74da5e65a383304ef5e2a53c15509eece4d570dee669ee73618f195249686f43b08227eaceb747f1e7f7158d046c32eeec31ee8c5d58b9d3c7fb7a89eb38ede345bec579007ff4804da83fbf7de00ffa1a03f9ab63ee9afe31d0e934bb98938b74b8f335d37df8b2aced5315be589bc78ac069f3e29bfe46fee993c0faa3ed220f4199997a084362bf51375158b08fb241bd04200ce5cd67812eb1c5933460d6632377cd37754c0461d6c4da3ec9ddbc8fef50b78af0f1100c4c72381bd8d58b61fc84129b8a1485064be8964731b847a874a7c73d3c70b05fe35ccf699a14ba05a45b7e82966ef9b3465f35e62325125d874259ae6f57ce86e88c2acc3cc01f7edb8d31c66fe67a4ff7c73f3af6c485651feee996ff77bafe3c78b03a593418f379ec464dc7164bba10caccafbf6a623f4bfaf9a6eee6f4a6efee8661fd1a77a5d6a71dcfba755b4ad3c05b9f863e96a6a19585a8f8ccba15b140f1e171b235fd8d5b6d76bbdc4fb7a2123f3ddd8a50ba151b402fe3386c377d21b8f581741421a45bbdd884e789fdb88b2b3e94280810d1848d9c3441d567796f691adbad7ea57c1aa869e26c284b246999ddf86de45ce4d3509a069271e3b7124d1369a8f585c45b9f0c7be3f74f1237ae561676e12ed0155f3eb15ffff48fcb1f9206434397982dfdc75dfc71603f42319e63f0076d40e9d2fad59b1fff0897baaf7a9f114804eb231181e99530cce4b160751719f66fecf1c44a8c0c2b3444a101a6430b1839650461c40227604968b0031a6310d1048b910e2c262981195a44c1d2830d5b8860b1c6742bce6d86132314a01b7f6efc8f95701d34c8a869d4703fde4183887b7c26adfd4313776e8c1fd382dca4dd07892ead35d6985ffad16e3034581a63dcb04d9f0c174ed25357c56032737f8cceed3fa3f48f4da5945272ff26a59cd363ad206574ee15d4ea04852e2823bb6daae8c7a7aadae57039e54ff945a6ed96bd7352ea356b852f4eef535de9452f460a8caf35ecaef63b7ad127f7111a7cf94e336107bd58f98b2fbde8b15b38d056f04737cda49546e3be73dde82d0142ba1b396f0565e4e67d3734705d055b5106afc81b9de0b71345432c8935615205ac0ca11a54e1c1132e9e5802f6cddc1863f48ff10437fe70a3096e8c6ffdb523071d9e582981169e2eb0f82d7f01600655b6f0c20a163f45b01835d414fbfd109431c27ef60ec11f3c6edb70fdfb026967bfa128072068308760270ca81428950acac556274400359101f5409ad52a804ca00590926a84ad68d41d2c0d0229079bba01898a2fe80bb2c8812d59a9563831c5d60b839a58428a2692983da85b134e7220f1d0a335b1935389dc059bb84187a12968946009ce941c9c00852553bc30010a3fe8f0d003cf942a3d4c49c207147cc099e22407147818b25b45a54179a2e062454c0aa2e0d20449280a2e3e3a5c9c14a105092e3a45f4d8b8308a209411d334d54ba71cd5f6d4266ed3ba44aab62b6debee7d2a783d65f41aefeeee86f0356577f7945debb772d80d631a8010346e8faa285fe44c4d8aa2d5d613b530a5e8d1874a1aa76ddbc6699ca9643a9164f493ad164581808050302915563f0c7007704b29afb158ae36f5225f54d1f6cbe82a1887a9d150a866b592f683405dfda3cb1a36d8c6ea678074b6657420a095066302c232666847e28d41de2437ba4797eed167f40f41748f9e7b2d66e6aa43bd7f1d42083b798b48f83cdbdddad3c7e8b2e7a574466b7ba4242e487d92979cd629230e2a9d3252cfa1a4819145d3b44d06a1bf39e7915266664aeb941107954e19739071d22ae3c4419432ce1c2a95f174e282d43fb9755aa78c38a874ca483d07fb720308ebe482f873d114a5573a8b5c563ab598633a917220c6890b22ff146d9c72e6da1f94fc294555faf54ffed5ddb3ddea16eb301428632d1764be45319d9299d9493508c96b804fdabf7141fc513115a5573a8b5c563a4b3107351f555fa2743a6bd1a474966a8e4b3a4931e75fa22a4aaf7416b9ac7492628eaa44828931847123914ab485212270c85f00051e015fa5efe7175806f7851dec10231b4dd3365922914824dff8b718799a35776677aecf9577bceb5b23c771260752535353b9e7e8a93d6a251d2a3904a8389773d847d37f81715aff33e759a7bfd2171887818c18e714ffe4d66b2c51f91f659d17d847a97ffa053681a3401ffd4240bcc34748ea1e43612896d6ca2413cf5e804074bd44dada55f26451eacb9454988595dedf965e898591de7fa5f14baa54f258cd377c764e44f0c74bc85eed9d7b47bdc3bcdb7877672ddd72cda66e90561dc36e7410c671a5e79ec4958ecc673509c260881d81685c8743b82ea5dce181f2436546c58e8f142021d93cd4349ffd9961993533b3fdf117cb2acbfc59c61c952f40198fcfea12338132fedc01c12e7f920aaeef4019e7647b36a40ec2a6d6314c76353aee61b6b7d19d5ec266046c5e5e0210f612b73f716f4d8f7af152b63b75a66e833027e2a24420db3b900624b89cba2cc50497a50c694c1451a7dc508247cccc3e464c2071b5217883a4d8806f7dca05a9110a293e5c5a677cddd8340ab8f2eb16346062e316433dee09d73fbaff38b9fe3384eb4b6071fd5b3dd77fa6660653c8004bdb9dab31290d0b54ab0fa2b8f1e3d72d2d60ddf894081c031a5c37feac5d6080c38d11063f37daa355bf9c55396e8c29e184783f8825cb8d500bdc7263bc1feca2c3e3fd78093bb991a148713f566216abb8f1e357bbfad60c16377e0d10156c9010e3c627d2820e37be0b2f30b9f165f061412c09273843370621f1054f124ef4f870230c7a81d18d30488919dc08b4b3c5da234a70fbdb36cdc7f157f18c1b3f05151e107f48e41b638cd16d008cb8c1ed8d0754f4981c2b7f458f6353a75b42fc33fe137f96d22ff764b228f4e7c74ea66406161fc75291a787f1edb3e07ff2b7fe48ecc7873f602c78de29df77fc75fa150ed66b1882175c031ddc39bf8442792c0e48f78deeb6e9d1312f3b6cd4587930aaee6e140af53a501a6f5e87fa1d5dea7bdcf8980ec274fc4b77e36374e8b8d1a383306d6ea59f4bcce027f613a33cd4b4e4f1cf0e1fffd0fab33bd6b1da36ac277daac7b33a99f73bfadb46878ed5ea857bdc355f47672393c1bce7c96cfc0e8f77dc35bf4727dbf13758f36c58329847fd8d4e66e353af75f70cd5437d74a7c7bacefcd5e3e77717f9cbfb989fef38fe0ac0cf26daf15f1b5d00b8b7b3707c0fe6826ccf1ccb26c74b00c2727848a2d8e0781d68c06e92c0707c8f8e612c16dd1197f4f581f49452bef49ef07f3f2111aef3cb8e051f5c389106ac1f76dfcd8528f662dfff9dfc6abcb105e0151d587b37fc2b77b9ead6ff5631991219583fce0b8c654a1a561f6701b07e5287b30058bd21e23751869048de4d9421f5dbbb6979d05d42ed6790c0ca131e78d18231b0804198d70cf9580cd6b0de40837f61d013385c1c28336c7dd2cb2fc2953d82cf39b985cb71ce39a7e46e965f3861743b951442d3718337c416eb6fbab04a164230cb2f20516b29804023b474081dc22861cdd1e085319a8410561419d65fbbb00a11ce85104e0863df40d341821e5fc0ebf24b544ae9efee734e9f3e6d80840e7a70a9ff707719258e56840fc628a5ec2134f81a04835b8823c4eebe166e0c127a305358210ebf707777d99d8bf1dffcaf52afc8fcd22d02bdfae39b4902ff9ba50be1f4be19ee7c38fd6137df3b07f8e0c289346eaeec678f03504b1123f08ace9d1e07e07f37d7bd4f962e945de9d239e79c1322a1c11b3908b8e701bff08b4c6d7e3c32a339044a773e841dbc246842d015a21b03173102b55cf73800b5dc970e1d4228e32f5fd287dd4a4199744e29a393408399c2fe8ffbc987b0e23875d1ea08f79b0fe59c1e643642e36777878156d575173d37070cfcc1b7adaa5b9f43cc4df41a070a1f98fc24b0f94960f593c04a9f04b625815577f5478f3524de50d2278169a60ec62c7f7b3f8f29960cfbfd2ff4cbd0daba37a3c6c619969fd4a9e0ae8ed1e988b8ab7f76313becc07eb00c5616fb41a3163a176ab05a92ee4843151ea8c0202e4297abf020e5f20fe1ef8cb0f081a4d0858d9905e2af9976311057a169e09dd91e572c501764e410610c1bbc488202626499420b28c468c10a507002ca0ecc60c11241d002c66154a122084548c307a228601cdfbfbacb5d2a2d2cabdb5b7ded61853dd160e1ab8eb01f9c19f991c60c7968c9908ccb0148f0214300970000d0a3e3a18375c306cc0beac469a4971e6b88fcf9f293c092c04a30c04c014618402b0031deefc88163554395b2a6adf4d3630d995fbf7a37f5e72781c1d74a38400907b8c13393e0f003235610a5055ab014c158023222d2282388072639307e03749584cecec0ce742b1fdd5bb105e864ba1929ec085d8dbbf809d00111c20ea053c15dfcaece06c7b604d0b550840d40e782bbf801d0bd00848de964e8383602eb758cd375acd363bf631e1dd710c37ebca3631d1df3a081cdd1f10fab63201f2c8eee46c7b32bf663a1211b1d13f5606b745cc4465e10f6e322d58bea0535659b824a757c84ea3ac6b2c17e7c74f96dd738a7ae757a4c61bfc63171268e6ff70d1f34789aa8fa74776f5defb88b5fe3b75185fd7aa7495dfb987eecd73db77f5ac503bbe7b009fdec39b0087a4e515f611ffc9ed32f1e335fd234f047e872173990e7b813f771255c8a53b9fcd1bba869be26bafc5f5f69a2d6d25b220abaa8aff8926eb98ee7b4e75cfe6e9f49127bc70fa2f74d1d3e1305b7df86512c165b1203ea82db5f8328168bed30619bb8fd30b3582c0644151c17b75fd58317f44a19b7ff45f2c462319d31aaecf6a764105490815a72fb514b78503184ed88db6fa39208c5ed3f451c4a576ebf0907ba44b382e8f6734c862059a183dbbfe9c462b112f4c411dc7ecda1d01c6e7fc928168b9580f58248c4ed27e59001f5b9fd75168bc59890a6a0a6dc7eba8315252e6efff489c5624074919a15dd7ea9c30e6a0db73fe6c0ed70fb7d88582c761ae2f6b70e4b07d294d566ad91172a96ef56b77e6db01cb7a95c71658bd1014f1f1a03cb045705f5a28e8122232a81251c585b124943c41e0a25be005219306a4ac90a98ea82eb0e207721952a80d0a718bcdf85ff6c02bcef79dfeab6f7ad2efc872a33347e1823c4163bcd4cc5edd6824708f626588662931804cfe518965876b0e0340ff63fd53710b77fcbe2270b27b73f87aa27942fb22e0cdaa287999d27e88a25ccccceb96cc625c2281d6ac97161d04c882f9444cded6ead380161e1132316404419e54ccbedaf170661c1c3ed218b852cc618e5bc228c4927bda2d2d5854e0c7105ad4157045d21a592b60b83aef081b4f484069fdba39cbec1ae8108e282cb255d18c4c50e6e65e64aba8185bb3ba904c384945296b41b170671e184524a356dbb824b8d0b83b8c8e1aa48241269e35667689aa671a6d98fa988e38238c7c110398e13c2b7e34e08e4a02d86b680a2724fa6e8824b90132a8039247c8ed39fc6a771ce093731cad06ca42e3882072138214521841da610020d6e464e8435d62c3c3ed3511c11f9e033353325d47cb153a90d6ceac2288eaee0606b5c18c5d10f298ba327949226d094202816202765a171f5758a113089bd46ae6a33f5c8bc92713aed2a4ba4126a076e9297628d72c6bfe53eeb68fd6563edcf66b328a99cd367e44c9c99d9f84ccee26c96a87c68339bd9d8f88c9c89333e93b3382b45b799d90c9548b16920a9d4a592c632ba0d8411159520173613b05fb0b532bb75abeb185bc96666037fc04bc4ca4ae97dee959db69cec7d524a29a58c71b63b75127ce8eeda12524a4949804047bb89ea80e6b15239511d60d88a0fe3b3bc4ea917f331333160c464d122d024c2ec04493e6e77cf40978f1a34583e712bd8943ba00328aba528b7bd4c0c744f5530d03b80b2306e1ae70011c8b862661a03c057fd56fd506d72e35698cd264dd1600cfcd5e4162e7ff7d163acd47dcae8904b5c72f71cf2db8bf91d62346a830782c57161901464dc6fa6068b1a1a12b2a2448dc29a2e0c92820552a4f8a1166155170649514313567c50859530aa587b6190952b3542e943adf5c5ca141d8b054eca8a113a272c5056805862d262c85ac14187bbc2e7245406934d8b9849488b0934214ea88a10a52c74362128419086b43a23f4c30fb5dabad999bb6095344e8002169e2a463acc7aaa80d1030a578eaa585932abc2444e164655a2e8a060054f951f4e80421642556cd8018559ac720f818835a4c198efe473351474f9ff6051d034047f24e00785aeeec6b52628ec77ba6e4f4276d5ba50e5ce648aebd3ce0a1004832012dc7ee9ce64e8babbbbbb7b8caa1d51b4208a9c20bdfa1f50d9c175530eecb7a9c068dd2fe6892328b0b80e050eaeff5381e2fa730b16315181133c086336c5133e84124734a08143184dd000e6ee1c9904b19b1f7ff1500c47b20fd0255f885b89b832ca951c2f8132f2b58da806f6835d5856bbaad5ca2fe6f2941cec163311d9c595f2e57f8c0cf242e7c28ebd30912fa52c43da4019098f9a460608249f71fa0561929b5c0692820a0fa0828a0c4750e4dbc8d90f37f98102a50b14259af038c991e18665bc846332b84b320ed0910cfefa3ffaa33ff210300d574abee14ac93b5cf953062873b44561e7a1a7d060ccd746d74b78c18ee103af14a402a9c082825af83fb8e5847e318fdc525dca8b42faf99446fa8114bae51b73399eea80329d82ffc9f32f7959ae3bcafb18c8e4410f88e60fa9d75866ddda78608d9aa76958f361501745ace9f191cb76d85be77aa97be6eff3fddbbba9a0d22de7a325d6bf67b55afbe3ddc4532f2ad54baaa1504a4ddc058a124d9a72977ea9debf65de4b3ae62e7f55c747eef21aa78804dd442317e464b22894353d103f99383e72dfbc6f7555aacb434d537a7fd6d2349cc5e57bf5d8adf602d005f903f047df8735408c740c6c025ff82390ea4f0f0894f18f9f6da353bf1c699132730d95d47f75dbfe9b498110ed644d3c2c23bdec9a0828e3847b78d63116a28e8bbab5a55b46dde28d79a8ff477feb568c36c53b97f292c83a25487d54bde666a45c718894d086880ab4a695b08fa8c36d830baceb340d9b106b1a9ced0231c70439e0b0cca78ba9c69f1e66b3a88fa98f2f1f5bde57bf0f42c21029ae79b8782c3247d9e59f0a64f9632f3da62c45a8cee8b2939beaf8ca0ec6abf1751c9d1b776e7ce8e4f2d7c042c43ebe66c1fd9a08c93c3c271704812174e3bffbeb8174cb7dbaf4f8843e9056c1bde83927e46fa4de08ddf217d8113e68e485144ef8b1fddf091c732b584a56a2215fbff402dd921768977c2df6997d242b21a5694a2f9d4271d22d3994e3b3e344b28ff38e845dae7c4a25a59452cea141e894cf399ccc48bf522f9fc805e46740aaba163a22ee4a792ed45b9fe3e873ce0531bdc6947ef3b93fd924b7da13f740dcc4711b11d91af2bed52d558f2d7f5500bae48f516bab8c2b9fb6eef488a48ab0fd3cdb5a3322f584ddf9c929ce39e79c7e4fde77e3a93a126e444157b41b16d6bfffaba9999f820a445ac0f2c12cfcb046ce914dafa666cb919d329cb2c0a379a2396d39a14ea9d3cbe9a54b75a869e4743a9d4a464a7f4a7dfc9a1352e8970af5aa97aec65d2a14317da9d47141b49ad97d7fe7977ee366926be2b6d20371ad54f2563552d61ad5651dae4b2f10a395908ec488534a96517a31f4ed428b8f57e38e92afa41102fcd3a31d0942588e7ed128ad807483199902644060740d31a60547ce82e58b976794d1f320184d83c6ab28d69f9fc5e058945346f9d4fb26732bf817f1bc8d6b1b1e8d87174a2e88e462fda5478210d6f9995bc19f3976dddbc64843f5113ee400e45f45c14c2e3facadfb17f257fe156ba927564a29e53d3ddff80128c3270fc6c0d2fe29c82906f8832f3fd4bc12baf504f540ba8b25d7b79cbaf8b67b40b7809030843d3d7dffc80939794f701e867a2f856e45201a1435370a81d73f3e91a661cd0cb940ec85fe18c368321f0681b1e57e900b378132fd334de3f2bd7e9278b76bb3c47e7026e3f9666ead3c918b8ecc719b655b522f2af9d2a5bad6d22f96355fb94563590c32dc64a05f2f1fdf6648bf541fff02fd82f957ea613a5567e3af17af85543fb130288b93ab913658e4f45a2461080b67a7ee8be19e5e769dd564c79992dc5387a487f35c07ec437b20bef52ace3a89ea515decfe1182c018ba23c4180394e1e79a138246b2285f42054f760004f34eeb01036450c40fcc6377e33d6052049b413ba2bb6999153eb0194e5041103cdc700c36030c82452f0a8b3fc9e51baed881cde0230d2158b96119d10e6c86191c8c9e74151d7650c60f4ca35bec6e9886160cc16670254c821ae481900d8c60de6955c0bae3db51fed41cbddbbb81e021122222d27edb34233d8c543746153b3bc3af4d7bf6aba8b7c9f7543595ce6ff752a7e212c9835f3dea6db05fca7e7fef08db57a05280dc08228619c3bcc2654a1e267f320210c03faa29ba330285726c56e51d89d708ac8ca56551608c8cdf5e955155c5b27b2c9bf8d0898bba96cdd09a63b7ba5de369b2a815f7f5531d8bf4a9bfe9182cf55aaa93c964b2d42b79d8d682713330530dec84fa542793a52009fd4a56300d9290ea64244842a7ba0a4970ee67bd1a6f5c10ed531d8469546e95e3d5a28434461308e62dbdedab993a21f09ebe765f7dd36ba7eec891d3c760ef843294f4a7eec8e963a85742993e49d35f525fce64f260f05bdabad8cdeb5eed85b0990ba27930fc2d79f1ceee8b42363045073d0de02794c032bb30bc70ab1739e915a14ddfe9d3f79f917aac15e4c778afedcd08081bbefc86aa5b44764308ff93d07b42aa2fa5432779b10a555575bb83483c18f4bb5d36f5113e4228c30fc467841ef02bbf4894923a95f10b08a79471a6489b0f63be9922402967aebb7b779f11ef9e8ebd8bb0c1bb553f43f83d27659ecdfcf1bb76ccdf5d3d0e30ec39297c287122ec39bb1fce9e53ca9ecf8804a3d29f0fe7a43f21403d0ff8a55f6492fea3a4f9b06f8510420a616db204858685dd9238df7142087b8a70e56f2afef64a9d2623431989733bce39e79c527e4624d0659e73ce2925943e1de40c2e5026c81946b0ca38a70bb4d0c205ce87f3a1ec813274ce39a7c4999e8e1aac9c73ce39e79c73ce39e79cf3c2a09e20dc6ee6853ebe1e2384d5d3bc6fe64a77e71cbe749752ca38d3d2dd1d65467cff227a90933fa5871b9f08b548d3e1437c2d464f478e8def1f638c42b4db3c681e11976937fdaf69371de1e3d734fd12bef480dff945e0c76ffe8f23b3fff6edf62094f9024af943ce1b34786b11f802b845e475e149e967ee07c9f82433dcd4af258fe4c994c8c0488ff302ab33f753dd0f16a902a096a8b42c38753d2c15cd8c0000006315003020100c07444291603088635d770f1480107a98406a5e958a444910c330883106186200018618000802c4203435655000063f4c14b14453619206312742611557972a3abc276602da3844a7a0aba0e4cee122107452df19e6e352edd958392561429828ebc8a52d49ba488682d1aaa02f0c1f08216f1ec6313c8c7ca2a73c65cb865231519dff46dd35c5fe9c0d4186cb1b5cad28741fa24280a9360db61f3932411ed715a37dc92483cd64f7b83d63ad7bbeb09b93764a07098d3dea618ac2a9b99704130ae520dbf2b4155b2048ddd5ac951cf6a85513be5d4e2f8d54a5e79c0c377ddf60fdb649a1e5b1ab75221b0698241b410933a55c12f84f074693c33facfd710ff9d52381dcea88ca5087ee742909c4045790d0417dbb1540f5b39945b37ded239ee3d272a1f866e6f1e441087908ab6e91bda12d3faa50029eab4c7232b9d3661f2889ec2f9aeb487d6469084f80b02139e59961411bc897281edad1a341d4d83f80066ca5fae96740d1d5ad0658aa8262862c85cd05a4c23f4133586299b66e880469e11f363ee1da0a137403f2db43db0026a08f3e2441ce111c02013c11101a5b36042aaa07fbd6be8088a4bfe32ebee11bf91d2debcecef30c61e8490218433a876cc158653d1bf963c66ca14540f9b75e4d915b495b1efcb5a2ecc60ee9b8bdc11524e6ecd9b981fba669d1b89e41b2a0306a51cf5d2f9f9e7e1a3d278f864ef5129ffd33c46e6c54c93974f77c9ecd59a6b0f043ccdf095a1e5cdcdd53434c2dcfec06d23b5fe12d198ae2aa994dfa04b22a258f170e7f95958671a82977f4b35b37c503e1a7b759d8f735f673cf8729a8e38ecf420d7eaf04c0213e2d2ab3ccd9d5e7de1f28837d5f7f3ac76e2020dff1a462c2e53963122ce5a2e533318b9a83d03c4698fef7963da36ab29efabaa1d920fdd0966d43930d2ee4b50cbb18f7bfdfc9e7a5f3ec65ab1dfb53ef91a9f7adcde18b7c29fba31456a22cc41e8966a287502ec29b6af12331735e617061978c36910fc230bb3c270d4967304a9a5d9e6a578387e8202dcce4a0998b6b1eda5b3a9953a9ca287bb4e5b3a59bf4603ad821d2609c3b1228a03bdd40d92a299fd4913f483e94258a9535aa9e11778e6d97ba074b0dc48c6b374baeac66515b3b0695f847db8fd5c22d1fab0bdd17b80fdb6fcc205be47813644f2f3aff41d548208563a6248fdefb1615544dcbc132cf95ed1653fde5256e3f61f9a40bbedbdc539f363a1809ecc589e1295cc72d192f6bb01255b37665611c8ad64131b4ea75e6812569a34381ce668749fe4184a903d1c61a5fdc026387e9c29386bba447a6f3b09e1fee604f04a06b452b194d037aea992e20cd57967b44f936be738b1ce1a0c875c034209b558a89ccfc7ecf04eeb923c392deadc3808e5e3c48c0a660f34ecbb48f9962db78aa8ec73c6832ba112db4e7a77ae9e2794d5fc24c92fb452ae7bb3da4da6b3ce9c09b4281e08c89a17827bf37e3e1aab5da08db9a18f284a59c63d36dcc5dc66312dbb5fa1ad24c53068162991b6c236c4e57adc1786b86f33d2c5c7a6a9a3b2965aade8a6b05f72e079220f532ecccc1b52a1b46572d50041762a1eb80f3d46e4b04387824aa4e55ed280161cad5e4aa7a50acad7559d5df5f463b465af5e8b373e5af5a0367bf54c915104d1908374145919a4e0476350badb68e062a285168a380c95bdc33427a0a4457ad4920f131ffb4846524991b535a1249c9fe48dead9367693fcfd2ceec795bb4e0d91262902a33483826a4f8e2026157ecb8c31120e09c8bb653532d2f8ba7756a822433e5029b7a94d898a4e9a82d8248e9b26ca7f5753f26a128a98e63f3f4a08b3ae666af73e9d986a2e4fd1f0d600bd5bc4845d10c361849d76f6641e67342fee262fd0416a462237ecb22b1280e294c268a0aa89d654a7e2f1e91dd73cc2bbf1d0f89ca32e39b7641c0434bcc2c41decbc8cc83c63c238a60cc8e63310d2f4e677e84c0de9f19d56c9360330e22999824dc160a3b41fd9e2e6f4ce25c5c4a7703a70072290298fed97e3ad148335bfd4fe73302da26889b8e2dbbd61e4d5a3973aba96b41714af145a244e678e293aba1c8807c862c044e868a22fcf784e3bd934f1dc2ce6c108a42e1d7b181acb723f9c48e3deb442b21e13010747a8e79d2baf61340e436eddeede284f490758553b9578a19a88af3b5cd35d86ab412a230d52c3bcc36c035f843822f5934d4a070a769701ea52c9c3c49e263ce8c5650664b61419a912763f54bb44b63228714c9d1c1844907e73966a47d5779a49cd862058b966e11618bbcf85d02639d75cefe12e520d6108efc1747650ab9051b9551c9703b395e8db742d13df88cd0e8aba1fd8d5ee83f32061065900ea14620cd09a442cb235865f69176d1aae66a5eb326a6c67c50941bcb24f8551f842dc8b7c86147abc3351571bf89676aa4c0f40ddb78d67977f99d7e40176f82bfcebaea6703fb5a274c3f9db7db1c96584118135f645eae367c1adcbab3d2820f5e636b9213412abbceb7932704b6ee7f096d0fc3a633624d6a18140d35aa44186f2b63393f13913b4a50be067dc8fa60b1e8da11eade2564a4b7862985a518abc32971678591d8c5517be195032055b9e9c355abe2420c78691f6a9c433db9b4d8848fdcc1a647473d98090bb17cb411aac357181f52cdbf4175557c62d1438aadf62efc6b0942440de58528a020b51b6aa52aec34afc3a3c74bc5993ae4a37a38053ecef5891ea082098fc5b9188ccab4123ad93e0feb18b9b701d6c0c703d52bf7041768bd01793d4e6f4b9d0a6700328ea6c9880fee2ff8f2f619f88f5e6b4bae31de053c91c2a8312a50c55fa2a1b3c119e33641c144dd6155197100034579dd63bf018b240edaabeb0f2ed8bfc837937ee4c62b0e6cc74c9956817c5c9adc5b8356f222aea0cf14da131b36e1715c58be197e22921e5cd082d6213595a60136652d3d442a104c9313a1cae3eef28cde4bc2d6de4aa780fe864b601219208ba6627befd532f3ce0a4b3f8dab62a50b44f0e121d9b30f5a3073e5d7700082f9f576285f91dcc7fa65cf4659478eef3f62571d8a7c81d35ddda719215b5a40f5ebfc7ed53e2131cb3d77713da310cdb3218ba9e3e71e680f1fcc7412d7076fd94dc38fedf1e7d5c2e211f0c6915254b42e42e28264b130012d52686195bbe42e160a841c60c9c1cc782082192f7618e7f8af6ccf258bab28a4c07cd6340d0f12fd6d3f12cecad52bc37e5997a415ce5659a26aada506bc8848777931a0ffd049744b4a0a79b613d983489c6a7f3f7dbb146842bfc041127fada6d8a268a7baee7ff85eec0aae3604e276c6dd94ed99cfce130f95d6e7f36c37035fa791732ca98f16a516081f81079e10441559c421130025801fe3e02c5a523ca6913b43a53f133c88986326ca8cb23897267b1ccdd919d551b9a0d4f0bd70f6f8f29785bb15932e41be922afe8ef00ea68e29e88448f240034323e5c120e77539f8277286b1248145b1b881d88055a61a3460bdec5a58d8a5e0c3ad5ca305d23013c0f42fac1449842907515a77cf2f7f62315d2f1cb4a5d1b0ba854158be55375e41be194db666f59daa9586755825a5edd8dff458a654d567a298f5f18a5faab41256dd2c0e1b65b2ecc36b9351f96255079d6a97aeaa7066b5f159ee3790ab6649f0fa8149ba12b36a3b06753b3581acee1537abdd8adc7743a89d61ac92da8f2cfd2a0e7574a87a15ccea4e59781c055c7f5458c253d096caa00bb4fe01f554094ce03bb9d52ab850d1428069196931554410106451b7bab8233aceebed6fd0ed36995b056967027786ab36eee792d73517d6105c45a2ab91b2a6b12f73b7faef51ab42bbab4bdff42c64662f39566b2a6f01e3554c5b18f8f3abf1427008f1f8b9ee9ae3be512b011ab3e7aa025d8b6dc02b4bc4f7104f6be564113f5b650b4344575a0a152f7ede938cae1dde9207700d6abd738e795d8cae9d3015ce6c908be90a376e94996c10c42c75ddb5aec74e0353663c7bae964b5bb64152dc553778544e06c82fdc427bfe646462e478f53d44ac57c7cc507840ec11674659eb5060070414713ba05e9e39af702fb79cfbf568ce517f2c3d7ae1c95b9a222ceff6f93f9f4811ef918f8b59e1fd83c413c9161b0361c6522180070a29094b97c959d947a42b4e16ba6d154b99a81b900d10b34e67882214f0eb555c3270141f94c93dda0e141dcc635fe12d0a3c47522b9fc0b79c2beb5cc789f9533417103c4c34fa8a1cfbb5a9e468874030ef31c2039e07c8c83d68fed4f5062877b427adb4a5b2885df8768ab4d0c5866c0713fda1023814302ed2a37fbf73a539d515598f41800486a99f3c868ff4fc30701dea8c45d58a54798c453a307acefb7153dfce7379e873263c06e56d1a67716aea5f1575f985da55510214973802f71d43971551330b07431135352e32d25ef46074aac666333521e7188d17df18103fd0cf320a62d5a406044ee47fd5a21721e36353c19a425b8e6a2c00c1b410960525cba1888a211c55ebcb5adff16e1c51b51dc6deade80523bcbe634f639b1901327f3cfdcb125e8fadeb31cda7092cedef517104c78f03e176089050eb44d821c84a95de0f4c4d4fd155d0ff0c599fb16014f6a8041b77f449ba02cc32a7f9a59f732f69340e50f4f3c956e697282e7cd76d46617be21a571c15f0280cd11d412348b5e279ce5a9fe0c9d5caa5ac4c06a604e469cd4cd8d5f25ac23e83d60220c9d304438ee9a91268ba7929eb7394c923f8ac9d9ed5feb617256e93002353a6a907ecf6b79ba2eef9a959091426667c4646b6f139a7c66e01647e5b61e881a40d5240ef59481549a4f1a8a3f1986ab8059da8314f06d5687b43d3dd23ac92d499b1a7410fa6ad18a02005b0a9e342fc09a40d6d99cfe5494dbabd93f890a937d630c30b4069600d9ba7ba9a2e3f4b7aaa03a6681d031500b34f69e9df56a40dcf1ad98e9640675538f9553e1071cefae18daf51fe374ce9e1f9455e659d4686c9a0fec4a630db56d655ce608d0427e0727bcb9f23a1515cecdbe25a80e6d4d3fbf6be2e4ed2c04e6d15ac2fd9b696d87db254d18f418ab7b999e0897015209957f471916198fd11fc07b6f7f5374413e3fbae0ccfbedbca27900500e5aca25c30b7333df5e9f2b24e7b9158bb7887e643d57bf45f875cf82c1740df10944f623a98d52ebe90ee57b7303db640de327afd63aa3c7ea8b5033477255be99490d63f3d42300ae6a8e73e15f1792c1857d8f572de67d97130abf3fe6aa95dd29b61b670cd5c85b35a0b9aac2ced31b37a6feaaddb3995dbf9716945bfa55147d821dcefd0f795e176e8f07cedf0a7bc61ed1e543714343cdd8f40cacaa319f6b220ed7486f140d365bca85b0cd1ae9d731838dd7749c70e4b76230cf36bc912b097a0ac352eaea2bc8a7e10146cdd37f44498a8fc5232f1c49265cbdb8a1e6157a6975e8874fe833129adfdde0773e72ef93edf4090127343408222dba473e46bd792031ba61d2fcf4af716e32ca042419ec930329f92da0c3a92b8a0ebb73ff6d02b1169462ac973b00229985413408a6b7058ce26a78ea929e4cd823035bd6b3388f0baf0249fdb56825672545f3361aa7c4f33dec4fdea1bb483a696b7290cb7455142daac3e4c44312d9bd306ca4be725226ec1d5e891b72db488e2aa0f4c0c6c261729736329b76e7d20ea65386ffdf4ff350ac257a6e793e6ed48aeba83b5d23220d36dce6944a45f26f70934c4a0acc771e61720346877c007c67e5cc21765c605a87bd5eb6e5cd9b0691ab7148800c03080545ba7667deec63195052d30feaa862c0489b5c601030b454e8fc650de3ad3221f17a123818014189a28daf51372191518ecb7d7a270fa049bfc040fae114ad3e1013247aa61d0579062ad96cb370140d08ad74d2fd25243a90f1cb11f706de70fb753d1f76d4678780536ae26fe0c2024344ec70db06fbddad59967fc736a6fe6a3f6a5ebaba7b6624c5d03a828149f7a4f5c2fd23746c07c699681cc20645cbe992e19d2bb00b42cdc75ffe3a8b7518635374a6e02abe4e1cdfb46a33750a6aebed0f2153b213431bc3c355400842e5712cca6f36d2d9259fb7a6b56d794cf1c14d4ca6a527c6e62950991e45e81a064cccf5b09d6be1fc4a977094c6719e8d592b6977c805c39fdaf00ad86dacd4dc7a129293a9cdb03cc3ca4e8886e7322ff612e1ebedb117d420b0ee428e3990040b9c959069c90710307a951ca2f8747e065585918e0129d5bbf1db38993d717a16359ae66879ef57623b40bc43c6adbca83ffbadb09c3455868c120b9642f1d47892a412b7de72d4de4cb68312c655e1115ed75ef81613d9997937f0ba48101a953e85f1900065de471bd5bec6989c7587fa8363b5cb6aed4994d70040d2c246327016f684f0770def6248c300288227fc7b99c4626e6d29f2ca29dcde3c29998541e5aac6a730b004fea11869b6660643d2663cfecdda6a0918fe939fd953dced7e2e3e5966dd83bc0b818fc92adc5e3e2df0788253cf98ad4562056820ea1bec4aa08296b738a3ca78b37db925d1203b9a4355bae3560fa955394f1ac6541d595c927f2b8182d77df55a1860975c13df1254b17539b935ca32f93db48b06b580c1eb8e988dd0bf66d1a1339ae87362c9b60c2fb69d85731394c28f1616b1025f783a76ba3ae331ba247e0a2fa8331c55ec060e804c6c6aadf84c163ed00e568d3644176edbe358164847175650c41a3fe0b3a1b15cb4249979c27153acaaa65bd3554184fa8a51297a830093b42e49caaa3d58abd223967d6961e9dd70b4c4c72055a4377878da58416e5b3ea978499d95e3aff692713befbfbad289e1f4f0e02378e912d743723fd954740ae2161df851f8bdb8978cb0ef4a823cbf372b334c79380154064ef518e52bf306db3f635e33d195165fd8b856c32fe195c3a5cc82723d003f32a2a725240d4805bda3f7a870938c1db6dc71084ac3fc8ac6f97ad6f336d0226243582887d1e353a1ee06f63a29ed5a591a1008adbcaf076a287fd5d8f4c1432bc79ff94557df05d30e8663118db5dffd4339090814fdf443aa4898b55bd82775fe9d81e693fe633bf9caf15f04a69102b74e769d6505b6a2133e79fd5c4921af94d1b0d44bdf05980298c6481000b92fca917c0d704ea357d71b0be7723bd0de05b2b2ae8d8107c7d232109ec54c73f1652b1540dc986f8ced91c24fff9387baae1691316e8bbf19a16089cb3549e6d0d5326978a5adade65a8a847571fd2ba984f73652188c3f6c4b8179f0de9913eab1020cdeced225261c2cc9e18c0a89ba6918d1b078c07058308adbab9f60cca3ca681ad0bb67d110a2dac6ccbd2e028cb391278123d313f09ba403270a1d53920412e362d530d29353a62d186352a5400fbb70f44b5e778018571d05851a67afdaf5140cfd36d0dc68307c16a97479258c4da9617c438482dbd2d5c8dab970609a33703f519211d66b279c38dd969f804135a4cac7ad552a742f239252507d0e431e22b8f1077755230664f8a6c1ff4ac0b4b0fd7ee6ff430f389962b300a47c7184c1ad1f4e462e058e5c7a4b13b7153fd8840bad3b624492f9ea0d208dbb9b5ed12437c7143fe2280aa290319b860ba6d1218af430dae7471d85f3c546c12d0375852cb95b1ee53387ab0c52c71767486a02cfa6ad5e49ae3a8e919a224507b69a6cc88e79a46bd239f0d718a4594bf76943d64a0d99ba330fec58106d3fb4a684621903e324e83fda1fec5079e6d5d224a91f7511f9bcc0d22652ed051ab59c3ab53b68ff99cd0eeea666f9dc342defadae8c50cf5686586a0c5cc93e14b39048292cb127a5b2ca494b8f8e146d1a06c865bc620a3eae434cad2b9273999a31608d937956069db62a8155b3e491a5500121ffc1e0609af2734f3b9da50e56acf9c6a6d05899d58e68a09e6bca306384235658518df337757a5084b9166bd50e5985bbf309c7245be3cf3fd8795cecf4c7dc7519165ed28bce0932f58b6c066ba0b1f76653159caed4f400a9077423f09f79bfbb68546870dc2a729d29095d445e8cd8d389e395877d0bd5688a019a1b3cc2405fa48dcc48d05f023a071709c641aaee017c3ede44fd4859340b9ecc975ba8019298f394dd3615582c45ee97e1ba422ce3145a96d4fa855c41327b1471340798cae0aa4394c17ef442c462c49c323c9854765348573356b8696c1ae35a4b90b0a99fa885d775c94522f9033f1e741962837e5c2e0b541a140fa54d3865f32ce1bff51868dbf41343aaed0f1c76f29b0617b9291df5a733093fbe2b93449b17bf7cf19ccceb7848f74be18c4e1e8e8fb55d4dbb3e78183c161080bf5b9389e86ad9a5aaa0a72da6d2fac280f6c251d288c06a8f3c3c6ee8c2cf5403ac8166726cc335912d318b342a2509f61694e6b50543adaad26b4b585f63adb33cc5f442b8447881f85c8bba61562597b374e624325fdd9e7d7635d7237d25ef71c55e85e5d46da438325fcd5834c89c7a307b88db406557a589009e1bc675b815c3eee2257cadaa4d3e5ded1fdb1b09df341e52844dc3b0ca6b5a980aea7f654cc012ca38ae93a81f30d906959d54b2af8ecae249c0c78824063c5895a1f9b39d93d1adefb028148f4da85cdc722425cebb05303e5fb9490b043b533ab8aba5df6dd5a9cda0251a438f58ee0bacb0b9d33c22455fde04b1c89549179843d07af4ef66bb224e38eca84a0d5440631827d24e3655bbba06fc5c4794e244c877a6a1687f4e0694340b3fd613041a6ef69660efcbe26cc6018f910d3e9244e2836dae54ac894ace84cc82466066b3d9916b3c5e530edab4943c864ee480a5825981a97117319bd8707cb5ec54926774fa107f415cea351dbefadbee04407b0cb4d44f74ea11d468a2fa42afe7bbe175af5c2061a380a8ecb10b709c2f5940e1c5ce0c839f957dd5b90e82941af981e2aa86459c35c0e9cf0d3d7ac1b2db96694dcea158dc03e57c63dd7fd2e2ea716a2669be7c6fd46e859aa25ca71b59f67b775db459bab9ef6d3086e1c349cd9e770a2ef771805ee24591cac56cba9ceca7739379a7494292563a34f810aec71a28da71b8892c21113762292301bd6f1a980f793c349ead645587c100305e11a71557a5bc9d9a7964bc09c7e3a1e44eb5a0086073d3ae383e28c7acd60e6909423dce58e1d2999779de08c413cce9a16bab3ff45646f0e023cd0f090d85efd60d0553dfe26c1dc070178a1fc1b54a2e0e4026fd1340fb2db35f108c3498ff44408ee27e8bb5a031c6b9252cbf2249fd09bcaa6ed17cf0f26e313f6176ce4d71609451d5d6d180c056cd21379725808e6da4230345de20726785c1b5ba0470e721f3b730e222b485105766c47faa02e02c10799e6cb3533bb184e3196baf508b55c945c67ff1f5ac5c5143017d76030b2f8a9a7cbc23173b43915a8810ef09c4f7418853a0e17b96e0aba29049224e3b01d6c869cbe91afa5c2229987613326cf6a96eeadf6c334d92e3892630be429eb001cee801f4b839543871e47d810d8ad6219f77e41acc034a9414328b62efb461e4ec0cfa95a5620c2f058c5314dc2ef0995caa7887d68e6e797a5c31686aaf68b508ab5a9591b92a67f31e04512a74253c00e89b475007bb93ed5ac825e86d3a258abf60b0677583022a194235e5fcce16cb885dcfb97259bcf86acc4f3b2f73de3fa96cea6ec375034b2ae5521b426b0e3f81583c6134bc2229ff97af736cac94a36726ea912b39a0ac5d338902886ceff1757c0590b6325a9fbe87104070cf952955cded0c5468e154fd8532b8a35efd0fe1acda5445740f50bf6dde47a4634f414d6bd52774e1410228e5a021e825424ae1263d7961aafc76f6aabdfa4f28b42359e9a7feda9b232def51ad05f4c428eac38da0a90b6a709e35772b4691fbdedd2b2f1dcb482625fa905db3247a357aa5f3ed36cd2cf66a04c23e8f6b948ef689931fce8890c8eb2c7ee272b7e94ff78651be0ed9986317a8dd8d6aa7a8e68e28f849192d023e924d37edac441dcb78f02223913a4466ad47996443df83e15a0dfd9a56e9e6c67bf039828d90ff88772f21b74bbb2e6e7b1642b816ba4268f1732ed06973d8f0982f3a0d94acbca6e837ddc7c9e784a4c0cf3518322b206eabec83bee8f09cd2ea5242f7acd277d5ccc0eb61abe236972f84c027a269e5092c3746a5e5be60745e93b6575bb676c716fe9f7299130530f124cc219cfdf79ed8ec201c76e20a891a4e3b8ac8f33fc99d36c3fe8228cccb4417fa014c896bb866035375fad79017078d24610f039d65c361d1b349fded94d2ee358e84324aa438fddd1d00af495ac5e044914163c3f1b4c575c7e25960144f0d41e075bdd5f679cf409bd47d825b15f1348454d81e4c4b1fb69844cfdb0e06d0dfd9ab4fd4669c9097b0e53c011d6ca307034f5e1064a7a4471dc92a9e2160ac41900547d9652b8c78043250d1b880147a74de0987b81e37bfd97c91d6e49924219d1dcd3e3f0b5ef1713dfa934b1f9c6d838d4803a04a930755be1eb04f6f71d22fccab2b64231a204edd795ac428e6924630df30c5f3bc2d1421b005c7729255e498a7dd0312c7329476f44f0ab30b907a06c933e800e4c7b16c091087b6411a9ac4a989bb3086f1ddec0cf85b3d874310919316bf160a6ca615aeab3ba6ebaa2519a5db91400d67bd91fc15586e49c0993a8a6910d36d493bcf3bb6ea241ad71e0236e1fe74b6b7de380071ad95968cd6d6f011bd247eb26557c78d13ae53492fa128f490542e5a99e5f2ed5e84cd75161ee05d56f9d112cfd9d60f292803f0d07e3636058a7bca4d84a83a574399e03200588a0369a628e0b00d48411fde30d4da1cb1b6864428a9480b83a04f6bbc7ae900455747560a350707503459b88ad1d59d196745d0323a414372044f27569077608bacdf6d5ea40e3034cda510780a4fd96998f8ec8ebc9964680f4ca2e015d4ab76b8038099927d7944be47dba059d6dd749218e125413ff3bf48c92995b8bebbf2eed1d5c503f43b5b518f48cdf652dfa726e345226b468eb9a6bfaf55bd60e68e48d0ac4beb1e026819722f7e7bb462ccba240d9e4319d40ebc28b5d91e51901ff6bd90c3bca30111c500abb8a132ced5b65a9589b7b640a3c03a0bcb56ff9068ed31762b91501b1f08702002d05bb9a7f710387260a00d2f8807cc9b4ec453116bd3ec3fa0fab4b3701608b3e4166fe30198ed95d4504c53be08ed01860c0c905341ccd717e7c86ef1d4d60e6ee7b9e56f43afecb1a99a5a066aa7978705f9145a5f050d9edbdd21fdf7bafc308cb3d67481f3a04d8e2c2aeb412dd2ce4e48a7f2e8aab6db3843922ecbd20a8d8bfee4115692c7a74f594ad138de5b7f8376cde5ee2a7c10070c51cf73ab1a353759c753d388f588932e00146fd62a7fa6416f5cb2725de5e9aab844ae1cf780d2d043f2c7043facc1758616e959b0a0ef5f236d4dbd5e6bd044495c7eed07b59e7a3394f0be8bd953ac54140a54ca08068a814b846e6bd93c0eee364084024571ed4706348ce326dd1f695b85a3ac818eadf350ed6eef3126d058e843e531e12edad9508d6d5dd81292172a9bfc8df136edf3a00c7043d471d0663e29e440ecc06b94190dec283f105966f1042b3e092bf044248b4ef1e9abc0d731bfb15bbeb6e0694d3312648ca45b0239fc42604cf8238da0c370426065eacadd3d0065261069f2d3a7d9dc339d2cf4f09aa7535077cd505c16353ce40f7d61c445ca5260c9a1140be09edef973ad62577661256f16e4f8e813450cc1f9662361b13b8e94c801275c12017e5bab43671575ae5c90fd9bb4c5785f0eacdc5db00c3eeca0ea0bfb701ae52a7a7219702a4bb9e539435834a9d0ec9738836438496f946b166bdce82f868b71d7a1068c3aa1b67fd504d5fbbb72928c85a696a679cdff39ab9a9a1b0d2362b9ed5605ed83a755b7b9fc16d85ac819a63a7eadb3b1644c0a8be011182fad7a94532ae9d80682322b509746d12439b406a7b16fbfbadad482e58349421c35e95fce2af8ad42211a995c06b2331dabb2ab38bb8aab38b044c7bafcacca2af6bca62d7acccd4eb92f6c587818dcf96019eb0227693dce5c1eaadb52188dbcb3587e4eb7ce656fc87c57a8eabad5eaf1eaa4efe4aa19aa1a1558281b1d1f466e8165ba01d8858632049b8c51257cbecba35f499799677a11108e8d46a1dfd8afc77f83352da9b7611fb4549fcd7ea8a54b9f170bdf9c749219288e0b332bb3ccc1ab790b2cf3f3b4f40b0fb84cbaad5031e07875b5dd9c7dd560398aa1d76f85203e66dfad99df5c26f10e64beb3773f6b784ac4ecbdc4e9443506635783a9fc7dcd080d29123895cd6fa9268033042601fd16547e5507e2b050b61b1266ee3846ee9d362b8df1b208041545cc79237779dfada172d5eeffd5f9536c9690544f6497c7c4830f0d61a658de3c5e0262ba0da065fc770ad70f8b2caf09f37003cec95369b409fd0c1905b2208b63089b63f6d5500a4180de27b9899711befd03b77590c590eff5497fa5ee0d36ac756325ea21a42b98783cb2c88c6694795b9fe809ecdd0d36a8bb14245604167db41a8774dfb95ac9ea6201ab1f9814d26c305eea7743495d93035901d745df20f386d560933c22d5faf510a465d4be7485837e7b14084fe6f01fb10bcfecf1fe2db0c9372a2a7c54dac97fa50d5d8efa49d6888ec4b6f4a50dc9b769ae5c6b0d464a4c611782f73a66a8c9ccb64cd5033ecc8b147da27e869bf8c4289cf4b8351f06e35ec28fa7fadd75cbb5f135d197d8fc6eefa68fdc831165355a4d935adcfb81732eb4105d8ce39b820ca528b2837718e42550353157f471925abd6b7419ad90e7a9144faf4e0fa58ac350775e6e88549ab465943e1a324365e643cfc0fcd8008e202d77c5845405395489f41ab903888d41cb89bfd7c9160bd2a9d195f24135d4f5754ecf37d1abdaa7857095591e9ae8d7103e617dd3e48c30bc4b4a1a8c07ec73fae668f6f21e4966666f0a29b4e74698d75a6b77d148e40007bd2fd78e08dbf9e397691be8598831a84b9cf2b77a089390792f4bc7332d52ad481255b4420ac2ba8addb995868c273fac35763aadfc02168650542d7b29e51199249681e9e0b11c731c4c9a81e83951638610a1cd0838501df7b504c447bf41a8d0a594c314d1cf7eec93d027942091b820c34c8ae123fe52164743f392468b24921438a6af675c7ce51d43efd3a8f786d312dc35e9348e2ecb832844392241e66508f9a30f9e3b3861944dc854368e6367d7ed14216ce60376e21e8d28ae58a7a8d947e522517e3a3a3da22471168cc381137b7a5c6fd31a5438ba3142f2732ea1b1d25d068c9373d9ce2647414773da098afc55c782b441407c71c9463e17d029ea51768e1b2669acd3bf57805ad29fdcd89dacd4188f543e3667f64d9a713ac6c9adc674434b890ef9e3caa58f71f9375ead836ae10b5806287713cf1c1298f48e51bc215ed90e484b9acb9f11b373ba2a37283c6e5ebea718a7dd7da61fc81537ef98151f8f726f92e3bf390b026b31fb2698131c16a1bf16e456f81e9899bdd1341a7683a49c103fe8f1e70aa1ac71f37b0634082b1326bb920bd2dd4968802609fbecd62ca3a356954082b7c7f9ead685b1bf45844c71ac3938409ead9870f8146a16b181030112fe75b635152c158a5f3cec4d6d60ab1d4946bad8de8e4ea8d763ad363bda4e67bccb07419a8c1210acec64f3d76cec283f6aa981626ab6538ed823c7bca78be1ddc3518a5e295f6caa62007130088bdf2565c52c209930441153e029e5220110e79a9449e6e63021d2609479eee0c9f1a1d309cd066ac37be2e3015d7c373d866a55d5254a0cbdd04963c84520643d330eebf8658663261a05b866ef3fc5ca789165492e8aed8d1bf0962653691e46d799c8e069807f62b85acd9c4f7e28be44ce89c7544208b2eb16c5243e50184353f076a38165fadf5495a60925f8864bc5f9880324bef5599923ec8f6d8aac7a40d280b2dba895e87b4864597298fda54fbe53a52d683a54549bf04af72b8572bf7533fd93c9f0dd3e468330bd27eb0b1c7389b067a4701222532ad17afc9df3531c01f10723d37664b2da09a50db90c1b7f0d9ba2c84cd30ac71a8e76d1b87e92fbd779b8334242cac00d62e506ad660da80595613627b08f12a761b7d883ea4083ed96cb519f141b700b7a325d48154ad664623502e109bc0cbc784ae952294d0e039e45c890cc8e4101eafd7da064f9408d79a189120c3449313bff474640b4ae69d8da8a840e7e26b1c97f04897a1cc045b04b4ef983587f198a0460bf41d9b69ebdf5d33055f2cdb01217c4c140ad0db9f35f5f30887b661cee4487229fe8a11729d4d9d09abd9b91339e50a3ef3a16128217e706c5ff2a819b6f68163c3b57f349ad8ee563d8070a1564ac6f3a861f3c161dd792e83d7b9a6716392e4320271d8e177046d5dc1e6d8ec35ed004f0209b6a93cb906563d50b28f15e52dd0a5797bf3503529bd6ac2b80f0d20bc21803ae3e07b49dc2997347bebce5658a4a18acbf0b6b4a0ad789b95f463ffc7476d0e34657902f49f08bfae94ed8ba83e0261af6fca6b4936ac7d846be74841b4890ab940f09c95a916450163c8bc2e81b7fba19621417a04d7638a07e6546700699d8f0a9153b6f3880fc71e5ba2319d7486f8e5096eac89541059c7e0c6009d193bb994b96c6c851486d9c85c1918dea32ba7070da9e591702235571ef491f09c8e4828029b06611bc64d5615c7463030161a419eb4290482e086021b3c2de3d3fbf6b03100755c11294089d924252602b83293614ee1fa5df069aa5c4ccae60bf2741cd08137e83b45e8733fec2f4ad701ea78789a0c2013e307a9924408fb05210e712d945b57f22303b794e5aed7219c5077406085503c1706d11542917eb7b15085535a3705d9ff3783db3763bb9d9bacccee6ec1899223010fee686c51c27b1cde0052509b56cdaf2e0b8375d52a81dd850c2ddd2001dd482696abb504bb211856d54609ea9ea658505a12c8ee5b408225bd5102bad12c964b8b0476852f07cc6bed43620a300dfe8c29555f6fe5a95e1a8ab8865ca42088494ecd8bf8146d0eb740ac64368f1fb7ad954266f24e7c46d98639140339cb3bf1c7788304865661bd10f73786300dcc11d26568387c74af62cb6d5806428c27385b1315ba1ec8d2174f14df992af31e59b931d0196067a1b515e86ec1702c3480e7b9340486329961d6430dca5e1fabf07e946c8b349f8bbe9e0fbf7f9fcca1eaa2be8c31400dc35af6411176b42961ba3478cd7a6175853945de8c1535325b3d51a1eb06f83b473d0319e4f78206c0a3d7b3959804f71cd5e03d9cab2df3edbb54d6f587ba6320feaf0cfb07d92dd6998601a4757807bd5293e86ea221e77378fa2c24682d95e7dd0b6a1b213ec62edda93fe93057077877133d05a4ee3863c854640e3a8b20c83d8dfb412284076bd58257b3e50b1ace40ba359803a1e89450fd7184f473406a01128230fd1eb11274b5a3f54ea0f0c0548831eb38ecedcd6199b3933d9244ecd5b682976eb19c37c410ed3e8fd4775da736e2b8b8e3bc1dda188bd37cd43d54487e025190e98fb036594926ec94b55a3a6706624b35ceaa8ccb910623f8d10b6a2052ed1018f9a4cc35cc1ad61333561b557b1ef0b2fe3b4c92f0680e9dc8c1bb8a524c2ae12b6f03bfd1328a1149c1b3b506c8ced66f6818a084306917c4e8967177270648b286033b40f4665df31158ee8682021434b693348e6b7f86c0d9ed4c6e519a133bf962f49f75ca9d47fa0896439a27fa63face03582cbeb0f06a57a0fae73d008ad81595d7cbb94495a7124727b4d2cb623a86c2d4f3e05b822d739569ec93c2605058e9e557edf9c045e17c52b4a9f3ee5c892831eabc2d1de459a5a8500b190ebfe66b8e7ae705eedba45d1ed4ba17ae4c69b0faa0627ba1670b19add2ef90730d162b860116e1c1666087bc386d405cc02e1ad0f8bb66069bdda7ed766f977bc8d84213c40656b9574c1b431f0889f1c5d98895de9ee61ca8a0b65b587986077056727f4ef11ffe34362bc8b061c137820ede68e8c3dbb24dc0d8289d537e76c0da5235d6ed9a12215b5d712821d259aa45ccdb833c02ceebe549f0e2febed647580bed908b8c7ea3e4eebbcc5c49ac8c12867be0b2aa72f2a5cd73233d62279fe1487a1ddaacb0f28ed5be7a27ade51ac5b25c33c546004854bfd661b90cf625530eb87a225dde259bd5854f62997d9bea691331fb721b484c46131f25d83407ecabc72e2bb920f34efe51235c8e0d0596018003643f9fe5f510c24728d19249b594d958c835f9ce4ff57e3a7eb76fe6ad442bbc2461951a3bb218bb67c54bf65ea736b0671d188e59afacba19ad2898d05ac45f63e67d7440b08a9cfe6489529836ddd2e0227a9a3ee9466d7a4294a1426c275925ebe2c92de8a2081590e1a7939083d9a844fe340852703dbb367d65271faf5c20ead2a95bb6239c94a5777dd27c26404ad82e9515f593c9b911034189081b8c2133778db6150c3eb88d1111e02d16553ff200f625812e5f41655bd73a594bf97d0cea5096f2d61d931b2b1a40635527d956350ef29fd52c0e107a960c9e281a47e40c7f324df5853af10fe8ddff14fcbb81ba8062ec9a0c882df96dbd841bed6862a958162a0e10218a36bc15818feaa20eedbdd1ccf12aac9388e8f4e82619bacf725192327754c618b43d4296515aa06e991dbac75602eb596e9d5b3ab455a426b2848c2b233acf987e61acff6cda2edb39f1c53709b1f5f06f9fcf7ce1de5957c6d690abef30c4dade983a26d5fc2e0364c669747b8c9021c7f0377fe2cf2d49e5155e0fe252b543c469ec0c9c114d3e09f59e2059f43329de8a01b9140145e73f28ff60d8a32d32455df30d912af4c2d6decbd1ea4386f9ad6107c029cc75af03269e104f24d6add4c8c4b0ecec56914c7f060404ee2950fdb8749c43f83e11e0b18b0b582530e674a93c85c64b6684183616198d2950959cedef6b824d60fcfd7901f6db0b5c9f51ddade5f9d9f3d8468b612cf805029b42eac54b1a83753d5e1618082e5bf9aeda8340d5588c07d12bdcde0fef2de5461e9a94199d3c021703158b9ea252217cf11256833a78b68f3e462a81e2daac4ad1bd4506de44c8769355c213a9beac204fb721240aa85da0a0a83fba75d9db1b4e827856966a22fa0a0ba85933d65fdcf5564a6ebaa8dbdc0706fe495e1b0c380cc21719d5f6255863ce6b2d4645b255e6a7b775294448e8eeafcc73b84a22c413720f7248593943999b0509277e748faa80142b0df32ed560dd3cc31bd6c24779314aa3739eadf32c7c1e1be01328d7cbce699e6bf94a7b2a753a6942efef99fc64e083728f8563ecb714c125b704174d757b5ea82fc960036fdee32383f240122b8a64d6bb77da1ec64210ce1a9f71973241728c9bb4242399bb8df7c4dfc240c91dfd409e1d06eb7032dc7252bd9e9bbe4e67e94918fe924b8b3f0237748692010fb73c79fd383cfc251d6944fa828abf7324397b1ccacc82aed0f0f8fa0ed5b2ae273494a0f0992bf03d3c5782f062aa3c32c6a9a3d333968c256f5a74f6f76d37f96fdd5272e6c39553c4b6f6d84f731b0b22419d4a41ad612c6f36a84ba6e5b0339e0b63b2a6b25682b325929f64846b78537eb24e1cdfb1f6074f7f85858ce6d3bbf6beea1445fabc5fa419c193f396096fc21cced5c32705eabd3cf6a07d4a67309058b480543caf7582ade9a4c06e8475fe566fed7d9da27a0039a0c1e0f2378867e3cb7cdd8839cb034a3495ebc32a769bb12fd36bd6a2ed75c90d7fe81c07f0564d37652825a6243607d1ddd56de1ebd163ab121bf29665f6ff0bc83abcb00e079c8abc8c3f78ba2cffee28217250b7ee133b7b2b0796557590c93513df8981ca595b705fae0b164d47ef5503f03293261e1812da579a2383ee9b6678505d94d8c77a2d51c361466d329a5904ad9149059a4fa4d5e036e681039e8aea164885f2842942fda075da9b20e132514c621eb2efbe7ec86436770153ddd50ceb6aab04a57bb740349b28753f29027ab33a24310fb7283e329de7f1a385310ca198f670017c3d4c496c64321f7afb62e825fbfc851fb5f6129f561ea5eb37a52d2bf0c1ad6f4d1291200c8eeaf2e11a429708bd902d1628c792534e40160202128a661f893c37fdd7ff397c4c2522f70bac941a76567dfa54994f95cab53d49e37ae511fc66a59ee5e83e52f47f738b136440f4e9d2f680c16831e0886d42d25809d02eb483c111f571e5d22fc33fbd3fb73fd5c3096e5cfa25ffe20687c2cacf3022b9ea94fcab9bf6ac5db3a00f22b4f56a840bbcbfcf224e75db41238a61efc53f4f15ec05e01351121591bdaf62958dbff7bf7abf95be57b1f76cd1bdb8b60d8ec0d4f6fe4d0b95cc9bfa63b5e65979b5301b4fa8e3c25efb179e2569f551288f8f4116f7884c872e0a885ea4d6b34a9e59ebfac1f612beef7eaaa6bee091c515104edbfd37276e66375c78d07f43c58800a381849f2706723c4f0dcc74c25302de908f9a2f82f2a5a892d66f0555b201f26f5a902f406ac9f417231159c863c2ad360b60063acebeb1afb42f307ffa820e4254d380c4e54903494f4f0ca4fb9e1890f0d2c359835b8beb47130b4f06a67af1507ba0df2c54a71343eb04e7151426299e2c94bb69997f7a768caa4b4c8d1b90ff18a2f5989bfeb824659d6ed83ec3d199e87e092120c42154bfefee3698872ecbfe6d98ecc663e9abac11dac81bce3030d38be738a812429acbaf0a5cfee8cb38c90ad0045ab29c66e29c3c97a446736cfe006820eb798f6a50fbcd65a143fe1f8501b1c84f85ed8df95068e25e283f2bedb84b91e84b8bca947f4ad8d35546e1e3557533bec388da90af4e6cf016cc1b8981a2061631453ad2086df3afb6100d8422cf0d9c69ea5073b28536f577794b996ed22df71805d3df178c4b1b4889431d38617d5da539cbc2efcf020704ce88529082f02db8a4180d7213f72ed02fb9130588006da54783f0e1f354a005f446c64d3310352ebe89c846ca70e80ca6791d39fb76e33589e0add1bd6d073b75e6d7b041a4bb7b8d6313d84428887edc98f2c454175fd362f96770c210f59057888354af97f0b4e1c41096899f42b40a887cb38f1c01989c5cb218799db007cb679bcd4d0acbc0fcfa3c076dedbc8afaf138176b301d20a8127e573901105bb56c63909a6318c0e3723878a5ec1c0c08253af40967fd74362d416ffa69920f6ab08fee973303ce40b88d82202b8c69e74ef3d5ced2c044467b4db85baf33460739305507400bf3d1cc229c765f088c037c72e8118387dc98253e7e8abad07d6fb8deaed1578cf635e2dfa1f1cc8a8ab2b3fdfb6b88a8ff38a287fd1827c3d074fa53028db037552ae03dd73788153a23a2e815284d6481ceabf90f77d16e65330dcd1e32a07a37fce9ff6e5ceb09c691925e3f8808540343856c64f9a8d780260e23fb3c3b83fe1b03a1749df0d00a8540032e97f90709d85785de23572268a2bbb6a567c67ea254bf91314a4fa4a3e5570788988d88f1e1ddcc94495f46ca529e2aa6501b9c736472785626f359fc5226a561c62e65ce3ba29f9f2cb099b0b33a008774a359c02485c249bed787eb40ec4715bfe560e405ec572b2648467f4d00917f09c7d8f78ce2dd15cc800c93958362d302b765420a5447b3f3669f9ab6b4f4aef2fd08c04b5be8dd434922d30f1361bf9a016b13f9dcad807e439e42edf56b556541c33c9669cd6ce985675443e06a312b19c03b4f8c49c45694563df401e672c099f787ce95beb4c2186ac05532fd65027c2a207b0d57f49024c91498da47c6a57a23493addde2f9535b214ccfd5cdc4c9a277e8ce7c708fe7403f3e3dd4ee886cabace045956179af073f580f4cfe283d69b0982dcb08870f47295d6b79a2fafe71fbda53d9aa8aa909828fcfe517db2ac83149fbe30ce075b85e481b710b14762daefa1ac190e33f253344732e0351510cea6f34523f2ac82c90904d29e002519ea2fd0460fbc39ce6864f2fea6c55a4ff3a6173ad7505295e1e769c0a10af86a711f5086dd49719971ea92c2d58a49d2d5b5843b840c31935268414659caa933d6f0f4b5cceb59bdc26a942c2fc605c640b4d962dcc0ae6a31a1cbf89314f0a80a400bc2d7e2c7017968ad4f18e0277dacdd83fd7b418449b6e7fbbb017025c56ec2bf42b26e3ae187dba667082193fdb94026b31b7df1a69ceb29754962039f8974308b62ffd7c0c7388b264f4139d5ca828f19b6694a5524ea8aa9ad25e085e1ad27b4cf5d918c23fe07e6d1a5d8b6a9386b835de33015e1d7803bf1dd6fb5fa5bfe17b87f16bfe097f8ad9d293aea5b22b63cbb24f68ebcbbcb6cd1185bd6e07851d6748990c0df4f8400789ac8b88b3f8c5ba3e98297f66bf6e6fea6f9515269cd0881e5bb46acde82d2673432d0e0836a4910245db78c1390ed88005c457e7ef294700bd7e2d578152baa088a3636bc0631d0d92c08ac6305ad265d40f93f0a3005a6807ae0c7d1c0a49532f3cdee9fa8496db4f46451071d0b03c452bdbd77f6365d0bc8d44d44cc3699ce8b57c456da2b380476c3a36d2aab943a63f7c6fa234f437d822c1b426117d9065738b82507731c9868c161fe1bc42ef9634f60bb6145ba08dc9ab704803709a530d7948ae65372a19c40264231f2655135513fc85c423a7167bacf05f5c301884c574815c8e7540920b155b6836e92b40417c536d195f8c08b0651baec7433741f5893e3da4bda12f738977751e426cf811645a25aed3f5ca48e9e0f210d3744be9c6657ceeb5a85531e04ba9d2f22417bb92bf64d5743a6b4c10db8433bc0f6225155b5bdefcd133d81e9c2d6c1061554e0acf5f5e920bd0f6858cb7502d019485d15601337ec9a2a08741eb8444aab4040b6a6c8d5769f8fb7e0109d0f9a05b677a17672baf6ae9baf59f859c9d9e3e44ad00cfb80aab829c3c52782760f7df735fb32989e2a7fc7f714cbe3c905b7cb6d4a45d79916fed3d244e5a5c09e6b65e81637a308b4e3051c91c2528ea7c5c540336e7050269bf549c806930d443a18ccfcedb259dfd8fd5a46052c0490e6d95857550562ecb15c4e78758266b310b4af7825dc002245179ea712ed88828203c76e208d1f6c22309a43da9a2205b64e12b3c435da6f647781648c69d371fdf7cfe1d523e363e2fdb26c4743ecaa5bd75d28de26d8cbfc4df83b13fcd1c6975cb8c45b85e0bdf5ff2fc08f79f2f67f075f2099c77ff3a3819491c0a50976eab986ccded7005b796779d0c92173cce8d1013124c7c23524ca710d0d5e2379210cb69f0f45c748a14b0005518ca4f80d601b6942901ddf2d53c1f68b0ae2f02920a05177311da857a5c0de13c35bbd176883397bb881d877d7d153e619138d90a780eeee27ae0b28071b3b55f0bd24b7a90f6927cf5226c04ab3481c50f2fc19ee9c6de448da19ff735b9bd1cee9b266912bb242ef291966bed33380c73fa5b92ab47dc6385352a75a342c016ea4d8387d39daa9dddc209e6332e222f8c9b486790cc692bf0ce9c14aee7a7ab0a38e3ce9322e44c0e8374704525df2b986ce11f28542ee507dc6debd33529d0f95f2dce75469d587c186e3c7f6792411c5a72d5753abcade6f53fb04601eb4d30f46cf6822933c6530bf11bac35db752620e4db84cd72878525896538f332cfaa0d1b3b66799ff8350fe12776f7021cf00351f3ea9444e84fd47cff7f8ac78e681cf27ca0619f572e1b3d39d44f31e6081794fe7184d62827e21458d9f0be43d25ff59c5744d238974d95a174db2c4804ae785333eaeb12676356cf93505e1525faea7ec633b978928f26a33075a6f788018337fda59f532726805a4901f02d4024ba0435c96ccc2e804d5f7ecce78f4c440641ba06b86b5762bafb0f0679db6679919c568faacc8465b986f8f0e498d58f000aeb9fa0895c910dff812214a22ea2813a4443aff5b116e684ff4936b423442edd4367de7a5a054733e88fbe0ad79b819b4f4cfa1d0cbf9f5140d8498e61a5b73695ab1f7fb8b8e9bfa717607389941e6b76f376d5ca3bb2cfa7f030d4e4d64071e80eef91f170d681ab8c392ba2558e08f342ba2f255584b89f1e2fe5aebd7b596d110652f6bf164e9d349bb69c9189b0de56bc523791c6c50678236b6122ac97f5c1e14d9d23daa3d68e422dcadf1f1e5f0042beca158dccaf0918df2f68c66d78e4202d27eec4af3a12b319c5c350893013059d638cc2e73e7c50644348c85298583577a7a3e24f6586abec8f3578f5ff2b1820cbd832a4b19fafa80a5efba62602f6c713080f4c62b94f4547a3f62bd92a4139f0ebbde112ebacd5aa990896d026a9373ec4a04b5ea2a361cca1e5c365277ab445bca72af11386a97c00cdec80073dd26addf9d13109dd8161896530784d0e5f332390554d526ea5a67290f63b27b9c88bd8f220e51f6b6ad869ff9d6fda5ef9ea25d727e89237d96ec69386425722595a8ef2f17257b26497a2f8da3564575e89eaeba5e88af1ba0fe3f26c876c49ba3919603d97f9005f59dade66cde3891b8ffdffe7b138d0a8843f66c041585e6a34e7afff580e3300ff9e0b8ddbc705c045caca689bb84dcea216064b649d89d0d7ced238b22fe7542cabe6fa30a21187356a84f21800ac8a844d8ff26a7bf010d230d4ecb7dd435599882d8dd28238641a214536f68885f07a748ca27aad86bb0a1d693601f6678cafdb5f61d6b1382cfc3ef82c8607e040e7b5bfc8c3ea286a291504a189f9eae151bd345597ac09219945ac38186c84912a3efdccd21680f98062803b21f44d42a8d3476ac979608e765d3b6c0fb9574d2b4a6c5116f0f1b59be4a1e9c4c9eddb04c0994e8362e51f37691f9e994d0ea6536929c7fc5d7d4ed4533b436327d8abe9fe5bd08405770bcb7f0f3f8a669c17ffca6301933b54ad7274db0139d7f889c8042eb78ad991e9ef1bd22b36a6ce569cd0b5e6e8774b3d4a4d8bc2ecdef9b2b6c1cb632acafb02639e5265aeebd8a2a638aab31be903535c37624760fcf38a68b5901051eaeb31404c6725205e6e369b98511e575ec642eec51f56b3aa784cb46535a6d7e1cdce3ac2a7ede2f47cfce618d6792b4883a3c898db8cbe7c009e67dd82cdbb244abdb3aa095e1e38d63446466b8510cc2b5356bccf03eb577471c067f3d3a28b1de3d4dfaf61a81ac789af258456c079d3dbcb5074cccca972fc267643a802db8fed32b62bbef65abc85d9af25896488300e8b1702cb4371a76c2ba59a218e4c736513388a0f0b7e57eacba335877b66fe895f62ac80292b8116e9c21a1cbb26f5a7cefdd0eec636fd27d7dee6d79b06c4bcbedb93820a643f4dca4032131c4630c512e13a838f260e971b3dd1523cb82ddeb56b01fbf0af6b8ae5207f75e49095da1f43581d9d528fad0369d715947d92b309b1c3389678513b49c216bb643e09b6242494e687f77036b0edc28cb0cc4b6e52041887a219c182395ce01c4be454eb757c1c62abc942722ac6cd9b24c7b4515d840dc01a19b43dbb627c3a2ed7174965c987ad4d41efaabc068baf3545ff6653a917144e78e04e941d0f5a7cbe18e64a4733d09f5325d76bd2c6ecc7ee129789cc6601ee49f2f6678fc9c83816d09af8e4f9eed562ae3432376be4ad80f2388a668d65dec2447e29aa9d86ac28e30b1632e9ebf083fa241cf7d5c79d6b725afc3dd06058eaf5fd0606b67075f9ed77224cadb17006a5c8977775e4e63835b36a37269048fad147bc5a52e73b9379be9892f0663508ebc450400792d304526550615cfb6374cb4b81bae9431a45b6a7685dcde8c73467b9982091103e829d6101765e587b9420e37931d6d27cb90fdda9e5890e6a2ba318b6edcacfb4fe3fe36cf4b37765ad7963bed2c7fe8b874fc721b79e0da53caaf05bf41ee9042500197bb0092ad10f24e0be0de4c0a5d19b686cc5a682623eeee46b32b2c6907d086ce02765497c5f43ea1712f3758b7c0fc5dfee391b64023b9663480314b0ac972da343f08df9980db50291be4ac4109ad9893129f69d42ee753387a1098e00b882eee152cae47610c0828b650c51ef93a0ece51020747238dc045fe001c0ab2b196fd283c6fc5171c899e78502bc0b8df61e76ca4e3f9c2b1ba0f7c39c865205b5d119e0f0c78fbffec986fe94ded2abdb99b37b47541a9316c51eaac64e9e74261e1f40525a2756d50729f6de5ec7635f99338bf1ba4320b1180e7f523dce2ec75e16e3cee23d69efbb4eeb2b0e9f31bd049c059a933e68fd98c59379631771989f2a7db141104d81ea1a186c8860970b21a36676b801826e1c72fceaf25d45fdb5cf016bde0bbbbe3e4f2248761a2c82da336dacc9e28a54c687352224319beea12e6dbb9549f892891247fe304268225bfa9342216b3a3e0333ffc79bd0c7706a833a6e3bdd76ade7c3f1d685765c47f27d6e7af40d6a2f92abd0967f45941ef6158075313da795a042222891bfef8a0f4e582dda7eb241e392bf0c56f4f92614eb837b5945b72fccf5c75185165677a0d2b35a0f51660c2c32944075762377b04de6d29a4e49fd888667b371b0c996e8c1df87efa2e3730d78d9b57ebfa5341c8dc94406b04110d31e70b75acb1778269bee55d4ce87dcc4f2cedc82f94c195324ac94cb843578d448c231f368661ac5b8178229f1481a2cd12feca215c163f8f8db8eb1395ee1c5ff495f4236466840ec74e6f7229f78cc0bc6d6a43762bb6c9c4bd912baad0a4cfd8130cb548dc702fe24a7abe7556eaef4133102fcc906b1cd29f6117e2c35fcfbc67dd4ce972986e4d44f1ea8788e49bb224f24e968c8f9295dbe534e6f2c5d777291ea4557979ab56912822065f70413a6b637cc92064e9055cbe1137d790e04fdb926179bc07bdfbed64c3c0eeaa23630e7fa8ebb7e4e1cc9c25282ea44db965f8b4da94237bfb6de04285c54c7fce37daf32b0a573852a13f0564107bb976d609a940c9afc661d5d1f0cecd17a152df1a71b5eab453fb12101f0e07b1dff932e3457796a8970ea62cae4df39bbe6af8ba0eb8598fd9f12a4b833a8ed26257e17ec9b91a04c2e37b630cbe55695d4f25f93853e57515d61c5345cbf951350370b18848a43d54df7c95ebef3bb6297c95d33f5e2f34dfda125b84657707293538bc83658cb7c7fc666d0f955dfb45641588616727828f535a736e44b62bc1b659239e82710f7251983136459153eb8de942e005c3c9a255ed0cd0ec8c9a52333585d30a32fbf89a5d0df876a6ab0d638c9bdc882d70a1b1701f9691c90d3ab2287e56ea69651e4e9ee98d4b4495aecb2f6b20b761d7d635caf43ef525ecd360b03e8ef3d1717094c7b6050b50e5ee5731ec5433bd402f62718bd0b507232b7a09c99c317ed1bb964557ba99032a8d77dbe1752c7a52994ff850cd32c840c9d44c3dd4996e22810b7997e5fd02cc840cf0ef65f851c6b5d38a636d55ec057684133a88262d368fc03f0f4e2def1fc89e9551fac53fda995994f1218e5933f9be170d93635682cf712dbde06242d4f77b93647e755baf9aa17fdcd149f7ff3ceb8d3e92ec38996ec51c8c97c8c10cd72650499adfeed478e388e0fa0a50e40e373b82ed5c061cbc2344d5ab88fdafa9f33b16ce5a54b8c411295fbde1a8d5f57764f42995a8eaeb747a6ba2e46fb53d3cf5c22f2b01f554be7bfedbe68eb1dbf39887de0cf9898ecd9bf9847a6c4e0d2f59fbfeb664fd29d72ef449d0167121fbeda66cc290375d691090e71cdddae44985683e96e097e25eb04125bdbc1e576c87d40ba8603e45e8020d14938a8a98934082a2bc8f36d42a8b32b46e36284c1d82abaa547a518ba23976be2ace464fd7880a05678d7ff44389a6b802fcb15793fe22afb527af1b0b6021f2ecd0c01183167358ed2632475f8ce5dcd16e0507b28fbcebb1e2b1085f1be757d12b8dbb1fe85870616f1f3e35ad965ff61dfd1cf1adb6cf28f11ee764c58ebb6186388843c9ec18267772011e5109fe1b2b0998e5abcabc5c9b4b6ed942a58e5c0f8d0a76e1cd93349e9c31cf6cb39fd4a9a2120f3e78bc326aa3205591682dd85e4d324054eb741c7b273a373d3f5912e1cd31e65ae353a5f4f6536743eea3f9c66228e103da97d6256e69ccea0d2e4b5d906bd92fe16491eac08cf654d9ec8e2fd207730058d1ae5bdd3e423bc9c213cd74bdccec712c7e4ec031379e19ec4d19729199d9dc22b146765cb44cf7b1cd2bd198f1c14213e519c6a63e1ded3e9d9a014985448b3516410bd532773159ba4aa5128459586161c84b370f81bc5eac7e8584857701334c2b0803d2a56fcf1282c7cfeb9c8f6be422ad4d9e26e90c2b1f1c96fd2408e653346022465cb4e9cc7d8c4b28c4db8b8bd49ebb73bd6af8590e9926a15e7b0e3fe39f43cfa5defd4c9dde1a7a71dcff29a345023c7cea137340040b4c5a332ce338cd6cd941a8e838f45b10c4831d51846939ce727e1a90ae7594f9b87b8b6e6ded265732e25b898aeb87ece89b3952a3f83e7ad76186a2ac116c6e3aa1905a2c885a685e769a0bf5187249b918838a4a20c36c5110cccf7be8cf6f2bbb80e30ee7f9ffc728713ab75bce677ee091d3020d0bdf8b5743b0f9a2ff6e164b77aa1c0a47bdc6f33c462cbed33952849a8df540704a07e9fde93fd0b24185a199633d1585f8fc2d0e2ac0a1be06d46535c1b3903a325090a8227b19579732f8d1aad0062e5a28a303538f244a8093b851ec8fa660e990a68069dd7023248147ec0f9c3c422c4fc483fb5f98a597f77a8a1675420b5cfb7f73dc32970825976ea1285348fac33bbfd5d05ca9fe6ce540bc6fb5ef747f0f7da154d5736e75ae39a81ae981707077abb8b3532b8092ce7539f08cfa08ab8c6d59ac07e83339daee3b252bbd2cb44b1a49bae5016be60973e6928405f7f4d52a8f5cd985396d8886eb3999a686579262aeea3e0c5cdd51e8442e9cae51821b48edf45f39e9e610fd6815bfdedc7369f5bc755c3fcc4065c2f5c98ac5cc5d8aeb7751a89ae683208b68726a9175e926907915fe378191f3d5ba1e00f18374858dc5da250cea09c5dd976d81633b5137b386ce95da83a19096096cb9c6f9b4266677225e11bb116ea409c2a5db44ae39734e25ca62fd1268c5defdd1fc99df798b128855ca6d2abfa7596281d6d9be8aa9171ad993bc6880049e8e7da513f7bd266bb48e4dbb8ee67ed4071acc94fb5b6671bdcf2737426904d1e558cfedba2bb294ed861b77dd7ce7f1c7f2b0d63542bda4637cb2b304edcd0180763c97eda3f4ae1d2e0a9866896ac848d948b7f2c9e05fca05dfb16622bc4f1ad4ee38641c6bcc8dbdb25a094e3576c161ce197e6cee7669877adcef3f777b392e385108436df53bdc27c155e8576a3f44ef5774f65426e1476a1a4bb52b08dbf62048db981f42f41ad93c62f6db827569d7ef860a2a70762d01994aedf8c0bbc18ab699a994525bfc796fdc434b5b48b0453a507198eb526da0ca503ea153181613490e46abc58c52db5923f25230dc455f2763efa8bc702b35532b0a08b4ffc2e2d170cbe38c2c42506a99902235ee68742644c3417bafe0b8a0fe3ac55adf4a8d5a59c14513a13340f0e202f2531816d5cb84d3aa91af5bcddab3935927496a71e85e2c35e143c67b5aef049f92e37cb415d74d43c7ee598463f7a3ad66ffbf4dcb9d5f660bc749a1492cc8c956a3da2c3c191abc6a8207b5689b4f4dc17095c5a2d07646a92eaa1fbea2c62873fc3e7cade5396a467bb60dde8f17492d8fd8f573953566958dfd0ce25ac6978f9ac3a77b9f5378da87b3abdd6e8275e92f04673d3ff58cb20805bb60b94e4d7b04967119284457b4a80c1c180e2fc19581f8fc866d4a4605801ab6d6d0c40600966107ed5a563876e200bd07004eecd4d259b85032880f1b53f1e5d50270d7652622d6c0fe75c194d4f121a091d5693ddfae1e6e3be042f7788e743105522e4b87e9ff4b9c1595963560c567a86c47b3eb429615de97847c99377a7c2af5712745756deac6965bedb44bab680c98a5e1452d686f3345308683ee950959ddb590d0246a2e1606f656d8a0a1fb6182ab531a3ef71e65bdb0f9bae6a3635806715b86ec32773a38dfd4e1381d20ca4b903da38ac1f29159b400b7ff72790277ac6e0521d4251c1a7d91e649b43a66a9a53dfec782450f734e1f32da9c56819879c1dca684232b8b960a746860e43dd8cead29aa0993a1008b9c85d56211671a946a3f17ba239b04373eac13e6f2129aac680076e5445dff6aaabe0ccf84738338dea11bf4d1032add6a935a3052ba4a075b6becf9d3cbb7b1fffa68aec26b57ef9b7c299e463c8b6897f9b6145723da54a5b49a4c45c5cc8a8e673324c7dc218831452c032a895f1ca55ae4c39c3a6778d0e7fb1a0795564b08219b90bdf7de524a29659229f1089e0951093c62c4e04b0d927ee85a9d3f0f79e183cf9e87bc50ea280edd5c175d6cc9310ec611d66dcb0a4f59ad16f3f4128e502a9322518cde5109538c405d330296ae3d1a11f934e969255f67e86213b3656f0d761fbbc83a325f4ad974ce2842f532ebe302b80e0799ed7a3673e1f510f3907a58fdde0b62181629b55fadb5933431be94f24a1acdb139bdfe4e07724e1330fd0c000fe49452d21e49860ca34fb97d32fa6c70a357b82d5d38e7fc396d300e174ff915d95e6ed178477bc8d46f5a7e31f6b700c6c12ed445dfd24539636f3123ebc7476715d28c71ce39e72ca2e3e3fce252ebb164ab4599b295724ed6373b0ca22aadd90f84005844c9a215871ce12c5a0e203accc3804dd32588565eca96f2a64fe8d789f34df36a5134e8964ab93665ca6f3a55512b1ade2ab2589feb073fcb7df0b33e978c1371eaac8f1b64397519af296fb59261cd9d9faaaf9b68a1d5a08d0667bc8e8581cc09a10b39cb101532b082078ab47064cac4ab821f566e99cdd634d42f48370f02b7a731a89b740ed670379161648d11c844ce412d1da9304cf2d3983ced697089909651ab75a59452ca19a6d5e230d246063c4f7b2610174384c430da379734485d7a93c9ec699004a7f10baf0d5f7d6e3f12be4904d35007800cae8d193c75cd2b13880b2d53894c6a27b6c374980e93446592942281fa75fb85cd9ecca3944942a944ca14b64ba5bbf5d53bd7aa974283d43bef042cbafa63abe1aaeed6f8b84195375383b49968c87c61d7b249d2723996a9c3849136914ad3d048254b77a34ac7f212d4f0b02604653cf495db9a1a5f5803d2f842d0435f7d61ab99545f78df3653d3509723c82411beb06b7d61eb531388faea0baf540294a54159a444899256eb5a6badb5f2b32f44f2492e0d522099b403a22f888aee4cad32191a9f2c9259643c6904c4a5bef00265134826ede00b4934818e9e7acbad4f202953a854e957d6afa029d4af1451bf54d24602ddb05332c4b32e91fa1536d3f7eb3a7549248ba4e6d607ffca559e6be5fc2a09446b7ce1a5f1859dcc17b64e1328637d216769a66e6a3132092ae54d59e7a33ca6489df35c88d4378f1ba30bd928f4849cd03613877a0a5dcb376b8d68f401a200f2a2096bbc75bbf4b74e7e8548bd1ea14f3f1e3e78210a8824471a68d2bbdb338e59957ebd9db775baf478e7c6e825de8860cb6fa2a474614d8db4b9b7eb5aad293920f3e5371b047bec7c7b627838a1ee694bba1fba2c8c96e4a9df6461726461aacfea84cb6fdd6f9b77dec9eb241e3ef070824493983c53a413bc131aa4bf7d370dd294cdc9a9b3dae6324d7bc734edb6bbf1f423a2b9b53c9c58ce045c5ef36d738b65b1ab7cc6c3877880d960d57a6a0e62b42cb12a8c54115ba48ad0aa601bd9b546c79c0ec65abb9df942777be92a6318d52860d22a1b80b56aecfd6c77692336db9905e3082c3ac840830e5c6ca1a5a8a7110c8012c31254d070858a262d429b18491c746f195adc208a510e5974f8610a6b64a5fcd041952068d08320189eb416a759c40c6e806142486207a01a8c68c2cb0e9aa05064338a0a517c305ac19618aaf0c1cdf57e9c20a5621812378a1b80a605038956fba5f13ca4c5c96bcf435a70b84aaa1a30176fccf0905e349ec1616943ed95dee556d781ee92a6e6c74d974e05491371505dba98143b8229a2e3ca07a2fa992287223a3e469f1db3c882b8d7fb0b86f9fd5a36306c08da4dbc5ec0542f4d31892e8b3fa4e586246a3c0f6d11e6bbe7a12d946c159c621cec374ac6c17eef121acff84f17fd4a9ae6119fc1b483ed5d8b399fa1636723bab9825422d1ebe7b26ec174934e3ae91cc34408195c30f4240c2938d37f489b1a2060e97942c8054c63e04cafd111393a67cd145c207dfdc2c983d8e4a78eeffa69d505599665f76e9d0c8d1ad16b644e4326439d384e06c5b236343e0d48e6e3e638d728e57238ad6eabd3ea0be75314f8e5c7db530e85f2ce0b77be73ed6eac6ee7a927e5ca0ba3a33ce52a550a65f428bf919dd7d90d85fa3696acc44a2c59e9e4cc51ae3a2bf9900880d2458e730f6cde0a0d7658258c4819a0513a1d5fdf9b1384f44bf2f8f9ad7a2bd27cf0773795ae3dfed0544c74b243b580e840215287b43139b68c1c638c604ddbb4c0c3c3c38353a5741bfd8ad4c3bc70a3985399757bf6b56b5ec32d8c5ac67ed33bcf9752f1e255623a152bdf02a20b5b3aa68d6df3969143813f7e9be61b28692695ee6e697dc67a33dca8d5e6d69ef588c55a6bad4eab53afdf16c6239933176366bd3de6f67853a2a34e3f4eea2272e468339986ce70f25431d1f50c7843d6599dcce9b5ce38eb8c1209ca91861e270de754c9a0a31ece972176b78d4ee70dfcf4ebfd32f47e7e5302693c4329cd915b78e4c7d67136c9aaec7e5be18368cc99a39967be7961237de637f2944997996b944a4a51c86a5ba9f7decc4f9c945e91edb5af9b8807a854eadc3625a68572a3c1f9cf31697046263d5b16ddc9af873a1ae442467a6e49cc731e4fafc179a386eb3927c7711c87e23a2ec5719eea50cd711c77fda6fb729d4da950aa94a743d274df0fd4e6f7727e1dc3b0d3e9743a9d326de7372dbb7e23b17bed9d737aa5dd984cf59ca2c9403584095a4a29e3aa05dded976c95f021d8f9f8b982bc7f53b40f23bd0a0d0e6950880a89ee76b7df4abbce4b6244fb0c1e979e462eddddddf2eb1722f92297981445b791d1b557c7bc7eb127dcbcd884c947312f9c5e6c62bdd8b3f31c3f36b1282ec7fa9f78dc1b7f67ae6fd42f7369902a3575d417d62481a0c7a41e252bb4bbdaa8480b62b858a24286a89081da421aa4493149a8c7a8a72937eddaaab5aabc94d7b550adb56291cb532f52d24b9ada26e574b3596a9b9598579234d4555e4c9234d4579036a92f3269b43d22d6318cf3b81ceec8db76cc4fa8de79eba100e851de11faa71bc9619c9414935ed1a9ffb8275077aff10b2f918c98a4b58c0f1acf4c166afdc24c625e6badb5d2fa18f6ddb4e69dd0037eec2bd2e0f4ecf3408393842f5dc84c3fa5b4d0368cc34ee28f362be7e5e3916305a5bb1ee6d0d1e0cc509ff9567d36b8c9a0bb3e3ffb58d2ed7af1e687101d39d8d25a8f44cd65e4bc7461f75dcbc1292ca0f239ed598a5c886fbc370de59657c62f6ce53073ab15638c31fa51ebe808882425265b123f8ba1011cfbc45c73ee6dea495741b65aa1b70149bfd046dbe868969cf9e61d3dd4853a76b0741e68ef157624a5d26b0ed75ecc6216db6283d316de42f75e6b4fcf435d80a8b0e13365b4b6e01000b985bdd8bd0eb882840b804044951d78d842258a2d5896278ab25cc145cf0d45f070a3596b81ecc0ca194cc074c1a4055f74718ae28b25ee0a9a9f2751b48001972d49d8ee2e43b45f053c0f7169e2b234c3599a9939477abbe4f755dbae16fefb05164b31eac2ee79761416bda4bf4e62e4f3cc737a93cd8a8e4ac7e2221a5badac6d2e67ab915b0da6a3fae0302c6503d3501741f6a0e1329fd61eca3596c78f659e4aa598a9a7fc599b5f2e4704f71897f08ef834dac0afd58b55e37e0d67b631c16b383d9236267cb184119cfbd591e9fb6c955577b7356a10000e0037020000542a6b5da5ea96089d35b246ddb556a56a6b34bbfb7305e96e8aaff2d7545e6cc2bcb8f479189754fea93e2f32596cebfb2be70ebb566bb55a79d26f83961bb4d66fda96b0ea1509b3575ec208238c30c20ae5fd39ed569d0d77b91637f7ff30a3d3c9579f11cadb51282e273235481ddb542a15b6a954abd56ab5f2e6725635edadbcdb200ae591eb211de5797b1c3fb6d4c4799e7739d7e4667d48ef29d2c604a77ebf19d7e2149929339e8c07c093f11b29e3b5dcfaf44af048f0e81100bc70867149483f8c4be2c986aba3e1c90859c23bf8391456a9944aa55285ddaf585eb8c2b35ce5d1a32de59bb7f3ac94af527e235160376ddae0b6b1582c95eae306c3bb798e465733745b4dfb5bd0aa206dfa93f9581e3f96af3e96ab3e6ac3502f9ed223a63a60ea1dddc17339295fb98c8ceae80b8fd097f1966b325ecb4b01069d8c10bf697a74ebf75d9e065b9e0de35d2596a7415ae359ce1c901a6fc5b4bcf8321e3f8df89a8cc7cf62b1582cd64791643cfee62c5350b7796899e811e3d8c8e86a3c0ff1a0e7c3069abf6d5b8e1b333636dfdac632c9d92f966f7e35bbb518f08c80679a8bb5073645b24cd28626d59e1a10645259261be6a93797c3fae8d152173650034de9579526ea9717311f76d1534f6148bf361b9be3a94de2f1d468e559625295517a96b3582f2c79d60b3dcfb22c2f94465f6534da3eb6cad3cdb34d0dd2a12f529ee5ab95b37c70b0c39497f1958f669718510752b2494f9ba85a4a83f4455b22a43c4c3d0b7b964766b1beb008f82bb754381dd667adac3e1b5433a623428fc4a7633a222b3f129fe54eb97834a9c11a33bac8dd929e5437bdead201b9663909b07ce59503b27216cb572b5f7ded2366e5de08e2afbefe01a36379488f365fd934103387b7a3ab2e9d256a903a8b93c0ca659c724070b043cfcbf8ca23a7b372191997f9da474c8354e6eb9f06293febb3420d52df36aec7517c0b832e36fd91178d92e868b8d3f09b5e71e92c0d2f66095f58f26191d8f4d6abb33c4b06e3a06e39bbda41a7692b9bf0d2239687adcdc1df8ea4a66ddbe69bc7c8e558a17eb1fab5b98c7b32ce1ccb6fda06b50de38433093da248232ce986c640fa23fd2a0f2d9365e21dfd14b5f23a725bcd51e7d469b7fa4250f51db1beb0455ff535504fb772955ba67ed5707a695cb073eece6b7cf4a8411a1f0a896ef51161f9ca555fc87295cb78e1e6f588ac15cb2513e5011d8596ca53df98427ac4ba96e9a90fe9df3e6dc3f1084b22a121f082a2a12d42626c3c0f25d160cbd2f3d016a40fb131be93b4fcd01626435b280d7dc1b30d71417a1ccf435ca4fc0d42372459f2ed18d3b7b7a4a494521a8bb8f6b16c7450832d659024aa42a581c434d83cdfd30cc6d1597428293a310db6e4f9964a9af81c290589e0fcad2c4fc3f9659c284c15a624a32a4961584daf5a7a9d1fa4475179cef93737f299a2041444c474f49893e7f2d6ca674baff324cb5359fa765709a10b2b135d7871f084e7af52bfc29bb4d42fea4978b8f48b8776b0a45ffd0afbe895c406b01269c33840d286a75491368cd33f6d3371daef11ef68d2af24fd62ef0bad8f7fe15d52c2175e2312bef06601c0175a29df36bed056717da11533c2175e9e6fd781c2a45f3307cf2f82a70385099426509a4071d2af69c5f3b73c1d284ea0f840f1c9d2af69f4fc353c9d9f2c47475cfa3571f0fc343c9d1f2e4a4a56fa35ab787e194fe7c74a50d08f50bfe60d9e9fe5e9fc08fd10fd10fd34f56b163dffcad3f969fa09f313e6874abfa60d9e5fe5e9fc50f9a9f253e567a95f938ae74f793a3f4b3f4c3f4c3f48fd9a533c7fe7e9fc20fd24fd24fd14f56b123d3fcad3f929fa31fa31a2d2af29c5f39f3c9d2754aa5441ead71c7a7eced379829494d4d4af89e5f9374fe74953983045fd9a423a4f8a8c8c9cf46b46f1fcd5d379e2c4c7474abf660d9e7f7a3a4fa44c99c2a55ff3caf35f4fe7091725a59f7ecda0e7b79ece931f20202bfd9a503cbfe6e93cb1121424d4af49039d274244444bfd9a4f3cbff4749e2c3131e93cc9d2af69e59f6469905fe7c9d133a7f3e4a86513efe0709ae1a48fa2921e599b549f2ae6dbeb146cd33e567cc7e0e8db2b52dbb45722d8a6abc89fd6952a552e976ea9367d7bbdd9f5cc5aab2469ba5128d99507abb58412aa1952866f8fcd05d3b47711e3bbc17c7b23797d9403db98e0331ed61fbeeb93ff3cac457cfb559236267c35054cd3de9586ef00e0d07db587efa30691aee82a8f2a089df615d9aeb777d2d2b73351932c1f830eab3c9aab5ecb2c5109aa50a0716cf432bf912508faec8b4d452cd147310dce2461c5261a268c49280fcbbbabd44adfdca0521593c4f27c3b65923695a9699ac334134f1f35d8fd3664e8c23ee2f106237fec4e7e471893f70d2658095b1a0209564251791b435458817714e0d93987671663a763dbd0518a30927cf43e8a1488f3f0f06021a59432ca44c1a2882235531e6992a509388aa62e4210c160891e1439d10122c62c2922092619986a601284d016155481c589262c200350175b58908314211c7e14e1c4164978a0a2072666f005081a84ce2852c20486206870060f65e80084951caad400fa411333781883c4151c7444f182e80a1eb4d4d003133b50f81411f4c40a11414308e182a0284318030740a862891d1e90a0685262060e6396da0b5fc1c4982d4a61a4b060890ea305114c01cce0a10c297000238b294a44a0872c3c31c0c005100fe1107030858f1330402451d9f179f282339eb0200a17637a245086122bba18e3041538cc242a90040d37203921030f4f8468c222861341b0e00a249040a1090e3d5caa108229063d010833840aa818420a2fb890015b6183144d082165cb0f578868819327889ef0c20a9639e50a160819ed2009099e2f2d8857c41eb014114c3a6c0982162634c0095b5f831a831d1aa4f8590286132cc8b0a1f5591d3c6e7658d09382a520ac78e14205386177433c22a905948a494cf47fc487a0111f7290940ff9a8880f99290a25e2c3e803f461ac02043166e084132fc06cb90209295482b0f4832360d081173047337039e241909107acb8818b277e8a84f005a7bf90953620a465081f187ce0831e1cee5205920c6268902487241e2da8a2850d4d4310b3040e1de286339e886189872b5b74c0894952c438b242054de4803382299e1882124c2c61441235506821041c886a00420c38f14b11145edc10441637d80027fa0ad2e68422b87c31831945dca00738d14b206d7204859105961bc66c01039cd8811c7ee0450b21144111840f74a1610833b808420b3070a2ec2a060906ce31e104511549864022094ea823061d65d870a569cb10a0d88213fd3e7391084c7ff9f8c3134694149041c4d10f38d16ff49614f10a0ae5631830ca68a20c189e1061840c9a68e0c18f17285970a2b7883a4bf4d69066812f73761f24f10113dff97bb17ba50f9acb0248220fa6e0648e0157740330e1203100138ee65d49a303c65117578098401104ce8e136378f0b90113525c49c2647cd96106627ee041054c27d06014031f2078e9f28599868c2c0f3e0f914104194dcf436470791ccf434c62be4b717be482d8bfcc7788a9898db01a1770f93981c6e94efaf6e9dae4aa6b755ba263c50634cfcb1c3b74618e231dcd41476dd365a069649d5e8e06a5df803772f44bba8eb6a9a9d2e408297e5022074d38d26f382d5d8e1386f48b8df888cf8c23723e9abaeae98a0cae7e3ee2bb80a8bebaeaeb67249ef1f4eb229688028dd3e4fb6ba1c18e0d884f047ddf8e0e43003e7ab2fb0b18beb99c66fa25bf26d2a671e4473fff5a4674fc61eb254d4feffeca075d6cf7a0b6a2f14c0f8a5ee5379ae888b4ab9cdb555ff4ae0762be73956bd225e7e3c4537a59fa1658e0f9f8d607077d4a53799d731cc7712cb0a04449c84a1e90f132d02023c9785884f52a671c1bbd73ca0191f1ee0b552ef3454ff32eecbaaef39b4aa5522e53cca55ca6fb5c38721fe5e177f189749e0b47ec902a84a6f0a341eb27dce8e0e1b9e0820b47e44cbb0ffe56b4416fccf7c10f3668dd8523f67df0e768d0fa91fa3eac9360d485ac648477b880ac9c73173aa7e1985b2f41bf42966f6efd08ef60b9f522fd22d2f9caadb3d002ef886f5d04bc0365e4855f590de519894fc3eb1ef34a38fdca4f277fcc830009bf72124878ad83ce883c8f79118aef3c179007fcca1ff02be7bc07bcc6321edf95f2fef98dd4f1d0184b3e3aca9d3ccb7be94f8e1aea01d29f1ce556b35be6f96b9e3fcbc32e95f2c9e5a4fcb2beb0ebbeb0f59705a6b17e6fe69a67298f9f5fa5fa7a9c54288ffb95f2f048bf4cf78545be537921eb551e391f46e2192fa39a7e2353a14744f515613dca3947592e487494cb782a47793d4edece7945585ea3e3adb54644da51be7961fb26817694af342ea773edcab8f411521ecac8a85c4647e544645a2a6fb5eefdaeca55aefaee949e01ebd6dfbaea6bc163c12bd283ae3a2b456767a15be817bf6bdab675d6552a9575954f2e47a5f294b66d5bbffa9572ebacea2abf699952b9ca59e55da14ee5f3bb0dca2d484fe7bed07301e934e6585fb8f3ac1c19efbc50e6ebd1f98d4c799bb3bc957740547e72d51716619dfca63b9497791e08581f16f9222cd673f49e2e8a40860d3e41496a7c60a0d2863b3f5d4371b4b132c76f452d629411e350885896456c4e9965dd0a6dfdda6fee4011d0d3b5c79a2979f2316f88ce2d95d73c8c4ab248e8263162529f5f68fd6e554af6d5e32131909e7aa9d75a8ca239ebdd381f96cbc1bc723e7e2805a2562e46a7f8d048497dbad7b64fbbd4a3522a367d3e86459e3712a178661c1cc605b18e728c03721de5b37ad7a997511ffa43811ab43ed44a8392fa34287f360f25f5d9a490901192926ce259d2e4678a15a22c494bfdea979db58dda0ca957bf9c8f4a339f7ecd9fb6e9a4f4ab4ef191460d12358d8c1f4a20ffe932d2fdfcdc625e98f9955c0ef532afde75e67adcec8a2ea4492c17e402a99e7d218d6f8dbaeb362909554297b44de7d22993b69159a4501259d492a8413b801c74fc5a8d95bb53f8c24fea5ac7f9494954f4d2076045174a20a029d24abf98879692fcdb834e3a7c61fa99e7a12f456fe5f9f90a22a406513488461aa39a903651a869a2875deb25d7a3911aac0942e7a1ae74e10d5b1f6d3497937eb2ab1e91e947e2d7cc2d91ccab09d6b38c52ea988d717e1cb92b8d4c4f3c9735155cd0857c14c69f3945d23995289d505d2b2a699ad9b303a5b3c95d227dc69f4f6d4e3eb78fa0f4c0f4d3773a615352cae534adb5d2dab44aea99043ddbb8f678eed0d9cb0c32785bcfd9e9b47d48bf4748a796edb4944e4a2702789ceeb0de4e79c7f576be52f25b23f4c60de9a18bab4b2ea77e2efe825497ae2140872eb2e7920e3ef5fa810d46077f7ef4c2f9f106e350b291bb2d3db1979eef259e8eadc883977e67e40644a578802f270611f5548a0d88538a6f29a59441d2299723a3609bb9d9e0db3f661c58ba30d617d1d73518951af4d1814fa392773b42f95449d2486e493c80f430bee64b3d6fad2b755f78afd2e98b424b64e6db17b674cd6e63bca44a4c23fd6e3bf8997e611b8979187ff0d2fbd3b074d5c348b94fe1ce679e0b11936fb9803f3d22a17e7e5129ecc21959ca53f8c2f76041f0f0d1dd66f2ccf58c4a3c1fbd4be124000170e9d7ea5480a13096b08391f4ec4c030ca2183b863b1d8f14b13133450ba0d838aa493c6859c177921629a5ac47524a195db616227ac31135106901e716ac23dd3cdd474e8f1a0b29a5947dd4524ad95aa49452761f492965f71691690a81030ddf4c5a66679194844511d69559c8c823b5b87225090a18b0884db3071e6a884d4759c8291d032a39c8294742b1080ba15410c5162c8c7c206ac2e88802c5a0241950204b145590c4174b64b4840c5b181d1db1d766c123a544e8098f29b56029a087a23058591401b388576851332b908e8787e78a23cd8a269a1c1d25655844c922e9a88a15227ca87254a7441f2322ea94d9476a57b360a293932a3e60221bfd3a32837878783e6a4163133c3ca14147595015351b6311058b22362d8e6a6e2cc249191651b0b84b222a52a71e9db99e29ecf40c6470add6565b2553327852a6cc3c04b08b3186194de37eddf9d258e31873b0427d0e8d51f4f363a6df955f6b0c29cfcf1f8d063046e4f1c126e398f21cf44b97b5021b8c83a3f7b561837748b7d134ed5deba45de7ce47faf4047446fa0d168a805106a210324485084ceea2f14c18b921166b01bc433a8e6737e101f02cc3362cae47cb58fb65b3c6154da31ef65a6f74a3b46e777a3990b4ec94f54bdbfe13aa7673ac35444bd2806127ef88ced6b16d866d98e7dd3a5611168d1386d96c4a49d385fef052c899bdb574075d7abc5e0a1c10fffacd7620dfcbd73af9b9987451cec8f344bf5935e6b85f461b1366666666666666666666666666666666666666669613961396139613d60fcccccccc9dfbfc42f0a9910927eeb9c11fbae8cdb551bf64641442db6cdca04c899ab7d6d6b1101d3c6aa60c76a34498679db395db302e07aba7cbe560b5d6ca79d56e75db2c4a3ba5baed042c8e8a021667e550bacdb9ed3223e03ae79d38df366bef6329cdada67db7f334b7b5827fa3ca6346c0f51b89b23e378d3bd57ada381288e8421e7fab6f57d3b61cecab65203d0f9591247b1e0a53c6472069d342abf396d7841108e8af6bac1e3a212adcdb75ad963b08d6d4842c481ad9c33e0b8c43ba093974975ad76ae45a2b3db980d0bf2eff7ee10b6fbf22d1694c424911128325057dc60a322c4cb09d19a4101223085578c1e5055368d0810e3e5b8cf98982e584a508169d82850133c37411660b2f56f8ebf30b6bad5e2d7f61473fbfde11fadc59bf6eadd73be79c5ebfc992263c322797eb333794ee0292bdfc8ca03e8e607e741790e8f3f163c6516f64f43b7bce39dba59472ce39e79c73ce4929a5b4042310e81b776a91cba137b4df9d99455248f991420a93a120145571031683179242cf15cd8523f7a3df3762cf18c3f3ed36984fbfb7eb74fc498977e8f8e9d2d269be79cd3e97fc5c1273f90dc954f09dd9af659e8b9d2372b173be838384331f82651f1223f81b9239f721c93e50d2cccc25cd8cee83df8516e3886efd4adfd8bbae21d9775d4332c73cfbee4759ca6bfbeb57236950ddf4a766bb178cce8c83799d973aa2e377a53e4a0feffd5c33bcff0db948aeefe0789857e39a3a5c73ce6fc8f5cc9160df0e0e5f495371666ae83ac6315df24c955c34166b355fca286528a594dc21bb94524ac95376ed9121222327bd4e3920f2dbe6acb5b257e7ec68999ee6e751ce2358455891b6947266868b49a59452d2a775b6ecb945636da3de7c6d9312d8b82044380e08ebb4514f6eda09d5d5e961d5320e48c52c8a48eda8c7315ecb05d9c057a71e07c49f084d313dd1487d389197563bed0e4cae0b3aac063b0446c9978e3e0f8189e12f53d7cf436052f061f7f37e27fc4861eb2a1d58d3b4843581f9f6db94e537a32bfda24123a5cc94294b2edebacce18f548f2fb92035be7e2109deca5869c84cca6beb941896611817b4a9f45c58bbebba6cbbab36a573d229bde99a94f46b9d2923c6844cd390b652d9f762f7f660337e4e59674e21097e7eb60ce66ee6ee1b3b0735c6d9b73b94b652d9f762f7a25091a37496b3a5bcb652965386f13de99af42b27cfc99c805348029a032d7617c3ead255a77465d8b571c6af51b604623acf844c23cfee5892cef67ce607c799d9ead655bb56ebb932ecc6aeb5da6d7a3a1a9442369a531d4d9303ccd2855b8ead8aae7d021287c5d3f133c7a7d880e641d94e7be95a6a9b1e6b868e1d14eada35157803fc41b7d47d815ab56cb4baa8c0a87c909abeb57725733d78e9a7d7a5cbf5b09f2b48757bc1ccfb85bde274aadb9b61db29d480d65ad4a436bd53b803e5ed37bd52230e0a8d79d8bbe86ada1de39c734623485e4a496594ac93511d39699442d435de3a8f2e1a5b3a92eba1e51bdd655d35ba6b46362239ba8ef438a3474e02f38bcd6105bebb73a3f4d2dd8d1543e7820592f5c776facf6ec9f930c0773bf7a723f9a577953e5db2ab9493721b41f2dddd55dfd8a36b96391f41b09f959febe99193c0c5381de935df9f539eb10a692b31ae8531ba0feef2d5b93a5f8f48752a81fadd6f36c8bf4363a4b2b5248dc679323cd1c4e68dc3dc051887fb50b039e3e06cd8950c68c902c88e9582ce4745f24286b3510a3037a48eb18e6d91ebc15d7a30961e06b8dfe68542feba966dd5b376da2a319dbf9df51ae5159d868dd9581997d389e9f819a73d3ab7b1b49138ecb75f36c786d3a36bda4adbc3eb317361aeb6eeba76cee8d6e3f8930bc26d9b6744bbe6b9da35c9f5e02e8ce50df0999d9c8f9abf9f0efde6ed2c8cb61ad34d8fb7fac5fe7ed304da8f507385e0c7f4ea2870084ac0c3c3c3f32228e1eb4744f3e99795a4a32e44a39be6859817c9b820d6078391440f4529301849f46083d75c277b8c9335cbbc661e6a8e659e4bab59d4aa8714f3cc73cdea2e5a5db66699c78f1941f236b31c835cb73a528642b2e8fdb2dc519ec20a58b7d142d17886ff4a06b8da7d985ea5e7b233daead2a6bbb2e92e6cbaebce68a311f9b5d620f39b93ebc00e530fdb2704e7dbf4e85d3007dde63de150d8910508b9e80ca53f22bf3695a6f264e78ba21fc8f085c8e784cd9b43618703cc7cc2d64a7cfd88540f41fd44504213d2bbe700201163db36effa75f26dab4e4f9eab6ea788249cbf39f542ce43cd43ea27cfc56deed2b2cd5dd876a246907c3d553722f9a256677444369f44ae87d32d73219218e2193846507f21c30942ffe4cd51a0071ce9cca92042111849f4500446124d70e46accca8c6e73c95dde057f8e08eae47cf2939f7c7239a71dcc0ba32b62f4e419917f91fcc9b1308bbe39f55c1ae6aecc553177458c9e3c23489e73cab911f95c7401d9fcfae6377d12f2dcc78c238c1f6e9e11b95e1dbb3b59ac42d032d7b67e699e65da0d72607a8b6d9a6644bee65add32975c4eb61372aeb9385937ee0b913ce7e1f4f0e49a57cfd52e764de9ae93ac9c6704c9df7a814ccd291704e593719c5cf350dfc90bb51b6a9c176a1e6aae79df48fe8cc8fd5c41ac4fb7dff4e975878b140c2d368b593bd4db457fd210f3307461aefbf5c8fed95df6eb917d641cecaefaf5c85efedf4823489e52eaecd16feedcd835e828b4d4b05161477896e28630bef53c0406882e84f0c35013d11fe079a88ca5573d0f815122066dfd0241eb89789529403eb1a7db8b4a1a8c3c1f4bd06a61bae42c360ccd000a33a860e2c1a19f0c7c03207a60a2499212610001677e2b489ae8851ca1a6a8840d16754deb18aa1119000008c314002028100a074422a1402c26111561f914000c8a944e764c1948d32087511c838c3186000200008010430000912239138067b0794bd84c62a7457d723fe5be1ced678268b469027e8d97d9bffa27988d9b6386569b4cf6099e8b1f9b7fad69649d91318f9d117c8e007c9a6e806c02b9a2f9e4cbfba27572bcb493b968e2b473b05fe0c7f28f376b7e463938230a5d261513585178e3bf73cae74508fad28cf5d287167e9080beccf82df8564572265b14ca3803aa935644c5146fa3961307fbc8f24f4233bfd7020fe76907f2e60521674d41076bf07b043baae56d06cd0ba9b117d58689bc8a1ccf27671918842660613f28e05f8329663a3be7f526b6776ac0500a6faf2873d30e365363d318cc9f7eb480a25ae7e43476ce29d1e446fa84a5114b598a7bf78f3363322beb229957391eb14136d1dc1c323695d7227241669057a2f6a962dbf68b18abf68d79f5a65888023e6bb0fcdc6e0c06845856246bb5aa1e0d7847d1e129171d9ff22a76e78ec4f18d189aa1c3c0df9c38e26dd21fc3cda43624439160d5760ffb8aa43cd071570dcc4c0b4ce05893c10bb563fa5fc460abda5789c867d5d499f2237c3188aeb81ad015aea9a47034a44f5c5349e29e95168e067a89332b553853c9c499952adcaa54e2ce4a15aea92471cd4a0ad75492386aa5856b2a49dcb3d2c231954a9c59a9c2a5a2a72bc16df69c9ffde0b70e8854747f9316196e7c3549d152ce8a6477be8aa4e8296745f26d74f582d01b957620cf11167ff35de4d5e3b748ca91f22492d1f8a7242d4f0917c9ee6e737e0d6c91b45379d6296e8472529c8a2c349e5352cb29e047965be6b9ffe7dcc74c63c73b4bb078aa7684d4e36d23989bea2442686c38492d0dee56d3fe4cf84de6e2e722e937a55a24df655449a24b1ff2297d1e7852bf29d446d6ad4d75fc4ce313a2fa33d4a2c88e19aa9bd35c43e46207a40d2bb7d38ce20d82a83508d94904b9d3ef81a15f58a6c102d0c3a7cc10826f87876040ed02a5a2fa8a83e97aec3e1167764ee6ddb820603132776a5fc2902dd223febf34ba9a0ce0f32fb1b6e6b409f1cde1134068764c02526f007a7330798c436c798da75a824cf3049af55a29ca3e22dfa91a01e16a2ab6f7a60d8ad9f53f08c757b8fe615a9fedb13d2eee5897fb37fa5fbfdfe604ddcb4e33d3d2a5990b9cde42077c8ef6c09e8e0858a8afed72f2c54ac47d1c40329be674c106767e147e47ee0e74563b852c8706b96360fec851dfd0893144e82ace30cf5086234758a2778da27617d1057584ae4fc04adb99bce1aa584e165ef0e43d05b8bc77866f7b5ecb540478a476acfefa72e66b3caf7bca8ef7805e06a6a55bf5182748de0e7fadae24b1f24c3f3bb67a5373d6d1d108289cc66281815e9045b0eed015871eef73c2a382f086942286d0812110481c4ae5e8dc13c6e3231e439aa5d0a5ff797f5afa5bbbabe7d26a464f35bb01d4cbb1303e8837188f2195d38ac14d7e9d1e7325d7093cb57f0d17f14442a3509aa13decb14dfb44d95a159785673db3c10a599c829d373b674a0c6000b0127b20d66b9185be54e4723dfb32578996604b605b94c5e8355bb9dac29c398c53cc85a7295fb82a287d228943e35a95b58e483f1907ec1b6a848e25ed887095f8fd6af0d39a0c552b5f85f3e8af2be2a1f5931537d02aece476a4838ccd83834506cd24949659e9088fe8ab20a8f93cf1172c8afcb33ec7c2b6864b4e7904fabd4e9b64e06222da849a7e95808a09b12d7794c282aba06bbc864c438ca97572449729424c66da13624bde80b7420bb8224cd8ce6c7f1cac893ba9a94e2a7b106163864c0a546a9dc23e04bdeb9d95248fec475f825a55c5a54b2d896b2e2b0078ec973a92eb2d4a27460e4da8f696a35ba2aa372d1e74fca4f19a4368c10599815b611f596419b7c7290b9043247aab50d440226fb46073581462179cea0d5b081dbc4991f75b080097d77054fcde99800ee8aa68268d6ded758878a04d4afe21cccd88558c61caaa818377a6fb5b566fd21f99c1bb6bdeb881482b15fb8d92c33367cd4a9b8926158100fc65d166e743c44d89d618455d2c1460a84bd55e99d33dc1b9116a88bbe150a01b98456fc0a60fa8c2fce1a5841e25e0438014b80c7ad2f06774ae8c4097ae8c87524a92f788ecbc463d2a8e2e61c4312bac096a05953a456241793be1fab094d07698ac5841c6a544f6c40ee48451d191d2cf9ca068c7a7261f0aa7e638b7a2f1e29af9707477cb1a99ed03b6d073848af2d6198da569fd5f9c9e2c08c7ffd2f34b1d2662844f54f5c2abf366dc4ce585e65f923fa8e328863bb7e0471e7edbdcc7bcdf056addf2b3ac886c75dddd34d2a607fb5b18364dee5935e8c3821e7a9f0940fdde4fcaaaa567434e78a90a78836674f0db35751f465e11c30d6b1d2d45c48d016a38e6b7ec4ad04551a76366cd9676444e23d149cfe3c021e4f8b0e79e61264cc0f85200e5217ea58c455369441a2cfb83c0fd4374844b3c14d8b5ae01be9d263d24540ad813078dbb9801aaf53f2afbf9962d21f5f4c317303cf2b0eb9b7109f9d73d654dc469ec568904b60b4f47338e9d9611db4caf35405b9b616498287f8e35ea63aa9e673bfd56c3ff0cf5470332c8794dcc1824463be68b19e313052a1a3d53e242a0220027b40981d8a146814ad6142f542496b34962b9f50a88c6f9ff46031a607e901bc1040ce28daf277be7dbe37705ebabd4130abb61e40e66241b1eae1d4a33d9513b9e80c0aa29e541e000e7fb5b48d321469a6981e7a415ab42a4ee5dfa2f5ade88c4f906771f20d60ce4f4e1ae4f39dd3ef145ae518638091a3ddbfa5b6e6d4be8b6349f053e4685da93d7d6fa5aa831c57b7c38511c101fdbb998e46a8796dc81cb0bd7b192147881b64cf7a3397577382605b2262afd91d6dbd22cc88097f9cfae4c6416366e13d00d28cd3fe45d4ef9a9c768a40ef89d94e5f8872a477778f7d768b1ae7ac01c6af1505033d4d61ee700bd908da7ac4f5c1398bacf28bf9c40cbfccfbe7c9e7092f949357854d0c553624a308a7e1cc28faf55666a0fc2e676dc384381814042b22c15ab3c656d5e33d18e28aa5556e527da873d94f3250e9bed7440dfc7deda00e2ab9315caeac107b4c664f70c82b31fca87a0c80db98869e6b43c6041aaa5339c27c5654c3144d2a149a9aa061289650d1feb03983caddb17fad74ce09ed02bf6ace605b45bfa3f2cb181c8cb0c91b0f8356342eec9b7104d53b8f457e190e9260d87a2622fa179c9110089b94ac5bc45f7b9f098e6ebaf503b8564077014196db50a30fa3c9a045afac1704bfbe679471883aa0f0f0f76b9afb72016c1e3a4c21c5c40846fd958103c72a447af961c5c66f1d7fa10030e5e629eb86017c3ed22114fe209afd9b69eb2f77b0e7c0de0759ba16903b78e365c2c0308280294e91ac976436f50fb89c681ab4bb65d11aa1a656115ff3d1ce2b08e5857da1a2f2ee1c608a99aa3309819ddcd50dc8d7e85f2234e9725e1af45ee017b4356d42c244f59eb63b97428328a1abd20427dd959efe6bbbac41e38a58e680b8cf75e9a1fc5ec86c4630d6c53f8441f6835579724f8c372eaf435a9572595616bf0b89b0df34b17df4858eba793c28d1d3d7705ab5be0e887addc6d5e993942822407434ea1212153aceaa8f969883ba8ca2d06856502c56866e77f7fbf95e153ed073991abadf418c02a07956ab2101c903ef396caaa5583d42f9eb5c2dc29654c55708921534904889b9a1469cc367d03d13e12e174a65952b28a07cd5e15a916adbb12d1550b7fa98e9862ab3ee05fd47082af567fd4d1c04c9a7e3d25ad154720edc274f92b26d0c374330eed6b8ced08fb800faf322df818dbab6bba47f0a1186fe0ad9b430f26830274358eaad7b7a3fab93a697bacc0721c8e0777e4faecedde4b5edb467d7f49b7a378572e753b9adb4d0dc4ddc2fb5916500297a0ef5f27c5152434de3625fa40e180738f6cd161b30ecae67d179aba4fe530aa8a5067b95422f9ea8b08c9e58425bed232ca2dade21eff926b06f341968aa555103ede4691ce059577a65bbbd0937034f8e897321c5ba0e847e4ccc85d0144e54eec8163b994f3cfc1f51f25b8dac1ab6695ae20fa5015bfd968d28a9f96ae443aa15e78dad8807af81a9e61408fec9259f896d8e6489a67d3aa84ebb0202668ffe71db6990d3801826fdece888f598395945e2b84a8d5d3b1d9d41df15310c0712097a7fa355ecf2963baf17c3ca5c479690864704c34d089e32b0ba6d8d7a2446d24f16f84cbf704c2fb9a8117a9e9a0fa48332b4e68544320607d86dadcb7053296f213ca753c3c0a05a6ff41b27fa0ffd166ed8ac0e58c61108ce53d32881b2ba8cacd3f80d0956aed6800213528757b28203d104cfffde69f85960d9776a89e0c05156a472debff8212e6388341dcc3cc1633649962c8efb2422e12e5ed32a4990cf113f19469d0720f4b1096ae33c31d98120d653ef59c076817de0dbc60d290d5729089682e45713760853c85f628c168756ad9ee1447ed0993f16fbbd9c64cee5296a6e81623e028e790ab650a6c28ddc6570b361cb54723918a1de5d24911847775dbdd693b2ca6a96c34211780b5a1346dc303c409c0dc2af33d599ed5f58e8031f5477ebfe39fbee146f6a3e04bf029e785db84e925355d32cfb598ab1ddc4d7be0f601e6121c6b823c5938a0d90c6246024624ca386c3fc2e006059c182c519157c5ea0802a21f61f262140d3d395c4068669ecfe014c2d849f72b92edc2b465ec1e701aaa2704e906621274d3320a1aa7f513515782eb788206aaddbaccf169233531c228a53444a7db4726ce5ab7321db953e53ca8ac95180326ef348c9355d474ed7bf3027c5d2f48dad7fa6827eb5dc29aa4762247c49b51b1fc1a054af1a32292146493e597bf520db61800a693bdd78c2248c2c84a6d9385136fd8ff45946f23aaef9bbd21fdab805d0ec073e7188d5d0d11219cb4c08f9e2001bee06a40de910f049f1c1a9038fd38bc553012fa3051277448280d9290daa3f5b2e9d1f83326db1161a90241c2dde156e16100714fea291eab8301d5a28f1ff6ab2b04960f752e72723f751e50023fd5a917c1ae87c0866f09225df3f744f2edca88d3c365214a57c6f5426c589e7f7a2f8db3edcb79e9b1512b926e66e2aa713774799ee3773b5780896ae26429ecc017f567c136badcf2f468844d820d1d74dd8ee1e145ce6c675ce3859f9171101153f8b8a971d019b8e322f373ee126b7ce3f8e84cdd5945f5e953ff3000424c2bafc33bac483b063c5b33ae4349a856bc0616c2fbae14e068433a2d780fa332e5c2650569004bc7f19c604f2a2e7f75f0275aeeec73a055496008c7d5731ffed9931ebca442d7b393fea74f9b3edc5f807462fdf4a2d14cca2799c662d500823efbc6d6b1d338cfa7988f44d25cb9b59d0241974c278ca0c0ddf600743bc6635ed8d2828673f3c981ad850181282a8b1f67d80b6c60b5639427e824b6579f52d3c2de74a04cf637b8052af85768db9a244fc5f462a68d7f9e8e504e7258a0986b4971a12e2f11b16a765d414803223d97aeed308d1b9ce5de18bb00ce9ad4bda8a6015f124bbf385d0047951023d8e60742edb98e280f90a8ff435c67019b0d469e84986085b49f5a743f52766a37f7774b9871186fedd06876a3f521e6d4fd2c303a1b1a4ab815c8ea0fc16a6017820b4881794d3f5ac1ec240be9a1c1befa8ceaaeada99545e720ede9ea04b8655c9ac79308cc5947c5cac52ccc58969df098344a57c5b6e5ab50ab37f45f2b5543b3537bab1f84a805a560bfe1e7919143450365f0aca6e3976aee8e9c4c1065bd81dd361a958d341a6b0a9ace50cb960b5d0e36e30ed69af25e45682bf5f475455be2396e2d771ad0c65661c01389a3ac033af0e2681c91bdca8c96a9ecb75a7497a00186b7028d065f382ba05bf0588a19154157c37a2c5d7a4c4279fd6ba87869735ca7d8c4a99f7609357faa63273a04c954c27bdbabec25f36b7231a57beaa11b89281e1ad80de42f21b7e90c63310dd388a4a8b23ba14581b34c4a475bce12015886f26c8ac23237fb3b8c854cea851858f0424fee1f7afce7e523f64dcfce76109dbd152c5809b212ac807a4c2f1d9b7b1025bdd56ebd8afeffbae6e17590b51b4c3b279b22b39f8cb0a628c7f8913188c2345c6ce1734d881b821d9ed2085e406b0ce92f5d7a94915e9daf0c1b4d9daa6e4713ecac08ba9582ba2f5ae78a03d167f502790411ec191a9d641d3fe5827dcd7bb9c72701feed50c8969cdfd0f6e95bb50000f8395f0c1a86eb433c0d0014e0b9e633ccf8e2070723f6176de60d0c3787fb7b54f061fe4f6c528993cf84117c3f7b9161e108c5a110d7fba8f2096a2247a46bf484046e2ebadd8d77837424873174be8e3b96034d5194970b127c461f291582b2d3c783d1a9466fdf0254561ea53cb57106c502733e2327350bd6e7e17a61830d6315a3f3b510bd3bfbf67577e97b2892efe1951925d959576d606ca1858862f40b1393c78c30c0f848601b900d17df8cb4e58b9dfd47ffd7a65aac407cf8911b07b05709e1753299774a16222edf427b7799900de68977c6376d1f5273711124444dee11c9bc04acab403f0b87d99c59d99ec9e876c135d627f0d61a84f24b67882ffa5e97381a293b8c2af20e0ed030f081eeaa698a322dcbc90bc88db530e4fb87cb89099fe95f57226a1d60646a6d38b7ee5b1216007efed2fe7230a11621825273851a224fc01c4e6404f9b29730644538b29de0f5cb0de19d2c5824ce1c6855864c73e264aa42dd5e504305e02784605b65d6cdb0f0af9d00f26022710eedc9c22fa9013b5903980b9f828807a8fae2792632125217d3a25d6f89b2de30d0bfae99ed0316f6b1fce472557fe4fe68cd6d9b316b0df1db1ea681b0eff681244c465e69f752c20bb7f048fc2160202cc2f8773664da8b6dc98046a0b3fb7d5bfb93aa09ba07c13d909cdd575146a5f0a90451a03da73045f78296e836b7db002a1422dc22a0b5c4f2e835dd8aba2c7545a668e683ebeb4d5e32d1373b897d6d4204a660f9d6d185895c57f9db85be65d437a8b385c4c168680770c945f38c57c1107a61c6a70abee9f98b9a54c065a95e22f9e638f0dce747bf62b2cc6ee71221bd85b66c541d95856a98e0a9fc2a16de487482c25ccccddcbeb55e2db7d1ede753c1835cdace3e190ab81e6be977622629736f361b4707c9b24ed0ff920c66dd388f85c2f04cb6d0816b898d781dbe359e0aaf83e0397a07ad25639b6cecd214c75b3b87894047110ccfc32a3f5c2035662776017d7a2bfccd30c4243270b4941b51b32e92489acbbbbc23ec4851429e2c2c2221b7f54dd9f45fdd53de29e1b6736e9265a3b54f9690dc562a21d291d1741f5826d5216c24bab42150a22c79aa2e40454d414179399fe18aab4b78e00b5558adc26be5603da73edfaa063b84e95ba71b0f52b996a4b59b808ac13eb49e6737000234e97d5033db1b57becc1367c4849539a50c2d603e5484491861ddf19cb8809d6051c714296a4d6bef91939d6addb11068ba33ef84f243637d9950e95d8632f4dcbdbe46f5f7e02a806e2e3b9bd9b421624679a76e200585471d4730ee9082533c95638b724820d0f9bf4a63f4983eb79c8ca378e249b561850b2429d71222ad3bba93545cba5977f3d7192c6b4a7dc4c26ae9555529d6a1c4626999973e8c77494d0d0f7909ac5cae936f862618dd47b92f5841be1f0fe1e02d3c82481469b19a20942129c3eaae9893c22e63f90799703da2778da7a16d25211cfc381e43fde51ae193db2b02c8ec08673fe27b49f864e91ed4add35528ca079fa9eaba19a6295f92db7c2e1417b3e7ddc5cdc077350d94b2105728d074d86a605cdbff1f87249353b4ca96cabe61d190e5552c6d42c50416d6c2c781104affebe534f60c61193eb78f3433d86330b81c722356bf5a7a147192a23a382e8b88ad93684c51f31a8ad8ff51114b28972a8c8b01db0771f46a5c80f48ef6844e9139ee412a4147b511a110e95ab46b85a4f7684f5491d56fb3d5bdab9b9d873a4a262e21c6d8e789df05a84fc5748271d55210f8887e94df4ed7d9eb6d5340b97f4d3621bc179f4dce21228ac8cba9928cf9fb25f73d3e8ce40b0503c3682d1fec4ed968dc0974b2a79ca8ae805e05dcb81b73415f56a98382a4fc1578ecfb4533dbc50c18434248341c09ec291b6aba2601322b10ea142b94e925d232e19e2d1f47ffc05749886138179179fdaf47ade035297bc33d6bfe3ad6e5dee48ae02b7ce2283b745e2bf5690251ea5562fc37f74503b48cd1155a2f0574799e972831976bf6aa6c6b9424389ec84748c2bfe3debe6f65715d33a66818636ef321d451db9a1cc4ef43d386f6984fd9da29ef6c5747d74c7e39e7f765338357053de6f3c7b55304beb1bdfd260b65e36e4ed35c3a3c8fa65f69ceaa995057d1cc442670a72d7040c0e3720299a337dda303b51b7c7d2bf26b6380061872e7d80988cc66aeff9d60a294e2f412dde052849bc5fdc4e2eba4e7537bbab36c028b12c6c8cd5428a583cfcfdfbec42f80bbcebe9f7bd892c0c220a82e02dde89794d8ab3aeb283c6537a1fe7961187e9ac4ae0d8cf90a4cca9a403631ed7dbc8e9890ce832ad66c2659c3f2b6f0a25266c5532f4b616898b0bee140b7dd16ce8f4f8634d69f6f8251f04f53f7b2bef3363aae0075d951c989ebd44b4183dedebb57c0a312b805a266e311a120101f4fea709b5741233222ae045b3981eb1f7cf85da08e92da6c68ae81bdc6078353fd6decac16024b14388016f541eaeb8ac89f624a2ae87ff4c816924f5f788a8cc96ce6f776733bda205df2fd1dc53383dc26466d85d9d059373b22c4ce197ad4d8ddec273cbb948964c162331883fb4528029afae5d1a844fff4e0346d7df7e702f5933553264952c0b5ebbd2706658b2930cd340fa5f069eb25e8c686754d292a04efaad0e6aab2f9a696f4c3784bf1276b736c3ecae421ae4a6b7b49bd487444ddb974fa156310e1b0095dece216c6759b9c85d23319cb794b44cff4bf033fb8c4cfe5ca93316c66418966b5c4f2b7f1c0a4f642dd37772ead3c455272e7ae7aa35fcc6d0cf1f909b4081817f5d8e9e8defbcf3af1824fbca19eeba7c94faef40a75c6a00f6d034759904350879c46c252ddfe9c10f92ace2a4b57a3371d392bd040ae8bc5fe7bdee1328667798b4f02f8901526b061c5101c208c616e871a2df1aabc90791dac7cdd5468be94d9e58f4481db60d24f42ff942b48a45fc1e641c5489b13a785c0aee0beec9d62538f3f22181a1e9d22ebfa5dd71c925ce4298c04f270b71a0c1e5b13f3455f1169c912e0dd7683e7062616b9f725fbae9ba547c3e1872a1a4354b19e9083464ca3084a06ab7eb847ca9d786814b9e8748600eeecc44e00e806d978bc2aa8f8ba7d50f141ae1d2a51c0d61c267a8c0ede4fab85e84dd2e32e00563df205ddc81fac21eafb408db0a7271839545ad016495ae185e6066b3716bf5402a3ec34b63b66477493e961839a03567171c6def2f38302ddea4b5b7b1239834ea39dc3cd097b77269920944991f49513f47c371c4bc13b145b803e7f91a4c70b2ec50ad2c12e35c599c46c852b2d0fa599b2bba94afa7a5e965bcd2ae9c62f06d4b01068c0804035d457944fa781d53fb3e9883b231ccba850261fa19b0fc2f1f1dcfa5e4e231f8072d0cbb25d08c49eef396ecb88ddd6e046bf217a765c41e67dee185fa2006548ff4d1cc54d4f9581d4e3d58a2399c28cf560261b68bae782528b5d478baf436c2a0558817074a1ffd5afe01648042721f408508056dc5a7148046e78a6b1c5ce71ca80123533c6bd7d1c1301b76f62adc1160630182f906b7b11bcf8159c7803e6c2e13afa0bc4a9777e29efd2ae4b212a5a865689dae409767efe847fa63f95a430eec846e4b298a87f007db2e41bca61a74baa873c0ec29df9e67edba70731137bb4cac1006c0270ae0cfc9f1d12957d23d7e1e0f03bd885008d2948cdcfa58f63b31a6867dd660fc73246c33dc187e941e8315e6a6da54fc50a2a4e0cd877ee690c6ec2c18745c2ae68fa1a0a6ad4c411b472f8eb97dc45b8ff1f1863fa2d8e424a107162aaa2f6142d5d9e9ec1d292fdc01b9f3aa8112d3aa63ee9c154c99bac105f84a6121c109c026e02b146eb73de0c3451b1fdbada824be9c313201de579e8585c0dc0f2df3d3800695b73ddba785fbaee02dfb89876e5d2f15cc0fc84f3c4f26964db039fa9ab7a0349ce3ff1f794ca798446785848cee314edcd0350656d4df167f4e47e767b98a0c5d08da5ed7e416a776dca09225aac962901bb60420c56c01d2d56efc48844589f554e6cc1fedcad6e1b2b0eaa4fb4a9877f50613e6a4061569a94174cd740902e93e974837deced09683dca6313476ba2b5ef736f93bf3d42b1ad4c13e2686c74d6e0b838abaab75200fbf510e228b46ba87d2aef4469fe0bc51758391277a2d700ca282315786f729990f0b70ebee4a830c1eeb3d4f66dd48c5cfc39a7b0d25e1ef77c4c747cbaffede7f8b4d3781c83916d406af77526929fab89ca201e55b07d5c82bf6e24683cc1050c4b98b1053d286a0aab0e4ef0abb4484a1c81c5f280fca79a26aa234bbb185aba4c58e3760fa1510e743990ec0cd3ee81daae610119531e4944eb345d35213819d7fec8472c8d026eba7e2c4ccc50d36e7a32fea3221f71eb9c0c6b8dd0ec58e4581172c556b7694a6561322340b135ac88b81ef048e84f771aad4ebd930a8281684ec5f1f4fedcc30e76e82fb8a42ef35e9891a3280a114859ef65bf8630f8390b271a946e6ae5c7b24a32cc8ab8d9b6849430365944c17e84bc3270c0e78a05c7fe31847db6a383ee7f4b28d5e4d622f713666f3c3dcdb7ca8c1268560a5f64508e6eb446f2513ee98e0828dc87d9e60da5cc7a44e6dc1126a83de3284609a1026c56aef82f13eef5166b5df86bab4e80731c97173d1d77ce0492aa7ece879e739b865a867d947eb448b9af6ea0c5b08d090a820aeed50c46269ccca6edd909c53bed1d1e0bbfef1a7dd42f140c2848db8f6dd67aa809a7d28267ce23392f56e0fb408a05324aa4da99710ee7d176a2d47327304f79f9d25e99d1b2ce153a2a459004fb48212f3703512cad8bb51718c4a088a2d56c0f96a2ce2d01af59c5800568b02f2279aeb7d5aef818cf68e50ed1e1a66806583772a2cd2fa1984578852ae8aece073bad3a6493bb0956db407050820946027ebe82e4d8cd0d58f92c4fad329fa52c0ccd4024e242848c6021c53eaa0c124aa01326eb693531cc789343b06e7f56a04527a610ca1094865e71cc30c7624689578a135cb026be61e2ee6a01f381c25f67575af92ebc816aa740b1627dd0028a4a212bace999ee2443b500c7aedd067727c103492efde6bbe14cc9ce2de4a151c1aee8f9c195ffcf74ea0b9abbe5df395774e45b74e40c0b8805c99a588d9fa3564fabe57e7c84563002ec777ce14d87fbe2fe8882820e529b389b5fbf9ee03b5f33fb28847c659a463c5552c4228e56c544115ad759d1e7aa65453e63fdfe86f7451c1258686e4cb467fb4682064720483f2debb886fc3f47eeb112f9c3a8ff1511a656978f60742b30b54988d5cf20e1de1685831d2b9fb36c0ba9ab8e4d7b06b2a36a8e4e60b926309668b3574344306663e3eadb1fd8c88c22c8498189a3ccb20152673d4dd419a8e0b1a9e19d59210150d29822a10b50fd0e08d432a1b08988f78c0267e270595ef1429ae4ea7ca9f08e55dc44501b0b03f1b1fa98a6c94263f40a4a67e3be7c9e10d95caba6be8fd930f9f04432220d693a0f266903d305566cb71cd9826b7e7512469ebcee8dc8a497fcc2ceaab6d9e7f93926fbc08feec348038cb1d85a9108111350121fbd883189d9672fd8887d9d33ac90e61c6543582929a78f7064b7c71416d3906e758bc807afc787650ae29d3a2aea00f2a170179821bcc5c99202d60e9223eba5d3c730b5e7b8c431d61955d83e3dfc617962af1541ca44e491f28900d022067488a71c93ae570572c098cf14e797ab85ee93f253aaca41b6ded931c5e3d48f5808a1382a499afda3b03e06f53ea97f397a7dc1ff90476f067b79b4f1259e8bc8b4a6b10adfe8d394a7383ef70238bae89775f95013bb021754f8808756cdb21a11b5c9ce4430c84d2ff83503b1002f5d6279232ccfb63043ca49de94990340833d6e5453b9a4417d33ff011664f01e2e8633611c6a907902146e32df5d9942cd19de295bbcd84e001f83a73ac05ba07699e1159e6fd7858746a553aeb9b995e8cc767895ec171660fb990ad9e2bc84088c496d9ac2beb6af21ea44d381bcabd9ce61c6299e832fd204c3d8ccdc9967bcf2b11631023a3a87081e70b612790cd39e1bfeea77767b74af16b492290b11077ff093660023a6ab79019d8840444c6f960d55b0511b04e3a8980db8b4e7e66c1beb5fc3a0518c6e3e7401336a295f4001e365f56284b087a84740fd5a0c80a530ea500483b8aee08e5c5abffa2da532619771c8bcf1cbf3488a32ec7452192536fd28eb17c6381e4a6227e5e2f825691d8cc02ea4ee5d09d09f0e6f376cb4487b996f2d5a53d6406b85fa1cbe761dfe1959574179a50f7860bdaf1208ca8c8930c8c1557b60af3edf8c51a50dde59961296a089967b286e42d5eecd1b2c91c3afc35b4c29883b9abe5512b94cf74256b551a220fb45c90e1e0ac35f587831248da9b2b8d7d59eb6f6c9666dee0aaa5e07644b641da429bcc2184c5f0a189abfafa138b8d50eed2ffd29555872b50e2379354fdbb270c7e81391a5e034299a5c537c99a4603b6de672962a00e9673a5c29481975399658c3660bd8fc3593af89316e17c68b530274c7a9615b45e2f498976b7ebd26ce470ea81ec9013d43b5f4294bb77a521d0c48dbed1ddf49373518851b660ce2cf604043546dc5a861d7aa7df507651a96a97a26eeb056cff2f19300c50ae814ceafdb8c4f58f579c30ecd4e2f18c0b818f8352ce0b409942d318a6ace2376790a8694647c3c440b122bfcb19c247fc508ae24214c3a87716f6da1a6b4d17283a85210dbcb30172f2623334aa5bb1d171355d595770deb47f2705f5e12134600e532caba667b8cacf82addcfa384db73d9b5c758cd417b378c9bf3b67c9f7075e3b13b36de6c8ce577c378966a7d184127a0d71e4c8a96f84d9a4bd4cb40e352ab0fdb485cabe8ee0f0106b54a0d66a2e1eb2869c78f2d4b8bf881f32c6d3695687d7354523dba30262bb0e46a660452e2bbf6364ec0605ba301eb49068e4a3c189f3a11184f9ea19071bfff7a1b2111470bccab544ed576634389506aca9b0a44cbf13566212321d440602ee2b6fd713db5a7374909955610dc592d8cdf35b912950e7c288fd55242df5502edc56aeb17bbc7049dd2aba348e89ea1c154b391e488dd5f8f36d09dc39514b9ec75025efcc3ed0f0939119340dfb00ad8b26bb3533e6030735a123509342c23bac88c208e5e40efa2a787034aeee8072af4219fd494104b30379b37ea00e3879299472f978e92cb38bda156e543df5bbdcb2a1c8412374c6b34a46f94d7e8ec6165ee0ec6084df1e9e3bf60ca4429f408abc632311d43709b2419a5e40d55c788c91bae152562221c7c02b7db22d3e63b3590888d27e227ab44ec644f642251ee97d32a70257bd2c62384dba77aab91e4468505d0099c40b166cd43cf1406c66a4513abf0f3af6c917f585df42730f67f66150e46c4fb3a2713958c5c47cc131ccb1646c71eca2022827c31837f954bc434ba3ebf2ecf993041efed0f82a78998406f89aa9109f13034f75c178cd56863548c80e023b709a42d8a65dacf25916824bae8b6c8649bc42637e3f3567a150e10c68c459a7879bc9645f50e8443945b416b5d28d3a1de0985839f916d3525be6d7f0cc84632d44e90a0c984c788b8c35dc4d3dc329a0aab1b5447e8a1e3d77d52353c66acc211c5e080ba93de150a633d962919bed828e325f01a21240a963657e18ba5077b8015d5ddc2c450e5a7cf0954a5503d50b75e5f3d0ab3dfdcfc5ad1f8f32f698e640bd1ec71d2968ade43e7e1b74ef48671c3b79a79ea321d8fb7b2fd65c31a0dad7978a02c32d34d2571d03475aea865b777ced56ca2004c249cf5db72385b60e3c37fd1a183f3799604b0aef97f0e2b4f0247f4e000aa3c2b8299c0d2cac006dc11b6f6e5f001de1c84aa5f04b7708d3ccbf7ca718454028a08863624a3110058b0f0ba462793f40767b06d34f04b2b7a30f5344d2a4077cc23b166989bd5e9e5664ed8c541a4b1333e30ede051750ef475994c5c072dd6e0b3b746421efd8bbcf5902f629b636d5556e42d65c66525d809f5d8a42cff75ca45369a59331dd1d55cd867b4753c97fc6da71a26769eb2342345a40e8f6ef52ab5596bde32335769303bc30c85e93c85605150e0859fc30a06e5ed00b51fe00b050f3455ec20ada24927cd89900e477e49d88a6e36f7612b1999a40bf743c8ca8e61ed30d34ebe6c6c0ca86dcb55b9e4b33107a1bee8fd0f9205872e6790684c31c3908cb3c64b1744eb2b668c33b8cdb1d4e34c7b97e4a76007983e5f1d87dd1e0de3aca13eb55c8d3b3866b0dde487211959dc033f528d8f7fe76b0d224cd9519bed31eec8d0e4e34bfacd34f164f5a4c49ccc319deec8b12c93f969e213106a35613a097b135108d4948dea585f8e3aab62803a419a9b908be18faa2d3eacc55fffe931a50aa7edf9f0a3414bf9df1fed332dc68b61a4c9690032daa462e4422435ae23f2b2a05370f1095e8d9bf00cf799a47869a8a9c5ddd1341f3664bc45fc372eae5ee4724690c61e5a7347013a6c7d9750e3d3cb7dc1b89b2a8bbe71b29301bfafd0803cefffcf2567f7fc947438e13f8bc8c970da917eb2cbebdeafdc681c9a406898e45afac412830f4f6f2bfc33e2abf8f32f62eea8c7e69b9f133397611ce3a12ee2cd6234c145c141bd73fbd104701a4d0fd8357513305b5b978714bc99e39c06bc9f690b5c6a0dd9d27d8ddec0b5e05e7c32d84a91bd7c0dd34efcac7f09992a3e6df252025b0183d62ff0bc018c20bb163ad5c83404b35f0c4559975a4c96277fc9cac16eaa3cf0999f918272aae97c7c0b77f1683821c5345c14b504726ba21ea4b10143c8231f8c2b7431c01a8769fdbc1ed0b2016fd6a5e6a2a19be5345e5625645d7c8d86ae2e6e0fe2d26ed11f1270bd48aff120ae6adb20418f353ff0c2d163f6b646f7b767ea26c60e38684ad17d3048b4e1128b5c159057928ec7b7c81ab11a2f48627b35182b2ac3f799e65fd5ea7b163cd2c03d4c8a325d11cbedfe21e40675a402f53bb6005c1d26192c2e8100d6afb9aa2ca91ee7ca156b2f4c0891b3d1e2295f3421901ed538d5e43c2e6e9230d05d01741a020555910cb55216412761c8b913d0dae048f2f180b917f12a9c9610367b382562b1eb6ec2f2905663625199342b5b8db1353a0b71bc92cc82e03bf641735190c2ae5252aacc229e5b32dcba6f175c2bbcfc9a1bb992ba80b5e4553d9f00c6e3243b9f9c0db82fd41dd4f4e099295d4d70b1272625ce1e341260deee80ceb9c9113d36b31d0f218a01dac2951bb4a2cc858f888d57327b3243a3d89fbd2515ca5cf2ad83da11e18d714871fb3d8124f296fb442c212ee71f90b429b1d5331467f410acf8101ae138db225841e307ed336c35d27a578b6db5220de9b4a6bd2ad7fb5c5859a4608add6e1cb721a3951d2b7fc2a0100af79cbb5c6d934d1550b1368fddef63cf82d075d703a81f82fe5706724ee1352be0fd83c2c40c57fdc932fc5758113fdb16303855de49fc2f0c6634aec0e413030be7e772217dde1843a1d80b7007a68d18723eaa113b154fc5754128f4b6b85154356c9473525787b922db32f2f3757e2ddf6a0ab0723961dc169c10b27a1ca17a127c87bee60b452aa80a65e4ba387e4e459df302362dff4b4b5dc491bd400dd7b8534129487fb75cb1351a750f22d431161dc70a0c4ba0beb9ca00a26b50863cb517874c8e543644630eca12984a9d9012ee209d11c398d54b321a016fe2571be64b59e47f11fe60fd49dbd29a66657c4147c21a3e1399108b1bb53a2950b1c3ce899b399c97547c125ebd69419aaa8842a71c9280e9d291239d2d05882e62ba197e4c20ed2d9ce189453bb20df84d8062b503b1af0be6356c4b013a2121660f44a6d2de6b34634f04688dcc791faf395d89b82d9a2beff09af3151d36637f8812a1017c562c55206e911536bd3eb5f31be4a1916b64b00b763a93bca1be31aef5445383e27c73c527520e7da20f79c5d2800c1d19e2e9f6b5890df31b24cdf78333729fc96ff02a2b8ec5678895c0ee0695edea68e5125afbc2820f82b85d5816232a572792d285b200832ac960581d31d860adc77b10b68264883a5c022e39a1e092afc11502fb3f9b2f3a1b91881867f2c14fa100f5f3ddb69545552e2b067b4cc2dd477e30e7cba6d94827818315de9b306be26d25a59562529de783a1a13cd1ed8c82565923c66d7732674a79f67b7a48c1aae0d3963f8d3297fa643f7727f02f0958156adad512f79206a4c71a945b4485a175b8212d25fb31fd076488c00a7ddac990085f49dc056191f718fef9803b92b7b91cdc51257914e121b7f4e65649d43ab8e187cc67204c815f784d4d1cd1113ad0b3ed1b8ea2b8500bf1bcf51603a74300ce6110fa735ad6d1ab7ddf9e84c4c123b197acdb153049da92b3d5264c01b981612a9c4582a7143e41f92485ae6f309f41febf8de6d89cece33facdb170aa0664bd002e1d09210fdbffd97b3c968b1414510cf8e208aaf9dfd719966fe7f01a6cb4636035a42ff9cfdb660fc0fa9ac476cd1ab487a1d9f5020dc9de8df6bd5d049b03fe2d06adfeaf95ddd4273a3654a68a40866ea88dd6ab2299b340186b140e992cc22bfa7c5d1b1300912e18d93e4919923bedd8dd093ca860781c5810f86f93c5561c37c1e615deaad0e3580e77417ae84a3458fceb7c3eee406aa3a5f48eeea7d143781d6e125d40a55c9b0d19115f5ac191001d6c87cc287f997a0e31162c79816a042245e712e4d365073f18543ca822b71d3cda1da847b9d673fe0d6f7e4d3aba9d16cc334d570b5f0fd89dbd6c8ea39b5103382f7018708f45613d2df16902c5bdb663ac51deb1bc5fa529dedeb1ff1089c5c795bd842fea8d5aa717f8e215cb94b38961749e10b8d80609bd0aa532999b03c4cf335973ab757a5b2ea113a2c476d379e1298840d36329d5c3adb0f0fd283479a668e031040ff313ce9dc97153fd6b91e8a19fd378f13a3490552d2541f55bd32683442d1550c52ed2845e3a4066246d1b33d08e0448567bc695ea7112a6421df771c49749b5ea30d4ad9477b4e34a859aea7dd00020127d908012869d85a60cfdef7bd46a67140736dbf64a249237d653bf4c4a16fb4c26236af790bed8ae279ab282035a1c986d8149ac75cfbb31dcc36b601673c0dce82f36fd114f54990b40422877bae4c13739c3cbb51b6f1f4dd31255e46956a87994fa98e3d53b4f4fb2040c8feb549575772409cba4ce02ae9184bdfa236a4059672bd01147e519e75c76b60253d292038828c6679690f8d1c5e7572b8cb8c4004df0b00416877e8c775d2a6d8cffbae03517906095aff9e974a8f302aa6547cf03a96e8f824908c2b9352be2daa51467f465323dd819eb969cf3168e39db0f9ca8a2b292e888a67240a878d45be8d444c33681aa60ff8c8e40950d00efba25a6257f99ee175340fd0ad7a497b433dc73ac77b35193ad38a65139c1022065f62d5706c3b74b3c066c87cfd8bad0b24303287d8a4ec7068e613f37d05ae174429fe0e805724148d8af5e02ddc6a8cf9ce5da0915b88f1b52d2865eda5393393d2bb91bfb6aab881a401993a8037db5ea5785ce71ca9d6ed94c8382298ad31e5efd23a2215d62f3c1bb221c829baf67f9e622aff7455bb5f24adccf3de12dcb3b44831f5c52cd482dd67a69c9203813e490109e04f647e77a74dd551fb27457ad7187d6d9118839df81c1f6635d9e91b96ef879bc98b5384d25d7459f15432f42d983b1075b54ba4d6b71e7fe10c19a5bdaaa660d33ab2470100c2e4d466a536b1724ef022919ee5365a6da88ca85b4d2956d0c7ff393d4168a4c5193dcba3c9c8c017807ef0d1bcbd7bc83ae5871fc576e6344f12e82ec997767df11effb347577c5aeb9659c4ae53dbeeb06ee6cbb2155eff6ed1c60fe5ae9ec85ec36c6fe7c6aa4a84f28f9a620215537806378c2d2b47e0a83be56cb326ff58b042cbcddbd15a7630618fbd296721dfcd66b6dfbf8cec360cbc4424b2f050ab1c1f2e9befbdbe3afd209f93c5317dce09ca42c0224a8f71a3be10f4b377212964f39acd12a55ebe2a1fb34b3aa30d6a0d858dc070b2783737f1fae4d41c248af6aecb7e73761d38ce885e09b0f96093e0936e20c5e11c251c574d6a69ed6bc096e9701da4d3cc253c7ee523b3ccd33a8bb61c22104f61538b0ab5a2d169cb46210e9feaef7ed9e9ff6475d0824fc4da28425a74610af7ae2b556c5204a30d985c2956cc805f52a608a9420a869bec2c4cf972309b183d48d679174bdd40d1abe59d6d328679315b173d3c248fce0263de6e6de8858c3a9b80b2658d8950745100fb9d27b9f394ea3571d4bfa20c382e51fc2737e86c8cdb254cec77efeb5771c88daaf7f2513eafcd41fa00f4429eaafda4253814a4bcf3e06d7dc654ff5197db86f8b83e6b03c3ddb7404913f714ef3bcee7f043187bd0141e2a36522cd90c962353ad20a5d80466297514eec016411c06d11d1984bd63b6f68912fc2db83764de0662f9e0e27327afdd71526050df5dcd18c24a57e0a58e40ed174929e2834f2755cb9b16f3f43a0b238e1264e20026cc90b0cb43473e0c92f87e29dd507487d4b1a17b133d66f4f9d157a61b383d679f96705643f2e12f98d166eadcbad7f4343c168d3f4c80e0f622f0899b2809d146261081b19c16e49548457ade27ad8e4290051f83e35a28658a92a230078d74a4888613e4762494a64c15eebd634df9ddb5f915329939444d3bcb108d7644faafc62355654537d51374a71ea2cb637322d5270691f453cb22f195a591e29d7991e29b59a4af36a16bea8e5ee22da26ddfb84ddcaf51a39aeca864dfa21a990ab59a7654633e211af1e38806453d51d548ebd1ca64447ab8d1701cad8f4c970360f7598f635d80dc8b49e39a40617514c1809b33fc0ff916e8484a0cc24612e1adc8a5bb809662f0b682aefc06f7d17797cb2eb64d2d782d2b7ff55049a048095a8d4ed35fa7e894e2df7111fd656e67d848a3aacc2116ecd4c6f403c1fa745a4999c7110fc282d5084810b431dd3838cf2c201debbfefcf5b6ab66910c11d934d71679f5c199f1ed0af6eb662325d35d58bf1dd4024630cba08a9fa3027dd8f0d7de087e2c93ffa652a6235eb7470550ecfec7d85b40777a4b7a27365b0241607d4d9d3fd04927ff35fab6ddb25a51712bb109f041a55aec3d6036ed1d353c28b4927a5b921e4ba7e4930a35bb8f8ebbe530f0526a94c7c3b77c2d774bd1a8b7ae087fcc6e5fa963fcc9200e24db407bce7834fb50f6afea0a2cd36cad1222737388c1a2afe4d0ac339622bb848f42c989083b921d276b524bf25bdac31f8e3327ff238379a90cd8591a93f0ea38cbbf41d05b2f748f7735b30dee68c97adae7529cada755a36a5b9035a73cd31d15bc3349fefd2d8f2bd6f2f6bce51df50d12b5616f1915a66c068fdb3be41c6e88ef53582a27db498e534fee33a1dafd93ef63e2bf425cd1131a45deadbbb9b31b5c7883c8132806f049de3f66a1b38fc0d2a53f2600a493559539a26ba0a5ad294c3eb834304f64759654b19e1189959b96fd0ae6c8677e862bbecf52e90b9674771edeae1c162d8452fc2215805905f3a0444e347a0553ca827df221f7b9935127bf790ba40f2ffe2cc40ff1d057dbfab4a405dc5fd1e0838667eb8932d68099b57e8a8d17518e025308e5e7c54a84287a3776d460a5b011ea056c01cc993e37cff7cfaffc807af79abf46231ca5819b3e8c086766e8cc49f1dee38215fac24a1e1062a2c64a7623587c564fa05aec163eed551856a5dfea8e5044c7daf8b0d456c15c665a9356d7b2017b127698018a2a5c485a21486694210aa568506509d082469b24146441937f93ff24ed7f02024c313f693aaee54895d2e7ac18a45ac62d033d30edbf555c5ea45b15ee9ce59c5d6aba65d6ce7ab8ad54baceb10ee187a35ab1bd6a0c2893df3bf1fef48c346f2ef24d787a1446cfb7f54b6ef0577a37d01f55145b177d212335145429ecc8dc28e1c6b62d573ec6002a3daebacaa45a06195a447e6352cd79710a7177dda2b258538666caf69b724b6ebab8ae925d67540b8632a4daffe8f783b4a797387554236390d8d50251c9c65492e8246b2c9fc5e62b950518a9e2516bb20ecbac54a9d66bd351b2d07900a8102bb82a583e0bbaee88c166d9983ef740ce44b1f8a1072f11bc39aa9133d3977c20e2ed871f001ae8d4bcb3c0de84f8686f621995ee773811e87122971d94e024c3ac6e5eb12ea9830979be8106d2c2a75e2d063db50b25a188415362ae43e92b6a187eb87849a24300520d34d8a162d39880b21815e42102b5bd2aa0b7b1882230b2d689d4f4901236b0045b2bf268989c6e630e5d8a090dbd432d8ca7cba8f05d201eaeb4084c32b7459b4e8fc6145a688477953ef969ca70a5ef7c72b7130421678881fa0bb0336b175641a361c08c4df92a7722e5eb040a6081239dfbd4c388455bff7d25c13befe1bc2803e0f0239fa3c95ba44204583cb2580a596468d51dffb6f536a6c4c24d73dd8002312553ac8ecc8cdaafa1132092c6eb6f300bf498da960d6bb7ea42b84b0a79ee4e810d624af50b58e75aa4976023489cbaf9664c0a2706d688124bbf83ce5ab9824f894c187689da4cc0d658d810d12ba01346acaabdd245cf160c75aa134e121604080bb5e0b4f249a839bfecd2d08e697e42e35d94d126fa5078ee1e46540e093d4038f272b2815c5926d5af945d63aac5399468717b53587e218001aac22c184ce2176cd38a3d7ae38b7742dd5d6526743c339abfa5ac20ee711deae3db9d1f19b9a6130ac9df148117c86375d8671fe2d867cf1b07a727e23c8dcfd5a432b2f7c9e1091c407622f0264255f568c9fc12485cc5ba5ac071f06ca5c609f594145b957e8a1571e95d7b70a57e7584f85eb652848640c2fd93e20c21e2781839d07d4dda7537937930c5922c848426fee253da9f25f0087d74c3a187b802417d58145b04573c610b174032c63e835116e3a8a0b52f08a7d970e9720958aa53a31588a11d5ea3bfb7b032b2abed3df5858a56c3cd512aa397824bca94fb8ee22e4727e5484a34104a362f97ea2208e89894987c8a634ea0ad5e8a7e7ea3beb396960b1e3027d096087958df0810a9394bc837615a78a14677df20f8e82dfb4fc0d6ceb704d52d7f50e3860a055aa8413138f0160dc99b22db89a28a5e046aa6dea7001db5b712272b4624b850ab8a5469d58e5f50340e8e5f757dc11aac35370b58483b6da0f2f3a71db693b0c71fe303891318b4410400d0a9169f924770e449d40e21ee32af6b219f9e4341d88065716ee15447367f89870f10e77d9583f5e463fbcb57d7c202dd22fba9b4be82151e3f950f773a24a26e75fa8060e4192e01525d1cfca957c29d44918be94ad3c8a0a074a1ab396a21a538fc429ec4c0f61f839e8e4bc47ca3022f5be79f2dc99b43982cdcb3fd0a893d4d220b5a5bf56ad4ba1311780db23656b55ee9a63315f142c2429a54c4a8c4e8629a8103faa893d2b07930129d663b32cc779a19d01586eb1d4f6ab2c34ad03fa918ccb7a0da44010315b84226063ecf1b70f43ed151ce280632672f221a0909c4d1d24767abf8c5cda6feb7a19ba950b3c88333cba4e64321a866280ee413b999af1f8dffd4539ab67d0c63ec196df608f69e88e0c2f5380d649c51ab34beaa578e6db19d370293020fd2a0c23e2bc5667ab90a49f91b98a5ea85218178a6270670a6a094c6d1a903afd4b24721bf67f1a04a05870c0c50af3405add04be987dc3556480da591849fc46701b2241c8b6a02c435c7d84a4ca60739c51f29814633d270c9058c4801e50e4feb9fc894338e60eb727e2570e01d044c00369cd694175f9c0127d41529f294f0b4b095d88b052bb76b384e0b15b0d02f7af8c97abd0fc96f2808ab528e233c493948ff413ac45c3849ce8a1a4be3b4ec8bb70edf152b4ca37e3ceddcc7c7ae47169ebcf8e43b0545799836131d2d6b8012a9a93c7426eac6de63cfbc78d26fa232abf10084b6eb3d36668b6f6f99ed0a122606ca245187783d53282ee1005b28d469d8c07ffc83785858a5cc8c9d2f9270ad8fdd0e9a7e6bd69fc766054ba3597e3b208f84089b5cc8d719de3c4556086b952de7f726ed404f55c512f6eeec703e516bb5dcb71323f4ce17322efb36e13ddba3283aae70aade1258c54c5188d433e4bf1c17de492845e4af0d9a0aab09bc89830c6e6ba94c3080636570e421246dcbff720a3bbfb42b783d809b230ac54e7bc33f448d9a5838a5675ef5ae6ef56a72ca8d11f071db7699b3869894e3855306ae155c8c16f3442642a52b5dac3a641e855d1e91d28ab9e30571adbe9b0ac08f60777e53045f0ee391c8f19d53f18d8a1a835037854e72611467c7aef02316b9093062b0481f3aa3e7ab5d08604a81d336e10c359a287b44265c942bf2c88a33d29e76ac82ec55203725d4aefc4304fa52df3c5021638ed804d38871371af8374ddc0b9415269ef9beb99492f5654e352bb465c196abe96bb58824fb0781af33a7c9f69049dbd5fc90b38b9eca0598d8e4b0d9b8e02f4d87217d5c476dab3a37ed059107ae228bde854df1dc877c0b9b05b94f7434de7ce506a3d7972ed039fe772df71b944e78a34c58f83abccb5abd3a56b235711158d8ab645923c114b8e4d02980b9cc633b98e82720effc230b95cc1449a808bcdacb1d27828a6e476a434c89462060a3cfcc374367714ecaadfd5847a100ae671d7811885e044f13b74615b6ca77ab0e7b22f67c62f432c4e96c797031885fe68f50cb8f82784d6545370b8709b7ce7efbc8f3733a74377a6809ec29acd02888cb795b477d77e62f6cf7eda87a8fde529bd5cc1e83a40910bae0854980bf072275fa6922337903ceadc4ec3d54429272b09c78739140b503426a8a6d2d9215fbd69b4c8ce49003f7af895a81fc270f24633c8ce1e5b546d28f9622d9a7f40ad0de995e6e5fc3c842150b174bafd8ce772d5c75a5dab00bed327739fea80b7bf05bcd787b9b8963329c438ed32670d534834673fdf57bf03915cba56866bebc428f8537e7eaeac3323be4e3bdf37ce84d4e4008f71befda694702211e57aae76405a8d974976d31a4be7d579d251c420069574c4fc3d3870c07cf299911cf24275bccb35b21ec0aea6f35c688a3996f143592a798c6dd9304358ac088f0dad44760a0e38f275e8b3a9f151d8f862375ee048576ca4b9d695e82d75c0e166db341ed48945351d8cf830e30a23c29a7252bebda59a869d48adbcdf8954e535e9253351a38349c865c8dc0af994f67d61044baf2b42d0544c892e783b66afd4ca01e623f8876cbcdac5d8ed18a197bd108e22f51159670ccbb728b188d0466b5637d075e452ec19a69e269ed05c86153d2757b4a46582543c54eb0be646382b93c7a09f2ae31084584217ea5ffb60a5ae3558cf20bb48a18a39229ec32d7c364d4d06dab36b5acf4e35457a1e6ba7904aeac3a31e20601164d51accc6468887ad70b4e67826b03df4e5dc0a9dacf51c16d45532c2883b1f005f4c3328ce8fad35a5b2524bf89d7de96c9539145b2345d41d1fffdb4c85d3bd06565033d86a994064485a229226ab123593f8c16b7da7209d40d48b85f9a0b8262bf4ffafa60f5948f1247961eb954ee01f35ae0c23b8eb04b4e8ea83192568866d614135fe1d4535ffef41b472fea0b293ab94324babdfee9233a83b5c2b36ba58234c54efa97ab05a181b795f112d77ca01fb58780925af8efb09dd0369754f033d0c584077f556ca44287b1442b8b0d7aa98c99d1c4873576482b3e5e135743eec1cfc65da7cf2f672ed9b1deab99d95196de86088f0b349c48faafd4331c90162549445d103bd4997f89c1b054f53dec13f672fc7df5c90222973677efae215c12b4c6621f0b152c27435da341ead0356412093afb30eac1b14eb8cd42246648565619b03c1aeb6fc3939332af543bfc3a145e911e604cb0649c388750bf3d5b28a2110ee007df4110df731ae5e3a8449bd6735eeb1e6bdc0c0916c3ebc093aea1186bcbe99c134ee563088e8341becee7ee1b9fa5b77a0f10ac13a7d44ca7b284637a85e2efcdc6a0613210f4189da2731dc7c0cd614638292eac67010b29f095dffbe95ea15c36f4509899ac7983791c88a2ef926221506a753ba90b7739698de7abcdd0bba2c180f1a550dde836f1b2678da23fc236616ef1bd191a341435602a0245b9ca8fb619630db04f6760e28a31e3420f86674c05f346e149d30efe4a4b1561d0cfcd2aad123ff55851ab088c30b1c0865723a24be37a676e67524901df0fa5ca680ee84364f9dec956b95301a147e8e8bc84367c81c8a7f8d818ff7925a7edad12c8ab6f9591faf3369d9a6d1319d545bc162215a203ee58c54b221615a3a270c4182afaea32c7d6464adf8154a05f3290cde80bbab03337a50446129b1e325632757fa23c6c39e80b68e33e78b9deeb351349b7a86b2cb5af0e68b41394157e283867760ae6a12ba964a35c19ee9264efc2578eb556d2958a943e13b9740a9869fff4ddd793bca9eeaa3be0f37b99b7e8a9201aab30c7f0a6629d9a665f48824e7f648c6a3db6a6c4ba7cb6034ee8faeb75b60079ea3b9bf42157a71fb436ee04d32ad13717a84cd16dd764ae028ba27d1650995f5f17e693779ad6e376467f236608b560747a0fa05ef55ed360443ce2c9b7cd9793949ef3f857384abb0508e53ca48a24d2074ce42c00817da9973999a2c68864b0289400ac7c75007d6e60835760158f1bd3890074c2e9437960193328de7710fdc9ef3c1a375b6b3a8ff4bae47ae50d71cfbed70f77c0b7c44677ca3147b1bfbf98bd8782216744c6424ae26e6a435bd33c9a3ef74a7666cb692824d9ab67ca88dd64b253e36ec26490fcc77f866624978085c4aff7459f1eccef5620fe5bd8863f4f08f8a94ad71c9359071e62d42fcb845a4be3ddb8702befb459d02b9d729a04f59620e3d14cfaf6353ed81f76d76ae0db515bb21de33c31b3257faefafbf8beee6bbe375e35c7ef6c084820f68b302c5a51ef8a0eab7cf5472297d917af908b35b831b08dc6746f6dca1eb9c2f1f2ecfc77de6657b20f6df46c10e64ee33fb51156be45a633e8f074efa59d7a8113d52cd5c790f337bc8d9ea971ba2555098dc5ba5165b5df940558b57cc36f63f06300bebe60fb2fcb720bfec595266f843020d927d0be741067eef118779dcba50de91f20a5336a42bc15f61846e8c9ff32c395c1d5f6b45f82a62930fc82c7f8fb214aa5b14332b0aef592698ed2da80614df70ce03e41e91f9dd4da15b97a7e314ed286789914379dba78011e2101b160f21b6d027a35cf720145e22f79030a016ea63cd87d8bb2ea35d7b5117864216884d349a2146aa871620ea2febef8ec6df941eb311299b9034ef733c06774f01718d9a597d5ac99e8c1fed524a54454bef874b9c056aa28a39022694dfa43ae0246e55692d21f11a41e19026052d20b0f2a32f325f01bfe9f5c600ad7ad8aab4b1bb3dd95537ec98f60f07e7a03f1283ae56157f49f34fa77caa48af58134b99d9a792f13b1ae15b1c7258d06e22fcd8bc0ecf0846cab98fa94e6f1c3009193eaac6c3bfc5b5af09a2301986cb8aa3a9e4ca2927b79f0af44309505bb18ad0df7646011643751252a8d8b15c5f8b797982d96c211561d3c0e872e436cb4b7fca9d8de3ddcc47a164ba3319548b18097b54667e19a30c84bf6c0388ae3a9db7137e4de23d46e75f92cee545e9f41da971946848ed7d84721801ad0410e7c82176eaf75c53dbffdd8cb119befb664ed3d22ce94befd647366718bc2798b4f0e92793537993b8544548e2dd94483ba25ac75e5213e5a0e6d43a5ece183e68f2020404140ffd25959cd3f9da1727ef6bc576c57aaae20baa63a3c2cda6c3fb5717f9da2fffc68fdec98ed7560b91dd49149279029b9c8896a44d0b542cb004db82d9b9985ed7480cf1389548ebd784f260411de210b8513b5aab50b36f8b10ff666db48005fbf9ef01be145a48b717d6140c585eac537774630565789a672667b825119e8498577fb9458a18dd406b77f30db7bf9aa9b6aaa1b2aeb442031f2be7faff08384d08c58511e0307e8b49f47a29a80a6c5e9a0212ad2a119461b5a0d56452af5d30f75bcca0afd77cfc25689eef7b3c1873a792efcd1dc18825718a097c8021ca02bf6e07013d36b56b428cb94dd0e14a04d9194c32809aee307ce2afe5216e1dbc19d7b71bb60b3491086c4f21730f1b1071a9cceac02af626b33f19aad1f604c21d455c4461f8cd0e35262922bfc16e84e13fff456f7844d3446e75b7d06449ddea53a0dea3f0de21e5a4285ade1fee5f181fb38e7aad50b94b1a69aa5e5311a524c0867345a6482b239bd9f99553a832d21b5a365ddcf855199bc6b563d9477138c2f2bb611f1829404ef8e4af18d901abeabdb2e23fa3f46dd8f30d5fc5aab712e033b12eac1e58b719b1b49b30869731997a7b6e311ff7ada0dc3ad465a1c5d7379d204457aca7a96c6d7750d3f9343361c0c0792b1c3bece08dc6dd1de5fcd912cb8a9c4a12db1e91ff8fb487de6e83afc41a8a229d639149e902d8b3a303cc94fc4e28fb815350711b1b0e9fafa38672dde7065b14f39f265e53ebf27d99f87b93c0ad0efd5b8ca1c264138d6ce86b72111d1a6d8523ea0cc5b9a2d66da1de38c308cb0ca88a34e835844a47f365d179b7e1b9f48b1e50350330745521d2780ffa1b273b4bff00eff9a70c649480601d044b04996e99ba75b4f3ae8c91aa351a92340026a6b2b3edf91453dde9244e73e181e5df8834204ffabcab0871c3cd3f3883ca8f52e2f61bb2b07e2b99c8ab4b7af2e2ba6776169e67dae5d40fdd2e16b33f1da14f76ce209b63ac54504d620ecc5c298e0af0c9aad10e6a10777a2eb8a3dc7eadf5353895649348429c16b09875de5aac066e90cfe746ba41012d8e70126ab251ca35be77b6b73127d39870e5f835b309e9f1d5ba62033d98fdf72abe213370fd16b2a1d0022dcd8e11040afa0809ae0735709c2ab008775b1056dd62c77febeaf8f399b07c389b1cc13dfa5cd7f06e49abc4b2dbd49390a6b12bbd247df5467a47ba840b9166f0d1e3832fe48329468eb1c6f94ddaf437ab73e0694c9de55f20df078f2c808e27dc0e4ace4057c12948d22dee7f47564c36ba8bda8c8075e1f8d805712f6f7cab8c58d3f49f4c4618d577ad71e491eaab9fbe77870e2324de52894222a6093452b2b01026173692cfec97b15a94d7b606957bb535105629bdb2e6dc8ae143c09c8433d506f821050662b17d7055fc1fecf072ea8a8249a5ed20d159eb7ce8bb7766bdcab73632b77bf5903108ff3b7ea5edd5936cf8adcac0d4d055f51e5085533370676d2c6629ef531bdb42155fbd1b0c72cb6b2c3884612b8b884ce858b8babc4e63fce32c788ed3ef028a1a33192958cf146ad3069292d3fb767d70eff366e0aa183b61bb4952c2e4bb61e84df20ada1a93bf6de88f30ce1d32d277aab5a4d27e495ef4841db1f364721ca99e05a52d5081f9b48e0c901116c0669b17b5b8b2c1597fbcb6d3750e2d05dacf9ba24c6f7e823b1cd35312999b204a0048ae5b6ac46b22984e33e34b0c349481b68bb464086b39ff009097f57531f6fdc88b43a85ff13853a632d8cd8a84b4745262b1c299d81eaaaa0c1621e2183977819b4baf7bb0d25368fe654b0d19637cee408824d0ae459eb40814d5987972604666683b4c14df04fe06bedf6c1d330682dd36090b2163adf66b0b8bc1d1f76501c304699f0ebadb04834465278ddeaa691dc9b4861b81b8b90369fa023abe08ab6df4b70167b6d08b0960bc0e0e12d3654500d4c93d2af54bdeebe018330f4863ffa2c45cde5f3dc7f2cd6f97676f9f1400e4adef7f94c5ca0c28775fc78397266d2c1973da2bc8ba9ffc5b352b270420ca5c1833c0724e93a652ad215e62edb7665306a2016f940db581a670b3f18913ccba00a3209476c6cde1e440518091fda5df0721d0009d306e877c5a0c20d90290f134b20e399ca818d3185f66b1325affe663b46b0e030786efc61765c6cb665b863512aed12cb26e31450800e70604a02026f812feddc8f7ebe4368e72b4666045509b304fd82abc391910e1662579a0bd4c2ae9aa1540ce019c4d4636db6eb4f30a81b29d49c10e4733044c26d961938eee0c80600722eaaa2657fa69f1125dfaf9354f13208ea3d4b25a0e25ed33962d03c0929e25cf08dbb70054d4fce2ed09a069452aad080114b67035c9bfcd11ab30eb7d27dd9959b69b43d66eedb93e30ddffa8ef9583cdd2868684b0c24b9cc6fe32dea6b03fd8a0ab7c4bacf2dd605f79667826bf177d7a8b9eaf29ce88deb07c8199a11125f7a53f335a5e0aa604be83c7bae7d27995be52b4129066d47836839db59f847ddc417394fc5995ee2b9c82cf6b755bb3b9e87a2d7b88859a3265ec8652a5c7ddde659ebd82b8ad5c496b0d4390e5a21c6358960a48c74b4c5973db88b7c4482cb2288effa4488ba7bfc7aa88bac4307ed12fc273924f0d1293c6f30fd6bed25226cf001bfed218ff3891bf912e0856028b27074388d4801b01f7fbe45b81dbcf70989c3344b43968daf9b9f13c9d2604c118091aff447ca937ccbd1b3161c976b7b61f202bd0e583940b2c7642c8b196aa8928b69d538da62d7f5bd5012f40a64f70abe99a9b96e1cfb6ada0d796523e38e4ff933de3cc1200cc36653e33e41bea639bfe593d6dd9723417b59765b4cfd130fd063a5dc1a38a374c7c25fdd1f9b83009b03d78668b57ee7b05c3229c4805bce9245b84d5183d049f0afdc8749f698a21c88f5b72ffec5eaa04ee8c75e19f819f86d9b65eb0bad98e142fac44252042985551cd9320e7e1ee05a9a1d95e80d9fa5081891c1053cf04ae49b9d52a1bbdc4580656a5b24c0e27f3dcd2267ce0b09de1298148fedda9aa17a44409d553b27e252ca225e0e7c2e074915407dd21854386e0e7822a0132f1a73b33ace03e0006e4277df373a34af5b5d2054dceaaf9418d6b2001a8997049fb741d8e46486be8ed7803e9cec155b9c3bafdc18e8aec40569e12fa73cee24b7f91b89a36deb1a051f92a04ba296b3f43f142f7b17c0dbdb66d5bf1929ce4a892efb0a0f334f4fa809d341917f5d6c392912d832760523020e35962027efd303d5fdb4eb0266701dab768f84c207c297ec9e9e4741e174334a4329fa32bf830d2c6c73df8d684b2f4b7e31b199ade8503b6bb20dabd6146d907f6a2c7275049dd0fc8bac3a2803d51f66d345c5adcc9371510d93a61774893307a0ddd6ee1ed63f0df7b6d6d421db0eeed9cc83b62ebb1821c17250dc40b003b1b5a6d404e49de75c753771b5c5bbeb04cc013eacf1fd83709aeefb7d047c8b6f5c27099dd29248e2fe1d25f6db413b7f219777c38ba49b4264c1fb8cab5c3d61074b3f1ef74935943859443ddc437bb05b17b8c54ba45e580db84adb8237c6bd3581206e25d937acca7cecabfcc026c704b54b6476222feefdedb9d0c08fbeb54ba17da5bc9636776fe818a81f8e5b6844581f28763abe4c5489625e6abe1a5b851d2e145e86a0900184a4f11043967a78c418bff927c4f4accfbcb6aa00df777ae1bd79ecb4231e6024173d1a6349efb53c825e9a457ac084803bdda4ace8a922e5d21f81e48e517344a16ac2331bcb82389959b2888c8d134a791d936af8109a1a1ea27a102816af074437eb54e11de50cb4462c086592280e3b5030d2f2c145dc3c6f73d99b27235def877222a0dd1ca158309cf7c7bec2e784e8f104fa1b55ec841e48f2fbc177be2f82254fe09dcbaf39e0704ee2e3f1bdbbbe7379c86ab32d2f9edbd3fdb15d1a2b9bcfad2e3c20cb1460c6032d352cfd76ada487c13930101c1bf432d695084985d21e6aa82481072f8b856602fbeba0fce437ad9ce08310ca9427b6b297645b240011b4714037a4c1eb255020d7b0c5d10c7a9a3a4d97b45e3101ebb20942993f2537a5880e3b98f6d9ec48bfa31cc00e6ed790a801efbd6925a6a4dfc97a007c6cf4584d92e118dc33df57c67378a68a29c84ba9b5e8b38ec56699a3e988872497b5f51c622a48a5937c17dd8632c7981672128c99d45c539342aa281bf588bb25da3a8adc025b0cd1373ec516e61527d8c62e4ba9772aa553e6f0056a3fb2fd022ffb2e0d31d45c119fb366c5d620176c6be2dc62f7f9508f1bb00af1c58b39c14d1d7f21cef175dded3bd1714ad1bd76e38a840195e7c1afe82ae2256e879d40b1428039a60ba795c30161aa7036df97f54f7a6cbf0a05c549faf26bd326d903baa84fd6b7fb59ab180fd6ecc011589300382c0aafa5185de203c5e970e42301dc93ef73ff55bdfb520f1002c0f450ce3607bc95ca018d6fe6f216defbdb79452ca94a40c800794077207563a551fc6eb218e53791d6355f0d69fc16d1e8fea35d577e833de72f074c2b8bd5db9c68e4549fcd1d986ab6408396a4a94c8cef44ab0a8a5a5cbf1e5048bac797194e3cb4915343dca3c9312274eb22643662df3526f3b96549338f264cdf1e54395acf960c9bc8ec6d7412bc0a84d09349ea69b0ac96b2e624cfd1c5ee340ae503f056f9dbe9e4ef5b4c277f209324541da66384182c9a482cc32ea6c9079c66f2e1c0a5ef6384c26295838538d99e3cb04574c37bcecbf524f0b57b2617f50ca3ceeb90e7f0d46a7ea735e07f1801df4a41c5f4e6c803d2ffbf71a16836be9a04e39b199b8162ef34c3cf8e6f8faa1278f3c997936fea5f361c36b971160fb314edd0f9951bf9d3854e723fb5c96e4d34b6783cc2fbfcde06474d9e7a204dbb7ff323c996574d9570202cbffce069965fc16b54ce453c498fa2f26eae384c4659e3be954f58931f53728b861a0fbe4faa4ee47d7cfbca63205bbbcfcbbcd20d51e263536e1cbdb6f9a37facdc4659f3df720e9395237b2f1d9db781ba820db67bf6da3cf5ebed77899bdc636fad1e8036d70234fe6ecb3e7ae27c34ed5b75e8a06e166b3eca747f7edb39986d799e4759ee1c58cf2627ec9270fbc31bc1b667d170fe4b20907c95ebb9acca7d843d471dde396d9be2b5d6d4305d134d2a348dd48b4d970935131709f3df7d967d79379d3b0f6a182689f5d4d24e238ee1be8923a1fa7d8e31463e4d3cdef9659796f460f8a1ed47e7be9a1ba9148b3328bc1755ec9071c5f3e4932e833c8f52313b29683ac3d77fdbebc5ef6d9b67d200ef6b36f5ee930bd0023269d6fedbc22a553733650a7ba653038af6426b9bfe914b9df6155ac8391fbe7952a9d6a26184f14ad77ce69af87eab88dd63bef7c99e7cfbf99458c805427579ba0eea6692a307873f7732d539abfa582faa753523a05d453da897d99bb8b2146b61f8843eeaf7d5aea64d0611e05ee7fb0993493f66927fd1d25f690ac8692fba777294bdb825472c21392f8708226ae6cb192370002a2092a4a7841c40e5c48d041161cd06c6a6488520440c589111081095194b042d28124fcf8e00711c4008709578cda49836a6aa200cd39e79c937a2ef0d081350268da6aefb67d35b7c608a09ba5e20f3ed334ad656cb633f2fd5209b66ddc36a9c53ca0f69dfec5af7d600cca3e30c2ee079eb69e3633d0afc608a039bf9a18d33552d6c498fe28635b112eacde4cdbb8c971de92d3388deb44233c31f69678c48d482c2d25d33499bca50928680a9520a02a30201367a2302a94fb63d02a148cdc7fa242325e680c3551286f89a2309d2292e8b49684ad9f28527e5c754a0572d5a16aa55ea9433586c3aab1b06709939ed0898f0d6d909d62a9d8200b04da2ab99fc23ad59606d7ee73525aedb4d65b5a1b1c4e96ef3b44992c36d0cc89ca57911fbbbfe8a23e4fa8eb870205b95c2e97cbd56ab55aad16bd4e9ac26030ea2d28370a96927b0a951f5d9e1f0bd349ab75b95c2ed76db55aad564661146663e3ba4e241a8d30699248de9254ca9445735a5427040a8209c55c2e97cbe56a394cb75aad568b3ea12efa4381b84e3472b95c2e176eb55aad562bf73f4b4ba96432b9b8c438cdd3c95b9e5a26104c283614866118862e8771b95c2e17cda12daa4343dad3520ac3300c4d2e2e97cbe5eaf74e325e5e50a8193368d498356a78cb1a2c7986b367facc27a9f9131b6285611886618d4da0d80c128a0dc97809c3300c513556633556633596fb3f1a1e29c77c68e6ccd6d4b1404016289c612af57f3acd9ee9339f4cd7fca961230cc3300c73ff0d0f05d7fdc14097658162a9d4ffe984f1f521cccaf994f3ada9f3dfb540d602556a81fa71dc9c8b7383b83997758bb8adcbead428bfec18016ea096cf5c96bbde81fab27ce6761f786ff681a7ff5446e1fa5c9fdc2fca343ee3f7627c3a7da7720adee2c1f2416f65226fc598fe2ed36879cb5bb14784814f28d112896c67024b89e3ce8a3de6ef18017653ee1060f9ce9222060c62b846b1111162bc62bc4643f097d78bcd3f7e8739be8de5f895c69fdea526b08c3113a182dc0ae406b23e3e29a5d5bec05a6badb556d4851d1181ed6767b5d79d889b65a7d394da46e9e570a986d2b651aeda1ddc1b7cf8d3ef28a5f3d6ef0522a2d4ae56da89a22893e2eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1e866118866118866118866118866118ba87611886ee611886ee6118ba876188e57739329ef9334ed16884a7d31f1a1a17604945dd0f2dcf182dc0f2492cdbf6d1b8543447b8585a368edb845ab81237638f5832e1285d0ebbb47431d0502ab1904c9ca9bbc1c7fcebb2f9dcaa64fa02101fde22f30f24fdc3c5a5bbc187f6f6634829e5d5ea76aaf5475d0c0f98ef38f3801ce16adaa22ec6e9546be7c424b2f15dd7755c0ad3777c6e3b3eb51d9f3b3e777ceef8dcf1b9e3b5b4b4b4b4e4d8f1a9edf8dcf1b9e373c7e78ecf9def743a9d724cdff199edf8dcf1b9e373c7e7ce0d1a3468d0a861c3c6bfe77d37e68d1bdef2466ac7e78ecf1d9f3b3e7770789ef7ddb88103070a28a49063e6c8e12d73a4a6eff8dcf1b9e37307051c38504821851c3952291815a60a2a784b15523b3e777ceea490428e540a0646051500a063ead0e12d75a4a6eff8dcc991da49c170db161f78239990e9da69333542168bb543cb5499e3cf4b4aae1f8bc8959b43b9d69c5c692b5739d432a0cdc9f5db4a759d9894a40f87f4392d135fad1d727d1b44cbd840d1972beeb7cc63dd67f9d8d55c543ffe96df3a8f457ace867bd2735f1d7298fa24eee5aa3d1bfcbda8c8c92d5f13fad743d9b0fc7d96cfb284c855f772d5fda6644335aa492f24c34fc2a4cf017ff6a13aae60441ca67e7b433a356153c8f36ec2b6d79e94bf0667f4a1a4e843c9efc3fcd96437d783c9173d92554b666ff359f6a2ef66680a394ca5ac5cffce18a59d8ffa4574aac61944aed6c689ed8c2fbf99d3a9fa1d932df43761720523c41ef69b3bf05183a303d87edb5f8799cf7dd47ffcc7813cc8612ee4c595c7620fff5e9a80e75baf66ef7c28c6d47fb982e9bb8ebb5cc7ad883274033115f399fb4d98c3d4771d1d4de7ead09141d7d9eed530ce4ea70f4673624cfd0d60fae084b5ab7f7c0625e47e5681826032df689f030f42b21cb49bfbda871de67e4d5047f24da7eafbd0900f75ab5badd361f7b44f3f81c1846243cdea1c1f1f9a309f27d2f5a383556b7dc99239d743b2922da9137bc8122bc7bfd73e6c0af90c9255fd19f399b9aa3f87ea5396e7c41ed276ff1266ceb22ccbb26cdbb62d04a71ebbfd4cf9d99ea878080d8a7e429988a29855f4abfadf71444d9ac7bd189f4efed96fee798e73a76010469253ff4bd5f6d1b76ddb36ede3be69059639e6fb8127fb81aadcf5a3dffcc0f70f4402152c2d4e80e528503a359fb6933c1b6cfa6e83ccf1499eede3bf438c99ef9ef3205798bf35a7838541f7f1f127eef21f07f2a006ea2098506c28f6786902ee77afe6d8392bc6cc2bce8ac5869ad539dd6a1dd70f50104c48b664287be21022458e802a150f1a203533e860e1f96087acf9179fde638fb0c76790ace6b78fcfccd5fc7ee2f327f6900e4b42fc081be23328ff4bc46750fea112503f7b21f6ef97c37dfb99fd509e83fdfaa13caeaec3d077af07f809064f35f5619099a6af4b9684c0407ca65771fecb1262ad8fb9bf212cb187fd2020eab82d853fc232f6a48ec38c44f7761873a7d3f63595ca3ed92ab53ad5c205ecf7a2044cbf04b8e6fe763d5467cfb2fb61ff7e359daaef8019aef54e9d92d7616aa2c320017fc627c02d68366ad098817a91718ae1622ab5b090f048d4719b965d5be9f4e6c99ea663f6592b7d6e0c708cb004070c3b3ca9f5360b3c5c30020e5eac22284155a59b2273a4044b337438a127fb8decfed80932c8fea79dec4f8865ff54cbc417eb27bb2a00b155f7e5d13a78792387f3148204794a0e2ccd90c9fdb71ff3d0841b5c91c271539408c365cee4e6e5fca6ae2cc97de9109bfc4d7a41fc094ec820121e2839bef840d222f70fe08b0170c00840f00194dc5f3091fbbd600215265fec442ebcd02205b9b398419432831ff18a58cc420b2a51e48e3fac52f60f44528517b97f052d72b522308808723fed6088a941ca08b9bf763fbe1dac90c5003610af2042eece870dbe4336e231dcec1f380120e468056b876ca44bb93f90025348476c60504d045a0028379d7452aa1281455a90fb691a866b030b5cc9fdf4022a308026058ee2d341ee87c1f220f777f7832a91db3b11888130723f0cfe64fa9ceed37d4e779f734e9fed0311986912b96f0d72b790fbb347c0a1044e4c912454a24405b1073e3a3129ba68c11280c0317e8c4c0023c72b96209457c8f18a253cc9326465996b2812814ec918638c313a91213633c8d02929552cf4c8d0934b966c2ac0a064c26446b256d2c685be893d62964fa54a5e81110c960e1ce594256785852c29149b90a492dddddd23100b51474be9d20f587ef79b3cd98ff64a929423919691a411b105b982b842fd152091e36b20ce4897ab870e482272f733fe5b667badc5fbf8aa96f98fcf42cb946e7c26143e3e9096c1f1f16568199654003efe0c2d1323a3e3e30f8940cb004046858f5f43cbc07cfc222d63e3e31bb1406c21c7c7c721caa42061f15bca2b63ad58eb72608b3a49743a8f6be956e0d9f13c02f8adf39a0a773dfb9ec7a3facde359e151f07804f0373c9e1dffda0a8f4300ffedf096b362b198b35ab97eea062006eb00a35300b092ebabe0c54ec15cd172ec58bea6c224cba20e8afbdc2c760a6c2a37933ef7e9a1ec3e262882dae6e6a20a0178b09a6367325512ece84a2e3dd267704010a579abd6695e70495a6b6c80b22ceb3a2032fcacd054bc3ee8393c96e3388e480d42b3721cc7a958505d3a2402b02ccb388e870b3c545e536998fab7f3d1f2392132c9233771c8b7c7f1b4a3b488912c13a574a46c74d0083893cc0942f4b7f3c525bc6d2c1c96b59ad6d96db356fbb26cfb66d77d2e4b3acfe4048e2f1ea0e4f872c224cbbc5ddb978b5d74df3d473b1fdd566bfded662ff3cd445b967df773db320fa5651b8ad48d4459b6699af6db6d198f94669bb675dde7a224f794d823e6da45edac945966834bd98d449a244979b7aac2bda2a7e9d20d9c65998fec37cb598fc64b97d7afed72e972953680f329f600a597bde7a3e5699a86d7b907d5f63ef0d374ec6ea880ccf7a3b5d65a6b63521dcbc796f1ecb1cc324dbb99a671bffdf5501ca91b6d5ae6c5ea6454c5edb0e838ae63f911cf10346ed4b1bc26734bc7f29e17b3e6f9c03caabf9e8fd28d1f793e4c28fc96792625dbc60520a6be0eaf853a555fe401c0eb58a7eaabe0752a2ca04069289a0c3028a11c71df5a4a0798432cecf3fbd403427faa683b3902eefb775d0c34b060dfbb0873637441ec7b901828803150d7daa44f5aedcdb62da86536e9844291d23299f62f7a154d94515a26be0ce3cc10584f7c19449c294226c9897f24cea84e562210674e357126462bb98db084e0c88e9523374a4c5e69ce79f3cd239d6a239dea6769020f9913065b42a58545932d1d6224af487681d4189296554555a4b2a49e2a8e3ffea56c3fb29065c0414ab90ee13c1d34245a6f587ca586e9bfff02ea23d9f7beed82d0bfd4d6f941e6c7d1eea6ba07a7f98218e49468c0451459c726c88c841d9a2b712f10cc20b7e4f80201148e0aa09689592c9124fbd79f968959245992fdab149f92fdc3ecf349dfdb732f84f4fd5b7bfd36dcf777dfcd0d92223543686011c866f41dfed1cfcfa664fad223992ffab8e23c8eeb177d3988be451f6af6e7809ab0ec2a87f1ffd28bbe7bec3ffad237fa6efee626761f6a82cf7dec9f1f2a01a3ef5ec8e8bb2f871cf08f5e48e9bbefbe1c4c5ffab802550d107d879a5fc96bf991c7f22e8f6425a54f0c960c5b3e21cba585a53492ad18e1e95f1ec94ac64b1f597a3cfad2e8a3c3c01e7f374d6cf09bbe1b893fd88d740161170632c9d183329625e7a16abf10d287aaf2b76b9fa651b01c30b1928490c55a71cff24d6c484dba36ebeb707bb0595b2b74796791482d301697efc6e5b9277ddc77e3f235e96bf97e902b962ff622e3e4c5f076248161183fd831d3c79589c4f2a0b3fa6f9ad86c6ffa9b2636317efb1bff9c02ac5c9efb4edfcde99bd8989efb6e4e5fbb1ae8a67dbe1fe4cae52b7d5c951e6c9fd287aa8f64b52389d5e843d5af0607c9aa063550139bd273cf7d374d5009e07ef4365cfd1bfffad9706ffa6ebcf5b94fd8e2b178b37ee02983f5877bd05bdc9743139b11e8610ea30f6523ea9efb504244dfa16ab857405c719f903a7484104210821f166be52e87f1bfc9e9d5e875f8ee45fe3b92e0b8027218281da0420b2daa8cbe1c74e03ed6879a5f1014aac6610ee38f42d5b06cf0e833cfe89bdc1300c7b59a2b1c041d4c09b7f0a93f1e7398e843d96c2ffaed451f6ad6a01d51e0b89aadc9b2e1ba0f35bf9afae330fe15c861fce30a9c3bc0ff93fd6dcbeaf85b96cde11eac4f50f39b4f3ae50fd6f993fd3725a14f9f6bbd30fba78480e34a5bc51538435b4232fbb46454e38c71ca92bc2d23bb6d8458b6cffbb9cfee86415220a49452be4fa153e874fae3859d9392b21b0e7a335af671768ca9349c4a3108f5e702cbbf41ca0f7e59ca9f5ec718f969dafb5b8fa718d3ff5ccceb34984a5d1784fef720f60067e0d8126762bbf7b7aadfb341347dcb98d50fc7263d1be0f6e9bab3c640092884a458020a9d970f452cf1440c672809142e187062fdc279654a54184e15960418e7f8c281e2468e578451c569b553023bc0a0090fac90828a22442b3d4132c059e2035cf0f4cc60a325e8ee17ce13b953c8f185d3431ee5f8eac1ca12dc8d1d4676f7c718797dcc6c4eeaf45f4cf4dd6b61c942b8bbf773ed951a77ca4b46a8bb7b77a36093eed29fba4e0e1329a5d861ae12b67befbdf7de7befbdf75e13c87b4fa7ecb999fde521ff66d9c7d96fc6e893c33dd8ba2eb0fceb9ea294522aeb9c73babb40a98cf7ba8d104b9310556cb765623ca2d6f77074a5543c2abe1f18ebac546e344d9980c17b9980df3dc9bff2caee136efa9dc1dbc5e0795e5c73f78c5cb5e344193fae53536a55542aa7156d1d16d4a95843aef652fb71b3d666f70371a97a3594724be954fc395dbe91cef369f0f9e3ea5474a7b11dbfc727544df70f9c734e4d162193c8209c25738e34185622e0a5529eb65a5b6aa9b8c67ffe8d331a1e6d1a1e2d31fd5f80c119b3fb9c1f1423fd5343694a7c2419ff30bfa7943fe594534e39e59c734e39737059441c26dae0a19168e1883d346e2402e30f0aa0ab2c8e224746222074d780eeb7ede56aebb6ffe1ae64dc913de7c95577dbf7ca7eddbe1877644fd3d927372b72f62e60418e2e900dc479f050a952a9ffd309e3da826c83442bb2fd6d6a5f8c31f7bf5a674a070e0f646dbdd8bc40927b543b1bfbf5d301256455bf1c6e653f67ae7062dc113b9bb9b2df0f3d8c56f57b45d3deeff58b7107e8b8651a7713b2e77b0743677f2293bb44244be6b45c90c17805a7234bf9dd2073cec53c714627439d96fda40e0b7ec4181b3b5c8163faf7a520dab118c58610630bf3fb062333f3b0504256f4cbe156f4838cb2ff28f36480ba7bf49657acb54318e7f8ea01891ccc92e3ab071f7ee06148c543ace3c534c7170f5296d8502d2c3f9e4eeea99ef23bf777ee0f64409e4fb6989898172044e20fe6f1a3ba3777fb03201301c18f10112121a1181d397e4c0640e64a33ce441c93e36f2e8a2d295e42b4b28c1c5f4284d9c6564bcaa23857ac0cc53a555b50822fc1a78f8fcfa06a6efdf964bae6cf040ae222cacc2762aafe644225d7df320f655fb3374dec87b2ffd9df68bfdd68dfabec7783cdf6dce5be9bb8a9402c7a504557713542f5d7384cedef069bfbd92b20ae80dcd07c3b92582159691f2afb5035a447d964df7df6ddcb95f63599000ff73cf8e30ad55f0d8ef6b7e67e3772a5fdf648566074d570bf4dd49c13d601f633cf061d64964deaee5b50c9aead74ba0f3e5bb30ac90d48f772b4712291a7ea54773a525d8c7e985164dac675d1cb92d326f753f37169d0719b96c5d8bd3df8847d60ded8a2528846a3e72a9759203136b537abb19941f4f237d1f6a2cf462f1a7d1cfd367af95cf72027da7ec4fde803bbe7ba8fb913751db7618f881781210e98c1a64606209d4aa5da53a918630222266a7a8370567b69f6718688100b889e9131a376ce49edd66981efe965924ef58c293fa933db3b1f928818d3df6581c14b446e4944ec11638e2f78342ef0608188c786fa81981f4e859982e84a95f0d7a8767ce57eb0007926778edc361e8cc1ddbb61ac9d4ed9ff4da5acea03e2518373a909087a5db6884e8b64f61c82465aebb5f2fa80bad5306944e9742fd58841a9eb6aed44b5befc91a8ebb6eee3e6c4a2d67ab62ee8b6897c46e3ba4ae909e31f6cff4e1b030e6ea7a8eb28fde9d7dada7197c375c338c6f4e3bf5d77e053c6da3233a5520d18e0d1487b3cd266f58c89dad54bebd348657dfc118bb4da519f23d1d711c1a595d35fe3e4ec9a76af79464e59d380d6711e8367ad75a0d66e9f3b48339d946a1aad5d104ae9c796b9d61ac18b4add52f7f799d1d689ec753ad2aec0f2eb675d68af3dd7c58043ae37d3503f9c62824bd8e95b3bdfbb20f39bf161fb45e7bd530d871be43e171509d676f4ee461935ed3d8e5e5e0067eec1518e2f73654e2cf070c15be0220c1e7d137ff84778f49566f412e91eb999524a358ea3946a1cd536ed73ea9e33ef0623f87a464ef9c615ea675eae797607f07c3f1d6cad967e5a1552027198586b50adb1b6526a6b95376a209893ce396d90de4dd3a9173ad5dfdd6d62e19fa971218317bc5595c17b7353ea3ccca644bc8a68e5f8daa192c102e4fe991c5f4380d194ca8fde1a646d6927bee04739a5a47552ca82fc5aadad34f87fdb93c3c8b7b3eb37efbdf7defb3ff0585d04f8ac1d735b8cc20730c8c5fcb99f47ece1434ce12e098bed076a7eac420497524a2965d066c30f947fac92e7d38f315c777777ab3e806324cd4c437ff8ed73af22a2649f91fd4528c03253ef47bffd4628c032d3b45011390e4518fc6028df9e412b3b0f95c3b80e1c38dc05190cc65804e348102d439d64ff2242d9df481324b28d7d94907abf7ea8f9715565e78327fbcdafc31c29628308b8fbe430ee308f040655d93d96155ad557552fe530fed3db80809fc6fd81b83f0ff79e4acc8831c66f668b309bf3b8f1061dbbbb65b7947213813764549014c0ac9252015becad87c0f2e36b88293f4304a6217ecc608c41b2581d02f005669e1f8824c7393d3e21c71d405bac24ae53b353f14b5b7cd9de0dba187d3a914bfda74fa978441790947252555ec2020e978ed8e9532a773f8003a155061d384e259717456470be700020323cd1848e7955a51938f029d53314ab21085d36c98e6cdd2540558e4922ecf54410393e9193555996659e9432f60c653046e9b1f282d713cb3e9ae2934ecaa3049e9f1c460b3c9e137477b5495e3c4ce69cf626e169d55aebcd7858a2d8ccb44c730296fb3dc7570f2598dc16256dd3369ae36b034080d7fde544949394527a30c4d87f9d70125f3961642796e4c4f2cd5e4e24914bdbb6719d0898e47eb0bb5c96e3cb899628075b090cf9d238c0118b9ed0a9ccd10a26b8c0d1f2678b39ce2dccf15f5430c93146867b31c1c9e07cf5002577108eaf28ac64d059af1ea8c8e0ed5e5154c9f14bc2d64c60f9d1e5c5e44a162280bd7674b8d823be9a80924b9d921f651828d8dafe920ff40009ae9c2a42700185bd3a274da82638551380a9dcaa213890fbefe94f4284716262440bacc75a1fc0a4b82fd0009181cbf1258410aae02f84dcfac086d89324968491822f60350885b04488841168d00221745f0cd1a026780951c5cbf125c40bb296e34b8814bc5c81e5bf60815f382f57c8405ef9c1162b903d2f2c9047883a91c66954d46d55e39c681ca7a140d4719b968414b58a255248e1ae766da66aa98feaf4253d32245dee72130db9beac910e912e130dd95fba44e2f54b5e8c302459259d8e8120635554b76e1b8a090d6971458e2f5910678ed4f4d0bec77ddce222634615712c2453e91403f55283c6d6f5a07990650e727c498338237b642f5330458e2f9fb02fa3487121b179a3cd4582da7ddbb731a94163c61451a4b8765c11a6bfaf0b0a968f7a9131c52986cb14d56a54b65ab466f3c8d0d0a4d7e52e9789863cdf14658becd72d9e5c994aed2d9285e451fa3edfe7d3b8a232266a520736e993567b336de33a1fda5f1924ad4822fc20cec8a09e18f4c060057146f624e919c9f225dce8594ca78f5a4e102d63458f4b2d0f46578c8f447ce6e5c84dcb4c56ebb6ccb6811c5f5e89332dbfc0418e2fb7883d54e4f856aec427f5fee645197b09a595af7e5b142f9e0c4f3b7d575a915764ac53fd2f3e9de39dd3315cace9fb528b57593e1e3c8282faa9cbd5f360e7b10fec3228639d7c513203d0e87b69a288c3f4771e1187e97f69a2c31112adb9e9755aaf4830513dac752ad1c2a291bc18292e120403f9b12a95aace79a2a51a46a28ef37011cce29a98b227adf67a31bdb85edc4aba2d935eae138d6ccd644f8fec91ad5692a1230ed343a04828466cda11351b753eec125329baa2401901949e9e7eae85e5d48fbd9ec6a8846c9a2a62e850cd00000010005316002020140c074422912088924c56e50314000d69a2406454389648635190e3300ca28c5180104280310000600899a1310300a8ce20bff048c18413cb9f7d7482f4c5cdf18df80b0ee3469507056612daf039d89899cecb6090c46958abc1309cb3073ff1093da304e798911be7f093fc3135fe830b0191c638c31584b5ec6d9098783fa3e84cf5a617b31ee49f88974d03dc9d39532b5b1dec681c892c16ea476303e2f92ab55ab30b4410eae4d5c270063440b820d825b32f50a4073c66c2ef24c1ed98a421b4085740e95de49005a4e2093773041aff97d84ce516593c454922c3edc591e300f55224217a4db814b7ff22e43bc9644518da7233346c56c8f0a32d04702e62e73a6081bdbeae89556acb05693e6ad157fd1cf43e9c3f9cba73dc2192a571f0babe319e248bde8bcd028d81b4185919617f9c2cf08c61933914dd4e20931ff1482eb7436f6701c2f88557df0f13d80d269a4a769514e15fdaaca7550ff1b0ee300db23aa1803a19e1e3e889095d8ac34130810a2b69c20d8514b36f86a72d0348be6050d2d85dfe5936cc548292271afcf1beda994b845ebb0ae7ae572a94a56579ed6d797f4357741b3e27f544874665e76177ffa7650731644793422968f920e2eb109854bb006c4db4270c8058362986f1f466d07e38f30c4fb73582d29043dd08df774101742a369f87cf55ee98146f41b42866a11bfacfffddf1f5033063912fa2ace713944da2e44da1e291d2d012a58f11ecb11270b9e740f6b0aa4a757f302331109e7763346bec9cbe2ff66f1e7f051f18757f9d74956eaafa104414eab2c48c4e18a9605bd5e8ea2d136c29d0427e1c67511a65453fd48d621efcb7388e18b4af24f72c1002e723b1425ea0789161c9a0f8990c3debd51d5b7d2ace269c9dc85eacce941aa81d425d91d5a623e4d013726663044a5da0e4cc00d798217b7ad19597417d25ee09c676303a7cfa778ee438120f47ef857e1e013b71fe63b10abd0b3d2c3350e6fd79b3feb4eac0ba84a44b95b66bc8d7fa82baae2381219fa2e95c82ac72c3ab07e767dc32571ecd8e96a32cee00bd0d163c803e88cf99b971dec37f1c6fb0ae384d47399dfbbdbedfa75fe2f9694efcb6326af7ec58d2567e70bbecdeea7537dee783a7a5b410ad158409d874f4b89fb35007a76242ff3e53f3b9735f4357d9400e3b05583b5edfc312639defc73b9774a0ce2a953ab16eeb46ff4a7b679f685e2e3bb6c8c795ec057f651e9aaa01bc319942fd879c296b2d068fa9c9f8b2a257e09dd39ad6fd9e2364020c40e59c9fde0d966a28d3a5ea22804ef4a42353f5226d1e9bb18dc2b733e0da74796e8a079844015c0baa5b555ce4b31b1656eee7ce8aaf16ef20c022345a2cae7c3b663bb407b55f77635e598bf11a6e3157bb8955deea37f07fbe8b4c81d69404a7e0cc55d216332e354c277401fed132ac219c72616e51ae1f5d0a607f7fd83af42b5ca6e08973bfadc1c2ead060f5d9b66ed7616c9b96e55dfbc80f590c419dc04f571b3220b89d25078998c8a15072f7d946c65364ebd545e402f718f6169203a58f5c00cca689595627e75d50cb5a3b18ad61a4da56606b13c7c9797e760c549b5507812b3e38ca79856fb681d17f7aaca2e699bb739e40c1b346fef558ce4e4cbd5ed77ec444e61522a9b62f45946b58177ef12b00924d32b7f47b1bbb72a3e8ed95f9eb1636f09ce80cf92ab5f0733d65542d53ddb5da0d2b9bc57a782e666effca2554a5c65a6cc5cacdcd29dfe2b28e0255dcf0ddd1c376fc0dfc8b18de3a863cbeda666b73a4fba7eab30d52e51281ad0a34a104101ae646d034c2104a5ba398a0415510b0d304f3d72d90c387e35c442d1e39ed23c3b50c4318e159c9ce027c37774050b3f3a43d8403a405acbd19afefd34b1d3fe64a1d24ff390ff4225b7a7cf1794df9e234ff781927eea7681a07c42aad63a913f4d5054192d8eaa6fc804ae10b03d219d5c412058ed98c2cd8db45bbaaf636194c401d9bf2078239d5d217502a843c3cddf1b2cda90b82fe21a6e3c90842781e61a1386d6ac0765617d934d460f7249be4661c203504e810ad06d8110e2511a425db003bb317932a692436e756cc4b8c5a5395ba95ca8562c986fad7b9521673c1a037c8efb944ec00055e722db25f80bb2d728ade4b52f9d96250223e6907bb682b305db6c268a3b8e63cb20facec270b481c332206f61751b6002da609d2f6e944aabed443afaef6e0433db245a8239aa28a9109fe1120c6d9847c36f28310fd88d693fa50cef03130634d9b0908c9ddb3161deba2a05557ca63ffd9529149e342b5ae0164105bc2614bb6268dd349cbd3a73e9c82d183ed6d6d28a8f14dfc73e97e581c01b9920b82d6a17d38479a38fa679df53df65350d6dd5da6f65ce02aa214cee1605c34c260e95f8eae400ef368bf29a893d1616cc6812255cadf9d4abd951977370a372d7c95c4de07beb9839082cb4f0988c57fdf1dab47a7b437c7c59e836b2adee459ab05e424289def7095848a1609629429597e4b10c8ada9dfe9d7f04b8304309fe634863b266692420cbb379be0eea2bde71be6475800586d85581df19476bc18411e8e074018a1c6ea7de0a4017e6157ce495575904098c3f0cfa83e3533890a2210d746776eb04992f8a544143631b70911e963c31670aedc8cf298358072c18c668c2324f7eb6f57d1c60726e17eb7e847acbcff6938b2ee36532eae34528a05213480426da00c8ef031878fa4d30ae8cfc8f5f51e551cc73ca671303ee3505431982fff8d867630e706113327071e8173ecb41dd98cdb1227320617da24d324bf098d2d0aeeb78f93d691077c2745e3c54582926adaf12022a70de86fd91960a623e3768eab18df83fa9eee04aedd5948e30b997b17d7c8e92834eec5c61ce338269fc26800e11a8fbf339675a2b089f184a4a6d713fd20ab50d8e4f7b545f106e40c7ecd7f821ed502d9e7efb3bac5ff44e29f919ce6a2d71eac2edde54e6d6c01a02eb36435ae25f1df63d4e499b796d1e91badea52aa17707c72d734fe6d6cbc87b5080243cfda157320bfaa946901e4588136ac1e0cac4c904bc8016c879436d0345c96e5e940e29df90525d08057b1ff858afdc9303d5be60c600d08f8082dac283416647014e86a835d9d659cf2463ac33516d43b7ea54384232beea09e3867435c12b9016bebb76951d1de6d04e83011f97e6a154d90140342e34f10f8e1a4754174bcd6181956a7990d9a208437c6393cb29cf400bdde6df8e4846ff5d3ed4418e69e500e066734b677300326caa8ba35ee3fdc2071ccdddf545bd4da8971f4f4fb3b2317ae34e79f0d62d18fa936614eaa0d986bbbf34708626f341d6c11b0d82cad06ab1c675418267cfc7334ad9a31a022aaf9a7555a21427d041440f9446a0e5ea48f1e72873c5308657154585f3a24c30a12658578fb3d3bc476071a0f491c86ed0805ed2353f11c1c1a743091f2eb5c7f7ae9f8ba90fa7be6216333207883c140edc800a9a1ec2c764786c25182005f8249dcd1ff11aa5f5f17f3346489c0625c8b01ef2b3d591afb0851ea9710502c4f35b0b7600ecce9bec666167c069393226ce806b485eb86618df808ccb7beefceb1c6d70a89994343e170dd9f9f27b19e0157e9ccf8d9179c212a01ddf0c36b5cfc8d055b327b53a39381be078242fae0afd67a9cf176f36d3a3b891ca4f007422d2646a5fda371178e282766bdca818ac343611463eb17f87874d728292aff175fce1d9d5d8b9dbc7d300a8f9790ca9c65849d8a12559b9392b0cf0c34b1caab383b187d71dc9b9a8ab2cf6da73b40a765ab90eeab1b478d4e2e81046548add3d2be92827c160273ec7aaa2c03281adc30f82789e6803f99c6e7e5ef8f7c6d72d549e0c72483f4560812f14f2ed520ca01c9442ac60bf7e3738a43e0b52795dd7486ce2fd1a25275105f2ebe91fece0719f693272b8d9cb8ba395c6d805f65018c12a8d7e3edb7def28527eec2900a2c43f313a9ce865dbec68707ac359983c34aa248e650e39768e07cff974a4724524596a910091fa32dad52b1c24e125b363d0adcc1585ad317f9381594667598bf76e8e709eef00d50543876e8228d3ba6ba2fb12aa2b7c319cfcf09c2edc81ddf32b46fc62484d34d434dec0a396b920a08872dfb8cdc37dcf889d6094c2f5b788429bb0230a17fcb83181f10d63f655b2e8f8fa7f3875511d077ac9e5e68d54c9f564e4d50eecb930fb74dd81a3d41b54fa55d6f50cacdce7e43d5c350534e6b105fc2221bca954ebaa0b76884889792c2eaec53aeabe92acd7ef1a4e611fbee0012a1ffc55171ea8428eff650b141ebdb4243e99bccca3916e509d8e260a04806a43d142df759c9f7f1b5f5a315c7ed5bf328df96a886e77be088728815cf5607fb07b2ab40d0516ffeeae425f7d372a2e173db86be82695d192c9811bc5115ae1021b50f34cf0d87728c1492c709f4ec7b56493a0cf0d8310f1873d371b0256b699c34e6d207525396a73ecd633b22d743d3456973b7e5edc73af4fef760f204f38eed062c8af589e62a9895f75ba9f0efb72839c741a0f10be0e1e18479f1c381332869d941c3b965b17e6dd95a86bf0335ae692a9cd8ee52e09c99bd4b73581c224322b4b8116409c52d41e42e818671fbfa5aa2403010e03b0e4d847e4fb3861164e482823173ee037e3c16f0fd3af4a5230f08ade3ccbd562431beb77499bfc09f70e87a4fc9a82a4b831b3d4e305988b13cc44952bb4173c7453d9d6d116b02952c18a2f41abd071b826d382fce92dfc4af8463d965ee486cd12788d9b80f893ad2f529ece2c36196acd07a3a2347c5cc1020fd372e60af8f949ee0123bca82904548bee9238bf5da019e05d119ac2ff4a94f4a9cc635c8d04393629910190ee23bfebf9ba128c62fd3a74e6c182bbbb35622885e9bb2116d851c13774d003942125d64c91ece3b239686a041f86aeb83a62bdbb8c41cc3f26f2c1f49a5a6add9fbd4e0c1d0fb28f38f5bb58f4cd80576786ef914614e4224a4f990b6d3ec0cfd00504259b0731b3e28971c1cab0848ffb54a3af0863eab96d06bec5fa6161bb698f899645587c991bc9515f1ccfb02e9882ec6f8f9aaa7d7e09d846dee5d9750eeff2588a849149c2e78fb5c01f9fec8dbb07eb14bdc3d17a817153c7405d57a7af22df88d6e61128c2f2a14f2cafc03235b98148cf9accd9e94a5e95f427534f08da34bcc2cefc155f8a2a1dbd0155a0fe0c5432ea59522b9ec3b070570f14ce84cc28ae0c3033b5faac527ef7f8cca772ef77919608c1782d833746652d2fb850318e7c6ba7d855783e3cdb66a031684dbb40d160ce56ab82f0d427d4d995b53398398bb7d90f60fd852e587beddd560da522ce43b23036a29554483d0471892ccd6c276b3fb7b877479247f71c976498716d0fe38192b8f8bdb8c1e0af7be4842bf96530728d4d45641fa37884a0e8ce3d8a96cd3a96304b96c4f1df9b60672c6073b2c88fcacfa4fa3ab38da5011f01982d0c3391d53f0980b1243ffb824c1961e67110ca4080c5cecfdacbba685a011562b00b233f9903fa56c2c5cd035676f7368700f1782861d08769d617850c4c132a44670b64665a9cac467e18e22bf3ed8f7ff719ec9fb6b59b78bbcbbad59563e8a2b5abb840ba517fa815930985090e5656a3572a38a584230df5fc3b77c27a7b710f47d6af45941c2bba245a303c29d5ce76bd5b5d37bf6c95ccb8211e0d5308f4b373a90f4689f3756685c3a935c3bf9a78c27beb905e41a739c5a40fe367561fb9046f4b871375d0fce167a8a0bfa85905e02f67db0ecd7075b8975bf38b19ff84607dc64313c5b3236822429894c733cde7e5398ad85466cf6f82382e406d0acc3d35ee8ae6ca2c22f08c2d9068978b417259f2162cf5f8b2aa885e9989ef0ec464a98700bf3598e3e2390063e7a1da46ea8cc7d5509867fb83b8cc0da6f6ccf624a82ef97140c59c7ccae494c6203df070e014d349847a803c87d05f61d7709a93903ecc81e9984ca87b98081473b83bcbfbab74feb12aef378b08e2a52d5b9883e2fe72f490ffae6ba156ed77b3256adc8a6975b81de88a2106e627fea56807870d87fa61a98f3a02079ec107def84f7b59a60385781fea05d66ccaf37c0cc63cabbcb8c985d8d2cbf5c957488106132bebcc004faea602d0b6ad4724f627215108bdb568db01ffe88f11ebda7c7f9899db0882c868da81979b423a4ff4202ee8b68d4610d8df1d4e830e9ba33b7108dc4af49e29bd9e01fc9307f5c81088660d77b253d142ba190cf20412843a0ab73733b0df259fa0a3167bb78baa0d58b8f288be38b34053fa1f30075a072958e3402ca07372a3c8e629ff193497034ea3c99c844bb430360281045319e9b807a7707d8b0073c12a57914333b246e403c5cab5d04ad622faa7445cf1d7e8ee09beb5e2054ac63b5e24092abf0acd2df5b29ae42ddfc87d3c58f234a83db91e03be8d562d87f410f1528677eb2bc7f8a972c4722014d85011da5cc9f74ff254d588487460622df878d41b6df4489478c9689239cf773b2f2bd3bde08cbdaadd7ee2438534214badd309ba59d70d521be4a751b1ec959514d2f8ecdcacec041287e23f2cee32bf533f88dc7b4b0dce24fc65544ae31a413654240f682c2e2cf44a7edfe1c6f5e4335d0670530ba3aab70e865b70ce7d0f0c800afcfb839f61134fc2b9525e243f0f2bd0ac7a46a95522382efe348be5a48ade1b9aacea82c5cf7a9b1da0c13df243c21f9a91030871232de2a5d67710eeb87cdd8df4ff93a84b02ebfdd4d2f94a81712238bd2ca62ec27783992803a82029a7372c8c6d786fed633f39e59960fce615df6eab231f35a5d0d0f0694dfc49f95201927c74a8dccb6b230c20a5ce66ac1745d53ab071e430eca86556712096fc575876ff73a2e9371c4838532e4cd8ea768000886a25a09980ddcee41bd4fedf26eece141c900c4fe66d12188b2cf49189dd8b54184af88ecc335046ff99a7839ea52f4d50741605abd7fa022bbfeaedb84d4981aef1d43dc5de39c38a3eb44e76979e2bc78b91a3e8ec8c609cff2936a678cf7273f5909ea87ae7da7a9b3508c970764e9ea0516202796b6739aafe45c1c02476378c0e04386586865d1190c870d2dc56d5669e877d79d8dbca962012c81bc7e159d221299b293a5433b4c6a1e7ad67328b957448642a685b0bb02933a428b8453a1cbb9acfae761b41a2e0ad4bb2ae00e7b73bb12dee31c688bfcf49518ec41c63532813f72a0584f2e398d99872d4910292d1d3860c2a8d7ed518c593bf0870eb566167ce67c88e08c1639255cc7cc2a5cde9380e2d8415d00a803360b4f900aaf8dc0ce34b835ba3ab28ee6b1f22bbe33c0e3d4cae3d335c6da4f4630053cc453e5b235b01d26d4b9460a9d5a6c2aa56c8f9179d635f249b12022ebb113a7d9a6b8664a34a6df4ea2c7fb9304ad7bd351c92f10ebac264e04c6d3cf32ac4b78bd8092d4aace65b8dae8a1794b7d44e597c41e233c5e4b5f8cfa87a40ccf749652998abb225892e36c25175c8983bfe17d07081fe3834d23cbcececd8cb9c593d29d9459e9a4a626a949ba97ad3cec38851985e8457ac77052884233ff915cc4c2cb02a6ad66270c72b3b0fc4e8a5342044926bb30d2459a89b919c149424e9c179b8d427d0b73e3566c38981a34454ac87b22a5608c94d5862b79baa3f336c0c98a04214a93e3a7a28d02a96af677a78a8910f350b67993e5a3f783c13109c3a3978ec29cc17a8084f72907f849e979921d82cce5f9584b5de95c692c860148c95f3204053255d4790b66a082ee66fe0ff422240fea883de5bf4c7fa1119252c8f09dc835e7cdb0430012d17f135bcdc3b836281a090889a9f5978ec6df4be849be798e16859aba06a13050a1f78e9df44b60a18414a7bf4569e031eca22aedc4232c112491d0b47e23c71180651fd0c7302fc05de00e8bf9ed9d43a1f1482ea70a36dfecfd3616f5becef7be4051fdf2ae0d0b0a650319ced28619bfc07c8a4b336c69ca8024e0e77989716866b54c62c58e4df11002a1f12d52d0991960e69b0ae39ebb05dc7108adc8614839e9bc418d8a8c49a866f5011095bc38de620901d971a1611a67951077ac83b7c62367583fde33ff407c0d0b3ec9d6c96f13a6d493392ef2c0be323345473fdb8c8de69267d5432f9a1dc4f2a919ab2d34e5dd0051e6789927484e77edefd0c42673d629f06eb9c5e8ee6b324db28d92657689e1fa703e46b390450d6bf95bdf66c80f65cc8f91e8f2a9b3ef04a7a64b4c09ee412e1da0969de9a25985dc2ad522af91d8a826fdf8dfb5837a1b18dd8c1055c9f4f25de371ee6c1bc4446986a1cb820644696b4c75e2799e6c3bf8730fb028545a6d181384f1832602113b94e262c1700f982f96d54f579240811b65d1b9569318d46494fc19273d911b1a6e80c3c42f15b58716558c8624c5296c7da4c7665d41777eb46c15d3b21d767a2a6d1d00a99797891fefe1e5a2426ad9ee39ec2cd05e8174744c5f464af17f2f0ad1a8a3e14e630cd9ffa5668c903ef377eb3351de77b6a6c0542adc819438ed8345713889fa173496b144013a49458e91d01bc052659dbc68689dd27271d039043c428ca43c62097a4f639a417ea1e581fefc579ab4c41e79605c9a880b75ec0b9c62511a4fdc040a88aab48c4a9abc0c8dd01be1bd25f3c43c4680002ad1679e61ac235aaec88152297bbe44b9d44734e0e82e5df464fb8f8f0365187bbf4985792b159fa55b293bd3d5004483e4562862aec27ebb11d0a9302f1b1ee09e077d3a83273cbfa2c38e4b89eb93d8344a72c7a864df86b880fc1d161317340b6254abd7e32570f255d4628c3f04f78b161afb815d76d542aac479dffb9671cb437f364654c5a14169f483e81759dc7205a3cc8e803728ced98e0a8598098cb6dcbf797095abd1208e8e8163c2190a29fe34a8edf820775823c0a585b33613d4683b28a128d419c655b0592b331477a442885dc7c0edb0ebd78015c6b7c0b635c1f70ceadaca40bafab855525d900a75c829f8e8c8c924fd3cd723ce6699127ee9e273873682e14c63548ccbc98eb1c0e745ef17db30ae0b612a502798a9e846a417dcce66dc5dcd5aced58f5306b6e25536872819a08e3f249c5aee2a263de3c951cd8b9129dafa151fc4bc34fe9d2cbe870b449d6348e077127e8ac13ad6992196b3f5f7b67585225606ea1a64f203f8330ea0970343e1fc80a3688231ef90589a4092821ba90a6857900482c2d071a50edfb5b01101031479a305fec2e556d0e132da2f7a4060d88105653aa02a26f0f31eebea8bacee8bd5a81fe288c5eb48dfbd4a976f40c7b3f7bd7d808be06f51db6403984200e4c2202b03866e5f150f4bd35d8ab8758b0d63c373853c78012fbac64f3646a77a345b9ad0937fd8fb51d7a8457626519c5833a15015ffef19fd3c5db0c5cfa6037d80cba505833ddf28cf3af0d46b3b9bbf7f4e4fa00204c39ed3ec7b810370e3f3fc8db50bee36473dd90363e2bd7590a2ec8fa967f2ef6d2b2258dc8dddce83fdbdccb32e312a9bb17199b10e3a4a7f8c9d296d53fabe5233f706f510723334fa94bfc77cc57d78289cd3288ab72d377f561efc2c544c1cd1cb5698d30a844921563c248c93ea4406c0be033587e9253fffb62814afb37c15163a3528353bfd9965cd01271310eac576c7bf74f82448e656a9e7d7db6b3dce75bcb1b397048df835bdf1922a5acc89a9a5e70e4bdb4821351ec2efa24ab3d1a35e175f72a9379e0d32246e31e97acd0f5b9cdc869718f8798a97e0f8957fc2aaf702970486bb66819cbd1b878ceab1e310606ee4217193ef43a72ee4ab1b48a3b5c37f414fe022ca63130f02d8c391b0512947645b0b0d204b487d077d8fd0aaa87939bce4d2ec7996ef241f437fb6cfd7629f2c6f6025fe467ec4305f1093e59589961084ba31e8c106b5e27f7f6eedd57c159539df980a1ee237bc2f5c1712f6050211d2892fe33c65c06f905a8592d824d91d6b1c01f88fd65e130e814e8c7253ff126671a6c314528866061326ddfebb02db8df13080995eebdbe25c386222d750558d5a7f774b4fbbf022915458d9a8c78df53474844b9f22df060a42414c53664dd4cda840ddf6fb4df8fa2e7d735c46562f5cb27bcb987207939207216797d1a2ec20d189203d2b6d1452fe0c55bb0e4eaf5d4ce0cbddd70c7f5508e35f13a7f14ade537d851e6ec888643ca7e9fc0fb56be1f0557576e61d96e490da75c121da3af15136405bf848d4a11f6c21e34064179c5e0ca70342cac19dcd80946fbe49ae885c841bd4401657664245a05009c3bae39b620245638eec1f108ab2970f9a07be60b6c89f3ac31565268ef68950b2739b4dd362756ab3840e6a640a4e7faa71ffe0427d9680dca94e0a820bd4d21802718b9253ecf720004f5a22cf7c8f473d00b71bf0a350568a4df1cf0fe8205b7bc1065e0f41a6ac537481373889abfca0b8e2ba5eb766943ca42625a3b0030e2165de9d049e4a9b65be326c25565b183e57a501c9ba722aedfe0825ebf48d2ab9227ca77ca61f79e87dfb746af180b04118de3174ceb827ebbea81a5d503ba4a8960c2ba64579aa0cd71354fcd62d1ac6762285e4163cba6d24a1b4b557ae7d33e34f6b5a7a7dbacd416d92cd266ca705c36b6ed4cb236d6a5053addeac7214a7d3438d205f04a93dd8f5ff458336ea4a0928de28a93e34a5d4530ddebcb49ad8093acbcda335fb3be8b3b6b417d22026d1bf72b54567fe104058c81d438afa7bde7b23daad6ca2c7bc7aab3bb243359456be9a89ae2d34aab0b2f064902c5e6f8f6e2064508aa4bfcaac5cb5e536fb24ab0dfb786a7d199d87413a7c4edab7f3bd7bd78cb1bd50718a92bc2c932a71a7ae57b806115c38326f4d7c747ddeaf37ce14e144c72a490bead748ddcfc7fb75e029e3a130f56e86f68852df859ebf04f889a9d96207adef54aca81fa3badf0457f877ce68a6088f0883c6c4687eb040b0723b51c42b67226f7aa00e0e3daf89bcff3de1c3045aed947483ce04289419eb4db9fec5374ccd4f77850f2b423525d07bb414d3efc9437a9966f4e68cd637159ac4df648229bf6df2150be90887d8b5d53609b4a47eb4480e2153ced05444f0eeb45fd70741efd395f44cc493e9313d470fb2ff1798b267fd92d6f827cf1aca14e2ac74caf2f8636b986f2b6b6c1b6c52fc90281c4391ded9ba64d70e46e1d86376da7bbcef3f37172805de8e096ac60bdf98e20a29bec29f87c9a69b2a146614716cb91240e69a1162f221184bef2b4ee2f119f42138bf3893816b021de64f9ab820324ab501ff98cdfb07e266b8f425c36cb22969b10357f8b34671ec4422780603005eb3b76bf983bf0bcf8d8c9c6a81aec3ea1a5475b095f0c01f7a2fe839fd96ee14e8dd114715a6719d776cdddf31b44d335c54541e109b30a0a38e47c55d0f465fc17f2c3f337748418cfd2b5d2f987d83b9e74facac3b41797b34c8f5facc3cf98bcf841c98a65122f7d4295a77840048d1e7afd5f67fda10cb571d83542d468c3c8d5fcc5f9cb44b5f1b70be58f9cf68060384675f44a84aca25751306c0d3bbb5e366dd5f7434df2ac56bc9dbafbe0bee7e1d7bf8fd7ae79c40040016f4df3c73ecd58a105cf25881dce1e0c336dd90f99c00e2810ac450802ecd1a01d9d9d2c5429cfc215b29bdfaca0be4e56cc6e2407065c1d008c5201cab0f188043613a23871a48d624f9820356980d40fd4a3518045b5f525cdfbbe4a0395fc2c8d6c838169429877ae2b03000d44bcce718e8a4ad5ee70defa0ba5a2dd8fa50ed664339effc96a2f5624cd32cbbb253bec3902aff650358492844037582b8023ec10692076d5750fc87e9703d2c98f9c1f3f4c22c60a6320c384aeb84bb07203447cfcc3a13226e6f19ef7d4f7a282bbb0bc997d5daf20702d11bfae1644da986272daa6e8454e53345ee4691aa075932b50d863af1074c115ec4832e8933574a32dd60640997579dc26b2628f84e3ee63247e78e6d6188f3ef2ebb9c00526f10c5bc3750e61a863226a32ee4f6a55de273659657962b0de52650c2ea1b58238da7c2f1b28aae92e1fb74fa9a4221debbb56f017ed3bd9076738cb7d3b3d1abe0897f5f0a15643ed8ad860c191ba1a48ea56c9764db2941283bd2b65489a67b39a263b60b44a729920c5cfa629abfa358ebe4bdebe15bc3ab481730dc9212c30275c6f248322c0eaf0bbc2ad09c3cafaff807698746cf85b83be81193fce079c531cd1752af27dc579482ca79df19b7f51634cead4975c4e8bf6a0eaffb5d95dabb06a11508239485510a5d60bc08f604e50c446f2c67962ee20d9b4ebe44bf81d9bfee86b1df8fca546735f5d459ab0b8c0bd3d6e7dd37656ca2f56b9188444efe648a2d5e53888dd371d025c6667342c136a399d685692925a061b4bce2ffac39b9cdb9426e98a8491feeea7fe533dc813f74f05d4de176bfbbc0b128e5506b154e0a641f5e4fa0c47eb165f729620ecad58905a3a51028f5ec3d644006c63912813d409460a635b8ea999d9193215903444905a3b0d203154ac6042f83477ac27ef32dcbad77b759c6fb347b2463dc9e5199956b77197cebad4967b5c706bfb4616a5ebad7925c7c791e2051308f671dc5f076dd5b58969e800e5e1cefb4ee9eb95b33ca395e62fa9951937a9075b401e850b630046a98dbe369e74df2f600fb888571b7629a2f23e241d23877b7e830411b912b7c1a228d9b1dc28741802e97225488ca8f0f5fe9ba81f3d127b911abd67afbee062d3c596a5fbdec658002e56396671526976b006e78d1765ffb3fc5ac972dfe79d4c58157616d7d8994bc9b94b67cea932ab56aca58faceb5b44dd7cac79a4310c903085f003dfdffbb72da0b340740cf51048407bd21b89523fe4c672840c7f98066440d7e9b018f643f122e70b9e7f5fbe555cce84389ce60754a15ed3bd7b023cd02db0529a0cf367cc2f7beca2e63aaad6cded176a306b634070f5f5673a7ddecfb7a1117d486b82511080eaf4e2a3feb24eaa165a3f81fe2503dc89aa7da73fdbdf2fdeecf88f08dca4e6369b28f6b16f9942df8b9c9ec75b6b4228a8c87e525ec0191ca81af9145d41f6534def689951d5702bf3cfe305a487d590519b8c86404e6e102ffa4a6fd5bef8256f97404c44e31a32e9559d15b5ac9ea351a527ecf78bcd4522690ca02a9b087f9be79a42683d7ae66b2fad9ee0f0258619ad6b93cac44961a54ccbf5c277c8bc6945a018e945770a317845513b752207e1d7804c708742abc4390606095656e2c46d1e71f15f1009f481f55bb7e5f400f35ead7dff32034ce0928a3e8a17d02a9a10680865fd63bdb602108eabc77d81e18c92a333577ce5b45c424d438c541c9bb69854637a458383a48b0aaa83d7abd6fc5bd704b8bbf378e222f2a3b9a257370ac3df1ef835f73dc3f0d2cdd8e13cd8885c328fde986ce173570a9749159597d00200986a3c069973241551013ec7a0a78ec515be627f82a36472449f00b710895f597cec60196e5aac61755b1af10c48c5ed1d63a4c1138a87ffcf2b4e63d62dbde2449e1b6767a28c6abdbc2cc6a10831c590c5b6ef17f506f617a94e39989074c5a6d8a82724f5730eff454ec9e5eaebbf744d2bbdba81084053543e280aa372d8ba204ee6a0148e1b1400ad684a40aacfd77160284f1a5eda382a927bca07eacead249f445606e12469ee06537a826b45aefa2d9f5a36df7bddbbd0766de4857064ccc6f22adc0757912c299a1028f05803c3463e563e43f17840a49102aedae66617a9a2359133f3784d464e221ae21ce0e80020aec3a29a06cfcc38ac6a5b26cc4e001437be477b1035711e09344376c613daa35f9ed71d25c900edd1e7a19448e6111f7e13f358321e10079e6609d478ac25969614bafe5b4cf2c2cf0d6c80f410f6c785869bb432b484abcc0140d15843474363aa6042eb659e74d1a8441e4c3310182314b4cb54394802afd6771e8130336fd0185f650a9623829eda40036d0569b690aeff77b91cd9440263b52bea420d726d3f1809160316830aef398f71109a6ce1e25640c14b60e3ded2659c907e13c6f5d3ff3c81168137b2d1d2191bad9b4e6786883dc484ff48e30d489485cee974156c69b1180a7bac1e3213631abc9e43874828c2927ca582b321ef696c752fab05b7a2a082274b51b0e4b8c8c7b9c615224633fb2f7d8f759143b157abc27c4a23f67906a127a954ad753e96d82ee7d3bb3fca1496c69eed1c55e5ac1959e5760f4a2381898324732d33bfad67432ccf216f67143ea67b845f712fc26d18d95fdbd86bf455c7a50ad14a09f1e2602246508ed0d21aef5a95fe55448d00ee248aa70d8155fbb91a4b1d84ebbcc5f4842c893938c64db1403fc44b98024889154325368b8e7230aa64563dc3acf30026e3abc6753a5ae54b9fdbb4d63fe0bd449fea3db28f304f41debdda9ca3457fa33c29669a4f25bb93821ff221e5606e815f0d08e3c515bf8d496e7f16f929ef6dab9409ca82f3a6f6d27673df210336f34431b85af7caede9fb2d7e69c7d521b8ebafee41524be7a3fc952a811dbde496dd25c1a1014ad096ead0fd2dcb5fac0264610aa483f3ce8c4a8ffdad6d1123ffb5c115769caea16cb182056015dee136b4b110fee698be73b580c410c7482e49d41008fa3b47977c2a65aea525bd2ea401c4695687ab923153a3cbaf94155cbcc240e7d3a636451ac9477304116eedc9602f97417c03e28531bd821d6fa79c51491ab350e05454a555b3b9006adaf49d73c3a346910907454bd28f4006ecd2bbc975d8b0bb5637a9bfbdf5a9fa116e15e76c9bc802042bedb7b743ce8b7ea00b9cc116abe67abfd95b7a6165181d41abddabca93b0fe0ebf85a1ea12befc6fb559c43026c59422e4b09a022ce8924c5ddc76fc0266340e64f01520d25f553aa8d435c67c79e75adde69731f3f74bc3dd1340c0f396bc24672e507d341f4dbd66a34526a3a2461a3c1be2e66d322efcc9b8802f3af65233ea251833c5bf78ba175e5a8aad2da4a4d028672775075f5cf3560a0021f976e81ed4e44e6185d684ccfe3ebaefe4cbe50e3071aeed4113ceb8ec52a38484184b3918c09f4b15bda792646119bb1d1b6de21e54918baa128e037548a82fad1579be3eef00a30937d2d56b78620b6916c23e26538a9c3eddb539f2f6e7568d03c03322b00f84ecaa52ec754d642c8c539b273c5416d90ca1b58444f590e00355cb0e830b523babbf910578d950c5248324efd509d987e1cb691340338d5564ae3e879668ec28d8a7a7b54490830a9565b2946995d99a7d2a1f806b7714c0feee24f9de363115b414619bc55995611d71b6fe6fc5953874ae3a3f134192963612c0757012b3089cd4e88839c5bf04887b1559c762da4c7c3e594208d30d8358f8635b6d4d4a82175df18014f5543dc051e57524221809a361bc8c9062212091adb641e1fe3f91ab499846fddd1825aa328f9c64923e0e34cfb9440f41aa633adab75caf1454552745899a2949ab1bfcef92fa76a38d5ee5ae401d0de85ab356a8553edc02743db92b861f74f9761fd70697487fe2d818d4feac1610b9f9d6f8f238328198b995655ea87deeec24d617de830a4bf34924c5f5af16a3fef5be733fd1c6335f3ee175cbe8929a8439007638ba112faea9637c2f5a56fe9c78eb9616e39589eb85fb805358ee628c86b220cf8ee94cc651bbe9acd5621d0951aa85e00958261b7e5941651a839caec1f196da038adad445c378032461c45906e3b38d41a4f1a74b43d5d7ed5c1ce9f2444e7843dbb3c6978445bace568d457967ee6681609e7e1c8876b202561b8201ab8f98436a096ec29b8c3d6b72cd4796d6830fe09a2a169afe588fc9262e5e009cac280a644f19e6a18d4bf81030c7a5310ba3a3a40b7aedb8b5d46d9be48c81f10ad20547766fbb47f4e3a4cdaaa37fb4e9b9660f14c39edf482ac280816f1f7e6cb511efc9b66c7fb0e54f751824b574a57b812fcfd5a5565fca017b40432a3ecf32891fc4805a0f00c13b58ec03d9b0954d363f1a8c9129abf9277f350fccff760c7a92a39d423da827eb6d0199574184d1a21106d1bc5e620553217026514a4731760a1263f224a8a0afc8b090c6b63d55efe9d4948f92b2d05b4e90051c9612d4ddc1c75d7a8ddbce3b21e4671dd23c04705f43aa717fb47a934e8eff8ef571bb51ad3bf0a079555baa43a3a648314689aa2233ef52e3a53e72fc26bc88a4bd5cb84cf4a517a26b84043a6bdd0d07f53cf54dce4f64a852b3e6b3417b57c70dd76297693852dd03c3029f6d2a61075c1c926b794ea27a116386647ae8e1a5a497511d61f541687f63569311082379d4dd4dcd588b122b746721f0d53b876a4314142134976c00adef991fda8ef71a9d4914cbb3f9889354d296f691f7387608fdb9d9941c5aa7c7845daf08511b2e91d23ec5e69ad65781ce984239bb1a92eb62a5e1b612a6adb2deb9caacb106763003a74d575d076e9fce4f00b2c93fd2c9f4bb292b0163738109737aa99b2adfb9bef42442436d97f2256215c5f37b706c80699d41ce4e2bebe3bd28f2e50a21d7dc59ca185cc9ea704b58acdee57ee4852d0ef12ae5416b9ca82652fb47ac0f4b23e3c09a0816d39bff9d45c065c3eae9fad933004971694f111df805a835723c428de22482aea4267331ae158b775c70100f6a01d9db784f61e796b561908d8d78d07ae204747587fe52405e940648fda2237400d58f9794b4b54298181dea202882b75c19a0801c1893c4c010d00b934e655127632a071bf9a46db85cd297c5cab7261e637d5c035eba5e860743b60bba4b0cf31c7a0548443c1459e41569b2dee0aacb552fc61e18d28db5235c1e9fea5c22e5bb8e491ceb6bfbdbb06eb677f58f970c4473b143d4a5d45d6eb36bc5f0f8ea00b082d090bfd93952be1bdda9c9d944b1d43abead2359e4fc0436496aef8fed777c8d763ff4bb99b6acd3e636d0fea59760757002e113ce8c1557c9a8228c2f647494bbe169f8eb8f69e6eceffb00ff1eb7cd86e9fa01e78aa92ed1fa7385cfcccd62f200d83e59af0658c71499522404555ba66081879ee26e2d09a1fb40ef0b2123be62a211ac72196dc11fbc1e17cf8f4dfce823f93c697ba3869ce4d58f39733060a429b59babc8f471deb0b77da2f481f166a846d873f28c1fb32f92bf69b0d017009650d7f6186b1076faece6b6ec143315ee8e5b7f1ef2c042864b9a071de834b1c2aa66e2116e007744e42b36780467a1f22796b400102e6dbb2bbac02203547bfeac05a355643d34874058dd8462c2443ddd2fef8ea2204cc08de8240def405d4120c42cad7b86b068402b3729c10ada0e4cb32f810af70a945cb434b14976c1a45834011421cf45cb9bb3981cd25801dea502999a9a287eeefb8c74362a0958c580385e6622a92917e43363667bdb07a0eaf91be0ca0ca63c2153fcf52c25aafc70c05c79281d57d05b8dca1eae6bc66a5dd3f3115b646d17d455668a1fd52211bdaa69177cbde07a378019078e117970d03cdb914e175a1a3297968bafcdea3dcfae27fbb840b9f8229b4c3635cfcc7a04954e5e9fc6eaa1d790e2e394dce20870fdb2b448fee1153591296e4145ea43930fd6190097a505c8c78e5f0191041711f0c6684829d97b4ec18912801c8e8d4abeaa5b9ab0eda0ba50c758e8e97ec64b42a8064ea3f3b982f57771c9ad271a496caa2ccdc2aab9837de125b310de734fdbb3484ad9c7b5d399f34f4882e7c39cbf8412c1c7f2c382c497e70c640b965b18c34157d91ae93f1b1e4890cd9ed365ddf8f4476f83846430c1c9112b4ba113f31005b4eabedf2edd5cebc070167bd983fe05393bbcd2f7c508bdf7a97e9164dc31c2622a26afc09c3480ee7a986fe558cc35fa8d4828b7537c22dd7ba7a165447322631435f473f846f2baa81cedae85c3453c021483b6ad4b2225bc9d61710eb96d2c8cef5190b9c04d2456af90ee36aa648b6d221ef728186f3595c0aaea87c08d8904ff853ce8b2ce50e082f1e0b107f1adc687821b11bc4553888bc4b4fd8354755d6f0068cd3b56444ae10264edd47b83500a4407d50d3da880fcde7dea78c9cf5545a91cb6e9ba55b2a8d3dee1f912b4bcef82233ccc4f7da16056d485a4ec22795630c7a6b5dbb45b6589a4b5d8cb2d0c752b62a2adc94ad573ce3ecd4428abc3123102d20b9f31422bd86f0da67bfcf3179ad1cbb4f58f0850f09dc6a4c27dcbc891b59e81dd1aad633829d77b429a513bef1603725c4cd81aea058747179986f0f1f06748a8762cc3837f477f2c5cbed5d13303dd8532e04ee6514c750cceeb9cd3f36c87212dbc5bb491764b9c88071a82c0a629aa62cee2486428c441b03a6e730264729a0a5ddeea497e98eb32621f4a5f7cc44cd105232ce3501ffb2eb82dcbcb560a4d9ac0b21a22b64b9af47b39cf0c330c5aa0d0d37fb2c0c5711141e4c7580b91a9ee370a96b6520ef0ac8830bbdfd7b84dbc57f6423315613b4df84fd10a36a9108fba8f4dc834d1d28119bedfe22b2ccca962f3b8fc3bc4843af124eea24f9d2ab20cf317f40d02adcf3c94adfc877d62487d3cc24d77f713ba88457a9745d626b8ef290f45b5857f788272d53f9eb15a4f370dba9ee7c202b2595de6c576f65f46b2ccc1f343c3e291ceefaff4daa344578cf721351770e15bf8a784e24ae620bc81bd7a10a213142e42c43dca5387b99d500ffbf15b245c3fc91683f2d91e40f961ac50bac092ddab2f75e0823bac8a2d81bb0d53fa8f37ad8ca26afd076bcbaf3e3375b65edcf6dda376e09ee07784a0c49b49091c3f2cb1ac7ca2473130418f16675e121cb0259413f227a9b14b45c8c20d6d05080c0a3c320f03f86b25c5fbf14827343f09bdac51eb1ea2688f7025722c050ad44391af6d743e7582d2aab90dba65c5e3e786ac4f61783161ac4d3ffc90ac8d50af9ef7d46d9072b549c8c8981ea940c4f022df5165f49a6574fb3a50e80e3e5ceb875f44015909fee2c1eea7e41da97777b2f42d29f545c5a3b3266bf9dd43a2952f15dfa695191d58b644028d53efac215420900264b40d5b785bdf05f7a1e80fb5be549f9b088b1a342b4f4231ed222f0b86470fecf2f3efa236fd6fdc16728492230a1750464432d73c689a2669eed4a893f61ae8d5f70b7e6bd0986ba886b21e6723ce2ea950699d6b8cc0515f290cae9cee4d6d26af1739acc97956f131e28aaf3933e2a137339ff09af0c3078e8e4ee8b80f263b38ebca6712dc97edd9bf4bd388034a57f69aeda4e8dd5b1ae2401aa2db77469c036689599a7647156d3bf131987538925c638d8fdab21444cebbffcd6bc79c79c20767d360ab672e1f6068a963bc76ece97b7441eff4691e0bd91b6e339bf61d0ba2343899d9ff3fad71a24c57eb3686b4641e62898a4fc28134b95300345cbed3f85fb623d1a8abe90654e9cf206589da1fc1d26c210feb04c3aa2f4c4367d60f4cff2df68fad434459ebd55cb9a0cbf94612868e9981c849e7a68afe55c818bbd317c6c6f935eae4819bca64d1f786dabb11e8cc44835c46665794eb9bcf7686e8124f45a8aea28e498094d08490b4c2190b7771f6c117b40948a58d5548ec3e1336ab2f274e034a7c6ffdd1101a76999aa132d2b0c18cfa27c8a85f89540e18f4faf9fa28175c64655622ec6a76b7c10217d32965b7ad362ad139801e284f568286fb722992faff9c183edb718be9affa12555fc277b8718ca202c5e39aa53648cf61153ef4b0b001acad24cd7de609186190c42d04be69fe876dd09c8eb1863f9e24bd619f5190a9151082113ce2c1f3b47054ca02c4b2170e2cc0e5d8fbfdcd1ba58cbdc6a9ca67caa7d99192114f44d326a1bf4b601d85f08fc95950086bd43b6f9f6c7f6630d5eb324d7b626a0416de01b2212d85ee0f15baf32a222831b9562b4d273ffbc5dd5229efa7a456b93b067330f3a521cc23e8ef3517f48efca2f830ced3c8b8c34051c1dd54ea16e099d81d7bea3de23a92d9ddb76f3d630a65e07c06d2c3188e60149582c8a28a4088090fdf17001bb42a07ac7ddcb958cbe3c73ebd5d736a5832861c4da6afe14575848f04b314a5a42b677c3fe2df776a940ce2095609de6b8678a56c3571f2d3044ea26a8da86a78035f92dcf6fc76136ba4099508ef7c604ac6825fc4e8ed3b0cc744314349b6503a833989383bd474ac6595c6a6ca74c9b1d78f8af70c2774053240574832d99d818855577651628d9e060b35f6ac3c3ed16e335e0894c297367acc06363fc8da46fdcb2fdd6ab1bc0c9e3633dc6ccc9ea981301b6d725adeb8ea01ec3dd97fc8f004c8c3286d7e83c21cfa90cdb2570abcb220b1791e7811d8cec20a17a01d24f1928ee0d5900c586e581495f8390206f7a4554458291441f0cafa0c92227d249d6770e04b47986f22c3e49b4ef393df3923b4dc931cd7cbcb644c0e9334fd34b756c55424585085d9d9c18f73a6f701e4d3eebd74d939e916c2cba30790551ebb273dcdcafb90c2514663ac47b7034cbee3cfbe193784f85a1524f08a7412be8b393376d0651711c793054441858d9337c125cb8f5fe8503b1d9d32ee947835a98dd5eeaec3cef6a0caa100b985bc841e0324c842ec75959eb198115b1c156b55f588cf966d8be41a9d8f6b8fffdd6225b577d4ea0537f3c317fce9f6c2e2a7fba7e3f505a66f44101619e932ebc5d3ba226d35ad15d912026553f7bf97c7fd56b4f1b8585c09899a38fae211f3d145cdc135aea353eb98d6da79b6a91fef137175ad23aa4c6157c9bcb0693ad1e4a9012fa464386a46bd8147b920f2a32ec355bf5ccf95fb723c2eab0e1fa8af690cb7a70e290e79a9e4956f204603891ed7814694cb7419edf6f4ad45ca5fd70ffd947a3e4baf3f98745b2fd3d4e1e3b8d88e2218c00b3170e61e74f02f36a690c22d2677b364a7109847b6282f3ea93fdd05d7b3828192f3d19c3ab675813d01b7e602553f09b0513325fdc8a5cb0af32575c7b73bf572ab0756e2879c716d6cb3456cd3748af3944b1a432eb9f8bc1f63b6c1925537e7a081cac2f45036c5554349db58c243cc56e33716f65aa6b9a69ac7a1bad4c78854f239e83eac66647dc205985ca074485aa1074ab0fd8086ba2d251a6808f5eb827f71d8b2a634844ce7a56463bd633ec638aa4ad4af252a231d07f779daf9a1ba87dcdad896fac421553224ee0b3aa9ba10fa8d10a0b9fb32f5b42c9c1208873d57238044554f9a68aaae32e2cf85c3430de963fe2d2d01cb399bbfbc1dc94f84e9d786a424431cc2edb5fc009f53eda58a74e48c6ff2ad4aa8f4dcc10abaf56a90775936dffc64fb03dfbee53de8553dadf3d073c36b0112852c75bbfd0beeed0821ebe0c8a47aba1666b97a00babc88622cc47870214d0a337b69c623e184bf06f3d79ba3c26f9eb4b67e75711aa3bfe183f455fd728de5255605ee04ed66c869b5783f32a59be6b214bff4ac51421d8fea87f9529a6637944c32970773c0a28802f17e55a73c9310d845c515a6a92e3e07fd808701126d42c6d6fd8307cdbd8dbebf26d3ad2f9272f490a9c5bf4a2254da7d222bb42abb6f4a84dc18e4ef39db47625ce1452864f627f80e7a0bf6d30bc66c4745a8da43e266bd358ca679f9b05186d4120f751dc83b751111bb55988dd060ca61fc503382e06ea0dac1be95d146972761d63259cdbc45ef31ec584593b4764381731cac67b342666ed1cabe11c081a883f1d03b6f3d76234b0b22ced15e3829c36273d49c1159c7efc7f35d15b77a4b51b4d4a40460243837ba7cbca169a128290a07dbe22ebfcea80e2a009548fcd845ae33f7e0bddf5d6be3e70e59568085a1f801847140dc210e464c7a51fd21f8eb42e3c1cbd43cdb89c237900fd9e59cb413ba0b7f4e4f8fcdb044546240770ae3afbab21184096ca041c0d6fb7465061c4cfc03fc93a3d29b5ce7346a077e77808e30e4b1119e3c13e485731b6a49932de917efc7643a7d0076bd0e2f435d651ee51d2ad9e27e0412f757e1aa4e3de87e2bfddaf22bc912c1db55e45e13db81f8e29c67c3bbf52cc776b48308ff6b4d0d510b1bde22df4ea84b09f6ea790f1b622371a994d9af396c263dcd90486ebe2513a16c157677f166444ea71f86c731fb0c69cc9272f1f0b19eed26a7bf975f1a2c94098d9ae11e9621c21552dd56a779382c277277292feb85072674054b8abb3ee47f23820cfe7c4052ab11ed419b6f817cd2f69461f251a5acfe3430044b94f4988f04ff3b464db562e912455e552534b58a112a1f1d91d68110b5ac5e0b7fbfa1a4a4802d6abe2ccf496795c3e78833dfb2c2ed633dfa26496779f9ceede8654f79caeb7c5fd69be5d188e19c6bf5d5739fa5bcd139ba17d7a48754f3e600f1ff5df18b32db2a84517e92050aa55c778a93e0ecaa081d299dc35d8a498219eeaf21c10e30253184b47528ba65fd389364a7422eabc4508fc38af0f439d84f58d9f4d7ab85bfcac67ff509b08701d4338fed7b51521ba4d898039dad3875247a65af3506cf8d7db2e4b4a57a8cca61a704cd5ec827b48eff6160900cbc11571440222ef22a28d9451a92a15ace8f596c2c6bacfe87f492b8aa8512ccd8f728a35450ec4a295bcf193ccac45c8b9fb6025c734a247174df3849826ef5786f79868ed9a2e032ca65a150f3db7cce3f207a4a25577e1153473e491547ad2468d86210173f31fd584a92b096bde860235bb24e1ef4973c30e93dbc28a4c25d84846dc6dbb45265003da089d1fe2488e839c572eab8e48a87677b84501019f4588426605df7a557ea32dc88f28371bf5f5e1c00ea80e529006f7bba164190581cbc8a96db871aaddd5ec2f0ffec58aad383e417e345ee2089f6d2e49a670d374ef85b1f08761017b6bcb54a5ee2f0f5470a0f9a6023bb6e928a43a161a2c983962d9eacf0ba7b6284f7abad412c7a718b19b6d6638318ad6268b2f881c25b8fb75976de01997a627aae57f7f3e61ad29ea2845b4347367ae7511d05d861f8b7c3c8f70d2c92920ff8ae629277589952f82c2fa87a59e0da43834e878f975027d9a5cd49bfc747b978177be047a813e20f6578e2eebea92ad348bd618158b42c2f3f80cdf05e0561d6bec93d850efee48a786636e16e2d4caa9bd1174c12c5505594a65c66bd036aeef8b6b8073f829d3ae076eb310209ede7ad3848bf0b7abe63704d0534c8cbd6684f5694c24d8a6abd1ad1679a1bdc12b841054444a8ea71af1b87b0a2bc8322289878b36dee4fc42f8a4a66e05dc0b0a905286dd49fcb2de3f88b89875d187cb66759d7ceb35a0514ba93d021ab523cd5e898fb9893d000d725d3b05787026c0d03f137464902166219fce80008080ef386a96fc4fdf395d03f425c04685fdbc0a801276b125f3efc8ea3f5f64a36e4dd5f69965cbc428cb3f973f7c1c18f7f1565205abf956b0b4035fecde980863836cfa0476c8867bc4eb6dce4ab1625501fa9dd1252198f03ba825a8c71ec8881b3495849272fdeb2eac7339fea3cf649f6a180ce6f8b369393f20b29cb0364c85816996f26e226416f66e35b48f28ba51d24fd250ee0fad554df1ab775b5e94fd36cf3e38c299a0234063c84cadbcc895942e208fb7590a006600ce465bed95341e862a3ce866cb0c1fe20827105ca01bfa6fc00c4d4af3df8997dcae18d419696ee36f5ff8d24573b91c818e59985b68aa238747ecb06e2d0224f823353d4ed01572e10442d30d16b8434be7411b5a63320f1a56eebd40efbe0ccde31fbc475b6d595963c20e79d3ebea4293f253fca8026d46f2da8d2cee33883e53bc1767ec4d1e7a76c77df4fd8bb9f6a3e238825e6398757459f111b5aa39980ddc9a2533236732c8c141a46186ba0e6e115558523a71f2ee41be8998776fd83915ad298a093608baec989d854f419902f3a017a8fd7e40417f81ca56f37b06e487a6fbb1f8474522a45f96e93d37d732d730ff8ee5059f6ae51884b82d77ea5861ef94ced70c03e6dfa717b52655066fa5eecb559b98ec4329b6099e523900031bf190685ec697342d7b8068b67b75f89995390a9f7558b9cb5419d6cdaf8501171d1602c5943422b063c2b44b8c426081afb612fe935300d4a9e22cf27c7c625a957e9514babf7c0e838b5112147af9e186e45a0062b96c0c2713e34dd3e193f1aa068399edfa5ba4022cb072ffc06d881bdc0af1e4d6448db74a3c752ff1ec2e891b6f4b7cea5ee2d93d89ccee25aeba2bf1ec9644b3bb124fdd4b3cbb4be2dabdc4a7ee259edd93c8ec5ee2a9bb12fbc03b9574b39b686c7555b4b77613193be7f8f36a91bdb55b34b6ba42b4576bf155d2abdda231d515d15ebf7b127b277ebd4a646fed168d4d5d591f79e7b3a453bb4563932bd5c7c679d515d1defc67124fdf59419f0edae5dae6e9153efea0f6891fd0c89efe9969fb7663cef78ab9fca649f9e339b12f811503e742b3d9f07387cdc3b730b465ee9c210ee471b70719d396f98e1da60c5d240b8ed4fdf2b129e49d606ecc560ff41c3cce5de6a6160ca3cddbfdc71a8718186b1db96201ff6c9c71c99bf12d0f7d23c180cdb818f1a2877993aabc0611552b8665530c5d73f12149825390f727f49aaaf1b5480e313badcfa8e33b1b5e1fa7ea6741171bf0815d1acc73b5a66713d727b4df7bd405918d2423b6ee343594036d43d0a87bd81c8bd246cab164636ea2b4b8f5e3136d90c13b9edba78afac43b737a6e196d4bee284e25c464306b162acd3ac1ee5844b07ca7e514a9e29972defb050f6619a77643eceaeb42b280622cfecd3d5105f21476a889adff1e5baab386440adf69738eb1ca9097118e9658e9b173d3add4a122d20db25f3427b7191329374dd2ca3ae6c1be53c8e9121f939102ac3a32dbd8dba2088e2a8c0f078edf16a26ef89eb45acb29d1269ad77dbf2d45d1698a8dea7bdb52b48ea6f828beffce7a337afd98d1f8acd6222d9a89f6baef6e6b513a4df1a3f87e5b14add3141b85efd75bdd06c512739b213edb88fac17b926d55748729c6a8df6daba27598e246f9fdf4eb9b61a4972e05cee56e69d0b873896fb52ebad328368aef574bd19d8c62a37efabbd5fd12f7f997bac6be32cc75ee0760ccbf85a81b50873dd5d2cba69b94cb33614b2bad2e84a729ac6664dce5ccbfad8bd6698a8fc2f7efd22f85a3e868fee9db1477efd3ee9d45bc1debbc7d9b9673b9dc418e876280e1808be53f440757348ebfbdb2f9ddde94796d1dd709166529466fa5a0b03681fec1f15be5ff0a4a9f0b4e5201d022f829768cc1c74ef1efece1cd4634ec028a177a6a5820165a491b71a53ec7d03ae227b325dfd307c9089210487406f9f373af5b646991f50a0a5eab7779e42a3801071e0cac09003ae110ef6b0bf45a5546627eb9f070168facd11b716a5b97c5b6d84d3689dc4422bb7b679201b2067006b206984ac9889fecf28962ddd6b29785611826a7adb5bee3e1d496b2fa7d55cfc3756a667d109d13a52d2df3515fa7b5b65ad7f5f66b1683b15b6bb5574a0afcb2eb828a9e3c5fde965a9f875f3a2ddf324306cac2ab836a79295f876a97cc257d4f38d3c1352b537d0e2a28308a8c7cd1c8aca73fb4a50828e4a9c3d539ada240cdd300a2b0bea2ec94f2ae037c5051845f07f8687286a371b99edcc91fb69920cf950eae491f9e7300927a1713e54183b5d5e5ea589665af2cc65e968bb5f83753fd2b8bc1a679d9d45b9f7aeb2feb92f1f0b2fd94b5d5da7bafc964efbd2f765a57c7ba5f2dfb15c6a252d96633aa5afb973d652e97be542a95b06bf15b8f4b18638c9fa6f055ca92379784766e5aecdaa6d419d99c61fdab701c21ef12764ba552c9a95475cefd0d66d5ab98655956e969f6c3e9ccaf35b36486598f3a82b615d7a4d33175e8e89cb96a23979584dc56a0320527e4cbb28680921da5d907e85b0ca06fdd2f6117fb4a297da763a14a6f653af4b1ec47cde6abe45751513a1fd32965388fd25a4bd8add5eaf6e1e5e8a047235f654617a18fe034a9eaa0a09e82fbef5cb56401bfeca474f1456e2746be7e6656879783527965261f1c8d7c4a7196f43b4b7a49ecce150a0578662920ec2c9ed4ce2c2505eeec746003a34c7fbeec74608323fc30c255709ba6a5349bb3845d6c6bad18466bad283b2bfd9aa2ae946d9d848b83f5d7d37b575b10966595b07b597bad4aa75bc2aec9d62b78f2d65bf01d17904079fb5b9be5cd5e675d8dc387ff9b4d798c734228e1cc7878d9ce19e3bf1773437d09617cefdd36c686f93de3d5dff9ba37d0c8bdaa5faf1dbf3ad0d5f4b5fee87b73be39e7945f9fbbda558af5b1b3ff8d7f3732dce4e64143b521be6c3d5376b79e63943bcbc1070980f9bd2feedef0027f6021d2d787c36c66d7451966904146aed8badedc5b31ee41e72c1adffa97c5547a45b762fcebcdece5be3f5c16b2bff3950df1afb728c7a19eb96bde1fee0896e5a1b38d5fe3fde1cec8d63ff76c5bdbedff2ef89ecdcc429759aff6fa0a35043e5dd91faa64e0bb47b97628ebfde5f3d02b5805a7680d0b90d787634210a63280302199c2c02e978e195c6b26a0a88022a345c7ad4aaf0f20f215c4c31fb2f56e1573437c7f21f9fa21757188ef34ea66ade85339dff409a7845f9d45256dda9476e38027c8d76ab3de7f8b1f88cea15080ddf3702a302b48b2f393f403c5dfb314137ca3e35fd14f4f7e8f0679b344eadb74f8bb02b1c89bb50f4208a56408e1c3b7487099b605f6e7a0ab6e71b003a3a698602d068fa227bbff06a06b3eaafb772b27014782a9be879451ae3de1a098925ff7734e088a264530d2b3d1eca0e0c9ae084996ec905001c918f90211462460441925122239e544f282492745e2432d6ab968c1baac4b460957bdaae907d5568ba3d86bef911a1c71c1c52e76e40856c24a475250c225dc022c601336b500c974329d5a60256faaec5a3084f75ab638b59c5a6a4cd1826a41b50009540a952a7a628c944bcaa54676454f7ce1624fa7d3c985c613444fc820a368d87ee24846bda85e9c034076452c20c3c5c5c5e505c6c50a8c55a9542a98981b41303030303132452c68926557c40223ba25bb22236564d44c8d19234898b13163230b1b6fe361b22b32b2e4b3cf5c9111223227c6306557e4845176454e50c9ce89196879e5c2ca05278eb870c3851b4ef06477a28817a41b386ee068c2cac90b1c2fe0782105e505185e80a1092634b22b6ac208183418b422496e04bba2224645bec8aea80851764582b22b2ad2a4084fc63400a00100f5c992dd070a453e5fe0b8e1c22a7b1b33356462605ec0626c7821c711cc1078a344e096022304de9c941a54f855dadf6852543e78d3345511bcd9ec2fc3d50644a6e2fd7e8a9a4032c54edee829bb22299092aa9341874ae606907c1efe6286679081aa5e67a92038c090a10c04ffad625c27e12002ea7f8f3a03919b1ef5b7490555e5d5f05c114572cdaa20011de2b207d79ee6927c78343ed507d75c924b72492ec9991c34a95c93d13d98015d4fb366e20311dae35aedf068ded7f072083972e463c493df1b8283b76ef2848828cea01b8aab84c8ee3df3c17dd53f3b18c14e534ee01724871f8098473deedb07723da00289c0bdfeae76e6510fbb8a51f5f847f3ead727ec34911d7ca8f3ea007d12bcb924f840f59f8e2be3d1539ac8351b6234d1cb41e97b38ad6945e1f1d099f650b1306d9481e16f2ea9e5aa7f763803f3e0b4f7ef7d700d8e035754a6d7a4fa6324a583503bf8f71c8b1558b9a2b002a191837d1581adbbac80323a13d714d8f6d539ea975d258718e3833db364e7b4b7e292b556da6057b01281643c18e5a456b402f36998d902e6d7f0f44d1c26037088380bd87193b7d315d84daca58410468bce08afab5e1796c1db478303075f35c2eb1137acc44c18a6635dab6693a252d026ec5a1b2af695669efbeafc0d28d25e9d1b737fde217632cd3c57592a0a82934c1f965d5110906099b6094f8cc29609bb1697acf54c298aba6f6be19c735aecda182d9d4f9cf84d0c109e85ab2cde7bfeea4e95aae9dc9cd8b999c5d86a5139af7b636c90eee97cea289df40cd7e85bc7b974a8f5d32a5916fe89afad13a34fafd2b4525260975d51142859e59a67ec5afcf9e305de1b5e66863df6d853c7504760a78257c7b22b550c84f26623c77796f552fee5b2182adda4f47296748e4e9ab97cd177d745274605ecd40d307c6e8795ea6e4cf79727f69b75d5d36fb6e5b78bfa0d4bb9ec50fd76caae05e63754cc6f2999df5c6afc4663e637958ddf5efe3798ecb798d56f322efc56e3c66f33387eb3915ff8ed21d4e1e1fa1f2e080c1fffe55f59e719e9c30c75446718b2d414d989b8f67ce7990193e291349a963615d75ed6525ca32feb27aed1ac8db846b3ee31599a35114bb3de69b134f3016569b683a599075c7b18a06169a683cad22c87174bb31a602ccd78c4589ae9708d6637352ccdb4194b577666a82260c83abf90b911aee63dcd82f4a0caf283f48033fd20d14676d78b70353e0447d65a98c9eef619aea6b3dcc8ba0a35b2bb4d0557d358debb90b518325290b98db4caba09314c88b97d25cb1a0c1824c0dcb6f2590fe145082fb7bf786f23eb1ea8b2bbcd0357d35366b2ee820617346e13d5c85a0b972c5c6e0b093516a9ec6ecfc0d5341428f97d4cd656a0aa40dd76d24e7a8a16295a6e336192dfbf640dc529bbdb485ccdeb23aaac9b301531ddf6a19175128d84ab79cdc3d346b8db45b89ad7437a0810f7075723049591e0667747e06a7a705844e06e08ec05011207ee065c8d06ae5ce05ae0ba15b012012bbb0b0157f380bc2f650da0d95d06b89a054cf131b3bb3aaee6d1e0881020b3bb07703533d00c2766770be06a9e0c311300cceed6b89a1860f682bb385ccd0d57f3fec68c67776bb89a2be36adedbccc5d5bcffab9352b9f65ccd7bccd5bcaf2b5b5db0b48ba42b797325ee7535efddb5a92be0ded13854dd50c2b6dd318bb9ac2963acb1568b5a1046f9544629696731f5b2266d770a71b4cc10de60fcb71a6047c58bb5930ae1707a384d3e1743b2fbb8e37694de392fae70427f735ed49a6dd2277241bfaf8f19d41154f5042e36e993259d358c60fa1b2a486214b64edd5709bbfad43da5add9567bac4bdfcd58db77ae525460fc5b290bd36f982763a02ca264e924d79e25eefe98c9a925f834b3969ff7c74cbe2bd5514b860a724d7e0d23a713aa0617158405dcdfe2b7a2ee036c808268ceecbc80228b3cbfbad8948e19eaf5766c2b41460db9269f062a0825645141aaeb46869b18db626dcb2986d64b86cee45310989f90e55b7961f3515b8aef6f7ca9742fec5e1ddc034f94d6172fcba295d215e6714d3e114719550357236f3693678612724d06b91a89b2c115f08679b2fc0d1594e5631ec741d1b04e96b0eb622952de5e70f05e866678107ba86b1e8964184403f8c4ed98c9b167080d944b8d24f0fb0dd3701a345c689851fbbd1881eaf3f04615e144d87931c4cfcb40f66bd4bac0ae0b2c46f26663df5fe57600c13b3b15b6830f03b20e783bd8e57ed9f25fb7ec69d1f9628c31e68610e2c0fc66fac0dba1e0f71b7577f7ab0ce8382823f0b382276f36a0753a47c480815bfe9bdd2fbeaedd308bb1a88c0f5eb0cabf3cdcc977efbdce6262c318a7fccba2f2c519639cfd227c3b880146c16baa87114067681b7f3c43e76467e33f847728c0d5f86f08c834f07035fe3594c0ef6bee0bbb5751debed7edb0f72641e51ccf0c7584cd34d74ad90dbc7a0cc32cebbaa51494b209ad09b3b894a596d88b5fbb3a7855ca6e1c294d2280b2bbf853137f90935c6b763a08fac933d7957661dfbf3d76f19ba8759cd8624d983dbdf5a79653a5b55a6befadd6da93355dfcd4a2969e2ade6ca6258b4b6f7d09b7b4944a4f5525d51559f26643ddeb4525d63048bc4ac6a2503040bd12d5dd702eabfff23cbca595f11c43aa50e13f95b0161aaa0ce8e5b1dffa8d3aa24f40304f29a594d2c88060fe25030283822245b518a2e72a27a59152cbba2af54a259db3d62c03e234b3e567f68d0c37f663ad945a16a5f4ba1efff5d7573a63fdfabc05d26ad9eb31c6b35ab562d7d64ae95f4f69a594d24ab197771787ab9401bdac80388d0472728922395e4f1ff5d1d1eb39ea232a5c0e574571545e0dde15aeca9b3ff1276f0967e34fb3b702a7f93b93cef129dd529cc8feeecf24fb83812a0aa0ecdf93a5e7d1e7e39a5bf19ad2b2684b7762b913faf55249bba537a1f2723c269ac6ff892a4ab23f171c7591ecef4f9ebf4fe99cc744dbf85f21858aec49827a60bd255e8f3769e24e2e95bc3d1f60d3a3527db585d7937975db19f63c0f7a565e1d68a7db4aadbb2ed3abd339a881f84e0ffb3cdcc1a31daec6d560c10a4fdc7178624ff48946e2913741b7d6d501c2bec6ec62e29a3fd07d9a01616fef570c89472c577629f12b89abf1ebe70a186cbf57937c31b97eaec05bf4f9c17e80e42762f989d70f159f1f233ef44aca5b09064f982855f86c5b9665c5b7e64bc74172569c73ceb6ca002208a41fa60c435aefa164020de22515e803615d1f96f5f1ad973fe4f9fddceb12b605f144861fdfeb8e91564b3963846f5a52c66f21eeb224258b4f52e170689ce6ef9c64f7f189fb48e4e5b8e919723f6812b3ebc8b59b97a374f468fc29c5a5a3ec3748f801942647fe8cae30dac80a78fe7619750aa3ac2ad715d7fce98c735a51fe8dbfaed689559eb5385e9d38fb279d7315bf281dbd1c97129ac61f0a49649891b1903d0ca32f8c4a4b20213545cc2e23b92af57c6154e58b7aed34ca1b562236713b3c47dc13138352cc628c3136894fac909dbb3e669c705154a00a8301cce43ab38bc835ff4b8a6bf8e528497934fe310b973e587649b986a05f438fc65f8b929497e3cac1a583ecdf25291710b2bf2c49b98c90fda394dc571457e3d71011f2868d9145f66b28bb7f6a0a770d7906325c614958e02d42c9fe31c8ed80e2386fce19e37b6fc219332186f2569a42f6dcafff7bd21f0d6129c96589291828431901e37bf3aa73c68eb4e19befaacf6a375835a38c52eac0aff8e5b8411d81b3ce9910d7bc775ceb1d3374b8b9899d6f04bcc75df990d2428797c3044de33f043d22fb476f2664969ac295c0d5b80faec63f85056f8e4a0e40dc8e56b91df37d169fd7eeba7a6a08508c19bca77a942211a38cef998dc21b42611941620c371a13bc51ac084e0d81fd618c32461ce3844f6394fd8ec0c415b1878a88bce9b8813e2c010be9c1b5cd55d1e1e57055c488018aee558ecaa0904440bd62814ad1792be592dbd1f9bdd3323af02cc41281fa9258c13ae14fcfd1fdbd07df7befbd87c3a748fd2a300a22411f66f42d4b4ab9724260ff4d860c2394324e29a59432ca296584104608218410421c45f012ae7a9ed920c36e4f05f87d6a077f00207604a69fdac1fe05b8b4c0710583c097d131c3df8821fa8d08b5d5bbf641a86185a3715868b1458d15bc8fc5511d02b04cee5c4b6fc87d1326fc095782f3a3890b9c2683f5602a5864d43a770b38113fc70f20331c8ddbf9d18488a37179c3f947931e67e3f2a6ca37862cc2344c8e2b1eac1d3d89012055341c45929e88c1321d44fb0df587cb7dc3b514e00d6207d4e743c8a0a4809d09ef61c4f7b892adbb9f2017011db50e1d2f8790eef1de13024083202ae8800825468cd1a35f7b39787861a44416a28045132de8d18ffb5545a8ce064bf9a03bd952764b29a5858150de4ad9dfc70b1ca3a6b8c0406ebe8841d9a5b892fd63e80a744e7cff0b740e7dfffa822ff2f59e73ff56c3c5fe86e5fb9bf4f81bcc77458346de68f4419f60faadbd1cd1d1587f5332d9ca5c3b1beb63f69c8db5da2c6773bd73365bcc1f883faf7cad72d0b0e0b80af2d9faf843009907b7052d64baad721012c8dc03cd3c242057380255ee4195a90d6ec8f35cddc4e05aaf34d71cd10e1119c84c11ff0a780e8ee3df5a0c3cc02ff062c74a765eec4cc99b0e2f767e72910b88e4f7ae6981ddd52965c1f0ddb716c38d83a91c6057e40223f149d07906c7892b1d326ceee5579467e71e7a7e2b0d0b762f7f9359c1950a3f774399049e79e82c6e471012d01cbf07993dcb7f372420c7150f6e0b5bc8708583922c6de3b2c329d80d7a152c8511a498429794d14b96b0a4ca921d2c119252ca499738516557b484892529b096ecb8b6718f61135649d291922ad95151b245b659feb8fb834348efb57dab6652a4a40631285252459192298a94fc142929525294440bb40a0f3b82338c488b206b0f26174984e69cd3ba2ccbba6a51129f4ed293512e9e21855076454ca8e4006457c4844996f93873d08fef3ee089b091b4b37aa791f11ce0b952b9bb71260b0cffbde39b28153eebb0c97d5f5f137a5d76f049bff99050aa54947755810a0d8db9bdab47435d278602a5b70f04fb8bbd5c01299556371d04887d6c25e41f8dbf5d3dc0f5d0ee0d5696ab1e000bde1fcd361dd9af0f6b0ba2dd59d68a06d71c5e2921941042281bc687cfe56f011bcda5cda9a98612b846daf23d3c3bc057e1a1a425f0caccf43d2de46ce07777d75c4b369eaeec3aa729a94a70e5dc287ebfa543258d935e1c2c7ce30a85021c892465777d58d3c72c0584fbeadc1f36fcf8c0d9d8c4aff6474a8e5f5b525425e31ac41ac330cc25b60191dd886bf051d78767ef718da64c168650d6971d43a345a994d7d6387f4a5369ceada765d52aad8ff32d4b65318d14c24bce49e90d9b7116a44b19369f526a557a75ac1ef21e10744e0ba930fe57a93046b2a4cc5c72f51ea1ce719eb681ffaf525d3c70c899681bf89bfb6478794fe725ba8705193ebc62535191e1d79527c93015e43eaec1140cb964777f5823ced339be84b3811ff4af5241b80257037ff32432942bef7135f0534ff00e3dc04b4a17e336df8a99b18558f4ad1b3fc6c68fa931345a560c9c402ae74f292d8bca8f73057d083b0c60c81f4be19416866f1c62256f7127265b7beff7917bef37d2bdf7be0bddbff7febd2b79e4c25b8a3b71c85d959e1587582ee31027b2e190284424028c0c9330925dbe6224222512e16a848843e28e0ff99013c91f8c058d31c618299cd2c290905ce8f158b132899ce46d0ed5c0fe59c11ec356d48acc2d736812b544d32432418b91c4b0cf9a4496cb49241b4ea219656ea1850c95d899528ee61633ca249a4346cfe85da146a7463d715def6ebc289cd2364972e4c8953951154879f3219bbde42b0b12bf079a5dc8fad5b3e2d289644327f228be856b71f164b1529a6ce1519cc8877e7e983c23eb836aa3a5704aec666db377c50a2b797b46164cb6d6b29e15cbb2acc763596f46b62c08ff5def8ab5bafcf558691f7a575c7b2f8cb78497c433b24ff27d476f09367b61bc2bcfa8933aa9b1f4c388628c31460aa7b4b028631559f2262f997cb320f1fe8561df47b0c730ec1b097bec49c63098057b0cc3fef134f618f6d863989c5834c99fd314c2562668251309857d966462b9844fb2c02cb2e1fb2993c825d08a0ce545e24ac66493f73793994ce26c9efc793dafe7f9cca153131f9af4fa05c077b79940a1bcf58f54e5990581f3e575ad5ca83b5a9de45af58fa3d23f530928f96ad24bb24ee26cded3fec901c8d055a54278ffbebb3407204c3aa9b1f890db61dfbd13bd1eb7c3f4eef4aee5ddbf2b8e8382501cc7e51fbcc2e52c00cac051390ac3e5f491234bf83192ddbf255c4e23b5cd437a2b70ef515c8e0b09f9163e64c6182ee7f1f094f13a89cb79567ac9337280cb814edae67d10b27b237ac4a5455638c91b350a12a407dc9353a9ef239d43ad502b7d640ee554ea1ba973280fe569a4a49c4abd0b75ce149a422e247f722a2591907852a97f563a471e497ddcc9a9d443279d13a7b44dea53714a864e72ea6160504ea556d693ceb1b2b4cdfb949b32a191f524bf77b1b2a4b240d9427bf27b9415305aa2690ee5f727ca439330419b94dfe32934b5b0ef7a5f4292625c3ee5117964768c3bf4ca94ced9620f724c624a76196633d9dd1f2e993e0f3f82417409aee6fdcd6818cee6bdcce8151f34325d51a319e00d3e318250e4b5933a02fd5a7291524a6996bc95725b2ea5a4ce075dc5dc00ffa77bfade39475d8c12be180bcee7923af7f05ddee42afe90e5bb777fabb9dae43bfc007c97ddaa22891325567e8e30e1b9aec6a10ad7588255aea1a6e40d95ddc72acb8ef07de0eefefdef755741e1f3cee977ef903eb49d23bd733cbb77f2f3cbbed5c82e1b4665463dc1d2fbf65bddbddae63bedf7fe487b15e4f37cff4d9b797ea492aebaa5e7b8c2aed9a7e51966d062b891525457bd3800d0990380b6991fe1745f6437f2818a07cc108281cea1716e5af3f7d63602647fba092003a0736c7aa052e11680005c8d7be0370160c035d740df283cb13607b32e785d18303232ba2cb725ec5e1ce0d5a9b57ff08f515d5232659dfbe7e5682315c66fe55c4d1b9d525c601cec4c1c67eb2c3e4d1cc78d388fe3b82229ae7496c601a235f9f2071784ab917fca7aa735f96d845fd54642b480dd67735974e8ca79bc87073c33255340a67ff7070d5e24c1692e3ba7cd1e727d7816b2635d166c9aa275b225ec9ade7ad3c9542a992ca50ece93cfd25b17bde84fc04dc069f275d0f1e457c0edb05eea00a26de4df6c27cb004bfec1d548f91289aa489648647985b81a7906dedaa88dfa8a9def98ad3c797318bc27b767a4e0dfd66f2e07d9bd8b920d30009a9cbd6856cceed148a1545c15ed46d3feb598d3446d23e7fc9f994e4b396a2947479de34cdac65fc7cd8da6fdfb6b264d043b93b3fbe8059bfca8248d581541ea548d00004000d315000018100c868321a1502c51a44d8e0f14000f728e406444321848a5498ce3288a82942104110280018000040c8d100d2bea2a6985e1078815ab78208b219388d77db24a3217a5a8888c515b0d909982f81946e341f00c5e0104390fe108d5defde83c26c6a533467e051252401cf04c0706fb966c9ba21077a169f38bf75ee920b14e60151aa87d9a3980aa4d8f967d00da44885c1c1206650eed957b503e927e065989665f22cb63848490b8787379010d4d81fae3d5d781c77a48b11ea1bd89d85c016e5bc016aee4682ce95c23dbcc1a1b1da7513d06fb58fd6de2a5c542903d57bd9d2dc186b09c9170f356fc6062cd9babaffe149a679968ab9ad7f0839c0fe4740773cedc07df1df5a5d02fc57cb142f7d119202f04c528b443dc3ccc72f78fa26e3af82f583e463830487a4bca703b4082527019490ec1d2dbed06132be4bee14cb2625727d238c031b1db622cde48d1ee1959f926895049a4f85db13e0342b52cb5546b092124aab171e8877186139915e87541f64e7a54ff26ac0c279cacae6c7ef24fa7b8d8dee1c5c2bd298f8eea7a8d1419d4b048c52129618f1b43a642a94e8dbb0a61e4a35e31edda8e0bf21b06edfb58cbebea272adbf5c02d39dd92ea495809a286c5fa17334263916b1387eb73c6cb527a3b492a7948c996b6bcaf1dd33ddb97e45879c7f29243153a4ad56d38a7b8edf8e167a8468106978370449c252c0e555c17025feca0388abceb855c87808eee52760f133cf45eaf905528fc8d6992d30848adfd722718eec8f7961c0a11644904b7b9a1429a6c2fb9d73bfa88716a1e429a4fd9a8c952b45381a330c32db6173624f65c874623ee591b1f7bc27d9b7f53d823cb8d1e07caa4b07938ccbd129dc5409dbcc684cfc0a869e217be742e7eca233d8393d038ea177be18813352ed5a207cdba5b795ee89cfdacab6fdcaf5b7273a225a658624dd55f03a23a37b85e2ee50664b2c0100988836ccfd3d6d3d4b7d41ebcadf6dc16637a3d10c8e8131dd58b66412a9d27e2302e5e250a67210501924bae8f4c105319d03312f1964dc7d3ab3bed84230a263420a4aefe766e4f23f0eac970dc086143ea8f94ee981feccfb3f1316a8cc8953d90c00b5fd75fb20c775cf5feefd991b0b475a3d0ecefcb08fcc9707d92bf3a5ac4d4f2ea29152ced129f511f2baca46bc427626359c66fbf458f8f7c4cc7ecb4412b01fa6da8c326e8cc600823124535754a9e888a9e4f1d986600939c9b67ccd4a78f384d4a1903209a798b256f7c365c27df2d3423072e041e0b8f06a91d196209f29d27c3c1646372ac011910945d77e667747c8efe0205301e0d355dfab526050522c8507ded6f9965801b97b63fd2c8800f0b09c651f8420fe82229d340dd6fa63826af673958b7296d7bb8c31a70c63ccd68fdd1893d077de86f436c0ef0e688f703591f52ae15ec5c6f181cf8d69b65bafa9377bd8a59e81f06126d8f0dddef53b384b66b5f87fcdc76a6234d7dacaca937db239bb361a63ef4267eb9fb10cb0f399cebc987f0d883c615589b14eff4d8511de358f7ab33f820b1333a4ecf9dfa200e406094392b2d0e676d443c44fd1b9fbb50d546206c8511633b4e1f2480b29d3acb4aa1f0fe7beabb496f9b7112284b5dc30db90b8da2b88dda8c1594e00eda3400057ee9169810a93873973b47bc2a90675cf75436037df5611c6efb07760e637492501bebeff477f2d78414fa82877e68acdd38d778f8f2646b76ece89f7cc4d6543e5d3d3e53f382f5935c9ad5d4642db7678c83bc634a15948e1b4425f520e54be7115bc711de9c78c2e00e627f9c3f32197c62c3c442924fef883bcdd29c75ba2d5794ff392aebb5a5bc0c3cd8b385d230312e992a0ad3e3463abac290ccdf321b744c25fd4c404414c36b589dc554e04eae6d49d782d86fa4f7ecca89f6cd0be3f408bafad2c2fc8ff56c49d2cdeccaf25e679d10e5d14b2a5733b8c7ae7f57660ece26bd66a0162ecb839c71023f0705340a3469644fe10e4d1a1974e76a9a8b7ce6a268b27f258d024bf109d44cc9a09a4bba661af471271ee577c6b9699f8b03b501c7dff19ad1bba184ae5a89c74988177c938ad42eea8e5e14de6d54472fecfa9ab565b65d7557ea6bffe805db5d7908b3a9faba567d6ed74da27709b72058276bb18b7a6796da590c76424634cf9c18b78ea0e46825931a96c2cfee692e3ba202dd2910f8e47b82d726f5a26de250459f21dd2d0163a95f6877227939c1cd634b64ff95b9cfa402a78717d895d892f70b46421584d65ac2f3b67668db34d691bb439a8ab9c96ba71fc3baffb8e3c997b1f16bb25e39c843f7d40e2ae50d2e54f62bf07e1f4f4d4303a3c9c4619fd69ea0a036aac901fb076760c8f783c884586a603cdea1c141b9b8a306da6f329362d300c7da37017f6320a83b29edebeb5436b46ff2e3579ea37b76edebbb543647fb0611006a06a4686de45e989758bf02b2b4ede0f5b7d73a595b8d54545eb2c62bd3339c0c96303e5b763f8c232ea1bde3c6c02e1ffe67e9e156cf99025e176d5082433041eed7b1a5844a4f043382a646ebcfbf84ced0181d77889b5cf783170246b737099cce42ec4c5b8149720a55197f9d2afdbea4d683af047306930447fae27b8ffc8e4f7c40fa51a0f344b60e904a55b3ccabb5536e5dad17ce00fec1fc68646f75b519e7034727d8d90efb16386372b9193610edaed64455aeb4962cbbc5521634a1f8496e6fb90fef76768fdbe68db9d1b49bc21aea897c771f833db47cae532074f625e69de5b16548740c348fe3e8b714fbf1bbeab082f50e6000f5e4fe8787e8a2f45cba50c7db14629b90868d2f2e89604292ae8b388918830d01399553aa9b4380e33f2018bc9bdecadbda699605826fe91c6be0e22b30864fc5dd5f869fdee4354e22f891491b2bc185d07ba35891e828977030c185ae2c16e06e12643dd0de2a094c381585c008e0ca47c052b3cb0c06fa6c8b42b63c108eb737e81d179f3637670d0c46c38dfbc890042bef16a741f66e7ae7feb03eac59a0ab253181b3df6b32f3723581b8000302fedf8b4bf75cea00e295b690abb7224b856a2714e703b8af7efbb77d05c30784de3d65659890e8ea2f749666506c12ffce90bed6836be049921f932861b2903a387b9c3ada8ca3a3c602b94eaba7532cc58c33fa9b31d73dce02616623c35aa7467d81487f7cef5a330c97529c267a2a6ad500f4fbf4a81b23a3c1e30fbc909617699f965e2b2678be80ec6d1bc80b3cb3d52d179f878f79c4ee16cb9a8f54450a251410cfb43ac24ebe98f974e37c330783e76cba6cb968eddc8c8eb6a449d2634ffce7f541d1784686ce0575a9d7f905d9bb31a5fc565ca94d62d3dca05dd37c6393e968bf3a9cd1ba6b0e459ad195189523c479b19541a91a920bead634f9e5103e04ecc4c1bcf2ab819ec82bd512c5f13d60dce3f08b96731d3195e34996c353ca06d75bd0c3990be9d702ec5fbe37603e89b6b35bb9aecc5a413cdb3c58b279e5c58c9985b44b7d08e229448c93b5523d755c9a0601431c2eceab57edd63db419fb103de957b32630c062703711ee28063750de9e0da461e7a4d1197c79c381d15af46201f27421dd8f69bfa6141f0c377e17dd9e81a2abf3707720720f457676c7950f55205f035f48541d2960779daa9fdd04284f0c9b5e44db89566277fcc75d0e212f74b3a0b010bb7b22dd1ebee28f16574061484470da9d1b0ac444fc453f7b10414910c86aea06af6f66c8752a1479494cc1c68f4cebe9d08f8dfa0edf3c5026203f11c848aec73d410780de0c1d007b72e802d89301d427158b034dc750097415538414946cca781456c3f60d8e950372caa8eec9265880df1ea7bb3e361472083e799c0b96dfec1cc2fe03646307270c4bc2b0f63e8a2be4cc0f23db0f47f7311616717ee031c83a7a8b4e42c4704757198746836864b614988314b7bb4be0548470d0feacbdca81587e4029a699efe6c5e143c286ae00d5004aa1a42380bc668ec583fe40fc5298df82aa1a6d2018ac192c88d4829350f69e6f1d62a5325960ccb19853aad3afc97c07cbc8c3d1d26cb3f49179633c2cb5a09146772862a72d68bc61de121a88f3ee925a62a69e78fe708b1b840da649a658b56acb4b6a4eddfce144d43b6cc9e21fcdd9c15917d582f943496fe26014f387c8f7e520fb87bfb2d4c939f30f882bfe0463d056f1674301f1a0bf78e7eb2325915c19aa80509eb5c3a09efadaafdadbb8250174ae8fd554f42465783c336c15923c248a0071a3a424c004000420318973569b2f6e259a446b68bd58624ffeafc8812a14fa97358050ff8d539fcc36ad4ed55d369d1ce30893a07bd727e46bd8a9a1472be9301e11511f8360dba7a2191743fb41cfcbabf342740227e84511406e532353dec6dec044bc32a8ffa0c939555c7d59860b9ff1fef6176fb451cc721d9ddc510c01c6686a66497fedc4f0a2d2748610988b726dc71f80476ff1061f5392c5053b4542c7dab2911e9ac1ec6059d48ccbc2f04328820097ce55895729f5f22240f54b10be7311ba1204e8f52c85a2013e3a21fd61bc5e35e8345268af282937700a365c0a6cf8cb3a170d05dc8046c75d03884815a30444db9048acf8c4822bbd13cd6ca65a68c8b8fe42144642a69468e886606834c14373d7dd05e84afd429786226c549854c47867294bb2aa7822ccc889f6654164769f22407bff9cbacc000e357c8e31ef153cadb6741edb50b5a1774ce93be16061b11e88e1aa51cc2fccc9e0dba42cd6a080edc869c77e0ef70b44b8fc4e32882fd2a877b5de98cb24174aefb5f7d19aa8c733c2b78b3780fc8deec11ced1035a6d411362e17b5319ccb1eefbcb6fc3159bc1a8883b98500482349e2298d06d2a9aebbb5e2a1288c5d50a42002bd91d61a7be701b98a2b8776900bdee4cb432e92649c312a44e1221d17a4563f8fc86db244ca2ed91718b13aee2c9a61c6678a25b3b5c56ea8de4494960f54a68810d1bf0e05e8b910d92c0f0d5f66bdaef08e2e8c487407cbbd97933b5abd363a6b99450e824625c1494e11cc7496689b098ed9ebee9d51fda9423b48b70bbe490c1cc6174c6ef155787cab1349073865ab04370e38fe72909864d5aa7de42effc37ba3ba3ee09ece1ef3bab16b519173e2f87139058087748e0b46b78915df874abb208c73867e03bd1dd121ecbb64a70ea0555a7f25ff0ba86e2a86c443d987058eb48305ca2fbe1bb2cf51ddd672e8414182f941fd632a0f7100a0e62a526fd33ed23576e797480db39f62238210b7b31a4d99b2e35acf776ed14e9c2db290e40e8b221982db06db706f04731a1b7ac2b242daf6d84622df37f030518874659472ec61798e3bd4a7c84af2e522d6920cf83dfb87280abf351c897381cdc83c80385b48a63ab54e6972c85268e769a5adae46013e06dcda87d04ab280848ebec971b7665d7a16b2a366257c24cd287b8491aa70227b6d8960b3285762a562280ca0631693fba16f07e6b91b98e3e617f38536a343634c9634eb551824c57a1e96a0afe4c0e6e8d9daee30cbf0cd2597c299407fb5c0c2a5036dcd720387d6d6f3cfe32bd4356b27746696bd132c2c3abcec2303e2b0dd59344a21c52db945a39977cf5100af73e14f8cf2d87ca4536230a54a65295cf2ea2b27944b6f969e490279f980132a4fd152ad5911f22464a1fc4808bca30ed1a1c35de39d16204ac43152256162f51f8a0e6659351260cc24b63f545e9840691b13b1687e3143e869613a24318bc0d3223e0b2f3c1e1835f033ca103b510de51dc2676a14f1e08f363d299d98a46c2bbe2ea74b4fc16a8deaf4fa993b5c3f5a075484c43fe6a2eef16b31e78c06be053b88bc06ea7e469e4c93b245039a450fd485c2e56b01a4544e81f8f6f6b7d6cd15c4ee72a34965a0055525d8d1ecb8dc2012fbd4087250e937c781f63a268458ea173772d59de1dbb82fb2e8373f712a5c5421a782cec221cec2d55908d60d5773fe9fb266210da7328bad1ef650905a298a9b859559c4d4e31f0683a3f2dcec77e9e42caf57a27a14355511d9d4e576f3bf265723531a6798b53328a1871fd71b963934d5f532f3b4378420a10151d4d62fda84e9b0fc83ca404be2468819f91f9508d77af7e356f6e24055be69f901e1f874b8ad3dedf117c92ebc2a343671db52d7c523cbcc9e1d5bad9fe1eaa7e16aafe199756d04c190822c2d5b490c32d4d31e5b7ba7b2d8f3863ec3b6f507a1cf4d172c338f319f82559799f642ec4fc4b52557e624c1c7eea04f4eb75782f23f99f6e728114bc51d86dccbcc84d04ac4c8fb9c15808dae3f222fededcd86845cc1bb0529c07d19892c83e177e572c26e9ef3efc06ee752bfa1ae8eb79223f4f0d2a26b3648d70a1174f60884c00d91d24bb5fa664d9ad295829bbdde0e4b26fd2b07cdd2f330d4e7ec2eb747197e3d9128056825e46b34a40c99f7d9d3ea67818a5be9e59018ecf434c29c61563dfc283a360b36b55301691aea16d65498ba51a1df763be672a17c85412041e9e571cb6d72132c90b5b8bd5ee58709323402e7acd24c09042c44b2aa869bafec8e680b7c1b48bbe2423fe5eded1bd06632c10dd41a0d860829b3f85dab7632bff09cecabbebeb788a1791b3cc85e3468c8864d11d3379fe28951d45e9914dcb57a07236ffbf95eaf97951825f0143fcb9d3748ca352709f2e65afc76cd9dcb51356b9cd518811cb24a8d42fab053493bd1672a394d56ca7cb80537cadf88992c0fa1a03b0d62ad41aaa553535eeb088a62901e65377fc854819f6b352dad2135719b9e581edfc2aede2d1294fb5c93d4d408e7a977462f5ebd9c7a76000af7b430091c0642d6a8417fc7ac7235f90e87a66ef35d5fcc117e55b0066f9840e433c73edea0f1769ef4057660de785deb0ac5b77f46104b6ffb5031af012c51dc8c009762e8a87f09a3fc971bc04c880d606dc1a12b59d674b8c04a7305d3731e91e30fbc378fc4c255d508509cf6de0cac6bf20f572f13c5cefc185f949909a17ee8afb1d5c5d0d792f4def0faa141105744dd76140da54e24512cb71a4c1679b86067d9241ee997212b89183f3150e9078079427a896d48595c06b98ad4976cb2234effa1d173c173b29d1bd078978e2b5a65982de8aa186e0daec32014294a41fb62d67b4aa426c76de42d090832ff37fa2ee44f30972e2c3164254aa83600291343c9162a72f9f3992f72e52df40d4f79e059cb004eca7dff0ead1668a63fb8fb4df65d2efb4377c9c644caf90f104fc353f446bb786e8fd1d5072018f5f2b4632f116e76b98f668bf2a72d5ca23811fe085c78684518b1cb2cfd382dbcf34c9f2762f952671db9ced19965ba66970e0aefd5f5da2a0d961c13937f2c8d2b01dd22a260001517990804d9f14470355f2a5ec42f9bdbe715801f7b59c85ed9736f58098a9c6be2938ea8988e0dee9f547bdcd0623022864e735715dd5ef58ce574ea32f7cda8a4c5f89a87bf39a773b42fc46d900a8d3ab945ec91466938ef3e095cf3271a70c6951028cbe016c627bda22a466635152f0f9677f0bf7aec5d92ce96fbd50647fa1cee576043f8649e588e60a7473430850ee0fed11ff27e0394fc2bc8efdbb0d12b8465cb69a3539678d20dec2641653a75a27e977c8974787141e923acdb2ab8fcb848ab9c23a0344f4d66609d581135878e9263d7a6bc15f17e610a4811d5d43330f855c8c7944615369884a30f0042de68050800a6b0fe2d10e446e6db70ddb42c8ad029440fe30666ca25e5efbf06cc067e955eeda986dbbe8d70d0fae273614360e539bb5b7fe2a5d1ed92cad85c3b596e2976031c32590d87a5a6c53c06347a2a57b315e58c40e3fc09aa04339b0b21554221223950dc65beb50f50d01ad1b948ff03f28775b26300c20ef7d52930f06d246c401018464f3864093a73839d17a7112be6f1a23098108e0da477604b75093cb099322862098dab9ae3ea9c1c24536ba20435cbcb08a96ef66eb2bc32caa93a54692ecae3878e10dd3a249f3f79fc4883d78504efc6d30ad0589426172a7fe0a998e83653a25ce8f382f8471b72e31cb64e29cec209814cb256ef9a83d8a7d36e4ab34ded8794d4200e0da2a16a1d3bc6535110dcd73a2718fe01ec013d69797fdcbc2ce814711a3b7e6ab5286549b1106959059908847b8f35c404b50678f7db9a2f03f5855fdbea3543259ebaa7c63c8897679ac5d9d08498a6bbed8bd20b63c422e000367ad91546875d5152c05b316891ac004824ba33d95f8dc524ba26d7d944452811c8a2084fe8498b1df3bb96f263083d6b128d5e9619247027a196b0522aa593ae5c4ae707028428cd09c32473d6b0d6c8d8104b28687329b117266ba8353bf99341c092ccb949be1685ca353fddfd4a0cf15671c1018d59c169330ae02c32abbf3f2511c09a5b841c9a3b8db1e8212b622a5ce3a0aa9fe841eaf5e2828d4bf920814cdbbe9be2bbbf04cbfc094e8e4e0092989dd189f7d94b4ed6e743ae025b04827687ef98e8afe891c78736b1f6588f49f23beca70a99e2c0e07a98fed7c35e1497408a1b57c2bc251f0372dfb8394e532600f3ab3b38784a7684e2d42e5475c8814d4a6d4f7b34829b93901dfbd7215acbe57ebc60faa1510170bb8a661c2acd442f70b94c9fca33459e01f2be8f485b64a090a1abce941c6b667fffe898dfe0c55c8eb73f7935867530b38d5871e9cc330dd3791d1a113e40a6ba67954f903d015f18b8192926d25edf1ca737f89c21b5a3fed513f21b7ed9d1d1a3bbc7930033431cc3b7cd7ea2c2baca13068d54fa01f09c3a28952df474cc9b0de7b045754c70aa7043a0e2a5f6eca1f97cf69908bc414b32f0bfec8dc900b7824be7c49cd132019d3bc77eb4affd87239e8d2696598f14f9ac447101653da90582eca5ebdb2d085dc4b9441658569bd515ddcd41577a3a985b6ee3400542df6b756ec31b1dea00169e9b319c2ac2201a802d4a725dde06ca657e258f1a891b3343851e9398bd277afb7950f0dc0effe6b2e1ef76890589654918685abfd74212620c5c3a586195d80f238f160e958c3012ad09bfb4712d1431e7cfc9f9f92e76f1e59151b7127e9bc5f4a7a9c8ee39cae514023ec2119d5c0fe6e10b7bd110d50fcbd76d6d0eaf1e2a8c4a52c0ce0a349e684601b5515431e40ce1511690f6fd3755a54396826204a473e6bb43ee54c86c2cae6adbd51b3bcb3468e44d512e1865bfdee7d2565fe1e79f271d8ea2991e54e02194c1e23cbee90150d9ebb20f9b00b082fbb5061e7a9044a82fa29f4ad4061b7ac8294ba1dc74c2af4f825283d670c70f8ceaf19a26ccf03d45a81a24eae298ac18607d78e08c3392f83fc88d0edca5ea6493a95a63003d7ac85c82e18cdd0e7884f2145ec5569d4c5edf33e4fc6930211ad06b8f053d85712909b50965b857d278c3372a4b7c0095ef2fbc23dd42cf935784bce674f02af385fb74d6a37b4a57dd995d4f3681211dfe85a49f8fa81a79aaa6775d0e49cead2e94d6014f1cc2327aab7927fa1c1d550e09c82e96106d33b301bc98eee5b173335e6f9da9f91923f5b741fd096d023ef7f724951bd37bd0c8b341dc3920bbd1fefb7ad0fc4665bcce02fd660d8f13890acf6ef2e22bb846287734462cba5e5ba6a1d74d4e56afc8301ef874512ec3b8e275780364d6d32d8c895e6c2962b6af4afb1aaf487806b60faeacc02866580c8bb9776fb25406e65671c043656d6aa29411cc94b0400fba151f024c0042a01b6bf24f2ac8a22c1fe28d9af24bf4ac98b110da8a54a8586b640b61649b85b578886a33aa739b343542fd0b237b959a35c566f8245ea76a52ca1a3a353ce6f22ebf8dde24e8567a950d36d1ef3e447cd595a553c9c57622b3f0f944ab4ff9b1961595fb8af4f823ef5bf0ced5625ef9f79941d3895b58ad94059882b5ca489f57a349c288a5d0b201ccc50408d4c4b71fc6fa92f6d376f5cf8fd866bbf0d7bb4165d6c645388a01d2cc6daf3e9757ffef4fd7fa72d017001c179b5da4e96edbcd951eb06833e8c32c0b25c779153638d7cef64b8a6e303be27ee49fea9dab10c98e17738f4ced4e1efde5f4fd4f10d4b5d6c51f6db51f2285c6cc949f7c7031d6cb8f05f8c2eace5d56bbf98d7cf7ca6f2f379290eee3a6fffb7bc0de41959ae1e7df03610f4175334242cb9233b1b86f61eed4c33104f803841b1509a461245328af204b79e510a25f8d8a7bb63640e537b7090b7a36bc55aa53b748018c2f681d2885160a7ccccd0b9ace04f719ac294efb254f5c01172eca6522620d0dfc50ea3df109b7e262ac501811672611b9195867a6b17fdf828f47294ea58a3c0829a1efff882c8ce9363a3c3c373ff955e35f079bd8367e3144840553fbf7391ea530c538c958e01afc9d708c50ee7c494b50e7191ac279d278d70da3380145cb9c1f7f9565d1658261bda8355052f9993275ee42c657d23c29b7c6a5e50bde7c60b3f076f3f5bd2d9bfba76195398677875b52cb0bfa9004f239a57178e0be5972ea1598505762049c051a4da59deb356879d3d3b65ff82351d5213b0f35fad99c1011f95924b139fc2aa2971feccc688c9b15e814aee30cd30932454b44a4203de723e4c820686155279e42cdb0f3e32f2e3448cfa2bdc53dad3159d1ef9bef3a075ec9b88145d01803bf7c726f964ef4898c6e019b6cdceac99c75adca737afd93a93591aec27e9e546225be30c57b0d2e43e180fa1a57cb4a421a42af8809cf91aca91b31310ed14f231f9efd3b94ce49631ce411d881f337ae4635d770969add6b2d0a7e5dd3370462451626577ade5c3af52c10869af8f68ba1e69c1910ea3f8822188f65d2aaa05440c2cd365c8a463ad4aeeb49cfeaf583749fdfb7ba764dd0187cd7bc88ef021a868548f2f7b0a2792ad00fe277b846c91e4893d79d722e92d8b0986ad4f223f7c7ae6330bdea52089bae5d2adf79bde1ccfadd7ce86383640adf62d3c14c4f77083b6fe7419f31337c54c8414c50ccb434a511b78cfde393c276e81bde4fd03aed84cd77a38c923387c503e52cf4cb9d1e576c332613ac585ca4a7f0e01704516a33ce2dfd9345d6dc880b627875251398ae1c63431f893681e44f0ba74d16e0bd8127bb7661546e910f29973b0e9b57332d19860f0ca4889d0ee975498818d3420ebf3ce2c84c8591e98a9aea9b705fb5a9f13abf6172391897435cc67b279e443c4fc728b88a49b14d1c7e71db256be1970d2f88f3245cd327632caa4087d5701c2074e04914c3c8648d38eda581a33811d100ba5cfaac4ca57c42b96fa7056cb5ebee00d205a01965175f3b3208d1304e98e8e5c714e20ea71354fab721093b63b3dc8a11b752fb1788bd96898324ff5b2569271c6d3c17a45dfefafcbdd6ad5813eb193fc9849207541dbcf7e82da8db0df43cf3f25cfdd3a36ea8d6597b04b5f49ba18824d18674427c8ff1a2dfe37608ddac91c85b8a9cf474e271bb095790098db313546765e2b4fded08bf6c318a98cad07258af4c88c78d039c3e0fb67f930c31d4870915a7cdbcbb52786014bfe79063f01bf478449470315a9770132ae1c625d10388624008142d24dd7267809fe2104034b47c7cb1ee4de269c0727049be4026c7c47558529c4245759f6c925ff676cb3534a5b6dce69323e0516ae6f84a90aed2683c54d9b7eb712817b684c28dc55d96e259011ca04266a752a605dc49d4a4a4fcc67b40499accd5a7fdeb49caa8103b5fe17c60ab01c3654677d7dfa2e8a4bde1643c9515e49508de14d31d0ce78aee3995ecce57fcc31290b31867ff3ac8309c31653169430228ec922eebc865979d4ca847a48870599378eafa9c8a24732c95ed1490a4e99ce04ae10d0857f2299bc849b91c596733402d3bd8c4986d0e7a30a5c904f9b33ce873b6b772efc9b73fbcda92e6a9c45cf03d5c644d608bddbc351c7754d8a85acdc4601ecee9744fa0c693001a7d16df2ef9f0af3929d0c7a291678f19bb7bb443f57b8868075fb4cda6aa8d0c5bedbb62a1e90d1a85a5303d2e793c87629ef7ae4d5e494bb50d0e14f1522804b0c08c1f77ffeb4ab6472fc0b3ac1be372e6cb244e3b9364937c8bf3a6ffde461791a82243059ed76ea824352c06bf12867405993f77f5390bb0379db0b5b76acc00809fec6d640a943e09d61e992eeea67a91f74a6a3d0f688b01a5e2d084366903ebbaa75acffea21cfca6dffeb0a03f9379da5370c6add117358bc246945b97ad629e58c84e3f0b62649ba4182d41ac833637315b805aa0402248721829a68dbeeb097b2f7e500b2878992c7d28de857dac2780b8b40c39c9657d819057d2acd3e6ee80408a7490ae0258367d6db2eb25f04959d0744586513844a07acd6a38fa2233d09317fd22a297baa3f72e766c90cd536fb981d8c5275fb6c4b2c42d55913e23c82705a91f6a00d953e478c40a3fed0064a8bc58b7d2c9577eb3dd2b949b36821a58cf966c8ce3b0da01e6e7d443a7265455d69a39597d7dc113969cbba07260615b683d32fb972554121e59cacfad4c79e6c443dc8d3c6489cc4ff7d98dc58fc26ac8422b57341ba6427796a19c6f0cfc957aa46d125203e567c2e2c4efcb5482880509fcc2e0857d2a5763734266be64e14843301ae1becc7a43a66bae6189bb983728683d27be039c15d9a0e342948c1e12b53a9bbde64212ba12a4ef9dc7389becca27424304a26378b3c0df59094794700e10e5149d19dfb31088802da8b1dd255db66c4e20d92f4c27e99820b8b2093c9e49d3772392e01ff3ea30dcece39ce1e04e788854d81e6d04cb04c9ed6d572d7f09a6623e60e72f8fd84d96f627d8693781eeb62602f571096bb3d29f8a5a1949f56f6109c71b8494777673c28ebf0e087009c0670b0bc2aca2646a47aa6f83deaf6eae46671d08d2b57c9574bd79281d76e97658d89aee38dff9407c58381cd8440382a05006663ab4c7227eaced0d9d11b6f6a0436c36eb211853f6004bb12899b09a616a4af706bbabe104305197e6fd6acb99de2c1517ca3ee5dee698459aaaf08b50d9c39258da827ce1048ae7b088732d83491b1c6c47e416e08e25970a12d0f098b4e3bb7dd2a92d2b76e66198451a89b7ae44eafed5d82a45be2a83df2c7fd32dc5caed1529d631292572a8c390c3a48daee42b90cf3a30b5c990425dab55e4d0bcc1675217ba4354c1a0db7664fbdd92aefd08317f01dba4bf1207f345686bf06e430a0e4d5c6a469cf14014b8ad05330ee98e73a7c016d804eb5447d227ee623208683531065ce123c6a3684cc2e27ead4c1383500a942511248752caacecf0de3eb84611eda7ce0a8f856390c4f3590cbc3991acca6aebc8ca7e05ea8d87e8c47e9fa4ea2f40ed3968b0aa0e9c04d07c79ba3a58f07541151ae88f45ba3e56a8044b2d9047915c7169d4cef1970ca99d1528bf447b964ca868f1d252a503851262b93e7b4e3323a6c1aae407ebc3f760d8428d244ed3b65951e11539ba24058c3fa3106e39b44dd2bf37f6dbdc125ac47a28d81eae47788fb6a6c03dfcd6cf5d81c71aa97d91e0a707e4e60d74e1adbb8f230b2a9879276acc71c1d4940f5044c54f3afce04f45c4b46b285ee7cc4609b0dc9fac0b0c948eac6f28fd045d314fb74af993121c2b549dbb07fc0a17530a75d7b9d3fe7d8cae9e230be0765480141a5e1cd329633c60b3a3364117ca2880762a3c88670d48f7ffa0d9f83e0e49dac5458be0a07caae0ece552e4c54df51ad3bbc675072bdae77562d423cb8f6fe78066949ca20c20bd6e2675c2f9f8b63f53f4d3913fa837e7a7837547851970a94e50945539a7acfe011e2f523a84025e5279c365c7917ee80670ea2a2c22b74e8283c960d338ffc26b3b0a182dab2722891856f3aed7ce44a0855406c78b8cabc5c81ff8428686369415e047e2b4ff460dc6d2721c034f129f859bf5144b8b794ca3267199fd5ea54c1090d2850771536fe324ec4b75124f98354eb93e31e748d1ccde717d30a6ebb2aa328aad5587f1a3cb74db39b2f7b7ccc4a1eb01872afc8091e97e1806b114876b9dc7362ca6313bf68852e00ae6d2cecab2fa17978b9b0eff1eb27f15bfd10205644cfeea36d251728d009ee46490296b7f2f80edb432893adb6d7aa64ac98b06722d59cf9bf6a1771d20aa3f92d2042d21cf69ba4dabeb9f905a65410ed31a9284176625ab8e764dbc87acd79b858eabaa6f119db4dea7e0c5ea1553310c3dc975683e1a8c5a744d8ec0985b4cebd9adb277b4f910e60eeca498d2e57a275deb18b4a82530cfc873489e8e21d98ea0f3cb99e3ed0fb91bd95ce720ed8677126d188be1d060e99cb93a49fd0af0dbd8568465fce28c907df0563ba2af2d9a75c21c8113e0f997d6511946900791ee8f6d09595c453d94ee7c3714538e144997d28c686f79938545378a7eef12aef05fa92d7630c3571da0e700be7acdcb361dbf0fe6006428de8d49382d5bdb13ef8f6066056ab14c4df2cb88435287cb56df016d72ed8d6ca5a54dc053b469bc53cb4db96a3a05b5df1f746fa29650703f1fcfc0eaf29f88663ff7e98ebcc4d33b9ac0a8786a27197ecb8aae31e88968563e658054d04405578fff019534750dd0677ff274fd1f694e2dce7fed1da44a79b429a3d97e4c2ed1208515c069240882c203708b5d17ea2315d5ecfaed8aa956c27d7b5db8af662d0bb94a9dc00524c87aa1466c44bb6185d461bbef280bc595195522ba5dc6c806a5cb22c452d651460a520947b9635d7ee523e87be2ed0a2ef9d37fe508f2a8915a8fa40594926b4c6f91a034c2c697d65da0193fbd0076a4b42950db87ed20bdd1f8b7212e8c43b65142939c2bd8876167841a948ebf675595b933e43a21667fdf422d32511d28afa1651ccd17a5646beebeac193237c0284b6b281b5a7895c21d31e46436978c890ebce739b29443d140c76c2463da9b9ad7a81cf3bf9936ba83200e132d19752443123973a2998499099dc69ce048c21e00f5155ce72d4d240bfb7ef3612949dda45cd0f694756c6aa7704632d8c2b537bf87e988738175359459f6d81f1b33d72742652cc0ba953cbb0dc88bcb3f89cb398d73bdae93b38028a2266daabe4fded5c7ec8f39b401cbe54fc67225454836e5ecca9074e8dd08af11c93c7b8d428388b5028647cc17877b14d68f1a5b11908063e5e424c5e9fe0ffe07e58c346cd5ee03931dbd81803ed200294d9bc4383589f9bdc393a4f14f35e2a478516253c7424780002fee429dce67095f06dcf914d74c05e845b535329bc11754e2fd50ca279f5177f8a08ec7fee3e9ac8761f996df1775d9c504fd71c17bdd2a89e597bcfe7782038d836189149b3a43a1eb77a0a00dc9e79712bf3fb7438947abca2c5774bf342bbf223af327b1e6ce39f621d85253e9850ef55fab13dd6decf0f4c804431cd7bebed8c266e2da63cce67795dddf1da7f335ea62bce8df43002c79baec568713d79a6338e690d650845784d64c74615988461416c4d6e32803184ea8c69e95653d66bdb56fde98d139a47d95938138ce76c0c0cb5bdfd075a1ddfe72ab81413b465e1f597ce684c1c9693f00bb2c56a637bc115b1969e813cca037c05415f306964e4a021482e5780beb137547db8c90f98d87b528ddc099216d9096c14a2c50c201ff6828962e8b15809b7baf89d1988cbe54fca1d9c441fd8838e4d9389e7128f7a53d08dbde8ee46541ee137682aadba38fd9b5aecc39f36ac2b66044a86784548ca3bad11d85d1f88d4d733ee388cd2f05981a4948a1d577e819308115dfc72e0663d13b989a4ef46b303dc88f4975b5b994e517408b4202dc4c5b9eb2ea0979d43f950d0f7581e3eb381859ddf4486462913488711015cdf61486df9f4779bc5e0e1084970aaf015932587427fec8330b07d3471f8ed89dad92541e899b0d375c73ecb5b24bc0af3be12f8ffdd8c2fd2c0e734ab6469dfcb3d556e9941ae2649e4d9365568c711ad4dba51488113189b5730d0605ada155d9a492860aeae490245825f19a243dcb49df491766879130d672ed2e13260813a86be907d93003182bb0100dbbd69d7caa94de631f616945a08b7f2ca6d45ad8d39b7573c5c4ea982ca22a31a63c9c15e7ece032384ddf5f9bd0955cabcbae3e44f05f144207a307b2b68a67cf5f5f5f81380ee3b7df64972817aeb012d21afac988c658f6a693c2c20588c3b2a3620c93d7625e4b9e8b9face0d5ac5a40f35a0e11470363028eefc39f9f4f6bfb25452dcdf01093b49d6a68239629f0cb779aa407b972e2f365b5624c8479391664273bd110741581dddc717a920cc3d6fd65df73238f516b78a90eaefa03bcd3dcbb5e9b9cd025f2b090119db04a4df785e2688d56f4de6622f0afd0477923c31ef6644e08c41236967906c25164b1ecbd1883a47b7974e759568266a0bee7fc2b45b51d74d323ffe14a6975679b399c4d5e387f3f9301e31e3f0d7132f830adb0268c05073f00e3832dea61bec986ee516f485468e2666e0f6e0a8d3ddc63f5a27bac028cb038f7581cc53820157d6dc3a75ee2ebb5db73905c68907f426795456432b50560893f58069b8ddb14113e26d9cdcfa551ebc6c87ec15aa767b6bdc101ab2e5a1132afc550db17037910b8fe5f7f31aaeb709176f47aaaafbc9c9ced9a7d72ed4d1769c1c2fd88105a562226208cc19d8e7991587d43df5b7333f6175f6d2febe9a9eb6c3ab837f9c66491d713df8332c8bcc5908537d22561be08c36b2f27998d7395a0bfb47951c808d08d4b8db3c7c60038e58c232ddf55af3136a892d8fefb027798dca90e2f5f5020ebd511db9edcca96d93dda5a4a41f3024088dc1696a58058f814a65279274c9214f54e61ac8980e485ef62e0dce9319928ee5ff2264cfb179cec13fc742aa2466f3b323f0c9e81c3f1084dd11eb129822e7917276319d72ca79022a4b30b4e6b323e762dd00b336301e012154f5ed0e3cddabaf3086cf7911a06c2cbe106466e64932d7b429b5a8880a544bd581cd4d6c5c5957db0620c015a4130279f53d9bba465373f0bc7ac205b04606497eb1c067270c5aec86ea3b8644d51a96a60c2b9263be5430fd2c1d2dd38c3ddbdd8a850737da64b56350f6ac5176ba7d74448439b037759640cb69060657be3649b63e9f6cc5c750ef0077cd96f56e8491955fe176dd6386fa471a52c24e2ff96202d226cc2650a8232a598a2d918fb86858ccda13c816dd12b6422d4d6cad47bb1350bc924555bf1654c4567218f9065da7ce2bd410f46a63bcf38668b1b5e1d2f0cad6bbd777c51f76e2bfc12f3cac4e9a06a21fe526b42ad6f1ce5e2829badcc4c91da54a288eaca4fe8c32d1d5de113581169d2a98f17ef2444320b96e5e560a0c9cbb4b9db60721ab37f11706e4b9a84b891c93e1c1e2338e9519072d079698b28230a12510c92b022309a357cb906731cfe886ab733fd10e90d59633754d3d42f9575b90c9c30bd358f79a07f3a72e57fb787a9f1f149b3c647e811d80a2e46ab1cf1c39eec71c3503a81d34f9edd001fda510d4e9f5db13601e263384b302d40e8302bef2a51e1be8bbdaabdcaff060f3dc4548775076712cfea310177425ac54db070d6d5d168cf0e678f365385b4b21ba2ce90e298d74bbc5a67db940fc901416bf69a27822461bea15a0cc5316922a38c7cfc8cf9c0d1b18844fd2662fbe2e194e3435c8d2a21a53562ce34f2754a728298dbf375bc0bc2da9f533193e7624e3f589e8ce1ad7a328a7fc0c1afb958cc7b086492e56232770c6f5ce9227e0cd87e1d70bc80a60b172723f454a6b56825ba536d2167358ce1fd82faf0130db801b080c11ad7c761c0ff99e98247bef28723bbb685d02468d6debacbd1b0b22f8ffcb8b5cf40d3b883e68d73d0be756418252cd604b86cd3b1a93896a1a8c0669f5094fbfd6364ad7a24978853fde6219c83e6fb28e3ab4e7c562561a1c9da8136075880e6c3f5e22de2fb37e981615f581aa68c7f7d272e2d78474b479f535d5c642620e693eab44e4f1acc99e8b9a14728de54004109b88967a9b7f50cec41f2c1f3cd73415e0f9d7c98270ec09679e6cf4838f399724df30e27599eb2f8a6ca47b4998d1a37b034e422363b9094d0fb7a7ba21b6bfaae53234ff89be36bcb57788682a200765d4ec037a4b9bab8d3a599818f435d831e743e17a540948a9e1efab1c0355cb93c9f6eb022b717ad9843e727d45c3e73f0f2e9dcc499c5e60d118e441d5f04bf0386e0d992a77597f8f17a51e96a5ae9daa98e43784abce5ded6592400226075a2a14afb8e95eca211ce691690f4405630b35b60f060acc07fa5f52151271aa0fd71a4e74cecec4159c8e7f4801b89d0caa14a80b14f56c33803623e19dbf864e05d1dda714f6a9f3a2c20bb0c51a0c30bf4c87e3670f2a39e41b787ecd36d136678abe0a7224a6288e1a1dc9058eda6df706a158a749dddd5c1f6f97d10ef898e4a371705dd7d26865e34997e2aba630e89acb512d27d6a8300c484fcdc2d50daa2fb8eba97547f0101bcf8fcb758ff8760f204b2af850d3daaf8649db56254dc0926fa5a5167a506718806e52a6752774c552f36f5624c2c0ea18e5868c978be633d7f32b1c69b56f574e355c046a1944f1574b012160d16d26ad7cf9b540d5682e0e30d7468621f28d9c5193041d6ef6e9d5a571e18c2e55aae9b0e7369e41da152c1cbe0b00296d9e0d2e3250cdcb77da050939da4057f85bc8fa24266d04de8d3d23619502e8f354a78a9795a3e2803f61662b56c5477fa220abab5f91a2993ee599f3f984eafc01ce331b38ac3f1a33c72a78d2226dbf8fe88168e9cddc2062f4fa0af2694aba1d89dffc76ae8f1c2b58a1472ffe5e292462006ed426cc8ea3ea8b846b2fd5aa31f46d133b29408ce33b2807fdc30f25f028416ec560ddae15be4a156ceb96c0e189546840051b7ce71396cba27def1577e3ad239b028f750ce55e198393b41fe048b87f42b96cb2fa177520349b6e3132499d1bd904a5390abc242ef2d4a1a6de9c6ba09fc03fc54738a156d6d7e79a56051918201d3fd20d30f53dbbd814c3a9cd889df3cf0630fe3c0d538429928176817be3afbddb2bc97dff2d73ebc7e9324db9228ea43ec025919d8d0ff0e9b488a073ab18abc1d9fa13a13f0f57c798981c6869b4641f9c0fb45574ea8d200c531e3580983982486c1f0f91cd4889a58f0112a32c665dafe722bb7f944e29cce8e0e2cd8b091076514578bb92dc1664137082eb89149baecefbdec34efdfc2e92aa1cfa009353db13c3049b9e9dad63f4371c87def9333e8008f065f898ec0071aa6fa2ee99a5a9d81e586c2de9224c4e2b768617e1d55078d8ed6a19af67ee942a88441714af0dc06ca2600b1f08f620fa087628e49db5474357b9047730cdda2e8e67c97b8845b6223145c2dfbe7153c163d5f2b066435c787551176d757f879a51d2303d4f95b9168d1dc9dc37df70d472a615596b4125758c170f7e767294e6280aaf7c0866c577ed91d93688f18a4d74ddfdaccd09e5d6f75b045329b17ecea48095b5f1e329dc18a00b447f635d475f5ce70ff7ec85e6f33e7440fb33ed5f8ee860a83adb1135e227a0b64138d675f0869aef8b00c8bb8ba1e13b12b0b891ea22f27793fd1436e8cd8f4708d22e038f4fd60538d6b38529be1f874655dd9e5da8119f69039d75b6273176421cc403e04b3c3e3f1aacfdc3106f4052235916660e50cf19cb1781ed254ed95067f4608440555b2e4e644c68abc7d4507c4ef6c0bc4d9bbc900254f7766b924184fea3c0cc1f9c1e65820929b0d07e234c425ef2f3d7176275c1770005de515ed7c363df2ba3e625ca2d8ba719d63a26ca82ae5e044f29d2a1b335a9836248ae7a8e6c36a62391715d1cead87aef070c7237ee575a80a2a6b998e1849e550f015509d3eb7cd61f9afb1da309c8f9b975c5b0c8114af63b741355a23e2bce101219567fc3f7e22e01c55ff3111b4b92c5236224c3e4df8808921e91d8d3c1595708d46f0db7cfebc4124a89c41a187a2d7161a039896350312aa92c6324b1a4f59851e66b1cea697617e4469299d6991f040eb4764f8b8313c86d16eee71e7e0398ab73841d0be476be5edaf5cb9a8bfa1bb2205b2c056592fbdfb8acd354d5d6c8516c248c54020d753c02f8e369af4f83c14b9f432d3bb64794060b1314302cac953e09a69db1638212972d438bcbaaaf72bcd70771d7f057d8ef09cb2f139226670e010740d511c4a9581b237ed9c5aa3bf5d9c72143107c7e79b8b9d12bc6b81a27191005208659da0c65661534530231bcb25403280ddb1a6710c767a54cefe47031fb9299ab962bc61c37a162a322d4f271605271f0c7d17518682233ba22ec0a807f0b0c47f51a051994bbba86c96093e3a5e0af24969c93ceb04701167c5b7245d67977d6e353d6f729feb81071f285cefcdded18bfad31fdf9b1d6c789986813e093b77757d03bea482ab235810ded140e41d209983d05f07c46c4c493243f9f3cb8aad93b176fcf328bf0c0e72d5ad3d3077710b75c21f432836dcc5f1bf99ef61ffdc34839181ca0436a8b95b0c5f05c5a9c36765498659198fe8b6fb52cc4873f5c8dadfc4b9690251bbe6df7905a4baa1c5a470a8b043b67b40cffbeeb13164d95937e32e425395b5c526dafb110fd0c51bb398c243a251a5bfe014d895780fbb17438a0a23f56575b065f67131018b4eaf3ce8d113eb105434667b8d925ef14b4159524c3f4f90f5fbd0ca09f06234d29a824e1442bf4074513aef66f6541bdb6ae1dc59e8622e4ef232656602e09ff21aca4c50125198f6ebc7a3107146656cd1bb69d8259015ccf389e91a782af992415d9ba8ef08eedc83be8b06a6b072e15169038a2bef61f51a3ec543246881844903343ca7e5b8d1019c5f6f4e7b14e06e6c9272f053b1b1e0cb91ab8cc6f22f6afd17e8cf94a3d407087256e097f33c6e5b0d056452ae3459fcd0d795d32b41ce13bd547b5c39d865010280a45508f4737007b9d4d98a91802dfe81005d909308c04297c5d3853964b4e1835f9240632173a9115d165be64a64eeab2fe1426dd2c51912ae1d50ab8e1398efd005d0253dda7d44fb9de4b7b965e9b8867bb3e338ae7819632f4c84a07fa56c8f9dd61b31ace4bc40f59dbe26b44f75fe4258fc6125bfc86b5d65e436f15360dc70d138daaf9ebc95c0b8b77407903f60b238659f2238f54abda27a8cdef0cfa85a8c9261ac0d5aff6c3c1526e3eeeb2191b66468235dce5f564657b4c28a97e8a9c0b7311213664d53075569322e07785c886dcce5d0c123d4ec9124af0d79024c70302e9d1648fc4fb2ac93df2970969782deef8a6205bf2a7802d88855546af8d0569acf9bd8b18e30d9be52b040886829110549c2c0a6adb4ffe5b01f0f104d46667920dbae6ce05387ab70838485c15a2ab268ebcf5ed9e157f663457af9aeafe7bcbb247d7f9d93eccb1a6bbd86d2094a810d652e5e81375c43b2f7cf77fe551267b78381fee7e9cebfa5be6923519acf7d8b737bf68cb4061236ff81a7172f8b4e87bd2a18a5a85e071fa59ca1310f225868c57c135ef4724ea16ead74333e71a843713a3e20213b7431167f1464b9e8d3c57dcf666943743477af2d32be4f2cc29bcc15243469b40355c3030cd091b5f578f8076429214b18c5a375d013894d9dfb21012a998d4bc7b4e3c8d6147d98e73ba1576ca1f78730f728f412d3cd05dd29834dbe95f70d0c2fbc9afbb7c15307232829835e1f7a3980fdc3d6d0fd022b8afb61608d943fc14783fd18ce84ef0fff10200f25d7315e80fe743c9247c1959856266caae8b01d832bb99f151fb33a817198f9205ee8c8d861d60ff1420ec00fc7ec78024e1e88b5e9046e0eab32f90b66346e1abcc0ea60645cd81158183a11998e26b67eea78a360df000e2b4801502b4aac246660c44532613a015ebfef3312289ed1bc35d07a102fe604fce187cc210d8ff8a3c1760c36beefd36cde785cbdecc8f81afe4c6523de3ee6b9244392afdb1240ecefe5e6e4a6c7d2943d411249cabe9e6551b00d03a1c714c352c850e064c131c91aa0e4e3b684c46270a7eaf4cbd16f650a42c31272e44f0353cf8d95f49c91a43db461feb9e835fe84421b427b467aed8fe21634dc88f7c80d849a1c4ec4ace1d01d5707119b12f314dd94acc7406c36f928b0e218a6567f928b8781744c10397c825316612904ee4b83a10b6683135dc0098c307c35f6077614b6a14186494e7be71f5e59fc5027c60e1f3116daa651ec95b4a3b85f0dbfe41eeadd19b574a3613f0607351cea9cea982af5307a14771b4cd73fa2c3c2ae14a38c8fa5d7e9dc405537980a84e1a027d1ee9b5e49233b00d361daf4c749db62be5ee7bd4ae934fa240681ca76c051a090b7d36db17336d10b4f338cf1bc33d942dfb7f469cf8225f83ba2482778b07cd27ee87c6b968a23463f190c7d3ddc1bbddbdd2878b76051eb5b6a4264abf51a1e7dc89b9daf1a432bd372e446135f7e9c8d49d9cc4fa0d2bc9cb1b0ec2e63e5164826cbc352d6ac82ee802ab98f950b53691085b638f32a19d1ca994aedcadd4282235d2afeecb83f95198761acf166d3e9b8a43c2d1584dac0a086773c5b89a6d1ef3415dc9d5aae2fbb02022ea13d0ed1f9d098e2a8e7538f9bd9701f880e229c54845b2229064738bfea649e4723f22c42812aafbd28e757c017cbd40530d717785d2d0a3ad82bc7aeeda80da44316d5cc42bce7caab2c639c5a12eab837086c9cf490a5c16d9213d6582cf813b62cd10e11eff82d09d815d225689a3a080873f760997e6764816a3081a469c7dfb289776369f3ee19cd71a08bfe1ed624acbb6910e72504db8d43b619c42779b52fa9c5d8678626c4a0b7b45e035baca1323ac3161c0f4fbec69d5dd2a3b343510f9a74770436b276a67cb244cf40211a081fc416c52fb08533c527cb933d6d19d033d6a1462db4e8d2e30889a0d43de90051b490e82e88d8f320abafa306eb75964e5e6765d7d97ef4784248d719b47e9cb4b2320f3e1e18693da59ca59b8243373382db8cdc059c97812c1031c2468191b52dcf2038899c4b5d54151c5c2fdd7a51cb5375900ef38e8243fb696aa0bbd852ed0e7062c2b052e944993f6e9c8a1ff218fd324ecf853f1d152f3e1a20fc0ac3662b650849372262c6f351b38c0ea7a0d5422b92d236f8736c3b4da6de497c5ea95501e564eda02fef0850b4898fb5e8aa4a35dcf5637ce077e2a4bdd3a489a3784fccae116e56614d22bbcb0ced2ced4e0df2ba87c1362ded10adce5b4d47037e6c8baa3e3efe71293d075e4a16a748579fee0807a7b9c35204064f1d0e1b9904dbfff9b8dd19353414b21658f0290f97150aaad0d9aaab2e11317338466982d923fc3ba1ab0652f89f6c0155c0c11a4512c14072918a331950de63254b9414da323e3e8107054d795281367043dfd78738e75a915c54482ff9342a4e9e78197b8204dde79fc7db3d9f0e09135e922c6a29833e3b9951209c3748658f22bf2b4b0946ce82bbaa3472ef57a624c4dd3792f9a789ae8f7aeb756732cbd75ad2e302fce74e8b732755df03304b7a864f4c652c641e995312240a2a104d625c9303d3320217dc2d18a6547451a721c44dbb2d384e0d57a765022141401ccbd12c258d2883e6b44f93012ad425a5b8e43edd2add198107314f9b10c750599e2d10aa52d1c9e4ae08d22d39d4ea6f80c8d364ec4aae121457d6388ab5142b0fbee558ca5a1c5893d0d86137496a54328f255e3e2a25e789c6ffb97f020040118f019a399c5170153b503c32b4078e745f69b292fc95ff20cd313df811347883a9d648ac107378656642c4e5dde74a7779c4a5b2aa143fcc53350ce4d7301277e5b5ef603a5187f5a5f32dbee2b1a32388b25c190b15c8fa335fb9ea2ed168d02e3da5024de243fb2d7d43c35f527ea21dc1830f1c29a8f13226564765d7f329c9e4bf973f37d36ff762c8bb8406c42ed845b028074987750814e1b229b39db54b0b688d0cfc5003eabc5e8d5d405222e21c0995622bf3e5442cea772fd974c9de1458d0494926c6e07fdd690deb54dd4c131829e94a49d0eac2f05422da6b087be222d1fa7b27c451a544bbd35eb54d1b3e3a3c2dfca2f606af806aa15ffc97ddbdb2576e915b4a290398089a0882089ec5d051449b27f6d6637e3f50dc46fdf277c361dee39af350443a03127fa0b84854f98cc853441b1e7c4634aa7c066524c31a802191f478e1b85198e0f60c7e7e37c250dea02b78bce6f9a9c5153ef0007b0dc5e927002536d7a9755eb0ecc0eb91f47c3a2e7b39a44120100ce56e6a9443d15e58cacc998ff5c2cd9bbf6ddba6b5085cf2a50caf5d473b9248428b2a78bcfe1e4053450ab24b089e9aa6f5bbc1018fe338eef3ce133b6e72de8dcd391166741004b5eb799e07faf779dfe6999aa63d404d3dcf037e5ee6e683d90b795914b5741eedba8f8607d7dfcf1b53669bac247698af46e5e60c8a5ae5759773e628c751da6de2f43c509cefcd767cf66dcb23594918ed510755d3fcf0ab515180ca67dd79ba0fe5768782a255b20b74d0575102052e1e4192349941b124089b91bb89d65e4dbb1b189e835c28787c7941db03617b83bcf5dbc4b5ad3f62db11e46d11097e1bef4b09bbd4cad08aafee81b4ccc535f2e56da9643dc16f5e6a415eb3ae8d0260c1d65caf69375bd36c054b0bbc1db5581276e9955a903b030212f2e5fce2ab6b9b6bdbd602d2d36ba9a64a92eea0161f7bf31254231a5b2a59eb0781fa003ae38d6e4965ecd2fb9af744516b671c184ff0f822539a33d51ea51db7e54c75d69ecebada495ae7706c7eed3465b7f9c7e736e3f1874a346363c383cf7894056bfd1b7325807d3b4d2e54d2ca7013355119659a25eb96002db41053df3a055d3185594281840169e26896f434e9690ab560bab48040a2fc848e2f6578eb94d3baaa8bb8d17a963548009c3cfe41499904c0aef3668304a6c88689ea7c47b423dad15b8fecfd24f203ec759843731776b410dff8f1d92118c10d2e9cb820cb91cab17f7cbcfb49e407244fbf1bdd27002576f7b308133ff8ebfd2cc244177f5d9f70f8a31f089ea672dcb0b7e7653d35958fdd660ecdb52802ad0316021b7430e235ff6442c87ac8412df8e3e357a4a9cf98c323d2940b2ec0107eb4fd0459f2e5dcb971f1a16edc09664184b0b054ab5dbc65aed3de0786dbf341b9f45744da02100a4a0a922f691434e70d5fea52a1a09895619e0c30491a2a8689dae80b1f08234bfd49d070d01a1f30c03cd12c6a0a074c08199c08f2c1fb449a459a8259c46b5e53f6446342348fc56231ce4bbaca9ca620a55ceebcea300d304f384c17ec29078de1484d1468c2603032389fdfb6d5eef334e6623962b1586c478bd526b65df31ce18eedd88eed58b8e3d97cc69af2ee670b1f8799458a36c921dab14f0fed03c58fd7542a954a812736271524d61d66298b79a23a98a4980e3cae398da55058fb9e80429f4bbf1bfad3f914991664ea054b1cbeaa4435556d3247ae406a50f7791ae4792d5ee670e752dedf230e0ae26ed3f7c22d7b195b0e737b7b5b0ebf1b6649bb71833dc92c79cb99a5fb3cbd6d396f39e79cf3ad3695d438ceb9314725b5d7cff7440ac6eca9aa6813fa42d5a1e5291aab292aab3b3881e67b70ac29d72ee74e4dbde6396e4051c12257922f6bcaba3c54051c3d35d63ccfb39cb66198f5b67dde69f006877f78bdad1f0466e811c424cdff6af293a0c3680f3f9f93f9691dabf9d950673ce3f65b2445a2168debac912f7da2b40c4a0d445e9eb7d43f49af711c49033f4f670a527aefbdb75ce1f680b76ddb369929235301300441100cf57f94dbbed05bad40279d74d24975d8637e3f3cfec94c60d6d0dc5db3af3bcf23d299fcd195155bdeb66ddbbccf433daebff8ed246fd0ae162c47f094055aede856a1ec6551d785a0686ade7bc439135290765a731e27963389069faeeca90213a02f501d73cea92309f5b88dba89d433d2952569a19787f25beae77335de6716a5934e3ae9a4348f5446a6050d8252bcc416c7711ca73da6ff79badbaea69df63c1ceaf17da0dff8b6ef46f7f70b47f239f00716a9f7795df6f2f779ba0b412cd247f9388ee338cc611f3ef0983923293b08bdd0f3c250fba6efbd9eee7a68ba65ee8ea12634c5da0391f0ba6ab74a34a9b99f077ac030fc7cf30ffcbace833fdc097cfc7c3df1389feb8200413981a63bcffb3c8f7a9fee3ceff3bccff34d04f5d07d9eeeac1d82e67ae8cefe24c2c310427c03f46eebee15c3fcdd08a7b834dffd49848722bc779f7e35f441cf9f0094d8f767911b1d7f8bdcf40072b86a6ac112875fe1a3a90f437e4ebd84d95df6f289177efe79ba0bc1ac41e0fc4fcb5cb76ddbb67d37364ebcee03e79d783ddb57e5fc84a9a4c68de4fd90d6e2984bf2250c9db7f37447b789f186af96e2c52a0cc3300cc3cdd313e539918191f3e52ec864b63f4184c3aca1f90cfd8aa16fe20d43ffc4eb9b674353950462531ada348dbebe5bcd5ce87abb37735ece61a7fdf3325733e7691d822037c0d33fe0fcfcadd3cf8dd4e6abe99ebaa8ea1786fa060782fc79fce1714f7fe2f7717e45cec370b35f03b6cce1cf2fe83da28d8de73ce4991db6273ce109334f809dfe7a7cbe459fa1aa4a00cdbd8fe6fe37d21410dee681748759aaa1b906bdada67b6fec5c543bb555333aef8a947e34b7668625a4a0d95cef50760106ddd58e529527554912c90efdc3c9b42013dab66d03c310ec425beec8154894fb9ed87d68b74ac130dcc0ac75e75de721914de1f1254d8d33a09cfb743b51dac589fa7cbc4284da03a0e36b18e339d2d34849946a207823f7c055fce363c324693e3599e8eba16ac2cfeba1464c8a84e6369c4cd909657ddb47594cd877bb0ebddbc30edc5733c312494c72beee8a2c518487f3a8572d58def0f4e6435994c74987e2edcdc10d7a1e8a4ec11ce7755ff62b669c51fe01d3445f5752f3cfe7a061a2f2b6e9116229c712afb946c56bbe8d344813aff91d43383e34796ac42c6994078b1e314bda94d9504d9a066f932f29ebd5c204cdb5685edc793a6fdff7e16fa41fa52cdbc5947a3a5fcc75be79e79886945ef1ba9e32f405cfa70f809aba282711199c1439125ef3d33cb925696e23032b1088fef32ac4347dbe011b19584d54a78373fad1a03c07e813403de0cbdd2d73f7bb7403b486e6ee22d1de2b7d426756f30d50f7302324d5d4f94643e7b7150867c79e46324b02639a545e95dca649058bd12cf5dba755b018c9aa894ef2fa369a81cf8d7396e85866bf9e889fcb62e883eb4297e7236c9db1f3cfef3c8a5ddd8e3e7b08a4929be7eb2c39d398d5131df2da9c460e0d26d534ab49fbcd6174f02847b21dbfd19b1888f1a54763e737223130f2250c8cea3798d56f78a68461fde6596c0013496639d55476acdfcad0c76fa59604fb4896822f474b86f872c444882f61565fbed83c77ef9df3ce3bb94a7e275a1605687fbd46fb1b36316350e599cf370f7d904ffce673c2a07261e6f3328ce2370f5b1386cf37d7591b25a9a46d24abe448f6dd1825a9e4f68a61010d9d6a2a555ebfa49aca0c58d75f2535866f462347e5355153cc95a479c70261a111d3343212b2465d843cc0221d6bd4c534cd59d2988d8c64ec8dced85db6d472be39f79a2821a6a96355723551d4379fd3d42131c9cdcb6b03c2b9ab52e5f5db5d911d12a492df7cf38e554d241893dc7ca334663466d4a3d1c36f1b0efaa5ca6b24a3a19aa58dc64c96c26c96b65b71262afb46c7fc1b8dd92457b3b4f90e36f592c6ecb70f167ac294a3d45b1f9db13f0fce5a13c5c2bdb1a75933c7f2bac223bb143de942f6cb8545c86aeadc7a2d0e534dddf44611666ca9a4bd599411ed60cf2fc1996bf85e70e6a53422aebf3ebfa6d4b791f73df81a6bd7d64bef0666a762f8e44fdf92b06dd84607c8bc8c5f47800d7b2262df9ddba49eba8992f94b56d275076ca75d49d741650b4c25af963d217639630ea061667baa6e7d7391169ba8d17555d30add8b061b1c50c9eb2f5a6ceaf6cb190b75828c662562bbc826aa85b7206ccff2ced6794be6bcf52cb614db7105f3e849ec953d9193643d6fd1b378bca594524a290d5995b4e1cddb1d957471ed325c853bc255354db73f625a9bf36c4fdc88801b03c42ec395b5355cbdf5fad5787e9621ebad97f244a327761db9b82e423dc3fc73f5f365adb59a3f4c25a76bdf8d964ace7be90dbd92d3edb4f8351730b656adc3b454b2e521303513586b779e7356ece2c59edae802848dbdfdd951906d35d72cd9511484280851101480214293b5daa96954a363198120685ad94269c86a02c5bcbedf0d6ba9e677f42a49efa805bbf47e85f7ea047d007efae8899cab89f4f3d28935afaf8d6504dedeaae150d94faf487e4eb7b28a44c98c567b99e85440bb2dfc96b59c6da5196f99cb9c8f1afa9df63e5003415b292833bdf981a127823e40203f3d6cfd741dfaf8e95b2ceb143fdde3fa689f8fadf4536f2a397d8749931d26d5a6a67460438cc0862089bd288beea03c288beea03ee88ae6fcf4aa64c94fb7395309139d0a50177e7a2d6178fa2dfcac32b4566b35edd26aada6dd8bb58bf1b6e5cc755ad7d94abb2d735cd769edd1afd39ef77d2018d2707b3c1efd9c682727b6d2938f3727288432533c543cd14e3c2a82be1afab99262e8aba15f827e3aca57437fa7682929b6d2940cb2ccc03d75ea3144e8fab4d69a6a676cc6aad5acadd1aea65d7cefbd3578b5c21863bc7d35db5bd761ca10e8f43c7b3aedcaaeeaabbe7474e80dbdd9be1b2943d894011bde3258e65033621314993d764d3322a3d8e575fdecb1a348b137d7b3d20a72aeab67e79c73cec9597a2dc6148f6504de464571c1065131940c35cb29020d142a0036189420db3aaac8446d3e3e1ec92c098a5da6a0c24ea4a09aa9e1d6a03938a25e220af6c4762b3675ec7aa151c62e5f5ae57ec1b12fae89d28efd25c8446dfed27a81bdc41e350405b3273a83512fd40c95031ad92ba50a372a142067a2c4c78ee2da16058a5d338a8d6e304d2fad4ae2172746487e241be9f0d847a989ca32bc5e9c9061c84bab9a64b0a2c60d1e7b39927d8d98015e798c217c45b1cbf0f5a33fd19ccf2132ee7e11c31262d899a8910a66c4f0a0ce52adf8438162dfd42cd5ea303d98a691ac9238fba88449f2303d3c7618d54471aec28d0a6c96b08f7e30558c8c64d5a45244b4841cc3189503c15260dc28da99a50c823d963df64e8f8f7da3f1d8f57afccd99411ec6782c23f05a065835555741a386a870f3d8a75b57e1c68aa829a26095c4fe6264db2f51af2676897aa15ef485aac3abc4546229c8102b5f64b00f058a3d53b3341d46364b78f430aa5972d544798e1d463651d6b116a47c913d46bdc86846ef8d31e8cc12f6181ebbec50af0f6796460fe668d18e1deaf5d867504d943f9e5ea2608f1df5b227ea386ae873a3cf12f69a153e8f3f3eb74ec4a6b3c82c45092d05ce4f774134c4ae5cec72d27aefbd2025ecea9a97efbd17e768399644e75c428e0e6f736ce7252be3da5c30ca8d25a51364c71fda45f5445d96641d85b71bd526bd538b769270d48b833ebd6e9dd2e0baf4bdd7b188c303d903227de9bdf5de5c49cdb55cb3d55410b656aed65a6b15399fb5d60a809523bba4b1fa849b5f7aecbd9db4a230364b9dbef748b33d8dcd92751a1ba9ec04933451908bd84a88105083164cd2fcf2e5ab8b5aea49d349a5523f58150046ec9a33d76d9e73ce3973be650e509bb74cde5a2538e79c73d6d17939e7dce5e4e4e48cb1849caa434e8e3dd51898f3e5c4a8ebed8cabc2c0b1acb2b775565db1d1e6f147d8d553755116bc1db7eab29384a3e62ebb320db2873967ef7266d99cb36ea3d26c77fca1f299d059f20ef40933618cce7262b2509c96c442b3fd749b02a5acd35fe9c25ad60d2669f640013100038b5e98d865a6a92d5a49c12e694a89b73e2bd6641c460a1e580a1f580a20588a29700b685e26cf4ae548599b54ea39b03549f92085753e0c2e7090faabb26e2d0df2b6aaec89eae4592ae78c6a5bc1d82f35d89e098f3f3cb70e0302eac9da31662749ab1a086f7d5acd451b1b1ef6cc9c0228270b9af3209ac19305cdaf38eb5401cb1ccf322b99c5d82beb94659da6b8aa8d2cb1c40e3a5b1031429300224426496a46660c222fbdcd9e507cfa3ea56c93561f36f1d35f76fd8930525415ffc45719dd923029ae20ce4a80b285c71eaa623b4c25a130d1325173629db5ced9f3795dc76ddefe817b68cc830e40019a532f4396036ca8f89d888372216bd5adfe3aae1cce4489a09bbb453861342e67110b9759b26867eb75f5faab4dd4f6d7a5d994667d9ab6ee355127df1579eb65177bdbc9defa8a9aba56b7c5dbeec85bd2eace4bfc5be8a652d356551abab1a79596aa9af66aa595bb71a565afb75659fb6ed8bad29aa45b7dc58979daac4aba7eebcd66857accd38afed1137bf3b82e526cbd891d4b37d2d4efaaafb4eac9632b2e212bb01524a672a5f4565e7f578cacc456647f57667fbdabdb4d35857c5c9fa5576d0df92b2d1e6c703651a3bf1eca429c1bbefe86b1bf2badbf77af565f762def5cb3f4891d8e255df7bad7c770b1bf9ad16f1608b6597f5562b37459ad2ec82cddce0594a42f7430a035ae977bc75f9fa1ea6f07fbd08d254d314d1b8919649a36ab9277a2b27f7ecbce55761b89d0cd66ddfccdf77a1395f2b77375afeb1dec7ae7badee15c9fb973fd7559d234adb42a79579c98e4f5527bbce284cb9e44bed2b21dce5fcfe671bafee5e53181dea9e4d6e4fae88c6dc39db08902ea5feadc4e815aa0563dd12a6620174808080642828344c5054a026a815e384dbe8401c57e2b41b23b5382662a382ab01d9598ca142a2e95212a46545c5dd771573741efe8a0bddc3b349930684e650a15978a4b658a700784534d65b8039a428380d418b46f0e6a815ce18e0e6fc21e612bdc097b8437d5a4d2440bd47201a3954515977599815a612b7422dc71a9b44227548084ad6a526922dc01b55ca0165824dc71752c10066a75ac949648066a815aa09648066a8d5c6015209dafd7d27befc5aef915c3d7d98a8d7d13b16fec22b9b26ea76b524f9bd7017cf5ed26b9b11bbb38f40e19524d30961b14bfec00a463b9784189e26535f0f346afb5a9d1aa596d03afdba8d49b9a37b137bf30fa02adae5d963d6de12ccc09a9423aea297bf5516ba204f0358b574825dd3067493d5d1fa0cbba38977579dc9b4ad67016ce42259ab5512febab6f238ba68b30d3b12795204958820849842c518299eae18e3de5c0821fc47c10f3018b26b460a67a38ab1ee6d450499813bec0767d49c54037b6baa661b78ead88f2daac15a48e9d0322ad9ae7d7280a14bb8e37c59aa8f927b0894279ebb3baf5e1adc541df561f4e60b3644316186f7d1343d62c598f39b2f158769cfff4ea65c8faec20eb27b089ba22f62ba67cc8a39a340f5913e57d35f3db9cc6d35030a51c983d7fa67e27e8e60ad113a6ac71f3b97ab8bb2eec3e90e33e4e49253b9d965c6bce9cdf6aaba6d9a81ae3d153a333364b75fa2c34f8eb58fff328b05d929f55805d9835031f2b3ba1d7ca0e7d1c37b077be8978f9ec28b43efbcd44699e3d002e7bda2fd7619e42575052f6570070b6e821840321423df8ecda35316445e8354bd95986d8a5a7c84aca9eb31e53e0afeccc52761418ec951d4c51bce53e2a7953c9ece444c1504fbea392e6c97598a4ecb9c553b3941d8ffec3ae3e826297fbb587d493ca8fced82a9f7dfed7c34f223218f2f4c96a2a8b68f2d9dd26bb8ecfa1973dd93cd1e150ac73bdd222ae7827fe6871dce29a7ad85a10a7dca69ab43dad388b67f79b18d8448d02c0d2621175cb92b26b51efa864f61551df58527617578ba8599694fd8ae4af88d3925866b08f9d3e1e4b1bbe7390f616b75135ab9a52f8ec9a77bf9aed39dfa0d916ddebc5ae6ec3d2949f1e4afd57b3d16c21dfbe1b220ff9aa9a021080d7ac6a82f99c4b9dbd4e44c962af388b97d78a52af5cbcc5b3fbaa9a422ef2ecceaaa65b038bbbf8fc6a58f1169b2734c84562684808f6dd088da197ab5cc7b4242d865e95cc0e124343c410ac1220a75864bba592b2e74c838cdd62c56767115d6549d9579f5d6bcf1b71f77ab1b186359098afe86d1124f24667eceda7972e5eecebda65b67115c1d77a55c92c82d863ef7850ead5e88cad71a3033c6549d95964bb6c5111b5aa92b26b628b8bd3d4356192d973d7d23599a5ec5a470e397d8c478c5595d4457c768d45ade3e2ebdae68a5ac7f552dbdc51eb50a5aa2987527f9df3cf3527ea5425b37f62b7f3daf5b9cc39e836aa4e754daa09b451e9e876ae6b1dd584756c176783a27bfc183b379619e85e39fb8911bb7ea96da0781cf54bbdd242cc52766dd4ab59cad8557434ce4b6ba2b067d7827c68658766f47854d109bd3eccf9ec36ea1e524d798342b1902cf40ac148209f5da7007413e7d9f5ee3cbb1662be70aba035b267d7ab89f2a874f7d8295e8271d724ebb1dc3ad8dfd524e5eb3a05f3d4cd6af79aa896bfaf49ca7efd6a63a94358cc935e5952d6abd4dfeb2e526c4d2caf4b5cd9a964f6693dd85940daf5906a2a432ca091a63e08d7cfae57f5e431cdaa261ef564a3cdb4f8ecda4735cd3fa97c763d05cae7214324f9ec1a564f75263b48e3d0ab9acafd825553b9b2131a524dd58bcf1e32524df58bcf58d47c6567bf6c5815d106740d592df92b66e0bab03676333d763995cc0ee39aa8d16747a13551f3b3a3a0b2a739b3623d0a379f3dc6895daeec7cf613ff78482c69b6f7b82782988ee1625717b9de5e15b7d73146b6682c47107bece16ba2449e531cc557527a251a615cb39463429e1a81f1d941aea23351299fb1ebb3873c3424f49a28ef730784cf409835720a8a586a41426219827d7610164b4df61fd74e5c8b2cd7a79293b1635249b15b52c9eca32776d9cd967cf6920e765671cf73762c82c4d8febecaeeacec9eca2d8fbd243fbbc7bb2d8236a855415fa0b3c64455f1d93d51459c95a4b99e5aa55303afdbbfd759b4eedc53f5448bacb2bb2abbdf5493f6d91d48354d2254c8ca169cf599880c569efaecadcf5ebaebf336533ace67d71da757d5b423bb66e91bddaa2657355dcfae71aae9554d9b67ed83882f3510157c09b3e34b2de4730b5fead567ce6bb4e7c606b4004825671e3150e3c653636860c68e193a66ccbebc66f4c00c230f1a83881942cc7051a7938a61448c175031808cced89df6d119db135968841ee5b505de139fa2d020a308d9d88dd0504dd4e8278ab3a76f140b3e58284794608213964ee88811747c8cc0b1a07c64e6e1f13a39c2450a3612399f2356e8089590798ec4c00730099d7d640922be2458e19195101e0b74c0232508421f31fbb28c193f7479676fdfc0666e62de3e820f5c0f1d3d03222b71d3e500886d053b5c164160d62abf4c707bdc6c2d9656040e2662083bb384ea6699205435efec6d2456963433112e76f881891d4cf0206264e787236e8e681931a2c5970e801770333012037c84bd7f1231f2e30a232bec84fd324616b2fd06db913dfa49c4065270436c959f446c70848e0d7a78ca55b1b79f446c50822f65fe889df293c816616c3ed82249175bb6458cc8163e6cc1c397a2570caed3f931207c0c4c3b67d7fae937959c3e5261e9ac2e3800027682b0c5cd1027c0c18c0a1b2157c09038030913884001878222b48099a0288861142015a50241c10e300a9268360e80800578391f267cf5fc5af949a4c8110e88d60365194b3a270b7dfb74cca17ecc11bbc608b1ab054afad4638ed8d46384d8f4aea6ad56684dd3b4142d7ee5ad57fbe2c4a6ae65c0ba7e7aa96917783b6a5468adc71758942e76adb58e54d0eada9c2b5b6cea7aa46253b7f465a462da9b8397d14bcd79d3b0bc880adbf273854a2a91b1cb4d4f2eb4e063e75c4d2c3f5fb46bc6add6da6dce6ba3dee07c741dedac93766a57f5cd4067443435c6293a1e375f7d14649797474dcb655991a8bbd9ffd1bc7c77c3c5a6b9d61b042a084d0b59d5c1700c23bebab7a49e3c37f6637939d5a479603b5e3a703e1b5793af9e96c7c413d35d84375fad0e3625c296e0b4ee1d35d7e83d37f65491d4249eaac45397782a134f6de2c178a35b143bc35ee07cba7649bb717596b0731687d76669a378d3b48e45e3bfb2c4a67eef187f5d7379623afcf58aa49ec21b4b4a4d542c84356182b3c475c39ae4efc85131c647f165ee219655228c094e4bc361c236faf0c69eb62495545d496b898b09ced7adc9ebab0decab5f55e8f1b8818e50555be2f0765ab0cce1e92c5ddd690bba41829e73ceb902440de79c73ce6929ad40d0cdadf6fd49a448912a8ac8802b626f3f89149162a39b489196688b3e3f89bc0009af7f122992c49764cc0659b46996e162875ec11242202dc174b29701c371e135f73c3420d2c4f372000288275a4930411252c8c22b6eb08487277868d1c311401d2fa1faadc1a83cb14ba74474f0b5663087260165d1841e68b103222eb8a189c4235018d22467217bcdf316594486cce035d734dfb28804164f784d733c77585e80d3d2d9c56b58b8ae906d26da972dafb1565ef3ac5d21c46b6edda95bb18329f45a76247478239117186190ee35fb442e47d8d45bea9c530b6dadb5d61e6188239c406c825dc244d3348deb947c4830c6580fe970b49773ce4b5a4b6e3cbb64659798c086c1e4fbbe2fdc4a3010b6676d18308fc7e3f9d0305c130435923a270f26131d25ca60596b6d193c9051060706a163226362840916df9119131a844ca260e283089355194d28630c5019420895910314efe4e4e40425450c213f60418a4704510f54c828f22070062c1e15bd28c860818bc7c2c2c2e232228307193c8cf1f9428c3da892e2774314c591461838a119541a634001338612612029a30a0094e1029d1f903c2aea60a103031574a000400a24e8d9414f98d200d3a2f093526a575c5f08b91ab5a4ebe6f1ce8b0e25be7cd921b3a79c653744fe49f299bdac924a72942cc1a3243f928d668f8fd46aade8c2a4d6aa43ad75c9a11fc3a39aac1d37975925a7564930585a28458822f046c74f8edfb826728a6e882cd5afcf191d1ed9b62d84124271ec366a58649731ab949429d2771b35459c30c8268af41866b4634f259d4ac20ed37a0c73f35ec2b0463b2ee4d39a24eca13165fcb45ca2f8b44a3a251dec1293c75e4336daa9a66d078bc74d356d63cd7c91c700a9a68fb388521c47884cca58333fe465cc102f638ca07819136309f9fc142f63903c8e9492ac9a4a96149cc72ef33825125d664a1e7b6889cebbe4b830a964680b855252d099cd625aa5cc9731ab50caf6927a11c95c662b48e245078e94711bad58c38a6b230ea315af620d2c7e471c462ccef283bdb227971d4bc29e62a96e1eaf1ebbaee182ed327b0fd01fe9e43c7661f2386655845d9ea8ae972ea3963db1d0d0e2231f8d37dc91a586110e2d3ef239d33272d9130b0dd75ddca506cd5ddc65c4e1ba96c38c0dd75bc6d1681cb134d895bd7783bda59a4eb427a6790e2c34b88c1e9825618f8e25614fce474725ad05899f1d1fd6874735cde751c9ce3a48a49f5535cd8f153f3a3eab4a62c72cad77cc6ac7ac3e2d4bc29f96a78a9f18ec05fbc0464f8c468bc44fab92d8a9a5b465e58b25d4d6168fcfcb9e468efd03b3a716c7fe8955938a63ffb4aa49547ad5573d95fc048586c4927e8aeb91386754c4146f29955e78bf52645b8f44161a462e3ef21c665a44161a5a5a3c8799f9d1a0f91d6fd052291aaebb8c37cc5ceba9a2cd638688469afaa289c54ac94a898a8ab61aa38ad1813d86157363490e88595912f6161d76e82f9af8a2b2945a6ba7a7a4534d393cfe684a3af65492595b9295746c49763f1af24bb24a62962a7619d3450b545f96648fbda4534d654cac9a4aac7241564daf2f473b31aa89a2e48bdc46fdc8463b13b5d5e04b2a7b9c22dbd66dd82a6aa07b7dc8a94c05b948243f459c8f2296d5411e12cb0fbcbe8e19e840aea7f5d821d5548e76acb82b696388f1684da183534d9e10628f3de6554dda638f81d59336633fb28fac9a586846dfe5ccd223f19e0da7e365554d3baa091b61c3824e3e220efae5680787b6b1876049e7b17f9f9607e6c9f1ec3cf68f8f899a9e9d1d35e7a3b2a73c83dd03b3a739f349f1d0f9ac645f621537961ed963d8ebd963579532ffb9c1ee5979860899a202b12c1faac7ce028b859bc7250badc7250baec7dba8396df12a6ae21d593840ffbe66093b04ee0c565912ee6eb0cbeb2b5e92aac77e5df6a4f91537966d8b59d5934a0a7b0ccb470cf6182148ca9821f5c5c3979e37f3e2882f455fc6ac1e1301c2922f63a678bcf2650ccee398d7e318d863dfea4e35e152a4aaa63237c147ec3c36e2cb171d8f776559c9db9eae1bc0f59306096e0ea02ae38349c560d26407f433a47a384d5cd6023b174f9cf9f3aae655f5a0a2e2554dd4f6eb1c0e47c55f1c14e3cfb7e885bed283b7dd4a15ae54b374fd7e9fdfcf73fbd5b07c9fdbff3e67f1c619ec7b6edff31c14454f3f1af1bd91c399a5ebf975f035519f5f0f45308afad188ff8d27de75141aec9d5ca8248cf656498e324434020000009315002020140e898442b1481a4681aad90714000d819c486c4c9a0983410ee3300ca21432c41842883100c01099a19919070045ec6ede98b246c316f75cd9242d88875e63d5ff66ffe0a7aa944469b0053ddfe6ef571b9c9dd9c6f76b0bce9e69e3f7ab0dcece6ce3fbb50567cfb4f1fbd5066767b6f1fdda1678721d4341ca18cb06c504029bc0ad664c137a4d6d2893c1af2989ac0ab605cbb4c93ba581637336fa7e71c15b561bde2915389b63d3f7150b8e65dae8bdd2165c6fcdb7c1fb8a32f03806e2d84572b541c9176104a76c0bcb5a5f4d4c70a93218110d20009f6190a23866317b230ae1fe4880727465ed87dd9d8f1aa024faa7ef72149b698020fc2789e015efbcf4a7c08ca60cfb30346af84fd83c8ca05f9bcd753aa4af7425073001edc14da4abcbffa5ca68f747843d525b79e664ead697708dc77e45312753c5f46d19c8bd614fdf4b490ccaa38e6dbb127bdb6eb7baee07df55758ff2cb0b1665af31851482cc4a0ed45eef059f246204762f84d2735f943d03e005673180695ed214a30f934b8c4e9c2269936cf00dbe282f8f6c070b21c1138a768628aed8cff63a4f7a8ad3c0cdd6731765d1ea236ff0ac002ba39afe5646c3d138b22f3837b6e41f1801f03319cde8b0f297e71f0f7ccf9e787e439fcec5e20e8d93a1f45a2d3674b26924615b4f7a9f9d5c9f750f258094fb1ac52490b0202f798193ede8d80d41a9d6261d7ce826175906831ae7f1cf7acba2d9e731073a9e55649d72b1ec312e77d487c2bd8442099b4a5656df95730b53f1edb1fae0a6b0dec0db86d190e85d8623d25fb28b12d59628a67af9b487da91592d40ea07344edd4e480ee4ac6488c91f5507e413b597a104c46dc1a6da5eb9427fb09bf8c31f123c7000f285ca431f861c21c662b91e1a813d9cb137d2206f2e54fe59e2f4e0ca2eb4bfe7c76f42e4c3815c887d64ebcafa9c711f4df96777b32be7ade387bdde49abbe1d3f1507a5986a7e7cf6adbe0f9b9322e603407b6dfb1a07fff6bb2b5be81e394147d82955f6b1fc831b0b90ba37ca621d59a8af95e50d3435a6c0b2f87b341127a352ce2283dd68a315f9fcb4c7b00c00cd1a483c0d3012407cebea502109ddfada0b4003071e08a047a597bf0858c3733fbdf809d139de9e092db4a5ca9d0609198888fe041587e7ae683d01274071f04599f0b3bc4b55b40940e12604580a0567c07632c64c3d9023e40e05f4d9a12bdfb284e58968a0d78ffb310368d62276ec6c377cb7725b06275ba74a48899b6a53916053f8a36683451cc50600b68367d898ca60313580254ac438faa4dd33c39a0ecc5aabd93b85f5c4d8101977711427ee16fd7bc090791736d34e80fc49bd7162346e91f5f5a277f420147251d216c1993dcfcafb04959ff6f71acb7a7c3b098aca38b28108849c5cf48ce8aeb2a936a0b2f268cf9b91a414904a0cfff02a6a42a83aa75c34bc5b166174838a1864800ed70eae086850c0bf9b3fa764797f618424437032978a15bbb31a8b75ab56aa4537c4a87af4504cb9501a9a399160f04486d85051b0ab32e99d4573ec8e47084267cf430229ef9bd669ad77413c8785b5d4c808d62fabbbb0951a29304ab48c269f18b20a25e4df85b4c5f2aeea9e658029b379a81b619403884a75ef70270b9b2e30919d3aa6f01c24d150d0fc3d4cce3857bb7d2e57d359dbdf5a18d194c8b5d48205b3397912424994c87f868cba9472f3478afd812aaf8a2f605ac9a52474bade8f4169531426671865c19048e1523895bfccf06d95597b2270a5cfd09b33d75106351c28c8b58e7da1b0b76146a61adf76ab33f092e750973281b97ca8e16cb627fbcd625cdfabe23cfc76bd6661b699d8da0510b384a9c60162c3832e32b52260c027871d18a2fddcc5e0f32fcf60e49f6457d7acb116831fe9797fa1b289f558431198bef6ec03173ad8830ac5cebed51ece94441db238f07606e1112ab4b9a798014bff0594dd80962f1713f9d5c5f0f51f202217bde860cf5828ef567eec77be0d9e223fc279ff479c8f666522c049e838a90f2ac75e94801b07b0b735ff663086ee1d96f27a9efcc16ac40fac78e27e56d24fb78aa1b786ea667a82ddc583461d47e72213bb518eced90376e1d40e6a7daa6887640ef96ad4f6e8335bace30490374be93b8eb10c3ca0c9fbbb0cc5b832f7ef33883fbbcd0fa016f8fb5a15e7e237f335cb77f3509875d907bf9d4404d666aca9624bba823d6179803385e7e5d1731d6a9c1ea4875b25539b32a41f45814274cc00030715f444d7c5afb8d23f196cd7ac77734ea141c8a1c07d6cb6a902671d90c1116ef6767ac686a03c9f7f241feccdbafa7797b5f960508bba16d692ab1cf75f216959c52c9c3933051cb420057854acf8ed79c9dc0cd2c47766c80beba4db0de87d6ea5dbf9b32c73f4316cb4025442ffba939651bfafaa256c99cd5a6797821bf53007a47444a12f375aafde2a0c993586edfaa4cc8d816349a4defb262c22d0e85af0ea5be699f618cd5185c98f485960b8a3bf90231ba0bd9e2465e641c65c20b334d2d9d635f7f831627a756ab3dad0af12e2566ae3d1a8e93145690682de24f236e316612e86eded398e761e3a25df0cf15fd470870855fabc7238789bb73241f44328fa742a39a809009ae62712bfdb5255da1d4582f0504ad8d40fae1564e391ea0dcd9b5952406bc9bdd3f9a2e2a4eab32fdc0785d3941b1fb892e21a69cd7457e3e1bba7a43181c227b3a908baa9d9f63f6542b60a06420f66998abb63bb8cffefa3f5b4dfa86bc873c6a70c67b4f2d22630c2682380b5b203c14be17ee3faeba1a9724f5fd1310f7673848ecd43b412dbcc680d8353e8cd04da466b8477841afb86e1dde151b8d4fc031c83102337300a39de1fe816be994c793889608e22d7a6733875188ab05b91c9beeb2fb395db118f7964ee1b334ccd2fd380053c521ebbff6486d6e85d9740248e7226b8aba1f0b41f357935ad586a3e06354d34596a7423f6d5732243e4d524aaf5473330e603a109044a9c06a42c4ce141a6afb29d38e523632f4316a8295ff92b0d7f09a9414f4d8c3f5ca3e7bf77f71af25a6e14668e9cfddd22ae013f4bd27ada4d9b75e69db699f0e3468a22e64bc4e391512b3b031893ae090c8aba6e6505b411c0535c47a484441b82f03a5b016dc9cde93ebbd2708c212e5b32e60ca64ee8d99c86edd728a271bd32abb9d746196a0f4502ba7627b548a446b74488442b17005b402cdcbe398da109b4321970b58fb9cc1441fbad2d40b60dca21955be3cabf3cf270f8a6b75483795cad15f0110045c77ce8898b095c95565824293e250daab32e7dc9dc372a3a82735545ea5861fbb71f214901b4bd40e3f3c267d6f4a28ccba0e091994349cf8863e88098319749d01b1c82b14079d4699132c2e3a323730611b80a709ff035a84cb3788a4385346133c25c831206b66eeeec47920397715e783a5d1bd58391f6f74cb4b0e057940e123379ad2fcac034aa5455d60ee53398269a779aba359bc41cf54e19f9db8b91f5e70bbda26f403093c996011b822c48f2d3aa7d4276117420b55b481e7429b9b179a1a301de4787e8a910ebce1c82f696b3ebaf720480f63a8bf16f7b1f7ca546b5d8a963a881a960db637ca4c0d6905e366124e9b249c34d5aa5372222a6a215623a00bd79bceaf394c46092e254bc69ff147dc69860163b9aa3609d165f21a9f190b5d94af7853fb19154e8b4892124328ec1bd7e66540cdb60086d13973cf64191bc226e8616986afbde140e505f7118709f6469661ee53ae93aa9d097ddbaa1976f016b22248dd8683ad61efb84cf1d5b88f9bc94b8b45397e5a7c4e6f5865956db3ea2ac8ec22539b9457af7a3928e34755028dc9140ac6953ecc13a4b3e00a739786cadc2a8f79c4a003f05cc526460a39e7d93dca40a3bd25cd8430d03cdd68dfa42690a29664fd121a3f1ec4c8d689ce4e931c095fc3439c9ac30011be0e1ed637688448049abcf4448631d4dc8b11145ed5c630bf7de53e66f09f6425556594a9a546112c83be37975f9763fc0ab3b33bca455c7a0fe3f7207ed67e1bc0ea92678e9ec82db202d27d5ea2a7cdfe93439af2dc407a217d10c559312415629c3f521e3250df06a4ed8ff5c1dc2dc170d0abe706cc32a3cd5458afc2d3d5fd419c1a4daad68dd32d0c971a9a7b156f3dd30679e4177f089aaa89a94a5d8817c46ad563b88180fbc4484b5a72543ccc2999c2e7a2f9226181b5300d0648dc91ec1feccacce5806d239a11d2418af929abde7c3c29b380e2407480f34bfd83d65410a7bb0201af46c673d324f69632b04acb182767e807acf37dfed2b8dea064ef412a07ba75d24ed4b00882287857d86dbed725184cdfa888da0b01329801385476882d83ae1406e9ba014f0fbd86c27376ddb3b526bf29d2d6fe7f5ca7096fd834127fe668ee5c3cd796fa1b5f8c01d1cee380c815dc8af552b533f6f944ea9b1cdd5dee6128b76068768ca05cbd863970781462a6a69129f3d5d22cf056a89e967fc67f5541ab9124d8d2f402567e1d8b47fdc7cfcbadd541ec1bd03966e149aac5ccf31fe37dc4ad7533be2710d8cd59cb0f4565d70209b244cc1c1ec9bc81f034cd10b041dacb17bb381439a209bcc842840de90b781b8216dcfc2bf0fe53931197ed305e052482847a172cc5cafa7e297b09541871bff7341930704099e2a631b2859f9c28366420069ef3e594bd356753b405ba64dac188822d094e7324a151d80812076e5900cd55133e21984673e4d3178a728ff3d1ed2e00a58fcac5893bbddbc314317e442de68092fcd550650ffaada08aa507b584b203e37ea369a68dfe828029013a1a43ed1e195e4f74b5f429447f6ed854d0c19140a79e99b6874834515f60828f6223d59744c3982baeef8ca45446b72e982ffe9ac89d88418da883e4197f15b66bf4b9e288dd0e2b921f25aff08484a7672dbef0c5a04f5dc9ec8edb866a8a781a40f45e2d282de790db7bd3d1854c83eb04fd38855c92af499b56da0c7c58ddd222979998149ff4eabb14adfe6014fa1ee6ffcbd21f95dd2121b678a486bd91aca78a971aad25c190f8b1a4b98681c187344a506b4f07c453c75590aaded53293740184871be2e0a8af05180a4627068c2f03615ca1fadeea18aac44e42d552ed642050854e788514725443b1d584635f73c2e8e8e135523efa3ea61d952a58b215a326d5ba9916ea80f0f03cd5769917194d49e09e573bd88c5fd4272bdbea709e3326fbd2abfd0a88b70fc0594dbe9318e73571878fbad7a3cdda978e74cfb12f2858b4f4d39bf6b696072a910c27f02e697aea990b991ff91fa1908310468f3072f911b23b5c4b34c658de067675904c63bb6922506c9a944118864ec3c9c8fc8384f6d52f23e85d3c5b173d08717de791ae2f4efd374ddfae28fceb980baf7368466cbe1f70c1c35e3b0f149d883ae4c1cb3fe4c461bd6f7d93b34fab016ffda7352e05fab1a4b3c726376902f6100be6d0382f3535a62072109ce4da61ffa39fcd518b5d47ca373ffdd132cdaad25e6871aa8d22d28909f18449ba16a43ebd94fbe5cd404845ba0d8c1f30701501a14a2e602a5b2a0e118187c0004c9195334f8dbec4f442411b2c8adae6f160ce9f77db8711eee4c262bde806fd04306ab80a83f55ed36327b10baf5cc92b1fbdb9b9243a43322fd617ba5d5e36bfa00071f42c947482e1eeacc208b8230280576fb31369153c7b9fcf55d60d59bb6cd6ef55336c44ce03701ad7fb0a724efb608bb10eebbf582a88d1d0506254d35135893e89830c933315228aa4a7318224b59f8caf9ef7a672e3382b3184b46ae21166d23c197e454e9d7f83eb792309c4d2cf7018527fd95e63804859840d95b93eb9e598f0671024bfc2f3a4d9f780631a24699ba9d2e1dcb2895f3594df981d0c74808f0bf329d24e734f84a1cfef8bfeb2e4b1c982e2919e6cf983d66338a481d37735c13d040c71df8600643b975b01a84b28f4520d628c0e3177511c67965ac5b7eac576789f3239bb3f3337191e1f0724fda0523fe875bbb5d3ba5276c6ecaf78b7b4bd98a8c87a6bd49a13ac410da342588b67bdb48c5a7e73090cada59ec9e82887d5fa89b08fd88a14bb18211da4e071b81a3b8826b35a8036332b53c90c599ca4757315c1b919abe028ea5c7f31e3b2c30070f9450472b33fec301a7382c9083573b0785d48133f680032cc4614e397482d399c6a043ebc880456d7c6c4bc2db2c113803b69fb699911d89c4d97762e9f55272575a2d6667cfcfdeae48b1fc8600959de414a81998c226feedc83ffc25d1ac7d1db8d2a777b1734eed1b2bfa2c1dbda68388af49f5cd38cdb75b1332d0c0b5cae83cff679be0dac202f9f8181401247dfdb97eeb755c69f0a3691056074d873d57b1f5695aa316570a51b6e7a750e8f7e01cda027b8d3255f44d74fdc87a35c1de69c1510c7da1fe3e667b6a2caaa973fea29f4fb32b2edada0040623430f9f169d176d1776b6084f104737461f9c6c00c431d55643441c6362dd74d3b214d0bfbcbb079ba606d76dcb8d30bf7e8079fdf132c86e3b0cab0a198e5a6d11901f213b50cacd3919e35d35d9e70932f69ff8a0429f5fa708f425d81d022f0ab279b58b6c7af865cb92d71bc070db13db3e7aa96462417f6259e690251c35fb6b8629a47be9b4b2b787b6b2bd07c83f739766c735930b162928a7f6f998049d234b1cea410b1c2d4580188340f5ca5d55e3d11c5e6f8c0d5c3d4972cee45f2d5a58d8ea33509530ef916b0cfd32e62959360b38ac188a15a177110347bf22040bc257c95211fcdce8ca284e07d43432ff03149d461a071400e4a16235a1dc225a59d422bbd5828292f5a18b6ca2ec9b3a007423b851264c8c0ac84db0b7176fd4690faed8ce0f11fcdf133898f3aa521ad58697b9bd811af767678ebc05bc47ace1df31dc10155b67a8c65265450825c8b689ca9d96ddb80d7ab76d6405c6f14ee0c9be7c4efde0bb4f53fd99d0417f4c380c6ba3e2f575092aeb3a84699e88cab0b058502932bb01acf62c5922eea3a5a828ab539a80807a7d15b9895d401e8223b7851dcef004c9d7b965aa9310564d9e39ea977d9be2440138edcb3308164e1e2acd985ea98be671e7e1704a37ba57d06abfcb8f6bcfe1d8f60c7d8e384751c877e80c2c3257d95f311f101fb9ed6bce4419bf52fca12deba1bf19d8ec7fa8d1df3f7d9121cafcc322dc9ac1138ce6c71b8ded84f86e3b2409d3d53e4d6e3dbfffebb33e27c4fead035bdb2bb3eba432ccc3696280fbf7f41816ff137e6299bdc1923bd3236da30b78eabcc2d5b8f1772cb45f43e2fdb7ea5407cf237576f27d86ff261e378e4639df28e76b9b1cbf7d94ff69a4fff839feb8530a71d667df0d3f9b53abf01d0049d2ec70622153c850cb3cbd6b42cf0b0ce8d587d4f6e863addefb224f5ae2df30e39cc014303bee9b85c121a2da962d0b08c3f6b4d4d8cba92b46987024f30a5657ac3cc04340e2fce8b7436f1deaab7ed680e82ff32a076dabe73cbec557731028fc4f01b46f6dfd9db959d40aecf43f7fe8b1008624297625fa68fa9dc2469b5658661cf390a804df0842f7b5ed4f0022f0780b61031ea37d18923fa1ddff3f47ebd13a85d027dbe4896984ba22246556da466980c18cd61e295737c1c65ccfcf482868f8096fb56f7403309a425038d76fa6e3dca80043ceb2912f71e50ba25bc74f5979e6e1cb9c850b6c9f65d0a768663e98f19ad199447635732971d29e84dc6e6dfc37a17d0a7c505f045d5e5dd8c3e8062c02c44d846cc4cc26f8fb34fb30bf515686713ff75d74641a0a1cacbd8dadfef4f0ec66939023fec4df438211eda9a40a4a4978fcce3e854f7539dd918314ada89bb08c0793319b2caba419c171c1362b62c477730b8a6c4cdc762348b906480238cdcb56a5183bc809fcd187d17d7ea86d2277695d572ca1b003037ada92cdf5a20c7fb8d7bdd766600e0eff440e4db31c416eaf3c7c2aca4c46196dd9de20627d662a07f6dd05a5941139e80dea6a1a01a627f91187b02c1fa52605839a325e8181c03f7e32a012bc359b416df2c66f1d7e4ab2fceac62a1337cf4ffdb5c6253f891f9e868ee00adeb1fb0428411883fa03819f10a077a2c6045a10f7f3be82f51f824da0b6ced3cec98fb16ed5acfcb3c20cc6691b30480953d03e624c6bf85b7b263c1de3bd2b2b74c289b3bfff9c55e9c0a50fb61cdcf6884a3ee324e9815938d1f9c75fd2eb18f890043c001e977b43c5cfe46276b22c79293f142952762953650d76edf217a5b0a3f04b889777a932ece49522961b815569afa271fefc86c327502c920eb3cf7b938273338d53f3939028b87b94877677877b212758fecba4657a266d46caaba6c7ccbc71ac56af72f5c67e23cd1ec8551b31fa1cdd069d52786fb790bdab50d00c8ab4c9b9047a2032edff16b5b8b28a9ec5bc6e3c56df8dbf01e18c6928b454d6826bf22ff150a08c8a567785f7c2d0854f2c8c96895f9f81f1785355bc5daf95287da5495300b1aa846b8da26c23db47cb2c215ce0e366e5550be4e19e72df6632270605451f206586644376b26c65222858f6e29eb559934647b969461277a8c1ea6abd34687498349d5dae3b918a43faf17ced7293aa5513ffbc92da7f1255aa56d5250db3e75be0e9a5a0e438404e03191dc197e30131592461da2640cd55e5ba77ac398c4e0da7a2f1720e821d9af1d41df8d762a1ca6b1c308faa0e5ec42aaa84af5fa0a75313c2675b4b65ed73749e04569999340fba7c79a94d6d76e6486db3665ca8d5b1f4f0cbb2f647c69bd99c701e014e01d6419420abb08cb1382ba0860d9a0e29a4dc7ea6bb3deca7c6ddd208ade4a4beb75e30f46e3e5ad071d365217f9439f1d0f7c52d6a4fcbf2183e7ea2ce536ebf34974986bb2ad3586d262d1a8629f2486471d027d4de3b3a0d133535540be81817b61f88d7702ce5683cd727c54ca533da5fb73bc6de28e8180e4365feaab443c284ada388a594c1c347d109788a81a0a173e651567819c73959d9c8e6a635b45505952345f6a1f5c47601a6ec7989802f44f4fce4c41b4eeaa3f3854b00bbe40e0d20d4fdf4abfafae4645296d258aca2c0a26a637cabe025dd32b697898b72fb74869ddce064d99997988c08e8f6585991c44923e5f86ec862933cf9de0737d2c3bab77e193ca967ef868064887799ce6de883bc3a5544931a6daa6c09d1432ede1b5b30ad930382c00dbb877c2b54ac310b1f19ca99a0fcfb4f72b3ca2db4bbb95c29344b19f4a905332bc01366b730d645f412adbd815ff68980bed59b24ee582c0970e102caadc4e4f7c20f6bc09c9584988c8b07826fe6e4bc3208a32d32e67c499c9b36e66284237dd783eac485c38bcf8c5969c7d9861f0c4ccd0e60fd51c13e3e64aa5c02b739bb766ccb61ab303e113fce1654c9489b632d886c27a502139967030d1f9822fac9e253b03391145708309123fdab94ba9874f7a074fdee41ae842f81e40d752d558d035cf96553988642b001c2b4b8ea9219e4ecc81810868622626b32e23b3d38b437d42b21fc5de33c1fea1714d0be769b2327ab5596c5a720f2d8194fd839eca841fede30c25690be9deee810ec28b3daccbb7d0452a009b5c190d641513c8f42372eeeaa13784719c90a5f3877d9d6958a52b4bb4ca30210c66f5f691a38071febfd3249832ab33f7f16d7a152f6dd4ff6a99ff93e5007a658fe8ac0065e79d3524c6140551eb67ecd6cf71e5e76f9fba814d8124dc6b0e36bf4f85c534de7820e9340b54cbbae4afc93108492187500808932da95dc8ab2b696ca985ebe00372421559fea07f3e5693a604be30d9ddf330f26fe60bb36eb09ca4b79fc44c60a04c1e5ff14dada419c46405d1af1decb3de754eda34d5bbb56bd66339c1e856aa2326c741bff8716a1c78c718cd4c97c82450df06034cc35671d07c556851ffeca8cc3962e1056fcb09887e78db9e003c41a58bccd01dca685fd6e23d26b65bfd19e9ddd133d2e9b7bae38d8db8afacdafd902185c148cb5b685269d4b0dc71635582f36550a01353a1e3af85c1088f9bbf52d10c065de5abda0d14e2c9ffc78e65ab94f4c655edb2be384bfcd07efa7ce9c36cb9ed1162fd2e4cacb2f8b9f67fcbbf821c97fdc2982bad812b6709d9474f29e8f88b634720b904828cc09c98a58f5c8f2c9ecad5a3d660556b77026b22de9893bb21b202da14321dd1675810f0e3e64cd7023195f897f0bd02a51a65c2ee79efd8933492ef8c83520f74667e2fb0abefaa8587087d567918c8b717cbdf49ef314b431ad8a05193929fd800b716877e7ccc75f8a310c39de6365c4e3e96b7c610080e9a64ea944214a8abaf69b7d00bf6626224063ec5b2d5e83f502a4c9126aba30b22987eb1c09d95187a508460d1f37a31139407fcf78c17ece064ab37d0297f00188cff2e9a5464bcabaa4cb98913451e167cbec9f54abd6ce3ca24a04ce0f417b9ac38799092a636c441beab7f2658964509f8772c53d6c7bb368c9982531925f2191183d5de198a9dc6081a4437f9360bc9632ee9e20b7f4b53011142f29b4c933fd19c01b55568b3b63b7b28db3e22045c2b18dd0688260829c3b62164e36cb528731b84a35e83e7c73383efe403ca9aa3f6f980463520324f60d1252060073000f6d5ac9c2f151daf724b1d30b0ca3fc708c9e485ff61faaefac6d8c6ffbd33ebca370e576169249822c77413972705a02a21bace07c9fb6088c75a1ef436a4413d655eefc9448961e448740ba9de8101d057e486543f012055c9dc9d8e5989a21b13f9a7653d6771186cac1b6ec83e2f6a845da194de32dca4a8802ba4f90679e86394eb42ccb21299d14b13d0508d02270d9b6c7db9a2a622d199f2996c069c30692c33f30e38a1b2b7d9791bce6ab625cf864d52b939af24f2c8f4dfaf80d5a73acc3ed4a6db00a951773124d04ffb2813f8a5fedf04eb1a58081228f4ea91b8fce23ad9387fa6dad5bca976bebfd04f644b4e5d5c89fc0d025d51b73e725716900054356dc7e017edf853d7812dbe722d7349709017e4043283b43e46355787dba1f8c0d249db08d5f298ab0cfe9964713e1b2156c585334df30159d4eeb4201cab25b2b8e7bc7e6b4596de2f13d00d1445adaa70b989d8eb17e138cea4cdf2b4fa6876d0ad01bbb51b79bbdba42de4ef8219c51fa6114dfc4fdac40668c95822af8ca59d3cb45455129e1f724ab088febd20e99c13950e3b663a5f8fcf7738e410525bea88d9eff781245ff4c9b8cda4afa8e9453751c3c20b475c333ca053692e301715c51b2bc704d72513c830c15107d8f80e29a14b0506a33702f78721a7bde4db2fcdba90040ed0f420a57a65ccbfabd11ec7e0edefee0f0da1fb40ad5101f98d5317d04a4c8116f21892a40044bffc9aefdd685901845221db5cffbfcfbe988a08809f7a3fdacccef70e5da03173bb4b9bcf77c84b6174a4232a252172a1482f4c95395b61e609636720f84d895d5e6bd631cf7dfb437b84aba07d9c6edabc45a140f555a1113645dfa862156e299866fa2161a8ed5a36e0b963aa4fc26fda7b8c38c4914a0d39ab24f05984907ca783a36c6e0aa5478018195dd059c65617712525b350cad67ef20d3f8f2e83c4b384531e75434e0a4cb8a030a388038443d2bea0f88f5e2b5a4137f711ba38e38be22617ec68344c60a552b0192b4033a35f0086fe58041e305d8c7f2e3fe83721a2250b053ceae64a279ecde5dd1104b3c380d6550531201f624c090b84405928c862b0bc915a486c6bc85576e728163cce6abeb1a10dfb6f84803c27a0b1b80176fc85e419ea2f47c0d22b99349ea4b577574955ef0528f06342494e7b223e19a343c26192ba658bbfc9e91092514a8c1c8c1fd0dbabdd3d1cda41cfed35e74084f4dbe5811feaa0e5f264a9615cdbf7211ba1459058ab380afa8a64145cb3470937827723ccaf57e1c8f7ee1365411adb6c35d36c3b9edfb60482efe161c91201ba0ae0aaa1e45b5045f3646df9e75896b1c9759802f0969f00d2a37eb97d06b00925848075e815c5fb94c8a982d38554e79263c2c8c50990702502cf115971331d0a26b540ead1bad30d0310e613fb54fd76b73025cbd6d10db11534984428d433df09417f6913902d458f94c14b31293a45766742ffd9beb5ab01c0f8a1b38f0f0c746082fd9ac48c8601120ebe69834ec6f058b6d54c3ad6c7aec88b1b57efa8f72734c5fe1da68ad2455a1276b1d98b6db0ac0d5331353e32c1ec9fb480a46c244dba2fc32a9ce654b9809482c6534d4e4742db6b8e6d5c74f3df4cd9242bfdba115a695aa011e98e3c52aa9e80bddb3ff01d3bad455b547f5319dd5d46ea0fb84dd78b8f3c1c8d217efdf61ab370bdec070f766fe8881311a2b1e65e5aee742926dd5f23f0b4cebe74ddbda5a431475f319a39d0affb124095bdd63ed58422c365740ac06a9ec29f15a3b2617580b6bf6a28da6445a019639730a42762295f7994b955d61623c9334d5266f74c6264d5d5ce6e63b9ea9bd0fed149a228ec37f836869c70c181e23039f5b1816dd83eee22d21afb673c99071d017dd12ba9a3f54c44948c14bb625367418ad032a5ae24feba02c53b251962b73a8d183e36918cd081e53e2a1225afb6b639ad15c3d7c585dab526a62318ec4119399972879ce864acbbe9db8512cd9d471505e0499ddcd4aaa2c4b6d7d1a6d59107bfe8662cbe72ea3dc886a3ba938ce99d967af81a64d52ba5f0d40f8f2fbf5301467dd2e47bb03c735abf49b5a09fc3aa4b17395421c7b80ae0bc69c9fb1d1d5f7087f220bd0c0e90182bb737b7f61f8e1f893f402c95062b49a37331343b67ccfd1c5f630fb4fd833805c0c8c728e5b44b0c6123a3db4b97ed5e33c1fd7aa2fd973b8060d37e3e603c46a79d8bdc657e225f18adceea6be318d8a0bd133a6721ef97b78f105e16ee09c31fee1cd34516a8536bd0338f29ff3ab406fcd92e8c820638ab51039f836bcf1f845fd551c707409461b2adecc1ef34a87abf2ebb91124e7b79796fde2f45cb438e35600f2000ff6ffb3f6ed774560f9f10f485d23b40fb0ced9312e3a4b5b7cfdd814ab7976f49923d1b3663305584d4e4416c8bb1a31581112e6ad2a555a87236d898cf34da938fe0686b43db3e3ad2880db111414dd2cea81c724ffcdc4b474c50398fa5b2027e4c58686df87820a02284181340f470a08b0801d85083860ae3a51b76c2ffc28d79f037760ec98077fc1535354c07c2186bcf6066672c1c4ac6d7b05fbb47dad403b05b31104df751853266cc47af1f3edc8317faeb91ad5be034f9cdcf58ed356f4a590ede3f2b0d4e780bc238a6d3c03d1ad516ab3f61ce760819bb7902776a5415c74f1a895f70699edad2ba76369f4c5fe03460424e1a13cae0886548a6ff001e818300ee529149d4a86c8e99f0dc958f0834196778c7a9ac9f39ff311ba162b68fd54881bc973fd254243c034010177d74dad6ea360503c0377f75dc1032d12b0b843d2a6e2848cf470339b4e665adbdaed7669aff1e9a53d0679803d3180be383af572a45d050c289fdded5256d955381170600454c7540e29fcb3760a093776ca5246281d9adbb9e9c6a4299353c1d0762f3b3d0c855175411663426174682158eeda126cc6c9c5e76dec30770304f2e98981536d103addac553a9dc76bc35e1abb72079ec1e983fc95469576934c688354d53f28378af71898e880ef56aca60c4d8d0536b0c8dc07342c5b586748b432b2ebf3c1199a74122591aabf8282328565e2269c8714c600c2e77b1eaa929765ba6527f0f9fedafb3fe89f154177b31fdafb6de89f1581715500b6028fea619fdf4795aebcb6afd683057033c212bac7e01529e6e761355b517edef4334ccf7b7c358a3a99bedca858ac2b05f609684ca3083fe4b5218a17235c3d17a04d36e4b76d883c139b7ba8e6d626c724ac46a1cfd60f846bdb71bc4b725819c56e7a1bd3c14fe0330e1f5361546bc14ddf68b1510783de232200162898bf4f17d2a026da394a089ea43256d4da817c377f049859a720033c7e749095842009493f3e5cce32123932c97380ad81ff3caca98dc5806ae0cb5e24ce901075c45571b37385cc59d56ee410a76606c60e8e8301c541ccfd64c251eea5c49178e1ca4c11ba088e7adf258263e2f73050789f353c574c82ab69ee84911d08e35104f69361c636072a341ec8b44cf121d4041a1eca44930616c99f3e7ebdace693a044d66f65c70dd1d2502db6711599f923d2d3d50ef2d9755a87cdb595eded9028bef26c8b2fb6f1613afef3c9be92048fb2f5a86cd53325ac0c6249e53ac733af0dd6c603db1374bcef596bcff65d682d8b72a2f9750edbf044a933d1765ce7c26918fc72aed811e0a88549646ace6a00f94b84f96b842672a24a37e57733fdb58485183826a064e7c41af70a69a5272efa09bbc0a4cad0842a8209313bf27d1ec42a6968914d14e047054e3b0d20d864f00e269e4bbf3bd0b0e5495986c1a680dcaf4ef666eda37f55b041a90d2048de64289f0aabf9b3cbd9a5d78289de7f40d32fa3f8bc2e29115194bc56a9d417c6b4e41435138f9da700fbbd2132adb8321dc91b1cb544ef2a995abae0082d3cc13d2dc451fa1abc699c995b457d5ee21b3d82b2809599196589658d5475954f055392f00c58d42691996ed7d8a9de9eee4726ca4a2c767776b5f5e567633666f545c766aecb1e6a844c85d049afc0d0b0b62f9d6e5c1c981e348a61905129b553fd43304b231dba8ae0d18705fc19d8ca0b3508cc61bcedb3f530cd519ada57588534a38c0eb1ae14b8053e07da15a0f10e08268a6af20ca98daa0900f8ac7532ecb44af35f69af692690c8078e408bef4d2622f12d9b4a5855f5b8eb3290290a9836e3ae00276262d948eda1d1a31a9bcbe0b818ae99e1b1537d7be2aab48e25cfe55b76311eb80d812c115075a8dc2328ed3a0681d4147b1816490389133cd96c57c4e1ac869404a8abc951234cf42ff06df347e895ff52ef14693e9f6f9dd371e1d5d1d9e373b5b04b8d8e5598bb09847e48352ad5d49afcbd2b309d9a4a9c8042fc460ce486cd1d99ff9fe7a2cb14971dfec8e839c9581fe56f82dac86433227c4fd37e265a36c926d6c217c0ac113ef827dd594b966974c35f228d6ce09e412cef388c3a68fa100c77759e6f6ab95461b652b3e500aa32137491728ed4ca784594166852c236fe1ef252e904e07ae2a4365e4f05c7ddf3161eacb5b5ab9034ed33c5123e0fe54a9071d1219471ae571e42119406e9b2b90e2db8a7a7996fb467e8f6793e9b098e967836574fe7480e9ed974a550d8839b48c7d020fe1a13e08dc5021b4070c21f1b6815b81a88cc7cfb52c04d4614a1b356e7c20eeb16fd4ec737c304daee048c29cf2d8c2a007a9bf2dda1d0aab23c71f9baa61c6d0fd1558cc4a816dd6938eaec0869df588a61d305d99778dea2ab320ef55ad1e5a90a09691b8940ae52dde0aa2c82f4c3d4222f2430e998dd9a74569a228e8e7b1ab6d78732b16ae8b7bf3addf4a1ed5be2e3078b2f063a74d0d4da94e3039572a15e442c9c0f3943ca0581bcc3f0f698029c9ebb8ae2ec7df87e5f65a30378dd7b98882760102e40cdab298761caf13a5a2fec222b211ac008f2e92bf35b0036774f5614757a8ebe508f8131e2def9a92bd1afdf307dbe9be74ce50b6cc18fd5847a939c5f18def5aa71dc6aeea9e8566dfffd991ea9bdc758c5e22279c2a9794b727cd4550a5e4d7d593716a5064f9ab80df670889c36af9031f84d667741ce1f0fe8259d18abe3d527126b1e0f904d7fdf121a7def7c92ecf5cad704b3021f146e01303ff40e9f3c7d963f9d06e49c470de8c5a879ff05c72566c1880e501470a454e260b132563521724deb384b51bed18a6234a99d88bb5dbf36d37b4a14300020c104fb8f313768956f2abdbba9a1a553ba55203ac2a84054635b7551710d11d23166054ed3e4b012582ce60602697d8cb349cb20094447e90d4dc0daef23bfa11956c9b540b4411794a4804e456ec50ca1c7baf111d64fc0cbb224db4d917c7141748ffb5240a6d563344edb677e5dbe2755748a08289061808aeb26a19b20e69b78a9eb40f88771a70ab264285366562380e40f216158e46e0a29cfa0cd1c8f706c6d207fd0954e050f9c26244e366a240e40d176251ee1930aabc9741ac3f47761415d1d6ed41e3c2f2a3f530f276b4e2a43cc881193b300f9ea82b8dbc467d01326f12ff0cde0d638d7f13c0d2e3c6cf1be1562146116a5ec6d2fd43e5861129f2c3e9470643ed82042839e3a1e50b047556b8a673d28753e1c1a75cabf3c8900b896523bd6da1c7db51718a10d3687e03ff8449c52ca5ce507bf4296f78ea33f5b67ac715db19c7286af7a9f2b9a308c649bbc3999a98df6f2f3e858abf6de0f82dc5151a926ac3e952fff9c55ee18361ca98557a4cc0524e8720e218d4e01f930bf70b22bae88b4c0de0b2b81d533613289cd51a9e8b4198576481595c3178e21c236f9511fc4c4a252ce5152fe24ddebe03c7b61b6351638ee10278cb1ce00db87f6621af9d5e59b77c2696d3486091967a8d470f02542f0d0325bd218a5ca7da6155113b9e3266c52c71ba8d0f4533cf9f30e6745b1276681d277378c3eaf090e30a4cd081652ef036fd827086d0004212a0397c342e73c25e8468d99ca5509b1ea1f46d48a8d377d14f770c539835a0f67c9cb63bfd37965cf4ca0d5f970fcf1c869da59ee5f3edd43086f44941aeb4caf0eb368c5a2bf755da9190768b7b51825051437d08b264a15767f0b88d9e57bdacc939fdaa7194c18830ca0df5468d48943bf4450237fa7e40a827c97e9da24327e9acf56c486bd84dc3acc44df73e3ab209a6c7f46d2469c621919971a4ca8c3b76f6e951cc384c410c9525a693c3f0f562f1623c9e70e61732c9356d780fe73ba698fa3e7014468b20cb319360e1c50c3e8c94ae4b63dc5dead674ddee805af67518a72daf68854a02b56e491b465daf84eaf108e2c7cddf96abaf4265438344834d929d8f2314274c1f036067433aab6403d5c223c72a59cdf70e29a38f26efb65cf8cbed5b8b4c00514d001c144c5caea350370ab759272442128772a76edd9d4295592447000f83a6c35cd8ef04b4ef38d4677b287ef9d115d37d33e737c428d6a75dfd7bcd3e0de5a729fd776a087339e4574a3cc71968b620fcb5cddefe748ab5455889bd2e77cb235e09dc42c1965ea0da2cd47dc3ddf93f69e48c3b5c8727d5d0662bb619833e7baa761c2115e1fc00acbf1bcac213e527505a7539cac7ac8b170f020985209fe33075634372c28ab64faacafa8ad3fdb845b62261cd93c67a2b90282b8e7d5baf00cada9548558ecb1671c4718b71bc03e2c207a09d04825efd5eb5c12d5cf3dd86b42a191705a8cbf0e57b0941cfcc502182d975f554242669abdc77152d12e224effc8e9b3548a00c1d377683aa3c9f543e4231b4268ec4ba22a2a1d3d5acf06498c699b2c0e3959d37e6b53079b466faa8bfa02e64a9cec644ddabc74a1695d31a060a155570a568e753b906ae2798fb88445ce18d485000e49135a90883824a9d1b8129595b96efc8c1d089560c3f3aceeec71a20252e491ec3ca24294d3d4393dbff35d9c73d1496660e4f9c219ccb45e472faf09483afd789cdbfb40040c85da77a06ca5535bc047482de4c025ce7bc141e310993ed03d7f07274417ef5abdf6e2638daec7970fcc0474822e8a180861864fc68b8ea9280559319096bb3cc054019de9b1bf09b8816e032d793c2b0c87d4207de9b23d9bf8662d3fff4b3151e6669b51944a15a6d458b67f3131f9431424909588d7a8480b35df336fd1d351718773fd45cb820e03036e7e51e2a80e4840550a7cd62ae4a5c10cd1cfcece642e3c57d769de38c1f814c1dde078da4b9ba23719b53314a4c51979db48a48bafd581cda4eb8f9703727fe18c20260f967ba0752e81d275c82009a902ef263773ad19d4ad86cf7cbfc4af9950edfbf1b12dd9496709016d05aabadc2ee849f8b7fd2f488c2dd31294eb2d8f7180ab3c11a089624b2e9819d4bfefcc581306f0e42650376f4b9d7d00f10a8f3962688fb092c2441662b6aeda1f4d669867c9367a81f52cdf22940b99fd6e07cfdb16bc7479e0ec86bf8596190f43d815366bc7220e1fd471f68052d1844e716efccf940858a399fa2da1231a5450d3274f298e48de7b29bbb58db8533c23a1e0c2602bd845dcae0defdb1dbd7c751caba2fd1529c8a034a2a140ed06fea70df5ea8c59fb351a815c48fd86a28bd96329fce8c4231e9b38e6a1d30caab3b719d5ac576e23d430af9a4591d2bef995ea1266031de1d2fde4ab6e9995054879f1b5b16d945fefb1f16f1a63c8821177305d622c005205c42c7ea110eee1780ea2880014f2b9ea9ba7d203c88fbe47543d5e57af147cf24d7a71c9f9b55fbd1ed350d3d115b3de8f18f957aea0df5c66cfef70740a684097f18f2a0a2cca3054ac29087db1bc0b82ecd656e3068b39e6e3ad52de8e09eee0ef0a9e5fe826f4a0ef87e985b9a07185fda68f108c805b03782b6abf27227581b5e572eefd064e93b552ac173e14056ed5c748d9c81a5fc017631d9e08fa45b5b976f7508195b8a2d094bac7953578d8a7e215edec01fbb2fb65818ad46f99695af2f173e7515f13d093d82c0ca91a4cba3b478b139e99c1a0ccf4dc2e7b5f034172348cef37e17e92b8273d5589384b0da828c3a84c6632e34b737e551bcb2880e3b21c9f3b48200a57a6cf514e25fb917859b1b8db49e8a020121269588a3e80e4fc825c563fc9a6446caa6412b223e089e7f56bdcfb9c2cbd454935408d0ad7fd2edb9f40761f43852ef531e45f0a535e18b15f292fa619afc5ea7e91ed1dcfa53a89c3bd2a21911796720f4013ea8c3b02d295896d8d4fe473b76e598be210ea7059bacd183d8db835db08cc58d67a74a3599fb49da145f3c7a12f1258d78ff869cfafdfb1fdc57e756537531a601ecc88b2811fb89a6a2622c6862274a9b267faab64c71f22821638b88fd0e744f0158c5282720fe2257f810fe72d31aa47cb3bb2533111902f2cdfdc7f31225a0b1efe4e0ed53f89a039e2c04860e01afced4c1d4ba4c09111dfee363870f96e4a1e5fcb58471710e76ef7b82eeec15b0d3e523cbe43af5d85ce0afbae5b1eb5adffd33cab80b5e1e3936466b0570ec5afff4dc861474ece279895873079d93d69791ba165d1e5f77984e297bf07674666d0647c7086748ecaab745115c82978516ed1b231b94a5a255a0e45a6da289666f7f5d9fb64526468ba4bbf584b7d063a1fc4cc64b2d0985374e2c4bbcd450d19619ad0d03813048399a4570d2e6ce65a2477974ac9f53e4373e0ba4094e1247a317e71e291797d44d64c76ed8ef1ab8eaefdf1dfb7ce6957be45fd055c09217d234336e3e4a66a09298211f41c189db0867232d8895964b75bb41e6121e3b4dfd63781cd26b413c015085fb2ec7526ef194f74ef3d33914b85bd563c4cab742df1453c4e362cdd78386e2d0c44c8a2086a630255af1073da39a31dfdedc4d187512d0ad1c83fd54f6b4814ec2cde2c2cde3fc579bc0bdd3a6c0c641a2be4d2066b809947311f63c9b647133ec3e6f8600520b8a7def9fd89f60330b14b672e9cdd28d3362e83fd09b7dba796935e3697235681b8a4f8d8a3353328a5f8af0e1465463fa2a1ac1953adc485dc204b7d1a2f47196b47be3809f7ece84d8191b9c10e36db4c8a4c5f025d774afddafa1e8a35c3d554a15f7b91e1e445394315320bf9082354e3b6f5a2214a2a076d878b64afe855504d28f9fe251a176c88fa5ffc142b5678d82ff324231a07c66b5830aff8859ba3a9de138c973877d64a5fccf7576cfbef9c11c9ccb90ac7c0295bc9cf1e5407dc845a558a6f3cf4dc30db59f2fbb9e55750bed23d8295bd4fd0f76a1c9d90ade5d4ff57f6b94ed71c11adb5f414152c352534b174fbd5da0771ae962753f678a683053439add132b96c1d9df8a641001dcee5100566cea4027f064186864b28103922908f493b1bed4efbe53c515d9ee77bab890d97da7173732fdbd9dd3e32e59f63c15dc928ddbe7770a0ded8504cbb5fb5d110960d04229a4a13502ffae7a37aaa2e316c4de9e9868a15df7b81609850b64d19d0df9c3ca9d7420bd97cce3e6655afc4115f89fa9abcb312a935f830a6bb0da99dd1ad81f46354b915a1274312ee0c30c0167936a8890ab06b2b7a3bcaf40c3df4358da11e5c3b48c7c06e0c7d4ca4e05d689a5a71c62fc1d4dbe34aadebe2012e0cb082f0188553126095527618df4b23856c341ac41d6816c2686e39c3067cea0cb9c9aafecc125e5a2b2ae7b0bc5f00c483cf70745a406e12296249a70223e4a23f1788a5c6ef00026b815ec4db060f5d0ec8231be16dfa8a6f99d2d0ffb1ecbcd85869262ba9b24695ab052b15c605c91c5e20e37c3441f0bcc31ee69b8d6aaaea727c255291cf76c01e367e1c53c670114527892a597efa24f3a721cbbfc06410a7f94f0327b317586134dcca4c907ac209eecd4365bd8d561a0a320b4f2314c4e6a07d7ccfdfabb2ebe64444bdc06f78b73e8f7ba67bdc98760efb8cbc3e32ab0788a900d76db9cd11016b6b8ec499095682093e738cc8c250595e16229fb06b16ddc82f91fd76d07f37ff1aa94f75902efb0aa76ac42e34158a4b415bdac105fc84a53511e063cc6b0161772751bc48b7952db830c182d3a3bdfe147b0ce7e2ca902c6b2f5efcc5bea7209dd0d10d262c68064e2851901fb81c3d6bb6b7dcd17c47b0bccd92ed3836430bfacd84cc053dc725637cecdf39b9f59b2b44bc853b7bbd7148e614525f02bb00d7a07fc7fccedc2f43e4569f2183a0c3c103004d187607f8a4b60d1f6511dfb68faffe9a66c82a4f4c84df5ea704debed28683204538b15cb294102165d2332439e02463cea2de70847e7b052c5a35242a8e3bd90bb93d92c26d3dedbc02d7a2ed9a36ab47cacaa8d1fcf678821aff886c64b7ee50483064d3af274a042f12fb6bba8a44cdee887108210acc093b1b259937560c2e2a19648d4d9d034281203f8d5098ad0301908b3cb3c53cbfc967fa4044fcecab15beb111be4e2054fb5eab392ab2ba7c67b43abe868bfc025d5acfa064cf46c3f0bfdbbc2cbd1291312135d914b80119165589f45f57e7ddfbbaab4644f71afb788077b7ee64d6d3a7b2329ed9f4e2339a353ff1d714b26cd9b0d39ba500b88181b8666ada7fde5a5298401acfb8443e7cc9ef0d0a475176ab570a1ee590f21b1a4dc176242c761cfcb7d79ffda2096bf5a6e61e3de86c994df3e152ef45c6075383b5292e36a92a461ab8ee8417c3aef820e547aa01a200f911faf64d355046642f7171ad55b8c32a5f6695bba8ec6fa0913836e90f8ec967a69b47bcd2df5578ff9008d797e9fcca5f0235060c478596c3385351f03e6747ecf34516d93464ffb55150fea467a229f3f8dd34c53a2d72a0e161d20ee492f5fa3b69dd26164c6834b46558274b6c99ead6b1270b3eb3d8ac0d1584138bcae59254a2fbb99ff9069f8cd3be8ac4125d9f86cd2af38b47e7a391d7828723fcbf42c9eb0649b3cd312317b6046702e07ec4e08e5c0864ecf396e01a8c17e575d6b413dd63ba8d2bf0c4fc6e8409e51b5a579a4ab747c53de4ed3f8ea16700cbea03402d40c1db704c60a4584da3588ee869c909c5bffffcc6dc387ed0214b97d2c516f73b494f9eddae3a0422d91c742e5bd1beece9f2b23a55ab04c7ff0417d5e216038b596b465fea76835c9756f2ff90e61df9bfa5da20c30cafb167b7817dda176b45090d9c51a051f0e36a8687384a9ce1f6605492b44f276df69e799db2ca8f26b2040a3f6ba204da9d07f8299cecd0dfd806e3c50f601410d1d35a940a207ff68354b1a51e58778d29c2150a4ab173893ae1695a623879fbe94a422aeb5554c5898d8f9c7b20bed53a1090e384b495728c57d1b9f1eae8474959f52473504d719575e7354849adffc9401d513d6602d60602713285163b06a2e1c92bea8d313410838ea0ded52cb001db68ee50e332b04d8d2a61c020b09542067439547b134ea7830d18b37ef36ba0e3aba04afa311d917d12ad380184d5d97b930d714b78cd1390c1c5b1bd5711c0db2e774952daaf64f24311a2a4170d3529fb3cd1c6bd46af9742f3e592438c34c24975372d5f2d40ec069cb63480053e58f91b6a3491be1da312ae4b772598ed945092fab06ad466d2a6461262060b1e660bc6511fed7b8cf125fc4699f6f2b8c01946d60e46f6e676af53fb9e1c81b3acabc8356444162f36075402fca851f6ea54fc237d4ad23c79e853872fbc7fdc61e0f82fb83e077de1503df9683af716a4b5c77434fac3ef512c4a653b0a3022596ca3084783196e0a6755b445ea36d3a233a17b515b9572223bfb45a7ad1dd0a83bf0e12d3c816c640067496f2b61d8c076ca9c67095d830ce7ca8f7cb67d4eaf64acbf0b03e3123681026b84c4c05aa1308e17183f0d2636e96913a46839db821b6d28c279c5a69ee5c7882c3110023b783d10cc82dba61203c769b3ec17e5717bd0276636458f70590b6938c12df2e8500b13dc5689536b6b4ebe9fb5adeb71e968a6318537bf0db8fd596b81d3a7cad97e7cb53ad45264250bee2c73648d903a9c6373d046bf326a0bf6b2aca6595ee7e38e5ca026756d1694c4c1696aea9e81cbb44fcf1e496c39a52367522aecc36a6ce2ff2939b0f1a40e2d4d94b332d151179e06d2e2d17bdcec19d2ab41528c333e2521b1fb681bb899a57795c6039383a3e0378bbe155b7201be0a43b3ed43209b4c37166143e2006dc05a41a4ee681619dcbceb58f10d1ba3eadd18a7c1e75637f5222b851aab99e47b0aaddba686cdb090ae7cf85fdce69ac2faf70f19be81494b98e5934f0646842cd8edc55e191e96cf2704dd7e4e25bdfc78137cb6da607ca95f05aa443f04f85a5ca7ece1121e1b9ac8ea4978b6befac2385394c7f6feac54ddae0ce4c544553ac6b894a4fa5ac8ef2b6149e4449d1e17791bf54b8fcf3aaee548b73a41177064daafe7c10432d4858343e5fdb30f205fbc20aec0806e6af7736ef8f07640c271c7e06821458c68782408091c866c3a19146cec3373cf874c8129d256e1ce6c5a8c3e8846f36f3f9b803fff93d86fe7a579011a0504aeb095c4054143ce1b32af91a903ff8d024a0d83094a882542abfa80c77220115288ac9eceb52ba6f2237ed62eaac7d2d73d6036153ead43ea53d2438b46e2bd8f7dabdc0e5aab1473f9e73716077dd0bee2b87336d89f3576b7db360e8ad7bb43682c82bc41da593d58f7892624a5d8c837480e9c5b3cffae40a5557e62a574fd35a9df8030a8b7713a5cd0df3ef2de878f53d4b9db5f5f3c564fe64a6f55644801b004569282c360264aaa6c6ae1238e63403c5864c13aeeeb192f72d6882c81f30fd6f6d61a8c4740056ffe1896ee79cc0ac91191c336238062e18d1802e1d1257479d21b087dc6b6a6652c69a6700d39cd2c5491d918b9583ee5ac61c310009505e9a75a8b80b2047d340d6f87b71831826b2328f8a9e7fe6ab438b1c228fca89a840cdd2e196362af9374db4ebed048b7061f3e27054ad0255259eb14c2bc4e69356aa3622de0610d9cee133736583d4f53430d8c212c5282c219d12c5503d75d18a58273add4223a8af459513164a838fd03c6ee1a7085456d1575247d3e2e139ac4f3558f01427afc133a5476b5a2362a91140a02a8140acd8e576344676c9173105fe1c562aa4fb144b83d56decdd1698380338e0ae4e0bf533df90e9259b1617d091261f76db68ed54b5693fe072a8d6314770bb3c378f2adf5f8c767048a25964870f3e3f1aed31c30d088af65ba9b7bff2d53ebd3bfeceb8436155f32acf2b25597bdbf7282502a28f53cc0d9fc1a04c3f78956b7f27d3e78d948466edcce677124fb5ffb161efa75a3036caa6b50c75e9c326402f272a2213d2ce94012145f3dc324088f42796528d7a3b842335ed3b4a02ac18c3128908a89c68ede011b8202e401232942ea19048bf0beb2246da81ff762ac42293614d53e73802745287135fb3daf564b050bbb4090ddc5f718bf58b315e09b238cf2c1de30bf640614cb3e15e8185450ee06854c38532c1e08b88b4fffe2decb109f96f239209ec0c49abf7d1a8decff7bb8ac69934e64d5f3dff1c07faa34801ca07016ca7fc99fa3e5c11616af0e27171655030e5b638fbd2c79c8d7ea991b8efb75c899861d1359c0fa0b64e3ee466ad4b00b1ee4dc6f26fc5a640ee88142f0d94054858d6eeb3956517ff44f08ead824a29a4c60a59057a0400758b7f97a12372008fb0b4af054416c17e8492c9dda9cfdd327ad2090c88fbfd31ce94c3ee7b9f7c24409d4325598f38106a0d6210f37d2080cc02707d6b3ade2dc8b1e6d633848c86090badf4f4bd56e841681544ec481248d138e53486398a27466ce04ae50734c0dca832219759c29ae6cb03d3f5551d12e28a5ded9e3f3925319082898577ecd2e4632a56c3e115bc71de362a025d48d3c1e87cfc72081daf547ddd31f796330834c4cd193812c94ef2be4fd10b7916f532b2ec372ef037b3ff902ff61179859913aff0949074ba083bb32e0768c7dc8981e1366106261fe0aa67b60a64c4e0569fe80359ab17ca2ec70d9751ed4c0da892c08c4bbf05ac9bcf0b56f698a60c78b3ed0d29260156420dc63df063fc409810c6ff95c037d17c6de70e42dd094e64639bfac7e394c478c0a20a02bffb638105612571ad17f5ea831cbed5d40d883e8dd169b987678512b48991316054a1aae933e410d16c267630ded511a5ecb067cc091f444f01eb278951e7257dc30cf8dc40ca0650a1077fa9df76a27e6d1800cd067d1e7999e538295acba8b096bb0ab06482a9bfc1b30644f1378eed115d1b0aff1f8284a09209ccf1fd90d5b032b9f4506027914761074d65620808b393031a6094830cf8128f0df70d2451d16f00a732a3118f28860041989af5da679217e764502042f4bc5ed3fc4caf3df9611c00eb0f368db4f021e40ba8cbce3e72d92081e878aedf75f41652f7697a567ac26b9af83897d0b020b70e46aff8adba89c8cd472405457a4d9f5c4d71e62a22ec66d9101df7e8890026e1586d994004e15149bf0654c8e28689854d6543df55077a5389c42fe9229db19e22ceeb750008a4946bd2419639a81a6aaad2a0d4ec90cb85b4a182dc71ac54531cfc809acd354f1e019de0ccc4a3000afd6d387e3527b625b668a260e23ea1887c0cd3451905a7798ef5d7a3bb6badb3888dbf523e09fc0e2c07b4a61f02c204a70ae8912d8937727575d21c4015c53e9f5da94a1ae89725fcb6027afd016a604010aae21c69bb3432f6aec3ad97dff54984a5f35872a5f338d67c38ed6c58e8e6cf7359b13636a47193ccefac402af9a436f6e1213a03dc1363ced013272841cd6681d8294ddbee5ad77ce996dbc94a8b47ff575d5aa59b88880891522629657c067c06af063b26c8735ddeaf489aa7d182635d5b311ea5741bffca281206090cecbec0a84ee20b4c69c3d40eee5c55172d694f30cd3b30dd8d41636eccf5ca45d5aceb40ac2d9494e99a9842750de7ba5ab05dcf363a12d5fae523d1b8d33cddeaf4572c29eb81de1796ea1d34633205cc5fbfd61abbf42bc61a73bbddd1f8ccd3add66f113cf0887c210d1a3025d8e034b0f5945e83d0408a4ef61a8406b96ec350ec6e7636b6a4a30559c114621019a4da04967fb21f626da139677d8d9011d111d9a99c5a426cfebce539cc73fedcf57c5464a3bcbfa93f737e5f6e4e5a6da8e0a37fce91d1bfea74b4f6f4cf36e75c18aaca3aafba30cbbfa5cd6c8a566c176b08ef9f537d64561ff37cc11e1ed8eb694d161deccaed79b266987750b0f6dc5f1749db4f961e23c6f882d7c43be79c4f46d61cabd85350406d07bbe52fe4d1c5a2db953f6982abdfb4dbf37e2627ee2997bfd06fcee1bdb254b12b176ba9844b611f61387fd86fea5f51be844f724ae3269a7413def4126f7fdfe7f5940d6ccbebe765dabf6e4ea36a53312645d68ece757dceb92e1a1f31d71fe696e6e5b457aef34d0d47ff3fa688f8ffff59af1c7ffbab5e89262579b9f209585730ffea4ac5a5f15cc1fffff37f3df8d50ae67cff4dff805ac7670fd85c4058eb18639e94e7d078caacff7f397a162756f63ecedafbc0501cc9116997989c94504ce509954a51a9ac58dc3c5db4689c664b5663b44b9a7d5e72cd345fbc802182c9390c181f8410825f087ed9e32cd6071f9034d9a5d312825f087ed963ad56aeaa57a04e45a5028145a50201358bb1a23a79628c3e37a30c1f7c4447e5e4da0caa4f4696d9c4e8d6729c9eb9765d38d752525656481a8fb3d80c424d3f6e67259bd915cfdd73cf75f9d0e033d7a0a8e10bab1d856299f1ea35bc7dc92647b785fa0d733dd76c4e166c5bb239f1946c4a36b39f956c4a36b86423ce70b584f0010a15423883010ed1ebf319ab83babae2034a04971721b4b4900003e342a36556fe72b9688c30d67f19ed77d12bdf66f6316b0a8aec834f34db6856c835284a501b753a9dca1160235863ac3e6d05c39e6d2fec65e4e6f7ed7d3acde8d9e7ba7e38892f23cc986d6a8ce6239f920de619cd5cfbd7976bff52674e2ab2130c0c49e3694dc2886d3506739b863b210fab5b5bad0e6167259b7f41cd3e6ed32f8a42cd5033103543cd503c5037244d3e51b3ebba3c05888dae7094c061a8af702e0c5dd9d02fbf7c65c3cc8455576d3144bf173533a9d45033d4cc849aa16635a692b0fabebd6bb55ccb3163e56239cab55cabd598baa28557042cd0fb1fe65fe1f42ffc2ffeb3d080f175d5fc75f4790bb9db37efb5f6c4b61ed6fa4e7b4ebbbda8e5f7de7bef395ed747426dcf1d5d404abdae7aeab487b56ecf17ba3d7128da6e01fbc2df1116e8ffffffff8717fc1f5d18b1edff3ffebe7fef0462d7ff2176f632cfb2ba82cf0f7fa424dfe9c3b61c3ff8dd10ffb02ddfe367cf745bfe85e0378e4664dbffffbff7ffe2c5db2b8d4ea894536aa5c2324f17e50b2f63cffb4c28a513212f6058abfa202c9d989408e12e2f63cffb3eaf47eb1221ae9790170842369e80b63164e48c352fd981ad2b19cbf8fcb57efdcf9f7fe57b8f57fe21f190f4bc587e0b112203638cf18cc73e4284cc68818190968cfff33d01218a177be1288a173f2892a66da242a5b056dc058c946b6480d08f0a279c4a93eb752af9731608e10d1ba513131731867e7e08c0820d0384720c206297006344c926c918226365c8caa8710b0e2c23beba25050ae421b69d916bad39b79c7690eb5fd765124446083f7e26257bc6ffbf08230e8dd846ec2cc2e842c468888bd6a491a5952d106b4bbcd80b478cc5bb3d502c8db6494e952815d58a9ba7a9358e1dad3694d28949eb85b57fcf9a02233c3129d9ac0f4619bba57a598100dfc9395a83408e56dcc7f9bf8aa89ee69b440177d288fcc0f5b95eb888fd0261fcaa0be7b38a208c1f03676c65678c519f7925e79c69700a8f9fd85f64575cb18c71ff0bd82b074947f6261dd949b8567e934631c8550fdbb28ccf5fd3e4b375c4b62ce38cb185c4b67fb68ad8968b3370b6a158700391990f2236200cfba4fb98d82627b0600206e00e7bd46b1026783e2d9830810a98d0c0576497ae486297409e8e8d8204169b74019125528f8a2542f06389183e9c6d820518c33e09f261fbe9c1368406b617dcd874e8c19683ce6283bd06b1d10460bbf9aeab7e5b092a3a7ad249f6de294a347173f2514b298104074a1c6828257446602ac1eea4440d3d5046c053c6400b10946ebb8ba3381a7571346293ec2269c4e6d8c53d6253ec62897832825d3c19b1f975b13462d3eb22ca884ddd4553399e46d4a82a5129a9113e3dee32e1859cb5a731cfce246801104284f0fcc08215eca8a0f4a1eca14c4b1eca1d4a1d4a9d3205a057a44891fb9f65f4dbfa4eff3ad20245994399238410e58ff204250ea58fd20465094a1294b4f2867204a5084a9cd286b2071224279c3346f23327b83f9fb3d64874f0e347c282121d17a438b087d671810f9c4ece19a78fcb4fb395703a17b0f6feff3fc6f8e2a7619c8e114838121970381c0e87fb4fd7744f1ebfd3de9c881457eae1037704d73e70365cad6ffeacf7f7e5161a9e8deb3221a5e713a625abb0c275dd135a5a5e5820808ffa83c348b091f20663242508600083f203a5074a1e6507ca1a4a1aca59c9811ee5064a28b8728672472943a9813286540ac6374851617c0315c63750b9f7534150d029fcffc7daf3f437f33727c7674f7b5ed00e19bf09a7a01b943cc618e3ffabb5c68f41599a73c6f87790026887c71863fc9fb3a73d2f67a0c723adf4403be81efe71ce18638cff35d678bc403b606171d69e17f4f85f043a28082020200f080848bf0a83bbf47d0ac84041f7c4fc6fc01a0431388481b4a7450094c5f7d813c1773d4f632c44ac2db4e6fe5fe8dff89134e1f7819f078ec851f4c07014e4e914c814289051c03f465c3c8100a1c98209a9ee9d2b9441f8d854dffae3f90b49550f3ff0a3f9c02c44f204741a53baab06e91bbed491b5d641658e6df9075a4b04185a4b445866a0ac293150c2505ea09499b6d8969b7a705212418907a6d25aa0222d7660ca625b6edaa954b4b61689ca4a6b6b91acacb55a5b8b84a5fa67ad3e2416e37f25e014a6f67fecdffae5d6beed775ff43bed73b346bd4d9cb178c69381bbebba1c059e2c4c9b00adf8f7777236f9ecff111b0ea2a4da7b2fdeb4bd93a6ba0bc3b41af344f705ac4969292da5a5b4949682329dd2c0341351fbc66fc41863fcfbc3f7763fad735f3937378f735f348fdeb9f9842ed7b547624c7fe7793e7d2db35995c12769ec09da743cf98133b0c6e3be8c3eeeeb721c2e286868c856479a4dc1d968cb51aaf5ffffefc637777726ca45ba46efd03c709e9675347cea59c7d20123919a78d859bbf4ee736ed17dd1359fba3e757deafad4f5a90b9f5af66936f9299d81271d76ab7468bb83e8284afbd417fda371fdde9f9fbebf233a677900d670c6261ef6c52a9cbfcfe9b92fab638fdfe7699087ae7d8eae7d8eae7d8eae7d8eaee9dae5159c691e207ae7733ee775ee8beee9a1c8066b39062a8bf1c5f912dda2afe19cf3abbba17a3aef8fb7eecba99630a68956dffc62c85b17a68fac3af843e49fc845d13ce15f2c14e0ba523d9f2b9440744d75acea9e49a3c5c67d95d0c35695702a72d2293d345dffe2a4233f88b5858236c574c5b638e723262bb6f64cf5b4ead996a3a7cf4464aac2a4031315db72936e5b6e4ab22d374db12d3749516272d2b4ac0b4d43bb84f2997260c281290a9390098a6d53ae4a5559a7144dfb977c3ecd45ffa7d1cca06d39fa34151548fb78c43aa63be00ec803a67894ddfb18e7c739eb54df0fd422488e4a4c4e4a26d3099552a5a8542abbf2dced5f37ddbf849008b1aecde7fa706e9e6ecfad992e4c402ecfe571918bf2eeeedc74e7058f095eb7fc058982eef604c1db755d1007defa1d73fae5cf33f21fd28e82a97973ec8c252fad9a75e6535327dd4e609aa70b17ab1e5a1f9880e9b5b9b2d5281bd31a1c2e2848e5dea8a8c83bbb3317ae92a2dd4ea54a79516336ad13e974609a32ca5252af17083162c850d92121a1948bc768b4f99c5ec1f416dd9dc5dd6ef9f390bbbbbbbbbbbbbbcb17bfcd91d2183164acac903463d075dd5affff47a15c65b93f4215d049a98c319785f44d1eca4441fd0eede89547af3779974dfb63b3cd3a9a77a7fef9b07464e45dde9d2ccfbf6cfaf97cbb1a33e4be9070b8a0a0a1a1533e49a9697d4ad2d66a2b2c3a3a9a77b22d5e36ca66b48016e7e6c6078da69393d36279cc66e385bd352b10816c775c97b5711941b54bd9d39ce77c006c80045cd7e5242429b6aedc141146130f7b4747f32eff8bc8eb982b0277d24d801548292947dab92f63cd7d5d8ec305050d0d1181698a778e327ddea2ebbabb317777fdf2313706dd1770074c0b00a62cdc68d02069701e217761f61b725f97ff0ce188d0bc2b42f3aea279f73b7addd9f3f3d13aa5c209239034df7fadb5566f0452002a156cdc2afef1550f29a02251c87d67e6225da36dae6b8709295d9f5a06c4b657d53f130c2e36971f975badeb6accc72fef3df705e6c3c576714141432e36179b78c268e18eb483c1c1dcf2c7f5aed705f270f7e5172f489a3771e76617ea413dc703a4c7e7bafa10dcece7ab313b63bb1ab2ebba356a769cbdf6639575a14cd07d595d9836e9de7cd0fc71729619d3fdeb9eb1a21a35df19dbb1dc60a3d9769afb5f96afccef5f96d78478bae568ce595bed6fde9751f7376dada6ed20692dc9b47d9bb63faefd4dad326d5db12cde4fff7ab3bafcdcd79d91819c7690eb9cc595f1cd942eb28c6fa67a367f9c1c3c55cc3d239b3f561c9f2d228bb55aad481a979febba1c04752a4576b9b9d8686472356c98e6a0d635268f6f96ba48637cf3a483e60f18dc850b9ecd1f352dfe82ab98367c06068e20aa0b07cf95c9b9d870d4fe756bfdd67330cc1816f57539cb8c6d516b727c333ab4d0820bbb37c06ed11fe4395c333ab4e0c2ee29bc01bfc516bd0517beaee20db05b74cc71d4fe0587edbeb688f5a0c69c7850635035a6e497c7b4a831267e796c0735e6845f1ecba2c6946a0c0abf3c86458d31e197c7aea8312956d41815518dc1311dd4981c035a00d8f09a7e4f8ed6c8d12faf21bbb1935f2ebe3073cf4d1f01ad3d34749c7ef9eda111f9e92f4c8c1243bfbca4817ef9890cfd72d38e7e793943bf1cb5817ef98903fdf2d4ec85f9d8bc9101f3460ef3868e1e9b17e69dd1e68d0bdc80c1bc8181ba5253575e98762665d6ba82327fd8b4cc98fc64feb081993179693a7fd8f01993a398f0920981dd4df88909815337397f98e70d9b5a5dd0dae3817e798e96da03827ef90d1aea08b784dbb830cc1b36de0ccb2c396fc8606effd285ea103a985bb7759fded36f3a4ea7751f1d471043fce0e0b9b0be844cee5fbace1040647275881d995c4ce76223cf5ecbc1466b4f8e0b33f3dc112c5f99b56ef9d7237b73d4b3f9a3c571ebc461fb570838ec2bd451989d0b136665c2e8fe75f969c64c3326f4af0b73bb316ec6b6191b62c67c623433e6e3ba2e1fcd584e4c478b18ae5f1e6ba2beec5f623bb11e590c48bf9c65cae4648464866488fae526d28453f7ce58bae22b442eb6305614ab8208119d8a2a83a366633a1c3ff765c52fc761bb305326e8be2e479134df29935362cbe4fae531dd857dfcf218d18589fcf2d84e2647e65663487eb98cce7de93d311dcc2da683b9c57430b7980ee616d3c1dc6230b77e390a8a4dcae644a26086d9e39f89378a4d8e69f918e2d44260430d0585a4f9380a2900dc41942e9e9d65b6d12d8be95064251285eb753067998badcfea8ae5d6b31c870dcd3474a05b22b6374111667cf3ebdac4248c6f7a7d9421471184968bd3ccb834c9fcb52494d28949c9483552093b915cca45800e71d7ca6b0c633cae6ad8a3889fa30bb8360a4f6736031ae878b524aab83adae77c48a20ab25edbae4170371db5b859b7bcf49934f1dac1154e18c1437404c88ce5a7cf76753e215f133e546b03fcac8b968d132c1035a47c437be790c3d6a9810d36eecb72cbbf2035a04103250f35c85173028bd33b9dc0c10c250cecf109af883d32a183134468a25df61ac4891464e1c408749113327c33ec710b0f688bbd066982c863a209286e90267032e0f0c44ffec43641c223b24f7ed062a34600e2ecafd7204d7c608b5dea354813307c576cd20aedc426853c236e4c74f424c3cd05fdd3714b7bed05cfd8af75e304154edc75c3a1a32d36165a90030349a800a2061c5631cc40053be89080a2070e38214790ec6ea84247121998800738b0018f233840b460e6de92a8681fb71e22a9d7203719faf71ae466f3c4d76a1f06f1bb30d4a934598c523a3129d9a411398a21f8793ae3bf3635fa177983a798e2f137c514b5d6fabdc519cb64b88cb868b41869519d8c9c5adc081f3f235f691bd996d7a8d16b74a0489122458a14f92f5273788c813010ce180803658d813090f680be9aff3f6f06f6621a2d2d25c0c0dcff16e7325c2e8bc339dbafea3cf201daef7aaf71ceb8d65a4953e08bbf8a2db8358fff50145ff4a83f501aeb85553124471e832d1522b5a542a4368849a9959404a76a2525416badb5e2132e6bd5d9e44920d5b6febc7481b6f5ca358a57aad57e4dc5875d0750679e879582135292acb58918968ce288692c1ef626c74d1a91fbd3399fa36f7abde995c503494a729364cc2512d45a4dc093ef475c2bd7a504742984369548f0ff9f4b24d8967fad18638c4f2625b6b5e8b7c514eaa6a4fe55ff9fa21a9d42e27761a9fc1e09d54fbdd4a68ed23d33d717e624ea80efffff7fd4c93e76b187bdcefcff9bfafff58952a05f6ef1737b2d605fc8f79ff03cfe02a962d3f6143651fdd4cbfe9927f24708035347e9df87cd5217bf119b275d04476c9a74311cb159d203e8d7d190d63fa48d28681daa2247c123fa737bb6803b3a1ad29f6313f4a92bff9c25897dcbdd8d2aa7c658fe68b9eb6fa675e54d76b2fedca4c86457e6a8c854662a372a32159bcf377c75ce7a98f5e72b32d868ceada0d868e691b33b3c19e7c230d7faa6a259cbb81ccd3dfdf34f7f5e515747338ffe338e48e2e69b419ecf51eb7386cfd6b219426c34e7721796838486f22980da898a2e4cc675cd77e264e0bef77f2e26d9599777399785f467b50978e5b75b0e33c560a3b8dfcb12c3fd30d65c9fa8e6586bfe42d7276ab3ce28c618e397026f8df10c7b7c5c3b8a73d69a54e1858e4f54779ccfd69f0ad8b8cad40f738b317f6d67c85ccbffb4336ce60fc668fd75e51a71a12ca233a602a788d62b0d453a76129c243c7a0d92a4a6a3bb5e834c21d4eb14b92966d00d205a6eafbdb50762ed7d2b74acc8f91a88a4fa6fefe3acbd279e00c1702447231fb6de25277fefc92d9550502cca498984624231994ca5131393a9649b4c269269449a4ca6d147b54982721887930488ce878e874e03ba1a965cc762cd99df6ec271d82baf767f8035447d21f9fc8b956bcd6a4ce698b772add7eba57b115d580b2e7c9de498bf76acbe316b898e5947f4d72b8a8e79cb4885c1c456506fd1608444f2f917528f7da22420137da2a45bc71d93706eb8f81fd672189334256ba5c8b6fea84493702e4ceb2ede31a586ad619bbf94bc84a370cc59b70b2b71cc59b80bb31cb36a2cd828aae8c4c4c43167e55061252aaa2ba744a4d3f1ae63bebad51812c73e2633e5e3ba30a9345328666a66a678a46ecc148e99a25d174eedb82e54d17561becd94ec47c949f3c7c9c5dad19ac5735d9895b263a3ac9495fe0b09c87d618e49403a4e3b66d56cbe99928b640a496aceaadd978b6363f9fc60ceca61ce1aaaf5745c44d431eb56fbe9282b8825d4314bd7316bd73127b54d2f0c250129ba3014b5abb9309495a27629194615756cf967ad4832736987b38e6eb9980ae104db7220d785f9496d9380749c59413ae6354810e9aa93843e8e79298a0a0b67d725546340588896863aeed131474b21e8388c8204e4c2c81aa9e7c2468eb52679eb051bb55ce4e36824bf0584b514aa912272f49193e677f998ab550a5c632e5e69b1c38e625234533af785cf94ce75e1711ccf547a5d3895735d58683563d92e0c2509b186e8928b3d3756d6583e24a11a53c5d20c671756daddb0031556d2a2ba308a4f0f348cc26c95b428ed5c50b1d262831dc54d74cc51149f8e519250c73c34537875ab2b98b3e06ccc41f3b4199b748cab918e5bb5ba825b3dad214c3a66d58cb06a7505735d5dc19c556339e988562ce1efc33867ad3defab1f18562e86a2388e64adb58eead75a2b27914ed755f92ea9ff623531214b3c407ae52824cd3599ac298f4e4a2514134a5996a51393b22cd9655992ca115996e5072115249184ad1d126b0bad44723fdb72d15a7bef888bff8f7568704ece596bed79767bdf67b5ce592de2f47a5357401e34e02c146976a521b9388ea61e36391a8d48a4cac5bd37698fc85d52b2f7de7b645a50f4c4d0b49d4436407c416e8bee423df5eaf339ff728578fec505affc2bff9b7f3979e54ffb17936b515d97a3cf03767733d91d927d8dcdbff0dbc55d18e90609fd4d8d0e99e7e0327a8d0e20cfc1675472edb98a5716afa348326dffb4062b8a09e3374f3506298ef463908e3c5234a970371147526657d4bdf08bedc8e4647201d0d5959d9cac93430a60b44825a492cee2e3e2f3e261f179f194be6cfe68e53a5ae3a6864d8d192ca68bed7e96d001d26fdfe91746cb84c1c1dc4a25362a9393c905c9085d987e2fb68323834219995c2c6da5afb4aee0c6f364d1b26ea5fda22c1a0a49a37968566cda92c83e4dd80d6683f9c07a6035d80d0c074683f980e5a898e1123ae2c8d14fe762fbd72d17342493a302d4301acc878b0dbd43684cf735311dea62ebb5d40ccca9722c499a9197a40070cf3cace5c415b771752ac567e261bf4982e60f18a95b4749b0d9912083b9c1e4844e42395cec16db89f1c480c46a4351f4dcd7e5442f932bc106862923f432b97fc9e86476324525d484672cf5becc844d0ced9ba3c94513e603abc180c0786033180fd80d0ce7ba4cd8907e6147c07cc076603a2e36979b0bce2508460b80ae86704df3fbd7e94d7148a8c76788ed270877b3ab21b3d9c12364996db41e91ca8e485db82069424e9a150473bb721b5f4d4f9b78d837f7d3ec42ba7fe5eacabdfdd87274d21d9eeb6299367c4665ec466a07d213d3c5888a545c6c019a5ea8146cd92e6ae8d00c000000088316000018100a88c482c1248bc23c4ff614800e6188446862421947234190c32806822086318618620c01c620a2885325640300bb15b11a649019a04f3462d938e868169215c55ad1e6e805a22353adb0e2671a00ab173d0d6aaee7864fd6e44512824ee2f95c74b42c1b33dc92ac5e9489edccac19b8a53bfcae1b51f175a146508f715591d11dc2b57b5857b18e8f1721d1c915e91eab4256bbf3ed5408dc76a96b447478079a9ee9ecdd721628d9d186665cb414eaf0f4bdce0fee95e9efaa388f8b05a4f649e72798bb7b647ffb15210c3021bd6740722dbe307b2f46057642b7b40ffd499add8211ce5a40b7ad248fc2f3ac62d116e14bb13dfcc0a8991dc27c436e89702f8980002d30dbee87b3d311b63b1a40b614b171b273189c30881310d8e802fc52804fbbc7325fa0020fc9dc2b759c8bb0d64f307c8923c0571d854fd28d4116933f3fce2fe935a22328342e8e45be6e5754e3a9deeb939522ee7da58919aa4017a934bb55f03a0b872605ca5773b86f9dbd9468f7c6ae5f1b9161cb6f91c51557623f22143fa809f6ef46260ec7f89982b15dcedc22f352736bd55d10f5c91447c01e705e59e46d6b180c6d0d5a925a3331449b0997e4479d02f23bba25f271bc776497e978b7cc0f6d7693b20f0f7c91b6b1b734cd083c90e6ed9fbe65a79e22e965510ec811f0eeaa105647885d68271f548a00b7111bd511a249d6384f417275047a8a6cf5366ea33a42b46889f57d6c7afe35a4998e73dab62a43bcdfdca03a024a3bdc1289d90aead32d7406a628f9c03c934c56839fac30e93c9acbe463ce71dc16634aa3b047eadf235e8c90e1c88b298fc777971c29a161ceb58e20c88027cb2098fbfc18ab0b31d855829e74c2bdf666cdda8f1fc343b12ee273428b5bddf6bc3d8e483ce8985a5bcff334462c06508567b5fa03f6050469fbb28da5cc8e58d3f0cbb573785186f7c3e164f7712c4f0ab4237eed9936c7c87f457a00f720ca016d72d7b50f20c8f6e15fc5bff05635d5ee6606205b58d06661e5c7e0a9dc63037922d4226d5e53c9eda7dce75ecb9f293b7e1e1fd746a01a5e88e7170950fb632cd00887945679b8442a6557f9aa5246bce751f7e153f8fd42233e0e9944f442986bda261a6c4cbdc4dc2284803dc232343a7378cd247fc123444a96ee84507614b71a0e142b1c49e04e5d704d801b0eb5fc52bf4e58b9860acb04cb66730b85ae12cb69e576a80c938cf25be1172afcc3b56d9e9abbf32bb5b77d159f0d03e649a4bf2ca817540cb82984ee90299a4f1a4b49e5ae748b455392bae9f4423767ff8e7b7ead1c39405e41a09427f84f4d3aba7366c368f9d9f3ba28ad73bb272b621e67c9e28d931965a8a632d49128d026f9a2ac971e2ef6a99e8f369971cfbbf9c3fbb04508c2e6f189857afeb03b72f89e2e4539f6c1eea01da539e44f09d2392c5a12b9e8114836f33d121402e8652d1593fd8d56d41fd94d4c52bd8af8c404275bdce5145a115214178fb1d2c73c0296230a097afad70391ca5d291eff822252f9bd3ffbe3a3ee119f269694c1f80b4c9ebc3e8407db26bd075403b9f2d61bfe12a61d70883c2129309058281fc56b296a69708f3d47fef39d37e3ba8ac46902c2a138887be30ea5bd1c240ea5046860f59cd97e046d885f614f43eb906862aae507475cc27f3f4bc6b1342803a5fe689d042f8ad02835d801e9b7bc50666919c22c1b9e0d18fefd52346b4ab45c11a55da0e8a2fd7fae952489c49cd32244d67239c7d7a4a8d34dbdbb712b439eeed8205a2d86bc8dd38ad23ed6a0c11912fbf26cb5506774c7f38449b9de233f725ef79e8161c196c72ea6d2c744eeed6de5cb8f3b63df42099e682967f979ad8545710e576470265a76253b5ff0d563699f32ce5eafa12de8e3143fa992974be2aea2333417660c76e5d7394383ea9b5b8b4e94a0f3bf6cb1417a722211666f231138230490667a40499a5fad284f9ca6af21fc3daf6940bb745de74ae7c21a590f31043df3e8be05221e6fd0c9c9094216464feac6923edc4633309aed735dd603a1774a28a20710e5d3c06ac542546901c27510bedb1928c62d47edfda7b9bd61fcc236e869d49109b409e04cf873707d9cf004cf8ad927a0e82c94dbcf193313e4b968a4268f9876e7612cda99b2348ed458385681342e4af0dd8986e62395663fb5f80945375c2ed4e608b5c01d6ec6e9ccfe16f4fe38e8e8f879df26b191035a690c718ea0b7a29b25ea317b5d9cca6404b3b9b6513c40a448196d2babe60f940683ddf325b682e9b39ea1fc2d8bf5214f8ffad5ff20d89a39b42ba87dfb0ce4c70d3120f43e613d04bd916f56ca53891fd53e0c2a74bdf15fd155ac500b8a099f8410d4e8dd3d27954e7f129f4d813c7e54ab3aa1434e54c9015974784ca3184225056f8a905ddbbe0f8ed2bd61363c4d5519a6cc16f0d02a88e44bdeb97bf1479b3a0f445af1a15db480b7201efa754469865045808d28f32e906b1a22716b3c29935aef8da9b94c99412f2b3bca61a135910c6edad26bcbf5382c3c81cd12b877404ee2ba88f98942e0bcc472467962e5419a7a2c543ce36056945d0502a4307e30fb8fc1fe04c2730897e06672805bffd654d18f09dd151843ba38491893e774e6d2dd4a84deeaae67b5a7807a1e0b657e58fa2bd85cfce717e5dd96d19121aa954c753d2cc8f091d08c1758618b3f4de329a3e0d86d69c178082d2d4e106e540954457b61f6a9386bbc481ad4238b53db5a552f346e6d46fa0c099deb219ac7eb297640e92618d7b20003004971d0b0c7a160b12b7bad660f4a6c10d889d5cef4d0eca85112405e4077d708bf423450e311534ce92dfe098530e9725f606bcf864d79a24f159625ebd76b0fde0c3feb48077b379f252f595610bcfd8ab31390c00d49429cc0aad0a155565d9a693f3764ae21f5865e436b8b55ae9752ed4d38ae458032120249e553459b076da883b3e3090393c36b872338772cddeb0f850275dabf2b6160423a43cf43c933cf90d2355eb91ed58163b8fa02211034b005e63753b3872aa0a788c91505e5aa97d54be2e7d9852f08926c65ed69ef0c785e4a9ca0cf0403a9d47a4f7f9f05442105846c20ebef02fdbcfc828896e12e1e5a616d7010935e85963eae2e0076be3711b509876d2a4e1e9b844ab450466034611d3b22d76e15cdb020af34bc7f8ac3e122191f743504e642fb3439296d216b4bfa011afad8ad909282c10968af600dd7087fbd2b89216e567daec9025ae8fb4d9d38c1a310a1704eb08c48b2ea268c7a67ebd9437cb4933186d0f0170475df5eb7a68c0ed3a77ca14368ba5a44f039c3540281803845b62a4740e3090501271e40f7c047522967a0e83004c8c242028d988348cd885939ba3e474da1d3f56dd2768eaff7f57c62472688237cbbbf851c210a8dee99422c04e458a38183dbf62587e691de748458ee08aba9d93c9fdfa735dbec4850f6ad572173f4eca80407118b6295cfbe71e0f05cb22b697ecffb58f252e3263170159f49cdfd8c5b7c20d35b812d90a5d5baf5598ae4d53b74d57446e09ac00d610942ffbafb67957b08e253ff1355868fb3f682858ff8eaeff640d3ddffaf1c83d8dfbe45a1c138cda92dfe43c3fbff77be1b21e9887b6ef938341846484bf6e28ac584f42896a0e5ff36796aedc0b90bb45c5524c7a19384959b0ccfe58471620f3e8372868267bd4d8537d00170c27c68a0c8f9fed300bc291ad72e08d5a887189d05064bb5da6ed1280a132c8bd7a39430085f0d6806578dec9cbc6b3a1d8fee93728905b5cf4683908ddd3ba62c331af21f0743139213056f6f49590a7f0c765f91df6c6b1a32234bf9b57b605310380f8d4f916e6e3835f4b2555b896b7b67f9d98da1da95eccaa9254cb08c5fedf96803457914f5c67ee4d1c7ab369434ad85bd3d0db74b5de0dcdc0cc02ba66834d10b8fdd2c44280c1464a36c38a8f0e30f901a6587ecd9ada1d462c20debeb9f0c1af66f100335c0be93d0e2d08a6305ed738433fd688fc3dd485bf18ac57e27256fb54f261b38387d66d92fb71c04034f2a2dfa08e340bca8e4aa25ec9bf8fd16439dbd511e74c0175946027a7333b620e452854586f93406db70bb119314986e6c666e4a84455032a088067be4460b37945b8a6a370e4055cf624663a13f6a4ed90201b14be6ea209e4166489c7932bead582109886359e381220994815554a7933b49e0b6e236b78d478244f69e6aebfe72edd9b99946c724fbe9dd95d96d5b78996fe43d74ee282936038ba5a17923005e871695fff25a6e8dba18c81edee29e45658dceb4b82a8487264c6bf2c5b25eb95d6c683b220c81240c38dc659bba6e5203e52a7aabb23e9cef15ce2375712bd993c750dd61366be8931c41556e13d48e405ecbdd0032cd00046e906a0b9cd36d070d6c083674b9ee0456eb57ce4b665fdc639f4e31af5945179d53e1aec5abafe9a797037589fa4ef7ad7961f4586ca1aafedfcd69d670d210bffa7bba5cad0845b138c5e8f48e151b0be02b2440353d258f20764d4d2a9df0f67bdbf28024842f53662d70f4ed569a58134ca0743225cf9985f9e656251d4369d00c45363c52b74129395964c8a9e4d834be185a3a9c3129ff52026293a34cd7c85512a6f1eb07e2e7a06f6439703f2aa6237632682c2340c399772d6152a1beee8ac6709e0a21e5917a9be7bd53d5734671dc58b3ae049233859ac45b66c75c0392e2f98f4f6f85d89a3e35a82a57b51988e8c477d7a87fadafbf644410e860ea3ac591790239ab49cb16ee0e142c9fef995a7c51dc1385ab288bff78e48961153e3eab70c26a86623d0b63b3724b5dc503196a186f524fec789582188497554aeec16fe936c1d47c4f1d85e868532d84858971a2a8eca7f2f5e53c47756de158520110966ccc965314db0e1550d78847676ec56b12aa2c1208b1e05087a802db4f7cba591e88a300ffdb5cc7cce897c6bcdc2796dafc159cafb151b1d0e0128675c0ed578e76f2e62b19d579b49ddfbb0d60703c50122bc6001819a6d61a302a722e1471cf1608e5e57a75be1ced8b19a306d2241af8b511bad705216d58ef6efb8b814e4201304e00104893d0cdfc2605ff3ba19629fe5b72ba43a3980d9889e5afffbcf8686266e1584c24fea9248c0aca20517347f505622286e7ab913c6014abbece4c5f13ef5ed46b29657535909a280b18b77f37c62f380f81a2813d0924b0767c00436addfc63a5925db12618b9e3f879719c9bb80406a802930b952dc1ebaf8297f0eb77016988d158cb8e7fbc646091a2cbdf728482b04348446f50c7452347a3f2939741e56516091d87ee0395eee190fb59112db6087f93d6a65f0e18a62127fef8067f89067db09dec7a7de7965c2e3835bc9657f02eb43a4f6ca32263a7e34c8c021a15e4d47e530a3e5a24582a2d26a1573fe8aff7d554a817fcb2f2ae2bdc15c5c23a252578beccb50f467d642fb31758a8a25e19438e8a4c95925196404fe9b5f11487580d9cd411096c1d6478550a4cf53e922b62743c3542cad1aa1e67d6a8bf4ab4a1ec67548edcd3fa481fe588ec6a07a0c54f4a73828d27818497a3f5b329613fc573392fa5562d3ddf56936acea38bb0bde8d6d71559ebdb3edd25b50cd720998fc865b70c50a3ae4f07c5430690128251697e56de7c8a1a2c5215357d8fadce5e24c649b6e247e375260a04d6c1b55ac32b078ed2ee8db4fde05987c16ebc7813ed832209b16766009157840e27c8b9ba243bacf0656c4059440f7d09032436453f084a493ef0e725e2ac1134b85180182cdb229480c717526a1ef3bbc376aa475f4e1f52f13ba929ab9ea18ffd68c69ce1b164379d6a1a42f4a7af23036b21225fc2766f6e5a06356baec6e4ab3c569c1205fed4b1035d2a4fbc8e6c81330a74a9163077508724e2bec5bdfe02571cb182ee94bfe7db1e5c7cab8a28af3c46fce7a13c524fdbf910f8638142498b6723bfb1416f9cf1d7497a5eda71c95bb621e14d5ebc154ff1aaa9dd7b1f4eda46ea3d5b5cd82e093a2de540eda1b7d67dee90cef1d7d2d49cdb7887399b4d591387fb422fd3e928ecefca120089819c4139a1126eddef6d0b5d6f9568f20bad7773b0f3c6757b12819cbfffc9284d1fe1e73895142e875a0bcacc438afde8762bfb338301820b1a17006113df335739d06a39785542dd1bff452bd9cfe57ce6e2595b273341b455b96cb9e19aedadb7560da321aab03102a620c6e11a4c4ae1337f9a499f4c503bb46421b16bd793cdff46749dd936f9fae2fb7b013b4a89fba2d73c8e2a9c129964ca4880ef8489b92f81309668af4d895c1c9a9d5f373c5f3a25a1ec54d19c419918268da09f8033fc234a9cf0d3f5b5597e00915cfe7b62b4bcde89251fa14e27f027bb342f9d62dc7b00099c7411c381bd72f5c21c82b8f703c7eb962fa45faa154b73e2471bae165c11a0a050fa76cd7dcf21e032a5d53f537f700edb6d0d53a29139d71ea7409f062529da44f03caa4090baca7c0349c6cdaf4c4a88a822f6a58e383ba6be6a2010f0b71c807c01132e35171d517ee37cc07ed6f271561f48f8abfcec375056edcff7ce8ed523b161392bbdb11a5ac01d86a4f694628b2cddb320da6b209a6b9fa1a69b1f62efcda256edf9431698377b28e84a1fbddecb2fd1fc5ad0a7da496ec28c8dd8476c2bc4f5fcb0b097f12ca37e0ebf922b1176c8f3bee52bac9834395b711ceeff71ff9a9c040937794023dcf2350d705717f3f2258a2db3db2ff51320f8362aa0797189804d1c1270032443efc10d1032ce34ea0cb45933849359db01da062c3e6ab3a66a1793ff99ac0df9a02ddc0d6a5d3da8401d844381ffde0b8feeb7ee6616244a27dbdbe16b4e52d23ba0e33466dfbc491311981d64b45bd3b6577a8d2c180a44719e79ae605654463a2fab8a9184d027904058856dbdc6ebfed7ed565c1952158f794a0f6959500cf06427e83e393fe6ed318da1bdee0a215f3a85f76111aa3f6d34d19d3d44b72fb6b35b453a4ea3420a9317d3252309a72cca207160371bfc07efc7933306e693123a3fd4a00f2841c92d64e40991c4bd8d2e70e91220fd231703ccf3149982762d6b1eb8cb68922a5043824d07d6f5de7f40e9c07af4df5a166c68310988fe3fdacda984208000b914b4a162f491a4a0ff5c9f61fa27ad6ea4edfe442bf05e72dbfb9dab0928c6bac75cc8f5159658052ca8f8a82eb0c7d647ff469bafdd2c7aeb35ad3cb75b2473d26917797474a3c55207f9b616e904a55227319d1aff57e17ceffb3550b9371903f49fec8442291783977a4533c3db6c1e899e94726692e27aa4505657148145fee4557d28b6859e88a08e25ced0bcc16c8c6b19efa5e8ac9b91073f84a05ab0aa7e803516ccc4a720c6f8b40cda6ea1a2fd256b73736319e2855346ab55f1c9344909818588c61e92d73c0c8d5eeac2b41efb81b6cd37b328c44efdbc14b588d463d46b5b2bea6cdf5f2b280ba9d52b3d85fa19ec836f018942fd4dbbaa55a36aba2fcb34e31b00e911cee97b61927900f70729a1473f5a9f26c064cc7a88f9f1f963c59ef144a44b65281cbd9afeb47b5c2680144c65a9cf76b8799e4018433d37e7e31bd1fdfaa810f9d1695132b7c439ebbbcc6badb78a9f985216f309a845b5ba3eaad25c6a15abbace628fc7c17256e999239af8cd2aea1c57bf22125cadcb3dc595badc535ca9cb9ec095baee495cadcb9ee08abab87d65674228657d3fb779fa3944de3c43ad88411443b3fb618d100696ff7e71d26c56956442007708d14f4047ab4c999012745b79cac6df8593bd023265d866f9f127eea074a65b2c352dfec92f2edee45086a666c43160831a43b821c899be9ac37b5d6336f531b141d6cb26c1f154118c093112ad2496100c44aba8c7460b1e731e9b5acee112b51c3657a46291eeec01c6ce46d98239729638bd12849acf24b61fb29655859fe1445155d5b2b3e390a4cc723923a45f3cdaf80aa48b26aae263242e0fe9559a854a78549742b25724ced8fc3d518197e35c288b0d6c963e7be4be34800975d01ebee6d94807f97a6a1f73b3480838341086c222b95deabd35d5ad07a43816d02ef211d43c7ef8537f93266cbea95cfa1a1260cd2162f3e2ffe45d18a71c5b9c0965c587dbad38b44c9c603c2c26b2a924e3fc8d656b3dd5df0f4eebc1a620c698397f84d28149faa1370e868a9256da7d601f21c5ac12fc62db1d3c6605eaec240940da52b6499ac325b5df1abb51762dc3c883e2e71402615a4adf05fe777f1b37a80fd9a9b262781bce35e4af37028ee971381c634dc42c6d84068bd9a58306b4550c8dc66acbda8447b77b0cef619f30b0637e17f588318a81761996f494a19ace6d88d487b012c948d81b0bc2c2168859830aae6cdc77c22c20eeab8ba0c5f3140cb09292d9e7b3dca93bb545eae1f1933e864c1f26aecab440bebc93c2850790a397746fc4ca9b0c42458dba727610989f98c0f819d862f54c66393d95c6d2efbc1ff657e0ec51779c70c0876e653756c363816fcdc23b30ca1d20df1b2de35b10d1b427fa4da20502429b3c7ede07eb9df4c334725ef176713daf2988adeb64d5d21147541cae0ca8713d6af73e818a0b96c27c7e9ade1d7fb562818e51424402f751d9a24569075be04cd5812795b095bf5fd4b37d4f939c2cd4552748b01dcf00dab3db307e8d9822b71615a04e1519e9d08fab7599a320084ff43bcd39f8e861465231d34e193d22665d2f391e495d2d96eceb412a68affd6dfb83d2e2d328b66625f12502f0fc3b9777b2a71bb0b2dc19852f6e5901b0b38a7b5415ef6526e1800cb553c59ddeccbb2204b832ece67726df2c887eb6fa48b66d388a7790482bad77485eed1fbf6cc2e49a837a49867775b018bc999d648760ddcdb9dc3a0a6031c36eb58e8c62f5585d88e9379e6bddf6b2eece2c0314d4c824014354c0406cbae6509637c57b6979e63b8832a740f8797d40441f58dbb942e21a315c1870f15b486bd70c9a1a9fbd420ea6cb1bbaca2c7fc48407b9e29d40a0914ba70d096151f9dd1102ea3a22b5131e346f5e2178e3f878dec3e2563ab2374d9361f58e82959fb68dca898d299eb4354fff587a8e4a72a3f016ab416c521c57e944d41b8e770c57934da6bbdb079198ac0fac71c17ee8e35022b3498977451c24f4f4059b38057262d0ec5cbb4dafac136b3366d760012017c0f52e8b92d683aba00875908a828e11f9e38391466a1c1558633c54c0c0f4d922749b54114db9238015f88f8bd3fb41461415b03916d1bc8fa435b1ace11df1082c9e9982a29d1929b82f6b6230e79a00c8d0d829d58d166195606c6a0888355a2e6fd206fb6d3f1376c22d8c553a70329ac89540811425313c5e768d11f4fff3c92011adf958155cad75dbc5645bbd8ba8ab8d47731e5a9cc44b45b5af0142d7dbe5afbbf2566f4dca736ccfa8d32594f0bf396ee127a29fa025b1ff8f10bb23eea6de1ac83e515dd802b1e8fa2e4d7c1978d0d51fb8eaec7713bc155383a353e96a9f989af7bb45220bf63a0a7c39b4435f7df3c6014a28553d63b1ce826347ffd03cda617a1fb30f31282d07c4ae302d1e85c8d9af96ea0a2e37c90c6d2f1630ad61c2e5513981a3dca75644084bfa99f2484d7cbfae2e89cb84273cc62d64ed750b7597495f208dbfbf8532e8ab2328db485f82e039a32371cf0462ca2b688fe84cf1af3ab5c94180ed9b6eb0e0512f85bbc60d00fd4f4719965476e83d05c2a8ce80f3c0511d331e9160738489202a6a9c428ba68909a368eb686cc8635e5882923353987cd2521d3cabc44498661d6ce280deaa84dd1356c932d34b1fc3bc8e4929c3af31b649206c7eca72ac8964b4e9c506a0999f86ab171c5bf2b103cbc685c23fedcc2417718ce64c9f3668cd1b62d71418a85764463b444c2d28fa792ac985b65681d43095e3930f917840ab0b044ee344b61acdf6282e86a626eca47ad7b2911dcae1aa65b9d25cdbe17bf31bca206fe924a451d939923b6cce4658803b7c220db7941cda7ede792776793f106001a709b177e2b2439825e20b37376f12b6fe768b7320d5fec5c4d6149b2747594a69556743e9b53eb9a066f0e062987acf63afe5907a9a6d5dab19c61a6ee26b3787933950c7cc5099a9f24276b277e64d3747990ef0ba54b69fc829ad78e8358272b77ca647aab96cfe9476a17f3c4c818dd441ab1c422427ec9f3898b46939be47355a68a67c75a130a9fb44939ad3455d5e28eb901b30589553fe1d68e76130c10ea5e889876194433c08a0326f89309dd0f7132c86620cbbec15c23770d9c086c3651cbd6e494700da267a32746730a8fc79e351e4be8f04f4e83b81ce089cfca280ba335e67bde082e230eb553b58aa04852ebd525aeeac71521a4a75eaff3c95d9ae88adbd2fddf829b0b4cc4db680dd3143a02d449653a24ca647af1fb4273b1f96c9cf6490f44110b572b8ed67be11c4e375e2d84cc08f9f5f30fe9c1ccb192bba081875f843e334659d1d992c13ece3413962726adc2b54ce0b58228aa9318cc376eac2e3255b966e32288ed313561e7df7e1291bc632ba329fc74882f7a676f958c0d16abc8ea4c8a5ab49a854c45347b6ef1cfaa48e9df6de5e9120e49898e4f5302726b568d791b4af266a68ad3d7d0a6fe962fee8951d83325cb9ea8419a94e2d36d82a50b80bce92be910a81e3faa412fea84889408246195389d899ed53c88d78733f443d68ea84b843aaee3679161f01a2ea7f7af29e7b41d287d55ebb8422dd1f2da328e27e44410781cc7cf1215bab671c922271152b4bf414b6eaa937d8ea744b10cfdedd9058889de5edeb468935475943c0ae2e16218195f9b4abc068bc63e639b179bd39f26369da2e8561a24e72de1a54986017bb8d1f3b65198efb90e9d3005684637c64628e88ac285b6a8dd99ff977e61cc928347fc2f2eee2a2a06d899e59b1731ee5c24f7e15d1592c674d1def9d19fb31e3b05af61bd95f77fce58c15e54ef80e279b9f614949130bbf1807c472b4960060ec5c548f050d425860f0ab84655f81cd60d86873518426bb928123f3cb95c76c204104ca6b5e544db9e91623002858e7cfcaa443eaa47602ccd859e30e7d513f6400ca067db169f5fdaf16ef583d5eafde9aad4bd7bb65eb62b75502f502b336a37016d06f9b225bca8c2a6e1f2737424baf5a0187895735b8b4f53c3e982c63b665d3a250692c8eec53e49dc86a1d6d7ba2390197e286b99ad2944b837c8865ef6b3c2bde16a27aff0b98ef14c24de1093dfb3e4c41681b6a544fab1262a7c39fa939b6fe6921acff0e044b35bf2ff977076ff5cca97870be7555a1bcaaeec5ccf7086fd8e0cb8f129ddc51ea35c5aa112c9d15286d30dea2dfcd9a189c6a46eea1adb42292a36d49d6a3245a3f94ee131ce6b8710f8aab725375be5e4d8cd9f50efe97fd4b76542a830cc1c2d2ac163063a4b5c84cdcad873c51eca87216e10815083c1e0424c3b764646f9e801eda4d23781ffc80468380f63ee00703785f1786511c453ab64c848e698dbb656ad4740a29675aa008275642119c32b2a753e2c9316d7ce81a240b9dd76054df3c56a431d58fd10034571a3a76d5a7e97561e30e45b696889bc325b3e90a889cf442c73384d0b371a2c7975f8585e899de993a6f998e8357649b36a607ef1104e534176f079b431ef28a398aac8c63f7294ede7df7289848a19e17794b242f8fcb1b7d5b44ece8002f4a8d930363af03b8cbcdd4d81f87200f7cc4f6b924508ac6672ed78ce4ebb4db6ac631949fb64238147c6ee9f5778c4557168e25aafbc8923b3d59c07faf2cf2422d4bcae593599a2d1e05991a634661b2115a6cdcb21cc373e85ea4c74017f580c1ceb0fcc670b7f49c9b09c12eb2b2ce43909a7c96b9cc4ac7fc6d0350f05f82a001c5fa538d0b72729d7e58290da02a350c110e91f0e185fe878128535efbefd2a14102b76788e216e36b32259e66886bc45e42eeae579fa0a8ad4eb27b22663033c9c90994f6896c7cad95aec83218838e91ed8b401d3c8397fae6c85daa6786510e06e4bb7203307d5985fe6ffa9b555766da57f54dc564281bbaad99cce3719e5937a115f9da48571c11878118e303b2512abe3055506e0ca36a3d2dc3f2f37b142e7cf0516008cb4966e55a137b406b1e7b3bca8af4d2433b938343a0690a6fc1c2918f4145c00eeaec5e5eba75efba7e242a632b0e6fa9731e89d8cc81ba4350182058d1a4a28ddb8c85dda3902b23710dc10b61ca9fe03257b0615eb228ec45076578a95cfa58c727bc9b465c5462ac87ca453931431e41d273132c099ed23c0b928486a1fcddc0d9612a18b4e407244ab08ce61d67fb52876e7ed213b6976d28505f6041f68ed0e0c3ef4bbeeb3256dd3f5911d86529846fce26feddd100a4ae21b6a630107d0494de64d477735fa3ee147b514bdd4f0ded3d6036b1da7cb9a1bc1c991b543c412480683d9130d0c60c92fcaa6349faf95d9374528de5285d2694042725c103c4dc35c60f0d38b22749f744225d21e380df5cf5caca14c6e0c38ab4da1f860c422a544ac30528bdc962259a0c6e82ec842be4e1133f82a0a80cf4258cbd740bf041aefe337241c2c101f94d287ede7d0b8142f389de3e197d333c59b76e1acc00e23f4f40d9f7a73ae71b0afa3e60b0296b8a709a574daeb2f9a9889e670c593872367e84e3ba249f9ea4ab315e80217f087184184bfa75ae33ce9b614f0881d2a28fb2f4e5eb128b93ae9100da06bd46d50f5f5f482cce46a1b0328fff8c3c0b0ca2fed7c77b37d821658efebf0698ead0bbf7e17ee633e9a4f48dc58612565d3b64a1d369496c609b036f835f8e03300cf262468e576d54a706020d4ccb5d3d1a3763d7ca5ee985ca1f5f44b3e2bd374de93c2906e885541297005a72076b8f5d57096f5f6d33e1544ba832036fc70cfecc203f90e09a66e0ccb380d50ca208edd05d1a08a21d525a834461520e3e50b8257fe7d85e80cb878c61a6b0c0ed46c4da250e64acc0034ea3092dc5973d39dde9c3952ccd38a094991b1f40f9f26f16fa4908d0d01754a13d017b9d7a33490c4299810a8a94abbb023e02b426303bf91b99e1b81e6e8607b299c2b98e825b02c00038bad5a471e41ead95b4f7c277a91a844dd35cf712435358938f067baa1b62b5c2c5f43f211c473b00fce5705210cb98f6b126c1b930f089b176ae4f9d9eae689499fe438f1b0c511f418ec16079d002efb06336f6ae4fa5c1f79e0690663614615feb3b7932f4da9cefa5841efca2a14a7802c57bec43e6b9db43c90c5351055e35e88d44e1bb5f8f8355101f2f81d40680d564ac0c8924d8e75abe5ded8a40f2dbc71fbf66029f006e0bb1ed7e285805ab1b38c7ca38e7e79c8a2885d8831ba2dd69fc1b3b44f382677b70933589f8c53fc3d6eab911d1f2a89d69c45d416d464eccbfb421b2d07c2cb9ed16a3e0a556a70d02701406278402787612e4fc295e940061c2bcb6ed7623cdba0ff5bb33f246cf00e90109741e7734ff4bb6723c32b4301822aaceb384a9d069698b2eb8f4cf7afad5218813fd88103459dc849252eaeb68aa2b3076b23e9a5c744c6587b4e2c2d3738192a7edcfa2ece2150ea70a4a40550ff1a16dc2b7245cb5253ca658964f5d74e547cdb44d1a0516a888ab8f9a0365166641296665a46f9dc1a390d70ee1c1b15d2ab18703404d21ed252fa5fe6f5f78d2ae842fabf8690e21d0044860f18597009ab1550611fcdcf36012bbc5391765745a94f9524563ba2dcd4dd7c7305028279edb5113100d27a3004660f7b884986c09e2b704ec7d362699c70387ef1d4ff7bd16748da955cb4581a304dd3117910b9ee80addbe8410b2761169c06f2ea09a6843103bdac11c3f3081880c14c4208fd7477cffa582469f8858a2b4fc0ad54cf57ed71998ae2afbd09ac3d3139bcabcbda481d1fdb10e82c425fe3951c867d7b810c252488d65217ce5950573c92e88ab1e0768350a88c7a66a56d79fb5ea666bdc728a780507783b945f32dfd76abc7c42744de0722a3c69d2f7abe1c19a5bc2dfa8ac606f9c0a5095ebc909d4d8b322ac6a39411a434b8a50db42f73fc8f65de58ce1e7bc8cc5bac9f4b42ff93c9f716627bbf3aaaa47856e6c0d64e567ff73cfbfe2ec8881cd4d0eb9ef037a76c5aba624d1dfee684f7df2b62bcbd525bf45666c575a28bf270ad147469c522d93f9d059497601ddaf1fcf747781b819c65b1d58a4ba8894c9ab5a275ca0993d2044a528908b622b50db6061f715e7825920f12ab842ec8a82f1e50c7c8517aae1df167e5247aa4baaa89bb2799ba69b5d809c88fbfb6aedf04f58f7c598bd0f269e6a29e6241a33be8bf1c63d7f99fd8cb18b626db729daf110c57c0a7916986a00da434aa022ea988a2820578707262fac81e2634c8c71a132f24bd72821a5ca0ff6ad0de943bf29f958fdb3de6826b530ea07678a144de118ed942ded3ba9c2ccfe4c93c2b15fba6b7e01eb3f8cdf84cb959d2f2f7529746b20e49cd7cc92525c955975c5829ccd42c97be5de752833d5838f17de97e404183d07349688074b32f7959bc9c23ecd818cd2a1ba267ea9bb5e4a7fd630a008e6127c173361ccc1a54d78979333f63b54623057b4cc0df33aaedd135335efd4721fef9409875fecf4e0c74fed1b1b7b9057f8a1fdb996207664938479d706a48f112f67be6b909143996fba6c51dad88dd05f682d3372acedeb5c6e6f4fb584f57256225d52bd6f672ab838f0d9a6625e3542e0d4abea62d23571a8e8371f7522a42c502deedb255bba518d460d1e2fde78cf5631704c0ee52e1728553fecd7efc813d925bab9f4845f592362cd61cb6e919a857fd536ad53dc3b9329f58c11859dfdcfe4b095c42ccde2d65a7540bf45a496f0549c1d2ae781bd565b08101468781667902d730b03d3fb00c6a42f790abc9b8223fa87384142d73ff5cf18c27cb84153857c6ff0df6fad06da71768de26cba14f2d88295dd10522e0d9fca3562acce24b5fdc8fd5b0941b905cbf55d4f4890817994429b0e30f592849412411c03bf6a002c1753829903831f410b2d90618265a43c731bb26256451549ed07979e974e035802dc072fb0d85b8b36d25a989928ab9962b76305e5fe2546a1f81d9e3be49aaaec0a739de6654e3c6f3fb1d3315d671ff56726cadb097892fcce5314f61db186a9864404148975f1095cbc08d154083335abd9602e6b905a353ce99f8452ddef50324b3d158a29e5c2b277585edd3395a99b7b42246193dc641687b2a465e1c194aa8c4c1e710c57917314345e5c4d435d85fa6b28fc30cba54aeb099d711c6024711dff6ce8922f7d89390cf9775fa3a7530c17d1ead49a34823cd1309e320775e2d826382831f0963b3a1cffdcc4d1e5aacff7d95b343c8536d34e029f820bceaba87af6b1f13db77fe60f8fae2b7d032930807257202783325fb1554914414d40e65562050f77a66c3ed6fe691548f85f97f301dc268495ddd574f1b067f3b8548da95e44c21ca649e365a8b7436bd0491bd71f05c8a8e176fa5d6f3b099a7885e8915f13b0f001748325964b031710ea53ce39ea3859b7df10e144f5bed6eee02b4553141869911614ae22027b85d9340c9626e8421e7ce9d007a3f0acbd49d183a20f5f1ec5cf36bb57de766c4b891bf50b6ac1c261d6094bc4f4fc03ca261dc3bdabadc2148eb6babf969651e45f723d1ceb2dbc5003700494cd1cf4235e9e292d860f3485c85e8e15f04fd520d26891b9d078511b4225429bbedec7b955427c922315f65056763535cf2dd20b1dd697b358ec75acbbe87af755508732095c85ffe78cead8b70a1dc0c9ce351697824507cbcd07f42fb3858c9d8b87f30328fe769dc0a6dc44bb633fc3923999fb3ba2e0d69d6bcec028ec983f55626b6a299bb5440eb24a749393c96e7c768762416391081db812c582027b79e62e1f17728286379902377d4fdf3eed86e8337993f879fb54b1962f8ef2ee02ddb069f7f06e48ffbd9ae649e3ad10ed22245ae58b665746645568bb99294f479864e2514223c00e415497ba1cc874eb36de8aa4b776e711d0c0dc51c5ec815b1cb4b3498dd1234e9742b26442262745d154764a587472655c1314b49de3f4e32b69e0bb58d2239d7abbd992c4a44ac4e2b90dd8a074948d97baf5248a017304093eff3d24deffbe581835e14d84b477d4f0c8335dacaa5a6162d201d1a74a885223ef5e9446fa29af989e6e9a05b8babcd9cc2d99c737f0e22e76da54a6dd69c186a217015bafce94734ba599106e608c682b2484c89823e276ef44983edb9a6244d080626b05e104b68066c649fce1b6784958e1e28e685f801c4d7e7ee8bbaaf406511a5720d78148a8744c7b04b182aa564da33126e8101d5850c25d39e791fad66248ec2edf9fd6af97a24af03a18e2247f871e74c73ab8ad1db856878891ee6788c7d77868101165bc10a16125d71f4f6566c3026e74d22d6903ebcc723cd0b04276c20644a6d57829f27a13965c58b4e188f42921df05a375579eba72845ef5962bced3105db764b2447540b305471ee735d8491675960c03418fd5ada15714280c6a06752d20ddee073ed98335b86fc2ff175ea24c596b10605f9f0f696ad7f55a5359513d586a616303c88b554c28e9a5e87b80618beb166c14100fda75f9f3979a42aa955635bee7bde5d4d6d431b319bc132002121ace80a4c71c0501b4949efd29da2efa31d6175582915f1ccdba0cf08b3fb1beff311e4123d8b51441f572e640ef8e4d52ea9df0efcfe370babc592e5158bdf3dcab98e352b19e19204ce42bccc902da6bf97472f0fab2f502b4a276b1c4e370d0280bc0a8006bc692baaf06d34096109b76847e346d89abf44dad2947572e22b631106d8faf68e6026341712d733d1cc7e49701883bd59b19b47c95a98098cf8717712146cd1629711fef923856904aeeae0b8092aec19158772af3e6182bcff4b85a428268018c127ff8782a19edfc676123b7dd7b09305f7df1b6b4a47c5c2a2b2c9ea1773644bd6331003dede7620152dafb647eab9b6a3f14ae6c92aa583cd12942f2cfad6056502b03c394aa17ea3e9097d6e0449ff945e5f4061a690b71bb0f1cf5d343ea742d755f25714c9a98c3a3a97452eaacf7f5a75ea09161314b456eb0ca23c103c4d2f83ab51d76519c175928408a6e825694f1cfba9262741851addbbe753df3444ab576b75e767548f98e8b71c9cfd6ce3284087a9ddf6f830e392de93aedb0a236bb3207266804d525f88ec6039d34357dbbfccda04c51d69b591d045741e02a3a86c126002a8096b76139b2f13c6cc557734c2b7e52a73b7f80bd8181a80115711adbe5371fbdc641622a104f12aa36fe18d373181ba0f2e0fc8a5bc0be5da8ec53fd137608d20b05a21646bf1c5957e467898f336890eaa24e05a34fe40a1f453ff9d122b008e499d0df2563bf6af671c869a2e5dd48c5c489a6b22875194c5015ee61f28116b1618cf9af943cc77cc86b31e5b30402fc478e3d9f0b49e5a555519c302d71746bdb4775d18b9366a9f7c1b687332c64c183d715aa8f182e9e6be37adc92efe607d76a9a9ea62baa8aa2aa28148a52a92a148542552a15454151155565aff2508845eed8c47e48a87a41688e51b2297507222f26b0859153d8320d993b8c9eb59279ec965be4b6d7e40ab74989531ca2fc85d8031c76a10a587532e7b7a7f4b01101d61ee6d46f94a81614a2bb6933c767f7ddd03da32c7be31748fd9c230bf1b6a5915ebf6e8b1bab798d5064d380fbe83b526008f3a753743d0df8d7ef8e48a309d52544ec1646e10ee96891a095bb15733e07bd784cda826e01f63a1612eac1e7f03855129d23e88d0033a21a6f91d915e1a7ba6874fe8b585b92debd78453e4ea9a7b8a22d9a7be2612d4aa3d8a59cbec8aa98a44555340879ed0506c8b3a63bd428771ef52506bff7a744b1dd0cdb2be3a5e3c969d8011e4fefa44462dcc623097c93988fad43b07463477b30f221521cfe4e2a32c8fdd4e590b3dbf0e5cbf2c609f2dd9dee3cdd7c10b2fa83ee425e256ca5919e075fbb4d07615616b43ba2cd0071e40e4b7e4fd4c08ba242bfc7a34c259e2cf089bb71b0cc72b90b65d3bee7eb4d7792e74d38e757f82ef4eef0488aa44d81f1c1246200131cb49fb1ba490c692ef9b2902307ac7c287c12d76f82149bee865f9cb0a3c27bdbbadc6a75a61c13e22967203982b93065cfb332f2f4f6638c5142140216e10748aa5ee4e10239646ffc362d5b5bd20d81f5b84e201f42276f58836274e43754a829bf338e84242b65a28ba7e0a6f004e3edbae1f380b3d8cc7e190e1ddb50d2c53f7d8a8b72935e1247957de41c091eb8e3d4630afde10a3f4f893a79d8ddd84c70687a17ac2132b79deeddea175f04228d45268a01ed25721494e6ebcea72e420c4d8816eda6e4a0565286df060d3c9d1addd54cb7dddd55cdb842e18409c53f6ec8458ef3ba99ee99ee80e07607d8de133e20e6a2f82d065737ef7ce83af1a5d339d9111588639b7c61c1f5a1dc7006ce180164da3366a725721c99751887a533e031890ecb40c4699b008e78496091c719370905d18d48970c602c6e5c243eeba7e4941e138d2039e289787bfe37799c275b473eed1833302abba7680f442b0e6cb5d984d5c56b2984b84542b4ab5254683961b5985c6d8c782aaa3f4d933bbb8a373fc77b4519fc00225ad1b44d97cb2e5e3c85c39037383ccc98548a299d585f4761d5835d4685ef1013abd116efad4a9d2c528c9f2d77f7828b7540aaf5a0bf5f3958bd5eb4c36bae1e08b40b77e6ef80715b9bc815f0c5b42056da05c637b230c7988190541f8faf9c2424f6da788e387bfaad8faec31ad9292454e708738a8f5f4e62aa6c43a4b4a4c4f2b6874611a1488adcc0da4756406b8110dc690fd809a5cd1e276553e10222c5ba3a2074f539d7a38c211435ea210d56c655c0d06cdce1a9c1802120a02e5c353b4cbe036664e55691a587186f06a5f328f0e8a0cf7e38efa0d1683468445457f660335fcca418b69c04380e643cc4b0edc080066ddf1a613cb25e7b8b06fdb700ab913e58a8beb497a975fe2a06a8ca4cf30d091fe7fbcd2912830358e0ea026e15a1690291e6cf1a158037cbe5ed3e5e79fe4956a3cdb3dae39910538238acd88beb3dd0a21e14c07e05a708448b26ed17392db4a60ea7f7a1c5e5a8c834f982466d2499e87f4e5635af92218c725eafaab68d311a6c54b471a9fd31842e971b74c70dbb664b713aac9c6e5e2d98e55f4b52f071c935d2ba147cfd057fb3161916c3e67679248f5df14b31552687c87c6a03e745b00611bb8bc56d4609a6a45c30c5921cf089884a957c8a6cb8ebebf897c1d726968ba35c080cc11be2f9a54704f512b2078d916b159c29829de0494d6d2b54418c3560cac30f8f5444b64e233a75447f558d0e48690366d378bc32d33228ca3ea809fe626dae193a09ad7aa32d2278d1cc8fa60c1c5f5991a6943503f1a806e58fe833b758e052feba3403b302bc6a6625a49a08f5c86a6c1be6db614e71780a92731daff974d06fdffc97ce8180a7077656c8bdb402f464e41d7e53fbff1e6d10c82a999d6059e033c06cba964826159791dfdf14f3f36fc67637362d657f659006849511aac43e74c3b5e8e3357ffc2af008b7125dc8137c88b251ee149439a0d4e2feb4fb982a87dd43fe7d869a5d92219766d9a048a26c852053decf302fc36764a11385c1285180fc4a308588ca65e3daf7fbf463b330aaab522bd0e4ee79f6214d8e527b92d4b70c7fe98c9970c26dfb31df7a05acf51a00b14f493fe11074690ea69ecc2360715976012648c4c47f8ba697a039652b1edc13f06790de774f6b9baa00fbb879303481197c7d61046a1128d05ab63e948577e837c1942d626c43c2075b4cc3c4c1f85e11c30c270e4f980eaf0494d84129631016b6ecd26b07d1996a78497ed467c3da5c1cf9b086f02521c571a25247b3094b2bad7071c893abe81cf5a9d7c04deb5910958b0d818964eff234d300ec901da5fc05f187ff7c94bccaee70a0f1fcb9e65aa8039f3d6ea0951b94ef2647ae76a62f337e6bc1568edafde1fd2622c5936c7c93e7819257aead291c0223e23e40f6a2f3ffb710a7e74d352c3bc4aca77f441c6f9a309c781b27aacb865494c089ffc63c26c13f0edd82e04e22304f56ac53aeb6717e89db20c702976f0ab3645c5e3922e7d7b2580e0e2bb818228b47689cee45c22ac34b00a3431ea6ac16ad54df5e75babf5975adcc873916a78e1dbe8568608f6e9c8e89630b312e8f4626543aa17a5d8a749185515c05b1230e6c02b6e15f3c6f14c03e4870ef88c9fd4e33182757d68b8406a61f7e20577417a2f9607892e9a295e0f3fc09182202085850730e63a9e2760c524ef346e519af8ff0900472968ddd289651497242297011f9b90682013c434fd5d3b66021f245cabb2e4906a6c16894c57c9d84f09295cba68900797d5154e5e48761a4d0d8e6370017f9ba1939b1e58ddb7b313d6801a4e9073a61f06c9a19589f2eda86db9e29aac473e0d89caebb255eba6a7db0467c3b15f50cd5598d5bbd425c8c0246b83065c4997a66c97785ee05bda508c3cced0251ebe10949bc4bb4dc86eb728b73e83387465f558332dd7cf8d7fbda7fff63d26214561ebc1e705de23e2bafcb53076e199c445cc3acbd38661334fe47557b83eadf2098cee28926e22a354a40e7d4d61501aecfa7a4e951346524a96b24b20edd58ca1ea06d656a74933e369b3e5361bc795b4863cec9833431b21564f07f95aac9c385bf9cd15098e8f0a6f4a9292f18dcd0897f09470f45d9b1156ed211bf1082d3209c803f6205a0d3a86f72b0564ac1d3c507a5da1307769a9c6ca4b78998bdaf778a1cac47cd12bff7ab3cd9100fdac737e148731ab807234f7aa995b50b605d41a61e3e6a825069358292e4073865b6948abc1dfc08110ed3415ccf05da050cd01510406976989f0f50359ce03f4daf07650a9b852826db0b2e860a08aa88ea36f4dda661edb8ff4621e81098daf658d5e86290cdb8ea84734bce330205cda1464cc46743a9f13c5354500cf714690018e71af46fe902387067b5c0bc1f05628ffd55435a806e7f53830522f0fb7631d2cf57ebeb95102d0be005a83908d6fa77e570776bae9869a6b062b8fa8c30ac7baa0e78ac5a27252d910d6c80e4e84f3591eb7b38938230e18b4fe1ea28190f73d4a9d6ca030e082004c54b325dbfde0c74e9cfcfb7d4496aa8ea5c600957637447a590d2df35818f60379fd7d78c175fc253414bc906c893ab1d7125b4f5dd7bf54403a7eaa6fe0304847790f4958519f3c282f9b2abd7abde7c86d0a1cf10789f861f72d5ff7a3488f0664a18ce2b678c0ff0c62dbb930cb41174b0070b85a5b68f94e41d57c06fb4de6dd8d1bb676593e96818cdd9e353255b704b7c06d479b4ea61d2883259be1f3b2a0d9c2a1373ccd9274de0545dafff66031cc296e6649a66886f8297d07ede5f4d99751161c2944e98a4f38738a7dcb9df1ceb4e0bab417becccc22b32fe6317218e8b7a1fe17f39f0064c32a455e26e018b45bd9eb710447ad4eb721b01c5a2b09eb7092a1e14eabe5d4171e051cc4d046a9e33bc56106058b539e07fb0d485f3241b35ba56fcbb3465e03fc1ddc4b926ee62b1148044c21ee1913b29297729e2f809ff6c1b0bd40e57166738099558debfbdee6fffeeaed68fad282fbf7cbdaf5fcc76779becde522629039f0b2b0c6c0b9b5e9184296e644110a3488c2428158388286216ccb082195e5c7bc9b84531e3c9a6ef6d7a851940a842c70c26b57ad80c28ecf803dabe2d20f8272cf2996bf5bcaf259b5fa7eb6c870aad299a5ea7ecea72ffbdf767deaafa75cc49423e39598edafdfaa4aafeb366d8f75ad57d9cbd9d8349a6f45e1c1ea139f5cfec79d94d1d46f767a8edfbd4c9bea494db3e59a5dbf23a3bf3927b9a97677864cb3a26f67daef6c43e3928fbc2f6c945d9f73f5a09062078c2220b21d39b93cbd65a6b1dacf59321d98f268cec187583d7b026dca2c9eba5d733dde02477da1e674ba595954d7dd015d783e63091cfd05125fe9efb1bf28e3d60aa90ef9f3d9bd3a97792e3423cce38c93d14900689ab713427398ea3711c9d218571afbd5a9fead39a726d5b83bdf136c9afa123296e379eb7c9b67fb55718233189a588c566618c308b6ddbc749788a58c4626b71b5bc586c2cb7948b0c94af543f82cbdd3d0a46b6bbbbbb7bb54640c2f192dbf57ba8ec7ab3c56ddcd4dea0edeeefbdf7de4badb5d65a8bc13f43f31b8b70f610268ccc75effd1313ada3f7deeee2ff8c6c08fefdab33c57675b3d1eeac2809e1cc3c6c5a92d85d5764cdd490a786c0d218c4dd676aa8e565c25184ecb90d1bcde9f451cd8524eae35ad4d047ddfb68c3e6fd3973b4bb9f69d21d519f7077ff49d40766773564bbebbe06adfb1ab5ee6bc8baaf31eb4cb5ddd5ec1b340c65071d5c04baf6faadf7de4b674c44bc5628a03f789dd4b1f5bdeba8d5a1a7e75aeeec117f522dc827e6210281fbc4a3e62074c4119e08a4694e7d4d737029741ee1bd5804a294a4404e5622fb8a40399f7400f2523b7c22d0cf59ba0f864eb1098b4078c41fad9fdbcb751efe4cdc772355f9f8846c3b72b5730218d5df8a321b046f58c733c714d837f70f80511f4ec3ec2025e149bf6cee7edce3cd71bf524473f2ac64fd3eb53bfc6ad3873a483d639725d08641bfceddfbb224c7bcccff4ebd6d3c391868fba116c3c11cdf2bfe7c1fbe421778ab9ec9f4272cf209dab4f87eaadf852e276fbd6015276f170a852fd056fae74c1a4858bab7eb30884b40325f592e06e40448c635f17089644b247b7f7298904f1d1dd6452afd090bf7d3c945d164f2a026413231089684fcfd0908172b91fcbfb14c72d2fa983d54ea6badd9e745ba33b77cb218b958402a260cb471dfb96904252b2dbb0d9a60a8904f1376444d234afff2930933612747c415994f4ebac52ceb206a8af3cb5d4e754d26cc4d986904a2dbdd4cf2ef76b61919269a918920e63890f376683345e4d377dd5dd9a189356c356c35a8d4b87909d690526b48e138590d291f754fbb3a9d5dfdfabda3ea767e77689dc3309424e52e10739ab64d51ecd47692c21d9aab9ab60dcd9797f665c2e75a64f9befbee84708c501c233527093846ba13ec349a4aba93293462d2893b483b36b00496c02f6993091350974ab4689bae333ca2c484c14a18a4e22bfba1fdd3187e57f682cb64127f56beeb908a9061fe34cba6692af195e5644e5a1f4d2db2e9817e1002c94a2cfb34619c3669a8c8eefac714272d68bb1f22f1f2a45784465e7a95d088fdb0c87e78c47e0873d35bf6b9eb40b2a46dffa4604c0172e2a53fc1de1f493fa6e0e0442c0a94b45f3a3da56589f4e0d5dd8e4171b2304e326b96483447f2b923dbf64b294fbc3c81b0c876ecefd028516cfb05c168500da8b9c3c4573b4ca8d8f62fcc164c30feca28944860683e3161d98465eeb45b1c83a8e6132531264766135366bebc7df389972e4f8352dbf64f338a89b4ed694ad9f64f3369b7fc694ed9d6dbe08bc866b9a1ed9fc4f61793f2f7529cb4634a0af9e464eedaeed218440d3f7d7252b6d5278d22e3644ebc275e661a57e3a2bc8c2a6f4c22f37427897179fb1c46b98c4074e3c78f1a93a45a46151ecd215308a4e2be72f9ca8563045e5d846392c93185ea8b1cf3295a6a54f5a0fad4a74611c8c8d4aca9e22135246654f510f3333f338aa0957a22ad9afa98a7620f32234853a5748d34adac883f20156b762d2de28ff8b76b11511fd373d4079d09bc9934687332bf30c92b2e2f36c8a98f79996f41c968acb35db5d84021fbdb0da25c5ea0c80eba5c4e58b8d73fbddfeed65a4da7076bb52015272b75096dfbe26477bbb8bc6c72d3cf41453e411b787b117f38981fee61c49f1b7312d9f772a914f82245e664b28a84193381a9826d1f549548e24f69c2c278320596b7fd1dda0d536eb03907b32690ccaeec1532772a937a37674756d8625bd91d4b305c644e96b3ed033d89c204cab6319f4a8d616c5b9829f9e4643698aa1d954e7dcc0e1472a7e6a4e69cf8ea8993f6539aa3e93b72b29ad7592205c1eefb09244506c58260414abe443acba46d1f4ca5c09818f1e7141220483d637720effc5e4c7efcfef7e9f7a5e7deaf36813cb293fed3fdf5ef82624eda20252b4fb839d43338bc2139596d274a2a08b653a3249fd7e8c96d63d50ccd0c0d4d0daea1d426a4d65a13666116b6cdd04b30b43072982864d36557b404fa01b5022d81644edab73824da670e8bb67d10e807b4345dd6a41648e6e3c9d9ae522d8c78e022d8f5a2f008f579af2b5fec1a53e94a9f5c6dd71f693c0d1ae28ff75ed697295c107f4008d49cb45c44d953e4dff45330e3a2469dbb1a045de80147b4e9155c1cd9dc3e39d9cccb2ec9b6cfc96cdb724fac40cd1d9a5d511f7f9b22dae7bf35392be8c9c94e6e07a98ee0ddd12226ef40a1e6c59e427e9192eb08de401bcc17f9046d40489d6c9fa9ed35cc28a8293372311907a759052783d9a1a5f0e71d1a688331daf6b1a0d536c5c20851746c8a8511603bc714f9046da08dfa74dbc6bc7df14d1fa31f10de086f883f1f16b903dd9d47b7eff880d818b9a302eed0c09310f2b943dba13969816cb6b8857ceed06ca8cf1d2adb7e3d39d949b79082e6e585528b82e4e5dd91b293b43365c7b6b343dba9e2da760482410886d7b6300cc14054c7bc53301811aa02dabaa87db98bdab60f9224b9da81e2a4fdd54e6ddb5f894077efd0282dbda0a6cc68beecca7ecc5856c14c99fb2c91b6e98249ba42067232a0999736b6d58199b01a2fdc7c3969ef872f17379a424e025124db3e0d998036732854b2ade9cf30b66d083361dbbe09338fcc1968134fe2a994b73934e4a4358d6c0bda684874026f60159797a711886e212f5fe15048747afba1112f3bd076856cdb23dbfed5a69093f681cc9797d4345d5e52f36f9cb4a12b7c8136f096e306f965bab685d18cf689f72a448d413029f966fd76ffa43e7099324f9f8a9b3263cc48ed0ab499a951a64acaa98ff91334da486e0629f19d349ea1455981b4ad972d9b06c17230c9749fa02da709f99c2136db311b484956c8e57a2125ddb87123e6eb83376ba63c243ac3a15def0d879caca191209835419b0cb4d9557d991194d9559579d5abc621b75d5f6624d2f2f10467bbc6a21cd9c41f908a93f66b056de0cd495b63d320985d599b35afaf42d08693637360bcc8f73920924710ccc9ca831bcf5492d407c1ac8953238d124b656b762dfa600e30070d52e2a58ac4f9a126236935d92c479883de8bc4c528c92727036d1789e6d46c4473ecbbd61b870a7290921f6ad407c68445dee188d7b7dfc38cfa9cdefe0e455e2ad976865db328da5b284108453b8b988e937574dd6d4edf9b419d07c0688e7d4a73e80fb59d7047fcf16474845504fadec733c714e053118723272c6ed04cfc6be28260475e727f0a0a5212930505c54e3a888993f6839468ba839a04c9ac99fa980f92c5e8a0a3a0985d05c13e25e452f8200c1cfe10b46dfba03ec1d709848be9883f5e1a7768dbbe88b4f129afb0b4a05c5edcc2a4626454979ba1a9b1793d761e0d5cba71e1abf10248ae6cdc10439c1c1c3974a88e290a2c08e62605822d28d624681604a5c9b6a02dcab6340a936d615b38d9278df264db9346a145a94541bab673020c9b8bd7165081923b8714197cedea56669fb0e0befabd1de9a0a7ef77ba6ed4782b0184d41d168d20d1aee0915ddfba0d45f3b6734c4a48d4076653d43ef35724fb0c6b5929899d1c6fcbed93996cd4e7be3dcd66b2b1e54673ece340413ecd3829251b77ed93398542c248b42d77ff0c3f236b7aa3e9897763a019b7054d58a2ebba2e1431c6a2c98c7b22439cc2299f7216a884494735287925afa4601886c32c56585658585a585a6a118c720baa05e505210b3ed8ce8417a05c502e970a2ce5f2e2f2628bb27074b300c32f302f30593022e552c1201598b0a5a5a505269505212c7a01468991295d21acd50c9621c8a86454655c61463513761196a1040c065119b48b729286a60c59193ad8b60c24db9661a48cd7f60f710a686a686a6e5a1061d77aa97c8d4d8d8d14b096bb2cae18366ff31ccdf966f97614dbb5d6e406a3974bda2827696868685ebf6461636363a34794d6257d471a980a2ebfb5d8a8730390e2f01ac96717dbd4496a86927ddeedc3196e17a3caa6578831655331b8d8f48a309aec93dc540c278841dbf5c3088050b8e20733706dfb8f6979df5a30c9488f8e97f48aa4a1edcf9a8107eeb9efc6b7ab1c522a0b8241a9dc404a124278152d91643502191498187ae2c916c02af9fd7bf8ebf8f7f8bb8e7f0febaf63fd7b2cedc80736b0a45d5c4eba08c55c5e4e3e21ff7671b908799924e6fd5d5ee078d6ad4f8e668b6cebb63ea8143607d6684a060ba4205a72bbb87a904f1d341e3d2eea13521ff0fdfb1b8e313199234d734469ce79a5b827086cfb2c3d108e688bbb4686224c21fbb4904baf8316a3659af8aa541a658e9cf4d7417b40d10c9c908421485102284093126e5e3743443746bcb4fa6e90cacd52b939492389c614519347a750b4a931ad6276e5a90f35ccbf681c1c3417574a8b0fa3c33f9d4e2796dfe1fab459be46cbbc681bdbc575c281a336e2a03959f3fa6d56de7f15cb2bd9865128e2608283098e23b1e645fde2bf288aa278ad356b3e47d4014547cd260819c8ee24362fe3a23ee13b8e1f943864b19818f511df86ab87e6bdfba3648e70b80e1c47320edaa6ad88aca9c79a9c6d90c8278d241a499e338d2429b9f4745b7d9e9f4f4c840e8c8388dd727e57ab9844f55627a97121aad1af6fa95e466b51fb6eb2926dff98932b262f9e20d3bd72b26a429feaa059b145572b6a0f6a93aa837a546f5099d4296aac425195541a545875a222a932a846f505f54865412daa29a8462a1395a896a00e5525eaab16a942b588ea1a62080884e8809071031cf0c0074220022295886a443da2225193a823a824a826a84bd41354145415d415d41654175418d418d419d4266a92fa44ad415d52a3a852542aaa0d2a0e6a0eea0eac5979f0fe3d48d6ac55bc7f4f9235abecfd7b6c3db75611f55979c741dbfe1ed13671c892ecaaa5860b51daf42cfa64b569839ef5bc7ad4f34cf95b34ea45cdf2d50a1de4ab4cff6b1dc4d72af4cdd71e6820bef240bbf0b589d6c0d71de81a5f75a033f03507fa85af471a035f71a0c9af37d040beda40afbe32d13fbe52a16d7c9d429f5fa5d037bec6f405be46a171be42a12df07589aef9aa4457e06b0d74ce571a680a7c7d42e3f80ad313f89a44e7f8ea8496c0d726b4ce57243a025f67a077beca4043e06b0c340c5f8df403bec240ebf8fa02fdc3571768d6d723da015f5ba079beb24037e0eb0a74f9b54833e0ab0ab4f935053ae82b0a74cf57237a015f4fa063f8ca8456c0d725b4cf57229d80af26d0327c2d81f6e12b09f40c5f873402be8e4003e0ab12ba87af49681abebef401be22a103f0b588e6e1eb117ac757216d80af46e8fdb508bdc3572274ebab4bebf044b4007e089dc38b40d7f043340e1f02fdf320d005f80f681e2f8426c07b40037d07f40dcf01dde385681b7e03dac78f7a00bfa271b6d5a7fc36fabf5aa183f82ad3375fabd02e7ced810ef29507bac6d7261a88af3bd02f7cd581d6c0d71c68f2eb91cec0571ce8d5d71b680c7cb581b6f1958906f2950a7de3eb14fac7572934ced7983ebf46a16bbe42a12ff07589cef9aa445be06b0d348eaf34d015f8fa84cef115a629f03589d6f9ea849ec0d726f4ce57245a025f67a061f82a031d81af31d03abe1a69087c8581667d7d817ec05717689eaf47f40f5f5ba0cbaf2cd00ef8ba026d7e2dd20df8aa02ddf335059a015f51a063f86a44077d3d81f6f9ca845ec0d725b40c5f89b402be9a40cff0b5043a015f49a001f07548fbf075049a86af4a68047c4d4207e0eb4bf7f01509bde36b117d80af47e8fd5548f3f0d508ddfa5a8436c05722b400bebaf40e4f44d7f043681d5e04fae787e81c3e049ac78340e3f01fd0402f842ec07b40f7f80e68023c07b48f17a26ff80de801fca86df8156d63af8c88915745e38a88c66cfbdb0c219f3a68e78a68dfbcb4b651e42b7f1c326b52a791e44f6366cdf1fd69d0aca9df9f06128d9a356dde5f462369bb91936ec36543c8a46dbc64949c365c3b880ff240bc06de5f87cd9a19787f1d376b62e0fd592e6b02797fd6cb9a3fde9f4564cdf3fd5945d6bcc0fbb38cac6981f767c1ac5981f767c5ac4981f7671d597302efcf92595302efcf9a593302efcfa2591302efcfaa59f301efcf42b2e60fefcf4ab2a603de9f65b36603de9f75b32603de9fc765cda0f7e779597301efcf43644d05bc3f4f913513f0fe3c46d6f4e1fd7960d644c0fbf3c4acd9c3fbf3f8f3c8acc9c3fbf3ccac6980f7e7a1597387f7e7a9595387f7e741b2660eefcf93644d1cde9fc766cd02bc3fcfcd9a0478ffd265cd1bdebf7c59d386f72f89ac3980f72f8bace9c39a3ddebf845913e8fdcb983579bc7f7964cd9ff72f65d6ace1fdcb993505f0fe25cd9aadf72f6bd6dcef5f225973c7fb9749d60cc0fb97366bd2f0fee5cd9a00789fe1fdcd973565787f93c89a3eef6f16593386f7378dacd9f36ebebf19b366f9fee6913579dedf945993f5fee6cc9a3adedfa4591386f7376bd6dc797f13c99a3aef6f265933c7fb9b366be2787ff366cd1c6bd68ce217c12d1aefdff3b226cefbf71059f3c6fbf71459d3c6fbf7185973f5fe3d306b92efdf13b3e60befdf7364cd1aefdf23b3a60befdf33b3e6cdfbf7d06494c8c4f0f856bfb5d65aacb25ff3445ae04b143cc8d820b40e9a8e9a0e241d493a6c3a6e2c17ebc5226215b18c5830568c75c492b1662c1aabc6426225b16cac1b8f8be7c543c453c463c403e389f11cf1c878663c349e1a0f124f128f8de756baca57495416954625ac8c9547a5ac9c95b4b256229549a5adbc992ef365129945a691093363e69129336726cdac9948669269336f3daf1ea29ea21ea31e584face7a847d633eba1d955cdd3d02fdcaa197b5c76e5a087416899a3205a46068496996940cbd032a0656a18d0324840b44cd20f2d633bb5cced025ae5b28056bd2aa0554414d0aaa20968959104b40a1601ad8a4140ab8e1ea055b21fb46ae600ada23540ab6a0cd02aa420ad4a5a8056d914a055b704e819970f7ae685003d43d4839e293a809e31e241cfc00ca067623be899231df48c2c073d33c341cfd00aa0676a04d0334837e899241bf48c6d007ae6e643d3b87a689a1790a621e2a1698a7e348d510d9a0626004d136b699aa3ad69643b34cd2c009a864683a6a90140d320cda0699264d0343e9a26065dd3a36b4c5d53ea1a1e5dc3d2353a740d0cbae6c8aefc77748d8eaec9a16b6838744d2d47d7e0e89a1bbac686b671adb40da96d5ed0364576e55f43dbb8a06d603631bbf27f2d54f3460ce16afdd300c3aff982f2b8381ec9a70e5a49a33b5ed27a5cd4a766fbe330229f372ffdc28be638a9658aec4ae62543a4658c9cf4b3a60a674d1867b8cf9e2a31bc36f5c10a6c189d365c363b2686443e572eae55cc9a3a68be8ae988b28ae988e2a44bc9d6464ab6fb5cc5346d55f16a199d430b1fb8ecd705d88558cb357f9e6e9fada76657aedfa686664dfd18e78f56f3d1bac814ebb7f12122274bfa4f6c6bf4dbd4d4213bba9c7421271d141530f332a38a07991c5af8c005da3421dbb75be668569344734690ed3ea9ccd1ae39b9c3ca68da729187af45d3e3a239fe3647e4d3c5e5e2b2e6bfcd9fb8c6c5e5e2fa51870dc63523751db451c7141b2e32dda70edaadd49aecd3f0d8b6ff8c767d2d9ea419e453074da553be72194dc129e4df3a90fc752459130817143468c2c9144c20a3e5af83a6a3e603db1344607c0157e0649bbb512dd5d7c93a9ed76fe01b9b96280d2f2cd219b8c77406ec7147bee23826dd91935cd735e19850417390e0382a36f7dca3689b06fc1c4705f5b92baf488c8c983bc1e6be8e53e4136f6e0c82db55d561d915a48e87a48323a060c6100b9a808123802185139430a10a4874352001befb446d6b1fe72cbc38b2ad13a43c810a5250c1881eb4ceac43124eb87811c10b1b20b56c4783a21c8052a268b1cf994d840bdb1ffb672938b1fd534574b104b2725168094f5ee730bb7a9abc41e53044cdd404d508368364cf00219f2854ca634e0085965c6fb6ebd378912b93980e2c32b2a5e30db67e15f2f97f43867f830365fbebf430219f38f76fa03a5ed25d430ff16746e388b5fc37a9192e0b5495b0c891ed9f53ded31bb7ba566b399623320d29e433743240a122dfba394f31afe63cfe9df6909cc79f4619f9cc34b6c8269be9369e5ef66a27241e9297674679b52362dbdf8be24939233b71d2674eba8ce67430ebc5ac69f260302f163bbda3a37d663b9e9ecc9379b56e34d9ec8a46947c9e9078b5ed7f4272829d624adc2a45bec5fde5711effaf8aecdb7e09de59903a53334244b5e21a13cb36c8677525ed33e54aadb4c8f56b12ae97cb889ad05076d597f3f89358c89c0df2995ad5f2595d602c9fd56597542142dc4b29a54050dc286408521652ffcc54aa9433a38450d9fe42b8b67fe5b87b39fb135229fb8eb588572935c9cd0f3927c0daa23734a0904317f2f274136c7f17f2577d0db99170c6497639510c4efa6456c46bfb8728fb45be755f07877a0df18e1ecee3af1a239fb8878b8aafa8ab4a164a0dbd11f2884e0f2290f8ca32c13dbc3c71a764fbef38dafe353cc9f5edfb701eae0ef7b99391ac438260e4df27cdc1871d3d30c6f8e9aa8eaafabf8308b1eb2d41de7ef31942db1f35b3a47e916f754f6f4e1d2ea79cc71ff524abec7bddb42773ea751c690b46f639a30527db1f9f84aacbbe13905ad6d657e225b8820312212771700266c11a7aed68d38d830ca278498b0085d1a61b0727605eaac62bd0de868d6c63f014e22359fce18cb8231c12ee889147a5ec7a73737313e5a3d9cc3e9a8d15472eaf231722767d82aefccfcf0a9bfa3632eac3cdd00f09d4e4883eda0e8e9450939b95dc13db39a2930d1767e2c72c2c18678c42e1159797979394d31627a4d312272226fb93511f6ed7cfc93ebfd947fb6a77cf2a4ceade8ff6d59c74e7689e26d252d5f2f9d1a0ec801ad9dc91cc12bbca14ed2a7364cb10edfaa215bbc6c8767521daa38bd07619a2c1fbfa9faccae035d8f55d5cd46765d76f117faa8d6ce391480b94093188bdcf43b5a8be520b4b097b9805e3151aecad644f1369819eb88347a40576b31d7c4fb6bf7f42a0a4bf7fa98c7a4f446c3fb98e683ca33963e936e259e9569fd3d64573b2f873ab7eb026f9681f145fd1a004d11c3f69940de589d3e0bd07ad663860b9fb939bd97d75be36d66d6c6c6cb84a6d424fd3d609c7196047bfa3b5978d0cf2599176ed3ec639731569775f4fd075a7cfbff29de9bbaf47b57be22694ba049581879aa3fbcedb273de4d4a9f0af8caad2d3d6ca772f6adafa9b3f91b4ca5089688eee3b284ea56cfce08a1e727a15e964a7d355a2930f79547d4f5b99b67ac02f7a7a38d93dd63738d9755f8d2a512d3a9974b6abf08938ff8eba264c946ccec31ef63a5867b439dbe6a8ecae43ba57600e735876c444c9e6dec35e90da55a35deb57b91a75db552c806eab3ee38c2dd8fa0490dedce7f016b1f8beef9bb97fdff77dfdbeeffbbef1f42dbe29059ae80e3ffa7defdff77ddff7b8b47d0442c7d17a0652fb871d71888f549913560fc7ddcc66b0ebb656103cbd6afc510feb1c3ccff33cac3dcff33cefb1f7b82b95bcf104127e0796cedff57bbcbf12102c25f360c1e37592b35cbd2621b70377ff701edf13ba4a21c4de53b103ebdfe8b0ea83333a3d6eaff803e2cb71f56bd5d9f5864375e20f489da42123d7f10c37879de4aeca0737c49ecdbceac9c01409b273f83b0f63ace92ed55a6bc771dc731c87ab03f1bf3c324091f60f1ff1185a2c407ff0a44375d1f2f068c52622d0da7c8683542cf8c5e52ee75bd0319640392414618c20c8c638b2f61383d43376b5547b6d0c284ebce91832d8b834c691effbc0708ca1318a682224be11f58c96e9f30b85ef55f44ba8486ed1aae3b44a6cfbae22d826b1c12fbd17a290f19fa4dfc06d4b9fb6e2cf27f2a8fb8e2a1bbcbf0fe4fd7d22bb7b8c8774e053d15f886f707c7942cd51fa0eeb7308259fa64efacdc9afef536e423a33d42124db101752aabc64519e1431a921a9ff4218f9c7fdeecf4a44803baa6c18293555d9598f9e78fdfa99fae0afbfc25265e0fe529fee2486a3758923b52b3b9aa6d1a7b8bca4372a5668db6aab3574dad35a9f06c5c90ca6a41aa14171323b6a025372c488c888bb5c88caad264dd9b5ba6c54a424d5a23ca1d55a4bef557c6591ac197a152f3dbf799197747fcf8d7e13dfbe7d511ffcf66d12d4a77bfb56892a037773da46bdc0454e42eed36f59d393a6ad6ac410ae96e9adc8030c2e17112dd383a550d4b4156a6a5f34c79e46ebf22a3609ab841d7292c8f39bebb54f4bc403bdb95c2e97ab651a87987e0823bcd692ee5fb6651a8b2c39bfddaa6290df78ec5c5a1cb99b5dd98e089a639fd35d113587fdab3ba1ee45772c676321c2469d2c390a4625dc7faa7ce0ef7e9c78acdee370ff47f89dfdf0b63cc9fe0c15313e9d4e27fc267d1a43f12708d6773b15ea5377a5399ccdcbce46da15f79cbe7192fb1d3e13847c869b7beecf8cf2328f2a1fbebba73b3ff7292f594655febab99fa1a13e2b6390baf173436ccb93ecaa7efd9c71487d3a9f95ef761509805dae9dc7208488bb85e6701f4407ec0e526f1bbf106eb3d09cbbbb3188dd1da81b8f2b34873b8d3fba3fbd499fdd9b1ef4eebbffd13d16dff4600da99bba51e5e3f4f84f8fdfa4c1c76ecb27595344f9fccd79e9519977042a46484831c83e621ed4f38e904f9d6dbbdb55a94f9c4ca55c58aeae559c84195f306ec9d92595428d279509117f847092464aa642863869a94cc74bb0567192a32b5e9dd11511a829842261db17991052219f35964a019d511faf86f4f2f66b3d3dc885d49ab3599d79584d2e027ddf8d27ada1fea44d5f415b2edab6ce8e3e973a1bcd71285e739a933654b2fd95f1c479ac453db43c157370014b25306a9135516fbf1a5558279a741216f15d340acc2d3a451bebcc493f9a1db92c89fca302ddffa6fbac33f17c55170fcf6a219f5456fa1e3778d9bd0f3f78a9ea461d216ee2967dbbf25ca2e41ba0b03ccb586734b03c8b6caf847e74fde8a80a55105525df0dfe076621d76facb31a7ad4279536d699acceea135a6f7556854049fb75b6c39160461082a27775bcac41244992640d72922449b21ab95c2e167ce1e48b275f40f9220acde179f5be3f10d65455fc1e993189c96d7180a03e95ac5a070b5e471f56b293dd23d12bbe40daf53920ac19fe80e49942acf8e3e1e8904e5efbd5077245494b8e58063a5e3ac63495d2b12b8bff873032aeff55d0bbf734cb494b926f7b400f8b76f8cef2b44e49f79cf5a81e9df6f42595e969cbe525b556de7e49d7235d654eea1cd9159d32e98c8222bf0df2499374f27f69a45967bb4ad9d25b1702d7f33a6412f5d21b375df973a57107cd396d96d8f63b1d2015e7e6a5c8f7f1735a47db5c21e3d77849c63d4eda2fd98491f18872d2399d5a613dfdc149ab73472bfad7a4baf8334e91399ac35927342560aed5af636b7d749b1b31cde1581c78c3cb759dc771ddedf00dbdd043a1720a29638c43d8cc4cea93522f5164907a0fba87d8fe89b78d228338446511c53d4d1839a7fe258a7c667cba399139afacb0883ff6deaeebbaeeb2b4ace496969696163b9e40baa77942b5f7721cc8a13a200b7a2290fdb663c031ae987626ffda75d6a4f261fdd66b83dd9b8a4076076183b86b7d4f04b2bb56eca64b7368e779b8544730fcc415f1a78ed77a5843ea992e87f1b55e31ee540052075fa6c874a429b056b76eef7deefa73b656d71ced5c7be24f87f14964831fd8b708e6d5afdbba6f350fb975935cbbf22c68dd4ae8e4a548366582698e1dbd4e007c610a9cbb775e138fe3380e974a1f188aa278ca7985a5a5a5a5a505e5e2f26285236c5464543334d4495149933189d0cc88914a2b0b17d5abaf1cc1addb273b8c263607a11886141b65956c1c8a613471c330f2a6e081a874c930aa66dccc387205184618a51d05d62d11156246575081c85a7bb9306e1be5a40d83ca0436e6ce006badb5d65a9b90035cc2250cc3eeeea50fdf263ef00b18e36a852a4625a3dabaae2b9568cbd4b4f5fd67431e4d5ba5a6adeffb3e1fa653d89dba9cc5d2e79c73f6dae22290eaf17fdc7bba7bf077780d9edfe1e007825df8637222278f50f2cfbcaa3623479c305274e4052b6266c9f358e49313f9b4b1f2f31287fad4f882ca0006f52a50c7022d4bff318dda9f466db028e639387f623ac3d9e203c37b5fa90c3befbda5a5ce7befd1324789e3bd3f511a58a350916fb13e86f7bea260d095e67cbfa39de6f85e475f4a7e9f43634a7e8f438794fc3e069d29cff72cd4fe1ebce1c5d135b46d62794073f88bda5641ed0fa8bd82923a6ffd3696449e02763f5ee4240e1e8ea722106a7bde53efbd91529c6fdce10e5b810b6050e453bed1933ccf91381287b970661a7fa63c17a4c8b555ab14276be84a736c0efba2be14d3909299ae6c8ed370461f2711a0c7a1f36ade97a034bc300a28005ea40ae80cfe4e4467608d96898d39694f4de4b34a017bb48dd9232bb333bbf221d4ae3eefbc6fffab3164489125e253ba53644910788b63109d9d73880d8ee7780611627b5f03c7c6dc851b1a2933d3d5fd520bf168bab257d3168fa62dd0d4b4d5a369ab8adf73a20ffbbd67fa1ead435737ded437be137dfc3e81c03b8810db64fa4ee4a1b38300b14d0fb68838dc6df33275dfd025f1e7fbab3d4a71ee8ff77703445cfb7b4f5f50f461ffc7f72028fae8d9764cc27a5014628d366657fee3f362a28fef87aa34dae081fd3d111c6c0fecefc1f12482439d6dec83c8d137528ae3f9b8dbc6f4f66f883710b1a36857bedac8f1cce0dfbf71e3aff873e341ab32fd0f6bdff4e113d99e3ec333dce2f7a612a8719e8a1f9070e38c5e829ae3be27b4efcadfd02d6fc59f95920d9d84f596f5558a9735aa9105c7137fe399bdf14c6d4fa22b7fbc1a4f9cc951f6c278a6fc79f4f595f76029147f92b01eac628d918997dde8314f45a098f79efe605317c69bf1cc34c633f54fad8d5996bebe0a8b421999b79cb6df01b99f7e7afbf2a33e2d0e4e4b84edfffa7432926af44964ebd09cfa34e755b23bfdf25cea77f81df252359e47bc94194f20a1ff3df232e6e5fd947a3fbda3de5d8abc4419c194c4bc8479ffcbe436f1ebc4f35231e49d73b5edb6b6b4adf8a7076d4cd77d5d60898ade67ef4da907b5c9947a30754a1971b3b69cd437fa354afb60cd2b543bafab8b7cf6d4e036274b3b7a9293279070b3ac8e933ee238f95788653cc38da3e3a45b5b02bfb7d65a6b3f1da4e2b0ae104bdf215f1941732e1134873fb5e38d29423e6dace6897c6622740165d7d894085d48f901dfd3257d822c9693e188136a560814e6b22ccbb22ccbb79f324dd3344df38bf4b44c1e1e1e1e1e1e9e2fd2d3e2796b4ded496ef39b751de5f3ba6249d5c6c423938cdad5cc9a2c168bc562b1be484f8b355e970dfffcfdc3fe35891f6a1cf4b6232ddda2ed0fdab7a3b5234b87fe07f3e994b580423689a2156b164df974f2bcb7279388ade8a2e743b5f9caf1ae627f6f750bcbaebb6bf19e6bf1b8ab4f9ee4799ee749d6b431d39f46bb328d9ee7b16c170ec7d2586ff5e6e42d555b49d79b0a72894abdb93c97e7f25ca5d2a772cb1bcf70b44736f6fbb4312625afe4952ace0108b5c2bc2dff7af3926a247269d3fba5f7c14b3b66805ab17fdc2f7d054b58fc23b2f7f342f9f49eed79d4e47d5e89d9ebba42f7457dbef7b7316b56fb2be389734a3fb975b6b531dfdf685da57d5ed76a9fd7b59d5a9183933eb418ed787d3d01e9cdc902d62adec7d5beeab6425ee21519f5a13ed8d86fd668c712f259895e90e5fb30f6654dd4b7bc7f8d926cb326cb03f1a391c8dea65f61db4b8f77a9f43c4a63aa894c5bb4753a8d0506f635648d78f97de74e9cf8974aa5d2bbf853aa5185f0939c8841e816dd2e8def0f8497a54fa572beed5a0abf445b436a2b1c4b255c2a95341299d3a80d9a4e2b74069fd7e0f316ace8abe4c6eed16d729ddc191427bd52e1379ccfd4fe6446442fa1228868755a2391c5d27879e822fb30e660857c3a8d76121993b0f400f32f5f451d60fe657471c928d4bf8c3db4fccb535187967f192f8cb6aed7b644307e0b23d7221b2cb20ff7fed54864bff8e28b6f6669a2d3a3239ae8b7824313519cfc7d52da3b187e8ba67425bedf707e983f49bf9d3dfbf4db8aae605e7e7f8ff56f178dd2dfb7e88f3ef9381c73278a40bfef832ba14622db1d35f88b6287daa20884da17b5ad91ed5688aefc41148dfa7819344707cfc2f697e245834a840cca60811598f84289ed6e8b0845bfd11cff269cf8f767257241a6566cba6bd8f289b72a09ea69abe54fbf5993e5fdb15771d25b74caba46bfd908a112e550f183a0f8831fe464c218b04b8554f6759f87ef5f11885ae16195785f23916ded4a98c562848964a7010b1dbfca474a04a12666cad553838d1999324301129bce8c245199735888215e7659d8f6392c621772d27224175a8c537465ff555d4eda7f293954d950377ea0ba717559f35a23ec48e9b07ac693dc9e4ac9382b8a3ff7decf025e82ff27ad715c2a86bcb3f1b9da18635cdad8aeec830f5697de31a476f26ae39db2a58dffe2ef30a539783cb9373df762f85767f107144de208845ab1c3bfa20d27a42a88d8a1cb9a29ff29e433959af1c613ef93f8c3613caa7ce0211cd91c78d942523b497eec03e3f1bc1b13b934c77e0a8bfcf9be75a2f384d268d8815d05bdcff34ffce9388ee2e71efb1d3d2b7a0b11e04de9f4dc5034c8a74ebd27a892821da45227986dff991b5bb3bda825f90c91007fc0cfa8999c1232848c7ce61313f9a45498a8959e00af0e4b0a3a3d2c454e702f1347eeb54a0041bfb6646dad1ef5e8531623f2a9b3fd6b482084db9506f059a92592b6ffcc0d8802354be75322e3546aa68b2200b325986c7f52a7969eb670ad38a9987f1f770900f4b44139e9754c826ba7ab765d7da47416f9bcb92133ea1e81884a15726cff104574b4fd535f7550333ac8d55161a09e4024846de7113da1cdbcca8547d98e338cac9b34c6b3662618f2583d42ba5dff72dd5b6d77f8b6be4f116c7abf0bc29a4128d74021671de493c5eaf17beda539c8e795dd28e440693c94000965593bc5533f386901312ce02410277590ebc730914f4afbc19a2208c1fd22b5754795f5b7c04ea57ef0957f1d693f10e593ce768f1b2e1412d8ba4a444deeeb673aaae89843f7a55debcd38e3e41532c621c1d1f6d7e9c16151c99852cfa1ab1ae28c4373b08d2c9f98364669080aad44b6b4b15dcdd8f0209f334e802da26b7748dd165d6d49165d5e9e1ded145da2104edafe210a5f7c24ba30ad7322ba68a2ab73e2dafe9d132fbb19bdb15b043ff7f4e66c916de7e96661cd9afeddaca3d92e89fad81e433aa41257e29e07cc715f1a87503b24df8c20dbb1e5a82507ded8121b5b602d70493ec3db8dfad828cab39b85b72ab31128d9fea84ee665a5631095d2af746c818520513e5b60b01625618bcc7ad78451154894b8c9588ac8fa8c7c7a35d39089c8f432d946904f2729688e3f6dd1d6096664577887c9b6249f5e8de6a40ef72423c2cc0ec0c9ea995142b6fd9f94e1cbc512578bb696d83ff1bd56d82a8a5e43444a1839e22e2b33872ce181fb3b0e597226b9df830886185df7ef388408466c7756507aeecf54372e5125c12a550eddef405bddf7704ae2fd2e8dd4aeb891b42bff9d1ae47c758f0687543c9c3d3d72b02b27a790eba62d1cb31de8c0d5a22dda3a296c0619490820aacb881095b9735080421ca73d242fe94689ecd19cc44848e7298a242f4faf160529099a94293bd896677483837c9180433209a3ed8fc3a2b2f25ae005f9c418e3f1df65f384dccfa88cad5983a5b8a505f84cbdad35b879ad49291d730ff68c1aa8931e3f65bb2799e95103bd054067f662b2fd676e3896f3f4e83899837ca67635b924dc4c4ac775589746c10b246e332fcf53155e5e9ea7d913ec12c243de3b0ecb3ed7d1a79d939eeaa139feaed718399fa799b704baf2df82f6456dbb6785eda7d9cce5d5688e07b32b1913e41387275b97c5c533245edbbfc2622213f2cc7b4977a523a6f7c679fc59a4908ff2e94646d6ac45bef20fa3cfa8246cf4875d4d3a34230200000000006314002020140a0785a201813c8ce350f31d14800c83a8566e541789b32486511432c818438821c68001000118109919011eec81760ae97950c6783862e35939bf3c7e02e4555dfe15e58dcf29becf9cf5ee9f2af9a895f1e8053dfd23e2f8487496102941a2d03fa5fd3756e08b32eb34f7cc181b993311b466f384a7820c9b7bcae25d387c05c0a2f8a1a66d3eebcdfaaaab772e4027a50d668de59197a69cc5002adc2e88e4c85e7897cb9c09980b3d8418d3c55d4c24c0e31386d0719f896974bf8f2742c0d7a846a636a177e0adc132f358354c4b4bf93a18c88fadfa2f15dbec303c480aa017ccfd19ca5243c0ac82d84971545c9dc1c5a581c2955c79aa6e64ee0745a7a42db85d088bd407421db549dcc1a3fdc5de67e23733748ae426bdc5b28ca49405f43896525581e45f60acec36aec35bc7b19117a129382334dc22c8ef764cac8ad82d09b5f8125c88220027a7019429794fe96604dc6e4d0c4d372f7b6c1812b593eca1c4138bf156b5d3ebdd9f737ca064c1a8997ad986502337fabc8ca4f8b8922645a31933d917f0119e97df83d013700a47176c48f1894f3838a1fb1c98a761882b1a762b7d09f3481450645449365e02571f459909b155deb2277489e7c25a2b61bc234e3e3812807eb684c9421d5b22630eed2be3e37d3d916c57f404789a07ca6083c2986e79d99b2940a0b245d89fa758a2e06617b4fe3d78d7eeba3f3f749783f62a9ab6bb20ee266fbe805c0fb3dd4f928ef86658b7913402309972633a652a85eb6f7318c65b3490502b9668c47919631ae17ce857d3cdc462adcd632347b7c4980fbfc45dba18237ade542972c7bb9e85fbaeb46a41420f236144772b7fade67bb9b2e705c8e7c3f251486f32d8539762200a3ebd1bf1d5a21c007c4eb080dd0223d2a5da47584f121a2ab6d40006c9144c5303cb8eb9afddf45633202b6a39ed8003b5afb66ce4ba59ea0b5037825e603c72a3b0736a4306e713c945e6426bde92cdab6473cbdbfa046a257ed2cc1a100a47cb8057c52698d246cedd7e65eae46a7b19b25778c4d1be14fae793da77034bf599ac3dd566918e55aecb477ad0b2351e4d683f306456f91da3eeac597619ddf5b3d093986ca635d14abd2b7242e29ac69aa16da7e15bf13382e85f2655d5c0e6ea4e2c64d9d0bd80f2fc2a7d1884cf4276af88c4d3bdb8973f4c29f5b96570f512fadeb59275d9a612a4469e78c76a431abc9d02c9959ca8004fa283fc877b2881499785d4fd4193b22a03bc70d2827f6bc05a7c3efec612ac729c6711611f5dbdd622cbba54704864fd6f85cf57ff9ebe9c1415be698ed8b986438c0f6db9a6d84069e3a862133aa475610fff6993c0b9c9303b5c582f72eb7b96bed4d44fd867d0abed79d788b1a7d25ebcc1c3b02f089ee2f6949f4eeec8d1be71b020da60ee3819e7dd39269691f9d657ad72096f3ca2be5fbe2eb046feadcb6bf367049d89bcf336e592b85ceeea8480650f33eac0117f31a0475ccc03cb81b35800d5ae60e39a4037366524e0dba82f80872fa66159b0ef1138ce36c89336b973b4a497b3dd3f0d48afada24ed678bfb51e56139b37eadbb0316b9fd0f769c6e9044041b2c37fd1e0c3e9b8d3cc2efd3c3af8e3cdf7a4f32f5b9c9a9370fe69d926b1e8170e68ab33aefdace5a1b501001a61928ef024e92a6a29b6839de8ffda40b7d0c619b63303fe4445422c8047054d55ecb371d8ecf4e81c3f392c5b5a30bcd35c0a28a8febc6ad9db8ef01214ba6c1e009e81a409c8fd77a2262bb247ce0019699dd4cf1a999b76061ac961bdacde2f19f823d975572a3accd0811704d3b549859c282a1edcb1e450d89c9634efe10f3a89b8b7d8af6412ddf140bc9ac672e24e703a922e9990d29b5e5f793df8668e79d8913a59b9e04394a2b167be1f973794407278907b59bd202381d8578421b439bbf29e4d66031f0bb452f1f2c3727a5ca3208233844c45bd2adbe91500861b8b0ef12a6591c657fbba7084fd578daf1c2fc400698fb5b3750c288ec81df423551ab31c95cf4417e89801767ebf96c6a201e5c1790a600d5868039481429a747fe518924803f702c8b41e11213c0b1247c4191f6f9d46485c0fff6b0df8c2147e24e53dafe3e0fc556216e44b7d4d0fcb127b6bec77506181f5e8d96e74cb42a951c362ab3babd24fa2589c1828a16a901f2e2992200a1b7eaed203d4c561e91ea8658810bcdb7143e42940861381882b8fd51f1b78e0c86acbcbc542e53b4f79e32e89006607cd7c51f0029694d5dc28f94265e795b460699a7d3d7f4c4fd92c8f97573e8070915689f25abe5923166d1b684a446fdae464ca01ab9355557e1f4745acffee66afd7ec836305365d5fd304809a8d4278f7eb99ccb29993537752c5741a44d7fedd25fe69be91fb30dbb6d34eb2d7bca7aea9308a7b93d06d050f03af103388dc5de0675fa65d1ebe0d422f544911defcbbba3b158ebccdd4d0151628e28320c53c2150437a9af9a52bc12e4de53488ae94bb267a3f90a344654970a681e0426461b8ce33d2bb71246e79d1151ed2e16b4c4676cbf930e9fab7b3b2738e3829aeb32293c458ce8066a4f0644984f96837df580432a52dbb7e8494a8ddd291c86639e1a8ad394dab07d654ce7d840e3f2aa68fb35d301e2358a5d834ba93154b75682e4a26e514e6d4a156c9146743fac5e83013ba0f160ea1724e62124e5c1d902a569634104fb0ed1b74b3338b8cd4f3d10fbf7bd4f0811ecd8cf268e0ce18882a42c4bad3e6cfc0eaa60821330b03782fb648d78b45e44fee3bfacee19e8d5e59369c78ae31b9b5ffabba70e4542ac405864d2827704740669a9cc52e7c6633ef0ec06d0518348f3e0d3bb980db09ee03ac8fb0bbc01b41c1e8fc3a801e23fd53d0576d89bdd5cdb87b439c8ede744f0e0de8bfd121e178076b7880b8b60713812627972e7c12957ada9bea79f3ca442cb9e1d4921786b61cbee37ddbdc38e3717060b56e2e624c07022c3e531acdfa9aecf14070e714c4205717fe86cee7e68094e235df57e2509d9932859a7700f6c64b0a0944f9742ab7972f8a4520c89243399191a140a961000e5d8a1c45a6e5e92a2912d04b155ddd5215aebb54553146d59a297216d19158dfe2f134225cc367a4947087977d1d1d0c81a275fbc79c3d88f7417935620fbb6df652971ee2f7ee09e8c8364792f24357b523deb0e491bbf62dbd0485417b1289397a9fd84a3085e10a446d1f89d73ed2ea9188cc61f27a1308c97d3028ab7a24427c20807f26a83579373f922fb748d24c44669599d0f323cdbc872ff9533b9ab22b7a194eb1011ec569fd51153c15924b4d6e72ed930b7c6c720358afb8752f987010408647075491c490a118c5c282235b0110e3b6cb7446ab08327570149fb073e35d2ee832106a06fcfeb7379e307080b65feb222c86007c2ca54d946b75ce3cb7590f0f3304112295dc7cd0bc64bde0f5b8a94796bacb76a860c2e18591effa24a692a887f4d5256abb06972745b502e86936f2bc9209d57e28f8471ee509b1074ab4107477db05a1b489d6dd0af550e403c6c13b8392a86f697e3093869a185b86aff138d942b53ee155da385f8b1904182e4b9937ed2a0bb6856ffdca6ab40e1dfe0ff861b474220599ed1588dd6da2c34d4dc15af4046bff0569d1a51a33743efd00d0fe32dca3b5e36d3040bf6bcd5515582720f9b4e1d0a85506ed2d92fc3ba00789d27a1b3e0bffbb99663f33916401828dfd388600eb79d1f15715e2d597d518c23cb8c701a3331cccd18e1c712a0a2d3cb934dfe2b266d24f0fd8f85ce44ab9a3a3244cadfbbcd8faa1a250e89cab794be94c5e89973e2bded60dda0608ee5e7f0200916cc9c060e52616f5498fd22a3a0117af47c6811b6e9a6bebb1d45262a04853c58255b4e55bafe35521477fdd356852287a4345574123b8ddf85aac340e20c68e7698983188e33af63e4143c245a869044d9a56831c32ae853e4a3ce44b61c212c506d201bf0506a28713b6cea0aafb25bae2c339b5bb3338e073eac15fc8f319ec8e5b0ab0be88cec092fcd3d3ddf469a7375977739b8876ba2694bf90375b7c4fb80cab60f211271c880127381a7233197e6d1830de751a4053ae9c02998330aa67efe40540e69746ee38ec942bd8df0f11cf20d82879c3ac248bc8808d5588bbc61041f4b2d960fe2e21ed22a5206bf256fb8e7840e0e8fbf73a679a3837b1fe9981f59b5bcd49bf5095e8f028511a7271f347a16a75e9476a0cc1465493e71fe4bc40f2cccc1c385a31ba0b9ba3793acd826eb8a991ccbd6dc5bf512ca2109925ac2e83d3543d49f7f16b6ab7d520e17eb43729a5c5c14cc115a9aca4b9cc822014af7daa3daaaaa488f520e887f7d12da5ee567f39098e85ee4a28638ff755c03951bee2bdd2f8ec59e116bc58639d2d6df46fcffcacf7d4ccf618743dd495bcfe806b1deb31adb9e36f1f4037bac2db8e9cb21fe80f9b90f460d63f9e977a2fabfeefa29aa8ea1f441666c769f9e978fa1f24b3e0b45c09e929f10734472745a99a98fb224896339589e60af08204f588757b6661410dfe530404ff526ac0d8927ae10451e95ecd8b37ec1fb9c59d9352247c0ca81c88735a4a93d76f4eaf0184ca155ac1eb0205dd04c9bd607d6b5d92a58a3f9a8e9a886c32367834c8ee32b33ca23dbec2a9abe03599bbca3fa156bf4e40140a8abc471ff99c859b6b5cd3752191b164b57f716ad52f108f5755ab31a99daca689654a0fb4faace32867ff94810a6394e2d631d20fc67fd4c7c4782bfefb3a6deb24832bac28cf9f0770749a1db0b383d15b26f9f1d8c37c03aa4017806f1d6332da8e5e96f204ee81301214bfdfb22c108da2e1a670a7e61b9fb728f6e5aa33946d3daf79d11001276da471746ec7602282c6b77edc1ddb57ef3cd298e6c74c3b5fdd4ac025089d6ef44552cbaab875d575fcc37d1f34a9f8c9055e0cfda7c00b838028a012d2bebc0ee64875d8f9a2432de33f3bc448dc5d3c643ef069892d712e028ab7b13c05d93466caa0c10736c5fc0b5ef77bbd562d718163429e3421a92fd1b7d2934dee9a191ae4e00e4301930735c832f845ccd9c539d67a55884f12e61f73dec09a93fa81fbecf69108f6464940c82e3f8329313f0f239c6b279048291b0804145971faa4c8a9e4b68cc5e1ff85e41816f70a249a920d929f74b3b7247a975ebe2c60389d480f3598c3252311961e53d1b350dec0767b8f1fc1e2b51fca9a5d895c013500c110a5b297b94cfc761de7bbafa9ed9179c1471b54c89da95215e44f5804765f51359175b4e8772747bf90d709a2126926b5bed3997b3f744c854ccd4cbd47c67479e62693d40c6711094c1d5fc63756b54d4ed0f9eaee11a1d23c1e965943b7789a5db57f317bf52d6a221b38ed4c14bfc1e938ed0075d91d0dbc2a706e3a3947810746fb3d1d83829aa40d4b7d857ff155ef04b4e1e8dee14e0706a07692ef65de01fcb0454cf471ee39a0175b81272be99d43b75e1d773fa6b4326ef1bfc4dde5f1351825e7f7c56ef03bc616b8f3dff9fd982a08326e8604a2c3e2e7c2e9b70cf45b6796e1da079ff75d51c54efcf915126c84021fd1203c50b419f5f596ab882a17ad3c5278d07fde74477a6bc70b4a69bd1b8fff3db1989b5fdb2cb35772efb1b0ea3361f276c43bbfe000b6514b2316584caea5395fd6f7e80545fe9899c92a9e7d41f7fb9492878c0c0dd0f172305ba92686d6f65d5a1075606e3c0e9023ccca1f8c9a94cce681eddbc7054152877cf2e659ac483855e33e306aafef09bf1d101bace71ce7c3fa60d50b2178815035bec9d3e3a71ece03980c6ab522fce313650f80dfe14148653f1d341a83808720cd204db22a56ecdcf5105b78d40b11c7af7ffb0ee917f8b519672caa368a077751a7e79fbb7e5b957bb1993b81564ba87fff286ed18df04d4c6ae53d6b7cf19d3e084009dda3934310a9c55cc4b2f17f48e86b0ab95efc6029baea28524b160ce533bbc6ed58841c58f580234219c32fc7ffd915df1d2607052c9e60466b0357a94d706058fb6cacba95e5c06dfe712c60aa24f72df5196d407d0bf81d650228b1f1f5b5a211465b19399eacc3eb2799f77e50643af394d7f7739bdf6b462f7450394cc9efb1848c5bb38ffa7beb78313aa17830490b8d8c63b158a06faa1857598c8265ea670f0e22d67eadee91367f1a5c3ae0a3125f775e5d7cd033d9713f26e9cb2897874cb1a3d8eda0c96f502d44713484798c1edf919729d328d9019a6066536a0720675e2a78c5183ddcd94197316146df2081318cc86c49154be5cd95c0029869dc91f635f579a68e320936489585d512cae8114f0b54907b3f9cd93dabf521d9624572e2d01415f2c302eb29533e20a1aa0d52c45a95f575ac44a1528ca53f904f0a06cba1868e10d63351848cb8e59645a3f9a09273cf65290b65b66e34aaf5eed95e0bb7ba3796ea9adc13cc82fe21b6d46395992797ca65c161b4e9e1c5a6cf5852e2c8771010c9dbe931666481fa7a15f9405176bbced06f95bab49a75800f64bc1fcf83e676fae58e0b79775769e73bd92fb4c9c65729541ae02bdafa717ef244a6f3f25edb6245f86cb698d0b580750c8e0aa725583d0840f70d2987fe86e4466f7bd450d5abfa2cdde7cebc9821b414d5d8cc97c6de9fdeb50eed746a55d6e1cc804d95d3fbac4256204ad581aa903ca0b787184fde4b77e40446e078ee750d335ded96b6e815a788b2a342d31a6a45b6d71b7776f20d4006cbedeabf2bbca2bd8a344583f1f800dca39ab5183c48c81e893f6675943c622bd6c428ba44a3de771f7ad672b115f1b1ae66e46f718066e1afcdbeb3b279c588c8ca5fb69f603206aa0b3d2fdfce89fc1cc87cce5e5da2398755b467a67aac19ea6f603853c178ad1a82b054160443791f4b840a1e31cde1abe44cb064b64561d6c7b790908297162657eaba2797fdf2244e66da4c91c27e99518ce85fc253539ed270460fb8bc4a2081544ee6848ee1b83148120ca894eb80506da30e9b2ded30fd4b21c08e540f627e626d82a71838858d96e939f95080d5529d35c6a5f030c5b447cb71f561810e4012b38038cfcb43083edc31c6aca636b78068238a9c3663bfb5fe60e74bf38c180f29b43b1d571cc50cb867fbc03d395b305a1b20341538b048b28125c6547cf71beea1ea910346b5f13228d501494d81a2cc783475d8cbc3485ac5389d4c482026ad8a49271ec828f2eac089528c75c214326307e4f78cb337194b869faadd2952d32d4fed0d6e915ee1ea307182db586084c7e859514022b54e6a7242a5b44fc710bc92008c7773a32d0dc375deeb0a8c552b26207e932c5b553bf487dc8e539d957094e3a96dbfc2072875070b133607429f51df10bc6d8689d7f67e7a2926fd2cde22a8cbe7bd3d5d971e28b8853b1102f363159958cbbd14e99d80eef7e333346214f2539070c3dec094c5a70a4121faa77f4472e93268bda5111411ca72cd2a219ec9e573bbe5ab57b8bd96fa24c44ecb975bf2bc16d80145adaa9af9d6abeea019906565e0241b004e81f63dae1cff48e72038aedff504489bee1690ef2513bc037f8bc17e6bdf3c20bcd71bbc43ba3af0cbef57958d63438509f41b75761c8e8491e513470fdc204611bd7c312bfccc9458dd8f28f8c42af5900140daf91b863bda6b76bcc66ecd9ac96f0fb26b3fdfed5ddf347c0f213c8d3d6d40a8da846252d73341adcf19407e9f4f0e696e9b2b68c6514bf357c668b952204209734549f0bce0ace451c49ae47a2005c363f30ac222a9564a1a2e45439cc2a4116e4b6aaf7fb348fe63c1e0ad24489cd9f4150880a601b8c0aa580b10ab0fa9b5492318fdfb0c8c30d9802ac8b989f470a1587352f1251d092c64986f970ced71de43fe79bee57d5faa22758315b7225c495f6cdcc07eb0b8d7584a12a30c317625a5ca7ebb3a6d4256f246d3e123525ae6a0bf2e5eaf0e3e9654b54742c53c0d7b89c89043366469b3b2d6d3cc044361019f8d3e7352d73e8bd7c7685f7a45ade8f0da0baabe68cd8a2e17ede63b18aaf120fb18875d461bc5ea1fb84842e07c20958f5e40730ae6bec9e036522359ae62d8a8eb55e6860f1b80e0ee57bc456f24208979010c85850216b3530fb97eaa3dd0077a09336c2cf54cb73b89c9ef0880fa8295c002ce5eea142469eaf93b57aa8a2debc36854e38cf1023e17265c042be994a6e4fa8b2e693349fee10cf5435c682ebd9d22af22674b9a7616e6869834317e4f76d78435964e386b828d9a6b28409fd8d1886d79280daa61508dc361a3741fb45f49c2d26734057b277e4dd4e9cf535db42a7773ee0d7312bc80b7ca3936ed2c622da87a5941be045188e9f49b41d2e89bfe7a21849b02ba6df200d170ff4368a668e73493b2e85d8a1b978dd2e82f74d3e274901f61e187a6a84455f6187985ce2bf839d39c8c43186b5e506380c9510436d2ec356306b6d4de01fab3478cb03df74c956b3144adad0f0e181279e12547a57eadc5c189affeb25bba7c05863fc4db20834f335dff4f78f10f2976d47cd4afba64127498247716f588c851a1b015680901bd3d1e14fbe9d0124cd8c144232ebd02f2c556a134c54eb34bfe2a36e3cabe7070963dc5f02e61ccd14a519e36fe7eba2644e3f961c8c28a09bd0dd8168e20b9458961f81e63bef1aceab8dbd2ca34c4e043bd6cb337762a5e1c55352ae6fab46b188f71dab37c44e298facf1347c16ac265ae41cf837630e278b2e75b7c0581f52e26cc56359e067f78576f4b91c807e0ca1fb02cfc1cd9172050d292de9a4481eaf8a975b076ec93901d4ecf1171509e8ae4ffb91cecc04fb3b93342b84db0bb223b8a9998c1ca14410f467e83c1dee2bcf97c9cc3d716e29259644c2405553fd6973e7480a4b103c4c1eac1154e487ba64b9a89dcd3a9a33e519d2fb6c971df4037d067782510e227f32e28a0e6af28e54c1042789507fd5d9513671ec7b9c07faad07a3d88874cf365efd8a56b19049c1e5f854034dc1813bf5007dc9448ea80a4d3346ec2541cec619ae819c7acc1a127e007e4b8700bd18e25708d2c37c9be4ea999eed3ca766f97196e65a4d2d03f5359893b06a5df64cb3bf67a0da21e67a52d5c44944b2c5d035ff526172344bc3bbc599b7458a00b172526b94964341d47c5a2025e1e7ae2b05801fb469b663cc26c6890f0c3705f0cbdbd7690bd8ece63f80ef1705067bd6929d20275f014ad9c9ef30eb69b427faf13dc2883244bb518e55053d6139cfa5b89d4c6ce102087e83c68882d10c4f5d71b5fa2b2c4998899cbcf94548ab50326939faf7269678cc63115a039064c39fa818d187692a8396248e53c706f315e86c193ac99f9ae4dc1b9b003ea0bbae59a0d0127e76a4fbe8aeb19e409da066e025368bc4ba94b848dd3e96ced52e72367b95b205b73b8c58d8a06a7321566e53600f268e4b21b5500642df0bb6c0222289fbca6f231161dcd5000afc644294b10a97a9040071ad11fb4e624c1108f7e2a72c2ec4f22fedcb54283646afc5895af118573923116a6246e071a0e1aaefbab02811f883c5aedc3b05722d03d7953cc95a1a6c223b410457bd4af3589649e0273cb220ba4e64174f11c553feefb4bccdf35dcef1cf76767ad68f8ad03a901083f5dcef1853634256a92b23d07c29569a1abd8e9a2570a744d49bb7f3a68a0f03f6866630d7e5fc758c55fd39088f5fc6dc498b858daa09fcfa777181ec846e5ed63a2bc78d9f810ccf387170334e169d4093e966e0ac17a462e50f4980e4949961a912db5c6491447fae8de421ac66b7deb336771977ef64d445586f1edc2aa1b9f264f21119aa9aedffb227725e4686c28ec1036c4215c5a72f939807dea43e6b30a852a59bb19b32bcf14b2bc8f7ba747010fcb9d4c561c82622912e4d9cc31aa0066172a586c58e879e670f980aaff6fe6022c587b1ad12be52e5b72e136fc0a1f23c7d4d53add974d2c3e7b20f9a0915d8f8bab503c212b1200921d3a0769d901419b9813c9ad76eae9b894dc41cd29c4e3f83fb92f7bc3d3df41c38d6b367dd58c1f4a64a63bd90fb15295d0bd3abe19384cbf353840a551d512177d765c704c290f2a40d18861db2ec97c1a64e4745db4c5f6e9aaf819241995038f2c375b12c13df07d71528cc5ee904ab3ccf3da9863f08cbe6e0f539d5d855e42afdac8b160de48814712d3f097b60129f9710d3e2052c0f4022025b71e178a957a772bf3a3418422c380fcdfe4ffbeaa7aedae5a4fcde14f8492fab9c8ec10ef247d0421ff98ae19b797ce79b51f536477e04b7f72d6ee456e5d5cc8b2234a8e6d406824e60829fdbb94690fad43f8fa1a4da12a5d800a671964b75c0c007463955568946a393f57958b43d54391aedd97dd92f61977f4bd7cd4dcdf75bade0676016599c4479f5b9e95f3ffb5c75c872057e59d2ebbab896649619103a714a096f0a072378940891577a9f50e0e2c26df224962803a483cf2f063924796600e15ee44e7dcb207bc8b2b736cd7da2cd2423b8991245bb36f2d7a070685903385f13ffd7c2513f48058199f11929c258cfffc60b8fd0617e22e4f2d4f95f8c3d988ced36d27d98a3b8f27c067bd9da38741cee515e5932896dd20ec384efeb52277ef4fc52777a9e27b2fcf95dc3ccc2354994aa53e8e02e7f2d149cf103973056d53724fd73b81f654252c144634ad1d562c8a0068409fbfc9c5cdd20d8aa8360f90baeef6bc927c41e021d001cec77ce59c06aa42fa55aeb236780cc79c656c42ab0a70658782fec03e3e66e2f08b9df3cd1c98898a39cec46f42b0e9641c63e42af4312c3d5f3e93877f79c547f5ad438530dc8f36fc9effcdec4cedc2e6aeef4fd6d583af3727f08dbcfb3a8e849f13f800272152a4269c088311f0173e70c45adfc8f8cbea3802fe4e103f5fb905e4d60fd840ccf21732ee7b71fb0348b7b3bfc418adcb2d4eaeb7895474e8f8856acbdf853a0795b8944a347876834d93ee008a6ff710386005028aef0661d7f1a483e47307f76fa040dc667b6fe9a7f1ce8eee534f8eaf25e16cb3e6e36f6d4aa199434807b5c5b6e487d914ed9556132603ec7f3adfebf97471d3be3266f0f04c72ae665c7e577d8b4322d3b55ce1c88c6056cbed2c151ad7c41ef22fef7dbd00f2ece3918198e54237c4e353086b2aca48311618b3feec373406720246044b07f0f892a57dd3fb6172edc0862796f6024425ef295bad36236b6da22102309b172ce8c734571440fbcf5e1f25b0679777ad32e72b44540b0304988ff62449ef3437f91d886b0536adc702c06fca8345d1b5e87c9cac549cf7ddc3e7b58ce9aa298b1e2d7c7cecf60c2e92155ca98c3589646d7807320aece064c67a003cd4ba1dac4879bd848dcdcdf7a04fbeeb7e5bee8c09167234dc525fceee0ee42e4cc58bd0ec8b7092243d47d9d78951357012d90bade02cf6c94dc35775e4cdcb0b536a56cd173fc71f975531c520492fa1e7b1c5c3a5871b60a084e8f1e200ffc56122aae70fa8ec5e1e4c8f57cc420a75c40083e1855f8872f0b2bb360bdd8958ca111d75c480217d1a9a88cf6ce6d03de8561888d4441f367f7bec5ee5c4b3a62f12224056397c33afbd483820a6a05e965a227a6a5083562c56edfb2a752c1eb57577ac541a0819612481a25951296b6645af23991557951fc4acf81800aa03b3d171ab2e1d1622e1565ca7f6807d0d04d543f80c90f96b2e1663faa231b81bd2d2b8c52d7c2a0e47505f855129106411d9bea9ea5ad7cc524c526f5a3280beefb5bdc32bf1ff601ddb3ddb4aba590ba2ea5451b6eee532ad7d8f66ea17e3efbba58342c3fdfdcb16dacd922068701e430f966778638fc74b2e5c0903913f45678b8307563810954bc4983ac2722878d6548242fec0b4289a469045e2457050d9332060ceb004c44976d2a237134a09640cab0a5cac34b246c65954fd24c26d03be1dc3b94c3c366beb85eee6859ba116f79482f87b81f8043ee443c87141cf7a28b4506e2f8314a146b1e802fed9eab9584719205d046a19d08d22f8f5dfbee675e253826ea9654dfd0ccbd9498e0355d3aa897389141581832d08d8ca9677dc410a0a6922973e5e1510ddaeb228938df0177704813bb1e2bc55633e3082a4725fb603e3e8529f1c1cb6b54049ee17fd763fe11786dcb2c0b640f6b8dc4ee472e00e4afc900f47775e3754c0ba041e828005d65d4aa58a0056dd109c7484472e89c5179f6f0a48e19f660a57e640bb763bdab9560dafa6356025e142258fc008873d8ee4d4afe598101470f7c645df5685055cdd9ace90615376a21a19bbc15e92f3668f3dc407e3363d65debee618c59366664d574d3dac1a018b52aa4bb067df96cde51532de347fe2ac2194937e4e8ba048eb404ad711c0f445e110c4bbebe5a1d14e09583a67419468dbed9789b1c707614775120b439546d12f550844bc974aa888bda9c8e4303c44f8a79968a2618cdc30bf176ab1c9af804726a5c8cb84e2ddf8ead048f187097a22809b077b48ed2817e797e6dd009a0acb41e2f288fd3bac4cb1a3fe989e8d2c889b1d2b1b1a3b6a99286971a4df1b6fc736a3b8497976161825615af8e778cf11d7127b2774460b991203ff4727dce0b106e67e8c0d8ce5d94f0573f610a2fe90d09e9720ceac96af35b32009cf9ab213a590deb760affa3858072e4b59b738eebb8f499ccd040cac6683e23061f79f218c661baaad26158d39b8b550224c5334b5c522111c18e07439ca08d8eea8a367fd8bbb70fb51a42798f86136495b38886500704931ddd8f9fbb418273919dc4064d5d7f46fe54d5580360cf058e3ebbe794de28fc336cbafbd246ddbaa1a95fd7a1a4732fc8707e0e5614020e4acdf412d22d5c5a105345e212405c579f31c2461036925dc993c232d8df5ebd33622cc8820b03f6a61924afe2842b5913b02a7432705275fd5e53991f829c9addbaba3773deb629af84674ab0e288402d1dcc32986958766c5750487fecaa79da3796fc8f394f66ebec24649a7b8e96810e689c293ee0a0a3c2c7b97cf1ffd98452c02ff478fb4c35114dcc305ed4f5046daa162e8612c4ad833e7595c74b7b88924119480036a93e1e7163287b1fa1748b918080ca8613f19cc0e19ceae2e9361832ad842160cf0bf13c54d6731bea031d3eb60aa9b0f162d1883b52297c47cb0d5b62eab7b789665ce2c8e7930f873e38339d90f99d3507b083414c545a06533f81869333f4ca1c99230daf0d5fab65b68664e902537952f08c31fb271cb43ba93540f0d946c14824d40c14e816db804ca0d4e7baa1d20e9a1920e9ef0f10fe7428c4434c11b7779677380eaf615389185061abd38f6c1a7ac9c49bf2447e43fad8c219ca12a988437f7995c857117d0ac510feb6370bd606e78a14f13649c6b3ab5bb596671f9dfe5f05ae10f9c07721c6833739aa9ff07340c6dec0866cf82868530371effda9bea936b2218146d11bd5bc40a01afdd55e7b9f5be040e834359f1d7aa67bb95a9dc56bda9732f8a6dff41f3d58f580e6910744cf26cd097eaaf7e44fd1b3827f83a0df8f71bc161013caa571991f5b7b311fedb8cfe1ffe8019e7acc56ca2716111a5f4638fecb8bc2446d740b7a5e5c364d377d3781742e75b61327ffa0ce9eb7cb3000343889f1d9597243ed54ce1828a5f81047dd6b6b0a0127482abafe8b27dc0be916e6738c3e9ab2036f8eff70355e26a0c63b759e00dbd57d7a52544a3c0d474723f14cb3f2701d35a69fbed0ea1bb5a168d49e5133ec811ea14339bd9b520af6d5d381cbe4828fe30a15bba3cbc824f9a878716834a5432a81564552cf6e5315e0992490d00415a1ae8a55750b543f6ecf0f4299ac0ba4439942f5bc0ba0ff7e15d6b03656e8dea58ed27aa602e37590da3c0b39daf3303e18dfdd71b1d61159a20ef5d9dcd5f549508b31b5e0a86badebb8281ddf5b6e2a5105960a026c70bfa1790993ae7085810d8960d7a8fa4073c2066ec32ba3ef0009885db4f016fc6fc46a1e052c4b40a39defbe760ccde31725de000612fde696f86f827e7a911a18a61b2dbb9bcdb1816b4eb6447e21811f979d2fc59bcc5c6a70db0273a2bd9bc6ff40f4ec72a16a451b237a6b87371375efa7489c541d8f6df1c9a8844251789bcd9a23cc0a89a37cc2ecdac0297fce4e5479457ae60c1c0ee3a4472f54b70f0c6bb73151eb72a061776504aad7600cb697242d6c39397f17e720923184eb6d6792a95c6bd89adff1c88d6bdf72adaabc53705b53aaec3ae2432b959975d23af897881eb3691156e189b3a5d809af4bdfcdbe1b34de3a086a370240cfbf11f5ea5356d09b4180618c900770157dcdc49ec587b17bf3b81ec871a7670abdae2420424fd6019a443778b8f1e0219c725d9ca05fd72c4dd3478b6f252cedd4a0412dc7bba4025949998b7b6d0c4dde06b2105660049b2c8253079da27867830a4419d1f3c528a2809551ab1e108133556595e37aa43432ac2b75c2477a03b05615ceb7d65936559309748f28b7820a0b73b55ac525fa6f1e42df2bae42c434a13955118d1d4f92aa8154a9549c88fe027b162ef5081deddafb06bc52a19c1ad0dba60c6e753f13a87d539add3ae6c3c28cab6fb956fc12962f00f87f08dc070368bd3021b08d13a9aa51e5ba4d7e512ae473b9788582eed63b12bbef9a80669bce94e87abda916ce25a3758ffa9fd5f154734b946e978cba5e24b7d6f5a77c24be000fab31805a076775c2eb2ec1ba8e3de6c643c87f8f93ea5506bc810494f4ac0e66e0a40fa586f7dc239d7eb8934cdbcea528163f3a1528a480863d9ca4e7f8575bbbb50570193555f2cd65cae89a5e93c07c6a2074e7cae60e3a4ad39fa6202457c4e5a985faa12696e7aa1c2196f7e0665861f64a736765cc37bbbde072b4b0c72e2cb2476dbc48496259646750ff1c5188b6b792dedc307b1a02fd0b6b5d66303a7215c2ea8ebae5d91129ba2b6d8f1045656177a2843987417edcb7b0073573c1069b41b5b87ca56a0ebbd2507d5f3e223b845f761d2e5350511eb5472573ebb18748e8c52156a73800454e5e859b8543ab3e7f5044058c17cdb0f4e4059e86ceda34b403e52669cf8925b0998c88389254d8502ab123de5ff32fb8b1e129c21388e585701c2e5c79e3abf15f40f906d0c6cc3852996a3bef6a92694e6b1d3c3e0fc88a2810e5d2ca1553f26018d324fe2e2ca794e0dec66132c4fd8ace0020ae855cf004ac1e8147acbe70b3815750064299c0aa304a8236d9e5fc910fdd044ed4b010f4533f8213dcce5a1cf4a67037988a8a031d3ba5c0191316408912886b49b36a004d2fc7d2dbe9c7f8ff1cdae7624e289cb9ffb4be11ee2465fece895f7283e54ad1457a9ae4c80ec338e28d5e3df583f68b3ace02f520368eb70420dce33294096d664ce77e0c3442638e49012b792cc39e1f580ae492c56d01fd0c5b8d1a9f0ce7fd8592146d08fc3adca15e124fa1d6436e57578f5de5ac75db15a44b10b9749911e756ee61fdcfe9c6113753282017b78bccd188db0ed59849230695231b8a00190d6e3a3f2101131b60b8f1102634fbf691b80a8edd6d0d03d8dbb9adfc0123391437fb1add8e9396b3b924cf0b51ef649b85071b89c0e9c7b958d6e5b767e4160869830c35106b903e9c1de3f8a6e527e4f894ddfdaae30405466adf76491f0776b9742cc75d0b95b5bdf777816ccc031013a0eb24ea7c4a2d31584b325a3dddb703c208e2333a6c17355200e4ad10218ce9e772970faf6ff3d3b88cc25de2f245fcfe65a9d6d3ab2006efbc0cb010e977741f03ee501fe3676c488b99a127cd65c4c7c6b709742b89fccb0970ff69ad0319c1dce9e486f21d4e6b9d67ac853a2c9cbf0ca811cec1ddad44e5047d08b69c31d8f39dc7b0401e773daaf3db5e32f042251e49c23039a85784db1e8a41754c657b60a226b6955b1c5143bd5da3e2967a1a767faad6fda60ecd35016964044fcce3f04372e6bc0764a2174c2eb6de243329609657b0b1f02508b4d7b52db2baec02f68d9bfc12a3b241d7d33f77182563b99ebfa2ede80e017ae345c9003a7dee8ee23adc0a3286ade3ad2afa8f580f09c69194fdebd59714eaa49e6e4569a061c3395d30efd8df53d0624745d93e3fe827c057d1b3ec5b961473d601d047341bc14c53252817b19e34061ea688d1b18e128f6ff46dda390f0c11d4f831d8bba07609690feacbe9e5b0b123994b2c465a16c71d0f12e11de318a83294c4208c1f3c5c907fe77e8ef7e49ce82c04469402750bb0a0baee6ef30a5f3d415940a28f402be43dc7ff0abe098cf30be3abc781fbb613440ab15ccb930511613b4e9a36232ee1fb23abb273e794a8d5ced9adb45128a3346d6108fba5db7ea64f2d759f3cbee0b0324ec279077a055db4cea7571e5dab1e6728a794b0c1fbd74a18a829f8233c6eaa0a58145905740bb27535a654c005c8508a35883a5b8f2aa2d18be6812a337d4638a43db73e63c4bfbf9faf7a856ffd82335e4cbc67520c66438b55a586090faa9018f1a1417f594259d4a74a86d9cceba56b3e235e478e1cb4955c6609b651e0d95d8ad5a620f48c56cd8beabea94642a22085cf1def22dd1dbec16fe50dbe70bd708a304194e703d71021a22830a123a1f914325b4125097fe5ab9f7543cd3e2225e1856f1728ef4e4947c4dfc4cc543547b3eed5382d8ca2dd5a66bb60d6c5f43979de562a8758a852ce88a58862fe8a0840f93115d1b46710ae58f020fa0287a34300daddd79dd8a17156e1845f1b6ba6731e1429ed6283759190b0bde7b172b722e0843f7b29f5f73372248789044cbc06460c17ba00c1c6e562bf6c8dd9196849467acacc019eb7a22ad8a508337cb7b08174a34d2bd882834da6fd0ef5597629ae91a26822fc568ae97d5bc802c7e5701696ed27e37eea280c555ba9718c7d33d168600c9c40e0a63715fd002ba8969e31e4b1c6836ac8ef1bc286317b343401ebd2de0c1138bfd61fe7ca303653ea62929ced03c87403bc3b4c4f4622193f8361bc1aa2d1596523c45cb50e54aed08d14734efbdc01fa4ca5a341c8473596f9bbebf2d896117adbc31569c9fe18b2feeb50a53bfc5d5a28434eae40efaecb83d7f83db5f9feb42db0bafb4d652221f47889cb470c4f3210a13730a4022766ca5fb58cc85fbf2004f94f672f8bea0fe39e56b1b51706ec0ea27407e3a64458cecc0603d6f0382a56c92658203617434663c1405748abe9aabcfd02e36573a94ed0c0bc6ddbec982061c58f389aa062073f491faca06e770b9c07dbd85c81e678b47f71d67e95a0edcee7cbdb1fe022b601c931467d3562cfaba67865bfc4b5a807dedfbaeec58223257a1ddefd3fdf0aaf0a7e134119beca904db99212f19d9ebb2a10c3230a3d85789cb596a4f35a29230196af36d4a29fd1c68fa32bce45ea7843d30f80db80a70ec2cf2442c9a4b6098f4c874f810ffbee44e536273d2711577c067566d5782928e9a88f484e065f44d252f461e2d4dab33bd868f6df57128ce86b189bfaa3ddaafd380995bd350bdbe38e693d9ecc74478946b1b7ea84786fc3bed3046d72f634526ab5824a65bca55a1930187d2304fe939cde4bb0c60baec506a7cd375563ddb4a1656e750dbbd9bd33d05e04a42778ebcf0f12b96880ba139299ee39f6d6e6954de415bbd7faa39fe836af9ce34dcc2532759b02880801d89bd8e01355522ee487cc2c3bc7b0c7a4c74775a0dea6c55d45ccbaf5b79cb28e785d79b712a47dfc2bd88ae3ddfcaae65b6b958ed7baccce2ceefd3856ecb4e26cbe11575486bdd965dcecc0bd7efb64c68c3cea45a745b5e89902508d16630c3072c0f90014ddbfa1d62c632f1353e2f67bdbcbbb6f6033ef3b5ef8be51da03b5d44c15f999fefc036ca78368f09d66e0bca0fa49d8bf4804c75d38dc267d2fcf6c15c20a0a3e8ad12956214d2394d7521ecf86dfcc70456f4d0088d682c91f2a407ccd56fbc4d403788292abaa2a7d11add485aa32f9b81ba2245a37845df35ca1609bc708ced781a4f9b444ab405b1b850cd2bd1022c9140a38d50e36c917ee037b5742321df55d696477eeae6052d57e80dcc3301633fe03a81684e5df5d911e18299ef6891840107fb90c78f76b473f8c667e082df04e695996b599a2d03f3b48c2fa6910294a9bdb78a4e20d818a74af4c45f6ed17885a883a97af0d5dfac59691a8946a02c389eea2826624403d8f1d5e75552f720bf9fdab63fde7685ff5b0fa1de0b2037a60b79afc656dc2b9b25e48078312b6828606fb5c4f885aba21825020858c0651fa3fb66b94b6b4991d4c9f55139c5dadf4dd37d930b504177aafd3a7cca4e32a9e9f58b8411588dec1e729612f4e9282db9ccf3c1074c794942b4ee9f5670f2c67c05f190e274ac5835de115cf9cd149703e6b7077d2000e02b50b2b94bf209643f1994bc6408d42cac373807c00748cc5aef4eb297df4871273aee206ceb35422337b2c6e1e16dc4556e17c1cbc2e3c1ceb23a9c7e91043e122ffcca74a669466c386c163daefa10841f099b181d90d3f703df13787834f8c8f493737bcd0ac67ee4313faf80cb6743dd2f6026e7e47a9c73101dc2a78846852b392e9a7a6b22a81b327414319a43c44dc6ac1b79f3eaf4eeb80f02ca76ae7712e1294e84da35711f784ecebc9f38ece70598830203a38c0ce7c2ec7f1910923715fb648ef9a5999701f59739254e32e8f0e0fa7fc9633d2d4e75ec231fbf7d3e18d02007ad20855facd99f6d9a702a6b6eb50fe699dff28fee1abb59c2b36d157007c97f0c6c1f36115c589f817ffc3c14f42183410c817130a40edf8261c98085a9cc0738e5b70ba0794960c8cc0d7973307f1c6adfba47cd96fa00cef845d1e7bfb15af83f6f051f642b8afaab1c1b39a9e823f3f23b5331e96edb9d278aaf09d069c7e1b7d50e7342465b5164e3e088e018fe36e275fa400a9288c23b3ee9669c238c9e002269e04450dfb76c20332acfb157d37ee042bfc989ad8f2850888c84cc37290e067c7e7539eb13cec1f437f94d88e82424448a2cb24038bd47c3fe15e9e30420b8b1fd327411a7b18ea6136ea04d81dbb828e68ab83bf00d77333706a6e070c3f02051d913b91bdbf50248709089d2014b0655f8047ef8dd2041b1ec0155d3b0cc09ac0c9e9c9788a1ffb43dbb0f78a7dff5348819f5d96b85899de31c0d6502c43ee2877f979d4f76ba95d2cff4708c60a1c28214e71e26252217898349f0a04bdc45434c42260d2ea6e4ab920a763ffd1cc619096d459c0f43da885c35b91cf33d0976e39705782b371206aa85315e6e79c2ba000d98f760d3eab2d8510d8a98f6b56ee3a672b4893b7eba3811b44b970602407e8be5e935934dbef68545d08bae35c8ab352825860d2ceabb30d6d5c462d6a6156182a6cc858fe938f9cf7193e0a0ad6b371999ec918b79be53a4845d28bf0cbdba31d79c84e9fbf1f4adb9479edd7b800220bf699e0a273898e0c6a1361e9c301cf982c676afd32eec0330bcc9ea99a02c32a53d7c7da80ed0807b18b6a5bdbb719e81bd008d76a3ef5c23e15fec047abf2e2f0a0f7b7b94421fa54afe8d916f956588aae1ad0f4c14bb596f2229138f42616c3dc8231e38df0eea95998b30c6bfef74ce20db522f54475a9f9fc6fb36ea9b5ee450565d0e23fca3c74d1bd0ea54f7cad16d0aee3e8901a1d098da1c95a87a741acf4b268e2b0cafeee95f7adc9090136f473c29fa59395ecfb25bf7cd5517f902db2580f6dc6c6c209d626c023960e51ebe83cdc9c8b850228a3fdc058f1d58be291fb40100321dca87d864d43cb2fdd2545a3f43e4c379a4d6e3c1fdb6feaf5ad3ec5067e0f707281929fb72013fb4c13fdca71e4fd5a964d41cb3763238c22d277e363dee633026692754618f62bc2c7fb3cef57dd1bcef089a35555c13277d8bd654915ac9737cae164b9ff1a0159ef2d9a08a8c6950ebe769f043d344512c78e33dbc99cea0f7d6136cf4a60de4dceabbd7bf5b12188c799b4a76b3d916502c819f6d9200cb46095a9ea90c86df6531ffa15294ba9146a81918cc653397a263fe83472c14e16990f72270c33ff9eebd4852933395f9145cebbdc433a58d03ae06261ffae099fd548959a3e24f25cd4e82697810b3b2f495d854717814933a834d600a6c0e2aab6063f04bc8949915460c2963f61f2b1e754b94d965d1bb27849dc956a82ce1f3cc6ca5561be37e9fd07090dbe37b67690789fe7c002a6a9d55ec053e3de55ee416ff846fc3c70a6e85a21a10e40a264969532c96c6058c3ae68344b8b5d359c08c5e5bac49b07cb1226f959be5a90332907cbb8fc468bb1e2c659c9ef3464813191ea9ab1b3886559f70dc6ca0fa11029ac3506c4b674ebf8b74a168e7ea40e1ad504d493e64ece4498a0b92c05e44d82149c966be22ad8a0f55259be1b4bea73bbce1a0b8f9902416bd977da19c5abf14161520c8524c2fd32895623303a0b125a2efec3d0af013bd39e83bfade38aa09a345a6c441cc4dd27b5250a8196158f1bd4342f7f7e1ae00dd160ef3eb8ebc01ecd6f00b90c86b2bfdcb7baf8e2cafbfe97a25f29b35476412f98bdf5f40d4c8f157c9564a76e0087a80eff4aad0b4f0df442715387055f6feecb35d1b047d465fece47d9db22ceed32d343e04f39dca822449dbd1837f1b93ed8e050070bc60416a9ac727e28bf8f71014ee33c2a4a67821815c6af0b6609ffa76594a1ea0fd1712b9075870c204bfeca391ad69c6707e94e818fb0e963de2fd95efb4ce41f5f230670f4d3cd9414ce654c9ca40b2d68c8c5622db40c86400993a3e16018f25d1b147700cd68d9d5b631ecf58b1186bf4c5e868b1f5564cc2145372628195586e117b27c420f4b0e31ce6c80dab9161ed5a188d296c9984090a613a1c2c5f0c8b99fb451838db2598437933183a0af601820131b04308cc87809503601dfd17a5fdb5f87ec9ca2f75ef2b82fa4a365f8fc6178cf73aafbd3c56af22e9d5a879d1ed5febec2f09f64b297e056e5fb9e8eb5df98200be8eb997a3ec5506f401f6c4eeed96e6b538d7c8117a5333cfc51baa6102ed0b294d5ff27a8c765bec80f568d1e8f480a33a5b7f14ee8d6cda82911fc152e68c62d644aa94ba7861754795740ca8d809550bf9579acdcb4227b391aaf815ee087c7ec263843bbbc49fbfb88d8668c5816ef9576e046d4178148c3b91363f7fd38bf605ee62b5e86b8c5c06524f7b51d930dcf138367b6a2f56e7ec0194090a4b0223670cfac6c86788bea8252025d239a97734df2994ffd5173f37bf4324c2f3c7ae3bfbd122939cbfe6cba68d33aab314f402b9bddfdd0b5f8a12a5c25e8c97e1c02bd0a41d3f6331dcd2286eaf560ef9a6e927e8952c3a8d7e77e6b06309e025944191b2e4d47468b247a9c7435d84a5436e798f598854b40ad720858bc030400c3470d9ec5bf4642e98125ac35ca52113726d28430916144302b0d0416025e741df995c66ca166e3344078cd8c2ada40878480580237c327b873294b89f59b89f79514222ce88c43d5d7040386613803791f04f710c128691f43185069c131b0344e389783ca7106384c43c2d18a01db709c03491f027381e29c348e2318502c6e98d03a23189789c13fc9b041c063c0130e74077b5267ec23b42556081b03f52f511c1351226e0176753d873383a4b54920f5d20ff8969ce0dc61473c34052d44aa1e1c88de838b6246ee603edde0bd120d1a98e55b87f198cc22f72710e2ea05e33486e909d867d80e93b6079e0712d528485e858b64e5b786436a6877a9d860242d893e90b336381077cbb7bce2e7dba8830c7bf72b96a19abc6ae2a256492feb0a9cbce27d64e0ce9aa0b1bdacc0af969d5a206979bd6b527a83d3b5e1372b41e5405e8a703f8b854a0d0ca623283e8e8f2653849af67fbe32841f254465281e897c463ed20fca5227d94e24a09620aa6d8b4c350e046fb60832bf2bdd12fcd136cb58951cf9a01d456c7a3cecd584e4f256286e77082cae4ec4c1b271c49dd7627830253b836919b3a65c5fca9fe0dc696cc3c267b94e8f7636169ef927a2dbb1ab1375247594939e6c65246879031be8c2f19ee3b4e0a627ee8710ba4738380424f85e64e0da9247dfde77d2c5f47b09d47e6bb1a26865ac5d6b0494bc708a5bc8503043f145ecaf5cabea853ffac0de455c23aab8920b5b764641bef57537df3969790b455b080d4e3136808398703872d18f1c64b26a2743bbf5320406ee0a9c3e5d7951f7c5761cf75850d8010df3f05b80cee5e766b42848b1ad3d53701debebcd7478b4818605904137d747dcecf5290429bd0494df2df7a9a8ee081ec62484ab082f86b52136917d9c5777269ab5e5b672a0453313e633caf8da2493c56f48a7c9ed87cba2e90b2102ebb7b4e1eebffe50678d55fc4d75f913dc4bc578ab69e279156b79585ca787375a8de64d24bd626815f954b6927ec3f479abe73853f7f08c1934ddc8120983b2124ca443f22ecda2a976e17b7564e159ec26c90311cbe23159091e8782f1a04fe706974ac82c414228e2ffd5959b4ce75a9c0d53421050cf1331d040d27e5d7f87f16c84a8b89f523f351719480e8462aade15ab9ab34947f5a543cc5d4d04393df404904909662fcf8e890b30d2ac7d2f6fe1841fe00bb9f73ad64e384ccc8c99c0e0f0a9b6abfd7ddb856a00d87603bdcd0ca5d19789b2c757c730ec4e370dad003d9717c9a8863c1cff595390d99ecd34f839278b8312a85b8e0b4bbe346911eb4efb33ae568e6ad8dec09cbe0245857186e7fb8710da3d72eac42184d06d47f0c2706ea70030389df5eb51211c41975b83a4907f13f31c65402cb7d476ddb50274f48443db5faa0d541d7dca29cbe88b12c008024e390c9bec2d8ca474029f0df6261f5bfe3b096fb96989dcb5e1a523bd1d329487c38a139b0c1d3c52e0368959caa9599c16764111f03a7c766553979d11378aab1b93ca573450956bb0a33adb4eca17d0427ae31177da843e957efa8a3dc8194fe90365613f9200efbfc79dd8fb10d3b88e9c62bfc12073ef245332a7dd05211946f4f2cab3da5d1a2aa857a023f321475cb99e016f5bb4261b4ea3c87d4c14c87c59c718f6d9a67f3cc7b00e5e52785b33b3526f35104fb54b79c076144d7082e5ea7efe2203dd6fa76ffa96cf9517207296097875dab72b7a0d34c87f0da4c7b777bbe2e861f34e7fbcc85b85f770c40199edf890805fd7c4281d3a0edf0a66b9cfee3ab7eb667ea271861e0468608da1b1040761a5db7769554a0e5339d09e8fb70099780846f026b8d36836785f3dc20adae7a0ef19d1c3bd2e344d8a8fd764d4387b34ceb5149be51675903413e53a180727a948c36ee7325718b38a77ce025f46279846e2d4ff6b165c45202c621f00cbd099ac84d5191fc3655794f51e4929dd5e85f1b85217fcf579a3b68e3e19d8431778c8da06f2abe76688f890bce9b988fa43f8066dab3a37ad517a08bd5dd38f32d13cab988d83cdbd3467d780136284d428cfba8db05c46bb43355ac94364a25430ff8dc13b00182275fddfe011fdbf5ffbeb871ffb0f3d61d48daa1b4339cb91fe62022315b1a9fbd60453e7b6788a2692d964a422630f02fcddcef854fae1c168b403d206b23530fb88cb4abf8b8d3be67403493bbff3ecf758d74c49677489c0203697562975e2ea602dedf9f19bab7625dc2bbf8287c2c213c6b75002ee8d6c0ef00b168a93d9b6c522f318841f26769fcc4d29cb2f2a930162d13fc6a96f94e1ec68920032e27f40a4d7a9c828b1a5ea9ac4311c986b9d1b99dd9e1278fde839e12d23c1c88a7462ab19fdc1db9505ee7ab9253a5e1841ca3344bd0bdd87e513a32863c452d28ce492f638057f090c36b301c82ef5a7d51ae53c9130d04c65ec6a0a61aa315b81dc47a85161f12048cc2c3d486f66aa6b780752fe21e8eed2b500ff1d2d774220b42b6873b55a35679d951b1bb3223c41035ab943a3ba8636c802fea35f6833107863292950144336262c0dc329a590e42a9c5ea0cf501344a1bdf86daa4d4615460c67b109a0a28301643b36cd94473276d02d65d9becf2564ff6428ced4e28eab0cc4725e18e52bfb823a4e72aa4f4890641a29ea89a8b064e77f95aaf655ac1bab031180cdccfe2e6711088a487e67989f9b79bd611d57b031018fb8052e6fcb941a95dffa543fbb4f963709dc10b8c8c0c40f6202dff069acb929d558083378caa297621a93dc008f1940dc5f1f7e653cbd5e0ed931f67d6a56e996c31a781bcd5cca4f4e10188eca1780f91cf4324703f34c00fa6104a3970035bddddbafa113a23b3204e59f3cea81b583c1ff150ad3c62220d6e94cd045d0183eb8db6b04c981e15e4214009aab1b06d12e0e8fc969e464c085c3b0bc0c6cf78a20a0becb77c5a2dcb80a24b14595e6c3b731c679f7c6e700758f43c3aca6bddd8c4d882d54272dbf538e265bc23ef0e41f3003c217f083a15f6516639d1430f6cb6ee3992a978ffb9aa59451a238fcb66d9aa766c09f299b06e14cc5898e0d188478fbcfe3bc6d3539c2ce5197d58a2964d2faa5b1f21a4047252ada8bd80afb7cc3176bce480d756312b446d5502869165a7e959d1d5e08bf978cdd4f4525c2872449c318b4558aeeb059b5f20b464fc041c4543d97a2999f9d72dbe574c275a88af6da62c012475f44bf11a44622e5cc0f419d741087ea1970d7b6849c26a0e340271c398d7451922bd292408cee216d45bb3c892c13610a8a86258b31f5a1d0a87d43dc3b94154de76c6e9e8e9bce94167492376e933db03c2c2a080d61ebc9cb116ecc713d5daf2e99c9570d1183d020147272f029fe389c53f3cee1aca968a89b0c28241a8b1ea4e18cc7062b35762905545c8bb17bc9f5066e47dce31529aa43c78164edf304e0dccf4c97acd8d535f290bece8ae599e7c311f2fad47e58a2777a551a29ab434b297ad2c6ddde5d598ef5bcd4616b5208a628dacf967d07475c3a13a6ccfc183f50b74fb3a12a98ade72a67ec4084256b829f4008a39c29a8f3b15b769b225a7d92c21583ba26f510f88ae178f24b48311a383825726b9b352f1156ecf12498dff368ca5f260ca0fc5081d344ab81b92a456c84ba392dd2a876a2be8ab32f3c01c4badda50e21d24b3628529650fdfa9e1a4f79a6c039ba298a83af4d0d8cdc3911ba6b6f33c29d4495a07987ecd4a9080adc7a42057b1728fbb8abf7be91aa6ac0988716793b0dd22b73e16920f3f301fb930a6978e829f543995587b6c2b0253b87d41d81c90b43c6a157954f0fe4712927889e76b1cc2c3d857d91b87b21200e6a0021da958d466297f167c420224541e936fb93586296460a04d4a79c7fe5b0fd988fa8343a5230bdecd95a9185328b1506ae9bb037d9fdc6533a352a3d237eba2f56c6ccdcb05ba0c0df0d14bb27ab640433e64714ed6a6c466cf56fb8d9d04f523601f8d0c0fc7918daaa833444518312b42b53048b596032c7da0e207a3a474be652d19aa5c5d5c92edd355434ef7dc0b8dbb04ccaaf34db2efe382899733c9b0c1eeeab11344b64c406ebe9147d8ee810e282ecbe9187a0d2841aae4ba49712adba9af1f12c550b08b8e47087884307b494bd2a2bc8cd15a3d1473cf6dd83f6b6a89e13e2e6401a48a2fc137eeaa3179a8ddc0584ed696507a04829138cd03b47a4fea7c4fbe47d96a8186a9a21d8b3f9bcdc322ac2d612321f6ac2e57bfd830527ddd6811aeb8cc153ac819c56faa8cd810463e131d98e4e47c29a6f91938bc20aab8449dc50cb0218cc3d35d18b31b51d440efdfea21701f78dafe15dbb2501f89ae684f29053fe4257b5444aaebdeda70ca38a86554f0b9fd267395f62ab0474dda004e5780c0a7b1cabfe2687106cd206b07e015aa3c6a783784e5e1ff63844e7c388598da7132e62d072482b7286d58584377a620ca587822e4f9e11af190786cf5521d571268ccb676f17ecd63659feee7bdd1516e591ef83debf3bc6934bbc0c3863d2179ce4331a90ee86d43f0506384dc0a8f627d632b0f5c4862f177eb0cb05c5467132dbc555c2d490a168bef679c8cdd5cb181d413971432461bddd11c2001c5cc4d32733b5982c42894d5452dd9de43ad6bafd508584054beab360378021dac4008cf03353054e0633666f1f367f45c8137a0292dd2eacc93d181088f57d7a0e99ad45e848b01f8100b643d8cf542b7614100cbad4bd9c53c65db8c412b5d9cd147c6a78e0e0f5d3db99785f3ee6514e26e1c4e8ca794938d34c9e1e74743c433c72c1f23ccf09e49605c151af3118522b6fa1cc7db61eb2aa4edaefb26c4eea6d8bbe3e1f001eec3e29cf271290ea77860035cc6e1ba4fdb657c5361065984e679987d1ebafbada56d225a89513203235a012e2bee32d5aec4fa515c3357e88c94b2f64f6ae9bc215f606e8868ae45f940751bfa6b8437fd53c979c6a1a6dfc8247b5467651a8b91bc0b162c774b77183bdb50bf52bedaa8b42a0d2c6e17763c32a7ab10255014c8760a2d2b9c2355eb4fa52de813ab0fa32917d17802a7764e9a97c6a18570425dda9032a44cb94693594fa300f31e318e26bd24fa113ee356133e608a33c475ac335a49838c2cd1b58f81e158ecff06ba15098c73ca9da8df9522b72acac0e5b352fd193a2fa1dc2215c2728d3d8d60894f55223b8e5c70b602bdc30bc997fdca09ee4f6dfe3a54aa5f583c0c41a43a812ac65c6b52cb629f1a068a6691498d1a6b98defe9c07a0aa803098f8314ead887c41aa6d01b4f5e0c4c95175ac700db0a8f1c9e31360a3d4309008304547a998163ce9ffa3086f84586d77557c50445a8dceaa8ad42d22edf27c3543d4af933cc1286a5823809d665bee6c7358aef4627d3a836798401faedbc4dd04dd6a32867985f14d33ef9afa185286bb2f0d9d7bfc634a0cf45d3b21597764964c14b08312eff0bc129e2ca0e0cbaa2214f5cedc5873c447cd87fcab9aacafa183b04843f217871fb4a8a5506b2e626c7f1aa40f586c02439a4cf501dda15d32e4fdf9eea83e5b5dd8f5627d0851fd813dfbfc0310efd15f3e3a38fbfc1be3622fa081be67e5ccb8f97f737fdf87a92012048a691d274c39a28c32eea3baddffe75ffc7538a8860603ddffd43722a1a1934987f49e8fccd89fdd5b8032b07166ea006ffacfd5aad4c5830fa938989163f9309d9c9f768e707eb0409d94a828586d63368af3296164f76eb8978074668c6c8ab81aa35e2c08302f1b66aa12b84490e3dc12ffa4acf710c7cbfd11da36914534bc7d8b76c1d08a0e87733c9c752ec4d1d4d184e292ea8d08992b568c4a16dac582755412f5cd270245b83f9a304a11ad6bad313726e46db27e3e0e17e89cd5ad70dc3ca29e7de39dfa46132110b8de4524b34fd3d9211bebe208bd2e220dc0e8e37b3a3fca0eaaa5b84954505ab78fbd9ddd1464fb2178b19b309623ab58dc68324ade2b82291102ec8dfc016218b64b3177b5869fdd84da18017779ec840a127f42748aab1f4fd137b5b9fc41a4666093e9de3ce9b9012aa9d938b848dfd0d88b80e09bce747b93904e53f4ce44c520de5878b97164d6e50d665eb6b5ac111400a83f97d696c9dd03f533dcdb90249c3ef1448dbe0023dd76d3123a3d4521eeb0488d92d0e375b6bb9d8843988729cbaa8353980c5daeb9f15c85d38b5d130f7b8bd89942626a868cbdbb928a3c2fb14dbea96ec620582657c102dc0813c99f94d798835623d670b8f4969e03bbecc0878215130e7bb67599301997c929748e7597d09c4829aa559292b06276fcd9298478fcd14199c4562f93e7763f3089181ead16b121e6b55227901548a915747db9b5bb12cdc298a2fca02823b66c55b678960689ce34a71c65dc8f728fda304fb5e72ef05dadb8f72368934482a4cebbad31825708eafd2b36f0df939338d3d0e140d4ce226ebc48094122bf330f7c8cab6eb88237b9f48dc1fccfcee5ee77cf9922ccc8221a756e045f9ef032db6d8a56f2038e50ba8e4153d890a52330e806a083ba6516635069059ee89b0675d6d70dda32cd6892d0cffccbc472db271e1e8e397f0cc0d5a6677e517950c2ffc30db5d2a524d1634e2112d865c23fb440caa70cd7bc16613972b9d61803684d6c51415b0f979724d98c3c7b5cca7492ae615eb8d34bb0c7932d51fb017465f7b3721e8f0ef84d3f6523063f5897e6506e16163872d1031173c8c01fcd3f495165c2ad00b5ab1980fa88e70ecd6ff82bb06a669b6a4d0a99206408aa070a3212410fd227670fab24d1dd01a64531f9b93da0e2d1a683b627fe0686ee0d49791b4afd2224f0684cf9522fe8082909b1ff4be79328bc76a078e9f29869fc6a5ae8a38c0c388b507928f3a8c3a43eb19884b3484ac1ca9a88244f935572ba2ced0c0d158498ac68b27b0b0343a7164430388529fd498740bb8df24bfdf2a45f32095e2ebd2f2dee202ee8059aefe0d4ca36f06b95e95a7bfa1f172816dfc7e05dc35a3f1832a495f947c2d8756e9015e11c04692800284ace8b8d4226612097783da60da250aabb15648a36fd853b637f5a7ddc0ad1a367acfbee37513753eb097ae4123f5c548c6c15bbcd831cafbd6694b11d557fd7651a3be4e9c10057357d5e11a1bb86fa081ad24c1ba3d4100a72e042a721885f93f3474a52b64902b42e3a3d7299c359443164e5f510b4694678f28792cff8781011ff3b1ea9e3d9265aba808b08f36b386a19a44628ea57a13f27a71fa1f34d96c8b99d4380d5e805d3f2869ca940457001e03fed5433c71ec9fe8babe784e0249582d0d20f89fc187f8a801f76abc257a7075a99bea533662e6e5431dc24d4c3766c2a161e775ac01009ca09589ec57bad1ed1f4109e126c9ff6404cc5cb335c91bdf92de4df42ec4c564c819a51f4d5279b669c80a72bdeb2088372ce2d541952bb01bcde3281bd8f332dccaaca4cf56ab38174c10e3df308ffec62b0de8216eaea1e966826c8cfb0bab019c784e64061eae8b815fddf27b6a5bf215562b6e366978e7863dfa8eba5008756a97a56c2bbe5472994c1aa78193c71707d3752d25813cfdca6cdc483b879823818818e84d448c69bc855afc135c2a8dff1587bba7b8c491c40b440b63010fc115fe4becf9daaedbd9a5d5994747bcb4fd7ae6a5946848e65a89567ee4cabab5778e7292c2af64f47f35e3b5741e30ceb683684c4bd363d442a3b24ee200b3600b98a8477cd6f890477d02d19b0b0a3e18cd50753d317a69394bbb0843d604a4db99291865cf6afdfd4583dc891b58d858275ed0f9e6ac47f3f5c1748f7937e6504cec1f3b5d684da1c6caaaaa9799771584215d6b250372bb290857827fe88b0f9f0f3e17ef05c43c2a28676bef34b52b9f61190a40d98fcc52cf76797365cbc4500ed8e718efab64ea9c65e3c9094b8afb063b70e741aacb6203e3c4a055611eb1844c2753ef6cefa9438c7e0d5a12c2e9bfdf7450c97e7a29d75b8e827e0204b28f578606fbe4c971102e78202fead979448efffcd618e861e70ca99975ebd166c1fc6a139d76be3a78c405a8a6c3e41daf9d9ca412d31ffbdabc15607b0a14de2fd4d9c35740260d6e6ea37357c6c12d42914dada7ba2077dd3060a36a6796fc7d00a7ea2e30a58729af061899824d2bec260412d28289013632bb5a07524ea5552b168ea65e35afb5cdf4095f59b59454ad6c62e2603c00f35eafeed168dfe967d4b5b092f4270d8ace5e0e8e68d4acc1fe12c1c0a140434406d6c62059610526aeba0cc11925f3686e53739fc984bf792f670c48da470f87090a9d344fc661c35890d5b287439434e17efc4ac1282954c282cfeef3bf49a095dc19a2c7049a7371af72eb10c02feaccea11734c313fc8ecf7617da0eed072500aec9da52af4141aa8c31bedac0028e8e7d73ef2ace3c8d6c79902a3e63c2951a36b25612f58198001d9445d91f07c5afb14b52684dfec71a162bb04456572e2c8258a796243bd3d96da875d0b4071da20740ab0bce795116ac0b0c4adb48b967174a803b3ffbf7415aafb8f40154f280254d30acdc29cd080c1d4ef820899ec508e062ebdd3ac72c5fcc788af26878246ce655a6a94b8b887474b93c5c9da47c11877e807ab2c3863f364b21e73262c1ca632892b55575dee30e470a26af8d930e1cc17052c17dce0a69d2153d4a1241c0c8d631621a62eee5d744192df1ad84da111aff074b4bbb987431dd92d41c6208f94a8523faa3f0e919a1a5f4075d0c5736f6ca3c742f314e9db932485b79c76681e7667283548ab9404106a41db02ca47f30b6ab09781aa645da85d93ef95ce722a9a517e7f6ff7a0b2a6bcc6682e280689e02d8d759b8207a8b376df2a955aa353730904f66f82ec11c81d8dd7a799a913a2ed3f11edb81556968a01770d98aab43869117c9d5523a6ccc0a7bd40c35573d383f01e4c3c211cabd8802ac8e84c6a8393fa66443933381f768bf8c60d711b6aefcfd458acd15d3f45f3ad9545a0e14a2715f41bd64e166252b28372bd5036aaeea65f892d3917c8e60028651a3632376476b1220f2efc42da134d6a1c5c443dfc9f4d6f511575d44d28dfbb823cd37c2ba3734459192f0e2e12c1d1081e4537747785b036018c6c1f41a980785f4253e196746cdeeab76c4bab4901d34fb5bc1d663d13651d8993563aa7536bc722e7643875e9aa33b47adb6c90d13192b80214c6e38d85588bd8002d8648576b1d5ebb9a09c6cfc498cfe5d0a2ca12fd354245c5d67927003024636e58568785fc0bcc86d437227e6f266d56387f6d6e0a24abc1d2306deaaab567540a6eb06bd33ac8c3592a098af3e04741985b5942dcaf6cba3bdd520302cf07be098ff282601c74111a571f00f6add4bfabcebd79d2a001244e6042ec16e6809acdea5b683e99b315c5f76ab5b39c71ff0a71662d54961727c05b468360155855179724660c70bfc9c030ebc428b43ca502c4ed7096555253b9cb8e9ce29bf151fc37cab5d9d829c9ad395002f36aa09b0034738fd8783ab7f9a37ac00b30980b0b110c1ff7b61e4c6397da39cb50dfccd85449b20c6ee852327033ce9aeb35fe481c1d3cee43409646c1c28f2a4b6995134aea9c9a31a75733410ee6212939553e38ac34f15381c1a02d93892fffe953e836b695e25733588ebf355b0bdde1a5a0390888917fed153ece5de8a01e49fd0ce6f03c3e675614166446a98180178e0145689f30d8362d20eb6839bff658d0beb88cbe05345a04ace23e933616544b6cf1351d0e02fc28c8aad0c5342245c741409cf6ac1013b929390f956d98fcbc88d7fa8f32141e2676c49466c14f834bcee4f3ce841b48caa8b554e94f681e4e151aedad5db3c0ee506c166287d12f541658d4d253f7b0d4947abcb4030e689c43937921319c12ec43032cf82b7dd17bf75e8c7329ea028216b934df52d6cf0349cc9813a8d12dc549ccfef052e223eaa1e389278013cf9a6038c5f322b63059bc15c52f55dfdec09dd459790e1a2d148f5803556c4728eb8f491c2a8342059d0575190b41ac8e2290af089379992a95f8b99e2576fadb03e979f4d234c109403e00d4478ee3c4108bb3a0c6f13806d24e2326dc803442dd461710d8db46d9301ca6b3eb8ffe1b7f568b9e02bce0b908899b3af951ea0e9cb452f40fee29ee3203a256d582647167d3b79d44635e1fce79db480f06b75b004f2fabf85637219bbd94cda50da617b974bbff5895560556fc5e6e0c40c43ec41ce8f16c91d0c925004e522138984864bf6497ad4d85473a7cabca70d7ca00a62665acad22a595fe82c84a02280e5f47eecee95282c4c488aaa6852f83e936d5a8ca2648443a2e023bf967c7e6f31338090c777e8715b32911284548b60b2bfb5550e998a20a738a095872c9250774946513f1a65e4065e5413b36e0a9ed97810c553690ab9541562ec334eaf2eadc672c1b339bc60a7ece14250c0558da3c3424c03bf028a82d679d0ab7c10ea7098fb57b47b436b9f85c062da49d32f057a2cbf7ce4f762a35f037ca4ca45ced4d29e87be4af6c8e8029d2b89673cc1692bacce2f72dc67c21f2f1e8e479abca83f3ac22329297864980d7e47626c2a0e584238903de978078eaa484e33e525d64e761c376cbca1ce1d4d2784578ae21a0319b9349a99f9822447cfeed78625fda6bd911add1dba730f92acad4fc6a2ec43680d093e681b496003962a734c25ea531ccad8dde9845491f3a932dea52a09f0ba6a7d50673118962ff8b411a59a36a72346da58087f85cbe6dc03f258954f49afe6ea826ea4cb61b62899f9b8bd2e822a999626f705b16b02417eb60b0ffe54f776f22b4a83dafa5bcca9bef0c8b9bec2c5bfd64c8d22a6da83e96a9f57d4827bd71af60366e179bf6bb80e950c3b0d978609c7b4a1c6c40fcad480a9ce7d78d2b1e797e0c3cefaa948587ca32d58f3edb0b19c4afc86c803e659f4c4f231ee1a96823aa7c95fb326d1304c86bc1f07afb37c5ce02a7bdae0b1f3f2e6de03b9858032abc1a74e0029c6b272036592fcd6c744eef2ed743ab5d6989c947095ce05dd1ebb4444c7033ac7028b56309c55a5039980e263c839805ed47164a75319608e44347b153185a9a8040917cf6f1bc453e0e67ab5828ece471807d8822163a0c633d425bd3f85a0184c7f9d2dac968a8b9a79fe96041149c8de726fb9a5943225199608d4088c08adc48b7194055e8cfba07ce0dfcd20bb8b81bae36862733c19fdb3be8f29a27cd1e83d48f6de6921cdd35220805486eca4ef5e17195e178773399c7349fa798758cc0d21e107635c766023b42085d6d71b1fbbd7f71d629f747368ca620a63e0452f78fd0b4af31715dd88df93b972edae8ea5a0c69963c73892e92928c79e61810bcc0c45614c1b21f3e8ef7c31e01cfd40b5c0435defbafa5e9944cadd4aee9e10969f469f4c6c23ce5d615be55cfcc6fde35cfc173158fa5d3b8e27137f13b2f2bb276f77d3000b0f41e27a2a87a07fc4148d85b8b0fcc65d8edc4fdf351a4defcd969f73d6b9ce90d407e3169e22fe849347ee58e4c7bfd93c05bd868d0b43362c362c4445a8f3ebc685f75b7fde0e26cf6dfee8bb382347f6f3372c2c09ab8a0465ebedf30788a2397a068cc52a1adf50b6303d43011d036ab44b225b7c3382af004c84bb4dc311e72c0c367ef4fcfc547197e5f8ef4a720393ada79725089badb7d986c4f88d7a4a419224c9922409e78d5e4c94f9d55ab5ef28fc7ea4d15b4fb36559788601ce3dcdc6fc0a7f24faf834927093f00f9b1396def0d3cc51c74fced34d6f104b46fc2455a53ff97aa2d1389172c6925c786c66c41138a51ff15b27e863b5d6974ebef475a4d1285927226b26ca0e721952db85c792ac6737fc1473ac29dd5f33b9d6e4fa02f75013f1d3914682f21dcdd83ac1dda7e06e2bb58efdd2579146a3246d0fa1e08e5a6cc251a39c0b0e6c3793657613ff869fe089b56fdfa4d9cb5ad34976ddf093670af88954faf818c871f364a47c7c71c9a1a4f2a59294370525872cdfe492e59fbc6449fa93b75fab46c39248b99444b6d84f23dc3d950db4712b6bdb05ea62fcebead8701c939bb65061a8696bc9affac89ec6789f695e6bf210c48c256be7e95a103339fe8beb3b4b1a318dc68c2a8f87f8f5a63c1ee263d7d431e2c78dfe85a9731167ce451a968d5564f46a92fd93ee61b273da773bcc5cdfd1d4f8f023fa2c485a1a8d519665b8d6cf320a29853194d2d04a637773a44b39f084e4851126217b682e69505d28c7afb8ebdb75bf6c636047394f8601727c9b27c3cab15ed975bd6b3644d9e6c9c4172dc17634344f4637e00101592066d17ae4267d7f631df649ffb2e80836fee866a22216be563ab13faa0171976ecd6539f9ce27cf72927d9082fd7c23fe10f16de2ff109f74ed7d1d6bf36f47b8a33643dc6dd8bfe7c04cd6f11e0acd157ce7efdc94d2170379c82b8773f0d2b00bd36e9c8318188202ce411c18106208c891bef60f41011c18c8a15d2f7a4dbb4877abc93088613b609ded7dfaefe5cca7169ad619fbfa008013457deb686433d28946fa4e22fbc92da2b3f5ec7dc8d90c8dbd5d4dcedeb32ccbb20c8f5ef4a3fbf253b9bbcd6e7dbf58fdbe222c730ec234b1feee1c166e9eaa4d5ba41a8d4cc33c64f6777f0fc330e7eaed0c7b4ba3813de7fcfaf7d6fbfef93ece8848204db8eb914dff6ef7fa959ee6d2db7ed8f7deb59ebec97afa9685bb2774bb9af7de7b33f9411b88ba7e7e43628d38c226285b6fc58861327db77536b7c906c6588f613b1259afd52fdd93eb83735629932c7b4777cbdd67b7e37247738cdcd19f1e519c75a92d2da69cd694d3825f7d988930d9654fab88ceef411f9c8335cef930e31c845b900dd4deaa061976907eff81c5869be5bb5fc1f917bf05edfcb06d5605e5e44bff208a347a8cf460908e015f05779f82bb47c1dd66c2dd56c2277484e7e89f73a3203de38717033e7c2260473db3a2257a141c0b3feba07c92b3dbb379fe370b6b641dc4d24310b53dfc5ef90b5ca74ee9c34fd6e7c0b7b239fda47d33d1b4af54a3a15916161af61ce760074552d63b5d07f96966994863c16f7bf1d4823f03eb6b5a671b8cb9ac8f3f57ee76ed0e8a97603067cb9cf3e7cb7faeca13775cae82ed3aa79d7e778e29bb0df9f335aa83a1376b20b805550f9aa0ea8111543df081aa073caa1ee8a87a90b3444545122c545420515161444505115454f0a8a8d05151c102151539aa2998a8a648a29a428b07d39576b2bf1056acacdc9761859ffd831dcd5d82e67bb8214486b8bb99c93a7ab8181238d9c2b2a7b9581fc96effe03692f3376afe693406507a9a8b7a1b0379a2ea3159b78b8f7d6b346ef4f01566b067fb1ed3c31b717ae43eb24debb7da24b74ad58500c35d11d777462cd144a7689e0663780333f96626674f7a1b87b771b2753bed494e9dbb99c93a324cfa36d2ddc824dc3f4368725652345854ba5d8f97725980f82cff5f24658af5362ed251840ff9033d7a7a3b57d4851a0dd4a579782da6b9ef7638f2c8fed34cb7a3f6b646a3f4b5e6fa9802eab07e000eb09a3469d2869c3b0b176144c680b0b2857978b69a34e906706b20f624d795acfca4a388952b7125a4ef8ec83a78788e6f2d1b7111af491e82fa0a2f8631f66d86f8bd1dbaf8b633d1d5debadd88c68d259ae8540f4f73b50b8197a2c93477891e38a91efe060d5e82e68fe891a2f91ab5f7ef39a78387e7223e00f31011d07c7d4843f34cf448d160264edf03868bb8de7a2bf2242f5ba79bc412af490a85735652345f6f7744b6d8873425d815cd3501cd339104133d523d7c123418fec0187f0c5553b01dec217d869f73a4d28f2f3041e8892ab63092f2873dd0a7f325196b5cd82ee2e8f06200f7e5a8e3271d565e5382edef7c08ae583ad467e338b2f53db09dc306421e324338b2c216a91fb3a7bd789982ed7ab55380959f3a1f52b284899f70fc04bd85348f9f2e0f39b01542e8437ee55811870db683447c8a60d8c6cb46fcf4544780fcc4027d381771628e11fbe275d001aee870eb0f301882305841eb4f9e6459d8c57159978529300476696e767be53690db3fbc351498e0c5f04f519973fecaafbc8d5779c9c7b2dcf1b83007b20cb10ef92ffe6935e4bf781bafdb080af6053a50d896dfa0b0397c6f1626e2f809c8c9fbcba41f7e2a914aef90f40d8760dd08640851895769f6b4187abdfa191a7a322af633b07753c64c396af5c22cad5e188490c893f1c10f83f062f85b2e507000d56c9872a467b99b635f3d1925bee46e42367ee7ab6bdfe22148bcf8ed7d88ed8f98c25f8c7017df719723fb6fdf1a8d9b0dcbf176370f0f4162e5b71fe10d1f91f24d4c514402b2e89348d9f8763bd56f7d138275877125fa0e2420df233aa5c2448fd4f69d3aa2092442b07d02523d52dbdbc0106cef78c80890507924524fbbb1e1233ca58253505ebb3b3adffab0b75a9972e72ba0f608857db98b318b4027cec282eaddfeba31bf207d0bbe175dce29ad48e1e55843778f4da1e0628c31d22cc308d3759615dfb2e28c944626583200c0aa0442b2b882076cd862f581254a14c10814aee01385134ac022c327e8167eba38411190404512205cb80e185a50051c9c5025010c56cf163768c2cf0ebaa8c28f2adc0043c80fdeb08228c660069e272e2a3841c3008190e1d320348b17862666388114dee0c40aaed842104050c21661d019d279626a1103a70b205bf474818b20d409da5660021341ca900616ecf47001058b832090810d3288c2064ef420c31c1608410641b8b8428e1357159064f8441c3cf0830a2141947841163af0a9133408af0dd6901e3cd0894208280a61c801177a891b9638c3148c4005264c6e1005172550818f2daec8a20b4de8600960e8820d3fa8f0041f4a5020184141912036f001111ddc80e7c5a10917047141b5c41341b6ecb716989799ee60e4fe1c6a00934dd9d5848df9a96090853c33f357f061da70770393b797bbede10dc64fab2ca4210d2b2d2c410913292419c223f45062083550c20c92e420a1480ad2e0686067a6a7a782811472cb20b5e3f21b727bc18815cec0451782b00384d40d154060020a2ac42007c84ca6f9693dd34d08da220cb0bebcf5b16b9f5ed357cf2494dacb52c4359e526aedb6d9d1a571ce0ec91a9e71ced664fbfe2fbe7f86d564eda5bca9c9f22fed7a59e37aca811a13e9ed4824e56759a9f4b5244d4fb3499646528e3ebb9aec28ca1e0898bb244a4f49d7c6871a2bd8ee19b15e963f128db41f3dfc1a1f64a9846f6ab2f6ae057122e4092dc89af6367ed2d9d6e42c3efa38f9dacd1e273fabf8d11a4c3d3fa0ac0a87923eab61965957a5d7d3f6fa71c84f49fc04bf7f029942268f9fb0ef9f5200f949f4fdb3c8435523b98fe41e11a91f34738226ce92dc2f570f5583608c3f54f58131fe34c876ffd409e2a75fe5c6f1c56859c74374b5efcefed517d5cf6aadb5569cc5baa4d625758929575cbfab5cc92417964351ae6492a120b86dd6be9f6cd964f95d7de0b659eb634d89056140189238943b3994e5108cf127d80c88c83321aa2de225e593256a888ef241bf894f513c857c0835cbe98cf3e5df6cd932c23909215c053d9838e3f481a65d5a529382edda47d5457e8c34929a2529e2e3e3e3f363d9da3f4c2d2d303418f0180c4af9e6b725e59c15c267e32fe8bab2fa82baf6917e64c75a9d779d27b1ab368a03d441d6cab22c6b882703bb27190744b98eddb67f8e7b41ae532381876a9f1703dfc26f233c9423d1accf22e8db70865e02187e0b19beb5c2662456106124d86b9aa559d845c1b110ba2afbae7d3ad7f1f9f11d2619ea2819f9bc0f741faee327ed3b89a61571ae87bc53a4b09dbbf6c9b5569933845f1787c939ab828248a66f65cef53ffae3e3c306637c862643971d58b7300966be61819ee1a224bbb2dd8fe1e47733a84cad9fdeb15c10af6e6f293bf6a3913ebcd7348b9a201e80eeb6f26ca008052a2a388b5a60bbdee120aaa17831f049d40796085b15ff048e0a2f0b9c931ce33dce266073c24fe17157bc2c32fc376465f8cdf364881e56ecbb9952c4589070274180ca9fe0aea7c850a577e28bae956bef3827e4360ffe3bef1015fcf3b34c467a6750ec9d3fbada8bee909457b9393495825f866953d3505ec4c7b059a7a9f464733bccccf9d7d57d75cfccb65ebaa20a9972cd5eb361ca328b6db3cfc11954ee82b221c72639c66f2ecb20032f263eac0f2b94b8777044d40cf7425b1756fb2869569390e3536be28c3a0eaa8b8f6ddc4922ed5d4b7e1fa594735a342eec47e8c2fad65ab34c73774d241ab9bbb5a413773f29a1a09852523aa59a5050525436946ddb4ca5936d23d96ddb469b48dbb6ad7f063b81a56dfd043b3ab5203420288dad83623acac2da9e07533b93d185073bdfc8603dcea7d79c8fd1c764d409125b488eff029d17e7fb900721b3c41810c9bfb30b7987bb059ecc952d07401c2427d8f7237760c9fe2ecbf26d1e133b3e96039b3917a515c47ceba1855f7c9a03de4fd0fedeaf4461fbb3f7de648657931f127777ebb2acddbe60fd5fc414c67461e1ab50c176bd63630cd63f624aa38d93d18eaed6d5f5ce0f30c677ec0833a2f2533ce2a70a14e4a70c8bf92725f445f4e406a573fe681baca13f27a4d941461823b5a65b6d5938998b5000ada7577b410f08f290e14a47b281f0ab6716a5d9d39c65343365a5ec242365361b65a28c665c60f4ebc570268bd419a735ff5994feb3ac9e9e9e9e9e9eee114929b17f595644e7ac47668df34d12c263bde3c018ff16c2691da12121a1d6e920bdd3ef9b48fb90ae7d31a2b781a8ee2dc802fdec8872d84b454464f91d23d268161991a5cc6a36354aa570e7a1414dd6ba142ea445db9cf3391d0747e240a16d6b212108c467ebfb07feccf76393e1f7f78ee6a21ff5c16c64b0fef5c9f948f33724b6a3a57ed6a3efd10612b2d6b9e65acbf0af87ea1ddc387828f7e19e73e1ee63a8f3c08a5f822d3df7610409654b20a5fc4e3b3b3bfd649ce45859bb6dffdc50ebd8de596962fde36d211137d04eb4aca7b469f72c137f9eb97aea553b11ee9e5016bdf582b47ff0a726633c94be8b39f9ee666c2563a4abeb8c3dd6794455eccb1600397fbe98f9f2ab4824676c94720ab679321377a87c7d879ac913775cbefe49b8db368b3b9baf4d0bdbf54ef7769e0cfbf3f3a806cd16bf27337aec76a2874f47b813bdf5fd3b5acbee8e9e0f331c09874a23a573524a29a5947630997e7d96b4ac287a4f46952d7448ad772e6cfcee25a1d39a6f330d6ab5eeedeeef75bfd7329a968c93c66cc764121a59269390a534a33c2d2d435b7d6bb0fdd5fd51abb997c17f650d966bdcc1b4644b3a717ffefa6bb4e4c62835b062fb7baf0a03f010b3ad58d27da867d32fa6bfe183a8f8e619c9568d5e922dfc13773d6c905da228101c1c9c2a52f0e5ed7a242177556409ff35d0ca8eed608f0f92231976111e6890bb27d4a9d6a291648885d004da5c66a8a1ea67f523a4640aa9745431d039a2050b0e4041ba60011ccaa0022652631862831327c061820659480151c2bbdd4c9d6fce18bbfd4d51d723c3bf9afad52b51cae8a4eb82dd0e5d4b0667206a06c6740d8c694bfbc5878acffbbaaea789209ec188d0766bca096584504a2931b7e539032184f1bdd7d92cb1a514c6d4cc34bd2e082184366509a9c7da5abfd6db7d85f0a5a45455e617ac31533a031080ff8d522a1289445c165d5fad207e6201e231112f70540e18e31073202fdedf063d19407a079936fd17f7068cf1ecfaebeb95f9b6fd7b498885df540723d8ae833a88d2573ba87650eda0ebbabc6b0d41b6fe87a0ed4154b6d6feafe06edbac8a7d3fb2d6bfbf28ca3fd33f48b2e2a3dccf1ded50393ba2763babeb1d3c8829a967731217b8af3f7c892e3287d962b1d017d70ad6410821ac2a598ad641082114bd84d2342a75efbdf7e87b9ba5a4134b21e47eb3a5914984a2a564757b6fe57ac162b5d099c37cd9a1d225c697cfde434dda4108e1cd1a67d8141cc6abc2760e3fb0bd596a3d18220160f16fdaa6cdcf6e560b967ac1070cfbdb7310f524fcf75e7b6b511f4c672d8728181f52d82f3578a981ed9dfaaa0c8b3e99dad10c71d354854fc6537e35a5973e3bddcf501bb7c30be347f922a7cbb472b0680bbd582eec0556576ab6659a8a264a118d5046d98a8e2595ded7931269450628239414518a8aa6b265db4a7571c20b968ba585b6e460e5e0325d5ee4afc4e0e5dfc377fc98fe15fec28bdb7aa8f88e1fe5df8d22bc59b0fdddf70a0c2c0c0c187c1f060c2cc89d279449f9a9788e9c10904353f7dfbffb1d4a7e35a9fb9d4a7ea4e7c36d79186e87d2bd2c27ff52ffd56ff631c612a5d6aee00ac6ac2e4ab22b3166f196de65cede0eed79d0dc24924896dec712dd243585fc26a810140707277567fd1dfed62f0f9b475feb7d9901376264801077080c185dba0cb8e11cc45fb32b840b6cf7867440180fe16be0cde8231dc3fb48cb1e825dc19c8e01ede3fc615cfa621ee730273b1ee2041946942252ccb04f254550ce5ebee561a0388faf5c89277121d7c2873c8963e1420ee448bcc77932a0acca4c56787f8c409573f048911f08813c1998f36470e0884032ab30491c024710055cbe8b104e09a1e9610e4c22a33c842be7c902ae70f4c8283c3b7abab4e40c0151f71fbc97011ed3bd23f986c7cf81bd794219e5bdf402fb32caa37c86f2d9dbb80e94cf1e45e6ed737894cbd2ff728519d468a8bcbc4302f0f7e6d054007eb6f3cc6cbafc9c2f3f7bfacf39a71035b0ce2f2e9de1ceb363b8828937cec12bcba1d1b88101b870090f3ff1a0d8e7e7708e478b12ecd32600f317bf0edf291baf53082160ceacf69d4c11483240881b53b2bce9461ce7e0df0beb854a805a1eb6bcc470457282bdbff21d5c558d86e927117e72c770de34a0e22148c0f8fbae0d7161c090f7616b0f88b9be7cf97bef11007816171c4476448f940e8f840e387b4f750a008f84a700f0d439980700e6117354ac830508f9d94b7ce31c26e279f8c994c34f2f6fc3e5b3f7604c667abf2f2f7f6dbe34b7e6efd26f7a8979c42012d0a44993bc09652e2e780812f7617e08987b27cc578dc68baf5a36af955d8300ccbf1763ea6ebe7fc603e6e9f22fdff1c0cf39c7d4b9ec5ddec63bc76f7a1b3827d6515fd2dcd4e56653be8d3b5ce9f09f320322d32600f39eb9c4b532a99935f7e11c5edece088892f22dabcef4e2de6cb93375293fa85c0530c05134e528b0f86b6234dd78ef67b893cf0366ff6b448e1dff16d139c33525b03a3290fde78772e3bdf7de0be393483dedc6c547740a067e3026fe7cf9de97ca6896379e06814ee17f9a8dced9cc8331377b1b87c127f7ef0663e00a7ecc810f5750c295842b47d9155ce227e99321cc11e2384fc81d6462ad629085dcc59c18fce42ebee0ca5dd4893c19be8ca7d36492e13fcd10084cc10e1e345f5fa1f6ef455a2701027334ec3c2e5d40269db441ed6ac5fc79441ed9c7ebd7e9fbad3f31ec2bf61402697714747005193e4cc18b4131cc71f8e3c9e438077f386761e75181ed9c27c3959fa2123f2d814c9ca7e321e54e0ede03116a8d7356e888e90d6a3d15c246013696c61dddd18c82633b9a3b3a232a915f6d081d7611dda4bbb09e11dfadd16b3f5ff391fd0c4f060d1dc33f9ee1a1a209deb5ba32891473660eec813ccef9bf88c1be540779a25603cb99e6406aceb08dbb0fcff19851d193815811158f1419e6a7e2d941ae5606e32a32c9d7afb0c0621f955026ce05d119f2c0155402934021a8051c824920165008024124b007f23c198f39560472ce63b4668c315a5122f9311255f18873fe457e7a9c23e29c47204fc663ce93f11f3f2492f8f19dacec9d441fdfbed3e863928ee1f10714367a8eff70ae7e2791481c264b92d0779824fbbf2ee6c49c27a38b2be93fb48758966f61f7f1c377ec681ae32a8707081f8e823c1ef3c34f11c34ba301a570ce638c3f614ffce19c431e8863ce096c17573efcd4c51c1c3f754d24fb4ac912267eea78c02c3f5a51c96a090aacd56ad43c715c0959ff09719723c7b7e0cd96b187b968887d1b8711e8949d3b2a3e153eca765f8ac610968719ca65f9b7dd1999478cee239148b489462f1afdb5b548640411272cb5ade8769d453f040584700efe0d2114f003dcecca92467644e291c2b6101ee7a04e10e7a0114f06fa83a2ce884c047498fde33bd927a1b6f7ef37c36fa27791ba92249e24625fb9b4c1b2d4c0f2e89fa506c6830823fc6442b53ce6b57e35ddd2b7dcedfd5a13046a0ff29d9f5cd3b3dc961f41a020a4afb6349a73ce51dc511d31127754be8b46ec9fdcd2c896b65751d936152cdbd2db92ca8f5ee59f0c7f084f502c9f91f07b3362908e616f1cc5203d231ae918f03f4834d2d78f70e7b98bd5ef95bd813c0a710e461ee7769c1383ddbe8b3b2737f1fb9f16c48bbbbbbbbfe8b4083d6e03bba5c0f6db40eb61bff56f095dd7755d57a73a93696b25b2980db380105ef9f3eee84c43be653590736ed1cbba607777ab9c2bf2e34dc4396f204fc6ad73d1390b1d88037120bef2635faa8381e128b5f6c5f8a3e0d8ae81f090696e55964ee001fedf48a9d10c1553cf7bea141dfb6994de8db3684d69e37b7edaf0083152963244ea29a49114f991f7a2ff28a3f1ba315e7f703e26e7c30b27a63046bb0186a8b26db2c27631463f459c65910220886d00e858c8848c065bbf9be0ca13b62184374fe530b83fb8f12153e77cc85698968061778f1ce49c8ff859062d6cdc8960080619a0d4b9913a9f0368638cf4a6c16631df64390c29524801b2fdefc9d0a00507f7c8768a93262d11df6461f8f899a9db949962a46a889f6599c57ce08fcc6077c8f725aa0079c4cc02449332c43d7ac44800276c64818d3f2f19e24bf564fa61150e53ac6829a39fa446434296983b2b7797840ba1e10f1ce5eb1c94b05dbf3fc589f16934e07402386125ee20dca90fa6c6f8590621849847ec23f764f40cc744740cf9f25f3c198d773c19f97206f2743d111045311f397e8aa7ecb587f4e5db4094e8e56be0e1df76c8f8416bed6813e1ae4380b281dcfed13ebc71208a880b773bc819606b0ac1629ffe6ee772aac4ca1a56d6b0c26485c90a139818883aa3d46e6f6666650a82ed68501002e24f4eaea8dd829e0c518eef3cf12dddecaa5734287e8dc276568e3f04445d1f1f07169f83281a0463224a5b594f067d8edb22e5b6b75b14b67b40b9a77ccd0c56624b020b8297cc02c449967f52817ce3c9746ac69341ffe1176db0f0bd6740da3f3d0362e7e956c29341b147f16462b6822822a8b6722118131fbb43393e0d8228e78131f1b9fadd77db77960669d666db56ff79380f3211e91a487c2238ee7fdb28c5345a78c66ed18ff4cc04758459939fb4c7e8e84517574b74b51af3eb63d766d7a465d6bb94f263f597ef5c7d5a95ef62f7ba5d6661b62ce74bf857cb96ab9a69adb28da4834c4229ff5450be351a297f521a1579327e5d4492f0382fe29c77b1644524cf4f423341e5f6d08bc13ee5b6168fc384b0084202744465e427bb5de432021396ac544c60b20467eea0be58eb2866b7fac5decaac0b5a97676fe32e5d7a75cc6126b321955ed75bd305ab0d6859a80c377cb5c546e76ee6313f71eadb9e0c76636e6cf30c6b54297a1b177d1d6d7e62799c9f3614e967647fb1e4faf4eb6337bbefc5e856727d4baa0fd392eb57967782f1387fe71cf52a2311c6b4ec55f2c5605a328cffd8b5e6d6bdc816ee3ab795b10e0e66e6d4e7a7e73febf73ff5a7e16fc52dcbd49a77c855351e6c60e55b8f7adfb21caff5f30eb95e5e387a4cc45b469d6b1a7e81eaab4f3412894ab4f49996d5139a443ea127221b284f6ba0bcd46aa4bce9ab2545d7db38ca1d62ba34b5f24fb3a1f2175e811368aa20eac1b933854c9e29c5ec9944ec92fc3eaea2123f55215f79f16f7b95efef9f4074a3af4223fded7aea6936e4e4b156aa49c4b9eb4feee471ee7ad29d459cf371eefad1f5a23ba570ee7aed4e21ce5d9fddb9e3dca541c0532fe60f8cb9de83f2f51650bea62a37cff5dd8c4ab01b572b57e55fdcedba0da350eeec6ae5ce213f51dc4da11ce3f630d56dfedb559949e69015fdd42d7e765ac81b99fe91fe3d947fa57f24130905c5848232b2a391c9f4365e4d1a86d5d7aec7300cc330ec6a9fe93c99941a33a9d5a8d3fb452845d9db38f6d98b94271e97a2e35ccabf7f8c071dd876427e3235d6ef9fefdf4f34140fe5f6cfe3b037dd26f238ecafdb3c8fc3be74dbc8e3b03fb95de471d8936efb3c0e7b7bbbe771d88f6e4bf138ec45b7853c0e7b1cf6d533cd8695336c837c7dd750bc27d3aabf2ecc0d051294be90a4f4509f2236e7879f565689a3b0af3a16485d5277e863d75ed80a39e77fc1c15efff9c2284055be35a7c41d0a104551a11cb15628a5275ae101f73a1fcbcb9697df3d59911f4d05e4a78924a8b17832442f773e02893ab9713aa781b48e0bcb6d1e18f34e70b791f090ce0e90dc51d7c9b13aead2dd1d0739675946fcb59712d2991723dfad7bbdf7d5fc7ad782189560095e68245af84be9adcaded171ac24d227cb233f469cf0017b6a5cafa3dfe777ede3e2e2e2e2e2e2f24dd4a45cbe8b3c10e5c347139fa26f7a1f4b584d9a3439f9d237b1a572f8266a5253901e880ba02c80aec8720c50c870a86338619504b91a82ca77d18a94efe21450be8b56c0be8b40c8f05fcfa8dfc59e0c2bfe40fc4186f10d5764f850d533e4111f2d2d2d2d2d2d2ddf444daae5a114a020fa0e5a31fa0e4ec17e07ad90e1d725597bed1fd67efecf153e32d4684c39e5fbc14212accd1e3ae4f76bb79b6f493ce4e5a57c7979797979797979b1a4a5c9961aeeb46fa0313c19f3064f66a867cc1d1e18037fe53bfb02521d135b3f6f30777ac6f62fff62e6e4156c5f8cfcedaaa4a0dcec755dbb5d6aad2ef7a5ba6b77d7aef5bbebbf8a3b4d87f66de1e4e9912f86fcd2ed17437e0e373e1ee493307a35dcb8033d70fca5fff89cdf73b2dc7e3273feb0e8d0bebe0442c345b4d47eea37ee400f9cd9564f4bfbf916d6a17dd6f347fb6efefc6840f4922c1f04b9c710b2cc7ad820b714ca4d85dc8dde501f277f742df838f9f248cf782f8694b89bafc9234fc8fac63ae6d77f1a1035d9c24358fe698f05fbd09e8627cf034196f22b7e72013d76e8963b79264fb55a74ccd7be819858ebdb75960b68cd466b0ee8e1e3ff3406c8bfdee7cbf7ab63f68587b07cb360161616161616966fa226c582610f8c81f33b0583683664cb7a2fa29b582a1bef91b5f6691d5a0dfad76362e8e61432fc233348f2a59a81917c21c0be2a6a684fdfaff6df489018e96efa08921e2b1f036ad803b711e49ed5f590e501b2c4dd6342962f0a59e2ee5d214bdc3d2e7810d76b784e1eb2c49d7fd398415cdd4c3ee23d6af064583328e2801d9d69a1d4a8446d56a54dea14d5080000d0006314002028100a06040291603826d33545fc14000e919846704e98c9b3240751903106196288210000002002303230433500bb0950f426303dbcdfea120389037a80a0ec18c156d0fbf618ec69f5192ac2f8e3c9451b57f8a4310f4ce112805c2108d8d985eb1a9bcf85670632661f4ec1d86f772a29dffa59a842dc5d12292870b070905f370c140241c36f9708db1096757a20867d88468d817d25608c9b180d3cd6ddbd50759d9fe5b0591c7131372eacf8461048edd5b0d39bc9d0b7813f78b207e75a661211744572ddd49a27ed42bc97d34f402def3d8dd1809815d791eb3c7c243a99135f525f214b399e0f085c6d57550a9f13d4c50e5086676ea3180c38f132f44c8c52017a65025a8824f8ec3717a4d5811170719723e78490c1beee8161c77a286a38294a451dfe03c6cdbf0521c0748005f0ce920f284ca38b2a00b684c2f336e2842ef5efc6430ffd51aad7e5d6c60b99b1a7bec130e0c6faa35d01b9d267ff54cde0a75c505a31f01e159508b26b243eadfd35ff04815626fc699932260d394ad8081e53ecc6ca0d6f2dca86326c5b9f6a421a2afa59213dc129a1e8b460a0ea89bc0483bc0b51f3c6a6a0043ca890069802963df8537508ae940045c3ffa7653a2bc29055c98c12e3fc51436e446e0da37a7cf7a2d81dc127d6c7f5437f4b351dd3ae715bdbe9112a61b29722250435752ade9494766124c3eebfb99d98f13850fcc4ebaa61a06c42bcc027f3c93f54841d45e1e2d02b93f15d834ee5f0d7c6a7e8362be15867012f31a1622d31b5bf281669f78ba5b089f1c0281568a0487a21133c08426111a52e3006e2f0bb1fdd91a85ded79e81af45747c2b48cf9c13c39a617446162d972186acd09157d5410a25b01649c5c2ada07a52df3e2b144c75753256e555542a4c021065932485e6b1be39e2aa5f85735111a58a62ff11ca8f5792717268372727fb036e6b508d3644c925a58d8fce76f67b6e4176826f642e66a203b9d8e6ea9c0b4aad73a04766ce31b21278ebbdab39d9465b6dd2a664fbfcde54b67457bd9425bacd82701949e8ea90aa0e090187b95e2105655edbdd721f049672a5ea0478b2f17ddde236586affc76660cb2574ac86bf88c2c7ea9009b79ba4c3590d8c53a32216dadadd8c5652a20dcf64fb7a30de86878c5875a25b67800d78701be1a3f6658cbc342306d20365ff22f9be863efd819c9928cfc64df0c50bc227f97439154fc17a6084319a536342411d30b04f2268de46a5d20586d0196ccc0e5d7ca5a477b5129977bd8fec30121824499e3caedc6bb83c3f31101301f6835e019bf3f918bc4b439883dcd285393649a1d235e3464e67744ea6d9c5aa969a22aa1e98da1eb8794cd95a22f22583ac34e54326bb9e49759b406aef1132de924c65519138392e7d1de8a6ffe4aaeddda146f5a6deddeb53c8d8d55375b59ec0d8522b38a090a9baa790e8b553cbd6af9a627a423b044cd3de20fbf0e53b31314d006e2daaa647468dd433491975471baf3aa077355ba62ee92f03c4c46017bb35260b89c97a50b94de31f260c5eda666583b7731a05383deaba37740e9d50402121ac45804f7c8aaa0c8d3d968904c502268b4a8f34f5b17cf84e5a936148941886f6baab0995bc082ce11bddbaaec99da8b468ab1d22f273d0fc5e90e3a671c55bc09ab131ad4b67c2253fc71ec93eacf3176da3bb30686d3be5ab704cf151739e63dbe5f1c4931b911b7f713ba1be1933045c8549e61cf8c6af02a8efda21d6a78749067eeca91f53574d81d61f6396ebf4e0459a8ed1c91d3b55e21413f35c34fba3eb49eda5ebdfec4ab000cd051e8e69b7ff12b4d1e3b73b78325102acbb71c4ca57f35c901d43f1acb2f868afcd78888dbf49fb7d772b75a8da4979d7efcd14b3b1366a20787c7fd309cca84ff061546c84b9936066738fb768cf7c17bd006091252e0edfef61a9bf29cb505e43e369ebe5d448c9d3279c43d8e2c8fc88e5f6e2fbe41d2024115e56babc0ef7f013533cca34f91f4cb526202fc165b57b12601b2d6c4bc5b2efadfa3fd5bab2aecd1dda0c209a45e9f55278d69ae6d27461739f48758992740975c8f1c5b1e5d69f36b0d2da7dcfb5ad5e9421c3cfd37aa5141079723e1b78ab4f682c6956b1a435728b7fb03bf5388438132fe13b4aba00ccdc0cd9bb6440da1aad8d816b1cf67930bf742fea2dc0ba1f29c71229eaad7e384549b552c0a3598573033c237973a814b3797cf67d306fc3aa58232a04dff37c5018383992b91f80a9bcbd212bedee5adb37641c749664a3bd3278b73d39033e19f0c4bbe3cfcfe4800a44bd77db6991113f727610dcc4e1c98df6a8fc8334a9709a22c621422906cd05fa0b2c91b359e3fe0164c30f52120ab46b0865e5eb4c9fd852d5e45057841350d225fe49749670b76bc6f27615bfa93d0f0b53784037a224f0459e05b3f8504b042243027489eb2536e5abc0dde7023ba6a5322f364e0d26aa1e56718f5abc88cde066eba0cbd62f30089fe832762066fb8115db589758033f7dc7bef558dd14257e86fdcbeb3f3d9ec4d1017acef4154f8f254cbdc1c54c00a85a4795c230079e5efdf7ea41385bdefabc9f4ad15e1f041be7e582f6b3749b88738c100580ae54c6bf9f6f3148bb4247fd060689ab5c12af6baaee370151989713ef9debd4dad62224e18fcf2d72d4aa7f91ef58158e3c69985d19bca8d1730fdbfda9200677cde2096f6ab01478354593a332abadf8256592c1c53e81ce155795fcf699bc6b54022c54d786f178181c549435fb19cbfdb8ddb7e4ad8eb60cafca959a08e279396dd812476cf7186e4f2a7a53922dc179bc7d223a1c7f4286e937f7bdad5134ce559c94d1ba39deda4134cbd141f85a04876356f91167e7ae02e71f961d23961dd2d7ae66ca028ed0d29a3792ab5a2a899a2fb4b47fb79f21c28419850134beed0a5ce79dc7448ea7a9dbeb0154a22c76eb300602aa675af02881cac146fb40fdbe70d14bd35cbb50a881d6b2a3648e9b211c5f469d5679461d9afbaad97b8762c326b8bcfd4c22d3a612a3f2c913b3cffb8c3314929ca4c5f349b3f682e6e2c1416df518a1bd68441a19a30283e5f0b457c030fdbfa8c0ee03517669d26071c9ca41701873408950c7fa8bd02e360bb4eb85a06dae2c3fcbd9bcdb6a215c4d3a262abd65e16a1ecef17fee39432d25b3a6c37aefe963d2787734cf229a7adfe6deb80d342c8d9be425331bf644b0c7b258e10fc641c8682991becd99ade6105101d9bf5c9ae0587e520fc26619608e3ebb230530931fc5a72b550e4ba7116acb168ebd53f26d82a078da963a7c1f54d0c0b80c64cb969f4df4b13b34bc1536449c2810b85e31898660ae3e8e973698fa8091b2ffac3c4685d7dba63310ecc43825a6128ed2dc415362de212b6f6786752c3173b1e3395c264e58354e041e719a31bc63a2440d3362ee94e6159e252606cf7d444ef0384e7e7128ce3e342f019c337bfc15f4db343d15cd2c6e0a42239a0ed6164f637b55ec57c59f2e29c2d4f752be48e102c6746aa63bf92708069464e6b2b392d8a0750d3e0f43f8dd5ac702a046c7c6b0cff38adbdf32921b1828161a8e07b8dc408e498a9325d6d87ae26820d84bac70f8a2454eea980a06a684c4d896b1dd0a0469e7b48ed43c510f58cc2389f036ba831a45b5b7975cf4852cc1cbb8b062c8e237062414055164548079e157c0228eca8a73e7df11e0c5652eef24d69d3c3a3b187b8bf5d3581b0844b516e4f9bb86b5b3e9a36a7c662ca6ebc337ec877db4daeb17d5edff5cd650dc4df3313d7bf2c356b3591157d69a828b8dabec8683285a3d00373bc2772c26661e245be16627b844b73c07882b9477a7b390a1fc27983c63768e8efd1c337092e27a1e2ff0dc31aacb07c9afedcae1a54f214a3e16ebe910e091c4b704580d0f950fef0be44aaa4a130579f4cc350e817c5e7d03fe193e37cec0bf71478cafe1d57d2df73745bc54d517b06dd65962823c0b9453e7dfefc9c5a647e5a6a4501a24d36e2c0d10be0a13a71e9a3b6b0d5fd93340312f3dd18643bcb9850e062fde8b30289c4cd1de7b8d4ef287d84e7a8e3c555b1ef8ddd52268552b538b2aa156d845a20c8e104ca7d38bb95464d0310c00c4a288192128df8fb5bac026818292d63829a754191d6088991e3136415291ee5f0bea3adfaadb121693f53ac9123369df7c437e063fd01be706917d4dc85af69198737344f220d61f87f0c647bf84b5c33f58eacf06bfc6301e1b5fe2c46c0111388d5722499104b1ad7cc85c93460c8125196f8f6d582a573d8c1d621141a21b043db7b35c6ab84fdec118a06d728698a51c466da365b012015b0c45cf3286dbb898d36968252d839760441aa6b2fe02d9b05b12428e2e7479656b6d16af5f21a10b2d884fc9920c3a0b2af81567a3f8d88191793f3b3980d5e672ad5e128449eb79ba13d77e4790b6d9492c4d5ca41c76cef990cc9d7f489fea1eb0044bae8f6bc52d6efb9c0b9cf68a58b3451b5a1ff09c2e9838108bbca50bee5c7b05c900d8a3995f868c6e5e8517fd1d51c072447ca55c5823c243785ac0ae43116b7642afcaca72e6bd131deecea5c1fcce5f2b6dc032b0c6ecb9aed900cddb9887f8bcb37e121969e1fc65b413f5e636d3b63114237a35cb9018d931485ef51267e80717b390dff576de81868dfbbbd5f373b76f5eeda2336ccfaa58ec7ccc75c59e362a2f2a552b8b90174934828d8488a1cb3a2068f0729298fe2a9028583bde190f4eba6823604d939f2f6db33070666b674730b4a2772548d5fd5cd1e1c65a1533841d919b500b99cee868fa31615f1bcf120916a94d33c2684b151d565a81c12041b85c0974f9edcf92105ab20c54a506e16594f213a3fca1ad24b19258afb3372b0d0199fb4e155b2662e35a4c59e4b740ccab7913c4a559831bc1178c57169b01bf510b905942ed764221a2de4fd050a55e501c9ea1b98809e956a44986c739f65e4a056a5637ada89f2eea07b1aa1063753e09bc6a572b6aff1a96a2c138691ff0124b9c32836ed79133fc60712c4e3c7ecdbc8492c9efd1944b7fb269f0a8dc42b137733b7e22a1f30ae3df060666cc6e8f7447dd2660b7c61088391a1cdc7dc26ed02822ed4cdbed6a54ea701e29ed77bb412e98a88caee5c2cbc84b02110a4a6302f9a3b3eae3d713a894fab47ff4abc870f21d9d49cc0b8675aabd978906946666ee184303fa7b2e40e0d5e95b93ee1e30c0c50a7ede5025ac78b28bc37c25d0522172a9a773ae8789e897d4e019da9783e29d892f451649095600768c66a4dcca8c2ba13476a27670e3cdf05d7792836b6a6419522ad930b7568fb528da34d4e45baf601026113ef7d24328cf1d6133c153f723a1435b8647796628e009ca11856407c6875b3cc17c0d8bbfcc87a304361ac1064f5163efbb05d11a92d45bbbd4da0341323b1b3cf1397d3d24649b18f1d7e101ff7e7ea0e385bf5859087a9a56fa59fe89c9fe825de8693afeb59c90523ef7c83b122e2b70c8878ffcba31c1eb712b01a4b4b585a96f966e8bab32e6048dd3045bbd5b2d8bb1026862b881606520cf7fca1526b877bffab6baafdf3932b70b40ccbbd94dfd4809ad5e75c2a398e326534596d99eae2d74edcd2df9674398aa685b4d83cbe0e302e27ebb65091fd62a4c7d3f70fbc2ac402d84bc2368b51da38ea622fdce0a0eaad0b106d2261835e9dfa6bc9658b9caa93913b31745b5de6683306a88dcdb846167bcfe4c2aec63bcd5a0bbead8c93355b5c8e4e096c88d034902d3061f036b981c7ea3c12f1a65f5f4166529f6a64d4209cbb2f7f9c9ab59a218c27572bc55181ad407be0fa0b1b6cc58b8b9c67d03ee925dcb858b1571e00380dd0a4184c5570a6f4ce5eadeeffd3be60bd71bba108fcc3bbd997c1b191bc12c3148a860984b207612ce6a3b4ea49fa19bb8826c07f149094bfcdcdd8a668ebf493c2e68284b46ddcb5783db240336f270046151eef5532f10615de86d4d91aba18de45737b3069b0de739eac3eff74b8892f92fa8ca0de93f031060a7d1086bad29223a451326aa99d8d2bdd53815423e15c8cd58b95c0a5235d645b6fae77081f0d1cdc4b849c14f6330e476128e6aa50970efd8441f837e407666da121b28d3cdb83570a13748402ba973945286dfcdc2cbbb04eb6655c00e589bc71d66e078f6519234be381dded7b7158b3ab516c48b28bfc39c73d369c5d4be9ec6f00cd276302aed013a7c93456b577c4e4811891058983cb8a0ee06aca48d1506fd9d1ebc30e4875e2c0f353863205ff5a09b43bee6b5353b997f9e970f689842a6dbc789df7e4e148096aec651df0156e3ac6b5ff3ee896b6bb9ef518e7d0094a6e6405cae3da1d72a1ade6996e31630bc31b4cdc468ec142869f9e6397834c043362817ba70d7213a4931b8cebd116d9fc3caa91f2b0e40a6deeb1bfbccb208da1cd140c276612c18a4819f4b2094c8f57096eac22a2002852d1e68af6329da8b93e460c23f46fc56ae7780b5e1b39c963b9f5cfd90dae8067019c2b9f73770f3284e2e9e7a708d305be38c7595e428cd5c171746dd3478ad9cd5f74b0348f1ea92f7e0ddbdfca3c5e561cefd57d41b83a5991b054168ffe18be579d480c9da451ec44d8eb9e597671da7e8433c4138794dbd531049bca20a14db71b27744acac30425e8b18ef842ba323bed78fb0e8f0ab3518ca8cdb1a67843855df74a6f1849913dc7bc222b8ef2e993b5547ae4caa2e22d4a2dd8b27043e97478e36f4b8946111541df0742a10133813129d16a2adb26dc480dbf3dfbcc01cc72e94ccb742a400937284ecd3c8f0e9f074dfecd0423c6702163fcbe82a4347597b7c63f73d8bc2763fb90419da97996aa30a5c80e9839c8715ae37433f3b04ed07b91482211423573785bf60bbe6567fa56dc0dda56a1989da3e854fc45ced7b9fcef9455c92f5a6ea138409d2461699cdf07df2280cb081bf8265277af898f5791809ebf78ce5f50c50d12a806295380d8542fd07ca2e6c79687a1f6ebc8cdcaf942265b9d2e5fd4ab2c0e126da78d97797abd685c7a3e59fa5b9e600e86872c6991a56fc962e8aed10dbccf97e956716775fbdd3291ada0de55a860d96494a0730a934de9837672ad181541e19df3a513014ff2d745abc1e723ac037501bb29b654cb1c8970803a10a165b5ce7474d5b72c8d09353d90da57b996c47e66244ebb6529453ca12749d6c015843ec625d4374b55cc59ea62d19335d5e06d2d2e9e7b0d94a7e04758a7e52807ee445c1fc47e984f70804795d51f3ee66995c0faedd0c51cfbf45627a97c8d957948cdc6749fc3bd213aa5e1b4f85715ed9d354525bd3c68c259cc341ddad4c9098e635a0fcea0d63c5e00203b4682aa56a01f16febfe0596754f4e34a1a0eaa87196c4ae1fab6fb2b94801bbe0954ae9bf65d9208d62177fc69ca80677f49d3375b5569e354403b4ca1dc24a37773e5650b3046f319c94d0e726471fd5acc8e8560cdb5c090aefe14872d0236e3148c61de4be34e6f54add154bd21b95c6b2e9ad3e44c83628af705373589f2bb2ef938393cc3fd244ff8e1ba690d68a246b96df7934e58ea2142d41ae100f67823bf3afe0918cdcce52624b8b2410bff36b7d54d09f8e7f5a52b4d71d0a1ee6f3d76ed3f062dcbf52b907326695aad93128130087e97831c4428b2e511d345d5ceae31c606fdc01258df250e310f883003186edf74fccf78366c57c73766183e7d225d9bb5778692262a4f0fbe0c76a7e29d5e4ae418bc0122bb14df0db056a390b80d906e54b61c0e6b2cbf2aacdfb568737ee04a66c6f81f1894ce1b632e0dc5b9b4eaaa2500603b43c6f2c2fc394d6793edefe7df2557952fbf61fbe41d965a89f9fc83f2dc038a24cfb284ace9a03c1bb015f8c221d32326e83b65c78358e4cfd4865737fd9b2323b914e08d4871314cc4c229eb7bc862e2b031d053781753b0888a824e5fb1da930dea261d444ac714a2b6584a49f75a8e7b51d3eec087fe003c6f03291eedfd762887c91767b99c6e396e69cb65d49209c7017e109b0815d047629650aa83c36bb322c58f88ac08afe0fd89be7a30571f845deeff35d518b6c8010e53ddab90a1acb06e6d87899f1b150f7d72eff70a317c4a5892c12736310ba5546f870167f730d723d8cb46f573e0c19687814996dda052d5121652fa791cb08c4435e515e60f744dd5a0b8ef004f2a8f799533a7f5a09fb1d0819f39e867b5a8fc9e554e7a1e9135f63f6cbd1b299acc0556b3c854aa87672a6b09a11457c699101a94091533aab44a28f4b66ffe0b565144e1807a655012f28f038be60409c39f20a5050aeec6d8157ca24c79fca954907aea4a6ad4b9de9418d90de400c051a65091e02a1d62fb70a59a56a5745864e26ac4a382b31044eb1e9a6dee6757f087d60a08536b17d547f4e06508be48b3f261a2c18926fb4ffaa3e20f5884d16a84f51dbd207a1cf42fc026f98bdce259ac18d675f5c916c9a8cdd09c0952b930dca48d62b57eeeb612ee0c7f3c71fa47625ae68abf7de75e8a3290894619d51447491f113fa593c336d902b654892f366dcc5a452670db547f49de89c366d109eb62a424c704852cfafdfc82179193bff16358a2b0cb3e8046c1628c3538f8ebc4b2fde41d012c4b54ac4d44c5aaed4fd8e0500f2aa923a90833260e5aef51269482ee698504c14743aecfbba9d50169b21d3e285201a2c85e43659037253ab6ec7f7b06264195e82c7042ae95ef9535b008d7fecbfd869961d5dec58d79390392277e0d6ce8414a08071c0dfcb8f9425453c11cecefc7a7f0b3facd9ffef49eabbb42af9bb62229d31e61668d549220942d14002c618482b42ef470832ff0336dcdd4a69c2d9c1ecc2cf5e7dfeeb907a800f7972f293664a7d33129ec08e35d1bef32198c695751cdacdb8ff853799d4d7e16f825becd2a1f9ffed81f4dd0e4fa542aca56e6149c39d8b450ab9ec5dd66fff187808ec4569acb4afb99917a96d029a8333eb1e56a71d89065d0bf9db8d6689a43318fcc11e1f7a9462cb81ba5066b997ee4286ee6f975010e2ae7e65493abb5d42421137b5e67932023a3cab7d1557148d6ede6dc8b5f7620e8de79e8c7d4d3101fa574b33f96520a748f868d4950f21e563558402e509e7e276728a1c683cb0b1dd45be958f483a2748c3a16e7dc266ce6c1cfb6770546567c16b0d3ce8f746c5177c668758f86d3fcefde06ee2833784024cc486b1f4003ca2846000ef0dd966ce1c4d35b66731258283f81a074872326ff097b0cd4181e5dd5788253d69d2fdf4623b6d9c58c990fc1ce8b7ff20cac6f8a9431d2a2099f575c2aace4bf9f8e948fa755ebc765d5fab0acda3f2cab968fc3cae5c35ab57cdc566e1f8795cbc761f5fe38ca6a2cc698d2f7a5bc5a17b0ee1157da9c70e0fa71cc2a18038ed341d1c0ea99232bbab015a1b37127cd06bb72f22723f60f394bd4d8e7320d0aa1e87baea5435ae04f1ac9306ba323ae357b133c16467aff74446e065107ba581067f81b0e3c76f3176770624cc29dba462f8ee647fc88d7493efd03288e7bef41ed8a2ac24a14ea72de1925150835de5a4a414d596f22d96c64446c54fdec4748ef86a4fc122a105cf3161f0d1503fa3dd3cbf93d55c00328765b4fb47cb23c2b3e60f9b8608567a6b381f0221f7cfa091f0cadcdda915417417c787c59178805faa0e52291de344eae33ef59052a67b5fb0c9cd9890a81388871b5907c2851107c1ea8e30a1196e41cfea8a820bd5640ba59e72b69d4236a96dabb7b89a219d6897da5f341c836bee45e31a4dc5f5d0d412a110ac81215149c25131e3150bcc07319c0812ecffecf2f2b7c29741888bac345c120c5c04a4b470215c2522407c6a12ce0456211e083794600d9172ddf623e5440f9daf1fa7b4f11bc89784aef56822b43eef2081b2d00106086ba1a9a406c15c988b2ca8c7656bc9551ff88f30da606ed578f77cde9ca06a6613f04e40864012de5be4bcdb1fbeb78e0d7db2e80aeb8ecde6b9da3cdfcb0d3bf6f0e8156e6cd4f264d271333ff38830260e09c1c165f9a27c87bc1872bce80a349674be014c1d11168935c1877481bcd622126cd25fb96c0a7432003378922dd82cef1ad6fd5df644c564d53d66ae2b61bc62be56d9f9cb0d91018202710c5dc3cb89d20709a08723fc1dd2e2ea249bc112a6d36d07f900e30cd5feb46d6cc135f03ad280da475a852f38161af9c7abe70fb368a1b8d9038127fff470b4186df525114f7c8e830492f96e4c15299ff5319cc63522bca7eb372f250d6e702ed1f18ae195b6e1addbe2053b8f8fd529c45bde812d9f4643a410348c67bb81a767dea46ae0d9f33a7d962118bde86ced14ed413fd2ceab18251c45f8329fab58051c4618d41c4bd0853c46701b3e8b338189e6bde5853ce457c969845fceb8c91c192dd9cf61d5cf00c197f44cd3738bd25d46d82a33f4ef87873eb0141ae3da2fd6ec6635a24d4da2239306285e386b684359a3292b7ed03c50f8c3fa877d53fd576826d32759b0ad8ca4f2b9ddd2878b2e21d8b091869e389c58715f55920260fae8b61e63c84896dcc0c33572e2af577280094f0a36ff4b1f2a7bc95d4a44f5d3f1ed5520b756aae881292a9278d6e63d290ab25beae171fe40814e893bca8d11b852db5aace47801575099a38e05b73c5179d2b1f3e0bf0c44604536911170aee11f4c92396c8e7dda45eaaf611a54a37eb2158f724a485f718fb68b281933bb2ac17e0401ad7dd4d1e85b54e11119ff5adaecc6a36a946e487c8ba306298901c92f27e5509fda25388566dc529a7c9ecd9b5fd801c7d71cff3abb0eac8c2aa662a1f464da7b80a2e9273a2f352632785f6e785ff53f7ffb90e003ad24e32d7ce4c61289dc45400be1deb1874b790deda44170cd8226f4d715445e0f9933343ac0aa8e401948e4c0be49c415efe79c6b04ba77ba2f881bf128e6ec558125e1f020a16412037606192a391bfa5c12baeb0491399c1e96a5d51b1395442a546adac3dd48aabba098a6a3a34433d2a332b49083e9ef47e33ac06ca2e6c5ee7352af93a278879f41c9230e46713df4e664675bf4f894af1f1bed069b3015428d2339a88791445f50855472b38cb266fde3d2069a6679ede7e8807eb221f9c35fa3b34a319afd567b2e8ae08d802d7a0a1df758d1f3ed0dcdd216bd74ae524ccead2c829daca2791d421fc247486f0e09c44436ce179ea3659a35bf8d57611c527fbae5e897bb534c705e612bac37e0ee025423ee1294f90dfccc3a5126adf715b60a17f1ed8802b189950521a2d686f74b63d4ae50b206fc62a505e169dfcf6dbebbab378d285b999d4ba7988ae3467d08908ed4e0a08210d8563e47d517a90036463b50771e0909e93d68fba08aed9c9258e7b088692cb63d6abb833cece9f3d2715cbef50faa844ba64b79e6077281af16f26e4a4c5b09bbbda21c379681e305e08627ae991ba25c8bc63484d83fa5a785472504e8a25909f0c96ff0288051ab2d448e4daea933fcc613019798e2cd4611f888f6e0690674abc7ea3f5a66db5bce3ab21863bb58587b019369558c66db9a5d5933ac811a222a690e88fdeff08adc612985c4ca5bd6ff6449dea4cb2932199a2875262e9a993a341ef2dacb470b23c6f0de3f5c719f160149d3cc9010ae743e083f6cbcbe6c931daa7aaa95066b8e9e57ae8525571ac514311114b10b6d306085d67b1bab54fe5be7236f88ae0f40323534e87346df941802aaabebd43216c55da537eefefd149c0466c49ac6be1067460b23ff8ac06d0d2171d5967226a28227efea57d34ef5638d0451df14b835a4c1e6e6da73fb4cc7a69a61335306bd9e237cc4f3cd978599c8498daf12e7832f327dac26f23d0704672364172c20a805d126191d61746dab677310a679cae45156c35eb7ceba21ea09fa37918e898b48f33c57e2546384c28b12a2ae98ecc328f190336a48c9a4b31d005f0a8c6f2100d12769f95835301dd2524b8caa63b482db4d88155a95242e1316699242472bf90140536e39566b9ef2cf5fa958f1a6080b3d5c492e882e18203e25ecb9cb4be4ec7a4e3d22450289c5c59cb8fde0bdafc0433b434264e6e4a5279d4aa6ee18417db90af4e7a76569f8ad01f8a80ed04db741fb9e83a83c917d3dd30832f4a42ddc354797a4db7d82a3e856882aff60557e55c4b465bef730c68826d8aa7564c4bd5242afd2eac20348c253e8449ced378097b94010780e88d794fb0876bf6c8e37c9195916aeed92ae3504f1204c6a2f6ab13ef5efa67fe5b2c8aa41c2ce7e47afe4b579fdc1622b14f130a79d3a9509e4b987625b4a4aa8a525c567f109d22c4eabd6b838b39ac229131288a9905bb018436813c588daa938230e7778630c2f5a49f5cb413a35ad863b9d9bc87edfa9aa66720e8cac9b32cae1d74f535deda4f730c1ad6f0018f1d7d84add6ab72188202a004a6d3dbd2bd5a9a5e0a3346a2e159383382571d0f7fe6fbda57c37e9f59635d2b6bfd12b1e610072bc20accffa1a4af9fd6ad8711ac8d9b84494a82d466688fcff58100a0ddb70a22e503c941c1e137fabc2ac3add80d626b0fc6ee661bd2785688dc2810dcf5600176f1b934a888fdfeb12d4d32d60fbde3c86bdb401b7001c9f9c9f195b4a394832868f792bb0d3bfc0612a98ce3625779be990a10c42bec54a52d13d2940440fe53ab8b048ef11531707207b78eee78a5dc6e2881138403afd721606b796a053e73c7f04ec18f8b8b58d3b2b045d3143b334f7172f0575edd0ac5e434ad34ed36470b20eade752f2f2249fda9851a88826ea7de09bc54a3dc130442bdb33dc4d6962e6d43fbac07d96833e8b11c07747c753b3c0cefbed78479aa028c5f9ff2fff28cfde95efae6149ddd59d28902f9bb1827f3faccbdaaed48908fc326f1d03879d2ffb51edfed728ba85ccd5e3bb7cb398e2fec4ad19d0697024c846431a884af4e424629c143fd1c07ea6a8474fd71022f1dfdb2f730d6e3102810602ac65d9f08ac1e981edc625404243f355e998005e3eea47f5b32675b86d7b6a42fc1a5d8547a249dd343e532e60e60facc59add178180230e176deab9bf63e1ee7cdee8ae04bb6951c741915204eb0ffcfae73f13ff4f4808e5e9518792e711097aeba18145bad4198d9222c55913a99d40ae2c697341a0bfd684fa29de6e706ae75a7d5dbb0cbcb2a6dfa412faca5b70f96e03d16d1684223a3cb99788f9cb96d5cddf1e902e85372931beed2595cbb05e0c0716f8e3b59e9dca139aae802a9ea5a51932e868d04e00bdf96c569480392e388e875e7e1c134c5e08931deff8e06af37ad52d5301f0d60c1c2f81c91d24ff7bad3573d80e4e8fd54cf230e20b15900d0a4f3207c38677439da4d53a4c0e619a1ccc8392a78125141c37c40e93feee6c83d51d915c51cad3d525be22bd55e012c202eb9de9118c094d923965dee31f749b1194d1ebc1695377c14a6789eec1c11ea4d28120859f5561d08c87e29233385472b7b71fb1520ec29a2cfb70349948ccca65964e3797b1c6dd19665f81a0141d560378bc48a0c0bcc6b30d1c78fe3894abbe1d77aa250ea87f5dfd92158533ffcb65922ab3a6f05a3c27125c289e673d35f880565ecdb75abadce196c6e6cb79278a24692e5f3dbe85879d80311842818860c5c49d103d2a413eb8498928d9f6cd7a2d4fb840702077a4cba397ca4acfe85ee878a51b3486f11a0f7e8048b921dd6666c8fe7739afd3528e388b681ef27cc3ebaa0e42028ac7a2a736da259cc8b314ae2b5491b09e2c6370d2154deae99a999be3c6c5861b019164e5e34a3b1ed9216de697c4638821f26a58811d8b28a8058bb4b879e1a66095e5e159b3beced41db664a8620ea4c79b16922ef5572d3814f858d2397f1fe8bbacc6328c779e4f5c81e9b38894cd81dd2b5172c9cdfebeb5765912dcb355ce3e1e4d2115775522a909228f6cbbf4ac8ecdb9a0a4d58ee195f6f96a47a5b84f2f982ad9235f2c23697aa75302646306d703724f1cf27af70695c26e469f8f07bb08ce8a0a378539ce4e3a9daf85a7da85285b5712f88ed31352ac44b45bf1350aa7fd923d98aac2cc7a18efcb4d728716555e32a950d450c611ea4a8608fd32355b798e161e0a14304250293aca13a78aa06d275182a338fa5f30e63a7508a260fb88b8183972d957b8e88c3e04d1962ac34499400d47522bcd9f4bce78c92f0eb1578c337dfe8ca2102dc1390e1f1a5b2a5d734c4f36cd1cbcd04e3362206285fcda0ca3880b05294a3bfc8ce4a9f6045abf2e01de475ca6ab014b71d738a2a40ebe7f57047eebb1316c9957e008140516c38de64291484a22e43c34d87dfe659528c7c6b16893e19278a3e3660f6ac8e80cd4faba9c0c5841e33e299714f487186d3bd11a99f78241f0359927cb6c59832785815d6222df45eed16dbdeb17b57c2251832a8371b3cbd8b3dcf170a444da642cb42086b54cd55f4cca281f5a1a7f223a63dbb98337c84f095d31e75711e9bee12f1e9ebfb26e2c7fc7d3cfcf8f1846e98b0b0807a904f91066999b0b815f35daca407713031d9c66514d2e175b30caabe5b7bf44276fdbf8681743c570898a155e4cb03d5ee15fd0cb5b4e92f665007fa03be9b1785e8f67b5498acdf4a4cb24b68ae08ecedaac08bb016d9ac50ebafac11b1de509736b13594c730388d533cc534a74c8bd1ba478cacac6489e15aad2b9bd8028af9f442f415e381b6d5b4279808b90d30f75af2f1819ded95aed9d8cdb40a3e468123e16877a0d04bf11d48ffeb9d574fc2dd6181780d15f2ee79f4696b944a66423e481b7c76199a18f6e0168f8bd7fbf1525d2d1b67e7f5b0f355ca684648aac6f1fe7b463e9fe94fd15bbbb54269b33168132698745eac0fc05ea555c5ef61e32c05b632fdb3cb89737890db46ff27add2d1dd4bb22a8a67018c34851a5031acbc58272192485ad96d3dd1df88495dd81b7527e9f9dead855292ee18f739feb7007046a2ce610aaf17b6738594a9340945fe4952aa66c9e6f8e460f637a70dcebae409372e8b575b9416509252059e8f8f43e2e88cfc9fb9baa1a80569aa4fadfae0d2932671553226e4d1d27550478f55d1048ea50d71d3f9467c383ef6c568be7ff080b61a0a46e5d47962b4afa1720ccb6ab07a05e6f6f777e6f1693803e0ab8bfa75469879f7f76482471cb86660931b8ec16279c8ea78b33fde4ad19fa541faedb69ed88fb5c400862cab4156e3f9bb3a7af8b2df19ec06efed9653e1c3efa499eaf73ad02fd4f5d47c017313c3aeafa10a68d6d8274bfd2fb755e293d8f1bf000727f74ea8bdcb13c2d87793109208976a8d1a79961ba17732dd20697ddae84a7cd387656d84394e896500e62753128d9ac919fe57c2f5591b7eb67d50c1fe4a9165c4da1377b85f76598b54ae3d9a23d1fb8a2e2792e4685a7ca7920e512ab69b043e245747b359a5fa62e1b08df68619bee4a46fd1418c6b872823cc0840a5e3f3b928f9a428d3482998cf6a0beea5112cfb7106bad04e79d29296dc920cb259bc256c530fc1af7a18dc6bcfddeda69ea4cb78b75286f6c80f203144b4d776ed863b80f945fcdc975723a4027ac9c4bfc9c0bfca5347619e1c6923a230624f3bee6c479d76d4df9e1aa65d1a9a4f589edec0a4518d0ad97aecf2edc7aa9ad4d61d4ddfb58ff6cdc492f4a319776a87b93736d000d53856b95b8329bcb4077ad0d04c5b88141006aebaefb645fae21e1390849c6c2b5d473e2175aab3c0271d86293cc465fbc5c69c93645b7fd75f26dba08051e83d6ace30a8b300986cb0aefc32c87cb62e4d6a4e4de4fb4580ed55131bf110ad499e7649ed9ae9d15665f02228eb40949000db1ee37214b1a7707eda8d04bd4c5b4a45f73049f41c45d4a9118127f36db2cd8aba955118bded194a7a8fc95c2c297abca7f6bb852396d14b41417b26ed445c496098a493bb64fd123f40217da952506f88988b5bf3cd8d9fbe69b01e2a33c0f9ec65b393958f684a95825e9e73b79a6a7925e9e5ce4a4f9d88300d916415bbe07a7429849eb29d46533e8cd264e2194afa63323dc889e99da7976000aff2f5a544412f32dc6593446757fbf78049f22e7da90adc2b3ab77f6e62147e2b0385dd381017e94a4361afb2dd56c51313c0113e2c9e7644f21e87533717cdfd3d499f7c466fc7c7b092f4e44fdc205e587687422080e6c4aa457a287dfd4ac0464c6979faa07aa59a96c4da3b73a4e80b73b2ba93796fc1f5c9c3fa574c229ce8a5db38b36566a75f0a39046bab6b48554ad4b18c9ee28a229a7e1232cf7476dc22b826c9a330f6d8d1f10aae9876faa4ed53c95c576e29d2c6ea5da90575812dade00b4211de6ab1c3046ec5a5a0a3a396520c6ab8058e276a89555c838ecda9187c888ca5547579a8ca79a1b1391ae73327b50c87d16964e03d62079954430e17a8e88dc24c8914c04ca278c4a3475911794c18e2c11b3d5240659be83778aa255b6fb7630c293df08c5e61aaf4123bf60dbc47f4444b638cf066a793a70698d3aca0e0703a92f9bd378beaf3e867f3e89dd30a359bd50dd5465f022de7c04114aa499e53dfa62a8191d00c37984669cfcfa508d11b3f3588717f9b65e716635b3f729918312fc6dd4b5ec994f41adb8d30d4b05bb3fb4ac690d32d87b88d3a2a431906c6d73925074ad6476bedefaafdea3080c1035879aef2e177f9c8ce45133f467920a5d64a702e92ee2af64628a368498c3c92eb8ca5c1e98416541eddade697b850f3d06d57fe128fa4e5176948d3996cc144695f0db3b6db5078d2338ae56bc7845293d83398c772522d625fd20641939c9dfd234b99ec1d94adcc56d8d5462c4e0a92ab72c1d0b5712b1faf8044928ed8e289b6024a754427910a48d3a058830cbef9b23f22a5c9ccead1865112619ee8e34aaea122aa442d4d2a9e7ab4b553053a519626cd0ad98c1ba15b8aa3e210d028c172b616d682ab2a04dc80a2d6fb13d7b24bdebba6a8475a594695067e36b6a1b357307046f20ab8ab36934851e2eb43ac83b8b555070087340203f9940ad6afb1e0ddaff1b7a20ff7b3cee32651f6452750dd9961920da35e27ba5d4b47e15166bcf1b52471101bb680593a018a1f13eb8e8234d69b8c61bff5f3f41b0ce78b04ee7d756e4c2940775fdffa0b47218e4f60b474a9c3901773b31e6b1ffb820d05093878985a251c9c3d20f08a933f0545b8859713a3a0b8f1db8265d09c6453f4b1debf3a2bc0f9e2e3534a022645e765140c5eee7bfe6feeb42cde7d688f1309c8a59fee2e990a15471aac19c239b1c2210b580cff20feede3eb6a66189aceb0ca80aefe5b1b8ef7f146b2442752c0e8a15ba50f2fef70cf491aca2a656fb6ca9fef14e1b8846815004643767b792966f4cb41f61ff8ac971cad21d75b012883f2000d540deb05327383f3898bb058aff011919aca0b6ad1045ee47f9becc9979fc32912ad9035060659058915c6fb38f1b5df4592f32720b5f6f169b04cac4733c1813a62d14127b13202a3faf424009dc3e48b8d0ec7083a9126a791c1091df08fbd2fccad632d5d5f18ef3325f10ba0cda348f7c24b6fa1cc3f6eea01144cbd641052f57fecad89ba100ca8305aa4342aeaebe8da43fec184b769c31989eb29fd2b7010829b7cb7bee1aa0fb8f2c3a1203fcce08d5e6e30ff2bf849a6ad7c96b6d972ac2993c95b5a559dc0256b7661598a80623bf2c96709010bf6820103cf596ed7ea3dff0d9e657f0049933752683ec487aecd92a2eb6caee0253f226be1060c41e46bdc7ca1595782b86603c07dc2adac2db7d65e4cfa4bcffc5bbdb57f4e6a5fe1a9b848105499eac6047f5da0cfd86d59fbc55ec584d58b47d88cd9d47c47060e3a80735bfab0de9369a44df456028c9b2f72cd56e4e57099bbc264a5d0fe5553c78d94cb14759c9f651d4eb16e913ae19360775a849780b8f46af4256f320c9b66a6cb52e29cb8ad61e7359c46deb3ff6cc419cba2c67efcc609003a071d5c3b58c94d7b9279200be8b70fd5861f3ce5a321d05321fa82e22f96d48353f8aaf23a6ceffc644993e2d72fcabf37e33a8104cf0704949c1cf232239f1a1114eff7451c1faf37e1c0dc83a11d1ea8815e30e1ed3f7c3cd548f50de80c5bca04aaaa11d503218c6fd2ff863282f448f695b14ff7f5ff724730b64e7dcc31015763ac0320e32314b98cf6c17a558001bb37465d853700115a48af6a70bda31c8d52270d4a9b4ece718b7de02c2952bafd9754e9858f41e4b91c61cd8d06922a53d87b4209dd85e85d8f8cd1c3f098b9bcb5e5ae02bbfeface8e0265d6d9c6421edbc8ee58e58f3e5022f8dc166fdec773d9135ba8cc260e3b1ee520a1bb824f231193a85f4bade844a637d5d71dd82a2ac99ca7f3f145ee6a2162fe0e03a0fee53f19bcd9b44ab4d2873d55fae289c345a2187f3f34e3ce486334abe28837638cdff916a17bfa7c250d7c4ef1496a1ca39479abae9d818d80411ca3644f09d03ea12891b74752137f0f55d40ef410c1ea9e0cc5a63487206c490ad06b465e32b77bc8b5a849b4c9c66666c91ee9b4227121ba960ffbbe47bd33f69b3e6ae194ae7eb1912858d56258f6a73b78bd80acec9370daec3c7c91af405044b145146ba4a0c538cc4b8d3b28968771f1165c15bec9bef530c2effaf66ea8ab78305b9d8c27e3dcb6d01b9907aac686828b410d05b6a5ff9485b88e59336d8b8326cc6fc537eb99def0f6be08c51862c595b757338f6b1201914eb9cf1612f8159eeaee569306fabb324a642e422aa8e6f67b432b07b47b28c3f9355e71d45e9f2018030dfbe908ccaff5ad4a2a0dd36cb5f7ff4635d5072b31b8d38916940805af02e914836a6eaa68ee6641e436cee43e17bf576f40e854c962c56c9f5afb3670cf446c1756f89e8a4ce83adc53223ecabd98edb2b1dc1bdf1a188bfcce2031b423bff42a311a92bf70aa85fd19b29f2a0012026f959d55664f818168cbb1abddc5e0358eafed0bacd7838483de3996414104e6589a10424e5f80f7be6529e58288934acca5b58081d7b662d71882e9ebed377425b9349b575d290e65b21c5c2b35372f12984dac33ede403b0c399186ff5d7624019bfaad74a2c0e6576a27e001504337f7ae188b3261ce1735cab751096bb68f0f8cc280b7539ae4007588d0b9114497642646cc7005cc94237840a76b96370fa34ad78a15eb6a61d65cd7a5bc836e4b62365acec55ee0d090b34b9543e935b930d72c63afac861a711fb61f143332905a3f759bc6cea28545aaa15ab336bc405a9e62d7bf2128a964fe67cf5c8bee1d201b6c73be99416605ea482164b3596c92ead7a43645d327622d575a097b262f89f60f3357160a28c6be726784f4804a896fca41b2208bbb554684a605e5359372ecc0b1ec06abf30986ef0d8dafd5441ddc1e36ecb10c8ef88e5e26811cc8ead11c85bd3d429f782a902a28c4c3bf022e529035816fffd880584829cc8557f523fc05a8ced93e29ea73f79a3a55fa64b01d936da4a2e0e86bc1e2f140c7d7622589f88828a2f328674ff5959f027d514745609a63700576e8c56e9f5f3ae61faac0a606b9d59080dfe6bd1ddd8120a477673b000b61353a69337f2aca50b9e6e53f9b9039ac4bf06a8b309790f47af41adac161dd0ca283020049bbef5828a6cba1ce97cd8354caf742af517e323d75f4057c1f4b12462cf9de79a8a148b8eabbf0978cecfb51ec0ad0e2507dc9b8e6ea072515e0d74a47a9881d294530cc5ab387474d8478a7981960d29d5196b7c34b2f679bd02064189ea57999482277e73ba7d9b8f969d351350996ba1179e8b604b856e0a36648f8fc720c62ba703a8111b6270440aa031da7103302fcd56612e7cd1faeb11be0dea84323b87de8bb2362dc112e620e44baec355edfea5c557e807e3585e2461bcb0ad1ceeab880bc9027e3612ff2935b858b803653452181a46c1f8524f2d16aa319ae3c9c17d125582dc15de612baac2620e7d6d00a3c1551955f22a5fc6912d1e555f917cfdef11b37270d8d41abe4eb3c8603b861b33be1452e42e10a2b1bebc2fadaf79e04b36508e5755cccc0baed3b10af7515ad14c552ff0eab9be6cdd96808958efa46ec8be2fb10b283e0f71b9c81863c2449aed3c6700f266ae94e76b67873272cfb3e0e34093c26710a40a13740d021cb0e8d2c60e68a07fc6ca714c7c2d2d2188d6853f9cadef85872ccebfd2986170124435fc5316d04405e3a0c5fb551dc60aaaa2f1f26340d092bc51848a003f211d9b35fa2ba7cdcc15e60e2f5641bfd61ae264c6af8fedead6ff05f9350cfbae576f90456701e25403d5a8b63961debc36d7a23fa301eb0c2dd5a245af6c265a82dc2af893145d302171608a94405ecb5982b0b04dc569aa69951db32b3caf7294db4f9d03cbb6dca554f7b1232841505b5b535d95539187deaac4c68afffebe5abb06eb6fe14002b8c829289044dca19d4b53d5d33eedd2d4b3c285728d719ac7fb80babd9a17af10505f9d180f4256dc4a80c5e123d2b63921da469a8c68e8d6ebabefdec42c392666a91d1f47540491358ad64b3c65aa72d34a2e3b60c448dd694fb8142c152d48a02e1cbca4328ad82bd3cdfb9747279e1e59f2232a4f6c6b13688fc461f2463423eee8b7a49928206487b7462b68a61a00eb37c9fdc5c12d0c742702e77730992f1f99efba514b426ebd787f208d3f0639167e63d60d161b2e4adb8d0b99c6a8665490382ca44ab8a9c894103abf2e7e3ae48823792aaa99d2418a113505c55b7ac5fc555d4aa001facc5ca6c7fa10fcb36578b8b10e23ffbaff8180d7533d645f399ee2868a3f92553cd1d2dbbf1d75157fb2c183a5df443c32e129f2404a5e355ca57b6ac9f426e5614e5a98299b635b47843851b4d1746fd7ae342409e16e6281d504eaca38c2461f471987b597522cefd20e341d43f2c96f74fc2f22b30e1d777f23ac7869fb974847e8ed95b0d18a324a2145d32b4a2a4840caf99559d3804fa65591c2bf40623e1e841b8205fcb8556861560baf5243109b432013a7250cf857153056e827f52fe025ae2ef09d06784189ac4d588091aa10ae41089ac6bfec818649304f8e54d8c0e4795cca3b645c1bc4e096afea84302ea96e178d2bbf4c90fed6ce1cc59a2b1bf4f45ed71f52c8ee034dd7b931c3807b0e02a97372e09c733d9b135c7ec1045932c26ec2b6c426ca2df5c85ac5b3948af3d1ac02c42d69f9340122b7b9341b283c9010077ae148c85a260200e141f601be659232621fb36d9432c018e9905506c07477731b6703344c7857bc18142878c8a222636057d58d35d4bde4ba1b3ccd068a26e4e5fc3950611b7a12d69ad65bc286243a881488eb8736cca04c6f64789ce84b6c49d36abd05471332162c940ce2b36066d3086e1a45d996c956e7377eb42d92df5a163f2ea82a48971dec368aa65367479a84dba85d427a52fee5de517e056ae6494b8705e1356c21d329d9150048928b69c00dae9aa1f7d530370b7f2f9be3fd72afd14ebf679581cab280b52b13f53f07f5d7aa12401ec6d333a101c80638e7a67753288617d2644dc11382105ead2b6a9ce11c96d6632e036132d838d41b9e2f821d3b284df9baab4a3901615bfad5293a1f4a50861214030c02720837d12008805bb5a0dfac04303b3555c84740f0144b220b376cc443e6e8fbac1829945cdebe440a6154f85b581981b515419c8bd4db44f9212510d4fcfb1a7f9b4a2dff0f51835178f06fe103cd4ac477a3746be05590b1adcfd5f38b295c028b19fa7b63d599b0faa3cd9d9dc4b570efc79626474e75b7c7c4ee8acb3e36c72684c71556108578580040b63c7d6507620e48964614c3b3406678ed86d640a4420b45bd5ff9601699ad3730bfbb41a66869e438a6111c3995c04084bef02a095e30c7e578b841118fd6ea5ee89d253fa0f1bda3037b72ee57e0fa2ca7b15713265e3979b264f0960dd55b0c37d4cace6f7e957e451578520fe839add7e063cba9255ad6f285d890be6ab76c51eb41dd49cbd649581ea5c50172a5fb4a388b1507b7cc015d934435f5a7af8bdeda3cdb9c650511bbc7038826ad13bee62118ceabb2202d94386f5886d6c080276797b5fe450de50947a52dbbfa8de5a4c9c2df47880303b20e310ebeeb4e00c994f93b31cd543917d11fff046520fab171389ea4069a5644d69581f8d26b9dc2487550b2920ecf4f594acefd9f07bf59199b4b1e874563453ce2b7f5f9b4977adfb0cf3b2a5597b40255e384e1991362881f12db977a5bf5931acfe66bbc2c674a4892fc1d508323c043e824ec5a447a02450643ae920c113129a255868e56820997396d105b2f96fc3a7167088608b8ceab2f1b378f829c406415d509bb0f9713a875a2b87e1d702bd0c159a4c51572e0c6d65e7fd2ea04e791759ed82970298860b5641f5faa41eb1b8f78dc8bb108a5882e143f6779d6b7ed1ee44e115992394156b273e442ec047b678b378c610a1e29ed2e2decc24ab1d890d04826aa03f944e4b122ba5ca1789f39b0030843eac660d50bea783d99a7dcf3d330e411b313e3ee2830e8963c0ef49d28ea9dd4557f3bf99018e2598869a23f43851c0e287613730e350d778a42bb31e0e44e891bd641dcef23ade30053463550b6305b9129c16f01618a9403475b1e71a6138f3e1197731a258d01952d51fd7500e8b825920cea1d393045f01e8a95a3d0295beb7b746113cadf77f2974158d09f2c5765270426d5a01037b1d3b9a040354459684070fb1eef991eb8f4dccfa84f842ecce5fde2f59b2a46efd4ef3a9c3b4f07a7cec6bc4af29560946ce721c704c20835de5e783da5c265cad6bda304d66c7d55bb12502d712bbdaee7322931089e14eb84d6bd1e44c6b57546e09135f4957b1dc91d2d5c1fdb6b9d02794a67bcd07a4e91eea24fa1e4cf09572e6acae92297d8f98abb03a7d73920fe330a4500e75f35762a521c5e2c6613fc0e3a7365768eb93e93efcbadc0d3f562bb5dcb94e137773822c5bdded09318ee211eb2b90b4c4ec7ef6886d4655ab14c6b8865b618871ce1c6533d0c9b238928ccc1ed89c7ce6cdda3f6a0b72242f4c0dfb04a559e874305d71f2de05491db2723972e0ee5afef66f834c88e9bb34ae98897e8c4e2b34406b569af207900a4e4252a2a0b225abe67c63c3a1f56a8713afe7f242a01808add3ad299e8acdba16b85092ce52bc3379edcec9b28625fbe3aa9ba58fd11b05d595bb508edc3dd327f8e9184357dafc1056e799a4935c7859b924b7a559749d85e041a2ec470c5d3f4a4b3e7c9f6b32729fc7efefef90b3fcb69598897da8176f5f0d7b8cb574408b881054405c3e0ff32b2371d6814af8a4e4c3ea5fe028028e8303b1d1dd8de3a7eb87904324f28d4c28c6b9e635cef0f9269a93af561536569a564bc9f329e84b46e7ea68ae2fb2d2227478e65323927178f9e1161c79abd869aeb2d315d0d050ae041990d349a2ff8c0e5c07ab06e657368c5ee6488a9800dc56f95c76966806edfdcf062d814823b345c81066463e7fdf6897ac2d075911dba236ff75c300474fe8591c5840d8fb5131613b80c51411ed7ca07560613dc8b38923c86996cf312b302322f0e7e2a5034de66eab89e21c6ee7b4a3c1b90ec6d470db7344e89890e870a605f4504e90e5c5ddc1f2e18c7f8439385d530e45b091ef43276ac416f5e58c18cc606dd98c24a87e0a03fdc1bf5728caaa8fbe800e332161ecf5d5542046befad9bb1c05e0313dddf64edfe619512abc7852a6d03378e0b98ae1ea31a1749499039fd7193369bfa0a0b1b02b0778722132f90adb42f070b3ead5ae6f0e8a01c40076c16fb975861fc645578aab2940b471ed697c032fbf19460452cd843d6627f94eab4c2650008bc4d49278b03b90db31d9fa268983470ac847d6af44f482bfbf2fc38ebec2cbed5c65c70f899b2cb6deb003c31985e10af4c71ef62bc3b44e45779b1d62332414901ee47411603c70a2f16858dedf1b8f8eb01448e06b87464d75dc1b9e4fb8e8aa2da40adb9e044dd2301d74b82f3beb3a574a2647e772ee1d8d1c9ff252cc14d5714868b0f8d42203bee795e1a27f6d7a46751326bc3f3be14adaa92dd8a966326e51e4cb9de63d76073f096aebb6d9c5c4546e4a5bdb79e4907fbb6ecdb46aa195d5317512a2fc09856f9aaccb5d67db0625471ca8ad82a2c532693d9120864bd3d658f160bd9f85cc62736d4df0433152afd057e03d2cc3917fe227e15de1228b1d6035de24d568f45eb360794a289c95adf38ea1b777de353cf38ea1c47dde3abc378ea19b73ee3af6f7cea184fdd71a87f5c5e271b77c42f70a3857e73ea1f571dc651c7f875187f7de3a8cf78ea8f4fdde3ab631cea19b78ef1af6f1cf58c8fd54bc6c91bd5eb1b01e5c337a9288c0c93238460dcaa9ba5ba03b78af1efba3bb77520ce618b41d4b10d4fe2f0b9c3f4dd2c6cd38e1cc2c984bbdc6b17ae9d8a97498f61a3d203ae42a1da1fb7efb5fced3c397598c5061aa70625eab111b45b8e9389fe4b37fa98f74b8098ed5de06a2fa86c9a0d7a4aedd2307e064c8fc0163f00d4c968761376d13cd5d0c09d522e26bc1e1a434b3872e1f8496a3cb6ac2c26422452a48c8687d98142203fff084980cb0001a472e4ed82d1de91555f1cd9d5f03484ee08a320880408f1885230f51c2732926810e15830194a74dd9de3a84ec18089a9813865c72a465a3db748e1260b47c242082c7365a5b608dabd4a2853470d1f81c00aa4efe70d3075173bd1fdacea6bbeef620c8f8baf835dfc4ced1d88955bd568eb2838149de242e21eb426a25664f44decde9f31055abc381068c6f9516958e7b58819817862b717a69f35fc63b289eeb25cfd76060ba8235866c618c7c284023ae24969045aeea087be5d07d4561b731fae683c41cc1c9e55ab36865ac9122d9d79aaf9219aa20454ba1d12448e3eb99d3b9ae0181b9ffdf058ca763b70be1b5593b9769d4ce0aae9d73b30c81b0c360efc7b994ee60a38ddb47c0198a132981988d03d23b98f9e77dcedc8b0c398c1382a79fe905cea3a38d118bb72c538352ecea625e123de00f3b53e72637a0d69b8b1118ae15bd2e5255307f895a366a2947d51017bc12e5c35bf2d092f9f65547f722f20d78c45ea53c206f714dd6432dacec9ff825e44cce12a3550f123750a9a651be9d516595ab95e82de39c4a41a21f0c981a1d20c8ccbeea82754712de50167c237368ac15d940651851f021289dad4ef6fb3813f17f4114867246e0a9eaa289b5c9b6cb04998cebe7e00857ffda2d0f9f46a066e2e6925e51723f5f7ff9d02b08bffeec2fe3ef0bd4f56bc1c7c180ffb64f8ad47145c2eac466dd5571db2fc90e7b7589354e79436541980f77509b11e975c2c03d28f5c37860f9da2a672e8a72ec5a6638afd3e0604187a1992f6220017ff8f3710e9c07389fc1d85b8df6f3aa7c499ae793b3781cd6c9763f9bb76ff9d5010e7d3e9328e9323d9d93eca39b8b1d08fdd19f35e11228d1d0a609da08bb10b1e85a1a627611faf95e46d1b9cabb7ed6ce09ab75d161ef81d153b90df3b6ac0ca220c73b61d0e5a42702e2fd56c47a975bf736192d290ff04fdc8e77e1a17d89619023727d51747fe13cf49db04fbe602863cc15ea93f2410f61c02ad4c38723e0d117a22b02df5e7776fb8bac4586bc4fcca160beabb1f28a01208ad309adbf846ff984f105b2ecee30eb0d2de5fd2580fbc4d02ae19ac805126cfe19de744dffa8653c67c22d70fc4b2da3692786b322dddd80065d695e9f5dc1b558c5ca32f9c034871eeb2014962297569b12e9d2a61589a585d7431afe0a369607a26932c2d8855c6bce41b16214a13c16ced22e91c81130930855ff69b848a757f325cb9b71df81239a1e251ab1624f3e1f12cc2082a32214d640c55e1ea7beaaf7eea0f44373af189734d661191c9e885da91662482a356e19c614d22814bcbdec43e70305a1a3104cf5893fda5507759f1d8055598852dd4f5cf2567693ea614de8095c850785fd06a6d9ef787ce5e1488232ab92443b80f4b6c9f32a0e8d631ea23b6034da06fa04b81b7fec05bda68e3e74d19385dbbd11515e52fa08fb17a17993ff3186ba6a67aae256860e26783cd7aea14b5983a702a3af3ee0b0905a50bed02874e058ae3811fd815a40287fe455397fc0ddcb8e5b0699c12f9e67ae3be8b7caaafc9b438d1de00a087ed3a90d14eaae08e904689a0489b80ccce52512a33543907222e1e6e6ed0af4d8c904fe20527990df63070ca34c7499d1b92ffb0632ad8e772b9815bcf174cf99daec1d6e93c90772f476c976d891d16e8fd288ca74c9a35c310cc3fb989485a8e427bb582cbd9e32ed94bd62ca723dc7c35b50d25632ecba8cde226c1899364902edfd3574d32eb030468e851c12403d73a1f0f75df2d9b609d4b831c1610cce0e5f3588555fa0d031b2e9c63d3704f86e3fa00776134da9ce3e82b040017d1b362805bd7d81f70926e636bec17d6e94b5a4fb0ea34148885597380fa57297fa981f266129d65365e57f3d2f5646935acae7de00575d46f2405f3a3405cdc2ad1d2a2425c38ca62dba494ac13219b6c94dc924dd811ea66d8c743cd619917bc2d08b31419ef9c97c295a0023f9aea572c101c9d905d31db5d52eea337911faa057597c2816f73cd462de871a99308712269b0c05ead3d61d55c3642f4e3cc3093a9339711b0b2c521e2ceb1acce9b0f6e15477afbddd019d702d6079523d226a5c604da62deb4ce64ad498ded5220047d5f965619052ab239612e25ca3b2ab85b40839e807042125efed30c05478e052f896ade7804994b3269325aae966aca70e4c5429efb2107e12a577845a5c4c59d6e0b04a5df330234ccdac865d77b77179533348637f75ad023745326d7ceea0734b4990ec12889d1a9229fdbc5b2d3b802060ee33982f57be0571af61bcd621e7640549704385a739d04c9c374c9a78f4249736e77046b6e6677a4cd6b0f96511350e2dc71a94e1c9a64d1fc4071a622497536b0765f9e68cb7c18f8017b2d2b5a8dd551cb62ea2d108b73b3d00bbd7f87b2295b60594157d300712e2e72be67616554ae409968a50a479a0a64cab035f3718b31858c706dc7f871c0dddf8f72b9689af17e86abc6011b9fe0c8a726919f6c9191dfab7efc3e6336146ea992d9d3fb61d2969c12ecbf8015774dd3117229683a68c4474bdd8b060f4106a2f0dccf3d3858961fec6fe042463b618ccd8c0aaa7aa13003d48a7e968063f21006af0d8d818ee68cb818c622f9f9657ee357a6f8f78d9e331533b2b9be069553a5ae86ec1a0d23d8b43d255ceb753741789567ade0407990b2dc5b13326e116c28ccbfab8e4c899f89d75018840b6c690905ed7a1e810fdc42c711da3f96ca78bffb88b9e1bd61bf9e022fe133faa4841a801cd2b54c7f88d504777f5c14ee2e6eb7df18a587cf1c880105d1a0831d4e777a8f75e728cae3e91d44be8922d9432203c5cdb542f16602cf3e849920320284dbfca31c0eff28507ae251ddb6bf13cdd71f727cb026ca646d21ee84468c914d8e3e7503cbd444e7a8b6d5b9b90cd8702d3a9f5cb1b06499fab8b9b187d3230cb67efbfe441b3b4e235dd803cc0958ac41c40d05b660251f0846741ba3b8085ba2208dba66072a3334e993b41e78d28b04a29a794254050211d5f8765a8308bbd56ac6ee6699cd7153ce295677f4fd1cdbcc637419206e78c02e8985004baeddc9459e09524d7fdf7b1b66ef63ae1fbfacae7121f1cbdb675c3f6f94dbca0ab48b3edced60e0dcd80812233398ceafb3969b6d26c9b30a9fa179e8ed844adb686fc9f0684cb4440a34328da722533ee0249ec6957d7b958666a88a8da45025abfc53eb774fc69eca969a5007ee8311072a1ee385fbc070cf9c7fafddc0c77972648269176461551f7b53e4e3deda4ebf958b45432c258e55f790d89c665a6ba5e69c0a88a6db02b41f99c84665ab9faa4a938804cc83b1f1fd6b8726f73b9186898f3cfd4f19d8377434273fd3c3233b70ef3642445a4da41edd086074d635e40046a44d291f7bf1d8cb93be3207708b527fd006d25b06303318eb05dff723ed07ccd5cda8efd11ce5d7f19a79e8878c47a167485860815616dc84a408bc3f00f3292b320a3220ac6b7e460d8a0c2c30c55d99b0872a4d5f9d166e0d51290836b3401469d199bdddc80a0c6081294a05917873d5b11a82475f832f9f571d337d304b9980b7f9232b54bdfc82b707464e77210ea21491107430dede44f02b3d8e016d4b2fc280ac332d502f161262e4c518ffc26889d73eb5aa10de1388de00cafdc704c098006a3d59b89ae555579a367e5efc9127cfe69100b7d1b287542d86a3615eca2f5beb9901a396b66a1c7a4b04a0a71e6f4a3555a6c368437f3c16e32ed58415f2c9f4152351f117f7d86b8fc56e8f84e58e48a6cf085a515f57b686a7a9dd847fb07e040d90e58323ad4129cd9a213af13bcd7c0bddef229ea0af28ea102a0b22bd8a5fcddd723344b7fd79e304c7b9c8999d3193d62a380bad4d2e5741e89fe6c0fc9bd8d101f25f65568bfd03e68cf6c0900057c161f801e3f6f91fccb92d90dec17f2459e88c02836ba16752726946853122d5c22fdb3af1e7f3868adfbb5c837d2c9039ec253a6c6c29abfc1abdbf3f9006c9a2c36a193d138ac94ef9396a744235ca47e589ea2651d8a9909a93330edc94c01bd21f694ce1526084d7e6999c58dd171afc92435b6e949aef8db871a999ba57da0385086166f8d17b8f57c25ac5d79c8206119707cdb5ad607660f63e3385ebaf80d517a61209bd2921b10c7ba263970d40ca99db337bb3ed73b750184d17b1632bfaf55fb9894bac5e08d3867678d24079d814873ea9cacb51007c7ffbb60a89e1d2c178adfe66b0f46ef538b29b3f35603f922659cc67e45b98e21356a000fdc0fbf0143f4a74ab47df671a8a84299441a03bf5e5d9932c336d7b1a5d2f68d2976d756a4a5f231112aa9d853f8f8de3459f991d6a931233af4789216ce650d2a117ff7a43ac545b37e2c046e03d30f3a5bc412f4ca91a3f908256aa523d71400d5a4ba923301d98dd52dea06ff9b340df2fb5267442d3498162afafb94fd1e6fffbad891df2dacf218a91e8e8a668509c651d6d5a27ed5a478245469f301c34303470a50db8cf8ff126634e77d8834ef4900134fde71aa26c30a1a5d89e2fa53162c1f6ace8869dc7b56fdd87326baa13e885fb2000135e9c50ba06d2e8551875f1bf4fe35922a289e323acfa0d8eec4e440d1a5c494b33e84c4399882969b25f05244363e6968d58a0a807da971672fb20bdf87cccb31a1e47a88119f5965b744542c43ac4e4a9125ad4dd775477b26f0a1286d253cc71c78762b0172bb9b664a7ae532e8ab8bdf6988b12d640c5804509a6c1d821a4c64e755126427be2ec51e3fb74c08da366d44493527b67d9e9c09b107aacf15d5282204690023aefcb2da16083ca95b3da65f903e1f5b926025548c42cb25f671872c8efee0d426c108db1a4ce94a7b32d88c66d1b1bc84ccf2d7c00d85fbfe33d3fb3f014ebf7f71bb0501654a850b3f8a22bcee15a5b2b0ef83b7c2b403b8f14b048a751d1d51db7a68e2e82fc7f3372e5bc1580dfcde1a82345da3f489a1fe680067e3cda902d21d0d004c3fd48ae2dbc4437df0f153f8f092b5c68f1e9b5199d4a50cd04707eccbdd6283aba00765c5bd24ae46673b0713bd111dd2d2f45f52de4a2bfea235c265a42e4fd99e9ba063f5bcbd67654c70f7153935b511b5404c1ac211e87752b63ca148a503a798d9668887870b879fa3ba2b0758a37353339f21c44d268125b7e215c2748ffad64dec15b29bdec513db0572a79457c545459c69b4aad79238a330a2cf54bafbd9e054e5d93b89a1a94d259e23a9d724aace8dfffed763540273ce6f6645167c4b35f7ffdc5b80139012f4c6d855af80458f335a01d89132df831fb94bcae6749b92de7001c7f1041edf40f7a5b330cffdec9c00e3d89d64864a25a89627a8b2ca54982cc0561b8d40d054c833ed7bd4f4bd644834a257d980a85b92f759881f8687320ed343862a4e657dafe391bb04b475f01105ae6e8d5ac2b28deb5e4312153f3119d85f59be089d00feed8fafa3251be2e285c0b087b235593d707fb3cc2004cfe65e36db29f151a6027e4962d431c65fd0b4a49dc5f8a2285c2b0f3055ff1f9805f58fd0b0315e07526eadf2b50de87d64429b7ab7bc26fe6be36d2e79bc3393a2652d7bc06ad88bf006f74443110ba632d24a4d1f6245948e048f1b94fc299c147df846e5d31ec09aaf6dbc8b73e34c2dedbb047291b960d53eab42931172bc311c18a12d6e28d81019d600599a54333ab0e122a84c097c06a0604fb5ee1eaa5bf3b0284f6fe1524d1472b1a2d7b8038942ea5091312ea68e1b4047b178859045dbde3ff031fc25c87c5b0f232042068a508931d4f1ffea3e59bb91c3bc827d93969cb23747aa4db1567659bb9711807501f2a228665f22e9c4734144e2f3b3ad4e93322e9fd9d8b359aa712066e40da72389c508cba3e813418e2bb3a5f681b26346bf80c70c0051e470d51e7be8272f2f9aeff13a8dfb84dc7eb3dc4b88e86405c002aa480d24f71eab9f42e743417d8808f7be8490e2567aa16ed353721e203d3bd91630c3190d54641be48791e07bd9c11a3b2076f7d9d4301519e9213f0a7be91a494daa1408ddb7a22390538c139e0086d279c722af241503a950ba19d9e8b48d47fdded5052c9c706624f25af539fd1bdf8302bb0cc0f16944af7dc524b41a43ce6afbdd3abbdef1bc8614e7b501050494d8b5fae1506dc67f8e54016c240bdcf6a4e80637f2654ada72a1c08770cc1bba7854449213d7fd7c91c80346b687c1a0fdb4702f011141a047aecb6945a30d8554d07398364affbd76d971dc6b5989c5ec1b850312b3758218dbc0fb42b686f2863914045d7ec345b63417ae35a0607c0c2ff5c0cd8f5f3d49b016b194c5bfdd302165db3b017e5befd7e97817ae4efdd6dcb2da54c49a62f094a0906094c83f2fc28294c63629a139a8e46647a7e1919d4d4b55aad92700110a006b2a48130692060349026383ce3859b7db5de80881e44b88008213c2280308a89c001cfe01b763b5aa4563475cbf3db7413389d448fd3c3de7427238f9482f2a6e74e02383838dfe3b0ec0d4b88e38fd3c3cb1ea7c7671f8725ecf1dae3ac843dc41bee71b657097bc8dcd46f09658e09942c47c99f258ea15f41898463e873a0ec01c7d0d740e9035026e1981f708c161c03048ea131920b8ee982638cc031401c73048e4102c778e103af07de287b249116e95359a46176bc51c288dcf6ece977b5a18c653c5247de98288b7552c1690527169c8038b5e0e482d30bb8e694a302039518a8c840c5874a1042cc806b546a583343700d4b86065cc3126bc035acffc135accf065cc3f280700d7d4904d77c2eae61cd14c1352c991b700d4b34826b581f846b58df115cc3f270c035f4a510ae59e9ee76773f9d4ea7d3e97432994c2693c964525151515151515151014da0fc393928934821223d9688d8a53f290525cc512aa0fc715450e6dd9f659cc6659ab5f1ed250c0693412b2b2b2b2b2b2b2b2bf5bfeffbbeeffbbefa2a2a2a2a2a2a2a2a2af54fa7d3e9743a9d4eb5fbf4817cb392fd2757b75527973009933009934aba08b477f7d6d1b0df0dcacb711d0dffb65d67a35f077fedbbaeeb50c8e9bb53184a98fb776cc3ad7d2decacb534fc77742af3acb30af0b839fd76e24e5227cb58ee642b9f8ae9e474c5da2fa421a5a2584f4f6312d632890c324a98c737a650ae1cd5f4277671b0ca86677e58864551e8ca97b12b552c61f4254c46c65aa40f5b793d80226c2c63ec5c973ecd955d921669e65aad56500059016101c901d202e202a2038427861a405e3c83ef384343c36725b23867ae2edb3cab688c0382fbe11ad60c175cc392e9826b58a211b886f5405cc3fa8ec0352c0f09f4392fb88614c435ac9924700d4b46095cc31297c035ac5fc235acef0bae61794ce01afa5c13b80645886b58334ee01a96cc13b8862542816b58cf846b585f14b886e549816be87353e09a9421ae61cd50816b583255e01a966805ae613d185cc3faaec0352c0f0b5c439fcb02d7943e04dffe946942602bd384c0cbe6e8f935d1c67527a3e71f8dbce727a1a4944c27eff955b866856b5896856b58de0da986f5b9700deb5fb88625c2f0c7e09a0a1b4db01669917efd497923d7a4fbd1a9914be2a35363f7e3d21f3b1f5d0b88924bbf5b75ac9b02d61e1f476dd57f73ff6deb31c46676cbc2d15f7bee9ed8ea7369a9542a954aa592f6292929292929292929daa3a0a0a0a0a0a0a0a0684f22914824128944d24820dfa094362b18701b943f92d57bbef30056588b72871663973e189667b55a59c1b01f4db86e858a547291518f34ea84dbba0878585d203414f36fc4791d8ded35b07b27694fea68d4ef0a7a9c06a2d4e71ea543213d0a290c515e289d8dba6dcf85285d046c9aab4d7349389f4e29d9ba0af0b8215521a728fa2b46bc91fbe19ac07c9a74ab1de7761855815aa458e02dfce914d0c72aebf9d71e4749ef5615884b4179b92ffdf6965529bfbdc72a94dffe6315e9b70ea749b76ac285ddaa4530a5542a954aa5d2f798b9293d0af8a7d3e9743a9dbec7cccde93b9c4ed590723f95fbe17ec2710b3b9c26dfe4d2ede7fa5722be851c914e79486d462291482412e97bccdc903ec80a7175e8d29fbff5a9f5b870accf117190dbe1785aa495d6df428e8723d2ddfaf48717f46edf05a3f86ee158438e48c8edec78dde53b723b3b1c11ae49877302abcb51f2456035955274ae7c94d6954f0273ae641bbaff8ba28ccc7759ac4c5aa42fbaaa14a6588be279a4eff3fe47329bc28669fa72128c62262c145c05f78085c05db0db202875fd27032a07c405713fb575e9bbf4c0133d70ce57cc5592c528f9ae9cd69594e58f75d553a8c5195ec6103cf9d557bdc2eb2f5dff91abaf4b9ffb715555d228f914e8caffe9443d2388eccacbbf51fab3a341043713a2bd045766f84bb39f2fdb7d9b54d3344dd3344dd32cd5ec53fb73da39279dadb3c91fb72b43212cd18a9e1920aad98580086e6663fadd688dc0cca5a1109108c4913e48a87065778328c4118944229148f43d666e44add1b06911c8376f75d03ee3b88b80967536a80da7ac33fcd958c6d8dc29e94080505dfe192300300138d52f79e40cfacc04c750f97214cd7c0a360b58a48f02f60964cc51f43d508efa052c85c0341e5e19c30c7b2567e4d09437766b94401029e2ead4d8445e9da24a2efd6efd2072e9f70fda414643f036b669e754aaa6e6c718b18cc13e33c1345cc81c43e94b1e19830d9bc828ec56463d6c65af83047aee6410c7d05fc9226391c5f9dd72d5885144e6d3183ee924525bfbf95534e7d76ab9ca85e37ced6d7f4f1b938106a1152cbc201dec4f3b7f66d71afa6ddac52b2f1218c54cb052f0b0c028be5c60145fba5aad563a3752b4dfefa00e768e7e8ec2d168341a8d46a164691be4b3b361e77c9f73e46143bee6c9cb9c569d3ce5468d52e8d2671f655869edfc5184517c2409a3e40f219c2ecc9da05cd2227d19d422fdbf2333a18fa353a3b5a971837e0e9d9a4f7f2e5d72290060dde339616319fccd674d24a594da7777e801eeca5007ed658bb6ee76f92290f9bb53fe988313d1d8e19be7d0f26ea107b45007f939b84b4542f470b7d39577db68585bf43365065307b8a3c50a8e32aaac5583318a7d6ad480082757f41b9883bba2d3dda1c51e86e0cdebdfeee1283f7b492b9883bb948f4cb912f5e48003072694320e9b1af3e50d57b5d4ff1b5c2592610b7df9dccf90871b1dee9035ecd7dea6b34c3e17ee18425f8acec38d2ddc216f443236d8d7c21d3de48d9c7194ff3bcadfdd7db676840f73a55a6b7d6bbffe0705cf4b1ce709090909891a26da3251b675923ed2af2ed23d7da45f2d36abb5972ca6917544dd7e1bd758d6c2ac96d94c4bf2923d4788bc747658d6b26d56b39ad5ac1f7f6cf0a594321cb35086cb0b090909b184502c14ebe3bc125b9f9113cd5c3d731f621656da21e779dbf789fe43516cae3b1ade10bc91bb3bb84a0ba592963e43a38c29e7ecb07fa4bcb15dafb15fb748a72a17eefc7605e994bc93bbfd633e3704cf4a1c3a357235d8d02abe999f03e8ce1af8b8285178008079feb4eb0c9000b99038a1e47a0f66a073fd65380cd7e50f7f7ff15b6ebcffd6e10e796383fdcdda1b38a27087bcd1c21df226cbb22ccbb2ef317393859fa3fc6d3a6447b9df7cacea192afffde61d8dcfd4993ed36c01bf99d29b4cdd84a1c5f9a792a41da5d304ca3bdf53c0f1bb28e03832939e91634dc61c0c135be42b9a10bb5cb8855724f234b099cce0ad6e21219cdd27cdc03101b76b024e4dc3056bdf82d6665996553a391782cfeaa3bad1dddd638d155e85c13cd09e8052a4b3ce0ee4c0517792d56a29d5e6b4617b91c8c11b5a47c3e7e728f91a38433b1ad3a97720077ae0b728bf2a61f397fe956c0786c73f5a69c44a126c016eef7ae8b212c21243ae8412434a7401534249cb860208eded5018f1e9130a1d4c3a29143e68a575450b35ab99ca92cc66f6a485d5acf6b20433ec8920449b687b0267e336ce0383ebb8eef5c54977528493d1c9e8c8c81b792f22292e6f341a79a4570c6ec9092da4a0a438618414ce09244ebc2ec39cd0f92ec39c68c12d994aa61796603a994e322ec37840c549e5a4c203202a9fcac703d6b7f2adec600755600682ed00490b4bcba98916971697bf0cdb810c5c5e5c5e58c278817981098289011383880f11244478627c8c27e2bafd8d059116cc071f34c5c01064299b10badd84172a97614dc042008400d081358145133c00e018ec213c8635e14ab90c6b02882677fc8698587219c684122690dc95cb3026781010844911ecceeed3e749181466851795561a9c90d4ac662328786005109bd94c4a07af60ad66b521acdbef5a9cbc08c226da5c8b939e8ddb58ca2a786e07b15a152d8e63aee358ca2a5650c50f30234e0081b66ddb8c2481192932e2baaeeb46de8e911f1e37ea688c4623af2371ecee279707d90512987236f6983b697d88cec8448e6d7189a02159b46cf793212ba56cf7e9d31b8b22b0fb709963985a71a48923438e1441038655a105cb65d89114c8ce7974787e300f0c9c87155e0166040823ab2ca8f0766f2b84f02c9e8065e1eaeece22070b2e38ffc8e372c87ca78fcdddb524683feea7cbb028aa70672919c61383452145143998131685ebc7758464497fb22074f3c09408822d816489237376014bc275696bb49793f071199604ce6524b48044163cc912c6c48a0b962cd7b6180408409a1380a6c005570e3a328003871c3bf4403f51144551943eb66e6ee3386eeb601c2739505e1c72ecd0c326b3f046fe91329001c7b5687164e006910bbcd28fe78597819f253750e12703a2ab704896f823fe883fe28f7843177e5cd6065ba73290e3860d37e0c021874e55b9fdf696db3629372b02f9a66ae8acc6bb8ac3db6de1d900dea841f3c2e3921ce146921a862678a3451b9a88e277922435b4d82d5bf0e48f9c446eb2066df225c3a2808194d2a71258142bd052286050206124c1b8e3ce1fa976b9325cdebbf064ab753b55fda7fb8f0cb4a2614d23ad684006885723ed11a962e65410005c640c1ae019fede24860f012301ae730026031ce32f5fbae6916d341a7d73ee943b656525813cc1edd5e81903ac1a85b248b8041cae621e6ab630cf47ae1ac03d63009cdabe5fc8e8f9e7287b19ea70830e57a5845f6a46a5c8571637b84a3e2183307e12c96d3772fb69285f2b59700c21f82e3b0c892dae83e19da07637cb34dd27dd3bed8d3376164736d0e9748e40f922f5a3b468da3945a24d345f345fed33fa3c8f641987bb19fed2c928f4ef0ce5abc55ec1c2934f6d4420abb3abc15f529fd5b3cd6aa35188f3ca7e942ff97215dfdcccecab8d8cb39d8d2cb43165d7285da84ff0ec6598101e6835f04e2ec384e80871e1000c6b3725c460880b083218b232e2021db486f818f2e31a32e403081df0c0708093b3e3022367a7077644908f9da11f8fb30d3b62c7d3c9aaf0bacbb02388e0c21b5d861d9153e30896148768b9f3322c48cf1dbfd9025b6b988fb0cfc66da24d8a388de3b48e45d33a91dc422b72388a6fe3801a376cb8a153f4596437bb599166dfbd061e16b45dd7755a27eaba51d29c7c176e0c765df7a3bd2720dfefeeb7ee45dd6b5d38dacfec57fadbff572ba513dcb0c0df67edc710b14a535955f6cca0e7287e0d644789d4ddbd82d495904e2bb572ba973c2f939942587fb389bad0e69f61347421f6630071f93e1afe7ad8b63fa6e1daf506dbd8435f8f63f85b6c8cf3faf0f73733c7f0681bf2fd5df660757be82bbfc371de1c6ce4f2b8a1752997fc133cf972054fbe5cc1933fff0b3672a34576ef156c40c8321888e349b74c63c19527dfbad339f4a38b0c0bb020acdbfd2d84114f00e1b6057fc06eb0e46e61ad9724cb3c9b73ce39e774777777cfbcce39e79c73babbbbbb7b9d73ce39e7747777779f734e14eca8ff39aa51c0e3260b5190fd0ce93b2b801530eeb82323803f03f96516321b805f52906f321ae495f6cea7eeeeeeeeeeee94d2ef3173434314cc70887c0f79481f6c73468c3c032df6dbd0627f58fae18941386af4741f9bc9f5e70e7a828c415e1fba536cd1b20ff9d0269999ebdca654c90b485517ca940c5909d77feb97e8e9bbacbddcfbcb304ded3e87f15746ab75a0f4912e03704a2261310718ac0786144817bb746500c70d2e39c4600e299842ba972ecffb5c32d26512e205d77f64a1ce1185b1b10c9d9e5d83f402aebcb5f5637ef5da72f50fb638c2175f14fe0ae216648a40c14cf6c4027678b2575664c6e7cbbf3bebe9947f83d9eb9581238eeb96e57d8ea2ff0178c21b39765d558bf8b498e3a8ec488ba2483f7b752a2bd229db937d87fc9dc4c75a1b667edbbe94d17285baf26e1cd7dfa18b7a87631ce318c7701a455f86578ea23ae833cb02756acc7632259d1a33a04c49f6032b62e7d2e73a476289278cd47021e1d9b35aad82b88cb62fb56fd08efdd977de6fdf45ef9d7714d0d13a5ad3de86ae799ad368d1db74b6d3a98c8748a7faa4a361bb13d916e9e8d87124c8ce95d91158fd5813b2d0ba909090101d65924b613a2deae8e87496653e33ed44baa45cd10ee6090f04f38e1ca3d3b32c6b9969273a3886be7b56e8d2a7403cbf23c77430cdbc54246196915cfa9b0719656ccaadb00aab30c9ca784460f569054877fac5bc21fa385875c38f338c8a9ec72a1dfe9cb11c455f87aba80fa3e4ff045df92e64ada5438c92bff22aeba33f68189bf118c73863b9aab65c5766aceb5ab98be5ae1c77b5dce5aae1d2e118460275c3ead3a2fc20daa214584614ffbfcff36498f2c61a1b801cd029ff1a9feb6f23a5949d838d65502a69a7a4abb88e3bd0fba6d49e4e9ff25ba3f4b9bbb76ddbb66ddbb86ddbb66ddbb66edbb66ddbb6ed64dbb66ddbb6ad2905856cde6594d2ac3df3edb749b76ddbb66ddbb62d64de34ba514b45466c2c63e317c249e4f5b66e95d36ce64d93f2fca43a771c05d99c3b0a1a729b0dd19ad1d0478bde6ad14fe32976fdffd270a44445e7bac328d16939e55432fa1901754ac20cd1253873fb124496d0719f4bb49660b9fba4cc0385492badee3c40cc4a603caf20a6ff38e79c73ce393dccc2ecadf346ed81dccde37267ed8b9c7906f77db97094a3282b384a976cc91cc992ab589321a11ff6a975e656f1663fc270ebf7d3d6af3f5a1e765ceb1ac8835f1b8e3c74744fb78660d215639f51bc95071d37bba30f3c64370b471e2c5bcece465f496bcbae3e8b34ac24614213b7bf456d95c0861c9142e7051b020436a4c5820d59c17686603b42a416c99549d81d2d10bc31934119d3f0102c07409700976149f0dcec01ae07e8b4c81f86231eb2fa78e36895ade4ea729613b4f1b30cc94990999979e6e07accc1dd1a1c90637d6ecc803287bb2e9031c83b5b94df764ab173e79552fa280de18d25976b4ee7b7415a65b9c192ff2871e477b373fbf0a4f5e99267053e986b68d1df012dfa0cc203c19c99b152bafb9218c818e4651f5782d6ad75ffb4e7b1cd40bf9fc795e038ff663df4b5a1c760fe6cd93c7a970ac132467e9ffcc3ec6918985fbef0e873bf6481b7e634edb72ec4b4c0aac972d609587663de3894e914fd544e29bed3ea584bcad081373a50ac669401ea14b744c87d2873a00b1b254072f219e43b39012dd65aed771d286132069d04b8e71b6d2e4d0147e048c31eeaa52f61fe398ace3967ed64203d0d3f28f824a05573be5539fd7cb153273f1f869609c71eea9d2f612dfaa4d820c98b2727b59e54198d8896122f88ef49a5ce6e314d764dcee3aa949817f3de513f766cf64c8b25d0fb1c4529ed66ecc45f739ea0cc39e7094a1127e2ee415a746fb5e8318ef158c7bca552a7a7bc97ba570145761412de281c6b6e73b682a5d0f27b29a1e728fa25d765198498a669d2ff3c57f1119753de34df14969e67c8a1751465ebb5cc30fcdc8e3563b726cb5532278735ea16e7835a8ef39d16735ab4d6f3beef7f14ba0e0a3a35ca5c6ffd08d2a93187cedc99445e9dca5674e3ec9cb576258f088f93f9524aa693ca174a1551fcff4a9e97a2ed3489c562315f9138994ecd4ed26ab55aad56ed646898e8ed8f1dd37eec960f8c108f86e34c52c391c73d05479cd7402d3a2c491f29d2ad1b34a12ec3dcb6983ce9d84cb1d79b14dc5a3e97d8178b49799716bbf42b2cce964e4f682985a684f56758836b7a53682ba5d406b704b6d03fb5d03f85166ca16129f41c25533e250c6157bc35f69d4989575fca8ec6a44e4c06113439d05edbcd56d91bdfb66ddb7670554ae94be128aa7c9fcac975b8aa63de31eef16ec562b16ef90462e64c568bfeb365676bb672accd6942bd63b16ed9709449c0cc4c367bbca659c1c6326ac828cdc21b2d7acdb6025c7975a0135bb1725a400470bb00d7a627f8319edf7e4b87e0ffbb80206b5a77a84d2a5e51b06ac667fc37aed495f0468973a3bf86163bacd1a20fd99238fd9ab66d60f6da1c6ad13fa31cab27959451f7a1f42ba615e1de5dc2182e4358b669fe717929e245a46922918b329128cb4427a28c24ea97286c21d18fb3271359cb896c96c990d9ebdd0e45e3ccc1b01a2dfa8d963088255c09bf50a4a99c601d135f44d2c2ee64d0a8ad9ad6559bdddddddd5d675c6b5f7432c168d1679246f948a653ad59efbabcc068603379cd9ea1d56aa504123840420748f000892990c0a206123f18c0ed1973c655306f650cf1460fe241b61d9207b9fe9d16e00a173c8edb4e40da226e257c12cea1d9338fc0a46b0e8d3c7f79f78e7d077d1fe4f5ab5f1ed4287fd173a7be1f6f9c3d27df73a43ba5bd7b47a343d1164910e16adadbb44b8c87f917d0651389fee4b9a3c0cbc384930694455994455994d5039b3ef3c7552e3fcec0707bf6bcc0884422d1bf5c9b960127ed0d7266cecc99393367e6c8e082e7ab18ae7a7115ccbb349028d50931e994fc140a1894d5a91320dc477f72c289382ec60845c4c9eb82c24992148944a217184e240abb887313e5c5716037f60b26e440bae3955e9e0ca2cfe0f212098ef119e48e4fc9ed02c284349422d2d8454e8282445f50336921b0877a5e5e0cd6419fe7f202f6c770e9208e694a81e88b5225ae7279877977b15ce5128a8ab4e8a966d2621779bd5eaf9eee97e76d3de32ae96a946f0fc2bcb8c4780f721518ce17c518ff2edff7e279e1ec91416ad53491a85ba47dd6994e3369d1d5e32a6b3deffb5eb3a7e7bad00bbc510679f66e3f0343c87fdb28776f5ce536d952663255bc0dc284ab4ce806e661c07f98e7b7309ee863fccb0d9777095b2490fdbfbccbf3b8e1fb3dc8200ce8f51017066ce9777998fe978f11c3bec0801a0d66d0b901a3f856d0bb94e36e06ada3408b2803f330a2f025740979dcbcc4ee3497db2f47f98fde13d29983619786b4fa09cf39e94adf30a2bbe7fc5ce6f8776e9bb5df274f00b3c2d2f25784094517168bc57f5afb73ce700ad7a1c0aa7eb115ae3f0c8e37f691ebdf3e9d9269b11b76848662025a49a7a410a13bf64f072db95c8bdaf78f52bef500c3ae0ea63f4920bef4db09942b8903860778bc2e0d471eaff932343d05471eaf9186a637859225de6eb13c4b28befcf82e3f7ed45d4cdf53f296cb55ee72943f0cd64252c85aef7b1a7a8eff38902b69217f29b9fefef2d7cbc7bd663699dcc67fb428cef9a592a9f42789d3a2efd8a1071d3b5a741c38984e2fefb69940f95bc7994c2a2a2af3a4882b3b5337bf5309ccae0bc837dfa933712a75abb39abe82534a4e4e6eced3d313773a7d1d0d9b893b654a2995945ad9d1b08564ca6fceee2d545b2a9d2aa63a83d6c920a4e535cf0816961696161696966de3442daf71cc36037732a9e4a627a617c2f22da0a89bc114b6c8905d9bd0b6d4b75ecbe7b2f22a4168a16fef8f6b3299be968a5c0765cfe6ee92d5b2f22cac96211c8e72f77ea585c531fe2da0cc6177b7f1a18eb98ae55b7ef4a3bb6e7014e947f771fd61763c941f9d7583022ddfa28b37567e256ca12c610e36dd422dc4512077339d4a9582a7af5dd7fd079e54b8f42ecfd2429fe55768284356fa956f797e97ec4a100788438b2dd422931e6af1e4c716a2da1ccd19ea307d0914f2f22ee0097c58ddbc84368e326926cf64ba81f37a5079fa52aabcd7d5c0e3aa8439d4b801e268d16d24ab456f2157b9b0acb4bc3f0e1c72c8b143a7aa8ae9dd6480233cd3073d2fb00839c0b5a2e9416b75cf3277804bc660438766e52a91a6875415e088ab7275557fe0987e1b3a32860a039ec1b2bf9a40a252ee58572727bcacbe90a380950272342d87fa98d94600eea3a1e035c045c0e5a759c9186a684347cea059dd7e962a31bc059028514f90ec9c52ca32046fce4bab94a19037b2165e00b5c8d7868e8c8145482c8054d51e12359104b9fd30bce0030ce2f6b3088d2f1cd143bef0e3f6bf20c4ed1784dcfe9145e8f66f311c772fe4a86ce1f9cf1f670ce5dc963f63e8f68ca14e492edc1ad2212fe5b2912a2871690e6d718c7c2d40c064128175655c866db184bb8d9a7bc6be168a426b3fc031fe5f03af868b780ad75fda10d0ab03cb1c87c2cbeafacc9c73ce39e79c1d8d9720495ff43c359e903fb0ca7a0764912160a002b63db2c3c1e3752ffad1da8d7b51c7309b1946d5df401946d52fb54af4994dc0f54f460fb5fe58baa3e5ea6bb57e1654c39916bb3ed70eb0ca320fac83c355338c6a30c614feb9d9eafae3c022c9f5c7c102f3fd6f68e92734f456b5452fe81f18c52ab030f086f88a782418c5582cc128ce56abd5ea75c39fd949bb5bfe580bd3850782798fcc1c9d9ab365fea4fe3bc82bbbe9f17461f3972c7b4a37d1f461145ff163af08f2aef8c2e436a05947639bc940bb55ee081447aa38d283234238520446f1e5236ef8bb873edf5c11852bae70c51658a4d5c651ddfb8f5a4cc346ae049807567d2ab8fe037371dde3f1507ef4341cff84fb996794cd0ca3e87ba04cab46ef2ed70787563da328c728fa1c68995194513edc7379d84186bf3ce0b0f1dc5fd1735f2ec38e7871a7d7ac76a10d40006618754634cfe99598a5e8f974d69edddddddd40e4b8f4794ecb250ae628cd39e7f4176cb653d2daeffb186d82f9ccccb389953da36eee6ed9dd405b8b0bba4117c2f6f2832765b7ecc19ccefc83cd4e9b0961db9a7a4f7964f3b2fa1c8e13b4527e31a7bb104b987430b9dba05626ee4d80d8ea9ce0cafdae0aa5dcac8cf21310dc7e5933ab89382ee3ba931189cb4828a592e9a4f2719385e564869463fc7d04b75f01ee93c576aae57abf9cb367104150fa85378b34615a85c9054f3ec7d009132346ad9516992c900d1323c62a88ae98868769e473870638c29b93876162c4e867bac2a265e79456f894f5bd4a4abab47a4b1918411d0a9efce963022d2619a58940bb3cda876e1f7a324da5c96a6783bfb859483d1a5a061e777a4fc97d42bfeff4d0cab07cb35957318fb6ea98339b99bd1eba7c2db6e806925bdee8546f393b2709a592105996654eefa4737a95126833e9606ae9602ac92c6c347b2a6f2698bda5817efdee68f800e9d69f9d0defea906592fbc4becd9e8ef27aded20a1bcb1845abdbbff13407e1872b759ab8c06831c991df4adaa753f4b5257e58718c0e93164b6a3c15e6f6ca551950e730e956d6c47469989568b0baedd263340fd37c4d81bb4b39c4a3d409dc433f4fc5c0626b3fb3d92ffa050adcd9cfa25b4370e78beed418553f86991a6ee0ced0dddb793ba1a1e498ca3ed0cda62b9d9765f48aebf19a535bae227d5005bafc55494f2126b65359a7ea7f2f8f47e7f25797abb6a0cde52e176f2ea19e21188df9dc0e62eae333abfd5abdd21faa84c2f4f0c0280fe37a0ab6a02d680bda82a8f0022dbcc131d6956097ab44993b73c7cd558351dcca51fddf4938cec8b8c4cfe5e3a00da3dcc22e8f977559ebb22eebba6d933db75a39b7721cb77eed7981a2222dfa509f1bae879bc2c6aebaf9cf7d902d93d85628659003d71fbc534a9d596bff8d67f3a966af0ef5e7df6459fd5967a0f386c7f4a15b22c12767d5e7e56ef6d07202f9cc71ea75fea494863accea854f1aa653da5040f104a734223396dca569c88dea9616780a98dd328c8d65b40c6dcb133c29366a4a1f4c4aa7f7e54165a76063179feb7f52650ea3b8a7657b5c5e8fced7a3448c4b01706d3a06ec59795dcd503c19cf552dde10cf337da9a7899e287aace8f141cf107a7e0270298d5909c3eb5f1172558b7fb7444bacfb71d5f7f609cf4887a4cb9a743c5993eb8fc2a45363b7d3f1a004a12c4111ea14d7eda0701d0fc7bdd7d1e03a1e5765438d22138ef2e7fa534ae98f3a1a9444ea78409637ca182ebcb17bb2a18c69eafdb2562674bd04436c60f9ef4bd0e26373bc25bcbe2de18e2136b43ccbef18e9d37080cb837781861ee0259707ef4217720829c1f72d21f7ca450a629a53d8d2f22cef8fc2c334f2f2708c7ff7c5102d214bf8bce466e5bf1fdfe57a17fdad57ab8e67d5f1acba22ade21bafe321856397840bc7ee0865e2c44f14b26084144b866e284729a55483a104b48409185434f999b35aad8aa0414157d9efb339aeea966094ff132d23ae8b44a7755d34f6bdaf3ccb7b3aae72619a303875b284c491383337d60579e70376b0aea77b753c8e52754ac293952e3c9be3a353dd933a1bf3f2b82da31762527993e94b5ffad353a1034a050f281553502ab0a0546841a95042690188f04a973ee7bd0ca5eb3d4abb1c4583bafc19c5d53a8270fd3b2eae774988e97095e52179c763735cc537562787148ef6757b6c4ec7e37d0b7dfbd5a3612844e5b3991b32ae52a991896a3de9baed29edba8e9e4c25178d07a99f097961b8f2a2b247b570d7d56ab5e2b9363862c80ea4b882517c3bcd5bfaa428cf9fa190482412894442095bfa531e8514b6f4a33c2924fd0a4b4bcf6ab5dab9b91e0925450a2a4811c60f2a80c11443b0e8c100e4314c8ad7e52baf10efd95524d2a3dcf04fd0728c7fee39ca7d8a1ff4145bf41447e829bee829a2d0535ca1a7d842538102fbdd59d7dddddd4d94e7eeeeeeaea3d15c9755d0a64507300c9e109c8eabecbdfe1b15780b83b7c0dc0fccf2621ab6e2fa732860d50eceb55c85c2b5e03ae79ae1e4d6225b14b9fea49d4e8d1b93eb4f72918290743a359f09a7da86b62157559eae3c2ab759b5439f70a9eefb513a1a3db3a72ba691194ba7fa5081b730aeabc0e787eb5f81acad4c96d425c0000951b81d8382053ac022073f6042126e3a860baff2d457bd28e136e45bcc5132f4e556baf0c6ea5395ece041468ee5cff968ddd8d8671b4a794779f7bae6b277408d9393a932b9ecb5e7b8ae061e1dd7d1e836eb7d2eadcb2f056c4ae133a5f89952044d2984a614431cc397eb684cd93d80c76d944f9ca969c9e93a860c64a49425afca50c60abcf173ffbe4e35918d658c3093488bf3d5e2e4e19899b5b2a13b6706631af9f3b35686845599cb5536274bc29d1917776641b833d3e1b973f2f4dc19da93cd7195caca51fe3dfffa78b49c2ca706a8f44c98553d0dd58c00001443150030280c0a864322c168304e4461ad0f14800d7f96486a541d4cc4288751186610218610040800024004a044864a83020802e9f57c4d233662b97a5e4c9e40a1af311bc39abff92cfd9e9be40a440002321cbd1880de266a5133c5bf67fa338240261ef6dd361a64510d3713403dba8f1e2b237a483f5f0ba2d99a88e6eccd9d0de42cbb0bbd38ff313d781c060afa8821e3ac99112adc5d51c0d38ed2b5ee851720ab3c26d710d38ee2cefa0d6055226b26e06b9e3bf4c7e592b9bbc110354a8de8d5fc3231190525658a111f75bc1315fa796614fb4e11fe3248c3f8d59317f9c736e5e1d32a643416f725121fcfcf68fc99a55c65f0da3e8aeedd585578332e1424b43646c39d5041f6b1a75f767688c438dbbaf3a03b307a794152f5116dab0396ad67b04962afa941a4941f95461db565742c305a32a359e0458e10d47185f730bdf0ede1bfdc417ecacf05af51e654e77698bde87a6f5f3c08ec5f5db3dd06acd24e4c55ff0753c9cfa186be8dd9d694fc7480aeb3e9433db31a591a6cdea4c287aa5bb8403f89cad0de98af40107d1c7648fdd46333dcc440692aec9453d3549fb01c4e372e731d639b975c6de6cc99e3ad709e08502b12f86a4073015d547c8cddb288efb2aec2aac66ece8f425a1bf6979b82ed90ac0b57aefc29bd12185482ea15f089e9b6a9207c489b40d8a469eac288eda47244f1ae5545251e5effe3e466c04ac98171d4f9d36c8974166ef5db54f8deb21645149b84432d7bc163a7264f35a4f986ccc6c669832de9d14866a8688865214f3776f7d1830c3e466649990b0b86cd0f46005b41cf8f485d16c5193f4b88104809d7444ab9d2fec777ea422afcb882ce7508c340c9c138ce782df0f9aacac561269de3f75b39db6a5f8e0cdcb00ed26c77d163d7785336a461373948871dad1afb67f879385041e535539b678126948cc85dd33a23001823cd5147a4910e366629566c4688ba987b3a47576966e707246b114fccc0416775a5a1e9cd2f28903af312a819a6fcf440d3f80dfbc45ee268911f65e03549de3e756eab8403379080719401837f21ee5d21c5bd6bc9924064303bd257c92563ae88fc428506c4c6ea4a9f8393dfcd0a00424a84290b12f2ce72bd48045a6c0c68320b4736d88dd95c18fd5896e6543342ab9d471db0ab5d00f8a286ffffe7f7c6e2cd34159851d8263df8c3020254933c6adc6fb53693f2590ad5204849bab3409cd71efe41fd7cafa460fdc12f84ed32c9018d09ecb04b410f3d615742f702703e884cfd4070797fa7f801871e5639833cbe866ad53e378a7afcda3d27fb241ea0f7f93cf3151a2ae2a38b2cb153bc8a0f409d8d138e577f57fc60e114c9f3bdecebf02501cde1b592db885c8d513185d1485af4a38cf71f529f87f6f5594c8cb65ac54c361d267d995fa1e231284d73af34b968dabaa7a0a981e384de8919da0865068ec359f7420c282b6f6ae6c85b5be5ac41e8109ea4792c0894fbe31e86c7f548bb2f192ad4a15155b86010d625b0e2c9e5ccdb30e945177bd637331ae0ca769baa5889161988be80557b64cf00e76f7e0eb33063b4dd169f861cd5282d2ad00fd3cfc7bf60d0c87594f227a1d22eb4c03266005f30b669ff66effcc995e46d930bca71ea4568b91412cd9eea22a4e59a0c4b1e75138f0530ef2dba76752411707df22eb0d0cc5888daacd627cf80133c16bd3d158204fc4e957f40c834c536e67204aa82f18aed6aa96c7fc850a957d933acb8902bf5de4208eeea149a45aafef000c220d14f7bf8f1bb3837ec03a4f3e4265c69e8045f5ee8b61ac288ed3c2e4149e24886f68e5aa4a7d326dd8cbb0d41d1ca7e65984b04f31bb36d97ba1a56c6a220e5ffcd4b6522d3323bbabac0e785d341f63bb58608ca302a9f711204e16be3a717ef4d7ba134149d74a8f09cdef552ff2706a55720df307ceb712d09de4c4be425b50fbcc4a8baf1e87da9996da4b186ddbc1c96406cb8ee7a490e87d6498b9a4d2ad7fd2e6cb109545159b01f22439314f2d804951f913a02bbdd5e7ab2ce6cdec4d08d3ea09cc5670f494a9e1885a4fc7c17b06839495f1d5f5e8c9eadd7435a5104feef1df19b15423bc5e7c6d46b1e40b9b95a8e015894407c48b96e2832270516ab7dc6fc470a6f40e3ca9c3b2555600423d394b38a0b5407ceca059fa6f73cefa12ca80a9913da4e2e939528dbede518650511e5a3a124fd8fa5bdef6c3fd77cc005d4b24d93591105a6ab4c636fc9215cf1e4b7fd3e6593f6afc4858119a60587034e8d5297293fdc3ab5f219046072850c9045b6bc0730d8b1080289da4a58e30b34e0f608029aa8428bd3e867c9d05cbd2aa7d14c2cc2ef5eef562034b68bcf9adff04e5f41f8e7bd23d1738c9478fd589825b28021402007e4ad20f4d268c61be17e5ec103e71ee56669f16c4e6302d0a34c18592d389ee8e11c6870aecd82cc1c38d6aa5f0d23c18bae09dde1bfa2a6a9062205ae0c7702b443d7ef00670d1d88dcfc15ae9dd4742204f717e312ba74facbd4cfe05f0d436728cfe59d96194e387950cc82071df9094e2b834a2f9abd104809c2ac715188d845a38ae6af9cca87a6cea1556fbfb03d52b45f4e3bad54421520c2b8c9a8b144fbf7b691d2482181264815c21f77f9bb780003b2303d4edab9eba316627c126643665a302f4705c180650a0016390dc3625c8b05a7d70e1e1519246fbc56ca6c8dd4b7eee287bfd8de01b4424a7f3cffeed0da2d9317d8aff6b9365c5208d96c99b67a234a8fb2854536ffd0e21d571ddb504a4378d4eeaba78ce9467dfd5d33f842407da637d8bb527b0535c21b95dd37f644f9642fb09a00efb6137895fb69edf294d5cdc0516783b21cf5db6d41d752f4a9b2fa5f1d8c2697eddd8cc43701ca9446bf1ed0b9ea8fc62d860fa62d01739c666d85be52002ddb5554e8d63694a91cc9f8204f6effaae50c1bd751eb8f82ca2a76f5b0d53c733daae86bca208426fe296878b1d6d864af85c7df1bef561ed33f93936c535aafa29d3cb1e0bd95d0f8cf9f9d50c52ec07abf0f099c35fcfaa274e8992ead4076ca387e851374996060aaed89318d6cd02f686672509fc2c660024eff87d1f1ca49ec2cb64cf80d8d042727647ac0a3cfc4ad0e44d9bd0a55c4ca6e235d180f708196778dcb61caf12e42ad2a2a0b004fe9a745affe4fdab20a106216f2a6d571720dc9d97cc0e3cacb7c7e3b43ef3ccb03a26cdaf647967f0062bf7f9de38e60145916f775f9c212b4ddfbae1c58b8160cc497c5076aa16c4a87ffb1485691dcbba061a8c4cbd8349e452ac2bd10eb097e733fcf37d2bfdcf5393cfcdd3ac7d36ab7233ec7f113e4daf6a837a60995c8a3daf8cc27687d75f5d687533fb10739cd670cf9c5f88f7aae7e17cb59abedb7bf49a1302845c99a73f6db2a006f8f0b2fd86d225f7ae6b733346db520b14184aee63997586a5d5b35f0a880285afc3066f832fd6ae39f8e26130233bd6c2ac09f15a2961a900b3303fb10209d31bcf1263f02693876f318764b9459ec20432604ecd61be095140b869ee7b6abe317e9485b9dfe5337cf33a36b86cad256c9f649a7dd36d187791fc882457f9039f9ed012e6964973f3904654ac7386ebfb7aef4e833deef70df12b67c9c00ccc19c85d8f2ecd0304606d84e046b17fd9d64578767e5455ad4a2dbeba39ad623372a3b742bedbfd12a177a7e451fa320ac06485bf94d28a85f20efc9b413d25d6790bb53a09d561ebf7bc998d357aedc23fa7c75fb5e31794abafcd8aabd177a2667a7227066e8e53bd06d2ddb1ebe5db6aac7d52bc2e0e868d463b41433b6a9c76d6e767d4e5808f4920ea07a75f3e9a6d1bbfbb6a651a3173b52e460c28793465e1f5e145a1bfc313fc6563322dc4864e5889199961d3dc6b462364a9e8d2343bce8f5214391c42e50700b36caa26c506dbff7703a9dad27dd9ea6fc125e46aec0cf6a26bd19cc96f6654a4c80af6f14f5189e8f044364b919b32a507a0ab64f0e5ea9cf65943dde598bd08f9792bafcb35940ebb47b3184514f310ecd107bef58f959f56659abaf4963e33c8f41e3fd87a1d9c00da989a5b81bb5c36df3445770d87be2d81c1f1ee154d9792236b05dc9236b3f5a926329a5453880ec8330158b11ccb2052f33c63b412de08c6f2bd316c6a68d80605c2c2c35b473a8521f1d8d9e686968e0e096a40a475d10cc1cf549d2d145b171baccea00dc85cc8ad27de797e6ffd2843620f8f58261d704dad9996840e051df3e8899cb809c2b2ee8dd15faafe67329d50e0ea8c05ab77d048cf7585ed0ded955da37dfa7e418259d353f9937c3e494f950cc787f8986a58d27b38737fbab65ba04a1fa88ec77fcbab69587b1749cd69c9a3ad18b2052d9f9bfc99906694423fce74e39d4b6ccec2a1b8f0586606e6098d5033ded35922478aaf44e7c6e0e8faf664c96773bca7d66dc64d60243a882b4eb24b8e21add4af3cd297d326060629cc7bef5125af91133b593387fbbe83e499b73e1c4e23a62c07c190b435b82e72af38414f81224de1fad6225a7216756355524735bfc703e4e049558d3c5ab691be979a6ede8458b4e36d2723ab881f54de4e07a93ef4343d1817f6adeac791d4d664e7d6267c3fe429ce91779d107478c9ab17b08da2831e97196172981aafe0469aa29fd4c2801558ddbcc3158ceeda3dcadfc2529ccbebe7f03a6c41c146470a0e6656602b301cb73c11c591af9ec500af7a0655e17a7cb9313626b2294b4fa290d291dde413eb1289489b998939f90c4cf0d9287c728f8bbfd4c0f1a1f9df2abaf9f8c138dcdb780ae910b345dae1774a081be78f94743f711e03cac05f9934199b7a60814fb751e52f0104810a1b8bcc0fbab91cbf4670ee26801e832cc401d680d25b5c7498980e6a969214f6893dc269a30f5a47bdd2df4d2032ceb24592280c891ce12e2eb43fb27710de8b60770252194a61c4c2aeb41c93cd035aa92dd3e0a55a0f04d94161575a63e0a48307b8bb5e9af0632ae71c0650123fd2e67c2a5e1da33b05a16c0acd2573bdd9420bbae0476f1f54750892831d237989b292cd2eefac3415c6a96512c6b82774e19464d6035e92194a1fe6bf282dd511bf85b6f71474302f05559a6c08c62ebad73ab150a68b8a7217079033d71a8a866048beebfe92a80a74ead4a8c2f86433b80a7a646e47023bc4ee6cddda16d74993ef7a09ca0ec2fa87873ed5c467b080b4891407e51021a067563c39da0a6bdb055d158ac6f0eaebfb05404497b2c6f702b9317ba697e83a49a9c10b9e7b70f25c0d75b817497e4247ce0065c0151ad444660ef65b2d028fdd0b21ed1a0367edb0a34d4a42f828ce3cbf0e256cec1154ee46c9c7663988271ac7ed87bcb03125ca96cea18a882794836db25558412d4f6ed7aeb2f5edbf22d2472f1a77fc14f891e95a01c5763c87876a4590313a0c3b0f87c1c6441beb534e4b503c372b9c20946ad9e2df639febee2b1d24c0a9ea9899e6bcd1c3ba2fb137b6a9cd6cdb3d0f71d82a90dd3a51a75de81a4e82e98416dad3aaf4f6741ea8df797514cf7f3ed6f38e651756a642f82fbf44b6dcfe2a6faa1ede1b5c3af90489a87dc0b5969662f1ea2ad101cca786cc4c3ec5984eb4faae573524625842347f16edf46afba091e8ed918dc06775fb938d6382e06d228122895afe6e03389f22286a1cce34c1c7c3a6982baab998aa568a9e335135b2ed703efa3c15fe6e738e73b15fa5cfe9d601014d68360222e57c5003fb3f8e1e5ef1a65821a223428d2f280b9383df8d3da74a5683ce8a17c5f8ca2a1bef5e607ba1a2f266719b75a35d4f3f027ffe5bec26cf1106a6c6a3b28149d20d7a4bd708e8433f059d385fa0f6cca6b188ecf02ce0a41097a92ddb7817ee05ef15a38c4c95d0c14dee52789444de5a8776ebd7177a35def29024a6f98ac79218ddb415f420f2ab16ed5bc841bce567240cc82de8afe8d2fc71bcbbb444650cd9a6cf546e32660bba2f0af28d5d70441e23b9b2aaaf8a968a0dff3465f032201367e005b136188d5d0a65729c70f2fe167423827adf01b1a0c8506b35b06d6ec1c0524da9260bec5a831338a86c0d0206459e78b029ad31416f4082f5918025bf758f042ff263be88fe49076bc0ae147d551a44a8250324b09cdaf84a4fb6c642be3ed1aa3faeae54026de591cbf4050ba9ee0858cbc51b7d848720dce687a64f8be36a09efd70d7691e4c235a46c00df281907383cd19c4f208f7b554a04d37d880e903f115cb711354b14dee4397d750808e3ca2c715dc676bc728b3c8441e87b00cae5031d36691541838479e0166888d2efcacd32feb205335a20766ca0230d59454815c9f4d5bd3964e2591454786220c992018783fc0307642119d1142abbb3495889ec0128616390f162e1bb01261674a547e3c8b904db8c6f9d909fea957e9e8efca9cb1bf5709087226157faca3c319667bb8d75cb58532ae2afa5ea9b87897a54d6f6bccd4eff0a47f59aafdcc389fb2b8f28f79f3e5546f329b4b8ab6eb90b7096437a54499594133cdffdf1f81575334f4119511d457695d2f0a02f47ee6d4dc19105fabc41ab6c400a893d695a531a43ce66d3b9c08d5cbd8f5b11f295f98afc0450adadfc471bed0d476b27cb39f92486388ebf8f27afc28aa4b54085ed59905b486fe0452373843b3255f509d39d4a43f9bb9979c99a1fa266ef4cc2561053fecfd94d3ff07f96af1e28a36d2b5deebe92b114e8be36bc964364568e7df668729dd36dbf71090d4152af303945173b9ecb6091f04a1b946059a9b4cb7804e01295b3dcae7a6026f6dc2706cdcd67fe564d39cbcdb56366f9c20802682f4d245718cf945b703db91d0e4351b14c73c17822ab7643156952df3d0eb7c2a251e4c5c736678c9494c8e53c20e3cbe51fe60cdd15236bccd0e81802200391c230500c746a7fbf147fa0c2482318b579ed3f75d86bfc8423216606ec3b89018854913ec205bfd9571348a4e5e1c2d5b36d969957f9143fd7dc93d796c67fc8e37f5d93a874ea6e4a9798b2041a2623ee080292d56fb5c3601489ef464107fa273b4e7833c87869a92868e2408b682a10866307a9da3ee285c563422dcd103490119f9a500a61735e2f33ea4b855e40a69bf7c1d29a59884f4e81f299fee3b482ef5ca3c194002e0d83f818e43b66d0f408af6c86062f89681a0002f391a36940332f3099c51709536075c9f396e1fbae4e4ca432d3a58b22e5a0e67a8e851e36813d6a45627d64228f10158112008ae340f098883a98d3d503400f15ded20aa4e056dc999d554c7d7fed952c9b6760f2fb4db1f89fc466044b9b996bf51cd26e5608d2427e5d9e5d4404a638b3a38453bb758e36c47900da7685a21076e0300502faddff1d5873a3dadcdca77eb17df8d804f09ee033d3184a3a2295f5de4e58ab857ebb3435475d577fa1435829a594d72a09b3fb4f528175a0e06590e32e776e60f81ffc4de0fa3e5dc65d3d3f8f5bb6d36ac159471eca1016c34d6e7032216801976b24ef91642ce71ffab9d9c31b7967bd35b33d28cf34b00d48fc5bc9b9195dd947c3b6ca387136347ea77ee38e342f9068722ea8f3314338745717b0a1820676d785211e38f40354ec8d58969910bfb34311c2c767cab23112ebc45ac727175a230aaad0970eb1ac0944d3d6f67b048e386a2e006fe7c97f1ee39c3465641b6dcff3358518de4a37be66094170780130eb74ce44014245f090217a0223c300fd5e0ca01fd8a80f20b4f12d1cf78ad398db03d04584d9805c673421cbaa657d1eeaf8a254579ee00fee0b002c92506599fa819d0859970e9b4e6de7603250798ae119ccbdb2ed7ca3341139c130d594139f79b3c656dddca3ad638bb5ea8a1b00c154d0e0d0ebaa11a1673d6f7db8fe257e70c2357b919a2b4387ee319bbb361608895efd0ceceedb83497acd9b61c7d0fb91838ecd371bb88b56b7559696508a56326e31aab1d9913da2cea88edf00b0dc725b16ee177e32e9ad8849dc540255be34e4e4498c9ef591126b68d6f08b770e6940b7c77b48357de5255a81e274906aed6573d8e5d94ee0441f156b233ead85742bdc60055c0da198decc2556aa1539f866680707455289d59853acda7274f8232536cebc1831a0d072ce33d262893afc0347ec248546d4e0df545c43430af8aa75dc2ad4e777a3d2532afb0343015296d8d53d36c0e5c51f95238b7d0956d4e861e78bbe24873843b024acb598aef8dd08725502d6b3bf8fa1ed7d99dd736067d6cf3bb287b151d4b815be6a6614822fab846b68b885badb78975327b84432f32c9a28eb8525a1886141d057a71c27741926db12d4268ba8f495fd27660f2ab66344fde0a05e42126ca0c2c34ceaa0a02a452cace240e97b747251ba21911e95aa313d167c679405700219182ccd62ee97266accebde988f558e46b1eb1bd383f9187b8a53f1ce43b7e7d86409509ce2a0bfa48d7dd50d184569de5762131b35c4a4030ac5f5115c3243010d55ea225a162b3ce19a3c050e5ec6db6e4a22eb020dc95c6f7675671b32712f4020118cea49d4333f20b80645e347e4fab55e8efab591a620c916b81984aa77b8b5d88a49193fd54dd75693dbdcfaaf5be6cdfcdbd58370fbc9b6e3ac6a0b6ed41fd10facfb98805d485a7df675249115d4c01a2432ed77df5294f069403b711277d2de091dc9e1d943c6edd87451f101ff6a5bd89dfd2285368c82cfbd18a4f476155dc16a1553428fcbd1889709506025c193558ce040361cacb8a727438549206fc19b546102b00467d76d9cec21770a2f83c5c6171de46af4ba613c36a2ba7f6bcb127fe0f327dc5c5f468dce4fe75edc0a68e35e29f7923d79700b3a04bd70c24ac23c0729783e91d4402db937f6f166546385966ecb8049843d8fe848d067a24c56f414aaf02258078d3980a9fbad6f18aa16b49d8475cce8450c6e0bbaaaa147389fd8a32f14fb74e2306b7f6a73ca2d8a9c002d000e7a1d0261338d8fafea5a487725133f8748d7281e3650d1989c8f250cea41501ab4659c46ec6bbb9303fff5e3a52954a364ef0a3fdc5f5c65946d01b4415dbc2acc0f3b313ceb2181fa8fce3ef22d43ee5638e0eb7540d2c05db7a5fe8613ef98ede5145a79e8e436e00312e69b9b3c4a83f52f8a3013cc8dd0dd2cce5c499ad1f93a56c41e6b9cafa6e22a9f0305cdc1db4fdf2e001dc90ad1a63483d9343b26ea5dad70125a09f2594aaee25e30a5058b021bf81cb7023e5d72017cb3cda4ed99b837d4c5c7ceffa85fc506aa3561e32541b2cc7d039dd90cc43eea4dc91f8632ea45bd43869ad684a449fa17e93ed0ec592e00025d07d9fe2c94cea5647d707686a6f1a2ea0387cbb615a70c713fceb68b68cb395c84ad3b3e8c5a3f05762ead248affcf7ea8de070e2b5e72a84b925cba857e600f7bbd0fa5479ec9bf3950214662617a5708b7cedcbea9303d744d61252955b6c8751d7edf6444e51f6625083d36a5254e59ea6793adb4275932ca4b1cd9f12c70d99530931ae9c7f6f086ee4defc564e2fec7ba91f750e4b3a9c1477e2e5aa8f4133aa4243e065a7587385ab071b31e58728b000a305e6244471796490509c18b61dc48fc69c48a56ca6593ae5213ca3d703b41d024da82afe8f0d3a610271884c2fc548e5fbd4437073e5ace295cb8383da33c06fb00c55903c330f2dec169f2c5ad1bd143a05a4265b638f5ad2673e713d57b2a14526e0f3c65bee4105db32c57541bd4cc4f7bbf9b9cb7cd21f4bb51fe574ff3e9fbe0232d6fb4b843d1522a614b12d125b6313dfee0f735ed268d61e97ad3e3dce5d5236f0cec917330f5fb9283b266af497ec50c5c9bacddf2a5eb94d7352e559aee93107626d2c99f5bde3c421ed64e5a4dec048ff772ba8deb0a36a02a85528d86bab596f303f15bb81628f72515695f4b312bcdcc49895b26ead83691a9debef372c6dfa7d79100e7a3b254d7f8fc511c764bcd41864e0f3de05e4f37d0dcf1ab660890f20387aa3eb88ba91845f5c415272b87fc0857dc9282e02bbf0ef405fddbefeb2b34aa26c74d067235243254fcc2fae87e052e33ddc1cd1391e9811b3202879087ade4468d5603c579028103897865fe4453bbc01c1b99f7f0151695b123d0af8fe612fe0cdf8061c2f40407e6708ab070f8ee9d5dd7901ea612600252b90fdfe552e404d56aee2112203aee7ca9613fdf245c9243b42fd161e5b2cc8f5d35588f1ad694a6c74a643516fab77033a11ce55337303585bae756f8b02f0ff942d075fcf16dcfcad5a510501da18525af3554bc97fb4c37b21313e0b3d54cb1e59e892824f323a671200b96cda7bc24ee320e5502991bb661c4d75a75d7f23cc33bb5684d26b0f7e121ed7f81eb622944603b4f1b08fed05b3fd614715d6d11f0563cf5a797a54ae1e6ac4a76ef039f23de41e14ac89499e4704d3d075e51460c6eb9fab7cf2c69b0eafe1f536d0848ff731388049b4be3f38b72f3ad11a1aea28d3614fda59a5427fd317a256d8e01d64bb66f7c17483c5456f6c79a3d31ba7da8d62bf58e26287cddcca23347c42160ec9eec3cef487dcedeb56f2903a92b4fac51cf5c24f1a34ee347e3556377415d863f82d92a83ea392160dc2617ac856e2667278fa52c760b1ecaa444507a4a8de0ece8eb1434e2c14add262c619fb99d66cf3e55bafba0a64ca5f7f77c4752744492ff46b366b9474810dcc85645cb09f38b8db50ff732cae114d7454bd5905daf3457ef31c7eb94f28a49eed42dcd90aee26e5aa95bc53f47c5d22ec9e05e6639f6ee3031c45fc7647506529dc07570cf7fe855483a642d80f68f42d15576f966025fd2987fb0fce7389f3fd7fd014c7f473ce631f89e2213957babd5f33b12dac9059ae7c822e1b2eaa56d5617c23adc8bf283aaf7fba31a886c5ab893e08608cb9af3dffbde5179cf15e9dcdbcb80b4ee09106e9e0a0a8bf308139672e0c77b960672d6caf9b03a8dda006468149b62d17341339e69f42454ee7cdd6f3539bd58a9e0281c8628c8452d1d61b471b7d9517cee6a4c47e3e06e85ddd5da4bc78b4a850772abfe7d4f444a97ba6c673196e8ed78917544e54115e427966e37b27ca5f8042bfa98b975b353dd576d1589adab7356fa423090f19d8c60eb37480553a481b4eb454d335249d651dc50ca060c87823a20ea39562a1d5e0672c3220ccf8f80e03a286e234df9e8d8e39f440fbf04c705fa567ca16ee40c4c4c77f85d60ad80d185631d44d0da8a1d4ad2a16054bd323b6bba062707fc2a4a711db05cb5ea4a66c25f6acba99faab3e2cffa13c62c2c46e9a36264ad99ae6ea43df082b6f30a59f70d87965ab15f0486e835a3d2476845eb2dbc05b431b3ce7dd064a65e8cf1f765bf7bc997235b63e7e301c108e3ada3ec5f4fa26c561a3aed5f5097a1a807da2e520c4342afe9ffdb5ee0ffba7e5c45b9d9c61e6c99571d30f49fb472dfb8534d36efcc47bce1754552013e796af5516d92502d305c5149d051c71900bee560f928ab61109f5bff6908d15396e8f0835c73f4f42b92c4dc49c4dbdcdbcf350b7db6895b9ecee861c8958f3e6a2280ae71a45cf8dd21c2eae9306d0611736769ac29b360d71ab17c889b9a7acd7dc24026378030e15630fb53e83f2f093c6069b0c95d53b44aa477a27a3afa898d003b55e36aa1a835dc4773e74ac78d9b49df42210a7c05a592563896cb08333259159b213b07c60993176ad4305ee227e6d26f7d83b6ac6ada3a65a2a3af25db8d3ccb9b54e95be41656d1bc4d6c7471d93a05e30c1a61ab1cf5e2b11848e2408042a4cbca62c468856245636ca373af5a2dc463df15cce136d0e69ae8f021b469f31f0788c1f18af2cdef9c1f4df72e8be43b84425a68f4bf01b3aa584b4450381a728403a8dcd687685495e54e373c564f2801aa8258abba95f59bc726cec2851f20cc694ed66b8b1f16e76a41d51826c281e264e35500378a7e70475613c128647a34699e4afafcbf5aa0fccd9b207a3ffcd2622a58129b55d42d751e02c27229246304d727130d202deb8c8f9e0a80014a399246e38b94f63c65606f750c5c802c727cb3eb5677e0b0e282efcd245341da2d52760a0e8bf3f39e6c2a8a628b25d74f9430811d6e4c620fd2c87fc5b44e24b8b37f1e94c5917ee45997615d4d0e20800c5ca477407d850b3e04d8c4afc6ff5e26f19a43f8187ab524341ca620b66b8f42126662cf030ac3fb06d4a5cfcd1302f47fe63c25beaef35a6a4412a49541d93701ac45c89aa62b1a8a8208bfcdb522e00757e826a283be031f8baaea0aec92d7526b260fe3c268a2a555bb829397a7bae222d89d2d7633ca3bb2052f04bf242a5d412dc2d4218b60537ea0b40899039c00c1d2348a62c77af160084d3d588259dc44c27cadd2409720b54db2885238235f5f43c2eca979fab6faac32e274d000d110e4b0479d5e3eaee698f8139c8ebee621ef852da95cc9266da0a02ff7676eab2afc7eb2255fae1335746a3520f682696dd5fa52ddc0e247a6493e9a0fa8b9a9116d40ee111d1a82e4a97e976958e66569e75f352ccce54a1920552d383eadd19aff7ea5ac453adc423101290b37f205ab449f01db41faf5f83de15b73069a94b37f0bfcd593e186c01398520d7bea49c66bcb515af99e2afde449f242513286f0a22fde501eb0e4fbb0457e9f0f8107a2ccefc2417fd44239eae17a01f4d3846217a3c45cdd4286207aaa6e414e8413c22787c7047b866c0426303632451a5b702920fb6cf3d193df280404ce07238731e838c51a7cbbddcc4aeae0afe4ebf122d54ad61799482750911383dca1c0eb6f1d4fe39027ced4eec16740fb7e3031da493c2630c0e9e053e86eb9d4150497cbcf62d99d6a9add8a6dd715c8ce780536faf52081977b7c45e4208c1fc1371e982852350ba794737e5b51a01e1a05c4c204db867f4cfc2a69144eecfd3ca19a4aabe4b317a2481b10fd5a8603b11397efe6e59f52530cccdf0e8fb76878946cfce2f60f0cd09c7840d7d28665582027c897d634ed903362e99213eabe140029eba0e32ce1236f3bb74c8d40e6e422107ec842c1e96a42a379c03f7647b0fd8b07606168b82f3c774d2faf4f53f527df2197fa228eaf7c379a404f4987c8114678c76046003b9465585632858dfc990bca4c3f321c5a193193384e7b2781271300cc14f0c152d7fe20b5379d75ef8bdec66697bc1b2c6250c87c663193aeb2e5e79c8eadd6d1c2ed43416cea34e0ba712faa12f03b568dd4455f92c28c8069da9b6ee5b2655bf08b140c8302b3bf6ea0b1f9c6a6a2473153e6c885c3c353830b3fbc1a5ee4761482f379ee0736e13b24597d2da3f753ba30028eee0ce27cf410b023b90df8eed3844bc08d7a0438657f5aafd6db303ce4df69fb81d9792d47319f9dca32aa0f20b7cc3d818b65d42a399c70299f5d15230cb95a1eba6fccce3e0486d78c31b276612f0b77fb43e5b988bb62041a3595b5ac5dba012d6fa2a322593698e17d007563edfe9594a7d02db7cf9167424ac6120b5daf2131a27ce7f7a42011f43d9064e4884e49072d5565f4a20236245c310d4341b0c255cf9da3aee4eb9d13d12a8f391ab9d7bd261a85486d47b925e432c904ccf94f951b4fdb8b594dbc83b5e9163091486927422b32b54c49fd8b97aec1c8ae6f9191fa757ff4e7ace4405641b089a2d8797751a667d1ad6df92b684df5fa24d79f84081b31a91affd5de925bef69dab232b296a216b12e3fb95b611d35e91bf384d67c1f73a84aa21d4d9f0974948f17c7e254874078ad64f81f542402430149c6a95eae6e8a8d8c77e223a1fadac759b57eb093b914c14b753c8c26e0988ee33d946bf1f4593025d8ee1b0f2577e99a770df2690b2540d24debb982920bccfe99f76ac80c84461fd2a1853cca380530a94fbc813c433e6b69b8fd338013edf9fb4d87cf47ed79bb70418dce977143d5deac5ad025c1321d82378e7f1181c8b4650be143671bf9f117d2774f7aad00daf8b405a7ed855b48f4cc1922c94e88ae8ddf33885dd01dd3c95a00cb536bac62805776d0d084466b38de90744ea630c4664e09c4dbc18c83442418d20d6b133d96f1fab790991d09c25b38d092ad76fc69d5b58b0b02039a3546d2b367bc3bd1ed5b17c6e0641965fe08199ff401ce3828e27b59ea9a74039ef13e5fa3e34d71328e643afaf01a47be842d3cb766e5c11b5e84ee79baaa2f3bba3862d7ac218c66204a5e5365c201567cca900bdbcd4227c6f76dee185631ea93dea2305a3d864e223675459478609c58a578498d1845c26b0a789744d4abd37fa9d6dc56a5aa6475626183a118a07d3051056af6a4b6497cb2d67d5f99c74084a8281397da0c0504d39a7ea4db2b221e8772760cdd9e71e8ad04e3ad7beef89918a834fc9b06f2cbc916c34c0cdef46701ea7304b2d0d2f9c0f78a847466843afc3196e06a6b75a1153863e54a30345c15d04b0f1606abd158b8b0cd2d280989d0a98ce30e88113e239c2cee1b5ea16be909ccf9769ccac7549964384eac51c4d7158cd05570331c1d9a2f0cf97427cbfff1fc855c09dc42b5b853c1a8be1b3a4820449bbb89b33d60303bc01e78073e11915501df2a476c7a1262b4d0a70f9890fb7560614f6c6fb966f4a6f53c5e1098343088b9a74b48efe64205d2eb534b2a35d1959cfd74a8ed625e84cf206a62e31c19c10905282b1ad1ed929d6bf290a4cfe5da1331fd6622b4fbd53bd19962db515be8577b567542b9efc203d626c8dab6c567b9eae1f66410ab6f03b13ddd4758e9903551be40e101bdd92d967fa99389f1371f8518c5b99338ab5fab8135a98e0ffa22101fec5d74619face6cd2e3794f672e3fbf9a8a8f1a106c039e7ef560f153e8d67dd16ee5400af652e312142e656856f802e531444e2db37e968ca8f16e36def927ffd88028bb4fa2b72dc7ac709c40c967d3070a524e211e686c15c860f20d76c073b33f57aa24889c96df552a20b0773b83922f94f214e38b21088550a76c424f936defeff7e96994c3fe9dbdbcbfbe9b8122b1c5fd130518d4daa60ded162f9b6b3841a97538409b08c8ac5fee167267dc7d0ad8ecd67668480119ad42e638127740192ef778cf39ea33dc42835d757abddc47d4ceb9a2012986ea1752111e3cce726098ee794b4f645dbfef0bfa956c49c711b5e7aae67ec23e1828598ae7c06dc7de21fbaa5045a151dde6aab7a8364943af03b8b477cf31c48b3190b190193605b2ca51b67cbb2cddad61144139ef7a77d9be9c50b9d3329cd8ccbe6b4349424b0cea29f49405081a720f9a607f0b8afa800e1a74264b088f873f352f0a4b2ce91145f819274f1b4e14f05305cc5d46f0c5f4fac85637f0cd88885924816f595a9dca1da9e88fe525bef8a01b07195d59e66030c2232d40e4efc8e17f84c35cadbeebafbb3e9cdf36bb266d64005c2654a8ffa875da729508df9bef9f916b6cc14350527c168e9067cadaa0151476a203a1c9e1d772754041c98f30a8d0199f2dbe95768b287eaa6711a6c6c9b77f5fa263146e773241a4e59389b38029d12b273161b6475d4ac351b42a1a4367ad1e6034cae763371e04316945da33d19a44cb125e983a99a477a12b368f17d369a9806d0386ad748453c6ab4bdb94af63692a16c9cbbda959ea21be421b7ac70b7f16ecddd5c3104e57aa0d5b02491536a640ec0244bd6d509ded7288aa3f5c88f0d42d2e97c9a6e74923ce0f99708b9ec4f857f0fcf7e60ad4ae15f6341ff63f3c336f1a3b967c9948e219b7f882cc0db515ea3fd17152be15e0a4089ae740e0e7045711f573e73b7abe01fa0654065e0e0f0bb6f1d163eda0caded97a08ba4854da8810505f1b6b0dd1e5a61e4c8195e1f0254052040e5835de7309da5c4de578758e2a5dd23e086f71ca2071d6b3a13a0e09ed893cfc6f806ef2fc8ce90bf4d74167eca196d3601d82e5f9c4e5576db7cbfcbf6901d948cdf6a23152d041d8cabce6ce1844bdec593659014603d030f172574daf67cb6093d0b0c499b1df4f731b857f30159c3ad626ba621d0a225c7a806489d5543f0141611648b0a8aad317bc2f171a15f48c358c1b5706f1ff142f5fb48983d241c177a1c0fb3f16d031a03c2bed32393a0982fa866188be54dea4612745650b9b8f6c5d2076a19269b049c504225396f9ce4c064e3c4cc0ff989d32905e102102aa9206378c87c684f30d9466364b8f6c67cb84a71942a35012badf8b6042ccc76f07431c409b3412f643e61d4bfa59cfa94f541e9e83ed17ed283ef0cba38c99b7405c08abed441ca261ad4dad51ff21960f838db484e1be5e299140081c4ba39cd5281898e8e89e1ee714804ab67403fd873e266ab29101c8edf9901aa4fcffd58f24be2ec675b81898c84cee84bb323984e5138ffbdf79df45a85c3806815204dc6cc10ee91f3320bccfddec022af200a21d9d6b0a9c052876373602084e3d9750ceca11e7edb09d396202c902ac15ba9d9f759b4ba1a61ddc4e447d37121608c2b342a5e4cf3434a0bf8d14253a53cbd509d4e692ce2690d2a7e97284b2c0cd6a7aa48f12bccb56444460e9e7107819245c9a764ef86b40a6d44e0540628fb423208906a86bc503b15a1f20d7d7e2cc814f90944c677554070993edfc9feb00ad221cafae0364c7f4afe60f05a1d32af5760c9f9b0054dba11c62d9281b91d7a05356a3d3c1e2e6548f64cc58a0568a847454bfb016a02e1305603a9af0aa38bb8ce6e424f65a8c86612acf38844ba3ae167cf952ade39a1450500aa17b839c6c4ed8d2f3bcbded9f03e6c70254584c98f39bb1ab151bed252de4d9bd2ad4cffcf038dabb3a56e4f7eebd297b5ee7dc435a5c3b67aca287c0c84064f935b2f9ce6cf9018214adb76fd1903218d6a1bbb7771d709b4d622eeb42f483ec57d08e9d02bb2be1effc3406f69ea7ecb5465abea1974119dec365e6dceb72297199ba62163ddd092efb97cc9f7e0b4e8d71b5e231a42c504fd5018414463a952e13afd9c45a921564afe802e55915162d7680c3e27ba296603377fd9365857406e09c2b837bb2a37b32d88d2d4b3c1c916bfb002cb82504f4fb4d745d81acad793bb44700a345b9950478de6d8089e9e83e9600d4d77fff94f03004da8483dd52886c65f7d2a7f47357a5e54d227d45a3fb80f5b26c6660ae5471b5a6479d12380b197d45bfd250c8ff8d37c9a170bc9c06202d00081ea107403a7e4dfe756cfb8a1f8168e375bf48b52c23b313e42f373910f6271352df2e55f7fd2fc511854535ab311b1070770a0002787fba3e9199f3ea0a0cff788b0558618e1924f20b5ff2ad220c01b4a321ffee1668006bc8c63fe3368bd8ab2fd7cbe26ccbbf2ef05de8820214e760d633379d7fac582e8e2a4e29a5f36161a529f22126752b722773be05800e919df270cdc0a9770e5eed1c7216ebfa599b265dba42f6190dd49cb8af9394769f6d1a0d335c34f0214d5b9e5634ede4b25330733b1808de83cc2ad003b8d9538e705e2a7970016aa5e78f8238ac8e2303678b94ca9cc08effa6f08010c765e96cafebf9165c1114652cd94562cf6fb2869601e0c22c27fb73302365e9cfa2d6309039fd141296d02877b161265482bdbfea6790bf4c736661b4a86e5b6ab0fe94f82bd7e6a3be75b14dd2edbec47be0bbdc1435bdcec96fc53258045144beb95c0403d2f0e1f1449050ed078c9f624f37840db80600e37660a87effb6c1e20b9677ca64dc9bd0654bcbf0c8234a7307096440ddb4d927c44e2fdddcf66210eac21b521c1b79186118da6923b4a149423e82e56d64c35a4fe13d3bd61a856f9e16fb19ff342542fe82daa7905c393a11940c6694b347b7230bbad854978fe25fd315bde7c62c4bd14ea0a8e19d4e75a7536d1181634cfe02e300f4a9e0d53082a597a9b7de2c80d56097d93cf83f124f0afafc9c57e7c145d5c1761b2875cc2b318c17cfd93567fcafffc64f930f0458f00c31031c7c1600649be33d10d0ba7df8765fd60724f704379cbe3fa74a73a2c74c4bb636b458396d93f4cd098a7d24a0fd747b7b3049ef5cef3606db0e6be50e599356e08d2baf5615f2329462a3a8b552dfe16577eb9e4d7acf43769c21f81e01de7ee7fdd5624573eb7fa8d10aabeca4dafbc37e01402b0fb48fe1400e47f9ddfd9811a339b98df8dfb4a2914250107f6503ecba1a6161b9c0972c5a333b15797e259510632a187f0ade4dccc8d8178f8804891b9f3fe81ee99cb247ec67831ae0264406513a57d02a23748a1834d8e0f2e0e82ef18d3ac0378fc3bd965dcb0b5478b9f1290a3e9cef67fd030f47067ab271daa7589a630a62774a041147f78cfdfdae9be2ef3adba672e2b7c8552be761d24ceb01ceb3fdabe9a8c28b94e1d9c9191d29668c9f0f86c4ca984012bb4f2718ef24e6b8ec1890c05f01b0afdd07b66fcc8aedda180ef0945543db5022fbdaf16ddc6ffcd75eae9ccb342d7e844ce7114cfaa315a7dc61aea5063634b44265e69d2a1d65a1d6ce5d99b243e1fe756f4636eff21e7af1985fbb985066205bcaf6da5003d0d12c61db58ccd415bfa7b1f490b757b903a0c3cdf87804d082011323816bbb1230fb706004eab881fcc698f0faeb5ebe58373d63d5fc429e39590f1142eff11d157d235e24ba5dad8c6c0fb7062bd9c316ddbd506b03c95fd342963600064a8e24e2b673dad55faf56fe43e0d8acbdc1b9ab765987682d138d4a0156d56505b1aa2e2ee30af6c75973601bd6639a75e6fa85efcf772740c4c7b928a58c833019c7047aea86349e7e09494d05d8025933b44c542dac5ee7645bcb442b7b0297a1c8528a749603d92dd4ecde678879f32622f7f3a1f72e798cd71100bc5d65a18a7d79e88311a6b666acf39236f3ee28b9a410716071b890a0c3e73b94cc62b8075d303460c8125675cbb47c4ca9039f3b75fa332970c320bfaeaa344d4c3f6d4ce62f127c0cc4bd1bee85961ab711ee2216820e04e554bb59e21c5826e97b74c9d7106839995e221afa6b4680b8681a8a9dbbd0e0871a22cafce3ef327dcda1a78a9eb7046e9b01ebd05742f3fa238542e85723adf69b6c2f254c97a3a801417a2a422a6d625d8c1c14e00d775b98f960b95203239b14a17b1576c749d93a513161c738504767f39e6a5957730cea1144f91936b6d706336ce5f8bb76ed1f627d9d6c8fb74f32ecfcea32c597c4c3ed43b873505a9ca5aa2e85a3f15334c6c5365565f06efc1218488c1b4743fcb3678333edc86f12517f8008d833e13ab0e24a86c7f635edffcdf81d391b40814d3825446ebeebbf2c89cf0a75884da2a1493d84740e7aa187f01a5b1a56bf70006c7e1142ab1b116d88bcaa1773088509c8effcd6b1b99c8adbadeec5341e14ba6ae2063c6ba685889883717af56c909cd41bb8d5e23eccc1b704094e598f5bf286ab4d75e300a68689457eab3d98c037c9a58423f6697ae08f1a61165b9d0c2e75d1221f412cbfc58ceae0204c8d1d8164ab7b304d783f3e71f0dfbe9abb499d1d87106b232c25d3c12df6c10cfe7be275b3d2b27dcc0edfe869bae524b5974062688a472782b8732626b2892f6fcb08c64c88d200037c013e08249098edc2a60c637506a4a75fcaeaa155fe82f8ac4345351b55bff26394c294c1cf6cc0e66aa99b0a900e6397ba688e3eb8f5a18b98abe477679f9378b341fa2ad5c70918aef9e343075480b5d6eff162fbd0123439ae411d6023257236281b02e38aeec9031e121abaf40089c43ed02d13570bee83ca7a6c44d8ed2497d4f53e0636c770ece1efb2cf13f8368de453d641bbdc05dd935bd8cb797c06d006c2810c7d56d6556e6d9f67f8a2a66c5dbe6944d35505f55816311b9afc51f77b085306b66f2cd8ff93fc0aa4434f336cd22789072e75115d1212e93e30098e649899fc37e05a02fd62f1772be7cf0fa9d8ea4e2fb5139a0565042a47108763eb127b80db1a82a6254fbf38266f16819e36c11ac57c8b2d9ca0dcd362cc79b37e916de18761bbe31b39b8a2b555ba188c6bf2e0f389f0c042ecfcb30e0551b3b84949fb05d34753949465cac49c7a5bf23a6c3be6fedd7a36a630ff965bfdb1417f6d0c232719f03a6a91c38d9b8fdecf1a2c3481a33800f87e9c203e51a0e54f5d80584081e1c6620f3c39bd610238cc57808cf45877c1bd82061eb7230e60d7ce416e4105025d118f39bff4d4e4c3c045486dddd81cc82c0405e05bd94b19c9f64cc8621961fa015074df390ae395dd6a430868c8c9adf1077c82829d0572c9295b628c502221e30626f3215b4c76d2f4fe970cc249f8dcd34239fda33344fb0a0c8fcadcf6d7f3ea80078440e338700ece8eb8c448b56d7e30cabee06b4860660112c4b6cc2ba20eaa68538d69e18defb2752f8e8e13543a8a8120f79bae6bfa6bc1010efd9b20e1cca05b3f409f1c907e42c9e4ca8784af8eae54789c5c47ee804b31b5e43f4dd63643d517a94d20a45c0bbdb67b9c544d52e3a329bebb073ddfd6b71ebe3715a07790d63bdf66c9ddca282d66f56c4f72ea7c0718b68ea0d3a7acc70ecba12582d23d8db7f242ab0d190bc256086a84b1a5359249de1e4c167f46b18d1d9fed3d439e635acab92341e83fc1fb7f44abdd294001f0109184a082355903ab4b72397c0362545e70f9486c6533ba3b7d0b84caacfad91c3df30a977e230a8f894b977adc973b4327116905541e804837487688c9e47d8f9413290aef48b37cd7f459ef0aece91311c807c42a001002a8523689198d33eba10df25085c9991e9f0261fb2d5be6955600aa94c0589853abdd02937773dddb1323f56dd671abcba6950e180a35623bff51a08e3dc13790399a7dbb5d04d7b171ecb67ff509c6db71c42cc047d94151aa4398bfb3e3493deff21d0ac274c33e51a0524a1901d2a489c80e75429660f65fecd8a32305158cd6e09cf394d1a0af9fa8ef6a7daff1d3334a3bd3218711192a7919ccb95cd3f7dab5c9c370f762cc91e984fc238adf9e085e9f74e0456d7eabce4bc8e4294bbe1a815d602fecba9deaaa5f54836eab9b3d6b156dfa063091b0243ea6c806f4b4a1028f8f50cb0ec5692fa9e06fca98496403d84ca67ff02d0acdc212030b585eb2e3b3d713d7fc119e99abccfc5b1eb8d7235d4c54aade9397b2c02b5359a9d9ab3ec1aaa0de109c1f91e13816810b37994f807183ec7701cc1406cef6478026b19c8cce4a9c1bdb666733a5104b725d1266a9d04468086883e3d1ac872910050f8b6699923129e30a66b93ca34ed60ba965429ed5ecf1acb836c9f3c1456abe930edab711d270480d104d25fd6e87cb975f223c2fbb5c5f097bae2ae514d6eb17bd1e224b922d202f7b3e9d348d3b856fdee13d4bf950367f2e336e928918d08a55f0dd234f0820b2c6220aa6aa9e48a79662470831c8ce50bf53c5e8fa82dbd045d1cec7bebf07b041c67369c092268a7eb5f50c445f8e8e12ceb25906eff725b58759deb87088761d2f9323df9bae34a38df3408a2a90779966d56add79c90b8335ca25526f16768615cf5282ac77293f2dc6886a15497ec716ecf5280d71f5390a92663a22fe5b684c9b249f99d02ec1fbf49795045f86bd50d1b49797ef452209594fec8881f905b971b25eb4468616d0ce174505c30456f8a344138bbfc5bb3475694b53be992b102f4a2fb212aae436ec512185e209cded8cd5ae2b8e6fc54aa2091d9348b3e9af6b5694828026a58fbf4e0c082f83b50b47906cedfbe075c9fc7639000bc860c166ce208c9f55b40912d00fe3e4c43165caa491e5dda3554c998ee11bad5713ab5bb334c1dfbcfbfcfb23ae27cb20925decb7a5e793a206c23b4b8f897d3cdf79e1d90c80536820df6926c8c459d72624d89900def536bc83e1c844464708008fa2a3203de3110ee0a4fe6af99c9d0c1060a5538d05cefd4799c59b7b806c13ce9a64abc2dcf6e686bd7858e22c405b02b40efece1ef32098acf247da1ef64a2774fced7b99a53401ff4047cc683739b758478fa00ab90da064b7c3f89ab423487c8e8029f511612e542e577100915547f8dffd13a8d7dd70b33e0c37809715ef48dfb3c0346e1e93613241f055b2d9c9a4b327db41ab8a9677f9acd7908f2d82178f204c24acaa9d494ea377455eec3d640e40ad52f03cc3d3002a15574236dcadda75efe0221e562af4c8b98ed617f0c6024471d937898a8ea461f5d0c3f2906fd0eb2ef76fe482c20350f931a96b88d37df95ca95130e12bb21179dfaf52208af9a7ace7e846c9d758e4ce34f226802c3a77a5f6319248521a3b411cd840c0ad06eec972f45b956efe66da2c7d44ac7819382665b9020ac678add4a51849103db18ca511d589defff333bcee35b04c1b1cbe354f73df8e1f6ab121c77423001a88561f8dd6d01b2513494cfc7bc647501546083f143761ea827239572dc18a9b2c2fd38128916a4216ef9db111c0f3b6c36bbb7909506410803ca7d30cc9fc38418336bad6ef586250f9ba06e9fa5b0e93346e8307ca806b46bdc181c8ed51b915a601a68299305d99dcc0a18e54977518ec847049b49847e32474dd230f45238c1411b0721f4ab5c302effa093895d7aa13de67ca63b3f25dfd0aede50c331c497d4ad7f4292e09d08ecbf4b4abbf0d019d8c097458b9a9e62913b0dac09b68c4862166f590c0935bb773fcf1609d26d5c303cc95af3f427af4f0757f7a628f8fd502a355cf8e2c659a10956511482543d4453aba28b82f2bbacfe8d5f2ce81e179cd7a4ab2514545bcf2be0d2f6f38860d3ac2934193b5c23c95ed9ac1bd36f71a0dbfe0e624437448b3514a43bf351b835af7c7f870961ce00206e52ef4d02bade484c1eb0172063ceefccf7bdbed7e8786954220764f59a937e6b743ce509a6e4361c2004f1437446256616d50872aa3cbce255953bf085b65913589ac713775aaa0408010b38c8cb08987351a9e63a81c9e2c1232b39f581ff0b22716d4f23b846cd98cbc468a71880998b5ded4751939d5a316dcb47934666813c45ab99270a007d41d3df14b56b5f20a84ec35c2c3622519ee05ed49b192307b89f1545e8190bdc681e386e05f2d082db9df100dbbec96faa45a085d72a37a3c8346bfda27944b84f2c38d0788aa0c0d08aa2e2489d05b29a1f19330319b3f9912d8788b747d99a1ebdd675aaaf8fd53b703b5d3e218422be7b56d9ac80663e1cc118133c55964d07f50c32cbaa0ac2919f2f249eb4334a53af1dcdaa333d1262fd2073b83341cdb4ffa0eab19a51f3e4d09da6de9eb30f36f1684450924d1230be429a72c675b7a94386ac1c085488b92a7856cf6a647a9292d190b7b7becfe6f649ec9c6456eb53825cedf5511996a59953a4aaa51b12a7cb3259fc45af6178a14e755237e4057a862c3c30fb438b185853c073f9e8015b98436137757c336c8a4132f169ae5c6e3dec17b7a6585120309533154ea7430da4e03ad0b714c0edbf05ca3590c45344c012a72ed52ccd6b551f012174d635c2b0413be3908496359f3a193639948a88a9599ea54362a2686899fcc542c8f30a08d4533fddb2f9f7e3fda36b7dce76d1b84448eabb242d3442cf7380a797630dd5f84689fbf4f2bf4ead8b9b3c791796849930942e6e6e14f36eb2cddf73ac44d3b2ca176a086b09c6e05c66261efd4365a9be9c7f7b8cb73b0144203add6130585f721f378d0dae37940caed35923068059801072ec923cb1f8922940ec866e94675072246e317ec25b864ba46cd7092378275ab0d24dfde095a82b6fa3dc19923049047252528f173b1fab5a47bb64ab2c7aaadfc3e7bf3c9a56719ac2cb0f71809381db44fe86c30d75fb1a26cdbde1db93cfc4385384557d614f1fecdc2d10d8aada95ede0f548f2c9feb5068df233d63258717a622a77fed19b724543612b4836a687f8a0c39d7b3240bde6631b63cab83a91f620969addb96be9f85ec56e5d26bcb41e812a959fabdb4bdbafaf3693882af639ef162413e53698c108a37b2fb9184c62f50d216d1ac2b986ff2b67b2b1f1f0dc4b311db1900c01340fd9c9748411e62c722abf12c5972aac83bbdd1f6ec4fa23028cdfb011ab91b575739fa3c9bc3b280009be665b93cac580f2aa15b183c8c97b69e833005b86bf69a3351be05d6525592dd325608daa3a35cfc2282cb3c63b639c12a6dd40c72fbac80645ab779303da3736657f361d4417775a14282eec470b850f4255c527a85a7b21e73bb48f4a3b0c5dc3cd7fc873187f304df7c0189f806b18e231442995c5a5ad377d08aa07b209689d7b2b68e0e176753d576f3e2c2a0fc740d03c340092f5835f4d4721f03fa48d2db6c720b2adb2c02e807ebb6a26b12240f24f3b7d5d26d70857a6f0b8495094744d3cd2c16e0207ab6314cbd2d04d0a9240846650397cfd252f38e30d550f03da43d4d147718c674c3d0b781c38d0b4a443caacd376a3cce3703606be05edf6ea1d5e658eb80b14a14df10be32286de08c6d085fd865e4111ff1af157a0f846dd112cfb4551afae1136046f6d81bd88da13343782945e73948ef0c8da6de429cace8489b2c1e7b3eb620b1023dd98520e274ef78bbcbbd569a23b3e3a40ddd79713fe12b336a468f94f8354987f2e778c960be4f1be2292c303799b59ca883ccf56705b8166b47cac9352bdebac3bdc8138332ce717ba28a4591986df4ba04051ea1a44d8c3d4b4440ed3923881431db1037f2a9ef732f5ee0b7e7afacfda6fbeed849564778f5f3302ec13ca813f043f1e35b3d62a37388dbe170780499cc9e701abc5b715e23b9eb9196d5daffcc672b1085e7a225b43f3bb3d62fba3cc5df98c7b8119765673c44ec2cef5b805455df0aa67329f7e4b41ca2a98a56c01a1e48bfa4c58a3948057e6f12699fe4ccf270d0ebb13c3f76034a7c72c67c911c0d8b558b8ef701a059c214cfec944ae34a7f29ebc44f49e33444c87c4b8cb8f888d7450838d6a222835670e506f47ca69f625b76203f0c825531c7fa43a059ebf6c0667bcc9fe9238609ebff5fd7387f4ffb91f63a9316327e406b15ce7447d29211035290845a62702ebec7a6c51a3238c68a34234aeec9535b9d04079baa9b2b6d8ec97d3641b346e1be7e2f7cf7a1694c81b943823616a7cda90cdd033b37ca0178694a000148114af4b5032a7783ddfc727a432612994cae3817c8a87d7546dc358887aa69d7039b0c32effe0d12793288a469cf3a29555041d4ee66a337889a110452d0181899058d19b3aa72569a9105eab8a3362988d19ced1df53372298c69861b624b857f80608fc660d1cb07c64fcf38c03297022826b29f23f61760d6317956675bf01cac69f8396af5076c66cacfd6edc3bab9954594b97a01b0f195f1943347d165ceb5922f65ff6d32920a9c0e94f1e6cf1cb2d47edb7826e31cc7847c7881821bbb77912fbcbc49b508297b4fe80f81490f3fa7d6a07d52737fe758dcd6fd3e484ee7e87a1856d4be166d2cc05b7972d21700a2e43118f4963035a5445e440e344fcfc8e014df10e0e8dd3b045333381b4a7e6ce4023828d415a456b7f6cff237bb2f869139ade2b1c218791724f1963f00e08467e64a8cbb12c5a355314b485488f09cb40574efce4be0021623a3a4d2bb82b640a6f592cac545cef3ee099c0d703736a18ed9aa73996048352351207619302fb3c5f2b11c5fa280236187d9dff581fd710cf0618c978c6e4d329424bc5e2d3ed2fcd6bbec8f5e7a8dc34a929062240c7a48e41749c0b872dc0d12f108be1ab105e015f14da04648c05a49b281ff02770904847f47bcadd59a165bef795b27dae862ee13c796221b76d61ddbb1edc291368b84e5a7b230c574dd786c7b55bdc1c3d05214002cca5064bc886f38e8c3188ac4204a4b6a723214dd8430e60ef2be50adcf4be68ca17835881113287e001e07bd751f2f39cf27d54f8afb68224b2038cf22202b04471214990ddad40b8dd08da2b9d50e1868722c0c837fcfb678990503d15b99de4d4f4b6552bc9a1e85396ccc257ad393b33064e48de26c830559c71310811b4008cf266ff08706c0748f30c68ac3ce45246f53f6ea86cdf47b43c999d3834e21d0e94d78fa9123f9ce4c1384d01c352f94fd3cd43342adb46a496275be95649749030cef183e6f8907f2e7833469c7885d297dcd088034915d8b03d5c8c3067dd4a8b5133990a09d1e42ecb894f93743103e997ffb856c9484102f7d3b093e8be8755e8dd8090c0fcc21e78f3aaf7b7f0bcba3d0d9b17c55d5f295ca6478735db6d448b5bc98874f1da2d5ebe687726352f9823d317ff1e5b47b8e1cd40df63a6b5a8da2f25d17fe38989d2fe0ab2fb99b67d7c3f34362766ed97c83ba59d87b7e5206eff5c8046358d56e57abd850186caca8f4a6d58c351ad2aa1d631a5c38118d166087a5fc8f6067177abc24270aefbd37cf77af3519b09320580ec04cee38ecaea4d665b01a716514c45931db08415c9e811c59496e8aced1f4b38cc02ccc767b00fbc268e34246610071eaf86b5474243303191f1350526ff0a2c55593d2301da5865cad80f2e8cbc50ec0f6be54db1532bb0131b4bf6e1a784c07227b9385f2a5dca04ad0bee177f857e1fd4b0ce62b0553d528fe0ae2c41d5f6c9dd5d6ee31879f75c96c6782eef12da029d0a40eb58c0073466a7219d4d5c1e262b857738c161279c344737ffc630ed6195f9ed4e15688b860628a36b1fbc3c2549eeaa3d52be8b164f570fbf4ce46623638ee0e55481ac6c70fb88bb62c418e3270ddcc0b7d04c1fc5168cc080ce64c5740c7b81d13973fd0acd51b18be58076a7d4811c27c150b8e2685a2eaf0aee56e47acf89d97faa2874a9b72c43fdef93a8eaa82058cb35d8023561c730572a64a40946f1235d4523e2d23d5bd645c50a37b96e54dcdf84895ac28133973f110fac3250edacfba09e05705002aba24a207d6496d0865d0cc5f4c987ece10d9fdfd041d3b3adebbef26919bc83884fcd7dab88b2bcda6a6f7129b6753c2d44459d0c29b68b34f1509ea66b85424c693b095206586aac5587af0c54f0e9a5f27ebfd0694a4376ff6d637b0d67440d526c6fd6c3205fd0a9043243c235751800f73610889e71abf0d41cbff78d8e22e64fef2789a43bf601fe1424338c52b6e3a52497e7678a1cb7048aeae9f234215be85a939ae292032aa4f7bc1ac1a2c50f18368464c1c2be937be0eb705668b8cfc352fd9982539bce69518ffcef38bffb683c10f9ad47c28a6368fe3796fea5f765231617d75463162e6b48f9a4f0fa74a648d8d31ec489ec9cac2effbf79a45146b219ed064620c88201a8d30645e1954848ff6d5478fdf08308d0232b2c68fcca8354449f5d1ab032d2deed4cc267a7c6be9bc75b1dc6fdd3dd7020f14ea367352d40aa1aaea4623d01e1f2e62cff191815b87071554c6f6a4b91c1d8b3e03c1d965cf089f6608634785d47b2b7f3846cd3927678ff93e253fe34a298acea355405cb11ebc637f5014b613b06a5e981cd9481f60fd20b90a7d1108e59f4580de7d57a738e23233ef5fff4aaa9a30b54ed0f48a33ec02bbc9b596cc72f7bb86ae961663bae57a0e49cd1a1a9bb20821e40635124d0ae5d99126deb449f74c0c15fdd9aa321dd5859d431ca9bccba4024ca92e4be910741ac3ab8d76e4949dfc4a0668663c4b582b3facf7dad3c2f970728ca63d4eb17fdd7835dedec2faefb717aadf0dac3867017b02b837e04902339fe11716c053e5d613adb700334512982e190b95cc4c823322ebdf4109563d2d91ee49f3920458568d151856be474b5c388f0c93e64548fff1b4054bf05c7478549fd84de31472316b36838e8369a3471eebf2f44d572a482a23e273a9c88bf4da196fd3f94a900cbac68636ce493d0b1d079a288eec1be5481ba063b8734e2cb8ba8c21e33337460a457ea2b99f2dc90a221324af7550ad466cdc0747e2e8ae52b3d7f17c81535836c81a8c106128c9bbc3cd5af77b9bfadfda3fce628b34fa291332581a6bd75963efc54aa28ea809ff4e6c2a5e4b91de40c4941e15430b86d6d3f5f52ea90e7c11a4fa80ed3d3a783413ca0b71006087cac79ac27cd2a0f29783572958a45f271b9085b01b0d4d6b51a5686a1daa6f6ba8687f0f3197197d752edf11b6035a0b90e66d449ee65d3c630299f7335b036e232fba7cca15acee8a0b95ca0fb11085fc370a0e76d3f34c49e7b618c07048c62583b9d5c16c7f2fc76c974fa9ccf4eb1c1c6406d824f1a0e87bc2b1ee5b9043712568a5e28fdb44c534c25ab5ef2b03afb1703b9559768c14f3071bc4b9badcd21db20d6b4ae58a14ab1c85172cddab63619d041f59d70141e8897b619c33353d4d692a28a96839225a830f36289ffe52064b2cb888c1cbe92cf019085a7a80b91c053f2322eb9c145af8a6f4a46ec8a65aad16beb9d9c16e8ef56dd126eca02ccd5bab89e41c6d843f7e22ca29f2d94b5b69a5bbc459f7c468469e5007bb82216c97f7933b39e1ca8a2d705a8063a1955f17363a25e4bc76f4fa62aeaf46ade104a54a18ada7f2e027be4b6559557eb47ee6e9225e7998d2f005e99340e5bb9acc768c0024443912a53aaf30319e96365d2c3f8e4323c14b8d61903474d149e0891f7feae7100c51b83fc7cf3e4167ece994c0ceb152ba30ddd7681b84fba0e706a4cbd886c10fc044c1d2e74e1c601b794accf0430a480ab01e95a6eedef7c797f5cc7f5a069004208781f01fb5efcf082b76dce116cf7f1b228a80c759c7f151681bdf58abf361bc0f1c5a11ceb825a2ee2fb2ba519f17bd2b8bda9e408b91d83f879b442ba4f59f1dfcc82a83d72ab78a4b2586246031533a633c8b51632c3da597e8094a73c85ae173569949043ba339f0cb271b254435a3fe357ad8f05d267b9a932528a9dca70a1e2ae4a191259514ea3446e719ef19edf446d55aebe2d5bbf4052eef44eb2c32290945e01eaf86a4c561a03a62c9cdc47022ac6329deaccaa0957eb132c11fab12be9c59e199b0f935ad066a83c4a9410870003d7838c016b13d026abdc010b974474b8e4909420fd0856030fb07ae67f4cb35c7edb71d7f996d60dfc854c81424c155a86fbfd804b8527983e68109b81704abaa7c0f668582796a44a025c1aa2adf8359a1609e3afbb4205855e57b302b14cc535779d02ebd57696c59245a76d838b8201712e18a4f19ce663286011d26e5e01e3723566170560aa7cbe7bc447184eebd6a1c55abd1c52c9293e57156721c1633d7d08dbd5cada3f532fe318a7bdf365a0e07d11da40dee88388440457c662e4cc7981b9ee4f4de9f1cdc17a185da2a1e79b14bd91a6aaf9cafe54cb1881f5bed785db2c9781fa083419f7007d738a06a39ebb9227f51f12c0c8f3a1114b1372b758bde0c83e7cf36e5f60344675ffccae4ab14437dedd84f95a926474c36472932020b85b993c2b2d89eebe6789dba093f07d1a68ca1076721ff60c0e011f0d621fc320c35310f393a8afe07e2d6874a0ee2e78cc5a6a909c2aeb873357cb0009f0d480983244bf1a1cfb78ce757c173b8a51c5401cb7b0441911cf8cc1d185d4d8889a670ca2239d838fb2329682f8af21d2f8b86585e23a1e011aa92e3836504328dfcc08338ac19d7b20adbc60ecca57cd091423514d5f418fa237218576ceb4c6cec0bddfa7cc6e2c62d716a689571b95cf5eb68c001b2f85b6a930cec2191b3146719952dfda408ba08e4e45dbf6618ef85b4e0e4458a095f5ca82b4ba6a850bce60421839240b57481f541e4472521a057a07841caa9aca42e085760a154ebf1e6a86ec59778645c4ddc6f0aafb7ffe92e324902660801a18c15c915239315838cc41be9562c339a21bde8d73ea430e93c181a367a7e88604aa644a7b5fe54f6798777d74d21069bff5f405bab3bc03c38ceee2e18cb33546ba904f0f6a900f8a32bc7f165686c53e1b39f451a332014861000a974c89cf84787496a2830ba7b22abd482de03e79951b59231268795de58e0ea0019b330a2d982160d4c62fd1054af81aa9f39541ca20cecf438fde0f970882da4c1ac5c74e2240edd0e2d0c75f4e049f3fb17402a46eb5513bec0f4f59ab3681fd3801e846bd34fcbd144311647e8f25185b67821bdd894f16e71ab0ecc8a22d1d41cea00bf2625f0d0ed6c922220df05c858bd5622fe27b36da930b60adb4e705f46e2b449135b5e50845fe0a2b8d225b307a9ffed0ed939fc0f31ea7deda436035badc2f66006c81e1167541aa40ae1c57864978f39bbcc9b3e53e1f3868c290121f6dafaad9bf1280fc648f88770da646ffd57372a9ccf01dae8c3fc42b99ffe54bad9ddce1982ad013c8fb3fd23aa0202335593eca126294ffd07d525244969fbb81f52422c9c6e037fb77801eff9ada25cb46126423b79b2cd40af84ec5149cdd94bee30f7cecf2f37b30e2d6746f535717aa4d6aa1745b27125a3d6cef278dc2a52af0bbca80f6a160a216850803c07b5e46f5e5d2099bca32b9a0101297c8a93da965741c4337be8d7431cad33539d523107057097b1b6b33c64a30834dea01249a4a54ca7ed33129e0bfb9b36f0c3c66de91c5a9712329490942361ec6e223283f2ab66acbfe4334686159c85c2bcd2e3e8b9ff2fdc1a59551cbda86419fd15d40bb8bb42802802e512190c91502bcd800ad004d7bcaf48b9af0c59a3309571ced20cf39b985d00bc618e3431fc8a6834f6d1100e52e7310638ddf15d36f394d98edfa61cae2b995322542bcf5d76800b7fc258924f4627bb095d1c4540c235e7dacad5ca9ed8f3d95e0a4e2c75a4a27ca3b4562a8696929dff0f59c3340f623b9014464824e387a3e2f2b45ebf68a28bd3fff6e0f203da8b7e983ac55d721ed9b15ca17df5bdca067125bd4c94c92e914bb9bc6c2c4ba7cdaca3346262a4c8607480e2924e77f4445850eb7d782ec47d093a4cc1b4131f5effe09a0ccea79b1557dddce053598e6e7d28cfc4db61ffa2b87c1db63cfd5bc15688dd648dd09614e17114fe8d04ac8f1136ca2939f172a02e0e16c66319834f30e08b0c23e3d0320afb8cc2de77ef32f932ac3683d658ce3a60d986aa3fbf69de5491bd254d4f4ba8ea7e2c91e9e1f6dccd18a356d13f11ee67d7c9653215f57c45ecab90d923a075c35f3cfe20881f65dc97a568d5fed0f7f66250e97eaadf049f6c2b66ab004aefd1dd198abd5dd6ea3ea5faed844f9fc0aa393eb8e46589f2dad09985284d72f3fe8fc18cbbeafd4d8a71f65bbaddfc44053ad062da6fd3914cc21c6475bc30825c31e72a6f3e5cb1cadf8a0d856f712652fb167f368d20ddabc8bd01911d2a3ab394e5229f38946a00aa5391f179b3f27bb05c4e6429bd75721498a1c6dada112956cd30c5b523cee9a658596f2dfa06a3832ead07e72f3090dfb94d74449286bdebb99185f66c6e8b1571c3be0507da2cfcf8591665bea8db8800c5d5bf43a584b667b5bb7ac20b6c7d0025399351698f8fd97cc40873ef9e9ef31c32762d701a6d10ceb68b37dc8e8d117515eb2d6d9d11fbad5540cfabbd961a21c57d807d6e8ecf01dd47398bf35b6bdad9afc2682aea7dca77bcd934a0423fa731f85c162b2bb41a4574c3822fd17bc1f134fad298f155cc00bf3f13c2f37108e08625944c7f0f0a7c71c4e36ac083abf8a64fe7313e40101437968c1a848ac75b38c9e7cf3cbc8791b14670852027bdaacfe4bcaec1540332930887bdf0cf0df8e105da3391bb85f237f9ab1f0a4a0fc776151fccd722c5d0bfc7e57f0f1801a258c1fb04477cd391bdcfc1a33ea9ac609066e3a1766f69b84e68371397a2c4fbc4e5cc1c504eddf009a85148bd1d348c1c16432a79789371eeb6f8fe6baca7fcc3b8efb7427d8d97b3c9a9dc68e99833ca4cfc8f3093933bb149414d4a1677d75a35c151b74d2cfef7e7cbba3ae3d7063c75e72feb73f2d3c6f8cdb904e809135f4f8a274254b7580a846e3bd877b4240445a9eac0bac07d803fd30a2284972ad6989b627555b0b3e756532a630350de3818ed0f3f728076d424afb0e67544afb5c867f2350e1441fd23fee4c6f31d4519638d03ce31d831af5da41c350e7edd27d6cf02d916e0d0e987d4f84b959be1bdd2a03aa17840a555e0038fb3b9d00c5690d65b909965e2b1be432897af4e959a4e08fa6eff204abad748d82dd1fb534cf63371267d47eee231172e98ac59deb1a7bf740dbaf06c470b458f7430e249687c89a48a698d932064c9f6d76bd01721bc21bdf4a7f4e9cc606902191da912316b70e2ccd077a1df1b4a4d7813811fd5984f5285f875c7cf1ee1eb648027dcfc2f848e17e6c6df334c9ae22f459cff7c3b0f3cb2481ec3ac42a4077428cd8c96ce72aac0a6ff1330ebb7d1d76520be06368047d93be487c2fbfd28a9e34e89a546116c533f285d5ce122ec8d317d73a5d648afee27cf11c78ed0862a061f2dce918f0d72650c400382eabf52c00404317a509503bc31b1ff03631bbbd94713b63c82e158d75d99d9780cfea7e98332293fae549087ab2ff5f397457a1cb2f661f15d8480479d26c8667ae5d9dfdb550c28cb77b018c50d46c7f68af9631e3942b8ac9a63e9fd3175cfb69862dcaaf80cb2dbf6bc93cf97cfd525c39ecec62a114f2fe47b988d9fd5677a9bb816481cffb62e5da98a0471346b04034a329ef8725cafffa6493f003adfe338c906ff9df70f21662ea247c6facc15bfe497a97e7f0d29ac40ccf73cc6511343d84e1bcb9e7dde31a144def7fcee1692d9e7f91d21151730dcdf8cf4ba51a9fc358739ebaa074da4874779f2cf1489420095558934e9f0f40a634bfac1b6e3c21f19d3fc2fb71951bb791ee905162b9cde91e9bfc6aa67b24333f4df77bb0c873710b7e49a1117aa65357da1349aa0a292035d7c8fbfb15efa40d7bc8f4fe363d0c941cc14fe16839dbbef5f2877ed6aa1220c71dfb487fed02f22aed536bf60494ad16f3317b88587bf20188a27366f31ab7ac745cd1c4cc12d708493311cc7c0cbb6c649ccf53d47cbcc5a9d6e510f1245a073d7c0b8d13c154746fd5ae2633c7480b81c4a130085720c5652cc5bcec433855f857d72f09924d30e1502e4bcd61c55cfdfe47a11dedddc9cf769fcc5ebc9b7d7abc8915d64147c86386a7fd692e95780b356a66a67bdd19f4bd992fbc9eeb62e62d7e155e0b42cfaecd61a71a4631358381313ee87c4d37f107179d9f4394027b59b64a51db064ef418d235aee9091e88eea15d32cfeeb4209e5580631b588bf863139c6be3cacb3a772fffc51ae09cad8141e3438d1a9739ec7dcca9ff73bd1e2a03e4ad743a6068cb5e5a55147748cef0780020ac4fd731aa5e614169e2d538c4184cc92f9c78f8a008f05125abe53dc10de7d3b1247022e820efa1801735583cbe67c75d40b10e1ae800963122609d78d68712d8e6b20c6130007a13497ec02929242d10c0b328c030b28e12a5fd9e27ce90c19015627abdb22a53891dc50dfc777b0429ede8717ad9d50348e2c0abc10dd0bd15e9048b131bf03d90d5e8d3fb4c0e1eba1bcaeb7d9903181fa3833630a97a84a38932aa2cf1e8e4c32a10678a9476e7e36212ce835f3a9cff88da17ac6a962c88510e3c26b79074d369bd3b0044bdff1fa5eeb3c14a7a9cd9ea50386c07ab43cede2c0044a53f17a9d0cd74b8b60fc0860c6becb69faf2871c126e98b26289f4473bd9cbf95490d88874aef3d4b17436ae4089f9fdd1a1b56c18e1d32051577d445eecc3b2008b0bdb30f52476a9a65f69e451860738ab674161b6a5a9c9a13c137e94890da2577bb02695a7cc51aa6ff46653802570e5334780dfd7c0e4e127118a6ba1aa103d8424249703aa8066855b2056b25107968aaba4677fd57e5bfcd8e90bd66dc4e10a43c9e62d61da4cdb088ae4d38e389800a00c400680017c96c2f49ac2037f2002420612200b92caf97c10d6dbbb3ff0346ecbc7cf518cd023521ad95beebdb794522629038708e00758080fbe0ea2cf3f5773954931943e8834d20425411f9231f4c53fb232127e287fe889e40f3dfd10f8226924f4e01b117dfe23ab23ab29e29836dec7d0ff901443491c8884afbd7186b932328fac44a4502814fa10b9830e3ff48bc81abe47ceaa35a93d05ef411ffa12a70810691b524f4c881f7e3945d29155483ab2b24f4939d017eaa6acf045d288911a709861ae6e9861ae403fc35c899425faa614465db017cc454521a1cfd992289903bdc1294dc48148e841a41123a007917486b9424267215a43242ad2d51429f9a2817177b58bb14f2f1963c917c81a6cde91cebd252cf6427d4311549aa04365ce913aa7c95d48cd331c3942c6831944c8a0091b78b19a7ef2de491f5986db4b0fec0afa4ad240b83549091baf6d90263fd90f81c8d2103ab4f64530dbdb8931781f0849f6033d0ffcbeaffb5e486badd7791dc6780769ed8f389d1447a2685282243e3861820747983cf869a204cb19504890860b3402e45cb4951886819515603f03851c15cae0c10460483141116263ac6ee02109d60eaec4c0082b02fc00044dba44e10a8195558993c58c33b2a0b11dca942656b44cc18119b855f85286307bd6b274b16f1a351d24a965c9b249d8b386032576deb396a546a77c0efde9d1c7a9d58a40851081199c200a18745942841db430850b316a9086952096f0283460a587a707598e58d2e2c014473843892f84e839028f12194ce15122854789113c4a7e4043083cad30785a39e069d9785a58f0b4aaf0b49ee0699980a715023572379e1fb4d860c0f303143c3f44e1f9e1c5f3c308787e48c2e3831072c0e3434d8a168f0f51787c28018f0f2d9e246bf02401024f121ef02489014f92267892c07892bc76cc60c70c76cc60c70c76cc80c785e371dd788270c2e3e271f1b8623c2e2378905ce14172050f121720c193a4c583a40b0f121f1e2460f020d162734efff230531e15e5d89634ad0561d68666a0cc4dee792eb4d01a72ff872bd1bd12ae2dba00caa68d4f1ba7df91608c8c215257f8e95602934676585df2a64097600c8cb98c4ae80911e806cac0583df927a1e997606cfb57efc0b073d65a6bb57706c3859ee495b989beadd5d67abdd81ed30268d79ffa65da902f7ef2f7177aef97a64bc3556454dc3473133599eeedfaf5014e972f5b6c9f9d686ac9b3eb5e5e2badf5bae8ce37b78042655312686b223428f3d4dfc84d9d12b65f29377645975e7965de8333b08a377ed775dd95ddd88dddd88d5ddbf779d7759bdcd77572633756eb8bad3be3e6499ea5726a71dbfe792299d994c934f9c3cc1466b9c9ff3e7d1d5307a76a5c6ef210c95795a484fe4bd295c71009bde845a491d01f595ded2b189c9b98cc140e2e260e9b9b7cbc6088b0e90e4c89916c7fd354c190414b189ca79ee5261c5cccd4f7e0e3f53d60271b09fa2c4fe122a62944e2968765a05deab0b00a7458394491e22abf1893f09369a3639718b6fdb3d7dab396a5b57bb43c559a7a2cf15477829d8556e38452535535f1f2365a30893e44baf12fa4d06b928d0f91562225425f494ae43be9ada01821f59265111be40f92093839f5544f256c4a9a465cb4fed0d78b3bd0c7113e5e9367054262d9c78b554f3a3e501d1f7ab432a886c9f62f4b7bd6b8481345041b5485cad1937f0895431101932111a82a073d8574e766e9c941559707e1ed42afcf0dc2cd4277ee112e0f2e979eaaba64d093ff5d2397990af63c920f27d3a68a2ea716342da8c040ab2aec795ad0b6bf0e6bc9fe740865860f22ca983b3e9a5094c3400586190c553c451f870d46eab626f970e23ea2f8c93f937c487193933e5e6ed2e226989bb7cbeb436190c30a5d4e2b301fafed2f62415655a14ce389754752a0357065bbecc0917d5d98855b4266ba8cc3993474f7e5f5d930381f4de80e4d178af2f7d1643b8c165df668b15ca869b148a33dc5f06340644981ddbd487a5fb7e7bd7f473a7dd9a3b5af17cf226d8f4401d6e5b84297bab6fd51399a2e74a7c64551fe30389a2edb61b86cfffc91ac9b76f8e9d29d12f5b3cb9a2166d2d058933c17f006c919037d981b8c1637398c186eaa334fe8fb539c305c684af6a042fbcf0d32b1678d0bd9b6db539e2a758de5a912870da7e5a912460bce0bc5c51fc7e5a93c6b589a780ae355b84b54ce04bbc441e26497384b8ed8254e13237689e3647ba653077f1a45e0e207285eb8b2983540020c9e21ba9821f90146b41162560a944c61899bfc6b4dadf76b5caea22c5acd2b4a8daca6ca6dbbc98ac368bb0c33ad0635d85ce4765943657bcdac865643714c5d11db5f3bcfd0e8d0b7b6d61c5e9f0ca305e636756a9a4c1b982f66aa86041e8c963d93860677797d6cb65032cfdc84c3367558386c38d00bd640d75e7e70f0cc9490188e9a1026705cd9fe30385dd3d135214ca0723a1906a7936b2897693bdf60dc256695a51ccb52b2cc5354b209e3920927a75a12fd7211240bb06709890959010c17ba4e4c9676d38eecc8e926fccfa23b3d5a1415ab2a189c901550150c19cfd2f974747ab4e88e8e1013054306f57055a5a3c3ead142e5fece3c55c5539d8fd72b05279eea3c65a378aa62967b3e5eb473b1b0ad311e5808cc04b3300bb3606ca05390e2a9d2b43d05598dcbab71328e74845558bb239c4943e79816ba4dffdb226bea80b6ffac71e5a062ead4a953c64cb10073934f9d9b6201ca34f9972870d9283cd98e020b5050e0c202cc53289431517882caa172d3e6c68aed35ae1ad70d4d009444419cc1f16997a81c799bd04a4238abca41bbd4546a70585575840a2a2298d59298c9208c953f4ecb1f9543fd8494f4ed5ac990927cdfd8429729b0b6d7b8727755e3ca315da27e503fd3c6ef2af4f707bb3c15b1fd51b99faa1a9fd64a45faa81f54aeaaeecabf7a1a95fbd7af49233bac426f3b0f0061399e50039b36fea81cddb964cd93494928dbbf440d617bcdeb5d55e3f21505ed1a174c169dc29214fc6f2e8597f46d6befb5f55efcb91466b185bbe9a7b0c45331a4c0de96a72ac62cc0588855952667bdf56403545018dda9640e45f907a94e0555c1707360a0424c5455511030d9fe375ebc1b2f9e6dd39c434bfaacb5590485c29c0a9fd14c1a39b2d29f4394d27b6fafdb0d74e95bcffb32b4ad2802b194be5c0f44f2c15b857e8a4334eea76e61d52d3f4cd3dc1e59866e60fc12ca705720900591ee6a7a8a821e7403509ab0f54e8e1641a80ead0e3189ba286bdaf08061b0196c0683519b7b4eb30252d2672707cf8ad2af782f5dcbeef48ccca2d0927c5f6bedb5b8eb3cb0ebc0ae0b85bacef3ea69ac2f3b5228df46cc48c26391173e6b22624d1def62aa6aa8ac2ac4dc09dfcbd8b2ddbfd8ee566c77c7227a65b2f3bdf7db98348b4c1b4c1212240b4daddbb6dbf7b6d53ef3f73cadc7f11f0767fbcb0b7f396be63dd5b338cdabb81473272473f0a6983a94cc61dcb386cbb2fdfd06b2582c966de539da9222ada7a90251fc9d0804a7ae7091a227091cf410850fb6ace8631108f54658348bf61cc029e955dca49dd074cf99937ac67ab116637badb55acfaa4a8679a2d467744bd5dea8abcf7c8671907a9ab6dd53a9e826001fe4e9c50c6d9f95946b38e99cd40aca238b2eef2b272767acf7de7b7368359bcdc97901bdb8e25858431cd3394a1465aa270d4060da4c314a746703330225096110db29f9809ab69bf41541bf0cf46ffa364c1dbcc4b462740186e291d065f6c93e5305effd7310a66a00f3e43fe694d9a7ccc1311c8bd593533b3d75f1bdf8de2e86675d2cd675b6e62e3846772a998f90d7c02ac85cb24f977d6088a04b1cbb79ca67b1fa92425da1173ebee429bbaa2425eedbfb5a4e26ab63a6bc1da30926374d9b128992da57da04bac4c1d17ad62c8410724d9d14b6bbff5405f19bbba5d4527a33c6145371c8374ff475dc6a4142393c250049e8faf86ff5443140d995f49e523a299d94624cbdcfee5de71e76726f26947eb4f86fa8fbda7a6f0cf22c953ab49de250d215c500c5c7749f24dd40cb23bbce39c5e9f73aed3ebb63ec9ed7ddfb7213f5bc5ab1eda330ea6426608877a1cb69b3db7f07556c3a1300048d4d538b0525754257304f5e3d9aab0b4d34fedb858e011beab6245aa4aae88a561a58db3112bd61aa68cbdb25a0f489590936685392c684d0257572ed0d1c34c788b7d8ae4ba0e72e6f1159876d088d518fca6c3406c3450fa9b556afb5765d87bbaeb3b6b31604adbd3f5830e387cc10680b07169be9aced6819ff269dd3ba1c43a1ae0b8142a1d0479aab6a03ddf9b63f06466187bb0e774fbb1ce0e7d1c8f34622fdef033b1aa3b1aeab36d3584b43433343434393f3b40da114e44163b169fb40acaa8ae899a3b18f1ca29f68ff92c6e6ccd8d6794e1279963cf1ca9c73b4d3c96bbbe89229ca60433b6b5ae6acd5dfde5a6b759fc1575e3de94a96e1a7bd3973188a1a34866eb53ab935498a443baaf8be6f47153baa08bfef034130e7300c4551048140a150486b2d1289c250048142a2080285425a8b44366cdcb8f1f28203070e11040a85b416896cd8b871e3e505478ed1681c75e880818989d9b1434666668686e69f442279f0e0c143e4116690070f1e3c78f00885425e170a7988c49267a9c471dbfed956a72abce4d8fa736b294360b9e00539275cacfc71cd1fcbfcf1ccdd57201be89d99eadedfc74ce1772bfb86d981f7b74189fd9222296797ee4134d005a8efe2a65fce2cdc049be66ccf069f6a7840851ce8c9bf6a6dada4014c1b9d89050c40db92244cdb193cc5eff53a8cbbbfa4ef92bec79952ead83aa6c9562cc3b21c68d38d95cc1d179fcc179db27a5fda284df6fde8c6b79bab293cb6bfb77e6222f09211e0166e6d4ba2dfaea4b96bc56f499ee7d6aba0eb9136d4eb7282a374f7d6c9054fd93654d14c61d934cd950da0ed5fe24c2e989e2ee9866983033df953104c237c3064687b6fbd385de2f062fb5392c53219a63275e8cef6c751f87bf8057b8d22d3c6df8635bef8c90149beca4ee872e6724c97b8855bf62b69036893305d621996611996dd5b1ed93142eeb66f7749b7ade47de1b891cec8d98431c600954782607d4f4241065f7df64b01d4ecf9e44ce50cc47cd98098a9184f8d6e7ae9fad26bac728bde2f75be765655b665969b3cf7304dde03956dabaaec027af2547e629a5a5505921956c18c852dc320dbf2abb5fd3dd2d438eda371dbb32ccfa68d14d3e68a9bfc5d94c1571f995f41688dab27d7399931f424cbfbdad4d66a6b7d8f3477ce4d5cb6cf556efb575babad15e726b75686bbfa6aa5140449233bacbeffe138369b8d529c9e5a55dd573dc160365bad229628843c4b650c0e24c3c355556681645055f6819e3c0fbfff12c79e40772c692948669c07ca203007a231510e02014ce3db9434c11e500bd8b3fdc19f0ae2c02dd3c69f86098ee526172191194397a2098213c6a7f3badb3df8d98b3ff0a3f995a364576e929d64989b3cc7c2d065969599b5e9568958f5e4a25695eda0686d188adf07736577e63bfbb8c99f8232ee23e5dc1074f765c60d119bd0a121fa8642888cec005a7d63b40c9201e2e8c99f089db7cc149d3a3e36cd4ddf9e5f4c10d9079a6796ee642b32abaa3214f90adfd77e1ff87de0f7d9dce499663f32cbf2134cb43b187eff26d3ae239398204224612b5ce22957388e9796733917befed15d3c95c3f7f1e9077e0f9234e33c0d661cf865e812dfc80eab909cf534dd332ee340f09bd1c7342bbb76afe02a0e87aba74bcbb8aaba385c485e1acc18baccb88cdbfe22566bfbc7b84ade007ad08330c200038caf75151243ff05f22c953483a4189a49a15018ea905f7c1ac0d7a40ea1074301332bb3d4d29be847f423cac14cb9b5a48b9b9ce5261000001081d8a7c1a2ed7ea1c1a22bf854bc60479ec04c96a3d728b34fc59308c47e1572c2c6e4c9e6a653ed74852c474b52306ab9e964a3eddc04fcf1d4d4b151a2d4af466cfab9352b80bdf575822074079338d4554f25222a101cba9383019a43834593dea55b333f4f850574e7c60ae8473175ec8b667e2c79a3895194a32cd87af1c5d58a90d0e36bdaf88b72222e3f9eca371703fc999f991fcf717113ce4dd86f7eb8b829e773d3c553e5f8badd88e153c746b137b9aa9aa1c21b6a68209888f855c32c306afdf22701c1be3fb887edf8872de2294b2081a160257c30135264b10074370720a41e4e48bfcc72e1e08840f2e350944c0a2a366dbcfc5dc1486c626cfa3e3d5c6e5d70db91e4b6e3560b249c4a965c14552402236d7c62daf847604677c6118af18ad2103846591ababc3730a6ce1de3dec2b83f98a97a6fd78c3cf343d39af9a9a20b329a0b4268ce085284ee5c526626331b65230b0c3083064d6b068d910534ac4d776894cc188106081917ccfcb072fc782a6c9564686c7f1e664a64368428d584e4a8d075bb0c5b3518733403946025214aafd293d21025283aae69e38f330d1657498892abb4c2690bde45283d61a177d270a12f59cedc9d97521dae59dd548cc1b70e9f6943ab9c6a252499362e43136d999a8cade4aad8e6178d0014d5422d4121a93257b6bf8e4c159917f8c8d060fb5bd9546c41c6f6cf3be1146566de165c19178d92ab036ba82404e8c0718a51364e99630b46990af916e9195508551081dc5701b504d542219936b9c6a4dc7223ff51cbc9ed4a8f155b95ed3fbd4665ffac563f365dad562b172ec967fb037900c5296710f69cae16c2291671d3117aee51462da6d45a12c565c8642eb8e002be1586f03d85c37d1cca92af10fad284134837ecc0bac1088bb5e9c7e000da1ea8a1dd15070f78620b204b227139781b930f281203ed77abb5477cdbd25d2bc8eb328829c507b02fbc2002b9252232301b307b7614594297f7a6bf0c5b5f88a1f79a2433ab211320660a7cff308899ba65d8baf9a2850011c8fd1cc38c815610fe5176b7ec5bc645633b6d3b0f190121fe7a7117c443eac5a38cee5cb20845f5ccfccca83143e98927d4986d2f5931677eaaaa0445e98a1c947e085d8a722d1ab6c2960c2370ad769857b0c0882955a4608670862cccdca94f7f075d89667eeac945245f1999369e3172ab1da61a3f548162a53f4432b24307ab1d5e9e58e9a7222e9ec2cc4f1595316d3049c4455655a21f3fb90d962545b924f4dd65d86a894439514e94bbb979aa2cc912406dc5b7e42a11f1a23b970c42515e2282aa64a8c0b3f6fa14301ef12a1151726140860aaa9a94ee6460a2fc550d18030b5a24085d9e6a37b6a9437f629975a1bfd87eb345d6c5175b4227dbb4f110796f2559e9543bd94eb6532d6cb5443918118aafc5a1e36b3c8116999a8c14d3c67f3c810c0d87eec8f08cafaa9271814c16dbbf1480cc0c05bae43ad9fccc2a50843a604a60a66a9439862d4fb51b316e7037b79b1edfd51dcc85ad6a6b05d9d60dd7c2956aa0cb92ecde6e703762dcdca68ddf6ed6a29078aa1c652d4f95221fd4124f952597285772955e229fa963eda835728d5e23d828362a606611643cc1f8ca11c26600912258b41d2dd93e728d5a37b6d0e588869001f32b4fb5052c4004827f01a20b9a089de39a3ad34a10bb0c6b946cff53ede473ca9db8f869cb3cf14cd558c3c3f65397ed3cf609cba98bed5f7c0a7419b6c45855c9ccc459155f556cc92815b02dbab67f88a33be1fb8735ba13921fa6b1bd0ccdd81e02414486b7ed64a883ed64c8c5767286588c21842dc22cb67f18f35126d2b68753d052949bb22b598e946cff3254c1e6319df0bcb035cac296254fb5287a3c894390c8ccbc5dc56fe9cc8090010d980da0a3acaa4e3cf3e48f65d605ed8bdaa9366dfc614eb5991fd9c8355a421ab5a6cda976aad591144f95333f2399a74a99d9aeb2cb7bcb6d7f99990cadaaf4d7c09f28acdcca2e98999fcfc9f912b58c43c8daf52bc57a077d137d14709baab029fd4d4dd834a7ced2659b3eb5d2c1366d539755d57d6ac522f6a748c3253d5b299d9edb62e074ee84ac3d690ca51956ff013a88edba438c5dc36a7d87a7cad1845d53e0ae3fcb70bb8b2f4c37b9932ea6a49e369454869754be583246888d99fbc8aeffa37e90fa383995c662592e7898f430c4cf9e3c43e07886b86dbd27cf10b6f74dc27a7cfeefdcf64bb786fb18b83fa408569168453c35b70d465cfbde3bb5ec3bb9ec8b9d8e28a8aa22a3fed17473f61d524ff771eee7dcfffba6fb201ec800fef79d0ebaaa74f0befb1eecde23e747cecebdf3c93878a054da9cef2c85b43137d9f0429733476554e64f67fe14466373923047d0f329096f1beafd528ff8cbef664ee561b22cedd21b4bd5b6c36d2fdf97481570c601734229adb267ad87b6ed96c5ac502a34cc7af286e054b1086dfbff6cdceea927a7a1e6628880f546565b3d390d340cc9ef79f5343f22de83f4fdce8fb9d7c65c75a38a67f1d4ac69f1b1b7d25201c97040835d5a1a0e5ebbb436dbb34babc5deb6ffa575ce39e9d3074923e07ba4277e65cd6db738f57433f9c36d1556d29f188fb6bd069262fc3d22df830f924628ae9e5c4f9bf9d5565556d633ea1f636f4d3d37dcd79fed360686fe5d5aeb6ffd2dcbb69c3e4182a21cd6455398cd8996c89334819e5844f1da250e1651b8281629906d7f151c0852801065ba3803feae0b0f9b2e71b693acb983dbaa7bda7da6b3b6458c2c5bb46c7f14546880919bdc0a0fc1648c5e8d5bac38b12806285570fc83547f1c1694d89c8011614b0fc658f9a4b45a8befc5ffc37170287dddac7f5b8828b64f422551a0a81c12a86a857185694381ee3060a2dc003ad8fe656a5b7c6b101872e84e259fc2405516b0c0d7406e8b6ff59907386ce4108df418d201821163c21d59069cf968bcef4898bc3c6ca9f67012c239e79c00d0ee2f5e78ca4401e024d41eb6b4bffe40531e24e96966f694f1148c8e3d3f6b4f8df6fc6cc3f3d4cbbe91c3c648346a1d211850cc0e4f659a3ddfe6cf2432e451b23d2a0900084d260090d0a3c48324bd09e4fdd592e7cd5afa988664addf053f65f3185aeaa140db5cb7f755048249be3b92a744fe1f2e73d3f64b2652a6cbd2ae5fb2206de3bc8023ab4cb29676efed8e5a3fcd6c8aa3c4d5c44df5297db996e8ebaaf489174e36cf08b8782165db713c328e1ec0a4518f7abb7e71d311fb99863134ed3fb3ec290ae9ecdbb72fb8ebaec7f4acddb86ccf53d43be24ae859bb89b1d758630d35b625eb5563dab6d8fe594b76f70ffc488ff43c12e86fbf9f3cb41f0a5d4e9a972afcd8d93b3ce54d1dc718775ed7795df781e0f76feb98d0722d0886522d866592af309420beca9414240318a861da94f434a4fe0ca12747891057113353274c530e8ea726304fc0ae7a72126ed5938f9b922689049a5212b342a0b740e2e6c453253e828aa74aeca4bcb8d4cde128474c1dba3b9fdcfdf920355c0ffc3ef0fb72109abd2ba302a3390779024f89c1324c89f6bf7f2d795f98267a21440bf4036e616db52eba545748abd9b2a8d99c6c01764fbc52993dcff3bc3bbdcb83db434ffe19050f86fe5d8239566e8139f0072f993af47f98703c1aedde40d7d89f6ba82a2022d8b78b79f22fb6632539faa34edbedf942eb309aa8828c1b0f1746ac8e0491a405b41709a6f438b1f2ff5155479ebcc007ae275388e0e78a1a3e3f98c1143c3451c66c35c35dfde8b94dda6ddae40771a08fa73accc31edff33cefde6ecfede9e901bfdce4356d9cd8f46df564a62336fddaa5cdcb04944d3fc33e0739995aec0de91069fde4ef790b9d337a1dc8069c19ac07888ccaf5b9d7da50987398f3955d2a3d6ed2e2a65b3de17cdc445f24dddc38d66a8f64f77c506fd7d9cf9183c242ba839798d808d07627b6e3187e15a1c57b44bc48f826d3f77ddf278220984130832008e44d9bffeff3b26cfa5d8f967d0bc310c7a68dffd39d4ae2253013f815e2574c0fba7c2c031dac42e925ebd390925ea84d30c1b2c6161ba05924ab89fa3b34f154bc31ba09faf3deeff36a1581c6e1abb77ef4a3afa953b76a9be8c99fb24c74564d340d840ee287f483de43a04bfada3a344104f4fa7508bdf8ae03e8750c7d22620c2565103ff4348834689282c82e143dd150eaa532cac407e6b0abb6deebc28d397193bfa0d0f441b43544fcb989f8d3ce4e71a71381d4ef3c92ef7b3f5bedbdf7defbd5c4d7eb157a998678af10698ae1418ff5415f475974e7236b9828d26f36adb7ebbaae5e6aad57b182bef7b0b5d85aefab37e401ba5d989b7e4cf7a19fab988e8c9101f4a1a701f421fd3a880f7a1af48b5e44ea10a23252cc10f16362687881ba1637f983e8eb25861ef434681d9a20a249915c3d097469caa2e875a4dbc4eacfa3d06a222fe79c33146c6ba028bfb2297dddbab9b1fdfe877bbe33a599526c71057d274c530913d5dd30ed4ca29e8339873987b9062b36fd2bc0f00c92bcebf23e5cc3e5eafdc4aebbb5d355d4ffbeee7ae2d751974752246ea22c1ffda24750144c2874c70845512676979737edfd25dc560fc7286cdaf8f779dfe7c15edf87f4387ea87b4c4b4a1b7fdcdfabaaa61b99a1400dfaa22f0f24769a56801bd46beda5fb9ba3684eefc9f65f423f21c5854d1b7fd5d38bdabfb0aaf2eacbea17066561e4592a7330ad342747c7eb2571280a7b413e4b2bc664f5c9f1a13b96567c2f29c289707447e4d3896c04b911c40375d89a5373e84e9051465f6ecaa3256e92b115df8baba529e2453e636c2c02b6fdc725a6112313322a797c4d9d22a6aa24c43cf98faf578f7cb3e964862877d2e254ab29c1049b9b137056c8f925ba3cd56ebae4f7bfc9a190ec9b9f1b2d37b8aa1a45296fb2dcf4dcdc6ec4088000504841468a14beb69e6a272d4439ba53ab6a7c9db4a0aaf1043617ba31b2a92ece0008a6cb519623c323e3822c407497f7364e91f115d971ad457a5a03c0d7d63a5a316f8c321c275b55e138f5dcb6ff27a16fa51eb6aa127d8f5b8c0cfa434f4493658f1e223d6c64917a72db838c92ac4710a68e2dd17b1b2d29524348a6a3026522b563ebc5171380aa40cfaab2f1ee89725565839cf91191f7165222dff76e8c46f982780462c73fb219833f3b322c47c94ec02e9905fe4c9b2fc7170d166d4bb2999f928b6a34caf0b08ca516d06672e44cae642bc94ab27a9a428f343dcc76137b268d995a63a6e8280623dacc8f13333f335264a5239aec9192cd64964a305374f4641c39b93102627c595a775992f9d9119291333f335c447b860874a7041f286ae68ca953bf366dc851568e384bb2349115114c2486488b288be8ca16c54432d14c44c3ed1584b0b1456656c71a1ed028c3c342f354cc0ba4153106a20ce80e7eff729485ada953454f74ec445a5274410432246c4da1b378aa0456093e50943f154b40326d5a70aa5112c5323399190f1e2290fa3c7c54320845e11b2228fade70c5d8fec8590187ee54b286a256a02a18e809861a136ed0a0a14bae1c5d46acd1b864442233eb82330357c6888bf7e5e867fb8fae4c1dfcde33c2556fd4b385c887a268a0ad8caaf888ca28cbc8b67d2465fb48b6fd47b11192a9639f89d112fb3572fdb0fd6711a324a3d668c9b665b902caa2b0d5f27629cafda05e1e4c6686b265c1d11d140db6c05d9936a8f254434991b909b5c444a19810f9ec186a0909d57213920fe5aa27fff2549395a75a8ecb4d174f95281cdbe5bda16ea64e1d6121315a9b160b91c0babcb83876f9ec5ccbb6dc939de42a994a9692a36c4cdb14db2a3393a1a292e38b46809e4a2e23b6bf809498945c3254c804a0cfa8244e14673d2a11cd00005000a314000020100a8683a2f1804c24697a6f0f14800c6d8c426e5a3c9648234110c4308881206390420610000031c618aaa98d52007aede63c80eddd9aea61ae76eb5408b3bb5ba722ecddb4b54a61cefeb6550833fbb72e358cd9bbbd9561cc6e6ef72917d2518118599831cd75cb5baa33e1852583e148b9b26218c67b1f719d3e6e31fbd958385345f2c4fdf7c065c16d8af154012b7225b69263ee6ffa7f8bf31b5f3e92628f4af6731cf781ed78b96b14871a4f103c051504173f980215fb0a477644e006bb575e3298f551717d4763baee7b6aa8362c25b7c8e62ce7ffab5e55039d88b25caa961d361f6319dc52f17b185a16186d1b6d980c9d4ff0b10f160859d99024101c1200e84a3712f49a59c2a2f6e2d5b17ebcbef3f3fbea937b4d7eb313cbbf3b7a88a8675986e676fc79c6d6f183d90d8679605351a870c5be5efffb3cc2f04041e3a74a9a5c45fc4836c8a31e22a05e809c84740ec03f379ad8577b138c8708f80082477772f5410e3b846c03884ff92ee37ba5d376c9b9e6fa00ad7ea368de422b9641bd26956933b00f7e4bb9760422e4e2e514b5773db7f0b0ad9ac3b843fff59666c97893fac48dbc753154471467ca1bf1b62b666a141df2797a73d49080ce310a8655cb200868efa9b0282c301104f9d334d8ebe6e1c5644ac17ea9e3cdbd390b0d75777d4d239cc03992335587baceb9b82b16e31c95aaf6133f567ae3f335813500db093f4916e716e782560b47873e0a3387a2d3fdfd5ae04a3dfd0c5b660c20699c022769dd55174783869c4de5f10ac5cf0b4abb2da0d7910ba96125eb2d9971d0bd8b975b3f899eb9f8c5c2ca03126f4b70e533620d402b752571bb227a70a75279c3bf3d6a4e2a1c850b045b85cfd7d1b6af8a422169f62a0a670b1983cfa6b80fba65dcad9e3d584387b058acedaf4b49f87ec6d849092c0f3f187e718c8e2cb039f7cd24ebb41690a2f48b06aea287e92c9ab8519067ca2243ffb983913d95674922106353fb96acfc5526c5a2ece26339caefef11e4ce1564445ccf07c837f5afde1c568ff4f8fc438bdcd5864d002c463ebb964f39c7276cb28f63bf242932a877c5988f6fc0e6bb35b1998381d8f47d670887275dd77b4d11501836646fbe8fb1ac973315be933da95438012cbb6540b8ff9d4d3af58051623ce54150408a123ce7d2b87178204ac9625aa426a857bbc9156ebbc0f7fca3139fc4a84ea9ec3e7cfe8e42364bbd0d483dbb2a14cc77e571c62c0e8720629524ccfb7d7629cadf9a8345a8128e5c516a9602f06c5ec9b56f4333d4e333f3fe160b56fa5fca994c4931083395b76d7dd6f143e2c8ba251daae0ac93023bf65faa62193f5be6d867cd1009164260755faa4cfdc96d91800527fd8310cd8bbf4470cdc0eaf277c3146e28b8c40bfd3c29f4c32c4dbe79a699ac1e243456c19aa139286b35f39d3763129dd6e8ca921506fe6c09644412ddf892dd51963da82fb0525aa2ee0edd02d457c1a9bb1c03bc7c6d6a671fa835cb2ba25e5e9c6fb076d6165fed905d02f5a74d5565f1e3f6a75f9af8e899dd127cb25c05e33582b6fa10d48fbd4f6c14e77613ae0205e9dd1ff4340c54955142f0da7ea44dc83d0c34d3fe747eeb0918454db7296115f4074e58935eea8d7d948d8be45d6d9eb9917d3e54652aadc682f80b289db876637251445dfeab80079aa65f2202665288b022cd3309b080965edf6c78e3db5e697ad6c4c262e77b9f696b4f5a7223d1607566e101a657d1bec48e11b3c0807e044cdf0de971867fc5790de39b5aaf8770ef6df7a7b918bfb9a2a36c775c911faf92a5973f1c36353f5a4f7456b4b7caf79bb8c709a94aeeee33416a8af80f69fd2c7b91e3fe184ad77de78c10849c1136ed3e03c25d09cf07611b1f5faa235bdd52c7590a7c39ff417ec2f8fce43ae44211aec1945338acb1bbb4263ead6a02e7bf03739e2857fb75758d96ab311853bd833c45a026c3daa72e26f9e32498010c2dd45899c81a3e0d6db0445b182095a4367c68341abafd699d786a25ace064cbad0dd65aefb8e95ecd3cf251a892b1f2d04dbb923b83b8f98e1794711434afbb025829d02fef181d69e0f260a8f571c66064e90643a44f6e5bc52a82b3a18cce9efc22a743d7e4166901d1eb8e5d29e319257bfdd46edd0556f6852515cc896a56a332207b6fcd4d99fecc687285b92eba1cd187a0980ec7b7f96c41891f09aacfc0c387e1e69e0eafdd0c4eb1d9703a6b5696c7fc36cc9df8a087c3dca02dc29ffe39511069c20956b049c6171e449373f45c82967b5822d2166cc1753a0e1af646a6d32cb8c86662b7715464a4ddf76679b6133edbd7f55c96b2cb94b05023f43718a27f7f87f3832633a30a0595b30e251b334a7e00c35ea1a3748d57842a5bd38e1dd82657ae56f61c289495b25e1f510029122ce5e0bd1d41c15c228513904ec06f8ebfed33217711a2abea7306fca3a29769360b3e18f7d25f54102efffd51fb0fa6f9f25f84ccee1fb60dd9f876d7ced076171161b6fd93fc284ce47fae5e59a8bcd5fc2d9fbae594ea861bd37ca17b12910fbcfd24a2e004dc8f993d44fb40b459f0362ae780a1d7b46a7ddce184eaa883dd2b8b2d143f43d78a25ec3a040fa23e893eea8aa024c7a2a3569127d88ba96d5744d16c51d6870e85da542cf0db90eef60d5bfdd09535b137edaa736c044fc4a8502c7d3d698a9247c1aa9ec4b84836e81130e8e2060f3583da146d22038d89ff433d32b6df3e4291a2bc3e7fe5c86e26a37c9334e86f303a58dc8913e7f7f34af1115f97a844abb80b2c5e9ad90c69fa2401d31b014deb9b8aee0b24089314cad59af321206a35f82bbf96e26b0e274bfa889d21e9166b0405fd4eaf0a3e1126243d8c53d0856d157124a31e33685bd8c8443653b36c57f50c40eb709c704df87acb2175323f02261135fa989b43582381a0cca355b180a57d9ee342527ef9741ce9dc468d28690a4c7082c351407c23b088c3eb28932fe5512138d455f0340d244f81a920b2ebb2991acc767399db262c2b9faf359f13ffd7b2076c42dc93b31f5e2af89c6bd0c6bba82ba22bd6cf78cfcf5c81d50250db15c403e1e901744d07443da619368864033a525e83a915ecd17972df1a1b49b000ff31d05f6942cabcf2ce7f6049838d5b01d2e9d6c25c7dc96cbeed47f221b29448b17e52ac42a932085e11178609e9bfd1437db74a3be01e478f50af85cc92381227d5421a165c7d3847ed070ed8cf607e0284068b1d6a6ac7c5143f823834c8e104425915a1e5497502698cfa6853629ee8081ef1e9d835349de610ce5fc7a1b21faa2fee1692615742bae31e9d317e3c51b17762a9a52ac75318d2c1b4ecc7605a14ca34b1882f94190babc9eb8beb4712f76801fd47bd92a0bf4bc63a598b30c8b311237e5123780dc45c6cfd4bf861b85afd22ceeae4a158a82b454edf28b06996a20bf8b30f897050fb72918a84b4bee47dca6ff40cf2c0656954ecf70335202a203867ef5b3a8b4da65e3fd791c530fdd8bd52e3d05f963d4c08ff491b3d23966bff31d2286103f88cbeb51bcf5aee7762523b4102a0a1f8bd54a11dc0bb5c6b1004f64ea5419b052ef85f15db5067db547b2eac07eccb42017c0d88cee4ef3ad3cc5b42f42fbd034a52ac0a7637a55e7e7b512ef209049d14d98e0960b2a38291d1510ae630ac3370e58dfc23769a204c95b36e024c04f54a3f1ddc185c379e3cd875d2d2247ec3ca3b94008c3731d10f7e4718d8253b6df0df6607ab0a009d124422efb48bcd0a5b58fc8cc8c4c56c65a58cfdfba36dd3877b97ce6a3bfd844f79ef9102bcf7c96d4c4ad1e8d7b1b887106aaa53290e71093a1a5bddee4ebc685c6dad0f75735eaa114dad94523c37bf9cc0bcd38b9d756c8f9de5cf86b0aef53befa9c6696782153ad53023d4c17973ed058c13cd8f8db9c1c295e73ba5ab98de87c3b69b6fa6c0bf26d91df5665aea5074ea27f27d7d1c01ad62a370efe4badb5c3be5d5dbb9266ec847023a92e44f96beb6ee8b6e31f1335a01054fa70086c581041c144f1e3d1ddd72ba75dfbd39625201d2b63840a629214bd1750c8ed46379548a8149c72a819d68f2892a004869d220ca3a71886b8e3c2ab71f1523fed59ffb56f1ddd1713db77216612ad7de1c238aa41b9947e6ba3ed079add7873260d25d413a4bb7ab7cf00ea9e12168f070ae6fa174ef11f1171a3be5b806794f9b79df4ab8d2dad44c1e34a1a284402072b04562c7b7e69ddfa270ec75d66bb6a205fdb2a04a6883b2ccc2d71cc0e13fbb98f4d21bf8ffa133891e4f02fac17b9f8353bd2be8b7f1be0434a8d29d06c549a26d9df5a6375cfd630e1c4eac73a0215e537a228cb020d1a3b4c7abea162b65c40693e8ee52a01dad6594c8b0abc484f756a68541266627f8929e2b6de2e3e59c2c193c6a9c2c3bb338aab8a7c9e7d2a5574ef405a90606a8d7aee971a5ff52f64e4e7eecbe673864713a23ff14b46c813a85de01d3cf14d67cf9557ab853cc20d1a829389329dcf0c97828c45a8748f4686f0f17754429a93a32d4685db4ebec475b367a9e251c22fc561d13e12909d27586ba7aa0adf7b983f682da5a35e938af91efc51578cdfcfebc598352b1c63e25039042d2edc82f8d5963573b87e590cb927d44985c8686df8fd234b357a01bf4756e859492203ef8eebdc130c02be9ad920504a7fb2691e2b5b607e39986f343bc3992f16757f2d4efd187e6ae48dec7f6b0687f031079ed8ef9d392014758828fb5bb46bbeb0863ddb915ae3d0499cbfaf88e62e23e04fcef864db5d961bff24b1e100349bf9be886fda78878a252dd07ae8dd757379044152696de5f6d0cb451389bf88fb598805cd702f0227e693ad1a2ae24213b8f3ea7d55da58940860be1cb675723912e8a7060aa70d980318ee97246d266cddf1cbd2f035bd8a22f23358212d6abad7c9d2d516bc937410b3e3232d53347f7160a25383effddaccc60ce10e9b54b652031e1798b20180e891918c950fefb0aed3cd31158133031aa595678a8b4a47c4af576ca6cfb65dc116e0b8b5e3a65286c65f875c90078ba0f59ab383f338a91594e20c58de3c1f3c6646333af52973d8327eeadff043da2905c40ec9ae0f1d7e62548eccf9712c539d24845dc8efea7b84b6c7442f5644ba55dcb8d5e3c56217d69f77b60fc60c80c816ba6660d207e44715d1a5e3e789a49199d6893170b7806cccccd401f1fd08e540702c800d55be431e066a4d3ea4a9defef61d12940759c67b57423ec0968ec139e0c3100603fba2b1d942ec1a8ffaaec07292d85a67360b260a3ed48dc895fe0a3e5e9ac05ef4ea46131ea8b34e624599b22c54f59676e98b8ec8d12cc336e454cc1c8906b0adec26b2b7b6be2cbdda5cf03357ed8386631c8b32764429874a772ecd32daf324aba7ba96be694855eb12ca1ed227ec239cba5b99cf4fecb8a2839a9a35da6af6f0885efbc3b5258847411b41e3c1dc36b37ec23f08d3e6423b1b361b3b6426349a27e49128f21ffc77fa15b486f620cf219187ba097df13ee547aee5fdb18b234b599b3bc4f214b0757ace8573f5497c63df928ac9c3d24a9d367a13e9cec05a71afe5a7a459a8a0e1d4d6063e3b3c87aaf86648295b1811ad7a3cb673922871b2882198c82fbfd24632070b06329f9aba9dfb01df07b51375e8273c3340dbbb4d785571ec17add7916c05a15144cc0545bd38b151f8b7c20d64943d9096d1d312b7a0e54b03765e79040d5c7052cdca1336985a6fb3a7c58d3a7c9bb4edbd877f0eb748d2634c5374d153600e60bd34f5ac0a0965fe9f4b8a6ef3c11857bcdda8f9cb0704a2d12442544e74da6204cd50888dbe7cdde9d734df5d9bc717b60f52108b9a1fdf86b75ba57039fc6f103d1c071e796d5b9d97d366bfcafa4f5bfb4073bcc338f26d8af5e67edbe7134949eb9ff790229c5e7dc6f977ff1871a465db930caa4979fd8f501617cadf600a44e9bed809f3b5deacf3a340e798bd0e419d7213040fe829282910fb0b8b960072b2b966c5525ce83a3557deb854a94ac590c890818dca0f39d4b73ad762d53794e64b3678066446e5cfe5089b35f0b52c6c2dd554b5a3bef01cb687f484f9a4b77f9c586947772cf8d8924a605b719f12e7b87aa02744fe7d75ec1d9caf00f9e8ad2e7ed60e1875876af6984ec390d38791aed869267eea75c6297988c00d2783ba5e3ca7c739d77f2dfe48bc5030a95bfc1292171671c8243d4f8f1b4133b9e5bfc28cd0d9724837a15aead5a1e758ba88ed2453eec61e7a17ce37b09463800aea5022b6bd98890400b320c093cd273e5d63a1d5e9f97f909ddb1f5e17324bca9f608d454ab623fae61b117bb9ba877988a6e641ecd1a0156e5e228347d031c612df43617fd5b6b27b819a4adc424809213e8dcedd41cebddb7aecd0bf584df825d8146f81f05eb88b304a0970cc1dc6addb7b7c0a973fd913fbd6296b81680e5fa308249e0fa8b791f022328465fb9438fa928a4f8512a218f5c9181e96ebdf44aa300ccea2e5c95370369020d21bf700e9cfe19cebca1840e28110a8b80626caa3136846210149d7a94926930fe5dc4972041ad570e8345050ff67d18a84f9c8e7f78b1fcdb2856c2f53049ae4df1bf7cbaf554734c7865f534f3da52fa32ed2acbe4417198c1cbd8d371622b63448d4a27abd16ce68d93a512ee668e535a303f73b71095fd1db5a95caf4c6f497a9f578f9f232b72a250cb0ff4f13a91f7a3e48507fdcf18df93bf5b4fd4a601081c2a214f7d4c8dac7c0be7329b390a7598772e032649e0b2ec9fee9704107a4053e50733f4c3b4bec8d971ca94ec1b9a85ecdd0496cdb0edf2766dee5cbd4eb254b3742a387f967ade49c0349a8264093270a5467e08b8a9567c8caeda81189f8ca858bb79ae47d64bddd118d9111de10bc44f9adc28b7d8884a538880614b83caa1963cbf888e3306fb9618e41b03aa225199cca3743033d9aaa07373d6e3a0d8325508092e4ad004bf90bc8dd361fa76e14d4b7164ef61a769e44746f40ba26e7b6e29dd408a3f3e6e9112d326bd0ad97a95c0d725223484a31bfc4084102a653d6e44fa11cfff960963a3e97093c304369c9b0074743d6fa732626c3afaa90c84733b3c0413b4cc491d6c135c541324aa06331d547960bd292e45a73a548619da7a25b8ad0fa6a195e501dba6fb170aca942572242ee728f53b022d43c9a420c60018645efad83647603f3ef6f7f79f5b100b5ae3b42e9a029100d3e816770e57dd0b717aa42a83d5259a96bbd3effb4aa997dcb01e5add1d8cbb79b158dac233784ba45d4486209aed2502856504b1cdb1cacf601102750b057e7d40292cef588c5d1dc6dad0c1355f0228d48544577edd781585fb39b315cb8bc93180a3496050626968a9cf74d9dea14e03e71da7b31c075cd2f8b0d2f30c279677f6fed6c9c5a951d538070b38e9ce1436eb65a755ba72db66fd3e9e53f8216828c998265b19f0fbaf7e03adcea28135ffafbdc9ce59ee900dca6d9561f71a0adf96c01b747540666817d52c3aa40b86ac17a1a508254a88365671de298d868ede595a5920cbd5d41e2f52731cfb55eaa10346ed0b5a3b14147b0fb89af0825d186d64d75d2005cd0dd57ba7d9c10c0c462268ca9cdbe0520a542d5f477851598fd9423e6ad9692740609e46dd26ab4b9046e97a5729e1815592e91a1fe8c646c3c716817e637f39eb1f56a87519b07a0fb3990b3187e39d2cd49123a4fac5e99771f8f090da99ea4c73b492cbac96933c031e9025ed48d7d92f304c6152506bb22ad86d4f4641cfbea28ee7995081e8accc7346bc3d9f193068427b9692ac71d60b5e773b69018daccd11b2206498a8ac32ff671fe96fea9531c34984f231bc8cbd997ce0e6992581d81df883e72820b9b9e4082bd419330b5da4fd6d6ef777394f47b083505e13e9951ad1ef216c4064dd3bdc5e76b64eaaa210d9baec3ada866a98845988f12d2cfd953b0213eb96454923039977f3ba220db5032150361b7a74028dbcb0fc890fd5d11524dbe724e3ea2103982dc98bdba87975f7d8b8241d144c7623ebb265ea0ea8162fc9a582e07bcbd8a711de9cb4f519ee6e26da3e6358ed3d1f68ad5350908826f7dc5cec03c3e3b032ab7a330216708597cf9beefc36c5cd3a846982991b7c4582097b08ca365d81c4d8355be5fb4582b3efa23c25bf19890442f925082c63d7c763d287e438c170fb2de0e6eb289a87b03644915ba27e4bd9ed1a19c5968ccd53e35949b08239beb63be3f4d44abbcc5bc424e5a4096f394d92139beaa129e6a4070faa3304b0af19b7b7720b99b0f07382aa2f608e3e3ba0b40edc5470f51e32a9bb64a71114bc498929bc67d4bc9db5c6ca569314bc177a00ce432ebc67024f173d457f5f446c90337c180902cb431696bca52664778fe790dc234449bafda4d8857524cf6f0083c2b90ef7441c875fe5b74edb594469b1b8a76d0e1d6a880fcdde859f43c6fcf838437be0a976a8f37cb45ed3a9ebce3748b21260991af248eb552147359577064d641b7182b0c0d92d118e80bb7bc1e5b96317d55b6ba1745ff8962219118daea218285b96cf363d533fa7ab5765f0509b2aba48a51e1dba345c3bb947d8f1013004e3d5a2b7ef7f3e63fef92501921a04a39ccfe386be82cde09a37c2c47f2a7d5ca8c4276f3c87bec142615d9dc4f293e69334015a87defdc2a04d9f0eaad9135f7359c83119024abfc077a5363613a1db6453e708805eda9352327f1809bc0e0a64d229717b5d17f01d3a7e51d0df24a30c3cf5f58f4df93a2de462ea39babdcaf312ae7838b5ec199aa6a3984194061b69333e0586a6b80c0adfc7a729b3e8d485e52e9af69d02b2da6353553493304828bfa2a910ffeba66c9079b1252fbe4532857381de26a3eda7a02b4d51c407541bf80d779252e2e933afa584b8a1824abf4050832044eb07905dbc31fcf0a61fc1d1e77c8fb5078e0ae3c81a2a95fe9181cb6d518979308ced0b08f3096a4f719f6d809e3d5b6890807e6e9f99b776793b2caf9065fde12d3b32a81c8279c532701265a2934b7e461d62924fddf14116b9f67462ab33195abdf3f0a78a4cac1fc1a0755a3606463d92125173aeede7085e11970d771318c29c835a91595dfdc8883dd1dbd58ade9f5d9eb8180f088f2ce2edd515b9bd5e4017c2b3d19f83c9bffccbfe76b45c8b0cf1dd69be7853f0c3cc672a68d0393427eb3efa34eddeba67609b0c011308ef06de07193d21ac0d3007a1332b1424d6c22d3a3aeb14b28bb0a0b78b65054668a0ea4f330e0da8a13142b74b24235256481f64c47272198a66a37f609661303fdbd2b1d42a3e1f08ddb45110e31f3badd18420d59b0948acc05c7b8ca2de18a52899a3fcd9a3e4d0b9e76e3ec92e81cc0e34d17c39c43b7b16787256472a5f09f58fceadcc706d8e875a0d75b85ce61155bf0dbe2dbdf744b3ab37194cb3af832667c1c8dded1584dbc69699d87286f27788d6da810cd441c4b29b8e66818e7ae0a893229608ca8216b18cb9f1690a87e9641e08ef004362ff6ed2c3d932961da604e1e56a98b29c5f142074ac00a0e36946a02ac2779adea4c51fdb7d5bf428ab91816a7e5af5ade24ca623375d6af8ef940348b533a9163c4dd7081ccda7ffa0660c9ddfb048870f79ccc02bc1c61cc513ab76421b4b67848175da1e2783ac9e2af166f5e64195219b0231f2c86a213eb2a446e22f2215ccb448cf7f4eb365f2a9079adde334ace0399343fbbaa55c55a78b7727268914128acec9bed585f62a88685633b60f572a8433318c6759e31d5f26e200e38d210d8e398b1f47bc5301f1c4155c99e90dbbcc52fecad9dbeb3545e6a4a2577bb979f67aabb6130028ecbbdb300cb772faae7d95ee5812ac6a3f4a3c4ebc5e8d9773198e26685503aed3b61e36fd8a4c38e814f0981a65f79349363f313868b716f550a620466230057adff32039e928844942e3408240723e4694b5a00ee8c41a79c27ce08587c7f8801ea06ddfaa80f8d679c077f4dbe48c52fe23a911f6a804bad787e59976fdd46be166de9d944e49017ecf8d78f74d97a0d4766b1758990cb24c89b534b794318ea6528959e22fdd4a0b360bb9610e52275c1c2e9eee25c92a7fce341cb61a77c660c4906a1006a22ca3736060f77357ddd658d7c901896d92e47ce1f19ca5ae76686c4a42407448291af414f59b77933105e597628b9aec7e79d18501a9e8d3005ae8ff7f7611861ea97167538c2309ba277675b15e88679c2c2db6e21e79cec54bd61dce2e8f7f4d069fa80e1ff1b6afa4d74a952daa8155468380822196250509ac310e82cdd4e61942f364641c262ef1e881a080a1acac84e1d78e209849c46a19b46f8a8f5598d19fe00e6c0a702116504ad581c505be6736b4663d06d30544ce0f8bbdd66eaa3a2b0f58a534241a1327404ff577e8c35f9f401b993e9b26627cdda1f5982fbadd701c786afe93d1048cefd1f600384e7610fd553324323d2470640a946e5394fa383b6bf21b90444e1274a5a30f46819ca38c293a7e081013c9270439fc9184ccae129a4fb660cf0042b0ac447e85660ba1b99196a8344c8c3fec80ceb6f043096eec9100d4b78dd44b3a20a4e4311e160df54863bf405a73a1e1a1a8f3f4d0ccaf214dd5b9e448853e4804906737e06a813e46a1d39fbf13f62f525f802a5419993bbd012fd05ba8ef3354b0bd4abfd08888a8151340e35d9d48d16763847ef62ed00c2075e929615949c80ac2423f028ad2d53789c7a525fc7469c85d26c88f7017030f4add6c67dc208912c66845b776ac1043035bf72aa6ba928f288878cc2b54b7665280bf19eb5f479b73051d4ed5f932a27730266d94d116acd7700046a1f7b5df8f47c4aa07cf63874d1d64f5f29168cb5974b20bc9a6d97f147c84279d2aecc98e89f4c252549306ab83b5df00b9ee3b3cb2eeb9ae847ce65ef5ae43e74d1f95ebc269a974df8e877bf47c4ee46b84abe96056ff69cdf616800464b79c8cfb230daae733769643f3e32b8d9dd1c35ac0eb0cf9dd5df102010fe840959c32e782259afc4f55844039b303d11e1c42151c8026d8fc53d43ef0ebe16d9de0b3a3f2915534013dedf6d6a2df1cf7a87c534a58286620ffb86ffb313103d807cad3108cc51fb649db6785524e43024c1c4b5fe3440111cb52e6513d3bc13e8a44afbb392b347bb834a25c656201701f6d7a295f4f68c7fb007ab8f8a3ca347a393f4e83b67f9bc1ed5a20fa2aa24484f32cbd8d43bec8c1753c6af32b033b858d8346239fea6dc1e5d32d72859ee0d1825249bb9f7ea6e93fd54f9963e06b8f486a88ceee0e3caab9edfe5d2abc8d4d54f034577fbe39798b90f17d89af798ca03eaab3b2ee91a14f5f0597269cf8e5e701e5fb488bcce6f9b5afca540f904cb8645edc99e2fdbc76d426caa3fa039b243561dab913b2f36c44c8f9e8464cebf70876ce70679ef946054db071615ff151a4906ea10d4b70136a0ae687e59c143df66b44c6e00f8a470587307a9e3adffa35b849da126e1c63c8834abca61aedfb356c17e37763e75ae740704635dfcf755988224705d537a4407229c15285b3629981da91962856a5ad98fdad34f33ccb8af3c142d3448f7c954d95c3d738059e92ced5f24d2c8f54389074bfb1017fcde92c611f462baf3d045f550cee6ef072c7613631655e6099910dcc7fdfbb7759cacce247a24939472c062c8f84d07571d7a8d01bf348531460b2f466ad1e4b67cca65f3ae5d20112f2b290175567b877d6fbfc6a7445f0b7190645c5a8bef19ec2a52b65aa7597e12345532b452b7e6e2174ed972e0e6bd50efabc9a05a7fd9e196c8a3141de963a6a2484397be41be93f73bc9e748f3ee769e27a92f393bf9b547ab902e74e51e7c561cb088948ae62cfbe8b6e55fc8250306c0d3485af23ae2e63d75a67562981123f4e00d86d9e8cb6399f14384e6f3548daae88d4780a80bdb894ca5443e17c390a08c11f5f86e6bd102c6b5e097140143d89866a731d2c112515219bcac3c48adebc6768ee415c41079eba185a8bfcde0ede1f30a0eedd2d09ea2437e366d9ce45d2abaf2773c35e49925022070e4a96ba87ea16ce526ac26cfb9a64e04e021fb15dbf7e7dd491d7b0afec9e5e756546771183ef20cd9131ad15983a2783ac5de1184148ba05818c5a8b7e80e67b99d547e327761326aa1dcbbe0b9b2ea3d1e10bf75e3d0763106d4b6f78a0dc60f4b4f022328e3a190c699a5c4451416ee6d9d1cae7a796a096701e492096b7912e4c04a09ded8ec6286a10508a2ed1537d265408994eb49ea1836e387a8ae4bf62dd27b7efe9e699facbce6271e69cf52197fbb654248417b4410e0cafa590f47fdf547e71c338fc0730602f0e1943c25b7f64ec9601f3dbbd229abdd3f9e309ddc920ab99c019b96346413da6c7eab1c61875cce4012b001cf07a9402606e70a0c9ea641f8abf747b24010654849651b8bdb43d176ff1fa60662cbfbc140278005951069285ac180589130e47ec8d66d87bf4d4ffe3ca8413277ed3e527213f0463eb489c630f5851220fec3456dfc6584f2b10c1e52612095ea69d97475ca651f7786d993a431413ec113832f228812c055b81d68f5b2b88489ca4eb8199985a123fc3480583761dfbb0b4394ec51b25be0b624018cb0bc4fb4ac79f0243c2f999b91f5c0ed5f4d353cc3c070d6e89ba8cd82521f0f0a634048a2eb436e60d4d480804d832cc2c0ac418aa535a02bab803371eb9ad0c0648a125fff10bdc6aaa4233c4abed55656d9f76c39bb798a373cf55413d135e0f07d4f60f656be0f94f4f7157fa64d1205c526193ef977c97fe3c2e795e710e5a385ead5f5a93d22e32ce6fe0a7b5e196b0c47cb6dec78d5bb180792a7f6a1873731ad27886d7262621aaaba51ba84133cc07f07f233213cabee0fe123b93d0df8542c078863d58b5f8e6937a0f7e4e39309d2662e2c560fdc984a948e5537cebe0187a3d7b52e01e44400eba7daac28f01df9d183f24e1fbe2684b2e0627536226337789ac51c6dbec7f1671841ef556e23f30cf54767a214d5a8a1730356d2fa643d0de5fb597387876cecbf30976036b455a0587a2a40fd7824f85cf60c406890767f1eaef16e4a93651616db947985fb5e959a8c231c5e0091e7f87a1f8b880923e2aec414a943432a3c32a7a501f276b0ce47580acc2a624eb7cd289392769681cb6ec80fa0aebb1bba26b8ec355cfd031b7529ffa92d48864531d8f4a63803637861e50fd9097823e0cad719c25d299f7dcf8d59e0b550958e3e0e496787ae55daa36f7f62b02e8310ce2b66e423d48a9ba305784a01ebcfa0b429d8713959d061277274871604d76854eb2289b347f3a26d4886559033b076f08c5104daf7fa83192bbfda8ee6bbde2d96f10c07570c7f3dcf86bb654a5cc64835e8d667d6e99688d66c97ab67bbf835c83f357635b5b77638e7a3a025de5a66dc4a481f748628f1fbe9ac95292548f638ced56fb55c77b8a36741c6265d6654938e8228a379fc14f841bada2c2507916ca345c33bc10bf076b106eeef5e60722bbbb3216fd865077a6780ae47f7c52889a952d6815841c98c5c1f03120eee4fe7c53c81d53193a62aa831323457e14192959db59ce929c425913fdafadbfb9e3ecf69ca1b4364fb869bd17dabc31bba052fdbeab30e8151121f43fcf986716bdfb66a6f42278c605f1146c72c3296a62e37a6740e94cc95d1e06a8351f166c340c15fb0456a13eb64f06958d6ca6b1f5e73483bdfe136010513482c1741ee4c08e95454c4ff0cd2a275728d2cb6c95b6caeaa9115f50ac3722f78d8e998c398f508736537d6f8562a8c0a341a511e94f182d440be0057d8217da978834e961c8d22ced8883c5d6235a1badd269cf4e88d3541444f8a82e112610088db675c9b0b587f88809350d5ee061f4b7b37b0d6f8bfa1fadb14e2d417d905789731d25a9349daea8b9582a141004dcfd4282b4a92081a23ab004d93cbb14236a3e52d7cba15f6f5fc6d2106d8cefca2cd616c446d9c27e568a3edf470d741dcb8c1981987a593aa17dd80eb7219d02addf267e010fa1148fb83f67b7e29815288554b82cf23af2c4d5a03e39fd29a9ba1419b308a6d433eae9b64256d6687027b4cf00e12dfe2a95537458bbac1ab35c7100d496bbb511246e85cdca047a5a655317af996ed16b87bb395f8f91780f9330adcf076a177d8352de110067ce3ec003755a2aefd4cd1a1a7832026a01cc9359f743863b26395b96dd69c937426bf8336141f74781c69b8b09f106eebe1f04300312da402ee0d84c9e702e638bddc3ac22c2afde660716ac4d7c7dc48c79f2301ac3c68404d8cc4cce80cbd23ae89b8e3d2f67d2ff82636d6dcb14ebd7367cb4a521e080149b5e4c9b3408c84ec069c87940f6865a29282b8366712e4fc1dbc1ad20b9fa20d61c8285b79bc3fd638ffc68365a277502e0a72bd1cc64301d95e58c338df5a6fbca05333e08998a5ccf21dcb23f41477368ee837d0d0ba9cea7b1023ac37ee0416a9eb3ec361becb1f8c14e23a95695fe545903589cf9d2ab420e0c42f73706494ed8d3d369fe907f4305fde8f6776e555c728de1c8b4d6736ea7c468ee8f5f2297cd85209f45bac54b5c6741a06f1f038706100c6a075f52fed15c822fa19c982239233bc22cc2d0b9248bae579c9cc945774418d5f18d6ef54302aabe98d1685bd9499ae029d18a84d742564ce9ec3da4eefa62b1de4e6e4e5043de53443af0019fe9ba988c585a2866356a7dafd92d3c82e0a9f3375385c8333175d1f77b6f0c9cba54d08e31d28aebddfab23e029e99f00cb596cb26dbfa3d8796759fbe345361ffce5e14fb45f607320bab77e98038ae3a4d1222cfd7b940fb9ab41ce80274e9400274e97bc17b5ef4046262ea55498600973c692ab4aace81df230b3dac4c03aad0518d1386a8d44e79c2dc6105b3e36af6214d913f20d0efc986ac937c448fcca3ec8e0ce284e247d5e349af7609f99c67dc1436d5a7f3d8b734e842cbf4ca13380b3902da93c838a0f93f05c9168edb59b643d04ed2726536561ff9b33ab814b300f3d45789d661ae7847158695128cd954fb2e1ac9fa404b7dafc5428f65651593f49c330ab35280d2a3dbc729c88aa3ade20f2cb3b485221cdb5f491f8d68c668d8350511204fc396de87d4d2d5ca74a735872e0597024e1815fa239423bfab12cce6333218d036b6b0032e52018c34ce233d27e7fad47990a92195027f604302b75a6f6d0321365962657b6f3b318d845d6e66d77521510c4929296e52e970f93ea446b982d4b0d335f7fa828d3e90d9e695b668d0774dfe5e9e7da39e0ded152cd49e93a7839dc7290fb8804554b8852170f26a2f99ed09908db276c5ee8024d29ef5f3656b4d1f177df894ebebdce48e4fde1ce7717bc01a1fe32d4fd3067aae03aa686facba0184cdce036332db4ae71e63cfe51bd5678514f71138b0af3dbaa20c5b8bca3e02f91b692e0fbb87c491964c3df331a6fa116af3e3b4589bdfa6455b503d331fafd0a0b22892bc45c66357b549bf42cac5f84309eb5ddeaa99bfae31e8f6941890fcecaa8f16ba942d9d82daac90ded8e40bb60adf7107a727fbfc20de685ec96d4f8f5be3b1ab8bdfa9e67941e62ce8349d1f9c8e145bc63ae0007413e028de6a1ec417d25e20c0670aa94d60fa878e5b872db0bfebd298cc9899de8c22c56e83f56783533e85c7a02a7599d5a0b358c3305f62c7d8708caa8baab3d512c4169f4ccda8f29e34981f46c03396624b2064496f4f992b7b37c27ceeaff53c49803ac60d894c9a60c56b9e638ff1d707112e7eaf789db4f42d726ae764eebadc535327a2b2232a19f8277c7037fec9515f9adef8dc95dd29e1938deb8f31c6b7254f90d16dec1e6c18fe0a5e9ccd949bce3684612e591c7792621866b204ed46fd89618d9425a895201092d81c80cbce6e7777bbc8ba13f780b8d198fa1eb5b0c8d868c5639f46a25f418870fe73918726a903c27d4be4f0f168a7805f09d541d66f89ac8b9db220f5ba955c4e6ec04b070a095c5c41d842a2072e0f373f8ecdbf3e602fcc960f98bba06c5e03f00000226222932581550857e14f8e5b6a24a297a13a7646288e8677b66847f6820bc71ac6b4f0195fa536d6c86908b603985a3f6b04caedd83e02c0a4c2f6dd519e3c07ecff68a57c00d158f78e172d4cf66209b7415ab36605ab4507fea5ad0a2cb897758e17313b5e43008e510142d4fd7cc68d43e347658fdaddea146cf021025010eda02870f7f8d55567906997022dacbd8dd5c40e93ae1601bad738a6213317a337e9fcf0b6c2fdbe8b87e979a03a009f7385e5aaae73aff00af416eadf83a2f19073ea6cba55c64fc9953c71331c2aae510945e52e27e374631994a807e6575bff0dc06cc71ef587c13159b0d745156e6f1e594310baa9c1665a78bf849df28c608a61ef9ede5b577bead1a0a049994812ae9c4a4d2d65ce0fba49343e445b68b8369dec90524f396f45e8ec8ea8cab984a9c32531d3f29057230bb3c64ed9640f7e7e713f8974032ae9df1e46cd241a220b42a0db87797f594007e1458bb1d5f304ca1bc191ba8f0cf775026c1d14fa7133cfd493d5d588c6f853f39a35b3c9acf2659672f0abb5627700deca754ff0b4063c883c3178a92846ece355c01d54c9834cdbf68a6993eeb6ab53c406fa814876ebc13a1eac261c4c277eb13d587856fde6e88b66cbf55f09f1e653ed4c3bde76139170856be0cba2f42e7ccbac42651bd1139b169d9b043e6f17e7f1ca5387309fb91e07fd2392cad06c34ffc697b1d5e6e3d4374c4f7cd69629bb8d3f7986f50ea39a49fd62f966fa77c43feb32aa1d21e97c3438110e90c3c03a5d2f20c1d4980cbb86ec9a02506f8a5c9207002c4dfe6723a09e0e07717868c9100ba361040f9266833de4046c6db7bd104aefc0e61a5e013a975508ed13cd4cc73aa78baccd65877089ab7f8e0fab63d82d175e76a88a22353b9326a684d73c6261b7788ef6a8606379d42a28834c02224317dfd0f2411a2780aa4027533dfbcd33bea3b449e50f0b3acefbd0307237789b7c8b7a0fba93382151a2aa8ac290156e2d2bf8e6004425138134f98a6942a510ad7fce116b46eeafc5b9a15e5ec62598aac216b1640b99ffe60f9a5a4925d161d874dcf2d343b95ef30dbe5dcc82ac8a7293cb9755f4313e20315d02aabf6d75a7dc27aa31d6d44fd1329ddadf2c64cef751349982691f9717bab5e9d18a87aa6c8dd9277465242980921c24b9ee2536f484a38a5f3dc6b808a3245b99374e2bc91979bea6aac6c0193c97367d7c6c488303da6c3e8421800a73a7afe5e81dc9d2d48710dcaa88bdce9a75b16c5da493733e3adafb49fb2695e2c93d1d9177b56f26563b80e5ab4fb1fc099af9a0ad852943b40a89636ea2ddb9f38a5e95789010cd181eb8fcc6187cfed28e3b922992f7512bb7552af0a67658a0eb92acaaee45ff3671870339735601f234841951b19dc76ed4535665a419e186d1597aa0231e873cea90fae980bfa06997dda9139bb440c87677e62c9efc2a889c4541be35065de47f93e8061a288df03e69e5e091c261c9a4e29b8bb8b43c8f15c94f0accd03da3a71c9a8ba7fdba7bf766c96608f7465c4442603a06105f91439167d38c066d868c001028e4f2e8121fceb354824dacd735a879600a6966cf9b30bccfd1b39a4833f1d0c6db2882e9777e1ac1f1dafd316783f658c10ea0b6c971f2f8997d6a733020727fe417aba30c306dc3c35854c1801fff9c7509488fa4f20d1ffa90e58501869fbe510b9e21793d45c0d3df032761aa364f81fecafeaf20375b566c0b54f7bda1917ec7dabd0317fe908d987a92be4a25e342ab70d7f386c81f1c0124a5f013548590c7eabbecdd29cd5dd76b4d1e2ebe88ed74cdbdd6551ba239f973cd48d99a2a8532178111907884c437ae983897bd8454fb22fe799ad7a805d18badce2db08816b188e1359f44929f247dadb2409774ce24b299eb71ca8422de29248b42ee7b11fd6637c7e6e3bde33f4d3b624473b99acb574fa1300732341b0e7a91b1b53917e86e243386573c77f41af62026e01ad7206d11da165a990b7ca0ba533d661b05dce50ef7a10e75ab99b56864631fb385bf1fe073d11bf9ea6250d1d8a3e31dd11e30f34cfc8859f4a6b437249e450b4ac82cc3ca55216101458e99580246182db91e5cbeec4cd388543030f30e35ad1e4b7cb32aa83ee678e23aaae8baf16118e57285c553d7aa5eaa243167f6f2cee400da6b35ed4d1ca414a4e19e196e7eaee57023e92e8d4c9c7af26445ae623b32a23710c04204dcd2006b37d46a7256b10ab86ba54c086e3c0bb252004c6e9a84e2f1671493021b05dd3f81f34f9797e4df66f9885e69367e9f0021c4e80b9a60993b17492bfb22f16c4abb950013c3e6bdfb40d050f99fbf4dad00bfa8f729bf73ca26821a2e98cbd6c75397c0e79f2a94cba63e930960f9fb39c3d1488a4f24161853d520b27394f39272854918d76642b4135e70523d045335eb7748f96b46375399500738ede00192fa1901ca5edb2e8e20213318bc911c83942ec67233fbcaed642fd6dfdcf41fc859f45ea627117abba705aa291711530f06b062f503a5c08855c23954cbbab29701990c3847c261896443d59eabd9cca9b9c25a5b091c0b8f89ff13ff912c78165995cd9d129fc84afa861f058048e6f236d44355a481cf750fa41cbee3069bb1b04541f1460b9881723c11bd551c9496bdd19c73aeaf3508c82e48bb39c21fe06b61d3b2b9f69b98d0622501b8449a83d17641cfbfa4bafd8476410a7bb04edce53be577514abfe13a606671e5a7143959db26991dde42fe53acc020973463610261034206764e40eed53a6652edb55e6f77819831a1d6c042c420951e1e252748c00e1784856ef92897a7e63c8673c2023ac442e8f462bec9b2b82c857f1c84237272512e1fd8936d4935df4c77ef0293c7807ded10a0e582f047f18d9cb073f8cadaf04cc388a1122b221b8b70bf4b9ff3ac58902051099a6599264c52c95a470864dc3a21408eb03e59d06f0e3516050a195f94449ade62128f38321276b176f214a2780c6bfbc24c450f657730c1814b5a4f4ac4324085ecfb81654ab02b3a493ba17ee8f2eca4924552188a7ca810521ad0427182143d6f1ad9b992a20b95f9d4add6004061c515defc02a9300c3a3ec16c23ac8c450ba9dea4e1a32a6842dc616b8594c02169800456aad10b6118f4fa92c125e4946ca0edd91c4487ab6dcd4d72b93f354a7f6377a920b5631dd994dc8e94ea4bdd10ff1de4cfc549e20e48c4982759d590aa8bc5b7f0cbe690a38a5cc18eb737772e1f8489e22ff053a96c2f223390fc0b4f25967a234f8e2d43305d939580c5a481865897e4e368c5d86d521be07adea587e319cb11ebd5292f44e632ee925bc47feb2bd2a94aecd5781f0b7e644a5c41b4ea9bfb2188b7cf53657ab982089cbd9887150c7adefaa0bd5b0e08ade2953b7b4f31222701d4903892468910ce7abd688f2738ca6453522007a44bbdfca25ab61e489df9796a7c80163cf0355cfbece2b6674281dee8fca4c7473dd67711c04847169182495984d5fe6d2bcde19ab9a9021b6fbf4bdd3ce57f38c319af2090be210c21ce4fc849db572b3bb2d62d768551c76f0986be9cc8845d0e6cd661389875388eba8859f3bc6025d6e7d0bf6a15d02e27beccf6722d985a8494c4ebeadce41aefd9791e9820a28d2b331299f7eabc108dda7dbaabeb70fc9e0d2048b76666c7f1d8074d04acf4602e02383b2f692e05952a4d04f33c5e54eb712f6e1f82bd32b59215c4843c0e1a73cf15af3a77553c7d0bfa38bc9d9d781d1e1861343d71477f2c6711c925110b682681b2f34887a6f42bff319e8aeb1773bcbab9a033cd80f5ea5e48d5e5a0de2581c59f5993e5b39a77848074cadb84e38cc20a3542f53d2f707eec71226de888ffa58b33060e5f883ae421b2e05292e383da81eb467f79d8ab2219a338d837693d236003c70c886df23d47c67811bc57738f19271db175485925e8b427eca8108e5a119ac8e129fb4fd1893f54a45ccbb9e42699d288c97d708db2bc8bc9e3c229170ec98d651e0f80a27ee247b3605887c09c9c774771f494064c01cc6a9c80254737ca35271f4be80dd3dc4b12fa4456df8648f6e28ae8483e20f39f768190738f3d342ad647c6ecbfc3de49dbb05cc145c7e4cd31b6fcd3609db4b4037b83e6cf0f6bd893cd641328bb88ad0c2c7f75ddeab54cf9d9db095e19bbfbef36b1869be2bbb7c56571ccf5ae1eb399d46d0caf44b2e74ae6b33d8c41e686da9275b859866ddc0a72953804561bbba7b9cf9632ee1cfe4c54b422d04f91545d6fa5c4c7ff4d08fedbad5c8bb61ffd1634bd98404344b7e1ac5d1b8e7d35dfafb72ab0c7cc648d9a8e92b9db237bdeacf86639e99e523a155dc3774c32cf277ea058ac034c952758e4637bf0665939ff7d4555f6e2cccef4d66c61c77ca0a0893c2c02872b907423c682e8e907a26ccb5ddbae3be1ae59a799f8b82b27e9dfbc126c3ea55edc2993c995519a80edba74308b910f4242ca51e537a3a6b507cc695e6ff03a6bf206aff3e20d5e2f7518d8651a4810805e371388685ccdbdd75d368428eb22ca0b87db2f296b58d8aa0db307811b8db056551ef21438d73ef65f935ead0a36e03e88f9943276485075945678562c54d45e9153e49323d3200073c01a45e0ce17669c3fcb8156f3f7488eb84c1354a8192314a8c1eb8eb7702e07a50b1799d9fcdfaed5b951375a8b6c1ce25eab8f92f25224e2464283351f0dfb131da052a66196183b6259c447f454fbb171c6e39c81bbd5b8916a1c8b3699c0a1eafb72985ebf12a104e5e4eeb79d82efaede4e53ae0a7ad81cfd4bc17834a6077fb3d4adff246dbe35dc956afb1002f7abd4b80ed74993224998388a48caaa48d0d10798000d3e280e2a2ac0014a079c1b1a2c4b9c97a73e6c8df915145d8b57d4490742f242dd6f2b9203bac15866340b13fadf60b023e302a83a42946d71b7ad70d347e79f2601e99928089268299a0b7f507c390d90ed438ef50a1b3eb496bccdaba18776f57c2178ec9ff88962987f3f23e4ee722e2f5d3be6e137f311e1771cfbcb624d37187275f8ab25720ceff5a4a0fffcb6acc38934737189140ec0ecd18a92d4cd8a3e8341ef222f80bbb660ceb6b7c4ee28d3497a6f78b1981cdae290efe9c62a23637a5bec52abd8fe5ed9d5e0b561b99608dc13a43b67039495d4dfde51467c8c305acbe04604b2cf30dcd1fa503848a45853e2a0f72239401d3c17264112412b252c792d4eb3acc97fac4972069179ee4dfba3735185785910a55347e27aacb0ee39c1b17630ec4c6406df248e3deb0a1f97e68366af4b25b0713318c0562b0f2f9a523489875ad37838098eaed9e1760c738173c71c9b9e2b8ba71bfbc28dd07966dd7141717cf60078a37970356bf9a91449d0720030fa464d25446200b9e8d517ec1aa03c8917f73ea1f54372b0262587d2d31c7dc2187519a1419b9626301ec0f61ae8da6f8e0190486764b5312beecf25a0e0b24c365d856c2ddc4bac5f35259803703470697dbb612a4354e8077443d674785c26ab7540a22859863ec821996b34155955a3cfff4696e3e5254c09d7cc4649c456178402399f6d3b6edbf4bb9868186207de1085cbb39c021921006d66c490afcefdc3504d7e3c285fc24dfba06a00a2b702080a3d00e9e80840f81a9dec690e016f500bbd8625266483a46407584ad67f8fbd8fb86c23c4b20d825026dc25291d131c42295a6064fe52053b5656955fc04154050085fff0e83607253b29cc037ebbdcd02262837bac3d7e069d0f30426598b104893e6e027250addfc9b7e705c6938316798d580358d9884058742c0475f524949151095b494c5723af696e63e5f4fa25559ecd128805869eaacfb9427af95cfd70058c38f8fe68411aafd5b7df92308d147c513bf126f4903edfca77d7a3759645303672809eec177f235e36ff4feb0959fc8518c833b370a0fe11798b881b45b475d42686b3a6195c73a2967bbc2443c3be021412ae131bae8a9b80e520c9fa80ce50d15e0744de45a996e4367a880353cfc5dfc2642371cb5b76f6691308896ca0d35af780cfbf95be65d04ca5321f28939b5f8451b85a51773308760aadd9780649fcda5b1da49e935c07d31aa2b23f6a3d41cfa585c95df538b4596370038f1948433f864d6b0d8a56621f5ce726d5662cd42eb06b51acb4cfce0c28ca7af66053bf753b902e87141b38d52173a02299200cae45c987214dd2845cf358d5dcf5cada9fc9420ee5e30844febcf47ffd1376b9efa1b062e753da99d4d590416b597b5840b7d4c2ea34846fa1e100989eed2e0d845d67e40f8b96e38394e20657e55b0a00fcf4221f471d60a4ee8f4e3a26139a84f8ab1fa37e4e8a5994d682fc5d87bcaaa3499463fb21495fb2ac98f6459ff516bab84ebcd6ac6ef230e7e990e68b1e04a6f01be9ea351f633144cc2c441543d9879e86babcf68986dc9e719a728ec86c7a7f916c2cca8b0c2dda3f4b366a8020722bf395460a609c83a3e9c89b832e4d7c4f87019c8145eb297045b43ee049db37b6e7a5065538d0a96e0eaad54933d5e8e75158f88927266a9e144a51ed83b714963fa70d76fc2a00c45ad9fe3a98750c8d08402e33f484bbc081bc9f68328751741aeb51eb61444a4ce993f3b79ea9fc29f6a3048f35c64888854f2bd50bee56125ad88279c05e664b682a409b1a67549117a19ca7c5ae6daad83db8c3a38f20e11fdcc774e8a61c8ea81e5b35e7e643dcd0cba83e278cb23cb4d92c41a78fa9d393ccb4f8c4a41289f0121b98770cdeda0bcb08348f7e02b6f628244ccac639b5c720c1992a294d25bbad00e0de0454531d3a0303352c94a2821250b41f64cff477f98d9b4352eb661e0dcf88702b45536d55b139c0b95285c24b104f4175ee3b5fd65cf0444d67825d1b3d558db09e632583b4c9a98a7d08819a3625ec0269d26e3186eea9e6b4b47c9e76a6be067c4a533e8b89d36653df3fb09d9434d6e0ba1f19180c85e22a72333cb871756dd6117d4b0cdcf36998db846300cfee414509695fa073da8c523478751dfc5375b8750cc8f4c0ef303143982ece9a90277c81bc7a9adf26d88ccef8590f2ca5ae7e0e6dc2f05dd24948d4d397f2351bef59a43fb460b20fee9fa35fb0fc6a4f2537de99bacf98556fb33b8fb705ebf25097c75bc1d3ee44c0deb2a80a87cfffd42b052adfb039f87b0ae7bd31e664651f3493377ec9bfd069c4b184841e8f5fd5835545263ea70ed2a42026c89691af53197d9f2d652d73c6ea35f57ca20af50f883c4677e0e3d27840af92ab1641940946ef93a28f58f878dece6561e95c6159752213d68e44fc9dd4b4e00f8de6534e3ec0ce9bc7155faefcecee59c01df88d488ce7d3d595c8fc3808f5a9d08a6f57587cb721c7d8f763654123240d8a951fac4ca47d21fdf650b5aaddf368e431a572daad100d82c69e066e3f738575a9044651c04c06ccade8739d483ee4602f0eb599df785df3e2e6336ae94241272678e06cd46b8b4b78c361892c85921762339e85c64ebeea8d319f1997c61c7225eb5ca80351296d51fe394199cbffb14e08af3c4069556467a28050de71e1638b67d65b3bd9fbe7fdc3c9cc3022d3cc85470a2294f183aedaebcce56b48a1b984157886430a1501bc8016fb882ecfc985c2b33fcb42d17e826c47d8c1283a7372199bd3ecdff96f959b465c5868922fc665c3b5e2c2d75d6e9ee4eb735883674eed154fb1fd0dc5cc1f4005c4518b5766397ed213d9fd7c2e8eb6fa7690eb8ec01a9f5cc291ef640ac989864d1335fe0c804e103311a358ab3fd088d6a14f8fafee82a1d01a6736e60a21cfc176349883e0a192abaf051a74a840eac4ca0666cb72c87ddcdce8e241abefc25f52f3f5f6f3602f829641684023978b66e6ee40ccef87729c0fb147507378d255d7897cc2500e902198f508a0a127202ba257c7c5ffa1bd5b48928305d3a095f6924e5e799fc0ec2c01c6050edf25a552f521ae1bc19e5321ad457ce42942ebee250060c2bcf8df2925e142b10bcba1a7ed71255093fdafcf8a55980358bf26b90464719fc4320df5efb2cfa230e4402cc7bd7d8613abc729a9d1c6751fd2981e315f084df5ae048c084c47aa652b3c682997229e3a73829a7734fced5f61fdb1412dc6f9591506e8d6dc4d1e4d12f249b25333a97092aa6b3a96493df2e31958062c35b0bcc20ba2ccad5ca13496c32e30034db9f24f14d67a10f844dfc93fa7caf852cbbc0457b76ea0fb7a2911dd0b838c47e5fcb3e7067d8ac584f6a14e3d97b49f27bf9f153ce5a35ac438e302437c893997186e09bba12808e57300fe4bfaf4bc2dc6b64de6d6ad2ee54c0ec46bfe29ae14980bd8eaf99dcf9b4725cd305b5a07dd3dc8e30a84dd4b9c8f370f27c7704e8d9f5bfb6074fba6b06699aa7b29d2ff2ea650dbca37339541ddadea315a0f28550dc7a5effa99b559dbc33c60d00b7d57350147a75cca61f95d3f3d83d82a5386387ad9d5c540fb682a126a5e47019e57646f8863ce6e3ce0ab3c718157ad981e1d51bc2dfe862e02468c8ba72826a80e186aa79225b81a0a62ca6c11b9d6669af3fde86deabea447c083cb1cf87fe3021f8a8fc14a9b482833bcf8290c5dc1e513c8ae5156722b1a057617b9065eda8f488bc4ccb26818a0bc0d9b9f4e178fdd86177f1586f55f782eeb4bf63472e3a867b3ecbdba32dc165defd28fbf729228802b176fce20f094a69c6b459a489b3b98d193582f2643839e4a94fdda4a495f53caf75a49e1ef383c427cdb46e60a6da4d31bf393b1b6138958fdd10625f0b450c2d72cc57c2d337a42be4f1f884b26207ccc5346290492c95d31374c533ea8cb6429fcb549115e9394ffb58ac2e37a0e2d28bc82ee89a7b27f88e4bc81728f7e50563a6dba5bd7825356d97f19faa4243fb8060076dc2e3cc424f610cee899483ebbc76449fdf7f1202a93552b6f807a61e916a016ecf093343b2cc7c3128eb95a9529826032d14d00c9a408b418746023754c01b2ae5a1b44a2c6818063d36593939a3dd7a957fb638bb6b9044b5bb1c35f288f4ee40029a047fd2ce30274a8f3587e6a8a62fe74adf9eef7237a59e8233a89ea5dde5d4c51e85057e7d04baa7fad499650c083496368250d248f7f5d4972012e08d9578f4a083aaea181418cdf1e3260100db589d0865b153ef1fbf33dcfebac72431a59813422a998a12fbb219ce62b28987f39f4e302addb3cf08425654ed3482d984f08025dc9c1a2ee3bd37f8fd3b3f06c6350f907f3fdd16067511c91982c0b87716970e30d4c88796f7ea2cc88da98619f032468108621ecbf15dd6bc377987be917a03f442c59c1c8313a73f7212b8b2fad0ab66ea86764158b4653b719a417755e1b155f03f50c1c1310baf48057fc16d4581b5ef7a221d60dc6407cb3ee0b96c66e3f6cf3e84e5adc6bcc0ef61bbcfa6df4f379247bb269e42822d2a2ce7c1a35967ce7235fbccd93b6a08e386454c7b055349c065f49d12886dc90739bd02161592828c0b16091154f01b8d02021bf9c14452994529d86e453fef26f7fb14186d20130bcb08d828cbe2c2d803cf29aa92e10cc7207c3e5b3617dd916ae6f4adf4f6b172e9a3f276aa07d1637aa7ff0d492650504eca2aa41a24563eba2afc8ec40fde7e2b3621b36e01096196de152ca39a72466acbcd38cc07fa2a1ce8586f9334bd4978d5b4479876b814c2ebe38f8e868c2a7217f154169a2dcb0f7a4f1fc8200f50502ccc38662029f68202190ba8f8c8f141300528190279d6359d49739c08b6fda90f2231a63c73e2c9a0878a7a14569e2adda1f4f610210efded234812939a2ae0981dc716265b1abd9aee04fec44013743737b6571e5bd666ff91c273461640e02d44c7cb97b30fdcb814021bd8ed1bae77a5d3704673d6aa248855ac37491f9e8d8ea0167b465512ab205c3436ea79deea06025c8ed0521b9faf66f824495aa73ac1d96a4f59b4ac33ae7bf81c35a36274cf8fe07d33174ef7f224761ad861b636d0c11dffe1b63e60daf2aec0a31d0a0bf40411eab4aa0880d4d2bdd9ad0563a73445827ed270ed7b2d2cab81a653ac76885fd93889cd15d3a20b5a3a1153adfa9000294968082ef56b0921c9f9db011443e4a4744392556476c188a8dcebd619fe105ab378637abb5ac8876917da08d17932b42545d267442b885e4963a20ad274203272080c9b2e037a4c91f0ac5540e6fd17d31b5d884dcb757c3d29483bd17d36b98a71a110c087ea7990a84ac545128757245b125ab183795f8b4642447e73da32509989dccd253759ac2d7c8a32336970cbbf67aaa31e2022ca22d28d1297723566ffe4cadbdb2f94bb15e4f86653be5853a82545bfbef5c079d3f39a57fcdb89995f56aa6944ab2ff844e1c8df56d29446b813809fafbdc6b73b5a522bbf821f5dc378f638703a1ad7182653775e9c1f60b8e3a207fdc6e739d2390ccde8a623d8ed688668ae82b1a8b3c623fe606a57a1b7062a479a1d0c33412f35a9794091c9d3a387d760fb30232f9832112dd8b55bb5ca9f462ea4498aa5a2eb139088c15466bcc8e62800058a017cb9459a7e97538badaecaa5bc22ec34e52e623298c3b3598c0d4d69594f022acadd8bf96b5e4c940a2b21028598ce1503e4d14b3e66f68613e76b827b122be8fc01890c0c5a23a54c1df9c01555605a59310acd0277a4d20f976ad9076d9294b81820bd205dd3f1002085a0e3330a644450723070520cdc03e2a161ac695c028d64af74282b31ea92e90c379c2915f7b8631e607fc73ccf1d69c877c2fec042edc460e8a3e12e0350a72d33ed9dcbc700214d64ada17c6a17ef338927f510c740dfa2097627dccd4207367cf725e61083ce86f384b406742eb30710dc6163e7b32c031aa2882b205b18ec0a263fa6fc4f026d91dbcd47d8a5e1460a6018d837cc34d490be93ec72b2e400807c3b06e2c531d8d5a450ed0d7af29af66951655716f751c1d4f29ca422dce7e7c0cab0bbd7fee44aa8ace1d6e631ff43f22ac820294c51bf79ef828d2a61595a2a1e073f57200546d4e7ec5d9f2e4ada19d1e00b9fc001f58468b76df06a19bc6f96fb39fe61b84c37d812873840b0593cecf662095b024a530dc13e6a941596fd82b9a7d503dd92e972c05e02632b7438aa7f00f23e08d0d65ef5396e7d1631e076a3628359237c01ff95711e18e7fc6d59f80f662c4f68dc2e1b56e84cdfc3a3f842c4322473770ef1c28978105b7aec96c49422f5832d0904e002c73a507b70dd724bfe402c74a4059dc58ae00cc3964737d5315247f9b27f157f2a7f377a524bbd9792e3a154d03b24af0a6bb939c2754fca318fec5f71d5dc522871a07b975fbf9fcacf592d3638ee45d50eb7c40f0277273243dc033f788bc840226430ebfbc1912dc8b0ca9f1b586927e616b177167141edb2b2389429d804d407e739f822bd6fe20acf5a6414efa1aecb4345f63c566c72a784a0ee971ec6f4e28662e4210a4ac21ec1b1e52f11c9c0284c95fb8d6edeb69f3c45ceca6f88602319c276516ecce17aeca3eb6ca88299a48abfa6af732528cf2e9e32dfe7d3b156a3a7baa859a8697ead6019003a2920d3bb2bc28bddd8ee9c9a19b3f24980c145366e203b382bd3b818326e0ec5efc9aa2eee42ce471a971a74b2d6b5f8bda0d862a225c09bc0298c4fccc57dcb7b195637d20bce87d65a4ed729039904d3c779b1099bf84047329240305f8aa02154c261dca0bf4e5ba12ddd12dcc0235acc64a865b6112c7d638c7116e423b3a9fc2dac262cbc306b7e7f83f3640b057189cc0ad82d0d566e2b95b388fd57f9a0846782c3aa23cea412ee77bda93f0537bffb0efee493beb32efe8782b3c0d8d58f1b5711dd8b847a7b8025a015fadd6834580834de192203c169452809847ac9b1b863ef5cd0c6cb3a3c889c400dd297718f8a60a91f33688f5de924326d4935fec99ac7cc73c0399f047820ec8f138194facb1d409b836dd558326707280e8fea7230e86a6c9c899667cd675e4f732e52570a6dd2a3cc31710adbed0b118a3177e33cc2fd6cf60713fa61152c39c8f2fbfa51059c32b45581480cc0af50ff75e076a72ea9736f85c0c23c6b4d9ab81b33940523d1c0893f69a6b1a86d2fc6058a084ae4531c8b0d2e3e2f013e9b49d6024695e932a2a09a35d84fd812d839c04b86d8cb5d6c986a571b1fa18e51d4fb544eef4e6925578cf42216caad2ecfa8b17aefdea31278a67651735cc6ec48b02cab3b348ca097c4115cbdbca295a63cdc5e7b09c62698981006ccfeec0bbca93f38a27bf90d8a0dd5dedcd138d2534dd5c8ebb97cb400e03b02597040def040562d2e671633ee4e0edfff2e199185486dea211de7e7fe1f206f6b20bf79779b9f2b4d1e9d12187c3afa1503ba062a0e8ca4d8018453e4a3c0bfe08a00aad544de7c5fde2a682f60cbd84df50cff7031381cb78492c5a84d93731154e12f3d27d38792be71b8a50c06dadfacdf6e652037f95216a391a2c2d96f4ea9c62b1ff9caa141c7937a1b9162ea07fabbe1ce7886d6dd6534282242ab8ce900eb417d0ecbe787d9ae79448ca35022d0b0398df2ea512a3295ebcdff31fdcdd8f2dfe2bd4a17ba059a060502f4faca86b10f0e22de447f1db57eb11111672158e9d9338462420da40c337360fa2660e4c79240b5988165b1b4854917514a6010a71ed46192ba931d0cab5874a09f54c90ee8d21e8f6f3ad3adda2a8026c5e377b8902c955e526f25f278faba0c047c631cd85e97fbf5441b3c324fbe706cb42e67f4249cde3f139960603cd546c267c5d41593719e62d5569d43a2ec8f11a61f457763d64b060d2c4dda877658294d97aa7210b302ce81edb562f9cd80a716d5d566af7fe62b67b280c14aee22f7900f17a162c17fab8e222ceb067746a0df01a052e3461ff80a070ed1884a90045fe410028d2c7b5c8022978158039c584e2c3ee773488fff900f967c63814ed07d57960de671782cacaa7ab59cc7e2b48074a944db50203390b925a2c44130f784870abb95181384de090252a0fd59e4c964cc5e532604ae15ba9c3d8c3090a293b8abf2b0daccfb456273b1c1023dbd49e6a61972ad740f8c23c184174b26e88398cea99debeace56800b01fc64b94ae035abfb68c5a2056324e071a7d37477391f27ebfcadcde15f16a0da3bb002e0a693ab665a3ad2933f1bc564892d7cbf1b1785df0416ffb0cd0cbd136c1629010d3ba0035523e8ea181180e5fdbf77933a566c8b728c9de7b7793524a99929401b408e5088908b37cc35aea3bae73dd86d20b061822e80baa2453d87daf48fa054963285d3a3e399bf9f4f58f9acb1091affa47fe4857e83019934244ab66c2a449931fd771987c4917d0aa9974aabf442e5ca42b749874850ecb320779c21438bcb20428c9fd23a1919691ac55def78f8646fd232eade2be7f341b7d69d53602d36ad5a8c8156d62be6a5586e4101657265d5736faad23a128ad94564aa7e0ce212a6b404d70f8328a6badb5c6d41a1353636aadf5e3971cca271d1333f3750fbe0147b61a25a58e5c222513c9239bc89eafd5d66a6bbd4257361bb55ae577e8125d2ef74bab6ed105d3aa493fd66dc626122053fd5d982e08870e731d5f02c65bdd2d5d4a13d85dfed32894ec12655977067658ab64502c4bab8464ada23f4fd461b24b34f3ddac0b1b4b961f8e7ac8fd57f6f6caacbd57864d3aa5128883036b06ec1e4b25ec9f2bbb326b5d39062d27a66138a3069dc93bd322e9cc57a5ebe552ac9140cc2a4ac1b46af4f7bafcfbf2ede8915029ff7e3334aa4761c284c9a3ffa4e0f961298f401a5480ff079dd1a21f5a173c81b882086e96d1a67e18871065a3393a5892eed2df47aca846f9f00f513d7c346ae61a18defa23d024048e36a3dc5f02a2d6d2d9ccfbeb81148ca90a8638cb1fa62c8fc81a85fbfa45d9409d677120ca5315154bb51235ea9352f2826bd46dd49d6126542454b4b536255bd16c36abb5d6a2199dd1199d551e8edb2a0f9dd1598d1d5cb4e3d5326f9f544af992651c81bdd7bd5b9577b615b14e26eb186ecf0562e7f3d6519f9dacf3d20d755ff4ab6f4ce744f7eabee8643b3a07193ae3bdbacadda1816e4bca97d4420a499994425e914f482b146bf0f74b5a09e4a958ac7129d42a4bd4282da2ca8a1151fd7626b3b06264692a620741a6ba6d8c0b09ce5ac9124c7a4efef192e693be0e48c82bea6e25ed907442d20c70e8e9642fa87b8196d2ff2b5e6bd28f39027bad56ac934909868c202a1010d0ccbbd2078869d93c22d67493dc4344941399c2915930f144072c1c1c2c971d167e1ca4144ab0486f41970c70089002160e0e07606170caa91f071e2c1238a548496b07584a29658c564455e74444b5aa7bb5d7ea9ce85e2600c294160b87511142ac2927fa319f5e982f5fe698eaefca90331d5b869dc9178e44a2d592b170e07c98b1a6b4687765986876ddaf90afbc2b9dcae205c9843a0b1f1d03bc6c41efd501752f0fe68121ea4d18047d48f17c80438f8a47a55561f7ca1ed057c2429d2cda74af58b3455c7526534c4cd7c94cb9815aa881bc1cb6501193a7da94bb170519207fb692537d8984e65305bbd53a9b14f85b232898200216488052842bba5707eb629d50d8f1e46ea08e7de811c17b01b926ecb6e84f0e6fcb69cf0824c516785bb7e52e6745a44931d740adf25a7787a8b265d8998d790a08afab783ccc6f792dfba16767ad92af46951155f28898af9c6892fbaf1399ba434414062fb6b16bfb36bedd7dd22aef4aa37e7ce5c13ad52b7856620aed39116b6090fbadc3806eebf2c49a9e58f3e16d99322703ee5e3274af9e9e16cf39e7a4ddcb57a4a7d66727ebbee85e728509da984cc1575eeb0bb9f2788875f6eb9d1c78903ab196afba6d153978af56ab65382b9d3d2cd1a3226721ad60ef56ac39499993bd1de09d3999cc518ee1485fb73cc5136b7a624db73e7777b7750f0b9660d8f1742fd1f1b84c3906b98f98d33690cb39e7ec7886e876e84bf961277f32a173dae062b0609969b880ccd42fd07caaa151fdde0e7018899078a051fd33a017ec065702e9f6449b23e2cab31253fd31c8edc5bc170f70d8bd7c25c461be8a0e050e23ec938247deeb8bc0af6e932926a65b0d5442f5aebcb42003e4d307e2af4621a1d9834d8143eff549c13287b7273751bee069060934caab82c3d8c292fba9d0c962276f2570f5b62e4fb48953e0702696db83c59a7677a7eeeeee4426f55eee939ae0bd1c5fa1dc41e6b7d0870d7433ee4ca269a18e459b98575a4879b1e62733e96b56cfbce5f06498f4310f01d2c780310f01fca7f9f1b65a45c1132af7a8824314bef3f3f123c607ce9b17f873e8e5c440072188a81011061358740b5b4c22614abbe598f4f1e0a2af4857c96d794e4494f7ea06e22a691ee48e39bb9d4691bebead5675ab3d27a2aaeb22a2fa3b59b71299c28e3162aaebc26b6559abbc56047a451bdf715bdeebb6bc58bf27e4bdfa3d985bc9117604a2dc39f45ead8ab02354c9fdde9556492f484a292d116ecb8379b099d84c9656558f08b9df7bc17c657ae91ecc7bc99fd37b4deff5a14794db7b79af69fd0412e9ee5c15dc15784d5c9ddb22dd968b0a1138f45e3342ad0aa52b7baf78ed68474e16ad5798744efac448a3a1b3be70883d92cb3a29c514d3d80f05c815e81691562153fd5de4fe5026b7ac692cd650d144906da6c46963e4a6d47d524a69b66d34d2b66d8b89348644a9c43131f281b494b85573d6b862c3dd543f15280d8f1ee0902677bb5377ea0e6bd48f981015b2afc9b4a1564d2b54148bc528a55428168bc5c01d26b198bb36a351c116e63ead41ae40414e72442ac49afefaf1903d0e70824cf58a47bca151bd80b880bb8198eae711571b8844d90430388c42367c89b21a3e3470a5f379c41a1a2330cd218d0b31093db4e6bdf7f668d4dbf64435683b2314d07929fddc7a9d43984db6a0d6a5bb4b29a5b4df534a9dba16dade655be9a03a7a6563270142a8e49eb12208e51095dbeb29038a1caa002be38acd41747a580a0293dc6fc2eec297a3e83cab82df291dfec31665724e7730ae624617e78a9a9f0b70c8e55e2999e2bf839cd12fcaf48bb14d7263e4ada5c79e5e4cace99fd9bf089be28b4cbb209807dcb1c98256f6a7f61457168441ca6fd5a4a3ab812ec494ff888a7bc1185342628dff29081c52592c8b900349c08f995df5685f59d0145e93e7065151679e80887d02e2dddddddd7d860cdb224d2865007214d25102d22cf4cabf41ffb0f42107d2206b0e88034145794ffd8fce471702e07017de85001c48ac913bb3090af284e6e11c4d0edddd7d9a40c1fad9bf001895a0edd87470a72e87878364c237626cc42833678dec3e532acdc8deb1638c31468f3dc538b5e0a70574bafbf4303a14e930ba02cf97bfdd40296a558db94ade3cccf1930b617205433027fbdf4029ba81521494b728254e0e73ace00d94a246c57c036516b3ff0d9499cc79bbf169352a6677bf8102a65131dff8286954cccec51b9f5617e51b285ff20d9459cc37506631c6dc40e1d23750be48076fa0ccba1bc4a4945a4b29a57406d45a6b73e80c28a5944e6aef058138ad74ce49e719a72162a7217214d19e1c4561361752b9dbc1a0cef2ea2146e9b2af3ced8f31461f8d8a5f6a1568848e6c7c9f334fcc352a3aa54fa3cf7973f2cf2ea17cf9dadf79b59fe08d9a6b9aa68173ce39679bd145966b7284716122a32154801c6168c0203fe9544be999a13d335ff774259918c3597e32cf7ca05fb2e0e47d8dcf61c97c27f9a5cf613df9898243392b22f3355e7e4566be54e3c3b1f1325ffab6782a22f3a52f8138a597f91c568def9e8acce0d4f899cf619184c0724e579b58804329e459815bad9e69323d0a94f9703623cc5e2c999e278d92519d399b45abd2735c2e010a0ea7abf44d224fad26ac5afa5e15537a1e38bf783313b8cc72946479811050a4c841123b74b112f484103b523c19d246279fd9bd18770fed01a7ebc78f1e15e070b6660ed1c6fbfea9835c4d1fc219c424424e27f2c329838c06d101728481f1523bcfd9bd189b5ca58f3e893550624d531f2a85d0133126604abc280d280c4b05e83cabd44ab27dcfa6fba48c36de0791e069829d65ecbe7b999bbac208c38a11306881134cb44022d6341a45608e303041b76300131ccad9d6d9c302c3c0548181a1d25d902955b91f178127d07469c1401a7686908771d9ee793ab40728d31e5f4d5797068f9c9da1937b3ad5ef258b97209897252d2f4a724b581a43b034b45881e24b0e694fb4f2839f1cad40c125f7d327548af7dd5cfa244b06b6799f3f8d59eb5ae818d0d9eb9ec0e17ce5a0912b8dc6c921092f4042ec5034040f136d3c7022d1b5d0e5e95a010ee5cccb821261e5490eb98afc60e0904e97277bbc9f21ad00cbbff1dc3ded629879999f2e5fcd80a71822cbc716275e70022e64c480d50398b17c641970ced790e91263babc7cc911e6652803204718971764da136ddc461289acd24791d941b2a6d0df66bed851b0886cc980339cec40fa84f634caadc09fa3951b3cc9160ce5976640670b6507771fd29e26f0e835add35ef6d77d2c8c81694ff7827c18224c7e944bab5c0a5559ab3a6efbc66088caa17c229fe0271e18e27edb81e1250a26454c5c811203566f3e5081842996f832d403563ffde91b38483cc82f3a4a53646a6586e804c585031c4e1719b351f761cc11a390f69870e490ee98cd663372d603a33f723603d21e399333afebba6ee637efbadb75d7bbae9391e9ba196f89e8594ba9add68ea41cd94e4a4aa9d6dd992fb23a98d3493dcdf3be7b5cf2baaef3aa90f4d5aa4b9fb4ea67f41db5d1d5b82d7adbc691a42449a97544284b06e3c75e0cc6dec780de6f1dfed82a0c7aefcdccc890680fed2191e80eb769a35b89b8cce6026cb0458fd163248d728cb576e320bbd1f82d421d1053a6548117232f16091cc7a1684a988b9c0e53142e565750a536513bcc16188d423a0a3c30250b16fc70450c6e20861456cc1e581002838c48c861c20b163ef0810e4e08c1075688caed231d05318c12497081c2d3c5c99622eecf09e60f9b75b225cae65b8478c16dbcc5065b704063910ed36541080c9b7512b5e0010eb01092928420803ae00506832b4c70a1830db6fc4063d1969ddc7fb91c615ac268f992a3accbd360b2f3ce0986a36d341a456b7a922b47d20f0f3677777777d5fcc1d64ae03e406c54dcae4cc1c6e512820c98d1dbb5819dca5a5d55093944a6d05509b91a40acb90c912b842003665451044f55a2bab6295a4e8c856eb0334f092e221a1aba81ce89e402188835fddba781fd887d2437df07d241b1d7956e4a29d59e0a0ea39097040e250f69063894ad1f3f5a37f86ac8a7813b877188524a69fd69d42ceca1dcef29c1a3a0d8956e29da9c5acb9f34b0cc611caaae2a70181bd5232edac83172381a7975e98043d97221f19e46b51131854aa5025557a300d005d70fab6b7bc9535d1548f254a0ed75a555360bd3cf598164755557157a29a9fd4cfdc36332ed6dd401d012df3d56237ea5f770aff17374907bc4181fc92bd71c630ffaf1b1e8d0ca1f63acb5d69720c869bde040f9c3db273012411178ae27c89f6fdca8f56de088363670d4c8116d6ae4289da24de9a423dacce890d9116d6476c494106d624a0080b55fb4f1be0e8c361dc899106d381368a2cd46c323da68279c106b1a8598808b42ac891334e2dfad2c5b3252ba16ba95dd3f3e929a3dfac59e8aefa6910d5ad5ce2bbb5f384cae30ef17d661d2a170d8fde2ca64aafffbe10301015801958a35fd250d48aba249d15c5a8ff68449a35ae3c9413158a3fc07164a9783f1d6ec4b9e82650e51b728f78caffc5e8c4da647f9f0a230fee3abc8faf19f918eaf9c452f98ae924bb10b1b0861091630884208442cfab185645a86723359921d160bf22cb9e553499fd229e7db399fba7d203d3f23fe33dfcf88e7e8e0ad95d9d0b8524a9fd20f65a6f408904c43fb9452fbd4be114aa9fd8ccc9fd93f23b3044ce8ab82b4c94643fe5ceb3d02244f3bedcf3c3f2376ce39e774fff985f3adb57622a1f946dafd133f92d3f297eef26d13ff8cdc9f79f419b9f473747004c9cd484c997e7b8ff754d0638e2d38f327add2029b547213fbb64ed09b34ca7b4af985195032c9b4279f9ae02721902c9fb42aa42fbfd27f23d29fb47c6fd2a8fa35c9a03fe931527f66fb19a96009f295b5eac81111988e20918fc494e5b704c348841cd20f653e0ced87de8724ed43fc31af45e693f5698e5d0356b982618d6c438d4ca7ccf41b8dda0a8eb0229d1c6166fc6414728499d1ca0e6bd51d9a9f7d9a6fd78055b64f83fd5a29a52fbfd6e829a7262494ea8cbaf33ca259116d859328947f72e147966f44049e35209f6699b7187b7850a3e4c671b098902c9c306da4693f2ea057387ff0c578ea78ca779a27cbd9933b9c3a5f28b3083c1b91df27c8210e27c8120ca38cc033083ccbf74752639cc8533eeb7ec94e88e1d06194c948655f072ce6ab19215fd9701edaa44595cc1d0ffefd385c2659b4b991e5872557f6d76a106d70bc6a58b161e9010bfb1ba554da20799f7bedb5cf6151efb7df3e8745a7101253f6a3ac4dfb684cc853f681d0f34516ffc20557b27d189a153b06d098afec0f3aa3459eb2cf8389b82547d8174b32cd6184559d560961d25cb62ec82117b37f6ff46de62b0dfc41851c4479ca72da874d9eb25f6ba5a39e215884c1ba2bb5ff1cca572719925c8f4eb358eb82cf906df4a03e8dd9fbf6e91025f255f7f66751b4e9bfc165fb30c86c6d640adb62cb60f21495a1fbd815d9de036fa73d07625f69bfdd22da03e9285aad955e2226114cac547e512ea87d43b6eff6018478caf64afb944c195d9a4ed96f4bd3284bad8dc51afb40ba8413e030c2668809816148914b6334a8af47a3ac64d9556d0dc9f66b40d2aa080363966d2c5bda820d71b15e0ce605130b1b12b2256bed5369df3ecdd22a0b25db07ed57db163452bd6786b09d61f206c2ddf20c1e33f2ecd006fa93a59ca101967273ae51260be40627ac08897c59fea5796912be7c798c71e975a08175984c18cbf9d834e383e787b83441d38efe8e740e75e8400387179b2e175f5847a3fc4d48c061a9f448e0fe90c339620d8e58e36f627dff0f5bc87dcc5f0eb70f4fa3d73e7e78a2e1e97efd2f87f2bbcef348a41f65f9dc17413a25d6c85c65ae9fccdc901f9e8aa35311d962e1c7b19b4e89352322bf04f54def9b2f4fc5efbe09f35494d55ac75d63f454ec963d3faef85b77f73b51b772fcd691f1432fcaf17198395c5721f9fef1bbb7bbbb3bda50caf7ae808cb2bdf73f87f85e1088a76490fb8fc2a66e7b20eef647f24803ec6b1f0ba7fb325f10881613a8c021ce126c82431b4ab90a69940481344a4a2df0e710bf7c947c2cdf341ac5e02c57313125f19019800891b6884dfe0dbe6a4ff54719e8cf09269952a4df9344d39ba460ff2131e5527673d262821c16fdfe4c90c3aa2f3b2239ac1de857f91e907f03fdf945e8ac6f419cfe0a9e228e3f054f3187457f6020250eca9e42d88e742bc7d77eb39f13ffdeb7208eff054f11e7fe08cc618d3eededf7c3870fe92fc3b5f62f18596f32e5183fb246f7bb9f120b9e62044ff17e9153044f44eadf2fe27f599b73da7fdeb4973abeb2ef2fc3e82f98e4fee81d4c32e5b425d93eb2ec47967f433ca5fdf609f102bff618087b37c4bef496ee9de22391f9c47d11fba3ef5ee6fb9de22799b27d92d1db4f32a5038bccbf9fc446f0c481a7f8ac0d2c727f7e92099e224843a3b4afc153da47d6fd9829f8b4bdfdc83a6de089c8e8edcb307a0b269952c4ff7e92f9230b26f1bf1f59f1a358cd12d12d579195c3126c780d0a193222a26296a090a123620a318f5e301f3125ffc80b23242d6c727e9195aa5df450451959fe8c2a7f79b91664aeb905996594cdfd47f57e05715017024f24b24c9ec2c2c4ba3668afc8c2ad32d20d8843d9c12b7dce68ee67814bee8fcd45981cd2c0ba2002c6c5974d4a975c6f91dbc7f010e3ccd815a9af81383504affaa3cf1619bd05714c9ef222da5710077bca5ffbee6288ac1316b85fb2465f64d1cf06edc58a54b2b69632c60b4910592d8356fff8010486192e80e2f223a645463493aab0e4a3074a4a29e797421d537e524a29812c69ee67028d40963cbe4b410a6479fd638d57e0cbfec3efc5588234afa364e25ab0459a2a6bad524a29ad64a1a2c9474cc98f52f6b442caac507bb2b647af664c052030ccb0c54f9e1e83f5c8b3ebd9c28b1cc62b5b00659c2da5f9699fcceeeed91f83f4ec0f718ec898823f12d38725c8347babd56a650aca88f24c3fe061c0d82fc4a101320c78847e8da554663749103f0992609cb3aaa4085b44ab35c66b0c3add7d7a981c66c8729891a3cb2b47179a48ff54ab9d73ce39e79c73cef9d5d239e7a494524bef736fff76e7eebbfbfb711fb5fbd9eeabcf7df781f8678a35f3b56f04ea1803bb053d32ba526bed574bedd35aad056f9c504ae7ac73d249b1f039e79c734681ebcf0f4380028a4ae79c749ea103a4737a52747a92a30a588e2ae874f7e9615aa0e589272a9d73d2798656832b572a9d73d27986172d4d34d1f33427edeeeeeeeeeea6deddedee4eddcbc0b85172ba5377a7744e4abd7b767b7b5f1fa20cd53e29add55a2108818ea40419fd68dab6492aa5e4b852d7c2cc38d6484e5229a5f4bc1c5eb03fa90b124d9852dca818734f63e090fecccc944a35729c90c0710a1f9d7cc30bfc6ad48d0f0e130e1c386ed8a88103476906070e1c323862300e1c3850688096e7dff82cf1594251997e6128f37c41cb1685ecc3c48709fd28f5e151e51b1f268d8ad96789cf129f253e3c4d7c786e7c7a7c9a5c1f26bd8a3e3b3e3b3e4b7c746e7c767c96342ae65795188a16d3603cc01a2c37bef8c668b1eac3d3c343a7bb4f0f43c6962a552a9d73d27946972d7290834ae79c749e7132a2e764c4193f18e3d9c345778fb879e234c2e787cde35fbf5591e39126248d9a8182e9f5529cd1bba7531d364f9e3d164c8e3436588e34e4944e738491230ca11c6148a872458eb0222fb2ec9132094539c2924094631439c28a7832fd99590b29464e46fba65669a38ff97e7c15685ad53f52503762d0c1530736954651b9dc95438081922a3227c068e1536ba22eb6e878a9828b4e962e46f7270085cf0e8a9a00413646772fc8562bdbae729a3f4f136c2a0d5444854811110f41482063c9ce4605962e9729c1c4156298c0ca123b60f9cb1e7ff9e3afc570287b62aee0d0040697e6d76fce397f644f67658b3472a393d26a820c0839e4bad60fa29091431f0990c9617cc1ea0ce310e20fa254c93e447618e4909b737e0b32cf1b275c3ec78906787a45c02f6f9c0ccd5a9fce1b275c9c70713273c2e5c6c9d08d93a1564d27434e664ebedc389939b971f2c59d70e995a953ee8468de38217232e464c889cc74e384a85131df38196a54cc5166bdb849e0d8a8d9a8ca64ca767fc19f3e056376b0bbdde7ecee6ed9737a4b296347394f4a622725398c00cb6104520b31d3efefc9cd89a433a53fe7a434ce1841e6c74f04d3058ffe7d05961698967d5b5c72c7886567c94c01985c22ba396ac9114b0a827238b1a4a006b9bb7dfee0ca0f80e4466150c0b0a4408acc510a2f399c3bb9d428d92950126b22589fc4ce620beac223c60ca888a019515017289d63d0ec8ba02e4d86748882072288c65032b4026bedfb5b4b647231fe0d38a388e550a7a4143c6fa3faa54c9301965c7213499909b0fc8e05d16e19a30ab66e21e478f7fb777f21cdb372fd49eb5e4f193de75429bbcc283defe3fa00f3e5d7e30719eb12d37d3d60ef659a67c757313f5f86215735c8d4fcd1cf97448836dab7d4e991add6012721cf5c843cdf3d30c99424f8bb970193903ec66d3286419c2945f0939e74ff8502dcfb17b4214a92f7d47cef3188e5ce7ceefb2ef8fd80f193fed3c19f0f38943bb37bef3920573e64aa7ffe8847c8f3a39c3ce4f9dbe8ab79ab5c961cffda787d358585ab30c95b5769e5cdb932f28c0e6479a35c7fa7fe14b22acbefd4a0bc4114393823c728742083bcd52282842cd71f11609ee406917496378835534606791b71fd712ec89bc6f527938325a5a2ac7512dc38ae3fcd4bde3a4e7e9cd6c5407fc6d0c2223dee88d09f2e5158a42f7544706cf1c222fd5683d33ecf5ba98b8132a1d2589060915e760ec0b1a50b8bf4dad779abc1c98e486cc2042cd2dbe888c42d58a4df4ad34649f3a2e0df4cdc8d2e861f2cd2c76e86110b83383951163b073416178b04468fe95ab05128c7e41e52fe800c93877ca00599efbba0e51b5bf0eca22d92f43c4925d6ccefafcbf28b512cb145aed10591f806b87bef2716d97e5887c8f32b4fb4a13f2551b4a93fbf065f0989a92914a48558333f95671659fe290bdc1f461fa0624d17292894eb6cd4dd165ba4a99265ed8fbe6b411c539021b1cad89cd45d5e5be395944eaf42d3a6df4dfbd163fa4209b2f6f5d39eb6dbd77eb4457bf9d4bef68534b97edba793d6b75fd72bb07c0f6367b593dbb419b25feede4b711cb492725a3c8be9d3c68aeb0543fc34e42f56102757194b9a1052b6888a286aef48dbb8ceeb5124fb4b1ad40cdef73412e83e1d6fd27181ec25530dd971c986ec1cf640f6a748b23fad9d9c28b0c2f9ab85630849c4cc94280518208c30421449e020070ff0e1075824b1e4ca0d704083cd092496b8d20893c9a4828fd761ba34321685281f5fc48848f8c225f75fd39bb2e41b39c2beec408a2dc7152c3177a79cdeb2a9d086fc60212ee087990d78c0010d82ba4082159ab2145b9c00c2eb0a2d9aa836063f1200245691c396258008228832b8b03f45402373650881440e658c81c414d88479642f4758142e3c6a7a04c68261f0bf42e6f4ee99a79ced0d05a521475d856ecec71338e4b4aedce829587aedc352a3bae9e89336d264696f3ed1e49066fbb6823670f9291374aa106bfa4e7add062ed3af4f495e74384da350597677ebe0e8cc7de97748693542ff620190c1dd9fbfd5efa30948db4d0064e0da93d21adea3ed19384ef7f8a431b0ffcdee1e524a690d3c3faf89f0f472110ce7c7bf38824622880540c67c148cc0b7444f4ff3ccb17341b65afdca32db6f1b24be0d7225679fc628ddab60a434371132586098dcbc421a1527f7019c7c67a61f0b403ebe7c0b4a9f7aa441289096446c31aae68ca849e79c93864e4ae5d431e99cd34d8d5295249d8e1ba59a93d29f54d6146c9b94524a293dc618638c5c6c25482c49ae4e7537e5a2ac4feb570265749f93d25a95b0f64e6f79efbd78524a7968935aaded825ca01c56e0d05465db4a40021f9919e757a3aee47e29b557a35a83e5f6bce979de9ef4a20d2fccc937627204430b64f95cac91d20229e35843a775dbd65a69adb5249c5fc812f484624d775a12980b49ae1b49aed883bca3e8856326b9264976746f822457ac216592ab84d8d6c316696634352a5e2bad38adf68e4c5186503ff4dac6751e09c7c8cc946ad8b8619ac971d2b1a30400fc079a40c3e3041450346fa90008a007ea841a9437413aa5b70fbb027b7df4f19e9079649a6cef8fb8b85cdcf01b1c8c346f3c66de4ef0460185f2e6b3e6fbd3ae5aa094dcdf81a379f445160a85bcf909799b3c685eab23dca86a42de2c98b7fbe56df479d30090b78ddb91b74e47debc53de4839f286634c7993b991b7191b35f2fd76f000ed4050a346296f3666f27643266fa698bce1c079cb71e2463ababced2861cb1b009e1b7d376fa0cd9b09356f34dc68e3e1793b0185140ade32a250de0467aca14f4b903d4614ad5dab6cf463cd53b34ab4efafb3defb49b429c3edbf206625d9febe1c25f11fb59663086fe0a9c8fdfe5b03d53e86c892218a46e9db20579881064a2fa56fa3b533f46a878b061b6e904a7e32a53482d96c9d425a15fa180203a5f4e54d6db0459ad0b62e498a39e56f3fadb595277e4d7ab6af5fa9543083a93b9549aebe3acd6f7c22e2df5fc4bf71fa1d2cc271208e3eb8efbe03717e78aa3e07de56a3ea47908269544de1069882897e730ff19583d785449bda20aeb57e8e21dc2753a3aa7f0c91e5a00c511c7c4fd5af4531fbf054ad3cbdd2d1aa525a1573bd4214d6a05c7972adb54aaef5c30acbd559618de5fad75230ad0a7de4fad5f2e43abfba004cae517258777265a155f4ebfbf055dbd62dc2514c71e5c7a98588206a749738c66041ee3984a5882f398248be64001cac5872cdd39c74a757dc8cf2d027d445ab8421cb7e25bb183bd09d971833c821fd096396434a25fb871488bea82ab4242933c061c95522fdb42c1145f92f8c906c598225a058e3474aae68234bae5ee16895804a574ab1929622c04a4325570956ca52122ac94a44a49f4d7ea8359160880389ec1f6a4364d7a6b83cd1c6bed322b2fb11390491fad2ba4a544cb2991d23ecb4144c7770b84c320f0c1bafd99007860746b4699d928bee44c1241d5f917e3ce56f32917448241d378db064ffb0e4fa31c9620de9c7571e514cf9cf5c5e11507652eb951d8c5316382cb9c0c8fe5a0d628d3f25fdf48a925c555a056b15cdfe24235c09495ab293e103e927bbe72263f62587a4a0ec1f92622421d2949aab5561c905d4aa50ab41f6f7d7a8b84f0eb9a1d6a8248d564649eb10d108000040015315002020100a074442b150280d4451950f14000b8196486e561a4aa4498ee4300c19630c31861002006404408666060b6b21f711c79c328d64c18ba0f19b9c95310872e552f79d199af5742284c885a4c6f236d8e041bbe72a0d1876658082b8210b14fbbc075470123b8a101ed19246b66f7d806c053f180375fbaf759fcf862907940aeada1abd6d42310579848a998ed4089483b6fd14d8de668503821fa93651d9e3717e4a22191f641087e98300356409bfa78ec091e7040d9a5cf478b20039318cc74adbe3a1511a369b72e0d13773c35ca30b17920293143dd5379455d0bf302f0f5d6d69e7301c1ad6e742958f1afb8b5cd96246b0a259b720f3d8b540233e6ee865898073b2e1a6a1591dad929d5694eda493bacc6498e59aa4417c11bb4002f7272a2b70a2fc1a715bd502bd285ea6769d996d5e79100d240087174dcabe80313a02c1466898b0d0295c384b8478b0ade7b5ab4e395be349f0ad4029f8f2e6d3c1238be7f7720b4d979cd5bc8faf73eca36becb7a6b832a60e600cb060827036042837718cba76a8dc943db295f485195cc6a945e120b7eb926ea4657d381d5ca54915380057fbc06c2fc952109338bacdfae8ce81a430d21e98d264288632764b9d5cbe1d8aed307f33ca9ea246c7de067dce031993e7570e12574ef0d49a592dd84092858a39351244d728863f5c7e7a4682b400e100d3807087085810c30ef58045f6163f11f5f564e7fe4e9ebf221866129bba15ba801f86918292e96130f561382fe623e6f57f760d3950b909597087cc9995ea33c42363b4c3e50cba9fe714d6f23d5b39c300be67207516493d4efc4589165e701141caa8de2f49d4d866e11f23bb1aca0a200230fee8d383568e21c78d852a365eb0088a03cd2ab2e0403b6c7414a1df54b2c0efaf26e28f918850e26876a174dd9f0028204f67b5345154232b1512b99d1a013f6400bf4efafc677fef7a3618442c5ad3f8233421d1b9e062d83ad5e84b280309988326268d734a085c237d53a317ea6b074db0d7e9082f4d3e896ef8c78894b590d1833ffa7a5cee81ab8b134a1ddae7db1f5c4b55d080c796963d2214f98624dfd692de5f5b64ae413c80033b383c80ac272ec32c1ebbf163fc4a1e04f5a2ea90f07d0876af6dc9b7ef81d14f5ccaba1e7a7c5a8844cf9adfaf7f577e8995ab8623d361a0b24789d27b27643a40fb6f5fc5a9eccbbfae7ca42e15c22e5e8767cfb5610cff0538cc4744ab127d3f9583188bd03ae8d15f74ed19dd99f2d9179542560256b4a9e5f3ea7bd204891a6b2701a56ef3c7fe11d3a5d7702adb3dae63cdd1be24bc4d967e1bb8883a50b6ccbc446ae3472ce09168ce1e864737a16f0b0116ff989f7edf030341e0ef7764d08f40c73ecd0a189950fade562ab4cffb23791ff14bebec3f53ae09d78534a24842f3a6d532a7285f2a00276eea370c58a44642a989ac0f4c8d8b4acca295ea20472d6ca2bb67a9da370daee696e6adc480087dc19a640cbd9e3e9211d406e99dbeecd6a00ce77cc96a9a4fd9fe15cf21d892118c6997a17faf8ccd1941a1ec34e868e9c66a81eea952e8b3741a4672ff95690e414cd108def4410005207a73d10cb2d608dc7d32213823209754ae01d85cdf9f478c1448f46a773ab5abffeca9f29beeb5deac2a64914c1d614338f9ccb7f7251b460f8b9cd6223a67d555e035089a991a6882021deb304c3527aaad6bc4c23a06de2132fbae65807a209065cd90598534b2fa0158e07b67f4aab99d0099eefec744ba816a152019d8f7447be82763eda097636ca43fc7682e9896c75d4f90be906af0f44306d7e33348a5043e0f806727b5ddca7d02a1af2219f06c12c27e3f373cba2501deda6cc281bba116eae7b3fb222cc8a4b14ececd925f874b5d874b784656bd49de06308f8730e97001f29a99db39af89d024036d53dc7c7b00f3f18bcbfe647a72037c4dd85c0f239d38f3f692054017efb540071b8b3f6aa64b64628c2175e5861779529e773d3643e3d5a66545dc62365195b454ba7dd852462c65c7a83a06b2de01f193965fbb81ec309038a95ed1400963704dcaf8458506367c02278aa256e47845023b37381090e26df624a6fa3eef750c66bb28de02e53100a8ed149cbef55e921b25c50f2a6a30286106ef710af1777cd5d4341c5b80cf87c7a165d4c106207fccd3663c1a70a8190bf764aa513f059fb9e316921564a15db97415bf07b98606b08e203c053406290124149057e3385035d5327a5d48de5dc77f6097c8cfa1030bd52d834775f6cd4f784758ecb8913a4bf1721b02557ed401255d59a0f5a005d5b7229600003f6ebf384c63597544ab1fa2cd3d5fbf92e1c98611da18fffb2c5c1faa8b7d4af259a4be7e46d56540153437d3b3fe2f7f40f8171291c56ed5b272ffc2cea9da52e34422c62111389a749be10039fa42ab7980c2369421959d2b0554b961287a70309da5db93af9dd711b4e2cbfe97384fc993a4d354d3fa8197e930429b5caee49f5f1cf1ba6574fdccce95dd264a5c296f7ae2f4019befa0b33008eff33d758b85c8a8797d625a2ce14f6bd0adfd35e1679702a651e6b85d2511843a86ceb029aac06468bc6dd8c6fd29b196a5ddf330e6adcaf99cd54b694640d7bcae90eb8c9c548d79ff56f0cf18d29e20b6118e237f276c344c880df58e90a97808a3c5150fd1220d90cf7e9447d68dfe102abb9c5ce00c176fab2f931f4f34beacf2003f40c464029a69130964190dd76a920ba62a8081242ec5974f36b151bb098063468db782ce5aae2b032b42265392e4ed01c1ab44db5f49466470643c9d6a4123f60e63b2199c347fc8e555a7afd1e5029e44f84d35fc17d3e7d2ad84923c4fee91d9db58d811d4040cad596261420f2af51e8cdc8614ae9ac50408ab0cab4d4584c3d499e9b434ec4f5ce0e5366a1dfeced60c075131d0b36646efd1e6e460dc051d7b77a2e0dca0880a741fda0390b7c3e73efa6f136f26342a87cb4edd771b9f611a4528c271fadb79117de590157e150015119baf44c3970b3e6ad9d8a18368d80314e134e51bb3205414476ecc0001b57b4574002846d9b368be035149f39afde97138882e1b0b8fcf6815da3d482ab193bcbef4edb147a98200ee3642ba2d29bb86bc3bba38df59e51928b84d88b7c67da7eaf4cdf62c1d1e5991c29ec6bf6f1923babcd95a37dc246124d4470aae803406340506cf710508b80555596c97fbc6cec05360cd183a2dc3d0497afd84b5126b24aa992a909ee1c07c4aa2b8b1007a9e8e3eea0154c18e94e031230177fa70a408733a62a03cec210cc68a0871cc4e32e89a1ccb351b11feb48f21058638d02b3a67c02ce1a4bdbdcc5b2a027472dc6ac04b5d702b9bea88c18641e31371cc60fb181a518640906addfcad2be4a73ea178c9113800ec6b4d965e2d4825c68cd200ed9beb8436c5a5c56deb6a961fe53dbbd8a089c9eae5f02f5200e59548cdc5fe458ffde52aee00f96925cb529349b6882eebe0ab8fad1b9dad27289e42929cc8ff9d951f369e7a642345cf1bdb1e71098a6be81c98b7f347db9d5a787db5256de76761bbb3e066da8e86ae6116612accb9bd731f9c22656c57d5f9ce57cbc5e6af8f446f6e474bdb47ac76e3616c65361a2c80f6b5f82493a1d5f5a6b1ef05321c4fc1a56c215e1c84658198ce6b680e8fa7f2f9d751240415d051de7fe4010f33c6d8a5a9b9b96c00339431c7efc69a06435ed602b92d984d04205d09c57eacd7baa328f2d7b0b5aeb48b0b62989e679d6936eb1d1f2f0201a74f6e393102fa7bfbce4d18ffcd8b1e57d5fe82f0de68ac59482d21a15ea0a18b2acd40dab2b4dd958187b98ec133a8adc642107a965cebb2fc02f905c96620c870b48e713deba4c3e44f4ca8e5d1b6684315f00f3dba59219f66586821e8c4efe28418f360c67d2a3ab507f89a65700b679daef6cc22dad51f523d2198b6b28c9c757237c237207ae1152e1b2bfd1488db103ef429c62ff0b0f0bfe820a0db4418587801cab34b352b1759d2195e2562f5fe2d73183930243ac1a8a470b68518407f594fff1f29b7e4910ce83c2b07118a3f9e4e8de902aed439c0e1527af5bf819bfeec5d82156d2f25ac86c5c945615fd1db87da8906e76ccb326c1a46e03dd26f898fe11561cfd7c722dbbac333a0c174f27645aa306224ee7c5f45098fb1dead6f3ab02d827d5098243b3de90c7dff496777f090565deae66a285cbefb5b7801980eea965d959f78c6b31415fb4283e32f4a0ee976c329a5a2b1796939ae386820911ebcf02063ae0ba20bc966564c6a0dc55b7c3516bcd5de448960b062406329d10359821ab221e40d606e9fe10fddb76db080b985201d79c9d90385d3220ac82dd2e004e6b6122f8fa79aca9709800b69db24ef756307d9cfbd1c2c3a2e292d52cc6d9392d46baca14e8e971bd9d96c7e8b773558c00ba2d3dd59bec7cb5b91fe93addbf8a4a252e97daa37c5d173cc9e02d654aa57f9f2cc20353c593cbaff60f467aaa874a3059449a93ec7d6244a83de7da49525c2201b9a14881996553ca0edf0c38192c31e5348fc303dc17d939e49d7c71b0d3b57a2c8c3eb36b43611894d8e2a5ebdcd554e08a5a79ca6ea0bef311b956377e7a3ce13a463206e738c53c3999782580f74dbffc4a091fd0d59727969f8a486b3be76e55583820638a5cf7daacaa9e912d93c45dc867de18b25a142b3f287cad53203af6c9bc2c6b27d434c9cf7ace29880ee8f6bbd1dd052e8d5cb92a7e135479ceb9949c9ba8d4d24dc05cae6c056d582d2fe2d1e3a5c5a7ddb53e6f27d9d3e0fc8ca137b0a8eb0d941206ffabe6fd6bb90a6ab847a5344f17df13e873cc007323d88df5c8966d264f918325c89127c5e4aa97f272c5204f35ae0b0fd89aabe06419f6b2a1a8e7b7446d63c8afecb6532ed9bb84c71ff5d2ecd1aeb42fc0dfcbd40eebe81304109ead1c75e295ab002724de2fc9ca92ffb86a5b888789371b748beba454725a15361ec5c1878974d78f653b5ed0d0d12eb7cfdebf6a0e82aac44a5c1f16babe20db96f991cdd9476a4fd07904a89313c85b395d09a06d66cefe9160313584b56735ffa18468867b33629046cf11cd49fb64c1f9f2346a32c8babcebc146089b8220e864d326d679af280ed8fcbbad9fd223e1d0d4e5b2f23ea72eb399d20bf0948d44a1ca676d5212c96b388864fa1504403dd989bb8e17a2d53a20e7e69c26b7eae8959bb864f472a5d765ed949758f0ac52921bc3d86b78ffc2eda62c54641db84bf7adc420b640d1c60aef7f912d5c2bf0fdf88004d8734d6adc510366127dca0c601d4efdf97e93b1e24e747be71d1558d334481c5595f971d4d290fa287bd1365e44f252d47616b4cc8902f80cc9e18f4f8721ccf7b5de85f60f268a3c9710c3aeb921ffe02deaf6202b0cff9ff4442b395791a1c8f2ea32a41d30a59a78d0e34c5a2947631cd9c8cd64cd96f4ebf24919c3aa516a7c7ff3bcdf1857a5290b3989543f41717b17a22b0427e6e2715406f32e349b5eade0577766aeaa23f8741cff7f0409b1320a44c0645cb76b10ed3c9e7878cb609d5624b45863311234bcbd5a1ad5b704cf38752b4f91dc6904c90e6b71ce4bf6a1c7cdc126ab03fe7bb8742f0ad5dc95dba5508f104f12eb298b279df55d1a00adb54583aeab3a644a2e96f0cd9a74da48374b2a328e9b7b646d0f7cc3bc82d6755036f78298d98aa600577c45161ded3c5181184a3a09dbcdabc14a43578491b004b6c455061816a95badac5ae616686dd662ff5ef7b80985e97948e7469b57317bfb9d0081b24b59ec64e40b8f79526c2f037ce74f43e68e0963d5e6c8092f6dc29061c329676334bb481aa27709c5069989a9ce342a212631f89b38e554dddf8ccda90dcb673b1f2e2f2617e7ebc31b2251091842965416ef6f8bc0aedcb4c8d1696e10c780d19c11cd09db15bda14f4d108ceb4d20276245d05518804951a96c2d6334683c1d9e57d325c126f7229226e9abf186249559917555f9f03a88540a26142e048bc82be12672153424c1e87c2cc18092adbdcecb14c97121329acf6139a81e1e0ae21a41f6bcf333b26e8fca7ade4ee95e868090e825889d05204638b2426765a4bdd9d2bf12759a973fcf1ce1f03e659432158db900ab7a319df8f6e0bfed3d00de7d28941d430bb17fe75e63f3453c7ae3304e3be3189f38c05594870a5fc9ec436e5c9800284a5b1c71df38d68e6ddbf065dbd2e1888e262871de0036fa5ad07bdc1dd1e5220ccf8ed26a2dd645f2f414c2d5c9025c22e6c363bb6735bc7b5505b1a31571b6c481e75e1b15476a803dcf825313d9ccb58ccd629236ce43b2b9b0b065a93f6dc25ac3b8e68aa058728965d2aa196aabdc0129f3afe201fc4759f9a806d3d58e57dd2e08a9ef3ad12801e4017fa8a832ebcfc9cf692a02c3c986d6507965b06c1847b9d02d0d36888271e4df5b7cb8d00512d703931d67cdb65c9306e058f7331607d005f34448045a7c783f8edc5614175881bb4f56c0cc345bd228ac2b15e08ab50c5a632441be3bb125188b3a4bd6d8b284cbc2bf09eaf0988cf3ebd4a857c11f1ba5468716fd6d88aec81810119e39806b068cbbb0ff5bb3e4e568f4d0326a4c0cf3f5fa1718150de23d868c13530c04cea8a48e5be0d92214413895e2dee9ce53708114e423636f60db656e02ce33051ce2f37f6fbae98eeda03f0099dfdbe86aa432e011aef6eee72bdcc75357c930ba3dba59420b51bb1b8f4c022ee08571a94c3cce58b1df20191b5023854648f460197e2b22a3faec24601d8ef87d29558c59f186d9eca2cdad3c2eaf544684054b9f47ab2c43c35ca5623b0f8f94e6540136f9378199f2aa43eeaaca16d04f6a8a3fcf48a8376d9bd8c84589918b6f8dffa61d13e22d146a1c5923b88e7628ccc83bcbf368c41d9adf3fc91be8f4be18495468a5684de5530f3214a99c736590f4595a01000b8fb799ac2030ebe45175e0158c39069d2e423a41a8ef123fb97dedd4feea3b92418fbca70aa40504d701364dba93710048fa2286077efd7957ade4854530b26145fbf4c3d23c506b4d8fd0e1466f44b7f1d72bef5b7e1f55efb54d12a74773a3d50e60617319456d395320b1489d4313e0cc5dc9a0004f11ad01eb66cbd50a42c50e35b75eba455cfa4fa70ed699d3f3961ab6e523d065e120c0c5284f34ed0e618565dfd56309167f34074ca6bfeaee1765ec3c102bb19a0fdd445fee4274d3bee86950a00a565bf181c1b63bf95fadd0c4c21018040badb7f6984c5f8f63af203400205fe3a41413591f76e82a41454d00d6ef5b388aaa4aa60558f166113b63b29685f07da3f1638fbe577a9fc32613d289a1bccb4977b94b28bb1996fbb2eebf96e7129b4b139985b988cc7d6dbf2b23b2b454cc26afe5e2acc25e95be7a4c1ceb6de209cab3ddf42556c384828bcb6eac339509882f3ccc03222f4d8dd171aefff10d65808bb5e3ff2556bbf4d7064be889160d19effcc246040ef3a4fc1e26975218b7add49b84fbbbdca09e147be7e6c3db6adcb0b2f53654708cae66d289a9b1a0acc71387f0c3a78f7a9d368dcf11e030beedd196f6d043c0ffab74d144dd68bcdaf40cc63fa07e846bb1ae4b0b02958428ec9ad95bfcd6884ae492c32a8123cd797d71bdab3ba2960a13c918077dd84fc93e3f661cf33e82eebda9dac900d61523e9824a330607f3c769bd2485eb6b827a107acf2ff891bc9aeb76e5f3ed3c66fdc58ebce9554525516ace4998d174550fb620e54969e36fbdd3c1481412531f9c167d2174a34803f01ec7ea95672f2fad64b2fa049721e86069ac6bc988bf45137860d080035594bd5f5e427a0cfb0018b6829cd3c73af2826197bcc003c4838742ca5c64baadc4f3711dc96506ddc880b129a0819ccc4a0409184ef897c58c6e3ef93b91d6892ea4d428c5efce9d74969e52fc147f9c7141ed61dace73ae4f0484d62f736e1ee84290ae815d5fe1a62c495a4e2212f42569d303d5bbcb7c5987533e913fe36d07b13ad71582a4bcbdaf418e1802f9cf7246a038a522c713924e2affd154c2ce31e841c184c21bf109e1155e2eafa8294d484cf09acb23715829c86fc177a848db4dbd5a40edb01d74e7ed5ad84d8bcf4309820f8f99c28b3c1b5fac02215795d406cb79df1aa3584cb0c251f0ddbe124b1c1a2d30538d004f10587d6066981c154d2f736417090c11062942daf017d23858b162533d45cbecb208ad40040c3f396a6cf8662070a78a002a140571b9c7cd2faceecb592912b88931b2a283a852e08de268510daa5e778e78d7443df07d07b5309bfe35d885cb57f2388417ed05165a60fd97d89206c6ab9cad70ae2f9daef40daa86b2f68bebb28bbd8e847b0c45ce44bc4f6ac3742ca406314811def4ac6472b46602ddb1897e17b9a9ddb159708088334af633e26a1effc7e259844f8457c2d9a15361068eef2db11ccea099777502941c7ccb6b3f0e17519c7b2e64270e58656cb685650f90ebc724bd55644ec3941c2f612260d07aedeea95ba4049944eba0c218a3d65de15cfc2f911a3b3f8072c78a72e2318ead74155b3664f95ca1323ab3d0c2c7aa3afe55904c478f18a49560b30d4969f23e8b7a85d67a1d8f9bb54f5ebb47043ab8569b402a1e281170af127e4d2c0bee61bbb9d1142c5affc105c790a7cd1aa85700e0fff9a6234012797f9cab24b6195c1a1b31ee4cc41502173c743e07b58206299edbdcf4110705a1b4c509614e572f2a2e03f74141903aa44a2083340c1368badeec961db98271881c316909148006203a5eb946c071f02c2d1a405b71e7f2ea2e71f2dc47270ce0d8753257ab66a03231202767d31d28b079a86125a3d2f2ee32b612b00051ad17c7a9faea82e922db52a4a0a8103fb7bee302b569f65b04a9773baf19a470d93b907d54b4304d2c97bf2eca0b9b8d30304857de0d1b1b4f544f2859df6fb879cf559210862cec6b263b535460eae720be61213489c1ec6c9b68c9eaf24aa84bbfef9074ea7207e73df5b2ef91eaebc316fd916ff18edc183c73deadfc34644664b42b1c5d2c3ff1ed1299613154c03879ab76cb00baa14121e7517c4be3383288b533e4da3c299385578a0a6470e0be06714781d40e26ba5ad807bec5894b36f53ed1bbc6fe76156b7101b1eca34e018ba1d7aa78da7b7f106e92cfee2846423c74fadd5a529732fab46cb5e5324312aca4fb23e88eb66c8f05b91c0248d060e49f49051d248456a698c1f9bf8a561b255e99312f00d224b825b5f216e21c657c13a56d923b1c8e8414bc9140889a38017a7affe53d1134db5950c6c6d3b109564e4e8bdbdb32ec6e29e19bb1419c971e0c135c15f00c6f091c09c90af80710f757d934ca8634eee3e0e2b8732d7a4aa51c632f566974f14ad0d5159660241e0086acc935fad3621132ecdd510c279541cf5ba77644e5084318608b55096ea9c518447046962dee1ec35e43dc933ba6bdb513ca42dd3d796b9cc3bb8a6b29e9bfcec620fbfdc814cb9016c9ff9fb30f5eeca341d7a42dbca8d85430b3cf3b06c9a3a9f77f457806cbe727d40b091e8b2e9b89683b1c36c3a4feddda45ddd44bf64ef1d0d1079c21596e0aba734347aa4f7535065588fdb2406ddb5eac4aa370299c12d782a23706a8ad77486cc50a41d3067bf38bc871e2e905ed1029f586515d239581f38102f7a766a7ca4cf67287c22042d9b50f5691b75c1519f72e562fb9a484c011b90361e7387f078062d28dd4d169a71090ef6d6b0c7dbce19426e2e44fd1be05882764157c9ba8ade6ea0085a65e56cf0a0d42c9633d53532d5218a21244b1a5d99ec1eddfecb5704b30219a0a6dc18a8de8c90f23e35604046687e4db972e3d43161419c3a9d8310008e009a9376be7e4c7e908a4cd8792bff9f3ca6de69824735e82fa8ac45edb51fa253b174f45608d24cc1a20448bc5bf1949405fad3cce32e4054e3b35ea7180739817d6c84f9a82a1a3d9654ed52fee19fc27e5bdbc506c4ea34863689c0e5d9ff2605c8a6a7fe79bf11d113ea6906d5c0eea89941fe5da4d6fdd1071c3beda1047fb0e0ae904425ba5454c6813b360d3a856a318b7a43c7c003c0c00211bbbdaba0981e49ac95c6c4adddf030ad62b4678f912abb0896a9a29828f988ac4796e1f8b463b9b27c09b6322028821133e17051db365eeab68495839a02365008b7a42f8742aabb61dc542d62d127cc7f59c0150b82057d6099b562812f3c84413a964d3a3481c3fc167164a717e3d19ade82487e7daa0c9657fd9af39f558de558bfd137e5ead0b6c6a6d0cfc1c132cc8097bb7010f35c3dfe6ce915e0f405c9bf6ce336282e441623e09cf0655fd238afc8e4d85bca31ffa01fbfcf30e2183fbab7d0918b71be04b27841abbb464e298fe50b06b789b5be8c71f5b39e23d2ecef0db2e18cd0f77c23bbdea6c1647ec48aa6836d829e1832a9bd9ba3fcffeeb210c291c8ab3607c902ddc47776021a9c01c002a00d76a4a97a0fa169fcdcbea837a3cd9d98fd50ca7cfc1c66b597a33cc6b311d0075bec85160f6f41de1f5e72cc21168b9ea3e3578b3ab58f111478855a79f079663aa38bc5e0a42336b23b4dd28153ce033b5e61d14b199c590d0cfe9d331037c475f5c7dd20ed3aa43fd43abf3c165dfa060e709cad1feadc191064ff4496e2442dc6066914ffa019c65654b4cc07ca53a90e27f9e55c82bed8159cff3760b50fad9f8c3e44249ad1679175e909e99aed2375c98fe12c33bb25fb9856b8bab434a3e264a970576fb5f6e7d3f77003d3d2cc69d4b986d798ff69616bfdfd6b344bb32ba25756c48c5a91695e64d7e964eab2da656946a1c2a10b47b648d10ecaf64f331d7892fe9bd88ec4a220cb229790e7f5f497c31321ec022bc278d0ae1980271aa8398dd4f67487e58150f7fa2cd896cfa6c803ec41074f28cc1ab5a556e1dd20e48461bbb866b0b577cd451fa1bb90062daa21f6037ca31de5d3b7fb6914bb44010285ae4a69852829635e0410d4a5ea57fb2719f3a1f480b3cc5765cf55ee77c88eb91159613858f5ce7ed9f873baa08950d1cabd07ce00012ecf87f32acc21efa782dc0b1f6cf8655218a29be0e6b2b694e749ef2de62ba4933c374717a133d0fdc289158b52fb10762b8a6575d362be423a650b9719548d77b521144220e42716212681a2cbae73664c68aee33b5d2fca2094a697b0e7183cf9e461d48cc1d7e636e69c28342337a7a902e704656cdfadee8688085b233b0b7e06aaff62c8d300fb696bddd9061591a5a2182ef7ee1fe4577f4a144b708c7a9604e58e24cd7c9f67591a220652a4de784fa747d7a46af679c5f246a64067f682fcbb238847f1f373752dce3d22064c3e201a92637c97cf91bdc3c85ac8a8ac59a00d9e44a7b604829625ace750263f845e40b71410ea86a75a363572c8fbc1ef777900a77aa606e8f1c06f92125255fa87786fab333b35ba27498c9632b6acaa2b6f8e6623bb5fbcdd978a0c1d243d9a03e9c8a4366ead501fb28c1e58866edd194e26696f351299f9d9e968e6e6bef85ab305ef2e44ac5d94df1feaa230664ed1629e225d698b9504e951e856b19e76a65b927c19e9016030ce8c0233f7d64864f3b2d1d1ac9b9b42da6605d45b385bbb34b1b7805e69799a46cf1de85e46720c0a9c33b7e0d89d360ad9fc2c7434e0864a38dc5c7d9184fbde896dd4306f266176d1e9a287741187a08e754e3ce8b38cd71549c6de3c7b49223f187c247911bc48fe6b25f54091f6b69918ea024eb5a1d762a539cd791059495ed5b8649e2705681033d33ab107e469b4c5a38de40f0d7cc9fed105d4cec03c5e81af0590559d773cefb6c2f6cc4064e91062483d5e4594e17e93970eb9a3739f204f94064b32515b57a5bb73256e6836056653796d8e07676a74540e1ec6eca88db9f9d396b087801ae6b66f358edd4fb4617e81f2bc6b05eb2a8ba231aa983e3b56ed9ba57cab3ad87bf750441a88deecde89f2db333f5529d58f722dbf4869f29300b73883dac1390e17d62a666c23340680183fb6a707c9b2f0b6752c174a5626d4ef53e00479ce153d4ed5e769b5e80f88d7b723c77c5e091a71f804be07c5d9f0d768b1825c675fd1279b45a94e88009ba1c7e88aca352084549934c4b4007eb858b00bb22fc5293a33bd3d706f6c4d15033db671aa94583229cbbb6ab42930f44c8c54c4f561bfbc64ddd34f689d1336384ed0a8eb080e4a02eb2d1a64784181336386c7aa6c533b88cb67c9cedf49c0cb8f8015d434674db8d23c376f04a7b012865b23ef54da22de0d38ed026ef7d6d807dedf9a00af3defa5fa871ee02a6907ce7c7cca4a25fb44153ddd65c880dd43df7b808db73c89bd6d6f0f5ba1ef29690c082689d32032b7e2f3c397c952031695879eed8e0b2b361e21734a42464c5bf3785fdbc2d2290f8d1fb3331bc139eb9e604d31642b188dfc107785b199d37d4d75d1c2303038c9848239f76e24b2f2b2e96bdcdd4d613ab307ed2e44ad5d90b357d041565e365d4db8b98f23da6600d82d945a5d22b34721b7a258beba9503b2cdaa9b12c760c1eeb8049d2bd6880cbe6324c4fc506aecbf378f5430b013152e01fed50e32d6699198b49a78fac133a78f851803b2faa3b6292b274c4a21d922ffc639115a85065199c0c488cae3b526f0ea033f01aa3447dde8a3f989a18d50c1b8d94f12f7294b0cf9e518bb09805eb8d66779b84d487a333af7a3cfc3c0be0673987c7a5c45801fe6f2a15117a28757908abd5d7d4db7417deea1a864068c5b3720e143c9c007e2c61b8c11b99da3bc2ba6e78dbe22c877e5fb67da75d1bfce56a9bb5355a1e46b148ec5d908bbefbcafe335db6a0987aa3a0cc5fc00f0ba519bdff087fb28baecfa21e4ad2911924bb63393ade72797909b84b1faea9ad5ba86ef3049ff3f548f4e755365d1ac1dc104c6d560af70e016bceadfd883cea9c0725e6a71cd27f2488cab7da703f043e02d0fdcc80f57c78953d8e777e6d61151f203ea8a8e4984f7a36e154b86b118176dedb5c2685f20f630c208686659f23e4934f83c1b14e0514c98d51d136b2b6670bedf180d01c031f07f2c0e025416c5a9bb77c71aa22b869dfdce1f061e1a0c409ddd824e3f73e3e92bfc8da50c83bff19aada085a760892bf68e8c0dc69abc312836303e2ffa43a24af8c626c4a7c908e69a3025e1ac2bdea7f898986cb28657938d5b26d31192f819c555ca01d73145a0e8df0fcedd401c4d6941ca52ba8859dd628e75fc18b0c92f740e70ec268d2d15776c3b89a0b36fcab188ae6dd8a1d9fe205780c4915c9a9f698738b3130e207b841f25e118bc762c56fa8850d5d70d22bc43c941c19132216788f335efb576f016121a2d4e2285c3512aa843cc371c8fb1f169ed0fc1aa94e1a05ced918aa48e580dc4ce779dd4cf6cf8c98d0868d8e0df6a2dd32752503677db134bdb321ddae657f6807c005e4249b6f65fc2ce6b9b22df0d4053d2ad71a92b33f078b19111128d380da9920713e8205b8dbc81843df9ffd7ad39212c96cbd433e4b861a4e151e695a8ffbba09c2df69864a8447906f8443c8eb33d788d4ea498e7ad0f7b9351e99c4612b062583162cfdf7659784bb1edd7f95b7f20657dec38e52c8cf34daec9739f7dc2c391a6303452df0e290c855f85712f3366d190861764e391886135025d27b8ca1f824e6161a2cf12463a5c88a918162a84d2bdc637c463ce4540f6925eee7e92f483cb57cb1045311021110357e4bc47e70e6e903086ecc6afa2572f7763594f713e43872cfdc0927d100949c7cb0c55b35f16806b35ac2b45fa015090837424a3c0344b0118f66cddcf09724970341c71f00ab6b785520e7d6dd4648dee507ac55b285c9504e941e856b17e76969771c56efc450789136e1d7ca62a39f792c86274e394f98f2fee8cb2c707c07228d95c6809cde5ca34cc8d90fe6bfb15a162035b1c026fca49f309805c538a368cb7d1d54b722512b9ff0e65c9c6915c8ef548c9decf6b3105dc46100f59fd2acc6d54884025d1bd0cd3115178e59e0bbdf4c062aaa5a543db7cf130ed1f84c3605f2d720dabd73c149c2c464d68e81417f7163feea00368e0370a0846335d60c47de84e91fe0ba4b222d6c38d22b94273ffb98099995867de545342ea1ecf07fc81d462a395471aaaee780099f8fed1d4728dc9a07f50b6572950350a321d6002b8204482103f3c472218408d0b1b9638ba48514adc29beac554416eee99e70990c095725de64369c6913801bd41dc0fee0e973bb96617be54aebeec1db8b17d70e1da30dfa50c6fab3f7c274d8b4b2ba723e09ff69ec610f8e285a7baac0f67105e4897f0896db15d05e78055cc87a4e0a20a49e9f8bff3bc542a4bfe5bcfc765a0bb60615d08718925f35f96dfb98a879bf72961ae90c4301e539a48eb230af0338a7cd6e9fe3e58222eb4df98480c55f21b5d2ff27335392d202b26959a54cd4367216562c7e35e1acc6adec31b34b36b95e8ddd5aa52fe141a8e5be98c291de2502171a72ab3601b0fcde2f7ef9cda14cd6d1d599c8fdb127825441da109a4815b4e45b16e097aa4140b09c994206770abb2bea3dcc524990de857c5fc205af7e31eb942d78f4f8c24123b1ec37c2263b1addc984e11a36da52fffe8b96172250823eddb214cff67a01493d48795fb8cc4dfe8698ae3b9fad30e25c66b81f5ed1a9a6ecbfa77303f8e60e51bf09a16ab79258f53fdb8d9052970988328fa64eae39aaa71cf89daec1bbb3e4c6b85f362f6717a4a7845308860e4f3b43f71c0a1c1defea3231deb30898b5696f4bf2212f538150d31e9137196894e15ad0cefa23166626910309ade3c5555265cb6293254275ab77dcf3291938f2d0451f3cc45c323bf63b4c54222774ad86cc33e71f489d0de051a0d881dfb5545b8993eaf570a9562f4899f696928e959656574ef7a3036645df7c6008682d19025b3d02d3e2005fbef9432248bc7af0e83ebf0fb8455b9054a6478563bc310fba0d135536e3f0f37c160df13e14fe3c7bb975eeed82bf2d1f9376a0e7235a855354f2563915d279abfe842df2ed97960f76762615a900468fbbf916391e38a2e158d4f65dfd047a44977242c80f20d562fb54fef3aa0849661304f19e280c3443c65bd78ea206e4fa1658ff78867fe1f23d005849e8485a0aa94f35f7c33e5667b790b5b1a94ef078e55317762d7564f025bf991991b639add2d22032073dc38235e23387bd70e0b6735ecc5d46ba5a3bf86843064f86c3c976b52cbb32f46a9235de840cab7293f65e2848374a525ca8886f7f2d40d3cc4d864358464c0776b1d509752c2d9354cf16f4b6e11d97049c774312cbbc35f0799345d4dc84c36755950ea821d0d9bd735ec1fab7dbd20e029c9851530833a3104a99939f6afada54b9a24c3bdca56b6d9605a16d2e7bf37592cb9003a7198aeecafddc1dd477a63c2ac2486d82355cef53b529fc0645aa9a4c9c21a921e39c3d9b8f281a3026673f6de6f701a4c3c7079064cfb91800b417f73ffeab225d54f96fb668f9ec9c556433c6195558af7a92491a4f8487e9dbf0de39cd03faecf69789ed19f8ba8b9b1d84088ad82cbd9893764d80107a630c4038aa646912ebdbfb7b4de5c99b946547e2c91ad45ecdcc15b5cc048bfddd2d6f3b23e74134ec854567521134a1ead3ad3d6f7444643eb4babb5db5451b54cca00a06e5561631eb29672912ad1c991a25696195f6526b71648d6c745f3a47d7e8b295158409aac2ab43e832f3d9fad79912871212db7e51f15e52727921a99e0ecd58e4ea671dcda73b3c461963117c70f72d65a54b3ccb51e195a77797a78f743e2a5bd6fc277987f7f4d04e717b29039bf694159c122afcff8ce2432ca631593faaf4fb212b06089bd7814b443cb26b32c36943156d2c7981979d1acccc30b4470759b91dd8a44631d868c94e6cf9ed87a11c32fe92f2a02a13cdbda00dc803b3e8bc6ae3a78f7417d97517605c8088243557ea53a880b05af2241b38280713bc3471ed1916b43723aff02925ccb38c19776d47e9fa50f7c80329322f65e2fc421f956d640b3f751ab719b1124b531454647a0a195899a40bdfbaf89e6a0049d6100bffdf4919dece9fbdf15b5eba409a705ee50ac4c62a10d49aeb4e06f0d1cd93274a672258c1d4c5507272d44036b811157ec62882cee6e09df240af94a673a2ddd01da4195e0914807f55a6ddfc41ac0cb493e9f14684c630aa71064bf66312e5e694bd6154bd5466a394c56613ce6c6950a2be392cc36a63e4a1c81bdf2038a719a1b78ee787678c8bde088a65adfb7eee3296867d90cdfadb4863bc033f6b35b0fd61fdfd7374101a00bbe177cd3b7d8c70ada892c7e1d616186e55194d74b77bd21c3856e749a59146654508b123a0801b6cc7bc9b0d029ab02af7583e26301c2790e6c27ab2d43731449b439867889dbb136c6fe521ca450790551a9603761d5737f40a6a3afd79b3f19a428d79b8e38136d04ce216e076c274d5825884bcce9fae8998f21362d58959d2ebe58de3d2a071c90c1466b027c90c0680d367c0fd1262f419a0c4483634a5508c2fcd47060e13eb5e247760e266d3f8f216db79371e02db8edee8b40c3a9a4db77892ef5aad8b2a80475cbe5063a46d7937bdd07eb41a9c1f12e7061ca651a481ac022b715e4c85b4929bca2493f20c212cd226f7bd09f6c9e37ec5bf564fd482c65ade0d51264fcdd6095837fd96d1a9c51f1ec513f5b4915b40a44d2bb196d86b0a709cbbb5bf77e21cacb37c9f2b8ca6ea97ff0d997dadd852910e5c613ca2ab31025ce3ee5715084209f5c9ebb51cf51e4bb2164e7d5b48f958609ff7ea6a03cc0a5712752b1a0356c539e46b4c49f36b695fd1adeb226728b53cc11368acb4c08a3bda4ce0c20c7638f10a2ea378909dc2dade0ba304f46a145155aef121e5ecaca085fd43c322a573b14c956df70699889474f8a4747f02a20e4a5d1b4f64ef45365bc503d6771a4c4318899aa4592640a59761c9582818a20afab56072411427159a23a17c3f026c45b3328c8071c7a4d3131eab9ed260883967885388334e4f3b9d607e6a23fc17f3225116d289005ad2d01b7bf8c6cfd879013fc733cc0745d4d287b7cbea407a6293957d7217307b01437c5f7b734c0de6e2db10dd7b330bc2040c53fa752d7ff4f9e11c184b95035026a1b8a2f8dd0d9e2be5006af47b556322b31ca7bbb9c541f634af38e2f63aba6f82041166a04682b1d006a2d6351d58933fa751c2e885e8c03751fac5c4dd85558341c0923b10ee46ba93bab0263bd9ba5fe54e08c3453aa1243ada2f7c2eb7d30b320fb6f7c826f4edd6bb0886a16460e341d6bfb8fb68a235a744fa352563e584e988841f08d1fe59e07725ad37e93ed870d1b1010429c6d39d4208868655792907ff413a727b36fa3e0b371b9f069c70d893caa56a1db4cbe90e28e4af3e6c50de67f5e9863d60435f27b704eb85e8bf22cedc8157a8ab1d08c199b3791c03ecc5629ff04a53dd508169bccf52d9c20146a42bb08336c3ba22cbce21b3ae02d8a523958392cb693eec4ce777b1afb73667500beb56d0708f7f98e55cdb6b6a638d0f8d06ebcf4574904d9b02e62dcbe4d76fff09d95359a204463c1c631211589e75fe91d74fd35c270de281ee5a1855162146d592caa84a8d2eee976dc32bd5e9bc9099764178a7f94016c7a1f5d2a61aabcccc42877f9ebdde5ee498780e305c706d2e008b119cdc212bf5afcabc2a9f75fe641721aa88ac20347b50bd784c68aad55eee4e06812aa31ea4ed438bc1b69664012130117a9bd7b02013173594ebad5ff0a9150e5ac48b12386b216a04502210b6576cfd99046fd72ff126c4a440c9895295cf6caceb0078d85928c15f0bfacd405f2774699c2537a4412965a7f838e4acae48b321ba3330e51db2419fc0c8888a721ae5a92b2857801e78b234c2fbfd409de1e7627400cfff9a3a6b0349f773fef7c8c9a90abd14003d25b1485214ff1ef0f741ce522cff2034619439ce7e66192f60e28b1e91accf8b78a1d8068c386c17ed82533d80d64c453718bbb9eb336ff0b0bbf7bca81a20570e67401711fa92407684ec966d491a8a462dd104bd59490eaa058826b3369e97b619d1648bc45812f108a330fb467d64d5a49d7c62b2260c10fdc4671496ad2b6088a659337771cb384cec944dcab7fc43e39ec1e3a0c964331b6718915ed6aabb5e4d43727da91d2ad83787cb37b0e2bd6e8786f51c7434212f8e2cb18d558c307d1d94021668392aca574d3376d830605f1ca2095933000004c0c8c04d5fc56cc1ac9e9510c4543bf327a58d33ff2d4d039645205da60b5cb405de32ea8ae671253c53f2f055f092423bb6a49cb75088274cf7a7d41f7a101de5c238223981bb35256b2c0c1bd7f0c9eaf55cf9d413faa3945540f692f633a17578f9f9fa30d49f26cad71954e8b509d849761d9d1ce2d3bd8273a2d72307e3881421c644532e01bb601932b43163162fec6f0643cf84d0737cfc36a7dc002f64da6915fa8c2491f9f54d8d47aed8a213ffbb02e1f5ef3fe10694531be7d7b331dbce27b516950d0a8d2249a231db2cf72f616ace96193b80a07c3af7c82ce7107b896aa68c72432c497628b309fa3ed07072879970ba80351e86c5c3994e56b99b82b3b67c0b3053455a82bb8e51db36119f7d2eea013c5eaf5502ec370f9b93d58cdfbbd604bd5a620dd3daba8d0943c9009187318458440f06cd38bb59765b07380115229516098d26b8ca2e1b61522dd4a8c8616284736bf7654e504745dc33155661e51f65464ae113bc25a7f2cd85ea86d541125504f2b68a957573ef2e491896dd06361103d22679133352d8e009f9b7978fe7c48b1804b21c063c9182b155c9a6f41d6aa2d877d76ca1434418642f68584e9f2913bc37be5e0d9406eb6709589f4ae3c1862c1af58fde29f47cf6bd9e09466a5bbba43c9c8081b1e308478efa92d377eeb4c43ec33b12b323d65b1082e5d5a0b01f19140d7eb6c5aad940069e0e95e03e26c717fb32ac6d552a7250d33d12ca681e4be4e737d7772eb05a7b33e1f9775bdbb45564a41615b34e885be56fac54c13d95cff60c4be5563ac1bd865b7849a676b004020dbdd8e1ae86c031a336b94f0f63dd37813c6047a565eb4c20d6fad34ded826900c6a54d6f256081e890c6eade363bcfe0f48faae3fa5c141f74537d81a9d9cea2f71bd2a884f28c0f6f6e95577806352dcec8caa48e367b259bfc464364ec31ae9e21dc3055a7231206a05601ac57245590abfc5d4345daa1fb657f447becec70b35fcfa03f056ba11172a3356845696c910fa9c3490e7e646fcd6bec861217a1ee2514e8bdee6707c505a7a741edb5ae6c6ea28a31365e06ed52684731bf667ce4a142ae4c99082067c15d1164c8e570d92a918b777a2259ff3419ffb511d161833dee169d09afda39a1e05a4f399878e2b2689d49b4c45563e9ef3a8020acd917454bc1d5805113553e6e0dded571114208aaf6bc62b204bae0c42531ba6142791a8a18b0ec3588acbb46ec1567bfe96a9a11845775927b2f02ff3d231955c79a41c7072cf9814261e44f39a14ed0f8f225828a19d5ec2007e3c4943aab35b8403f8acf12158d8f35aed1fd9ad0d837e10ef6031922ae82d389463a677a1e2cfc1074360947d9d3772a0ce935e3388cdef0200f7af9678ca9aea9e90089c0f084e86f420771223201d83bb345696ff2d86ee242900d89a90160ae6ac893b5998c8c4fea4b009c97cd3b5202147107710857988ea7c76f244a6c8af1f7a91eea248faa8e61f7338f79a02040bce843c5a7e71116f414902ce87f0a9b80cf29cc867ad95abfcab6f7d5949125f19cab35bb7ec9b9830bbcd0071ef4bd98e688ff4eda5653f77feb14a4afa63ee8790c7e34af6f3814f795c31eace420ec67ff601ce6b0531740b87490d7f52736c4a25c65733adf62019cd9da379d6484c28bcbf77c42c9060a8ce9f65bd6bcbd24f8fab2f24d8b5a0230b63a3c60ebab6d6a3aa36e02dadcc78002cb8382d80fad7f3b746fd37d1c1a030b3529919c95a1f3a5f5b62900d77a1a8015c0518f307bf6dd52d5a67d022ae274612b30a4bd5b06bd25735d8e5993ea5c18ae7b479f7e5371f5aa95afeeabbeb3958b0d38ca360ed496116307c6fe05c8333a433689fe028c04c81bba7ef7ebf30316b2dad904f2c88cd52cb2d4b28eb95927175c63b3a38a15f38330434d0710a97e66b0610391193715d51ca8047620f43aa2b8eb25f8255980aba33b4dbc02195400a62e2a60d0c83a145ec88391e91414a02a355d601df66ade7f6d915e16a46b52ec34907c6f8c52834b0eb15110ad4f872398f845371000579be7ef52321edffe2879f747093143dfa78bf66fb4d971b0f0c4debff0c29df070a2eb44f254f78f124d837286a100a0a5b9d1980d3023c4264af1f5bba9a484f1fd64b71d2e3a2a752f3cf1c25ca79d4899b9ba66427c7414f54a20b0fc32dd5e14a91b4369c51a1d34f4975ad6c4607ff91b1d3ab8ab1540d35ee955c3520f9bc7c813aecabba20501052ff56cc1eb6ad718dd7e15110a00ef4bcdbe11251a9517e42328be4e1fd74d27442b7ea027d09265d23b03a94a39fe28d925067b5a9bb7916c43fc97b98e2cf711b28d9479cf64755526f6e3ff7a8694d824758d4228744922e29824ce7c2c3631915a737ff1920c342d4bb625a9446059f1bebeba5aea204d6a700afd12b5560da011bca7c213c247caa5f730ab10e6fa8e202a628e3acc212a0602398e594902160f9305128e52cc7fffc01f429b03f1bbdb7d49fd242169d5b51e60da0baf0ff43056a2e6ee79a8c4dbd62d53ba865d4110ba4200827fcc368717ec650984ff58ee6538b8fd4aee84e49286925e62bb7654670e3c119046dc90a0c77767f1570eb595fc192909a4ee82f778ae6dfcbc6da3946e55b87e425163ba647da213bf9de74f77227ae486f04141f0b87aaac1c7d014f5666c351c2cbd548600bcf6c8f598379c2120b7b1cb02e23121121316cccb45b89351fd96bd3b30f9779ffbe0583e91d8c2164ff7eb2db60ebf008be91b8ab40e8f5cefde322f92aa124cc0bac5cc19d172d58f3233f2496da02891833d60520aa60dd564ade009429d1385ac82839788129bffe7c45c51b243c57672b8d5d58bfc337cbcf774a4651c1697fcad24a4d9939c5efe310b96da037c8cb1ea408ae5bf33b053f25d1670508d489d7b3bc482e5455b1d0574f59aa2197db8ddacdfd7fc6f9b456e6c92622bb1f036c286e9659eb2e686ecabec1f5e629d2d3d056306459754991cbb38d6e1f59d7b24b5d4b7926ce0ddeca7f30396bdf3620c71c9a77c46fcb09e0a8204b9dc84b05ea7a188994bdbcf9bc07c3b78fce7e0b15b43e59e6d2ff89b3702b0be0f599ecf635f119768fc430bc729c851b2e0d6bb8d75214747e2c3e00345296e453dffaee471588b9ba66a7442a0823d5bc6ef8f04cae76b7cd67b8daa3486e7b340652377de3ffacca067c61c734fb08d76cec1ad1cc7019a9456d634fe0a70437f33308d613179b6b254892ba25b3b71a3be43144dfd923570d95620563f9fb011f29d2097effa399a46680977a023c1db8d20b729ee93bbbb64b9d57da275664e403abeb80d9c548873cb690857438d7c510e64591ebb330aca399b251c5c58610bfc7169a0aae3a86dd7b97ebb8883d305ef329f994c5ea23395d9053b7ff527f579596c7a6c0747c5c61426694c4439eb4c1b82c3fa34935ce0935557746f3d9332429b2a649d831c257837da4b7ffa8053962d879c97fd0348cad5954478d473b5f4272fe47dcd43b8309270f91a429d838717e5b9ceaa383c7b1f1d01e854b2e7394b3a3c67f67b56cc43596296d1d2fc9191163355a94466d1f264c36664ab7719a6d3c644fb52bd381e554d2d7e5e5219cbbae5ec1b0fdc0b8f050f608cb5b468a95009bc470592475906b1805b665ca84136b950c666a1f24510eedd17ea74eb99d5950f7fcc37bcb2802e2485d7eda143a1ce2015ab34e8bc18a33d97bfec9df1502244bf6bef3cd581407f49997440f2a255fa61be7633a72fe9bd7ee74ebb849f92b9f10133648b7f89a3c8201310965451692d1e0312be7fee5167b0376644f0b9b83b6307f300c97f439fce77f13894ac8a5b0204f83ae0dd92f1c4d7a8739a7616228ced030d70dbcbbe401fccf78d248388d06cab27397cf0e840025f491614921bec20ab009e8b4aee17a18e9d61795c05eb34e4a0a8c667e60a88cf488f56abd1213403296e2c7e3adfb4373998426c87914051fe12602bfd26786e2497be51f59ded654fb72068342f77e2867bf752cc5d906ecbef79cc524789cfdc69e1719f2a5ce55f9d1227451afa2e55e389a5da3f6dd30859c80c95433257429b298efa85748433721ff100ea9af59d0d0e1da51611a010a7116f26b100a5f1ff18d6b7d0bc03d6b3ef03d7d98b756e641917e9383df27726b044d9c650ccd428e6585b8d117c491a2836db2252493712e2c6800a6ace796b4fc012a66a35c8392289506bf2e18ed0f095a533edfbce99d72da577517b09432a5a1e2322d30087e46982ae7e11e26cd10439acdc8370ba4e882c47d989548b13894b081b88a0a9464d36e00067371f4119d505a881223f4d5883e6a881716f071ced9e39587629baffa835f431feff5001b4746e9e91b43e2bae8eb43f5fc517003ad4e259326a1889d59ad9ac12c4745b2fb0b2e3de4161d7d09a0f9a2199644eafbe9b5984c580e24caec69451a5b61e6689f4f399fa78d2f7c58388bcdf09bb31d43c185edcc9ea19e0e77f83d4467e314e458114d5b3b1c2a35d118a1a608ca3bde1fb840344f51fc42f4b851c021ab6330a660a0fe338d484dd1748631ddc30fae8b74dbce90c65f8cf026cf2162082265b1d7965d5c8d695cd3e3d67a2853d0699b3bb1b45d2102c200b254762924979b53b39aedd0ae32618614023ea65f16c613c499fa1b68c5bd4784a5402b87f42152af79dde6b6e52e545e0f1cd30bced0888484ccfb3156788d97b926c95e92ca4fcd85b2787b6a19bf0814a83a7e526a01b5e8cc2f6c1a45685dbac10e662d99d0d933e0cbd5976d1039d9e174f3f8f4c13eade269912eb5469cf4aef9f6b2a2e83c9e4ef9a6f0b08923f486b4ec8171c60dd3b75986eb9aa92170833272f4b387541cb4bed7d4f2e7bff02aaf8688837e2f4d7e7935c9893365de9889a019aaeea36c7f22116a8a90fa6d6900c6836700bcdbd3f0e925f8de9aade91ad8c041c1c6f383f13cbb4d6af51908719c27b38c0f319b95ac78067921ff1e9841f1d2f8019400213b5ef86ea38c3285b5f85890a2090100968647f86db0c8108914a2406dd5775a79d84435e4237f86c825fe6a1ae9a87b86f2362f8004d5a56df9ba9aa85a04cccfe02cd86df0db1776bf6a0d4de476f15582269ac9759720712d08d4ef7ac8470c96a2a5111806b88c2e127b4db4b82985957a432ccc1d4944f7cc42f021951fa376300c8e4e76145d85815a97ff4316b029c45898ad992a1d5ecad04fcc4515202e3d097d6c653feb39fef7c2450f2f2855c4644c708d7aa35c214086c6aac4672692ec910f2a5fabd57f0b1966e8c8d24deca03b298a3c860b1d510cc5bfeb0b2e68aadf7118cc23e8b7918cdd85e107abee8706188d49e89fbb6fa4a8d6eeddc3dbd7438f1a171bc6970aca71ef6c177d87f3f10855a24553c9a2463d8fa1620c02935c09188768d9c4465f09b2df72b7a9a1153adeee4498891041a81fda35575a75bf3f1841a6098dab18c8a204f96d2249795463adf736294384d0225d41fc084af253118fbcc3badabc4f5efbfb1d82759ed3e5aef106fdaac47c3470f1b4f2467c5681d3780944db1bb73f1450a3331b9f6b1ec25c2c9467b86d6d0b14b220d13ec86de7630915abc74c6877f2a7ab2c14c6b259546645d1d6a3a014b4e5550fcb835e3b1d01bf93fc885cabb58e708bd5567f19d60346c89e8a34d2b255b853e17b81f525aa61113d95991ccc1223daa29cb11788d86892502c309dafa734b15abdc2b75eff37925ccfae4fc580402f4888c1fbddede51762f14d7c5f11b149142bbf4812e9bac7942ee8826ccf5cf65a58c7814700dab3ef382875375b017b4455dc7a7babcfbecb3b06c9f6dde31582439f86fa44627371381916d68d36511273295706b02a8100f897dd5b1e3f978fa56f14cd5e37f412d21644ed10955bed31fd3b8f568b541f8b259901365b546fbaa4f922ab9c39d87e51b01b3718db543e1e296d9798a0dd564acf24a5994f6ec18d3d8c0378a85d34cbcea9c8f7f16d383840d36ed2f0ddc4ff17ebb9140129ce14e1710f8c234d10b63bc2d2f2b73f765bc790f16b6f0cb3656526289145d8817a3dcb592c894a4b3eb9401c5015f0b79550eafd753a8992b4b477a8a8c5fca09ef3a1b65db3de65035787d5b0c33e9b8b5dc4c48e02b0d480c960da94019ecfa9ad0d695860f86c58924917fcea2853f9562a8bd49841ee2d7b3e75ad0242c07c752ac0e51fe6971eb7fb34b7be94c5182c9e759c087efe5f62536bd03e30c173a1307e2d0d4d0669847ef898563b72964c72fce3284322e8a93745c34dedd07e9ea885b20df953dc1e04d07d4483365a24d8e36218c02e77211b7c5fd1e5a435684588ad0a1228a0b7454c6b8e3695e7610e4ccb5f39dc0ff7330f725111ce0ad71d917eb71758339e0899d12f146da4bf655a2c3aa5b8db94c1d5ae0271b5194904294618e99c02aed9f34c07560b30974e0cc40c1b155030a2ddd217ccb0ed9c8dcd97ad2a63479026a257c7771b3123c9c165fd00944898ebd0b56c34e847e0682baafb1ab19630561d8ff82446ca973d8324682b64b4dba8368a88662f96cc977ee8cd5eabef942756550aa62dceb8e4cf16a07285ef673eab5838b50e5820facb94a5b6b69d41d9f271768153027d26e99a78c68b28dd9598a734e8a8c7e858769f6c465bd88c1bcdac6211dd04ae0a7e8634b5ef74a9ef8cfd95dec7d249d4325953f7e66e81cddf1a07e81cbf492721e3c215189cced8bc744dee99637552c5e6e5e14ad268cf7249fcf9061ba537f5091952f293db386d46ca81bf2b164b41562855c9216f8ce85977b0ff0d0d6644be33324521618719675bf4499e945f32f6f8ec49e69d38e3a2db74d6b9fd704caaedc030ac9654fd370acb57c50b3ab62e654824ebe8a31042f5bcceb271f30df6aa5ba79c8cee2b285d8ac7bd3a1bec29b034f94c3c01a097493a56d5a2c450c383468a5ef498139ba583c69ac49438f1796bfafe4419e909d25ef208d3d0332e986f598d22f81e36232eeeaee409b3d5e6ffa9d39d722425d748b6ea707b2be166acba24e2d461abb9f6e5ab62b0a54219a2b6b41f9fa57215c4f12103882324efa2129189f8f8872545428c4a2eed24423c4771f6ca47eb67bc1742a9d0f0d238b1ef63a0b0931803010084fce19c12732b46f86f97a86c918252c19915fc006b1f509d68afff9dfe0d76195bb46662603db8dfba9121e7dc2c2866082701891049033a0ff2a1840b2140dc6ea90b12825c64abcc352a9345a59a62c98f6bc82dd860fe89dd3aae9118e31c1e7f7ce4e556d7fa5e359f66321e54ab0a37c0a6ac4eacbd6d982337cada08de8edea878db8ce23302bd41271e7fa3c03e45e56d34f540e139108a0cad45e67144dbcf54bc18d2c94898baffe78baba9ad29fe2142f386175b5d2eb00bd7dd5f10e961391c619ee81b30ab57b9adc2c6585ea6275dee800d3c918a8a2c236eeb630a7f3cc82dea38e39658bff722e0c963ce3400262894aa250734b08a9ef01a28a1d84cb07691892a14b193a73a37c2bb6a07939217267ef167c4b677426316ca886dc43e89303adcf4ca4f5067d393b4aecbd7ce2b61c932056faca81c737e353a1113cc9a84d14a7958ae385b2886d2009ade3c8d91eab7e4a11ac043d2dc5c34fe918d82db19e7c52068dc2e57c828e2eec70263380f05f3ecc7d16349e663864b471611d1c55a222c4a9a7020f8cb87477081cb0afe1849ef768ade6bc2a4e79ede15889329fdafe2324e4ddcdc5e58d8ff45c6701805f9928a7a92e6828b6f47339bf83ebc83a72007a0f401d104afa5a37b36280005e8194c0f512feea45196e8384830fe5e82e5959f0043a1528594e629723723964bd590c9f5a240e6227e5b36ea1f53234f33d600e7868dee7b0f097d49d00881aa244d7a88601701049f3c3270087db0322897b2c9c789fc0f2816987e9d072899f15474f29f3ab715164311a6a601d9348187829206b8b16202960539b9f37f003ec2ecdaff6194a72e3203c162a78a11576e848b7d0e5d5272a7477de626d771b1b0d71290f8358aca6219e161b7a7ad2bfb6fa401a18eff1d6c774cfea6e810d25415afdd6ef9923105f27d8a60d3266efc04d26be9cc4bf13674156384d10eb6c3c6956494e34890605b2ec70e0b8c478e82c1a20f959834718bd5b2f285b26e2c10a583f2bf5ec413f2fba8add2238110218a5837db9430aafaf09450f887e1b825867a3de897b1020d40aaddf721c6c74852e6f52dede9f201713830489d3936cd4c55504e36fc89f3671efd6d23b7d291871519a78e39b821519eb50ad6cdbec65f6770699f3a9df6934cf72f2b55439def16997282fe6063c15c5b8d2014176efe1f3024b005bf419ecfef6018935350ca30a6ebb13f0012e4f0b798b1cd865da4b693ee3a914e6cfd7a5af2addb404f2b642638c0d456720e427dd68040dc88f91322231a07c425009291481f2a1bbf81b1ba36c15de1c3d75d2032aa4d82cd5a70bcd70b1d44e75a8573ec696ebae948378b3281956a1d08c9d6e0a7a17c36b079fb79bd4541c9b7bcbdc8b5353ab5ac9334319db03f55071ff6687e94f446deb970ff98bbda0219d523d4ff39a68c68e3b47d57656435f185b55ff03fc2e8c2d78902b6215442403bacdff4b54ef90349ac622e64a2e50a6797ef769c1b630faecc19e5c4bb4db879f700c4a8ccdbb8e49e82f73b44c232ab34d539d8d81a5e2ead64037a409b218eac0a2752a529ff2c05725e51c6b4b78c5d79951291fd54af9b605158933b0b71f0e41729a3e3e64140c01858ac57990711b9398b3c4a329316562dc27d277059a398ad027d50f3d3f457751e748fd829b073aa441eb7308350f64f6844aa297534a135492cf3d5b7ba39bec9120d230d20491c2ab2007c43392db41d9800054366d208210ef4fac222931c6c3d328e3bf415480ee7093deb382034b4665187e9e533e49a4a6adcf125cd554e14338369ebfb3fcbc728801a528e65b3fec50577c9e765693865d0fedd2fc0c48cd1c41c2387edbae21f9776abfb46bbf11aa215adb4ab6f5c765f76770fac40cd76ea77c6426907b2b01888d233583c28779fb8f2349b00365aae0dd4cc2fff218296a785c3406b928effafe0ce21d7e0a1e5a066017fa8c8c1e26f7479b1b8f0ce5128f4fa1b20e93e1fd3c34803edcc2dfb0cf1b1fa6e4dbb8ffd3b45fa8b3cc0d7c84f53153fdd7e2109513c1bcb9ae80698e0358371cefd5a0004bbe73bf50138f9a8f8031ac7cd7e14a1abd770a11059743f434dc9fda0ef37cbc90034f0559188967cb5d93e330e1b8917aec6ae2a95312fd1495d2a3851dad626deaa7ff649d8ad7d210088eac2666c0de7677ec4aa05b6886d6c22c53f52e650ecf7056095f077e6fab51baf5eceb1373d08b456c192aa4d991f96877038ff3367069dc94b0b29b28792767c96f53663deff7ff5c8cd76f6d8638d3b22218351de981e5589e1d34681636a5a3b44b49f35d50f1d39328aa7478da47018575326cdbee994c7692a837031c3a1916241fd89b39d2e8ab739725ad22afada216098780fe7f465a2405c14459fef6e648b8c6bb5747a4f04194864d3c67df7e76db4211b27c3a9aae0d11f912e48df567db0e0096e7f2f44ae26f2ba2cfef0049e0e13cf5ee35eff5ce599c5335539c69144fe21214a525e3efc4f6dede88f4be51c256266ebf2aa015c779705f5d7b0c4b23493d170fc50752b03d490148c090042e05898f99962bd4f5e28734c3bf293878f80dcbc957beb8045c45c978931aca604e2cd160f991e65184280b943b905fd4c3d95a5c282b20c4b8e454a87f124c742b5976bd0dd03e47102143096b66c8e7d22c3d8b8b4cc7b23aa2495e34334dc9c002565c9ccbc5f718836a41e29843ed5881152ad3aac47457ce6802f17e7ddf9e17ab6918c6ec3e3481ffb1e5f0345a2a82c8cba4a62e069bcc8fa94ba6e00cc1735bbc906cb63918b071d84ed96a51e3c2962694658e0cb31493022bfc8118e0c965c70dd073251f7352503bba31252aaf78eadfc53052da01c15ae5184b74938a36c6170e2bd1c89817e63ed2aa3da3cada652296a7c9bf492d5a52f449c652007bcc8c89acb723cf3ce5187ebd550dbdbc7adea6e1b3048f079f226f9a1d7ed7a52dc6990c2d39ca1b500164157fc1547fb22bcf5ee545f773aeb5f6826e06a064f702c0c31bd407bf17b0eb52573e1f9ec8dcb33b5f0ea2ba4faa10b6107c8f67240dcd4e3908d5c39593164a9c1cea45ff7f3fbe374b038559fc3a492d29f14e9a0274ec471d59b28b8855b35c41daf1c5a7b76ddf365db11061ce25145aee7ce380502cac190d80a223843b9bd376fe0915c274764f9d0bdcd7751e6265051cc01533ca0783e35bf10b449e5a94a0ced949c84fb483c87ac4c25c7ef0125fa045800c061f57e68a7f18025499b0f1184155a48cbdd42962a9854d4e24d68b3d21c855d3768301099446805a8173daf578aa5fcd8abb8ae9f26da1c99b9b3eed106ac48a962988274dca721510aa3b788c0534e06875c172a76df66b1762c1c7db72bf72a908270456d651e35f91d72f8ef1e2c922746c5044a2aa6d6212036e2100753e662b23aa7cffde31cf67c2db582254771fde6ecc9d0216277589030d36925cb7596dae09b5fe42831bba405983479bb1a32d3ed3eacbebb4a40c84973c388eed745258e003b2f913b63723f5b68036c87946d5bbe1d79f3f2d18a83a211d49c9db621bbc9bedc3d2c95fd5d00186942e48aeb506d48925ac80ac695c9554b99a0a6ac34f9c24a82afc7151135138ca28601796858f902c63a1c5c0d7c9d4751e1da30c9896e72774ad907d75e63a5136e3939e18f237dce124d227a3a1a71118584c0f5b873f918a70452caab8bc49724e621c626b46fe185edffbeeac95a9406bb8463db7362d1451840427c12989784a2aaee39862e4620dca5820731e09facef09accd5edfe6b061dbb3582fb05ad5493514da502c339893a7624d460185ac8d12a5683100bbd03922d9327cff05636807dc619d28dbc64f5d8006a4413c63bb6110a7df69eca25928acab02786ba40a2ed1bed94f68d5ce0724cdab1baba3782ea10176200e19dbfdf4a580bb9e1a84337000f0c0138b3dce57a761cae1c237b0d86951b5a7e551deb079617d22872b9e3a194ab2b6c0a1a2ef74185e5b72314032151449f08912687c7c89087fbc46596ed883c95b23105bf366061dbcdf038729e56dec3caf79c793d37a7c7e6f11c599e2bd363e57bceac1e9bd773b3d4d34b7a1dbb99604a3e7913eee141a96f7c1f9eccfac512836022394c73ed6be41a54eb02faf549665a304eca4a07aababa3299d9c3c3b43357b6c244d968aa3821cead04a66e3f726755758d0ffa7e5e847f86b5f33440b527a3a13cbf383108335b5619c5552e3dd40976ca6e15ecb5b02f9fa12c9a465f12b2f7de5b4a29939432053306d7062306d9e75dfc498edf1325ca30d70fb3ef885532caec3b64f7a82eb5d6f844b65c78f54077f7eaee5e6badb5d68e63eb275dae0ff4b7df4ba40c7a548e5cadf5c1faeeee2d29e4aecc715e64ed7782ecaab5d63abb1b33ba7fd1d7a3063fd00cdb8c723aedde666b9b1394291983131428283f482925d7f1687177ef56509ed45aeb8a058029eebd9785352730a7699a86736a1b8ee3b81c1d1d333adc6ab55ae9b858fd8031c62e5ade438bd3d1d1d169ede42ced70ad56abb5c3e3040392130c4c78b8098351b76a2d018bd114a32946d30d65d7905cd65c7e3e580f7a4ffc7478983b0fb383ed86caebd91173f63167218c1952f0acb29909b3cac3dcf6bbfb0e41087edcff81332b0c736e184e2025513972c9ed940429bbc9f2b1e719e0cd4960b9cde47662c14b6641298a929214d290a49056450a81376492e95316a264fa4ea9f69d27c370d2e0e40d2dd77931e77858f0af3c201708ced249499c9c715dec20fa2c4f4603d0d75639c77309447feb7078965f076cb22e474e0770e617e15788bb8f51e42b8a7cd11cf6576f3b1df88b1dd4adc1f22b928f3f4aa61f05a9893acbf72e87f6c52adf0d99743936e8e0890f647df7b38a0ef9f82b62793764225f1489547691dbe98854be214cbea8fc6e08a583c224f2455f07eb8b597e1d308157df3d78c324993e932452e849138550b6442ff2d579dbe4ba1c0f4b8c592cfc1dc62c16fe8e8557abb8c50b1857bfad3c507e200bc60c29b8f38af55be4cb8b52dc92595f917cfb45f22708f2b35f43ae3cebd4029bdc69723bb560944fc0c27d4fa08e83e57e7f13712f9fd5bd9d00f7ab0ab31fb9e71ebb0181f50415f7927becd9ffb8cf045b55952ff70599344eb8616823c804f2c17af08661e230e504e40e13072a77c72aeabefb7af0a7a347c7eae5b33a8f841f9e0faf877ccdef000a5cd4fd0dc3bce5eeebd9d13d7efc813dddafbe7391fc9eeed3b17af9fd90aff9acafc7e7c303e5e3dfbcbb215f7e91fcd56b0fa37bec5268f56958ae9ef5ab9fd8b3cff26e18e695d7d5981ed86e320f488e8e1b86f9de30cc1de5f4e8abfaddf0864b9c740931a3cd6eb7e10e0d0625549667a2a4241b39b74ed3344d0be519f99251d9bd57d3344deba2b01b79464645fb49280e0e141c2915ddc833324ac2f911e484c994491f52c86a9994525a29a4655e7413db69bcf75e296f7cf72f4e8518eceae68b533d7cfcb891ee20a594d2ca06638615fc233e7df087833f3ccf6f02f38b2208f32bfa8ae4c707a1687e9c0b1b70fc8eb621495c1c7e835ddd39ad1ffeb875c16c2d9198116a6b29a46db1a90a6a2a13e56ddb3e10148190bcfd9b20f3ed3c1085dc812240216fefdbcfe782b80fec7e7e8db9c5ab15c50f48f4d7ba1cdab73dfdee633701a2a0ee03b59fef4d5554db26b9a8dd59436a350cb3ff750a61d99ffbad7b4d0751d6b69fdc7dd77efb40d9fd066e0fde9fdd44453d88b2f6954094b5d7be1068f367beb783b2ef6e878c7fc128e446bac536a30c596008b3fc1833ca071d0b5596592a659073bdeb4953961fe3c7f5ae17c464f9317ee46b3ed9e2a7208ebdc18998389d244decd4e44c7f9f90ef7593a5532c4a7a144f725bff4c8c9181d2cdd1c8268f30d7529c8e98648c21d862472211cf40c61862eef4e03638a510ab5b582788441109a31161da5ceaeb38859c3edd1ed1e38353a75e9ac82891a1814c0bddb3da6a6bee263246629a9ea2885188f8e4a5d65a33ad9f949e9ef8bd57db9e8cc650a169dac6f5983650db3641b0ba62e3c4b474ff1866d09fa9083139e6fed8eda0d135240dd953df2b62746ddccfde7a46d786fdf6401442902b0cd9b0403cd3efd1119132fde607a2d0533f0ad8ef1c02b671ebf7e8d072fd4c6065fa5db942fa6b4c8f610cf3f55a2ac1f163f62f1be704430d119b6c8265eea62de0e4f8bd827591536679a5eba6b5095213a318638cc384cd9c739ee9e29452eac424c98949126badcdb42c3468a36ddab66408a72560966cb99aa66ddc922a4b92b49b8d6b9a7356f58c06880728e28d0f21a605629272cb5e7bc51865d03b4c556ec9571824c244b5d6313685f9124649cc933048619864599671dd0c53a48303860d98337136c771471f0484e4fe13a20d251108c9fd5898d8b83099dfcf6398b23ce21c983046c84036c19e9bc9081b64134c73331951e5c584c64b8ee1d398b33f30865d4d6b7f773ba594b6d3496badd4bfa88297fe04b44c65ae1ed0fa57bee6ac52a8bbe75f1da53bbfa2a6f74e213db59e1f88024d2273d9ab0578f3eec614277195db698a919c32e45ae1db1b9ab5a999d4a64d8fbe7b3bf2f4efa21efd047b82812764ffc0ce9bc6516f3ec1f2d47277775b4a44f7d75b7d8d52271b98acfc621a225616180a8bac6365813db7930c6272fca9e5d4a065d756ea53766738df38a7cb15e3f7cfc19cd7c9e6ee95b337d3b67bd96c5cb762e19cdb580383419ce557ccea769020bbcd5a6d79d359753494516b125b9c8f1fbbf2ddf216e9db782c43862d6a329bd7270d7a7b6aaf07f2e93f3351eed9b367e436cf82372d3218638c97b302f75f1f72dc6019be64f0e619b3749f4e6cf3afedaffdd4a7f46122a594b2bbbb4121325a1e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e626c4951c2061c3c6c03980f2c06ac070603f602e682bd0773c13480f1c076602d980b98f7c15cc0746039300c63c13e00c058b015ac83713000fcc038d806d3603f018069b00c160001c03298003a8075f0da76b6501a630b2db1582c168bc562b1582c168bc562b1582c168bc562b1582c168bc562b1582cb673240b1c699128a7d36a6fa66d5cb762e11c1d17ad1d1e0d5c2f60f4c4f081318514fa528c1e182f5c1af06cc081cf842151a8299e9d960b9d1c0e3e8664429ab01ccc5a75eff54458a5924c1db755aa2c5ff33e18116699a8b4cc7e007891fb61c4ff2e0c00ae7ca7fa4ef1e40ccc7e6658c13c3e4b02c0f108e08bcc9f6105d30d625c81e30bc148796e5a56a5ef7ca4fef16b271990723b49a93223b75314aaac453591b54f01aa26926f5f32edbcfd39d544f7ed47e539afb79394e7d3ad8a3cbfe380c8f3574df27c56c726cfc79fa3e3e2bb07b7249fd5835b1531580f7240f4744d60e43cd8b179a1f3e02a87e8b95c3cc82292e76b905965eeaa47c77dee35edab97bdf4ea8ee72dcd48c703bb4cb654b27dec81310ad943b6bff2c0199b6b7832f769461d34bf004c30488d8c3aa8836c07d9af5ea4ea20fbd293ee4d5807d9bfde9cea209b655d9a28ea66b04707689f8621fd4057c1ec28bcd1b0f5f4a1392902e42bf6cf95a16ddcc67d45dbfbf67920e347beae7c5109e42fb9393f8f83e34f74b75f71bed2ddadd7997a26745555d5161f10cff72baa4f71d49f1e6097f179307f2e9205684192022f486080c3935513430c5a9a984262e6cb0c46c8a1051aaa2269a4d018592912d008c102224641f0d02482073f50ada9e1072d537049f341130c9e80420a21b8446146872d90701347a9052e7209123ace96114850648828907c49a3850b1a139e5a60040b6ca8c18932223420a90c19302b24d144972288a0a6b408a1050f2e8842042e24cc00e707287898d282191c7018e106239c282901232276c5464d114585178edcb064050c092660d34424081fbc24416289e8c1250c420b264b80b04184760233c5d313328882ca9221585ee2dc6025ce0e58c0584182511459e48046491522701042832c9e5cb88186178879c1084b245860899216c0ac089980c1991098d21ce1248b132d4fa88892828499a522c830999921459398135b9c4172c108424b5b54b0c59298540c6c0c0240439aa83455522b38218267b1a1c40f2ae080e686234e94c98103942c7838d2c58623b2d0f0c2d11046b490011769c5991d92cac091014b131a127c8049820a95264c55672c9499a8a5186265cc3c3184d408068862cc149a1fd44489c1926180152a8ec8d0260836308850b130e3323a424408250531303c8550958414306f422c4f2208599265064750918495a71bc66c806acc141238bc00e6079b34828ce2035d9c345511e38314a5225c1063012b5494b04084d314179ae96534516126884844079c60b204861608d186071a4b67ac54898189305fa43afe8defea08c308d40a07c83881e549122eb12e42b8b85015d5260c932f39481b46c81528304a88618a62c10c930523441548728801891249aeb001fe876148c43a65215d9ac81461d2849a314e6c7480071ea48e929a58428b0d2154b2a099e10c91aa2a1634d9d795e1bafdf452fa6df43518f7becbfb16fb57e95734ff66d74beddeabdd97f4edc7c957eb3ec8ddbfdecc9bec0fb2bf45f4b70c638615d944218861b65f11fd9bafbccfc526027bea17d1ef30b96190fdeffdc09efa15d11e93fb87ec9ff645f3d36ac8ccab3181ae12e560cefadd3967fd2824cc31735268b683d4e39c564adf7e4eaf73df6d227f20ae5cf46327d30fa2250c434a699b3694d209f61233f612b9bb1b31c6c7168a08c857cc522b960e929202439202af09d492425449ad37a45088a583e227e9a0789b6a02c56b8ddc1d4aba534afdaf101e642781599b98ae64930369fd8ae697fdcdae49e3636823f339fe08514ae9db8ff77637e28ffb4c225f71caa746f215a9cf101a76d08cd5c8bd34fcbb43030f94d9d25213f1c46984af126c91e0da02a63c2c60e74982673e82658ea114cab490865a18664b4db4815644cb56f6a336444b414ea7d5fa40c3255a44bee40634a4a114a25a76e9101aa6d071505a109b0f12ecee8e23ca11d4605f8a51d610a7a49c55e484cde9334cc9e44e919c8ad22a838f93f9f9bc80417fce83b6517c9c60992d120fd240f14152e549f69f73cee95977a30a93f9628acf0a383ee8eeee2ea764bdc1514aeaf2d59f453bab53ea79b2de486d071cdf73ec000a8ed7bba7bbbb7b1dd45f33e8cea2f218dd5b2d1743d3ddfdf690fbf55901534a3b47ca12cf4ef629f44bbe4b488641aef808eba493da4aed9c29d4cf69a0500a75bfaa07a373fa17abad93fab5558a4a495129995d8a4a790890212563462f860e2485169a5f0f2a25fb45ab097eb3f77b9153bfe9cc5c2e255c714e2d57a6bcd0ac568fd6b5d5e90be83dd70b9c03ca30d23464a87dada5af6499b5b1d5e9fcb834c3d8e505c630fc08157239424de161712c6d69470594e3b86ec5c298b5eab822b4dae973cd9a356bd6ac5993f3029f6ba6bce3148d53f32bf5fe080bd24132d3b8aee396e0c144413a286e5c36d4d232aea3ce4deec62ce78537d44cdd1424c8b5957a91201d24b3202b5690203c47a29c4ea7a6cd8deb56ab8edbb41468b5d4e7b595dea91e24b899f9f288929729020f50d3f4c1909a21a7735635947edde9f07ca9bd99fff44cd3368f099ed844716edcbc433280bc1759ab472bbbb652aea3ae4dcd73e16b2bf56e35dd875e1eb36bab3653885bceb6156bb2d4b0b42b3530e273722d9e9d17d07bae173827480b691ad9cbec8b1f18af4c892f4417b28c46ba18a79654c03c3c7ea9d0fcfe9d56807bb63ca23cb001eb45e0015e0814f860a806771120e392d0413ce018e4042de4df0ff9ea7c504d694f188c539b4b4ad9525b51d972b1a3812bda7eaf89e8f74eabdba101abc3feb42f60f46b198c8873bf0b9d18f7ca008a7186329f56b7a3a8d572a113e35a0f28b78cbf59e6e17bbffa61efb8e55587c3c7d5d42d8d78ae1753392d8372c08180e3bdb897a63ac8256820f943ba1c619ab1a62662cbf60ba2421cd66a030e2297b54dabb5e3ac7cb1c4d0d0eb75e79d434343434343f7e543bea637c403258b1c7fc8bb3944edcdf2eb1dbada9026b3932b49b62d7f2085869a28014d03040d243fcb727286f2e7ecdaa8f5b6b20f821e1d249f483f3174a5a4b6a12e6f1fc8d736948756db2a014344707cd6ea061e3c6074148f8ee2e1c93c7834114f962fe542a9eeec640c348d18d540f25f71c85be18a2246c5239a464c9a577e2f69e4ab5c556019c4a4b8444c7221f6448ecf036b1e4d9493e506268d28e5cb0518034dc4f38298265e785c50e2d1445c8e52f225635454667fc6223a288a278a071c29e5428a5638f666521a0f0f9e0cf0f0c0000f15f0aaeba4d85c9a045dd9e5f23c88215f34bb7896e0c8c425857af230e1788e60c032b7530d51ecb41e50f7ea209e155c72ba54065db98b61415776d1152824cf17ae1570fc2b6d9acdbb5b8df42fa70a3bc5dbc63959a198560a9fe10aa735b7130da1bbbb6b7139bf9d7f3a216e018b4ac30a797e74e297062abe75375859609cdb890625aec3c141eeeef68efdb1adbb7b75f73addd69ac6dddda9fb0c4ceeee3e63a6ad72d8ae14eaee8e301931c6186757fab568d63ac139bb638c31cef6eff9dd6d768cddfc7c92e0f89495db898a0e540a0c7a0e19bcf3cb7983c9cc39e7ac37542a546c6e272a52ecd5723b515172a550c738bf9c29e69c33a33224d339e7d4325abdce1e25ccf9ddddadada4c8a89854dac6b1d174420c0ee57e7ac406deccadcaf8b080abb0cced8444268337c7c1fdb6a9dbbef4c6f5bc6faf9d93e3a8d7ade5eaadb22d3f64bcd041fa954252a8bf9a659ace0c956ada9613a3be5da42499431ad2711d24e797c304c68252dadd8d29b277946ab5838b4691ecbbb5c8b565348b689f8111cb8f9be75f0f882bcf2ff64b7a77669ef54a338fd6cc736bb9cc9bf776be05c7acbb1103f6cc75f7e33182e36f1d5b5bcdbf5fcb088e3fbdd841ae26727550d4b0c8aea59ebd7c508293e5cb764e737185b68a5d64d5e578514376dd8e17d93a6eb2cd57f37ebb3b439cd64dc033558a71e9cf7f7785fb2deb625294d452cef3effbcdf76a9dbde2288c2673ce9e734e3a279e73728064c4f4f2c8c5f6a298ac68227b9bc86ad7665a9665196d20cafdb095fae69e99d9c2b60979f246b49b1af2ca575feb1f5bf2d53eb17c351e13e5a4f5564a2b9b8abde9ac55c74debee97fbf1d952a344a669d308ba752d1d1795d28edb563998355b5a15da112eb4bf3adedfdfba0e047ffb5ab78304597beb6ddafbccf13a765007cd0f64f96fdd0e12e4ec350fc4fe2b4dd3b48fd5e9c8de5feb769ca0e7f41f6b7fda97f6bdb68ec0b2c6b1dbcfcfcfcf8fe57ea450eb7c5b3027ebb8c80feee40679726ba0f3fd4820f93f59d54f8e871b684eec83e579379fd37173ad9a173bc82ba5b6855792ba1065b7942d5bb66c8a84edbddc4df27983c1ebb3a615df670dfe79fde4888173ba63e74cb16d3e6d70ffc61af2808a2fd2a7dd75ebde3ef6f7f7f6817c3175739dc7ad3acedbb66ddbb6ef6debf1d9edeeeeeeeeeeeeeeeeeeeeeeeeeea65ff7e8a65ec56d068d692a464ebe903629a594d2a77c96883226c1e46bcee9946e5dadbd76ce896f776b3e52b86b02fb30813f9c5d5bf1e6e306f7cd3eb71b0c723ea7fc6e77637edc8d1c31e36ddb388eebba6eb55a358b8531eeba0285702c2230fde18f5b2c32b8eb56de41cde18e569f37b08bc32e399892ee3dc5c667e74e67fd9beba4714a0ac313e65cb3e7943ee79cd30414e6941f445721d2ab695bb737ee2e37bb6429a594720eb1b5f45962c3317eeedddfed207fef4c69f57a9d43c2d6fabcb9f7721727b9b2f924fbfbbcd1389f3578dbaecf12b89f6bf78e52ec7a9f35d89dfa86714e8e4e7777ad5dbb7675eadda342c51a7552983e6ab034f2640228ba04b3e2844935638c3e5d290a4b07a74eb530c9a148bec1bba3bbdb9b85cdadb5d69b7171b6e42b665aa665370bd550f711e05d9591dd92cc961bdbb6711dfeb2f9085102a8ba94b4549762eca833439451e6c4e494b34a461ae2a4e4258b98340544126c044c1ad3152a8da923569254a653a7496196f50a6ba5e8dba6bb4a759add9c597cc8f2bbcbd91e4ab0942b940d618f0a65e604bfc204b5c58f1d392d3e6481936558ca5420c0f52f1943cdb4142308f1014e23e0554180eb5f32e6940340784004ae7c0ebbde49cb165895d24892c9469181eac6100529b784d20fe5a4654b114b459e70507ac2f2a649181b0690fb0987312b580a40eea72d6e7a7c785a81120254718496193c4d79e1698b94271c924cb9a283dc4f5b7ae8c9fd84b4f4e57e5aaaf236e4fc7a2ae04fff02f1fb43417f7cfaa1004b08fdf1eb992888ef5fcf6c1b6d70170ccac811888d1a515877834039feec72c816b66ea2d8312e20c7fc20070ac958be6494346f92fba4cb75ef07c6e7626cc917fd79e6d361baf764718f4cbc1f2e3e43f0735288fad7774ab0478f2f65bad4f2c5840596dfffb9b07c792decc22df7564ca2dda9fb151c9f1a199145ebb7d22cd3ee6fd96f99a669d9bdd6bf4e4ffaf4895fd8e8c3783265fd2374c8b2b714536a3dfbfe59b7a3eab09fd9dbddb87eddc6b71f5854467292464bd2bf81bf60f7591950298ddff16fbcd5c6f81da38df173fbf341ffbafaac5ebd9ddc7dde69e777b696666fe9eed4dda5a414d7d6dc599b397ef7dcf6fd2eb9dadd70ea1d449ff3620765d7dadcc59982ada9ac92643b1c35054e609a72f7aba9dee0e8276a87a39ba01d8e76e31d8e56824d231195bb0d20ff4bf422e9d46846e50aeb77cba0c8f1afb54043c18222b2d490022a6e7e885d051a8e0e45247192460546406536cbb28c66b567dc56a009b27c398348852a67b1896c6ca22abf9da828b933a6cc9822c58d19539a88ce987263c694f8dbadf1369dd2ae401264f961b6a6d294e5c7d8441e9b683691b440bfd1014d16206250810d104d3485cbd875ae56e009b2fc5866ab3b495390320e4b8315292172f7ebe6ce2cd056ec20250b17169ab03963a3ab403fb18446894b985813606c6cac29f129149d3125bec79e31855a2b6df469bb6eab2143433ddc3b54c24f8f1f2fee25fcd480ebfb7c4ebe3830fbed7a9ce730c0f6fbe9cd2e392031c7cf3f2034d7afc89fb2b06dde4363ca920997a03165ff8a643c019257e2d3ba62049d18a8a4ed399c14b29112000008005316400018100c084522a124c8e2440ee50314800f677a3e6454389548238124c95114054108c44018630c02c41887984154442608b8c1f01069fa2503e845a0a331b50437bef1b69dff5af844128aa6aaf380a2be111f3a261da4bcb8378aa9bd0c49a1c85c74bf338d2f273d39171a56bf152947a63f82390b3497037732fd68a76a0ee63bca0c0f16118355fb7782430f3bba4c643962d0ca419a3b07fbd53c8bb7f3ab0e3043468a3bb9051936645b93001f40ea2d7fdcbe60e7acbe00f467076084cf3c146b4cbb5594b510791ba19a38c1c80bf0def1f8a546423e481dff0bf0e93f006c4d0e18806a2c82ac31fdd39c68b40f9151b815d3a888725b7a40d63f0b4d31c1c2b906ffca41e9e8e9a1b92bab869425b79b5429da733c503e0abb9f4940825247521874cea1a6a4a70a435e163cf19efe184d408f31834a327c43220715b96cef203b3f11d227d2140235704c6af2641726410065632092eff7a59b75bb316e762034e6af83b25f77a50e258206776790403be28431d1b766517f86baf9d4bc109e4ec3569f6b9f868092f2e947aac4829037da0b024721d925bb0f02cbebb96dc7eea4e30a72bf90aa953fe980d6033646938631d01a8226cc84310ab97a09bae019205de148c6ea58b88333c36d74ab8936df333267babf06db751c9af80fa0e1707402c31764834bb4115b2a64f4993bb1a2eecfb631b151374208871928189801b8bb0770b092818c77cc00f241586e2d100b8c33449e5e4d5df7993013db29ccb27770b1cfde3ce81a00115fdfb7013ee40d5106357bc8e32379a3b20d298ff40e098b5136b5582a7b6017862410d3e1be91b463541242506f6b304aaf98c7c960218f0a9cc281b1a204a9283c76f91cc430f1cf1571ddd716b85cee72cb49ac3251f81b032ed6a81cb09519e281516c09051a592a65a8f9b2a6d3b50d22f71be7b849484b90af8b3981ca80cf5d2dbfed4f991cf51c093edb328227018c4437d99db91c1d0a60abdec8dd8df32a92002d0d8708a0830cc0885ea2664a425f12d7c5c3b90ee8fdd18c6906ba5b05d1b4d4193b75725925a6c6ee10726371f19c440939d2138791584c5057e825009ef92718713a822379c0ec42bc0e0fa2c4eaf5005b78e2b1c5eda7b8b8d8cf8ae91a7bd51c069c16c17ca8caebe532c17446a4cb22cf2c3fe79b89ae0b812137c8cd28903dc2805088fe470c1d7443a5eff8382a904a14ab51698a8f61ef3c29aa30607fa7dde75c54910db12aff300d5c64392445951894c0afc14b36994e6db620a1f040381603a3ca4e0aadd720f71c710cb693863639f0b2072f50368c5bfe2bba223f6359ed75a0622470d59efe8ca5436ea83df1cc5c99ceed621f0bfa36e1a9ec8d12100791eb02180fb17112ce9f35166cb402dad7bb312ce1a9fb93b880bb683bd443fc12020c9f725637ec5bba52e5460e6897cca901d58a8b304a1789674b4a93318e21686c9d8475b993d8a2a4450fef223b6acdb1655d4dde01aa5d69646ed8e5a73aecc214a2f0345a097e387188dfcb1075e488e0662151ec27532369b918a853e61b24964674cbdfcc4c58c999f0ad4bab5837967d3d4b0eba4adf33d887021c05f98186442c3e3eb18df8b808389d95fd9aa3259e08915e9948d321f5c84a4cf91c0bee542c9122b41ae944a227ea59d91189604d0a70ca3849b205acaae62bcbdfe2657fec0567736c011a0969277dd46dd64d4932bff3a79940ee165a87af0aad895695b8f672cde9adfa3b26bda681c371c4b7dcc97525f9a3517a324a90103bc1d7d2afcb2afc7360556bc367946bf40d81adc2dc8b2b6de5d6da4b2a00d34e91f2d767ccb8fe6cf87da80369b9ef8cfe4cd2c06ff65861bab1e239d63b45e8c550a2f9c5bcd0f56402673d5da2a062113884da30070fd9356603eb538de1f60396958682245d3a336e67a2f81f323101e7145bd2fddef774767249cbd35366c1305b6967a666b918a57a3face36a7973140342a59360940fc13114dd5455660c544cd452a35a1ec1b89557fa0f17dcd0d1aa542a9fe039025e636fbc8a2dcc4f05fe5dcec7f48a993f75e2bd9f806b205fda7e81205ffcb0f53ce1ce071c592f7bc84c8127ff0fc55121a42ab57026c217549d1324e3a09b55076247e99f8576c51fa54a7c93126a4e42f89f97f8fef1920adf0c2b0129ddecc592f27e69e49b1349204869eebd2755302ac8e7ee46073fa082de0f52eac5a4eaa2889424dc6b886bf00f52127747718e986f5c1dfef0626fe3bcc78617557161977471116f9464fd2ba09d841c1817a682ffb76fe245ab64729e8c09ff45f7d158800b9b791719658992008ed8bf824214c876908769b971dfe10028f1fc92b55128e7f8d1a324aaae859bd95828b52b6845a086839e3f8fb1407ced6352e4b55b337a4540861dc6412899d24f3119e194b063aeff1642fbf6310f2a56c288aa9df9f8a01245233570711ca00a9da0c609bd9f0a9eb2ffcb42a5ab0f0bae506613817ce0755b403a293ab2a11e232c51e4dcbf6ad83a1149eb3ec4a1091c8ad03772313fc560b8244acb0960c17a0e264946a982d673eeb1806629b670d7c72952e83be36057042807d0a6bda82c5515ba1e14830fe3706636991a2ed2925599bd749b673a41ab6f82db83fe64713e5cce8984b77d65c4b627996fc6adb9c06c4df71348b849203adfaaa9a74ca2426d210607093f43f59240a052c449bbd7131584efa77db8b78e0c31979ed1682178993252250c80a3cb0c22b162e2bd696bcb267065e3a312dd21c0d31d84daa15be51ad9134bba94f39370541b933b59350e270f86d89fb58b4e28004e8de0f84a1a0fb8d1bb1b419bf1cbf3523338a5ca4b91f38071a10be224a7e9ccd6066f272ca78718c653a8f4e3704cd5a8397b8def026b7ad84a405ae5037c70110cf7c8fccf1064ab3e05e9579349b7b4ceee4fdf78e7b9d1252e3420527689410a0398b5887240769e321d41e50dd708fc9bc8a540fe2015cb9c6768db9efd2cc3895afa3200ca933520641b733e3de83568a79a806f33b1e129ddc425d81be422adc23809c0b7d696e346046aa219f370353bc7a41b33e37e2c0f8a161739e8bce44c44a45e56e4d0d840cfcd42a346b9741f913948af7a543167f6958552c237e0daa4f7a971e5208dc10889147c6139962a0e2b057b08939720072155e975fbfbbb472960fda29c5c45b86dc98e48595ce871681263d54a60d57129410f093a52a6058947a402a1be6e25c0e12fd412d2ccd875889f9c205c17212031a39da413f424cd4b5e27a5c4601ae531d57b9bc4985ef6e770f9f87073e604bd7a99f9f34f0a9deda67319950105d046b5e134f8765ba88ac2c0df368276f9030096d5706ae4fe0e2970f546b59a83dd3958a49ee4657531b4404b0883ae65e6c53c277355f95eea468ae80c42a9087edd7dc6401744f214840959e043f64a8e1039dc94d0afd614184e2e6bca2b2497a86dc1ed2a4a6c26ef77cbf70c0129a208ef270c86838c88f9531afd3f89491e067970d895eaa607402b828aeb6f6a2454d3052a6d9b1adde2e57c943789462ee0e0453cfe55a4ca782ed3b548d1bbbff0e8a64a669e2e89525e6ae0753217b494722444807086ca3fd7c39ac92c37badce8a4708de2e8fe69921b03bdcbe1af67f79ee668098d76c249335a8ff303512f53c029e947be5e57ecb20809c6416e49ee22c6d39fb42cb37d64b688a296d8bad70f4e4bef6d139bd7f9b4af660fe2f6a077afa5ff579735be827bcb88139a23f7c7540ab416114a5aa2d30e9258d9ac05b580f8d932c80e0ccef6fc3958fe622e3351e401e4256f287f524f3f4c4953b1835151bdc61a82fb5172f9dca46daf9c2c9d2f3329788ff94f4d2228511850056eb961aeb6081c026981ee53e57c688ebefc8eaec9e794979fe5d2beb0264832e68fc06e530ea2bcb14be33bca0e2cb4c62730f290b66fdec44d322d574ae51e415ac20f76e459097d358cbb6d4c68d1a8ada8075876e1fc1b7160ca9f3b05d0add24b132f4892eb4a91fd725a08b0193420a812db21dd6537fa9e0b63e6e756f7d96d9e60c9ea9d6a241899b0be16fb05c665504aecd4db9a492f2a90cd66ad71bbcf7c1ec2334f0e3d18c1ce628ccffd34c7e8c191a373a40d7e4d71b613c0faa345461d599ab568da9da259997cbd78e03129355709dece4037d7e92834d4085ec3b35e6ebda3b5e34ada2a82af6f87e0aa221e2a08de44975bd0b09f068abdefa1698468f21f196bb5717612390d57619353da728b9df220d7dfec83504cc2c14de9c1220d1545832c5e781e2d5313bcc94a3c31d20da77c693d9225d2ee91e7d0015818514d023d7ae645c5640aff47a5a6cf1d505caccf90e7f10092df6b33701f2502039999dae07da4f412b24f4896404e6c2d72f2bb1330a0f85a5abc9b0c7385de748a40a390b6a53c0883801e9b505b212750f4185a02d8322b9a83b7f009b00d2ab8b660bed9eccb0a6c0e7709b2fbf263b5e57d95cf68dc99f3fde9f0350303814226c01333834914bd45bf8273a20464e947a2a8cae946e6efb0e7a4e3f343fbdc2f90847edc003ee96e9c4bd78ba1955999e6d5ad49102f1cd757534641e08e9e5e38dc99cd57a4c1667eb244b9aeebf8f908a77bf52b403fb87d09b324c1ac9d29d4cc719c1c2fe56f051c3920633a8f76811a28f5b5f4da11102fcfcbb667b48a82d44bb68636592f1cf10406042868781879b952ca7e4359990e6660c455ae370b16f51e74d2cc88a2c1e62a505422aaba86a239b9f0bcbb4166a4893b5ef67cd54fc44e66f67f2725b0302a9ac738fb53f38b7e90cbde1a1a9f1a58d9a312c76fbaba69c8aaeb182ea673a7db6f120bc76de0ac3c23d36d30bc709080a58e15b50531547c1bb834da40dfec37d88523e274fa1362c7b08aa9b6bac74c0cf086edaa3861090e8df948b3ba46dd43089c84ced2f1a4b4bc05e08652ad497d4221cc14081e80757a1e4127bd772dc11940fdeef6847a92c6f2576cbe79d3245830a3247834333fb7cf7595ccfe7d84e75ea17c8f7cbafbf2e495f8766d50a596c43193df6379c1187bd8c46df661d976d4866482a8b8efa0fb481f443fa30de81370498dcb119132b10f5b03d96f913ab86b24fd3a22fb0594e3f3cec12e104d472cb26503c739182b044cb6ff47988c55f27630f4855cb83793fdf722db38f23820e4637aabbe47f049b1e469a92f8e3ea1ebc182a1d74a60cbd66cad5edd478fae65ba6bf02b4e81d52fa9b9de38a3f127739eeea9f25cdcfca5e5d2cc230a6912e5848d601131327fd04fa8ea6801680a56b895133c770f017947d1b6f55e50dc33cd0b7ecd171258e3b0beabeb64813a77a6f80d285b7122f3f5c8cdd503aa0ab9b30653743742d2242fbe6dfe62c52a51217234d77ae073b09c0cbb64b78962dbbbf81380b0a41c057626a0b6f4da887808d5bbd049d30aaa9037af86c7ea3d2f3feca28ad2bd83cb304ea537ce718da712b2c4cd44e4bf38b527bcaf3e0e542822f98fe44c48aa27da63bbf7250fb66b5b8acba58a90e9535418ee4e364cd697a9bdfccb9a0f281a6da2164bca38b7807a4acbcc2cf8c214c5926be519cc710b807d3f6800f405ea747aa65c56e8117de65067e28555a4acf48c9013f6098eb04eb620b1a5c9b6603efc7bf5f2e2b8dbdd9161858701de29e1a2dd0d0a2fa9e005ad7d9c1c05cfaf56625300ecede0cd118a09345d41fd3cab477ab923f817117bf3b9a450c6e216f1c79de24722b32ce458cb427865a58544da43fcd46803fd70e6da6a40537191aea9580c2888c0aefd0d9e827f3df91276a11403f9c0506cedf7ecd66fa8bacd282c0d38a9c86e685874e46219ec5cf21a3797ea00f23e63824917451afbd898081f86fedd8ef872953c0e08f3a81682d44a875d42f93db6026d86e3f6063b1836e0f9fdde8e9b83c9a1a11967394d27c621429c7290193ffc70dfa464caddcbed03015dd29a925062ce4278e5bf869e9368ff92d32076206baa43d7e13605760b60680e7620b20c47523165d2adeeb0d916eca577765b489ac73b0a90521dc368e20c534195cad09752ed9ceb4d3ddf490584bd4a1b4f7b826cce3852f6b0cd5bed221b4f35b9f3d597ca5e29c1f3133d19e05800f9d6bab37d374c0bb0e0d55ec380e405158cc983490acc879af5a29fbe266ea6eaaa4ed4e856d8417362f09228cdf20c749233e6cdea1b94808f5becdd709c04f07d8b3d5e44dd573d1188c5af9ea9eb2e9ac2d2c6555b222578ff8037bb49cfcfc839578472fdd4767bd5e94bc2e1741111db4795940a8b40a3aafbf720f63356b9affafe7c221f11fa23a0a9922c59c0b31c66f364fb4c9cff45b5712fbcacc895c3f3d9ac13c5d116686d49590d1d0daed6dde42a176f42c69e68ab05e933864cc3d0a6a1d8ad9cb4367455ca3030f3c1ad25cdb0dddc219d61efb5aa14f00b4e80002d50d5a84a1259d0bf4fe7ccf26fadb21fbe797878bf30ce74ed449cc3b07ac80c1db6635dd1ef2c7fb564449a5ff19f7dd8d1f314034a8abfb73d60a1bb58967a028f6074a49a7e630c1f118d37f55cff70b26d8758ae83fb36c5ff3ebcde0699f2f19b435d0060237e908d9cd4109c625c294219c740aae3418678a133588a4c5a6129509e80896c2a166dc6b8f95c71faf3ab48f4cb46e8a5a4bab78eb37417efe0d8d0db9d059fc3fce3fd56172822c06e2719d5e6d1b09c6d9bc8cc4285662fa1cad70e5684922dc47b38ad27dba62489b9692be0bc95f1e877cab47b529ac78eadd0257c920fa8fdbfd7bfc0912f863ad7111cb39514618af4f63d14b0bf84889f730f1b952412340f903e2fb3db6d8a7270791f49490b0c5d4bfa0664ec706cb6281e5b0df507103907d700a20b9189680fed85300dcca8e5af77a87f25d83d61762724ff4fabd70d74cc6b5ad5a834f7798ba1826e78a8b7ffb50552ef5b366510080409b69b0358d645d2ea33a36c23fc359f2b102e9227069cc6a77a023db41e0cc0eaae67fa3a43e76d79477bb0724739d78e098b7204233ffeb173d8e2d23c783cb79399e0721de4881a029f70ede9f61e36cd9feb0b69b89da65a015873f03f7b21ddae64b9bd9026f5c98bd9e639e312a94f1060b0a1b699a949ee8c9c09670c06c8e493f5da8c74abd06f2a6784d4db7309e9a61a01e218741b519a111ef254bedf42b11091c9b3b7afb3c2091386d61856d9337d212d50733a10c228bb41954fb060193616e649ce593609a18faa4a1061ef15c301eb192b7353dfba960b5f16a8f110d77c3a06cc1faeee5731bb7cebf5a7a9f04599c0088090d183ba32b18df163bfcc6f3304b41487ae8b4bcd664c8e7b899a04ea51f1cd87a3c06ed72ed1027c67a1fc0af0308e4914352f90d519d3225a621cbf8532ed730dc384013cb628bb8736d852b63552d121c3c3fcd88f9e77893b8943e7eae4240ce2c3036a3c6c7a1f662cfb5e287530cc60bdec50ed67403e6c60e9b2f83eac88bd18223c9a191a36330c7cf2443b12a312613189ed2e9348b2d45ad618d103556fe50e753908e0cfce49452e423bebd09d7e9b2a3a1197d1c847c7187e779d1a7636767579edcc37d69d05daf593e96f0f046d4fd6c634e33cb2ee7656af82be9ced2c2e9d79439bb0b46ca34bc27e5f0e1b1f5e38efc3d7d3031abb65d942029ada77c5668e066dbc0759892bbab3addc69b560fcd115275b1274b790632c1987571d2e9e9b6914d2c13ce374d0d6a5b7363bd43af3f0448f3099f30fb273834fd9a754b3c90947646ebd1ee58019c4bec66d0254772d2a30e4ccf8c7577a96980cec9c6cd075561cf6e6f97fd155d169dca12447e4a47b70ccf7496ff70ce718a667ed55a427cb2a696c19349eda4bae90237f59d3b931b3621b61114af62948a8d81bf8ba9e67f1821805993d4c4154315e82a41d32df198ce247e3d791dba8dfa38db0a333b5132e501d78f4d15fbf23b817e807d1124ff1e660990cd1c57425c0584b1f140bfe508d01534f5fb056eaf868994f2bf91beb6bf76eb2679dba1a97f52d437ed26b8f62142fbc19f44a86fcd36e2fee474efa8e3a685a4913af8012a2d44854a0fef631d81f3fddebfc9eaa61f614ac85a2ea10b1058e035d9a7c8708af7f6e15d38270ce3aba209611b8e68cea336ad79b899a42240612cab1721e223ac30d88bb1db9f5e381a94b138bba01dca71e3109f75a9c2cc441113affa53d2c14ec8a9574a9e569210b607d3cf6049e99f32159d7dc4306509a6a2d2c57fb704bde19ed6a7104aae18ad0ecfd48900e9f9809c891e1393054e7d1ae7bfaef7ba3b34f5ced689de96335188a4ef2cf9e584a0fa037290489d60a813b78ae8e9ca184ac707c7aaa95366154745cd6d2b804f51a0f2f66a1ae40797f8550e46ff3450e299ea4ba1e14009195c9c5eb2657e617e752f16b45589f7e957d38b50a743948efdaaf6ab0e71646a211f747963513808260be415416c5da0441079acd957b39ac83696dc16405b838502c4a9c6126a4fdaed8b83178449e9a6bd2beed1428842803af3096f956c0078c0d9bad3a4b792e5bc94495eb2b1b1600fbe36c3015c927c5a7a880d33ca5caf48d2fb8aff7c37008cf9b1846573aa9a2858b33cfacf9be78647c0a01c761d17ef0c110ffbfc38caa678d1150ffdda21ba1da3c474045404c4a6bf31d73e1e0ed652279fd48c1888399252c628a3efea3f923abad760b840ae9933b66212cb2f2cf7935c2a97562fe833d8de2556d7a1c3108e3669dc6023b4017772b54e1c038a4f5cfe694e831660e13a7627e9504556928d481c994aeda20dc00a3b3d4bf82e1e870045fdd397752f8cc5b0ab1872e1c57d101ad4a46282db1494d32e45792efc99fdbac0c6d840a9202f4fc8c7f0c8fdba3d30e14dd6b3bdb6437bd2de5b8b9a34454cbb32a56946cfc9b2939a5d4397edc12d7eb415a5efddc51cc91cef861a3c5abcf539037c74eebca35c7f1f23765abf516df846c9a73196c555ee32091d200b7f0942471a7e61476cebab30f8c2ce1ad24ae5fff8a382671131deea10d8c922d428ba429c2d3b00d5fd15cc2c010e74e5037fcf2a74bc961da00da03bcb024d150c592e4f988edfea9c328db2c0468ae7354ee4893dcdacd4483c6100d26f0dab370c583cdb58a16497255a9495deccc0504df03150937c2977ff278729d162837ec559a5da55a702d7bd2b1b6b4dff08608be3b43331bc9032e586c55ebb2350125321f74e5485f5d05c38614683b9a2572bd3978d4d03b888c19637b08cd36f3a31fc11c3919be592defa54a623a7885725729a1a7dcda94107a064a89df5fb57361f5ec5d61d757acea4218dad09ec2157596644ccc0b84192f0a17f08cd8a0bec07c7b30a2042f4497568be4d09e9edd45bbd02cf28fd35668b0155636c30863caf7b3d6a0603baeca85fc0223f176e8e3cba95bcef5c344fe9c966770e2631e57c3097c17e60fa502f100a068305541f653b3a810d5f1488735e2bf07900e6d7981e4ebf39e377078e3915d1c2fd6219889bd2ea85a3817082d1fb63637c1ee86b24c55cda58b9142c3c86cab51043a74e0b1c9a4016130906870a22053aa4912334d481f8595c56a0f746d385340348c8f1e02ffa115de8f31a87c3a3f938ceddab024909c14838e962046e7fb84cee0337ba0dd613c1328d8dd42b744efdbd8727420fac240a0ffaf247cd58ebe1518c5918187201deae228e73317c64fd27a6db25dc722255e396af550bdeb7a50d594a085795fe1150421e10b6f0e36870881e3df0ff17a75d8a57950a8102d72b885fb0607da00201744f34a246f4fe27167b8dd09ee34cdc268fd3b1132331efb2080e8b84473b2345ae42b1404592995517788941d5f6e8a47e990b9e367005abeabb74fc4970e85c2f4efe6e3f23852259806ccf2bde10586bc19d222633a2fd8966d848b30cca39ea3016d8ad753e49925f3c04717f0d6ea13c8c09ebf3da37959e4c9e6be8dd75cacde837d554c8e0ad00b81fcfd7ead01d6d9598a7b490bb5f92d758bb1c13723c1f4f19611093f7f51b90294cb04c22a3a69702ed255d48c9f7e0da7cae1f05930381e1e7081adf8bd9635db38f63952027a00500f6ae80869d94a0625d5534c1c8fc2c17dcea6c34b6f35858e4eb017ad020f2d398da40285a2010c1349217d8c33973eb77f4112c7af825ad8e2079299762b97b90c08940140258fe7c5685dac1c161db9f8d957ba8d947b5487a263a38c5a8eb3a9466c643bb07fad833f47045b841587d38bfc4037469692f5b316ef06d83f2ba56adac9608e4cadb7c2d4b184a7426bbb8a04f8361e60326679c7257d8ce3d0df0286e52dec5c83f48e867648fc3d02559dab88cc08b86a544baa1ab1094b7c7882f07f7579809a2d31f25207c73a027c7a3d05f3f700496f1133fe286cb70803167fe834a544c9d15aaaa5edab0c74bba6ac9e329ddf59c405519dbd700eebf1da79e1a6943b8608f1063a513732a111f02926c30e8a0bbcf998a413a801030828cdb4314999cd9e0e52afeac084f38975b8c70d02d4e00e048cd0b432c49f0452ee7a3b71df849c906a59aa42e9a78e91e9b32551017509accd28e125bf2431368b3d90b9ce811a38b83f0475faca59a276f614e5b1601d4ae9d5471545c4b421b8fb21a47226b23a45ae0c268fb656435b16a314bac1ce8cc314fdc3892bca464ff5899a3a2f9edaa8ce312af9f34c9bda9e0f998894084f214450f2143a3a78c71b0eb90b5b898bf31b57a9af9c3c5854d634b8dc260ee2c16e3f475a69e46b6f16a87e9e061872ebfe051ba1ef49b011ef4c0fc19c5b768ea461122281afd2902bc574db147496b58dad42cc068fc1c1cecff48a1313ff7515b7cc9fe24edd83e4596d519b3ad856d6396bbbbea2172e1813fb25b1043835f4ca76e5f57417899a8f86793dbc9a9f89c7381e5241e4e57dbd5d981fc377228ea4ba9b6b9f07639d87b666afa65454136e1f6baa580042ab4587f48c1a9c714577e63b2060228c922a2c405905a236f98cc8053e965c0f98022007f4d56fdaf2e9618d318bca115b42b967f3a52b70ad5b9130af0f25f823f2b14b30b1e46883123e4524dd12156d263d8c6880b0ceb92f8864297533520bf4ea92889448be79cfcc82970ca4d06ac29df559693a9894ead1e0ae9e411170cf91a1b0bdf34ccb3c280ffc9c85f13a3683ee7ec2edb8f088962e618b9a2399171c34fc7bf135403003215c88197c55583292b6b7fb349e96ec2c53076a55d183b0cf605b6c80dec029d21b6448b79917b5cc85101e3aaa06ccb2cdb78bbaebfc62501f4550d05d5a36fb602884e0d110e45f3a02a263e08d70c8a57d574a46004f4b3b05ce5240c56624dd11c9f638d51c84986b37a516907d851d284e4c414e90f8782a1f92c09c7c2b83bb7472b46283a5f2acf33303cbc51c5ab305ec25e18c76bbcdf94f4923d2a6cba53564167fa35eec7cb8e79d562f2ddb1ba558f52ae8ce656b2a494976bb6e6a42d095fa5d67c61f11f6dacf26b130ba0eb7ac74f76b00d5bc605747d93338f198ac32b51f332128b536918d30fb55b6b740ec439de93386eb234671f39c5fb3706b807279f2f5f54b9b884a4d3fff423617e1eca26c29781164407196aa7f4840361a30293940c3dbc29febf4aecd43bb1500053f42af3151ea44caaafa049dc47721b2335bfd025b1620e8c7ded08f76bd5479cea41fc96a0ead7675248ec69621a554b8ace876a98f93fd9d5f866daf9c6292b1a5b63da75d827bf1b7ffa523a4f09c7d94e198321cb102389c8b3bb60ba86ec92757bcee84942890f6094135e708c72ce1c317c0b32bc242fb2c8dff8f7ffd81f0460ff4008273140e507895128bd6075b2da47076998b1311522b73db7b42a62d011f423712ba6fb2be9294b047d3a7f67c66534c1e118e92f922b19256f4a895963adbe7bbdd9f82ac1c16602b30cbb81df087137535a6bd0a048adb718cf81a2d30e051cae40e07ba592a348ad49e460b0a639bd297e3dc8869c53ade619d581689307547a5e434c4ab8d3f76db5d1f82bfba2b1cd148278c1c1174c220eb7ed8c586838b97d93ae591553dfc17c37b4f7c0befc2efe2bbc31283f15f3ab837eace9cac21d291c13a3176f82eedc5e83751e67a83439ebeb29feafba28cb66a27c1b1a6e3c02b3c7c38d76a935536a9f838e9d1482229e0d0c21537e82ed7d4d7e98fe052236eff3d771c74a96d58093f0e4776991012cc991b3285f8abfc49ed1e117e7c3cb6e22b46c0e99d406acf4e5b34dc3511db777beaa05b96fb1d00e159e172bedfa13438e43703b2a6858d15faddf22bb07aa485d4dc00a254f1d2fd1c69f3e0b4914f1a6567494d7386b24b60cf63491bee07408152033e9e2239c4fac7c099e1853fc2ba9574662a749ce1d23afe3d7f3588fcc34ea2d3a36ba228715c7494c8779fb899309236a722db095984229c4424113733055d7a6c68ac6785d8d0fd1f85da9a5217414023239a6a926e4f0b34e47bab7a4c2472851c016f855cde09c113996691150cbf0d5eed1818e028761cd62625ef0e3363280ca5caede84d702ff2cfafd5e9dbf60cac582c1cdd42c2d85b7a69aaf8a154216a28e6af3237d55da876ac973d7e8115cdd8dae9f25d70098b443da5394bf9b48e64f2cee6d3aa237304aee6fb60b720ac5ebf6b31823f4d31e685b6af6e4271c6b0614c74cb511263a682e191067ba1d6ea29e5aced7db28b8f4471b240587a9db8f3cc3419d8e055fb08bebf3f8f1a951c01382bb335b5fb7bd740c126597f3ba6a7c4cac3eb5cd1cefab5eed4bd35d3251a1482e70e33211e7f2a30fd402a00fdf1b0fae3158090c9fc4b1f836f1ab7638114497efd58cdcad1dcfe13f8aefe28fcf1b047f933c2837a2699a649cb5be2efcba43546a60b7a7aa7ea21c4d23bebae429761b93576523ca45f5856d9490950f20e4484ab38ad6c9625062adab3c967b46200793110378b8c7878fb3e1bc9a4077d31c0680b8ff18166901f2a779c1d64602181f595ee3e8f1e9ec7f82431284a07dcbad3461a4b89ef953b3fd4dd1a66b6689456cd4024373c914226b9ad829a58263660c1c989087f23a44b43230350b89daf2bc82c3d005da96801a59090f462803e590c76225e4d143e87b50589662eb014f77564cc373ce7208cb341748f6b70dcd44aa23585273aa1a0137e2c0f633fe4e7884e3bf92696c16cb4057eba824b496552a363639ac2ba7a091622e0ee14458e8b39f1ac794e8413a52a464eb00234681ef90e716dd795b894b6ae3672d714612948fbd8e41153998915706d460a0fa5be3606f8c3719d45060dbcb40c584aec4b84be6d6315a06841e688bc9c098832a18015df0cdf1032af5b54e50cd302f4e13dd78e104dfac291606b8634434f2447691ebe64f2a5538b3ace5b3bbb618cbaf13397da4b4d61f4f744a8c4ea6a57a2f633bafe58614a44c42ab44c95a35155c1db4de89c518b147b2cd3699f2feb886a22a7161439bb24e2a36df54b1f925136fbd6c186b4398c51998f70c123882308ee882ced62b98cc64c3afd4b9b345ec58be0535474638ccd3a3f29e3e4f0d38143942658dfd6e003a3ab7558bcd6fead1cb5b0ba15fdf030804615e90975c5119bdf35767c29cd24823e3f1c7597c7fe6579911a60492d7abdfc26797d5c126ef72bbf536c408c8b2b20499b9f4a4f5ae002ddff325cbca65e95b4bd9f35ebc877765f9878c2e5eae9da59a7bdc54d5038e86b5605225e429a6fe2023170e32f0048c0bb2cdf59c629dce326433422ee3f0835a61ea6bb2d5cbd53342c513462a24d38c924d603422970a526078be95b47337eebf1e20c499051c2b2c2d5cf56a460c8b21e9acdca27c857a463647836071092f93ae8f93b2349b8f7ad75ca6f6cb58deed37edefd15151ff2b95fb457dcb824fd53a9417fd9f3358149bf3fa341d5316093518d9b17f3352cbc88e4f1b8425e23ee5007dd44cfbae0402911b99ad01b0b7d52ac0c1887343a37c1c8ae6a9c2b22d1c0184f2b5b41ebfdc1e3861232f50cc1bad4ed0f6b109564f82de8e9dc4d9e558a4999399c29b4385a514a9ee83c0748c41cdb975738ccb98b39090b3326e7c1536b0109b34b7e26f2bb1c351a1a13dd4809bdcad4ab6ecec9111bc9ea246b16cd90932ca7f81900fa8cf9333aad1d5ecd88b3b210a7e06fd49919817d4fda5a84aac964f3005988a36c81587f9ae013a8e347b205d2d0d07a89062cc61155e163d454ab68cb29ea3d4a2b507b72d32740c3350a936d07165e8a0b3fbbd98c0f911ad61af5ade2eca264fe4865732364e149b5d4dc4da3bc3756e0260feaa3dee7a5a244ab286a0b3849b4b10008878d107085a1dbcbbade6e17666eaeee729e227786536f6b246e25b77b4f33d3c238635e094425e18362d8219cd4dbc7d86ed2a9014f8d77643941ec06590676ec4808467b792e25abde7e7436d220744d480ffeb551a9140a2468ab1ceb696fc048176d2fde12e27f5929980573aecf9a4ead5cca8f015e891bf33014bf6cddf1ef3aef3b012e56e7cb4a232426a0fd17dafe4a30e976a90b9f6c0fe2775d922973f67511760c03cd3e6c25a8e385af9e2828483ecf1c9078afe19d68b0f9036f89ab00deb19e6e7556d8f7c94293257809c401c1d5050d3f27712a1ed455a49acb3bb82da14d6d0eb53045a5087938ab2467a878a2df116b550ce3213a93b34879d5e4956ee4c1f48911de8b8643be81cac8a5c41b9d631340140ef6aa01bba57ae17e12fa7d644838a9ffc19da104dc274d79c8e7e563ac6c537c19cebdb6f49511697d2065866b4a0a8d234abb1146b5a73723d1d189af44ca66a53efa751aa6268183319063ff986c59cb616509348f52b59447988496af7afede0aaf6c5c4c372a97af2c754e43aab6d199c44e219b806b0db4e2061e9499052fb25def1c57903eb54aa0acb73ab5fad838af3ccc912b2cbc4c532458d764cca2b52f75952be6acc65e2066e98f82b5e7c57c43e1a56784059b57755e429cf8f52ea234f9b7b2a65484da513ef295969d835c6e2a2e3658ca608d7eeeff3458e9141dfd711353631e46d3fc21c9a4de114087864031f94195b12e7864d27df605c006a412f60e4b9fa863431c6ddc7f85cae052dc4945031d84068852340f6b87228d354594541a9dbe6805296fd7a41d135db134fda2f98775c11866ab02300a4a39b3a37938803c2b3ed0ad485639fde19ca1dd105211be10919f8e25d3100c948148726631bd1ed777fca7faf3b2a844acccbd6e0f11f8d402b6092a1e3f9a3933f6e2c57b56ee7a7e674308a2c4066f56b4955b8700947d1a0bf4a25041241a1c5e7e2e5493f5dbbeb337916efcec2ea24c8adcc86f32a4e684361fce89189bf752dbf7688d2504f3b958b50f9eddd10a291b41354abf8ffd8990afb0074b32af0b97928680b1354b6f859d2fd4107ab19714847e1cf5217ceb662ee121c550d8921293b787a984a5b8c6b64234485bdba0e405c1b35c3a170849cc978ff012e6238bdc33ef837850113b84b5bf8aa7b713df6f89d443c015f75f3b080eec92df888018f0271775262c91c4ef1686adbaa38e1da0a68b28aa7ef0f90271fc85b59e30c37256f0849e06faebb82fe5421f079ae76a5627b46aef66fb05f23c7a54192e353967fb37e66c4091c936d9c250223da4dd4720fb627015b11d6d6121ec24a48cde66024960c0b1e208f57e6a72d688adc974520aff23b0f0103fae8d6d0898657e03ac82c35be37984242916c27039209e2fc16abbab1dc55d3fbdbb3ea7c469e443049c901f03dcb94deedee0603a4b7847d2db98940cb288fa44521bbde48aad7b48c64a88298076e37acd28dae2d27834487851226086516da3110de1958feffc148873608642a347d3a3ac100028da276b03de1f759335a1bad495e3847cccb2d298b7fa3c3e3c8c621fa8eea6e7ca91550ae4ffa63c0d5925de2f87cef1bbf84871c422fc77a3135a3ca67c8bc4ae845fdc94a0c233b661230b33eba299c986c98efdf7179db35445ef08555132ee6bee3ca5513b4cf9f13ed551754c751443d79a3b967ad4bca4d13ba66444bfbbc6f07b8a84804eb61d12e10c0967ac9dcba8d4092e88b60247409a542e6c6812dbda00f67a82020330e865cf6edf067a9ac3d5c53e55f5d946c031b918b71d0967e26acc6ecce2e77c0f637261dc3e128cc99531db98893ff11d86e9c538fb4838d31783677b6bd56e048ca98b31fb288b7f8c46c8e1cab87dccc6078bd9408eb38cb1cd116c63c2763511902fa3cf26333ccd0f6994d288d748822515fc4ab464881149279fab14467ea0d2ff5fececf0c7e58978a9f072427c75da5e3277c86ed4f052bffe51ea9c7af43aa61c2dd365cd1da53a6a47297edea6367a87298d66745ba3ce298e9a2d1f7d47294cf43baa317ea6141f9062a24b95b17bc1113650da3d0c6e0aa984548c614061c3623c066def1a2df2ab197118841edba62af146aa8e6bd395582355c735920ccd1fa95fdfb0d3a25646072dffccd8ad8b8934516737d515b79e869da1d668b171a0fedff15983cf3bc8c102a85e67582ec24cfe56573486236794ece430e88e91887beab820cf394ec99dadf5c44bbb33518315c5424455472f52babf11be764989b231a74240b0f4df9104e585c530f8b9f6331c36ff7ce1c9e45d34ec36138495b672580616d3f8fd6b06f0d1ba6f79281f3543e0c371a6eccdc2a3ca347e46beb47e3f4b509ac09fb3d5e960d47f1d7e561c6ed87b7e398c42223278fb6fff5ea408b7dde3f747bc61ac46da60fc7d789554e3da8f2b757507c8f0c8953df181f86642019806f359dba11de810f555cb2df3c456ff6742715b8ef0da977a078059f1c2bcbb7d6a9abd65d46cf6e8ea01765060037892b4d4e58c293d7ed9bc70c738ec46cd21fcfa5bd5b492fbbb2f1bae90cd9c08e0889f011e0de734fcf71935fd1df18ac58bdbf86ec4d3e9e22df7eb2675030c7cbe13d4a24e7418ce681e446fc542adb30aeb8db0d331d2edbe000f2bdf0d7562f269589447d076312820b8f078376b00821747a1622d10cc281aec93bf6022c61ce5c13d590561061a88a6ed0ee9a63abc9854b7c87aa5930985620b28edfc3a928735165763b9f554f3a5ca4217f793d9b42ec728b808c231f269995d80e488cf62e064baa80a200c1106cc72d13694cb3154fe4c57c43d2354ae09ea83c0cf147a4d5ae733037e85c4333d7ad7bb57dbf1f0caea82f13011afba789b9042d6edfa31f1eb00bd1f68a44db3749d9a4294c5a5bf4c21ade4a7c100bb53a10d250d1686542adaab394afad08a60992c6610780f97d0e5c419051bbf2313d12d342b892a808085dbc0f29d77d793d4cc2a8309cc7fc01e26b94f3d5fe0258ace224089ba7deb37a0ab943e1201b8bada73a900f7f0a30a92ccc8df150bae36260ecc894c2c62e58bce28281b4ad13061f8b6180d6cee2fc2a1978462c44915a71d117b7a76dae9369838d184ab6a57568244cd01f940fde49742c0deb3e63eb5800a00970903c06fd7287eb8d3d25540bfd6187fa87c02e48be864fc243ae7cd978a442cc8de2b339ca04026d03334dbe69b022205526afeb6d45f65f61775e6124e9f24cb7bcdd1b139d12d023dc1d4c01c542e5d81318754f2d148d1f4c8587045eeb9822fbb9e7ca4b6dee5a591040cfbc6bf0248725d2b6ae23b3d4df7cc8e8f1dc34e384976bfbe3dbdeabc8ec888d773c5bad966a5b393461ece17f7a88d0af24eec3c1d3c2ad0746a03768d069332442cd5f0608552abf8bf3e89f03d62382850a2c6f3fb44113974dd097ef4f44547ffa9e0c721836b3339daa9c63f2963054e92060f2d105fe71399efb0be50763e51e139446e8257f53b8a1f9ae84b6900a74b8f992b48dec63c75419b9effbb3206ee76a466ed21e03d96ac9d8eba1375ca819c181ade6453534b32f95b5b8cc58f930617d5c8b4f87165406e6a74022ecde6dda8bb884f15c02fa79627ef666b9258c4751ef1c7d162b94e3fced248518dc6d38fe139e2ee9c48f32d6df1130ab4f56f71974916f139e4544748526769a420c84b1e319c028f2cd0d46d60a0ee318f84bbb81e8e8bf990a8430dc2100118294eef448f0ec525014e3c3b492dc0ae8f83bb21445665357260a646d4882639a849f5f410f00c04428aaaf16019e88931b3b8db9e27c03ed2b73d8701323eecc9e3cb107b0a788720f6dc5a7d535497da9d3b7bbc87b9321acb40a3766533357b0311cbba49fbe6252f92666f80a9c427caabf099095128d5edc54c36989244c1cf64d130f711ef46fc9afb322829620b84b1a3303eeb0cb754e8df849e77aee59ab72e1b6ab38e36c97d1d4f27b1c64ef53cfa4c184116ce479f01430f83cc0d31294db06099dafb483e27b0063134a08d71b4606b0bacddd5b4313efa9550030935280f8c83f30819baa0b88ff21d8233fa3dbd8e04ce881972ef7f835cbd57c2fd0a22401ea1db3181e692003025e4938ab1506be9b42a0ddc4243ca276f93b1f2dfd9e55f2dc84b1422c6bd8072c3c20ae35f0c65e3636a84be06b9ad8dabe2d77cd47144065aec00b12a859079ecd9f0c5125a4a475d0f2d44b31bcf6a1bb42d582eb505726ee5e163e02209aefce445830a32e377a76806b1ad2358a298d3c389cdcae320ecdc407d300d62a537687fcbe469ab69c6fffde8a3910db9087747bffc4a5dd0016993ce8c537deba53e871291f0485de88b0028aff3a523945b45e87698f26f6c126f22b989937105e53bd86929c7922cc732cc9bd1414309885fd1bbb6d8652c12ecaf554d845440dd94c5e61958ef33d0bce64a132df28c2bfa369ec5dbb21565f1cc22a96e8197d368792cd9fe292ef715b2474b24d45c84b9d234f2e5ed52b27611c8c3001a9344e83f371f1d86d0a7bad6b11e2eb0d35f3e7f1ff0218be90f2df0c81a95693c233e9c7cb3f61e744220c4b7da0e25717535f1b3fdcb663dd2b3dccb077caa058a69133a1ef54e28c5c9ed9db55622e68aefdc85b1d4b3c96fe99e645577ee055f6f33b1e8ebf93b00c1833b8fe1958a3b9c1b11855b6bfa71ce6a2f93ef2ed122686295bd7ad0fc135834a1a759da16ae92a5557e310dc9c2b543b3e3e620ddaf495e20b246d56d465bcc07cacb8a024909789b8fc0f47ec7d2b148b2accd82b5d9b4aff1baea2950447890a201a1e8b56fc6a8ef65e6ebcba1416b43a3e8b1d21de8b75e846a5a2216b97eb4ef82a85b118ad0b4700b58b609b1c4364b7f47c15364d11fcb386de10c99339cd024b82ece298ead9478e0f6cb9b5c8bbfb4f55c228cd6c6082f6a144fc63c931999051b9b2cf449f2084e2835a9da3d4763d4c4cf28df5f3b401c03111b9c339f65a3b22a40be3554603bd5300fc80fe5251672c56c579566fd8db86d0546dd81ee112d42f3c0d24cb47bf872cf23bb9249bed14dea8ce3f185b91caa8c13a099dbc484f90b6e70e1469c512f07de6bc0a30911c6e2eed041012295056b8382b5392b58d681506bb09a980b5675b6af8b2758681b96f9c488a1835735e4e8b2d7c1e217221b4788abb4184c58340a8388ceda09ed2423bd56e13fda5c17401bf06476188452b1962c29d9ca9d50a45cd4052db7c696a1a3ab12c71b13d71bb9f21b6c5c9898de46ab13d253d6d3fbfd9ad735a7b0037e66b082bf570108dd6e798a47e20542c02502cffe1a1dbcc17d49dc1f01212039bf89e6c2e5aa148c2448766f357b8e2a0fc55246f4e5fd1cfd3009179f7bb148b192d11d52dc7642e1fc81e91e43bf38848195decf55beea980d446a91add4f8e181127618468b26d00c39e01f432796c518a0100cf8c74fd51abaa987aed47c95709332d1d06a7d1c210f51318eaff5e29f4e8bc870e4f32b2d9f81e22869cd901aba60e1712031ee1ca78381cc07209e64a80b76226b1f9f85ccae3dc6d0c2079a3ec6a088778531df149efbfe961992b1100ba31dbc2c46c20f09632b32cd6bda623be27deef492036e08185b6ffebb0bc83e9c25c01df54272a0017e830054bf0eb8857f988595891ce21db0cce640ceeac617933a902f3e83d4df74c658b70d14f9a9364f9ed299599887471e9d95d68c940ba7009ca460a3eb90d18216b7405a0241e0be2137aed7f208f8c8cc7b784772c67b0466b2d57cfc981d684d2473d7d7e9149ace551d116343ffb764af7f3815ffd34693a85fb40405d637ae52908149f1d820115c819ff4c9be2ccae70e09a2fc5d04fbceb40c5b97735367d1a428e19b85148a9d98d2dc46c403f6c6b128be3aa42553488940b1fd5bca872da9e42ce0b467c7b46723f986f11dc2c32cabe2a1452af8052bedc431fdda48fe004bc6e29b951f1d127a11ca4907da174018904dcbcd2624ddf46a6e1346b533b3fa31929438caa91257fc23119ea9af4263680e1c691d994ae0834aaa990f9b532bd1fec76084b52ff86d68e83ce0a8399a1bc02d009a013e7a64107dca73d557b2276810ad0fa1f2f73103d24719b0a2cc2821d3f272ec02a1cb29b7d0d8d08fe684e99ab45d06dfff80f01402dc31422851cd9e3d5cd9c3a3e9b3f422729f153fbf70b5c590b339723f85d5c2b589fba00c795ba8376c7cac4a3158cd05cd9c8c2130a03191a086cd5864a1a965515303914bf473e6b00c03e5078f1e4081e8740e89ce10a4ae50d192047a32fcad10c3f42c1a1e5c38e311fe7f58bf8c6c648347f23c7af3b51087950debaf6c31b9f9b039e647c91312b9be6f6fe98fce5f09df543e7114afb09b385210ba848cf2386b3ddd1184309595b54f1fab9c79e7dd899cd1c0e0bfc949002a81f11a69a5f90f200424856cdbecec171a5c729b8421155c60d7f62556e1038c335f56186901591282861241ce3141aad036ee2baeb6c83e87264f76d285e9f067c419bafc9390aa946974c539a96c12875c5dad6b6c9003f3fdba4bc6d46c89eccc21ccea4d092101567e2e3217fdbfd663ffd47f38b5a15d3d6067cb0742a578a297385f6d92f2cc1fc5e0983f60739f8cffbf897ebde2e531312fd53b306f4f2d53f8aa924decdb87237aacf33dfdb93ffdf944be87bf25ac92c90504192cecb2480b8f455ca664cb5ec871d7933b46fa926980489b50c452fbb569aadd154958083052befd6916bde77b6fb0925d8f18cd369440460dc80766601daf518c87fd932f9ca22c6d0b1d9380115663d362a6d487f28e43ac87e1075d1ec1d83a631e8a9f136592224f81abc73d231ccae62ed270e0e0f9c2882a5856bb331316532883fd44a6d408bfb87ed31376348c30728bc705c85aea7ff25e12ec6f4a4217db4a111c6282cde97979895c26a01165ee3b94467cedf5624fe6e6df817f6bc055b5ff99d60262fc41cb55a2d69927e29ba7194421e7773dd071ab1405e5f96be30f8e5e64d809195420ce91c25a24c8e8bf42a2f4224333423b6350550129884c1441bd8a57988e6779b4baea5540534591caf8acad28ef08f537cf545124f361340d477f96129055d51f0f536b61b947ad4d64db9653bc600afbda674408a61dc9dbd59506879ab3b4f3a4537c571e1a864585a1594ebeb8f40f979179a2b7a36f251487d36fc247b02b8d049a7a96ae781508564aa34af8fb6c6dcfa2c7dc794f244d1e30d9240c29bbbdc2ca8e91e6a6731329776ebcf1b878cc11c37a77a1e7f8d836abaa2409b908374ea8e048af3bf2235fbb4fb911e553441bfe917eae92152958ced3ba9861692c774c0fca3c2d4e5b808cd37f28e6c9302bc0c263eb07bb5da4612898d7b98f183897d00c2fdbf43092cdc1e6bd477accb6d9fe577fde6f8d96261d282f569d0aa17d49ddc1086178445fbba828b1743211bc895e91b3fecba5800cc993c19b2ade334cc87e6020b6f15788a337cd0cf3c84f4141c1296f19193cb37a648b0f72c1d05baf38d23463bda824d1284728b725473149dbe637e8f5f6ab3e2a8f87f4ace6900d9e096014b54e3556320436a4a37a5b9aecc3eab5eb3dcf33cfb084f50d5e104babb04670ad00d174fe1195968dea428b14077b0f50aeb3717c80eac3ce41c1cee76908c34c562c475f549b0f44ffbc1db7ee12810af1c151b14b5bfe9bcdd56cc12f502809948a4ac16187b7d0e09587ae83fef722b23ca5ce0e41d02ba94de6c9d332d1edf34e94a71aedef562ee9bc72da8f00da15836ccb9b934c5ca35b79dfa6fee94a54e74f8f501ea580d7512b703ca7b4cb1f4a443656ff17c58cdad381972991b5833c10c56f2e013e72965cb36972082b0ad6cc87b2a7a8230a0da8674fb4d11844ea92ca49e3fc47c8f5d397e4ad23f8fd60fadfb7687c442501d34b4a0d06acd90fee8d82e922c88c2c6fb697335409ed0e86b4bcfa721ad6ecfe12d6e422ba3f123b8b42ebfb7b9442380f268cf6ea0338ad4f93f2b310163703b4aaa28767e858c90ca0eb914e81190e74452a3135c3cb59e0a8550b0e9caa3688b9cc06bb3e9303092943df22db99334853bbbd3c18dde2ab879d67bdb6ac10409a0d3f9842143083f293a44f0860be96801dd17c2768a59dca927c0c5ce95a0f5ade96b7977f9c0c60b784ebadbd9136585fa9e971084877c9dc74cc3b9b619ba9c729786825728e2ab470568c24c8549ffd0a695710e51db5f9c6754398bc46fe2fdc90fba282be45ee72dd198f61676b7a95e85fa394f428539a29d99e49bec514d23fe22614abdda40818cf244e453e298609141cbeee662b81561c40a42a207411cd0f47862874234c527768de0c6255e40e4585943a35f29138be2fbc0f98847c66a474a1fdbd97c1df064faefbf0cd0f76dfb2e1243f40ca5acc29df4c3ea9a25133c56c02aec105d796ee1fdd11adae481e69a89d9b90d2e08606ed924155221edd80e753e93b513dea5fe4f1de04ec12ef8fbc6c61f168e4772f791d33d41c7420c077d8839d26bef90410e4f1b345069417abd82220c21d06a448a574a32805932e768bc0ec6771ef1e8a82e16039914c651f07043400ffe30fe21e447046f6f4fce97d67359e03d541b59c1e25a17740e4eaa729512be1153fc0839476a2248ae1089ed6cf69198c5625f8a1eeac10bc8385f6732258438e6577eb00b45414ed3f106415c92cfb1fc55253ff5716b1a594a1944b072066fd29d1a6777aead0fec5e02ca7f6a681a07de028d12e0d737764060441d9ade721b92df89609bc9d0ef2f0da529d368d206acb9b87fc1288bec2a32ca1e038865e9db7e36fa12854f5388c859557189b9d5c303319a883d3acf87b73ddb42699ecef4bb696a67a346eef7d8ed921e6c4d1350e501aaad1085a7df0b3fa8fc5b44c0ef8a4258df11a8d983c62a2581e750c64c45fd3a6ab41e51e1e31f02ce2f589792bedf97e9296ef244b6d875e55eb914a1f8e107009671956303c1d2e9a60d73451820b11d29c54f1913514fa2556724229d3d83d493386e02d4c87bb528f661097e7ecb6621dfb3becb3549e3b2c114f927dbdb131982a2f7e719a53b19922766bcf9b64b18d4e2ebcc5bd9be0e22617312c39b7e1755ea89283e5828a8059d7bea8d70cb2d23aa996058f4d871bda2c1ba803f359b9da5bc3a80d53b27dbb8cf505d6433baf8cd2e8b33416f17d3329a52e028129a69a872d26b73eec1da8ff81afe3b7b5205a9b513d3a4b5218a4d14e6bbb732d97e2d35e3768cc3cf6844ed1a6708aeea9ca9a92cb2c6d217c62c8374b724fbb344404ac8db4acca53af1af96ec1207a8862a5e2ca467657e9c053734bb5bedd209d55ea4d7d0e098df0e4b843140862cf4a5cbb64882e0a85c9444bdc6e0eac93cb316b4a9f4960298c831331f269faa1c3ca43504ae3e2fc0bccc6547dec972ce28bb0052ad8039269896db7efe71a9496d03fb2601bdd664dc9a1918dd467a6d4179f40976797d6b9e74c8b41e02e6005969c5af81bd3eab8256e925ffa24a76f1c90ef27cece8182284dd83cac797a3150248a12ef29f92d651b2238fa12929eae78610845ade99cbc8b1045d05b8897aded92ee5b2ae63d52cea5345f878b112ad5b9b97140a5ed65f1ebff297ae938036d21f0ce5b524c8e92a2ac0acf3a3f8d8ec716d7291a7e908309332cee43f67a067b4e4296e5e5464b2cef5ecc9889bd51a02a6852bcf4a36c18ab4befb3e9f0449c77958e815f01217baada9b3486f58fd476b91fa45aa5aaca083d83a2d84993792ff6728410c667c083aad965436911555baac2ed111952cd2f39e59da66ee1c2bbd4e9690acd58859347371027717653c21b327fde8e05ad1a6e04c91b2f7a35e8f135d6cc03bdc1cc42bc02ad5a72442cdf96e41a158e3c793d9e03f9852b31399a28b7c97711d05353e64e4a06e412049aa4e68559305656a50335b0ac8f5c558183abdaa9a2f73ebc3727be013578ca93982a7122b6fc88bccf692beb60b70c032eb6ec570961e6be7c0bf523389e0a6af4b1f1f828450bf7cdece554cfbeff4984882464cbbdb7dc524a99920c2f08e907530832ce0ea4714ccefe42e3a054ce923bf9e55cbc0667f558ce081b3e39236ab80cc7e302670490f7d8a801845b29adc1d1392fce7416d7b8cf6a3e99966996636d4744712e9e693e2c26536672f1cc85c585b6b49cb253cba98b284f71d35b38ad470c07547b6aa02e9445a12890ebec27cfaae673baf65e186eab91659ad534ea6ce9c6bd7037d65067cedba34e69f42bd65aabaab19f4c5a96cc4b9a9752ca8fd2c8740d3bc6493aa59cb252211e47ef074c9423e4403212dbd10919e354e1b9e6f9837996d562b2f3962ed67027cec4f13b84dc7ddb538d83edd9e813e6a95b9c909db8f30305044588534b20ecc9a58c31f5b35a1ccefac5c5cf200e3b5bdbb5c77d61576750079699b48bfd35f16b1976f28b839f411d5007a665de27379d4e9d0963eeace85348eaa39473469f514630302323d4c9743576cd334bf3d1308d634a4f262369f4c3b4a409132412db52ab733233672c59b265e613638c314f794e713d387693c99a278d310c637e168dd3696f5ece8e61d775e5c02119c5d57871b4dd824a7542a51fd815485c512712534f2a58da97d5b9cfca4adba510fb1d23b43fe015485c8184fc16226367c8424c1a082780dcac84dc100d29c5e046204d23f5271ac1e0112109f1a6a0e116159145ec90353a4a82e8ab67fe534385507e6af8b646577a90e8d5a95bf5ab7e411ffdfd55bf983d7eedd123cdacc11296b0042429ed92926442562a4b70a605f7eb2246eaa22eea222414152414520b2e0d4b4b4b48de10cc14301f2ac9f722e5ce19b09512ee4757740575dc602b1bcf49b095cc73f752f42284fbd9502a7a1b4a374f5774f552e40dd127716867a7870b40a64c6901c9d3eebb7676782cff201a18432fdee2761431ea116bbd77dbdc7778d098734e4143e6f8cbe20802fa41ba3b654a9329539a2cdd1c11882677dbdc3d6f086342911745498a56453f45aba22439dc196891174545498a564fb89f007e56453f45aba2f8f38de31b08662d280e865ab43ce51d2fe8e0b8d182a1161b10f7abdf953be3b63c774da08e96ef6fa1322ecd15219e430405f55090b5ec57f718f6e4f25fced3d5e1cc0d97cf0bad1e8ae289f07f4c5499477ddaf1cc0df7834afc4573d63fcfdf1575d3c24191be75cc33ec0797df5a1d1d96eebbe1a0db7db53b755996b1742ae52d2dded2c1f64c2c1dd4a80ede4ef353f3d2d2d579ed9c3b24242424fb49feaf396faf306218f6f3b5deedf2d5790e8a50f369eb597b99dbceb2fa06b0a6bd074ef45117056dfee25f75e92055d0f7d6bdd4ead2b5b40d224b6158f75d5e5b8c2effbc3d24009999e7e5ae568e27eaa02617dc6fdb66e441fcf9da4b34341692b7ba8f8689cb5e7b7d04f5e225d7c20d50bdb97928458c31fe7c7c44b59508ffd74047740d046da85c9926a376edba44460f4a867e2523d31d44e3cce3df91e7eeab2e73f4c9b80c9745a37f1eafeebbb18ac4f191e3a09dcf7bcf95f47c3625f34ef33387670ee5c810ab54b9adc98e656812b405556158458b9b7af2edd6127050cfb20e73d9b2bafc58759e966c418ce3e76959fb5afd870a426e3adc1928d20781be55b91912d421431d4985e7275ffd4305019fbb182528dc4f00434a2f80a11d328f21419bc6906a8cc5b184f150c643231e849e871b9e87628ebc66679f9d9d87ba06f3e6a024dc9bff60140eba76f8eb2b073fce00a17ca7b1b1e05a6e844b4344955b10ee9723874e77bdb25a5c7d1602959e3a6b3fe6952b57aafcac5f39d835dc0591118928bd8b966559966559937aad7672db11aef3953f3084b001a72a29ff64f14f07e5dfcdb3f7bc3d57cc236659ce6239caf29349b3dd57abb52c2ae4a753bef4e3c73a28fd761717447a8c3e03257fb464091e1511f4ed2eb49454fc8e3c6596a68f1560f24f05696526a594adc5d6f9af9abaefc6f32eb7b5fb3688c1f6280f08bd2f044fddc85329515c8b70f3115a9e410aa1472b5ad1faa0cf7c426e1e7ad481e49ceab0fba85bd4a2d467ac3e612be12c769fe4685bf3a1cc9d10fb32f613504229a194524208a594925be2e85b742919c9731819945d6a5a104a9f1e238442eccf58051ac1e63955392871430875e6cde6796a0ac810429df66ebcebaa175c76d810c2e8d5ad892a0597e7ec18e79c324208a14c7b3072945f4c09614a08a735a98c32ce2e69ce2499c5c46c489a49320b0c882449ad79d53967b7c0739912906487b0c3943329290b4984011125597b691098b24e1a77ad6a5714ae85d026b28c4ea99452264d18203a48ca0b9b5156210389c61925262f8bc68964c405455df1499322269af216b954a49c52033128d1d9d1e00a415161016aef06a0c931100d6a2ff68f1151163087ab340aaac02ab1064226c48e97d8c808c8a706d7022c545a9a61d42c8be30067c47218480aa13a26c201e6340a604d3b13235658c060e24344760b3c8d0298c364c01a177a18915145a28c5c60d432a394535e8d8d8230a21205e318890c98c3366022a3208ca85c3620a253e435e5eee8e8a44e9a4f94360ac2888a66ade6635916cd7495119767560be2da6e8f5318ddc6a1d2bfe9f28a4efdd27ccc4bf3b1aab4a49c545c523308a60b86104208218455b67429a5bc38aa206bf996e254d764b402d6b47fdb8e0c84b75bc6c68d99874c4471d00152818332d62295323333338d066250a24fb842ae8f859885da5b32d4de0b0f600e1b35db00e67018b0a68d5ed8e805a330600e8441981d231909f95c55ae0560c8a48fcc1c009f7deb9f8d870ead7f3339aca445131bc59a86812bd80ea8f658875967a4bd235dc34456d8e82b868111fb487b476c9c61a45be069cf940017b880b133c2da79558bc2c9449c1088ba2f221d6e8c12c351d40968672b600e12235d0e2e2c8704e640c837805c046d6ab84cda2b62c1dd09b576d5adda49186454858f351fb98f301f511fb9bd08cd324e4691957fbaaf325fdd076b97f3e57c77739844f88348409020124482483a599665579665ce9a4fc64ec09af60bb5fa78155558fd0a46d11a8feb65c72b68d3ee9d987c94c1fd7a05b3e47ea821d490f45aefdd3677cfbbb9f95043cf8385bf46b2fbea4f0e97dd4ef15a39be979526979559732c73ab6510c8aae6632d2be56396dfaf5c90596d8cd14a1a34cb6182266832c926dc18932379d3b6651dbd3cd1dfe2a6b4d45aff6bf9a8f9548e9f5a5617f3433e75f9b48321a266775330c7025d1373744df432708c01bff06dab393efa14888239da8b8e921d5bb6942c0179a12d9e96cbae73b4d736e95aa06b5a7e313ddaeb1772b4d73b5ed7d443cde7bb49ec6d5dcb4a3d18318626460704f283f08e4e7b4ce774cb2dda0581935dd2185d76989239237b827463ede5924b7d453ed21885bd5ec4b5fcdbfcafead536c66db1c68b884199ace2b24bad8a6baf18cb917c6db65fb92ffebb7dfbf68c41c62ee687c7326e11132633e8d4ccd9593c63968ed3a0b842747e069dff320fc26e9d3bc8cda0f34132d7667085e83cb53cf34f880e4bf4e85fe6d2e6594cfee57896d4b3a89ec586cabf003ccb7d16879de3e25f7d1696eecb1c73172e002787a69b7aee3eff7ae860f0251382c8aebb41f58c41cccf578d2abdfc68f868840a56a24b7f711fad4815ab313ff4a355aa04ba27ebe876c6b5fca3555e29d628411b6e0854495bc99f538a7948cf3c7232d4a175eebe989249f0e596d38b52ca4c99ab6579df4f6dd8e51856dd7288b98575d0b3ebaa120ba555e694bbae8422eb8df7af6703896bf9e7bdcc472ec31ac3941e47d7b4b7d779485cab83f2066a7dc8e8f106ae8075b14a71f96bbc78638c01dfdcf9ace7a1ad5ad615858cc0a492d07710184a724aac693985fa27e3d0847273a5b46c6d13975fd392a8d610ebd931c95ae5ca5d9c36d57acb3dc39c277e20c0f8eba5244789c96df01e5397c4746b6f5428e22e49fa023c3c326287cffaca2687458b4130c4fae810dad8f70deab830c7ba0f04f1afee9b0ea1678316c9cf4edb268dbc752473abfba26f4b5c7ec9b6d2edb14da6764ee6d7c5795d237b6a77657153d7b2b871a8d51c704396c10c667448ca2ff521b63d5a79087428293c5ab22439f9945b08b697c5688ee4b52ee3c16994ee801ce34373939bbacfe49a23f9cc64f2e92613c7834ddd67a7ac351fd20de12b180ff8968bfd1a8ffe22280ff3f0a848e9336b2d175bdb61adc67d3ce00711d2aef974ad9ba17dbad57ca8c6233ee69ac6a3ab5ce61817df724418da502f229b3c3f3f1448207af8f04d9867dd87a5b0e91c35cc2dd481f5631cc77ecbf195972548f2d519b39c843a8af0fb64ce0e87f095af048f3956a10d7ba5dcbd3e4d63cb0559ac9327c23abb2abf21a79f6ed9abc58c46d68ee449944e84076a3e53fa0a2f5dc61b7ee3db6fb0204ddf4ee49abedd34e3f3ca37f79520c9f7cf37749e76c9136590981f2b7c3b11b87ad8c5f858e1db5780571ec26921218ba13ea7c73aaf7823ca57233633f3b51b32f3d533cc42a863eeb83f8497beb2d25787bc00e6057492cc7ed531cf343a4d539e2c74c074cc237739c649ec82c064e1a1f6633a0b5fbb212c7cf5ec5ac8584769f2403f08e857ebc7ec24ed828a30a43cf5981ff17300f5ebd9e3c757be5ef9ab738bfae969574f482c661f604145c2a42a30a1242c082a44f0e29a4212d339a7e5020d33a0c0c51854942e3292985081180a204f0d68471925aef420d4b2accfb2bc5e96578b5297b4fbdae9e42b598cb1c2209a8092c40846b42ccbe22bb2cf755d4c981cfd1005da3077a05e10426bb9cc2d0779da769081a0f334ec6abd49eb3e247d5da60aa143cd33a841a05bc007a86e1d72b56fe00340ef6e011f00bad538f830835c07f1c421d667996b1c74cb65dd2abbb2ab42a9d5ab77adb5569a2fb3d635cc2d075f1bc250f3a93a3bb27a0e9d5a9da7ab841d4d5f085e08ed3e219b892d111ecbee93dc1d639575d21b3db89f7ce8d5e031db18e35e0fa1cd0a52dea820634e4108a134759704c2ee2e46809bdb14dbbd76560971dbb3a8f1a8efbd5409a112e24a1a38b94dd17744294d313e8e74313beac38632284a27454a3079e91925e2a5f33484569dd592922ac925198410f690c9c0d17eb2b9ee2e08bbff9099976e7174e155760ef748ae8fc05a52efe88cade6f419b7a833c6ebf26d8839d45e73e64131c7d44da2d964889e44b3493b8cf072eab3681671134e343157b206eee6542822466e1e52fd9b7916998bb2e15fea61ba1a9ccfdcd81c00ee9fcc734a86bb6e833bf98d1b9bc7d4b8997de1e85fceb6c7a5b8cd391a8ec3b1713b2a2e9579e6dc4d0e1d224609c1dd88177737fcba7b66351fbfc172c36f105d992e86db9ce3dc5964b80bd3ddcdafdfb8b1dd6dd371bf5ea386bb43cdc73bfe1bd9cbf57a4f00e062bce36af80b279fe32a67b9cba56c7032317e7ddb62503131cc35fc3a0c4c0d548d1a301cff766388172ebec54259b8fe1747a14e2da71333337bcb0c0b4bcbe5475d8f7fbbaf046fe2a24f1b3766be1dab42a01147e78e4f4898ed93273b3347c99c027901216d66592e6e43ed794939fbdddc693c1c37397476785ae83e21d17ac669eec2593d97a3696ffa755dd7594c9e7199a6f9b05896ec66284cf331a1501c86b28e590945d330eda445967ee2323771d6569b593b67e6ecd795655936d9312c4bb5f027c4b2505d93b0c925ca916ae02b3d35dc86da137363ce8bc3584f39bb87e3a6715a9c4f2c7e5d9cbd47cc091c84362ceee2e252f21159a4bd2fc1b38a43390dd98723765d4c719f8def060bf7cda096ec7f708988fcaf896e38acab7c7f4d4444de96699cc8ed37aa14bab2ab1d83be6119ab29d420441364fc44d1f38026a638aa628720b0808a9ef618d41e85da57316d001e3248232b4bca59b896185b58628c31c616ab2573a8f2ab0126871785c3d2e2d07bb8d03896673cedf58ded2a2be80620253f478c14a10108b48900acf101bdc671011ae518f5078dbc07b4696722266a1cc6b1407a00e901041ab900a4071017a0d14592e28b8c2c6387758605f7e38d9b7644f87f54703f68e53ba6ba882f7098997f1848b2128e7176dff6114776d3043a98c1d17f1e033190929cdad3485c4070f07a7d5700e650a71d175114c02bf00c48060c0352b14b4b45bc64711117711103b93aca96616490e68b41945e4f6703c1c900f4da2b4e0ced75ffc41ec4d0387c830c401c56027aedcd38d417430ccbadae832293f1fd31952cac88e28956abbd37db36ccfdf2bc7a73d341d6ab3aa8481601759b18da446cc6a0d9f4ca4da432ce9e70db6ec088e2c50c8a3f3838a3ae8ad088e2451541d21338388942922850f4b00e5d040107404b2eb8b2824dc620aa0225a9c92a0ad214a52f968aae10315182a808e6686269604d6deee1b8d169e244b6379b346922ab84f4c707d991932594e5df24baaacf2421ebea76f45f73ca54224a0eaf20087e1b350e123c72b2cae99ef6ab5adf24e385e692c69149ac2758164f3b41caa68d332f9b409bcda907b1bcfa67d52e9562a711153d6612e52869251c4b9e533024e34be0e0fb5d1e1e2db1c3770ef7b4534b268931461a3ba29e441018227a0ee67c6dbbd5553b97ac90a20725a4e88108f9100a15361cf5008a758483131cdd20890a1ba4558613ef4474e2e30fb8fa20f193514a29b9d67bb7cdddf378c5029c3f6430ced91149133ff0019da0f36a0ebe8e02ae1f489e609a0fb89a2cd1c820d4a14168330cc2ab76777777379d1f8410c26abbdbbb9b31d3258449b31946af482426c6eef4dc9d4ed4aafddc994c2693f5e37aee34ed35a803d26b62323359191d4a69e5c964caa04d67920728e20f3e0a195f2c5132843086d82106ca78810e404a4b384123062f781023c90aa8a8f20327e8b0440918fc608a2034a1430f74b881a31c8cf1f04809a3a31ca4f1a96ad1f9d207223e3a84522c597d60fbcfc8cfcfcf17d99e4dd7bef64488cc285ffa0260fd4845067ba8f2ec104ab124e8b92b125588fdf9576b17e16c97dd3f3f3f3f433db1dec87c630ec39ab8b1a74a2205f9fc3830461f9ef149e464aa35534ba42ebfbacf913ce4b9bc477b2db467e9b6a3470bde38fd91cee996e683596e7546dc65debbbb539b4cb526ed18b96f86ed834447f2adf944199dc6e2aa9573564beb8b2b12b20b6b6b26653aebb6222ee798fc81b9742abbbbcd697d4e191a17e3460907496931b7997561fc32a3925e337f5d5df4deca54d939b7560ec22c46f397b305de82335fbbc9c40d5f17d310916fb920d23934ee57bfd65a6bfd6ed89bdccda4b3e3ed872b9943e3b25734b4308308ae4519d6aac8c74ca51c6b718cc5319463ce511ae73ae68c394b691c9363ce9875ac3a9639e6e2983710a6f26f3ee6f0b31ec39ce10aaa0ea8f6a878e92d8f3eb0373a91ddc7983bf9f6540b4f3971aca48dc17119ed59893554e51b2f6da1e228115dfa6ffb1584365c148ae611d6e268efc853da7d3147d7f44d7bed83630c167048797333060b387e55438a3271a5c08b9f1c775c05096d05012401be5e1f3d765c0509d7b6155f05292ee126734cca26a027a5844c258d92a63eabb2de54e85d452e09bd0aab6cb22425cf678b656415b2deacc6ae156366085896652deb9ff55684165caad5b1eeb2e4613d86d9ce8b35d5e953cfc37a9e71a5b42d505cae47a0944f65b53a3985206bb5b8dfc62c650ca5b36b814776164802e21b8a1839d23896929dabdb718d33c239e0ea785a985e7bea2d273b1ada2b032e7d9b4eb6942d65346459168f10e343c6f8a01e847638bcf6580b1a5a9458149b9286c6ab17ad9d25d3deb6552a62f7595f6b8d318705162ceeb39e764418f5dcd1b4d7512ec31c1d2975220b306706d6b4cf8f3ee300fab17301da10e15a2a1f45098888688865a8868507aab8540bc7c2a1b8cb49cb323133ffdcf074656666669e96a4f5c232cb03712c9772e86e7ee7f559e455cc81bc82bc82bc829257d7cf0e85529a73ce39e7a453a2949e6548eb4b83d5b7cfe904f873e9e3c04b1932fa04c7f8e8be176eda3b557131873bfaa9bff0579b4230cca56e9f4e88535a33e362fe6541396e7f370bfaeed067dd7765308d1eb3728bd8294e0bf428c4b994d2873072313ea2237938a1d010d07715377a6b3bfa0e11dda258d35706d06b59f2ed4da052d015823666dce85f1644138f2ef398f9d36a0af70a43d60ae57e394c6eb96633c771f35566ebd90cd6ef57cecab8d509a19afc8c721ff519ec0761cacd603fc88c52903f575827379facd1c2ae1a691ee3beedd348aa564767a39169c204235ca193c3fda292efa82426f10effc1240ba491f4f384a7a4ea95cc1f5c51eedbf9b68dcad97d75ce39a76c33b830b477e52a0941c9da13d2fdb6149d5647f2a0d8d431c7084bc7c529514a7b7dea220c9de530d6cbad5b23d48ab6bdc6c5222292dbb66dbb2918300cdb08700512579c902ec3d05e1bd172e30b9bb3c59a5eead4e48953daebdac5a2f6a2125dd3392d5d23c5a258148b6cd0fd3a29b694f291977a8cff58c9d22b419bd69ca04409d5d809ae94d56b134954cf64ac32839c79d4dc06efd1ba24aa73cca46730f34a35be661dc2576a8a4e79b3a62f9091a17936f26cc9f490f12fc6727621db579fdac55851e699b39fe7799e8cc7cbed5544b270e5ca959731d291bce46a5bd6682753ed7d8124856559f292b2fba265719556ad97d75a2fec062e02ce9e451b6b302ae8527b34bbaeab8aec2cba836d572b953fdc9a3917a7fadb381777693f2ca72e69b422e7a0546ebca60f74b6f581119867d2ce18713f1d2b8de3f2d0ad7f5787aea815d0a34d6894f63a9e01e315a8423b6d126994c6894bed590171a2139ac433203de39b2ec11a2728bd9428bc1429de0319019f54226d48405b272b4b387c47ba44a533b512b1a7dece32c3fbb8bf14731ad66020781f352e354e438f7a53e96cb92b30e70c98e319b15d96c9eaaeae5a6f39a0da9375581fc1baa173e22ad600c526500775a31d90964c21428949aca2445c829283b9eab11a32720e8eab987341e99af62846529092a6fcf5c535c6b743f98fa64197da2ba36b6277ade8d27797405eb53325a870c26d394b9e4cd9f4f0affdeb888a284d443abd38ae5c77ecbe382543b800b6cd48a0a4b3fffcaca0c758e7e6d1fd7a78a41484bb54727f6cf80c0b2e0771c40d7630e7b4217fa637016b2014b58afb330a16db730fa88363906187fb41251ab4ca1607b1d047f9d165c0fc9a9eb9f5183331221a628e076ba2d7da7ddbf5dea471463da0cdb04b03140581219cc8607531cc297d4e26e2e30e1f59a86f08fa692fb2928f3170bc90c8200d6ae6a56c66e60efaf9f9c9610a26f41468f8889204dac06f54cc5112974c006ba00a74f0114506b006fef7f2ecfc26203c3da6958ff3a3f7a021f3cba31bf1e82720a883858f0e247aad2bcbc5991cee07573aea47c941aec69acb84c3cf4969b6b5947dfcdcf693373f3f295fa45f07da40ff81e8c6fa0f76483e8826b0d6eb928f84b9619049d9cc0d2d5a03cb59ec628c118b57adf1232d203032b87987915a57adb35eb5dec82b32b4d237be5642550a2c8652ca19276d6a6de358903b6bad658a27c8b8a39cd4aa56cb340c56c9ec25b36d56aba97b35cb822f744d3b108b54eb74d3c95ad716d78b3b4d9abd3a40628d3744824a97ad198662895ab7dc9853b3a84026e01c00fe825bbcb3ec70d93f77ebee5c07006bddb51dd6fb0fdac90475509fb5468093c004a04d5b12081020d066e6079566d24c40a04df7ec54165906638d558d55f4628cd14613d806141cc618a30c22c96aa653cf29c39c3148618d7413918fce73d29722f8e8727eb4d66aa6d3bd279366c960e6ab084916174873d21c370520c0631ee9b5ba1a3cc8383b69d531767676767672aca198637534583b75e7dac176b29dac56ec5e5b6d6b696967e7885baf4bd289644161d8a95b0002785087e5b8479392595ac91c7d5c2fe7bcaa45a3e4f070b80ce6dd0189358de39349fd27f36dff9331d5aa753f3fd98f0d2620358e8c11d74e59645da153eef6f0680a2d9ebd3eb9359e5c3cb8303360c1142fb09698c204d6132ecb92d5c5a548b890b896117c70eb1616144090a2488cab7a7824450fb588dbf2f0480a20297ea6cc27ba4002420f3d515899810f464a422de83112f2718454ef76f170c3110d9c705d1e1e1dbd806e715f1e1e194d41e8d2874746567c182d1d191971c403293768c291d110dbe6d9981a3770dce4f80d46c6c653d9d27dd3afbb701748cc812d1deae4f33e7355fee452fb718d61c40dfe54993d65d26c8d67cf629e1dbbaa35a7bc4183fbc96796a628e05a2bdf5a6f6566c9d506d9c317350c509f88a28b8f6ec35246144130e0db71683ecd52201a5d74616101980036a250f2d16bea056c18628729485441826530e1c408443041109290d2d3ce96951c985252f470cf67a1e0a14261c647f7ee12a03980fa44123eba0072500ae2e200d074389e387ac2878f0e0024b8749c1350923eba5f29403033375880028a0f40c8e2a3dbb838d826cbd498030081e8a3d7a84a35b830cca600323efacbf542898bcac9474fb1942e56a716961fa4e0a3a3bc0e4a42ea9e10e004161fdd44012c748041119e00248514243f5c14014a1a3a7841183f537cbbc73974510316cd6a3e9223113e3a1165d584c8c31651142d01450953e8f9b6ef9b47e203153ff0000b3096d881889e76af19de0eb2e2c43eb89f4bc78e563c58c047bfa870628223a06046932e7e7a666002053f1ce1088b222a11a822e8c7a8c910124ef45c41430dced02187239881031d58676c71e593257c745a37beeee9b4b7d003ea90ffd929fe4b1de03f199b8f5e6f191f9f3c89e2238e241e74f881064610a3889ef6ad7d70f2ddde2306a843886479c2b53d55011f9b68c15731ee27994043f5ad021013403f00fd20c4cd1bea3a3c9f0e9d10f2703a3b30868f3a3cb28bc2fda0520c32684048e3e8b0b74ead3a151e75d1858e8e0e9899b92377236774b8b33b7202243d22984e82114cb7817ba67f37dd11eea13a2c4c5c315a803002820d54564aa0d01301295c71061653fc70258a9ef61b1d5512ae4356bcd3853ab176cae27a1fdde3cd4df4d8a5ac27084fdfa91f1e295df9d87d9f92c820cdc7d22e2e52aa549ea958a56295f417e789f2a5bb2edd76a47312b8df38c2390966dc86775ce43822db71b087e3608f73b06786833d4157ae7f100d4632fa3934b47b00e6dc2f73892edd8e7e1795c7a0ce8148483f3f3f4988286a1c274bdf4b50beb9c8491a1f899c58f92f2a21ff8b4de2ca452569b0ccf89652cacd87cb92d9b2c6637a7422a12546da3b62a4c81126413b0c1121250fb5d75149112372323333338de4a1e69f23168cbfbc6c2a8f9191d25d9c59c6b8c8c46cbca954aa4da572954aa5729e56bd780d7fe1e0d780e98cb4d72dc456d84a03c1e07e3128e6809ac24e40181eee77a350e3c0f806e3ed71878de3ed862b9d27aa5c1c6a3b3657394f6fae72e654eec2b1fc4ba7621877e13e2443cf2e617ce33eee84c06c1c4cc75036cf738f41b1250fb90ae2e17e91e5c9770c6a1cfa448dd344cc5288b6488de3e2f2c5b393e6f3c2cc43ad7279729391d8a4715c9cac1a871b0747ce74ed4141597db1626311517b591c12baaeababa81c6395cbe73c731873fcdb5c6a135969288d93d438aa998eba749fd7e8be0da62382c924132bbd755f7de930cd470a71d08d21ae8d4ce20b365fb86bc6a0c67111c25111c104eaa8e12ffecddcb0f15f8c71954a4a8740ed71fcc3416893f28d83d0a6c55f02a6efa8e4cdb764bd746606000000a3140000200c08874422a15034225474cd7c14000d7d924678601a0bb42c485198320819630c2000000046444468a60d0acf3bb98aeea0dfbd5d34712f266aa8177043b229a9e6e36591489a3c6922ac8927d5ae2bfa8ca1990cc9f7202a6684ac4f8e262a2bc7e12457afdaba355d889254b382d0ac020ebeda290fff8e291df90da38245cae16ce8bec8ac20e8ff71938bd2da725910dd1b6206f94f406fab3a1e6dd6962812294e60bd13baa19826e2706633264569afab37398026f3ba02503a39d692c79a50a20fb511dba6389fdb7c1aca7f58681dce8b367c544a349f0c32e988c8e2006f4c2383b9d6048e2326fc7d29451ebdea11ba95e2eaf0c23027072b17621408be8a5feb5b6ad30ee538c26b366a31cebbdba0b7370cb08a3206ad3b4264bab41b6b20b071134a2a404bcdc3c0a3d4a66feb19b22c12040c593801bfc5716ed086e94201db8c920e660a78fe90a79606b4633bbeb5dfdb6af13af0d93644ff06c7d0023f0870467668f438ca216e81885b0c2f281ccbcbb8ca51dfd7c8afb4fd3a2077621e86d3fac176dccdea15bb1fef9fef1ac31bd7e106198b9d1f1c94a5aef06f63c9484400351f07c7df9518d97b98ce65b9972e195565685039e47f782671b023638276b4238fb5e963039aa546cb47f2b3bdd14661ff7d288c00c7eb926c72a8467bb5c7f58592c9d02b5780ac0c8b13f4c3d0d2b0c5dc65af551597987df015d8430f50251a92959ba2517a94401328c22e98c639f1e0ec1b413c567eecac75c51ba5b0f438f5b6d7424ab15ae62cb53c6436b7f5fdfeebc74badb525378ad3d5afc0b411a87a44077857c4159c6af51285332709c1adedbb21c01831a6a50f64208c50b402796fb120e8ea8331deb3e3a8f89a15573e83639a068bafa6ad945fd80371c289cedadbab6922298ea760e4645738be1c8a276047a0c1891e72fd69a52b25eac948c4ad6793b778e25aa05691546f6f8bf8734c22365acfa6e64a2fe8431c7ae13816e27e3691a5f7dfb35275073d98d4161856f86cea0e463793565f7db9e2252c63d2a645461783e86fa0164e220eb6657720396fb09180b1337d72c3d4da18367966c15445e49ba707c67e391649be3bf9709e26834685dec1d6c6aefce3895e848e36abf2fae19fce20b9ff8d0bd8f03373ab6c631deb4d0bd57c123191d274e2e4d74fd43441ffbc09fdf318fa231b4015e3d49e3d28a877d74c696d6cef2e2e0e0bed6a2403401668d357d262498d3925b27a307af4f32bbbc7b6af8f49dace522d5f824a7c5aac0d4939b37c1e58be7a47a2580ccb3540cbc3e7966f8f01668ee99b9fb6a4d8bb404e2dfb54d2d1ef869633eaac8a2d694a251271d084af842ea3d4fe972c792d0b837977607a59a5d017f09aea922fa42042299b83cc9f6fe2ed067770f28253d9adf9a219f859fcc9bb8d7518c3ee8367f4d7ebfa91ca30009dac2d504628c57023305b90a5c468a82af9acafb33bfaa89b9c7214814be52ea074821522878d78b8516905463e979ae365b533bdc6c44c955eaf5e871c70786a821c16db395fc5d67603fdeb75c886a15254476094f85df85569f92b1f7bd957a2c43f58463b6cfa156487a4ddc58dc5aa3024af3cf38fecd0a1c895385b1a83e07ac0de5c954f755bb2d2bd25838fadab34bbea492d6253fc403d7bc8af1bf64cac2e4dad00032be7bfc8fad2971a07ef00cd04665ff075b966d415ec0bc615d04530dfa27dbc83e57f5f83fe38758840afb8fc88567884c923a904ebe419ddb99c8ce700f3ac42cd4f9b58adf37cada6fb97f8f68863c6ecb9e90e7f73a4da8288f58a0b814bc5fd0a9a6801274e9cd2bf1a828f9a9014ccabc5ea4ed6418f0a697fb4e078670612c63724b275db8857b2f500c08fdde33dde90939e044f3e09e242bb124eedd589969e1f5a9d5addd31776b92e799210551305c4f96cf5ccb24560b0b6468ebc1b4bb0c3ea5f17d499c6b799e90d0d08453b752327ac4aabca0d103c8ab465f9cc29df1d989f0a9662dd17b4ee843d50285ff91daac550ea8a621c9bf101c040e591db7f61df339b47e199bd7dfb1fb5b4eb6ae235516f335f6a54018f333bfa05713695211f653a614fac704c5f67d98bbacfc8f129c18af78908c554f094b6b8d16f216d27a7c57109957270c2643519a69b68c0fd08a1fc8fcd3f228fab97e7f7499dc4cbf42d54bce29a88e857ac9b22b48b2be509ec120e897a8648e05231bb4e8522900bdd06f883a01f904f3c2a13e688355966cf2757c8123ddf891a8b45266d547bcd585126d8df05c72a6c4e2d10ee225cd997c42767e8c11acfa12104cca5d9c15bf26ae166733952e8d566d7ce9172f6e7be832ca7653fec920e2183cdd3dac21b19ed445b84b6e685f9519329b468752b93e496f1130c671379b647bf192f1b43385a19e365956baf846eadb4bffdd8652f84fe63b792341d19482a680ef1ac188d60af3c69b60ab8bdd01cd0a1b83bc88e9edf8b79933d48ab79c0c6c2641bf9145eb889de7d483e6b62d1a6ca6d00520b9db77216f9d02e1f61613ea2e287d30f2327cdf29689d90778f7028deffd9155c9743c0be642f03e0153eba7e10c1562f8dcc1bd41404ce18d36d80a3ec0b25bc51d895e1273cb912c6d099911648f7443481548079314782df4519bc53cb421f46a7890d3bd505045f9c3665ec906547d13b143bfe156b13331b4d12ab1d667bfcccf20cf628f8b85fcc1ffd27742fba98bfb4e37a6680694b27fa6b1043740eadbad99d1fe0b5fb873a80401cbf901cbec3df36527ca3741e463eb5328ff2873c392474ab5f68de74b4202a7fb9b66117371b6244c342d9fcf16f83473f2925e91b2f0847f6733173be9fcb0621f9acfb5d54dc5ac3b2921d29e0c011a59538be68b9e54aa2e61772948a9f789f1ff68f95c6b7c89caa3b76519d1f09100d9844b54e187484e09e752ad0122c237a1d8fbc56ba2c2663f690214d3c749eaf70da28a04f9fd664696f46f222d7f7db6cfbcd0ad6a2a14c1a174b2a29e5811e0c28ebc8fe1d26a841e82d516bb562c996eeba188cd9f3072f961885550b1c8ac51944189a767ca41c1cfbcb9644e9cc7365c487269cced61b019a9d511f9c686f22350bf8cd6175336b246570d65cf7f9581b35dd42c5003ecbbbc25fb05aa132e2fa2055e724132d202681b1f289588b3712eb5d11a54119518e144feb6c32e2e5de25d87cd53876b7558fc042165af51bdbcab5168818a26f7ff56c48aeae55d98c1b99307804594326d6717bec54621a99f74e4f20c03e788a49e6ca4770e52e9b249b68bca21b53128a4156fdcef127f392555a08b28705e0e64f1aa3f9115339c8a67060fd9081ba19b7ce2df42e48c007307b52d74075174cb154cbdc1b2d1f4a90d37d2a30765adc5908f401d9dfc99130e50f189b6720a080394d54901d949233aa167bdfe90e7aadcc28f95550b486ad7c6626dd4dead57f45ae04617d26ce2bc5eb9f167711f3279c531aad72a433c7df93f12849cc591553e4392005f8d778abbb8c4356ed25fea3a4137cafb14af7d0bfa35070d5b70da7276e57d8d82a9df36f96468ea4e68e25067caf68f9cd3b269ad62c07a95d41b03b0754c9fa65d00f9a699726d35ebe9c4cdd059180d99b3a0ab7915f2ede9892b2a2759aee06cf999f774945fff3d996c98cba6df9158bf1b09c11fa678790525ef5f09dc68eecf313f43e5ffbb80e23358c1f1d1a421545b2e958ead8ff1862eaa633238652d1b76cf15b8f24a201dde41067bad7f2522a96630dacd4dc7a012e99c8b0369dfef6d62b44debb6f4058860016fcc4b699ca66271f05fb03175779d718b7e7ebc70da47446a91abbf25014b12560fa8fd81104384f90676cf48cab470ef744439575f271d225eae14b4758ed2fefd5abce3a9d55ab8a0931640c654ca26450bc4640b5767c3f2f075ee338a5da923444aba4512942fc26bf77113d5b236a46497a3f24aa201acd6aaf474d070ebfa240ff5f535e16549211d70fea4e1c3692ad4af748c55e7bd96f04dd69a951ee15937de235d366758d187eb12329b5e13c759909f42954435826dae8db332eabf099648935f332a7f628dc501ab23dc91498e7ee4547c4ac08e8c83e8bd4e8ae7a29f92cea722a8c3b3df63e1902731ce5e4188cc9e68698424b7bc5f001e7f9d6e18e04ae5782dd0e46ced4c0ae7af25e84df50df45f4ad1b0d5fa2cf4bd29959559f54db2ac978790bac70c33b727141c4a1367b4728699592667e16f7c3b8917da7d491d62550e2daf7030913716343e73a3f7276a9fd02ad01cc2a4281cf24ef49d57526cf14b830517c7428d52192e88ee89353d061e5eab6fb7c16145c43fa81d46b81b793c34b17156178d175a3340bdcf2c1acfb1d447608dcf8018a9f781c45c052046b06ef02ec0f6e26c7edf7b1f33bd71250ea96fc370a3f2c57609639ca4ec66bc0617d247dc4b8b1c72e5974c896efc4b90a3834ef875983ff353bdcee2541782d7bf4e7c8892067979d9d17af288f3747222f0f0ff3e5dbafeac6ec4fa4c0796b3054d63019af2d09f027a3a9b97e0200c21a61e82349ecbca105e76bb170a1fc7d64c01ffb320bb95278a715e3eae9084e777b36a5593f1bc1a871e6fdc3b3d047628a0ac0d10cbcfa7c66cf06e8e101edab8c420027cff852acc490a853b12c3214dbed5d879500fd3c0c4036c0f759e3664d4b5b44e45a86918c8600da30c5260bbfc30f10625ee2498c01860e7baff4dc0c8b6319d542e756e4507ab6494fd27ec4de3f5df90d620901707dfba5301a3e7f0d4d89cd6b995c1ca28f73cf484be47ee47de3a026825775e3264653cae2a4e0a01659a4c10fa89c977d0b01f3c14c725484552dad21652a31fa2b7dbddbc8ab2d466eb4c6627a618532dd0abd94c501eac99e49acce6a47cc692e3329efc4de7f13553cff523d0383de83e990cef48b2fc995fb97146e1d3e27180de82f6f3d8cbf39c2a247d1d7c89f1424fba151552604c90d6398ae1aaa737c86a45136a1825500593d8ddf3b39a515fad941c253e942ebb349d7b0c41e0c5fb3b0a5dfb1ccf08108e9fdcb207605ef9578cfb3b7d7d1bf51fb9d507f78effed99513803a2c1ca10b9f2998e0a21f641d74121bde4bfe96817195e5de4c333e440bc2a3b96b6464603a6f7c06d30eb03ddc8841f0608f816ba5c9fb154cb7dca53a89e1d081c56604f680a0f9283694d703cd55333c00603b73e0f38dc835ba7c8c4ea9f497a1754be2af0c56ba0c02b846845501bc4e157b379573f91fb70f0e72ad561a5b54feed6a05e043df38fd9582d96f58874aa881620eac08c42f8c6c82f4d75953621783680840be44b81419410ee76d37de636e4571f252b48efe16f04fca5b34ba27435f415b03217e2666b2cff6adc7954462e157fd1fa737d6f6b5da52cb5f9ed099a7597828301ad2748bb03845a66420f901c6e847efa6860064ed7c0101cce86267e159ddd221aa1f533b80687437e3eafe55ed43d2d34aecc884fad41f717bac6bf04647ccdbde8a630d41be6167a298f7ae4713d38a49cd74b15d9ff56b858a7778ae627c18b9519d2b68b9e662ae7845c2f56396c97590d8e73b0d00e4c83821a84dec776905b2652c73012519fcbb02fa51bcaa933df116c01064623ea2737acc4d92ef0f48f08a40a2792a684911840d8ca5c282eacb0575cb576db83821829aa725b57083b5d4df47168622d4ca464dc72b42624656a0a5fcbd20f9909a6319f94b30f2687399b9b613f92f77fecc217f0e9dcf564e3cd223f482097997c7d4386ac2f1040f6f8d146b9278295c03d2e4e39aac32885e86acc3a7f9e49f620cddd8896ef39440dd16508ce0483f4a3430ff924b108e86e7561c4a201f3c45582a5ef2c213c4f67f035ac1a8a91169f40e0460f1e1a6196777dec30ebf024f343b127d872c9649c78c7a3c9ec8297515c30b4096ca9178c8a936e42d1ab7dcc78464bcbba600560dbd2e381c906e0c99dad5a01ccd5dfed7bc8f3c0c9974113880f058c7d553affa1e05d193808a2a8200d00653bad86b0af3294331b4565d618907e19eb68881169907e316ae0dc0752c0fa578f2284af006b9fae34464b28bc8cdaec614f28b5627259cf4c85b5891f77f39d88784106c4ea017a692cec3386e40a08a905301318a8b82445b7d344ab379bf131cc9a954faa854e4533b70a43f59b05d598c426ce02118522b0eb26e0f2d490a77419dfe46b56d2f5ad12a6c7472399b46c23caf4896b19fb16ed51e6fa5fee94943ba1769b087410596443b702ac9bbf5681de38b2cf27b81c4c4d464204a6475bf28e720cd186c688e5a04e3ada98feef7750245422ae71dc9ccfada2428cc30ff2304ed08ecb9a0882c7639b03064d68bdb70748e555448c1cc4f380d931da4c3c8ef307286854cf6cca5d2fbc18fb9b7679d8ad5a08b6d3efeb886a3c2de093b6ebac1c9c772174f1f764229d1cb06fd8eb23dcd5ca263634d24b2759126311e8452432f11ca07885e5cfcc24033434d4a80945abb4425478ce1962b737d483d6fbaea32ba86ab17784421056c632d1242adf37bfa6141f95529292eb4fd85c4f106e18383931b7994f1646cfd36ba23559da2bb1de7b6225f86dedadc91bbc38279143e2e13a7dc990cbe69613b52583c5d6fb02198b6023fa7021da2b740aa091d744951363935587156388a59389b558aa88cb326a8188ac9bdadc92792bb41546406bfeacbd65a6f4e8ebef198b427471e3ba31975fa9d802b0139a9bc30e020c255c9957e949247e614f2689a7791dcfb509c83a340fb499f32f0ca0effc04fcd18355f9e3c99187dc5ad20b4182341d54262f1cade69f294974635407b10af3478a6401e3fad40a2e62c1faaf0348bb6c087f27c988f18ba787c041df44f9c58b6cf7d8f7b480a3e232d17e2f113eca81547cb360b1c3385a545b1b92aa96929894e2e1e4c515f4f288ff759a2dfecbdf6bec4cc19954a576fff174f310185d24329e565c542039fe8e59885885ada047a02be735d8eb0cee0b5fa23d89aaab743ea6095532e7ea40ce2e973f12ee2081e3b5cf2291602bde28083b8f62ebe8df338613fdb6e0f58dd168444141e97d9ede34730ab65ab4375d75af2029aa925c51f2eebb2fc08d72abbe8959388ee13c36cfacbd8945c668a73940e39eb192fc23691e7345d520a1ad955d002c299becabc8c67468c4f81c60cef1335c3b37177417d47ea70753f3e4731aed6c623e2949043ac5c2dac4b2ba1f08e799e8ed2fd36d5aea78ae92d3d2b230f203eb8f705003a1e50c27bc0e7a3b7e520a600723465fa3d1517b911f6f0d4a53abde25c17ddd68a701fccf82808fea73269fa2e30da8d8607ccc9193d8459810d867ff7fcac3fa0bbca0f22c15310373c149f01a5e28d518169e8868ccebccda449a743e1fe5c9a9b257ba43f5405f851a66e3b2fd6b10c4f0b3d7d9573770ee8122a9fcccf5a1edc0f0427725e9bad831e70301b6088e53f1457aff68bce3818b3ac8a43563fdad733c12b1fe5798e0503a7e7d27a082ec0182c2437310b4d7965f3716de88272a95c283a348ac8f4e3dab5811b5b14319746469e0f02daabb9e1110bc8870febe28441ec6eda30f956c0c2b20ec260f4d184bfdd021da203c74ec7bf5bf39d611a0bdf05e76cae93c524dce96e7bd0ee20f012b6765a37fe61cc38d39b9394400bb83d6adaf308aa0fa9fe9c0423ad3463d23dfd36b8486e273b5723df9868627dd838a23a335d64ac1e9b8a99bd26cbf3e47eb981dbd467cd7a61d42702f79c7e842dc47f2c6fb1c5378d9c4ab49e7ccbc67f4f5493d3258c2da9a239959432c1109722742e837a8aa4a1899c00409c456d774ee7430419db9d55065e7609c20611b5f3a907c1f815c488b443df74ad60d7764e710d8e33b9170df2a3cd8de6d00c9a05cc7e8eb038ca8b7889d655b84fe974b072655b88c6e61e2f3738f6e9dad9d449f727905846506622f7beb45e8454c1856abad86324a351ac979185a65c1dbe6a2f2a24f1d2bb622117b56634f8e1f3183b64e8a17735c6801d6386aefe091dd540a7d22303d5329b65d35a37d830fbaab9516dca11dad6eb0ac93c983eb874d673e93945c0e43257175191a2c3b3b31721335f51f7fe687d7e98c198945020287b430003aa79e2cb2fb31cb80f07283504fe9d727607e0f7c5eed39a106538400804ec2019ffbe7977c08725457e830d1fe0d845cca3c6c69c9f4a59f2d99f34b154ae9bcfe7f6dd62ccf4a90742d7c47440666fc9469124956bcd0fca0914f5e4d085b1417d3279a7d458fb574d0d2ce7a9e08e23646bd714e72c5e8b1d750787a79bb831d9590ec3476faec58b282262100c1bfdc337bed1f204c7b002e5b63653a9af708a98f78e22bc5c763ff075b6d4a4706ae9aa1460e649bc2625dca662646fbe261600294df6ebd5573f2b35ca713e9a4961268b64ae836c343be4552cca1cd01c26b2ba30116981a9482f680b1c8a473d3be01198973ce2acb426726a7c61216a327a8648fee98dcf21ca245472e8adcc5284f40bdcf8694e159e21471ebe8ad481a497850645e34b5664d691bee7fd80c1eeae47cbd2a656e1885c41373566a8c00d1f0fb39d21c8dc0281238c1174e308a13bc621685c889b4bbef0a8c5dd1028bf62c6a4dfd565d07880cedb138ca3cefd0b2d0db4691d8e5983a4604a9df8ffd87d669c381db7c24c63faf0b31c4b3fce5934284515a680a8d8cfa355983fab442dd59a8e09aca402e5065ab70ab10f7a4919a991db1e2592ba7502056f577457535283eb0902c4da7244f406c4d48ffa2af31e9b2545d8113871d52b722708ac9e72718410c35b067f0f490585c5a0964042700c7526300f83b045640ece43ad72b9019d2d45f02ecbd0c187fd337bc1b9b15d97b808c1c038cd222b179463d967f3f32c27047c88c8e5f7b4bac55163c30ae4269512a5f33f8d05586c4291b2d032a45886e9ef71887f40c4e0c4c83db6934aa0fd4292123b3f66b795c39c0a3be1323e240855cb33beda10bbb51bc8bf38980cad2bdeb29893e6dcc3f1f07804a231357e471d0cd64d2166fb9f62d12b7b39e82b5a410de7ed4c6894da347ad56ca527e4c8cb33cf5790984d4e426cc97ee2eb4fd5384f5d1f2b92f3bcc161a9341e78143438beec00ddd77aa9e5231f6514ba95bc13b6ef2a26b99842e9dc8a2da3ee5c832bab4a6d794e86aed17c65c54933b9a706ba900aad52afe42c34cb2cba12eddb754121df68493d391784f76b010812b29070bc08b231344de60f902b7533efafe9fe663950fca82b1b5e2e4b19b4847aff87f9d0276ab12b78fa42e50f53cd567a4a4ec156f2cc2daa67e14d2e5c1cf1b2818a72ddf558d891484b397231d7241111a9b1853322061d8386ac28f5dd8a3b0dda355e8a19660d264dd2f0408227127a3e62561570b1cbd189a44502ef1694daf653b6796114b9ab93a4cd33a1b7b9514552a56b5eb153a328c1fed946726de7b94d9feef068b94b1e1348179ab29592ba00c7c40a33ca0daba36ee8d9dda95fa21a5402a78eac23d2e725fb69a72c47b29f1e7c0e402b7695d912c5dad5e445bafbe5635b531cba9b61965b760a0d1a26d04610096775e4bb2748bbda4a1044846a000d06e170bd044444ce1f4576874036a3b543be66f3bc5e98dd9887fe179dbb1d04141c31c5e0a171e70bc268c278a74e8cfe7128d984b4d354f617c0801c042f42441ab52c58589d70ff182aad1c8d020ddba622e49108722cf93ad92dc80c4dccb845c6c04aaebeb69b15813f2d526a1ee85e7d30ef84a4fd4ec763ec710f8a1db06da1f2510138b9e39c8f5276ce2bcd0b8a24780cb0bf45069ff9a91887d1f6caaf7769e4c75022296b1f2e7c2869d9c3177f9a877fc73416013e25a44960c8eb53e52f6690878d80ab8fd79ff776a1eeb8b2312b91881f2c01a57aa32d64b349cfdddc6b745b0ebf5ec854cba970c340e35c74140e344a259dddedd4fadf4794c6bb47209bb3183ec89c30f2519795de37eae13807fa38087c6b55380441a22619178d85609999420b55e679c7dbd1637074a72f3889165fe4fac3df6190ed02876b8119695ecf759e7fc2f75fc4a2ffd791050efde9f6643b83db3d6466fe11b5496d3dcaac94760b83aa289b0368b113c38266863502b4a5abd72b4ef9b00c6a6c9214f5efd3a26432c733fa6b76447d69924b1ef682e649ebb30b943a60a064f1b11d0fb75db0942b8b09a007e08aaa44ba8556c5839b6d2b904a4468bc79fe2393351b593fea0c1628df100cd85c778b7fb20ea4793eec99fca2a24a5ddee509b3b04ac1f98387fb88373a2e7d5e4ce748d179354229d73f89e6a283a83407f0af830fbfa242d7f49fd9b2857daa54877278c614477b47caa0e543ddf1b8c78edd92a09509209fe57171883710503d55ca050a4d3f40bab0e64b96c3c20c83fb512066f8ea946029315853553242e02b37311e3789e7e8f368f1b3c6eb2022d90807d17ac765c6b8152aa9b105142e7bc079dd59b803b8af9ebeec362573aa2da7dd68b943967d523bf3df59d8a1268798d10579642204f8bababcc7a060a094429b2dfb0a3c68db646db1c1a50897976e95d8c04308c52eaf661ed6e0b64355de0a3ef8580d56e956c81fe0e26fb35b1df3827b83b22dfefa71466526d78c0676ec621e74a095c904c577a50dbac06626940d128419007f89302a8d32c9f6020301cad5a19b76469fda56fff9a2f8fe28c6304b5de8f0049d3bd1f65b9827cf6c078d17142513e163f7914cdf0cb5dcc1f9f06094e1b64ac7e1eb9f4a6865962ceb5c837728b9a29d3ca50a9f9110460996d13e3087e815b056fdd3172803a7d3e5f0a1cae9297020a9571f0eb039d7039771ed3cfa08b48bebeb129d463c11384e09a9598b8ac01782936b57da46df515e67bdc3fc470d82d546cc646617a57d60d212e62e10dfd56d75900f83547581f2d37e3f95de46b2e7ae2e5d3b28bd84ab44768e8b9512f7b23279a15b4caeccbc74159b92c1224da9a555bdbac46c352f5eb41ff90b761dd4aaaf1e674ff0f861e30a823cda596bce7cd3b81d77ad961bd0c7603343c72dfe420008c6e1e9fcb47cccb20c0ae6893a1cc878bc47b321be5e3909c15eef0d1a45de728b200955843d89430e3a3e1703782ed34d887d7dff1e554ac20efe39cc758df71344e8e866dab4f3dcd5c4b633a0172f8b3cb32186238e879d0c80d02a085024367269fef2a5077f59eab32c732bc963ac33e1b4048bdc9091f62c982ed7bad8207926502cf491aa428ac40be0fd60431df55ba2d594b23b8642cd905616336cdd491d90e66c72065499fe8e093700e16cbcf918c9212b0717ee218e40363acab1983e8db2f46db9fe04cc63291a47e2d27a25acb11b2e1dd58cc4b57f7cd1bc59c32934dc3e642c24719f13eea4c94d6a2cc90e0adcbdb4f6d75ea53cd72b32812c35623fc2d126ce44f977af2415ec6391807b76e8908bc3e224614181cc880376423fb8a18d654ad520b74dc54a4f1831f9fea6cb4249b59b2122516e442b40e122dab8e75834415b683880689f6470e7dc091e78fd536c01edf4f7498a62233639012889ceb0eb954ab190774c55288ec9420dfe8b4a9e8b83e3abcd52cc1815964c2bbb09e3f1ff40e7659869794ec5fc6b17d38b7744b00d72f4db08f656abf343f743942c59effef049a66686081f49e178407f718dfb3d72c88f8b59b0daac3266f9d7190eff1214173312dbe3399d0f05caa0d160e423befee020fccf6da53d279f4eb3545f2097022081aaba54585d962020a514a6cee90c70fc1547da386659e63f0f59180277d28d96452d4e9c1aa12ee21475236db63a0f9d43e107bb08befa9ede4736975f9aac5ab3a5f89955062afeec8f51ecd574c363c9ff31182a8576de9292dea8aa3d7e06787115016a173c3181516224dfa15fddb5656e8fe79d0cacc3496114ae7fe3c561e1dc7f76e29432af0bd8a6c1197f44966d86e5a05cefa42926c86f0846f1f9cb843cf17aebf047a9d1ae4f9e8375dd22ffc7d2b3785f10d8ce0f27c9a137bbfd3ae3f5f5a28a8865572fd540d838d76172affbf7dd1d084a4718528eb1875b7c1ef1ff3c3036285d78bc079a657f3de4d2daed7294cb4f180dc32aef4242d53eeee1bbe441eb920024ad5b29c9813abc3fb8709d95bc9fbc9f83849820a51944623e9c7f9e8c810a6731388e0e0dea62dc4d58ecb48c0ed8152be4d47c9dea1e7586038b2f2bef6c38c7d90d96a1f0a2e7313b012f0a337d597ca41de70d171be82290941a8b16c4e31737e45d347a057013c66d306ee82e712a73e33c43f9613858328211e4c98bb8182150279e528c5af1420c3d99f2fae814710a910cdceafd993d50bd6b819b3b67bf5a6e89b06af91979c35899e90003a705fa162cabf841f6e734ac61b62f12ce30537c04b2d6aaa3f2133909c5ebf0f44d9e07d071f9c2579752ca9458dc7293d0689d5788ca0a111e77b5baa2f0760151a1a56e8b77f0368d7aa6d735ebfb7cbe3cf37f0fa0e7e4fe66043517a5320b4f60d268355b21605e2ae0d1606e0793b73c3d10b992e91c7cbda290480a5cf4b3fdcf135104557123fd571ed0629e2ee9903026151626649c1d23ef4ad1122eb1da1c051311301dc375f6c92903f82dc7a28c1709674c87f294baf21a70baaf1cc66723aa203b52c081ef80460a62d144721e214689131b7dbff4691bf51f1f0685bcfa854fc229a64d631ca8518c972d96a2f4d37867c0f09f1813395250659c90abd415ce45a796aa87954e4f6867801d1762c8c8ab0de888b4042186aaaa2b8ad62e5833f1413857f3eaccd3f8bc9530b9dbd5c537b75e31cec732749ffa97e92f438d52290df3d90fde54e83f88bbb03627210eaf5322f0e008110a73fa67f8fb0ac27de9942a1374eb7e80d17f9d6fba5e0e1ab33fd8fb0bccda600d1ed6b66583656d162773e6e129d99306906688559383dc8292c29b4ecc3143473ad96e4ba206dc98b55e490b6b2c5cc8393b1ff23597effa54935f0e27183269e11504fba0e8a0e63b3a0aae5350989bc1c83637beab41ef74066eb49dd847b1189085896666ffe0c84dfe18f07690560855ef1c1cff0a3607a5c8df12f45dbd79369c03db3a5e9d403860551a6e640f953c7bff6999042547642bc0ca8f3d7bc2222c2ac42919adeb548adb03193162ca0ffc976dad28ac921c55bd106cd9621f50f5dc05cd8925328cf413ab070c4bbfee0601d125e9e60a9df74c27966dca53612e0c48070dd1725e54023cb2cbccc4ca0446f865c731e2109e3be5234fcc3122fd5fed77207643681b624f21f74446043dc381c3727a7302c35d03832240bdbe19812a71c484c971c6b6b02c36a282e0dd9a03e1dcc83486226089cf657d940814a84f7c3c8f4549c09aaa2bce771440b98352ed8aa8493a6b13c6bb6a40b546a82ab28a11f044acd0cafd8fa20c8ff79fa50445a48a06a8cae788c40d7a94c8bc231d49b3d761ee04c1465e3aee81fce8c5998908da51e01378f17807346f636240191324fc67a8ace1b3d4061c696131d08248a08b17dd44c76c2cfa010692a3f45caf9752e1af41cd58ef20f8469db79961e3f6d93928ab64bc0ff76dca0063d2a43d26728fd920b42d7e3fa827d94eb500690731af083eeaa3d63e9413d4aeb877e117dd3010dbfcdd0e6a30934b36c522f96a1acf0878bb37e2c4b4dcbba2a828db5096c212d3301f1eb83391d7a01270f04fa4294c8c296eeb506dde9b708bc8eebeac0923fe2c92ffad3199d69a676422800a6520e8dcb9bc59abe84b457ba8f39f548be449dc84d6e396fe0136f2635339e4df9d8eda0be59b7aab2eda9a43126e8165e8b2a385435d710b45fc23eed5d00e6c870059f9c43a4f85ccce084dfb14575999460977fe55bf365db9e78ecdd67a7a0f8a859e45671e0fb043fa2bbf3e2bd74f06387a4d3939fa80b3c04dc25f8c97c151a53c2ea4a736c8684584c655fc700f3bf32a8e2c26885cab2f8df96c6b32ce64b887327a7af4763ca23f3db5d37a788a713220420ce209a82255a413ad5fdda240b1032b399c7437fe9ab63a8173c4f768ec311547fb33e0e68c08e7de61f72a132cee92039d343badaf4506f1408fa320539fc03435847064ac0df99c81d7a70a014f3c88795a9e459fd27f0e4c5e1f674aadb0874c9ad80cd26c8c2f9745541703ce33427ef6c27d69f8edbcadc67a2287449753954041c002b14c641f7afd9a313ed3401304cd2881b410d82242d553503ebde75f0c4dfcda078758170e261d2ea3b32fda1d673ebe6ae7b4d9e0f019f0a69b899759889753e6c733bcfb716632923eb746d888a69aa7e6b40d68143af95e3a3016d1a72a05a7a1d4fba65691fe885a8b190678100d88d2f5d354d1f1d2ad32bac6f590f140b094bb9463c0ba7385e4139756bb7188fd6d9fbb52573a4e3a62e4f422d85a2db0b80dda0f89196dd3186160342f188559017d140d28c67f05e8bad33db9aa2a1acd292406d4e4fcc656708b32133bf38c9a8840ff0414e2b26d7d1f30a0429d2ee25e4e9a5a7c8d2992fa7770fce6320057148f29cda8efc2581fe1793e035edf223756499ae16c0c470b0999f1c19fb373441e63328a78186dad794ee346f5001d7ce52f284101d09261593a0bae5f05388c31016732c2358ff3c2a4d10d1bf1a467a882d9d261401939afc6b0b66ecd360d389010874331f18c46e43571f9b197de66564b8cf358eeaa0949c59b542548d973d7af08076b029394724528b43685affa6a7fc6a804cab6570d670671657c21a531992fc1b03150cca62447bf66845881db060d464adbe63e6580f9acde6baa3c634221f870a1de8a3526dcfd8f0fb69c3252f48deaf2d0171aa8b7498e00d22e5dd33bda8d42b826645cb68bbd7b0ff0e468847cd0bc90636a939bc3664584434aaadbe768364fa867a141cf05a34c78883a888169346504c004529f18f87fca0d027b2de080b176b33065b63c0ca4fdd4734e489b96737e717c39b749df569088c1900471d6da51c5c14879e3a2e573de677d3166e1c7466b92001a2bfba6ee1d92d68107b453a42471deed0b10ec6c195823aaf000321404f60ea890548ce36b7efb7ba20ea5c03734b3c834a3aab02c9d8e784970c35ed2066c04fde83132cb58790110f68401952db5567af5818de9ad2020c8d049cb5b5fba86033a70bd0ded1ac2990d8b0025b191dac7a0a281e40306c02125f339c051e387f6a2c7155c71555c25dafa42b7850acec62fa935d6d5780d7de1125586a4e4a33e963453335a05bf97eb9233beaa0431d7788cefe2fe6855cd3bf38495afc2782321a6535bdfab58dd72b7f82ef7d204130a16ba7a1f638c7fa4f05f6b14f3946e30f79112d1d913fb4d1b5d70ad8880c2a5c0ff1921fb95bca7056ab3a6bdac41e169f5f19cedbb04ef7338200d4dbfdc75bb65fbc7d356ed04d3fbb002d3a21b26978340624ae6273397ce21eeea22ae55c129e1c6d5009e407c10a25164bb41692912542d0168255a4eea70ee65a61000b92f5fcb3d40494fcd86c3754d0629988bc8c654e1f5dcb295e63e7f9fc6ca9a902f26d165f0e375d88b15f219f3af9cef1d308158eff5e9ecf25dad892bc88706644a9674d7348e6eb262ddb07b76c2c4f10d9027cdc8135708cab935ee0addd7530a114850f58d7d2b366d42fd21f458d9ad7deaa43ff96d0920dd2b27b26417f633e2404c8b5f2826199cbc9634d7f571272d3945a9953ed920b8861bc0ea659f50927880739cd1b67f99d6975f2c98993623c45216adb06d45ed3d460b42b72e9a5692b01fad144953fe7d627586c0e224e3dc3c45e0a241fa108ca535eba95b6efc79f42a8097950058014f78df38689792b5169c3147f92af231ee3d9fbf41e359437ef83d11c2f44b1084146bdd0b51c87ebf9f7d2e4a1c121bf87d89486cc30ea4ea1375c27ebcf2a8c7185ba349aa3e88476729a5413ead4019126354bebe6d2bf8b7cb0b107debd89a6b3ee0a5f8b82e6c0fccc4608f01e6490db054b2be5952d67b8d1b914343b2f937482035968ff9950936c29d2e1b245fdad29ad7ce95cb953bde39069c4c6cef29984397c103227a49402d5e749a160ce0541fca9e6ee63c4d5d032feda394b1c799ba692fc3865d20d6e1e1001d6d3039855235e3847e410a7c0123502109c32ca0ba6d9ce7d953c4f8ca8910bcd120ada9350663c4f6fa9c7fab6481595392ab13a71a6424de5b94d3729a17efaf1c0b9db297e478aa49bdabcfe668ba9a31370d62d92094efe45f7e75601d82d5a2249b968af1fcea32e94a421408750fd6a6308862d40788b3003d4bb248f30a2c77b7efe1d653c991be6d8634e3f7918df3d58228b48f313afbcbf849bb4d0c7f251918528fdb8c242f797c730113abd164a9851d1de532e4eaf2c36b87591e3a94314c5f90308669e850a53a64de74c219d3d55d05b76cb9e8b0dddce58a40e2c28f599046bf9926886f3295003903b9f9595174d4a34cd58e0e2ef06d3306d00f13da58b3384b90a1b9b74e396eb8a229811c2d364d33b99d6fdf271184773d57c4de28e7313a05a3e94b630f21866ee1b4fc407bfc4c258708468fad2c49807bfdcd7ba8e9b630e4caf153825552ffba5fdf875e50df2aa2303ecae425fef6c25c4f9719e242f109763c65008c0010fd395bea14a00bf8c63a1c6cdb5e05f4271391463ded1151a145b312180da5cdd745c4561d986c9c1811fce00a95e7f11f5858172ca9899cb52466a69add0aaa6e23cba6e1a18c989401e8e9e5e434a5ab2c797720523aab7b3621c015202d300a007f6adff73082e7c8e6f5515e49742ae1124eac813019578cd4b26e9d6a5c5f2032e4a86a9c9d344001f094e6d33d701bf6e5fb29dbac3a579acf903e8bb160a1db074dd9635c2168504f2efd2b35a8909be8294651eb980f005981524805c2334e7f83c2dd008207a46e1899562df7ea97f10f3513ccfbc6a107946dda6546467ce17563f9d2efcd1be5065e2a80086ed0aa634a10cee089e21b26ee659b92ad9b1f67afc7c042fef16abfe45ce198f31139198b9f7bebc446e69c4b16a5752609e1bbe4bc48e493a1c949b05cd5ae92e3377a0b43bfd24957e13d1ea752c0a2212568a998bc28d800271185edb32fd945c9ac217022e74c07a520d23a77d9bb5159f8b4f99ec6865c817b5b3559d6a7373280b23ae6418887c4defec37131b90c3cdd5de8cf67dec068972b0bdc0de8d5859a53b46bb4ca01aba6d28b10c284e1247bddd004f1fda359854b037c51837544309aa175a095fd50bbba4331814d75e84a3d9aef48773448ad820291af8470642f716ef29f9af9784a7fb4a3c34d3b3591da3ed423cbd591e634def4ab91ba221a3c1c172bbe32156a5c973daaad7a116739082fe0800d4a404e9c6477371507805d21ddbceb8058d908ba67b9f79aa3a4d719b95153d5cef4fa9053ded9fa348a5f86018d333466165b14bdcfa58f3ec5ef824efc439bc9237fc3afe3f383655e114b86b970bd3814d6771ce3badc97494a96f56a50ffb9dc8c228ec3b0f908aca29740d790f9cb38f7bbcdd267096207b29c678203c59407a255980be98b798988d04f338cd83e37d694d7742581ee64a596d80f4b92309bdfb5f4ac2cd38a582545d4e3edd01d2d50c114a15a47cd6ba8326f76c00b33b0d6915dbdda3a0ef3bbfeda791ed59b26716393d19e2835f6c7eb5d5de17a00009b38b8b0ceb8365525c04a181f816445b6123db47f3d2ca4d3dd883a65741826feeebffbb3b68b1ac29d4eac31d7c6fc49112ae5380241a051076ed6e4d25165750a6174816f8ebea2f7555f3b834d0cab29c7960c64476b888d9891b3b33b626c2ca798c16f3295a8a1c0300d732c5504fb9a99659a2267c15fc0c1846bfd713fc7ac5d347214979e0cc745cb4f86eec6bcf6421a884101bbe082d4e1ffc80fb81c014e0a21385e932f50419ce5bb99c4b3ca8355810b36e3b9c77b6c3fd7eed20826a87d9171d6fed621500dfb698983be292faf1640ea04f4f74d677388170c1d82c25ec0d1fafe0e4540cb47af839866222068f86a3b4b405c8f00e2b00960a20e56e6719480dbd1b710212d9997344a6b6bc1515b095bf0632335ab65d1dd372849f669f0ea341e163adbd021b6a33591dc20ed059ca21d1dddf618936c48e63ac082f6c93a799766b10d16ccf05e6146a359f25fccaaa0c4ebe679e93fce77867798e032e203a081539a59963b8a34a3be08d2b84af20233826123e01b6fcd5e961ea23ad8b6afdad601cba67fc78ae78a3eb11f1396c57e47a59a3b58b8e728dd6c3738c8af2d5dabab25ccef917afe508e89e44cd6bea86579d573417c88929b9091ed1c961f944e5ccd806f2fd0b7078e32e8a6dff189cb451e915574c2b86dcc4a106b57406ad43780dc04d16b850944b3d4ed08902e0d4398a0b06fac112fdd98714363e2ad4fde6037e6aa569b1331cf7e0375abaa493e68496af8c1d62a959c09822df7d745544ef49644049c02b7464eac05a274be85cbb94bf978e74a99a620f48539df9a205ce1269f18754c054c36e3f51d1c8a791965a93bc4a8d9318c9e327cc5a2d933f61ca052e73fe8d6a9cf3c5529b87ba8cce648cfa7b0b74ffa7dca52ecdd4d5293d9790097316f9f4382dadb56cd97a978892b8208251c74b5761de6a8f6df42cb41f57e0c899ae04df39f08d8a6f930f7ad9864350dc25c36dfeb53f582e6cf41b23f525d3bfaabb6d80156c3fd2b19bd963ccb59659b7465f8d508a32a3efaa57112e7a44d907e7315f2370a327b40e9bf3bde7c27a997eaff66b25a45e02f6d72bb2408541de36f3a041d750eb95f60df85bc105475a0894473b8f1508ad54c5d7e8e07189b029c4bcf19f2cdebce30b8444a1895368bf361950bbe1f093022d14da1d0ff6b2bd240158c20debacd7bee10139573a059fed3ec466a32a6c9845018ff2b978ab4568a6e966176f8e26ee03ff3ccc742c78baed60f7e7fb1ddeb3e626ccf50f1dc44e5e3243cbd01acfb1c145583ce700082901570906bdc314404c789535a6262d132b50d1d3a978eace6a0ef105cd28eefd80be3515ae9165a73877e02131240f0baf8b77a26e6566392c6b970d40765d65771da60bf45dc333dc921a978bb09534c36f26054a383e796ae2272945954d0f1610dbc3c2fff23a2d14a17bed8335ffe76617df4fd9dbfa681f3760e808ed79dca13e522b059adcde914541f10d0fe191737600e954abb9a053ce89aecdd515d2e6d55a64fb19093e91040b1fef4862c5842231baf521c03e88b2cebe154c628a53d868dd74bfb0e09b8a8a9b9b2ba27f1544a55c4bf20a03d51860a21da48a4111415c254f5a326d985e75d46610b1c25f6386287a9db2407dd6f12670fe6af9f842891cea562cce6c3db8a8ea4f9dce73b71cd77c771b1c1bff7276bda81727e5e0c02daeb2b1d34502aea766bac88090219d10f42bc6d6013aa147002db6ce01cb6f5b16a305d32fc261482d7ce31223f6f0ae9aaa166d2a6214102ab4249a22e86dad3b841bdf0e896142cb3b52b4772facff212a95be3a0a76018d2a17c950b59a9f1b717d91b3b1242fe0146f65edbd93c3fd028ef41b0706d0c59724643d09d59e53e60ebb74580a4262eb0ed7708e18a58c33bd524f6f24483aa587abfd3e5d84b537d55a455b071d4faa9dd190aea894a4027f02d67daac9420ff03107d305f04aec0d02ebdf843ddf8140405b56b21d7d6efff6b8afb551baeb549b94f8b8b4a06b18ed7c1a7a013507b7f5355ff922d73b390320753fde2b338f08abb179be6ece55c21cc4d6a3bdf2fbc00c26c1ff0fa3d10f37e3cec1c06137f07c45a6e1fe86934a096788072593b86f95c232c3988da3aaedd5eab1ba6f52f9fa91473006b2d2e02dd13a6bb57a9e01152835d74f1b2334ec9cd7c046c3ff17995132201a55246826e3649705053f65745d8fb705c0ee5b4b5432dc1336beefac7f47035dd499219b787071923427b4a31154df33d8240a0768034e201d0db5167c9730a908df8008a9150d006d701fa02134d0902f15f478e5347ade6b0aa52de951f4be01cd018d93dc9fd855a4ff6118cee6e028b21f183db52bc921e4febe7e50c417c0cf6b2c1c261c976b3f2dd0a6c5b87491fff31ee558639ddc8d3a23506c967deb6eb2774709ae8eece262f88459753605f51d65aa0a0fa02e8e1633d6b9fa7198e6a8dd0aab1be6ee663179f26a4c8dafbed895b9b577d2e4dd103cde50f00b63483a6ef548a2392d123d723bcdf6aae243d3cc36b8a1d225da31b7f41cb0c84ae76726b67c4a67ea9592aaa2d5e494c652657b6c5e0bbf990d81e725ae79840ac624e0578a0e88370e0dcaa0afcea2314e61022da9d6fb3560b46289ce799a4c4aa4ba5f9bd748257501520eae799364be8a75fb77274cedbd6a60a8568197082360d38d66af6209f3f95d3b49370364b5e29c9001090b8edc857d55bae6a2a3746a06b903a45c7313fce4f780fcc2e4e7728de7516878980e22ea262e7091010d2f8572d8028b3bb764a9e9352f421050a07868d70c129aede2b19b21cea0291dda27b62c753fb750c96661160f10c39e7074071f6edf1f17d8d938603ffc9bd5eeef18b644c7a879edb404d1aaf670f51e34186675e96970153628660b6a7fd2da64bfedba898fa6811e54c9cdfb589bb5c1fb472df8cb9177645b152982f2b8791d9582786268e68b4f0b2114da6ae6d317e8cb260f5453a66fc3283af1d7584088044c49cb6ca5c28d10421234802c539a272265d0b0fab1ae2832a29c84ba75cddc8da9f8a0bf2b8c86027b3263a2e84bd2efbf2dc67410b8d8cf53c8990286203d06b2784cedd04848a3ae24ef6494751d002e439e0156ec5815380e2662c2b2041966ac216329d66fb0bc9f9d6a39bdda5fd17b6fd31eb8d89d1a56a58ee96524c4a09c1ddadcf053564e4ba511ae664680262a1ca433a98a2a385df0aebfbf423c504beb0ad19b75e5d0d8241ac7dd4268e1d309a8b61140d2168a65d888e679b0d1748ae9c63d3fb8fe66f717ea123c13b57cfd20a813cedc614648aa2871b398fbf73eecc2beea537150023cd0eab23e5f347cd3c53d2e3ada28c2ed55258151ed0473442212a4d175fafc82a983f3a876f1e93fc5a8a72537475078d536311d78e9442ee0df2a4381c6d0f4fd7c9a1511dbeb988303bf03cd6115e58e39ba79ea7c6e2ec898c35fbe62b5984173fcd4e33a104e7cacca58bd834c964b4b3f48172543cd15b6d3930369328f3c909285f659c6a35fc34e476772f9619f623f991f4101d0e606e4d202fe340e36e17a4943a72b3c283127f9540dd23f30f46146047146858cafc9f8de591f294e3036bcf4d6ae516b3c04351a98392af1e6b90b9f6062389a50bf65ab992bf106f7b5a4b29a68e683205f32ef649abc8104d4653cc2a092f2eb5fdca6c22402fda4feb33adaccb22206d4b41a1c651ebf1fe066a13950469d1444686fed7b121431a47c94144af543c4649da11b88563666018e5c47a1ed95cbd7419c152f8c83e4c8cb4119ef9eeeb1911408a663658e0c75e80d6a7b12e56aabe8091334f75dceb9df07d2be019d8e470b2bedf4d5470282951cde95a611ca74eb7a8a39b396889132b37c4d965650babd76a2925e960a5aae16c8b78e58fe9cf14b4535da02b500ca3fd0bbdb425de9a63aaf6e36211cc4a883a14526a0f868458ede98926310fb3086b4ee466c16967504a43d3212f72274074a1eadb8a587c33e468e771608063af7c40de8ed54a88850bed49b83442a0af607a8e553b43ae81533596273c53710e5538d2bc54bb09eeb1cdeeb4fbe192aeaeef73856f9f3015edc9531e4910daf0fcf23fef06bfa5c0f3402583bf31863d9e8a75db404546a28d3e8da5dea044e3d873416ca160db665bbf5d7eab0d17d79cf90bbe2246f76c80f24aa1f08442f87f87cea8a8c1a24560afe287d0ac8d29552397fcc1efa5eafe9d4e0679b1bb252d61501f70321549451b8b502bd0c5f0713949abb57a7782e9b0fe4445ab7365c7b43875f0892597b87cae6185051e6821c440ff9c17284c25cd53c930aa3c343e2c9ab25ee9d9ff2c0beb1178addd1eb71ffcdbb4b8ff04f3074880aa2861e4eef25990c7b0af4aa61707958a9b1de0f5ce898c39709020b03711545d2e3b998d217a57ce37f4728027812a1e5a38e64b583dc53f5b449b7419ae6480549e031d2ab1eaf64a68cce1b7f38f847e388c310159498882b9aeb2456e9e8e284359287f6f63ed74eafafb06d4342ee109066847ed884c90f5281b0ed3901ee9953bae911289815410e2f9941c0b511a18d6f6d7ab756590ad3b17b5f2f6913cd2bddef41b80ea1985cb6e7df6ea1d0d9c272c81d18ec6149759ec6d59b63470d340b8840703c15203bd0f8f8f5b03a47171803a8f719c9220ad5ee11847eaa341af862c2a981c8b3c1f8ee0287cbc7bbd30be1316684ff7139038c337383e2682a129c41f871b2770c492a072e3a82508698642428d428aab6419e62e4b53845c9851842a7ee34a239233aff94bcf524c3f062ba9a92637c44086c04221bdccd1baa68cb5051808c8c6544b9fbaf5e5281b81d1567a7f967a2216978f252db281c109fb3068e71d6c8eae96a8464e824a5d3467c7d7f89935bf36e0f392da0935ab4201dd54d182340d044b4892c344df0044d54a1191342a8161144b51dbd5a6a4f5f2cfbbc287bc2cbae2a36897561b80ba6a31d362e5291f641b4bcfdc48cf80edb549eea5dc1e140bf67ff7ebc1ab76319f15eefe86da2266a02278ca2dbc44e549b10cd95d1720a3efb8051294b5856ea600ed0b10b8125dd9f1854082032b3340a2c429826506f393950c39b5d01c11383571474279280f7e9c79723b2030362f2642ccedef6d50142bde71051c4c7877338e2a100742f10f6f71b60723f2244bced1f2d8951ff5a1bfc0a07ba4a1b88f8c6c589cde664b1dc82daf65b82c3f1388e04373b35c5259dfb109c13d24a67a7f15efbbac5f335746529d89871989ad0b2100a78ef906eed76fe9d65ca5c1f1e461d7588e159f2db39ccba20b833b4d54fb60112c7cacbf765d21a4a3c6a98f6d8991a47864198f1290f5abde8ab81fda4ad00a15bb3863e2a5ebc561544233ec1540e3e04ed1eeb6bc7e7f78d2e54606450347a0e3c1240e6488faa1ffac90ed897dbf2b71fbe893045e011be239355be7ece773fdc8bdcc7a4353306db3850045ff5a5873ed4e420797f6786c381bcfb01f53df73b370b8e0160741c57e7ffc8992fea0e89523c09b52dbbd33f88f51ec8504ea34a0c21d5ac685c76b5fd308e06304753f141b475046976a574b8544907db824b27eb6f79f906e2940e714e4b943664246e7113c68c8e9fc93b4874ba6c7d440bb5ee65705685ed9fab13a0d83b1a0c402edaecf827117bc02ae43e0d3e28b5c33b9b1e63297006cb76aba8a4aaf128c3eae97407c545826c818fcce60e7f1344e6fc26a09581c28896d7c617c2bfe6b46a9359f8bea3970a7d7a041e29a0681a1f689706700a79975bb1b9c732a283badb20ed8955d534a726ff4cc1514c16d3522124ba69f9522096992ae88614c7f0306175600fee2d9de24831825fcf786be26837e7f6219cb152df6ebacb4e0a14e86b1a33314270e1d5698077d4bdae970076cfb8c2cb56f40b1db543fef4a0207da72962413a3fbedccdd75144bea2451a3a1af200d327d2757043a5fbd8c3510fa800842a1ad7c08d04d9cf1c835a2f813d706f010827d649af926e6e84eeb7014a9b47544840bd9de514ca289b50cf0cb7c38ad81388f6bf7985cc653da6e61db3e9a69ebfac2582765340d88ea3ce69fec20dc5eb9c82b4b9952f01223c21c36d3f9b132b5605c77b83274f53387cc6c68d374f99989f757a159952798c5947a9f30c07e570d906f0927c31fc4d952486122ce81bd1d3b18a826bf3a379730ff7c94e6d148b033e6939611353840a479760bebd96936788f170203f9930eda1a61581872d2828afb1aaf486faa1dd79c7ca85979b3077209541cdcd79872395817fe1f833f41bd6260cb3e9eef658fcc4d3627ea89926089334421bf81734d61366f35d47df34c30a7050b41396524623c2f258e5404bc88aae00970c61ec6e5975b6b07ce2ab23cf2ca1d423e4dc61021a51a07a225ccca0e5be380e895bb5b275a18785056e5faea42dfd6f14a526c0f67a3b9c2ad77c3169ff2ae73753e7cd98946f3a04c7dfaa6451393f1cb24d522aed44fccf6e67686915f929331abd9e394c089d114aa6d5886c262da4fa718ac304a33131c973cef0a8a6356cb3ec2e2be17f029a97776fbdb3eb48b53ab9a9fa0912192e61cba0006748064a0e58206358ba8df047454f04b5b775fe18332e61b8bce1e1ed2c027d6e303be975874396776d23f38ad0e1303b81b21013711669f266df81235341271aeb32b63d123204ca96dcec8fbb441d16c1db40f78702fde252cdc23b6d34ddc93aede55ca478e5e537460c6c977a36e3c230e02a07ed193ebbd13548e6c474fe87c6769e4bb3739d4a68d6e32d0d5698d2c37fc6782f3873f827400d544410165145f091ff3a0ff0b7de68032d359254c3f48fa1653b7c6461328f994518d2c1348b3d341d1b8a94365821e6c1f2353846c2da2ead7fd4724a2c11fe6ce52d3812685c84ad7fa9f0115b26390c8319c3651312dad756d0003a4d90f2293555a0a99880055fb96fcc208cb8835ab83cf138bf47ec94babd36768bef25b0ef3db68cebb398a3b4323861e3725400da09e11f8758a529b0fc117c1b6b19364136d8d8ab53a2a59e0116b1ebe143ba6dd9721b69646e3765a64a395ead442ec6b3aa2aba5a34e35843130704ed026382e028ecf04229376ed958e6eac37e22e49d42251ccbad95031ebc1d4a632fcdc22bc757d38a3d6473392405f298f1b7dabd0c985108f41150d099143eaf6c810b71960b69b28bfe803609207b2cc84b4b832d8b27505be6d897dc291a7cdd4b23e4d23126b30cffd115d7e90f4437f744ff98444885b820051015af13301dd46661c8ee8c2fd3a9fa37c94c3a0f4313b0c1b59f75f1cb8a01af134515c3008ce9f61ce91b0c71feaf4393a835679d85df772c6ccbc494953a8d098c6430c1339d89ab9376f4449f90c33e7b6a5e632aac633a44e4d919ba362f81220dc31a46cfe1e8b5c016243aa5f72f4f2b6812bb71b180248f8da88d619eb1d503b5bd6382eb66c99b3adba75a2fadac7fde035dd32b51f185ac7a38b08e05e9a64780e138310d416106276bacbdfd4f7f047835b47fa9083b1d880edd80a18f7ed2aafd5028385c3c439334e90a8d51f04a1e549ad6e36af509aa7901d8801992148409e209c1b21913e1a06c3db26594698eb188b9d1db6435d76ad838030220101f82e8fb81c8804a8c0edbefb3bb22bc2d0a1a4c434bcabf0ea3f431dd48965e7c91b4512ae47780d29c6280293912e92cb470c33b8853ce363f9853d9fb2804416a3f45acd1c9f1909f2fccea12d799bdb1d5e7134879e58b8ba0c42d25893c8b7da947590a653f60608c7a36dcc201238d0bb40fa175fa1fca31d03405f5f1d1cce57f47994cfbe7df814ab33b18fb14dd396f0fd88cafc10037fd253b6ff154ebc1aa8bc03bae6bb19549a90b2a17d76ee24f4eb78803c2b5f72dc98b0dd8241300b70f531d452d459672fe59d5b38816de8c89e4694ecdfe506b9c68adf04232baa6bfc11d68090937dd88283b063190c737badce5860d6324695434f41c3de0b360b5cd6b0ab155ef113cb6051704b281aaca67eda1546faf032068f9778748d6e075fe3d36115a3518e2751ed631b23bd2c0e5eef3a784e7af64504020293203e0a869ba399a3a9221c805da9911e8e11e42686377f73301b3b206e854df1a7fa8cdc33ea7641272eb70d4bf152d3309f377d69cc40e14762dfb31eb45f928bcfceaa44412d17b02aec4e192200cc8c76ae619dad9c88414d2ba4a9309bcbe25c7d1515236578284a1e03fa8b8aa7bd6539272999ab392823723d6360b547fd6ee320014fcec475812de9437f2c8210948d2ad9077cfa72b85fa04266d525afaf2de39a64dd11d4098bf631ed61f8be3d8aa0bcc94507545f0cb882d6b7e2c367ebf0fa30fb7c9c3d1198e9036edfe3c43f569cd015d696ad7faa326b72dc41366cb551310cc17e702188a86dec72121753ec5776e2c519dc325c340ebeb928bc1ae372022a48102d73b0cb574f43fee0de970ebf1f74aad0700f75150a28e50d4de98a290eb7942831b892b3140ef187ae87d31f0aedd420fc09d54e3242308098b7d8d62aa361cf51a2cc61a847c4aa9aa3034702a94c69ab2a3b18df559fc114796b4f6083b586dcb14b80425646f02b18a0b8afe60cc67dd46aba340816aeba82724b7ec33aa708e110040750077e9a5ba74b920e511dc4e307aeafe260782622a25f66d2451c0e765b42bbbab48733a561db00420e95a3da68884a952b33f0214a91e598cf5d2e55bb555ecb0534748023ec654b6bf13599f967acaf1b565591bd4820ed54493a1b2497b5354b9ff328540ee4a579b909813cee13114060c626501cb63626e85f6889b8924c4a2bb06ce62fd14908889e9fb2a7d7897630feeb568feb1a4e32ab066752e91448bec4b98c3dd128d228968ecb1ec4b7dccd6f6c9100d1bb433ed18fe9e6479a0c3cf7b2905dd71963422004337b41f86c24808e5dded8dffb699cf73f2a70eca337adb44c54e08f60621a8bf3d6c9b566f2f48c59225daa842962f112af4ee4fd0c06175e0fd6f9ce830948292266db4d94aba7a426f099fc390d26956fcdc76cdb38fff8fc22bb335e65062a65f5adb1167518b14b8cd7abca9cdc4a257d462f891f35b27fa6e040a411375c3aa52720d8815445f36b1115a2bcd0d2a5ae9a56a1decfc89111a0ce4a6500f2d444b74292da74448c615426a9619a3c089ae3080440ee71eb37722389c3ee526bef169dff1db70165ee74647311ee18408a9672d09fe0e1d7fdc023b5b84e3306c49dd577ddafc533590e741a6bf879e1c3ab65688f8d04049b17caee9c8f76b46ed6d3ed19993624dfce396a5a5d70cd70e0103850aa905a42037f29b4e36941908e55bf686a973d6bba1067f5e6594bfc471d4bc396dff86529bf4ee2a35b65b86b999f5df7ed9a4ff9ce7862f65d3f7ad3caaf6afa84323716cbf7f43469ea404a29c09ba8150497aa5de87fda9e32108a4a983d7648285fa2892e23f6d94074bb80ed5445fd7829dbb754d8cf7736c89c92f48ecfc33aa3ad3075180420d5e046d34b021aaf6cef6665afd8ab60a498cef924e9be266917ec896b502de4b82fc494b33cb4d59e8007bd791e673a27e9b759d8300af8d64cba6884abf10c8112ebd2496606961ec266cddbbd1deb47bde997ccf511dd714db92f9bd2356b017576663026a6eac87b98dde23f6307732e698089b122b5adfb45ddfb5321ed0c6bb46a0dd1590352bec692386650bedc1379fea243108c2dcecaa179ed926b6dec9ed2fd10fc341de7868fa9d255eeb1dd05c8dffe3bd3398e47d1cc55e0a9e830ef03fb60a45ac3d1350b83a400a5647724e21a5f70e9d08a7c46aa947328d1c4ba7160e144d8f2fe06dd4c59a7e46c974b367a9f26a49fcd8337a7f78fccd300052cd4240bc100a86ddf0a3466aa4ff43717e71b64aa0884ff7e0b03dea4b1d43fdfe408173825f142715b6955a41142dde8a63b07f715a7ed1e48fb8b1b51adfc792cb0c33bffc9a67748bc68ddfcbdba7ca86e9cec67bb1d52daa1208da2da2f12a692820971d74bc6d8d593f8b32f710e04d277f4d96bcf8e58b916c508cafaa124c5d0c2688e3083ab60681ab49226e2da251a9adb1605954c2ca767946f79ca001ad3316b80bbcabbd1725ee9c45ba3507732f3cabb1c87be293989a291b6b90e212e9440acf6521bc8379d3c667e230e0952dc809191813be6311dd4444933bd73dda16797b4545d9acbc73b4d1cebce6bb6ac6143c8dc9cbd26ba483679dd4b922b5d44782bfa4e9bfde2dba6c1229c57c350d292d3e8955205eabf26b2a7ad6d04b005bc4262232b2136ec6060400e1d9357c34173fd91a1624e01a12d39c8a39f70f762e460f44fc3134f2e6047cfbd4eef51c7583de1c15b65516a0d75ca9235e2cb086e71843fd9cd28bd1ad407e732a7d14719bd2ffc577ca77c42082a6e490e1a11c4a4d183ba2a3e9d2fba509854c6cc6a04eaddb7386c49418b1e96031b5f365ec747f659aadfffbdcd6ae1aff02972c02a30635cae8334a383196db5257e3a0cffcc18323edb0f69a15ddf5ee65d103679b82a5ff47ebf22b87c0d62ce6fa2dbd11e6740a5fe540dff0ed4a5222322b7d69462f80b979005156179904efcfcbfd76baffa946e0dedd3391caca9cb0772e25ab03077aa59612e21acf67e8b7f0e91f2abd090ed6086d67907f0bd24920df932e45af82a2d579d91f9f502356d3d4a02ff5560609bee46c724524abcbde26c2383692d6875e33e951140bad831961b8c536487f593180adfaa31a3f6bf2bc93571028fd9b3f1124ca569bbd7008e925f2007c7b4d5b627c6e93126269d85407b720c85dc23d6c8e1b28658237a4fce55e2eb25265440b90e290c1e916178922d6c3f8b341f72593e529347445bac09bf5a29d773e081beae406143f093256ac6efe690b2919fadcf0ca9b13e291f68fe3a47dd9f1a10ff7cd4e0bc01bc1c244bf49e2ed2f1da7b156210caa9e0ff071b2c30e77efaaabdc255ce5aacbf245682babad1309c4ca66d82aeb5a43840b2b48b4a9dfbe1bd8ad0d4bd54a413b67325c8bd0a26ea2f8f26e7cbc3e9ccd9f5bd3099121814e1bbd4bcdd21c22becaf9001235931d32f249805e5729aa3fb532a59197f96056066e0639dd6102d548172619348cdf4ffb8657e02d86379ad67a10553d217c7ba5b115cb0e02b23905d0645f7ee55660b22d2c9e36c5d70862c13d249644fb92bad458c31b7743b9f406f4ade549fcddbdb44ae475b720c08f5c2231cccc252b9a5b53926d66bb3cef9f3c28058f876cc82a3dd1dec8823fb0ed88c91a83db63ee499112a97166cd90fde6b4c154feedded068fb7880645c7df199f06c6eebcdd8f14c938dd4142bc43343083a509ce99fd84ea3752a188e12d26fa590a6e486541c9920513342716ad5f6313559c9cbd515410c7616856491c2eab111861e26b75b648147a5437c705c094690f9f908bb3a7aa9ebd3a947ba247a54130199c4ca540a3652488b820294ba05345470a1c013c3a71f14889e714fdff44dbe894590fe1fa566c840462ef9226393cbb007b424e00aa9a54907abe7c1fc952aedcc24288f63ffd81e0bfa44029e7ccedf4d90024264b7bafd88d913dba15ade6a128c411d34596278216973e01bf8b3c763c993b9186d06430d4caf826ab6821cf39bc7bcf6a787b495ae735227f3c5776e40e150ea49472f75e6dd80b2555cdc6759f616ffd88a139df732ad4544b5b0943d326a33d7d39d7888b795431c5c0bc9887cc38d5d50c18a37773f151dfb749c6199122996bdcae1fa7187f1158b068263597d5829e5786ef360f9e9c2cf583d48879ced73d4fe66ccdf9bd0c59d2fd300b45e792cdd4238dd624cc126b50dfc091e53f41bb85d910afce9273aa430965b0c07b42b96c34fbc384ce05f7e32fb67430b022b516a486fb9d6845eb3e7e425c4775135128067d60294f87d7606fd2e57642c4a830f1bfa066378a208fac847b52417842a7d3ff052dd2a944f28d52bdc74315020a075976bc9e301880e92f02976100b9e4d32cac921035e0ee5f28af7c9f49ccd5fd83a4aedaad4acd051ae0681af982d96a37d42bc3a0ad6ab39a0845ddf5ba220c2fa2dcad3b4c6fead16c3ff7db1fbd5ccedd40b70c0dc2830bd28374e68c39e9fd3f092b7e4aebf38a51208255f953b4b85644d489637b9b8853ac47009738020069858cbc990214bac22de5b4e90cdae7142a97b77837115785358f02d259d727a71da355e2134171b344f83193dc7ca7532172e554c282f95d5b76b666b03ff4a04d73b4bab985b79cc5e7412c752e38751a9e4be03d351308b79219105551953f4fd67162b0504fe8fcc356ab5971c0daf14a0f81d0a718b3f96d73140067996e4f4dd1e4269cd163e6720879dd57abfa201789f065816e70976e8ab62ef105eb968a5dfb8f566a649081eee86be17b5c7e6401c9efbba3f5dd96e18bbc6a71bd2d8f40ea2dce440672f98156e66f3a4ef87907ea0f1310465909176d0cc3000a35293655e36d69a13f3ef6d9b0f39dbae9815cd29f9bee6ffa81bae20c333dbde82966d3717aa0eeb839c353bee5122d91b62b2081f8446f8371b93da3585796224617c72b3e48dc49b8b8583777b05e1266d52fb18a8ac35c0f8470dc72432eb34acf115f4455cdcd16b529fe5a4039390c5e06d83a551317089f831c36f01047eb3026fc6517e82b194efeb777803fc4534109509410369a20214644765a9ec96480eeb607aae71ecfede2094fd4ed5552f11cb54210ab9910ba99a0d09f2c945046ab11dcb2bb1479601cf9efccbc63e396a095fe0693206e6b0adc6471f6c70391fa15647f35ff23d361d42b496ab10b19344582225c30137190f17d56587c3f15ccda7a6bea0799170e9a4c1715e2953ca28fd4fb903a071a0d44e54c055b0a019a3e372c8b064c06505cd92c9a17e9cab1d2cd07ecff111c86d86ac60be60af083c10148247aa3c20c418fdd54f8f50a94a8f4e034d1291a6db3172f3296fb9d626edbcbd2dbc85477951e97cf1541f31497936b4f03368d7230457b04eedd562e9e535c904c98c0fa391819f55027c58f83da4b5e75460b0505379b7ea196770c500998618dc35a3adb35f12299038878d29a202781343bffa4b3563043cd2865653579742e7d3b119c66d286d34334cc9b293cf218d0695564a01a8148005c69268674458d256f916683929a6d3c82f4603b16f41efca726483f3179df31610ed87863e3910aa17902509f433d705103f9eddd323984587c564d5c20e3b55e84f06c03d3340e38856d46fe4494680db89aead0c91dc09abc464e944781c2958b11dcba87bedaec3801ee571d6ab23202c1bf1fdd78e43ea863415d5e36922f87119c70b5f140ec1a24b3767b783cc1e04580f75843892f9fc8b8f1d1fff788f61aac28e08d919c9084a801f6f0441a163fa5e0e7f1428d7fd25c2a12c816d383c1b1ce37fb4ccb1c8903d59845daffd2134cac79f8069c747f3357ab03305b50358f6df2768637b3c888fbfb361ef76cade734132fb1526c092a8629722276d4b03b6111e4139a24dc8846cfdf13be6154c9ea238a299661f9229b40bc6ea3af623e838f976a4b45aefec820b6dd447b78882de1ff0efb3743eaf1619a1623eede20d4f48d0786f318c8b86abf1eb51a0513904498cf9b28ecb91908ec561dd0f936557a972f67f974479aee129d919a2e0388fa36c5b5540fdcc942917eb1d8323edf5991f5d2db12bc4f1354430e29aabe4d6fd6fe53e50562aaf1c7a2a587b6a55dadf099ea5c653979bb5cff0f43d47f954e8586a38807c6673290b1e2c02d4ab1be73a6b0741b38d343520fdaf592bf7b06028863a09979296808528179147d9776aa933f82d5aa1f4284bf20469cbf411f9ae65c9a174fb61724543063ce0b616a6eec04b7679cab1b9c32db7cd0dcb68ecd085ea24f8e544b83b5de114cb4590e2d45adf358550c34bf605b1ac8943e7801c72b004a0e93e9589358eea1b07a0178bccd6bbc49d80ff72263902bbfc4c5de0c785b888e42d87f68de0e1f3b9478f4db87eecec577e706b9dc94c921d26b8f28ed6ec6e1edc37f250ad52924344b3519b633a6ca75121640c169b7c2bfb5e4cf4c2966c7df17502a625b0bc62f556769f55c5ec595cda9b9579a84e1c806630574575a5165b5ad3e7be0db1dd1774328b12e53230519a473a4a33965a060357e69a5b4d13d935931d7c3ec0d5fccaecfc3294ef3cc7503a09b92f5a06a1ffea9ac22ff9643e2d5d49e22a019e54b1d189f71355b88d30d943e046ed9ca9c503c0699d7de986e5d9246dfb5f70ea75cf415114e9619ca1e8d4c2b904484b0aef27b33ab31cb19c6551dfc66286aac7edbc7d7c1011282bab85d64df6febd3866f488d08f18564d9e2d6e03f64fd21f533665b5bb16e4cf96b74172ecf42a07f31756c1c652802bf2d8ab477269bb6cad87bc23867c502b41cb4b71c3b97a7037649019eae6b5ef68a4e168689df43618c62895a1f8b6c45d8f1c8624637ec84c4258976d43a39ddcfacce8c630c05b1621db474e8003bd2088a6b0e50d0059e6b8e6f3ffb5febf2f2679fa48473b88c1148524b984964ec65f70ddb67f66fff3730414a279d903902ccb6714ab96815a7a13c2ce3770ae5450c8308d7f968df21095b79ac252a8d9f8c444a77808db4492248fd235b73584b861e7929cb4e0c7d2018d6bc281ae094f963a447a032b1257fa8a9bbe03512c4a2def0acab74ec907a74705983b81b6ac5744380a5055045fb48158d855463dc0f78c9dcc8fe65d2029fbfc358d7db7e8768acd7d523f9b06082c350f3944baa4d0c471387b4abac4aedea4651993486b8c69ea8fa3587c98775ccf4ef2e23209c57684ce85b42fbea17f71f641be37be5f5fb11d75ddd01b3879a87964a3a8cc12d8831a73c47d410a065e46e20625c5a5ca04067d7030b2b9166365ed311ecc8e42744cbe1425f61dffd46f1cbb4b12d5b949d7be3366c4b5354b5b50a5d3496173658123b3a3627ad6f00779442a46dbd9cbfa666d2f17ebf0136b9f92dddbb26a1e62f52b099c5acbd6648fdd4e8b12c2aaa0dc61ea3cd7a6c48401af4e37dd140078ab5276dac6fbd7723b0c3059fa0bbe19d7d45c956431f67e6f799b2807f7c77d42730dbd305cfea6a76f46747aa60daa8da477ae6d7d5e55e929170b4f84581c5504f2d74b7306c70f8c682ae224f90f0182a812f83993fda2d2a75ca0d9469358670e332fbfcb40349d9c3909f8d51d2e9e2c29373cc55e8b86e940316e57a2e09b4cf140d65f5f15c4508740c39ea3dc9f184e7157968f7259f2c224c97b68638c44ab35333c53d227752988ea65d8f1c79f418c9e165de2fb6dd846cb6098f7676e43da3160698f2a58e7e6c3210c5912c470b661e05284824dc6207e3073a91fda07561c0e6ce603b94cae99877aac0cc709e2dbb9377a9003c3e2799d07ee315a8031fc805ed7d81a5e081bbe1fc4ba48ccd5c2edad2fa05d8ab44a590a889c333be23e7fca962df3af4b0ce325186b742c800ad273fcac38d4d2c86f4418dfd93581fc15668f39c3532eea9964610201a8c63c4f0751a4028242bb733eeffa9b728c0e0160843f6a4fc5add969406e9b95b24b65e1aa88fece31338d7157c73df563508a979278d9f234dc65fa60750846de4840abe710e15c0b0af5d7eefb98247e652a90cc02e520d5f5519705576c2b3ba9972a98525ca2ec5aa7c2d069af87aa94c2426ff43c5bb486753464a3b34e6777411a9d4064b43dfde1625c1c28ef8a5fda86b91848a1a113f4a70cb544a154eca9e36e02e8a5a9acd3aeeb68f90dbdb010da6695f47274382d718234ff8bd4bb0468b291eb0e2eb4a2605f3de4c7b1cc527c4be20c60c3837fef66e7d8a4e547c07fb3b03b1ab3d35971a53cab8d2464059d41ece5716d9596f80aab48b7aa7194362483604fccc2e1f534092ff5cd97c4497a4003b6ae329ccc3cd6c6548034c81367da224911e33a7191e2ade0eb99765acc724b10d9a2ed80f239edbd5974f85056940dd0923e05b4b11c45c028dbf8a78c147a6b33ee69f3369c2dc86126051ac4bc6eab540d77fed24221ee6a92eb5a17505e7587402d2690dd8cf3424a28705ffe565e7a75569c8ab1d0cb58bcf69ce14d5f7e2686b28d0ae4ae7deb2f247f50be687edde357593fc54cbbcf385c88dcb0c96ee6f8009c47df447f0d6ebcc4f13288f1042bf180ddd0b30c17c21e2547361952b831eb009cd1b5856d39addfc165c19e51d2fa95ecbff1f1be77f4afd22c1741cc2fce840723d2edde7b8108c43bb13adda69063bb5daa9ec6529550ab7a57345b29ce7ded03dc41712d5df2dd843e8977b2760e5d2582d68d6b9763448028dc6a894df0671df9a9d57e51158316edaebdbe517824bf648473f22abce603c05590a6549a0c41d75af0d7b6ab9f5abffc87dc2b680b0ab60b32a1dcf7ca540ceeed0bc5ee4e22ac60450fbcbadc691392e3c03b046fb8857da083b9af1607f617dbca49b7a36986d28291d50ef606983e7a9316aac63073b8b73f2574fb23a537e8e8648235651186126ab61168546b83d15fd77287107d647b9859388d0c6b2b30e0c4825c81ddd10a3f911be84e020f5d2635dd1077ec3a6cf2a61a40eaf362a26faa38f831001026a46ba4abfd0e0ccd636b2db73513d88356eeb00127016efb3e7e2b31cc6a8fd0297dfa5302504776126f601894dac003e343f1372ce480e913dfefe1bb13cbcc130c32aaabeb360c5672a29af2632d41d56f06a1d0760096a32da521e38cd8e72bc378e3180723c6237f9b7e59c0f121f47d476a9c602a7eb87e680856effe0083bc6cfb504f4e7a9140c5800d1196231188c9958d3e033c28556325e9b008f00ed08e1234bc6a46b7aba104c8de610d0521f712229d7dde1a29a5ae4e96aa4a50dbf7cad6ab47d8a947f7bb1f4e13036775967f8cbe4142a576eb37475adc9260a233cbe1617754a794d79c452bac4a75f7880b3c51035a344e6f5c50d415a903e92dcdd81e6106df0e87be660619e73dfd975568483f543f7fa00d5402b4e821c73ef46238a8cf4e61d36b6e01f9e81ba6fc5a3de2d31e60b67754ddcaff8ae9c8045267d56737ecb5db902fc40d92ae25524a29534a29fb061307bb066f425dd037a126944926a487c911838181897daeee75f814602e9858c9d5bd8e921e180ce68a5157f730f1065672e988303098ab7b119c5c3adc0798aba34ad44c81870b0713ef077bfc29a6eed9f492f29d87a3fb946711738a8723e55d3cf7c244fa97174ff27074ffe25b6df22f3c1ca437f91453c951f2b9ce84e307ff8f1a271e0e769dfce047f170742fa43ff1705047bda3fc495e7294474f060f5e212e87a857a8822585734eda9a4121851042486704dda0a3ac7251d188de8c96ca6567335a2e91871ce1043bbb8941c73a8e108212c8e8d14d28a5843e592e2c6ec1654e08e194f104083068da024c7dddddfffa264ba5253fa7b4eba0a9f5356cda5faba727bfafe6024d3268bad7575dca05dda0fbbe6f56a17f34b6938ac57261b5522e2c17560b2ededeebc26ab15a2c1796cba712002cba66a57666ecec54672dca9ffa0eb9a2890a3d96ed0756e9afc5dd72e9936ccde86777f75ef267b466dc9ad1ecdc9ac1ac946d86190d14a8a1599c96988524dd0bce6643a8404185be339986dddd0ddb731a0f1b42082184dd0d6177b7ca061c0d740047b3bcf89bbd1a06a043f7822ab71b0d2740581ce90223ac1124c02f9cd41d728512a0a06243a562a9be17968aa53ab1d81ffaa76279ab58375ca7faab585f6b755e9ae5a5822f0855d5dda1bbbba8db040e51a8d0e3162edde5217c1768a201677cd0df85463ff757801faaf449ba8986cb8c3e39e4afeee24fc3bd96aa4fdff2bcd6084f0d2334442d3a976699e14fa3c6071946e8c15880cba2fc29dd2b74505f8b83c41dfa6a5dab2a127f05f852c1186364f5a955f1a34357b1522ad5d7f2a1f3d22c2a954a5477881084a8ae927571783053230f70d7ddbd9b77615cb7abb56209191a2728b1830a1d218ca0fdc0630651e07044b7fb5bb96ebb5db160648a182c54707b0112fb74f7b7556407c7c8c24f10a119adf22f94ed54914d1029d4d7ead8d6c822a9fcd0bbeb82a85c67786023628b1cf46042901d235ab8180922d061a2082c46704513b09a591787480d8cb811a9c184d595d05c8431c618ab37ee81082442584b00e78742083f317e76e0840e802a21945042190008502834bc41428f999981d8899f1d8f124aaf22a61a6ee15f0b55c4584949d4d4d4d434dcc255289192e06a76a5df6b6a3e496aaae06a6a6c3e47c81c4ed3f6b8c7f05209c678e244407e08870011213929a50c3244ec468b8e57366f8423f73646e931b0d88a8be162a015741e732fd4a72956066241842df3e1cd3a34b90ac722049c4e317a0448a5a29c07a8df11b485e7a0892ba808cf4c1228c4220460804147c421b5ff052a02805ab3a87eae86663949036aa22bf9c1901a49e35e494d0a5da9048223e8456f1862e4e0ae48d1f18af3d1a8e66a90745c4d3da95470143a10b81dae1cc5a71e57a22f835900418d7f8ae0a204711f10c73bc038c8711c84df10421bba6714ccdb2b20cbca813e2b613099848b1096489f1f8efb8f3f07e23e206e39987330c8c122c7711cc713e5942605fc8c31850f0515f1383f9f9ff13ff433e98763dc0eb55b72326e868b79b72e48e1e7f3f958113dae7ee8640ec61c8c05188c836dcb723018acfbdca0665b24ac6d0b8c41e00feaca18e8060472e2c657209aa34039cd020239b12ca09bda1326f42010cd57201e90ad59403d20222c0b480b10ad36e7c03b2c01528e62589fb45816d6b1a76619f6c100dc0fbc43101c2c3a178b31c26264588c3b6c0e2139a7175dc6980ac23019034065226a73b01851e0601dec33244268f258748fc6c8bc103a6c5736c64f89313684f01742f8a27a04c2e79c94999999999999f9f3f980e8c783c1ec7d28a5a01c1a4aa51ed773d282106f8fa8680130e4a873be3f075a4fa9b161e0422050080831777777777777f72825738c3a883c52aacfe9ee444c11fb2344c826b62d33d53b636f736aa9f47f3a79331ef29939633cd22b09bfc6e6662673683b50aaacf9eaf3a9f9d4481a5f71491ad50f5313632373b383474ef511a1c7f5b8e053231daef728a5ca28f985dca97d6a6a7f6a3e3e7ae53b7cc66768cd520ad950297092ff65c4ae2b818ba2d3a1bbbbc7bf2d8d1e84109ed8b9a66e8368b08fd570d20f8d8a9c9d497376a8c899394c1dbb92466e4626098ce8c0c8e7874575103cbd7d4dd84e18c3e837a736d4f8f98e28f736dea4023e9fcfe754baa2c41f3aafe818d23ebff96ac2260c36854ea3fa77728cd08ed490d892f04c182d08e778c02d97de594339e9ce6c48a8c11c16b543cd579ec3d32c10868465813a726a3007100c48068201c1300182a1323ed47e286b03f4c3580e8439dce16133561b16f395ec895d0f84490a61d404775898c3ae4e34f5563c53538cbaa627db8a95e738ea6d3e7880dc84780f0e84f94ade6ef2c6aa2287884e6dc76684e7c80d49ed6f7f81bced4abfbcc91b880636a866ce293f46d1288ee007c47d4039dc16b5414db4ec71148848f3873df98f4cb3873dd9b00bbe9a2ad8296317fc8b20b235a21654ff7982eaff924f304926aca4c922eb82ffc724a15829c59ea4168b727e41ded8059741983aaa7f4c66515f1cb322223c2169273a4cabd1bada6c369bd5683a349a4e8d562b491a6d36a3cd6834945b4aa7e888b4dabf5974f0b7460e1e19a5e42360321999089b929e6d31409065246af310108501027dfee6c638cdb2cdb25344a7360ba9cd3ab5b956fb4329e4ed519cde8b9a5ea2e8e0eff70cfeeeb1cd0d7cffdf1b7d72bfb16916e71b5f5f9b5ef1d2d0277f0dc0871042c836ed6dc336dd873921b88591c5e7bea25d572afd73542a41c3060d333c930173b7213d388287f480864bd8081d3a654b29655dd32b476d86fcdcad6e0f77cccfb32e9803467db5aeaef4a75475715174fedbbeded7cccdcd0dbf4d1f73f3faf2b79a6579479f58a659f899873fbf629cb9f9e3c16fd2694eaba1711e4ec3835b0adcb11fec60735abfc37ce54516e5ef3f88557fdb0e7554db8f18711e37e2478c380fec6eaf47688666be0a6d0be8fd3bc643b6c757a3af2962f3839b2aaafbec8aea4c547f9a17d9950bf1a92fa7394d7b4e73daa4ed8a7fc854f22253e84726d27394641a7d8929bad8a665f474fd0d6301de2b478d1e03a95ef2306230f9d03fc0c4ab81111fc0341e8c187a19441ff26ef8f112fa91e86518855aeda218a2abc4e399a9638ecae11e5874398daf78c8a2fcc6c415b32a6e7e6043f3f17c87cbf4c9832d139a9ed3ec8ac3982ffa75bd0ca1177937883ef425de0d3f5e441ff218e628ff1b423ff2d635bd19cf7c16322ddf60579ee878300ef38c7378e6324ac9393c631c9ef10cf28c735848d22dca9f52f69876fb7449147050b9a6c8aa331126c24498c76662234c742fb6f18a71e0621cd01f928910a94ea4f3a143b9f10c707d492bb605c7455d518c79d5c1aef8734f74f2610c49247de2f7e44d9a648f7ca63d4e69d7b1cd512e7b6e12897c7f8944f6f84df6d8fc6df24605ac424fde52643308faa554a92ff5a9529f2a95527db620a4523dd874783ca5e8a7d8f4a520337f29f871ea839e8a4308ab8049a596706666677d5f4bc5cf5e6bc81450f858d0828a8aca559c5f15e3aa54522a2a29555451bdca8d18222a2a2aa326a8a8b44085188430c208218430c2dfee6bb1be16eb63b5528e2087b0c1afe59fb34a8bf5b522fc5aaaafe5f27d5f49dd2142e8c1f7415ba9ee105b11f194821ebf862936a952909d531fabf4c9532f37fcdb3fe87d0e3d0898542a258418a4524a74dc2154f0e01304bcc1a9327b7bfbc2b8050d2895cd2368d13531fb40bea234dec9d4392aaaf4a08e2a15a17b9d4e91f2dcc424e01592872035ce19f300b1b98f9af3a0d599cbdc3e2c924042f23013f1f8a8e5cc6eb757aace52aa99af4432a21d39221e34918f1a109b109ed94d247ba5ea2ca5f2cf1dfed7a2618386c559daeef0ec11872795199542144a98d62823c69aa51fde6c4b2c9e00068955e850e3f74eafa62c26e78dc3d824a941f2ea2371c62171821a453cd4f8af5885487693a4668647b35d891f230a130075ca7c1532d2a8f8476690d0d498a446114c8d5114735363fc0ed9fa14ff24055d7c36917685f9637f94ddaef0eb021d8ddfc538a9dae6a4c6cf62477da9d498fa6a6471777f896c16c1a1c030dac009269668ca00269c60b19ae5a46ab15c582d960bcb85b5f0537169a566a4582c168b054417823294e8f83702de7215bfbfb4ab96c1cd4844fafd2c7f7fb2a2f7b5f65fdf6e8c73cedd677dadddafb5aa13bf4a8ba5e2a2b2dff77ddf42118ac1a6529f9498b9d56ba22b05dd871fee8ad62b7edfe8b731e3c6cb0d1dd68d52a954baf16243c7c6cb8d971b355c3ac0f25a1d8ec1a1019d93ca62d80d2436183603127ed12995744a5d133a27b2094c50d1ed0c5e286c41dc82a049d11b4470fae4efdfe5742fc6c189307ab87893ead54da2f20d075996cedfe43be02b8f931395dcd896918c225dbbf06c709489e741f6e4ab0e782fb6a9fe5de91b9552a7f74ad0e3a8e85886131da4c51a278ca0535fa5ea4e1841529d300290ea4b7775b27ab14a7926857e924c266fe2e150e149240fc70a6ff25c6722bd0a9d0adfa9a00289f42be0f8b1ffa3860b172a987eacc9974cba90e9757ae9de8587637a353e9513df0a346d960ad012ee3130bbc4c5ef873c8ff356a444c7957777e5f3dcefab3daec6d257ffd2ea8d7ec67889bc1aa4277dab41df266e432daad1793abac791c3d53dd7fc5be2550003f35ffb1bf0dac3035dd73d0e395c9d8783c9933c0f03b3d523af47f722d3d61a95f34c5c7831155c9da783c9e3f081c509b2032b02494d113db84cbe0626acc0064118c1011047b840268e5bef6543dd6f1312894422914824fe36d16fef65c307ba279148a427914824172626262626262626af0ed4177dfe5d14ed4c4c3abc70e1f0011c38c083840f2c56b0c40b9ce0327998e6c1d6038fc70107e93fd07938b878980f133c3b3157d77daecec3c1e43917349176729b4e70dbc26b7d155debbdbaa7c0695375df86efd2a08b331500d452fda95440ca5d5c732f0b54c82ed2aef8e765521d45aab0bd6e57bcabee0e1dd2bae30ea4c54f2ce63186cc71c4b43e35c747da63507a8c6b80fcd93cbd55c0644e10b2490103296026d5dfa3f009b97972aa0331c407489ac5671a26416914af79fe48f3f40d05a5a74f30ee7de5bd03e063c8f81548afae925eb49260ecb784c4b1f2d31774fc25255ff2ad46812497791e731a8d7bee59e7c597bef4c2631deeb975c80b473dfe5b4d12a233bdf74d830249cf758f007cab572443bb02e0e1f880ebbfd530e629d363cf638df27fd2bf4a33149edf2ef58b96de8b6bc75c860700efd555cfe4368ef23799d65127df34ee3147f9b3e0bd4a313c189ea742c97be1bdba9fde0ba2784f45f160e88a026fa08c0f08218410c8ac57edf2479910d62c2fd883dae349208c3f0cbc05842d724074bde73594d4308f6f9c8449fc30a40b6996178c5597f1d12c3be48898ef6896ad49812cf2e7203373c3ec8a7fccc54be9f5780863299e17fb9e5e3d87a44f6ff29846f97373bedfd49bcbbcdcd6995e0e4526232f687ac1ba95bf5960cdd230dbb20c79368ec74c8fc93cd633d984104e599f627d9232e83197754e9ffcdd638bf2676fc7a4b688a7d8157ffa31a6051abd3ffd2916f3d809feb7706aff53cfaa7fcc633fa3b1d026996d37310e13ddac7dcafd1bf052da0d1b366cd8fb2e6f35f85c785533baaeebb8e532a335e3a5aaad45f153bacb33bdb65e956d4fc55ad5f689c552a9f6552a162fab581fab542a2a626af3ce76aa1f727343871042ef051b7a33ff0c1468161ad886aff8999b999ba114dbfbddddbd703ba67f5b685fdfdd087d979b9f8adadeabfb1eb8d98c67bcf22030facc6f5c88948e0239db159fcd18094e82573e43c34dd4f0133cb399f1158ccdc0d80ccf3eb27653b35531842c668e700361b79e246e6e66fc02db1809cf8650bba9ddd46e68b55aed76ebb901e2e346e5e42325a5e73737395c312eaa5f644361a185ecd46cb51b9badb653abedd86a369eddd46ab55aadc40a87304745f9931f8540d4c59b94a4904a5e8af7e29813cfc453c154e275a84bfdde6b79a0bf680a247acd69ae1375621462081b9ad8111441fd11144131c62e89b29b1da5b4eb4a9a422982822e4f6c075c518eadc8246257ad45f1b0ab9f3a4c104828cc21d52712d56790ea130821ea1cc28a3f79b09ecde917ada72e511e5288412660eeeeeeeeeeeef6c9b1ca317eebe198cab0e9555f95fe4463e51956eb6396696fa72dee96b760c3eef60121849016614a29a56401330c5c5644f551ec3a29e3cb29e5c3e8018aa05b13d5df1908d59d9fe010078201af46efff32f9d70afc02e7b00b238f9b606fd985d70a95512f13280b811e54e3e4834020d087dc362b3575e5d083fe2504e27e411d6908165a8f610bf272b8e41cb500877118a7a3adb653dbb9e1ec8ae3500839a7578e0436438c3379a8fe128b9550a03e75a8eebfb73ec9a0e38ae3c74bc98b1ec7e87188bec4639973a6099b303d63a6ac4fb2a7fa8e44a6752d105874f1e90704a22093ec017d04d108a2f443a9c744fae42f19a7568bb51a5da2c623cde2feb1464691ae7321bb02256fad56ab71ad56ab817a0484db165e90868686a6a91043c01818137366353e7d1ae9731dd36a9ed105c9fa343ff42f188bd127faf4f31fc8eb71b47d7af91cd50fbadd60b0519541118c8131286b96fd3cfd50fa307a8c40235aadf90a067dd2e770397d197dc9d32ff170fca0de4bc9933c1c25fe3872b8e8cb6968b665c4891230aad4bbf9cb6f2f18ab4ee32bd2b6d47c55f2ee43ecaa7b2795bc665b38675784f48a771ae5df793c44a55251e11994c11faa933c9e396a05dde847bf3c1b99a2c8012811887ec83bf9984a1fd07fbe82f1219578eb289057e2dd40f246de17bd10ac8b24194a4a9ee4ddf0e3a52b1979ebfa78842204e410e0000f630c695c3c8172f3e1c387ec1c9e310e4e6f09b6854663a809f805935fe155780af3d5ce237695721a73dbe451a2fa4f1b7e8106bba00219bf5003cf192c0be9fda711cbf2c3b294bcffec615946448aa8b41a5a0ba416bbb2c1514c58f9846511ddf8058e611782b02b96c922fb02e8fd2514cbf2797f29c5b2d08fdd74bc64162522f8d8158fd98cec0899715146fe8b7d543f796a72f125a6173f32953e644a799109e5d9076d6646a36dcb897fca6368bc24086afbd72081a82d75d4a6f1d4fe78af38456d19d327d93a4adae04e3d7aaf88533b486de99950e083247512d6dfc9182cbdd829bd30e229283729427c9cb890d995fe196922555a825df1a731bbe26f62a2266017fc5730cd9ba3664ff5493b82c66a3625aa7f0ec93467b027ffce348dd89fa3fa3be45ebf19734f73c744cf19c6619ac57976d32c7cc3ef319c1c9ec1e43064b8cc8cc3b0bd39c763fac4cc4f999b5d2645c94dbe6ab8d30ee633343c6a7f4cb1f3a18ba164665b0c505b34bd045420fe461e251868bbbb5f6ad8b0d1debe369656e3c5468db6c19a2dcd65068da5d5a0d1684b2bb97da6e854b3c0a04aec6db9061a22833eaa2e6472cea44a99544ca7cf579df44abdf8fb9202a12869c794698832c61837d4c91ad8c80e332f47967199290b686ba78cde7c06fdf7f1e7ab75cd7268b575711cd3f88aa6a6f6afefeeeeeeeeae01f8419f1db8eff0dbdd5d2448d8dc1dce95bbeeebeebefec3f2b2a999e99ff429c6891763465e01a77b9de8e05a24dd3ecd86fad4d4db2474fb2f3801d82cfbaad497727777f7f5f5ddfd87f0270a52a91da4bf74185b4211d8e20f25dd9a49b1162e5cb871d7b65bdbddfdbeef8bb7ff590bbf0fb688e390a6767777777777777709b4dddd9d2edd777d77d7170661fdf753acf576bdddddbdbbdb5b08c7c9e821a3878c1e7d8231b684bf4febde429b627cc31ce0c3a0e31754f0d2623849898e748921a753f5f521685f4a954aa9a0dcdddd85c27de1bbb86c5c8f1b77173a8193518266e853ce189d999919b68c27274e74af938d2731a429c674110cf4a414a30076742c80998ea75b1c765feef674e9be9f8a15a18ad5ddde48308bc562b158bbd22a2d960bebe4e2d262b944c8726995cb0c158bc562b1e40cc71b974acdf2278aa4f30f41daf9c20f7e104287909d529e5b77e2ee0e3d424abf8f7eb61ed09b24828b284a5c546f890685213823743a9d4e214821a42118aa01618876109e3e3110eaa0853585989bbbeb54aa414252b41f6e848edf6337b4c51bb6b13fc318d9fb7777771b10df1787b03de13203461863ec96cb8c19dcdcbdc31311b6307cb92674b0b9bf1acba57fc71771b057f4e7d23076737337a3d52d9719ad19ac3e35eca6810235c06e6fdf1f80e0ae044ec689dd7d7dab756dca69ac4f4d3bdaeded3374344469a8a35d0c0c9599d941e10cbea24b298d34c2c6597430b249c5ee9d20818a0855a98f53ec3195fa74d0b11152d388fa4abdb0e9e8e8e8e870cf954508a0cfa2080306d67911f39ad9b6885c0630e2977c0e178c181f47c98f3cd84b37faceeb1c2e10d5b1350c7e57c8446994ce5c1c7bf48a5df1a7b31ac579f1d35fe15ff4a347677da23933faac433f9452faa191461102e8d6182315a2c32ca4593a034e33d3277fe7c13cee826d7901bf40df9907ecc2ae448f77d01da138744673e88c79726a6a6a6a680e9d511c3aa3338a4373e88ce6f08dcee8ac86cebc86cee8ec858deb908db349f38a6d18257f5439229c832c2341296d2037196de9524a1992f199468e979626ae2dcac07ccac1e03810113477771aadbabbbb3b484a29a5fc782f4a5d2e17c50c0c047a6c7313a5e9469f9cd2ae5bf708813864c9d123dbd46043745a8aeed0dda1877240d9a54183463cd978db96ce9f244417a3d404037aeab3b404f0ff984440639febe3a9b0287f6a120175bd04507d00d54d953f06128eb7d8136fa5d863b3d966e8b921b9dd90f4dc7ac5f1166f365bbcd96ef126933cb247de249218bd43f2a643ede741b6774cb2cd669b2836d51ffab32906256e9cd4a48feab2875d491d522679902788321286c6bcc6b6b0903ef52ada7ca9186e88f8886f038447df80c0ae240f52b63bd5a56c57fc493c3aee6ff83ce86fa0cf7da491329210dd0d3f5eb8cfdfc03dfd48d327193e32d0e73c1c200200d1ad8b9540832660ae75fd78b94b9f4e298e615bbac230aa37d88b413e943252cae48c949de4ccadb341ce489994913229933272c65bcae44c4aca647b93dde81232994dc88717b0293365a6ccb4cddadce12876c57fca6ccba8a6d0708f916de12a27a9b51d6eca70de99602c40f4f061dd66618ff424213a944ff9d7accd904c31511b47b918fd8b7ba6ccc9cc6996d784393999389366de4c99b963d64c1f13c814326793c8c98431cdf24ad9a2c2c4a6acc6acf1cdc8acd98e1c31326b34a6595e53661a9949666d1e99b7d9d32c4c61688ccaa64ccf30925933f9a0cc9d9aafa6cc4886ff3565aaa3f8dc219998c6b59f73a74f4e6db3166331e645a7887b1ae54f29e7813c1921dd6bd67a74a228c5983bb3366db356b2f5f4f470cfb4cddadc99b559db99b6599bb6599bb59e9e59eb89b0599bb51730937661043cb9557727297132b32d8b13535fa923d53fda7c1581340a8a5d452516e5db5252fd63916d79625ba2901c9c5dc5681389543f6dcba4416d4be411a35751a6511d63bf23ca6298fe83da157f0e8ba813232dd6222dd6642ad6222dea445aa4459d588bb4588b34df988201a204a8046dda0a62a7680000400000f3150000200c08050342b170345114c1e60e140010709046684e9acc04529003418c62c82062000086101011909999d93601cfe70df8f151dcab8576152fb58a4f06b0cbf7674204aca227a9a34e157eb711b9f4e21a41158f7ccaa9dbadbc434b8451cf81a921f13407dc8991761e89eeb8036f281abdc8d33dfb16ca48e39586682738cb33462ea5ea4c2a0223b0e324ddf6d38b5b39eb675b53ca2ce8c527891e78e5c5f76a03a431568aed6fbd8f3a6c60e5978ac5ac43c2601cf8a94bf0a214211917c5768f57402630397e6409c1b1375775b14963000e155744a170d10263b5951d9c0fa051b38a573da0707eb7194ac8d59fa7614738a6c895fcbfe779150b27fbc8bace4a603d2bd83b2d916483c7e2d62f31b6c8212b7045eb9691027caf9d1cca5d10832e8da9c324fedddb9236060a20d99edaea8b99efde9c86896e73ca247313a6134e69c5c7be6bec6ba2817f0f20a2f4a7050a6e1f1be416d45eec00eb6505169b72064454d3cb346058d317fac662b9c7192a37b187b986c6de4cac428e3f46a4d87dc4843ff19f015ddb62d5cfe734d3564b0a9e1d406c5f73f840d3e30cb10dc92123c8f622a0bf063860d29dea0d614204476afa7492c7c9f1e302c272c4dcfe3105e40d682939103e7c2e3ab6e48889e0d3d90aee54a15b8016390c0143ab5609840b4108c84ee1b0cd57fb52df80d70a7e1e2001e480233ed6c9c58a05a43c17772962c882fbcb41be16be6821ca5c40d077c9cb04754eea1ece7e1fe1439cc219ff5fa165d803fe5ddbc6778aa9b2e72fd09c3d0042286d7812da03c6c73634d5a2fe19119567640622a4fdfb441b879845ec3f6ff166654f947901ab3f90bfb1e138b3f07036539620890d12f5b4ad1cbbbc7cf37d1b87400b04bb1f60d841fb7a69de203ebcec20f070c9e0e688e7afe7e8e28c5386bf76a4dae9f254b7304d5a00a544cd12c90ae1108e982f5b0dda77faa85b564444e6499e4dee33b5307a4f3772cfaac675e51a001fd1cbda36b6395cfa0aac9704cf8c8f0d210c4910b542029f23d9157a41c80e634a58a2db8439576a5edb09de115640b28e47e71f9481969b1d0425f3939afb11da36f19770bd207bd19aa4712c74808e8d6631f1289eb4e19b54104759b2b880b689a781c61596e720771abb618f3c8ec7cb16710cd2a8653de2ece75f957fcd6ad0a86d826bd9cc1fcdc4c6f1b0669bee68bdbb1f91ca10d43516bd287cece0cf936a9e8f7804e5f6380befb563cfd4a10a8a958cd5c2bb28db9b5c39fc9d0f8ad1ed81cd88993c56564ebcdeca30a083726643eff2cc1d19c446ae6d693c6b033a9e9b6cfd7cac6dc54168a799984c43ffb6f4d0f15feb522667dcec05b2e8d8a4f155c2762974344cd4142d680907854dcd43f95a9030c2dae07599691d7ae2e030de6e71aed74abe12fb9d0cded1ee37e36c6add48a513a00319a3f4e5e5b58165be2f4c2b5e658843c82a86fa32ead2be8b9bf7b1991b6633eec5e6939732fd241ab2e4f55f2fe72470e716a9affbec6e7fbc209da77316c7362191d523e2de84c1e684597a1f436851189521c4f24b026256da13a247cf187ff76262c2c6c969ef55e576872eefb45eef07ce05188e10cf1798b21f849fb06c0d353a90ac71ce747fa3af960ac0afb439c1e927557726e598bc7188b34c2b4a2ee3b4635fff8f50579699746ec9c8af21653396005c4a4e2e98efede4ac8033b82872b0fd5b3bd6c5dd7b4d0444922930aa27428e1ca5e6cad70e2e6ea7ba2cfd6b20a2bb3a513a00581e9b845e704d80b068c095a9b18e25aa647d1ebae4bee68fa4cb0ad46cc37243b63b1ebbe4548eae2de2ec72c83230eb11fd3bc6023ffcb2c18aca84c5dbe3eac1d98be53ced06da06d7b9461c86b650385a1b25307637381b17c7fb1b5d5668e4645715c7ad1ec76db6f9ef665276a4d01c8c3d6a0f7f44730c29235922c0f2d05b2d9af670c89c8418187ee600419ea6dfde65ceb825dc3a6ddd44d416b7f11776a163cb7d5d2712daa61495ad4204c310a7b4ac0bb6a1b8e2fc416709ec1f61fc9e2364cef26d989b17ca48a2b746298738a32cb5f26ed814ca574fcd62af803ebfe5e524392b8186bc07a01acedd0327d9408e5ee5e2a55eb1a18dc6816ecd4fe70e00f791f623b4e31f2bb32037b803cf399b100f883abd79d621cba10d09c69733a8bc8de141a3210f96b50df512ceba7c9be3daf72c313dba292b2c54cccc97d4a2bf6a870378b256059afd5dcf03c3754731e2428fdf290042af3c4ee35749eb69e87d3437434a1a05a977babf03e8f91c8d261cac09429d20f0cd24c28e78ee342b391d7080eb66dafd92d364d9f87e1f1fc0b7f2fed3cf557a80a9c5f21fd589070a49934365f297650c7062efb425c6113060cd0956e86fa8c90d06b0b3fe59e798f0fbb47228747799b1154e282ec6e3f41e25c0086603c6e23ea690a120580ee0afac2c58dc6c824270ffd4caf47fe10a3ed0cd143513ce7b8ac0e04da2e3f71ed5a72ba8b9a1ecde71a73d0295362121b1a87be60edad60209d944e4076f90f59d8981b8fa9f37e6d143c7b26893ae25e2efc9fceb3783faa8eeaac5e1455c85d3a47dcf7edffcd580c7f322e5d8ab748f29e387db323c1ca9f3e898b83b96a4557a058c554003667690062a74b4370ae2b029d40becfb276e19d8aec3b3f4e70ca9ff6c10d0a809d9065e9e187d78c60154c6e2b1abbc0d010f79d6636c3cb47bdebd18ea239803f39eb04800a214c58db464bd8c8240e085c2a1f7a2d05d80f21aa21e5ae909ad173132f4e37a732842b83e3dfe97fd9b018be3e1e659e6e309bf650044217aaeecbfe241ce8be4a575c50bf231107d8c49e778dd90323008fdaf2a0fb6cf42a24c9dd522f142372781a870837eca1671ba333153ac3c95b5b35a26ac63eeeb1d7b2b743e313c2a39318a41d30f0d68bf70eaf153042e1d95736a59500d714c83430c7ec0075c2101a85ec0e42e3556f4908fa856b4dd2cdba3acb3ba6bcecadf8b5d06bc0db1770ead07477395bf1b9206ebd625d789f15ed1e41757907d3f51ec96a50de4b3bef0eb784ad382e092768482ed79ba25bad255d2ee4de157a7cb66e125156dd232ccd842f2b2b6b62c40622688c2a2e50bc0f5e29c24c8e0c1b780161961e374993ad2c7ed7e880b72f5d3ab54bf3e71269654ff96695d1f965ac3b88bffd532f189820278518f9361984a29f4e57382051d80a4b6023373c55c9088867e8d7fff356e1ab5ee4d10e2f9ea74c2b004906645cadd796c76362e6fe9f975f187796b4b4b0c39d76b62407ab2c01105ba649faa96562d9f92698a04333fa59376a25c468da958dd287aafe01965763ed841f4daadf8299f9fac0ec2a3747fba655c2fd746aa31c3a35502288cb38b756a64b1bccd54f2c99070682697a5666f0bc30eddc3f5dff8c19799ab9c373700f40e3c43c9396384a9e4fcc1c83c477e6233d77daafa1465f7faa531a287160dd0f648f736c97d8e2111b48cd6be91ef28d2f5c03ee5049aa15b9381abbdca09554d6470f449f68e5347cba9d2c6a3ac0d73b907ca940c48cb50fa8e25b5063a0a62b18af4fb47619e8976aaab662126983363b8a02158b27cfff1b674be1e862b05e859cad18886f38bfb13eb6507a9f919470b6e416da97ce3d50dcdd01ec6e5c99a84527349b067569903ebb9afe7e90429f2efb15d3c17ab18f82c16b967c78871ae6fc9e75a310e6b5dc998ab6a6db17f96b28321c60c4aa360b12585730908921092581958f8df44634acd4961d154a0586dc73abe0829ed4ce8daabc645af3d420c8df3f152cc7dec3bbb8eeb329c24f7056b4bd3488d28210411acced867a81a524c21d9307361ee08f3621e7eafbaa4837ca3de2c806a883e7702a9d619621ef7009d934012e241af6c843c5eebc663b097dd9aed9aed314f74abebcdc2c6158a5f931725a840dbb4b3edccc1d3ef6c28b977a7cbd79eb96172938944c63a9a43015475e191eccd19caf3dd7ebacfe21ab0472bf908cf2b900649a39021bc44c4a48397d6f9551cb0836a857e810bb9454bbf98b9abcce0d3965f8039c46c14327208fd6690b1643bf93be89e9226d824a8228751dad623d9a53cb43c781c35c99a1e10b0aeb6ef53b7f908bcbbf7bf54ca486a23946e5a3414cd3b967380c22e8e203432be961910bba61450fed91153a11f8a710442917c450fe7072f08604eb0339e0bdaa8f96082103beaae53fd91910fda0ede5400f683fafabd9c151ee7d210917901e39a3cf892d7153d3f972d8f23b263b0ccd5f0205991c0f925a43af01b5155466c8afc9806c16842d6e6e4d27da357f3305f43b8a6d34384f2181afa0dc0f039cb377a8605996be92587cbf038f1b59b52c702353262f784251c04be4fa392845068f38ba35a34f75618e58840664a86e4c653e5d3cd50e025029c4267a09138c1b901fe4cf998d4220a0904abbaeeebba4282a3556ee0e5672366e22322511dd8b8e1919a1a2266f24856d73a250aa13adc7690e48ec46d991d54b7f70217a62b246dfee756032e19fbf6e5bf057c494e8894a2fb47ead0400fc87a49ea52fbe24c970993c6a1a39db8061e214d30a02ae54ced40648fed1beb47a6d97d39fa4b6e8aa4bdb4b59eb61de441e5d9c11d7c9b294cef6d64845b9167c483eded8952bea2762ceec343577cacfb9f7d2369c8e792e6be0ab204a7eeba287fbee600b525f888c250c8a9432190eeff5fb3952a9fe40e98bf5bae5be83288e455b40fd7f0c9f0a6b928d7ec6b5aaa0166e15f9d54fef5251c200e4ab8660985fe1429f6797c1d8e737f1a9e29578a4d0fb0f87270acfabda917c69665d61c9ac712a4e5fdcaca65fa1056037079c19829d9ab32fe97942aeb474c53093795292a97b28dc215b2f145bf3ad8c03923bb9f05488e1e0802ca341ce36960a31378578a0cc26053f425750c84b0134f9a1a1582a160a320cf8d5001bdfd993dd1d4a8bfb2426581da21c61a13222b4578e552c2badce2160b4c38b8afa09b05e4fd6a13cbc2870683d84b7d04d9ab8642651444cf0113360dbb05adc385928d655b3d2ab274b6ca0b21e94f8e8b60444474fb92ff94f07e9ff70014fa1f60c7d511c15795bc8e0a67ba208216dc959feb3edc5247b5cbd452c2865e61e08a76e2517a1e76c3e8fb2632f027defe8b44a072e3404c9f6030375c92ab6ea5784aaa54952ed25d7d1876312a12d0f2ff6b11715f8084a14b5b03da66c2ff35168b32504f9b59df409705624bd9d6d393ef1fa66d5a45741f58e94ef17e800f98f552c3f1e90df4b0fe75f84d88ebc7eccd35177c6a3da9107084bf6eb719f38302a7765ae613c75870fed6fa7379140627988b9ab2589c3f6b1d6532bfafb1dc94a88c42ce938a5e75686e13eaf83406a2c7215ad734775190f002c083ab190e3d5a3aa0aa8aa2a477daadc453d08b15bad74973cf9bd25ac2fe777f6078936ed1d2df06838ac18e19daf4df4515b52978c7195685323719b40edef250106a6dbf68d49e25181adf8cd5c580806ead0c0d14d46ae29c50c5b5d2694879458caa26a7a3707aeffc9039bf3470f01f345c3dcb8a4b2a82ac1fc21d34c2cf4a813c49470de38e836a1664e9f53fc806f56d80e10c8a9abf704d4aae4371d5ce2b087dfe7c510bb08c15a9b772caf146080ff809a2d6d57b4a511673d6ef72a88283ddd09ccf4843b505c84c0bc7448993e17149775617d4cf237abaf0c6d340914407fd8d0dfd9dc766e4f50620c55e42f1a3287a18b25fdf8a22c22e5f0d6df47f071811840e4e5be17b61fac49aeb8d45802627ab13db0fd59cc2d7d3c5a7056bf59f9242fe79ba58dfbce650a143a42c30e7e9a25494b7222fc1fdd8401b5f9ec7a69956c43467124c9e5e027503a295b91686a2725f5c4df0485c4727fa75793e5d7c4917f64eb30b7b6e4335c12721f91f7482badb2a5218b8c574060ef0a4bd0d21f47c921f7a332d9fbb2e1d32f7687d481b202bbd03dacc8f3209218c0586a44b685a23c8fd3fd28d28b7e5f78a8452590d9c1f9fd88081f2886d5c444dcc7766eddf72286fc69f53c2adf28481960685d1f28d13da79e75fecf7aeba1ce597ce91b397392c217a0b6eb407829ebbff5192567b06a53fda1f730574b8271f57e276783a1f35f5832f9604dc62f1f6ed0aa51a56aae00c4b258f01515352691db978f6e5b61e6ac55b5b5bd7c9c594157dfac049a356a0b1369366dd220ab719e9109fdd9bdef7b4e2cc8adcde3b09a715a2ee6c56dc4c469aa951ede9c04bde6764ea00593e48d83516c547460c9b400b589a3f36287e59b57aed74039eeffd2d96180cbe9ffe41640aef9eb589a27065c8fa63e7d972d6efa5c24de6b5f20a7fec4e416fc258cf39e6589f7e4bb3fcacf9b699dc2be5019786b71ae2a0371b5053fcec2ffa5102a067e6faa544b0f5a89380042e0997ea1d17ebe7ec6fa6ad2f9dc5e5bb6f027721040a6151ba463bec7486688f1981c75a9957249458479034f7d3a5b791b74f170e3518222fc69ce6d82c132791f027b5ef81f6a4400596d6a28ddb69a18ac40681fb9f46bd84aa5a97c037f0bfb1b0db42a06125638cafe561d8c4f85b1941a91eb739abcccd995d71139675d3f2765ccb4fb5ac7a7bbeec53a5e1f86d6e78df8f076fcd4dee0bdd017b06915264f15aba05fe7734b24309d95463f8e5d68efcc93b14bd0d13f8fcfc79d30e9795363fe18e45832f16e4c32e6538ca81630ade5f764f847f6d4efb1c1da4c325f67bb5092a8fec312cc04a0aad0ee989bd6d30dba8c296c2879dbb4730cca0d00ab0f80d2eee6af44733bf147c36673c619fc161ca831bd12c0e90d78070065c0f31bded3c995374e6aa0a8d7f7c6fd776d67b74b41e2261f2ef9c3207be0104534d54394f24343b303e3a74434084ea95453fdb0327c5328e887c430ab53a64f2a3c066117b2dde90db016a9ea4ab3b2bdd010d9b9518bb7ad46279f57360c07be428460566132a2753f15dcb90c6f41783fcab33c8b2e69173e89f1c663ddac7bc3c3d3599c5d940d8a849c9ddf099314ddeaba3a23425c9945e346bfb11014a60e551cd0e3ed12de372a3dfd75027262d6c0f49a880e0755a2af2eb94c4954bf5d5d1a14535f1d7e3bd455d2a665c979c3e0db0c2527112525ebae0b850633b8d8fa71cd38c7abdc198070f1afb24095a3f12b39b61b5b760cedaac11962e81924333daaafec15855a1141188aa321805b219553b8f77c5bf0bd80d833203e5d26ca172071fea4f1cde5389ad4f22408562540e2c1e3111d6c85b88e058b03e7710b467cbb50ff8869da2a17575d1681fc16dce1f573a0dc6c57a79727842dd7549132853003e30d793b6d370fa1f6800924aa89f3d1ca568972ec04cf76bb17466e1abf04cb1612eb06d1b0ae1b2cdc5357a14d3146716d26db7045b9a0a04a27baaef28abd051b9838e771449682a73fc76d35f5d4f1e543428e94f40b47961057341287353b12cdc1974d9e321f613677909251abc59a848fc6335282d96faeebcc48702e4a3b4650ba2b6e393455119ba96f1fbfc03bd803467fa93ce148566b390f9f3f93fc520fa796cfb8252315e91092fa566d596935546730d82afd461200b562573ce47a7d7298363e0f794f9aa9bb29e94e139f37ee3457f1b9270930ef066d2cdd3805bdb55533b57050a845d68c47c743e8f93c663772c5d73b1ec164753083afec9d0e8141baacbffdb9c5d4139982269e3a202e08dfd5bb41d9c553451c2fc8ff5f326eb9b71f28d5ac163d93b2f13a43d4f53569a33a0a0e7bb2bb8a4cb24909a851091d20636f7f5378fb2ad84820112e8bd970f88eb5662adceafe326e81e7535a0ab56873bb2797ec88c3699dbd0554f2958089930e1fe2a2ceb32865c1d4c22ff84f3d563b0264721729b068b6c5cbf3af3160d47d31c0ab2a437060a23e497273163486bba789e5f5a9293e8267371860d422a9480c8c8fc7a9538a7116097528eb056521560247593354335a26999ef5c74934016674fa888cad5c5f7f708019230ebe5a0bcbc3512eeb66e8eb8c1101c32b3a53f5894e57fd9f176312232619f07a26a2a529cb799dff15dc0b56be6ebe226b6dfa9f3f169853fc198e5c3a4eb0d4896d232a97bac94dec2784d0be0d3a67d8d9eb6e1f38ffb00d3d786b0ffb4f653c7121dfc2384bc20daa1bd7d454378a633b838a9123adca0bf4100f547eaa426355b8707791089ae3030627c77416abe2d4bdfa6a8d05ea3c98ac5af7dbd85e4abec225f4d23d48d1db6e5815019bbdd041038ed41986984d8a5aae3abd5d587456c14102ba723d7b3b58a81b31b02f2938d9746ba43d033d3a2e4fcba5bd258d5e9cfbedff1606b9b7e01ccd82e581ea933074ecf210ec0fea509bd2a079b2cb19bd9ea279cdb2a59388e5093ff9b32f577802d77a7024b09ad8ed724dddf8aed0f30675691695da3ac16fa114c5c8aca61afdd92fa3a5268c02ce7b560b5d6a0bd602fb7bad031e2c5753c49e885e387c1c56b9c48dcd5efc39c4719931be35ee6605c49ffe9f225765eeca3a28098d1d1537bc88314bf2ba0e3c3bd4a10c57b4a424362d5fedc5c48a6e9dc3b98f9457b9461f846d2aaa453b57630ae0841c953c0bade686a371f9d4e74e20edf822754ccec5927d0b9fac74ca39faf807047cef7c9f63cfce2774593c039b64404138af4e88cad6999d4bb485caa5d8a93909c7f25fb765a0635fafdc855ef218c8808da834c310c8213eeba43a9bde518aa78b6ea907366a0b16be13d30193f3392e8ae2d369614d39853f68fa7b3c93dfb205b1efb24dbb96133313a9a211bc9ba3cf8d7798dc0342b62387e0d806a99cdcea7eeacc5a43172a69999fc34554436291841aa64937ce23ac8df48de52b37562c108ae23b1e283b743eaafb5a58fb18eaeb310601ea42005d695f1683082c7eb08ae81fb6af366d0adb239c8716e68808a23feae170e47a710018ec51c22d944a3bd91a64cba59e9c533e47b72903e3cc8bb4fd3b868c1f0fa1f4095ad3ce4c47d6ab9f0a53d823eb1fe1a0d9a0371dedb5fa5713ccd23485b1ac7a1b85364a61625cd012631ef53ca06470b0fae1d415f9d6a3f0e5635589832715dfc26f1aebba7700e287806e9f84a20f7bdfb3806c0ca832e694e74b682719a29e2c40aeeaa3fa4d51837dda9e385b3db356e3be1f8ad34128c202e9da4bd0e928d1701d1ae0d8596489a29a173227e0c9c8cd978ae4c47c7b1013ffc276f11d4ab5a91f62a22fc28428e72164adb0679311eaa49d9850fd9254103f458657827d07cd7cacea941bfc29b6e9fc3757303bb05427fb0e13c968708da354cc77c8de601004e2f129e597fbd01ca440b0d986f886e7ac0eaba3cca60221f802ede2bec6a94b085f7753c666b6a28a6a9a12932185a14fdc53d026da4f0758f48310b4e5286b6050c034d002460ea96845ee0b0314fcb2c5d8e8188364d20f4898214c5ed53f82d5da136013cb486ba3b0f7d79272ccbc710b8f04116500ebeada1c107578d9b94c8cb074bfbab9f2f0936a988fad0e8c64874e3faf0c6f10b2d34c7694f3b3cf2c087cc9a6647110cb00a374e9c180d90b3463ca0affeb30b3b4817c8c38254dc57590bff19d30ee97ede7fa805a3a53c695d3be926a5db5d10580a3de39181940247b61e04e616b7308f99d523ae3ec86643f3568492b3b6b3d8775febb3565f50075a13430bfae5c220c531fbef57af04b0f305b60bf638fc51f615b71fd2508f7635174d26cfe77b25ed1401b3ac4dbfac20782d193896694490628b15691cac7c0d641997d13fc7200e128063ec9310872e025310154a9e3c0325d019f0b0f0865024931d3dafe0492591d39333362d75e2ca81de4a686698189eb0e7d4197f86fec806473729b5e4bbdaaf5e7d7fa658661dc8a495e6b2204c44ca29f494323464b77394b7157bd1c9076ea2a725ee33a8ea29948cd2d8bc9d58e8f3bebed0727b005984166ce29fc26e82e18238426af7ae5c7330371d24430d5acdd3c3a6c0a0c8ad260625a521119c774c8001ebb481e59b65bb954a89eb790fa6f3aa3a4c57e68dbfec5418f50f6f5f8ad91b070ef317c621e0eb44dcb4b5a4fcd6b6f64537cc08bd48325c03ef9fa76a8251365999dea8fd9a694719e0ece95691077a5ff484e9156f3ce9a8e6ecfc025cd22dafbc7f7d0540989406eef0a9a36d8a14f6b315744dc50c0cf354f67acb1bdb2e1483284c07a9ab6d319fc4348849f7612bba92a1adffd8300a526306b8a27918100b7ed0c1a59eba436bb9cda8e6972ec8e503212e800fa935736477a147e292e9783e872164f08ea5b955a69c3174a0e2f62e60179a3b700693459246d6a9865da7f83b88448bd326dbb2b34c69117a0e90d6f102e43e4a1143b6210653a386c2d88dbfc9c91133842133bb55756818eae62860f445267b086ec8dc510fc843c3a9b2f02432659890a68cc2324ad1a476a5838c9260777abe1db54c4951b17d7416630ad34204f8903ed05478a2b2a60b2e390a76c9a0be59942322587c347930f0b24f8510cd3819718d4bd030dde655cade03ff28ced871090722b49335e4b844a2ee89c2ab285f7b081301aa0b60302e273bbce78c693008a76bbb1813d2376d43f22d2551500bdba1568108ef5fd731764a58fbed12e7098be7f28be1524a869def1f604aab9bec70d0e42034ad04cc9f9a0e95962f3fda266085979fd91d7613806ea2b0a551724632804f1f19424cbf917d8ce1bb1ae329af0fd86464c96c4d06aba91a5810ec0f20d40ff8ef4bca4c270b9fea9a7b9a18f87baf7591459735997431b1b9c0adb0426fe2c2d014f814b4ddbd926ec18369c9aa7e9109ff50fb0362d98f990b2ac2be4f7e24083a1af03b0f53e3e1899c9b0bcd37391a93bc1a7bfa8721533fdb1db500eff18d3777ca2f6cb2fe84703c56d17bf0166fed509902c08e0620f094623f3a373bf59c269fbe3890a3294099170cb681a369a33b56b0f7a5f2398affdd2d30252f3301d225ea7366ebad1dea68eef28bc7d78a6a25373a3b5ba14305cef7de64b868c83f551e20d4f8923334cb5084be538db791e68faaad70cdefaf17e4176892f19cecb013d25ef6a17f344a24f903116beb49d4b466e3d8a4a030be3aec5b795918fbccc522d3d6b6c0f4b88731c5ec8008e282c57f8eb5bd1b310937876baa52eaa6cdad5df57b62b00c3754120a85cdd99985bd40f7b645b92e8aca51936f027bf9fb448adfc1e30a651720aa54f05216b0326e8dfcf4e29a423e32773257560bc253555ffdc81c8ddbe9c80084f2948efa2b87b3b60cc5b3aec966a776a2c2da8f42299ec722f553592a96c6fd9b2185d3fa31a8c6bd9b019044acceb217858902498918dea2b5a2a4dcea6ee09024ed0d80546cbda91f7510cb2ab96f2ecf7641a7359c6b639e4c950e542c27fcc259bf38f94ad9a03a973ab00fe0b22109efa787dbd412ce4e00801de362a84a9d7de1436197ff0d8209d5b05d9cbaf8ee52542d2917d645d3331b30ac27f1911276b38e1f90884d0f2eb1a25c0f9252e113b1ae8c3c11ee5ea9936049a1d750e83d2482be52bc74a4059f30bd3fc03f3742b4c8c5c1a065aa7733c32afd48c3e36f0c9bfb7c819af01fe538e40904123108c4fd27741c9e8690774c406ec6830699ca56584759db2a720499b0a67e81c1763e06cc559ef69e6870c8a007addc3ced1ee1714c13ca2efd13b0078de4e400dd14a232ad4804d7336a5d68337605d74bff54f2aba8ae20d9a97875b488af148adc06a64b2ad8bf4b0b245730813eaf8d96f79bc5409cdf97b3c923f5ce0db9ab83fc178e9584dd356be62113e204c2ed203d4e19a5e2c9f924833481335c8aec683d27f9af9111eaf9871bd8807fdb69d7d1b42932eef98697c16d1e4e9a8200c9a7c0645179f7477d187b39bf96953b1dece064a1a484b8066d8b88f665cb465de2804dd1fca31a690930c773955a3e7393483fcdc691c74ef3b8a0bcbf6be73c700470b588b476f3208ed4451f478dd6e3be7174d412771648734ef8a58dd6f57d075d2dd35cc7de487f6c17d01858a17fb8d3274d92ecd334573b4e44077b1f0099be5169538e8e2c263bf8802e78aa5bd8edab8d025411b3761b157e0893d7d992431e8721cac208b56f0db3a2c4ae03f2b33e7e9455bfa5d108df44805f2ae53266e911a178e16fd08d07d4b736c54301ef2c65368f2acb10287f2ae4e26c75a2e22397fed6fb2554e0b1da1ef145bea53d0cc0a8bca9ffd9e9202b05ecd1ded158f5bf8731a4ba54256e762cfe0e76b01c162bada3210905b148eb48ecd59a6fa852d60b961072b1cc5688fec11a5ebebdc909eaa5ad0f99f2972dc68b99fe0f8987ac015a7270c25a0babdb7be91e784d0150318b5e85004957c75c5ba1563699abda2e6d9c2d0b381dca0b9df175724c7abea906da32b45b1d2f9e66733940bd6362174f865d367bacdb15e770bb2fc2a9ac9a22c7320c17a8864239afa6e0983b80a3198f7d1e23f3c9fce98fcb0f08ce8b7a380dd161c810ec201d2e566a07f5f8e3bfa304e1d9c7601ed419ac40301ca5d0dd6f137862ccdf690f02d4d346e10b20e2181aaf5753df6284505905f8a14844a7765ac4b3911dab19c7d736c94a13f0a7e6d416f0e4d5bfd919f5a9f4b9234ccb631ea3ffdb13880637f0f532945d1d4fe30e0e00df22b2b341b8c01720a078dc24bd91d04c2b59435e52d7aa9d1fb1072c10142959da60f06f9cf530d19c0404351bad3ff6c5f01c50c4543df33dda8e6b1f80d6286cf5d748a4d945daa9417f0c8c7d18829c3322b6c483b1d65d4c7c5f2a82bee7694920cc9d67c01c89a59577861a46b2f1e50c77eea1711c509bed6f02fbf012880cf8351ab05d3afdf422d8a67e1853062d02d5d1804df3af9d0d38385bd96e6718feb659b5722cdded99270482c0c1187a6bf6e83faa81bf69c728e574ba6bd985e27f51ae374c16f05a8c115eb08b5911c8dc6d3438ba1c7730ce622402d184135843a5ae64beffea76dbcea1bb36834d36d9dfb82ef277ac0e54169a43a36257a5a39a65a7eeedbf4800ca0b3fb10c2ac8f1000b1a7788e2031b8ef911b3d2f9e6713384dc651eaa01fd34864a887f73d238bf759d0f25bfd9e5e489d8acca3669e1f63d47794b8d025f4ea62c492ac61035a5f2bc7f287b3ecf7a8531801708571208256914c1fa2f72a3d46f830cc815e80565bb119d114f14189044598e95c57e05db7f9a27c054cad8a6bf81d566eb758cbd2df24ce82da0c27f4153d9c6c0ae6821612745c0f0f051a447a8dbb24809a74fc2f8912670ccfff2280912f8e92bec3c65b77c2ff82b209008ac0601150ebc48bce0d1e0c9990ded1931aced8390cd5e86667984fb1ee2d0272731f4bffd84228c1bdf41cb22f3be42991c630a76e7f6e023f9e4392ce0dcdfa15c9355816cec4199cc263cd1c4482a49a9ff82c4544acfe8207de8e09843c898374f4566ecd696800069f4a7c6248ed577cf4383d1183554270362c696f579f685dafdd796bf14543623e27ba36bd08c250d509c7668290cce23169a412d0b148397f1fa8150b5d47f1c18b060812cef45d7d7fabf989ee81ef759e57859c09d20aaf9ea49818895de3f74fcd417794e3ba5599618be223a547a25b9f7a30c49f955eca50b9394f8db353a8fe4faa9bfea63f8f9880bb34d8e1febcdd438b62dda5e967972f7993ef4474d6413125bde0f7f75fc94baaa1e66febacd31eaca3207a9e86655309d39cc8dd00c436ab562e2d0865566112ce629c1e4b9a0ef65bdb82d853946219ea8b9b12611995456e0b89722d0530f986555ddf6f67c09463c6822ff7c24074baf958973efbf6020e705807c3cfc7b205c9211ebf859fbf7fae17fb49544e5b401abf76cafe3b663f5a6ae2f7c30628a8ecdd77168206b210954aed3c1809c75dc8679c38953e8ca3c1d4d42ae6e0b4869f92f408c8e90cda043ccf2c90b8f5d0a89aa998df5c44e0ea006863c982f95f3af88d9de77e7c00170079ccab216f3ebd39abbacb1659d0c9193b7cb7f689fbabd999dc1e4f11f75ef9c927a30be264ff2e6a3a32d491b5b0095b77bdfe2bf3d4e1ef37c8e42df93d92e2ea5903cec0f4bf9472e3df7ab88841c7038b834dc7eae2696d36374c8c1f594d761de5560b9f6da1a0ca8d3015e6579dbc476e830b765f4dc083526247a4249a4312cb82b24c7a32d797629fc446c06a77c1aa41821bfc06d4f152495723cd2bc4ccb82c1fc8ef8b9f1bbe58d43079ac99176cc02cb933b537ab986cc8857ccc437326cb2be1911c17cd2b43981f633171e5460dd623d387a2c80e00757e3f65f8cd8822a34dd76157cf8db89d26d23df41d726aa96359c13ed9e30cb45b19847a8b5ea204545291bca5db6e9ce47d57eecea87ca4e0f9f99fca71318f9d465fe0bf5e30ec609f1288676b48d3531caa7e748933ce448411a36c9dbd1568220512dc9736534fde0872a242b1915ee6928e5aa964a70d887c2150f441e2dfad91b24712b9b6713ab6451023fd22b9b34809e3a4f5217b5de8324ba22c36b04430a0b529176a9da16e8dd54897ee435acb148ea4e4b486d469b16fded5f00669b3750998ed36eb970e3abe9cea6909e230922281e80dddba39ea9824306827eb124b27884bd2ed979b5e61a0ae51e8d4140d07d40994f5ad3653e5e8ff89851f98a5923606ac071199a164756c936bd7ca2c21586ce96a0b0abb6e5cf97e176c52b2ace2f19a910c918c452a2ef8ee125a89bcbdad3056175da8effc636e56673a4429e7d897b4a331bff0d23b6b5c81db6b8aa2390b523f869627ba8d4fd4647ae9c9c7d7511a7402cb9fe637c1d3cfdadc700901d8d0906c77c7b1a75057058f62a31e9e083bf065e64acdeb3865563c5f2535ffe5c10dd992f91d448f11d9fb407b1583d7f0bf6fa10f2931d4394127d658aeb2779331154b4c89326026c7ed33ec43a644509df6c2391b0564b6e7fc39e072108539442a0506c0bac6b90d8266f4c1017cbd25fba9a2ed1ea48bf1ad103d4a20460480f07b121405349aa456debc96e07a82af80abd38cfd7079eeeeaba05d256f2da89f749a0da7bd1b2d9af72150c210ae1807683a42268541daebcd4352b8c8a0f9e83f42cb72caaf23bc41324d205c7aafa67082d56cace3edeb5159f6bfcfd0f36af27ff513313d949941f0f7c50fde54b13dfd58027c9d26870e4b7cf80ef8762938f6d637aecb7217eb41440664cef47beab24b340c553a96ce28044ec07e308061848a47ca6f84eab0c19ce246befc101180a8d5981da3debd5278e0ec88f460d9beb5aa95e9649f60a6885da30107edc2d3c481ed9b509cd6ff5bd8366aba8337dca144888f860b4f427c04a453b38f289e1bd2e3b3d14879756e6f1a1eb77985b297d5563a3e593a6d3c12bcf50bf9d12bcb3545cf48370cf7a4ca099b842ed013ea3042cfa00272241f882bbfb5fb98fcdcfbb8e908f8c7c3456527dd235743f7baa880efca25a49d5f6aa20098da950bf72925749eef7734cc816e3c8fd029b6b3c00e7598a31212bf7654278236ab0678a76d946d6fbe7a9b60165845a521a0d1c9f4428f53eb576cc4aadd255835f92671971772398d8d5cfe81ef6e6ee36dcf9c97751d9431deb2089a489b2ed191aa29e591b822aa10f300897cdffd62a21dce76b5976b2d3809a46171961a6945e5adcea5552ca47989ef6d15193752040e3381cc00c40fe7be15017bbaa8c7c0ec61c780cd111559a75bfb927bbd516ff2a97390d5eebeef69d0a20d2bb3ec0127dbcd8ffab3667df767495c1efa8fb4568d45c8eeb43ffff72993200b5abbf5a9d2f60fdbf1cd850296c089dee7bcc3e630023e42a6b3b8d279068eb345ca52406c0c0f62e1218b5ee7338093a0515fb371980c1fbdbae2db65f2a74904463fb3ddf50b18b4f0d095f891a2722d0403d74561d2417424111fb9444997cd712cb2591b2eb699253d4862026cc5ed79800481d611b3e742f9d7f2cdf5df6f0863b3994fa5dbd28d37b47feca922950a474c17c62a1f6387fb8621e675e932835c8c0b784a540c30c46ce29c41d93a3417b9a95d440c6e6101ef233e2adee89a04aed8834e952db64d5d3f1276b9653456fdec1465e5b76792a44d378df7cb5155ad36a273cd8a1f4882b7685340cb3c9a461199c1b79ad651e12b6dd8dc6c5072b63943601b3ffd85400346af9b29e36291ba747240d037b176938f93e777d75bd0f218403854cbe9f33598c5ae2dd40c9e3afe22c7b3ae1b8ee6fce81137f0f63a7f7ac5f1b2a375f6575a2decb6218346b300a04e0abc5b517f8fd0cb18f1d6ec6a362eac9c90d9f98530c4e4ce136139acc677cf2fd4ae64ae448bc09b6372331e8ea6ddf70e7fbfcf4c85bba201709b548620c80af4b538c17bf92e5e9368d8234b906c9edc7d614971f6a200016b20695dfc4f1fca6ac92a850acd4b1283ea9983329ef5673d8fb80efaa87dad99f2a89ffffd99efb9fba6de164a528129bf54ef027469e7742a0dea915057f20e06f98678a79d3a2daed76d38b85433f25d259b4cad37d4b6f846174e11ff964180072547a34251faa7b2713fbb0bf6b4ebfeca6dc75461a7d01ee2b19678b68e08a1ded953b82b37916b7bad20daed9abb9263a4ac222e021e05869b906ca5ef8304f6c63523e088f7e33c4aeb4958768f7664cbf1a16d636bf6943bdff806060563c4e6f6cd11bb36a2326e1dd5e45aed4ca7d9d1672191fc208df459a4aabb99ca957d654041a21edcb980a12d96bf0c094285587f4a848b1086493d07539f85dcf4afa90f645b99d8d1fc1e21cd5dd8f30b3dcb531d2b7fab8fad0c42b63a34278a9283f1ebc9e71388fd38b519cc31968d80c5ed2b2e0355614b77c73fd58f9dc843392d4dad11bddd26db81c370c045e539f13c9dcc48e9fab4f6d1a40b916205fc38916d09eedf9dbc3875e488070c1bf7be82019d06eb216f6e3b1473c775eba12888558b79af2e313750c5f015b16977f08d4bb25978674fe254c1152f4f0b43211790514dc605f35e1a2b18ce646154cb7641410bd3f5927d892a0e485328788e2ab901af958da645cd77f617be596a466745412f3926cbde48429e438ba1965ef4fe24d75d0b53b6edc57e75ee31c4ddc5980c46308a42715f0c6d91526747083cae30320a8c3b78158ab15cbf28d5845d29f77f924e22fe6e9e6cc97a28124e3b2aecc289a68a945fc40f5fcee1d535d1bf7cb9640586068251e2c00c2c61ba594c1caae7f9b328ea7ec1f618f957e5c62568cf522cb3f49e05fb981a1aa171e045a5fe10dfe8552d083ca0caf06376923f1e47a27389e652b8724fe6841a759700693d1789a75367efff40f826089cae725c37e829c7cec44c46aa0797a32fce7bfd189f394a6f9f4c25cfb32d15a20c657f6eff36170876838de9da95610db71c1844bbc7b2028ffbb53d0a0f341b6d18818e22ad062006ab50f0b1f49ba7e6142d08ff8c6cfbf70d950dadfb43f3a3646c1641a6950e0216dcdca1d16256cbd1cf0fae379ab6c2ddab92c0ff27127261d3bac936fce6099994f833b69b637d33f9d6287158def96038bc0a2feea0acd17a9069f02e5206076ddb6cf8c840578678ca868e1a33e45f00f9b9dca094a91fda60771dc52fdd0a0dfbaf7edb5989d0f210e4784cb9a1aeadca4c773aee9e0444237e5c190365da98c56bcc0059466ef65e1285e5cce24eddb5bf5c76ec83bbdd47604fd87fa068cdb067c423d441a68506573004a3988b886c648f60a19b73c8faa7a3eb457ee0784997300d6edca1c5dde628813a54c6244933e6722891f9deb6bf1aa07ffcd66c97a9824fe3bda6ff6f3589327a27964f975a2fa1d421073d479b42cf929d3f63d63ae130d9d482340bb8ba529d952f443ad703c223ad1d34100bbc5969c9071b23290c9f6879d2139b4ebdcc83f515c93a5de4f6e359fafa4c97445e8d26d7f801ae90e98f6c30179c8907fc1bc840801a26cdcdf272f03b7c3ae2f8b01b6e173a850c7d2460758f0800c7472748b378c4a6c515c4ac2375942fff507bd58f3b9733bb9aa6754e1e099f67a93e185243aab380e55447b6984700afdf9900c8908a798f364074217e0a71965e5d24c672c139b9f747f91a8c6f6ea13344f7b556a98174b442da0e08c790d2dc9579173e3951ac93f6eb50f984d67d4324ef98c0fe6f2a503f151dfb5f3b4791416c9a4abf37db7afa859c41f717f813093b9d884c5f50b7f5d0372edb9466cc6fb91564efde1ee28331b2d955c763af30158ef7214ebe956f3a8e15bc34b8c1d71168bd1b63af68adef18372917fc96291f147b4d572b39b4253dbf6d05f5c637709c24643e6f1109f4c1b6caa2ef6f47ea266dbedfafda19148585b40c15ba56289c9c3e774211135bf95867e1d71919903a3fc1b0d744abb17ceabf8e7ae2baa6b01b9de3576dc43ae11d37f6b91d9fe477430c45649f780adcf6116cc610a54979939d50cb06f95ea4d6e9d50a68640a4f0b06e379c3871dec1d35670199208f8e9d3dfc6c0014b52b2da09a33dc394dca3c7ee1f1bae6aabe164b845456b23aa95088352e61140779ecc6957e3b0734a33603ae5d1440f5d98cb7c4f2a1fc5234f9fda8d4b90d7a6b14b1c1ecde6a22dbac433e80477d53b303ce737bd82944b059a43b8b2ab802368198bf47957b5fa6345504e5011aeb5549037bbf9c19f44b358dbf0d94f82393149dec4c0c424bf050b3c3f49be031bf25bee9b41c4432f1c722231cf19e3518d182122ada7535509eb755c6914c0e3725c804250d27cb3287938bc6febe243ac2b2ebfa8fe04951ab3c1e2f26e44b367884569800cc2a0cf89cec5e55d46ddf18165d0c815af3e74f5b746354de7414c4ed851a20ecf55614715d050089e99f19fb10eaaa6a8443285787a01ff614de0dd0ffd040273cc114899dfb5446a399f1aaec2f531bf1ff51c50c996f75c8c659bcca016778d15ef0c147d39a822b670f19d01db99cd57b5553341135b6d31d1fe2c5190ea6d5c1b27810b9215fd4775a2a69d0f7a221d37d0bd8b8df5ba14fd48c9acf41d640359cdf660390e63d536a9a17a88e5b14e799c85943ba448acec544a2dc46e58ecd6201fab2d6d9b1444ff907a191f3381cb23a01fae7e920c351c3844bd76dc5b82f541a49262c19f80b3ce7183c051772c2024b7c11e32a2d694add4eb39e87af665185768f0a53fb8e427053c53d2283ed053d20e2a24030c0c839cc77aa750bd8ec815063a09e59d51a80f752d90cf62556081322feb6afd9c11f66464adc3c11b2879d39d574689994953a66b0e3a6ad8aca2776f236cb37ccb148db70690d961d96d5e28f72625688e25bdd04b66cf6dd66cb6ff753c6c1702128ed037042c060a81445f79aef3ebf17078dd5dd8442d553001bf908cc00fe5e762bc17c3da8f1947cfb71a329ea4b9a93c34c25e320f9f561ca200fc470d511051ae1f91353db7f0c31cde51570d64671b8fb31ef5e626b23539ea5234ac506192e3175a5d4e6504d9947f617d37c9db665471b8581c7b7dad0e9b659f569b09dc912916d85e9575aa43250751f91991e0525cc3a6cc28962a13a0ec7982e0225b391797cf172890c09e48959839be755b98a9f8fc572e4ba7e14723006c13146c53ec0577b68a80f0ce3108639a4d0297ad2f350ab3a71d6b0c3108f7d4804b7981c086630f15782d060390554b231e455503398b2f3bbc01fc7b291512826453749c25a1319068ccbc1f83d651dea2080b75f7468ea998037cb94f3dda377a9bd8b4add4fbbe5868f94867cbf0d1f13b807661b881ce010b6642a062b3c9ddf799a573aa78c1c3ff380b27e2114824acea99d8c7756c54168021bc6621be6f48a6c7277167bed725b6f79ed6fc1fde3355b7406421333bbe30bfde18948920491470e450415343c9c8d8808bdb1aa93aa95e3848e9734da87edde87fae2712d89c70f4da726fcacdce627b87e682fad86e0b61bf68e5422a9809442522f8156f7cd56240fd180edfcbede12b4024cfbfa888acc3a914d3862296f61ce50d2207121b3f43692620ce836b4c18f9c75a7be874277f7148a6cadcf2efe852527bf31acb6177447d879343a6cb24132026cd53fbb6b040a50be66bb0a3a1e5af13744f3d2b66fb9a721388ba25478df6f246d2016a710048fa106736269ac1b508f479b78d93172684dfccf8af870720f1705b842db6634b11c9ba0c890a423fa432ccbe2e91ca5ea31e97fa6bdc264162c12aab4bd0c2559944c821e6b8465f69831c046e642f7df0cdf428311c5c0c50d54ca6d48644c6aaedc6c604962cb923abfe41ca872cb9083f4cf9350b26f937c7bebca068ea20102d75e33c082243337725782f4b90b15eae29e01e460ba3615375fc2a965e901be8aa46d7f0efa9e00a5bc5c98b08725589195569786bf4f089fc8706915303cd2d061a0d8ecc0170123554e4a3c79a4a87df8602fa2ec32e0b24338d93ef89104e9e98be23af49262a4149aa05a487d10699028787dca8f698e1ef729490672d426a24c55d54e439ec68ba59eb2e3ab7cc4138c538214775f8e82e34c03cf3549b2cb8920f7e1bf3ca597c8a747f46008fb7ffd5775b8d17720ac662677640ba7ceef431106fd42032e4538fe73341e53cee6a0077c823d2e1235fab1fc648a9c3459826e957854fe96fac7dd4c0c9233ee75c43c0079ddf28b51cb857e55729056f582c03a0cadf7445c66a07220ef814ce43e2930878902464de095cb91bdb6757195b20708f4242cf13b120a1925b97e09c9604b13340e4c46e5272c476f3cec7e0c53a3985a03173c9acf51d9df240c5b7bf51f72b22c0b92bd1094127fb340180ee555584ee6e2080621439114a626471427d991df234dcdf2498348c1dd4e1433b9aab83f606be7042ae0891541a0aabf608fb11d20b2f9ac3f66159b66de448d34687b0e875d258c27f9b77b650730f4c94befb1d659d41a1191d9c976de6e25752350a90f71a936ed73604f43d64935ebcb45ec3c8bd1ce663acb06b5501dec39ad612f0b8b04b31a72aee2f49aaf012997fa385c9fb0ca902e9d6467286709c63e18cb431134a187d5ae733d25cc0d3f4758ff335a6bcc3f618b901c44392eeaf321ef61347a310c75d06644aba08b839ac3471a6ff1982973006a6b1425aa95b90910a823a30dd9982bfd3ba1ef1f9e132785ea700c5010820cf69e8e0afe071a0fddc46272a2d65d1365c2e19ce409979b1b4c61ad484bf06d7286143bd0b8e13d83678e266f2567b8b0087e9e822aa5b46d59aaec3abff94d8c18cefcec8239d678e7cc37aa259f3645e52f09da2505b14b9d06bdc2ea31db810e6c3714cc43002735395816f4f0600388abfe40701bf081db96bdf4cec8182127caaf6b9f7113c2bc1e30f46f256559274e8485ec3faa763053527ca41bd2d00a6dc4808bd30909043c0f9b2268f48e7a4d02dec6208cc0d8a0fc4d1714930da4b73cff372a8cf92c1e8039b75ff834d83d6ce16442ed8ce9e42bbb1d3e08c7b66649a2de22502046ca64db0d7a2840c7822d99e8a76911bcb2d347242d6339bb8c4f8f955c3164eab16cd2a7db24d7280e31d8d9839ecbd401160f929a2ced010cb8cb694264fc8b43f1ca7ce22404de30f27c0769200a2215f9fe1e34a229b09ac423809f2e0dec5f5af12a95521ac00776b29db1a104ca5d3048a976015c5b2f864f3cacc8508eb706262ae2e348405c13711166fcbae67a3b3dd97142387b1c61a6a46471777c5c034cade968341b9e32d4714b71d61380c23f56353d8132a70de29cf15f8d6d8e961f59b403dc2d187f42b7e7e2a0ad10ffffc71cbc33ea3bcc83614184da6c579128f45b8f861a70236c3e967b4814961f9244219d42da2b077e1d93fc9d68393986041e6988710a4475b33bd610fc5bac3f889df1f63b61a96adc44376437cba7a7e1e72b3c36b76e58389b1ead98cc243d657f55031e99f668e2bd702f23bd4eee93d02b2d90bca6dd1535d6d4097dec0966c4e0432496603af49ad032780a538b9e6da90bd09dd2293b5a995c948309136bd2591bd24d1e9e5aefea1e0378d35a43ef5b3610a27c3379cc34ef81a381f128ff5e04103042e692cf7382cced1520d8e93ba6106d25ec16dce66b4b3f510b6e608a388d4c24486305cf25e761a6601f4c26d389735181fd010c1822ebc760d03b45eef14e196d25ba4f37adc622c912bb76a8afaea559a318fd8624a17e92b0a206b0de7ac01f1ff84f0a53ecb447f6ffee82bbcd1748b651bdff4d7d271f178b288ec7a068aef27e0e8dc880e0711b48d69d871fea36478251416d0cca2a11606863b0e3f682882a7bf383517c5d4c29dafefe1d79ea33608691625360cbe98c503e7c29f7b1c484be36a63b460f574103a11f62a1923f64a0654a3b25f1a03842d7e160550fc987092eb3e05a110827062bc92c17debecb1b0a1ef6e66a7cc883026cc60f8593d211c263f1a48766aaf061f84c66094b02fc3c98124eb9c2a98d3262b5f65811566af14c01eff4c621d092fd0aa9b69781a05d1c4c774ca7a998c222e4912c5bdb998e41c703b4de14f3ab9c23a7ea0adef1a49c4b8e20c054b216d62d24ee623896c366b73c52ff9ccb62f2f7fb969c5578d36dfe226367e607b1b66129cf67bb2a45470197c04ab53683212bd88f4e6bacfbfcefac584ca295ae4e2bbff2e18d8170f7080ee5985c963a0b0885eabb0f7a323001df02f4b161a9158f23826c3bfdcb1170542bbe8d4f206304d80c5823c842bb9269a3589bbda9abd9584a55763ae101c52c30db148e6055470bba49663f6091e69837de3e5721a0b305113c7fd5a6c9e89ec3a71dcb84a6771808380e2045e3dc5efa06764d945599fffb8fec2b6dce8889484cd7d9bd4e5a02bb42229a76986d31e1e63160391486744aa8374bfd8f88c1c4fcc40babe482ff1373fea327c92f71eb1582d389530bf122bdf9effc0eaa83b499a6e905b05de3a405aea033eea761cbb3e3c3964e596bb313cead221578b91b1f9273580a32e630619aea4ba6b83102c3ea376352ada9ceea96009e58b04beb87976c70d67cd8a5f8b9551f2f1a77bf16ed75a71243b24dd07438dc6ff18293957dbf9fb5532ade91871edb70fd1344a876193da854c451333d9430197babf83985c6bc5415830281b25ad758c88c644b90e0fe38f39d873f26acd68cd5f24b83ee2a4e3da5def142c59f053473a7b4485aa2d937b262de65cae9e681349f0279847f02dc2050f94c4a58483002ea189f64b650f1abd80b5be913fae9c3f9b1c10317eab731cfedc44619cfa813a327445ea98c0178d886891a022d7d0d599bc40ae11695649ab156c4478e903dcf9caa7ff5d034344441e074f458c7fd2dfc3979e904b60e3cd1b5b0c78d843eb46330de3b6d16c3ffccfe685106df4fe969d2924cbc1f87f68c798d54b2d75237c69158a6f6e8e5a3582750a727c96f7d20f5ed8c7785d0187054939c2be8ffa524b29601efb4c27f8099d631ad49bc01667f388c8c5f3403d724e4d1f0161cb9890ba1ab68788e9a749dc4b7bd3c49a1f47d486ae9026a00d832f8a12f48a1e22a0d043f745038eb4a7a6f985a61e94df6c65f978ee058662958d96e30102ef266b139251fbdba83e6fa78ef73c333c4a230b5d55eb75a8f27ff368a97501650f435188ce89dc30cdfd5e29bda57f7fe2069087875365c3ced22cd58d1de63c03439bbfb5cd62dc71613d7492383ffcbbec9c899c9115db4dba231b954b53cea2ce73d483b30432932cf3f6071f9e4f7fc3e7493357243f2aa6a05672c8979d84481f590074c83370f3cbc041c928d2390ea5072cca5984b51adb546d7aec3ea9eb4d93daad0f36872cf1cb086072e2f9c384e653a56350c01744565ceafa045b8b3fd6710754b25241b244f25bcbda9d4334e5705a3789969af0f2f669ba0c825eef41ca76bf4b4dbee5b0777c458f6726b8a886d340e84260928ecd6b786a928155060d9c4e128a65fc7375ad011c8e92b888ff468ca0819987e1d7d786e5655f0f07db5e8c357c6c4c6f071a5a634f3818da41a07e15277e33936fc9d858b7d2fbeb688d28a299d7482d0996273a76b2c0211fe65cb74c48dbdd74f121c39821a6a4f9e9f86127bdc42939615338838ce3a7ab47cef5c54d8ccf496e0aefc92152b3b9a84b06627457e7ac9043c4de9d4099e148f63f6b16f564ca384cd16ac9a7e3e9fcdc23570688792ee7f94349db29f6f39e75f2f38d8a686140b2273cd2a3e69fdea037187ee36b65b0db052e5697abf67d26682292bfd1e0837d53c94f4214368c1b3e37bbb3f827137c913a6b86740c3f7f16a75a7e52ac4ff151ca092b8fa753f856d4136a191261791590218c987e9133dd4ec1292777be5fd12b606ed070c1790fefd39c1af015297c8383783d848adff7f6b8d501ed850cf0f5c07f30920c7620285e49b04cd3a04a8523a98e88d4e4c402700e8fed798b7654180d376b2d81135b849a714645021aea2e10ffbda42494cd1e918d75046c5ea5fad4928a1e61d04bfd40c5750b3c659258cc1d641dca807c568c841322013d2d0a7806c68f15fd5c587d1c91a163f63b80eac79461f6d716d6987b3a1c5dd8d32522410040a75a99f6a93f0455832fd00225e97d6f39ae03649eaa8049ae93d888623d2b3db2025165a5c4fa0eee20d00afe54f31ddfb1209f84285f4cfc3a65d51c516a8acd3a268bc74efc8b81b7d156571d3ae8b9ff7406026e3c29d2d5c2c986d6797f709114cba5d7bb497541bf47ba5ad22b90f26d6dd32a602c37bce7b03e3d14ea8928733632a37ac7713ce4c1566340b9e326da79dfcf7ad54095a7c1c9435b095a105ce40b4fa86d2e064a4ca2e58cc0e02a3b75384235e31f181a1092e4e7c1057c93afa5bef5189690417add9bf5952b8ded0585f5c7725b71234016ff7e6cde0281e2ec66419ac3ca5aeeaf211de544eb65e3955677a99784e5e4f03140637ffcdb82e2fab2c7d91644a0523ede215d141bcd25896683145eeaa25f7b2c714860ca4924061d3fe824fc2d2bce095642617daa083d9fcd81ca43a0e623b6b42a4c680cf07ff93ffe61b8f714088daa10cfcd5bd6995b88fedf679b05f4811bc914e23fa324c12667c2607468a83c14b4f801418a31fedd218aadf6392199100e643b7783d185fcf1a06eab64785b58e6e0e61de8e54df7ff5b8a8bd27df4867df28bc8e7ac93ecfbb221c421148cc92f9c9c9520d91f85bd9b0b12951143460cb8382cd75dbea70657318e8d378ab1560953fc031bae1ce20ad7600a8f360359b86361aef0d78f5d79645ad8fdff599d0575cc0d855116b403cc2d222fbfba8a20b3b48f612a4ab32cd978e9b16551a680ec7fe23a9538639868865934bc5192868f7aa31dea6882d2182be995ccba6dcef7de04289948d4a637ede14d1437a4ccdc690677d59b5246d2083d6cffc9b1ecac12cb99b8b51eebe00af81b2257743677b2ac7b0e14e3ca5a3e46d87b60931b880a34a92cd95fd0987816aa95ebd510f713cf63a951a80a2ce84be9c2949c0cb6fe38d897c06e8bee5cedbe70e197b216033a0c312582f56f0c938e7a7817d6d3704143d796668fdcd8c96aaef8625598b7edfeb7eada9b476886db9e647357f27781c140c8a0cd8dafad1b71fbd8ebe37a8e3a25d3e12770c6d9ad93953df2295e29a33b77808382bacf9dcdb7a0cc2c935a8e08853490c22699f3bc385a1d2b3ed0aeedbaa2cf51fea49908501541709890f6c253b61e96364319f0df0bd2c889c22cde6b6667137edac42af56f0f36a735d20df085ffa5db1a2a9c6bc517f66a26be0db2841fd6e6725036cc642a7e366f6427766b787397175f48aee249742eda50896f30206b09f8c2d7c1f35c2f8b1065236b6133c97e41c22f87a2e9c688c77ce6615b49d9f8a02aa0e742a3546f9f3df93ad143607a260ecc650b69f0d4e059cc891ab998283823a1283286c800c27a84e1b654a71fe4869e8dfeeaa52b00283fecbce2db54ee5198fc1b99961cf41bb27244dda6d06433548ff114d5e42808f784ceb26961eb91e3acf1bc2fb03a2dc33c4b36a6bab75201a6b82c52196af7c210cc897045a1c34f435e3a8a2c298ebbe92f9a84130cc3d905a4700bbcd35565867135adeb84ec35ce42a7cdf0d0ba5c4584f66f30863d52a647a493a5369083ba47e744172e0bef0d13b8abae4158346c56af9f7dea3435702398a9ca10f991420d46f420d425c03350770156a2a61fb30c265482a5b17a57b5a9bdc54106066f11dc2ceec4c4e9f589c2a4a004e503c6a6055930555efe12613082a0cab7d573a411bba246e142a3328b2a2829952b48317bcd5d82b6ab7ef1d5ef692771c5e80539b3b957daa3a0a864ea4d27994d119d0f9e70977ac66dfca49b2f81d07530b5d87b096fa146ef61739822adc185e179409ebae9ada14c3376592628042463f6b26af381ca145dc5073b48a0a5a3e5790adcb3e26ad55ae93800fade48264b3b94007c055836f858496ea1aa4b548401a2ac8b918eaaaa885d19407daca576aeeb4244239145984abf207808755d86407a10232a85a1ab2e2feb7849445208103f617570cc991f76e3b6d091daa9e0d3be2a0d14b4c65b07963e181a41cf34000e372c1aa920886c50cce59f9101d681eb5916c29393790dccdcd6432a7a888e1a8b1727c8bc482b2e8bbc9059cd46b75dcb61352f5e9355b7e5c222f1a22b2676495e2eb17dab0bfcaaa3282258f1275ed97fae869d3aab50b7c4deb506645ea605df608eb1b5e1bafe7f4ce50e0548ed36d38fa499d2fa656175aceef5066825f2c541d2f33fb84d619267c99b2a4589af4f8c1086676722a23e530f1c8633a1af7affbdbf98a17aa083457e036eed3ff36952c6170d837d5ff78869289fa565b916277afb0e8c5b21a0823b0485a5ce43df9d4b675250413d5515dc95da7fc1ca2bf81c490d62e81737ccbbbffe43405f9da7931cd3fc258015f1c5ff210f6d824f0a747e982fcd2a5af92215a59d78827c4156be54d36bb0708c92d6e6b1144f97406296e7da049abd54b0618d3129315726f8b7a66ee50c9d42a8c2a667ec8f1030a9fe3cd12f5f96704bfc4a5bc3e3c151bb2949bd5ad0c7fc51c2afa41c65c46b3537b789500b020a041e48392e9b00996ae90570c63545a8db3a9de2412d1d857169bbae224596fbc434d349ad391be8a019a2ffee3d035f335d10a40499ebf0d8824fd76cffd90efdc7d54a4d0982dfb306bd62578c9d3d696b61cc349414cdd74242c28108708a10454d658fad48a8c7d8295e6423c1474c0e9650e5755895af61cf3cd38cea12c8ef87c0b4d40b1f8989b3afef738e6cf677a791cdbaa15c301f902b48a3de533b04ede46ef82fc489e2d9d18be1de78c756385147de359e7f6778ec2580950d775976051c99f8b97fde8cdc71d8d9425d66f5da94a64659e64a74e104e04f24650698c40bc28c66d10035a7e9e10dff7fc2e847abab55a416d602d3a145efc94e1ba41802b874065d4089b5bba028a306b543b2bd73a9c2c87d674be4a88db3557b4a8ba458ba47dd32b5559196ab3c781c4e3321bd42f8bce67361b73f967e9d0718849714b2cf4cc87108d534dc21042714052af6bd9cc10c8922ee52c9a988a2f607413e8f2499213a7b9b27d3a7013b6d1283ec03614c4ab402d257cf33208a0901082026a359db719b9e2896810d333a8a89fa1d8741f7879c6acfa6fd2d8a0855b18d98f46a8b6a41b40fb7088ea90b53730b3e193b26aa19d8cbe33afbc38a8183dabfd78aebdce70515f65ee3bace819b6d6cd21beb76e9b2bf8a9780e93c1f126c82a200926ef04e2ccaebf4779232ca19beb1b682935c4932a0c87adff7c8d5a9b7c4165a6e4145efeb47fafd8f52a6c7fc195472a72023a9088b0d76d2029f766842dee29720bcb8fc1e54393ab96a338bce226071a2245b19c32aa1ef9edf693f32b84cac363c35d0f1114a1491fcc72b576d5f3a47004612e9c0a8b2b5e6c308f3dfa7e9f84b42e57977f9b995417880d31302387ff6e4e3f153e19464027354555de6a8caf94b0e343097e3dff0e756a6e61cacf58af9dc801635c235fc9cf835d2aa69311fbc76c584cf03aaad828e5a208cc2da1c1dbe443f1cc3dbc980f8858e7e39d753388a8a063db89a440ac7816635b0922cf943e51e8c8c66db06c4fd12ddd90dde8140f0496348d338957d924a9fbd5abee372c024cbb9185431a3f6b6d1d226215b4a99640a9908bc08d80825916e22632ee47fa3651d34ccdf7cd2c10e4aa6f0c2e81a47dbf4c5171e1928f0f1077e58bbcf1e353366834a08890110374d6c521b54a38e986964e27a05ecf6d13df61ae3b0003b7293dc5320e3cf22e0af6fb1e785f66b5f75a5ed6885c20aa91ba6a6d06027123021a8a1caa88a0f5dc8b0a5b95821ea89d0081eda6c0122052e80a18548b1347fc513601c91b1c2172533602551b62e54342717bea8608492d18658940c3d4c35710ae34a10184a85281e2ca094068b17b5275904f1736dbc197f4c8fd540db9da2a0e0dbe55b32210c217250810d4d0a29d509136d8164882c555010556509030a7c1ec6f3f56a2020bea56e4a0c5dd39a572748925000638311466bae20cdce174e8142a1c10e25860c2f3849456931b36ffaa0943629d3f9a0dc12b5131cb1826d8b1157dc50461346a1cc0970be40cd11496ab52fa48ef0d6123f9a56c4e0f2714b344b8614923891e28c0e5870922b2c32b2f0c0c214345060dad8f3845bb6a7ad654b23882b9642759594d690bd4ad024b2a4b962468a072c985626864e842c52513e1c25d166c9cc5a6b2d4fd5f8341a8dd614d5c37fd63e06a375f957dac7e39d5997cbe8ac566b446f30617183250a265974c16fcaa8d0b121a2c18b2a6508f12488178e15e3e972f5741632a4335b5cc9c104644c999db1ec4d6594a109e1c047ebc3162fb6a4b0c21536a4c01d49a5de65eade7b6fdf7befed9ac8f7de1fef9bf7de7b4bdc827738c86b2c623cc7db853ebdaf06e010a68aa4a99b184c1aaa23834c0ad9da1fbb96068a86286690d0e14be8df1063c6d9cedcf2f041fbe8fcca3696ed17696c9318b28f810f7dd9fe68dfb476ca0c859a1262f4ea34275eafdaddddafb3d6daa3456a6bedf87a5c6ddb1ae6c357771d71c705a198ec5e1556adb5750ab71697fe787c35adb6da2d6a684f24197b2d1ab492b4d65a6badb5d62b66e0657b450ebcb62d2d1998f3ebdcc54f9e646ec718db5aa9bbbfbbfbdbb2a3d666a3cd78efff99f10c7325c25d0e38243c1b701c12b93a99c7b87c656afd6dad65bbaff9f176b6cbd3fbee418f0c3bef6f895fedcaf87a9ce79527ee5c99dad8d3caa381faed77ad6fac6dafd501153665d7dd2e1ff1b55fe775b80bbbeeda7b716df35ded5c61b5cff1a4603cc3cc755dd7952e372b2647b820dfe7aecb87ea578efbd15d3ec4895f45318b7f8659fcae3f143f512ccfd0e5e6d8715ef96a583f873bdc755d7986992b47b8205fcb5d51bbb9a778b415d74afdcf5a6b45624940ddad80ddb2faf8cb8c14bbbb938022a14ea1805fe87dd7be86463078c37badbd1fe97907dd8ec24c20ab7b23afecbd119cbf5762ceae80331e677cef03bdbc7ae419adcff9ffa0c2fcffb913e794e707b9f5b4f51fe01a901a9003b2c529c3165be5e9814cda8671a1916ceb914cb2c815e90dc4bdc8d1fba1672df8dd8feb4ada40f7bd13817a38701dc62e2a689bf7c17aedc5640946c68e34f2ca5d67715772e51060ffd06b367d75cb4c2e34db87735dd765ef3ab381fc283b0ce316c8904192bd2d6b45bbae441743ebf66f088a434eb8acd187ea7fd58a9edf1c2e1020edc3fbc00c8b7a513186f1f23d5eb19c5f40da875f714808b2b5e5586237613d56bdaabecaac62a43fa40e39215b4fba5220f6bebbdc3847b9c4f42d29a6b5764bafdc53db71ce59db5dbff75e7aedb5d602e1a8ade12463c2e433d6bdb18d49e2cbb8a4f4f4434ec8b26138ba5e504e3449000e4621542d4cc014a9d035c6c8fc718d61483d74f57058d88cacdc5eb24869c932a60363c4b9bd648942082754b801a9ab555c126ba274144d972562dca350b5d29f8ea289416991fdad7b8102237b9630a0ca64278ce4aed14258a9edea6e6f248db4d64a5a9aeb88a7406badb516d7718ce29e8b0c7825ff948924315629fa5957167198e56ed430d2f73eda711714d25d80184931913b7aac3cb1fdb18ef541220d44898067301dadb5d6eac8fdf7dfac6206dcbd1cae957a7d6b6dd76a6d69d67bfb3af5deb8f926dc7b6d695d23b8b0e775196fe56ab59ff5f06702b61ed9188f248cdd3f06e81de67c1a66cdaf0002b9b64ec37c2a90eb53ae9cd14056e7ec195e3bccd9ae8dd46b98f542902badd6bb674ca861f6658033013bdac4424372251b66bf23ed8edc41ae4f39777ab1e83a325df7f71beb681ff55f3d6215161302a4962b5127db6f223704c52122cc708dddaa3e478ca038a47a55dca01b72c2b5ad10c732fe9620cb211cd8317638d5696d23a8252f504ee4f60255cb5dcb0c561900ae01135548b9c148eabb20f56a6f87bd0f0cc5156b6ce1e484d746874a6afa77054ee4febb43cbcc8b2577ff7991a0fd66ac47bf55026dd42d6ad96532ba48494a17e3717cd55a6671d378eba6a757527f95aa328ba7462b65d9d8a97edad4322af5d44f955a469b96986851cb28356a259a7489725b37b9df52b58c1ad1ba3f8496915085b4ec76bb49d99c168971c6b25b22037cb62a471e462bc5d45da60c3c5ba928d7a8caf0359292326280cfac5485f9d79022926f7a90df36d926db649bb27f7f60a72c1b37bdb452562a1335ec32c9970a24ab1bd012e5eb26d74ad5309c39374456c92a5925ab44758409b645d5e98895ec4555cb912f4ea3525abedc266b9b9a9ae81109d85825254ea9a998543b1a3959711288d41b855da7cc1355522dc94907ac51aa58f59eae89d6dac3da61f47b47375fbd0a3376c81386ed4423e2439edb8b174caa111b27772f6c9c9c8687b67e93d7ca73ff6bb8aac1fa613c4372ca4833fed1887ba418c47bf04d0e1f0c4b9e21fde16bd01f3e926cc9d3d27cc4d64a1af1fc9503a041dd5b979b8fb3ad229651487c40a1cb942226b4706282031051e4248a3047c8d0c5cf97a78eec0f92791d504010e1048a295b3c3113c2c50d9a1bacd0220393997fccbf07ed03733379c46cb5b647ccbaa3f1c2dddd9d52a7943a2d8a6adb4edddd9d52a7943af5c1ed5354bbc923d623f6d3c329a53ddcf6a0b4487d5a69adb5564a9d527a54efbdb7de7aabad95524a9d52eaf4d26aa401a525d4bfb7de6ac5bd340c7fe29e9227fc9ef184251093559210428f21355efc1cf1595fc5202dda223b83b4f5608b649519689c07eb069646cbad6f9525e87c0941fe465e598406f21f1fb4e3bba800fa269725e8bc119c33701550b3ce831c1535a079fc5667160902cf3a0fb677a0669d328406f2001d4b1e9c72839b597f33ab1584c8cdac0f9f16bd6a9020a039258d57f827a5b17ccd120d272d222b0c3d87af81e79046a3d93f5b8a87f5e1777e913cacefda12735a624e8ea86629a7256e61248aa21886a16747438b8232854f95d2100410c4b73e34e3c5c73ee47af1431fca79517c09b809429451fcb3a13ed82915307eceb3c80c582c16abf522ce835d5b3aef7aaa45a7cf181531f1a7329e772a4a3e8493fda9952cab33ff192e1d91ec1cc2082430c9fe46b450cafe477ca822511d1d1d1d31a704e239249023849083c520aea7e206adcff919240feb6966bd8be4617d671167043759609811078b1da06f46a053a3c80a3da4df6207ac32ec1e04372dadab10582a8cf66c29dc40de8ba4d740de53d2d2201ae4e107491ef223f15766a4341f3ae913d9df3b5b4a454abbae2b7936a05cc973cb4a8e30667c6a449168b88d234097c528ee6e1d75a5b859fb26b9592f929b4716857b54a5fb29c6f31ee5fa40fc2ab929c565d78ac32e1532e379b550c9f5af161f92e1af61ee007d13baacfba206b24c954a3e436b0548975a3446a9f6714159bf5a9448ab82d031a9ca78ee2399b18810399299ebffc8952238dffa23578ab01ee78f5c2992f3ac779547cc0a2b8f5c29bbc270ca234772caefd938963cddf7ac08a7e4f97ec69f26abe4f978c0920702ac1fbf08cecf288f5c011fe7c1b208ebc8cacb932b6460a142eb99abe4e94a4ac131c65ad2a71b6bc6a50a235ba49905ceb7583c0c603dce17613d4e79e40a2db19032840af31fcba46e62954f148b1fd6e830430a24885357a420a208231a08bedcfdd9550a08ffe47e84efefdf0ed43719b42288bfda81aa729a1b372de8545ca9f4a4b77f6389f1fe4a242d0da24fd489d24c6f4e1cfd71d27cad087fc9d57f468ce0df77a415e9a21545ee00b5286aee22679fa868d65adb85ed858d16b9bdb001c3cb5c3e432f5fd4f200727bf98289ad21a574cadab7a1858bef466e762f968e6424be1fb9e9433ef1afd80d644b37123dc961feeda6bb91912339583a132772f3c612231615606910fd5b7234883e48495af54e2b1dd7fb20483a0dfc93566940dd18c9e153f043120434d3072f5985f5b4ea46abaad3db1810d890260a28ca809245999977000318275578c14204c6ccdf935c89ba92251aeb9f9ee4496e5271254a4b2a2a5565ac524ad654535a6aed258bdbcd9dfa7425b27b5376a737af509e98647f1af5e5a44e291583d829c693262979929b4ec54df7a424a7d249aca42a639556a95513bd87c91a291c9270d02200b7c0151c7a6852868b23c0483105849a2998b0d2431b23fa942d115262d210b12608278640c244c4942e60ac9011d3c561a0be0605772aa89820a343105e182951f10bd9da28a64c51c1d2c5062d4b4c30b30e863a85f252468835454df8d06931820b2b355c8174a5b10bb885ae09192e5fe44086280625626421028d132b745043844276f725680ea537484b805102420acc84aab18d1c608207355bb86122a5895a15dc3b0432c060c114e6083248d8b6a28d183aa82941134dcc585bf1125c02354bf8930e5cdc7ad8e2859407189d29e209239a6a68336e196b3d833d04626e209382296c68b3c3ec7c6116a8939adabd801766b440e28a2392aab015fff854702926374f259512398c626e2f6986d0218d529aa4285e3dbd1cdd946ad23fd9e566961a9a28efc782d175c560a66fa386d174937ef7e7083f5947f9e3e693f1cbed05cd0f3f3d550c10a44e72dc352d29eb7a54587f47f6d8ae6ef76bcf195808b0d65a6bf5bce3bcaf8719fb588be2d1edd7bf5f03626bb5766b55488f1aced10348f64080d480dcd1fbab0cc8ff03a901b9a25b963b28b705b97758b965b1da019a2d164b3c628a8f28d030ffb24c1991023894c9de0db4c3482b0d0725a0efd406731a7f8faf7e6bebbd5fabfdafff33449891ad573648c5216d26e3d21ba87654bc49de52ac9471a64c5c3676f7279572e6963de3225bc4c24597db21bb4be5937e8006db105590a824919a21d9e2068a0b30c820715435b32005374a51ca84b12585d99b354070f12209221a8698f5a0910127778fc5205d587ee5f7911c6010862fa4eb3e04c3b03cc192030cdca4940e61170642e8a5679e722c73170b656bbd9c8992ad995b1e5d297b68401e7f9ae97f0dd44f1190fbfc3ca840aa90fad323e89fb3353e191d4afb95eea831aa7d74972aa3bf43aea5df90ab0791ab9b20575fe24f7fcaf55d76a9398ee328c755f107e28e348eaf17ad99e557afac3a22d7af2c4b47aa9ee44a3ee459712dce54655ea3d16847b39894261f3aaffdee718d7a92f734319edf59929266858d5555f8abba953c25bc852a5120f5d5e38cf1385203cd7079be994f5a8b5931be23555cfb7bf655b94e75addadaaa615f6501fba76bed2aeb193d7b32a52112585899a2c5280078a8d2156b1cbfeffb6297c31fe8e20637576bc371fcf059a491576681ff5d961824fe28820f72a115155033aba40d248aff811f3e883d8cbbd5aa2c4f2419fcafb46e763ff45d878f718db1b7a7f6b8c05e60793ce181c7e08bb380978220087662fd5e81dfd726ae38f440310c41f2bc19af562c56b85a3deb45d2c82b8b27dc8c59a47710fe15fe51dce066eec1316c89436a164bda40f89d0499fb1ec469b54224a2577f1e575087e965d7adb786e206b5ecb1a1f8e24811ec73d776d656ee8aa1b872daf5ab6f013ffb1d57a38618e456d3872a6ecf5e00e4a3f17a113a1e3188e94355832ef7e8017aa4bf76763a1a3a6888a639c3e5ea6cf0b021c66236444b5d3939ddf31a592cecf3e3e3353ccf13bdea95630deebbff3acf567b43dcc096ae2b8eb46bd802887370725f11137d18ec56df7e7d457603dd17c3fbf6569a2d10aed53d7f7a83acff10cf9604d99f56a748446acb4ce1ffb8ce8cb50fef3522b1a3835a868186b9ac654210901b03fd419531c00b356af0f4f40b493617cae8b1b9904576f9d8f071210a9f1b3e375c08e2c6df789b0b519e7cd2d6c218640b6ace97ad85a7dcb6169a72bf72db5ab892cd5ce22871b47084e307c74f0b44d9999041c3cc4f8e9f1c4ed9c9f890a3821c15cce05281051558c0c48a8d890b169816984baae812a930b76d09546edb922fb997d46c4b8e00000300eeb695a08aecea0a56f571ae32a97bfbf66d0b7ef7bda5ab2bd82576d376777779da0c822008feede1fafc7d05ef7bd8568e6783fbb7adad9c1616b77085618cbdaf811ac83b8c31a653e09cdc38ad91abdf8518bb136e43ec7d68ddda5a416a93b0d63b8836907529cd01dbe6c5d55aeb1e5731ad4ad826a0ad6ddaeab46d5bebcfea6a0d33623d45efb851a7a295d23a43d44eb5c2bf4f53c7f90aa1f193ec529c700c2112688ba2c411931c9e54e513db9e9c0973f7844b6edb93262433b84332425acaa7356598f26a2f7739232e760c4a69adb5de7b2ff6baaeebbccff33cef03bd25ae03afcc50944f2b839b5a8b34d0c97e73730a582bd22db76d865a3e69ee30b76d862c99beadb4566a7b62649b41a936390352762426192929e7b6310993a9ed1950a86fc4804dbd56b1da2b431415a5f472663a282eacb556ae83f245897befed405c97d8a018d1755d873d5aa16cb14159cadd4027e8c719cc3c5db60da9b6234a87a22847b619a6a210cd1085b54d4e49f4a9538762043e514abd2235d9906aadc6164354eea8c86d5bb2944fec94db168312f90c6d3170c9606e5b0c58b26d09114e6e5b09a66c4ea86c4fc6d89e3cf14dbaffcc5f0807eda3e6b09b4863949d26e9f9a13dd8a0d06c48544ab99fc9356463218a8a540e458e314f0a468a47b820e3afb8a318635c76df71f5565b6b95d27d0f1fb2b1a7b84b0c1ce61fc4b6100e30f8c27fdab4f496c49a60ccf4ef7a010f1df97fba2114f8c975ccbdd763b11a652402ec9feed9052ebb81011109840095adb5d66eb1a4b5f63beeda8f5599950235b3df635f77f693c2d862112b056a56df492b056ad662118f228827b4590e605bf0c4d84da4e1d2441aa67c3a559eb247a818ed1a303024b9e5d3ab327d9797d183eef5d4915d4913dca462c666ff0a6815e9882ae588f6e16d1a88be07f5f5a2944ee170e1c16119475354a8e10438a4b11203630923132851c314177f1da9c2e8d36a45aa326f43065621d31644a7a261349efe94e9084ee05e099d714fdfa332910aa39f7493fce7465768ca94caa95037997a51a6df945257caf8a822b58f9abdca4ba7426174139cd20674e5113aeb9e732a3e447124dd25255b9dca87ce8a94e9d3f72a1f6a359976a08315241a96536ee83b910f15191df950db5650caf41dc9a5f850db8a927c880a7d57aa55c60aa32f8c2735aaa26f5bc14d0e406edb0ab74ca71aa82ac9e86e9cca4dfa37a4c68e42e0cd1fc109dd2ba1b3aee489f5c0339a635199d229eeab8c2b7980cc8454989a9146df8be8d329fab4aab6236553026553c226b7173334e400d95260a242256ac6d771d8ddb9187772db5010a2cc3823b70d851bc6185fb96d28b09063b86c73e460923a2a069a93656c27688d7b5ed8f61af0da216a6ba5f62a81ed43eeeeee645fdc795fe8a4edb8af72176cd23378576345c2d16a859b1a59b96d49c2fcdc36645c986ae38451026cb53635174a8c9bc0e3cf8f21c68ec71799dbcb16a8af9901fb00a3996d668d6d44a6b4aacafa461fd3f174e51a269f3db90ee5f327d7372ee48a823751b9da6843e46a4b52640e7552d9ddd21e19887f1933a56187390b299e6891c4068b2451342086174f554c4f5ebc30bb958c132db78f5bd6b331c8dd3126d7ff9acc80027a2ba3855c1fe323224ee0868b1d9c78628410324a90851634b450450fd8890d2e80351a8dc664c6e16cbf0bc968caf5b93e3305942dacb0610c1acac836986008291b7cd882a6c928d36645c948ca35d7b71128038a17407c9972fb6101495095a0cc1421a69c288641cd16aeaf3676a6f91cf38742b65fdd4d17b93e46d351341a4dc98c3a4921851249e453871847538891450a8e18238631b2c8fea69b1fb27b6ccd78da102a9faeb367091d54e4f382366cb2bff5c760fc10c69230ce64f73284972a1eb2182964bf7454a2cd120e4d3838f9f8add6aeb5bbfc94dca40f52a40acb54e9636a20faee0fc4bfa52abbb8c7f1f5fa96eedff2080966e43572935e9e33a3d3ffb4f8507f4bed23cc144cc1f8f4bf5a958d60031351535f38f962cd8cfed754650198620b97324e9005d29619fd6fe963623539d7f573e4087e4678e678baa7b9e338eee76dd97fba7ce8a4f487d33257df9e383c4790c98e3cb9b761ae824b5775e12ab3b3ea8af578d3a2f1a72538e6766b9dddc79f174293101fe219729f8b26dc24df07bfafed8f63b61e59a545a4dcd1c3d8b3fab1cf97487d4ac7d08a7c45b6fe9918430faa8cd28a2aec3e258570d0b4d2627cf0f35d91ad2fc45f187eb65a883faa29fa85f80bc3efa8091a545442fcdda1aee9fbbe4f013cdfc772f814e993c6b39f3c9040487ee00199f133a5dda745f749b86fc27d16391661fd581ee131c18cf54d4fe0c38d366b7d159c2fe243187cd0895a1b252e8cf23e70f37edfdbd062fc4209b8d9195c1115fdec4af8668c1c96555625091576bf5c1a4900cb126e06c172049ecf2b4170f3be073ef4fdfd76aebb25096ede2f7d18cf6e1252bbdf2d3ea07eab551e994184ad365b3599db14938f950a5a17374babe822c95bdef3e0fb1ec69eacc598708416b9ec3e35f2a1a3fb14894a517299cfeee3cff3e0be04ae9729a9ca799ee7815d48c5db22c155992bc6b3a7703790f725100c1e609ff5547c40fdd553b1c8f8acf248c865363e158bb47e551e3100124ad4662dd65bdad5d6d5d07d0cbe20df90f7b7f448db33d6f9b4a23e699850a325e3c8cd8414959640bd185c326ef0e187a508ded312048ef52318c9de53ce62fc9614813e777a24a541e70832fda641e7092574039d48be32e349694f4909b80982579e61f6bc777d83892225839142858ba21c80dc5eb680caa0b56210d75b71c77b4b7fbcde7b8efea0f19ef75efbe8ecfd0894c88d1bcff3801b650f498d2a8c88566137dee7af14b1f13ddfd3f337be48cfdf288f5c098bf4bc4f790497a68d9ef504df6206f6afd5a0f37d558df5297d5c5ed2fd3beec6bc37d0a356b37aee5d66f0b8d24b2fbdf4d27b711973f37e4f8fdbf64440a655bc68e90a5dd8760003d86eb67badd6564abd9d24e2663fd7dd3f5de83f9ce78920d3ef0d645a5e1fea9218829f773bced27a5e7753696425aa45954935eac87a5491a8e022b27749c5d4ae2e791960ff9c43b45b7692fb6f13fbc56592fb2f0b3d64a76ed26daa321cdf7f6b55f6df7f99ae96bb7495aaacfcc6f9266a7dff3df2a19defbf46ed83f3a1f3fdf786fe61bfffe270ab548981d485919aaeb2c2866999adba4334cc22d1b2bb5461b70b97dc6fb7f4d0adb9bdb58ff1dbf59df37d9bb2f7168039fa87f74483c4ee076c4addad158354f1f1b9f7e99dc1e954f1796c8592b811a3b605e95504259f49e3e27cbe95877715e231c4919341b20a8ebfa490540309b911aa129a1262e3a6433ddd3eb20a91cf2bc1b3f2ad5016d95f484d07398ed7cf2b89cd6c7c4985531831d97f6c944f3e508c27505265aa30fa5f2b50120e30230e4e491295af04cf888894fccc8257129b55f0394c2be6920984673299619853301a2c0590568a435bb0222029562a76b3808c45d104f0af808c4dd13bfc7390b1302df4e4260e323655615e96b15beff0f7915a99564c20cc25cfb4623299619853b0146034d064aa26d30d6f32b54ca6ae3499604540526c0924a52a8d15b6e29470702a4e58c956aede83386a38bae068fa59e187f663f4e384a7068dd70cf107c954faba1d1c5d70d47034fdacf043fb71c2438c5ad01613cbeff0ba61147134fd20994a9fa994e372550fac3939e0f79ece94ce173a553b43ec2cedd476baf4fc1964fe6bdc69e28112bbdbd1f942674aa76a67889d2e3bb51e9d2a1e9daa1a3a553474aa5e3a555074aa769a78a0441ea86ea7dbe9c09807763b36490c62df07cb4867dcb82249732559d90679c5fe475621419c6fe93ce940e994f956379e343c513a6674d2780e7aade3e823a5c3063b392c7673d369a44f4eb706d279a23f84c27450191d282128b2fff794dd88b6baf1a4d149a363c65bddc0d5adae6eacd56d755bdda068a0301de46fd96036f902418de73863868e8e18a4fbd6ce03716aed2a8364959fffc82a39de23abf8904457765e0906bffeb4a45a59b4a6707ec051c261c229a24dfa94067dd11954a41fa514a79629d571a241f4a947cba71ce4cac961fe76d53565f1a525e543425eda7421a3aad654950935c1f941a80847a9ca8492e014e10687c987788851cbfe34ca33289fada9576bea77b8617ce59fa728333a4ef447ec4c9aecef3965779542b406f2e79ef2b9a328fb1314b130b458d5141ba91854ccc9cd9d32766b20a031b823ab94707c19777c7e47d4c066ee2b29e68facf2f3205925c74f0e1f1d333488d272fc58fb5d4eebd640e7ea76cbe70ea398151de48f83dc51b48356615554646c2a261533138b6aa0d853cc098becaf6386fe88858182ea98b9992b6337a031e3b9bab5a27cc87e45e28932caabdb4e18b6849a2acc2d1b364b5592aa9ab0f03492e408923f92422e52a8a8814821286d94855868a1244d94bda90a125bb263312afa7cc66e4f15e6ef43c66e526c1a28a64507c5bc2a723098932306a942d6108354212b7949f25b960dfde141d1a0291ff2a2dcfca2873c2cda9c61d9644faac28668d957a5615e655f5285f9b7e4e6edd2431f1041ffe768ab3e26ef89fe587db101963e52e50ce319a3d88714da21859410aae990424c50f48710121de46121c425bbd016a12ed9a178e4903ca4a4aa4c2849c3aa348faa9c54653cba682078b0c94b3ec4438dd052d00e374069728e422c4819e51b53ec1673fa427fc4a2e820ffd8140de4df2a4fcf63294493324a3590af48d2878dc3fc4117c5f1657cd9087d7c722dc9d88d8c4191b1a80af37f32265561fe2e3183a08ccb9800c0b8dde8216ff864305792136f84dd3e626257fa48e5e0c96005a18fa5d16695ac913fb28acf833ea30534f24756b9f1de8dd2c7c7067761a18f8f8f0dce46e933e523d5e363c4e9706510c81300ce41a14f97bb504767c6e56ef777b47f3b6ec60c971884278a27ca5ecb13d53e3a1765cbdd9c1c1c1c9c968f54101f36629095007218cfd84d2afbc7a27ce85cddb2df9c624f31a8d5ad7d74263bc70f8e92fc1b3e36843aeee2d8bae3b47b563e64cf86683c3e0128362a07a735b2a81394192ae5fa76b5ebcf4e8b06387b94c95ab14b560b534d24ed17379d5c5afcedad8a917b17e9533e35556d8da29a5dd78ca7b5381c5daf9eff71c1da2aa219abfd5a6ad0b99fa72b6b0b1db1a93227127bb97badbdd7dace5aefaeb5d792817241148ca7799f32c936835607ed5c9ff5f35c97f1fc317b70b4f39780fee820954916339efd44f6b794d540eeb2e5cb478af1344f16fdae696c5065d8a0be5063838abad9a06a4b36282a36a8231b14139b183736315dd8c444dd6c62bcd8c4d46c62b4d8c450b1899132e53a7800e1c0031c87b275e8c43def2e648a57b5085b1552fac7feeb1cbbcc0f4434d28534dada76f5034c96daac923d7b28501f0d63a81e680a97bd5caefe29509e1865620de4c5f823eb7961794109c39003c1372d8761d8252a2a46a1cc7c52a6580f204238f80004e7482e44a2566d513a8a2a57261a25c585fe410824b8ec67f54df0219beb1f691f35d7f700cb90eb836118bee55e61e86f668664d63f72e1736fb9efc4205c183235ac7e58e3e266fd4fcb785226fbac2db8f03bbc61f885319ef44d2ea234a22846a6f0c3d05a1e62ad2bd4b0fb33c8827c23d328cd53d23eb8d020a623822cb8b1c37979621faa1865e24ae840f7e60d6672848106128370e5072518191b4dae0f020daa0f823c436af6d7a066a74ada0708c64c7ff8572db10a03bf3e5da17ddcacbc7ef249693d8eb205a184fb9d93e7882604378f68a09aa55c8c8c991ad14054096ae606d5e4942bfd42a57cd644e57a1249d1b62ba7cdc0410037ea4d3230c9b00435556d3fd99225bb4277f70e3fb9826de3dafd44078ee338ef7b928431c61ff8a4c81643952d8629db915191ed8828b7cd0995cd891636276a6c4ea4b039e162738283cd09131b0c60d860a8c20683171b0c5b6c3060b1c130c506c3910d8624b6265ed89a98b13571b23571c2d6a4085b931a6c4d54b019a9b1197dd1097170707074768c7a303aa2f1a2b1c4c3d85e584323d4d1d1d1a15143c7a946f87abd5e35786c2f2cf184356a04a339a8a4adb67535e810d50800000000631500002010080644629148240f0465970f14000d6e8c44745a34144943510ec33008829031c618638801c018020cd10cb10026e9b0142562a09673598925c2be22bb83507ec09ec5ab251b890c561f546ca4bea3641ba0293c8435e148cb5ebbef840645a7cbae38894a7af7b7151bde49ffff075b0538f9069bd9deaaf1680c3e5042162d50cb2d10b46ff3d23d8332152c1cf16e626d60dda261715281dd4def67d951a43470289f2cad319a6f980edd4e2fd1b6b70078da86a08172465f44ecd9fa42188eaea392343ee9401a8088a933b8598d3e23ba96cfd94a9fc762a4c81d3ac5edd22cac1d15b49c75f02d79874b6f2b0a3f612b5fc7cf898dcce0566be288fbb3e9b44c8e480f438018ce52fd9cb9c4fca1575180eec511912b226a9a3fa8f5c47ce3665a458c881414a9a935f206265a20fc23e007f7feb5935b1406cc10cde1e1723387292e4901846f8f8c8226e2e61ba7f0aa29342d29459aeb743b6f05932ab2a7d3db470f690b1d8b93242e22a2bd5687c4d7236046113a3ec224a0eafb1ac9fab2c52c3fc176d77667a1d58c38f420308da42444998b8b083a5828840b611f229f8b53d80101e109422b8996572ce167200f63fcf91cd91ff237442bebc9ea9667dbd3195e259a46f1328aba10a0c4a02e2f97c43d212c965a4c1c1de7a20a15d85281476c18764bf9300c5206febb845284957adee06ea9e64db2f08962b7cfb0fa47b27044837ea4189cf4399c9d007392a63741ba845361d39bcd43b9ac10fe3171a98be822b71e422c2b2d62137bf2c6a7ee8b1f61d1f7e60e6ade1feab4cf8b3d717778ec35d649a94b2e0553db8117795102df50253df2b99f66d7c9ed91d8cf310d7bcdba7b472d3b3ff94a05f1823faaee89503682dd779e5e5b7b3b46e43269a23bdf73b6a1c2aca6e9842764facea39e6eb46b0eda8fcbd65192fe23728fa185e2685947513b8db13a8e0e322cc61d4fbfc27e4194c86bdfbb22d2a681562e3250d8d5d948844d9c06e2e4d6c997d69acc81ed0ac687e2a785a8561b2d990678d9dbf30a8948e50f890fef1a4c458858037a73ec8b8259ebbdf5bdb78b6d9b7edfeb3a1f70c89fbedf8907ee0427068c015feea785a6f0fd63e28989e7de239f6d33a74697ea4d770ee9ed0997084dd7151d776d40979e6707c370a66c00bda981a8525ce83d3e7c7f893b8bab72d6b8f6660395bb2206b3ff5263408bc17f17dcbd0aa69d12a6f3edbd081efcb777c2ec7b21f41c55efc79b7de9a17d58947dcf7e6f0f7d9a7d732726909a417685dc7c4294690a427f8767cf7d6384f044a2bfcb33905d6f1ad523efdc0b3f289c290aab88dcbc26436112074ef423871d21260c7a9aca7415a9fd7ef9e812aa7a37d3f5edcde41a4c6d4e0158cb0c5be697ce0f05fffc380d4c52f336509d18e3c9dae452945e65ea397d6b2bed4a644785d97f5d62209f1fb139d289301590d30fe21f57d9ad0c98205575ca807ea25f3113bfaf5e2ff98d5e495755e329a58519e517e3efacfbc24a96b7be00ec65081b5f776d5df2da6a043c29afe4952118551f8ae2aa91ed472f23034ac962e99490b81a8802518d20273f839931225dcdd2f2888fa8c31fca1411dc45113813655c9d4cf062248b1e838a338164e73ab14cfafc52362b8eac6e8bb6231fe42b778a22965b6c182204b31c327fcc855017de1b1c5eeaa95ec872a57cef3a9800040c7d32d122aee87d1e66b3c01af67c2376be983449e3eb31d2774bde6f5d19259dc50870bfb3ed926621fac20b519ca8e948e8c952b70e7a2512acc3d6f57cf820ed67231d95d52fc011306882d511d4f7cc054a1b34f2418f9800bace9f85533b483c9b3f0231a025b0e5baa78942a16b207407835e20e80081fe00e83bf851808f271903465f13439efacbc66e9f5db267aa32609db1865385fb9d1e31dc7dee42f202add786e2b15e7447efe52b48d65ec05e15111694f75810527a89d1c9880d1523a384a7f4073fec67cab1b80edbe29430889a8703e871184ca643d8e387a23234e708b9f5972874442ac31b8ec7f90814a3ec38977fa6b168a6b06bece2f72844c2e679a0fad4243917ea70e955bcae3b9579aac3efc76126e48ea5c599954646a4b2cfb74971d8c979dcaba3ca73144332a241232d5408db5c143df91694930917d53b9661ee3c63c5a7e3ca7e82238c398381d31208a0d1fe38fa8f871552d57bc817e28350e67f01a5c2dcb179089c2691b75812a5f8ebad9131fb1774187f668ea9910260c5ff35d23bd268773fc47fe6023a9d28351ac61a39bf587c1c91cd41892e525567401238705dc5478703cd91fb7a98b265437a33d2c3b97df7e216991215aa994e2034fead346e3189f8809526dde47adc3eb24ef2c7d91de523585a8e41142c117f8f90ed1ac0b55825a7697c60013a039d5de4f4c132638cb2f00f167d9f113bed60122856f31113a86208cc35069bf8774fba5333a162ed469e7edb6d526904380f2c59d1cf000fcc32003bae89a8a7389cdf990e550c541eaa709e3f0f5b07ff9ffc9a40f1c5bb79d52eb280c13fb8aa4c84a342277f26e328e45e1a1044cb1072e72bb29b70fd619436c4378713bd8673552dab67f64017f82c358a95ca48b9bd6e0dd80cd1a4392ef2f619fb8bba78d55aa667428511fe9b1487e15a051796209ada2d072e927ecd60957cec5053bda7720b632daf33dd058ef92af12d5268d65eef55e30063d99e3d27700e44535bace30caf2ae511b3267d28200c26e9a2a5ac6d0fa7e091c4acd00b1a1a4145ab90bdcd5d560c6be900b827a4790368ebf00d10b392b475f4e1e615c3e662413d7c0ef2d91e154778786fc3ef3c96992f1322c420dcf4da058c969c24deea4a9f451e08ae6ccb4c5a1e90229baa141a960f3cd3775c5e9baac00ccf752b11b1814f5999bca6bc17ec7e2fa73f906c29d0a072f8b61b2031f3e5395da8660cb000d340e91e267c45e47903276e6eb8283b3edf32c9e9efa086445fba9ba9401a1804aa2385681e451a675dfa5d886b36e70faf9be7f80a3516df68675f32a2470c4f6a50021394e43e3322111bae782fdd9e9a4c3b4b03ed928f386d30d7622af14c0f7eb1879b16714e5df75c51b4ae96edba1c7642ce4559519276221b33ada8c2111be5ad8dbd5d248c7e4e6025d35c4a216a7b53ca6305e2e96e37aa910f704fa443a33a1b4b909145531347ef978f0115f5f8da32a0abbe2e83fbe1b4901bb6052a1c29734fc2c682f1d69941d85c6b4133dc18982e6535162425b0144ebb99511aa3e845469f644ef51f1f442d167d231ece1604084c9e4e4c6a49f177a11502893e4141d1cca1795849524a8cfffb834e8d3daa3bceb5d6173096acda008ba7abbb390a8a449d6687d00588a36eec27fcba893d36f6332c97611e55724ca0247fa1cf509d62d8571d85e8e9e0c90c88176d144ea5b152e08c5923911dd208039c7ce780ed37ea90847dce4ab022604e107fd311ae2f0246174690f1c2453d11c05a4a02b3bd1c39ba23357e41c1ae0037e54649708a9ec33fd9b11655ce6920aad8b8ab87ea12020260f2125ad728146cd749057e8ac5a564549e7580ab09e9aa34f92c686af3f621f311cc741493429e4c56c2566659e58fb327a78a72723961c31da27b0d81c617b7b5b72a1a800fd539ab2484e69e02856dbe236ac22568428c3800a1aadd2e9fc23404105c0a1b2165d4ef3549a6886244b2a2938d28686661a440a074e49ae7385597a5da4622c1cd32b41a0ccdf713f739216f9e4f4200c135b4c7f85d1e43931a850c298aeb4c6691a652dafadd40db73225e567c3bf33f47c7c21085a7b854021260d96431e709bc33c23c4bdb3f8b5de66374756a97fd437064b27fb47f487554059468e2c5dc14d0791d0888d8d78431651664005399e292ecf0515d31bf58f4b9e4600a222fc66fb7f1361692a1461c82bfa6858c7e27e414cf3f837bb75c1ae067541da494571a4aa91d8b89937a705e17f20b0cdf2270b558d407cf1d9849f455e1b6578ddbab45b0bf14df561d961e77593012cf78fde579bcfa29a60674345d12c204cc70f11539c9019aaea6a3df561e7a752f83b1d3c480a00883a8d1bf06beef371bb8b980e17656cb2412849187107fb9c41ef0e3e1b230b4a4f31a296d8fce1e8a318282e59752f17c3cf1a7af6923b1791188a17ab2ce1e0cbbcd451e049b331282c20f0ce630c9fb8eeafeff009c85c9db4d0c6d03e82c97c7f4b7035168cee1d9173421806267368afd1c09b027db48e718a77dfb80ee0b37447835b109d927b8274421d1ec9c2f916671e9ce89621450bfa4740198242d4b16a5354492daca03590c981e01b8d19f8b121f6808f279830abf26947533068702c0cc0136d86a3630fadb23dc1f38e3391df4f789771875d8e9fa8420c95787c373082178158184f70a46b58802e08081b26288e2e388b15f37d9e8286c5c5c96c4435cc660988a8c8b1058a01a50578c56ffce1c141f70156b9eada046652c8da9fe8ec71dbd16efb02e36f4f268b5c2cce4722cbf72e3efa083c2d2df988cd0a112f5849495c45907e6987bc504bcab0efcd78d0edfd1975b69a78a5e9d2ddb9129335895468b601eae33b29f07143dc536a1ed59f70eb7142e6067d33c78fea957bbcde5766b1214d48cbe0a6893d5f37c15736bee6c44c399c6fc0a98472494c37ddbf99a56456be8d698a579b0d452999e77b986016124134d0301ccdb141bccc534372ac4ccf03d25e1fc6d1a7c2b45f25c6c180d50ae4f8e7300cec6937e4181166130f4861fe9b174c1c4a810f5d6203615f9f5efa184f767dd7cbe7d2aaf72b6f5c9f99be01241ec3dc87d786fb55cb6d28dfdc17713fe3bb748b4e26956b5efae9c918130de1938b7b739404f325ee6bdbba0bced702102a4bedcbd9960242061a02adb5611a532bb052dd0f8e0d247f91e4d380900887b6b8c8a4493646388e037756714cad5f5ea818950606beb2988f5cbc1fa0c324028e6bb628aebd9385cb032b9538298443b0f556ad3d5515d4abbeb39ee8caf21f0d5af7ba3ff346f09ef91bd96dc765745ce8742247872818cdf1304d98ceac3a8ad5372fa09680acfb23cccd5f0a05655040b74cee4761129b881b9e5ea92820b229e781b1ab21fd63dd84932411cba209c51d52dcc21c7f36bd5c837a1bb584397b7e421213b018a4746a5e4f678e0d712134fd6ce6d91571f4e42433a77d963f7fe0c12b13bb1313cc7367cd3bd2e907342e127df7c4158c0f11f218e52b04f3b3ce5b84320fddd2708067dd6b6b713085cc0f7c0bd0509b9cc7a6077ddc1e54533d220bd9e74e48866b926ff03475d82760eaab2673bb64b3ce111a78b9b745c065157394b50b326e70082f359960d7cdbcdaaf8c2cc5b9e6857cc07ddd995b8b582cbc7c10589a7450f001759bb271e8e900c4469ae9c0df8c59944d73a4f0b8636c7da065a9c29164e50ebf5e648def053530fcc3a01ecf67e7c734b97052c9ed99a7151fb699a327bbbc357f769c3589d5cb5644adb9dbae04b063ec584b01e735af7d50b09db8a36bc580e8fcc605b5ba9fcfd5f7627df7a8f075cb4494fade86cae1916dfe150d4ad4b31a428d54f30db274bdac03da946443b24c8fa56997a4e685c31a27504b9909df2349ee08e9ec9c3c1a8424eff320e2a80590ad3bb1be47371c099b863e202f90daebfbd3032997b61bed20630e2a3b81c9cd9290e7038acea0ef04117e9ece28413a2c3d112f1e6cfbdcb1ff8d492a61871018ed717540a604197a5379990962badad97c47dd308ad5278352f2c55d49349ae042f84a851c7ae72bee4e645bfe34af362066b87ba899732969dfc886dce0859719724cd2408642e946100d59bc6eeb88a2f337abb511e7de6b63b9473e9dc233204b745ce1a19a564fde2cc02917f7d6528eedf5bd4881d26f1646c8b62eb47ecb2dfaebc465e710a4d58a137a154c5845198481992604a4cf816c9a80f84b6d8458437bdf4f02b275b1cc145fc43a9d5313662b35abf7e32d94da4ada9750c45c563d685adeefa8827a75e3e1315b8c7199ed406a2b4baec3d5663ac6ec01b3a283d4094ceb31365e78ab3e0299dd96897337a47e15b9d634154f960d7e9fe819ae904038fff5ebcf5e846e4d5a467ba4abef87d93ed335a7d0e2d6c085c2ea32670bd3272848c3cf86406d04d71415433760e381878007c0db63c1c6f57e645928ca3ee1b0537a2a3276f078f75739f64be7daa63a1062aa0c7d6c11d3861fe02d85f8713dfd52fbe24999ee22ef93594ab3f627bdf907efcb6c041f7e2daf6c3b1dfb7f10de8d76f1b38703fae7d3f90b11bddb7f9064e7f227e5be0b05baa99cffb0ce9c7df051e742f6eb63f1cfb7d8def40e937ead3041286ebb6444474b64b3c18bb7dbdef907e7c5a2041726d0c17db134acc6732f6715bdb51292504db87b7f5d949485ed7c0e0659a69e719826dbed9d4134947b965416b893d488467538c6e39657a68381644a42d6688dc15b62956db3fc716d1d5c26b4b438851698689ebd74697b5729c5c60645eff9eb94f170e873926b380ac00066c134306958308b8a74f1bb5cfb8415566f925fa890474176f9948cceac088054be023bd06d8e4a3b45bcecbe455d2a90b8c6ba9ae1094742dc44c0b82f3196121bee6f685cd5f10dbf825f87789d56885d497a3e725064c20f633a0802ae52588b149cf6362e23a08d13becdcdf1f4b3c02ecc9d397f862e8d178580f62daf1f3a1c60c6abfd7759cd4bc6123e1f865e82941156b041e3544d99f1020451dd6cbb718f45be38d844311f5b6b55d3b5a627f242185f39a68662387b36910341d75d98dc978bafdf92dda478defdda5df50752e0a04952c572494559881a528f1fc50905ea41050a1a3fa44aec288d71772f87a974d5bc5bff58abb138bf2d16562e95db110d99e974001010c968b0d0a977470b9b68a666f0440e412d407b28c8cbec06815625c0b1d5decc45503aa5238cd17b47aead0b2a42e257a298c633c5353b022c5f10189bf60c27a28a47f0ae92bc0953d1857beb2685c6ac6457d88284dbc1e91b822ea43ddb5d5a7617b5c10fba7077d8deb43980eae5b8aea92d8066d45a78d8536d8e40db6c52582752956551febb149be69584377cad36a0a4cfdb11eb99810a21f2164c9aeee2026200a4664608aed7957d595dc2703932611143faaefe15a98931f97b8c8653fed5355559927bf62ba69df5ce2545b535ba92974e3811d4bb425b6a6b444c12b915bcb96ee7e8eadf9f3632dc9c5f3a3cc39196d8f44078f28e3caddacda477827fc3b5a05ed7ab26f310e37f6d96482d9a75080bfcde3825138b3ba4444b61f64a94cdeaa0f3a41e939be512d3a8724b4d0175a53e77e0d624d0914029b6fa0bd6988a867fa906b0a943b3501d240c66baad2550ff553190b23f78f4db429942cd6aa8cd2fd5ab8e9b37ee2d168e89b1801ae57a13c74e0c9573818c6a13a18512d49a1ce72f4d2682ab76d42421ffcbaa1bd31d14764ba81e628823d899e364523c42a1dddf7ac92ae8ce44d67f61ae1d80d857d0dc70589b44f7c6f18cbbc721c1e955ac0a49016827574f69c14249bf384fa9aaa0efc939c2f5f20b621bfa282cb28b67e7c4fadd1ab7bb2169d2d3af94ceaf0699ce6d4365acf4ac58c1638fa14e5f0d4e37c26ab3986194ed37282190e197df657a3d067cb64c9122847354dbc8922b2334f6fd14504bdcc2cdf84247a4facd7d1178855c3fd0d68db791ebbb61a11304f52f66589e6dbc4f966c8596381b3ad3fbde48a98e97fcfbbef5b18b7c60950e95616a16719ff9159eddbfc0a8a722cc98f6991c5eed6e7742ce48d228cb5629a444f1260df5dfaabfd873ebffe9440f36859af1e03450b7223395ad08d1cbdc1340bb51ddb3368caaae21e8af701475b63beec82b2d34613741a0649f6c2dd356b59348e89a11898bc041a26dbed789a0febe3a86a87696f015e5a9c31e9fe4bf91a98abb41cf2c66d5afed75c040f5e4f87c3502b6cd1b7cca8d5877099de012f4c9f796dd3a6c0fe60b9406d2f1ed4f5840affb23ce0e362a600bc271a8837ee859b71acaa0f0a3a3d32e8c8e509c173b452f5b022a65a5cf25404811e0cbe65c5815152cbfd62f22d9c49fd76bd066bac01d1388a98aea862bd6f25597ab3c0997e6483e3aa5bf10afc32795ca515ee95d7e197b3dbca645212012d27ce8bbdeddaaf7502b904b22f7c5bac361f056aeb490b3e4f883a1ba8dcb61f0a3aabfac93e098487675e7287105f48a018f571dc95c75e3e4538655b717dda8abae7b261932a09096f6727ed59586550363d1276752a081de1cdd9d246f3862b391019eb7704e6d92d58ed5dc66c28ddebe9402d114537ad262596b2fbf7d8a102ef2f97335f7102c94581be6f4d5bc0bbab567579151eebe31e0ea9bbaa67a0c1d87b2ec48402467bc0209420371f1633906858fc53e37a4233bc86469a46e1b239ba21e41a16dc14232fd6ef20d9b0c1e1e841a622035b672e25c594e1c3ba20f9648e26a9b6ac117d6db49bf720598d6d30acf298bcb412d61d7359112869a514c7bff40752ee002ab5af5a138302e76eb625ea52a206bf7a569d486a16d32cbee5cd14e88f4301166df4a1e6efcb7b284e9558bb08d13f441edd28dbd5e0437c682fa9d8017ae45410a94f21140f688af8784bd8786f3d351686af5cf370efae6ed25f1e813eadf51ff22e946e9177e2e47763af710d1e91de9a6003708459921d49ca432bece79cf978bc9adf44347291138bca643c154d614a653e52784feef770a18e868c249a10707cd6182888e4bed0caa46a743ae94dd40949b8038a0253a2f6009a5f2d910711e67f0a26386c33394ec8055d667ac2d8e46576e45c23107e9516778a88f04380c431dcf7f1e621b25270da572044c421d4bfd709040c10b132f7e232bb7d95ead7fde8c5669235655d8fe0a4fc024c194ab71f73fae1476f7d915a61a46848301df4988d1da0a3b52c7ef67adec8469a64138048c263276f91991193b1b62dcd374e18d04f2107629974e7400579fb5114ff6747367450f885b94028ffa815adf9feb38c452e75dc507e87294de03915071a3f93c59a63e47eac945feef259e79e1c5073785c457445891750452ce70ae58c5084ca5244383f6ce2a23f49dbe7b23f996e9b8999a538b81b6d2ea9e5a5c10c647c98bdc0c5b6a3473089c9002a83504017fba47ef73af0f1f23b37e9be3483edf5a1b226e95189fc64af2c1f321ba6e48854c2e1b78d8ec054167c63f39a7b1028a1fe1a91dff27bbaefaf26adab8bfab0cd54fa0697eb72c8e468f77801441f6754f09d17e9216b793b60eb6e57a76a955f1ba5358ddd1285aa9ddfd5d6bbed8138895ca569f3bd3e97c95fe3565c70ef42b26cbe8394b8fd3bb83a17eec84090dacc333fe1a0eae4583020fdf4433929ade11a681257b31b56b12386d2b20e5192110fd5b7d44ec398d451220b1106d29015960f595510d95427563eecfe817cd40f397f308236acc1bd0ae212e4e6423a5de3c5ba1dbd8bcfdfcba4a9a46b44cf52a4821c10bd78f65c31bab7e0ce18a85d2e61751444747482131c8be4343d340712dc8ede8ac6300b541517cc035f5e571f18642fd7be1a42f52cf9ef33d40454b00b73d01df9c78f975a3efa6eaac840939c635ea893a7f38804fbe0fd73ca6083f3a872fda17b8824b0edcf75fd8c8a02990a2220b789ddf8e827f2c03d981fe4d336c72e38e4e874d5e71c53acb053def776cb15a8577f7a385310543cbf2e87bcbb857d0987e36337cf426556912c1f76abfb40d29c25e162f17a0b95e48acb25420b08590700c416eaf7ba2022c1c526329a7417d3e31761894f3e7610d999babb1de5bc20458ab71ee726fae7717ee52ca2daedbdc9dbee0ca61f6e2fae1f21549adda29bbe545e4b433e72ba75d4501185bd267ef0a1d7bce24ae66b0e99e481463e78fba30500efc2a97c8d2e2f238071264646566e53f1e0d4b8054db1e47384cb231ab4d475411b8abaa5f40f7a4489dc3393121a78d00971bb394991735d851baec980807a500c09ab39447f451ee643221fa6d2ecd08b70ce36d58007e71a57d68a783334bc49f430d797f770ab4f070006d4f7ec2ce6222e2c9881ad8e85028ea7e747bf31c52c562549ec720160e785a4ac7d15f707a5705541f402b065ba022bb0be3edfaf1d5dad33929d669e491b6816b0c84c49733a3f6fcc38e3802d41b50eb5173b054a54c0de689e1ce1b8ec0c58a252550117843806998b0a3b8b08ec9f8b4a72f3b46d0a6b0781ec1ddf9e7a13fda4b0715f697f606839f2cd3aa94ed9066c635e5fd439e51866e7c03cadce4d71382235c22b6ba8bf8a9f790a71a633227533007eb4d2ed0ead45b91182e6f278ae93039661117c05642a3cfcb86980c587dcf5fa1c4b81b597e5e8526bf699a01feaa3d27dedba2acf8f0fbf25f53d01ff88e65eaf351b6f5808ca480061b3074e7d2ddd04c946bc4994dd4d14f7dcfd6e9e3eca0a33c7a2289dc5eb0e3524a63a2226d66048089322daef72cc3b452b9a1173747fd4b4daa91761e17993e13d02987147d86342659f19d4da83bac855e0b49152accd493881d7249ce188c9e07e547c1b4e61670f6b53757912a79fcc2c34be047915381def33c755143836e18155f5bdca0cd0c9e7f376e9f8bccf9a44ead5c70686fe755d7b263a11d9d23420d0368826e633b37ae5ed848d5e9c369daf5074763e1a0dbafe87c029e7dd01e981b3d48e4c950a4f997089b7b2187d81b63b629cb1940d421c60e4e14ee6bee428d5e0d3815eacac7f6fccd66acf1c141bc04aa698e2288b27401dc89940c209a18aba0da8b8bab91f605df27ddc0a54a02e81cb3ce0e6f167286b3265ec2f2328935f187ac443e003fe907df10c4fd276ae58552d071c42fd25e4bcbef1ae7f89590d9ae8b8d1376de9fe6650d4ae09ef471688f4b93b9396b02f185aca2977d1fbb2a0245c6fbf2ab4deb3f0a2b87b2ec30b2604b2d26dbc9480de8f310066058c5fc95bed230fd763ccdc78e1261102b452340ecd7e8955ad9b774e58f4c3cce6b25efa278257b5787623fd95ac6ec041277f94a0835ef4dadde461b2a325e7443c105396bc1aea270ee2a39007018dc9bd559ba128213a211145375d029b2c473ef751aab5ac0d3d77c24c8686161d974a4aa08daa5b6374606fdeeadd349d2b633d84a1a5c38bfc322b4d1cc7e7171b4b4da3e16e9b25887ee2ca74489a0972564ad0703ed3df807292031342478b83ede446137f0423dbbb40bc5fa006a849d3e538eb8829de9cba609bf53eef130dfba3f7d47221155fb1f45f52036d8ca5a49c9c99b96bb2077ed4b0e9b7466f293fac8378db74bb4ce96aece5804168b1da60871092614a23c7671bd2700cbc498bda6a506f7b7cda47e771d3bf4590b2acab04b06b1d59bb0fdf42932b8fc7842b74060b2d72148b741cf2159a135126bfbba13421787d7983dfc5f7b15e09ce6fd0c8f5c20d762e6a66ac81ce729a20b7eac68d92297ca3f80f2ea580e9870db338dec71b7be71395aed3b34c83cb7190b9f83e472749af9011ce30cd78903454627bc902c3340517ab9e9dd96e46a35895b433fb956cc09549090d5906fae63d0a4772f93a737a47ca4beb4ccd7fe68773e4f12927d7f71161dcc06b8f51176e635ba0415963442e502a90849312737436ee83a027286763df42e82588fe82ae6d047eeeb221b7b38e9096b9280a92753f32253394b0167b49b6d0c5dae2a9bfbb06fafd1794dde026da054d000fed1a590d1192ddc78d022db9bdfa95b9a53a0076726b9f12291d8357ef646f72194c115dc06c7e108463a1d3e5c963f04ab2ba5a78642782a4690f47b374ffc5a24a1568253b44efc9cc6dec3f060a4e2ee7c61646f31e590b465b68dc770e80310ef1d069db5043c24e424e65c07684ed98fc461aae601a190e03d8e58114fa453853d3ded0c90bd924f05d6ce2de2c54b0651056c6b835efc529a6243773ebc5c13fc9a5c912bd75d435f842b0048da1b64063bb980e3bc0413161bc94de1d7bfe3ccdb5e860add1b91270cfed1530be023edaf87e07f932f9208cb042bef599e652cc7285174a4bce66e9502beb218d68c9790fd0cfa1c3d5d1881957a03958f4e8f3148053a220589c14ef88606b6b06b1b134a8c971e8139d0e25e0eb465d8bb93ae9635f908167a0e848dd266a3b954837db2d933d4b534e1fa265ef51b04e206abab33045e5b6c68af2a9cdfaa7de3a54a678d926504ec599d96f355016679558737259e6214808fa4276613ff7b96b7c602babe05fca3adb43a59b2728d7576631a1ff4be8d075bd1e91e020c290e4eb7030354bf6c0587093db9b382ecf65f0d1a745e8e1406a71a6c098a1ffd5d1a15fe7676385d926c108a0e220ee5f41681de11ed7d768398e088315182485c53c7b137321eed165adda66ecc5bd541e305b64569fdefd326ddc8f44352c93e7aa59bfa2ce937eff28f62c1ba7a57c4f6f2ef6f3679f6686f74f94fd031c3a45d20947dc36adb549957923905b9b4f69c18322da33df8ea69680c857f4ccfa5e40dc1960023192e10aa9c0af76675978feb6a301177b002adcedf9b9eec38649cabeeb3c1eb3f94786702e3473b7d3e53f9018c6c28ee23123fd5508f2f1331508b6c2ff27bbb8d4ed1acdf84fb3281cb0ed0507e44afa122baaafd0cf366ffe30a6d6e1d552ffdfa74bb5b4673a92a936d74e6d998e7b1a745fe52f694e5e06ca15a644f9569d010141f590843d42006de508293c963e8496a2573711163988b99c5777cd5e2702dde944116b9f8c7e6529dcbddabf18d20f1182f63415e762b51d86b1c3c23631f4ab313679de27ef832fca3540bf4cad528a4c1a6b2a55b08e97a6eaa146d73852ab52bab0098d870eba532d93e3985f178938df679e865b4b900473c60e020da458aec3050dfaa862f0c85f97f99b736dc832bfcfa15d066b7462853559c80e2596734455105ac050c1aadba476236825e212e70b13fd37cf60e2c33a843abe2403547749755dfd07eb1fbe4ba4daa9dfb4ecd261002101e9bb969c5cecc624f3afa409719bce3f098239b70c9ea0ca1f48bef43a0130b2aa53716f19d71f839e8bb502393b94619acbc8fc9345f8af6e2f1c83ebf881100af276037ba9fdc6d3b10f9ef54fb52f49c8f01e0f1d366e4bbd6388efbb175d4a22261286381f8d1390f54149ebe61120632712c7a8fdab819a983ff23b213ca5023d6790c39cebd9210e33b8600e86402fbbc406840276f9d72bf60eec93f006f80d10be4d9f9abb39534a0386f00e7f0920eae490f1f1489eb4b8460f4a6d20fae59a56c9d20177aa47ed653e23f316996c607dfa435c85dbc333e5af6aecd0749d5a6ec05ae4b18c9c18d4297b78d1b8456d5441a3b2f53707c27d96a87ec0518a28414b706bbcc6e70fa6d39b87ab3dbef2770358323c8c1a65e08bec538259b34977d4e95051869123c30cfca66c3b4eea02543c2fbb94be051f29ef98362e4219ff51b929956bcc4757c4857d8ecf2e80bbca5ad860f027d297da02292d4f94b5eeab9dd41aa295df2f973658870cc124bf3dca44d9f0fe05b827ae47be417a055d1601cc7cafc1012c9c75ffb517791ee2dbfeedd3ce2158a0be01fd19588b4be17626b88ae1f52eb946e321ed05c1f345188c525f22f02f8d504498b63089d82b1c1c82441f5c8b83e37270e110eeba87b329ea328749bc70036dd08173dfb7788e5c1f51aee378c5a0c7a1c64b301eed9829e728376e72a27d174e4e28f29fdd8af8215a609a6d044f2d920d23f48194653a2a8a7e157466a677df7595ba81842f94ccd673c766195323b47586a28f1b847022079c440a0ff60719c449b7e1cf59121cce6b6097242999c1f2927fc316158e89219f8a60041039b463fd86081f3214df59b0701ce978631b63c662d872b8450ea9fc6e2b114eea58537e9d149d2bc943846a0bccda7cfd335d4c30785db78b5add5ed22f0140587d38211cd2199750747f602de503655dde2eb3a3f0856087d7bee0efd599afbd092abbb63fea08410ae1db964f3aba2fd4e31ecc1b2fbc9f0cce689eb6089f64c29d1f08c8f2bd321e7c651f002b0b314bf5253cd92012391bb64aa5c8c26e30be60493cb113a98218bb390292d5b0ca33754501ba8fee35acfa75af30e35a0338bf1c5e763a3075dd3cfb9c2b1baa201173988a962d55ff259d28633ce83f4b072816f698af1b8196a00fbb3998aa0bddc78d3886ad20336f79dd085e828004d1f75325635d0c134f72045af87d11a04cc14b49db00aacee9d79a31c8d39af6003f410c7be3a0c70aaba966b90c84af59dd2804ae06a21d6fa4a7a80860e3bc19fe7f43b018c24db1f2a98d7617476cb85a44e2bb0a8dd229f38284184eea046387f7c2a0158758e1e34151985a2b83fcf538df301d0cc3b1cae5f31c41f49949be027345de242cab1275ab363595866afdc188e733d64f21d428dc7f929e9d971c27445e82d3e51feda2045a47a4625513758bf7e59a362823b052692f580b59340252a974adeef3f8bd9bdf3f99c67251e9a74a0191cb7e26e9974c000eac002f093a29b019db4efc52fb27cd9e9719328ec14db81956e532df4d60e7d8a03faf74ae3e4441694ae3743c0d6eaa851cab3457a3fd094c7e8dbbf8c5bcf799e06da366a32aaa1b223511d295b67e745917311b83501635b9732d1b4ecdde8a58f54d6fba9f56db553ef28dd06d9619cef2953b04f3c51692ba8c8adaf9830ea1ce20ccc485ef9de2cebc86bf73b6830b28996e9d1e8f945d5ec35153c4edbe604d48a27a2b9f53eb98fcc8c132352cc10d9f62145b3b83ba3573c8886c093cf4d2f76a271eb88da54fd47ad7ec4567b3f46a660691b75b09e21dfbd0093b75a0f8448a106243d8e11188b8f6ff39ca6326ff9949766c5f95ca09046173eab86ea366f61280e77967be943e720141b119a94313948d198dcd7be153b8ef0a019800ca9db10d446db4e71257146769edea45f1cf8933ab38a6d1fb92e664684de86f5691a59d97dea8e5f7cac74a1e3fcc2a81593084c58523433ed5ee12a728ff05076fc1bcb83bf9f4b901c7c2cda11152f6784b8412aba6fc871801deea8830e10a95b8c1c93941b63ece193f52c6cac1d87fdd98897a55855081041fcbdc707834750f0e215e8b864298647db525210f5fdeb2b251aef8d7c351919ebc7f3ff5553516fb58ed1bc3a54bfca14a217c063e088d4fec09ae38bf32b56b9046ba1119f88125f3ca84a7c0d3f6b8f461e52d9f493bdc3a61e33207eb04b869cbe2e2b17188a2e03b16dc5bf063fa663bfd6ce2886b04637eb7ebb2a8219445f1f86b050a070a0e278d89bc932cafba6f03a43b0d855f29a1f086d6b74597b9d54bc733075a4bb3a0d2cc074a18dbc1ea61bede40d3cc9ec711e19caf292015110b356ceb815d5433326835505ade8d305ca18256a8acce33787e35670b7717060a478153083599e46ac1d00262ab43bfcc616d115c9b2f9a3c5e1646c618483cc27b7ddf1a22dd37d23a3fbcb34c698b145737143177f27cd323dc6ac2257290616db2d0a4d86e7f01b847062e4d981aca6d109a2952241979796f786ad714df7ed3c2caca36a5746539fa96d3fb853faea8f03394ddb54f8ae86dded635daaa85fff3fca1ac2c8e93df90cdce4de4d9a01f751478b98ea5424ed8e732818b0db21696b4a70486daff778b2331acd9d825ad68fa99c6f80b73896bd0658dc4fe2d1b9cb2be50c2f9028562b2f98a35a95859cdba7983c1662281e748bda0125ff64a6ebd28cf468dab8c705192eceeede3c850b73dc39036d24d2292fa958e1f495366f23b6d1e2a81b7b9603dec9b6639bdd62d86a80d189d2797700e18e6424b22a4cd2cd5e8cee5f2d97803234f3d3a2e3812e359ad2b804db0b443024a288a9c6b90b9edb6e3d2790cee55e23e7fb6f9d347d20d7180d0ef833f3860965f0481c63affce87def75fbdf7347cbd43e219031767ed05049b6b832e1c79720d34cad402f978d89c758c0bf6a06914fcbcac396815a951141cb378d78c787a4e9d7729bc804d020bc3c7188e0b8a13128b430d58b7379f1ab4a2d3346039860119da09907863d0dd6605ff494b5e687686bd5f846a9c17af4e777bc713de6ece016638c2dd219eb869ced119cb5f88ab7739bd9f625782e030f22566944cf026e2db87a0e5b4b03d772fb5012f510425510d3957cbacb67f56eca352f60a17737a3a4dd2f488cf4fd54c6e0ee6b3b78673727cb12605b3951fbb9741777dafd404f88048056cfbe1ef08b86faaa0e9f58bfdd5d2d8b54bf8fc8f8cd169429af2c56ce84ad7d76309df30ac7c327dd4a3af341e1aa4feeb5e384c5d27c0736d396568e9347a513bc37758055403347e9004046191db26baf161702c5b45e267bea6f8a9ad0fbcca2d4bd7d7847e6fef1fa041135e6dfcd28631cdc4ebc10b37b7a8c2423e5022be5f523a0061690538180c55f5e6a79dd4f64608869888427bde61248dd3600ccd8a9d8d8cee69e5dd0d1459432014dcc404b3f8d5a642e280298bbafedecc629df70cfed49dca34ee658680983544ad1e3f716270cecbee554ffc1c9246f04f40751ca5cfc822e5250e2c125afe58048437b16ce5cc3ce5d54e48a22717e158303a7d2402c088a0b8b983b2ef8db5e467c82e3af6620c022a04104bb7ac7369c7ca36c6a4924bf6812fbf379456e86ced9ad9f2c2005514f3e62860c6376abbfaedd0ce59d9878b1c8646e4e4287b8fd3329ce18e41cf2d3da7b7cc6ded100b12aa25487bc2a134e8b03659e9d84875781fa86cf697df516ef4c2d9343fe75b07745428d17554d3d62cb2aee36a28927bbd7b32418a65475f4da9d83e34ed78a617fb7d08ddfa25560a7db931eba826a79c2d04e1b864d11232b54eb32ff0916214933cc3fefe9b061f683caba26c4f4118ee48d040110fdf0da24ba213d2a4f83cce32964e612844768e84d853e8982086b4d50d755148db70c0b9e1e6b0147fd75160dc2806511fa76f996aec13d463956fc7225d8ea0aef10644ce85e76104c5c66065d08533eba97e4d0a91cc6b210846707c481f455de03605dd10cd556d09ca489f72530512bc337c9899140b0b3d6a7daa88f194c34997f5c7833551873ab5d9497e1ec3fdfbf9556c70ae6089ddf04b8a18ee491bb606acf89c010b76ccdcf7c37a48e2ec9a3ba7ab38a6bc3686de28ee2e4852a57b81c8bc375b28baddc3b80df211280b6338a6e5c4e31428c0ddeb9c381fc8408af86879fcf7904bd6f1f337c1e9d97288b1666e4c615fd924f3abe2160b85a0037c332181786b5e390d8997f9e1296d3c4367e72dcfe8f5994033a9f22daf23380de5d4980782b475f5fbb8ca51002707d35491688c0725d974376085ef15acc63a7305b448c93bf8dd5a15d873a6ad488260f36a23721794c40579344dee040b5b56707b9f79735a91fd8285f41ced9c01f3ba55adc8b1fcc754c2d8be1f1ac5b073d894032de612266b887ce2660dda7fde379cb6f2e0d5c4d17748cb98b3fe3089cfec76431822cfc87eacad30b1f373cc2d7733f97af34870d91646db0c9e6656c510fe1f8ddc71c4cba97d912c345c4ff355492f932681264e5a08495387c3e16c4b653d32f9a2d776474437d3a15be5e4605210f50fefe1db3b1e0cc8c5312f99b355b2b9e3e25e582200bbfff989caa7eb7211a7f269331dd2bcf89d8bdb1904f4e8a8ff57a7cbc44489bcac5fc4c49aad66862cd5238c82bf24ab36938c57bb6cc75d114924105228262c2e86fa9a2cf27d02da981643ad55f4af8416e5b2a96bce43cc8aa23ed0188da22425ff6206e1b3d476836d4c4ae31f8c99e145e3a914ba4c74ba9dc4f4ec8050355c952fbd1bda523b56338131e89853c7b87a45571eb7b99d268e259b5f966f086da58dba40de4ec9994ca8941576337fe7864cb7aadb9cba85a416a9b76016cc4261c7209abbe736284d96719fa60165bde8165da7aa2e75ce18ee05ab46dc16c3ecf27a38b56adf15bd3ec31212c5b426a8ef8439c4b2ca90f1975fb0a0aa39f92658dac437256108ba11e686a6b312a3ec5a4bf1069cae3b0c91d905a70773df1a561ab224221d224907aa73e9e704c23173993cd83455264746d8e9c80a5089329a523477d87546ae0f595d56c984f80bacc06fa406a2d8db788ea29bc560ee912e5596b5c8ac357f0d6c1c2101ea3c4d875bcb4f7261e773ea3272382720cb9d24d5d754dec1c6cd9c5477798b7987bd3a88e28c9c3af09109fbcb4cd5ad2d61f5e1a63c7289bc5df9254b05388f5fef5345b5baa72e59191f405760d49700914c35c28fe14c5b93f9944b6a8639cc9efc2ebfd3b554e30fc67e1384445ab1b7a7260e4fffb0bd4a31171612965ff8aa735894f7b6b1d02029765b7e30af64e9b018711dc8d94f37fcce38eceac462554f2cef5a47a9d042c016092d8dc5d783122dcc8b4f757e3c4f0b4c61ae2aa52e0051e1808939ec57d2597a35d40c987b26390b6cc306db8fce7de2881048978b165d81cf57596046b94485baffbe5ec4fece059f6380a25ccc663209ca0f7f18d700197f11fdd7a50ac2536f48b1447b284565c1a9250150d7a69409f96019154da8fa69c6cf1fcf86c61af62dd06ba9fb9a3953e5658692381eb0b7842871c5983906ab007974059cd01228a8a362bb661c6d3a8c1c2225118950a80d22b7815c0a13d38e2bb7aec62697a2186832d79568661ab815cfca8e034b33f8ea984b7acdb1c6063b540833181061b5592042318baf78242489be33d94f14e644e0a71559c1315e19494bc4a06ed1831228394699f484e390ff57d2ba37478a9db847b4b944c10676d468512ff5da35967e6112141f286c2dd48dec58a2b14dc9891d12b42c25f9a0e4a5729c3ca8ab1371acc3c31738a11fba623cdbac4a05c9ca41819d4a9438532a7e44465bf2483197cc618992b6c573c540a2b591f7c20e6e7018f5487803dd0299f1412b854eac41473588ecd193418fcfe9e0676a4d82bf5a01f24e8639c2d9c051ed8d5b5843aa5d710c07965fe28bc2cfbfe00c0c8b69afc9d503b1b7b5ebacdbe39618dba1b877e58cf80fa7fd228f51f8252288f33e13bdedfb7159410a2953c629b4866dc32d6b55e98311b6d72e495808080c0f665848ee2a713a73230a61d8f8c6dc0a47e1662afef9f03d02157d0fe816c84c4be687b4f5a7b13dc9b1069a81c0a2ab195f006d4cff18c5ae637d69be6f4d73f505b7e3af42ab2f62fe645bb6ea8b6429a137de693dd67ac62bdf3e122abd98cc7a2e2d298e33b63e3dda297bff671741b2ebda21c581160c82dd275bc787d52a5e5d13ef8a6cc1ca890dcedc80e16efe1510afb2a56db8328645c225a2a02eff295d3c6c5c996562d8bdbd664ce0eedca65133d04d053a287e750eb870ddc76fb7e375e339d635bc0a54f74fe17ef70b9bc78be5245951809817b468373da69b202a361c4588c14701add2b01df92eba1943d1bb1d3176a14c27f4429176043f85424648c64d665b615be4e40a47be7e8003e23d909a6b8675feeba66ee60ac4a00d18a0074e9a52d22e5ebf44511c8b04c2f3b667cc6eb21fb345f6604ef48059d45cd9cbd1b2f7abc003c84df93c3b33b44dd2415d9110378176df691b1d5f9c9d6b986f45c692967080036db765bb6ed49fd09f3abfaf61cf35344ecdd27aa55ac9e76e8394337b10e7e89c85e7226b6e40c8fababef4b34155bd1f633ac681f2867669f1f8108f2c8a85548b9d118f276a7925d67d6cc5ef4f5a1bc5a9affab80501bfa37e685f969c635baa3ec8cda0561fa056e433eeda59562d7dfb2f4a2449ecbc404e58b0e8a963cd30bfdcfe73dbe531f3358d6eb5953578e17f4e0d659b4d0052112b45ac239fbac7dd89ccba3ca32a879d8efb114f9d8d75a25694626ae6e51e5f57a1394a9f974b2be4e15d3691e6d81cac2fd20f6e2b899a0d28fa898fc8ea6330f94e3f3031cfe61985f0ad6e8d590e5d371fcfd6e368d0c9fae46ec0f4c097052df771c439a8a34f597d14aecdcec133c29071a31bd58cd324274c5c7c43729f9d86a0154ff6e8776167a5d456337277e702eff47ba05f8182c77153acfd01bd79eb4e693e38ca4692cbb635394986c38e3b7cd1ee54da969d0d2e7f4e13266876f6dcd27e784e8b7ae3f66bcd3ef8dcadb018044ea22df9ed8da6ea46d7e0ad6723632ab341126f519872f8ccaeb05c9b021d410edca9a91135b4db2e59f7c0cb02a4332b21e39eb58b338215c7bc6b008544d264279f28023969affe7b566b97fcdf6f1547b009006c0a11754246af11b14529f9e26a8421c0e3945baa083e2cb1837ce5533aa294bbc6158daa96ecbe778b26b0509d16aaf38ae031f64e992e10a8be70b87b46c552b7c32f2609d15e5b18ade902aafa4a053002404b27f260a99a9d605a58023ce4f1e89a67ac26d40afc6261e3f3490051965814b5649d8b511c870d3a2a027aeaa36de94493a835b021d1f9ce723a01b3cb8ed6098d889103a3701906a28a33356d2fd51c8e29e1cdddea0747cbc57f4bd57e4e2c0b329eb43fb61eeab56c1a749b2e4ca90ef9d3df7ca77be6ee9c9e106ae623ea050aec9452c78c2c5097ea5baf5d72e766404ce098ac5a74f2cc36773082a8469ec02b10710718158647100296f56af109b1348bcf7897b15124ad94a1f806f4261f445bce1162e1d189cddeee3038ec410d7d0e3a0e532dfbf4a66b76956c3addd1355cd7ec84be0b3c3f9308c53a01f3a4a825e3046fa9f1d821356d4ac4936b99baa4ef9f9151ca9cbd84ae03804bd2a2372eba9fa935c3f2876cd293db109ee0feedc77220eb540c101852dd39dd0bf89850d013844805bf5cd1be7993c5dc1a7222c576823a945257b97dc5921f7291d16325bd943af6e7602328d0af4dbfaea0a1822e6cf1b0a5fdd21265d336bb5563ce5436ea93729f1ca024dc0526b3cb900a145788c172b0cafcd5a13d3999dbc3da00e9620fdce51b8c449e79f84ad856f5ff24087b8c1a0a95ed691fdb80d25fef358c2de3114ab2a891b775651c2f55cee9716aca8dfab7874620507c2677ddb92659991ba1080ff61799831e50369d6e486ea40be11dd642120292679be30ce336591f4555257d612580e1ef7b354e2a53fb3ef51b7a29c369bba56661caec2fde9a32a09f08ec88b17807d2815d06d8273d4b51396bbdb7c60ca41561287b89eeaa223ba5aa225f7436c3f8b338a1a4c8fd914ec2e9127b4e6e8baf547fd7ac52b08e9619101bcc3d3596811af4c64319b4d7e522d851ca546ec641e0dca07368a60747884e893bdec377a02e98b02cc8e35a8f5ce92afd38125e8609eeb2a4cb169102bde0261f632d98f803dbff5694000c9faccd42f097e8f6ffb57f5cb0247da814ede2b35df8eb923a6456ac39cae7d2ba6f4dad57e06ee0e88ac1c4fa123ab751b8537b507070045176331bb1f1c719fba20a9562d9a773532c18f67d74fb628f2a6ff5a38f0496ba2e1b2d27c4496b9e28681c1a0e988bd2b82d29c59e93000e53998a8f069bd15714d166166f349efb8cafbb027c66123e3c4b1a068cb7f2869d10402dcc9990d9fe87bb7d98e579a3bda7b729644343f57475db791fc387a85ae5ab27f31d38298b76895bae1f4451873920addaea7f934df2c4dca9212684f9a06a2ff3b5b07c290c65848e7eb8dbae1795315f4808b30752ae240ed2598a375cf96ed5e07c02b0f1299224eb9277d77992e5ca248438cb837a8f9728a5c91d190bd65b670b35844872dae336c5b94b941baad2aa2c9f09ee9c207f0fabd2c7aa6f19018b79504dd84ac22c5130ad86cc8d7e40b6c1d8f3764a0bd9690fdf9cd23430cd553192b9578086b7f069d55066d3dca1b89b9e0f40298081b572a3c2c48ef6e834601a8ef6d88bf9619b32390078d83f211eeef1a1595734225ed59dfaa8d05f5a9a93cb17aa6a0215c9bbb2277cac3852af3e94392740e88bfd7fed784b0398f9a64fc3b345a117348e19d84f0e8ce90eddf84ccb7f5d65d264abf793ccfaad86f197bcff3661e91ceff3996f611d425e3c7182c148f5c70296440471138971730f5a83156ec9769d9107aa12c33600205817d22fe1c4ab33c945b0d9904ae37962b421e6a890ceeceda37c4180e051271734434f528c14a5d58f9b18c2bc1b4ffa82fe720675ba25fee8d7b32683dabb621f4f155fc99d745b3c19ea8e366a969cf4c7cfb99dddbc907e86f511c61d4198d7da42c6876bc821d88d4e76a7b4be89f602c280da5df99b50a1a1f80d8d40aac305412a7bee2c5b36b1f5c596c552dd077d856f32142b3ebad6ec4f7e60016a108d341949b3ae84d32e42f77eae917569fe569e1fc8199e022ea3473843be94d2a42476971f82290f4627739232f1d422ce3c72bc65c58c2fd77a93b35f80dddff45f66ead0948288afd2c685e41739f10a6ffd43c566e9dcf20c3854701d14d239a6e0a0a6b5a3b69ad844c133c9c2125da539a971c2a164104a9e328af33e21bff4c8af47c3b9b33fa40118d9a72f6c7b831c54f0a2c3c6729aa63b728ca0aee399285426746b0296ba1d08627295fa19a77fba45856f047ef6830a0385e5befcbceb08206f0804f9db3651022a361dc3abb2927ee5de79f06304ffd25833d216c70c5e7f4029f9c95cad09d15f9ac89c9408e536c816d0fb13c638f55c8d8167ca3f39534a9fd422a65a9a167362cfc77383e5255d8a56ec8a6dd8ff5588e4a6445a345965cbcbe6cfeee0a8ac5da5279b5b0b4b8fba7650f0fefe2b648be9ea1bcc61165d651bb6e69bfcfc338c237fe8c5194dea2c2dc76da929c1197693ee8823d3ce04b158919d95cdd138f00561eaaa4bafe648a29dc18242a87387f0d965dac2c0b9eea85583fb56f8275252eb15609a85a6c153da6ca37aa10bd782403412551a1ae3803284697b2565d88bcfd34685ba4d950c94449baaf2d2ba4687251b251e83d3aac5f23d56f915c158254b645f1b992dd8a5e4133805232bce23ce0668ca80d8e69299a8d716003822cfd09341881829b138eb61815b626b50235c6eb539e60c5cd7f180081ff4093f42d105ca4df36e4d6da27aceed60deb364a98d3ce3125d0f2a4684fee33fc8429781cf1605d9466f8a8f64b3a35844e3729a415e730ce39ce59fad66c4075f671d4b64dc4f38f43956a89a47dc713975a28921a58d685fcdf98b96847f06a96d0d171bb04e44c50636c956ec73cd6bf591357e8ad2cf31a60ff2f7c4d9641fd671a0228f1b2a829fbe35047785b67ffa49868f2ac75ef7d2ef1a9f70b41cbb0b38a6decfdea062d223a14e6218515f334584e7e59e97caa702e7f150091d7b2aa8b39cf18b349724483cb7efc651a6baccf80b25106ccb2170ff398632a19cbc37a4f73d7c741c5d028907cebd12d456d120aada1eab0c18e5d7b77da04333d6ce288fd9e0404dc81eb4af1b5bf0261011c3864383cf3d8baae275d6b7daf08252a87094622578c23dd71625bf39146e8f1b0c4b2e4bf8766a8e04030466cb53ab7680c2855c4c2d45bcf464ae27ad805f4d3ca09a0dd5ebd1de2b7546c31720836189b88112a564545994edcc6397457a29883021fac4798a51573daaa0428a4190cb08f8360c7b2b5282dca3974141a89330881c75e40043df7301de2a56f12bdd0b0e358d2e513b8320484448e2bfc3dc1b9433c5675f0a59913f682f242773152b1918d00e1a76716f2415ae8972445118c43627d00d6c268011d42611f330a26b87f0db588b353fde48179597b75fd6b73c266c8f5e203b25a5a82c50dbb78d12c5352e29d9464c23b73cfda3988d741aac0bc3e2c5bf969d8c3b6770cb7615a0bec3e59f46d6cd4929d0237f3c5d9ee6bd042995f7d87c2c16061f51414e5c366554e9710599cad53305e9551ede8f235d425575d60d4601349753aad00ac2cb63a64f29e79baf65873f7b18cc4a148f308ffd2a741ca62381e21dc9a3a7cb19b055cb276f0bc8dd1737428e642aae3f259f2c88b5d7272a33e79630ededf4e5a6717475b463f8a6d49f7ac75bb7af845eefc8dd948979212963bc6adb664168288408baec4e92c7f7699518ec1014550896c3acfc40e70298a80836ba2f6262fac6e624eb598501cbe79cc8955d6af490c7a395d737ebd140a0af1f3184a00feb69b9188ac087ecb05c3619a70ddc65f67ddd651a2894ee8d5ae5d3b2e7d5c55591001e7aa9f9cd428f1c864aaeb7f17bde5f8dc5ff10ef43cf77852ee45bb8859e718b04225e7fc499211a8ae7e0d048e6c51e3e4c5c1567a613c5f1ef51ae1939e8f2a9f03a519b9d174ddf7457c593bf61516b69638218a1c1fbdd9210b01c3831194e26c1a1ec33d717a5eab5b79ee4cd77dfa2e1167b71d35c06c1a6a781bd5e95ae7267fda4943d1f71558abcee22bd79ea8e3e619a0acf21eb906e82eb5b2189d8184a28ebab70ad44a7a1878a734d29dfe1165a345c41c77442a22652dde187979ef05b9e3cc746b2217c67064c799709960ea2e9453a23c09c0e6231bc47c13cd0616396fec55be0dea7fe95600cead2bb5f49c08116556545ce523d0f6728091d1bb2c2773fedf99680523e91d8064a475ef7440b3f002692174c4d8ae017132b0440004f7cab3bc4a92a6c352c518dad0e8c60a909cb7c07e7684a5ceae80723c8763f0f94e4a34c48ecaea580c84ea0f7ed0d91598de95eaa09eceb6042d5b85c24d194fd03f74a404ee2092ca42cb8fe40f78283ba828d742268c51dac92563f224cef96bf8213c8150e55201b5ae29ae59d084418e2c485933c5f812e2b54df48f69e98032f8ba06b70a063faccd5bb3a8969d78c4018d423fc3a0f3b1315a0eee533ca369f7b71aea0db595ef12a0d1f1f5975f40a775232d7953893b2acfecc90ce9f7714e2260a8309ef4564df0f5fcff08a5e6ef36c101ce96c3b01908aa5b13265810cbcb1d436066976a88d4cc4734db99853a425ba490226b09541d20dc112349988b37c2d569b837e4469a58745a9179aa8cd253b231856128e89aeea6191e128b80848ea2e339837930abb9a70786746e4b29a65c33886958cb0f5356508bd372bcb125946695d456cfe91dfbc418b940c08a29aaec8ca8875a2e0b746edadd32396c0a2c3159e161c08fc88b8a3f6c2d0cd99182ae214f4bf0d4f88bee5b1b368e7f8514e063b7e934f0e674a509dfd33be44d43f8a841d05b2f2a262c9f451689460042e2766cfc2358f70ca7a8450958857a92074838e7ca39f408749d1deb0ed4409637795756e977595592fd53bb69f7871157926edc794908932350281c7405467b6d3c6eb5b18a17e4a5666e38272b166cb80f6fc0ce8680d78ba5710e1f5ee262e0c04ed50996da30a23094bde42f2a9ca00e2e2a1dcf5fcf6835cb576eee0146430a0c0f4a7be85fe06521cece8259d002555c99bdd81bc006546920d9346c843cae009e2c6e395405695a427858652639c3e788d5e554f0819a3fa2d506a7c5dd77a66df7082a49633c52179965bf7999e30a5c035ef6bb7a46ee577e258dcc996821629a3cb63a8de3805ad2336764b5d8478dd0ee0a864a28493a828f46c63470ad8b1c23f3a40dc2df8559478d1690bb4dd06e386190cba8d8309f3fa95782e055684d43464e3e7e427d08c1057e8dea5137019d71150b79f9ca5ae5192977d6d83812c069142102caaad0d0cc8e256d70560696493efc9e143e934838a877a01ed594e1f185bbdca0b06b427f89a40c0e82a561c712019e1fcca72be3d0064e53cf59e12a5ddf82e7fb4d213571c280fd3a5e88bfb656873c41e47b6c9859a939317e0a3db3934ed8c1dafe8b471d6e67215d5673333fc1421d8bcab0649b73a9aeaed6cbdab90654c482ef190049b3e68efa3756834333268f094dc56b2b265ef05c357b71ec9526e0a798dc8cedbc898983d01a1eaf07b3997623da84db3db63ffcb4162061cdd1984eced22984dbc108bfca3c20e77de3503502dfc04ba8a805df059344b1201ff33145728b8fe115e66c69c96f41490a7121350b4bd67b2ab120a9a8614b28c96c684c535a4f648269bdc5469c419522b4d39351d50e9bbb528cd58434a9f9b5d08357d7f344a1ed49fca3188727496eee81e3caeac871e7b0abaee53e108f139310d46a721229dc4a64a65606e2c62d79da891b9e54dbf800228c6f2eac762e395cc91ccfb69319b57c03ea5b84e2757e80098b5f49375e6dc26f943e300f299ce936b39f7ce9fcd206b6d3a3a690689b8bdb7a08f60c8035efcf305b52123b16741939895fb261565549995a450897d8c807139208ab882a9eb874484945be33128c6e11425683c80d7d44ee5dd1d92185cd4988bcff4372a8571d8f41c0a4af4b100bc80a71cd8b932942e538bde43d699c498d1f74fbb36a8060b495ed83553b6d7422dd2c263bb0ce0fe7ffc3ed42f05f325bd7755f8501c84011553158202d034d7207f4f3a2917d47bcfefae1d21844a2a1176d2c91237eff40f811a484319c569fdc3351a36ef7a5953ae400d6e1a4195a74e3e9fa3f8865bb0f7865ba3f686333c30451b928a704fa4dd2b5e389e1f204b5533fed0f0906fe4de01f0d2f0eeec2269fe64db6602d19204a46ad991c6a85f68e6b9efffd680596e1afa446290c517523054190a895e35252b176d05772274972cb4a36a3e6bb5e36555b232e59aaa2433a5b950e5391582bb0249245976f6d0875f56f7ec0733f321f5f6ee58fe3799c63343f290ff3e2ec491dfd418da3716a38f3fd300cee6416ac6073ff2f6cbe09c9689ce4d51a1fa158e9cd12faaf32f2dd276fd21971fa18485eabf7571d6a00a1534c2f9551e540ee7b592bfcc6aea87c6471aaa04b75272318b373573bd50bf092b1e2155d300cbd6af15b5a8558e47180aafdb45872b7ae9e52f73ff1fae3f35f3fe204f975432cce7d477a666461f55608284b2df63d9d195e3546c8c48b90b9456666414ea717a3ae258230ac1c9cb690be5cb7de74507551f1c7c7065265859cde5ba77906cf09ecbe9083335733ce728e7057cf4558a1335511ad5ee65178ce2b014a960865c936e7ee7d99b7e18d1e32f1b6bf3346bd044a35a80b16635f384e7cdcc6e5e7f0bd884346a8a5179c2fb428888a61e475837ef60fbec9d633a321423513809ae519d8b57a5e621dca75bf81cc6c9c30e9566a1b5159f6d04ae85ce932627a8ad33fed8ad86d20484b4850fb8a46a46820864c6099a946ee3cf7557a1c6639996c4ad56c63b58e4f5c044c05b74a1b98a9e89d62b2bcd77d4a935ab98c7d05147422708dc0c0ae503215b0a712420e6030d04366e21532e5b914b29c158ea55c41ea8dbd8ff8b03646b8c05f0e16a1b96a2bb5b3e417f974dec29bca1e286f20c959b1e77053b2cc5915c58bc47e4d14b69093e8ef37a7ff62985d69acab40bb24081eb6a9bc217364b9160f5ea3cf8a397c6f9a8d3a1417ed9d9a884bf88f0d3788830ee990939462d2cf61b03a5ec6d427826bdacda802217fe721778f98c3e6e79687298d9b00385043406e6d1ed1f9997a7f1fb4673fdc9e0931f820e94f2e1bff78d0c1d4dbd7b27d6379e833b139237b507e465265352a2186d98a766b6e7bc3b434c88748892100cdcf75b96cae5add2a62aa1afc9a5e94e78b72b063b311a0c185e1f2554149db2bb63bde1e8c4f470366018291fa592fa35b65d8942c27b60225954dcded6ab0fed6fa626d09e887e103b0721b69631edd49b7cf866e466413969bcb9145596d711e01f50c9c7ab4ecf767cb47ddbcca4c1c3393352e57e49c149cabec498534484cce55c39d8010dfa33b31e047184f8cdfe29b2791ae999009867fcdff66342d965940078fc7fe12a02fe65d47e29d3fb91d91f8647ae0b2140202b19331f0b23d3ec1f370193b8bf568e689f77925f66ea15b2867ae1317f394a05e105c08c0118d076543008155d18810190ed634a206f2bdf7f64fb649ba03c083c7509a7b06a7e2293e1962f9290576bad53fe0b1eb6ebc1eb954caa928473b0147beecf53c0e89477718b9288d41e3421d93332b36a0580d43f94cd9054eb4a7fa4246505a1d6267f68f56a1810858e82bccea499730e85cb1380eab8cdd5549b60b08d861fb7a4861b5927f1bcb922635177d3f0df41245465538c1deb5fc664d04ee14f63ac6d3e5aedeb5adddb8e588e39cb64a68e436288998e04b620541a6fe5bd1c00d183e1c8d93c6fe493d3e4f06e9083218e180b6d0043e6171caeb8d534e151a7f177a2f24ab789e6469162217037f6e76172d9706fb4e2ca9e44df57def77247284a40be2b5a50e47a5c75b023dd09498a34a741aa21b49c199b85a427f1318beaf66e691c881d9d658136aefe778e23b03344a38b1f03327092ea5907923e14f86706352470dbdd9bc84810e4c4d1ec6d8f393e7bf47d37f0a9240908c0825ac34d084c4f879ff8b3a803b04fdc6e3f8733ede025bc0d7a4d3127f9a1ab5e148fe04dbf2fa6e80645f452c2fdec9c591d267b423f51ec2701fdf300a4e8306feaa7f7e413bf0140981bb7c56ba5d443dfa449701403955301c43d3b90c96e19d9cf03f24795bea20706ae9d6060578e14792066739b8812cf3330065f91cb2f7d455277b903b6aca46d5c1befad3c6f1c1ca25d1bb5c84421d1d33bd797be9d1c578c7d29eebae0fe4cdc8939b42b9d8df134d4352f2171e9c74a79e96b382bbfa8429a60a45e24f1d984a0da24ff720ede5099a1cf80e0f5510a9a93d6740028d0b050cdfe4d2d288893b6a3660b6499238d93ec71206d2977661a2c514e037e663182b4ae3abab83287c5495605fe7e08721c0412d37d2a7a8ac8611dce1a251f692dcd84759c023f7e2483d26ed5fdc5e58d6efa4965dd20bb8497214f79376fda126e7671923314cdcd11180a8fe6793cfb27aa3a49c1985a564d5454a2c0f1de6c5ec98e64231b33edfcd8ab18fd3ff7759c4c8b63b0db4fee47d2cad6297f0ac22fad19ef5d6e1154b1e99caa0f1be61d960060356d788711062caee6964f70da63fbfdea6ee86b93aced9568f1af7020adaae35d91c0062b6865c70a7930c1c9848615141d8b0dc77a2564042614f1e65b4d8f0395fa9f10b20f2b779d4be2c129b8510466a1324cd0dbc78782010000b480c5a612c72c9f089d976af3ca3244f0e2d416208542bd1b027a6f61c945526a6c2c7dea9fc7298f74b1157c16cd2b40571ae93a59426dc70b0a396b257e8f6bdc199d1745dbf1a6aea192bd247a53a133516e622271586016cc905b960ae16d46cec8da13fc464f751b0b347fcb7d8d8815ad2bdd51f717dd0d1410d15cbb5f46076cc5765e37b5c97d98f51b00f19fc999d4204c90600a40fc046f0979f2615e259382f9cb0981922e00878a0625271e6e28829993ed55327a3af763fce53c796917aa99a521b927d4da819d668e05032a04ac64fb28003db8551ac0576eaa65ea4a5134cdb56ad90445333213410f7b82f82e0b21fd038bb548b504f3b96b983ac7045882dd70ea06083811a004522412ee1ee6ca542cca2138268fcbfed2e9a1396c5d273b38a03a9fb1b64b455aeb9d117a882570ee33d29e2585bb997d29fee50fbc136288ac2ae01840417d7512da8eebaae000fab8076f0f63504ea01834094f6a849e5c26c486d66a29f44f801954c9fc4e75b3fd30f7246954481ab4985d685be52ceba406f632804fc027504038ab17a6c12e8d6c4c257d19f46c153c17d8c9b46da597847341cf02b5033972ac41141e2dc18b69f7d44150567edc51142801d1d1b6162eeca57755b152236ad6bcff8d28d86dbd7c7c9abca1a568194c8fb550115883732e0cc4793ef3f5518e1b2f13728c93f0fe22d5a2944fd0a38c6a517b78ee5455c4b109aa6cc4fe4b2b01de94d45cc4015070e2272e5ce2d3a143fb712460009f7fac4cac76d0dea75d30daa3a7865109cea180997420866738e33894cb755e5547f6639d751bf4b95f37eb9a202d0a3ea383a403306dd1555fd17cca0fa061bd2ff0ba6b75948d8d72692bc444d0e532afc1ba496e78ea00902d15f7a27fcbd8fe7b3b5cec02e4c208ec6e8b522956ecc9eabe71b0f2450462e95d99e14dc884584f0ef5b3dbfd168faaccbc3f7239dc7c31ef468fb63911240271b96972cdb17ecd11580a2e072ef8c8df0a1902b28f235d90602b7ee6eb3c3f04280811e143ea5e221e238d6f0f38c3e7bb1b6ad39833fcc79c1a53cefc1737feba71882fd3ef3d020735907544ac42d7d7cce9a6051fd5856228190485902254770024e7d4e04bbca92dc244b77e5e31162feadc6f6cfad48b98a4a72d62e7ea308dfaee14d993d5afd04adab3fc10326f2d79ad71b3cfa931dac7b05191c4fd9f85b952988643c48ab7b534bd117a2ebd099abb78c6287230061e85247b31e2c78ad2a23c0d1fbdb5959e85d101e8edd3d06b6ade26fe8c48bb27618dcb39416c374fc2e16d22c0cb7ad8ff3b069f90f4f888bb893b302f5872185d6b0cb5953ba4640638cfabbe15543a5886cd2d09aa7aec1494d9ad04efed13e1b31566ad9352c2090348a424615fbba962e1d67e7f6a48c44152db9b2f3e7a61379e7540c0ca9b10c67215cd13e7c083d93aaa0b68c3c158e6e1e20a88996f5c19c57bc3cb10ee7a46e3ae6ab3be72de4bcf8ad4fa6683744a929684135d69d295e7331c97e3341c3afabb8a2df24fecdbeccaa5eebfed6dcfa0b55d0cd89107267b620cc2cd8e68e13056d15629837a65797b988bfed290b5b20431422d8729098f2173db39da35dc68f8e212d1977a58144867c0ce923681cd0ac943fbfa8b3186e78b69e92692e8810984b70d8a6fa4823d89a38ea4f93ed99d9432a6c3dfada09d40e27e5f602df10a83028971daae6fa9d9c7d701e24d88cf9eaae2687fee06dad9a212c5c50ea0aac6a84f8e4ad959917ca985b3654cac7660fffafd8614d6b9d31f8bdf44e086a118e47990c013f48802fab7815d6150ce5d51070bed1562e0f434878bf4bf0d4ce89cd3076a407e273f90ff7f50858501f7733307fa5a4806fa887448605ca382e594c2fb2a8043f8d788dd2d7c26930f138824dc8e002d2bd686cd76ebb6a44f004b4fa01092b6f7de724b29939432cd05d10590052d2d2d2e2e2e28548af2bd7a956aa7c48b33a62d3440fb4717979797d5ca8409181898944ab5774b8b8bcbcbcb6a65c2044c0c8b75e2848c4cabe572cdccd0d0d4d470fe7a8d232c168bc55031310463b1582c16db7b6b6f6fbb3d10d2972569eda08a20a4b1f2b3f5e7af1dfb3be5302b3bebc03b41fd7570e6417558128fb9c792b7671458b6e521c5c5b0d4b5deb907f7dcc3ead9a5e5ad10322fb1c69a639e6d17f95754026cd9f25a21a478e97109801cc5699740991a6b9025bdb1e5a1c696378200561d36aacd2fb0044a8c803c068dadcc69f7c6561e4140bda8985581db37b579eb046ab023b497baf8f8736dffbfe6e1f36594834ca3ea5fe51a68f6922cbfd67bb28f0e6a9379581a9583bc83de3c7faec732eff4cf3dffd4f308a8cdd38029b1f1f9b48fc7e7f3d43fa83f3fb223763c7e3e2c1cbbcc359f5eb338e5d7d3ff6a4bd6fad9422b677f1eda1ae257965deafe67a589bb0f5f58722edfb293fce448c4af1f20ddb4e452ff942ee524954bf5501b03d89e4d13ec32557b61d927508002ea8f7a41bf2c8234ccf755e6a5fe1cdc755dffa3fe61aeb2ef68814bc56a3f55c2e87948876169efbd9a7b35f593f279a578ec9e9602920aeacf4bf1eccfa9d22ef3504fd53bfa08f9d0d3c2517c7ad973adf766b1382749f1e95106d01d3584021450aa7440d7d4e6b945894f37b6e6a5f8d49fb74070e997bbf43b960ee8577f9403cf8506d22d70bb058aa8cd73ef9589e8cde7a1b0c62e53b5542d65c3e2642696fcbcc48ef948aea13fb7e117ed79e8b5c41687ded6d4a97af203cde716c167685035bba55abdf824917269e9e121c8455e02cf9171b55aad562bd7c4a78748d76ad138b5ee8e0b3d2ad03821d7c48848c7e575529b1d1a27dd799e5c7cf9e01cbf5a3c511b1c1a383b383a2fbb6249dbb4334f1f325a3556bae52d92a03796cbbcc0172f619623c36ba82c2155a9511b4bd463cad4b4c69909443303a413c3978f57cd4b464d0cc6c723b625e24d66824ca7c6f35b75f3643daf19130dc014aa01126d5133ceccda11720969138fc8647fbba96ee4cdbb913759cfcba57a117683e500cbc56ac476623db11cac1818135f18f381e500bbc172b11ab19d588e580f0b968b81e560603913b0dc07cb85b05ccc07144d73b553892208f304632546274649cc50cc2d26871b92b3764c4ee7ad60acc03cc5e8c42889198ac921e67622468715a31313a30313a3632246274667b75aa9c4109ca989e3cc34573bd727f392e1f2f0e583465471bdb4aba23362772271437216cdb964b6d8bd6cc9a4362d90aa1ced2c4e0b284a4bbd96d2b58c1053ba4fe950baad4be9523a256a63b95eb2a469aa56aad54ef43172f0e5a3f59221c34ae4cf655e27124f4240b6253026bef0c9e5768eafd491ced4994b3b1d1247a7c569018592af163e2d769e9ed6c205a11ea0a7b55061490b1a368bd3e2845cb71ce6c944cb9351cbd3130d4f3f9eb6cbadbb5cc616359da9dbe97ab012526d47e78a259f2c69cfbdb41a67e6698e3abb73b76a892f1f2328339ee7d6195f2d2dba9dcee73c82def46850d360e76532f66be664c993dacc76b32524cecac10c49e93475e66ea713c7db54448b8ba645c353af163f343f7c70a840491b5db7431323221acc5deb35335d2d638b9a494313be7cd07050e59259da55f9ce203f434521076d322f1a272bb33467d5add5cbb7f455f976df52d769f94e3008f803168143e1777ee77f27ea3bf7a93abb9d99a9b145ed344fdde974eace164d7fd4397b025b5cc6b56bb95caf9a11e58d34a7255b1788ad17cd71852f1f2d2eb6645cad7186c6a9b533cf73672eed9a76bad6cc8ceb3c75e6d2ae29a773b9502f689c84783a5fa47426ec72669ea7ce5cda35e57419882d15622b046dc4564b74b55e3447f4e1e2a08be6ec36cbcca436bba7d16835a7adbb5efa65a7d3ce3ccf9db9b46bdae94ea79d799e3b7369d7b4d39d4e3af33c75e6d2ae49773ae9ccf3d4994bbb265dcb49e394d299e7a93397764d3aed65fca23932341f966d40901073d25aadb5d6da72adb5d6d9661518c7aa776f9ff1fdd156ea82de8ceaf406f79bee014d169b07d426d573f680baa05e0a6159439e1d83d1c3fa32d1c38afbab87d7c40bf76d5faf1ee2b715539cb2af16086369efc5dfb5ac57c8b3efbdf7c7daad154a6bcc9294af6afcffff6b560d6deccaf1c594dadc7071c6d943bdc85c7bf7661ceb14f0b4d6fa03c14fa7a0bf4f7f49495ff557cbffb9079c3deee9c7f9ef679c2f08f40782ef1f7c262630fcff1a99eb279e0f50d71dfcf81782e2072fb318f458bdb19cf2d7c0084fe3809555c0da0b6080573436e8d5e0ac13bb8552805e80d23c6ec758e541a17ac08a8dd9d8cdc66a19bbc5a80d8d57967d77f7f412eb654b9702d4c672b1872a6c0ff5e26620d0f39161655323417c6feed0cbd9cc080e96eaab7d78d24f1bec146704492f673e7b886a23402e96be94ea6d04855eb27038233a28e4f8f0f38423828223d261c61557e25ee53c59617b370f6caf531c91512fc54f061190ee0db16fa738a29f5e8ae2ea00443e9fb872e17a00950089211f7a19d3fddc9ebf6279bb165f434157cca196aa8161534e019d04701d2860b906c87f9a02a8cc729dfd04501bfb820efd796ae557db962136e5a5b6410f5989342c41e3898e08110c406c95fe3b70fd9f7ff0fc01f57929f6bdbae5ca8a5010ddda059cc02469278729444c215b4b5ce115426a9feccb9fe28038c21c731ac31b1764a30ba0535c10500fade88304192acf9f4aa27b5800cb315f15e004d413b2c9e95827b186fb8122e409a9cdf8aea2b9a2a9ed520cbfbc2e680ac24a6921953d7ff95ab0febc3c91417f5ebe3a2fb239905db90df90d5bc58cf73b86d446bcedefd4a63fbf03b081f3ec92e69ef73bf21cf4b448e4196e33d864b8d2cb6a9a4ebdd66eeb9553ef86cc29ad21092347296061490ef37bc18421274a0809e2c65d196d8ec208c78f262d5821dac9a91ff464c48829bba222729a50990244673702144e905361f8105141102c1f58c152969cba34aeb0eb6eac66944d714d4d1d8fc0717eeddc1e01ebcaebd22ee73c8e90bb2a0b46bda03cb4f4e5791863ca2fd7fc39c83db0f655bb07efbd9ed3d043bdd05c73116058207ba9f2203d9de282ecf49b4e7133e87abd3dad2e35f54a4bde4bcb2740cd7ec3d7e958f7943b6f3b6b33cd8e39d6e13b646d567b488c2da7afcb81fef95581ef3f8e80fbbf78186410d1292ec84fafa8ca5b806cda7dfa95e1b65d4d4ec22ee9ceac26b5a97cc4b1cbfa537fb4debb569a2bcdb5f208bcaeb4d26a564a39a55aebcabd6ae2979e0035a9b5ed22426a713290bb0428e514166e6049cb4315adb5fc71a9211143093f95eba6a32627437032fc582012421357821bb81f4d261872b590224e9de28a2c09a0535c919fbe2d0ec50901759c90ca4567adb53605177ab52851df17447c2d90a0c6e9438f2a444820629ddc2439b5a08523a814d9c5c84aad12949c8087204e7cb851755815e1202229b7c3530e9e4993c83f54a31e6e504c239208c102203938f418328508114d9a1841c24da7c0caa03adc584ae2d11184d3e1e2910212444796e8610503473c48d0b423c90815609d18df0d4dbddc8045a4471218a6cc8821c94b92120a868ed0e1862c10b8a202945b90193d4e5be400525640e1c65090a3252c3172f622aa2a8ecdb4b0afa62decef140744472f635d088808ba8a58cc56271846402002223a1001e2881c3925d93f6907272139d4302389534e397b0204477fae9fdbcc937978fa0cc70857d0f06ce416ac004148c38a1d5a2e6ccaa9978bf9fda271f66eab573ed3c2c6d9c092b58391050b5ce825b5e15034825eeecd222dc9a2bb576af380001f88802bb211e28c3cf5b0539c915dd14e2fc9dc5da1725ab9bec10229c9ae2b67d9e084ca9159ad3a4ea800a9341d004a8b5905505d2780a5799cf2923ae93456f9cc0876296e8093f9ee8010299440c40f2a3892444ec9ea30828ea02049091d3c006194a3350dfdff73aaf8758525fa73ad3bb5389a5a4b714066f44e02adf6ff628c3fe78c3d0deaefff3748c510e604b5557b8439717189f5004130d623d6030582601886a28842a152a9944aa5da7b07b31e6231835ac7d31347238a20a229147944d85865573e0eb15b3ccff3a8b4b8785a7bfafbb477c3e54566c8cb6ac6846bdcc5b03c8f69ca89148c4cbbf2a55169579e84644a11227641940b30500283f188941d0531020145f7c38a1bcf1be266e67943cc3c6f080d5e8054b5a765ecf334cd5f37433b35fd3365bc7d55422964e44bee7e28543edfa9afca479fd776762137a7a4ee4fa434f08641a7ab1baee91e0c84873afd00bc81474716a704830083a0b7fba435ab64b13ea036331f306f0c10e4fae62feb985d69fd71111582c7418d7af1ddefded1a53d160b674f671ce333a5f085c09e78b17e4ea91114907e549347d86aedb47999ffb59c7660bb48f8b5deb8b232cb5fac745cccef2d001e77e73606d6d330a7977c195fe2d5561e168c89158aca2cedf98f2e96ab55825d76e0ead45663d8434fcb9ec642bd94bd00f51cedb11edffbd8c4424c1bc63ef9ab0e10106814d6acb5a05158fb202d5b14abc63438c034ea8dfdb0d68d0ae1e322c7a817e258d6702c006803f75812e401f2b038d9d2b08d3ce25ae679c436308dca015601f36010e05a0b575b4e69aa9f17c11fe0d3e6a1c307b390a3538e71500eb08d7a63553f4fc3dae21ed511d5118b53aa8a5445d4056df203fc6e3d996bed7919f3c0362a071807ce8159c03d2adb8b4eb751b41030fadfa12bd4cb9acadd211dfd7e49be23f5c63eea081beab4f1acf30b2f7f4e6e1f93239583cfe85bf225e99f8ddad410b1bde81c096fb71beed11a34e994df1b75f17c931f9205fa4c10c8ee669f14295244fd5ab958268415578fd3b80a9824ef598fdad6da08692c475d609fa05e8ad868874ff7e5acccbef87225d8e5c7a4fc96f425a918f6cbe131e5c2b23fddf7c4921f132616e76669df932f77692a37c372ef6fbd3b18e5380e01738fd71db3e4ea6931cea5689fa690c6ea0bcc497c9f5317b3999dd1eff395b1775797f8cbf2072228e06537fd47d8d0aebca4a4edab6c9dd9e8c3c52b6aececb896c074a6e2f5c93438716296c108def6f864573ef6b02b1f79d8551c77d8958f39d4053f605b6ac38c461d5ac471c6c91d1b4d70e2c4898f539ae78dd8766246becc36da641ddf2c2953b432415303346588988099818971bd7631a3134d791e73d875c4edcac726bb8eb75df988c3ae7cbc61573edab02b1f99c4c471c905e258030628441f3e3ee0ce6884624662132868daccefa4362e2ce4684b9181782d4e06e2a844853826b11147242bc4f1c88d3816ed9906568319000030eb613d416596969f96476cb3328b41b35bdb6ba7c12c0000d83a2f37acb5d65a6babb5b606ae40b6e669bae53d76e55487031f43dd80058b4edb80c55d5992bb58d05458f2834222896fbfb2b02c5804b195524aab156b036045f7febfc59c56fcdcf61f4b0674ddc2cd8a4eb9c86dad9df5b4d96cd633fbb1521bfb36f43b37c62afea6245dacd9cb2c673dad039232a91b0cd16f720aca62769373ee852143fe29cfb72e3404288724d7536b2fbbe9e5ffffe57485b5a1f4ffbfaaa019e01439a826f3826aa40e42017ee29d29a186c18c8d0b28a5948a30548edd97cba394ffff3f8bff6c5defe3d7bf7539758b25b9cc92ffff97a941d3bcb8ccac3875fdb7645446e8cb62c5502a7302a62563a2b592a1629bc14335412f33620d914b0d4d0bafd95735bec45bdb3dffff3331f67da25d292fffffdf889918198b31712606fdffbf80520c3e14e26b92522dd69c8198622606de000ec219883331f0bdf7aa10656ad895979c3512d975858dbd5951671bc03541f86676b3c24645062964240a0c662e84d09106f0ffdf56d19294ff7f115c71b5a1d60fcb51b5313e8b7d8c59d9185bb24b1eeb3535d405bd341234618bd5da3e2b21a4aa56a822e2a78f603ba5e3a53634a4f65fb55b6b39b524a594726b659ceccacb57b7d6da1a9d5d39b5d65a4badb5b656ac4258ed7ffdeb02e7ef8407cf3fed698def98f10dbc367d33be183e24f5bb387fb9b3123627bda436ef0423cf2634c3a6c71644888dc709b61034d9a94e71b61354c0a202252b58a264a7734aa0682537f0c4f4d25e09f17eb6d88386921c3e4a4ce0b982638ba7ded921938782fd1de15668792a4862e447922245e09200e9e5deb82424782149086ed8aa4e714976462456525879456cd1082dc346257945f6e6413fed9822cd04c90c4948727c296cb1531c921a2bc02191d1cb8d430bf6deb8234d9bb5572c207ad82f3858d92766c861eb1e497bd529eec80a378e7c20336dd493a7b36192bc178a4cd0f3121bd529aec8d6ef97f17d0f08f0810845447a49e6b6142424242424247db1f7618c43ef629e671d7bd9cb39df7bc493bdcffb34184a9142aa88912a622e39625258b607fb19f4b1c373c2ffe8f7f2117255943ceb7974b17c8032cb228459bf632c0a89831661ef1018387878226443e704586a42458810cdb0c4030587a0209658023a5fb8edb0048a1f2c10519b01050a901c0bc415183d8465c9caf7d62075b160b141071e0cf970559de28a7af4ef1457f442bf50fe03efd57175680f0cc19f7defb8da21cfda1351def56e53bf14959a39cd44ad525dac512078506cac4d6e9287dc4f23c94df290a40a12d4418a1a49abb89cb5af6da5405692da5892baa0f826a7f8410549528f24adcd385c70e13f05512aa7b5f2af1857b9ffff3ba2e41e604cd8309bcd66b7ec2409460416041b02636209ceacbd49ce4fa001081604c604ce9c615b003a57325380c90003028be12fce9e8b2d55a3e94a592955a33636554bd5a80b5abb914246de7b6d34c82092818484848484f1f5b2929212c61833b921d140aa4020fda756d4a6af564a4a4a2c22a2bf38072b5d9649734c93862cf6b387af9047953255c254e93e756ad9423872f670ad56bb8224d404f7e01e211c369bcd2664b350254cef5319909090909090fe76c08285c655892b711b0b70c697e8fb725f8ebaa0df934f87a403b6f8f22b48337c222a04b56762200c04446d2c0602a22ea892a81482429f12fec00ffbac9a2c7f31673d8de67032e3b02bfff1d103061eac9a155e20c16e41c162b56030175a5c582c16ab867583427b9905568d903aa54ef1c95969042decd001cb0113010c07ac071602180bac1ad80d560dcc06128c07b6024c05580d5663c54d0dab059b7233ab61b560536635ac16ac4e61b924e1e90f0cbd2b3a67fe341dfc8652c8c82b436c2cb9e201fb713c829cf2ece2318ba3575b7bae2819df28516c93fdeb659c949474e2eabdf0cd929809b645795a752aabd2b7957e5d41525212aba808672fc7cb3767488d224949492fa36517f9516bf5aea73d0f6cad5ede11a508124b8afcb0654be69116a99194947405c96c76ce663359d6515a5e32fb524ec249acf3addd7171fe8bbd25f9caa7c377471429175fecfd959cbd8cef8e28d608b55b5429310caf8020f734f73ef045d3298c969bb493542958115412ee81a560dfca5f159d7562d7faff5f2b8c060c05d80cd809b01d15928099002b01638c611fc039e3ec7919cb5004e37f2a18ff5381c9c03809e6011809b018309d2c5896b862458924ae3cfd4769010b56e08404c6ff5430fea7f2ff18ff53b92f3cd8ac3f0ea6302fd2e76264ab8b2df598a6d79cfb02bf7fa9bd901432d23e10ab654569604e673f104e0894b481f381025e70295272394c7e10428eb2587bbfac5f06785fff97a6b2cb61af80a76d7ecd0c4348633963fc47ff71fd692d020c7d79f6465c4110f0bd47255cef7af782e1873f6402993e26db77da2e7fac31160106ee60bc472f05e771e58fffdf662b7af8de07e1723c569d7ec78ba2cf021313130bc684d1b617e79ccc849972806cd6da19f6b387ef9047993265c294294bcbaeb57ad7cb5a1f0d55b9d9b3dfad678847add5665be6776806d0edf69f3d7cbd4c727aedd06c369bcd66398633ce155326cdf46f5e0f676b44533a9fee5340609f6a33c618c47184ab3d22aa762a04795841252ab5f9f8e7f1fad1f40fc6f62a93aa3201e12396b431c1373c1424328198678f47d84fe2ef4b45ce39e399b2a8f40b9dab3154a349000903170000100c0805032291240fd3444fee0114000e5380466a5c44998863b1244661144451100331c410428851c81085146245460018e181fa74e616bf1272925f402c06ffcf2219faf6804fc9dc11a754f2be16c7df5384399f27dbc899d34c0eddd42856424cab0f6b51b2061cf3bc31251d79faecfb4d385b05145d39dd5854bcf024da8089f58ea7aeb9ba474600f0243367a437d9a9ef37c14ed3801b1c69439bc939ec9a9ff9ee033674f00a1e0ddf154b01d6460f01188a89fc63dede5c274c4bee8d567334c554738b5c7389d207c38b9a62e9b4b709182924af29d5c50306e344f63cde45142fa57b8b580d0eafadc4af84c82e8e651d4f313c162cb86e44cee7b70ad0cc1348bfe876babbdd185ef4f27edf21107fcb99c3a4656d9ee1a52e62de6fc03acbc6048fca3258a2da5cb130734180e1a7a987da9542b498cf576e60438d54855b31075985c528bf46675975840be853fc9e5b18a5eae6d90811e5f7f4abb61b921de66a3c614f769d6391f459210d4a2c2a890670a8cfa1f63d0ef2e2ed3e7c2304d02292f5a1dd53a22fa5719e082846d27bc8d708edb208d26be61ef1daee29fc096ae2e766cfdbcf3c4e6048c73ead8f388984f08279c09bf0a96bde3df40ba95f047cbb4816d1385b61584f1541105d3c7608739e7855fd844150cdf9402a317646ee0fa0dc2525543d8bd13d212c8bde079cc519343b10a8aa0b63b6c9081798e7ed5fa26dc21321ffe91453fdba667b50f47de6664bac7041b1d12842bfed42444c506427c4966bb8b4946e009c711b3f61f0bdd03ccfe017a18a8599053f6e085c211e512e4343085b43bbb836b76e857275a674c3cc5b159e1599647b40df27f13728fdbe4afb65a9ffb12e997b464c01bcb31cd7a8d3e28dd5764ce6d74b32a0203505136b7f62f75c925792ecf28765165b54743b82d01d1ee20fb828a7efa81728be1213181d9741a620ee18b741ef148b02675b4cbc686f3746159f3d409029d4cf6838b6d2e64c8fd8d0c25505d434910127b03361acd2dca3ce2c4a615c8541c42f901eb82a8c83de8ca63f6144725ecedfb8b4473adf705a76d0e16e94404ca9cf8129d00fd43b8b0e8113fd8b7734a580170608dae268a2a04584a3611fd260ba3a70536b316ada92dd5e90800ebe8a43d4387b718d91ac765524a79ec17e16ab70e42e5c18b1faa73a70558533dab08dffbae57c97eedcf6c90ef491da97d16a5ca673bb6563574d8056af42bfb2af6862c4af1fd99c95ae337eb36a1398e1b215a0bce185a3cff06fe3952f5a3dbed9314048b39fa087674dfb1a284fccfe4d38107828ae55947d3db10d5a40cd8477721496cfe74cfc5e5b0e7d6d5fb3a1469096e5674a43085f21b601b589adfa44b6ba625b610d255fe5689b79e8718b951cd6caaf5f7fc32c9d880c4d2be06219e744daca3d19ca21202a492c96a084f32299ccfe0089e6fab7c647a21fb55ae8db350c8c110add45a27a910eb9723324df34e862617378754da36a7c478e1293714f33c55bcf09d96171f6e0db661df6149ef6d4589adcc6952357aa2870b8e8dec5d9c3bbd86f9a45e2dec88a6a69cf603d60e861573911e38d815edf56458f532b5b40cecaa5de92e94e7d2b0353e74f2792577fd243db3ac323edf5ca87b0f4ff5cfd8089b542af551ea75e8f0b1590c7101b3f13ea3ae6501bdfa8bb7a094e267924c5d539e264b1d34d36edf4d6e7fef4df5079c0c4b642af557a6f1d6dec95f2cbe566e05322b83bd1e447f77955bef60ceffd0c9b08360786cf59bf756080ff4a2d177f65f03527035eac2fdcd3be574616bfff35ead3441cf0fdf6d775ba5a01b2f77e53c2cce73a8707ca4115f237d697d56b72a1e9f8a1d92db7ae9f789532d01254eee469a013bd4007cf4780ae7aa48e8f801e01af074c40e7c21aef39b006661f825b3b2084d92137fc078873e7e0adffc10d8b94f4bf6e6582d18d6f51abc13a465198b932cb318fcabb8c400e0c5c730d772beeeb6dd702ecaaaff170a1280b554e686a2aef1341adb7e942e7918a1ab0f5a0ad9f71325230a7f33a3fff28faf5aa1c2ef3f55c53f1b1e6d0b5b741b1353631e95767acfa3365cc4c28d2d4d9860269563d1e082e89ad662b72f301047eaf9d15183408dab561b8aef860e77a3c7f27716aad366e4c05e64d0f82032b8891d87287dd5c9c8ca63135107836f92c5b5bade47ab077055753fafae04420e66333f6169b8f17a17b174e7ef1f44995107a38026ec71349247fb44af3c3ae4c9ecf4974e08a5f721df037ee7007e0769de50bc7c7f6a0ded95891c27e085c876e9fd57e7da294af4f195e44d2e739c2b10e8db5e536185b85310353b4590b3b66afae9b2157ddbe693e5272a81404e7d9dce07ea70e24c3422a9dcd3a95500f24f7be9512e975640e23d9277bd22259fa33db56e6f9cd26feff259784578212bed2827e2565ce0209aa9ab9dddedb1b0769fc9b4d28cccb691014c9cb4a791e43fcb06eac6351c9bdae29c428a5c8fd4bff611656188d71d024dd6980a2ef348a353f5ba41c18b402a82859b71c28619c91bc8bfa724cc3ffa9855799f1a045bc120bb2d02c6f72f7c4cda4f64afef8ac35b76384d0b8e41abe9e28a93a093c0f826842f252ac5a7eb749460f73454051babb230066dcd9068f3a4816804ece9060928ed15d3341ffa1daaf45f5f051a8ae1e825f6136f5c8f69496307fb3e2e61f8acb84d04d6d478236bcf91de7d2fe09aeea50780341c1ab47f092bbd2123097ca230ffd2e47eb1787d20c208468bf54b29fb5d05c40927196a3b5555268fd7af47df83e637cf079793cce94dac01ee2cbd7523e248adfa9ed1638d6d475c04a075c7df36b62c5093c9fa7a27ae45477b961e92f90b62b18961459b665b17c02e8ebf6ec754d58c2a7e2b39c3431e7add5fee6eafc76b763007e2f45e0089ef9ddad46838228feef9898ae1f3ef928ece46b932048c2dba13c1faa73f7bba3875d2009b712446f6846376722d8ee39102e8d81f87e0691cc8377aa4c79fa6c60e0226036aef433ec9e937758dfe4f9db511e07e7ff8a91e713877cb67331cfff8b1278bfea230837e1d5ea5695fbe45727fd8d4e0379232c0bb48f63397d6b912d42e3d598744e22d472220b491f0068311226603a482df6bee54a5f8619956d32800e98d350e973b2c51e9f7faf54670ed56597652aea70e3e00eb2079426fdbd2ca3f465c379a86945f377856eb9d7ca400d370016e0e702161c5da8f9fad038097e0c4f8b58ad68e3864a27b32654630fbf7d02c5918a98a35db49eaa4e34474cdd74c4f793221e10b78a27ca084d6d4dca0538b00eaf8d8d75b1f1bb69c323edadc5a7a49fccc5fbe0e204b7b568f90198c3f88a222fa166694cfb37af147da65d466ebb772a68b21677778e96906611780c3dfda24c935dbcdd64753582de866b3557bc1748fe089f939d335e46869dfb639fe3b9697cd5edb0e8ae3f0185b0a047e3aedb50c1563ef3c9de7a62b2321408938122794b6c58aaf8e8bfd46558495af929fac8a6fda613d31ddc264a15559649709228a7f584a6d15fa315a8d2101d10cb85bb205e29f67a98455d2d8af5410cae4c416cff8943fbb44f51aedf95976ed9592e531bcb71f5913328de3e2522f07b30ca4c89d6e2fe6d85bb3cd14399beb416a88fa6d23ac6eeaff9923a715081619ef95f1d22492cecc690c1112318a9a22e17aad7744ddc4455b43677d90d4e488371caec927615e481786cb03e5e7230e638c451cc6a639a76f0c60b84c32997bc43fd02536ffd2273233909b0e875045d371f4aa7bec474b259be93b05a1e3a7d966b1147f05bc2c4ddc51c9e1ed9b375547ed80bf29f9d555ef480afe3193a8992d9379296f6718c11434a7cb35e7d09eef99efaf0836cfba22ed7d6016d4b422d3e06e2cc0e8c838b32424245c5f8b7a8a34fba6d25648aaf3e427b51b8e6096d1d29f9f9d6b438846c09043ef7186810a19229e68a3cebab9f11d2edff11ef24cb2594a49c0596389685fc814cd88aaf27dce4404b9c99335dfb721ff1bb24b98f8d468bcb4f9bbec30c3a752b105694a02fbcad9c0417b12741dd75575177822f6ecaa65cb50bbb52a0945be1e1917da1defb455ecddaafac6dc76271604f260cd1ba513bcfc7c34dddc12d2783ebdcfe7562c8261f2649e87f9b6a6cf445cad4acfa937bc893984f93268474746d1c1704fc1375746e4e8691337a943e009185d7c5433a1e83fcc30e68af1c5a25da96663b9e1b569cf7902f72be0d7a34107a4b8a63b60888e97454f5c05c146204179bbfb5794210e77c2c3def784ea2d129d872c61a604866ceb666ac243edad508ea7975ba9159fe11bb2e2c787e55c481e563ba0244187a9157c65850b22f707ec85696d259e71a2d12d1f24b69d30a127049fe96545e961194cafb5da8c90f2fa32ce38db113b1571ec565c37bcbbb78dcf2968a4095f3fdec8f0c24e3419abe84a955c581ae696091543e007a2a0341760ebcbf2a21a2a4a91631230fbad6785951aa4aca3e055027adc34223587036f4e060e2acfb78d14e27bb08da36de42acbadf096be99e997b2baa73fc00a4158e3a9ee01c9b901ac720e3a227ff78f905583a599ed3a8b11e91b30ca4b5053438e8463e9d3e9f9684c0ddfe64fd474886eff0729fff3b24bb7669188f5cc734189e338651b062b5ce74ad3512fa370278cae2d56a8489aa41655c57acffbbaed45743c66a5875e1a0288243b2fb61ed8f162a6eb6e420234ee6f3c9867611ceb6a650bfa1fc1fa27a63ed662161caa71ad65c8b64d0ae2c6399dfb04bbae12128a6ba02cb98ab6888922d213592cc0279a1bbc854f55022ded671304277d2c154b8363c56af39e476887cdcb20bfa03bc62ca6566927c68e9594e99c581361399e305a32d64a48e4b8de61c8731105790f1130376feba7ca6ab3b1fefac08a27a0331aa3407a3551064b3ed7e47b8e9e0a0c8d1e56fb7d4c00a476768fe2c431940fc5afa66ccaccd53981a91f856033a68540eea73de257bda4244455a047d4878803586a3a4ad8fb6505ca5f7c8f081775a844e724b967ac0b895d2e3922548b88987fefe50fddd0442e9004e41528ac8eee91a06285ec8a3abfd91afa52c4a24cf3de2e74582ee2853e341df0ad45090d6872c0b4f8428fa6e9b8c77b122139481dd3a01710a6f5658135b403ad1f642f9df1baaf7764bd6510e2d657b58b118a6799d882852bc288e40ce64d1f8783fecd82265e6a182771e3f8929902e9cffbade5c8f60e2babe28bc92136805602c7a3f1e48aff3774f87e241d4bc4497414222b81062e681df90d87bfd930c71518e0491b7ea1b121002027f95c63d792a9e27c936a74db24f7d1eeb366542a138f9a651587c244d2eb2e5aea082c8178ff38266ce22c682076a0798ce84653c5ce893cd822fc804ba005df709807b91fe213a08dd00106a0fec5c1826299d3efde0de42d7c6e9b4dc6561bb9bcfe526870ad8191add42bcc02baead5bd7f5395d4e84937e3cd29b849dfed20c8fdbb249a239fff72834469ac0d665f5a62205a8dd188a5d69927dc48855d0066dbc6971054131267ab9343ca71dba1d2669a95aa17eaed121cd07322c768ee2e9649df409feeb933584a4f8122e9c0d85810870b04827e9c79b79de57e2f4817d7333b28a2af4b6fa9e05b648b907a5633827afe4ca59bc0825bc74245e6fd17ea0db1358d7b366f91e4961db418e7087475816a8c1de69da03589c53a5a0fb54a0b72713ee4880a90213ace53fa578f11ea7c8e7843f17b4ef588f3bef3ea73a2a39c91059d7300832305839b3be8a9e489e80dc043ecdf3e8811c2cc5bcfde43e7cf7e4f99b50b0cad77a49cc96a671115d1005b7d2e012ea56e19c9b136dd49d0090f29c643a8595a6deba6a24d2c5ac62fbc6c280e1592668adce52b1c06897dc330aafb07164d257db7aa2d0e31e7be39024dff8d8c97f243c00e0f70d578679067e56e502c490bad6b70736d42f467c4f447c93abb03b654e5523ef12ce37909c0f48863eb4a3264202a205232e5432aaf1f32f889d762c940c32e5b0d0b613601fe4f28d1fda8f0961d47d722ae7984e680fc930cce262e1f9dd90d0cd6a1904e83d351e5ea674078ab821432a793048766539a358504f676035cf5652d434cb508b8bc2eb8a2e566cee1ef5f4949b2f91080683b1f57abb9ee87e1f1b4b8404da5e8951841b4f3b32b994a4c6aeed70aea496c38c7c82b991efd6bcb4304b06a8af2157a380dc1bbf4cf2c1e8832287202fd15009c418ae9af7046413ee072d520187202c53543f9bcf007e916bf3fedc68dfcd2e363a95f6a9b1122c2af3a23e284b00361a02f308e7a428eacbf38d30dc4ccfe9ae9bafea33f66ecf699defa034e050f27c5ce68dd496798c1c04917c3a0afa041541dab15293cebde5dd50d6f747f046912d0f0acaeb271684f7154f1b723e3a98e3a16229542cad6dec53dfa0ab924af0c88553a930d0ce816e7e397d4ad856da7d3109425d135c785ae123e211c018fa7b6ba45ad16c8f53b482b3a99c7868ba823d0799d12d95247ea939f94a2a13af7f78585b05a6109557f82035e5db5bc2a121d7a45a4d988bb0a86daf58f69c897e34331bdc1e6e54aa8739e4e700695773df10d9ed4a01da744a3517d887a4c7d4c117e824f739dd1a9bce15f25f7b43902846c62e4ba02c046c4d2901c9d7cdb386be33461cf0b79fa0df0d386e22dcb1800fcc67e9b84422bb8c0ebf674066c375c0c6214e91cc7a99bfd89eb987c591cf2d462628d355e9acd75f7f9d62e4ea8b8e6740d5918e6c0309821389f819841a88e38c284a3f576221cab74b9c6758a252760254d9d72a407fda90a60d5dc868e13797bcd1d81717a0e42fd57985c743f2ecc7dfbd57f2b9a267bdb648c21ce1995b36cac218d6205c682d36858ba740a1b8ca481bfe882871a4d8f2f3bd59abcba713e9379c28fcb521b252b0cbc8d48bdbf1fd755aaf630c047837dadc332973925aaed703ed578a93013a983adf4842145f6442699a5990ac634ecfc77869e584213eb3181b05300f1058933bed69c86163f5549507ecc3363347517dd0ca77cec1a5980238e21d5c7e40a08960bb0922077b2079f82172cd6024af646b2a047bd3ccc921db6d3f8e7e397cbc721cd073480851628eb3f31399e4f9f310d89e4c2d49fa22c5ec5cc46615c27ee0395dd4c3a621e2501572eb441752298d817950d5c396b6f7cab7fed5423f8b5bc3cc7896b68c2062781d0ee5414566e538c3a2f4c8110e49ce8f0ae82318d36c222a608f4bfbbdbbc7e0670ece5f34de89b2d718b7ac9119f0abaeeaeee26533b15a51be2d9125de4994d1442d6efd8c9dc59e4b0cf67f376a8a241947676c7984f81a876da9088710d2b6a960523d72c7920d97ff74aa3b497eb63044121d8e47a1c32e88fef77a29678bb1e0a4c003282103a3c2585840f29e89ce1e0eb9fe6928223162f66765a48c97e6f0c39764e557ebab2d8f407ced12f03b42c141e399e257a010fe2fd7bf4d0dbfcd6d89ac1ead2fac283520a1e34c653e6616345ce879d6d03c0fb8fabef0fa0b88ae81577f2d7a10b2a1b52dc5865a530b7c772e34f12ffaae4c4d7511f3f0fb5afa8b193d4f268f610af5acbaff0f1a0a96407bb039e1564b094944855143e4538a77d0c168c2fd4bef636f7699b1d27bb25bf6d7a64d85b8efbee0ca575c20baeed1d716900b5e89be3c1dccd0d6ace08eb59745119fc140445aa3aa608302e255ffbb19be2dd341a4ffb542552bb29691abd7984c98fa1f79e060f7a27e8f7dbfa6ff9fa71a8342bccfede166b15b1758de1b8288a7dbcf48dc2c91b84b9579c42345a71dcf1324e5eae1bb2b81cad8589e9c79904b88501e4490e421476af11fc8ffb73670bad56d4c5a83a1df58e9fdabcccfc50d86e7b6a56c1c18f0b8159b091a55785da00e621f27f1a212afc52e84b93394608da8f8546288ea310bc5192d85eb22aa406e4553e781bd87edbc3c70a28fe36ac444f5f44d06e9a84e025f6f7a66617920050f9650de0dae04a369caf0737674ec467722895d86c2deddc34ec31baf2bbf0a260be5c4bc02bd50ec4eba0eb52b6c32caa2ce5cf92389820c98c5fb71a495589488535874d0424a2858e91c5c20b6b70c12d4fdeb42c9b210fa17f1c0efd60a2737d7c95c10246e9b726c615d8c395a2a49c8dab329821104f4ab8bf2fed9b1e1c8d459d69c112132637ef08088c1cee50060ab3f2576565293c2b3fa83c8be035239cc0f0cd1a1d8924c5785cf498a923c73dce6d5a0cb61b0719aebcbd67acffb419fdbc3118a3171e6095e9cf92bef1b6af3254e8d20b4308e4eb59dc441122c30be282a361fac34ee8fafbaba8abae63b3403c9ae5e118be40cb05cb35f11ea3aa4b5cd813dddffe2125bf067c0486e3702b30cfa6a7c8bccdf73b538fff3ae14822022466563a1dcf354bae5732e204920726d2477f56e578b63e79369378695189182af30f2aa61ec83fa2f9589238980f1696921645398ab3ff4157d2918d625087190d7d8d823efe723793115c3308db2776b544d40a55db5039d5264fa64b9943454a611f9a70d12adb106484f92e7acd9bfed5bef6cbb49d2d4cd09c8e6cbcc69a56fa2dfb6f9989d5807c5fd5a003e2a656ade3e8a360ab00233229a84664843ffca00721c96081c767693a370faaf034290bdf120fe5667c25c2b20d476e43015f23cad61c24358624b1d74143a60d1fb09297210f18e86f8fa50b6c241bd81f57961118d67a2144da606594b7c2811d0e7b0cc6e176006356dcc3a9bd86a06eeff4b99d15e229a96c41510cbe8081524ceef6579ce32c7f803e82022e4473e5bbf16ab0de88c337a8a878207eb83bcc6c0da0bb0e4bbfc08d6dc904d3d958b120a9cc19bd38b85b1d3da67e82f0715d15c9783fafc56b7feaccc8925581f564d87ad2e74003cad1f399706cf1fc28daa83cac2c9f561d9d4acafea4ecaf9b0d79f50e09767f63ef3a541a836bc094624a5e49e2924b619aab9ad78bcce02353cf3eafe7ccd56b71f35f125de65793245f6c9b834be068f57e252fe12e6e0634899371353c1896959c00c72ca47917897e0d8e6d7fb48db5b3c6b9677ca28312724e9be0bf6acf1195a8192a9c05c1b0dadb4407f661d286dcd223bae6ef18b7821ebfc1934325aecca20ca1ccedf1f87392c15e2367fc050808ae5c3a89f16893b5912d047648e4150476212ac4c9c9ecc5403bfbad92685728af3e2e5dadafe78e599e7d6e9d84a0a5af6ed0a95000a37d77aedb720f4fe566005e0026e0157a6225090e9a8b4fe6ecb6a7be7528a05315a628f0a386f905c1c1daa79ab9a7e2efa763ceb632313e8d2ce84b02ceb822c85cc982da6755679f1985c3af0817198d82794cdf9122d0c06ee7a7a57e751bf0fcab198c7003103c807280f2fc2b61bc193a4bfce2294b08269207cfbaec20032e0a6121901e9a2fd189b3913f153b882da6863ecf8c134a4a3d38c0deb2f04cdf90f9dc81ed7c4aa57d1b93c06c1bd727b9b74bd6fa2b2f4efd31a59363cd095bb46a345bd816949cafd15e1a525d85d8e780d8be670ca858c93fe289245dd6c492e58ec8946c439fbb74d7f6ca755fc7ddaea32d8000b418a7a8a08b9e798f8a34d3beca7661a433c2f92c07fff458eaf175c044cb88080d0191e3f1ec26e0c435dfcd2fa4f532c9d49905b6730701247892c0e9dcb4ed01c35b1b2bae9edecd01396f123db36bfc53df6cd989f558cca6284c796b40ecf123e4bb4bb621209cca5c248a01b423cca436914d85a2305952b7d5313e374fecbc8efadebadaa384da15c2c40669cf0f04179914c8208b90558eb7e604a891f226be042c8d7d8eed821449145961038a10b4363807af16f15db043ee0e983325f52eb8706de2bc7a2afa469d100527647398a5291b63d58c2ef8d09ced8c62060c157cd9896a0496f9fbe4c9964aabcf1cec011839cd63a0bce48fbe30217a0fed1589e86e54957d995b1c65682acabdc1dc9d2ca7d42e913eed21af4ea7cebcafac3a39fa2935ffa1469c3105e8dee7f790bbf74d1c0a496330eea070439ae02dde8af7d95c99da6de3f185f1aff56a3f54ab130ff55cc098fd57f5e163f1f43a4e9f43ddc3510e9f49cd294a4f7dfb929904d7a86f26f0f48475be5b04fdf0823aa4854395c1739221aca2a0624bf0758c241e837c161e2444a4c4f54c25d82f2585b4be2a36659dfbf2541c38731ffbc1a404636bc5fe83bdc877c8a25227e4c0805e56ecd976205aa2a080bbfc0abcc7ea10740903c056fae5703ac87a7eb51138045c8c9c81ae97610b39688a5de3704fe7bb3d11f8fece571835a000c20d16ceb67e895bb41e7ee4347ed0601e7a6a0d222c0986c06b37bf0b2d9e62840158dff4ef147fc59beffe64b481ea012d48c0683bc478fddb33d6546d3912056025eee2f92fa744e33ab53d6e5e64fd956153c8d28b87c06173f4487c4a1dac0c6da0547c1a6581d49250d4681aa7d1e5d17c1ea2491ebaf176c0958765c16ca34475b43fba55a2bc110ac9fa7df22f6f26a12f505512e90799f6cca65ae3ee94836527bbbfd8c3f6e275f5b7b3f2a728025c0cc37dda346287ac2d944f5e59a425d24233fb7b1cd668b91b10cd7981879d8ffaa07bae833d39e8ae9cebba71b23ee93ba8e05e7e164f80fe85105578edc9c971d3bb71fca02a5912fc4c887e33a825fc9937be28560f575a44f6b4e46d70f9405b3f8882652dd6b54db7b41ed02383377602f0fcd2232cf5dcadde75c89f37e4dd849c61262638dec95092dbfaa32bdcd14e588294f049f4ff183e3a7aa31fc57dab79abcddf10d964a2c671d3a4e53777de5ded7835bf0020422c2b456d5ee3b84f36451895799b5f0be43e5c3699875c7bece096dc680b86bedbe26bad5901690d391bbf3c42fdb2d46dd07048b045d78496dd13ac2a85ecbd0a3a5d36b4c89a9fed9d3167faddbb3dc9d50396b0e62df37dd8174ac0fa26cbbf1b1abc5e0650851a87129cbbc057800afdf1ebf0ecc1714862fd86e878878186b24a6c769ab3f828b1de8edde11864805f9f71689f85283623e9cf801792227586f8e783266cd9f1aa3b17c93b912378463cdeed4786c649cf99b753f961313fbe7195712f82dd8e4aa44ae58d0b60d13dedbbca74935ba0e30031bd6fbb5f3f5240684b3bc8eb947123bd7ca9540a7e1095647ca87f192d42ea592f88834cf49c988db0d5b4b409ef6c3f8d6f92301331dd9b3b3286de7885e90df45748c5a7fb0fc4cc14819c9754f31c6bbd0918d4e57f552066c1da5bca5d916e05a8a552aa446af673e742644c03e878243f1e59d00c5a5c115c588c55127b3a6adc95c54838c00628199e1309c0e6730feeedf428f48ba5bc0ab363e198f3f4def498d17fd51e73b3fa382c32fe48392bd2f3c7d4f48055f3a22107dd77571d86bc238247da21bf716ceebeb1c45e39c0b5d61b354994526e2292bc7528079a9aab402ddccde784356afd06044539e99734dd2b110e4230ca22d442e2f2788902a44c6a8f7dfccfd023774f2d4b2c5ba84898b5c0a4c71d8c248d2b5794f828cdcbb156d8f6f8315a1cf424d22d0eaf83543212f84d1a2fbd7d9020339a1c7dc2482d5f1fa045d6b02c29dc2ad720099ce3556701e93af811b1d46ed8c1239a4d87e6397fce1f918ebab6b3917b87e48ba16bdc3fbe9394ac5c611f145096af3010524f70e1eb2b2f81bb5476b477ed35be6660884926e72c09ca2e2979c8cdd9283e27ca9457748f303f2bb5760ffcd7e3d6f25392e0e4c482b550d24c4de68910ed8ba87d00114de3296b0bd97050fa9ac768550543a43d6cbdd7112ccb5644e051f36efdad59ce7606ccf18729540ee88546c2f0b4cd7a87047e1b94e91c4e38a1633b4c339df5546039e9938ed167fd2b1969f9851ab779216a06cf1d80224a6932d514a9244dcb1312a127b982a7f2f88b9248e824a6be8453c7597c6d75870818de40d1fbcf95d3ba04056b096dcb0066a6c6c0b8411b7340566cbda1cd47e20dc8e26d2f44ddd2cfb302ac4b5243d551a9ebf136902f21be969262123af8bc1122e313a70c77b431d348e5682887045c6aa82abd4d8697d05ed64237dbefa2d16caa0202ce9396cb88c76dd3f259bc526049b5cd097f82786054a280270e5291a8d3ee65c50cdbc41d357d1990c1739d3b95bdaa8b069f134a112bb03db0853a24db4c0f446e63a9381995c7debf1686b4e997fdc02f6d45040f41207a7386a30b383ac6f5e8ea94fc16802440cd8b0957e97e37a7b97cbd9e8ee135a981ad2fcd0aa77d3bcf98514671668d598c806bd7fd5ede56198a3a3f262211189770e7c0bfa426cf3ba9e00824586bd53e85202edd7e54c32c7321423bb1366a2872f11f399102a8853d6f894dc16e09598bed9f2396dc98c39ecd50860f297c34fc9b510c2560116c3b2ce5662d98d3056ee0ddf5f70c9443d1cb9c6bb84792509fc1c56a48d8f174cb892d108bd4dfc3c4f695f6b63a1162fd7dcda054ab14b745962c6c5f16b96ea45295b3b1022ba69c646782c963f14c86c1f1210d5bf219704559ccbc3caf87c7317df7095a001881246722321a2839480645c355669ae9398ecb01a66f87aa047a8e42e8d39f3b2e65251615d91e9008901f297d289f66ea07806e6772a01aa99a364156e1c1e318bfac92b03317689e10dad8e40364622dc6517f3bc17878a38dbb2ee4b4972378a26a980bfddc4ac389032ec35739f21c666ebeb0861c36918a8f31ae15c9c959b05fcd8acb24cc5b95c204fcba49d3ad0c4921d0e4eff6a52a3b527c00a2bf801f52dcf11274203341a269d2b789a7f01331ccba7cc39909e6631ff79a4e825239356263361f30c68b35ad3f9ae4f44ca61e06ba4aacc91425b80948e98fef54e85925176e7073a9012cb4e0c767e7a4e62d9bac2a5b646ebbd349f244a6af0d4fbd8e9ebb6adb357d965c5818352b2bb87488376045f4377a871bf6b82b789d6ea01badba058db0b0b0a3b19c6e9dad1dcbd74dd9c25e8a2cd10455ffa3dc052e965b43939424cc089271e4eea6ef2a99c99efc491a20fb46b6aaf871324856b3734248e8f9fad605bfa857c947770bce3f41aff7fa1c6397018b3e48755cec69ad6f2a007ac7fa2cdd52b23b4c0946d011c65f93e8c9e0478762b609733db3aafcaaba44573db839422f0719a361fa6ef611ec4367484fb59b87fc579007f2f297ad7b0a8436509f7e78f920463bd0de018b2cd7469da1dd32ae6f4d849aaca049b6879d8f9cc56965450a3e1f3298f777a6f3a069407a56c58236c6ec9c3d0614d937eb254b436c851e45843b672a111310a5e2b532827c20402edbd3224e5e58444527d406d9de6bbcc64d3fb4e6fdcfb83fc4370a9589c90925e8a3d7da02a89902ffe0ebb4fa950a3ddf209ab266245c7bee9da246f297decf08b87328a694d0d43d08c9f97e6b346d6bca2527b0f506a6f17171f7b4f82c6ab488a966e7b506703a2ce57e24e597ae5a46539848b069230c226d77aa9bff62cc3095769bb16c746d1b5178db0a287236b02027149a9f9681d26e9f3c8479efd91c070af009317f95533efbd8bc71b32164fdfe611bdda9e492e3080ebddb39f939d672b8f45b36f6071b53cd957900e285df2c2656635f019f9322c3f8e6a426fb656ccf47dfc9eb2900247836f3e64edebfa65f5cd27527c13499536aff10a8d8cc518e0624679f32ee915663bc98a35fb866edcbe1f4126f202abe81adab108eabf19cdb733e54871a4461db8f2be254073bc807eff704b099a7da71970facacb0b5039ac680ae569565ad17cf73c527b7ac032c947c0d30cf5ab1c5818a347a1dbfe7778d69d0027dddab40dee6728f2b413825a483b9e235aa41409201dce0b80aae8c7121a1ed94b5029ebbd0262dc75492506b38ec360ee8fd685bcff1eb230a28ea320d1872f8a672082c98cd4d58b9e6ad52c418ba74f6a7e851db93e519ca6d955ba711c660e39ca990af95c500bb9c46f5087a7d7b3efd096505f3a2c85c4d3422ec6d5242045bab2b19e0ff8149794c11cab1daa1fce7ad94a7b2bf0906b9aeb313a94c060f04906a27c5164fa3787df58b82a1eb3c3f7312aa3a4bdd4115db347c34739e53ca183649451827b565e10c11308194b92f90a06e98d1eb3f92f4db0c4db48ee844dfd5089d6ba1266cf035ef5cacf49c32a02f8bbdac4f175a483f13cccd8cf081d66e1ec6c3d4177505546a1c358135fc7572381fc28b59ec0e6b878f1904fb96fbde33f33a454efa1a90d9a7335068cdc813d12b2138a67ef5d062e1be74190c31920f49dca8081255b954b236bd50f6bcfe01d4b1b440a5a04529204959323f39cc14c0419d311d7eb750b1b2eb172e774950f85b5739fd1314205ee3686a3ba0b16c5bf9eaf42cb31e9df094e10c606c9efca30500ebe4d88ca2f944008f112e0fb4352cce58aea8931d28651527c7c04635b0d483f94104c23c191c7bb9a131a91dc17394b910e26c4fbb4b76a021f7518a6c6e080f08fdb87a5f814120d1920b8ea241386d59be7baa53ac07957eda015866624dbbb41edf611939507074620023fde409cb85f37e7104a29a787708072a6a5d961ad8fd477735b3ae6997aafd88a1df4be57e9752871090bb0d3aee7963786224c5469686c8808ad6045348c8c9c80efa816d864e3a0a21deab35a454a424abea47809fa8d2839ca09fc9209b17513e1bc1d7296d76f52f0c19cc7604c5755b98704c598fac6502010d153372b3121b904eeceed8faf79c0b2b884b4ad5c06eb6ab65f067a51006a34da24d715a54e10e22f9e754d9cfac48a768350a7d2e26ae5932a10820aabd6a254c92c218984ec3c1fefe645ef741cd296690ec72e436960386ab26cbfc9d83c8c7679289b3820b4af06d449b9944361e2d909e043cc60d033a4120b6da0241da42f713481608d19fe7ea67bc34f3909dc4d6013f6e456c5dc1d83eb62666ce164f0afdb721800c91844469fafe5b9f1d7c11313c536187d33a8363cbe38c4a437808d9fdca1ba2d1599f0e98e8c6f32c983dd3025640cea909a357d9c7b2ac21a2bd2b63cac8745489de96c4ae78332e7153dec43896d7ad38ee578ee37eecb9edd8ea9acd10a93ae6998a11e05180fbd07c35808be611f036c72a91b82f1bf6cceb1e25de16ad112e11458c25eea2eb38e657f8c3239c5bbc2578fe4da18adc04d86fbc53c12605055421e125aabef60b1a8d1ca3e54834cfdfa68ab8a6bc0ce99bb7fb120c21af2766b49c561080260f1b5a984fe7fa73f981a3c2f94ddeafe84bec087f0c8ed15afa60f5af8749eb81098b50d435767cd6fd63551d8cc63c134a99b98bf7b67909fdafffa3d8de08bdabfd5d36a2aec751854d64ea4fff66a2811dcdf9a8d15ef9fecd90ac1db52c1443ade820e982e37ba3e2a0aafc3764c745d8b3205bfb6ee27e70db75dfc6b313c296e00df3e86a0a8021421e3ae4e834bf83127f15de32c738fc926476bb81feb36e55fbb781f3b081d7e0788cc38fa9f49de23b692e8d962123d74256f9682aedcccde8fb5bb49dfcb60831d7cbffa01dc142c4769e69c0c13831ef36022c8b62c492a4a520e57c3f395745e6df2f0b63d4c27e2ef45518736db7cc2360922cc724c78f98b024eec3cb8121e5a81a0852a209047ed4d6e20b0f1597720db725b2bc76aed084034ccfa81028149b750ea7dc51feadb390c02ae8909e5ed0e5aa2093876def42d06656a6e92ea065d325883164bfbb092de59f07108f02afe2d4abd850bd8818985f1ae4295e1960b49bd587a42f2a7481e8435c3ee086672b1185f3885d50c1a7dffc0de104a7a5308e9a510192c1a6261db47e8e478fa5752eba1ee6690905cc27f8ff8d72ea4ba7e7fc9239e431cc4bfe2cb4f56056cb70e093a8acae9945c8ca347182a255e76e3348e0794bd7dc9357e24a2043ce6d2c48c5c60d641882cac0578db840fb29b089750dffc197c93ec874b9dc95e0283a39c5923449c311d1fe8f9032c69a658825d059f1daa8a526cd465c6d1a0ee4a6bf6891bae752febce73355566ae696a0b0db7774787d916e6b2c1723818f2c640837d7c63c50ded42ec04b44a354c9dc7992d655567126adfa62fd342a0ae3ec1048f6d8f0d12014afd2834696c975bf70ce2897a700bc0d19c9b7dc158056acd9ff13e636bbd39c7a860266b684f6ecfc8c577cf49a7a007edad33a97326c9357ba4afb9d8212d08e375b062a17aa791bb0f8deaed94e74b02c2689642d243b1556cef7894a880ed6eb3fa4d09bdb2550b0712b34b60665fdf326667e96322512302142d5fe25c29fdd4cb692041435e538018e565ffb257b1d8803fae86911a681246e436187792848bea6fe4d73b5f23aff7e5b882a1b08f2068066d11d405e952630456cd6cc2d14aee9335a33a5c877252bab7b494da0f77f0c11e4c69779220cc96873ed79053d95aa30287a8452e22865f7f764fd0193fc115aa0ffa328acd90b320386e19b8981ba158ff8217760e4a3a651ef5e35514aa6ae4d022939422410df0d2271a87bb7dd3c2e58d1f6d234b5ccf75b190d805f87029698441c12b60b31f2b8c3a132a28f82dc9e1ee125d4df78e5193f9eba43ce914c240fde992c1a05b9e9b213567e3716041379d00aa29aaeff0fc5ee46f081cecadbf001fe3b2ced4484ccf71ea6b90837c80d73ae7ee7f743187665ba066ab2c4e90ace7d02c7a5f47efba4e93ff61138ed431f79b5381ea6b90116d8485da41baa833d30f8b6114db450d67eee5b95503c39cf4c1e0e6f352a0ecc00dc308cfb928269e5b28018c9a94c106cf3895be50db0b97751263784e868a00cac3f43d82b1f29f8814ff8c032fe7c6b1c6c0715d898842e1b6f088a7495736e5db763d5a8cd34c3f3c1a1e3870b8a1d170d0006bd43093e64ce6ebb3994fa3395de3bd3fd98bce75a3d216c19c42f9af43df329a73eee28bbc475696be8600ee8b8a138fd33f942b10002f5b52a544480060a5874614e8a539d684477b03fd9c3987b459b371cdf340dac6eb807b8ef7807b8282bac0c3910d3d155d7e99f7cc8b87b172fc6e5f69ee81d8adb9e23f37ffe252b31f36ffa62c99c8311ac175a0a027d239afca20ceea6c9aae8c435155d5cfd2098b5b3bf4e34c920282d2b35b9525c2316f416b3f19dc45427e3f8484324987a0c671f34ee0a726f95af3f21f50e22f1082ff85c366634e67da400a70b09351394d29e16e9942066b087f399dd0fd68113f7b732d5f92cae0798422e22e69a255baec342d7f5bfece97b0286e0c336a4529cfa9f44d06a5a8186c93ebcd1aa1ed46bb1ff7677f4dd606b898fddb1d8b1879a2bca43a444e1a11c4a7882af6547f1a01512502da52a37940111f5698988b50948477e4ca18cca024f6808a6919634d691fb0ff8a5b11c797c382603356062d1dc19f46952505658b24bb40a70cd66dea08b4a82b2c989f439712aaf476e6234340358978eeb52e11bfdc5568ab9b17c508f6569b29e326b7f5802e59b2ac75c22839b1943abbc4944d2cc3e681961d6320798ca16d485260f1dbcce23f839cfcd0fb5479419e1e4bb84cd660668a1db36b96dbe91defb56c5fa96c055ce208517841b59c9801cb9443fda4a3d4b5b63cb1c05c6c17b741d6c5dc56ed01ffda4e4d39a1d81574aec1b6698959137671e757147696c067ca072940d65467398a929e7bcd967354f1b4ef45b260f651e8cc78e1b60492c7061af529a8439d01e4fc04a5bd6211171d918b566ddc89a354f339225bcd481c95ae6f081e200d456efff3827259cd19e2b713a4da986232e74685bf478f73f9c722a509173121d9404278d934cb21a8b4486d31e624fe67ac6b0fb2752f42c486e6b68df6205464c47be26447a3a6c68cfddb338e59406669b6ce30c6516c6f9b1b98cd63cd2b770d053ac51937aed0d2e4d360206100ea587d00010f158a95d5869188f644413084bd6e1b23f04394095226fd7006114c04cb52142c493b54d622a26e3eea827574bfd986e540cc17d070fc2e42b588c4c089e15d89c48680f496adb3b2f3875144fc0c3040049985df68332cdd1adb4d011f741fed9a8ff4539831e42248597b706a2ac06a2073a7a2a3b3ac744b2c2e8c979150691d72d8a8baff080a537e405fd9682045b435ca6cac6758b8553289c653ae48d16c66ffb64165218f115ffce4eac3f76a03438e1c60c367fa244bef9e0d1cc6db75d7399566b2f709460ad50e21ea55eaeaec3a6e3b72d85b7b63981317396f76f5944b7cb51fa915211bafcce3f2aed8bc380ceffde9a560bdf5b694da7aa03652b71811107dbc885771929eb76704c728d98188622f82cd58743d2ea0b066bf75389ca023f028cd2ba1180f60c77200f7dfea1aad9769b368757b9ad42f9c388f0e37d2d006e3fd35b65185f767f6f410ed6ef71ce7e369136069a6aeb54ded7f71097112329ee3ffcce2050a114019e0a4323983a802c1273283ca7204c90fd75a8fe7a59763e8772af792a02c2ba08d014b62cf36418ea7e730d16012870e452b4b9311423f9c935457e2d9cd2af858157936147a6ac8beba889bca76dd03355a17aeb5a9a8afee353cd65ab0766b3583490451fbac2b0ee4594130f16be2b3b7042aa8f6f64713ad84f7365680c089e1b0d4817960bcdaeec25abf78d9cbc3858bd26117ba41f8b51528bc75afecf58c004c61ee7aaa58df40f75449fae4e399d86259d9b61753825403850127bc87a104f059b10aab13068880bd905a88e6bfc40ac519e814448cdf2f940bb29b3ca7e9bea4e712fa99445e54664894e48ac0e8fb399c5ed0d67d4d575353acd17dadf4440775efa3da83a420268562e990b4d048cafd47ba9a36857681da81caa3b89bda7dba2faa6a9049b1e396eb8723558c7222f080dd431786764833027b249cb20ddd54e7826c3474d0cf7431d0f517115939fa08ec6b6aca010d4e7e5617aca1e8849ddf06ee621794fc16d48c6745ceb031c5d1054b5a2b7a0d61e8a74812912a4ae134deb691a40b4e4434a277ad2b5215c47fda7e2e18709a0bbee9e4d977c16619f3fcd1a6c41517bc55720454b9304851c913f9a455913979c1b2c352370c830d196a1c3827119dab792ee6af57e2a9a92829a8c2bf6fbee1adff06febeeec25754e904c26f19f3548f70c752060fe1bd531f5245cb2644810d5488e1e4cbbf11c7e26b0a021bd72d2813256f834e163f740101d78a54d4ef7c8b65b8297aa9ea6aff592cb813d84d676cf42a1622d20ad5f02b7d1fa4ff6e83d6ac142f82bf340353254897824c258f11742cc52a465dc6e6296222b198d651f7153be1802c638c77cd76c56c60270efaa620df03f8a6e1de19ecbda883dee58f69cb113e697b02b2810f715022577a1606088681865940beaf4965dbf8a27773b7a06a1ddb2660748fd209e80ad4174dd9a670ba85a16d8ee391592c98ebe6cb3bcb2383889b11f081de0784e5ba1e798895cdf439bec2fbacd70fffa416f994f8556c48f7c63c3d72376d5cf7c8aca1cce31b86511e0f6339be690e0b51803a98dc31e02f5f1a50871a992473fe1795879a7ab584b6fc4e4dbd99cb19ffcb94f34154a48810f716a3282ad343d9cf3d701df8217be5d38f67b7ac757fade155a388a63fb1b1712d29ca286ef9e51785e3b83b78808259b51f0d26d22d77ddd2a6a752365177c293b1414c080ecdd761afc51bcdc28691a119549a44292d208c329a3663d468b6340ef1cb020016437db9c33840c20dcdf6e2026ae94b545e74ea463087e69a2d4b6d98074770496dddfe4bff4fb6a72c9d7745f730b954d29e8bb0dcf3ba9474f66b67f69a3842c77a12f06d0af557fe7bef11a669f32222b0853821bf51356ad5039a3999bb488393d2d93b9fdecd873de9f461b055d39cc14eb1d71e85f09e29f21660ea24c36bdc38414e4222c104868a0da04ad04cab47856200a203b40735b9c5ed2e2696a03b68b2bf7c24cfd68bec939d98a186100dd2861618173b6da0f410a18c8cd45d138d70a35f75793779e6e5d58b559aaef0c5c4c56f34533ec98f35a2a57b9fb8740350137d150334298cd48a5afd6dd7d1827da18349c9f895ccf1f6975d74d8f383b9364d6467b3ef396b479b417bacb3829259f1594e78eae7b8a6d2ac8efb65a4d21b8eca8050a508733afbdc76a803f4135ecafbf8a0e2a1b68fb293bd06a2edd9cd13085c60dabc360a04b21a9a71e53c730ef5cec03c3eb6c51720ecd6a56aa68359b0e636d68fcd76394d298c0887c65ae748b9e21170529f7515cb0a61d02279e13a519dc38889c24863ed3c3c709fa76069edd3274a00687f27498e30d67f738577a724d84de63a5e17f3c4bd6bd45c6cd26a39196b7c001aa03c2be04df55093012cfc5030a1a63b423d085f0a526a74f6ffd7ad76cf80c8813837f90ed9579ea9b23f1c5bebb6f4e7761ab1c30fd01dbb976eef2f7029e436ce9856691f11c888278aec0fc7d9f523a7f673a3fd436e4b879dc6877c1e43a75775cb47bbf4febd16afd1576645fcd9f8a3db73510c1ca0d0109eb3c05afe72b08f6e8128d318f78e0ccbb6361d0d2a7f9956570f0a7953722023df7dc73318069d36590101d5bb2db4749fe7ec14c1689feed30ddd0714a8009f467fdd4321816002d6a1078811f26241f33fc16649b5f270f1489c3c086f5b94f5f6a3520350010c3e039a4d567c5a300a629c0e1396a682f7c9cf625632cbb9a22891479828fa1568d1bf2f181a9fe218808b4276f8309ae4fcf41b67867bd6a9331b5cafefbcfee1befdabd43174c0001b4901bf0295b0fdeaf4982d04e45bdb6d4dee2d654a5206ad073f07d5075f632865ff4f82672e635465ffa09e7b508f06f5b23f1053f6079598449f955973a2373e2973069739e4650ed9df124b914bd029efc63df86bffc064fa25d842f607c78fe99b224ae095ecdb0448ac7e0109e7c388c2787ae12dd17902430b3b156e14ca952f549c7cc902a5c48d3e8e21c1734637f0f464840b2fd3af22a506e865fa3f69f0fcf09506eba68dce147cfafd8db21ddff51a0547d90ed007f61a9daf1fd907530b123dd9022ef8f7e74db680d6b39e457ae0fbd6cfdbecd1d9bf5dfd3d92e0a44c472cf7936049998eb6a4065a0b12bd58f6716a4102977b2c21265b80e881d68b3f6f77942dc003b7e96a40f82029db01b21efcc8a606b45aff91b24bfab8ff89643329c1e1373ed539e1e830aa75cda3df50f45bd74eddab788074b9f4718acbd1192a4c1b9404433085fa06509569c3491d327ded905f3907ca4d21201c805e3b642027b99f6223b87c01e1544ca998523195fb40c51510ce818ee80dff7ea02a40402611f864d69ae80d2741253aa3d5b2d92cb000060c992c45ce6b4eb0e372f979aa98cafd4f05cbae5807e33cb35cd1905f392782e580705e6ba2efe90795817017571cc5816c707ff9cae57230ce00e9c025c23903d3efaeb5562f79c08ae8007d8152828524e03cd923410f3f1c090209088290e19506974dd554d346cb76842fbe48fa0849d90ef1c30f7f94cd93ed08dff5ae1fb71f37fa3e633b29c1e5d4cd1b8565344d062c23cb3a1c65feafff710bdbcab543fc17e9e3f5e2cbac9aaaab9aa8032e4e5d9b1d70e1356de6b2aff2e803079738d31e0d2edfd5ef018d249895653fb1ec8a503665535155e1cf3fa4744922892047343182e776020d46d61c89e10995dc8d3e8e1cb808b6e978e4fa3ee6e8a192e61c4da39d5bdf300ba85acffaee568b648d730a7dce0396a3c7eb3816992d555ba66e55a60fc32105c17bbb69c90396ef878fc36f48d2a3c9db32650b949ffe8380257a5e79768902952f59da1a33e5f242ed94ae5496c273e76495cb0bf504e642f5d0dc391d65fab74c0ff5ae543861a8c1e57dcaf4ef535bb0072f3166ced8eda48e76bb3299521af658c2aa052fe8c1f751100481e6eba29104837f9b069220d0dc05822080a40c22b84596fdacbfb8a6851ffe7deaa126e911981e0ac958d36e801185e7632438bc178807d02993d0ff7d3843174f68cad7ba3ef0c9176a0ad1879106df24277281b97eabcbfd60fbcd4582491e8e652c7f6e91e5cd75063d9a36b930e58b5b99eeb828654a29fd0b158223eb5b77a4b9fc91c54791c53985c2902cbb45f38fdc96e4013ae57a5542d3f2fc24b8fc4165346df6f0bc553e4028e854fad3c74d8b5d4ac69a56b1d825a5f45dc70d89c074983e35aa1474bab553f62c2cea02817e48ab6581af5a92704912eafb65e184bc469f5628ba6ebf9a60ece312c316c8b25708db37afd984f9607534378a0f0521017d737d58c73df8639a36a67c4d609213b9fe637a30e74478824c79eacad0197ac8f33f29f30625f2b202d8a74f491266d3288e6e1e8b85a398e2227aa391d019fd44f2ab7337a979f4463f21c9ddaf26f445b2a6bc96732216d21fb5709d635d95c9252b08eb8865c4c23dd11bac1456209f723f8c08162e03b1dc2396fd5d359b30f76427eb77ef0a55f88823c0215ca8175f11bf50f5d96cb7a905b715d96a1429d97b6d4f5e8081080d31e476471c0581c1890047e0fae2d8eb5a3c963b29a23f466d45b65ca3680041a6a838a90294e7ee89159290525aceaff7d65aabb5d68ab9d6da70dcab755bcb605c6dfb11a13d43e92cef9d5fbd221a8cb17ff6c306732baed5060458ff8e961ab21771df89202b0ab27feb5a60a64ed39ea5395fce70c009151225b9205094dcbabbe3e4a692fb3be8eeee3acba0ecb3fc4264099265891d161bb2ffa5fd80a18834708630798354f583891e3c51a418e1498185ebc30d716a512e452366f062c41aecee6ec42abb2bbbbbbb7b0d89dc7fe124c9ed1fbb214974afd5451129e46e040c01a24789c91195909bbbd7c9fe44f6efc0dd837c9ac06550a64ffd4ad48b4c5f4f84767ea404da92b36b6505d949ab1723c01198422e026904e3f07bdd092f69da53a66683ab51738f209745ac5c4e2c20c8b99c52407207619a7022e7c68e1ea41f48a4ac60640787a55c955b490b7284091f805092732b6d16d083c4980f4829e18db995d3cd93104c34d90225ce9b5b39793b2d488c2451610d955b05697c88d2e5e6b0d0e556ceaa2b45723f0e24b97757982060c91b2b74986038c274c3651ca325615a9e3b1d9c8c22cf9d6e099e5388a705be60c9d3c5c91359dc7040020c48d440e78c9e32443c20ce1ba5364ca0a851337f6e10e2397f7200e3094b973114e0723da8e0e2f5b0a4cb181412bc8933848915902811818d9a76504752c02ca1737571a61c0f43583d1ea6747131d1421818c01ca9c1cb8e6a8c11a83837b4c006cb93103657714c455a484c3e3c0981a716275e8a302151d51173a367f26441824b142321968af0e99bdb4b1e625e0297336c532baf916bf68b83c0250ed2809df510f818037a63d69083cb19d99f7e1fa801cf962481ba0ee19c4de5aee2ad824b58f61ed63fe89d0dbd31734f6538751c6b6dafdf83dfdf7fcfd2511c55baeaf574e574aaaab5d6da4dbf47f03f1338d8b3478f0e6b424fb2872d4007f6ecd9c3cbb5ff02b65c4912e837af8acea9b36bea1a2bfd7d51368a5ec152d3ba0760ca2945452397d36aea711a8412817ae52f57c2284183122150024c0fd9dfd642f62fc21126fbe758937d27823ad9bf01222465ff1196b2efc2c8c9fe2784e02887ec4f917a68eec43891fd69520fcd1d5412d99fe67a68eec638a176091e8342ac209c224d437088138393398788219830e28d152c2ddcfc6f130d545edded1f3bd2cbee9fc37f4713d5dbcce2cc65edbf93680cd1b758f7beedbd5eb6d7e445da2adbeb31c737966537e5ebf73f7ad41a65dfffb8b96e947d6408464cae0fc16bf77d2cf958dac17af17d2cede867bd8fa51de1f75f1c5ebbdf7a91f4b1b443fc16e9c3e6b5fb2249fa78a62f6dfdf3d6baa4ec234568dafd11bc763fcc833ff7dcc94ff0da95400acb76b0becb7995af4c01f36674e991d7eed324afddcff71d0bbd41f365f226da1b4ca524b1030b544a38dced28df678dd6c96bd799f2fd905e92840f1c01a594daef86e035fffb3ea67b78c76f94f5b3fec7cd87acfb2fe963a9bfe8c7edc70c08f6ffb9cddb1df17803c3254cdfab842595e940b20489072c891af5e820797e0822c84e68da948590c356ca42a00f94bf2c0b21e6b5f93f99fec84df6728fce9d3485e6ffc818a899079d9a94fce128d06e1d42181a4cbf93f274a5c1dddd3d69ce1b56e682f9daefabb5babb18ffd07cb6fa54cfa469c3c86c1be68dfab493e44e829de949b31f7eb6eaf8bef639c37e75e9f8ee65a1709b3dd44b5c4f38c3829e6ca5a6b51217175cde563295f8cda70ca66eeb4491010dd3ee4b4e44d31361b4190c8ba2080b9a7d5194bec0904b9b0f49ecb19179ee7818a27b219c3310b43458cce9db49d29af6020b9e9f7f9f7d91a35e7a9f752bc61802cf9fb953c873e78529d75c621b8689f3694779862db6c8358faaad837902e14247bd4cf1fc276cf2ee0fd9ad0b84e94ea9cb83ea250d16f3ef290c38f87349fb9c460e98072c5bb2fc51dd3dfc23b0fd593443f81c2e6f7ec1c1f6bfeff9d4be4f19a38dd6b424b025632fb0e0e90fd61e9e3fff3e2bebd294695d78349a7fd61f9627a55482de1375a75999b5b42692e56c19e4b94b226771bc5cd6c8f3d5e52a7b41cab6dde91e0f6aadd3e5c17c3bf8738941104c15b9c242a5ca94db7c1c93e88f4003b54215324a656e9396ab82dec472b83fcce1202db89c01e3116b159e9a18b225f76446c80ef7b493614befa969c816dd9312d216dc53ee3a71a1fa3c774c45e6f449e978b522e860f55add2974337ec683fa2d51ec210b1e00f4fffc7bf70b4e118d0b96cbed7bb00dd836e57ecae43525afbd099d9cc89514f25c4b5c4ba68deeec4a7222d7131857928bafa397d10ba969449ad6ae252e2695742d9942fdb2155c4b725f6527255c7e4aa5cbea2af7bba672bba85cbcdcfd2a51c8d586beef7272a24b8af7621c8bfdbb9cc49ecb2977cda30d9856d2c50be3727a7d09813c5f14c19fbd364ac640670cb49429a4f452ea2128b01cd44743e8a305cf39e79c73ce39e79c73ce39e79c6d647545a7a8f4505c9595d414549927ddb44ec080cb9a5fe07059a9f7eb039f5cad53af1f4edafd2a31902b39f5dc3be27edab4296d4c73a8273481620f757b6deb220fd0a9625caf083af50f2c5ec0220b182ad55159b992321db5d6cc43cc34a462957d00e62ad3d1b992943685de549838c2280815376c86d60f7682301183d5925747ed613306c4dca3e61fd9cab4619f8a3dd4e067ab756badf5a7b9d9c440ff8294fcaac812bfefbb53c8561fea224087d966314f17ad2d5e5085fdabeb039a984317ebf77de78f2c19907d2c31ae486a77933d60dacda3a5cbddef6ac26a494a961807a71857dcb18e35edd61fab95ac43c239ab5386105ce21eaa628c36ac874a7acb209f524567fd1e247d4e9f42b57ac7a19547a6309a807d7d58ad72ac0edf7b3328f2afb01c9b3f65d86a941964ff3eab8312b64861da8954a9c593687acd6b3f1a85ee8e13ce39d4f3bb9bba10d3309eda69cd6e8fac10db73610e8147b67e03f120b9bbbbbbbbbbc32b4272bb927a2ea429d403e222928f7ac8256436e9514a7ae9beb17a77777777777725c51eec08526e142cd2e70597eb87a08324c84467d4af0f0e99369c04799842f5f76010052ecfa7b178425fba70098324d2d7189213814c5eab5f310822e5ca22419ed7eafbc33883fb5f5340d01d043ff2c5f46ac232e0f2c594ebfb8ba9896a0f31f590ec36ad8a2fa697aefecba9fe8ba9feab0908677b6dadb53c6095fc28b8c4d9a8ba583241ad24259d74b8a8c9762fc634ff7a5ef39e13814eb4e67f2fc6d4a97793a69afc3f16bb49d971d9c321b8049d5a9802abe80d1f243a63ca89c4f7f7394a81cdcd874c21ffb2e523039decef83446f0029f90c993680749842fefe6291d24786a09ed7fc5bf09c28e8cdacf9074db580b3422c284ff6e7f1b27f09d4a24ef69f3199442d90664bd9673e649f09917d9625cfba649f8920fbcccc6caa05926d81f4345b6d8194fd67534e1443c96b4e2159de22d77f64498b51356bfe2039953d86d39c35f09db203e900a4446fc4a88ab18b3127fbc788338562c065508c38d93f869213c5a88a114369025cf6098eb207aed20a219274e477b44232cd55222cd2228535441b62006e1e222a126b0fd5a68502106bdbb8e12c4f192e0fc09f41e91883c540ff8f65df4321970720886d6edf66339816e334106371464be0876f99ec946c9be697164b7e7d28867e5b5ea6386ce2fa705ca1041c2e748d56491c9b7458c4d1e2dcba80827117e4e9fa48213b45460647abe42e1068b95690bfd1e2ac51d7da4eb1dfd992250372256bb935de0d9a03b136919d472e967059336ec6043166302e1092614150053599042c622b8054c052a0a051607be90070a6daaf23cdddee3da48f69c45d73f1136bfd98e050174330cddf9b1cfdcd7e6f60df3fd6b5463f04c196ae275691d64ae9fc7e9bc521a4afa3c275a56f929a095d7522dce8a9ef060b9d8150dc1c7d434c49555088292bf55aa9ac7a24f78b48bb29dc7453cb582b887bab50ca1a12ceffa27464721ed048f2f9fc448102058affbea6489122c57f7fe79cdfe345180c06fbeff1cfcfcfcf7f0f53a142858aff3e8631fe1eb18cfffb202020a0ef11cb402485a262a44b9af63d6ca4482891a67d8f62a4484dfbf0ff48f0dfe378f1c36fd1c8607ad4b4ef5f26c6c2291b71b8be2cca2fd797b6fc727d49cbaf5789f3abbcf9153e59e2908af8a713fdfc74a2a78dc15f22f987c9f2fe9048b10bccafcf633efe9f510334fffc1c79cc9f8f622c80e79fc7230ffc321368fe79fa33fafc1c3be391ceee974fce484e24017980233aafb1200f70044a24cb588c3cc0119ed7267980234e5e9bb9457eb6a25c7e6faa2a7f57f9fb2ed9b89f0e5f984aac58b47160d58b9459f5ba54e8ee50d2e43c0d521a5ccf2ad3af631fc173d793daf5c0f474997e7577fbf5a2586bed0792b1d2bb615a7b3455a568ede58078993ea5d43a0139798dbe9212135313a5d4674e5aa5e0ebf57a5d65ff9a2b08a6695efa28591248e7352f834b100cd843b3ca89e0809d62a7cf39e7f4c1cbfee2090e770fa22e11448f1e2a2a0158b1e2a40a118a9b93d2f9010a2ac4472cf64fa3551c6aa5744e9fd30018c762ff349acd66eba0c8c50ab89cbc10eec5388647072af39584184ea16ea259d75a46d3b0605bd9a331a0376c8b0ef60f6a1a8c0a97b61cdae69d37c265f55710ee43421f9fd944f603efcff12909df4dbf843a1de11cf7e058777fe13d89649ee028c954537259f38433039ca33a62d3ee21ed7ab8f16a0ad9a5b142274583660b1a1dd9249c3fe79c93520da6507f0632aabc0f312618544365a0c1b471a65723f75f5890c8cb652ce88c2e97b35cd66c7334613b996a63c50c131aa53c776892269a2079eecee8c9f38c556ee5b93bc3c4c473a7c668eea2a87219cbf327cf5d148fb657fb8197d50a45d7cb47a4f807c50f0a9109858b528a2205d5010173b957ffea0a5588d4679b9c0a20154053da0ce97009d00aa015417434ac88ad88b5f980b5621163d1268527246021c1c563ad24904920838a4a83d948b129e39a9289a2288ab220364f4468f1f1f1f169e18207172f5cbc6063456423e5069dc1e10c9217ffe2711a286798d4142952a4f8b112f1815154a142858a910cf590e28a152b569030ae58c582050b163066e11a994c368b515965e8103b0a26a080c7e68621aabc78f1e20505b45b7fa0d568353649154a4da4632b043060c0a8c00258d362c48811c302196c8eaa0c91e611ba40e88235576ba89aca542831ce05332e98f1f1a8918bcb8d9a619b61c35f6c346c34b0ac0882060634305833650d94ec4f95b2fb9a251800000300d434380900350050230c73d71041aa21ce983163468d00ac3112c22800220d1a346804606827657567888aa888a8e80d992201140960271525001b02b0b1930ab393d2c2db49e96cdcb071836927a5436c274544cae82a871b19dcc8608ace4e4d9a0c34c8400334533b3561766a785658d060030d3650a3039b1e0daf4504ab51527343a62feec850eda2f4d8ab0dc41b376edcd88003a0280e440d34d040030e70c09a4671881c70c0018b838a235f5802a0c2d90cd5567b26c84b0fa5d47e5461cfdd3f90073a596b2d789bcc28812008ba99243348221dcd04e912eeb80421011bfbca6b1e2ac1b7d53b8858f07ec8b92891193639fa0f287d8da122f4102883088a48935b48c125c6a540c2b806f41025653a5290386a0761188615f09ac9873a3e4cb942a7b8178cc2afdbba0ef0bd90cbe1877414bf5d0810df9f521c4da3e25732073ec24624e6e1124e106104fa8fa35f22d8c88d71d3067efbf3f3968ee50c1d16bebd29c6221bed1fc5cf87258a316cf7a7fef3f3f687a4e1318420b894f1bc12e38ac2c738a31e7a3d0833fbd3a736192565d428e31fc27ea0e0b27d485cd2079bd0c01061b63ca1f3650a99dfa18616a0b090a40210d895d6b3be04eff1e5d6f4e9d3c3673d1dcb1e5f0e1fac792c1b47715057bc2aa7295d0fa73b7282724a29657d68828fdc6a99e0b9c56a7dab06cd77b4c91853821d4327f08f2649c88839c2640438108980911dac7a719410a284682281d4c35eb1925b06ed5d01d35758daa98ca6921bf790079ec880614a210dd59c5bff094e44012068984ac274058f9e5bbf08de3f8297f03acaf46f29c679c3483f1da4bbdf67adb5df67fdc90419a327d3de2af7cf64e4ea0281e6398f304209eef61a02f7bfc060d64f970358ffdae13b8675aa742e7cc0e5bd1984efc12904f2c83c603e36b9b7d62cc296e82feaff7edacc13ce4934896a11f859fb1f6dfaf4e95e6bb761ad30c6cb0c88120522c73235d23c4a43301ae4723695c8a58cb246063eb99c58703903b334d8e25183c1396cee50e53226064be572cea2702cf677a07269e37d2b8473762d0b466c160b7a2bddac04491eb39ca30823c7910304ab74ec9d8805c5783802c119b8248320f8b058f398c5662e63b60f9ac5624fb303e60e12f9e6b9bba32597363085ea7790e8d0458522a80b4baef42e899c97ea55071c94b2d47a83007792e68c49803b47a6d0cc657bff9c437627e5069e07f3430245924eda6cddc1550de1125f3bb91fdbe9e57e98f8b12ef8d5178844d37ec260b08b949d2c6bf010b9c4b33176a64c61d61330cf9d9d25b9a415c1e1d5675620586346c60e925ce259993a4679d6c64e52bd7640904bda9401a2acf24811f2d40310f38e9c1caaa0494266051fe61471e7ec7c6e9d3cdf1d1c1de4b0a09afee2e8505011d84962c77c524035e09c26db860046bc71d244cd0c21c02346c55084c9151594acb98177ce0eac6b65abf70b8e9d1c3914b1874c1c385594dc908306334c5c5862e4448a9c281672f2c8b87470e4003188e57cc1728ac09f9c1b52c891f213830f868d69c1c1d1418e38553e210ea615a78c0f784705162b021442f01b3947a014508d9c14c09f1eeae4f9f68020954f0cd7599231913c18562683601c211904710cc330f841d54b82551f1d918aa9833427ecafe55efd63ddd667abbff2dc59d9d121ac31a1ecd790057913574d1ccde6e072ea0c00de2190c4d101f8b329835fa56410041fc7980304893008823fbf64108cf3430641107c5b0ff128c278b08caed162230ccfe8e4c0b1b70263d5cb3c32dfcc0ea63184e072f6b9a59ffde8d758ae236c7607772f5dffbee9946314c1fe76aced54801792263976a899308cc10497b33e08524a29a594ca26f9a3a2d0ed44f4b0454e29a54ddddde9bbd3267bd04c1b6a563beb086a9223359b5d155dcf3a502cd9224311a5d4bd71b4b730cb331b018fa2999e0b14011941cd028c2491224609141243ccb973a60b9b2359aedac0a9809bf973845e05ae1cfaf3d28f39ddb830714185256a783c31b78a0351943062c6ce923c20b8cd9f15483275c39c20903c81bb62454c0f3b441dd10415337482dc3850ac6d72c78869decb74935e6282489c1c0f76b818e9987264e649163562862cbd9aa069f61c45d143c5893c3038596207262d4fb6e4e804e10347c9f11b274e830c5e70d005e941861eaae87a2873f5030d3554a5b9544feaf75509c16f9cb041b38b9ac2d2c491131aaab4c8b0a7ca992a2fce8493198748539e282b1b902618356580d8c345053347541151dd40518244a50d0b55d08441e3c11730706aa88188de0f56595c534a7892bcb5d65a6bdf5a6b4503448912c2662ad782d1b46a82b34392a8316d96d6b884b06d68f8abb3bc5249430009b3039a176c931c94ac71610617ac8c6ef6e79c6ced9c3cd95a36d95afb9113f64e660250a8666082442e8a9103a63009824394559416ab2ae15dd3247f6978f811449025537a46ccc933c5029aa31eb0bc49e3e60e1d243f524ebeabe6065ae5c6e755931984020b5739a07972428f0d05b00127a504c86e0625e8ec5e514d6461e6e0b648354972e287276e8054e17227052673c6a499cdffbeeffb664ee0efe9074db8c113c6883b39dcad8ce5efb113fdf06109252724385644b0c2edfb596544fe5eec21317fbdfc7d6f2349718607cf5c5f9cb3fac4635a8698ffc34799915fda60fc1cedd2b401be65628be4f9429e6f834c1b3eff2ebec5cf9fb56adac05fe5d439954e9e5fad6a9d3cbfdac9f50ed414af97a7139413f955597159c5ac49f3cbaa94278b9f3127275a41a7ae68af8a4ed1d735393165dae444540929479394e8573d993ed2d551954fd5ab26aa567d82138dd000fa3af040ab622ba2c8c9141a695ea30f632cf21a7d72acbd29f47ad7288e730a891f8ead9135de31f419699ef41b876c8fa6d04c53a3325593a954a66b2a9bda26d30f83467afbf1632d82e655b623062848eac418e59ed285a1f2a97ae435fa2cc61a1b2b93d7e8af182bd0587314f6c3a7c51ac2d0675aa4a6396d8680026d7ae7fbe1c04d93aa5b485df8806ed6b47009c79a169b423e7e84b47075fbc86bed5bd24708e7f691385cc2b52b9dd67553a4e46e760ce1dca68013bc2db67882a9c5fe2d7fd0bfefa36ea9d8f3b3f5823f26a4edd5cea058ec6b18c6d386e7d97ad66d89f5facc0cebfbc0b783130c8ac56e5fd66ddd7baf5f180b63967845fab15a2c168bc5d2d1b50c9d42f5adbdadda0aa79dd57bce4959b5f64d2208961db7d5567fe2635dead5067bc1fa813ab42a6ece39e79c733a6e7a75e29bf5888f735a5bc910bc5beb46586f7dc0ccb711edd6ba7bcb06ec6ec6ba7b4b8a191b5a46b07b99d692324decc25c69317d51d768345ac38a62fc42738226110d0f1669f706afdf35cb136588786b82ef4f3dcfa4514f610ed12b253d39ab24aa3299a8718e737a8f2e6e0479798c327d9ac254a24a3aa27a40fa514a29a594524a69123cbfb4b89eddc27d70be7ffef754a60386651aeb1a8551e1ea83064f2c767e65a2414fe0f97556efa36c71b40e159649b544956bf21a7d9dcec969fe2cd1166b0a2aedabdda7b8760f6f0ef10c9b74c1b0f57285a315d29836f5106e1e05f58b8c9b402e9aa864fa4d458b63e53934274d85eb832f5fd2c7d85c6231a70d21998c398145f21afda4a45c8e364571f1e261b0de1f5ce1f200bc3788f5f702f9a5f91b2b26c5bfe255e12bdcc58af3db622946104e766bb1a50a2c0092a1228ad005289a949c40618a3981d2c404c54913d307e523ad926bbc2dd68c1f1ba6e1f3f807165b82c17e3e06c318bc94928c2071110597d50812a51c12234a39244900089d62a844ad975535cb90d808040000006315002020100a0704028138249486eaac7c14000c70923e705c36978843310ca328086218c618448c010810638c41a6a6860a0040a8655c1bd16ad2e41830434709442b08f5a60676e05b6db74e61b82185336a58f2ea79fdce6f4aec1049a609cdee48a846847b45ded9da929763204a8037f06307d53d425bc71f609da143288f74c9fa30a2229397b89ebcb88c7ba4643a142439e209b6da564fc3bdd26abe3b701bb2fb9b66e1bd627fe158f518d2aeb667c4c87f769d4110954f4094b16a4bb054d57068653ba88f4a6c26cbc37e6b979566a2b7eaecdcab30d14d50306a369ef69663f50739a8a0c7b189e685be2f4e97081c35edbdb2a4297ab183c9970df1e0ef782dfaf36a635a8fe34323ac52357ffb98f2ac8f11109864ef644f161d6b1bd22fdbe680eccbc4acfbf2ebb54a6053c7905c525ba6202cdd5a5943977121800ca1eeaaf1df4d9a320bf923b991cd700b4495897381793d5b297cb17a06a420a5d0b4a124d692edcacc6881a2aa47c73ed43312f04827822a0e8a8137de8a781b11f27a2ac3bff12847ff785dc617f9877b62abb22868e1fd436a2ea25e76520ddcc769623f5b7363ca54f08b652e48cccf559c5d50bfdb8fd539018817600c3ae011ed047a3fe60e02cfa0244b9f572662091ade3095f5579f9ee36f70a391693b021a8507549a39bee3491d1320535f0fc88e30de3977f6562b762d863980aec07a83ff9f857ca8ea06a01319003d68c736f5ba51167316497a34eaa55124e3d22bef62e410a5eba36f06114eb6aef91427c8d0bbb4d39b11012873ca35995f21b244c2fc159eabbcc86091c76cec0f65a363b234af4182a92b05e73b3d0b7d9a6feb2f574ffa2ce4519020e8806bc3ada577889d848e6ece110feac6b09a7b4d06ba12dc363175900b97de7f9d71b691e5bb2b58cecd87dbb594809e233720142e24400b67eee3454d5a97dc6ec2ff6b1e165c38a9396c32f62209191ff3a5b7a9d24dabbf5cffb8fd51c2a8b7bd1511356d736dcda026c9b8cc46e62d6893cb9bbf6b89e613d829e758654fbf94057c9af4ad29e6432c7038ed5cb7589869ee1b18e2c01ed3f4baa1149e478d7f2fd7430681533b50a5e70bfffd43ed5056048ffc47498d605fe8a1f0db749ca151bd017bdc1ff4163320f9a04ecf45da6614667f5f9c5b1f1c4c05941c7ca8c8e881e826b503f61a2e57eed0ba7ed9bd9bd908827af0107157ee2bdcba904fc78cbbd7aed4376df247b058e87d09b14bd2f3e343ab01367ad370604a5d2654f51f6f318d29f834d48cc0c8aad905795103bc7fa12509a9fdec2a47215f15c913e41992a36469421b74a132ab26200deb579f2a430503d9806fb3c81d7ac47dbc104a4cb3801a534488bc4cd3ba421e02b2959419cb3f41b6ecc270d2ee40858a8a6f42d7ff77853b40ad8d986bec47be86c8762c086afd0dfed2b61278bc724b5e6a1a722455b2a18fa3d6f3aee995d7f9c0d1523025dfe4255fc40056c2a5ce9370c4ee64d0ae92ca076ca31382d853e482b6e710c2917b98753bc7d58703364dce28568ae84ae06c08193e131d3dc640d0751841a25264c4008251c6fc812b7c30e8f4d424a549f679f814cbe85c7af68bca0d9dfdc9b346a5d191a71d2c4bdd9fcd6605786ca247768a584ab9b506951b9be1b7e9150aa815f728dbe319eea0487f11dba8e2cf22612b66c521bfffc2a9bb82cb25bb116910eb82756f70f027f1b08b71599a96cac5c904ff5b4e5684b01d20c59a703ac09e2e340c43a2b7c9b30ab7c2edcf6f1b407b01c9634cec0097e4365f223219ad3850163d3a1e3bcc00ad387afa830d088b560545c6a8b6e1a3f066a1d4fdb30f7906a04c20359da45bf9fb14d73beeb0604d4e81cfe93e230bc394b6edc1ac2d2daf8f3894050014cc436d8c1b651d694c8d03e40596eb2b227018f4811f227f6d29fee82591b334e8e43aa7b4b25dcd818725221d6491010e88298c752e031d2596d971a4629a9486de91f7fe07b0187f443e1b19509f82644449fb34fd4da5797bc4c554de5a563fda8928d73ac8e65a414c4e0906111b5cd8256b0d71641a37032a6ca66f83471c3c0feb1d7d981ac529c9d5b1748b505ce948583c8ae091b96e8fddc2d0883b56e9f0959140c6deb2226ebd4e2fa36b8cd85a3dd48493b67b12897fd788fceeece94708250e1524d19f048eb64c8ac43ee586a1bbf3dc663d6c5ce4197f57be2d055575d1b130d4df618067321ef8adf93dcf0afc29c0fcd1286e072ce0cce7072e15676ea2756ef14174850b4efb657f6eaeca19344ad71629810ce0cbd51d977c1f7ebcaddc7433f79829c72a6130ab6f0af30fc0214e783f8fb199d06f0dbd43d8fe6f4c93d069689a992914dbcc657af700104d489dc34edb7394805b142c863f9fb90a73c0a0192eaa8f23e5b31e5b53751065250a80114fb2d7c8e86c2feaaac5eecd2b14ecec4d7dae8bcba5c0b904b7e69d939b9ce98ab291b4dd762b56361c12405bca33c91e90d8e2f21740f8e89e6354c37f465594f155b67dd958ca4b08a3981c1ccbce360b5293ce883df9a02997804469553683bbb0fa5ac47beaef155fcda04b56156cb4623cd02f430f7c90d36cb04cc1ed8958795724f7f989f0154c6f7dc765b986db6cd3560bf4ed359722062844233322b9ab2d46cac12ca69c28ad04624da1b96f0617d9b1118b4f242581c4896d40609c88856dc493b90d3874ac5b1dd06f1f0667366d8c249a3573fa6b37c792adb8582401876864922549dd963d524329c66702217a7d7dd18a4e67d3c7a8b4f537626f666269098a9d34b202d34c26f51bd81f71ed3b2ea2045c95114d090a2fd103ff4184560cb7887ff295d13b98de9a2bae8a3fc3df041aabf56a824a419a43ee81b87b575ace41a4c12efa63469aa4a58b4eb0da1f404e3ed979afa1f3b69a31cb4b9d8e130df5aff476612dc7f996917463bf0b2048f0a755f6b48b4a9dbd0ec1bd7395db7868ae60fa6e361a9fc938c96e20830ea32f9ae373624466ca048dd447918abc2613e18d336422b909588a4e0362a97ded94385f9d2c06732f4b4cf61253a1314ad8652f06c8070b2bda9ed58b757d2a0e86983d4968350bb283180c010fb77331cc6b1d7ade89d0328f3efc5a1d337366e9690ac1f3d969acbfe17218a619f5aedfcc67fc04c2ff18f79507d31cb740dfa46759063482a33b7ca81e46d73136776bcc9a02cc68f2ab9c6368c0a1dd29d8f49d3048270a4da1b42956db06c2ea40488233cbca469e1e02281849fa457ad2103cfcbc9b012904810796a9b19ef74e58ac6f6aed28a0f86e7fea260e5af9b3628baaaa00e2a436034d863062c7070c8e1ab59ed700c414e65d0753dc40955b4da9189e5e3af17aa2f4e0ffb2647f7fc99e106229b4bf82a2ac4b360fa6e1b7c41d176dc2bc85d6d400486e132b8e0a807476ea1f1c3c5fa5af02c645853644883413f62f9e1cc6ac12c846e776f9d6150eedec83aaf36f4473fe73a97b300019cb4b76220b8ad2771ff6824fde3d9b25c108b26d4adb18144f981ac15a5519f338e48f446e0672df212d7bf5fbff4b16d34a4fbec44664ea48a36015b75de139784fbff905d467bb780a296a1c63cd017fd2a203e765d5ac6ad9c1c79155d8fbeba2764d088ad639b3cf86143288f7c0fbcf0ec59a7dbcc8df8bab05551c182e0833ce9edfc35a7454e6913d1f52bfac3d7d78ae799c317eed6474a6b05129d128abe9d84d4a6df2b01d119fcaf16e474cf449a9f70ea24ab0c39bdd46b0c09a5e997c4a93d224ed92704d7f6476ee8fe4d9cc801ca2e56ebcca0d60472b27dab3588549aff70eb538223736f4838cfe309695fbf00e67409712c39be080c22665c07c46333218d685519b42dd3ee88761cbb263a4bb6debcd05fbc896596005644d2902ee5135729d248130ee032f0a35f595ef97cd7d0bda6a8bea041d649f8804ae08f7f896840aa92655d48cd34cdfcc6af050deacf19b41a139f04dbda1f2f3e07d51d261efb9513a8cbd1b17f5dd60ad664d8d9ff7f2f1f479080f34d23931480ae40d72903b3e818dafa4735947012ac9feb5e8656c601f22276390f796265bdea0859038b2af5845df8d4e7ff32494aed1ea9a132faf753d6ba68d297095026ec0d37a4ffd9a18964ed958b22da5a0d84505178ad56aed2240f7082420193a95bf11154802454d949a8186496a4348169a861bde6b58c0447f1c45dc21aefa6597f8d48be7158430e481f5ca575d7553e6ddf59602d662a5d67fda0b5487a2488718e06b1a60b04e3737ee9b8f3bc98629a27fcfbea6f0df6c95b7b126113f5bccb1a648e5d6d639577271ebdefcec428047420dce94115af987239ba94032a5eeabdf168313c6249b78354363360d11300ec0d6ef64e6bdcb37f9bd8e4027ddd3486164a166d900306ce83cc1847be453b5634317b76f6b0b7cf4c1481f5fff3d7241c758330e7e774869ab9ffb225d1bfdb1ede8eec517c74601712c15039f32775560c45b725be8b83e06e3e73195e3f0928ee0060379ecf3e8c80db7779852f3e6aa8c6043248277a3fb60c6a19bae31ab9087a8540b0f7a316fef73e815259240433e2a0fac14058ca85da97e40c73c82d11d460a47f8a386c62ae909630bee5b03538c4ecc59fc06f360a5b931bbcd5082f15a993be35d71e77bee1706b746a92eb515e72d5d79cf5237419aba3de57d6593f540f2a158224d04610040cfa3880855a548b8518410c96cbd91064e47eaad728dec0d25a413061ea381d3474a7381143f9c8c8b697fa67d0c54b398b520a99ff77be4a4d34e9657b8eef437f6b32e3a9615d6ca8aa228b134a9f119fcb66d76fe2d8da5b56a724e8d5d0232ab1f01aa8c3c1fde3195c5a728afec7e0961c7a24acf5f5a8b4ed31231e2e03e975db68a95b0a934779a198d149a4bf2c96ab8d61cab613990ea9cb456197ae1b94a2e1a6b3495007708d842e9d510efd78360c81bcac1c5bdfa72bf5d1fdaa2d86a8e7d5414afda503db586eb73ab83eb03da1673a14cdaa0add5f5d0352cfa99615da861755291a0606e53ad248478235d1a542b3e975d19c5f276bb12860a55413cf1bf57f8580e4e0531596387ccd948672dde0e3c16a306230e50ced9a8493e8c0e47fd00f773679091d501f2a58a6d93b69c6e94d07422d8b3e1ef510480e7568e15280def0e83c191fba6a48886968d2a4a0ba4b4b28b6aeca438398583a60919809780b8e23f64818a6134b42c23eab75c7171f6178db733981a2d92b1f32db33e8828f9f184dbb7f3813aca4983641d192e4582da7172ca437f56de54f835c289aea57bdcfd93bc4d7fcd70361c3d49a0065b7fed9a350450ec02dd853f40cc44d03adf1b65680882378abb1786a7fb41bd802773225543e981bea71be252a6730303c658a542939e53ca374844f8cd6d26b9a8691802136da84c9cf457ba55dd13f9bfb290ae56e59cec8c0dfbac335e3d44c0762f93f1b30e7b09ae2c91543cab9193255ef50cbaac8372b5550c376b4b66426d1e3a069e9a9c5f4fd4be641f2fb454c740faeee46eba9288b60c9550daac7c2990280039d8c3022898194ee2056808de5c953746b1e188de4f6866d936d03abf20ae31914bfe4666bfa1fdf62611f4985d97d8d1b2f2378b05c0724ea64daf4ff92750f5a0bace796fcaef4bab5a569a64cc7d56872dbdb738b7e828e98ab5fe4aafde780ba6369e96409386515f677baec16ecc29f784df0f55174e19f8016bbf7ee61ec664a55607d557dd5cf38a17f3408ed424b1c58ca7b5eca759d5bc5514b18788d7d7c54a823299b0c155d8b49b0676c34c12e46e09cb4a0d726e11a3a1a3fecea42219b04c7d7ad40863f0f9ae7161873a6c8231ecd913b87ea9c772f6343e9ff9de013a5b4250ed47b5b3e8085be8a5b32f022be81cf3822fc0ac7183e543eb24e77094064667b37787509374a4b27de4bf67cd00d4c5f310101eced1a6383e55f014b88368efc97dcdf15f02a8a8bd78a0ba77d9d98e38231928afb832414483018d1cf5005de8629e2b405fc5501a2c41a3710f6dbeca74ec20ebbc82db749afafb86bd9b57ff7ba55dbd0d9b95be8c52d5971eeb44c643e01d09d473c430a69fc2b295d293cd0e1c61eee0b2c27aeb86e96d9468b61171b316e73cb7e6c9831576a2cf5b5395d398b2500b64fbc3b31906b2260c26196b6270183c7e8718217981f50f24e28029662a54343b8639b55c686717d516d2211e38479d14eb2507007ae09134d581d1486ff3ae378d3b9413e05b3437f2acc85ae1a0e31188005b47b656b505928f0e8f9adc98135137e6d9b611bb01d14b6d0c2500059447a3d7953ccf49cb389120b222058544a249a7bda46ec184dd907b57c7cd195f4921a163ac70b0bd7030d22970e9706ccb6ba3f1a380299ccc0855c2ccf9f704d8a0c100256ae9d53edb36ca7fca32542d2ef4ac17f28b0ec6393b3bdde382b82cc4d26275228974bf66e30a1def1fadae8156b68982c52ee873b3b6807fe8c331a2ca68505a8aad42f16e41d8befe144f7dee2d4c5c798a7b6dd9d81e3ef090cf719ddf19cf3f2b4ce4ce8690c53cfc1b7e10b7bfdee09654aedeb7736768cf5feb16373e7fc10013c545b70260e1bfcb23665a9f23e36a37e270229382430bf23243eb8997d016ddd0b01019aa049de41f297450dc5827146fe74752074c9c35c6e1a462872c55dda5732b0ef3e65deb03193b186021eb787ba6ca82b0d9c49529ec31d5eb87f03ff169ff438fc5eaa564048b5ee1acc6239b54cf080b4f117a86c6fba1363799430273072ff944d4e54d523b3b1100f328b05cf3e43333e84529c2622a64257c76823822ab1070e57358985994e6bc6ec7a4dd8a072959e93a2264b8868675609b13e547da628a88498b4b30c239a16736e1c3fbd3f851e7d45d50a0017417dfd9dcab55ad75954930d4f78cb9174a4e1220f9a3c2ca40375d7b61105314a26f432b0116114200d73a6f3fb3767c9b7baf7f0e091108226086fb0a97e02061795d6f3407089eb3d8f00290e64bfabdb339543faf08a497d368f3060248e4d2df844397fcaf97b5d0d260f9e27e9a0be595323943f8dd0d0f110e7226a698674bc619d7db1d8924126177b169707306c8cd342ed9041bf568e2d6b985ec09929f5f6a0ada1933b03373f73e8b39d64701f200f5109c8fdcb7a987ca099929750ef6de1ba58994208bd6efeecdf98a25c5a02da50b87d1c33d5fd625827df04828bdbd4724b6c5d864e8dc5c6a4480746113c565ed03daa0d15e40c597a2053c3521012480ce7cd96258d370b156ddbf2f24621314ad3cf1b39f2e9d12c5f55a35a536f0ddaa88012aef0bea192e96db1182c09d18d6c682a90c3631f8174772112232e684786360835346da7c7bb3ce2b2c8eb5a033927d2f1918a7924ff8b2cbbc650f980858df1b8dbd5e6fc547690f56308300eaed7423dadcd13b7b91fdc8d2e07bccd38fbc535412c8e0b66966b777d673a6dd0c996739ce08d56468608027b260fa609d196be56f81826237f0eafa780914816b7d72035461b7318d23b56f2bd9f0ab342bed50ff05af0675b5a3a6b68c187a0180d9ad204829771dee1acabf0b407a6e8c0e77af43f4beffa72713c446c58af71574fc9de9df9bb71e3ff63a719bb78f8dd83d26539548d3967ab3148fc3f2fc14cbf02f3dd2b9d303e5192e5eecb6ec52ac7247e8edbdc36928585d733e1c7f262d52218ffd4c0382267c6a95bfe4268e8f9f7eec1c083806710936fd6c8f11f5e0ad3d99bd172676d13e82e6998a23079ef1f1dab63a1f30d5d16a2393e54f7e2df833a7e458e6aba332d7916e23db6967cdc5d08b0dda15052865926c66c24c93e5ed6df9d2f45e6dd19028612baaea387007875172c202d57f27add4e94d6c347d14016a1b59c52f8065630b00c9aafe0a55f4459795bfe4e3265266cb9053768e51561b688bebeddf35b8b72a62118097c7ff0394f206f596f0a1552db1437cdf294a2c9825fca02042afddce782e0533fd1d42e7e673c29fb711f1aa2e3985fb08a5041dc20479192a7b1559725b873a22467afa095e9302543564f9d0c8f06f8ca944b77d1fb04634d6902a4120630fa0cff7b7f01c8df30994446803f58e1ced92286e7ccee7f332deadb708a494ec12e950fd44d752616c9ceaffc4d5bb3bd995e7f0e4099e650e2702db49e9e57b206c249eb090d6119ae966029eed70e4664568394f82ec629cb6b5f9f6d4c6fe1bff3e06cc1ba844801620913e19647257e9b4d5ac25128788447dfc118d787ce650334c68097099f5be716645780272fcb22fa0bc4520fcda45869d51582a659c27bce83530dcf4143b5e82117c4be04e60095663029d422765dada36001694975ca74e8eec522028119f81be09a6d498feb748d9c6bcf4edc0bf6854c51fa6fd6e6c4b534c7dac5fa8a2648271ee4bb0838fb69f74e0409b8f85d8aeecf37220d870584df2b2cf6a996d8b3ccba06617d637b0ac1b549fe4b8148c75023489bb0304887997c2f30581109b05239d7d3b1fd42101767eb3959676ec37cbd8f2ea9d4264618e26027ac175f51bb0eee14ff05844e41d5b99d17304b7fa12c38b2cd979254c2f4fb4bd56fac4fe70a86369cce8222e819b97857002a595462f6ab0df131beddb1257e0a6d011fac8e7f06faf29d4d33cd8820edf0223965e05ae21ac1d3cbde63dc79295445ef64746d1a4472e7f49076a0cef04edf87e0974960b69869f9904177b49b651d7740ed1cd92d518bf6b1493bed4dd0c84adfdb120261c354d44a3f7d7c7cb480d25f03a0846ff960e7a9cfdd8332c695ad0dccc3d2d609492f729c1808cefda87d3cb854587600e247be6378efcbd5ef9ed36fcfd7e7de6df0f8ed01148019a9ca0e7e5798a7eccb69cbf6b42ea2db8bf5fd2044ad4ff898acea796587d88ff0c7687a1facef7e145e0872da570c122b0e5b0f9d646dd48196cf94eeca8e1a0cbe102bf17f0b7d8b534ed9888e91da9fa5bc3a30c80983a40e0e45eb08e511151cddccb4ea622b346b6a4312a1618cc0ea1b380f4b610861fd22f839aa8fce188bf86140f1a6b22a7f4e2c5a68c0c73080e941a0fceb335dc75aab11eb4bf9f002e85a70365daca4830ca4421fe058b19138b4720f6426680557f34844e87baf7972f596cf77f9749c484d592473b4570b5b9da37dcf966913651156ea4b01d9301fc4164e230a140291d6c7fe8ec956d5a805091e75d72e2e43ffcb78c1c14c036d7a02e27881a497e29f47efdb2ac8a33d3c33f0efad380c1b0c72d1bbc0ca88b3149bbc8d67dbe5e7ac0f7e492073591f4d6cc6bc0f4d8cf4b4c7d89595c9b49e00777b64701319042e8f956ec0a2842f64a9c80afd16bb0bbb32d3626f11a0a221acb3f5042b8907ef074a739ffd5282aa0f1e0ffee2a5b0c293a85f2284a32c1a59d3d0cbbd4de9218bddbb8649b9d5a67e0758d4aea1f480062d4df0b32cfbde89794387af18595b7822da1db7be863934148047af4aad1dca23700dc175ad218c7b72d324dc5af2b5d5ff9db993ac4b7a227320de2462ea2e3c11865abeea43c89f8e49b22ebf4f16a944b36207ee0841fb28477e569adbbc1c93c9af0dc4150c4b83246c23ee08b4e98e7b935362371886763b6a7cbc4462f18f60be6e4cae52f8b431344234faa5f553f0863983bed0fed681468278aba926ade7294f90a45d3ad7023e59996b68aecdd217ca5a52f299b175ede025471e6c1ee0456685659c3a0982a9cf108a4806a5be78ff5aba53e237c51ed282037e4786b0938a3e4ae079257fb603cf5a7625a0cc99c4b7d49c8e765b89e6b83695c17d61947c464f47b46aa6ae65a57c8901f49d53244a538e84f75904fc8ba510aac546c502eee66d7128f584575abaa382cdb6ca34b780866ec49b05c36dc1b7ea99a581dbbfce8b1871573c659d49525ec6e25da8d2730c3e5426b38c033bda7ee6e7df13270ccb0854ae2350ac35f20690d56f57e11fddc536f8aa7fc484316b9d53093412d9f8995310013ca24b05e3cf4895b7436f7d921d300b1b6beb8cc22adfce8203fb6c87b867bdb122db6c51687b07d4ea762d6b7249ea1264cf7989d664c843d2d5e9c9afbc7bbe2e96115f5daccfe5c57c3fa3633a95d3d27325a1eb86f3267d193b0c991f3ef47ef8484360d18ff35041b1de823793e5a5c68793cdc075aae3df7d74364bc9b6dca12826cdbce46f0368210c6c2997f37cd4c2169c6490908e664e5c7e82d83f47c1ea4b51e46fdf2634ddc3f289687e3af0d03e43405770a0bda02713cab3ecdce77b8d07f721806d506406cde7685d66affae4fcd2c967033a55090b030c6baa358ff5dbbdf4d4e856575c0010e73a0033ae0e00e3b84030ea40e08c7010575702c732d7a75705820f8950a85a293ef117202948493dc039c012b0cb3642d68144b4f62d12c474604537da45b5509f07b8bdd8821197655c0552078578d93650962303f0528f0b21d89b78142260ca1417e597e13a7377ab1215d71871c6b47c8ffc6773d98bfec4c53a87bc7bb1080d2004be6cf0c67308984de2ca474c20658543ec68fadff9218d105267f90b100f856213329cb51b5618f93071794c001615cdc6d29f2a7adfe1754bc8860275c48a7b8c2ed8c04a027abb03692fcddf701c6f0e104b6c332b1cd0c7a282120bc530520c2cefb90c296bcfd090f0ac1195e481836d35e7e9aefa1ccaff3ad18f1b0d7a434628286c892da947ce2dd363a17f224d28dcb567522deb090f1532c0878e3e34efa17156ef96af19ccb9ba55ac6e27203bdcc51bd4146ec6868adcd2f4ebd8c674538619bf16266600471f9c246fe652396f0e87ba361cec249cdfe022670568b28e28146519476bbb0cfdc8461f9d2002ac5bf63906edd5611768e4e781fca7848512c4bdb7ea748250d0b2c4e4051d7c4e35a8c4018b6f262a4e8a5a3fcf7bea848d8349bdc29bbad08237ed620f195c9b2d7efa5d5680b1dbfe8ad2abb5ea8a6c989d42dc01000c38228d1db9f84ad67eb4c24d415b7aa70e4487258c06b6f06297cbcf5ffcdd798a7293fe92a388a81d46fe1986f05e97b0962b03e448354b5028adc868d89a697bf0a19bedcb58b72ca6d40a22dd20ffc8e727934ad1ebf59f3c7cd3fda132f2d61d11ced1e95428000240f1ba8d853cc8c0e5ddefc76030007aa2e08998d1f37fe3f8c3c253880cb1250d104028f2a493f1a1800039f5fdb1a277c34c8d048caad383001059ae2c68cfe435a5babdca33da65ffbb6b522e4c4ed77e50511101eab42c01731ba0d95225f7363ec5d74756fe751aa407a898a305894d7afcbdb4b858468a755f588ddfc5e45e5b5aa129aed308d5ef6331bc6f8344db984761b175421a31f38afa44c9ff8f096ffb1015330ebdb51bfc9c048e19d4620f4bc8a929829f00cc3f969d7f363fbffcb05255515cae25afea74a168388941f763d3fe66e32ebf8bab4091df80ffcb560aead12c8cecfbfd1232aaef7eead4f600f315144d27acebb3c853375251ff7fc633fca6aedbab4efebdcc0008254914face6e35dfa6f96433a40b2ce55db0f78875415ebdc7b379e28e341cd9b784b2898270b6132068b545f7414ee6057a266bb0e67f7525c41187cad100e874b71e20ecbc651b258fb99e1ccc0e247a1ca8b870df9e1c8ea32d6695e72457a0dcd62c017839c4d2191e35ed2b20fca954404ef5d6029d9bdfb6caf8994f45864528093726c1129da6c836b155ae54212b1e96d12d008fcf26cd4288a28b635ad7582319204bec550ba2917adaa08ddb6a51987251b8a32a2fa4a3195b7399cc6292c1c7474246045dbd59754823e29a3498ddeb129c743520deea53fff3a59dfd8ceb35ebd6bb22b31bdc3aab4767bb1b63a62b158bcbc217e40fe64fb2b0e94f5a147652ee9c391692c5219aa566cd51c6f5f6130d5f6681aa3e45439d0c3bedda168b9ae952d105396aa4fe28612da18707959c1dc3e45be0965a53650f1915f7ac14b9bd2442a66950db6f0ba2ab4615c34fe205d4abc24caef1641a12b7000cad84fed0a9296b9ff44b2bf52db8c2dfde7e13a3622f815e50b0cfd357870dd927f7d8973a652a74b4c9985c2ff9d837a41b4e0f9dd4356f0c19f77e14bba8abed5766f9589e0836b4d76ca50fd9338a629302b1492c292626835d53900dafb1cddca6fc6c0d2819470968ecd187389b3ff3358e7a0e427a2e2f1896f4383a3829ab5fe77baab66744125b57c7ebb3725f3d605a03126483b7267861122099d7adeafb81b483f53d60e4aad1d463e2e04aaf9f44d6e5bc8af01e92a9c6581ee85b8d5fe0105a31b92fce05f7c1409133a3e530037f119c0c6e7074fc9da31543d54d1939231802b81c643506c9a8e7b1be95d954b14e4002486c5c1689f87806d2ffbc91f260f686e4baaa9a27739248441a1c43525b72cd50f461688ffa2fefe4baad352b06655c0d611f8d44ff5a149ca8cc053295f87ce0a05bc63be88b21f31f1db0ce203e7bb58951a421b8f4c8352dce77dc78b7dcdff450d8369b58b79b4844fe1ee143da02dc7572449e05a9a70345ac1bf83a73ebd294be7429d06d0b92995272b9a642f83170e8e437e75aea2c24d1b9c8f4e6b2cf5e18a6ed19f4176e923259c87146f435549b72fa3b129f691ffd2aeaa3ccba7773999392e9dd9c888639cb4764ee88b6ca1b2f0aec276dff2a32c2a34d0553f89bcd582582c9461e01a9c07aaa5e1059dc1f7ec072d131f7db05a096a6f71671733c911ae60ab615df7eafa3a8362fe95da38f661a9f5eecb1fd19da443e63362e1f59d8815d5f21fc6761e7e97ab24e973e585ecd550f14eac2446fd50da7a64f7d7cdb81a7e74fc1baa816c8977477241ebbfbca418abd602ff86b4c7faa881bedf0e3b4929061744a16f6a778e4f8168c0401a1d9f761c44a41208201a624605dd76d8dfe642e0939f655ce10cab6f31a38eb66cfbdc2881bf19318da996b4563a29b058502082af17beac3722418e4a288974cbd51162dba473aedc964e9d11faab86469393ec461346bc961af8e93382bd57b821d3badc85f9b0a40fa26945627448927886df2407aff1728c03fb9fa8717c65075098c3d6d47d7d451e00b10e3ce2f2c0036eff2b489734815c79fb5badf5ff445e54086f789e6ccc80a7b32dc9273f479d157eba849dda9f70a476c59938b97c97b25ce23eb5e659719e74681e99e3b330d30f3f3d96f050f5e62270d29125617fc5298905e18a16fa4cd96dc499ebfc37cddc069f062116ee1b3c5e39c28538d74e3c64bb1127410c2b2a250697944bba151ededd4c5e35440483c08ab14097b5c998eaa7b8813aa144480087bdc496c916e95743a0646ecff050844681828f58162301c6d14035641e701db2907a06557da3e009bd64b3e10a9d388da80d8227adc57659dbcb7db65771835ec3dfb7e78ffa3654e1e6664771c786941e1bdad47c5c8585ba0b2ab4032acac3171183f7d14c39b4dd9566bc5dc70821e192a07ef5efe7f3cdf681084a0e5894cb48b2cf2c7903c0aeed0f27d0d2cca2c2fe6af0936922a9bc083f47d008ece31a7f854904b8d5621d33283866aec8b046ab0fcb48e4912df6e62873a2635c73d6d90e19dc6658798a8d957735e2704f41a10821718d99dc749da9ebb032b49ff899ce3c69207a27a919565e255a23b381a535ce097e6a633eacc93018ec3f79e05062316624dfa14562a152c76accb5e0fe09878cb004f890791bdbbdf95eed7046ee9a3236a910907ca190365541d7bf0d814510894a885834ab0cb3df644f3e4d9b977df75ddf905a43b46d37acb9f7c0b9eb0e9ed21889019d59fd5dacc9bf050e8df3f50b35b18cf9c4cf0be5844b67d213ca2b2c3de21068911c196e2417a9da6ab8852b9074ce6049e3687ebe51c11fc210a99643be332d25185b1abdcc304fc827df42c2c8eaec9373a32b94c3d00d94552035bdb881f24b30871696e1b03e73aaa9a641ddc86fca1d400c3b1fb305c886d641d77402e823ae38875ca9c99208ea313de6f2be63d43a0f722220921d5ac370565acd4007bb06dae8f94c9339b286d3cf3257ee3a04cd2a9a71f7c053325ba17309d767865f43a99b96dd5a805539a0bcf26dd7c7a7e978196ada8ee06ca3677c9eb12cf0f4a44154a4ee0684732d670a1450b4016b2c0b870254a24c8f0d359e7c70156d41bfaab4c680b63037524c9e681cd919016b3271e67503394aced1bfb1d6326f8d270d8dcb91ae2054cf75705892fa5124be4102198056694e98b9446f22e3779a09b81463fd5e911e1f8bec8a98caece28a8054416c2b32636e52ad594404dfcda88ae367c502f2f5d2928d495f9e5c60007a1a3b3ba9411f17d839e4d66f7c0e2263e3ca80223bfbecd7fe30d2e92823dde0c1bfd193015187c7f57637e52a642c97355a24bc8c82d01289b904cc61b1295469e04798a37f1b566d2151a8727e0fc35916b0971f284ec2a802f22b539c4ea07aeca00c1924ee6a4ec6afbc0022eb6562c64285233c66ab89c2d7c857a4e287fcf662d4d7d68cdbcb18a90f76a580d8d6e8be161e919edc0632f3a230b9ba87566df8e647b67d42f8b17a8f919517b7ca14cd1350300e6d0e495354587d6b18d4309202545a358bb711ca16c3a65d342bfa7694226fb79125f298fed2e017b3814af302ae5d36de3ac1649863ff4ae295d9de13255f06888eb397f60650462f950449303b66bd67cabe248700f037aa4e074ed4df6256361cb88aa76039a7e58a363b34c9383dde0a22513b4d671ba6f578fbc50af1e2c0390fc02d3e517fb60f8e32232282b3f6a1acad620a02115a833f19620a1f23214a9b20387fc5ecb8fea231a3ca30678b0166aad3fe7c9c9f7d8d3f2b4e5f1b2eb210114767395788186c7685e95462c537b9e7edaea1aebd2bfc37ff352f6fd73cf50661f54a04b0b85c2810842d402758c0b06be1e7e861b7c7c0a4dfa64604e50075ca967a0b00c46c68abb571b5fe60337a2b31a31a86b12b5fa89f9f414d85db07510565317a5079f194772408969a828d183d10e9fd92d63989a184c7881e639158e7da4a5ab2bf3160bab1802a020c6f5a927513b9c8417affe31dcc7004135b2cb8b137b112682c78516180090a80aae1524caf13dae4729e76b64578aab8a3dc640f4ce203e0012c9b9621028b617b3212b831aa25432e79e9caf4b125df362410b9244c574d3da2ff71ca032009a5b1b262d930300ab64313b8cfd6f28742a5356505a2bd7ced2666a44c420b2dbfceb9da4cd0eaae40b3b9b68b24d7f57ab085bb215a4a8c419107e6fa85e2a6adc8e3ccc730fea5b4002d6edd75571a49622ad41ad03540c410814f97a26a246a2597a8ca2748a63767f359be516bf9a2640b2be2d3191d487b1fc865376aef3fd87106e5401afe92917a46e0185b165c548229eb60c0950b4b8e4ffdf9a4c899a0cec2da56dafc9d84382ada3ed3076034e43d1a0592e9e3cfe232f7fcbde9e08aa282c8c4cc4a6764b5764ce6239e2b43528a2e6b9a7eb110b0d2d4bf1326bb4ed8440d3a47589f7eaab8162e69edbaf4fec29c355e231baaa79258df9a0932800684b84b9e330b534790b61ea78802417c0907cf42f52e5242f88bb6f0203f7a78a3b64c635cf8160d22b5ac9dbae160e6866a2e1d8b5e463338445d654da461918730ac7b756e2974860df55a0480e387e17a062e6ce58a52d9f1576bbcea3db151064d91d8ecf7e61cc920f58dfcc270a42ca8fb3f8d2e677a5f91e7ab7e20c96c483a9f6dff138a1b2bc1847c8d12cc3fb62c5980ff1ccf1a67b89ca77c67847846f3a1d888411073ac5b6f35cd48927917304da4b2a90ce0d2f624ea3788b05ff1b451575fa94c867140dcc7548bc40798a4dc2c46f03657fdaf3cf7d11f443bb4708211799ed6a2b6cd9200aa6d81739967f14dd097653e41c130bf72925026107fb55a3d0e8819f24fdfcd267f6043577be264b5839f65243a6657b61a25ebea0d4c4eea565797d7bdebc05722c268fb2bbe8f9c6026a4709c222b96975fd7c3273a1884502de5226dc07b3b7d98509b325b02c2d48821b6a20c948991b2a07af1f1dfe8c32f22e11d65ebaa4ad7b1ec39925873a864e3fc75cf959f417176e1a830e58e6889546bd04900837ef9215ae1ad930c4a49755e9b168431f91a07a8655e929182d06420cc7682e8972acbc5c938985c1059f675ea3f4afe45e9925349acabc7bcee71061b4794af47a3260bb210c29d3b24361b3f9193fea080d9c304abfa10a59b55c60aff0bed5edabd2a476e41d7643c49ed32c054e53eb801cb9761aa1743feec99905ab2a91941d77894950f5a217964de2c07d5e7c4f542b750eb12a79e3b74b6862c39c1c978b1249227c372a9294fc689d25843ae8898b59231d3f5c70939b1d19aa596cb446581b0931f5f5ab25c4ea87d593094e7929d47c8953ca912d51a8e2e8ed3c1dda6e4c60630276564f6c7b204dbf09b0f9e4c2254de8bf49c2cf60ddd34ada62047b886ed7d8e98d65757a811abfca2a8a3665819cdc1d52b70ff229564774602d2023a84c7df2f0f7e798ca6f1da9d3d36991a67b9a9cbc38f38c4a21d06c0e60217c60a7e2292a989ccc5b70be38ca3b9afa66f8c928fdc8cdf5cd92a8f363f61717970212374f0fc5088b90148343a5997256d1b18a3c870950123a0a1b0d6b0daf35237b20ddc8834ca02f5b02e95b166195eb440f905d947889b2e8592b0a3f3f5348085229a651afef2611ccaa6743c0ae175079c179d15d1f2e800d128037f1000137c2c7cda34e6f2c7a1487fb100bff43a2892f6a31436ed23e2c0590ca986826cd6990a78f5421ce1eff8b25c83f5b0a81df28ae58c1af6bbdb1e8b9d27b8a4df9dc18136df567a3e66c1720901fff560c97d65e8d974f91afa2256cb41d46e5c032ec6488e9cb8d835827af09208db8fc581b1d4301f84d7b84806d1bd1433dde07fb3c065f02e833f78dadabc96f3bac35831c19c2929cbe12369803b0fba98633e2ac538825c2dd8ab41f0abf7e3d5fbe6093797f85a6131a49b1f5a5e0e93f0404d5423f7f9b6171657ad053f23f945af6d8ffd9abca695cf3a3418edbfd272b5f67e5a4b6ab13b7e23f5e1ac3b36eebd3b55edf76a56fbd3252f3f18fea0ed856d2d788b9ebd248025165a9839f014ffd1957ca093c886a68f8c733aab8e2149904cc7b1f7acb774f213939518506640a1012b83af0da430d0aa41c50697a40107aec9b74f7c689290d91e165406583540dda02c6521977ac9edab01069008b182e073bf51303455f4d18585ea17897f883a8f3902172a985cfade9e96d7d3d33e689ca465c46240387b77d60dee2f1c65686c09c305e077b36b5d371218a9c572a56065b2910739c6dbe7f53de103c81740d93a5d2671365cd2fc9cbc1dfa7cbc5a5629f004baad44e6ca9a6d65872cb8378bbdc4903ff7b417d49f7ffb122c4078b718e1cf5105b12496e036bb9d184e475d933f33d477181a4bb58c6f98a348934ebc472b516fced178176e0f97824357c829dcdeba255c54350b093e0bd199e4103b55bec35359243a07c1ab97810f836126688efa469ad8e36138133ef92db2c041b8009959717ca0cfd91d88f42a220f3a921323f4efde7cfabb2d1046a3bf3247606656f5aecaccb3649ea04912ce79011c4613df2a6d84490c81656c38fd5c17f718f2fad78b8091da892da2e350066e48d8f9052e96b31e4f908a9f28fae68e738048b1d713053bfc1ce4edcbf3472fa0f9351efaf642c2b369ceb65540c4d437205fafc05ed18c3f81049289d6b519b38e4533dcb1249e7a937a2ada2a9321c3fc20bdb1770ae1d93336d498068007c285b44375ffd165e42bebb6c03c99af341acf04023791010635aebc074609584a98de4c84dd3d5267608c63bc4810f0aadac29a55475f9ea7e5511c78858057e766f16f0ca277c9b6f0653672c95e0c81f07c3550dd0c79c063242de1c199055ed83a5dfb3e79642640652302aff20bf4822f7236d801f212cdff80828e91f66f07c88d7cd40ce532e77c7c85d88d1cd2e3d5d1878316c2b0602fb891988a0074ed05e8592a2fc03c843ce981275dc5270af3d0518698b5f6b32c28111afd9b8bbca534a59e963cecc038ff5e802aea06fabafddc341a3b155f6be43007917a5489b09e291a926d3667872c39d4b701085cd4d806c0d7b0d8f8c9d42058d9102a2331e609f9c2cd65ecb20b63db26b3fdca6000fe5aa051e543a5a1fc6097e3ad155aecfcaa95e336fac15a12544d3f57e75a8618c8671100a73849b9e913aeede27f2649524323d80c29c7b8361e59f80040dff3f2817a0c7ddc1a7526647efc550736173945e6da8ce15dfae412417f8323cb03610fd1b4caf901d91989465804368745eacae8317648ee4b6bca1b6f55c79b60cc79e3be162e9d73b79369eaf417ec757bf261c0ea2602ced882c82a081b13223bb36871847951ef838694305f5c95135b02101cd0185e137454b7e49ae295081bd2352c28c84fdb8898b26164bf0da7b88b432b3178bf0d7316f44540254831da9b95ce24f40f98ab40ff22e118d2ac5604030dd1b8c8fa842800e98d97e2fda585a62155dd71eeb171b255686978bdf08936906af54402282b1f32abfb8e22580af2037d6a3b6f56c1b3553e0d15a35e53b1602cd39284167a48a4421e5026247e16d22ae8407c66b5a34bce4cfdb79d75ec5c83b19bc86c43b91f129051dadb7f6f15544947a4be32b28362b7a309986993aae64ee531d522a4c296eb035c4ea1e3a59b5793258d2707561cf506dcf1654a683aef8c3541a0a14cca8eedeb6cbe0907c6f05ee75b3059859c0c24f8ed24bf5ab8499f4d04a8b3913ca28ab0fb33975fdb6298e0e6f2cd2a993cf0aee66d262d34e4df0752c52ec7b2a9a1276f6d15d35a48650c00e2c9bfd54a68379c42ecae1ee581b0f4aec774ecf2690fbbb275b9f074cee5875744f8213d1a463a4ef02671c4795420392396c3113583ce44a88ebb5d6715d39b879746e06a6bb65413509ccd16e2fe4534d320691881ee89870ed8adc497101d2f1a13001cd552247e4df5ebdf695b1a04308b21a85ed7e0d30d584d620e433839b586e05f8297b4f11381663b0898f6131d357ab038e7eda2b9b380236bf96dc213993eb396d0f87f900a7e55531cf03d796f0faea223f85ecf591e5a3b6f9acdff5f9166b4184de51b4038a9351f0ea3413714e34e04ced5c532b0693aab0cf3e1f92e6c80ff813c0d84868744f92ab837d1f1ab980da17c7207016ac7337023530cb9c9ca275f0d5b0b0fbb231d5264f9676fe5ec7edaac3d01e17751d705bb51d110deeaf75f18ffae691648f55b592b0959d71b2213a2fb44046ad6009e913e3e259687786f85bfc300d6ba7eb3de1e179a5934b19db056d4fe5d8827edd856684587214bd4540a39e9cff04af12f8ea185dd4b0772f8f315947ce9328cd9091a76639a64d734bdf188dd7fa3f1430d5cff9021d2497fa800c82a0b4159704bbd0d297bd7cc520418a854daa176b529955e4c08082277688b075ed62fa61eed2bf4469a657a9a93e72d4217b5b4b285652d1a63a23becd2470aee909ff83adf85bfb03df122269522154d2d502eb03ddd9fb1eaf72f823871bfcdf78837ba46a318f3fc14b3a4f62b281c6b53c0bb902e110727afe8020aaf8928b0dc1fe659270a4cb272d978c17e391b922b930f068b8e4b03538178182857cd1947424f646e784fbf87987186d871173e1d236e548faa5327df92918edfcbc709da1eda83b4d3d9437918c3e121c6753700131b44ac84d4dfcb62c4fec5cb10924f3f46d3741b35c9918cc8788805473f217ff7210bc492ade36dc71cf5b6c8fe972440b0959497061a0e054ea2b8c941a2e72812c10035de5b6be282dc1234844d46b499d4bbf5427a10aba99c61bc6da3f59f52043d50cc104ca84222b79422d86838a2b6740bf42710090b82f8cb946689d95856de3d91c8e0c8bae66078323668686a714a1510a03d2fa94612b088e176ba2d06bea6d112765d2b622ed1ae1247829a0676a8c37ed8345fa940bad01f339218b65641a75c64cad6820a7ff2733d1775028904470153d0552f1051f9947255310c8f18669f5548813e882dafbe5fc12ee8353406c32731bd8d9c418f0124453ff214753658c8b2253b6de2091de72866819454cc62ede39495ba26842eae5d00772646de749d53760a4683ae76b9409e2f50637a7cecb5ecd5fd0b042980e3dbf997fb19f595b23757fe53c55f4f833623da94c1d3aca4c656da2bd1038aba258c139166e6a98e762659d6ef3d3e6307e633c1ffbba08c2b74f4e3ef9b571dfcbf524e4cb53761d9bf35b372361922ea4401346d6501517c989300f7cb4b0ea5b496a61db178813e7ac26a7d0b2210fb37c54108c7aa897d5658a3ba34d411cb363e8a9a1a3699297e0abbd268fefd255fe8c1cd326d6d506c57eacbc383d7e58db1584b29b02a17edf5e76b054bf9cb9403743a4ec0bdffc36c20a57924f0be0dbd93f1ba7234f4b6ed384864da797ac03b5cefbf1cc1a15d09c65fe2b62762ff49fc3739610d41eb11dd4603e92924122cdc2725cf57cb44e89ee7a42fee41b6e55bce2abab374ed3732efdbf0e6c2d138a1be99a3e2cb7d2104adc8199d0a864b9e28a136f478c6bce23808dee4e81dcad10604e07427d8feabdb8597bbfca53e0aaef88cab65c53b87c62153b87233e71db704f7e52bc82ae2611a762fd9d06139d57c869c1fae40eb39b8cc357931d4bf09f9544db532bd1e375f883fc49884eff95a3890a56316a0d359d831c65384208aab2edd59c5ca6fafda6e4aed7231c15cbabab930c0fdb7770ead4d31abc74f485980b3bcfc34d737268da3c4e2e4c9a1f04cc789f40a5ded033bda039ff3391fa0bbf13d332edbc88dd65f4842fd7eb4d67432d16d5314219a23cccc6eca45a14101aea42d50153ce0e24780eb5cb43f790a3eaea4b7d79fa79df46dd4d6a36ead4aab419000555a170254b7c6afffe6b5bb04a054467130add67c2a0520a4785c1a6a83ce5273d20e3674c9a9e38c2b90e3e4d9ad1df5244a52e1749d39fef83a73088d2105798fb337845c7e2254112a9c1f7b7e67ed23cd577ea23e5afad077c330da0c4d280eab0fba577544393d3a6e71bd11ce15bd4985569f0e8586d8c400901311e3b06f1048ca1797b045e46c7923426f49acea63ecee1f1840a3fc418c306c024e872d38446bb5bbb8ec2466119ac1f1ba80f1de1f0a5bf13f3c5862d4b547a46502a500d5e17ef0a5ccba6a115c9be3a703be107558878896f6d7a610474cf80e35df91ad3133c586a8da55ef3a77f52a1ed8ad1e562a66c45fc5c511b9d8b57e763a828f88e2ba5a9bec44d4182eedef0dd16c60528b695e207459ce913740da6096265a835e8303deb80b9eeec102ceff71a2adb65a722dde464d6991fd6a7f13b817c336c3548acdc9f2183610a6022c5e3c491e54406cb88d60371a54b47373c5a449ae8543921fb7a833543a66ec936b0a1ecc847e55c900c94f4cf8a8e2d3f1c3973e12862bc015161d21d018bfa62d9ee8869ae0c7d421c73a14c14534d32e42a9251bd1fa96a8b61c4a6fb7449b777e9284e38b04dcdf904453ff3981e29b485e6b47f3ed4d4d9b42ee878edac6bc0009c0553c2239236d1f501fe7700cb85307198174fd249d12f11cf83e58709ca3459f0d048b4673330f412b8b299f42113e1c8dfe329b543300a8de9e287c3d959b92956b78305dab32088f081391ae4c0f687243119164636f42284ce8d9438954a93d5e7e2db260c259d897d8ffa0c5dea89ad9b9452bbe543cfc39d5828ddc733b6c92e27001ef1311196dc208dc036f6a3247a38dfa9bc6780c18436b0c163c468a77a807b9bd6c91797592ef21b0d74db05de60a751ebcb6d892f68f0ba90572d9d2d836184489696ca380a70c5400278ad5f030bc12aaa6dd451393a8d9211e52c80ecd9441cd52563d63023c28fa465aba027bfdc32c8b6f0a3a2f8a211727da4018f92e078fe6d5bf3cf1872673653fd010feb0acf48bb85bdfc34df9c7d5752a19b07e1bd9f6bf720df44e1b483f1c4160466b396e9e1f69143eb0e1ead50cc21cb4631d20503c71f20562dd196f5386c5f25c6bee0c887203ead5aad72df5429acd90721e9a6e7ed060bfa82380403acce40d71f8131afb35c168a5b700884de003d3cb106a95596e80a890490643fbbd69bc9745cb1a4360e8034264bcd1405dff95ebb05a60a09d57313afe9e0fa75e6b8a3a3548e0a2e0addd4d9ab0f5d1990620669404cf85c1e9c7b79bd89e27b9d5ab056ca9811fe526f8484b07140509d140184c11b2d5a1ea8973f2b84501dfce2c8fd0a1dc9878aae636f978df1f706d474562ad1fb2734fe49f2947d983fe824aacea963f6bb9e487a4c2cda3671d8effe070f64bb3485fb15837487c10280a8df0157744870e82d3aa16e8eda8b55395da1a11a7040452ba9ea2b4bfb64a4b12ccb8a610a4b59f18414d5479a243dad1c65030b183a8e10f7be86aee676925541ca432eccfb67f5d7cb9ceb64629076040bc5510b655648a3140412cd1c7cce8552a382f3a2d6f3c26b97d4056f0ed88a774063a5f65083472260117ee280c07c943383f601c5a8d661810537715a5249671ca0f0b1e6754ea745dfab42a1f5c2a6b6db9011f25cf586c32d6ef3807640365f85ba84115464c489a4b2c8beb94310a3703698d0de13535fb24164f40b8b93602dfd07b5997eff95b6a6ad360a3888b5e2c707ffe57c1fb714c3d68b91b8263f474c5aa04339e820bb67cd60b75f63883a3d9eb8ba0eb19acd3689324b8ede36588042900dc44cd4a3f1c44b7922e78f18d4fe1e9263d3ae60c8581ece8fa54b8cea6a8a0f1bcc24c17bc1fd4e4a4d02d0994aae7b43a6d00ab2c11dbdaaf0c3f3c943543ea8641b97f3f0598a075b02395a906ff78cb5bde410e8e270a10a20f817518f0ba04fa5e96ae2118cad4d118cb5a0f587cc220674b0d48b7237d5006886c423231b3b92f7b75da947c775f5ecd9a08ac865d096949b0af6ba67f7fcdb079cfd7bcd906fd95020fe13e55f47fb164f6de6444ebe9b5ca08aac0d668251549f927983bcbd25d156b6cce69274dc5ce3e2a88405fc556454a2ececde2827e924af3996c4ea54a18d2296fad0963cf0342147d5927b1cef1159e97da4b5bbd9c19a2a7027e5c409e3df9ec980446cd6a8c6cbf554f03802f84b8e4d7f7b19915da53f77aa9ea83b1975a0c852d4b94196c7039422cf9e0c94f446f4522132f8024dcbc50611436ef0205a38c9076726edf33212e46a89252922a426c6c35c2c835ce1a3a42d5eb6786462e995369261b739aae6d37eb44b2a1fe8cd27704dbe3f04a150dee731cae6a056f1565018c601a9b043a47ac9c28c5d700d14c86f0e7419084f057c7744684a23a581484c61e58cd370042e904acc6ef690abedd754ba2a14618e787975a9484ab1914042ff2145ce6e8c863b4cf5cef94557b44993e424fa411088669b9e70ecdbd3659bd36aa25168cd2c315c71e532d757983e2d8e3ae0a95c3750832d043d7c4f84b34fe4c5721635e8ea0b15a57ae00d866c67e4c872a63dc67285f1476461380d75fcf85d25b2db50c6d8552dd2cae10620a25296264d24e0a24b655bf934c390e80b9f554bf0f590f357b1b2b60dac28de7bd88399ad238dcf0f11e4f1e9c3684ab45c9c13948e602b446602719cacb9065816dc92a9ef7ddc9ef7dfb554322a2b6361fbbcba1ac163ec39bed162815d6f54eec5fca736d12682b8d3363ca4e3b689fb4cf649f9363dd310533023db43f0139ae71b7532b2abbf5e04d714ca20fc5eb3aa3d5bd75afb08160a528310812b0c4cc1fa05e0066bd0e3adb1d889949e067171497b3f3380cdb2f74b791f4b690a4015592a689c699267c0987f17e1cc8f806dc4da707dbcc3ddd2b87f7480d280d5797c9f1dcea7a8190ab053c393b94d8e6c24ae577e3bef59077a5c507017af59ba13b6e27d45d7ff04980f17b744d7a5aedfdfad8c1d9541953b535e41da502fcd54260d46577c2b138d891da1a44c5ecb70e6c2419fa5a6b01d0401a08b1ac4fac537e83a5f5565fcb8d701205ee5d751a88338c64901858ff292c897d6db9d874836281ec0c48d3d19bb00b2f3b122df61bbcaff044c08d591626114ade233daffd713634512809956acf04a55dc4a507e1b0db5b4544df738cc17af15416ac24c154742f0b58db4a718c7069bc1c118850b72937bae6e064027af30376487239ca75806f886fbbce3eff9e658d5b89d3cb0e4c5f347436a4b65004c1972c0881a1805d17832ec79dc5f08c7e6ad816924fd1e215b102a973bf5d146e8d05f985c0749d80e57addbfbcc4f1c50a6020ba6e1d12de0562ad6d9e7e54b080c7a1cc2161f3b85aa8ff93f0575cd63f65ff7d9ed009ef41a4f21b7b90f400a5a0b336341340c1559ef0056795d9f268fb5674cef9149e8aecbc3ac923f985721efd501e334aaef0d48b7606db31fc73561502b770b0d966da6cbb0e916af6cf5b24365b4d6157573a35e6851093b6d537ea0c4e9a1b4dbbf7bb5f4ebd2dbd45cf7c655f4f1cc2325c74dcf60da0097d47f7908b2d832d61b80ce589509fe6db80aa254d1e1e1efd01d73f8ef8934a46d8398af91f8abb4262aca3bf4241bf1b6135c4269a5b0645f5933f27219ad89719064adfe756e131ed4b5168a93c696c7bfaeec00379450f26b98f52084fb69de557d7432f2baafbcb12182a429e7dbe20ee32cca45b885b8b2ad1ced2941ff8332ee7c5ed548a45f7abe4da674043259baabef739ad956a77433c946be35744a6db91a0d04bf3ebc9d92e13feb5595c5f63012075dd3769c16744f49c06a19340861704955a22101b61648bfbe3d336905c37346e2268f5dfd52896b1ab88ba3948f0f37c1b5f757fe258b754cf5843cd14343a0bbd1eff7f1504d243d9fecd4d200ff1be1efad2afd5b115495b1dbf849c4350ef39540f13f51f48195f43e59b9f405190155cb3c282f737ec9c1cb9ecabcf23e621ca29419122b1a10c580075feb660041971ad0e8b5cebe03bca4ca63a259933d51fe2a0e5ef008461acec363aa05bd11542530fda3af9558308b95ca1048991cb1542c25d8647f89d063ae88d1527b122f9b1d4f55c52f1ca1abdb73cf23074b01a151211333af58d78ea9e890ef9e7868c3223c3330f456347a5f4ae3426de65668addbd21a8643b43b300719c65e8c7756a5d22ade5fb279de2a0d9340b881cb1735309f8c1150aed87a6743ab98ea822fef74208e119cfd2fa6c8c90d8ca8676c52be55826b409be8edc27a28ac3e5a9b1234610c4eaac8818ea3954080992e454c37dcb212637585d7d615db0bcb6f5e4d50761bf665a2ec1f9209d7f6d97dd7655e566b31a6a16ad75890c923fd4cb074284c1a52bc20067d125af36f1a94aa38a6d4cf98ba30b5d2bdab1d2622f5f4a509d55c1d2d9603a962eb4b636f5dfdc4fc9c62559368bda3a0461978ce847d7502110b00ae920fe44f739fbfaeb0527fa65186c8b4fbd23974de3c1a62e79f5aa5931fd5fdc84bc291bdac588e06aa04696f315eb69c65fd9d13577862c5c82a463d6e665a1ea707e453c154114cc3bac3b64562143266f9f6fb0dd0268161351e770a3e0bc6124ff86274e5f91f673d1170baa3a94d41902167cf1d617b6ce5913c3915f702c1f3b8a9e0292eca96b40148a996872d1c0e53be462243307892bc02cf2aa013b713950aa3ecc20e3a8d1522664e618ea14c4a854c4dbfc8fe3e7ec7ba0c3712fa3404793c0bd65af709c4a526a064315a994bb912081efb665125bb9e7db63dfc06422d5042a94908b7c280f0f7ebdeeef752084330bee2e042f470bd8bd043801100b487960c93a0b456169c14639ff9dd33fd09491c4c1e977f0c54e90b02bd49788098b6c82ff505691bae8ca28d2d591fbf8af363502b96e5fe24c79a9dc9b1bb393c4990f435701bec1742bd51cbb9e4f1c1ecbccecef0073ea765d2353c0e8b8f618432da7a6ba0fd59c3996a0a0b6352e19b0b5edf896466a0f7597e71a8ec0339ce47c039aa26a865c30cec2493a02ad2b26af8784e5c47341e1534d6ec18fedf5a137755c3d350a8e8bbaf0c5cfc0c7f0d730d1a6bd2f0a18b8068000000823dd8d51bfd91cfe1f4d39df11fe9d2ae5f95e07ff31adf5f65b23ad114208d964efbde5de013308a207b207bda2c2d3deda5bfdf9f5b5f7e802dc35124bd5d5b902d929d4d37275aeefdefaf3dd35fc357675b697dd25fa4fe99b793bd17f4adff0371950c242b03fd02e04fb837ef767d9f690d6558b0de2e89d86ed71a96f002bac3872add7aed7b675f42d36595893611319be967c8166b4e0669d4b98fca7bf6409d17ffa4cfe7314cf711cc771dc99f4f8e1de755dd775dd99f4f8e9303c773da9637ebb30b7b07b196605b95962682d86b9150f5e2a73b67944a479087fe80e3a820a648d85b06787405da9865552c7b12b74d43faa00bd8685b053ec3ead9d62219add0dbb4247f34724542c147fead1849eac007dc542b60e75b7184a3bf80dabec63a4671895f166ce39e7a4744e4a27ac5c98e2eac8cb91fe9b9c16ef9cc42b2e7da41596d596d596279f9367561aa75d99a0a7b0c905c8f0a54292fc523c0e2dfc904c3f8b3dcedb68da5eb2a6cbd17777877b6b7b766e7bf60d63cff0904c4f42fee089a8727f433e48b14d20bc98239098631915baa4a0261320c3570a5568cc346c186007cf25f3d781a1eeb07bbe9cd7b8cac64f476da75b7a76bdf8530a51f2e95c0a4a9480913f7b0618676891e539b8550e7641a57b476ee4edde6b1704f5d329cb32137ec050de4eac53767ae97ea9c33f20e7a69feee9b08b40cc39f7e9d3b3cf03291df5d3fd86e4d36b0724bb676d0aef3c6028a7ee99ee1dd581a16cc21eb8915378677bcbf4d437d35337999e4a7d48f63e24a38efae94bbd9e4ebb1162ce39ea7ea897b00148e0a1f0737ec2ad9c9b708bfb25a2fa5098882ae7e00c7f445436ee37b3eaa77717c4e1d9ac0e9ffe84bf1a78364be501f1f017b3ce710e3b203ac7b9cefd92641cefa76fa72b330ece6307e443fd2424a7a4ccb103f27947fde49259077f4832cee96907a433ce3320de5126e414cebf8c06fe86320ea6714ae33e9d5d1aa7d3e9a76b0012782e79ba765df1e49a39fb0a086fe747cc1eeededee33dfc69796b6db75a46c5db970a4679830c5f29bcc95bec806cb71fea96a688b74aaac8f69be97eaa6c7aea7e4372ea4b654f753addf3bce7e09c0e9bc7ce730e9bc7097f34762e6c1d3898bbe93ed274e153b79ec6fd88a832eadc4bf748cca8cf2ea833eaf6b00b42dde26f3beaa85b8add0386a04fa36e6714fe6246bde4ddd44f579adef29ebac97beade53d8749ccea7fb71c7de478d00f30eeaadd3bda3b00170f076824eb0595e7753f7ce25dcda384c4495376c0f3dfbf5f88664f8d9015122aa7c2406d1c8f1a61d5650f35a8128cfd79229794e2ecf7b90c74ebcf6ed87b778e7f02a08ad957dd91057407b8685e4353394fc6467d2e3276bf527e6e5a90a7233664503c9237b05906017a8032225c9079c7102a941bd9453c57991ae84f03e7826532008ef83559c814ce47e5f48f77c3d865000820063a494c618298dd14a4b69c4a2b594620a18b201213d78f24817844fa031be477c8fee2ec8cc545e4adca3a76c157e6283dd83598deba208177bdfd2b36e6e1301bb9b679a1f57f2aee96eed751c57a29452cadd1a8939d3bef9c0117f2a4dcb2c86358d300e99da36d960f7481c218b064d254a8ef4091df4638cf8847a0e28ed82668eddfc466bc5b4f13c51666548e64d15485900199229a32897a1a60c3379931cb532abc8295d9467cc189eb8a3346b72a7c7be995d9d33eceadca8e32f7bc9dabcfd842d1842a40e693a762b79a062140d62d7e051ad03e20fbedbf0764c8877e9e10fdebb09973ed33d5cbac544b89cfd3361225ce6def968d5cf9ce11687b397fe712fcddb30c00e5e87897099c344b899296ef5b3d3563dcd19ddb2cb2e08cd156718769fc6b4fb71f2916237722f7dda7275c25c31231c56657a4dbb86a57d63860c2d3d9a253fe3eb37afc988bf98832045c9b391621412884eff26c79d6e8fd621bfd80161870d059b1d50acb546e91e0c66ec104a4c00cc13fb44ca30c816b4650cfb749699e9b1f2c15acf6b6bb39c1743c1e88dc84ce92c35ce0ba624a2e2bc7a7a8d243112f37c95124e221c8ba704defc97ca2a9ea3895113783125eb9c7327a808976717aa23377207866ceedbd7ca48358026b038a15a1971b0092c4df0c03d4144052387064387d20b55c54bcdd9439e734e4f35177084961bc62841171a6a28a2cc1926a68802030f3548e1bea8c2bda198288b419e31d1375b8c737e43871346dc660b1ba25c318418bc1da5d2eec7ff42f8f919df0d2576100f1f658c46b0dcf76978f3e98d9fb7210533459a5964099f06747de5e880f678e6b14fb3a203469873ce39e79c73ce19bfe822cf39e794f26ed03a589f75b3868c15c890610a3262e862a68a339238c1cb05f130dec623861893440e6cbe10f182a44fc5c3dac0830e7264411d91872a1e608d8af6783b3c48e140e30606996355ec668b4c29a594c5e23127f6b4787d417d418ed38a4f010ec021833927e6bc1510d1822559a8896286099be0c18632c270828a2898f89973bac9734e3755b87101921b346ed0644b65a0c26bc2c3ba7013431467dc38394344957782a2980f1829b9610c242f4ccc30e1288530660441a5851a64a86b8a701b18640a24176dcca04e9c546dbc94b7a6895db302864921832a3c88d402af4d174f78553e375fdc54c9aecef1aca1a11c5b854ac2154198f121062c38b9728f94a0c28311494c314618338c19706c648664da68c1b1f0c50c838a93141d069ad9264c1b29daa0e19c4c5a3f05b0b01d3d957eceda75566ed3e8c65549a9cdb26c72566e1ab44da150a965b4e7c4a4b5325e95d4012467df0de6d42e87b06e31521ea86e311c62782da7945f8f0cc3401d30c707b429637b1ed0e60c64c1540a1886611886c956d24bb45023451566ceaca4789f95b659d1620e53c156ac56ac7ab3789ac5868515aaea2a9efbb4ca8c5c9bfc549a7d46a801b183fafeb66525eddb0a4c7f09f3c56677bec374cf8cd9959fd0b55b3ba766b32b2dee2f5386c9928cee4e863b4cb3eaea084f6a87d17669e2edce5cba3b73e747f7ed3eba6ddb6e57ca4af713f2319fd10e28e34a97de46f7ed9bbd19a56d26a959d5de282600c20efab54970bb688a96c52eab305f5a47ed2f61be2035abbfe42f76c95f3a4c0d0339a85f9dc0db7a72b3cf4010a2997e533a5748ded74549d666993dc233caec7cd32e6ddadd690deffcd02eef43c3120fe5fe16ef27d4453ee8fb8dbb4a27491e6dd43aea8d766adad4266e23ecd3b203d2706779c28319be88ceacc0787d0682e08a19a8099800083b9867d32c3c91ebe75b49e5b4ee33108469001268dfe4a55dd755baabf59237562007464568a48c27f0d0c4a45e0241e8f8a67be8eb5bc966ef948fb9a3b6bb4fd32b35ed73b6fc214fb51c6596450db688c89cfd192e22f3c42718912e2fb788c86c711199ed2d3ee18897277679da1bb79966d5f719c841bd763ba9cb88f1eabb684d9116454553aa144d5b34edacb215b5668b8aa6b4dddd587f99589d45b3a8cadc62b3f417a31e31166100cd124544b65a8120144da93221a45d86731741e1c50cf3d7496d06e36ae723666de6697dbab3f416c881112b0d9a48148b62951825ce680546294967209ad6327ba9a3decaeead65964daed7acd4e69c72cbb20e287bdf2fa2c9f5dbaa4c5f84b845ba35d7ddceb19b5096da4aa6b8a5400eeafb49b3a2dc9ed2ac7a7bbb4ab32a6ea266b1e91e0d7751b3ea6bd1080d5160b30ae3355192e4a19a6d24790ce9c72e61709739b76ddb581810b223937303d2032319b74010bac66c3b4bf794f1b26b9aec32dad4e684b37652eba8afab97a725558993e429cdb2575c6765b591ccb04fb3ea85461d5007735eba9d72decf74546fd1f4121294a735090149931090a0ae6d71bb9168ba3b41dc73ce3de71b773b4b1b39e171a673d79499502694c9f4eea6a34c266b4dd69a4c5cd7652e24733a8d7f9dd4495da659f5d86d337d26d7afc878f2ddbda75e82a5869d4375a0099a74a8c9749d7707a4a3f383beaf734db8df59eae9cd86a429333d03cae4bb673765afdfb20de7f37e72fba7bda9783e3ded8a0a0f7598bf360a827af7d0ac8a7a6791d4a4635261a6cfabf32459a573dbe873b5fc4171676956632349b2f60864e7bc2d2cdab061ba508dcf92d1162b6ca4e478496bd4287d5ed36b50ec9be46a5cf863b1fbb4ce35123356ba5f0ec61e8fba09c8d4a6a34ca8ceb225c355131e7cb9b0247f9dd482997af86ae14dae66ba07be88cee4fa3ed36de4a405a4275bcee4eded4298bc715917841d657bd3384cc825b3bcabbfce2d17feb66bcf3a9ccf6f1b67baf318ea3ebd1ae39d4e037f7deeebeea8cfd94367e91ed4ebb7971af512100efe4eb825bfddc32d79ed5bd775f35b898b9d0765c90190832e0539a8b777a584f7c1a4fa9512dea78a44759584f7b172adfd8dfb07d1cc7f5c639f7dec8d5bd8b76f5f25f508b21df55592d7aa5f2579f65f67bba089bfc6266ef5b56b5f25798d7782b06bc7701159753a114aef3aa1195b848636def7843f4f8473b7d12e696366cf6c60a124350efb836943fbbc9c8d1af7a86fbb1f28dc05d1c7d3fd66f64cd748ccdbe53592246fc7aeabbfee391d90f6274b88b2e4ee82487c24662d48a790350deff44e5f3b76eeee340ea297dbddf96125c7db963db5fdd8cdabf52794619e935217a4e4f8ac95b5b2c763785a9b5ddd5d054e0f4dd9b85c6fe79e973e5e793afb127f31d3480f239e13c2d91f9a51a6b0c516fd59dd8dcd2cc39ff813aa5628cf9a61023ad8419d35b6b426807372b32db73ac2eb3a33929425fa19ebc4b0793f21ecfac86cc66839ea7915eb9eef4a4f27cc98d4a145df19beb189cd5cb19a3d6a69c5ea8665d9f6886119b594d6578a7194d24a2995b4563c94e9fd84e8bb738fd26eefed0669d8da0da3946214c330aab9d9e6e4e8b4dcfd3cafe70a8cb70347b3e453f7bc4dfe3b2cfa8ca359dd2d653fe6d9ff0ac98bff76ece8b8537d60aff813cab53e73b550865db19d5196267684eca6b5bbbb7b7210849df898f10a69db36fa9937bb72c2fb6c5e21791d35eed46a58c671b3036aac7640d8336c7bb67dc33aa0ad77b0c33cb4e3a30e65ec7e421ff6d2eb8da5fb09e5ec5d773eb66be7ee862db632e6293d1f60bc8e3c31d65a318cdabb02e3c5cb5a31ec9a46b1a8498eab94c65c310739682e6a5d36f879086fa4f3d44e2377936478fbac56fcc1cb6f9b768d6043f63e0d5b161f89790675aeb229a514535aa1bccc73a5024fcbf03d831777e479a67be2d677bb7cc4aedefa1ee9dcdfb40e28de4f48dbb4bb5dcaeceabc6d2fa229797b4d035f443d6c5bcbd5795a00fe742f69433f1d2e5dbb8f94f047c3f55b4feca3fed84a8fcf6296c5d777ac9ff5f1fdb9a8f0e861ee7a6e7ecdb75bef6a57670a40245ffc8cf17eb649083fa5d2b7588a713e5e89757cecec879937fb0944fe48e7c65fcc9a50bf3b77bfa1cc7d6baeb92bdfdd4f28db0be5cf5e96204df620c35709b2e46d83daedfb09e556bdeb7ef540da14cadc21e6ee23396981a11fd337ec42a573f86bbc956e93107e4c5cf72621fc98de993012d81f70a57317fb56cad448b45bcf364da2e40064f862b2246fb0a5f0e0ab4995acbd7e33c5cfd5ab29bcfab9554db32d97ccf5aece9f7de9167f2e11eab577f7437bbdd53a4fd9f9398f6d9fd3768bb3773b76b1eed1495de73365a7b59f8778da2de7f6e6a4ec7584722a9573a893a37373b0b5d352d485791275e0693102a31ca6643419751c2b49d91ee71bc6e11c75672e75f7a26d56ea9fca5a1deb7d9b3abf711dfc4dac3a8d6ff374e346be71218d6f91bb71e1cfbc90c6956fe11c75d905e11c15a40343f9ca8ffaf6d9f7855ee32d9dc3bcc1ce870efe92649dd3f89cbf44ff79ce73306c061c0b094192e4c66ffb5ff7791ab76544ee047d345eba3ccc3a175e7b8f52b7718dc41d798b8f746ed5c09f0ae7fcb0c7f9b6c163219effa9fb0de5d4639781243b3f4afd0616d2e037ee236f5ca11b1762f29f1f0087dd057eafdcff2249c2f38b95f0fc3f5e72a483b2d225c79cb262a44399bc492e7587f2afd011ea473aef2e483bea37529fd7b939f89ba71153f74b0264712e761405c045a20166f21f1e7ca41dfe9c6ecb4812efb6ec6136b56c8bc3d6d60e68bb33ef5cd81f64320936a4d32529348d7637845da45a87795a07c681a3593878320f0eedd26bda69bc560ba2e1160a13dbdb893094af98bee14f286b97c97f4c737ed1814dae91e16b045df2c6713c2cf07ae3e99ea869dcb76b1d50dc6e32d9666df7e9ee9dc65eb3247600cf8a09af3f9e7ced1fcf0a0a6fbb8681b47f3c5f31e1cd6b18c795a0610c6a5c89d3bc1a3bdc6d1cece2b59b2e93ff2049d2bd74d33525dd4d7809ec0f4c6fec234d28e4cf3e72dfb8ee1e69e77a2b71dfde1b2ea2bd5b3b770e17d1beb5cb8bf387d4366dd360a983acc63bda86777e6ce7ee83c34359fbb4dbcccad855335a7b3bc8ba41b3542aa0be415a8e94524a236bc759b5d65abbabd5b43ae39cb787f6d0476a3b22c6c0c422a5981645609a4cdb042df75557f168b971112dd3d36fd89db16215fbd4b03a63ee2178e79bde16118882a6141781288892ebabcbfbb447fc09ddce4a1e42228bb5c1c4342155b0ba6edd5d631667dc116f6d8cb5638c5d63b5d1d65a4fe769508d2f123f37c9c51877c40e9e404249fe5c1dc4da60473ca3da3a8e8bb225c30cc3688fb75ebb41fd4829a5f769ade222fd48551b0913cfd7aad55aeb069a256b874d8cab74de847bb40e05cc9965f6199e73621836b1b98166490cbb1a5e315d88e461c22a39b1aa038a87dd369f6685022f48c51898f766295a292e92ba98b5b6bb0df2e98afdb5dafb7436673da594527acdd2695f8af7914bddc5ac84996240baee18562b76b16bd1d51d8dd7345c24c667d7325c245ed334fc0961d715b28121dd83d50ee842a059f2dd1dc101ab15781f3493e7addf34ed949230efcc47538e9464c95d57ccdc49903c84d42a2ad02cf97aedb00a21ab9797fdeb51a71039a46a9d25c64067ed45e8e73520da69f67ab5ec0669f545eaa795570c4b72d46e7dc54762fe2876d1c77c84e22331b74a987f9e53feb33d44e2638f293cd8c3a77b3a2021c40e3ef88a41ca2b86a21cb1abaf92d963a411c2a8bd5542e6a2797640ad12fa37f29a8c800c5f2f64a1321e72f0cdc7a7f6f0e9a10018446bf5698bb28ed85723f10c9fdac3a787028234ace1ef27d4bbe8618feea9f61ab991bb5693c9fbe9a69fb012af040c7f2b335e3f9a805bf437f2b34f7727c28d4c7109fd2dc5c53b334e475f6bfd6b11995b25c4bb689e6f0c5ded43cbdd8f7182f10111519644919261aef7346d835d10f67864be8dc44f29bc68fbd4078cf7c7b59bdd0e0c65571bb911fbca4e05be61a1a309c01f2449b80e2be1f00af18c9fa33e92a3129a09fd39a217fe14997fa640482a9eb6512f258d32c6cbf98261cdeb499a3c5f2f28c9734e18d244c9ef1e29f187c563b7eb259c68bcd42c7208028e1944665fdb6257cb1ba4f117bbbb5b42286a728d0c5f2f6c6171bd2d22fdec35c345fad5a3a7b8483fab2e2fd763aeda2c2b4d5023ddaa8cd54bc5944a052444abab59aa2964cf6dc5824ab1c70e28d63a6bdca1f84af68a53196e09643f1a029b255f3d44c93c19be78789285a290909fec5d9be6dae5f4d6530cabd43e763f24cc30cf8cc12e087d9d427d2b8250eeaf338dab31b7d676ecb0c32fca18bc15149e911b79483cccf213aea6f0e4e115fb98c92b943da2ff649c25fa4fd60cc8b0907d12ecb03f90973ff14dae41e451fcc49303f13e1dbfc306bbc7d67ae7e7b72b2daeb721bf6d7102915d50ad97f3d24e8d6a8fdbd42ea3dc30ae5e7a7be963c43e3d3377e361776a2f0daaa75bad95bada72d5a6c92c508b3b77f96ca8e56aeef1b0b340bdbc90e9167f1547fb39ed95dbeca6abb38677b46ff56eb66d57b8659cbdc9f3b03709e1c73be6d97ad3eb4d17fe6459e9dab67507c4d5ae4e5925e76afa0d4a5497acb599bd3b75e7877d761f36c343b96fb1797ad86938689efe4998dca74fcee4f9fa631e933ffab4d67aace32b767569867aa35ae39b0885a4a4f21d260f917470438261d8bb1b8df00ed5a456b1d80161188e599a55e3168a7509b35dc230a27e17d3c0cd0a75b62d2572fd68616b727c0749b849598a1085dc72498a64e34a1b278baa64b1722e59bba8c62a31638fb2d411b2e95612a7a41dfde6ca2d221cdd36249b47848b32b2a1dde73bdc4a1a1391197bec25908396747bd7727b23e14a87f33321b75c33a36457631322ba904be288349b84f063e3fd1acfba7ff0ae9951d7ae9124aecefdeec62ed7d559e29d20dad8d51b8c14ca5227113d61230582109ba86ddc266a1d3660eb482ad3aca2ee91efd19eddbeb6512260a3258b2a7e38c262850b212851a1031161e48045d10d21280384496252e4a0c2c701237415352b6a1c58f49f45ee67f8222386cc1733740b276f2f23feb273aacd4752ed66d8895029062586fd7c402d77b1a0e004654a289354c412f2b688306092c86030424c9922767c3b3c50f1e0d8f105203ec71432871264b8649524f34396524aa9c26e8f6679d0ac1d99e738c86491b764b07064b0e478cf082364c8b42992418b1032b80166091c9ac8420a29d68c1123801a8eae3019030c1bdca4d0021694f1839823a4ac30850b2ab2315474d040040b2fe4d0859919601166c8882b4ca4b1c10b29bc509124060b0436b4c860440e4e90800a1058ac916189249cf8818b08a8b490250a13190248797946cce0c5d32203969316196ee06ac0b8196812374392115c36831562be404a22091cb4b84003326cd1e60b2f669c7922490b97c940c60610783834dbf2e7bd9430f30ad3821c546049445bd20c37a8c8b2b8195be28ace12463c634bbc60038b284c5c0420632fcf8b8785182c272c6ee06ac064a02f312c6462a0bc946833b178614a606152428c89c54b0a9ce16b4c9b3160d078014d3403e7c9c2e8d1388ecee147903c5287173244f2c88944b14a348a653a9e8951c09ef8055c01760db0798010035df208ada3937cb8b2c5a80a960c1fa398d0361ce22fce90e35bcad734e47e92e1bbc91939fe6b15327c2bc16cc2e8420dea28fcc1345e64780d6e2cd33ae24f37d28cfa17d36478fa1759105b80c21f7c22c7c3473427ac82dec9bba7534952efc25c6f44735d1d266242b34c1892a3055e24426149e9f38d94e463e3f21c051b17fe8c008139ef09714e49e3e3161d727c8f1daa6bc306bef08755e35e63e55c950a43a923073291631664e408438e57419597ba399739d84abce1dcd45148612875e05cf813a39cda1466db60f7a08953a698291325c7304bb20f4c12227548091fb77c900d100a55ca68168cfa852c6f76c828913a1276481df149f3801dcf264ec9020526a2884aac88442bd88011395e8c9ad80323eb8b285843028c87f1873884d1e64126c68c1933a6c7181c01880112195134a142145e8274a0a1062b2f8062071fa26453b0807205143b80b942c398090383981864214616c38b4a2473030a7e5083c585319448410e4a64210609a87409631483282f1cc8402c5e4f6c1103121b15a448000a1dc8d8a2851bb2282383e19582c90497411953c188c97386e1529b50593b093448649185d219bf037614698c7186ed066bd5f4c88114c6490d03438f1c4836891824a1457502a684ec058ab56c5a6bbd010929f9f33c80820413a223c2607304142d1c8174c611259072c40c21f034c8f08534c6ca8dc793e10b890539208d89c1f3327c210dc18267caf085844506a429662039b101cc184abc921660545003ea05303f4401138215bc0164f832e28b551b0f47862f235eab37decdf065041611182165258619deab882e66d03c55cd3143114d2cf19ee1ab082e291461c3088a50c1c9972da67c7902068f4686af2f48ac66e0e964f8fac2c3185e4e86af2f20a0c1cb9b2dbc48a15dd1ddbdfd060034e0b15143a5934303df79efd6c3e980a8a95b85a2b1e9e494543a1dd0b5d1355acbec09aaa28779a6d8d364bdd8f386f027de04831c5b70e4d8d22347971c43e420a28a9567e470c14b132aa0947a31e3858c173253c99021545cbc94274409bc264284c08b1039a5432d438825529ec1dc9c3165f8f22225c70f5e705c40c0a48915248104111437536c5ad408440e2e74caf63cd5bdb480460c10645744b16762c0929e5424289717a60f4c24868d9a5859f222424a1495ea2c9d0c5f439491e9b7e38bed35841764785986af21aea8618829bc13e42ccc6a8d074f3c6cca10467966f81ac2ca0b08352f2d6d7268c9a183a7caf035c493bc2ac3b3210315bc1a5050f14e4920f070b8e0e0a1327c75d121479357972939987836c3571729398a3c9c0c5f5d52c801c44b88321927c397105e649ae14b882dd46c3107105e8462852821516bc83069984e6aadd5ce3337484c8de64b0ba594524a29a5f493d24b28b8131110b5d65aeb74a2853e41295d22537abb24539ab5d058b09c1c62f02206264e8044950b383983841946489471b4e508670b528decc9500e2c60b3820bc88809c19417f8900227598860024a942d347023d83217b6b4c001f1667b259a12101303283770a1f20516276050410c49304871e3c24f0d22879ce885114f96a3f2525eb3b8704171b1726a0cc3300cfb542381b8a71a84121886a607221c0040dfc7300cc3300cc3b019c40c4150914130e9b63491673cd59cd40d57eb671acd0b0cf3bcd7253ad389160b84e944044435c2a6132d385813230d68c83069984eb02043a811238618464f843081981aae0841830aacf02108214a1109a32e1240882e8c58734408b8e002648ad1183d4081e2888520ce642d5cb1319d6829614db4dcf03942ca182a5852c50c2b5800a58b0a600843860840c04586c985869939e9aa265719e45ab74091eb6b4b1444406c22c8950b152c6b127304f10aa28cc5a2c8c1a5470c70583831a9ca62e47ace4badc260c98ba3b196e14b4b173d86d638af65cb0f4768b142abaee2915ad22cc1a1d2e28215a00c66cdc9f0a5e595b10c5f5ac2e46f0717229a6c61d265f8fae1ca07cb6418b3a4f14106545ae88cc353a5d47829f8430d4ce69c2b35de0f33786aa68e5486af2c67e42dc3579635f9f3deacbac0810395b872415d5df1e2bce062c6324b74acc0564081e1292097912658934f19be4ca0427e714f704cb0c4f53c433730a9828868064d44c1040b0d301c0b1fe8c2440e515cf0a245879f897d9a1529a5208009830a117881831954fc7c2a1f96e8bc7cb0c1942d79330217d4ac208c26535cd1435e61a5073bec678fce645586afa32f2a4aa50717f28c2d68a8098385154c2cc1a54a2cd3625ed00412306891e24b19ab34de54f1e078b3565a7833c3d7911039fe08883ce73922385871e582279c1811f5f0c50f39fc7cde91966c852c9f4801ca183262d0c0c5eba887a31e7234232ae926a49452c686220a57b712254a94b83a0aaf7b4cf7d0482f6631ec34d29d207a7b8cd22dcb308d3b14e5f8cef02794b3d7eb8aaf5a35c195e3b51fe9574ceb8ff435ec23b59c5d66f54696b4b37d93adbdbd3664b56d6dbcf37eaec6ae454b67c440fa106353b628db6adaa5a456b3b5da63da5b6a3e9d61512339cf93127647b05b7a5726a5911bb9257fa34531c55e037d5e66cdd941547dcb93d51b808a57314da9329a1dd68a7782da36cbe21d3a39db3db47beae7312ba5a533061bc441fb4ad1952c597e1bfe844e104292e40408397045234279fb766be446e6ae1199b7cbdbda366ec61691f978f988b1db59b1cf07cc26cccb1799972b6cb67bbefe8a8aa009bb673ce14582294539e6f96d6e5b9f92a8846d7675390995b2810000401000e314000020100a0784a2e1604420477aa03b14800b83ac4c6a4a93c882498ec2288861188641c418008001c018638c41e6d0d90030c4f70bb8b5fe2b5091729ea53fe768833bbcafa4df715fd4b7666e7f10c0559b1d748218077aa1d1979bf49a189173b86af6120aea72117a1ff9f8839a4f87353e9f3ae8ff181bb174b5c1935b67773f5e088dd58d10ddef273061f3d4817e9c8850fe5b194f259f368ca45eb20279b167d0c5badbf01c245054c62228dd62605ed991ac3c62310f1a371529ac2719ca6533c54587ab1d471ca086ceb8386fc2ebd199bbe0ae0f6d080d1316a6bb72bba64bf07cc06e07e867e818890c243f9796cf976506881ba69045e4c422fe30a91866ad80eaa8c9e67092e7c8a386240ca023ec9af66da07172dd20756dc06fffb9df3a7992b028ef3b0b94a8ae0dc2714f1803dac8b26bd65491c54966d488765d8ef4ef4ca0ad84e41fdb01662bd1505d3b1f03f5fc6de13dd9c2b1da90a7e2417f60160943a5a2989a8cbc47d5b7dee8cdd5beb2cfe4ee50dd931908b58dc558361b2e03f8629621891efd535479543de50b5045bd684e35aa90a2b81629b5e3cc46eb335f7f3430713e1976164c10438611aef40cf7800e866efbd70407a68a0d3cbff8f9c0d099512f9aeecf297624e6699b1f91c223e760a567646f54b0bcb39809503baafdf2038bce4cd4870a0bf789b1539c6507c38cf0302f5d649cba4191f1987ab2c913fdf7250f4474da8d8a4fca29288dcde484a7fb82395db3e0bf3052917791b99d46e1e838a2cba8d9b7a96d197431d778627dc99029e0c51e7545aa0254f092731bc01fd4802db2ad647d7c1702c9590ee1be3739b6989be0d792fc865ea99d6cf472504a6e34988cc8edbf320acfa687bd5e9c94d941ea33e91c29215383f652aa572080952b66284f53191bd29e30b6db1a1e8f654217a718f0a4d2e2b1f539d911c75a2d488e9bd3ad8359f9c3e6ae0e45a64a361f2d7ba7c087a38deaf090aabd3d022c35d372a63021f38578ac32209a9385277626a8dc33000186a28cdefe6bb24d1a7bb8b2d2182126450bd895430270095764667f576b666a7106b08fcfc5d3554aabec0dfd96c39dc08ec260984a272987c7ac5adf91eec2fb59f592b838e2b035452acbf229f4601d005f188af81555dd0523928f7bcda9b4098b4922a930c20aac34ef7ee2e855b17c53be78327617283ae92c5327b677ea50e9525ccaf8fc6c40f8258dd0c20418f04414e171d27c76f8932581c81caa0477086f6295362e5012bdf7c8f31260d99b885874d3542e05b7eaf3bd057d829def051b2e1f6501682daf189c4949982891a1d11304c4276749cbf54139ad1aa3a805fbc6d1c9bc2075e7161a3ee228ef269ea692302a7a66c50491e7eee84e917b04fd35b8bea9d49068a849a75796a141e9fd50321480dd1e868c85dd611a33001177a036f7f81f6ea59f0b96cb59c519c37277c4978acf7c94c85905423e4c5dfc61b84b8b160c917556f0d487313287576185450aec0acc8476a3a813b5504b4b7676e32ccc58d382230616cac6e782a8d5afb034e965123b1047f2cf51f6eec99b9fcda3ac0974eab718f6e2c34706bf636f1630d04a45d14e3de341dde721298c5d70f2c98de0a082fd4ee1451179a0ff09ea0317f2d806c33a05bebadb3bd30aa0b52b1914833a51172edbe36e1c3a0e4eb3c60256ca066b52a7e5d63c7783cb489c4378a8897fe1ebfd89a23558da5559589b9ddc75a942af6123f1111fc16713c5a33e82bdbb7dd69d3d41116ec80deaeb52df80a0eb10da9f79216beae34f416ea128b6f65037a59135d44f78efe76095d2d397f64b5d57aeaa289ce46424aa47fcd96c44f877f9d50340b058d0e400ecb1d5effd458392ff276dd133dd6f0eb28cb43189e2f6935b11c99e8010b8131afd723a8076e87e4c1b5fa3c98b47af4355fe83b2bbff06de9d77b2fa08ab115368efc641132bb24b5731361277d00ff39d03c0058b50beebe41368b9d5be60d120aebf100281489dcf3f5800b83cb1d0d203bd549193f8c6481a50e2c059e7c8b1ec13fdc7442864e1277a70e96a0df2f2ba4b5ad821984150a6186f90cb366cbe06b8aa1c6d86c0906ea262e489ebfe11ae52404cdf0ea362c7086abc22e812443a4d463b45bf941a6a2f5fdb8c2425ccab518e7af573c426bbf6b33d0dc5e061f54f6d90114bb4f1aa555043e0f1110fc68f3c16dd2b73f0971dd4c87de028f0ec4b4d2c9f59ae3d82478cba3d0f89d5c993c7d5b8835ecd2a7d5b7ab78b4db8b9682693822d1c13453339469eeb56959b7ac7bd61aae460352186e81515440970b78852ac66a56ff95c0a62fef8909b768c01eef16271ea1f013721ae7980031738adecc1c4e06e2d96f65273cfec4b2c76a3103eaefc3e6c5c6204d30ba5b28a92677a526309aa225e7aee32e544558c547e681ffa51e3e9f717fa9093e0131bcd8c7eb0c91c7c8e40d4f7e24df9d163e5661de02c8c51d2feb1edc249ccf96ecd23ddb91081f70e59a29e0a29b1dc982e3471b34891fc07c5c8677179dcec6ec69e02add3b1e64d11225c997420e351457ab90bb8d93eb210d44917aab57a0649a70761855fb3747c5da41245e0b6161b4e7c7f2d08e860c8790a2f0b07a8f63e80ed4b6f40e378625d22f1622b0685a883d97e5a72d1c73dfd63d463b23fd3efcb8e61a07d42dbcce71c758a970d422fb8b421377a65ff61f05d877ba964109a8dc8027740d42c64b7eceae5f7ed795407fc623b24f749bd34a42eb88100b4b9390cdc0b1d077be76370a4c4c3b8245c70077970f048dd9a3db4ad91932ad64dd5e4f90eb1204b269b7242033588bdd4e8a1da35bf8b0cc15f4d5c23fe9043b50abb031d9977f71f9c4ed4bbd796d96f5bffc65b5a3f0dc03be1501d2bbc92f171584d720f51b621c8d8a2200db4ff098bc3ef149f5c5fbf9afd9f343310481e420fac1abd80ee8e85804ca522609f80dec5216a5b911e6404bd198e5fb42d81c0daaef7aba528bc7f74996bdf8e02a61f73f65517227137eaa848246add2194123c263f738dba459178908b95e60709b730d726747d68901e095cccd1dfe8e66783a388fd56f5ada710c33f7c76d661d4ba9d5854487f73ae919a17f07a7d5dcf263c5469db958c47eb7d8c5a68449f53c01fdbef52698d915fab88808e67a1e23c5c7a6722cd22ab8ef0a25315b7626b93ee45379cc2302a169b762a22bfc4e274aff4a79ce06c04f6b4ee6bc562ac599f4bafd8613baeff32d4f27a28bee2d2b747ca10c0d449f136b1ac2debb3f6ac8eb565d6d3942d5c598d63eab88005986d7f5a7356ca2b8c888681bdf5afa22c239b0711c0c7b2bf9525c02f6823137a400b3c2cdb83e303064649d59d526a3f74d9f3a44d4e6cd13f3deb45c0f8b28e5c43c70931da23a4e633a1c6608d028818013a87417c213aea043f9a863ba2a748c4c5316d472b83a96a78043b219e718fd9808dcfc14d0e4677d9268eb310ed24cde90a1918296427fe4242d5e6b6c14450c21c39f2236041fe9d276eb33686f2c97536f6d3c886d840e81a6bd42ff3582668e81503883170276f2796d559c135a0df9aedb2e58db4b37165b9f988c86f35d208eb6112801040d1d498cbe29c27059d7cb50b514d71ed92c8d0f7a063cc4746db9ce71cca915edf57d3114af5b83726eebe93d1a151a2bbf72d78eec6cc857e57ac80de1f06caba5d25ba199b0f288ed0f9e930dc2d5de84b540fcdb93b3bf632b3bea6d84e7d27c6faefeba88fb475b2beee081373f1ed271011e3711a7d1217a62d60a67ac997be5ebfacd8165b6c21047dbf75b5a6ecec216bec0777e1df9065ed23a9d7e4f315c39a2d324d7d8fe920e0a6d7f63c6194391dc8890a311175eb8301ae6815f26a449fd3b268904e57a00274502046a7e3fa3f60ee05ec513220b931b4a916ededf78dcbecbb16956dede19e618fc0505c73370037335cf0b38cd4b4860f27a21893041e2627fb6dd31b455b2715f2198e1b930154581163755e45ea01515f87b66dbacd7f1818fc328ea8f8e3926ed9b55bd3a371b83cf9d49f41c3cd61bea2cc4e523d131a5bded23ea53fa8dd2146decd21e1db585cdf0bfef292feeb3be95b9617f12be301915e39a1b9d3e29f24fe70d7848b2f056c6aba0052a4cc61c4579998339fb77bfb1d289561961f933f1f9f9a6f805cc84135d22d93cad7613950c3e6e2d19bb3efa72160c3071cf2aaf348bf06007209e6deb67d7ddfbc6cda026ba42fe6ff22a911d332ac837eab2e145a8a7d631e8f7b2c3371a699685c3396e98f731daac640f3c545037ff2adbba68689292a0156534cfafe2cc9fcb40adcf5b5bd05553a6e9c093b46e904b724bb6a8e4349944aea18474ecdbaaaa3441df24fdde685130380e065e3e2729042fde994852a145d64fc5ed0479196a1f57851b093c8c2c08a0c13dd76ba8a67b750ddcb93801d22719cb4d86945c99f13a98de94078eb50ffec13c72df7b8a9130ba21f48554fe00eade90602330437d3a98064497d23f83c71050e306e497281d016d949aeedc9c3cb9a68b40a57ac8e6662c64f3ab2e88252119dc21c885809e7d2cce94b0ad78ff03e1c8b5fb9dadca14d801c83d301757086ab8b1309c238dc926245e4d7667eef23755ac5e42746915062eb076f799a5af2a6b543aba709a2842d53c39dca7222254ecd45af110b0e5307dccc5f0c82213667266111ca7961b3a9e63bf719813a9e212899a3e10eb1238dd0ca19edc22e95a2c1ec1f56e90656a4e6cfd5d810c8f7536b110d268dae253692742cd91175346d30f25f7b994b6c2a67fc0df46f84364dd20f00e77c20e037f4c27a39203447087003c918fa4d9b0585d0519bfe5194a02d8f3c002967e222722cc52fc4173449b809c98afbf44576d3dc9db8c43268e8290c4ac9dd6b8f9ebecc1a1b4c207ec9cc9084d1f71dd0fe61bab6bd8d06f23293a0a113d18da917c6e94f3a889ba098ff8e2b7d3e83df17a17c61e196cc9b89def00638708370cecc1d408d585f264e83f4dbe59d00fc08cdd80062c952267e0c93bd495de696b64109b7a3b2be99b599abf82d6c1b27381e8ba9e83ee387602cd7952c12919e94881fc0c8dee4cd77025c93437f27cdeda6846a6ae2ece4f5be149db0af83d1ccd551d58f53d3547c1752d901914b0ec1a2698a0f9e0a15d3f213acda1773435ef73d35de3ecd46a911108f82e167a5a6f790f326396e6f8e339c9f56014c2b527da26f303b806fe75ffd14f1cde24e28e37efa08592bbd5a19b8ab7a14741056610385d9b1cbea70a57d651129e7d96be14aa1e6a14872e632833e7a93400eda0047da39009112fd3b496933111247c7f355362a93f8999553c15ec34f1e370c69701f2db008d5a69fc02df06e252bd164edd0dde2cf57d36df952f744c71a26f505c3d6d5cb7c3812b885d93bf02c9a72f595dd662786071f29ee5c33fed39b0904a29bd4c8d867e38850eea0597d48adb0b52b0af931c12c6ad75d4d6e71736fdae7c2d1fb2d0e669b7762c56736b8399e834448961b005fcb4d3913d8e18014ee37a026efcab442bdf7d189df264eb180c37f931d88dc7c33e732ddf2634a8d5fb06c43fe8ae55774d0527f20ddd216ba681bce6c1f85a5a2f4fa1e8cdba0f2492f12567984ce3ee23f40f7527d442f2fe1598793d34ad083d76ca595634f70da7237c87577944b2b630219eefdd4619af99b288f956d1761abb5c510f1b078f3bb36eb8208a088c4331eef6fe96e7d49f51c4ae3860a57752d1372984c0071a6e3c393169bada768884e029277bafbe0c0f005fa86cf311f64b9ed2570c6201f27d8e16a564d55d809f6774a7f64ee69ad807f1e6be70c0006354c7ef449e748777a5e88201adce7a39af878e828dbb0284ec6fce80360a81aa858e5e34b0dcff891df8b62beb5909b160a152a9a3349087e34d85da37731769b4768d9990907da7b0ae59e4769213ea650806aea8112ebc382b04c4c005fb0383d56c03669627a710e54aebd2712d0f6295296509acccbca94162d8cdb20ad31eadf110ad4f6fb90cd7ce680580e260289f49bd66b5d766b6de67a2d1971998e04eeea66f879cf918b379a813aea8cd965f9bf52f8165ad4a3e30f0c33315dd676eb9ad44d7a882c43e12e2b04c3d106c4479d384c1655bbcbd1ac61e5944f46801ade80b7e46068516b4d04b74b9a94dd4452cd6264afdf369b3e286be3177247accd16997dae5b7becd942e3aa7d3a4f9d57d403abd4ced4805cdcdc6f1e290c144bee58ca950ef4204801ae075d3572740c423cdd766c22fa579e3e4071fc9d0a20eeef5ebc6685b52674eccfc751ae012196b41f305a743885fce983c70700fa4e18365a14fb2f24ed5165b955e906b3b2f102751aa05f4fe74fcac3b8a3030b2489be1e8100eb0d0c7bd3113f27cad5d150683cddb72077f6fade0aadf4ef362542891e06d2b6d984daf46ced8bee81b610322f9b58bbb4fddd36da685f04bf942b8736b9f0411d8ade8e1dc9e23719cd6e3f8732aa8b2c061219c1f08a0386c3cad5d5b121434d0cef4676afa53ef32fd624cd90078624ddebaf0e39da8e3b0ee1ccab8df7b4666e808ed0869cd9c0ca9a064258707574fc436d0de3a9e95129c3ff977bcf40eb46912844adcfa0437075f469f7818344db7111c42e02011eb0d65e197c1c13c9de8ce25762ae95ced7fb0448e69b20817d86f5a91045bad7d08a98ecf5ecc3d4d5bb4b038ffff27702a76e70ec4b02b0856267c0085ebdbf8a4ea2e5c6e32eef8fb5d5cb7dbb30840aae3b90002f6fb7fe8f8a92b7717585b377f33b56c746560a4633bc96e3ee783b23d3749660a9b4703bc628864e85612353c57de36e9a22d8894bd948a33b8b51d4e1674e9739284a0953834f2b7e2717c6a8acbd9e81d484ee4e794aa8b44d34358ffb58814e451d3959b5107fb23bd0fcf31be8cb377afa95e039cfefe841813f4bea706959636745a506068d6aaa3ce32f6ba8fcc61b6c14dbebb2f135e78773e84fda3f5452d712cc909d3a9185ebb0c73e0923a9e4754fb52180ccbf1844f4bef1085c92366b49e8862e0d7498f76b300ec946eb850ec849a5bf9d07873e04ebc47c7817aa212a318dca29a5c1ce4f78e985c51c2bb3266e47afe13238cefcec7866e138f5916e082318e286993d30bc22e60e6ec3571a32a45f1c6eef8bfe904d74f81005b65f52a83c79607d2d628c8b9d8126993282d0f6b17f568cd92ce5d820ff990b7ffd2d3b5dfad400f6e71b0b5afcd2695feda09aea042903985d519a1032adf14d55981954c471137aca25c9d956cd00cc17b8cabd26228f79c83829878c06a64f76ab840aa696c2051600881022a2e94bb0e6a33d23915965e920b47856ec8040c622e1bbc810e23a61b6b7e584da36427854d30dbb4b7c7f47124e8c8951612bd22acdb16766100042a86ce66c104b6f54da2cfd4d49d4fc39016bd49aa9f0e3ba0c90e2a19282944a569f78ee2417d5eaa5f2f04794f91de789d41c8f2a7ee0d5a82082a7620e05e3ef067ab9e6a13f0fb7527f4b43d7f30e73543017a141f6cf133eed6cb03c675346bfaa3ac2e297d51e65bc3e5ca6c070e9ca30f1ec70580d08cb361eab3a3ac88ace001bd2eaceb991ecef6d991bee09e36c45a24b64b24ad489e5aff3e183ec70239c15468079a97b9117c4454f360f5359b97e7c3f9c348f962621091047033390db2320e5fdeb514112155232fd7b354affec7c72d5a232c7b25017994eab2089b5336439e66c19fc4183690d00a2d195cc180dfdd9923c8b51e7b3234096031ab6355e392eb438ff67c65f4b9a76a0028a1bd5bc9ad63604c6ddeb83dcd6723c72e1f9ecee8c328dd0836a7f7349567610b4c4c598c73540b4d65d9f896bf3096ab46c4715e760cb27ff6aa3e81ff0e8fbb295ec2287ad36212ab2b032985398c0b733079f166c5684942c007213ced5a1e8f3db838207748c63d1aa3d74a007bcfd0657acd46bfba4f913b1de414c55c63b1b9fa7647eeec7f81c53bd3e7b49e2c09cf7f791a404369f60801e8749ab717aef9dc3a4d429ad517a5b1abf0265f1b0bc8b56a12a100a861967c412870c8be5d5e102f49937d68349159d1504821caff419bd2bd6b7b800e8afde755ffa9ad42da56f4aff50f0a1b116b3d53f7e94e306d50ce9dc65c4633383c0896cac21c97350f6526ef5808e4845f6141ac64a99538091ab768e0d3a9d084d511f458ec82ec3df7328fc1b17ff788a9af3301a653c01ceb8361ff81f0ab6cf8c07c67597f27e8043f1c32a6e03477ae89a5c09cb3e74d6fa0c5b655c21b73cb16ef8af5db7b3bcdb0381a0d5a48ae1d1c6031d9689039d4ac62afd5bf9f09043c84769a387943860fa7791188280a0c7d718a069d813c302946950fd35d01441ee04296205fc097822336e8ed709fa7d4fece8bd6a2d12b2593c194899aade8884622ab6bc3555b629ae5456e2f73846ae752a00ee1411cbe8a17478425778e6f5ff070c354f0972993ad55a7e75b27464e9555e042460da8cd1acd9fd240afe0efe6a1d7023218fac68de85b8a3bf932a5edee56f7cb56b6b731d7b4c6d2ac9732c1b6bca4f4336a571084591f28ca8bcadcea5d629033efc18c2a8ad54b1a1ed0db6ce8c9b22df2427c2a727a53caaf492bdcc3609c80b54e5118f0a5acee6a4005de288678bc8f1c3e26b8c7f86fc4d217067dc6c2a9689901a9b54aa14c88f3b2933e6916a9cc4612b2a1bacb56422a215b8b27897119ed632d1024f66abb03af5ce844835b7eada1d872a48d0e7b80ddc030a2cfcf7a4a09da0880f709392264c0a74a4e6780a8a1eea390afd4944d6b7a537ee43b5a836b5b9670d242a069f9e9095bcb1513c621a83116286340457170d3ec86ea0c3b90302c1ad1041c4b8d6b18af614da31cd7fecb8b6cf0662591708895fd2f61228334d66462478b82713f838fc39d375024215c4ce84bb903dcf40abefae14e1130820a4554c3e390b4480bcc9c10a7bd9f6640dd4283b5e8ebad1afd272cdea3785da8fed9e2ed4a31d6786f55af5def1974a1664769eeeae40343026ccf3e602d4def30690c94d625e45dbe7a72aa84582068a1c38f49b22c3518eae01165287a2ea1dc1074b03f5810db238972d0dc80f1baa5373635c7aab5dcb7480026afaeca2990f9cec6bb7478cf904de3aa3812503919af7735cf17fa01f5fd11fa479c145699346f010641360c6ef401d2b331176bc73063568ac4f2926e987631fd8a7a05b981cdf1691b981a1b84c0e7580f9eee44ff41203abc24dc598a23bf1de5555607ada62d47b920e81f3b4a04284e1420b58350f1a8d60cf88e4ddbe9bf02a42c9dd9393bf1e79d817b6c8413c3b3c8ceebe9b13bf2d6978d8f7c9c948e3692986a894e09ec7084d57c1b9083c2826b0c1dda1e4a18043736d4dea92da80aaf8a28ddd6d451d71983df579f15033a7cb0102b2f04db95f72ab27d868b880373c72118202ed1054e73a902493f7a78514cc2d52d5e2854e39d7bbe0cd3729b26dbb313135ca3deec4636a0bc9141a717f68c6e6cf495471bdf9574522a2044a82cf17fbaff6818bb2c30b0577ac8e62aef8c90ec3c9172175f58cf5039ffc8402fd23670455da02b0b4605ee617c65cf4cb5d3fce15e266e70a0d94ecbb5013df4f3fc068f103d0c06f5cb6694c7f46bc9e0a9e46c610053fcb9df68d563caa655631e8df91666d25d53d4867bf02d1b1d1cc94399293c1c881d335dd2aaf00bbb32f708548912ca60ac824e8165b9d03b62d3f127326a3863a9a0a16b5c01d09d7ce24c18ad54d3c52b0aa5a79c2b4ffcf9372b5a150d70a1e5b912d7040970400c09947af93513589bff3b2853294e6c41601c3afc44042f16c1c95b41ec1ec037a272e957a2f7c5f09276805878ed84b906dedeeec29a7a485b23493e816a3fc138960d4539e4c76d4608a062acaa7a38d4023e4c4d602e254240bfffb3ba7282e4e1f7b2bdc109f2452822b08d710ba50fbd57da27c4d96a25e15183db3355725948be84f15233d34fd5ca5a878814020f3e9912454e6d59a3a6e447919dd84c464800c2f7d209d70211c6e82b973827ce363928dda2a30ad64f07cb26119230ce2e6298fd2101c3dc470e4d9ebada8f0c0e098c63b3d8dc7ef3660e28a827aaed1e404e501a8354a0c26d051b0ea54150a87d34e8ef4fa4f34832296f6cebded6bacda636c0847f2570fc0bbbc8df5a93b6486df509ab9703c2899c339dc457b45b2cb327ae5b69f38977d799f5df1026ed5fd4865abf21efb61f9dca9f4b9f26b5d232b4fdea9b67e614d8e6de66ded7bec4bde9b4b9a395689ab45c9abaa4b98527b65ccdd72273c19b44cf538b56c1dfc64226cf0db249b9ef3ec86507a913be4c2a16091c6c78e99324e1a07e3db7a57920e5190df43ae3daca12189594a3126c54f4234c6db7b929c6973d9a25e3ab1671a5d86c517907ec45c16da79bb9d4d9c079a960518bc0a061d8046c5f2f708d36f88335bcee029f89c73d76c57f880150bb98dbf6ee00fcd2aa2002fedaf9d4dfa51d5312e003deb822ee9699771bbf76b8da0c7b58a21746b9910253121400aa28ceb1215980dae351194e29690fe3c36ef88c04bc46e39643bcfd1ded7931e8f30c0ab85bc953066068a6f1054fff75ca4435523d144d7fcd4e5bc88101f67be4c3209cbbc3d172a840297666346d749b0b99ee521041dc1827dad2fddb1a6a2f2cc0dab26b6561185636ffd9a2d97fba98470980746b85c1169e36c748d9b90e13c9ba05b21f65ca7d2fc18e799866ff729a3610ff531d52821cc6d2aee700a424799ac3f0c9cfb15cdc992208f3b311fcc2715e3a8dc78abe4f305923e054e6358c1972ca1195dca7936e196d9fb45d494f002feb2181fc4e9764b102d3aebb6120d9109160d57d574c656066a630a0105126f1eef48a4fda7e14abcf75e6e6adeae226af9bac749861033b6a9449de4f5124906c22588961913e0c05590cc0a928e026ab798b9d4ebde0ba2c5e46171dafb2693d4078c542b11f88aa87f4e6f07531c1372b90c0e6df7d627356078cff3b19678568c03be68159a364c05eea0629db952b5df6e0b4ceb6e6bd6260c04addf36deda988bb2ac33e3af0f0ff8461ad5bc018a815e3e24a42624612ad5a6adc6ef385636d09d9ae60f54623a721be41c32f0a6e010112225257a8d21c5566da336a682d44064f6301b49cd30b431cdc995353a1b717a2a37326c68c74ae80990085767cd5c28bb9c76f5385bade3d728b14497a289823eb4bf86bd5eee483ac7b6a9b0256d589e17bddd86eba676860b33b4d4d9b3f802333f34c5ef76ae807c9b0d65aae900b12de7db59b1e706d584846ca1d088affe3d754166bd8a7433df9a1c89729606432e287a802ec3dfae484bc6da9bf1a17b76dd62715e51fb55508689e8301e916c5be2e76f7529115b2a47c682f161fa3cc4fcb38f6a11e5bf39a3e5b22334f1757a2a078896036eab47f9d5867903449a22f8a4701052629bc99ecb752e261798b340a57d184acaf8823036e4b3ed76ac57bcd0d5de6b5979cee0b9923aecfadfd498adf98c415f2a5b0b8aef4bb70ed1e974078a18809bf4695b7fd4c95b12153ed350867353908b7e472ee27c3a2b9a0cdcb5b710d3054865a8175199055ebc9bd3871345f62c1ff57fcb2d8ad6ca7c6c7fe6b3e21955c8e4203d3dfaf3319b6242c0e1e85ef4f3f59032cab1da5ea07e4d57bba7a3e39cd925341889a77c04e303fb33a231efc9c418a32af3936852aac76a7b3d9980bd90052cf799eee543f2998eafcc903052beed1e33a5d06b267189e045bbd3d3f43cf8bf56e828848fdbec2b9fa661cce8f3828a7e7a03a6efd6c0c7e1f8918e244b27a2425ae60e4e22a0ee970a86319161a1e1cdd7bf7c499ae60594c418a01eb3724c3a1a20273cbd32bba643a8d929630ded2293c123ecab4911eb46e68bf643bf37908aa7266b6c0cd60186a8979eea6d290a083dbcc94f6870d1ad7f381e564abb820871c7edc81f534ca45401912924e0cef8842f740274e94bdc6cad60f51a6068d0ef9632e25c37c426306e8cbf0c6062c7aa96892544310b2d9a0cb52b2cab77b66b879b2f4d7f0188d51a089137984b558fb077d6be686ccc0f812fdae21ac6723f3bd9d343c8233705dae57266a353ca3a23ec4014c7582d7d1c2c701ae90707c44b0e397a562dfad8e029aade7ff568d2fd5d10fb7ad301258296dee4d2e1c6921a3056c1349c183dbf5ec443af6a9334eea5dd79fafedefeec9e1e33c0e266902c9b4bb8d563bf513fe5caf1f56ac7ae692bafe9e0a5f6091024334dfb28cff0870611b2c00b49e9ff18a9faa2e91ce2b4837f14efde2d2fdf72b1507d3d530f2d3af0ec6ef984a1aa763582c983df96b0b9e0285553de48938c5d3957be28acf998c5c69c83234df6567b386b5ec565c3829716e9e37054185fff4251c197d2eb4ef9a5ca359b58822f595d8268f887b20fc82e021625852d4e53bf30e69c930df322e38b74a6800fafe533b531176a92a1962ce782388c210479a6c89d41775268152ff9faf491c2b8194c6d5d943196a7f51cbf0dc7b081575516c1b42a2b48c4688574bfa53dfb444cdcc22b70b11e04c963d201687ce7015265788bd2af6a69adcf8bbf6060a0093fff5e76f99aa62f3816c8cfb2387b9a6dda82c26e161253d03a5d2a85fd72fe0641489dbe20ec0a1676c61dc179ed50c79b66235690c409f6b63566e79d3ee80c22d5fa286336f6bd66e3a8d2cbcb9da3d4b2124f56a4a2aa96e19e66971b4a6950074a1a9e9dee364f524757f3ad6d60d428a81577bdd62546af396cd6491e2a0d3a37f5270c4d4cf119c1864a9f553288312af1fbb0de8780573492ed6738107200ffdd5a87b81714b7c2b9dd1ba6f27392604d20aeb8c0688e53bceb4d296b36b59e51a374fd502dd1d013c9d3e4f88ea5515c116724c10dc09cf3aa3c6cb541b0ebf4d307d46a3ceb47fcd5fd4db44b3c87868c8c4e6026b0ba1900553d20a5b0fd87c8591304a9e79f2b512f278993550d42de63f9ddb4361d1cde8cb2622ee6977d291615300cbe044a967540b48e32a291ab58e7f50d7d3b0510c21b74f929daf24a389abcfc95d208cf479ea896e1dc661e9e2e38a4d4724a29ccfb77d995bc574a50c88cd9ddf8aa380707ccdab64e42ecdffdb5362c2855b23273dd0ee6b10766082b0c0680fa125211f62a0ce318b125867b17c60894b70b044dc577806223483057a5b82498b459e7eb2a3961b2c17349c376891e2576a4284bd0223f7ba999e1227cb4351f309723f7094eaeca5dd0dbafe56ff9b2511fdf5a740c1e9183a9bcbdd72cae3989f207582a2205cb7e6fc8d2bf2309c2326a8c5b9eb731b568869a78f71b82abdeaf25b2a519c4b954a7414805dfdcb1925a3dba90d14361560bb65fe43ed7705fedf4e3f03c45547eca681e733d74516c5f69e3081adff8d758214e6043f712359402033f9baeccd33e2279f0469d0a5b1d3294da1cc36cb3d720223c6a69f75b0dcdbf1fa46b6fe712e16d0d81a881cb389eebbe6d0db186c1c97fa97265899951ceb6337649fd31ef5facc44c8e58e418e7142f5fe5f2f237d098023518ea718220676c63a6329e947e335634db5b4069d0a8bc8341565088a16bc2b80890048619cca0c0d8e23c5185a407e04cde4e127c15893364f27cb8f36548d4f7ff2135c31c7289b11479050d01ed4680eebb1a555634174268fcc880d5ecb6a48b98a8eacb9e52292f0b974a7d3b4e6d40602aa9122daeb23168d5b99f1c231bec3f7d4557ea6c43dcfceea6f4ed39bc4fce2282fd930cbc82da9b755555600f86c8e67a321b981ac85aceb69f5de6e8b4d3ee89a6c7cec08b2631d5fc0a7bac66fe09374044031c0d20bb99afd53cc7d7124c06849cea863b0608fe3dcf65866de0f30cf12ba8f6f5c8aa4990589af3833a85e07f9361fcfd3508e8f4ee66f3fa619179dc6e7b198ce6806b360351894735f4f61e0251dbd79bfb62bab06e61cdf0b3f12e14b75535cfc56f5e1ac67864383c4cf75c8dc765c7e1c2f4706b9386a1d8444cac18371fd1e3845cf8802de93eeb74fea1c7079bda277856048997695db5fe0dd41550c5770f9cac32c9b032b8269bfd7a3bc9d640e7f0033a4e997367cf45f82c4c9780ff90414a7f77fb1ca25f051908c1244b8f4e60629fcce1390e4ff1fae73bbcdaed2def621f1f0f5833a3463143a41699312a8583d67372bf2272092076ae743bfa97f7db61a70858e16796019ed1df1020880e31b4466b62a68baee5180f0f495f5ae73a563ba99ed2379125f8f550b082f78dcfceb079c8d300475278a1cff0701a6b0f596bb5233d22c11a55448e64b59400e4188de84c4cef7878282b46f98e8488645e334f460468013128b0adaa79081d3d5be075a96c08213b931646b4e13ba87b1bac4b2955fb81bdb435a8415a6e90278dad7762e8bd5de342fc8950282da85b4bf17ba2b4355474bbc6da2b5f194b63b8b21f2aa2f18e5bb9222538c856c16a23b75a198c6620021972714a60c17414263b5e36e0bf521412247316776c9d36f4c1c8a2180c3ccd09ca2462a2b4fe511646ec6f3cc1e0fe16d999963e0c67369d81096ed93191622ef05b3c59d3ad2466bd191e3197e7660d92a07f4f301a4bad42821b5f104b593e10ff2223997bc290314bb22e79777acf97b7dde99c3940423a1d56a8c3d9b4ca8297192760c9f4b308cd3baf50cc90ef841b2f167e5921566c4cb6b269a1d07182596401307cb21fa9ca4f091a57de0c2a7ec0de4de5cd8bdbc535f5cbb005ca75d6c4cd0e86377b28c1ff84ed4912b99680833619066457c16d5d97bd34f1803ff11f8622297930507852300a0caef47ca9701a32c3017362d2e3e0d86f2cdcd94c745c4a92f63c4fba6c2624645675059405dd8da7416e60410b4e9acf85903dcc10222ee11dd04847215dca7f6838a4a1cb9cd3cdee34ff079712a603a7dbf46a7961daca4173d2c86a2dac41c1a46ccdddd72f0d183a2c3a12b8e84456f56f0d84b4342a20815ce4316a4e220d78aec7830c3d395e55035d29051253c33c8e9f7675ce54c889697ea7260ee7400803eb5929d5aaf0e686c706750bc7be06197d628c62fb6fb9e7fd4b51eb88d7c00cd9e695e791812db2a6b32b91d6094ce9cb50379714911fd91c1ed84ddc56e32f12066f75b817443258599aec6f8fc53f16dd62a3c784bbd15364260602a3d9edaf40e6242e8b20f2cb9bbe4b5a0e3140d75a9c0ad9f5932ad0f4c8bce3e4b3ddf10d151d2704acdfeb3636281a95b6e7830d5f893cfd8d4de28d49654a7bc93d23ae5be8b6d3c6e884916450073b41e8fa8f626be5dab9c4068fb69648354d7b5aef74cc738acb3ee942224d76f6ae1f6c065a44134bef357e7ac55b1553ba1def1c3a9834ed01eb230831f333c6810bee421546531ca59e6b8d0e901b54619937be913357abe7000b46a392728f43d4cea8ddb1e1c819e99195f5efca5c17c322bb47bbb66bdb5c917b33c7df80a7be86090027bb5819baa9710710ed5a81e63186a8576562766e2b1e0922141381c1e8b3a687bd95d52b4a7dfb78d5e5ec6adf76444eddc2cacf5ac7225d2d50305356b568ac4b10177db9cb6f4f4e6766812557c184fe25ed2060079fe3593b38f4a90da03c625db233340ac55961745a10c2411c9ea18fcd2a8bd5619d3edf88f87c8ea85240b8d855e42ea29a39f5f2ff0f2248fc23d8672dc273192ea177245580e54500f1307d94cec15877a82670c178e14e6aa29fdc58891a1c15efd3fd22ad9ddb70e5ad3a7a4d23393ab521b5208411a6190a21b1f05670f30e20854d8dc3c56f067cf3ce70463aedbee575faf6a9a0fadbdd8c493bec7d1907851e98e8343bff9d57ccec81a2c448bb9143ff55876b603484160fc0a7f7a8be3afbe1aa87345fd26b6730df1e24c13ac6598ffe5b02633299a3888f0172fd172c753d3cb1ef7cff08a8052855c1fc2e6187988042baa2e88576c611fc6e10e58f4e629b1037ce16d40917947d558cb6dd47fc27dd9230c53a62425e2a6882541e8f87568dd613c20fed869ec3fa91dc33946218b72c05ef53cdf9bb388b28b73c8edf9ac21fc78ebafd8fd8946ab7e3fd6bf6e120aca3748769b157aa2940578ade1952b07089679a289e16d59eb7b057591305cc3d00708db6509148f6ebd524719c26de6eee19c94c820148b8b4480f2ca63892e939ba9253330956b82285b616d10576f9c2210db0963c0125ee3c29e0c2a8c0e501460bb26523ad7f2f6b61c2773a821ba61c66950280e301c1c00f0215890fb4049dfbe3c7fcafdd8109205a3239ea928288d3bab2e30d407c274390ccb1404133ef754a2dda210979322b903c184b4f869bda2ca3895e6f85610267a689e245c352e8ad91831d8ce9adeae979ff93dc38837e0c2a7183b8997a445eecd0bf1867e017c20eac03f899e51cc4797103a107266c7aeb6b1c66106bf868ccb66d5a48d8ee58a5dcab5958f0201c8897036102c23edd3b24a08813cf8e56aec4cca599cb18bc3aa97026c2d9b0cd169d01a84059cbf8b491eae6084e791d1aaaf7077ebd73f49e024401450807fac0a9ab30cf27f92e0965b57f536b3b860c95e115c24f6a7faba454cd8352255c91cba22ee394110ae0c758a0cf5c379ff131ba2752a1a160677b45a376a2f15b60ef25c9af1254b8d60cfd34962fb98443b5e4ac0d9361a040439d08318027e905ba395788b6d50170ce766b8e665ad2d2f751cf51ad1ed0dd999ea490c1ce9851981ceefe7274e61d491b8ecf84037dd74e91741b7babae1de4dc31bc378ef5fa23388ea15644f459b34c771a2073753680fafee546ac7b761cec91f685ef6217f44d8da7e88d84329dfa7a217750349806cd078bd5f7924fc3186389f4ad0194e217d845b04426aa493daa4d73335092fca0b5598eb6fc9609b4d204f2c4d12ad906598ce70b4aa048dcd7d96729575776467578d2e562196281cf006f1b1a4ceafefadfca663d1a6305381e5fa22fd2c84ca541881350af77b2865ed695c09627818ee75eb208883931ad11b2edac83563c8388025e5078e8e1aa525719d798c5dcb686400511bc98593dce25b266d763ee8b7ef29e786fad079400a3c304eb369c194a895bdb013aa25c40a1eed32a513d77becae086aadd649877334dc7c58ea6a4cb3a757ef7c490091b0ba5955118a0236872bd96f4f184099bd24a2f207468d4da1f758ca53cd8a0cb11cb6f1949de5b79303c4c08e3729e1635e7bc50b1bda552d6beb409ff1de450a7325e75dc873422d9f5dde1c23844ce096b5b99f2ca69467bed2d4e99f5e5465e65c3bd108a5587bf2ad45db559df4d428d6413c087b6a17bf3e60437c54034d28e8e7b51695a1bc8d5011d9f16a13bbd41956ca32e14a0d925a2c494985d2efef422ea6fd2279d09c0c866e0277f14322680802037eb0912d0d09935a917821a7d83d4a7dba709686a35efa8e3482a8fffa3567ab70e2c2cf876492c72175973dfb148402c6c163acd854cbd0da8eb1110e5dcb1bcb01c77e916627e8ff062bbd589a050534a45856834a4501b3cc97ab5a8fe64b1340abc3992786f25baec57fcac53da06281cec4c8cc4026fcb4788a23958745c41ae26d4705e9411950f84c19a8bd8cf24359ff2b52baa95aec45507f031ff2105ba7a590086ed7de78722cd38d3a9355a9f179a8928788e096aad89bd3d8c0778fc86da65ee0c1ce63deb5259f1c13aec01682eb96270605e778287eed690fca2cef8ff93db116a6eae8e0abc0e82d322ea850b2bf4880dd51222bfec7f50fb26b11f47f686514c3192ca53432b2726f296b8599b694af7aecbf1cdacf005500557c49266c470db6dd6973f2b99a15396e51057007ac450bcecb34d124b8882d39d8300ccd7ba268472eaf283b27cebd345dbbccff1e92836895c72b55e94238e632376854b50272068cd33a8f18902a84e68c86db180e92ca04e65b0511f03aa9d41cc18639c349d5e8bc6c720fa7f930636038034b58fc6ee981e8521ce27aeee3ed576d552ec2471bd1002cfb5d7cc6123ba52b556b12c1ec435e1fce1b5608cbcdf520d324b0aab9afa207aaf2764f7edae4aa7bea70e3aab6ce20dbd60139be8ec5415cbc55a27c7647659a7a5679061622d218a4729728b555d4623e9ea553d76d8fbe3d894d52cf8ee963d8a8f988ad29c37f3c563e37fbcfe91c51c6171b5c321cbf398f38782a32ad49ce632f5b68c0a902d1621fe89289e10fd01b5fc88c905b6dd1f19e807c820e6178b2f0831d85accba44bcff3e720f90397de2914aee41fc73b68e366fa476849072ff6237af78df88889d9f82228da48a8b634128b36f19a13d59aa8d073fd427ae765a60712baf44c83e0add8dd2bece492fd2aa108fbb8e1ccf256882c863fc2ebd732e5552a8c70086829cd6467964f8dfedd5a66040d77fd3f4857cb4f3f416591b8b37a424494c0680dee94da7801537d3546b91a72f80d84517e93a0c5a0cb2b1179dd92b48fb57e359021ca667ad9bbd6daaab4efbd30a6458c15741860e1c6ba91595daf34b40c688911619b6c5ca57e8a9f715d45c8a89c73230292a157a5506c4e1738a0f51a6f7b7b35d794fb5bf3f3f9efc55ed9478c9493cd858dc5801740f2cb4c32dfb639de66688c0b29a3a80b1e42b80f717cb4363171e4b4bb61116854498e6348a51e83955f15c4e83868e571f3c8d5929f7f71d89d92510628546a912e7496579b04e73733dcb1b1ae1164e7f1a30323a6dde66638be2f5a7828dbaf2b838b9fb1a33a22f86c1c512abfbe3c84c6fe21593c1bd5345d43ec86429263ae244dad0904b5c874a56d1a0c801f6ccb2e812ca3dcc94031cb74395ba8cc67c122250e67ef9c9aa775b8867811f9eea09020fa5634ba234cc715403c2362008b091226dfd611be69c163e218d43b6ec75d16282c9440c52bb997d2d76bdc264543775aec1663d9817ad0e43ada4be551c63f322c2b64bab360512200f1cd3cd76f3c28a93fb7094ec3bf1d165b31e2266af89472292d2547760a40c2ce305a14d778cdeb2c0c569aee320b6ada1adbd28f4195dd7d35ae5f330bea21b5113f1c496c9d9ebd3573423319cf0f93000d36581a80ebb948d5c9a54937900510e01441d47b650fd40fbf6012e46bc68fe0bb550be2bcc1e64a8d6912f77fb072cc991ca3e7c10c461b7c4e6f9a7a737e66b26fd1268513ddd6abec80213d74a65512209cfb9f57c33052a367fa354210c792aee0d7dd663a0933c82e832079aca735198a1c0360c063c4075471d4fd9afa65353aa8202b64737f9007514e1dc46ccb4cf28d483c8351c9f0aa20e96cf2232d449d4e379479b6d07523e237516eed931af7bece022fc3ed83eb04f21e19be2b403bafc3440ebd72c3760e34a811370681960789496cf84431ab088028e4cfe1d069054028fb319cce49e3c9f30c6ed2b0c1447473cb6c2947b8b1bd8979b3f7db9660ccb35500429d20b38411339b2d4d41e84222933db06819f5eb9893a868140a8cf5d0b1b0ceec4bacd3f68e2f68a40a0bab1bbe5da3eb7354e48f64b85252e7005f322f3cc38cde598f7db8516eb584bf9be6fd8efaaccd7c552b6b02e5e99bd3faa2d7ebbe0f58ad2466d19d6426115c733b26c8c85c0c5ca376c154e49a9de317fb850e16b7f7db3c1134373610f5e0657538f90866bb6791f5015784c0e1bbf95b7dad6b2548fa6face0588842e3919b31cc1bd91b4b1b91110d79910fd106e19873c912ab99a546a476a17ed8b7117732d17c9c9c4856b66b138fc971874fe7d15d61d05947ae6ac717f268e3f3d0a84c5d486a1b10120bd454d122fa8bd2027e8794d11cae08b13c016f6a7fb1e69ab1c60b31e80d56dfc503de1fa552a55072c25801dd041719bb38df923f21d75a84745ba436edab837172a3a86d42c85da77f211a7ca88e9d79f7d1372e3b8d093e387f5e0e6473336db6007d32d709a12539d813a6305cbf62d16198dd972ab572c4ee51652b22e8545a5f21b081f2680aecff0e94db17d8c9c0d5415e9ef9ceb3f8d62b36272538b9fdc8ea66f0b9ba968e2d1abbe14b6168a85f8471920fb89181e3c313d03df61d9590434848b30134191e8d383e162a1dca7f592cc69baeb10c5467e1341fdedb17e4698fcc4190b8305b8a54d4101915f57817cff02bc117071b855d0673f341a71f2fcc009c308e841684e0d05c67399666848c0c89cb9ffdac482713eef92d73ce0f3159dd70172549210bbc7df871f8d8427f14ada4902fdfb36fdf1c21fc609c7133f758786c6601721be18f7769fef6825b9917b6577153ce847600fdc820718c26e5bd4cce6758fa24ff569ae4c118f9269f2b1a9c958ed82b20951be2ece1665ee222a77d76a998541d550e4961dd1079931f1574cbd4f53b180e1bd5daaca0dfeaeaed9c45fcb9163eff79da1c950645af0c0fd95a81cdb98bca5b2dead38205138228864bb40a663d02c1d970070edb714abf23506698340e44df1c2c6d918ba732dc46af0e0d3207ac8185e1700a3f2faa0c898cedb4a43d740ff38f929b49d26b5ec03de7c561431c2ec56dc088b0bdc7c384b71146fbe443e00d6b72b51923240eb84ed4d9a84f55c5fea98a20e4090f2fe4eb223dec8837a075d7acf79e17f17f4863c6da60774cc439ecfd918401f3b18e921c3d7c2b031c781d0e964443710bd246796284ab9ee47e6a15a7bfcabf2882d1f13efe98237e80d795d765ef7d5ee8092b1e6ad368376f61689d7908a819e3431be0c4b2aa15f78d2ab6527f2397ba2dc4af2101b2f45451623d531f02fe66c0c927508a1cf99e8e12d72ab941ee1d71cd8522b77dec1404cfd90022d88465caa1e807f9bfc6b5f2cbb6c4c21d881f344d86e8a0f75a9dc2cccd3b0a0aeb65e84ae8aa3a4711a24eb742693b04833ebd9a2264f80548b2e78c43797dd680a623c1d40f1b015b1307961d4dc67ecc2500d0206b486a36458f23c73319a5b990ab9eee76e85ee60b22a295b655e9bfad954d6acd8c9c6704969ca8835ae95c1fe71c52e814d38dab6a81a6dc1dee444b6de4564503c0fd5373c89f3a256e4a8ea63a639a9b149542ed39a1d84b735b569a15c62f2648843e91d3bd37f01d3ab0671d84443a3ea05fdf12668f6158877b8597d8748734e75430f97a825e07c4b3e2125b0c1ac6dd9cdf48e4410e9810458105792044c3c319dddbd65f62abe10e15409845a92160c4ed7b079756025c85dec9363a542bda2641accab0615ea8c725880eed6ab42381f21c466b65aee07b3f32506c8f6c2ea406657b520c70d1b7560fadf1c841521485fba844baa2b27eb2612f720e0024ca77607ea8e9b5c92c653db900705f61895b628e24207918828d80fcf3cd2e5036f89534d692a1aa89c37a24cc3a91f9907f39644285753756f6d8c6a06350604577647c764cc7bba0256a1efc5ffc518268372396a732b19e1ddb3bff09f51398a53b6338d7999909f118c169a00efcbd388bf1c1f53251adf0699905b5f353c63cc14f0f07fea2f67862d49ea620f13d8978bbabda50027fcf412420dead1684b152be313b2cf4cb27267712582a5f025572cac863900e9c83db2619154a353f8fd68dad56fbfb6466df3d4b3800f7df51a63e9f31d18c680a71fb1fd6c20b146e3a0b0a854e4040e9ca783abbd9bb6f8b98f4cda9218ece384dd8e9fc08cd3a93d5919bd03e59732992d65f4d2d386c2540b603811bd44430c6e4386861639ffdba8cfc2fdaea39b88f850eeee07338e9be762cf80cf2e4db52ba4bd689ad31011519cc2f5bb6e8f780c33ee6e3d856e888840d309bffc526cc26df59cce1306ea946da018348277c2ceaf8c130d2af0261f898fd939bedb1589fb915e2b14dc248f96930e7111ea6ef66a073f9ae2f28617d9d65f72c52211197da2094398b7ad803ef2edf6242582be9a0ccc9c70c7e227e9b9fdf58e56dce9035333d5aa40601a5a1a630b66913f64f12f1bf7b3c7827e4071b4de0ef929283973b357faaf19b0e7e68401adab6216ee44f4310be746d1ef269083f7521ea77646f1d184551568f0095055ba8b53350dd7d2054310256e39b2248167788f01c10bb5940478d2553828bdd0ce480479da3536949936b713f57354f7323649549468a392340bae3c6f697a315095d9d4506772fa7f4a6a124d0d516cabec1f1713e115da9853c7aed1040487e7c226406eb248e51b2962aea4f17ab10c447d2204baa6a959d40579aeaef4b012d56f0231b0c2c5d3d8e03175eb556393865e148e1bf23d8fd6a5437eeef2b4aa6e77a5ddbcd8e4d096a815858578082bc3f743817cf822700b5b8229d42a0334fe077c4085b4a9f6945e6e69370275b24cb1a36166d155a3f190c45e66651677181d82ca709a606078b80ecd6b995cf60c1159df24650dc9b00b74e811e39525e069c5bf91833d69fc9fe2928219a9ec467f53e48afd9371885b63510f0a2a4d76b49198f1d34c7fe021de702ea12015f56313fcc09fe65696bd9ce779e1089dfc13bd96e0de7f6480c9c7218b8c8ccaf329a1035ccdad01110e82f0e863c607489b071358c4974c46846065feb9aca8bff382c21689dc2da1f098027f8dc3b5e120356199e625cb37d19c0fc8e21b341b90a1b7940aa0a9aa75884c19b25a5089f467b16cbce17b755c681203f50dc789ce7b9f5eab8e694bc4e3f4c943b07b6a7324ef0b757a29e2e4d6afce9343a7a0f55ffde409e82809594a5907199c4e089dfd2e3f0bd6b52400fd8c6879f30f8c627c3f0d4d050a4cf0b0d4aff145e5712c21a2ef2e518c7dbd5efca095208c6734ddcba8400737c5028159b31d4dfcafd8f277e14616021f46867218c5a8098bcff0c76631b8619de70451c702f113f3cbc74c1a3298c2d8c60c134a962b988aad0943a9b0ec0a8af5e811ec3d058c29adf5cc97c81c142d14fbd177b76eebfb01fd404a2962079ca5cd658dd190db11a67859e0825790ec334e1300852ad803a4c063fd66e943781c28011c8b001f3235a3b0b9d496da02b8f826f07872b1ef12f5edbc3b6dc078d151093a32972770fbd3bdc13988b14a79a266fad49e5e55f01e2fcc72e7043a13faea1c468c7c7c3a40d63932eadcb5d4423c217ae7f4f00157fb6d659514180e4c8cb33467ac15f58523da612e8014a6a88d23daca2b0482a7b2b3480e33e7b666074745d6049f223f7a666e3b7427e7cf004026d1557e0be9848107e91afbe021461576da7d6d0ab76623e229f27ee95268f5cc1a2fdf3b09890df131aff263df62b77c5bbcdb6a41e24e8fcb3435ccdfd87259b40649bf0571ecd0bcfe2dc7fa1462166921bfe4c512c70408fd2ab9f58f74feab62374e382cce65175f30083bcb5e2f3cc316bd5af7a860b957b18c83d7c80c2479a1a48d8988990fb88be35a1219dcde30e6d8dd4cca376a0cc674be8426e6c8d6967273068bb5fe3a77b8b2213a4cfa5bdff347c93aa8ce4252c925defd280525e564c68bd27310704fc29a02d8540132e5928993452535e8f602c63772d1c3bf11506e1ba743994e473d02836b6afb80cee86807fa6a8be8cf105a3d40b265f9135a022ecff3060db525c2cad8ca055e9ebd60ccf6c9a2514efa7c83e01d389ec32a9801b7b183491192cd09697d98b085764868ee4db9318d7907a6465692159760c6f7d32d7a2ad2f577d0256b0959b4b2cb228a7d148a26b409b37238103e41f0d69d50d4989c97302f1ca6962d118ac2515423c5e62c6942109c5db1524e0696d34ccd38f664639808b71088da47ace04d6faa8800d01872a7c0085260e1e4c40ce4ad43b85e20f3e0775a840e0628ab3a40d388bd12e1242feff7029a495d796c843af7251d4524452bf5e2be8a642882434ca2c0368422c0a2f9d4829d47a89dea2401b66f99479363517467c70302c693978e548742afb4104c567dc56609e7907f65d483558ee9561396daa78d7a9ed25c2a9d898aa49014f099c5e0a72b06e472a6660f4d4bbe29c714bb01e443e7682b2f9d7aac0aaf38e4e1dc3472112f7c14fa5425b17eca70019f7c8939e683df6a8276078a9605c1dd30ef78699ad6dbde6b285e17f2f3ea55bfd685e2800e9b4e41da0f1faeefdac0d29d86c33359552df083492cecfd8c0da56f070e812b92320034d8b62a7259062fc0d60c349b19c89d160ad126a715535efd02d241b513269cbdc2620496d742f93de7714fd536ee773938568804c5023eca8a3fc542ee0024e26550152ab4ce5f9c89eefb64cb8dac497f2253be99e8324b166558cb492b252c2e916aa2bac3a3fef4ea191861bb912b3e4b38a471968a00dae29ee5877788ddad3f715d4df83d674873c2b4c777b894d97649c7d769698aca4168d9cd766727b77fdddba1e06155ff23d2771256c87a66c4e469cb6f3e45c7e11c31509664835b74efe7a5b0b875465f0b8a5f65092f20769040ed85e904f719434c51a0826926de77def1e13f22afd6e43c8226f3fcbce647886de534e6914504f288404a619852c2ad86eaaf3bbf0cbcd009c91f6d7b304974e7ce38eacfd0db0940d42d1c1872b2fbacb31cb1aa76a475d764390ca2f2495c70799ac710245a3b2722ff5cfd777064949e0cd107a65688824d44a8628e0540c7c4c0a02a92e3a8b627750afd30cf27fffbef8b34bfb6132721937d7c10a0eeeb833bdab6d3c645614fa9121800c83c9ade30cdcbde420674957990f7968d35add6df638b73ec4077d1dcc3947e9da5b56421c85fda7a1b3c42e1390327acdf6f25328d6851b6a644d2f0089d56a4722fe905a7bd913d9f55da9480c5ae13d5db83a0297e9bdd87149e3b3ddd826642c8df3964ab5cb1b6bff21276b221b153151231d1e2c41165ba011cbe455b73492f74002f80a25d8e65b140399551eccfc47a1bec5a818ed240b5dfa73788e73683580da56fc9accf68496ce603ef13dfc7eae85eb8d82a7792e50cd56134eb411bc12a37ea48e9e706493913f064f145c4b23ba6c77a61d16518868682123bc3b01de4e51fc180188b1e94fcd84ea8e1df3e4af5ec629413051d63d14608cacd681c90fad40339a6599ef9a6e327140f070a56f5b93a482e433f097f1131d6d772cdb4018137f184fe50cd7b946d2c0b39e51b2b04848f224ae7fff9c05b8c4b243f5915419bce4bb22f81b51b62ebf674ce3b117780dc3a994a8bfca0b8ba239e3e6a271eee91ff93506d10b3244975f3db11fd27c0985ddf181099e2dcbe22c8c4a81346e8543b4b441750fa37ab4b1777ca62a06fb34c0a387bd6e8ecd11b9c061ec865ab5884649b97ac304507e6ba24a761e3d1c6f22ba4303836e42a327701d49dccaf346af19c731cdc256685c5cfe256c0baf5ac13672fd4702b50a830d66f56eca500227641c3d57862ea2e5f3b4e1b5f760fd0ec4181e633124c768f86b7c87e2778314a47e8c57600c83016e2a92c18057ce3a03fc5a888b69d98e904f1f63a6007456229799e587b4d2cbb26d24b30cd8686fb8dd130740c78759b2acfaca5cf742830414a379c62e21f0eb45261735d99274a70dc898ead7abf48a18561c1f6db5d68b72c8bd8404453436f497be5edc4f1a774eefcb2c41ae54f6fd4fe70e5f18763b4cc3584f715bcb7dccb6baf6f26b85169d9fe7fa4115d8149d1c5afa6c3900b831ff01d3282f787bdda5d5ebe04dfc3f6b2047380a50a620c94883f886f447989278c7f6cfcde1829f2590fd146e01b20ea07d2b2eeb6d8b98a31b9f5fba7b7d4421b59299f2b7f0985a10cff46f565bae3ff5fc0f93381fe3d0e6f0de60c6fbc863e8fdf3ba20bee26064687bd03f1ecabc1c1d4a04fefef4b66b04cd9d944a92650d050f9fbd1acdae3278d31c360bff0ca45f73012b5e29d5c8e68abf36870c6c76d4dbdcd36e178e8802cc248c36435e4478f03973d4cebd39b4e0a5e0ddbdec1e47789704b2a941cd1c1c8b038f2dcd39c446b380dc71fc7e63c885f1f5d739f8b5cf630846c3be6daae52151e2d7b98d3235920b851980e6cfb36370c39bb5fd89e1a1be6e494f757d7b0b27888f537880b630ab552891d72ce28b481280e1a4b57691db7e3716b93781932a6516c06d5bfc13ab64c7386ea430244375e805d5e411e7feca63763440c20a3effb62a4638d848053ca902b36c76ad70ec56bcd3bdcfbcfb65716c6e9fcf24c761bae1a5f5b8d379dfd0d1f355dcaa0092a176f215e21d84bcbad00397265ae4fe5d2a6f510898feceab097696c02ec4fb077a7541a7f131f60ba050ba6a972e18a91d0e13e6e12e9d4d2539b392301c29148fb148ed6656af7b365b9123b2b2afc8eb9c7b3d56641174956e5d4eacd046b71ff5501559b025b918d41994f43ba585ec609f2035989bddeaac4c9a11d9438409759ea133486d554a35a265add4f43693c3a5ec859ea70b363e612632bb818a5cb7c693e1d4e0c4cc5546a470279d3ebdacaa4d6249bc6f10d9cb83c0e4622151bef95810eb964bc365eae8c6e9781a38408cec0086fc40ff8251633d24ef35e6cfcaaf6c2c86761d4a03192be4333454d969157ccd24376c283808b5dda66660e1e1da94c0e295ebc602840e46605f65ec25f921c02524dd2ed0746f75dbfa4fb926663622a3f1201d21323a26092f4f361abf2769a4b033bcc0e922b304d1d00a244c72149f75e4c9efe127eaf764d48ca63463550244fe06f5ad87f10c4f339678b969161e31997d13ff800fe43b5f3963131b3e688473a981bc9ea9a990287149d2ce9491bc3e91f0dfe48529b1df539692eb489d7c0c7fa61c5782c991edeb9b008f35d176afa3be661f8e9c6cfaa21d1f49fc56c0d98955b57a16e59865229594379f265f6b2a711aaff92a1f1ca09530018b59bee812e688c243bfb78a5c0bc6a2a5c285d3ca1b37ad45bfb9c8519c0095fe8ef27458dd50bcac16f40df2bb436c49df232aa05a03b74d8346638d4cd41dc3c80757ac274894a5f09afac2594f71e3638de12431df6f8013e020c313ee37c5eed8326e2f22568022c6c5e27e852244357d5d7a786ffff6b3039efa2f711d2fa6ff26ab34979bceba5dc9a69afb3ecf6d3dd102aeaae0166a812ae21e8c3fa1dcd28a8ca0b1998f515ad0125e8b964c7b8a40fee769efb0166251b108ab5ba2ed5880f50d232714b6c902cede96e8807bc0b4ce09c52aa83f4754ffda2117a9e8d6df7c28892d1cc996c122c1bd58d3fb57d8d88ac68d68e59142a09419e324aa2800851ce85bc74cd8a5df02d24f7b5a95fc4ec6e5ddb74aa09141f94dfd30b3531c0378269a4ef4d19ffdbfca10fe3eb7faf27fad29f1ab79068a3c863172ba3149006eb374f689c1db6d65dd6c994c3a38465b3a8a3c2b40d38f003bcfca90ecdc54aa10d1b9804870bc02433540f206f5a048403f862667d2af1ce7ece95fcf942a8e79b46b4d4b42854cd4dea851a6672c9ea1258a2f0f4f62a41821d4616890c854e0d5407d35e3f10d86963f582826ddd74f1d7ce767675eaad333d9a3fead14cc45d668a54ee2b702cf5475b185e88809b8190cac1543ecb91b024c221d36c2f23947857e56fe1251e6bb918ff6a354cd08824d6132efb089056c6a7a7a5c4a1633da5c7ad593e3caa2870963b8b2378fea008ac813218aa309f2377d5038cc36e24dddd9a6d42838baa304a24075134d11afbdaf2025176579b70550a2c0752a1fc3d3143fd734d6d63bbfde329ad8103168ed475a506e7f0c79087e4ab9f7ade5e078210cee4d2473447f93232a93023401853e0e8d095d5642c531aa602dd8247167d01cf8168a46788d5e3e1d2be9e76856dd826517a326cf5db3449606fd96f7af06b89b5b4fbe1945bfffafeb5cfad8a817fe71460c9f19487b94e061f105ec989ab296c9f4b12fe01b54ef791d30149398a38698170dd3a66841fad194c92cfb029f45380ddc85f84c141f5da63f8f973e7b4087a1a2e8094297e4930a36032638218fda016a00f096298a867ccef05b5aaa93582e0047cb3049afd1fc75820da19251dda00996e7b481d3afad4a0a5f4c68a0a68b42d4a28e65e68572641b4a9854ceeec7c330e36facb68731ce06080110431a88dae16135f4bf8c5e9b103780e129b68c4b6dffe47ff6fa4114208219becbdf7de3bfd0cee0b1d0c3660f0f24a6a35401cfaab234ff71db9a2ef3e9b2e789116893c489efcd8d0f539f386be0698a3e2d9b58ebc11f41a594ecfc4176665bfeefd94c633009a564cd49d769808c98aa77b46699808490e4f87a1bca1695ab7adfb74e40d7d9d98a83bd7e11c79437fe11a91861b68833e001dd61ab7cd0ffbf565971fa9e327e4f6c8700db95a411c7a1b2e1ec482730df4d7b7fa79adc9adce1f5293c63e95f4f53aa5b16351694388936f98c7b0a9c7f52324f6cc5b0749a0d86aec50486cf9eb75622dc3b96bf6790d47e1659f9767cdcb113486e18b21c491ff2ee4814628239acd17b98686d7c9d1b1428e8e8e5cc19f7ee200ccc10188139f3753141ebdecc182f4413928b68402c22b10c2a1196751ab4653d52acfe02551a5c593e11335f2c6e400cc616f6db50eaa63d6681db2d53fc819a713364ed8571a44e7146c9cd8aa708591463fe79510477610c489f30bcaa7a69074f574a2d9db8aa98d913771a64b4c91ca1beaaf1ef13cb4969852ef7af6d89ac6d56deb785d4e0786ebc7a2afd9e9b9cfeecccca79e9ee2acddde52ab65ba651f645df962d94b4cefe9e47aae5f6c79686d31bd36461a94f0da1334089bf0a6844df4d0c7a77c0edbc6c89ba73ef1882e12e7504be3c1117db81d040fbc7631135c1688aed7b08651e87aa863e9ade2d147ae873cc5d90728747dcc2407210eed21d2b3d394eb198ad2f49501b046fcfc218b113cec0c67ab159bc09b9ee013842554a185255996c8e0a8882227395c00060f82a044074354e18621b4a8820956f084187c9185074634a15dd56e59a6586134011b5031052d47208217529450c20c962802882e8cd0031e9ae5cac57690c4aa664b15485861822968d1a82534922bf02eac424acbd32d76864b60d91295645f74129bcc1bf8ed8b4be60d0574d821a789bae7e90397681c6e738497e151c31c95643cd0bb384c1cdcaff6ec8250325ca2219661061e346a1c326de36e465d70ab30a2e5b74aad0f7b7b7d60b758e8346fe267ef839efab0a758c83bf69de69fe050b150e4a9f390f3417fcd1b383f1ff4150b5d7c7ba0f5607f7ba03eb263871c0ef4eb21c3183ecd9b1eaed0131ff7f3890fecf4f68061cf9b37423f0cf14ca1270f98a77fe2e3eb619ee24a7db851b2409bf3d75b72ba2b7905ca2bf1ab47e46c9fd93b3316b181477a813aa2c9a29a3890cc782a85a3ea5e1acf43e1d3c90a77dadc35ac4bdfbe1c7bbbfd32918699587313875091c8f344fe45939f49e2203e7ed57dd81c75a8ba0c1bfc2b447134baed1ef3ced4c93cd5d3ddf4eea69fef594689f874c8e998c930cff1a8b52b7ea8ef09c5417ca02ee33e7ed493203e5247fd580686b8071416423d8555d85e1febc78698678fd1228ac70c4ef56497797619fc134bf71ef3fdc4ad27bbe9d94d58c86c160c0e9a8d7dd5a4cb27268e2b463a4c15160282859ef8405d75386f54a8189ee1959a677844e33c00783cea533d7e3e505761a1efa8d37c42433c34975cea01aaa39e830abf02b1490a1ff2d03cc7263dbf33535f0f118a0c3080f38606c729f3e63beaaa3885da431d71bec72eb90a7c4761386f5e30cd37c403b91eb523cedd311ccfbde46121b3f3aa495f8f6dee00f8a2d1bc99a7f1d57c31862f669937f31f764ca473ccac8883a65c2297c423195e4c1caa898326f579a964e2407dbefb34087984523f32a3ed559f90ea4766fc3bcd2744f32333fea3ba6224289a0f092a3ef52141e12714ffd8d0f40f9214b3b447a32846ac7b79ad880d3caacb780d9a3b666fbf7e2151e11e621cf2a09e7a26c4b6aca28a16ae184d1c47665cf5796de65c192549cf4b291289fec4d143ea7af05085bd79337fd553cf9e0c9cb3336fe6655cf59c0303386f50188779334ff31e7ca0f9718be6a8a32e037bf366720f803c3df4fbb1a1b5cff88ad8c013e352c6b5e120b2eb53f8488cd36038e1c47124c65178c341b32b16625bc34431300fa86738df2c2f16623b0f195d391acdda534f318b2835a523b7034ee98a25110f34af53fa2a7c9a37add6e807a774eae301ce9bd4c7030d0dbead467d287cfa64ab27694846a29c98ea61cd17fb1d718e12c76f633a68b9022fe79c74e47396c4fe131b22d8ec00cb1658b0b01902962d60c182054b1455988c60b024014b1158adb5de4bbbb44bbb26feae694a4c5eec4e3925bdae3dcfaedab3ec1a5b7b8e5db34c0f34d4f33bf2677ecaa12c5a146c3646f0f20cdc371a2fec721382770f7bdce6be6c6271df9e852db2c7f6dbb3fde2cc9ac7eed7b39dc399753d6e1feb7ab6c1ed91bbbe7dac78eddabe8cfb46b393a572c58bce272c7871a4c3561df5f6a8d7ae9e8b65bdeb63d5573be7b768bda0a313847b756a6a6c8ca0b4c606083ea8d1b1f141c471462af8a05e3965dd3cd32947c7522147e77ace996163e2875be994586042e79a29616839f2263eda99ed34a70d11aeebc282946d5563f2b6d37536930a0b3be85c33657e21c512ae1451d89c481125930293a2069e142ae8a4f861c3c20b322aa298620529d84499820d5e50021384b1244a1325378072032e5d8032841c5c010ba62b70f182113de1a45dc106a92b48d1bae0286a9098f1410c0c64ac94e0258a304441455f970d149b2148f144a31a5291220cd2169b1fd840a122a140a53bc207742ea4d78402cb135c58c1880bcb41c53f74daa609145bfaa621152b0461852245d4c891f33cc18e7d9b2c8037838962538e0de6c479bbb1995e2bbe34ff9873d6cf698ad933dd18679caabe37de4bafd70c3d09100cbfecd56a7303cfde783c85b463bca2063a549ec8220f6908121be6a0f04610b9553a6da572933760f7c456ab87de399948419a5aa551421fae8755b14771843960cf2883d0786215aec8cbd32d2d294604cd95557f6bcc5b4b2d53a8800407dc510f29ab623a63955c0f55d930f16867d527846255b4216f391b269eecac8a3444ac7e42645f578e0d0c12b044de8830b68cb125271fb7b061818e0d0b28a594ca392fad36453ccca688773b16f1aeb629e2599b225eb529e2d9cda688373b16f164471b1214f162c7221eec6873029b24362ab051814d10104248bac226894dab75d94a5b33a7d53292abe9044985296d87d001d6c4a6053925f0201527a038d1a4f33da95e93c2e11eb60fd9e2c1ee4d1cd965a67d46905c1e0cd376a6967d405210803cd885e0141e1eee79c04e80a6add661fb88298871c0b0a45a689032c61b3388ec20d944f71ab441e2412a4e28e97cab4c7102497b555afa902d9e7b88e4f210dde7f96b4eb83331fb5dd65acb12329b88877b98869c0fda6ac5568be7fa8053660c34086f503a250df2194228594162431824a78411e212d448a900c589294588c1c40b4881676a48650a44743e4d01052fa869e20b4d29a59436a1858e6948a509232954289eb47101c51f81775ab1e76939d2b2e5480b172fa44c9182c4142945494491dba4b4566baf4bef9d32de6aed75dd8b5df7625896695136ba6d53c66d4e2ccb346ddb386ddb38aeeb485b27a543a2e549535adef38a5a26d1328a5cc94b2532891442894c2299482457ac60b962454b9627a014614484128b8852a293d8e2128dc4169798242221328ba095056851ca3929ad965a3b65b451ce4969adf6a2d73565bc68b5f6baeec5ae8b6159a6691b47396ecac865dab6715cd7913cea7953468feb4824cf2b955e5e604ca69818199999133d9da68ca7d2fcf25bce2fd7b4bc5cc56831dbfc728d9697e178c45ecdd0999929e3cca538e676a99e0bd4328b5cc9277187b051126d46e0d5226a1175083993803835099843a6e5eb1202144d69624a1350609432019acd0aaeb459c165e12b9dd26605a4fb21192f26689c364178d226882022843641d8c4c0a33641982276afacbb735e73da9ca0526a32c198329d364900d0c593a7cf0040172f3eda0401533d9850935a1a84104609a14d10104e12d8a0a089229a70426d84a0b409a2263d7f9bb0411336a0d03281c5880b4dd48004734efbc516df840b809837c9d5171e34994c279a865498e0d2b7211526b67436a9200c355ff882148e940803cbb04abc55d6a891ab2592e86a2fd349d61fd780c18b49f81819c99beba3464f1869a16bbd57bdf0a8cf1253e60dec394f9f4adec42ff1c312adce2727da69069d1ab0f842670f005978d79116decd8261010756d82c687c82892c8a3b4184114e40f2831facd06802115b769025882d7871049604460398a222e8acb25e08d91050aa15a70a642149189c806206483001115c00831d5cc1092d90e00a3c452a286282cd400700582c152590707aa2d969a2f24414b234e4b4282184ce33785b50a207b0c66a46432a4aa4a067432a4a24e9bc9229d03eefc4f77d7d06be18beeaa4549b555ed785e5214d84e457bc2ee54aae28d616c9e5d1b0be8fcf5a83315e9848c350728d6588ce54ac68d2279202688648b44aaee404c0155e107a8238f23fe24d1b00aad880ec5069e04998839ea0f0988042ef006f4000af585c0288ba69f9f130b5c785cbca1158970c8a18060c162a5aba9ed68ae5338a5a6bd5c2111896a22e59911717c6040b145aa092a52d16005c218bd42822220755dca0055808019381058a7490c50daa5841d2850a2a6aa8d079874df14602cda68b370f8624454130e9b9e47aaae71e8b12bb36310bfb3cec91cf2e310bbb7d06533df6d8ed318b53f798755db1e22d1007b6840284117dd3b00808249da549bf9ee8eedd3592a6556aa7f4a2b95f551a723b48df8040a2e97fec73ac3087f63c7b681a89f441b9da3a1bfac1824fdd07c578ec1ae7e3e1d4c53eda21665db7079ad1f02c883bb0fd9d713ef20316a7765c0f029ad1f6b183581677e03a6c8cbbe1c210e2907e391d59f7caddc09d84bbefca95f69db65fe3be1cf315314c420c8bb0b58c3ddb99b1b390d932529823bbc53de82bce433dd450aea27c0dc4811b24d2799e15343bcb19f485ed232b4288836a9ade212f62471aaca15b5788532b076d540dfbfc669be48debf5365e547923f3802d64f6b401c38b9f5f0d9f797d19e392e50b93c4b1bd162171d2330d8b4a5084095aad6a58040496d6ec463906c09e3709c9202bdc2c31d1f62977a6ac8227b51af2461eaa2157f5ac94cf3cd05007d10fb5867f24061aea20a0192d3fd41926da7274e60d6649dc81f9b3b6a0f9d8f6cb5b6cae8339a6ac813926ceb589b6c7aad3f536471eed5cd3f5356a6abd8a683530470dc499d38aa95ae1f5b44213ec5a03734822d82989aca554d24b4b6f94a252c9dd2031d1f58aef552faf2aadc5a69a08058d5da809287da5444eefe6994e72ce3a276b9ecef902edca1bf135c21cf3d750e77a1b2391f6a29cb4daeb629976757d5d94da9fab29cef140434d6dad9645af1747d78353b40ed1c6a4d55e7486b9926150d138633623f7a94dd4b36dbbd99d539b475dbb47dd549661d67d96a1b227f7a8c9c503401c8b5d6c623def8b337a6f97be5f06a2e11eaf29a6b14939d41e157277d028bd9d5e9b4434393b7275e7b4909b784689cd28b11957abd594581665cc912bfa6a611215e26878733907c0d6326d6e3aa592ce3df57dbe1ad21cea88798d97971a391c8f59842489a6db73d05cc1c0fce24c44f3cb958d770acdbda794a606e2dc5379e3c7d654204a9d88e659c5a13ace44aa07ddc74ea5e69538734af3fb7140ae74d861de5c8911b3e8e3e951e61ab7419a0f070a703b2a2e3cd4676a528a597372a6d3d09f64be23b5d309b3e24f1ce074e8a0fa76b0f65add54f143281466c5a36e8f5245ee9ee6833c93ebf909f51df913bb7c06cf234f343d32a56f4cebd0f75997187c80ade1e10f475df48395a6d8d41948ecd29133e11eaf25fe496da7f1fba5b8cb0071ec492f31c0e381c17caad237831c6a8f044653cde60ade5d7158489b419b7dc1e0d967d5769d1afa006d9f117067947715577285ad66945854dd629d556d9fb3ceaa8f88e6f223c23e22242b1e9a671fcd8d39530714da7008200e250271564d4df75e9a1d9a6f01345f91784d30c7755d4523a8d2f31eb6d7247455a9d2b4b509468e896568e475e478dc0b6d69fa0be8207158a356ab25840bc02bd875cc480716ab342c2a92a5afcf58454acf3b65948d9dc805b7d0dbac0bc1d0f44428a927111b303c4aefd1d7c01cb5e935b9caae67b088045bfabae0162b8436f67bf94351cf1b420073c4ba411d220d6dd4098053b4ed0bef70f1309be1174d1f0298235e5fd7909b21803960d3db80e16533c81bf7f43af454a7a90c4478f7d9372f250d8b4680a59534bc84d8fe89531ac315e2c4730d390a71e2ad49e6ccc05ebb489ebd1ef528f528479aa4fb4b9addbdc7ba3b7174def38944a9d7cd794c62bff38625af865dccba18ced8b92ce3b667e7b05b9fd50dcbb00b66386317d6d80b0a90453f716ca747b61b2c8b3d68d305efbaecefbcc16ebf61181eb51a5e7ee8ce9b78cb00d8f515b37e6297be4c3087c5d9625f95d67e61bf1d399fab31ccbaae651e3a0b99fd13bdd04c10870b1e3d761f1bfa62fd10e90ce7abede194c63e21b3af9db980d8f55a80c52688135f7d749ae222685e3c1119ee174234a4d2904a189270b2a4e765518b49cb342c6a19e982a5e76318a2f4fceda29e8f38f49d38680122cea92d821c293a14e0b38717b58ae8f90f48df89c3088404c8f1473c9e3b6f2c774334c11cd9f37a76d9d2d3c70473e4bbd3269803e2c073375c3d318b87a6d72c7559879ef8074894b7cb43ed81db13a716803dea852a3d7f5509c349436e4796cf5e3fc40306124d43432a602069c8eda8acecf2140c2c3d7f71f142461a62abd59bfc10cfa663fb8c6c3ff2e4c70619f275fbabf598a741b3635f2c6436f6309680b1a5ebaf0f7be47adcc630ab5e7d2b665dbf2d9f08b9f0cf8503e72b163283664faa032dde4a4c421af105942f9c48226d933780d4e7222057c1c004483d2b5f9f9ff2f9b233f64c9c822f64e9c2c80b289dbda6e285936c3f8f53f7b0afcb40843731cb3e7571cf2657165f18e350d30ee4a19e98ca1c24ec15e4fe6786d1ea1a49b62d8d36ea1683ceb4163fa2eef64429ad91336fe69c13abae39af38b90664d5a9468dd53d95ea864bb5922b6bf3ca539de48da0b95d4f0573c0ee824a17495aa3dbf5d1b496a6bf5c9a6ebfaaefb770d4f79e377f7d33a5129d9f91ee458e3c89275d6888e7c9fd9c0fba58b4fa3e769f9f02e4aabbaeebea22c4c9d9c5f709eff2f80d1113917ef1955c032266c1be38ebc895f5be2ea6e3474422d920b28368a4af7bf71f86788e3c891f62c5df8b6b803816721173804b35fdeeb58f3192a43dc95a4bca9937f635c01cf67e461d79c33edf9c5903ec13bd6d7bddc653182b8538f3f6bc98e21c82a615d590eb619bbe8b298dfd4edae521d63d761fecd74ad363f78294a68f5e28e22ace12e7a1783f71bd756689efc594a83be93bc91bebc91bfb23b4451a3068c3de421cfb6cdb7e723b60fac217e2d8db5cf1b0df53578e0310475a78693651789a86af5c655c9b1a72d707d3b7ab95557de823a4dd853b88137fc998270c41658b1104d0e2258d968654b8b8d2f3373c1d1dcc075c6069f91a8f0a174654b8289a54b878429baca0e5b0453d7b4a69d9b2888e1dbb90a4654b2e563a766c26f71e71c9a895de36fbd5a0ac29c4919fd8ed02939e3d5be336d9d7ecf920415b4b8823695f2d2d7b3695378208b16d1f245b429c1f1bdae22dd22047d0f15dd052142b9db3cb43bd451aee083a1e16d1b2656b9cbc1124686b0971e47b644f2e24e96ebbf2461021b4eb8368c7eeca1b4266d773414a432734a4b24512adc11965a47dff73f58585fc9c3a28767dea4776c5d0889111f44ac991222d3b9883e8629b234f76a6d7153459032f1e966c69932b2857994215ed2d9634f56ae4af164b5a7e936f9aeac19eb132f69c823d5f2fedbbcb77c782e48d0c03b9cfddb3db91ce75c748cfd939ecdd31ccca9e227d597be95a865dd2bb1b4838e5433a770ee7a126e19c22b1b2a748b8077bf67becb0fb8e2c7d91c910d9170444aeb67779eb6c9f7d35020fc3ae10f246e9f15189163718a9ecbaae3b221387d093ec44600ef31da965cfa5bfdcf497e77b53f60eb3ee533da5dfc3bc64fa5ebedcfde5dafd823e20df0f13e46e30e1948f290fb509e794e9a5c366dda74cb8a7f48b83f00fb98a2f6120d977e4cb1799c895b64594d6de3d723768ef701c02e7ee59b744de884268a52f2a915376a5f7d05e1eea12f6be23b770d2d949dee34b380fb5f78bf3becc895c4528afc7e6a3cd5ea0c58824421c6fa421112512c78f253658f0e2c3e8f82c8dd0914b942a45d87ce1e568a4a315a293265e8e4b204f8ead2448b8ec206f442d49342c328a5622167814b7442f64cb4892e6c952895cd2e271228b30228a11a49479d94ae795d7460a0f7ec8c6fa43be7d1929cc917d68b53a488438f241b767cfdbcbf5a036c7305a1da10df9d64810e688f490e688f33208f45a90a0dbf1469e04f9f1a1d5f538ba775bb4412be4d1663c6ad8504b11aa1cd54a0b93a6af41b56ba3f246a65d5ae9fb59d4f398949e975a74585b7b5c7c832c0e6261bf3ef1bc9633b5706999a4b14f262d8f15d1d8e50d970f92c7f0ac71c3943fb18b8e9f1846bcd2f3365ff060df6f38e74c6ce3050f36eca0d8114bee8679ec64d38507fb6216f6af2dce351de316ae5c71a5b56a5b7eb5152057b4e8a5ed39b081cef7d7290b295d8dba1e7f15a7ea61b32ac697abd8a362530728b7a3de9eeb8959f516075d9885e10ed4bf63fcb6a0d89ab6c5afd490bb41eb0bd7cc03f6cfd5f74266df7fe22d5ef212e7d3505b94ed98008843dfd08602e40dfdb4ebaa28b700d8d7e79cb734208e4e183cd313de75ebcd0f05716854e11d881313cbd5ce14da01ff43c4080946d06a085710c21af5f3fb74c04ffc23d4793644c9ad89293deedda1b66d18563a762dfb2636e79419edd2b7d248dfd51ce9b3cdd5d628871de3747018f7d1ceb24a3b9b1de9934dfaa209ee46ea3e7a83f03276fde5bbf2063b272fa9a29c8f0df2f5d835f9658f5976afb458145db1a5332dba420b84455744d1a6a22b8a4a408257537923d2afdabb5e3ecdf9da778b906a977ed86f26d241f3c7a9af570c0177e2950bbc0c9fd0e1bb5fec15929a6b0584c7810b504c6f07214ebcd582cb49757972755d9b5c5da6d509bc7ceaeba4d2e1e2c00e071244e4aab99e68502ac1834559b4342cb2c28b1e40c3222b9cd095046b2ee55633f0a8fdacf528f0b2d7d50705220db1eb75903762bc144f362cb2028923261a94da3daca12d371da4c665da85717ef0a40fb63635ae36e99cd67d7e194e790d897b478a35c8159df7f1c48edb13ebecc0cb349f7044244a5aae62e06d9dd7248ea4912289c47d2b1778f0318abc815d7af3ca9b798a9c8e675fae1b7df775b87e42720564dec8ab4af3131fd25e29f1e6c43e7ef032ac721397e0f90b2794384596eb96560c76a791702af500ef30cfa1f4974300f218f9c123fd87d25ff0506b5fa6ad75a48d1bea19447bc3ae61df99198637589a9de482a0c19a9aabe48deed6c33c9fee86f3574078b9468d1c79a3f4f2fa43a7b7bfbcbe866dfbcbf6d276efbd1de6dbde7ddbfdb2f659d39b77c129720b9cb7f80b9b47543bcc434a30fc019dce0be88959db59d7efb30ea579c359a7b75fb174ef71cbe90ebf950b3cedd973e40d0ec263242d5f0e43ec5578eccb352e4ed22c4041e52a05ab1404513885de1a38cfdbf633c9153d42e58daa3a02850611e05d895c1df1ae3dc52a1678a9d84a4529836ac895fcafcb6a1248f6a05c59da741ef1f2ad81922d079e8c31c6186b562bc0a166b5837bd469eedbbc550ee429e7de0c67cfc3703e9d2eceff85f36ad535a7337c22870292cec3a8518089a77aaee9b8ca41166a3d8fc336ed66ef4e2ba7a3a39c0ff448b4b94dcbb01b545b46294971ae80d296dce337cf44618ed3a3f7edf5bbbf381d9b9d50c7214ebdf7994a380fbdbdbb35f56462ae6a4a8487bae9a7539cbd73a88ffe5ece07a23ed8a78ff6cc2713f39d4c1f7cd9e19df49d59d2c1913812a9bbeda8f641b9923becbdfdf20ffaa34615850b549c62dd82d69510b1faf4d0a54b97246ea2fd3ea0d3b2f5819a66d167d9aa6be870dae317e3023a36a023b77d57aeb20ce71f358dbdfefa404d6f17dd6e0bbc8d6e71e260a5827ced5cdf8e5cd16f30c73c104d8f0e3daf2ff6fca2fc70901f6b9e4e8c1520577547aeea2bc4a93d30478439620fd1d7533ef197e9d7356caba12a21da0a238d9d5ed3ea16b3df97d7fbdb3d8b87398438d94d5f77c8f574d73eefd9677a8fae47e4c1341c875ac3a148e419eaac3b76d307f3e5eef62f5fbea13bd65d236d17ad29799f5fe63e21c4e9d103fbb58ecaec1bd7639a7ebf3c6f4dddb577878d3d4ffc12e7611e73713daee7ed3544486e1ff38f74982fbfe03cd441b1f4b1bac7f63e16778c8463beeee32e3c0386b16d833922133c586485113d4f37980328f6f5a8791c03868e286d91e341710fa53d1b723d5eabefaf4ff68dadbe2fdd203ff0a8d5eaa097d63e83b6d67a00e9fb1f1b5a421cec41b6b320d9836c0f1dfacef8b1a123c4c12e86b006863365d12f60a721ac91e99c38e35e214edc217d88433092a3c2bde492be31cb57bab66dd1882dd2c70c5f1cc7c33bfd95c12bc66f9c8e48391d186ade35edc2997a9dc58c4628d76990f4a1b3ecfa2294ec17efcccb44bb1bbb735996cdfd0567d99d0973f47abee27551cceacefdca7e5db1bb209ae24e7baec7471a73fb1cb36c1c8ffba8713de8e31439c644af2bf399708e46f0b8ceba17ce404baaed62c44342f1d9953d5e89cfe296cef61fcbbb0f1daf9b6557220dd7698e5a320f8666787b79963befd9a3113ddea3f72b9ef3e29568e3fac5f1f09edd7ef130dff6978f74f9c97c7e33bf3efb9de97db06143297da97bd819174b3172a5293246fbe2ec3988f68cf12a3dbe8453f7deed756b447b580622bc20daf1f6db673e990fce1b0f932e23dafeeab8db29220df13a87e314d186fd364586d5b67db189633e7bf6a9e520da18f6ebc3b02b4ee149181e54e9372cca82175420d1390d8ba8604167214b07a061d1952314d15bc7c73769baa50bd0b0088b942ec292a4570d8ba8c08285496bdd9d1ec91b3097f6cbd2fe9c73ce2973e2fc63069c63c7f5d03a62aa0567edd1c6e9b0dd515fe9f6ebae7d26d429a58a21e392db81e1ec69389f3e715eb5c5d946d76b1aa6699ac6929046d330ec8f1a0d0dd522d2a03db28266d0e01938cbc664e06ce34a0c9c5750a8703e13299c4f5038e9a0b0b5d8da68b1dbe32049f3ebdda3939bbac791627e99798b738fbdac55bdbb6efa32c723de6a5c8f4be6c7d9c60c9c57a4cbc0f9dc63e07cf29ec212db77513e858366c6f1281de37a38a932f331f324ce9b297ca37da9bb9a60d5364de6a1ad7db6d790900f33e61eda3ee24cb974ee7e7d2cd37d68fbe5d9539bddaff90bc369bf4cb774eef0cfec1c7b64d9a6cf3cd3a3ceddf5eedaf33deaeed8736e3e5429c66b8f39ad6196bde9f1565cb902c5134c184121420374d491a1638ebc717a8c6deaee9adcac7d3c8da93bd5c2f1305d7bf7cdef4cd457fae97bf9cc77ddf4c196f9b28d982faff2b92f9fbc2f7bd7e49dee3ddbe8acd3758379e4785c180f671babffe47973fbb41c2c30313bf6183118189cba40667db5b15afda7533d727284dd9e4606223aefa4e79cbefef258fa20c7a33bcbc3dc29d763ebeed1c9cca9c28dd1376b294ad7c38933a99e6a1169e870061a6aecdc2faac5a44759b57d79e84c8b488337e594c457d8fe98a1b1e71f33e41f33744edb0749ed116f3948ca2e8b20cbf0a57dbf48b588362c56c573d164940c8054089931d37bec2b127814671a447e59c88cb69301584f06402a7a5ebb5f8eacfa671f3ac580699fd359f68534402b50fae24c735d91c0cb13678b736c78a5079d27cef6390ea82b127817e74c33fb898364c7b4d0f795e391e369a6edb5c579885b40a9ebed5339603cd9634b2a78b2cf1c2e2b78b21ca01452c0933d077b821af06490cbe100468eb81a7239d0298ac8c14615948035e4729856b06041d690cb8146131f3c41935b9810c5125b432e8718272042881ae4207160848b281cd18527fbcc41468a1f14c9426ac8e510a9f0c1167200832e5d7832c8e550ca82143908a348972e3cd9576afbe5eb417c68cabe3eb5a3767d0a87229127fb7980f6ec418086fa1e029067dbc1c248efbeecdc47d23eaecb3aec23e2be333b1691c669d949ddebc7dd7e3f3aeef7b38345443aec1f429a48c35ed5321ed233dcca6090fa0778cfaed5cf870a69a2ec1ae472c05d2be3e130053adcca78bc6bb895f168d34786ce44dc7f0c3169a28ceb660e1ee91a6e412c3cdd671321b181276bc0152334e04a146883de6659f60965ff6188a7744d6eddd7c393ce87113c9a86c3c6f5b83eaf418e02048041114f867d6840154180415115418081123cd950438e078b283bec1f2268a256e5c97ac8f4f5eed301e674e70ee70d87853a9c4168e4658f54c24fea7f80ce4260fa078c420e96e8ebacf9cbbb8785805c39e4e1e09156140494b62c212ffd83665142cfe7d86af983c3f6faeeeb617ba70307fb219eec93f34140dba379a3e48b53e68df6aec342d148bb322533ba129b4051f21c9b08fd30c4f3a4fe32dcc09bf80776e95c43b384c0f48f194280e207424f842427951cf2744b3acb16362279b2431e0dc379c39a98c563a8e78598fa47046ef043cfc3a22128e92c953060684851e721547a16893cdab3ef88e4d1706a5ebb91abbd7e417ae60f89e274cc8890ccc0935dfb8a5c5d78328c0478d9c4b48436d458c7c7ec03a4823efad8a88212ba74ccb225fe00c4f263e807473df1072eb3508c98e8ba0f390442b0488aa30e8a5880402928693a319110bc0f2423274968f15cb8758933918e975f84af721acd7bf3c6460b6fbe5e9f8d16753ede706db2f058f533e553732acbb294af2cf9792cef853dd76712c364b6c91b402ab5f05e01bb2c0a2249cb5f8cb3387561567d4adaebf338e593ba6e2f391fecf71267cee763c96358a4408d2c40bc376fa27deac23dc7d43281e44d1c424fe43dfa2c7fcd5c7f559b2c3c96bdbcc1e2944fca7e3e6571cf7cc51ba6306261022e3d7f5120f7bf97edb93eafeb1866d9530d439af2c16e31abb2328653298b7b024043b856a99e5f9e4d33331f82ea1929e50d1d388109f93fc7384c2a957a263dc3984c1f826a93e7793d3ca1c10d9ee0fdcf33aea2a1f91052d360181898e32c4484d60bb898f11fa019aa67194f9d4ea7671acf1fc65885b308c2a0852e4f90f11f20199ff118a9e718a789898979ae79fef77d299c45d04ab244123366cc78068af11fa01897f11934cfaa9f5e5e5e9e63789ef19f06e71028e10949b2902143c63390ea3f40aac7b88cd373ea312412e919f52c63c68c19279c795002186ed0448c18319e8152ff014a5df51831cf347fd9b6ed59e639860c19326270be8850850aaca0527d084dab9e8168fe0344f3d455389f4ea24183c6f3ccb32a468c0f41758c179cab169630052ba9d487d074ea19e8f41fa0d3699ec239e65b4d4dcdb3e939a552a94838d3293401c40e6868689e8162fe0314f3d369b6e797d3882186189e619e6952a994dc628827b6389d4ecf402fff017a79cc4f38cbd37826bd0685423de3e7130dcd87a09a8606ceb209109850141313f30c44fa0f10e92f8fc1d97bcdf3f6186464649ebfe798d3e943507daac1198671e4084e7879797906dafe03b49df4179c4b8fe199c651333333cf7f7e8989f91054c7c480b30f60802105474824d233108dff00d1f87652cd654c26d3f38c67d2cbcb87a0fac58721b2988212b6ed43687a7b06aaf90f50cd697cc3b9bbcc730c9fc1194848d630071ac235cc87901ae659c6f3762021b349071ad235e943504d124ab2c5145b68d0a0f10c14c37f806278cd69cc3ca36e32994c265cc30cce3c48717402a29a9a9a6720d47f80508fe135387b3287d181ab48e44818a80823861862780692f90f90cc518f01e7d24dcf33c733c055bc5a0006236c41a1503247e1cc7d3030303038c7c90fbe60828c8c8c0ccedd6b481b38218824c8192bcff3a2102718c2083c193570157b984203279694621cae22c7712178820b4870829bb94ae55dca775dd7f1a082307e1862e63f40339de9a953e9de7f804af72ea59475092470c005d37f804c9f390cce30a7c126b88adc4bff01e25ebae7791ece289c6714a23012c5cccccc3310cc7f80606efa0cced9659e4f33333333d8f3ba73ff01eacebd542a957096c1d90725aa4004224ca60fa169d33390f71f20ef30373dc7944aa512deac7cf71f20f9ee1cc771389b7016410f8a7c61091818986720eb1d06e7fbd2f30bc7711cbe55ca775df72132bac3b984f305c4158050417bde87d0b4f70c54ff03645fefe14ceabaee41a7ee3085abf8931dfb0f90941f22a325ce1cce5408275858d279c352ca079d5a620857f11988fec71e0868c8d5f6404362da7e084ddbcf67a0215967071a02d3d987c8e8ec403fd8ef7fb20361bf39c852683aa9628808702249c329ad040cb83469078d46861944893bf3e81d686498810764436ef50ef2c6f4b1a1e52a0a6f4a4b9c257e441a945698d02bc0295d63504496df41ae20f58153baee206f48fc6343cbe79f9d96ab283c565d45e1412534eda99845319c227464f23c91ffbc810fc3949e97b1d64961a514524a298413fecc96926ef18b3d37b9bad1463c8c73ca29bb1ea3504228bf54a592524aa57dcb396f7fa1d773420a27a590524a21acb07e7685f3b8a5c458f6885a9318e7cc024a082184104208216c42db68a431356ba431ce392f8d9a5e461a220d393e8876b6cf41b7af07d18e737ed2d6790f7f0fb368319cf2a12cb923b7f9f8a566a5925eb7a90bbbf5295b694f59e35fc0a4eb0df2570c9410a2d55a96597b5df6baaecb36e5514f2fb768afebda5aebc1115a9136e6a55bcd2c97b3b368670c33f2b0cbb3b46ca294d236cd5cdf492391da67484a0aba741e92d26a35d08419ceb4d5ea0b0749a2d5f4419951ab33534f2f5a194e6935c532d1c634451bf32b27bc08bdd0d777e48d8138f39033419cf92a64269823fbfcf54b7b314dce2783d9ae6f45056fa6e72d8438588c49c614e3b5b29b4cf64bc5ccdea76e4a4b61d95335b336524bafcc56cee73a55e205493a000d9570c1958e5c8f21294a5a0d34740494d68e19a5d5144aab29fe995eb43ac3dd166d4c27bc78252f3013db4a1b855893de3c7b79d7f33ccccb3ccfd33ccedbbcce479733d0f97e932812bd946619cd322dc36e2f4e875c82971dcad5c4d25a6beb55420828274b69a5c19eb543edbb4c4896467db6537addb331652fbd64c69eb3d32fa5a5b054bd4fc54b7f849a6edf91b3e9169f7db1352bad3d67d770ce30bd393b5542882bad615cff31d1e68c43374a244ab040ce2f55e3cec49ef397c2f08e2c75f18eac5317de9175cae21dd96cd9b161efcc1f21fa335b3e4a9f8959b05a62b504143c243c29e33400ccf1dd190018e750972a6124d1f0255e09038a49ca610d97a313e4229dd0f2af91f4b353f34b518c030f3a35b1048678ec615118440d8bc218a25745bcbc6ab97a4011d8c58b56ab859150f1b702820761ac5deea185e2d09cb28a06bf5ac27320d6849e455c98f4fc9c393d91e8bccd294cbaa8d29544bf61873752f617ac34d553e52118587a3ec648c71ce6f36108d1a6cf74d1850aba46edd35e5ffe41634ff60c13a15eaad72be783f5c519879d7995f24bdf973ecaed885dca12c0b9d45747c9d3617a99f98e3c993ef31f5963dfb01e3087c144a8671f44611f329e27d827e783f586330e3d58675cfa3ad5d2db6d516ff7bc60a52fd2ebaf2a3d3d0c8c2d3d6ffa7cc6f18834dbb81db1b38fc6d9650934ccd6711dcc6160607c620ef34d668e87f76ad261c2197bfd9cc1b9d4d95fbe5cead3c7aa0741775fa90482667d1807811341063da00215487042131e086f48c7b89edbd7adc69174708ff945cf9aa72f611bb1bef312eb8c65da936d7807bd379f7d99be7e30c73e0fb3ea87943ed63c0cce58e5746c1be47aae73d762bed3e92773ee63c9c4d2ed67b91df4de2bb783fe929edd2fe543fa8c7639aae374fad9b348e7ee87ec2965d1d3bf589c3ae11d43dd3dd51373d2634e3ae9f631df663ff36d9b273ff3c59c1ef5fa59ccda5e615ee27a98b69907401e9aa122a81f815086ccb33351df8df958db61c37caced1a7ed1f9523e1b09733d306be31890879ae2cc3560e8088e47a542dd4343ecf4f3a1b1a1de38ec92cb826c63d7b0ed41b67f2ed276b1235abb19866d7de476d46f523cac61d1174b243e491311b1688b95861fec29a3145b8a1a16716184a36111174b5a23c19f7ea525135a3e677584e703bee57fc01cb3b9c011796091064fd8127a2bfaa28896dbea082f6e3bd0be68a9b0c030d131a1280c35a8c1c50c471481810708c882660a305380d00db12df1c2041d972b60a8b04501f583a22fbca04d455d7039352cea024bd3ac94f0481a84b6041aa40d3968baa1c1d6a1c1fecc5b4b26bcf87938654f692196333aea9fab85bc90b4c909b11d1f245e69215bc31c4162ab5b317e8b455d24911ab4250fee1040c7c3431b1a94a7203c60d357ce62fad5f9511b83cc1fa0a1aecf43be00a34b03492e44b1d283ae981269b943006d6dad94ce2965843816ef10808fc59948cbd71d026808712c0bb3e28e183f9ba0d1c39a2325dd352cda8288d624c4515a9e302498284402c51179aad0f5a693a4989496474d5a4a284b172e3a329a18086d86362f1b161d61e97c4fab231c596979534e9c0194a54dae62f702c9352cdac20493f405ddb6a8140b3bb35cf7caed9ac03627645a4829cae2496f46d0c288c85dd18249774fdf6a1a605e16a1480b796700e0351216c583575c296d18118ab240425e58f25e84e2509437051a949a5c81170f8bb268353cecb00cadb5ae74e0d1234a293da2b552aa856a51e9110d03ca578511225d639618298d3466a1324e2129bd12a1c429a4cc12b344aa8566b79add7b2bce9e773add55dfe755c30ba9b5d63e27b65d19f13295b9a6a9bca1a726aad5ed3ce4379c67e87bad62df50db20d958bd22672b16eb11b4550daae3baee95975e1b34eb94d750f91337d51016ab117a45cb11164390cf399d7fccd0f4f3baee755dd9871e826da7966843be6a116dc8d3d3f8db951ec995acb5ca6f52255056b765d7fe90818a814803fd6155022c86a8f5b0e64747f6fba3810c870b53fae57844d3f4500d7a422c5021ba3ee583eb16b674c63de663658ff9cb97b3bf6061a4ebef353f98d36fa85110e26c33f7a8f37e261e1bce43f783dafd2eaabdfce2705049a9fa8aa47e24f2601c8f7ba2f7fe44fafd50b3477d76ed83ad5dd778bcbc477d9ed9efef754d83dbce84344f5dfb6063dc76689ffa8ebc1c8f7bfad3c78a39eced0b72ba8c76d497bbd39fbe1ef517e7ac87778ab9efcc9eec3097f978c0ce9efa623e1677989bbe0cc3e9903e963c87e597da0191a0946e57a3db35fa1da9dd07d9d6b48d5ebb8717e8ded30fe3765caf5ffdfcb08a85111d0f03a762a8348d14a5911e764ccd88000200003314002028140c084522a1504020d1e3c17c14800ba3a844704c95684190a21432c618000c01800010989181011261135c4f7b827f3e2efc79b857fa06746953b48befc1e6f8c610f8f364fca66f46b7baa5902a9a95398734b950736076f27b846fe21307b6ea598d2486d26d28bc2d06f5d13f23635d5ac3d35fcee3a549d8961b69e95f4f7f398f9726615b6ea4a57f3dfde53c5e9a84c596ab2602fee02b1c6dc1b0c5dc3d3c5dc17e833c5fd12cf774c8799ca9917f3036803962a4573e9df53c7e82c3660b35424148a01a3958ee2f2c2276fed1929d29e8f237dc5bd805effca3252353d0e56fb8b7b00bdef9b56486aafc35a4c310a91a4b45e99f8c382f0578b3f05089016634b92e6a21bad7da409e908cb7c56c4b6d802e3c77377014b1a5143b49f61e029f6621385248c55e338929df0da69e22798b4742a7d9ebc06ce292f235ddfe81b6805ddd5bce4ead21b7b31b78a008a3941b5bbb015b00520d50f7bc86833c8991fb5149fdb5f9c47bc194c6356025735001def561eecd2c67ed8a78e8475eb11228e584ab088c1618691ed46b2bea9123f68ccb08524639b7fad2f39deeb81588a31529d69c08dbf8ec85cd0c4ca84475e1f2b89feb89b0d74678b3083ff0982a2676216d361401027a1cded009ff4e0dc163d3aef9cbe08bdb1c4c2e7e78c8618cd38bfd7ab4754ba1534d08942ed66cede29994638b628e1fef547c9f788fdd94904246e459f8f7a27bffb0bbba15f8919fc23a9f5c42940c88aee55a42082065eb4b005fc3997f38668a2894d92365125c7b92ee8633167d2539be5536eae5736b501d448458c50d745940914aa4a6ca228e6c245c8f84bc94545dcbdacf650637994b6d5645171e47d6c7a57f9d756c0514d87b2cf1f5cdee537d73290ac4479cd53300f86802d5a3fb3832e1594cb920d945c4eb9486575951c70988a9d144743001203162e1ad29f0ff348eae8adac4c6fc8b03627a335dc68d6ca65e7bbb888b5a999591f16b8b28683d92881cf41c9a0d894edef55dc6049fa8aa59a55c7777e241231d89bfd722f8f023b4f7a0f5377a5f59a4de459f769e15d8caf91ba7f61e34d0c2074ca3f85a49ae1605e83b7bbe0f3bd9a2436af026c869027e501b971c5b4f67669449b54d5cf6db2c230760742d5358e71510724c752544c0b7aaa364c474eba1759575214599cc71425f70202e9b5c0d43fc9c6f8c64ab23adf12644bf94e4a8daae39b6224cc4319328c8ef4326aa5f6aafedc520db349dd21ca18555ecab6f634f6a2c5a87d65a9513f6ed09502d11c1c16c5348576e0b8b14501ffa3b5ee1c8bf37ad5d57ec340d74e43adaf68786938efb2c0723a9a6f4675405eb5d5913ed52748708b09536ba7b80c62b64677fad9927eeb861ada01d852bcd0111f149bbf329f8d4b22fdb346060288328efee62503daaa6c73f517e6c9e4e5f4edeff865a24e7650a39481a7d0e1fad3aa301d392e02b59417f8f4ee10c169054c6b85ab717f5fac5a31593a24173311f8c908049118071f76613fdc44ebf43f9352ee0f0525345a2aa3a55d6516122a6f32c00462b2034dc10f5e481784dfcaea57e4574b8045cbfc5529cc5c20b8bee3c2828ae5bc5eb036ed4c4430c3a81dbcdcf71d5622d7249168d65926d18abe04421bd431e6a2312bffb36b7fdcb872df39c282d7005c69f5399cc52c5e5f10e92a2012046abc4491f9395b8824e0913a786195a754d61e0a4f7ce7af7187f8d3af8a6d09b347d88acaa35590f3a673bb0b32e9d4bc40c8e96d6f4ff9489843b57fdee0d64bddd931d8579dd921e0b143ae699e2b41706ffd8b74e3f5475655c76c477eebdf8e65feab2080d846060a1f261c0c182db9f931b864045a2f094c782d2fb4550261ea1970c41a92c0b8a2c76991ef331b3d76a013241b51d672b0b92032236abb007fc82e50717dd43708bc146a3871627175ea00a5ab3111bb4880625440b2da28702b14251106f5f591281725db70637436e663963a84a1c089ddb16711a752b88cf417cc691dbc55a6233e8a5f3a858edb0682408c0fd6bc8cf0e779ab441e97116c78cd066f7bf0ecc3cc0d46a3d28425850787d44dc75c3f1ab7cb478c42b917a6ee4df50b518dd079b6790e7c0a17459732d618626769706a776c01d1cf34310b13bc8f0ec9738c42d23c2ec73906acdac500120539c63a8d217d55960a79c39de89e9a5624a616d133612452ab81b54e718037ae19d45dae19d9c75fd2fd0d232466218c514323bc730c55145d8f18ac36013e4a975a161fd12fbf80483b7b100591f7d583d34891fd37cf7a6607f2e782de727cf4d49e76d2c0d78c57c0fcf6e6b7048529da4759a69812d80c8cdc6c3ba95e5be220b138f755564c1f31a4bb9c436f0bc763cd5f2781584c7478f23268e4b39702f89b7deb351b11a3e02e59e424bbc72dee0bca4f71f6dc669b09483e6e79400f49228f4421673a012082013c08d9f90eae1fb0a40a18516f2341a9fc94cc11d15951715bd8f18e1d1b2f97ba798ae68bb643a593e78c6308c5a3e378d04b02cc002e3dc18a3ba6cff2c0c689a1753cd80a3078bee6854863c70ac65496ac536a90c86a0734c57df47356a561dfdaa2c930be940458d823f74a8d66a345fb465a44a8c3e3c42e5b2df70784ea40c677d0ec9888fc28f2e0db75fcb2d777eea291e222ba360711150fafc8666bf4b73b3cb309eaf29a872d3a59d451e77f8ed955fd192e1027182e53efe32a9212c4d2eee63e6da57101e0cbb8b53f82c3ccf005ef9b7e9d1142b0df5ab063974ad95481dc4c027e729fe6d50bca9048c0ae3cbab96b8fd96c12f71de91b5b352344da1eb8e5935ae67c41e6955c032a50c1e02e268c2d199778544a7c83d3e4119b3b4219fd1fcd3d1c1aca778df15ed513d014a500f5f3e9679f54750b74d7ef276bee30e6238ef3fe134ff790a88a19b1ca754732c6bd60969accfba6314bbb00a95c061dfb531ba76e3a7c7df03b418be063d1a0d76e496b53c89ed45d77630d5665eff6cccc373c3cd5122ee99bcdeef7613e56ba32c065d543a4ce260b96cb1d4d67380c5f2d5855aff3eb39707a6914e5efe9684772a518d0cc16b6519eeede61e1022bfad35a7fdf353aa15f387bbb277dd8b059c1b92d972a5092680fc2205dd50a9974061485cc2ef9bcd975b14e7e656248cd0cc86ecd6b626942bbb81bd76808d26babed1610d04ec5b73054c995b348d537fc93833c83d479ee44cbad77e7a06adeeaef756f077e58abb43deaf9b2875dd68ba279304c4ab684ce823c88000147d0379acad2586309143512a7006174a5261ac680dedf2275248b8fdb9a1851420f9dd093ee8003813741eecb7aafbfb375aea2e19e03ee8d2ef0aee69afa3333340881905b371d700227c0229f4a55341b4a0eaa578d3bbbe196c626645ae0dd86077c0b3339c308ea3341691cc60c524a91c1a424c2de5755203979fc23595d5028aac8e807fa5234f5038b5e058beaaa60c30bdc28e86ec640bcf7b5d9247c1e6da7201a1537520c521841f1696819175f9c9a53666549d1d4365a0d2597e5a29d5914fed19749532040599c9e4ba5d8e756f9f919c0c6602af2b26703338fec23b6df86272dded4e2a56ddaa6f2ed9aa730a28705f50ffbc261b7b6715dea33ccafd18a9b682119f7b6341a0cbc44ccd2ac0559af3228e22add4730b6a825659fdf682aad7016757fa32c8a00ec1cdb1c2894d30e9eda64f1f6547f9566ef5bb1d6302528ccefa9f40aa4b3d2ff4419577e04a3aefb4abcf85d6697877ee7b20f1d6c5514248e76a24d02f3f58237ec0d1e54fc9d20e69afe89aa67424430565bbe6651488d3265753ca1ab690aebcea79642954eed762c962f5b8d9debf844b33b4a84d6b18799344191f5d416ee1a42ce703456da3d310eeb7a90b5ac95a3f1bdd88c181dd118f61591d92cbad24800897c63e101142c61a1d1a54f4c9c949944282db568955e94e2a624a94d2495192f2b7806db77ab9ab83eb831246f40d212ef45ad1083378abdd649f6a6a6bd928f227bc455d47022c16616b3a74b758a0c791fb722b00c54d20d243b2a78e94b44550bb12f35426b3920ecaa91f788c6b4cb3e047a531f3c06e9fcf76e6501cdd59ca0e182c1fb058372e44951aa25a295da0b93139069a4811c4b03863abb973b9228335fa8b9426cf8b6239901939fc4e15dc89bd9c4e8ac413ea76319d39eaabf07cd20db4f7fff177b5f9df785a5c0506b9e89cbf76094d4f7d3032dbe794e6e97567fa6841cef8a1b41ac5565378e11cbc4e1ef2645dafd4bf57400342ec460775f76508c48d71edd70005145eb47c9648d73c0c57ebe2cb35312c1e1be7164ba066337a2ebd98301ec78fe33e8310638274d64d1bb4a68e3f752c722142a9d6dccb5dbc1b8a28bcc53be0f23778bc29e71e12d70ed17a37bbca53adc70608d4c36e7dc9087ed68e1e243a5034d32ca198b05ef51210410411f0aedd13f0e9359f463005871b677087ca25d0152dff5d9649e84cb024b114a1b255ee4848af9c5e06961972f51781df58261c81c59850c314933c1ab82ab85e48ddbf6fb93aae558a2ea9844107900fa080c8c1c02574c82815fd5c9fbd58f905845e03e642ec863324cd1e62105ffe43aa998e5bbf10e0c80e9575c66a2bf68544bfef460a737b6cfc086c7bfb81b5d07ed96ed291a3b5ffed70caddb00443a081db07206043dd3ab8d241502408d65d9f97f138040b1dba0426b27b1b5830f922ac9b9e08edad07516425c892556e2be57897667e08c1f027b0c94cf27fddccd488dcfc2dce777a2f16e807a89f327dbe03addf1ffa7219a622f751768d718d398c94af466facd939c14032c324fda379abcf1edb75a21380b05406f02d7c02f9798f4559d0109099b586a87baa56ce64bfe95ad6870b5a6e4eb25eb52fd90a312f8333b95faa9735f9fbe5595d4cc927eebeaf96fe7d597d9ee43f6dfbb74c892fb0218478522412998b1e39ce61de12e9fbf18284e6c68b547080db49814bbd40956125409d6e7017be679f154f57810074a2af128c4b2eab94ad25596c791c36b28cba2ea98e08f7c810f3f002f62a695e21fe60dbbedeefe285f78d23bf77ddbcdf6883875490134b9469578904071456cfae22dabcce5c93593bed03a24ad38aaadd5abf23b5173d5369cb95e194a20e99f176162d4b7ac109e71db322387649f6758f62c844a8e8f17c8364cb26177cb6d9614c276610327d0343915e32adeecd0e8e041851de85fc413eff898e3c05d0bf957955031f70353bd2a3b64d3741790a4362849d2ca33d79ab76886e921f715fa67b5bc23631730b657004ae805f7cb78d8f47fb5675cbcff992da266e941b651cdb2b6b36cc5152cc97595f6fb2eaebdfdb8b4aaf042a90dd898e0fa179b6956f316417d78ceac116710f27ef5572e6d645850d12ba4907706b719deb18bfe122794bef29124237a97ae084e917c65500ae4440eda2923733d072942d844082dd0af1e4990107a92668cd59cf2eaa037ee51b6714f0bd9096ee39aaa5ce050efb6d5170880bd6439ea789f15a67c3b7302f1c000697acd694867615b3afd145abc2d9b6cc4ae7fbc5bd6f58dd97c53b5bd92830da1f28827c2694a3487e2a070471c130f8a2e4d41fdae8a11eeedb4117e989fc088b0ee748d075d36d306b230522d287c61a6a6f55be22f77a6382fd9525e94a55d895f5db6f1262abbec9e1d074bf82ae96dc14f2cda02b231dfb429fba465e5da1964f22b816770ad2884dde46e1570623b88e708e22c237a8057b1a1f209348750f51561cc0320b0ff90771645781df41250a091d6ea94d8db2923aeeb60258fbaec415608c86eda1d193cc1a7103bea3574d1649ef59ffff230f60d9d783123b4daf6cfb791f828322bcb804cf3e5e7473fc57c4f3169cd042d0dffdefc1e9cd07567feb7161549f452eab2d8f913494e4da1baebfcb05f9de449cb7c4121a3f598f6eaeacf4d5ae8eec2cd0e1cf1b9d457f98537fc88ab959286bf65843445e2d447fadabf5c1b0736f109b32482c13f701f73691e6d3e9dc0b9e1bef8f27f9c6b57202e10baacd39d9c69b38f786afa3c98383a45829fa950121930b6456b09bb7dc9a5d1eb2b38757c95bcba1e0a5c886ec2dd29ae066e15508e2f1e71e96555592b7c61995bcede80355a816f8f799e22a25ef72941ba8a1252f2ce1d650bd4fd76b68fa8b4a77e13b88d958f57a38deff8bc28ccbd1f8d598a0b9f9758fd98e1f81937ff60b584c9b81bf06f717e6fc4394a00e53dd36d60501e2bf761138a1d8ae084cda4b66971a3217b48e559e8c150ee9f9fed875d3fa89aa21b6f6348ae6253fccd7e7c222d32f14373c2d88f3a74bb2c83d32ddb6de5930e1b4c6a6a27ff6665723d8f6c0141e962c3ec792b6d2835dc044d3c405b6d4e76951dc787ef090a96394cf921542687e30973027d6665acdbfcdb56f4cf0d0934b2a90878e7ed982b0cd1afb7e4d690ab91b655c6d8d745ade9a8136189961602b206a52b9065d5035c9b3d653e160e533c8905ff771214f9230158340da766ac927d9bc0d74597bb373eebf63ce7c32cf0b45b73f4c02baa5b399b8a30e0983181f4041c20b702bb987f49a313810d150c8a30043b1e279e4e2df3ee6e79e8fbb9449bbf0e99344f0c71093fa3afeec53346cea3a077a3d990018fe6af50f7cc9b3e109077cfa5d9500b7dbe4fa51ac8f8ca64ffd4863fda116ba7e472affeb25604496820562aa64a6f3d1db04f00954fa4336d80f0c3cd34e06a97eb8264f9f0317fe3baf09106e104c61c3f37b288d0c42c6843b5fbe89cc3d2ea95194e32014da638544f7834f859a964279a8a0595c75f0036b1354ac1bbcdbd1695122dc0cde1833733dcff808e0a9420e2f3f0e657dc1fffcdf07503566882782ed45c14423d54f4e28ba7dca0e109e03a60922ff20140bcad0284764d060d484610d8cc5a95c39ee059a5ec20ac40d0632de3601ca503ba8ea62c7601f37bfab759fbf04d1dd7e8b7d2bda9f15dbe7ae1b92d35cfc3aac1082c52c04526886e130620846176d21374399eb5c61975afe7eeb8c4d569e21da811e6318e960d735a7f2884b46585fb46c85026d489a77c167c6b6cac81aeefd3341ed58f2c4050919c001e8c0f6092366e3aaf929733f6fb23991a8811f0736800f6d5115f2ff29b2c91c1e02bc19c437bb00cd1a601fbfc1f1a369ca57c136f868faf3bbf30fe5ee3c2d78ee7f5970195a692e373ad24259ff96ca95adb8b3a51b405444e9c95fa934c760300e3cf2c7fd7505ea54c20150927f99d06f1bc0103d69eca2c4c2b970cb403e16c98602d8b1005241039d3dd4eab783694e8f1d8771e63d787c062a7a8ef829d9183ce80e17e31779daaed9d3135ce6ebd9bd96bf772d59dff5cefb6a264eebf73b622326d1e326d79a3a8b0e1b6d5faecec6d2d3355375f68d47b024fb4f3755fb2a557907c78af2b4098ce7935e8157d18b982c575663a6169e0bd978a6699a120d22a9f84408e37625b0fccf40fd5844a730c47a39b5d5ab93fb3b5b9fb9689271f1b81089574b1cd9a0ac92ed00cca18b5ee197e6ba03fb1c3b4769953cb1dca1bbdf96b8444b38d1da18430c1ce9595156713eaa4d1e369721a457886d899fdecc6944f2cac5e9985e19c116589e1769a9122cd2781231fdee8f11eb0e5c13d171028d2409aae7314b3e5bd0833b1ba0ba445f9c3436fe5db3129893c2b7a92784973d4daf451522799f535c954fd5e9a8386163b2a537fbe6533024c612ae85ba642f0d4456eda2f5d12a0e127ed821b596d189be71a85252d521444cee698b70dc2b00042817e6a34b07d9315197346e4360dcc1e56c486097eeca0f2a916f3573f85875d60dee28c0a3633a93691994b5986091cdb1c6a143149f202d9c394cd23d281fa699708ee9a43e1d3a72297020ddf2c07f3447fe0a8ad1d11a86310f6dbc2c9b3a86b862e38746abce96e2b33caf9b325a6964290fe6b0ffd727d06f1db23dcc59218d13d6f43e9095fd91a22af1cda438abefd87772ec79f264df43ced0c48c2d68448fc167718abee3d6af843d0769cc742853fed9d0d7a6d331c66c33eb3a09eeda3e1235b0dd1fa65d2f4254e8ad3d8f670956c50468a4089d51ffdeac3e9d22485af8ed286853a97908bf6cd7a6443a564215265ed11f3a28a963d71a20fbe7095227460f7d519cb538a54c14b11b125223b078cb1b41be1f172c85b701406f3b9a021405cc87150a0e817d28391e602e81898ec006d0be23d8887c3d1c9150bb7be90350e23be185b0a4c0b733f7c4203c3e7bee99423e4bc5bc4c1cd324dc822963df4c26e7c94e159a46e95ba2a33109103cec2eb76f3e1637704c6b494418389874603f6b3c57da8da0a32f5a3d4dfd18e7afe1426684823bfc4d46015ba08139547d06b829ee4c65888b16270eb66c6c4511b2538842eb8484c51f42276d403a047aee6ac19ecfc4066f97cf63748c93a50b49c4cb5d39bb88d087f1c49bedec3b51d731f71f4fb8aa2d1055282e649d1691b2e11e5c861a7b9c13c7faa4fe17ad230031bb10341462e18e376d5f1a31499ad7699ce46acc1eaeb022f3b5678eb7ca09ceba02900c6528032d9399c90e4fdd3c0ac62a5d056d41816e943da094d1eef9a21e5a7d19b779b24242fd66591ddbd7b7427199e86450fee6664326df8e7f3c985087c4b5c5ac471b95b7aefef1c861c56c24157f68afe8955c0cf29a7fb6c791266d3b78a64a0a3d0112719852f708d432dfe87bb4fe1c60bc0324c04120788ab1f5bf707a09f242aebd8fb47d13a930f3c9fa0dd5ec10aec4b4c80cbce2328d2d7c2f37391e60d06604f89c9ae150a5ea73fd9d45f6a1687465741524aade26aeaf45e908238c3527ca8b7ca28f24350b6e0cd2bababb0d3e1ecfc015131be959461a556062974470627499bddbaaa147d9a507ba7b9a9b46e289fd2bdc5655df0718adb038da0a6dca2e37c4d5551c1a7c780971352b41f4174e2a5722c16dba9a0b26a1d049b35758829bc08a8fbec417f28e694031a09f8e24f5ed9f14a27787f982613b7a7df8107d7e1b3c352baac8194777f1330e16b98aad1b8dd74da314a282f04777a38170b99b44859be264f16df5290d533de62d35602d7199c768126579f457e6b62abd7178b3a4a4c7b321be4b341632799486f2e2515c3562cb5c2b73b15be9a149159a3f1a9523224a90f5494a969cd36b1fd37df9dbc58cefb06565b5dbd07fb6ef7706a9a5604e366c826e60b598d22b79555edffd5a1de1f138e2241558f4311f1893439597acaec9403641646279c9e38c3c7ac668b6be9285781ff6d0a3907096765dacf94f6cba65d084d211ef7d831280f862fdd4f5f072d9792a3938d2afa9bb9120f5eb72607e559b1558e75c5f7db74ab20d9901fc9e1e91ab8c82f6865198e06e86b73c1391b7a8de5cc57ab4afb22048f3b470ab182220b360e8376444efd7b925e2a7cf1a4b7eba8331fdfacee05e66a938564f52b846acf65bfc2abe16a323cb17505cee89cff75788410fd5161d41fb088bce7d9a3c9ac8ebd83a363a98a921950af4f95c87511fe446544c751128426fe484b3d414228e468e07ebbe5b3c2322f044325bec48561a11af1a18ae42b166c6596a8d92d8f80408eb05299bfd7fd4bc1d6c8fccac692d6c31ba8983287515c4560124c1cb351ef2500264e9f007ccb5e99ebda53713169f55f572bed9a13334f4511c6c10f32880e3feac964b449e65c16a70abf5ecbe5f590c6d7d13a0527fdd788bb99e0dde4dd87dec450d478891f94c59988e8df359b836ec3529de68587329652f3628114e0e3b4cc4fcb15169cff4965298580bdd5fab781dde3fe4623d1aa5e68afa0c28739c32268c045c47124646224d86210d9c1755a01f9deb5c27026b7d659ea457e5b065e3d07b721f6aef29940400350776a9e4d78dcd8e6fb32ac1cf8284b08fe2f633e07888a96dd76cb58262c832e526d233f832d8428af017bbc4d2a0a46bd0dffb95242512289d390f0f19cc7f46f4c07aa382802f178ab9025dbd899ef14eb8795289764757e8f3374ae951c88bd14bd4cd773f0d67eb674861db42e5295cbd9686fe12f7c848c7eb1ade6b670b040e317d3b386c8e2a58972a43da4548de64fcbd1675b9e0a099790f2ec635ec3e0e228b4f034a740da94200948b6583f806939a79e6c6327d79eda90932dc338022622612e43b111c42ddafe828631890329ddeee6b5703c93353094af7396c6b43c986a63d8707413cc307e729156d023df464c2959a3192ff1bace6b80e637e51db990e68394b7b9bf0888da8325688943e4bc33fd579f230ac5ae7d20ba1d7dfedbd012646962fdc6cef7049c9c850ea85c11f0ac5517da2d65a2f660e227d57422451defc4ce9430b7e92309b88249a20d6b44ae0f68aa8de4148e963d5e2a266eb8e8e21eeecf7c8e8809cfdb6b5ef51b71e3c703b18dec15d95ed807cf1f21390a56d19899664a453c2be57c40472d4d2918be261ccec6478a76c68002aa68ec55587dbbd1a583ca3d2024e84721ebae407417443eff0112add9275caf5b3837c443df17b5357b0f38cfd83e333eddd14df529f8f0826fa9bb38467c3c38fdbe4c36f4e53d6ad28cfc3c0fbe806e5416469b6aceacde899d33467aed8ee47b292862ec0a1e45a4513c7a276090e2545ce5f8ca68ab52478284995be3153535b58cb12e606a2ae56bcd9570e09e636ee63c639e25a6f6bd788b4bf4ffbf4154f2d3345ff4f9c6aeb6d33ca2339d121bf024ef8fc4d756a03fa31d2ff1c45aabc6ec7da91a7ec34cca408ed3b776d125b58aefc60c7f20b87f66ec80eb3fabecae08d3ee86d2595b9a7b1bc3aad010f3f91ac6eab6c9ff9463c074cb06036d24b9b64dfdf9bd478ba575e64434673a249ddd74669e76de960b4faf508862f48c77da240ff7ca63df0192d632afba0f99a2a9e4bb7c6145bcf1579f904037c3ded2b828e9a40cc78275bedafe5ad28e55365d1ff0921c458e937465a15f548ae47902517644e5338be1c5f5729766dd1badfa1927f6078c0607b3cf3967be0a4ac703c7eb8767f3800721e3a6018928c2b62d98650267c7b0f706ed4891264f127a11eea9c5cc2729e4900a96da43e3b324bb32d36a8aa5ca23d594d8586f88af6940062052906d0192984a7337272fe3bc376939a89f959699a6a98c937caba6a048a0dc90b09c311a1987bc84c5f99365dd37a5af67996cbd294f5cebb2e6f6e52e3fd843b2542991a8d811a465e476e9b68a30a7fe76dc92be6024fd0614334c898b5496c08deda9ccb55c18450dca2da23710b542f3c24563a6c0ec9131cb77316bc8831b90192b56005c9241539166cf1082b5b1f37ee5c74f29efcfbe12ffee84ddfc005d6c57b4a965e2b9a24d586aa4b8fe7724f0d4efce7817429458fc8282a11df64e5bb5f1385812eccde4cb6fefd12a22cdb6d092357a3377ff12caef533d9452f869d5093f2c76e60e43ddee6e1becb2ddda35e5714a97ca3306a0a4701c7d8d651f945229edb96844c66976fad5dd1b890c99967e1eb5763f4907547a802062e89929441623ab76059ddb7eb4d76f10ba1f1f7273728c225f551cdb9e58b92b8318840e3b454758cb8703eab5ca69d624643c9c6ba6ba8e79c233121a7b7b915eaa632762f6c54250e0441ef4ce3c40890694cdca3a050cc4d7fef3fae020807ddde077e996dd0bedc50a7a0ea55e65d701c82f72a1926af296e39645ec657001c52d1013f7ff65c5daf0ade137e83e6fda1d4d6e24cc57d01acd04aa5b0947e42505ba10addd6479bc7c4950b26a2270f5a58584a4714dc12622b5e97dae0dc4fac9968e7ba15333516d9c3af5b4a9265cda714c6a8989e76499b03f82581395b4c8012992d2f0875eb2c5515ab5ec3cbee27146066c186152ac5240fbbac48ad4bd24578c0662434f32946bf95a19c06c1f370fac746923da95bb953089bb71b13b9b57519a298bc4c51bd38d05f22db3406a2b24ec505ff6e9e18482216e5c12c0384acd741afc2102a7c8b772e6d9b7776c599c4ed243032dc29f0921b1db649025afeb0b20e18702039aef839ee20f3dd53d1fe75cc87db4625b802d994022e45dd909611afd66116ac9a3f6da4d8d02d94919770df19fb296d5cb684cd1512ae0d34d5c3ed01e23e8ea3df1a3ca7a94f2480aa90db633c5f2ef716d3512dab65ef71cb847164593185b716a8919563cfd19f636ec34cb5df307f7a5109e5f4c7b007e715e4a7f6c4544eaa80e2d491bd900063d810c0b37dc4227d5867f73b1f4c696366beff4bee009b4989bba48549bd26a25501fddab6499838473e3c1d8a4692c56b68511f4d1c8f9c2cf589da15d14df331dc53416c3691d32682b51279895d2ecc053f7075db69a7cf04d13a1dc419e116c4116cc29697c5ce61309170d8829241f6b2d50caafa29ca852924d8f1f484487a056668676e453123dced2895604aa53fcb78cfbf330effb65c8f2d4aaa6d4615000cb5de38c8cdb5133fd0800d2ff3a9b5f5a2103c78f1ce258b1231bb342966fb5cd2b2b453570051b090c579aef62e85f29d6dda842e0fe374d30d459fc40020234035f02a250e9688a78811217010ad4d4a117020e8cd0c04ca5b68a8bbe255132100cc7c6568fcdbb5bf60bf1130cba2394e9aa06c2808737f159e4f72a212acc71d16b6a88f7e9d27531ca831b94db22832f988e2aba38c21bb33dd2710c70aa57f43a9c5f5e43f797e17d322f9c5c0b2175a857042694b69bdc1ee9ca0535318f947570d1f504b13935695f46cdb68a4fe2f075031b2cffc6c1a5200c68ec662144cb76d9e96afb84646a49fb8b8a4bb0459e35c434a7a32490313a41021105fd7eda90a312cdd919fd24ae5062ee51d6f71b51ce35f20a707652598ef0d49ee85549df159dfa2bd8a2bf75759e150a3bfd152e2185bc8a517ee64c4b952d4d7ab787b805414b3f509ca99a0d04019418396133fffa65497a8da58d115ec7c24d50545b1668a8dcb3ba3af3a07a7b70cce61b3fdef6807292fb0633a6174a867deade24bf81e57731b5a22718859e80e14175f89765382f515d4bfc9bf36d94e292d6ef30d6190f650ef14cceb0b8eb841ea1b91570455d84d0b41bead9d71d6f89ccecb630907d9d9fc68a967df99cc43d79479deff35684fa0dcbfb7697b9006ed6179cfaa79239012e85e6d85e4b7f66f7d87c9b75ae2b6858f7c913406c69174006e377fef073fa9267443d3a2a8f27dd04d74df4779106135418cb9eb75b72bf06f24eee575f63729516462d99554209dc9eeaa50f99741d03971c9b2758916c50cb38771cb9e75064911cba1108c76adee87cdfc76e0a0395e45b14cc8f519769a02e958a91418816aa01f9f5f06da95b9e2d03e2f3499fd692e49d0f6dba47e5e05b71c3365d6c9de18f6fee8ad74819a959b3262eaca44d43998883e38ca7d9f0045c4b13faf21da5ec8e5a19014c8243917038f7ab0277220b569700a8be93ee821c432b8044a5e92cfe9c49da20daad866cd77d1093f35d3a8381802a36b4c0c16ad779e28d6543e08dce2a07c4839611cd4d7a565d4e6f78648fcdd90c804030f80e7523c4fc2fc5962ba6eecc272b26f21e46bdfebbae7a42f95cfcb24f2fe779d6afa793649473241ced5e84af5f08eecfc4259b9df0a849b68e38686f47beac45f3eb959be8d12cac91e4f94488f73d61bcde05b9d745d6e2e907a45a31ea65e6e0d7f0862a5e60f53775bfe9c6724ff8615254d5744297672f9bbe7f073c5a47bab8a123be0ddfcd11bbc753342fe85c983497c6e4363272111d589ac306ca580ee329ccbd483611369ef76de98d8410122461e04faea03db60cbbea57cf6d96bc012baf0d663cd0b27a7abf0f76dcb26670a9eeb52ba57085185d00191d141f05e3bea02c07631223551de18530e207c0683b2ba3d4d95f1052a4b71ab0987a67d6c616469bed2da2768cab0304e87a844f40fec62a81a8e9fc09f8ec8a54cab432551bc85c8a304fcc6d6642e3165df18512a100dfeb1e1c05adf89ed92c873aa470458667cb02590e48bff18fb20e7b51a4038db36260cffe1e4c7fbdc071bbd3a6ba2024261f0f00b106dae22cf611452ed5f3bcab64914172d01927366350d146441267841a9d987cb1847ec2581bdbf10442d44eaf1c42e0dec7d5e58c5bfec607047348a7f9037880c626b7fb5f39e65fad086b1554c71f5fbf58891f971b48064652de3ec02598f423eafc36a2f5d90577a875c50db3aa1211d156e54c083115f1be7d81bba037ab5dd9de03d559ee8fb6adcd53fd55116868fe5c40ee8e0a52506744b7b1cd0c33727ecad229bbc3adce5015816248b0a47b9e64da07d466b82352c3eaca3307803e0d8f3c1110cb2d2c8e97b1ad7400f4f2c13715b2bac3768ba53706b86248722cdee4eee83c40244deedd62d89955c7a0b4f6a403560cd8310700bc7b79641ea7dcbf6b770b6702e93052701686dff1b3883de587f571b060397042bbe2a92c381109bef2f379731bb2d19e57d8ce2653b2653257d66349079ac7f655a9e896078ebe64f92f2bd68ec491c883f99468438317e852d070d50b52628c8fc2c5563ec2af823d06c3254c0a7ecaf668362e97e06e8a0bbc24be479a9f8dfd5bd998731099f809627e1ac0c49f944850cc98aa91419fbe21d147b1ffe4e7ce8d8dc6ca39dff5afc0ab4ae6849866990ab6183b99b0661585d0054e51be96b5085b6390e12daf49a2fb1e35b711c8c239cad51ee151317be244c20c92d8664a6776497a64cb958767c02eea3f8a61eea4381d191d9c07dd15c8715a00618735f0d028295f452e59d906394df891a3b52ac13981a4e8d8e35d8d241b3b1d98fa044ed0c8a965e9447a17a6cf0bb2358f2a53ec0f607fbcbf6dd2d24a8dacfa81513af7845c53ff6633d67b3b5b8069ef61d934c3df674a894a11832094f680945bf22f311199168e342ec61aebaad07e017d6c2d7f2ab90ea2d107331e15109028f3b4cc26da4a04a6e055444798f4198330128dee90482575353ce64bb0dbcc3d77c749a1fb6e042d323158494027c641a1476b25e3bd14057a78648c97e6013321d639e32ebb7e2fba81f3eafba72c8205ca9492c7ffda5687601543a91d522cef0b2484116296f9de66bb690a48ac555198a34462a65e9c0d6bcc6d56b99f5f65fc232112a3874a3a184f32e93cf0e123f259c1957decd76d9a4ee562051989754857730a1143fc0983007f188328d230b333a30e8edbd5856f903af9009d36107df61df5d4d8eacb76eab9e394777262524adbe42ccce36a1e57a2850101683df99102e442582a9ddc6c74beacc0c15e725d76f2f1973b0569fbcee3427321eb574cd7e7afaac69e07d29947615e0cf4b3ad4c2e74a5c1bbea5dc2e16c70051c0ab88b4f56558c233b2d06b230bbf829ac1b9f4cd82d29e789f1a018292ce62af4f7e396c3a9a041e51fbf026a5526497441da14f2514090fab35f49726c7bcf84c5a4cbba9c6f7665dd8486dba7e09e137c139fdf4f66f36c1368dbb683cb029a49f926401af284f7edad1d04f324137445d04631a313cf0588dca1e4997d1d3d9ad35b7e6e6867cd8b63d28c160aafd041c6b0acfb7d97ae646d3407e8c11ab6558107e3d199a8b1757ac0e60fa09befae59b45037aeeaf8bab1f2b5b73cb145e0a3b67ba0f3a7f0d25cbbf110ce451aef361821b54c49ba2462751bda8ebc91990e3965b6b7a10572c573501c8b5d97c408c0684d5272c77367d8b052a282fe275049894c70856ecea2efe243664b13a0f13cbe9e0558be697c51b60bce5c9f9044fe96f4a4a8753decc6c3529478f55034daccd953d91d51f19b83d8842c3a5040cf81c7ca668e36bcb76a6a72166030008dedd988fc1e5bc16ec77407daa10cba34a393306b7c0e1e5c026bd81fc2423d19133540572e590048212be5f35f8681ddc49c63db4e3f9caf309e40c7a8b60508dab2da4a21ee7931d2870b542edb9019d2c71e6c2ea05d6e9e31a8a10a5c82be90bbf1d8ffa7c14e219de2f9b32212960167f8f10bde5631227364295c004fd0cb208deb937090482c63a2d789475c091695579d3c79cc001395153a637658a9159d008f512515e2d4b9222acb73a50cfb974a29e152636bfa3c427ef6a93bb80bce1cb6795c2d4c9887d66b6db62856790c8aa013a487a40f118c190538615199808cace9a710e9351b1cb7213a5e65993f675555daa9795e6f3f0b8dd8010da56e675be826cc910270de1c7f485fe8e055206b81fac6ba4996e53c9b0c4d5a834edbb38be0f60be6c7f81ca77eb91bc16e6c3a8009fb4a67160e78ca0649c79a8c853be74f8010055da646e98366905f064c9ed28f7a34a43d22fc534181bf67aab2503020cf62170ae2d9825b8e4a8305ec5a2c3ce54a40111b46671d3f2b5448136d15876975be2db8c67f155116ef0f756e8a62dbcb2892ba6c924be1a43e953781c8a865f870727bcb31a77b11a20b0b83b1c9895a09bc508b6d54002503518f62375e55e0f87c201b714ce889c19d67e2c77e9ce3155002d057aaef74e909951439790392814cb8cb41aa2320530267a8225369e0f75c67027f634a4f3f3d58cb46f44aa6202f64b2aa576352eb86ebf2f1157e658c82f83c5bb9d6201842afb6d62d11e84782e3d03095c226c06fdf0add58f747f7bf0da50740b0becdb8c25ae56f89257bb382d10a1da256884c4903a093c2a2a763f3ca5ae259ff2834e4118ec51dee986dcd8fb548dd12ef4fe16a36b510cfdabad8b559f22fd2f628c1261ecc988e00b7273b64154fb0e0fc0b197e515fa0e7cdd6b13b84a27335c798c171e1bb2d1e4e5fc98cccfe903191a263eff2954bd24acbefa6fe278333770dfb053642292d2a4245afdc83d798c4747b244a50153108e62f286f14c6476caf02c9227296a225a64f0eb128c3badc1f974818ca891d06c5910112ffede37da042500c861743c7fb676ac895c0dbf957d3e1481741f36a2f5516d8d14ebb05b6b66eab9ed598158052f2cc4f1465ed3519b1a5f9209886c26eb662b1fac64144ee4c0b8c1c99a6f0ec883c97a7538a737890a003037d1b7bf05dd5e840968570f80322654827725cea7da4fcf2edbabc4ee4ac1e36c863775809a6f21108d98ede879bc7e44b5d2e8dab49fe0f41ebb18d98324057109aad4c516e24b1d55d871b722dc1d342f7fc3d40f01a4fa7f99be2b4c020b1acf20c8fb50b075f9dcf4ea2099595402a268e538dc61f938ecf31138e5337eb5c2146a95bcf20fe2866df3d6c1f669b138747c380eb4d21c597bbd93f92e726fc5326b0f01024d816d7ff0e0e187c5a11344d3156101d8ba8bd4d5b672d3bb1141c98652968d4949f9bae8f4ea366cf3239322e10b083a28740b2f1bd1f73623971ae0831b7397ad52e48c701b38ec458676eb91dc1e2613a2031e0ca89b62a65e959635f51f97fbec664816b9ddda190e17fc87ba2f6332fc7054c53c42f5c94e571b4a95139cf07282009da5b70083a587382d5a1da241d23e2226fc60afa30656cba94c879e21d09b7ac015bf7ac0510429a67bc1a3598a0425aa3f501ee3fe685a81c2175ab40af31267c27a173ec1a94c6118d7f7817495cf52d8e2f003384b4bdccf3711a67054ba99171fa23191eafc43150df0d6a16abec95d99de24083488e01fe6931b4c42c811930aa988dcd75b0d508c516cd9c88909a4cdb8c96c13474239eb3d694d9333349f3ec966108b026e558a47d4193a864bf59fb634aa516fc1038035cefc4a5b9461758493e7816c87fc25989e8394426120a155f81e9e66f13c70738104e2beef49829e96c4b2f2c8a710d5822849c46808859ad03abc76ab849defd832c1e4c6a7cbdbae4479c23890b780634a11e946b4625867adb59abf9b6971606255ee7a4b986c2208af93e7762bfe96db40903dc6d0ab9049604292ba5a7150a1fca420de806989eddcd2a706e552f04c7eb2a14cc281f4f16670eae33e82d1bfb58e55592dddeaa47348e6299e23a1f29e336c573563014b37456e447aa05e1f9d208ddddf041709732056a121bbd3b7c4b9df2ccb315a7ae6abe2b2617c5fb13a181ae0f9ced75ca1542e245fc24064b75b0eaf89824d9b98493cc6359c56fcccb0f39ee1f2682d285f9f65d494c42e9aa9292c9a5fda9ae45e466b80192b5ce7ccd4d4b1898d911fe6214ae7e790121f97c98de68215dd73a40f11040ff57913dcc14cf6062899af3014bbff12f73dfacdebcc2b194962f0565c19896564ff2f51c564f68360db62ab6105cd8af3c739a6c1b37c0a4afd72942646c36d63ac88d298dc8f21ee360eb174d8c8ffd96cf831d1cc8015057020536e4409926f0e435333512aaacf315647354a79273907f4539abf6c47094d2d9030f9704dab11a9023ce1ca9d4a13b53e5642a8c48a6045093dd4b325e527bfd8e0584f7143d7c741adf4d5225926ee3c572dbf52fe69095955e0e812b0c6cff00b1dd90717827d35d53d8323d2241b9492692d92ce48a2ed27f64f323e44b0ebbc2ae70f0ed75573b3ab8cd524eaca169f3bdf4291b13fc3b23ec085014115175d1b49f689028e1de2c6edf6f5e32730844225045e279c44f6d6b4d141232c4a1ce9e2b3f115d45bae16f20e0adc6a9948697ee66ac5d7ece35e631d284080aa27693f79e727c22a3263ccb65e20dc254a0bd0b7a8ea4e93d49f2c90c9563043d896ee09b167a120dad48c9ecf62b5f2e191a9ab8edb4aee9768a1e67603b04f1280276613f5cb6f83254fa0cc930d634f0f871dbf2b7871cedbe6a8821c1423959d50488747f63590744ea6a4ca8601ff68de516d0231fef9f8d6067ce4eb9d81807de55827ad8ad968a8ad4c35ca1e4058d6e10872b95ffdf47c7a4b6051890b6db9467e10dde961ac7e1b6718f2a51e277099d6847fd3388ed8c1f894f9a0361807395f5f15f042b40a663bf86187520960c353aea13d9627213478843a533d6526192ff3835b5c4b254d2db4aab23012ed5f381280e7ae55b8037de2b91cc0f571fb9b93a4b23afa8531ba6520cb907d04aa6f61d5920c9d732b88279e51ebc7813e176dfbdccc952240a46cbcfd0256609bc479f1fbba6e803a6504a31963d8cf3bb27cd141b2bc424930f010c69e0012d626f4e8e36335da78a5c09768026ff4452d5f191150777a08e7d3375314cb950c013c85470f3cec30dd9f251f0c375a7dd3f7794fe3b88af517bcf5bf602b60b0fefbec7afa810e34597535d91b271325f363ddde90d3abc6ebc4a5fa32f7ba68898fae96c1d091a8bfdc5719c07e12286337fab21e7b205dbf36a1090a17fce8a2b41d540b89aaddf745f7eb9c70b7dd210d4226a8be02b00d57260572b8e1737e7c17be5eaabca5c39ed1f644fa55763345f4dc0e8c31c1607ea53d126f397a6a3524588ec635ab2a2b7b3ed82b00fc898235c8812fd657b0ca0684c5448f3a68c0b607032d94e481e741e522bc14561fbe9cef7804e30d3ca0aa7376068e7e5b5f987fff33a1c8010c1fbef9b3348abee94fbe025189977227311b8457b810bf2afdfb0b3047c0bdde394bf92c092aa8487f092fffae71a0e00a81bb7a1d5383581c8abc801ed51ea73e5d0908ca35549a73790d1e598e45fa4f0fd4e4b33960f314dc8c1826db22b6d146af09ae735f02c4efd4478f20bf83816b9e745ae991f35afb5f85e49091f7fc72cad21f4d7d7aeff08131c72cd19133a0ffdccfefad689ee930bd2c27badac684a5f72b0697b6373e5ede66d1af2d2a02ad992258926718957fd46c5a52377eb5e140fac752095d475a502a2cb07cc08103797a31ae3009841ca003cd139244df7efa41cac6fe9e4198a960005bde8017340ef04364bbcb665aa98000119533a1d5fcc1714d17fbd6d5ff49380f87f9fa8ce15749b384bb9e99bc7107f24042a3337b7a52618b5bd04534a448f382901f173d259e872b598b00ed06542207883bc5895a131f67400e7b522c6e809c5eabe52f52385c71c14855c21fc558bac0531f2d7d28029255a9658c827647b7aabe80df6149df8a609feb623afae71e375697b67a99762ecc67d97cc3a4a801364d71ccee2d20ab0ac0f233933f6a341321e96b83a1a579096fc99eb744aedc0332ab03e1a1a37c37039a83ffa48869cdf340443a6d10b96c5ba726c6e9491ab947e3a6aa8c948bcfe6fb2c11dcc8a038ddf30d12de1be3c446ce100900a43d87521b99bf92c4c7eda0a3ae719c8f51f6aa29095bb8068b6445f032cad16651baebba68f8d4a3519c49f77459f3b59149ae7f2f657ac2780a94815334412f9fb0b39f442cd27371ac2bad21280c436a30c683a6867ce1f36352bb0d162ec98772f17c7666ac9560810a37aa21b5e7190d46a277c65963508f7205e399613ee3993ed39a8fe3b45a812020b98b41de3adb28e7bbd6d18c64909fd728fd09a74ea3f87f22808482ef4d9f38ca19d2efdde322fc00d3d3d97a68239dd510190069a7af6c97ca942053298f584a577de7dd6564f07ecb87ef077faf344c92825d0b66a8b101e55762edf71229677d02fb5b70ca7a17648917fcfb3fe14307a35d27041382a24b94358bd2d3e3af07290d6872dc49277d4dc468c00783392652654802419e0d0b1c86fc962976dc5271e50bacfd2f6f14ff5062a76f591d3105b5ff7e779f3749419b04a7c1a49f9dc951d69b6784a0dd0d732cf8ce4a0e4f4017487308fc50a646c64936c8786b7630434bd62444207f7ca9000d7d2e28729a645799f682cf1639608200b66abd16571d2010ddb4ab60a22be595f60c5248856f64d3a33d405124e940e4c30b930bff96cbc7457342d2507c37e6d6cb9e59c8906baa81e64db7e2ef2133917bd0c5aeacb951efc38284895a79fdf12163d22c94052aa7cc3ed845f8cc592711f50f702b1cfe6c6a9eade9b9435dedc70ada72977340184f621be89b8b28afa8adc5f7d4f4b918cf129df2f5115d291f1b2de03193c19bb5da6c01a3c0190de3b089e5629cab37ee55976f099b1467c47f30a2b6281a374ee86d44f240292849038e5993528eba5c184ae76269adfd0502f698c91bff4817f332f8c78501bb69c021d31b7b2e8f84f0244a0829b84673db2f64a025460bab1be224d304c921365441b80e8cf7002d690e9a6935a1098d3d35157fdc55222ed82f89d7bac72cf29715ad20fbae7909415d0a00e303ec0cd8114afd60e7f4e623e1b33c5cf2dfdb342a1ac11c920733c8b69d8b9b46e91ad1d4470e037eb975c1986d59b591ff82dc226104740dc22cd607e71460d692e0b3ff44ce2387b83712ac2501411a2b8c54c213cbeb7b4881efbe606ef9324b0b55c90d609b411912b1b3ac3f587a315450d860669cca8f336862888863a3445b99d981e26710dc9e447ed36cbd648e49225d172f168742caff20d148729c67a4fb57491dc7dc8b6bcbaab37bba06eb226803b252842665680752b6188556ad0631c57247e897e48e76a8dc1fd828759fe507410a043dbfc23d84cc30b3cfe13fca816819e08b0f77bba68d59ae6e885098b75e72274ced811f711282132f70f8321837b199d9382f6db6e7c80cb259c2071d84eba5f84416b9d67a13ca4aa19d38670ee5b001e779078fc2fee9f8d9137649bbae66fde75d56b5e2c98e174b06e5d7a27668d56f274e8bb6bf07f603534f28e1ab1fcc52e847f63d50126368d71f921d0bc14d935ff72266ce153ee1f6412698f547c1ca0341780dab455c85acc9afec0a6efeffcb2f1154e088aa7d28947db40b1d0b4f2749048c099b5257b8a809ea784d04e4bfcb61d3517e468477d7b9f2bd944cd5081e243aba08996d12542967c455e82585508a5df40379718def651aab405f2bc7dc33d7c7aa709fc87fc05db067426e75474094aa2d132bbd0e0410816717aa4ed892fd9d88243ac8b32fb52d041dea394afe929d6f745415703c5facb31679508b9cec74288e984342c08679cad02e0e8b86d2e65ed563692616148d9138219677465e321c98cdb0d53180bdd0187d4469eee745b9c0f27698bdc9ce8dc47c3005df81b0b39bd62a470001fc92bf132bb2c321ee55212590e82752810caf158ad6d02a43f55a63582da8d14dd2c562c23296094e3eaae92f0df99405c40b3f90759cbdfb4b9ab118fe09a8092627bc4d212947949861259fcf8887367871893b5af4378c3ea5fbb26c80bd234b8aba1298d66934a2b8d20c20ce231e4c7786298269a13eaa9edd934f6ea3f72f3a1d3674734232d085d227eb7c261d23c980a31b68661c0f02b10f998814e504d8278e4a460d5b42460fbed45286d7c1bcfbd4c5a3ef8bcf9bdb9937c4020d659df47159b1fd8a34a141a7371162ed38ff07920d1bf1e702b976fcaf6a81bd8ec04b183f8ad6c6a8b8b7cd4757d2d3205abda80bba391edc5e15370ef2ab697fd56c00b8b3cd6ea94efb173e4f8beaa64de4ed40de901259007b157022a7d4921cda7a20da47d07ebd8394f782f4fc17661d3756a6538f14232b853e33b68a0c1e2e7a2fbc60c6cf91f0db4d882694013c971eedb5d7c2431da492209e2b9523f77fbb30be8bd29fb4fe12e1517107d618adf3394630ca4c92e8f2270f5c98d99a61b7ed6d6ec60a05eda4572b6fd05c48d1290b597caabd00c85f58d6503c44c35c2e4d909354e6ca274f848de46ef3f643493a263a016a0eba68b8e3db581886031f132a1549614220b361a29787443db9abf6c30577efaaf7165a28a3ac8486ce9682d1cb7afafc4c34d2d3130574084dcbfe4efdb22dae7f52ebd2bad867c22fc6dcb17c59b39d429f80ddd141a0bd0340d7d431a503e20c1de5f856d3f52e5119ab8ae0d6f3c4e46517d9ff90843488c537be78970832c00a5aa7e18e7d0b24f6c1a60b328c2fca66f1beff7bb6b47c81d0b6ff384465b447de220c5d88ad6545f5f4c540e2d008e309cf90f2d85ea2ba4c557c087390ad5ed7243d66ea51e467f04859dd4ef81b0dc8f4964c253a2936b1e72c263d127b0197526cb5e27199fc7ec8576768fff4889bc2574e53f3b764f7c89b365c9dbf9ef4368e105a9a8c320ae59ac1d0da9a0ccd536563a6b02520b25d914ecb7ca32caa52e21a3e53f999faae38fa694f797f24f6763b3588c8b2a06ad295266de84fade6e044313ecbb6f575deca7fb29d7c4b90b579e42cb13473b69c2e907956f69fdf1d01668c61e9843606b1c944877ac768f698b2aca03975dae3d6e75addade3d481be7e6541c23c673e944b8b5a4494115c27505b1bcadb3f1c27792ec492928b019ce9903da746058510c00cf8d6a8718f1083c3474c407aec7982cfc3eac0e0dcc276005dcf96fb07bd64759b95104b46794afecac665318d777dd67d415d6e2fb8ff786e45fb21f2a2f2dd3ac5a2f240e1e027d3c1545bfd958938ebe469b229556d31e45e94c82e8843cfad416a94e31ce6e05a357848ed84836250c5e6c3a04fa09365f53e7a7b4ec650e964fba30871570fbcd83e1b0645e568af7da6e549ac61783b99a8116818756a9d819236a50d73cf4c2df1265a665ca110a30fc4873181865c45141c18c64303b621ddaa635dc6ab9b3157c31121d140d9de9ca78d9bd1050c064ed29a0c5108598c3c920ce136225e9adb08f9e6c5a04ee71a76bdf7cee18b1dbec7debf4860a96b8c9c17d105199e50394b89872a13b8d0465abd9c6169a4f055be7773664e1651c552dbd9fa71c422c59e882bae4bed7026a586a8fc590fe87badb9018fca958e28656966c6c200afee5028851b4e5c3fa911416f49f0a1ba86010517e11074df0bd70d321e38883c6e631ace4cd66d5b5cfc7951f190858fcaa811cbf5332374bc390ca05981c4438c00328e6f2123e8e8dcd50093505da843ca51fed0b185e99dcc189759c70e80ccd292be15f792bdddffd735ede7fec14837ee46f7e7f9520201b03426300bacf26581fbd1dc1aad17ae12cfb2907b81e40de0a0353d35418b43ce71c570ccc4385f4c8fd992b0cc35c6d1dfeaf716e7c20af76f1a0cc391326d869ef28595b22efd21b3d6b08b172ce129a53a8861b86dbae55e04c4b20f411195bd375362943910cca7882546ccff251b44e4b1e91afe5e48476589d923beb0731e0d2495c57035f37519aba96b45999608fa4547f78cce211728a050bc45c8c39eaeb0d0deb611a088f6e8208445ed8fe3f4b6d59f7b1cdda842eae5fd57556ab117ec06c1805a0345d1b7e50c507db86824a00048eac0938602be1d876c6a622e353b62caf7d7e8ae6b3a5af79093609468ab7714cb3211d92d88d9aaecf378b0280822429558cccb42c217b92fb0c9238756e0632733e2fbfba881a669a6f9a2216a107a59b08a40250b02cf15980abec51f1b48d45f5c0683efb64f5480db888490c577481219c727814f653e10924307d5748cb32fa46d4b710c8b0c802a255b439715dfd4306a3702c36f44f3cdf7515040b85368b1a84ccf37924884809aa7e37ea8f1a15c6a68010feadc87c62369e48936129934dc8c875d0b26cac48873b84691410d9b62c07fd3dc2ba297336f571cd04e01266fd0f157695201d39fd331cfd832fb296b0a55405eb5e3a02fab8eef5b4062423c4489c6a6213d4740da25e2cf0dfcf8c19111aff0a296c567ad063cc05bed1da723e2095a8ff9dcea387fe8e74d53d604a8ab4441152e62288c2a5253d85c365683c3ab4243aab71c1256a0390f55338856af44c3628267d0cc4d2cc6bac88e95b864a13ecef7d7106ac8de9cdc4bde79fceff9b3d9045275e8571818918c10842a4917489f2eefa4b9bb62fef437b2d49673392c12a21c84b3fa6c6043f0347cbd6b97357613e18790576a35941762fbbcec50ddb3b7e933c28aff94b19f21a731276fd6b07a28195b41c0b68121ceb8bfa8dfbe04e12e1472bca68fb0b2145bf6dda6d62d8be529e177c54fbe360247269b63f1c9e0d78dc6fa02c0cba1c26121d39d23b2fc72b1a93ceaf949695d7f58861ea2cac18bf652ec6d429637fc78faf902a4f3e890edd5cf0421bdd3d8ceead8c77d8eca9721b008c9dd134051b576d1161e95bfbf55083dcce14d43d048997c1146abc36ddc19e810c98feb472b1249cfa932a426358e1117ed85aa1754c984369c6344492efc05b70ab386d9ad07c61272fb41dcb18a3713da2fa78c41cec7c367c3504a709b7c96a1d62e859a01807d04b39a019568ff3f9cb50c40af69c55596578ae0ee75688ba7f3b837e305dd9fbbc3697c8fc3d8bf57891578fbcb9eb56a8f59beb1fb3efb4c10b8cdcbb1d903bc2b07800883f0edbd80fb386ef562e1ffb042786bba771470b5e5f9975f902af14c2ad820b748daf5d9f65b93213ad431400264dd78f4c739ccdb4857371e1f2c22129e2fb374260f6c5ecd07821ab632d93aed8b61f96592c4a2c3930712427c70862d0b01eb036e069a266432c61c2266ba498d89ddff3ed07f1c172d198a496b8aaaeb9a774c5de25a65ad300581fc4d150685199606c4dacc618462fb55fbbbe594f074ca9b17c7efab4f69f4e2d54d47932fe5730f9b98b6a9fe7e6ae0df8c5bb80d89919d543759aac0dae4603b70d8dd9bcdb363f4a840f23ee1a0efbf0de4dfe6911d70f754bbfc1a1d8d7b04bcf14c631b0054b916b04d0d5d618fe021652d8d126252516720c464a345337e7d56e5a90a8fa9860a9a634194647a4a4c191455fd15f47448183b1c471713170b9b47e5618bc61d831caaeea8a1e2611484540107f834b03cc40db17d68068b2c24f89ea5533e7c1b6174904c00f79f4c602a5112f342e7d0802f16ef867a30c716f446bae6421d8d233344751eda359ce8a55424fddec629ae5622077db7ce21967ab3db0bab5e6e452b0c6722a7d9f5e3fdf8023743a08698576ff2233ca80500a7308208a7575b9dbc626bf51e4bc73ddbee8a2b8b7b09b1e8ea7693aaeea1520bfe4803d87135c444f178462840cd76c73ed356cb429625bd3c138d893500102ba98017066331e31ace6eb9903e7b9810cdcc63d732a682c9dfbcb6a93d28ac9552a581c3c3e381c111076b29952c24bd7e70928b1fa6f4dbaf254207f7f4700b370d1ad89063050573ec0f7e20f9c57e0ffa145dde3a8a43a790c0805be471f23c30e1c221a33030bc478daf89b00020468246980fac6183ec756c83f31eacae8d52f67c98639a95751eb32611c47fdd39ba946ddc4c86f14552a2a85c09969d1595e32474aa0a20a02dde778444c5d6a427f0ef7d53cc1be2e1743844d29e6fc7c12644217dd72b53b372a00878e66dc2adda4a895ebeb97c17a1de6b60b19091b9f05b073a8cba63ec302205e28a5601879513cc1d7e3ddeb26111317b929c052fa8d8514e8b87648c7c9305ddc69b8890e1590a6053d7c76635490da90fec4e09e7faf721a8cefa5b3f55af6ef5100ac2a32bf6ecf936c0ec82ed132fed24cf54f3dd758258591fe6faa30dfc5de9c03950bb6f6a5bd20a059ce69b948b2846d9c6fe7a3c732a90c670cc7a3560b2cc5bc34b2ff207596129602aa01b09eb39b4d5c257b49c302e28050000d26c9f032a7fb8000bf049aba00e17f10190a960dc98204fc57ab13cf06b0d622735e300076e8f57d6d1dddb9358ab464a7218eb575f62ad53c8f8dd003f8dca66ca9a54b02afa5b05ab5d213b63a4ce46ee5f44b31cb600ed1a7dc16ddbebeafa3894dd0f191541b265421b4c589e34874f23573a09900bb88f3112f1344f3cca9f5d1042344e9ddfbc2a3dcdbd3b10de29c6793745fa878160606d13128aeebede9a84c6f822b5d50ce369dd4688945d5bf9ba712a6fcf3e0428807dacf13e42acdfbf6911a554d2aedbcb56ab3604b669ae779478b16d729ec50d6aa995e9d20be477b3829c9248371c3875287165c8b5967a2fac9a8b40b9e20d0718c9829f5e3836ab26d3d0fdb668cfe51884a34ee06f1f257210155fe576614faf19dbb1d01b497bc116b45015acb235b680ef2ec0559716c0f41d1733db3200c2ce5f9ad06931a6e3971e441e558ee0ce99cc54cd6fe42977561d07e4c4e1ab9b0444f63d8c15804a04ed67e21c27d40e7a518ce5509418977680fc9c6c3150be411b2caa6b606786998ad98c126d7de0deae8a486d0975cf93036dd228b749b59f080093190d309c6f424972cadd924580f8b2da98571dd6cddf22d6bf6d7f912c632524f621f1589ce38626d6139e77bffe9b29e01a72da6fdd0be105e1a21efab1033fe68101c7f9a09e37087a07ffdec4f947007521f325a432ba1576d1ebfde3244efa0b3178a6a48dc58676495c8668cf1bc68a1355a5df7649af1941b1666f863a1f773545e31b29c5d8985d90a3bf8df18d18a11a5e10978ea05d4deffe9625005eb13f127ce905940e96934192e2a6a0d952fb75cb35d7da7ef16885160e57800abf5b60200bfc8a9710d8b87546a600d0b4bff6d056b3ebc5b9657f4ceeb203eadf9842f3dc3cc08cb534788d3a09b923c98bf2057fb3b3e86d53f903b9f5922fca0289ce5936d2904d213b5332d339adccfa4a122957e437d2892ac50003e286b84e5d7030685dc8aad8c616557e45cc228fa4f5f83578eb6103ec372d4b966e130f31f7f31ced6d6a898a0012636d0bfc3ce236aa47c9e89456637ae58a218a74477e6f54f359307f1a44870d891d0fc66587f3b0e770c066cd1e744b991de4d0e7e6ac72d9f6addd0caa9b46348f1bb6eac3a3bd37740ce35c3bd55f875a750475a63e191365e7f72712f09f0e2f5a951a97e33b262eb334476efa6bd51a60163e9ee49558176719b43fdd4a0cb4c70dbbd1c2ab973bdb6bcc11466fa1fb8a511f4b33e043cda04b59038ba2616d78ca6d7095e766c5ae6121e3775e6fdf184414a586facc5fec6e171261941327e303cca2492a5e8843c91f36539db5bd3bac47c13cf78ccd3c13163a703038e86fcb44284418db5100176178e363940e35f6605ed1e86fc10465258cc0f1ec54847acbd10fe2e8f54392e7d19dadf47c572294f150dbbd5ca7c083ccdf74221833e417e7fd240300b842fa4da5dd6ca6417850ed3403f99ee1ad2427c469c84ab81cdaef90e8b18de06b02403dfe7e78f32893be4bd21433ae05b0a0be102ac44fec4487ee3c9c79208da3b95baa67ecf69f4a8ff3e143b3b6579bc980a634a48046713d0f8af32bbd6a58a072840de9b0d02138e2b8758417ee98d398fb92134cb1d254c7eb103837b2d68d6c7b66ffb1624c3abed06094d54c81407f23ff3d1320d77c7e6de235e8952f160a516883990fc13efa71effbbccc99cffe0b62d5742dbf8b56bbdfb54c5bc1c9a52a5f77c03f55b7d875821760ddfbbd01bf684dadb7f720df2b4e6ff8dee3c5dbe1b87359a8f77e883e5af768a10f4837da9046a644e110bbd8e4587263a4ef50b00be5e6a1e7dc4faa358d65829b05daa1e8e2dac0a154b7a7344f24be57f0b3a4a0e0e259dc20fdc1b35c5c56b98c6fc42fc97d4db03908aa024584a30311e9562b53e540143aed5c1c88c23f922c83bcf1ac40ad15318a9a268a5016f4ecc5b14ebab1f55d25331569736e8cd5a4e5c080ecc8cec9a76b693c13b171a56e883d2774c670c745867f7caef7101030cf10ddfc4a9f738ed9d9aa6c52b8bad9ad24bdf85c77534b724d35989cbc98387075a0f7d69f27aa4585a0cbbab9aafee96723d8c3ba5ad3de463f01bb84da3fc7125382b458160c0a1b49e48c2b45ce2114bd90ff8d951778945f63c609e004eab6496b9caa904f370c6a2acf29b9803345c926566214c2c34e25f54e3fa4fdef140d371c04c9472f1edb8bc78e1290aa6575a67e12690db9d4cdcc5815ec61a216d2f9e59c0282fa6b84ccd52b8c933b4cd9b2d30b3454dad15ae25f21bf165b8c134bc573f38c01ff660a15ef5211694d0abd1652c255a4eed11aeed27f9cfeb5e67749d00f96aa2f4cf3728ce0b29e388854750197dd344a1b0a95678df525df508248905f6adcb55e3eedddaa59f56566baa418b466396513e028020f9ebcff567518111cf7abdd6e4a831f3b4115fe93cd1aefe761e1da024a4a03278b6c34f4dfa09181af71eb01b4dea1ce003dfad6817f067e3024c4d6fe7186ddc1114ec5c844145cd23b5a3f2e36cab85c1908b18b2ce0c05359071c3e094c5ac742b9ad5df63ac291e9998f201a7623e5ccb4f2df2c30caa48ec03315045b8459b14299d103576020d3414adf329db3cfdb017a133ec4a665efb734d26aff7223f576c748c36a13fd2301054be945c8aedda2c37eab1d3afa6e753ac4adf87035aad78cca6180b9283528e78c0e7f9216e7dff6897cea89e7b39838ecade2dac7cddc8baaf85cf89361efcf53fd9cf474d8bff345fcfda8bcd9fa6ded6712cb2d6ec02114bc7d62f0e8729a7c0223f161a292a844e87dcc446aef2ed8b8a23c697926f6fc3a83bfee682194dc7a2a539368d30d0e22cac5af3a0029dbc1bb80c547a8aed4968df356f16da40a4403652b46bc2db0755a5d8e247b84465cc00bf146e0b85424c64bc79191876e12fb9c7e94e65c988bf2c1df1c4998c2eb9341f91118c5c5b577cb4474fd44b3ac8f46c563bdeba113a0b6c0100dc337259e148a7c72528cc51f5166331596ab4d5b2a983211041256fa012dfc9ecba53562dcc24bef4f405c8d18eafa843915fcf6bb6172841ad62bd520ccfbd6fc00f2a0991008247e18c24c32a5e75e3e638ca4c4a8e926f931d7d25b0f603333046bb200a964249425219e31f364f2bdbdc2365622b42ff794053b94ce0c4614417f259f8c048ce4a9c028f119b4c234ff284cc899e6d65c79867170f5e84ab3b47f9afd02d1e7e6e2a2fba048fea37dd2c7347ee3f606c9155b15626772db1f17f4467ae44e9800821dd94027badc3092ea25c85f1f68acec807a15ebdca147b7e9ce76f8fd96b768978e8a4f3349d86ab9b3510bd446d3488098968c3e64dad3de0d92c9363639ab70b0c3337674d77e8f29205be55a7a5b568e330514b6848f227e893593615111e38a65c7688df4f3dec899c63f202b17281caf45687f30e0a30c4c21c7ee6b204eb0a6fd20e831f60f6be4afbd6838f098638e0720696f47117f301bfba14cd956ab1c8d69fc4a39c42955b0094ab23b2b25148cbfa0acaaa7d2d104686f2d4a60643031d645ed04fb43bb92556ef011b8356f0be85d395f6a73dad3b842e65dfb29172fed4ef5c49c0f3eb255d94b06ac914a748e7d830b3d1eb1b25a4420101c14bb7268f54d4c1b88d5235b16ca6336188b644df0af555ad90f3a1d7ca88aa4a10555789cc892497955e0fc3b2bdad8c5fdb7d28b3393f25a0921ea16c012e1e839fd2cbbcc67a5270451d1ebd6e81cb886b3fbd3fae19b47eedd7dd29233c1889b2c0842552277b249e95ab155b7e412950a56b7a5a1ce7fbf953a8b7bcc6d21303311c0df415967f7c8dc82cb3b2e5c2ad760aaccb11efad49807fecb9b5979de3ffb58fa0bb7bfd49195abfcdf48c1e3f39e90bb9b58079c583bea0be7cb06e00458fe90cf515294411d7b5bfbe7a5171bea1abbde95eaccb4b0abfe02cf98c4db5cb56ee51755800f50054fa116167b0a37eaf47e9422193e3e911c5f77cad9ac25f14e2bf50e7c5652fed22dde1b6937b48ffafa4bf72f6c2c2b73896811f2d8e33112f397f6ae52346dd51864f11550d765c64c9bd43dd0519ff9a00f902257b8847d51f5eecb011f985a285086eb7139d54073bc2871b0b951568ca875734b4202a7c378506af0a4da1c9aa8d5ec1f42e75f0237e00e914d2c9e88d2a202760cc9cda478fb1ba0164bc1f3f40c5733e23fd02340e861d6ef22bad11ab6702238d8376ac30fe1d0aeb14243ef39bcd3a5f7f1fcc6c19341b00f116a7de89e29f526485fe86d69a00e8466eace0397ee4b6a459a210633235304dd0274c4266f689b911c98178b32658fbf25bb6687c26bdd267cfed3398431dcd7340b3ff9097f646a17a0cff68de03ac237e18d8f999d4fee5c0eb37a39d131b431ac30463cc779565f4bb980eb8ca02cd9b0f3ecb60eab1c8354a79d3ebd77fe256e3671fc051cb2ef0775409eefd7efeefecbcca237cbae80d9124272f2fca8aa3bec280d61d185363f012c110b8dc141da40e9a6e2301629c7591859d356bfbb41ed7af6945cee14bdc6c339c42ce49efee6bd6ec073d26fb03632c71d9cc0782d52a3f14168211c8177535533ac3c7817e704059a453cc373469e66407e936825977e7bec221c3d0a019e82e988358e707037ac4b7e60a0ed1a300ee53340f9010c894f739db4542147c53f643763be347c4824cdb21ee91e9e94dd60628db4b85754773d22fda8d0eee0bff78e68b79c5fefbc3c7dd558d76c1989fadccbcc6a40707bfd43bd198dc5ae6d30efe3df318b11d5da81a1a81d3870bd9c5c2ddfb96cb99adacd5fe677bb0f842a094758dc88c43298d6fc27e5899e659c4071371c9e1f8d2988a341176d6ec43a95edf51ec62b20cae10a121dde003b3e816f5636d3542c6e517d8000b7e66db0c5c9ab014a5ffc9eaa0b48ac80067b151a39e9902e3a02115a49105bb6c503492ac1e1cc1e281320f3bc45e1b745f937d5c8f94ca7c90c8b4d87bd1ad87c01e7c8edc6e099061d6b590a77521cbe54d977baca42697de783ea2bb087931534139a987553b8b63e7cb0cf13640e03f7ed3b40fc062539aeae21124ab4f522ac8439e21f248d6c03752fda2f34dd1f8da32cc87127255b7c39d34b4a646d6d19284f879ffad866774d4e104e4ba2cbb533a120864c03fa581d4f8009fbf394fc1874d6f76f8600fcbafe2d1caab45140c327ef0560a16fe897b388f2aead15b327cbf2e54fb3727fc483db2dae5deacd78ac70b80bb2192a4f38a86c897d35c70cd9c9c196a0961673ade3a6f32a47f9f30ccba9e124f47066bd0889aade10d5b8b8e50bf516f1db34a7991e20a0ebb2ac884db7e94e8aede3e0942c7ba978e887945cee8b4fd4c479a6a8d89d791f8042387b186ccd9c62a8a5da3c1b4615a519b072d0f0c4ca2976de50ce0fad7bb9b3222d24415734d0e21fef90d8a703fc54e23023cb59263875c72eda8ba66917ac6a3405bf850faa1bef158aef8d208184e957ce1292dee309d2f4db25d37ba9a8cde983817745cbee14fcb64c338147aaef33044be31fa3491dded055d5cd4e6833cc5122e7c1b4f9840815de6d866f59820d5df707520f59c0bf4d78af047cf067a7ff7e3189980faecda19b64f8c04ff0bf5b5d9fb53e55fada39b25522d9fe16528bf259e569670897168433ea44633bfc5d395b02f2e875c15f50b4ded0e9757823e2318bf991d746ec6b37f2017da081264b97fbb8f209a72aa55a5d9353cd65b01adf8efbccdf6894ea9cdd6c9c7f9244e88bcc5dd28d9bd43c94e5090313062ab5c564000030a7620c689d1fada30b4219de6594815a6924592f06c991b690a8ac3d9644a915f4e177be66e345f601c6fb7d612fdca96752194e5a0bf095a790f3dba6c11adc8059c4bc1f91c67a9b490c6b14c33ffebca42f7ded8043c5651eb6c93a5ebe81ffc990eb31eb83c7bef411f06b73c0023f9eb898386a610503bc9f51b1a1a3b77771c50099f223d37210e3be550a4ef21365263f034693d1a98ecf8a6fab64c4f0f60ae0545e9908783374b59ac96d58d95bd47d995d2d091e8aab584db5a331ebcb0412c88234542208c879584a19720a7e2236ac3cde637230387105bf5721f59ec993e88213ef30ac19e4be1cb23a10beb9730330c09486521db7a716c4998143a245e30195683a48fdbfbae55740b9c2454bfa80064978c3036c9bf63664966a6e500c5ffd8a414d41f50f997f2ca46802b45e3eba5030cb67e4a1aa680bf7515f3e42604aff9440371e369b2bf5bd667587f5a8ea105e13b9db2cb376c824c77bda6146b27658111bbe7c0437817be2cc755f40687e4c2828f1965870b643aa23aacdbefaf4d150e390305418d8b1eb48e75113d81a83ea214d3a6b473ed0b8eb5b819844aa0c6eaa662611571bd68b30493643e822dd28613470d1822edd55cd864669c2a40ae9f40661e54d6a3b20d44bdfc1004ead3069bd0a8357441d2e576b54f2d5846cbdb4d27e0cbf139352bc69e78a7aacc98a2c8dae36140356b170e3019b8ae2e0397fcda0789fb425ac51283b6400a27434c1170bdd3fae900c7ccf6ebd3b85d250bdbc3dc3359dc4b41a63ba2ad86cecd63e2cb53c0100bf1463830cd4befa8ff6fcf70937f98e41282d5da09436013df685eb80dded9cdb04bf6a60ab8feb0ba026df9e5e4779c06c90f6c2c4b2a511598db443773ca2413adfd487bd108f25e57a80eec089e3a8982ed802491af1ec97e3ed834457486901a40aebf820e847092015910f2c5f58a276d0a397701559689928f8fbd98768adc75f8c2e6894785b7eb38f171c80f8cf3d2fe2c65369cf292f5584252c0fe7ee67c46451670cb02bc514959a0c95f4f483b48a45b291733816d26fb48e6ff005f8490795dbb29d81809ba91c57be99adac25a643f9159fbf43794111ff111023f7cc13a680cd2fe5c6a07ed19046c774043ee60947f82321456ee933bec81745fd88a30b5bc94cfc3dec7ecd0784fa8c8d123ba5c5c49782cf7116eda28f0a4b01b67bd86e9eabeab068021b6dec320b678fec6c19546278655e42809c5035d625de5a51cf7e4b93277ff543acb0ea1a4539636e1d1dfbd5848b8794b6bce6227b939a68603a5afdee6e045b90eccb2bc0b26fb0a3dbcf239529831d9ba19b6be2576526871b6be8edebb6c2e62200413c62442c7c42e58f4a194c22abc21fa8f753d5db0e134ca1867e120b37568d903277d58dd3bdea8a8b22e215442395727b575c8946f2480a31d58fb5a5e3e97554c38cc2351147304a75c060fd40066059dabc7ec1c4d863bc51dfd764cc11aad4149ff75b8267888121296012c1fc9d82dd4bbdb4ab3d7994e45661c4ae9cad17636c974838e649f825d74768cfb8ea0a9ad207ad601b5d222365ca85b41221a9e95c03ed7e8e73993d009188b2725e69bde18da2d7c27b2144c65cd18c94037c3cdf5f3f13d5e64da0d88e11632fdbb7fc9ebfe12ffc00ba418c7edea05785dc7be1bf11342789f1e5366806e8a8c9a32014320eb8bdc4383ba39e441085c345ed6500c4f7b4c784811edc68cf66a2712da087d7e335b797a7fb2142cb983d61e2d492405c8aef087120bb4bd75a41e9130b173f90cc2b702bd395f344cb096d6b7991f6452bc6917cc82756398792396bab528f9c2d56e768b1994f253086f2beefab8b57fdc8afc625166bb97cceae78166ad62bf671c6ed7ddbf3758171142cd1cfddfe597836615dacfa2cdb6eb1e236d7a39eaeea7cfe5308a78b5b015baa6a64d9eb17f6e17e80b162cac35d73f1eb6db47e0cc8a53f0bd8a3130ae41d59cf9b7cfe8bedbd5ed7bace76e4ae11d494591d2768c73edbddb1cef2609dcc4606a739924f1380f5aa8d477cbfa5e4f84ea1a7c28bed7b3f9300b20a5d5558f892b5c5b0fbd993746545104931c4e439ba64cd105864d0d0f38998bf021f8ffd1528cecf5b326e78d927fdd196b94d1700c47d41bdb8f4a141d7e8cc1a9f56d814c312afb02d5bda0621dbeca733c0f8bc341f1adc4fe00d04ca5b79af65da56583ee011a0d99a55bd65c20bc7b08273ddc78b9ae7869640e3e110da75af047d6aeb0db9e634de452937d1a7dd1e0d1073821e94557029cd2bef1b1e1702bc7ef29ec397d467e3749c46d0abf055121837fac01955a5e5b8ade5ad9f5820d5019f157c2ede3034c42038c326af2cb9d97c52d10e83639b459c3cd04d4fd32acc2922a1162ed9651eea113b120dc042d96a7ead482d34ae72c48c01da95569ccfcfa554743c282e64a67a322c899f5408501fa92d2b774605ddab1c7564b249cbe025940ce0ac1275a0cd376a17aae499c107777d96af512a94d0654a26bf4101834ee70171c49c38cf7b8f58a68f79590b97c7970d78f98ca2547b58b9419b51116bc490bdd362dac2d0b162d89725ecae371d6320cb3ad6478a71313763c65f77f26ed83ddee87d4422ab9f1f23c27fdd2296621f8316bb584b441de18a40a596b9a4aca109c126e9d6f3bf416e3a931abd239c5916a45d0d3a301f17ec534cf3653f8b38e07f716296e78d413ef21e2f5602b19b09ddb834eb8d1c63cd0143630d3d1aca91b6ff1ec7d650c8c01d52fc6f9748c2e829f5b59df25a7248532beff546232c41001ca6fa52df208be1b06ae2f53d93d39465173d655195175732887c11773b0591519a89cd7cf2a8ccb9fedab2657534bd9ac02c50d4dc1131c0b36d7732c1fbe6ca6bb5ff148a6204c63b67cd50731b3bdf6561c3db5aa15996e0cff4ecb1ac648eff5c136b59ce3448ce970aea15de10f72d158c38a5989221992a13ec87329fe0175f60e90c552203c6cec9d5c3fd77ee2d528481311de625e7e6c055f8bc7de18f6e411c743a8064d005bdfa05f3ea105932e13307b994e1b289f15ca2082a0a0be61357fd1a9cab2a2cb67a57b649ec43c9904069e6a708d04933e27a8e723ca2feab7ddb8267c44d5e3c65146eeb6a56bea4479339104a5fe0d5f321d27bf8764a6cfd06e8d690e508546bd78583bbed1c322157f23d132e438eac3411a8a44f0c161ed636674be0a4f8894bab8c8986ad10971321f8942b3b6e2cd91ab27ed93c9c54a4ed7021a269faa21291904052c3d1c74503d232558cd11cf24b31b29341128d956dc5916d5cd0ff46897f29ff5c221f2dfe9f964f68b4250ec44ae79483eb9cdf018f725e9e8a539c8c55848fbd65ada4f555eec2f07a36a6a4af13a71c99c5956b34ccf7f867118e0a84128c1bde8c4cac5220c92b0492facca284f3d2849194bbf0e900786a1d07e0ed747b5d6ea803ecbd0d22e0fabbccffcf2f88c144c60fe3ad90e4dce17c8b3c8d49f04649afbc7a0919fbbf4c55f2e87fbcbbe1613a147199c6b7f60775871c9361b94516ddc11703321b1b5907d7f8988cd6dea13d563f7feaefc1a531d5146f4c8181c9d858482976bae469eaeaf19c759dac2376f1391425333782f707634696a6a316ebee51c4e05613e7267a97f508e78f925c6661d2e8abce1f4ad3842e9ba7ec5e82d8d8ab0f145842d745f353540eecc1aab02570953f331ee8f11cdbc3a4683b0d7ddf388935cf9d100ae670ca12c9e8096bc0d15da41747fb247d010a31ed415b308a61b539c385e5220a66ed1e78d4c267da892ed497860c0b7b1a999ed7ffbba09154ed1e8b6d9b9a731d36ea8d33b0080c0743807857834a39a0883e0033690dd322395ab101dea4f510eb1b1a93dd3f93b6d192d1922da54c3203041d04b603e7f8fa91c6d72852ec33aaf312a3a699d5f0795ef6abb97fbef63f6fbe8e87e4f3d89fe791fc7978de1f8622d95e86ea646f4353a03a1e52ed1dd5116535fcdaffa0b5f01d35515d18be0f1abe3ec7cf67eccb53c743722107e81f1f49c35e47be7e188ae436b21a3a89ea566415a33adfd9c0a82e7c7754f74156c327bffcd9df9c5f33f857dfd1fee63cecf99bd337279e3a5e8a1e54e7b9d305f9e3cf4e173c2412f5261716f830c3e7411d4956c3f02d3062822e74bc07dcdcf7a08bef6f6e75242fbbb9d87973e57973247e6f9a6aaadae4c517cba43cf7fd099cbbb81055e15519874c481c7bc0cd296154c74ba1f39c8ea550f287bd900340340231210780a88e8734fef74b481faa83e1b9ef475449460272e02f79eef31c89fd7e58cb3ca7cf14e707a7f8e29f48db8cff3a1e527e7f1d0f497f7e9d8e87847f44756656451d0fc93da33a8dea605f85f1afa6ffcde55f89328a144ae07fd72bab21f50731c35205f1da285480e01f7ece250d17adb89b599abf62dc21ba01ff3cee7103e3befe475e2a40c85f1e7d63117e131a838dd10de81a78bb7daf553906fb603ab381f6edb13676b86f8f35e10987ab416b5c6ac31916df515ae6282d9395ef98761189b09286d35e1398aea39406712c4bda2d68df1e13d586eddb63da2a5b58afa5eab150d2342118868e428d184bbd1f764c48cda4686cb64f63fbf67ec0d93cfbf67e98d92bd19dd0e6a8ecf519cebef6e0b9d27e05df7cd8b9c2bee7c773a5a1ab6ec9943838cc664f42d09efdca0119bace1ee8d7118fc3e168bff6f43c092176adf63d1f98d355654e2c16937d0c5d817e6868a8a756abd53cf014054c1b994ce6f36bed71381caea7a70763dc811823b85307bfcfaf237ee876bb99a6d9a28b4969c9c4090909cd66b316439cbc74cc6c1f3e7cb00505058553765081e3c3c3c3e363b3d9643259280486186f641fcab2f4f1f1c11883515a289303fef0e183699a9f981c7464311fc4af2378787866b399dea1062e33cc1ec4af4022448828cb32168b5d79f95852abd56ae81a7b10bfd642840831343404025d7394143a4d647ffe0ae245fc3f0e87c31863179cde60e13f7f15f121468c18619a669c315b4bb55aad86aee69fbf86f83fd1d57b395ea8e0308a5479fdfcfc2435b1d026068d4673c1e40c0d21371a57b27c08dd6eb7d96ca67b92040a6a16242424148bc574388ea8e015b3050505c964320f54adc1ba22f3b1d96c18630fecb8a3e5843ff8f8f898a6d9811c57606298b3d9ac458d13701c99953c3c3cb1582c5c32b5e3496ca82c4b994c064e11e9e222bbfd8a1b1a1ac2187f3eccfcc881857e1d81c3e14cd3d46b9284b16306fd0a3462c408ec7583141666b65f6b40404f02d0068ac562f805313b62c47c7efda9d59e04a05d93c964ee24444b1a5988a7dd3ee5ce26bea128717ac37da9ae60aeb7dbe3d2123193a80752cd6196660f99816f7234affec2cf69dfe7efd5efbfef3bfd14c1332a954114662af1c4bf2498758bf48bb18c0ae567438aa612ef92a1a9c4133101f02bf16e1148fa672af14a4c00b589897fd550c88b13c771e7f5f778d5fcf74b8c26709a9f08a72a10732db1f3972032718481369598d999242f05990138cdaf3299ebc5daf9199002c903fc189502abbe28f919d3209acdb82133f08dcdeca326c5b075945b654506f3d88044187abd01f9c18c17500174e7c7310ecead428ba1ffc511c1dab73795b5579e7ddfc4bebd29a67d631c803b0437ef09f29afa95788ed7a45e1117eed92bc2c2f6bfb25e91a97d7b457aec35011b7f05fbf688a8b9e0ed1111e340cc123a5779f9da421f1a82e7bff9fbe32d64ceda4dd2b17f2a967e152b632cc746feb0f84eb26628e16802a5496fa1627a029303061bb8709518072be4519429da6fd0f6ed4d2db9d4d2901e2bd81b9e7854695511c10b62acac5470414b123639fdb78714d3d6435b87d95aeb1ba1971d292f1f2362ad81e2254cda4dd5a00522523baa254bb49458b32423cc1b3947c8c0b8b6d65abd91dfc0b6e088fbf6a4ba44a9aeed4a6060605b5b025d3d848c49b2654e961c1a18acf0b0c26542151906c0464932a585185a6ec0be98f8aa6145855d941737b9fbf702aa92aaa4ca383a526788e211067a6197213786c098c205c6c669a795c30657ad2b71a65869e94243013b589cb428d902c53585cb06515cb6b96f2f8a2b8a8d538daa1b25855761883acc493bbed0f004439515ac70440d11b125e9090b0e4e5a9802c6c91d51b66f2f2a85a820bda5500b941ca8b514e205d583fa226a27c2b4d4182a0c2e505d9bdcb707154604af8bbbdd6e5795bb7faf917f95676523dd94d5fc47307425927d88ae29babe0da3d94cfaa526b16eca46d806b6714494a648b29a6da6a99b764ecae5ad7bc1dd5985bfeff6ddabff6e1be9788e6665ed9cdff56e63d7f92e9759841b14c2efbbcd22dc20aa0205c63f42b831ba26cdd8f81d5d3160de9cef7299cef60f37be7436c0451d4071b9e92dea00eacb4def5eef959dfdca8220e6a5b3ef5e6f969dd928d1c1bab3630e8eab5c7e311b253d59d2266b6b48112c4f7218ac00e58d0874d8e2652497df968d92a2a478908afad2c14d9c5cd69aa1234b1d383f6268e53290175c37a480a1b3d5e6f2136523115176681203978c3a6d72398cd712a81b40bea4d0c9e53f918d6eae494c72354a4be7e0effbb298728aa9412efb7e504c4f466e0f4acafebeeffbcad4cbc422563fecdb8342b2f5be3d28aabdea8d89e00c5aec76bb123686e3eef8dd7166e12ec5cd51cf29abd754a604122345beba60f0bef49e987860591ab8d22282421bc318a6f44dcfc9cc9e60df9e939c0deedb738213be7ed2c7d3c5f8b2274f173ca411bd590d5ff62e6e56791e075b44c3f2f41b6c3fe78909ac68a1c3e9aee70312bf72333af897db39d373825382f38321dce94dce4256fdd1d3b3b2faa78833c409e22654b525db193c416b06373bebd0dd4594cb847dd0df7ec55550aeb29150d6bd6004f1397cbc858bc2cf58cce9bf4118beaae54c3416e176afbfc1772d743855ba14f4c0a9ff174eede0d41fc4793b7d29ab1e74826018621c628c31c63844576d67fbeb80536f8153b7b35ddd6262341461e35c6526fd601e2567cee83cc0461e60d53f035d48311b29f14231621e091b21e1184f09fbe05e50c66cb2333cc1f14894923d78a2e2890f4e10e42412632f7e7585cb8f91e38a7b81ee521004f46b7ae4410a5c54fe4d487c100455842fdbca20fc75832d93fdfcc5464458c56f13ffe2a2221a88f7f99b8d427ced2fb6e5db16ff075d715bbc59ada1abb9451f549ca1abde261a7e196a9068cbd0b24453e054e87cd8e9d9e88655554b78d5ec8b5311c51f821900937e30f88524fda2ebcddafa4fe07b2f0ba29d02a75adf7b5160ddafadff7a6dadd19545989fc8ab06cce477d58824f9df17bedac51c7fbd5fbb7c7c66c348906686f47c03dbd81854b94cd2d41af573f5af6d419479bff66a53b998abdbd01bc52782de222dfc6a61f57463b73f71d3d41142ac75b4557c24f95a6bad35d116f393e1d16ac26806826f03c14fc1d5c4aa28a2b1f2b4e1547cf2c4e154149fd467f91f6cd24994c5b7c91fd114a7e2a38f53f1794e11869ec0221a7e1fa2e299d1d2cc64c811bead02fcb0fc718491e2d126759b5cc182688b3885c1c6f27bed4f92bfc930abd80c61a59a658ef83130714a928f5f769638259ffc9b8d68e497e82a8a27ecbca8885eb4d4537029158aa2cda69af885342adab28ac3f47f4c038999e458087e67671e6492be740563e07fe07320a2a57ac5d47b2d7107a507007fa76ff54a597ea2d61c80af416e814c2730ef5f506badb5d65aeb1b2e7577091ec3206f787e1feb206b30b680fc6118fac5f80779ede0f4f68a5c6ddfaa95a9c717bd2255ce81ecce5364fadf5e91aaed49d8fdc9106e047a9aa8c658a36f660588e0278a4fc3a9f8264ec507c5ff44f145f14d51fcc00741540afcb408337c25de07fed308b1f47ddff77ddff77d7f7b5c5ae203330661122d9119f8be0985b0f013c78f86d3f0579b1886345bfe5029f24f60f1134954c854e28de2e93b06fe18fb9e3c518c42df7f9141ea0c669b127fce0e82e0e740b61f5cad021f1ad23512af8ad19e0ac80fe6d5e4cc54e2e1fc36f262046077c7a869ba1780e431af26415097b6537562ae6549b3dddca5740e5199f9fde317011834525524cb26314767ad731813c6ab1cb0131b40a1213e891726b86f8f8993a81ba08e1b1f8d25cd64468c9c7b4c4a905167466fc90e1aa77fdfde122f4bacf64a54d2208590c48765f55e108206776b70778a33ba48309d781f870b6fb8db6dbb8350ee727f70b28a0f05014efa704e81249d5c71b9bd265eb7e7846963c7fe49ee22901793172706611c66ef485509ef7184057c9d90beaf262fbe38bdf74793f022f186849ba92b58ea6c69c224450e8f241a39a49491faa2038c261918512821438ce3b64a3024d6d006e0032b0d8dc41adce5e23914807518ee951bbe5a2b6d912fca91d339af0e34364c6bc436c9b1e14deb3454b54edad9052248002bb2acb31173a52d62414879a126aba97dea25055173f58486491c375a8ed4185598cae15acd10d55e363d5a03b0293b81294d9620e91164cb868b46898995266e6a0841436564dc61648718601bc7d969b31b9303073930ac80a4042958a4b07aa86365d431e55e0ec07a0f178c53b9739ebc6268edb40360d912eccf0eedc8fa086ab4585ae7f22f2c7bdfdc2e2deb2f92865049a3830a9530524f6ca0c1c283c89d2a5aac782b8c39a896ae9bb64e4bc4e21051f00006c8d31d2632e8d49931244c9717533e7839aa11c7d49d964ccbc2692b6045b078ca7f64adc11080d145099d1858bbde2e8d0e19ba9e38c5e18531c71b53dee4863be5f648b03b5a246d088220d56e8353685ae70580bd6a9e75aaebc5a51c4b65ef157bb7401cda206e03007ec2ad4200f6caf1155890a18501d506b161d209543e7640801009c10e4ab6f496e6c890410b8b631c6d1001e3328cf982d25a691dc8042c9916b36c962aed35e38607df4226072942b8b4da28494281072c3ccc3841899b2b2f6c704c8188797be8a2a41dc1f2d0e15326c4dc2c18b04c5a67357bb588b80b73da3bed93b606ae96bd59167819dfd2de31200882a2064110048db4ad0e4e2d4f0f109b82fbb85b6830b15ec24df3820a718cb4395a0a10c0c61962bdea76dd3549a4c009417b048536cae5a1061d06eb6a99d2250195fba5656ff8103ab78c092d380e6d2e0d5a695ae712b3a19dd10ac0cff4acb29b274ba2dc24b111c469061e38a2e0308205e7845c8f6ac606c71a44d82b4586d247c388c2f7f58c64cd461a9fa92c696bac9d3b0235be2bd98bc68c962d2133f8d5ad83631dcb99ebd5a22048b0017d9068e3eeeeee1ebabbbbbbbb87a88896990a4992fafb3ef7cf3f107407fdfbf4e311c2ad02bfff7d7c8a6512e85906d202f76a9d73ce39e79c35f87199be945522fde4e3a2f0afd5861d6d18eabb10053f3daa5a26ce6bfbe727e55ef16599ab53557d78103ff4beef9ee13e8ff8fcd82b1ba19fd7f456fd3e52b39853b1977d7e17828baab2d1f9f9fd0a17d93ef77c563fbf6765a3f4f30412c0be072e82a5b76ac54cffeb8bf8f568c54b210847201c6df261b057b974b8688470ab0859b450c198409f9f043a57dfade28722ba82bbbde22ad58bf985f8fdad760ecb0f81c28cbba8640b5aac6ad821c6680040100053160000180c0806c482811cc7117111e40314800d7d923c4838280ec4e1a038100a04c2400003311000200005001003200c0041240346750ad05fd5cd46c997b6c730557662cee87e1a789231fe0b0b37dffcf4cf85d79257a1a29561a182fd8d08b4bf6dced7ce004171574da4fc004907c2ae3b88759192ff6c2783c34e9a767d9702305b1a778a9e16dc71e505a1474fab8ad68c96025f6ec5595ac73cb5befe1f2cbf02e5c4d86a3358ffa5282edfdda6841be1291de39dd0c5a9a303e347f8f5408d2eaac2c68420d8733802c9e7884ccb303f48261eb717da446f8100d6b501ac3251b687496e2f383d7a831d531822b489529e84c9c913796a029297f853a3aac6bd3a60d853b95119fde2ff5723ab61964846162be06d56d08c02db8ba429b45886b10e286857bb395cf0cc46797072bf5739903f55a1663c8e1e58e4471e479e660af00b27adeb6752a1b4187ff57beb053248cc128b86313c94308de4abf45a4b6e0ddacdf2db5ce925aa7afc0d0bc4d41efd9a8e4e58e21eabe833d8a448fcaf91540784eaf94c0a6e9a2376de51ec53199f202c06cf425411c13319598dd7bcab99645c55caede31b34f3dfe079b2309a43a626ac79eb77d52dc1f03696f696ff84c25b84c14793dd6c9eaad6fb5ef96f8b8706286d2c748f10361d7045c03fcca071d43be72675769ac73d264281a0a4b9bdae1a75f50ffdba30084676a567836315b917010d635bfa70b5a9d018c20f0d8cdbd1b4ea43bb9195ead484725f3546284762f69513f5c66ae959bc4286416a377235d8579d50a28420dc462de887c06771331fd561db1a2141f805548e43c101da8b74dac71522babb4faee670c251b698562fd1e29877647c074987d67c31ad86a696020e5f07ca71144797e30a877f1c449069a297d36434c4c9c82f1ab16c1df21d00ef2081cee91ec0e3830cd6417db6342ca5fc38cd853039f40e2de62084a3f113338e648ca6e645786b615cc3f5a0a605499a1d2976448b43131f1939d21acbf466ea7e9b588d4b6a2362edc897620e7807f03b8a5868f2897c7550a4a1a1978ccc833b47e7793681924f3b7d7a2a74b56da59aa8045bbd9ac10bb9438c83efb872009f36e30cb8aa6aa8d1c73d199f08e71ca7d9690a48381ccf399038463a541d28ec206968e955483bd3442543403092b4592d5b4ed438a1e542c80a6838129f0e22d73a849c331b21b946687f133b3a8a10686a5c4c5b6922104c1c428d14c2abc487101a2dbf8b80b8d3d9ff345a20381c421d1124cb90290f3498d15609160ef1967f7a0be955a7411f2afa3d7821c2a1e1ae261b9824cb231f9a1390111a2d584c8e4ccccc3ef6ac58d8c2f518263a2798c91712280dc50889975ac572519ef52611fdaf583ee5a404281afe4bd78cb46a9111555a54e2563ced26c980a0b5bdcb89a783d1f1cc910f49c6f6f0bb4acd7aeabedb90104fc756ed3b39cee1738e681b9a7b14123e0c11e755d6e2648ed613d38148df6625e4b115208edeb55f21c1d2be26b53888a8a31d2159394e9340db25f239b2a7460289185eed117808aa1c6ecf690a10693b9c94a3ed23328eff7561bd4694d33668e5929e63c201954319c70839cab2349f12130e79c7b73aace6444bcb4b87e6dc46959c84244e109a3f3160a5e6fe3376a6800fcb4a7d288a198e5907a643e78e229db44d4bd9485a4f2214071119cd898b693bcd0064881e45ca8326e45d30124068bf8247c721c4344689da91ea38e2e0ee177c46086d5f6d52b47ec1874d00e7783b00ed30049286623232a3b9ca7d4d5b68738439e81d847308cf51164d73652101a75d116de420a2a53192f40e701cbd771421a6b9a19cb6d20c5a8ec5a5f125dd5132911f5da0118a867071da1569e4b8cd519c23f88e939e9c484927b528fa555d1acd0991015704a2560b1cf2f6b133122d45509a9f22b3a33445da3151383ee51839a6d1957d0eb9354d32efe0efd0a4e38e8f696b253a1cb88ef18eae23ac1d247eb4404a69799a3e919a6344465b54aa731892a3d94de471f8704875883aba0eb0ea28e2d1448b643b2e239566974638681d050ee377459ca8a274a0e020eee83bac39fe1da81c28ea220419f47bd8f5b2b0fd85d1dc4b430ebd43b11c7c47da01020eb543688e4d479e3a485edaa404b2c6255d774c848c86a242c4ed8e7550cf8ce4c3b1771077ec6b7e627090d816a369e147c92b227023de3e059d442499f7d4fc1b76b02c4f8fe1b4db24a323376a244d694a8ddd8a8c55a02d942113c590970da36815d045d09c497781f42d1ddc1dc5f49be1cf8f585b24f3ca89e085de3d197ce018651b5d39cd91b62d19a9a0ad051c0e5747aa6621019c834897f63b313b123bb81d69074887720e416d51920d079138da1691ebf80f0e92099a96f4ac36224b3ecef2c56ff9e29a90cfade19f7fe71ff7e5e812f22ad92e8c69e2150ca44888e29d4b229646f98cb43992fe0866295df0ca40a8638d67041e3763b530182e14e17387e77ae68e476267727e7826d7de2c108679db59de7f091ea11b4e19d641867c0c50660e899b57288e29357cd9b4a12a992d5b698d9eefc4d6549ee330892a5ee6aa012b5b5fe8d6d5673721fcc395d726f80d041afae618de2edb9edce9742bd7be31a2d8764f9fea3994db4fee3a6ddacd8946c56452150712b21abd5e7e324471f003066e56473ccae962307a83280e2de80fb79177d3b97d795c00b4d440a8db3d65061964b0f46ba01f45c7d3547d5e27894da4bd0a4dbb32935be4b59c591e5cfcfee29b99da846abbccffb254c8e6e1a28422ab6f50326bab89fab2828ccc9ba0591127bfd8d0e337d1b43658ee12b37480606df95e8406d6cedbc7ef4a7050d4bd04b696a70d31f645313f0ff28c4fe2c6d2a63bbf7c2461712240efff06eaf5c35b022c165702ecc582746be03288b035d4b30755cca7478dd1378218f96d9384785367bdcc91550dfe5681635194ee55ed60eefd6af85309c4175fed4427b10afcee91afa2ce8dc7080477bae31f77dc95d6e7088bde4eb1be6e7bb4ce90d70864a98efee146dc675cf62c6ab9e2cca6fc3d3ab3ab4063331a852f0f632dde977b43f06890cdccf780cf4490ca5c73bfebe874a84c6244d20b233c07492b15387888fae4e618fea2562c7b4594d5e79eb0d0dc05ac90160f506dc1fe2b501ef5bdbe067668dbfd680c3ba570c02511f95d126d0cb7a516ec3a5ff1ad7399569d8bdf206a10dd608eec7f27d73fe010536e75ecc7789d4ba447eef7fc5a09e547a7508611c848d631ab3bb517e00f9ae37b768b6c7f06f33324ac08f4bf1d6a390df18688b4d54d079cb2a45f01706b5458f09d3b2d3451b6d13e9a66dd145edf3c8dcbee0e0da2641edff717ce8fd759090bbba60a67d51d79a9ce5ba89f23464c520a681ab45f97143e9c7261c2761823729dd7f3d830c6aa65cd4bee2f31919b947c4fa24ad891d9928fe1b45ab273a8be74042d88b9444ca5b326b99dc3c3edcd208f1801574141df20aad17fe2f310ea6bf24af11c97f0cacbe01695a6bc3ae29bfd91bc43899a440626564504310f6dc432aa62d450019cb27591245b145e9d4927685ef53bc339d9ca24c597d7a64a5d8834965f57e5155f5639e7e734e480cc8ca94151e0312d7eee224d2b95fbc9869674d9d265d06b3d640b24686b12a0d2b99617a0164bb0674d70596dd4f1faa41a2b3294471f40e631d288b199ee63c41336793d65238f7aaaa3b9e3534d078d6926812f46da0250c1b50a7d93e8c89b440b1c9a307c52059efcf2a0e323a020c57ec18e0a19e0b8b46232e6e9dced5deb6fdd9775aef920de2956a7110917f168c466a32e9144133c9484972a52f10545fbb2c954d237377113fdb3243c9c94223850058f726976f7d59e680a301ac55f30338d51e6665f4349ff90a37c4a68df78cfdb068adecde2d06577301eb185b65a7427a77ddec93776558015ba606d0569b60a031014704858d95b70bb8a71fe7de7988290da81525dc0b1cff5cce91c2e1dce2f61d256cee574b9121d14e7729bab041b868a8b1bd9449c87601173fe8415e6c12e821b16411c3a6b65b1d1ff53f1ab613c8fd0342a1bb07211d37580a20d4640c8fbd344ba7acdf360f58a46ef05af99495fc27b5be585889e134758bd8a060bf2d8af34627af4d2882c9ed1ba8944d34ea4c855fef444737c4df029f59af398e2cb79a098f78ae51e676dee662921389b670b784ec07e82f28cffa0ca2adac57a77007659680d33755d147d6d0f8fc5c50d6328874c0ab15f389cbbf5c18e68f6231391c693b19990ac6e913b7f02917cc1c8171f4cb85b62d0c488302d68c7032df5bd2b38d4e6701f426f07e4f9072e41b9542bd145c855020099f4574e0edeac0f99abe8e2c8a4a14fce69748fb8c2cbe5540aac8f16af76269e3cc1f0219820d85c58be5b5a121a0946e362a8d7e354f41aea4c54df6579376af6a546206ddf0503cb1559fbc7622cde40d6db41f2ae8455132d09c202fe15279e9bf530587cdb2ad027057a8654ae4b5543a3312b05747850b246377981e97361f6e533ccd45c81c18433af7b6126beed58b0083d997c6d1090a4dd7300c56273a74d20aa181469b2d1e8f98e8d10983b048dc759475a69a4af862bd727982ce70fd08f5624541359205666b4292d8e28e14f99cfb0d86d46912269d9df8ea718ef517ae7c8ee2b8b7f0cb59985963a49fdef8c51a205264c37d93ba5dec58f68a1f76611cd5063acd3977a8e24260e31d47c15043e0a86e764e8845702b4d82f4505616a188e0743ecbc4035fa0552928d19c692ed4f73ecc097a13bdc93356ff748c675be02d4ea95604548614ac64635690489108380dfa850fe5efafb5180efb071fa914b65640f8fd369a924a96738b993107c85f39ccee8f91f096b2d80ee087e40ce23ac45553c672f48d8e8138ec742cc737986ccd41a1d1d0f7f965d7caad40f33038a10e839169010e30b793d95ff71d011ad1052df1267d90996fcea82ee30fbf41b2c8a99fd09471188d3be4e593e503a22305c62f61ff22edc29b1c69a4447e9025dc7782850394c4201301a823a5945a1107c5de74a866150ec9356300019a585bd27bc60e1517bb8b1a99488a0b75af44e38eab3b34332b8b308d0308cd0751790d34d88dd9843cc36c07c7b2fc470d19e5edf60d004ee5f7424b1d3bc943911e0a7e2c5f0a8a0f27c4ea3f74aca6826ae7ddd4de7eb759ecceee82206de7099b328df82a032fd54def21b00ee07097335d796fb75fdcd44931ed3cb193bc1ab102d8ad74430f189dcc8d038c873d6660d7034cf26e58dc9c8f8cf9e8e2365d206e09756a50d6ffec2d8750f10794377595055220885cf7c7b8060463db250e7693ac5d4bcc359bc0554e1fa082a556f107f637d8bd81f809bbbd034317d3c7f4202e0442bbe55aa039a7041796de819a15c0864eca73048ee1f9f1fd9243ebb07c8b7bd08344d0559eb46722af15ac9696940a482fe52fa16b566fa070ff569cfb68a467433c46ea48521fb4d49c44b4dd4364f9b0e61f0332435ac89a93f0584a3a4bb03574f588a87b8b3cb0e46447a730fe4d20f10bd50c8fe80e7230bb21178b68f174681c2eb15cd504fd52e8b9a89a399c0d10bc747f5b6336d2c3ac202902a1fc3a6ae3fd199d834a81d2ed12511887fc676f9fbfe5f1055ad0ffa73359c07b6ec5090e03d4e34954c969edb7047affb2a1d22d124923c56562843dfc1be40f8957a931cb25a82a6ce9773a743f3d389d5a4574a784a993ea1564999a904280c0e3c80ad86e8a6abd302b1f2bbe32018fdf103ebae381defacacb37093cd861d5b4f444a4c5f390936be873607f771a01bde4d8e3db647a8df2c91b2a3eb10af64b8e0c2a0c49c1f03a626b5a29f00001faee340e6217d609eee2049c11b1d083d11f6906afd69d97edee18524f886d4fb0d2b626c1f364507ea896a74fd85b500366802c69aeaa81abb2a52d1c8ea7542a6c5c3ec5e0e34e0f5347c587cee2163fa85189a40fec7dce9416f933f5aa909056c358a02bed42f9a28b541bac1f29d0a9a4d5c6dad4890250509283969891cfec72ffe130d15b629b1db2a276d3dc13904cac73ef37dc59c083221815475eef42f6b466072ab71aa07a0f06100e126f57ff271563728dd84f28fed7c897dced5add446a035f4aa33b9125574d94b301d45dc6272128e0d76c1e94fb613f5266ca2efd71521ea5700b346bbb31ccdbf10d5b607c3748b0c9a9e513e5afe9c7a9593e568dbd7e8a575702b500abf467f261f4b093402e1a00e7de748a720ed154cd3a8469c0ee34fe0830b584f2a0e7cf25b4dfd14e8efd0ddae29bc29d50738b61a56b8e84f1aa44009734d15d89be021569e584aac2489ea441d8fb7ac930e33f7d119cb8fadab40c7a37f1f784536d956ee7a252b526a323f5886f6522ef0b7512b8be64858d2ab67384415f76a2428f1f0a5a81b4e2eb319144970662594b0255cb85b18de3dd0f08ed6d6c0d5959c48bea1dc751befb9ebf8027a8b1b132f823ad9405c7f4309df8a63a72a501a26619aa6f29ec34fa3e21e1c26f0bbdc0643c76474e37baa7d8b22392926f985acb8bd2eed60797edff09ac01ed98c3208812436870ac0a3e12d0db30e8bf354a9caef0564df609388016fe6c7de4b1ac54861755bbae285c6747a44e95d0eed20c63b1420a2027ddf9784ac63e6f36bc32e96c96260a31694f1230d59df0f10de75aee680ebf8161d1708d351ed60eb5c9a96359a8e823ce41574aff664f370b298349cdc0ffcc4cea8981ac58192f4b4ae85aa856a69019b59e193e48884052e8af06a062e3aca9802c0415dc7720de0bb18212f5bfa8875c129e4977a91a68d353a5f75a6e26726433e398f9afb078acb69aed538637b1190015893253ee80deb35c285830a6371f474842400540e9a8e3210a842b2c224007c874cd09e5d2e1f3c5549fa5c157a93757f7ca38d59b09732afbf73934f05fd3abc2aa48e6c2f608d83d3ec0961970ce461a7d42dd4fe9801e52c278b8853f991eed3c4435a47b99c7a101c7711d0cb5a8600c5af2954313269133658fea27232a1e0368a2eaa9e93a3bd21dffe1ce13b2f7310dddd1cced0fda3db84b313f5794f2cb213dcc1e5094304e1c984ed58652af3dc0cd33f2652705fa462bcbe64d1eac7146f3bc1d2b376154d2a4c9e2bf3c91327e025073d4bc14a0144c9db0879a9f94798243036baa610b9caabe4a3e7da5f151e3b62142bb19ec93bc4fc211b857ea514ed328830c7e349dd19ff8c2502ad9f9466bd875c51eb37f1d7597a217b381008320bee880bd228fab23f0c3841b4659fc866dccfe023a17ba137d772c2c8dc9dc8987db91644679dc18c8205a81301c3d145e82a90bee054f1f8affbcf9233d69c5fb1e001995711304c9909aee1ad7ca249eaff8636b096a1f305afccd7eadfa7f09f7f951820bf3ad337e1e27ba6ce75a28f33d639fabbacfe79cde8504765d9d6cbba358682c8d9384316e2e61fb6d347a6321a3a7cf5c6b7af634fd4f0ee22c519722b6129e44a8fd8066373c74de385f847f07757aecbba5eebe8858abcb3b9214edb8557af40dd8709622c93ed143c4ea9c1dd74712361fc1d0714b9642d8d6ba566ce81377fb6a6138b1c68c11ea3fff0d7b4106d1c643b0a931764f242ae8f1c644b3a011b15926091d1cb4ea03bd59a030799bfc4946f72528ec8fe634bf6cdae56e368b6958331c95a44bc7185a8571164e452c7a7b14c0e8bc138459d942e24a8d3c920693f693d2c70981e1e6ca464fa9bfac743b664d3dfa2d063a3265ef33406797d6c5148f2ad7eb5b8e334e734150de54adb2c4e249680bbccdc8a8f3ad0258019c63cb0b82f1b8394af3a057dab791d229ffdcdb1a2044d8f77a3c34acec7ee837d1da6349161590dde30a26e4609ca1a9c475725851f98074aaeb744555e869110d5aa79d113eac11bc212e390ee2f121521aa23f1808b4140317260126897aaa782a282fb8191860d025947d7f0c0940b329b332651902da666341403a25ae32c765736158ec813ef012c8bd849f377b781019c84dc05ca4569ad48af2cc628b86ad11fbd7f02fab94b8c331072248aaad49d6808edca2a7643727583a0e543f310f5314e0b52bbafa67e9f114f080402c53dba2f4b25782840a74c252212205ce2f090d3d3a75b5c4baf1950f8f00659db5989388bd6347655d31b3412a48336eb20b850013f8aca2881686847b1e579143e8192ceb3c098c5386b7b77a0a1093d186803896b01785ada2360da9f879e16c9fb44db4fff839a16929a23edad1e7c3e1871d352d1e56757281e8dd0bbd815ce25da0a6e92d22de00167477012a2b003ee4e510c457df55bed925ee7991e914795d5251779975a5095efaad29a4f67126b97fbc036a272ddc0a98c5e3f4e1c1a8717e2cce3eb72d72e104a046ccdac46f218c66c83b4984d14b4e825909b7e0f931387c30ee30f639aed600d9ed0e353685f23b014423fa05d5b422fae45e8d7760dd438635179e918637a43b0e49700d7d8039a61bbf80a8db54abfdbcc9be15880dbeb733114ce8405ee3792bb0f145f4b6f407b3aa23fcf9d4bcb95236cfc015ff30ce95a88678248f02a9c06f44eda4337982e5af2a26d612bfb5585f17023539ff422388fa63ca240a6396ecb91219c64e4bf9875eaa87317f9ed2aba40658d3f017ed3b2405c1a6eed4150f2b2cb250941a6b9a54b13e55f88fa36797228daad954b0808668cec028b07be2e878c268093aa23a365630c720b7d3dcb0d5d040c80ba4fcc3b5efdd4f1a11ae1752a5b438071d2f4cdfb3a1abbc0e4d15aeaafc14bb8d1533c3169095436820a6d588f52629da88b4dad3da8988b064d49a93c1f8525a286cf01eda94e46c639088d18104d1502fa5d8179662e0c413a290850f1886c22045807b875f52e4ad63772f95269cf6c022ba788decd7772d87744141ea57f879bf9fc9bf1fffc47af66ed09f97bcf093c710b8c967bdcb167b3644e58d6dfb732c1b78af2f6e50bbe74b861b4a42ccdbe7c0fc6b74cda86995d0852e0b04cfebb61f1f402812d297f0c06ea0674d11e68d200bcf13e5f5f74f488a4f01978ea0a63dd1b8c1c92f6fe026e452a7daf41a75db136a56e79a14f59ad27d467f6e6ab439a4c313594824b6737de8c8d2a5ae6e3b5737f0c4e797999aa77b99469fdb77873fad8bb80066bbe07f52f446cd24e14dc98346275a470791c48a326c86d6f496da47dd847cf158c5b27143a0a1c947bbbe0564fe8686c801665ee4ee57b43595e2cf31c4a5371852fc2ec6c6827e5edaa25839e674ad420a2bed3ab8709e06dcc9bd4a39565e46b0d48eaa3971873d9b8e8513946295416201ad9d67e9474e070919794894ce11eaf1acdfb1e91f6e8e265e2c6b95ee4d1cc6ad1fee1c56e251a44aa8bc701698ac9cd29a9d66380196cd54fec4cdfd16c264e4fb090d8885e1d390e7afa6a059c584eaea4ce26bd3a8c51f05b766a4969d00ec858905a00047358dff83c2f487d9868dc0c0de7733a89b096e2de8d04a602b1aea6c867248ebf5fea5cc3a839251527de8e58385b73064644c36e1190b9b14b2b97eab5f13b5d9d1bffc6ec9d5ab94639a78d7f6565f957f479784815e322f64e01d77ef33940952e01cc7c02c7aea823a3fa29c7e742f41d8b3a357b64417e92c8376d26ec31ba3c328effb11ab394c90073ac547525086c3d8ad61f3b1c27f587516eb5259d5e11f3c9f4a497d51f917e9111c60e8d13354bb5664b8f69fd3d75df353960dfd44ff6b38a46df3f89d96f1c6c904377dbb06131d36d1dc21167f12a8b74b1ffb83be10e24af619deeebc2e6a9ea523a7c83e061cc6a81244d47450fab929e5d10761ab6041d6b369f88969d1f1662964e44f95854b115d11f52c72762066763fbd226adff5b4816842221dd8021cc60a46212e550d74f663549e7c4c1c8d3ca22a706019a1b5430b0db4325c1a7886c334d6e982a12c0c872616b9bd6a2984d58a94416410998d90583376148db3164bde6fc66c1d62a40ac353a14752170e084fcee0ecd0400106ce1885813060ea223650ea448edaf77e9237491647d9fbc168e9a462ab271745fcf7bee4c9d65ba8669cfa1f9090682ba396b5530552b6691ec1a7a888886342f9a76db1b8bec6e8e4b0ae2814b4f68e88534f164a96d4de10b84c7e68f14589d3f11f6323310b769ec3ca99f1518ccb92562be4ec8f117491fe202a9aace502446ff329f959d91310b3b30c6dbd4fc021cac3cafa58d24f054d8011e2b94cc85adab431398cc925dbb2f84868d5a185874fe01ac47186c1f41f2efed9bdb70bf3974f3ac4960fd70367eb0940bfc9cf01b912b81881086a92488c35fd88ae74e1c1e1ea37aad2f5f327f2a47f4dbd39b77e085c097e375f6e1f08219b58931c70f53b2988e334f07a92b8e3a56cadafee107687bce88a6c3d8b92027bb7a29db310c6cd3d82f1eaa8f703292d6303e1374e44acb335efa52a5c0887d206aaf19a9d47e8802d64e84434aa5b49a77eca91dc77dcf7e3a4d1b35d84c5a3d1f6b59746066f6b63b9da40614072739c541efe820f8ec5d773a590d6a6e2483c0d1c9178d583b845d3baf0abcd0d952f31ead35aa767eca7e1067a4138cb519a3db91c497489683b3ba1a75a8d04680a38399b39739e9413564258c9a364d2766665f633f70d1bcd6d3cd3ce0b71089f04787925216b31b044a381af58b591bbe540cfddb2089f38caed9cbc2aaba1d0da69ff848dbdad7d9390c506834c50bb431dfa5831447b8dd910cc1eca5696d8d06b89c42e03341a3ad2743358b1d317daecd7e02b5c75ab3eba90b2382ff825f7685e51a0ae1bc566bb3e8f9aff1bd59f065afeead11d5a8a1517a048a0e78652ffea591d5a8a1527b048a0e78652ffea591d5a8a53379048a0e78652ffea591d5a8a53379048a0e78652ffea591d5a8a53379048a0e7895bdfe97524d7d05ea89a4bd004507bcb297f3d60835dad23c3d024507bcb297f3d60835dad23c3d024507bc2e7be85d7d52230dcdd923d074c07bb2c7d2d5a769c452193c024507bc277bd01d7d5649034fad39e175d9c7e1ccf7eef681c4817e30fab93f83b23393dbdf4aea2b516e8db4e69a139d2d032e7464032a98568a5a40ca59a539b797b4151f9d1a0a3238b780b31d0d674ed25892089c80b4e8fac2d6c7e8f044d01c9edb442e81a0324a85addf00f61df39e351f93c858057d8d5c82181bfed65a7b274396290c1531b5d14b4b4b4bb69452ca2465e5083208fa08d5ebae4e2ffcdd530b3ce6b25a4381ac1a24b55f316e9e60a5ee6dcadc487a6b93b5bbd74fc317ddebd71d597d0d496f6b947c1cc88198bcb525a40cfdb93684e4feac1bff8749bae26ed29130e00b50dab82bf126e90a8ac485ddd7d056d4994995f3adff8ba1cba27d37d5afffb331f4d730c98db28dd28627e99c6d18e32e2d555a01a6d57a76511b42deafdceb316982a479fa46f23f34cfba4318dd2008d60f41fa61d9cf043d96b50aa47dfd20ccaba5409e24f6fdeafdbd5f5b00ad218c5a64df9a110821af5717f57fb85e17359aaa7d82f46635b5efd5d4be4f462084e46e68c3cffda7bdbae8d5cb81b82471b30d9f9f4ab5b43576e6b00c6ceb7caebfd1afbe21c7716fa39b338bba97c13dfe8e7bfc5c7ea56d73a8b4b9afcd0deee4247c14fcb82a8aff95276c7bb6141970ef8ba6f858348b60d02dbe8d6e51fcfc9ff8f945937ba5ed7df7e1834adb836dce2a7dd5d700b9943b85fa9f63ca0fe6eaeee27b5ece5efe3e0ee8bfaff33ccf9341d2d1f33ad7676f3465b89eec721dfafa43a6530532abe77ad2550199cd22f23d16ae22e8e5e5ae3bb1f762061281bc7ffd50d00b017de72f33c80402419772916449b7cbe5e59cdf9bb207d927fe1a2e43ec72c6efbd3779fe8473278aef8fbdc7d93cdda98a9f1fdf7c3f7ff5c47717297a5335e1af439bf8f971597fc4df3f19d6ca7de63e0ccd22fdf5f1b3f0bf4f76bf6f06df7a3906789f5e2f3b09dd83ef4c2008725a9f19d81c0955028c3bcff3cc4f46fdfce70c98d7715cc5e64b0ad60d38cc54eda34d6f6684ec3279aca26c700bbdffd3be574bbb009bdece4ceddb192037335bb7335060d6c663288a557be76e82fa6ff760e74c5960e8a2862eba6bff235f849b5ff5d7dd3b93bfee4e706bcb78bd07dbcbd3eeeea9d6f576ff999586dddf77cfc2c12a03fc97d0fbe9fbf54260d6aeafc1ae5ab70efeebddbd56b3e8f5daba770f76df0766e94f4848bbdea36c0a3b2564ab1369efbcd0e62fa37322fb76caebeb4ec89cda5614c327f0f52ae90641fdde3913b8a59d09c4aa12f86b504ef73998b5f3835d679e60d6cedfbd88086020bfefccdad9ce765fe70f94bb6e064c3bf80241ac6ac23ff1bdcce19325dd40e509dbf65de509dba3fed39baae9fd586bd560b5597c7ff07d066c8b1fe8e357ef47b388fbefa902817914495afc201c6fda9f19c10be48c19305177ffcda07e76d76441385582fad919ce243e08477c1cba10c1acf0821cf77d6fc30bf483e63903e675209c6a229b36a8c290a0c85e0f5aeb09f061b2e204a58e0e3571a4c4e070458d14164e907393688d1e11ceb392228fdc5a6badb5d6ea5c113fd4ace7087c31757bafe6f0636bb3b7c39e3fcf3ee7b1d0463d46bbd00652eb8af1020e8f512b24db862f2a8dd5af3446df0bad7dca048b5661f0009a82026bcdb3b6af9a2a0c2230c1aea60a5a05f3581d8102b6e9cd8ac7b69bdeac9eac4278cd00c4ec863c4be8c00007081ada9a2a385e6658acd0a09edca0640622341d52988140c68417c83031f983420f56756666b2e2a8894286f6e50b6d87948c0e0db22062988df0c20741647b7a941923c2acc7980f6864f6c874e0414a0eb41e6c6670cacc6c0043bbca42232265961525c3c108cd051668504e1853d50444d58d59941f64397440f6470eadc9cd0c8d19999b9bcc872d333e35789121ce11da9b2132383faec4904093414c0e12fcc87ac0338b332785376dae662c88a1c5d08586431523336025b9e24216146e5039cde650e998d1098256a587c6012d2f71643ca499558d99a93045bb71e506e5c712da5291991f158af0a061dd38a0e5b614c687d90f76663a70a0615923cbb2d2c186282c4ea2d0cc307902439715ee3ccd9284d9d1260c0823f089618b76458719551b186ea0e10833bb69213285e6a30913d4ac034298f8a0bd0066041f607028e9c3c39d19901d6638b068299c91fd4075870b6d0a1559079cc841420bd2c21120b239369420654308333240cc9ef2d4a123d3822343330ba16af6c60bad89951a9eccb494d0d210a16d496186e78b09b3215f98646cfe98d083903a3414b298d47c408626f52588541034cca06298adf0821cb20b226b43763d647da6765899bab1d4e70c9e1c74666be2d0a08636653533014c152d342735e871321321c9ac0f111a0b2ad0e4f458e26547095e6e6ce933ab01cfec0b1d5a913821a8993959d1b2c0d0b2687153830f4e667692cc7610a1e95081a6a5c70e5d76c8f074b9313ba10f6d0c9e30745a88f344cd6ccaca0a182a2d39d4c0c609ed4c125a1722b33a2accc0f4a029e1b243c687cb8d297d7ee0f943c729cecc0535342456b41c60665b5af6d440abe2844d92591311212a60f59889d9b243b666cb0d357d6640e0a1954087d6421c991a3554ac38006696839659540db4159cd08e2491d92122cba3029a1eb3265a76d06cd0728326a68f159e990c746669e2c8fca891ed609584e4c01821392d3ca880793224069a1423343743b8a0b0cfaf42c2e3d5ecd8e7cf7ac88263bf63f1b3ed5f6bad7d2c23261f067e494870a4e29624544ce056eacb76145ab8bbbbbbfb0c0a89b7c8b6c82b35e341769bdea468d8b33ce4924de222512064d1a637291e524cfb84d93c5fe5e8e51cdb5b6b757fbdaaf9f29883a0a7a82db4922b40747457768cc0f571d25b3bf21cdca6e95a21d364ad952e4d56a65841e2646588151e24845674ec008110e1f32a79b6d65a6badb5d65cc870d35b151d682790dea6b72a6c663890f8ca496b5d6587d65a89095a6badb596e9a9020397abacb07515139aaa34e58001fb189522fb3c0aa77cb855c971a3c2a7893b3a5201be4650d14109084be8f4a1b2e64ccd5cd65ad34420f1a6372a6768a8a2a970a3f285a607ca9eed6d7aa372854a133a1fb9dd83b617d937b191b69745d6acd4a86ef919b2ed7b79bb32b52d674b70bb2d81b6dbf2b5ddbded4e452a8ae1f692dea4bcd94a5ebdcdbd41116b33d0154e93d07ab04b90744b9cc0e8902f72c908dd121f2f1630eec576490e1236e74e9087021d2562ce04a9a0c33dc1da9c9627574c4fac723c09a3e37a79f4a4867d1ee578bd2811e52cde02819d60c4b350312b33c3a65121f5a6b7274bf66b448d836d7a7b72c22b0e2dba974602f904841ee40c4d24ae9d216b9f31263499c963da028fe9b7b8ee5ae554393605c791240c6601068e546b581f574b81c7f4c3ecd7e6902789ad9f040a0a1ca9c83eddafd8918a091cc99aa049625cb3b5964e1525e95a1df2ac72b67e185653fd9ef4afafa521b363b97c04941a0f24876bdc59dd6cfb96830e1ca9861bb2887ba5cd55d5e090675daae2a0f6a68673d001e7d45f69fb92c7e0d4de9027895dd3813c6116e70cb319778f4bee3b9c71a8bfe65244cd0e493de6be7178ccf3ca0aecce6e56268e890d69abbe41dd36eacecfc2ba36937ce30d2a8c6e2c296b76894d6f7b94ec6ff48fd2cf192375e01c8491aaa189b27b9a766dd39b0f587b4f101faa7cc0b189de2beb1611010c27b7437c08f0611f24e2c3f73e7cf1bfb0147ab1acefe5d9debfb26e3d942973d313c6f563d2f7e48f1fc6f8c40abe27ff3349937a2c0ccbef5de5193efd0580ef0a195037f8e4932ffebd40e8bd27cbb3834d7e0e2f107f2c72bd679e4531c2ffbc1fcdb3c8652685e3d3ddc11e9f0cbfc7218cba412133821748efef67ca787d7992668d102fbe823cf37a2c84f930937a2ce8afc782ccb386dde3e3afe105403ff434bc00a83c3dd843e3db3df4435fc30b4ef2c5a71ee3bcf1c91781861e3f37f4def8e437e4fd68123d7e1b26f926fababd7134cf0f97e37b9c377a3534e3d73dbe68825fcda2a4fae2d717cdd3dbdf7f63f77df71e2a89a2f9e0587bd8b2bbffec4b7cb23c39d8e4d0d00b9d1bd8f0813ee8a923b95e7cf25d250b2b96e0aba4a18136d087650ddf40a68dbac73fc13d7e3f8e6558c318d45f8ce659c5d265c324f2c51a3e96befd47d1bc1e034353c6f7f53b72ebf2e436758197368d1ab01a8ae9aadd629f282982a07dc2d89e352c5167eddb275dbbea25d153a120d77f9fdb5a6db543bef760d7f076ef00781bba0dd1851dcc61f64928c8a5ad8585ff7dfdf382cf7e175ab3e81351f4232e48aa6f63d4b7da5a7b02e0b37ea2f20c6ddddbafd3231ee835643fbfee0090a5bdce3c6b87479845a60853735b764877686d58daafd65ac7b24ed60ea944efc1b6d5ad5395a0be364f0b6477446f9ff4f767689f767ef0bdba29c33e9159c331a55d673f77446f89be9ea0692d9175aa26eaebd046f4feb9b41fa2041f568e5fcb2c3e51495452c7f2587e2bc3cf6133c83c49d87691e493a1b63cecd7d03c6be01a187cf26be9598f1f06eb30063d6b833f86398cf158637a52295a03f3a81254cba39ac858960708da2711ac670dffccd3b3b6d7591e58212accc99d3d1d087247ce1d1a76079a787053b5c10d3ea6597980e0c1c2138587098fd4fe761d3beebdf344c1996715c318e057bab9a7b5fc42179c49c1ffbeecee5ecaf8e8e89e819ef3fcdf78a24ae0cf9dd5659ebe814ccf9f79a29ae01e7366d1f7de5f8cb93fe2dc5d7fff44b1bd07c1d0067e3565d4bf2fc20441fc325c20fe1355020c7a1ecdcadf9781ea95dc4a1d70471c7e16169ff7bd5286df4a8faa04f83d1597cb4ed6f0135502ef2ff7df9fe0876f9e28f6fd2f9b357ccba82718c3bdcfcc9f1f5513f87568039f234befc7327c5c5ebaa9f8995514cda2fcdedf135502fcf7bc1f689e27f07fef3df53c4fe39dcf0c9ca812d4f093c35ff5d58f4bad4d6e676c9ea826ae398e2923c55d8a298aaac63b22a18b0f5357f80cf982a7025fe88cc0838a4e16969d2aeb24f3d0b48536bdf160030f5ba444f84eafb59461bfdbf6bdf46d4d6a65f4ab7bbdf1514a77e041c9d2474964ec76a4ea54e5c0282e365158fbf4836dffdab9dad6fe5b6b6b3780311276e4d8b9f32797a1594b091d2a75b08475a8fc496c9e3354b0a02086201d72c0d9e1434f103a9091cab307ca2d04227f8610b946b427439d1f609d1d20f66163d7c6b73a4c1b63d85b3b18dfebf8e9d5c65a6f422c9cd6a2d292827d52b0dde405ab85292a82230a0d61bec0f044eb4a939da2ccad851da4aa54b86237bd6951b1ee372d2abbda2d309c1765e40a191d4a08610b931d69fcdcc9d10408324064a965b9aa65e19ee4c0574df136687320f9aa5921cfa309eaa33039ebc570853cb93963e67ca1eeb7395f762d52f3729bf3749b137575933355eb52e35251a0c0921caa706843b5682d992186327e8ed06921c2ceb71d9e5c9e920274e91385a6051bd0eca969c9016b0f6d7a9393478e1c339fbbc9759cd632f4fb73fa13b0bf0ae29a1729e4fd5a4c8aa4f8e90af2254457e8bf1f82aec84fc3832febfcf4cfa6612671ad0fb83efe67e12ec579a132bacf71e70b70002f57a38124ba15d8f52f075e90084a0d8a13af31a93139031545565bd799a706fb2caadf75b59a1c78acfbcc19b04d1fd4a52e6b44c8ae883ef7a2883edeb5889a15ecd997d6afff79658d05b2c63e8bbca70ffe0c706b8c31e5c063dd73dd7fdfd56691675680b7f75e5776b5dbe231fc958ac77067be0ff23c9aa252c3d4aa5aa65ed53535ca3e06cd93c4c60f76200882e083ff7224d10558a11c09245fa4608af1f17f61a98285c7f08b25056049fd08c5041e73c10285c73058d68090f7bb074b3a8123818fcfa3efb5e78128f07bdd0743ad89c7718ac3b46f70f6ecf3dee0dcb9c1d1d2737b738393e580ecb51848fd749f208958cd91f2e39c4152bf7e1bbae06ad7b95712daa7c091daf4f6666a68d3db9ba87db7fb8c4c2bad29627f6d0a0a2c7024fb1478cc4d19f6615870cea80d21ad05d4524cadf9aa60cca650a142456d0552dfdc04a7cab1a86c7ac352b2e9cdcd9fcd01b16969e4df0c79b314662b6fc7a16b2caceddaf48615667f1c5894a43fbfcef96b9894b569847b1a1a61fa169ce901acc5927b8bb089b7effb3628702ad17d56bcfddde460cecdcdd3cd4dd3cd0d8e5b9b3cfe21dd6b5d02f75db70c0cd44d29ade19b52a44ab1494d7aed7b5daa413813c698c2d42871a6266ffe0f12864dc1b9bb19a511a6a316432f96469854b418b231f4afd246f741a50d72770f54da80edce3432647256e6a205a8ff558cb75029b42b510130d841deae0ff4edfa2e520c49bbc1bceb7b7ad7efb89acb9ab116ede73d54725666659a9bf3514d923574407efc6106d9e4acacfe198b60d0eda63f27baa51bd8be6ddff68db6efc5e7812b59f720716c0e5c159797b76772ce39e7ccdd2440906055dd7078818d974688638c5f61e4986045c89398144ce0d343072159515b3f3c342c844aea77810e59f48c20c30f74ead03768e6a080e5852bad11b82b0a86479c314d4878e8930702626e80c0010e84b99af394cf5c23275a420062c5694a1c0dc25c018203939924259c00650066fc0a16903a43507802a56f5805d15a5ab29af3f26ef0f165c418638c31c89d40c30f3c5a43b25021c10d80f3e4c70f085cb0fcb4c0188f655838034210324c21e3478a2dc91c16d040196142a105c6587b5636eb112b477a2f7018e4ce6c210366aa0754160d58252c8d206485144e48e1f26081234381989225081eccdc58010ac552831d3e54ccfcf083e3298f799ba6427938088865cbd84b856997261d5a4196feb861dac18b0f215644b0e272c21ad18b40f1d0124e2131f221c94ff7e913988dffd611c2880133650b105be8e0c045ebc94709545dc22aa25c7b30c2660717a05cdd9c5441d3e4c78f9b334ba2f800e2aa589eb3ce4f32ec8cc545869a7386aa50758c5b715d589021c70a3aaea2e6280004117c904275d31ac1e9ab3724496cd663e548f543064b992139ac304210131d3f52b8e12508203ea68c958e112c1c16a86c452a49f5ab1054b8a18161871db4fcd9a37524cb56d30d8c8f25b07239d265ebe388ab4e651e54b427265b715db0b8e8a98eca7dcca6f61083fd09c618632e42d99681b2948b16083ef43471e3a7aa843e4b8004f112440b567c3481b5ca95a68c29f281d4d51b322864b93106cb4c0cb71d3ddebca88e58adb5d6fa83f10ae5aed65a6b2b21cc0005444895265b02f001943f568258e38425de8c380f18b417c6a37cb810431a2c3f180152e2c80f17f8c0c045899c137a04c0030355999c9923850c1726774448a3436b4b863123d8e151157a36683856fce4f1f2039129275a389386c7521415116f42721fb8b562a530c618e4c6b855172c7aaaa3d2e34bae4eea91bb45494ea10f9e19da90a0874c1103c401b3e306a5a5035779defb72edec5c05d0a7c9c9478f1ece70c0873664a4409193e5c2901e2a8853d64a79b6528e4d5063b9b0f8a1ca0d4f5dd0d0196301306bdc40adf0840d93a7292e2f57d804ab2e196b678f0b14fe7c07d32c345c4ef072e4461512b4d470cbda0205ccd6cede96dbe6c90b70c4082972c74a88213148b5e1218b142133705aa2e460c4ce9429399c417283053f64b210d9ba42c46310a2f325612facb5d69aec7c581e4b7496bb065b29dc038d95722c42e85c997303c88e2b36b223516160b0dada414a0bdc030b87c572a9336cb8d2b19584070d3684b9c9b067073050a2ec94c156ac27554f247288682d5981e1482d8b096d7ed821c54c161e593d3e18af28a500a509ced409494448a3044d0e2f6af490b0a3cd18a7e2c1c68a2d1115c7e6c07955947ab081210d962b324970d0e04a4998397ba66e535ae0a75836a63261aaa352a2c9d557ef4b7553fb52aaa52a8e8267d79d213a1b75eb90220dfd7d8e220951a4d7df27295210121092ebef8fa048e45f28aa2520fbfb4ab5c4b403b0e92d883cdf9f3d3bebee7edc15af794a609fdf77dfd7cf6105fedfe3b082ef87ca172a5f65500954ba4a4a912ee0315c9b3c861fa8ac38caa1b286c7f08bc4574241aed700d3adad01ec312cc804324f729b270753a1e2e82816fb3f6be00dd6fb78344f09ecee82045470cdf3bfd056ff5cf06de0eb57dabfc5f2a4544b51760dbc6578cfddb751675cf06b69a3de0aec8cef8b68d45dbfeeebfd2d7d7fa57b676c63ce35b84f6318b6b106586aaa0adfb0825b9444a5b653605b1b787b908ff072db585bfd4810599bde82d8b2cff1164499f13b17b5fdb6ffd9d265d8df3420d8f6adad266d43729b926b2a10583720c2e4c1b24f953e0f4a1de33b540fd445712b0a7c8f4e541395525c8ec1b76e6c5e33270c667f3b48daaeebde56bfc357893b514dd410c51177ebfe3c779b9ab01030184966e9da198ee36c96d65a7b1dbe4f8250c9d6d2b05bc9def7f2a89aa8df084772933e493b30eb8f202f9f9b338a1347f4040aa6262094f4c1dadf48abfbbbe9583cde9138b04f1ebb3ffe905b9f5b1f4ee33b7e22d9550d869c06298061c1f7d5d26e4edf123696239e4419ab89a8d1e9cafca0773f2cf16bba6b0536eef644d4b452d4163147ba6f351eb5dd5dc9792c46febc376f67d2d08528821d98e138bee785ef8d260d0b3e0dc313d544ce398ce55c82af7778398f9936baf1d3bf1cb8bb8fc38f4daee468d87db913d584e60085c7f4455156bdaf2de1a35e2ba59456f0d647ea867405a572eb1365bf8afca0645f7a696d0792defa40ed13965f3946994dce6316e4f254dad7247154dff3ba4e6b77edfa869c6981881a1d32c37024181ea3210c1f718d0e999fc2703a24fdcf6bb1a224df6e92f01855faaa6de1a329f0571a4d814d0c4c026cff0f034f51c365febfed534b39f302986643e61bb63f3629959d1487ed6f0135f2ff6a3d90fef49a35c2503de4effad65ab74ed6ac5973c6b1e8ad6d9127b8f5889c331f3ff4a35e4317ae0702baf7c6b0ef48b167435aad5f23bd28692d6c0485518a84710dd8c648e3387e0dd81eab96c7aa1cc7e131fdaeb2fad18fcb5a5a5b712c0de9558e54a39cc9a680fd678253b052032bd32a541c1dc5621df7b4ebbea1d29fa83cc1adb33ca6bfaef198fe4ac563fa6b67c8b352a95ab3f5d72afb1a04490d233dcb91b076ce2e1d82df0956293df4fa6b1847227afd1f51e93f545297eb818080ecbd39bffbe8e32901d2632e570c4d90717c922481805caed76b1cdf35fed0c447ccebf541e5a9b483dce512127abddecb5302fbf5221fa8c440a5e1c17b4c0b7dd0bb0d2197eb81808480ee7dbd5c2e57393e5049fe2d37a865dd9fabfc2c18e4aa18e3b7f9e357da404f439b2d8f6ae27e2d4fcfdaf75d25e9b0d114bfd2ab5462fb2f4841bf06f60236056d7185b5c4a45f7fedeaede96eb67efd9f2d8dc01e6653c04c1818e84fe757da01258828e908424d0a29fc00c5854a2909930e5684841084481e1e3a7c6a4a34f136a502d2a466059203228a1ebd2915901c553ba87e4c318d9b52fdc881d45a3b21ab8c4420b94da97e4c7d9b52fd50b3cf188b7a1651990045e514a5840b1cc719dde053fb43ea4da97cdcd92759f3a365d483cc9b52f9c8619fa4d10e2a1f6f48d23b93aea0f46a731cc771648916a87e38eda24da97e2cd9e1a6543f86ec33867118b5316a63d4e63ea5b58ece716e4bbad78b50a7a15c35fecb074f81974f38f5c0e64a57386553b880c2ebdabaff7fbab6baadb24cf632daafbcccaecf59ee76d8cb1ff6f2a7412ecca006b9b013bdb113bdf12341d7fd48d015028941affb7a59afaf2310a4255011d195ecfa410e357a915dff45ceb0eb0b45edeb7bf2f8d993c771f8d2d6d49630535bca544955204f35c8532d52875427cfa25a342bcf9604544cb0eb46b1ebdf936ed9b56e6aabeef6e28bdd5e8c71d660d65cc7759df5da819aeb3aeffbbc0f04437114c7d17a1dc3f0853892e018be205d402e2020eb158828b405c1428436211145434545d66b11e80a5fd8aff40506852f5e602587848686acd7214e2c4aeaf6fdbaaf7976b071084e2ce2f635cf0df6fd9cab154f19611897d5b0862ec229d716d092239dd8ba5c770ae317258a90967a6c6f79ccf32495fb9add9e21908f6b8f6bcbcab43934a4736ded2d6ae4f7a5b6780a2fe3b26a71581c7efce4c9a3a5e56b763dbbadadedb6216baf39b45500aa8f9238839828fe805e757cf007ded457bd299b42dc6365fece246ed5a0163a3e50fb14f7885b4143a891bfb8555aa6ea8571999bde94c7a63cd19bdafee392236de511f7887e6c44db9a5eb5c5c247496cfa463790e7f5d2e2a8cd6d1adaa8cdc2cf8fbe15b2355085a36e64fdaeaca21466da40d5a6df45a12b3aeeb5e784993a53942a71c2e9396dcbc2729ed36db24fccf4198fbabad3572209798e67ce650926a47d5ced751c628023470e6a1b40a92cb457872fec531ac34642ce3373796aa0eaebc0ef955a744fc3ff3e83f0bfef43f39a19840f3e6876007e682ab5b8e6c9ed8ede3f63bb73c1cdc0513463eb37d3a87fc0f2cb5b5f51127dfc369a646dadee16049d9a2f2eb55eef2dc28f61d6761d768c31c6ee1c9764c33620d8f8ad576b6f68bb8f6f498d7068cb450dd09f5fe71c5d0e6d5869ebd07629e53acff3beaef332d09fdf01da54a1c2ca3a0f7f30d89781ce18ec3a8cdf0b93fcf187efbdd82fa6f4f3427f5b7eba822409860ed09fc130037d6d1406ddd8de7b6fa59c78df76c324fc377cf17d1bd8be7ddf7e4549f5e9dbb8f04517522ef4c4bab1933bbe6fa49652237f6b3486d4e689bfd730e8eedefbf35e514a29a55d945a6bad2e67bbbfbbbbeb920322c75a7bb5df8bf7e07c66a8ed9f431a9cd115c97d57411d56a037f89f36f5735beb2fc1e73688df431bf8df5bef6afb03fb01fd1ed3767cb5dd3cf3d5be263d3550b567e028eeab9d0ddfe8220221f4464595b5d65af57677771bdab47572b2d66697da786bcb05c6b70e19e2c2088b33c2ea42dbe769dbb9efbb75bc448d6ed48b07b69b59ca47499c0270daee1c486ec7496ac550b5d6a824423b68cc8598864ad8139521402b1aabf298fffd7d2fec9660425e1bc7e448de940bed704e04ec873e4788277af047f04707408086ca64a10d023434e62fe208154fa50d04f4b4083fec955a0c9545d82c6ac0d0137d06434ff4f889cc0e96603303a287991d8478a2ef00f643afd442840b2333a4f7425f81fe7b08ae20c0b2294200fd6937f894fcf04540d115d8a6207ae7b6186565fee2f8743c45400939ed20d3bb82912f3cabeb5539924320871472c2403d61a1082808d06c9dbf346e9d3370d4ce8f81ec1347ed9d2b51c95159fea1129748429e0228613f78f1fdcb09c0e9e55f945de2051b55c338c40e8d4ea30a4c23108fb9570295f913959e0e2af31f55a048de0d1a73208ee42d79ac048f046f04ba827c7fafc9dbe189e071c063a22b84dedfd33132d91478c9ca42f0727838bc1b7405f7fe1e08de0774854757603b323d4d707a3eb6bfe7e408187aff8f24fa91e85d40442f94ff55da2077fea0d2066c67d3089189cf5099158df9191af3219cb51de7b0fd319617c01f2fe125a1125f6134254e83d5b84abc862c319bb1c46dc412bbb96189cbe01b4a6c861af9e7129fa146b80a8fc1644a6c95b316355189cf5099ff5089dd50996b93623794bcc25578a9ea960f6c0f7b1857edfca7a7f59fde926ffad4a4d4086bb3c992b754257a4b42f5c7212fffaa7cfedfe800fb0e8339a7bdebec3be5a891d1cbbf6e25d7ae95babf3049dbcbfdaf59961eda80b8d79fc32b6a00f7fa33e0b467725666439bcb5693aa494d275ffb54a102db4607701970a60a5385956551835edaead3d7615235af0e6d20dd3a7c21b469d43ff5cfd151171a51915e68abddb6a657398fba27dea751ffd0a87fb2a5467fb6c6e1bb8fb77d4ac97dd66abbdb3ea51ca5d7de30b4559b64c7cf21163580fcf1332047330331cc365bdebb8665b5d16d4620c473fdd84d77f718439769d73fafb5d6da1bdaf4b55176a57fefbd1787b68ce5c8d9f431c6d88673ce5987b6abebd4aeafb5cdded2880c79d23d7b8cc874ff799c78e6ccfd67162571e7cedf08fe970442edf7eaa6a18b0d5e3cb0b97f203f60a4cd7cdeab4dff0b5f64cf1e5ca5cfc11bb6de103fb031b02930c791f6ede31b65bb26258290b5befff059f261b6522498c79c3ef70d9529a8cc5fa8e48a28120168ccc31779dfff9272de4979db4f005d11be3f02e80a717cff09e80ad2f5fe2be80aa0f737005d11f4aff74f415774ef8f5400bae27b7f147405f8fe043811015da1dfff6d0a0cacccdfff88aee0683d00d3b710a25d1020f4639f3ca8146dd65631ea94b2110000000af315000028100a094402915010055942bb0714800b7bb246684896c7e44190c32086612086186200200000608801861827517200b6588cb846e87195dfa4ea4e848be82052ab1f1985b732d9c5ee8fe5f04287d8d11fb605e3e466e3ca176f663e87c97e4907e3faa01756faf472e1ace5fed0b572d10a2e36eaa1224c23d9afa9afdf5aca177b154f5a7d578cdfdc659359799ba5378b032584ae44463aabb075d46fabce6f0c2ca9fe7f94a15c45539108c52006438bc0cc1c59c9c8fb3d639bf227ac2769371776f10ccb9dd6660edd2fb46371a8b714438352d8cc793f0cf79f080fec95b9f23eaecf7d30e04603836511a6322aec644dc3d4eaf76cdb9132b538e1cbf535165deabf93d9619a1bafc43f691a8ab59d02120d93348afd31d430ee8f40663ea2679da85287e47cb390030a11f2c66dbfc8c0e3c357257e5c04390d216c2c4a64be793f92226286ac9c49075d7bc7f05fe0cbf04f921268e0b9400513d65694611810a6a64c19ba7c7e49c065712d494e3a400aa98c7854d19cd62495fdaddd9a67e8fb9679b001f5b70dd05a66ebdd1fa97b0b953c24bc5f7e11d0d8f1a3bbf17337b9ee2c0fbca75bed0f1dd49d84a98d350ba91d3c3d08ebaf2f439282db3305784b707645cc52cd4dba2a136726d9f82d8fc47ffa212696a1f81a2393c168e4a914ea4c23feb62a44f73b7e41d926ef0b40e33af7572105a863fefc863e1a8ed346ff2a7fe628c951c0f344f75889fdac03886afded9bfa9a9150d0879cd71cc1181e7219e74485d0226600c36919017c4239f3a1b381d366484db46e10812adcb65654b3ad33cd3490d1c19caa5b6b0b48418fdaaa0715f5ce6438780d085e175c48103f2439bef03e00b4459bd530fe4c89ce47070cfc58889248675cd0002f4d80d0579514c600c8adc72e971a9a168b088b170464f9cd9755a1914b223427e36feff8af7ea0b1a8c15824d9d23bb71f92022192203ae2be8095c655d65b2e0d43787dac82560231af5000466aeca0ac4918e25e661d5b3da8b57faf2a5c699d714448b5640781d18e5c39287cd2d2e505b078b9dacc1ad6a533b82c0b32a8d2842409438d27059c674e9ffa65ee7304baca8bf8eaa409e9e46da17cd4d47ee3514be0c747d9b2ef385b4ba6e21e769c1e2fb19f081ccceb3506b9ce96e36fe658deffb9e183664e4c50dc28262e19542a2aa7bf6a84c421644e5d7b581f9aa7779632db31226f0df71ad552ae86a772e1a552a0cbedbdaa9b2790139028a3a2c01141c0eaf9e53c3c76a61601de3c8b08116c05a7505ad95c6bf279162a0ad188ae7953723677b3891cfd74b8acfa4c50a2980fe0a2c58df925aaa408b62fe2f57e807110bf30f11c7eb8a13e2eefd28ccf1958b58a951952a6754a279fd867d449e506262533cf27f902d00f65654dad9209c31289ce84b3799bbe2d0d94f50472c8d37fd8a1bd6f64b30219c617c6ba0d7c1e714d6973f59f03842936edc2f3630998c8f106e4b94c51bff3724805331aad0ceb3e8af20038ec1174bb403e311d3d1f75c172e5d12ed1e06412e74d9d2da20511408ba192002981354d26f69cd6e0fe9662602f62eaf9d57ea6ea045a6478f51611ea4909c2d7ef2d7240ecea50358fd2240f8e7d9341776816a3eba3485d0b29ad17fbf6858c465938667a12e265f26430c8b8cbc231a5a0727759425b3ec8b2acf2ebf8228e8c7fbd1859f1c2aa6c1d5404f16db0801b4b687a4d4131b964f306251f61499a0536c05625d8c25b486e708eee933041619b912dba72406423b6b19ef4109a1b4bb0f8585b2c52aeab311123aec298375a6b8b6a9ecd1ba0ff000452105936101bf68f9703db4484ecb7a6653e20598fb5366b62c4c56e623a38363d5fe0007a039646eb7f488543b8be94bd970529ce4d3507ec8b6beebca10cdf2e0550653fd0386a2a89533b4aee9fbf6711e06d6ec714fb027e554a531b603a3980f57f57f934fdcd3aa309067506e7648f9d8e0f5b7781d25bd06c8df7ffc014078715861989dd23ca4a9500889dd52e83d7212fc723a81b04fe410453ffbed0009f864633368aa36b4344f1cd793d72d97b3585c3b66b1452111752e97f342e277c16a0af44c00c0b36acabcb343cddd32c1cd78797472f07e6e6cddf6c610626511e6c208d1518dab492558f06cfa9f2cab0a2ae9360f0a46e257d0f53f8025330bf578cf73929425cef490c176277328f5bc5513501a8c4d630228fe25f42bf6290af9ffdc35100c748b23151ff1b5034e2f1d8e60e781a4a23def0040388083b4c54699d4239fc4d1815d77576f0d7c5248ba11085cd098d7554c3de555213721ad06d21aa41117316d1819d9e4efb757b513c08469981510e3e2d0a03c269fa6be2863310ccb2124f43fd99afbdc4c0936eaf33d84cd0351d685777a04c34601874a8b497fb986ab7c95d8abeadb04d5380b1eb3577a6dbf3f52db06ecc497bf5f15d9ce2e6d3a06a4971fc418e3d63ab1d2f818b4ba82c28985e8a50a6ed3b2a226647f0966543ee876b9b6f246bd374de6ae8a015a42ef94c8c45bcc56a5c76683eb11887c6d1c2048fb43b1dc8c1b6b00483b6182e6bfaa4621c7e3f20ea0dc32f08527c786d864e3080974d3cbf42048edd080c3b9f57d97068b21c2a5477c6616d72e30c5ee51f8018ca23828dd99af7194d075b34c017608f5b87a8e4198725c7d0a2640feae86058d15dd03d427d27dd06a3fa536ca3aeada2613656f66c4abbe8c79a74f120f2619f3b00a8116059bb3378535dffd4d66d415cd1007a553080053170e702bcf343ed1402c5a37295fd49a6cb19fc1efbf793470614519925aea5e40c36a520633bd4d5d313f8732d93c5afdf1c43b2684ea62429546b8a102e018e1de5b23c5c62f6a5121003c9c91b05ec8e4d4bb59c60ee6adad9030e028be9c0d162718715931905f54314a950e3017e81156aab9a1ef0ca532e558dbfef80363c57046c71ae578a0d0654d5c6482e5dfbc5d26b34a42d43d731024e82aeac93aa9cc7a57f3c154aa3084e97a22201436a6fef6a899beef0f0366b988e5bc8fc4008d5c7d50f26d3ad9de7ffff65ee85e7c0288ca41326f5dc7d553e9087338acb4448f3fc6ac13a2ea793f0a7950b2c9334efea8dcd99aa643f4deb6adfe9e3fbcaafe4540a72da04e5df365d002565ba5aa7dd5a9142c02bb74b68ac94bf4d706cd9add48227f98d7dac7513547ea6546f76be5197c5293fbb4671ceb2060f116efa68cde6204b9a59cb01552064fc17da7f5cb848d42d7a17ae36bd6c99338a540f7c9fb2812965618ebf8692ce6ed248f161f90ede8255449f2554ff124adf48775cdd4bbf96287f9562c8b475f0d8e8c014b25804f8124c20a3c9e293164634df05edab1ead5d1ca24e3f61c54546cc755422376f26e92a26b455da20dcf89754d8d917f767082daeb666cc00ffd04f3087b03898dc8cd1ee0130ba0cb6b39e750c09c620ee83f65d28bb9b2ba58c718c87a22da312d06956e0186366aa56e6bdef7d38c4a8ea340651da9244541a46cb4de9ab7e67ac2e36e8c35910f8ff053f4c8ddd1536f86c153bba77c503dbfcfe71bc183600b0777707556131a9fdb2a6572cf18ed99125879f8f43531cf6a2802119f2bfe131960712df4da92db55cccc0b97a050dff9ee5217d913907fcc1b68360940f5f782c47b515a4fc60dd167b65504082143d6d0395dd0347a41ae3274f9f1129c25601991d56635cf5ec19c4eec7c35659af86908b84654a4585173fd8110e4869fee8f05ca42f95938e1f1e36a0c936a354148be4802f52522d90bd921722b69ad594716aa783ed0762dd2c18f8ca4272c6179a48e81af203b719bd3ba39aaf5171c275fbb4666aed58f883bc847c53fc7fd4e0092c15ca923a0a82b070a81bd061f56931c460df2eb4f2e86b158672d1d6e0933535fe8e2d641e643299de03bfe026f537f53e71145036dd52b40a5a9ba2d29de6367321ef35d9ef51968055c8df7ae694abf6d5f5f76460b198ef6b1d9b136a3e5b953c3f8d49b475fdb3e15968902d49efabadbbed83638c18e3e523b69ab20f902daae3b501cbf459d9083c886a80312b15f3997e70eb46808426ef9c9b14f9131dc6ed6eabf2d59d78e451619c2d38911c79d87aad7b4de3ff8834f7516c21be317858e78b3424a2cf6deac2307b30f626396f2e99f4130f5d0c6c97d1c478c86973a561f2dfb91485ec17bbf2fb31a57185911267c0139b8b105170c1730a425a1f1006560bba04dbb04f28cf0b637c22e2437ec62411567a431e767d5cfd09cab68a92c9598fe26920499e8a3d7f36db0397bba55ff40afce980e6a67407291e91684ce52dd0545dd21515100890cc7e4d5b8f0c9b134e09765a7a20753bbc3b7a609920b1dc85c3629c4f0ca8e409efc029195cf7afa16e1866d8f19c5f511e9f5fb7daf108337da1f581ec7828309aaca10fdb9ee71cf899437fdd5830d83b08d5c90f131fcc25b1ab801d5985a052c584535124a9684244c547bf1639622e557aa12828285af1ecf0bf1491fd5270aa779f373b349f982ada812eacb262451b13b965ce096b72ef150e45998933883c70d1371fe36c64eaf1c2a8b1c433bd60375cdf5e24275a1a9a943cd13744e260c8a5e7a41137576943c3690d8f3746bd307cdbe2ba9d6943c123ffd570465db9265798cdd2fdeb634dd82ec7019703fa52a9251f368a1b239699e752b4da6228aa029fef853c8cb5ac518e095064ecc17d45f4526d9fc5b12c79528c91801e090260e6845d22731e04f3d03a0c11a71b2ff7183f73983407196279120a19ed406bfc8cdfb77556b7991128dd39c7040f3bc3b81fb24453ebdf4e3e6228d09a66c19b1ff7084cf63f9574e3c57413ed95590890bbe681355811b032d8cd54223d6df44fc2daf5e90a3aa2f6496858d626128a5c943e36c21e1623d0f6b447f2a299ef27ebd6d82507d59d05bf560564e6488da86d7c2d1d58b37d7f65eda002a96e7986f8ced622c48c540f341f5cab31147fd2580d1d6a217dcb422e614ca93f0d04c3c742f37d4da1a84aaa695aecc5622163a09e80b26e5d6221863e8e0cd79b3d1ff2af2863de81d2b58faab1315d82b1ca173a1076f11f55527adfccd60cf90604516978d5480827db25518546affbb9bb72d91df545f80547d508bf7775f069e10d1a85c934fb425b73ac506f5867a342a6da0700273a71daba7c1f06d895a56c11a08fd9675693d3604b7bef84299a3fc58b3e2cf1a89826fb3140c2f4cdb93e1e9281132b6cfad5929ce14720a84865c162b44265a0402b41f878ee68906bcde18c2892a41e3008fd7c72fe3f645005ea1a5d8a3f937eaad7d774bdbb0ce2f00747b66def4044ee607799e6cce87e0452a7fed27b5f546c29ff055c286d0208320b962ff5dddf47aa0279b6ade2d6c5a67405404cefdd1d32d9823d94336cd12644cb99b6004ca0139c55c3b418100385c2c0b4de2927c446fc20118c3cf89420d1087bc32dd18a7a3fad1cd7d2444af6d5270e2848975e3080209fbeba53b55a0d8fe34ea2addddccc59c23a53d47e4a0bd36b8b4625372cc2e95b2597e74769b612f578470c9a87c536e24439ed68a07d02b5dfc584093d15ae71caea03df5df670fc0d50d0693a6ee822246a703061c32b4fa3a302823b1084c6f71d47c05d3004a92775d0de5f8efa9659e36372216b26bfd96fe0292b91f118aee69fb7b6fc314144f36deaa8a4c80538bfc17f47eb1e2217c24707d212bd9836ed1b467a1a758feaa23c46f97dd2b12c8af82a149b0f88f0363bf3b1434d95d0c13008102013aa8ba0261710a883927eae949282343e61648080b4bd835ba9115e34b17478ac95465ba0b4a02867c4aa3a993c85e2aad355df846f8bcb1a2543a26a41e2a2afcad406c30c8bd7544647ac865995804705d69c254634801750dd4dcb3f2de2fca26e594bfbcf1b34b264054900cd6aba1386c0447d343ebe0c5588e8a4ac5b0ce6f5acf96fbbd0195a533ed6d1ef543858573abc5f43edc2bcb8840b56b5aff9b945e994a8daf295a32340b66a3bbc962c68f160aa770758f1d72ec3a5c04542df58dac7d6a12c5602a4acfb354ea5e73f46f4ea22564dd76b4b6a92914d6bfa1c1afaf35e0c92bdc0e15584d05be4d11efbb07608e77c79ea00191b88c38886df5b49862d78e3f61f47f193bcc327cea3967a457ed9276edfde13c75121bbd2a45694923238c7325871067a47a7c0fc8f6b9281e7716a0dc6b2d6d42545dfd68b5bcd0e3e96e5d7b742deca63a082b6b3bfeb6b7a74acb64bd02026baf247349c1a1378fd3d6d2f7d2d1a83d005fe52203cff3972d9113a3340aed31aeb0afd2fe8ab2fd0b7c7e5a06fbcf02a1edd765a45067f37e2a1586241f4392b27ec14769bba5f97db1c68fe6e94f23b5305f9e79f99ccfbfc5278999c16885353bfcbb2a77f82832ef7b8e90d504e7afd7cf6e842595db3cbf109117c9c0643cef5ce4f8c9022b07272d671381405753d8ca82dd5d4963fbc1b60c0a0d79ff2c309bfc9ee0c3180702b2d004726b4197209298cef6222bafe3d3bb8ee97914eb433adde88baa89ce140ac9b7790663246c98ca6c00a6b6a2801037080b258540f02526bd3d4c59d2ace9ee8530605a4d8e127a2c9d7c104a5c8cc0d9f4fa659c2ab46a863b200cfbc24aba6c631e3021627cd945a0d035f25e42b76fe5e78e7150b4dfa3838f11bd46a0cda2371b10f41819a150731c66e40e4ab819453df44e0367ef4c4a46e4013cb44a256ddba2ea6b8b7dfbf0b2468d035f15d29e86dc9f8ee2be165239421b559cc489b26e785b1aeeeac15290c4462319858317cad7ebf29284ab1233a33249ddda6a83e4a82143444ed04beb437014017eb54891e2ff11df19842399634e39ccf4fa359e24b03f43158828cc3620d05cf3aa0122c2b1a3e63c0f3e73300115f7c6732487708f617973d2e350148913e22c995b90453a2ed6f2686db1fd135b764d9dabd19c97a17b566b7f24e1224bec45922f6c3ffe41f59f3fb503b3efdc1b027c8232cdf42d9b9815957fd9240ae74309c9556fa4a700fe392f231a895625a5a21f15798404321f18b1e2ed375c6be9520dbb8b792fa820e4d7c0de4520fcf47d982f38d6ca4c197db260519027cc8010403547cdd6ad162a81297a39321b1f5dc382bc632d56063ca6533e3c72474e0583809086b40ca1f7216720c0b832c0cc430766832fecd79185d0488eaca4aee299f057c89749f15439bdc42cfd76d9f2ab5e18422fb88e80eba61072c983831c08adc6bc98e8c8d8e05e0bd12bb8f8a160b3e6a1b8335229e054d7c810c8bcdf59d20fcd72b100e7002824c84e4ad2cedc64502b61df0172b1c0de2b9b01d723d76c8155ecce92cb5cd00ca07351bf9be0e30523b7bf724dc10ee59d705e213574f843d3152915c7968d73ffc1c47e2ddfa95264005a6b3827bc03d80510d138ad00ffd19dbf7a6a2be0f416426bb7107e32318b70db3e95d536c00d7de7563fd1306e7864c0a5b3f04392de5d4e003628dc10a321e366b141ceb809560ad68b8a6c0670f2dd0c7ddc9d86e79b186ae04fb8aa69b92e358770313f3c11a6977ab45230dac7ab12155bd4f60780492ff297fee9d2b8b2d9f2a4dcd8d19b2e28a243a2606584bcfadbc84b9c69803ecf4fe8e8970c3d8b44f2a193ae0fb32b27cfd04c2861d6836edf19684de8199e7d2230214e9bb5d16c87db97e798e00785cdd23b2f205f5c72ce1a5a13e9b35158eaf801e4c675b8a8d523a884683f9a06c6bb9e92be6de817eb9b99a89c5b72e412c5327c258373d18143eef4632b9a907c81bede724d83fb4b1530495829c09c44a904abf8c693fdbc9e521c9e5a44e37b6637bc11d32080958d966d1a86b05e8c6a4c376c63b99032303782bf8030add7646a5838e15b8e23444d7daa27fa832adcfa3b4a4e59c6af1cebf85320b5fea4020e6ed5655713a24c990cdf7715fab080ce0d830390e89b8b13f8852ba9a0d1207de4cf330b9a0506003629abe3d69d5ed72ff68ad38cab0c1f763e98df90eb8e592694d4a8fb91e4c9c3ae66f7206bb9578af80f617c4e24e5113e91ca86ae4736fe147fd370e0644590603083dc2713c72f76a18067249c223d242d0013d4b6255de38066e607dd24ca9d459fb5642e62cec034458c4c175cd3a9e22423e0468ba1113bb2a62efef3f9521cb5d00c0559e6fc2dfc2cabca04528df86f346f3b164da0a0687d041efa850b3a80d915b011db90c40ca072710a4479c93ba1d77a5a95356833980d4cfd13e68a1dbd8a48e6b9955bea1a5d8938e6d1b61169423b09951abe03a522bcb090c11932b652ff0d75d9bd345375469b5e955101fde35e7d86d1917fb90dcbea92f3595a7718444211256c7aef1007910a4f06e80b29fe16aa8c95c45ba6789e3290b82ddda52c94fb830e5b41e61ec4e4d7730d1dec5ea8b8065f8c0c1eb106596f2f1d6c54f4de4717bbbd2c4be22001d50227c183ee9c6a23904365f736eaec87255e0842ebf543907e9062be96ea469062073c7de20eada9824d30818a9582816b1f5c5778306ec15c7011d0497859bc87d6cbc517da12759efecb706b4c521c5607f5b7e56d372829a2692a847eff585ee0329dd1e9e5b49991279ac774ed822594d8c6a503c4ee57bf33e870d9d75722b32549680953e837d24cad2f36add6547373a2b12349698b2a1836d7783772fef23abd4bd35c1097cd16843d0c626519e31422399138e2934c460f74065a663793663dc314120d82ecc4a71066bc635de3a6af421c4004b246c24d1093c8f3ea843f1c1abae6739efcd38cd3a092e9fd235dcacb4cbd0f41e25891a7ab4b309d22dbf1196ab18ddefb03b8376124af4a98c3fae366f3e262236e52202949ac91ff7a6b1ec752d97387dab2b5edddf2849ab3df57a86e225997076fbc5452ad4cd0d875d895aeff12737b3f98883c769321bd1526295e7305fcefc83e1f15feb1e28cd1549a5eec19e1bb6e42204888d192558acccaa9b8996bf5e591e72f844835678a20ff8e5773d14ab16667393d5b3a8834099837ce074dc304180cfeb1117c4c387565a486742da32070eb2fbf126a9485c8c26697c1a4949e7b97e16438a513f73303d5db9d69d0b872d6eec0ed57b56757862dde1f8db64ecb15f24b173bf6a613ff7df2f793ffa11c59bc8830d1562cf7eb213910ef1a51d7f69ec00bda6e870e62fdec3dc76f7fd9229a2952e4f784d37824bc0e5864d7ab60b61c857bf0ebaa5844cc4c9beffff6fd5a9f1af5e9fe6aa595f0ef3e449359157312641b65536d9f0559e57a00d6c00f0aed7de68f83034d0e8c8d8b92cf0307808ea994798527c9bd970a01fb870d9436680509a4b6b9bb033aeec5c18f5f38f8889559d422b0de2591eafaaacffe22a572eeddd24bfd07584c1983c593be6381aad760639d622030d62e8fde78f540cb3aa4185b391cafca46c11f682b5b4bdd7715aa1893f6763f89c3eee4b125ca7376a19b274942fed2dee8c6d75e248bdf9dae2b4ba38a44c997caa03274ab46007a1354b3861e4df04c04e126e67064124d997b4ee8a7d40140b01b9f57a60942415a9e9107f7c84be63e910fa6f0565e7533befe6b3672858223d3f593efc6725a310067b4193818bfeb76707665c8749fe084bc59ae92cd6f5461019ca2382b72242747b21c1d92148664a57eb0c21946a4b117e3d23015c8a3c128865724a37517dca8e0982b0eef75981f5800c4648274b130a2debe454948ae81b9b19a202e703799594679bb0056c56c0984f3053d857acd0842ca304739400cfbca2a2fdb64e0b759524b380d3fefbece04cbc5ed5d0f01df329a51c3d2165ea5a721428bb3a638bfb98e96e599d02663b87a36b785b14d108765f8c20b786f9fb75ad4b728ed31526d0e584907adc1be1d9814aab1fb5609b8fd536689b0d4dfd2afebd32f77732ff1f9c9755dbc8d798314e4dc6eb4785d3cf8a0e62f081fb9893b8c274439d1d923d74bfd00c555b053bd951dd4056f0e16c537c1aa852791863ce6d859bbc4d95f4930cc34d0b3c49966ca584a63303b1a622a8d2385bc1e34f18413dbfb82d59ae225eeaa631efaf076fc9620797acae6a2caa9a6ffd3a568eeaf694c4fb324c95c2406b90202f66002aa803fb23c4aca0a07a84439427b06a0c1f6208df8925727b193a10557697a95e0b9c7140b8e8eed2cca00a166bed0f7c4eed66451192e16240d426c67d73e879a7c53fb705c18aace53aab5a7691eb43b72474b6e2a0eb230328136511d1ff44458d93cb0a7ebef336cdfd51568cd91c487530784d8680d056e5dea255d25f33d9a5ea4f9917ed89ceb324644926d42643ed514e2709d48f974ce32f770e8eae36f487460a354f588c22c5718ac30cfbca29cced3c3d96d9192782d7191e30f893481e701402dc9937e9d7d38d5a6c9f5f38de6c42fddc9eaaa52e6f55582ddfdb773147ed69340b0b22b36abf1c2cb35ddad32044f8af3b076e57fd2b270c202a42cd21fd0b1aa5f0c38666ea0c5af694c7828a13a46387666bac7e9c0e0a6cafa5c0c48f1dabd3e4c1f1108e469250fb0c22d9a3f339a704dfb2ad9e2093deba074ca8ead44890f1380c2df421f6c60d2758641d968f9f2d039517c848fe60380c90d45ddc55fb8e000d8618e510e8f99eb3404446963d4f20a882547ca9b2da52520ac0836560e72455e2b3216c6b48b7b61cf88bdbed02342dd29cbfae84c5926578e9e409487d56dcd667121c23e235a1818eca81d3ab01c8151f2cacdfb9b0500c04f418b4cba00b69d0ab0d1aa573d0611ad02c081522717f554afc0e25387eb1957cc56d15471a7b30d1ca66d52e86e9f90103eca387ee61ec7b96c8a22a2e7a68acc865fc67b5a9abdd592a0aa6214a72997b364ecd176a0fbcfdf923ffb19bfaed3c6c876953408d37e27cd1879f345d640a4c426c82c17dc43c3617674d668ff0c3ffefc5db9d920d91d6882fa165704d9c4d8b054e0bac9896aef4c2054d4b75876b82fbcd06a91c188791d0d8bb1bbdfa618a15774442d9efa84929415e37cfb1fa712319c6c9a128e7fd2b7422f0a4aec91ecad459b00076cb72e5705f1b2f46b9f926ae3733209baf2a82cf70a21ab72ff6b54d72d5c1818fb52141d8b7e1b882b7f5ceabbcf1861e41f324442446e63a758e3cc70fe618f1277a05e5e39bdb085e600300f291fd9025d4a36c4187441450acdb01723daf97d18e50a5cb475589a104de1650ad8ba60e89a861ca204b0fca65effdb59c7c6c0d660fd4abec8f47054c77094dc4d4ba550e0ceabefc6e1c049cf09dab65fbb46261fa437ea131ea0b8e8cd74327396941d5512b589fbe8f57529e006cc293ad695cc9bb290498f6b08479e7330c7d6cb15878da2cf7b511d2e9fe5d560033397cef89f388621bea57341119dc597b9e8bbd855872958864b5cc716f2a25602b6f6ea83657e64fbfcd342268a377003544d26432e53f66ee8be2132c9f35f96ad9f210def7ce53a5a910af284860ea4114d17faf944440ed7a1e1b40f32100aeea0e22273d72f34782d425c3fe9eef72e75fe0ae0ce3543f36e24c3e58ddb8c29bd55c068453493ec491f29643444ba2db1ffa6fd3843778da7d39ddee7d3f36b15a3582292a6768a4c6e01e8fb4bf88635f1f87155f7558949658be0f8e85b5c7eba1330e16bb316766ce93e4b4f22726bf381785d746dcbb8d4b5395ebacc4655e39568375a845e08637da3b2c39af3821e7841a62592507db34bcac34b0a91ddbfc4dee6c360baf59c0bf16c77101fb4dafca567b3184ca226a189d90a036c64c2ec9526c40f7af0aae755b4361c2b581695a4d92faca677701f74387520a10dc7777e56497287ccd2e175214f0f3c7c12c72ca858005857b474966ad1ffc41b0cf1a3a562e5be867a97da565c154ca443eb2a395b30463bc7471c983bf01595da433140008caa84875ab5ce3b60ca5bfa73a6202d5e778f6115120b343e40630b214a59ec61c99796f21f3f211bc96b0585d07222645d0658372339bcfc6d4241d143e39fad108aae3284d9c12d8ee22630f9cb13e090f2cb1dc3ae7bb95b081f3e7cac84275e128b3937e4ad9353ad41b80fc6ac6dc96dcef5c7ad4ac20e85dd5df7630207edac79990f140094f257dcaa8e57cf4b4519cde3ce1e473ad40a2f7dc0fa73918ba6beea83f7a2f9f93f274a360d0abc6b7b561bf9b862054d2b017ece79a1d6a26e820120281fc2438d38b6ffd48f8eb3260c587a8e0eaa5e67671716737330305b9af44493ce4f515117e86b33129f48bf727a7bc22c9c32680d312e8a0ba1913dbc9ad2fedce4a99624ba8a2acf175ece4b8311ce728accc13fa1f1d2d6b5f49949a97242e9e80b944e5fc0ccbe2b5b49bdd951cd3e950410d2909ff765e4955438c755d4de29d16921b22a10bd1b581285f71e341bf6e7cf8f0d2a5d4d29163a09605586ff9ca5649b275470577bd4d8f2cb96bf302dd2412e31b7d96bacea103017bf5e1b693641bd893aaa4b089b3f1869bcb1e4c91bb5fbd24bfdc4c17afced651bc7ec79dc582a40ba2b2756a16b289db3ac3b7ce6e4fdf9c5552915d08071f3ecb8f7d7768fe1261f6bc3c7c134bfadeb4de6320e983135f3ce491a54ed26eb9cb46abe561cc4eda0622a46483a4ab14ed0a706f548f343ae501e2b48292f9ce840e0ac3d6485ae936b7362cdc0670d5359a2d8047e4b5da3fd3d5ac5eea45253563a128e6d0d4f03471c91793145f80e42f20178738a114cbefd9808ced2490d4ef25b1140dcc9dcca21e62701106880272129e6b087278e092248175a6ce995cf95516233a0a39305b1f3b518ff33028cfd8898bdb6e457c36c799bf65424533ab55c3d6852849f388f3966845d4a9aba041dc4fece20da6af7f73715a809279114ce88534211004686f3cd8f4afa2fdaca521573baecb289adbb7e06c2baf8f013c78842d8d7c4a042691d2e2e3b573aa64dc76099694ad42f5eec13b7feb60cfe5d3eb5548112324cc743d291b0c075c4ce5154da1387ebe9841fde951e740ab863b3298fb0533290ff50d94ff0bf3d6297e53a00bb5a1395e9645fdd8f05c7aa04ce50624321b9c1a543cc3e435fd633b8db0f539d7416cc4c9a99032e2345916973094880953a51ea3238c684ec4ea85b5cdbd73a1e747cafa2090503073bbc991af0be9986475858a73c587a6026e5b128e129702f69ec9d2e08b4519f77d4e518393536050b7b91cc46a1cdc0c8a57aa051e91a3dfd1357ccaa3ce1edd6b06cd695d0dea4ca7ade84670085c41b9611dbea8e86a6cd5957111b0aace2a5dea07f9602087f2c31a84d6bf7ef5b1cf17fade4da9d28d0864cd821d2d84f3d31f79bcad9955dd17df9f8ee05d0e99a0553b844899d30030f668f1585c741976f63eb5bd968a204e1aaf0f0aaf078df84bab693edc98a65f0d1e8adfd9a3d5f12b5fad1ac6e7067497fd2adb5906b619517c1f6d746712666c310be3d754a514cf5cb6a2e05bf71c2177a56b9024557c6f4b6fe616ced21d660a14c073c7a1378f1ff3340ab2f34e163474caf998617728d02d3a85d88d813bec3b7e8a0613b7ce550c2a2cdeaabe3eb01ac34ab270037a0051a6e92b052d7e288e018ffb2e8195dc210569dac217dddc2a553836a405a1045d91cf76abf8e1142ab235023e069ac6dad524566e96cc0f978aa08c5808f15aeb7eca59eb237e40dd64079ddd93a2677f4ec73d20b4ac131e3e760409fd49405c1daf439458912d2c3a48133bcc96b64c3ba2d0202271db9b66359320e626bccce741e4e2b05a858852d00c458dd2d4143b92ad58af20651670ae27ad8949ec337437a7ffd5cd3997390e026fec796a92595ae91cd80e92920455afae858723ab93e093fd828f5da349bcd3307719e59d2a679d23729a028a24cf56ae7252deac9321441d8a1982da950344e556e2e7f09b68cb31c6554c5e1f80de1fc5478ebadbf1dd4edfce4d224e1b1438fc5d2b51aab198ed333a5ae42c541e169ba1a0323d36c61ded4eeaf266760e1954d756a28fc3d1d86ed39df3f5a131e5d0853d24b154adc771b7e892398064df92338d0b088391151a49d5c88b37a8068d6af5422e87257e4494f4e093c51aa88ce569146c4b2a271d5cecd53c3fb6f08420c7a4e7194b63188ec2ff865e1f3a56d96deabe229871d4a674fed25427cddd6c4546eadc3eececb40ea34138cfd456dcd4286f84ad75cf2386cdca1d93f13b5e48b20cb2310eafa4ab3511604f79ba993b6e0cf0b8e0a04a3cd5cdd4169f81e51c001879beac50215d080faeac705453840bc7cce175b2622343e3975ef47364c05a3e860758228079e3792690dcf9ebfaea67013015b30e825d79b0a571c3f270efe2fbcea2c48a5f26d150bd3ac11bf4ec004c10b8df079b339df081fb34ed40db1007037e56a0b92ad50f49a797183bc6be6bf76d614cc7d757de2c380cfc8b80b931df344837306faa1fd9c70f0de3b20c0e05bd017f66e5cd9b54d16fdc6b94e4c25f5107af31d41038723ac34810b1e617298a1b36d014cf57ed12ebfb99ac22b7deef0c0a7a2aafe4630a8b5f79530b0ddb3be5e698ae46babf6c82f2ca1b0367996ab48aac973d0789953203fddc5495b2e50d105b281ff7e895a2f230b8e5cd84a524b410e0e6886fe66922cc0bd130f273ceefec00470480391e70e4889c59b6dd2f07941182100c917172e3ed6fa7009e1c8a851c0ddc8ef074f533f727a96498abe66c0a532cbd0b767b388780e120e21be48dfefd99b5c5a9d1ff122309419d44d8ded0f9ff46bf2725688f38519f6901b91ecb5bb3e14104e5ec658ed3c99f42a478134c88cca373e96a0731b6a993b1e3754ba1e39b64fb795a80da76c3be0ac0b6e46e4562b71f800bd6f12ec59b6b27d2b5a56aa2f307ccc2c92cf16dff3e5a0e30435c31a7c0aeb71c2daac77e6fb26a166f7c6308eba6b7057adc83350eebe57e350080e2be8cfa5f6280205620d979c146b3e50923a21bb3fe9c2af34a6a7144ff8d248d8deb45f156cc4f42984476c9cc62051a07264ffc89b3ca23dc310aa955d54bba860c5df66318a58023e09e5c0750c4ccbe173ec50bc86dadc8164f5a6b6c7d75161c93b8186249a15fdd62864407aae43fd08241f202c8c49f4b89c980c9526ad65c5defe952134b51f6ac9a181402041d4c860e99b12e7ce08a2cc9fa6628491bdcced56c7d95415fee0c5c381a7b4e65860022b02969ecb1cde42575e920d9f604a50f74d63dc59b15fed88e02bb24eff823115bb39bc8e4fb331973984d2bceca08bbc84a94664f5a90919134d0570ce286d4cfe659285b7634e8b5dca560086e149b7de94cea4f3a344b6d94a01ab63534c9b327164575420206baaa6e4f92099c468dcef5006c599a149007a045f6ecb7651bff0428cee54438f1e32bb427fd15f6b9470fedc7c912bdd47973aebfc4c92665e046b96330f3f478f1f0f52f76c448ebfb37c308e04e71f9c5838861ceb8740bb8e63fb173200a107ac6d6122c5de77e66f6b9b70468006d3567e6b06875dd51c503b9fcd5443fe06b9de6b6c3ae58787f2246b79d48240fb276d7bfe3b3ca1afd83e7781e3672ad5e77afd06fca680cd64d1f9cbbf2d0f2585aae65e97c5aa7e21859244625b8558708ecaf21688c7bb6eb7a574d0d8129dc41e9cf08b119d5481775a1f2783e902b41adc816614b3fcd0323195623e3bad477b02c9d9fd345fedd5e0bb42950ede3d887db4c029494d3f65f88fb0eb526143df86e3410cb3583a8a3037255b090231dbe5a44f47dc05fc36c5d0768845418d00e9425ec8425b88158feea4a243e0e6d93b84b9d5c1aacfa4a080c4eabdc4d08552578ae40610114c2bf1c710235b27c72f02d5f65e9bf610684fb7d0243ab78c88d2d2a9776f2af49234e095edaaa7a4b931054a17ab55d113715e3c425cef469e26a1d1cab761035ed655db5bafaa744da45af119bdfbc55280a43f7086a4f2ce56e62c65c966c9f7519c72686ab9fb9c6a119d28f5d2843be79cd23039d6cabfc8e37d3cfa656c9d742097b7bde32f8bd9aa20463d8ebbeff43843b0df6222e19af08c1443b3dce738d6063e3bfa2609c55f6faf2e50292152c2825b7c6c00ab24463cf11c3f66458c33528c7573b1cf2a26a2b870f4cd4e9c161062071b321b5bcf753915e50c201a6e753e7dea2a8b87801539a36172f1f60ab950096b3758abad76baf8511d420fcc77003be97be93d8616420f0bfe1b73a445b7bad52bec3d7ec61bbf66936abf2819df079b749711367816017a83c741131f9067dabcfdf0b9380cf17dc2ae2e7c6ed019c3fb729a42574ebdda88ccef9a4f9d9f4c8af96b4674cb9a186e1dcd9fd73a00e2b7463c47beb9fdc10f2bc8449ce0bdf6cb0ef54f0177ec8c09453bb2dfa1f52ba6155cc2047f906aac440054006c0d9fc6d2c6685266e00b439aa208b1dcf3bcc56ff0768d39aec4c99deeea2b5fdc7dde9cc9365b86a1f7ed69c78d8160cd8add1434d00addb71d1745d88d51c55bd0d6c3b56e687609609e13a64cb15b387768402266d6f60a9cb9ada65820ef68841f5433b226be292472cea0e3dcf897b7ab512a9eec2ecde0110c42f778fc05ba0b5681f095f9f3adf8dfe448e48c7affbc69222926197a3052996a31607a4ca7565dcf08b0c589b4dce1081738d97933f43d8cbcb754b3df77eb23601c9a95804a68eee21cf57909a000404301cbb857947e7a5801d6d34cc7204c7b97e053cf666a17568efb8c8a493167a8a16403e9aeedec44d7555aca52b17c48290885133b6a06b5eedffe27532ce7610e4c4e5af2c532f4cc57385972acbb5fd749707b6baf6d101dbebe05f25822fcae80c03b55153142dca701150460e7255019565c6654cd8ee7fc21b80dcd44884f47c04c8c2d173d4c2f961aa65e52bbafa7f40eccd5866b6642e0a3d1519d54223599e0a1a80a7c2c878e7481011ddf7421485f878b70050b0ca433829614aba6fc4684b92b8dd2ed5811cb7e9b7cccbb0ced27b4b4f8281d038f67caa1d28f71a6ae4e8dbad4a0a81f0148a1a0f399a385a12a1e7be2421bf7f2141425548308edd09d3488291862e1ede4e17846ddb502ebd7e0a4c750ac5da134190dec44760f75c1535408e203aac45a9ca2ffd80435453d4f775809907ac4458c848accd347a75cf968a1f772464d841181e891499c4463c9a3f096859ae75ed3960ca8ce072ab2efa27aa33615aba70378c4eef673ee3dd83d323523fd87e1a04f749371153100432627c44be57a77e2ef8cd2dab28def9983c69c89d1ce4768c001e63c76bc7c04505e529f7b76c58a131b5f7a3c3674f491341437e82fbc17a305ac7b1c1108c5b3ab508c58262c37ab47cc8af4470ecfa52738268023f20dc811bb3f6dccd25ced0022418c64ab7ec07406a3904c2fe44d738c79bad24b8adbc923de99158a46140c1e8c51b967d093b08e58f6be398729a93ef166a33f261018909de2350b138c3524e33f014cd93fe7403401a698ffc7d0cdf498d042c0e0f3c21e48f88c4fbfcf17d6c86c1f3a0d151abc2659447a369be4aeda8b05a487620a4a294a10361268a265e0f2cf1df0c94eec190cdeae168c4cc4939001b920634ba821c1000fb5f303e85eb5f2cdb18ac403e93f4482dbfd7bb5b4a2db01bba55ca94511c8370aa665733c1d5ae44ab26be2962a698cfbae79e973a758ab07796598b753fe286a562174c4c7ae031ee7a5b54249de5e6df48edaab489573b41fc980857f9aa38692030683729b23e0200277cb711a9ffe0394b5fed97dc9a0cbc92f39241b756d74ffaeaec92fd6ca142d3b76461d2f0e7886fb7597048e521fc30be940e7e50121e8383b3ba45731adb7796b38f424dd8ad540178ef73022b57feebea2e0b514e5e8b92ae2b4e5ddde424a171d8355a280c4879321928b17ff1f8fcc7c0e69da3d82bcf45b26d38fd83ceff83deaf02c9e34b78fa9763e700089a43f5e95983585f50614ce7146b756ace87273824fae553d175288bf213d2c8025bdd7c49ced150d9cb81d7b65ec0dec191a9a3ed97e0cbfdc8f11ca85301b02a10420697a33bbc03065c8d86f32d27de6de41eb3e1805dd98224f1350091cfa9a77695e3c9758e6002f2a063951031e6af5acec39bf7db0643fcd2c715bd025063f0aac4a94b85fd81f6fb74cca00c9242b3f714480d80553b283c31df16d042ac61747999fb9d90cb50c38889a59bf5506a523cdef9942f1b73782a9e691542fbc03a149353cb0138dff4259f0329643bb9ff2db1365136ebd5d0df67dfae03066eaf12c11b0f772ff3008b6115b25ee58aada469af212ed3b1c7a4d309de6fd4756f629ac998e395b24afd38d9bfd12ae10004831bd90e58d09c09f38a05c81d0c31b7a20aeee59b70e5a8f0d959bd3c50faacf8b18071eca9179aa5452db65c25f34af0891410ca8e3d2b3468686e6d1d3a8f75819da566e20ed45de548ce29aad540c33f58135ea1e1123a08128caab270db0f29198fce6c70eebe158135151f5cab9c9cde40bacc513368f80a1fa2023ca1964fa23da7978386e8d7d9675032d81e5c001fd96689d3ad1036e11ec4ea2664214d23d851a0738107ceda2b3498bcc4befde4720b8393ba83a01e5662b076bdd023af5737711ca6a57ef4885152a30af93cd3f0bda3ebe5ba174490f7897c7b60a1486b556609374552202a0578700f998d7b5549a0ffdcf8e8e0c0db0403352e81fe36f789084e965e23fb45cedfe6ba66caa3d796cd7e511adaa71fddc478f8e9bd8c7f0001ba78e6902a36fe75a54f0831f6f7038edf32acd36008f61f860c185a5fd87961f190ddc97c898fd61cc0db2575d281f6b2bf8a1e10229291210d12a8f0961580088fea20946ff38a77f389f081e285412a0ff47b5427c16896e6cd08f026174cfe8f8a3675380b2602c7a73c420a3644f1b8bdbfbfe46bf7ba42d045a9f9540fb71840d5cceff8322df0b7f405c21a9c29bd6c34929bc23611de0f73b85f6cdade86944f7442896b4d5171fe584c07e56d560f288fcfd641674200f2bfc5d0525ba1ebd0c47b1cec9d085873597777e24e4847dd0c0d492a1319eabb6c93709b953866c5df9ba8fc6065757f84dbfcd9eb079c5234b8c028a0a47f6d0f678b11c804ea1238a442369f2f737fc0edd7249b80d47bb95358bbc7d1a50ba18743c5500f03e0abde4cf909b0c772cfd5ee871bcb49e3c608634ce25f87196b70fde4166b6783eb3d505cc2c7f1701adfc65b828c2cca30b6b10e3c56540b59ab6a2986602d873b3eeb09c121321c1213371247c5bf78d33054e4ed4cdfe461815e23366994e335bbb38c28a2e54dd8a363950649b8fec7fa0982fc5c7d2b8ca45fccb3b5c24b8a3a33b0a6cc2109fc58d0755d4cfe6a938daee4c806397d4b7dfc951dddf5bcac30fc668a1473348f2e9ad1044ef908bbce54ab63951b65c12cea58bd5a0d2f6259adf8fc1f07352f4307584f2ceff1200d104cf364e0e15689d6dd046214f7e4e8fa3746bd1a6f4ddbe6de895074345051c8b19a48f0a2c3e0f376ef72fc43b3ef5f6b47c10bcf7781f44f5f7ab9dd65e11bed0264667ad751ec2c153d0350d4ccb84df85bedd0af28d99eaf345c8fea5b681263d109b850401a26501bb9922f73198ca6a32c440f64cc55e9aef0bc515f97110abe0ae28efcd8e9500fa217573f5c734dd70c310f7da781cba8afb39cf33795d23e0292daac5d48b8e05584d814af2e8b6e97eae780127172a850a7790895ada9899b5f00068d3e3feae20eb2b5001bf827ceade26b58cbe4e1330cc80894f743b7ea2c6072d44c73113d1d6d7a082cf8e3da4ac8374f532dfdcff206c68a305cf497150322ba528588e74253ff6d7bf9a24010c4b94584d3894057bb6412e9aae9d4163d00f8a923df4f29127210a27df646b89df86cc57a89c8694ae2cbbb349a642fb02af9ff3705163eed9bcf050ff59b4fb66f3726d32472586174553551646becb3744453ea779ebd492a5538aac9bbbfcafbb9b0c7c47654478afc2fc26de9c96ce4d045f07c9f0bd8d97ad350a3d21d8620288750c883b90626545d85d35ccaf94bec8f48a4f934e680fe70e3e7e84a6205b8f472d9d28f83a5353c16ab379e50ff3cc936f3083be7aa35658f6ea37ef2123bdf90b0c1fee06ff68b3e6883a59aa9a882bcf61183946321139720ecc669b447daa90a3accc25ce51e0802f11f914c56f872a8855cdb0eb9eb50b6c2839694ba2fc81e4361716fb67c0b38cbd176b6da22d4ff25d7ddf9188ea075e9cb256646cc01e95338e2cbbf59987c3229266bb67e63fa0cd9c27aa0213c3206239e10826afb81ba27ca0347e8e4a727e262b870851a139ac1a9d6ff039c00d1e2c8a481f0b102fe3e9a7ec3c303819a12b5b5108c59ab3747fa25abf78dcad376b654a7f2e7a4bca6fd79ffee2d1a53d09cbe069c358ba2fdcdeecfcfffc07473b10e0f9ff302e5065c8114fa9bb0b2b944129abf32be24eb3e2ae707689e9853b12ec6f5acc55df203964ca08020f6e5b44c3957bc3f658a051bdb9225305233487bb3ce6e310171e83fb8be463a3c5fac149ecdc1ab2ba80b776305f22ec8bca0ca041ffe62edc2a00b4f668a66e6158947b5e507a05cda398b1ea206ae03804c169a5d92d88eb558d8a620241959cadb97cdf1095004f36a5f4b2d63f7cd068cccb0314968402e093bbb85a1081c14c11f2dc58db53e6d0cbcc212a39fb643e1c13920a1b4f2dbc938b108dde0339a55b706a2f3e9b9f87da1a862274d1d482da516b8d0b5597b63f998a0d91d65fe85bc8e9afe2c012f956fd03788e516e1fbb994b29f93bd50fa7fa01bfb270463ba989f766d167497f635d7f144d3a4c926172eabe60fc9d6789f02261dc641728946058f3e5c5b8903b2b6c7f4324a041da4b401a9e0b3d850357357fe6d142af1aee2bd88cf52f1f9a94a2b8916acdfda944517a991f5803177dcdc21126507e2abf2b7b98c1db8f9330cc165383f406bfb74a379ab8a2e662d67fb2cb21a6cb0f836adf496a61fed444808b1a1440088fdaacc9cc6c6a7190ede8657d74319b45f43ee9af2ec9a588755e2c31832b854e37f7f4988040f2b1f1db4c0b9412a1df9fe3d4425b950bfddb14915929dd2a692a28420e20dba13cc33e33b54f478272a1335b1a93f2c7fef007213b7f82388eacb4953aeafc6a79ae267c856cef733598be9af5eabc7f23ad7228c78c9bc4dee1dd5659b284b33f66adb470daf9a36fb369ae98b0fb8a545dd62329e094ed1c4d2402c3790aff1fdc643d0476400dfaa1fcd746a3808284441ed606e8a8327839b30e622c91e53e71e4116bdadb89f3fd5067f9758b75d485b38f1fbe3b0a723c6ffa96096abcb7ecda099c7f3553e87bdd82e67b508578c2ff5b4e5697347327b092e8d462fb796c048c04747eeb7d4f932115ea6508facd815facf3b916c898656b4f24a04f1f8464430dd7534f56cd3d839297df106fcce8c4fe2dbf75e34d552defeb7e67ef95238d36fc06f2af99cbb8c04beef917f507f1e5d353e1da93938c3d886373860d5d832e715ac78312412f74e61d288618318552220af7f34dddaed657431b15986e5965e132a14bca8946b644b01e8f5d32f63c5c35b771a0959440749e216e73a78e4f96d6458cd96d31906bc801730fe7f9580d6b86247cca2a91e23a0ff7ac07b7a1b40f996437debe2ab979c79cf189824359847de08d8cceff89c054396f0642ccd24bc0f9dd78426672397c6cf506bdd7acb41ff32a865dccea571d0470449ac17d3834d6bad1e3a4b3664ce570f90c86d80d4d5d8dbeb60f1f32cefc0cf69841d232803ab3423036a5789311a22152ec153258fb4d5f6114ed1834eedf72f9b41315a291ac8b3c8c32eda6863e47d9530ff86e12eff9aa35df7f03ba26d2e145e6fb02fb91d8ea05d514b66cbaa522e460709c4d7bebd35efe6de2bf875c50aa6066a0e5073105f8182649b80ad440265add6d6b6fe350201f7b53f6cfd9e29e85d53f098b6d5c84680b27ad5e91d93c5385f76ae84b7159410747f4fe3cf6b48c31b970a8f22394786f36aea1df21ecad0e33c701e9406d9a5c25dfcc5ebafe61a347e1fcbdef3fbdd527509102c2d6b1555efbe6e595ff74d3023b6d5a937bf2a0b0c209d117c994c962afc03cd0082770d39850996e0c822f6d475b1f18b622c714362091bcaf59b4a02d4850bcafb22261228815892aa9e055068e13726775be70d5efab935f1d2c78a97ffc19ba72c64a6499465c4aa0cda8b3db4a60266ac2907fb3bece7df3ba73c3718b8eaab9fde42647bca52d6403f3d217430a0077251cb9acd5933b6403225beda334724ac0be0a14d90c9d401965fc2b9fc5df45179f38379283f565af8d5cc008a67b3a5b9ffaa5ab3b29a61fbc813c022d3fb634270e7c5ae51b0d89c181aaef077f5a07e4ba73beb35c2c0cfb66104ecd4cf565f5fed366c70ab2d86804418db929ffd904604d11721f956964c92efbbf104833b5ff60be48b5f480cfb4ed89e5a4ce22ad116644a4454e91d058543c54730f6502220a93a567f2592ed85b3ad55a053c35e16d38115fca940ec71786d1614de16eaa0e43557846b957453f9c2fd12e896cb83e735dbab5285271da036bc08b9b1e3b57ecb4dc2415e93166ea587fd38ad7b2170e60163d06ebcbac2e955073db75ba3fdc3f9570541de68e906a7eb03f8aa71aea04d97b63c91ec8faa1ea1b9d87bf011d661666c2fd4dc2710d6c5f58e842c081e5d6236a8329bb25b319c1aa4cf5e6b8de067cfadf7db0245ea9c0e0e5598489151923ae4ac3aabab1361b70be3cb6b6bf41512ae329711f37321a90b6827eab24c71019677289241288546b426d6f13effcd9311c2eb2c2bf5e28fec55a34f0e16f861bf460e383221e1dd42879936d047a3066f9e800dcab34a1a045299ad80eb11aa1e5552a81b2e04dd9adf203befa8acf7bd0a5ee5fa521c1a3e6955195bb41ac6ea8fe4e796504f0000a15d51612ee56ea7157bd0066acf973dc347242a9f54177bb4d1a43d6de3f11893ea626eeec029eabc8890ea42b2c05388ab54124ae81acc69c63e72958a20f42e76847da8d2cdad335a1f00d6278d0108ca7a3c8868c7e9455c7490dae0475eb8646248f8904e09e9cc354fd0875519ee14889cf8b6b689f3dcb3dd630d599cd4331a988dba3b89e2731275ccf45a2b245b8202d3eb85b83950f5c25952069d06d4932661c049a28e697cd45e80c66fe60e8a5a98ac67dbfdf96af64ad000893a60e4bee6a2bb01c5eee5da1c320e6eec974b6ded3981a9bb6abf43df8c8ae2ff5e07f4f52dc3cd3f29cc3184e748e580c2b8b7320c5e01d612bfa2c409af73e8b3cda3db38aba87a34260affcfa4e9c6ee9e01dde9f27bad5870bf27df9b4e97170b8cce969b6ecf3e90db37bafd5b64d091e86da43fd52ca8eef5a5ca5ef2f085f1312821b10c67d3ad8bfa8ad380985976c3a127a1d123570b21a4da0dbb94b30c740ce2770e21d245d8eaf5d2491fc02dfad9f945e243c1cfec4200befa9a77a929aeba909896f09d1b281891158a312edc91eb75db12bc12d05cf4bea847f8686f3aad09fe45525b7f00153fef0fa124649674db7a0766fd47766474cd4c36b6cd7a2fb9f8daf96c1d7a4cd4abb708facc010a0b811e7d228c731a3949d01efb6211129f1076830314aaac3df61bc497edbd856ef2f94e79f269dd4bb130ba45a9a04349539c7c8a4bf546ba10729902d7c022f9b8749b99d648ef8d17408cd01f43efadf254011cae4318045dca3bcdb44afdc7b38d54fb46eaff018417f7082b077839e1f93a78bde5746e70d5b4040420a918807860b8770396d79b6e9fb35deb0368f415ee3a0448b8e53329caf9705ed10c6dd982aa864bdd503ee5e588d738da52fe6e9dd50857caf373ea351f8054d29d02e545420d5dfcd55b1e3bbacb51f350a2d86494e787ca8ecb211af458c44a1eacc94b371ec6db04688ddd5ab223835eda5dd9e629df779420e89f2b48fe0682a8bc4975ab98018f4da91d1ddea7d0a9f2a2413f55d6f21e91c81242537df4ae7dfeaf2a6b409380d1b2ab65325ae6a68a21526201c7e20bea1b71753ef5ede7602df523440f8f382b2153114aa7026db5095411ae835a6de21cd7d2cfb922a0674373dcd93083833f6667ddb26a30f376e39603bd495780cc8ebde515e8c047c25507c000ff996e68afc9832fdb90d4152978f263da402f042668f4d10ced7531f8b3539c9d323d1ffcdab1c4e7c146ef01162af2777a011f3d21fc7ec9d5ea52dfaf8c1a4de6ff27aba6cb32b755a8c89061a605852ffaacc80014b29faf6ae0af8a036f78b0e0c3919783f9799e7d2a8ade5d84478d0dbce79da1535df724f2f0e3cdd11d00c6b37da3188167ac911b02eaffcf385c8aa3f7ca8898059afe3048bb5fd235071942fb3b2d096e235eeb90289afb97445edf89bf272a14699ed210c90cce251b6640610af064ac8faa69113a45f8fd9554ab259e9fca0803e47f696ef2a3bdfb8a1d147a04b2f1c155d9c09041eff19ea889e952dd269d1158eeb241cd955bdf9312d444d45bb574e145f9ff2361b8be47e78c34e8c1fb2d3f7d36f8562d9d6841fa6721e17bb7a31a805ab66dbc1880a4ef51898c7ef1bf3d9253a1ec05a91f5deafb9551f3b2ebb01688ff719fd8886994ee2f2b22ddba9a94a17a0edf47ef82d7eba40c9512bd0be43c97275adf1d1494eef0ad0cf89573d0054f627898d408f81ff5a0065049bc3bd292a4dfffacc38d16bb09e03df8b7b87a024891f9ffc8d5e9d2feaf669ce56f30c1306fd7a68137bcc8f061c22a9ba16e7f678da1553782b10cd7bc291fd4f070d0a4621b1b57ebd011cef4dcd58dfecfd69b4430192eaaa7d2117475b135faceaf28f2f20cb73dba3ffeb1027e24983a1b4bd63637e4e3ad71949fd374ae0e4a5d82f664a1fda467e89dc2998d7f59102aab0d7687fd11a3a3c958bdb64934f8932bdd1a918855b9a3baa0d8e85e7ceb7e7f9eb2872e0946e1484ec9bc3245aa8265b7544019b22828391fa9b20880b12e8330c62302069d4511a39a8a9cce0018d7bbd7467143bab322c302fa9e81d042bf9b3a568a5f50c9a3ef5d492e0ebd3a1e26d7c2aac932d1ccadb05ce19cdc00264e9adec4827810118220e334aecf84e08e5175d1419397923e64189d318772db86d4562a2cd0119cb870c01567fbb9dbf31be8a326e1d9b36c061536f086d85d246c7e4fb09e99fe4a21fa4bd3a19a1ddde16e311de86e92a200a00136a65797b00be862e0083e9da3ea8fd66bdb4278b74a0294754cb500fb1df30481f59abd9174c2c8ffe1083d9bab14a81200646bc36bdcc19d01eaaf126dd6d8c6526a154e98c7c05f408964d7c7dc4a20338f098a605e81d0d8b8bd9d4e20695d449ffd2884aa2002116f4f99d64b3a5a28b05989a760cab7d343ca996126c764dc5c0d9d5dbcf1944322d11908b2a710c609c3402502d0bbe751532d148b7e5404e73df291aa10eb31ca5322001db7188cb00a2329f8bf0e71781e9ab5e7ce39ed34e27346612d20bf140dcb96a37d076db65fb2f3c11fe780490c779e943fc7a443caf5acb9c4b08f8155628610fdef11d7f08cbb04074536c6390444ae321b7dfc4fc9a0c802021dde9d169d14e3591c815e81ef2b281c6a373ab130db7deddedbc0977b0c0667dbc03c6709df975974b86e33483763da29c054aaf07f7737ef11fd397595ff034998218f16849ef01c355a54f221276161ed20913e10ca376e626ae04dc0efa1aedcc83263617c7ec4f706045de14c09f3d66bf25d34d838dcb012c68fdefcc9086d5797fbcf86321e150f52693120222ea3a3effc13a5c9b52ee0b2cf87939aa1a9284dd0d546c229d12763208469ad7adb2684641db44a8f442d990f47446624fc1b80c028c8cbee9521560616f8f13c44ae57386c91e77988c4c028908d41e7bd0efade720d1fdf0a301817a4ef31867fd9fd3d0fd1e813361299cbfc7f1ea231476ef1e46b3d653088b60890b9dc0331d8479125378c36402887934c6b2864cb52b4041f481ca0511f57f11f4eac203c05f901feaac83f117609bdd95739e1570926c67057140f99099281680932b41a0ad1d57b839bce24da18b3770cc1588b5d0c08b4fe295b2aea227c6e5996f99f1c0fbd44e567da4ccf7ecab9c9647663e5545bfc1d1f4ec3e8b0643d3ab9f3b53c47f204ba82290e0bafbacc1b6b0ae3424e617ce0d41166a4f6364526309e3a6c523e57cd4565b7397785b03b944fc88ac366c3cf6a5ef8981871746ba402846a4619b6543e98bb20a625d96714bbedfd19499e662acf4ab94f97e68fcd349609f34928a2e9fa5c712e316a645a08dda7cb6e2fcf2c018266a3811c33db52028dd33519c11cec7be76a85f6cfd86f7773ad97902fb455eb8a869d045d5436b05d7a0838d5ca4d45804b1b4017714fed8910b2c2fa482b7309bcbb7ec32e62afd66696159da44c6fb55baead7c4ef312729fee8d0507558749975cdf93b175cfd34f869a564663114e008b6bd8580752468498023adf5d635f40121aa903ed1873af93314120d13cfe8cbbbf38448154ae459dfba17532d6d0ccecaec2782b3a3d251993d111afde29bb41abc23dce7302cf01237f7374ef77406518591c40fc0fe06288136da9211eb0275b6b42c8de726fb9b794524a190906fd052406b56669e0285546f55a74c372f4e1e316ae5dd9347b24d8cf0f5ad83403375d67a5d4c70b78e0f0b5a91a2cc1515a6758c071745719d641b881498e9ba10d1bda9813638cf1a495e636f111b4fa49eb29adeb396bf47459ead8855993e925698d61ba2cad3ad5659d0e6121adfc54b134662d6cdad4cab72f1ee78065d8081b61236c848db0118e5597adc1326b14c3ace976ba5875d94e666558cf796f166bec646fbd23124b78a714ab35251211e12c948146148584ecf4838d4e5534ddba9d93cfc76acde9c774c9ba92a71beac86ed642d5e6cbfa4c0f875b24a290824639843d2fab35218f0956e189853b381896a307ad18591a262b55867513965bce69c789e7d4f3d6472ef6b634237a5b5ba65b75599f89edf193bdf52b9664f3657d12cdd7277b75b1a9636a5333d089ec470e32d34f5a8f0f5a4f9567a1527ac7fcaeb72a5cdab2201555c097da792f09a6846b5be306be4e2ba3ced075ddcfae3f693da6e87144450e3a4e6670701c87a39bc1810347be317363e6c6cc8d6aafc5f77218638ee3381b332eccb8b0c75a675cb8ddca72c6851d46a09b1923d1b55aaace66a85369a2b1dfd3662bcdc076add59af0a747995101c559537cbb99217b4c71dd8f2878aeb5e9ccf4526a7f4e9b3b5f35e663dc54a591aa37ef7c596fefc51ec6b695afb5ae431bf6ab3577071b7adc20490f1bf47892736ed2230622f418a24792223cb8e0a1450f21dc27c30a2b4e7230da22c706822743381164030d6ed0a4891e39fc3881063f7a6232e8e8309f289109cd8c9e38c14437831e3414c57870a1450f1c405488e031a54ace79071e34f08061f378419645b6852c0b19153c7c7834e1814436690d716e7a4830d6e7e84c1b0e8b702d8d9af3de2c96fbd15869802c8d300a6c8a0e955895afa195d987587ebeea9c97157bc4dfd1e31bb5d3ded5b77c277e1f0837f6886f180b758a7349b0281a8604ebd871acb5a95405676d6dea745a6ebe3a6b3bbc77ce1e8b656564cee21230b6766fecf65e9cb084eaf7d2e9d671a6edc29b1ce2164c09de093e229aeb3aad3bdd694b6a1bdad0af2bf6eaab6cdd1abb50ebce754bebcfc1232223a3a121aa73f45de794524a6925faaef35a6bad16cbacb5f61add8b87be738cb9aed3ad97165a7c69410a5b30f9c3d6b8c28724cf4f6a8d2b949ce4362ca1c4157de7a44e8760e7dccf779d2dfaee04b54fc1926f63b10cc28d18d5035c79546b5647b5c63a964a23db9cbc8327db9e3a2dd0cf59ca38229c8cfbb13e2c4764d6d89de9aa3fb5c6c6aacb87dd61da843a4c9b1e9bc3b4f97a4c1b1e5666719836324b8323ed0dd606cb63776c0d968669639a36274e667dac90af6e6727d32ea9f0a7509c97bb4f934270c5911cf927d32ea95228cecbdda74961e964daf64baa14aacb27d154ebef127d52f879b95be1db7dcbeae22a563c87db31c2cdea6d0bdb5e56ecd155b9f29b4257d737e3deb682a02d518005823695caa914c669e1e8d2cd3521e746c9460b2cbdae7861083ef6f58b33bb3d3d8fc4b55a9789b65e5dbfaad814059deada515daf2af66875fee2a2eae26e94521a81ee3aadb29b51596badd5a8b4d61a95f7de218c2dc785365e39d0d98359e13bf75a3642f0b1738843ed8d85cd97ab6bd51bd5631d9dd5e356ad55d76d51af316fa6391dd0540b301c6741186be7f7d86bb597cb8f9dd2d4cfd07a4802c6f962168be3382e4f1c0e06673e0d6d1792301f058b9da35d60d7a50960c7a10fc85ef6a847ba7e25c015e90b731d8556083e366869b51787a0a6dc0dd035c943b700290475d7755dd7399e73ce39c3cf309873cc797655d7ac4495a8d65a6d955599b5d65e236a74efc54318735487ea70dd388b70b06f1e5d94e3b27be30acff93739d567bf51a95ef59972623deabaceab60107c5bfdf40ad639a9ccc05754fd8bdff8dbd668e3baa5d55ecc75d9fb3418924adb7442a554ab1696cbcb6803b760e68b7acc7c51991730e68bfab43430941c654fa952b17cf57146bd5597957a545daaa72d5cc636b5f8d6d5a0529a458e7d7fd264510c913141c23622e77cc3067fd2644d6e6c25338e643ec88ebcf0917ed2643f7e7449e1be205dd7cd487185114964d1821f7ca881091c8eb8220a5b1655d4e8b298923fd90d1b7b0195748524a4ce7ec8a192a82ccbb22c63e4d0893c9127f2449ec8138902a76a355b421cfa1ccbe5bab8d84a5d386f3e9d1ff352421d10085d85cee17eb730d4f9ea1504823ed655e81c6e471516abb2921c3ad94eb693ed643bd94eb6afae571ac6cbe219c94e501e7c758f961f94afbebd2c5fbde419f9ea343b5112d58a6c46e4502c168bc56232e0cbc7ba265c1695884c63a4aec95777e9b82c9ec6e80f39742bcbb22ccb8789919179f102060c17af28da4a4597e7827c8d42bb69e3827038ca09560675a37cdb2c98a36e7944dd5037d40d25f3f3d561f8c000faea9efa71500c712815c71492afde4a911fdc0f3eb0957e904930f4672bc5fa1b760a6ea4f916be919a591a3456069d9524d150adfc5a44f4d5350cb04505faa30bec0ae1968b129bfae802fbba7a971a0684b40089170d47cc6084cf9320440c2183d71318181942881da8fc4b162b97a4b66a63b696f7d604a6b3269ad8e3ac35d1c4167aba2e95907f6cc16663b5bcd159699c32e01463c207a864605e2a6924c18b171796258d2580c16a59a92e693481ab52a8930993c613881c694441ab238d29f80f5a9944fd925f5dcb5c92c65418fb725d30abe5676bfa25a7b0c4d5c7b8d496952a85d2312276ce65f5d9fb341892625c73e28b63d1c56344185c13b1579125e4adef2b6f9da2f61599cf479393b75e53262731dac7d3ce5bb7aa1d18d0efea04c54be8d861c41115e4f2b3dc65928ce79771ec31e2885b1e461cf58cf5979c362bbada5f6dbe3ed87ccdc8f6a867a5dab4e9fca4672eac96952a853a5937d53e24de7a891482dad2904be0bc35c3b3296ea56030d43b5afdd4b65bbd4136dbed86f11c6562315584a9e20b9d7160155d66cd3aeb5f4260c16e799dbb8a615f0f1a366d72ce2da7e225e7ab528bad639144ce97ad956037ec31655dab52b5546ddaa0deba6aa69abd4dc1a60d764baeba52edad73b01586cd570d7ac6a06ec2b42939753a9b3624a74e6fd32674eab59c36a053edd4adcde4f4e4734af9ea56c857bff4ca57c7dc4ed62711e52651e6739318936132e826f125876e125df24924b949647d3eb5bc94eb231572c5c98e85e2eb0d3a89db4b79fe14aa7512576f1257bfc59268c27ccde6eb26d652b4313a4e249efea058d4264f69b04f3ccd312042f2e39e91c5879274c1480e404b86cce0c18f901d84ec0024c7fb49db41e847171662a7c88817c43083188cae1060075124417485113b64de19f2aa8e1eba4e072bffe2276d871c1d8aa2d4689dd59b2d2f8de169a3335bec167e668b3d690b57d1305aafbdf8625cabbd17e3cb1d59a9ae3a5e2c47591c710e86dd8b2fd7e19baf77899c4021f2c4f146a9755dbede87afd6e2786597a7e7cab4385e9f3bd31abc2109df9211952a46566eb7bcfd0e6d5c9daf6ecad9814351d55336a6ba2a95ad540522a9ae3a5a2676e8bb6575d5cfad2d36c3d6f5729e0e4ba7d4ca05464c99aeab52a9e25369d0005524344c689cd040f9e97546ad541a27502cb69a5377549e9e9f4e6fb5c6a34163140a8d42a750f959e5a7d3e994a7d2a065497b4aea5352a01249c9e4a76ba0d2a0b9cab6c2c292f33b4ea8359c4ff1282c287b3a99e131583115acb35a03411004c1daadb1f6ce793fcb9dda4b6ad32e9142ab3d55e9a42ccb3215e389c5623194add67054429bb5699b67cb1f4992240c960383c1603340f1c509650c044110046968fe696868b4b579255298f2ac46954e4a5beab23cc56a0de7a1d55e368124699158d29296b4a4255f600062601a8bc562b1526badb53e61cc241fb7cd4e9b6763d94ba410b4a6ecedd24959965e59d2319e582c168b599ba5626dd6666dd6666d330390717a5a9665597a9ee7795e2c168bc5722dbb10b4bad4dd5bf64a27655996658c27168bc56220bc3a7abbb972ce39e77befbd9796a18f19a4a52dcbeec679085aed91b87cbfd24959966549038200ceccb067b3594b85fb239edd7b6fbdddf6d3db48393afbbc3af6c1333cc3330fefed5ad1f7e6dd5bbeb7eedeb87bc32180542c804f0180beba017e44000d200292af7e00b2ba0e5053632badc1b55aa3fa59fa5ab3ee7267b16aadce3c1ff3b83bee6be19a0a77e60a08e6d6984ac5c4c488f1337ec4b5c9804afab1199e3de2d8036a08e8575bfe6cba829776f1231e51b82d0c7b157961d033c6e8915f1debe8782c1303636978a94d6a79bb5dd1058b2bb21ec3e88f11c35afe0509133adabae2eabd7cc4a4b49f1aed870847ff9c2f1f353d4345ca4c14333768c1da56084acfc3f529e5697e9c5dfc38ddcab032940040d1937a8e403213c4033723155c8183a8c7c788205c5cc1844e69c30e43df1335a8ee52bed27c84683e4039e6d1c421c5ccc103173b2ed54a0e960ffb0405c7c3113bab170f1e9e08b1231584fa113bf1b0238389871c3b7616184a5674909ab82124c20650490dfa67864fc88e0d1e4d088e2d66b84247941e43d03084470d321a0b6eac80a4f964d1f9e9f9969fb49fa0c73f693f403fd2bc58f1991f7b66db8faeaf584cf14486430fa6f85063f4afb5b6e002283ee41039cc909353a3d2d07c14d65a5b9718c15a6b6314cd1449c192f508929d142cb9c40831668a6092baa0891098ac45b4fa0bad23f0d9f1333f6941a65cd79aa32326b1e3d698c214c10c9398a43cb8cd0001b1058102a301417242f9ca57a38bab3c05925c8325ea1f109fffbc8507a401c979fb2387360341d049e0065d409711740d3ac9e41f088a301b8776f17ab76ec6b104b512d4b68b29054cbab86ea1e0e2a6160a2dfbf3928b935a2d3e9d956a59a154a914ca439487a810740da2c2d035063f312439884354e8d871480a4f9f7802678036cc03e897dcf340a70e825ec9a30561420b12a3eefdb0f29eebdd1a5bf86d72906453c0e416af9e210e0d7148e2760bfa06eb83a18f98c4e4eb96e7139325a8a580c9160a3651690852ac18aff35a5c2b8346f67cdbc25df7021557fb9a6a6171b4a4c9470bc4420f4f7db43ea3ed91f1d1f28c76070c1f6d0ecb673cf5d1ff83eae2fea065876cab35ad0ca2da805963ab6718ad31ef17ad71cbb446d6c7b44687698d2e51b42e5a3b646dedc9acb13398ae21917b3b8359b3f2ea56caacb1c1ac59390c4c47f14f2bdeb7354bed4ab46f6b2bb1beadd59548df4a994ecc04cc198202503e670238128c33a0ae5662f7a2c3e81751e52ea2ea5dbca545a56a51b534054998445ecd46a9aeea2ad116551737eb61affcf314918b88aab2d3cff410ba8b68fa991e36c95dc44d755cc4d2cff4b0b7bb88a49fe961ab7cb4b516cfdfd21a57f8167711c367892dad595dab964a1cb1a744eba214e3dca2365ef2da700c97b39a8f3d82a406aef6a296b4084bb5dd3a7da8effbbeeffb52b0a42ef9b0e96f2781a8d32422b55c5f6b8bf42d90f5b13d9627a4154babb4a595513defcdd27bd3902defb92d73de9bc57277b968f9159c755eab24bbed91bbcdbe3a779b36de911f29772bf57cf5efa6a702b6aafcfc62b320e4ec0f58f251e89cf36e4e9b1e4a5b9f6cbeb2c8e5ec5824911cac35786ce1b1097e1e9b8087c7ad91e49feb4f68d32f31a09639dbbd3b1f61601308e377cb74345fd5c3ed35e7bd592c773da618029f9d8e27a87df6f193ddac7e9350fa747c289a76a002fd29385bc873c3f9cda7cf6fd1b4a1fef9a4e2ab7faa52ca8fb89c54a8945891537c0d899832aa23517ead1e3ef1d543a3564874c41e3fd968da81125f43a215495ba6a3576d8fa7daf89d6a5f3d8cd59aec154b95813d27efd83cac9ea7d6e731d0e37af4b8ba578faa0b930fbed8749111464092f308333fcc24e1c04c152980d092c062872c9f135e8f0d0654926002ca06503a82a6e8e009252c80529938e1e0021ba41c01832c51dc6280458b1d3c415be2865a75e8400f80e4c05224830f265c6a5f416a2f9e1673dd45dd2ed7650f73933aeeb2f7e9abb5ad5473a858772faa9ca1e79df76990cc94523a2fa51ce779eec174bebaced9f1d5411d18cf5727c5aaab5e18398484c910e9a42471568fbbcee844a5cac9889e6ce3c9cae976b2d1988ca74716f399c56868c32b899c40212a2f2a0aaa565d1555a28e505650585047a85b0e0c75a3b55a7baf77e99e5de78134fc6add3ef1d3ad6dda689f4e89d0f0f3f3e994074d7e7a95082c7e662bfbf1d3e96c8ae926b0825aa068d95939515d51094949f1ce5e1f5d60b4c50afaea5c0b145f1ddb961dfa79f5a9ae589590af5e399a9c92f2d5e74dcd52b3d48c244992246130180c06dba6d309854a75ae53aa8e8bf1b82bf3415f37147ba7e48474852404eb3a33056d28f6ce57e74a4e02496ccfce48628fd9abee2c2bc3da195e6b2f40657fd896bc59849e55d75a495ef7d396c2d774561729571736828916340880896d270095891239baaeebbaae13622203243b1f0891a1d50383c824b6c399e4d001230b0c2fb6c02143850c314dc4005304cf4b104a765c8220b2a3ebbaaee382d0a1258815c482d0b124cb921c2c716209124b60b02488253e2ce9599203882b40480104124038012209104040e060031031ec18ca62688921238660d0029e16f80c95ae2735c90d54204484211d74e81a7e1062e8051170d8252b2f259bbba28a9c211896505253228412254a4825449440a12488121b94c8a00487101742590851214445c826b484f70487151a42a7822970a78008b9e05b4241bc00ba62a436c8729a11c0548c10123fc62863101a7ac10a1dd121e42326c40347929b100c42b0ce057b5f2865d715bc77ce69af05ab6bdbae9b35679a3109fbcd00f0e6a28b67e13afd2c6efb00d5dfd046e739bc19c0c3f03ceb5d12762fbc19c05f9fdb8a2fbe13a70d71b298ab8cca75cee54aa7bd24dc82711e60bc908981797161b5ac54a9bc833a9976891482faf33a0e6325da2ef1a9ea9ad9d697bac49eb421f27a131f4a4cf182f22d31a307d5881033405e45d09230a1c4cc8f9da4c87aa6254982962409dc555b31c771b35dfa49438223065918407fb0f21cc7711c87647f55c09ad0a919b14127399bf493f683d08f9bc8d63f693f10a1fd00e476486cc037fa3dc54f699591e76bcaa6dc63fcd6b6b688af9300bbe9efbd21cc6c9980e7d315603cf7f21cd7b252c06bcfd3358fb3a81aadf7b3fe1cc1cad04fb9a7f7a91dc06b5b6ba5d56a52f556a5d709f039009faf5331c6e7db123f68cd225e6b6b6d9d5a93aabfe0bbf0468baf4b23fd9c3d5be9642105b5055bbb1c33b8d838b60c7b073b88bc917fd27cc8b957d071da1266396d580285c1eadb5b5db435ed0d414074bc201e1982569023e8860ec98318482c74745d5749231dddeb0689c48f2c179045543206392cee272d680810aee3b8ee0890d8770487183c0690c055eec88e18f2919dad880207e70476402eca7159ce711cc7719c91229ef3cb711cc705b15f3dec9175a47c979fb4234a1ca96922f4ce3e9dc6d2d0ceb29522c0f39c7a50ccd18e23d7c829a2820a2c6c1540d722ad91c5395f9d151fd71a369583c36ba8a601f0e93bd145f183e9aa1e8a029832aa83228d057cf5ec3efacdfbbbf0e6be16bd1ab946574367508b5c0ded815ac435f4076af1d6d01ad4a2ada1c10efc485c288222188ab686fec050ac35b4a6b3ea4bbaa594ad6068c3d6195e52ae2efaa1a86b802c1b86d9be2e819bceba2fe9ba7e2d6eaef4751eea73cd4092d8402a0e9f3ab2e3e28bb17cd5c28a289ca019294a8266a4089a91926684a419014233d24333b283664405d4e9a4a72c68a5d5f444b5d54ef9a019444450936b2f8d2c621294e406913ee8196392170603b6e04d8aa32053d480062078e061c9152b7060041437d4b8f7defbc2df7befbdf7da7befbdd7fdde2bce7015a91519e23271eda5154172f1c5457c8accbe48eca314b90184a5e33aa0a337a2014141032abaf776990828731c973d2020a01eea7dde07b483069403e4e2d39ffed1c1988d8a9e4624cad7a23d69449cfc5c422372446b0b5290da284484ec16ec402312a311d14123e2026d880e70401b42a5ebba28b421503ccff3404b8730a10d413284fc549705bb30f327c51392af744eb81d0c858cf8c1bc6c2375dc6dbeaadd999d6af385f2f106e1277bfc8a4a45d346c66b4ae5259d959386a68de73534627928737190e8c5f5d1b4c10e85fe89f1af68da5819a7f623b1f09fe71d15b15fd7397ba4179effc5e7a2751911c3441528cc8b0bab65a54aa14415e844e207c5221c41980b394f5d982eead5cbddce2dc9d08f49ed2bac85c7b019d9267938abbdb754baf8665617c8553aef2db56e75e1cce9324dd7f4c98134bcb95ef25288b3e7eb3a68439cafebe27c4d13726edc086fe87c71a10defd3daf3be2ea4c00856c62d851428b906c1ea605801b0543279c9bff046bfa9a5b5a9d4caf335f37cdd1bde4d81ed3a046b1856c0b5a5b366d22edde82fb53408d2f0469fb67be1cd97bbcfe4a7d69cafeba6d6c8c2efd62c79fe12a935c363a310ee91357a3f3b71a4b941130801eda285619f897e496843663f693df8fcb849dacfed37f9c4b8499cd55f5bb2ddb0c72f46a66cd3e6fa2637f9d6eb0c99c9a8a44dd666b174884800009000d316002028140e898322418c03721ef6f814800b677642585e32988aa3a1589022410863208e610a104308208610640c519949010c81e9612abdbe6d33621273acff0c4b517f0c2d2b69ef20990d6317a4c409476862f2805082841799789b2ae5dea1458e0b04d10569ca16cbcf828327d32b484c2f1fb742679c8298a98eab9768806b9dbf1a967674a9a7c1275516b22c34ad805535317952bd6880c9542d4fec51a97d7d706037c88b2fbd35eaa5a923a8d449cf497752ee5abd56d2c2e71800e0a751fd4a81bbdc9af327473b001d4ad49defa4261ca760dcef774a41ac404fb80241e1afdf826f8335116c7afd63168316885f735f60ee3c01fad7a81760ce7802ec97dc113827cd82fc3d7782e5e639207fa5be80cf817dd3699bf369ed62ec1d0b1cbc3d677548ab140cfef0ffa577327fcc0e496a947aaf6270f2f5f8e4df3629c909dc767ebf6205b87ad10848aff75b801e4fc981373fc40b74f1a01d48e7e7b7403d9e5248f58a53a338012e5ef40fa493faf9ec3ecdc1d4749122ec9e7bdbd3453c8a7b40ab5117518bc38b009de31031989183e83556267cb59a6837e67fd9ba9e2228b2c816bcb75f718d0d9fae6c9361e681ce210692ccab11f3e91058c6b28301c941ff79cfb162e9abb3c25baac07baf1881ae1f68f6b9728bcc03474aa687f8761a72254cac65c785d02458920210ac78bdfcac9c0581405fed76ecff90cd5e4898319abe852b8dc1cc13e3dd015c81304471526e62ee8336ae1f23786ed3798fb0434c201d6d1c70fcfbc034c34d5883f5bb0423a14209e8e51c396f156cbce6e72076e18a4e2b90f4f54d94ec3c2da4b3fb25c2d4be3eece901cb18144b53568f607ee8a08d4fcf055e7dd73bd9293d8c1c784692f01e1b2eaefab6072a7c8f019e79b3a5d9073115243fea35ef5524b87ddad07c5c4c82d3b92569ae854b15fa48546cac6509bf9cda91214f3e26f8a1543e1c317abd5e316079ba4a3ef6929a71be8bdb52fe7c03818bd0584c0c21c647674b3ae5ed1fe15e92723f174806cd5e1557262a7d635bc06a8e4d2ac0779b72f4e5e172624a5c62c842eff097d1e3b7743a5d2a73e35ba0f6b79c1c6725b30c3c426dcf5d0c0661603f661729a2b8e245295a4cd1a2160d6cf247f413affb3257ac62c5172f6ef1a2b05aec3319c5db147c17356252c49760b525bf498e8f8e7037b1cd7d0083558f4dbb137899b8e3210a8b3d6c2e94695904568c8c51e5ee53559a57441399ea3d91441ccfb17557f1d1129430d393c28564f446e11a42e1b96e42aaa0f0505caf6794d8b9b94b39bf7e894337fa0018467ee94ed6b6242f94808405c5de5fdbc0e0ef2fc154780eee13c2bee4a1af546a09f8a87ad5ac57a9846d89ae872cb16100e0ca16f20e22267bb2f173a1dcf52601fbd6d3677115f254d0f09b964eae1550688025ae03c32afc7c83af1372f0236621c05ae07e3868246ec27a04d09fce12301c80316053baddbf470a6b46895f76b3e5bf9a58fa46000c2c207c1da3cad1656dbc5ae1ac72913e3b49c9143a7dfe6bfef29249ab65aaa705940ae3107fa0422820671835be2b58ba676f85796d61fbbff066970c457786e23cca5a5399cfd18eaf12f51f7264a5c3b0f28763d793923b37765e5285d14e2d910af15a53891840b4b46221e09da645341e1187efdc03924c65e793bbeb7835ac2cedca409a926fef41bde21227228fa9e2c414fe3207c40d0a62ed7a8f0205c6384d42523e247cfcf5a7d4eb7af06d7597dfa1721dab8c24870132809a427c878e7758ab80082cd0595aebd5419d8ff55839960dfbf45d43927211b9291d7805647a9e44cf6bcba52f6e6e4cb84182cdb98add7dea829efc6ef75957ac9ab607e81b79fb8d7568836ee179816b518fdcffcfac67e10394fdc1dff116f14d641e5e1334e07722a4dc73a307feb374cd734a7498158212836a302bd4841a8ea6c8c2a9c34391fa4c11b6427f66c76ed5d7c5b7319c5d5a959fb578d52fe7b3ed168b236507e10923bff0ee3071319a0c8bf3aac2cb03424bf5cfbaf192f8f9f952a331dd4c4b19f425a6ec08a089fb86686e90dab5e037eb5aa100394a9e2ebc18a173075fb57265ca5689751c7bee8ea47b9c18ce6d62afb6e052b3a4c480a4d4e818ad876f83aef33639fe60e40148d208bb5ce8edf1398566e5259421357b7f2d00e2df3933d0d4579f6bd42898d4158ce72e1ac436e2527fb2fa408481976e83b4484c9ff7edc4a649a8cb87520cac2b86f9036882c583b06161810a2bd817efd0b4e0b781c69037b0e2196c6d494bc20a533cb03b06bb8977a66ff3798ef7e5dc1261189a026bf090ffb36c437adde092d1fdf9956c45ad3ae83f9eeede45236851fb07ca5641bba32c7b2122f4604ffed747b0b2ad8748972e8bf658e5fe91abd737bb20f125a08b313e9e2f293883672a9d699c744e62ed85726e37d5fb35ff9be6feef6ea7a67d0b44b725ec0ee2c2a44f35ad9e8ffac71dbcd3008372d72ecad2ceaa8b9f0183b8411a18ad2758103992b9133483fba51d9657acafb52b4932227ef100976459f07d42389492c6b69de507af4eb60bd58c58ab195d361c5d04d948a4baeed4b88e25578626732adbe9b3a94cd0d196fd661c61c3ec00fba25e9bdaf9235b4018fcc7e5d33818133183f70dbdd7fd7ec15da24c1154e3e175e1c1ed171b696aabb8b01b1e285be6ceb9dd938e385bbcf26232ce1fee7ea5bd647de7ce98443e05309ff727d052a82daa5ebe2a4cbec6629c27ba816ed8d241170a406237f810222bf53c71bc76dfcbd739ee23597b039a68e125bcee03251a4c79a6becd86503db9e790f277fb24c6d6abce379da5ecbda0ccb154f655620c916bd530880c08ad2e3981913244b2b4531d991faab82c485c863828618ad8412ede97353badc8e34d16f66f31809eecf52b271052eb72c65038c1ca688bfea5c2470987ed8bb9a639c8821909ac83a9d53c4d918016aad63e87123fcc2feafc69b2f256963c54ed98ae0c1dadd4cb9950675ffc360c105e3998d2ec63adfe51b27f328898764d0eba4ebf479e8e68ceb00af1bd94a09ed4a784c27027b167e23d1823b0583df533ae3ec66318e122091fb1790789415d1605e2682fd210726641bf599fa9f4cea8f45bf3ecf75560228d087f11503b26d567081425d6ea1b6613fba6485608ff09c45cded3d021aed70fc7d978068faa4edf023280ca63537b1be2dbcc9992d7b7a0f3ca07fe934d2c40b6cb44bcf279f3ce2813847e913583d486fc0b2d9d1ce085573036d8c5b2f9bdd240f71fcf948696c5bcdd66f3e92c750162f0c09f94a732ce515e6a40b9cea90f4799f24640f7af44933779a57c7bb14e9c6e752886b2001d5d6786e5a29edd57f6c15e19a21b9d804d75e421c6afcff2cd58d6a5793baceb04ba376817e75f7d02baa0d4803a19c169ac1bab207ba47e7daf52036a6196f1b8fab46148ee5b2f26d49580cfdb5396f85f94d3573e1640e32a89be0b0f30e07cc9a8a014acc397f8922cad356a0b809b850fe3e2830e4ae891a350d0ebea73361a319e4e6d8478bad74cd144c658ea9e638a6f370087fc5c702902e1dfa5f00a4999baec9cd2748bc1e036fd3eb287c4ff67ed8bcde8495d249ad78e8234e53844fde5aeb2be819fc11f81ff806f07a3c4717f46cbb0b260d8dab93cee6f1fae6358f276d129551e62042acaa91becee3f896fb8179cb07a1eaaccafd4d1607ffdba767217554b55613c069d959e923821f622bbbf2c4f35574ff1abf84af868e00d4e5bff4c44ef4fed490737869cb947e728127e420406805072b152cd71095472d410c90556760e1d6feaa8a8911b9135a55f48e49eb4a61ef92ae474437bce6ad1387fc126a9d81d36da415ddd0a7f8a858025c31a1151727c295aebcdd3303e7d444cfd27ea39642a2888e1d8312d7159d66b881409176f770bd44eb938d9c821fb044a01880159f44716f4e32f004716b4c72b008e2868c75f008f2ce84fc895a656c88fa8ef9219f49fb373f26fc924fc7880f2acb50354177332b497949e5419af9253a94594e2c310323495148c44f4ceeb8eda02118c6719ff58be66dbd39f44e0766e0ab625d20e65bea46bad4d7b982bd5cc229b6aa36559772232f710741f320ae834c5489b9ea6f917130c80ed0811c876619d831d3cdd2570eb14291eac7c50a8a26ef87a0f172da19134bf0470a9c56c13a154e942e48544a47e50231909556c40b9617ff3d722947698ea374f93185182630d7e6fab77a402aac6dec95d8fdaf7fe2765b4733820a25fe55395f01facdfb70b421375b804b853561ef8223974e6041029eebe9970809f279928a61b3ed43e205976165872d2457acc69824ceb972d187aa8762cc593f8398f74cd178e4f51027bb8482198036a037eb4ce6845fad5953657b67351a50bf6415a1d5bb16c664db3fcf71f7da419f3ef2b0ea5dcb66cbadbafa2cc1f5c1b5876e587b7dc6926af18febf7c5fc522a8671e574925bb23ba48293502ec059487b28d4d329cac529ed75ae7f38257d50b733c17e85e1f38dce6aa46289951e18890ff9ecae7d19745ecdbffc67c1c1af4dd37179ad70e49f47be1b688157fbe76a23d19cab5fc7c3adeb0e779b744611fc5454a71160ea2a62426c9b11fc49e69819784e0e28f7aafe26d3d92d78d6023ea8d7383678603c7cad78c59b44b3a3fa93df518c4b630d0e0fc425e94fca9d51a204a409264a95a0020e693f4a4c690d1128be4ddf09992b3dc07edd313745ac5852713edc29913a5831fb29a8aca986eafff8b505503262978bb742b2c0eb120423990bae880b798af8ebdd6fe622956d5cb671da7917e0b42430968148b61b4f2c7967011bfa7ce6d1c644fa87845289ff6bfe9c5a983463f33ffb2354eb48516be3595347591d9fd576dc2b324ec16dd7a3f412ac6dab6155f305cbc74051875dd54a24ea8fbd3d0516f0db604b239ad9007044e7a984d8845160f1cd6a3e54cd689662bd7bfa71e427ffb041a327e8f4411f51f3e8c1de8d1d1a68fbf4b0e7e306a18d64f4972785dcd9ecee82a1c5914dc4aa27ea4534cd13968b8efa068e303de3e64e14820db24886ea7255da8dd48fc47a62b15ce75ee797276286a624ae2e848678f661095df7e11233c2459d0ec8b2b9c4fbdb030508373635a012b5af753b4518943be6cbfadd891d5d7c0ab5307f303d5ee5fb3d484d83c29bd0fc2fa1bd586beaf482ca54a7d132cf574a30bd47b53fb4a5cf608d35adb93ebb2edb49f0df6a160b0d4b31d2cc5a9ff5f2162d24bfd05f436adaac169cf40ad1e18222524eb951349e0233d0a823ebb4337496fce84ee74a3a3c3b192c600c2201ca8b700380567c3612d243b15c7bf4ec5d168af19e94b05205b1f2c454afd332948e46977987329cbe72212756b8c6f9b5b8f455af9ac6149be78b58308e87b21eac67a6a088485e15e53ae59139125cec61003f654442037449ffb7066a7a0aad22dc2530204d218235b0de69fdb1a08f886d15b678c411276c727c3fce3baf88e17c65c70bac614cd404c19a62ab9a7604b49a5cc587b38947305ee449cc26288a7562fa0dade43d2a208556c52c42d0565321d5a3ef221316f4e469d6e1f5f3dd8af3abcfb1e93114090dbfce2318bd9dbe804fb0507afb43445382dc8a34307745a9a526c196f411bc42fd4484c68c3ec331db843f9c9b61933308ce37cca3ae32c0c718c4f9bcc9e85201de4afadd966be300ef22d858fa137897d95bfb1b8f699b39800ecdb148888da97e9c58afb4aafbc44e556bfd407584dfab9cbdf6e8164fb7f7bd1aaaadd7e66bd8cb654fc217d5eb136883a4ab0e93c6154bc68e46b0ff2da8b60b3bdf19c78664553e175c439e0ff23e0ce509b596a315bedff06a642268abb6b15fdfb7b5041383264043313ef9a89ad6ac6dffaf14eadc35e4a7f9984e20a1b2b86c515ea32bf5b3330c586fd5e0b4a3413db808f4ca24e01bb26b00cfb604bb78c706698d94b419188866d60301aadbb9fff9797c16601b01f292c0f01e9ebc5b474b0ba976642be8c150b87674dbf509ea1872dbd103a4506c5a1accec1b5d1cbc1d194eef36c7180dcbb8eeb8129d7294d57cfc40d0543da157181fbe9db96f0bd72c5796a15d91adfea3ba3c4c25c69921cd3a35bf0134b0490c07de769a1a32b802f656b8efb9f200cd1857d22bfd808fafd392c88f2257b2c259de8a9297a78dea511848c514ce383161f688ff5b310ad06247f3352bc5af9680eb8d8a77e92b2cb6d7501c9aa64aae458cbda599040d34588a6b447fecd8d28d89d003eab2ba28368a61a41703e13c5fe1fbf36b83d722c78ca98239e102d375d9693c93eeec3cf13a22343b5eab9003e643a8f33bcf2bbc64895ccb614226500c732aaa79d1c57471522a107b22b44fdb2482e26b2218bf6e5a5f45a0d598afa380ffa84c8f1788e8663b5728f0698ebd409113ab68d1e2644bda5a9a084282e2d61b9b72a2f800e8f53ed70d1f2ac0cd3b88b2b42a41e9508517f37d5b81d21306b57d2cf770a99c60754407523d85eccfcf10620ecfb93fa4c16a8f2c0442f478d35ed2044ee001029a8a2708ef81144b1274e92d8423ec6f783a8f41142e4c525eca7d7348f91cfe05467da3d2cd40b22408ce20212da681310641fb9a605b02d091e29ad13134948795dbc983dd0246b0c9088e89cf2c6a24f225abd22bae6b78804ba857e729e34a44d77424d172e228159155117ba3267f4a9f4ffbe35c0c774678888e69987c8e9c0820ff4ef75e24eac884853c1c7325315d1d2dd001308051f05d8f8934e82277ee86d8e56e8089d87db0332abc355226995b8be97de07edc60bb2da13bcda53b39ae08749d55d57a68dd7cd93a5672bbf63d6db2d83d866c398681cebb1ea38fe0015e857cd7ec5e74660c0808da38ad6dcd4732317cdbaef2a5b355751a17d7cd03a5ad9dbc98ca0e46ba12bbf7e92ba301692617376daf5bbb9855a10f695218cb307d5e4e14f2443ba4d231ea96123a388b7fb98af446671fd2ab79be90829c5abe3a1701646896467111e743368ab3337b06873a127b6923a17d3985c8992dbd291409906fd2f47ba741d25e7a4f5f513d3316e40cc54f414ee9afa03655cc022550c6307dbc27d62addcd2c308eb7ad761af508465dc0d1492ad80452652e63a14fc281a78f8309715e484ce43245abc594106bafcf0eb2b55a0fdf53834dfb512acf36470f37761071459540496d1af8afe96d89a8a0c974ee8c99f8140f4e78fc7b1ba442a66a6daa5b7272a38cf8eef4f9c33da79ef1e479950188416c0c36ca686a604c7813b101485f7d3d75a0f9d440c5ab8c1e70ef6ad22f183e55065237287ac3a94468f3245089bfef5ec7060247517c3fb42496a9eb0e2f0486258370c4f95135bb5c38c624b587901ff8967a889a6c0a3867211d078272cdc68f31d4c17336493573154443a3104451ee9890b15d3ddc37c0257432fcf1933734ab27315d9e5e2e0b168679a464368b5ebf645332914638b4b27c10a0a24c7f2d044b029d70b6c8632f694ffcb989097284cc52eeb3902984906c7bbeed846c207391ce457748198811dc956ed909bfdcb65a566d585da56c3b790e1f0d98743e2481c2a6268149da68eacd728628b4d55a97d2734d8d91d9039e2b98f655d89c00d3185d55014bc05ad125fc1e2636f595517b4e589e51d275a1ec21716305c2afbd3d6b59ad3c86ab9bb28c9c5cebf1072f1232117e26e690793686896b169824da53d5c1a7e8852081c45d08bec2d248b8de34ee91269d2a49e7a9a691f93d4f04cc181d73afc9df594f064ee67e77f0a195b08f4132e38a46b8f2f46dac6689ba226d5cfa29ed958d45e83eac89b08544fc401882e3d2735ac83a8e452eff820e23d05f6ad82899428f5947ddca220ac2355ed61fe74165c886497bb1b07c23174b80a1e898cd20b522a2bc16400e68588e454bc5597c99fa87de2b73937dd6d9bac7b429e4d3e8796d57480ebc174e67b41166eee9779055e85a19b2704af3ce7b3ca80a248da3874f805d6fe7dd60c390491b663d2ea2153e3dbdf0dcb2b75fc9dc59a5ff903411380ff0f707d35a8fe723eae77e9cc7288b1f0438c07d01bbc2047c4ee3b1d2a1f50ece6d40dda2bd48a17bfc1e06d8234a9ad7b03293d9a04de060bee1fdf0cb2334a86887b0428dfdb86681a986e055cbb94b895c7b260ec668d6fc9c69469081b797c32bef6150d00b6a5b77b40696761f7f2164d114118b0ee2e93820c37302344bbac109603c730fbee34fa31eef6256341e925223c288cea7d6220bcbd1454644289366325bd128a3727c3db28a7f39a40d40e7231f549086834ed9ef41b9a918abd1faef9c88e7e40980c43526d9f202e325203579e1c9a12ec0dca1d0a7c346ee2f05e9b36c48ff07fc85422909d3dcd237e9a93225030975cd8d4b4eea246336cabbe783304faa41a9236a6b461654af7fd6f1942d48f288585f59f3e13e5ea3d821712a60883582897710ce7145210d5f6c1fa17daafa5e91f2006436e24185d0eb1cca0cbbd4d5bb77159034a2d1401518d8c04df543d2207262c422037bde45ec7e92c9a3c9f7d50a429dea40a9cdd7a2c53ada615c87329a71ea212375863f95f3217ace92778e47bd452128f2c1db6af5e63bdbd1fa864a0b5818eeaf92b2fcdc5194146cdc9dc1407adc0edff097e2536009c78df07d069901d64d8980bb3a79bbeffe46a0cfb5db90db10e6932a051e22af8011a25b88dde2ff8c17a38b2b4e52188d0bdf84ab7a840c24cc47a2342abb83260feb3cf8596c62806468781e04b537ade34d27dd3b746f4dcf490dbb3b388f487d5f76fe3eecf64e907224afb9533aaaad476c0e5b29be8fe3cd47441942be91fc67fa68fb971cf703c5b488ec489311bc1e04324b0e2aa5d0230b4d908fa9a833a00959310a2fbbf1d8c8b4d3688f9898699dca6aadd2c8d4c11bb7edf7001e224d293d04027a208dbd4eaf870a1e32f6c1020df8b442fc4250cfc18926787e2c3ca7551929c1cc72d8cc50c592aafe7e8613ea0cec8a1e1f0ac5deae6ca76da21263ca07313885dc53b8c1b9ba56701bd36a7501a1bc113f58e9f60d54535d3f4e101b04ed4a8cd9db6332a7b64b10de9682bf29eeec0dadfae8a39123f76f26af0cb0badb301d07483f1ebf2d750542a4b1ccbed77c22032d807e80e24f4f684eb0118616b976c1d28955a146a8963b971e0b2ef036034f387c54df9569ea6ff3871b7a04b117c50e21398698919c34be9a5dd0766930a34bbe516ea5aee18162665747988e390d10edca10105ba601e87fd1b0a73753cf38460a43a405b0262c814fd60c320e3519c8cc6019ab63f85c549985d1ec1712d0e7fed867559fe95adfb0d20621a4cf7309b7da131329e05f82178e64319b186be02aeaac4507b6a921ecc34386c75a00bbeb4e8b6dcbe39d175c24b1d84fce438b2c436d8807e492a9a37c390d52e538be1d06702a5188ed00648419cb7504067c7b2fe7185691e9630b7d643acd50b2fd02e2bb1e8477c34a4810aba810017f7449e5b1408d401775661706415ca7a4490eb6305b347442c0e373e0d60fb893c801857c411e76e6478ce06838c2263e2bd925e1f391775601ef3952eca33531519eb3470998b2a8e6d20a232d8d86549358e6f37204d0365dd6d42888431370b8eae12bf85f9b9108f15998d2d41aa3728095e1e8b60da37da1c735e152c140136fa97c663f1696d18ec6392c680e7d2932d4997421c99f99b3e1bca65ae08532820650eab33fb635d4984583589d8500dc9a1d4bad75c64401b3e410f9c3fe8769c0957d8c31bc74dcb35f9807c3cf6d076cf69200903fee3f853b37bb6b2c95bc32d93e39a28fc26a8ae702fce660a5402491217791fe101356c9a4f83ed9165eb8a61051a63d12fc93ec813a5a88a78740ffa8d6cf1e42a34629fd6e6fe33fbea68d96c7e82dc809492e8da2e0148ccf44f80aa04c52901757574d3f2fc691c7759ad258d3d5a1750755dc9b942ccd44e0a4940f4bcddacc4cf007e71e82ee11980c439b62d65e0b0954a3d4418527326a4f440a7c45e5447546209406ed3d07e4c3fc22bc4145770f23e3eec594de400f1e872913427afcfde90f9e6a4663e3396150f9c7147730892ca361320d6469d33f27a3dddd754eac5180fda8145a0239a516589187f52e314a32b6f3634b14834a9986d38d4a9b80994a75c7ab5e1016baa8df1cb6b69ab899db9e001f4ff029c31930dff5832d448ada4218d469e57d8a2fc19c89f1bc74ccd2e1d7f9a67b1b36d702849f641d38878350924ac08f6f4971fa044815c0617ae3fb6c1cdc66891d740f08f7ae12ea8b3b3c6edbc48630310e57fff0ca076b0a4337828895cebc51efd1c6932895424c79b1843992b618afc6febc31b8a9553e1418a28ca7472e1d53f9e80ca7507e9ff07b62bce723e8ca766391d28bc51e4a3f198242ef6b1af2f068c1a4598e9fdc710340f1680ea1f5f2fe8fa2f76e49f54ac01e1930a5a95d1bacb97b0d3e879badeb15e1b85b309f3251583ea2e52b25366bcf63d78ba228131e12246f61f07e4d388b8ad8d2ce2d91bcaec7001f209367cb9293160a002e0492cd775e033280b2bec798192a453358d9cfe29acc3df9e78a204c06dda0897006424377df4343e08cb5da2ad01bda98ed86237fb751173d5cdde45c4f88f7bf959b274de977ef9cd7acfb3d08191c1a455459b5ce79a2d5931d9b2c6ad85a54fb5afec8953bbd927107bc26a4fda86eac4ed2bb30b104edf1f501095099bf676b4dc3223a9bc2ce3c9ccf2581ed497304586aabf587235c605e2a0c0774bc120453291db65c83cc039cb060587945198d7f7556337ffe83ee8385425a7359aae0db54dfd758dc5811a8e0c6edbcdb25840ad0c8429d4a054dddac7c6f8ec309d3a4b9d5448438c486409bd6a681edc11749fe99b62577eab44057991f1fc2c9b66938e11d594b9257b595a68367c57dcd2df682acefc04054d307136eb0fd68780254a05b43820d3ef90b11979ee0b5afb7a1465c178701f743293ee3287e899997ce6b446cb47e747962c0a6a0b5f38832050e8923a781677495cbfef4380a51431e4e1610a9fe8b34c19986fd92860b900e89e70f4c068666bbebbec4fc4fedc65e92fb381de79777169d7bba2b8ebd95fff26ac88795c172e6c0752885488a4dfc38c85335b0e509d7905631c62175716c8c1cfefda208044b428e9dc8caf831c4328ea64d54efc58da64909e470f71927e8c9994f6c83845a574f224cc6198f86972c1fa10afa7fe64cb3efdfd0c7f9fe351a79c620de54c0aaaf3b912c51e506b1d95b482ca021283ea8c2f5e6b1443e43c76fc47d5702b3963d524cc9be9c893521449438f638211764b0c5bca6151a950ee5a2e00ed4e2da07ea8319e0e5428c6011cc9d84224b66e650ed2ec9eb445033f9425fc7331149ddeb7e66ce629af2dc5f7cfc0c225658a812a9d92a8a0a260659b4068f59a50b616e8097abb445451142ffebb038bf26746e9afe87cc9994a9fb51adf9cff76d4cdea38e15c217941200121e71b1e82689ade97bbd4165fac91d1b3f5b6fc6a800774381e70601bbea0eccc5267ca1a321b6f4f2ee883a429f6cb94b70a1e79de63c895cd02ba39673ede92e258ad5d3ea946123ff6105c9eb09ce612a77b145f1d577021885a84fec323e3a2a4d55b9003a70674cb2910effc68936d1730353a3122ac352768ecc5bc95aa82d682091cb49b33b832c7f9da56349419a0d555050bdf0b2370157a8750aa93ecc4b62fddba2b4c8aaa14144ab9c2027fcbe05bbf265f21f76c36926793f7357064410c63b43bfdaf1e580a5f392681c2a01d879b2afef8d9285ee85446682504cf67989c9cdb6cb1459cd4a42517c75f59640543474a80cb3ad1c02c182c9182d3e2e1025592838611f9e20566cf5d913052622a251a8051269ccb2ca2790c82db3c626cf7827284da20b1523327acb58605b843be4a5cfb6953ae7c13e43663b75639f594be90a00ff6bb99520b6589822512f9bda761266c00862a4dfb838233a20b8f34d986fc53033aea5f81f029719f5f74109c78965484106868c23f1be12f6c75088ed2e166a2387ffdd7be3a2224646f3f8160588842e5f3e6d53e14d080632f1c233adcc5886501f4c0404ea737fe8684c59bf6d5a48459e018a08460403ed542ca9cca88878c44b4fbedf3dc7f47fa10b0a80c61cfa9f5beafa1012b47dacf9a1414b691c8a87a7361b5962b89044cff51392750ee093890855451561ebea17597d0cc4e2bb93aa92c42df5800216c18b42d542726eac9607662e46cea8e2110e0e9ae73185aa78a983e299bc861884e0691f2f933b544fea5dda4003dbdf7e9e07a5e0f3007a38ce0fc5fb46c475e40f2be0a0d1cacaaf92916658887a063c8ba9d58c954c8a1274544f272c5eb79f4d51c8bf837a6e72cd74288f9cc8f86d30aecc3fb1710db787d96061af50b044cd28b92b72d13ffb48a4ff28ca8b1e0a09f81a00b9f1de444329e84f750d15161c600cdddb7576c1e3ec55bad5743f22c7f9a621f602d6d12ca726a60dcf402d427d70a1c04fd472b0db1855a07053f191eb5181ead025d88393a1cc35aabd61ee92b4d7f7c16bd917ea556bdb31bbbe8f8369dea0196d7cc835b6477021d685744d1f141152cf6d0184d1d59a6e912c9599c772aa3c71ce38d60fb4626104c2545c5e202645803febf7b183af26133b83abec97f00a898b7883a3f8e34cf5ee1b9e24cc111883df72ee9661b5308321513a14e8eacdf54a91fde76901dd5755571c34caf4db0806ae7e9a2301546918581a1940674e841539b57f7ca8e6674e0c44a42f82606dac33473ca3bf4d69a33d944a13f5bac400ab75d57a07bd61329d6d2f941e9300b2bb4aeef0619a946af371ae624c6f03bf658b98fbe791eed6b1d52d9189cf7791218168bedaaf678d70413b25dd1fc1a529efed405e33c1673ee379fd4ba4474f14ac7080a0af15cf9b10957a2ef2c20db8fc2721c988d98a45fea78877736273c478906ad569694f53dfad1f36c3e88d661ccc4b130941e65400ebc1a9c326081ef6f01c89e4c2a4f6fb0737596cbd40c2b090ce033a3ec48eed88e72245006b5ec1f8bfd07e70dcdb484284892c66029812c056f339bcd90d83b5de250509618aac11ab73f244447d21dd6fb31a587e941c59a410b271a4d42a4365f5465159924f6487e154e8571e0c430560c554ba58dba01de70d39de140a87a936efa2f534169c740ffeae20bddf7fbbbfb8b1b40647a17ccad6631a450d08ead8e1b37140b81edc6aa782e718cff6890f45d1c9a525ed181497ee54f596f571c3ab01e4fa3462c12e7f26eef69736618fdf30a7b266610c7f6ee95fb994f806d082e587724d6a8bc93411a48586246e139477c1aa48fbe8e302ad6b0292c08e9b262c69b5fcdd81827e782409277ca64c519864dc68ce16481b68d485475b55a8b8598219e66fc50bfa2a5a30e0db1c66c4c619835936428254d03b08c9756b25c1bd08fef4deb706c707f7c665296db06d4ff414d86bdd1a938936b69d16ab4b6a2b10128f1391f4417f59ae32d4de858122426fcfbaeae3824984cba6c94f2ba9f98fb62666aa0628c95542cb597eedf21173208494f7fd1f9d215a76c47efc04331fe29f7e7038ec4a18c75e10b7657df7718bebcb2fd946dd77b9f45d61ff6ee04c799b242f505132686ad2c28e82483274e1f6c5e8902b150989dcbd32354c07956aff073cdd00dec359891de7d393471b2c36063705ddd76dab76596d73af34120c9a669169cc0c81c3f36a34a0ef1afb87c144fe5d329e05cfa2d676e9c45857adc9c7f534b535f28220f0f1c1db5a38345740e447a8308f85b4580500c6dfc3503fb572f3718c188303a85186b0b06e889ae38423632fe48e367b9cc528cfc80e7d8ce79490c178bf46af6fc4640fdd2aa028df3f17333475c4ce4068fedb7265966c97732a12d798d889577f8db55def9a384920b56b976ce55084bd87dc6972db942ed7772b7303524136b307bb6548ac67a15924e6005c9622f1819eff0defa26b88e538143a0403e04c9ae9bbef5f5391efe4695a909264e903088ad6988a81164eab502987b3d35cab44af77c42de4deecc0d08d72ba6466e4645228427ed206945c7cb465a3c738c4be5fd695af234b57044d864b751c4f8eedacdd722c1189121f235669fa53b8876e7ace80e500ad65680d4b1c24f441dbf3277765559b252b6840af76b46a907aa0365c98f478820882241b8892133029a653c746552a0f8b1a08f295e6767000ce89ea5f175a95e92a94e2dbe01b6f72f97bb40b9871e30c27e682a966e70b41d6d54c4eb374eda8cd3e257f3a61660fbdbfab17cdcb556e26d0dcf759a1b8db119cf5e36c593fe5f2f4720c01396acc2c4ddc44ca44c6f8f68fcc1d103a7bb05d9b79320bdf938678ea58e0ea7cdf9754c3897ffb96272c9b87c4d1e220907445e0e41d8ef6a6a2bfb5c85dbb0ca7733d5031eeb9e787bbb8df55ab9039ad2b5369ed8eea7bb6df7706a6f28cc67f7d34b430b25d225b74fed39080d71ea896824c7744f5bde21eb0ecc411b4a23788057d92e0187a32c3b5247101032622aadfd0132bb8f09e3bc43fb4f8f441d7c63f9b7aeab87fd63c3bd03cdcedf92a11220f603bbfe5e8d9d65f8277f61838a129ccd4ed3b229dab6d74db601072bc6d1bd40351ba8a5a1df5501f6c28448b418b5da616e59537407518bcee91236529741afad1e33b8023388ca7e6250b894ce04919018be39362193941002748ae22ad2bfe3acaccd260ce4c82e8bbd3ac30ad22c87df65d51bc7369ea1060ea5f08f0d04d1746711924b3034d6d3317d21a3eccd7ceb0e46952348c9ad3a1b6d3581edcbadb2b81d42e2ff95fc66631052ff582a1012e135b898e550c52a0ee08184bb41b29c8d550c03a19821991aeed2b72bd137f96df5aba58b8f8ca876d0456eeb02d69be01bcd65532c40fbd5f757944213efb163ea3aa26895a707edd787de1051b8a754b1ec4ea851eb5ca6a78cc6f57c9a4aa777ea85305a6f728a94312baf0caae6baf68e3fea51afe642a2e621ec35d744b7ec00b3677de412b66374ba5783486ace10397f7f352daed7decc23431ff64c1f81fc63b75cdaff15381181c78ccec34e984a706cca1105546db23f6164143d0823e114f1434e9a9930de065cb0c999e7c1a0eb67c1d622e4bd2780b14257fc2a59a18993ba9f4424dd56113c7bbb905470044147fe6dc8b5017eabbf14d870a83c4b4d036fed9ef97d07c3c3d84119585d554456fa49b0ad34acaea98ec9f9016fdf30681f81567cd0f441efa222004b04e04d755bec67ea3fa8de839bb94caee11bc4ad538c5ad970c2c820af943da634e86cce49ddc38940731de9028019e9da868d288237b70983ae313611c4d6e14436bc4975d3ec41c66f0f203a9c8813380ead532e8c1f920773f08387037bbdf69a54a30a5db1ccd4bba315ca654f4e244fcbd60cf450df8b7396212c7c5f7229783ca3ab3f821d20d6e14518ea74e8586e9b2e4c9c14e81e14b1542b3607471739a1b9bdc74f254cd5074b9d6c80c2b1559d0c4a4b9829972d76ec47d579671a6c5e49b4d6e8b6434c8108f5672ba8e3c2894859e59c9ed609d528d1d4ec6c76a5febe5fcbf24347899b43b1ffc85b24dd73243be3dab5f73a2eac38961b7385a4ce1e0f948a80a490e3956f71df604453764e6833efa06676cfbdc2b627fba3ddb10ed516e452cb22e78af334b74fd3db2f0204554925e7221440f21c418c39143b955d88a7b246362819112aa54d1061d1ffbe51af0117c112bd2bbd9738c559e7dd22284c208d297664809fb9d79fa918432b48d1087ad076c7ee4590199bdc48c61cda3cc7064492aee3d254a08d422bf5c33fab92af0305ce2a68855abd0d42f27005f11ec4cdd115aaada0f9969ce06b43bd5ef4768c31272afcab492f343e5c9e93a588ad00b27dfa5841c3f4904c0dfdac5ebe032912910f004c4e5d1df503f4dfb289698cb61ea48f32408911df88bd2158d02fbf2b3f8c55963ec6fd8db28e0006fd346827f79566618ffd1ac9da659d37b0b9d7656d7c42bcf74f32e4e0843b9fc884cc548bcf1a7d9e6ce3113114996491f5a0e0cd60a02b5a38a365583e351f095965b860b908241a29efbbfd109a47d7944685dae991173b6da514f4d8952a15aec0c00f21b087d6f539ac122245b28801be24d20902f6ad892869c1da809e3cf38e8619acff91de1042a2a0f314fdfd426d254b3c10eed03928b323c2d0d62fc68a723df82c0893c7c651a4a4746066740bd503f4f78e992dc81f9c5936d6e8e292a155889efab88f94c194a1adf4cbc606cf1d50b9d719f4b9cde4ec4fd360a9a7140aa627641ccd6ace04494f8ec0a60b2bf18ab6264c23cfece943352d32ba45ef213cb03b402d816ad35e74bdff159b702b06e34022f5a3ddfcfb026542cd4e321d9457501d905bd715b911047a906f545b832cda243069156ac0c30fd3402c5324e901a6380a0b65b1015adeb0305971c8bbdd5212360e911baa5d2f538f780973a3ef98bce909b163c23f9adebca43da9e615c0dd84962caf210bbd1f6d2da76619f44fb4daeed9ef7dd350445d28ef993013964fc774652dd8e729d56c20d2793e3ec64e616dcf78b50320b8c4745f56cb6cd0832394bf26da16d5f1bec325eea42414969aca8e9c9f36ac25a74d8bffd419948120c8879e45f1fb2a62f343e75439090421f03e6c43a9e3c0b32cbf88de3187736a229ccf4612fa30578b4e944577485b725a2f786f77190e6690b83e6d06bee3749e9b153ee5e24286728c71d5e11c78d2589898fb07eed099ab356ad257f89a84c45f6bd4f7269a86d613d36ed427c2ccc45138481a107dff87a07b975ff67fda73af811a29f2b8dd7e479f3e00590f6f3ab37b892b3473d910b9066292cc6095d23dc422a6be53d9eae37ef782d3b6e2a6257ce3387a80420a72cbf0b8b9e3a919ee114905b2c26d716b72915c9515faaf49d6f8a0ae07c64f8ce847c7f7312abd117e6fb0ac3593c445fc7c20d801b210d4c0fd7120108bf552c016857b9fa15b3f4dde5907e4226af75c043552dad145260fbb6534bcd3292909df09ea2252a9e0e346fae384c0061277dd58e15ca9ac9a196272503f411ed528943633c8afa2d36493a7d9f593ab6b5aa41c4649a8f6a583d81b1da5165b697970d4b40674cef0a9062101ba78054997e98aea3ff006bb06744bbe721af5d0c00bd88640d852d606ce4a84703497a4e673229b79cedc958fb61bc9e536e29b222e22ebd95b64aeaf5775895c29de7083480f06ffd8a5cb1a07cb4707e2f1b3369ecc0cdf16a94906e7b05e083f31352ee519bbec1787392c15fa28a04f206102a5b9acf758cfa49e8b118e703a6d18800c31ceeec3a07558d37e6fc6b2dab67fc2f1594305bc6ead516be43dc790202bca3dc427e706f160c040fc93ac6a628d8b30cdce8465edb20c3b9c3fae505c8b46ba74a91ce4d147a530d01634445d59c88b5feb1c63426df9a77a35a2c6bd50d716e261fd54a7866d8b40d1b6b6b951b6978d9f815b2ffe788be1b0d9b2d8744d4c41b48247effb78bc6ea160dc450f3f62edf906617250199c442b808ee8d357ad74995922c6507be3db8046851094837237cb8bddfd81d68e024403c2174b3cb2f1a1ed51c6bb125bb10f40de8488b0bcdf42012dc2293fed492a7828be5c70656039d792d7c06b2c3ff5da271ace29ac70ea744faf39cd3cfe87ce88f088e07058181bec06494a71e31ba237cf833053cc2f0b9be92181de20ec9d618d2b87a009cdf5a094e33ee54e46ee9fe473d34ef5dd607725c47c8d18730190391c6c0172b464e6cb2003b328f6330a545872b0c1a7c3e03bf3d9a74276c06057187e8794456523c8ef186266ec9d9ef0fa286f24098e7cbf46bf7cb9be275fe9a50d219fb20552f7fed355bdfcc83d65c2538d2c82bbc7dbaec61173708f079227206fa5789fbaf0753a70b403c91de48aebf4bd347e87a1485b403d24f0447d7ce6385211155187cea8ca2867cca74dd824b0c62d0928c273db73a0ed610c7ae0602bc81ac788e14497ad36f612e88135e88031d81a979969197704dbb7e580d480d076ad71f3f888019fc1e16deeb9199a352e801010eb20f68f94b0f63bb5c6cd1e9bb9fc4347aed984ca6eef725ae378eb092ab52bdab8c79d96fbacd60c36d6a6eb8b1b79d9b8dc7e42c4af74f8fed718efb7f14c31155df84907208a8f40ce0c8bf6bfa0381c9fbe4fe28fd7c263a850a4be588c0afe2ebcecc9412d4fd8170374f405c4272893fe30a72e01364415364d21df20757a12aea8459502443feb6b472c05573aa908644b9694be9e6a61ddf0f0c8239080c687c3e2eef0ddf8538526514ed0dd92a7754ac3d10995477f7d3041fad439955f82d783425d93e39933f0be70593ae007855503f59a152cf0de26bc36af8100731cba92ee929a073287c0e4852743d03ca0675aa1a9ae36fe16bbe717a85e72a380ddf9ed92032daaf1e88f3aab0646279a97a109eb0ce3ba0f5c0ea5be6922ac0968f8d5a47fcadbc135ac4d6948ae3ec39f7bd49cd5d5a43af38fd08d9accdd191de6c85b607a35296843267a6b5b0039860b84651315ea96e489e9d206f9a4e8dfde15a90e0dc68606fc3be6ffb017b12100fb15c065e9e8b7f99f060929039bf21ca94b8093543d16c6198118b7f4a7d7c873d45eb6b26e578270bfe87994e646915bf3d5af90be0fb8c6cc438bb28ddcc6922cf193f8f59a114fe9388101cc183e37bbe765553f91a611a743622c76848471503210776d26138505926cd4faed3278785faa45607ca35b70115682801c7834d30af6fca65c5fac8d63952389317a1c940e1223a6cf3778329f66c32220fda5aecca0026a50c8b49541a85b579edc229e842a5258c0a92b63161e90586496ff19c257b58c7a745a5588db1b904219cf6ee2678eeea6eb308c4bc4a0d5d1742665ef143761214fe56864f363fcc8c94a40fa7bae8f2ed91bbb5dab9e90cf5f05a2bb87a8310e4b02b5f62b8bd769d329aa9275cc8b502aef55b4c06a34cce118813da22d1f0b548bf95869b3caace83a71a3459f94cacdfa0f5b4313eea32024ae67ea5228cefa81ee5d786b52783169c5cf483a848a2f7bc35106c969cbd489c0c890750e17a8a3530393ed2317e300342d883295bca08566a6ee0aa531e1836eadef61a474e34ed3f53fdcaa5551aae7e0fa67bbc49a745c94c7386c9f19e134e065f66e13167e849e64727202a1d8bab173ce1c5c52963eac52a675beb8c2df792d683edad8e79038b2ad8bff4723dff958f4a7e7d9312966e5f6127f988f34afa81f290e0a6347f7183cc2e7e2801fcd4c8ad6a5ebf8c579408718c260397b479cc137ed4d6248b8be004b4d7bbfd1199a8b3a43ae3a5dfdf0fba64c41b101d1967d326e6a691a6fef6de9bb1d1e8eff6083a0a67482c51d3b005bedbf173578315e4288271e79217c5607819fc7fd4c09f9c3dc513e472760fca96d4c1543f60a226159fefad4e0225efc7468430b4482548a67c603e1d641b074f894f8ecc683f53d1450e5f1a92a9fe1695b2181e94b6f68327a04f1d5347980c36b7b48dd1424844a76ad8289dba4b409dea6cd2ca8cf738544f1d78ed093ce24dae89f6ba271c243cc87d84c467359d19ca00adbe3ed48cbd180b612a233199664ea3446584d2680de4aed98bbbba8e244b0702cec9b2191deb53632d96c8c5d3183d97c94e9b34f3b39ee608d090dbc0fe2fee00d81564dd79790d75cffc80d772be7fe3a8f86b961fc2db0ec83336b2ae3ad78e646ec92e287bdda73b7a63274aef94d891c8b6eb2160731db1ccb68080f5704416aec10755d4e97751d3e091303897ab59b8fd5b9e1905b85ac76d77136593b4d84b39a1ee8c8411553ed2d1207c47ecd962e036d80984e03b7afee783e74674ae55d1d16c76f3576b38d9e2eab84ae9369bf664731c0353c8814e43cc104313d2bef89e9a0e48e9cf2ae7a27f312d27968e8ca917d665db5ff060e8e42ada1af660275bd93e0c6aeb127b48fb053f747249b1c0a12be98ece2f0f447b48b7429c0147b90a045e5f0679f435b1446206233d95fe7c8a90d85b54b5bb8717091bd2d9becf8f5501532a61ef3fd137c1bdd6ea3deee31183f44ef7b39f7baf475ab28186bc1eda5e07ebb4ea9ea74d650780ba076620efa741d548475991a2bb056719695696902d62ddb2910336d66e3d14efe43027e0d63ae81bb34b1b33be64d5e9aa87a943912dc8c3dd5dd17084c4c2f9b27374247394f50a814bd407caaeb3163a3400e12cb80d8a81d5de9f9c55880e27af45247249aee60f4bbc06bec04a7e90c42bb0bb46e4710ac78a42afdc7e8463d91b6e82dcf338536455cee05ffc519412bef85f8591cf04f6d0b66432a42c54b0b7c0f24ebdaeb9301a482d8b8a29c6ce6fc40875a85f8ff74cbd052e4aa1afcee7dead1b8d32ba2992a0d670879441b35160731142a9906c63c1687791f662a4c2850dcf9e2c0300ca6a3f8834d6b08d2e8454634b14245c573f686ebb69f18d8ff717d87383e8a2b04800af3a2cd0630a364bbe246c77813b5c5631d1b21b3851cae326df4fe7c173736d39c30191d70b6dc5db271ce62801d2d33f05919caad087435f80f7e316813f768bb3e32926515db7535cbe4031edd1c97d7b2351e5534de6a6c0f9701e5eb43992f260262ebbf2f4c0935affeff8350d1d41066a1d33bc47d8b16383cbd15a46de5a846de1371da16dbbc06364c83a322668739a2dd176075875d9892f15968abee1437675fb21a956913a305d495038ab5768b5c30d619a70dfd981ff1e528c4fac598a581c56d7e907fda3b46c89fe330429ddbfc92ad6c3fd14e1e77518c23c2c75b9e3f66c198f94af3b9eef71b5ab15df1f03858d39c37a08525edb14732997a1df1c07c6fb3442491c8eeeeee1d4a088308d5085cec66a89cb3e15bff0d395f76a61e5dbf6f5f8e1818b431fffef6598bfa5d2405bf3f6bad2eeea717c361a783fb2a8336ecdfef3c188cd0500b3e1fbffeb62f478c9d9eb67dd71ffdeee3eae23107f7913fbff7a3c7792218bfbf31c1ef7ffc6e188ad028140a8542a15028d48a2c4bce094eca2aa5eda4dc644a488771ea464ad9e1ce4e4ed6ef939fc249e1a4705238d606db77b5d61dfd3e85b7d6faddb5dac6755dd76defedc80f43186fcfe1e7b618cadc569fe3b407a788db309e5dc6cf7198b541bcfbb5bc93770851a65dd77575ebba1af17737e54ab9b8ef3e674d6947bbbfb17bfda99b8ed24b5f779ae8abe8eb9ede144e34755cbe299c144e0aa77e97071fb8b80b1cf64801450a201e8170d8c383845618f930679d73ded1b7b770cbb95efc367fa75c4301c95a67adb3d659eb3df37d98475a7fcea2fc221c26d7bf03df113fa47f539e83e8f19c71f122fbb5e71045efc213696f3f6fbd7b076cbadde179771e387634703cefbe69f6efdf902820d1b42249d1b640ef12e6bc5d67bbee76b7ebba47fde882dc7b2f8a85bae9ba0ed5ba5dd759dc15d1e7777fb5917e4aef6bccefbdbbdfd0ee382e5f9107e7b673a05c430159e1b009788c4c579e9367084f8f28a2f00170d813056ccef977feb5f3efe4145afcb5cb61c3f1677a2ffc7befbd29213bea430ea97c9a0a42af950f8311da66b943ee1eb7bcb5bbc225a1c52545b5628c11ce08678433c20939c50f39f43a2a48c4a8d6866a61eca93c7eccbdf670cee8c718bf8a076709efde551617897ab721d6ddb639507eb99ded6bdb9c8f02820282028202d20a49fb238a2f0a1687707e0e9243e8412185d3e0b0078a1814304e000e7ba0f8c133cc14ee0bbfc2aff3eba76e20bfde0e1c54fc3ee4d1eb2921f5ee1e798571e7207bcac52f8efbb0d3f71ac1a37edb4b6fdb3014a1efe631e7c491e375f7f874ee8f368125a260a816c73c8bece7aeebdee55b3eee9e43cd82cb17bbdf2bbaf13eeae20df5af78a3bf9efeec89649c2a5134d3dc4685ca181544f376847e071e31c5afedbc8202e20277968f2ba16741b5f8a5bbdf8f31863ee218b1f679c3845ebefebbfb0c5766188ad0df512d2e5fd4753a58fe722cf2be7ea959a4cc78eb222030de2c5a6a0d16d2eebdf7f17d8c62a17edcc7a820bc6b91cc11c542fd40ddf0ae45282d5f7fde1dd5e2fa718e79efb82f7a4c1fe3fbda07b778e5f196ddc845f7bbf77e48a41ff5239aeedb4e87e8f36b2f8e7e7a2d4f3d1791c88328d6b682eae3aa7cec74c488805801b741dcaa705e0ea9885e2586f60ed10ea9fcf621950da3bdfedb454070dbb7204ffffdee5fb0583d7ebc7b17afc50be91d7aaaed8fb4def845f6514042df3d8ad53d0a48d7a15ad8abdc720d0524a66e8c3b6b2cace1caba98720d6f149068ba2b2f2d5f8e8831f1843b01e3270e7b9c68712692c0728a708edbb73c1c6fc10dc061cf1347f813379cc461cf11284f08e199779f72b1a45a52e6a6c61877388db1eb68c83c729d0e988a93724919fbf1be0c4fb479301fc3832bbc0b8b8b39829bdd5d734aebee31a46edbb62dc67ed775317b47f75cccc7bf21533855c6d718ee655417dfab0eaff5052eb5d6ca59057076c3c474a1d7aff230eaee3354d96bcf41f6948bcb87f1ba4e87fdca75347051be786959a93014a13b8f9b3b1df677709b7ddd82a1a2437a47de144f4c4cad75d62debdbfa36d54addd4b72921bcdff776c0fc0ebc7a7df2c8b78fa9d44d2a08ef77a3a18bb1fd8df5add7532e7e6b153a3c2fa0f67b5d01b75f7dc099fa5516b421e3ed86b972d300136bad1f03733f75134df56da703e6b7bf5efc1b538627fa185ef7301ee4303c154f7ba956fde6cc265b61d7cf65d7af65b3ecfaad6c17f51b6db239a35bb3445f7fc7f3a5c7d0cce2f4479a07731ff22dbe8aca1ec59dc289a6d186b9dfe9d69ca93fb3441f77ac43bbeb5e7f7a0cefbad533cbc25044f79d47fdfc22afb2badf11e2baaf3f73a6fa80a5a8038517cc8008e294d64fef70fa299c98eab89dc2c99f6ae54fe1e49f1d8e9c726d291c593fbe03d72f469cc26181115fd020c618298d34d248e70acc02302223918df01d6094ee1d0e65911e9cfedcd9827e85d55fdd7befbdf7de2b69b5975a7ab186b52de32d73ddc675b4c71e5c867a50fa2216124e5f53984426a13f65103984d3af32186b61d6421412942d4e2f739020884622921b12201370c3e94f19e20ffab5861b5c429b1b2ee58d7c62e30282506c5edda6c5e5473927a535ca3929add5d26aedbd186b176bdab6e5cc6d96b39d0d893a2bb25a737634e2ac0aa55e3f5116eaf5175a38ea52479cf5fa0e4fb8f55c3ce1d65b09b25e7f81d36761e1acd70fc0e9b7ec30e3f623b73bc8b83c35415fafe01fb017ac05b01f37b83ef07bef4d09f00d0aee13f28723dc6b91c056ab74ca25a6108bb203223cb1c4154b04e1883e1285b64af0a0c7124de09dd4c3a4d3628c7dd04310590288257ce86189214c0099b01890d03e26ec871e137643867bb18d42d62f49b822892c7c60321842014004a183234d74aa80e24609bd59b24dc1ef8d0109bd440978148a20a7acd65a234ad44009237c2811448996122478010a493c214812412948a249124994e05142a6c4cf150238828e33ee18b786734e96b8fb0adc66c69f31e6881cc3781c6686fe737700f07bafad14ab688e0b3cd21e375fdbc5cd4992b4f7de3b6ba5152644133d12bf746a3a573206f83c09c954ca70806ea19f97779fad25323fc76dcbd49b3b706bdf3ee79d662906d8e64118f538ce793db61c7b10b19d47c412b9da7fe0856bcf811c3087d0d459788c1d8d70ce10ac41bd8d731ea4e9bcb87538e68699e139fde7547ab006f5b46e7a316f59d3e28ec13b82b56bb750df8163c8b3e6a847b994e9ae0a8edaee3970bb33ffab027ceffd741049f840df24d144123d4042abec23cbf88cb7a191347ec6d7d0f819339ec6de35a4a7f134b68ac693b60d8dfcb7ded6fa67c5a9f79a33349e620ef37d72180f633c8c5e5d374fae05cfce392beb867eb3e19bb70049a297e5bbfe8169c11ab4e559f05aa04812fdedb50449127dcf6b792249f4df6b9149127db96182600dfa1ecc6c9668cc11adf23041d0867cfa30b3394363c6c7fc8b95680a90445fc643faf92194a95224897e0c2e39fa343c3c4bdccff0e08c750a41dcd3af52a44c8424eea9f6315eaf2e195e9f3cc6eed587c8a32f1f301e8c56d72b789d22f1e2e2752f08a7dfe275cd573c17dee8e33a8f6a9242c2988024511841a48c949bfeac912418ad9694b1af8fc2b87105812104860e8c2152c6ee05c820495456eea1b5d68ebe8e0377fb3efaf8e8b3bc6507d6e89de338eee973de8a77cab1848e1cd8e4cc0c1adf350d0fcef0a02c719314ba67598d305a9eeb21ecf4433833fa64a34fbedea2dd716877cd3587ddee2fa36fdb77f401c1e967bb3d5712ba6759964999fb24084a9e45c952a4cc16dc4acac0c88f261e53131aba66096686f9bd0649a23f811619a7de8bd387998ce83efa38fd0ea3f549190b8b4999cde3a3223b46a4cc91118f94412265eca69043cb0106ccef72631cb1630e44de378c16ac41df7403182d4edf76f3352ca7a421fbf9e608618c3444e5735c061a0ae46dd98211326c414573c87d27792bdeb6334bf3619847c7e0f6c3e7ccd1e58dcabc5169a937fa4c392d765107d4fa455eb7c121fa8c39d9e9e81ebf8baf59d9dbd7a86c3c4bf5619723e72dbdee995c5a3eb78540cae86117298fcae223e96d5ebf816b2ff242cfd50fd2bc5119f346659452d64f92e29b80d0f1ede3785f1e062366a6fbcb61b9cac23291e48e6819979fbf1e74cf9ffe9e7f342bff6420d9132a25178931de183f16991f63eb933245f24e362265badf7e5e56e7b345a4ccfc987f7e5ef4363430ddee5e257abd71cde8f58fb60d4dee3c2a854babf3f3c2e484fef00e979f615ccaee31ed74b8f46bdf79bdb27afcfcdc779e0d8f10e32537be788f41e785132f00b65ccb864024f19a781630011e11c8400d35365cc004d3779b98d011436d1fdafd696a438335cdbe4adbb846536935d0f4e7c3789124d903dd21926fa107ba9316c023cf08cc1a6a6cb800e424294329fd03d8d995358b0ca343fe940f1f667740eeb873c890478864b27ac46c668f98cdee11471c818fb8da11db113a3e94324629988698869886988698869888988898884099a184b1f20b9313ba6f2c4ebf56abe572bdb8ec1b4bce8f48b48ba01d1e453b3bb0467c01fca0e7f78dc52bcb5b81ad989ad0f5ed0b5ce574f1b3bd42319d179f2e7e7e78c14925496ee855d62ccdd2cbca1346145144112fd7bd412ed70bfbb506b9622e12e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4bc848c5430b7d2b95c5dd705b9827a088282823a57e772b954545454545454545454462a7b341a09e1b80f85be63ee72b94c3170b95c41ae9711aa70f504998680b285e9055440e9f9e9f941052c77db73bf6d1f15df8b8a1692161216f75b0722d7bf9986d0db8b7edbbacddbb88d7bbd6ddb73bb6fdb3404b7e1c6715bf7dbded17539e79cb3ce39eb9c4d2fe8e1e90942c50a876908d310a621664be46a30837c8de7076278842e384b357096becb516ddd95056bc017e5d0217f4e192811441041041177ce39e7a494524a6badb55a6bedbd1763224c44c839bb1c39b61e4c414c2e083d943232247aceebe46b9fe3d454528c75402efadac900b9a87bfab6d32145deca8f9e0717aff2b68371c0ca8fbe6665773ffa1a17bb7b95bfd8fe0d29d25f5fa4378b77a26d72e9f83377dfe5a83926af7fbd1c71347df0f93b509b4e4e29649149081a5a64b2d94cde39e7b494d23a9bd54aedec3016330961d26690f3ebb6f373c8e0746749bf1a2f145c5452ed7b6db1502d54eb3e7d4c69a414f5030564a7eacc5235f2b1787e4001f9618b51995b7c7eae5f2dc2e96f0882944b926eca2549b74a4afbdbaf5eea6646afc67e6a123e4d375a7e5f9951dd90c28904883fe747afc61b138769136fb4b61ece2d9d18a7354865cd99d0c7dae2716314c47ca35780e85e3fed43efc05fafb66304768407f54343b1846c5ed519224447ca6c437ed08a025a51373f3e2143a40cf6f17d45768cc03614906f07c957c4080a08eac786626d2820dafd5047ef63bc7b64bda080c43864e1c887e30e8f5be62ce93c41cc376e930a74afb1d941134befd0bede8dfb5c63e576b7815ddea99b688a5b5400e5dabe31ebae472a8f242191a4f9b91ee1913248a48cfdf959425a4d27809cd6ba8370530ab4fd588f2091323d9a583ac62a5095d527522648cae0e7788fbca770a269779b9e233abcfe4819d873e4c5e7d7241388cf8f5d0a279a76eae64a1e7b07f6c6bbcef013e69c7346fa31eabcbce05ebb9aa5fa37ffdd31c69ff1da12a47e8bab45486cb5bca48c4ecb4d4de100f1fa262974af3bbc3eccf9bb36cefca3dfaee68c96cd527d2dfa1ec3bb5d75abc3abdecfa365f86b4c7fc1325efb88c5eb670fc6056bd4cfdfacdbcfdd63b6fcf1daf30faf6f4aa2ebf79616af7f636e5e870182d7d77a4beba5e0d5ae7e161a010a8542a15028d444a1e69c34140add7a2fbeb6b3f6a258a81fb7ce89fa71e79c2820311f8f3e587e44cb722365ee5eb1b4a48c4bca3c4b8f880262e2d1261edd6d4bc83c370a3c460b8b7971f77da2208327f682b57ddf96c0e3772cabf82620e8f89d65c5638cce8bd60a48f4172e1952f01814f37132df60c6274befb05ff9b43f77dd73ceabe3e3b591d6dda3a4dcdf5bef4db5523829974d0a27d29b6aa570eeb5299c68a238284de1dc903cb046157a7eaf303e6129570a679b39b1168542a15028148a721c0e93738f62c5efba6eee1e390da250af59c4b829c58162a180a05a15c5451c914a190ec54255548d1c8a352115edccd2fd9007672977dfab0cf8bd2ffb6cf2a177d4affcfe111fe8f02c03402fa020403f8046c0440a5fb1d75e26519838619284c90e131d262e262c263c7051d8f296a3741c2a420c99e32284f249922b9070ac65264e3967aebb62a7891f23b298131e273b35e8f991d2e34406ac1e272f0d8a1e2c7af438990267f284f7ba7212a5c78916f109571871c50f57b4ae582d99c292262c692d49c2122d9608a1c7498f931e3d4c8ef434d9c208d409c9c407898f119f1d1f1d1f217c6e7c5a3e2b2ba460c5cc0a991540b0d6622dc9eb085f89daa66d5614e1f2670db8186c79cb4978b8b462888ead6859b152b28512284a84a0c447498f122894ec284142890c940ca1e407253f926c91244a9227498092fc24d9495224c9e7c3cb934e31b45e9e74fa01a25f483e4f66cb0af143c26e9013ccb00b7e58dc9341f4f848e1304a8fcf931e1f2c7a7c98b0c05a5a3c9b7b20a2945992acfdd23c2ef25ca54c6ca574bbbfc4e7b694978e3ca4d21a394f1e52a1f0f0f0f0f0f050faf295ee178aa91432d03d7faf1d6863d2af957e8fe155f6551f922528092d7b694bacc84c3c77f3b8a6d051d72cac8e181ef70acfb685ebdba226e172052ebfb8e22b32e9e23c3ac670ba57787474cf3c2e2efb8a145cb2542a4c484c52989230f198784c3c517298a685154a942891f07e5d41b4dac7af2d68837ebc5efd4c03e9fc48b5ac98eac0b87bee79c8bf75cf7d4dc7ed9abcb7461f3fdd91e6ab3eb69d5d59dfcef76949e8baa36932263e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e373eddd162075f8691c6bae294a120e85eebd678600d4973f01b3119d1127ffc7c60fa81e907a61f74392024913807409a1e3cf0505fad59e270ccc70e803e6089fb6c658474d650e8bbced4a345cfc1bf21e79c13da088938aeb3fc7aa29028e4597eb9188d277ec86deeeb37259cdbbf80a108caddeae37ebebfddd7eadd3dfee55c75411b97c7ef987bd2c5b57542ee40e4a6582cc61893525e199bcde6d461e7ec709862b4d258c5618a4d6b8ae9f83aa42976250eec836c6505baaf701aa5acb57af4a57bc562e32bf4cbcbcbcb8b4c46f94c3e703d618326b852ad542b85937259142bc2ddc9e773dab7f6e74401a1734eea6119bbba71b8f46d24bcb15e31e376cedf85b6d04eb55238760b7a22491b9427fce3622a48ca2565aa1685c629d7945ea4f2abac299c8d8bb695610b49569183a19fbfea68e03df41acbe7465ae5d1d94a3b1d576eaeed467b5b9087db0d9fb5b244f1431eee5037577b2933147adba89624c53a03bd57d376afdf79d83af268c8f42d0a48adf2b797554288888e98ed73ce1bd58af146ba23f26a48c64d4e1f3a6aca0563600d597570748fe112da80f225889324690a42c7af9b5a4e04fcb085aeb71f13e89e574151b6a00d680b8a5e0a674302cee059fad980b497f15f0acdc4b683930ebf3587ad2c284bb987e596c5f38fbc0a024b1a5c6a2a8553cc7daf8fd719b79524d537f5a0fba6d30ab2e9f0fa5b6beb519f263e8d984ad9b6c8b76d5b49991e1bab6a3ad0c6f6b53e952265b8af4fb7a82b2993bf7eed4103e70cfdede7b6cddfbedbb8cd67f33ccc759e099e8648b6d6da2f072b1f34d619f215d931023bc2832496e40748f624080a0ac8ca052616481a690476c44624b19a04263ee4405246933d09822265b428554add42cacc979a163d8b3f7a5da5ae2340dce3b0e7c80e8ab55115d698362f5aa0fb2d72ed8536e0bd1cc7bddcb6ece1af2cfad6ab14268b504d2d1795411bcf29ca0403ddbf0a2e5f62ceb4e4ffbfd2387dc85f0a2775936aa55a2957097265c939e79cb53eec2610924c31bb19e84bafd2ba291649af560fc5aa75d6f9733e272194d1ce600a58ce11263a8ffaa56e52ad140e7c219e00214acd81a27ea058a856cf0f583128c48260441c68a03032b46b3f9a9ad03f34646877cb7be74b4da31d0e19f7de8b310c86d16ee09ab66192d60f5cf8526c9222872770c62346e965409226e45146b92f10657c9aa2d09c9c19fdccd28f0685a692f49245ad8907badb95f6c2a57c695752c6f660fd684919bb75401e5d36887d491998b8b96f81c413006fc00e7fcf8024cdcfa1095da1141892345f76a07fa48c04923d09923272eb801cca68368a3292226560fe728001f8bb5c99b14196e64398370e763ab6d7368d9ff1ddaeb60fda88f96957b6879461e1e75b96fd11718ccbb3305bf819e3f22c70acd1caae5c220d1a3f63c6cfd8aa19d2f31e7b1fd32293a4297261ad3ccc8e0bcbe5874bcbe546ebcc19d2b1e10233c6185eccef2893321dca5a9e48192c65a0481900e86f61411b319e638d7ea44ccccf1f014999fff9239994f17efee88994d93f7b4682cfceb1e4cf9052ca8f79e97931563a7c8e7e5c58f7de2943c605eab7c85a82e60c8d9796872bb8acf02e5886d76db88ccf976b4186b5d2da701ae302d686191e4c7cd2979e860713495fd23e46d39e05ed3dedb7f6250fcf92f6248f8637c3c378db204993fb3e5af1f931bced833566f77df4637fd8f76c0f499a1fe3d99524cdb8330d2fcff0b46ef40384ee76f5e2fbe887bff8e91a66f433a71dfd8ce4e8e765c8f8185eb7e1313e7738627c9e1d0e4a29bdd6c6d8f01823e3a58cc75ebf81cbf81b5386e7e263782a7fbdadc3e10286d757bdb25e782b78bdfa78f17a7db978bdfa68f17a7db1785dafb8a8e89f9fdef284cfefbcaeb9bcd94de7db0083dab0200130820ce977dc8b9e87ee43af0311f93a702ffadb7d08c601dc8bbe867bd1aee93eb46fc80e442e574c4774d591df1f63fcdbb6c90d856bfd1bd3cad813326ca17b9d9341e2d1733b07e05df8de2263799856cbb7c85a9eb404b540892e04404a791f0091c68ca7f135339e46007ec60c177e86f5f65fef0130475f74c1225b191919ed8c8a8cbe1a7a04e05df86c7a42f7d147ed4760c6973e02349ea403911a179ef43a0460c3cc2ffd8c2fbd0e2e6c98b961ec7640e9677c4d69c6d77c8692d47d48763842dbb6718853fae6995cda7eb7ab1048d16fc3a5eebe1b78f737a6e430f65c9244dfd4837ef9194fe3fbe873f12cb2951f7da3225baf5c9ebafc4a860550f978cecc78a9e596ffd27bc9c24b293d9794e990c70b2265ae2744cab4f0f47bf6c1e9aff00f8336f4bff8a7effd66e169a1adaab059922b177b45cb5854ba978da3cb8e30287b49d82c4958cb96cfb16cd5ca36736155566f2235faef6b2a5bbbb26db4e5374b2bd992affa7ddb56d18f859edefbaa6ab78a725b45a486d35bcba23d5f1226e76ab65ed5fedc33364b32b455f6e98b6aaa1e2c04d0e03741a4b934566573c266e98351266313a6529540071afb73d36f96e456d197ca0491066f0a9bb129a79c4f5f5ccedac2777567d6c6ec6bd2d695c1ec675b765567bdc62a6c3ea4a94faaabbb7f96e25b59259d1b53d80e2d3651fe12b4a77931e32faca3bf979d87c5188f9439a3d221ce6641413299036c6874f8d93ae41d7f6020a03da4b1a1913a683bcad809063ac6189e753efd130c34c4faa5eefe54ae341c35c4304bf24f4574c77346951f4602da73f24921f92fdd731b4602dc6fdbc6bd7cbcbde436aeeb42214dcb396fd54945a446f4f949a459922d5128b455cfeabaad7a892bee89d4e4d79edb2aadca5baa6e3815a1e7ee271efba927c8c5afccad4c5ffe490b0d77873d539871f99ab2156dcd4fc6e6eeb027ca0e9f7fda81a6bbc31e2548e173f380327e839d9d74a0e5eeb08a1e78388f13c7211e59f18931cca439a3d2813ef752830e446aee879efbf82abc75b89b8804eee30fe1fdf252b3120a711ca5b5cef8a43f67e856c12b92611d7bc5d50d2d95589461d92ccd3f7de8ae62a15fc15ab328c32b16d87c958d63b334575edee5344b2a7f57ef62ab62cb76a2196cf4a155dcf48757f9b9edb394c9d8865f9bd55711a9f9a7fff1895f45a4a6b26c0c9ba5a98af9975dc38d16181fd3e2f693f1305ec6c7cebe66f27edc4c2565db4b756778c2ea56a954446a62fc55a988d4dcdff89b69fcfad8e9aeea7708b35f8dd9aada82515f05e3ab8cad8adfcbcbc35859987f799897d6caa69cd9d87d4dd98cddd695b1bc78957f61c35655d956915a70265bb5620b165fb3f8bd606c555dbdbcfcdd305b255f2b2bff4267d6e557de65b6a6b5b139651676555a3ef42d52156335a6028bb0afab288bc5195ead3ed992c957eb65abe86c65e5ef9eaf599af3c5e7bb6cd56c8d46bf22b3abd1bb584dfb5d9d595848f4fa5bb64ac22a8c45e5439ffc5e66320693b2999cbd56b1d9b2ab95ada2b2d1e8efa6ad599a2d3edfc556d195fd518ccfefb6aaceb4d62fdaaaf96d55fdb68a484de8453f5f5a06e3f017cb32d9765b73a65918ee7536da2a1a53a988d4dc57dd4d3f9588c2ea6b96e6779bbe5a380665dc26c9622cef8f49d80b6c7edad6b30469ee774a1fd2e08d6709d2dcbd838d8f284c9952c594264ca1028ddd14364b73d63db518365102000611a6031d1f7ed7b33fe4e884186bfdf20265271de8130cf4367304e68c8ae56124e0e25bbe08341898d28326808aac6c40049aad92018d4d1126e0f87001117e60840e8d8b8f2fc30b1334362e38424405df109070058c26fe0d976fd9301268f99507a2b1716931050d663e30c2022634f16398332b5b0553b3f223a0b1c00c56ab1b277cab154dcbab2014ab1928a1597907406006342b1fbb9a9687dd036257e3f2b07b40ec6a5e1e760f885dcd03ba1a1696ad52a988d4acf02caff2a739b3f29165ab5678f9179eeaf2e2b255bbe589d4b0bc8befbac5c556b16c22352e7e65ab5cecd32c41950df5ee9ac717fe3c76bb9378dc70ef8ef7b6b7b637dea49e22fcf0f8519f5ad1155f51277e71a7015ab06609b666c9354bfa354b2f3abbd5002dbe59825cee4ee23db6ae8d8a0cfd40c6c72ffce2f24fdcaeec6aca687d3569123fc2acecb53c6551beec6adbfdc47b75a2318551187ee1d7dd76f7d369ae78ce5c5198fcaead4e393a7ed7565a8732ed079a8cc7cfa797eefece6630586cc51684179e9a68eeef9f9ae87c6aa235fcd5ca4e4dbabf1b766ad2bddd50766aa2fb89775ff7a989ee5e3ed5562f26a0e5a67bceddfd0be9c13f61a1e59fb0d0f34f5868fa272c74fd1316dafe090b4d61a797a630defde9a5ef8c137d8eaded4f4e74e8b53f39d1af93132dfa1713d0a290170a75dded769c4d186dd5d7768732fb789f9ce8bb3bfc6e652722ac5a1c7eb7b28c633fb2a09994187e619d6f07c6835f3329788559b8855d33184fec471674613cb6e68ccd0ea62c3165ca942a28a1014d5432650a124e50c5942934fdbab4701549a2021c380145084dbfaf273d00c2ac8a2037452c41d3af0e8f53a4c0084f7812c4114b7c68fafd785c1d492206534ca122089a7e77f8093a21852953a64c6182922368e2dba03933002653aa70c411889842059af87636676e14205204d102237860049af856ca9ce191c448115c40f8e00952a0897f577366032788410c8ed043105646a0897f597386f230e4c910a0b0450f13d0c487270eab60e9f06e652f9eecf06e65f2c5618f105c9a2886b478dd1b6f6449b628498b019f78a03108bf7171f9b65227bc4e2ddd631119dd23ac48edf187d7fcf10a7b84d0e2f5e391ca459d3963832c55ae06fc59aa371561d1546dc0dc8f0f5390773983e41ee0f13bc5b098a20034d5875bbc682068a302b046fd1e611338f5d03dae8056730663ad57bcc65a2b8435e643588324eb104258c518e3a459ccb2009a73d29a05922c76ba08b88a07c950626c47fa005987c619b6f032a29254030c65981a7af0a0c212020943c8c2063f4b68e4f3b001214428a1c96a491553d0c4877c460e00d4328542787cbd800ca54c162cde2303e2f0610b8ce98930725b4021c258a3b8304e4649652cd90e97e9f029138277ae93b9aec8504e39a160219b31c6496322d89c93562cbe1e2c6e76e0b27b6f90332f90a06c58bbdbd68086addc348beba59d74f241535c8768c94d017066db3740283008137699dbb61e038f9fb6765b03daee910748050d9dc0e379949a748aa1456910e57cf11b690067ee8eb188e406fc852768f913ce6c3f23eb4696d6c4a5a4d545242fc87487301b826619804141b4ff0dc803633240997ed2894422c9a0ed626ddb910aa8ed488417bc6313ba7bec229217a244245c081d5ffcc5e38c4316f0118c3811a4074bae588264c9134b92586283253258f2fa99fd40f971fddcf428310da1090d9abc9afcd024054d78009a02140520260041017a0274c50f12a01e201ea0254c5a10a10914de6993a0263fbc936693294c45303df91902f405a23fa8a4ed74773dc910cd4000000828b315002030180c090583b12c49d23054e40314000c84944e664e98c8c34192a4308a41ce18438c310010428c11189a995925004068b675671c8469c29a7a4462a17379c1534f45a9c77c4392d630b906a6d316000a7331d513004b1c8e2910ec4b20a7b72a1aa20014811457d821932e028d4aa318008c3addb027ea9a4c8731d0a87d447c6c88d90b9ffedc891c0ffd4811beb5882b3a1c12447ac7709d4ff42a88120afb24808285dc3d25e04257b6f00fed160aedf51e700c54cc2aa03c87e400199e5599f3fa9ddd78d559f81a280c18a60d49a04e231a08d08b1a371f350637735ee36754f94b62cf83faf67251c973ad6880db1fa7589e1cab6501b3007a934450a494a3830e11ad4cb1494fd0668dcce8ff4bfd0fa0c65a2c221064e970ffa2f9d40a06840a88eb7b271e6a13c6c3c6974540691d7a8a0407c969e32ea70c7538dae89032d19365dccf1cbd75f2deeec0aee33448f7fa8b0a7657602c4820f40c34d9b7d842b9030039d32f8c52fa86e2ae37c176a6f19612b631b929a67236ff3c61d002c4c77cdaf8c2a13bc8b33da91c1bb3a57c480676b25799378cb33a17944e17012088868eb380a009613f91ea6d91a991bd89544424e8dd56f534ec2ba268193f664df847a3f707cef5a020d38c14aadd37f13503c0668e2701eb9b81a39c989dd1fbf94c0db7d9d80905b597d4b278092ccd07f32411ddeaaad590949537a283159171f6e272f0fb0d5edd4e0580d4801d5bb7f3116562c2af880c50b07534b6db496ebc255df81e51278c2892d0c77f69f84760eaa903762e783d1ab0ad2fee571ee9ce18873513122f25813a4b8501a368002f640c025dbc8cd81318088678090ae7ce130c273881519ed1f064e25d27840f1426fc3728116fb261bdab2ecd23d6e6a20b71441f754b8a0a31467117be983016224b20b94e3b84ebe538d5fed87f14a2eff52d5bb3caca2a4b24587e18e50d1aa1e8c3ed8732f6cc5a0f2af23270937eb274ea045a21f877cc25d2874c3f99c0e008fd5292014807e2a259c66d5375bfd3f12b7e27c9b3831f60449b1173bde2f533533ce1c0ece3060f19612f091808841c6a71c84a30e2ed82a74e24f11b450b6a476d3ba79e40609a370afbb014c5637376b8008c2ee91ca4fbc500aca69ff9f84a070cfadeb51ef5fb8dd1fbd2208dfa185e94c0f810f5d8c374ea350b77b443c1342b07b90ea3900ad3e006065ae44058b898fb64c104ece8e43b3e98da5da2fb3fce69be97aecb3c70364a631265d490a140810001d4fb7ac9c6c2f7d16ce2a0bdd9bf3e7ef8c9319d367486818185c210641aa4905583147518a31f6a0c620293bc45605dfec6d74c50d6e91fb8470ece24887ea056cb4641b829f160824c3d1eec10924480c3907bb1626c0b6976da54c4c40bd78dab274b6fc74f1666f389d846efb64e7735e368d88d9b2b5d8a4c10cd65bdde5691ed1856766e21cd72dfd6d23c8cb9100957bb96cc8c880f853e3b9cb3135833896d090124ebb8ba4a4dbb0954794cf2f44abbaa9994a5474cff7a38785819259b0cba240daf635a7e0e47f56bec97fd3fa3456232f9c3cf9900373df26468cb624b31f5ec45281146816b7c8a6ad4ab7db4b04f2721b4d6873e21dad1f63e7f237df114481611dbed25584bda8cbefffa66ce5e6a57826cc02d580ed8bb210c9b7f6aa46e9da5917eb33d20735265c72a570ee8a37cc5d45cab85c788f69e5a2f23e6b5d99708f9e4bea8abc0c6e60aae2747377b0b25dba9c9920bb668ee70a50bc233dc83689fca126c8c1748ace01a6b4026d5bcf798c01e6e9194a2ce9461035499694b2d5bcd606b44c883896891f89643b4ccb6c420a232c33bdc28a6476117597153ba33c2be4bd036fa13c77ee38ab46b11dcd932f1e084861458eba9d9242019bbca2bee8155d91f4f887577220941d38b3bf1dc0894033bd040035b626683a06e145d92b9fd3fc55a62802720e4551f2e8e942b2d287bd44483331a2a6aada06803424fe9cd31202a3badce26d5bcc8bc3a76ccd9a5eadfc7fdcd387f1523b11ccf560a181fefb9587831f619cc57761e02d7b728de39a01905d157c454ac020704952bbd309902e66f498cdc84e5a0e6893c755f813be42aff3a0bebf66296240de3e890b0ea76bc04c609676fe418b6ced3b109b47351422ebddbea53956c20516ee9ec64f1254bfa396121dd497dd83e3e7db0cda6ea16604c13c7d3e6a766ddd7029c5653d5d6594232824088386a97b3e944b892d10c0e1c41d553c839bff7644e122ffc1b2554e2510877a1d4cf62953abd17181fb3190817046a414af19d8f6e0a2d00af6bb8b985162b8dc21f6b31a6b0ece23f14c43cbdf682d56feaa912f4f501e484ad0f5bf8efd7638cdbe3e42e1aa586192d2c0253a9a92bc08bf4a97a7e5390f39b8e009030ae4b7952af9c02084eda8caecde8c6b6c6e6b21328a2d24a1c98c139e241ae5dce4f136b85f4b2d25db8960b0271488a5f84770b4f30946447cd540873fda8789a55b6dba8842119037aa6c80f9f685573f7556d95ffba828221374b77a1a1e32fd01b603994c51afd1bf4fcd7d361c142decc12306302491cb3c3fe4a60bded0c3add2134eaf51ef9819a73eea8422f696ce1c4b14ab472a527cae7de0208d3df96ddd27b22fbdbe217076dcc286ac015a3ba70e80d989ec60e6586788c0f83db9de6f36c452ae27d8f3b1567e38990dad57585c0c409390a4c251ce8c8e0c07e7fb74214cdae1d7ad04b094f94b23ad3a2af6ea8cb2e0164d40e69bc657363e9df6209b961d1364f2354cb089b8fc896c521cede3403f9d5d8fc3bfc2be499b7b075065ad0e48d3bd409d8446c6a3c1e937eba8bc651dbd308e9ee1e64083fa749168a3cf630895eeb67cf3183796933211160262b13edb4afe650f16ec48911def2990d5992f076ebb6d7d962b1f735c3c3d60831b66352e406c56ff53ac99c432c9d2676fe2ba0d588da517553d88ed791e808051e4bfba1cac949e896350482b8c0d4294f99b5928338dc85eb6a24b08da8e00ebe8f8a48af790ee28045fd498b109351cc017d67b8488b31dce94617f69017ab4db9258a40ff7983d821d064a5f97b30fa6c78fc4c8ee4a16880faf6e92f70e7481e377ada3ba9c9d9e796179b22eedd32028695352b89652a9b4591cf18bc42620113006d13ee50dbf16c630ba1c4826f9a72db0cccf0800b2347a87a1736fb733a91d388209ab5608291a80f52d036ae3741d39c35bc5b730a295c4862fff6c989b57899cfae62d2b4fa89e14410c763503e51d3816bab4a306a087303010c8a637eba87279ba23535119a67559802c9073252f6a2b7efdc5534d8c2ff9d0366d6fb1205d7b705ec219f14eb8671a6560b50770774e3c16865684a7da8b108dee4f28dc22eb8271049aa05793b3e15cb21f5d0faab292e3e404135c0795315d04586583d64fcb32bfa3de822ab2c7a2a6c8c8e6ba5f11fe1d23a2cd4e06e0fac5fcbbc67dc03794357b7b30aac6c593c1e0876ba73b07a88e939a3519a8883b575f965bb5cfd724cb62ed20da0905d62b2ca5c62ec7283b716852a015bba53b6f47989420bac99c281965b9547648d8f163e1b93525dd847a35852d9368da44f507f8b5cb0ff4232ee1dc4c8d96644e9ed7689e3897cc4e64d78870a56ea624a51202e4ae03f52e1bad2b4494fa31e46d0d1992fc2dcd0c53fb1ba8e6923978145e29e827fa7b4e5d9790d17bc05b67f08117badd39b7185dc9846c6bf7cb867a25f404552e79f97bc794daa5ceaa40b1bd6b031b96105fd45aaaa4b3ca058d5f99337af79c552c750eb183056f00f47d9f532e5ff7afcbbe9f9ef6c5c5ffbedea95c89e0f59bbfa9f424192b97415c55b13a69ecba7959908425fec4b57feb7d2fd7ba185c6fedcfac10a881ccef2ab26781f9f09c38a22b4814934dd4f666a86c67d12add14dd4a425209c9bcf643ac48115bbd50c89a57e9aa2702b576427f6b87e0f3d685068a39e2c2d1090f7a4919ee704843419f58fa6e8f8e90dd4676923d185d0221e04b034ec400ddfc4f0e403914e8c22c4e7f4c1b3d7629512c79f173a00a8e50225783952a29f34e7395a51d8616e8bbdb6dda1c38ac362ed859a78130e148606d2c2821eb11cb1fdbf50b634f3eb1fd62d8d0cc4d895b0dcc15c92d26ecfc8a7cb5bfa11584d53ed303aa2db662843a1e8626c48ecc22d0bdde1a3f52f1608891150f38495a1c41766dea22e5057cdbc28a158a81c84f16c525e7ab19dd620da7e153ac6e664d9ca524db50dff3c3d4eea3e97938eb4005b9c01f04286839072714eab70703e176f72848350ba38975ae491e413222e75d0427031459c0c0750d283d881f42ac07f5ca9896cd2a40ed82af4dd849b5b8ce848bc1f69506d639f66adee44aea2cb4ad926f15e92527a2d680899afe0b95bb15e5d42da2fafd998afcdf91b9245e080286ecbb16e4652c57c57fef05edb8560ddf312d407906cb00d68e5b9c066a6ae52078833f1b60ab270c1acb101edac4671b53cdaac2436ab0e7adedf11b29f980df151d39705558e4d7e7d5b355499b6e0fd3f288fc260a58c7f44b32371ca7d66d25ac403d876825621fe2e59e144523da2da44a08fd6abdf3a6e9514c2b4807eabdf6048a490d7f33d74d58f88845e9236fc128a553f4f5185a73d382680b3901612316cd052734eedc679be92041956c3d6f40e46bf915e27519b91e54f85ecbfce712b17557e5d0b3f0b6df4af6ea802a68b23f9704469f52cf06d41a0f420c77706a2cbdec8cd1030b017bcba21ed992c157029633ce95e55735344752993bf34bd1a2ee6693603448537b48f64d9ef6c852935b1a71de80de37f0244dbed9bdbd721d4ac66628d3988997e4940da867d3d56aa80c05579cdf3cbc9d371a56ebcd0c068ab101d1b6e16a8acc8488fc6a31b1c958986d3a03e32bc0d1285a8c15143e26a588bab091608b3f817a0abbf0b3a9195fd0919922807cd1714d6dce688e7f352ee785b513c1b5fb85d519baab5cd195c6907a5af9c51ff027a1833decf9232e7401afd59b1ec197990b5115ec9fd881026d8e253755445c7312c9ecd718aef0c46442314a477a3f966446be5397a8ad837bdeb539f780e204e8a0a96fe537d1d5c913a8cff4be8ac5cec35b62f04f318470fbd141fe2aac20b10de59ded3a813ace7615187e2a338d478272c5218a46552a8a2b9e63868bec3a2ab1a431c7dee388e4b024340740513f180efc117644ab1659bd795b83fe7497e7811abfa881e98d9cf786960271b36debcb1e984830991bd42b7f7f89d0e66c241662263ce744c15f82e4a3d088abc81663092802c08f8f435d64063a6b65aa9159e74a33b771ef1f0e05a5f5550251c12116748518b31c8a8abf39ed61321ed6d7434cf2239fce9cfb1ee9511cb9dae808b87e30fa0bd96d6045cd8ab055a21c2b5ac5862a45ae95f26ff0c2b168aa2d884d13c9ac3c712af9ddc88cc0875889b522784f3791d7c3d748b98fadfa915d644b0a280308bea507c62a71707ca18e7213b6723ce481ba24600578c3ec343ce9c83cb3b508d39adecff66f2279c013d3ca97c656b295cfd37a3aeac79a8ca22ecccfa7d4a8b0a10cb23066095d1a330f53af6038626e00a8dc97d6fe327c267bf0380b8bab44c6c13321126600236b9fb1caefd47522ee9b2e8382bf270d132d35e290ee216d5709fcf4dc55020d788e843730bf0f1aa7180f4f2a354f7728f053ae093ffddbd7ea8266aef9815e981b302f294fef4e0169337099fbb26dd718f1ac5c048c3699536a481befa3f80bc2b0d8346ef4bc55c8139374698fe2ad50a7a84f762568a893bf75394401600f1ba4ddb1cb726cc1014be4d02f72cf907331d2b822f8f8ef0c772c4caedc7ea1a4824c83f577e6a3cd0801560e1b13408abed41e9028717c205b8e1c58dbac53737096da7353742ec1b56a0f3429538b17f8711cfff7db02ee840e86ee6a5735a77679e161b6b2722fa10f08a05f27bf1fdc800fd2d98945c04d4257c5001511eff24b2e0f352e59a855369e5064474b1b70bd3206211c48bdf901170df1280da46f70419194bf69c8edd512dee07ba11e0e9ed61bf8bb7cec0548088e2e889fa0c23564a75bbb10f918520f7150a6ee47d8691d512dfbe950344efecaf61d672867cf140733170f7c0ddf463e4151d0380a7300bced29f98e975010010ccdb9ea4cf275aafd0bcb4f0199410574a3160e384ba05eeae686fb268cc214a019152c040a86577121e3dfa8d65402f1b684b30d0600d90881f8972fea3438e5448a8152ec040feb2db9691b1b880c4a244c6da15048b3239165710ac94c8595c4062532663ed02824d1939ab2b28764a642cae41b0289167cbfa0b5ba0eca654d1bed204d6ce8beaec427be902195b39195e032ebcaa142e545a6d39511dee692c5da0632925b3760589ad94aca52b2496d2e4d62ed0b194925b7585c6564e1e2f800baf2a851fa2874ae49b05b810170be5167cd94a59831ee432b06b20115dccb8f25323d1e80aac8ebe0bdacbfa7007a04088edac994bfcdf73ff2e54cb9796c1db565fbb4d23f6b1b13e373786fbff96ee1a67423deae652bebf06d5258e2674e8fa0c942d275d055a6ae5860f89655f3c078da5bbb98143a6a42f3d4903699076d22c8d489bb79269c880fe81be4eacb9c4e7d693ae835edf57cf65fe5e0842cf4775a6bfedf015bf933655c69165b82602f37faf4089bc2178e520b7d74eb7cee575d501c5598f2f29d3656c8c3c4d42f0e1603b7c25f2601bb49f7289e842fef3b4403d4464b06db28ad8a3edb7614858fc89dfc8d8f405097389cdc006e722de231c9c34c3177200d4d28542489f6235356af4b20b6f4aadb2d747b5c317a5026cbe2528c311e3272196d71dc5a46cd5f78e3166c1fe9150786eeaf160e68936b60c7492f883f0da13b6e455f2239de0c6a52b6216f78481878641242bc44a38a91b74ec2460ee2e01ccad7731fffdb047a4741be08d9aa7dfbb822a8b610025d1aad713145909d9acc825ce8815b1ea46ac4b09b6f19436d188300ae5fc22e502ec69142d0bb0c3cbc4c74c4f311a8c8c785ee31133a4180a96b161c6304f3d2855fd9bb026200141e9eabf8ef135865d105fe5a7920fe98e17ad66cfa81630ba3b9a40477ae4e162a8cdbfe6979d5c6affbb0df2d8e3a7f66cd31f5e76ec6b07c4be91667ebe0f1fe249154fe81c283b36e0d0a500d9a202447c1f290dbe93d2bfb64872700c5b6d743661477038c12ed5811464f3736dc2764f43b21d515c92e295d5e48f41dc755b4c517aca1ed5d2628b29fbc442212138a57bc3b0028f91525bfb28810174d53c30557ba926120b4f2606248651581b135f90fa801b84ab3480daaef4c88e5e9cc82bcb21fabe7f2a163d85bbd162d9874c40363ee583847013d6957cd5896d7f5ce82b1dbd73b8dec213f5ea4ec36b3b2e8af9dd94ac52186f8820e8443d369d55cb439033ca52e3ef0845c30585e0111fe8395778fa6dc57244ed0cc26024883cfced3dd9d002dd52588a2a12905a9c7d522a89b98595787f8d19aaec292e49da620d55602aa18e42e6a66a610029900a824c37f6359f4f08234058d762640733518c4481e328864dc24ad2edbc38da07c55138a804d3af94650249c29d9e46291b4bbcb5bc44ced7c01f20b2af8ba7d08a402d8a16f20a88bcf66617a14319d8e887f35461d3dbe941b977e316787ad645471c63c15abd1c2c490ab01772e20ae1aaed426a601f9fee1301f948e4c23a1e5fa30808ebe8071203693aa56b1a233bbfb09036ed0eb815d986bc09453702dafd2dc32287a15adbd6e8881a1da29764be4ae9fd539b078289ba74a0a36387d00fdd86fbc87d211946deb75767cfe14381d3f947b6953f6ac9efce7c79d69d1e5ce7060de7b5766fa28c58da4c8924ad710b9a6b3007c2bd90623fb6844f27af60ec72582dc37696e3e32148dcd26db1d56990aa83106426268472afee400a0b2dbbec243c87813c4a6244a4922d5500f72bf263f66f73fc98e1d72c8a7e98f5c3ac1fcc28f3cb8c1fe6fcb2c8cc4f667eb160c66f7328fc604e915fb710e33f56349670416118065838a857c86d51dddde2d66b05b72f7c4e1cc46a231a773859d479a49ae2fac54abc0580f48e300e96b909a44f8f13c425a290f454abb9c0ba7a76e0d462c3e003059933451dcad10ba39a2da1f3cc9e6734c93dd6fc198bde981921231ef0b81e53929136b9054dc75485c17e0c07deb62386db9ea247161f7d79d0e9c3c84b7184864c69f12cc19c9c256e29f0d499fe26eead812da5a832a000f094d8a358bd5cd77d5a64905c39269a56b93844be2d7d31175b6b46e07f850a2946458a8761cdc45cbb7f16d255e2cb3aa3fa9b2177f2a1a3005538eb3adff788c6f4d01921958b0c38673098d370f6a0f7fe50750871cb85d27e4e448b279690a59a01031a177f38c498a48e1d365ff5599bb49a8f8856d33f984ddb5520b5e1ba42007f8643872dbb416bcc0e4bcf47b9411e5c220ccd22e5c9c10482138f3dae699b13419306516bdc8242e7d4af60ff233ab8ac44a80e2f40f0c20161e54de0619fd2391ca854a5a59f04cfd020813417133494c701603bd80c2049bfa4d9d982c3b90ad7ec4d2e652d066f188b478d0f7c1ae5fef541722c1f02d48461bfcae621c9d53b50ad7b58e77e9cd4abd31729a817a10c21bebf768eb59e6dca6436c9a2dd0f908d4294a3505e1c5296925856a203ea426f8b6e54bdc154c36e4ce539ddca2941190a83f9de0d010af27e426893c54a1b84d176bda73c051fb9bd5587ae8d3ba2265d43c393a146298aa3b7dc0612f011dea37da0502b8f8f96b791a882846c8d44dde19db9380c18d89853a7733b4716b648d45225b9574c1bc1b2a154bd5ace8ceaed11d53c131ff872403c21717ed503bbd9daf9c2b3fc4e90580a240ddc1289e43ebefe9c3b118ea8a1ca74c8bd041acd144602bf9a302e992add1173eefb7ae27a28906f9d7cc809777b93a84f825268af9bfd7c26b37726c105019bd55ccd3b88b2d3472654c2b52de680d30d61712a0b0b5c2e023ef4ba01906e595baaca844cbc64f4759d073783a7ce4057f315fce206fee1fe86fd02e351f8e3b640f65cef2640797882f36b9837e4ec0503d6900a3c25c756a56fb057686e3fe9ed2706c7fcdfae1adf2c592c353175bdd9d8cb3431728f77d7ce6d7d3fa769944675e62752959c28a80470771e3b6a7c7f30a2cce34b00e85410bb1b908d6066283d900772f3b9c1f2d995f4911fa26b8d73595cf893f8ef6b3baa8fd4012710691c3862acaab90c060702f8a1b4336ff2d783f98de56d99ece00a78849fb9a0cf7565a26a9a52923ec806c42507877c47101a1ad4045b63b50ccbe85ac534f29fc7b02b4d0cc60650cfc4b8fdc28ce978110e85f11ae9677e25bc2fd3ae69249468266fca9dee813319fd41373719209b47445954e4f926d16180615191cd11190bbf83a98af76c8dfb421464c524a1931d0afccf91e36873358c6221a3d8ea87aea8f97aaed9673026dd9b8784842641d405534df60be7e4229322523b3cc1668ccc2cb6a4b8861070683f0d2b7ee45f8539298e1d5d4b7c390232796f6c596d49fcfa1f31535f72e81be98dead89f5e6516eb570da7dc54d35042f84b9c7e134bca267affa4536b7f0ff076c3cd1c5143bb5fc9bcaffaad5057ef8ef8de13903136dfeee930b0bca69e61dde0a8c53d1d72a38cfada6c0e3fa65bf76d2a3987b56b0846f2c068bd80de8fa36ed7555270a39518f00b61706f9b7f5fb585ad312117f4847a975c72d040003ef860f15ed771d37472f23d58434884a16bf6e475d722d56a77c0e26a29a93ea410c2664ffdcb063577fe2290867aaa458feab933f044764f587c7c4dd1ab9641e37b2b49d467141e175028ff8f1514814e3d4801f64afaf6987109092c3be0f13b6409f1fc5b66016feaab0a26494153fb2e46ca2da6372b9db444b187dad7ef07433856bc60d60429fa91bdfc6b892e800ceb157d1bebc25e9c8c6562828bb56cd58037ebbee6fed9f717536f7a33853c61ae4a1c0f71474aed949e1ab126ad5dd1649471828f75e745834c3d13dfa81bd09e286dea7b64aa7f4a5f05a00d057ab298ca1f514bdc2f049ec2d6008dbd11034a85cb0e03859e6cf24086caf6b79ca6a5d012ac36833066e48cc1b9011905015b5661a90d34d42285d9122ccd1ad63709f7c4b490946d7d3ab6d2b74f105db6e98711b115fb71d40268073e1c28083cf4a7bcd782bd377a20d89f5ce6890171b004eacfb49c7603aedb83dc56c41e8b5d21c87c8066e75d4d514b2ae229d2264ea607e0fa5cfc01e213c066d591ea931d089db1c81afe6f789df9ab37e4877d48bd2275063167f0ce24899b38bc24ba8a6abe8215dae139e4474fc626e237157dd6fdac0699feeaebbcc280a185a94b8eb12d6c8ec8bdd7df6542852d7df5a9992b16a346a19bd795dcd3a19b21d449de1f40621a8ab7482a225f0a1eaec193e8882013453a61aa1c50959d132e2536d40b05e3ece5ad7081be9a9fc8ac8706664b5114295e748567d5de2b5666472bb40b26bcf33d7f012b9d2f9d99b18826e0b7f155bc7e238efd2e0988379dfd0eefaae7caafdf637ef344eed693d577f0c7827e613216392e072302e6bb99ff587999155b8c66ff2aca79132e9d23c4a9ed9e10f726b90af5eae2d00ecb539d3917bf6f3fb1689c4322d77260ab9af7e3e1aa4627eea84eed03e31556ca851582f19fb9f6952a4e315e7c34ec430df957e5410b619ae951645a8ab5b70d821304239b0e2dadf23276eb03dc4b74f27c4e257b5948038ce0c2659bf16086c303f8c21408eb551428e6d9c4217c8f9aa34d7678806e7ee60605d778442c64276f6fb9f54dbe99b23168f059aee9a08d9a26e510bc4334da29214b8a22519a848b13a597bb441725620734e12b0cf62f9c70aa2a95072775524d35444d9c66da4c8f0c68c8048eab5dc9b73383e7d5233d8d936d9e8bd4fce6b1aa581df4624ad7c8924ee3be9d60558d7bd3b6f81a39c3018afc1b3fd9efa543e950197dfa2d168fcdeeffcf59633ec8670e61ee5722e1748836bde0b4b49545e4af8296745881273ab8a6cc07109bd9f496abc05e186df253b7733bbcba9336714b48e540c6273301444b81849a6cfbf469b4829e2005f3b307739c47d8d18282dc986dbaa3ee07be813cdd26ff06a87715dcee49c98f61be103fc8637f7bd592c6ce87c26541571892533a06e6270d369a137b93a52f464a7a0ca58002830a405809162b7407483d8d90d4898fd02cd64175ed03b53aefac7ef6199c08fc15b4182a415c4a7e2e6cc46f71bfdb4785ea95771d37da5da41e86f0085879ae34c6c284c822f7b02f19894aeb5e53105614014b1d334fbe40682302562695b1f219f0a7e097c5b70758832c53ba8cc2607a342035de1e04ac29b4f75c9c7ccf7de2dff33066dcf0c7e0f3e7be53fd0ca933cc9ee03fdfc7ef113dbc41f5485849a914b94ade41a091cd7ecafb20dc7f5c4a115df47898fb7f5d23f1d2b5c687d38f5cb08b40c565f9d8363f28b3f2f6bfdb86774933fa2273957af866282f2c4d00e356316941ecbcd338a197eb8bad09010e3fbaf40308d1c12dfca730504cb67749cfb79c5d9bffbd3da9311ca1cbcfdb582f3104e30ec1ab50e46a41d1430ef08d5ce75856e699fdbdd3f627f1a5813cb14bd3e98293c1ca5b2c3260d5f40e3a487eba9ffa5f475072eb252edca9fd89cdf6a51b70394c3b38faacbb07e2a049daf6ffaceb1f08a911cb905e853fde92822ee90dfe22c03ddc7b1fdee6117a07cffcaf9ea6527ad14ea9de23f419fc9d007f42525fdda88991f145aafb66bdca43037fde0a21316a1097b9ace5311b59b8f30e01c05b6487c65e61bff2f8d577d29d069a27f8cb39e926c0ce9b3c055e475e6f38e93e961fb1a5aca70062859d15c83fd0f544803475379310605b18155a81f82abc4256c493039106c8142f0eb726d03b42a899368099381a3e49f8bf4732c0410a7bc4f3ec1dde4d8afd46ae5b109b5a0ec5bcbe14d99067dd22bae9ef5e6062ae42feff9fc069afbc5ee4fe6cdbd946f9313de89bd6402d52d337071ff0a8ce684c0ffa124ea7ebf6c3a1579ffb7f4800d16a57242033d91bde615a4ca1ab2450335d7de4f0467293826aa016a9ccd2741b730604152dd223ea0d699ee79681d3a1bb38e221a9025c44e514b816a6170e18d9830a4938e53b1492c067e886884cc33b0f707a8331de09f6f3be564d23c0a046cf79afcf8fd667243e88817aa85da1ecd0920c9b36b95e2ba5dc904ac9fb82c753257583d1b13ce1e10b6ae96606b1ce595b00497220d1ee280ac8730fa8f9414cf13275dca6100616d2a8be4b84663ea741e06dcd8d53a9e784791273fc17e087f0391c335d23c26eda1a7b8ab19f4cf783e792382fd9e0df7b6a8301b8111f20112c250ba5929bf6647599ac0379badad83097821e97e06460c09c9781970110d0485513eaf9e38d6ff263c8ae30da10ef9543c6927c65edc3e9ef70d1a663c0458019e8d725e7d9bad4abe41ebfd8d56b3e30f1ed989818b2948306764cc32283d240afd493f3189031fe8d589f2e5ad1e683708c21010b0c2d34756c5f2c20d2b92ab113b8ecdeff52f3759b1f0b8447fc631c337014f8f2a1cee8db5775d8db3200308cf422e43197ce29894c0de0669fbb9871f82cc3840d9897a1acca123c25928cd675993191679e9c534be34d8e417462248a36d1089d685c26c6b94161e3ddd1e119d65a20cac56d52e885f6341e97bc3b7a10014b4a049fde7040e720bc7dbc46fb244a21ef2e80ba57fa21835351bc719abcbbe05a525f794d7396038f4c16c26ce0c03dc38fa9996f2c37393a64c9d7c953f0c16cd1d8ef22b90cfe80922a709328624ff2d88ed3978bf02d6d03ebdc5da86f1bfb601544f3bbbbbb49dacc354ba966b2969f7a48b7e4d5b6a0b30fe2bbce372ec70287bae3a142e5246bf144d85e2dabe6da0a75e498c51d0ce2a25a789c5c35a16d6f4331f32c2bcbf02e287881cf3d9b32ec9d2af8a7e0a0c95191bd8c0c9549f6660b1466b165d7a6a8b2a010c2328bdf20706b387fd3622fbba0112a2f10788b05b49571b1c2e198b7ca58e1c22574c4595aecaf5ee34a182b9e6751a1400e0e7c82deaa2633173ac8ec00b6f1e213906735224ec65e4a64ef1c81bb1d69926f1deb3f273a3378a5d4b40e369e1860e9435bc8bb09ebb70401bf725ac58cf70954f263576d88401af30cd7631fc896cc6adaad64060b2f92b007341a57b49359176e788181f1cea3fcb20379b89631ea173ba7094d3913c262b9bd2447d6cc588a085fde46aa1f21c1acd7d873c12ed39266f2a3fe641f1a8041c0f0aae04e5892d688dd1a7d6cee4863e3b0b9e36d26c47774c2ecc1b3f843589141b5066c6dbac33c6bb934d1d8f24b9791fd58e45d626a1766a7b165300cae1ce35a669fc3dc1b3a4f332a04008ef0079164d838b193ed572750160af9e6edb8db5ad6c8e7fd82ae30899f1b45b367ec503325e5c81c92f60e1dfc5a6d1a5e9c3b2220071d7491f719c7a9c4ae2b3beae9083eae8fe2c86530ae59d7426073a96aaa3b907db434cf8e782250543a599faf48fbcc70e5d77272512f81ece02398e85abf3847a7eb0e55e4481e8300b1deade7e747f69996a4b2d776d42733abe62f58b53ad028595324422da735d59992f8cdb76c98a8ff572b0661850e0e7d049ec6c8e30c91d6a4afb551c92c2332746ac2b2e2897e4c03e5ac158231bc6cd1e5508a250504b842128796a2b41c8a9bc47af6fe2d9fa3874ef6974d98900187df17bcf809db550279547fed0a08794df27239d6276e992ecc9f6ca0c610e591d03c51871c44064fae2ed37d458c8b2163faf73723828deb977ecb7e264f439d87de04c5ff1eac0fb164fda41753a5170f462a7261607b90862e4128ffdf64a7eb77d519985baf366730fee896076ed6048cff7cb1b1214a661d67f33add489cdfc60ee036043338b59a1fb9f2edceb5dbead416ef5c5e6f08e91d62ed2146290ee7e937656d074575b24213031482b2cfb00ba5e1e6f0c01c81b220faa936b916cdb1fb85b85b979ad0b6947cf0b81f57e84a7b69e768f333489381075b21579c0ab3cbb631a615f18b8213c98dca0f3d798c22e407505c010c7e434cf0f20eb988bcff07841ea209862db5490ee42b9f3ac2ead4c1c3cf5a57192d96143d88adc81b22e4ec9a22a8bc86f29614f0b30418aa47989b3f00741b5d70ad05378ff4a325bd29d92c1a2bc209b3fafafa10c9e64384f59ceffe5c24ac56b78016089bb9a4292fded0312e37a2c92c0057f9b47e92002cb62f82a068fdc8b788b3ba8fc964d90ea4c523fffde7487fb23ea6715ad0dfae9f8d3fe3a61317deff49208398d53ed8b0bbe40041304d3f2e934def393f1636a021370599473dec26266ae8fd49a14f2da37765ee2e40f3a3c389e8fb0f208777d0ad8090c0362c703b556adfb0d19f42a234e9382760c3a80731ea4b7a874499e12d350fa327330c14c35db250f5aec404064dc05d82b0d551768462da0e16a5464b6d6fad2fb7b6a37b4255e2788a41659e116d0478f2dd7689c82c9ede19ce4826d416330d98d01e7782cf81e2a2a314d6790fdb90958122fef2fe3f76e20a72129013c57ede852c95b9214f0cdc0b2d5b0c3716cfb02ac84a7f2c0841d8f8423ae4ee686e9cb243e49bbc5fe6b5563f42f07755f7f3d9b82fd33faf365a0b07b804fb69146c59033c6f20cf7004a0423b3707532ef421f6b096b0428587616ca6183ebc3fbb5bc1e7c14fce7830d365f2dfe6817e692c638f6d9a17a6017034ba6940887d458d1072eab7ee3d2fce8e608e5c673f26572ac0a6697b04fb336f75435f2dad1cc0f5286d198fa31509d8eb59ad4a18693822c9ad4a1aca9e84f9349fc114051e16ea82336c2dc0fb395103ddd0393d5b3e54f098f60c02be6f8898427e779786bf184366c502050e8f81a41e6bd0e6d6400732246d664f7b05d2bf33cabfae79a75bcfb01442d699f6c4a50c645c9241a004606f6f5b778a4eb4a16958d1c81bb24bc359c94d25d0f938a43b940b1025f02920849fe3578849f000b84f17eadf45b65a2e98a170cf07bb05ef749b4ba4167e52bd533a7cbf0423417c965a2dd467162c3e48b59db385044f431cfd426cc5a312444d85f02799e4c9a35db94c5891d46b3b902a6126de334e5bd6a93c255a3aff0b0268cb9f72cd2a5b49d5990c6c5557b1c1a48b8c7fe27a6ae9647a5e9c9dc4399fd151d088d3d8c3c189d3f924a2c0f5851f63d30d3b002259e26cc0259d0b4edaf00f927b62c3e733a5ce1449b02e09ad28df4e2ee58959fb1a8905311ffc781977915e08bb5b382577ce8633fb548130b31226b14579ba46e11fc9691bda98c06932d4dd1c054533d3d6ebd7233e5de116a490b3aa7e21d1868cc74492ed3d38ddc813ae61a3034f204c8e708cde69c659ca7143ed91fc53194d2bbe6504e40a5c29840d0f5217ce6f3ee0ee76fb551ba6acfa4d5a2d1a0d96f5f21a7d7bd0858daee64d9d7732db3ac1fe302b0110208675961807c4e31f29745becc405a21617caeb4ce4f909fe9d0d392ae81d0af9d79ca0608e1b5c237c6d907a5b02e7719c6ffa9548ea797869927c6548df2bd0f8ced60089cf486dc34ecc1c846799de05b120d621abc4b02fab973a38ead8b2d542b65e136bbe2a6522dd9f32759c35ee5f1696653037bf406172edfed56c9eeb1191f0292fc50702640fcd4059cc87e27f27b29d0c51a0fd724f532b4549241001cd08cac152a1975b711fefc05c52bbbca218510501702bd23e580983fbf74a33e5afabce7dfd5eb792a4449cab51bcf15b214b3c1e4e401c0a8687c02181b81ee899301666940dc4b249bcfe2cfd3f3c0cfb81cae34e5552c71d729926d4ecd3ad097dae51b6d12127846c3291b86ff07d6d9bd6c2832062bc664f367e3d2dfc09086f7a669892e339c85c7bf25b0d1750f2bace4c2d9387e023446453ac16d0480c98ac418f8adc8a63c7a798348a7fd582037f90066a1391c447af1ad2fcaffcd31987b7809880b6336969c51cdd502ee1fa87df2c266fa3ebceca8fb6f7a641723bdaea3bb6515af36c1619e3eae79b8b802cdfdfdd80e73cb9e4f73642afc656db06f98133a51b7292f5a46f98baa2b8971cf3d7c361e88ab6f4c12d4b318778853c8af14a090a9bb6d36a26a91a5cee60846ec18b1426b7af4769262e26f25ca67b095ca3af44c81bb944bf5169778d102218365743135d98581dc7308b3693c985d52f505a9cd338f60ff23925ae7c182e8381ccced230a1820ab1821f02481be727cfb23d2787da53781a819c48eb5a8ad1e7bcf4394bb23a234251a81373bad05117a4da01020faafbfbfab4778d2fd8812d2b2e5c5f1e3615b94c77052d695a0f76346e081224b73aeff6b44b099cdd782b0dff6a24da85719d8afac2acca236fc79f2a2c82254ae7f47d0fa48f741dfc8748d0ac9b0b4384931c07e644680a5d35a6782b26302f820a9c3f070ef666b61c8d1e6539d52f7b5aed90b1655117a7f2aa4ba740f89c314dff118781177e7d3ca720bd84c956662ed40ded3be792a05f67a5e82fc25e293c34a8aa412e229115aa6df0878d7bd0b26b4710a3c351b4b978e856e14d0e6a79bc2e2505efd224e72f912e4a04285bde2d0808844dae4dc195575fc2a123fcb6fad2650f6d1b839b58aa4e07d20e0a022c40386a31bbbb1dfda98d0158b72af8d9c3a282aa193244fd8c3de093d5aaad37483eac6784b167f27957fa0680783552d4d8b84f4bab7f23e54e44bbd6bb88afd9591cfc84783beee2b106919885389576dc1ea45ecad15a6c57cd75b08c948c7dd7812397a7de264a65cb57992020fcda6887acc66a1c0b1baf9fe14f23239c2773c085270703e905b555f0377899b894300f2ee1d0322cb59b99e20e5a7ba31982b37104368bc9e25c079ea257d8deabf1c330c8d54e8f62a159f15cb50cecf5557c243c42c5c1f7d0e7da7168fa53858a01b4413cdb18761c3b552e5030219e9bb0e331f530e1e27dc78cd9c7086f5040fba1bd8f0128634dc49a1f202a853f92c686001e030b6e1df4fd558dba8c770d5e70f52397a013709103ee26ccf20cf2aaad2cbaed86428e91b782de0f1931cb9e880d356045a728d66ec7d5cba64cb1bf2a7400b8247e905eba26178de81577ef01100de3a90f6f65ab3df27e216f496c2a85a8d932c026f3cc9f4ac300fb98be19e1e571057febfd0f06958bc653f7ed38d3b128c33d31f4c2ae719a0d31d26ef5553634338f96998d6b6cc9b69ab4632ff7a0b8f5c9c0a303d94b4fea50ba4b9aa0e8215380d84a6bc293da22e0c2b3b1c4e89b291617ff892a0ddca3bf020e025847147f7a7965693ffb4d1467fea6f0cf323ca85c4aa332bbdc0619ad82f3d2e444b7f4a6d46be712f0f4ac5b2e95bf36553ea9b86d46f40cb7d63bfaad6df3e2cb03f7ac936d938fa8fb23fa6ff3c1a5647527f770199dcea40edb16261bc90475c9c6f678feccfd75ce8fb3fd984bd94ff37e9bf3ab19857ecdf4d3ac3f969bf9dddc5f96ccfa619e829fcd28f58f2dc4bf68ac1043acc575dc8554a6dca6495f4d879e31d71bbf2bf24350d6e403f2c35c97ec593efe1224360d49535afa2aa0c8f1a015f8b0700780bd7419c069f02188de4f40a4e1ccc0bb0d18019f1a0530d0ab82072608727787cff53e36edd54a04d51fe93b27bc0bc2641684674751b28f02b55064722b26244b0a30b86246fea3ca640e70cb9a763f68051d4aec69d8dafe2b31039f9d60cf715e625d248a4ac62092a74541e4b04fdf6a2f803e13d98d99b4ae511499e92acc5cf3127bf4820f924e7c895d64aaa912669a75638f6e8b551895ac0b9b2636da53f0966bb8c9c61358271629466c1e57fd6af6da5196d378b2de2ebf9b9577336014e47a4d41a4ba4014887da725a1796456edecb013337a4d9f58664ea158dd7f1bc5c2fd663ded8b0333fed44a401e0be807e7ac2ea689b4df494959cf6e10090edc2888f1b32d20d31dc6ca44087c39549af6b20c492011414a5d7b97be9006689dfea542f15368e4b3357262b11825e63ec1f5006350c64ba67ad13a79f4a1303fcddc3a37a4cdf7fb043465093fdce641976fd0230ef66ef3e8af80d42ef3ce314f6ec6bfb4101ad44fed6522df0fa0775a4020f0921b9fe41bfd7a99131fc83b20e3931b637f5f95e6f2b540fd137361eae95b7d7dab0eaa6f52c22ebe7c4bc267c22dc8aa7b3d0c1a9afdd4f54e84956c644ef4ae957b08e90d7b91c13ca82f3059bd106e969cbf388ad9b91f0598efdfbfa4399db8f00aa9d01073b51b15b16ba327236d8446fb0d210d80c53cc5c0c3d84758a9642f1bf8fa54aff9ffabfde95770268d5ab5d6aac5f47ce546a0c4ec59ad8440ec5547776e6285a92b3ef16b93e90a81fe9c815d394d144e696443c59b12e68be13352032f103fe6dc89ebdc58624761d3a1ee172f9c83f94e8f5fed1cd96f7667aedb65bfaa537f4bcf69081d8cbcf286c373b22d40610f2b146ee00790b0548118a9e5764055d996f5979a9209dcd6152de991873a44f5cc32157f450ded9593ad224658cd20486188f0bed1db3c9e3379692d3627d1f22bad89950a25ebed4110a68d5574945755b6670d890a524ca932b513335e9c67b8fc19720b1949f5a60a0725c0e9462d1b7472222b8a60d64684c1a1c2b7bc7261fcbbaba97d25d866f15d179c0f65d965c67c572317ac8ac88283ae266674f36a74836d4e5be0a6b58e27d82d5f8d44ac04a246c131154608e9194538f467a0c598f1d6dfb7bade437b1635cf28162598cee509c6c2fbe91186bdfd7a974469e7a84609a7f893f5240654743f7fba6e17b8bb8e49de73d63a9d45d29c93d24b8350c041f280cd51fe612c04890462f07ebaabedb7c278ca19eaf971706dc7e4eeef3becf0b37eb4a7ef3287e5e0ea897b22735ae2940e5cfddce2e8bce3449e4be4f268ac30a39c675670ad3b8553c820a7ae6d5fb9a8cc79f54f5d2342c120ebc43a02ac0be30661e11ddccb6e7c7523cfbabdde16c84bf5373b874ca3b5a19c622f2d051ab6defebed3cf427f99d73de56abaf00801ca3c3b34ebc657b4eb4d5dad8507ce9168bdad755c5d6d1250663f882c2ffe9dd7aa0796fe2878a405d99696dacda52389eff2b120233fa19f946f844ab3cb11867d29dea2d793d6c6eb506b21068517232c3932aa98fa04aa4637c7d1a916cff570aca251be0f09fc0367ba793207f840b0277e89ac0bb8c4d6fde0c2bfe20a7f4ae88b71e037fcf50253daa6ba524c639b5c1973f9f8da0d6dadb3161bcb91dcfdc1f13806c527a282a74fa6625540bf75d74f4886085b3f90efe3bcdeef4324ae215b9acc30d11baa279bb3c22de8b9134903bcf1fd9b59fcbc2db1158d7f42befa03921550a23b170ba40182ab810343373ea417f9219640540dac7712040b86e0e33ed9e066368b81b5d30b9f0532bb44ca9b45b2d9089d6699d7b22560b9495ba8014498266be45bb3bff9dd9433cf8595a7a34b0208de37b68440041284e1cd8224eead5fe9e9e8028041f09b386d57a4a029a724c13e76596428bf3013ded4a93abed1bb4a54e6d41a2a13a1831570e111cb285fb5d8cbf7b48cbd231075f2b6bd2461f524397ee2c3ff1441c89c054f5730b2b67d9fb926f60e1e7c4dc5bdd6ba10e1b3e3acd1fdf09543602138e65e9825b0c02b3812abdd6ce93ea460297f51355db1ca7774d1130c58e1dd5c0a3fe3474868702cbea983ede1bc3dd880854b725a2a338e78c371a7eb83a9d986edf1090be7e1346c65ed35d9dabca95fe0b43fdc5b16d4fde9f819c0dc03ce394b3b8668b53e5cceacdb0c65a5c56acc51f70b84fcc4d59dbbba0642e7b812629aac51a0068fb28937b79b40c25cb681b2f5e25aee0e374579da670c7d395d21302fcb9a02bd314da66722ae19a4e30f56c8a58d20f7446e8512056336780938b9d5c04343d8f50096e95cb210923563a7c1b6acb8d9ab4ab4ca24da79d5d7500071dda5fcfb4e514f7c11e4258bf4fc3be1946c1f93ee3f55704d34cbb7ceed0c4e06be5e727e508bd8842f35910d62552271c5c50944265658ed7059a3ccedb3ca544871cd5f9512cc8dd1b529819d3c2ba987e6e0ac7a3b95aecbe82fe04863c61a076d2b33e0b415fd4742edcc35cbd6d0db6dd996fb11c5daf014059cc3007a5758da0a4a3c002353b524c3287803d90328496216fc26b595ca0c055d28356364477a9479ad3eeded7b0ad30707f997bc6fae28230ebdc13646c219ef8ae42d18c6cf09dd72b317dd93a939f9f6e4bb21fa0d59c94908969f80b03d0cad2caef64e0cd9e653737c8e56c5f3135cb01739952c73fe11b3f97da6402350679f5b3ed5518406bab8448089651660481837b04b05dea403a4ed0a1d1ccb8fba43064ec2a72b1ecb442b706c40aeb6c60f86dcbdde9912e94f205608e39133e4630e43ea02b5b26267898102fc78cc59519ac2e9d5d325279973a5e3ed6bac001f7f351ccd30051ce6c6645345c319cf1c4e0ed2544205ac6a37d6b8a424469887d9dc6882d0ca10be34dd186ec7ac939d95caa3eefecff4a136da4509f1e6432c440b576f073071327ed3209323050821a22984f038267376b6881b59dae67512792f238a38e79f9e7eaf0bb9f6806ae7da9e4ba20ac979effaebfbc87caff23e75d48a1f1836b0c3f12d51a7c5a96ced1f03739da5291c0f92cc8f611001288b0621013c5c41e6d8d569053da428cef7e43e3c792961a91798c2e3cb1f3c0a76578771689c7b969b2a93a356756bd1cfe12715e7e0394f65f77d03793711f61042e270d906464f13e80888c908123408fa960cbdfb107af9ed1b672e9736f1243422f01568544b01cc2c56cecd8361a3c27dc0089f8eab99a106d1708217366ab6e576137c33e1b55ab3352798f9c087c3657387c3a2a36d840f4cd5b45695e969e821cde0132d71e165f023514c910f4bd9053a79daec9900d6fa1cd62924a3091a19dc61cf2c0e6e35e5bd9a81643c8809fe0af75770e728e4d668bd3e3fd1d83f553fc7702adb5cd59d580c07dfb586c68eb98813e2db350420e0e4fe274ea2afdf46e4810151e9e35984302f8a4aeae2d5d11c90c904f690e55df35875437608e0b18851368d7bf358dca602bb3caa40502e32c088556c03b34c4b1ff6c493b5d2516d6a67426cde22026b7f500e602bd4ed6647f0de8a8c1622a47b834c29f3c46dd42f7a71188449aef19be47a2a40b01d99dfb1b0d48b1c0551a7cfb1a0c8083266c8ee91a69d9d00fe70244a45a803ff64155407a3fa9aed73f65d8f86fc582a8b24ca5df95e8cd79abea141cda6fad7f05efc7894374ab363db6d0bc52763e629d3c4ed39bb3513d7efb28438d84d110c1765bede6385fc6f18924223e3b208883d27c29410921bba4683baa2f33228ff8ae62d6a004dc33c5929a2d1f0ea25e00be781a45dfcf263e543e9295119d2ab34c3839a106719ea35c60cb8f5ccb6996601e2e776543919cd42a12e1d7060c359a33c01aa55ca8a9e7788cc18a9750073a5a867da63ff4b19543cc3682d8b5fcc745b546080b4dd1ec594d31955ba6928c30576fd6517f2da1a5d302a3e5198af9d4cee179c6cb66ba7f84a3702d2bfab6224ae01a0e893dd425f9fb99b577a7cf1298e94f5b5baa5009f39b6c51f60781f478aa999f8120f78192f3f1d9eaa5daeef20d0cdeb310734cc002c7d12457e1aad15c4e49b7b4e0237049816e3e79ab7bc6cb2f78ec2380cb67d665bc3ee0c9ecf6673787ea849bc8065434fb577848e6f2ac3ddb104f76b7aa0ecd24a6be709ea5ff2ce1dabd75b7f0a7f6bd83996cfe3b01ea52d1ededab692c3897cda1ca491b38d3c0e003d102922675fea44dfc983890b9676eaf84308e0952761b91f9e61d063f83ff985db909091347c6a88f8d162247920e82efab0bf00da3ebba965da44755f29f8d445570c3c42521fffc1418d21689c41fb707730cbe889ef0d4e8282d0ba957abeb9f63eb8a666e8b3367a8315396d5d2b3e54a6de57a79838e8bceb6ca8565066f996a83cc4a7b65c5f36b66db42b338fd57fd9ccd5d807293e6cd3ecdfed5a31216fec1c9bac4560f4be131f8873dbce5b14374b19a07b66b8ccb24a787059d6c7b671343fbd43a9e2916fc2db318c72034c07c0b2f49eb4a4477b5ac40329be27181b8a87c865ca3100149aea7b08b47a7bf7184fa753b5b85ae0faf9972fd3ec0041b1b14d939a5c242051cc755ae5efe005fc4b0122b04c298e449496c9577d8ef2d1a0fdb488a34eec914d612e72c239a7cd668208ec89b64ad801b9e44a8e1f9b2234ed78925a19a2ff9aa43fac93723f576ff96d8b9d7751aead557f338cca65ae023ca071e3856a76446edc2c2f98abc5c715fe255ffad476ff16af7b87ba2a3008f7f4c2f84deca5e1bd7ab3657c03ab63815081430721e75d80a8fd575b35f77e08a036b0ce8de032ca0ba130056c58d4627bc4fbcd154e369f56715ae8391d89cf2ece60e7d2e4e118e6c1183e3e345f3e1d6649846fb25997b041b1e197c3b6c9085cbc9d87969d2aedcca1755a98f9f843174afdc6ca17457d977b5d87d23acca1f27e427ac26bf5f1d0cbb4f569257103ce566a0e7dc3d3208d2679fca42cce93d8d12e7c738f6d5ca1801abb34e430019e9a41a0459c5c0e934c8d01004b9e0d4faff178ca8edc19ff0746a386f6f166ea305ab57c91fe1e66e605d58c4ba8049b3e88a87b0112c078bc55527a8356ed3dca399925f60fa9d90098fd1c478838ece1d07e7d6f51d057f32f58c80fb06207f0e6f7fc58b826e1b50649950971fef338bcd37fe0848c7bb225feffd302d86614749d3964edb5003962a8e8f77d2e2423309b9854609ca1afc92b4dd521768951ba41f4c60a089521e7e3e94814cab8ec7d8c09d65c26e6e1813e8f5d9486ad379c4b42e599d88684c4918d222a26f8231ba1c09058d3a8cb0b9d5104557b8176b8e4b73c6f9acb06069b793613e75a1c73dc1ee8e376f9360fa59f38ba3c539815e4a897c4c5c6cf091e5ec44393e9e9713e076e3fcc251ce6617d4059a07b79da17e891ea2a22f6dc6469ae2690d65cc3b4dd20915ca3398198417322cbc37f45f7e5edbac21ffe3b1532acc16109f4abcb32a39ef09ee852e583f6709b7b5209094b0048150cbfdf2e979a29e60f4dfff1509625ab2a03eae80da3ed46b9346baa14b91e63d4c38d61b2314e201590819665249f09458229b5f603d998680c972051f156d4d11c139f571d764d40c334ead15fe8119f9aa7006eda481eeb3f80de336c27cfa7b4398d7834a73f0ee47035f0024282bc7d4eb3beffb6017cf460346f0fb57131f8f9b78b3878eb290b32e6900d0b05aa728db86204414c1645d9d3e1c851bc732db71addf62452e76ccf930a74e3f7dcfb25583cf201499dd5df3cbdf05ecab9d45ec87879dd56dfe293bc8a3f995e568b2b25bc3b4fc8321a5ae6c3f56312459978fd534ab642b10443f4381128409b4b97b65465a57a3d21993524ae3c3c1fec2200dccf80c80620b9fb2bb5055bd45ebdaea508ac1db06ce8c51841a7d3c09702721bdd6fdbc6a9d4df5baa2a10871845ec518f1f69e73b09920b7c2ef29774ba2dd82119e729af00fd5245d5c2b16a370d42176ed4624cb909f53b608d03d07700a05d25b0a2f84bb3668f07808e29581c463be7dae934c9a01c04afc07525f879fe70c9138cbc62368a3867cac5b6c1976e26f0b9032ab69b60b397f4ac640f47983a81f61e8a55aaeb3a232744226cee47f589b03620dd681e5fd55b4d82ae17bb3d43a4181fc7e7ef143c090da3d8d21a816ee0564137cb03dc50d7d0c63661464cc01e97e2723f7a7db7101fa3ae91bdcdb0471854bec64c13b8056802155d2007d5c334b7335c0e4864e752387fca4487c3b7ba4189632f8a8a16dee06429764dfea4bf7d8d367090f2d748c675317f971ad70df5062fdc98388eb8dfa8828c3d6fabff67b8ba2467f440c3696f66b53e010ce1bfb76d0a49216d7d7e51f206c1bde6a5ea3f7bfb8aebb2fb2907a0635af336fa5df6ff23188b5456f5ffb6b2a539331c46b1b214f2fe5a8f238ee97474d451de638f5855a3def439ba6a8075b7122bc2e945e0c24fed9d4aba953cf4135c75fd1814e53d07f8359a6ea97909e0b8209caab495f7dbc50ffeea78802ee4ecaac755d498b0832099070dd346901cca962b91e9eec0ec7aa68e4add4e8d0f757734ac659abed0d8c1ba80b4aaedddc555f60306ea3d3a08a7cb2c114d4b954a73fe88b0343590103410937607a0340438f9b648069be4b45d5036da4a73f4f02136e5da2efd1dd7610a5929b6c6b7da8fc3c844935a77e234375cc3b29d4849ac44bae6342398996256dec3942272b87e0ccad12441e662fea822282bbd812073abbf354a6246627991e4c673e1d879d8fe535514d480b0dea343069ed32cead36993c732c72593e5a8e93ed4b3a8b7f06dc2bcb54332683ea8667d8a100b73d5c8c980a31d2fd5b24854fbd29f55763139e9e253ba8b3abfe6b47bd01265e36229bd5eb31e9bad513d23dd2295d71c790aef6b237cb9cc5d4c24cf42f551e31512ebb346a211a2fa9a94f944c6bdf313c9b63dbac37570a1c04f18e6b5db51df1b6a01b0d456df7bbeacb904ecae8ee9cb9c25579f451ad1be6de372d6f79ace420270d2064bfc2c7a890f095367e2af7214a683414719dfd2e2ba481718aba3b576f4bec2426d666c8591b5538059a11ca4b524e6d16dd092d83e1897ee3f617f67131f8cf9752ed67b438236160d4889fd8bfc352a464452fa371be89622bea1dd18170fb122bee38f737678f30189594718cca5062fee92795c598f29f31ad6a90beef866effb27cbaa9646461cbc928eef8b6bff1fef749c51dde4e2afe7181dabe4e337a14c05eded8bb1c3f9563d82bd509796b33a152d7374fe94bc79170ab5bda68a70b34368c7ee62ed6ea217b179605cc25b032c6db4aaae54f25fb1e7d2b83878de0c84ac5a28466f2c656c793198f6c5a9d9b044705c0e179ff06c827eeabfa10419a40a26aa653443e8e7ab4d8bf4032520c06889b92903844138d7789193f1418363d47e009d64919e0cd65af1eb276fc284b27862bb872b86e45aa1f1811ced05f89df8d6e598b5398540fc553c87a659488a1edc1f6356433a606a2d4469dc81b4c9430c5dc32358737acd28298eba1b0a2cba2f3cb3f2e4c5ea7d12e18b15d0ea6f4fb8ccd07f01401c7bfc78428c9d051574c3c0aa020a0b134bad8517386ee22c829b6074a51cbe5c3a818721069a0f1953454b1a03d08384e3007bbecc35e6f7b5b3083b781216f7372160a9a3302a464df77085044304bbc0fb18030fda05a6bca53a63c3f1a4a2d048db05e64fee0a99006efcc23ee4250180ed7edb873db23f284717228c3360356bb32c7e30b6166b477386bdb019b943e28c95bed3adbc9160ccf364485517659e0233119c553e2b09e8a90eed383109677e9dba257b32a9f569c7a0acb4eda75b6095b08f3030597d7121de7c1eb75eb7c0f773478d79f29f5b6060e29962b113a7fcaa351bb7ffcd8b184622e69dae7faa3b91ab6a4b9f57c2fd2b2b0fa449e5c31b989c12ffbbc48d3458667d7eb90cd891d53e292205bc831cc3ea0d51dd8e68cfb13dd6c269d9aafb0ccc397a410dede99da739e7e213cd90b350cc72eccff7fc86016103257ba64917b56210ec2c4aecb4c13803eb355b0a874cffca188821dc5fb22e90dc3db18c4a7b57bd51309ea7ca2990941cf4ee87dd556fe32682cb4e41e18eda20fc0cc3b6d3cd6ee27320bde8d091bba26451a969705b812006fcb5ca576f7d26292de9a10f8029badfcaeb4815e750fc4196c5fca66c3cb62fd9af732e0656fb4727b73eceae785af3506f01db7d6b09cc00a2715d7fd5a0ae7ec0fc28770477247805e490d73005dd5818ab006bbc2320297fd796adba0cd67571a9674966b0ee379e9fed377efc772b4af8f254cf6579221e7dad830f2dd8e1eb5cbe0a2cd1803cc0ce1c53cc3f7142a3693d71bccc0fbbcc3b318ba6cc278aacdc9265dc328f5869cfe80f35098ecf5e398ad1ec1cf843102eea9e42a29216018dee482ad977f96c82bc742fdc854186b7091e3ec92f0e41d083fb1fdb1811841c57d87699b1926a9b4306f09ebe4d8edb64df7f298702172686b5e8048a4e999f863ee15e798c0c00c64a43094fe090d72216754104302fde0dfc9544073e4dc31c20e2c6bad695d50bf0bd60f7224517089800efc7362f1948bb64fbeaa454d00a664d8c3e9991fb76f5b1dc50ac0013d52bbf31ca1d94a6569c3522f685b202ea6401f34b4c616057964d8debd33d63f7a0fdab8ebaa099715abafcad255cfdbaaf00eaa1b9b36a5e57d2dbf74c0b02a6cdf840e78834bfb4a08d32394068b531fabcb09bb78e69146783fb05e416dbeae5c86da7fe6c38dacc510a7154f66019ed0dcde3572040331bd23074047472ce87a6ac9d4dfa9848a17f5021de0ca98323be0e0ec80f1f9053330fc22dda6f1907b568323dee888706a5b2805c8fd40395bf0c525c82423aa26c67709f8023f655edbf1cbb67843013d2d85cd567645b9ef2eee48859947cba1b8210bd011bb40ea8cf887b592b30ea715ffbc71f8136e41c414a157d900ed8602a9293b4a57a21c3944a158e6d500cdb395648660d30abc43b2e3d8fbb15c2565b2c384799f63d99f904a3b34ce27b5757e05778b2601cd952c3642c5d837969b1c83547cad556424ae6bd9579087b54b828d8275c7b273661c178a14738a2f298ead21860c4d7f62b466e06c0923d725f6dd94017080505e901d8d87003e2a9d8cc9ddda9bb53c7521062e653355cf8cf63a64aa9e401b07df8fab08a3f1d9954a5a407c066437c8a551c2ea25bfccbdeeafad51bffb9929c71b519a247d16fff4245f31e62e7ebcb5da34897d21c3b535b547c46cb673621591e1d295fce7f82ef3765d92fc26f95a2b8cf1b86776876964fb1f44818a74efc4214913aa40d7a6dd44d447e496e97c20662b813a4150991853ee6611fcbf237b541888c90f17f2496e52784f87e8ae5bd38618fb64696b573708afcfdc432556ebb6dbd6abd62c3917c4da9c474caa71c10ad07e5fafd2cb7c46b4631186319245639b932d7e00511d9ba180f38fbc3252a075917a1e769d3e958205784a527b824821833659ce5f81ff8176c957baaf8b8f0115cd1dfc8472667ad90d972570b1924eac41d850373bb8a321406a7f6881731c550e4f7c05276b8076042826494a0511ae1119329d425e0de9cb93cc02b8afb608d210d5e9ea57fa8d711366fa2779c76ddb9b1516975c39143cf5023060ca05362404b1fa2b1cb80422a0b2df1b500cff2b89593a76ec240bd3c1d811b04d4fc90ca98718c7b8851ae006841420a42cc98cc2ccddde64684f8f0d8feb81df4b5f09c4a4632b808242d2714d30377434d6bb0fb7db2ec4936a6cfcd5a93991dbb920561c3e298a0b53f09c37afa8a57ba95a062b47e3d84823dca804d3f50554c6bd211cb336e93434f860d47072446e740e145a3fa2c4308945cd6733c6f76ebfd61a3855bafb0f0ed18d600a1cf0ae91e20941f605f4f3ea6d0d1de17b36f8cca14da8bc2886254f61b4d0e4fb9a3c52374fc1a859c858e5bc4e0ca44421023f78b7591e1c4103279b924989f3170a6c2a5f703c96dfe8a8c900f60d03cd523133c8895c6b90ef1bc762a1af80fae1333b01a21661b3173ab4f9ca01fe4600eaa5732da65a61da0c9aa00b510962424ba445008a41b8bab8b25d4c17dec42ac808a04c996f8bb5183e2611e97f97097b9864e430126195c4ae9d0a3a768d1789bc9d0de6f26ba88ebd07103759af32c6753daeb9e21da93b53e1b15aefa27c94d9604262d1aba00c8d969bd5e8d8918402a895ac7a8880656ede279fe5324ac5eefcc77ab14322c25b37d0c2764fef034d871d47be61a964192e1fcf3faa048a8cff3c1cb8009221dfb47ffef484ef60fbecad31c5efbfb9e7845393cbfca72741613c2eb31e6e844bc6a147f5aabe0fda4a6e60d978246e7c5fd2a4dd4b33c161d79f133ece3adad3af2751b279c5abe0124eda1bd327380ccda9d460c3695a1a0209c4cfb1ec4ef9df9eccf3b0ed1cb9a0ec693edd211ede54615f5f8d9ee390af9481a97cea2e3d2adb053c9e861d4a1b26eaa610de4fdeeb5d478e480b95ec98976f570d4b92a7ab9ff03c941109a352ad63682a5974d494bf2c6be640333318216adc79da09620217c363ee028c189596e6d420615c0adc37fc8714d79e1c63545e1e026b7da64a0136166af5c83b854e77e3b8cbe0339cad793ae869aa65625e1e214dfa3d54b75e9f18956938594f1efd4e1abfee0b2936eea701b7e0a2e74c2f2c36f5a4ff1a674a2aac8a4e19e6e772dca357cfec61f49c5df6880dd6519d74c0bb544065b6a0c59640a5abb3470a9407ca416e119c1e46ea32914c6e90f78cd1fe9fa8264c7482bcda63326d0a6da1247855fe5c4bc8a9a8dab08f413917cb342c5959027c2f4a94f290901c21497e1bd0c33e2980bd40004fa6293b15620981575c67f9eee6f8542259bc0a452697e45aae2afc8e6bbb21f42e8b94bc25456ca04352293d8bfa4ea316a319ba4a708d79f3b49bf130b370582abf3f4e18a7746597a24839655dff7fdae9f464f4b4bb6945206bc0a920a000b276f431dd46aa54ebab66ddc3c08c02e53f5f2f939c610cae9e35ddbb6baf97c1c2194d347d9e9e3b388443aa554ab6c022102723e7c364d20a383cf26cce8e0af098404430252822901316113c674bd6dabf3d8406fb5ceb3da36f229170230cd759ed6b69557b1b6edb4797ed8786042679d27c8f8d35ddb667ef57c22f4acb56da1b3360b66fce9c5b68d3f3d8f3ffd9a4042473936614247f93581985f1d9b302690f22510f2e453bf2610d051a0a384e8d9e9f924117a86f2fc2246e899eaf938a74e37a13b98663a0addc134d45329d455aad4572bd55150ae93036d75f2056bf4825422994a23d28b5d137dd744a29f1f9df4d24d25d349a4d24723d2cff33a39d0461789ae9303edfc3575884e2794130e3d0bcdcce7f3a067e5f381d033d0f37f90e335ba8369fa207407d34027c9ebe44003bd2cc99b66f950e83a39d0cc939ea7ff7dde41500c5f5c6485075ffc03af9303edbb872ad1c981a677eddb350fdcb5efc559bb268a3b98365e27075ae839b4e91e5afa87920ea2a387e8791115fda2a02b54954289d04b0ba13872f0f0030894cce5cdf18211b4108515723428022d44413ee00115ba29a4c8c01768209aa40360600217526001052e9e40fbd0bb85315c61042658820c49b4340f4d7202287c725460a20519f0d0343a52020bd2200512ccc00832a0611fb8d0e9d87522ee4e2e9ea8561dbb6917b4d65a5f5a176e29ca0979555027558a34fa3d8942954eda35d24ba6d5b69936cf0f9b6ab56da9cd13249542955033880a55a1a6a7506cc2944ec226ccaff943e92ad4f46b06d94196e63d426ba49209b56b35d44d5aa5da39dad34997f44b3ab56bb7964aed9a09653a8a46391d65639d0e0565e3dd0e0565e7150545aff6e8b46b3594d3ae9d6eda45744c974abb663a6be355c73489b46ba5db68b46ba4b3762ab56ba3b3b64ee9944ee9540ab56b28bb86fa6a0bb9b9bc62dd7815e73cdc621c5b5ec5373395daf918855eda09bd34137a6925f4d248e8a58d6e7aa2b2102aead8a955e851988ee108c19c4a927388063e3a624867a4d747c96ec68b35fd4e72f1a3a65a360b672ead7a8a2d7a52d217483b952486f4bbf1d2110e8b534db5322c9cea086733fb70ebbace80f62d7163b705a213270e6eeca63e6c01c58ddd171fb618c285dd549591de3b43568353253db9536c2182146725e9676a725910a073f2e0be8096c8a62617070c52c1857d0f55500b484f404be417130f2eecfb77900ac2ad9aa048bf7f77df78a016909e64180eefbd7793585c96ef29a99309e1e54c49915f70aa27bfa8277bb6e07baafd9e5242fa9dd4e919dea626464eefe4881be17e44dde944b523754f643338479cc8b2a42761c6239c9e857e3a68abe7b85595b8d583231c5a7a0a259d1ca127179c38e94949af04dd469d9e8939f1e72797ebe9c1814314cf53a562471c7bbb3860265275c4a51f290d19160add24fd3c89f4d20fdb53db36da3c414617ed9ae8a350e924322c4566c83c916279424b374bcf915364589aa4e7c823122ccd1f60cc5ddb35d2ae896aa287beefa5d2aead1eda3974ecfbce5d935dc7be5d3bcd5dbb355469d7766d853ef49d44da35bc23e9700eb7ab9b26c69d4627d2ae9dac7f2fddf47a3a7d1f8d766dc5aa3e97e9fbe9a4da35d257298ffdbcd487f2d3aeb9f6e92655ee66bed859973af753df51be6f975e2f4c3f9dae8369b96f45f9eeda26d37530edb46bbbd355b8222373759d97e59b8e7dacd0a7591dfbfe9a873bcfeb60dace9471424eaed73ef6f5126e6f52ea3bbaf38a7358877779fd1ef276edb56bae73d748df4d996d9ddf47df51360f0cca472f76eda4daa9efacad71f996777ad537cd6a9cb93d9d8e7ddf43a1efcba94aa75d035b1dfb3edab5da777e28bbf4efabede574ebdd3cd6c37939d179737f3b1d0bed9aeacb854edab51a6a7ba70ddef6a7f374dff77d9f799ae7cd0dee74ecfb74a40dae3af6bdb4bfcffccccffccccffccc73872bb83371baf3bb8d6ea4abe16a7ea21c5edb7387d38dbe35b3a2ab3a777ea39fac9e9176693dc573ab4ed155a1adc24e96fd417aa263df6538c8536871494ff4ecd2d69ddb92b4c4a6df77f25391d8a55a590e4e95d48d702e2e38c30f7c88929ed0e05b7ad5112ed593615f4653528ca9d6d4919222c33e522793e254494f526dfabdb4e61795d491d2905f549a32cda427f796aaa595253dc9b0ef3638ef55d29317ab986d78a2bdf99e374e43a572bec031cbabcee5722cbf07d6be890a879988e279aa7e31ac64176ab834f154b53a767dd0428a1cbb4e60baffa872678f568248c559854a0b2c72eca6ea7dd0628b0cbbe98d97e66322328c26c33e3dba5eaa77567259f2d70ccb17c2f972aa3887a9c84df28b9a73930c457e219f48f3b116bb2ab6de428a9c4414c92fd8f330be266ec9264a4f7b31c018e3537aa7d0628a2cca304516ba7c822c7259b4290882e298052e8b254451144750161c2885441a90f7a84c08e78b9761d7ccb228ce9bde29b8f0e488c8a6f8fccccffc3016894a51a947ad473d6a529356c8ac38f551bc9c4177832ea8039d803bf049b8863be14dcf564bf40c256412e2c226ab4ceb422051a8fc4cd0577ee556573d4be9194a2fd1ac66a271ba896e758fcee91f1de81f488be3276a31757cdce33a6ebd743c3a5e1da31cbf38c6cfb7bc44cf48afb3d0d36a75d2e9a65d33fdb459aab354dbf6daacbfaeda36d6e609c23acaaea19cb57afd4442319150562612ca73e417af17e8eb26d2eb3932eb64229d4c241389b4af83692a1d4c7b719417acbf58283fa1ac6e5a89288b9ede424da98f82985edab5d24d9b75bae93c30afb75edb767afd741e98d65dad6d7b6d9e20afa3760df557ea74d3e80754eaa42e736417a94b177a7a0b1d999e239746a5d1682bd9c98136ba0ea6c15ea0321434070f3a864f427fe818be0a0542c7f05328ea9e44d3497a0955b293038da48369234f0557fcb12ab8e2a334e0c41b0667d88aec9959b82047372fb3e23c451f43ffb0f74b1ea501e7dda48b0b4e1dcbcaae3847fbf40edae2c6fbb22b645d3855affd76b937686f15df342ebd569c577b9771716a1456d685ed7d0d617d0632dfbccb4bf22defe475f764d73ad1fde45adc835b7c6b82c34c308b6f42f00e5e9fec84e8587662037f72a1b7ef96e148330913affa6c3ce1b6815b6401f9be9df7becfeca9754f9c1aa7d79bbb3d7afdd7af7ad54f9c6ace3918ec57a9991d71667766f3710bfb79ce5471db9a57719025498240a3d16d3c30a2873eeedab96da21d122fd3335b68ff9a5b95c9f2deb76d71a46106f397bdaccb3c62415e15d51c579209c9924bc81bb9923be49a7bb273a2cbfde4406c4fdb040762414c40ec0eb4047403ed80d69d8ee527e9aed5335be844f703e6d2cb0212eeb1a58d3d6926c726639311a767236e64a267239391d5b391056d3ce0b844cfc67109088e373db3817bbc8db7f1a6491c7be2ad661c8923716066e2e444c9ed76b8bd899ed87a29be9a99a4f9322d9c7aab999571e154332be3c289cd5ca909e45551c35bea9166a83fde4445ef1a150f9e0766dc3671f3fcb08de649d31b2f1ef47ecd1f50f307d22b4974fc486ad1fcc10c023e47d65adcb5aff6dddb42c671d744f7f60f1dcbe0aee5d0b17c65e1ae3deb5d3b6bba8c8d22e8ed9ac8bb28ee1ac6892cbeadabe85aeb70254352dc3570348ebb966f6b18ee9a4817ca2610191241333f93e781394fee9a6993078570add61bdc99bb369abf3a769ebb76778de724791d4cc3ddc292698340d7c13472d740f2b52fa7f5ae8139d379596eb43d5c6651655e411008fad5b19bf5c3e6e56dfb36cf0f5b786fdbf2e609e23de7ec65effb40506b8c31be07bf8d3d7c1d4cd379eb601aee0009d3331bc8bb2d1fb46d20f971db6cdff893db06dae729f2c06c9bb83d51f57d17bf5de38101a9a07dcf6d13c815c5f304ffa9b009c483f13e20f4f3cd207ac39000610f092409d3b3fc2fbc3fc17f9b15e4bb3e1568f7a2fe7e7ff5efa73f100cc39c613a76efeddac550a502cfd3fb2eeedabe4884d813c27d224ad18412f7c9146452c0b7d0034bf000df6452c8ac36820798c8ace8c96270caf27a4d1dfa1acfc076050672370c18e10a2c5226dc20044a706286324411e3667cb14f1238f049c2099f2498f0494209ec938412bd9148731a482148f2aaa8e52dcdd73a2f38496f14e99da20b6d6aca2fa35c7e7c919c21d0dc27e9e8a293a22a4e9c8e466015a06e833f199645560f41f7a439740f35c11fb00a108b72a707fcf96ee41702fd2d017ff28bc704a4c27df16600965ff91c993451fc2f04df4d37c92f3887d0f0a5796f064c4cd37c68a2390da1600e6da2610e3d4231b9d53203d84986e926693ede424381aa61bb8e39f745a5c9ec18735f542782e6be981f5fe4be781f2fe4e270d3718b445a57a222932cb6a0e7b254500fca12b2bc87864e8a6c86e516e8b8119db82c32309c2ac646485591c565587ef19eb8b07cf2e08fc88a2cb82fdac90ef2cba3d95e96f1de13f7458a74cc2f380adce29ed4fb09edeffb88e6943451219765bc4ec2187361e3f3a88e4ed2d1049f43ab3a056d3547414486e18b22ab86a90adae2eed2f25676c06bf10d055ff0f89696a712556aea085b26a0131996653638f555cca44c6f86e19e33fce4df2dd2329739a048ef6fe90c37336081324393d79327c7f93c30609941efe44bf0db366ff304f1fe9dfc76edbc472291ce9324cb3267ad75ae85f041fff26b58e71caea1927c388e782dc5926ea44b9e089e327cc307e1f2a50dbaa771adf77c0379b4ce61c22c1e8db04e3c0804e23cf0b6c1556967d2aed5bc93b6101dc3268d71211c3e947765897f9a462336bfdc2aef1a582a5db57f9c97e19c8ee193ceece9644dafdf771d4c1bbf8f78ddd5b04e148becd044adf886598ccbad8ee1d3d6616947fa6a20bb7960f0475b0461dd78aef996590f871bb7c6e66bde0ae2931bac85218c73f6be679cab99bac4fa61e8e5f6a7c35dacc3f9cbdf33ae796cb8bd36e38c71c6f9bbe918c618632f637c9c71c6f962705fc72efeb0bed7fbe62daa92e0fc7a02d3de2f09869727c86fb86ba583a97b53a5926992a4d69ee7815a5fd01315d1a17f65ced48ab95dabf1c86ab5703d09dfbe3214b6a469d6f0280ac55d1357d0d3a158733d857281b812ebad32648a48d02886a05703552fefbb53649f93799e8bc5ba87712c309557a30ba97d3a134cc7302b953a88b26b994da14a47e9f0763aad760de7bedc28552a1d449532a914eddaf7126c4fbb66daa62e9de741d2597e1785ccd13e752d29e272209d6e0c6f3bb0d5e0f9d5c04ff4b11e7bcb5d1db9613a9c7b4eab744ce3f6a9631ef869acd2b31ab1b7717d8d7069be2b76b6a36ec48eec6dd48e70bb5177e6443a507bb61f6e6447b9510b5ac79deecc8172a056b413ad242bd279e3881be94639d00db49ea74e07caada21d892359d12dc4aea2158fb9716c47bb910ec4826ea3f504ed40baf376ae644be244a25b792bd710ce6ccb103b62c7db0837b2a376c48d72e34837da81702076741bad2b6877b2e78dcc91ad08272ad9f2166a43b87257eacc36b733da8dbab31d77670eb49e3ad0ed04b1a37574236fe48d5c4fdcc9eac89ca815e14a5cc9865a732d77a60e84c3ebe8066a453a504eb403e9ce15b43b6fe47ab2278edc913b5227ca89dab22d71215d2867deccd5d499bbdb931347b2a295c4896e642b2273221ca913b5a25c992b73651bda8574a6793377e46e27ca956b882d6f215cc986da1217ca956d4817da9966e8165a4db6cc3909edcad06ccb1d689aeb67eacc9b67ee4c1c5a43371347d2e9580e6151f6c4a95a4b37d8cf73aa9e1587289ea74a85daa9502daa45b5b7c5218ae7a952a9702dd6e1930e9f74f8a4c33a95eef5fcd2123dfbf34bac9ea93cbfc444cfd0e797707ae67a7ea9899eb59e4faaa0fb289a7232971a87c3e1700a753295ae4982464d1a9da2502a2786aa35b5f72eed544e2c479b3c3748b46158b5e2172c9495ac0aa79eb55cbf292aaddf1ba16729dfb617ec2abf2fa26729ff61bf2742cfbe6b2c7fb908d133975f975ff30716184c45a5d572b95cbbe6ca2df1be5c31dddd89678e2d729b91131f4346aea59db1c59ccb65b219218ce53456760ddf62c888edda95c356bc53390c9cb8aaa03997f29d92df7201e0adfc1a0f8c8eb56cb115a267351c77c9396adc701c206ef61b3ec332f21ae254d09d9fb26be1ee2f577eebe52f1b00d822aef5ddc93e270bd7db82b8168e5dfb6ed8b5da0d6f6ddcea589eed1ac6b9b8fc8615bc7197dfc8a1aec586cfb80d425ebbf6e95e6cbce5e77677baf5866f2d667718c7deb06bdfeae2f2d70d96bb80b2b35ca64130a7b52e9c51e3b0d7b061d770eeb3b16b3c302d9f91736161f92bcb764ddf5656cea203697ce534561de332c016163b8cd7d8b5dc7e6dcb8cc37019d7b3cbb936eb7679c7ae397d0357965df3742b2b7f6d1abbe6ad31be2203068cc7907118b15dd3bbf6cdd8351e18d863ac4eb757459cbe1aeab4ee6a78db5d05dbf5af955df372bb567b6d2f068c5d8bc1f627637becedaa97bb3a958d77743887e23597dbbdef9356e352f6ebaac7fed2bed5ef15637bad6bcb68ad2d44c7ee550fa5d28921f87997343a45a1d22dc5a65856a57bc14259a9b60a5b8921f879aa75b5ba99ab5bb9ba91ab1b68751b57b734a75815d5a25a3d2ba5b6aab4ad28ddceadaab6fad0c6e144f13c55aaab52f76aeaa25a8d6a512daa45b5a816d5a6f9faa5dba9d2afd75b68ca5dbbe67aca66eda7a030b66da330ae0263dbd0cd1304fd77ed475ffb29ad935e7957ebaf935ff9e7c82ae457aaa0fb39324a7aa50b4d21bdb2e58279a157e9742c6f33a5bc0b9559715edcbd57a5d3b3d37ada2add6955e94eba936ed4a97e5439558faa553551e15438ef0343154ed4e152d40d87baa970a89b0aa7c2a970a99c4aa552a9542a954aa552ad7a966255ab6a55adaa55256b72aaa9d4133d6bed52eedaaceffc94133ddb3f36fa3f3fa5d333942788ebafefe7a77ef4ecb56be85daefc54cef58cba8e4d18f4d7fc019b30fbd7fc019b30ff357fc0264ccaaff943eb39722aa767aead8369aeb76029ff6bb7ae8369af7d6e253b39d05c3ba58369ad2da6583d3b89e7a9fa29c5a26eea0927dbc1a99ad89b4c1f75d333124e6ccf1e15ea86ba9d745977c289e279aa543feeb48ae279ded37a524fab0e4e7dd57475a55be956badd56d24a92989098e8583eab676797e8d997dcf4ecb7d6ebbf8d07c6f5d677f4ecaf6d736dd2ce660169d95a9b445a65a95aba957ad2fc70abe28f4aa7bee4047fd5b2324e420821f84fdfb3ae425d4fa1ad9fd01717a136f1ab9b5095e8367dd34ba8ed94fa6cde4527a1b6940ab47d3f7d84da543c30e1557f6d1bf8d44fd446da3c30e2572f6d5b78d549115afa0a155d859e4fa1a39f50d28b9368eb25eaba89b22ea236d1cd6bb4146f33d94692642b5dfc87dac8d779604627ef6d1bc9567ae55fdb363af910b57ddbdbb6f3e54912053fa29ff87d23599ae245bf2690f0e1cf5f1308f8d1b1090302f9fe01f1ee0181d13781b68d070198c603930a37224aef7e296e24bf1b09fe77cfd47b07beacf1e2c7dd03968a1b9661f8e06964d8f5349a8de024cdd74fd27c6d04efb08f7c7b64fc84c8bbe6c5213f41defca28ab927f5ae9b88b40a6e15a73ebc6b55a34870920f631c7973154b42c024043ba9bea704e8b34449fa6922e1799c290ebe2c1789342445ea776fb3f4de44c89c5e948777bdc9ab38253f518a7359b40fbd3dd3473ef9794830122c3e9b3b90e35946707a8fc44bf18d88527cd03dd307f87023c129b9f546a24991f71c9c8244f273707a7718c1e93682d39c04843d19780f9da4e141cf47891f52a4afbefaea0bc35b65f580a5345211c565e73482d37c4d23d527bdeb7b070f32758038046ffa3079800fbd341f831bf7f09e37129c5f323679c452bc8980179f5115fccd300c5ebc368d20c9ff0ea248700ff944be2de6e0d4cb82bcb98af3fa28d183bdfcb234a9dcbb84e054bf4ca307129c6a1cc507701e60d39d135dabd5cae5b7e29feb6a25358885b163c064b0a07fb95a340e62cb76468bac864a8a8b8d1b5e764fc81594c4a50b1ab3e12bbbb6721b6edc86f3c0ccfe32dbb61b2fbff1d9b6bd6c9e202fb7b16b36fee272e336c44ee2d2c60f365c8e4d181bbf81cce50de88ddf788efc42e6d28618baf282daf01bd01bbf6690188da3366ed8f05a415b2765e8ca6ba0b119339e12bbcaaea93cc603e3f21a2edbb6e2f295f3c0d8b8ccc6b6b96c9e202e6fd9b596bbcc58792ca54525a565864a4acb7364d98a0c5db94acaca73e41a319594984a8a4a4aca669981b6c058d9316057815d07d3649060a8d904355b136732315916d4ec3173dafc79a1a6ce6ca1260dd47ca26322d88625ca55935d5dfdd6d6552acd8d0c13c014ceefea0d1c2fccb7509dd6318d34cdddce89131d7ad75da8f9e372d95cdbcc691ef1a4d963f698add99a4dcc2626cec4994c4c26b6d6d8b2462016d403ca817e403a9013d00ef404c482988070a026201454f685133cc9956442e2c826644bf69039f2875cc91df2462e21591d1375a7eb752557105b7ac8ea5a51d99226b56ccb96bc6c07a7a83b7d155754c8c25654b68c1832d0d863a02929299b152316e3311931364f901831624fd9326232d058ec39728c94941932be65c4782cc67eca2657d094aba03f89ffcd4a895d25b66d2929e781515181ed1a0c4df95bb0570b86be5ab09494bf5a29cf9155fe6afdd57ab55aad1e19689843c31f34d4a1a11334dca1e113189bc2e4b8b049d8ead807da5435d9d4b5c99a4cf46c3fdfc4e9994acaf3cdd6ec31737a06e3f9e68fa9d3b395e79b4ef42cf67c73673e215750d863a80c1877a132646c16ec326233b60db663879d0766c657666c5b6cf30489c560c02ec375329731ee8a01e3a42eef8af11c7985d4e50a0afb5d39728ccce55119642e5dffc184d9ae2530d0183b18f844c60ae387b1c39d1dde74ec4f415d62ceb31b3986a2e85be8aebdeefa5d29df3c3062c4d836189b27088cef5ddb8781feaefddae86bff7fa5b85eaed70b44d1dda23fbac19edff50dbe50f007d4e918d882ae9aac6e05a76ab2e5677e5f684dd6c78d42bcead8d4218a2a34499a4255190a6565a90955334ed7a6f923d0aa6bd9abc3ad0efbb8b13ad6a35bafc9e7e3c644c76eba24ebda94094e379989b47c01e8c0ed65c1d9898ee59fa24aa73311706959878353bd6d3ab39181765d5713c8c08796840729582fd0011ddc560cd06e14702588820a3a64200313684936a084145a9002276bd84112ee166660410d6e1bd8f9b9006d34862cc240852a9220020768f9ac24accc80177460a757abd25b91e3172a4122b822c72f54824470b50a57abd56a1586618831c618638c310f3becd0a1430168690e10349548a3d354228dced56ab55aadbe500912515054aa540a853a9d505429d4e90b95201104415389343a4d25d2e85cad56abd5ea0b9520110441100441100457ab7dd78bc748747c85ad2f8452824470659263f8854a9008ee2bdbffeffa8b184c460c182a29796f1506fbdead122482ab556993f6689f5b3c4fd506411004411004c1e7c89935c93114b95a2f58282a948974ba5a2f58282a948974ae56abd56aa54299486728549620902882e00670e94a95429d4c25d2e81485cc92048d62087e9eae82bc2aaaca9ae27b222bd8fc8bd05358abeb280d385d57513468bcc58a23882c5bec15a7f9d60bfdbe0a6b555fe8ab25bd749915a7e9a7cbac38514f5d66c5a9fa8a759915278cab28aa4b71eb322b4ed75f975971fee865569c34be53ae828271b5c5c6b86c7766948c83a83ae3606e41f35d70ea7d2e67d1fa5fc882aa386569394b9bba68f4a63992c4650baaefe2c2726cee60c9a60ed9330ade059df11654bf067a5396ad26d949599e515536c599df92d9b4e52eef808e036d7acd1dc47033cc65ab77c782ce388a4c052729dbba650a345491e2140998aa4964a80eafb9438debb7a0f92c373f5cda057e58d795c6d2f251b75ca33765790d14a72de86d539695d869a0a1cf06743356368b87f7c54c980c54f5da54355135b3a98a4255139be2aba0eaea96e2a7a0aa6ca3eaaa4df151545ded52fca35a15854df15d2d5445c9a5f82f50ad2a534db9147f85aa57a742d5530ad5a9275c8a7f4275ea4997e297509d8abaa5f82354959d2296c95a655707425b684b6db1a836c5f98a2a357008475e15d5cbdef16557602f831e8256c8ac38c78db54eebb2d6f77aadf6f415f75fbb857503ece7e154a6c5c932c04d31892293810e7f69e4ad2609c19d773bae5bc6e4bc669b85904516596c610b5bd8c216b670efc547d83467e0493a23bd3e3b3f29895552f78394b5e03441ad39aea6d98e6b185ae16970bd4eaf5768edc952add379df164eef2ac91e456f72d7e29b7a75aca8858f06763c1d2882e0f7b10d38f596e5750d4556cdac6c05a72ab218dc808eddcec4479190574585ed68322b9c24160b9543a15039d28b8553980eb6457e516155c074302cf20bec07e60446058c0ad62bf7cabd72ac1bebb6c5a9be72af2af28bca5a9261f9b91715f9852582d74f7ec19b75cb1038717a7d746ea9cabac5c0a5f9aaca2d95c9e0545550241533c78233a72a49e546b2c2a98eb79e7147c75e70aae24e9a61bb710aba546f95e6ee94a438c94e8a8d2081b148bf94c929f3c2a986ac0852fdccb2ba4d6f9a7353e45ebeede525f28b97eacb88701aa167678fee499d90ba26a1537490ce57cc6198bddb4e9773290e9925091ac5f0d39dded69df8398fab5745e9a190e58a029225597e391cb38e720c124191498e2a90088a4c72d42818638c31c618637c1e76d8a14307b100b45f9d02a06c5d97e50bd609e022abd1c24263c64a0cb6d1bf5ca65289441a8dce9387adde9f1d76e8d0a100b434070000705d96a52e49360702902ccbd2613b802d8000e08063f672c30d1b6c6c1526b22e5b85fdaaea6c61d9221ae68c953116ca8801432565ab38f65645f5bc2bdc2db9ed68714d73b8db6af824cde12e6c7f70842f37e0b821da08c395b2855296e50b94b22c572130193160a8a46cf419bb5a97b552efed41995e1e74f1e08c8b0e0054959926498e63186a3dae7aa64d1ce46c7c096fd02a0e1bb68dedb2d5738f35f6c8b2c7195b85a55e1bdb39c656d92a8e94ad8a7bab27ba55d5b7faf4b5c95c5661adadfec55655aab85bf2e6ee8f57daa43ddae70e6d1507688bfb499a435d9ab72afea4d953fdea19cabb4993ce507990085e15595db9a6792ccb57e92a5be58b9255aeca54792a4be5a824412349be4817d9225f902c7245a6c813592247e42e1fd4ea19ece739550fcad5dba25cc5219ea0f6a016d4e6f4ccc643649a24d983010ef01e7adc0037400fbb76806deb71036c16101e21ca66c775b5553b851ad79369fc0a83dd1ff5fe88ecb8b2e3aa8e6b1a8aac8a2315d9cf2b753be402fce8830142c8143142a6e6c88f88a1298233a3c363eebdaf7bafebdedb7a71ef5db9576fc0039940c8b817b332383732486a665e2313e2de9b722f56c1bd17c93d4bd8bd37c7c6e6e6323731478ce03ce632486288780ece91221e934323a3438dcd0c4e8d4c8e11321010622627e66648cc112327c9e4245d402eb9f7c68e7ce59f71d8101a99991d3946e81812730401f7cac8eebd4390e1bd77a5c2b969096286c6468b8c0587c88d8d0488dcc440a0c60602383441d8c01489e9e1de9b42c920b939528022458ee0d428e006f7de1bf7e22f8c5b0cb129a24691216ae0d0c80cb129a2c7bd3701f7de987b8e3f646a6c7c10f21a9b999c223e648a98b929520367088dcccc10a7a8bbf76270d561021e8080195ea04411b8c0c5ad095adc20855613ac20002be850032928e10693013831800c8432e8a20b2760bae8a20b4982d045175d6431837bef3dc5d93d451bf71465dc5374dd5344dd5324ef197671cf700cf70c9ddc33bce29ee114f70c8970cf9007f70c99dc3334c13dc39d7b8646dc332c428af796e6598ac4216c740c91c91142a6881132350ab8912122c7c710999c22476e6e64726a78d8dcc80491c999b95940ce111f43648a988189c989d121e748911a1e4366686290d4f02022840d0d6d08cd119b05e0e4e0cc18a1e3882131323734a94c91991f3532446c6e68323441c4d0ccc42049736c7cb819322495c151400d8f9b2143d22132363e0c91c9b9b10922cd91c1c1393284cc0f3536333942c8d4d4d8146088cc4c8d8c0e35363338383345dcc8fc185273c466478e8d0ff77aa6213533448ab0c9c13952807b6fe9de8b49436a667adc7b499701f7047338393341d868b9d122631962081622373135867091c96e70890922081b3686cc5c867861b19969c191c989b911a2e5889b1c9c9908c8dcd4b089c04d8c1057b5bb0c8c1049a4da0cb69a0be47e34c1033a080101f720092900a208ad064ec0006b040e98c1def15a820b9ab0047d042c748cec8c846620c1850fd4904413589a60c0102498028a161390f024a69043050c6a881df821e20310be5045ea8a28569440a246011f1834118405a229904f50220d360b3ca0a775840f3e9ca8ed78a004cf8a1a5627015438603af46c2088990d9a08d001e84451810b10a006100e7041034ec00453168ac8e13404033898b0d8f9b802156e443461b23880c4cea9f263471c4286022468ac846127c006065cf0840c9847c042e7888e21dc13191e308433ac5884a001214a099a00b24511129802880414f961013a20c0c3920524c00840f4400b315c528af26624e3bd3777a1060ff4440c027491412f983ae062c5d0ce6cc1240c2e17b0e18309844e70e0d104179898b1b1832ec0c0c50e5da8a10063e8a28b2ed220031adcffbfe7dd7b41a7dee17044101f22837324a60020d0a9b1b8f7389c5a8a7bef4874de7b43f75e1bf7629b7befcc3d350ff75e9c9b16216a8ec029c92b73842606c985dcdce810f29a98d7d85c480c5624e64602354770c02187e6088ecc0f423e448686264608f6aaf7cc3eeebde63df3143cb8436468666286388e4cce1141fc43d8fc881b9b22648ac0b969c939627344cc014ef7cca69b33435304e742726284a0ee893970ef25dd133bb9972606894d113237276ee2de9bba27dec1bdd7744fcc827b076084cc909a991b199c9a99d8716660af91a1b9002e13c487d01cb12102e7b17befefcd43eebd44dc139b706e5a728a1862bcf7e22bcabc26e643646a6e8ee4c8dcbcc666262726a746a608199a2245cc3c6726e626e711a899c9c98929e2c66688c784f75ef0ded8dcdce8b8f77ef766f4de4b73cfabbaf78eee7995dc7b25604333c48d0c129b1f913323444c911821706e5a849041020109c4086143431353e3889b989b2066686a087183532388199a1c9c2337358298a1a9513323819b98212c3234458ac4b0dc782142889b98181659cb0db316971a3835333144084163639353a3c8911c9c23372d356a8ec8e0d4c0b991c151400d7daf77ef2defbd58d40414e46dd735bd5af40225902c20f2ddbb2c374da2710ff21ad11f8da8c40215c8cf9ef63c8d7340de242811fcf078f43ccf7b0e472ffcf5f445f11ed62abea7b557c33cbe8bfbea8b17b5580bc5f0190c8980e326027a4f92aaf944c06d447fa8915aeae59f08fe0d4f92dfe5e1a5df4d8e87241ff45023aa9408f89b82b6915a3a3ea3465429b873743a1eeb146f23b534dc44787c20085e7bdb884eaf8f33cd42205d98b8c040759e15000a443dabd590c8d74702df03bda664e7b4ef3aa721315ee7e3fe0e6e24c08b7be734fd702301ee6f2301e21af2aa887a66a297469668a65920639af6ca3297f996209170c3e0887c70c3e008fd1c52effa257a6922aac4fbaa8f9f73898ecfe68ff11eaac4461e8f659275255190d661595a401fdf449598df398dbc882a59f5f15662017d72affaa0ad44e7b4f2d70c92239be8aa9f5fa21640807e7efe31a224aa84cc6879af2cb78d542226e0d2ca8d6f033dffd23ef098e69282d3c8ed22053711181c910f8323bcf3473e365908f09e0ff3435f67f002a48b0c5c4e70e240bac4806c010da33b3ba8921d6feb887a96753c253b3c4672c0d7f1763672db0590dfafe8b282ab0faa5e9a552f1d2f6a1a1806048f581a9e467e81a53252bcd51cf0bb1e0b0c59e2bf2fdc2aec436970c087657dd8253eeccd875dd380efc5f937679cb29680ada027bd3e6c15a92ab2b854bc6ec289f4e9f569820329a9cbf0b0fc026a52972c1e990cc3f243b35886e16fde911ffe43afc92326620ceb913b405e95f0f7e230fe637ddef785213ef6aea73ffdfd7e47128124a9789008b859e0bfc3d24f1b8114db247090de56a749abc381d4e7046b7a7d4cb04b5551aa3f23bd3e2690229bdf6b3ec22ebae8620c3cdc345fff80cc07afd11c863a6f96be97e52891dc43dea9409733cc7bfeb759deee71f58a384b81f444f1f825ec114f8a5ac4dae481bff2cb29081e87608973988af4aa27c6660facfb786010c618b4cf1145738a43106c7156e88757ecd2f0a24eff4b412efd0e8e48a3d1555e94cc1db84dc3ad9669f8ad92a8121e9dd378889c660f0c822293c7377e07c7ad86392d552a3201f0002384c60825b72598601ce4979c7af9e566b3c495a3f88daa7855eabd07f649814e3479880fd11e9a07b8bdec697cf317c2a11d267abc263e4ce07c98607d9838810f132218c309d2a084f442915e0ea0c089541fa320497a7140e2b1b40e96de287aaf798f51f017ed81539ce32549efafc6bf0fcd1ec00d7a20ea328233c7fbbda691e3a51a0ccd1ecc1ed4242c50efec69ad378dd4f4819fffb9803cc10d073cbc5425d37cb7977724d9e1638225d27bf1fa2c61923621bd3e2670e2fa206fce3967d8fd3e3cea20370bef0c238f4f8e689833ca2273cef1d2f1e3288e1b094e33cc63f5c044c0ef8065191542fcab426294467ed1e0419005e61c860f0f4bf573a84122df5dd6d3fb777118ef5d24021ef41135221a8f5115b4557c719a4d1fe1c150041f1e3482c57b5128c12dd5d7255853f0df2ebde9070225a4aef4fadc722bd8221da5d767053f298dfca2e6e0547f04c7313c186e2ff5c8f239def8103ce8e3f710fc4a11f42e6a5223f152b387efe007eac007afb2ee11c107593cbe11045d44a08a3a4010f44c1efaf82cf1b01c71f780a5e0c10da381d31bf01867bc43f024c8027f59e031f881a2145f164c439c01994f43974b6f7ad3361def5df1a4fe40e3351e4534c74b7590a21489e769ad0fd21a97f74c13871b7d59cacdea01bb67f580a5a29aaf0f1a3f22c12c71145116c69745ab308fa5f5f586e92425fea820c19a5e92467e61b1bcdd0396ea6b1af9850c437c31b37ac088e0e36c560f588a8fc16d04a71fec79d3d01b20efc56197eef4fa8c400929122f1d31fe8e59dfbfc352f1e36704ef528d697c67c1320c6326481af945c53e238022c521bd3e2358d31bfc7b59f25556fef2ee018365d8d557bfe393d86504e765e18cb2f059f8309585770f58ea6d58eaa539342ecb3de6c2cde27708ef3d496aeed89124c53bdc0d828eb7267d7c6016378ff0dec34d0424a23356c328da019a3b80a6b943bcb73ccb1c0f32476dfaf0c4ad62bd7b80bf218dec0411ec52f2a2f7bb43368653f5d2ac770fd8f8bc833582ce42e2a537a424a8a44c759741ec14a211000000000083150000301c0c08c6c2b1380b243996f614800d7e9e4456521cca035a16c428482984942208110001100180010100084d5a3dffbc9f999a3e7df665f4d9b1b7ab58abefd802b59b1f79d73736c9c3d3dc1fa0fce4be4635565b6d30940e5f97cbc4674cef9f95f72ce03e13aca76b7f38c4bbd1baf90a82fe16ab0527ac26ca0bd2e7f5a6cf4a398cbfd706b536f0e4fc12a41fa2847c047797db587e184b88ea433b4cd6fa7fd0c87de9c3e55e2135ffd82c95e2f36f3540fe292d9f7fc720fc74e27fbc4465ee6088f9c87dc95ff95d5008795ad747186f761fef4b6efd1d57ee6baab977901395c6a89aa03c89b56bb59a589be062353b36a420673f7ec8ed9b6bc4bfef9ddbd48215ba03bf337ffc30733a83ee81d6bb0fa7f06aaf373490e3a073ac31f8373b975b5128eb4442d3f7992674a206eb4b6b4276a8f769806f1833df56ee81d851dcd1c14a7c5ee55cfc6b8da28be3efa3426fb4ab2cefdec77ccdfe8a40c8fb37e18fa224de567465d1dc6e31e0377cd757d7470bf5558df6e32189afd1b725b4247c0e9bf8f3c8beec6f37bec785aeec4055c4cd60d6b717631397af23910fc68cd27798c9667df41c17e6abb0a7c187f1efa589e1130b0b864fabe8da62b8ed2abf17bb2f7232d8e9273ba6bb295175b57cd1adb881de4a6063909a17140f0ee105526cc1a9dbc0b8522835c0664289203e7c2171853a5b6f4c1da0cd00e4f29d5cc6ee0c67c2e61f3b40129820c5c9d8e82c667806639fca855e346579591732752bb264f9c097d5ed9c5a255fc8b7fd4debe55343699f7b31d70f59564ae71af7a1a83d8aa2ca269f95e10527fc9afba722aed85051271d941579635bb221dfd7dab0a630e25c37e3a8c55dc5839deca760ceef139e4b20bec955fc5daa21272ae94a08fdaece7a9744b6d5ad82ff071c5baa041e855f7a1a35b8f7e1d43f1a37e403ae1bf116aa81899c54a1b89606515dbd4ad4d9ceda4a3123234cce89b2d485ef541586c60ba89732644e9180e5ace9a652f6dd3b1c9c9a8992027e3f33fc8458a4c0f761ae0cf16ded1f82af7ee5e9f1476290bde827c8c82cd7f6250c6b3c94f9cc5bd60eb9f70849d1e50bb8f365a48f167a84e14471735f2bfcc630082a82cb2cb142c52a91a018cfa13102e1609522808070bebe96cb64c5c33136035a04662f74f2a720e10f04f95fa6f26362cef880722634ce36412475cfd02d67dc3cd6272e75c837f7b8209cac130b4b9dae12a95cecd16fb7a45f65290814d2f64ccdac2d764300fe70b6dd90df6d58b32d7f20dbecef1fe34f9c73655c2fc3f9c817a6ee49815560425074a9b5b2ac48b433fda5e58b4ed5e48a1d2eb6bfa65c1ab35777207938d8b866d4cf9c8aa91b4d2e7809b9c9454da9a6a23f068a27e571fc84f2819c79cc040daced1a7e0b3117b32db32a3411e5864cf99f3d8238360b20e4902135c4c6dff6993787af4d1a513b66cdc4b81604b5e11d18f124cd8c5dc28f4637156fb503109d15a4d17f318a34fcf73f74340d2aec98ec3ae7501e2748cb668c181f15c29e03de76242c0cba54bd9907448e5a4155c5a8615703a6e96d00d041ce84bb9d2b0732f3a158cbabaa792344fef86c68be39004f16f79797aeefe0eb349cc2175db672f3b63c38bda3e1132adc7ddf2044b56c1967abed64e9a1bab34011d4f8548c504b8d414a0f1a583cba6f016c2a940fb0743778f8346678a5abba1b1a3cfe6f90b00764da32aad6fbce9d22e73c51eda5134c3c713e47163445c11b0bdf88d17d607383e70fe97e4d9dcece57ce109008de5a1bc3e56f61255db9e71fc8c88959e90393b09b9c2bee6213b4de558aad95ef4e8d674a5279178aa876a8d5fed93242959fa8ad9b3923162be03545cdf637fd3426bb00d47707eca7e1fda27c4251b369ea6858782657ed2ded2c77b0cf8cafd8724fe1bfdbd39208099a62efd1f5f3701b7dbbe231d09e8ce3f8fa0ca9febadd336fe29b3186a76918c616beb1efcee9e26c9b83d6b691a411bdcf5fc2fb56cb3ce1b1fd032576f9fbe0a0bb193fa18c5f2f028cd91c5202431edd59132d09f44c4523a2d991eb300260ff151f5837230da439fdf13c7d76ae6d8cc765a6eaab545dd129b5ba0643df3d2852623a154196ac38448ac44309b3619f7ff1ad4d1232661df0a5a768c5343050a798bc4d49e06149590bef840220b63135be61cd6bdaa53c4b056bdab2c7131dd0dba06e1bda1168e0083e366841f1deb3038118900e36c62cc51ad664760e3730fd450f1de6172454e873df6b58aa2ab1d614d1532a5ae3773ba8473b90bec541aee369aad1bdb53fd62d08a18898b6b48b19042c848caa26265f63c365818aaa4f71652821a538e7784c0cb6f3581377fe159dafa3986031a4e72e37c2440ccfa51ba5af8fdb50b4c70f87d90c80e5e36dcde82438eb5f3e5a530861f3696a04fa4d33ff0f5635d31b0688f3552b5bb077b8ed00d02827f82fc5261cefd285b430628ed98738d31458b12c5ec564dc9e7508ba352824a97c88dfe58bf619f14f5a8fd8507447762b5f17cf61e07e9484bcfb9c971ced3db4c656ca52e789cffa0016fc9095b64c49b06e57574d33f6add90364ff02fe59b7ca8d706ccd71d395d2d6777c13373ca1cb05fd588d7873a4dd34e3ae4dd9b0b796c5f6b34045e51fc4cdc6e20d223eeaf0ddcc4caa1071e8a30dcd46a32771f2ce7c5a2c29c5976985f9db857739953f016b2d805ea680398bb95f4ea2f72f003f70da5f52895a5695513294859072062f14f97d1aa6351a44107b0c8fe38ffdb2a4e40419d25b9f24167ff245aebce40a493ac6453d05000058af62f1deb1510c270904a0c198ca35b7e13933a12f4299170bbc9d72f11de6bb8091dd0f6e3ed0732e6cadb3424414fc01222daf10e924465c8403d52b7361a519bfa7d11e81d8ebb4c51bbc875c9f2356f7048fdbd894346791f106384c6789e63d483618485cfe52f1d3e44083b71711a40095f054ac261540d74ed4e21923e0caaede48caec7b7f07a84c1f23153382066ee170e1a376933b05339c5c92a76af1ed43b67aee616bfd61734bb48c11ad711840220a52976347857bbf20d022064d9f9f0b963dad440a12da7bd5e819cde8f82c9ce031bce7808f1dea983837b3ebf8dc88270f3a64bae3f9396ddc474b0f49d443f53b27c0021a150a0307b6aa796251704b30f54db6aa210bada0f82b8670a7742f35c747d312a1d2b47be56ff9f06442d5fdc3f9a73f7cb16ce1628a74682a01650aa1333440c457b5fb339b554f20b03f7106ce0e9c187e715d6fbc38cf89daca61edb852b9c3bf3b3b570fb53f501084e27920773ae0577ae0b4fc85a837b650c87a7b0051451bc91cbcc30cb375449f5930e413fb8bd18f27e6d0fab2180224310fa955391521386815793e762feaaeb134fb5ea8bc55a4892482515ad4bcc483834913e3f09c885e88c0ab9752c3d6001c9d8cb807cf2925d9dd430f360316ddbc8f6e95c14cdb8b2cd7056f03caeb17f5d64c7789305ada77733aeba31623ea0080036112b6133cc07c593994e087f55e1b897e32edb911a7c22c4708d2ae6a8461aba37a2ed6349b7eaf9d17d1745cf8044fff94f518db7cb19e444bda4d55f6368abf228aee836f6235388d8cd1b627fe29c3d7b01bc5303281d735775bb7baec0a39d6fd4107c43458d521ac0443ab65e5ac72c99943fd31fe68b74181b7be98736221eb62d6014cdb406820951f6bd64d510a9aa654ac75be6881b67d85e9d7a28bc47e404607edd67ac3e2ae893679354cd79f99452a89b715a94252b6cb8ca001f60e6aa3d2cba63cac2af703c889434e7f4a416533638d034f965abc433953e5917d3f11ce4f0779c7d00c074a306517102383087b321641de0f11f9f81c300cd44e77cc3070c27ba009e7e09f1198f6d13c3a168fb5a97429383b61960855cb3c81c4cfee29dd3049a8a1be4cd00eb920a9c4d7d024fb79c0de13d9398b857bfd1b50aa8a85525104c0c809e51fec558a6274f2c7327265ffcb3aa5786deb874c9af773d400c939d805598ba771f488c8ca70502826e78ec1686e7498e7daa855fc9374e5c0b418a2950d0e76777a8b039349ca9ed0de088cda51ce18631ea385d0cdf0f18008a4f0cde42af445b82fcec32187837cb95120874f38fd27576b7ce128af68292d23b148b58eb844462066b0ac2d58eed1aa20ee6944fcba58c7adafcab0489ab007170a5b8f5e3f3b3b4685909224b8be5d02a5818cd91a8fcdf0af7fb911c09ab8035726c6649e9818bca110f22cdf9b336ffd6518660ac58a3f6ad0a7086bc01476c20d9a280ebc88785cdd07ffb24419b2b2d767790840f7c6fae54bd5da218122116a7fb901ca456616f415bd43caf4cf49e1f0e404e429086fdf23e0fc82f128b679acb832dc81342c54abf50f366d527ea24e79afcfc504ab2df55cb221aaa767c6636b0a77b9f2c8f6585c796493340cbc39c4814d199565e7d18c130d7dfe3e9ecbd7e3c2558a91882d40e365c42c0120f46dedb3d36342de9d75cd66318124fd9fceaae57befc6a351f7facf649f9c6199dea314cbe715d1c49f5d51f7560967f585115aedeb290b058f3d5c00f19a6e6e363464f9c4c4101095658625eec2c271d88942284e4ef35b7f5bab07d6895e8f0a5ff5e15302ccd3423966a689c9f9795ee37577ef3a624f8595b2a0bf1c605a49934f0c5b6326e1d79fe85bd5f680ec90ab642a941dfb15cbba6e487bc8ab8e8d79a74375cb6a2d7e237d98edca78c0d011769d25229aa6c2c4b9c38cedd8f7302979c63d523a2cf4b74ad9619ee0cb27a2664b68a3182016c9fd86828a4789ecda258b3f5573050b8f1e863912d50c9d794766d9a0625b12ebb2e77150295f2acb94414b7a9e32f225154c7f9a8b7d6e8b773795f6cff63a189b2c01c04deee368c99b76ac3b3a8efb48da2fee7be1d650b4aa8abd3333d2c63ba3fff484d68bea9519f4ecb0bc8567294708242eb909f47ee29ebe0caa3a3b11ac1befbc4d22c3664ddb52c286a23a9257c06c2941325b48318580224cf491afccdb9892b5368824fe2c5ffa182bbe46ac62a834a04455cbc6012c28bcb08625b89d3e520025bc8c3d4942a477325f5df90e63682c54c9cea9bf532b6e4df3942eb5c51a550fe3b9bbcddbfe5b2e40fa7431257c0b3020f5a9ebd8090244b2f29577cac7c7bfb5a6854fd888cf0f8b5bfcbf96c8179569c9949c23d05d17a73300993816c41e5c6b698a809a458674765b6e6df82e4999d667b45d8738f6671b62854f11cf21d424dbbad7e04e888bbdb708dcde3898c2e64d4e3181e356b83e7fa2a0ff62956976622d9c373fb4175599d42444433900b49de554daacf1441dd2c1aed6a4d2dff389dc6492e5b3891abdd81bf90ad1fa9e42378f6e7511f61b656a6878d058b178e1ed75d261dcefaec5329054a005514a950f2bc61d4ac48580be5de8e7eca3ca50d214186d8e0f4eda2bb3a36cd747582c846d9d369835e11b96257117b56aa270120721dafa2355b3a3dead4272c16e7ac042de948e99a1d715225f5bc3c9754a569e61c3ba7692a6b5dff281986ba3e30c32acf4602cc1dde674868362a78155087bdb045a9f7db060afd34c322050b6be85187f285306cacd80260d01b3f162fb583389734598d62b7678c0d7dd668798fa0e8d6b2631ca751a812a597332a2abdb59deb75683616eb5a52a5306c2d8f2646f22c6bfc474cffa95953d1b624c02c3ac81881bd7103959a126d96d35284da4a79ca606bf746044639d46c83c482b3a24f1b79a3bee85606b3063ff136ac86ceb094224b324a163db66b034992b4f503987bbe2f2e0ba4311a224a040b1af588433df1f8aec179616e1dcd35905b76075c700b8d739112506adfc64fa9c1bac95a6b0310d2becc9fa50cfc953fbdfe14db82e7dbce3832bc9d5d73613aa587161c4fad201902a142a0ae1cc15c5ea213c16e751c185302d9f9354aeafda8c3db5b801bc0639ed20cbd058491c644e9001a8eef75d2164566072846ca1730d911e70275d40ca3979a2a466bd955d9472f4290ccb7b93b299ac6af612457a9eec461f93d1d3a45c8a1c8d4f610eb9a8c562403a6d8636975ef40f693dce54404a51d16b1a71b3076e15d2ea2c5b337bb08425c26a387c9018e695beb1a276cae77acf17bf16765772bfc951af9c087566ab0a5d5502b38111f4dc20c6f48bbbb677e5b734a19348db1eed87b6044dac4a465eba1dee932e493a2b2c8445aac4c6a9e3f6355fa9f279de1696d94090d1201e8dc0600e120e0a82138c50a555a0721779011ed046aa7acec2f3de6e053acf23d6f5cf9093987d7de3b13d9225617fdde7ec2e1a29b76276f8bac4385691eeb1115d7709eb021df4783da8862411222df64c3e6666da3b73134ecf24add2756b5e5019851b76d438e7245621dc7850ff80a711cd75f15b088158e75fcddd5441fcbe7aefd4ffcd25855b5865503e1f090fa748eb91fe84339f8207e2874abedd1a84d9393b9c23292511d4a8b8d7db10618ddaa5d9a0b3452a84cfc081b1577156d68738386f35fe712995bce25dca9d5d2284dc1f25bf8a4ddd222a803a1a3ae8d234c8ed190a310607792c8962280d68787d335041e39c7ff977343978bed5f1dc3186ae88c247fa00b2f36a2cea86385d0025ce37175694e6303df9639a7710a88dc272e4b467b1746356b1422c50ead1c249968e50c22eb635bfe1efcfa670e9f0b46e50d6452162bf61e140555c0007d67e76c74534b0b0f31d616d44d8f7081b6e7adaa45ac22958137c2f033f85ed624cd24dd9cb2dc7aa08988ac5a89726a3f29dfa0f560784607c5a7a7a74c1efc1eb0cbad2f677d0b4e1326cb27b023f07f15e721e2a23955cc45d01fdc970475b1e9f809306df8a5091bb5570f82eb34cd0a35dcf3c8dab4848b6fc463335b029018e4d34fee076b619c6f47775b9440da8a9e40af51443fc487a5c2e47aa70deedb0a37852533a19cea085c9acf1d2f5095b65c26e55acd0f1053ccc1078ece31fcdba50d77e5637d9a9ab98134745c26d15e96e5208ea7f129be1721c4ca2aa3a454292127cf447076da141b4ba2f27944827fc6022f3475a02481038940f601c3b19b534df427296d660cabfa6ff8386e8065dd11cf444ebae324544cb2135d0707b591b20d93a1eca6434c029333fed2e1564e5255745169950cfb16861de9610532afcf4d56465e0fa24816d83095ad524e81303087cca5f8663f39a3e604a8adfad0154204c783d4702cb38fb424cade813ada675bebf6aa511c3a9102cf413bb8b457d2187d127a4acfc2b24c7ba404b479520dd0dae795dafde18855ab738766477b108e0e6ff93abc7635750bc18dcb9cce5f25601f5b110ff9780f4d9eb35ac14a189143f965296e98f92e30f6dbce7cdcce244c3ceee1e9ef0b264d27884f81b7c1f6374467355ebf61a8aaf53b7e21db3085fa8620f0e89c79b1484e056fcc3e10762fc48f183c3fe04d8fea0c3cdaf8ad7d6cc8bf21f0d04f7c3822bfc5427a542c56487c72bf75cba4e398a3ccd9995de4531a07da7f8831217f5d1bfdb1d4ba5427d46b2f1ae874d25463d747a7d9dacbe0b8f0da93dfd79656e942ee619e6cbd9eb9ecddc3d83e03df4db24f79433a1d36d759915823e0a85b8211283f0879a2f18a9946313c6ccff6dc72dfb83a3488f30f086fd4c66b506f72a7370fd265d2e378a69537b3f9c687f638ac6450cc09f32279878ee04de756d447b4ce72eb91c16183b3753c4b617986eaa0eca49c6cbad34f44743953f24073cf51f2825bd0049c19f0524524da1c6e5d348cbe475c710d9cd486b842694fa674424848f5c0d95cc9b60232fcc6294a4988799f4011df0063bbb1b57d2c7dbf86e996a61641c285b3906e2bdf56137500c93811cbe2b8e61e8d6f864baf1cd9d5ceaf6e001e413ee761afd2fe2fdcbd32bf9b488c66b43d5b9df20b442420b1c3fafa581e9aa15f0808340c23c3331915ea6021601870b41a3f526aa0499f93b4f94882c9b3053a7292160d10234af9721c0cca7e8cc12a71f394ae155662477bafab61f5a51f335fff7bc0c7364a64935feb506408508d8d7f9e05269f2e4f629f32909de9f037bc3d9b25c805fdeb013476009451f1d4742edac84d1879d338023897358d8206c43caf8800e85e33d6a89100009b03f0160055122dcfa124ae0ce3220f9a7bfb44f00169809eefc9e1865d7788c31f3e830b55cd13fabebc1378360c7d9038e36cba6ac522cc726a3dd1f149259d1b4d5ecc5426e13ffaf980c416496440eec93255d85bb3890609d94851c50dc3b94dcd7026b3580cd5d19d895c3bd3960be2273c3bc00ac14bd9c12e85e1c09592f5c83fd0d9185a9d7bd42de8b1e34a2642692fd275f74a2873e734fb2db40e33ec58e846e35da836fbee41058bdb7efab9cb80d1bdb68a399b5a2627b5ad1b18e1debd0a132af533916d321505ae085c28c5129d1df4ae86b4574b4b27ffa0be33520543718e20614a1bc47eb7c1e0f51d1b44a298799b5a44f545876480395eaeb067560ded4af3116d45d7d155d0454af5285a61542d70aa169a507f798e6381b93a25fa550caa55a72a63ffef2f76fbbf2e38f5b1fba9e452e89e8226ca4d79a135a71a256bae2da54d6d3683a3f27b6e684d662cf8d887e2b45bf15a2dbcafafbba12665de0e82f37f0b6b7c7d8e19c58846ebbc8854ee7f1ecd747ed408f6288d58ae200e281a7bb543bfcc2eef31c2d7249e4a57a8f69c7a9aaa82b3ace4a3fae57db0b876647c6f61e23d438c72ae9cbf22a7e3d09bdfe4b55a94a7da56cf6184d17914882fae47598d1e54ec03388f519b4f14b1d9911ff54bc3d3d041a4c319b0f4d42736c8563ee48ad2f876e28af096cd31b2bb91419846a63d686b8785779fb98ae1a7855e1a5b8ec40c864d706ca561fec041981848268ad998c7ea3779426ba0e901151a9d75eebd21f7bd42273b4e36ba46362f4c65bc4704ce686c53b332a438595bdd16b041c88a2fe6476410246dbc2c0572de9f942546165383d8d8e1e2b44af1545d7cafabf5f6370ad64525822ce75077c274bc68569dcaba222bbef10ef95a4f1ed650e77beb54291a296d5d4a603a4628d96a9901d32cd87905eeedb517b1b3c674a0c89d1eb0ab0e738c78e71ec58c77e6ffd3206be9e8e1de9d049d21ba587c5da312a35f45a117aad0cad561ec8e33051ee89e315a38e213158ebf64e933d357436e1690c45bbeb25c5201e998ab1d8d4044ac911d0f2f2dbb3d3561bd84f2081f40364fba8dc08425d8a035a30cad5254c65a1253c701c51636a4d8a80ee25ae104a7c9073f58da8ed0f868e2b25bf2a9035964083ff88ce197e02f5eb6706b0d8b501deee851234c0c8543e72b27d10ac3c533a02e67e4b2f52153193a5f84f2d3318e6eea794b72355d544aecaa5d24530ecb21eb678145124b372596a0ee1fb62023fa1bf16fccfd8eacaa20528e10c7aa1e0a829bcdcc21986f9fc028df8f6bdcb226bb85d3a38d2066da1dbafcb2c0f72667a010d3ac7174f31b4110d925279965f01da010394d3ac9c7e685415e436295fff263a9343393e9486fa7905c3c3af1eec6441903f867654ccdd5781f1418eafff488864959dabceb5fceb4ee94a2f9099bb2a8e81593e2b820a830f242a39d0da34490c3f5b5c4e994bc82063fecb7a9c3ae1921dc29273cb2c65d157b92f29d4fe384a21d260d7d9c0ebea68f5b44187c38b9ed074b46f380fa4d4eebb1cbd011d1b3b33f311d9a1a4ff97af97a8265cd1b980eb10e1b176e18a81659b182cd0ee172d6c8b157e2929f0c47e5a5912e41bc6a983dce6f24dedbde8fa86018a4389bc8ff9fbe72ab68ada14effd19942b7a952b0f66cea297f404a0db11c4e158164c6724529d38b1f06a57981a8931b0649e2a845192a68921ea002fe77e6bf612872f496044c89fd2d8031ad194165a0673302959a958ba47ee3f8378a4762a0781b678b6838212c1754b6bd32d662786182952bd1c7702ac1bb0495c14d108fd9b53842683915447426adf2684ca3f830929f61ccba3a3775100d82d88162e010241181e06c4d1014b785bbcfb2de79acc40430223f86d4a5efb425bc2e24a5b7911da0e62b16bcd8fda11282d35f3e61e97e7b5bd008865f6efc8040831536b8341741905f717526e9b50ebd93d83430eba97b590585af3eec50f1e7b0532d9628e0f8072318e8c1cf4808ab59106d0507003c0e1dd24124ebc1383964003dcb767d75ac285a61cc6a90520c82261c9a965a64176fa1ac0be871d392b6c149413f65ef795ca39a581a28447d1587b87a2e5766cebdc6bf3372f62948070089399f34b1b5d40580027bc1f269982624687969a5655b3a93e67d728b2b5115ee5c8d5ba82ffeb1e851cf9abe9fbb6885be6dd90d6874dc89229c327fb1be7bf4f3fed861bfb4f52f385a56fc1f95ad32ff04b63ff4a7caeae8b3203343363bc5203dccdff9be1a20a084cb6dacc4ce441babaf089c987563dfc9726c6641436e2ef8d7842d81dfe870ff6e07d716dfba1876d7c0c085342188a3ba18b955281bb69d0c391e5a4e86095e86ce5848ca16fc4269579b31130b65dea10376bc2f1d4c4ea55266c6b14105adebb5d447168089f10cebfcd5fa3b3768e8916c4d22c145f9fee1ff90ec100720bda9647ee912ca42a7da38a3e53662ce0cb9a41b9ab8e7522590809ccd3ba5dbc15e1338eb06adc4d2ff15e573d17171ce1c56c286116a0f88350664a064443cecaa546085bb6e90c0977fced0aea3d8908879742948d4dd2cccfeea556d041b08aa03f4e972cd0918ad09a1c0534a05b7360e99dd6748ccce8a6c8e9707605af84b835c5530b55637a12364f5fc9d472f359f8052974b8c365ea4ff9d018334474433a2ac88b71eeb8de28ec4bdb1c5428421b731426f4b9f1ec9f6c76f9315a893acbd0da3584c5b7311f56b535381910dad2236b8cb93b7b74ebd665bb7f4864e8535b7e2f95b36c69989b714bd1b4060c249bcddb46e026d5d8563d9feae0157fc4fa9fd8431c807dfdcb25b2b489ccbafac2fd81997f0dcada286c051eb0cdd9d9f88496da3e0739388abaa592d24a5ee13ad0557c99246682a791763c960785333c90390e7b2965d463c278e80d291390022c6b2b8a8b8b95e844f7c59153c59756b10a493512c193faccf098a463a4b805ad411119283e379118af0b7b1871b4e5d82fc797b9d48bff50d36cc14dc83ce935b0899a86ca1c6f9010784315ec4c27046bba6a81f382c14486c8bd1536b1433e25f449757050bfd086c9706922a370bd8712fa9ef47e657ab0b2e40225e9e19d1a0390d7ff4b52d35f735dcdef9b2aad7adbe63d597dc28d70c49ebe30bf5c4d9af89ad8f0b11a840d65b283410735b065a3e0c794d879d4ca532f9c1675042d4968cbf1ac4c8a2b788fc32a7e20e8815a2bf787c60a6592c51c78849a368f664a45ec5f46a71a16082965256922125124adc7bd19a9233934dfe7dc76c8827f5c77d68a18cf253bac70e9cad1c742440d732a10c8ca6ddebd6fd5de0acd6f12963060a6e6a648e6a0524af9cb523941b4cfcb0c20832357b54f744347b06c034c446cfaed8428cd591092ae4a9714b225cbcee98d65826eac158e460c33f3d131723e4f6ffd5dd9f0cea2ae49d75788a0ac3791401e72f229bb708c0a13b1125ac923141927335e9bfd70057afbe730a222e4a3390abd5ec5c0d9f288467e8a012b5631a6ca1819ab0a58107a6115e37e18854136b4743c068421e60c840469a8a1a1de6e087d5352d3c3641f951e7f4272c7e9a231eb5ecea0047ffb66dde7adbac8bc2eed550ce7356334fad114d56a5d68eb3a88de7285613bbc8d4fc0228048034454c18016c01df81023e0065b81fb823b75a56e2e73443badf3500d473d16d941044394e488edda6a17126c5bfe062fe3a2b6a54ac220b6479b6dd0a6d163ecf7d733c1d67595b82c80985553f06c6008d5a25a4ffdff095c73601d224f11fd6b558b087cf43c4b6d83ee16e478f1af3def16cd79bd3d73c15ed1f57f8359db843fa7e482b7f693ec81c1f505585ff91b88a015abf34b40027fa9901960ec2625b02c6710ecba6106e34e34c2242185c2b4a587617a12eb30040b31c9c334af8bcb398eabbb926bba2e17e8c258e6b9aec81de344255b3d56fb0cba5caeaf1770dc640bd55f5b6530fd3ed68a59e9d163c5d067e5e8b602fffa93cb74cb67a38888c23e7f341148907503553444777558d74baf5673b88c9c0ec8c6c4d35b0aa9b75c567350601d3a1007826ec63921d5b556c13411b1f8de83c49c3417876b7cbc2fc9a1463e6bd05320d16b21e42aaaf047e4524a36d35bf3c4a1a87d4e697fd5dbc0e200a6b5abf5d08c90e71d6184c92a51d459e5615a58f7b2be310acf3c9d2c919717d7cc512b433e76934c34b83122fa2c166b38d5473802566c4a6f2a781a7c6d0d0c1aba33785d41467a4ccc8aa34f7c03934f04596409bbe6ea2cc5a8808ccc6c7eef9824c0f29768fdda2e8ad19a36d1a49e5d9c886a8d44b36cd82521a7e9348ee71f7f5db002dbf1627e2e2fc37311eaf23b5ec73a76ffe03a0f2dab8b6bb712a3eacf315aa70dcf338e912f4b99ba95c358f5eb7eb0e99550bd5e87c38ae15aa65538e7fcfc6bf79fefd80d476706702d69ff3c6fa09210d33e72feedfd8ec2558141c949aeefe6d7f55c907a8f89ba205b9ee69c3b89bbe9c03f28c7591a1c91767d23dc3a9504bd7d3806845ba1056b88530eb086a270af4ca08fd557568a6d388161e0656fea0253fbe33d2d687871de4c402afec767a4503159938f2926fe626d276c911daccf6139a543af44d48089ac39569c9e13c85209ce7839b32cad31755ce59307857f218e4becd8612591573c4eac1d8d1ffd9b4a08d53e098d70855112ee6386da8ba6b02c60a529d13842012097401c007db34880fa8f0f4d71368005ae490e99b73315c1490a481886e31ca7d33652cfc36c80c83c4fc07708274fb71a732e7e9856616633d2e481cb521a40cb466202a41e75778dc6f9a76263facafc92e3a2aaebdc49d4895a945c18972c21187926ce8b38fe9ecb1ced69daa3644fa1274fc41547eb25a9c6fdc14612259f2947e9b784b2316888ed30f18525b3de21bbef662c5ec8c5783aa991223a566bf13fcd20702a34f87f76bb1820c2f0e4c12c964747821c58de5ae72f4413b9c469ed1053a94435fe65c848b3ae114bba8aa961adb49626753dfc5ffc08e1a819f151640757acaa24aa3ea50c9d9583961543bf95c39a1b519c2d93b2ebec30c998f719529473da800dffaab6355a2ca8bcf1d79277dc8971fe7a41aca07ae6c750614c649f0eb8d853f8ab812c1ebfc3294cf7dc7b2e7526f8da2e001237768f08e9ff6503649d51a5061c57458a29226392725f0f11947fc9ddb82a543e560cc33776f1202118ce1a03fc351e90b6617f03f676d0a5de8052ef83989f14ce52080b1e34dc64937ade3729788d5e2445ec8d20b366a8d82cec93e010fdd2d58e2d0b9ccca9a9aace7c3c73bb40dbf948cf7092b0e6b0c3a8879471f04b17f43a0ff970c461bfea479ae878488477728c76deb8ebf0b8a7b37f93d01a21685c81e2c846f37cdd5003714bd8b0b9fb4dc88cd258a29de0396525f5747586250e2b12905c91212d02e488cca1248c0417204d4556adcc4b706817b2f300d92aa62d84034b69b6b96c6a0d6b4058ad65c3aea91627e263a8cf31ae39ecf1b1bb25b81ea39a6683811dd798d42ef14a886c2a82c05aa35dc862ecf1c9c7c3d1a49f9b45982dff075fe8c54a2d0a6ceb174cf3b16fcb3b7a31dfc66d28da4a57c47fb64b6625af9fd267089cdc81ea71762b2ca3cc22ede2f1f5b15ada9e1c3befb478da04a5b53afd1ef4812e42e902ecd8fdf5be84410ca6c4597322f6d29efa3b3179527faf93eeb61e7ad87457ac58dfad71cc79afb66a9eef83e063ab5559f4c4a014da573389ce9c4c19697d63d4f6a3a76be0f23460cecf82adce07573d0c1f82ed246fcd1fedbe5534b2d41a35b5d8a53ae36b797b2a607e554f13f25a4050d83f581be677a3f9eefdfa6af261e4305baaf004a3e66dbeca5564e128074a76ace6edd925c4817bec45716c0fcc48642326de51e616caf9626dd0160aae44ffb7f4e2453b104b9b0ce7e91b5d1120bd28fc77733d70891e5ccc0f1f9128e3b594642e5edacaae5f2da5b8533a3f31152c32758d9ff5584ccca73316f8f8e47c863375c9da2eea1043cee28ba07276405fcb635c8a690a061fce38cd24a96b246b18d9a154c48a933eacb9101ceac86dcc822668e0119da6102deae79196f18ca9cb3b144918e8b71f8b2d6566118f9cdcb0ea8b41b944d86104adb2da138b4647e482fa8e913c367d3b3a1dfe16f7e895ea91de289c31df9c4037ee646aa3af79e111a8de5ed69eb3d1eaea9e45f697a642e6e90315a6fb5c704dda9fe8c84c9ded9eb8889e548a664b40db8d5061129cfec032bba5b170bd0066438f6205749cbce587e1bef9a8fcb91054673f4fbb4115832a629b7bc25071ccabaf9e279aaf864383eafc3978a66032eeef89214b1f287f6a0bb1d91e8b67dcc77fa0a339b96140d6222e0c26ac90d16a512c1155633713914537f2e89113ab3ded7451c75072178b01d5dce122921551b22447223219012b73ee7a3d3aa52bfd7a7ffe93b25b8ac662ea0dba5ffff377da82f9b5eb1d72ffffa32f6049a9b79fde0571d0669c9d2af40acaaa02e77d1f7cb9e868c210c0f40ae168e2e8e37fa3458b53f23e7735daf3a892348404a001f2bf819fdc01cbedb7f76253881f0392e05f62224d4d04a2cc1211c4cb8519c14838e9dbba1133122467c480360bf03c9cf1d81b839d9269176a116a168a6d1260147caa8176d1da8957147541926d69c98c70545e78ef560af462d8ba4a8dd3f8a5a524a406275b5ac784c419d88a431a0fb5eea3388f880dc87ea616b39f3f3358f4b2c16feac2cb136ddfb8bb8a212e552f7d593de22857277030a799c8f8a0bdbdb0eff2a808153ed4cb75aad373df15c3ee361ca01ef0fe486a473408614e267385eaa1be611f7dd37103eee70cec1c4c079c7c204d69cd8e85a0876e90e4bbfe0cecdd3a67ba7c5bf3c2152b395f84b8e2f0aa3d7881eac7cea7a20c7d8fc45b0ad41dce1de49a1b800c9564436710319a833170131dfa66ee967773a66674d38728582f8f3170eab0529b8ae89b21271e526780751eb9be4ad336dc94cef6d410edc279ea95765e38816b4a5484fc7c3c8bce1f339afcccc6bb994ed0cfc3ab65d19fc1cd364a6054b14f914db50ac2d32fc3aa99b53e0d4803a2633cb99eb546f474f4c77ec6a0d8113f9e2551bbbafea127d3a324dc17c02c54c4c72d5f341bc5151ba91342ef79b766bb61bae106d4dabcb405b467a942418e9801a1660b594101cd9b158c511443ac3c5cb4e5b1c859c447e44557c7eba47ca001cb3200782603fabef0fb9d7107ce11ad02ee1be3a4e1ac020a06554043053e1910ebd0a8916fee8a6dcb7979b7d0530e7b363b372effae10a661765d043dd37b34eda41115b432e5cf6b1cb25a0684c8bba4fc959432814dc46a296d1f0bfc38a81bbaf7e81f7be768d9204c6b378e5afd64dda48e0ece29e18cbbaef954ae97d65715b1f94fc2342bfc33e0c03361591bb94b21624130e3ebd8a4947cab36f0247021690d44799c5293c14a7950c298f904003f213a59d3bcf8b3916e89e0d6f8697e6931fa51cbd623413e3daecc602c1b1895849f944222d7c48fea8895549f4337dd47fe3f0ec6c5d1a1984490e70da47ed0f6322ef446fdd683c0123220a5e624063d0843974c1c5f56f576fe12b2676a09532fc32e2b3094f0eb013ff538fcba3e88b7d383d64c955441929e75e3cd4eff63bff2ab03cec4a6e18d76ffc2f0eab5a72119d47a505892298d0168ffbf86fa9c183afd5f7d7dee7997433b9cf2be9ef43b45a7f64f48872d87e139679953003587e35520b1e28a3d05f9f7606bf360792235884f335dd23a1c931c307096ccc22fb1e9dc429653651235371d04352cb3402f866ba15b9dd5939af77d8499b4160be39841fe1418965f43771b459e900bd2f4c3758692d31e9fe72c8f2932dfc409485e1138bbf1f0eff1c1b26a6d1a934b57ae6d83542a79852052f3dad526ef9d247896c36b4c92f5bba3275440541f3de782171da8e57344da1f05f086e222d5d3c6f6290efef2e8db23a9f748e18bac644acb85e948e2ed4602cd8de669b82652d8e57a32a264f30c4e3226b9616597d0879a496c165999519ceacdf183b6084f51d538332f12551d6eec9a851680d30c52f798a0996c08619217d6cc9821fa42fdcf24711cbb3ffe168c5b2263318b9251402803769af6305c5d1ab04069a3fdffd4f9eba23b4cb37750b45db1bb3b3f075bfcc1d82fe59d48dcde7905b081c12834b1ebe850edf71eee9862df723252d4595990f70c968f43b39ebea98b8bd6c46f29c5ec61e63f5b41d9f12d311c69b151da8435064f8d816920c0701dbefcad6d03c5ba5fe32d6621dad4c19af359c079ccf83b3e15872bd495d0cd88b60b45f482ed5d8e78abcaedebb8919d06006d1561060e2faea48ef1d1faa26d0f12af3ad8c760e06a8feb0516275a007b018921876c51b36ed3f646fd649be64519e36b539bf6d3de67f9d6277dcebda53762a345bfa04c1f45cd57f0708aebc237380c831c0933e24afdfffef06819bc6f6b27318f1423adefab457d210b94e4ea606ad8c7189ce28d35a138aea0b461668532a950712f8b352c261970a738eb1bd0780fac2b0b65c3f670cff8650ca5398e81b8957fb8699445e2d4c5b39d58a2c99ddb9172adffda0b97df963dd012f3d42ad64c313b2579a7b8988bfdba77014d352885a17881c692775217de4f46545f1e0eabe7d1c5dca6948753fc8149726204f807b8e79280b30fb762b988c4bd93bd0790bb4d22f405b5530adc74c0b11d9875352341f160379d6c89fb0c7a0f0f4e2e27e187d2f15441ae2bd19c8b078fe2f99ee55a314d154412ae905a600062f7baf792ab93add1c1f3b311a982b49d92c79a9b062ee8562a4ea5b2c09a3e1b41a612e56a672c471562fa0e4fa6fc8abb1a38b888fc0124b6c8b18d53b0272e70c64e085c3c54387353ba70a368603c8c70b8623b8e048004013c0e6541825253e5db8ed52ee858e01264eac86e7cc56133b7ce1e8a0ab1eddca11b71f4aa539c60cd1b562946e8641d76ecbfb963fac0e265b1b3e366cf207a0b48d7d4296e30bd038765ddb7dea5537465c98562027bf739c3008363d0c750610f486862f61eea8c06108ac280b3776caba183f2cfa38ea5653d748962789650ab65130ea5be5797aec51b004f0b8f238d11f60e3ffc140cdd5cf6deb80473c29424ecbdfd67a250dcd83b5e5123c2e2ea94a54e68c9de61a2e1c0408fac5561b5a75250db156fc1304889d87b13b9f30ec5de7183d1dd41d4b8428683b1f73ed25dccb14d66ef04b571eae1d6d293bd13e126867239edc83eef76e356d2b039d1d6859748e3f0c5ec7df14af2b189e9ace4d6f21985863755dae8c0b5eef04742652ff7384d9e15f11d2b7baffd959122ced80a3bca67ef5141c6a9159c47b19a596724f082c5fd8f16083b447d228fd4a29e492e184a8872c85f5ee9e81ff84c7aecbd65708c81f01c894d5dc8de6f789ea176de30190d4bf6ae9e162479379e0802683b0c36d72a876e02c934d83b8624fc745ced36caae250ae39cbd871099ea338a80af3e1462ef6444fd17b2065dd245a4bfae37db419db854f8dd3ad631a39e6bd53e13d97bb0b66f77b7cf1b7b27501e455dbc909762ef2151c216566e826bb45c28acd1641726f9e3d425eff141083c7451f94f61b3f7833fd726b3f71040b471a86b05c700917a73b3f7df349bcb839690536f9cc27932c56aa977352cd95547d2c76db758c6eb21f68eab97d99827fdef03f64a94c909d5bdc1264a8fec4494bd93b001b1db7ebed4f61c9bdf84519ed718539eab19d3762d2cac66c9725a81b82983ef15c3d01c5cf37e2de2a289202fa541943f79d044d5a96f69e8087cdf850655e48456401c9b1ebe03d36f85bc6b5c45a71a7c2f9c7e94a7fb388c761d50585b7f74cb467fe8d656efe8765561eadfac584903d1cbc26bfa7e03a1afa5408c9f04c043d2bf01f3b20367bde8fb721cee9a582d386e367d3fb738e310a3f33f0b81f43d389bdb01e3b39ea7944ef4b4d1f7e4a6c238647eaa20baff7c2e438c9c5c530cb95ca3989bd54061cd8a95d6453505841b9b5a6cfcae0b7cb6f8b84ecc12cbb260057ed7f45a2b057e5fed081c2f3d8bf38c591e2b8a0f7783341af60cafd3e5dba0e57da3635f21508ec3605f9a29b2c7df7bc227259f96bf53e9b92001ddfdc0105adc5bc5bb9afe77c0879070af5ceca78ab50104b7bed1c0e007790adce671520c613e36183c6b846f27efb8b65d38ce806d6fc3856f1144e861beb42489372411a2ca063a1984e04bb4c3a3e3040a01ef03e047083a88743668915543e68a4c200f40d5798ea55dc646d34100635de88ad550de8b55071393352e30cde48493f34dd6b64740a7fc57a78bfd29f654f519ae1eb0ae3ab17e8efc28b1dd95009b74d8838dd0019dc81f8bed4ff8164e5718b16fa8696d1f6bf7c470bd077d9040aa994cc5770d3f9d0b225651821986d8f3ce3f2cabdc49e36badceb5b188aae4d849c5927b6c4a7f509c1a8defca61fb99d010a8f514964fdf9fb004f87811b6bd982c0756dcad23f502cfd0062cb594eb3e2edc09171bf958c862b94dd42562abe4830d9783c1ea3884bebbee4d4641a2bbf9151b0b6f716e5fa6f6dcc560e3a92e9e68bfdfa894be032ebc331736f8b198469b0d2508f0b0e92db0991bf0e9f3b36b422a370e1ee3bf4366fb7ac7eb34ae5d78d2f6fe91d2fc5ccbef1a5eb777f1d75dad221396700255d3a87188c3bdcc7812c8d637cebafb50ef3df6d2f8c828575f13b78295ef2e9f66005a50a3d1f11f273b638ecf775791f1ced5380a6cd96b336eb6690b0997292f151e58c99c32e7fcc047d55037a406aec64319133a47e23509cf7ccc7eb01d781de94f7b9df7f20e76feb7b2a44f8351b38640cda1cbca126ab727db541a4d6655c8ff3e72d73a9f247742d378d0fdc3c0dfd1ed07bb800e5664375bc742928a597d43b01d428bdd6d9b01a46051388f2afb972d045ce769f82d3b3a17a601d11915d89b42d064bfb32513447754438c93972c60a630adb773d63922147047f0681690c1e1cdd36de40e5b43529d48e11c949d1dd5aedc3dd41fdaa6e93f9a2725404ebf7d447a5dd573ad1ff2259c5f19db737c219bbf5625cab0c26b125de7b934c4ca1f34f08d5b8c4760eebfad62c77d0ed88aa08dd8e657641f62798f45777fb63e8b03ff27b0101a8e0d3d74607626d0d116e9208d1e5177cf37be7c13af43dbfc9185fb6a9b24ede7dbd035a11dc84054fe33f34655e9577533c58350a2436e1b4379d386c15ee98aaac1e7794fea60227ec07f30b683e94e4438503c02dc086dc6116f124a548d5c3261ff180df484807391754821f7a51b765bc8a4dbee2de3079bda4737b9bbaa466a418b6e27f204dfcce1a164e806700a35583f67826e834197409601e30ac7454b483a51c2ffda58c9fe6b3759c65febefbdc9335ac0097c7fef5dc484c73c29935efab5fb98dc9010a26304ab6de3cc8815465e07e2d5c3d454f497c878ce3a74f75ff315e628c246a1cdfcf223745d57635f01df75a10e256fd42a8073211b95d541c1f0b3973783470397410ccb46394ab9329207a4dfaa9fd2f2b36827593c81f3fbe442c7c83478a02b255087f71fd9d3ad946ae39fb1e185dfa36a56a5813a5246d270095dd19424f748814af12a5a74359100497abe6227970d2ed97586902cba14ef1c926877f3a7b40365437277deb62546fdae0d0c98a9a876b33f73e53ebcbc8e358c3c746bb12bb479c8f1850e31949173fbcdc7525f490f6c588b16f12d36dc95034a4267c5d236cd13e102722983ea909c815603323df691ec21c783fbc872330e5b36ed5fac62c3924984b0c49222db2a335a1014a062af30f46424fd471beef11a9d86bfd02543de5d9a8317ba03421ffc7eb4d7170dde997478d3509699eccc593d3cfd766d2844f3c8448ff5eb985197fa28e02f718324fe4b1f15da4f4ec7a64fd017ba20455236fab49743743f58f0607d02401aea833224512f741114da678f6ed46dcf9cfac83b03173a75a64f79f2742e8c1cd0e181de1dbf9f1b71ce1af20075a668e3ae11d800cf146ddcda2036d93305fbbef11d96213b2168e306fe63ab583b28e72f7ca73705053489dbf9068eeb34cbb69ce5287cda548300bdf8eee2bbb875f8e3858e2869b6bdbf6aaf4675173a55951434f56c3767de9df73371a37ec34da46d5f28035c3179b17e579d4864d65694e607d09c88c36ae9842ead8c2eb1e8c1d19abdf7a8a59296b9d12019e8ea81896a23fc0f4b5a1eb4fd0077deb8e61df041dd4f4c4f700373abe6e7785ce698337ccd18f2798d98ed2be1c2351456a781fffba0fb2f5d3fc0571439f8a0c9c635e416d26ab2bf96c56770f62b0d184de3c7d3d2bf13b437b5101d20b72c3c44a88c580c6c25fd927b24d9e53848b8eb94ac5a36682ff9f7194f84b8e6fc20bbbfd980caeafd8100fe40d1e8d647133fc3c4b2ac50474cee7850289e6b192685ef94cd34dc973bf2f981827672bf51ee9279bfae3b1f1d4cb11c6ca6d6e0ca9180d0749b4f38b3c2fdcfca1e4a2e760a19ac014b74f27d6e1b4d3890548d9f40479eef7020f6acfcacaf1492cf8f1cd4b8f2e084102d98a409f7ff0d0f40033f3c0ebf2cc04348dabce506c0a8e07f7ccc1929f8c10d6a4f98ec4d15fe5f88a90b805446d6936820d6a6681c35ec26ecb26af7d4750afd5ca766ef15b6dd9385c39e9339ae87ef502dcc463494d73ea21f424b4fafbb148c0d6f492be53216d4bf73356f533266e9525bb9bd187ac3c9189a52f57811756a6a7cd2dca682bd434d5e533b5773b2e9a3d74779137cbfc80c9cb14e09666f9bcc21db88d597fe56d8760146d8cb70423ad18ce54ed6a7c4713050a8855d8cf0ff007bac8f6328db06f88fae629c433ccd2579b3c92fc9701308f42c6abe32d2e05601f64108939d0c44eaca8a928280516cb71d09a71b9acb908c6cc8c36c3b6049f6b7b48646712106e810fd16a6655d3f01fb847bd4b830202fcfe74487f864d083604c27d9ffc8c8b11e84c007297c020f9c2a8e6817f41ea61ab6d4af20594038471e5492e386325feb7eb19403a6b75b130fd0b925a7212cfe3c4951a73170a87d75dc26dbad5d5633732c6ac953a43b56c03ec70a0cbdbbbebb4da7ba1216ee27aec1ba7ff900140bc1cd6a2d52dd5ba1b31ba95d1c055d1166d4f289ce1825ca083b7fe2312fd64cd75b127fe0d5d6907cad3da34558f4e072273c26e67d3b2e53fabf1ff19c02a5f5de0760a86e43bbc3c2638d9f1384b416f86918a0c5091ccfa30eaa891ac3d222a858e39b72717e93e7c474d552f4c83f493b85cc4e325ec3dc8384ec9c023cbda467656f067bcf203abd81114219d9b28833d014d14d40a00b5f1e5793ff7f4032b10cab8231bc76b841140be600e883d2ebf733ffbbfc021a7d69c47f70781377348b1f130465218d8c6c1374668067db082368a2d5726825873aacb2866b6d3d59b9d8123342ed9ddd1377841118035a1af0a789f7d3c4fbd5847d057df5da39e08790ee45e00eb368b25e480b190a9af5107680dbb1167d3cfa3014b06f1126c8fdbf36f223ce069c1b0c7282e331f1bd5bdab18ddfdb1edc2c314d20f62d255f1a54fe9f359d9775a1efb6d4e564824e766d16966abb661b4cd213f4641395c403465124cf6447ab8bc0827eca5a6ebbab7fbf897c78e847111b5ff72bb4a06092d6ff5c3c90a10f1ab0a8127593e59c6a405b8df6d9a4ed6f219fe375409726f41082f30a2eef4313b628c3cf045023d5b37b7b0b7d87a51c227879d1222982175754c6a9627d57a54c47a59a0c6c2a949ae5a527cb9e3cf978790dec7f3a146367da2d3c1914a7d885c78865b26f256afca1892719f3f7c8fa7a20d255d4b8ce52197260e6be3285fc6bd4da098da192345b52d578331801e265aaf26063ec854af13129dc7af350810777d091bec430418c31339f35542ddb3f2515596ac00b587a2eb7354de34b11925b43e8cb1739772281a20fdde52375fb0e1c210b87365e166e0f815ea3bbbe5a9247593a4bee68202a922759aee2d440dccdd97c23d9c1ed3cf5c974c2b585f4d9e73038e8464690e11f995ce16a516e3958878bbd9ecd472ff733336173e86de69bf709365cc1e6deedf1b15f6c99000df4eb00349768bbc6b98111b07b98ce12f5fd408ca576c24071835fa4f7ba163049a944095424ddfc781d5e75d233b46d8ab6e882778cf5c209772a5b11603758d9036edb1866e2f1c5a0a23f957d3f8b4e5164a48e1eb614111b87c84c0ba758cd520659243c9ff319806ae6fb962ff691c07ed9303b848a4723fbf01921ecb211cb1092eefc970c741e273920826caae15beff7e3c2125a81462201df7fc0c571f8e679cc094b3ea39f9362784d999ae9d50459137d9ccbc5155c16610699b6ca075106b6e23316bd9b96b9e8f1f45e381ff61ba9c5000d4aac295028b06479b198465b5e29c56a040f36b4b64465b407cb47e4ccd102f2810b7f46afe30e10d541e3dae81716e3851f78cad1af1f59f09b871b047d343269fd0e08580e81215f21b1f3fdf596dc4228851e43a81118f54eb880629fd1a0a290495fbb754f88ac857a77111f0eab42adb54ce87eb2128720b69d9deff759f38ba2c8b014813eb146cadad7cd08251207c370904d1151ff4caf7c751024b5efb79f6729ce37c9a60fb06f1ca6a8f1959670ad2017623950cedbd59892cc208dae0d4637baeda356803b091f57601d523f8c518b01db82925daadb9c5f027446cfcf6e64ac45e2650007a8529c5d3df36ebd9049b4042543a81a6723199cd2915fe5cb36b3af1a15fb85ccb377bdb5153fc21433e30b4091bdc4b9c5f5750b48571c44ba4141ef8983ba235c611f40971d517e3976914d78f75685ee4c69365d9acc4e57686f8e58826e0a724fecb427a4e383c827ca75500f1138c44fffc0b710596228dad9388e667e1d830631e5b67bbc04c74d704051f70e100a3e3d3d336c1acf687e4c053c6d8d1a236def0816ad15b7ff485c040a311ae5824108e51293e49e8369027b94a7be5bd967835378022a0049baae1b62a882c07373f6d5db4c3a43fbd07aebe029c64f38216d0509640621ac83f8be1f7839c670320e6fb1ddb5392b18df5e182025f43250fa481d79773bd34deca0b7024fbe588d7aeb37e66a55f0f0fc62bb8aa3afe0cab97bb40c8ca42f0ef96af4902c1dc96913e097aad56be76935017243bb66f2a6e62d5a1b0ea4a8f938129a14e57bd82c17aff8e72f3f5768fb681e1b5476ca0b40028e822eed548c5bee9a58130d272e42f3b3fa745419d1a43ca0ac5debd90b7f3dcbd580f30e4ab7252404d50e82582393078532dd77c8dc7667ea401a9a10d2121c700808d8960488a964405f60114ee451b5c98260b2397ef99b793e0f3e0e02c163deb3df9cfa218ad724fd0de8063b1021b082b936806f820ccc70f9459d3f5362970c0516d6daf56d5e17363dc03e6148bbb06e0a0fe6dae656378eb8418c3a98f4ba002f24449e31510fc7c1df872cfbeb96179c441d8c093409312371d75294236223427f57370a9cd802f532822f50d063203a14e1ff997c71e203b7bade3d1ea5bdb6cdafcfa025c8e5752452a162ff55ea12e2488989fdc18183f11f70b9bc21c22b894895c00c583f96d9859d53ec3387bac293c63689e538d431db198f9300fbdc39631b149e58ceb0de1d7149f59ad5debeec8cd06e42020c7dab392634426e557c6e6adb6d09327a6d03346cceb208b3e8b80e60d34add8537cf0c449d4000f132915f14dc3013132c2b06d83d3190398bc9f76e39f64119c251462bd0778baec3e0730ed76a5f6e000e5d3ca14a34f56ec45653dbc5640ab2e0f8fda6ac367ba20ccbf4024fea85b5a2fb8a41e2922242870939490827eaaeb78058660f18362abb43d7d1b829d4a57c3685290f7d6f1711f72fa0561dff1e74e87ec7bb4c2e0f5d1af84991d7f534282811666bdfd0043b3f39ae5909ebe83c09563be40d6f62d86e5c2dc60ad40725aab97206f9950b70dfc2444283f5b710d24ef5634cfd28033952504a0fd86b2d3cb807346ce4ca77a950796ba9ffbee4e6d2a77192f5a8d75ce20be4b1eecce8e3ed650195fe899485e45fbc810865bff33cba85e449f5a12e410c4570d0d82c051a4a3e6643f7b01529b617d723d22a723fdf16aa5adb79251f103087d3d311415244d8fa083d8a58e2e5d6d0330c30889676907c2b8067ef6c88aa2de0b222a9c2ff174eeb68f7c558e4fe2fbe10bc40b65d696d13f57a6b934c7f35e0c351c072be0927b4695df3885d061b86a0d905ff1974891a064a104d33bbf056b057d88026f3fb78151ce5276b62140609d71e0c502848b27d87a6d5b805c80e598248462fa0b1f4d5369a80884907b457fd19c83cce34d07fd1aac455cb824d512639ea904016fc6011ecc1856d710a15c3714253491103f6843b4f2c317ee0b09d4218d77e2cd23970cf7aa3821080ad08f3ae11579b082ff3872f57db9c89b0947d233899cc9583b553dda92df4ea36fb0481380a7ca8f4855752f731dd846970b1bea238f312bda03751a8f7d80c66e685831c01c58f844adc2e118744213f0787f343a585eaf9c6244ff216a9ca5a29717fdcb0473d3ed5519162f1e94ba375519f4530767f5115bdfd81792cc0ecf7cd221ce3dc03124ba511be5f865d5b5f729c120125ec2f9794c190c46ad1f0565b8a200ace1894279a8ad15f36406822a9b85aa816c81aea31bc3c98c37466c0543f988a690627a9ae08f2904c149bcad43d13e1392d8f210ebc24fece4ff809183e0c763714d47443ce803c884c32d9ee01b25908103daff1a5bad76cb9ddce83d0ce78a0a9a6a8970500415298a9426fbbdd7ab6128fca7f9a0db4be567e16c82e74d59509f584d407e89cd202882f6f2435198c459e1b56893789026ef21ea6a246e47d72cf3404a6ba81d3773bfb8ef199bb213578896087a536384c172f25dd4f5e0277f7d36974ddf2e5ccb7cfd6f4e29d6546a3d385c37afeb40d24bad91370c265846ab8566bedccd0e071ac86fa0c7e9da454bd5c460512d76fa935eb1cd5ecf790b6b5f9770427e99e1095494697e5069bf4215ffaac656654c347e21e5854a74771d7d59c05460af039e87613bfae225a8c975c5e7a17cafc1e3d7640b4b2c293a33e93c38e79dadfcb08590943487a01d5b67f15c5d981d8e2b1baa83e17cfc8f7c321aee136d4a19b6efbc2487d7b2104f6d750d828abcb16d8d2ae774349b4d70f1854df3438b7bd4aeffd44cd0945651d620503c805758336427e7f5652c027ec7e35f52a51ff3ef0a55963ac3699cb1b6b510e12e2c756dbe9e36551e37c1c3b9887156933ca475bed61060bc5d919f7742e5e9c739e16baae830fef4178b1dc851ca25ab5f283dde3bfc89e60d1e9dfa59df28342c657a16cfa4ffb75b7d56121e7bd4dbc6321951f8c95878fcd3f3bb4c1abc23f9b67b145fe65a47b25140f0fb553cbd8eb29c6d83d5c203b247d7be2a7345e9d02746cd872e612635284f77948a81d3389cd365855b73a85190ee9388ec7aed6f1a3ddbfd8f906817f9d48e759224284af11d09d02c694a475868724369e70e8eb7fd7f54762b5c71cf3fe29d9adefffb17f6eedecaef325b0b9440c7f1d94d18fa41c1fcaa17294e88dea9861820c2e86faa3a0c77d60fc8fcaeae41c54ec349046c6119940cd64b9da2db96f4bc88ff94cc2d646905b0f2420e1b6ba1cb9fda870225b37ef3643c17579be68208351ed5a3f136a0b1643eb19e85294ae4f7c22539582087088ad6259475f185a6b23930a836937bd68886362d40e3d71f97772803c6ce1aa2ed93d6976817ac0c4d303621a1f402fbdab1f40637eb28c64f67982101a50bc329c8781ae0c2f4947689e5846014a17a35823e64a23e44c0f9fd0cea2676692a93f2581ddeaef71bd01960afd37e70b0858e96ab1b0e0bb715e2538170e55d469bb81d82cc96b3fdf27ddcad39687a5bed15725e18df7d97bc745f21533b73a6911b531f1996dd4bd9ea7420c208bad39050e25179b08e535adbc07daaa6826dd2e2e4592ebfd36001c0f983121002c9b7bf8a0855a6e683d2d66a3873228467c501d4e3df056d1b2f6d6b7bba0e65299f1056088e6a54514a03e784f1ee2c1d0c8fddfac5190b3a0b54b2fc73d4521a4dd2b76edf2b2f4d322f47ac7e61e44147feba631090ce832912578b083218926b316bc1ea7216b8a09a32fa20790a46c9e5b1d86041c35da4064a0b240a6026bca308667d0118147bf5f7db74d4441eddd5bdc60b410caaf518a8236f30ce486e0cf9b86580e985457d42011c4d1254f631651a7011a91c5957ab390c409b140e41fd8d024d3a5869621518e5a13256065b9b9a157c9b6ec6fdd3fbd68fc826de54875cd067b0d26909680225848105ab387d8f0389310a70af56dc98421289e81b767642ff6630c158090397bfb8f39bd5756100334f20b27b66dd2de8c68e1b261db046646663d9b5a45a2494d04746cb28aff72a1337814f0a18b921b42b4cfb2adff494430ba66f980a105167a11ce0df34f5e404ab156674ca030969c88958733c4c2a89b0937d9cd39fd46c79b49ef8a035e1e69b152de54f698651b8fc815238fd89eeb81dcafba453fdf9d4a4c06f40f6f0c3bed640b3a76c589487cbc49a362048b4d7792a3ce1a55b64603150b21a7d8c3f7d86c4908f72dde045a00b9f9602c0c53db446646e062b77670c9af4a4893ccc001fb579429f16920ae38bc52d4cd71e36d961fb5da1c754ae4087e26cabd13464c99485dc59dad9ebb298fb3da43019a3a1ed02343f512a1e8c4f9de5d488de82e04c0d59ac8ae37231ff176220c6ace2735011fe16a9e6a7e94592ed004d0b5a0799efdcefb85d601980f76a25f7a57a97892413b6ddee086ce31224b4fef076f2e99910e60ae313e9241437795dcd317d4b47b12afcb005c55ce6e8a3a09eb65fbd5779f209604b4255f4eef2a60495809215ff3dd29f17c5db1214abfc4bbb782d776fd1e2bc7be161da1c67ad749bc9bd87ad1902626d7e4b2103e9a09dfa0f499411684ec59d69bdc65cdefa4c66fe8f558271d10b1633f3cca15eaf71a5328f641d87d8db01b21fc6dc486b69e6c3adde38246e90f8c9e192c4e17d737a01334d8bf3501557d5ca8b55e585fd28d66bbacc449a614ef409d7b9a38d70137151287abdabad2bf208ae0e4964c4ddfab0f2fa572f9827018c1cf0fa6c8f14f3a8ec6095e1dd7c7ca115e34fa7ebedbbbb18f94f5b780710be9ce279d227b18a8d10e001060c7ff318bb1d588c61744278d1389cc44cc64ab4ed55a45f1519dbfa9faa7dfa700334d22e54a0c941e5097d3bd752265e26ffa5cb68b5ac962a913b892c47a9b289af1ca5678d1dd8abf91a5020e7aa0ef21faf93e180ed29144b2a5c472fbb94862e1e8d94f192abd83903d9598f864bdd9b6c5e5cbe51a4ea2e453108949104e2095c9efe5f39e7a590ff06b3296652276ae11f61e7c0090653107e645529f6bcebdf4dc58094a2e24db89915ccf80ea788196b6bca251bc733a4b964c520cd746f95c7e41d138ac4beaa75926df3579241cd09c773f0f901bc2fe050624e809664fb9b1859bffba29456533cfa4acdb89fc1f4ec212fdb99ceb38708088e85f57ce75a01a85c66544b011a5b411ef2eb37fca1f43da06454cf99c8e23c22e0207e0fc9078644b70de3b0ac1d214e0684f9dad84de03f6da511c3fd0f23564d0faed869486197e081057ca3180128a4e0f702bea15e9c1b817706e7fefa877de46f74e154af2e05fca37a727dc80bd46d2aba9503ea5288b903b60f0be63f5066f72ef985efad44fdaba29254badc3b5ae24982a5d001f1553572aeec6a17354d02bf32f08c8fd7bef11ca02e33fc0309be6f201bd896a2897d997d768afcb13afb41c844ad0837e71186569d50221d552e0ed280dd6529a07e23835d4d4cfb4c20a20d04f8dee8659a41420a4e7d17cd20cc46bba7f41fb8f65d3b117a74708c4432db5b21c01868b5f34615011b33aa74f30cfea495805cb6be6d917c4ec9ac56b9b5fbfb54a82dee55baf2d80ae75acc115e20ada1f96ed025d4dd9ea5c6374df713fa9f64ec401cf7a0f25733cba86a5cf9f67380776adac0ee3b081f95285cb50b95f51a93450d4f3f4bc59b68506dcb7c05b41a1b73145be6cc9787db5ab406307ab9523ac3ba7a27a5cb78b3307ae269ccb6df2721ff37628d5e5cbf23274aae7842e01ff5250058509dbe0fed66829040e3b91c9a50e7b0ee26e56669a52f62d16bde8769b77f2263020a1add70a1b301a71027fdba463b492a6ac138a3c7f03fef01139235ec3591e89f6dbba03d6bae6573109acba7f5fd0165881c0bee535b07695ec640dbae11750dc5716cf1df3fd303a6866a9886797fb3ce5309dfb28510ec18a6a9a0c41c77020ca698e8c2415743f20c57291697f63827007b45d15ed081c30effe65629cd48f890f440b32c439aaf650f101b2a712c525dfb4d31e1271bc91bc6c97b8669e41ed48111c63edd6afc29bc56962ba155820456082b83e4668ecba4609de59d1425d2055499f44004f0e69880e486cc8456ff48437e05e40af2f9f8d1e323f3de966f664bd10e762c604df33eac9dbb1d79ea12d4733763dc05bb06768bd439506303e794bd324569be8cc014dd505f72a115f413a878abd1e17c46b80f573f2f229eac8fb2333930f2020476985a8c67a6f3d622b7f4290e81eb69d8b14c442f5dd3da82156daa2cd126b680570d6639547902abd1b50b640de5f317c1620bae8db11e10432c6881904f802ad9c3fecdf566f6862838adca8336386835ce562a4e5ead42452991445dcb023da3d0e2b36cb0301910809bcc4726030397c1b37652a58b00c213cdca196193dcabeca632d52c14c80fabcc0ec7d7795b8e5ef8ca13d2329bf6de92af49874a8675bd03933b2420ba34a3ad44600ecef7ebf2c7b0f1a71fa9085fe666641b8ab9189de7d819ae877db17507f9303811d0cb738045252c8c608f936b01673261e0ee2b98be952980b3fd6b20376e126b2599745b468eb5b078de8cc06191ab85ba26ce8b2994820e5c30d8663bc1b8227dec0d54a43600c90292f5f4335062f7d5bc0aaaa99597339a5046812c81ab52860434bae1f338a80a51253fac9e9ad9935443968d557efb21b012e0b694902123af00ef200d2177048c1ab0bc0016554447c2c2ccdbd85ce7f57bc79b7ced18c9ed6c376fedf095ef9f00b20676fcfc55aef2d3b8b0d1096e21fba37c1f0ee57faad0b03aebc85810ebe431aa63d398ad81c0e95683b5e12592985340951bcb55b8cf1d41056d08768a1a040c132251c0002c61802e0c485186a945fae11435c1b29c23bbd1dd24493c78ad48b697825d18135ecedfa858f556bdbd04ee818345d38152fc8d0b89af7103b12de3b831973b2de92a56e95684ccf53aa285780603625e11a6579ef9de37f64e31bf6924cc98e58a22f8c4da1784ed3e0b2d340648d4a7338fc47a070fe60b8f8fae79c5b6f1d21513524418c79178434cadd10bbe49c683c855d3f937f6ef2e470a6dadce6e6f7be3d1c5fb5cf497cfbcf6ff1a32c2ef42b69ebb429f37b80b882f3a8573ad2bae0f30b37575bfa2594d9097f9a38f89e4874eecc86910e6915b404de1cc3d3b778be581a756a5433f91b33d8519256b4d078fcf926a5ca94cfe1319cc62d39e8a585f14c14989c7291f526fad2cec80bba27dce7abfbc81853f34216147abf5a449405cead4555134b1010d16c3a8784945755bbacc3ad5e7905b4adff955705544d42e5750409046d2979b6946b53ba91b4bb45dbc9efa7394d8e874110eb5b3b0c0ec162ac71d1a519c963b0e9a338a2b5bd53d515d0121112fa5aaa2ddd964ee9e53ade13e368ae3b91564b7ff7704f35d99393ec6902d953d1ed4675d78a96d4f4fe8e4781281525fa43c7fb948a12bd56f7383061187af1180cf4cf2989cc29893ba51131024b00f68457ac04af18558e13fae9fcd1818c072f1c1c1f9d08cce820764351ec001f1d7ec81180578c8ac7801e05927ce0c55341ac0b8c81213bc767276a2729a7073625490f8e165e3b4a7811f0a5039e28301af8f059c30be7cb0bc747c9185e3edb8127bc7892140175a6e00ce1b030a6802108b8e0418c042f234b8c2c8109cd867692ccbe3cc09160274947096604a6b4a38317acaa6828a72707082fd8901c25b1a02145b02fe6130bea89c29140a7821c25393d3917f810e043004f121e03742a8011e2418e12d8190f70d478417041aca436081688d17c8ce4cc621f4c08e614bbf2392007d4d9a293808e154e0145be9c21309c980f0c0603613ab01d184f8f0231988e96ce1123573d339d1c9d0fa6137b121b8a7d3b08c012e880a7019c1fbc8a00d1c12c2796c0ce9307b1353c70c046fdab1039ca6053803558a83975b51450806a9a804a147cf5c863a889ccc88e8e972e58acbeba08e38b064e207ac1852a31ac418617574091c4103d0c8511b470ee1374fe630f3768881146154770b081055fba70c1626525aa01060e30a00926381842880d34b02da000be0d1459438d30a5d757210600e48b97030c98917185155140910412449c608208360b2ad882c56aca8b2eace0c28917a4ce30c38b2baa80e2091e741821840ff670438618503cd144112078fd38053523e2068e37d6c0a20a269640e3430a25fc68b3e08b972d535053684033225e7481050d32a400c28f165030150535c5e178c38b2eb2b0828925d010e1830a2680008682292a5368519e14011d99c5fc0b8e37d4c8020b2baa606209227c502105134a00a10d1b982f130c8583084275c54891341440818411b86c21c2a184117a5d41f07cc10a0109c111043cc0ce0f3133a00f600f9f11580423fac22142300960d480064005be047494c010f892c40ef80ce04172e4084c1633e253444644890f024314e899f1e8ece4e88039393838b0cf7340e881400b2f1d1e1d9e58911d241d1ed8023e591d5839b0f393d3b39314f331f2c57c726c311e8c086c1663f3410c5e3945401d9e581091059284f0ead1e233c6828a74003e4900472bf6e52849e14585ea69f60118eb89510119c02b0e0f9cace9e0c3a1cd1aa8d2011853021332bf254b381288e19593d3c015080518690a0166a583007821c0b3c587001f02c4441560eee81e40bc94368f959b0a321d1e18119cad98082474b0132b92b3c067e4a8033970e0713206083b6f5c28020ec1a932d39112bbf25ece788004e7a727aa27829c2f31273a523c20c00d563c3073820132221088885402a0c26bc89993e1032246463e2d0ac0a6e82080d4418f8e949c9e9d22b0285356600bf44401e2d5a33345a4b623950054540f8f944f6d542280d701b120a49e1c1a1222393d43a01cb08007af9e1d2906702378e1c064385f4e969c1e9c29394e969a869c3c4d76a4727a741020f2c4c32466c57300010a44a0c400273b125cc18aa0839e9d50e788c85194a92b1d9f988e121c1a0c89c727d68456d1e1d1e9890de15c892555f97012802dc131808867478449819a9264a7c7009e281d38590d79b2f3136312639263c6cb4991d8138e04380cf030892960a408b680075ee1d007cbc18462301c0c1cb0608527f01d42883569ce0c6146070170a04197decabd78b3e04b172e5ab46a57541448d1928e7e2280e0011ab3a28a2f3dee90638225081c5082800e192eb6e881872c5013d01628c067480e154d2c1144991e74c8e106323468fd34190a658821abf635881fb82e7ae401850dcf5438c1e696a6f4e894490185283c65b0f1a10c4d0ad201040ce9d9d15120812490f8f223162b0aa6a2a0684f8a808ecc8a1089d56082080138d2068a1343086186832d5aa2202521205680357d6859a282c4a3934304009628028716561801031b6aa8e1042c564b539af87c82c00e00be89b9a1798073c4e400d9c069f3990192018ec123864f186001402fc02640226043805bb10b3e265f033b0be028400401f000b0808f8019129c23e0ec93c58a8043707a409e9d1d504707078c7db0efcb717797c0dd7b5c898c0a0e89abfbda6c12d125fc842a51bdadce8ef87e4028ede82c6ea83c2f0e83f3cb93295d6615f5e77e1471554a521424284f8e8c8a88ac9c278ccb6862ec8ac99cad67c7a1f2bc4494cad2f83b5d8e941f3fe28e1325c5009e7fef6a0ee5addd78dd5ca7d4f198c7a87cae43e61b71669f8e1bf9700cf88a7c3b46b1280e6321c6800eb8b38313837d9f1f00860efa972536c1e73a5370dc48cee7dff7e1e03c018780fe7d1f0c94fa3e9d0ffc3e588e18f0033f1dd000acefcbf9741cfc8884303027e7a7877e31108ca1f0c5be0fecf9fe003f1ec7f96220ecbfef02f0fbc01d2d3001f0037362e06707f87d39e097e53be0fb60e0ce1438309d229f01df57c00eeca3e103bf1cf0fb4098ed03633d3c4f409f6f69e7c36102a3f2e98060ac08d603821f9011a40f8358d19028d815e8310777f862b09f180ef8c11c67005f1b9f832e93c9fcf32ff6815f1edf0ee8e4fb401c10847ddfd137f4ed7c3e200882394e5f13108c811f112c1c82c04e041f91234a40173e1c10812ff6c13e07af40daf3c51cb4394e6f5f09305f32c5e755ac00615fce17d3f9887cb01740708706fb92601f08c628e8c3f3f3e17c9f0e51aca801a20fecc9d901bfeffb74be8ff681e019b09c8f078cc1b83e07c0f3fb60421fcf10f0dbd1f9c02a20032003e0023087f967e4cb01c18f484c068b81088020f8e57cb1dcc7c3e41b82037e385f9128dff77d5f02e094ce101ef0c3edf8e8805f966fe7fb60e017fba4be054029a002e0105007c4f9601ff88143409dd807c3817d5f940ff6fd7c3c9fcff77d533e06c01e98ceb713fbc0efa37d5f8e0120015f0cfc70629f1470c8070319f86030108c81b14f0a087e4ac09e8fe7db8981dff7d1be05c01e1dd817db897ddf17857e499cec28c124c0f9601fcf174bf2f1f0d08678498081ef81d8078239a0ce7fb2028886487d1ff881dff709b98e9bde8583cf4d057938ade08639d654b0e48d3bb6d43684d062a38d672d31c36b3714e06bd50bc7baa1091ab096602c596eb8c0cd557d5285ea0606fa90aa0a1049b921c990945ae487286c1061126549cf87c4c64708d2edab06245a888737411810ba950183daf0808328911309c804e9d1c08dfa34400f38e2649080f11b4e0a4e631fb8c3be5cc990c0baeb68fb118bf69e3d34baabbdd52452e4bbf2fd071fd717c667c8d7d3f5338eb507f4f325d6366d43a01fdca96de1f7f901a21053cb9ab232f564b33255b37161aae2912697ebf3da321c4f77e7c06547544e4497e8beb50c475dcde3504ff7bbe6ad716a06b0a1a147177e5c3cd0f042e30a036835f1c3c707a2c7015b68e934e2575611a52630ba2c5000129320acc89d89a08830578c01b031e20505d7dc52e3ca8a23050c05804d1936e427c008809717c20c3ed08a8e062280f170c401024d7071c60c2a6268ec80e1c51f773cb0df183252401221b03560e00907b0f46181d13141207e98d1830b78dc243c46282e68e08be5215432790901083d3a00001f380a771e14167c881d52f85724e4ce00085e0e2352c5dd8abaebac717735eee09418b2709c3fd8707fa1052f37d254c53f0090716f227387cde1eee30772e0f7c9ae5a12e5aeb5aa5612088544e113fe845259a2403ff7c950ef5c4d27bc0951131c5da26088bce44e5c13322236403fbd6d967fe296883f1a6d3237549eb74c2c0cd10c4845484550a048218a721485e8c99328484f9e2415cd7a38faa3e5b2a359fede3516345486bb6fad4b7d8414fa4a3084863654c6dd43d910084ee2ea3ecb21eb94363e8ed62a1ece1937f1844adc79a0b8ff99f76bb2e6dc3db783c347c8c589467717715f1d528ae812cdf9149d48919224258a14242950a43c917224c5484a9114222952929292a224212541497a92749464945494449424254a5294285190a24089f224ca5114a328455188a248414a428a8284840405e909d2119211521112119214284950a24041820205ca132847508ca01441218222e549d293284f909e4079f2e4c9d113a327454f889e48394a3a8a72847404e5e8c9d1d191d151d111d19114a324a328464846508c9e181d1919191519111949294a2a8a52845404a5e849d1519151515111519114a224a22844484450889e101d11191115111111d9a02ebc3cefd02e739fb1d84514342ae1de05843b11197767c17d8f71cf5f3270bf5f824c77772068747700a7651210b233c65577b7c0ddc1b8fb97d82c06930089bb7be9e2cec5ddb7b8bb1677d772f72c2c77cfa27358247445058bbb5b5151e0ee5356dc3dca654e36d49393bb37b9cc8914934f151f270a4cb0b4a3e43220375368529a3cc9807edc1d6fdafb2d6ad29d9feb62916e7c9d7ede78cee6e7a29a7a134b835cede07041110548982008af204d1620b8005d55c9c2421a15d8906cd181a00b121c1095f4921062c21240ac20868f1c0e8439f2f1986a1822c8894717778b2567f851c58d101770d1c71a39ac14806500571030e58628ba0e18440703d7d71f5f8c08000a84d47c0c70db15962b1b162c9bd6965acd8604c5488849aa467baae26233b2529474645454a36ab25999aad96a544db29f2aeeaee9b5defb2ba22571e755c6512fc6d67417e72de689b30e77d6b6f83963a73bb5b1d5efaafbacd331e12cfdf9dcf5ea6c2d69e775b952619c955ff7fb4eb93b129498eeda118b176a6aac4d1140f1991f081124711fb1f82351082524124a82a2710d78d10345ee7ee59ee5eea5cb209880499907b6f02177ff4677b7b9ec010348b9bb287b208307b8640f48798845bca9ee62f27174e34bf5e391ee44bbe3518af7b594d2aead251ea9de96e630cd78d7fcf775daac25edddd7616de9efb620572260419483193ee050428f09be806541a245048e8fa90ec6e0f0841720bcca07072021860044d88559421b62851c4248723242879c04780720a300497a6ee0c04dec893caa3411228e34b7323898a057481c167cec0c2d532c894df5aa86a0830123d8c04289864268686300cf0f3024f0a450a4c68106259c770c21d46587359890404793265ae4960a4960032772c746902e646740c18a82f3e2a5021195144042418042025c78e501468b0724b92de01e460424e06404084b0e93c6063bcc9c2b0b1cb991f19584666a28a82a8a30802005e2c5dd4dd9924170bc50888027f61907c8638b9414da0c4b645183d01466f0e14118ac00f01400051fda8e000c8160819a0b5f0750e9bebca8557d7d7d5161260e9c261a8a2ca57002d68c8d1e41ba82e0008908206081844c213c3ef4b064c111788702e4684180cb31dee1443922dc9df655451137ca40e204108200d26385ae604914331998083a73b0e2810a0a2ce041a796a93240091948fe78808b1d842c01e6ccd7172153c02a605690a1c264c62c4b166196067124aedb8c0d1ba2f041cd29869604941ca8800ea4d90918d421e51f08727eb8afaf0370755963968105f7c70c0a594d0049d3869bad1b15d0c262052f5d5e08b100630d1f56b8d19590a690a4368e9aa0814007d3891b86747d7c39000b540446bc4eb0e323e2079507653a8843811c1fc43dc42ad7a7854f89000a8892c62068b8ceaea7a5a50d1c3366cc0061421490882da800fad2320405448cb0697270b2879489c31270c91759bac450000090323c11b5c48b2f03489961a60c1981686969d514d83e1a20691ac2e3c501384511457cb1820900c0410c0e182ca0248918347810880936da258faa52eb8b11b8920881a227cc150aa4802667470d8e054555883185912fdca821881cecf0618b160fdc718039626c24a160cc579416b0083982e80d3fa6e4d6b4d1021b4040706210de130670506bb3c42e52820e33fe2080941097068cd84ab8303a0389370620628e2f8068ba200ba63ebec63be46b8d73ccd7d7171b2d0d601d3cc1c3c110346cd42a440c22080359491001234a228d0f5eacc01bd0d1050577840ad050c263709272fac4e5ee4db4c2182034103181141fb0602e60a0e6368033222c8d4d9030097724c922ca162d92102862870f2f83d40572f85a6a80f6f5f585e40717103041c936f202bfb0174def4d086b2a60338610861a0e30116c0ec0e93981e9872910e0d1d21203821b26543173850261ae80000f1c118631b54282b080850472607410a5d5060a6c3c35c59c74c0e1082839f894112503129c6cf8ca238523b4b20cc18719336678489a83001aba2a1c1d489992845769430a1c2d7e80d1824e931e4c57012204196261815ecf85337c5cd6400d6684e8f1d1d2d2aa20cc143d571cc97a20a48b133f485cf40092f043154ba41803c24e00a6a02ed88a42a0881b4892004cf095c6031798c9c1068796961655983548bc4ed0e2a1753055016500106ad6440124d601ac8e1ac835b80cbcb870d207216170c849638bce911c294b5600097385026d2cc0f1649725401d08e807e71763d3365c4233c88006fd99f74fc636b39621d0cfd6950c752ef7580c33a5e9aa73f8fafe38f4bbda5cb9ec3d87c86a4b7c7b24367b243685b6720577500283531c95807639a954027a644117a5428d2ce8d11ca65be8b5948852594271d409ad547fb66798cfe3db9c25cdd2d6cc5a52ad2db58c7354e8e29b8be2320450f010e717433f579a31ad34ff6edbbf3c14640864792e87e9be169bb49a662de9c9d39acbee2a5ad2b49b3c4baa2d1d73d53d495f9f557c1c754299b2a0bab8bb01eed86549b84e9e1ed2662d9f42a8300b0dff1cadfe4c69a5dad2a22e1ddd75b7e9f85be2efc4dfb253408e4a83426244d400524285890e2f30cac8128798f35c7e1859b357800283f6c5e32f38cc38e1eb0001b0e3ebeb2b10ad2feef7f39a032e33600677a4220b8ce8adbb4df393642df56eebee534d151085bb57b9cc80284b5e972b4931de545b7acf1cdde9baa3394c5f8cd5bfdb146fba4f739f988e9fadfe91e630c576d74c7f97957fbcd5ecfa212d94557b1282ea3255c382d28245c8c948ca4b1b2e1068e083327e90016747429622581cec80e50f9ad2ed2333a11322840b78e2d019298000d7391463c96af36b8f01f94f133ca575958c7ab19ab59deec4176a632b19012404ee4cf2e772278e3e89773c4a923647f1a648b45872f72b77a7e2eea6cb8eb4d139ccbfd375677bae7c8a36bc6d662d8774d7ee74dd29f9667548e1208e18ae24d003124e57802063e45d01a18f108e40a123fa820c20670061c2c00f5f851051fbfa2240215f5f5f5f667e90cda87adb5e9bbbf66856342302a2413f47281a3a7a7564e9c0315ed872c0154f3f0cc912254b0445399f1c636a38c38d2a8038f1edf81851e30d18021c34771812aca6235fceb060a381a50054c0d8c13205f53c39a150aaf5c0825ee226c042152a47f070af1aa335c224f5e8e0401dee3e6f682882670ca82c543e50630313b0d053a0e8fa618808303678228e25989061e5043ac46cf5787150dbc28d0679e23d669ab8bbcf571fee1e81fb47e5eedb6546bcb8cee15f9bcbd521ad6bde3abf7d9e6d67bcd3e28ff9430128faa882a00430ce58b2c3185b454cd9418a9e1422d88c78c15e61c005832346b4bebeb8f8f0f585c617075f5f5f62681549d373e4ee5b2e2bf2e43a87ba6bf3d64b7ae4f83b98247f47c417229284f914ffcbaa7bbf853b75efaf2cf5fe4aefb7967a7f45497c2d3f62f18c125d36f7d93cf38287606e67ccd755d366d6dfd9f6eb3355ce242149bb35841bdfaf874833c40baf87e0a26dfbc443503f6de38bb119eff6596d3dd234ab107f7808e666dbcab5fc9cf5baee4ca87d9feb97b24cbcf5be2776ca3d96ce75d7a7baeb5833148d9695f1b5b66b4b1b5929c0b96b6daf2fa8a56ddfca1bafdde2d53ceeb6e5d9b6bd00e7eed494d556c6bcfd377f297279f21c71f92376c2f56ad512100d323adaafcb757f596fc676ff966877572d9fcbea342e6dbbda4ab1cbd6554bdd55cbf19fc49df869bcf68ad9db361db574b13de2522a452e349a11d708848efb48e291c43f50e11e02ed8b69cefefc2e8b46cbfaa103f730bf3ec75a6ef2d43f5461fa610be34db73e2fa0403f60bc5026363d72df377fcbcc19f770c4e3a9cd7c80c7b3467fb7f38ff76b5db88924abc8fbbb94a594c34235e21dcf0c751fdeb009c1dc7abf65dbaf7d50220473d3d58731f7b4e1f1d43efc9338ab978c8e948c8eb4b6bed88906259d3eecb8fb1c65ac70cf3f355a9bad4c08d45686cacbec582a5e6c25eb810f777727590f68dc1d9f38dbad7fcceac194aaea21c975d72ef5b0e3ee4f90ce172fbe361ecc70f7d1d229a7d1da6c3c983c507777cafbbb831bf7f17fc4422f93bb2fe0b21dd4ec4026efe0b5c34de3ab1de8ad65fe9db6395af17eaefb25ad503ab8716d96daeaae25c7ab831adfd1fd56a4e87e2b3aecdc5f8f774a074ae99376c7a3174a87abaada141b8cbb670e40609bdfa4afbb4f92752752ba9bdc913cb1939392f85a723873a01e82b9e1e00607283c0473dbf72d29daf4a9efeb8b45dbeffa595cd2f86abc4cb9fa5417db6d35367fc456b65c7d7269a7ab54f9dbee74dda7b9d3f569ebd7d9512aff587fb70486c8689c6202637474c3598a5c32cef975d7f6aaa9ff735b63d146925544826224b5d375b744d6738b150b8db6f5ef4ad268a5d8f52516f789476b4bdae92a558a5c466b939141c086351e6a6de26d0399dd96d91055839bad4b7b2d53b82d1d3fe38b77fad475578312951465357c717dd27a86f92cab6187862268b891e77edd78966769bb6a497fb7b5c5d1f0732bcd61a819ea98818519aa787803a241e3140dfab971d5dd394eb9916475bad17a4f3a837bc592018dfb4c32c4209381ca3d2c45bb6b89f7596fa53bdd89f36ed3c78df47759b2180291c570c6dd43a09b31ee876eabb3c2cb140317a05b297219efd76ebf73f8e7e6e751fd1f05431d2cf8ae306881c13de4fda5f9c414efacb325de5457de4eac74ac3ba617a870b3e67d6b895f48e105a5fac21017d078489255c4575bfaf966fbadba6f5b75f7c6ea82181798843d923c735abf28eabae3d2f6d6165e90b520b65044090f4bbb77c634e81c69dd9606e5e7faabbbb63e8ef66a49c39a65003dd9001e58c382170b5e321684dc5dcb652bb009c71fff2f0e67f33e57fe7debcdcf857594ace7ad55341cdf34712649cbeb9138ab3536e9efb63e717eddad2310ede14d33b6d91ceb67ddadf45a5a7fe849b5a5daeeb2c21ea94f6cb93e9b3ddcb5747cb192e60a39c856c0a2c21bf7f062f3ac74bcf5717807d1a0fcbb9294ea6b6b19fe6eebc7e3f85cf6c5cfb497ff0c032553a18c9fb4c43957a9ae3bba2d7df15abdcb52414aa602f5f0f7936689c56bab9cb850b28a984a96c29bfd59bc5814baf8ca5228138ebf3f9b4fe26ef4775befb252f00af77d9dc565293071f750e35186421b1450707fb19a9ae630dd122b492bd566dde5bf0a81c20fed0ffd536bfb25d654575e960c052eee1eea2628109dd02604aa72e242739866b3ebe9e3b60d75e1ff9c5026bc98d65d96ec042ff75077ed78ff842aba776b4931ce32e18d1dffda32fffe913e8e06c94c20135ebcd396477bbfdb4024597fe8e5e1cb3341caddb190ac0437eefe5f66bc475bf11e7f97252be1858c733afbf9b9b0b6f456b1d2fb5c56477f9755c2cec3fc9bb4394a7f97550291297e090790a0bb769f38d31ca6bdcaa3f8f648324857def8d992d0754f9ca38f1375d7662cd2dfed8dcbcf948984245b222631a52469b7cebfdbe3bf289e9a9ef47759b211d2b87ba8ff7378d39d78abd0e7117a7eab48c71f2d17ce26bddd7e97b5b44492d56989ea4ab394f412d08f52297251eac24dbd5cad68737f1fb76d69a96c5bffb8c4a4d4859b4a918bd1d159feb6b6ff9c007e4470b3c9b3e67e9489a0844d2642d73d652254f110cced71368b1a2782ccc7b809c1dc7e9fe277fd983421985b2976d95ecc38271b83826dfc5dfe9cbe358fa91282b9e9fd5a57dbced87cf2f718073c04731bef6b1aede685fed7f25f1e5ed25db58a06012519159d3428bfcdd97d7f9c726ad2f9cb535f2c2619159dfb9eb8acf9b7444ce25d4ffca5ddf9c725a0a49306259d3fbd9cddf82e51d94d9e55f96d2e6d8febd5126b7c2daf2f36f5671263dc73d92d569bb6450000e10399074f3af0c01de7eed48f35eb4cadad2bd5b677eada28a81e699a4cafebee0acb66ea2feb75a2d1446c757e2ea3a373c996dfecaa65eeaae59252572d45abafcdbbeb6daf2b6ec9e8e854eaaa25be59250738b87bfe2b4da37d68641b6c774d69ce52aa2dfd5d169d72b3656cbb8dbfd3f6da1ccd3f92f66cd239d450e4bf1a52d3e00c97065483988fe4db0af27361891a6bd3d5f85cf9f563fde72851db9246d3349a3e77ddb5176f256bd3f781d157f415f9703088a17ede1ae8e73ea944475b8ef7a4d1ba88c44821460877a7b4db8dee4a7fd76d9e3963a78c73861aa7ae1ce7ee54c6bb8eb75691f5be8985ac65c656ba57afb095fe0a5ce790ac4364a5c97a4dee611836d94f06edfa594737b6a2a1a664ade4299255d45d3bde93463ed79336da4ed71d8d66ebc2c331deb4d7f9b93e539dc39dae3b2321a12f6bce8149a253924e2fba57affe7336ddaba6d69574d2ba92e2161e8f0eae2a5c4cce0ff6154e466fbf221b51849721c2fd49f3cc72f733bd9a33d31035771782c4b8695fabe5ee41ec3be5ee40b8fedd6b1abfcb46b9fb0f5a7f1e47a633b2302c50dafd2dbc291d9f1c6fdd5d2d09c23071f7118bf7938a842caeeef64f3159f8adffdaf26f6b2b71ced9c437f590f85c666fa7abd4d29292f85a7218e7ab1a8df6366f9ba9ebaea34e97bbdaf67d6d74747261d3d6554babb1fe4eca66bb50b85f5b774eb6eefab4bb534f77ca4a0a898b46abbb3e8dbfb5d5f9afdc5dcb159cbb5324899d74d792385bfbfc52d7ea6cc6525f6aacbfb3dacab5ccbf2bcfe8e8bc3c3cdac6d7fa459ccda51fb19316a58bad8df77789acfb623136e3dd92d697b631579e792e259d4ae26ba1d1c4e7a2d1c6ad6da6aebb8ee3947e2ebb6d69b369fb8c45dbc663dd22b1f96699a5fc4b5cfb8badb2b6e0a82452d169db3adb1c89316e6bdbf5364deefbd6b4e2e72f4ffdd9c479343a3a4712eff4e7ddb6e90be470d7a4adfb9fcc52ecda2796f1c7fba63e6b5b58eaae4f3a9bbbd8e9cf1f000b2b08c002db65e770778df38b7972ac4f52bca9de1647f77d2bda5ceed474fc9db33b2d56b3c42252782424d4db36577377c7ee8a5d1a296151482424243e976dab3e8f46b37d69f73df3ae06d94e4ca83fbf89c58cb7f85c747c774fc0dd45dd1626a8a00bfa25a0f175a3cd38a61f25f1b5689bd69f75d7dafefc338c6ddce92a45a38df57736314c690b538e2fc6eabc4483c6a99aeb9592ee5aacdb27b69965ded9ccd26696a78dac1b6fa3a3d3a6d3250fff237b187c89bea2f79fb71f475fd7cfe2b5b4479255b4176f7c71499d8f3ec632b8f16dde458c52740e47d29eb8a2d04808e7ae157ab28a5767b5aebb5dafcc98038800c8c42aae73684209eeee292c8123a37338dedf122bcef636efa39048e84b212153e3bbdba3e58db7368dafb57ed7d1d47232cb2ce54be39ba6cd5bd34a5d794aaec76dbc6f9af54677dbf2687e4be6fa747c7aff71543781a1de740ef7fd52f7da36fe7892e2b5f7dcf7f567933e8efc7beb4ea466997774fc5c49f1c76d4b4bbafb080210614c00b084e3ef6dcb128b1f05e196587138d3c7d15bc5aa6fcd9bde3731c55639b727ba9af1d6a0ccf6263fae3caf493f1b15eebe9bdcb17ebd7277a1115c66fb719dc3a12d119338dbef1a2524121212120af76bbb6dd75328f70f3270770fdcdd6910e3612ce0e2ee23166d3fe24b144a311232b50c1144b05fe772186709472882082895253ade8f4911431333c16314c4a66252b1295fd264ac87645f74f0a98f8140beece0001ee045e75aae98b5ea3f6735d57ed75dd35dabab5a7fd5c63b6dd6ab6dbfebd6b65e253fd368e56fddd3b69aab69db4f92d5b4e9933ccb5374d25d7b6d2d1febcf3fb3ecc45d4d6d9f7a957c2c3c764082861813e040071c58942943c94b01391cec1cd1333bc28b14281362c0db07120a84e08612101809810a86252810311a000d68d008f191a485245d88e1c3d3065f6409808a1a39535d64fe240e672fb84656c116ee943685cb2a70efddbaefe7cfe5ec8837d5e3ff0d1a2b26c7dfe299b7be58a43df262aa6d58690eeff449e9ad221701bdf1c3d0297b575a771da9ee551e59e9f8daee361d6fadb73fc9aa85461bfff2b0fca8bb762756f1b76c1d25db72c7b985319964141209e146a1b7792ff1077e645bb27abf6523ab887970ff414b18fe242c0a8b84c88bb3e5ba0f56a0e569579de5aadf5bf1fee2c8a0414f501095252a14a86bb43f3bf75434ac8c65e79e8a524a7b30a05da3b5bd6e7cdb9658f3a639527872767002c982ca52ee491c2ca828d17d4f2c5209e87dd2661b490c4b2386c60c3a0a6c3d522a54c4ac714964586bdcfd477c29a5fd8845fa24aeeec4faf99e74fcfcfb3ea591f5e6dfd79299a1880ae5c8d7940a15ba773afbbbf075e38327b83b062ecbe2c7ad206bca89e98ac9892ad1aed17ab92ccb93ce612feffb43ae1383ec2a09376b39f49f376e483f4962f1ea5e71f1f1feae545f258df7af72b0f891c319e772dd9abeeed6ec03c64b0f5050cfcf8f0654839ea01e0c28a5d1208a01a594b200823ba5c9b0e0b05cc132c529ad87d276ee494a7b6e7ba7b399d29d7bf2f6549650a1e2ee614cab41645668b8536df789a3545bbadb94e6eef8caac44b0dad76efd23dd89bb96403f24fd17f389b555cddd755c6645654505b405a807e806488248e0911a5f1a1f1a400451e523f2f50c01548444959468d10f55a25402217e30e3836be0ee1bb88c8235ee3a87a7b65947153362470b50dc25d6e095f104fba30604ce50018d1b09f8a00433238ca3036898810425989ec0d298a09b61c882a7af1382603b40b1e48d2a3020d21062021bc1ebe98a05627af02204056026103fb40cdc143f80088069c9219341901b66f0a1c107364506990e70d0914211d01783d1350de821e3610b084183c07246f8c1043d90a83283123f403b98e0a2a2ea418727d91de01a4164c8a00c1d7a78527a0344a24c1905a87d71c38816d000656883cc1168b8d000112d0cb083170ce8d207064b6a6b6c01e6b6a05dc800c697ae1da800a9c60cd2c7017c38c0d44613605112684051cba2e3892ed080060062450c3987176cf802c437c80e3248f1e40c292440a0c3c7861a5136380103199b1b337c570cc0099a2f0770818c112c7c40a88152ab424d0b60a890f0a900002f0050c18b0c554801c2c74393f5c60dbd3492f032f8bef0c1d385011a0db642d85f130e650e30c4a0078f02f26b62c697c7a8c42ca18ef123a242950de2210139b8b8f34105980502690ab3400cee6c3eb862c704253ffc19ee4e9c51e3934850134419771cf01071280a830a419ab88fb1014b93080e88c10128f7528c2f9274f8810eaf9d7bed840d8cbac0a08e2fa67b521a17bac0000b9d028c7067a08309a474bd618107047758105d76540104cedd7d8e39c2d841f6d5c50c5506f932a200491cc0a50d043ec88f2f184868620b1e7c35668b3bbe3668028e9d518599123bdef8120909c0117c7ce0591441e36bca0c13263058ad0218617c856f7c9151e1448229395b7c1100c3046d58b106030e80a0a29040b8380381d6171521d144216b0860c7cd1b288c14b085a6102a08f064ae70421919bc00a2101fdef860f362ccd680051d0a398187359cb04109389438618642f61a81f09898401b38c142215d5ab00a8184149688408b844226c0a289afdb9328886a201402410070361c32030a46c8a0909e238e08a28c992f2f2536217af4d1c69b15d498628f084842c4c8e1871c1722363300190959e20c2048261ae07600e10b216456d8b2a10b2620c0a2852c4242a8228da7264ac0e062092a42b6405013c61a5f5831c1942742ae8a48d209e2044a1126281102458f273d2f1ce00408389e109200190078c1850b50b8e04710214ec60e410b083ca05dc16490385068a10e9c24f502160506d1420a190b485582688942c0204478a074a40706892eb6f80cd282105b4ca550a5ab567ec506c1a08e191ce03d90c7085a0c3248a5210c102704c1031647f83148141859befc1469c5f0c11d830495b0a6812050e06010a53706993da125053d98b6c6f041431040be78440cf244136860094310347e300b39e08a18acc8c2ddbd902d0489220e255ec0a828815a030a8d7b18ba7b90fbc70395e45b43ede81ca6fbc4545bfac4e669cd9319d9930dee379ac31488fe50faa30d3a0473cb61b94fd555ab6e5e680f677be4dee92c49cb8c73411a9b3f528c759489ea7f5dc59b9ab5d4f1807ec68b55c53d74c24a62ef16569633bd5b294956319fe267cbcb62ba7bbdddb228913bfd396a96c5676c7ae34a8dab2ddc67572cb893ba6baf08b802292d8771ce619b4b918beefd95f13e952649a630e5d3d6958aa9ebc73b7585b53159bb12ef89ef65eafd955e7e2e2c6afbf4a46973d6b8c52cb394d3d6580ae7eed4c6642d87657f6db44f5b5baafc662972e161abfc9634ffa376d75b8da37daa5c4f3ed68fd889f756e3ebfed44e4fe3c54d4e3a63fba2e5ca5fd3575a8ff5a5c4305b57aaa93bf5b95a13b93045fd47f5f27359f29faa48acd1e6fc5c58ccf26984dae92aa5a56674a485b3466d96598aea77b5e3971947e5afbb3e3948410c14ef7b8e67cd392b6768de627d1c3522f76fb1e6e8efd3d4761cdffd7bc3fd73c3fd6b6336e5e53e45f5af733567534c5c4bbda9b4578192bbe36652372933eedecb5bbf786b1e12356e6848cfa476dc3defae8c772236a16656d670e9ac999533aef7ada6b5b2b282bb632d56b244a111b5857b48f1a676fc6b796f457740c10637ae817befafe832d395a8d9907eb3b704b6c3ecc9840bae8d72745464756fe35b4b3df5a4e4ee388419da10c20908f78f8d36de651b85475a9a62bc9a8fc227452191d0e5e18cdbe9ba9b31b5913a335a502b7c8d499176ed53474dbc85a727d4513c3d5a575caee54ebc7f7394acb50230bc5e253f8b540054e2dec717f43909f2e5a491c5cca8ba7f515c4bda9a838ac1b044cd2ada787fbb60c2825281fb9746db52db72694777ed3e73d6d31778c19a9382055c72886c2ee727d45d9c79fb4b5ca3a1c69d9ae24b77e2adb929a787230e6320e6c7920f0af7ef099dab116f7d52e0fe39e1fe35f131e1fe2d6103139f4d41e35af25afa382ddf12557c360584f0cbc7e482d0c5d7ea73b7e914b2da8b29ae3cb3b8d3a7497fc4d786f7b5b6f1bea87ff4e05b82bcbacc953e17c6d58c9b9edee62c3ade4aa3e1ca333be940da9ac39adef659defeb99a3c6f2645078c668b991402b87f4a109084fb870401b3241d6651d87c47b87f683e23dcbf22be1c664868664159ee1f11eedf199f6f08f74f0832ee5f10df0fee9f19f7cf07f7af8cfbd783fbc7c317431b36dc1d8ccfa0a0f1a2f0a8282c12129f8b246bf9e4feed10732773861231493261d931674fccef83cfabcbec68c7fd49ccfd34ebef286d7604821ed2433bf17789c51077eeb6d50d0dd1b4b9f78eee6ad229e3e7d7e96cdef97c2eabefe77ea47576848b98141d0909096d61dcf4626ced75f54ae770777dd7d3686ff39e1929e0f4b7f5efc35c33cebd0ee2e1e1e1e9b9b58986fb756f673b62f173dd36f328d3876446e426d4b6e6a71a886002891c66444c5ce790a7e762ba757d926e8bc541da4eac62155ab049e3d381f6d5a1bbf6f348da9df8e931139ac3dd5f377eaf92f9b9f097c3f861e814f3b7ced5c459b3a03b82d8b87f37b87f64be1adc3f1adcbf19dc3f19be1874ee7ef399046c9ce57d130bb6ba5346471f9805ab68095696a21c1d9c7d9fcb09d3cc09d28f194333266b38f971728013233327e00ca80f77cff119101e5e8a5caa3892586a0654c66ffb346f5a33a02aff8bc7a0a81910cfeca78dbbeb2cd576df202aea9acfdaf5b69acf5a8a5db8fc31bf66aaf964da5d50359f4c783c6ba5c8c5c92cf5d40adf0aee9f0aee5f0a1f0a1050778fc3dd3f9f415080bb8fa187153208c0ab4210770771960adec38d15ea70f7cf8c9e36286073421345dc1d568189f5831804c4cae0e0c3151226d44471f76f0215bc604141041a9a70f76f043b1a00ca384a3fb83b480535011c233419c100ee0e2be0843579b8f042135fb87b4e0c0378f385412ba48abb836ffc91420683b8e04614778fc970d38161a7c5056bb8fbf744b2c838b071820c77ffc2c01955f1a5843069b8d77cd67aee5b75b9ea86f4d0507eb3b71bd25bfc0b70beaad2b7dbaee178c1dc74ede685bed6a2e1ed2fb66a72b5bdedfa193b85b8b3467bf9b96e9fb153f8340cadc94492d529dca779eded3f0a67dde87f0ee7ae0d3f1764325dedb60e6f9bed3f779fdc5da73599c2df6585b71ca66fc59aa59ed2d664d274bf156aa336ad2b4975e56ddb68b3d55b222649f2a3f4e7ea931be38c555565cb6519eae7aa4f52acaa2a6b62d96c61c6397abbd59a56cd27d3aef9dc55eb3059e948daf34daa83aa76c0019aed57f2d47d1e5f579c909eba62ca953c457aa768d8dbe96c8f47b149cb8c7353574c179ba7ed56715b4a7f977149b5ad5477314975a5b73ff3be511e8f06dd76a554a8d01b0dea6db3a45b68a87fb498abeaae7e7d8a5687c97d2f163726f526ed8913d2552c6d796a5d69d0b5bfbb5ef764983f977fe7b2c6d7e96a56987fcc587f7e9324ab58adbeddb63e35fdad5aee13e32a1de9cdf5498c4dba85b9aec5bbfd5d9b8a156f7c6950a597bca2f91c3149f1a66589451da429cd4dedd3a4e3ad2479e67eb4bd5be9c5fa82f0f3ed46eb9e7a3ade6af7ad56586a14d04ab5be59b9516b32d57c3285359f959a76a733d6fac5bf74ea8a8986b68d49adadfefb3ab3b7ff0c72a261cd2713cd38376e4b566dcd4a6f5be2ef9c74786ddde5caa57361140d37be34636d7396eabfd59a4c5bb084d6ac34ff56c63c5b2e8743baa5ebcee56a54f7fe4a68cd5aa312505ecd96d4857afc118a8ac9a9767f575163517a4bcaedf34647fb380fabe5a2e36b6c763dedfdd66b4c7f5ba1e3bfd6c09180d9722460b21c09182577972571245fd238922f0370245f6c8ee44b9223f9c28023f1528823f1028723f1228423f1528223f1d2e5ee4b9094b823b02437daef8bcc7635f3b1c2a70ca5fd0ea2b49fdf3557f36b339f16663e5e0ef433fe4edcb58946fbfe133f9cfb9776db729fafdcb1cc86e8005a006a0191987c4628cc02581739c002cc78481e2a4adb27b6f13071f7198fcf6ce78d531adef168d0c5163be91ce6df661dab6db653c06cc777ddf168d0b5b65bc53033986ea673c6dd9764cd74767e453ed75399386ba6d3a4c4396ab4d5bc5a3c4c924c3a87437adb8c7f9643e44ea35a5753e7308a9050297609e5df5ae7b73957dcd60c07cc0ca76a86f3c4ddf39b389b3488d26810a5e9204a73daf25b35cb8819ce8ebb93f5f510b3d818b358139446cbb8fb921c663123bbeb856a3eeb124ad6d7b4629d4cd7e666302fbcd495f7c448e8c59a131232f5becf65dbf7b974f8f3973fdacc52d3686f136f4f9ba5b6783cb5b6e9251a0d936475e2da1a4be52fffe9b7787b35b3d4537aaa14b998a5c8653cbff6b58c35cedd29b3ac5b7f69b39668504d29e328125749b23ad1683d36fda3edfe38da9dcd9ad5666a1a2d47bea6d1964c930967d1684ca8aeb4e69349a9e6b38629c7f2bcb63fded03f9408fff0720fff9012f2638e7db11f6548d3f463e71e8edafa91c464eaa34d1f63f2a9b3398d777d247978cffcb68f1d6cc5071d7cbc10de3353bc2d4f5b1c2671d42cb168493e68ee1eea6d77389bb4475eb5f1fb7b9c71f7fd7a8f9e6dbcaf97a476baee96c6fa3b266c85ac36acb38d38dbf8fa7463c64d96bb873d5cd07f8ede4cbb6f394c836effb91bfdcf31fde76c64b53b57f33ff7e47fceb6f579c1589794fea3a63e67bbd86ad36e3d94703dbc5c8cbd3a2c6a2d6d8da568901e340f3e34eeaaa58df777bc1877260f2ff73cae30a96d79fce4e1bfafb53d577d128f351e82b9bdc6838ce361baeb6ac3a38acd66476bb38d17e3ee609375c71de51d497ab5a4baf75ba31d694f8f63a576a8192f6eb2c3ebe24a7b383bb8f0deca0eea6ec7b5f8823ada30d531a60e2e75fcf4e878e3211d6be87881f7398af17e2a3a6e323a64dacea18458cd5314717e1e269de6b8919aea265b95879fe62022e91c3b1b5f367294f1cf550e2f0f7fcb7195ff9227d79da2b7cab173318ef6c43adaf156b17c1cefadd8c4512604738ba32b8e2a1e878f6d07879a906a2c2938baec5f2c6e38a4e050c0c337e678a217dba737cabc31c69de6b0d07d62a124599dded822c9ea44c77fe347b49558fcf18d1d9d1b2bb88181bbeb9a75427f6d8e7ec65534fc334c3531ededfd22fe5d961b09b4a1a60d0cda006a43c7dd43fdb8cb442f1677fdbc69962a7deb97d4498f7c126b27744fd1b04792b7fe6f6cf5bb2d6c70b1db96c706992c36cc1b1214239bd16f551277a3bfcb62438a8d21fa2c290f4b8daf4f5b9b36eee1ebaad9e64c9babf387de32be8d3fe62a6a3b12b97ba86d1b99ebaab94613ce955fd33fafdd178b146fbaf15dc3cb1a54e833ede17ab5fcd2ee5d6915b7c5978eb79a67961a73b8bb1a64c26bab4e0dd3ddd5483af79953c3270d24d220c17b797fa6fab9c8d7258983c6ff7d6baea78e6e7c77e2590b9fc4d57bd21e6973cdd82c3f2b8d9cc64e77e2fb2389e9b666fdacab576854a12dce26c597e975d57c31b646a365bdae9a68ec321a511cdbb83e9bbbebef8bb17a69c94ae713e3763afbd736ded7d5abad2bb9b4f4626c8d06bd185b33eb4b29191d69e17da7ccfabb17636b67489d91c48c39dc0c35be74a76834fd24ceeaee99a3ba52ad6486e96e86ccbd0c40ca28d384fe6ee7b10c29ad71166999712ea388bb49da5ee5fdae56ee6fe12c365c84606ebad4566c6e6c9e90a01869c9d83471278310774ac60bff2319497ebbd14ac7df37fa3bca440675f7de364ba831deb8fb186ddcc728e3ee5bff13bd3857d1fc638cd1da56b93b8ecbc6e81a83d2317ee8189fbb9fe69dda4256315ef85dc52a86e99fb38921e5786b31a86bca449dde70f13922a422a98bc530c69062cdd86644dac6b186d1a5dacc525bdb38d62ca5fdb530763c3cc17003c61a305f68951317308200230377305f68d068a9972fe1be5fe22a1a2d8b872f18576010812173e3ee535437f9828d7bed8b27eaae234d12caedf38b19dc7d6949497c2d5fe498be2072f72f6473b817400dd75bf1332dc00b9e0b60baeb680194f2e7ecd3a5a0ab920b6abf155dd65ccd356a4230b792eb6d78afb1c1b65f375a5bcdd55c93813ffdafa1eea1176fbc87a34c5e2811027dce797173c7fde84592102863cb55778fd3b6ec424d172fec6bcb2ebac2b18b1ffb43afb88c8b35383b7e16690dd29547d68db3b840c13d04d2ff3933e422c9ddb7fecc45922de4d8e2058d49ba4f4cafeeda2028ca3b35def1e8b8c5e85b24a0851ab3b7eda9cb9562f1b51665b418a3c54d0b20bc7fe898c51c2469b77ad51ccaca6224b1d448e25d1628785316574e566df3de76b467184bd2239765217bf21c7f276a2eca84451b17fa6c36615166fcb25e2c6e64b5fb3ec682c8c33fef6b9ddd518cb74e0b163aaaab56ddba9e6aabff9c53738624d578a9e11282b99d6a7eae78e3bbfe68b38d535b22a6d25aeb2a99fbcfb92bba3c7c9a1aadaeb8eafd16d6154421b5e28dbb8f5656e8e0defb2d5a5aaa9b6c4bb17e4d7b7f45f7fe0a8d9695c3389b5698ee6ec554efb76cbcbf25ceb98cf11e5f5781823b531552245999aa4842c51cee42322ac8b887b717338ebae9df27cee66d75dd51d1e5e1f8545020b28e23d3cf146c3cbc653c4599708a31ee53dcdc3d9c22698a9d2a29d838afee466bbb51299408472950904921154ac1248a41a23813de6e74fc1e8ede6e146f7abbf5f667bbefdf1bbd4c518c71772febebeaad5148454199d2b8f1f035efadd4e01def96868cebbfdbf2d274b9879787efd63d656992dc439c7b1c85420d28c6ecba2bbd515d777f6a2d1a8eafcf5bb92c2983e24a9f50fcb887f7b7ea7e9a7ae2cdce7a428dd32db1e248b23a3d11e609069c50e3eea1ce61fabccffdc534631a2494235f0b5d7c71c69786f9b59c18f35b960c7a2e4b3ab1f3d089a426de508aad644d90f50cf334e326aedc3da4bdba3597e5caa7e63541afad62e28dbb87545b26707abc678e5e4b7932264cf7abb332268676b5226e2274f389b3913fd26859f9f79753345ad668d58cbf0419f72596b8725f82c84330b725dcd984606e36f2c55b45029c71e7d5dd26000aeeb624c08e005542303702c8b82c596de6ff96cd4d3e714aa47157820cafeeb6125e1e82b929c14589241731895362e76c73c6b43b6d4b62bf4e82cb78cfdce7248892d8d96d6c6b53d6dfb6fd1a0925907861279e78ef6c48242121f310cc6d7f69cbf549f18838dc1de7ad7fb42dd12025ac17ef5facebe7bcbba0f28bf9cfb96bcbb1dab4d53affa971b66b4b4d562e9c4db3f648d33c358971654f6bb29656fcf1c5e09cb369fb8473770acd180fd1ecccca634293e4ee8e2689fbed472cd26e46b8f11d15ba985e2c46a87177d79577998c28e3f432193186622b237ec422ae08416445dc28bd65ec7423ab0825d6bcbb3e4a568457113faecbe7e36889f37d9c5f8cd09511d1c6c3128b54e8e2fba315ed5923c2eb475e64e53a42a48c53dc48332c04771808b00f760ee5ee1a1c21f2e30ef300d6811ff17983a78ff8641df1d921639d8ff824b91ff159e0c890324786bce0478684f4ea48cf9b233d6d94f8919e27774af3d3238134e14702e9c18f0492821f092403771f62c01d3b3e334095cf0c40c5670688c293c3b3e608cf8d878953da8e9b0de447769a38b29301a5ed5471a7b41d1f4a3ba2c382fb119da023396f9cd272d2e47cc1717304078d531a8e17a51dc19172a7341c19a5b1a1b423b1324e69b1ed4e6931254a3b12db82d28ec050807da13418134a3b022ae1ee474010286df4236092235f1b4a3bf26570e47bf2239fcc9dd28e38105f5b7ca5f12f129cd2be98389855c81685881ee24b296dac4db824dd6108c8b6444c6e89984aff47f560b72e227758973b8cc775eaffdc7359dd06efd8f9611a966161b636dd61187633b6b01286d3246ceb826bf793e4d9f4193b5d8bc56d9bb660118b186bbcbff56f7107d9e835c10e80dd6cce50eeb0dd16167798ee475ca5ffa3b6c4ba6b7a4bc45464fd276cd505359227def265b522c933ca2cb1cc2e288cb3f47f94ee5aabae5a75e27cb576c6a6185bd32389a59ec455923ca3ae96162c07bb7d16c0bec4b5878d3f7ece1d06c3c1aabbefc06eee5da5c825bf3ef39ba73bcc06b34093e469e50e9b95f88a166bd91863d55d17943b0c8c3bec8b68f797bb6d33933bcc8bc65658eeb02eb5095681bbc3b87c79c0b6b8c3b4b8c3b4dc6159eeb09a3b0ccb1d96c51d76e50ec3e20eb3728755b9c3a8dc6157dc6114b8c3a6dc6152ee302beeb0287718943becc91de6e40e6b728731b9c3aab8c32670872db9c3a8b8c394dc6153dc61347798147758923b2c8a3b0cc91d06c51df6c41d76e40e33728715b9c388dc6143eeb01026442991d30f2b58fa78a3c75c79e1d682af6825eb8f24ae145b9ea6cfdbdb665ebe963e57fe1a1f537cd0f8f8e143014abb589736fd9fa3e53edb28ed3fb7c7204e695858b0b0a0e892254bf648620f24f698217fd010a50d695bd01e19ec71c3567b3c71f7dbe76a2d37d343c94c8f1c376fdcdda06173a304a542858a9b01b8f172ea868a69e64601b79195d276d70751dab5d4cd8e8f537abc41697a30a147107ae030d3c30b28a4b42517db6fb26d3b7e1e69f250220f1af2f8e9d9b165868716ee3ec16dc98d5eab6576994cfb6bf96bfa24cd7cd67a6793d4ee827ad25dab31e9c4f4261627de5b996596faf18db84a91cb68a3d1ecd0c28e34eea5d8558a5d4275405047013e65d6cca3038d539a59338fe24d070deea4eb95fe8fba5a58bd9cdd59485ba36aafbb354b6fd5acd7f9c7118bdf1b7b63ddf76b4c7200e2ee53505cf99db6444cb5bf6a632bfd1f55db3c4c95b54f2cf8e26ad86aac4db5e9b19ec4d99d1f57af56d478bf16c715d7e38ff7351c43b07a637dac30634a561c26add0f0623a7ea661ef06bdae49b96dcd34e4e1bbb565c9e7e5302d49f27954571aa4c57c629264a2a13eb1cd958bea73d541398c370d8148b2d25db7a5394b8bf2ceb69ed9569302ddf48d72214131a2d43dd416eb2ea6a5d8d506a90d5190012088697cf9335c8f3464b7daae48028d1e28cda6836c7874db6f7ccf08048f678c70460767749d718178c617776aa35da315facfd1a0201a4483cc50c2dd7df685013efba288cfbec071f7223c4aa5c8058fa736c375196bdc6146dc6145dc6144603e430ae9e181edc0746039301c580c067e30ff2a849041043940200678630040f2f8230f3ffac8838f3ddce4a1471e788c313aefef6c0c2af7319eb8bb9a3becf83e2a627a5d3cae73eb1cc6c4b7dcbac0ee745d2ae0b2458b56560d2bcb955515d5150aa4ac44413d3935310d8542415f123801fa691201044c1e7060c9176d8081051448400902490e30e0eb6b47e7f32f174619f76df6b2f8198b42a64ee212850b1217285c9e7039e2e20ed601d2e16ec4c51d9ca388cbe7970ae3ca36edcb11071c6f8ca4dd39f5c88ba5f757dc70077ff693641b4446bd07d968b306a886cf1252eee3d40ab32f6e69806838cedfa5d774b1d596cb3e698d19f3b4ae574c1b5bed762d4f7d466d4a82f2ba3699e10e7e49b9ad55e21cd5bb4c1b93b55e3e75fd9c75b1b5d79623d393d58a763c2920b5d53dd54efcace7faf200cbd8f66aadd17a7277bd86bafb1a981fee74e6059ba09b17439071779d4f2f4af06203f7db6d7c2c7790cd0892a1ddbf07c7a8fbabdeec65f5bab0d5b6a225b1be5aeea0183a5d5ead71ea69fc712a8c27cf1157d5a62eb672ffdc987677e207c3dd771ce4e20bf7babfc472070be00eaef11de8853bd805c8058826b6b19593fba7879ad1dab4594928ad2c92b2a0ee74b434e31c1639805bb8835a6421071632c7ff514ddcc12f35d4dd85707e31638c8cb2a244b9822625dd01058a124848203c7962c595eba3232e349a7ed23cb71549a27a4d55a841a3e1466b9b550182e793bc3af25915527e85ac62c79dc8a8f757a850e34f90a820c1e8689caabb8e3b5773b45404f9d6f5a936d36c8a39323671beba7597f51957cda600c2dd73d4145ae7c7955f45a3ed5caf7a236e2af1fdb1c4774a8a03b8eba39a14545edbaf6dbddf9a45418536cad8f67e4bbf8d228b3b88859a288ab87b91bec28a34e755a82f7e1277e2d1d2a08ca3e86f65ccbbaff14ea4f9c415d050ff68b94eb3d2d189136d79957e130d35c63bfa77aa87ab1a6f77b00a9acd668565aa8605a5c5066585090b4b56cd66a3b97bcfcc892e93fc9d2d3f1553788837de4e28e0949675f19d35c182eb1c4ae1ee3b51f893384b923577a776ba4ad1683a8742e2ede92126b260428b092817bb4ab10be7eff2ba5c774e44464647bc8a354e75fd78ab3b98068a276228c4622000019aecd74d7ea8804eb8fbd7c452126edc3d8bc8ac5b9776bb834c38b804018c84846410f80d37e06e0db87fbd29553ea0191278b87b514824b431ce2689756586845779fe90fecf1b8de8c61143b82f4d10240c09b491f272dfa451210ea80fbe78d0da2281031a9843871cdc411cc01b621f99e7e2c0f861e894cf660f87035864768494151a8de60edae00ed6e0ee3190062e346366687edcdfe67dc51f71a68132b88331b88330b8832fb8832eb8832db88303700759700757f0991161802aa480c2cc8832a0093e25f864009230c20e28009f1971058a008e0980fba7674520b125d69c25c56480db0d04803b18823b08823bf8813be8813bd8813be8056ee00e6ae00e66e00e62e00e8a71077bee60973bc87307b9dcc1d31ddceea07607b33b18c61d34dd41ec0e5e77b004b7dcc10bdc41eb0eeedc419d3b9873071f14dd419c969b08562e229878b873f7117c7666ccec4cb9d3b5ee3a9ab5fc9af85c345ad5602bd7350491833777d066813b08c61dfce20e7a7107bb805cdcc12da01650ebbb61264496cee18bf7b57edb17a5fb629b054182eb1cfa1084d75d9f3c6b06c49683eedfd7873b0833ed566d9ceae5fa941fe70e02d5c7ca8fd35532eac5d89a93193fcc84e14934e8090d32a241453487a99933ae2b6f6666e766a666667edc296db4b62dda915eeb3ee4e1431a4abbd61d96c6673e9030f3c14669b5291ae2284f4fb9833fb5f177e2aea5b655e3d416ed933b98c03f7d59731449d6b2f6fdc63a1e1eafdde20e36317b5960047a7c2828f72f0f77100290c903a003ee331e98b8eeda29ba8be90e3aec804257cc9dd270ee4e6dd5c68b9b786fc57bab71fc7164e2bd95a8a7c68bb54a9ca3b4a5c2593bbfbe531b5b4d316d6ca52d09c5fb288cb34a4b7b37aa331669b845303a9bbbfa49fab8d1d250572a1a8edfc3e9aed596abebcf923eee76a3a1060aeaed1f3d7ed00d3d849071e3e3787113193664d4b8d3e87edd8c0c12e5931f85a5c99064e8ae94f7b77cadabd6f85b22a61a7fbc56d48f3562558dbfd395aced6a3e96d6fead31d5d6e7d3f83c3c5ea8dead551867d57fd25dbb2d697175bc6f6a1b90b826eb796d48d555abc28badfef33eed914b7e8babe668a539f2f513a5fdb5242df1deb889863b4bf38975a95fbc9fffc4bd1a7ea2b452f3a4f74d4cdbd236d3cbc3bb52ac291ef3733d0f4bd1707c1bce2fc6f6f9145f5f7bab7f9fde2a06e1fc622c75d223c9fad9496e8a2ec18205d5855a314965512ca82c26282c2b14aa8966d5b4aa6878dfc415a66609cd20033a3ea5b24433c880fee71c0db5150dc71b546b5a9fb71bad37bc692f8f56df6e5407e95c0eff58f32eb148b56da2b7db892ba0b7db8d6a4069ddf58906e52b1a0d522aedae66d62a2af433a694624029beb7db0d8a3e4049b3ac5dcf65b7587fa475eb7d629ac37adb7b52b2ee2c179adcfd8acf5a3040d8a409a58dd616a4739f9bc6df89277672aa8dffa4b3f25f1e96d1a9ac9f35fee7f14fada7c601fce0beb1d5d47359aa8dad9ecb52dd7c36612b6d9f46f2c45baed6589bae16cedfe5daaa2d636dba2f06e7282d6c65c5c3542c4c85c082062cf0dcbdd4e19871c8fbbb7b4df9afaea5558727ee51bce958c3f16d2d7358b4bae26c69a974f97b0acbe6284956bdebae8a86377d2bbfab56d130dbdd0eeafd96dded5b4fa4d1b26e34876b34cc9fb35134d44c7424f18e9638473dd648be546d6c3a0187353e49da2bbcb71a7fc44e3513d47027c9ea84f377b9d8cae9622b11674de12c3dfe5b7d59adc4376b26400055c21724599dae92a0d46ae1c9c3778b863d0792a068ed004d8252d3d126b8a7f0b730978877ba4a6d9dedf923897fa8f9bfa5bbb68a865b222675a8693a024a6db8336f666fb7a9c6b9bb817ee86bb246d1f0667474de6e67cea2b7db6b4ce28bc5fd3c9ab337a0a0a52ca58ca37e6ebfd39f7fe7b0b6b7ee44fd5c4f0a512ddaadad684d2625fd5d8f6bd60fa5b58a86b7a52ca572ac9f2ffe12eb1c16da27a65847bb70130d85aea5550bbea2b96be96bcbcbfba4416561b1a2210dbad5686802e926e50fa5a1ae0ad29115e85a1a3e4dd51c3a4e2eeea0834b76baee4e2b10763ee0030e373e58f3c1141f34f181111fd4f0c10c189cee26a64010fc501a1da24010501a0401a599980641407f28a505690ae6472c7eb0fbc0ca290de8675713e77df3be96f65dbbcca2d1740e671d84d041061ddc3aa00222ebc63f340782f483cdbcced05db58a46cbfa5c0511e3b58b79e17af7c88ca785032cfc5aaaf3502e4bb3d43697258d5696330eae7080443536296dbfa6b8f1aaaa36e5df06653cd8a0cb5f9ff4dad17eb04115775b25c34703f8810db8eb6e7d4103344970e5dc5d032b197c9181143b5da56834d1ee8cabc4376b2f5e6cd595b5bfe42ff74bee0beecb972f0e7cf1f29aacb99d253b61ce1077b7c06762dae8a2a290282c12ba585f60fb31bf1600afeef6cd276e5f5bea19571eb32e194f09a11ce2706032cc361feeb34d4488fb3788fb2788fb77802f10f7ef8dfb6700f70f902ff60d11030dd38daee2eea148b115a57d7fdc5ae672a794fbe70789ab5950b5a88d75e569255a5dad1a6b135312145d73fffae81519d12851e370a6bbee5dbfac5a8a42cdc2904e691f1f7b68a96d8cb19edcca5ff5e4feb9e1612a8cb3ae3e25333c883b2ecad10825873494434a12a54029421247a3275272b89c90ce4262b41ed2fbc443dbeab2669805a26d710d7c7d7d610db08d2e514a13da1627eaa68b753d125ff572ff4dee9f1e31afe6786bb652cbaacf2bee5f1eee1f1e729427d405615692e1df1dee9f1dee5f1d749401fad9c23403201b0dd23f116440837e7abf65ebe16c3b31d7d7b65eaed7e24239a850a1f914632430507335719c68f1fe8e06551ece94d9d61cee8e2f0e6ceb8c3bce6c4be7b527a65ad4c5f662abdac65675d727db847156af69fc2badbbd63443dba6ff351ade6e348745caf4f4bbadb11317fabcacf1d61caebb937755a5851bcdfc210db178ad16a9b6e373554dc75bc78ac9fa385c332d4b8cab146bb2d2a0a0cf3887d396ac34cc55ba5f5b4bd6fce5ef4cddb5b6a4e56f2b9e23ce606e372f5fe2da8d6a5bb5bd4c34bcd9ad27f82d347c9bf778452e30b79b177c69ced29d589fe630bdd92ebed16b85ce30b78ef72c4b2cdafd5ae31f797fc95383817ac2e244a3e9de6fd96c24f93c537b01e385feee7934880a611dd5cf65754c34147515f5beb6e69dc3559bff5b340473dbc258eae6455b1cc6afc78c79e36ff345f1562a6a9b7d21e3ee4b26d8afbbf9a7a5866f8e4f0ef7f17996c086b8fb96cfbc78b99090501ceebe0387effba538eb42c5accb98700b4b970db6b0cfba50f790d2ac584d5961316de9e2e3ee2e649662d7cd8d54772dc6b9c422156f4fd3ddf55663c564af9a40ee0e7479c980070f10699811c4aa481a1e1526f0c2094ec5e386a62618c0410816941a38a00e36e3676b76edfbe57e4ceacf38dadb16eb75f50a4a77ed967d9f4bdb27ac2b1257b5b2eed488ad5e57afb015d6c6565a4a770fcbf33ebdcdb41ce0be6fb5593b6591640d7be44dd368fac43ddd237fd7d26eab7bb2fc13a8776b56adab5685e3f782c82ada1dbde2c5424f1188e6b026eb0ea7b2a844f167e6d120069952ccc8c00800000000f310002048301a10c82342c194428e0114000169c072944a9c09c4288a510a3163882160000088800080cc6c1b01c65b278a247137270d4e9db180227d9ea738e06cdaa2965199171ad92f2e77fa06cf51477bdc92bc8925508dce797d12c1faa6ed572a69e6f1bebcc986c6650911f10644b5afe5aac1531d9bd99e781c392472bf2539b0473d24abe1b16d52bdc613f8a704c59067b9c34089bd1f8297c093a1435f9ed91c3a17da1f0fbb41b6ed68f443ed3e5841b7da0b1d56e37d4866e2f842ebf7b6be47b47269371a82257c61952d570728650cfe44683b004758e07bdf4166e66d603b9018e1b83a874ea9ee68f27f2b3adf8da8bcb6541fac9b7e44a9714081591fd25e42785e74f57b21c12c660aab9cd2e1f55307cdc5c420f6e0d61f7e4cdd1a714b3412ee07b0932ec5b395661880c0498fd2384467d85ef8ae9eff111370079bf6b4a65909a4738ab4d29daeff9292bbec15f88a421e7d82ff181aa3cf628ab17db6347fe17cd147f71c393d0e9be8747a8c56795313d8291423fadc9da3e20db8c223aba3253b9b74e21390dcbeaef876ddc0c79e3c88f58a098ee4ef929fd6ff46deae1f567738201899561f673bc56aef6a23a86d6c62543d74990f7f1e8134613ad645296623f8e6a8387a263262fb5544e79f1a3dc752c1ee4ae54b6f6d4a24b74d7de4b94f2ed8f38039ef3686f211c8814a58abbd03561eb173190d784d7e37a577f91735fdfa27cf1de7a8293f8bf7e671ce7bb3d46f53551dada3ba179c500268077985c37799274b81c2a01e49a9d4cdf85ce10fb1d24c008ca8824990de2b476e6df5aaadc1d772f4cfb6125916262b873784456b210997d40b4416aeb7139cb73b010cdddfbb23b8547b1d5e005b99049f7dfcb56d6b04bae0a53bc31c6a6ae5680a33c3ced83d2cb95a6831bc581098db0d4bc4b6790782e22d0fb5afe74adedc843224126728c0273ce4da34a02a7abd6fcddb50cac0cae99ecfd9ef6570c05e98d8972a9aa02ee0b9c75e7b07557a73c85dd9f22ba43bd36c1774ced96510375afff4b4eb87ff8a58ae04d591fa27b7e3f3e9e8de0577a161e692a44fd46c1bf09c73f057f074a568f8bf1a652b94ef601a86c062b7ab7b98fa0d33ef969298c0c04e0f2077f1b46516019cf7528d40f22dc02bc85f989ce5b5801abe863574a858090bd092b40ebd14612a238fa8b9010924d4553969a76c3c0e21fddff9cf28fde3b50353f9fdc4cfb23ff748f78623d5aea3e33835fe658c3c645aefcad68544703bf0d25afc164b56095969226889ffcf9d0d0133a5bd78145e7e4f0d6b0632fc3368f286e07ee25fdb697475d1ea914ca13f6eb0efaec65ad2c0c8af7c9edad06fde754a2c7633ed68f12c7ee8c296ed58cb1e6dc68b203f19260684e734ba913648b729773457f06b98005c4d021726d412790afc8473c9a02b0768523518c52b5e42a137a81d25f1b0e269a549c1938d3b967b935c71e95976eb5b5a606d7946cc3eed323f32bc5e0a36f8a277b218e10ba9f9eb8dc64a686c1a3268b213746e97388111795273456bea05fd0fb0dbca6a65e12274f784a67f9c19080cd78a1f1c9eccdfa4b4f6c3c3ad1c865cdaf151b6379bee620fbe4b27d82d8b2830f024ea69614120121b3161d1fee93cd16e83532dd0a3dde7e4960e678837871ca5916bdd58b518e87f88095f5607aa013ba00a979c33d170b7ae20751262c56135657a7b95ad2c5cf01082f6c060ce614fa9f237e17dc2645ac631bdd5548f1a00e0262c1ee5bf63d4fa7f9e675d690839adcead022b3001f22e9c139ddeb8a7c347507d589b9ca2a55909b0f7a5c515dfdc37c6a5b818aa084565b396c17d806a8a544f4fe8b2624ab49314ad75ef319707e049a07402a39f8b2c66501b8a559b8a13ca94562d88ba5b2c8a42218f7f21ad1865e398b86f462d6a83b087c4b1637e319cdace73cd5683825e8dffd4007a47f874607341a21e234e529f4fe0c2f37123bba9e873b42e396950bd67e365672eb8768d62ae4ff9f7f319bb24a8446480aafe62831b1822b49e7f74d80c2432d6d9bc5f7b1004408aafa056a39767a7924e313e58254714055e199c38217cfbda43732c95aa3bea7e07fcc1db079bb481fcccccb170fdec54ebedd37464b4eff67795a164b97a98bac117235524e3837f68f272d5cdbee44a6b31c4021a68d1e6156087067fe146154cb72ed59a6b6d5e04c803ca7e56c046e3bcc33e02265ef19aabe17e8fdfea8222b58ca89d3d9d8c531560a1121cb314090eccede3861663dc5ca557e8751a2c030dd5f8bb4b0285203984f7fc9ff91990dd2739e9da74b8913f6275e80c995ecbc90063de4fa786fe85e28a188a832f7c77dea38dc08c6badc3b813a92ff12b0c38a7892ba49ef0d1b46fd2e40bf2c0909d1601e24a2f260c08383f5b717b1127bf84c0090712b4ee1c0d3b8ee76e6d717a5efd6dd0a4255ced5df9d8e22607162f17ad4b484376e7c086846aea314f7f9acfb28665733f3e8c532dc41bb0aff6fe43691f7787ea818b676f19b0baf3716eadb925d7208140c219421f548894354c0f6b7fea201604bf8750547900bc0602d53cf1837586d6ac873346c0714be78e3c784f4dd16819564707bfa114996577145d1bca44d056bb18b303e7dbce20acdfc4e30cae196e36f3e0f8d9422349fbb6574662f71d83289f76747bdcc4d73985cf05d315fcd532a83ab60da0d3ebc5eb62c0648122ed2f2bf54770a556eed3fcc26d4aa6d69af05fd2182f239a32ac9843d252c79e42c75e2722e82b23d04ae40f1d115310da0180d236bd79cd44a5d68a7cc8c79919395558a1e130a0a4fa7c4a268838cfa965c708628a0c3462449fc293b15a5a35ad38aa2936dbaa23c1020879ab341121f66d9ac2c6d8d0154898d67b9a1ad70c12ab700c528d698d3a090ac6518fc8cc1aff37fa3b0973ac06020d3b1a9e3a16c91d6c6a23152a556d37b9cd896bf058b91baea06fdfc62840c8860136035b0deb3441a30fbbb18052ebb594288174e6dd97229f6a26229abcc7839a00a9efecc340960c5dd16ed1fd740435852d4f30a5d7d1205d6d840b17454cae12d4e7963bf4e57a6ba132f1867bf84b7c9ba49377efd84e3b97d3051df7df67327246d22622048bb99c3696b6a3423a688b2f9ecc1417606e66d67884c35c4177b545fca230be942cff9281dc2246d5084c6a816a45ce1e81e16c388010bb66cc08b0be9890dc71183093e3eda4082c93964d468c192107081dee468d3b4206e49f5fc39f33fb4d0c275289d265b11933d9edd4707ecc86629e2ca701cca52329851255e8805c340ae8f0ae1fde132b025a00b394a4026d80d897f9d5132887a018220b952a6c57fcc2bfbb008dcfd0ce6f9822ccd45a1e455f82bc76d4ed2b602c18335f95329bd4fd6681570ba0c3e3964cfeddf13a5b37c8405363c29e11c2c77740e7238d19f8cae9b8c15a0833565ddf7705e1ab199d49edb1846549594122f93baf21aa0028ba3ed611124518d7806ca952ba30110f4473e20216ce77e6a02d2bd4e4431a4ea344cee94f860793099add2e07396cb139c4f74ee2531a0eff44a8e9e6fa11342d7aef00019ed040bb258e6abf01ce5fdf3542ba8186745bb7826ca329f618fd420cebcfaae1e805fdbf1fe61f3694eaf140d73c8293c49ca59ffd72d949a787a8d8482cbc227a592b6d09d2dc65552f675abc84b1f434fd3149604d38e7f1fc8be4fec54ed62e29f2995811def5bab2a494b2a88f82e615e127031374808aec8ef66db8b59ee78c048d84ef99f23793a7d53795f75cfc39792d984a1b9c16bef504f4534f70ea68a0ca40c5ae00242e1eab5904860ce3d100b881b2ce2902ea86b80c5a31a10cd13fdb324d6ba0ac08a4c066bfada2a8104c62216ce3b872a2128cff8b11fa1831d58f0cfc91b1d73d20352a9fefb0e5930f9e26ce3c9cfd971e6f5546d0ece8e59f0c534d9cc130bf398b6fc9041863fe9d4dae931e8fbf64089860f59f3e3c44c22e93c3466c7c8f86c5d51499a910b907b006f73cd6d86ec75e2a0c7959a1b01bb1bf5a2363df59b1ceabbdc5e42959ee34ca4e3aaea0d2dc65ced79571e320489fabdfd90b1a6f3aa10cecb44ebd3f2d2207a1cf2ac119fc74f542495307194dd2985e4934a97a6220f425b7bfd70ee4ec09668489ebdf5d7f1b174e86d53ab0176fc1155a3c8aa08b95137bfbc86fb5a320b614bf8008a7a649f474bf110474b32bdfbe98edaa40807c4c27ab1781e32f94cb8dd98dd73c2d919778f15ec4ff3037191fe429b1bfe2e2488bdd964008949949f194e6e0453d9bfa73efecbf7d3066695776cea53d5e4c3552a72130c07ffe87823d173810ed5c6245ac8d755ac4ab8c62b4d37147983a3a790e797eb1dc4e2b74b71ee5196405ab81800785fa88237a25b9f75f9ad883ddacca3969d486b17ff5c243093affca41ce8cb33b6df090c47c587b40accd6fff268cff043a56c72d21e0a2b72ebab0f6fe337ce6ccb974ab81ca0af0993de96e846dbf945b3d1550cdc0ec7ee1113e89ed3e468b25b15996b1b9090eaa0dc8b19bdefdb437cad1ddd2f5b75e155fe828f7dac3f2cdaa293f2eb81b2aa131eb8bafbf07e30d7cf47311d3de6f66ba015779a8e663a7001bc5e8bf60bd1ff31d40e971eb9fc17043b9200b359dafdd62c34cf43b40307ca74b9ded08e742def838b880c0fca51269b72f59cdcc8c086e733c577e9e85d927876558d54654b8946136af2b7ccc062d622d99d0999389f699a2d8ea39e55f8db9280da8edd766741572372752da99ce4c7117949fb8302e896cec2bd120cbe037fda6a7ecd1560af87e7108766fb0cc609d3e390d6ad0fb118ccc08f8bfb342ab6cb95401d0dac1f735fccd0c70195d5d69f3584fd4b9b11f45ab8929a519ad57149f7a1b5d27826d2b6c2f241e0d971f774a0a6b019994dc40740d1a7b15e43b2b7f1b8d9fe9489c7434fca8e07c20d41c66d42e8e91d2001f397c80e407613acb6906229949bd1ff74674be15cbf1e3138e63127ed506c96993b273d1b94d292ade8ee0ea63e5379392773d203681508cc8ff17d8b9a609618fcbd3f366b607a3e2168187409f8b2c27e09ddd331e4a917241560ddc571cf97a4e5b2938f41d2be9daa541be7c7dc330248ff0c1fbabed2a36443caa71ff1fc39e01cfb7f9bfd8a719849fad051842053fe3bfb5e5e0ec701ec993457a3aa59b27b30f06487c1b3008af25d1339424b4210e9fb436f44931a3cd9bc32a27d6f1e7ee9cdbea06c69dd58443971a4b9f3b05ff8cabc1f9b36fa15880719dccd0c60aeebec0e4eff91460c2fba4691dbff27b52dcbe7a6cab2396fdff55593bedc63f6c1ac9b0d6046fd940d431d5c784ca2700f03f1da80095192085b166b228d5f88c88cb467b767cb408f3a0b661d090460f339d43d05f5bc2eafcb83cc5c40f3fee2d56f9c1fd4e75d7e8d2f96cb5b8fc67d707ca7212e4d96195db2e148304db8ec988d1bbffe15cc6f5a080c4afabc95d4a97d6e023ba35d5c2243942fae734a0f791bb3e8a1d58eb165f853b6d330b8adb00fe70c48042a8ff017a6de78d830e97db1e9281e4bc512c2f97e42b15faaf4cdec76d99e57ac80e86d99203ba7d3a577b19f002f9f27fd4b71eae8617063ef7778546f306ca5e4a63b96a67feffa61fbcea3b2afd924c656938751c11bc6cf31cb855a317ba690e1e543c49d96692494315e7c71b843aef54eff8c3b4689a5eb9dab5aec29fe39fc8771968c818cb5147bab33a6fdc770fbbec5f29116e7eafefdcec33a36576d376f50c824bc7449a654cafd08060992b644ea7abd18ca9844396a5e4fa544ce0875aba5404475f7da6a76937ac1260c02ca39796ed8616597f6d1786cb0749dc3c9326a2d1a261e1552e6a113654fe57020f9b4f4d11d3b0f8f5e9a2ed6152c62a4660e09bade93f123f254d2aacd0051ea570f635a8dd7a4033e852e7ef9c1011d842b072eb36493e4411500703a27831cbe29aa8725916799f3da560aa72ba2cd6f8f1d27578b3c33c94d977ba55f4180162ba3cebe3d1e27da99953134fca86f51624b12e0bb5e5519a6c86887c0d51acfa52607c8a52d5813d5ad3bb66a181a1af7d94c82e1734162b054a0e5556f8be208882c9f7e733e3446807a847c52a4872485d28d71bc6198fe25feb5af435ba23647256c599ac3af6e3d6c471887ab25a00d51960b8d480985e2f3edd9a2b6f8a48bf07b3a4e1add3b46277bada943cd04885190e9ff308da4d0e2c17376e6d446f5d87824f00d511acfa65cb7979500b47ad44b28cad3e72d9897b43f4afc89afa7c0b8c95c75e7bb0fcbcb99ea8f83ee6a10585e0daf7be781b375e49a988322ef3bf64b1f17b3b40eb49a2ca20c868f0e5835a151cf9ea7e1f8423cce18b0ac0d8dca0e309ac7e08aeaf6ba2d504dcf463948349b60d78f3761d03e3ec94e9a611de714ef1003db1c3e8385cdd70e2d158317f469e27eddb5ac248ef1c317f6bdeea68389fbebad620b279f13aabe799f1b3e2b27c9b2885fd9d4067cb6920bd2e60b9454dae24f216d8945a17cb6673e82eaec6aa0d791a0d02920acf8c8be51d61eb952ceb087fc0a55762a27a3cfa74e03514da0aebc40174b91b6afd1bef09e8911b3ecd7b7d02c608a8e37efe309ca0d3711776f6efed7854d431beef401a6654c8c2b426504f9bc06e2baa354036a6e879412043963ce462c1d68534c3df98ff73ddf775ece3b7dfcdfea68c8b860593d74e038d3e8640e84155f38edaddbeae3d851b2e58ed6f34c1e8d1970502979bb0657681fe4305fdc3fbdc034b1c2ce9ac68b31b0a55bc3c268620b0a5b487176492ba0469fcade4603eaca78e90e0f8dae64a538ed5a850017158f7e74c0cd63b1f9f4b4f5c472607e44bfe3e9c323afc53c72fb53d17567f9292f185cb5f8ef81467566ebf5dbadff6fbf8031d51a12c4b781d8c0ce4a98c350a9eab2078a7845bfa052e4d8900414090c0510d3e71f2ca0bc754578e502b9f02a53cb63221c273043610e4a95089fe15b725fdb22b3691581c8fe7a4b38c9d93901eb521f8a5fe22053f0f74f562e0f348eae404da3870c5207e4ecb34f90c2eacd10abb23111de07bd475cd3725a4cf894d6ae1c3435db1b2ac30fc950a53c30adc73734eee45976c9f2f9656f62b7789e07745f7c8b21236ee2f0f664304195565a24a40447ca5ef042a09b4a861d15176329b6b3b0b588534a5cbec3b1eb1b0b5d9a9a9ec280bdfd36639d62e992332a9dd2397e5863ba0dfd65e655527e4679221d5922a4c785d6591cbd6b7fe39a6645364ae778a95d0cbe5e5ceb98539816332a81f777011f6db2feb114feec3762402468e34f210e817c6b8f061214e4a7188acbe9f4ddff3a181b7815ddd0e8732630f9b974a285ee8b93d99a5dce03f43405c2ec5cce6385ba17105a792ae94987c4d56bf16aee447321bb14849f9f128e21e44ae485e4b94aeb2120aef949cac4238f790863a2088485b670b85e61eaed9ced35a972a0f0e640d76334561a055184c7adbd5035f55585309f7b493fb503c37c238cc956068fccd5c678daad4e0be77856b3445fc3c0e4ec41a4027e46f7065897c2b7135370e6639845537fdb985257fc287f0ad80e0ad96e1e808cbbf8a05b13f63a7f38fb1c1c11722f92c74a13523c5c74d07c3fff0c38b606ad38cb06dd3511606b00672cc81efb63cd417978ad465b7b8fb85adbec4fce07ff20189aa478aad6a3f9dca0a11289ad8185dc50ee64f1c35e3638b68acbd8e87f9ad11b7ca94e9b3f463624bf7130ea28fa094e32910c98f77d77262428893dc1a0d7213f0043726b3987bce5d90606cbbd0478a3881977eac0da4857ee4e072282653eda137dc3ac13b28b37f19a200cfd3af5b50c0207628181070c1c7e20f37d392d332a80745602eb8d86fd9660cd290ceb14dbb9c12d779855d438129e7008e80a0b7886038f0a0f15a9501ede59ab7a7961230099167983dfc833c71528f9593d0ba7423fdb0c19a68c4bb8398d622904324159429e03653c75903edb0a019092d045a949b9b9c6c7f76c311de03b05ce5ae9b2527c86023751b8bec1571d0b5774494f187f34baeb88c29fb9d9227a107944f9d2012f86812765367ad94bbaf0a77a80c7053924feb1a29417e98bc6dc4dc6e8c08927b8ae69a1f1128c73b48f4dda94368b693a4ee7c810edb9e1ffba8d4fec37d84128d75d4424eca2f6feabb8500d7d61ceed8f6779184ad7ed5c404001c14ac950ba88d8c0e8503d9d84243075e26af8fe9f7c467111d562a2436688bf5276fcf2322e2ddbc6a3b53afb91c0e04f3d3ef717553a074260e38200b6c91241077773c8a3a14a1db5f95b06a954474f0f916690ddcee2169549a27642710043160822c39162f7d0084ccfd0197a632aecfddde70e1facf482b42390ce7bdebdbf68ed18cb2e4d16b7f8ee84569ffc8ebea687a1395d143d9dc966691267ef43a3960eeb7a06e835a3f4c45e34c765f25ad72150a902d0ef71baa4fb64ef67723974f4f7ae203a10bec375b4fb856d0a703e51fbd51bd869337461dc0b7f9c0399360e52c0aab57286833a96c13de84528540632c6eda3eabf61fa060f753c4428e988bd4cc25a6422f152925495cc7ecbb8fceaf09e61217ac53be5e2ed8d621c1dc6d5bfe83428c1898dcca2d54649a02e52c0218da7b1ec04789d93d4fcd8743df18c551c7e36e402959db08159484da9acba838ea00a831cca33f78c5a3b3f7380f97b00ca228c1ee87d32f0a1b2b2bc1d604c52a33d27a3fe506d086c59195c780ab0e579a6261b4e6960bc91a9019924b6562011a01d2321bf9ea43dbd3786cdb831e362ec36e610c9f482b5f4b1688a33f6345364500469abfb51cfa6e431eafdf4909a870e85f340e9f13d535fd99a17c43826b18c89cfbc1ba3835a38b82b5c4c11620b2ecb99434865362503d92a6fc62ab132a1d261e53ad9f2b9a368d7040d737f18c693075d34f934c1f3e3418dbca2c87b380c0be3b602e50b2e5a1c3f5d98825ab1451cfa61be6946f38d57c1103530e6838a3366f9fc64b362ac9c56bb48454cd9ed189217f1e517a6bfdf87b7bfa77d4feeda78451ce754c2bd319936f837f86268c57cb5cb6a8595b5d780ad991b1390992a5915c9d5818a9b2cbe2d3fcc4d57b4e6d33f89ebc392424bca74fb66c2fb05de758fc91d9d3f37ee58b280d376c6362c0e2cf138d8a714650588fb2d91a9d956c455b9e8b8105362567c849c10b89783011ebaf2d2a8b12b3ac67185f52005469b244ab8a835630133be2a7208f2d56347d2d6309b9c105ef9de2e108dc79c5b1075c80e0959ec4a496debb55240d93dcf4952d23a13a8b10601d87b0b0910679b30f067325e1119e184e28974725e90f60e82b8d34d9bf83ea5d428063e65383d307fa7c9d24279a96194e2997b389a70d9f0fe29e8e2632855ea14e1f34934cc59c1f04e50aadbe712e5edc0b6224ca0d384fc623ea37dc245fc95a895677d7afb544ae4c9ec9be246cc92e3d56b23c2d2a7fc90dd10728d884ea42cb2a22638300a11f9812fe63137741b9e1e0a9dc77a283ad0596c7240e18804a6586a360a71afac7b2d9199f23e3d80429a5d8cfeac23a7f9e5a162c00da7b668c01829b1071ed18ecfd223746a60cb455482bd0de6b04a2af74c1288ad3cf951c28bcb7cb609e56d7217f5d1040af8cdabd19d9e37ba5e358eb30fc6187fd7ffe5cb70d758c8efbd1687c72a41e151fdbe94ba006e854ac64d13aecdb88b065b28251e82b1056402ff101ee8c9436a0ba0aa1af185ba1e5e684c20cf46b8c0240bd130c6baa5a6ebd8747efcbec30e55579679e88dd131ec364262f23d4d600b5616c70f0046da49be9571c3021d76d79d0e54a25a80383da431e5733dc5b0096c18748bd54b891b374def3ee00e247cb145b5635ab12c7c7e706de71f734be641ca6b0ea87302b6aad5e118031eb32a68dc7fa5ebd309b653ebb8c202cb35d456161d9a3a7b22607bf55b8271ab77b8b23fd3f796519036e0a1a0aad2a8e0a48a9298ec4b687d509d3fad925548cc718653eabac2a03fb3975afd74adc1d273aeba917ffcfe5561aa0881c2df7f346cc816cf5588ad5c3a9a2d4988d279b5429eb063b0b5a9fcf72bd4f4734d3ab3763ba0e93df69377b2fd4c3738caf7f1341cb7b97a50398efe1f93dadeda764aba652a4485df599cc963a76fd2e61d16c5114e757ddc3036e9abab19e79fcd45344abf68c019f9ff9798ee8c5003581f7e649ea8dc0755dc51aef1046f64bc1edecda52eb8bfd20dacc2fb20c21d9063ab234c25e59801794206eb71dc985547bdf29e0cbc3e2cfabe2ba393f97606dbe7391377f658aa2a52b1102fddd024a4b37d0c320af64bca58491b2634ec42629ed2f468822711c96219ef667af6de40f1df89ba0e32563b9bf1212d8c6b5009f2418da8eeed13029b54dd2303c21c79b3fdcfae4993b6b4a23014393d69a19152136fd88944ae33b581252473c33f1247021f777790aba19bc978fd8ca7c7faaac046c26b3950ca7e4c4ae3d843a45080d0323c03b82b34e278578c4a906197910e561497af216f7470811a15ab52a6fe7dd625bcd83148c3c6d33fbdd1c15dc4675f3904dc97055ec373f52149c182ae30ed19e7ff3b7898a5d148b2b7563266397b006be0e03c3d20f275c5d85d9dd07825a44915db5f3486908e811516bad14aee31bd96463259fb75b80e7df5999dfac8e41409fd1e632415ce59ba435745e6eaac11250169c1d12dedba9cb9a03eebacbbbe62a655d512b829661f73e4b3af493e29a41b95350cd08202a3b590db491bd054c0968bf5bf08a0fb266845abcb356088a876c9ab3a47c4e221161a26b5d775080f660162cbc60553039d9b77b25e0f548d25034828c17acceba0dbad761572784ecf1d08c7ef39ff339e2180bab79f562f2d1d1b3c4b7993aa1fc1d55f3976cc4a1ce47038e8bb987c5112db9d2fdc9124c3a74c95e44050166ddd07abe2344dd0ba738be2971f67b233ad9876a624b349f3799eb1566ff36ec138127a3429b5db0197166b4775873a479ad050f8983bbf5f9dd77d3b08bbbcae246fe2a0907c48ec3d5c58063bb032c43c225d7302745b2143d69f8d58b7e0171f9b42794f3afbdb1f2464125a3b5072a7cdb8e3582fe1e7e1eefb2e592af9be5d17103ecb8c54214b33138c7a3240ec8f48c0651633d7a297972f46fc3fe6d7e914e9bccff2aa49949daefdaeff933d362c544ba54875784db814097ebc302c02b2c85c040938fe49654b72ada725f65c620bfda1e95437d9cc317d68d6ad83738ab3916acdc71f5030f3ae872709fcfb125ab06bc820b5a5158e4a6ce849a1294d1bcd3195ccf0211cf88a0043464d48bb561be558dd1161a9941a9eaf5e38ece82dd4d6720e523035ce004d7680792dbe9c1201cf5bc99dd498fba711f2bd5b0cd57bd8b95d0c670d61ca3ed341b647dd9efa85683817fb5fb3f75ae27bcba09573a083ca0a225844a855676b515233abef9a50efabb0a6648d82948fa701304e6a429a808b193b9807c20836c17e1643b760b3127f493f3064100fc65901d70efea8fcba644eb7b366b0b921233d04dc51a0df3f9846ce22c1eee0d5211856781af2c2b0e8e1e92580e5e1f79045feeff6f7ed6c1956254b2d99f5728acc14d790d951f161bfbc4456fadeb0586021c63995a4ad7115c31724cc1494249c9823aa366288623163e452ed245ae23e36688c55b4c17b03859a848cf2b1130cfed6ea527b154bd5aa60e5b535ed70e833c8d118117d47cefde5bc94a2ae08fdbb5e503c816b5c8aaab87814d5630ee8b6f04697b1579e132ee55b39860b7ffe4149f735bad6b2c855b036b04f3d5d8f39bc2e124f80781f2428feca869bc06c67a9b5133dcac745b7d864ce09ed38f7710df7b504ab09be16724c5620801bc3db9038b514b51a9263103c9d34ab68476f7cb76c7ec01d5b7748fd2a36597f0b387f0295ed1fb9a5ae9d9de3f06d5d5219ea60482887f7c17f2183fb10680ad514e1a081154f6655ee6be7992cb10938326f4b4383d8a804d8965c5236a9de92ebab68f7a968fe1ec98be4da8538c6b4e67a125dce835a9696a684a0f44a6f55b35cb45b249d06477528f73a235ca12947405390ecd6b6cb006d8284799d7885cd7dee677f4493c1a93e2a3b708307a93c2329b7d85188dc1b04e10db40d1e907a6659e0b425870309dcb6e29823f7ea10becf327d1ad1a99de14deb0a236e3975f9d5b7e1990a8e5df1603504e3efdaae8cdedef34eee8eb6e0787a1370cbcc34e06e4fb70b4df1bc76f7581ba4f107f35cdf53afee44cb2f278d4d60a35836bb9ec7ff232f1266cd3d884c4826d93d8326f180d3afb422d7611ff1812a5a1abc86d2392fed3f53ad831d3e0ef3fcc969654de3e007952fc76e528c2af1dfc00e97b82af775a1cd55da92d3e93d2d1fa029db8e39b83c05c3b1b1ab451028dad793ccfd654747d5ce450ad610500828e5be23cddedc2c38e1572901f0ad8390bc6eefcc87115d6a6dff0c5170a0fca05d116f514b18301a410c87221ae9871e2d6246b0f362b708fcbd73967ece8b8512d568069444b2c1f470cff314785a6875b72927249300a1ad97b6f9013bb71e31ea532cd4760964e2c7e7370518268226039ef7729dad76cd1f8b76a3b36a2769379353b2606b613166a75add39027197cd6d02986abe2dd94c667085eaf9a3774014d20349e1a899f4d04022d073c9af8aa9e0a6432bbfc57bd91404fe079c32bc8e1d019c1aeb6a3f4b208acf3d57a193fd828723579d2d55996322add32537b8fb93d8074789929f1c374b3794fa4e753c9760d98656605ea226a9dfa8592cd96590c7ba7a4cad270ce441425ef0441edf61c1486055d28cc4be08a498c8ca696c45bec0b9e00257f8d01b9d1a080da9080f098316fb3e19c556b28ca65de0d89e036aa555285a000f8f7e1badcb0f6d276c6742b8cc41bd301c8ba73c0a40e026541af37d74493339740f51cbb3ec2e6390af1c5ec4bfb8187bc417bfca1b0ad210a9948bb5e8ad8a227aec37fe92220527d76972e5d9e091874a686c4e8894c0cf1ddcba1f4e75dee10d8d2f13fa8feeb4a72b38fd273ee2f984d53df2cb49b2ea484a2a6cb3858936050d455cc09f7dc8fe55c5dacb52df312d5bf17f7389c2d3d984fcdc50d759e08ec2c4ad55883d0e4ac97c2d13ffad9e0613dcfd3e711630ebb010e138a9737dd0bc8907988f5d80191bc73be15f9d38eb8914f78355d47b0019170a5b2646b84edaa4b0539a33cacf8b51a987c24ed439727d41a8bc18f4f505270892cb7d51de152d48acee5688e2019db45d4e41fc5bf3ab59e25187198448b293cdb3752456fd1f178c16edc7a1e288a9e5ada1d6ba48c07a2ce04ecb7c4795246f403f0040202b829974441e2013103bae2a3a06699ab850364102cd906e1ee4615a0382898798fed5c2a1016a74de987350b0ab24b91a56af63db6e11a2e4a3af24eee1343d5dda1a070a9643c06b31403875a7d91e3a205274c4ba5607eac99dd3745ca0b36d01d8be012e4554994a6c5f3d9504cc6f61f372b94ab6dcddd3123bf719c0c1574df9712e959910b0bbfa33def49c591fa0bd19fcad74d19f18c43dfd018781b6153e520f5468017d47a8d4a52701b6e95eb9cb1ab6f44ef4b1a7cab3e87c014fedbcf2028005c00e4cb16ee89a7cab8cdf02059543425d839888bc6911569e15c4b5b0804998fa0fb1f6f4674df93ac35e37f6e10dad4dc07dd48473af094a804186af151cddf95d986d57eefb3df20320d650e2d96e8e375a2c14cefb3eadce0a5b10bc722f5e57bf30951692b51ee1fe20911ff014451282019e0cebc1b394448f63010b68db7c29b038dfdd083a65a21c15ebbf4619624a07aeb36c1cd61829931458e868ddc9b85f08aa5161aa16d80ad25050b8e38e8590b54732c98c54f1dfabce65319f4101de9314be52d61bd5bc7f1f48db8e2beb451cc5cb6343127e88eaeddf53b7f5f284b1c6d2da446a399f1e3e86db1463652ca15c973c1ed38f17390e10f50aa86f5fb6cd78a809f31a656eabeccfc107bd6f68102eaecc34e1fbfd49bd13714263c4394549bc6f294e763bfc5078dafc2781e76ec136484daa2488909c24053cbc4ff273b417a5cc6bec5fed63e0f996ae453d5c51eccd30e9449eacd7720f60f2822ee49b63de9a657f8521307b8bf060730ec40f4a6c32157c88168becf462bdf2258a4d92e1f66a0e1e054a74efc9f6f5a1e9c7bcbb76c93ecbaeb35755421343777078e8019e28bb55855d1187426024e113e5757160cf913a856dc223f9add6133fcef710eb2119f69ad6bc6de72c015ebefbbdf22f0bd9015b32f4e5ab4b0487bcdf7004418f4ee31c68d5d529c0e131486b07cb35eb11e858692cb1be81635b5a6e7e97255b7e7ec2210b0d0dee9e039d621fb11ce5c8fbc139a225153ed7e49fb3953ac7f852bee696d892c4927e6b75e1a85ce12e70de836969f933e5a020a8b755299be8404d83032fe6165932cf57f59abf0455e17ae87bc4a7a26bc1a2a19101fc4965daa465860829cafb345a9c5a4ec86570dd4c92d2cb7f781e2b9f650c37bbff847ac3cef06233d642dcc68c8e095b71572a3e550341f177dd279c52e1022ef0e4578a50eb9f2dc510d5b010aa7121c92157eb9a04207a1d2cab7df9d680b32d5d05e8a1ac4626d25fd8375251ff25953c1836f92dceb274b88b0b94f409c4524ba371dc55f57d10562ac0085777563eecf02c1c2f29be2ee364aa900e460c1996d40f4ef4f9e5835a5f929525cafee3fcce46b80cbf3dbe758ea3d10ddd769d69272babbfc0cb23a293434b4a4813b52198aebe167dab60a1e9766a3a9b1e2bf4e10275e36ddc847b0d03d4052cacfcbe0a68d09747e15fc284b8171cbc518288bfa3d4bf69c2bec44a0d6fb97f38c531f4ee4aaa3743420981503904ea1ef4d1f31461bf3cfa42534b0a4921055f96d127d94075eb6bd0c66e3c0d80013a02e34f72d237f20dd7c8a38df386c9413e628e67e407c296b470c965ed8cf18f67b8e706a247b9259cd66a9f6c408c12b39d1a05b7d654195a74db9acf33a04de53969224b2b2f61bd8815f11e5a6319a25f5e57b8e7e3c03f5dbe2c9cefd64527038eb432dd1370432d93ec87491a2ec5d4906a10e01cb22c3de661ab2a88a15e599c01ef23205cbe5b93021723266a280cef8bd10fce7145b30a702f9b09e7f63471cf64f31aa9b2b0b0dc665f2a6b9661b65a0fcb17205cea6c28392394082b3a175afae72ce981bc723ee088c56dc3e7af43058915770cd0ba0f5643127f43ee8af142299a3dbe10fe49e6be8ad1077e204a351230e031fbfb29719589faf5fda74cdf785a7bd780eef373a40c24e5b34c2f87cd91f3320dcdea1fe00a52203f6042741cc0e4e28ecb8a12ee1f0330b3ba642e7f355391aa478444f9801323a5572604a391d04abd7b622c1ababfc1065e5f0c5cd2444a222aa4bc1c4883cc7c02f8d78119721f46a673aa692722abd1b54e956b07a47fa4a8e6dd0348d476e26c3e9a9e2c691deda5fcc20dc91b7186ab988ed68d0389944e342024270b0d08340e0f3cf5d482cad3266fbb611ac9351dd164883ab704f8bb5f524c408fd1d20e2ad6ec9f09fde4af2c29acdd1f428cee7b282505d67a278d6f3c126f13de00bf9e5598dfd239d02084adddcc1ade400101411786fdd478d046682f26da92eca1c61e5b134a247c64d5da99396564ebb3bc02ac0925be4cbac3522b3c0928c3501ca3ca49632cb8592ea91cfef1952677af0b56ad914650626bd9463b1c9e4e167c397dc49e45afad1b551b45275a7a3555dd5a3d9c127edf6339f8a9f6aed0ac724275660651f619981f68f875acfe39b00fbdd5cefe18f2d8207a5fb98ccc1186c7ba316a845266323a3a5902ff6524f7c348499ad66b6ad3c43c27c6f8fff8c867376e25370a3b71d9c3fe922beb60d92dd8a474cc7119b35c3fb176d68cc3dce3026142eaa8a5699ed53a87a12338e9461851251f82460eace7cb3b77d8404065dc3402626363df7546bb902106505d98834d785f9c1b460641088e148e37c419877a7cfdf3735cb4ec67e5a590863bcfead0a0581387587420961b5d630963ba93390dd8d7d149cd2c2abde2d94e5dfa039fbf7905321a1692a94625751de08774d37c5fcae029cdf877c54c547973ccd22cad3d0f4aa1efa10df978819be57c2e866b67a8cc6037015748326f2f385bbc557ddfcf9a130db93d178cfd4218147f6a61c1351de6c4ee80849540f3c40dd5cf3300abc8123efde26216c109ca3df62441c135048910791a68f5587668ac97311210518237adb55318fa5aeb9211278051d4c1d8daa45eeee93a28f42f809d62227112da6abf947ac383c9266fde7bcdb6e4ad567b0b17ec0d4b7d8cf2d50d7df10a6273a24af70bce362e84ffaaec2eb7e50393565446ea81765e2c37d440ec15d380f2bf762163271a57009362cc3ee42a88dc931398e710a58e921786746b5623df733c6c17238d21dfa2aec764a7839edbe2323cf44b211746c442258553ff31eb481441efcc5aa5c493708b27b220da4708b9ff5255d283f813f4e8239063885703f691f10906cccb9ad0ee86c9fee1d211f4658eee0a63d9b945466bbd2318472dbf2180a2fd9c5f7d349ceef208124ebb59bcd7cb7555dff56c73f6defa45a066a9bbc4d5b2053944ff29056cb71a4e1fc0019c4302128e0df9d31fa1769a37a35917a295559ff650931e89c2578bd348e0b6a17becafd1db346a7b9f4b816d7be684c75108c91ab02491c1426acc18e325a9d1a00054c9ff6d7d00b38426eef1df991bf17bb39f9f0012cce7be54aa238a07c924cee20ba3db242399f2cf7051ceecc86863f95c06d65504ea0ba38f390945ee1ef8634f3bfc82c561ecaa16ac7fd7fa092e39602a1610c3ca76b96d1541e2415812813f053990b4d054c293183c9c0df734eafd9c5fcdf31f663b85905530cb5aaa30c7c47e057edf2b1b2f3f8eccd5ed27020de890b4f9b9adb39dcf68e3d909838c6bdb6bdab9fa8ba12dfe4a123cb5e1ef9be300546fc6e7de90671ccb29f27e93d33581ae425da73ff8f0c4e9a7f888a0a3aa0da3a77d0af66a961c38013ddb7b461e668d3afd1ffa6e445fc3dee32658112871dedbddc780c1d73763fcdd9c3b60acfe83078b082db7712aa897f8cd726d2d7ab16edff28db98d7bc57072cccc83da7d573d362b09f0913231d4e541aaf28d7b4cc048d6e574976143a280e020720e01c7f7fa282f37bb576261d9e2e46f0312b0e194f5984dcb70a51b816385b342c0732962e92fb3966260211fef5338321621ada8e1a846fe5816eb7ab1ab335ef9fd4814d5bc6ae57afc1733a1a4efa2c6c9af2c1b2ff1340ec007be732d1daea978d4419ccabb045724d77f63235bef608050ca41ada26b6768f7b7fc8a722b95d43b06b9e822bac7cd3dbbbeef98cc16c09f556e0d6fcf507b34e1fa139c5838329ee98367d5d746dbe05d95c5eea1fcf34c7ce46c9188ee1be268608b136601f8b5a0d1d491d73352c3984f53aa27deb5c652a97566d8007780ebf56a3073564843b8aed3c03585b27acfdcb3c006cde088cac7bc052a3b11eb138149e79e10f2b344d1084f12e996b2e4777ade4f69ed92dee87546a81996879f6ab9ca645f098af23df5a5a82ff28c8e2414e3fa2ca73958146c4bef1e17421c7ab4ff7e4ac7578cc6a87bf08adc8647c8f91ae5a6482fdd30f0a7929d05e24a77ad84cd87474563221c97344010ed240eb42b662d3570980d0d5ab4b5a27563a79c46dc0380cd94c788f91fb3ff094ea804c19a500bf4642c6005fb583c4f8f2927948feb341160f8cf05a6a9a0d0b78f30bf14f43a72470f64da5b87d49959e7b16dcd74b48792a94ff819563822c6c48b1fd58d7e185379c45ffa298e1b6579127717f2e01d2e92cd7a32196f007d923dbe3e941e6765abc577a63781080a1d522da12c61a683c3981e30f7388047999532431950650143a10a9dc8472ffbf21ff712d554f285709f1d9ffef24a4d7c7172189e873e64e09b29f1f7059f3eaefe0698d778e4a0c94a68ceb46c79d1474e379356d95010f599014bc00b265140400427377b021084c491f37f1028b4f22f06cd92bbda9337313a69e271877a3939a194781e8eb1f9ba689afe94b9671725a87517940ec8f7a316225e8858f119e10b0eea1231b5cbfb2e33318956baea14241c327b07006b9d8325d66ed54ad6d28636722a6a41a6091222e282c7b44a04331b2f26e733f5f14274f209f015982ee72e9aa985240314e8c5b3affbd5b81fac031b8945038e19ad6dbba4777acd580e118ece6f5b47d4936bdda03c81e85537d94a76a6588a3122af01291cc4185a17de71decfe65186909f15cfe051535315b1c7bdf04ce1bfa113a6a216522ba873bb37c8865459125756c58739a4aa187128c062478dab8ac3e34709f9f08ed920d49dc363002197ad761028a07a10eb95833991dcfe5e60f2f60ad221030bc2411906622785b76116ba9c8619f402e273d0f4d04bb9caf66d42f5a4003e02b216870b360d8f241659cb0c1da4aa710ff624c6ae7cd86bec0be817014449ea8b1a8e1ca16211cc8a451c5d4fd5492b2922ce861ec90cf82bf31a1f265d3497a037e043cef084b8c8a93e34d78611d08765856ff26c0937029d2428b50f58023c28e08bacaf21e919ee969def8b63ad8f3abd391e4886647215215ae589e9d4863f8efa1389dad544d9fc8a915730131f97aae8fec1e5a71a4531e28a6abe7668093cc7d318725c11a32bb37e11aeed73b60e2b7f85f77c0381fdeb705cc774817eac1502a7983b58158cf908db668121db597bf0abfcad1f3ddb3c9965060d3021e459bdfecf05f5cce871b3b3e05e84e82db00b6615a853c8faa4d68842bacf0f9d53d0eb8817a3dc90b3727de3a604f4bd06d5010d01f3ad03ef471a48d8a321b30e887f930d0745c0e117579e5c86753b0a63e22459eff756026f9a767844f7c1573274d36cdbf061c9018f37140287dff68e425968a679b53c03c330faf7be2181504f98ffd44c8ca633765f8b077c7f1a63328c8552ffdbed7b2444f391d0fff52578acda485779c20896bcd4ff3ec76192e12b8de5309bdc7676a47018294673b852b36b0c0c7bcac4d2ce9075097141d95d975125f4d7d5f2e9f90cb029ac51242af4b01ee174f4e18cbaf3a3590f488ff1dc1f87d078c01df76a324fdcfbaf03c032483e7028aedcff507b33dfa691614e9e194a32e8cd71a15571508dfa95dc32d420f8b4d760903299b5297212c8553b418c82fac38fb75520c3547a97098b206b322d5377be76873e899626fff0ce6bdb719167408a20e5cca95e355ec2f10ccc941901d3e7b5eb99e4eeebbd5480eaa72ce9c49266d3f1bf943eca875c22201182e227a812bf156db5cfb74920cb6b0f9719807bd9028918fad73c6dc9236d87b6045265f542c0d652079ca26c20b2c5c9292b6758acb419871cfcb3eb60cb36d8af4f77e57cb06c7c4fb1abd9774dea13f6adf36913eb057b11439df3d7af7bc1710eafc4936f5e1b20040dd9d16da138469bcc076e871d232804ea4f41631c40ae932269f3bb745657d8273c5a7478df19a8b9fbd9072569031f7da1c045601a89d6727a4d0305fad4e7b3b3277951799a988954232f4ff3f30d62ee770a8118deefbb672af0c227d75c69f9796086c1f2db6132469b5916d54c1821c6b3a40fcc26e15d82cfb168de69c2bcaf29ca52dea0a1322fa305368fe054be243949dd6b445a06fb6da2ccbef4758d63fe34ab7d19776ff0070791bb03faf91d8d00b8b224b1c080c5dcbfb274c2a854a13481666457fe301f7dbaf5b6979802fdd67d2281f4ca539503109b1f609c0d5e8d0b36b4a9c8148e967e04d054b0f577108d172a3dc11794c2604bb946a9e2e84119a6158e36d5f8106bc8e21e36f9f1bb762eb5b2eae9aa8001c6a9abfa047e8e33c7580949a25005e8d264cc40df3a23d9b2dc451101981526bb61492cb8c15637c2257dd7d03bccfc4ea5d3705fa2d58d197a6f440d94dd973ae2537ef2105802fff8f831ce194fcdd4b8749449b257891a2daf45d131d4267aa491d715d26afaba356bb4caa430e46e5168d3198e4f989d4c79af23bf79c9c3da946ba79e953395bea50213cbba4e0f0865c164334ec7d551bc96acd43b8b4a82510a8f37b555316deccc720c4499f847f5733fbe973b835717da73711699e19f345a99403f28eca24295cf07c6eb8dcb33cb66322d456a88164637269007eaa2670dbcb99060d5bc3f380c7bf507af6668b90863f8847b6f6065b2a670e265ce53084257ff3bc7af669ecf09e25bd350f8cb6b4b5279a3a48b2de269a41eb9dbe0e226ff126ac7768c14832aa74093b82c6730078e73ecb39dae9cb822b2e28e95ca6830ebad915b09c90293ef6c332ca6738e60772841f964beb72a67012c7e011e2674819e519675339aa9e4e5957e1689510bb35b03cb2ff7bd2340456bc1bd58cce2348bc98dc058f29c21716ac5805d2521bcdba21d0a1ade6cfca28addeb41b2477b05e8f53a8ccdc0088a895258094daa336e9dfcd1a97b74fea079ad14313ae09d40d2f2294fb9ae9c481ecf1227eef41860ba1dff4064627708b41390a1b135c51cbb995ffc791918d2b6e5789f08a9c9f6ae013686380047a2eaa85ed92c90f431c3eef1ef08e807fa420811e73537ebec85fedb0605be1f2e9819d1d9d8b2156ec13ae4ad969f259e669d18ac7ebd6ec3cd60c4ceb336bf9be1fe79dced0384786f26de42fcbff372c7dde45f4ceb27929c395f4015e5824b2401847e2c29a579688e3ef02dc81f01f1c1fff5071c3735669c5f983bf90e21b890eebf0f98670e5c8d6314f28c11fc435eb7e02f9df70e72f4ab50e1538b813565015e6c65bcd567989ee8317cbf629f356238550871d62ad7a76fe9d41280f32addda00a411cd2d0fbad2177e17032354a5360b024668c381604c54fecdffdf0510fcefbabb506151ce267f96aed79d83829fbbbfa72713362c2754d17eeb5928dd15f5c51be1307499060b7b178d25303006636760f5783757d0bbccb06a7b12f9ea34a1eb4be756abfcafabf6bcbf64ff22952fba29fbe31284fe2681375e4b9857e1583339fb947473ee3929be56f3e8fae27ae583bb6944b64e140e58a6be87c377c27a57c704b8121b4093d0e439f7573a07876ae07710fdb2d4e6257dd3321f00ad05e87bd1e1868b9219fbc362ceddaa055ae9835fd09c7f96753d8507d30f48150c0b311004f1c311078330c3d1e7ea859bb13699d070e2b256541e76b24a721761ca3f1806f5ee6a8a7e2d9146790c667cac46086db472f0f2614fe4e2e32b21d979552a1e8db67547ba24c90cb679701aa27c2dc088022bfb979b9961974468df735011e4b4186763cc0989d7b8be9e5f8a9d1d7bfce7157c9370a5419b73efda47dd92de1c636562a5d9ed1cd7af2098eb9a3b033752ac2150d9f85d0251e46055072ba774825aa42f83c52208b3ac8ef279c30c91f3482b0521ecbd37fa85dc3a81c890d27b5fe40fb80e086885b29323c89de39b93aa851204ad0d7460d533b043deabd984359200a859642fe45a464eccadee365c524ef2b22bfe007e534b828520b180b1bf9a122adeabe06a8fcdabcd1a016b1e81d5d43fff3efbdd14c7555a631ef3257ff352a133b9728420edb53e82218b538941d213a5a06c91728ddb255ab50fe18bc9e7a556322ecb746fa841974d83a0f0912743968f5d7bfc0fc35c22f381344f1802160a7868023b31cdd65b970dbb6b341b763857c21e84dbcf75e780461ec06a29683f4155043fa4a3fd1cd8c251d01be4b2c8fa0993a2a3e8e10dead6151354c86fe98ec2a03d2a7812f637329bb46d51b025e63d5f8889834438d7daa9a94f4288518349f6bb80e9303e7df911d4adb001dac8dc911ce5b78bf3bacb8fd7932035928018b5d24c0bda1d2937c98560047dc71fc946ac9c416cfa36d779f80b03eec3985ebb371973b28046f1bad502564cd2ce026cac288e24811bf34a8bf62598d75301448fd273b359c7047bee292f14a11e505f102316f152ce19e2e2abc735c0d712694b7edd57958dae7c3c10785389a1dca666a21d27cc01ac605666505a2c41d8cb0b2a26625853310cfefd3e0f76361d48d40f6124ad8ce4a123cff7013aa8821aa4847490fc0c845c6f683688aceed913e018ffb058bfd036c863af9c501986352af39c09d97c3368cdc6d1df12988e92fa7b2e80dd00da409d22260c52d1e4eda2442cf533e11ec7ecce2157ee3565f48d6eb2b9f91dbb6877286462e38a45e83f0a1544bf98a32219fab493a631d5bf2072edd941e710af11023d171133a7fc2a0aa4436db4a6a4018fea4c7f5361ddc13f45193bb98585b2c55e85f5f6176798eade3eaac7ff4ed671fd9090edb71708aeec150f59b161ae6e066b5e98b3d0399a00b21ec6293dea3981b3687edf8b9d1d66f983d3ad388b25014e973bf1cfb8c2461b54914ffcc8518ecf783ce09c96fa05f7af3995f0e2810a5cc3fb80a369a04b5cd050de2a9f54983282c07151a20982c0523bf387656f98860bc3fe1976a1175d035595622079330621a14842b708be8e8344a809abc137df6dc347fc185acc985b93bc433a43076af5473bbe125767b14ad868f773bf17168221c2d4ed162a9d69c2ea524ff5e860372b22d65da4f60c0f6ffc988d96c75c576ec23b5674f6c7b4876c07e815177f963d69f58b75c1df4ee7148e191e82512d43bb6ee5c75318aa1fd966dc5b18fcaf4c18b0bd034970abc2c033d8f826aae7307306b357421f41bd58cf6708ecdf17230b057a8bb0d2933b51a091fbfafc69c03b422b5d98cd36d5f77bc7196c7fd35525d248c31b5b4155232ca426d9fab35c09a99eaea138eb112d9c9dd8ae91aad8912ad92a0b6e15da3fe3734ace58f959130f82a279280da794daa13bd557dde8fa2d4ab4b3653c99577b389ea06073270ac6762596ce26eebc862bdd2e00975c1203ab9ad9d2ce2001c2c95e65f6fe302c298f817e57c36da01b301860287c802d7819635a9bd50185747acb2118ab86d2a9410ed7c3dfc92104853e4fe77b6665b37daffafa57dd025eeba48aede1647115a2337330d6880ddf59ed145ae3e1be7c3d50d5a8ad7342e670884ed029ad91d2a822b22832f3e8996712061ebbf1292f43bb98444bcc5d3fb08d58a10e03b8e21ecaf3b98c6328de701462729abe7f57931ed45c43580010e09bf90ed1f47a419b4e1148d19cf20fbfcf30653231e9098c34b58a5c5ad184e18ea8ffdcea1bd7a386e2454eec8b8c249d80899f094a4284cf0edc00737651c4cf8adaa1c1442b00d5ec20ee80e6d43f98e123d3b7bd728e84253c595bb9d7be3bdc5a4dad2de8c78160fa0907c7f3350b1c0611320db7adfcdd4a14b9ee7a046baf9fe48b6549c0a8e7874739df468e0e11959a0468afca34b833419c8dc2bcb55af4e62edcf373709605c177224c469691dfae2d462837424291539411ff14c4853746b091110ef74ea73dcc06b137dffe396b6c59e24f500f193e0545d4f418e7e727b547add43bb884a5cd8cbd076bc045188ee53a12f8f52d0f6ac21ad45b71d555e907df2b7a03a975fc81467f80caded33dd583f6140493b49d4a958d6e078a8841f630785c68c744742aa16f9ab1c69d094b80a91ffdd08407cc0965b43645cc84db38f19375e95ea320f44830e81bf9110d12c231f2a54371100c1ac66e0c302e13d647bf86972c64c1e48f58f22aaf8cd9b386ac8a31901b80fca782b8a099803cf96eb1b8aad993edb93529ae222911eb0029340840a74ac93bb111ab978b817d4c90449d808920a6e8560d5bcd5ff6abc270e94c3dbb4294caf0f8157fc2b134d58ba059568de17e3fea93bd8738c1d70725b653b4e35abe7547842b5902b83bbabeb0b06e504a697c819f4c07f61984e9ddd513a7125c766b7727200fcfa10fd3dc33c9a17c6bf213a02f770eaa122bb650d8f754bb501231550666ff2be8a98d59a14927dd6b404945e298f668bfe0b84e6c2045c0be9d1be73d2c4c99e20415a5099c8c35ab7ff73215f2dee57093c43cce21fbef5ddec22fa685bc041baf7c2efe0bb61642e89d8ce09bc3b8b026b74e249d4274b9c17f8a0e36f0f41ac1d87f7b783bf23c5179512b321100dcda737872b87829dfc9a39cf89ea28de92ccf001a11d508b4611e65cf3d4d017a4ca1073c8a4c2998d9481acef2b6533ac493a45c7ee6247c634d1d7f360cd5990b6def81afcc004ff91495aa68cc313ab05196d7f35eb76250e3e42a285b2fa54371651090b5967855a2ba036ef1ddfe559d58afa2aa46dfac50bd13895936d3a14d018bafadf618538e807181a821994cdec7d9a3120984ae59da5bb816c564477a4234ea52899a41a76f4ad97892d7da40944a2db519445f935fc296c50ac20805374ae0291d1730440803a74ef374bdb035e0eacb308c6e56a01932f1863cb469686f23e76ed86bd54dc2b721a749fe53671cd6aed6e6a1d5be7f21b30955fd6f1c04b40b3928bad7a81bddd273b06a32a117befacd768902cf3499d3b66d309eb3cddab0ec4c8fafd1b6ffeda3e8a9e1e57bd866ab5170994cd3d64c6a5c8b84054448f0557d19240bfa89df397494d89abcf51de9e8ef208d78169b1586ad885cd6ae644bb2f7e984089483536bfd6c922f59f225a4de2adc20f1a5e3235a3ca7816db6ac194f230ebc25cfc844ca2ab648a0b18d90b2843aa06bc94550f5c6c9426bfe85e9c6fd6f0230a2ba2b09ef15920fdd2293ee4b56d7ce707a0715a44cd15e84de7c4c3fa130d63187b09fee24565a3eba7ef06121f8b49783f73e2c817e07f9ecbbea5477a777ecc8a3e612f9597d4750e669311039e20df2eadcdf68ae490049fe47ed895257c680036736c99b12fb12164b32a973f5c9ff6cc84bd9059b2ccefdc2f059c2a2b1c9ce5990b865b45b19c0c97beabf7ed0462c8e2762df8c20aaf3da4c32f4edfa6a5eb0e0ec3d3590f61a0d977d871449abd1a8244f73d1ba41d5f5677929bf51aaf4736ff756604bac5de9b250d5716af3d1593c6a6a71a4cc50c593b36fa9d3e95ca39a02770bfdb4c393a44b17b3cba9440b769d4a913be44714e7fca16a11923a8db9ebb6f1ccda4f4bb3a4415ad76b409448b87ef85591442a8627fde54c7a068875c138a3946acb164ea8b8f132672f799536ec23359d998a6aa8c42084df82da1e3f6a999a47c10fc7ffbc8d836729fc9d9ab86012b8fe1f0b79d0995188c0e1edfb77ec47809735b0c953df18538f3397f3f91bde2194b81b1c20905c4024abcd7811a8dd8842116b6de2ad62ddb1612b58b559c6e885b19bbedaffe7ec8b8e1a3800bb78970e657f131265d7726bd66eb6ef6b71c403d8cf4e716b907e7f18875c7410f54588a52a48aa6e7dbd4a4e23f0814f3bdc5285813b5419510764ac7d5f193e77d897f56d30ba95430daed192f3ea4a4c9ee15f27e468f613d9907f1051fd071061e40a1222f393573da69a232c83e96775091615db6c84f3776ed6d9bdaf16bae2c58525afd77dd83b8080a28c53993e181157350febf9bef80cd985f5e64aab177134849dce2c7fc5df33ee7c136a4207b0286ad55d77aacc6725b5d2d9381da3f8e1706bf362c58a77a5d8eb02a0296240b7957ecdfba0be1e55cf6e903ea4aff54f11d00c5f71a87b5335274466573a0d507575cc6ec4315e93153d1e9a5cc6a629851585bc5dcd4c343edde6594f3cae7b41b17a9779b58b326a8f4538fa33238fffc59ec3d91737355f9cda998de46140deda399ea896177dddf182c6343ac0c6a636ee36a7e0cd315473a5063e502d09b55a038764e5fb958875f0a98642fdb5f93a2b4a435fccba8906587f41866269448d6e6b8649fc52cca644232b49c167fd2dc28dc1899e6e08888f3153da3edf1a9b58eeeeb932662ad3b2ee3dcf08cba2c2b731f3f8b78af2dce86e3fed7b8e1a120ec6d944b4a905bfb00d645a4ef1e115a6cb216b34991783c679f34315494037701c3def7e78fca94e9734030d437407f370e90e02e77f0531ad26780b4cf191be0b2d98df48d83cb6e3abaf7bc27035287357ee0a935bb235b0315d1ffa7492b1c0d29e79cd532dc914160a5e4ba25e7c58f58d5ac9495e4bbe44475b2bb897e9db9380fa6a911ca4c9cb60c99f9f28e390f79bc0ca96c9753efb0789a2d906ac18a6060e87ed84978478b6429beed156d6bb229638d7eb7365aa48cc45a28bd096507ae635deb361f7b9deaf81441dab0ad9a7a1826189373060324a5de7087be2749efcf051d4ec0a74231b5262cab2ce4a69fc8bf1a72b8ce3827e7e0e0ead4bfbc7282d947d443e821671a61d86a77167f08c2f4a3357c75f0be82dffa4cbc0d727e32ffedc40ebc51fbb2b00009ea34fcf79074e69b9a96101945833966724ea3e9a04165cac4d4d3773713ff2c7bf61487b97855156a1e26b343fe164e5b5b3b86c15fd28ec03aa4b60675d1821814620dd9c970f8d229223546f6a5481de7bcbd6fa1b02633e927ecced2e4d4364b2a0db309c77f21ee60a262c9085e6d10b36d2beccccc26607a0f288b2f1dabc399958ba344039ff702b13ebdc0f8c8ce047d87ae393d74b10d7d17b085d810a049a6164629e765efb7cb8e091ca1048354da73d1d30659c93d9a4a3f64e111a15125acd79449e2703383d3d8c83c688c930a4911cf5b7395dbc3778856002ebec9c7274a233f562cf1ae5027a9f92ef194d7ba44405ed19c6b23641755cb6a14a8a58ff6897f603b40b99e14131039a171e8855df731aa4598fdc49e015b6928885e14e5d45c372d16f19c2ef4344845457c713973e7a247b29e16ae6542d39a9ad32843a8bc32a08d6470eea19caa1ef427cc9313475145981091ef4c82396ac0897a973389c0dc3b6d47be6d5e16f8d6327545c7e87648db6a8ce879d3261d21f3fc25aac45d209571ba0dfa1dbf822c4396fe99d45a8a0bff96eaecf65500731e1bfc8f11304d7f04e4f13adfe62e0e31208037912c37a10c30a809e680596141d350854e8721c2d45736a07f8132291ad5cc9b4967db31b8412ecc3f67bbaa3115177a1853cb2628e3dfaca165b0ef895ac61c73e052c0ccb42b3ed801964b9e4ca3cc01b7516ff6329c49006b3232f92c7ada7ad1905e290acd30da9cdd74e3e54889b377df29a3a3d6e6fd826dac3c81c7e5a2c06dc8060043efba26b6db44a22e69a8fdf04df74c204e0e9962adfcccf5ffc7764efd5d798ff5d30457fa9fead84ecd47d913dd43be58bf14cb1b446f525563d1da000a9383e9854c12ee1a62a061b3376cc6a326c465ec4e4eb69f67e86d3e25d38ff0db691cc35ed3dc68746afa53d7aacd9ce72eeb26fbb9ab3f66400682f4b33af5def0f981b6955636e5d11e3bef53028e8629928ebbf5f7ce8017933d93653851399ad8810e2d811daf8bb8935bfd59921a7334d172d6db6d428eaf93803fae9139728d02d70c95a7ca07c512ace2610347b867e5d4a65ea0135ae3ada3c5dd5481d4f98f50b6cc6fc8f3a000f9316231d835766a9dd157bf8e1aadce2e4edfe545427830e1fc8c51583212b2dece0ccdb7f9a8183df0fb0a464b840cf3b18001a375910468c614249f8c6990fa7882cd98d1fbc24710f5121770826ad9fb1cc17fc09c2bc21b3106f3112b2bfed2760bbd709c1e4d5f9b44209e69accca31c110c4e4fb60457427bf89ca772d793365ed34e5fb84773f894524e9e06450a0442af19465437c33f6b2789e5f411b82225d3b5c88552c3942b8a627159b5010b998643e000b11b8d001b4911ddd636387d17eed1433bacc0db1a982f7f5c2db1fc2dde266a476fcd07858509b0e4cf502d9640e4d01b233f98b472cba52a7ec93684dd37c9a801ee7e55160d8020277523e998441846c9c82d3a5d8d0a7b7bf59886c32678193e1c0921f4607d4c0c7922c33a3aa5ac88a0d2edd20cf4bf12425ec0eea6343873e8bad31630eecf70004c355ed63014b5728eb3280515f9e68973f3d3e189817df3b00f5073253609f68a4ddf15626dc68454b8c23a86706e4f5fe5ef3dbef4384197d00d30848169b8b79e79d34732be8e098d41a23dbfe8651b84a35336cbd46bfdff6a9a38648156ad15b07f75a4190e63b9a2f79651e22dbad96c05e21bf5c473304cc1217c5b8842a349ee4cc98eec1a81eed6d105201d09f037049e1bcceed3b615e1efb97f7a548aae2dd6638a056929ff6ceb4e7863e90032083d150759237ec57f53ccf37e31811a9c3271886e7380316bd12f8aa2186b576dcc0846827b8b8babc1864c434fed3fd586e971e5e45e0b3b91cb1ced1381f07c449a5b2a079bffef4d336854e47a7b340a61d31f99ba292eb7d0a34ac0ea8b36953917b80e64f514c5a1537b65421853faceac35c502bc88622fc0b485cc4d70253f53e4a0241d0dc1d680f0f13f488f1382883baa4217d73bf7e29c8606eabbc2c518adbf65207eaa6a4f209b3b9fba54c2a63b2d942e058b093d5542a12e3ad41d0b8cf4e9627c22b0ea979f57bb0afcc033eff3678a26f11ad9058421a3034ce4864f9eef31773f78f63418cea9e2df3de469c44a178de3c1682d62b633dc27f239833395a58b18284c46670a7a494754cbe31a3f0e8b81ad6e2b32a7d0d070b1df293328636c1e3387fca1710422f8b4c6d71be4dc83463a897c7429f21121e7667dd536f0e595e23353ff96e7a737c619952c17475d5ac8932e3cf8acfcdd8e825ea90508aa4a1197465f02a9d4bfed069d780fba254c0f9c743ee0676f2e242815f3193036ddb2dacb2dd969a0c6035779d038c3957029873aa1a3fb27bae0a4967d0bfdcc372697ebcf284b9ead9fe40803ce505794e1b5f917727acc2c08474323c899fe82978a28827766b12978036e34961488eb3b32e2a64e4b0dbaefa4740c56bfe9101299a5bdfad1ad416194b361d7214968c707ced2613f3fd85b274690de19cfc54371ef34a36515d258a2984a2ab6ca416ab36fc1c6527fbc892bbd467f0e66a0d6be5bad8863cc69c05f8673104fc0adab25ca726e97be9f962d2cc335085040a0d5d090cd584066149f3c3738c6d26d90a368331a66af89cde662b05dd89b20a28e91362a5b654e78635891905b2066f8f224f2d952cd02a88b66202c0824f1381830f4efb555b5171468131d65892512487b4cab842445f530981b31d8c4e124927214b15e0d5236831fd040f49ce146da428522b5b265d47423b56749af49b0dc67d35f3c7bbed8f9fe4bdbc72e95b2ea8a23cd648ec71ce9df94ef5c1deff91abe9780213f73b7d69dc08b8d19ec572a37221dad2773fdd3233ab2d1bfc8ca77c111547b60c2f70946a0ceee8e283e615a0823ea6cd446bb02a0e4d0f6e4b98b09e8b72dc72e5ef802f715743fdb8507154d3b036065d86c6cfa3e7d1661adfb300cb946277fa3cae91247a1ec62c823fba867b17c427f2492181b8fd9fe1cfa5f2387af0428ef2343b347cc2a7e55f8317de03ef01aa491e23334d95d8b0a58b8dd59c4e5f69d68a0e23ae76b2b4cf4c688af9fe39e237411135e06bac841715d66d96b7608810c713d989456f44e63da63be1f90fa63e404e136e87e82cc42341a44424160170c0f195b8e0770b530892a2e2cfc6f8bab8d686bc2b6f3f918a0c0c5715f31ba620cada717b3c05f92cbfb409a38f30b46e7e56bf2f40bac5e59e639a04b50422ef79e47eaf595609cab368bebc625de4857ab9851743ac71d229f4f3dc3d49fb5755b80c4379e8de4d9bb5e75abe17bf214df07ed7129cf3f64087dca6e78cad0f672ceff9d1cc455e3b1564c215f35ecbb7ec5ff47b3c21cc0ff5119f03c96ee35c9a9a7fb99686176a64f9b98ab3a3f712f2b741c3820d412bd6cd27f7d32bd38640baee6e08a4a1cd10422f8cced989f00365a668b892fc51b6fa052a6e0509fb94a17a492aee9d38671d6500a93dd9d7e6cf0cd7f654b5a653f08fa24f99a4612e6ead85fe4f4f7ef3f6442384b5c9509789d6f0c9dacce20830c8f3618c6f58297b4a0f32d3619c03b1ebcb93024c65142faba30f295de3afd8056ac6b685279f3f6d7914fa6481cc6b97ff4c74a464fa239ea6a38c51cbfa8c15d580e01727204773654c1cc95ccb3d95dc689bb2f8226a9d63734525f6ddd307745e5d3950f4765c764978488b4d7c56619b51adfe88614be110cd0f6deb55743c56896fedcf4058bd70334a5601b77a5799f3fcf56c3f6d2e305bb13d72b0e7b5417a4b48703d11865efdd14d1e67d02fecc64086db7d8e8d4ab68a3c2444e5f1b0877898feb217414e2217c562071f69c871f6e7a944ce955f237c3bd48638c31eb17a869c64d2796f7883ec6da30c09b0b8be291efec9f0b88d75455aac92153116792a6cee65bef70f5a54ad38386c47454ab9dc1b23bb68fa2b96d241ef536ca099ce02dcded3080c797a7efbd0d22bd8404babd4c2f8ab84570e9858d25098ee770adb56f5393bf249196f636d79e434ef206e59e0dc33ab06fab50e0f1454f989e78cb3304bae5a21e4f4ac16ade579706005b35e9d0ef7990be969974613cfb76b0b1fbc00835fc2f01e212649c2f5bebda78cafc6717e59708d5af41b681c507fe5f4540acbce381fbd3729e95396ada6ea182b52db8b5f13035197c559f3d919cafad5f583b35c67fea600a98c35e0e9b3029d17ea7c8659fc9af98eaf0f20d75ee193f379483484ac14952400422ed1df18b46bcfe87978d6411723647a940fca578164f09b6aade91ea0433613900b867ad95da5b4911eef322689c8402b3311b5a6f4e37a343b1b69fa75cdd34db4515a39153f380d19ee6cdaf825684e8024b1b406a60a69c33bfed3183387e069d1320ee613a5da5396e5dbbc7b4a2efb3a8943aa7f4332946d9c0dd7d632bebb921fb53136da4fe8887063816fbb497e1cf1d966bcf9b5832671d8412a05ea248d4afd0d31541645d60ef7155f6f4aa1661cb9739b6dc14bfef85476f65bcf9f055a4ec2227ada339bf854ee3150e5008a5560b00139700b0e077729da72822ce60be6e984d78dd295f8cc306623aa1ad7c8a73bc023d9c04e77da891cfe5fd9fda1a56060d192338b7d9d6adf8dfb502c5c9dac98e9f916c460ded6377a5f25a919581871354137f1b3af0dff377e509ba6b25e6ef2cfc23155fa23db77eaaea01afbfee0427ce4d7ce5a663170f88b6ef7d488fdd3c638211e13ac9790518a632d082653dcc1bf48a95ba114a1b1b3ed893fbeb166fd118958336553fcc9c562b0d2525d5598271e795f8b2742a606b7a4702e7df2feb64b2c967a260f668dc60ff1e646af4545492cf0c987da31a1ffb2a0fa626e7bd08173fe27518165253845793037cb569c160f75e37725be97b2ce3011c0c87c413fa3c0d41da82601330700428f6cd479157c0e9ae784a186fb9c2baed8a0fb2990d53c54104dbc12d6ed767827e6b50780b56a565e981428f4a751d0fce8b8789284db25f3fb85b7b46740aa6f337310b6d2cc98c1ffa9d1f33b625ba74742e89691b976842c03e338e61b4317d3fbd53ff6526fe195e61d701b0ae2e8f8814f20642d12d75badf8a782c11c0340d8a3287b4ab504f9ce793a8b89efde4361f990f038c4ab9b5c46bfc7610fc66eb5faf8e9ad97402b0a67f69048347be7d746436a440d5900371b4e0c07b1660bf4805f50cc258858388c43d7b772daebb760ccc40ee8b62fe8407d4f79414412bd2bffc74646b0acf02e857148551001458c4c09f904f1ec1eaeb31da22331e484fe0b35bda95b1ffe25a87c8d9789fe309e5dd5806b367364377ea37c1af3e3e2472faaab4c3945b12d70b38cfa821911c082ba25c425f6ab2dca7551ed4ea8561e930c2398d7e1dd5d6b9dc1dafbb116f78e9a603c6f3b71a5c836e116642e9f00b451bed2d31424eac7aff5022552ab76eb051da5284389b841f6d7b1bedb565d4ae0499b696485b0dd7a1b2c394fee1525849650f3bc187b8b092ca02611c89870935af1fcca4171d3ba969165d9ba9dfda810ad9a9bfb0bdf07294268fd6964b69e5fe33b56f1b3df1b0c33449fec6c65370b863cfb51c0643ed7f0a7e90754ede7b8918db4f67ff0f3ac613bc4404d32485c3dfa8916d124407f3d5348d47cfa75d28281c236d59f17b6f9bfe45e3f1770a666d18bb37343d71663d6b624cb5e5254d6fec98c6db873bcb42c979b598b07a6fc68d11ade6972903f2487a7d0cf8fd9bc07f858a378b5643e891e3857006927ad3045ecb04a6779f8fe96adfffc7a95e7f700498b7bf65337031d67d155c486b831f4968570bcf335a6267a539e0bf4f3b17692e68dfe811b66ea3d633493c9d0962ce5569153b666266c47c63fd137dd84b6938cd168803be67d8c516bd689243d21c1b6b1ec40046f06c65115b040a2e7b9b44ed7c253313570af4135fb996d02212c988ff1b51d650b448b7467f94d982f11ab10f018ad1880c9cbdf0dce94ce392c90a06ffff3e7e15a32229ac7b3ef1af835ac0a882a7ced99aacc2a8033b1b665fc16c64873b7cf0a5eeca906cd6928e5bacd587884b8b39109b2c74007f04f9dce275cf981f239db9e78123e61ed8720736970fd838602200d529181a5c08f72d227bf3abb56c27c717635891947df223b0c9c6610338fc601b5ca4991cc0bb11e6f4e1a196e1e10eb5a59a7b7a96287212a531cb4c716044eec789520204f41030dd983f57cb8390b4222f3d4a86b564d2a0d17b70dde76fe343d784643087d982d9677b1c053ad7e6e357db14211b1eec80b21f537e19100b5f9ea7947e42b6384544980d9a726219627005ae9882fea2a4ebf728284a27764ec5d2af4afca00e2d648751a683112ea79696c12caa88a4c948396e3be0dcff3a36aeebc8cb8c5dd70c1716999e7c1be27f6f5d75d7e8bcac74c1d92288c0333db0fc505fecf5a2123f086a6aa9dbbe9ceb015c6d35b24e8a3d684ee7c8ab2f27e3f8208b6fe27031794a3b393dfbce0a4372ef6ac31e55a103b66d1ea503c1778ff681c0c290e67781f00de458f11c6d3f6082a31d2d15e80e7a0eeaf48722885878bf61d0788e47f821f0dd3e11ccb9c8d35f904f821d44d93d7b410087903fd739858733d3e7b59c7dda28e6eb83dbe76fca782400af98c38b9c46f58814842de2571ccf180fc2dece5d19ad7ac8a53c9528a465dc53cc373793764afec87fb5e641d8d75f7fdc76bf634163d40905c0253a89e319e137c995b32ee7f02a37a170159b06b36843a2600022201f54aeed330fee14fa6b19ee1fc6ca84cd916d185992a09827ef7c6a86e6da7f4ce1c6990d9a95fbed89bd5e7bd44ef44107c22e985b0f61665ad73fe652bb60739571be5c3cf719ff89de9288a7d664a5daada2c15777dfc6bd23723cefaefe27a962d21e457166f5ad11f3e7dface5bd382f2dbe4f26fd7f27bc1570238813b46fcc9c20ed83d9932f5769aa9d0368fe85204ac11127199825eceb6ce982152bae941c4c8952e76a111dc3c71183aab00aa66274a382256bdc085c9f251cacc384d934a109d722b87f5b9e7ffa11029a81193bc9fc20b83fad23fceb93ff917d1c44ce3305e531d6b41b4358dfac7079c36154017f7437df1d9195abfb2dc98445a39f1b74ee821fc3f847b0f52db9d9cecb356fac930ff132d144e71e7a98074575c5a19253603ed1bab2f4c6993f77d282b6b77ef1247d35f291b6db5a5fca8e8c598aba746b038dbbc9c1dc0e532d1f9c47b87dffb3e2aaef19d081f3e17f056d339a8d53eab8f3fc91cdd5d87b7807b26f3e58632447431edffb43b0c207e527634f627214990756870b376fec5130e2aadca7c6f2f968baf7a63181e90bafb1f6d55fcacd0bcf11b9d5ec5d108fcd9b3e90b04d490966407bef68ff02478ec80ef82fcb6ff48e7b34809dc0689cb1d7447fb9436bba504894a786e12b1b46f33487d59044210e5beae90d6cf0f93561fad5200fc056c76acfc355add3f0e21b1320400d612e5f3c51f02803d48df5338a66206f4c7d06d3aa1ffe60f94a5dc7626af182bd9f0e3f6f4dfc67d3890b8bad2c6ca5c7a0cc3ac5fd2881e5f3fae70b741cc0620bf6ccea965676847c3f1c4f0c51639c95386991594c878320cb7517960af41b6e1ad95bdb7b93bc4f1bac662178a0b7be5d7959d477771a639ae7d3a1ae3d2f8faea2d8c6ea51eb36522ef738e8a08d3908b8aa4b0c89efdf793b457bd716e1b57fef678fc63b00bb9dd3ca51b4ee0933c20cde5123c4eecc1322fc8b63c51d2df163e40749fcf8c3ff5602a328d3c3cb6b240f1af0270cf34ec2985518b1c3c33abe591d5e4ba95f28464bff6713fba5ea9bb9621234cc45bea7d82e795f5d3c97e41f2cc6959ecf12bb4af5378aa54bf0878b1fa52674b3e4ce94f5e2f675fea5781657ba5d8a65ff75cbc4f133941235f53558126b38e6d1d6d4f94003315efa7db6d82f15df502c2f411f5efc97eccf17d74ac32713834af8f78acd25ffabc54349f283c558e9ffd962bf547f335d4c8286b9c8f714db25df8707ce7f89c751ebf6f65095cfc47f0e3a1962f280ad3bd697e65338fd39436c41faed1ee04a5c62d794101da2507cd1f904a7b4c6635c2dbb0472b23e7d40e56943ff8d815ececb9b960c0e1802fbf4ffca43367a96e1de64ae91cd2d83fb2178939b251f4c4da173cb281261ada9d1932df47ba6655c0bdbbf689580de357df263f194b033f23749f73193904e89e0b889af173031fc843b99674ac1dd9a0ee7c636f719c52f88d4ac4ca6d8799b12eb60d5d4c90b43ffae22bdc2ca78bfd6e07e82d4eb06627f5dd766dfc180692f25f56a6451cd7edd8cf907ecbf810da2f89d9916306f2916d84e9b1d0ce20c6d0e850a132557cf17bc7c28c6f4205826c3ee551cd091368e167f2babe82759cc6f2e821336d9178b8ac93794df70a71687aa930c1ed217fc7812cf2df37b9435395be05f88e470155bd321889acb843f76204e59c39c33ee74ea08d4f7c23215c7f87da3d74f99a9dbbb7135728bd5bf7915d7df14bff1766307f5208655e7aa4105bd375363c81989b4d77b54e22f2207b2c6486767b4a888bbc07213628e58f3e3aebb6fd99eb536c8ab2b6c34efb5a282a16959afaf3771cbee66d2d4bcce096b36053c4598bb125e87ec1a5adf0c7171069b820419e139d1d11c6005227e9cdf102d2380f5dd7fae89dc082c5e5123431e35d29d4563fa8f857e4e517cd8f89e7bea26220b85b15f10fff7b6dd1c6a2b1be1d8e810971ace5b310026be4dd7900a5c0deef40cad405fb6fd3b10dc557c07deb5d5dbf3d173e8d0a8f9f0def72f65f8621f6fa7e3f64fbff3a1756f32d40d0cff41115177472313c331428af8df8ca9e7fb70a0df2f833bf9db6bbf2c3c3aa74538ffba4dba4ce1fd6e7bbfd140748c2d8ead0a37950c570e4b87773db71ebabcbb78f199aacbf9fbb43c918beeeeb79a0136f1e157e1553741c6cb42b7e4d8ff91cb878ab176d5619a751fd1701a26423007faa3e117c3a0ff7738dd369f14aefcea1f3cd71493ff6d8e39c5fe659f252167a7b631f6a50dae3a8cac46ffc1b55e7acb2cb5404e581bcd735e790d14366bfa4590e7c2d42dcdb7331e2b9d79acb5900f3c26c84b2b575589c8ed968a84b2566a38f67645c8665ac7ddf742cc649c794426d029e46199deefdd3a15febc1d6c2a8fcef61f5d49f089f840c2d3fbb37a8b0dd6a23921867e4c8c43eb0452bcdd81c943ab16d74956b57ee801e9817723fc280d4dffc00f8c3e34183e4a43133ff0437a7c0b37ee7f280d3c5e99aa30776968fa0782faf020566e4a72fa614fa2e4e96700e4f3909ed1ffa307437588084de7b698875f4ad04654c94c34984995fb287005badcbf660d72234d832d8bb4f05254ed2135fd5853898fde073c75d97bf7ff9e891a251875a3f82da4d3c49efd9811c259e1fa1647d01fcc49f748c67433e33a5c822bfdbfec7dbdb3341f8266073ef4c473a329b53f863e1ca73c9baa04d208ff26df4eac7d9824c75b5c7ee7ced3ab88f4e5e3c6ed80a5c01903a5772c0b0bc364b84bbe697b41ad305d0891ffbe71d8cca92749f69891dbecc86e3cd1a5c0b77ddcf3f4241577d1d8f1baa7e7761a0c874efc020626a03b73b0daafcf055bf0c814f139d064b89b8792e98972db064736d3e3e1e67033b71908b7fa6faf20c9e7f548932f7be9bcf09fc0d932b742c88d9febe9bf16855aa16213dc24987811f907ec83d67a8ab99fe8841b2cf67580e4c542e79be82c74bef295c2e33465050e6646bc18391080ad0edc1d72a9ddafaa86ffeed46e82760fc8995eadf620441994ba602b1121a45bd755d74d738a46b6bb89c8bbacc8aeeb62cd3fe6602906175d1a6a19657e8645f4211c41baae14a853044284e1159aa2a542069c73cc245e5a1ee5290473ce3d6cbdb859434dd1220b4d93a066964c203e765c99f135c48c206045519480990557206d90b9f2891045b30870746e0c23cd90d53cc1c36bd29bb9a6c894f966c40f1a64721758b41918a221c11e51123a9239d668b0e25002a70c3b679532aa934351cc971311efe46cb230068bc1640d93c609cc6a3210302cf51550e50311376d8a9b1777ca8419c13c180298f2621408666cc6d1920811236a4ebd04d02711937d556f6dd5dc9d27f7c0dcd4dbc3db7317e7cddd2ece1d6b76d902be0b830219d17b2f96de7b7d3ed0ff1480feef02fabf06fa9f08e87f21a01fa00affbb3dc0aa52f00cfa4414a4b59211d10103058280807e7e7c7c7c7cb83e87403e4156e8bfebc5d2de24fc3a08f79ebce7a35b7d5c3ba80173f0569bb4dedaaab1b5821a300747bd61bdff715bbb6d8f6f6dd5db32985b5fd5e3ada93c7af86d19cc2d83b979a2fcff733ecf8fff73bdc6d7a2b5e559f1fff036216fd9bcd75b5a0b16d4e37a4babb6ede28422e0f9a197cf5cae053d2ae9eed4f9ff63cd7537ef0ea1de181cf6c249d8f5d656dd6fc5e6f19fdf12964adb09fb76a03e6dc7e8d376027cba13cfffff49c0bb6be16ed8a073f92b6be463309f1e067bcdb95e269b79294d309320f91f480f1ebfc6a794ecf0f81dff57eceb18c0eaa7d1a8b417e3bc1eb746caa2e950f57c146bce98395c02c17d77dba7bb71f176439f431f43101f7c38f868489c5360ced7b975169ed40e30076ff9c6b8059f42dd56804528be8b4347eaf59abf5c3560131d07304c1683c9611eef9ee251eb0754abd9eeffa01932e080d1aaa5569becfabf111ca3ffffffd6ea0da777c1616cdda0a6be29ff2d1c2438495240e99bceacac3d2b41686e4e26760e72f28f98e58437548eb6f230af74098cdc2a23a76b08a489315a8d94fc0033424a20812174a44d61da90963641e070b5f58f5cb6f81019e874eb2156e42515b4553033371471d9811b32bab00048fa21cf3eabca1a7296ae4f5b3e4f46206141420ec278f1700f5a9e0e41ee9bc767d705f60754c4e49d6481bd2caea8ed880ad64e2255a232f14d3929763a28b032403622925a18c3050a50612dc7885f9897315b6b7b1ab154616229d06a824411e8b5a0499736a018512052027d4e3815e93675e8365dfe2ff33bd78b2df7b2fafdcff5ed71bd9eedab3b3ef75ebd988babe5e17def6eb76431ffdd8acd63405c9cef633dbcddde53f3b74cd6f335db7f4fcd79999eef606a103f988c349c0ad220feffe934e4346bf596565d67e5e5d5e51e27fbe5381a29f4992a341ab23c3cf6d2cb6e2afe0f4a81e28e1b7bd9717a9b99c36fa62e33e547cbbdaea767eeadd4fe7435ba4c649903ffe7daac5daddebc5b18ff5b6bf586eb756bf5261b73767bebea7ebd18e7ffff5cd8dbe6e2925a6d329d8beb9e967b70582f83bf7f5c52a9742b954ab7369f99e7c1e21c975a6db2adae7b75ddbbe57532f6b6b9c290efa9390753ad66a9d5260303d8eb3ddcf86f1f9f957bfd2bf7e23ada592feb63dfdecc465eeb82795d6ceefbb37ee6c575b41c17ef642e6bf5b6566f32bd5e8c97f534bcac8bf3322e2eaad54cb59ab32c626fdbdcedc169ba2e36e5eb8dc1e75df703a3f55880acd59b4c6ab5c9c07bce25b5da639d6f2f73b1e9e1e5b1dee5757226f47f9f0b57eaff7fcf47fbf2bef3552aafeb89cd63af15179fd7d3c7650cac04e9da2a6151bc07d75c9c5b835159f23f15aa299487867fcac94789ce1c35695c4889f0a308d1e38327c88e803a447396e24cbdb139bbd8445093a3399b7924f362f348183060be26822e615bc0591e337b58d9ac5234a52b4adf93154db260122d2953828884c8915fc46b0862902540882ce97aacd8e14647178e0d36362bb3341e659ca10c8381e2c56f814f1e595195e251b2f3445e420a89ae119522a64088f8400489a143d006c3c7df68a8218811c32291a2880b538995885d87520cf3c24ec2c7c1aa094702f1f3ff43e117563ed33ff259f2e6be61dc1576c3b7628f0e4ca4b7c48ba87be59f4b0447cc2bdb12e165b95b61d757d7455724b719d703eef10dec16d68620c21a18b523692fd01ecfce66795904b2315b6c4abb14460426e02bc8cb07820f57d096002da2074b5953591bdb758d60cdab67eae3f4c57d048cfda508b0c2a2e0ab47ab1e9b0e8a1a7455f551adc8c280684199024422533f819714e2120444355dd40a37505d4f1b369db24d8f6798c2502c7d25fc485215d263e7512ec5a8ab123a258226c250144464687820088301221105a62a87baa410c83b1f07541dc1057c144261671e036437016cb0f3cbecb83287a48b8eae1613442866c0cb5b30e0560b37044d4c988b2d01d68f75a12ac4d45554171326d225d44642e403d1be21c2cfda0c88c878b5d0d1b52580cc0b20063f717eac6896f9195363affa6f25823d1f2d5f29f9f949f2cf37367fbb8785604b1f3218fcef4357870e9c36b30748ce3c8f77ff77da3f7d24ca91b7ffff0523357a3e3adec15c73ffbf59230c7a3e8a551e83cd7a606e790cd60373afc4e6f12fb2e183c9f8562fe37e609ebcddeaede1bc7e6cdefaf181f9abb3cef77f1085ff830aff0f220c1a24828788e2a785700ab1d28bfd745a08031ac894ffcbe2ce040ce0cbfdce56d33fa67fff5abe7d30b72f4bc5ffafe8c4b4da2f4bc02b2fb63035afb631cbefbff24af372833bb37c5b0bf33a435b632beb63e57e67c3cb7a1a171797555fd6f5cafd4ec6cb78be97c53befe5e2d2eaea71629cd7c3cb78ce55ee7736adae1ec755555be565545a5d3daedf6ef3327bcbeb633df03d3597f5b172bfb3f17a5e96976dbbd6eacd65adde54ab99deb1a4030f5090d02fef7ae51ed7c3db32becd757d1cb4fd3f48c2ff4178ff07dd8105d905a9fde5509243f2ff2aaa72179c6fb96340699d83eb338f8f77704ee720fb7d8fe708fa7556cee7389a8cc13a8ec7ff7f195cd338c262738f23ecff3a8bc6a1f4eb2cbde7f1aeff6f74de68526701e269b5559d95eb0ff4c0dc7aff1f08f0070c101aa0377cd707aff3d9f6baeed50be37e60bdff83e882e6c6f918cce7939707c9f13a382e082e082de86df78ecbe81a5cb0c4416e6d55be3d4e1614818dcae7ac9f798595f1f2ff416bfffb4808520b4a0b42dbbde3b2a033b3ff83b2627c1c541644d6fbb0091a0bc20a12fb11e3a307697dd8008101aba2dac04809e6eb3dee968371365d178bf67b990c2ed7de1d8ce7e5e564b1995b5bed6e75348f0c2eef7df8db9bcbf8832a07f583ba41eda0d675ef96aadeaac9e0f2b6ac871f5491c165aa6e18ef6eb7ea3016566d55eecd7c5e5e5e1d2583cbdcdaaa8a0c2e53d557e7308f87c1e2b199bf2a8f773e2f8c8bf97ebc83f1b0598f0c2ed778190fe3b5ae7bb7797979350fde772932b8cc83fda4f2f2c0baeeadbdeabed7cbfd4e56bb70f1bf3edef55c08feac5c3f07e2682ed25c48abc0eaf23ea6aac35cfcacac6e8bcb2c1675584479fcffb700ff5f674548abf7729deb3d1f9dfa65656565b1a06441a1d7ebc5b555dae49d2fa9c9f2ff1faf9926bb7afce7c464588b1547b8e31d3cb90211c40aa2ff5554f93f9aab50f2fbb3cea7022f7ad6f91cd47979994e3ebf9df5b3bcb3ce87e78df7bcbeacebd565b2cea7fbf17b988bf7e0bcee19f0bb5c0ffeea3ab8dc058bf7f1ded57b49185f6f3c86eb7170d8ab0b26efba9beec6d7ddc37a988bebe55d8ddfc378cfeb7ee0311c8feb61b0aece9bbfa6d3b83b4edc9debe912df1276ff9f753e7dbc87f5b9eea79f9df5b31c9c9bdd4a1091f012dd73734f82ee47f3f248d4bfd7c1d130918808727d33284ce8ffb2c81fd5f5c663bd329c37e323988c70f1bf95e408705e5e6f16efbc1ed883fdc0798de7bd87a31016a265bdcf53f301f2632008ec0a88211b0a0d49f761c84720adbd1f567cc0fa10f53fcf6bf9d6b46f415fff7fa1202f9c37e33c6493df21ac83b483945e84f1e9c5129f5ed4f0e9c5c345bf4f2fee7d7a51c2a717db3ebdf8f5ff0f400460886eedd374659fa60b5be4faf4a2f5d38bd14f2fd6ffff200300a0896a9f4eb43f9d98f4693fbf4f27027d1a91f3d387683e7da8e5d387493e7da8e3d387253e7df8f8e9c3fed387739f3efc3a9c7efab0fef4e1d0a70fffa70d393f6d98e5d3869744059a92868ae8402f9f0e7cf2e9c02145b439c8a7cd323e6d1ef169b3e2a7cd809f2ecbf87439c5a7cb8b9f2e037ebacc7fbaccfd7499eed365b74f97c90810f15c9fe61d7c9a7ffa342fe0d37d783eddc7f9e9be2f9fee8bf2e9be1fff7fda68e83335f5997dba0febd37d469f26d7a1c5343e2d56210ef169b1e1a7c5e54f8bb99f16af7d5a9cf569b115810250030586c2383e1d6ef1e9f0e3a7c3889fdeabf1e9bd169fde0bf1e9bd0c9fdeabf0e9bdc04feff57d7a2ffff4dedda7f7da3ebd37f6e93deaa7f7167c7acf690fe9d37b073ebd07f469b09d4f8339050c091130006068008021e86702f77d1a9cf769f0dba7c1da4f83ef4f838f3efdbdf3e9af1a01059a9e2478f9b404239f96c0e2d312427cdaaec7a7ed607cda2ec3a7edf84fdbd97dda2eeed376669fb6ebfab4ddd5a7ed107cda2ee9d3763e9faee3fc745d984fd7657ebacec9a7eb867cbaeec6a7eb263f5d27f9e93ac54fd7f97dba6efce9baeea7ebe60e303da148030cd004002c0578426688062affd7594152ac681e06cbfd0f24013c067bf5b0ff83aef25c0f7bfd1f64e5c0bb160e7b85c35edc3dfc754f831a58ed9f4c2cf58cf3bc57b88aaa0f6230deff0f5a10a420686a6cf6fe1f9440f1ff20a9ff7fc0f8482877bdfe0722332afefff1ff83100ced6a417550948f1eded5f2f04ef6b787f5af7378bcd6e763b398dee35fe21e2c3ee3684150414b414f414e414d3938a829882968e97fc430a21c22f6ff5aabaea37a38076fbd8853ff7fc4a16f6ff6817a711dadceaa50f97f85423f7c57abad7831985685020d0cd3c6ba5b142f2fcf4ecff12b3d7f70c6f976a9546a53ed5fb03aaa77c1e57d7cc6c5e7706fdef5315e0e9bc5e09e1bedd3c0e6c05db0181f9ff3f0de8fc1fd1b18ffc3cb750fd6cf57f8fe00affbeab45ab5feedbc5eddeb66b159ae8ee6e5d5797c6b793a3fc6f7bfb2ceadbdbb7e959757efe51acf23e369de3cbd2dd77d0e0402feffc361bcd6eb0781d4353a50a83f47f91f9ce35f9bbf37937bfcaf7b66a3cf4eff47bdf58307b90ed80610cb8370d8ec750148ee01bbfe180e90c85ceb3cceddc35ff45f941f7da0f3ed3cb7fe0b01f7c6f7e9bb3cf49fd2ee1d83fdbefc7f5583ebc05dc1a7fd6afcff753d9cecf583fcbf0ffb0922a0fd8cd2c0e6eafacce5eb82dfcc66aac45dc00554e3adb80be85d2b9bd7f440b05b388c8385c3b8b6bcab85c338180433d255388c77b174b1be3bd7f33a98ad8ceea5e87ddfd37d96adcebbbd1e56d697c17c0e66c0ebdef196eecbff81b64f933bfcff7b3ddfd57a7e1723ebf3feac9f950175b5be0fe37db9c7d1c4e0375e9cd6e3653c4c1783dffa10fffff1e0ffff6bf3b23ef6cd73e7056220df8e4aaffa443aece3ac9fed6a67fd2cff411026faff6765f1b1218080d37b51ecaafcff53448307ffff404f7a96f437c4ffbfffcee9dffccb64fdb41e97d7c5e6ae39afb3d07e9037b30d8cf64ad873737fc58bc5bd999cebfdcea6ef653d8ecebbe4447e4ef5ffcf75409ddfbde7baaf79711ade05abbf6f7c5d9c7fab7bbddb8ff57a0cc6f16f9f979579f7da4b1f83cb633cf0cc6570d6bf651eac7fcb750fc6bfc2ea31aef33815af8fc7e0ba2d2d4dad2d2d2ddfc77a4f55b7a5a5b5d56d69696868bae7979057f76441707836243c90c0f4ffafb3ea325ea59bcf3a1f15de17af01f5317d57e42eed6e2b482910dcebfc1c3ac7ef350704caff7ffc69b92a65f018e88d1b214ea036426cd6fcff2326cc0f183552a0345e3cf8e838341f363e6dd07c79ae11f28153043af353c5676b06c8fc435586cc984d20313e3a50989f03603ed0872fbf31825d841b6c25d84090b76c6b6c646c436c02f08ca0db42fc3672af2f9892aaa19c98da94da8ceeb9089428227cb0402130422f8ea0d311ca2274b1ed8081824d83614fb3e56c11d8b6d8a86c52345b119b8f1cceffcb3c4e3eeb7cf7f4c39aa2e1da796dacafddd16b726b6cf41adaffbcce071eef6965f0186ea7d570604dfd34ffff42405edcd4d6cadec0d4e0ccb6735e69fbb8de86f1319801ad166416ef5d3bf0fc477f5d3ffd15fdf417d4a7bf948ea839ae93015d6ac9629eac8c2ce6c9ca7bd82d8ce37adbff404ace7c79dce00d6d8cc656679d55e9ea64ab73be73c738187d46e1ffaf8febe819ffabf56fd90b6630c6c1cedefeafb3ea3329f95cd6abcdb8fc6feeee396fee76cd6a2441a2e77bf7c8ff40467a1e67fb1fa8c8580f6fc378daff3f5561fc7fa010446503683235ffffaf9e79ff4ea9eaa995b4cefaf99f4c095988ff7f15970f7bdb5475d91cde7b6e2098465ff63f50b87723d2eb60f2566ceeb7919fd7b93bcf364488de8ed6ed7a19b9c2ebbe0c36efb5793fffed64df4b01a3e8d656fd87f3f500070eea2a2af1ce7bb3b2eea919c03d35d73d5ef3bb77cbeb64b2b9dedada6eb73e5f6b411bfebfce0aa7096bb3c5d21b83ad51e9555eee03cdbc9ef98b8cf36ffffbe8418000e5ff03d1e5632f1e9c93c36d3bafd7e96878190f2387dbc63a39dc8697f1b0affd8d1c6e2bf3fbd7ad2f2387dbfeff1112e467c8d7a2bb46f47c941ce6b767db8eda57e531d8cc7ffd0ff4c387cd1690a58fef53a447132951feff749f86e0270002d50fabf2d2f97ef61fb6ffcf3ebd65e6d756bbda4f191d5df2eb5dcfc6ff4a3e500f1e98b456931d3afe47f37a535bab2b6b5b23abf3d2e0d4b6da312f37376dda36accd4b8e0d6e3be79596b7f780c7ff57e57effe6c0f1add51baec6b1b76dbe627a10f6ffa7b3f4f46333ffa0e7aa017171bfb365497e1c1c9725febfe7a37436059d2574a3b309fefff73477ebf9e8165bd67b51b1ff77a1af53ae336a2b33372bab2f8ff5f14e16ef70f5f45f816ed018bb3a857bad95539c455bf97ecfefde70cf47b1ba7455aeaaf5ebac7c0ce6cb0a408dc3d7ddc30268074a3495f1ffdf73699db97b38ac93f5e57eff529dfe8fe64de3c4ddb9bc691db2ce93a74dfeff5d71776ebae2ff3f65a4a77756e0e9d4b7aa6f48fa0ed3f7dc56dc05bca57782ff7f5de7e2ee5c5fe377eddd6b9cb6d7feafb37a3e1a067fbbd24929e2ff587519afc7601a4b8d192beb7f32ae7fb3b4bb378a16cdf3b0171d9d7aa3aff4ee18bfe275faaac8157da5e2cac2fff59b55a715a255d96aeed30e9cd00e5a3808d1f3510713fe07d3e0f023e8cf3a5f6dd79f6e50d3559c5bba2a0a5d75f9ffafe9aab6aaaeaafa7f9aca0b55159a0a93a602a283a6a2f119e4e1f56f79570b87cd6239908d30b8bccd719dcf71bdad0cfeeac962b319bf8bf5f918ee7fa04a1a727a37b1592d10ec96eb35fee7c375b97b2abd791eafc77838cdbb1646d3c36dfc2ea697cf5f7abea781017d0073fb32f84b6c56e377b1ff7fa868d0a051a0a8480fcca51370a1132ca9b3765eafcbf5f218ffd3bb6e402074f2f94d770ba385c3663a41b62797c760315ec6f3322d25b88bf5dcaaafcfe1f1da580f6fbd66aede7bbd6b5f3d30d9bebff565f017209ed697c15f62b31a209e36c6bf6f5fe3b25cefcdbd5e3ee77a0f97ebfa58f7c3bffbdbed5de3f5bf9dcd8bd7fdf6b25747fb1fe843cf56def5fa5dac2ff389e341eb26f63f1024f8abac8f1986f7ee5e0e97c5e5657596ae8bbb80f539dfb975d6584d3e97f7f2dbffdfeb7f1f2834d4f7ff7ff584e6ffbe0cfe0273b7b92e368ffb32f8eb7fa00e6e3e1c3ed006200d3f55801eff0772d49003356a90900188f1070cd062ae97bb38a096aa7cfe2a9bc9e3325eff9679b31810063dbcddcb5bb279fb3f90e21feb81c3f8ff4017f440706f686868e8c3863e5273d347764086401484ec9adf6ba95578dfb9b9ced5c5bbdbd05b959e0fd7c975ffe5f5f470eee7feffa3fff37d1a1a84bc937b3eca8bc5b7ae37c6f9ab3118bf125f71f9babdae8b7941cf3558acd77d1f0e83a5d195ffd374d81ff3fa5eb6401359f83f07f37a5e56eb627c2c4caf16e363f4012c075c7cf1ce7bc53d580c2e93f70359fdb7c7bfde5d6fe7cd7c19cce5bdb2f4325e3600e0ff5febe631a8004231115430c66a4e1332780691dada70c953428127cd13100e5b891f98146d81837443ac4c1ec54d102eec6b0c2b4e1da01679f4f5585e6221bde11b4a45242e4ae3ce38770a9cb8d1e7f834728ae932190a208d08a621c000f1c8130270169fbe66a4b870221ae66512459618b1b6bfa42f638e2c9a02a03111d22e7348d9c281f621004f09f989c48e3257960303655f4f73cc5c2c37b890733df2547919fc024aaa836746c69d5a17a8923c964a39150af42a698ddc2081cd03546ceef98c912c503332cc7883534a2e453053c2914bd851895185102ab50437c6ca3e92589471f2d01467f41e589c1cc37838656200388d517c070454d12939fbe2016c2434c46373498a17fb98911540e1ef025856859227a3a6c62051374ab29c5885ab4a74603789900860ce1109630dc0c0e90080833c1d4b3f346310a99e37bbbca010762586134e23104b71d4064ad098b1f9573a0101064480608a8cc0852df7a92675b6ac694531d9f9e878c2052221443116878352de7d7434a24e5018f71ac210009e978c2522445e8e3a584b346d65509f497a40665099f0b489c07947c29e0916c68c59b006eb23100ab630c02abc9760e7f62f6f985028d2ee08932824841c7112190bd21c85bc4d298444b1b2c74eaa6c0bcc9530847d265253931645228e7204c871c430a3579d8b685c5163c0a808ef4405233f7aa0b900e984c6082deb91831b62ca14258e5d267d20a94861ae02b9a14986d91cee93765cd24e8674ba80b52893dbd00008956692ac931d70060f59022e3234fd7930705f299214f571a58b122d0b5704b730fa8a68bf34e3658ccd13dd13457996e0183c29b1e689b22c9615e2447e06520edcd0e092094940aaa45c062e3d5d8081d74505882a5c3a8fa581ec9d31b3296c2a099dce7e39a0b847c438d6e18b220c9a59a2840a481b280fbee0c51f67a8392f06e9e0e6498f7a324f9249305506de1549d5e0b873456953c2139c1a477597652deae2e86079819ed9dc2c02278c4c324b0d999643061b515c508c837888bdbe04312d426802752c0da6b9299127a737253c614485cd2507a39cab6e338de62147cf1818600ac45e446c7618b62d171de8ec81420025c2149569e9ccde129e2e3542f47c20416826bbc608cc0545a3254e16a7378d84a9e6ce14118e70b8cb984b882ace16edce798986c9c7989187416901036f1c846e306d213ac2a7f875c93364405f172f4947321a5d454d069010e62250c4a9f4498320a6fb4d120885986439822f1846cec00c43f58fc6d892282e791f539e2029d8cdd4bf0891c10d1c9276972e567841a4b340e13b019854f3364d52400b8a1c809c15ff23f1ede004bb33d1370107db7303dbff456d92d041193cd380e7b12ba8dcf5bf938d2b73942e01c55cdd1021e9e3ff8f2407f0c817c9bc1c41aac6683c3b57a625327430dfb24fdd2a3746ee560889d1430e9e7478210e09b327afd49d0638e827541a20a1a8843ae42a3e26f100930337e54051b450a03ba19ceb303ac07d982f9c579276e8e082a319a8289168b00802016221d3a5c4428c94d81212793212a13c72e4788e916e04098ad2d04651a8c654db12492ebaac6486335baa50b0bfd821938940100683325851b4a154f12f65e9dbd483e853a6cb48469c1d3710b5c727626c6045f5f308f99900c1ce594ae0a8ffd1d58f123066732810714201906685c36f62dabc12a60ddb3fa2f10498234357d1dc66de86addf4444aca776f991a8728958247f9191f3f50b05273e390ba81fe9c711a8c74f4b498ce97a62824cf193c8fccc7c5a725b3f39d17f522622948ea2b407558cea32faffffffffffff7f3a06520623614a2102e63acfa888215024c171c18a3396c90693c6d584cf6410264f0edc1eb8a173828630f2997878202a483f307afa61a96d38d662fabeb24103484bb200a8d248a5799f71624b8be412c149708d0c43e50da43d2aba39fe43452f7252a921eec00136db2450503f501c8942f27ae28cc181ca193a3b2659f031a9326892a287affc296e9a271d8900fc28d257c4d5cc010cc8d1b8e4c2792fa8da79e1c812c456000ddc3713cec81d4904fb33d3d46070a88c6c4983498c8c1c2c20e1c210d9696420838c398dfc046d83a2538e194759bb52441e2de9c44733079a046296982e103eede19154f6bfe454e4945b348920674c1142c58006c92abf24506a04f019f5d072615732c5169a56f963d1824092253311aace7a240162d6b5c4c323db131e44f6dd03ca9b9355ed3b9827f0369c1a6d157ec1aa128085f92921884508020a4b689a5f6e70c2465a2a847131c0e68c669464126d86738ca9680a094ac35821073d62804fca072bb2990e0d986960b0d8a194830680e4ce8e0c78b9cd45c6035b0e15264ef12f70722f03d96a94cc5a31084df33b32a36ca1bb9823769e9a62f144a9a632a2849c1408d0299624f1559443a82a21c33019481ab1fc274f64e7b01474964936266a22cf639fc294b4332664921e0dacc8d3a2885c882128007c3101e4c4539956db2ab2b1869073095988246200f497914cc6c1812a7bdca093ad60d054d2cf8cb4a81c5496305a3d75edb07b5e3919a1fba2a782cc720d9da9c7317612c0223b4a565d490a98cb3efcb438427022800468e2ca46e7718a9433461ba606c418704242824441d51cc042972e47e1944829458d0f22af5ee0a91b7a948a763128ba476e981c3e8b8c88bfe4317184c905c38fa6f1969485386a19ddd633928b0aa583a22932d50e72bec8c84c92c03040d859e4d138aa481d387359d27650e26547120c9996b4b8b1438a7500850210e7c83a1d52444184a2b4113e818fec20a4f451aab462b4863148ef69c591ea1809723e12bc983151ad4142614c0139601272a821a2c34317223ac848b223550fb326fb4627fd04c368ef2c8266e34d191228f4d474e2268f9618ebdc9a9a3450546032f8a26aa55617c5660e041099911836813c410fff704ea81cba3241c810b146e7dc56f66209abd29b1af80cc9be0a3e6e04d9b1b526ac4214d65d20139986cd177933f4025f0f2ba083229ab089e7669ce112de4385e35d50c2fb1072c5195a56b82972bd39e3300355ee5adb82a16543da774f8d8692941454c8856d61f1724414fcabef6a3f8a4b623265cbcc552011c4738702804cb4c4780262c109179ba56f0c083a51aee4d910477f2877e1752f94c122b413c68284c02b495a456ce51fe02f7724f48864306789f189c0d18a0d6910e9b2ac5f1f37704eb0a117acb1b0657aef38c2f5f1b962c1e420d5706166c39e3d7a8e4043af44006f6f9ceea848e928dc03412a0b820d64c6d0448b7c00c9b17160cf05b3121c77b0d4bcc143a2428403d5610fd82d9b227bc74c344e930d165864b07bc05c080db80c0c935559b4d6a24b1b312716cb9e0080a039c9691ca9d860858fcb85f01631b2b0e407a2a569c8cf2c099517647492960b977f4d04a2324bd8fc082b734240cd0c64970fe97684e0c71e1fdc5d979a540a1f465d3df498f61c24026870830d8f71f615c1568608d1a1dd3481961af416810308b6531eb318a570b3478d943ba4266953ceec50523db08439a3d0ccf38653213eb642418f9f36a2a8b4036e801cdd4021d12409880e28ca460c6ab735613d1bb00a7bea6c016290b22435f335e3e1f14c957ccf1cb42b94daa841a90a523ee44c95114280f365482e0e3aa3ba410e8e2c56196ccad40907d0f14149449139bdd40144ba3d14732e0858f1006ac814c701341df41d895999aa49013328b666c3f0864494be454d5144a1a29a1200aa9c72076300a14daa8110cd3d2e54001b83998c50370716c0c8b16786d9a18f406964a1438ddf0bc006953a1946a7243f209e2d6f01e976a58a2724ef4acc931ba2dae6a094f317b3480e2c6cf68e7ebb2bd59ea44803a690ae72ab42022d486720e0a5383c63914553fa94418c9a284e2a1cab04a4bc3c3ec6e199e27432135444266bb8400e26539d150f04125d0484b45502867c63eb0ba7913878b67cf000d644a74796265f0ad059c579a3450b6641160556a1aa8784e47e2c25e98c1a569438ca82e1a63a30401c230a8f8b4d5f81234d6b69086dd04e041c95a136c22810815a5404070beb6c8802193528646940d646e4286eb77307aa06d692138a03652d7a7d4c94043a7b90b9cbd2ec2e716b2bf249238a7141d008ab7305a609bc2a5033c9284657c0764b0fea14d09328a74ce9a92c886908a85273714e1121033e52c254a49668ec70cd818e2c4cd860698182e90a9821233a6e98392b1eb760344ac1806710a1b6b45b46e248c391767427a6e9d146488a284c18872870047975850cbc2ef8682c4235cd36ace082830bd61150b20a2c4d8752e693d500340c54ec46dce51412c154d4d066850d21b48450cab30aec3a5789a15f0353b2f6289e38a0d5d4e47bd66353e98bb6b044c85e122a04a4841c4a708107d506824a104b0b78c1499a9d3ba7ad4cc331714e2bc1c8f7f6e586821259e06048aa61210945101bb1064a9a6d9e6c64be27122d4a6010abcac47122094d9215192cd086668a9831b52c882266fce6c782cc2a49525c3850ae2835129dcc68f049355c3aa1b943038b01442e2cba78765a3c955934dd25ad8c00a880327a98e808006183040904248a3c4cb926781ec9366a32f6fc9cb6ce4b78e8b912123828c081d41c1268118b3014d4041710948d0a7cc8f99b608544144041080b1d8080a8a45165c30a1d9d264821367a5c6029f398608a13b558c35ca495e8615b95200c7518054b071d33ca8e1859d8d101273cb62041a2011e2be8b630b179ec91d7189b6b43e96df33a21b7115961eabdb0b102e10153081c0a5ddee9d1009ce8ca8b1d402670d1e0cc632b1cc284d60937f4a680528b013b3580f9891a44e4262b0c7080c82044d6d9637289796294418a491f0a20fb00bb6b942006481459a2e160d0c0002b264dde3c8face100f686a8c0842855123b3d4392c0228d26ecfd191165e9b441e78d1ef29391619611daa3a52322c0a81c6d820c4dd1a560fb57eaa2eade3e3050c127c3f18a3c60d387801b688872172c4912a09d05bd009e5068f1a744c8e1488d0e6514882d858a87b594372813d61129728060303865bb97e2c5f305542a4c3d5949083843c58414932f542c26a519e102ca9317242d68758c6b4643e12732866e3f63e0483c6af645a5b21cb840d720a202060a9ca11646163fac28799123e9ee48480b58833011a28f61025948a9a729d31911153923c604522f1808d0d98086c039468378a600259c57e57be48e0f24286a162715800003347616703827eb8553853232d4c679b2842dc99d89b9b1c4ad680ab94984a784164c1caf388ed9f0aa208d0dedd1c5744400326d322ddb349735618902812b44978c1505215d4e781c228bf40e195c88e2dab744f9532cf23101c511116ee5b78c0102538e78d843aa62c2d0645be219a9a5342a31fb381279037740b4e78849449cc34ead17903ec0b039591e7169c1bbfa54ec60a4d27946c48a0468981a1f3b1f1b8726c79775f25fc06a93480453a49d392565f4ad482e0a425a078c84e05f75d87482e1d2f063a01e70065d6a93edb0a3010fba46e9d70617435d3289aa15f0b405deb8d6f15215294068400ba3afcd3b7a4b794f3a47387c30cd0ab02db999c8ead2e411a0bc05c10f97d3e38a2817899752925808682b3af3e544050e27d0256e250e67284142e5cc5e32c44284af64e902514cdd7907d9931e2d698b315d506838b070b29514302918c4d492e2e511da16d9428a091a4952b9f10900400e9894187c6d4802a08e0b1eb19998920a72c040d950ebf5821bc8078a24b09c733874b4174a9f3038e6e099ac72039c692a29257d90fbb1e3522d9f1cfac00075c5cbd3d3043545de641141532401d881378387495adc7766e63dee1e71082ceba42e179284a2d449db2a53a81703469599a72a679c309fd63c0df8d6eb03240eae02b304457ac478e199bbdba2a8c78913889c5a1c1221097ac2b84cf36dadb0522303411a2728b02426b3a22400050a601960d9f3167138c3863c369bd1bda402532af345e188ce8abd210c5de8f0f8b8dd341140eb26b3064447cab71a13cc043173e58c9c99a22a403e0b260e36697d7f112c44b8e2e6a8bfe2f8c895a2ea8b132b0aca904193c114a5c9b4ac668683cec76cc73535b110152994a4aac1a6c60ec92789251ca4296304274af1eed2e06e0c861f06417e64c0306195d98300598e0395e6ab061248491144789c29f47e2c51eae02660c604c1cd3c237318d327c61d093c18346162ba7b025ce2a0244f11243b56af2da496843375258ace39cf4d8287913d41a2669660b12100b543c90501059cc0c22b5d220c0289a344a9532e0dca22992eaa09e46497abbecea8ab0c0460e2a15d4f480f286f804ffea0874da84ca6182091ccac820012d3708052b7d00b8f0c7b8780024baa3af5e06950825b7a0216c229cc080fca80839d92d002967c1af4d4aeeca1915061aafd084a92d2408c4c442a43904c3f5e8f14dff3094919cb901b3e2c361ade0e0089f14c42478203082185c92347e90dc39545312492bec0c898384502e1258029d1ae485478a2ab30e1515184f2c99ca0a46d164805ede0c863173274943e74451a232ba41043d29123c7d19633c9a7c6f4feca17b138e55da9ba1d6a9c8a3841d033258f8cc6a22040e400da80b3a133428b3d605e329c91a262fe8a660dbf3f16457b8cae608168f221042503081290478e1f08b510b0142c7ad31aeef042848b86739003646370d1a3177161145ce1dd6a60b9eac044d7e0dc04a51c4103cd80991206b074beb4312711a939fb22c31143042e9598116a3cbcc03a6220010b16387c933e6e3819b6b0840632f5591d0f48c51cabb6625214bdc0424764a1c81298d06ae9bc858df66c0003ac910bfe84912e3ba2b0b49db952a2492580a5298e6338ac4c9579a2b7024d0ba1cb1851021119a43caf44607e121a31c6d0a0195915723ec510ad2c75d5b1fbb0b4a9b9743da10640880503b61bacfc04490949518917ca08716165a063463cc0a4682e01bd51e6d41774e1c1f482c740f65076a824d9664548f6b000811b14074d7c448a81baf4ee3031e4637fe1a2c81c2167beb640b7baee224ae224321170d67275b36489d2d02384feeca68516231636246cb41e401dc0b1c636372e2230e3494e078c69462f8952c9e11ac6a4455ad71ea61451069204c3bacc4172942742bd810b8c198b294f767147653f3bc1c96f8e461125d82cd074474ebe4b3aafcae07de7faa7ed0da98d5d57113c7f673ceb24f3fb43e68c538c9b088ea507b91e8a5e695f40922a8ad0ec310b01b71547450e5594b2af302f922ee4896b2f03a5e29b3ec88e83150a4d7ba29b8d4faccc18580790f07f8b9a4585836a588c6c91619207bc456f51479323cdbb148d710ae40dfe38d2e625ce0b9be4a6987725118f120ee478a55c023151844441c29e19307aee83731ed8935f85a3bbda4fc80838a22c26723cdc36ab4c31dda082dc29a0792b135cc3e2eb458015118dce3b2435389465b03152f45944f2c3680b9d1b749c761465018b80e1b3e6cf01132d47328e98cd2b6b47bed1e1b78a1ca2b32c88220cec4f375a280c49314c64329200658c90b6014ac6116aa2271832794b7e1534b1166838978df91a05a8dbd689aa3275c50ea734938484224b02a474e640374100b8bb0265818865766d32c8083b4a5d7e288943800515df20800ac7a8178fa823079d6e0c38da68c4812103df39650154fc40d0fa62098a08a9153a4ab8249853225bb40b73cb032b1c2460ee41c52a0a5547f9e6e88b7ddbdea9b9518dd1c9d2752893d2f004544b1135e0745ad9414cd291f954f708fba0a1f024a5039855f0b422c3e6b78c921fbd9e1aacc68d8d690b580c1079e4821752919e78c1a9994ca26aa4fbe440cf9a3e4e865262e83d717a5309c2003f371747a49b420cc98b089d34430f38c0dfd58af5a2e573726609a9c488204065704f202547579210e96e9db43e62c4261862613cb6a001f6fdb816c5a837f90d667c68e060388039769402e9e8cc9363b504803135f8dc82286d21d014d9cde10005919d70b24025e3449193222fa8a82430616474fba8640957e0ab8f36e82cba68b19bfba1460645c90aad19263942883cb0bd89a6c1b700f5d020c725ca02620faf0d049edb135518b73a71268e0ee4098bd3628bda62b367323327ac6572c3f3c196326428a58b231815d4007144e5c12e9a522da42468705e03e0237e30da50022e2e4d04247c7294be6314262d977404c1a064b1c09ae48d8443ba3c280d888a8aa0895126338c96dc84a23f2e86138c90a69371609c68c114d359b142054596a5a6218d9423bc221092d5383b235b5c8be2d6b0213744ca64172d5c244031518a819698b1fb61a91000868b253ea644a134a094c844e0ad51c5120f6d78aa2e20661641b1c86bacb2816669a785e5f48c77e80a94019e392d077639822eacfc3ecd4b00496eeeec441dcede6ca132a0ab51ce478027368166557840b5e1a0a44994ca352e30d03986c647e040e12c7f7cf9d9a918e292b86b8b7e58581c34a0540222e01323c653961831d4f249558e1c14909322481ee8b02753567079607ac4f145f244a841215df19171ddebc1c480f2005f47088a4927c643a544ad5e5e2508e89a8e368b068a32ed35b7b33c12633de1a229703aca90d0f2a8a082c21a590c1200492c4d822d4d5fb608bc5190248e58acb805cba49a2945e1050cfee448cc1dc9cd18f4f470001d29c1aa84bbaa309633c8210d112f14414dd83b2560006e9ad9e0428745250701da22a0125f8b8c8d33683061ba8cded1621e852176b88af275763f500466f948e262f230b9a34ea001ce3731966059f22d5180a8c4050e77d0cae240c490c060100c97cae8c8993f1f5176945b1faa9578743e6c2ccd4960c5458b1b04da1d234f386a546d89b257740cdf42138f4f746f1ed92c6d31223bd393a6c8090bd4a91a7bb54ab26da94e821e1637c6f4885c7161fc290be945d59813842d6fc9abf2ec26c348d1000ad02723ac6fb40e2c3190a60a9a08342c1e958a741d998109b56c63b1643b4467a342bd892247cb2016180cd826eca841b8c20b2a5744848bc6167b731cd2da9eac2d78a17475a38bb611218c8d8e2f2d0cc370ba41656ba22409633e34c84348e1da517e6931380618885c1bd442a879d8e57c462489048a210e5f09f0224081e842669aa87caab0644dc7144aeaa4774b2bb080053c9ac79332052c8664992d196d13b2de4e9201396262553e604070d5cc8450f7d8e934c506082c187e380027663a396057af34100d1365e28e2211c061f1a58a9008181262a405140e227dd0901f434cbdf475705250e41b38afe3bcb65aad56abd52a954aa552a9542a953a9d4ea7d3e9743a9ddef77ddff77ddfb76ddbb66ddbb66d4b6fe92dbda5b7f496ded25b7a4b6fe99dcd66b3d96c369bcd62b1582c168bc562b1d7ebf57abd5eafd7abd56ab55aad56abd55aad56abd56ab55aad52a9542a954aa552a9d3e9743a9d4ea7d3e97ddff77ddff77ddbb66ddbb66d4ba552a9542a954aa576369bcd66b3d96c368bc562b1582c168bc55eafd7ebf57abd5eaf56abd56ab55aad566bb55aad56abd56ab54aa552a9542a954aa54ea7d3e9743a9d4ea7f77ddff77ddff76ddbb66ddbb66d4bed2cf66aad52a7b79d262efb74d03ceeff1fe775ac2e781ac6759d67fb611ceff3ae569bebe33f9cdcd7617cec35f6ead56a710fdeebb299dbff8173b3d4ff3fea7b7d28dde487d2e51f4a97e0ff9ff4a3162465a174431f3a97e443e7183f742efca1735f1f3ae7f4a172793e548ecc87ca09f950390b1f2ae70de3e3b232186e57e373fcab6febbf651efc857fe961bceca6f3e6b259ac0cdef66373389aeb65bc7f008e9ab9653cd7b95efab7cc83b9355e8fb9557f7bf83c2eeb71b2ff9f08fe7fd6ff3fa39e5072d8ff9f4fff3f9dfe7f363d99c2d6c0d4b4dbb6b5b636ed568b0617b696b69df34acbca2ae37a3879e7c9687ebade780f73e9e16f6c583397582f97e9ed61bdb1162eefc375fd2aaaff83be84833483bcb878cbe36efb1e2777e1828fc16230dfedc1b9b8c7ffeabddcf375f52f58bf25f7716761fd368c97712fdf5e5b69e1653c77ab5ad3b3b2749e6ad5d695b96dc3b47565685e656d5ab7adb60deecd4b6dacccadcfbb3a1eb5edc0bfa7da36366cd5cdedff1f56dec36e54abb92fefe1bebc87dd2268fd2d998c6765f56c6433f6b6cd6b6b3fc05cec6d6f7be85a5a802da81ae0ff5f5341cf47fb2daf93a16ae1ffbf5afeffc7de369c9024348dc4ff59596a41db5c07047ba7f7d515794bee7f96172322148d44362abdbada2300c8854fd70f55a68f1427dfe752c5ff7ffba1658fb8ce178269022731cda56421e584282dcaf2b4d0ef720c93048f55855f5911c687597c141668d0b419e4f84898f926c6290aaf8530058c35b32ebb3084e22e67307e0720c2eba696e23793200472ca931541a7c6e013c8cbbbaa0c688321fe00d440b03560b0cb816f0813880783586c94de473775043b0bc4f1e8e328113c32204612230db0828f4218f8a0bcd911a46bf125a674618ee054e213138100b61338f90854dec1a24df011a659c18106b1098940647e306c4d99c006254d350bc496094c64b408e8d049081c9318d4643556185879b50a2608eb81131817f3b032f64031010f285cc965082c92c4e35da4249fb950950cf80b4c3bb3783cf180c3e5d6992f8086e542d23e6b85811696a787e7004d5f4deee6f8004e11ac92cd24e80196e8a0780386741250ef4556d51b1c1e80f79a4b0444453afff4947551cb98b8fbbbcc1261440d618dbf0e5c231240ee057f5ba0b7ab3b15c87f5450fc18b148d4f9c1c9e2204586c1233f214434f702714b3f0c7a63d85caa61f9bdb941cd497265f0abbf0865a0e9b962460394278c111337661c50f4a8fd090d315360a113e020d6339ba9a8a2c9468380f968ad4b612f44ab0c66a8f22eb2a75b8e316688464a081365f3942770e540a5b297b9afcb9c4ba33281364e1fe45858e8afcc8989716e0bea517cd121a5a41ca50f8f0012c4bf19f6d630d228767e4efa1f350dbde09600efc46c421a3b760c1ec4780906c8381878ae900028c0e654e1aff4f09127dcb8f5d1d15304694903973e2337d54b60a698be461d3ef26ca0e3eb9be380657b19c5f52570a180c8ef52446ed3ef9154c833e41e550b8e8cc0782323d669c248288291d9c84b467e50b8bc2bdc37497c7022466ab2d718d4f64dd15b7b20572807800a90bbb629ab011f09bf9d280c249b1f8356e32d410806ede09ae349126540dc312c1cf799b569e2d113317e00036a7ac53b8e0120a82cb25864482c852c26f18664c9410c19b1f7458c255f6b69c43782b8acc83e4138cf4f82c73a3cae612549c21c1e7d8cc02a9112c6c38167a471e830ccc008a195c056950fce0fa6843d6fc017844f11aed0bef92cf9dcfe42c4a18a93f2ed9949e3834dd43060ef461bead57585d05ee1989a8c0e40bf57b667049ef175193704fef2c6f8950cbb0286516b167092e5065c2ea39499c9ad0377f1f84249a946033c80885ea00cb3caaf15bdc43b40acd47d514499e0ea0923fbf27dab6984ac9840667e7d14a9c809fd41f59a188072d3622a8dde873e1b756a9e30e8e1711a692430aba267e56370cc33cc8277ce1d1068f64a60bd45b89a6c2c6b747a35ecedd9dc1a3a7ae5149be8b0f164c82b45e54a1d47025b3a9ba820758480b8ce63493fb23bcde815c61089e22851a3ab61a1a2f6d61be94a32cc58c01cc1723140e87cb10e59731a1fe8bc3fbec4e567ad519bf406601e96135955e9547d4f74b37c899bfbead2d35d7103502c52efee921d3bf0d14824d2cd2a6cd38e4901a5fbbc5d5cd19899e446e1464a41ed19f3ab70751c634420fe175c1bbf734985ce0dea109e240bcccaf1ee0abee1b20a04c220207e17075f50a48a821d8f91bc37553f443a103f7940f22ea851462f30a8cc6b9b8c633cd11627efc98a9c1673c79a6d992e9a7c02b66eb63792c6b4c9bac1604b984185125e1a7e4b463e3c6ffeb0db4ad02483432a235728e1050018803de82612ca4fb8abbc2d57247449102029061006a7f1aa5090c3e66032e3497a29aff0661cc1dbdbfa42e661538c4795c3fb98e42967fdf98e8926131abacdeece432199a5d716c13bfc96f4f0a44c7ae720cd6e0ed09d191df5961d1112666e47c880b0cb7005d6e3c1800c76717652756ab4709f765726ea761c355d05a708eb0eefbab4baa4146a8e184942a00b4337830e900e8c089d81ea1c96391573fb5c966f2ea88d5c940c7222bec8e514e4a47176e2909849c79240ea89db106747c72968a267ab8ac5009c1b3266ee000a01ce12ce425b1b2e794a29e0226c81837443cc0cdc1b192e4ae3ce38776f36ca6428803432f836f836f665cc914553f046fb1080a7840ce5d6658e998be546d7adc59a5b3fe4c63523c38c37b80c37a1a9362a4f6d27dac06dd4b61f61496004c8cb0879e2080d26b0c9611bc2b6b86583634320622dcd9a0ea435c335b435b5306a94436a7f5b6a5fb95a81b4ccb41469e334ec1ad019089d72d28078f0052fbe010dca9379924ca2092d045a170debacf3ec08f4ecf1c5599dd7d9d413334e331f668966119a0c2021cc4798958de9cb2aefca04cbc4cad0c8b89cc958e0647c19b2ad49b2006353c64c8c7dc58c4dc5f4885d8a754812db8a55a1d1c6d10ed162f8d1be55b53563032baa9f0d6168c2728451083b0b0303031603cc0fcc0b6ce8ebca578a2f3113648a2b999f99ffffd78fe4b676e244079189d8a5a378451129d4d933a2e8d845d735058193864220ef6028ff073d71f2bf1aaee61d83afbc63f0cf01023f3f77e840b9ca3d1f358fb9eeb8d0feff79502eabcf6500caf5ff1617e8d614265b47feff557596951515740bc55688ffffafc7627378efd6b53e068f77bec7c3609c2f03ea5fbd9de7cdfd780f5779c7e02b2c0735bfd76ab85a5ddef5a8eabad7cb3b5eebdcb3ce5725664ba5e6bb2ba9542a35df51d57a639ccf931ac4b3cacbcaabbbfa1e77afc7e51e1cae711e278bad691d9fe531d599c7b7fc0f00035977d0ec97a0264198414cfe0f5af27fd0a5927f67e6bde671996bf6ea79978b53ade67b6ac69aa5512b85ff7f6d5543b1d2bdce131a03bddef8f9356b47a551fb4acf799d0ca89bc73a191797c16333f46af56be895e8e7d5bc5eeee23cfeed42ad9c7975790cdec97bd85be5ff9f5743ad43a0d6bcbac6c7b88e97c163f3ff4144fe0f1af27f909020553009f86a908e472835c3f4c8e7eba054a1ff2de364ac7339078ebedc9bdbb8df324eaec361afacac0731103c7740a746d01b519204d456fa50a9571a952ae118a0a6064cb00d108c3dce5b5181086ae4011f47a26bbea210672e8dedab25ca04920a40943c15c99eb80d997043cb9ca53329563b1c240e40c06ffaa16a421d23ad16123470022d860538b80344806587489a38868b8ec4f84715a91a794c192e97ca68a1c873773568674d509af7114c97118f3c6a7919103d5c39eb8ab602869fa8431e2c6c597af426c03a15ca9923bc4c16b8706e6c0021e420ce90296f191a6c1d61d7aaeeca8054e2f0f40cc01060991375625923e631ef45d1661b8f0005574753951d12b68c8f810a00d0b055a104c91df9a01166a74d8f0b0ad6b29700c14a59c45510e5d24bcd0d21cf839ccd3d12389ba268197681cf67f6fc366daa606232217549f5bc3e94b0d147d06580a195624251133889692e4fb8410306ccd65b1eb5254e13a2b428cb53a718403e772ca39b65a4cb314c123c5289f9f1a387c78390a706745684f161161f6b4b222d7461ec31537c6ad0b419e4f858e8a24ee6d38b1e5620e94d8c53143ecb1e1f79944195684864d230d6ccbaecc088c0c9700211511c3c3f753983f13bfc380211583a41a28087c6a44d2dc56f8e9c242104064d30130616a8539eac083a3476d408c0a40204dd060a0579795795018d6e69059df0541aa528a53f0035106c09f802860d09e793e297252807be214c201e30a569b9c231a34226308a8dd2fbe8a64e03a42a38505ea2321b2c1588e3d1c749a25864493586b050f3cd68408c24461a60c35af0d43b4278d1c0888430f04179ebe4a42165b23aa7215b975a7c89295d98933666c948e05d0c32408c129f9808042061c58e31281e90daa46142c447a0f20ef64c47270008300085b4b1c214a659c18106ad9b46b2de45c31e32524740647e306c496924a001ca2c734f1a35222869aa5920b46011b05569e52c02030126325a0474e8242c30631db6a192e3823e4a0c6ab21a234c6c90e12bc48d4e0f174557ab6082b07e85dbaa451ce8c4dd9a1817f3b032c641d85c52a9961c7fa290043ca07025c788f9266bc46d6c3212ad48128f779172bf6287830f841105b79ca84a06fc05a22d3a8062a0d028c05514e9f1c4030e975b0fe2207035217a0209421740c3722129c513b647270f49c9433885811696a7861d5084488106662d405d52d35793bb393e5f6564a8a928c387c968c12ad94c82deb7871cefd4832a4ef2a983e20d18d2c9b29d10273b44b44c4d935e6455bdc1d9f158a6d7b88c343a63845e738980a8486757d68e21928244963f50655dd43226ec44d0c9a0a76755664309a52c1146d410d298b15591a826819a3221946b4402c8bd40c1d29a89b80a091ef328a0b7ab3b15c80fec6c7ce0943285020a25287e8c5824e8962051010e69b1650413348b831419068d24bd5850f22d94911d4511d1dc0bc47d8cc8b3a26f04d9dc25b5a43786cda55a344c5ea1f168c191a99a911bd49c2417a3193630d75f9bd5b18fe88b50069a9e2b6efd05ddca0b09844626a03c618c987026264e8e655885f41a4650f4a8fd090dd9931241819c0431d40222163a010e62afa5961611e84acecd344c2aaa68b2d11890a4c1a41ae25a992a94476b5d0a7b210fa458eee081faa82e7145439577913d5d035848e2407144aba49bc60cd1480961627049cbc7181b466a158ea63c812b072ae546520f888d7e93d622735f973997d00a607545562c12d06c686ae3f4418e45a289295539a634e4300e91e6c4c438b705151ab870e4690b8dd44fd1171d524aca51f4c92cb8869e37333e4e238004f16f1452a090632e93e78d0518298c348a9d9f13b532743658c8c178bcd16a1a7ac1ed80490bdb16267490e8e0f76436218d1d1b460ab288217bea8a0790a4f1120c9071140de1c8505157412e891e5a4800146073a84456c9e508f34379c27ed2c3479e70d3b6618b100ce0125ff4e848d253046949c3961661f6a04070c6a44b80de542f819961d4e410918643ebe8690c940e1f7936d0f119c115395a63c5e6c303250e58b69711dc0b2f542f72720ac2f0405d2820f2bb14bd551a1943533e455912d5ef91544833170ea9083d7dc1c2e1b754b5e0c8080cb713915c0010a2bd9973c4a84e134642f18b0c5299094c72912d1011135c94c12c1428c0ac31bb862f1ad092911f142eef08412c389202eda8a7946244e283133112266514500e01308a70b6201ad4f64dd15a186c80f150c07d875860e20ae5005001f240852d4b7ea4bca8038e9ab21af091f0e3a18809403543ad4241140692cd8f41078e43394ee0597844a0d6148460d00eae7936a6a807cf000ad5b223126540dc312cdcc3e2104b52fc06288accda34f1e88950c0292763dc34854b6b820135bde21b553029085386048a8d1824049545168b10c83103314780286318cd14e168ac3e78b21f612c8177424b042d1f4e6f48961cc49009a0bdf4d0e4d1d08e11a41731967cada5c90649fe5dd1e2e3014c2388cb8aeca520816e74a0c97cc2de9e7e123cd6e17175cb4645d0912552d24212f54c57924e245cae6cb440121886cc14fad1c708ac1229826eec7aec5de648343fe1c033d23874881f5ad97929d0e6019b24238456025b55a62718c4281150b08411fa832961cf1b4cc0325e13db238c0540ed79c9530800c676480dc24ca5c332174a7085f6cd6759e8846e0f1de853c502f42f441caa382c117d464d0c5cfaf84d895240c4020b4e342a1c6ca0665922ddb029a5f1c1266a10e0a3c1dc81dd48904801681bead57545804b045f86e6ba484790a3c6d4647400f82c509a7c698ce268a0b684b8442590cfd188c51685be207314b98cc033be2ee3868810f5fcba3d0e246fa237c6af64d895be44884fd6448a4c2353ad59c04916270f3c0bbc5abe5c33cd8cca28656672ebae3e24461d51b0a27c40c4e30b25a5da8c452f51c6c068c28961091311bd40196635bcd86a5a611398fc0c1ce925de0162a5eeac6e451e200f338e60298a32c1d51346a64556210f893f21405f9a7426d73c5905aebaa860e5090901607a9446c88a0964a69cde013aa6fb4bd09c22452a72427f34651b2f6386e352890d4e06a0dcb4984223836d87a019a123f710a9cf469d9a27c545169dd20721f81cd5a2388d3412985149117535044b06d5231d271f83639e618951ec304e968e0ae010827407049abd12d72c440eb764c0e8c3d369ae261bcb1a9d137ca87aa614eb2aa19ef6f66c6e0d1d1d54117c90d4d200479e24c5263a6c3c19927a2c13e306184b2379682a57ea3812d032d3abc17087e38335878a0a52470888f76a64b8807c4bb098a5b4a41fd99d651c3917d780f91d56b9031d43248aa3444dbfc0ca2209095088964061a1a2f6d643d3f4c1c1e8c064b38c0b2519662c608e6052448ae0c0847644f98002a1f3c53a54cda1e755f423dea241467da0f3fef802d78640a4da1e5988c00b4b5aa336e98dbf373b8d3e3692e73b278cae6065384592d865c860a7202dca25436455a553f5354143850ac1a7ccb935a8a52f71735f5d79c64c3961858771082108a31b8062917a36a28b4239e9eee4a6891c3bf0d14824625d73532e109269f7c554d8a61d93e24910b208d0befb8d831247b78b2b1a33933a80165f43e43462302392e3b66d5323b24d89fa8e90400085509314d49e319f0a8e0a7ab981948eec3ac2314604e27f81574563e40dced79193223cc4c028ffc2e0114b287f553e3106345d52a173834a008fb8f3cccd96aa973fa42c302bc7bb2b5dc6ab2b7647472a3b8b2eab40200c02aea5602c0af317a531cfa9c710c5bc03c74689186b5184e048f2412a5245c18ea7881cb3367d016f15a50f5df543a403f1836725c3dd001e08e2f49ea4e4b2a8dc94e0b611eb8431a42a4720498d327a814165d39b1351a9299ea6163d19c778a22d0e929d0d4635474234e99315392de60e359c1c7668cd0aa5e732495d34f9046c398798b77b28f6d0dd8982268d69937583c1c71bc3a6cc9e09586850195428e1a5e91b8175e56c08b3ce990c25f2e179f3471d18215e5290555c0990836aa846d93ed060da33466dc8e1a258338a0c0ea98c1ce10611e34dbd2b58983d4b006000f6a0315bc878c3d6c681448e10464fb8abbc2d57a282d8f5e62f243a328882c2a6d20463a08528ab6a10a9e5e06649520c200c4e1b2dd86226aab3473034a22087cdc154e69226cc91021d32785189bc945778338c8869638644e68bad4f8769eb0b9987cdf009325d76deb8c023a78cf4a401f0c216472682130f8d6b98c25420c2244f39eb017978f585f1726439ac4c9a4c68e8b6ba21df1c596c8c2d14e38e0ac92cbdb64c70523fdee953a811d345b7a48727655899695d4baad6122c9a9b10a952625ca031ce7862c005e10930364840776674d45b5a8c5808f4d033068a9b2212666e47c880e8aa806a4162a61922e27405d6e3c100c6292612af7c687a098482b4480212eb810a0363ae72973794b81068a141b0393c873c5b2714801c194dba9316eed3eeaa44051c447810909ac1412be9a8e92a3845f843c7274fc80ca30b29fd47d6297db223eb382123b670a55ef0c4d842ced2e5da368ea08a307d7122329352a839622409a1700e13a71c0c002740693340c030969a78b7424874da925c7281f2c23ae0e728831c62c80de38e15e50e4a5405937578370bbe0ca8bb6255e1d10cbd4393e68a6a481a32631a4540ac051c40dd290224f3a252aad83c5bf390802c4ce9524b12496a83043ad8b420c03894bc42a984c152a8b25c433284678f65e48d6d540f709cff85046d3c21aad7e984d2b3842378fcd53d158c1e82ecb093372684511a8e7e8ac7e68cd61f6612bc0c149488ab4a4e914ac6354b3a772965d4281d58ca73a04d09339a61b81441ab30440907cd8849bf20694da1991a91e4ef15ce222a8850c8e1019df2ba0d11a45b033824520713891f743cb2b6da9c743072d4f83b131c9949c79240e6d992f9e2eb85c0d4ce6191d0821353883091c410d495291cef4436756d35a9a0560464cbc7c999a0250e1c8e9ae8d9aa623120cd1349a08e6264fe2a2263e60ea05c1a40d0d062ea22c27bd254263e1fb45cfc8ae7599d7b5fbd5daa74caf5f160dbf081b4a37f3e1db43af59a5f755da7da54af35cfe61cb4591cbfabd5dbbea5d42e15a7723768addefb9652addda94ebde6b875eaf3e8e3a8adda521debb57af59c6ad5addedb26e1d3a8bdad3a17c7da37374bc5e6526a6edf207c34d8d11b3e19b4d9e9f4be4aa97af5ae4abbb855ff5e6d3ddfb3b6edc18751abdbd32a962ac562bb38d64ae54a097d16b559ae7e7babd81b8bb5b9b89d7bbf577bef52c97adba20f062d978ae576ab586c8eeb58af975b55d4da52dd6ae754a9355bad4ab359eaf76a0396753deb1df6b9a0ede6d99c9a676f699e4fa557dd82368bf54ef5e9d4965af1e9359f5e7bb06d576debb5abe3f9244eab582af66a5badd46a163bbda7526a768f0fa236e752efab5eed56b15d29b57a772b7d2ad83e877614f7316cf3a1a0bde276f6beb1d669f76ad5b35c6ba116d7ad3737bf5eef6e3ead76abf8f76a5fa763847a566a77753bebede6566b75ca1dd462abf93da55eef3b9bb57aadf6fdbdda3a9f8f753d3d8c7514d452a9d2dcc6b3572cd596e6b994fbbdda56f304addd9d76b357ae14cff3aa977bad7eafb60ebe36066aad37158be3dc6b4eb5b3582e8e9fa9526a957abd4ea5b6344ba556a7d4ecd4ce56b336569772a7535bc7f97d4cb5efacfd07a8b55ea7788ef5ea56eef4be62adf7f76a97f9be9ecaf837ade1a7c5a9d76ed7c666b9d3ac156b67b3662d2ead76a75d2b8eebb93ebdda79599bb5a9536a57e762759d6ac576bd58b5baedde6b6fafb4cbe5766faa57caf572b1b8d4e6b556aa149fdaf9348b73ab552c2ec56af56971bd9ae7b955bfad556a8eb57572354bd6da5d1dc752bd3a769ae5ead56ef77bb57bfc3bb5abb65addf6ba5f6d6c753a95e6dea9978b4f6feb55ad6e3b38be66abd6ab9dcd4aedac347bad56effb6a77af532fd74b95da378e57edfc7bfdf63859344aadf2626dd59bb566ab556f35cfa9523bbfad54b6b0966a5375eed496e6563deb9de6573b1abd66d5eab63e17f8b4b93ef562a55c1dcbf5e2b89eb57eaf76be8bb7bd3ebd7531986793daba18cc93ab6c7bda2c168b77abd6aed45af576b95e2f56ad6e5b08c6dad76c567acdded669d52a955aa7d4ec9dd5ab5edc8a9d4a732c6eed2ef96ab9b8349bcd7aa7b6952aadde55fb7bb5b13abf83f1781cf78b6a5bd5eab657bdae4ea55aa758aed59bd5ab52dbb6aad56d01bd5aea3dcd76ad385ee55eb154dc4a9586d0b5f6946ac5a5556a57efde54a95d8d46c53b2f16adde6a75db9f11b9567aebd8db9abd732bd59aa576bb56b5baad5d977abd6273bc6bc5afb934ab73bf571b7cb683ab626ed5d6a5b8eeeddadcabd7aedad5ef351febddf1d92d1ae5753e1e17736ff3545eeec7e77cea0d6d0a70ff8a46731d70e78ab54d556f9b2f937d7ae057ab744a9d5eb1586bd53ab566edec949acdefac176b5bf32af7a666a9d53b4f2bcd71dcbe7abbd39b7be3ba74fabdda5e7cbccdc7602fd6e6753d5d6a43d86aaf57aff59e526d2fd72ab5a7d7ab042db67adbb634cb9deab9f4d6bbd31b4fcbad52a55c6c578a4ba7d9ead54b1defe3ed99bbbdc9dee9d4db18592c1abd79dd6f9f6eadd63eb168d43a95a2b8d3da58bb4bc57675aa6ec5b9d269febdda7dfaed158dea63b0d78bf769c338b8cce36cd12859dcb522b1d372adf8346bbd5e6d6fd5bebd778e3aed958b5faf569d4b9556a9529c7ba5d3e6dc292ecdb1d8bb8aed72ad55eef76a57c9e69d1fab6631cc69ab55acb5eae5ea5529eea552ef2bd7dc4beda9b7b137b4ed17765a43ce874c9cf6b6bd59aab7ebe5726fe9b4cacde6392e7dcb732fdd0f1c8d92cd3baf87b549c069a7bad46a7bab5edd8bbdbb522f763b054616b35279bc69f56b956aed4af16ed7cbe55eb1d3ed35cd4d8b576f6cd67a7373a9579ae77a75cbeb7f3b794b96deb7589b563aa5e2b6754ab55e71ae6ee3ddefd51eefdb6dbf054ba9726ed16857dff2f178347aeb45a3d1e82d8511e1be4eaf59ec743aa54aefe9f4c6de56a9edc5b955ee94ebe572b355dbb666efacad56b7fda1c0a6ed56bb79d6ab4b6d6eb72bcdb3ddefd516f7e02f99dfc57b3ed66fdbd6bbb9d6b4b68dd5bb79ae5bb3542f569a4bbf577b1b368ba5633d70df7b85cd69d16834da9377aa1d424d9b77f1abb43bf5dedc9bcae552a5dfab6dd590a6b57aabd42ed78ae7d5ae2ecd5aab20d0b4b6d47beb5d1bb775dca6e2f8f47bb5f5f4f19d8775b018dbd41bda54540a79a69556af54aab76be77615b75ab3d3efd5eecb5befbe159bfb6a9f5834dae70d04f7e6ad75ea0d6d2a1a8d46c9de68341a8d46b3537bbbddf6796dbbcf7bfb7031d352b177f76aa572add32e579f7aabdfab6ddbe33d4d6ae763fdccebe25daf3cdec5589becbdad56af77cbc7df9569a55d6bf74ab5b159dd2ab55a71eaf76af779b7fa6d87c16533b5d7fd7873d76a63a7db2d1f8f4f6db5ba6d179996ab73b1d66af68aadde52ddaa4fbf575bcfccd5f3ead4dbd854982c2ed3a965b177fa36a6bde2d9aaeecde6d2bb8b63f1aad42ba6a5e2b68eebb8748a57b938b6cbe577ef94f43687c962f06dad5ad5eab65fad96eac5f3aa9ebda9d75b6ac5f1ab5e16935ebf615a2eb64bbdf3acd72aed66716af606d3da592cdee57a6d1c9f4ea5d2ac74ea6d2c1f97fdeddff318bf5ad5eab6de2f2dd6ebc5efebb55aed4ebd587d8abdbdb4f6f49ab5dab8b76a57a75c1ccb3de361720f7e9b126b9ba252d5eab6655de27ddf86737ebb1500414bf54ea959a915cb9d62a5589bebfd5e6dac7de5e272b1536c959aa54ef51b8b73ab59ab5add76c216356bbda9d9ab547a4baf77759abda5d42b9ecd4ebd79377b57a9536f361a8d46a755b296d66b57bd59ae6dcde2b63e9576a75eefbecda23dd07a73ebddd5b1d4dc9edeb8b48a6769712c15cfe2baf54acd716cf5aa7faff6766a5bad7657f79b966501b17e57add7e64af5ea156bb5ad77f7dacdbf577b7bdbd6b2d83bb55ab138b63ab5e656aa35bff5acd43ad53373f5b06955ad6ecb57d5a9d82bd6be4ea553aad4b6ded7eb6ddbd5dceacd767369166beb54ec8d67bf57fb3acd9b6ab158af14b7bbd39b6aade2d369f57bb5bfbd99bce577afd546bbafd42b966ac566ede92dc54aefbb6a5ba362bf7038aa954abbd5e9347bad76b9d62b17cfbf57fb6fe7f5b6f699ad955ab3dcaa946be5ea78168ba57abf573b1fe3f67d9d7a1b9bf29a029b7a9b7a439beaea717f785b964eaaf556bb37d76adb546a56a772afd4efd5de5eedaeeeb7fdc3f96b55ad6e8bc5d2ead32ade9d4e6ffd4ab566a9b7f47bb579fcdb95dadba816b7e25e3baf76ab56af75daedeadfabcd97fba9b7b1a968b42cf646a33abf777b7c4a7a9bb7d8aa5add16ef4a9b63f3ae4ee5e657abedcde2d5e9f76a4fbd8d4d45a3d1a937b429bd8b87c9db31784bdef9fca6f265329a95368bdf5e6b556a63a939373ba566bf57bb2cf66eb3d5b2d83bd5f9bd4b55abdb4a1d6c7b33bfdd3235c8f50655622a5be7bd5b7e2fe34e0ca8164829f096cd53f656ff6eb7dd1e2c764a30954a314040555345594131786ae0246daa62aa97a494a8d6a724c0fdaf0c85c48777bb3adf91b57ad746d8dbde6e6b2803ba5f2abaf79d6722e2ebe2dc7078e71b1c60320055c0deea7a4b43764fc0de6ea906dc6429014d424e01ee0400ecad8267ae5f836e5ef7dbbb3abfddda7cd6ea4deeeabd15d0d90be675bfed765b06d413fcd85b405c1ce5636ff7f0760f6fcb80fad2b729a31476f8e8627c1c14a5b06688c087c2628517893f020304080500f00c02fa7bf4e4c173c74e671d3a73e4c481f3c60d671b366bd4a44173c64c1932633683c404850173e5ffdf20e8c4a78b4c7dba88560f2033043e94143fbc7e9430172d5bb410098541a1c0668d16203e3f9e50c9f7679627966726e513a52b56c22e8c11162a3a690a20e15985ca802e4d8c0034803691429b1875792f28a6e40913242e902592957970dad783bb56508ff5f0580f579908e97e5b73e2c8a021428483383608975c3e003697e3ffff55c9d9eff9e8ad276696842f8722c182c57b790f77cf5d2cf44885ff3fd7dcedbddea79467143e234a3d0fc6c9532a8b44de761fe6263d49e609d76103c42c710d5b9cf3229f590194360d6c7a3c24e16432a9a583314c61c8e5a659c2c7f1108b969c023f3621fc8821ab6962814e97efc187ae36458aaf4d04c1db4b35aa92ec0a70c7c799510ac106446048d1a1877c5d6064c09baf24e122036db4282216d28862a1986324bd6020d244c247970b3351a09079a8a2400415c8b92f493e3c65826a6cccd9938136e68a98d01ba90335ee78d33889e980060fc6933415763398d8e052c5068419ad265292a41c9380b71c720ca8000d20e4a1edc652151d0a8402e6f3c9ff4f27ff3f9bfcffc4fcffc9e479f9ff53c9ffcf241f0ac4ea89e4c890910f05f29f45880ca9f2141204c8ffcf1f1ffac3c5d3f2e9a3870f911bc4314e5bba31a906634226dc055921a295c40d933104068638ba49e0404b2391df85c7060b75566aee589bce1a7c64fdff6c5a1163aa09cfb35a7778f3c84ee3227b5875ca797e22915c30c94a72f447070e8f2e31089fd43590bab1369d177333d21d86ff93c5e06d546a47a557df32bf8ff72aaa3e7d4b060746ebac3ebcef655e2f83a13a6a4073d481e2a8f3e4f1dca1e399e389038aa3afc1e33f4dfca78dcaffff7fd2f8ff39e3ffa78cff9f944f181f5a03f0f9c2c5b3c5ff4f161f5a03ed39f9ff73858a1cecf74cf1ff472179e269e259e219794f473c45847882787ef81a3c6880ec60619083e3060d1a1e1dff7f22126af8ffd9a8e199e1f0c9b828884150f18285444144c10a87868214049f8582ff3f09059f8382d017884a5c189910f8ff7f84b650f3fff9a7c6ff4fc0af37068ff56d1867413419073af90645f1058a22e84bb6f57ab76b769beede136027b0ba09471388fccef361bf5f068fe1ce63afdb2f2b6b849a1160beb80b28bdcffad9d3fc6b104040d810770173a1feffe71efffbca3c4efeff49167aeecfb1f8197ef23df772f0ff4fb0f4f9fd4f3d28e4d3fbd49f39f7ff67970bb9046940dc057c447cf4fe8fbd5aabd4e93d979555f77b8e121cdd7edfc8d938e6e7c081de07ef433514b9e334943580a771fd9d413283872fee0272f7f0571e06cb89e9e1a95f5616949111ca48e19e5aedfe9efa6565dd53bfacacdb2f2f9bfa718d7534aeb18ea68b71403c4d17e363aebc2c2b8bd7c9e6becfc360392eadae1e67f6e67def65b5b165e77cffe2e2baa7d8db3663cd679d8f6acdc166a8625996b31068f23659304fae729e34395718ee615f58ae414cb6ecd6a872c90f123508f280a19ba184310dd3140b7dbd985156de8b0f61845499eb1074112118a5b48855c8018e831d444c9a959c254c30f8c9c330de0d3ee53a087978820b3376d23ded318209204f56d2229c8fbe2f01a2b478d18ca367c9a288aca02297d146941c263456516b06312b6c72213399c1c0c1881138b8101ea9533101ca49dba6906b9e61e11d1f3e2007db2963019d331342e88992a3c569f4a06809a473c10cae29369ef0b6f288399777cc40843962d8978932478ad90317608c30d4445808ff80e9a52733b532ab2b098b9d9918a2b11f8a814087f5c7901436b2964a2c701208221640e3b00275b0bc173527aeee88d4269728755c50ba58c12c4ea0c59160aec259be22f16890940453300294e34fca0485ac0046e6a51e2377824a9e52c8b0d06381e2809c686e155607080609332e4ad841602595e15b85809ee9da100ddbb08302bf43056f22f2c4f0c21bc1824e83757188b76b9a3a108148c71d09d3fe67328c856e81ca4e90c63d299f3f3fdac6585613bb383172c2d4ddf86287c6a4658e254ea7911e170f9c314c482d878ce817863a949495ed7086a204f26f0603b899052d89c34826af8f45e6d40c17a4c9192ce892c41830e6eb4304ea869a55651d0f52666c1991ad27cd9ad07004cc83208959709ea940c0bcc387132474462617b313970e8cecdecc147a99cd5031c12a1180570ea40e2ce5c87dcd86137e960ea01864b6a9b109a33363cd6bcef321409cf4cb7b584289f84a8c17435e2871887db41f20f7987c58d491e79421d2823a15bb812772315c3ebfdda11020324e632207279277ca4e4a8a08f050e78d02a91d3b948c6b3b92d05191fd2e85a9a9a261dcc7e1af730c963e0f49507ae89955c52ca43cc3f445213a2a6365e0c0b7442df4e0c49b252a6884b020d29b2fe61ccaf8f1352285269ede9a14516f28cf567843943822a744af6c6dc78d2519ac06d061088f75ceb80a7d2b070c8a853922c5418d9b1e4ff6d8ace987638643525cba9294ce68bd6911e4439a37868d69b414d2c5cceb9d9898c2c5697c8eb199edb87e3571a0410fdf5e6bd18a532223cea8112ac7943a65aa6468b3e8e4258799983dda2498483910c8f0d3a3c8e8020654055e8f2a4f5b5810d5c10548d126ce0403e72c1161e35a010474ca7b04f22d04d93e31a6715811960a6a22eba090f367453db1e2818f0bd63b58e0181849223cdc4061114238040631b12e1e654922ace2268ea22919561b7904f410626515b3cb0edd49eee8c4789c0593e40880800e7762c6e71b80fe90c30b020cf7205781a126232044d2ede9c003aacb90ad0a0a2f667269cddece975785a90b808524cd348b99821517a03b5220c1523f58fb2836e350393c9281830c8a9b2de108a73d527a8a7b36a620181b9022ecc087550c8e1b060149207bb401026693cc0fe19c247486305121c200844a08136419fe0405e90a41385218f0420a90285434c8273848087197d586a4c61b1c5f1cb98c7688879cc05106858e33e1a9390b07129b4e94a1d293c3fa41d12e8a81064b331e82ccd4580b4235a5c0e14ecc42f42492c18694d51eb02218cc093e69d769557643e11c8f095fc08a0cee401104c0c59030713101881403e211223c1a2b08d0b5213f3644f87287cc063c0392443144431ab86c870b2c547511d4f55618066571518711099406861b5e1579e6863225d6b8d98262cb2906b6093c2c4782c6232e22f04a1a472798590cd700ca2d34fc44850e67baacc1d4e3a08a60c8998b2f97583860ea29e3bc6493d70001cd7533c726541564cf926d808bbdb6338926ffba9a4358cc119075424d54299149d9872bed849d209a51235a2e064495d12b22b1c6eeeec98a10c93255223fdc2d2d01d38626a6c717b2334d665e8ddcd043624f823d5571d3280d8c700a8b740f4d39a37fbbc8fad509c1c840434ca186451869844c186a291dda78ea5b93f8862584094c891d489c488729540c871c2db638297463b8efe513147dc8ec8c1009373a4121c632ad2ac11e073acc7f1b84ce74a8b342ce820c3dac5086310f1384cbde4ee0625fde245610f374a60a13af31362ed9788801e4f7e480a98752cdb35329088d627bc70f4b426bc61701895e7c9830d22da0218d83331a20c750e92302c20711980f4b562918d441ecb0e224521912c7e15b49c6d1f2cd259ebe07422534b97c9d2d704329939ff84d047c2240ad0165cf8f794415c46b558bc139b09104d52282e632240bfec2284c7c28b761d38a2a4938f0a821870417427b68d2a81877bd2aa8243da10f3d05219b4a2c16db9ce1db622947ce9ee6f6c43df4818e9644293741d1012cc727889613a652284568c3e01b6d2f6ca3eca8bf3e986154f0c3d140924c1298010c5faac4206d8144532c4e61cf2d0cbc38c30ece70289292d81d1214b6460b18376a3e47da1c5d7a2042f580f547472673c09e3d6022ac09e0b4a105e6429dc9ba366ee86821539870b8e0d3c5e339a5e06ace8298ad43e5a0062c403e293dec2eb5dc20e46fc2222cd18b8005c33343b2cde397232eb02a6c2b623386cf324783a204808230663a1a2b7eb07a16a6cca9124e6e2990e6028aa820bfaa3f321b0e5429e151295a11611991af251b1fe0cc2e7e15369a1ab0480b0c81f1b0ca306796882213288d455a92ccca28557c3c679cf83a82d1f6258f092dba417569869690b837e2a9dd0a1fe621d1e80c1a097893ba94abc20a21c46e5a37ea889cc4d9123943dbecaef99a84e1a6620ec055ca4dd11e9242ce3c022828e9c3632cefe57909bf8892a6520d0c0c1c5c2ca983e300c35d1d2255f27cb5a2b82d6777e818bcb043a031c399a54eb0f5c1224108a0326e138281b4de93f29567528e09128d190a41a441093973f0ffcf0759df9cc5fe0f0ebbf16f2d7e121012f8cfebd3faffb3faa4064207a33d1fede2803a1616af97c16e38f14005c3ff4303ab400379fc402ac01f8003feedb7fd8bf15702fa97a1aacea2e2ff725ce77b72ffa956b31f98ae1ed783c95e3d988ceb8dc3643198dcbffded6066273e75a0e6b6376879b287f69b635c7d1edfe65b4279a7a78367836715b40feeff1fb4062563a162f07fdd43f715ff3f17083d153ca7b0df3cdea460384170ac8597fb44a8f8c7df8aad3e2034fce5efd0301b344cf47f3d06d780f918aff75680e1049d07a874d0cac8454a2a848c080008c90c00002000431340304828168b4543a168542eeff30014800241bcf0408134970ac3718ee2208841c6184308208400600020062955640608d49af324b9a7a892fa2cd6c3edde28e513683e1f137d7a17d2aad18d856112edb6d000fa5ddf3e253e5add3515ceb947df3cc58e33ddd8c5cbab52433b8f520835054a1abe025ad6fe57063f607fbd1515073d268061e2917b2c57620e290767cb43da77421d2f0ef1bc40098e6fdf6e58d01d32dcc84e01d4e317bbcaf853b795ab4019f5bda00bddc1c60a1ec374883b20033ac59e806eda1ace68a1789fba851c0ad31a3c34dd9c3f3ed279f438926a661bcf11a79cd407428f441572c4c75e8fe424f6c89ca6948e673509a80feee24ac014d71cae94d4357c3d7e5054c8a60c573ccf0bf81f8703b6da92c80f959b9bf57c632f07a17f62d418d535db5c681208c743ee40108ab9f9e4bf66fd6f65f9dfa62b0aa37713c817a6a74b478e2a68f8fcbbe5a27bcfd575c5f8a01ec4aaac7e5e84e414cce098c046e2503c081f9072b018bc3daf4ad0dee7a6ab637b242ae061d5786a3c4eda8103f445bc9ba52fdc5e697999972574d19eed3d3813ad3bad86ae82caf1debdd31b3ee0763c01df13d8315eee011b78a48292709db08575f03c683b009ff02a69e4e544a7fa92b07633d3611eb0a7186cf75247203b9e8c511a5b611b4ace702f43767679ff6783c4c64b0f0a53a8f30746e617a18ec07525eb4b600c795f0353d3ac3fbb79ee72789f8382e402ba24c003c0808da044d8b9e41e0d817e1166f0ba10b22c72cfdde46956f1d77626d751717873135516aea8bc8460e1889276deaa7b68515e13eb8ffad99b18f4c759126380bc7dc2e057b95910dfae938d93a69162935af472bff299e85449470ba89482ca2002480f92cff32cc30254ec8e5232efd4af029917f4f427708418b1b9c0973c62cb3dc21fa238ec5bdf2107b9179b562fcca60bc3e5c6961e872b00b6b35e40e0974b6f7d75031ab47d12ae24fb9291add60e1b6af876b24f1667da4f6e2654510f4743cbdb5e701911ea5b4c6d223fb50a5c2c38a6f4c0a99f46499eb4f2999e032b8d0152ebc3813e807506717720e087414df653d239d99877674c1a74244ffedbb0adf0a0d3d839831e2252a9e5ea35581e7ddf81c399e9fc14338e529fc968995d68199f8bd8a3a13d8912c4dde3f2427e37fb30e5c3bccefd5567dd7086acd3c0ab9b937fc2a76bdaf03b1ebb1fd030f6a5bdce0aeaef31fd7038654589ffbd81f021f430c2a12c2646cc1540ac045cd7c260e02c347b052585e1138af75ab5d653417b0aa6a2a48cff6accc53d8e0cc06db400eae82be681ceed589f885dab4da2c6a18b347deb6465408f6145a2582803939d00f5575158797f38430a2c6f1ce2b25e5ea06ba64fcdbb4412acf525c2b5f48afa81c422cea6ccc7fb564a62ec83cce3b1fa529d1a36af494514102440caf507082cc88d2ae9a5191ed155c76d837bf04b08a36f1593ec8437266dc563aaa51857581b6366fec072b775516a5a0dcbf2f447187771b483f876a0f8dfa22d54a5553052e0724690167b7c12ad2c825c98be2abae84597bc0bc79b99f5a16e66a113a4ec840c028e64c95c73219f81bd5cd432a34e713930f1fd692787314db8810cd03703863f2f7a80843f90a29ff0367a6575842c279e80b66acc0aa135495186462e57551495bcce5dcec8d170d583f6b6d19d3b0feba426969ea815b4436af86447abc9351b71bdb20bd93f6c009cb940619b261705065f9300dad1f00f74ef9072467235f31a156e06b79efd0ddfe405d9aa87d05150355b1e62cf6663c3fee39fbf1702090611b0cbbe64562b6498a0966d99b8f1f36c8797ded4a6fffca674f76ec5eac597875e7dc04dbb498878238de296863db1b256fbf4094d80eb4daec8c98e0eb8af16c68d155e06b1f4a02d3a8ada9e93f952e039554ee2d2f12f064bca9c3103b8fdcda0303029cf690be4097430d6801f3a4b54732b7cf280476d0cb9b5c184f8530081a9ba613215362a64153e8ab019a205e4a8c625c61bb699a82e587fb55313660eb2065f032014e451f86dc84eab60c241876870fe133e1bd6d268abf0d3213b980627056380ce9d1d82c13fbfe6005cb0efe8271dda8069c803478ec9880019a68fbd5b8a33f1e6228d1d5fa020e2b0e374faa98fdbcc677f0a004196ab0bc113549410af71103eda5848ce87fa32da56e4a2f1d8f39df1dadd4b2856134e62698fdc0209839dd2e2619add5c759c28e46e446b805a5270d36db6e5269c5a000698caec87ff7e3f326d40ec59aabc0e4f835d2f71220ece70b1e4f28613bd46781ec3941f946539ef2ca601ef5feea1445aa965171e72ee41d1f03b47af4874d17a8aba8c08c4ff73af1e1b5ccd5361fb6a2a24fc93759b1a33113912f4d9587571fd5e741e9865953a2d99a1062d1dfa111067e845172cd1acdc5772484ec818cf74264e3be811e4fd050044e74c0c78656f1667e9be52c0cdd3a357f7081e70e8bc51d26efbf95c7494568df1c19e7552276ff4bbda4e65f872875e6346d0bdb3ff33d1cc5eb2f0bb915b27e03cc3b62ae8700687f03a88b10951b6c48d020c5ae10bb1180cc048453f268ad352ede37a9529676f805fb3b0281d724174eb9d24fe21cc6b73f7c85c99d3581d16e15f23ba15795fd03af29a21afa2df3e61a508fef5e9a24ba3c9b8d19f76e2ac788c6711b909bb236c6f9212820b763312734808a9f9d6fc4f3f0f4fdc7b8bdc0f24d706febce96a9d7160ea5dd1fed0d151211ea26e7980f4fde468f3d5684156845f93f6566c4f9eaeddf9683f1e358be40beb0e66d1efcd23e30f4cdf2f0fe59e2b6a29dac003192a36d09c964045936efbfc86f622edb82c987f3bd18fc63f6ab3f3a053e9d174281489f7ec76e2f5aaf7d471e57d0b7cbc6018d98ced65e7d45a514baef80d146a9cf186907acfde2679aae492976f3c0ee3b29b4af5ada471e08773fe59d3a3ea7e04525bbfe87b75239f15c14f48d6b65ecae6384e84c8089c4c9576e949777b10824c0b775fe7ce38aef438d54a5bcf95bd1c7eb6edf4836ebdbbfefecfc0bf0044f96c717e326ab902540f60d6dc28957df84767fe272a5b310c0d32b0e2b8690e91d1045cdf1b2f5773e07dd3bb517def57b89b83ef9a50ebd5c0de06b97af716dbc3b9f9331bec4d84abd5fe9ef1cae3532399b51da3c5652d3a5eca74371b7ae2bb95f34cfb9630dced9d2b2cd2e99f6e272223df7c9579f88ad214eb8bddd6d77b3a9969d7b4cf8eba070b4b0388ef7b303f1a958cf66a57df325a5dc8ecfaa68ce6a5be291099555d0d4465b62d9bd7f710c2dd0ebf6e66acadcb08766acf5e0e988a855517c454e04c80f3d23c465840a9a1426ee21e7eb111c0e9da838d67b4ca3ed8bbdbd8ce6bdc7fe4b780fa9eac90dd36a6f38cac8f8c76bc60587eb96ddc3821f98e53120a77f7cfa696d114d4b7b459323a3e7bc3c9db977d27f1dcad255e7c57e58b6185426e128aa57894cecbf53549b88e835ceb9afc94fb7c9db784338f3acb1dcf09e94620efd4a791bbdcf2db36f4479957971dbf61d4ee39967c4e2b84861e5bbf567d3ae0970751e722be9e228bb7eaa9de9bc843967e3711ace5815e56b7823088c77f45bcf9a4f91681ec8a387c846b301c483c249e97d93cc96cc140c709f1e58e05babfc76120ea79d404677019fd11abfa2fa9d3cad8af54b6305281877766d81899bcf37c7e8c9cd99cce0d6d7a8671916dc53a61985eab887f01a28d6ec44729df78924188ce89f376fd9e5737f676ad1f9fb1dbf525c68d52e1a13f2ec046a57f539e7eb2be0bce4043bc7083bfdb6280713e5f89bf95ea028d58b2c7347673c71a51fd558d03d88e63fa2269601673063e21f6e060cec67d94426767a34c3cb1ceda55e8fa16bd0e6c2e0bc56af1c2de101a459bb95612675c19592a919c1e16f629f6ceb06a1b9292e0458f7439aa62656c78b24e8cb4d1e617aebcc1f81892e8d801c53e4c4328070312fdd00fd27e396bc0c3dae663d5959125090fbe52b830f76cd4c04f3e7f47b055cee782b1df6acb5166d64d34659b91f9714a0c2ff3d61d6bc780bd4dcadc2d653fb71502d5db291987fd949af638712675efafbc7094c4a0a7bf462bc823748ebaf98f43f5d70f1f194cfffe3f5e8091ef940faec3f68c016b1ce6772eb3bbd790854a302b376e5c3e1b6a9a4843f72e6e91cf4e99b09dee3b8bf6401fe57428cd67e9eb43dd61b32069e6766bb31c672089dbe133cfd2f328aaa36bf6307fd14f817dc2dab595053fc4a5b848adf3d55f199c20981eccc210b452fcf56b551ec94790353ad6b6c7ddbaa29ef9e0c29e71a8010dc724c23ce4c7af74c48a505d1df3e7a4aa6985b23a92ea6cb546354cc0482585c9de64b024494b37ef76eab12439a2b74eff438a1515095a113145db5d62b814b570e30b67354dcbb69e4c3fcee6846830c36e7b180931f3c0610e2af4efc4327a6644b362c6676cdfa3d1d06803072690179cf10b57a9c1245b48164e87501614269ce6e3933390a9e0f4316dbbee2d9a7f7e1be08343230738e5791aafb8489c2dd5fb9f1762b2494579fc0059008c94d340f3ab8d3d58ed5d14e9b880ed0b05cdb9688a111eaf57e1670cfdab30e4bf66dddd98d12cfae662eb68e081adc2485dad2b4234168c4cfe9af9d49ddd4bade92fc37911561501db3d6b1b3032d03ac14e1ac65863c1c41523034c9c9ddfc5a294c0974b4f696cca3fbd2a6b54a8e88c94d20c57f7411ef4274d0c646d71406e8096d23ecfc2cc4a7c26439ac58ebeef2b165af33f0bf61f230b54ce4bc65a804f73b6b0bbd822e42c8b43e8501cbe0eda85c7b02582f1c655f33aa717a75fd55c49204f7f6eeb1324a067d8cb3dde8f54e90446bcc82da2c7a90054bc91e305ea4698ffc8b9faf3980ca7e0e33ecbb3a04beb7213b13e06ca4e04fc6265df488aa696577ce355cfcc7caa9c8f8f2159cabb3e2471b56940cc33a5bf30b321d05186c755ec62db044030d4e6c054eae9a2335ebff89362bbf0df3f64b31cfd08127fe1cc1f9244adbf1fc08946711c00072480dad1dcc9b2c0bd7fb091b311076ac2a2af86aa9c22507f07d8707f3a3d03fd1a7ed53f27f51ae01b540e8150fcdce6f5694e8a140a1aacb0daa858bf741bcd6f2d425bc9b6303ac33e216baa0e26fad576ed1aad09b2e903296d739b53926f88265734b5e3baae8815843af902b1465faca58825726a204e2171ebdb2510dbce980ad422eaeb12411842aeaee17af7c723c81a60d2d190b0bd0afafde6b1ea87be2348bf782d400b9d5beb7256894c6139503f8bf10929f1edc812d5fa91181f032970e3b2c4ca822215c6c787d3de2ebd552ecdc16f1324a363ab8abe0e91c35441fe54fdc3f722f0af1f1af83af9ce2a2e2485940d85e4d16e2def7b134772cf1f72c362fd1908a1c8521faabe6d18409938378d86e3b175431bf0c27f102ae8c4b195698817845ce61540cf06d56f45b9d31393832d66f947505397e9a5c9a64f6704b8c793009163f95a1041c757b48bc1fa3c2c6530c7f298a7e93db95c661203621a7700f68f6916e9c4c0583ffa99b36fcdce312761ca735dd09bebdef3f79f172086d0c7964d2b8de5e387da56cb74a603b570dd30b891868109a2557b179c702291c8f1a345463a97c71bc6535a7c3377d0e22dd1674d6ffe709f71881a0d461d47561f2245de563ffb525f8d70c29a62e922a34767600202225ce7c3960ad2b34394317d5c2f92a9d3d2aeb858643c4aab8741809d44131df7d3314c487d0bbc16ceab1d353ffe045b98382e51bdb6c38ae1ae6a9ea02800eb2f94869a632dd2ef08ac55b789756fba46a397c05371bcdabb1caca71012a4d51bc1251498d5c86f2079bf7ebbab38f03f48fe903b86135df88bd73901d7afdf07776346986c7ce1249b95daa3abbd96ff983b4e7683c43bcff1fd20b56696c5650f76d570336b8a1f582d2078f47fcbada7b842c775427bf3beff8d1b807f3523594042878a3cfe9abbf9aef70e4ee2800ecfbd18f80e6e9cb277675c1d73ab930eedc8bafe2c1cd5a436980e3c4647e834b5a7b71eb658e13bf582710c38fe92313752e213c94b8aee6ee73b9a54bcff5c588aa1bb92695554971a1e1f1232c8c0b42357c873c0fff3958e1b56b5444e9721f11b64f384ef295a4b27e2638edc62f9516beacd241cf0d6d789043a48941b18c11cd2dc2ad64b5109db615ec10defadc5b41ea758d15efc24c2e5dd5a7ff938a0b786329de980b6eb63ee8d90f9b45bde70a8f90aaaa341e6ffa53c4c246b4b646169b4e63798257c3d5876b483f00e11d57f95075bb34eee9da26d6b4a22b992741c6c4a6c9f5bf78525a7d66767eb34a5ab7ed5f8ba62b181c0addadb70dc6af25b5fba376839bfb227ab3925e94c62e5b4e020be29fdafa60d4eb74defce224deb2a32599964187c466ecf5b7685a7e6d67347cb74955b19c628291e8a2fd37523ff45d2f934ebe2ba2bda7626945d205da26b59396e8ab741a88d4436fcb1d57d4dab35a8aa91901a936f9efebdd595e14170e7765cca7c44d0f06bd6c6e9abd5e96440c7ea24e23866a8d8ebbee2e9b995d1e450ee6a36c620e650e063bbc6d5fd55f96068d64a7aa6686c68c847f3a6e9f162d144f4be6af80409694791a350801e021d7f9a6031a42d3e0de928c54366f75fd41471f8b0f57857df0ea0fd32e4a39e716090c460d4ed898c916558c39f5f40971cf0c5a0b333f629e0752ecb2e5b8960e69f42b17daf89bc3517581bbaa1c0534e24b4723cf5e0714e6611d08aae5347890881d4205ab102a6420cdbb98b669d1d883c3abc610bdd40bc07a871e42380a60ab95e2122fe0216dc2afe79daa26343c8ab87c051251898acbcfe59eb2924fe1f2a521e20c85370b6f1e733c3697b9f6ea5ae0e700200958c4960d98a67b5a176e39923e0dbfb4aeba614eb542bd6a256ba1d000cee4c42b9ee8fc8f5e4e36cc608f2cffec549a38daf1b677a09b1112a81828e48bce3acf059e8341e0aa7cd72036c85f5293e9882bd95858b91bb97b175039106ddb147961567f30ee7de91e199163d6d2e9d79237cf1a47ab23de3a5ba525309c05794c934a26c029b66f3e90f8ee86a5a2e79497673fc78c5f8f5bde98dd985359ba4d21a2fd813b049de02a2bffa44abf13fea9ca8cc8d234ca25cf2b4deb54d1182c1affec3c69eb8bb69ab34f78e44dfe4318439ba8176cafa80c70998532336ac744fc151291db8093bfd88d9b164469a902adc0ff019ad4f93017478ed6ae906830cce3fa71d4b9a9efced1f9602c581789f3ecbe29db1d035c0e2852d1767cecdc063c8b56b68c2d6fb58541e0ce06e2c90eebd2a22133d2abbf2d8a9a4552c384e18c63d2dd96d48ee4a944be79c05dc31dae9879b33f891525d3228a54f17be7e8bffbad6d76a952b333441d0a06acb9fe4df0434b2e54eaf1ce7f0f2d07e0834d85d0bdaa21c08df3a9c68447b3c6c02d403939e5ea2c799c6fb27405316e667e0de29569a6ed977a1ec123ba95a57e15981c9ace835529f5b578f5851f1c28a45c46df51f34a4045a613fccc565a55da416e88cd8f831b5685bcad78cfa6ec293de4ff10280d64389762f1a26a62051d0dc35c28e8a481c22b2ef741da54c7ca6ef908f84f27d5bc644304c40487b46ab37692eab315e8af34def976991345b2bfc05053073c98f92b5842446a3f36ccd7998a376d11733db11f0b867ed1d71d174f83ebdfbed7ca62ff1b1061ee93bbf9c1d398395f0772d1b7b3ef63f790eb6ff820f57e3e6bc2f9fb2329f1cd03ff9a1dc1fd71b2eb10c2a66e8bc3c2b71ff6c0283a87690b25f6935555102704133435718cae56d2e61a0e15732281a233a2b38532b67a702128aebc8f2603680ad75e80d12a3f14abddef08f673fd5803af37d15159db6d3b0dcfa009c41f6095e11c612da3e13dee378cd23676dc07515ecf942be912f4a22ad09b9350059c4f799f0cf0cd6e4bb333bb7e2c1e4862ae3dfe941dba9517c72df53e08fa1cc9f0c1878e976753b95e52bc8f45d8e12b06ebd91144d2364b147fed8372b7f2d3e64fafc3f9f096fa102cf2929b7bd4d70f829539f8dba41de79fa155069b423b3be6077860e83aa3ffef82376910d03dfcea52e1cef9d2112d2c37b1630382676bf10cef88a62afdc7ec79debedb9322fad41ea23af5c49c7cdde7c92809eeb7cbbadc3df446fa510f4cd5c51da4a595d149132f1bc1f8ea8ecc6f331baabbe060e1ada293e58f6e311302fa5f01348a1b54a3bb6f4dd7d306b35c1a62bb232c6e0480f19da0367af82e73fb6d3ef2948ae39bcd91e14fc6a720f38360db1aca53e76555f536c2efea9777eff24dcb3bf8eef4a9572bc5e829c33f835ba9ebf2f5aefcb27f92b37551fbb57f919f429fea97c4540a95742e0bb7f6a40b4bf24a092058717ba20ebd2a04a6b838bea207b7950a00fee2b1052a2103a4884cb1a210f9150a34a38884c489c4e289a5038b0524824153a40ad70502d643ee5428dbe6238968886045dddd068ed7026201e922f1fdad10fe70888e40aa247421ca3217223220a551187901189ab230a42e22c25913252a2a3250e524c64a926da9513f7f4447e415146511c971409d314ed898a73531549ca8ab2aeb84858e48c2a8b2e7571bcbcc8ad2f6a088c532a8c7c4a8ce234c6a1898c842aa359665ce23a2363a551aad4b8a9d648466c94ab8d3bca8decea8d4a04c7e91447aa498e4acd715f74e4521d15931d37ba233fe1d1ab3cce263d92d61e1d151f07ea2323f9d11afd71272040922548370d72548464ac427aca90633a24a310695322374a918c5aa4588c1c60359255170c62d3dfe1a598e7273c6be3b4e5a0e51804c0b62b05cb36cdc969e53dbbd032e741cf867d1b7940afa444e8018e9c45bb9fe39610a75a17f0c2a422bd1c0e5fd0ddb798a86373dbd736c684cddfff70cc4feb85b3e66af67170d38fe5d7972fffc35ba2ff7a8bd1a655e3f281bede859f3f2fe2bcdcacb6208610d6ac87e03f5af386e6d000c4ca7af8a2674744ae5f336ea7d059fdfc51410926365d738f7d9d4154130c1ce78bbace12933991f3cfccfcdbff1b7c073c64dbe44b5a308a618ffe90456beeb137946be41db968bee0da4006dff8d74657a8e8628ab515c02c52277d8d3608a10dd424701a42daa1834e12071cf7404b98c14142b4ea944c2c31c2e7c4bf9412d7d1adae0d5fb89d3ddfd331e838952b8e5d85dea1d60ec29d044c7a91022f6a10260340a037b3073272b05559b1421cceaf55418dffcf951a78f9391c6acfb2db5d1413c002e403d1c5803267479ff7d0a0a952bbb96bae7ec6f85fb652a7e97a5ae167f5b391e1b490eb101465fb8a8be7b10df59dc23ef6c4c134c23ab36048dc05c0571e58edae30d28a0783e2cf72e2c849ffb6dd908688b9a4e39febfea36ced5964650242e01e490ef4f1985eb676136ce4e660200bc4f360c78138e402f4361cd41615e2a6f07f6ceeeb896037141cbf7c8bfc3bd2c9646e6acde72f86c2a1feeb37fe67822e01e4b1fe89eddf3472111c7a35a879c45c038c6dd71c491e63b7d951269c6c76e44536ff787d25f2f94a6ef8f2ee67493f63f8507c07fa0abbbbc49456225340c5bd8c233d5c6278bce7043850c3baf5281c705a78e42207924fd8f7cf1d6b92e24dd94e54369e8b21de214b9add22975cd119b97b6bd2e10cf65408f6a9f1ebdd1c52b4f8d657b24c6694f03e7715291bda1e4bf8f7d700e11f90f39ea50b0a8a2702753f7f8b8f5dd9be739aec83317039624d8a3d62a70fc7edb81d1fc1fdb9177787561fe69920d639b1b09a093bfc8da05cf6177145b4086b3c1bc371a356dddc29aaf725838167c791aebbf36f6392e97e7a02cf1ca86c3f9e3232a6310717be86d22dc97e64f2379c2943c1498dfe65bb7bb1881e483ebfe53b5c578816bc26fac263ae8bf0f389ff7c28f0f874994144c65869bd4822bc633af8b66dd02b3bf319112719e2d700314cac328c9e6db82f9760fddf6be26782e5f891587d8fedee043263531a3527b9f91a81a2b89d8408d379a90184b508ed0ea0ea90f1a6c3e719bddf08cb37cfcd9f1805218a12b8953dcc8bdafe3aa5a05c1cdf23cc9706ef2fa42b707b15749ff5bbc2786a91e36c419738b4d3f67f6e4dda0b19d56272b488d0b3bd527532a34cbc8b4f6cda867041216f6e028ceecdc1a3ebf95acd973aee0ab867bc7b8599586ce09bcae16f77bf1a1fd437857a6e1aafc6d75fa0356c433ae1341b53ebb7e666c6ed3715c7b737476b02335faaa943ab8a8e8e518c5c3e721e479c6bbc6df71a87f32c3497008aace510ad9314a6da27986e0c3a83bac8bfea0d87fc28621ec78d3f206ef99f8013b250ead891d4c67e575900c8ebdbf81cb80432f85cfd5f282763f598aeb3fae820e5189ea1e71fcb66e4390b9f458143fb871e1c17d86882b00877e70eeafbf88ee72f9bd89c14c33e87fa68d56c2e102f084106d90535b9bce90a42526afc7d755d8125ecba8d5b0db6f047124bbe19df3ee3f516d50bbbb0874a0340440dac535a0f4e8d1662cb94108bdd75c936211dcf7edc3559d020515f5ceeaf8eb1a73688131a8c54e33b1b7edc123c172dd3ab0ded00fc91e8a032301c0cb15676381e5fc8643b44e4f51c93b7fe4a04f95418ff950103e5e13d34dfe0abc2a5fad75ada2920701aae69d56993b23f6f4270ab07b0836616df30ec27a84241398185ad0ffad20618fe3026609fc4d894474d9071264f5184eb99e2530efb78d8a1eb98f5e2109a180ce428730c8127c94f378a86fd69a28d305d4a6afe05937692345f86bdc987f51b537c704a6a3557dc81d5864fe97e1175ea0e1bc7a561eb69b47f09ce76f735039089d34110006eb8bd435d32bde2cd418e093f379f38c136c4451e1178b6af5de78293c0eea323f7330ed8f24918a9765332e863945e6ee29ed5670f96c70398cb20c221ee127403c4d0336c7382a745f804192aceff566d4f9b6f479aee6faf717aff03ba66850801564bca4717601a3876314196e862ce9ab07c3c16f31f32374d0ef3720a2699e76997de7808765296d7c800f6a09802c3d7ba8dba59c66ffa82d18574fc9366b33af8ce4aaed9770a0ba92a602d76aecf543a0cba63b45f562a977944ff675ce193c22c9c0b981863292cc3bf43d355ff04a38859a328efdefa2f9df21bf084895246d3a560bd383f2997c2006bf6074e15f16ccbc10be6bbb161d196c1b106b4c1d2159cfda17e54ae768072d6eabf3b607434395c4a5b44b24b2405176b2c955fb47218fb89cc880707459ae309f522423591d5ab473374e6fa3661084f378c45e4e7563cdd521b024ce6652535baf3daaa002f154aa582b04e3c10f12e36144f57894663e3a3982442d86eb3e66852dbbe00af01843ac52124fc663049ff18fe9a18f1a7bbedf44d60208eabb9824a5d914f0586ee7fd00e7f167d3fc574def56b9fa75f571a81fcc4329bbf6292ae4ca72ab4b60450c7ddc2a8d9ead8b37503ce1b0674936f43c0dae41a3ea471a47dbf87f39d8a7d4e07acfc663671f9b68e58de347e5664882a4fc66b8697f919b1889fb8ac4911c41c4a02af2f2fc60039ac6630922e17f6334d845fb93075885c00f694f06ca3b7ac48b70590bfcef4a1f284b5fd04e8964127d32507505b6d2280cb2c6a0a69b6e1d21ea2fe0842f9a3ba0476c5c517cb301353adf47b0797cf4e5b1309ebd827e7fcb2909d920cf577122bd2dafa7c407b4d18c3da03e960e1f81240ca99eb716f58315cdf91f811accb03ce88da7547d32580584b59e6a3824f19c1d01c1dfc26d5b6cc1b12e26d66260d570011ae2c05ce101885e92f9d1da53546a0aa9b70f1cdccca588310970454ea64c87bcb20a5bece54f3106e305e8b73234799d0acae3d83d1b2fb556ab85c396dadfed226b9c02c5d80d000a8c18de146bc94f1ab50c3953bf627e1f99ab3aefa426aa1cae9d7254ecf9233c3029cb36b780f3e756f753ab52b31f81b10a4ae3d0313a21016371efdd76f14db063398501d255eecb6e4529b7a5c29d871f2cce528630110890ec35c1eceeb0535f41592a1c0a6fece2c81a71902f90185656eaf7e1a626b292099f07260d1f3d3000da09c57b7f7f2176a6ff0590ef1fea14a1e510c70e1a85ba629d4c2ef3035833e04580b885f8720d6ce743b5dfc684688428e6a889781e1734737a7c8845ebdf7220f9754ce1dd08084ea9b3dfcbe8f4b0a7accc603914b3995a8ffde6cb32544da674fe28c4d09b209071e154b0bcd8522ed92c9600298784496b74c845c6c1165a266ef5b53d773f7da9a8cc4cfea626bdafdfde81ff2a67eb63deb24a243035d4749b70a52dda8ca72601dcf7ed31175146374e347c01b360a0b01b9cac866b39d429663aa78acc1b46598e35a1e0e522d9bf1efba8aa8f03738e8995e29425ddbf99e08bdad5d680e7fcf67ab0a18240dd0bf85570e4dda5314302b113fcb783970aa4075015d16c7c4a1bc11e37508c02ba010991e32ef07a62f3986c6b1cf132006a3b109a73011501541a3da2b23625588eaa4190e179321321119d5e0a00beb00dac98096a214f87fcea9a2565440ade1273388f6f17c01826458d2a7ecc50cd62415e8df16e83fb848b89b798de04b3514878aa2536c7d4436a65f7288d33279d2a309872dcc09f0ef5571b2b0944a88d44b745af6012aaefd1918719892abde1c91d0d00123ce57a0b5fb9d550414050608db5277d22c989e276da3a73a1a03e2fff7a5f53f2edd791cd8bf8ad66e4fee0fbf4dc9f5bd48ecd521a7eb69de3542887c69b350adf483d6eb24d85e4b119b167b3bb997e56aee24ed129bcbabc83a83f0da607ba3f8f1898fbe353cdc17ab90ef0091878eb18f7019d2c203f1048496cc8e40bcd0516f63da2578ada5bb3bb46158d33dba59e06a37c8ce1c4efcc962b37ed2eb6a0cf3dabbf0d938a7c32dd97969cd77f64d89543ee7e56b994ba4857907b825d4a6fc03be86f36e487ba073f4d525c755994ec9bc00a4644ae937db0f16384efc8d17e847185a9d52d97fb8b1d9990b098f2686173b44a6bfe6fc7b86c2efd8775c9c36d0dcf44f97a31aea0b8da16f4e537f3830b01bd4791e163f3e637cadcbdec1f78282ea29b7fc5fb610dc4bd79e03dd8a3b99f168a056e0ba6370b4f349fe672f3ec6bcb68bc9e3c58c8ffd2a38ee0e2d749a34f67f0e1c6e8785054f620d26a710b3d6f93bb1b31a24095e87af3f36a4decf099be30aa7f87762fab8d5c2fedb5b9c5c70b3be75bc7c83a4c5874debd18daed9b3cafbe29251e363e08d4353c0bacc549d076b03d3733e8faf86dbcf0c67ff61cbf39d8eee98146d5803da9a29fa3d1f6059c60683bbe66f39532d701290c90d7a9257954d2aae3941fb6a44c81bf2030dd36b7ab8ef99f94ab72f5938a72fe2fa128be6e652f753f153e52be18dfd24c27adcab595acd8e14e0890fcb5d3446aed9c15366f1157ec365eaed7ad8e8de9a35631579d5203591d0beffd6401173e2c1a7e141d6b3b51d62f2a1c34996fc5c4a51113e1c14ba17b8203043480aa99fed7291a52de12ac6dfe608ddd6de61a9f70fa7688ec997cd0b0e0519476f528361f35d6d8f752e1af06937cbbf4170ca8b04ced1a64cc089d81f898d772ca5ca8ea418cdb09184317e907df3170674f550e7c7e0a9b6e2de9784e1800cf76f9108ab096b87e6cb96898f7068b901c32121715c40c23299063eeeecd73a057f2fb22b9eacda872e84b5f4a62245dd0a78520f312611b2813ceae0647c3f91c344555104ac0416fbacb90f14b07d8821f8470c7ebd086c4f957716fb3e4f05e73c61a1a9dd64c9c34435381ffcbf9d216736378cbf643650dbd68e67c29b19a3c307fa960a78fd03b2332bb15dbff17e4c109b563eaaebabd5e4a5128ae9de1b07966ffe9629c694f82c267e6a0793cf36ceef439892f79d44d841b26dc078d9db9f3b7955eeccc2844b99e7d0ade797f2eeff36e3f9c604eb88611f1c6b204ec6569774de09a515911a0818886c3bd4db91dd4cc2de9384450c90bacee86a944c3e836224ca6a6d91bc1262f5594d840694d6e8b2d5728ab6701fc65efe397a47d9c76fd082fb363de15e7b73e6c29d561f94d6a2139e36c1ae263b31b00f6308d2125d10646f4dab064680979d9a832ce426828d2585024ab53703e8bb887eb5f42298f744b02d88c323644522f525b52bbf7e9b171877ed3cc61424b811e630e5bd464f7d222fd17bb0106ff24085534177f4123af6e2cd5a93a23cd5aa6eeba72e350bc8ae396d95c08fad43f559d585d615dba0b96f0c5710508508e0cb74c8485a4153df4d6141845c8d842b3e1ba8c9272e98ce2a8e3d33879ea2e0055db37b4a3fe682b1be89a5ef6b2ea53829849e22a51e805e19f0a0c5359275e9b50f213c707cfc410fca2020119f074dd258054498311b3d93145289932b8cadfabf765aa1ee0bd6593e8e9802e8b177d839fc54a0275960a975c9200b2b5643ac22c8ed445ee962a579664e47c02b6f077ceb6f43026a3aae4e7e443fdfd7a86e82ce45ba396df25b90d996fe9b6d78da845e35181c010f64f1440c35ebb6b922015d9912d2eca0966883a959f51f133d31edeabd53601b318810707f9db893b7fbbfd64db0624522a949f4d0fcb9f69b901fef3791f9004a3e45353351050b41cad685d294b60ffec443962c0b4e20945ff0d592fb33eddd96932fd0be8b0c34a1cc3de8138f9d4f7783ccf692d43388306d65d04ff751eacff1331476e7afadcacd4a7abe3f9eff99eaa157541872b4844c0dc803d11bd002a83fa5cfc6f4ee5ed2419234815b05260e9de7abc186fdb0f63a6eaf7e0dd012cddf2a89b54775f7c2f0ad9f76476ceedee01e6222aebc43e524dd49f203c95db78471ecf9886faeb6b36130fa0d5860ad71a5ee1c7ee7f167ed1b4eb574eba9568af1eca5ab9ad3f3783dbaf9709d68ee6c940996d37919aa0a68d4c2c480b6ed71a081fb676ad5373f9b22e5d1f365777052edf50efb316225cca7db5e4e0729e15240158df7964109a9a7cddcd6d1017bd3251490db69a8277510b3ad63073891e355809cb2fd53be1d7917b8a60c4acfed518419e72412c6600088721284aa16608d86c03872e3d2e3cc2ef7fd37cd2d1ad59680f03da2e2a1e03e4066770f96779bb730aaefc063d0c796ac43db15ece15c6c5b46762db310e74edbd2a9e9e30dd0b8c37c7c7c5ec24f69ab07b99f4cfb1421f96449fc880a9738d9cf01e312d3dbbe0ea964fc410fc85b8d60fb9f2dfc514c12edc98d6ab920c211e70fbdb2982083f10468641bd9a1dc2c24fe38600188a5402c54e98d0e90e1883ae96693d0082bcd22ab44e4dbbfbda2a0bf86115096804193ccef6fbf805743a12db16e3316dbc4eadabacc99aa2db0f72f99a1603154588e69ab4314e0c0a9a3002763243e57e4668a76a6ec12a703446cd21a2581e30c2a1c3a18effab7e9d74609e328c6d3e331c0b8181737e986f9a380b492a7518b5b03c440c278e3a5ba3ea229887c8bf6a1908409bab110418454c1c8fa1e201789fb878c774ff2de16ab984131631b1c1a77164377716b270f26b05bd38a0ba0b426ed56f78ce78e2da0bb54530342a6b57ea2e1182dd2bbcbfbea559eefdf2d096501dc2c9023cc2c184476ef68d7ea6c036d4d7bed995275aeb99457216e36f3512936534972337ba6ff3e33965b526d5878bb772e17189d3decc6b102e3c2cf43b8b57a2b2151e43c9b5bbec01c61fc6cce16a7a650fec9d54701fddbeb426118def43fe89980c48c2f61d06343c53af1af36eb89267bb163a19babb634e8e69a850e06d6e72996a22c50e59f900e664ef29f527afd6c3c221efc3dd13a0fed1593b213b2a55ee03f288144156af3af58f11849deb7c9ea88e6afc85deba51d36da54a496246f4a68c53eb843b16c3ef938432c1bfac70fcdce10e94d5e1ea49ef1949495d1b4cdf5c5af2cebb3ee3134b4d90ffc5d6f72bbf79e7fb95962381e4663d276118ecc41f667b9dcb943ac41d8df0ed3c4c16de565ff5946072928a28e5b3298ec54489324801950e369405953554a611f133942886a52bcd89919d80071bc8995a10d4dd75fce201fa3ce00de34ea6122d2f9ee1e14aedce8beb06a965bc76de7c5659cd45e0e3fe61088311cb86b430c7c7bd1ab64006d7917be19c965cdd7bf867c8dd1163ce4f60b6cb6277a30b46621913bb8c3ba2fadacb00a001d893a06127b4533e0e704612bcc48378ebe0ddd76e75b815e399bbbbe7b89250085642ef120ed52cd663c0679e020ba2c4efaf043a7fc724200eebbd207120ab2b8d2f49c863480d6d274a2209b26a7b4a48c8e6b58b546fa6ed8efa7a8ae01c4ba4451ec5ec42f9a98cff1a7c6bebafd4c2fec6846713cf8fef848a6e8e93ca0b50bc555965a321a69414513a41ccff80f7f207a5e1eceb2fab661d9aab97ebac7371b530f3993900a9a4dedd643778b32b836b9c1e38739512852c6d49b103e5f653276fdf18cf5765f8c50433f95715bc06a2c309cccbbf08faa60b5d3f9c31db26106b9af91b7b1c1cfdd5871be468787be1cd658b5146d3c83c02cdfbf8daf5400659a8cf9163338019fa2030208beef7c9e1274ebba21f0b68c667100dac1e7c5cca08d7a4551692d2ee48a48f10625e0760a22e5b34ba15f5cfeb3740d5d09951595c991e7f88823fe4d7c7e69577fef05f2f42e6a9c04c42b4ea4b8a2943d03b62c41dde05d6a78ece19f544f1c00b81858802c37f1c9a9b34323aec2d6b15c493eccc910211134bebde589cfe3e9fb4e7d1de6ba2602d3bb34206cf167387e15bcb29f566e92500c7beca00af1fcce586c301db4fd653149e6686b2623875152af9d92bef9d2084343f9af9b4512f0a16f1cc221950c3738b6a46465e3a3273204a5568aed3bb40b0ab2e1ac8a9a63262f6f73480c16bf51b85821b75b819004c3d4fb87a61edd8f205ce8936597d34af2a7809d622b62253797001558b497080355432b58a216d0c2a23753f0de3f17c7e3709f05d8be3619f445bc320bc9e00f37d6a653298766f05dc7de9d67107dfe3e8c509eaba427b504b5f28086593e6db35ae998c7acad3c9e591a265293156e3fdd744bd5c336f05911d36cf393e0cddc9c851fe7458a097997e1dfc7b4f63a9e3c047b6c5a1ea1b04fea1da2b5fbac791e9f1e11fd3eca709c8649d0709c777c81fc9e8947a3bf0f1ed6d07152ca5ebe7e1fd5a92721f9fe67d402ff45c2d54f15da6410873c183fe08c305f6b69261c5d9f1ac541c8c62e1b9fddc448d82e646c334278eb4fdb5b96efdc97ecf8ff9d60eba381d3b6a8dfbbab5aa0af5154d844f787f51825d29041f4df752d9be7189f03dfc5cc81ac36f39c668e87314628d7bc6aba049c3bd2e8e107640f17f179fc5e39b4d607227acc15b75cf13c5730acb8e5f6634317cc9ad81dc9179e8309caf39bfaf140499cdd0743ab6fe9718f979652d0125cb4d19fe942e8867d38a88b4563d4701faf5baafb1786ef7ac9fe42c1cb1512216350e92f85971efa7c219d9deb1742adc3057f414ad07ffc000bb0e71371954c7077bfc079f1baca635307351cec67a5269f649cc18923eeae840853c7a3227df47570e1750a2f9df141ab554b01d5df4efd2e259fad04e5fdb606a6beb63204c1c6d3a976fb7b22cdfed59a421ad797a2dad361610eeb50531512276bb7308bc38c32c4ad4263372009cc4666b3edf0011db3d255a7595ce7379e382dd7ac306f395b928b2a8b3fd6f1bc610b5625fbd2fe19f5348b1635ecb7d7db896aab46a52846fce149311ff7af500bd01ccd88538cebc8267de685e9a1f4d1c12091f467610db91f64d4fbbab14aa804e12cb09195508340924ddb0af80d9bc64f5bc0eb1169077e76ee391c071676e930e68062c24e101d260e846ac4126a5c5bbef8084e35346b7af36d62dbeff8468c1e16913b4e2091d08b855d8a30155fcf7bbc58342d4f9577f2ae7564b256882f8b77a4de048a8cbbd286806ec497d2d91cc03ada766ccb782ffa5b8246c19a2b892243d7f04386204844fd5e089d6a6d030eb22238f499b73bb6e17d2dba3a5a18ebc00ed2afb1c35d0d5345390f60bd78e1885d305c232fa80b0b031ee892a4d0c9c6445e49abc3491cd4141f85cdb5f4d59c00394d115e9a0781d643ee3d47edfb90b9ecffa01d31557bdb1d18a2ad90c25ab31e8e8d91238241156bb09492004e38d33033459bdb29575b16cc475ab26f9345c3b5ae2760eb13a56090474791828a05b44003aa2a0fb8714d7a6e4b37e6434c399b276f30253b0c920b2cc0c146ecd245aa18eaf93088d8f602ebc3be63d249a9d9d2dd4efe56dbde6e5aa48581ae78f553fe564f83bb796744e3ddc1647c3cad90192c77b39ef981d5b64c454a872e37edb7acd040939195ae554c8532d8799b565a07eccfbc65bcf67f4192e6bd31adb0dc8bde16c6b0177a92b514568aa944ff260a33c544f3ca67ffb1abcbf1871b9d8038a0f4b57c78b9163a44539751356340691ec45766d772f872638a846b8b50c71ac4ca2061dbddb5b7765149aece72f9a08d34eac13195d1c00c1eb069f1159552ded81e0d3250d909eb86a59ba03125328fb7518927a5e65ec1cccb9ecc5179917af88b5107c30011b5683188000a5087e7c3f75e7a11783d805de650477ac961e2415da7875d13be0dd42a11a1f16f6a75ae59d1234e24b89e466a1b6e6c9f9474d1db841af581b4b7cc038d93794e00208d441606324d598a2716d173b0a10d74b1002c61607f603147c8ac4ccafa7efe988768e6292ea0a52433ae105700d67a441b52cca0c19385382bfc4e43f8dc3e6daedafd1929bb752a2c789cf719f14b960752315e5505dcc4ae37ee73f1fe6f0d7dbf71218e2d0ec6be230e92693addd740d740af3aeb1634948e2af1dea1d47210fcea30cf183cb16a608ff229395ab27f7060ddfbfedccdcf1cd30249f4424a5c11f6cb26e3a71e1eb2939fe16435121aaecd8727d8749ed6862f1291b27a1cc02cdf3e7fe36ca4683d6ac367625c0aa6d8091977acc4f2e3cb6ec5e1c32e8de4cce24b4e409dcc5142bfe719312243acb119da687e110b0b51cafac0ebb901ffa29a2cf60e78a9ef0c096a0549b40c44072378760f147fc3c0f188771a3a68314476f83aa7e4fc55426c791c776636542d4f83e3f7342673fc1bec852a03f0b5785d082f9666b2d9e248d33079ba250691a8057f10874b6dd549848c639e9f3be9cd31f091921a7701029d9f7b89f4c7829b17855bae9ef1cc0057fc0d027cc2b7edf6c990da5d2a909c0d2faa99411550c836a6b926b6f94647e80c9811d46e1ab89ea4e64885838bf301b5fddefe123542964d0c2fba9d385f9f21b987eb69346188acaa691ddc17ccbb73ab6b116680600fc7b8649ded10ebf192edff888d196815c4c8fcbb2b65c40cc63ed21ec0d5c199810c82496800e4eb083e3f5c58a3879ec5a4f7fb956672310826d2bf45b9ab6eca4160f3c49c2e1a404df959cbe04346a276dcc4d00745a074fab0c33e812033a4760c726b864c9ef9fe74a05998aef7712b83234436a259f1761cf9f6aaff258b2bbd6de0e63b519cf4d4b28441579ddb9ba1f175ac747fa40968a6a47db6ed47bd8894470d4d831f518fa555aed6932f4858e1f557446d4bea18e1b75498acff409a34b52bc15d6dc3c706f27a9627ce27ab2da9a9231c0bd3f8878056c79375173b7b038e6cc569655cef7e12ec12f08c32595d1bb2de945428e05bd2040cd366a28f569c2dd83310988a033cd767e51f5107786f86947910ddfb20a337b0b29fa02f0732226abd6a2c5fde61566c2fca9ca29dd161382bf0bf897622421f9e0c8c84101a487cad50b2016370e0d253a8cc2d32fb41a23ca0b3d415e39335c0a473e81ff6870ece60adc3f900ef67d7bae024c69805f8c66a6c4c4577eaeacd36913657f642890c521ac5ddbc8dde02ab8d0cb0d6567391cd9735dd2b8c17a764d73df50e87aa0dec35756c40a413b0ac17ef0c57aad960f8c48c65b595b29969f6b7cdebd34df1208dd1906ff56351756f1b550f5d1edb07b53286e3408d39714dc00a5d8c83c3a9f65e5e49ee5a389f87cf03ccccee36673fd2ef0f6e0831fba63801f0e2e706e7073501f9bbe7d432287d87e4a86c1dbfebd760aabcc055b0a3603b3d9210662488c63dfe45bfe7b38e93e6a4fe60087994d5e15abe1f64712c20de56541ad30d4ef85befd6e0de2bab89db228bded13b11c06994a4cf00de0285c2303728de776c7ac2a388e9b13c331a024c96b5f285a30707ce4be771c4200a928f3fcf408245b8c14b90c749620cca4aad364aa456e47cd05caa5cba510992e52ba7d5124cc5161f92a92ac2e506da589465c1de6d1485b112952ee6dd795f29d8e1d20657c8bfa6ae4797e440fe9249ed073aa4c0aa61c4e088e912befb1083c400cc6306450917e16b6944a3c1cbadfcc7b848639961170e4c18980f75e06131991b083b794b49db41aa4d56bfbc346615a1d091c40b799336d69cbe60f65d89fdb1d0d5afa4ef176d68f85313e16c756ccbc302db0f8d7d73607598b2bdaa43689791eb02a273ed07e544ed6b2116d2ee407fe94b8b08742f4c2641e7d554d8ae685afc0decb4fcbbd333941f4cb3a100641c5d45cb4b155cf72217439af94a0175ff15023bbd02404319b43969d5de410bafc12e6aad57054ee3ea500e41da604f7d52cd8fd3a1b90b30b999ac8b1b0cc37b43820f2320e30f25f30c5452c83205dd1ff0ca912f2de38c51f4751b0423b200f5ee94241dc6484d88d3d7d1b9f1982825821a0fe47f405c9f4edcd44ec2877e0a636bb6fa9ec1470b602f611a8d81a088116d48c4474a4b30b4075585df58a4a87c6c63f0df68673de83b56606eedeb6010ba6ec5e45710ad3e60bcbe002e02fd556645c557398a8f7355023852e68c70cf5eab0a360cdff6e513582f7c243e415de75513872c290dd8fd80392f5228fdd6369b167fc3c82a3f0a402495d3d3d287842e3da0416cec49dbb65362729cafd4d9db79f91c5dd040d8a53cf093f39fdd2df3a7de808ba0c9112a6ef84028dc137044cd5534994d91efea0209ccaff416fb1598bb3721d364a5f921959b274197d28dcfa2179ecc9906b5bb336ab96ff9a28ef07034be0d80e4fcca9b9d446be9e18599682f700c90f42f4ac61c021a863f160f8727b0129147c6824e84824fe0e60fbd8c185967062e683475a5c79a7be1c4dba0bb046a185a4e016c0ee8e9f9f043a596d40c91b175112ef6a54a587183f8e4641c49ebc4cd4e60464af2f583176afb346fac82bb8d98319ec49005a90bbe79b6085b7ea7b826e4b10de6060601d9562187db671dfbaf4a2c3bded7a74e7406c71268fd31f8f3837fdeff388eb5e8eb55d64e1fa8aef9560d468bee3ca58759efdc11ce4b0928cebcefdda471930bf8cc7673674befe7c866cc3b15191a23c2e7d3d400e7f05b11f959b56d87e93e3a8d248ba00dc3e27dae33e500d974424e7942a74a951ad59b057ef8cdd8394ecbfeb6db87455231d8f74efbfbf7a210eedb03732f66321e4dc11b30cecaee28380fff138e10c6aa15645dde27df661f6d553bc33e602380d1f179a48b330077f47eb94db8cb040b7ade97d60618fd267a60c259eebc640783a597c51e3dbf5b1af45015fd6c61f59d5bf802966bb71719952bd7c3153f1ecabe7f2a93e4a238f0b74ca6837a68f348e471fe60057d42b36bbe8ffdd9a0477df9dda8631d305e90e78a3d59ae7b31e78e058eec79b114e9cc01ba0393a418eb7126836e1aae88dd8d52a34558042651a2fc0f04deb9dff39d2178542b40e0193d9084df896b8e0f75dd5340fa1f1f7f34d0a6c094aee4553c924930b36599530682a74dff1e078dbc0c42aabc92c069dff2f2ffcc1c402c9cf51f70f80b3168754bfb87335950e32d0f1378d3292a8899be305571c5828d76fc3f9e936efb2f4ab848baeb05864958043ddfd8b76aaf102dacbe3c5049c69ebe48c93bc926554b691b6a84a4090d327d32834a38234ad52194ff7a58349b70c02e0457e0adc81844f36d87d67094d4b3ea33f216794f51c6914da6f5d5e10c2ba847e2a903e7653f9a784e5d628874a15b76c724158538ec3e823cedf1dd551f5a869991c700804645049607d77b5ca16ade045e78473512464ed41e43cf0f2440791e8fe8faa97eba654e1c66b3897f00b99d2b98c7ccdd85c762f2a5f30e29ff6d1c8bebbbc699f71e02bebfc93abe8f8dfc11570e4f536f0c12f01382df1944fa6888aba7b1330862fc45f9a8fe28f2cef681aada04bcb0f97c0e68220f470e2320cc3182bcdb9e1a68567eeecc205cb07ac8f8d7ace52983e0d90fcfa698304d39c8f59e9cd00818514761dcfe7ed77f115628a73be518bf4b2195e83fc7883cd189efdde6ddb52656ba02bbe0f1d5750c90ed0f4886f9ed84fabf517c557ced8c99ee8c5fc321995e91e7754135055ed974693d9a0c1b5f78f9e2acc58932f17b2dee58be956648aac6f2c04f86728d37fca28f252cc646e623edbc20073053442a01abc81afd0c223402e98dfa1a4b7edaf7a8637c316efdc311fd1b8f1051015ce450afc3dfed05a6cf3330548ffee039b9cf56756e0f8ed1060a3d48c4136f067cfc45b2141ae0c5f246692862ce734fc906a1a87b924da9b34873692ad44b72f0050b5f9b22857fc89fbf520bfee09672cf69dd472a8eb7c915dc3fd264f615bd4b65a7bb239989ed51666e2e6d73f5a98c2fdf382cb3a67edf4d6e55977d5e8afcaf08c67cafced10a6a34d04cb84862ba3af589f7d1746280b776fd44cfaab18f840612a235ce27d6c54b2b060f10ead03b8c187e757b4076f3e553370b112338ed0f7f19c4d9b62079d7def863729f0b914d90d1b618be8765ef7e1fbe7e07d6600237157944ca7986052316bae9273246a078ecc12a4d6182f77161940fe752d939f2706595b051ffe9674eb33095086a2c9ed2e5048adf0df3adc065edd1654f0497ebf4c999120e2c756e1fb33349746a388a673ac33086e15d1443bf2ffe288b58c94b369a09df3f0e23d396974d6dd9a30207a14e718dc610be1efd8e3044e39e76533ee6b869e05b6d014e3251447de3772fba87ad122962b01035ecd530d9fa301bad0305589f8de9fb218519eda246ac74aaf8ef95e7f5e5fc9312e74b767235d5945893eeb3ff67f5ba24743dc4614bf1ce204598fe48fb73783a9e6d87d3796f3cbeec18fc44c810a887685dcda623a27d3c0e142b74ee47a756b0d97b3dd5e1c768ec9a7201784d87c5044aee7f2436311be04ba370543b6e21f4ec2ca4322758cc7e65994fa9ab216e64770e90342a7ce9b53d5449005f7d106d1350096d94d05b4c875b2b2e5dafc58f490917d93eae96314f2d8ee7d3f5437e652458391992cb58aef0a0385b5ba2ba072b86a83824e8e43e28b06e0ebb155b08b5304234e3672ad5dc3f3ce0f412e9f579e846b039fb88765ece85f9da0a0bcaf223a04bed730ce6c2b6d71384190a9f42ed9e44d2726e3f382f2a905d0986d3de252f109a8cde5d83e8a321ff4bcffe60c83e031a64d57cbf14a7f306e21ff7c656d491fb62397be90be1e110dd095044c81c907c2debf56df51407bd0695a80e91174338821c1a66bd81d2006143443522c9cba2c847dc568c323492a7149564930eb5f4d9fbbe286a013862d8babc2c97c0fa01d766a061e7f4b034c00d3bf335c0d4dd8094f8d62265756468add4d6c9b6aca640d1a081b9c088e86ff25bdf0d9ac4b24fd04108c9ae7556ffc779da8ca16bd7ba98bbb7f4bc57b0d899364c7ad24ae9e069f6da21bcc652bcd340f57e2e0b1550944254397e8800b2e5cbdd4b356ca811fdbb0eb25ed771e190f7dccf58818cdf2d3ebd283d228e0e66922eb5df1b6fe6adaaae07f729507ad40deb3e5e7915547e091d06053ddcc1f8e75b03f2f991b93406c7ba88855dec4641be23cbacd8cf3cbc54f53cbde15c5c455eafd8361b4c96a08b95ec150d4b9287db8cf3dfcef4d4d9541957d82c25c74a951106deb588fde065ef915e0c12b3f691ab098f2522c0939d17709773c3914037b181d9abf92e9474b121eff9dce12690c96f02d58908e4d5308dc47f10112f30f6bae12d2d1b52d5b433e410767d081e48d2831f54701248651504039e7b594d59c6bf339b225fb029f1bdf7dd5bf34e658b61fb591493b3c3c1b73aefb5803f1e5ce4402e6ff1de56eec1118234a8776f65916e23dd98c4ed8888ba5a21cf03e049f17ea1443d1dbb3c05ed14dfadf8ea5cc35642ba96c265ee8c9ae580dc0c0504a7d7dbb881856f3028bece2e2abf60c42d7e7e2ee9275e0967fe86f0c25fde51c4b3911fe3589ca197a752c7fa8132fb670438426aebc9a0e2c3cd0ce7ca9c39fbcaa6cac0fc9c8bcafb61b0b27590a813cd1868c3bfbb214a35d0bf666cc9365d0ef5753505d2e512020cf05accc7e10a1163aff82703dfa6559f2cfeba2980311fe1fd3662e5d935769647206f47b2c719627327e7fad692bd6d5752e5d4902824d1aece525f248640609730d7394d15ae5a17b63b6703efb8332440f7d54fcd5f6bd5a802ed00d849fd8e8b1eebca8224f63dee04efbfa512c34071d04ba9101af93fedd649d4cf3a7dbf80f08db38315d5c103af8fb881d3529bc5b3728d8464fa2560a46f644403285d2d58a0a796ab2d5e00c8c6a023fe9f0d9f2f5cf76c2237655655f5d36ae578d4fdf8d946a02131d38aa6c2cc8bff65e1564046659922398016c4dbe8d3f62e004a03d8aa3a2b11098c75c8131c101d502670f7e4adfb5eecc8987f5488e5a891a3ef7240becc933ede4e7c9b377a0472ccf551d13de31464569d778cccbb433ce0737102ea1dffafbf3ee25aaa15c530a4eb77dbf8e8784ebf28b915e72fcd06ab28d56ae910d879e1fdf8a71c695951fd30eb134ddce0175113e63c6660d1615169e2819d83e637fd7563dcc74f310ae2c0eeed02366dc903f85de9655f981625d5b856cfcde102a27c1c9d0bb2b8bdc175d959169060c73e1c368514a0af9793b6ee4fb3e6ad019d4feabaaa5b921be93cf9904d28f355b440beea20909959793eebedd658ddf1d41bd868c86144cb05d4e575a3f03acb7e57512aa53d5d97f726173f7db6f08f8e3e3c9f98d9edebf4fe699148bb20c42d62e9435cfa44c3261938aaed41a4d14a3de807afb852b3ebe52f35baf6059e1fa611eb5fd606285921bfba834a54bfae74e0f2046103dd5c566e671b654925f6ea35b17b76f9881219b0f705277110bc2677d86085efecf72fea48db51012bade68fb73cb57047682fbd527d822176c4918579e91e23e185f017d8188d6348971e274fcf8cfbeb52146df845eb9a40528a8b964b1f70bf3cd085bd3a22a0299c5df7d12c9331441303026350cc8e24ecf1f4a1f0a780f88cf5f499d60209a61c5120ce2166e328e2c98b7d1fe7b31f56fcf1430373801571677c64c8d9db4f16e99aee90ce4113159d1ed7ccb93f6fa1f2adbc8f26eb0f389df12c07624b7d0ab81977c374ec70666d453847c6fffbcefc4fc4015c861d174c22b3e53c0f1f9a91af5d6032c135df2b9974b87228d43f8758eda9334570bbfea0bda54bd6b8da502103aa04309699cc77e905cca2dd0347c1956703196c44330681c6876a46b12355baf3a2533f33f699681df7c2d201131bc9c0ed0579613db3b31f740034fee82ef0799c71135cfd20d3cd42d5ac457fdc00a4cb8e8d2900176dedd42bc59a881a0c3acffa659f8a83dc93614e890bd74e74ee60e7e02cec9c8761695f2d181783decfb0120c1514c79694c42e3951a9c8ae4ce78b743516c867e47e4d4e3fec1310ba6572312f7bcbf55947b1e5f4f5269ba75ac1778b0678dff68665e1a71a2d86e251f6992291b93a54e0e3d77bb73d37d0ad11b8516b267812eae71f9fc556415cf36e2bf2d8adc8076d35e885d0c1f8b5af86300e382a72cd8a2ffa153b9c11edbf04a07ef5c14ca27fef53891ef1cae38ace69ac3b904ef1761e2f2c3a7d5ce14187a4a370c8bbd07f13370302a57adfeb00ebfa9d9658521b614cd942880c0e75943f21ba3e100e7c2be64d93ce7dae951ecf49583627fccfc62c27d8d83879a329e9278df9a3f459ae44f78175bdc1f1d8b9aa090f5aad71fd891512bdbab2e981552a3c843c3e6942d9ff68ebc1d3a390647cfee0e64e8378831fa63d30ea04f01e9b4fd61627380ff13f038b2a9b232f65b9e072ca47646d206d2a39b08dee2d46237ddf93d80cbcf58671b7b369ae3cbe707c452822c4aa33e459d1a215263235ee24e861fa54815d8f447881c78928ab062e1f34a325880d8b29426e2990a53d8a16e03491813d2dbcdc593e39f09a4fbc5044696c0103be01c6610f3c50ae26e9cfcff033fc0c3fc3cff033311a61ffe7b74f04db904c724bea16ad50e292d5c494524a29a524eab79a69b700000000000000202c9afdff0d38106f0fe10e9ae830acc10c221437f79e38dd274e4c92206c2d8319432889ebd6d17d730c9b3b10b60f74c10c2114846f984c82c9d5905f8c19cc084239c96fa6848aba0f761dc80c2094942addddf1de14ed7f502ab9a92a6f26976462aceec3d007e551ed7fe36a31a30725f9c43c3c8889f6a9d360cce04149b3c9119f3d3246899a60c60e4acabec43b4fe2c78b0c08db9a0566e8a0304ae924e834d947f8811e470a423e9009f92212e1f15e442236ba88c0dfd0d1452462438bd50b494117914824621d88442211461d3c72cc58c28c1c94ba24492849bc376d23ffc8d1e3c30421215f70066c6861630b1b5d6c61c30f622e42f081821938286cbc12ef9b63faef738372b8859f52677f6683710364470405952198618372eec9697fa53f89690661fbe20b93240e089ccda8414949e23cc53d63f64e10361cff45f22870d38f8f86c00c1a143699724d5172125da7193328ab899a45e59f6472e967c8a02c2766fa5cf9ec98fc8c18145b545dce7a4c9ad19f0183f226a931485152a826ff15e54ea25b096b22e3fbc815c550699931aae5968d5a51d0277aa49998fd942c6245f9e724ed3e1f33549bac2295a7fb7afe5145c96493d067a23fa6f3a4a2a4d76d1bd4a6c8690d2a4a31b2748854f10fa29fa214ea4aa69b929bcbd3a628f9d6c84ca55b4ab6b814855793b5adc13dbe5b52143686d36e52898ef7b951944a8dd2afa6a9842631519474f6e6afe885276d280a2223ec7b94c99a8405c206c2e3460a328caf005b186f02470345e1ed4d98dea061327b9f28554619b1522689a72b199e28c56992313a3dc6e2ee444988ea5492fe3db53e73a2247ea969ff555fe8988c4d94a48c763f4afad241c39a28e8299347097a735a5f41d87058265abb3cb1b9d68cd9d43ae15aa3c76db052e7cbc044419b68779eaea44ef203614381097a1721e312c5535d27bbfe66b4cc82b0a1c004691da8805e1f6458a260f26b226684386d1effc2e0b840b36d0c53c8a844f14d86136df3aeaa2a08db4708ea11c8a044414e9c4db2df369ac980b0bd17e8753c187a213226917ec8fc59893f08db4aa2a43b4ac99fe7ae378ff45f7c7c619ec78e0f137cd1e3a8d9e822022af002c70d8f4449aec9a4659a9398a18644c146aff6276963c75ee0f8b0f70215f35b6861a30336b4b051011b5ad8e0d1c302e935f028848b4824128994dda3101ca966329820e311a5ee1393e763796cfe1820c31105d3996af3498d0ca3ca4614e4caee6cf6f0ceaf71fc171fa70f90c18892eeb8e13c8c8cfa99b388e267f911ae7fd2f467206c61e8e081e395c78e1b5bb8224a95d9a4bac83c9da4ebbfc8d1a38b4a4449dbfafb9a7992f406e906cc9a071809115152928e1d723a752c417f43c6218a6233367ae6c468d13600190c44223bb808c18717320c514e17cdb94c3e19732c4449a575a6ccd1af33ad13a2bcb1aa2f93b83f760ca2e0bd69f3e6974e62b400320451ccf99a44d528116b1ec2712305387a84e0f868931188c2c895a4b7a34dfa5ce2058e1b26701980288aee4e925cbd5fa2934cc81761180c84701189e808f98844ba5720e30fa5eaf79439653c9bddad00197e2879de1bad1c91bb7de0f82fd8c2c8119228d21e36bab071b4870d7d197d284963e9413c09cf49f0d1960f7672df1cd4e7b6f739108984e8f815e008c1118980d103c71eae2d9199b9bbf62eb18d5b4aa63d1925e60d0532f4504a5ff98c259e843b39206c08478f101d1f9987e249923aa53a7a4fd0f0e2a1989366f3ae2a47c8875b8f1d377478a132ee504e3bf2565385860c751890e4e32304a5e9cab0434952da55c3c8a6484fab004dc00b1c46039188311721f84032ea50fa7011d5a66e42ea1fae32e8c06e183b9fdf6e98b4a683c70e9c4349b2ec526ba254cf7740d83af1e8e13b5a078f1d8832e47076981c46cca8d156461c4a727ebf73d34d3af6b1e3c6191cfc78ddd7bab4d47dd9da2cbbe7a33ffbe90781b0a9bfa1a4f3ae9e7cc23dde04c87043b9933442c4cd73dbeb4a151c7a71c301bd60f4c0d18692bb784e1ebb59574e3a1e24d1617e033a786cc00c878ee7c1c3e4601d3c76201b4cdb72af33afcdcd4b1d2597acb94dd82a35c111f2f1c51726f14f705c00070436f58e1c21b886729d301ff39f8eb98d40d8167d181d5ea89db11a4a728cf5bbb13b69f1548f34943d58f6c7d3d7ec3974030de5b13af93ce234df63d4c838c37aa15e1baf73b6a7a19409a3bbb624771b842d976598a1f827a5869b8dfa86f2b0470e306ee0915186f2a7568949e9efb79290846302c90d1c0603914848c271e383c9508e25dae96cc7941dbbf1f139c2e0c1381a10898481c3e018ca49c9a436a6245391cf89a1e4fbc942ffa6474f26b53094b7646e6712a3fe3d09085b590a42727c7cd1030cdf76800c3014f389fcae687e93d993647ca1a07964b674d49524c97fe885828c11199e436ea62b81b07de008f9c28071c34fbb509231c2ac7dd37ae652f2e82384c7071b83d1030722400617caae4958cf1a4e536a03710f1bafa3c78e902f121b877bd8f8e88b1103195b40ac3dac4c5dabea3bc6ccd44f87be7dc80984ed830718c95a20430b25a1de25b2d3cc5ed73c58b908c147076464a1e09e848c5e314947cfc028c442c1369bbd77127474d281b07d7cdc7df1c52779858268cdf975c257ea06c9b04271455abc28c1bfeb3791c8175f7c52cb45083e4020a30a05ad13e593b7e6bf342720830ae5fe4d5db2359320df9f42614fca1245c489abeb5e046448a198d34a3ad931a331f3512826a5e5e4dd3ca54395a05076abd09e6433ef4bc863c713cae3f94daa521dd3baf84548c891800c271475375dff9abc6d9db409053f39a6a84e62f8af4d32a16852a8af11a75e47a8b884f2f69a5588b44d9df76991a184729075da95276ea9f46412ca41be55af6ca6769640d83e700f09a5f00f96db1bc5936cdb3540c6118a76ff9d49da4f6f1d0761fb40cfe303991c6e0b906184a2976a0e3a9dbe89c8e4c0888c22944784d293f643e7744428f7fab80851c2c7f00d84ed0ba3c30b64729cf9104a923cb9714e4e504a4981b0290f3012016408a1f4c9e73d49b9f9e42869807211828f0fc80842e13ff967123f86695405fff1b166406e07eb3020496e4006102ccf8ccdcdb97a8fb74c72b6915717efe801618380066ca40e1e39be90f18352cde69cf22172db4aba870a5e023a3e05215b280964f8001372b2c9e994f5598f0f1e60a486808c1eb0e5552b27722eb7556225e3a35c77a6679adbe323cd0232785090714fda94a5e4d27f41d87698c0bcefc7c7c73141a2858c1d30aaf3ee6a6ff772f256e131d55d8f68aa4e92a18382895bf131df49a2df979183929dd4dcec49c8a44936bd067873c8c0413177d21393525556ed861c3300193748e7a8ff495269e3b9190564d8e0fffc5b22329c1c6f21a3069d87558d7ccd27332e8306e50f19a1c1f7fbc4dead65cca0fce1bf2174e97026147200193228acf7c972ed3f167e422824062561b693e427d3761a25752e0306a5929616eae2c49e0941d8d0eb30203bfa15c554b29a3ec7b9a8cfdf2120862b0ad293890da1549e2849901d6c1ba315c51217a6b424d13ec941216084e8c861c70abf4c2cd531aaa7aa8c0231565192b3f999a917a53908414278a02ab0b1ce7539adf6dacd52f3b030418dce931a08dbe308f922f9486ef0303c769c291721f8a8408c549c18a8286d8837a525ddce76fa14c5de1275725a13f2bf374579b5841b355dd6b3a9fb18a528c88b099e4e369b982752944365e4ca4327597a1d45c104315ebabb5f93e74551fe30d9574bd40f9edf62a38b2d3ec5084531082549263fe9f20f1984ed2347880ee618a0287d34495cf5cc7ea21846df244134e3db69206c3c769804470a42546378a220b7d33c2899a4157976a2b0b9bd3af4e6923b6d206c39427420338bc18972a62bbbf1ea64724eda44614dc69e20f6c7c32825374e0f2d22593588a189d27a891f77523d6efe992827a942a7b9e89f7d994b10031305b1ec551bd59f27e44b14a47a0ed257dc3a536901654b1494dd6e9891eb61648d786ca023312a918811d619fb6a736e4ad8a34f9eb8b21e7e82b015901893c8fdd4899fe8f1cbf392e8334f92e4543aaf799130e66c85fc40c2d4764b5d7b3b953d0f53a383daa033cf5b0ec2965ec747d923ca19d7d2b532d8ab57206cce2788e18892daf1cb20c4986427a811c5df93f263dca70e3501e1482405664288c18892b693d14d92dcdfbe2fa2e82766939fa47deff31451161372f3abea5632998862b03813c5bb3bd86f1051d250b2dba45d9da575887278a6d00f932f2b44310c518aff2b49da1845fab7310a518c9d1ef7bad5225ac5204449defe87dd7c113ab6832866107e3f266c4d6512419443788fff7bb5d89a0251d03f9d51f3dda7701584ed238c6d400c4014d326c9c4242671267a0884ede3c36ec7b9187f28bb7c8c2726faa998d406b6704024b22389e187c2079de227eb83dabc83b0e9d0f1659e31fa5030d9cd374b9909d325089b0d0868c046210362f0a1248b94d3a53e9a9e56206ca783478e03c4d843c93d0669c2c91aeb4a30b78782d10307eaa1185368eeb9bcf638c93c947f4b4fc869fc874278e0b8f161b6ad3b0e1eee0e67078b7011a30e65ad57cf23c2ec53e9540c3a94dcd6c4ece57fa3543487a2e99aef9cd078c283206c36ba88800412bf10430e25dbf59231993c97c7f0c031012f6e3820128944524a2f62c421061c62bcc1226e28bf761c15532d41ab8fd18662cc9ce5be2ef6f4262310830da58da6639612e2fa657480072291938248e41031d6b09c6cd7cbbececba78d96d8d8a7a643869330bec891c3a88d2e226003856861430b1b13503c29b8324e7e0531d4706928c69a6985ac0cd3231ea66d7411010cfc0e1cff80482412894422617c1192e3a410030da5ee9cb1f3cb6f6929781c98881867304cc43043614cf478ee9521fd4610b6cb612cc0010f6c2012e991821d9108f7246294a15826b6447747a7570b846d6d7411011b088c0f9448241231a4420c32609b55a12fbb6a95151eb336fe3723fb9d87246e3a42b4e0d123078f1e1740af821b10b8800d2d6cfc0a6e6c80478f0b78e0758468d1011e5a4422ffc5f9e091442237729848c44f0f31c6504eee593ef349b119a2e1076288a19cc7359ca9e9095a3a206cf71f3b783c8f24a42d0c6930f943db75e5271d9e410c30a4a36e22a227fad6e9667969f2777b6ad66aab82185f28e824dea237fe4f67ba88e185f2c92adae3379824e71308db2a7311828f8bd18582f8240775a286503298f064f42006174abda1ab53df637e2e6f0be5fc9dad73291964141f478f0fab93400c2d143c9d18f6eb242f0bc524689b2e79e397ca0cc286fec3bc6808c4c042f9a4d141be6c6c4e9d32c4b84231c8e8909a5dd34f6e2b144cd2d81263a8fe58768c2a943fda499bdd3fa79b131036901d06246d7411012dce0236b4b0018193808eff1dc601912cc4a04279b3291d42750ef3929f42c12ff386d3e61d5c632994fd42dac5feecbc89c688829d555da21fffe99e1850d872af3a37b4eae63ad4642f2578f5954e2ad611e309e78492928489c9584259491a046c74b1850d1c21377824af03033c749c60037c5bc46842b92c94e9206f335a6710b62f7a80815ff4b040650c2614e5368b4e5e255e3ded81184b2878ce89d631c77c3b9e184a288d5c951a9193bee4192309653f4da5afa55b35b5a7c7069050d6b866623469dc55f34728f697205ea5fa94ca54487afe0db950030cc5a0da6bde2b47c818860e0d6020a223244724e223a8f185d269e7d1eaaa525e824050c30b89e9adbbb5e9cb565ec7e93e51112afb3a5ba30b05cff763632562e7c38572384966126ac4468aa6c6160ab253987213af554f0d2d94f4ce99204b836ee89c2c3022f75a5a2ef37562ef27e5bbc79ca625e7307ba006164aaf498447b74bf93f76dc28eb421350e30aa593cd4d74cdd0b45b82b085841cbf05d4b042a9ea329d6fbeee89a60ac528bac4c452ed994c9a0ae594712bd3d4934d750a25e1fa93203feaba772485920c6a4fcd7459764945a17ffd4a7f9371e77ee07da006140aef991a9b1ea21d421036d41a4f28b77b55afbbba46d700359c508e1e3ac6243a73f21a35a1a027288dab6aa7a4f2cd10508309c8cef93a56e6d356b90446734fb9f9dafffdc50dc303470d25145e73d6b59eab1ab57794f879e2c91884cd3c485b8031502309e53f37eb8dd11fdbe6361d7ce318101ebf5c84e0e30035905018d57153326ea96a1e2153dbd1bdf33af5d2f0ec1a3d4950e7413cda6e84c27e0ceaa62598dcd227e0358a50ba0eeafe2ccb847e59830825e96e5286572df1985463088571d97082da6b9d7c0d219484750defeccad5f1d40882b29b9bdd9eae262e777dc27d63d8a0ea54a60610ca153f62c6c428499d748d1f1455546b68c9530d1f74e2b9b7613a63af67f2bdf9cec429a14eda831a3d28fe8edeac93f4846a92b20f34d4e041414fce4ac8f0242f7466438d1d944baeb04cae59fbe5004307c887191b231721f820410d1d94ade6ff64b6b6dade5c9c176ae4a0749da7a604f1f9cd3638286f8e5b26e549b7eca414438d1b14cc6a76663576baf76d74b1850d33430d1b94c49c2cad73b235cfaa413979c9a024c9738fc9270c6ad0a0d8d7ea9b3fd38ed892136acca05c219e19eae4923a6f1ed49041490a4ff27d302fd183ea08356250f6daa825970ee599d78f44f0a05003060521753427e1b368d74ee315a593527d74a6ed9372a6e18a922e8d1bceedccdb5420a0d18ab2c7b89e71f6e522745694be44845eabe7929496c62aae909bb9ef12fc374535cf9cedac8a52a63d71cf34763249281585194d829746ebcae8d1404541743693249df6c332d6051aa728e99c888d336273a892294a5f4a104a8929b149092a45d104d72de93c344851fa12eb313a234fc9d9967d581e8d51149a7666ed6e71f59623839d079dfb6ed36e1aa228ce8f7f951cc4c13b78e0607b008d509464fb6649259a8e3f32280aa7f79f26c677267b3f51faa45efd36654691160a6878a2f41b4664d29c3128934e94de6e6dd5446cde7bb1b908c1c70e1a9c288939a90a0d4a3651d27ff26ed677f95ccf8e0fdbe1a889820cf9304f7fd2c89346cc4469739c549d357492276b789807348106264a627bb6d4647363a7ba44d9937bf98dcb91889e258a1d56c243e6ce9510a25189d2b7f758e89242b87839011a9428c770bac39ea4c4fa26994449f8f86b72ec7ca153a62189a2c824844c6b3b7df9d28844a9bd64ef39f94c9b7c7b20128944fcc3bc083420716649528834a1f459f688e27c9fd664627979ca8e3067d5622cbcbae344dd37064d626c875b93a6d188f228a94dfc8ca7d25831a2e09e0465e7b7b29e258b2826111ff3c48a2eb1a4cfee063414515c937c755f3e5b799e88f299124e4c9fe4d5968d0622ca9a42db9aaca1a24207c28616011a8728c79cbe5d63444394f3698f75ca4f764a0d62210a3b27a66496e8146810a2a423833279defd2db73228d01844b14589993f8ed6a475754194b273f9f87f32c93de3051a81289ace1fbd25fdfcbc21a00188f2cca9d11c255f757a77dc87a11d0a6e0b34fe50924eccbe7fb2eb8a85e787c2c909734aae13477edd87622eb31899b634c78b7c287befe5da9627791498791c68eca13426c47684492126867a285e7aa8d49893a5011b5ad8a80cd8c0c01636f88b1c60dc58cb4349e6a0b6246975aff31e051a7828866709d7d3ece8258e44ea9240e30e0521b7d6e932cfdb842291f30febb343b96e735364523ae74f7775288dc6d8e6ff9f49c9fb8e0ec572b3f20bfdbb1f9fbb3914b488f29c13837e0acf04584540430ee55cb27fbbf70425c6d45d1c8aa21a2b537b94af35d940240287622759b7730e234d122f10b61d49e30d8591a5e39b9870dd50506abdd9b4d39acc2af9401b4aa2ef2831c9d671ed1e0d3694b64ee8b5e6cc1f33fb051a6b2897a49355c64ad3a89b7381861a8a72a36a17b224a12dca028d3494b532a50829572a2cc30fe3f13b76981b3cd00a34d050b24ca22f5d2e47365efe031a67287daeb878dd1c4da73ea06186d226399f1493653b9ba448e4bc3fec7640a30c658ffd4f51428f127b6b1ed02043d173dc684e72d8a8b75681c6184aed2689cdd99c2b2d0d3194941025f6484b3f39e7c3505021b762fd45c53a0786c2c7f5bc7deff51adb2f94c47ce2a7ea9c7aa1b0e72edf250775a124ee7bee4aa87951e242b9e4de987cf327e3de168a6a92c78d25ebb577560be518d794a02e93debd9f8582527acc4bdc3341e3060b6591ba357bf5ba97d6150a26afd38c14d351e6b442e12451233453f87712548592e89a34461d3122d2a642499d52a54becbd33dda650b0f2a04ea5ea8f7c180e34a450fc242dd3f879ccacc8ecc34e0a34a250d0aaf919f94f9b370e041a50289b797d4e223d59ebe63da0f18462926e546893376d0c1f1cc509349c502c2f77cfed6b134a996d64cef474a926c584824e1a764c12542fb4be8482a96d9aebb8a9f75742c1449117328a6b6eb393502a297310559fbfc34c482888fa905fe284c9b9fe0865d1eb31e3a226ea4e23144c92c736f7d545e5f320d028425967538d0713dc94924384823ef13b51f5af4ef40ca1a4556fbfcd4d7d885308c5afd5d611767bff77108a9d95733ab46fcec1074241f6297bed30e284fb07e5b61729269749f2a9c907250bbb91b51ebbc1943d28999441e3a837250942ce03646744bef6047750cc2237a713bec44cbc3a286614cff6fd9ccd333a1168e4a05825c6ac8bda114d1d0e4a5d2164cfe6a8977cba4129fb54f8f66b32b1591b94e460a6994b856da735289b86a808e92a7ee24d83d278124ddf49feb1243169a03183b2bc6dea1352c3c9a1f485d1e2c31005674ba02183c2c795dc98cb59ec1a83f2c9d91cc3c757f7a06a1c3460506a31795b734d98249b5e51eed31d349a7c2d3b962bb48f9ff741a8382d16b6a218b7d9b142a7f7354522cb8ada350916166ef57a6203035be8eae091035781bca95edeece8b95ece68d528ba329418369148e4501089dcce5045f9f40425ca9b3ce94603c206b2a3470edf54947477272144db55c70715c534a1653b991c4b1ee9290ae7f7a7a38f6a27493445b9a496e92c31579aa42e454909a744b592a549f6a428f6586bc933ea83090f04334651d2498f8ec963e5693e89a2e8a27cd4c62b1993fba128faada67d6cf24f7207142579eb34c812ebe77af389f2590721dfa65999714f143cbb76d0d635312dee4449abff947c9649e6353951d01b4ff3be6e68ca6fc626d8d838b1eab6d20bfb4ec2943a39ac449b28304313058dc147c9f1d641350bc1f19189f28e3c699224084fd2e860a2209b2c6cc487eadccd25ca9f9726439920d5a4db12451344779ed0b30aa156a27077b25f45f8c72c2725caf9b8ff192e9b44e9042bb12d645406bde82db6904471935c23a23e9538b22427302312c5d9b06daa6e93fca00489e2582949e82825db5ae611650b37d563e22e33ce8e28b798f224884c3daf4f23caf2616cb4c7fa16b181b07d84a1838759eb781e37926730a2988350196f3bf6c50e1d0d584b7084b12317b1c9bde9ed778ed6ac96a988e29d38e184791208a33d0ae1227b46228a61e5b42b35bc6c9f213cb4ec51088e6cc00c44e471feaaf4e86cf140d8f8661ca26c3532c99331e4c564206cc9330c51303109ad224cc57e344178ed600f1be871a4e002392e1089680fabc28c42b43b6731dbb56ab931ab597252a209fb2323238148e4c39810a52cf9e3483793457403c2c612884861c6204a1f2acc4dba304ff36103c40c4194af43ca6c7e91c94bfe8310330251123aadbef7e810b79b48241229e3c10c401484c698a24b741cb3d18c3f9477e4f5774ece756a0641eb33c30f45910dada36e27e8d8e9620b1b9148d960461f4a328cb6ddab91bf62f2a1289bb1af61b36b64b787727a91ddf5a9f2315d3a430fe5d6710df1932aaf1979286ef4e8fbbd7172922d12591444221fb62838c74339e467abcb24fb66f5ee508cd6a3a1d5ee5e263bc08616361a6003035b648f1976288548d19364137d2b671dca9fbbf372b3537a92221d4a723cbb5b13ab7571e750ec93a3ec9dce3979b2e550fa36f94cb4ebb015551c0aea24613f3c6a7730eb8609100ee56c92ae8d9d33b747e75630e30da53559e3bba9cd1c9368871b4a2a3cf66a845a86cdda50b81731bd615229d18c0da5db706742f8c931670ec26661cc5843595dfb6e7566ffd307c2862c98a1866250aa4ffef1f4bc7a02612b54c18c3414b3ba8f2c9d9326511a1036bb90196828fa29e9a224312849cd05728682aa53820ca5fc337a566fc70c331463ce35b7ec504a6621216528685b269df437e73115085b7f31830c65eb13c22ac3ad7ad3206c3e86d2e69466ba6e74909dc40b31946ed4ea2f4ce7fbce766c096684a15867929c3789aa569298d7c10686d24893eb3e99ece76b83b0191e065dda479a8e195f28c9499d64505a4c4cda7d402412894860db0be54cdab74b9fbe5dcd80b08111a223a58d2e22200109442210d0808d36f4c48c2e94ec4fd4921f4fe8b70c84ed5770630788197311820f9fc185b4694f2773c70f9f8e7f90c46811896801b2c348400b0b240d21ccd84249f6a0563233946c9eb4d0897e9a195e45ed43ccc842619be1bae9969a6d7c4dc3e693a882988185527b10e161f35957f85ea0040ed2800d2d6c68a1858d0dd8e8620b1b251231c38c2b943c8751a173f6b9d909c2c9a3102d1e8570e1650998618582299d64932a337b92511c2137f46654a13c173aa978c8a8f73f087f94f1d011b2236750a1a8a14ffe2465bf43b85328a658afa7fd0edb242a856274d1b19df4db6e2841d842743c2012c911a203b9cf884266baf2b1a6ad1ff3f259a5ceda04fd80b0f5d8f191a0298e902fb488441c0b33a050ee4c9d77c6c67ee5c5800630b0850d1b5d6cb1c885194f28696a270fdf8fa9c42408d8d0224d8047628784194e28af26efea2074e435e684194d2897a499639dba0451da8e30be024c28a878dca95c5575ff7164080f1389e43060cc58426963c642c635d3b0cf5042494b585688d5fe0f5312cad973279a3863d5a504842d84078e09f0980018213a20907c8e0d4418ad0b339050f65027d204b3cb923112491e05918896c160c6114a564289374a2e4f629f7d8d986184b27c7a49b21f336e42128e48241289443ed23e4c13338a509c350f7995416d0298a51e80191464972e9d4a877bd801904141e46eceb3df764a1c8018947bb38af478758289370030287f1267b33bff9369f715a59b13256b56f375715de1addaad9c14b715451931b9e5734c0cdfb2a2d4551e6392843541c8761505cfd81e9367366d6d555134416f59460dbfca3615c54c26a4c949b83271525494a4d818d34793f8fef51425a53b0853a71b94e8d51405135fd672538a72e8362184a7d03829ca1ebd344b3c655efd280a4263e84c2f1f4c46a2286929514c349dbb3c14653df15725a76d131350943cc8a8a9ce4ce7f4896274f9edfffe55f178a298c365dbd9d96bd43b51d2ee49753479d51c4e1484aacdb17e2b8fed268adee1cd637514258926ca49262529f984e7f46a268ac14bcc6032bdc9d1c44469b72c33c7e3d27389626c12364a8806a1434b144b4bf4cebbe625735a8972ab26730faa73992851beccf9b3fc19b7d3244a234c0aa54ac3c8491225919aff2d2e77998f4451d6663bc8196536244a5522c4429fa76ae811e551aa523e2971444167b68ade7c234af1e91ecf329ccc398c2889159eccfbb43b3f8b2828a5a767c7d7b37d1451d871b518a1e2223e89288a292164b583907323a22cf641439c7d8852e978a2654eb6736d88529eb815d9d3ed242e44a9bdc48376136d3e4a888292224f29b14ad0a80ea2ec9a5d624c1544f14a8713ae6451922006a29c6533749284ad7c0e10a551b9519ea49fcfffa1ac49cf998cf9a1fcb11ff76beb43b132de87a6db2da54a3e94a4de117f31eda1e49dbf1e8ab71b32e3cc37d5cf4349923e6e98c960258ff05096ddf1f8ba0b353a7728684db72576c70e25d3d93998ce277b76ea50eaefd4aa1a19d5c4d0a19cde2584d09b39945ac3281de27cbd337228e9bd13a2849ad2268f43a9df73dec3e712c30c87c25bde09aaa41343ba6f28ceeb6afcf51e9d5c37949398bb4f52a157f4da8672b97bfb891293582bb2a1a4c6acc4cf0f3f31896b28292b553aa389683a510da50a33353742b5ddc43494c4920471721cd1509819259af8f5ea249ea13867328931dcbf4a678692ba3be942bc549e5c194aaaea65929ce4643b32947377c67b11ea34348672065d1b3da239da62288aeed11d8392fe490b43c167946af9531aa781a1dcd799ae25d7a9d1be50be51c286cb6c667ea1178add2762748c75611776a1a004fd64a59499541772a1e841974972ac9ef06fa1acdaa9b7c4327e94b450ce6f92f5fde8249a948572c6d7209492e54995b050141dca64afe80a05799aaa931cca631264858292730cdbec33f1445528e8a444859214137a3b8c6c76c9140aa639fd352919a674a45012d24fb375967ecf8942b1bdda64d5249de81e28944ad46fd5cb6082ea3ca124233abb6c899bb27142e9c4bb853879138ae2db39cddd6812e34c289b0e52b3c906b39f97501227352871dde933ac8452cd7ae98c2a32fb4d4229746da691be49df8b8472063fcfcc41d88ff40845f7984dd2a6e451726a8482d04adbbd9875358b50fc78977e36f2f34b2294934811b264c81e251c427976745013c21342297e9312bc732af1c60b42417e5437176952a6784028c9e3f97da7048fa7bb1f144eaccf9e5f3578b8ce07e59bedf291f7a0247c26d35292d0b4251e9494385236948e99a71d9434ae4971f2721bd741e9437ac5996c49dacf41d9cf34435ec9a1433828a792648df959cf748362f8a4536fd48d791b944dd619d3f5268bead4a024b44963fd55679268507c0f2588ba67f09b3a6d7399914179b4362edb06400c4aa63186e924949730030006a513ea2a4cded54fda57144b9ef92a993bad69cd15a5531d6ae2a356436bad2896de75d3a149a992355694d3aa6990f73976a2b68a82aabddc96a98a62ee16bf922b32be988a624e5e1e6fa469a565a82867d37442c7726c2c3b4531bc72c5fb4f9ff9a62888f2d659ef1d697d298a239b3f7309d7f10491a2383237b54c8dd67e1425b11e4cc828114541c92797fe2263ae925014636c93687c40514c42edfad9f6dfc97ca2e879c2887bd74e27e389620caaa725e27490bd13e5b81b3483064d716a4e1443930e9ff54dbf7a138515993c36eda4c9ac8982ca3c427f2a41e89ccd443163085342c9bff71513e54f725728297617ea25ca9ab4fdcc68de529296289b67f6dde912a3242b51fc4f559daecfa44f52a270faa97f193496209c447947968ebb906722944461cf4a30f13959961889b2cbc64f79d23c8d0e1205b1494b69f111e5344970fb938347d111051def84cad424746b444183956432e693fa3a4694cb3a6ca80ff225758b28c8d2b58e119b31c914510cfb37593b968872c71adde2794a0621a2d8a749f61d2daad7aa439432649ba79aacee6e6288927d1052730ea6af615388d2e9dc246f3f25443136ed5585df99a8e620ca1a4d9a8dd2bd995941144eced1fbe34dad2bfc30b3d145042c4621b00844c95c4deeef94992d4f802885aca595682a449bd01f0aea73bf459dbed273e2878209a7a469123fafbeec43399be8391bd5e4a8c1e34361c307394167661781c51e8ab9afdfbfe2aa492ae9a11c63db6ee69363fad8e4a1f459d7299f947ab31b0fc58fa241f8755035257728d6f9e9a427a6693bdba1a4623d79b650bb3b2a2cea5092ee43699039880ec5fc7c311ddc399453a8c86c27a7772f2487727eb7eba0397eb7c9894341ab52be2c466f7e389493f508fbcef54fb1794329f763949c4c4cf1a01b4ab2e60f3a8ada7aa7ba0de524b7e72893afd7186643e983f6d03f659f74be6b287a6ed3975f72ca08530da571d37f1e32463c8b69289ac79c44c733256b12c3020d056bf7ce0e72eae6f93394c368f9934226799de498a154eae4246a62d0cc74194a7aae635853d9101993a1246a4ca65f5426ff948ea1303a76c68b4f359771045888a1a0beec4fde9b311b7d184a3ab37927de489bf780a1f0eba1c45437a949e65f288ffcf049b8c9929b572f94c4eb243b273dfaa5945d28c88eb393afd27474188205174a62769a5327af952497b650926ef61a9f295f9a6ba1dc293227c1ad6f93c559288f479ff594150b05a9751737624ad0775ea1f4d9f132a93749aeea36616185a295defe9d349b3a97aa50127d73f588d72497a8a9504cf3f64a2b41c474760a05554dd35382e7e6304aa11c93ac76727d7332dda2500c313132839a24265d5840a1a0346fcaf076aff5a7279432936afcf1a4ae4a27944b9c7082cc1372eafb26143628357267456a9e880985570d6192f2986e434b286df2bf5d0fba1dc44409c5cc5b82b851717793938482887ec617effe911b09a54d9b44ae8e9dc6201fa1e027e225e809b5331aa1246e95d2cb6cea35b54528797bd8f2f4b029b44a84721036a74bfe73149921145eb77445f6c8602a134279b5c25dcb2094e6ef8327bb32a5e2c20208a5ce73d2694d727acbc2e207c5d8b795fd26b54d677580850f8af2314dd06ca6833c99df614030c01f1606163d28a8ce66b137e7e361e24149365376b5ae4ec78dc50e8ac1c5c462579434a6eaa0a04fd2f939c8e7d10d8b1cecf2e1b5df9e32a27a2e3ae90da5c4bfea112d163828e64d623573fefde4b3fe008b1b94a48faa1e45977e178f0958d8a014364ac6e6fb3caa8a450d8a995408a13d58ced69f58d0a0a0f21f736cf69e371dc42380c50c8a3909ff37e76910b6de715a602183ea5eafbaabcd3e4bfa08316f0ab0884171837a2a3bc13e07d59902163028075311fe571d7a371489ec09a1c62b0adf7fe269bb13215b13894ca1862b0ae7a2e35dc618b572f71aad28bdab5f8cce6bd26e9e1545f9f05ab2a6c9cbec5594e6b476b0f58f6e42481585112627f97cf632fbac918a527c18134209cf3449888ac296247b72298d9fa2209e7fa3888e1fd6ef8e1d9fecf83645e14cbf8a9e939fb6d74824d971038c4824d971038cdcb1db851aa5288c97a5676a7be8ac491b5d4480147d95edaeb7dee7ac9b9c302a320815026103e379dcf8f0e2c6b133b313d41845d1639a939ae44a669fb860519465735dd5d95df6f8206c1fbb45031c70812d22b03c54b0168a92c84927c63cb1e4181d211f3cde8bb4064527b57cb4f45caa2316d4f844f5555f65faba274fbc099b4b9718d251c313c5d22c1e3bdec9e551feb017d4e84441c9b1459afc9db4da74c380681189e4a006278a2a4273c9f5e95c83be8b50631325a94ffa7c291bf74c6a87f9428b07b8116a68a224e7a4d3fec4e9756876846130108944221fd698897298e618aae24e846f74981e11c04431ec497f11ad317f54f020e761181d3a4ca4c6250af2e7a479fe503a465ac31285cf59c5fcba4e9389a944418f76f436513ff78729516a3fbb12735e5d09e9248a31c9a54d6b959228959c5766123eacc975248ad719d4fd95264f9d85444199d0dad2734d82798fd8f2dd5adb3eb3b3ecf2453b492f39285df29f38a2f8a94e6a1d53abf174234ab27f75c856eab6fd99c908d4dc3d494a859a8b28495f823629a363b567321551d0e09b65b4e9168d9d44144b7f742ffd25837d351051f4f05db25ec71269f108d122370f5112a376d2a742fb47d73074f0c051320d511695f91c63c9fbb7d30672f440ff00f4397aa04758a85188d28f52d7f531de2ef48428c7f3ed93fffcff4da4d68128d41844b133f79e9827c7ebf6bc86200af6277cdc1c2f4e341f035112dd502756f1bda9a3d681d6a20620caeb23a3e94ea7d1738a42400c0c35fe50d07f4a2a95b31fdfd71a7e28c8cde1bf3b423b84f2468e0698166af4a1a07c3e68937fccb349a9a1e0c3d450807c28f5b5ffea091b9ee4403e7e05377610a1c61e8a41dd83a8301913f4af87724e26faa75c51b2855b230f85119af44d54cd2ad7e608a38b66420d3c9456ec75c4a7cd3a218d44ac50e30e253bef324977e4b5c4bb0883c749a1861d4a9924b154d88711dda4307844221f16068f5b428d3a94db3dbae6d87e7d75d7a043d1754d86d22967a3676acca1b0b904118b55f50c26722898675aebf2bcb9e4dd7128c90dcd637996e93af618d4804331ec8ab989391e3bcd35de606dbbd86597989ccc75a8c5c925a6efedbdc071230c540dd0cb61c0401e35dc5032e5a3c1c3c9a24f3e721830d8ba2550a30d6535e57b9e849d7f50830d25399e25099947a96ecf1a8aea22b6a4134d754c5d0d05b925bc896a27fd28e13494b294a05c84124efba58a6f2a7d32a3e88b9034813314b37b8c27b6d96f76b686190a63596bd2c3099dbe448f8148c4b246194a42d949be997427597b3294df6235769e7e939e194331d999a8b1fcbd3289a1545e5ac643b69d1cc3612868bc89dbd3059e284935aa7372bba64f6e270aa24696c6e914b29ee64449fcf3183a6f2a9d936ea2203defffb59d0cb23a9a28a749b2c7f718cd443163cc8ffb6063a2a4f63ff7de51847a7a8962d2245cc4b3f9863859a2f8f269b644db1ad36125cae9a37b9b70f7b9f6a644e156742f4b6612e56a4de29a4bde8c1f4aa298bfa373d4b27c4f8b44398ecf760c2783444998eabd881df5eaec11054f2144771c21ee26eb88e2a99369b2bcc6c74c238a29cd93ec6bcf49c99a2c18512aa9ae441d9341d857592ca218ebc4c48dd824668e9d02b2504459dc6e36ef7492f1328b445884045920a2fca272bf316688e97a84e00fb23844a9048d3139a71b89d8d0c2060f1b5ad8d061011b5ad8d861a38b2d9e87e1d1c3021088443e5224a2e311085918a220c4a92afb0bf9572b086703d0d2eab808c1479245214af27e9ada94f119b2204429b39b9e1c9e2aa6cadd419473f9c8a49d9a3fcdc7a30718a55c84e0e3025908a2e851f3df5379c5dd0ec2b681888e90332d6c54f92f72f4e8c20606b6b0815904a260263de90b710261b40fb92b64018862957e7a099b26acc7902cfe50de24657091130d15257e289b9c9c5eeaaa4ecba70fe5133cbcc7f4317c289770d2c627996476c6f7501813dad4a8078de5e9652e42f0a1230b3d94640c5a4a5efbddf3abcf7ae4a1183e675025fb7795d0e0a1a4b22c54661344c7937608b2b843d1c35365acd3b5b661ae1d4aa3ef743013ff4ff8ebb00708b2a8434193782b268ae8b029ef1eca45083e3e90051dca7be23c68ef96134df0039ac51cca27c6b0d14b459520bf1c0a66d657311ae30ec8220e05cb4d2f61d2049dcd8743c9ba24b1e346ec49ad2d208b3714c4e8bc25758e7cfdd10dc5a4315bb63baf76df869257284db249f59ff5cb820de570ba0493cfb367a88b478f1c3826a00dc8620dc5a4e94dda2f171994ac1a8ad535a3a5a684ac58d350dc9c5d639937b74972682859de090fad3c39d6768692f69197b1a458dc6e866267ccf996cc7e1f2b43417b3841ae224361d4695527f51f4c521a435993708232d579d29392180a2797bda33cb8882885a12477e558de9bc0509cd3ec961bb7c5f45f28ea759fd8413c6592170aabb6a13b67e924df5d286678d26a42d67abeb950581d1ddcd364972c7f0b6593a48e72cb2494e75e0bc51d194d673b415997b250926333ab7b74cf1e445828c7b87ec9b7d1f9427485f26bb6e82426a1c9f3562898a8bf7593848df2ab50feceac71d6a4589f0a0515e9aeb1b72b44680ae550525ab675bc7991140ae66757caf62894c24467092fdfa7835028e5d65e790a932794ec4a376fd85fdb58e20437768d09da3e4d286fe6d01073ab8dd9c384e27af0209a32e3c9ec2ca124e86bcc38f92ed6374a2826154a3b94d81843c82421dd18b98f9e22a12852e373c9cfbdd0114a324ffd88d09c263f6384820c213a5e646d8d7c8a50d0bb5392dbc95cdf11a134172656d99c20c36586501032fd2c4b929fc9238492cde64cda4c7e1a7510cac93caee8c9099e940e84526f097f3572e3e7d30f4a3deaa6f4d6ed836250c28f68b47b50cc71ec67739f77529b07059dd3991263af758cbd83822a1d5fa47b12e3e95a07a553b5a94ecbb4d9c939288931d946d568da31320ecaa77d74aca4f0ed906f50fcec492e8f3d9eb1b10d8af2d6bbdd313528c999dbb93b5c4c9406654f9113b764919ef41994327bf3e4332567892b83a299a81532c9bc927e0c8a1fee74d4dcf976280b18945469d938d1c14e8979453995ce9975f495d6ee8a82de9e38e6af49cbdd8a62ae51234594a45409b3a2683a4a35f7c690edaea2acd904354ad618c3a98ab2a8cd2e3566b2354d4561b3a6582b394df6121565d11c7feb49f765ec14e53c3166d9a68dde293545b94b328d299f46864a51969137a2f5225b4ba428bd9b6931f9382af4a328fff787abc7768d5c1445cb0d316d3fd3f950143d773425e73f29b30d8a72983ecf7dc2458ff61325b9cf9fc954aeccea89e2c99b27d7869e9893d989829e2429ad1ecdba3e274a962563c49db0f8ce260a2788298fb9d3e88f268a7b16ca4ddc35cf7126ca266b2747fbc9f51413c52458282d4a335e8c972898bed51037a6376e6889c269debf4993def6ae44d934e6dc7892dc254a1484d0a09f9ef54c6a27511a0f4aefe6244d9324ca7957d69bff93ed779128d6879df1beac7211244a9f4e33a9a9132f4d1e511013c2b4b797349e33471473feb5515a1a84971a518e8fdd1f4665574c1851369d3596103f77db5944416a8927e751b31b4f4594aaaf4af0f2923e8c8928c6f734f9bed0318d88f2fd8d4c3965599a1da29867257cd2cc7a6288e285d678f325acdc55101040214a9f63d0f4d16c3949842826396e12548cf0d4a64114e4cdbbc5aa739d491025d9d0b14b9d4e92f8035110a27276744b5dfb80289da4f532c667ceecff5052a7f1e5db4f5509f9a17cdebf49aa382942a80f05f398fba25a6525880fa5130da63be750b7d01e0a325de9a0ae99369ce8a124bab5c7da113a749d87a2dd4926680e1eca6963f2a4103f5ef31d0ab273467bde93636c876226b137c6ef5e8d6d1d8aa7291ae4ebba9ae8508c1fa63a5f4d029843a94cc3269d8f257c4c02904331e8d3574a86b7517249007128682c494eda204fde5812001cca419c641d4295fea42501bca198449692e26438f9a417801b8a9bb36f7e9139d5492f803614bcf4c875d2bd51ff0b800dc5f4d1effdc49592fc17c01a0aeae4d2f95ca3867290a2caef34956c4a43c94277f9464b9b1d0dc5584d6ee249ea25436728b7899b49ca181b4fc70c850d6fc27512346a5f86924af52083094f27ee6428a756e8ec2254fe3c86d2f5ca870efb0520867207711ff66fe4c9f50b200cc591495cbf98acebf50b000cc558275d5ebc5f287c525525c2c4ecf57aa198c47353174a7aec4dd7759390f5b9504c32e2a53f9a68adfe164a65ee69ceefc48ef1b550ee4fe76572fecebccf42412875a62bb77d7f7b2c142deb673587d652627f8592f03db2495d7652edad5036f1c44cda4eb3527d158a5d920ed1543d154a7affb489f8df31932994c4a7c7249c9821fc238572695fbdadfa99ee44a15c9d26faa6dc90b1038592a6d70a9961d593982714a3bebae6a042bac638a17ca95e4ab77379c79b501cab3a19a6a94cae9950ec983a8d1ee1e927bb848292b499b59720f3b74a28beaa9e12d4948aa64928983493df4e39794c249437ce070f1a3c42513489634a4d9f64a211caf1ed93ad96bc27bf2294f4c5ac4e3b895b192242d144f113c35f680825ef117282e6688292104a3246932c8392201465c3f9d85b86e7244028abd7e974ffa0f06b42562f54bcc60725315754ed5bd58e490f4a21fb4fc55fb3fb3c2806ad2a65bf7f3ada41514bff6916e51ab4ae83827c3d41bd06e126ca41a9a4d7b79333e6571c9484f2104dd2fc3bd83728860b0b31193c9e920dca695bf5344e7a5eb9060539cdd96bff71264a8392f0d7a639ab785839836267b69852626c286550bcdc92bd1e4a6587490cd4bc1ee4b6e9050083d265d4f9d538d9e57945419f8a2e8da13f64c61565bbd1374d197eae6e45e97283e86056193e2b0a571944c98e4d1fde55145395b897ffdddb514551ae3c854c425463341505ad8db991d9414541fbb3d8d896a72828d1473cad47d36c3245f1677e8328f984924ca528fff87bae366984974851eebc9efe3484b8f5475136fdd615279fb77c5194f636ef89c16f840c0a4551e4ae89e14127318a4051988d2578924a3e5152a2e8d4d28dbaa5e3897207a125e9b8f9dee474a2a03aa2eff7d53989e14449ce49e6ce246613458f267e9fac33091b4d94daa4c9ba26a718b73351d2906be69d29b5674c94738574adcd3cedf81225955dca348cc939a525caaa1eb64c464b8bb2122555d9419bdcb94a92a4444918a921d3c294a08493289a741b93434ffcfa8c248ab771748be6dc53cf44a2b85e575a4caf49d90c240a4269f788923c08cbcc238a9ac43a0d7d2ea22be38862f76d3cd3a54614359e8a1072264cff8c289924995fba5ec8a05f4479eef496d6ad9125a4887290b3f88daef9639488a29f9f799520a264abb952357cd73f4449509b32e99c4e78fc18a2f84935fc29d1aaf485288629eb189abb376e0851d0cff962728925671025a193e026fd33d717444129c94c4bc803514e4a924eecdd8028788c5628b15417f90fc5fc0a65f25eace8d80fc53ff7a8fa3b32e5db8792a9d892f73cf767970f059d4b36214ece9aa43d14636a515aaafd2471d54341eec8302927e8d69a8782d6fb58a7cd6164c543f1f309df267c4e6fea1dca7999fd457b720ba11d4ad27eb40e0de62607eb50ce30a70469ca46b8478762ce3196985c92f0ddf91c4af1266a93da72d598cba1fc71941c87923c9d6a1e4c779ecae15094f77d116f8f37a53794c3793c95b3d878df0dc54f2393997cd286526ad031e1e16e37091bd43ec94b1253c91a0a23dccd941284a7d05143d135939b9d909b734e1a4a569f3c879fa69b381a8a59bb93246e1a59ad9fa198532dac53e508d5cd50122b4f42d7c6e46e77198a71dff49c74eba6e7264349756fd21a327552c23d8682328f1f9eb4095bb5c550cea4d71e74c99f5d76184aa6bc2e5d4ce89bb0c15012b177e636f6178ac12b6412dc462649d75e28de5749f20993458aaebb50ba7ccbdcd8af27c69a0b65994d5a94e0a5844ef5164ab286f66f926474a75a0be5be3d493d49d2bef45928759ad52a7132969c8385525fa88f1e9387f09c2b94d4888d395477cc7a5ba154a92b3a54a9c76057a1b4fb268acc7926444c85a2e83c85a2ef2613c54cba0eb314ca25c7d49e1a336972a350ccb729e5573d2879854241bafd6689d3c193e813ca258963bac41d9d5090a9778268f6ebfe9a5054b978934d4ebb1a2614a4dac9935e4229354f8c419ca8ba99128a9b749217bf3809ef89f5dd3c22a1e8594bcd64ee2759f1114a1ba487682ee121324231744e3a973431e7982214e48ee7eca04f503b114ae3993666c2892fa62194ef3dbeee6fba9b2f8452eb96acfda2cf4b41289e296d16a341f7064261f3e36ae74e92cde80725c9da2c63b7f5a7121f944b69f498272b34a907c5dc18d793d83eb51d1e1493eb77c9eb4957b283c226e9d35fbce9d9e8a074e772774a69b43d07c5eb3b1925653c8f8382c828cab7af6ae61b94ec63323553fb368d0d8aa24a4b36391e801a944e5827955efea9f100d0a0a8517449da4d018d18a8044c260462a138180c8382613018146cd6cf2ac31400000014220e06c3c14054453d3e1480034d462e463026181a1c12140e0b04c25030140604426130100c048642c13010140865b5d07907824300b489ee80ce5202c481024fbeab9b9c2209e8600a10d3c6e31d2ef775fe2e5e88bf731eedb6643ba0438470a2f8777bddbf793c15819202f0b39de5321050f59b8d26cbd20aeab7aca5b93172a7a597ed96b538e977005dca595f98a73ceee917b0fd828c98c1bf26f2ceae5c972098d979c95c2e36e8970764eeb244d3625f01ccb31c6f5916935dbb3890feb10cbdb63cb246fe1e060dcc5fc691f0464fb02f2298b884281101adcf5a54241d32eb54a65eaa77b2779c8e5831d4adb86714600b15c3b1e53ab218b132b5bb9949e58e8522aec4b2fce8cc43f221a7af6c9bc10e24f2db9036245d040585c86a4258e75ffaf8de590e8beea07e54da8a36e65c861c374f991ac5fb02ba001200cbd393379523e5aa00674f5331361713b1f10a24108f5bcad3d353dcdcd00b4594238806a8052a77598851a46747d85c8e03377c5186aebc02836eb23416a5a1202bc0268659bdb9c71869c7471127c02512b481f0be3669000e0338916cb19f1901ace6e4ef79644bc25cc5704d1dd993e0106c87897da293191daeaa5c6d0b2550f05f28125fb512a455693a3e0c62a60c1d6b31feb180e05d0b8f96715a7d2abc9235bf400c22f8f05ef9434bdcb781880ad4b9e81fcffc0ec1cd5572046c9eac353f822fe6980670421014667cb11af3a2edc43a26ec7ccf005fa781c10acc985402f382acaf7957d8d66ea6ed8867471dd091caabd144472fceadbc0cc3f7822b42adf42c12b32efc42b8090a5c46a20e7ee4a3ebb1db102aa76a1a6333b252a6ad6cb346ed652b9519e9dd457de2127ac235a7a224e688430bc610475b90b93036c270413dbd5658f6d78981d55dab0556aa75bbb3feba6a032b9bb9fa8dd7e6665663db9a4cf43a69a4ebd75d97b6648babf21acd73541aabd58c6c2e73e5b7bfc1aa6947b7df9999134ef7509323ec1572752e70ec735ecb551c7cceeb7181439f33b39a0bbe31f9469c2296a0a9345ee647f3cec684a61cf6c8a7318d2cf89bae6b60944cc829ac3a838604952f975f3273908191448b8cc8e72c270801e39e34a1d20e2974200ded682708aa903b92e7dbf3e4fcadfb51cff72a573feea59ee5a44f3bd56b0bdb87c0a099aa6b3aab210545fe43029d8d843123ed0eb95dbbda1d0b722aa1fda924676d08aba43029c6a6c6fcd9bda6e79835b693323af85cbee97918075b71e6189e7933056eea5d6734d28e633879b5e23b5e960b9c7d8ed78ef6214d9d9960cf7d40778d95dfae409ee9c73ff2053ee4e2677bb2e7cc9fe29423852c739901567bede7f95ef62017fa8d5e590f8261aa0418356fb52d1a2615cc8415807d63417184a4f31de7434e7eb5169bcef95ff4524f73e28b5915e1ab3eecc908d40bcc709151250ef55c24ed7ca2c80f925d852ae3a9ecb30fe734ae7fb449524f71d2938bda425767d4e84a38c1c4a02f9aa85c14173ef06a9ce3f4b71d7d1a2659147300baccad6feeae0f1de2764586c518794bd5e5976235e5b4ab10b45348fd3714b004c4534ed4513c832f620a1467f3f5189e5aab8b11c487b6da95794ce931baafe424a683b8282a72ea4932ed18066ba42eea222161b2a738b5082f88cc24c80d19277de5b3b488cc303f9dafc602699be78c5cdeb429b308554dc7dcd966ad890da75cab6c561ab7d65b698edbc5373ba9f7b97037b39f3d664eb8e5dea77783be0f12481f6876802f62c941a50ba5dd150417194bf5c5c66eb094f6a3a9b07dcce62aae21a19a954e74501701c3b2511620e2995ea41c4408d5b388ce72d3b71deab51c6a2d729097b050baa411ed03368f73fcc95eaf45509fde6bbd9699644109ca4dd439ae6d0cbb763474beb767c4d1ff7121f4c4dda2dca0a35cfdb8a77aade4200ebf09cc5b3ffb9acfe5fca73dddcb5cfce1e5cc4cd38c13694b660a917c55b2d9fd6302930863e07f0e5b03a4bfc617b62c0b15587270ae51a129c97b4f684a7ea8c7d40825b6d9298082842c68c7750653eb188393bdb21c706eebb118d98bc3b5ed9060ba20e3df95ea748f72f6ab3de8e95cfb7aa77a92eb5ea7834e71b597acd6cab1e25c9ec88dc11939fd597a113826e987c48c50814b2e405a88b5f04447bb68190115d17a228aa5c8cde3c5fd6ae26434fc32b6568c5be5205b9fc87200193c6dcb16c622ebc0d058d66000875b6c28a917257452b237a5d63b551253b95d1904861d607b6ca5d42d9e7ae0d1833cf6d4d37ac54325bdff0e3300b54a1b90a82e07abd56547cf31d7547efaf20c66be2de7c28caf9cbab25094b553c6a272ff5793e51231eccb2e8538101617daf125cd3c9335955a595a8af65ddd26743d75e8c3f554b540d447cecea8ba67700a5445c41eb13ab6bbe3630106cff8a6c9dc54df201bb37e5c296727d385e8c0606f0b7a7dc15e18ead1423d58d083057bb950cf18eac5821e2fd83b86d6db0b2352ffb20421a96184db15fed60a05dcbc830ac6de3ecf3e40d17bbd6681acbfb496d341fd06c749372fed646310800244a4dc1a3ca16b25a97e9db1ee035b4395268e8566619f88978b4195f9d02901bcfce43dcedccf27010180b95e49d180caf2d56184ce91a5eb482c85926de9394b6b325e92b3810f1b484bf8f14205c8d95bb40f670ad238724f3497afd8f9e42609774e897007df8aa23269b03eaf89932707e4b717eb56b07df33b108194b5138f88a62b3f77197e57b2899eab6bc833ad8744c0c9a6da22aa1c9457b9485aa78b2353ffb83502d411895068f7d7527a0c67d327f6b4b19723cf042af68a4b86ffa7c69e95c7c75c171e890b7e2182790002a949148de03e0e4db19ba31bb3f13889d6a1e759d7b659440c9e8608b23748f110affd03dd3fc7cc09f80770f44df4293eb99dc400756d8a5d122a0cfc96dd0ffd56a3311fb2910705b31cd1b4d7c1aed2d7cae3a6ab104a16cd58e2bd6c16922ea4d63c55aa858506257a1987d4e31e53763296f3b3feef9c9a79064880e8265732a613f8f78beab0202919cbe98e1254b7bc1aa153b78c0a418af45598f160694a2e54064d742a28e958094e59493b45330645cfa246ccc68a1e15e82c2d7dbb58c9d7a790bba35925c7a2d712e34624135cd0a5553a44986ccaa683a4a3bd032c09f3d05403aa6c1f78e12499c37ae3eef851453cbd1cf22e8f99eb1cf88017d5a126b5395ff25cc4aec36365d263544cd0fc4525c1f8edbbab074a83dca329035e300fb3205388d3c41cd5732f6ae0c6de400147704806b77eb93589741ec85f592a25d729551546fc25006e7e64ce9d7adf809ea16c3e824f8bd8dff80c4e18c22dd66f338896f5da0fc45b96b6dd20be5b2ee4fdb37468eb5b4e9f0e16ee8304ea0cb251df7e68422e8d9c7dd7a0fd7d3fbcce325ded064a949b24a847d3c109ea0e64d54b2116da5a70486fc7c834337f3860448d071c3341792cb2a554a3de892003ac73e5a132729bf04600118f809bdacf890be5056d9256071b4dd40581debaa5a1d39579f84280c65666a0347269ea22e81523c5a501b4595d344ef7cf8b3441b69a3e6d09e0ac3d903c00a78034880687cda454ed2ce387c223c00547b238e96dfa7bcae5584c9088ce3fc7d0492ee6e9ceaf4d0c06210e198ac4910168da7d5c4d8e45cc19b6658be1dfb2e3807763ec809aed2b9d5bc0265ddde37c1820785f4cc2791eb0c7aef758bc212566a0532f26a78543c14c86861dcb8d59ab3c40f12de23a3090fd8d7904afe24827a3778bc061f3f6ea50bd22a5f0946d872873bdb307183925fe1f36335032a4f219c5fd6553478c98c37baf92bf577f20a8999bac032399ba41ee07cdf4c901eaf23fa335aac6f72b43ba77b245904e3e4f4a3d8f5eff871679564f01d1fdbf618d1a0df8251ac6b25a1931cd0a45bf4a8846edf4966e15e0b9bc00a0d5f0e44557f1b5afb90a142574861964814c644321ff6bf9d7827caf727eac68d861d177353b16ca8feea736adaacbe2c024ca29357606677e97015038e4dacd102528d17f63a6a1be61856543b020dd1dcee0732f59dd23f56be1c313bdece6146855e8c29597ef510ea011411d9732deed2e81f2864777f21813d26bc15802d2ed797836842fdacc32fc08e621eb1d66143bb974857de8219b71c6863575ee7d00f7dd52666ea03e82edb8d2360026538f220b9db066cc0c4c7d61e94ca9c47c1e3ba8d8da7d830027d1dbccde9e8c370748722ec6974d9b470afb87b9e7cd0342ae2e47590c132b2785ff7a6283a6d1f3372ad281d481056be00e0d1d565d069737021f729c29fa7a625f945c9959e6905e55bdc6421a0bdedf964255831db980710410f50413ea717db99749a24c65906b46c7478ca106a2acdfd366d6df572be3b7e6da43a81cc4b3332f3e880a9d47098333378a4cb504efef28f44a353aa2cdd1ca4818cd8a87e8e9705a41cecd3727308b50eefba88cb4cd5c2351aca6809c1660b0e82568d70345cdd7a44c17fc6267253948e4fd71a0d10edd23a3e2c216987d1f43de6ad82a43a399b2ed391fd2e2940ab3eb0080ee0e70a93d0755d9106689783065cd089157b8a2c6dd9526d2cfb77eccac61af8858b6a9d4d25884b88108d67d708ccd8e0b9c33beb11a565f421c9af00f57b80202151fbab8250ba61685400ba714636a4bc15ab66124f9416c4f00abfefd74514374310e82a1258ea7057c966af2a4f3175fc0d55198f97ca3bb04ec00fdf4d2c6ea16f8b3547f1bda620b763a01fcc2db033883c1d1d122436aa42fe1c8667d9199ef7d5aee3825b157e15da95871a58aad67d263a9a5572686f7eec9017270fe89aa3d1aefe125c1209d86aaa3885104dc425a513f1d9783917162057bea1db243c10051827447f37714bc8ede013649b1f73846e4b8580ef05428b53aec93b74970769ae93239c34ca75d7ddcef9b6491d2a46f78efbbb0e609a416a0087904e03196d91c120cb69d5a470d4c09caa2481254195aa936c7941c94c737a5951a077c3c449fe1d050df08548537277b4d6ff8f50ec9218a44faa3c5639beda9fa4c9cb86710d48a24452d5f424f76259847d66bfee835ae2e7c9a597e25b61c4438e3a8ca1b59400f54d1f0888b5ad0d5778f8dfb26824fe564b548a2c76c9cc83025e908dd6e9b88fb213c24a6ff6bef141339f64a47d4cc7ffa688d2222ca2772e17b28b1017c5060a776678f8f9b5bf1d261a775f262096b7ac5ae757e24362c083bfd35130d4f5a48daffb6352232ab6c99261cccc6f2edc87ae8de18e50239c253b4abcbce18543927f6a3abac931e9a7d24b776c96a73d4075adcb87a1889482c7d25be4306c8b212b57261feff80a4362fb9b468e9ae673267c20afe9c1276592fcd128bbeb26679d80f2fd6fa6e1bb8ee81a96d2f4ced17eee9c0a2ae72ae590060894ed2f0d9561d9efd2b2848536d9022f93ec7d1297735974fdaf350a8e848d0c90163568b20124b93b51f52a27bdfaa983ab2eb93f08125c644766cac5e8d9a3ac751c8a34ae7069689e7ad4d3a672fa53bc14741d774b9b849bfd3adab55a6e9c0b0e10114138306b6017a7fcacd38bc9a00482cee4230b3a1cdccc662337c4547c40412196ccd300f267811ec40675859f1e677c77a78de4c3d13b5e3d605e5f8f1768b2af1346da659942c6e28953897c10ebfcbcbc3bb66c3f99edcf1d81a50c42865386048d32bd8620d48382f3b8854ff68560fa4f0aa4c77275432b097bf3dd773eda86c889a1c36d68f8e688c274351fd1bcb810574763add120a5faa20c8f515f8e044439d440b82dbebc4800eda2127a40dd6beb458071184765d1a34618d6270f9cc825e43527d70b976305b72cdcfd01935dab113075ebf9aacd7114b2a3499c11c9f5ea8f9d98f99a24c6c85618b201c67afa5829c368e3c242ec02fe34afcda9a2fed79c4710c85b0235df5580d4b466d558d5702a5c3e10928ecd9fe49181cc347aa4046d7eeeca694437d5a00a57cb06217c9397a2b219c78a6c5546f86e285572be2236e456e3501a423b251538bd98b1ec2cef295479a7d263b589e678d54b55b0f729d5af35a403935c12eb064da3db858bef90c2dea5129d277038f242eef5149c7a4b2a46496fbc3e0be69aa3fac65dc9af5f9b2f5baf394a5c5ad24b2b7a437d598f528527bcbee3f1cd598aeaf2f5961ca5b4cd3d53b7afc0d4bb331e0b2f97dd2d3286fcd785bae9872b3832bda16cb9f8c984d0eb164f7aac06bac7c1d13dd90ae3dbcdec038a9d80b7e9901c6b71777af38bc54f112da8bbd97e55e2d7965acd7d13f334cd573cac3101b094b3d65abdeb1d2e8c394409ea850403d8035590425d6290e8f235ad5c0581499ad26482b4774547dbd0860adfb9f1836bca4af01d27122d41328d944f123b51b6a7ea82a5040830a965bb43e6b8275a80b6805f85649335015a0800495154af1a81652c686f21f0a1d507d46e25cf323a8e582622215dd3b2e530a78c987c847e0ca2866a1800cc522aa22a9588002720cfaed29404480f4aa09b77c0d223a0d1ea5fa84dbb07a3737dd5b1118702c3ea9174cd7fb2802b1467a7f7c33c4fa104c898a8861d2f8d323ac5b95a24a18b5231ef516acb0a4361598cf761ef8ad4589fdb7363934a5b18370b0a5c6a1414620022202c83fbdabd344b855d504a4c9416188f58b804da19a14e44a1e2062fd93e2e516a754d9b2210c6a989b1ddb020ec75d7168c58db3a154f4961afcee98a5e80fa649e6262ac859141fd548689fa4c323743804374fd3c8d34a6b1bab7513850abb0fb1c20b32d4a810208d3558438df626a3c131a292c5a2f7668580b1c2780fa552527d0c5d17affbb40cc055eed71383950b7f61163cf817ab7eab8d6b15ca4af4ee0426a11eb894d98e6bb22a34f34516b27097834fc5a2f9c331b550794109ea32346465aa6fbe3d50787cf221f77613dbcb0ff89e1c6f687565ac81b43eaa53d7d2876bf7a24353270c6f70f478ea5e020c7cf6204a6b0a0f10d5b0d2114b31d1a0f6dfe913aa073996a158259ba6f7b02093a534b0dcfc139465043b1356712b1565d1ad88bb1af2f01f413da3984261a041fc661ba3646118f059cc2837904ff0132ce4dc5d8f9ec0fd3f6eebcf44143a69920e2cc7657c55809751e3eb283e955dd0c0ed4f2fc2fcfb84afc6dc9e51a752d1448708889405bd1b1dfa427bdc8d6ac6d53affd37a86e89c35a1e0a6153f5dd0655813ccb886f4956560bbbb0c04ef5ca2fcbbe438cd4f923b689fe9918f6e5c96a6c07553615ff2267c98017c7453bde6036092e964939a26ee53ec7c3f675c0dd502d7c94f659953c858b7ee9e44a26a4fe9699c92fe5da684f842dc911f3e017bbe9b902024a9306cb76fb5a6541ea438c839238e3af7be66f88e2c6a1013ac4ac8a155c4d06f753dfe11dcae3e725ae77d35acbc23fca347746ba06040fca744f86038d2b8b383801a6b93165edc22748386e5ff335adaa9be20c2e410d007e69eaef2cb8eea59c484b8ab6097d38a97ce91598a89ce4a00c506327d87f8159f2e2831b370f91cf5b7b82bb261d99889a841e69f180f5b2138c1ca4982235ebf6270fd4745a560dfcf6b1c65ee4dd02217cb5b3262452396c0d52c6c94cc5262567dab30bcb982bfb3aa81ffa9844ccd92aa3fce939bd4a0fd34b5b02fe736a830099212f9b51f52a993a1269906dc2c28c115045a87d67c4856f728f01b50df6236fd0ce81ab6eb6a03453d3778032a8e2a47d9390abaf8341efdb4d20c90147ae658e1e9340758533e7ccb84955b402d0ae8e6d66089d1452578f60d6d95901355c6d0b4f78d40c87390a9531deeb4a9283cfba57cc9f0802b1152677ff44062e1a8d92655ae6882a993ec398c92969c07d977c8621f09f9c95899df99cb03b61f59e8bfbac7e935a3d9213a20b3c1a4bdb918a5b7622b7c41211f4f437c799eeb9fac61991584670203c43260d8cdc2ca0cd67b92002e0205bfbfdf382382be4f0de2d780b7730837c2ab1f467b428e1616d15535cb5d0312d3f37daca06651316552214daef550975d897332becc89d1908ada4ee19f97e663e5fb73f4393691b5ccb1d736de4f296cd7bf41339e26d0c0234a8870a88480c32a0dc6ee59b35ea00bc6451262246d70f55cd05d8301730dcb654168d758a9e35f738ba656e49380aeac7b58c015c0794d35ac1927ec05c8dba36f4c2c90702d14d475018b29740b072d9dc29ce35c15a0715df2d3a7f07682b59adff3c2e27363c1a8cbe249cbaaaa8268a5620d04288dea7231c5917c4c205892bcdca946c69360af221c9e4b22a9d2c686547a3a5af37a02bb82e43780d1e5c1d6bfc52939b49fa6260e1fc0c0e5d581ba73a5a727a602aee043f2061dfd16ce17fce3c23fde7ffb672cf22e9af29a061a5467c5fae4acc813484da9cea8114cb4df31ea3969f77b0714818332939fc184813623995cd7817b2dee7b19c183d80292f9a51a85255cc2ef829a08daef7c9f5863dd79b8c4b37b766bd7e38c05c35292c72a37823e6dc9321a14eb095c1801ec344e90df0ce857f8e4b8bfac4ad29f09769ee862347f4aa2827ed96a6787bf60faedd799def730406e0959ea19dd6873fb0041a42bec2e11ab36daed043db51c9f5eae3a1ff7227b474025ec4893c1482f14167c6e75d9dab98df5183011d893b7916e92b2a1e1ca392aadae307f01bd1493358294a8c86ccf9c65cc837e87258a39ebba248816488c299a0d07a474dc52ae6ac4b52bcba51954914090d04a3b3486f84e77c2aaf9de152e2453bdf83f1f516dd13403eb1a2c6eb277354e90d82740c572aa4ee2522ecc8376e4c3882039f8fe65576e3eceff3096d5b863154c22f906b44fafaa24067fe416ab5d3a78152e5ea5b51c617c3f23db65f95b5f9db358653323cff16ee11c6a4ee1114f39662a9671c7fe6d64bca372438d13fec387c86b16033f218da2ec62f1b8cfbb5b130268a25c24a9fac435b75d9be15b86cfbe52af68e4831da043f61a7bc440d2aff3124780aa6477e21f7d661faa4cc109756c4e80a73a1d778cc8acee43ab0082b902884909f8f0d7823bf8906094769ba82666a87b3d9b0b68097b6a9d18d9c620d5d4256e6c0c298def4cf25bab1566c855b33f74baa52cadec463dd5b17609cda269b822992ab8c914c7535afb10bc28b55522822588f5b01d06101271013e794cab082d8c68c4ba8bcaace3b6e8f89ec27bd2a51f5f1d14b43e48e78966224dffbdf7051b9a4ec2222e3a12dca89b0490385ff844777506fb924708c49a4a5f08fc008027ba764d0745386ee7915827ca17886bb2c941bd5a63600330b79b6f42c1ed3d3091ecd9d27ebaac4f4edf7f91bc43079115dcd38cd07a1c39c01eeb55f125633b852d1a542c2b7c92a56c58ebe83a5b731ed2da05e72957537b282322bcf11e3d31e74bf42c80173f0d1ace77edf9ed1396bc880917eecbed707e8264c4dd4aaf09b653d6275bafa1013383bb685f9f9c0d42e4dfa4aea764e4ef3c9eb501f24229c39f5f90c64646ac72b5909677e8fd72b55dc8c99c5f15002d40e4b7ed2c7c8907ba2605b00089831423db67c04d1d36fd921a8aa0566deaed1399378af2fe43ac8035e7ba12f0910d839278d60091c00799c0fb4d4c8be51322fdf474ea19fd275b195fd4abda19e82b289c6f105a33b3940f49a29dd625ad55b29609fb4f24b5de547f43d570470bd41d19670a4640d46949092c4694810392c1003735b94434edc95ca6ac4dfd2fd9e905901a0a6f40e461457ef3128ef11c54f828d0877855cea54e57bbbabebd947dfc168c77a4bfe577cbc6097d7f4cc54f4a1878f06742a82e938e4602d7ceea2bc5a970a89ae0802e1f5622ff17e398548731607ee88a0b3981105ebfeb092e0bfeff1ce89b8e7cccacb1c8578a82aae224c06852aadd0095dfdbd6887579be8e3efe8f817a3298b831c2011bcd1c414b9406774a2c7ea42a7b160570f6567244b437d09c2ffc05aaca71a1aedad498d94450e6611f444bd88fb556caf9882f44e4e9868d5d49805eb340f5bbee602cf2c9d8fc7560c4307dec22a6bbff0829a0a7f86e8c33d00808123b66a7c1886a703361a0af9b4e2c564f31c5fdd1d7147b3483965938bfe88bd4d530d66778968b8938a51e01fb4ca4fa6253a61865f2da9311e5d52e8355865bf6e027acae7b38d00d61cc409f9126c2681bc9f42d786ce041021faab13164ca59157002545c4cd6bb491d5203c47cd3131d2e6b7c12ecc6ff1bf81e898d96812a83b59e66f8c9f3cac63d88c9b1c409d8c9e0aeef18e6b5e92d97acf52d7987c829ea1868772bc1f0e3e35ac50f17b5e155085186e2e6a35e7ad8a2acf7f57a196e21eebc25b2f12f161fb004d6a2bb3291ee06b26edd5b4cce307643a6bc0636f3128becee5036ae6a61c04a8a2d7463f48526bdddc58365a7624d5fbb61e063073bc5c6615d64573649705067a8b908fde1c691786184427a06e2d84800fc574fee7e3196b4353d29ff4272f5a813a223b65341c21b69c459e0f9d8bee6c1cbdb9bb9c4b984bf3062966f91e33adfc8328027c88c43d8da2423235c4e8c69dfe507d6df0e360e09bd0c3e6fe9cb6be1d76d889d4ee0fb6ab4c756f89cb9c9c2849a5bb5414ca2a0fc4a1568e3bff1cab18c26e99f31edeb741abd018085931fd85616ebb0199898c538a95684a8c590bac0d72088fc746b6e6a180250f7cef55f37e63664041789c6a191e5ecd4bdb8e6c41ba8c22e1f1c6acfeb8a829cfe6029b3d3c0cf0d905555c5c0bdf17be46188b4e464b18acc2b4a78030f91977cb0879a34e6c806b12877ec9f73f468df7932ed543b0b423d30f507b8a32281ae374750af1a93894fb3c413070c30ceedbdd423b7ece82d2f80d5d04ca1301b864c2766a688563191e3859a2f4650c71ef8e186fe7485c7e792f3f1ec5e7ae3bbfa6683c0c5e9e80cc3ac27dfa23966fbcca0488d67dcfb44f7f68f584c4bfdaf653ff50770a85260b294e0d5ac9a27117ea4a845a88c2395f69836ed9847d1083b772d72bb17b82ef108c6944d647415f11d2a085ab221a9a81d7b30c85668b9077212741b04584f08d7a823cc01229c3d612eb22426c6b82f53fdb049742a8d3594719fe5bd534526730083d62deab3528b6424c840dbdb1b975aa5221dd8b6926f5218882c46a41daa41cb9d136c37c7b4d57bcc0719f6fe9ec98b8a758fa8cf213011ae7b82eda1248638e44923b243e91e382619093d3a69e3b019f9c25b46ed3456142099a1d668ecaccf66d108b4d5262345d38448dc7d8e2f47dc9c2406fd21bbc04ad4844198d202d1fdb1255f93bb1a51bef05250c7f6c5a79d9c99b9335058b3b4e4f22adc9eb626035351aa3031b786bd5bc6708b3bb3612fc95c51f64690a36518eddfac0bdaf0e0ea1a0b911dd20e744e34c0ab403510bdcca7880476a7067f7b8f6da3178e65780c08fb7fed7c5ee85911536852f0ded1ff7389ac88d9396215538fa4ed816a4e00782fc031e871cd6b339c8b85418de334dba424257439232152f37c434a93f5237e283c18311094ca905a90e950eedaae6f93ca8c0d48357f836fd20035a04a26087c605a9a9221852259d24fc505efc246b30d812d5f66ba1d52950318c3270052881eff181ac8d65b6a58606666fb408a1ccbddde58bef9a0121df8cf4078781e52928dc81d817b96136eb46fcf09d6a519eb2e686d56d730fd36da3e87854f019df09e027479e629a06a65815191498b587fd6c7f1cbd63b4adb49c30112315390cd6f69ba8ca3478702a8fc207b913c68dc14d0155c2f7d0b3e0ce2150f3aae1d320bbba00e2f1f38f474c0f55f74404f35be5f0a71fd7c7c44f795f26075d9ec999d42764543a977190799f6979fe7d474368ad567883eeb9e6e9400d408b0f764f1c2300c7829c5f2101c2c562475570a1215523c62a37e818fe9d5a2e08ac8fa05a609d5a39645bf54afcea5d48ac8d66d18ef7660898d915a8036e49eb241962a7a57b4d603d04eb0775997122725195db545eaf7140f6492a9390b1be5c8434f41c08086cc66631ec8023115ce7a4d0c079e7147e538c4fa6e0c9b703de6247af20ca6a80b959e0003724f379e8ca7e92df12a47639bc4486e6cc9a346f78cdce888baf42b1635edd85bd7c4bed89330990c68b2d9084e01ddc30c018e4867fb3c7140426383a482254d0405914f680557f1b06fda813a122f1fc56184f11d17812ab39e730f1bc8a4c940ca5f1ace5f10a404cacde17126d423093069b40e57a8a0dd0738815192a7481f8e05327302f97645841d40882c8e79e044a332996d0682a86cc99ab9412cc7f8b20fb164b45fb2268fd5cb4dd412765c82f1013cc702ee8504ca0b3a60b0a6d00130333333333333333333e3d5517f77b6ed63204b262927491931ca9ea1db29a594528a8433131f7e9136fc453aff6664bbc1a70641d60ba40bd40bc7a310661f39f7a9bef72084292e5574b78b0ec23c4aae6fab127b08c2e01e5ce4a4a8f9249f04c27852e81f1d7364439d8030c95a8ace7a618f3f98c4cba7d4495a5aa209dfc0510344fd60123fc97f929e928430d5a30fc6d29e372157545f0af1c15841ffbad274cb96f81e0ca2c40c69574147eb570f464f3d5f9f5fe5c1b8319f92a7546209a5d245ebd0d1e98107f3ecddce9da4545b1089940493c71dbcf0f755d2b4aab3465d3c042e0be16107c37b12f3e4511e4e5dcd80471d4eda3ae918cb99f741b2d02478d0c19c3ceb07d59fdf8bea6dc1630ee6308d33d7d03ce460d0934aea679558f4aa0a1e713088ddd6dcff7d87d57030ae95aa249dd58bd4d31bccda5f7263b33c2e86e506b39ab8dae1cece9352b9511ce0d106f35a9774254d08d960f2144fa1266edc45c76a081e6b3029992b51ac32cc4c2e3ff05083f9a49d731b396ff397523ef04883394e0725c5b653327ff7408349892ed97b62ea9ae90c06d557bd1e6489216a3783f13c84bb55d96530b6879c0e795a4d674606532531bfe4f1923198bf54da0b2ab7623025f935e524bd6451438716583a76e428834718ccd6dd325245ee010673af9509d3fbd6f0f882d162aea58cad18267a5e30957c7ebc1c26a85cdba30be65c4ac5ed6fbdda2f2e9855bf4ad26d929bd0291e5bf03c2d284b32e33bc969c10d2fb952be51c2ea9c85829caae54ab924994d5be0818574b4e4325af2673d6d1501aec4e30aa63513faa18336f9a924a180150c97fc64e5490d046424071e55308d7f96fd934d38d97d2a183cd909d975592e2ce53105935cd6893451263b6b225b23387284ece810f4bf03c78db2f6908229be25311faab655117844c12062ffb9f67fba9a8a6c19073ca0604e5194204eceb92a49ca51c304234f30cfe67caee6e5f13511d90a31c17f8e526b1af07082a9b6c3efdd095d17a3ea824713cc9f5255eeec749d1f23153c98608c1d51d2ced3c4cf190d2d2240e3a6e0b104538ea5b258a54394dc7912740540408a41c1430906254ee8d0f15b7239ea9104734e66a154ca31a653e68104e37b79f48d3d259995886ca569ed50c19f073c8e601cb1ffa7a36c97a5e86104a3c511d272878f9795f32882f9eb42eda3dd9edc4841e718a94a22986c2ebf8a87cd630826d529ec08f9a6e3210483124c4aeed9396a5e4ac78e1be682c09b90b61ff40082a95aad43f7d4777452644b07aa1b1e3f308f9b6e097df2598c56640bd9a8219245161588008d629df0f081b1329496b23cb1a5a3625b78f4c020a684a9990e4ba1733c3099a97ebaf9e9d0262db23582c3c6d9dae1b103932897e4601df4ce73904de0a103c307ad694a5e8f6dff92f7c88141e97439093f2a97646722010f1c98b67225a9b684d09fb22d81c70dcc5fda6ed28ba905b544b67e6421e06103d358e5b3a027cd9674720cf0a8812977fcc4bcfc3ac1cf226d0b79d0c02485ce10f35339a83f5235f23576d4b852e3310363c7ddd67b8b6bc99681d15b4ecf7e2c495b1c03937a1c939ded5fe54b1e3030c713645c7ad32bccdf29e960e5311f94ef0a9332396793b6e40e15bf1506778b5b21ef0459c1678541665a5c4a7242c7cbafc2e419c2bf52f6d8f3235598eebde6ab72456f08a5c2e0a27370db1915a6b9b1af2dd5e9c3784e61ce9327c78d12d66a1d5398e72475fb6e36b7b297c214cd4ae5a54e0a939930fd112ae4aba44761de1c53d9e6d1d4552d0a53124b3e0fa52c2ea97428ccd9fdd13b790edb96068541ddfacd29a1469e3af98449cd4c982bc1f6c24d3c615ccd1e3919279d30a75a8eeba454d0954a386110263f6757df271ede84d90413bd55ab5ff2843561b620afdbe4c8993049b1c395b55a86922f26cce779aa449196e2e77b89cd4ee9f472bd254c824753410535ad24d74a98ef3dbbc998b4efa252c2b45d52ad935051533209f3d7c80cf961742cd99484e14b2cf7cbada2ac1909935c1d4d6e934e8e95206136d1ebf5498b8f30d686dd5c10755f2d3ac294753ca5246c84b174eccb259ac9df8a8c30e505efd0b9458f9b1661b22f2f69725276e52ac2dc9ff45952a9ea2b4c84494e8aad26e9d179af438441edc6497f2a84b8dd0e61347dbfda7a4a182f19c27429a9594e26c593c385309dd8ddd025c56d4f08f395680dc2207409ff972c2508939c83be93f65ef2eb81308b9e16a1f57dbd4f0061525af1ae927cea877f30e85c259c9b58b3dcf961e4451f7817b32c63d1242b7333eb051fcc1d3b42b589cc5e5606f0620fe6389582a7ec6e58ce700c2ff460364129a59b954464cb51c848971a418001f9c28b3c98d3a52915d3597cc4e76fe0287bc00b3c982e74d07aff2b59596df1043c1042801777306851e27336f1f671cf2d7e8703404074e840c0022e400301366cf416235278610783cce7a452162d5d268774a163077f173ab4b800b251838b2d5ed4c1a422f49a1ca323b285ea7660c07c488e91061810901d2a782c2fe8600c51164d3dd59c82be400214f0357468a1c62fe660d215e46fed99ee5fb8d0e0851c0c4ab493d3a758923ae1813c09d0e398c18b389884e97cfe5c4d841770309aca1ba783929bfdfd0d06edfbb03faf3efba63cc20b37984b09aabae48457db60da9362e62d89ab14a11d35466aa020a1a105036a8cd4d04048080808080808c8231090104ec40b36184f5b896559b458525a6b309e59c7932669d6ffbf3f78a106b3694b727dc992c85659889d255ea4c17c6b7b9238972e3d98886c65ed0001010119c9228b2eba90c0c8c8eb4028032020106840bf0808c8a9a11ab0711e8180980016f1020dc69254da9ebb9b389e16d90a793e83f14afcef3a49647f908d90335581010129c20b3318b5c48eebd8133bcea3a105034040464c80038748190c27efdab7bb850cc613d444bdee4ae2e9720cc61e1bff24c8ba123c68b7062fc4603241695ff6f9b8f9a13018623dc699ba7d3542aa160ce6b8a272b8137bd4858798a51b19000161c28b2f98c74cfea472e91d957391b5e1cdc50b2f98fa564c56df570551c88e27c1d60d5e74c1a4f71db44b50f24b5e47051884175c307a90b17927cbc54fa2175b30ba95f4a692b40a122fb4605e07eff4d20e2fb260ee6ed3f1542d08480afa02c55e60c1647f9f25feed6831f906096a8c680c5e5cc19cf624b19368a22eb88c2f786105830e2a97bf5436b3e0dbb0d1858e1d59a37568b13b785105f3fcf82793f9326282c10b2a98cf4b5ebffbf21930010f84ace0c5144cdaf3d8fbc5111f74ae38072fa46092f4c925e8d03a723f08c808ebe04514f2bb4a5d2d67c90411f7e00514f437c95f74b85e41400af3e0c5134c56398fb60a1f6d2cfac20906a53d496fbad2b123c78d174db84c10676287bb248e174cb0729638f272caa5360bad49bc58c2617784f56f4a487dbed28e5be67891042bade85c41874813aa2d78071712b8b180bcc00b24984fd79ce8a1a4bcd5de11ccf2c14599a8b6e33cd2f12f8c50795bb4924a2a9551cfac925bae54b02044edc08b2298b34e63bb4ad027ac4a048388e97c6deaa4b86e19e1c510cc3296f62e5c7fac285f08c1142bc692247c96b03b8360acac203a8931f31ce44030270b3a07e5e9dea45b49486d0de1c50f4cef275654174f52074140ce0b1f1857d4af49e7d12d74e0483a3e47311a5a3020f54720ef7734096aa0a06ff08b1e984b94509e3fdf5ffd14d911c480162378c103e3894936172db58cfd221ba263478e52aff96207264905f549ae2416fc04e9e08f962debfa3930097f76ef26af98c73d92a35f845fe0c04cf5b2f69265c3cd6256c588a52ed78a666991ad5f07bcb881e15430fd180b4a3449da0686ad0b172abaa506a6aa2c963b75b2cef9696092f62ac44916d74f49b3783103b39ca5ab5f27b11cba04bc90813146a8cab5d51b25660678110383c5a7b85b9220b489ea0b1898fcf3428f0813747c45646b24c404fd3a1c4b00af30de85d77fd3bd2bccb6e5b9a309791efed40ad3775acae9a4cfceaab3c218d27c3e54f0a474fc5761b04ed2d35d94f2a4b2aa304559d7ec92a6d24f4e2acca3268c501e4aa4e6051566ab1e79427d127e7c3f8549da13ca84de1da5d7328549d08cf7afb14b619243e8fdfb133dcd2fa4309fe451f46cf6ed04935198cd7455d2594e2559724461f6a0a5f2fa3df79b6c280caa828d96d333c1dc0785c162567e5162858a6e3f61cee56f41099d4e1ed9896c05cba7bd325184940ec617ef399da4924eb8750e06bb6c175f62270793a42c94cee926cf99e2603859ce2c3c587d10191c4c2e6321c428293a7614066c922049428c3798b492a0d74efeacd16137987a2fe9b29394e4fbb936984499f97c69990dbb946a400c36988392e1992523334ed01a4c324ed2776616afc331d460cad695cc6cff938817230da61f9793eaea72430c346c399f381f1ded3b225bc91e629ca1702a9c999286b01e6298c1b0ed397df4bc3569ba186530fb8ab67a524faa531d3b72c4208339c9412879356ec5bb8c3106d39d242841c751510ce66bf558fac26d05d36fd10cd862a4c616386284c12c27cacc676b58fe706a2006180cb2a47c1fb48e7cbfb05566f205f3ea9714aee45cea44f482397deb8feb7f764e97c85a8c2e98e4e7751b59ca1cbdc59a0b2431b860f29b5f135b27e851bdc8968eaf8136626cc154f6258d12b9dd36a916cc564aee841ab113f666c1e0a72cc99117fd4f562a2d0d31b0a06ebf7bccaecef110e30a759abce6d1d0820159c4b082c1459e54ea2354c14f00042409a9185528108d41055390df3811b70aa5be8123a4140576d44840594ec1705f71ae2f9d8f2975095a0aa67bd9aba86f144cd157eccd46fbca6c3ba0601a4b3ff9e413fa529244a42210e309e62e616209f2847adb39469801319c60524f7e76eda5929a8bc856173b726cf1a9058d2c68488086161138d3f328d8514301319a604e2728ab901a276ede11e7184c50bc4afba5ca5c176309e6943d9434c272578eb5c8d61621366c74882766c30602c610430946bf282a9fce49b668fa24187d3c7734398f9d381e2498b344bded8edb6239d7c5430004a48b37c1114c15b44e0e79417da66804839d167d9e4bde5b7e8a600a7996dc9449572b310331886078b14a165e7252cb290fc1acb797bfc57454184f08261367a9b3de7752a3b35ac40882e9b5ed24f190fa25be0582413d05b50baa92a02b6595c57e20c60fcc49984fb516e4fa89d60726e54996da7bf550f10bc4e881613c679f92b385fdb8c90373b213bfd2b5690746b9abf8f63b72f924b1400c1d988432e19672122d16462b553930e9307f72988ebedea3d7b12304048471604e9e745b4f0efb51aec856483eaa818285428c1b98634db6a85561840a15a6400c1b18c4566f3da85607758b6c714921460d4cf2453f676bfc528ec5a081c1534557afa45713883103935822ac94681f5c6704010101c924860ccc9f7636eba4a9ba5b6c1462c4c024a9dc5c49ad3a291f660102020292638b911a5ba0c08080dcc071fa1d04c409316060fe9cf352dc3d794629bd82b74f92853841ef0ae3a8245e52907e2bcc265a4eab5d940fa6c30a63a8f4ea134da51c2d5f85a9ad4d8c1357e4a78aabc294544ef93e8ad833493815e6706971e94f54984ba56c7e26f55bc8f114a6ec1fd384c966822ccf14460f221f74c5443664a5300966b22c98a99cac2f5298b7046d42f9be881e15ad5198e3495ba64ca9b8e78ac26c9da6e2925c9c687f284ce2281972556a7bdfd1f13b1c503e80010ac3059bf728f7b974b54f18c457f9c5895ea2fd3a7258a9274cb2f4e4d2f5e1e4fc5027ccb9efa4910fa694b01227c0e08451ff575bce749f38477484ac60644403bfa38b049c470108c80a4646404086006313067d9db3fbedb7dc93268cede9c4df11dffa2eca8431f5b4d45e2ff74d071386bd988f639772e80b2f610a27e689283d9e1f5bc270c22c49999eaf84f9849226a7f0174575ce3b8041894a7c989bf8f94a3d69120671514cbab77ed7db2561d271e19460aa47e2dd4e264a9b94ea0309538ab6ceaab05faff323cca7931a2505a5d71faf23cce9d205cb53e722356d042e279c0afeeaed631560300213334e0a17dcc2ada4f052e2dc850fba8308b3006311a6f824484fe215459845c6e3283913efac26c2f8b79d32449a1061125953792facba333f8441254ffd32b96408931851f252742d65498530761aa56e2c9c7f3a2184c12c69f12e51f21b4283305e529eb6db37beae204cf272d02b17ed3ee73410a6d45e3bfacf0684c1c463cfad8e7552b23f98d62b875ed3e522bde407c32771ff8255a90f061d94ee18dfdf7725cd0793dc9edc52cd7cf478da83e9acea24616245b3e8eac1a4e428312a8658fc99793056dbc9b37b934b951e0f266b3be9e3b4531294ec1d8c2a67daf44c901d4cd144dcc7a90c461d4c92301399ff9c3b298241074d794e82e660505d1f75c9b2082b530e262567cb3a3ad3c792af034b8b14f405ca52d03a2200230ee6b8eaa2838950322784010753f6b63bcff922b2d502186f308b4e72ac9e75aaf35b648b0530dc60ceeea0db7e72bce0c9512305d8058c3698f4cb9524a32431b52445b652f037beae0830d8601833a93bb9dc7a8e266c6b302569ce94d8be79222705020c3598bd4796feb8ed6a294a83418c98a51ded4fa2898b6ca9e0d18d1a6830e78b7a0e722b5592e41bbfe34693207f00e30ca63a3531e653921f791d6630f58ff0ef102536d2341ec02883c9ee84a864996d29ef1f2183d173a5ece74a2959594c0730c66038e993e8ba70d29d4a931cc0108349af49b361188c9dcdc692cf08f98fc160924c5894d5103a7af80b26d1d7d6cf17fbb334e30086174c727e9c9df68b0b1c5dc073cec29ab08b37c10db5010c2e98334e5f3e8e1eed26b605539cac2528f159266a076900430b462b398c97d46afdb247b26034e17f37cd53a88a05a3ea85add8eed1eb84225b5730957cafd03c53f35ddd0c6058c1a0447fbb6c9762ba9c5530a93fa52fb47bf2124e5430e8d01d35ab949cec9dc900c614cc492dfe4ed6cabf97822105f3b69f2c9fa4f99c726044c1e895ff72a591630c6040c1a0827c899e5ae7f32d9e8007425c00e309664ba7e4fc8529ad3e7182c9749414841a954b1851646b8bdf14c06882b9c3b24ec816ebec1a130cea4e644cc8a9f94ec35882f12a5407f91e5642b2e54b6b13b7934a850023092625a7be2d497ecb5f4a15c0408239c95874179d111847e0942979652a4941ee5a244001308c60fcb832a197627e9eb408c6bd3d4fa28a10352182399bcc934cd0303909e510cc1dc2a46cf89c8e3b1282d12fce748d7cae7c104c7254e7bc97b2820ced231c1328060453b99def4971b5543b2aa8917e60fca026b745aec6b4f78131aea415b5cefe615791adcc02460fcc639e521294eb228b802c4446ba016c397a8b4b26e0819007c0e0812957c7867888cb97cf1d1845f996b0d4d3417e4807c60a7972deac5d64cb068e903f6d23c7ebd80ac0c881f93af589f929c551523a24818103b38acaa1827bd6c97a11d9d28163470d0ac0b80116773396838aa56bb74172b3baf7c424d92411d97a1835308af885cee14c84ba1c111834487eea25f995f3db33782f49b29bcefbf90a860c0c26cde25a67510c4cf66a27ec3bf54e3a99043060603c7db7172ac367fc57984a5e90b7222f8b36db15c62c417d9db81f5c7e6d85399ef8f7266a299d95c40a9324ea04a1a237426951b10978acc2d4164dfa74265d9b3cc2712355618a2e164bdc750f736f2a8cfe61f2fd459dbc13448579c4da252989fddd7f0ab325f318e2839a96509bc294a3bbfb4df6091bb114e6786572eb6757de7da430657ec5bf7826e9349a0e1c21d8008f5198d209bb6dab52d943bb05788862539653d0b11f332e86c2b4a794eea424e91736c1ff48c88d17d9116220f00085e935b6c35ea7144c6c29681d5718f0f8441f654bd9c77bbb553d61526776ea3addcdb7490afe86d5053c3a7118f9e13c636b4eed1e9c30951cc246895aa134c7101d384252d03ab23661f0244992f8fd8f51224d18644c4fa5f8d12313e6ca51a52b8e12b6c38c0983eaa9c95f142ff9e49730e7f3cff9ec4b4b98f29c5bcabf9f7197e251095310579d357527971852c278a952cc0ebd35734fc25c52d787ffcc152f5b1246f924df958fceb73347c2bc55e2a464a5f563d332f58084c1b5bdfdc66ac4e2c923123acc49dd491276843927a92c09f14c319537c2a897f2bf8a52594146982439a52ff772592e21912de44518cd4c8c7cd151ecc2d63b6c3ccae2a108f356c6595ee8bf7893041e893049a1ff494e920411a63ff5f868e27b877988427d5a588ccfbb87210c52ade37d38fd6e2f68c6aec7aafedce81d235918906106535cbe7852c9b13218fee6d2cb4953d575daf01a870bf43a360632c8601213357d64a95031541b903106f3dbfa250f1e342d8f74a4d848008a20430ca6a8efa3e3d9af593a2349184ceee944b32e75c78d1a5b80c1945f9f93b8fc51971b3ab8f0e43420e30b87ab3373bb6041373200020202622136726c51e32a005d90e10593d092e525a7f4f92439912da4838b911b9f95a48c2e182d97d8dcd23ee451600307f371c120e3b1bcea644ff29d26c8d882c92bca872c1de34f540b468f2317d79ee25bf0b360d670d36e96e4bd5d1325c8c082f124498aec38d6150cd24cbd091fba15cc59927f560dd1e7d66120c8a882499574177f9d258d3ca9602ef1ac3bad3cc7bcee0932a6604aebce27542cd48d880932a460fee0ef6925eff334818edee275a8026444c1e4be72796352bc493e076440c19c31e23eac5b4ad23e0ac87882f9e4d4d0156612c87082d9d45afe4a099ed6e4213890ae4046130cfb6727bae52fb235822a90c10453eb28c13e4b4eaa57444b00810c25982f73bb5ed4a249ea11d93214c84882c94082b14eacbf92e4130e546c878c23bc762af6475156a32e19463065c98d6b8cda11eddf78147c11ccb7e55ae2dcea85eb6cc82082f17d4699a83e1ddb2955021943902104e39989dacaadf5ebd881011d9fc5dbe86350901104c328bff10fba6a54674e900104933a51f624b14b54be8a8ddeba828c1f183cc97226e5e9d7ba101264f8202955b830277bc778566ba8ff9fcfeb49c73e5634b460808e24233b7e64e44a460fcc9f22e7b2d58550768eb01164f0c09cbd1e9ef2c77686c90e4cbbe3715961416d790e980008c8c8fb163540404e888d1c5bd490a103936a668f16a13fc5908c1c985cac8352f94fc67e2a08327060d239755da84f22966e1a59d0281fc8b88141f72849f29d0bfadbdbc0e8c183d279df82ce5b9b41460dcca7967b977f72a77d193430cb674bb9fa15d4301a5a302059206306e692a4ffceaf647725e901326460b8a0fc4a181b69fae207071931309e6cba4f9ecaefee493bc88081592d99cfa7b4ac167421c57ef87885f14c961223545ce5d321556af870854943952821676c4c5423050f1fad30e88e2abe792ac4a5e347ae7cb0c2dc51c7bb924a2a7a9cab30b589b7ffa4a32a4cc273ee123d3e884e62a930e65d291dd7277552a90f5418df4bfeda123ae5754f613ea97229d1bd3f2c765318fccf8411a792f8e4251fa530d5f99fea95daaa72e48314c6d15df9d2b62232d20da091859e1acb858f51184e887d9b3479cc73cdf2210a933e299a0923673b279728e12314e62c0fca727dc74dd4b2071fa03088fa5688c9bf20eb4f98df45492a59ea24e8f87d78c27ca5e2b2256fe0e0ea84e93d946e5e4945b658973961d893453be9ecbf57654143c70f3e3661b21839d729ef23c287260c97c45151a1d29d34a34c983f8712c6043f29f58c09538eab523a9c34d797e41226dd49559a9827c70f960f4b183ea5dea54a53258c9756ced3040b76264409e3a7f81dc4840ea593ce24ccd1725c89595812e6f92af9f89d4a49f9130993d8e9cfee95f4e909efe022c70724cc497e924f103ae711a651e9191a6671553ac294726e7bd829cfb235c224273ba6495732c2a89757495f8c5dc626848f45c4f8508429d49d7a4e298ace0927c26c39b6c8a8d50e7eb288306b871fbf24bd68d1498730db89a629f1938a8f27431854dfac4f30c9e413b4429892a083e978f6e1e7a40861b031394b092dfaf9e48330a665c975a2ea3c3e2e08c3c5b9f0a056af927807c2741643f7cec7eb5c3f204ca1afd77755dfa42ef983c99210273e22e547773f98e2ceb283d45fcb97fb60ea10a553ffaa7c30a552528a96bfb28452edc120dca4d89b27695e89e9c124479b1342c79d38699407739c24eac78bbc55091ecc97c6ac65d7b28db2ee609e8b21c64f4951c45bec60d2bd26dfbfba9a18aa24061f75682bc77293b55ed48b7450f7c7adbba44e2abc39a4f6a1e474395b5b8a850f3998347353bd47d3af0413177cc4c11c949cab2b429ccef4e160ceff9bfa1d4f8cfcbcc1f45947b8d5495a4ded067316f793e7d96d83296bcb5e121359a29004071f6c308aac336172ba700de634ee6e2a5cbc3c98225b6a308513d1a2b52a98c916971b7ca4c1683a4923bb628b554af2c4f4512a675eb44e41a5efd829fb691133123ecc600cab201aab294a7e36838f3228b237174e07b1ae113ec89094e57277bc9a64973118d654dc791d25b4e946db388f706401830f31242df8088359748a13ebb1d2a4df4a27e081100f7c80c12466f449214ab9b88bbe6036396eb4d495de51d25e309af5e8be93424d086d174c62f57abea067b71917ccf9e23b95cb899654690bc61a4fb2099d9d93b01f2d98749c24ad841f6ded360ba652e6f95e4bd00abb62c1d45726c6de57e465f1e30ac65272a5b85ab59fe398810f2b184ba4fc97a024a14689818f2adc0715ee630a26f96b9167634168d33fa460838f2898c4f7b711ba4e7ef90105538eb5a6e7a62bafe5225b14f87882e1422b74f4582c5d8222f0e10493d649692536e724fbb40af0d104d37a5293fcd2291dc3cb82861d8e1d39bad071b208f9d04fc84992670447034040768ce010010139239ec50a1f4b30296dba2a78fef86d391f4a30a8c921c63494d2792a63c047124cfa55f4679e891e44ff8104d3798e5b94b5123a8cfc36fc2f60a4f83882d1bfbd747235f183ec886c8564163e8c60f0d1a594dcd145b6eeaef05104a3a96cdee1f7513ee777a40e21824994fe1f55f2ffce5a70202e6c9c90640a1f433055f66da7f2913fb24464cb98f0210473a5cbeb79da5d4e21654bf8088229ec4da9c797b82b5352870f2098da534553fb37724594941c3e7e60901db34fd2a5b4a405e9f0e1039364e2999b874f0fcca94ca8d469f76a929a07a611e267d79f84f2208cc3c70ed2aded9c1d46a40373495629bb7d7e616e45c3470ecce9c362667b7c667dcef08103738a9b4a4b72d672ad7cdcc02cba72b99db0b85092840f1b18b3e7e4cb71f5eb1fe16247ef18e13e7cd4c07439a895147b71c26c3b9e012020b6870f1a984a1a391df5f23e4aa748a003015d3c0446ba01665545c78b8cf44de263064693cbed2ae6cc3f5ee526e081900014e24306e63ee5d145b5801b14e024101f3130a5a44d9e555e8b76023728a0870f1818cdc48a7beba45798f4897e7b08614a8c355d61ce975455f2521bba6e8c56984ef0983d262f2bef6385c95312c6948a3a1b6bf9428c559852b64b722c9b2c722c5685c1b3f3a85872f126755e88910a531e795955676453b4a83065f3fad81d2ea284f414a692be63aa8e3e39fb67c3466f2186290c7bb24ae727a14ca46764c78dde31720347da086294c2245856f8cb23a36f656d2006294ca96592e8a0642b73c68103ad8dc2f4a3b4dd3cf5e8cbb1101c886510431426a90479a62a4743726cc1856f85c2a0da26cf4ea97839461c36bae81c2167314061f6d8a3cd4b961da173418c4f182eae59c9b545938d188be109b6d72a89107e8277e34370202e1a5a30409910a31386f3142d3b499fce5720023410118313a696d1aaef4965cfc122438c4d98bbc417751e4d183b6cfb68e5f826599f09f395cfe528a9175b4498308815cdfd535991a54b98e3499674d5b74c6889254c4a4eba686aca3feb4a18fd2ef4b75c4e37274609935439687c9a7e9dba882c56173b726c616e5080461634d08d1a10a091050d1a59d038448c4918f5d3292dbf74df9e2409a3b8a537f5a78f8449d091dd623afca3278184d947645812f45f9247fc087312da2aa75463f5a13ac25855fde9c5d5fe64d8884a7c1327e8fbc588d4b123478c4518d48a9aa4d23f979ca48a3056f9a75659cf79528a08311261b0d3612b5be599b64dd03b10614affb29d73ee2c41e8288418873007b1e2a2dbf32971d48630c59e0f3aa90b4a904b2a8441b6497dfa96736f4b085350c2344cf2ce204c495e4952af73aeae5110e6d17bdf6fb97218ff026136c9c4f0789f0461e1e5220720ccf55a17cbdaf273eeff60924746484bc24796b8fbc1944d126b5f0b91edb60fa6adfbf7a8b1233c553e986d562ec5f47c299b700fe6a4a35bccff94b2af1684187a38ec5ae7a994a33c98f42931e1293b78307c90e21554a5744aee3b18f74da95479944c134cec608a3e5a2f4dcb75307d140362c0020c061315622b1ecd64021e08312cbe60f494a2a87d49f2e79a78c124bf4a32f92e9bea1c7b018b2e9872eb49eaf7d47554190b2e54af956b64e7bf75f0168c71e27b7aceaff5d173010b2d98664dd05325ba5b743e392cb2600a32a6737a7c2df9b28005160ac404585cc120af7ef27e16191656309e24c72efd51aa82314c2dbbd97f97b212154cab1d42ea85e5ca0d4dc174352767a955bd9277299847abb8e9e55c7bc21e05d387f270e956e28ee85030e5bd1326ed5a78befb09c68ccbaea0a4122718afcd5236194286097213cc2ac2be4689a104532f13cc41a96eb15cba72bd2ec11cde6172d59bcb9da904f3e74893de948eba8c4930c9b949aaced2724d8784c6e72d7a169d23184ca79c56b9ccbb6b04ce042927da8b5604938db61ab39a08c618d1d411595d2d1620603104833059e9a194bafe47082649c9e91d9495ce79394130697d577c93f2778e0d088617bd5cc2b7dac22a58fcc0287f2abfd4769950a30fcca224a5b26ce892265f0f3ee1a45cb0e041ade63173daa6e2b184cb4f673aa7dc395e478e652ba658ecc0a0be247179979298ca7934052c7460ae9133c2c3a7e029de5d788821018b1c98648c123ce7e8b93f371e6081039364e93e8f0e953d4305b1b881392939be5efacc124ade06c6d259f3b2e74fbdefd4c054c1bfe474b2e3deb43430099dd5a39f927641c51918ff7499499692ecf7b9901b29648b914e4148088e1d97002c6460ac921f5e7df7725f87a07e1d5b89768cac800b1d3a010f842c163130c5ac6b7cce6e42b4090b189893e84a9292ebe42d49ff0ae307152e7ef4fcd2af44b616dde062862b8cf21fc5f58359acf85b61f2d429ca294994aa2c628559f4250fa3c4fdc7cdab30873a399eb6b4f31f5d55984ccad222e24e856167e6b6564765374185416e4831716245cbee294c57aa34fc2c6a0aeee493d93e5b71811bc819a5309b24dedfe5951486abe8bf6b25380a93541ecdbd3fee374651983f98c9765f4aba2b0c85c1cbd4a72df740614e72b811a7749af37cc23c7b6943c95282efef09936c51743e95b74e18443be5b0aafc3925c6099370b3a7a46b1306ff7497823a7943b7a609c39ae53bd139f49564c214bbbcec4b54c925294c18e47f1eebad3b39f59295a325f09613f040c801665cc21c7249fc24e9091d16ce008d0a446086251cd3f524d4226b332a91ee971425545a2e41396650c228b67f173d9a8ab2fe8c499824c1f4e71cfae7bb3fe983199230fac905f1ea268e89ca3a98118913cc804449dc3f49ca279d9859555555559526de8c47983e4b7ef4ce3928132de9468d1cf973108023dd70c008ae2a6638c2d81674e6745e7c6d4f646fe038ab6209af269e5525bc9a785a8a198d3077bc1b2db5bbedbcd001331861ce9f24ff11624bc87b1146d1daf17295ae6cb9a408832879cd7249fa44659f08d3bd87cbe3199a810883ae14ddfe4699a976330e611273ba3d7b92762f5e330c61b48dd5d392a47c5ffa5236a3109f12eade6dbdebf4225b6b033960f9308310c6b9b4af214296f29316660cc224d8bc49c2c4b5a494b81d6608c21c4e8a9fed63a174ec2f0d330261da11b92befd3cc300310465d3ba1c434f3d42e41c38c3f98e3855d68933bb2257e30f897c73ee11ee49cdb07c3a9f30eed51a994766598c10793d58bb7093ace2941b907838a629ff34efabad102800b33f46034f72495f03cef5c16912d1bc18c3c98c49b5c6e92b6aefc1e10ccc083a9554baf4942edfbcb225b5bbc8df7c48c3b185c4e4e6da297d5721d14e81dad800b4840022020af638b2d4040b2d0b1c5169b986107e3e7671b93cb2bcf8bea6038393e72969f410773d225859059e22515d98c3998d4848bc834cf0c39ac2744e5747d1c0783a9a9ebe4e7de962c33e0601ecb27432c3fedab378ccc70834974f8f7763339a8181a51414b8046165d3c046ef02566b4c16cb153ce4cd2b3c1e0a5a4eae04927211bca25cc5883e9845495f5bdf2934b9430430d061d6a5fd4a4b972f5b330230da651be25753af15a61061a8ca653526babfc194cd9d57349922e4127298a8519663075e8c996a3535a97ca6092224a49e1e5a2763f194cda99bbfea6cb3118fdde1ce1028590e0460d369f210683aaae5689e2398a1685cc088339a916a5cf3bceb97a1a98010673dcc7527b4a9628bd8ea4025085195f30a99c1816636be1f10c6678c164b27a8cce69db7f77a4860a2a0833ba6052e2679da8be5f7a5b648b047da325a08098c10573c9f55825a9935adc44b61215ccd8824927f94b26d516d912395ce0d8118203710a6668c114f344f4b309bbb8758d2db260d42acf251c685130030bc691324257c84d2b655ec19c72f292c5e2a5970633ac60122bebabaa93bc505a91ad2a187e7b3daf4449640b0933a860123c777cb3d47f3e15d94a6630630a066dd1d11b1a27f643912d299824cfba923963266c29b2c54572011090b7e18d021d3f624a981105d39d4e795279ac4e0205c37f524a79884c642b0407ca17cc788249ba9825962ecbb9bca81f590b6638c138e64994b7a4e06f34c1d2337e2db25b94b806d224cc6082c1f724d992d2976b7685e040c582194b3045d38e6996b4c5b5a812cc2343bb9750fd08339260d81ed9d965e354ae92116620c118279bb417fd3f5ff22398b7d49d1cdc3b7809a2acc20c2398827a4a79d44b520a338a601c1b25e629b11d57372298046dfbbc738be9155261c6104cd298d2f94e059db35308a6b77cbe2645b7a55383608a1b0b4fa6cc2b8910082651f2abbb82bbcafd03834e4f7da14ff6206ce403e3998a4d0b174f5292700f0cbaea04b9a0393a89151e98bc2b694f7227a14fbf1d183bdd62a9ec9d0e4c27892ae57ba9aa949c03a3888a25c73d397adfe2c0d81d777da3c4b71df506a63c174fb44afdbaa56203e399248d32416f35307bbe20a7812925ad54d964df898b333056897dc9f4550ceda60c0c5e5af1e34e38f11a8a4196d4979eca8c67c0c0144f9770418e36493cd15798f3ced75e922bae3087ffcc9b9a32997b2b4cf1927c6eca46e8cf41ac3097a4e4a0276a9ff24f5a8541ccc457b4e8aa304992b07f393cec840f4a8541f8e951f3a07b497851611e2917bf7392a9b7f8290cdb79da42746ebf62a6305c52d162acc94b6132b976cb30991426dd18d10b72bd23d751984c8d5ebc3b715118f53d7cb488afd19e50185e4dc7ab582a7b1032501846eeeb42cabbf7453f61d892177727ce092ba1270c96f38d90bf65270c42a8f4bfca27e8a830270ceb315f4e5093bf27be0993a5f69cef9fd6a4e8d18461b7547498b60eaf67264c4a89227321464c184375cc69873cb59a5fc2a4f3ac5d3ccda4e9a825ccdda36eff9696953b953009fbb6ed5f7f265e4a0993a4569de4333e8ff427614afa3ec59324e8f8d324612aad59234cce22613249c9b7863ecf7e22244c52bcd7f9f7d0234cb915e27b54e908a38e92e46b3fd1f194b011a624d55ce5f86df97f18614ef93ce3a4956497e2228c271e22732f77c5991561fcccd134414cae43271126d9822979a9b428571b11e6e09e255d2b79ec943a84694d3e15d5a93784b9b3b37f90265e0893ce5f1acf26995ced10c2249c8efe572e952d3808739554df49e4b7e5798230bca791a661fab6741b0853e8933633379f732a803065c54b523b47ff609243e5a90b9f73e78ef9c19c469dd44b59ec83714e123fc856ae7d96df20830f061f134d5c45ac99500989828c3d984a327932536cbfad0b810c3d18ceae54d0724aee71b5909107f38f888b0917be4f2e2b1032f0603a0b4f75a794071977309f9c5be9bdbad7945462077310f2a64ac5a498e1d7c158d23f9ba4372b96f869644107197430f8f8e7b85692689fe2bd38c8988339ffae27df528dd8a8d13b5e01091b64c8c124977c4188b53bf7a443230b2d224003ed0c32e2604a622825ac8e492ac5995e900107c37a7a3c8f61d9fa94686441e3b820e30de6f752a7629c9efcefa8e18f4272bc8e1cc50d78c9a74e30711bcca215dd4aaee877d4a8b2e14c05196c307e4a2aad274b155534811cbdc50d94b1067377feab7b2d25491adeb90c3598f49949d94dd9050f4f1accb9c49da8a47b3be54683c1e39c672bfdce60509d3179078e84a8449006435120120682a16014c43030bddc012313080020302a0e87a2e168a209d40f148004583c344e3a281a241e148d0622c150180c8641a160200c08840161200ca28012c66818d909d51e7fc0e41c10e0d8fdb303284b3103be95a566e291ba0154e82c8566a92e7bce83e4a2668c7c6b3b8a7f8d5ee54af4ed6d05d80ea5e8a4b3fc0a276a2e93aa047ee45ae89857b1bc44b3c0b4fb881bca628984433754b6d0b1ac229eb2f9dbe1124d445b746977d7bbbad7f073310603f4ef1ee56433d31667b8a018243ee3011750378f235645f1a7f25be5d7e567e4dbe3e77dfc0706eec98fc8fe547e6bfcfafd8c7d7bf979fb570a4986baa00a483ee002b67dfed1cdff05137409ac10e0825ab27ddacbd042ee822fb433629c4d52fe4d39c28effd05c3b3946d1188192971a35e91a3336764dacfb61cddb0283fa847fea9b8cd3d945b48b41e0b9df4cb9afd588aec615f486c63f8c88f8b32422b56a54e2eb7f9773eadfa54e90b2da95d3bed261d82ef4bbce31bd1ddc05ea4c6beb63810e5f9524243399cd1265ec502f4468f40eb729007ec7f9558ae3023d69a5a9086a1185e49a01460d9d0df91190ec4db7ff68d0543d8d0b614dcfda0153c087b43d04ee8d7fdc9d773fbf87b8941a9ca9b043a84e8856df6067927cd19bfe6cca783da15f0bf843a0501028c82ff3a1fed3c09cdd7c12918de32b74eab6d28d545fd7480c087e717f0c1b997da2fb5a60cf912b508249a57782f828b9a5e40e6acff785d911cefb9961f698859da46fe228cb9cef10afe74c6e1d47cd2710892a81029077d207c528956e00b98b1000c6a07111f66f9bd79cc9946e7a90d386d6666ad33c1194ffb5742017b37e954b979199a3c9a4b3cb0460d2e376ed5715a55e926cc22927c259551e1aac40048684cc251498c8aa03860c7372bd5fbc7ae33dae4a2b0f0301e13dfd0473ca7aa7a260f82b8230a95a9db2cfe363690b0c4478d139cbf7a90d6750a175afb013e94105ded2cf03344c61d9b59887e5ac57d3a8b2a2d45b472ddfc94cb58f52b1a03a1f9564a5d2607ae975b3f1ca77dd09e48f6dc03bc63e19b60722c6446cddb55e10ffd8f6abd685bb7fc28f3eba467ac3612fefaca0a68d11b9f89a49da49579b7993b14d2b8e5d2923ffec4305eebd4924264a9e5425cf66b3c1111eaab4f36639e3454b35f2260bac76f726dc1e1dbc31c9b8197438da46f1ad837352862e7bf2e87cfd7c5e18b52f4f9b11560adae566890c0ca17ee0a96389312dfecc3da404749c01983d9d01928bbcb56afb37452852a709745cb0ee793b9e78f283bc858c76f82fd393fc70bfd46d98f6c493bf3c11cee2ebbe528fb10c5c218203621e0951004464d403318ce66a5a0ecb630a6b615e97f71f7ac73734459e0efa2b7442eaa3e9b8582b81b386ced7cb2c5325f951794d5ea3cc1e0a2bd137128fb968e7c55a823738bd9ab9cd500a9b5a68f1793000b23eab5a27e788279c5623265e04cd53be6ee8f1fcf3113ad4795966e3c9313f13b18cf11b6de05f11cb0cd26a09316b9f3135e8a99eb751d68572e4fbd0950c37a7deabbb301219cc8052a71b1bcaa667ec92ff99bf280840991a5ae8d484169b78b190a6414663b1ab2ba950e2ed29a1feedd3bda50564b0a82258e237fcceb0ec1fc86cdb0d21bf7d470dbb3e4e873916d1283585e1a72af8f55ba5bccc0df8bebc704e855c2f8863e3870bd7d793f740bd9b413f83004ab626815cddabfd5b3fe55be381da8c8b599dc7638d843b60c51159f7ea8f78fd59e903897adc6625b227308c739d59e351c0bd3661e67c72f620183f05984faebbed63c3227487b8163470be012a10095e2b430e18a975f5c7250bd9acca6c86ecfcf2cbdab7461e7a7a8b17f739048c24cfc5cc78dfa92c5028ac510cb7ceacb28efb50bb30d8ac7dc871e18c0f734e6eb7953e6eb5edb52483780696d68a379190fc38ae9a49719e5875357d36e403884a0a0670ae5c1ef944520ce9a6b55a477cf90acdc2280ae29e7ded424111ed56daa8e7cb81766c09a36c108afe7ef759fee62b320613f4c176237a750f1b776d107c2b72617e83e33c2e918c8d5937022b8746f5e8b4f90ccc742e83a4e96f8ed4ad9c0b956125cec5249270714bb7e5245d59aeefd7ef062c0b2227c753ef774504d3fc63fb090a8172b73eee600da393c0b4a04e46eaecfd17ef17ee6bb3e4f4be1824e6793177a3a2f14d2fba58de94556ea5b5c3ba6b0858afa2a23c126ebe6656770b2287ef5aa9075c645cd7473f65678658f9a3e7680e84ffe20f3f7e1be079608c7847b123f82204ae94fa6310c6f3d4e64bae990b70244c6137ea05a5b1bceb538810380ce1855d8093c000c56da38b33ea2cbf9679bd7e3dd8a6554cb98c151e53561e8df7afc604c6b835ceae1f80836b3f841c381cfa6a547aa8fa89e7120878e449e1a1706945215e0f74ea5e486a7173541a484d0cc76c77b350b6ebcbfd69ed1876f63503c12288bef0538f00cf97a3506b3e4c82a4af44591e050896f19e11915b951a5163bec32a10b5389847c7017bc3ca391775b9b6d5c5aa57efb8dee6e2c855a873490f98488a3bb908cf5599abdc5cee0497b14add642a763da46c32cea6ba5d59e6a28b0b252ef470193d4b7050215b7c8b5cc0fe72e895bbba7885c22530415a2472301931171daec673d1c6859a70192d3db15419e74a5cb9e12663e7021bbba4cfe4675144eee28a17172e76b8ca015d0f9395a158cb2585ab305c29701941b674e9648143e6bb72e9e04299ab5eaeb771e111a445900a576280f017c5cb4530e83232993e5210996bc3f759e7c3980b1217505cad709dcf859babaab8e6e532ced6105f08545725335a3d4820d7dbeaeac52b0a57305cbe80ae448cc5a028d7e596cb487b179de2c6656477bcfa718c4aa5340cf8e6cc0047783091275976613dc98c870ee894dda1f0e833460f03bac6e0ffdbaea680de0ea9f4d81976e1f486ced8c670fea1ca8dc84631f92768d8d83bff0b1b7ebdd28c3c433fd4015304b595a55985fb6ee42b63cc2ef1314832410b4c61b93f4dc5ea7f072dedb947fb05decdd4f1174cf9837da4130e99648c49cb658bccdb11cac5934348b29a850a06dcf8d1063118d5966c8bffd9eb3367d8da0907dc7c18cde9d9a1a2a8782eb0f5d9a047099368d9fdc7435bac0d6b331d57e8ec65fabc190442c4ace9dbd0ea7a7db0656716119abb8b669d47cc1ae8c932e50ac0ab83f6e08964b24cb0702146cd18f7f3348d44827ccf9abae69ec0262cc9d6294cd26982013da8906268357cd9fcbb6c6454a1f1eb006a28440c6c9ee104d007d2ba10094fc353da1c11f8bd5a37991b030b68b523d4fc5edee6943bd05788829131798a6a238a5924831f99ee594b623b91954a6c1782ebb3cca0a88437e0218e7da795178f32ed2a06167102c4c7bc8dac2429513005ae43b7b7dba81d5437991d95d5630472449cd40fabe763fc175c327a380db8cb3b91a1c81d9016ac627be48fce1c6d4a0e42697719c03270c4eaac1a2cc1f0c478d22cc0a1e7d4ab7f08b4ce77c1a947f32955a6140c7d8dce071a91c1ea0371fa1831fab1f55b53ec59410df42ab80f88e3ae0fefc449aaf4a3893b35150dfde67119b1aa74cdbb4340fd38167a9ac8c4cf40ed3fa1d3c85f480645cfae9f2f039e0c807f8ba4d96f4631933bdfd30f594fd08cc46eda4908b1dcfa8d79410b1c8a1e9228fa23118af734cefabfd64ba5dd3020e0e441f88509562c05c6d2c054469cdbe01a7980ed0db7709046e9741708e13b77bb0425638dd81166ca5c14c74f02daee2a1198a41431c358322ce6a11f05139df60eed1254679c226bc9e82b1c579a871e785b7f3294027cc9c9f0345e2073815bdf545c2827320bea743d6d5f357ea7694086cda5a4c88003b4c7570df9efbd0653f48d782030f7aa7ec363e84da5c3427edfdce4dd3875a70e02a8ee77eb107e10056a720b5c26c7b7646523b5dc2d109007fc335ec5f64606d22c4b8a54c0cc918c202b60bac783b6f9165a92dd9182e3a48e83a08b0391859075dc3266d981dfaa323f88c115d5be79af8bedb8958bb8c5c932e2e500d01861fb48018f616245d3e1d6229543ef65a674e41cd8ddda6ce36a52d6ed5dae93a69ba576a5de38f4d6c86c826b4802e18546c488908e8a93590b08d712d736ef361baeda6de36c45bc71680b06884e2a33b0de0d32be05384bf65423e31a0cbd61706b43683a2d11d073eb6d67335b6f2753c7af8fbc9425a23ef63a02f06946535e23e9c6606f51602566279c7b3c30c03323ed62a49b984a6009e5ce4e71728dbfbed04b57e3dc7ca8f5adf3b6b018a26900fe994e99ca213d906cfcbe5ad2d23cfaae541ed27982f60eea9f65c1484a48528bb3fef0533f45731fc37ea5695d81ac9732b4bc0e403d1c9d5511ea4516793d58099c63143ec161ef5a8fc3d8f565111dce562759e2cea7e73e5155eabdd66fb1fc1e5dda71dd11b00a2e12cd8743cc1c8c4432e070a7332b440180c1e8b4c523d3aab239108b1562374a785cb5c3cccaa0bcbfd18616d0411347135e13e26904538f352136598397a8bff107a79994baf263b8d9ba68c91a108d2d65aaa8e72c2a798df5e5c92ad2de4b34330aa091d58b8789f4c792418bc694083e1d768429ad14f532840ad13cbd1a51e74be37986a0c6cd00247dac6512b4858c672d0c95508a83ee61a22377189e98b252d18ab5efb032c03ad8a5ce884d85187b24012c892f0a806611f000106a5ee5e53007084343e010ce4060840a90d10bf1a92696a9b0df722a9c481dd956b0c4e233dddb00046e0088de1252d37d831c904046248140be3c3b0ce827bd1b2bd55d762497fba1f945dd7dd5e4b8ae280f6f0bdfdfc7ceebe71efe13218be1d8d15480135c703296ca044579efa9d08990a249af62aaf8f6f9b87c626e350d169d06093da7e61a2cb9883189794de22bbda9bf728b3ac47144d89326dd7b6e375adcad17fb20547fb9e3c221e9d51691dcf2432ab4eac91ffa87b48743c42011a22f7637786b8f5085687bb74de0252acf7837c4d902020cdcb22b5bfe85a43939c45617c18727e7faa519fe9f399133a3826ece70b631427862db187732ac6374bc4e9fe1e25ca12cd53eabc1750300595e7cd71df205381bc9f83dc68caac2e6dd0d660c1043b6fe46ac797133729da515bf7fab1bc2c1738cec1593da70d636fa3d0331715e5e6c5fe8e4d2d013ac074a495813deccbcd0874b035c250353aa7b60e9232b08f7be57d1b867ba0275b58b2adae08c60a9098bf5814e4dec8c682e0c9f7626723a995e190568d0448425839e1a49f0a97d82a62b8c0e040441a8a74181d41c8cc85c18db6b8c580de8fef969d8bd27a2cdf370c8d8ab31cf44eaed6410ebaf8947f5ac992a251944bbecce27b33a090810885811454e0789c8fae917432c0a0ff65511bc8d14e362e38779d64aa934eee358c86b1b44d032a1031f0a57b810bf6eaf89245c3c73419d88da90c0dc5cb1295c1153b143714223ad152c230b403600b100a15706e9cc8be6048a27bd381532636c4359c856731daac5e7fa6a3aba48e7a2b1827547876b8324e706527f042734d62d8a5c29633a5be4c2e4fc837f7244f425bba50ed02da92c86e6d619e84e2e91295bf340b0ce12c4e3f44507130be80b9d622242a061bcddce185184941b258dee16f112bfe247474411ef1ba482f052a49600ed70ccd87afad0f48b5485df02d5c11c1d4736ad434208732a09edcd913d96c12972f69d1d7b280750b12398112645dc553bf90aac3867637f64c7d1e509bea44892a1cc1405264a89afae7b91841675af004230915ddb81e20e48fc0420a66b8525ec28a62e29e2161fc78ed07423711922e0d67020fd34374a1f5b946473134b48532a6770c6f94f8df4277382ef78fa77842cf2b1ff68e340fdb5dd37f21965861a90450225ef4687d22a9bbfa53479b49d7b74a5ac8ba779126c5a33ea349223a80fe5125ea38b3ccbfca63d917eef5d36c44872d67eb5d572654876770793d936ee0ffd571f6acf530ae9fc3184b2e95547e0f6f34cc749a7f9f15c9df870a75c13595d828dc735b77022e2548d1cae18dc1aad461b3d10a91a4a7159465606066a24f6b952605a7bfe4695c2168a0eaa484947be68b5114ef0aab15884e7d6b8b72bd2fb610d064912366903894c471344b237fa92170ea8117ca828198488a8a790a4283d63fee7ae7cfadd66bc46e4c1c87207166f30e4db5456e410d7e0125cf11f923f26e10730cf5e700da4d493522e7634a8c42fe9259189ca603e57060e53d240cbe4a80df160349280565d1a30455aeae34048555c5efa3d56ae2b2834dd1882aecc465c6f376d4fb964ed5d148e52baa0820b06bdf44bc19a48bd8392bcb76d252dc06221c5574228a2a2833136bb13892c310d9a3b302a175e4a40d9d424a7cbcb1700a9900736e87117f07dfc4c0689b41c4f195ebc579ac6e17acd3a513c1f40a1c6b1e0e0dc064d066e082b6ae07102723e36f7257394a262b2cf40e441084043acff394a0b09cf1fb6806c3a8e73d1ee1caa4e37ad0df123afbaff75c74e2cea6d90cff0f4463a84ae343d1b1dc3d989b23e4371813affa0ce77e5e0ae1d1c5cd1c7446c6677b0bfa5c70b42c4a8eb0d2be8d468a7ece7dc12c29b12e1bd2e89260682c52f48aae0dcf8b4df17aca57102cbdf76bb3925d140f97cf50640751bbd7a92b2d8f48939a8cd1a5919e0dc6e51ec9aaaf7f4d6b18187abcd10bd886240625393197f955a46479cc90cf7fb618fe4f933e33ab72e4e0b7391a563b94f891aa840cab0c48e685a834656cbba8550036478340b3f7eeb7ee4002cd8c0e2a21f3f2d2f27a1ebb90e746ec432ec36d476d26c89d2a96752db20862904a28b5b0920ec75b436278a528be4b0e462a4a308fea5108d6284772218acdd206000b44aa078498ef7afa9b68cef652920df83a2d11d135a579cf06738ccbf03dec2716babf2009b6661ff505999b67748ba86a3937079257a63090386b83e1ec473feb1af3072d8f19e9adc872e267b01d07e0b0cf7a340ef6c45e5d0f2639103f647c8a11d6244ba09312c232c5d27f55fa295e21bb514cd7f8081f4e21d83e9734a5cfa49a685fb396865cfc62635afb516ab68c4814764298627447ce2ccda305adb2177d2b4b07d19712f8198632d4894e23dc256eec0be4afce861841ffb4306773bb2c278c61ae97144058df81c6b33a397371c3e8b32e6c8d51753759cddaabccd3279ae8d4161486e10bd93c7bb311a0c78c83614ce4cd5c9b33bfc9f1260a34b21a21e8cc1d0c14d440d6e1a34d6203d830d50994145bd0952ea2a93a0d44cad96a071c42a6839abc6530c58178609849dc58aa9c16627678c17197a71f068bd46670443fe19aaed0a978d043d40a38180ac2880d92f99c23fd1f8472fd274fa6181034cc43d07c749cdcf483f00c01da064806101b00c006319f34abf0bba8277755a6684f6be1fdd550f042f08cf1b421bf1c1683f104785981e20b41d091c4026471c23819d45802c3f1e31840c63310c9b7078f9cf317a3c2ef372e36b88c9b0168c94d5c630e31abfb284a11414ba38af5b98ceb3b35f973c3df2a760c8d498ec82fa61593eb39b593c37aab29a7cb90e07153798b29d81db2258c285edbf027ade928e184c670128b53bea8119b02e7b8eb67b0e89aa855f23747aa48c7092c6e1d9fe0e664913e23a5c3b48d459a3e829e06f8a0b7c07c4edc222513c3b9ece5f59f33de23424b9802728fc31af0b189e6d7f0d306da55d934093ff67c74b3343328704aa77a55880ef1dc52ffd9ea1e8392a6f8a65283c1f763a3984e21c025f4dca0faff7e165f01073ba66b1ec7e39a158bc655d0533899d20a67f2889747f3741800f9462f516516f9e3e71ec705867b8369c79c0dea525a21b1d040add20723e44e6868539c879df7f6b95fc708be14aab0422600248051b1176729b1be1147e05f77fd1187976eb103aae09fa3b39b459603cdfe14a3d7aef2e890b28df5a0d2a07a617da1fc20172567ddf59a7363b18a5e183994d43965bcb1510fddb5a945c02920d580fec8b6d7b2afbdac41a74ea4a27f376bd085e794ec1984cc334d211f3ffe08ac621b35eded7ebb600b7574d3b2b03b0f461e575d14e5c433080354d6f145c62034c0fe16a10f165bc918750c7b972845288fb60b998806850e6daaa3d6ac92496fcb02e1f8810e0b5895ffedb40de5a0dc351c5f7bf766b1284638525afb1fa22ee8db74086b0c1dabcf032901e24d5bb6b3c97378c1a668a81641c472819ab51a355ef0004d2dcd232c492543709558f8ea963a2313091a687a6ad5d23bd8d1ee449841bda7d7877a2a13b17c10384b91a41d2283524f52d85961007cf841297dcbe16d525faf42169f8ce655a5d1f9b7c0c5a7b03718292452ee8af8e4b78709b49b10bc83093c4a9750a37c24a461bdd07fd3dd66d97d780f232cbfe0d5c6dc69e7cd1420f8bd14b5c33963c593e17befa8011cb53afb0732328637f15b5e70b85dffc23f74faaf65867ff3cacb036ea56dfb9314b59e33b452dbde3fbebe1e32efaf1c59cbd2f6a47954401fe2e350f4dfd094a94b7a21322bbfe6501918c5f59c604846fb2e852f5ce342edf5b0aa79004ae87f5e47d29d9ac9d9b148f73f03d103ca8448a7468a04e57450491188d2d1ab7a2ca19a4ff34bbe14ad32cd7224ecb0c2338e4c77c6828eb48a6b3974d30a117fcb8651080537f4f9ecbc530ba3c5e2ddd18e5b68387d28e66d78cf03ab716f9708360a51e3688b05fe7d6bc3f19e495e8e97fcf0931566aba5d4d423ca1821ed93257d0ac7e0ae56616c6d50ab95fb79356904aecd6702cab271329b2e70c957162c545059a8a41cc0d91027b2ffeeb1409015b044511d422f05a23b0174be13b6f10309b202741aa04ee23d0f45e68e34b8355b35a625a0d0b02c94512fca258aeca7e4181940a0a3142a656b006440d4a263bc8263be5417ac511da3a222cc735db3e661154c89d3a462acec21e6091d3ae30a4198a04e123201751853cdd3ffad4d87ef34f44c76c3de15b92d42895fedf28b665c24632b3cf23c307b9ab313082c901cbd85a13d01f00504ba5448aff0e974d098eef66f4201cbe25ba293c46d350d254d1d5772da1d1454144222fe181cb15124a4b98c1dd243dd7621ca1082d4d38f83282eb120a0d7f4de186a28aa67499f4791dcd5b6c29cbf1e003e7292612aca489e9c4d2dc3bd6a5b92a515d15c82817e365453395055ec2e2cffa537135508c2db47494caf532afe076c87b34b440ccafeecd9054e790dd971dbddbccf47a826796e92656ca87d28cb3bedef37fc799bd3e361776b875166ab75fe90f0b9ddb0fc8926c7e3238baea5e639a9e854ed9507bda90465d6de247e8b54c0739379b7d212f76d909395037389888ee2fb718528673c025125a168f96c239b5a69fb296e2f12b7329bd5e242c5d1bd60b1e10a349497c1db52d37af483f65c15f2ece13955c937a119e70015330602525d64dcef5b8ebe224f9b4eb796f8c40f0c01dd8e33e18f5fb67282a90d37b6fc25f061a4eb1260934436e84818401cf7a0fd68d9e1079141a3b83d699ec2d3e195c501e95e58bc33fa6c3ca71232ce02b25874457dc1b1999f9130376fa43cdcf704eef4c328989517b78d2f1163cb3ebb5a8bb57c252a60053a46993b3dcb8f1101394c587f31ff486d73d63840218563c24d856138fcb0e2bd210a4423e1e570cec1f808ff45b902786605bf21bf4e4e23373ac6f4b3f2e9e326d4423f9df202a565fc829ce601fb15fcc76ae8c9c4dc8c4624012222256800c9e6d47e8188482c0cac68680b473192885c2dd065b88b2efcd84c29686050f0a79215de173508944419cc9e5314d4402192f0d14bf07f08775a591bf89c67e5c8429dac0775050fe81f1f41cd4025f250970cd90ed9c9ff9339b6a48182fc48b017dce8307301028f5c5fc1df03456f987e9506fdfefed3d06df5333e4ff3f649cc2f25ac40e40943b8a12101a6c3000738c429c356c5f1d407996f282a2785a8c61d61f19230b31d93a5849c2dc1f420cb8819f88c04c15572855f00cc3e4e7e900ceed1298bb4889ebf003f660c30efce5a697fb473669d5d4f6fd16395f99a9ff933fa6e10d49e2becb79449b068134e802c42e53aeb8da8634aa4cf50cdd619f7c22f11e25ec6c6a7c6d918c51a90a75a04918bf65a41c6c59a29ab30f50f582d682224613b0a3200ff68b0a4adb52575eb0f689c8d93e35943e1f5415c80bca9653bf9768bdb4e9a28d10df00b0a069532880785915684a4023e1c35c8505d360365dc40b93508a5950a38efae10b5854a411f160caabd95b86a8e0ef0f0bd5467b049c7c6243e78403d5b2e1a666b480fd024fdb415c52372765e05c1fb4279d1bbfaa40cf085e2350f521b7efb21a471e2ca37188caad3361b14b674e34dd86c67e6234a17b405af4f60ee54106dd408301cab71d0839826769ba90d304e2016aed41b5209840b294da4efa602d042e0507b2ce2aeab7606859b1799dbc87ccaf7a9dc6a5e3c9f5062808e79895f122a1a67fdfa516ca10444837840e7915cb2c8c09d03083d84a632d44b6568305fd562f847c378ee0832b1714461aaf1f1c9a8e6a0ea815342d2dd88f62b91f73d74782f6a2fc47a5d27f6918f66b538151e7eb2d7fc2bfe196bf0432c4235dc2420a92c70be9928718690209d4d062114340e89cfaf28d925a56f9c1364d4fe17b80eeb0044128ea17212bc99cebd56d45f24ba73dae0a90d84e222a56f03760df552bfb3ddae462b607a43737b7d8c9792e149886816acd3aba09a4774ee50901299c2908b18b8b9d07597d41d490032b5015e062df3e5e68a6c6a2ee9cb15e38e4f06d6383489d2342c65fa3ec9bd12ec7849da614955bb439a23c86d90f06cccb283404f2544641d02f88d8d37a6055d5597422fe27ae0bafa948c6a1c160c96dff6cee8c0388902caf9da74a8a1084d637e24cd719937394c94338e4acfcbc80d6c0e4004aac68eb4606da948ecfb64f56a4f78fa876964f1ee944496be05e0ccf6040b25f9e9034bb8f939e8316cc82b1a33bcb9499f13a496fdc7d692d8f0fafe73ee3ee548b8aeb04187b4918cf6df03ea9f618d0fe10e1ce5812c83ad2c17700eb9a1afde54aecce5dd949b097b16e7b71a8957098d88532e08b83b42c30bc5fb5e5c93a3c17cf51057d0f0798e78c74fa0254e28d9813d1000379e565f89e9e425b565e4529c49e067d820308c215793ff4feb800f47621293226d415a60e422df5cd9bd2fb455ba1d81430928404c3df1c7fd4d2e29656432aa72521b112b5f643f146bad0c3f33e8219d93ba32d9f4898b429f4b0db0a712c6309b609acc876b4fa6c5cf5b9550c5b9b8e00fa60d7c7919ac70f08fc74864b8ab9d87ca5e340320fd959d948613171df9de41061b4a91f3f070685614e649ee36ce2033d08f22d0d92b517810fd8ce06d314af82713182a64231182b355ccb04ceaac4f4158d91f40f3ff1173565bc41abe1e5bac5b0e8097329abcb62cef7cdfb31a088c26cb78eeefaad8220863249c459656e9112661d5e1e1157b41001a92f852e6004c2692431c5c5ac9c96856758827f3fd3c28606f5c64d2d4cace5e81563be55ef44839083799113a11070f67a10e2f06062941f0c5982cc037a72e485c2b9500995bb188b0cd5b3c4362dd529ea25d48d0d8057b5e26c6083820f43d75f42606ffab233a6d9375ea03ca2cb814ea8a0ee6d7faa389d1889cda2a290630a309f5bdc7d5e9ecf1b64c7184101b1d0b4c8a4c3e7e8fb55676e115e94b69991b91f3703f606e0cb0f456ba148b52ca5a025fa2b00619bb46841a26a1612d5b6b0b8e836fb0d8efef932e913a0a74f735bb5a7e605fa5a76bda3ed7dcfe56816e64a2ccb4a92ddf229effe7e08c86a3ce9876dbba8b6c2fb7a5a5d04c4fa163d5304f0d5d787d57bd70b06b08a104ed9a438031a494f4249d0789bb19f0f6c4551c7c78d927616c634b49d6e44efd1a75229ac278e7f096bc02276b0c01d8137e702cb9602dc00f3fbd146a181f723abc4d286551c308e59391455b58df1aee5b739647ad5f1f6e71ab12a5db3c7ec8afe49a1cc46b976aead8c86d65ea6b41f9b5a0b8b72030b2f0f539e873d27b863dce998b502b6a39d51fe55e4f23d8399b89789aa7f0bfdae57ce8985912d98353eafb7c98eca4079fdf5f188eeec80269328a9eaefdf5fb86f42afd020840230f03f66021e021d74264fc046424de2bd887fc90c32263132912a4cf27ddd8c405d8e8f45ef68c97430fefe22c45b80d256bc890733b5d8d01b37da00e4caab50601910026af987d67254f5989054933496f009dadb1c3667558f2b69f9d4ac1611f008494beb5402577dd386c2aa686f02c1b51f7dad5ccb3b51afd994089cb53ba55bb5d56cc1e710024b3d3d0cb3b59addc3f1fa5f9f674bab14d4de1b7f064612cf80aba6c6b2f5009350e998716c8f6230e041ab0565b671f795bd3d7a504b418595ba16a7c2631ba88136b99e8f5fe4028eb417b101a531c3a241fbff1df0b34a4333284308e416a16078b1955571d8c6928a068633a06656857418507418f85829d561bdb8841bbde221e146ff7b6eed93c673426fbed241e78541b8f0044fb26366d0c63a342994841d60ccbe4c17066ee3e5a89b242cc6d56f919bf0f23d5f72dc8342e6f9700e1e2b2957e60984662204e440e42d09296a3f9f8c214e4755d5e15aa26b0afcfa488842a678b806858441241ca25461719abc10cb122422b93341adbdeb1a0b9bc03a82b9b9200806a97321a4798868e1cf6361c3d053dce0d9f87a31e42fdeeac60646102770e10fb6bf3fda290822264592b352359ff5bc50dfd2d48342146b0aea630c3803758005b846a022ae0ec880c98aa5851ae1cd7284f2cdb428ca9ad0c12b639ae7d2d61725dc3a021c20eb7edd4278eabbbe04a73d7084099c2840e9cc8e01f986cfe053a05ab4a38f9829963e637fd530d9446c6cd006b1c717ba4b2fe4dedd3f4d6dcd26679cec60b43028b35aa7737ef02ce2220c9d4024d8e9b0981e7031c5bebca8a25e11dc7209d06062262eb47d438b6a90b01434fed9085cd2cee9e618637240e5ace6c7f3dcac31fe5ff1120b72eb5406d38252f041ae4004ae22d39362d873ea62f197bab9b0d8fba0f2a304709104df8e32350382fb90c2ac6d9b86ff6c0d2dd789c99a7e4efd5907d58ae64a59dbc5543e2850c21bd96959c3c72db9157449278270c07cceb6318f4ac45bb8685998e44ceb8a648a596c4b28f1a2eb5929c54bade051afccbd1e9094d171d213b496fe384a0f49569c7b94244064b6404a023d25537459507464e57ac938746069d4ddc956591bd5b3e6cd4f33e05df0ded0292f35afa8afda4e8227ccc0b75afd063553b7089ec239cc5090a3356e31475f2e5f84a25027e78c27eb2f1354d29576d96f9571ed5419fbdfd3868f4779b9935d32cf878554f2a456dfc06dd42dc374c644693e884a4a0e6f34552444109392a2e964601855cb2f6dae776fb265f9689626f8c272a6e50e3424db056713d5f62718035594761309c4de0bcb734045a1a5e67a4d0c123b97259c37c04c435d6544805e635eb93242c6c3f479ef9f1f297d2c9d6ff8905df4145e5751f08619de1511ad6452b7be80e6afb0132c4522bd6a5098eedd6c8649aece2b5f7c6415a3a013809e2b465203a1953f014e05a303e4af37df656b8ca5364682e637a1a381b15e74f0873e3ae4abf15dcd8221a7b5f99498621d42995e546f0266938e1443e0e013b9287e0ac15f194880ac077a6da196e0468b0a2bc471d2c22418ab6df1f1a171dbbffaa898acc06fcd197fcc922cef08911433c00070cc0104347c532425b20fcbab33482efd72ce5d97f29b6ef4be45c0f5e555d735c6227802bfe90100cbde116caabdd5942a16942e0404d466784ca647b7423897bc55365edc7a400ddfacefdb5e52198c4a2b39d7d24694d5a48cbb9f8babd9415e63126d76879ee77d9028d1edd122abeea95f8f2d357261e735f7b51165e7d31ca25130899921d7cea1623ecbd03a225ef4bf5f6c555ba5d84ec5b5c94ae6c68abfafd6d4f382002aee1e7ea851c6323fbf4ef408a056e7a6da8c02624c23bdf41c394ba37d772d0dcac6491511c587ff6d4b6ad90d625767ea485823ff139008c754132ba10ea83c3b4995d807d014a8cf8ae345dc01098abcfb199500e59055855d52d8a30959db059a513252b9949fb870ce116a1a4297fc87bd48097d32b63e0cfd955a48127e88d3ff97169081a7155715603458a9a77d942b9389c8ccc6586796435f15f38c55e16ea3c7eeeea0690a63dfb4ddecc12c225e3a546f6b1267368d8b9a39cecb9211bfafdf60298e00c7d508a041f10f675c3d6cd3bd0ef0da53e0fcdc8020145aafd7851aa2a629c532becedcf499a6589b2eab9a9d5ebb5cc7bbe3740fb4d2afe6189f49af4286865743867d83e75203199e109dcc32d0cc32181703d3ab954966c94202b600e39ff51461c6f3b71405a066c57979b29c46dee87bb4f7f82043c6d11ae649b68f04b93316880018b099ef2fb262ef3da6f296211814020d7530e194469a88fa4f7314a9d202917474e871b9b2abefd24453b720210b1053e86e7ff8d2f3f78235a18323ed0918ae720822c3bde9fbfb47ed245b3fc838be848d031e16dfd63e085d2663258d37200a39b80d403ec11d03b23938efb41d4375ff6a245dfe41a1ae8a058bbcb7f03c43602634aac57dca98d0f37d7f2cb6ad5fb94ad1f03bd0cd93f28e0d1c4b836e1c3cdadaeed8cbd8275ea69fc3067a222ccdd325669613c9d831c8abfa38dd4658f5b425eeced80357531efe805a4ec3a0969070c0d23614b634317050ae8cb3ba79a02401912c395834210115a1490f7c08fcb2025e83c4b70b3540b0a6d0013c0c3c0c3c0c3c0c3c8cdfdafdf667de424a29451a3534caa071934c3b49991222ced91ef51b5933d29fef38e37c215c960bbf0b8b0b76216d382599bb6393a6d27c2537086103fac2be8827e9b45b923ae34710203bd680b64ad527e6f0f499b33b3520fff2455bc77257f4cd48034a3db44afaa5fb6ff7e21082066434c16e3b4b5dd8683a032a5f365a8d988afbda0cc87063a5043b4965405b29155b4b4a920195ad24e9ee92fced9b8c810b9f67b6bf97d3af871031a02bc99d3a9b4f42c2804cd525f7b9dd5b7d0786336dd25577ed7c012527ff183ba85eaacdbd80b0ab787aaf3b9aaa5d4086fb37d9e8a5932a391e69215c40ffa7ecae7c0bc8d0f0ec1c33c6d453215a408f75cc69d124499eef0c1f3f46464c16507ea93449a2313cd2ca2610820554a6f8eac1726e96f3b6107205c4d8967baac7ac67eefb08b1022afac79adcde31a3e555404927e3494ef6a533534642a8a0849029a036e724dcdc8fe70d21524005530d17f6adaec20e02c4871925bd10120594fca7e337a9ba2453ec42081410af7382a5f0b1197e628890272065d46c4bc7db09e8689228fe9dd249ea6a13d0bfd13449574afcf938881026a024794b51abba63d2390ebccb38cb43c81250f29ce6f41536d33570204a408bf6a5245ef5a4bf0c4f149204c49665a9caa6ab6413c5304290609d643a091ff4363ec6f0c133083942ff726b1ebe6d2b8fb41d38e8f16746c0325ae79804adb2ca4a69252793d2b3f996fce19156468fec115204749edff9ae78f1242949494108119056db4936ecc4781b45103204a4963661cfd76a6e331382102120bbfa7b3699bb9cf0c9a00c1f639c12840461d9a44e9394bdf048eb110204845fea6482861305357e818aee5697e36cb8121cb82f109f04d3cfc1eaba3493bc09418d5ea0a454fb61f3e998d9620a2fd06f2783af896a7b9af248b35da0642da6bf14264efc188f3413d8799f2e5082bb58799f6859d34cae462e50f26a7a73730bd39912e38098256ae002554a6c1375fcc4011d61e8d8808e30908e307464a0c62dd06b31376afe97042707356c812c939ab3c69874c4fa5a2036ae7b09abdde0322d509f1634e5acd698057af389b79cd689420d5920b4fad5b6c49fefcef2483307851ab140a7fb7fb89293d6e3410d58207bb35c38af13efde7bf6a0c62b50ca2b06f3d5ad589fb1650fa8e10a94589a946af8e9fc61d20a744e2578b6cd26a7492aac407950cbfe9c1fab3eaf022927f3fab9723cae735481da14ce74f2bb53810cfeb983c9279b31a8355081feca98ab97a704f7bfc629d0b627e3c94dc2a7cfdfc4a8610ab49e52f6b5a6242958be462990a397633893c3769cb88f203b5450831428d3d94d36f4cc044b6a1834e014e4043f32905c8d51a06bfe33af85934b6f5a4314a8cdf19276df245349ac110af469d98b75de7953550314c8ba2ed9bf25e4d6ea1a9f40758a1df44da7ca5ef2353c81dccae755b27b528befd7e804d2d52d638ccf466a70c2b8656ee227dfcf6f6dc26c159673f297470d4d24094fb9d64bebad2633618eb31473faf2f831918931cb699e8f154550e31207134e77ceb51973e99628dad59b6432bde74e8d4aa0e2266a32e7cf73a2c4fe61f62fde34c73c5063127927a9d4d365098bb224d2b7b325db3969d8588d48d480044a677e9da4467bb37f0136c1c808ff1819d91a8f40584966f7f1dd354bee08d4e6cbafefc71777bb1128693d5b095a92b0aa2923509bc4478bf3b0365ab20854987472c995b46a7e5111e85a99efb8249a758a8940e56c6325c362cb898808845eb674929ce63bff43a09368e2be64ba37cf8d21105afafeffc6530894895d0ef27929a6892104c2fa542da5fcdd1dcd2090d9544c6252e9427e2d8240dc8789c9447381409c92be3d9314d37776804097fc942e6a4c26a6b73fa0e7b2bf8ead897631e60774924fe515dffb80ec4af29a94d2997c493ea0e29d8c25376daef3f6809267763d379a7875150b6ae8019d267f7c6ab5b51c7e1ed0f93b659232e5a5fa1b0fa88c2995f85931d3c9f41d109663afdcdb8ec64bdb01955ed5e46c91eb808e154fcc25af35ad980ee8301b27c9799a54face01196533a7fd4c599292950372d3735d25890332d9966cd2fbeb428303323e8949ccfb7273b56f4079ebe557ffb7664c7203322d099e9e5bd492b8b60125ddf857674f65596703fa33e9b026ba670d68b1f2b4c9b2470de8d8fd9a9d2d98bce84903da73aeb8f0cd2c9f3968405d4a296ac55ad5bfce199031c9a783a9d371cbd30cc8f8fdd2d14d9601b11eeb2bf5f27dd2251950b2db97a9caafc93a19034acaf1b82633f8e7391103e2e4fc4c926eb72f4cc2804a759be1a949c080d8a41e2d4b6ab2cfc12fa0746591b72c49d8dac60be8f8d75154368ce770e9024ab693cf966f4ea79ce302c2de3fb945f9682abd059464da2a3ee7867fab05c49caf7b96ce18d4cc02e2737c4f74fb1ce3c6b0808eb394593c5740c9d3efddf06196622520a86105e4a5cc31b4744fb0245f05a49f99b6ca556d32a7d4a0022ac9da1e93d476c52c35a660f986c8c5bb0fef0335a48014ff71d54c1df66219059430dffbb16049e60f14509654b26adfa4955ed578022aecbdf3fc64cece9d1a4e40a6aa70512d5e92745da309359810805fd458025ad3c5542b9da3556878a4d55002d2a4b1da195317a39a47d44802f294da103590805edbfbcd12da5b3a3f861a4740ea69585cbff4499b65ac0a358c80f24c2ac95786479a146a1401a95e793f4982edbec56b1001d55f5b26473d31f9d5ab31046498fc76dea59b0ed41002e2539e0d26d6d32d290501f527dda492f1af49bd1a40409718974ffdc553d93ea7a0f10bd426db2df5299c4ad232a4a0e10b54f6fcd678f9d660394fd0e8052ab64972b2f7979aa0c10b64aba5f8587ade0532c8e6a4a76252b65e4a81862e503a7db2b9b012f3cb472317a82f496f2aed414b2949203e78941ad0c0053a5b3af33a219e7a4e78a405e11dc6ca2240e316684d494ec29c9853691f8fa4610b94fc59ef65aa625c546b81d4b8dfbe7676979a8e8cf482062dd0fa5742434c691688d3db1b7ed349fd65c9022563cc98bf573d9ddb58a0663649d23fd557a98f062c90f57a82c9aaf72bd09ba424654f0b6bb1af2b90734a3e49929dde84765a810cebfea792bca72c272b9039275f9392d6ac62cf97c9357d8c2a505266cf389fcadebc4b054a7b5dfa14bffe2aa102193bf849f1c983ee65a7405ca5b0a9edc44a8d161d689802fd6262148ff94e377e2950b35f1ed3f44fa6c7a44095f8494c4e4f4b26e351a03266cee6e8fd7ed2471428a563264381aed9f4b4ccf9ec93800215b6840b33b259764e2a40e313880f637967c2c7bcb9e4094c595c5740a31348d7f613be4c4ad1eae50010e7322e3032624a28687002e5bdb69a61b38b67cf265077492e71eb36abc4892690f125fac75352ccb89809e4cad7b698ac345aa2810994dbe68a96f43a5f6731685c02755ebba94cbf8b85bb04342c814e279d0a9a42536ced54025d3145d7606b26ad267d0029c3079b25478312c870f39554534c0e26639cf13909e4675799186fda65a684862490f349c74eb2a6cc26ab993422811413b13ba9ebc4d811410312484f4b9f464e4d9ff8d45582c6235027fc493af6844a091a8e40dc494df1e9942edff5870feff1430c9c048d4620d4945e93929a704a0441831128f9cbb1ddd9987e3c9d17e48c1170a0c70f31124cd058045aefb47ed279e47295ec404311c8e06a62d22549bd81462250274553f66eb24a790c2250d9248f629298e2c9b31532d038044a09314998ad9c3a5d94066c08a499ba169333b5c97f1502a9796b6d54ab4c56d90f3408512cf512c43cd018444a4c524e75921cc4b347d01004c22d4bc93099259554b5814620d0c9722649d8989275fe0081cc6d7136de9eda33e93fa0e29674f2d759781c931d7e405866a98f49cc5e412d31d0e803ba74cea93d3356665cb0c3d8d16e61a0c107848975ae963027b7a0b10764864f3947efa881861ed063bd5a724c42ddcdca03724cb68c574caafe291e2c17efbf0b27a8810fe808430707ee805276e2dc98e81fc3e676a8c4ada8261d4b265dd121c60672e01f00401268d40195d9e5ab64eb9f4da14187bfe4a4d9d37dc6b09c1668ccc146ee40430e28b9a44b26ae5de99c2534e280121a3398f0688e04f67bce6e9bf96740494abcf5d9785df1626640658efaa924e7be93b46540a6051db98fa9b5a3091950a54d8bf56fb8d68b1e25dc1803d23f5349629273f0cc5e0ca89cd3b27e4c7518505a31b4d66f2be62406033afd7d6dcf4a5f40f79d4acb59cd7b4c5e408ca6e9d231f9655fb00ba8b04ff58f27e5061790c17ecee4bb184534690b9ab8cd7afb3a6b019564ae525beb9976c3594075fba98a9b966ce9dec0024acad9d2d4c6d31550a53fc69c1a9358c2b502b2b3a613ac92a55b31ab80ec9482e660a73a53a7024a49a91dc3cf7a2ca9640a4835a56c2c95ba688552405a6ec85566d8d7b88902eaa432d1c4c71428a0763fd5f88e667870e309c893929c4aff737d4cb2135026a9abbf58d2b763b809e88fe2a56b2a732d9a9880fea81fe5dc47638b6909e8578b51ff1c5402ba7e6d3773bcfe94639280bedecb583a957b45afece00612d09eb4db2cbd77251f83e81063033ab87184b226753359b14ec5c908492d1ae3a7cff3e776114ebeb3557296aa3e27c25e6b99164b4348ca646e52ea6f08019d3409fe3965ce26dc0802d284ebad3cd92dc6946e000115aef52dc67862e994d9f805b23a794c6ae2e92010203bc23808e4049a58c0862f10f7e3b6a964c6e479f702edc994e96e8617a88efdce6af5143c697791c8fd9efa249f58264917a8f279cbca936ee9d65c204c33a5529be48f9f3bb84069a77836fee1e1949247da183e7c6c720b542e49cce3589eccf9b405ba33091f644cae16e89282f95be51c533e9716c84e7a9270d1844f96620e6447e32c90714eeb261de55e4e6f4316a8fcff9859d34c2699f3b0110b74eabc7db25dc91e9f0d16a8125aa727275b925af20ad4990a2aa3315bc5862b90152c5a968ca65620b6725c979df0fd78f3073658819a4f92bc245604d2631588db4cdb9f754bce07365481522f1a763a079332c454202ec6f86e52b104d124a840bae70f2779129ed9af53a053927ce6db2f77ba23481ac3f0c086291072e27cc9e5592f7a128f34203d4a81aa4ddb5b25c9a5049d79a4e9c0fdc7d749ceb06dc2a83f0ab45f7213af43538c7b961305423c597b7bc9ab164d42810edf76494ad992febc01052a6a4a3bcf165f4ec9271057779bab926cf2e21dc4c7f0bed3810d4fa03e4fc51cd763e972492790fadd69d2062ff163ddc1096458bd5fd7a85d0e6c6c021d72f2ba2a9d6802255a3a2c66514d73d94ca036e67af0ed24a538318f344c202c652a1565c3ea7309645eb8984a93247cd679860d4b202c9ef049e6471e6995409e1c975b933897bd3a4a2073ca99ec64b4de24ac3cd29220362681aaeb94555ffad2548c241067e29fd827971d46e39186406c4402bdc1739d97a63f219a52031b90409996a01db793c9f4df7cd878044afa7a66750a664a2ec311e8243799de38d724e6b7112895d2fa298deb291623c3062310ba25a7c38a7630d1d43d6c2c427760431128c1629b184db25d622c49044ae5f70eeb2446021b8870eeb39beaf892c543a0732c79f1fc623c7d65c310a878a9e94fe94ac18409031b85b09117d820042abaeee5cfbd19d59e05360681d261af7299c291918340766d0802b126a61396b2c3c599dcc0462050b5efa972c5b24bf503e29793f4c999f1e79dfb09c8f011a48cc4830450b0f1075447d7d899379cfc94f7033afc7d87c754a94e5f7d4029953dc57e277952d0f9802acf2c31664ad9adee3da072dcef4f72c5f58036d1d4f1d34d8c1f1cc38c338264126ce40199cb53f989a5c6033a4b2e975cfd9c537a076455eefe7373134e7640c6d4795d738ce561d6012df27e517352239e2b67d001ad7f9fddb7728ec9760ec892326cac54513c820d39209352e2d4dd96e2804c2a2793f392f3fa2d7040671e4d2ae6793de5496f40deaf49f72b9ac4abb8019dbdb3a45bae0731b5019dab4afe96245dcd676c409ce9b5b09bf9b7dd62630d88ed56bb8a9f25eb5d57033fc1b1a106548f29c90413f355b224080ebc8c32335208340d28d12aec539cfa959442033ae505135eba92fe981bc38c331ad3c61950e9ca3c4949b86f121b6640865efa5ce6ed5b512e43a72783967ce5af7562031b644078924949b9a1c15436ed9041193d8000e9414631f43e1c03fae4899d3c5efec7d58801652a8c5f653b3f99cf46188c0d30181b5f40c5b36c9aa4f9cb99b80a6c788135a5bee4f6e63e29c3461750d14a93c7584c5b72850bc8d0b7ddfdefc5b0b10564c9bb7f312c83327a90e183cbe841011b5a409697f07e259e8ad934076c6401b36a93e64af07a60030be838fba45bf464f0c6b071056495ca45d58aa594dc01f931011b5640bc9bc9eeda1727d8a8c27db22726e5d65440d5c921d79d5fcb04750ac8242653f76aa7480125d7e70917c35bc94bb0110594eecf9bbdf30d05c4ec5c126a27e709a8bc9a45ef4e9093e2ef047410b9ad15139b800a13f64e8c66f1674f24d86002aae4c6d2c9ac929db58408369680f6a4a4fb124654024a7e99683517a649ab43b09104a405f9b79bedbe307924a0249382c5a71a794dfb1190ee3993f6bfb061ed01e2830407041b46c84d8cbb899edcf345784d4ce327429224f79334b19a6ff40d18166c0c0125e5a57472f4d2411b424009cfe9dddea23cd24ad9080232db2c8b7a87bb1e02368080926d8b7ac2c95f6507901e6a427e817a117937f9a593ace2c06f00a4872fd097652a753c9140482f90b7f94b8e5f613ee5981f3dccc0810701e28303669001a4032708101f3c8c196400e99184f0e2b7da949b5278a4050132861964f42824236417fccc67c9f9bf643185e802fdb9bafbbd2578f6998b928a5d87e002ed9db5e3626e81beba943d568a7192ef67f870327a8811620b1b09a905a73a7396c69c37c779a495e1105aa0e294497ac249f1c464928278084646800429c36d300b9410cfbb7453f911c48c12228b37e64b72b5c42631594180e8d080097484c402b1d93ab505134634b50a8105faf3697956c6cf49985c10f20a746e0b27ade6f65295e940882b50a69294d45e7acd94e956204737c6a50b13d61b87b00255ef9d642ec520bef32ad09563eacebf9ea415ab0265d9542c4b99f226bfa94029954f49f16b734c4a122a50e2765699984d4e81764d1bdfaa742639d114882b952f5e9becf6642990e172babb2e49f63e430a74699f588da7424681ba18cfb6ec3b29d93d1d6124224414e84c7fa3b92c899b92780905b2cdee638d6accb8f20e21a040c9ee693d677f2f87ff09944aa649fa93cce2e3ec09e4954737495dee2c957602d5fe31a7f89b66cbd23881ac92f48cb7a9b218f64da067e5a26eac8926503e9f5dc2a7a94c267308c9043ab6f76c096f72b37998405cc86aa689e56b4b8d8c845c02957b3468693a09b1046a6f44d5b784dbcec848182b0843470ac80802e48c19f405dc35d01ec465f023893132128b904a204bd5c9257a527eea92f610420974f8b45b798bfbcb7e12e8982a3ea9095912e831b5962f1e932a7182879048a065ed530e279ee35b729040253b25ac7c894fef417b042aa7ddf974494e90850871044aef5fd7b577f44abe11e8cdd1c5e49c98a494274620ebe4a56db76818f30401e267d4008d10b20874d5a5f4b74966464d431481d68a7729c538bb93242b10920854b5c5cecbad8c7eb1c40c3280f43047084104c2749fb45c5a322793b86ba00387406a92734ed39635044a8bbac55ce67463612150a2b166c5629ba43d84409630132fdf24e5313a32323292d8216410a84f31793d7c8c594d8a20102787dd2857fd1ae30a0904aa4f3e393f23de191e430820d0af3165bf54ed1f507276f4bbb7eeb426e9071a19493f1c48881f50656195cdb498cee124011842fa8092a45f259d712e53e5307414097484a1a346a0230c1d25021d61e8a810e8084347814047183aaa0f217c4098649727ce532675d31ed039cdc7f6afb9c978a207d4c7cf9bd5b2c93468c8601c9c903ca0cc3ac9f9241179a4e101392655c99edff2ed9547da01002842ee8092537bb27c717d344e54116207d47cfc5376aba5feae2942ea800e9f442c8fefc96b4e2942e8805cebb7932449de1f3f7784cc019554e5959a592f089103ea925c79b5b2eee8ae714029497e8a897a6317203d4646768c8c243b0e0201d283103820cd63c9b4943bcae639e40de8f0fddd1dfc34cfc90942dc80d2e14f9ae85ef624017c1013cb3409032ab7e9929b71fe245930a07754d54eec2fd349f805e49766a7126252b8dd7801adbf66e6613c5ba8d70574b2cbae7749536b4a0511e1024a962df956d3e4f14cd243640be8f8a73b05dfac707914d10242634cbc8c27ad9af00222594086ed7e79ae24589c8a9d7940040be8d66c93c2c93ce9c45de40a084d496eaef54cb2a716b1024a0edb4db935c47409ab802c498ebb9e575b3aa4023afb63b2ecec2e399d62141099426725272999c2d39f281744a4b0fe79e74d15148902e2dfd7b5ebe4deff3819e9870646467e8c8cec1081c2136c44c4092fd2043ffe359a09263725c2041b3909882c01f9c153c388b6e68ba7882801194e471babee327152982092841341828d881c01f5153fe6bf13163102b2d52f5e27cd8b80122fbf46f7dbf6ac120125c6132e5a98eb4c9b1e023a053d3151645c73988580d02eefb41ee5a3fc4140a76d0e9373fe25cd44808032d315fbe54c9e4ced2fd07e4afade52f2c926967c81922779f23bb95c36ed054a129bd6c6c704072f504ac5b03ec9345b4e511cbb4055e9ec6cf12bbf9507872e90ed9e9d237f49924f0e8e5ca0ed4dcc9b5489fb291b0e5ca0c493bf364b32fa5e0c8e5ba0bd3c6e67c7bad3ca1f0e5b20b63489d5983c09081cb5408b9cec5f9d9fe3fdc94c01072d90417c2c7e0c660b70cc029dfee3a79f94794ba977b24077bde74b29dfb949b2100071d7008e58a04c188bd59966b92603496e02770d8c8cb83f0e58206ec3a40cdeaf7aa1ff29018e5720cc3f9bccd83819f5343202040381c3152899b74a4a7632efaf19021cad406c8eab36a79a444d3d2b90e6bdbadf253ca8e9f0c81dc9ad026d2729a5bc72ce0238548158d74f53394ffc68921de04805dac2c27eb4713bf924010e54a093c6f4d5d9979becb753a04774bf6b4c568bab78e030053a9df0529ae94b5a5179a4692990d1e465ce15ad3fd19d8c3380ec1940cc0a709002f1317fa88cc8e654393cd22e05384681bef42797d87947a3e83cd26ab0c347105120c79468166435cdafe491e63fcaf0c4c0110af49b8e29b668d6cedda9c3010a743079d6ffa35f3cd73f81ccd4b8c994cad92bcf9e40fb897ed9db65e6e2da6106e2e804f2db2b3c772ce1e00472359892d2c7244cd80b8e4da0fa34a9b44fc2008726507264fbf4fd95fa8ee2c8042aeef59a9d97563bf3e0c004f25cd6e498b7a819641c97b09184c31208390b9ea2bf29394ff348eb321c88d121c606c2e832c64847e0a8c49ac40c9ea4c64e52c8031c94405a38694aba68b2714c02d561a93b26c1c54a160d0e49204ffcc48a8c67598d2312a8d7b825bbecc5eb5ce18004ea922489d926df39e6585132e07804622f937cffe7da96753cb3030e47204dfec62c7e948fc97275c0d108f4ad5f5dc7a0d74914cd7101072390f7d7a3494c2a1d3db808f45696ef5c018722509e3f47cf59cc4e497d22506162fe3031fefad37a3640043a5e2a39c73219c3e6fe041c8740a7e0abdedff27b49d00b380c8130b1b63a56492d56ec041c8540657aaa1cde7432a5c28440e589974cce2634587e078136e1b39e967e975c494120f77a4f3c2d4b5266e108042a79a90fd625c6041c8040e5753cd90c2f61c3240938fe80f2ce744aa5e61c4cd60fe85495524f940f2749d265c0d1076455f646fbdd8c97263ea0b54b35b7c8c91670ec019d36762a9d65d1ca837a40755f92e4ba13bcc387794049714dbe8406f180acf14f728eb10f5edb1d101bbb62fa64d96e93981d502f7ea64a3c66f192a903e2e22dbc8c9bd001595fdab25ff65399ff39a0cf8388e724acc9f5921c1076c9c692927b3ee81507645ed377b75d9d3955e080dea879e75e396592f43720935e7cce271a93d4d90da83add2c972757dedcb50119aa9dab379a124bcd6c407d0cab356b529fbc770da8d45d672a45936430a901fd5d424ded89cd969934a0e4e0c9aebe77d57e4503c2575bb5ee2e3b959c33a0e22abb796a7dc5ba6640568a95e4a6f59837c56540674b16cd7dcdd45424036254d35fc5981b0332cb068bf6961103cab4a5da9b14dfa3ff6140780aae262b9e850b2718d0a764a9899f426d6dfb024a7edebc807cefcd9f37ace5924d17d0a5d749f5aece05d48649d2dce4bce8b85b40768ad9d64ec51336d402b24d9b183eba8afc0967019573552a5396d3dc4d584079c79ca5b693b09d2557409ad4a4b34fa9dd38492ba02ac934f93fbc434fa90a28d1a29ec7d73fd19ca302da7ebeb637565340fa9bfab2b8dd6827e7a4ad82f867754b1410eb7797b739a3f995a080ca9af329ad779f80d83c957bed5305337127a0d2a8e9f32429f954c926a072b7dba3f77feed2310119d76763aa249780d26af2e65f492a0165299e6ad3e5a8f1940494b967f69c4a34dd8b01071250bab74b26a52fb3de3e02ca4e8ca9f4257dd36b620474d04e493429f5fc58560454c98f594c922e2d6c9408887b1bd574c1e29d1c3304d4692e55e9eba2ab5584809252b8bddcb5ae95561090dba53ec9927153581c0710102686b6a7ca125ea9ff053affb4c76c16f9bc595fa05fa39cb06699bceeec0552d32933ed7a3fe94d7881b2ed0fb9dc17b626b80bb409d7122e35760e5bd1053aa7bc799614e60299c7cd2c65bb95122f2e50525ae9b214f7bee2b7407fe7097f2bf92a4d4ea2baee49b78ea916484dfdee3567299760d102253f4d2ebc8bf989cd2c107b4aa9494ace65815229e58a714555c78d05e26e4b9be719162839aea74e5218f78f25af408bd6b9257977056a3fda971a9fd9704b2b9057927449cf2b27795756a0f4bdfe628599fa68ae02edb5e13267bb7ce14caa40be9dce9af785f6a75381d8a4f298fe1cde4e6554a0e2c2c95c39699c571f10374e81d8ccf2f3ad1253202fc9a6a4c7bb7afa8c475a29d0ef39fd26b13ad3dd344841ceee5a708314e84d9dd675c38f77eea340bc8d6638296a9cd8690e374481123336dfc45432d63a323232622c143740818c6d3a4e7a7cdd76fac627d0a6fb27737927ebef79a419e9c70dcecc483f54e009f4d9589efecf29c9ca760231fee1995763be0daa166e70029ded4d47bb6469da2ebdc28d4d20bcb4e6a07e7a62305913a8bb143b6fb1bc4ce32cdcc804c2e23cd5e4fc72cd1d4ca0a4495ff2c5a68a1f269740ef0937dd7eb5dcca59e18625105eead45f30d1e3ea95406a8edac50ad714fb474a206336b5770d9fb3978909372681522989da886cff9f0f891b9240cfc5cde69731e68921101d628040c72935881b9140975231c5d2127d336e208112b3dae6e78f29df696e3c02a1fb3f1fcd2e3cfbbc861b8e4085ae5a8c53cd8ecbde68043ae6ac58315dcc173d89861b68aab67ced3c218ae1c62250da61275bd29d5d4c7be18622d099f13a744fde382621b89108849666aa0d731a671284a1a33b400210e808830420d05176b5b8810874bf5d2ab9ee64e5ed370e81caf56b132b266f18029d2449df7df5a9438c0de8208357e064f00a120070e24621106a9b4b499f2e6392fdf027044a8b951c7badd385afcb483bdc7f4797d1e38d0f6e0c02b95da99f2cfc86958c1541a0946e315db1edd28afb0702158326e1be99661a9604102839bbd4499aceb283659c61ee0fe82e991adb6a4912bef148bbfb71c30fe8cf708f569e315d5d3cd2cae841c60f0fe25d0cc80f7f206590c12bf81b7d40eec7b8e5b97d692c3fb8c10764788acda66bddf9eac61e101a4c7aecbab888dd7ab091ba9107640579db3e314c0ab707193d40506c70030fc80f534fab24a52fcf1dd029e5d6a78aeb3989a10c6ed801591d65c3cbbed5c7e2861b7540cb89e69591efac90d1238dc107e4061d9079d93c7d0a13eb3bc623d38d39dc9003bab42e4c65500dfb2c8f1b7140f9c96af9648ff9e47879a44944d0821d3b6ec041cfee942126a7ce3189492fcee64cf393e7e0c61bd0aedf494c5b49d2f3cb71032ad8599fecbe8ea9d73246303252a6861b6d78c562bda714b7623ac4d880196400e98009d8805233e63b7b71df27fa28c347990d6eac0125e760aada2a37b47a1e6937d480d2793296744b79f37fce9c7694e1437588b10132c638a37d84200738f0f18304416ea401599a835a925b4e7b3634202d7f0227bd75a6307c90e1bde3076034021d35cee865caba27e7198152398b097fde225039f3f1b2dca67cd72b02e12787c9722a9bea7b2210aa69b225f2f1c3ca8840ed99ce299ae992cf3f04d23334b3c498042fb921909ba4b94c72c57a78b510c8e0496ff4dc95cee24908d4efe7956a7a392d9b41a04ef8daadccf7e1844510c8d11c173bede9d40f0432be89398957ae7f0382972d936297fe03d252fce87f1ef30332cb8c89b3b4bc92fe3ea0c2e42c9dc6fdcda9e703ba43b5a492cbbfc489ef015d179be2c54bd926ba1e10bf3dab31739e0774fa0e9736fbc932f1c603e2c6aea4b530a59bf51d50ea5397ac132cc9adb31dd0b1330956f2685c9e701dd0262749bc9567c9f02e1dd0d13ce9966821964a3b07549f5427fee62967cdca01f9319a521c50fb625b7b66f14d4c704007b94fedc1d4befefa0674698d6de232c74fbdba01652a9e3eb5954d3b7ada80d67b33e164460f390f1b90299a8c79a249935573d6802ee573925cbaa306849b382955ca63c14d0362fffa64d8e4275a25d1808a7d4adcb4eb8fbf6740daf5664e27896bf324664079f0fce6a6a6c46d4d19907bba6368c70c9e6a32a036ff7f89265ec9491e034a838f9ef987899a1403627355e64ccaa64e0c03ba84256982791e4d97020664c9fee396eb2f203bd9bfc9d1f4c2f5baab956abc2e207c4fa3579c0b683df9316597a696cb6d0155ab26897f827b27692da04ace7779931216269c058446f9cea82775c52c169025b77c7d49c93d99ec0ac8d2304bb2b3a668b315ae2a4fa9026ac4dbbac5521caf14185440254fd97d73cc6780310584aabfc770274d2ed9ba230554123e783c29a5784edb0e30a280b294e3a9d50f1a722b14d0e9726d3473df12cfd321c60682f420a3c7183b780431c31b8c27f87ab265c90d8613d02b1eb557cbd47563309a803ed9a4e0393fc7aaca92e16320327c0c4f6030e146c0580232a5d93971b3c51363560262b545c65dc4aeabc423ad871967308fa04a83910484876b4d69df7e0118484055ff8ae50eeb317bcc1150952e65b8c63ba937b66018c14652004611d0ee26ade44aff0a5a000611d0f1a4925f92272537600c0199a4eeeb2ebde369661e69424067d94cc276d8580d8c20a0d22949e65e5adaad000610d0394996c9c44af3964cbf409f25617e2e9fb4bba5e38b1cbdb81cbcb8f6d2523d9963173692431768cb2567d89ec87dcef0f123472e909594569457b97822072e2ec72d6c6123396a5162908316688b5b1ffed466873f0b54fe9cb48d9fd57e94052adb3da6c5b178a189052a67676f36f5b04049c2444cc6beaf40989257535a665d81f6cc59e3dd8f26775b81380b3749bf27f13d26b1029d72a67492fd1db349ae0259fa444d959fc9625c15a8d2cf955697bf5ac554a0e4a4d5e45276cd9f47052a4b5c521f5cd52a7c0a64474bdd26c85bfa6a12fd67ae5d4ca540789caa53a9b3cb2529a440dda6dc13639da49d47818adf609e5457d434270a64d9e9d3d6b939cb6a394281b2b724e9ec796ba9800225a5f294f2c4c6c9757f0295b5cfc414c3c91308d3e09a7fdb37897fce10393a81d0545b729398bdd7694ea0fd5ce4cfe62483327a78dd183d829c613681ce7295bda48f9964e24dc8a109940e724abb593213c8cd0df2d137865d56cd177260027d5aafaadf261f2e5fbc90e312a858397cea31a5f34d9247aa2510674966d777afa78ee5a8042ac6142b55589524b9969440be26d153bae5b0ede12410da5e26fbb95dcfc2861c924069ca609a74dea421472410e2392d89e1ed14e48004eaffdd7f33d53b723c02dde3d557262f2dab7739f811a40cc717e470044a74513b8fab9ec463a446a0f6d4676ef2d4f6753a1949063bda1416e46004d2762c9d987d6d92638e45a0241d4d67742b3d5030327234318722901bb6a66a932a11482df9f604cb9f929cf48e1c944b0711282d2eab25f9de47af4746ce193c721c02311a753679b830311b8f3c4b2690c31048b9ce25c5a4f5d7a43204390a81f654b5fa37a9f2c62c1042a02b56cee47ddb8dbfc8f0203dac033906812c49d21a2f7d0a8f3441a024f9fcbcc24f4cba1e1e69efc3c78fe3408e40a0540c9a63529c9a9703a7c10e3312193b92cb010854f2108d9e57f511640710ffb1a306fec31890317a0439033190e30f88131b8be953ee70b2f703da5b37bddbb545137b1fd019fc3c93b059caa4ce07948cc9e3bc64936e4b7c0f283331e7d7d3b8ab27ac07a4494afb87c56ccd3ee501bd9a6634c6b30a9b92f08092337d76abaddbca9c3b203f4b74c6044f9ac4123b204fccacd94c4e1d5029cbd89ecc10d30cd20125ed499193bb7c523f0754b41e55efb091033a8a9c28761f1307645a69e966ecc9992b70407f05772bfdeb26db6f4056fa093f3995c7a996c30da814a7277537dd87b572b401219a3f7e8cd7ad26e539d88096ff730d5676b6a66c438e35a020871ad02545b563dc4f4ad59e8331cc30e3023ac2d011c6c8c851438e34a064337ef824c5f73d3d1ad0ae77229af37b06f48699743aa89a9c53cd80947beb24bb89d9c4be0ce818d5e47798bf1493c880ca92edde3b6cfcbbce18506b72ca56724aa75f0a1a72880161a1693ff88665861c61b81c6040ee26bb3e39413f27fd086247811c5fc8e105a4e6aa890ba332aa991c5d40c9ce957fc36b27296d1e6966ecf011e42e8c1c5c409b69e91ffdcc59619c428e2da07318cb1ccf8b494ead66811c5a406b2af1f2e57a4ae1ee2de4c802eaa4e7e6cd57976e8305643a65720599cd2749ed1590a72f26ab0e97b952cc610554a6243cc9eab7dbc776c85105f4995cb1a81d93f0978e8c000192e4a002c2cfa43bf1ffb8713d39a6808c26bb5472db180d1f8f3463092487148a9ee2c7c4663ce58802d2d78498f20b0d724001f97e627e135cedad623fc80841823fc820a3c820c713109b52995cd729c3898f207238011d7483956c26ad5bdb2323757ac8d104d486765a5dff4c40e65cfefc6f3aa2e12f0125f7e992c93ac98f7a2b01554a49be9bf3aa93aa938096cfde4949f9d2becc484086db9deabbe8a6cb1e0125bdf596fa5893c493640454ee1831994b2a0232d5933e1d433baf4a4440267bd38ca55bf9e23304c45bda787fd6e71f3b42405e57da249b6b898d27398280ecba934aceec602a95e40002624b6c33f914eadf9b5facea66c2526abe405b2ca94f0cdf7ff97a814ae1ac2d6f862f79152f50c293686c946dcfb1457681123c26e573620a3965eb0295737da7f2b4763de95c2046e3e5cf9936a64fd2b840cb2593d93e8eb8b5a522b740a5b594d3cfa5924acab638c732a9cc3cb540d6fc9d24e932d194615aa04e9552135ff6fac3b34079fa95d2d9cae2d0539ec2e3e3edfc58a0444d76f294ccc92617162971d3644c6127e72b90ffabe99d9485fb705d510cf75c269a89a5622dad4085c6584a0a97a6c43dac58055a2c4e56d5dacf594715c86872f04bb52656bc4cc5296f59aec68596e698bd4104154931933c59d04d3a053ab39e661ebf0efd24a640ca764c772d25a635f3d041a414c9c96be36f8ad1e349cf1822a440897aea3eabb46e69cd2890a1677b624ba512ab11859d2c992c9693ceb82816444281bc7462c18453257a98a82522a040e513e878963ea9a404bbee144f0841a413229c409fc92e259af2c5e5db044ab3698e93e3b827b56902954eabab4ea54b32660c1f4910c904ba7fddd43fd98b9f244ca0923ecddc9b1dd73be712e8d22a17d3f68925d067fa7ad5192ee554094a2053ddbb44d63ee70b2791a85ad1329a9c52760a150f72f27c3c5a79124c920622924095acbd53a66c376855049148d80824d0776715635dd59465381079043acda41dcf934d26471571044abb672695542fbce5451a41001146ecd021b2881d0e105104900288240208221a2072081d2286f020290890038814820122842080c820048100914004f1e1e3070e1140ec3080c81f4ac40f638c91c2e8c30244f8b007113de4408c0488e461870144f08000913b2840c40e375080481d1c204287392440440e041089c38e0288c0010818226f2880881b4230009136d81061030d91350840440d3b1620920620de23480d1134d81039034a37a79c63d194679a226640fcc99d24a9e4b66ccad421c6067ef80f1729034a8b6b8e25a7c9b057d8b3be2d4963407b295bb354f61e6f8a01698d93a87430852261240e0643c1502810062212de03531308202830268c4442f1684ca28ceb031400044d34264626322c2c241e1288c681722014088482013118100803028160301847f22c11f279e09649e3fe7ee670a4cbb01f346e60260d88b66f07f29a17c80efd2b301007880a93c45d862bbd213621371179257256fcc4f0a43660f83e2cbc6e381ee82984d3e40830048d84a794301bf3b4f59d428b20a9105c102d682fc420bc1ea127d88438422be48f14a1b7600b61836043902778d6a1a25e94fa8b7509241aac1fdc124a044318465b686da1d9c26d62581072f1abb56faa11f972f9b43529f24cdb9991fa0c3df939b544c308ebe0e70596171a09db0f9e4be4a4f61be5566b912591674751b9ea4140884d253de9551a757b12f5ee799da313283d734140ece7e88a7eb1f0bea65aedc3a4962be0a71670a2fbcdf8c7f70e018ae2c276ae0779045247f59312b6a4c5612ac38c1d6ab91353fc19e2834695da8cc06dc323b6f2ba913d1cedd34caccff00be1ecf546fdd8f6e2bca5906ac4360373e5fab48909549f805a8aea1b5f637a32a4a98554660afff1a9d94ae0bb144f943de701ea03f947c984d28afb6e47b77d3d15bc84948097667f1d73233b6b7921481f4258f2b37f32bf52d7430d1e02a82e715c1b622bc4e83821d9d30ea6d70c875c7409f432ab6222734d97e3dfb74324a8b563ba153cc6dcb6558121a472941a404c37ff41944da6d8d3818a0c18066ae8c3504708456d966b154d1d81958b618d5761bc445f3dd4c9f676f0b148ec5427c16cd1175aaadac4dc65f4961006e84e550896de7e685f972f78fe74207eefb47ececa93221becdd13a7dcf338ff6727c178ab29e04497c656461e06e0f2629b02a8ea4f21a2d89e0299a5966255205df022f471a5d46be2c20dae2f12b5bfe42029dd0a008f6df09e5e0283f0c6b93030669f0629c1ccb1360bbf926aae396f746420d0d3d8a4252fd19af107b6cff9a403a9a5e1b0d5fadc96cd6ebce02398b0afdaf02e3b13aa36ed245793e72bb50db0a514405613969debad7b2916a81965b686e33db3eac439a64d12543035bed4044c82ef5ab38f155ec072b5a67251359dae9cdd933ac00a8ccb84ef1b52c57b4a4e5ed092f1416af533ad498582eb6808815524078f6e96b91576c79833c30197e579c7cf185e4c39b34f098e93bca41a99dce8cc09dd147c0d83c4502086908020ddde02ee6b68056d0001f16ecebe1181a029f8d38d6a59497e6a2ea89e83fb63161db2b6a529341ce6e1a3ba4f58fbf0af0fe61123e0df271a46f12faa79638048e866598b200bc582be6ba979633c0fe22f48192f1098f76c06e3dc7fe4f808e1c7acd15cb22dd073cd1c2617b6f54b509a92377d1c62482e911dd48b0422afa912eb306e4542d00636d1e6401114810f177057adcc8e3df928bb4e4d219211043f4bde127396ed674f149216babe6abbf282ae0a70cff8087390996e2444029f07947e6316bb765b984c7d9dcf444b6b299c9edebf9bbfc43616d50bb34fd7e84d66725021fb401932ef41fbbc58fbebe36e3be22e7987cf743dfa88bb35a310870b4b77045193299e25fe2032a3d44b9905495f6bf5c96e3b5ae0622390d2181e20ec52738df464038470cd398e95d7b2a1055d74cc424c1d1421440f2387784ad29915adeef6fd70752367b2cd3b97f955cf75be8d4fc9577ca17ee25767c424065b1d7c1e200c7f857c063c397259c77612b0ad3db8ea910cdd7d8fc230f8587d99136eee6614f0024348c9fb4018a35e135ef17fed87e42b6fd8b08aaa44d3112aaa1c5d47901164115e92b3377148a38b992c94055c1ca403d695bcfb6a5a1e5111b344c4226451840cd51cf2633ba74029215ef1a8094c36c149e9fb087006a71922033a6e6202f8699fc8847218a4613d3d359e051b7b32df9b1b7dc77ee4c370b66a2b65c50d7102a77b739e585f2e5fad4652049ab8b4cc8b5dc4bc04234e9797b7c3570552a34532df9ab0016017c1d621d83b4441e55842fc7a62adf14eeede7da3d370a777f2201685ac34ff59c2758c4f0836600bb6686da1d853c5287586e4df8238531ebfa92a25632854f8e4032a2afc4dea9e8ed6beac3891fe2e662ce8a5ca5ef5b6e233e43c7a987f063ddc477ec112660ba8f185449763a142dd0668ad02e6d687ca2133f5b6a31484ab2208694a5013b92003a5b575fd6085500f3d00f90f941a769f1a48ae72f2109ff38909802276e167476a1a094639efa38b7be559eaa9952b8ed461e6e6a9e7c083102e266e3ed461a44704edb9b810b8dab538e86a14d56da4872f51d1b3ea8cb9079086154c5fcb6c36a44cf583f5260facf3b6fb9dcb1eee829ea3d8a0a3929d488369404c296f62dcc842a341a69804d289ccbcc20b257f991d0b264f6e27919f58697bd1e4de3b5668a0c0cca4ca0a73d4add15945abf0028a81da45e5a361a3cfd1aa100acbf9185fe6465fa2ca50a168d073ebb31ad00ab4fc273c8254199501f054177806bf84f02d46ab433a72532d9f46e4263de62c888e28c38c01876d002f4d3695f08d0631489a6b847ef88961b8768ae3a00463f856cb6437a028baf872c9909dbafeeedffc37472923c1f056e21353d9d19e20b347d0459cf87a6b1a8257e5a98a629a49ca917449e81b82c9c43a35b9c94fe95a57dfe58e9727e1647a3b150f10a9e8ee80599bbab00e2d005b379807f525e1b90764ad5b9e4a9e40362c8c2d0604c14c51dcb4da634ec257209f47934c36a5c89f6860ad99122814be896bdbc7bd95457c69e678dc0bb98ed04678afa2795af28542c66e6ab049e6b2417487a8b8e7b49adfcc5e898f617c694d75d784b105dfe1bf8859fc96f886931fb33c97b7adc73f2633ae9857b464338faab4095d86b3480c79f7accfc46d586a6a1d6d6d5246838347493ed33db6ebcbf2a2f6c6932aa8de54c64d92875ef89abadbdad0835956d34b21ef4706a527b018f564b056bd0d73263b67064b65e4e5702562b5b73a256d855a3318ad4894189070d5b73e167d19b216a1770ef9b81b832717d89fcb92b2365948dc5172c7736521be44013d8542d68b40081ea1bee8f4da3ea41e84dda1121dad50c9e97786530643014a3846db10d6fc4ef0d0e15f49d5b2b50e8c8886c46b3ff384377bbc957e28549f78e89438c4fab81122bfea945fb2ea43d951dedc6aa3e0281f0f5d491bedd0b9e886e83dc308398f8c5568654094407ec86b9cff4685c6fb0a8d461d3ad48887cc3df69bae70a28086aca5436b8f4d91ecc9902bcc3d1d74439201403fb5d8153e8af2b50e1272d726c281dbffa5bacf5ba30be465c03d85d0906bbf015b85c29fa90aba0bbee74367bc6241142323f916cff92cd295500a825ac345d58ee8509f9187fbc859ae94722493c49b01c9b9da7cac14078697d13768c0e1aa4c19fd73c8217b759c07b52be1b8ad098eaea4bd3c742514c81dba5cee0095b91c7e27106d98415e663306443f704601e85bc69cfc22ec6263ef8df164b7dd2665ee30521abac61229f27b4ca485a8db6fad198b87a145578fb88b157507b992e79a3eafb4887f8b742d71029748580901781452574032a4112e84df123ae580cf7887ca188d2693ea135b7f93bd6a8190f5435e8a5684f7617d3cdcab61db1060da3a6740686086812ca611496128f8d48ca5095abdb24987b21661a8b2c573d48e8107ab36744b40ce240ca67bbbf24650389156ca84a40a83b02122c1587caedbe4c26d6bf51fded31473ccd19e10da7a340cf0124d99bcb6ef6d756292def7e3af68c87adcb95d41d3f9f625fbfe8c65bafd0ccae4f6c82b8e53dac542ad655f55865d503e6577ab34159382e92e9c6f05dbe1175b4bacc689fa73f3c05ac33848d8732403b3816697286665b69a3b94de89110f325fb61715fbd526f48ba256cfae59ba3c5b9208b96a6e4f539f8600a37db8469575fbc886b1bd491819f1214eef6a7e5fb16ee204884773ed92a3a2ca891f81d8be05b6a3339b6b2b90a00c235a74d834f5b68d173dab6d532deb0e58b891a5872c5ef290764a07337279d05b0beda69c0a5c6a21be98dd2c5a1181e2a58509d1a02abbb84325f0e220370714fd1a1806b0972cf9d401248d665e2b8c483420bc33dbc7f21f30ba0df0c881f4304f89bcc4052f1d601edc02c7dbd6eecd333c5030eacffce3cf163034e0e62ba7427ab32af58a7ceb470aae77cbd2b4398b9e7091dd82211765ba957cefd097cc55a0f6de2c344cd4f98dac2a28dd98302b71a8cdcb8c0139864c2fab48fc9a57065f53c758576805d25a1d8048848aa1c711ae0bbe3cb815a65b734608042e25de6acbc34ea64fc87872a65d252ba62bf701bca75dfab7b66e0eeeaa457413374806385a632c56a49b896697c541fbfece8a7c8154ccdca141de58b8da61dc568b4c187a233f4838734ec50cb30c308dc394244a1dceb3cd5613f08f2dbbba7a02abe137de221918d2c93a604eaa9cc44ee8438cb013eee25587a259ac1ddf4bc9d12027bd4213f1d2598aadf26fdefe72554b1c0009c7e03f8ad0452ce411190ed98c5097f368770295764430729cca321381c04dbb67fc57a1b637f1e260d424c8df53fcddd262fa0be315e36af7f6546f9a2ff1b429c3b5bdce503b85eb22c98f957c1a5608dad953a65216019fca4fe7a8d2a63bea000db26f2dbe46cae40d39ba6e444fba40081c243d9a825331184f13b80d32317ef7c4fcea021fe02d14d9a09f8d9f0eaeed3c55d58ec6eacdbf1435278ba2efcdb898446f0f800b0cb8b2fe0493c45c96ae46b359853fba8913385fad1df3aaaecdadeb5c1a8244968dfc16bd95ea188b090a8e46c0d4b2560ec539592d1e553678e08fc246637f8560e707528e0212d9dd30c9ecd3dc90657c3d123a45810e899e571ab7219a08f360c24a0714851fee64ce9af50a9f79950c9c762eb695cd6854f385dc0445b35a28ad6b4a8ea966c61eb5daf485c1c1bedc094a18e0ba80b3af30034dca02a28bc4f7b5c385810b01b9fc81c9a5ae223744551f9701faa15ee48678ed9b63bba03510def6a019b9624007ace4c34d642bd7114a587f4a2a25940fd19df34195a7c7b7359b8da859e9ed8b39a8e1cfe09999977c4bd4f1a3338600eeb6529c76b4f26716b59129271aa55355dc4b019a09b10e5a9ac77c168e2d71e9132e361392633b32fc2a5e0c7e97a24fbe1863fc0416aca21516c36792cc406983b4c36809bf963534b1143e0c0e9fdc7380875f0f100711716c4060151f15d3c0a1a2d79f93c11ef1a9ed71a9b0e0c11fa0016bfc38a0ca04e4e01a0a11e86dd9d10c241df57bd54b35ff9af8510ada2bf0dae1c5aa97f4df2b9ddb3a415cb417905ee9798df08ad4cb77afb9bdbc7bc9e1e51b5fc34f924e9ebce4f1f2e625af578e5ecfabd7f153984e4291be26d2776066b55ef17979f5f27cbc166f2a12bcb0ce11dabc80eabf92950d9259aebc20e62b47b0c72d92ceef5e727875f00a97d75feab5380290b73d7ba5bdcc8292036aafcad5af8933e41b57a9173e2fb5bcdcf9af632b7df9d5beafc598b5a7bcf457680496ec0542be62183c79bde4a5cbcb152ffbbc5ef2d2e9e572971daf57bdf47bb9e0e50eaf235ff8573deb72e8b0c0cbbe5f1291249d132f0f08e29a022fbbbc5233af455a494abe8abf960bb045bafe82a432b0e6c7eb2bd718ac03dbc1fa7a99d2ebcf4b4a2fdf5e4ee175e4472ae8961623151a3f668cf89114b79d328629cea41222e8426337a6abd3d084e04c6710381026d24d46c79ec7d0f43b60c14406b1de2d07c210bbe7aca90cf3ef5c5b8abf6bc09568818a8c82f958b5e5d30799f0d4df624ff323b2d88e1418a5c143f0bcfa510aa55d9667c1d44a849f603bc631d8763b593c14eb290126e4bbc85cdab4bbd143fc67cb5dadb0a91a0fc9cdfb9cf3bcaa50508836780f32e2db955c044261a9140eca949a1448b086c52e942b34b442a735ed40241cc9e75794e8cc060d95ded79c23cc291512583f271c6df226c62b70caf807a44e4ab90cd02efc7a50ef6dd635804b614e0cd4da843cc53184cd9cd98cf2597a42214b18bf91e011b439fc31350b09b9ed46c89c64e52fa9f61761a74499932cc27d0ea2111107f5f84838c2cb9ccad57343aea5fa08f647d286310bf22ddd8df4f0b1da10251e157b7afb3d66c25aadd80b4b743c974ce74949a845c8163a6bee39166f098b25d24255a22165cfac9a676862f773e989c3920a0ed59a22158b606abb6020ba8aa6148a9c40ae0cb5d416935cc62bb8a9a41f051b4803671215c316687497200cd4e50f8318c33e3db612afa505e5f16ec4c98f8bfda530e2254185e97b84d2017dba0059078da46fdde3131f9af953891111d3672f2bc0a4c6243494066b123d6baa1ec1b1cf8bf87f042a8f0976f30b02303b30d2f4c5b026bcc7e4d93266d67d3f1b640aeb884037a007818b842560cc7d8712b9a6d4acfc6920689eb27956fff770970b63acbfaaf98a86ce8cc612fc5ef3aa0bdd088600b9fe60071d2da505a89f52aad5d447a995388cd9e518f9881c1f51609eb3461b33bc163b62c6e42c24eb1a80ba06361bb9709e1f7aa34b9d853c6e8906bf47b9bcd49828533f33ccfe8980725a0da078184e795f32155ee790a62f2b906e67c137e0cc0dc2d0fe6ef4a94625de347a72a2c2db78021fccb0ce8a286ccfa00965f2023e1664b330068017b75c7d9d13c2d41eee02a0c8dbdcf52867be2dc5de0952a4204b70848ee3b591b6c9c7214819b754b8069ae362e15e8219c7d2936ff071cdd21adb947ab134fe66cf88c15b9a946e25d9c3da2dbe6dc26f153355475660f09b4932d5d049be8fedf7a245b0214cb5c7e13b2e673e1f8a094b44e5c9c294b9e2c9f58458b70aaee6946d290e2ae9dd4d092cbc3784becd981ec3016088b767fee76bffb333e8d8dfbdc1fab827104d266a07e6be60ff13075801205b32a19dc439710cf669a2cf6d025f1f7ababefd57aff93fb83cc24102ff0bfa545120ee5b4660a2163f2ec9d46cc72323cd6a6f1714ddc23700159002ec41b54b6128a33d8a276853d7a83f8edab6b484d066c39754050f3d084e305a9fa073eac4bb373313b8abc14e296f908c5fce823a8058043f900db9e9bd0829249fe5b8b2a3ac5af6801c61883e0fd3a92020b319829213217436935b523d3f90ad772d7937416a1d421cd8da49ce38e4670d4f19767415870c8b52b64225402abef46cec368c515d25dd9264e5c2f28a5a48094c25709c7b9523ba123c479914f6d9450d41f57cd931a99c9493f48f92fad6e70184297591cc07d6434f0c420608014ad58a109df824f8b72ff4712f7b236731b84ef6006c5c4bcbd2621c37c21877c992990b3617f9f37688faaae6325b75d97b4efceb6b56a0def90ad97415ed8e9bdb3cd5ba2b6fb9facee65427c917c68538b1b4a4517cf222455d792c00c4484575f290886a86fdd3bc35cdfd87638b55fc86551666f74da729881049cc6c63a51251b49b36c3b83c577aad962b09c4b76c0b7a152a71218dcb9d8ad3307325bb95de028b52d50ce0c1b4ee20abb068b487adffb3bf8c70c2a4daade7b19744e6580a898415c82717c5a112a0311735db59ee91b88dd4f2c1e5f6167c2968a0c65b2096f000a9c70935101586d3e17f6a0458fb1e98072fa88e0f336477be609d0021ac08a3f48f62ce0407c5563250601d44de22fd09940039a39d87df440eb663a540056be0ad703e1594b87d126979d05b084aea17d0f004a8174878dad174f373af3e1b8d22070edd9709fa20947f647f8070664f18d85bf201db66eeeb6f6784218b9158c0bb1f62ba8fc483cada47923b0330cc5f440fe178090129daef4fb1371746fd1cc11bbacf7d03c001ab1913aab8c90dead788a693557024732226ff9f9b0ba9a357e4942ac3fc1e6c7ffea044c3ba2bb41ab3f33d45414e5d649d38e741ac8df77c3c932ffafc4addf0a1addf68140237e408ca4b3ca2f527bcb3d1635e2aefce1cbfaaf9da1299c0ef219f5afcd54204d4bfdef2f933841de07cd9f28739b2ae6c36f678bb9fbb38a9413807cc1cbefb334608c6e2babb3610844ed8e699569ea39c46fbd968d650174f502345aeb0f720bf26f68666a38792d485e009ff79c149277d0cb07a852962b9d364036df88fc3b6b36cddfb18d5c5707414452709017e757f1056573320042af4c143f81ab66184c3e602018ec2e58e51ee1bfe3d40005b3410f14dced15bd06432de7052455719c3457e0fa9847057f578210e21a87bdf1575c4ad0c43179bbdedc66ff4103febf5b5ad8282da6543625b897a4e89851ab82f03064e2b0381d19229965be1ce8d1196b0b18a53e5a222b808688d8926d7883e079191def0aa0a40d6da227b40bc761b891a612258b6985ee694a22a7a576c54824413084318b5ccb43b4ef84c19df90a2a688d2a192cd3605e303130262ecf8d2b0161a0ca5ebf16d7793984ee5d608e43627591f94d76ba8d330282f86c7bf057ff92a03adf341f17ce7964cfb5b30f914e773d3799ae963c4ce8f0baaf9976d3503b72f60aeefadc7733155ebc23ec1131b91a21a38c492f0ad386e5a3ba9880a6abb8c9793bb8ca515cf56869edd3ed6067bdc5b0567f80593d0a5624969d49fa18f74634cf4c018a6739d2076316ba4a0fd9c07fa4fe656343193aa056296c4733054674f04629b2ab6f08ad308684c583c1cd5a830787dea864cabf0020de0dc775d409059596831ebacd78b643ccd667086568574c280968e23c07fc87a7f55ea03d29aa3f513a7fd64a76f9a3bd9ca17191b0a9b68f86232418f1645c80fbaf7e9bb44a5cc6cd0c8a6fbad35f4dda0d58eeb2947c8b189b8e1a3db9cf19497b5083025440e5cffc1ca8c56269f94144eb389b4a465bd205356bddc0ad35709c28904abaa204a3234a1d4d7231de3d3401d742f20596df661b2d1f702e280fd51877911d796028d4479309660d8a60ace05cbbd1b4f52a2a040511e5298ddcb0bc787a67a4a8361533045f9defc69fdd24713bc6a7b87dd416cb89cacfa530b93aad0bc0f978c996ef8c52649237c9feef372ad0ab983ba609b14f959c2f6fefe90a2f49afa4c25bcab9bb4985d131665a281386b5a47d1a8d4c6ac920ab77213e1b7bc6533fe08fdb3a68f1a505af72acc716dc2525bd1b18d4073cc5f6134bc47dba19efea0a00f30479cfc9166119f1317d6fab4843ffba147390caf00f2ee63479b1b1f5eeba60ee0b3078940655b02d296d195ee16cb8870fc8136b84e965a32226b55870d803e7ea57e058c5a9300407fc2be80860d2ff2726f8ff1174e0ae818279221b532a38fcbf28fad4858cbe411e373ac1bc44811928c88cbece4a9d625b298241176f01862240c9a2d4f55002ca201ef2a823c3d6b4c32952abdb51c7eae38418a3ab2c46a690ded17768d99e05bd9386052c6b7d0332ea1d687d691c5a82b8770c54863e05f995ccf6a2173c335732a02ee8edb8eb187fb2c2026f65527919a297ecd911c7ae6f44628e7a90007686a8c6eaac23e5d9165e0ecd8ad8db44a70028a36e34f0e1833cdd6bf265e5e404ffc7684d76fde22a57f49252d38152f080c40268e0f887beaef9b8ae12be7cafa6b0788d7742b4f0f502290a8a0ffac692b4154d22f7338df0485f048930441a3ffb28fa841c1040a48ae0b7746e4c5bb5928b9a903b34a98a3453aaad257312d16e9d4d3bbddfd33225ec6e4157a60bb62abe1bf9da80753f5983268fb6a138386c4390cc98ecfc3cab8cf76a845ad93644cea8f0f3684c410ca9e9adb5e067e5123a6c015c9ea21e4d2b5bba7663c7cca710711b0b95ee141be08ffc667a1f866bb23e9822b391ea3c2e8aae2623a0233e6448f18b6421bdce400b8c8d67dfa91be610b8d70fac9d08ee85b1d52d8ef0dd477db4e1642ab2d60599ee08d354e0773dfc003f46d9ff4ab48ed7601de71043e4898441d90753f34f371a0ec3b3b50cc152fef65cbdfbf1a69e032723c74d40c6ce6c3b66335a98fba17460af8dd8c0b10859679151959cf1d61a2e2c97397c4ab72a89b4df7cc1761d3c9afef4c26fe6d017f65815c345dd8403f28b361c6f1776ba547b6236c1c9e02d50d31bf34eb2a89eb1b2ee7918029137306342ce106ea1587dce6cadc0706af0a4e98065ea361e6a5945beb15b838a0f20515de0f357139cd58b6e4e72d9ffda09f41d4c6cd10668d2c34dc840d81f2d378ca8907e914d4a38316c40903d030f262cb18f3c449aad68123066011b7dd46b5c0b7a87e20e8d54f9263135891087a7728c3008363dd32a117d8102360a86a78f10e295b553dfca184e402cb2b84ca2a6097e96b78cfe3cce0f9d6cba90c22dc8f3dd77c8c67c14180cea625244246f074b69cf38e24d8b5e88aaecbe2fcc1c4f3d0ca9bb8f3e2c4f6c1da17763e6830f5da11dc29421ff4d84be4aadac33be10dd40f33baae54f0c66a8a9f6b4ac449f79163a0cd51b8296b8ad092cb9c9e331444909f3e708060fb8f152f0eb3ce098fddb86639bc874caed859c96e6be89fb4dcf1ca99e3acf414470a4d1a8804a84bee9dea76534e643c2ff9ab7b3b259041ae81509ceb82cdc3328e437b6f3457485cfd45e12cfdeed00fb08d5ae2c0040ff03b02abe7601c023ab3a49b445557c9203265a287213e1f1e5d3429846654a5b97c4c886c2130a4e45ccdcab7f836d9eb019128bf4d916ee167d1f6dcc04f3b96b800b78e9d9b5c19aeb24aa86dc3d3e926c7f446347cc18691a3d9a670601ed6d2d78339b752fdd10887eeeeb1096f20bb573d3693eb7cfe2d3c36bf4569e9a45417144ab101b0d1f2355a60133f691c5c75e0ae0a7fad5707e49c93a6a40d81f968fa580a69a8e47843b5bb89a5eb70bad25b58e171152f4c1d2db88fa79f3679ab9d01d3c026331afabbfbba8dd6d62fbd00fb5258728afda3c3d0a9a1aab917ea869771e8976bfe3343943212f04368694ed0e3451ec84a97746ae56602ccf3a007bf5637d73bdb551903b6ecac473291cde59761b171c6189f6025ed7e5778138a8c14abbd6a34738e63aa1fe9d5ba3472d47b3c53691c5a030aa9feb8145cd788dc39ddf58e2420735e88ceed6d5c43ccf2e5dcf0bc61d0f1a4333bda561fa7cbd64e07bd9c43a49724d206cdc8ca44a69cc2012ede66b6b8fdf78ec10a24e1d2d83844c0b46fa8ba7a47a3ad73901191e6313f0e55208f5fde369b40184416e8e518a536d504f2b7966b3aa50509dc80139b9215c38105f07d2ed837da528aeade993a59908422e6435db8f093ac8a8a9c9c41831656241648fe40165030da041808cf07f086963cd0d21a4a73d54fd9509caa9aaebc0c71b0aaf7f845e92a9f2ea344dab9462a7045930be5f895341f5969a4a6496ccb9f705b9409a6bc4208565df17007df8faa9dc6ba4ba159e37d1f2d25389811ced505416475dcb4a06e6aeabdc229f6cc6d2cb87af6b263841e186931e3d1d0190eae3280a614c09beb8c451d091275fa3d42da26fc6f05ebcfbf5c4fc37333b5e3d5d9686a8b8530ac78c8d2f4af3527251272577bab9edd6b81141e6443153b7fe741b5252ca39026309cdf2a7c1fa8bb3b3886d413ea5516dc29ae0825f514e2b0c003f6c0639687888dec003bf5e7fe62a885fe909c14c63a3bb12fac46554066aa700d853d73364fe594819b0c61fc4b2cecc25021aa0fbc0f40bfc9cb7e8474b2e3eb8406b2bf1320816efc7f3dd5a199561c597d0b7a42a6d9240bb679d62e0578b672772d387c78a5ac5b93fd056ec5f0470aa8d0fa702aea0a5fd75c42a0213e1943780f8a524e0307bdaac82057029a1139b5d496ce0338c313bfe3c18dc59a2a6c51eec8cffa00c203c961a22bd4e48a167b5a4a986cc40c766c0dda1cdcda77b10466ecca6ea9f86040a28e966591dae28c515881b0611822f8d0f1ea3e26f037f838431b03300956e955245f2a4b63ff740ad6356d4bf3ea060d123f521fc3ec7d3a8579da760f23ff1e254814d041fe9ae3386c67c9354a650262e4f94ea051999d843f792af18433bda8ba076459fa6312071285c7fd1d3b505c1cb263d701ad2a39f8da3933e569525a9f4563ca9c0885fdd8e8dccc8c9e0e6ea114fd58ddb395f409906fd7aa73e81476d170ebb8747ed686a3056eaec5c91ac1b1e81c735e7037774d904100827be11a755efceee2846728463eb6609403f05b11dc3b0c3a493654189283115c24105f3fb2e654214164a270d14341756f88d5b4e4ca329b5c6448f40c2516721248f484c8478e36d760327f043f09819ca264a5e4d80051a496262dc9c0240779282d65fc26a52a592a1bc94b86464f525aeb0cd6996f035d92748a0ffc1098c449bf06b2574b1702065e1b70f3e6b39e3c66ae503aa4206d56c1c489aa6b1cae967fab9b97679e27a6a36c7e26816dbe141634c5711a8eb1cf02e47ae0c08cef51a9388a190aa5b6dbd6bc8327b9265f0129e5a06f656e5022c47748e339d93f6c78ba323bba8204ab9f68c2972deade6b009a10451b0cd0975f5ab452f181235a232edd2986f943492b72bcd374b9116953055b62aca944897aa440d9e2be190c3ce204371e9741170c6c1b7ed206b145e9cf87336a5f313dd640b33f5a1dec9b50c871d435baad70d118673794c0f979da00260006a0964720732e0077be30e2f44e589d0aafbd49c35aa7d63274b0b9dbe9d09268d3edecd5aefcd30fde2ba8599dacba5621e87babec0334a91a787453ecb06043d83c18e583ee6118da9a095bcaf513a0c8ae465caf795d43f1087e9168cb89de964e151be2866f61d5e62a8fd129f4f50bd2714542cb489f32996b72304e0038458d9f5c849cc15308bbdb0508e1b78515824f034fb9273a1f636774274a4f9559d22137b354427b3ac6e56e8b6d617a221e69a77606a69b80b218e1e1adc30185b2a95b9cde8caf219adac9ac3b283439cb4b95ab7075faabc545a7d187c65ccb48e9ee87c3b751b973749f54fc83dd67b12eeb28dd5f325cefaa51643a232a46c21965f7d14e71b69ba146a37130e19926118c7afde82524711aed7cddc579a1e2f6a61430a970fb5cee87f267a811a6872aeae525b550bab81d3e7150e15fd6d227b648590442a10b3df70dc117f948be007c239856a0713cc077a5f17b7d0a3bda3b47dc323550e85932f60876f2d3eebfe170e8ca282818113254fcd4b16a9beeace27472ed13f1c05e9e90513c9fe2ae4964d8b52f3e258c4ed8841103e798ebd4f6240bc5ab4cd09b79bced8c823ad5398f78d697ce15a9b611dc6422cce3904bc1b7f22dbc85e9ea8be6f30d8a8229b59fab1adf46c275d393f7942c60f5f77083a760289e9a4cda97c173f8b869e83d1042613a8968825f8c738f429eeb0d4241ba01e95d6b2f57ad252764441b25038a146a726f4cec5e9a4a60a52f392e4f84729e8219945ffc2aab7ee3b1b72308c1da74c4e96ef7a2d68e4b96d21766a1b33ccb59d1ad2807086524076661481366110e1a39f32695595088dbd2d1b0318fb87b7518617a784b6f6556336483c6f6d91b08ed36eec026ab156b016d1a1c7e0f8b29bd81d3e75439f20c98e2afff503f33a957fd7d67d6df639451608f37557289362869c6dcad589ad34f46975ad2b896a474cdaab4b3fa90c2c0feafe7b5de8f3d238fa281c154220bc782f69f44130bd334cf2fee548e73f2fd53dad9ab8572b387af061c3c150858819ad7c620a8001bd9f21033f186a71bd395a4f3a291e9414d55c99b9de6669ecdb6f79be8fe2a00b08736a2ba87e1bbc82ab3c57759a14fd7a2c4e52107be4215af13bd1383399fe49dc7b8fd2818a3f60882030ca08cef8217e0f3b8f549e8cb1ab4624fb4bb50a7909fb183b44dfca8e304657c9aa7fac1790163ca7d20384e3845b203d4e1de7f1a8e0042400465629a11e1d57a01eba9e4bbe3d6567a2362b68029a4ee2cc3bbf8d08e5d7069761dcd0d157c38f1e7d10d7ecc4dc87b7b43588cdd1d4228694211abe851f20e70bf2a6bc618a21d846ccb6964a8e557b4a6fef014ba3215e5dd0be896478c42e31f08ecc78cde333a79448fa2da2a21c2721921d602c61672e8c2b0f664e704b7189b15fe1021c9d58087980e5496a6b34407f5007a0262c45fd32aeb680f62988844c413a4ae6da6b91768785cae7a8915c9739c60023e0704410a3460b25472ff0000000000000000809923286321d8591121f50accd168ec5d1111895ce2d379b86ab6d9666b3a33f1e9ccc4a7b3b8670a1b0afc09bf8dff46c66e05af80fe0d50bd0b56f00e46ff0bcc09b8c043ee9123061b4bdb11195cdcc14d3597b296e63059022eec605cd4a16e704107ad62f6c71b74d25f4c015cccc1e4403708c0451ce806177050437385db66330c4267e0e20d26cb414859665ba31206a10adc1bb870833e1e62aee8f1cc618c4d506d382ed8505cac41b3d9e4f6a1337e1c112ed4a0c7160fe29ff62a508106f0015ca441bd9826737fc8e8e03a68d0c2fbc5fd48b2954be70c7a1c58a8cdeeb719b4139bc98e3fd46769cba0bd78caa9723f45f80a19f4302b46108f9b8f7e320625c4d4716799d36e4f5c8841932acd1ea7e984419714774ef29fc7098341c9193d1bb34b847cbfa0a4928cae8f538eddbc17943c112b7ba6be0bea8fc6ee0939648ffb20d7e54db2676f419797cc1d47fcec71ac163409c9b386acafd1992c28413bdeec5d9b7fc658d0c22e26ef8c397990f70aca86bff297cca972da0a6a49e7fc8b78a9821ec2670915940ee27754d3d71262a6a0c56a8f344711246c474a41bdd2326dfd9492e6a2a0d94b5d8a0ef1381a42410fe3d1e5d8947b823e1d657f8bb31374f728be2a07fab7a16a829e3cde7b47f75e7c2628f13b8898ed453ad296a086adebb198242e94a04e92143e8e73dcc7ef2806709104455b5367f6c8cc223c48d06432e4983eebb9848fa0a74a9db3fc344c9abc11bcbdbb0fe5f122285b1d9dc70f97087af8e6da9f7264bb3c04e53f4c64f038ee30668d10b4302eb1f285907c3112042de520d66d0c25109429cf62e21ffe40c92984bc8b1d9e5f7f3ed03f37276ee69ccfe2d60325e5484b62168f9f520e2e78a057c84fd0bcad39b0190169062e76a0bfdf4ee6204793810b1d68299d8ebbdb499e8ce122078a645c65ff2d03db801b374cd00217802146c7e0c68d5a708183737c1e223c37856021a4032e6ea059c81af6833b3bebc8387061033db0d08949923e9eddb5d0452f2a2454ee585e68a1a68acf6932bbc98e54b3d02dd9a4db9bdc1866c8423fbd30da37f11d786a02458619b1d04c7ff33f3cc70c5828e7f1a3f37288b5e7493ccc78851242a4ea9f3c95337157dcb1f256c43cb542dd9b20a1275ceb3fc70c56281f9b2cc7187256a18ea6ecb98350d9d2f7aad0e2a70b1e86d8217934a7429190c277e0c1e8c79aa0429d28892cffdb29f48e219173ed9e346253d08d19a550731cfbe682e93a83147ae8f8b7e922a5025998310a456345f84929c4989f1185de1fb38b8cd8a4fbc019a1d0ba3d160f1ee54ca6d40c506811fb41472f214f3a8f5562c62794b8709de575e7ba9361107201b320039298e109c5336fc7f183b0d0979381199dd0d3c70bcf601d6c8a292782199cd063b3ec81071b4f62fc38a200d9c40c4d283964b38e63d7d808295f24408cee8051c48c4c68994ad2ce7faa0addc184e279ebea5d462a7dfc25941c49cee7599793889650a20333bbb64825decc10091d488efe0d5042093d16d216e7e399840746182df812a860c6248e2733bb76cdc62bbfc80003c80f664842b3b90fcc5b3acaffe31814f822015f7c91802f3210812f704624f420668cf6cf1d67ce190c1f63adc6a0800628f04502be480042424b19c7430e63c302a305f92fa86287198f5062ce6932eea36cd28d1be78826e267d845708b9504be48c01709384b43331aa1d5c7e0b9deb2d7a53423f4cd71ba888e35fffdb908faaa4ab7dd198ad06272a9c82c4db3dd8165462294eabdd3ee0bd79d4684b6f973ec294cbbbb72082566f0c9c167c710ea6477be3c9dafb6fa42a861e291dd23bf9c7c2784b659fb4372184247491c841279b11f6c774168e923edf398113fc68150fe5ac27f6f4068112c5f3631fd0f6adc8de4382a8f1fb40b511563e6faa0bb97a7a9d68a301ec7076da62c63884cca9483f7a0779824e743fce8406f3d2821df6f0875926d73360fba798e3273ad886983073daeb5b56463ee70b5a7d0a32167eca0bffdb876182663cca88326153eb9b9133aa8713375ce7ccf41cf9e27266bc4fcdc7172502be7cbdd18d3498e9271d042fd49bae4a1cbf78783561744536592d2aff20dca94c51077f3e598b41bb4ca1cf6f365a87c631bb4c86deed1e4e0c31c856cd02c779df7846bd0c57c638f77eae9d0a9414bc17374fa93c7e05be00231280d5a871f7490101ab4890f1d9e1fc7d671dc1934fd20dfe29b25d9b09941c91192759a8892102f831a63cc0be5814fca9041d1ba0f43e7cd18b41c271fdf5389410f2f73967fcaf9f2d48c30e8ef61a8c9f75031781418d48ab45b593ab21d7f41ff0f27f2eca789c9242fe8b1fbc5c58c5599803433baa059dab4a1a2b42f3b9ac10525264f32630b7a1c48b614faee536d6e33b4a04d88eaeda0e22c65070bc800838a0033b2a085f79c42cc7f72e0fa12666041afb2c8703967da725b8430e30aea0772bd3142570e16fc1e838c0958146658411ff9482c490867544117dbcb967379f3459e41053d8c955fc946424e7721c48c29ece1e63b92db98f25b98210572fcd1e6203f90664441d7249d71a73359ce0e28683a9fdb9d32bc73ca27e8e2913a4a39eee87f368298e1043df20fa339c74c7efd2d10339aa07b873012922311e34cd023d11c4772377b64cd12b470e92c75a3f1c1a628418dd84a19e94348186f461294e8cf48d341b0e8b00a8310a1c10c24e8c174cc51d31e152f64c611d448a3279adc94c20c236867b13f6776e613661441ef0b296e4e12bb2f3328cc20829231ee5e4a71e292c79b3063087dcaf597f23a753dc66380093384a05c5d8cf4ef41c078815901660441938e038d1f5bba4b626600419fb8a113df6359e7a01fe89beda32789b7e7693ed0bd5398ded01099e3f48c1e0461060fb4f73862ca1612f63d6986193b5053a68af9bb0c15e1357d98a10325e8859c39fc388e2c7c72a0e6bc1c26ff741f1a8238d022e67034c6cb7298690accb881be55d9da278590fee019365053d0c890b7bed47fd742dfb2dcf1c7f1a7872d68714e922f4479c8f4a99a45359ec39958951c6c218bb2c7f1475d86085bc44249a61d6db2d88e5a5253d802168ea620b13d3bf81f0c321ce9a857a8af913dab73b0ee8f768532f631495bb44237bd4dd5715607d339ac50f3247f84749ee394f63b6cb10a35c2678df1eb3f083954a1c410c25bb49f0a3de79a8f116fa2420f0f2ec84bb6049dec145a8cc5e8f863b7ec894ca1b5a6effcb25731b656872d4a41b80529748bdaf39cb0c9701794310a25eb4cc80f1f9dd3e016a2d035e43896f2e50885da36f6fb49727b9be6203a6c010a4d8307f39321dcce3d276cf10925d5c7182ca4d1ff38d013ba56f2549eb34e28de12e3c6541d27b4f2378df73126178996b0c52614191bffcc39b4fc675ff0f70b2855c602b6d0842221ac3bf29ee7c8d649608b4c281b2ae730c6c841f66cb709ca18c304601092610b4ca8edf3dd99f2a7e8126a7e8fefb13fe7c91eb88525747fd38f17f383ec9baf84124c7753dc916c4109ba41721274a348826eac608b48d08d146c01892d1e413748b0852364b04523f488c1f2ee6878d55cc2206418691106b660841ec7bf8bf983f0f0c82e429998680d63520ad628b08522c80ea44322471dd51689d0c32bab3059b1bb39ce1cb640841eb625f16023678b4368915316998cd8c9623f06192948c08d1bde832d0ca1847dcd0bcd7a0dd16c5108fd2b6c46d60bf9137b1b6c410825449602660f0f1fa5da0dea570cd9c320df9683b90d7a56f68ee3885fe48f6cd0cea6abeab5253b05d7a0b9e53879fc38e710c253839673908f2b250dca870e39661ef1d2646850634b84f0d9a01fef7506cd3ce8304e9ea8ba38756106a5e36de4f63014062114f4aae08caa8b32282272b6af7d975e3e6450c634965bcc1262889d311476d2878b414de61dd4eb6745fe7418f48fa7c7d3c7cd9dfb0583f6759f1f93992f686d13f696e38bfaf0e2053df6272b8f1fa48a29a50b5ad8907ff25af3e29f5c5032bf694c6ffeac2f6e41bf927cad18bc3433a7853c437e2ab98bb2a0871d765096eff3d68b05fdfdb7834c93199e3bbab882ee6d6ed16e631ae326185d5841ebd0613ae874bb479d2aa83b1f7472aca78266169b724ca9e3bc934f4131d30d4b4189f17f93db2389c74b14b4904b377448d39e1f84821ec4fd2c5d3d1e26764f50dbc2e3fc0f3f67a79d70580c5512d75513f4c0f4c39c2da41cef1e38822e98a0545e30cf3908eb39ad8b25e87a495357aa1c25a813d1e5d25979e27992a074481e1fe89d88f58d043da76a4eafb46fb23e82da52e2932342f6d8ae11f4ac9bd371dfd64fcc1641fb70ded69539fc4b2d11927cbf8c187333043d8c1db557c8ff48934608fa946c8ec3c8dadf972028f521e3e6fcd251dc80a0fd5b79e89093440e2b3fd05f7236bd73d9dfa8f8408ff12f261a3fc638630feaf01b9267d090077a880f3724d769f868076a871542e738f6e842079a6688e1439ebc93e30e31749103354df808d9ea3d23c6c220b4802e70a0e7d03962bc09f934296398605bf02c38c8005ddc408f3fe307db5fb3a9f30f7461033d5c3fce1477e66a5c1ab550332e9c850b3e61720ed0a0859e3d8ea35331493cfd67a1758eb3a32255b25024dc835d88c9f4d13462a18490a5399f5742a0010b45c3634fdebbbf4277bbcde9f72efe78b02bd4f4b1767c7cd8371b6c85529f247dec1792e628577e4083154a5508ba1932b37cf0804063157a88f529e49c13fd22518592917ccc5c4ca3eaa4910ac567cc23cbf651a15b556c89cfb6d3e13e85569f22ef74d89a420b6973882c99313373e3865181186598e04a4137f2d02005162e4d76c77188ad46e1658fee8311cba0210a25e79dcbaff91dd7c643a16f9b78e41e463440a1a47691fd388e84415640e313a7021a9e20834627aab3ec0fc93f6870e24a40631347431347231375630034305146d5258c86254e57229e43d6dc7a18841670812f8adc40a31206099ac9a22ba6921cd2a0849e4ff2c7a5b41dd56e3426a19bf55b969d989c3ac80834248191281a90301a8fd03aec85d0d61c47a83935a93fbf46a8679253fa0f352394e0d1e8fc5c5e7c0cd2588456e9afe3c8234c1c8d15a16f7c9833bc6413a1fcfb075997beb2558b0835fbc41cb507ef112f72082524d7201f326d1e928650dc926888dcd0a52716424b5fb531c98884d0ce5ddf25e578b47883d063481b3a0eb20942eb20640babe8f8c34781507ccf638bbb39669d070d40a865279d226cf2f677fea045b6c56e0c39c4e7703fe81fe6b155fedd073d84ced3645a69ef6b3e68692426cfe1d67b50427f7cc9a3aeb897f5a007f7c1c791eb766e93072ae4f6beec298c073dee7ab9c9de394be33b38db99ad1d74ddccdf51de0e53a44d1db47c3252bb1d63f11a3aa8f13d3a12d9cadb2c99831e668d31e3b355aa909483da1e9ec4f5e5888316f2464a217cfed9d3e0a07f0ec16c3c5e6f506762e6382b59dca0550cf7612ca236e86ed6f1f127c3ed65831e16e6f2a68f83c61af4f85b31fb7e64dc8cf38b0c30c0011a5001192c508006be48800bca28c3010a307aa0a1063d9da7b4373d098350194fcab871038c2f12e00ef02f22d04883521dc665e7e940000d3428993434e554736d1f03d0388312b941d364cdc8b7dc0cda797c10ace4526896cba0f8e8c4f6ebd8225745830c7a101d1ff4f4642aeb688c41fbd3fc8ea6f2c609be18b4af9a97ed388ef6a33c0c6ad6b7f030ace370721830285ed9c93b9c94bcc2f9053d3e66e9d9dce7c8f682964ebe7aca2dd5e5c02ee81d45584c129e4304b9a066e98829cb73bef1200b9028d0d882e2c1ddc4b59be5d45146b1040d2d281fc5c7e9c2f6c69c3c2941230b7adadb9368cf5c1ea46041890f1bc3e5989f048d2be89ba3b7f63065bc9866251234aca0e6944248f5b942a33734aaa07e5ff5bec8472f1e42830a7a847ccc9dfca7a0278d29e8e9bbc2848f280c42ee65a021053d3f0e3fcc632a4ba647414f31b24b7f745e9b2f5038de6f0cba191292039c8c0c5418683c41095b1f45f0bb69b7300d2768bf1dc735bde5ac49a4d1045d5b738c6f712919d060821a3c4ee7418a4fdd81598671028d256829f9c98de7daad8f72051a4a503347cafc8ac9a34c9f24e81ec4d87f17b7fad84682122e3169eced62faf8084aeec843d484cb7d313154a06104e53d223a62bf3c7e8da1510465a7e7c5723e22e869236f7f5cb142630827cb71f027112c85093484a07f757e20d2313e08bd05ed0216b400033482a05c9e6de64fda5f9b0182d6510af6410a5e1f7f0e59028d1f282944eeac9434e37c9b347ca099458ce81c96c74b49028d1e28311a39e74e6abf0e6581060f942cae41e25c9c49d1d9819eb537e7315376d6b80eb4fa38f9d47fd491831c8d1c683b216547ad23913912062183032d867c5e1ab5f924ec5ba0710375c6638f3cce83c4fb346ca0e4e7dcccd8993493530bdd267f645e8ea2c5f1fd07e159e893c1436fee0fcb9c220beda443cfc7a039473d8985be7136c45c43c71bf35cc042a99c3d647b6cc7e61e5cbc426b2fcdf3db1f91b94273090f13a37356d6181a68c1a66001376e8cf12d68c1a6e0d011b868855e6677e12c6ce3dc87157af84f3e79375f851a5288b135a6824799ab42dd9d9ce7b13c54fba9d0e3e4403bce313a298f0a6dc2b423f918fa4c3f85d21f699bb577590e9b42df0bcd8b71db3d967429d4b3fc418e3564e68a342934bd2fef60639368d5a350ca427c14414e5c332b0ac5b3435e3a0e2ab2b8a15076c3cfb24efc296b41a1a7d47ae9b2ffbde3984f68a1a27b33b7598e3be3893acc734b2794f860b4a62bc9d4877042898cb1cbff2a827b64137ad88a639d39a20935a4453e3fdeb5f3990935e3e60f31df61969f98d0c26d3e99fcb94206f312ca7898a2e2c3ce39e8a025f440dea45f5bac84fa7df6efdbd79d724809e5c2de75ce176639df24f4e092bc859c3186dd9c24d4d00f6c4ee348e8d9227b54bffb93da8284ba39f28bf9db6fc7a31ea1d58c0799e38f97e3e808eda335a49cad46e881c4888f934c1e8518a1a48bf124c5915cee712c420f71c37dac8f9b5fdc22032e14a1c7532959977e4833f944a811f771858e7dbc1f4684bab7a9fb2275c7517c0fa18e95872022e13b74882194cbf988b9cd6d3a2485d0a370e65fa937a51c332e08a1e45c929126a69ef3888b41a84162fad8967441a89db92da47210a76e130835a242c841bdc707800b40682691df4deaae01177fe0c20f7483f4416fd7b9481e31f102865109c63041f900177cd02252c797fae9f49fd983d68159674b19c2851ece31d47efe503ab9933c50e135019ca4889430981760503baa98e2c7dcd14746bea079d98667996f3e0b7a418fe13e6f0eaf3b8de7baa099c67cf2309c8b471b17f830ebad2d286539c8edfea02662d28292b13e90cbe9c38b2ca8b1492407fd295e60414916d767599d2be81263967579fde35b4113cb2d9322a60a4af6380ed2c49f8f0a3e1594d439e8fbb0f814d4da9de0b1fc52d08259d04c97f2e8a47414d4aaf10bddc814c7828266963910f7103a6a0ff3046d72e59cf33c7182ae6f9d1f861c9ba0c9bdcb64e5c8c23b4cd05369b88f3deee8727e4b50c25ed65d8590030d9512f48c27c1529b74042f92a0e77db01d858848fb3312d42c9e21c794d74da51c41c9ff1fe539c655e8d3086a8ac8261526071d1a2b821eb88cdb5e64b3ae8a08ca27939e89110d419febcc8fc3e4277c21682f55b1bd2b653b57005e0441b789b28efa93c494e32056f00208c7759e3c596ce6c50f748b39380915f1c207eac417a99882db032d37e55e7afb585387e1811ee7784ab6ffbf2e2b3b50ca2fc6586e51f042077a4c6cf8103185ecf09303f503cb9331a7cb32398f0335e5d0cf61e7fc066aa6f78e24b46365bdbdb0813e99b31dacb25de730b5d02d64f8ec9fb05063a185f2e1fe7fc761320b255d08571b7bca42918ecee6ad63987a31166accccf561f7c453ba60a17e68b299fc155aa4742f72396ede98c13057e851398c192bb379dba9841aad503b761a29edb04ce11aacd02a7645cec1b3243949052b86d558c59fe277d029223fcebb2a0e6e36879f4763eba9e0437266b993cc97a3e2d4a3f1c38ea22a2e3f85925fb36fa4b63364364539b40796f15270162172bc8efc214599c2d9d8cde68ece328a64aa4d229eed8788a2998abdf977e6edba50a835d22ed9c46e5284c0a8018af536c7e68f753f9f4ffc1a23f64398ff771c9e3893d6c7aec8dfb613ba68bcffc755ee38cc09d2f888e6e04d28319dfdc63b56f8683441d5798ad8b8462614ebd6a0d59b61430d4c68e93eee68d85c4249612657c80d99e2e35842af8f502e1fa984dad92d45e448772e5794502c74489c6e05cff74e420f62e878cc8c39b9c348420929c3779de51c26bf44429f2099d3e638727b2c81849efc6256bf4684ffdc23b48bb711390ecd11bac761c794ae538dd043dfdf3acfc408ad524bc69c3bff39f945e839fe2c4b7b394eca6da18622d49bccd99dd92742ff3ac9d712e7f73a83087db423a57c5a1deb2b67a871084d2bc41ce43949a2a132843621a690adf8e8baa782c01709f882c650a3109fecefd548481d42541d660fdb7106b154f29a0d8f3e5e10bbdfbebcc63f092707e2903efbecd58c4967016186e787edd49d2b7f28e6841cb7a51f8e25e468feb26dca1cfb406ebe77c48f0ffa6fc7c1a4cf776fa96a418d3d78671f1dcd648b4a0f947d4b7ea5f278eb50c14a2049052bc64143a891072de6b41dfdd7b37f351515ac188646a88107bde2c7f166cc538d3ba8f1a3d9f91c31ce6ede0e4af8e86326b3cf15c25c07f5527cf61c5725f9d66ad041f79a90180d752f3f61a0c61cf419f1949df7397f2361a82107f52586de8e3b2c4f21a6461cb4d8fd414e7e61a5a1061c74f9485a39647ede71cdde70ce123ec7cc0d6a6faa8f728ee193f5376b831ab43dbc982dfcdfb9666c50377766983c57b279b335281e7da41b931d79a7578322db9dad367d6889701ad49c76325d486574c7a041edf02599eb37e5dc9433e8ddff4942471e6666d03244664819ea32685d522223ff92414f539b6e2f7d8432cb18f4143bebc393ae768b1831d4108396f27f1826eb8f07958541ffca418e2cbbf95e88c1a0a61ca6d78b98636408f98216f3636cc4abe360322f1cc74c9a335fca4cd6e88296d254f80babca09a9aac105b5a3909397ffe6ab0f22c35d50c61618d1cfbae721876b41bb603ba621a4d0254192052d5808216dfc307fe55881410d2c282661e44ee6b677fa2be861e4a5fc25e53988600d2ba81133e8a6c8bc146a5441939d9d0fa529a7a4931a54d042c4fa9827d49882d6153afe1c53430afa66450c153a320a5a8630ff1e730e3bc506054d2446644d1ae734e470428d2768613ec8f30adb095aaeccafa1ab735c3766116a3441bb642ef13b90385d37116a3041b39ecc8e4d7f437009184bd02f8ced56f6f8e6a79c400d25e83af2b9c6ee33864a971a49d853c4cba4f1fa9244052b461da48215c3625003096bfcd87b6efc83460c316a50e3084aa71c4e7fc7c7d730821679bbfd51d0e01f65a018358aa0e79ccf1b29c66c413eea0435885063086accd9bf62fa1c61104213d41082e251bf6f8dff6db47c851a415037cefb2a864c87f99f186298176a00c1cc31c6adda30fd40b9adf248761f97eb52c3074a88fff82ff7dc831a3cd064ebde639ba0533dd9179021c65f600c0a2ca1c60e4c192b735845774866a5860e9490bb90df59ff32c260a891036543ca71c81ce5f46fa120d4c081d649c63f565f7c50e3065aacb316ff979dbd1908356ca0264d2142a5e0716019a985667a316f1ebf2e68a18ec65ce64796b731a78b59681e9ca7d38ed056394e95d1852cb470793e11e43522dceb4217fc9664eff49ef22e60a179e6d818d38e42e7781884b0042c7809dcb8f12560c1b3400c091c42e8e2159aed4dba4fed15cf63085db842f74e1e77fa3ead5093e7b0e093c38d6f1f56a8f96e1f3caafae0dc5f852e1742729cfbe3db945785faf95b62792aad9e3e157aae64bd59d288eec751a17eba90ff762a665c3f85be7d39b76c84dfa5dc144ade77186296cfb1b62e85e2414e5fb73d54969a149ac70f1fb4dee77b9947a1a7dbb7ecf351778859147ad06cdff5238742331d0f3c04cf8ff6b3a0d03a908e4734ce7ef8ec27749d0ba593f27cec69e309fd722041c46782c79dd2094dc47d2bc4cd092ddfe4f0d27d949327c926f40e27d1e1858f3a7b58135a9cfd10b462aab70e9209ad3cb2d826398909453ca5389ee38d318779093565ca12c27b798e595a42f140d3b8c88b95d0738ad9f12fed394690127afafcd6819d7dc81f4e42794db539a6bb34e38192d0cc3b4c69f2698ec3bb486821fd684c193f48289195f4339ecc65dc1ea146e7fbc96d9d63b69823941c77785012b293376b849633c756390e4f462873a9ebeb4c3687b145e8f1484712bab62d7e9022943b8f626b5f9a9313a16793089bcfe36b89293be802115ab8bf8fd7f7fe18cb43e8d1ff911f879333cf6808656c4bbfeddfe3d0561884c8015d14424f95b33d8e3524832e08a1efb9ff66ba0ab237763108ed7b464ce2564c178250cfee23f938c4e38a9f40e8954c247fccd641a700a18cc9791819e4b35fff0725ed450e67ef41fcd0fb419d0a3bbf112c4ec77dd083fe388797bac861cc7c505b3c0e3734c47bd0a378153ea4cae72165f5a06e6eb0ae8a4b1eb4b30e926c8630735ac1839a79e2060b2fefa0c8c7d4e1224e574aa31db4b3b996bf9836fd7875d08287d18e9863f9bb55e8a05e848abb3f59178cd1c51cf4345b1df7558ece98eb2ee4a0560c8bbb39de9c26fe715037f423789c864bb9c341af20e31e39c8dfa047e399055f88d11d402600000a757866c9516be50d0c16fc186398008300802728e9fefffce33309007082fa113f569a03f310a92600a0099af55fe498994ece3dc040020098a095759ca175e7442eb2040028419dc87158c13c0e73e221300020098721ef593a99d9ca3008552d0b5cb0cb0217d01000800465f482f87f7c7143f247505c2c57f00ab5119aee28c79f2d488aa0eb8ecce57c965d524904bd35fe3e3a36f7609d21a8edee1ea60d7d922c42d03598c41a8daacc54fd000041d0655b5387317f79f903419befcc4e1fc57fa06978858a1d2139e9c4075a7ce420d39f7c5c47f6408bd9c33ed7c667bcc7032d7e3369e48ad51ba21de8615e8f7b74880fa283e000003a50ee3a07bdcb39ebf79f035d3abeb4f7a638b906000e94ccac7c1d8866be8e030037d0e2c46c29c7d312b373949102158861028402006c40366aa1e6b8f24f413e8e94fe30880d5ae8394a9553f2b83fda4c854108073666a176df67f93d093f3e36c1862cf48c78e139fd8fe49c130b3d2ec50ef24e634cc98385561399f4dcb36e88fc0aad5284b66b10cd3f63ba8208d7f1bbcb258741be48000cc848c1025240060b5a0003325270c02843056418ddc1462bf46ca9dbf35c869ee458a12709316742ecffb82a07d85885d6d1e58ea3f3d7ced2e100178481813641aa42e989cb0f519b2f434a2a94184279ce1d5fca3d162ad4aa1c07791fe9e39ccd29b429e9e036fc2a5b58a6d03a260d1da69b593987f9c046295a6083147abef25cb9710e839031411963fc7905dcb8d16598408c511c5d1eb9727646788984c78f72e02739512897630edfddf186f38bb1110af54d7359ea085d661a03852239b75f129b491ea67d422999cbbd9c9527f4cf7cbb8f73dcd972649dd0c39ef894a3f8f9937e38a156caa1afa42b7b386f4249dae925d6568cecda8626f430d7d4a79c623632a1b7b779cc697b0c1b985033a61c4dd86495db52ec127a1c2ceb850f0d1642c68625e846691b95301b94a01b1eb031899204ddb01109256fae8cb791b201092de60a9a657e9326661fa1c71299fcceb2cd648a23d4f0c16285ddf2e89a1aa1e75ea80ab119a177bccc928f2354df65117a1c85b114642446b0a1083df6d2b6b28bea1cde89d0e26e420e99940e6c2042f7c0dc37a69114be2c20b071081b86a01b10b05108ba510e60831036001b833811d8108466ae3974d47e613ce50442af0e69eae3c02e437700a19485cfd1e8bbc5aafe0fba45079af7b91ff42087feb039a5ecf8d3077537237224e9e8def9a047f1c17cf8193e54a6f7a07d65b32a89099995d68366917e4c32852493eb3c2811e243744b7a9ff4e241c9dc1916a3745bdbbd836231c77515bb7c236eeca0996ef0683c792c67317550f278cab15886fe0d0d1d348f2f67321f09e76e9983f271b88699a9c84189bd9ec9aa58f551320e7a583a4b9e3de57124c2418b2d0b9e59df1bf488f9e8f57fab53d8dca087e9734ea7f96a835237997aabc3e57bd8a0cb878995b3594eb664630d4a6de84757a13b4c4636d4a0f57bc8e6c83fdbc55b0e61230dea47f515413bd6a708286ca04119dd609531e68bfc1d8161e30c6a842f8d968cf8cfe03461c30c6a5470ab1cbbc6da3d0b1e6c9441f128e4b83d460e6c728cccc1061994705923b3f36536c6a0e62ced380a49dde1f362502442e3bf4fa8f0fc01838d30281f69960c496377f03e18f4f4f1cb96e4589abf5c838d2f2839fb78e828a56c7841c931e5092e12eb639fbaa07ee838ed9de6b0de0617d41cc2d907bb67086c6c41ebaef8d43ea6d11e6c6841491f3b92fdf8615a056094610223031694e182ad002b6c644191c91c11fde16bd884680736b0a05664694e76b0e01136aea05efee07a437d8c7db9aa66810bc8c0800aca0f36aca047f124bd77ec7d22972aa821f6d147f6c13d659ad00615f4abbad16c296f83745636a6a086c6bcb13d5132ee918212933ab878ee4641cbbadbd5e6d15bfd50d0676eab034d9e269df5043dc7f0f13a8786b4454ed072ea642739c72966b1099ae7e4d1de554715c9e08b0d26687a9183d08f6fc5c1c612f40f76334a50927654e22749fe3de50a3692a09d477a7e19393664d258c10612344df331b9394a196c1c418d9ab0fd31e49f209122061b46d026c489ec29f77fec4f117489e33f51a9b74104bd924b5d6f8c95ce2c3686a0dfb74824d149db51c88610344bde391bd93e62d5031b41d0ef9285b97df3685287c9810d20e815328dcda54fb9b3a36c60e3074ada90b3c410a936f9dc82315c40c60c6cf840fbce9943594efd915bf20d367aa0887b9cb2c40cf93cf43cd072fcde7174100b8f363b2056c8e1a3ab54a51b6ce8400fc7f552752697680fa3041b39284bc77c8ffd18076aede710c374e4066a875327f7918751830d1b281e847b20b123485bde0b5ed442178f9f6172d57ef082167a258fe27737f459e8de718e48f921a1e3cb42cd5f9b7a32edb1d02bc74956c51b167a0752bfd729e4f3715fa1774ec9524c1d4febb8ae50bcef634f92c3b4429f10365d47040fa12dac30079d89c1642aab50a64af227bc4bb08fa8424939c924f32875942c990ab5dbcf627df2b7944c54e8331f72ba9c3f472187a7507a275e078ff3eb7a5328952a36b62a49e6e0954209ade561cc871cd776a4d0225d6ba3d02e854d3156cc7f0745a16dfc58e9e3bc1b5f1de4452874fdcedfd15de697410e78010acdcaf3e42063f6135a18d90ded8f66528e7842c9e341c87de5414a15ea8496dc337d789c5ca77342c9715052951139ab76193c046edc38c88b4d68f72725d397df527818c00b4de89b53584fb67bce516742bfd3903252b072092e2694904d71e3f72594ab08fa6ffb1a3f590cf0c2127a50a982d5c94725d47c293e8877a9622c45052f28a17e57c82d95e1430ef649289d63cd71e43887474996845a6761d384579af06e24b48a29d20773399c8f2f019050fa630f2c7dbaf8abb0178fd04ff65c4abfc3115aea7027bdc778b137b24014bc68845621eff149f0704f642f18a1a6b12c12ff9f4528752739cae1869f0a8f14a1cf858e560e73e81017277891083d77fcf2e361da8e63968108bdc3d1f77c71318894d7052f0ea179d8f0d61b3b2d7861083d540e3b6ecc0d332272c18b42a8ed7597b9214e985f08a15d6c9f468e3708b52d7de620b5a498a8b2e08520347bfbeb303ad0df8fa5c18b40a8a9ce234de45caec10b40a89d398a701e516311bcf883feaebd2f1fc410af189d177ed0643ec6c6951806a106630c3292bec800034a30c686918077c1bbc0026350e0c68d5378d107258369f028eb666cddf970c877dbee41adf34c2d16392fc7297ad035bb76b0539ac2d3240ffa78667d89ade1419f2d8f830e6773074d7ca23fdbc5fc21bb1db48c59c2b26b6db987eba0865678d6f620323774504626869ee858bc349c831a43266b3a9dce6972508356ecf70f824c7e5c1cd4ef58f113d9729542705024861cffa6f9fbb19c37e8717df2cd3d9eb278de0dda8bdf9f64e95853ff6d28b43c7336e8a9df4726a5b09bbe5e836273e17f390a1f6cacd5a0474796b7f746a2ed34e8d93606ab4ed96211468396bab30749627c063d9e1cca6772ac18c366d0b3e66fa59cda3268351a216cbe860c6adcb6049be86053c58c41e98b1d6f9cac8841b7ba0f3286028c1ea8141066f2602c1087c3c1603814c4f0a43df31308001824260d452291704054a6f501140004522a1c402a2e1c2026181a18160847e250280c0807c38030180c0804424140401c3e09d4743fb4c402f0b9e5f87330787dac31d48cb91140ba87834c84e809ea007aac63539510aa2094e28cec4848de0e3b8abec1043e32b77f854643096d0fa4cbf5cc87897e48d91fe43d9f0773d877b7956981b2d20792a23b513c022e6845573b75b5720074529e9cfc7b48c2b9159d6a33cf44c3fe8fad3db3ff74d4d668b6b51360fb0745d33012420d343c873d9aa53cb4c9ebc87fbc3a91d942f0d6edbe78173978f518c2ceda88de0dbe21683aa88f86cfc0c08ed34286f8423471b6137ee3a8fad439e0fa10435df27bab8b8dc515e211f14cc484b6e2a4d873dde0de494eb55a4dfcd8731fc82a4ccedccf3b49d5eaa11b352743437a02c23c13bb5160db650cdb1284fe70f07812d4d2df2427f83481d107e757ff0c0dd46058176d921ff59272a90100e9942b2248f33830c791999231ac18aeeaf636585cb50a57cc37ac350d550ec3d51006732a0f9773383c2a19510b8bd39f30bab6bf404af9e1210ff45f858982337e169c79b05ac8525164227e2b0264b15715ca8416017d036455c353f369c1d9bab95807aa91464ebab068a0aedd8c1c7274a8beca2e441604f5d2c1fc89ddc11f12d2cf6c59d724dffe533e1a30795255043f787f71c9af414b6cf0fcbed9850cf42a3785ee63c13ffa4cc2d49f392c6f515dff392360df858193e0419c8f928e6c0f8cdfd3ed4777e768d9af4b0b2c6de37e81b43c2cdacd66df97df1084f01fa83c286f39442f89a1c994c576d3f3aab5e33cc013f29e8432014c7ab23128b98c4d8bf3c88a27766e10c232a49a5eb83e61010bca66bb50177540fa16557a894d36f8a6abb3e4358205b7c02f167c20d6f122d6153023eedd67fd96a3b8bfbf661f4f369e33746c0238232ebc62e1181a860f4d788a9bda010b5abb70c86380d8f5c1d0350a031f0464d9442ea20dd51f1c6e8a34f3cf8dd22512fec9f95abfdfd0758e1489000075fc419530078ebb8097561c6db5ba2bea7fc1aebca7a7ac2a51dea03a069b7532708bfe4c3f8260fe3de05f6ce7b40ddfeaf47d738b2911910ee2405224b2cc61d765040ad173b1ad17bf1f239777fbfca6e5fbc1da2cae797a4939173d49a8fbe1d3a0e8363fe87c011d8b32b95b3abbab5d755fe013e6fbed055dc6ac190f690a7e4923f75fc2d653cda920ebde45cbb824d8bca4ee301c4a7b6ba6d6d728da8eb6d3541ab91a76eeb6d956758982ac5e1ac766954b2d31f6a21e869c527e113d37ac52cafcbb5869f8afc8d3b8a2088d48b25cae8d9b7604341eea1b1cee96c2bd6680a23503c6f01abb253570855e0322997fcef1f5338422e6fadacec7dd0a5af155974bc711f91795b8130a57a5756da3886c5ea199fd93eb52e24f30772fd0d9917c8b9032c938ce3b7c1e19eb12a48fa1e18ae3fbbb0b524e5bceea7983c80591f72e56aa5966e7359a06743fb7264f75d8b9379c12725b34e58b5f208fa040d169bec5ec749d84c84c967082770a6135ed16729d5adf7c615eb0082a6b716bdc6f77192c7aeaf03b524cc132cda7ef552c1c36f628b83e8770e87c188087c5b05d024a3ba4f84c9cb0474440829b83e748cbcc1acbff6a4a834b2f86f6e7d63ff1fa7c832c7f234bfe24d76f2e4f82e94a3205d84a15e6bbb316f0c4fc32c20809620b4612c52350dc8c61ff0956ba62e4be9d358f3a867befd2b72c62d85c75926832d65cbabe6ef87e0f622e143474ed0e04e978a9d1ce0ede4309d9fa00afcfb632d5d0c145a821e6eb377f801611ba748c68eb51f7795305b6cd083c078d3a42fe08adf4f142913b609d564a8aa7378702d61f11369ca742c049ec013c2b4dd188ec999d186b63eaa1a2ca8e53347afb41557260b2f6d44a5da9d4cfb1ad9f4067241c99091ea93a15e7d3cf4f988d9dd700338bda2aa14587fe7262e2003e46f2673a88cffaa03025f1688340d7a2d5ae969fc42690b974918020ca8b82a2437a1811ca67c6046c1fcffcaeaa7c4dbf2b95c5e32b637f213f6bfd0aec6753fd15f1e10a803582ad7e53237bbd2163af11aa79b58a081e3e0205e89f83d6d7862b696ad2acaa5a231c0f4d7d8469092570aab85fdff77a3cc488710ed3041d1ff9b62277a850e9b784650a090425fcb4ad0b4fd3a975d5556975596ce6abaa445b44b9f58a1462b120c155b8c9582f31005d18acd6dcc29bcdf46f60d86a2e1b89d9b54d445fb9e3a16374198d4c3c40c678c1273f4e56afc5fb4e48e18325d57c425f5eb9623242a670216863d999a137877ea4c03764bf430edcedbfef076b4522dc55d70fcb3ef08d4edb85a504d9f50ace8c48adea1e55f6c5e53ef36f76d4c59d65826949afa2b51d665353377c27dd4f3f81b4ece1868e050c6f8f225c7c984a408ed20ccb35201d000d03fe804222f4b1908c0ea8e976b4a328bdef6546bb99ee171adcc5800a262c0c01ce8ba4f23d4b9d7a5ec67858961d661b5f80cb978e5a7294c14eb5f4bfc618b3f8badc509d06f7c1a8b16da652b1d7329f853e39c971691d79b8312a0c7decd62b5461d5eddbcd5622de2a17a5dbaf2b08e99e93d2445c50d7577727c70b7b204ddd26ba7774f7e96eb53b80f794eeddd53dbfba73ec99292e4d6bf7c9bc7596ce77eb2bc2a85297fdff64e39bd680b7979c0eb12d0ba40a6cf46fabafb5e76ab94ece914d3951e178d19a8daf91f4fac4cb5ed73631f12ce9acf64eabdd09e8c98ab941ba5765dbc767a3e05c6f19d37073e7d6be07f23259858b8ff7b2b864bd288152aca2e0db300ea00fa4e2e65545a86f038167a8e373b9cdefb757887a2ed60915016f0b3686cf083200ff299c4c21e202c56fec8d785b2cdea5da22676db8eb39fc1e62d012e8ade628b5ec8e268284830b2100c2a710552c4f2c1994bcbbadf76d116fb2624c9806d10f5b5b60cc710a846d9e671fcb4bdba08fffe98e3a69c3a2a0be6ac7ae3aaabca87864e93fa019335561e9566b00cab1b7ed42319232523c7a35cc03ae7c4706d3d82a0b04ab01ada6d6aa4a8ea018fff73764875e5d264342d59429d1a26e0ab48fcb6438c9820d4ea29294afa92c45a27aed01b5c9a4b843d68f55f597a653e91e0fc606b62a7059827b0ab8ccb877d91d0447156b85a8aa8f3b2cf9a4a4b6c6d152e9dd8c4b6ec27c1f652e76c39dfb108f5f753789efcd8979f9a40f94faa32fbc43139fcf3e8a7425a3c13ea9372eda9a180218da37371bedbaa2ad45204960db175e3b41df3c3d78fe14d8660eefd10cc0ab0938e57ba6658497e54071e53046050d127078530b9805068706a06fb0a9424c3270dee408d52bb0e881f0ff87ebd0490d607f5007a1f7833008a16c4a911e8301fca1412319cc35387d837d9e8663b645c5ebc618dc30e0ea203442aa6630134b240c07722a61a341ffdb110a0633dc23bd1766034c7e30c3f3e12d910c907d002ede09817807efe15fc7037dc936254e63caade51b62e30d20196c34f8d76006e0555f18d6809c36a8af83cdc0b6331948856ddbf3986ea6bd4c193eccd752938692673b641dba41c705fcc5404b93cb129d5d204e0230a27e3b0fea045cc9ac4e870004341e302cf089036038886f3660005c218f34522f1ff05e8012403405c078d05f23b8a926f475e73dba3d4c78b8f110c21f27548b9254523e4ed711428613a1857510b2b2ee9de50616ba48b18f495b459fee9f7697ad4043d5606d4206852bc5d55b21da820db62ea0d1a4485814c4510da2074dd84b1321bc3e9c87f8451120f647a7687023b40dce3678280435886b1201d22f4150d145029b69bead41568e7707475102fac27963cd7bacfb7e11a0c9bf10530f89094f4f65451835cb1f95aa72a28e0fee07b4f0d0dc5e6a224d6dedc57a63fb4e290ed2a76933f3843f64f6dfc3ff44ae69eb87a2f7726c92d7946cd6e6c2ced9594fad7df12ae06870a4af7b6520727f4814a73a429da9ad65a2b0f96ad344277840c023367fbb1801d9b8b034c170ecf5fee053611f60429b0f02bee04fa36a7e10f0452f3969e09dd6548067e811bcde22f71e4d97c3e0cee505b8313a8d8257f3732c801bf9f3144732975997fb2e3b2effe1f262ada5e93a489757ae012f2489acc16a6831b5fb358f81450e488571c3f29366322185750b8d2e885bd07a0a61456d1cda4f70d2ac3f7abc95fe014271a32f5f83c00d86ef1a1dfd7a85620f630506383430599241fb9dbd8c7f95766629da7bde56769815cc205c18e56675965b018244b3af6166129b4f4b5cf9e291534444d7d48aec95681b259a2e232eea93e7623d8312a41685de544f21b30f0808a304e0c2612cdfe6b40482800c682c186a40a221d9bce8ee001e940a4229812d3552afe48a2293d508ca699450a7d4adc13c0c32079f2056d225533319b6ac97b139490e74fc70ade0d53ad7868801be340ee3d3b8c8ced079a50bd226b18123ad6bc905a6a339a8d04609043d12199e412c92c0c52e619d7b18043ba33654491fbeafe88c8c0953efb4a3012d044ce882fd391c544698d1d3775c8d8158832fba956e45b74c30e358360df30197185db7acb1c1c498d155a7172112af187b835266c77411a5cc8feabca8687e542711bb88e818ce9c0d67ab705051c64a4b36f07d069c0744a477c700177263a6b1e0c80ecc2f3501af3a65eb142f9866e30a9b1919f0813820940d3404f6d3569b12964ad7c21043556bfcb45799ca8e545a4cacb4444bdbe24dee587545b638bc918038d8a2f05a412bc2888e44267c582032a271b630408e5d021a34ca3144cfb8b10260bc37e608164d679626d87cc3c743732e4fa84373f653aa077d17951d06c222b378afc4a0295b260e40a714f91428746e3ed96ae00990729c09be74aaf4833c1ff81d7762beff86af070d7b98537e90edb591d900e83bfee0436ddc23fbd7fecfd445cf54f9fa0de77f2c61eb1aed8b49b2e56053878feff74a0cb9834d8cf0de79a452fc4d23b665c2968807ae597c4c85f44a20cd0ed87c38fb5a81903763375e91cf9c111452754afc40279ab08cb04955ff5916e1c9689d08bf6d850282df865782a80e88b9a36ab54a5fc4ca89f89e62781d5f0df3c7dff8e624ef835dc80adec45ef457bdab0f6d8660a506562a823840d694959082ffc72116674014bf5cb317f8f4379f34991b22e767b030dcde58b715cefcb35de1fedabf9a210539b298c4cc2d0eca758ec1262324d27e691af6e70408468b13dbd4ef690fbfc1874514bf406611c7325b9db23250d671c21aa5adf4c16dae493941e3f4976df6fac1c713421b7a1af152b3e83bfe46984e5e1b7ceb16227952c02451ef6566999aa2275cc4d7f39a6229554a9604f2e95d899f186a96d887fe65497f4ae7511c8b09f5ae11cd27f2c99057318066ed8c2afe5dd89f329f9b0ede0972033f40dece74fcdf81521350691cee9d674214e6100cb4c149f98805a2d995dd6f9de10ae7818f2f7798f6d5c36544ab8975890af9d8e11f8b6cef500b476a5e4181bfe80ab8da41989039244a947c8beaf7f8ec08f50d9eed8693d2f5fb49c9520456159f16329554c96a02000f1b97e14d629e607c449bf8173964c085a4d776dd26ac5e06bdf5eb3b468251e3a2f8d9540dbc5af64038e31b4dc4c1ab5f9eee9c7d973e4286e9705a07515c6642cb8dfc3eab583ee29e9ffc54ad83bfed0855b1d65e737878011a0305d1c241dde95474334c819c46dbe41a5fe4bfdb6568a44451b41daa0815866a875aa2ee5125a810543bd4122abb28ac551ac9fd1d65899a443da052959e58b230d399553ae83cf408433d01b765e9852e463120282cf833693081f68aee47e7a067717ac2b5243d7d42dba266a89e3e3d219d6dd972ca5fbd4af469b00cde67d76fc03a2db5858d8d9a06d4640481ce95b0619364eb682eb726e85b95c21ec9bc1969927f4b596f804ebde95e2261675da5c07c8d899818efcefc86ded736b0c297eab3a3c817109b44a742b73eb42b919fe313ef66d16879b1ba65dd685f1d97f72e430102938be3b27e3c8e63324ec1d9ca2c387746035c3fac85983637344c17ec021fe3e9ec5b12e8941c5a42d1460bc088fda8d48e40a0ae5e2bbe945263091d7462a1bf018c22e2b42f7c12413769b3d0cae46d265313a2a4fe2411926e48707833743a3a9b4444bb25aaad7bd8a03dd1c966c4d22a909204ea6e0183af0732b0c8cfd08b3b1022005081e46f082321f456498028701fb018d82db86568ea156d564021641702f59a07bbdbfec2739885fd240ef2b3205b2ebd826c61dc7c7d26211d175141f66737e00737a3e745795f7aee10f3e388d87dec4c594b6ed21aebb7538398943d51b0b5a409c47e2c379cea0a5d0316a9b6b5a8ec14d6cc891dbe58034fd7db6cd900b329b5696f53d926346ca6f9bc2366f73690b8b16e8e5d1c2f1b31364eb719f35e1f6f80f8a60fe6cc368850606aac3fd2adbb5fa7b4826639941e546e39feee7ffafaf08c37444b20a1b0df721b0299ed6618381c9f3b3c0b9fda45b165970fedd173abdd251fd4a61c78031053004319b08a3f1dbe0ab147bba35e180203f88e9b489a3c32f6047400f06b5940c6d3317d694b4d7461d6c171a5f30780d9883823f125f26b60f6637d72f4b4b11f9aef647bc4dfea5d4ffb569b023d5637ce0d9e2b9d9c28fc3778da5a7aa98088c3401726d61301a9ebb5a09aa45554ddd996769f0fa11e205922f0be4484946f5d198532a29afdfb12178cc926537ad58ef8578d6cc99d874db89cf1fc2436d8fc7c2bcdec732c4e2a4e8012b3865cf02399e00072a3a8f214b06af32d8e816a18c4547ec208be07e108e68d9a14d766c0dc4b4cb2f0fc876fe82a9a0bf0d14944351a439db6bd4c404b2b93f8d73cb388158a8a87cacedd01ea9d5ed8f611555f0f973fcf8283d1d64dc2324d6170e864006b6d9b14338e557a138351847569f1c2012ccb62de9d0bc9311765727add05fde65295d23628e78ad7c6bb359959c5297fed4d329d0acd8cb62bb448caad97123069d21cc18c4d096b896000d45ade4073eeb2afe11271b374592cb3987ae976c9b5a76c0f2d988df1c7147275d1c7553325d9a98478ad933a46a7a1fbd2273ba6db861f356759eb26fb68bc24a3d67c92a1857b4b1007176ce6c71528d1ad1b0e700dfe15bbda561b2ab4ef0503ddb69e4aadf4a22592076c0acfda949b3d4f7eb44aacf8444ad70b9671f4b6032367ed6417f71dadb0db6351eec04412ce1ee46131a1574fc5e80e51b13c465a5829fc01c1106601c958ced955169d4c8d20e2c6b2d276d5e23d31eb8f32606f5ea64d5d1eb4f05c45d11e5d8bdea118994b78c11bb8a69fb660fa60a9ae0f7c945890f25e12a3120bd86682c3c54be32ebf20e677fb55c47313d328513ced69cc6532a3987c440aaaa2adcf15f4f88f99c257de51aa355ec487c3d9a25e0b95a69ebd895451ffb42e6ab97f618aef963d583a54f276e3ea6db1b3c5fe230cc8adce5fcc569cba61a483d95763a9bb564b2bfcf0f4485b3d841f7d7805870d63db505025923e8e561cd366c204d5049f014055858287421c852a2a9c5bd8b2426e0b119848c0c3221e67ba5bc7105f12af3ae8f4ceaa672505c479ed616b8fd800c9727919cbdb2a12e4cc995ed0004a361cad390149b2ca04f5a1c48b259347cfd7141ec16479db10fa054016cc35ee828d9e330af12393467bb9297f930bd9f4037706f674024ce54bba02d11ad3760f04bbbb6e708652da5a7fb3e9235e29aa3d7de7fdc5f891c2566abfc640a5d2e8a99181c0417f07a741c1163f4510bab5b2873f46e2c9c7bdedc9deeff49350e5c38999cbf6427265d89412ad6a3a4a4b22244a3b52ba7d828c7a706d5e305b40377d83ec42d7881474b53fdaaa4f70e90f77ed89b3c244495c59774a9befadd2aaa07210492b3221fad21dd6a8d4c85fa3e411f46e99f41c182080984ed3002cb52157b04d98a2f4e8df16ba0fd2b0c3f4c9281133037d97a1954a4c7740139cc039cd440e938d4aadbe7c6796a46c365efd328373c7c8389456f10b616679d95b8041bc6a5c7157f4d6c903c8488122ce627f8b43fc8da2d73c71753c6a0de1f00ff796b0865637cf8abff3c92a1c9e6fd82644dace80ca4a8f893b9a8fe2dfd9b9c77299bea32fce470ee658839c5bf1486742601c64f3f94f0f7063310ceb11458f5375118eb8e1fc172f0dc480edacb24e5aa1673f2ee35f516910b273580a40a0d551b0041dd12fdbb2559210a5cf534bea1619a424915aa8115d7d4c8a7588678408d4f170e5640007b60d50cdc308b179c1d1af36facd0859048996c8eb721db1bd7978b12774fcd037cea0f876c5ade951014d4bd521b506e068d28106cabd6d150a5d99b1379145546925ef072d2d526a02b3cc58aa77f921357bfab7f3c7fc8783bc247c4017665758e9b00d98c80bec65f5aa7b6dbc245e302f5abdc774292619759814457bc13cf9fbbbb455c09c7ade3f1e352fa297967b13126b3347e09ea237dcfbd6f2267881f70f7380b99efc7fba0b5cb070bf9c1e0e6b031e54d63bebd35e1b141a86e4c08dfd35c69d5c43b99700e3efaf6ebb31294aa4b108770a7f6681757f6b4957afe6199dad8ee4ad2b0d71858e70bfc39ad0c0abac0c4c1fe94dfc8f78518a4aa49947b964d0f5cfe503f9132713237049081ad4747dca708e21fcce4294d7ce82d8eddd2a9d1238967bd7f659336901dbc7bab2f3ac8d4f603391377b316b105a9c6d8645ab090c5a11aa0f841e3ebdcf32f37b56aac3f6bfa638a8a0af4806aa1673ac7af0f523acf63d4cbb9f31afcddabc5eb60f8bb39cdb9a6487523ac66ad6803e373685c8ddc43ccd5e48c3f2a74907bc10784c413aaffc2750c6e4c8323cf6ca54364789ea896c6cbe0b4b81d1fd0a91d8d4ad6841ffee764db61abd716983f08389ec3b801ed7b1ac01ede1c74e59638057f9a7028d31f68930f0bdb7c49ac07512109636356be4d210ddf486cb8c311b44946635eaf70e93e31446e2bb55e10a2287dbea8e28b7acd839011c3601ca50a38c308644f7c76864236fd5fce6faeff533a08e142de7ec3b5c7afca9c2bdcd71f5db2b9eb8d9683b2cd4f582b931f97db43743e3ac8b31fc6645dbb30d95d2eacd76e311caa662a375e94fd7b8468ba049de9662b3ad1896d8b5e90953100f7257128a0c0615bc9a25638704dd0cf63d4a431961834cfb8f20de6509cd283243f83b646e139ebcb797558be442458c315f640431006131a3f735e3c21246837887cca8ce27ed29e364553209ea9160755085b11b29144ef69ea98d8cdf4d40acfd902419c122031dfa7a6d172eda927141fa1f8f30b44c4418d25d336b5f4ec3e2ed1e1839f485adebc9347d3449268c65f609a3ee4d554f9e5acf7f821559b9072f9cca18a479b3688bc3e20482dab03daecc9d81bb101909b8898f0461010ee4504affb272cf4efe73fab19662fd1de756d290e41e1ea7e15079351650504149864eec8feed820543e08ad1cb0542a1dfb68ca4784998431144a78400a3ab315801dfd60c6b9cd63748300f21486dbb620a1c369cfb4da50246aab1c3191564bc3f6c68de1089721a964dcb95d88726d8d15034c25f7b315e22e7812e67815a62bf44126a27c4c1685a14d6912aa0da5870cdbb20e8aa6a82e53be0d3715848ed0500c5df1e79261fbded8c88587a0abc72a18d3a5a28e4212a910a58b3c33f267a34fdd9456171f0fe4d89bcce8b701d910d231f1e192205be0a310419aa07162703fdf4cf2954bb630efc67b1f96c814b7134624c1b53bd9027d132f2c161ed58ae976cdaaba7d4eb0adad7f01b702cecdc80a99eec38a50aeff82f1433ed240a4e1f42963650c66984a0dcb5a6a5c6a7dc71937b5ac904eb73db62c17baeec743a1f657833b762d0584509502c305c1228d01978682c68b1b06677449d6ac68946a678796b69a25127456f71e1f0125e70d104c724c377b75d7e34ebae3bc987d5b274d32ff69b2e58db2b3cf601e557b8b443ba382ca8972544b7c06614c688ad498916e82cac354c4432d34d88db1ea8c52afc261fa6bf7721cd55fd0acc1f61dd317818e1ba28254424702a25a9eb4d123b835ea2b47e096e260329973a942c9a31ee414adb369778d7852bf55f4a2ce39feaeb5107b5fc67ae8343c4d3d2a2e292c8e55a5f5863507c8378e37545c93e6f412dd803335c57f65a0039892a0ef8ad025a74a162a8f566b81a695888af8f391bf32da735f7542aeb7eca99a4994c92b42c0a9abd4a42e42a91e1e84bbaf7687d8943f995bf29ad46957ed38a97fdef57e610b4ec08d5da162442486792ea071496abf314da732077eae68e4236ff0533db7452c71541c5a745c17389e2060dc818e2e26b974a189b34587c801e69ef5eed4cbc99e0b86221eb2dc03aa7ed8d07a153ccae9f818b0a849210b7bbf8a8b6c3a6b53e411e74057352ba0fc674bbca9673bb5f3f1045fe8886093b15a949bdcd5daca249271a02f8ca6474616184c69d23597584fee275eee70b5b5057463e759d8db1e2bc2ba23a89572495e3b8d4a50253cb00fa301de992c4107edbadab150789cadbe87c57dee0eee6b409df36360b6422f76084fc46e6787940e996d082816f13a95dc6443fb2f8f3059d29b566cd4934fa73c2b87e57a7810961f67dbc02c9fa5c9801998b57fbfafbb4967b6ad41fd0830183337d57abb31906a1d2a05e6f9730e8a103135f9c871cc1d0701e971369c862e3bcff902678e59e816bd0343d6b35b3ac74cb58013aec9f7b7b8c3bacbd0202270c605ac98b6dfc1328daf59ae446de74229130cc8d07094af37e793e279fb0f7c6ac4df71dc5c124ef99f44b9aa02746504bfc74d04f728917e6b7ee13c76dd57eaa0606af936f893f588e1d7328a4f19a0d24c381eeb87c707fffd891491310421738e619cd644f8c5954cd009eaa2573efef969f17407fc1b8a9adc118d5bf110924af423904c424d1a6bc44a6df19b5e013ad5ab8782c4bddacb79750ebc89cf0cdbbe48352b42119ffd62e7b40288a22b4d43a5b271104519fb8cf74d9acf3fc4667a693a6a89b3d9dc021854eb87aef9aa281db14f2fd83297eb22cfa8502916a32f7e963f444b84823215f3444853e1469c39cb529c2831a5ac3f2be6cdb9ba5685442a584202842a1020393e87b9aeb6e83724a31361a601e4c183700d0a4a3e458cd152cd7c40865acd87b940cb9cc7c647124379b5bd145949a46544d24e332b160e593be33580720ec48a6973c8e44104f8f11d31cbea5f448108de8430217ea848c95cf7232f95c37bb00fc5a8b2ce2fa928814f28a7b48a9605f9ec2ac29f548c40f4d19c45222defd5f560789d9dd0f29e0a104a8a3502482c315b9bf31582146b055e7c93446f399fe593b7802d8e83fac5d8e6e937755a1a3ed194fa3d1c241f4b4ca081e304739e03405e0c48401d0d9e160b65ea07cbf1874fe8646243b02f05f203f978aeb84dd4ed208cb0ee5d3d929731db055b5ac8442b14180527d4b16b4498b159e47ddc401837d53ce3aed8e8097210cc6472c04f7f39926a8b0a9ee24d68f6f6abc8e07e1d7b8d5a3a9e3594429f73dd434590f38d7d587c6c0cb971b0ea8e07b53991e9b3f96410325ffcccd46485a5e6320ee1c8201556019b1641ef335889fcf2658a8dc7f502a8c76b8f7131f988d19c41354e95fab138cf89848a72b9b02cd81ae9c4c5f565cbb53eba340f9f1229c606ee6ed0578e5d7a35b08014b284237a1aea859ef94a6186985f1f60d5bf123181d47151704363c5495dfdbb1ad966ac74358339adb157abd74df7d1496797a4aa2bb06dc9f80c8be2705454fc1446c7b455f57f9a0bc9759ae1674c4489803042631ca860d0d5bf5c6d0fbf2f73e62d16945ef7307a773b911e2f77f6629b2301aeaa830354dafccd3e22fd040e34bc0e7fdd02c7babaad24168143375a4f731af09a0160d8849f78aec069f546f66b03cdf7957662f5a7b47d03d14d4254a1dbed1be2c0b6206a26b37e6f4433ce9f63c20d684bf9c673bba29b5579f16c6886d6c6a40c802f80d8ba402b20ddcfaf596dad630552c8af73bf7c5d8279d650f7556f3ba1b75e6c1573c3d87fabaa49015c4472bf6af79e15c705eb001b44566ce8b1330b3898cd15cfe4db6d12221ae2cd4c16cb17e58369041d80fc50a4e0bc2157dfaf1e2d0d9737fc5c03cd6c247b835978cbd9627f379743f17e9bd29d06ba88023ff586b31d36457f4d6070b2747dd8201c1e0c72aae21e04bfdf5e0c7443c941b0ba219edb7b9e47807be3c5ab81721150834cf7e24c99909ad952043c0629e8a931189d010fed8e56fdf2d8052eeb13849ce76701eb25d06a8da7483e4746eab9d1f218eb477204ddf9686937a1e7e7ac771445e3abbf518b77864aa6482402e548a6faa62b9a3de1813e5cf1b7ccc27415f7860b4129cbcaa70d4ae08424a4411d2390057d209b01e75f08c4c01b4db679920101d118ecd68cb8456127f17a0123a4dc020e2e85440d3660b2140a07ff00000000000000008051236b13aa45d59694766b5f91f5018064a6a4cc4cb7915b6bb635bb481bfe2279fe226df8c441360d330d8e0d33904108b26e36afff8a19047990abb7f29e1104a1fdc7e1721fe9af0904a97c5305b7ded066352048e7c993adb7fc873b23de477b73fa81ec15e27f3cab9b2cfae803a9071fee75a36eba1ce403b9aeba332c670fa4518db1b67d98b71fea8128d2c13dc7bd6016e7811cff4e7d78516fd52d3c90efe593c6986270975600830e8040c61d4c861d485e16663b8ff95cd660c8a8032973fe4175455954db71a80e31c090400b64d0811c3eb4c5d02effc9622c630ec4a839adfa7604a384d13776e430db9115902107f2a853737dd0cd3d2fb78c381026b4daebae020772e7b3b493cf25edca78437921c30dc4175d1f6df6f3cfc995d186a4df6206f78965b08118ad29638cf997b106d2c4bb868f3dacfdd1a88168f6163f78380da46cf1631ecbc7757e190de4d91f8989794af3217bc8380371e7bd93c50fbff5879b81743ffc3cba542ebd96530682ff40b72fa7bfedd09081b4e543cf3db5531bdf31107a986257d5071ea7130379c4d353278f7faf524618883e2e4d396a0e5e2978ab32c040f6ed70e1ff47b1828c38b4708801c6c9f802793cce7f9f63e8607753c9f0029bacade285173b04195d7878a12b90c185071a40c616508616c8d10793f997722e67c740828c2c24161e32ae40f09092f7691f2b10e366db3c1e747918d7548130bda934794c5381183fc58e9ebe5320569bfdc84759f3bfba5220e750a942dfaa51205ca99827cb3c74cb49281032cc7c341e73e5d89f401e9745f7bda8e203cdc309a47cf21ab4be2af4506c02c977f236430573b14d0613c8996b35194b20e7de98d7d73554a5651090a104b2dfe74e1e63fa711e4bf50019493819482067ed8f7cbe7b3c1e0fde957104d264a6f455793cdd41861148ed39e5410fb7535818e320a30884cc9bc3b26d4904826e98d7f0971f77e85fc610483f8c2feae9a225902184475db7bea93c94e88212c60df77f6841461088925d29639b377e78200308e491694eedddf30fc8571fe5f692060e327c40bcf60d177ce0f78098394c4e8f262bcb4d193c20c7f3bdc98cbce861b0c8206307e4f1ad26cfdeb2d13cca1864e880fc5b61a3de46ecc50f1c7a030631285fa48d40460e88df172f2ed627a301388c1885011bb08005d6b8c8c001793cb29071b31ddfd7fe828c1b90f3a03fa7a8cb16263c2fc8b001e9d4630a176cddfe4d3670510be2db4c5bf828caebc5d08218dac62e966bc4d7380b621e67cc173f975325cf592070218bf2a2b88805a96444e2c23e5cc0823c58ff4dfd293dbfeaaf20a7e8b9c287a8aa4f1d5710af7267f85dce981ea51504fb915eba789915a4b0d9d843737315e4b9bc1fa42fc6a54209e0421584b0b90a73992a8affa920e5f0ebc193e6f128638e0a628e5be1a6d4073decf429081aefa24c44ebf5d30ce0c214641f6f981f7578ae7bcb4529c83d183d9b4cdabb9ff6c28b6b81f120b82005c134a7b91f6d1ee7141d05a9e376d0e99846dc7c70210a62cce5dcfcf528bdfe0805c95254cfedfa73010af26057730e1fa6c716435c7c821c63b4f2511e645fe0c213a4f6c9189a767c7b74e2bec80e77cd2305c67134a0b8e004a1f2c047dab31f5616b8d8047994b36a1e6df4e04213e4feea415a691e87160cca17e70b1de6c69e008c1c2b704fc18d14e8d0d137f242c145264eadfcc31e8438b452a043078e2f4e0e333d708109720f34f4603ce3654f310ead8716b8b804e93e4849bee6917c2bb7c08525089b4e53fd72b03cee20061af0c5170b90d10019321a20438c17b8181c90d1810ac8204875a312cbf6c7b45bde614c46704109d27ec8dbb17c1284334f974a3774ce13e7c08524c8ffe3bb1cfa3435e58254e02212e4b175dc0fbed2b67cc54be00212241f5cfeeec18c6f9efc11a4e0ffe1ce52f437532c70e10882df0f7a336d6d04d927ad2b23acc7e50756810b4610f7ea47435566d7d86a808b451053323a6ff44dc7291d5c288258f1d2ab32e7b095f290d18005a4818b44107f3c0e293d326f1f860f224833992cf6451fcaaee610a4301673dc4c359abd3404493694778f4433ff5c0862b8cc3c2e9b4e43865c10c2bce062105c08829482a7b45d1acb6f0582183f34cb87e377c9530608721ebd5db58f6d7e4cb6818b3f9037cf53f0f8c1ac79ef0762aacda968f724b5761f88612dae3d9e26052ef8400e1a3c7c1e46c5dbe6f6408e29f7289c85d0d2570fc4b4e2313d8fbc8715fc3c10f5e43287e5d1b487cd88c0051ec8655deaa2a53ede8bb90329671fe5b6efdf246ada81e863b5e03ece9f3a1047e73a45d9ec714e193a10c642e7b288f949cf7320858dc98767c121702107627ef2612e4b3dd8085cc481b8d32a1a3799ddf63870207d4ab9e9bb9f0fb8780331d7544edaa2c1bf4737104a2babe885254dcd6903b9378f4393872b085cb081d8bad3c17a3534dfbe06f2fc7a5d4edfacbdbe1a08d9e390ea1ef8c852d6a481184355be4cb1c9473e1e0da4b7dfe452e71908923f3fcc3d4ead3fce998194dfdd7254352da9af0c24917f99b4f31bd3908194977e333d2ecf63f78c8114d1c9fd25b4dc3b460c84ccb83ec2406e1f8544f7dfd4c7f36ead90cd95fa02f1d7a5a763cea3ec15e305625c90ab10cf361bf42e10b7520eab5363f1572e10466386924d9d94dfb6402c1f768fe587bb3efa4c0be4999928cb63df94feb240901aab92f4fe972cb140d4abd398c898f3687705f255eacd54778cd649c6365d6a68cbaa4092f73011db96d3feddda43b1cd7c619f02d962bfc58f930fa38f7a4881bce6f2977d4ef4cc53b6b63c0a0aa4f0517ea0f12aa529ff04f244a5c9f17105f38f39812039719ad2d2e37479348158d3d975cf535562660279e4ad937faa72b10462551e5e4a207f4e7fd153b5e5ae471248d531b887ce0a124851763f9ffe9ea4758e40b29487a739ed9c455d4620a54bae5663d32153b00884c81cc587955d7a98c7c1a115052e88408ad797647fa3fbb73804627e8f49bb577b9ca2270462460d55f153fbfdd82090c33e7b3cbc520b96262010757fbd875f153cf7fc03928bfdc8a594d9ce950f081a835a7a40b4e05d257936173c20c6b2ef502999f2f55cec8034ae712b544a1d90428de98fdfc5b6c7730ec8c987e9cd7b201adf1f0e881f1e2e6fcb6df5a33720c6cb16d23287b8b001f92f64fc35fa8f6bae16e43896476d129de207192d88592ddd53ede67df76641d69c51cb6261b907932cc8e79b97becdc797b21b0b62c6286d9e475890efcdabf2785463be3d5e41da94a860eb9b2b88d97fd83974ca031f45b715c41ff5e63c177c9cbee2ac209a7938378d6915e40ff59a7e20ad292aaa209f7c05efff418da72c15e44a17a2ee33e299c7410539eb83869d269d58f314848d8f973144eed4265310730f3d0f26638f93bb5a0a92cea68cb5f53fbcf9908214767c3cbad8beb934340a928fbae5f3387da2200f2d87e951a8160a7acd6ed607e10314049ff28d977379b4987e82983a55aa3f3f6b8dec09924aa7cfc38b3ed81f073b41d2a819a6c4d292c4cf09f276957f1ecdba09f2a8661f6caefa7afa6882e83f8ec1837c9809e29fa55fcd1f628268929a3b422e5af67209c29b7fc5696ee651c82c41f0f53377ef1c2b965409827ef0bce1eca226274a106df7a2a70f6b1a373309f25a6ba49efd9f6d260962ca39869799f19e31126457eb5417377bf4bf9020fd6b5f1871398d3ff411e4b12acfae6c52394a8e2086a994476e3536826895296d8ff607176e33829c9a6f2bfd8c5b2c82d492c97e7465f3231fb75004c1ac346abeb2a784b54522c839e730929dea2bfdc82d1041b21e551ea54f06cf03698b43906fa3f35e7c79cf29dcc210c4d936f9d0927b39955b1482ac9564b36a57e81e5cb6200431d52b63a86a1e5e4e1e618b4190e552b43e779bfd512708f2f044346ecec1c4d381206fd2e81ddc63802055ae485d88d40ecbf903317df50f476388888e1f889eec32a592b6451f4815b365b7b88f4bf6630b3e903553e774deb73cb2dc167b20b4ea05cf19df4376b5851e881e2d988d5ff674e66e9107e275e80ff5f1c9775a5be08138dfc3a0416f2f4ff950c2167720d6a54b3f178dbf3ad98178c947d123b1cb95b35907c2daeffd86960ee614e72ea60f53e640ae906d1957a9bdfbc98160f1afed5c2df7207bbc618b38102fe979ce0c95df16c38160a3f9e38eb6b2152e5bbce11f85fccd173d0ebb81e462ad9d2e0fae2cfa680329c73ec7d0cda94e1f46d8820da4b91e5c0af977e9a25e03bf9b56f355c7cf5d0b5ba881901daf2fafd46920faa0cb632c956ffa8c06a2f69afb6ef0bcb81915b63803b92c0f3d8fd28fe3cc7e55d8c20c44d37fd9fa9c7eacfe96813c1e75ccef9a49735c880c640dfe172ee5915ce5c7408a39e791e7b778fe8a49610b31908735b39e76f235e5989fb04518483d16c990b25aaa768181ec3d8cb63553fb76718b2f10e2fe5f5bedf702c1e3e98f7f182a3d90bc0be41f5879a4ec5977d6cb0562b0f89e3aa32b77d35b208f72b214f3e3b49866b540ee61cfc8ba0f6c7dcf2cc2165920ebe8966cfdb087d51711b6c00221a7322e838ff278d3730592579ea5f58d7068e9386348600b2b907a7aec79f03d96339d9db04515c8ea17219ef31a54a212c618650b2a103b7e94377f763215dd620ac49853fa7bdbced6cce38091e3015e78d182326c2105c2fd586e4c224357d08c618b28907b18eb911eba544aeba3999b7db82b76610ab26eb5878e269e536c377274a1ca0f74510ad226559fb38d39ab0f430ad289f4b845cf030b771905d1e7c71d69258a8293d0e8389aa75090c3645533631a4d3f8182f0f53fca31d454885ebaf80471bb628c5e2af3e3207a82ec7937a7998d1e89853a41f01f45cda1f3534f5d4e102ff66fe4ba88698fdd04318f62e9ec85d88526f46cb1928c36738d4d95be94357b94fc514e6682b011fe75193398207df8ae1445ee3e5ef21224eff9d1f65d8f2e2c41fe4a3e0c2df6a1c9ee2e2a4110c9ee2941aa203e4ab1f94c82bc75173f0a8f4a8264daaf121eb443e54f24a8fc298504293bdfcb2d4e250be911641fe670a32f1e4790476b26563fda9b536e04b9cda268d0cc49f255461037a79c163b9a7afb451063977bb6d71845107d785a41b35f8dd6960892755cfad0e3685a9acad00522c82b761f5ef16a63795ee8e21084cbb17d83e570055f6ca00b4310c3379ce791bc822c0431ff3845bd7b3d56af8420bb7cc8cbdc296b2f8320ba6a8891184b10a4cb3dcafd4d757d530341ae6462492ea6eee661807854e93d0ab11ec7e5517a6f9ae65e54fe409cc876fd40d490e9f3f6ae751ed77d20a9d95fd4b8ebe1bdc90762f8c1c6e8836e0fa4b8d8bcb8493aa62b3d10fd7b1c1eb7072afd511e083d6a91bcf6983b1669e281e8df97a14e93741e947907928f72ccfb9ab4befcc17c74510752aa66f9bedd0af30d1dc8f329cfcdcc52ca6b73207d92d21ec8c5b1f0c3bb9003d163e8cff73f99f793832ee240a81f7f5d0a2bde630d1c48b71f4f2da985fdd16f20e5b06dea634d71431d2639f3f6e342d0451b88952fefbf72a61c3dba6003397c9cacc6bc232d535dacc19639a9f08c59cf50e13fde5da8a170958bdb7f4f1a48e1573d4bb57467c8748106d20f3e6ff838987d54680c5d9c811c53d83cd6c9b1dc96cd409e8a488fb992856877d04519c843f990bedc4d3d96950cc4bc2eef12eaa38b3110c24b7f94a7412fbca82574210682faf955a8a415c3f5d0918103c602ba08032132e64b4d67fb0e0f6429a10b3090728ac8190db69aed15a860478e2ebe40faf9917c4a5277e105424ec94c8a563774d04517c83fcad5f962a5d5842eb8408ef1da9377fc6a8c73175b208d56e868d08516c81af3d087117f229bf3592066cf936e957b2c90334673fae18f53ced45f81fce30c2d9647a987ed712b90472f7b33af5e0582e68f87b579b38c884e05621ee7f17b6affa1cde64c81509b62eac7327fcfe348813c340fabd9982810f3878a79906124c5d35020cb9fda86f01479b59f40def3aacd1ab613c876e9b4ec479b8719eb26905354bfb7c739a5e9519840f29ceaff7bf4c98751590279e8739ac7522955e55909c4db381fb38f87ed16c349206afc68e9538f0fc4662490453afaed4d56ce493e02592db30f7aa86666271b81e8db61b5326df6575c84e265739608e4f1e8edfe93d476d43b04f238a33f54f461a5f42a04c28f3b656fcba97b14a341202609a9c8b0239e6b050229b778a70ffa9326ff07a4cfbf98b9c7556563fa8094c447c97e7cdf5163f68014d32fe8ab963c209c4e7a1e9f5c7b6f7640ce03dbd0c31ff8e7981f3a200f3e79cae37f1f3920e45a8ecc6cec391b07e451748fd9c28b5ddc80943d4c7dff1826d5c22e6c4018fdd93c38f371e67eb5207ed61cc287793417392d48e169eb73c56c93995910d3e7d0b1de071a932d0b825aa892d294581033faea7c2fcb7f9cc18254d151ee72a95790f2594ed196d5cb5eb98294f307d14e772bc8f321ed7bf08352935941961f6ccae147a3396715648b3edfea25a982786ef93c35fe40f35f5241de2497b1f436549036cc644447f9f8fb730a72b2b0eafca73f8e30c314e414b38488586558adec510ac2abbe27fbe18f34c20c5290879ea13b176d2ada488419a32085f1fe7fdfec3ef4491404a9ea94f1f83dbcd4cd0805d15777fd7bb37f85090ae2851e7f8cfa9cd5f9e313e46ffb90293bcdf00431c5d10d3dceff7631bc85199d20753e971f9625b9e079cce004fae97b56aa7b6c824fd956898bf041c5afd965c5904c311f9a20cffb6035866932414ea1539cfe516caf18638298c73167dacde34cd9ae4b90547c2e6a79a5d474962005f39b4da69a87abe78c4a905c422ee7fe204a10fcc73e1e7bd44f93619d0479cabc925bd0d2f64f12a77af6d0c729ed43f9aabcc13fea67931f3a2312a4902d994243cbd476c28004f13de78a51d7af62fb02c78e1b568f204cc7daa7cc103ebe8d23c85e51f57e963189061b41a8ca83f4fbf4f137748871230560e40803c78e63045934e58ad9cb7e8f63662c823c31bd39d6ed0c4510d52fa6b46153a6df8d432d11e48fdb0a3175193a35b5801988205ef69c07cdd80b729c12c60d1d62541d821c7e643e12bf701f66a6430c320429c71e9d6efceab3d4e1d0f22f6eecf01d395c20468e362b0431f3f0e25d8f2b2eaf020fe3460b729cab6dc00c4210739abfb7f31f87561838c2c0c1012fbc1023478bf13970ec780c82d0e1eb6534cab46bbe184305a880198220da6e75895eb8d3dc182ab8114681c08c4090fed269fc4dedc3f4183bd601330061f450ba4711f23d2a6fabcaa06973a8c85bf3e0d03a5354802298f107d64cf6928b6e38b4b4b02e30c30f84d5ec799fe1ea31381084197d20868bc9f4c368c96c523e1072deb64bd7424fd36c98b10792ded447d314dada79e881b0a33fb0ddac91c009723020d130230fc42c17cfc003f1376dd0bb242116d11d887939c7ecabb3e21e63478fc181aa36ccb003295be3e79d1e5dff2d8707c40023c718321eb0011956ab638091861975205574f01cf3a3c2051187e65841b9e1629416e4086305376edc054470c38b1974706f662b7ff6c53fce8c3968ffa163a7e38beb1972587c6c51171a6f9702c6097454e067c461351fa48fbd65a5ac4ca53a4d4e860c9de0043a2ab0021d17f0c28b13e8f8e27133e0402adf4ea1c76371dd4967bc81146cd33b25add083e8943b6701f9300fcc7003d13f63ee944f6d032963c87bcc13ef4cea951866b081ec5df2f3197e20aace5803298fd3465454b81c159ca106e29dbd9d578f6a376e33d2409cdd90b4f5d1ff947833d040f414c76e3454c8528718ff3a6e9c53ce408aabea0a535e7237a9a0053e81196620051ff9b8a7ffe34e6d33ca4050d5f0dfff77061988c9a6077121ae63be2c2b668c812499fbc30ca9f96acd0c31105bdf6c3ac6a81fc74f18c8b3915641479e0106f270637b9ca87bc617aacc2a4d53cbaa8ca15963da0f63a6667881586d197b3fd6e48e8f04c28c2e90e65baae4e266cdb21f1708a1fbe3cfdfd25d6f8198a23f7675eb5441362d90c4476f1b2c5f59209f451f574dca759073b140d691bcf258f98c2b90e58757c9aa2a47dbce0a84591f755d8d7ccc9021156654811c5fb3d8f7b82434c97483195420682ab5f0a3489b541f53208fc759653b6367a540ea53bbf499bb3df645a3408c9e355be8b8203f28950633a040d43caca41513a79b4985c18c2790c7a11bc5272dc7779c402e29d93c7c3b6bff71768c194d2085d1ea610fd3caa68a9940568d29e5cde3b21c3dba3396409290b5d3f8391c5a563c4309e4b2d91c4fecf62c69764612483faafaa999f855a9cc400241cfdc5744adc2842a811dcc3802b92fe4dd07f19c2ce58f18cc3002412e9db80f5f275a04a28e8f7773f3e8b27bd00c228460c610c8fbbd12fff6c9bdeb470d66088118d357c6307afedff120903a854f17e7c134df723d98010462b41097dfa3ddf50c6730e30764d7b4723f0cfa3ece8cf160860fc803551ffb61ce9a3c0fb34298d183a4f5d3c51493ca4398c1034269763a0f32251b3f678c12c6037e30630744971f7f6d1697bc0cc7d80186ef401d90be72aef83d702df74cb660460e885ad97dd87136337040da6a5d4f9f1e336e408a535be9f5f238c48fc604ccb00129c47e8aa952bd57b438b47688b1c3c7608187b1fe2805c850a63cf328b54fa2054193befc57b8ccf43f0b720e1de252e325fd65410c1756d6b7f210c8880531e671a66e744eaff18505e1f3dd7f64fa6c393519afd807e69a3dac98b452d3fcb39702325c411e5ae6deed461fc7fc6905217e3acd534e31c7146505b1efda2cfb2d634e51c62a483a1b9feeeb540539ab8c325241f6edeb0f0d9636f2c94085f2bbde638ffb4f410a1f66552a5f339fdc1444ddd0fb73f1a3f27629489a359fe7d59814c4b13c9ef31ebe6dc4a320f8b5ebe9a766ce6eca1005293b99f448de5298e76584823895999b2cce324041b2d4abd9f298a6ffc81d323e41ea8aca839a3889cfbd2788f9af873dd88ebe95e29d20f768c898f7f3d1079d13c4d5f2f0e161bc27733641def4796c3b7e1eff743441ea7ca1f5ab3fda79930992df65cf3c16a3ba36982069dec9d3d5aaf4505f8258b5a79d2d5c4b107c6c5f71733a87362b4158594b31e6a052823c2321593f342741968f5351f242630c4b8250171e5992a1f2af8f4890a362ee1fa5d4290f638404e9f3667cb71c3efc61ee11c4d85d151b5368ecc91c411279f1e8333979af1a41da0df1b9be77156d4610eea5c2cac6203e7c1124cfa3b49de12a7e4ce400198a20578f6b6773bd076c404622c87f22ae165d9b3e5e0000420622089bb737eac874cc77320e41eae0b71a5ded3e9c8c21c8ef3997dcb37753aa0a419aecfc597b180a58acadcdefc32bd95c6741b8cfd2213db865411eab695ec7691fd42616c43cf451050bf2e556ceb222d5780559ecb26858edae12f351831aae205d0f7a546111f931b406502bc831d8eacf695c59410cedefd9a744e5935c6315a48ded8d63137ed563c78e25400d5510c3e658f7b18f478d5490db2a2fc547570315e4b8d3cf31d1171cf0c28b1d62e8f862c7eaa0c6294855717ce81d723f4e31354c41944d6babf5e3d8e3f15ea314dd7c721fde743548c1b5666855a687babae644c58791b171afc628c87928395dbf4137c757b56a88821cbde3e671e74a3f4a1e0ead16e438e7005e2bffa2c7d0713814c460992b5be5ed9e8fc2a1608ca1e3060cfa060c0e4141d8cdb22619e11a5cced1353e41ca517f9c2c6956f8d8c378e105d5126a78829c57e6077616afd2e24e104343068b4d4bef1ae50479673d5b8ffdd804a93f2ab4fbe9a497a90952a5ca98f9defaa4b94c10f3306b57a8711fa7bf3041d038fe6f37131bcfbf0429ae9b580c7b79389f6309c2ccdb7a3c088974db32efb694926725c8617ceda707593da1062588eb3f96fcfe1c326aeb85173709a245458e470d4b6b3eac4a12e4add23c8ab3cb130fc5781d3bb06a44e2e82a6f776d7953ad1e5d8a1945483c8ede95e7c3381f5670ec482b3876e02308fbad3d1e7e8e11956d2a5247103cef46c64bb11d3d8443eb75f88d3074543582f059dbb3679a4e76f3a20623089aa536646cb5ca3db0981d7ee3058e238c1a8b20471f87cc1bd2428ff5070ead30c4d8c1396a2882a856719f3d8858abd81518351241d4749fe3263fd70b2f4ef13070d4400421ea53667e1efb07990f410e26aa5dd5317e3c340d91a5a594abc6f9b8f2383385de87c8b5350a418e9dc3ee8fdb36dc6d6158f93142103dcf0f2ffff5b82e7aac400539bcf042478e1a8348416420ca8b1a80204d9f9b7fa810d3b9fe0371a4d73f53f8c656da0fc4b0fff79cc13d7edafa404a39d37f1cb47d5c963b3e10eefb566cc2f328731c0c1d3b2650630f84ea61abb526d36ae8819c1fbcbaf3267fbee129282aa07ad4c883e52ef25d916dadd63d4e591fc74a951a78206db63cf0418fa4b2f9f812418d3b107d2c791a3e5ee85bfb4850c30ee44d15a67b923fec2c37a0461d8897f58719cec7a1a52387590d3a3c6acce151430e56230e757020e541f79c5a746abc813cec3c0e3dfee0167d7ee8b9817cc147693137c7851a6d20cfc6d7cef60b97e6d7420d3610b6c265ee78390c381818a8b1068279698e932baa81fcc1633d3243e447dea8910672701f7f864b59b19b3c50030d84d9d1dfe0964f3c4361e878400a74e8a8808e0c38008718394050e30c04cb797899d9af316a926a988160d3396fe3637d607994819031478bd7351f6f076b9081a496eed6e287b4e6660ca4d44c72ab1f19d9ae1808221ae6dc35f2c733dea0461888f942eea6bc4cddb16b80019574d58a981f9a55faf14ef947ed17c2a115868e07a8200c1d0f0331be40d8b13cfa614b8f7c4cade105d2a537b1fd2c7adb036b7481e0797ce6c7d792795cd6e002a9cf46b37e4ca1a373b640faf7fabc1f4c2d90738fc7a965f1cf0229dfc5b3668fb140f061e8b898473ba67d5f81383faa7cbfa3ef1887821a5620f70f73da1e85bfd0a1a31f5fd4a802f1a2757ea6cb9557e114d4a002d9447c3cc86b478ead03d49802d1075e9aa2deac2105b30fbe7e341ede1a5120cb578ff3ff87be0535a0400a513e9e8ddf70818391c5801a4f20e5ea517907f78851328038c4282b4018886158c3094b5aa59b657bb475a5ff0fb17da1a7e210430c31bcf0c21e359a402ad3f01f6daf723c2f0cbfdac03aa00613c8f3b9e2c464cad63eb4c612881f32dd6dd4d1bdbe6a2881a0972c4b668fd4e6f21a4920eaaf658d5379b5bbae8104626d980d3d55e19e9710d4380249c2dffa34740cda3f8cb08f2bcae2e47dfdcbc7296bae4ad5280269722e7afd44204dd9af6cccc60d631902c9c7a1c7f14752fa9aa9210452cc4a05812cf1e3987954d29a7a540d2090ee77b5c2fbb81a3f207832fd1e5a0fb4873913430d1f10a4cba654bb2e9fa7460f1ea465c8ac6558597ae67f595ac94b59a8c103629ac8c79994f8189b1a3b20ec863da912931efa5829d4d001c93ea54babd71de60fa0460ec8363e9ebedfe9cf23c1d0f1c50daeb263470e31c0282ad81c03060aa881036297dc9a0fecf38fe687afc0c3c81a3720f4e8dc7f941df2e34d5b59046ad880e8b1fbfa672a0fde3168d48264e5966b9e7c28b2e20668d0e271b56cf5e07d1c3d6e2d6ddba45fb18343c5b87102307290e1a0310bd2e73cd68d9935679f220b62e578e84f27d3f89770e0011b0bc2aee9fea78babfa984980062cc8a314cfdbf2774e29475455bee3ef1504b9ce898a57d71a7ed0700549e4f37ea5dd5b41ca7d199ab966bfc71a56102b674f7ff1f299c989432b0b406315a430ad152a68b64d793c3ad038404315e40b7f796421cd7d9ca2fec50a72842106d9a682ec513d56f33074874e9b1b870ab20f2dac2f58fac58e1b5f7c91e33d8caae35a5ba720a730f1cbb56aeb95c9d161780e063099827431ffbf868f53b61e4b418acf3271799ca3a5fac1c881438c1c2e582b010d5260e1651e2313d6f1ae5e71afa9477739c84b15831c6284a14305e506034e00468e0d5085e1ff6350a580c62848f9c4639ddaa8e51e681ba0210ab56ad7bb73e5816e2ea0110a92d5960fb33a798fa3020a7230b3d98dbe14eb223074e410c338072af0a84fb08086273cebc81ff7c5d25107183774e4d82f6874e2cc94cc63e90f363438c1a58fda8752ed5d165e9fa7ea62686c82b0f922738a1567df0e2ddfd204390f2cc51453dcf0a3606180462648d1e1831f4f567acf73200c2c1c468c1286d9a10da08109f2b0fbdf87e17a383dcad911465981d68e4765edc811d0b804d12b45dfe0977a209bc6a197011a96206bc63896ee55ebe423460e307278185517a05109528f0f227ad039ab2bfa1f03c783d0a004a9a333ba8f263309620a3df2e91efbe4979604a1345ef545e7545c321204ff51e761f6243f4e1783047934db83b22de91164cdcb03fbd1dc8e20b9d99b279d9a9fa91a411a8bd62937f5464f8911c75c58ac6a8f876ebddd83cceb4123eec72288e93d74be87fb715811e434abf169db5b22c8174ebed359eeaee08951b056f0c5060e11c45cf938a2a61bc4751d62e8086305bc822f367004a07108427792ec9c59d7f16048a00a8c1c2bf8228cc70abe08e32e20821b47c31044a97c39eb4793297b85205e86a6fb8a0621c81f7f10ba6b3fdc0c298d411034f734c3fc74be7204618a97e1f9238fbe79742034db9ce366a38f3b80b0472e633e78ef5164ccb4a7a8e8f7f7fe8150f3b92dbd071bb3c568f881289952ccda714bde5b1a7d2095f757a5b29a0fe4bcb673bbb3ea565b0468ec811cd543dabd67ca8a801e48f2d1efb1dde5213f7920ed78b6c79a49030fe4147abcd35379a8ae4914d0b80329ede6f496f3e60034ec40da336fd39c3e5fc2a2821b2dc871341fe6017c541dccb9badbf27fa59e0eb40fdee4873d88ef0aebff8dd5ce8194b7d7071f5473daa47220c7becbaaf999175e1c1c68c481982e3fcc9be3ffa4bb3fa00107f28ab9b9ad7bcc7c1dbf81e49ae727d6d9dbb6a1e106f25857f3ffe7181edc42a30dc43cfe9cbbc5defb2ea3c106720e17fe9517b4edfd35907dd0c174ea5d3ae3ae069268a7b876a91b2c5d6920e68dbbd8189b972ea181ac797039a35354fe71e60c445bfd618f3e8fc6b20f34c3521d1122a3556516d3edf9f33049a47ae8942d0339eabbb3fb554da0410652d6f7a7309517adf388028d31902dcb47f7b0c7e1166f4981861848b172d63b7311db9cd10803a9e433ddc6aac7551b0c24cb1eaaefb6e6741f8d2f90b233c718fc7b000d2f9025da3b340f2e66a0d105c25d7eb2a0fde2317c3a687081ecabeeae95638b85f0e868c0ce81c616481566bb43c5fc98c6a636d0d002a12e55b363f5385d986305e5860a761417ac056864811c3c6892fe4c63819479609d5db6f3a5730592fe7876f4ecc38d3dd40a55a596585a4c8fb4a5e563b01e894fa30aa4f5ff8f1ef37cd82bd3a0023925174db9c3ab8f6f532068fc6a58c75c273d8a86140816be73ff2e060c6ea8ed08638c06ec703160c08023d0880269531e75b095ff8b6943030ae7d8a9cb1ba4f104546364bed44ae5cf7f3d6daafc39c1683481183a5936db551f1f7542408309c4f2ca4acff1509f364b20c6dc3d7a2bd1a431873494b066a7778965a657fa485453f47483442309a489cf184378c54d2f1d1288e51be63d67baed1d1a47206669a7fe5c97f7d09b1981943dae58e4c87949a508048bee9837feb3acc43488400a9ddae75357a5cc4f6308c4b06bb1f5f7b1ba6e680881d096ec7ddc92fb83786904813c58f72caf9f2b810610089e3fae55c523c60e17a35480c60fc829f5701f90c4938cdc9fe71f7547a307e4e4664946b3697e9e08a0c103a2677faf742b9e633477405cdb64e63eb44ec13c1a3a20be456f8b6dcb001a39206884c594ee109b4ea7810342e58a62a17d38671b34d0b801c12ccbdf4d6ccc68d8801cf9fefbf9b9b5c06a41d272ebbc1ba205f92d6f740f553da6a8b3205bdc4aa7a797ef28ee842e6441ca957e3566a2327e542cc817edbe7f4ac772f9800529c59435f378b87597eb5710da638da5a7bd8d875c4172cd98cb3246ad20741ec52de9cd9110ba60057928e6a36861c3a7fa31d0c52ac82e3f0a1355ef65a10b55903567cf9b8c1db31a234317a920a5cd15e652ae87957d7ca10b5410bb24b32ccec587b74ea18b53900d6f206bb890f1e3b84c61b981e81f466af3a6958f4e1bc8035b1fc7c8e8b08168565d1af57e3cf95903b92fe7e1445fd4d065124df9c3390d24fbd1ba977852a9190d244b6b5e6999acea3d03c155c5f2c72dd33fd60c844de9197259da7d6c1948e3f7e9376cf40f7e908170ba974796df1808db7d916a1263e51931906c7f2ca399b2581e65c28075f461765b0f18481b9d9fc71fbbee62be407ab74b659af102e987e329df99a8bda50be4581fb777f6280f34e602f9f6db2483461f8ebb05f267fbc71e861f6fa55a204699d7cb1c838e260bc49c1ea3a598079fa5071608193ceecf763d802b904729459a96575ed87a005620cd86776ccaaa40f8a18b9aaf477ebea8404eddcbb0d9e7e1a99e02d9738f7abc3125056277a7fab5ead8aaa240ac942e86c63ceb3a351448f71d644772ab43d44f2078f89c37fa3277f94e20785d66edd63481ac19d37ee39ba2d34c2048af7a79db4b2056d61fb7985b23539440344bf17097d9e75292409e1f79fc48e443ce8b04e2ebe5f5f1a033e31e819cde5323105632d5f2cf6ff03c8a40b8182a591381f0f2a3cdb1109bc33804f29cdc8f7b3cfa4c31140229da68cee92fb11f4120c867941e0f040239cabff86a6967ef7e400cf735e3a6151f90c26bd20dbd4a0fc8e3d468bd9b5ccea3c20372b40ad11f5e3133bf0362e718ef1fb87a468d0ec81597e27e4a56579901e48094dda7736bff38587a0038200f7d33860c6ff9710fe00604c9945bc27f18eff5006c40fe51965ecbf8b0f3a516e4d66479dca30e9271a605f1b462bc98dd720fe5591072abcc4729ea2cc8b220c998e7687b2c883f96e739878ce154589083688e778b9936fe0af29565fb2c579b7db882d4d1f9e9b7e45690652bf76876645610d5a762e7782e771daf82e01dd43f46bf498bb12ac8f395079953d6e3b1c6a920eed568ea4bd17c438c0ab26b906835edd186884f414e1633c8cf8f36746f0aa25d4ca935688cfa38a520c78a5dfa397de36c5210d3aa939a75e9f6654741faf1e78becedffaeac2848fdc15bfedf6cd3dd50106eb7fc3586a020c858f47d9e0a9db14f9073e6c1e761284b91294f907a68fd8399b51e87b49d20659de85aee710ced7382d0e963657aaacafe26c8175566635ee90c6b82943136e75d3d13e490e9338fd38d09b20f5eebd7be0471ed2af84833e3a62d41f22eb1d23c8f29a512a4a8be4dfeb945d5420962589ce941dc65be3b09b642a734ad5412a4fca153ea4e24c8836fbf8f151a3f7a408298c3fa86b7c55c1a7c04316f90cd3d28b3f1cf1105fd983796963682b47910e39e933282f02fa73179e94de71741884b973547a9c95611a4158b96297cacd83c11e4d1ddfdf0479e7c7c3922c843ad5c9f2d550cdb1c82a0a1e7de9d3104213dbe58b84c77bb10c4749bd5e96d42103e8fdfa73d8320b7547dca157394590441f6179db9640904d1a4d32fecc78c510104294ce76188ac5c1be53f90b2f3c514e9a61f08e963df50ea6a5983d90752322b1f6c6eed945af281bce924ce521afd78e51e483d4e792475e6831f87520fe46ad1d07b9a2f54947920c5b1737ff9c10f254a3c103d6cecd16f7f07529ed8b4bd5993f86e079285baa43de88b6af13a10a79385cdd1d1b3c6d08124917941d3bb78d2cc8164314fae8fc4c5df7220eeebb40f53ecb88f1207e28987e8b20a1c48596f7e984715b572fb067289fb4a85ccae36dd40d4ba1e6d5e340b771b4839e3a2a6f4ea7a1f6c20a6d48afe434911cd1a88f9c7e98392d5401ee6415b0a173dd240ea1cf5f87134102e8f5a56e7e1ede6cf40ce63f7fce4c136dd6f06f2b74bceb7e78cab978174497b3cfe0f1988216a2ffa9ac4d33306c276f215ad1831907ab8fb1d3e3649bfc34038cbe39f8e1fcdb180819c4e538d575bfebe5f208edf5a69fbd0b2bb5e2046dfeffc74819ca215e9796fb62e1788195d593d2cecdc02f17d78e6e38d9e8a530b44dbae9cf9fb7cd067816069acdf6b6e63e58105d2788e9fdb1e5e81f4e360df3d0aa21588e76619f3d5c44c845520fdb83ccb76ae07f7538164be1d7fe44f819c626ae3fd8d65cb9102412f44e718bba2cf270a24cf32ed8b0f1408fea34b9b99d3cd749e401ed4da5ba8b8497fe304f2e8a73645c67bec4c13c8972be9c4cf046286fb519adaf4502e4b206ae7e1e6f718837d4a20ac7baa1ae939bd9240beb14ddea54935622410cdebcee28772e9a247204f5e65ed8ba1da4923903632f638e6875e1681e4e3949bf3e8c709800884d8da73f11fa5edf104300472f679a560a7fbb59d008440fe7cc9db4d296d6c27802090d2c5873a4d5fdde804000462a8c5bd6ffd1f566e02f80139f57de98f3ec5b66302f001929747519d313d205a6d5ec6f83956677840ce263eb29aca0e089fd2a3f5a3145bd10171622dcc87516511e780a07bb2395bc6287f7140f08fe925de1b90ad52fd300f5601d88064fb9bcbfbd3b793b520945d0fc226aff366b42007d7cbb133ed63b46641f01eb69c8fc56441ce3eeabcaf7f2c485faed7f93d0c163d2cc8a3d4cba1739ecbb8bf82681f96079fa3cb76dc15849ddb8c2ab368ddb48218e7f64b438615a4f7d61fd9b18cb25741cab6a21add7ec3585441fcb1a520653e16d1702a489f7b2c5a174345575490738e6be6e8298839df92ac5cea50515390ab3aa7ff3026af982c05e96210ebf98d7f6992823c761fcdfa17b517d62848e182e58f9a1d62bb120529f76037fcc04a3a5d150af2f9286790b40a1464b31e9f5ea4586d559f20bec5f46df6beefbf2748e1a30e31ffc1a3533a418ce9923f9d2cfa56384174adcc799cd904613e6d4bcc763fa69a20cc5e2e75d7a095c94c90ec5b722e7f900d4c90d547ee31f7df47fe918d4b902db76ae54d32973eb26109d2e64fb1b42315a6918d4a90c7e3904bf1266746231b9420968856d5d8ac66cac624c8a99e62a32a661e5a362441960b7ddf97e62bda8804299387ba9fcba9fe751b9020a6bb1fcc48d57ac34f10868eb72b63e32d381b8f20bcec750a39bb27d6920d47902e8fb39b47cb39ef44560f1b8d200f2a5b36718f1f0f4610d7f25074c2c23fc98579b0b1087275c8264defe3711e9612b000560b2e8c1c3756b003cb8622489aa79baa19f5ffd94804295c7dfcf8f25b76fe8820b8e5c1db868c9ac9ce43907a10bd6a616472d5870d43103d6c8f473767a6eab3510872f8bc871ee6f48d9e070ead33cf11861848087268f538f783466eea360641d4759b8bae97d8cc05413c954ba9f3e02ee698c70e6c0482d455d92c4b4e6f4e711b8020871fe4e57c1d6eab0af20fa41c3b5caa0f7a98e40ee3310c1d6214f6035177b2939ddea6686d1f882927f3e98fed530ccb175fe4a080175ef0e18091c30527f00e808d3dd8234dc98e91cc966cf1716d86fc681a87dad003d1237c9cee153ff240b0d98ef9d1dc7f98b11860e081b41a7a2c99e3aad37a38b4d8ecc8a102bcc32e57be3fbcd90e04df1e8bc97ba5acfcd9510772ea8d71a9e36ffc21860e1d7420469da8f4231f7320b4fcb4e751a545cba3e5408c193766a77e9c365f1c0812392726a779fce3190ee48a412e473c268f4d9ac0c61bc8daa922ef5dbf2abdb20fd8700339bcaadc06f278f73abea6aebd7b3b6cb08190e15293e594417b536cac8194acf326cfad163df56a2067ef51849506753cfd46574ad140aef2f067b107b3a7320ead3d03c1874132a7cc99193f1e879619c82fe2838edae38ece9481d483924a763fca4a31c2a1b55637cc5350be682a0bd82003e9aca6f2f3472beea656076c8c811c437b90cff29a1b3e3bc4409eb21e6e4ce95fa7ac3090cf2dc7f855c9ddec06810d30102addf2e5c15a05b5ea0be4161fe7718a3ea8f8ea7b81d05e3dbc590f7b9fea02b9e7473fd0d8d8a3f7830b2497e8518bfef3c9aff5808d2d102bea8f7b7c29c4800d2d10b3da9e871ea6af920d0236b240d8ad4f1f2ba62e0236b040ea8dd5b1d43ede6d7f0542960fbbf2a01b591bb06105726cfe1c6eb56173d20dbc63a30ac4f7515f56cbb9969f518198c7ab31e79d8fac8295011b5320458b7697d931ed3f940239daa5a37cf43a1005b2051f8fa3f9a0c4a1c514b00105f254ec85bcf36f7c9aeac87163053b1e1710c10d62e30932b0e1041b4d90800d26d8a12e95d1aeb2eee9638dae1af7c5b3b1041b4a207eb28cd1f9cf1736a7033060c08e1d250330682fbcb09104e2887fb459e770af3c72fc6349e0010ff0c20bbe61369040bc8baa53b9fb0884d85033961fd93002f9b673f94b6f1ebad93eb0510462494854ae8efbd0e24604c266c6146bd23e8dc73686408abe2faee17437fe47051b4220dee71f85e6b2ab563f0804bde0e1bb29d36dbc6c00e1a8b6ccf6c1a4c65a571e99e5641e489c367e40d2784f75da6d6b5d1dbf7a800d1f90a3aa5d5a760b9ab2b4d103f2d7c6b6eca492115b086cf0803cd7a359f9713bc034b23dddc7834eebd8297c73ac6ce88090a9bf27ff772ba4692307e4383f4aebed9ec795f3b08103d2a48f5f27a7f27894171bd8b801d1c7d6036bbdf075dfbac0860dc8d175a372486bb89c6b41cae3710f565bfce73fef61d8a0062d88078d1ca8146e44e3e16030148804e260300c089ef21e01c31308001840220ec542a15018e8c1b60714800359301e3630242622241214161e87c5a16030100883426130180c040643c1404020760b63a007f156b128723f889705a52ba66c757e59cc5e6b26fa37377ddccff3e9fb4c39611af61a9dc76da347252b72c74a6adcbb2d8e9ef61f00eff2f6de96b3f21c98fbb4d953c2a343a7c1cc3b3f2b751f2e921d4b66845ac632d64ddb25725c3678913ab47ad77544eacc4034e49372f0cf65e7fc6acc22e763ce170231ee78e57e1f41471a6cc989ec8c9b9dc14802d119669495688ab02d4e9c4d647657af0cd684ad2c3d17e74e5e4949c104e2363969cf29f651495af17be704361f9d3615cd481984b0a3abde49b1c543fff4413a24935c978b537fc226427e49bc8a1ea1b228c41fc6b337b74a82398f129b4a7342bf6db7299a5f9405d69d19985b61f7c6c4e1f1d475669a1235c03a83cf3e1e60330ec4d9ec949f81a73cdc6fdc539f5a7b5533e1846ab9c54d2277f20cb04873aa1d4cd2d8162a1681d69cce45ca2fc93d986cf3865d0d8628c8f9bf8731faba616ea498cef44902a44312c9b0137dfab5bdbc1e5427f74939274fe455e05a6179a492e943774e992719d6d00215f35937b7232a80c57b6fa8d707ffd6db9d9ced5fb4c3388b60da9ffd9f4f79cd8ca6cec7f4bf8c57ff58bba7b356cbaabde0d3461e93b012cdb11438531a0f9044f31776b4d8b186eed50d356c95097853fc683d69b40fbc8a0d77a7e5769ea9bc1db1c2e174ce6dd616ba3ba31cc93bf919fa2a8bf1f621f2b4c7e2084cc870cede317203170c756dd98756554d06cabaa5a8b36fa7842f0cbaffa8f4ad4d43702a77869e419af2c28acb38dd32fbfb951a4c97ebc938f34f626686e0c9596b4ef15b7b4ace9347af8fc27c14cbc7ec58dd9a099300b985cc34e50eae681280e27e7b9d9334ac83a01022258cf3fa29f77fdf8062b04375dec74d5c495939584a84e53bb043d20dcf3e44b9f659176e397184371cd692ff83d8b3cf7abfba4c7f28bc02833431e10fcd43a509350d0436dd6bc31ba57a0912425f94ffce8e9fcf16a510363cfbc9e19325d113f7292a4dbfc8e11f763edd930bf2cf052cae7f498b5231a1b534282a64f6929812441014e263dfe9e6dcd7f7f114079d6060a70b4aca049e0d6f6d66646be019d3803ad5c5c18767eca8f15d85f4c163ab69ceae86291566cd2a2e15b8e4881f0f77f075a12193de6531059bfeab5ece8edc5ac4ab295a02593877b7983c432fc2961c14b0a17e7b8ca7f37bd8b99cb46dbc422048b77b97404680c9b56eca5ca6ae075fb35f528fa462e8ba211bae2a328a2de8a1f7e0adf1ee6d8a143db9b742a36af421d25298c031e42048a104a659c8a03c176aa68aca729286e6458349f6d0230b123ed963284314f12b69999fc9673e8aa75b0a03cd00eaebf7c6dd2a51a65fbbee750bbe1630dfe15c8d84a6d57147f34f99d0bd34c77c1c524190a50d2b2e668b04ee955e8bb692cbb4b1d7849dc478e0907cf1d48e2a3b4721cfab547e96b47fb3038cacead615d2f2aa46dae70121b10b550a6c98a7ec5082b9bc8a14f2289433943ca6ad3df03948beae81468d11f69994d17e480f879bbbf79745c2bc3c0c68276dca8b41ad7472ebe75338937644abc33020532e5980691136240f2c87d304c01fb529f4c98cf06e386fa81917a5e8f76f4955a402f4988c9eaca4b75e2124e555f3acdb16e92ea1f73aa6638887ab90f8d7e8eab594252a365afd92763a3a8626f4d92e631066b376848b45cd137edb4b60e300b9b16f610bf1b75ca928e82fe7af999656aa31341984023cfb67b0be30b2f62fea5a9e78b21e81df75e961782b78a40096a7f519fb854573c8293ae94b4f6ccda71ae290922cd9333a6e4764bb318f0c36158a757122b3dce520ffd8251eff657891a71b968b6e6921838e13b225fb160efdc251012c3ec4eec68415e4513ab0fec89088cce9c0a7ffc06e7d5f7accaa0c2a48c17ae956767721b047a6c9e745213fb77841dc075151b29ba80ac20271f8078f5e1ab1fa3ff2b4ce9a60e404160d5195f7fc87ff86f7dae227dcd272a0499ffbd406654459655e3cf00127c2c7c1faffeef2e911f1e7655cb118bfdd70fe9772b7a84cffdbda54428e0dfec4ac39d3c76e1821f27a00e2dfc217962eac81170aabdf1e4f589ae99aa6bf185e94f68bf1c8d05176b36095a32f3cf40f8ed8fb92b68fa407ae0fbb1d68d7085b0e0fb01006084dd4e5a2a7bba89acb35047dabdb4a771fc340130f92442a6891fe76baa6bb3e79871d2342ccc831319f78477bc47d8f1170629c6d61c33e73d4e571727f1a1b89adbacd96d7eb31566a0a051c78af275629e589092528bc65ac23b59f4fa0d7137253e9e6650e1b27599025828db88c9252d24685b2e437a31da40db1126950086ecc681c9016079490c6c48e1dd34dff27691413007817c5e13a5ac3780f2322c04242511826dd8e94e08cdc93ea667a798d50cd171a704cdd2512c408396a683746bda62086a83e8d246eee848ca3e1b12ad4617b79d69787c7d0fee3b0d668184a2dbc88017fbff33081409519fe0964cc54c920cac00aac3860e74017b397b908d3ac51da4b80eb0a12a3e2ad8e423df21ab95ede17f442bc1b0f0856bf6b099aef00cb0d57687b26887ae716c2bb068fc1c8753e98338dc941204e09a04413d4678902f3808722a84c112369ae00df984d3675fa4e8629e6c6d19c15e4024e2291851d1bc11d3a24b89feaaad883e5dfef11342968369bc6486c6dfeaa707fd2c60d74625b76a4b48b80760dfe211686f6e14ad9f20169d81028f6d4f91a2bbfcf0db4f41460464af435c3283ac4b9130ead61067d340e1c5092d32d5cf75d7207dc0f8fa420558d8693a97b7c68c6c70f1ddd684b0a6210f7e738aa30ff040809766608c30fb23bee4fab185fc0d314112106d6c6d723ef874250057c53d2f08408a90dc87482f554d8196b0f3f74348bc39946172fdd37e92bb66497f4ce3640b98a49873425e65567d91f3ee93d1315fc1b593b1509892af1e827a889b9520ca5804548b861fc773cfe13c8947a85cb00474acc49a439c6df86152182346aa6d299e0583faf48099c42ffce4c4a6d0be89697953b42194a0e421699051575548aa900f8c7c2162d7a4579a18ae5d88c57221ec6d48b6d511aa8af8660cab855ee9391243f89a64d71384fea18a9265fe49f25104ab5e2dcaf2a7fa9395f3ea468936ef02b131da26bd232d29f3af58e5097350cbd0b2b75c53a72636821e8d003f61602afc6abb111d9d0ac34294821a9e7710f119472b04ebab60dcd0d3f68f48d1eb3fb4d2f8175501a83dd435c821c028acde3308324e46875dcf8cf415b3c600534830860c6bfd206c4bdc38dccffb4ee0b49a38d03c9e7c125a89e1e0d0998598d9a60e66c68a523ae1eec812c56b908e47697880c748110adf3c47117cb5e5c2ac1c39e94c1a232e29ba42d1d8c37c91508abe576ba49f44ef93e1d601d614027244c37a2472acec22b9cc146f827f6daa0413199b2a6c7fb1a8cfaad246f05041d0c6a333cb3b0c9d0edcab389332ee6abc1646d831bf54fc7129c94a9a75ed33682b5cf7b6fb57e24b42e2d398e4ac7ef2994e93150ac8f1097fa70c997f54b3070e7ca66c64353f287307f1ed56daacff4c7624144b2d418080b603afc003511f6970ff053dec9d1607f7257ba8f1182f72edc714c7c52765d4d2ea1b19628259efb0351ac1b6db42b98b384d8167fdcea6983e77410531f253ddf00474675f26e6681955c785bbb8ea86995e290298542ace841c5076fb15db4f017a378ab32cfe28e6fa67f6ab3abe9fad6c2c19de0f8e56fa97cbb15b1c41eee27ec3403a0e2ee429d890ed988e1d08effc83aebbd92b175689d83336f8ca04ec1eda03eb616d06a6ab6540ab250370c34bec1b3f9cc284db3abd32d096302aa4b3c27a4df4ae6990d1438cbd4a231cdfdf2c81a0e117b728602532683d122f8ba98b753db8ff71e66c05f55b77d63168b48a53a4d43a80599e9a3bd9b7d33312de6d9d0fff1507d74bceec217148e4258df817e2f85d0b8f917f1888890376ba658297d866366ef4ff4bed20750c8cd1d6ff638fe50a3a535e43d4b8342fe8833eee576949954200809c88230838ed490dbbdc40934a426f15ec76a5c9b32ce05ba08de123d2c1c8d8c610294fdfb8f638313322baa699b60ae43e675f7ae5509e00cff1a6d7868c320d4356ca72a48159efc325615e8630f77c4dd02b6035878d04c92351520dd38ec027958fc789ccb15d8897392e84dfaf6befeee7270babd497dd56edda0dd85f4582892319fc668dfd3c2cbeab14f473406d628cbdadee703b823468d78fff298cd785b8e31183d495271d9517e3d56ba999b32616d8aaf66b25da8c7deca4963d0b4ac4c0ce80887b5a51f218c45b69cae808843dd3dcfa82a5968b3d9bde904948b097937d2a931601a7022817b44a83e63fc901e217886aa1f2c6e013c482363cdc4b7c4e8d1cecdeec6b06280f97d90531e6e610b8b5dd54d378a59f046e756c8250e676e445c8b672a847cc0e228705c20e444d07b4c83b2fbafac89c7c9d561aab0ee901482db93e153bd09ff3b9fecaafdcba9a5f6780c6903799e8cc8689819b5c3e21f8efb91564f800eaa84906b6dc5dc710dc40b2221dea907aa105f9eeb6858d13f422f47e70ee67bc9bc79a49684337a081d1fd49c01eb6cc7dd246a3468ff41b388a84f1318ef2fcc74683d7cb9afeccb9ae3b70de4e5cbfc399de7f84d94db2a5684be61402ba926c7a3c5693c4d6ccdc3ca152abddf0baab66921469f6d7dc9f2050736b101d7c7a06295aba1b100805c4dc3bc24a97af9b01af18e71edc119b3b19c60d07ab6edaf03fdbec7910dfbb6c28473cefde71bacad13e1bbd5f7cd56eb7ea460247921732917cce36d5bf4744dc9ce120a73d1af8b3e40d57cc333a4ed711432ad075d4dc886627ddbcbea934321d9080462ca4e1ceeb7118a8b860032a5866c42fd8e37b4a136cd246aace70e6ef7b7c68651aca37a67bd2b357e5f8b1c721bd9cfe34b086926b7d47a24256686c6b68e12bfd30e4b7ccc69c8dd4195a01ef4f4a6453807ac404ef970d253b01bbdaae0b1d7ee948d7299e25b3659185972e958ae613d6294c741b687f5f14c5fefcd20fdaf4227275d06f7689f1ed04b68955120c8fadfd92d4c808a7e89a3f29f0d38bae6f5b7338a1d034a9c4eb50b3bea0c20b46acdf36501101ddc564fe26a5a8f767e623feddd35f191c2eb6d226341942fe20c7ae77bc06e22575c91a310ebabee0ea6828ea07e52862c41d1c54bb4f60b2362985709707b12ad08667043de0f98d48b09f3077aa14b01b7de049c8cdf251c0ff9a45360f3865fa58562b3b9c0e521280eb505bea1887b8b42bd16ef2ca4091daaadcdde59a61506d2c6383255eedc69b51dc9ce6dbfa089ae864e6a672d605bdb98e03e1b5fd5e0a739d048194df14dfc76ba7c4695d7948970bd6b121f6ac410c9681c706dfec46c198db66cf7d5b773e3c9373793af899b826efee98675d3e9f4723fef3eeddddd53e790c4d8120e36b0582e4c2349c7d0b67a78d18d409117cab8c4f273211d203595ef75812e25596392e5f352860e6e38fb9f6a65f43e0929aacea2cca91681c94b2508d07d73813f86d58d83ca8fef6855dcb173ebb0f4f4bb675fa32dee544b26c1672c3c82d43e0facda4233e1049208723b110573d04833d4961356811415eefe6920ba0e4712c9eb368567968f1fa18536d20f3bfb0fbf00cd162fa20b458cdbdd409e18031f51d14653a55ca19953305baade8cee45e59abe5db2883dca21e26846c945a14409defe22d53f3f2b8cd592fd70cd81824a58617190478c9903aa5020eb3050f00637b017414f2c703fceaf09c543cf4032a24f5e290f75a63914d524c68254801a54f433d17ac96dd67a7ca7b975503b63f42caa56af8ab0fe245f4cd0c5ab8433ae68953e01008d6bc5f22f0bd15f0c8324cc92f70596c99a159d53b1d548abe3cb2de63b893f722a1e369f13032b018d8ab3a51bcd295765b1dbcc6281490a53a9fe481a6cc66d6ad0620b55f442a29c49caa6b09f79b834f81d616430957ef2edf7f0c1bd35496935f865fc3d7bdd15ebeffd66ade51126f62c29151c72dbeb5212d157a8927ba1ad1ff160b2e02eac538b498abf355562be75974260714f8dbe3085c9c71fbf2a64fd45ed25432a2be45c15e9a6fd851a48fe8a443f6326fd05d72f06deda5c3f9c15485adcb9c03c8ea2efa2056b946e1d73bb22c5abbb3950043538c25529e9768c90ff4935d83f9900dacd248946d08fe46e04e97504b89c8eeb08f3bfd391181cab32f3659071648f086397b978a24973defaba70931f268eaf7613b0ba81508106df1b09c2560e193489a024cc584d26492c81cbf9f9b65793bc769a2baa8c8f141875f2c38108aa96cc8f1182f30229c7e8075f845e2945692c42874addbb399f28a495b4975a6223d0b7057bc60d3a3a46ae4b311e71f7b2aef11cccba49c9bfdf22875c92b4b3c5279ba32de4ada913327d3d5d8c3571102a3c9601909bbaf0f47dfa430674813ce5895c32795ccb970eac496e78fa3fb8b0f80c4ca37cd26790522c62e3da54647723b24a4f6c5268548d4120e4f3bd0349f17615605c6e799325357f69d06d8b722efe59ce67bdeb94cf998834e2088e766b2f3e419814510cc48b1a22260f19bb5d59a3103ac3a17d448ea3dd974373ec3e001f706c832abfc3e98d0398888fdf697887c5b6073898110fbe0aba017ad1d43ab2325a6567601e652810fa6df0868320dbd0ce6061d8baceb3865ac92078378d45f63029a27c88afb53d431d418a940947c4bd80d14699b138b9ddd240b832990147b523cef72e4876b118bb4b8a7fcc8807501fb114db615621b69f62aac938370af3e312516978243d1e42ce9882000dc0c4a7eac6cf9a65571ebbeee45549520f5dda3bdc33d26db12ef0fb65a0c0ff9ce2dd34959e9522275c1aef84ca254596b4f9b498343826090361536d34f65b88097cfe9545b48acb467b5cdb9e73bf4882a23081238fc7c30a81fb972aa271320a83e8564e92ca96a32a78d2c5dc3bb8252fe447394be2ede2d520a2593cd617a94989bfb0a2dce90e67f5b9e1992598f2d8b0f26bcbda46cc4726a402999b1710c258a70dbfdf78ec2cfe3e9dd15317ae932ed4dd923ef55815af8b174c5c801407c73d5fc22d2dd35696298c2d8938343a3730156015ba71c652761d12605eeb10208ee9240a9057d54b19f9aa6d69b9b114bfc36eb3ca26d5b89e85f2f82407f2a90f26fce03713c8abfcd5c1cadc6c6ea0b9f8e09d8c6e7b158c685240312789f6917f965b7bac6df32c3a27b05342dda91017fb9bbfc80ca1846cd127f2277ec7feb3acb6ddf08c9207287b0ebbddf4a36f2011dc9f136ce41498499deb3f6f0fb2c30513472befa4022a543d6286c4bd85f36b8f858e289da22f412c1e4567f0f3e53510e67605645f681f6bd82603e10f948d4fb0c38ea421db865c8c8234cda396893c045cb622cedb4548e41a8aa95176f81734d6272cdcb4b213a673fa2c7d949460ecefa881da08458405ee24e6d02639b2714a060dbd31a12379e4446e52240324429d84971eab1d825271482e06000ca884bc4890fc2a3d1623e4252c5aef91c65476cda48a94b69ee67b35c5296f7fcf287c0c7670d735cfe9d9b445ca1a770b49a95404a4fd614489cc8555cd8f8b40e7df1e3615fd89d893806ac8e95d230500c1c816f252412d7826c6df87f1ff4088d34eb52086aca8c4cf585b8bf1e5c89ecd7037724700eaca1404d39e1d0941f0d7bf885ac6c90a357168149c6ef9f1f0c5e8a1d326f10a9d9d68c04901ea2d62d45982af4f24c0a816dcd5e31878e470521204691234cf33763e236447b51bc7f566bcb6cc626e8e85543950883ecf8d4da8bd3c3e548be4e96ca2f67a96db4bd5761d2023a07d2f8b69c86af403f2a1a10c8844b71189026f2a2a91149ff64f50464f07501d53ad07490c3865d524c495abc5776949259248faba1882e22785a06b6fccc53ae8bbb9aa610b4830a1cc8ee3bc11dc2562f561c5f7e27a50b94062b7d16e0474823de0ac1c109074b24deca0d71f86488af462bc9d6312f45406e8c4efe1432b2ad25a677acb309e6126bfa68c09b42142ba49e67f0bb719f24fa31ab97234c815fec62c8ef421bb2f8ab080aeacb085c71f15ed3c862d2b2ea14741859cae2587f829506df5bc98c528689e227ce784357e382022a470480dab5a2bc8649cedadd1a4e2c4a326cd4d380501bdc2186160e532ce6256bd509a805a2ae0216c091d3093d1322d13a6fc69158b2bfb1a49565d397fd2bdf0462a546274946425f64b0568225b4e28dd1bcced563a8db8c25cef01c0ff7961422b49878ef19acce3387598ef380d6d1adeb14d83d547174772be1f0dddd6b83d7770d26dcc0b1f7786ffa14822de64603ce47e2051b53d9208a5a606cd908c36fb782b9bb3077a4816d26a3fefc28add605f1c6e7a7850129f80c4d7b84f8113b120d6c3f67c58b17f8cfcc4748f3d362f19c6f531cbae4b778b0c028d3223d0989b18f9fd39cbba5a2af745a86a9e6354bfd34664da169045d26bde154593673438f703b07571e92cc7f944a37e5477e0f21bbfbe012461dbc65e8a7ab3cf147ec691bb15cec161a91bb4ed6b3dba1684a5f86f56d8f736cf1e914b430b55d5faf322715a71331bfbd0e3a07fd180098afeb79c45e646803b3858bfdf8d0145c1e1342c7a28832d0c8c23846c3f5ec59504cceb0be4c2a597e5419b5ebb1d406fc86189178548456a5d6fdd338c52c6ede7274231647e0daee9f0f7ddb6da647d0972045a34c14750925502b020a77df9b7bde31cf97ef518bd853da7a46b2932b9bf782982711b6b378ef2b40a9a5e8f287e479398d1f5ea334adb6696829c8351a55a2f461d9e04c4086110dfff077cb5bbe22dd7b9cfe041d5887163a7a19071968492f90af2d4ccdb9a57216853e76b93881190c7d84f58710002e2bc4fc29e93b4099b389cdc9852ce5a3b6391099c21fb0553ca19e7cca37ff9ad3b7eb0f642862c17f7bd4fa2cacd2fd14509da3c40237bf89237cef0a16903508ba4182dd17afed9e23a899292468f577c669441c2c209a22e7a2f850048ad1a398728443329de43b8a37396b20cc82b6e96f181bb7b6015035a2de08081f600672dd84667dcd998a01a969c6834d267c1b1740bfb9a027ad687004d19ffc1a028fb13ad209fae4f508a8fc4cb319e0fee814a566850d74e39595059ff57cfbea73361412f0cae14aa4d4e667314160dc39d7ac7733aa4aa93303409b9d74f8a816f548986afce09325f7e2fe2da68e2a3d06b2a0105df034cb07980bd2f2e5663e3e87aa78db282f3ea83d3318b7f5351995002e312daa8523d9b46b297d0efc9bd2479b498fdbd6ca51cd7cec1ed941b21098f067aa3a063d1ba983fe2e7c7845c7f592b836ecc1a534c5b00cdd925444274c4d533f6b4967ed8892f2b5b8b4ad05f2a77a9358e192511ee642bb98cd741e63c82ab06c85e0f22c5950b73dbf154f0423fc32c9b836c307bdf016e876ac87c5c72ba8ad2d60eb761a85c475e8243648fb58449b500a615bd806b04c3ac015577545bba6c6a8a17f6896867ed914c03d1efcd3f14f5520174928f96c1f60512d29241a0aab751d80bf55f4353d1ce0680100d338126c60882d1b53dc94219b0d4703b4ba3f0e67006b65db31cc49047bc8dfb807c381a1f2e2971fa729740646907f3186fbd79ca5253b4aeb1ccb542851261ed4589d0aa8022f11849a6edf39ca02eac9b801c06ebcd19fc1d9cda80eb8a328845f482a2dfe42d3ed579a7cf9572abd287e7453427a1941fbb4b9bda157b904dcbf14912d948e220600215976ae8746a43a4f812d4c1e1ae27dfda40f802746de0f787d3af870a16c2a1d5ce871f96c8335bddecd2a66f442219b1e290c7b2e746fe162e7e4e60c27fd5050f7677dfefce13077a72493c51e03803fce0d3b725d2e42455122731f2255d721a8a000ca58bb26b794e595523d3b85382fc3bed1955319b12099211e953f405897d46a5b97aba4759e1162ed8f7a34e1a51866883551c140bab53ebd116d9c457c9c64a05282bf5bd1c56e9dc3ae95588295aa469d4a251a5f6091c04834b5049b7247b77abc99e77d0bde57ae47c2667a42bbeadf5ce65c3a2eb755a9267fe5f392a9ca517ad413391b5ed55c8edb06befefcdc6c9e6c0915bfadc3a055d50f5bc764696b22e6a2b97dab93437abf26ba2a04ebbe875d05c74c17da626cd4d8d61092324f315f30d618e506d862601f46ecebba875702e5a6e8fcd0921664aa5b8f9beca992bcc85fb6b1482d2d6aac3a54f63fb44a4e94851c17583e7f2d6bc187a4336043e53f351b2be54cad5a5d2ca489310cccf95f6211d2299281af2bb7f10a4dd3c02e75d69d03dd575658342487b8faa5518ee29871acae578c41e645c31064bcf1ab28fd4808b6379b4f2d1a52701a99be304569a439deb500013e2435c7b41d4322fb164be1cf223ece4a45ca69ce87838a3b6dcef6abaf986865dd0e7edaccdbce7cac483da0e4a28dc14e87af227797668555e1bb7e9407adc74476b0f04cd980ac9c11b3173c67895231bcbd1d6dc523fc50a7b2a7bec1974d06c55441259b70c6aefd6004365466ee7bf85fd5834cc060722dbab7fef8cc55e929d7228ee3925358faec7724b85ae652bb45673d3d7715fa588700367bc8a25f957a5731dc5cdc5ecd509fa35cd3b2961a4354aa86b46bdcf8573dcb1e3b74cf47ca0511e6bdfc3e93300ffe818d9ca5340a2ceccd0165f6a985ac636a3b5c6dcc27a0905ff45b7ca2ebaa27d8f1b13a9e01567b3b4115a75c3213e275be81e4bf44d4972f2365fc7ad760fb6a66b9dbe29923280d451530e34505a5caf80af886118ac673514471ec7597fec986c58d2ff30ff964dc8bc4da1776890aff9958ac632b9b92f6d91dfc0fc688d56dce017350137cda20997c12c84ccc99129316b9002b63179107669151b36c1cf44a74589865265d66e59a52d84e3b06554075e37195c4daa4801262b473dd4aba1b82e7b066c0c8b0a55ae01c40dd8864b7c05a8245980109db757b69880a3c2f6151269c1b563501e02a32e9cf2386975821fb0168caf2de2554cb3fd098bafe70abb37cfe48bca5a7bc2d2d55d46af4955d1778b3efa3bf93fd14361542173071aae64d4f36ab541cfabc41816d0063798bc6c08602dbe41982bcb2a6ea3029060a19a66024c4031cea48a3a66d67d67e03ace2cfb0023634b032a3573133abce64cb58a23ad6093ba362b21187c106e87ebdc4eed166aa335ad4f0a8db3ff0d5d3fc83311c141498000d844badb63243f69e9978f01abef2fa8a2a865cf3f6abad21f505f3e6e4ec660bd1ba40144b806d94497a271f191a600510b4826c119b68f8ff8e7615d14839338227c5118c90dfb0a93fe7b37a3b26298427c46abb8e0eefd91c8f4276d6e53495ea6bd8822ca5fa07d127cb62cda927e1d56db839a509ee3998d8af9286c0de7b41718e6e838314b5022196e12cd9f7c42ba51129860593e63d59a98d0d7329f30e0584e023048bef8eeaaf5d5371bd1e90b0249517fd120032914172ff809ba02777315ad9674cdd6eb12b8cdf6bed037aac2eca633785a38ffaff1841215f046eceea69571a339d3cd6ff24ddd0f4a0ed38184bbbc258ab1b0ea449db04bb25525977ff169c007f790b99835a756c54dfe973f4680448ae70e44355694ba9b416798f28fbf714afca16fd7e7a82ffd699a59cf023e731499a62336cba96b47f16d940e3c60de6c6858c0b46c140322a97dd2e2b00f6aa9d7262a13a9b5bf6f948aeb612b96f1efb751a5938c36d18cd82ca578de0f9ade81851811f918c0b58588605008a4a7456c769847214149b19fe0b7a0530ae550d6075cfed762b87de456a33d04d2e5969e82ab3d67faf49244122f1b2c77831938b6353925cc4f454cb4152c29c48461bd2088f859f3ac81a9100e13baf1ed209f9a96d87a46c16627bfa77681f44503d34e500f345e1ef12b6fcb6a8e0c931578a4766f0c12dc0939ef5de3737e9041cab6cab129c7fb0b725ab7d4ee2a63b8f903d09eef2defa1fa8224d45b95f6ace36fe2367158c31a48362181eba369955546f8d6abac34b250eb8d0d506ecfc656841ec7810d06d6b101725061bcc921ca1b817f9709f4855451a1ecab625b3beaff448335d3186be1685f8c5ccc2da8252590e9b5803089540072cc0abfe1dbe352a30bf6c6e086fe5ff17028532ca006735bf699e97dd72d3fd17ae5d0bc70acc87ba7ebdbf936c02d1383eeed5f9479bf7bda3390eaf34f0fbc0d17f6d0a4c47b8f9bfb3825cd6313c8013597d104e8f1d09b8b7f9c11eaa9bf170e9f321a6d6a9bce21ea1c515074aeaae2d7c9413b771fa08b2f36c2e8b43aa4db08de6d4df6748a76eb0559e81a402d39813bd087a2a3a30b760da50f151d0af351649b63700835811a136a8728dbb4c806ea5040771195890552be7345109417d49b71108c4de186a220945f5175a498a0c687d20f6507caaa0d20226f2ad130b44d028a8b42f022aff341956714b0b4d80f8a86aa219e7193417d86fa36549f0a50f804aa0292e5640e92101873b98b201b228c9886929ca0ee4927ec001250cea1c48172ce5110d5502145a84fa22c48b9843203e557a3801bdd3e47ccbc3f33240ae8407a06b853df155088041ec7660fd404a07c41556f14f083b902a27caa0b6594503a3c4351813aaba21e7b48ce1003a995ce80882ad0613838a875a0ce772845d7374207ba517aa56c4139450a22ea82ba0ad51aca0c28bf190584154c3638eea280f012814c56a01867eb4c3af1a11a220011e5404d87ea3984eacbbfd7651694a28602b69c697259260ae8bc50979785021d4a3f941428f3a0dcd180886e8a9252ca3354d5a180b7098ac3e670fe4900cac8ad20a245049a84704f6a3ef93dd97d72fc24c6937d4f369faa24b5f7e0af8b8133666eb3aac905d05165484ac7928cef810e5567944f910212cdd1ace49faa7ef2fe54fd89c5d3594fbe29b5b772fc50e200dc8b265e43bd3b0ae854e25dac2e549f8686f8810caace50c0ea75707bb45210adfbb409a063b2f352bf68c047777a2a037fe61dc3fc2a3185fb91141b0b7d8f3027c4b0c2a4e67c7e67a4f09f31ce9e2e11874a2672e925fe29378d38886f25c49f3e293181750d422de8b0c4f42f73904fd008581a696bad92ee5e39ee0cb24f3ea44e56d3e1dd71afbe99c541c2c7c521b872a2d40ff3484d110c0e5a8dd6e5403ab5e4478c962ac5ebba61a045401a0c214e19f76167549ec50892f6fc832b9634b03a59f2a8477b10d6b7a80bb0393f7a01f87ffc518b17693ea8e39be6c6208d123e2b57f809d7bd1bb29c9157367cd239f3a2a39ce51f5d0149e79c2efaaf5b60cf7295c35c1c3eb98759f93e99138c10ae0de01e076ef35900360083ef2953b035f434b9b733e880859b767e4e2f28b287562b6d5318276aebc83002f7b783d1cd43c046476a0d6a5851a5d7fb56e679c5cb737861c1233c57bdc60e9f5f8e586af16c0d9f590e6b4f1e49c075ef7647d0c3ce8a15284d2f7ead9a93d92ed7e3a77e3de0f6fefd0a0ea66ebfca801b662a905db435fa3afd3bc69f29e699c4cdcc0ee5bcc679e74174026844afcbca94d72c146c32f07bbc49d09de2e291dbb2d2cfc9b5e08c010de9011a2fd7823450ae26e9cfcff033fc0c3fc3cff033b0ceff3fffffcc3fb7945222ec3382fa06a494524a29a5d4c452083040b306889be6a9f726fc07f207050806b28a82fe46d1ff0dcaf504677007520001d5c1230744152593ad35cc4a4a51f2cd604365763cd20e74012415a5f13249fafd1803105494b52b45f8bf7768d129ca6f97499d85b2ce9b35456955b3c87c7fa29fb95214b48e3ecd317ba8356152149336d3b7cd49687000328aa275cedd9b9849da2a91401465d37cc2fdbecd4cfa84a2a0044f1b7aa4088a64472865a24a3e5159eb9c96b7a9ce997c6526e5ee3d1a42c713e520b5bd4439d1e051a3870d197c288074a2246396494ad62ff152d2403768c8304e146d64d6bcc406d94459dff664649e249c1e219a286a89d3326d258ade934c14d3fa93bfc8c8ddeb31511027267c34c374f809e41225694ae8f47c6e613207b144c9f2e2848799d5044825cab279fe64cfa9d6dbe43bb400a144c16d4be345590f994449b8badb49e76ea51fc3811d418048c29a59d19aaffdca1b2dbb12ae796f43e56591289cbfa6cbd4ad4c35ca0189d2a6b65113eb368bec75a043070ed345803ca22478a549e12a277c891db1be9b7ca66a65de8b87c7bcff5432b6b2644923caa36a3dcb891f3a491723cab755c244dd822ca2b0ee1e6eb58350da394594e78488b0b9cd273a49228ab526226dd4be6ee720a2a05d35c4ea09f162e321ca31c932e9fe44ac4cc910e59c97317f735488ac75bbbbcb4a56cfbcb6469bacb1644e196642943bc7f38fd1c43032a55c800ca2386a3597a99373f64e9200114449dc9c56357e9e134c121288f2a7f52bd9213d6c986f80002259f9c13ffa7a207f28b77889e9522ff9fc86f8a17c1d93248b89265580f4a12026e78769955156f2a9060d1d3c980fc5fdd7dea44e344173b38762d02965ce33cb421e241928d579e9e164bb1d54ed0dc903f7b5fba11f9e6ef331b26b3e7a8e43f05030df12bd84d564a25577483406e13ba3a2e367875c4d5673c342b3b5434dc6d9f018c48de7bf0e2549f89375f24eb8719d0ec5cd1f5eb3afa67e8e9039943a33aba6efff2476520e6eeabe7adc78d97cd577d6cea35fe3c88d43e2500cd5a22deb048143e94e6751f99f539aa086bca1eca1e2e173d77744ba103720a40d25573549bbc30e614339d7d79f161dffb72ac81a4a6672c8d3f96d26e886478d1e0f51433149627f8c23ff329d7403094943b1633213f6449f11de65008dc70e126e008206c8195a593dd5d73bbbf5301f4cbc1c6286c2dfc9144d2fa40c1032f476da5e3566b97e6af46b34f1066a40c6506ad54dc29ca0e4c4331937520d193ccedf07206228c5c810937c3bddf6e3438084a1a0daf73c8df65b000143499c79a9be8fc994f475906ec8d08143469b9500f285c27a4972c98f7e729293196c3276a41aa02423f954c80a88178abd6947ce27313972f4e842e935488f4950d5b87303840b651579aaea1904d942f193676aff135309427d0988168aed9f7c54499bcae42048164a624ebad7932ef96d27040b25b1ec4e97f4493041a7160b902b94e3bf6b52e2263d7090ec7be0a040ac505e3b7965f239a40a253dfb1631392e08154a9e7e829d64b7797234a5c085009942c1ba4e9abcce27e93cc11e40a4606d55c9683bfb079028143579ce490c0d7ae1598d2702040a2525f4a93795efe21bf501e409e551f9ceadd027d30b0488130aba435aa66c1d13e43302a409259fb79225a5c9ea8c7a409860110f409650f4d0981e7b8277c7be204a288c8cd13ef3a4da56cf419250ac0f764a47e3e6edd30910249434e87052aaaf679ad1ec0d902394c4fb3b98f8c7cfb3214628ef86ed061bcfef0029423949ea159f636f6e9326423949136752d5790ad5c701328482cd9fc7edd2b9dceb060db32f8008a118aabbc483d2d7a4330d3f84110c9324bffeab93754c19304a3acdd308212664da3c8c5f248d30a9a6c14af2e0fa0235b31317d5d330c13fddfb4aacc6ad4618bd28665b516af38bcf8bb484c18b828ce8dcf69274454912c62eca9d4cbc109e1bb463360c5d1476349bd89ed99a9424b92899eea70ef2525c14aff494f44db23784718b92e871d2e4113afaf8c916e5f1243d29e15766f5af456943dec7d89fa632e961d0a2e827941c231e66738986318b7295247374cd39b2286bce2a5ae3db7412d458943e9bc81a5386018bb26876d624cbc72494ec0561bca27c924e55a675b633eeae28ae6b123435b9499bc7569474dca9cef5aaf953c58af3b52c632ecfebbe464ede38beb79f85b18a92f6df3c42a89bb2125514e563decdf7bc5a29154593c2fc73cca81121549432cc2715d925673ca72808fdd69cf3c59498374531294bd349689249d64b51b6f45b2d6175cc8414e5ec7322b4ac8d8e7a14c524c898589d1645a984072bfba0d3d55014444f10be390645b94ae93341683f510e99c4e67c62cc36f244e9836c536bf5ae1eed4441efae74bc951345914f71cfe17a94ba89e29c6436fe3b366f2a1b5dd4ff7599895289e9bfa4ef6fed9860a2b4fab19d4b975ca254aa4ffad6cd3ef9124b14c3f76de7f58fc62aa94459346a4e9ba63ae8134a1484b21036233489926e791326e7a4763f9228ccbbf95a6993a32712e5a0774c12d65490289792b161653ea2e4b6e9292f375e96c911056da2898634e144e952238ae15dafb7eb4c6c2a31a230baa73628ad96316811a5fdfcaad9f0fb0b29a2606d22c2567e9450224a261b9492efc7e38388b268cdba4d5f4aeb87287bfe90b249b0cde83144d9d49fd4794c92e4e4294449cdac24713c8428c9e1f489537a93203488922ec1adc3b3c7d30551de2a694ec38fc2088469f46977096a4094d449b38d39133bba7f288c52dffd2747c6901f8a41fccaeb7e9cedda87629750f2c88f6d79291f0af3f7a52563fcd8640b02f8ba6928adc9d98aa0a1245fb504ed1f846b8d9133ec55f7555da26a256259c40c45dfdcbcc9c46528d79b6ca2d8b56428a5285797abde101943a9c2932f86929c74ab933641f668320cc5ec1cd353c71c184a72c6741de26edb832584c8178a9a266c85ce693469f342d1cdaca4ccca8f50eef04817ca35baf7cd4f36c285c2c5d8ff49a97947efb340640b6b168f39daa183466226a28572c8d5a43664fa249a31386ad4200b8b976e8b89dceaa5bb6575b5953231b304ffdc483376f4c8c13322582846cfd8e3a14935d0f13c64f0d0914210b942c1daec3ce96f6ac84837781ebec37778c40a85d12a267738a98b54a1ace3e154799c8f505a840ae5aa4e6aaa94ec2293a8c2213285f287fa4f6b56329f072f228562368fa6e46e49626a140691289424a53bc9e669bb74a3898408148a9bd17a73d63d9de4748fc8138af2364aacea24e284929bda37a144980c1eeb20d284c27a88c9b2fd99503afb7adf645f640985bd1e6d7bf6214244099124600409173942d69d4da99ea4bb8e180125544ff85fd79122588406112258e4224328ccc6ed684484606978bdcd69b59cedadd58df05372ce8e18c12809d6717f278d90eee93b60144668d5969d7461a5e4ee170521bb35a6d84fc2e4eace17051771d2c58875d78b82d264db4189516e4c78c78bc2e750d568727daa98ef76516a1f1bb5feb9e3bc73a78bd26cf8d29e931c72dbbfcb4549569acc5dba5db39ac4c005363a5a8b8e666f51927b92c7f3d1ad9f523c5b143c66fa6a5138b9c1cee47b365e3c5a943be9cd39622678b328cccc07f555f6d99fc2934549ee4c2a944639f1e37d31625192eb25892dd622da1b386ec8d84143ad4e100316054d9e42893dbd39cf77af289f60e6f73a3ae78a92273dfd3f398ad78ac2ff69dc0e2693ce9699c1761b8315a5124d1a3cb8c74f23de818718ab28ee96a02455e7254563760c315451d8dcf53731e308a5cf30c44845f1a41f137f21541483a6a689515fc538855da7b5c53045a9c4a0471aa31485fdf02bffd18d418a72ce53329a9420c618c5c51045f93557cce664a28fdca1b0c80d6280a2b8de5e6212268ac98e39ec01810d5c8c4ff4a9ebbbb386ef6278a21827e68e576699e2258cd189924ca2779858a245bda941108313e5f3e479e36222b62f313651f8726fcfd64127d8114313a5d37831a132334628f1d081a3cfac661023132599b37d4c9e3744651e0313a5ed8f23328eef9786ef10e31265b37ccdde95495ef53b2c51dc4db2e921e319331ca31265f9f826fec9d3b9468c4189d20621a4fae8688290598c49944269d995d1ecb79e046348a294fa593752832e46244a669f4da611b7d1360775982012c961e3c48044f1fd3e86320da75a943ca2249b68e2586d4e1967e288829a694e15bd22849934a2987f4e0c57ae27c85cc28862aad23c4a4eb288721625766268ed94274594939b7d7a54b91c51220a3a0791bfb194ded223a224f4461569a2d6677e88820e8da71d4d4e23464394c54a14b9b05c915a2a44398a704d1384cc224f0851ca92946ce6cc7b791a44b9643f29cf1a345f4810e520446fc8dfa4c4fa812889f871391d5d72ed8028497a3debef3bc6cdfea1a03e297db295c80f99e023ea4339c7d50f53b56bf5101fcaa752e3874c42c965a13d143f9ad4fe67a7b6457a28c77d8e9cdc901df9c94349fa2bcfd420b7e63e7828999a6c4d6adb7cbb7387d2b8b769ab09134475ec50d8f4db567bed6d2653879218223c9cb817255a43877290514b67b412c24e338762859b8eb965827ed1c8a1a47f4eca6cf9a92ac5a1e841ca484b1f0ee54d27e92a498bd854bfa1ac9da91f935c1f447643f1ccd23dbd88b877db50f2124ff3c89e0dc5903f7533215f434992043161b3ac8749bb1a0a7a193249632529357b1a8afeada27355474341b4bb28bd996b0ffd0ca5131b5d56e2aa31a6cd50de0cc23cc7f027b2ee3214a3ef991c2e93c92f9b0c856f934a1cef2458553d86921cffcf66654c0c1b1643e14bba286964380cc53d99f7115d52c91c83a15456a5b327396caec65f282793c4d8f8329b74c55e28fb4969a9aa255775b60bc5fd8d25c86a0dcfcc72a1fc319797fcfe5c9ede2d14bd747693549f9ccdab8592d692b458fc7f8e6fb3506cfdeaca790f5d4a140b850de2c4205ad22b94ea4e4ed0b03c5d82d40a4593e92263cf9e24bf56a118344e4e3bf6a3a52b154a25d88668c6307b4a9d424933893b379619f253291484b21c1d74466e6c1a85c26bca184b08f1193f0985f2a5c9f5e84e3ea1dc4975d2b9cf447e4d279424ad924d534977a3049b50cabdda98244bfbb42313caadadab2f3aa96d1297505e979374c8fbe6a0734a28b69d6092f8edc98eb92494c4acf17aae3b2494b2c566fc63737e754728aff9f908259eae263142419a49c24be4f73d548492185f94b62a933de689500c16ff9dbd279990c61842a9bb24f964744cf2076308a124c9985385367b372f18c59ce53d356647949401a39ca42b13424ec63895fda230b6eaefbb2f8aa2414e6bdcd57a935e94c4a4d51bf10bc28b62762d4196246d6e8a0bb28bb2e63ba146a88b92bc3bedb8aa20b9289d2a51b4639233041765fb2483cade4c8ebc4569adf44635415d1e3768f4c81d406c81caa5494adfa67d6b71bbabce5c9c5aa899cc76f585069d66a491080f5e878e87d0a224c88ce7d961a3c6d66651b4713f39dd505d71228b721c258b6a0f35aa42148bd2e69cbdcde737ed278145b9941cff523349dd645e51be13537f8f495dc9797323c9b830405c5130ef30a14c99928431596f33739265a49e920e1e26126145b1f37a76cc5079ef86ca991246b1288bde20d3c4ecbe19372ccac9637fe353559bd02b0a1b3bc6fc1fd657b32b0a26f332ac4b094a78db8a82ef96fcf01f2ab389b2a2dc4173eef9d756515a1d0b977b0bb9c9524569b4a469f74e4a85ddc9d676b64445f1eb3ce81425bbb39243e6d114251532faecb4fa28c57d90e222a328c8d2c1fdeb7f4bd8fd218aa2fabc75d79ee04728ccb80bed76efcad05ae6fd9f0f5094ef644b3f3ec11f9e28e8ee3d419fa0c4cf337d74a274279efe4f32fc78d2e1446963c7963771dc4429d74adbcebe4cca75840f4d602610137789527818139b836ace522d519db886b758b5fd838f4a9445bdfa6b86bdcac9ed20ddd01b3740a023f10041aa818e44023c1d89078d187c502227a192285d0927660fdb7f44a2d7b9f70a9db115b9d193e5740cfee7e11be7396c1cfc8044319b87864efaf97844417be874e2fdd68bd41125c17492e562ed47237aafbbf2bad00f154db3d1fa7c30a2246dcf8666cdd99f318b2889c9bf7dfa3e14717ff6a8f02eed9944ac66967a961a66a362f278495f62d07e20a2f89a645d3b49f210c5f02745ea7be99e6c8628a8b7dab4f5b41025d16f536312f49bac4942946a54e48fd041733ef9200ab33164902799d81c570b3e04514eefa404abbdb9cefc59200a6b7d6272dd4d925bd10d1f8028c67c7775e976a27ffe50d2b1dbf3ac9f7cf8a1d897d1e6c47c33287cf4a1549e469c2c26644c6ef3a1a43956ba280b5527fbd843e179164af054dbd87ee8a1b039071974e8d2471e8aa794b68566d5065ee0030fe53fcfa5fb936f909e9fc1667aecb00f7cdce18cb1a3af8676efc30e25efd2f6a0194aec0fcf601bc1471d8ae629a764ec3a2df7cf60e30d7cd0a1b09b6a279d906a5af41dbb22f8984341e36a06a54b06993187c7871c2c128783037ebc21f1c30d25f119f6734cda2786d37cb4a1badbdd9d931d4b6d599d9b35d30d7e053bf8604359f4675265bf49c977d75012639249f8773bfdae2de1430d97864383453ece5012264c3031536dceeb9be1a30c2513fe26f5fa4f868214f927a9dc7578fe3ec650bcdf2ee1d5a47c92ca0f3158a4c747188a51948ca3a44da74fa73fc060912f58e4c30ba5cffe39337b44c8bc7f74a120337e8791795b267e2e944d8a19311ad74b7c6ce1d4ecaada2ad3bcf6724ddd58b26752dd6b590bc54ebf15a14a28f37db3504eaa43cfc96fe8f7da44b09df8c042f994d4327df28dd049d0150a7f332267793fe2c30ae5ab3df5a9f6af822747e545a34e85a2e86d2f7d59b29ecb2914a46a08f3b17a8fb27d48a15c82b0d222c4453d775128ddaf7b8c6b990c3ea05036b3cfbf359fa2d1f3847279503b26c85b8f9ec6f1e184b2ae6879cfa595a3cf26944ab4d8c88eef830945cd27f426797496500e995eae73e2e7cc7cfa50c2a92549dd98b526a11cc754fc76fe3e90504ea6e4ca35fd93fef78f23e4b5a35db772f79e5f65eaeb3b8caad88b3f8c50ae934fdaa9dd24eb28294279ddb3dc2ce35be7242294466a523b61eaf524d92194450671652f32aee6e887100ad273b46c08a53def088448304ad99d65e2693bb5831081a19ed4ebb22e4a2644dad01c235b3585e88b8228256b537ac84f9ac31c5c2f8a3164dcd596f691bd41e405a76fc3bddb09696417c51cfbcbc4d2d46aa5bcd345413d55b8884967f7df5d2e0abed935fb8f87ade60f715132bdcda6543ebc5b14432da3c60b2137a81985882d0aeb9b3fdabbd344cf89d4a278565b4a4e9a3477feb910a145b657665f5a670b22b328ba69f5d158aa554645414416a512bb629eb2418c45392eadf7323b58145d36b4ec7ee3491d7623445e51522f8f27556397a81b5714adf794a41be6645f7b4388b4a2984f7dd76cce31c9894221c28a62bbc928de1922c3321784c82acaff1d94dcd7575552c8aa28993e4185d627d77b3315851ffdd8a625fce792e1152a4a6199c684099dc8298a49c44b2adbfa4cbe8998a2709dd3992496a6759c3622a528b8dc6a8ae6d01e328714a5132b3ea328fb8b97b829e33797d81122a228b989d6ed496c933ea9a128a889279889a2c47fd3014549ee9455a634d656887ca2bc31cc5d67d0629994638878a298b584ea3a59134ccf498548270aebb562e269e65cd68970a220d2c4b3b452c2d4957821b289b2da96d4b18457f3dcd144414c78361d830e26972e9209c644ea0c229728c8f52c31e9ecf5a524b14439841ed71162ee84ed2a51d81236d4a4d0fc214289b269b10ecaa493243922e2242c528388242c8229128952e893d5d673d6fba8692c8840a298e372b25ff6fece8384468d1c3668ece812441e51aa8f57d2855c9169d7a423c7a920e288d27e07d9a784d334d28183868ec4c3238d289b062583aeae27138d30a27c3a861e25fdb8889249b299a7e57305228a28ba6a9e24c9c87824112b8308228a6ed53989a284cde09e4394774edc37e984d5dbde10e570ab7f7f7f17a298368b4c39a7f62ec48428fe9c900d9d45fd6538887210bf593e854e10e55c614502513693e9e6e458195d5b42440051f0f4d3143752e4def88772950ea75b8317f143792d6e349c2ae94331ffcb9e8c2e1f4ab2042547e807af10d94349923ae71573f978267739b8881eca717290c14aecb8a2a4913c143ec7247eb239e1a1706afd2a7a35772855a9b9db2b55239b1d8a1f83a62bc94afc2cae43712da48e0c1a46e850f2b1ce73a5e63994e48f69e2f9c73dcbe5504e4a36f6240fb24edae250507f0b190f99072270b0cd55afd4e4bab6643b356d0cf9a9c81b4a5a37c9a03ba87ccf4dc40d250db5993c98e76cb28eb4a1a4e9d3771a3d17f9713658e4720de5132e3f88fabb37c95543d93676fe29a9520b12b08b711603afee0109ea5a4bd7117840459423e680c363470f1d0508000f4c0c050460878e747a201c3a7224a0023b68e4780504e00e00080000000080002c6001b0638789104000cfe351a40001781e8f70e8881c0000036840027424193738cf63870c190b004000187080361494c6f0793ccedad7890d25256766529567cb36ada1e441066f061bdb4836d450b0ff5eb7bb7806dbda4836d4d2907280c3868d64e30086061ee4384369db3aed953877cd98c1ca514a39a0817ac890e139a0817a6405ac0c09303214bf4ae8249fba460f1b38011b43d1f45c760ee1b6498b33b8cf7a9cc940a90734dc506062c861e384210106061e69878d64c300f605a4c103e1b0d143868c049817cae63b961f6bd923a28e193b6a74a1a4ed939cad6526faaf196c4883478d193b5e860cc71d3768f0a841a38791a123d5a091c3068ec3c605948100db423978e8097eaf7e664a4e9082ca0d9c600410e8400a204009d3c20e2c0b889d0ccbbc2232c78661a1ec377b65199e9fd36d57d0d256b6354f575ea4c78dcca742b62d302b143378be5026c79477a2196c080d568592768ef94678a9efdb740fa34249cee7aaea3989fa31676b5328b588cc6792ee6cbbea8c1b5fe30409e128412784e346a249210a7b56eeb6dda5ede87a0685a2777bc9ec4d256828b127280dcc09e5da7477efd465999535e11363267353ff6142f5a3246d09056d9e940a7dfb8e1c38649451c0946049489ac90eef1ad6d43c6e241b49c7b941836ff0c9050c044382ff7184de027604d3e86df31ab569fd0d1de0a86146603c6bb7aa53c5c64d45634b6f8e6be75811caafa66da4a9a506234241682afd9b491c13d3a15123c7a1106c08eac967527664a4dd302194ea845e196592d2797e05a3249d9ce45e93735fc380512a6da1a3ffd91c68ea1705dbfaba529f9d94032f5f14f369f88792ad539218ea300111aa172511422811efd9fcc9bb935ac08bf2ad9f18f38e36e5f9ce603b29073c743c8f1dbb2885ce64b361969fbc2475511c9d65849262b2c77096e1a85c944b94d141899a9bc476460d68e8505c14376dd0796caf1b386cd8c0715047dda29c6139c233a80c2a366a3cca16e5da949941771c2588442211b35a94af53978a57cf79e0043a3e47d27182f3402472358844ec4a00031901c845d1c26a16278b82121db4c47612e64f7fb1287be93d7144e333d8ac9c12058b92ec0f2deeaf99c1665d93a85714e7bb7464ec8df94f32c70e5297b9a215162145b1a2683b9ae14ab01d25ca196c3874a41ec8d84103878e04834844868d1e375651aecc241ef626c969825481bed5ddc5ae8b9b8a82928369ea8e276812d60cb64245e156638d6e9274f64beb14a54cbac74d991c69c29cc146a3ae04658aa2cdfb9fa425bf670fce60cb916ad4a06143069b95a220fa4e90fda726c521e35eb279ca94b0f5921fcd284451e70da126c74af87728fb46cb09a25933a02889d77afd3194e7897a7da2a42ec7be4dcca54a38f144417349224fc8ab1305cdf9b545990c4a695e9cc8ebcebabb44dded743b4e3e3393d4aa4d949338bac48f8c3451700bfdb47bc2e8746d26cab735ea64e6b4fc5863a26c756172a87f2f51d4f1b0f3f326962899a02b7c3dc64a14be466acebc7b27672951102296994449d3cfe6dba86732b124cae731ab75f97f983123511cf318ebbce35ece9df06c87eda861f402058992121a22434ef811a5f55c11a5e372442967f4e970a241a57f8de02f45898d191a4694c68467ef861391eb1651160d37ca838e77200510584129a224468fb9d893a1a6da44145553a9966c9a64fc1422ca2dd74994e8a13a44793c97f274d2cc64cf95214a62b8cc4ff2dd85b83e287d1ef388ee0971a9d130dab6d941f83189cc854a10261dd2ed4c1688647b9410fdf9bf014415ea3ea8d85c3bff50d0dd1f99213dd4e4a01f4a1a3d9f283ae93f95d1ed43b9ff940cf234d99df0f241d112b11d4df9d459ab6b0fe56c4ad88d2f4b0f859b910f3d1a93e7fc571e2c52782807ff91a92ca387cfd41d4a6262fcb9b2ca0ee552ba3b6c3c69e626a9ea504cd2ee29c94cf2d2a69fc1264305458762d0f9bf6cb7fe944667b0a51cd0e071920d70e828bc12c04006096a0e16293960c5a124a92c0d4a29f9e45102876234933b73ca7a83971b2ce2866a433109cf127c55bf2cf6ad43b1a15ce3498921362b193c305b6b28a7ae7ac72a55069f600367393a1089e840df0307357a90600391d39172800375a41ce038196739923501d8a1d45094b3cc501946643b49a5a1943e428f2e417c3cd94443c12471eb4137ac3394adc4cccf651d43a1ccf0062d7a1b3276f4a0712319305419cab65b353e6342c95f6c283214c646cf28b14c63505f756dcf4446bd5dce94898897ad9a7a17250633a67b0abd8fb350612898642adbab24259af86b7083060d1e3dbc09058662a84e6b9be4fe98f6058bd8282f584403d585a2d5084d32f6671b1417ca652193acb9e450723a09740ba5eba4f231979d993095160a3acb8e8b362529bd2a0bc56e4f622e214f29292c9442dacf5c57282611fd31488d9ddd4e6585f2de965c1f399955154a258ab6d5d372e258575428c91c36084f134f29af3a5253f873944ea3a4d0774893b48d6faea290ccc85dab69d96989c9efefa49ec196241d55502876eeaf6ba74febd5138ae69d65aa445139a130265da9e7a9899a544dc8a34131a12c63529dcce7b8d1992594c674c6c7f470b9f92a61d319938c39c9b92420da5c3cc72f150385847252a7773567b93471d6114aa34ffe20f2d4cf694e078e0eac15ca0825750fcbdc51a56b4b39b050452899cab56f49a1b7e1e2389f34f0852242317b3e9574e5f7a3ef046a0816c11925040c86453e80512cd1744956ad9a2425c9c72f0a3e42c35c9bb0975e7ff8c2228d13f8e8457ff04267f0b18bd685dd7fcaa43c41b928ae57d4f8e924b828ddd799d21cbf4571cfc4cd39c1638be4aa6ddef76b5178d169ce726ee4b8861645b130f1412719173ab3287bba6b67d7c71c7d9745710d8969a864aee6c2f26028108844e290280a02ba61020033130800183c1e09c642e1583ca8a9ca3e1400045a361e3e30261a221c120e1c1c0c46028138140a85428140200c0805c3a15038905702a9d70384ce3514a66e179fb7e516de6fb1e8eceba28c8ecd89d08f82d228b69f3a11fe6a5efd009ada0a10dbd9c82fce14d15ab924900ec5f3e120b8c1e050e22e89e59e1a8bd172f056195de53a00577887014b4e48992c2c48435c2678d086a3f45b45c2dd8e6007ee5d8bcd8b2e31d7c3951a8bca197c8770576557efa3df0093f33c885e4684f6daa08412f933fddb9f9b7eb278a720e2c4ed2b46b260ead58588c1ccef0a94c6cf0d2f59e6730e8af3f94133b3f0edc891c38140076c01d5e09ff91603f140cdb318e97d6516eb87bbfa4bc5f6af0624bb10ceb65a0f79e311ac29f23bd09887e3f08cae875c00f809853fbd2557a58d0a042a502ddea4782ba2829d987c37494c3546dbcf4f062afb8bd8b19273f0da93028389574e9e5169c6659173628989ef78dc8afc821b9b6ef509a0673c2addf63c8726e2c392f0390e65971b3ff46ff334897689819a08ece6824538b2fc6c92202ac826667682505ada0211499cf9b47dca0c4e42760a79fccec7eb6d2153c53d093d706f8dcf0926a120b02b68f1b37db6763d7ad0f3580cb23287fd2b2ba114258f8d81d6304bf059d5192b5d7d7def38767b52a67981d1661499fd20089959df4600596a7e8d2bd50df005cede5691d0b6b32dd9fec627d61a97ffbc0b8971d7e6cbaf6d3c04a3985bd712c21ecd1d7134afa5403fe8393fdc55a5c2d144127046713e49760e0b83303f3d31ab1abb755bd40292e48e790501189f04104db7cb368740da3e55a7e1c8351e3a66ff4b91a276fd54a34bc5a543494d51e2550302a86ce7de4e1fe3af9882a95717833217949e1ed1d063a14d87719bfadef698d20d8c179efd966c80e9732c3ee29539b55b7c2d61411972c69ca721440cad20c92df09ff00aee021c9a02cf5ce2c2307688212de94a9205ffd4fcba1a262e02cbaf52a8a115dc06535f60bfa5a3b44efb452122a4a9d53c8b4a7679bb50e3fbe9ff545f4010022ac77bada98f5570962cd65346082568eb3e6c3c402d55b5d41153dcbebf9ec2018920ed9638c02e388ec6cb49165660d76ccb994022157d0f351e41ec1e5b886c4b0fbd5a952b4c72807d0ca12e2163262a12c4df6b3baaa2a67ecc440b7b412510e3f21d66cc24ea68f853b362517743980c626a19d68b4d3c30844690000e03e5b031cd609816daf35d1dee1c435eff2f6d551c4fb05476937a9b82e005038bc7349852b0b0f2b52a11ee40bd14aefc8a22100f5f92a388958581047cdc43e16c12da6aba0b0a1ab521f859aaccf78a94dc229b900e8583f2b17a10b95fe0386c76b64282eedc7d648943fce09f2057767be74edbac468fe6ccbf22ce3702388cb541e8f3edd384d1fb2fc58562a0b42d088badfc053574a97b69352e9bb882d677e79f65af42136cd625dfb47e60aa81d0d75a86d7a5e1c8f9db23928d1d971fb7de5446181003a31151925b52cbd0555a60d5ac799bd4eed1f70df94000ccaa256e0b9ea2455fe6a82546297e8c6fd42530539d80b0b284526d3adddc7a93a002ad8d9db316c6861ac567edeb0b221620e78f9d3525bd96aa822a8acee313190ca688fdaf10ec0e3fd74c9ca51a96426b6ca62eea645db05ce58f9283ed4474db896a092ccdba13509bb5f5a2d10b6dec668904d6985d606295873b0867e998d4934d8c2bcda1c52d6e2837a19d2c70cdf316e7d5a6c82c3a99a226a38706dee9aba42f101380fb5aa6ea8c220df1fa376e5bc4e003906ae5e38c3a63283c22c6037f1871830093ad9c2a477f282cc06627ef26ac1b9ee165d05d7ffd3d6fdeec440827d7c6685bd23699a30416d02bd0ee022da58ef1cc671da0dd6e95555332bd2807244027f22be6b8011631bbb139b7560fb0b735e24d8189cedf27b285f57ccb8e79e9ffca9c9646e0531ed34b5ead86d6050f59fe216dc069626f98accc7a196a8520585872e330264a2f7d755d22d49cb4728ff8cb48dc5685539b998f87cc306a3281d979003382995e9b40c6927d59121871595014c877404ab9569f6df9548d411fc8ae3bb6a7bbd9c5200ae6a610adeaca34e7ab4c5534096e3dce0832387dd8e798fb45ae75277d22ce6080f2db6a861a984a4b7c633c53f7357001f72ef2c162c85b14dbbf2da29a9e0fed371bb9a900590cc373db9579a4aa3d4c71ba378c8e56eeb170a1a8aea67b8da673069221266f9981a553aba792623d70bfbde6754b7aa6b62a438e0632952d411d5865f5101a7b85a255864da0076b4af5018a318ff6d7b38d9b14cf3220985b26be840f782dab5bee773dcdaa3dcd9160e0cf444fc1c27ebd5ce616a97799d987dc3cf8b58c573a9bfa26b52d6579bff2aaa0897d10b2a7aeac89776d5cb057d35415d8134f9da5c49b37050bbc4b0d6e5551cad8f8b7a473d317d133032be9ffe11e648458878d14c3f19011a2af5371dec865e62c6559b162f0935b5e19d35adb37843cd7a27188cf608ef057e73c69064a5366b92701f10c44ca682342951059b92ba42d2074d7527b02084d1b67350d1c486c380c6860197df8d572387fb56cdbc3afba77e0f3c456233d0c6227ec89bc231060b911f4dab24cb541b7addc4aad65e1e5dd64d1038fe19c8fa1685b4f534c31ca3840a662a35464f33a7ed5addc0f59095c5dd002e9b811607ac059eb3a7cbd7941ab3ea61e1b4f4eb2cc27c5862b12d5ef33fb69c920007748f0759db2e093b9a42b83cf67a74818eb91cc618cd4d86de65b53a20a29848e05290a828d1a4e6aa679a9a46eee4db3124efc4976ea5bf6daa1a1923e83daec2d44e2734d665a61596b768a06d961203d51dcfc59e09a0a7e9982d17c6957e6f6a8b28cc89765d7a7fdf7218406c0633cdf0e0f88e7fb26ab6ff5b0a8cfaa6e084838527626ae36dbca75b5a72f0090f28cf9dcacb4360f6690c10deebf00b26fb719460303c476e304f1a5204ccf29e7d575d97986f719ef6eb7314ff7a51e8461f4ffdd46415d8feaafcd62eb404135d125e677e6ada7913a0a9e19f4b5631f106b1feace04e63b74f7ed4c8c85bce8a96a04a703e44669d36140f22dc0c83dc56b8eba3cb94c9c90908da4e3e1cae514768aadc775a48d7b881c745aed2f6d7f9babf589a47b877dd55b7e99b4451fa50cc3ec67093ea00c9ddc5f6781390047560f6caa8dcaf441864d1c1ab2bace766e3f6c28eeae4974bc6f3c191004f570c86c3f1bb1340184064077ec5670d358840fd8a1e9bfa48a65e6c418ac70e40ca4aa9b24c4510ac0386345fc98feed153bd98e97a6b8601deea28ed7e8538bec4478fc36e3198108e3e5389a440ac635826dad3b5a1b9d2197928ffa8b0030085c2338070f54ced4fb1f20cfca1c712a288a55548fdbfac563b4cf2d14ab512d3693b05930c45dbc9f05b962e2381a49bf029e1bf372d538b8227ad6ea91613b11522926de92efbbee5480c087eb9d340f34a86ba5e2c4b376419f8591558ffe711946531c56125346488389244fdddc7ed8bc020c0e271020c78415ffe94b3aa4be1e43c480b61a24d018a7dd974cfab546a5be8d1f0075c2b2e776ddeb01467bb952d6e8525571b30159961fc09ed3376c6c82bf4bcef1d38401a4c62586f4c73122ccc3d7a99f57a199cf5cb72b23e4f804e2c06503bee9fcfb428c426188b01a411a3717aaf48700bcecc31d05141bfbf670960184965a35095406af0b51e892ac8ae9c33dbfe3aad047f5094454359615c8b4165b40b7976251aedeaf101041b273d988a4ba14adcb69fa18d380413c12b658d6a52005e9b5bc0c98c2118e9a852182ff0b44cc94514cc8bb25dd071c459772222ff5d6a5dbbd4307d2751c1ae6a1475bf18285725a95324ff2d0a5b547d8470b52fb6f931d541f2b780a0d28ff55cacf2f6c3262c4972ca0e018362bf970fba87a2a8780aabb85f25aaadfac2c178d4cb9d2189597504e6adeaf3aaf9d6344aead590f853dd2f76a97467b8bfb9635143efbc96fc087e5a71c6667ec8499309abaa718ca18a1bb9298f5a57bbab52ceec8d72c043c2e4cc7b212c77a2c442f7f0b477669d663ab00053c78a8729e3da8fc0e2a3d45bd170543335a196a2edfd7d7bc4a9a5a19ae2bf75b6cf2023a966dc79db5b0b1a17a306aa45ea76bbd96d24e04aa5b6962fdef79000958435318452369d05dccaaa01fae130b53482cdace4717db0b23a202fad78259e1fbc71e6583e1733a5ff5a07d4760f7c8d340e31da353af355149838b9e989f350c5518c43093be0894299441e913181bccb1ba49541fec975861914a055330e37108c60802f15567370752636c30c344069e8084214e85e82da486d014b087dfebab3201338cf99508354d7a22900f36af1358d47a2d7f36d8cd30f2f88b4b9a3af26962be8d7e476b8db976ac61fb5b34d9515920f7254b5ab274fe60f7c44292cdb0f586b90f0a49285665f467bb92fdbfebc6337fa71339445983b57067ddc64cdfc0b0901d6e80af464810255ff4580d10855d9d4404d7e12cb82e99065c7ea6a8545701f416032e3bc71c1e4bc8ce28b06b7c6e6d658e45e8d003afc0d5f108318f6edf85860cc414abe58d028110ba939ce12fc48c691de24cbb663d0ce9d345c1c916097781b9e43e7731b307f7870716c344f13a6c29775c5e8785a570d0a0d86bf13e2c6f06f89589f4fe9ba56ffa5a8a5745c791f754a1069c02c6f3858a024586150b914496888e8c526553b73b689ba04c90886e5346a74abbd245a51e82504613ab2ea513b40a51f6b8917184daa6b0145b2b2f1ab6bb407c5312c6601ba96d08d8c955b891ad1b59d2b29a58d3fb04898593c58cdde83e25ca10a2b1a82f288ebe011a9dd7d06bd7d77380bb5f245fb6b996dd98f2e5a1888f8fa55835027aa05ea86196967a62484eafcd0256b29fb2d8f26d699e641018a597a4b753043c803dce6a19a7aad8c226970dd196c655f5a4c87069d62d3a3ea3bb9795e0fbce48bdfac48d053cb5d57279e7e290d34f7db8f5818a3d5ebc884612ef6bbd505d153ad777f773e9bbdf9520c7bec57e1dc38297396497944ffcf08eaa63b682336c502837c85215217fd446be8b590bc15503075cbb7533159455708edc4a51e93263ac248f080a5b19e818a2a337eee0e2d6021c7a23587e46ce6820be0f0d67752c1be9f835a74ac0580d90413c5d1a1bae642de0ab16a933479b0b1d90488a360758aac1d1484e0334c9f6580065c2798f98d0b33e0a463be56abd06f71175dbfd28f3da402581d368060403d210381894aafea01cfb36e169a5cac81036689b86b8f5f56ecb9a0dbfcaefdd7cec7cbc15e36e043e6827e6a5cab5bb1021106ea73e53409ccf7d34768fff41cdff6b91dfbc927a69489328144ba9a889c47202f5bbf912ca27523fcfa80171977ee1e49337baf6a7ab3f64f1cf45fd7465b30c2a470dac6e30542c4e1e675d27098e0f80fd6348aeec5b805683005d2f6141be04f87d8b12109dab39dda8970435fa1f98c67df5515c242c222e62888011449243eb04c67ee2d61cdafded4c4ac2443f29422ccf5754c53b98141446d49bc3a72e2d1c52f5c17d8bf0f442274c82dc7d9e47ed7b07df455921ee1db676dc7137e325b7bc1abcc7b1629a72c7a6ddf477220b7b08de7ed3e935160db9ba95fde0faa7ce8bc87e2219d2dc8801777da8f70ff94cc9d361cc1a46d32453b4c61bf5a99e783be795a1ab10bd0cae3aa6ab5835b3db737f3d30ae6502dd01f80d4668605582ae01bd561a2f6175960806ea5efaea07b0c5eade1b8d1c319b108a49ce5b52873cf1f915b01d827088ec9e4293df59b192eff38a64a185c1d231f023e66dd76875a3e29ae028c927621cc4da49e02130f513c7fc4e285b13055e25be0b010ecb0dfd9b791fcd07e0ee00d65c8fa6dd5241173308b2e63ec13c399f86f3f3e2e075070f0b0a61850cead55d779826af3b1e5317b4d29bab1035c1a917b00d35584d6836ffbd28167aea8bdafcea39c049f0be6494822e1268762a0a55430ab2b94e7480676fedd6d5831619b27420fef3d086b22fb4633794b06aa61b1810f9904b528cb598afb463e5f5a3bc94c1261e7c82de4f8c7f9bf9fcee5a607a8ebca7c4d1ff9f3571c16297104495b6c307e04f2988f84351ff0098e81f6abbba650ab66c6a08f42f765b29d946f6492e8153d80d679f474f29ea3e88f771b81eb34b7ee6b1543154c97899b0b5e42398ccd3f02392d12009568dedbb393c1d51ce9e451e092f7ead6c5f2f898cec936111856f3374248a76bbdf8cdb23c542962e52b36d6088eb4bcf65896033fdce4c2df74fd2d7e8d6410d851e6c8035ce6b560e1a0a3a0a77bfcfd822d0c855c22af9ade97f351476c2e995806862fe1b0d10bcc7df38ba90f5513862fe9df7d811f714e3d2c30bff4615b867a5e6e303f12c58e0ca84d2261d714b7784e5a740e7336fbd21ff1f621d0f19df4d92e7f61772f94bad98ab7495d10bdd871d441870d72b72db5ef3547f5bb9e07f13e0ed6d3fb77f3b2c0aec373aaeaed0e63c52a695ed50eae0dcc60cfecce6c6d02be75ba648ae3ddc1d74f04fe26cd005bced36e8a6362deffcbd84cbe875ca7a6171c642c8420440190ec17da88adf8820b6a2a0a74f90bfeace135310fdf0a02f9bb010eef642a2e55d5b97cd0651fcdc70364927abf4cf129eacdfa9d69dacbc30c6b888df9674af38243673f2470646e8ef9e31544750a3993ef5038cefe2fb49e63f37a30a4ec1990fdaacde86a78336be7a77a4e342e3d64b8817ed0ae81f0389b299a29ca99878f8e0f9d75a170fdab4ebb17653e17746d87df58475e679a8fcc0d643306f521c129a11d7dd43a061772347347c6f7610b59c4a32ccf4481a0433a4e5d06a0c08a5f9a82e835699f9896dfa9376632c14a2904f98b4a75087cf6fb408d625d1d6e225c41ac2535e0558a8ad20b3ec2d0c09047a4da73dd1fb8f5b5bf095cf0e2c597f8d2d1d730d7ae2e8413fc1ea819be9e156743ba52084c57e379020c54074467460888fab3719ff61385d340d8f4270eabc4e1ac5558410dfc72edcf48b68f9251430b6eac6b19170fbfa470f5632b50e409df4598c1fa3542f9ec631d0de3312248a79c0f9558fab7bb2d116c24ee96bcda97340d03cb295b9e9524e7327c4a6d8a68765638dfe9010f34d4a0b1a046f0a85f30e8160aebe5a585b6903467cf2c300912c3ca38168cdf50d0c1b96c61c8a75d2d7f20badd41986b28e0b9f453cc64d5eb7057224b60bfe8297c81670209efe2425320bf2ac52600af1749bbc41dd4cb70f076103accd1fe8eff95bfcd1fe3e7e8a263c67082acf4b9d75130124c9403c29120fd6bcfd46630918bdd0f088918e680d0ac7ece324de1c01808bd29170b5c0290d6798d882137649af7ad343924421137dee00eff74ad0748cb01101b24b30bc928175507a90a411016a950e690b6d4838e98df60bda71971dd34bf248806886f64f903488f682e80539288a6a692c75a322a29d9ad2a64dad8fdcee868e18509539e2afe6ef39eda58dc6877e4891c5d8d2c0dcb40b53109d23264fe626006b446acd9498ed5f97329b4102a2f085c4bb97ce984055429c75914587216d52ea8232529c379c53e6ad90cbb4b4b875ea7859a561803047648de10140235c2f0d04bcff8c2a9af478890e829d334059011b75e55f2b95559e48835bf0d85d42dc32792da1e5e6e2d7f9032d97d21d77a93aabc0bcb5029314dbc4042042d682d26109112754505ea02077d97632bbe43f0f3f5107eb981ec0d307f01a793b929f186d2d454baec6b16337f6fb5c60e667876e3e2386f4e6d3c5483033c05057411157c5e4c2058e4d4d7352bfb87474470598bc0e35189f8ee8939681013a43da4d6d6620bc73879dfda6dabcc0bc090f519bfbd47d143aec0d7285a93d3635927d43fe8ab384338577ca4625e2423744fc6fd3d33cac980846001b0bd81f5eecf707af332fef6afc419cc9956d1a980a6858bd60d61d7e1dfdb030b33cdb443a1eb061baaf9329824b9cc3c4557a6c09142b4812504c02f2a5fb2f711eac63f246f6dfcb3de873b5bc65ad42747ce26ccbe0649b3dafe31de030c265c9c82049edf9d52ffbfed93f188d898511d18b1668d99e139ba14dd35ac8627778d4848d7851f0a9e34bd93feaf920c30ae353c409cfdd160c6ff0244a87b2706fc456a455937afc72111db5b51ea4ab606e26b6442d2737b47020c9473cfe8f4e1a3a36130040bdd3109d57f2c011d8d4bf7147f1398e7b16518ce08dc2c201c9812927be75bfb62a0c0bcea0a26363e9e4d1421dc032502f085250a6dc5d2ed4bf343f243e2b872703a5c269597c4c5a4523dd16d18bcd7c5492657fb7bdfc706dadce9803a2a7d8c130484262f9b828efbec8e92471942829c6c1db55d827728b925cb4c4ba6c12496f148d8c40bd93f1851c802e8a82357152459bd10d5d95c11f6941c9a8eec4c75b0710a8ab9e8e747b3eaa63f9c9527f23740d8def631bf8676af1977c2ddd9697d605d232da07bd9d9812a17136b139d71d6eebd719355b9be5542139ea202d017ccb7f9bd70e3d81f882b797587c83bb2d1b0e41fb7c7ed80d333272c9f8bd7b3e41f6d002e684994e29a60e843b67ff44dde7231637c07e78cfc7ecffb092cd30e539099895aad96945a51452206c4bc12f8b03a3c082ee43312d1348784b82ab456a2c2d43a32febdbc6f60ae3569a7fa1efe49f84e1fc010eeedf6331e9fce3eb099ad50a51486b2d626eae3bdf60b8e58e4885a5c06c097c22a920cec884d36aac3060c4779b6967d58e92c99743c38fb701d2bda3baf203f300708c00f81f20b2bdf966958a090b6a04f6c5876be0e57db5c3184f268f01841972aa1f1433f55282be383e717b081774c693effa9dd2f40f89de7fa172e81291344af80b0ec10b52c378cb1f9d8ed595fe87f96a1f2bb07624e0e6f19e4f1222e782bde0b6229954d1bb6922b84890ea5aa0647b5b115b8be7a3edc48b1bee3a3f5c91ecd9d3e75b39dba437ab43e68381ece3b9f9c4969d990c263406c765dcf1f3c4cadaac1578ae45d140905316b307fb0bab2fe73ecc4e8fbde45b9e8ead1e88798b49b75d2d611df6ff32bb22be438ad1e13fc6b7efdc7af5920b9887582dc10d03ddeead1304f1a40adfdb156c72f715c199080685f2673e8d2e06f550c08c3af8a7926f17e8b4a5b80bde54cd35f2d73c7c3a3a0a10b34df32f8415709cbdbfb77d159ead98eb5398dd99afd8dbdeca1d7040f56256735507f89872b87b67f0ed429ca9d24203f59ca49614653f33723369688c025bab05f76ab0129db16b5338e0c006b386cc15062c84fec219c2307a0412b09a33c448fe46c016a2101b39cb0e42e17501ded117ce9805087297f7b504d8495e424bec88a9d478adc2d868f4b7bd09b103576d3a14aaedc6cc34138cfc123c9037c456f69c36956ac50233635d93197929ca31ad7ef10fcaa59a32c077ee4105ce77107648f0a1ff0b43ea5854a37ba3741c1612b6be366c496079554cc4309858c9f40fa69d0a411a5419854c1f6adc463692e3b4ab6d9157641683b56d0b4d98813b6696025b196e2e4f1d245ba4762601b9f15139e57966c63f7f099a352a242cdc21564813deb74d645ed5a8c3e4fca7114c789af546732952ea11f9682ed65a7c435e8b151358ab4178f312da447d080bdbfe1245b14be46752f697a6d51024d0b0fce420a88151fa651165d95eb6761b4784335ea943443e3dfa7ffb52e976864d505f084bb29f63803b1c9bc3f9f46e57581d284c8a6c5b01aa1704d3d2c0c636cabce6f5fcd61139341e69e0433b8716216114425786017a11bab7c1bc431d75e3b15a1636bb3c72af9338e7a5bb4f19001e3564b3dcd6165c1320e93693341b1edaf49e0482125f48c62f307e0fad5fe706c7f0edf8367c3cb68773015fe4e19e814298c1082a003139fc51c3ca43a9c5976cdec8e53eecfff0c411faf6f52243c092662773b0e963b69269f4a0396a8c8ae1619bda9206441e30ecb9a3a28078445782b8f8def04f6d942e11f5eb36b7bccd3d228fbfcfc91f9a3f6ceda73ac0a93989060a95a139614e64811fc3e287af252b848ce0787ca5e1cd86ed", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x3c311d57d4daf52904616cf69648081e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3c311d57d4daf52904616cf69648081e5e0621c4869aa60c02be9adcc98a0d1d": "0x0470f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x45323df7cc47150b3930e2666b0aa3134e7b9012096b41c4eb3aaf947f6ea429": "0x0200", + "0x466660cf7b14b9faff091c218b7a25c74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4c7c631782987ba1b8782bb03b9ed97e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x52bec856e0fcfd14e28957c3151da0574e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x57f8dc2f5ab09467896f47300f0424384e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x57f8dc2f5ab09467896f47300f0424385e0621c4869aa60c02be9adcc98a0d1d": "0x0470f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x588177cf191e890d83b10e9653cfd663c8a382d5afce8518636dd9565c22a631", + "0x682a59d51ab9e48a8c8cc418ff9708d24e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x79e2fe5d327165001f8232643023ed8b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7b3237373ffdfeb1cab4222e3b520d6b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xb8753e9383841da95f7b8871e5de32694e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00e41bb72f5ec76b0500000000000000", + "0xcae7464375580d6a6683e78dcd64d91b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb325863a892a3ae69770f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c": "0x70f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509b075dcd5e9bcdc0617572618070f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c": "0x70f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x0470f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x0470f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c70f4edfe03752ef15576b1bd42dcdcfd112a768b1dcdd94d1bb5f8fa82d6a06c", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd73a1b02ab3c5346ad1ec1b57416f75e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xe38f185207498abb5c213d0fb059b3d84e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xe38f185207498abb5c213d0fb059b3d86323ae84c43568be0d1394d5d0d522c4": "0x03000000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000" + }, + "childrenDefault": {} + } + } +} \ No newline at end of file diff --git a/parachain/chainspec/gargantua.plain.json b/parachain/chainspec/gargantua.plain.json index 7796fd1b4..a73ed6997 100644 --- a/parachain/chainspec/gargantua.plain.json +++ b/parachain/chainspec/gargantua.plain.json @@ -18,13 +18,47 @@ "tokenDecimals": 12, "tokenSymbol": "XOR" }, - "relay_chain": "rococo", + "relay_chain": "paseo", "para_id": 4374, "codeSubstitutes": {}, "genesis": { "runtimeGenesis": { "code": "0x52bc537646db8e0528b52ffd0058c473047e44852d11572096226e0ef8d9b6123322c1a03d0c963fd2038f2f3f0e7f3b171c6872911121f4302ac3753d0da3e1240d4e5d4ce422f5646ae43fd2590a2e26f2508b412962fc1a7b0cb9d9c7306a6f6666b6bb7b6577f79632492903b5135b101e103344cc143153829921667464ea9831818c1466726680908143c60d99d9cc0f32433274c84441060a335364aa300365c6871929326fcc0421c385cc0f646c205302191f645a3244c8ecc8082113848c11323dc82421a3237302192064a0c84c9131810c0a6490902942468acc103251648e90f9a184a394423954c621935346a13ca35c4289833207a50e4a2f4a58698352062516654fd9823206e5abf4295f50c2a0e4a2a441e982b28b7206a510250bca279443a89e5012a11a822a0dd51965095466946b943e287fca15944228814a239461a888a02a42c9467945c953ba510641155319a1b4a204424945392bab50a9514e519a51b6518a11e3841832628a10d3849830628062c0883142cc0d626c10e3135383982c62ae88e9897941cc12314cc434118344cc113146c4281153448f327ac8d143a8c7146256d0238d1e6df460a3c71a3dd4e841460f34627ae831c74bd08b107abcd1030a3d9cd023a8071d2f6ebcb0d1630886063045c0e8c098008608982160b880b1018c143051c0c4000606302f8079c1b800a605303d3057c0580153050c15303c3041c04c8181024605302e982760520093058c0f8c13304dc03001b3048c12303b3049c0a00006099823604e0063044c0e8c14182060a0c0447999e3458e972abcd0f1428517a197375ed27851e3058d97355eda78b1c10b172f5bbcb8e0a5e7458b9717bcc0e0a5052f357879bdc8e0858a179e9729ac0bac8f4dc10b142f48bc14a1a7a0e3d052d0427a0dad864682e6816e81c642cb40cf40f76814e82674127a4723a15b5a081d849ea2734831c8189905e943d2809c01d943c6807c9129209df82afc1a6413dfc6cf481f7e88944206f1413f0709c4a3419a805482448284424ef93a4822c8235e8d6783cc2177c821de0db2049fc6f3e07b80771e0818053996c118f9908158881009e5354e3f682982cb14b2eb067565843e64122515904ce81e5a78e002850b0b4636b20a4433dc072e5790748c6b903ae30f2e2b687123d5430b115227684102a9a745d6d246cb18a3282d402d62f0c0a2a5093c6ad0928496385ac87899418b125a96a083f072c54b15a418884f6801428b172d3968c1418b135ab8c04af8783e5846426a8c8fad94314281ace304eb9c50f22294a204237b205b2c3228e1a0740372a83323a42237e1058b140ef01376a8b1230d191fec4063c713769cb1c3093bc8f85a3b642c31d052585c10f3c3e98b930f587658944009b108c1b2040b132c4db020213a4174c3c507d5858b0e32133215569e682903c31103c35318e1c075b8dca0d402120c2c0d5a8e903a62058ae9b542452a0a2928a48258a818a5c152c5088dd4135267a4cc50c1427c2295448a895415a914a476524d947a9032416a88140b5253a4785258a49c482dc10306a9274a36b868a864f19284d1134e37d06eb044310a427d11d305ca079f0dc831422d4825a0b640d500e5a37286e909153354c85069828a4c85092a5aa8d0204f71cac935c83c2a392a42a804a1324514053105a9d697044b09be1d141da83a549650d951516204c4890a27209c86701223a5c4698c93124e619c8af062c58908a82aa08650739caa700ac2290927304e72886794ba20af30a5e0e4c3c80c9519f09841090c1e2f602942bf511a428908a31e48af92104ab152115c7280d2818b0c58a07079b148e132052a072e3b40e1c0058692824b176116a51490945072026c03a402498bd213242a486f9064400a22614142c31405690d521a26284c2b3049416283a4864905261698a8305541aa81690a138fc98a94152917907e48b3d415a9570908a51f906640da8204050909a428908448402438484628f9409a02490ed2114a3f947a2895a02444c9042529a528a43a4a3aa5224a4494a0945aa520483ea438485020d141aa42698812102523485220cd41128334549a52ca215181a4839114161388aa403283d405e90a920d485c905c401ac3fec0fa6074c6880723138c8810e710ab20a24324854c462e435487680a2e6fb8b0e1b2462a08d20a44728c7e18e59078482d1821319a429a82f402161d4bc52808308b5109f21146428c8ed03fe82b34506a05da08980e14ccc5052e54e8283c62304ee12103979ed216a2d63824ca01d601d22162912a81e812a1680923e5438b115ac04801211e41c481d8039107a2114420884b1095208e2102894910c5109120fe401482a8039108e28f181373200e410c43fc422c82e883708d308d508d100d71076210442f4426886084adb00770489c81b802ff11a350b181a88297984b162625e021b4188e02110a62144464b83cc1c50a1108518a7be139701c78170ef31b38176e03dfc2b5f01a7816eee334f01938162e038f81c3c05fe02f1e59f0f069a1c28507252e62a2b8d8206647658b1056d242d7a094835005e1133c6810a62074223c223c4168445804b805a8052806f8047804d005028152805180508053802c007700ae00d401a802f00dd00d500a601c201ce014c02880728042251f7c411f1a3b94b023093bc4d83106f802100ae0ec7bc2770618834f079f17a00bbe257c4cf8c6f8649f181f195f13c097caebebf994f89af89c00b1f868f0cde0c32255468f2aa498807d483921b58414192e3510d970e1c2450b1718681f3e19b4c45a8220962106a594d0038e946c54864b0c5e865eea10bdc499cb0b62b8183961b4c64b135ec870c1c1cb18798cec84dc464e232be10b22ab9189909a92fa2125447e82f7433ec3a58d1c461682080e5215242b721172125251b22ca3419242348768281b4114470e7281420e421ec20725b3f1fd90e54841719965314454c8736429a4a4a48c481591d2491191e9c871e4d927848b1b2e51287d418a82c482530f462d7006390a7928c3617a41864276232fa1148411946c462a87c588fc4637ebd6e8d8c842b98e9c4576416e41eec957642b72152e2d70f951c5f1724648831e527899912a4865b1a244b8854884c80d152f443544344a2b38a180658a8a0eca314e36f856a0978062e3c48506a244c2cb8e6882f08a13152e3458d911d340a1b1f223aeb152478b1056b01875f018250f4e3cb8042e5baccca024050b102e52843d2833c6224e5db8cc60850e951d8456a8a8e082056a0dd51c2f4f8c69ac249152431ca24c822a482bc1a50a128a151facf4a0471da9269468946aa47cca26943da0e248695182a2c402151a2c397af674945fac8051068d26d04cb878a197c84b94534a2ef10d97284c4b78716254a36ca9d610e1d02cc066b8f0a8c05009853548d5202b410a518a42c5a74c0375868652de2085862828b54677c6c8442a8d128cd0063da2b0324446794981d8c68b19aa305447c067e01e7a5001b381a580dfc06de0195e03bb81c9c04cc0329c042c464c0e3013f8086c020c05031163050e024bc139780a260247d160dc285c29dc385e96b870dc29e8306e19d709f78c17265e94b84fb866e831bc095e852fe16038115c0c2f820bc19d702a9cc7add06cbca8c065de037d0427c393702434145e9af01c07c28570293ec5c3b050d820d8185821581debb23ab052d82cec0a2c0b6c14560c7b046b044b84d5c2aac00e61a35828f6873a851a87f5c1f6605b75a8d251ab50a950e5a84215a8a651d9a84ca863d435aa1bb58dba84aa84aa467da346a1c25167150a550a1509d509f58c2a4625a39651cda849a83fb50735a8a2517d50bfa85e541dd41cd42d2a17d506241735a7b6a0f6d41ad42baa15454250ab50f2e4ac38c0a92d27558b1c8edc50bb304120648621ac9add0006240001168b020c60f58300322cf898c93fe4ba6935b5d159bf61422404429410b9b14188905c7d0624374284782cb0e0e2040d5d9a60716182d660840624496e9a10b959528489112637486e2000e3b2441121496840128123479234a049919b2347923460c64509cae4860992244a98ec70d9a14c9a30b9d121879b25429adcd49004b541c80d1223361421828390264c6e9a103922e382027a838311253ac0b820416f9a1069c24408131d9820b96182244911179723289326486e76b811c2e272024a4392244b94184167486264c98d1221373520b9397284880d4578b814419b2449b244c545870aa181c8cd11214b70c0418811251b0625383089408b8b09685c883872844891234788346008cae48811224d6e6610727343438c4b096c685203929b2342d09b1b1a84246922a4890d3518b91141e912044d420312234246b0e446871c4640e4857799426f8a204982440811214694ec9b22489258a009121d921429b25b5c72664852e466061e2e40502623b8b94108132623b899009224469830b9c900e922858ac08892bde4e6862549387001d2250abd69426406234788ec20e446871b1d306033c34d0d3510b19971814299dc50e4c686223f50264d90dc2cb9b101899177f10189111a585c7aa0458c3041626449131e6e848ce088122544842cb999e188111d583714497284b5c3a54599acb40c51224276b4d441711042a40991198834b9a980a8850e12183942c4481323488c985ae6a0371449722404426e9ae850e486879b514b15e8cd92240df85aa840912451a28390198e18d121044290102922c48892dd04c90d0e35dc6460869b19743852048911241a20b244871dd32207657263a4899125496c68a20311528b104592c44813224b74984148932447980831a2641359a2c336d17a732404449a20d18106214d8adc2c31320312234284a466b20bb64c815082161084a0c2a63899c25aad5d713ca56528194a5552b76badb516c50385e2814259cb8387456d74a3feb9fbbda35269f48aab7b754ea3a312bd5ea9762fa6f4c5fd628c358c35ad9556ea9aa6d14aefd5fc56a7956a54b39a6bdc75add6cad14bfd5ec7e0bd97c3ee7eb1bddca5ae518dc397ba5baf14731d1671dc07fa867debeed536ceef77effddc3d4ec3976aa23ba694626a01cddd2fbdb7bae6d76ab6564dd33cab699ae658bb204735ce5734aa517a354a35aa514af2eb58bbd6efc51c47bd02ae5dbf94a39873aebbf776d435ea9752c794524a2975a7f79248a41ece39f6ab61d0af3b475de33e0a7cdff77deed43fcfaeb96857f34ed3aa663fad5aea9a4629d5b0df4ed3b47befd59c6adad5565cb398bbeed74429a597ba5316677191c545a7a2531691e4a27b15bd8ab5d68a6f0def75ece21370ecd4354a372da45402d723e082efc8ddbda3d8c78e52aa5d4ac33064c195a6c29530d45473a1fae6946ef7d6ab699552ba02014a35cd2fa5d7bae6ee6e354df32ebc94fa8b06de7ba973ee2df75eabf9a54e354d03c1db755d378e2078b5cedd47efbc734aaf86390d63ac59b7d7abbb777ebdc323a798b678bd0fa095ba575c6bd52c572bcc55515151b19d535a6bad4e6bad15dfebf7aae0ab72efc5301806e37befd5ae3b49f3aa5d8dde5b35f7ead46f779dfae797bbd7fdba04b91bd5340ddf4b35bff76ab7faf5abb93ba51a7577c794e25a29e794e33e0caa30e7f85abfce5d2cf20edfab699a46b95b2f7ec1986b71803700e37b2975cd29a5269677fd525a6b750d7417699aa68177df8f52ea39d56af05d09434da38e396c2dc696bb1cc60e82180431f6ae73c717736487c98e524db39a462fd881ee229153f78f769876f852c7a3638e564dd3ea77394aa9e3ae72d72fe62c77dd5a7cabbb5b7c3187e9bd985ece39ee627c398ab1b7604d73afdad5a8df4be9f5ebdabdf46a9a46bd5a77d76e75bf9ae69aa651edba57a7d4418d52cd9d0339076fadf83abe1863ec1de6388ee33087398e528cdd31ad1a75a754a3d45a8d524a397cf5bd0cf07befc5f752c7d429a6eef8524a31d634ad5ec7d4af3be5388e524dd328a65473ec1c063f0e77226edbb67b3977ede20ebb5faa597cefbd94d27b9d56d7dcfd628ee33a27a9bb8baea6d55b357b2bb69a862f76bf17e37b1dbb779c1d35cb81f75ea7f45e4d5b0087358de32e5763acc66955d33405689a7358d3128000506b41b3da0180ac627e18a00056b3630fab5daa116000a2636dbb1877f862ac511f954a9452cdab46a946afbd5aa554bb9dd5a8a6711a75c7d42f779dbabb5377eceef8fabdeed7dd35f7ead59d73acf9bdb5ba5b4da355d3dcaf46a9dfeaa1a6691aa5da755c35ead5ddddbdd6ebae6954b39ae6aed17baf665da3d4f1dd344b351f48f848c24bd48e6049121c6e70d00430c3cd929b199624b931b2a4894cc5815201dc2ca141c892244d88144972e408911d3447881449724485839126487458a24d3434d1a1e5c606214d901859a2444811264670d8418023466ea009400c00542ca876f8d811e34366862635c31123361411d2e4880e4468b899a17c1e6e66406244081223446c2842030d4974017eb4f09044044d5c6e2052a4c8cd0d3f0c30803f01198000840ce0e60622474220a40624466c6042c4865f42a4099398149314890e204992252b37142112822347922c91912172b364e56f6e10d284871b242edfe4a686d4894913264678b8d9b15101204962a44911224c901059d24448132338e09044b5830e80072334dc2c51a24d5400446e8e146149510120b951a28488909b1a882c49d284c98e01bc945400374d882cb9417253c3921566b861c2e46689121c921459653a8025373b242972b3440811263314b91122801b7e1860004a8adc30f1b1c2086830b2e4660721071080010c3080196e842469a264044b8abc78476e76b8392284072238f0d801c98d8fa8008420496284c9929b1d84d490e488901a9018a9a18624478434e1e126b503921b9f01dbb0f4c9930de7fa9327de9327de90274f9ee0e070dd89e327ce1d82539fe070e0109c8a535586e054d2109c2a3e79727d088e7d7287e0d4274fec93274f7c084e7d8263bb213815a7e23cc1718c93873cc179f204e7e2e03c796287501c9c274f7070b421f4c993274f70f0108af304a73ea943e8933a04a73ea938d5b92138f5c99327db109cfaa4d221140747c3c1c14328b5387708a5383876084ec5c1c1f1213815a70ea13875c805b01595525a716042840654e3f0e87f4928390c60b996525956bf97f59f88d56b23d3a730a6477dd571dc38a2501fc3f83d8dafc2a70fa4c657a9a7ef82af569efe0b31f84a7cfa308c2972fc15b2f4f944c2309a5d2b86d13e0ca3d9bd383002e160e30f2af632fbea5a549b1c87b5398e28946bf39fd6f045f2a44fd289f42bfa24bde0e457b49393ee91e174d2e1f8a517bdf8f97e2332e36ff4353645823064fca5c8f1c7afb12b64bea7ec9f287e8dad2b322f56913e4ba32e9d65a535344ffa544a9f549fa71e5f6eb26d56ffc4d5509fdccacc8bf55754dfe355b5569dfa2b2bfaaca57ad2a7925269db5cf54bdbab86fadc4e623d9d6cabfee9a4cf3aab257d56597d91262bcd4a33b196f439aa5f7a3baa2f12d551fdf0437d6aaef0c55a7f34d2a7c3c2fa62cca7eabfd42f692cf3b2d63f69ede565adbfa2b79697b5fe8cde625ed6fa329a738d3adfa2d966b04d2696f57be8f3ecf162adafd2677d69fd3d369d155eff0a2eaba3c5ec4cd3f1188ef180f91d0ff3f55ff4795f297d72b39897e721a331f04d2aa3b3586b83559ded555d9babbe369d1efaac31ad3f55ebafa04febd21a8c7c972775bca5b55c86613bfe4dfff561f479619cec85c7ef8855588d55d9d6aab3594b667562d6a5c1b43e2dccc5e553b53ea94fd771c1b39657f99696935858f00b55fff57963f5796813ccbe2cccc6b49795692e3bd3745a5acb75662efaf4978acaa76afd167dde96ca5fd7895d5ed6b13e4a9f57567f873e7b6c4ca6bb1c86651ec331976198cff0ab855d2afabc2e7da6346e8d4fd2274a9fdccbcbfa26cda2efecea98d7f53acd6025594c14938d60bba6debcb3f0296be54deeb56b6ad45807b776159fb2564cacb3eb672fc75767ea59645879d29bc1aaefad7cfd4e480536333d49b3c840faf1c518f53992be8e5f3f5710032493494565652595fa1a4b7d95d2678f0dea537fd2d4cbededf82bfaa4b14d3fa5cf92a65e728fd22adf6373fad2bb4a499f224dbdecfea44ddf63537ad15f93a6a997de97f4e3a7be22e5913e434dbdcc2fd23d36e18ffa1475a869bca4af3d05b54981367dfb1a183fddc97c95b5a64dced3589b63a7af36519c762ddb342c2768d7d8eee5ab4ee6657ded4dce1cef9ba8d76bd7cf9dcc57340754181a1a1a8242182d60d5ef827c35003186ea68411a4f0cd1c1aadfcd7cb5c141440f9648820535408355bf13f2d51130b6386347091fc44105567dafe5ab24414411451a4014a18506abbe97e3ab1be58a329c308539a04861d54ed6c97c553365c74bead2b4c9f1606d8eafab4d948f6bf37d553305e625dd56cb767d0a53f50d9ecea62f4f5c70404b001f32fd4c81623f9b3ea5b04d9f522f31d626904d9f86c6a4c92a5f9d4e545ed2ff47a1c61103382c273d36f6eb5f7dba766235e725fdaa5936509fb27058f4a9af9c544dbda4ff43f0ec27d7622899c298d6b5fda9af4e4f9ff395e9e98fbe423d7d94af549efefb6af4f455be123dfd9ceb77224f2f2265183d49b3bce0a4c7a6f4a494765252f9122aa59da8e81e1954544ea5273d0f4bf4d99a485086d35310065006d3d7581499fd1391a5afb12a64056d483f2241182a68337a0ac2503f1592f428b2f4149441942908019a6db5883c47a4d2499fe7e94bfa052f1d85d235247dd278e96f1ae9f3bdf42789fc472afea2a75e9e2adf63937a157d9efc4d267d967e45d79897be62fa155d65b295155d67b395156d5b5efaca8ab63a5eba7f4a8b44267d9652a6d7a7e94b5a0989a4cfd2b3e8daf2d2fd47237d929e45571d2fdd5f24d2e7e859747579e9fe2aafa24fd1b3e8faf2d2c7a7d9aee22a2bfa3c7d4a0ff1d21fe56fd298d5d9deacb32aab319366dfa7acf1cd0aabaffc66757d6f561df0cdda7aca0adfa4b3ed2a9a7a79294bf4aff11349592692b24a24659148ca1a9194252229cb92748f240d49498e1c4914e9912a20db3ea791d44b93026d6b5d9bbe3c51c1b1366c41a63066f7c24f3f63b2b2383a52147d4ab3e9731d8fafce9b212d7030860c5a303883e5c4af4b065040c11426cc18020ba8087d87092f7a4cf072821a49e8e205273d36f8c10f397de2ec3ce10756cc7cb0c509c66069da09d63d32e0d71ed4f4393ed62c3db08854d16a1d218557abc53ae90e5ab056abd5431561b048a00de9290843056dc6a7200c15b4019f823054d0267c0ac250411b7f0ac25063296873bf921d8fafeebdb06ddfe52b1f29766dfb37c7661b6cc757e3cba5e455926d311d5f3d18fb5a9beb556530d436db6439be1af549fa138d6916f372fc51d51165d8de5c20d8aab3efd38169e1db1817bb2eefad6db16fb3aee52b923ecf96279df459635af9168c77fccaef18e9b3ba4432986dbdf6a63393755b6b7331cd6197939d678f0dcb6b3adbbe8a8be660a3eb5f341436c32dfac42bfa3c571eeb0af3d2eed0677d9d4ebf825b5896fad3a7ac0e8e692f3bd35c5bcb63da8c9391503f3e4a459f43bcd46151791237a331d11751cc81041458c1832a74e82cd67ae9b85cb0fa92ade813b74ea7d7b47d796953fab4aed1e84f778663a61fbdc95b18a6b9662ed374b4d958faef4b287dd618375321fd28ab309c25b610424c0c9e33aae8c12d99acce602d1d9d9775c54efabcb3d1e835ed2e2fad499fae33926198f8a2d699f14bd3f9c00fbfa44f0bd3645eda27e94f6b6dfba67d49810c249468220e2060b3d83693c5ec6c6bb55cae031be9f3ca44f135913e6f4bbc31fcf272fb10d4a7bfbcd45a20766dfba60f018521b0e145194660230c19ac1593c9bc37b599cfba37359d16f7267e89fabc312fcf1f9eb0b6d74e509f17865d57c7d3220b306441f062ca1b2ccac26fde1895f99b9c4e8d71330bf374b7a3c9fcd5e94e476b696f5e17a7bb1cecd2367d61f7d5c40d1e9cd14513622dd8018bb2b0ee5a17b6812a585d2b47d39dce53d046d3dd8e97f62f6941189e823657772e10067f4c5256e70237a004cb75c7e3a50583f878c148b3292cc7a76bf98ae3c61185fa5ddffc6d76ad15f5d254edfaa66a9b5dab7b6dfaf264074eb5323bc814c6bcb06d9fde91bbdd8f986b8d9766bf571d4e6b7586ba1446e3da55c773b6ad3afbdc657f431aaba9afeab23ab635dbf65d9f5626daa7afa22b2850a0e40061ddcf51b1ee43c941b1eee770acfb50a048e1583f8842ad168af5c33647abc5ba0f458a8af583d7d162dd970284758750d95861f5655d56c75b76f651eaa57d516fa2cfb26d3fd42f78699f8e4f43613456633516da9775b98eb7bcefdeabb26dffd3a7122fb1f89b3e5522edb251571895b5aa4e75d557855998856597eb78093e6763dbbea7cf2af3b2fb1eb7b6fd4d9f2f6a9f85dabe6aacce5a56c7baecebf502b7d760db3ea74fdb75ef71dfe96cfb589f282feb7ffab6bcb49fb55b98956deb2dd771f95fed312fadc73cedfdcf1e1bfc5aa7cfd1cbfa9cbe3a5edadfb4c35eb4ca6ccc61e7d96373ffbcfabebcf4d2e4b6795fdbbea64fcecbfa585f9797f64d8fadb4bcb041143f1802c212b21f0c81461c652cd102241cc1676568418499109a3862053768d127ecc8000c1360918335a4d071096368488d20843034c4a2acfbe6756dfb3e7a46cac2c962e806434343758461058bb2ae7e8233458ea121210c4561880e966bea657df3be2e6cd39727224eb5a71de43bdbf6f325a926fa2e4977ce14d4de490e9366ddf8dd01f607768de438f2e3304977a6d97e14c4efa4f694c426856dfb36d81f269018828ed81f6075a18602b405baed5f9455d52f5955fd805d51568e0e9004d81f3e96c66df1d7d88d8400dd58a3dc7e0c5fe440a163c05895d55f00abb24f6355b682b68811bff6c3a48901861df0820d1d83c6fe70adb22afb54fbb02afbf655332c4776fb1c49b70b4028607f80db7e02ecaab2662afba3be7d1f1bc97ddcde1e0c523f5390d326cee6be922359b22ad40583d41aafe4f694d4b6bf7364dd1b89b22afb1ab9c3aaec9ba81ceede4159a8efb688d1a4d9f6ef635d02427f2ee9825dbd97f6edd3d81f14064419db7e01ec8f5ab70ffb034cc0b64f5d74ad8a526dfeb64f6352646a81f862d3a7610e9fc29834b6fd73a6377c3fbef97d7d8e34ebe63edbec5f18c4163196ac6af337696880d8158db55aad16cb7f474e13dbebea59fe2e5080b650b7fb3b7eff7c3f0b06d93685e55c51c120da5f906aa2d1b36010eeb37f18446d0acbd9d925abdafe92755750fb8fb600e65087f6fd20e0e7b102f63def3349771dbfc67aa459f7a84defbbcf9ec9ba476dd63dbef8d9bf8e1c9f8210b0359ef13792f63dd27e477e9f2b08814cc10a887ed426b7c7af600e3c40f1a187d65ed2759a5a55f73930c1d9a3374550053a8636131ae33922883dbabbd3e69847926e119969a69f063e40fccdc107780e4e40a44d1eb6f8e3670a42a0d366dddd8fcf810ff036a52c98dd875fe31d497705838cfa86f0c7afe003c21f750ee7367d874fc108705bd437786f3f244defebd738052760dfcb64ddd97e611050e7508776fe1afb91ddd7788dcd24dd1e497747f7a69198bce44759a034b6e90bce58b51de4fa14a6921bfc42b17e757fb405bbc73832d544a3555dab2a498192a91dc2486151e0d8749be3b61fcafe3055dbbe7d1ff687b76d9432b6fd92fd61579565eea88010725016e8aeb19ffd41df3e85b1b58a4c7d4819e9d7a75ede1406e5e705a565ffed0f95fd61ded1fef087b13fbced3f80b1fd3ffbc37f78fb5796657edbe4b6bfffa5614261cc915a95c9d9d23efd4c1530fad76dbb1829ec87d6a6301fa06c53dcf609b029ac87d8b660901e7cb67d6a7f6c6fff72d98241367792ee8dac3b57d03f3bd9a4e610e45ad5fd08802e04a156657ebb626de26cccf9469a779bf79bf8d69e8241f0d7d89c2908014d9b776bcffd469abfb777d2344dd36d5062f2b0b7a756b57d8d73640ee7f6df4873c7be9feba791743b4937052f70b7633207dffe97a45655f5b5aaadba11995ad16755d4aa4cd4ae8f3785f5f0da25abaa4f77506bddddabfd1aebd67eb5d6fa5baff5b95d35cb04eadfafaecdbaadd7fa93a9fd5169cd22b53fe80ffb37d7950a08214459a03b570afa7dfffa0e06a99a565105a6c4ac8a6efb4e52abf2ba2d689f825753abaab15e410ae06c5b63ab1b99c298bffd3305c098a902466a55e6b8fdeb533048fd0a3e808756abd5c3ae9fed47ed8ffaf4affd6139abf2afb195fcacca9f66344bdbdffe7d93dbfeb9647fd047d91f75fbefb03feafbe7faa1ec0fbafd2978c91d786c2638dcb6cf6dab592660ffbefdab9bd45df5b52afa569bf6ebbbbee1ab0f32b5b191c27a706d93dbf447fb83c25a3b9b3e677f50580f3b9bfe677fd44d9fda156599a54d9fc2507dc36ffa82536b4da69bc298e3b69f6b7df3dbb6d65c490b03edc7d91f66dddc53da82004608b8e6b2fd2a79f7475b5852673b876def3012b37f95f40deea07db2bdc317d21696d4d6ce8101bbbe7d0a5ee0b62a1881b1b5eb7ff607ddf6291881dadaf56b2c85b1fa8671d3171c5bad18996ecefe30577c7031daaf6ffa67270330daf7a74fc10bd8bfc1356755f4716a7540ce948a2a30e5c7aae8a656459f8241ae55d1afb17447b6458cf5e9d3d0071276882688e1f9b0c2470a7c54e1c3091f2e1f2af011850f287c30e123091f4fcc2461468c1926cc14616608334a9891cd2c61860833b19931669c3053c6cc193364cc9831f3841920cc04cda43113841923cca031a3c68c10666e30039b41c28c1466ba98c9c1ccce4c0b665c30c33333c50c14332a9861c10c153355cc58319382192966ae98e99971cd3831f3c40c13334dcc2c31a3c4cc11326dccb466a2c8cc31d3c3cc09668c98112264f71cb9bd46e2bfa4bf25eb537003dd83d9233bcd919ba624d61ce996ac38f509c976b05cbf9241acd66a6db0bba2c9fc37d857c94a77dd609cebc2accd48572430aeb825e9b64e9a1566b3f5be0655a0fa33ab42ad1c9d9dbd625bfef21dd3737c603f3107b2316bb5e5019205cdac108cb250dd763dc859e52bffeaaf6996179cd8bfd76eaf6d573bb1ba47066bedb517634dabb5fae37add6a29955587c859651f6ff447edb1669101bfd3e79c3ef5a7d8b1a66d9bb52a2fa9d5e75f7d3eb7a150286d1ccf1e1bfb16eb933bb91e1bfbeefab44fb67a719069fdac81717bbce355c8dfe6f8db9d4f4ba9ac5290d71fff0a140473af41be63756c8e6df957a199ef6caf332fbd0a6d6f6dcfd9ae81d1be75652b943fcc5dce9df87d9ff77939836068817ce579597b9d06b315f255f859d2b4b11f5f81a60f350b28fabe70249241f4e07fa2d3e9f47d6168328d96e70b4dfac757e1499b5e24553e67f244ea9e64cad9a422fec9e4bd4a36993c93e93b9248ca27d2895432bd6752214f24a92333ea45a4cae9d4a99cc057e950285488427da812aa9cc25308834d87224152853c915f36912a4f224f9f453214f2554997bebe9d85a168837c259e5ee62b92e85920d1c67c6532912aef953c53895412c352582a95442be491b48d79790a3d2b0b431b24dad9f6fe23f38f85d997e5b93ec260637fbcb43e5e56fbee8feb7dab81d17f02a3539b115f5d6bfd9aab4e16b3f87d20e87934bb569f5d5fbbf2eceada559b7567d7cfb5f2505fc9678337c4fbbc0f04c330e79ae3abaee6d496af726df1e0ab900725be0295d8e0abcf86214332def13c4f043d51fc2a7a5ece61d87542232f87ba3edef15577a554d6e8ebe71b44327dd7895e287ee9bb92f8e17be2a986a7afa04d056dbca7200c15b4a1200c15b431bdcdfdf155e8859d68f2ea93fea4ebe711a9f222f2f4f9234d3bbe1a4d9f7ffcfa58c7a4594c1fcef1d5a7a29d9c4e6ffafab8e52b910af8a7af7f853e9591ae2352258f2a2a9f47d1298fa7afb19f298fa63ce671fcf0ce562141f274854cad5d33ced91597c8ef4512fcec9139c85724d2d7bfd9ab7f817ce57df9ebdf98afc4faf7e7ab25fd7dfdec61470abfcff72b91df7724d1bf8ee45992fd48947483bcfcc890ac60bd405ed66b53b136a96c572aabdd8fef5f65beeaf4d97dae40a17f8df94a047ef8fef5a7c27c35d25e37e26f447adf8da27cbf6eacb1df58419bb10679e9ef9160e899ecc80ae4a5579997ae81917baccdaa83df6afffb9802f6396dd2e096a639a03d7e0e8cf9fa742fefb36601ffcbf9bfbf2e5f8959f7c8903ffceffdef8ef8395f9d2c66f1fb40d0f3747c95b5fb785df802c38e67fbd32e1475f6bbb33dfcfcdd7b187e9f178aee799ff7816018e6dcdd1c5f75a11038d31ee4699779e93f8116cda6d9ee589b349b03a3cbaccb6556734502a3365daf4860bc301a978d389cad418dacf295931e0c549693f7b4134dffd347e5efb1f15e43a1460c54d667edc4d33aed84dbb4a6e9d96373ffeffba3388d1ab1def4e825a560b0f0c7fe7eaee00628c78da3a669140adcc07dfc14b4b91ac7e06f1f94c1b54a3ff1eaf5c117c368d6d97d9b116bcf8191fbcd33a74d9abd6993669b9dcceb64d9e5c1b8ecdab8232b893f8671fb1846ed35309a34bbbe06c6098ca6d6daf839309a341c18fda9c64f39ece24c4d6b09e559f79e6601bfc7e60bf255f8f5d87c3f6299afc64f3bf174f8f831d0f89e17f3466f0c4310ecba98af3c9d85bafccdc02f0785fa93ed51e3989798d32606c23fdf7b9fbf2fecbef0c133fcaec3ae2eec4210fc3ecfc33fbecaf807e62b0fe6e3abcfe7e52b50bf34e6c1522a2b6becf2123f7e0d8c9b36abced6e89bd8855da6cb367ed71118cd0bc3f8f3f5f1d5f7b9eb3ab01b4770043deffbb24aa73dfde9f0af8fafb23efda8a55496cae3cf37c757f9bf17479f354bfef1eb3e8b46ede4fbbe1bf1f7759d8da8d3e3e771a43bfce293b494ca123dfeac429abe4492463ebe3a8ddefbd3cb579e3ebd1f7d8f8de9c3cbe3abd0a49d90aecb572513f8a4c77f777c05ea13fcd074757ca5627afcd941ef049a3edf4f85347dc9c36c3fef34caf63b795f634f27fd522acb67e33791522aabf46089b433726dfc1ecf0eef6be3cf2232fc91043f77e473ae9de762bea22cd88f0fece5c3bd788064417ebf950d8c34c757a2f63ebff8f86fcb579e6601dfebf0bb90afba503b0175cf0b4efebdc7ef335f8d9dee91a1fbefc1c7ef41befaf4f97d17e27799af441a7fc65f16bff0b3f689c8f0bfafb163c65f166b6c97ef97452fdf6cc5eea554d6cdf1127f484aa9acf0bf50bb0c0cf2127bda675ee2ec6917f2127bcbf496e9ad4ab33530d237ad0b571d93ca4c1a9b11fbc56f3362fc2b1218b1ae9c6be6e305238d59619b9a54c6b92aec6b6df6658eacf2955f2e3bf702f899eb9141fbedc1a7cf915e53a14f559eaa904839ab7ca5896e9d6aa14c8cb95a4a7444b1f0f1d78a81df82e9545909c6915444af51d5c161b8c1f2f8ddabb5658dbba5d3e555745c3331e36db65d1eef8a6dad972ce6926199aca5039bb9349d186cd3c1b1974c476bcd60ae564c6bcdf06b94c132f78a793259f73adcc36658d3f7057e2e8bc15ef46acaf26a617e328531bdb5ebafd06c63be72825f681674af766d5aa05db3fdb13f5ed687c17c7c5ebedaf4f9baefe4797cb5591e2febdf5bdfba7ce5e46aebf2b256217c76d53eb8181de3588bd9c814c624c5cc518e05460a0b02689ba3201fd88fafbc98af3a205f6db2e7b82e6b279bb7e91e19b62d3ff71a263b72db48ed3b927b8fcc4f41195cf3b286517f75e5f1d2569e9d9d9c1c1e342a64030d8ac14bcb71a8eae302058281a83614caeb4f7702b23ff6c7fa60eb63797876bcb49aad55a806d5a05a813c67dbbf392e745dc8837010909716ebd37d9cc77936dfd97cc7e5fe6cd8f3f489310fdef1d2066dfb1ca7cf0be45d20ceb51c2d4803e2b49dee67db1fb91d2dc74b0bb4edbb58bce3390e547fbcb47687a3401488a341282aa4aa40ea0efd41e9b3fa9c4eefda06796983b6052291ac90cd21bd69e7e6f88ffbfc609f2b748384827876bc2cf16c6ec74bfbe301551e1fbbf3637980ac4f90fd11b240395688447ad797c74b7b79ee0ee9fafc7869c51f01fde09c2bb4e508f96ccb9345229fcdf178698172900db2420e94e3413b2ec473737cee8efff888e2bbc6415e5a1c0424629cb3ede007b51f9ffbb3399f2d68db842ecff5c13b3f980708fb04e19f2b848172b090a6bdeb8dc74bbbf1ec683efbe77240dc2694b3ed9b38080b6940395ad08e26c4b3e5f86c3bda8fa6cfcde774cd05056dab4f2e8713e280369ecd67e78707c827e86713da1c508e73421c27b4ed8f727c75dffe48c757f8ed8f767c257afb2397afc4b73fe2f155f8f6472f5ff9dbcf2292f422b97d0e49eddef770a49d6c3d36a317472f3879513b09758f0c61a8eff6da3bf68b5d441291a477d2d75871f350d3c4d2cfb6afe97323c1fcd51d9097b603ea3a9fcea7e3d978b6fdd1773be1ceb6227d7639218c8867fc197f3451ccd972441e91c7412051d4ff1e8fb7e3ed78399a97b3ed8ba23e3ba12ed46717b46d23902824b4ed6fe28eb613fa843e0e0685a127e405e1a06d3f0cf5e901691ed0b6bf6dfaf47e2eced9f6359187670b7f5c68dbed67dbdf367d661f9f6d357d661f7d864021d029ccd9b95f4e4b188477b67d2dfc82c21c2fed97030a796979b67d920683bcb4de0f08e4a5ed82c09f2ea7cbf19f6ec7793a1ecfe97c3ca8fbf11f187d8a78b4feab3d1f2fade7b33d1e2df21981783c99733ca171ccc940f967dc117dbe6f47fc09835a5a84f617e465f8a2b550a803729e20a04ec827e7ee783b5714f2782e90c887078fc73aef786977b67d529f398787e8670cdaf12e3928038d42e3cee7f38d3ce2cfc6c202e67c42e1eb4d04daf64dcfe7fa783f38c803c23f5e10e6f184704ecec1411a0f7d8a7e76bca6b39097360b9d39c84bbb43340aa5be9fcfc7cb519433f2a0503b1bccf152046a617971f4d9c13f3ca0900fd08fe603a4ede4206d14da76e85304e4e5b9f29bfe80bcb41fd0f7b312b46d8e97767c9007dcf172f431b3900694737a33ccd931bd1906f194de147f7c486f8e3cdb7e3fa3374539a22848d4a00fe8b353fa14ed78691fa5454220cf07b4ed260a0a3a8931c51b561811440dcc70e713326996fa25286c31a50e14b4e10a3243a19c9266a98f0385941dbcc103385c2e294c116887a459ead398173e94c00950d898e30a73f4d956f426c8b3ed48b3d49791e3c707313802053f08c314ed6c2b1209813ea21ef9b042cd52358505c1b371a64881c2163f310843881c9822a16d1f244739239dd10e397291231e72f4826dfbdacfb68f63dbfe05daf67d2423ed6cfb308c145602a16dd26c7394b3ed288714dbf4e589c6a9f60230c8d41661a430225ebbee1db47d3f8bf6298c895dfbbe253b30be30d2fbf6f39df9ca89b6a393e3a4c7667bfc18b7f6e5b4934ddf9997b76af30aed9b6fd00df2f2be4c0604148bfd8f76a2e9fbe3e506f07582f5857979afd5f7fecabdda0717a375edcfb97e96bc9f81917e055fc06fc9bbb281d1b42e30480e75682f8181b2b0fe010628ad164b4a4f0e0cd8f72bcbdfc10bd02e4c9c7dbf8241ee256dadbfe2030623956dba4d97795f9fe6cd7f13b5ab39ee6a7240ea5f98af3c7d67bea2ac4ed74c81a9385d33c5e7375d33e585d274cd149e116b930302b32485ed9f18ebc2b04bc3b9d633a2043b3043680bfe4040b1d8cf8f96bdfbf4b3488e9fc9eeb347729feda7697fbbee7b6cf067ac9d78df6393b376e2e91e193c4febb27f1ba97dbedfbd9f488e7f3399bde32ef73556e7cbe9737479cdd6d03c1645cf4507cfb4eda5dd9c59bea5baaa4efdaccfda554f9f4aba4e83759d3e3797cbf3ae675bd6ab9d3eab6ce3361d9d6ed6cdc4aed3a795717ff6d86856d3e7c669cf6d9b3e1da66928eee5a57dcd433b3984b25067a3cebf68b8bb5d171696bf2d2c58e54faba3bd5c5bcb63dba7503b74090f8106123070b18103198bb2aeacc5b5745c2e6e6351515951c1276f692e976933f0613566453f98e859e38c1f603e6de0962c366be9e8709b0a89742261181e7de2f7e9bc4954d2200b0b21868098028e284ccc6230d9d66a711b691c47e3875f0c5b273060c0832b5e61b83105198c7bc53a6e1b310f2c1c821f93316880050de2c8420655b028eb66ade25c9efe0d86d264a39775d39c9715d30801210734f8828a1e04b128ebc25a9bbe3c69c1b156e593290c956d93ca5c184d6f9934db5fdef296b7bc45616f02e1de1cdf4471de52d9776134adcbba6cacbe4af58f1a476ed7af6f0281c17e7e682c0664bfcede7e85a9803e86fa01dfa430f04d206f7223ea55df7f397b5e287a2761f7d457227d6a276218724fe32b27a1a699f2b3414df369fab32d906db94dc78ddabf4d95cb367d7972713edb9191a9afb84d0caf7dea65f0c3fef433488eff919ae7bd6b8ff5895fd32c5fa79d8c5ff760a79d7cba4786efb33ef37f9ee6197bce5f6341ff4072fc4fc3aeb97e2995d579a494ca023f83df8f5f7e2d7b8fbd2c92da8724e6b8b7f8af3eef63cda23dfe1e9bf1c3513bd1c6d7bec7267c31d44e46dd23c3f823a73dde481828f7d9b7afb122a9bdf63536ccf6c35f6369b69fbd5643c96100cbbe94ca52795941928604e265fd4cd67859df235df0b2be931d1903b9052afaf4296dc16595e0844f4da2265106255936cea69b822ad53f0a0506f1b7640da353fa66d5b13f28fd4a29e9ad5d7f680bb40ea97b87917eac06d95e9cc18dec1e24b9cf5bd775e0d63d77bfaec682dcd675f8afedf429feadf1d2529a8df3d3bde3c47b2bd76a79fa747dfad6f272cb9c3e452e9dd6839bb879987328fa2cfc137cea65d667497ba1bb068efad467cea1d5f1f479c636d7a7162b8d4f6345f7b33a2d6de6e1561e37978d4cdf29e154ac3dddeb3a267d96bceceab1197f9b8d720b04ad758cdfedbd3110ccf6c4ae2be3b06cd6721dbff739eea554d6766358a6ad5bb76eddbae6da3be6f485c966b7a5e3c23a9c5bacb3c9b417d674b0d6c233fb9c56d98bc2d55296d7134eb5ff46a6301d9d559efaaa3e15567f84ea6c161424933901d24eec06ac934ed798a6b1beda75d595db34ac64a3338dce309d5d3aabbac56d1a36551d4959150cf202904ce3ab333f8b0cdd7faad093e17bcff3beb7cfd9ef03c130a4a1c93b2a95973a62f89f03b6ceb73f9e3cd8e7947074e6daa4b1afcd7e3c30a6b5d65afc2c32f86bf69fb33f6eaf691619b4bff6b96bb5ab6d1bc7b9638cf5a93af1c7f042c7a1502e6ce358a3bdd53d36fe34740463fd11c8aac53fc814c6c4ad6d1fb65536852dc1b333b55f8c14b6c4ce6ed914a684d0ce57445256f687311965aee32ee7f197fbd8d7a661eedaffb2d76db6a5daf695f5abb3afcdbeec4b89d1b42ddb429963685ba06d7db68501ca9262b43295ea512350acdb9cd09cc04edc10fcb2f735667223ea6b0c48a84d0ed4e6f8654fd728c6faa7eff4fdedb5c77fbfba7c75d24abcb46f1ab9126a243d6aa47a1ae4d303a1aded1db46de28011701fb659f77d8eac4cfc28e1c4cef8a31f738d1c6a7c94cfb67da15990ec026dfb59fb68655196ff9817e80661df5e7098974c8c260ddad6065f5995ea1f850a6a62659de630af1a9394559518292c899fcb61d73e6f150cf282c3aac39210daa6955999af54a6eacd4799a8d11cb76965b08f86b13ef7150c829f236b184dc71a06cafa4168efe0fbc6ec8fabed25bdb52f106dc157354efc7849632e2780aecb09991341d7e5c4ace608202fa98c0b1a67a823841c8996c3b27ff42d18e485cac46872570abbaa31e2085b5297115f58d5185e80b1c51732f0e28a2da490418d114dd8926ef35eb12d105fdd9143014199d7b54d20db5e557518cc571f1862c2d0d0d050154660d9f71f5f89550c0d494107530c0db1ec7bcc573831f862892a80484213e2308265df817c85030327d0f09922084118c104965d610770540106432471851a2c0bb6a048c110cc183a03082cfb3b8c4afc6cd726cdc6a27d222a0d637d4be9104a29958246abb8deead556d17fe37b5cf8dafdba82d13e0de3689b8c3677bfe5187c759a9e4506d29f5e207d7d1750352a7fd22c329cbe04a44453fa7a2a7d056d2a684341182a68837a0ac250419ba7200ca33f4fd38f9ec657a5af4f4dfa4ca11ef5c3a998f4f9e678d227499f264da968d4e6b8aba84dd4aea1367f5750572946ab4d9a215fa6dd863d899fedab2134343479880d4a78a895ca86f8aa2609a19d16ddc9a13b3a746787eeb868dd7046365c8205414ef06c0a6b82679bd805dbfe6a531813b39d45fa14e6fedcd80f13e7509c637fd8c725b03f6ed0deed0f0a7302b6eddf2f70cbfe60b9603c80e6069c9d7ad16aed4d2fc981ce5aaddd64b4bb776ff2edeeb9a7e0059470e4921c18b02d65817e136d73a46937fd8d5cc27d136d0bd95b0e3cf6f61c990303760e75686f4f49b35200676f9a521f549bda637f4dd3afb198bc735895fd4be21686625537184d7c7f7013f68779e7c0393a52d81f3bf6c76ffb9887b6e0dbc29800da269ec3ae2acb3e86627f50baefcc5741be1a519f9823f3d518862ad0f3b21df1f87007ccd9f63329db51e94192e945fa3c8d469ffaac4f959c7fe5597ec7b7bccbdbbf3fbe2a795fd23678694960f5b13ba3338f5ec7c083a4a40b64e5216d0e69c91479224d244a0584fe50a00a54812ccfcec743a842690f52d1f58706e5d49dca537dea8ffdf1d28e787c47ac41df6b17b23e15a80ae5d81dcb637d7c7c4aa005128d247d739cc7fed820eb39bec3e34022515fed3f3e1cad4116c87fceacbd4f5f1ea06d83b675a16d73b6ddd99667dbec69ea835f9c553141a64f6128698b184d6eb43fcca734bfb26d12af6dad5d7992eb6bacd505637dbc2b2c48aea6dda6effaf9e2baa96cd38c3f0a06a19405f39a77d731767debdbdfedf6bf20a52c9875bb366b25e9be95567a579c9736689bdcb6365016ecd7d82ac44837dd340108c0ae200000b02bc8020bbb823e7cec0aceccec0acac8ec0a96e5aea04ab52b1813b32bd8a3c7aee00a2bec0ac2c0ec0abebcec0a6abd2b4892bb82ffbb823c78ec0abab8ec0ab6b4ec0aeed8b12bc8c2b22bb8b2b22b984aed0aa250bb822a2abb82a7d3aea0c9b42b582aed0a9248bb82a3d1aea048b42b388ebb82a2b82b1886bb8220b82bf87dbb8239ef0a7adeae60d7ed0a72dcaee0b6ed0a6adaae20c6bb82f7ee0abaef0a5abb2b58290bf52f03b6ff2573a0b0ed9a6a43680b76d3afe003a88c66bbe6ac6ad30205423939beaa429cc3b67f1330080fd47d280b508c9c55d5f757d2c4feb8efcfc3697f58fb83c2b65f9b44cea6301404cd6c0a438267d739eccafec0b3ed6f5a28db3f63528b4df1c5137605bde6076bd892d6fc000eaba2db7e0df2d57d80dd388bd17bb0e9ae42beaaf981d0172d6e5f8c356755f61d768960414a2908816a452190fb9008daf62f485bb03f4c9bc29028c2f6bbe933215faba23596f2c8d4aa7c75f6d8dc3b7623bedde69adf3b721c4dd5d15a75f679063d2b13ef05c12fdfd1127290d8b1441829ec0463ec994d612778d9af5ba430668d6dffeceeae4d9cad7d8d62f4fbd5a4a1b97fdf5469b47add7f24a50230b5cf4fc3e89126ea77d59734b94c9a389bc6065f8d1c6a7c94ea6954db69687c655b2c7f20bea2ac11f5dba4d9aa6dd2549755f9bb14b6f4f7fa850f1f30303b7694b69ba56d410c5056ddd9194d1ab4fd6df0d5f8fe4a7c25bebf83ef5f737cf5bd7fd5f1550c5e7a7d3300792445128897fe2159e3a53f48bae0a5ff47bee0a57f2573e0419900d65dbf234d6e779f49d3fbfc79c50717a347c109e05d6ff0344b04b87d9fdbf7af49439adae31f49ca1249ca0a49ca0249cafa48cad2c81bae66894000b6fd006c5f5196bbbbfbaeb485fcf7e2d4cf24a52c54bbedd5a6ddf7b9afa4f964d7bab3c9e4c9beaffdf694b6e07d7e4a5ba09485accdfbf8bbf7484a59e8b4591f7f8ddf4dfb4a9a380fa85bfb1a7b6fd0f40e350276db7b6ddd35d6d93cc4a6b3ab75edb32f38f934ac9d5cdd23c37dfc79fc3b1a8d397f9fb5ee6e4ff7f3d3b0eb13d4766bf5d88419fcadebeaf53c97899c747b6c34511e69c2fa554bd2de5f7fc1acd5c6d17b4da9bac44f249271ef79daeb6a3a62acb3e7fd5149d7575843d108e2584a3bb5184abf303e0d855997e9cf16c6279e7560cb23fd292b899e53a2b2fd29ab302a6b559deaaa2f93d6f1923e495b37d358ebb1115f9bfd77f6d87cdfa8edabc66ccbeab8eeebd5e9d36320e7e9f3b6b43fb16bdbc25aadbdf86d05efd5f1dff409258701aceda5549696f58d692cd30ef3f245abccc6ec79fee08485dfeaebfa945263329fb5ec9bd765f17d6d5b6ba6c53497adaea3c960f8a5e968ad3bc3310c7bd9776d5a855b9afe19d6282f6975bbe9a070aae521f4be8a22fe3fdd447f7aed59b01f25f5e103c03fca94faa80fc0535f4549e973f4bef251787c8e32ea73f48fa2f2a98f72d2e7e945f153a217c93ffd79d2a708e6537f9ea2b83e39eeb793d353ea9fdcbbbce8c128d67ed6bfbd7cccdbed537fda4fe11ff5e9fdf867eaf347b9bfa2cf52e947faf427f39fe4e8fdcffc2c4f1ac7fff489b13e5bdefbd17ffcf3fb519f584fa97fe22f7f853fc75f419fa5d2b6bd8b3e4b2e6fda4cbfc29fdbafa04f97ce5dfeec60f41415499fa437999e856432e97ff1bc7769f1bcec75a4297512f9b8d9ce3b39974d5824f167b99448b41cb98d3e7a9b29e3ef943a71a428c25ed7791e3793e81b4fdd97126d96b39e4862936353cab91899315b91cc3f235ac18b8921a5b27765f9a7fdb2ec4e27fdaa917bd52723f3a7f73232e4b689afbffcbc2fb14af527f9aa1815279ac6d72f9312bdcccffc79fa99b2fc337fb942f9337f7638262693af5f854dafb2313131327f6e2fa3cf981891ffcc0a2bb4fcf97d4bf7fa4b976f7939cd7cf967ea4b95aac7afa04fd5bfacf0e59fdebffc396a9827916ceaf5c7b4b4fc8b8bcbb37ccbcbb7fc29fa16ee63dec79fe2fba8343b7ee64ff1672accbfccbc8f3f4ffff227f7a56ac70efd3bcadff127f93bea9ff977fc0a2c2cffe2a2cf167db6fccbb3b83ccb9fdfb3d43ff1aff0aa3fc757d51e317f6e1fa3cf1e31aff5d9e35d5c5ef5a7bffeb37b1ffa949179187db2e893e549a4dfa1cf959567d1e78e27919ee54fd3b3e87385e557fefc740d2debc3fccccb37fa96956ff9ef7bfda7f75a9fa397d77f66ad8496f5473ff3a7a779a065fd197dcae829b5ccbf823ebdd2e7153effd9e918b23ebdfc3bbafffe24f50bb4acbfe34f9376819631a6efa14fad4ffd2b900fa3cf977fad4f9a061439be1872220a46e4b0c82100718410a8e0c6125186c08a427e4d4a73b47cfd274d69599f874b4bea77e89305a5450cd48801b1a08a2068c14ae130e143128ac00112e4007a8295fa53a45114a5a9970138453dd2d39fae6da065fd933e4d7a4a6545119fa4a7d0b0a2f88ff4290a5fd427ce0aa6a0638a1508c1c1c61b2ca762cc621045114c08e1400e56147ff1cf5103a16505c0b9691a5ad6074fab87d033eb292a569404d0608b365c0047116656b03a3de559517874110716374882142aa8c18ac269153d5938b17e5ad6bf38fea4b42c0ce5aaf3b3298515a1b3a96e62372540b64f8cf53951b6478c9c680abb54ebcc6edac5136f686a3165c15e272d5019442c615ba0246cfbf4d216fced63da02d536851101c62e5995be6090ba69174fc4b14bf46b0742a06e7f4a5eb0927567ff2a0901ba73a843aea955911c65c17e252d12460a23c28b6d7ebbe3680b950898a52c504a59a0ef48b0996a77eb1d63a6b97e38de5bd2e4615bef31a9fd298501acd15a6d0e196dc861004bf4559b4aa08c9f5359224db5c9c3de1e93dd8311f0cd7d8db5e4f6d116c037eddf0f8cf6cd0b01ab3fab0a3f535f9df941b20e51058cf7b99dfda3be72728eef6090fc398f3d18a8254dd2d44bd1c9c856fc14e47ea843ac1e50df60df6e5c33cdf7a360d5e6935d1f93e6b8f15b7224c51f457af4a236b9d1f8226dbfc6c9ef73d6ae2dfdb3f62bc8fd485216f5556559ed0306e37dbac3773048684108f8b63a07df538cbf812ffc5059a30649ba39f085f13169721bff4852f001db63c7a4f6359efda3f607fdead8f6339943ddf63d3207dff63b32071f1a1a9a635b6dd6cde91caa89b3ed6fa4d9c4af5d5596ffa791150c82ef07b95f6331c96d072980b3af6ee213a0434343432368392d3c90edf7ee19e377c7f6c3b1b58e91e9e718baa7ffc287d56a5fb51088af4291868230e06dab95e39c80ef75dcd93de84473fb593b09ffaba877ed447bfbd55ffb12f7e1977ef4959351f760a0b248da4948f5897fa4b72f713f96b4a74fb37df8f4e9d3cf1cb9bda7cf6cf5593fd4678f8d7fa8b75cc118b6a7f112e30fb53bacd69ffcf943fd91f9bda28fa804ab552e4351c9184333332301004003e31540203830100b08a47120677a0f14000e76984e583a9d4824d2488771100719e6942108010080010099010080000ecf87fb17d908d5e1ac271b629ec0004dda5e7cba9bdcf9bcb3c53a99bab39dff3e8e319389f7ccae3f8f2453d418686b3734bc7cf535e84c151c9a87941338fd36d1a74243b2912e119ff4b9d3aa1a6051c1a2a100747024e06f8516fdc3fac029d08923184261196d96d670e461a15332da65785b74e443a634eac64a971df456460b398bf1c675271b3ce8879e136de80d628093c47c432ed9c489bf813c69423070b8522153d15108eb803abec6658d2c3400e48f922d286922c7336b2dbcf3e3d1c3d0fc8fb6129fbc7d6103f91ff210d5dc389e116dfba195f23f28479833eb05ffe2acda00d7df5c9a3720a9a90301fce744ca140072b3fae3192a6f883bac0119f8298abfed436e555be23eaa2cfdcb92d5dedca940e762874ebe1d3b97d0a7e4721fd58ea015fd32e74826342ed48c168d58b57e43f118e803418844d396a13092c3fff9b4ad0cda5e6a8f7ce3c96bd68611ee611a82f772e7d5bcdf2023156955600b232a8e9e6f131a18aec49a3397742cb507004dd6ea7bab8cc7bba6fc58c7284074bc7f23e5ae2f895ea4b248578a604120977278da4647768300c671a6183d3ac59ae3c9c3291139559cb8770a7d593caa8f4d2419c09c4348cac5a48b4a97354a7ff32d3e82c6cdfd528e8f0ca4b4ef71db256164cecf48fdc946f43cc5f98f1dfa25fc15686e59e9b9849bcf703be4454c2d76ca6f83dc0bde7638b6366fd0ebb0a3f3b453c59d770191423854e04ee736bbe1f42cb8f9845bacbd3edbacb06b82be933670e37d9936cbfc45a01290c0851eacc29e72abda078aa6055297672a425505ab2ebf3a873063453ec23b5d272dd9695ced5c47a3cd7b18f0a6e8b67c82f12f1d9a120a9747dd967f387d6b9fedd99fc8dc2c148d6def718153b8e6e9b12a41844d132938b0be074c26736b64565015bf432c8f12c2ac6e8b11050f5213e142a2cc96daacf028bd920a8237a172e862490a5293445f327d49890500acd66d5946ddeba3569f745bee9693c715b0808b8816974d75d667ea2d84e5c0ba6aa911d05bfe57910f3a1845807c076d0cf276079d950529b580284ece853641f7e6705b0fc1169b5beea315582169a5e41405b1554aa9996eeb158302f443d5a2cb92e4363bc7177abb48225d9ffeb2a6dbf28ef0526409ef01d4f652c045ac32a6dbfebc6bb8d93c4c9ad939781410082afd94fe3cd807d3231ee6087994f7a69c4f5cdd09397057cf9123b1834a8b334ca0e11bbfea22f190e82dc9342d6f701114a65846c3d447211027845f8a0a364d49d1a21acf12fac064ebfbf560e78b7addf62298b0c2d06a0e5ca5dbf29b6c4eb735c04fcabbd71e51c8aa97cd53af473f4148127d8e7cd4b1e743ef1ba41157db1bf60ad284d745051d3e000e28490a7da6b69e5d2c5074db49c66c5993dbaca944e8246e35665bb02cf0f853055b9d61e4f7ed2d5bb77db77c0b3ab287dcb73cadbbed8634a54987514beb34355cd67c7c9cb4456cf39a6fb250ad9ec1c7aa361430f7c5be44b7a51a3591c07eadc38443d6972f957b466375a6241ef1d803cde7aadcf8db52ef1ac92086af69401b043399dc105316ce791f83347165ead6bb1b060931d840902f45d6fd17fbeb86783bfc3d0b9b2101698d6572e3f50deb6a385f1dec53de89d6a15b7a6054df1055a13c117ed50665dc89f53b5040a1ab4cff84969915ac3ec13bd83773db81fc64e15aa1bc3dbcb61a2e7de414cc3088fed7cde5477782fa38b443e848a1523b0f58a382974139356cc94c204feb51cdd95569a1e1dc062694d19fe00606b2d222581ce380b1c9b2b6a035fcbc2a16651d44b1cc865b19ea904b1128b6346f1d4c87998bdd8c9baa26043bc5d6e17507d6e4c7750fb1788398795c8889531da06f9404a9e75c3a04e8096739fb660d23885c7cb28539521589f73ad056934dc472f56e80969d289daa5da5cf127993fd02b7b6f2612dc29ff0eb19c2cfb8715048385c222210b8961d3b68cf28b14f8a6aa1f00c3820e4237a8b828aa180c6dc768a8ee9629d7988acc3d8d19c6aa4879395af2a6e41fe706011e31216f370acb585193d9ca34e9648f50d4573ac00a2b640dde6e1b0503a458f29ecba7fa774e6a89b42c3725d470e572ff2f240d0a60ee8371c87e810a759b919033ca4673d134e47182e320556c79b89aa5673f164e01350e13c68321b9f7d8b3ca9df497b5125a4120e98aea1bc04473b1c772710d09002a50112ee360b4244cba424c2655331ee38fed6ee03a62b82c20b74ea16e2b86d0851c59455438a99f42787aae1509ea1ffbf8fdecd110e9a471f82a600cba8c43da6033482327f03558a6a513028f28f9b5e1db243fbb09d4878a0881a4711f163e150784e8098ef87d6fac1f8afd32596a2b6b471c4f2ff6f0c44c18426250cfa6e9629c344d256a6e448f4a56cb993527532caa3d18d9488fed544caaf7d31033c08df1ec01cdbd7436625e063859cfa27d490da90e4579aede9f68df0e2be4ba7bbb6db6d9082c88c09cc851950a28c6cd51e22a42c0188862c054d142564ed681394fffecc694ebc4ca1b61cdba0140c7df72f085872d29fcb0055a3c039a8b0b8aabb07a3dd94984eb99bead00b6cb7c1b4f7002e44e86f4b5030a04d8d70ea12bf838c289c17745e8a57704a39373eb03c0b1a033fa4235623de5b3f92877277c1e2b36e93147b98f1b348041ba826c6c496813f9e7742f704978f87d791217e0629fbadfa3d1c26c3377a6a37fdc5a461fd85d69c1934d37f5e092f0730ee8b26449ec02c4cccf11d81eb18c306671332678069bda0dedee1ff84ae557b6c5ed4225b3598fd5bfb0f05527b6e32ca59da85830d2f780324ed709abb0a2ef45d7a7e068cf25e8cf65954a470e4f4e2c7fc475ffa072590daf90d08ca23c297f0567045410401f37becd0a14f26f579ab3dcbf72e573cb8c370048f547a665796aab28f716752f96ad1e1db020203de5c1fb8beb915bfc6af1a53807c660cd9051475cf995c0a350194321bf0ff2ee4016506f070cd11928f10630cebc11c9bf82d692cede4304b2389ae34b44ae1ce0b60f1cc60471ecbb675991ee6f3c79a39b3b18ef18e05e97ec28d02ab1b606113f7eea715c342242dc744cbae6b1a8aa72ec78c11d034154bc0c28766151f7ef752fb5306d4bb1e5ee4e79d34f0a10fe0998f2281ea313192352c0039ca0502b3e9b7c617ca366ffe3e9ce4d000cc65e70625e463b9956c46c9f770c65917afe7fa000e7064c2300110bb2c1a370bc7e38c0c7fb3ccd18d19388c99d78f7ea14adc69181248e4e147cb7104be6e5cdd4a35e42ccad8ca50c69f1c38a68de51e780638b3fa0c3239e19fb23c9ee3975cc04196f8893f0f3725d6c838e53a4cabfb4849fc5d2b05bd8324430f3fe150af659499e61109a45cf3f2e2be1f8b57b0f585ba400607d6174371c78f4090da969c2c21083c1c6dcbf679faba004a4c562efc88bab86c94c38dde3e5683197ba43c6a2118332a3772b2c3112ac1481942698f7b6527c803e91921b835caf94e2e516718a94932a221447fd1ba72926267fc8b67d6093addc0d108123e2c22f60f4fd067ba2eb0270841c14390bf7212bc1e8eea0b5138e1fa54d060048d54ae1cd6b4ad38450e08abc1d9500c0bc24f9c6902c4bc34cc059422d2c2101c7461cdfd7a24f85091a1d61f229decaa3a47d4fcec5f2b8f05b12f9008727970e9600d8083dcb5b3d0821de35998f9e15a611009120d5597827a596059643078cf5db8340451af150500df2e90033221d4071cc8f70e4484bb9b1189d385a1c2300a16ba09750812b585825a22cb711f04a550c43a4cec0b48ac3ea1c18be6b18f65d92f782b0821c9d2d7d0eb43414c857d8b518e37960af15b1bd7ce1414514d41153b0569ed5390476709dea8a0cf950ae2d05450f5d2325305f9f33625ab12016842f2ab47b5ed5744824a78a6803c344b9d05c9ab827c1b5c116997158b2482ee8e618362fb66d84a4ac3ebe7efa6326bb4785e9f3996e4216b9158ce56f0e1e06f2902ab2edcbcd16ead6c0e5d7ac37baa5a0c6e48dde4c1a88f81f085af3a62ebb43006ab6e65c285a8179ebe80812e3d8c72e3dcd67ccce15b8f4556d3dddd956c203c9ab6d357bcc6ce0741df7f948819ce6861353415b2add99c7c59685fdcb462f8819604ac66f01d25297cceb11e9a067a734c88c0ae7caa2b4fa6f852da7f6ec7a0775c9eebce8fc45b8c2cb7c1d583f974bc970a5d6da58b7f9f9fe62bd537859460abaa432cc985d66b7be0917d326d08a61b2f66f7303d4985a5297874cb6a9053c8d490a5dee2f70c809012a2a2e9c5e3e48269eda9ca71629fac7a23927894f7ab2939ae5f479dc52c39949732395535f1ef9bbc7d4bde9e17a5fcc3ea34ebf64e15f72df43639362e6d2f5c167888bed5a0633a35899c65eb04fc4a976c3abadc8205170c684d4d649535b949715d9e761bda689cda55312ea2cecb09534e281f8daced92cf1da2f53b2810d423e64d0e04581e51bdd008ad6da56930b2f0df6e38cf3889c95c21d207e4a361ea0bf56ec76d6c9d6472f446a797f8b0d7e479624259f23d56e0d2754d9e82fda720b37b9cc40145a93eda9b897ed3114d6c297c640456b3d2770450bf77cc70ab36b576341a517e6e2dddd32840e9faee403b0677fe0bf473634499dafdcb0a000a6809342d570cdfeb619eb471f3c32883ba32b39f860944c6c53aef6160b88a25299c75789ac3f33d340bc22e1800b049ad0f0cad7e36d07f910836abc7da30593793b317d2b4f2a84813dff0e87922c4cdb09a67584087de81f8979ec530bf25cc0a75b3a1e246c9a035fd07adaf58099a881dae99ab83f65b7b658b5fc4b68a682fd27f23ac17fe8177276dec83b9b2ab80d3fb9f221079bc2f5be809343152696311ad7185f0657e4a305641553d49aa0791764fd4b760ada86591663d2923b6ee7b5b62e06cdb7cade0a88348982feac5b19c716aa18f7ca7d7f9cb3b79c9b7acf397fccb3bbfc85baed3ebbce53bbfe659d6d94bfe659dbfe62fd3e955def29d5ee72f7f75667de6e65ca09ce953b34163865ba7edd073a3a21276346a2a88fead3faeb8e85e941c9c9ada7126af0a1bde17e073ada0c7fb784dabe59c11e99238f16810a7032e3346da9af1b4bffe41e1415a5c043a93662f10a055ce9c8251fc136da0ef053a7528bb924917116f94bb11390c96e83f6772444f91e8504c3f776f9a77abb35f0e89a3d95243966e289af629e5146cc89c57721e950b9a0a79761f4937f9e1cdb29ab2ec3249e586e0fe4bb2dc7a39d733833f1cc56702bd6ca6d23cb0ad5056811e0e36318b239e540ebf74caa5fc6a534205c52d47f71ef9d6470027ad8e914023462a7c8e30948d54b8e23899b42afcc8d1c9eb2d02b41de64ba910d3b1e8f0b9159a342a2faa7332a412e342d7999b164bf24a342e44a47e686939642d61d581dce69ababf25f2d8e76d799587e0b437505949599beb2a07746cd74f70b952baed13714db15b532a105eac1d64b7a5beabdd7a6364ffc549077d67a3b12beca357516f7062205fe94adb454ca3b3818426e571f444d9c9248d844fd2a537d821d63c9804c227759ab1d2692e92766045bda44fd27f459596004b5b2da12e5e094a823e209896c1944583f1fc22b58aca57c1e0f3d4ffb4980a17056bccee17d18db2811ed12a51c2faf4ab986f04f4fa096cfae7b2a230718ea8ed815ce32ff91e49c13e8e3c50d448c920834c3566aab020468cf0561ba024ec2c785507d96480e18fb4262959ed1bb5ef0aa6099fbe45de2a6f1b7f2db3d4e63319afabe38275c9fbaafff186615a59fa0d5ca70a334960fa28f001bf19aad9b3bb24e954750bb956b68927cf5f0d7c1e46a6f8af8a2546fe624f0890971dc817b9f7bb899281f5cb8a430adb5f1be26b2a29089d62b202bc83d004c1f65b7a31b0bca3f7eee9824ff64ae9e02c83c2bd8f680a8ba35dad5c1cc0b94ab166074d8dc42bfb2fcc2f2aa11cfbb771f0c1f7fa267e48816e270b79f37f12762c2af83fd3540ce25fe5e9965f2b51b8ffe46eff84e30312592892e193f838b7d3b3c5da9853f5829f65c18ee5edc20adb6355b0bc884687baccf271dabf0b882b004677828780263528e2b1b495d6a7687303de0b16fd4ef6940a1550f7eb96d433ea403bf5fed179c160937b7d333ccff03c8ab926b838d1f07b27c7841e0392f5202614628793ff861ba12b0f2e64995e6cd495f4e24cd3c757cc53285a4e7f240116544f2244cb21f42fd7b1b835405f3f4da0d02c4e3e14557394cc30e761a124d7c9f7c4e33ccae0a5e4d5c309a1792dc9035f0732af6e6cec57241356e13156234b10e75cf83922ba83a3c939ce74ceefd1f58e41660d55be1b78321a4426c697eeda63c36e425ba18378cbf53c5227e14ecf058b9427f814ce8bc067c592e22ccfc61e0eb33aab2c41e1b904fa93e57bc1890531139e2482cbcb872bfdb74725b24207487434754d17cd14150995c219d01af409ef6acc9f3f9c5dc6ecb9099e33027f7bce7b668e5dec340ad73212fb43356e2cc9724019b0f62d5e3ae86b4589083e53a7c348f3b803f1a3de7ec1899cc8d3f6ce2b0b7c8d4e9a00d6c5cfffce557019a544b76582777c9610edbfab300e7b091284ca617bdc439497e2920e2bd932db15c873d659e0de899b0ea39bfac1ef2adcd7035ce6fc78021f42a0c1cbe70354e015b01a4f151e0c85780f173e400476bc3d0ee5c1aa45c30fa2a7ce664c7b9bdbe728cbb27165de1224f672785e026141cd896d65e463da563cef3005a26583a5e43a1a3e81555cb4ed7c60993d388809e174c9a376c70a44becbb1e502eac5d550e67ebd8ff7f569058cd27284a45b9c898fca3a4c456d1f08a7ce28323e1f08236ab6ea289185707f514df52869cdd73c7433090bc1730db052764708b565256c4396d58598cef502eb033ed95705cd8e948baedd94154084274c55399e348c671c942a3581fde8a1e231afba25ab53769a040f1680977d6657761811d861b5467b9c5e258e4214fe4b6267f1ef3884db069640c055de5e827bb83374152dfc18fdb5a60ba589f91400776dde80c1dc52648a37b123e7adad796e52be1c4a724009f342d638ef5c5b8db70835d5a2f853a6fb149a2eccd5d93a191150299f7d82434dfc4dfeec00b7c56103e920805aa1fbde47de019f6425104c708796e265d33d81a1e7f52a98b57aea946f5bbf4bed59ac0d5409a481cc46adc069726a4cde8859131064fda5e9a3e933c004dc053f167d82e6224cef31d775f1d4831035a8ad5c0db3cb804a680b51503c5119c5c5c54a32b22a82de07061c3f61c92c69898d4b93b58d737290c784bb945403c81471f64829a2165be84c5904a0918490c1fb1461f358ffb344ac6db6994f9bba34eec0431f39f37e0fef4b54799a5b462cab7b3243c2d00eeef7c605729b3e4159481b04db2ce099104192204c860f95076756709c3f8cfb05f97d30eb6d82f000c00b5e7f67099ffd0016d716b7139a681a074326029cb10c152c0149d427a888125363a939aece0d84a6111a20d3225ca53689f4ebb9e915ce8f7bbcd4fbe52cf552a4cb314f287b678948bd14eb3e8894f5f89f4d3a8ad90d8f34f4fe3dc31d14d1158b94f5f63f93bb8ac81d8b24f4fe3acb7b15f5058a9cf4f23f9b3a2bf225893cf4f4398bf714f53b8d14f4f07486fa2bd2fd5e13849ef245a0ce8a751f234b95d436c830de51c4bde6c299c6b7f51bf47724255069995f84731998fb36736e4b47d5bb3822e150a7995a5f0cf4064cbf58b1682f0338c0d3422e2fc65a4089a27705f0914b5e450b16935ea15c71f27d2c63f3fe26824d5389f25d14fd6bf01059c023b9b145f68dad26d351551e83fad73e5d11de93a142d6a0e009507571fe17d39f46065b5c3d3dd886de73f250dcd438a9bbe0a850a69d9e3bee530d18fc75ec59eb6ce7b8b418fca2a310845f330f71e102e1364f2cc560c7afe93b1b905ae8374858d989ea50217a8e5c675ccce7f4a1cc36473cab12521eac9c6ca57dc6cd6d4f00b66f77d55186596149f0c51c770766c144bfd801b94d7567ffcf670741f4b0fa587d38cde2c6343aa97b57ac08df96761813ea07b7d4e356571482a8f5c9e6273b1ba317c559e12698d5fb03fda3a9db67dde0aaabed1246016de2a697efac3e4fa5f2edb6419038e19588aaf807e63dd27a29984655bdb4c3fe39b483ad8de082900ad61914b152790e89df79ee51820ff1fb8046821a83a73907546c71d06f505bee01717e17f8ea338e92a5c4b48b9b521d7a5ef5402d31043076c7454683b2c0355c31e3704125e9750e1aff1f1c36f0b0543c94a974bc688358800ad425b4f91c0b5dcd3554705fe8eb7fc1c5ea0b2725a5207aed31e21a0ba2502ef3cb2c3a2e10efcc1543889609978386c78a891aed8c69b25fd84e456c8c0ef9dfa2ada0fac0203f6a179c53a793c38ebc39cd1c0965352c567bf2c1594ae03389a37a905088acd8702c45080b41791de28c964f8bb8a89a51cfb979939ea4dd0e8746d6a868dc69ba8b33f4706bb9c79535a7adca98e1b37bab35d3d4955d040f1795be6fea3361b86a31c13a208bef4ba617306b3373b00cdffe8c8216fa61dee67951b9ec4975592e61819d31513bdd0bc589b427bcaf5717df9aa1608848c4771e38b1e67c55b30edcf34fedfce7902bfa841cc97293d0d6611b427ee15a05623389753939b15f6616054388b70bff5116cca6b1041371423189db639f6a50a22bf0b5a18e1a17b7be63528f6eff2092221a07d521886b4b0ac2086face3a428f97ff884218f9329850b75c4725e538acb04724959e7263b356cc1f0acfc530ba501c7d0df02137c83ec8cbee925665da18bcd5f9abc5e73e100b8e83a139aaee23609223b4c5c6d7986b61c45a6769500e06c96a31e3491ac3913bfb51aa84184cb7d45ca25009a94bc71780f25f14e66a8429915c501667a3c97144909a242cdc194c4930386a4de9f6b65adca27cd8ae7212a82b90d6a8cc9450c8f4040a677b47eca803f7b6d6c02b2cea0f767172c559b9625c39b6f9e1a857ae5712bc0dd093a0ea0c4f4e715c5f5c50eccb76dcac1502637a26ff5ba80ab2746661a08c2c1c06e4c75fe81837495a55027bfe45180b5970e6e95505cba13b2c4538ab07036bd7a581ae52cd08dac506f406bb40cd3570d2ae84c2dcd6b1470efe6738290af3475ac4fbafbf290b0ef731d3a7282d7a43b124a8f81e450bcb30ee7338f60048a40b938be0ba79a7ce718f15e5d473310dbee3599d786e71c5570a0297d26baea996e2957874d09b199a581548dfc4a8eb2d3a39cc23763aa10f5ed23de8e3a6696834bed18e5846c933e99585dc23bf822843a6dc8f4d4ff6230f1b2b6f5051786301d0f73d514da544a8264d92c053aeb00d3c554934c4ecf9e83c54c878ad7a58f9003a41591cd7ae96ad5609872e49dd9f8ec163b9845008ab4fb4620b47f1c81e8659552a0e256fbae26b9c8d9ef1e286a4450969645ac1fa826900d50c54e4d085d4c3aa1a154d91a62af2fa935fc2fa2721dad34d6ac78f0694272ba322735d9227456ab9a24e284fa84ae6fb12635b61ade895a23b31a0605d468b3a6b434e769f97b01c932d5e42604b7786cc0fc31293244ae9d055e7ad19957905aead77a294b1773296f32fd4ae17826c10ed1dfd4928172292a6b13345c0c5bbd88e3d7ff029e204879271eab20b7bbba9099706f1358482d9d3285fe5bcde0c84889d01373cf9bfd4b4349b32b205294528a2e89d116ae615d52d619682edbf1b19e670831728cd5dd0d5d4c3f8a8c7b12e4b8626f375d7931107bb369a5bded94e93860c136bbbc8a919b27bc51a115af36eacaaaff7028e603585f8af2ee50e8a690b4b7cfe2b1a84dd88a4a5650c7cefa000d1ef7755ee22d93e8545c2c182d12f6eb71c94c211666a74a9b9524584f1d97b5159a3deeabb9286166ae2d09549aa46b28652a665ddffdb3ca18b4565261057506d6a06e0417beca9f964914a5966231745e96a85133b8fc267f81e44f146ef29979a053d320d28356c66541dcc9e437f25bf36925332a43a61a65c5c2c046fdf80bef95b57557eb1aa12b67e542b3420de298c83fc09a73fb69dc67497c486881908cf800360f547e1f1b3475db7252d0781af25366ad6b8449d052ea8dd5a9a6c3262b32fa3f6dac149430ebea09160fd199eedfca8eba0cf795967a772b2048e38e5bb03abd5930f0e8765657f80c657f0e255a5bfeff717c871cafb5c878c7b2dd4b2395f1a3f1e00e0608b4fb586eabf73a158a23bd87326ea98d3a289f5af588e5e3bc3f0406bab817948b1545bca97d65a7b6434e6eea38158a1714cd1658c7a6075c692eb5d4f320281f52d88c214af4402b65e3ef1a81114711ec0ec4c802fa9763ea11902b59259770df2566e4fb70b38070ebbffa0ba35c2b22d97e03d1fd97ebc5b6092114fbed80e9a060b7125f164a0a1ce91f85601d89f5fb0749e977e97259c68d888408d6382c57b1958a33346b5b8d62121c9f3cdf15e3534e07d5b947d372c27c14280265a31c2fad4e79a5a04349b5f4d67069e51979f1d254f111ac7b3db290ccfe961b8dcd4220a9589576e2cd1bdbe5f819e95e5e1ad282bdd319d73b257c2f4274bc20bc5f75a7dfa5bb1f4f75cb472d5a664fdb8f17f3429a2218a8e4a591a60b5ba92633349231ffecb2bf9afde6c6d8476375e9a3f544ea34232218f5d86da7fc38dd4479cd793a479f8c81c3638e6b40f13236710a557e64a05af86036ac12b91e1547c3b55112e211675ed00110faafbe403e30b265bffceb01e40bb43cb8a603ce6942fb4f977a60e53817a476beeea1e92fd491c9cfed856398dc62e515a794e332b72fa097a411dd027021d9c018c20c38908746887cb02968c5c6a118c311088d07d388c7b6229307bd250e01cf3c0ce17f472cbf6c964e41328bd42f3ab5f16097246ef3a3e439cbc66daad0c68de4a70de88681289d7b48eb1746130caed38486c78441ebe7e35fe73dc02ecf28af4d723c6097285861d6b5bcb2a8c296c3e372ad0ff058c1e03f3f7717f431ddfeb1fd7bef4d2a5620648b6b2872ac8cfa71f9b267dda8b0fa8e0053309c638019ae39ad9f5cb5369cea00705a5b92c19bc57219a5647cc8eb9185ccdba25c3e7cedde988d81b58f157a1fd30eb6edf73b2552d20cd798707a9ebe232ceb0fc300a5016cca546776300f163edcb5bbcdc810c65bdad873cc9922ad45614e900b69ad8c6e5825e359e7af585cd1ac9e346c0da90bf248a6696ab2a6d75b07c36b7a805042ba3eca5c7eda86ced2690a9275c55d8484b102c6ab96b60a3e9e9667742580c053e9382a7c6599191363055d411b87dc5d7efe3550e6af9e14dab9a6759660173ef61e418b1d5eac05d1edf2634b3aab0dab60020380ceb836e433231c812f0cb39254184ac1cd1e5f74b6ad9154734d2501e15acf1705b3448c4ea1dfbfd830b8dfc79614a522da178ff2f7dd285a85b21b19ae4c0d538083b255a611fb388e760e6491e075ac640a7020125b7e7c6085f1b194577e61073b6abb598193aef8813a6a21ba59616bdb21c3baad9cd285ca4e4ff4871b1c37d8ca837c038b77b37d016cdc40669b5b5185babf33d0288c06a1b4f97e614fca10a4c1911137db585f655528943a122f50b16f1a42b48650e328923f446a16316af0e054fd1ee6521e8249f13cfcf7e9c4bdb921d99e4daa7987cb115a0233d2bd20f4917888a4241cce2d75cc22d13da8e4863d4368070d0c77da427d706e77d85663fea3097edf11a69ed8183aa6398ad0974935bcb4a548d62cfbacbc21d4192e3645e721324001e0057c9d0a355601f685ca71faf689dcf368831969ca0ab111d32241d981cbe3b34c329d865de8fedd2a439ec29a55cf14418c757cc0aa113c18029ce9ca5a8d417ac1078e148301c5e30bd814a6530496b5704a23291217cce59cb7867ccd6cd6a5078889db0b1d425846c8292586a66dcf13515f3e81ca13515f9becb586397c617b27dfcc9fe469f119613c8a7bda0852740d3a92dce924fbc2e406d15886bee9c072288eacf74eac9b0ec897d7593232313f1b1a13c60822d2d5ff9ce40f51c74d18d9220d71f3331192befd7106e87bc4490344743e8af02159e610d2f79a2d723b243eac1b1e560f56ba475fc630f9cea57c5279420d83f6d942c5c3fc72064fb2e471614128a4c9ddbb9c8f9225a468ec0b348bdd1b9bc319390a0e3c2522b36d64cb6dd0639598aa1f6c4822a86bd04b342389b1a3b1f989f06191657c29427bfd0ef460d8a8bf420b4c2d5b7048cee4c5815e52aab84aea2c0e30a61e92344cdd99e85d9fa6a71642d75320ef74a7633985857143db8155bee56eb7dbc1ec8a80a5158b33a5876852e8991418510f17916629acbee1a19bc0d4d21a867c76db218336a5da2cae0c3b22e60a9f211a66a6a44909cde6b4f7fb4c4ff1a988508f36c7cc0d1b207a75dfffc41f9e559aab8376259c343f21e9d77aa135c3a65a307b96557761f8338854d96187d0edca11f72c2d25bade7ea3960d62ffe476c1f70c115ecd7dd1b0197caa3ee39eb1734998f26c2d7ec201809d433ca9af4e306afcef367624ca203b7900143a81e4828c5c41e0d76de678bcfc8c3f2b349f11141e10e2cea903c9f46f2d3943c52b71ce1d9481dea70718504b0de9f8b9bd1228de67808310b752a689d2a8d8d131678b8f12a212a640b5c361dc46cf31961de493e63c89d0856ac410be17ca7db410b3e580cd32e13ee8915a25ab4d557696a7d4175541ead6d38c07fc5d701f46ee41552bd8ee226b5c75a07daba9120bbc7f903992c47d3dff2dabcc2719aade5c18cda40fbaa284208748777c1c708feacc46b1f08df4a958b2f5031c065b2e919aeff8cbee2ffc79af6b088289c48f06cdcdf8bc41d464ff6df925540d2c03f8fc0d97f2cde7c8c61291551b8c1337aef6e5da22c0dd83c926137a5713dda380da5eff7c9e4589d70363f9596dc828ae568dd612ddf020eb8377c4696c956fbd01a735bd30004670e504300ce5cb966a49e64eef0559b6ae2a5a113f3316299a34009ab320aa49a2035f50fdfaf4906c21196288e02fc562e42f68e9a01fd8b6821873614c856f00fac16e1f722425d9b4a0d71cabe04949eaa05da4c9feb61e81f00b55e180625b18facebe7a184682ce664520494ee5c09ca6f35bb6fff31feeec52b8b991faa053c159967f6dc66952f3cd339a98dc6b7f79dbff04322196d12647aac4033a181c5e3f07f7ccac010cc0149102a3ebd78bb5566037174c8a1f54dbe4993369b961e39ad350682513588b20a9d63009ed02e07c287fe844c6426b1430d229550028c20a5c13a6bfd82d48ea002b50e7b609c6517923724d1b2f233e550e5ede65b9863065444531de780c5a4624a3168d58cbbb35d14ddcd554df793f9692c116b246437a1c2724ec7dcc59403579fa5dababba2438164c3538015531409e7a014cd777af1d0a716863ed8db6838616b073402bef7fe1701f996a7903cd4742172b057e6052dafda4f66de6fd1b275d95020088f8c28e541eee5a8da39e4f2a06603cb0ce8b6049f90394422374e3976c20b712e60c1a9263d54ec70af57f54582bb0a7dce52aaf682958524af3c278c13f6baec28fe70a9acdc27841305dcacd9198852181c8f2c7ffb19040f72abe7ea47c3212d09db24d05f7cf87ad8ee4140b0de118acb147b64d92c04600482a401b6286ebe927278f012a4964a600ca30884c94a6decc90899fef25e09daf68b64cb38d9136beb3d0b5a40c48e186221aecfac431188a59207409e3eaa19529038caff40d4340c4464f37e5adca086fdf0f0d89709e1ddc4e12f0f9369987e2a1d0573019b74f121daa3747277a8bb6015c60a72fa5a5c581988c6364c758008da7fac093848d79b1f4bc52016ff30325ba3c4938c5421eed1fc8944c1b5eb4088dd029e184eafb77491ac5068f0a562068288933ad8498301e8658132d7f5544164a0287b2303e17fc19e564fb88219d511283f51b4ca97788def7835012f22dee5130c4aadf87978120b779760dc5180c35016805b8a32c96a6c817231eb78f2f4b140fe3c72b55144cebc7df2e8aa6f9e3952f8a09840e92bbd757ea030d9a7c7e54eca1fca68bf8fe31e4c5c10895d8351091041495f91fca3e326520c4840322934096490b64260359660f640e814c1815fdaf265b4adf0c1aa6da224a341e8c26082de8470d0e2b4b41283d5231887cf482b31aca3a0709a8997550108213e891791282077a1246a13f68faf4e73609fd3a04484d14e22c5407157320512117891417d23f5446938966458680caa068a2f6211d62d45041bcd26735361fe25f2f4fb5e58286bf1b7423486d980e0dd77c32ef5bdeeae26f5bb2bb4468b6552d8cc07f22afdcd15619148e9e22641da0c1d4dd6d2d54113275a00845ef5205e470a2b45b11c5f8339b572dd27cc14f8dec4584241423dcd9ea8d280e2cf3260975f5cd08e89b5f1c0c57234b325d99242c54436023fc35f39e56087bad486f4faf21bbc85a84436fd61480a00605624fcff0080018872b2fe7f8ff9b0acccfbf024280404f831305acad81808e011bc734dc79625ad50341e745914930daf115a42d06f47c2cdf30f8b9f36c68d8190dce44ee668d8480b9b70a425d9f0e3daf1e47c46a85696589e19a865f54af260e717ac12e1c0f689a5ea03d08b43cac51f8c12332460fb27586058d04470f91dc41dc4422aa7cf653dcc9d0610516781f3df2da23c2a47f071465f448192a2223c58e659e1d4643a9c61126aff1498505c5404dc3fbab3260a06a88aaea844b1a9c1f8fa4fa449242b65756e01a525172efc0b45b18cf91582db88e4f487dab7ff11108cf632db2b2670a07af33f59ce36e4c30781417dc70b76312113b7a6ec2473181535bc9b68b528afb5747726a05bf083663096c7a96b655a0b1bd09a0511444821a3526d6524db5925b856bead0bbbdf26d50f6d6602b7a1702723a53f2b81cfd84548af2df9169e968f0d00b0c47656b06d592b70d4222b28898502eddecc26543a1115b53e304ade455a978a3a2acbf5a416b3d5f7b1b2fa77053a84e44c2ae8bde317d3c4e97d4a987be249f62c70dad84484c30a0406216c4923745693c0fb1b1b36c49508da49e8480e39d6b393ee8b6b0ebbc4ca0565f93079c55613439f4596302bb70e8bc310a9b3e9307595371ce393ded923df44ab022dca9c0368d0c510749708ac787ea4b167251e9b299ad6a8b52772cd98b6d2daf8442fe5b19dad41a07172456c2d927c9028dc726d692522ac1ddd4a88bf6429e0fed0dc45f842b5faf0195d7b1c1a37f85f085d51da4a4046dd3ba09817dc9c9ca850a9d9b3503cadeb1dd7c66f4e89ee4c3601379e63ca8202df1c9a8e596ff5eaffb017cf6569b3b085aa5b7c4ac43841990f97073de0aa68c98d0ca9c130732c71d74040c31cab610f7f591bcbf88d3b4e5212a9fb973200292bbde9c1725a2266f4b7cab03b01204ec2310132da2c822eb92fffedeb703f8875ea5044a2923cc56a7fed47fa84540a6a93fce56078b9e8cdf6d5d0b1f95b25128babca3487b006cd85299b27b8509bfea57604d059de4240654de31084680ab98c07e0235d122824cb22fb9dfef753b807f2409fc05b2c46b31d495441d6e1eac9f4adf5a576f47d2e0410114a437c5c95f68ded28157275cba9808117394475acda30908a9cf83b264134176ac977cfbeade07edafaa9e3690ae35d06c615437e32ce896d13107f64e6ae39574bbec633aced5ad525104f0c99ceeaa6d5dcea52ca813aee44aa8f0671ed93273d30b44f6108f2ecbdda79bcf0214da36c87b19ad3de49d1c7eee275a0aeb06a3cf4500bf8a8f4407237aca4087ca644b0469cf809340c07119709e67ecf5a17f2623ebc23c5c435db72ba648bb2b43ac6a7b69d4c8d094c04c8e623c3eddef741f20f1950202dbb790078fe33c22e0fe05734d8e31b8b93261cb00f15306185e4aaf8ec4b5090b9f3716817caf066de8ef802d80d0212073dfd419fd6dde13b377c48c43f949aaf06140b9bc29f8b395352668bb4fdf5454c6829196ac78abdb8acab2b1d19f3b26d40e719142f7bc454fd375d7b845b8c1e8daba10150ad9b542eb7736c1f0f1d1773f141b619a4e584266ffa885e497bdd3362f74f521646d39476f0d2b861bbbeb313d30b2887f9ca2fa30d40fe0a9cf782908adafc326097c1225647f9f025f1ef0c6155a6d1f63776a707c8fee96970e8c86edfb267f92b452b2a7d8d0e5061a519be4cc423d4d24953ca1e4032d8f0e90bb870cd178856a3e84d0dbe2cbf6724af6c53c4012b9898233f5537c1c2180d53a7fdcc99b9ca7e2a3137aac93facb06b58e896afe5243799cf4b843ce7cc8edab87b4d4bd9ab1f85043e9dd74927259c532cdeef817a9b5cb91311a3e3c76e10cb0b94e0bbbab8b7f64cd23fbae232e612e6ed93ed7ecc8bed38f9519343167815c93cf1e76685a8fb7997cf171d320c6eddca33b90758a8e52eb09bcc04697777b829b40e343005e8f47baf23710f18409eaa9fc0a07c7e04b5df1c4cf0433f2c38d0e7f08155edf542ad6947ebc5ed177ce807488eb4b40c6da2dc70115c278db77bb3585f7981f6fd2188e3cf9d837ce61e298c7ca2888c917565a8cf7f6779524490c3e9e8c66e805293da1d00291cab512f1926ba7ffbc1505f59a2149c406dd2dc909eb97962b467d545bced1fa28b227aeab45786c31fd4f7725e44fe781601da4416982c61c9e4ed74663b35872eb8a7e92d4a1f8426b45c21733930b4994b2a1c0f3cc0dcca86fae377b6606764b73f94c81bf28067415dea694d517639c7a845ba579a78c87e9c28853c967a5a456d3b0fd2b8e8fb02a51bdd0c61333d35f47f388590b4f8df465f20c37ace3194d7db666e4c46fc1dca41a4061f94914f9b82d52e20dc53471f03aa363f931733652126a8250db6455f15e45c1873aadb678251ae7dda43b8a774ca69f4cefa9d1dde78feb3bc0844394a2d7dde6fcb101669a00c34cf753c3b742afd9775dcbc62a92edb28ac4cb1d03807cffde6829bd88b6c681e965711bfee9b25bcab5c0ea974d41141171d9cab510749841e4efd1231207c0cb49ced7ad530c4f41663620df337dd4e492562736d2f1e28c1a98e3f4060020c8d0480d400eb6fc966ac420014f9e1e0607e6cace8cf7726b61bd0474fb6d0eeb2cc2ea649b2f100ab64156d978963ce4f833ca978dbd3d66092587a2ecb201a4468b75975ea5ad766387aea9e2b8119b20ff84356e9a96237cab96394a0966c9545f39e84486f4e07664015ce276417a8a1883f7a1b0e73e1c8a1012ec84126cce78877b0b7f4528aa1eb49beb07199efb8a8ccecd933d8f223b68ebadb137381997c464d8e7536e6a7461f6239fbfac76a21ff15387e48c170f4e3a7abea69f1613cb5a0acac7dd2a9034ce2327eff959c5c1c70516133e972c203362277ac438ce023c90bb91a5359574cdbb28ca1af357c078c83e2009db040ce06463e2246743b7d5227ac11db3e47d4c1486b781a8b9010344abf5653e00a66f87711fc1840b3cae96401c1c015792e4f981fe2dd1e35f4edc2d4a438feb0446a400c71f6176e92d552aeb60010da3832d62c90276c3bbd90bc5024ae8c29f1b459562e52fc0213a488a5bc8cc9f9839a3984bde15367f6ae8269a62dc9c79818afed3f47e3569aa056660bb9ee5fbd589c702428065cd111902a378cc585b102a3000a518d2e82c0081f50f731de86e48211557c9956bdae2a1993e6dbbd492b6544e650f3171128e3d76c05cdf0a2e1fbc24d5da7479e7eb8122cc5f7b585908da057df0259fdb1216b380c55cf17fa64f6e0ace6aae4244681b8ab78f3affd323dd7aa160022978079599f58c19cd03511fc5a5f4370b20dd6341b0159f1e0502854a4217a300ae218a704301dda3a9d00f30f91e8a3bd7909801b3008e3d399029a44273af64918ffb90b3c2c1c2637cb123b4ea330764ff9990526b957c9420172c5647601abab10f58c0aed48fcefb6e59c0d65d3dec22609ba40e5f1eb46a8c9749195359641a7684eeb4a35c81b3c02953a96899dbc5e9fd3a5894b32768648b532b2e59786e45cf30b182d158c0f0988115a0c64b483d830235024e3c0255df131577a9d87fbbe893e56dfa023f9851a4493c4b78e16bfff9ebeb9df02104e9ce2a0c9b215d6458014285d8fbb13f6bcdb21861ac80983bb9daa66d36c26bda88125cb486d0336a21e20ab0dc0dc448156b7ee80a24c9202e80902d4cdc6a3656165d5ee449e6170b16d576ef40fbcafc50d45984d02df542314ce781ecc461f00b6a6b02044e50bcd6a176dc27ce7505687cbda226777bdb8794f915a009f64e861629a80e4d7d585e438da26201898b74001349da58105963f5f92019f63a016254bf32b91e7086fc2acbbfc11a72b63f16901821e6f0056e69307dce4f8bb1c09978c6f158e03c6618d72db38a4c37f9b2c04c6c6e9b7e196641932b9a42849d84944ec0e7ba8ed1822b6ee500e4f2b5c509d7366d65d38222418f102f9b28490bee92fda19e35bbec97535a30ec19bea1bea179a4918842a5f2ef1eb8af1628d4498aca5fb17ed2e600fcab1613b1870e32438454c0beaeac0735f1296a416525bd775a5930947cdb85172c4093772c332036f43143fa430283be99c1ba2b16d0927f22e6726341e2f8c9521ee23861650b00d6233f42bc00d4198af0f370d31fe8b687d61abf770c3ecc048fb72b2f79d700d64f6a950ebdb2cbb852ae5963b99b760f4459d7718b02b489f55f5989270a5eab40db7b12d5e540581d1702a2a2e0d42a56a52273b45405ed2731c18043e9cba85ceaff4c102aafd94ba7f1eca6e6eec5958405c0494aafcf3bd015b78bde24146d5318a846df7a00d40914c0cfc8ffdf01fcef57c1ff0b0882fc9f549e40a943a880a8f8205db5f15b4b0665275b5d2bb39eb207599b700992b6610443b6e8ab60a71fad098136cfe2a16a5c023d25d4feb35d77a2793b23de1886b7aad2e9bcddb7eb779b8402b87d21cd4024ee9885d9f09109e46673e3368c73035034fc187d446b89ede9b8d796775bbd997cb3eef531097c13bfbe9bcdd46fb5308c3aaaac8bbbe3c0be091d5963d922efd065c458bfe0d0776f4b07cfe076aab8357b0067ec44cb2a327fd0b5e0bc5f9a29dd989ce1e81a6412bf44c5e3d0ea3f1dc4464412c4c3da7358f1c9cdff2b0035062835732a556bcae393b3dfbf37560b0d2a5ee3a0da51a9fa5ff4414c416deffe2493d3a632cbef347bb10a71bad492f47804ca373dcf0a4f3982cdb5ccfc2acfb54adcde246822a06c9e3b7c394ac1b6061060cc1867ef093ea701e5d361070affe52170eb29200acc4c27a03d2361d80521ceab941db45edf02dd53d81758652597c4ba52d6fdde7bfb796d4f66d2f77ccc1461b720ceea3772fa7814ed39c8b80e9f213b559b1a1113497c84eb0d8439ec9b6d847eaed672eb6af22ef37120241b1545af2b53da49cb64f5b0b9b75facada1f151700c4d5c85010ea17774d8a73ff3dc5050bbe4ea90accb404be19d99a4079b3da1ed53131a335422d94764343a442761ab080114e6b163efb7a1f1cec0a064a0d443c44917987700b3cb4cfc1c7d6a46aea290afa4b5fa8cbbb4be18c407d5a136dc256fa10d34d4595d39084ec270e8e0427012c76c9d29fdddd8e8792844ef42d9a813f2f46e5c0d6e5e3e0c62657ae00ce5cd3277aee8ca5188586382629e695b7ee10122059512a6012a4954b97a620addcb418cea71026432492973eaa852e4ff607446492154b54b3afa3a4ef7d565a1971c21b5fa4f41bb3d79150fccf4e9b1c1fdb5718ec874f5167df211040b4c466b15532f212f53ebc346b94708cafdf00753c3b6d3b08217f2fb81d768f36b5eea6562b2889a6f33317641c53456c43839f39a3e0f98429243afe9e82fa078d4b03f4a0191b704db905f7d22f873a73a1a4b56a01c7a00b245670f5fb1b20812d1af29384842effc7f9dd50bc9007f601fadac78f783e03376e96c223c33907bd69f9a214dd7b01b1b03fe013144323c932e476c43638e499cfea38791ad5ca94ea7b76bc3ca1e8e4c87958de23ec9336c23ae75b0986ef3d9389147dc14c2e66b62e481f23707b4172c502bea5cc69cee3614624b2b2b143ade9277e8b5910aab872f6fdaf2c57e6541e6baba8ca60fb95465a1311aecc2819c19fb2925763b53cea79684f173a2aa3c606037db872a40844f1c6caf33537384cebb035187102803020629b0db4b4abc5da910a196d8196431357ee52f65885a6bde76dcd100ca5989b30d738b66a580fdaffe294e17445e3b8e01e06efd274edc8835008725c58b1feff45a08b3381c30633104badd88e314aa0e7b6067f5b609b35dc5127dd8109d196e5a86b07b50a6826dec4d80745057469c5bbe0efbae4c01f5be73bda70e8d560ac420b557c7a8e504681f0804e48ac4cdd73f1a7b478b5bf69b0e5003cc64e074f339193ffca43e981d925880eea947ee6fd73d105f3c9b63f33a948028319c640d111051721cf5012131e51824bd734dfa10f90cf4c1d8c7224ea767cecb49e4396c1d4051dbec82681b9254425d856057b270bdb1f67971ae24d73b3cf14fde6c0c4e564a3d2e7ee85c701062910e7d88c1c5203cb6c798376e7ce9a94d7521a39c55ad9877ef664514fb020686d6cce973e55da12c6e67cb2b1705b23346700b4d7e4f75fe43821e08529cb7e2757d5f2245afe6a1fca67e239a6d1820bc0084355063550efbafa0ad04a53d7d62eb2aed1956b4a8eb657dff3d01d706ad532e1704a523323745e72ce140edada62af720b7c5e60fa846afa0af319aacc42aa9958bfab8a51db2779109264809df87dcadd0ae9b33733458f7a779dd317944909b019fa628a2b84a333d2e0d3170421719342600eedc3f107f28265d2e769134677c9268f023e6394ff34d2782129ae6d4728fdc20e0a28bf1ff1a90cb8f8ccd408f80368d6c7bd5cd8036d6f6937f2953a5b79e1eb4201cd8cf45f083d2cb8f48a1ce5ef8cc738bb9fa81e9bb5f6ee834ab8737e5dc0d0eb78f5449802fb66d2cffedfc27cd3289c7f27836422f20b8e92bf3d98d8bd769d7fc6f455bc6f693f04021b0b6d6320ac4267b4bb6e839412ebb7ae5ca845cb7071e669273cdaff93b8a3366f554d4c52a54a5921bc909fd1eb52b3c6ab5c11bb9ef1643fb171ac79ceac549f8ba00be62453d855470cf1c1ccbb224298e98770ba6d775cc5a40313ef8e2a984cc10fe5265db79edaa424fd7c4be8645484b7d57a25f286df874d54b03fc95e1e348ed066c39ce8b3601a6c6c1729f1fd377d49ec5f9d8ce17186580f0f06f6c23eac2dc9e24dab73068070d70494d939bd87cb1f4a4c4ae3bb4dc771da5e772fa70ca88c6366163273e554102f8c160c28c72d9500cc04a167286318cedac17145ba4f557e04697e2389a627d0ae3c05468af713af4a112ebbc13ef1a8144a75e4755335413889c4df4df6e22628413dd174dbc331a6296ffb613934c958c023efb351a4e9e5da9c68aefbffe72ff642cd52b5da7d9e7393e15be834232c93aa4836379e6e4213ba3639e8cb00704f09304397556a4982fb18449af853fdf0c86cabe620bfc1537a72682d9b385a7f58c46ac8ac98774240f6c15313f94939a2f10af920b1122ffca38fdc09a4aad425664b3e6832127f62279a84d99c57c77f312becd9b844c4e3b7d4eaa37bce416605454a24eabeb93c514f2a554d3e58d61fb1339775cbfd1dba56879ba5969a01d1b36e6987063ed449a2a0eb35011bd5162bb9dee5d45c4b09eabdd882209447cc4469705f942aa646b730501ad2f157c07486eefd4b2964089f9c5c15a7c1010f0035d8ed79ef614ab725994fd22fbf7f6a7e00f35902228f20b86464a6e685b6af45610fcc34a29ca0d867b6ff2823cc05c5e504bfd76d9d5aa595ecf365370012d1509e6ccb5cf56f04dd6705d4e3f758ea7545c47c6146889d648a1245b12b8c246401c8de855862cd4b3375a6f47b6c8db4aa2afe6a009ae6ada522b4a1c491299341ba41364aeceada589233cf6fa0f6289a48c08c0388b8f443bc5a9a4d29c34c0ded9c90be00f813d725d224b0d02965102a252e8135c544b71775d602bac2b746a5b0dca2541a85e612e941980fa75e08e86578a81caa9761499c6b1e637ca344baf5e89b3b62ddd3d5f81c627f652704bac9fe5996b37892c75b12abc62c412e0d4bad599f87dbc37ab0b632a94ce7dd1a7f28becdaf494533034671cbcfa8dc9cdb4744a5522414726332038715689b264c934d313aa9abc7e0650bcb6507745cef87fba2c13354e147c5b05ffbc86e83204506d8d9bb010c7515546319b9daf413486d989c588e2841d04e5e283ebea49bdd2926c5d97542ba6ccab95e94a254de3d92b7528d66234cc7e61b098696204e3d7a4dc83b5d94d07e5223e11b05c7f58ae686b8fd292f765804ca673ab6a585211e3d065d406a224e625bcc61226e1e8d145769e555573a47a5663361f9afd4800c5a90c894577f386585ddda2554785cc3f21087f555fab61bac3fc368277bf32365ad412ac1f24da175e721db8dcdaa37f5a8afa218a3c9605ea30ad912123a1e5bda1018b928d1fb58b69a40716d5b4a4171c509793c1e6382bd5c900943d8b2c58742783609c4136f0f818a520086f5b36e074935823d3468a39d9e8c2eaa4d51610bffead226e98b9fe033d4b23ed159a7a5912ded4ec7c6b325b74d6ecad687c420b5bbed1e4327e2bf14fd6ee76882224ac04b26d355f33f06fea6bd51967607a981578726cc4850c0ad5ac9b876629c8d045a1bd5a8a5b0c3d047d1b3d10167d6282124019dbc8fa41a0ec5ac5ffc6cbe9245c4af31612be08862320bdb25534f0ec56f9c20bf41cb9187e1dfa1a6c5669277f297db82ed5e811e930e56e1415d7f8a8d6feb833ee5e1feb708ba532bd1a77afe66d14fdd364a158368224659334e03ec000d4932c7cbc3713f7adb167f862aa69c6db546351cb4f720e45ab004e35511b0c330198fca81de36c5cbffb0b34496236508f2b00c2753440b97b251a13694b20ae75e40819c15f8c5a0771d14ee4ecc6917a3d636f6287edff4d70c1a2d01b3e8f7c3e88cf13e03d843c9abda21167683ec039d6962ca66d1754fd576529e74ae2151c3fb404fdb4b7456ad166ee7ec398e6330c5e85bc7880eff359e9a9a8d3c040c18f90fb702c8bd38c5e4d8a8cda0cb81a95f325e43c241bcab9c62bacb173db81a4139bbab0bc466f74b563baa4edfa1b41a18060f9a695c40df2689e267a19cf715f60b58370ea13caa43f344855b1bc79677677691117bc680aaf5c018d9523b9c710478b5f6bbdaf445f7cf776273c2d7d4d50497d16895a046577c24d25752dd21420d094159583cbb6c3e8db4f3b5de95b95aa31c0d1bc0f1ef46b8e38dd9daa3b1b1bb4e94c894a6978ffd7b2e40cdb34a4bed12d5b21f710c527b255623f1b4721725e29d2d083d992792383e2db970d7bf412f2a18b7859b47acb2e4ef54d4488821456d4755dffdaae2522f9938131d19f1bdb5fcdcc747e12d6a9e6bb1275190039f7ffc3da187b37a3df0af45aa6b24d940c2753a44556dea733f1aaedee5902c3e88e4bf90d8d2cafd89cae0c98539427ae2d892902cf0748085192646b77ebf38e11fbb5fcd89c90f0d3e8b3540dcff1f190508f288419069721b1c80fe80e0180c1c7585814b87f6949524dbdf36d734db7b8594eef85743d598b8434b80abdf00e7d78e715e70e20f81eb9d5fbd5a7e6d2a0c10c0c79436e93ad80bf7a2a7e501fb764e28dc3c585361c6e684bcf0f618eb8ab94e7b4e3683d2febae6edc5e649e571da40efad5c7126f3404266468b0cb342e3503f8bf8f7c0b972208266518dc6de4ab83f68a2ffaf68bf04c3de2817e88c9387c148e90afb62afc260f605b6e54a981ff29a13d2979d42e3b211720f8b7d82d0569d3562183ff4785853e74d7163abe2c77b8ce52f3afe1d93f93a55fed9dcceb7dd9dd414ee88eb88c753d89d95635a0e8893238406d07fb9cc7abaff3ef20271ed5d4a7bd8658209d6d183716453e9b276a0ce99541ec7f07ff4164fe6e1ed9fcbf40f63fec18a0eb8dc4f93db091775be5698d3321d949cfe32f32e23f15c9270bf1b0651007f5ddbc8a39ccd3c621dcc522038a6a4e2b4b13ce6b27598aeddd8afda281e058e4f58a6b9c9924244a6c62c02642df7366e90471255aa1dd14b8c99f04cd87606a5a0f4613e3378e258fd6c101faff9ba3f7fe4e2f3ab7564c9e6fbcc2228568496ce26f6c4006c6414a65432ee72fa29b136795d6649933400ad9259a3b15547774a80d7c2c86c2704f622d9ac91a35ad18d06876e9196773861b337f18d88fdfa6a83fa7133897bb81bd19fb043043244844d60ff7cef2ab8e80bdf734df8552ea9ffea34f78fe2a421564d4556ac91a0cb2c52f908424d0d440253ca414950d3aa030acb54d6b8f364192f3d415d451136e70176fe04df66f5c83d5406a2098e100876acc29b04d9a10fdbc80555268a0c3383e390a3bd62340a20a2c481934efddbb1c37e646d71e5a7ce1855532dc0295d0acf3e2f80cbf94b28186ff176e397b4377ef51249d1e001785fd18c78fd32826b5db8430b7ef5936db53efe6eadf76a61d649841d15e2786be86626c8c79a304b89c9d57c23d7fb31674788a971f1af0887d332bbc6049fbee6a3cb51dba1eae7be6dc500a25dff2b5903893acf946603c87491983566fbb80ce1dd2aef7cc7939e708ad027936de16af2c1525b3e051ffa41ff0bbcdf25e2825d83f69ad7cdf6f7fcb3fc20b91a3415182cbb4edca4078ea4f6477310455a31eaf4e40fe47178c67971a68a4d5ad3bb4c60c1bc6f35d2c1e2e9591a0712afe8ae2ede59c259c156ceecacd3c2c86bd76b682aef189bb59fa34e4fd3acf17b4dad5381b264b771feedb5ad4cbd2c3d9ef829db20d91ea4dbd1e868298845f0cd7d7af96af9e3b78639e954053c886dede39cb17a147fffba06338e6c519bdcf0bd6ddce88741c885e5987c0519d850df4cd62cbfbfa8e5b6bb34307f1c7d987748506112a2d28465de629373c4af30cb294372009db49695691c3838cb63b3ad65357ca72e92acc9ed48876cc2c7909b29a3b8c01eeb686c672fc7b732def74f11eb3c32e49d40cb25b8f3003069193edafb8d00c4bab4aea689fc8601dbb7618e95be8e6d9c5b0342237114c5d40b5037471d2d34f5aaeb169ec104815e367fe8168603e2e3291009bba278b5e0e6fa39ffc955f52741267e1e11015c0102da200f9b2c3c6165d39d9a0dd3ce15b1c34fb4103768ee602294643a3294c4ee45e3a4a8951135b008295d90263b13431c2145b3998498ffa1c096cf7e5215da66118bfac869bbb5ba0729fa5967ae62ed83ebbf16d5956fad7277c70172b2a97220c7467ddebd0bc715521fcf5cee9b52b0e5e09d3a6caa832f950fe7675be66df07a8ab9d2ae13b95a25fc4ec3cd1ec8d604a8ec19961490d9c4a3928431f27ff208f9bd85c6ecb580100e36309e79a3eda6f97b10c7412dd8ed4e203880ab5309cccbd35d9a21556604a26268e68b36fcfd14b8c3719f6f03f474e07186ef8265fdf08a9e63e885194526d57cda0dbb8a873eeb362c00ec5365a8cc6f66cac5d14bb192d1e6ef68c18f2c5d2bdb61681d9effcf92dec3ef5d87152537e0111f67bb7a46f8f1b6402d220007a201737f712fa3fadf12718d9420e28c3c68aaf608d14c87a338fac0ee904dd36060b982e06c6e556c8a5fd6b5ed38c97d43f003809d00e0de62a601c5df5489c4032967c8435800c0338c388f1b1b385642b13c9c9803db2150d5bd730c9cb34dfb8c93052af2280d61a4cfa4a6faef74c230dad3666b9819f6b0667e0a31be367662cddeda86b74c9be062d629321b02d49c0029e4a55bd533b04ec4e849365395484dd778663e5461049543d1cef723390fe70e7aac2796634d4f2917ea38034e788f53b5aa21eb2e5b3aa56ae8c5a2bd751c670f59e60be7cac42d917ac49c90f87875a831fc18fb30614c4d651a88c8c2d7cab5b4ebb2be5788a9c7c8cadf779210fd24aac695aa8e556e3238d0359f9b42eb572c100114dc7d33751424810fadc9f46cfd120d516d16e534cb21d3c31e2d0fbd65968e9116b1d73189b0a42a4237e6db48339c559de2e5ab9e8473ecc4410a05f2a03a60d3c1b82eb82af7fc86df7600014715ce201037dd283f91308d0be0f61e00a35b7a67830569bf1b12605feaf47e8fe7f6e79f7bb09b4b4319e93d7de1f04dc027a5e5a745a8018cd56077980dacf707dd6bee6b7200f488794d31b861d63efd582c9ee250f8c11a720625b5e1ea917341f3703254aaa4e499779889ebaf33d1414f63080626e918178536634a4a44ee0dbd3db3f4965c976af903499a494011b0725072c0733457de92f3a6748b5c105e6876f6176a4977ece8f393be0c4c2c4c2066fcaa6590d7557eda38942fa9b5d748ff4d4044b92f4b67e7448fa851d332174ecf9d789cee74fc3edebe7acf6f5747ea6f49706af7b7dfdebf2d8d700f68b4bca3d0411ee1eb09fe49e1385ad1fa015e64c71fd4565e0806985fd82ea5b3b95c3031d430f3560705a615b3abaf8a322d8b14ff39c28e69c274efc7f9fc7a4b9060c7a78f887def71851d27278fbe99f6cbad5c83e25afe746d7e3d1f5dbe87a6d747da63b1f967d90760e1e590ede778fe5df20742524b4818485fd3d331dbcef3cad432d718f9d9b92005312e0cb5acb56f65aca4ef62f1d74708f7d16feb9b0b0c13f171b42fc7309e940fc73d1203de26990ce76dac33dd6d62005f4d8d48217c457839f956687d52feaa8d54c0b1eb5064cd8b5d629d235d0815ec2353b404b68d7a7c10c4cf64535dd34f8005372cf3d31f74aafdc55dc70b9eb7bfe0006b7d1860b6da34ddc44161c10d81fe4429ac8334d0472212db4ebdf217ac0a045610106ab0917b24a1560eb7916cff33c6f7ba5577aa5577a251d025723ff380a4a59a6a488442a2aa3d10a5d0943121251ac25aea2321acd95b912862424a25852328e2626a1103d016fc83fd5e48afc533b9dffefc3f85e109224370a4a599aa440004fe265816935b938917f46a84ad285dccaaed6747ffa891bed6a557ae44e94e644eea91797c255258a7f2a14d23f1539fd0977c285b81017d220e64f87c0f4412ec4629232dd1b5a020c72a15d2711c9be673088ed9eed8778480da95c081b6563e73f6c74496c848dea5be5155aa5659556298196558297a2d01512b164e442dd68d7ebeb776417ea4cbab12b412953445cc83f970e69c18a7322ff948c29bba4842b4b440ea58484234b42ee8453e146dc4a17762496504715aed901762d668ab9bf9bda6383582cc7b22ccb721cc771c45a7421c77552befc5030399edc8bf1f775a14852228e2526750c595f59bad2f804ecc2cd8d5ce99f2efc3a93cec43dfee3889588fec144f7f808897fb08ec43dde859df6d95f0d5eec290de2eb270d7ed64bda6a6ef48fa671897bfc337cb10f3f3772a3078745f708e1dd10b67740d8dee9607b47637b1783ed9d0ab677436cff6be47702bbb00bfd3345ae063b124a839d3869b02b9134d88ddbdf6ab033d9fe178647fec1f762fc7dff78d485e2f6ef42ff841451e2458c459814112ae2a408b20bb74fb288922dfac77a7f5c8247ff78ef8f4d70c83fd7fbe313ff54ef7f79d9f2386b7f5d39ab34cd822fcb8265cfcb96afaeaccaaaab7acf62e22d1a86305a68100b4d33318596ccb2109398ac4058eb4ad690630daa63a6691a54c52cb3a57fe622266aa5565e5f69e1c85ff30bf3c7bcf28c348aee717f8c5e957f5666ee85b8c7fd35fdee71bccd529b1a39b5906a24d542131a4491397fa56bcde544e2dfad480a796812d5b084bfe7214c23ab98e13a66650d656225b3b296999835882a4990f8ca5da4a6914322ed681af96ff8867f09d7faca4a2fb1771126f21136da101359111b291187f3954bce99421aca3352f897eb1626123d463a0a5d21f2b2a3ca2d5e512310e62b4d8dee714af489748f6beec61f944417352aab498aaab072b20aab89b430204b5f913f47856e158a3434d651e8fb4b767ecbed1615e234fa8edce3f95f5dc6fc97357f6d99c39b4683d123dbb7694ff3dce30ef3dfa6411a6419c7edcf59a27b5cdcbe699015bac7adb01a55a3edff7d1a5489aab2dcfe20d025e34fa24284e35de4f6ef3a0dba4257a8bbc6ee1a2ff112aff00a398f3568a371255621e6c3741c58b91d2331120b61180dc2c671fb7faf411c71336eff8b456a380d87536e7f8d066524f71a9469b2d0f6c77c0d1c3634e62f9b72c4f8af3f096d911a0de23448436eff8ddfd0202d14da8ed91e83791954a4146d7fac415588dcfeaf2f1a84d1a050b4b14615f985b63fc61a748d7eb4abb21255232bb4c4abbc4a0e0e4c84953a93894059b985a08bb8ad917bac1046b4fd1f246e1f3317223bba4db9fd4de88bb4c62bbcc46bbc4217898db091b68c7626724fd6a0dfc6ed7fd1204c74cf55e2d3a06c43d7c061e3bfe734680bb9c79f84e630a4b6d117d1f6e7d098e82ab1110b6124566222cb63ad85eef170fb6b234da429b73f468336f27b50366a5096d1df86fe6edcfe1c9d61a32ccbb2cc12bac7c3edef6da2adfc3448dcfe19ad61b4366a6da469218dd44a4da48db6e30d6f8ff536728f8fb68b3abd897a0bc710b989b6631c6e232dcc48ec1a5da2365a0fe2301347ac0c89aeb022ad11266ecf464d77ac50a6ff1261facbc2ed97266eb72a7d37b1134d5507105ce44c31f7e4d49f7b8ac899a26e72d70c87174d953bc2bef28533cb617a69d292eeb8877a2014fd33329d58ca8edb2d09897bfc6d68c3959591abf888e4fe19c89c7e00d377eda28d34624da0245984672b56f6cc8a40d92ae3c914aefab303f43053f29a01d6315b3192ec994d920629fb03787e1d8930e9f690860c5656c8209af6325488647f59eb2f49f6a7e95e14a3a88dbf1ceaa78de9a5e965a81091de4a2f4385886b9006491bd4d7c081e26810f51308a8c8adb2102454a47a192a44b40ff11b541f522d6fb3f752ee7ecadc5319ffcddb26e72fe79c41426c609175c8375379ca52b6d933cd6894541a63a5615269842a8d934a83fcbeff4e874e915a6b7d4a458c0a0d94aa7f7379d4498272d01eeea920bbd6ffff3e8cdd53ef754fb57a564d6b14aed9014e15c060a546e0fb1405d8fffea4b7c3dc87376924a5b293f265184aa3344a6367542da965d8055e0efcb6298d9264e29fefebe6eb4b271229a16c72e62f59f357d568321c8e1ec9707ec3f934e8c3683e8bf75d1266f142ea46c23639f316cf6216cd652d1593bf9aa934180b666afafbae16229b418f142f9df4130f79c8c35869f210f534f481b5741337b17ca3e52bb17ca2c549fcf361f488453b89871e7ae8e1bd187f5f2d319ab768ce97c9603e0ce633188be562b96432dfa7d1540dc6ab23a547f7413a1a513aa2233a1ad1ea0f7ad47769944669944ca4907422a1ecfa53c855fd816b7680192502bb3f07b07da7fe524c5469d0638317165e23166ea992ae31530f8a9aa248aa1251d4d43410014f8aa44ea81065428d54092552e249c864a4440d522514c9b4328928128a840aa9705a9956a6d1349a542695493489dc23bdc8c3491a7b90466bc3b04d85c588b66d9f6d18866159a669d7655918666dd78651ecad4d73588c64d76f59f6da755dd99569dab6619865591686599b8569989559d865590f0f975c9aea284d9124d9aa12555ad5cfc85b355cb8aabf2a2aba889aa49ffe1405f88ee3388e63d53e96f53a0e7b28140a8542b49694153b0e6f569cdb8a9eeeacc859115b71b3e258292a5213a6c1efd2e05b1a05b8d207eb09f07db08e555e41a93b452235d99586ea5f2da6ca6885861eb5d65a6bf54afa47f3f5c1493e38511e9ce5a7d1213354e8288446088d101aa1ca68ae841ba4224957b1092a0ccf050c20420eb770912169e1020610210af0d7b156c9fa46de3cd5741aef36f2a6eb38ddbd187fdf087f5fd23dcd683674a379fa79bac60ede6756bef746dfb7d168389cced35dc5b134faca682cfb0b93bdbfe48e0656f14ff75873588c5c368cb15c9e7a9e656611b0504abb0b87bd8c25735d67c9701be6360be6b64ce6b98b256f3963f170e630d9c3186f99f71e5314ff582869e12e160ec36d98c31c77d92c174d490f5b34e5680570c53f3197ad8e9a8dffbc8dbcf9ebcb99dc65ce7b9ccd733e0e3db2f9387e83438f7cbac60edf6b3448f35f66f39c2e6b362ec7bcbcf990fa653b703ea4fe46defc97393fb31d3a6ecb6836164ec6787963013c9a774e539a764eea4e9275ef371b190d6787ee33ef71beeb3a0e876638cc2c0234c361e3379bcf749dc4797b69f05a1ac49caf34f869fe6af0bf9f32d9cb5ddee068cdbb46eb0b93bbbf64ef2fea759d5731b9ebbc3a2fdf65efeab2f7980b87e930dec572b178bf5d3097cbe572bdad8a177f978a177f24a62dbd71172ff3981d2e976efbcb310bb7592c86c164efb98ddbb64d7b9c3dc9fa149197524b353aa299f6a823c55f1dadaee31ca9483df514f560c702f85e8cbf7a023c9f8eea482975f1e71a7c5d4baddea0840a6077f7a72dc0d58efc53c74eca971f0a8825c55a7652be44114d0d5e512d5d544b17b9881a81a987f8ebffc5f2f5af4beede92b9ec65ee394b77b1e81a3b58de82bbe7364ff32edd6f166ee3b66de2ac7597a3b62c9d008375cebf7a7ab8e271bf695da77db560fc29fec15bb56c96aed3348eaba57fb6c94d58535bbd4f695cfc7d09d2517d923c3909854caa8957bdfa751cefc5f8fbfea9584bfce3fdf69a85dbb8f7ba6d7b6e7b7ca975bb6c1ce77916cba6b7fab57e25f18fa7eb57d13f16ae7e2df18fa6bd7ad1f5af2e5f9ecb96bf2aa6e29e39ba335670f891581aa2a59452ea41453cb56c798be65cb2e7323d72e9385d63076ebbbc057b1abe24cccb21b5bb24accb97d72290e1a06d1967ee2f99b364ec65adfb264dd25b3d74f5a81e1eb5ce0ae0fafe2d2eae9d0ae0fa1ef762fc55df58005f5c3b15b41e7b8a5cfcbd25ab20ae3a0313280d4c511a94868b34106352226660d6571a8b91acd255555dd5a5692daa4bbb80d0a8f5d4a234cc32105a86e122b7700f2522468c1844501a1207b006244d67d0191a0869d0c0938e1123460c172e987182056a04a64660fb94083a03dfa7a811987a6a049e9ed2c0f3c129a434b00630388533e88c1844501a3d948824b40431684c22b0448988d1d182fad7363bae395378a5297800066f0d6ffdce899fb847fa907fae90897f2e93d13fd73852e29fcbd22395f612f7487fefc8d55248ad39ac21f7487f72c92da16ce9ad06bf72a76ce9a9063b355c0106e7e85ed5c54421fdcc56d01460f08a5bfaeba909f07d9aebbb886ffd20760df10f7127fd93bde4e224b7a748d2bbe89f4c87cc20f151c88c907ba6f47386897ba6346374cf946694b8674a3344f74ce9dd57b6146e89644be2964aecf5cf7de95d041cc771265dd7755dd77521cff33ccff3bc138bc562b1582c2f0324cbb4ac9dea84eac13448c300762c0dd27035d8f14d1adca81eab41cb06290a4571f172b95c2e97cba50483c16030180c66cc6432994c269331f9beeffbbeef6580887c1a8d46a3d1685e06888846d3344dd334cd97c15c2cd9637afcbd0cd2e5102edb80338b2debe0990d5303a72888712a608acc9f3301530494f6fc3911304540ca39ae1d0b02ab9c10aed9617775acc54c4137b62d67d3ed22feb1f4e74f607e5025cc4efd39b30b8a2203ff206d1e5ec587ea8111835d1fa481868ee9c10de941cb83130956cfea012d770118a4252d25499224499252a6699aa6699a441445511445512af7de7bef7d192022f7abaaaaaaaa7a19202215084a54f94e8fffcd787afca9fc4d8fff947f7afca5dc991eff9af120650d0862539d816ffbf0ed1b583da7c77fba9e6feb07c8e2a2304a9a7461fbdf9982735b3f1e0ac3100622947ecd56500c657a6639e727c424657e8498586176e606339ab35ddb5aab658468dbbf261501beb563ff3239b941c9bedcd26d7f93b2e9a63640d973cf8d042cec491e010b4738d91a79dd2900ed17cb4433c5a444645591d8d89ca82aadc22aabba55e6e2759cfded928f5f7becadbf7fddd11d5df28e2e080d1abc37001ac418001afc3e8f06ff3b1aecd8afc6d74f021b7f436ff49fd0e02467d020880c1abc1d1ac42674d6d33895eeb1ff1aec94d0608784069f4383ff7134f8618d0631661ac56904a711651ae934d2f203b958d320feae4ed9b6dc1665db4a6eab41eb645b2afccc5fdeebb82dab282ab4646889b0121bb18659d808b2416cfc69e341cc79f0db60e3839d166017fd438554a7f3ffe17b39340802b2a1c149921c0d4e14948d0667596a3415a6d490969d942f3f14106c356b2d7b5921ff8c08c07eff6130160b0aedf10418c0a378141ae4a14706a051684e0e02d056c83d545ba1e81f2b6489fca37d1a9c29190dce148c066779d1e02c513c0d4e944e839304d99c0641bed2e077284b64b171dbf1daa73216d8e81efb40604ad10987b6c5461c6263ca9589fc5380d748b4305bc946998ab8ad56b2ad366eab996cab85b6d54eb6dd46ff14e0ed6fe5831b8a1dc083dbc9b60278700b6d8be2c1cd645bbb89b6dd54b6dd46db6e2bdbbe46faa700dac812c07ad801580158141a8ab6129288db6e25dbfe543253d0b7f62717cc0fdb84d9b16f291290b0419b72b31aeaa6da9613857d7f9b3d80ee0a62725b5b9e606b713851d80fa9f40718bcc84d4936b5d6fecc56d82771ddfe765b2cf2d40024c1e39283271ce1010525cc60a37e60608ab6dfed836f06584fc80114367d9b31304576d3b796d294bfa8d70fa955069dc112f0f722d2dfcb5254042ffebe3b696f11030c4ed1cd138dc1b5b14088df0c06b16d48f5f02dfbbe336535d8fc62fafb1748f7dcf7a78bb1f6614ffda4b192ed0b30e8b19d8a2d2ec6da87bd00d70729e61d6b1825bd877f309a92586f18fcfe25497acf6eb0d6a948b2b543ff9ad7c42a80ebb3e03616c09c9e7cf07d9f7afb527683f457ff30ed9aad98406a87fe947d98b68400f70ff6cfdf3beee12f1961b2291d69551bc2353be69cd34a15669f5eacba94fa2c9a8661d64a4faf064d4ada4477f4f90797230cb12baf08fbe7a70c73212952d185ecf42d2f0894759bc5c56d1b919a6655f7ba5cba4e5e5089ff348b1012341bd5900a61228b1a5d89d2dc10f61e92b4f192a6a18df17bced7691251a3979beea988a323ce912814a948d271745d0abfef29fd89998cbb8b28f1a5908acad10dc35015457514edc862794abb5b44538627f231fe8d6a4956d1a88ec6b074710aad88e39eb2dcf4a0cd439b93e525125994e8a36a22ed531c88d2760249a3b5fa9653d411d1f2d25f56d2d21fe9a14ae3d076a72c694392ae42196a70cd0e90ce792f4de6fc97497c2673fc256ffc9647ee6bde92ed6f3fe26f792f8f5c2effe911fbdb77792453e23d3d22fde5b93cf2e9ef4be891e9338ff348a76be0705ff39e1ea1fefb6bcbde6bf2f65fc69fc9dc5f72b7f157e6782c93f82c73fee691edb3f7ecfdfd11cbfbdb3c52617ac4fbfb521eb94a5c6ff548f7d54f7904d325f408f7d7537944cadeea11fcd85f375b2c537f495792aa0bcbee6f3fb31ca8a71e734f331ca6e7baa75996837dfb9ec5dfa2837f2c3d520302546404f31c1cd8677a24f3d7d7b7a122917d8f7dfd904afb1d2e5f3d093da2f9eceb83689bcb571e97afbe76dd25f3696aa6c396037eea6b36b31cb89fbe6638703f75dd4bf66b8683f7d6f26e79d7239aaf31623d07c7d7d0e891eb3324f4c885c4d7e0d023d87f5f596c9ef33576a8fef224f448f69ad723da73340787ea2f1b7aa4fa4b36b31cb4df3ccd70d07ef333cb21fbec353fb31cb0c7fecb6430d6635a5c2e60004149322454c4f2984c9279192a4430ff7d99d768bedf6c5e860a11cd5f1b1c6ea3ebf4b6610dd21a849ff33ccb779df71cf7325488748ff36fdb672bb6cb6573a9befe0552ebebc0c23f336301824c4245fcad4c72598f61d76719f6017aba07fc3e4a67a547cd56582625a1f1c4a486ca062b9b2d944a2583140a784d48aa1aae09551fd4423e38d953097b923dd0420fa8b03ff62443273f40c2c6c4fae18ffd6008db1f1bc231156c0f821040b8c2be6c564e2a140a8b0c607052b17a03189c54448c04080c5e26928945b94c2cca44027a64a545a128db3f2bb3d2552c8aabf83b098a162ad920a6852eecc431d1762c653b86b21d3b718f63e4f60b0b612626e3588295b8c7454c748f6324fe19993446e21ec748b2a98292953b58c94afb9216d2429ac83f53644c29294514f244c5b5908aa4410f2d0404cc83148c64936ce283a186b6f4d8cf6c45f621d59ad90a7ffbf3fdbedb3d33fb74d72ae049d670c2be6fdf6637d8bff8290d724fd1ec06fcd4770f7e9ee5f24c57fc5f74a176a40fa916afd3f5fb8bb926a59452ea414aa997fe9ad9027e530d63a6b873bff04f513de835a8d8aec399a2d231acfffad287389719809fa2ffe54c0e3902932f39e48831d78df30fd2a6de52bfeffdbe95fa7135754d57e84806f8470e28b1edd32ed40ffbd2d351fdb86fb315d78eea878a4893524aa95715a594567af3f594ce7d9b4037bd7992359ab069a6c1166ffd6459d7ba96f55783d4012536fe542ba456d13f34bc1d1833c5dc92df7b6908de906aa75f51eab9fa9b7950915ff85f5f65d01f73f0fafbd883f7d27cfdcc18e0fac5bd2e9ac149d628e9bdf427ba699e648d7253159b6690ee8a5e3783f7c12906506453fd029c62d8d29c07c075df0c4e3128605fffea7ef3e5f9c57dff9ac1fbb53ef5af997e41350f740cdb61cc14f4a5bfac9fee5fb7e31e699256be9e661e54ecbb69d3773a16fd6d7bed41fad393354e3609b319fd2b6b9e31c0d22fa88641eeed3b400f80750f3fdc6ddf87bbed4b3f65b053ed56b3159ade7efb99add8348cdaa14f7796ab0a6a477a2c57b996d4ce7db096d48ef455ac1de9e9f8715ffa5a523fbefae97fd35d430892fa31c91a426c490761d8d25321ea471d62dffcbb8af5a37ae9ab0aeac78661188e22d2bd18dfafaabff7e7fcd0d16f3af24f15438ea0734b922549478847941c31f600575f454b83f793ee4b5f651a8880afe641c5be0ff210b2ef4fd64f352cfdc3b4ef5f37bfb0fefe9441eb274bbfb07e927b7ad05a61591f52a7ec83ca4c61bd04f210b22d0d42604f7f7d553d888ad0f1d22fa69fe49ee411261b9cbe02b93d1d114a1172c4c944611d61323d735b1a9c5e007b023b74949e86d4e4fb30be1ed58320d5d3f0513a6525559a8ab6f4d74c00be4fb7cd267d256cca7457d987da19c3be3a0c9bde30c970531a2cb1ed5f7ed22a9b3e78c9efdf2712a5a4942508c8ae215c4fcc39e7d4d3da7b310c638be5fbe6470f3dfcf06dfa3fdc4dbf071feee6c1c5106efa3e7c9bea8d9099626efa973ff5eeee269680e9a63f1f647e2806dc1d03e43ef5d786061fe0e9e706e98a49c750b1ad1642868b544fbd8c038854ba86fd9bb58c4a842a21426d22d4bb27dc9206ad0e9928e8d3497a10b64a29c08115cd8f6b766eed5410dbfa110204740c22f7ab9f9b660b10278afad7ec500dfa0976fd2a3d8869e91e10742014b937bb08cd6ec0e24c41bfbe9f607e5829cc4efd4a6dca44516ff6921b608a523f98503fecd7bfa410a720ddfe130f2a243d270ab7fad620a6ea59b8e8a43820717032371cd46b06da9e240ec46da99d4aa7d5380cf0edefdbc10eece985ab4e6ed60ed5f567e600baa996c04745edc52a8c8af58302f5a3852ecc30ec29c49e436c4bfdfc16f523fbf906001180917099e0840e0ddff15936b6e75baa82fa7111833da579a73567c95fb4e4ab924997bcd3924a5130c618638c398ee3388ee3baaeebbaaeeb3ccff33ccff32c168bc562b1583417990669182e0dd2b0418a52dda9426130180c0683c16432994c2693c97cdff77ddff769341a8d46a3d16c369bcd66b3d970381c0e87c3e17c7d0b020202f2209e363636363636363638383838383838384890204182040912244a942851a244891225feffffff73ce39e79cbf3e356990868176816a61d7a71aa458d8f52915767da9865a6badb57e192022da840913264c983061e2eb57b1a3a3a3a3a3a3e365808874c820830c32c820830c327cfd3ace30c30c33cc30c30c337cfd6a72e2c48913274e9c38f1f5ad0d73db133feb4707c813794e8ffd19f29d1efb32643c3df63bf2373df64de49f1efb3a77a6c77ece1ed363ff33c8f4d82f9143a6c73e896cc3f4d8e7c82ca6c7fe46d6617aec73728be9b1bfc92ea6c7be26c3981efb5f06627aec67320d2725991efb974cc5e9b16fc9b4647aec7b998ed363bfcbd4647aec739986a6c73ecef4647aacbe2a6a2da5f6ada594524a8ba0558e2f5cb3e3a22dc049853da71398800404ecf906a81fece77bd48feb31cb46c79ed68334ecf917c857bad6ea02cb3034486300762a0dd24069b043d2d6b5348ed48486e80945b1190fb3052d710f9c9294a446981f3e8279b2b54c519c24045385c6a07e68e88002a1d221ecab3e2da91f998bfaf1200d99073b300f6e5c1eb46c70aa680fce2e6c0c64568f0532abe756cf04523d56dab66ddbb66dc318638c31e6388e0b9c5ba8140d363741ebd48c080800000000e315000040200c870483b1244904c50f14800b73904e6650461809c5348821a39041ca108101010111000800410000004950bde37060d95d20cb693b8e0d2e6b49f1d35b71edf7052a92c0d4d7d7a1e13b1b37dceb4494db7efbacbdf69f4f3b2c88fe13bca225229b484f0001c670eb8e3928942229a1a86c4e36b233a11e54c90294ab851ee66e6ffbe787bb408ae062b4efec455efe3ab9d00d31a8811299c9db4e0da241946a63f6d4e946a94417f5b8deedb5b3871b254fdc7b76e0a54055c10ec53cb5dea1d8c91bb7f90eb4eae1ef3b3a27c9100d6aded7a4a13a78312e49cb153789c71025a36c1a6784677b0ad980ad3427acee17bdb21f972e75c338f25ced4c3afd9911b25633ae4f6475ac3d099de9f68aa01e1d2a1007b62511e92a4a6c4f5aa318f7b6eb2e331f0a4ff55651b717b2c94da5a1282a18307c63e575096af9bbf06bd9dc229334e52f1c8b44aefade298ff605d6b74adee8afb55ce3b1a0a65a66970640c58ce175f8dc86c03f8844ce941bdde05ff1851a1dc7c50f56e2aadc31ad45a0c901514161f3aaee5b08335dbe4877ca731d28000de756dfdb98cdb7915de20a3a73718bdd1d3cacccdf3ca6ccd77c24b0779cb6494ddfd7853272f4671765063e9552bc9bf81a316f67ae0d93326e6923c226c32da034d1d6c646c74bb7304f17d3b96c640facbdd1467765767eb33feee21422c25c11d5b8f09eed6e96856f54a2605708b134844e6423fa21917eb2e2c5385b1e76f8d99dfc2a3c436e1ea4ff4f6008b2214d6e682702a48d551237268c11419a91d94d3f5e0ca528af693fa8447eb6d46016809546cb0b29501e9fc8a554491317e1086452d5350556352b5500a4ddecc7350564f66665ddf954d61d164becfbd926ac126109f73ba6c881e66f166df4550df7295d9e35e428a6de18891b754ad30f7a6a3e08cd9f3bdbdf52e99985ffce20175934115b4a83158d252ba42687ff6334108ccda144448400f40791e160ec79ce51d9e0996155f426ff3c4f7996dea9230ff53003aec0fe1796f0554a8a15714aa0dbdc88d4e21f3a8f734494ab578c5d1a945d1dc5ebc2d89a7565c368930e9074c8b3b2eddf12605bf714a6513ac7105e0b32efbf1cf1ea724c12883b384ce99aa4e9711fae7207ee6fcaec6f14607ebcdba67e4ad18821cbecd103c75907e0924acbd6611ff87ef5623871cca3883ad23ced8e323e61661fdf46691e611f233f73fc1fd3f66d2c18c99ed28eeddfc9a73a363ca4a104a524a9c6b3782660fd659f92cece978e92f95085655e51691b1461ae7c20378dfa2dcae112ea3922000207e04702cb20abf71d5caf70b96c3375531e184ed2d5a6243144ec86021efa25861ec0aa2d4ce186de1a7eeca8b29d955937a4b0e3ca0e631942a7a607699ce68eafa38264a509bdc199c4812b20848bc437470a9b4547d610259d10b9516a3d605f8047d5501acd954f153066b8004b2f5a33045e7c6166c19457c03459742fee996f4f7ef76207550fd60b051cfb22e624598cf7da74ab9b3f122e746be623d2ebfe25ee626daf6671cb3cdd5b1036874692f4506cd1a67ef7d387f21c9a522ee8feb5571a910fa6b1ee71ea25c4492d604c9f316f483cbf7cb22efd8495f68dbed461f122b24d25455184a12daec6cdcbe7c508198f5afce37eacc56a73a1db048d771f15b4d870462a78a23dc2abff0f5838b0d2932bec02afa4a11f3e187a9c7c905e8437c2299cc776061020b420271a654c0e6f4e268bb89f71c4525fff1b68f41700dc25bde087f37e41029dc0f8e6092a1ceeec57df3e6adcc54a2a31d343ac7be544f0ff9defa21fc85107158594db0cb04494a43e4887fae797d9466ff7fd1be8529d850ee225e5388577a48d27a29d2931b41ea80a905dee851e56880a8c52ccf4eb97bca10211438c30e714a7a961c145c0e71a167f546007696a602f476d0d225f55df3b132bea1548e0bc072b960505b7815f59e18efb57cf6fc8b2142e8bfb253d07ccb1742cfcaa7242d6bba9a42e5dc08c178b3fba5a77015180097d1e6192cfd50a387aa23930763e504c62ec51d2a3d77251d3a8bf0589a79e5b271ad1eea0a8183fe045154f38f8f8fd5995928ede5585932074399bab883b18604237c704cd5aa2946229229524ae2e2560a8ef89369ad143f87ea1ade8956eae5d2b79f5c8d4d5a3868d5ceeed58fff09a2e2a85334d2e8e7240b1be50c5d2c71d0b8f9e8ff2041b765eb7fcbc2d9b91c71b01506295126c7e2323bc58fc2f153b64da0853e49822cc14693395e3107055e6f4843e7f50599e7876324c7b9989fd77e1aaf917f194aed0239ab6e6bbf27deef48b3dac796653db43f63e6c6fb095feb099291785ec5a08965006239dac0b88be9fe5edfd2c7bed794a7643e89752b7d309e5715feec8a9db21c476e0bba1fe10bb8cdcfa6af7d70094f84714a0cea1055b4e6f2ed9fd0e56428d50a7ced81eb945e804cd81d6be0f3eac49090d1e45bb71f54b5cd9c53062a40ccdaa0a096a68e077b2a9d990f24a8666d80edb99261788030c81fd1029f78e8a5a4933fac462b5c323fc0927ec2312b4b64bc336466be4b1f9ae512cdcee02663b52ae12058185831f75fa84b8103eee069b213e3306d05f221017651765e8350ab2fab55ff3cdc6190229d2d894e275a65eb709669545317b37fb49c3819d1b13520f1fae73e9469064add2ae05001f2dd1231b7c2cc94e9e45aaa04568096e49df091295aa14d60816512dbe5c168f265a1a7f65d712a2afbcaae1748bff0ce70d84cdc3590c5cbbac165f33c870a6deeccf802e3ca9b7379ef6361770f27b69d0b8cb34b7cba63bb1dd1bb84601ad82d3f6e599ce33c4d37a75e09ffc43f09a67af78adc77076f7e48b082726d1f22f2b3c187de53357f0baaf6e7656e0852f88a51e27a6ff28c79ed870931cb0098a24523f275135e2627a64742fe6355257275f16038fb7e6123a58f016bcaeefa61e644f33a43b07f8257763dd80a305d573c90f45908893746ed037991490328ef0491a8c03579e162f3d28c0ccad0207ff38123575986c70fdae1b61a817b4219db79d32d0c66114285e04347b76ff4651c0b46b673376b2079a477e362a584c74e002bff42c0205f1a42ff36a9b81025671968e8bf00087e8625c31e669137189492e4d2629fd2726df9692b509ae588904aa33cfb1493df81ce1db5461e251c117bce5730920c4233f192b6d063a50815f722e8603cc584a3b329c3deabd0aab2b91cc5e6f3ed76288f38283db6c51c1f80f3124d6c0f104af7851505427d203d7001603fdddafe5da189a7092d8411e08d41c7919ac118cbf8877c217be880d691c3b5de6cea345809be42fb0f9681161d0a95e1614dd9593394928741b29e1208f35d8d96a7863e69baaa44b7436a67b0f6f9fc2991f96e865067493f304dab7bcccfcc3761e62400c610d2bf0d53c7bef81cdee2bd4e86f863028763877471f3244a5bbd632d060550e7ed83c24c9ff6c3ad06d094f49b76fc778c90343b3956f461679c16fbafa4ea8cb7e393abd2f4d2a53714d61ebb17c6b43bfe1049d89301e653c9a9e0c923f1b0cb605a7386e2a61d8ccb219bf1f4d73616f2a1cd9c09aa3721b1e426dfc4fc0fc4c7e8fcaba415917bc7583b62e428801eb49a860998acb14166630e39a9ab61b2280afbe503fe0e14f0e3f6ee32b4e152216a3b5880c0f265eccd851bd21f486ea3d66b2e5d64d562f20ad623122c9087be169f945f412e254c0808ed052702b5b36219602a29152690355ebba26840af5821f2f6e62a3f3a8ec02912ed64b43a4958fbad8a01cad5b61d0deba9072ae4d2eeebcf949bfd6cabf9e9dd30667abc4a53d20b43a583cd8b262fa517da8f47db36bedd191530eae3d0767b8463defa5c6214c5d1854bf4e701e32a6544ae6f4e8d1a1f8a39c752ae2b11714827b38f3d0b9810291e6f5697d3f23b3963df03cf29b71ddc8a01a8f15f17acd39bc7e6ea0b072e80c64ffa8c63c75a471f47cd123e1fec079c06e5d8137cd1f92afbabdcebbde909549c6d9a30a20040c102da47b36074cba5dd6339dd65b8f30627e5dce6ef361f35bdbf29afc627f3fc6500e738a1d658ec0acb2e40a7cfbbe8cd07ce6141fcf0f806c7d022ed2f51eb4ecebadb6831197820c09a11d11882af70620d43c56487547f9b0ca412fc341e5f1773558cc2e45aa496cb1d1a5820c8f820b91eae1a860aa0133742e7dfbf74ad4b96a250667eba01bbe997d1189375ead634c2f35df0ba5079fd33a265cac1c9c0d60d6031f0d3a455f36745edcafe3b42a4d7243f4da00caf44924f589f7ef01a11af4b1fcdffaaddf1bb1c7d00b987504b5c57dbccb76ee2e752e8da88a8e43f447eab420a0c609266fd3203b669335943322aec0e362de381a8fbde18a967fb93c27d0968b4bdbe832353b8cdaec0b9a493b33d39edb5558268439e67c2b1bbf16013693be744a982f1837a07bcef5710c5bc91f341fdcce41d5ca61998f2f784eb31b96c3b5fbf60d162c535af1e0fd15675f376e61f45a1e055bb9cf180c87028155997c22139867a7b7e806ce84df0146a88ff1f2cc87d0df6b385da93a43bc5f4b1afb5d7c08f077c3729742996d6d5d0683ff4d5a75ca368c2d14b34c7b1a0cbaeaa0f99338aebaf98344cca99d4c5f4ee3c5821b6583a716520110934f641f4e8eee3b4f9987bf6e5a58c5de469a4bf62d34521cb2b56e44dfa5f451f3aab0662763a37006df64fa54fc2f3bd73d81205133d00fc25ebc206038364919219e31c463123ca01031ff8862014a6c6c87e05774dd1ea59d92f524c3a2a1fe0b386730471c64c45eb4124ac2e02d0b955171b227d15342712f9619a3fc336d62137e3884d421833e47163dcf9255f9d1ea5541c6dbc5a1852f3aa2a50c52f837a229cd39d3ced49c03bc27189f5e8eda86a810b13d13d582b73a7059a3bc6599bc940b025320800063fc405efd50c87303f4814014376805dd21695167825af7fe1960ad885d7f606b5aa5f59b95f5465f237f6ff3b756b5f63b90eb996f99a525a5ec7cd6ae82dc8ef2574d7dfe582729daf0b06c2814785f9f4138232a28372504af1262181c04d5d41c01b2eae871aa055ed556831c3045a0e70c23ae7cc7c3d6e4ec47604e91076fe206941b813e07dcd4a83807a7c10b8140af2c38e9b8d6f727b9c47bce146b042805b1862d8d642d08e4f45ca71c0ee09a389d5053c87cc69d872245b1668c409c9e7cfede2f924a3259418de4064c539e46725d7ee0cd81d05cfadbf68c879e3642f0fb056791d868d741217bbeef07b4353fcd02ce82e480f8db075e2601a15f0fbc6c02eaaf7d7c87d8032431cf74063f8e9bde3676bc09a02928b2f292406a9409d03eb7c2e879da0571034f2a95f3aa060e06b4655e417d74a75f146e80d2b122678b422769683f5d93aebb11834748d7b54094a13b4ae5df537ab6554996b2bc0c7c00bed562bce4225d8f4a564c71611a68bbadc2280473676af3134ad1c89b1398cca75125097388e40dff650c0c0f7463745ae3b79166cfb394a72de2f3a1fd232cdf97132dfe3571706f4e011a1211a13152cb06b61ff6126a7e89421737559657576aee71e2057108bb8c02331e11ce8b70eaf11e1e4b630a45268b5428277ff8b38009bd6fd1112ea3a1cb6ee8ce64ad97696671664d63f3842fe68a8d1dda4fec1847f78a1992d49dfcbd3c172f208d3cf2a9f90bb5317405151470b54cda7976bc977a2190e5fcf7d83969b68887b3789c578812fadb9d2dbe94f8b78b8f394bc81d7979b803e120d618bbcaca6211cdf9d05ba0e1a2faa5e83ad04e1c641c4dd3179567825816710fc5d3cb8b0ce15b04a8b8fc9ad6bca70d410a25bce23dbfdf8e7a32784bd1b5b418e8ab7bca267aaf5756700cd12aafc69aa621582dfbb87bed7be430034ad2a107544a4596ce21cb0c8fd309a2f34ee4a22f02fa077be5ef2f4c1fec23a517e89e5e57738109b2ab8ff1f5501639cc8d1fa0b5434e1a17196e70fa758f77381f01aad88bfe65c7fe672d1ab8d3e038dfc85aef5fd87a24eba14ea38f4efec822624d1b3643248e2b864395e0051cf576984f3965fefc0a2e37e654d8f5ea17a2bd1d667955494afcb2d73d43fc1ea3dd9abd47ecfceaef7a0f577231766120592ff0d3ac22eda7ab3160b01332a57edee269643aa8f17e7572fb69bbb0563fb182adcbb83186567da9ccae82958d5e6b2c9d8235cf41f66b782e49e046c881493dafabdd33fc5fb2be4497a25da252bb048897dcbe0595180de44b0cffb1106cd98f13829dfae1c0ace1a13cf776590a41ad6a4a2626d4dce3f4a5db190ca88de38358fcbe95f0d4f71a8348d9cc8ba45d05995785242565cb6c044998df2155bff0f8475c2731a3e9e367d27fca4623a63edb6e31966decba4c10adf4998581f765017d4e65e677d880ad4c4f73ca250727b920db982a0eda6768823b0a0cc18939123d057a8521b664bcbb5c56f2bd60a740964237656e9de623cac209af41de058000b5163adab2eccdf5572f8bcad85c3d3c68b08c4a66fb6459827583147a82b4867eac08f769b3e52fac3af0e70e8d807683aac48c1fdf44ba173d38a9c0c0db6f93cb9ff3b382c1dd8b4f03a3b67bd58be415d0973152f7f1be0fe629cd5e08fafc43f62ccd81ba4fdc6ee87527eba018fa2052785129f8ce488a6404a867ee7c94e1bac545b11db90960f80cdaf266bbc82400e26280a486fca45e042a1e7f0b784eac380a8664ca7ff8011c3502fa59b478215bba22a481e1565fe671f31d5b2cacd3350a575077bea3f0e5b0562048617cd1f7b9c31d17301f6d89a361f9948a51ba09d969b9eb390d89665b7e1bd6d96fdc4507f9ee91893f8555ab5157d35e181bd656c02d713284ca679aaeb1bd21a10514cb573071e7fac127dcd9088f6b8b634a816aea6f0cc5c198f8ba541d93c559386c92fbaf63af7ada835de9c011de378027caac2ee8f3d71fe51889a169c5abda938362ab442d8ad14bf577280e36f55be4251f7143bc5e07827fe39bd2536ca7d9d3a3fa801249997c48abee790f436b752dfe2465cc2f29560332f04431145e143a76701cb3173b6b9cbe65b1a0abadbd714750e5434afd12af4f2011979d9ad11ee25984283f8a022b5f8b92fa7eb278b0b9a5f0f119a2744d8876b8951cb2e66ca72f21c3dbf87780b56a2151d22c31301d9ddc87567ac995e0e8735f8c75995f6f8405af661d4bdebc0f9cdba243fd18c59826f268b06930f110d2f283c2050e536beb62888510d888391aa93afae9bb08117ec1939244371ca90249403bedaa2339e28f0dcae37ed2264ca2d5c8c3664949ef6a290c5c98af510c6d812168f1cdbc5c046efe2fe7edb7529d660863149c14bb4fa7b6a1ffb9c64eb3c790cc055b10cabd0ae05214839a97a88a20fc3ab68c185aa3e6d5d1a7f415c82d45427bf5496314ca84b6b5fe46c964a02c0530e8501f44fecf6be7509c4ff6f9fe5f28fe93af40619f6c17a4206a7ddacdeba3c2036889ae1afe7efb08ff1ed2fad89992fc02bce81df011f5001f75b223b612346f6e7b9b6cca2bb548fbed2475649a8b4c34c6dc0e7274c8e832d705b409513035a32b865e1800414a57a68b54f14223d2889f6866e325f63c853034ba12619dc75a7ecfea7fc0aaa3b41265fd60e8ec18dfd140b2cdffbca165c08e4cf072a37c9f324a2a74f6a37fa9412af7ec3cb1c405a894276526431f42ee0d753571e292baa8e996352d22e3104482374c56a9e1b2a0f9bcb0e730bb2bfd7aa6e26d39d3462c10885ac2a34d68ac7f660cbdcbe83d807c9a71323ce384f6e7093f6f54e47893bfa73781a84bfde24eb237a5e464955403b0773777921d04f1a308593a88525b0dc871e4e3c616f3d41e119689054c1c3ebd16273789fa242a82781efaecad09769b2f51669c433eb24f06b79c9b80880ff81e9f589fe2555c7a0d3fcfc190c6cd4fb2b9140b85eac3f10a75157bbaac1b48b09b80449e1a0ccd3c2e404c0350055c0e801673fe3cc58563a44ebd73ed6afd9728aa81e21208d6fa514059d34b209483891103fd2238cfd1a3d2e15be3d3ec4b43dd4e0ce3b39793e631b55f2c3783fc320dd4e02a00857d9348c5fcf841b72302d0da484b94f651843b7e974bdf279606389457bc5ed67ad60854f6d75a61e2510c8e48b98d69cc4bb93a81b626c6c3b1b936a13be78da5927385f024133a3059ea5155cb4c0263dbb7d3cdb471f863ecd447cd57bf21c34561134ec5e9074f2ed79bfc160cc4fb7f31bb94a96a57695786fa27c7ea082fe6c4e69204b53e00cfd7100e44bcf2e89a928edd9196e88f032d2e30ce03a54f38324673983f53170b11d93b8a656c817f233d5e4bcefc9392b36ddc60be394e900e0ad2f55e21da43518a0abbf370a2468d4cc6daddb4debc6823887658f10d0f29dfeb707c2b8e001ffb46db4076fb17fca419b9f1b085737f5ade46d2efaf03eb2f66283ddae1c41726820d771b130df4ebfa661240316e8a01cdd4892a8aaa7e8ee24a2f1639e941dfaa1d23d5aa4cd4464adffab0f2b58ba5d8cf14a5458f7d88933aff7153ee89e3ea435ce8e99f9295fd76072228e929266182b9ee7840dde3d5e786ad14949022bdfa76b4fcde02b2cc72572174a3189bac857eed203664f17e1c5df4706ce3c09d4bc178128b583ff381a58bebb8eb83e35c0d0a89a6e97135615f43328d7c51e54e261bbc0b7322ba522a24570614b6e17890250ee71b931fe23b047e43de02687279d47fc9a0521c672dc2d484421097a2e2bf230bb9e98a7de903889fb0defcf3073918917f02e11c2248542de4ab12f28651fe8106799020ff371233df089688c04051edf5d56544e5a771058220cbff00b3d086a7297180c535d50e8a304f072132d4d33bd4ca9ea78cfbe1d496228f04f00adc17f61842e9aca78ae64a91f089070c1ba4053f23b7ed5d68c7de18a79de54ac1578502873f5cfca220865b8f6d6f8527fe014a5b2e8cc9a6362a9c10ea700c20d75029b2b1cb61aabc68efccd821e3853bb5bd3f430525c611dcfcf877c87d04e000b452b37be4565e47caacf342d747c3ed0f47056be989de45510ba28a86a1381a0497c558d1501ab7b0e1e524ee5a3e8686f4c6dd40bc9e01e421f35ba222377c65f0af6ea1484acb66e78ac81b17de6ee95b6b072b9fdb6d1fab4c7db15ad41fa3fa748dba424bea6a749aae4c547bb2fde436b8ddfa628f6e400da781b750ec9609e3aeb38306632758ac178173958e1cc2a8bf440b33cdc22d6a81d86265b620da29f2101b62986950ee4478e9f8a631237c800f7f0dd1b0457cf89e9b067b800bf49c5e8708970c3e04403ee945cb88dca242c7b36d800d23f401cc3ac47c763945a09c399a741682beb08ec528134e0741ccf0ffaff0d23300d9909297212adc497d6e29a3251a1ded6956697d642179743b9f5eb5ba8a75abbf5fb598997a1733625179d42f66ee1d8c99266cc9f348de6b3b2521d25c4387b475636277b68ec190b976cce416ce66bb10c92937f4db0389a52d50e956f1c0b380e43c48d2ec836de875b9e76766c245730cdc828358b2e2b9a5fbaf7f23dc98f233fa5d05acd409428db033f55f8ffdd30396a88767230c8679a3b67bf9d2487ecb952c7d8b8cbc1d7e438897220977c1555422698ade9a0e34762feef1e0b7fca23d2b4285664c22bfd674704361003519bebadd54fc1ceb23899354f0bc456451fd8ba4ab58b74a0ae5980d39cb27668008ff318c5e4f54aeed6009e1ad89f71369abf83988fa0a12bc08110a569635446dd785855962a58784e92a0360346819d3046e88c6dd89b62a7ab3520201fb3c9832908835f43be0a0a246a69048ac458844a3c29f8c46807e1c3b107658cca63970a4d3e7533dbd865686b01d12fcba9131500808bf0736bb3a459da7b9f9ab39bfd690680f4efb118666327d9c6903f1b0d0371324d54f5c334f0f6a8f75f0d6604d7d5e06756cb8716d4fe848c84506f913ab8db889bd65aeeefb73c9e4af856ead278bc6c44a0ba26de8c0fbd54a3f7f017753e429543503882e121508930ef49302c7892931594d391cb4f270ac631e29dca3b95a40eb02375fb59dfc7eb3362b0ef87d0b532bdc6c8d5f517e78c81c62b35aa2e0aee1e876cdf84ac1a924f7bc0b0a974762115aa374c7667145109ad65875e9464e75705d8d06f2dba150bb024a63967df6ed71b75fdf9da4d10abccc461c3db82777bf1d206346905ee6806cd8a83d325bdb71313c2df34459299de83713091a32ca7ac9c75d099612ac9a16819fbcc3ed2710ca1a1460d98678b2f7c2f941d8162acf36804b94f5133243076473ebad8e232cf7ba4239a2ff275b3ecf260939a2a128aa1c6792496086b987837a4e42c224f3c0546d04bd0cabb2c2016a6100b5490e5d8b7db3358f98ca66c4d55c32d05b7806dadfd540197725dc224249f2993f1d5d7abf97feb4504378cf4384ebe6efd7b9c87edf3552b0c80ff15c754d1095b82b3caa799043a6c1ac43c95ae7d4e79852432e1b39a660c8450b8ea116725974636445abbd9e96909012aa8e267a81580c28c00cbd29dd259145f4f2a0cbe5bc4aa68659b4016f4c72a051a2593c1a6b94968b477ccb4737c004d06857c6fa0486024ee2305d6b969660d1f120cb98dd89b5aa81c720ce32be78ee69dfe78fd8f196edf2e91af45aa1c339861e0aa55a8ed485382cb3ca458e8d40871841dcb5fb5c2c663c08a2a0f6414393e5693f5416f6f4ecb71bac8e0007696afb3893832c8d56daeb4ca0b248881623b4d0bf55d9392e1a4a3d86f1ee9b4df550855d5101a633cf54e75504bab02b34002d6866da5ccc5cc72ae8d0b9abfe3f2b764c996da613d29548520536ac2837d0feb7b2977fc07b4116682c14d83500c058a71b2344a804367afd898cd1a6d61b7088498a5d2d74f0f901a4ff7c62da4ff1d5a9cc8b8223b39cc098c147deace30e8e65b2d9957ba3a4a6ba2e74896553b434fc9832ae8c82bae396950098ab23453c09a9e00033fa27632c9a1730b8e41f58ce7d416b26fb51953476ffddd47f0b5c3b95c73ad2a8ace0ac6b0db62ea123c51dd419a6364465e8d39122de1906091925b7c5ae85a11d292ab66d39d3a62aa8d5296dd1f5bed86797f98e1494742dc10c5f1f5c756483f56ab28d1e50fc38a80828f6b23c7f00735bd5cb1e6c6bc3c2b8539ea0d0587e00b76106c5b4c3a97b16cc494a04ed718a6156d6f7f32aa31aada4f086cc626bf3b191b4842e4dda5a2c5cb5606e3147f906880bce85d289b34bc26f0c07a158e9c6949b22b3ecf084ec431cbc37dba2c19e444d4dc6617d9fc5982fa07e24e94e1f30c230233307051a8421dc09ff8158c47a2f277cb91f2bf9896da1047425e387d9f7509a90054ad925b4547c440bb6543b3e7eab93f924b54d4d2f0309d687b88302bfcf809e87cbde1ef8d02f24cc18e7ce2453cfa4f3b495f3eba1e12a2594aed30809f5b62a75b3ccc54b4eb1423e7f3ae633dfc29008f7b25f5593aefb801c1859cc1fe9bac8d85e11e9e2e8698b0fd24509b5fc29b6aab98567414235aa3d4b1bc8b5ac3c361674922ed1efbea9de86145e07d4c0000ed9037ca90a9842078caba86c1b50bc294ce854d27ce30de4b624f1c3a6f0c5a4589a15589a643b98481e3ee2aaade9da8d5cd81cb9e11db9021fb92be7d17a07d4a2b134c82cfe39cca9dbcef2c019c49f3346295976ef9773eb0e6d82e87a624e5693d2e49b653995606bcc3535d81afb8b0d698c21a5cc190e7537be3c6a3482310bf9c60ebb5022a697dee97926631c7bba994bb9575f1726d198149e2eb231eee5262def731b236e752eb88d8230937def1efaf530ba8f6ef10aee2c0ddc768b2e1e56a6ec57a6040ba388eca741196b71ac00b2544916a3fc9d6f469e49745de0ac7639878f329f43342528bb214c749f0c44d37beb5d3ca796f1384b4587adaa3a3192a1773c8c7fb83e5fe1e28acfea1a15fcb38531446ab88398a6163d4b6199e162e2c5c35949e9681600750d8e712a3f35c31203f2f4d5e826f32a7fc055b8a552ebae44d881b220938804b64527256a8b9e2b1b6a6d99d791e03c1dbe7140e070a0b7ef29c0a9a02027bccfee3715ab3b2007fe87c71af7232bff134a8a093da059bde7acd101ada2ceaeb46e9967adc022d992989f5ae9582b7275691ed0f939fad92a32dbca4bdc7a9ddf6a188a1cae61e9ddd262f9977149e4c34d16c76e171d4226059b22f5147b542f1c45519f668409a9de73d17cb3340585d6765d3ff00de721759f973547f4cb04644413fa40986aa1c457925918e8f28c454d85cf29ea81d42b6d9df37a5f07bfab876fed328a5fe0500a38ca8547963ab23c0b241e3f89d30fef8c755c2d341bb539062bc09e13cd06974f0237fb59dd784382a06cf656409ac03049e30d96c7762a61c76ac2f380dc4ffdf35c49fc4888a545dd31872a28baf742860ac7cbe5792d1bcfe0a6c675d9ce109c8098c858b3d07715ec3e08496506d69a5571713ab24ee943d01ddbdef8644c972cbbf4c3d9f6058d319daed9cf3ea31fdbe49252e00ca3d84d63d7688ecf0497c3cfaa8f014b719f20614f81e82366c6a24c1cb9424cda80116ced05d7d7658cd5fe33259bfe5c92f29774507ccf4cf9863e34f4f311721f29a3d1a77d6cdfdacf6d6b09579f8556953911f9a12d406ab0ee62fcbb224625ef86ddb5ac17a9d073edea33b628b26464940d31fd01adc04b4bb100ac5702a99307f42c4563d867e1adf8c6d89ce29cfe3631a9a77558ac8ed6f354e6798cab834b56861f187f0acf8930084339d498e84251b51b24933bea41299cc0c8b9e2fd887d21f00f65456206379a93cc75aaf9e8ee1e6799c29994f060f071faae85484de7cb8ce538a12f9708bd05b284c82aaeb9954cfd22cd4ad38f0fc3a2e7c0ec9f69eb6932365d08dcb78a92aa4fb3f58a41c771544671cf5ab50c0ac08222dec1bbe31a19b9ea5775c0a008c84205487000ca4f0715eb72f258bfe6b0cec00dded239ecff80a479da3a98f6a78c6d7c8f2d52651bfd393ac1445a6357764c291440c9039300c7578fd96570db6d3c37edacd032c3df0facd6bbb813789bab1ac8de80343e29439e09a500838677eb1c1570820dcf282962d98b00818ebdc5daa6e98c49fa55200de5ca898ca1af5d9f6d25433d71c1c316b6c7df906b2a125053273c1a60de7e2c6caa013ee2edc9918277ec0a198823529b60ccc9c47bbb2e215559ccfe7ee589f1e7972105bcbc03c494b901404ea51686de55e5cf3c55e99f7003f92f7ce58a7da3d3cd01081619a0af21794ca5c2b374b9814db982e29c627d9387ad1ca7fcb405ba19f64801769fb67686351f834988d6d59cc1dce52165c097341b1d000a4ee4920fc9949cc86d50a5186e2562cbd0574503cf15f11c25fc79864928bb94c998b4cef5766a71ccc21c78062459c3a472b4b36144b50652728f4f033b96a66b9c2c2d322cfd1604cc47c02801082b96e77d8f9a1a25fc09e96813fc2dfce9fd8380ffb88dfc45f856f2fd05e29e85eff1dee226b487b81b491250619a709f82a5f3d5d9642c6a4468bc2112f2d12a9691bd099cad93a52041c38516fb7c431a47835629d9489944bbb2d4ea7f60322318acf990f78d5faae63f7d53ab2d051a01c2e1a211be36bdc880d14b4536edd8058acc23fdfb80b9ecb0323bf01e5c97c1b19a210defda9a4752f879346ea0dafde86f396b9ddfa55ce826e5a70ff98b302502f9685dddfda3c2c5a4acb2c3e0dd50428874916fc2c22063097c2267e479a041e0de8476fcd6ff01cf8c8c9cd00f15063c460558559f26c3823b52cac01d9969bf1d8729be1df23e3911e29f95832194ead463c50fca3a73ef6883e3eed4c6a26141d247ef4d6dd654d5d81603081153954285b735eb51341131c1a6d2ff21ec07d7fdfb67809329d2fb0fe3bb950a294ed8ea30a947b4018fde2915efcf8edc76289d43e3183d27477d39bfe8fc10232eab0ccf4fce692d4392a3ad11c457f3c39f865a92deff505e9e7cb504ba88ada5be222e6180b8a5ed300ee1d7d7465a6395a723b5187ffdc9508a7f9c7321e049067e00300bb9c004819ef9874e7bc8c0a1bd8eaf62993d5e6f8d5daded7147ddf65691e040a8b7b2b086547a7cbdaf3ccba4306f25485f6489de64b55523aeb2144666cab18665cdffb626d0f0b9a80ebd31c0e25495990c9eaead9204270327ccc07c64154dde0c9705a0dfe60b094d09f9983d173e537ef4d28615f7e28ea5ecc4a24feff93a9ab125b17b00ede64186ed76900bff1ce44530fd2f7b3e1666129a4730f8a9df5df35840e96c9bd8b1c53481d6244f7c97c7fb5fd9903ee4f2b0b8db894ea1668f9c8a0fcc460e5795790de7a09361dd1b2460aefc018a0dff3ef9299ee126d2b686678d6080013cb84b42d004474e2a71cb34bc5db5a9f09cd76241e2055e5da149a4435fe21b1943554f3546c124723beac17c3c75ac52530d3f72d0500d15c689deb2c3718fb3f7faf744924b1ff92627680810256e0eea4e54e97ef75166b329e40f37deff72dc4556b062d1c227d61b9841beb14020f206345784b4b8f88d52b7c3826e304c1f81ef83a595cd3058142c1174946ec58182ed93348374fb0716841f69d81e176e75f4ba3ebacdc1084f48e1fec3c7ad3831ad815a1a0296eb8948ba27c3d3c501fbff1f94f9ae1754283ea474ed1fcbf6d71d1450d3c202521432c61ed98a380bc58fcbd6e695e0d4f99436b0109b59c26efbb826fba373422dda1634a936ca0eda33155eb8b1854dea29a28b6ce1cad85109903f4cdb9a2cefc52836ef65200bea4fb895b4ead264f14549c599f398e7b427f460bce242b96b275694a0aef07e037393ba48e02b0ce0cce4cfcd47849470d7a917250483189932bc05ca7e7df6cebdcc0fe2483c6ccf87fcb0d142d86b293b018be83aac1de665d27d409d1b13c040dbb2ed0b302f1e7b01246dc4d2ec790a16f92b76ddd89e997152210cd07788270ade5ec975f6e9746dbb8b0e0959905343aa388a141e52db6bb0fa34dece0312295bb010b3225ca89b6e920621f31325d781b2b3f6fc48ae09f1d6b54eafd5f6029f926db2bda9164bc2ff9a789a829c7598295c910093675f993833ba7d37d285b7399f269bbf38b89c9d7128ddc186c59a582ce65ef12e9d505f65d6ff1a65ce2c636a4d5c2b3f8780d516f590f82e4bc3f1e5ab077b8fce96dfbb215be4209298bc3c32408f27e3775fbe7b5030bed03ea46b0f76bb9fe97e05b763be2da6f45d8cbcad893d41b0b4b47fd6e3987f6617b41d21732c7168e139c8c63652f1b471b13102fa0aed369c3b0bb8b12d5ad352a1df3d58ad95a7535f1d57620104b3950c1927920c89ae99b81d77410acb68aa46dd1aa55a21f65279ffbc94a8557c8b44030923fc4e9cad43fe4f2696746a6fa332ece32f43186167b2a139295e8abdf029dd5f2b71e0e4640120a666a42b5e64af2eed70413ec9fd2e7a94d77a27e9bed845daa772188385f8d99dc464b025233ef4943618e163284e324c3a73590f018f12564adf195b48f2b43b89fc962fd87b2d6c5581d96df88b033d92c4b945b02f1679805e7f99bdb6bc0d79e073f83a86acd9396c95851cca7cc7d9b0f71690d51a913db2eeb6f77cbddc75b6eabdc00b1c94deb372d17ba8589a69cc7bd0e057d8c747dbabe63ad7b5fa308b17a0fa295d2dabda019b3526f751a9b1c39bff20071a64adaf16b4e4d6d587945197894cf42bcc9c21220c1e7687276809c478add25fb35993b1ac2953c3547245aca391b80a0c5a27ee5cb6ca9985d33be189ae53e59daca4d7e54e82987bccd468aa2c840f798e341a12584efd0ff7ad5bc89ba4a18a78de2ec4e3eb67b53302e098822d175dd0007023943e9c71d9048023f4d58e948b006033f15d00e0aef5a80700147b1e7f1cbafcffed1ba40c76f0ff651893fd3ffac64bd67844ffafb9556efd66a1553012e9c4fa79f7774044511b9c0f26413ca7819ee5a721d8b7f65e72c30a5ab985214eabffc72e10bab08bb1b528c47d105fb3902b506453a611008f905d92817891a13926c0760fc0cf64bf2cda0eee0c300241b85ed639361dec5080ac984ed5f1ee01dc32287848a029e19f53361f24c800d551dfae0cfbdff1a03f31431faff5bfd91aa659fd8f62fadff3e582d1ff8875a0574cd82474427e49374a18e57f6a103583c9ffd2f0149131367a090460fcaf0ed18dc5ff6265666868391416fe777f9d00ff83a2221292ecdfe891399a1427c272beff0228423c745ee84ccef4effa1ebe7a2b9203841da526cc3fb3b56edb7f5699c55095aad4e5cff203a7fd87bd78ef1cea7582e73bb32189600ecf02d2511c2238580193ce43d0041c4587a0892df473088aa413de99b321785df7d2eeb29737eac142305702ebf4035308be73d909c149c140a2e9181282972304433b160d8410149719b069f605d11f9ea218117934ce67c0f80c0c7b31d9a181980f82e83598e739088e9b830641b68c1c3d3006c134f2c0b27ee0534d98c474165710d44ab82d2608b6ba748be4043d98f928ec058b01d63d5921dc289fef0a8b31fb9fa3d5e381822b5d37617fa43e05222661a435ff4f211ef89578d057fc4021d4c279dc06d3a3b726f327c0a32f81d25cbaec0841c425af0e1d2d07edb739aafaffd955af06b3b6821889a3c7e1e6188ceeb9c97571df880d8d5bd82966fa7169d746cb6d473d16563d2c39fa4c8f911df07d23d826781710c81853d3c244b75f87cce51484c789ba333af7fcd4f3e4f76a313f10c0faac45651c7c10a31d04736f64535cd33894dfe82360cef3cdd6dada89a6cb1fe55991635486273b6ccba10f9e14889d76a06c8507b0829488d602c68c559f1fab98b445f3cc4576b7d33df747acce88ac7d21111c4171304502bff78512b69c5806926dd12a99ee6c707a6e4ba85f4583ab6bb0449d6b524b52d15ae20137af7327523553fc231a91f7f28a912380ec95d977f4fafe56a63256805cb4d43ba5fffe951e2f611cfb3ccbe101b305ad6a1f80484335d8882ce131803a0eb84ae8ea254297107e4f9b869588ad3dd24f678b3be2e7dd366a917f1a3c60a14a010e8151109fcc8ade93a7d8b94c19bb15b533808935cb63dd80572035faf0b47b1c1ff48b867986c85a18e126f709077e512011a9a9c04073f5c581fd4e11d59ad132669f33b2eb2ba93f87e31f177a1418559e5e79c36c18faba200f9485fb0f86f3a71131afa3d98440ad89a2721218fbe4d3d410b88dcef35110cdaf43b99c5909235a468117c50821612e3f01485120e1f8f03d1de390360d55964eb7489944fe9c4e92daf4c71e1279df462e87a0d8e65aacd322e46c3ed780c2152ba4f1059ed8d821b64890d103e64dc70688304732659b900b982d92bf9de82c6eb3b53923935aa6b5b7d0ed91c2598b569957d1fae71a6bfc3d3c37be40d70e8955a259b43d56392a4ec50194f99a3eb24867cabaf185622813cb6f315ae56d19b0269fd6fb3b7b196dd93deafde5d1ee27d3af17a24e14259938d95679997cd70a3a37e49329449673de859b9567e532baaf72e1a98320840242e5daa2986dffa215062bcf094016d45d25fc70bd40e27ab63baf9ffa9f6723c941c4ac11f8bc221dc2cc8c60f01e0d5061b9780e9230fa1c6997d201f57e211df82be0b0a64331bbe7ef9d508f5092c67ea9ab82e343a0058ac78352fac5c4ff5fa03169fa1d4dab8beedadd87ac10ce99fd1ad25480699f05e107e9b1408fe89b70be8ad1d0000985682358850076e1b7ea6e0105054501f87a9e46ec719384b4938ea4040f8348e6e998dac002d30269f84b7c2c3518f91f1b336232229bbe9c6830d02cd01dbe380501876c84a22c0d255c6b46dc9f32e3e7bd64447f2bd97637eee0acc9ec74d568be5c77c36a63342c7280b572b34610fa196e6e3573ceff0704f2772a3d22d500c6d76a1f362b37463e93afd570ed768500614fbcff00ac0b0255eea9edff4458d20eebaeedbd6423ae15538fd1dd204ecb9aacf46ce60965ad8b9766455dfb78d0629251c9b8e420ab45457d375d8f4b421bfc998e3f7729c452ecec699331c5cbf3c81f36d65a48b929c441e578fc096d33390cd2e09afab9720816e0d4793870014b19774fa58bfe521e2f023689a6087dccd146c36ec8137231a7f9cdf502b31cbd9a5ab90745743ade922434c25f0a0a1b01373bef4e2371c0bd633ae5f1de36ca9a3758d1f0ace9b248a9a3000de2b4281d32807db123e5b11d911f3eb5fd40ac1087388883ab05b3f21139a2fb7a833488aa805168900fa91e3981f3a4fa1452dfbc2353d4698d32b04bbd2e81b3000730311271bdcd8967226848193f68ee0f35019d513e621ec51aa6f24d281ac0e8ce236bb59722742d8a24b0ad7bcc8630b5768bf0c0eb8407c406648df17c62689dab49d19b0045a326de461197d81271e5e4d19b225d9b41058ea041b93295432e8e70b6388932484ece80fb7a0a9d7b66c0cdf8d0fdc58815cad22b303c3c02f079bc15f8ac4d0b3846532cb7bfffd3527c1b751f76a3ced2ddc90006151bb30a8087112c65c009facb37c57b4864062f723af35422b1dd04e326f1aad4cb949e1eae6928a5592724949236b8c03f420ab501cb7394ebc3408d51846475f9553040ff533806fbf07fcdc0a02aff0fe70b5e00808b95905900bc1b4458bbf45322fbf4e9a693a6c388533a0e395c54a86427a1a4b8babcfb2599c9e088124df9465bf50db01a2a42a53cb20c4cec31c19ad3fe0f18ed5526720cc2d4e1d687b3076e4c363903e7a111a8fdeec8de3a15e7016a5a97dac6a10c5493b7aabeb79948d3b086f849b615401c19ec9c99c79761481364c40d27c537deb181e911c55d28ec582f12ba1c17c617d01d5c9e7704d21b6978767e3bb316d405c53681cf031da113e550d5856777dd7558421d5212e507cc219a19d188e4e9c95656eb179822afb092af8762a2ed10437a3e7345a13db3e9361fc6cfc94dc8903fccabd8a83af4a97f14e96212687804cd162449ea53889d9638d622868622b5ec9dca813d185ceb540add9acae88e4a30899c7b3c30dc07c82d2e43657985ede67dec4b2e1a48f828c03d71d54153462c10c51215232277c7c24bb7eff4c1fad38c35a98126b6b97f83a51a2a2cea9cdf067acdade28d505ff47148b02b58be6b2499f6630a2c38b82089d92506d6da6d2f56ed62b15d2387754b9f2b23e445426f9b0692e81940cf952c7030764c0e2d405ccc118a6b52517a85ca542afd2ffca06c83b12d88b1b2c349053471be0b446149ddd53c46c4ce928be8fd65900c544092d7b8fc81810af88b52257e82356a7b4c14a3fece490b049db9394221f8f772da713ea81f73bad1ff29776a218c181bd0c2cc3eb464012bf702f7127a699f72c113c4e1a2c101684dba61c9eb347f112b9b1613dd07feb6a650d32d8db4e7cce328edc545e3c42109d675ba94223d268db9130142ab59f7aa8cea9c25f48f68645b9e90ac09eaa16aa168e42e0bb09271a6dfeb12a8131e80cfa0f9b744bb64f537c7fa201e8b11ee2fc6cdf0fdd2501b790df6e5149954154fd051f5bb9d06b09b4f34343b7bd2298c0cb99e0244040678eec7197b835b0645c671c320fc343664373b68f3b9fe95495a7732d8aafd85a158d9a425e1363cbb7e9ada0b089659c4a7d7e9c40d68cc4aaeef6c198bc06785d3a5b3840fac4c4dac6d048199cc1984a038b888703adb49b79866df96749d39575cb83488264476f04c1e06a0ff4c84d2d1e3a9b18500ab1fa2286954444928c01db7491fc6b18eccefe7057679bda4bf616b048d4190a41e2c83f619f4ef2e3f4a2c54715ee37ad9d144feea9ad58bbc945d3184673a0366b0d9595e50edf1869d6f6b602fa4d959a0be79852a6cf3899583abc5a75766166a7ac088a3a917d091bf93eb13f535188b982a129a65b89324fe9262603c9c586e19dd66f1f5c1eed3d9e203ae8506e1b8daeac06ed76fb0332bbb71954858d84742b06803df3bf6c911620aac84fb9188e71bf73b42e7054615d944a14bcced13b521b9cf393c0adf8a5f84d43c9f8c9afde4d390e1b3e39c587cd10eabd5b27893f319b980d4231c5cc3b8a0f4ea2020035c959ceffeb8bf0a115f1773a1848d955619320a397df3b5ef26d09cf619ee9c225af25daf9511fb59ffe080bc3da628f4007423a276e4cadc029bb494eb1355d610a1d4cfb2e845e2d66c62109732139eaddb1dd2270cd5ccec1f8d73baa3969bd91d6d54282172e2112492da7fadff94b6f84c8bcf9dccf21e6639740e03d5592d9c2adf958e833a6aa5c81338d5b8a74638159089667154dbba7dbcb4d5356c66fd441408fbb6049042c8ba5e738a683f8d39be17bb2ce876622e1739e8b2bdb50ecf301195cf609e2e7f8d1ccc29063dca4bcc972e04c20818a81a6d254ee39473318e9d238f8bc501763bae936d40e0853e36ce18800850f04e787f74dbed96597b9631cab9959b11bac5afa100d8263377191af58a35c210d7a2ab7186c9d82c96791542025b410056304782061ea9cd2564f9f490da9f78d41fd9ca8e5ff514d3196e4ca4c1069a4825a2d78494ee8011fc6c82beac8cba8beb32a3e665c31636a2d103ef6a1e0d746afef87801ac340672dfe7476703921b90199d8c468eadb60ea0279f0d30400df150d51b4d6a65f30be184801f31ce78a23250e4d5f7bf6b08b2d47b065d60c45fcff3b9e1baf990855ec33710b84ad39665ec72204d53e34f0aabe7ea876554987e41642e18218abd622e301b5e8b023606796ea86d8ffb6b1764d0cdfb59dbe5fdf31105921f80b60481a0ce42312267093b9a7fa0b2e639a57d1da7ad1c33bd4c4740d2185c0c9282589276044c63e0504b59ea911a48b708a5669a6ed29f3c55aa94aad8ec89a638d12142f9486f9c95bbe383019f8eaf864ad36c4c19acddd598d5b0aeda892ecfcd08956e4cbe3300762d8c75ad9bd82a24c554451d15c6e4a8a102ca1e6ee8796b5cdb29b1791f4f0d05d11c7c2f2766b887d2e733c5c8292ed961b2a2911ad7e8942a971df3c4f77bf2a80ed58724222773ef1cc137d89aee4f6cea15c07b3e81a776b9640a9a310bedaaea3f41143256d8483d0faf45a24e9262542cee04e0a9987e625a8e8aedde0edbaa56b41e62ce71f751cda668ea64d337800f9296d330220e04d508492a8f8f6877e99fd8f04486c7dd532d2b8eb5e6621cada1de0284c76b5139b4dd71c0d666dd566962b0b9ada4e307b0ed69a959c3b246edec862411fbf3ec8c1945000ac1f5d6b5c929689fa48f3bd2917a4e8624ab548b5995e6741d291ed1be0aaac881b8c71dee1b5587963581591a8d977af2aab53344925938de9df6b7c75548367fc41e89d6bd8ed93829b4fee5360be6a98b4ec64426001317fe812c262e56195dcaadb5f55166c7ca325c65b4b765f7470be2cbef79cea524b801154bbd51951aba359dba19398a5b53d70fa16c6a7d95d9c154b12a2708af6737fb20cce797394b664f4e4dd5d6b58cf8bd602ec22d6b040963ff34fabf00c27a549311ca5aa7083c9ea6c0710c7811dc8d8153735338329ccb0987b9321ee347706125660a270bce68f130b2881205cf5a405efe0eeb8067164edb1e064985245f91fa75149bfa9ebf65aa15430381dbcd091f9920d8fe267067e5e434196ccd92e1b2899dc7bcccedd454d306d8d452cdae7909c15c3df711b08054b7d22eb62cf955feafba03e5b6096bb154506897cd3b17b9b757a6cf1441eba240d96aa12b504f9c8fe14c4d6f08ed68b3b08d3e08cd018999f96cc669afc04a3eebf9151afa55e674b148cb67b346dab8effa7e9477862334b9ee42bf04fd1559f9d5f20b90fe6c66d9c5c20e5f502e8f3f77e4c90e6294f9a28a137f8b9307a15fa84f52047bcde03493e1c1da32070cbc970871e6811ffbb3bb74458d068b7f7d65baaf9ab4abc0c6c393dd7099cfa1a720145f78d662909d58a812b003423af4922209726c75634805c9eb76330a9bbe91bad402561df01cb33a03d4a95e0afe6f411daf7abbddb95141519b4b49996cdc40b0570390fc1800539732badc6dc2cf243d727a73166b10d243a462b325f73a7fe49284136632ad918a0fcaccc2fe42d658f2c8c8d9a92a63207cd9fc05aa964293ffac36fb0f9e466e4151f7c26618673d002d3f324b74841bc859213924eb0806f27f048d053dd3a6a481b2890baec9c54919294d9e5edf1f3a08b7b660c9e66fb33f967e080f0a618cbacaa36b7619b2efe647af00f4aa2ba8b1e2849ff1f754c665988cff1fcefd4ae6bb200f67fb448902e432041e4b84160d54205e55493af9389983163f12bfc472c73c23d171ce2427d7df3cf3df24d17e25ce53781d27d0dffa8e51ac020f2f10e025e9ed16a52c80cab4e69cf86784f1ccd5ef45fc69e9d8b6b6914636d9841042f6de72efd50ddf0ce40ccffe90355cbfc728e5bd11f58b6716c232165808611114b1c8021652c0c2e73df68bf77941f9942d7c90e7b1fd714929dfe14e430e7245502c88bcca3a10d2709142b9028ac7329d6cf8f705262bdc82fa02d7a9703e180f87e27cb01e8e87eb418980301f8ee3e9c97844a96c68e3d986b01497f5887a443e14b50951a1baf1444c0813c280844443990f8fa887f2a436203ab4a13054cf68884b551f9ee67cb01e0ef3e178b014870189864442195084e12c2512f1d09e2da5a1ea50860dd5dac371a9d1d0480813120965281150c6234a653d229fcc47d493a5443c229a8a304c7d361f8da70a65155539216e249401415136b40d51d42644793620dab3a5a8cfe6b3f5683e9a8fd693aa401448ab286e88131a018d523405b71e2ab4f1d0a10da5a1ea90c65385b49e0a54531a5084612da58d50dcd02835f2d17c604d61a88a0dd59eac52a08ad2529a2634e219f18c7c46280d4813e252a3216e24c4098d80b8a1516a848a239f51cf8847890803472eb00b9c4f9c5949a554502915940a2aa5825a49a500a5f470d0037a3f2f358468ab1a8da919149454c7754449752d1d5152ddbb63e9f9f92a3b71e69eafc21367689caf3224cecc385fa527cec8385fc5489c79399fd2b0f6336c0fa73c343434d4c2b2a29292f248316064d8857232e2442b3c2b3c11866f55534215d44a2ab2dc8e6b51b9a5159eab25e32e26ba5a5c61018260e0de7b6016dcf522e3af071a2f7f1f419ce9e12f9dc6df3f10677ab817c8af1413f8ef4b7fdf409cb9f714f307a144107f41fc5508c4944a3468bcbcc89021e39e64bcfc3260847c600ea807f581974b68e600f801a87401a480b817d03dddb87102c22ac5bc06e401c00f3043a900bc7482d6870b759ac140b607fe8b0c03fcc5e717c0698807c13684f81095cfcc85f80cfc01a6e4038d19b6877b192f320330c0cb87b89e03ddb0502fe5f3328410f77412e22f17ce047121aa023c8817802d210110e0409c0003b8cc002e8020218208e2e702c43c882ae637a205848d976e8300021880000e04d0444121203874a1503ecc23c43d3c41c4c4fc37ee29f20420008f11aa6a3c00af818a00f80f55aa04731f6ee39e383505704b3f430c9462a1211eea4101459e0a15734f52280001f86f8d7b92a800fce00300ee034c09880b231453ef2e9ff8ce128a42ef2c9ea177550af56e0e3d0000b8a7d3af04800ff70453baf3872b7b78de49a02744c3ba1ddc11824033aadb411410a7ec6dd2d1a787dbbda17efc77b2e7cf741f937ebf4cc9b8375eae1211e6714acfe14339197122948a10094676969eada7f6683db4c70566c1b10059155c610122b100c5600182c10294b10061402aa82ea527a527cea8a05a2ecb5db92a37e562a1826214d4096a84e2ae8be3aea1eb2b3c2b3cef9d4a8f0a2aa587537aba941e15d455faff627bb88c7b92f11e2ee90820337cb840ec0c1f4ec3870b64c6956202333ee33dbc5c192ff7325eee699886a561ed65bcd0f08c1e64bcf420e345c6cbcb65e989306cb11eaccbb05870ddcaca500b4b4f9c39113ac1587a4e587a4e587a4e587a587a5886b0f0b0ecb0a09a0c0dbdf4f0f2fb97af0c618760e05686e20cca50cb5786567856522b4c5698ac08c5992bb41214676ed00a509cb9402f57c65ffeb2f21367eecacfcbcb4a2ace0079b92ba92f18e96e25b5928a332ad795525949a9aca45a65055ec1752b2b475e7c7ab88c4bba76c5489cb15220f1cff83d7fa527ceccf80522e34a310119ffedf92b43e2ccef69c665c858e1913143c60c6befeda1879797d3f00a4f9c9121e3e5d90a4f0f2f5fe1b97f59e1b12f5fe19921e3aa08bdacf08081eb4e54849aaf221467505484548454845484321521141494139421f805141414141494a17894d495e27e5a809e42a1a0a0a0a0a07c81eb4e7c844e4e4e4e4e84e2bb132bb8ebdd890a4a05a58252d951e15119a2d2d3ac62a4f92d2486287081153f56005911648590154cac18b2a209155c50d140f4a3a20d3f40f448a823b56207aea193700d5c577b84e24b0135e9aeca545f40d081eb6a0f1073e03a3ed201aebb823a3ef299e98342a188608a07a2e2015df180943ca0250f888b0714871f723c205ae80a629997024ad2f197129681d7928ed9901c3db826b8ee0afa00cbf0e3d9878ff064321bbc2138054f392f27f395415e4c94282ec55f493a5e08aeab3d492e2096e92ea0eb0a9621400a4a549cb982f866433cc0f1af0d3c1ceff11c783298135e293e2a692664775750c73321a79cccf7716907ecd97307845be0ea0faa119689af3d2cf352561c89a2e3d95e415c8a9ff652f262e2a5bd84b814dfc58ebc98f825b8f7ee0a1a0961531842937e292178d19d884708402de2893319d7d3b1366198d9d9cf8b5901f77a435111cf6544c4831dd1b0673f40571027d4c2c41ac202d761476a9338630da94db25b9bd426d89138b35d85e5123b525dc5a29cc59e9c8e2c570517504de5b37e224c509cb1828280807e7eac21430c715d1cd7d2f2ce1aa21d793860c7a0cdd6939311cae86eb4d244955a5a55b134158bf2ca5269756af5341c2b129ce824fa769388303108c6b7cb006e886d88524bacf7749deae3514436fea4c90964720299c020f8f39372eb3d557824c28c544e56b8217187a5c9a38a91161929f12a2a2d3060a0188930b1654884892a9771535a82865497cb31ee0985654695f894abdc5350dc51b9a7263f1126b61c19c128c68e8caba534040f89309144fa76c4c8c9e511aec9e9c44736a022e3a7680405e5c8bda7b3fc74bcbdbc1361e00f0c824c6013de893f1126fe7c933f1166c63dc938894cd8481c72947baa8e9c7e7e5282e29108c34de24e1c128dc423a2d72b99449818bf6d4c827e4e7367742283e28f1c228dc823f2470689b8d73b9b4498d8121461e23dc926d590c984c99c734e2695abdcebad9a4498d884c956edec343172e427a8566b27c25478646322923bdc1c321a7262ed6c464470882888833bdc0fd764d4647464c46434774e1e9313367212834e3ad9a463b54347dcc5b570a21bb98c683b5c8fa041401c7c179a3484b77b424171e69984980cd1265abcd630fba1b509f402d789786a48819bd891ea562fb8149b702902918483ef204fbcb491275e4171e6e4dbbb8b49c76be8979138737269bad004db195d1a201aa02191068827c23c1aa09df8078432c233a4c708e6c3f5641ca3448b9a8cf20c52831042399374818af962848aa55faa0b43f8062fd5859deeae7e55346978796955555517c624e50a4cbb6a8eebbab0ac8a2428af9a32327cd6f6ae22d007cfc009c1bd775272a93214e25ebf54153e0d2b9f327cbcb17d7f346008c4f083a6331c03cee6a1b85f4a0c4a68d8f05c794014aadfa9b43b1209ce24ff6ca783a38b27d5641def8da88bc8bf2cfa4677ef8beedeb3af9f652670f0b0ebcd6fb88ed7854bf028a8c3cc5608b57c35f39250c932d5df9bd874ec7b315a456fc79aed725adb2abd7cb66db7a38fafc7ec7b31f576dae36b28afd94ea72b791b797f54af1e2b0f79be9d4ef35f531dd5b7534baa91af3bb4bf170335bb59927c651dbbd9e9ab761aa66268473dbd9d6c1af9c7d5dbb70b6b8dec6abb9d4e6fd7ec8fab35ed76da7de0e8f762e829ddee4dec6abb8a877cf592a050d034fbfba2b5fb5e4c4727bdefd5c0e02b887a31930f75305805d902d083411f2be15e6a0ba9a687f1570bf5d5cca5793b9decf19ab5c9aefdf02d5cfa0e38f8aec505de9f1b62ce2df8b4f6ea54b336d5b56fa1470b3bcd5507777d0d96a9b7838df259eafaae2d5d6bad288717050505eb341abe2a0f7a786bd4cf93db954aa3dbbde54e1f37ba9e46b53578c0d577347694b8345f6f8d0d70d5bbf8ebdd0ded95a5411bffaa11f4f1345c832646fb5ab3f4a6d8cce2c0ae8ed9aefa75352ecd5bd6a6fa6b0ab5969e2d0c33ff689478864df34fa869b8c5e5f0d7c713e2916131042c5a5e0d91c0e1c0f6515d88bad63a2278e5e146a4c1a552e7d2dcd18856666148f3afb34c8d86760bdcd537f8a53753fa9b79cb9b69e1de0c77bd992bc2bc186ff48d3b6461e7a7c98f90bc0047f9ba180b4a8847e20cfc611878f50f9796200417871831c2325d3ce2c3321dfc893c2cf3525820d2f0110a96890d1fa36019201a02d19d06bb780436c141f852499aa0580bf4d18042558f858a61099dbcab7a9674075328346514ab08fb3c6209cd239009dcf6790402cf54f574d3a72550d51367541ec026953b7d228ca47f3507772aeb0eebf176a41daf757a7af447a716ede8b0eab03efaab29f411421df25d3c4d8cf034915aeb2928b6937d328fb4fcc8763e2c68921325a5944c5a4aa01d9e213dd38865391b99344164bbcd92fa07080b49fad51c47c0548491f451491f023898eaab29d422172c037d3ca1a68f4ba88d5cec80a3efe292964ce88d5cc4a1948c437126c6e565cfbbd25bb8a1a1a1a121f9b88465e8e523139e619384a98ea8381323fa48182d2c2b97bcf5768f091cbcf58b4fb54bab69da69986adaa9a69d6a5a8a62d9a5cd322ccb8e65d9b12c8bc29196c7b8c7ba2eed755dd7adebba2f0505cbc69e6ec215fdb8d02fd5841434aaafa6accdea12429e27d45dbdfa04eaeab0cadb714f57b78614b888ea973a32444654c3d48b81bf5228ccc28426bcf77405248fe879ebb0095cb4eeedaac34b29bb1b554b4a61cd61bdaa6ed9ee46ebf4f4ac724cf8697d3c21f6612b82641a361551140a850a32bd43fb524a78a2e10be27e3782111aa6b0e6f869d1150fe629794b1e17af8b97042f1e54020a1ecceb4e000d2f9ea984502814134cef50a64bc0d1309f01095d7457832a1012b8e8f87a4555d2510bc2d59f87e3653f42cccccccccc4c648340323333f361642aed6bd6a4bd81aded70299e0357c7599b4f058a33f466d78571dc158fc15258c2a4df0dd76c9d6d272dbb7393a5593996f585524f87c31d79fcd091b2cd31eb10a44b2dd9eedc7469d7ce4dd5abdbc9045cf7743dc7fa632158da1b4bdaf7ab476cfe6321ba975a32a471b8b987651e4cc70b7bb8f4f8de580de940b9081c3f4ac14520ded99ea00e6404c0077404cb588f472209253076b4924bf17512d0463c125c8a3fe28838f3239cb1c08d2a7b4804842fc2967c92bcbc0dd0e979c9c796257838e4e395d840fcc0082011d6e3e93c49564b929925c92c8326698fa0b7a6c44eaa48d53d42bb62d3ec92e6756197bc509367926b68065c77a53ac532d6e5af242cc397bf7e58e6ba7c7751d1f274c94efbd02f8506a136c3b45a149c8cbf7e25e192fc95e2927c77cd5ff7fa8102b85271e6e2611879c948e0e6afd4c5c325f979fee1e625d5300ad5f1392854dbc4bfbe6ea7d23fa494c743aae7f5314f62c0eb797d364ed330650d0b229088d7529e464d89652f9e96170f24028a30b4fc358465626418374be2ffb0fa06a21a3bec496a804e63b7880a1460ca48fc97424316fd5268086a524d9cb30d0fc7bcd42e7f05892e7f3181445427cd8b808a16c1165a6449f3d0c426cd92e67dc0a5fd501359689af688facb7622e042574d23c317e5d6e934e9087a92457ac07692758fd86e13ef8b26d96573c3a6e1d8d536014dda2555f746f44517d92980297b13a23c98825c28148ade26ac2f4cd905e06114e03554b1a54592befd5268e841034fcfe897d262480ba1b6fd525a48a16f65977a9e86cb5f9536fcf88e7b579dcf97e3b5e124163d9f0d5f3e5623f868b8a23bae674a4f979ed7267ece6b2d9008eec18f11767543c0350ed71112c146c4ae0eab1137fabd18187dcee0d318035826c50c44606518705dcb798643a1502730f18f60991bcd47825b52fd9474a7a5f416dcd5683ecb3c2dbad33a8574955846f6c8ae33f43c2a5e0ab6c8c8b785cc4b0979d1fc05b00c771b5a9a6fc4bf0813852416aeaea94eab5767ee5c73c44b13a9e418636513affd5523e22515804bd7e33bd81d09bb0b97ae678f57eb7e8c1a0437dd8c23cc3419d2fc9b6ec61744be9843f32db25d9e6e1675699998550b7a4cdb25f1b76f24be12f0a1c70858e8ace12da56ca7e1f948afede0a37c653ddac87c3b4913add8c3dec4cd3ec25c8fd62beb5672295a2602f7de0d3104cb743f00cb5c325d0116c0321dc70096e95c8a6099eb05601912767a520dd6d9b1ce7e9db2f6cd3e138d5a29cec05f7f9c81a6eb9ea0094213e56ac410cdd2ee783506c041e23144f36f34df8e9e6b8d8fd992fe3282ef63765f424a6818fd524240425c34d658bf5a8335bdb44b44255b4081ea78ccc647a5e1962a6d644105d47549be66230b2ab0f05d426a520b295096a5492da44075fc0a0282a4aa0a014164d5829e39ab16f4747c4a153c52c6a3c4584fea5b226d6559ed126f49c78f646c6ae3235e937689ace339ed2e41c28e7576edc5a51b438438d1c40952423ea61b7db14cf5eb1acb58bfae4b9699bffe685cd7e601555c994079081c5fa16a414fdbf840409094843f36b2a002aae567ec973243159a1fff96b48d0f8b49bfcb4bf1ee121693961f02c7fd526640d2afa590d61a5af240409029b4344d4be27b03db25658621fd526648750ed4890cb5c00633f09c06cb74361a1e3e059e49c35419b868d8b0a5c7b68532a4b430542328b827b56da87f9cf47bafb6f670bcb38d5d713001851ebfc3f7a7e560c248fca125bf17535d1e5a4b07b46ef78bc4035a173e6b78b31713b5495f75ab7acf6a0ffa62f8ef662f8621aa2bdb5dcd7f2f86f9043d2fc7a51f5ade14d85c859e867f34badf9ed0868bd0346bc33bf8f0f0cc55e05eaa0c3e9dbd09aab3d64e69d460dd711dbb0d7d969d542351a8ae971dfbd5b385a8aed4d2e87b31a2cfb3dd2eb21dbfe374f0b7dbc1ae3a2267493c78bb96c4236b7ed6ccd5c83ac736854bf1a26ff6f58be9b4d71e596b8ff170c4cfda83f462e2b51be3c56c9b85a87e75074415199d86b93833bab2ba0d3f7bc77f45e84c21cb68984afeab3ae0996bf899cdf662e2452f26a25abe98f8024ea24ed0f514a3f58afe5e0c5645dfb4c7a6dfe871aadeaa65621389b46fb46ac76ad08b9d8669f89d3bf8c7f0af1a5997e352756fcf9bc225fec6560efaa5ca600386829bfd526580a2a10fb5d6aa9dbed65aeb1f8dca4128a594524ae91f0d8a070cc3300cc330ec8f063607ebf431f31f5bf0e2927568fd590e038781936d59af0f470ebe655d7b38ac3f1a161c58585856aef294a39c85858585450e282828271fa1a0a0a0a0b481be8b4edf7bf5c588aebd18d1a1e5206e7be5202eb3ce415c25bae8dac3c11789ce5664063aaf75751a1fdb2e47477775f6f90e36ff0359677789accb69899d3e1b1f59cfbb44c67ff50692a18b9e8d617fb547d5d87d5c9ab6935d4dae3559cf63169bf332b451f1b30c6d54a71256975caa984f99c74b35df8ea6a7853d9a644042bf2369be924b55755d3eb49eafe02f28ed40e7e458e6b235d25279c98f4a0d763a954d813f60cb69e5b4817fc46979ade7e992a68fcd4d5f59d8a49a57054fd3cf1a8b49d3fba08d8e7b5617e417b7076d4c1f5a5b128ff8ead5b5a91eff5a4912ccdee8ac3a641a70cf3a66af435b1dd69bebbaefca7b694f7a416baccb5329adbfba43de3a0d5fd8af57d5655dda1fb02dcb3a65be11f2f3b21dbcc40e4f656391afdb618797cc154b967cc8a761d1b324c99624cfb74ea565008d757809ab0ebe7559c3b7acdfc02f98c0d1fa46010d3f50a3445fbf1e761b794beac0aec7783dcbe471aacede3113d9859d862fec99c42eb1fb5e0dc955c7bcbc9dce755978cbbe9e4c449d0b5a47e629bc8e97c4444535d5ab5750fbd49e69c79e6516b39c7d95fd01bb833f6057f0c1c77283f72fe6d954c73896a1382cd8f4d51cd96fb476a803dba63a06ff626ef43bb51c97ded5168fead81565da61651970f1dcc2a577edbeea10bb9d4e63d72cb487a7899aedb263d9ed6467a7873672075b7bd7009d29f47b35b4db65af21f6f80a5c0dd7f17c23dbaa6c370f7f5912bc37b0ad0b44c7b4652b1d0b5628a0f08f86bce792a4f7e2dbe1c44e61195ad12acb6e971d7b56c5732c933d9e56563bac3b9e162db984bdc2899d9d427e306ed5eb4cabe1d2f0f076168d105af65200fc657166c394e6eaf0da585f35eab48e7fb2d2e052bcf573c9825dbdcfcbc5f75c58e61d5fe3e1881d3b1a199c41a00c03ee3d85d2818bcede23e2411bddd515cc1e0e8823eb47873cbc18fe7b44d0d0c18b67e3bdab7ad086b7cbe91fdc1a602225e3a8a65df587dc1e8ed41cb8e81b51c3c78b1e8e87878eaf20118fbbab3ac5c15358f9091c57817a496e240af584e491a9a45af220119089927e67984122242a561d4f89755dd755f17545785d576983b79aa08fa911b507d7f2d1fe902de3df8b2f06e680ce730c389bf91fba9baf5f4a4914cdaf33f0703071a38bbceb3c351cfebd5bdd204ec498aaefa09884b04c4acbce47cfdfe82ea583548742b824cf2ce03a28240d2d7f7ae7228c1c883461074df01182a7957d26685192082ef0010a7a1005531027624cf03b28a617c4093659df498009beb23b0930c19f8e8830f2b092b72ebca74bf9e6a0822c147183188670062b4ccf246740451474a0032441488883e9998e4299a01096f901f2304b1e2821d22efd5263c843df68a9239259cb4bf999d3f1702e697967f52ea7adbb44756d7cdc255ebd8bb73b558f56fed51eaf0a9eae6e91ebf35d4e77f0363ede92b63e977855f0f47c5782aeacbbc45bd2f3dda9abdbc1c725101024d5f316019263230b2ad8c8820ab71b41c7c37739011b5950a108909cb7c484fdddc42fbee822a8971600018a1e267ce831c20f0ae7036f491741d9c8820aa81f0808921a01ea55c1637aef4ad013056f8909bba8b7c4f4de9d7ade0e12f19e8deea5c4c084c6815d04b552862334c10614caf42e909ceba2de3b7978bb0f74446274863204210f4168d808948ef7e5b0cee48a0854c65b2bdfc91d12b07e734cf1d524ac57f7a4633a3921059b2acb9e744c50e2c496775e2991c83139210534491befb45db44caf22114df05dd967923c73999893cc53e01d9c08512814aae1a5c58959441ba4a4ba42b8e6e0b8f8770618450eaee53c73140a8532319f0145885cb81f343fe509359ba153a2355973846188366b8e30a0aa9aa30b4bab9e8949c30acef9b8872d5ef47040795386a0a283800e3061e544d0143dfba5b210ea7792044a49238e80a3af3640a7a5d48130071464e2022e1095101f5f9b776f72fabde3bf0b535924e997cae207dd895a82a1494b4a652d42a73b9daeeef5ead549d5bd1a0281c23c70365c04087750d1752f39abbf47920e7e7cbc6fde265ebeaa7eb10c7705b3401f3bc1515116f2f2f25404bdb8c969f95a5e0cd0c7fcc8b686143829e3693803140c575c9ac562e8dd6abfb874801cdc05adecae23361a2ad002080757e421080a133f053a3070c311505838431a52d0c50f94744490140029430a8078528085322c31f153d05e40820ca86052073a2031c1bf7e00a040bc3713e3bb1d0ca3d330bdd9ede0f9f1985d223601c3742f10d23dc5f869f419bfac75cd3601e333ce624f2d67399d96345f153c550b7aba4242032efa79a12116dc4bcd4149772d2d2fdf71720e54c8e14817498628a163fa211912048a9ee987c4064a6ea0a465fa21b9c10fba6897a09f7ee987a406461a490d86b44b3f2434f0a2a9a64d4bb22e0facabc3ceda62d26f89c5a4ab0a014152d5adae9a6edab4a479cb92e6ad8ef5d55ab5994ef6ce387d868cbb731377735c725c7614604a818e893b77152d1a7e64776e1a9d64776ed22eb239a2ab3cc6cdd1ae32ba392218f6a46342b94e6c578a1b05b44df7a08dee216181503734b5d89d9b4ed7e9a79d9b72b4d7a39cc59e566e8ea65de5a79c93abdc9d9bb6a7dc9d9b506ecec9ddb949bb4e8c6e130a308daebd5ed3868405410d2f8e7c5e68783bc055d1dd2ce2d33e1e505fa7a7314dfb76f9ab4a60bbe85c9c6942f4edee8cae14d5754cf2562d42a7ab796d22a063e2d8b45de670d709a250dc085eea92e6b73b71d3f6eadd07babaa47991e0e021907a4804bcafea048eaa4868d7b6aadde08228f3bb2084f09d23647b131b1ec2dfb89ce08bfe717109b32497300b6237d08b96aff83fb8f6215127e80efb8de5c509bee81fd7b4918feff06256eb30ec62bfb982a0e004cdc48faaafffb01a043a7d55b7dd8d35d4f31586c32d6f916a60aae32b7b45fb835b9e32f7ab81bdba3a86f6902f0c6bc0f577f8abe3ddbed9f2dac4c377beafb2439452ca28f9baa219090ba868beec978594b1f290b386eb7829e79c91e71cf1e6b30a79787920fa2159419046c282235d3d5e5a124aec2c91728b239278c2276ea124967ec4fc2c29d1f27e8a6099ac2792150cf57c015866baa13badbbf7c345774fc9eb1e17d3145f8a1c3784d563f5f7e0712a1a2c7303bfe8e3543c2cd0fc8aff20dff76ac05b73c0aa16f1170f61b45dbc756ad9ce045dfd040448ce95c39d4e11d8bd6e57558f3caadb41203fcbb08da7109e1f0fabcb039edfc232d6e75d9c30d2957d4876a6e8cacee658e6559fa7958578c8431ee017afc67b65e117fd6a0374a6d08c7a351ea34ed0f01c873026d0c74938f9783e8d3b22c71efcec41a4889462f6a598296b4228542d42d61efcea66f69998cec70dd079415f3d6ebc2107d0f4f55879b088df7b706e5d0e0f3380a6af73ddb144dfe4b4f5576bb49ed1d669b8013a3be84b874e4fdf2801f96d5b97d3d3d5dfabd15d87d6a56517669f89625a669f09b3cfc4b5865f5d9a317c71eb721a8913537475ce1e55231f6fbc5dac3de44d6c9bf86955f130c2c34b12cc26f43110378798732271228a9e775943771a9732afb10c7c2915509e02c746e887a4893a34efa01f921388a14bfd909ce0891a9c2686bad399a2ea2e0430b842bf8b780a5ca442bf141e7e1a26e997f22248d7e897ba4314b0eec8b820d4374a64433ae89b9cad3b1c2dcad0b283ee708cec806ad11d0e0bb498dd81200c4b00e20940dd81e00850bf9a0b85aa355ff4fbfb9d67406f605bf0eea0b720806d65d7063ebb83903aa8a199c0b9fae67dd195d6d96cbb1dafabcf67f65dbede8148d767a733e31c5dc643befe551eb5eab8ae65b69e2b0f4c0776d8f1852f063ebb96fdb86c87035bc782310534f674bcef3a861d5e0cda2bd351c58ed9c990d9a96d99d432beae67d955ea0cdeaa4e333b6f65afaaa33e7bb4d7354b4f3b1cde6c0771b819da7a0c7bbca7d15ab76a8f52c7dbcd53ee341cedfca9b52c7276e726ee8f13c0dd538ee8a7c742c4738f5f2869962f85a6c92bb358d55165a7d9755535c7fcbc3590c0c19e7eb047e3ea053a6de1c8c7dbe170d7ccdbe944db9d98f871bdba38f2d5b9f628752398d1f30bb10e45e84ea7bb78fe8235e3fc41d61cf1feb8dab2f3f18adec4e126f180cdef37bc99d1f0d4d5df7cd5c5aa7bc7e18ea5fe311ba21a5ec782f10d465a3e1bd2f21819b80cdc4b75d1a4abd32e98b47c95c34ecbd31fa02f2ea5c5e5344a2c53bdb212c3b4474dbba569b487ec4c446d483caecf5fd745af6cbb6e9d62d95f63d9d5611d3ba6ddb2b0ab0e66f3589661b5877c766de63b7910d41ef298769beaf2d7edaa6b177b57f6b5a5d3d3d66756a7b5dbe9b426b295ede8a34dbdc42eb24182040922ba13ef0501b9ab439313ef05d1c5ae2e34d1c49b53cb3f13b5af3b9dfa186b0d7d75bb7a7a49f4574dbd247a7958afb25fd6656319112dabb19aea543b09fb236157c73c3dbdafb5d36336d9bbaa07bdefc560f7067e117bc8539a58c1ceb0ebf52c40bfee0e706990083e41bfce813a196b2aa0f4693a31c673c34ecf2c6e60cfcae30d445aea90dce99078cc2c5a7e66d11d08745ada9bf7c5175ffc5021d2908b266ddbf6cca279c77fa8c08bc39fd686395e520d7cfc0ef8787168bb61de8eff0376bc4e47dbd1da661cdaef3a13721d220c3381838f808e890f243e05f1aa400126ce61f8178494f23f74e786213d75b2393f6f912bc78887869eb7c8f567af4f2b011b5920f9c2f42e67112039af0a1ed375e53bace30ffdaae031fdd0395067327f81c6cb176164a9b9745dbc45939617d7b205d438231db5034453a7f51b5557e3d2bc5abfd4165cb4d49990f3405f9c19c0153848031180bab802164c4f880b3e584cc10b5bd4e1c7f4feec16443a3eab523d332151cb32edb1f688cfdae045c7c3068480eb4ea2508d93659906af77b06de0b38bb5aae6b8e9603cbc55cd7193039e9e5a1aac4eeb1968428cf2bce6e4881df661bc56d21653905eb788a223ad9a76ad6e315ee9467a91f11ad18b0c11f421d57a1ade2a89bb2ae9d849240ce585af7821914824927d39a95ebef297172b6506293621cdd02a8a4d8c67bfd12855478c679795477c36ba4eb3f552cff27a5a2d290a96217d9e5e3507d534977a5f34cb448d26e39ae835dbaf6b32ae26d236229a854d22bd76215d237157d77a52d225a9bee5f5b4544908c376b063fcd51e305d1fc3c280d1c262e78a8d5d706964bbd389ed4e9ced4e0de71096813076c157d0ec926ae26daac3c74b06c847c132f5f3b4d67aae8716723b375d7bf6ecfe9e7e7911613d955aad1ac4b65753b0ccb66d1bcdb2ed90d42f55872d6c41c5164adac0451b94b4810a4cd3ce6596899a2ca3bf9e6519d5b449e435b79d629a665f671beced34d3b6ed346cd51e30bd5d128f7af87a61145c9affed08fe7b7b2feab7166af6568aea9976cd9aa34a2d49750d4cc35b4dc125acb3db89a0b3d3c709409de6742368f85b276e029263ffa34cbf411e0b71dd899bfeeb76b25fe5e1f699ba49a4b237b0ba37f10bec991d41637fd5885263f1d514d08708037169765acfc951986720e833a1127a727f149fd73801ff941509fb3f5624fed3fdaffdbc3615894b5ba08fc91045d6d3f231fe7e41222c1e443a3e86edb849df1ee3344cfa8deee08dbed1af927004d11c44bf1ae34677dcd761ed11e31d7785b0ab3a0cd0efc55c87b6de4e8775e87465751a5ad237dbc5387ffb8c1933663cce98711ab519334ec31c2743860c1932ce35878c6dd334ed1a1b84409743ed85ad88d12f5507289ac6d0605cdf51ddeb3a0ded56bf452eb46a0ab931a448a45d547368df5e5392062bbc4b75c0ac0e98af18302fca5cce7297b3b8b8b8b8642e7f797171390ddfdec07639859a8b8bcb25f19871ed33344d047f10c376b049b7645cbb0cedcfe51de97c5a75c49360bbfc8a5cbcccda0386e52f67f94bc72f158a269a3ca29717ede5e5c58ab297c7da03a65f2e8947cb456fb9e8d4c53221dbe52299a2554ad04422d1f6578dc044175d120f18df0ee3dbe966b5bbd8ab610fcb6897a7acf202029deeac20d89ba6bd7e79d5784017fb1a9e6a27d918a78931ec6b18d6ba824bf22db6f2e1923c8b9d42aca0ee94d9eed4dde4e1516aed9278ac7cfbcabd9a70497ebbb04725766705b5fcd5c40a4ab11c058edbba826560a50414cb51e060573e2cb3316199d128cb5e79fcd0191396c92e99f9273bd71cd93909cb40c8711c0d738fc60efea0b9c79a831bd9d7dc65d843310c62c78ad8435bc153cdba6e77eaebd05abb7393d5ae9d9beec93e27333d16e2b2f2d505e9d4308c01f3d549f0af759ac7f5ea3baedb452e5a1e76dde5c5a9e1751ad61cf03411877bc0d06fa7dfeecc88501c6e4a6175580fb9042f0ef77632d033f1a263faa59850c1862e7aa65f8a0d53b4618a3604613205931e263cfdd22fb586a15e83d01aa8d0f4d14b7b75c776d1a1ad6cb54cd4d45faf3979fd63a2e6fae835dcafd7935b6f277b74bb1bd8f5d7edb88d7f2e2f5a8aec4d4ed3d34bdbeceb6a9f666f60d3534ca3f4345cd51e304d2f89c78d4cb8248f3d23c232d8e57bbc803d31d887bb8f8f0f07aff5d7009d287036d75f77910bfe89c151e0e0e575a155dd223b379d58093d5ce001ca94239920b901154c404870d231d1b80a6e989cb86192027e0a6199c805cbc026d24f9ea9e82132e9817f38013dfca0e5a191cb492efc0127e05e0ee9d71dcb90aa17d9b9c9feb53cec6119527591e050286e9800db026dc04f1be3d5809fd50824eeed6345e2b607581ff04cd7deace7856dd041f44eba8237221065f54ba501d5ef7228fdaa0ebef23e292b2daacf3982af92f2bdf7de7befbdf7de7b4fe261caabe6d0a21c6d804bd82f7e8b4b65d51c9515672e0ebba694f27ad7ab72401f7d08e0e661c31daf2ba673ce1105b874bd93d6e5c5935a358736674a8b8b7cf65a672d42a7ab85ad59d8d372998d31ce5755efc518b978bb94f8e4e39994f7de7b9d8cf71aacca20ad6a4eebb2e455bd4ac594735ad6b4ae6a56534a39e517a4909c2f86e594314619852cd9f12afb5e4c74c1a3a2f7a4acec8ed71697a2cb0848569721b7c632b2e2ae292f86890f8a926b555da3c725296555559594524a19a5b4dd8b72ca18a38c50b8ac80be220c35d558661ebe08424d59eba465bd394ad2b3752e6d762d1acb74d0084be69cb74b913d2febc6c946b887c427485396ef522e96d1e122dc4362842e9ac7e4e6131c638cf128140a67c6201f0718ed24f1c1018638f9411664e0630830306159c30c0f99ffe07fc818b1fa3840c3c3ca63b493a4070d65eb30842c98d92b6c04565fa750084db47278623d92a8a151a35bac0b97245b79560377bdd35a9ee399d3075037c1272001e0e5b5d39d902676396d5d6ae0e4ad6b7b82d04510807a708588ebd7a55caf9acc01afe4d2abd6e97d92b5801483f7e2255cf78ef535b4aff90c9c8df5d9dd9b9e65b04c4427b4425ae7550ab32460e52169e2bc9badac4b4a8b0bcbf09393b59093d1c055875d0a8d9a0bcb9c81834da354e3c6f6d8c1eee013d04676e1910421d5dd0f1084231d4fa3c6abd9853bd086849b949faf76cadf2ebb1db47ed9a95321e6040ab5c7135eb9bdba5d844f54d3565555cd5797354735054d9435079c39a610099388b17a0f9a0497e25f756d91d1375b64e7a6d1a9669d8a6815859228524da3367b24913884a18049c09d0b85702966879ff39df6193fafc7776b7e6427dc3eaf8b13bb5a37bb38b7e265d76b73dd5add7aa75d6b76153fbb5ebe8fb5c7ec782f695807bdaa6af4aad2387bbdb2348eecc92f6b59d5397ba259d82795f58b7bb554ebeb9c950c739ddac7a5eb418e9b76692f8681cf2c97d2e272e113d046d4919737b1654ed4a95cf1805dd3b2a4b4a4b4a4b4a4b4e9aacbcaba529e5adbe40b3b764a350cc330ecbd8a5dd3304a4fc335cb6e71f5da3bd12bd6f18862aff562576eef2a73347b27ba56a3183fc3eeed1a8ab81243143e1d807e48a22042170d5dd00fc9109634155d24fe6bebafba9bce29cbaa67436c3aecf3395d412cbb9d4e6795b45ec9e370cf0cb33ad9a3ab86e113a267d9b665db966d5bb66dd9696226b236f5af61c6659928bba8daee4de46c97d336b047fd45ef4ecec5907f3c93322f5f9d7b8a7d0c33ba38dcd875ee9c44b91d0874ba9327daaaecf2d56a9ddd0ebb6e0a97604ff804b491c2a57973a00ec7961443b88227f310920c81c81084f400fa21114210b3cea9ced7c39dca755ae79bd875561d3a6d9dd2eedd57557daf55ad557daf557dafd590d8f0b5beaa62f5c88f8f63d42802d7d5bfbf3a6bad358a30e9c5e1aa7dbee3edb5b2a96e072947d1ab73d5f56abb38dc548948bb38b1e9ed7432ecba578a56d98a42083f42e8692a927c1c6e48a115024fffd00f891126414d807e488cfca0e9a3f259d67b12d68b1dadcdebc797155af075b2b1bf77f0e2f0ab9ac3ca61fd556bf4ae3a77f4d71fcf70b73eb28f61eab50da6c38922fbb8b4dd5a5d9cd855bc2c0e77f52e9bafae4dbc8cddebd7651bf8aa06be9a57e392d692efc6b3099b05a7804234ece434cb46b7ae553b7abfd51ef0b5eed82e2f2984874258a6e68056d61c97d2cdba5c53685d5278695dd20e0ee9eb396d51b66c12f4f1ae1cdec4b6617a1a869df5cebaa20b8534bc65417a78796d5864c405bb952be1255d97afb10e6f1dca08bb9557dfb6c34dc2579796ec56ee06e10eeb36f26ec72c0b7ebb6a8e0c4ed1f635b4b362080faf73a2163ddca1161c22ad4d7c4e432b4b8265762011d625e481345ee51d1422b777d7e96f07857475fee9b5b6fbeeba19cae925cba49cde4bbe38dcb2d942f82bc21d68c3ba55776cbf8acd9e624747b19c65abf74d824b27743b11fd046e50b4c1276eec0c7b766db05bb74e0eed767249177c021261bd3a8c0db757cf383b671f97b88face412773b9c58ede392c8daea13d6eb854f401bd5b327c1324f6419144231fbdab2300c5ecd7638fc94348659f089113cb9031098f4fb21f141132004f58d7e488060a47dc0a481e88784075150d15acff84f4b2350b410fd901429124591205d648aa60d3f64727fd75fd7bf5f548bd7b4898a30f332f3ed78ab75470cec357678c9338465b0f3b59a837f62cda1449c792f516a63bc65651b9d52c835c6f011bbe4818f98fc81b5113da7a1ed6263ed22f9143bb5ced1851e3b0db3e8336ec79d1c022f8be23bc8305e1beba2f3ebae8e53f93342c4b7a075be24d1e3abcf4f18b7df524e0ecfb783e7486d0d297038dc1cc36a75c78c339d11af04775793786eef7f19b7bb5846c432ecce38367f03e3cf90f1b2b16017c6f563cd16552d2201649eddf18d3aa71c88e134943fe8ae3a0edbc4784eb3ed624d6c2aa18044c03391eeaa7b13bb833d3aee1877a96287bd3a0e3763bf30782c4e2c4e2c4ecc861fe3180a8682f1ab38e38cb326c6995f3db26ccbcee68b624828a00d78abee88c177a9ea63747f92874b13c664e17ab6a8dcaea5e7bbbbd1bd47b72b719c95510e4208ad6b937134804474f049faf88e8522df0e4752d9a27738523bc7a851040e67b6e8dad05bc7dee1cc082184c7b8c3ecdc255d37e2ccfdbc1271e606f9f0eef75d4b0fef381a377cb89087c69cd82b1c1cd9f49b756b4881c3990d6fd51df036b4aa3db486873cf413de4e74cdba1d8e6cecdbed58a8abf95ec7f5a4b7c3998dbdbae46199d7da250d20112f8736a4ab95b3eaab234133c6181f7bac4658a738b32947de3a13648fb56676762f2bfbaaa16d5d490368a3822f4ee0011126487a7e9861c0c13f243bf0a2dfdf16a5b4f3105a735a734ee9526193b9867999a3ba2e5246c98c057dc73163e772e37aac1eabc70f7155f131465a7117721e5627c9c3e626c938549f165e2fe6b5b482be79f970547f9f0f07ec027069fe0d7d233218b81b33d9e70ff070fcc55c9fafc1321c972e8c06cf5ca49e33290c73bd2b40cf931e0ed8f3988d5b58171b9a6491acfb90ec60493f243b5843a758885d172e5df3c5bc18d8d1083ab2861cdf8dccb007ad3abb7679cb56ab43a73bedd9b3feaed9ceea876407422d5f75f05f61f3afebd55e3df8badd75ed94af665f4623ad7f176a9a76bb471f9dda65995ed24abb2cf3a8b71b41d3bfbfcfaa23ebec65f4da5ce777d7753dc9a5771d0a2514e8e32b38f9884407a9eeae4b33c01970444abee10a79ab7acbc529c132d60f603d099679487620a4ad538065625bd6106d3d2a68d88565d85a57402bdae26e01ba815ff4e35826de7a0acbc85bd61b8a47d0810fc7f74b32204697978743077d3496c0691c17cd4f69718144c02be00aae46449203211d61c7182b208515aaa0a228ffa86836628ae62321a2a4f911bbac45c81b9dc567308b338bd9a3762d1e561dd9b3c8a34ae03a90eb02b968a5c5cae3d26095c03501204e4053551d4875eb40ae24ae5b124622348a8e3f559508918e8ff3d9abd1e11dbdb24d5caf3e6d4e66b25edd9ccc54bdc7113bd8273461568a1b057016b8ec4e5897821e9599e6e5457f4d44885d226b7acdd664db65d5017ff2f770546be383561d7609fafa13dbe9f4085e243a676fe2175f1401afc8067ea396442b0eae68db0fc90db8c04192a6d10f090e7a70c033356a495bad55b5346a4974b3245a67b52a8f7a2438106aabf2c83afedd26ae7bd23165d709ebd034ab2db26369979ea6e73d55f31656dd9c9973bdba3b3755dfb909bb39d7ac229d275199c35d276e04f392e8e73c849744e7d5e969ae39e2e103ae9c8a2f36d04783b2e8394998b8d79c140652dff2579168b9764f28afd55f4da2bec56af0fa7b122720a68b049bb86b40625c3b100e8918d72e0dd724382a3a1e890da6e8f838ab66eb370b04e5db679d008cd7571609948fee69bb8a0e9dda67fcb4c1b8f6673ab140b4c3f80c0b04c651ae62819cb4a31cb39d4e77f0486c10a461f44362839ea6d32e91d5643daf724a619dc076958b2c90eda28fec69fbe89c3d6de7feea04500ee324fa8c6bf6b465a796364fda044ea3d79f443ff9ab48a01cc63d71af332c90d3a99e3be96c3ab1404e27ed9944f674fa657c6481d803f981c8f8290788cb4faef253cb4f2bb322b17df45993e08e724f3a26d163d8133489eeb4486cf3a30b84fb4802da615c20f5dbad5a5d24500e44bbe82d360708cb6724a1dd26605cbbe8e664399989bbdd8d2eb2b35dbb3999497bf591159db3f534b15a68da016fdd93f67a9dd82e45756d7ccc63af1ea2d3a8342b14d7b9a2e69c53342398000100a31400203818120946a3d1909e489af00314800d9eac4e56a0ccd32888629042cc18840c00110101000000040002002fe567763a0e33c5d1a788ba239f7a4bf73b7454d393fa16f9472338e8618879d8801bc96986b98101a2822d0e02e05781af0784dac4614300e71790ff355db3edc714abb441ac1e2341f8169803f3fb7364ef1bb78a67cb296a77eb61ba62b5a29f1740f9a8a0b0ac99e7552222a2673289599811d034ad44dbdd908d0d1f12b2d548268e2dca677c0045dd97f46f44f30ba1cf52b11115acab56f9f8f6d66e3da606ded8ad735da56f3e912573e4ce11aca4f2fafb40342f358d9f303bc5d7c14ebd8f05f8d68933f84375d43d731357edc29978a8a36a7030fe0ccbf744b37e1682553680708941e33e03a1f9ce7f26db4425312504d486f94c4bb9b87f0bce17272c3b505e4aa4da326815bc611f073e61b0e34b406f52821525f96f8836a1e06149f1e448a13a957c386d5677b533ae3c43d9b2b15bf33f313c2c0990c625627ea9a13090d298d12482400c8579696008b00ba80025795d0000810c7fc8ce8fa1b480e2416974807c1815f39dce87cee64fef2d0feaf74e14fb6435ba29d86f0414dd3cd4a67b1d91cba0aabbf4c8e32ca03860d01b6a733a6d9c026f156719ac05c82910e606fb7472d57702d94f2be3c8829b2934ad6f616be6edf64b444137e5f6e276d9c144543276cf607c2bf49d49ff29227d4d97f9841a09b0494c3e834f075ba316882f757a3a00564fc7b27e66bbf6f5ea731fb300f6a72205459aee2ac1542be0f4807d2ec63114bf85193a03d4a2cbf2bee65d47f5e87b0fb37b47154344a5dca506eb76141d851f292cff3eff19e617a8cbe5b6d472f8c988b881bf84c1518b81ec4ec32ee302da8116a7f6e1a3502af7103ff0ec95d9c6bf1b6caa266dea8737c2f79f9995b332e241d4426cb794bc94f5393714d980e72a6a65d0b95856365e934a009ce86ed91320506942fa44b38b38fede2c99c02361dd3081a4f7ba271bdd4ac84b3805d0bf8b628da44436dbf713fd0d175b1f21570b4f52b881bff4126243ae7cce6510f63514a0b154324aa3e4f84be94ddaa76e3a6926da25783c52b8f39eecf93d510b94324ad3a6dcfa1aa8be7d6d63f686a3e825f68f0a84cbe3286ef5f9b04b64a28f9a1721c10e9cd05c7238a8e68d7df228ac4026a36c6b1e95f683dbf69e8e542db20839355bb7e03a6ac604b946bfebc540a00dc0d9dad9ccf7a63a53f6df3be38f8abd20dac0aa4340747c088c7c9da69fc2eb190d8c2df04e2f51669a70687e68277607571c9c640001a4217864c20427b9430a6fdfa2ca0654683ac39d11acede9bbad1036e4a0d80c85f5c9628297adb98609960096ad443906f256953422d5112b2f5d451aedc3a3707d94f15e1362c044e6c19687c54da2a904e542309187534e15f490c55f1cbe7d7a0d6815ebd7387affd5e4476803760d7dc4c3b5a71fe5a16b56776d00ace1da9a581b34d63c26da8f701d43b816073cb812d47952fc3bbb96f61cb6d0cb3224a5c72728411a9ac2857ee97c257fd6a45d452c325a014b7f37faf47f9c92eefc77c1e5e3ad79ecc746681b579c08786860e7ae132741088821bafae8e680057ac381e74eaa24bbe8ee08b7e18259cadaa5f16c245d5cde4b566c15ebea979ad824bde4dbc8459152b58293ef410609c768088d2f3270cb3d2ba6bd7e5b4dff1b17242e5ea059e5d645718b17d1189ae435e16b5429ab17cfcb644aaa72a4c3f15f8f6ffdf560d62c377cb39a281b6a795f4ba40f833d79cd973b624f89310589f43b5346b78b9b1e720da981056361be590a40f785ed14918a5bb7189801b8782ee92feefe1385a3af498bc1584468cdebb18c2e7a6a38a74b2f6243d6920adf9e347588997e421cc3f667ce17c40f0087248a97784aca430c12953b00cf9434abec328c858682960a0a15cebd5b0458d2ceeb80eb13332a83b8c333fd8c85175735f22f1c91d89ee353a71cedfe8540407156be5e2769c5febb7bc8c5828ee030706912039be696e924f016830f79190564831dc6c9f6512b32b9f6d87332a3cc17005c569e02f423c8fb6af0f0319f3881f1a65db92fbe330d63eaf5f93d0c6d3ea639cdc53a09843314cc43014c11bcdc12fa25613588f784af9d735599c2c8dea739210d3daca0e81da7b12490b0628a7d21bae22cace94c5e270ebaba8c2afb3db74379c8ae8dbff8de60100415ad4bd42b479c081dd1c4cb6b1e994da57cb410a4bb233ff2bf7bf1f2ea19374946992eb945570bacf905be657e15e1367ccac57db09d59e789254cfd47862d467566fb19cae7d745100c5835fb233dec6562803a03abe69f512da282b3dd867ee61bceadac68e52acccb67283e56ce8728cc442a33a32b1dd80bade39b015a66e152c72c8dd8fba1123aa15dd33ad745a470c425e0a6f278ecba608be8f9a15ad674fdcc62b55a0b015c9190a0c2c3d46d547509c49ea0487f8afae13c6e180cec3fd8709f6cd52cb03ceaffc9b1dfa4580f935addfde14b32ea36d67b8e61ccebd0fc273ee87528649a650455278d514007fcdbd668f7339452c6544cff9f5bfdd86b1657b6d7575757c19b018cd1d326340e301ae5e73d7dbc86546bdaa03395700d5086c03a3695ec7928a96746a25c953db32da95a4c0db3e187ab7cbd91e886bf022bec38a5e195f334abf46d16a698bd4fef6268f3b7e349d54be11b33f179b2e72563a2a03a7a8491159fdccac88faaf29837f22b5619942e08345eb303580b5a933869e78c7aa8c2346233ac22e0cfb080f3e9a105204cb05272b85308916cd594138491b5cb7205f1a556407e967d93eb46ab818102aa6e30118c8f72ef632cf182a2daa05a1eec7976eb94910068e1828ccf8bea48fb3ddee28ab549ff4c3622f1def17c48285f4ddeecebe579239ecb4d3977bdf9c5236b41038ac19d0f6eeddac82d9857bd1ad320ad357a9921c4dac62b1c5399cf4248c2fbef042cff83feaeea591f06fe8105fd2d95067855c5d712e3a6c8702805ec09d1f2d1765c346781e151f96526b27a4ad4e12501893e8e8711b75415607447cb6d89eb0ab262ab10bc708111c7cd7f52d753d1cfb046dc367305e21efde83756534b53eb60f8061291a813a7c7b79c1ecae3220e5743fe113b1d57f7ac1951c56adf43c77e80c54eeef35529451970b6540571990e61ce5ac462636fe2e2c344d583edb91a3108d2cacf492ccee5ac9c1e611fc45c43e5e9812678cdb054e786bee540d5bade4dcca1f2403d9f8179f4bd552bda08aed12b45d3fbe0bcd21aeaab6f17a5882f5ccf9ab2e2c59179ca23104e9efbecee6b14a58abfd9bf7f212f64f8eb1343095004ea672e8155186f5a1e238f92bc2e02c0fac8c397e619600b31871396204fbba2ba055845cbe8dc25d5a79c0f69acb6dfc09d9ab304b0aee7ce903a7369ac8ae98a0a3a5d0d705410dc785140e97e0555d2066aaef9fa069eb9f402d1055a2b23c77aa0b9153f697115fa4066391dd01c1f6f783e45cd4ae87ca26e6255c36dca0644a7bcec36ab5bb6366af20222dff894c1ee13959a9267e27911c52205618a94fb3a8da01a8198a7e04c869d114f87a00492f9ad8203896d953fd1ef17bc3c62cd0d4d950c2c07c6169223b25642614e6b756723a8628ff06c9488a405b11d16e183c12a7218dd84066d0ae79c9ae65178ece80b92a3838a5902f27a0b0757c57e6ee8ea430286ff82397f5351efe20abc4dc69ab586d8eeaa6104bd00268493914bfb8fad0825f136f15ced8a448b579cf84dadc64b93f4fd3f3e0d733561f432866103e0ca11467318873b1c9de5af7fab7923890fb5fdc01551a6c1d86a74c413cb2c9206358dc4600c8363b12a315e5eb5f9f4877ebce8de050cd3c8d05179ce4e6010d810f57013208d450d23952d38aa7353209f1eeed44dd798c461345eb5ca92ffce6d418a41ca630e148f07fe99a036d5506988f4fcdb44d6335d1f9cbc3fa34eb6d4dd55bb068e6053ed6c48a41d78601cd3ab180b052435ff33fbfe5d054f14a40586c0a675076bb20637bf14e8fb187e760486bc3dd313a14692029594e7fefa0c71502c15d488c034518151e5db50c1885f24c8b50bb876bfe0d103e460e01e29261f23a968f57ee9ffcceb1b158cf580227a5fe8f0bd666decadf50334a30401a606aa7a28f17a31b23369a51a824ff709709cb22f02522976891895bb0db3b1bc920eb02208b43fce6bea095e6f74a320a46df325be9793533ce9c6360a66effe6bd9ddcd5ae02eeb021875804dca5906e6cedefaaefb286c168d99bb281b5688addd44b740d0c99cd1eec23070f2b379c6cba43b93b8952240c3ada4466ddbc3fcb9f9a4a18d747183e828a2a652f42553ebcc15607b3a41d0976e37c143fd544321baa247995a900416f8005706018e22bff40935b90fc2be1ced2ed275999093f074a4a503850e2fc2cd2a44a1962f86fd4fe971ad6d2631804b78b7673d09b3036253990aa37c31d7564ac2e821c0b96d7e4b378f9dc6260f0142b4511ae8eb8ee000b5a08e88f3ca0133409124b5688f26bfce990d72a7c61848c46c76c61c5df1da2a8b15c508386be79fc6ebb5cb18ce748a89d3c02d5cee6b4a6d4e336e5b56dcb946f002d1077866e2aa16a4c24f50969abbe57a35729a96ffccc64178dba2c17ade276e8c20cfbad307cf1271b8e786fc382bd115510e1cd2aa14622cc235f9e7df3acb81b774c8f007940be6bc017184ed6a1042cfcc6270bd2010b20bdc8e66cd356115bd78740311aa62d44f7dcbfd814c9ad681297e91a78e7dfa1cf376d2bf9826ba5210af0126f2c64777b1f02857f4d1a944a05aa443e43c04c84bd94529c9dbaa8b4b7acf992acfc85be6ab67239f310da3e503fad783d2944a6fb3a2c145a891edb1364e8bb0d826a855cda4f435cdc301a0f41f361a5a2b750fa930e1878ab145c97b94f6b216f37e4066b2d004fe3fe3daa23bac9e293ed74e8ddefaae93341d29352b96f554cf3d6da17e1e86950636194bc96fe57fc9553f7115cff923bac8f6d41dc4345a5b812190bcc37eb10ae177c38d900692ce2f0dc6db7a74c306343020dcb7b129a9b6719fad0164de17e7dfdbabf5ddf353c651167b7d3502e4d3caebcffa920022873c4f3f795336c417086ddc538cd685871b538df20d75d5c982ac0b79b37c82119232bd50e3f54badcda8b19ff48f450ca50a6f0bfc780dbae775ded7edcde7deb85eab7b3c26810d63306401623fdbc4f54916de4a9206bc140f07ce1b2c214000383ab21801a1a4ec8218416dd6a314ad618d0cf41b5c7059a611b81be8a9d470c30f8811f4c86732422411cea363e85f21c05d67acaafdbdb0d6707af6d0b83425b0c201f6d082764b9e214c2c98b78dcdcc6fa622ae751221b6abad90b7a7cc006a6ad48ca34d18b8da2c0cac10b4d438e58ab030bde0a49c8d938b181498000e202ec0b4ea098a04b82402db43e84795a67000912652a924fad10000d76cb2f76184b62eccf8558404cb077ced5f0b3c12ed139ee8c15ffa7905f1b6701086ae408eb650b2bec2860146a86861c4c05a291c004a4df5a0d9406469b522c3d96fee739495a2bc5a06cbe457c03f09a92229d98b1414d57284a61938886c354b89ed7771db5d38ea78a40533928ece4a6a18427c47a1d94eb15780bdc0433020daf4ab91dc2d9a99f9b8023e2641c2bc54195c69d06db5a03b1e483dd80955150fa2f3db9e5d887a30b97f5d9c988c618b161887a31990fdd091b54fee045e512e0bba0e0f63635bfd85108d5f925600fedb96e617d022b34a24f5286142afb082e3c61f736e6b7aad0fbecedd790a0fa55028c03694276242109cfc505e88f9572acbdc7c34137d1d4f4222d82c49a6f4de6ebd65af7a7aecaf30ffbc677d224875407b3defccdaec2c5ca52d85df109b1f932631dd50d8af0ade04af0bde069744eaa51e12d93a091a6ae3880759a5fc8076416eea9734254a9c1b18cfce1722377580600471aa2b6bedbfc41c1896d01827a6a13ee278f48d78169e49b2a15464d6a6830b673311992ebf74a9889547038b01c5629ddcc7672a700eede8c5b27eddefce2a83a1aff16fc5cfc20410221ae32c5f46b037d3243293e3ba8d4258f667723896d52d04f66de31ba89ec283a7e7135e38e73ebf9cee82332ae0a359dd255cf045cf3094171f64beefbd4062e222d4d1ab0f91d296250cc2e5f43e5bfe14e1f4b342d88ee0c796433e0d348b8a68f76c034bdb54f86eb911a685d816eaf134a6c84465c67d77cee890762aab651afec1c8d4f3112f73ec4bf39ea21c448cea5687da83e1baec55006274c2895168de14f61ffb0fc0acc220e71627c3fc2d498a518529bf1f71a895ccc6552540915e608c8f7b7dfff8bc7eb81571e305dcc7c42d4fe1afe0bcdad6daa52673857676fa70ef1cc55aa4663f67ca3e05e1e5754cc27034cd0f7af5fe2772434a443b354f0450ef112e04346628e714e5ac90c35d0c1b7269b4bb08513e201e9eb094dfb4aa879750c383aabc4903252e33f9de2eac59a2f67f6e731b9ed66530e022511e29674202733e6f550f065ba06d48f560f2ee1ef99145ab3a8f748648fb8b5e14e25e268df194847f1f41012e4ac5f3138a1b90c1e2dd105425f50f53ac7bfa968bc2cfc7bf89d856237a0af5070586b8fd7698ced8e2030ae6d1dbb97133e7950f8fc3deefbcdf5e053c4881243f6a0da98ba06033b05164a28904355f6907b4cbf4d2a926a329aed6ad3593451efc91a5b57f5f24df3c456b8aee2b3122effc7ec7ec078288af44abe6fb758e4291cf26fcc4668b5190f0f695ed2c6780d70c8f89ab95fce3fe04c62805e801796e493f02c10385d7307ab7947f814c632754b7fe3443158fbc9dc8ee44f73760f084288e1e63d2524eaf4d0c99681b33e478bcce27a508a10cc4d9fd2f8b100a23b5434cf7378dd6e7aeea2354058fb5f2dc73c8a3a69cf09d6c39d38c6ed0d266e4515406ed993640585cc7ea0864e0605cdf457bee60f0cf02c1b1b03ef5164af11d26d4197e758730073f6ea9f1804be426efd29d20fc35b27cafc033dc2b9a074814dbfb01930df9078cda95d17bac00d810c9154b7b43c1f3b7ab3fd5a7047c78fd28379b29dcff643f6e31d183d53425e110306fb0e30fbd939b6fb20b2771c4bf7c01432de152a7b504a19ba41439bcd75928998dd7b76b47f7afedce46593a46d58c2488ae8108147e8089007fcd927d141a4da3ca91dc7fc1ae7640f42f34130054400317027b8e2ace2c408b2071055233ad2605561d25a564251ca975859a8beab3bde3679264a9d06de7952ab5f72f6cec647251193614800199f98e50ddc3b197de6d57066e67e26db29acbd4f18d750823feda52dac6f19e0861acdbc3118fb5175951572d09f675016492611de9939fa890d40fa497ee81f454ed9197150c3e75b1135c214aa2dae49b0a32694451035badc8a9281875e5e24578e267a78b2e4174f7472f437f9e803bb892b51d3ef21c4f0bdf9d031a41c68de48c2bc4501ca4b9905833319f2ef6ee7b404fbd77bccf6cb821e01b6872d840cc066ebf036d6ea3b2589165deaacd6188346b3e3f7d5bc07834ce6cc192917d2a41f173bbcaada48921bcdaeb8bb02186d4413fa762ab8f6412212340e9f1f6b71a824d6ab49f5ceae9bfeaa4baade2cc63d7133ed1cc491b07013ce124caabcc03cbc5aa5d335175d6d523b8aff1ae80157900945ca986fa63e4ec171d826339e0de64fbc9b71e423deaf73c8b087c1dd4d7347e439046d40c28cedcc3d783b2485b24f1c80ca8e85222d1e113cdf097a1e969bc811b990e7a104cfdc6a701dfee03c8a3cfe71aecba3311e35ee5ede99a4d6434658896cdb4af896aa5b35650265cc1407d9788b20a7099eec5eccfb58249047114d6c61aea1696276f2780a484bd340b5c29c18117a46238d406424bffab3c0c7bafa5254ab44beb584778f2a292ef6f1107a0457183069f1aeffe1af92ee373aaaedc7a4ce74e386a24e57438992f7d6a2a5dd46528e0c72864b777125d881ae91816c9375991a0b0bce398f5fe3c707e972a1b75f473a7e8c2a6de2d8eeba5b3460dee04557d21bac25729cabefe0e8efb5c1d9317918cff8e3a3b5ef88a8373fd4be75333c41a5c675da0c8bcdd6f13b3eeee53f9d367458322db69382167f1a3ac04f9881d603a174d4c9f82297b40bed9f1c1085961345e3b1e3beb72ace67b7603147a2ba4ed1995e38f4906e5b4bd82e660af41bcc6a94b1c1cbd7a21c9ae6cb83a845937917081ab4ea03029a304cd6c1edc762f731e7a1b113aa0b89ad23716c46d814e72072785ca24e4bc9341b5378e451ed21d13573c4f2f7a17deff709c194066c21d1d9ee70bf6cceffe8fce769f218c83c03d510141cf491e0741dc3953272772497e93470a6f480bd17d1867ce5ed496dd777ace15b21948f6505b34ab23d994a09b19653aee6fda2191bc987c7e801e89d0fdbd2763a8019dcfb89b3fd7050702b151fdc7c1c951a87c4fa397e74624109101b9b0d05aad9179f919a8a9763b4cfe4a08c7e0d74555d88255831d68e9cb0d53803f21e41d2f825cf9147f8fa48880d5354ffe52b3a7d7a7fde100adba7ba4a4d30fbd49e301b5ecdc57482b64838f0a44d7be7942556b9064ad292c2f5828a78e1c7126928fe185cdfcf0b395aadcccdba670dbda068d016b2530c7dcc70e1761407a9e0fcb13dc7bf54994107f2237075c5218359b9c504901e2d1cf72a6f49f8536cf711fe3cb8882285082933a8b0b392c0e846711917f1d707816f049d32d912706d1151ac0f748587ac6352735d4288215345787c31c658ebd5eaf5e594fe7f3edd70cbd98701ad51cb5a0f31cdf72d1b7bd32981b1dd89c4e04b5d0ed6bec4d231c985e6f477a5555c2b9b8f7f7d05b6f2e057ea6b883551180c900f8e86a41c62c785545616c5b7923fec7ebaecd1b66eca2d5e707ca4ee95b3b7fc9eff71356e0e063b5f9afd0ba09faafc7bc2efac5bafe8f0aef13fd04e93ff103fbea964cf0a5c4aef25ad002fedadc44e8836b0f465ccfaa7fde8890bb803e429f45ff02426cd0c101d7906b316e893de093a107b062501dc2de4092f2546363b655d8602d2785fd4be303298981f8f38124aeee5cc019e6034a52e7b3462fa0ee862600bae4080ec3ee503531affec5bed50819b9b2e0340848c9322f6188929033827c55eda025f1f7d70cde9f73ecb2a7dda823a20596b2ba53bb603b1edd70660689ce9a89650a481d7049ec6559fc351a2bc011cf8da1e0e2b15565b395e7fb15f401be45eafe5ed9078dd9b26cd5045b388ec4fc9b7e8dc6d258ff35c31c0d83b1e51dfe340cfb8394b4793fbdc9a0df3e11b430fc6674a0ebeef03c1a0000541c8d7766662b85360c7039f93e755c3a3abe58d95ed8ec9f1e990eb3ce1c81be7f8f2fc265881b4368ef8084156fc8e9f3eeb2d985211e7d75b88c59ad17f95a8640875c8aca66c61c38ba46e022c52b27c2c274dff05bab0b0d09216f45d5c8319602aefdae28af356fdf318bd25d3a7b9bb7c084832cdc63ad82c11cebde6d143b6fc5bf2f2a99196cd58903f6e90cc420c42c14a357d6dd651cd13de25d49662448be84e1503ac8f17e156862ae244ff99e48897e550c8aea420b3858883568aca486f62fdceb330142e13527a10f358a222986be9e0f808333dc48f9cb01a0fa6d6f0a63691275e369c0692a5bb2e33695ba66071cdb9a6940b93bdbc39dcf451faae2de4ef8e7ee958fb2495caee1073a6c5d5c314b111840422f075b8aa37c535e617d66343277b2bcba13d1a3924313425d9327e6621a605cac8473b278cc1e53a506bc91fd74125f371f1244c811a883f8686a06ebe89a73740302500ba1aeba457655b491c1582cd2824f78155ebb02c85e6a13b7730a3a9895a8d88c15228ef3c42b823c8136259ecaea02a2df90111681d3b5112ff4632def128cd91349ef895de845b59cf096cc200e6d0ea6ce6749236815f631e8a40855b212fdfee5fef229c896191357cb57f75bd03e64dffb2977b5d4fb40e27b16ee4e2a68997e2e0962527b8096f3298a52e3c5fe008fb2ce2f670378ca37b8d2520c8f1b40f0c62634d88f292ae71abd820da4cd0c68c9414090c863b62ac2b6482c2229f2f32a8c2ae1bb44a000034bcf953400a075228a5573756928ec46c784f8ac8545df4c684ee402673d6033334a8cab05d02ad136dfa9a704ed8a2513ab8bdb5b11cac4cf02fb38d2ba43d0dfafb593f97a41493a7c98ca570133cd4dc445ff37dd8aea10ef8cb244f091ea1c29e3f803f6edd058cb51d4d4df306fed2cad0413f78767a2711628c6324ae3ddc5fdd9e93bbacbbe4b2ed79a8a74b3d4527716f4bd1ffae061b3a845337fb107781ddd841d1c23644257b6f52e9b55e17a41dce1f815553ceaa01fa4026c914a233dc9509e5505bc7038f8b76b7f516066ed0f96d487c7cbbdd8c3705785d8b41f780be809e0684bc63f108531cd4d1adac042136afbf174ae12bbea1596001cb772034c499d837a09b516eee0b7190634fe72c1ee6b7ceb9410d2cbc329aaa3e638d2076c725c090464fad156815a4eb52292a77e7e5bb2b89438db7bc5ef2f889a28198d7bec9e5484ef6a82871ab0e5a40075939ed62fef12cc3b3b11ee374f1a82c5b352d201c07c477a3a555ac2a34b66c2422d0368353e3e268df0ed306be6e00419e56951d0d388a5654a283989f4312749ae9ca74fe19b18e6d1ea3e0da8c4619ff228396d064e45899fccdc3030cc468e43ec381f1e21d8ff6d719e539256e378ef03bb4a4a054e37ff6471eb03a795f0fcb712a6bf1d171f925cd197bbcc1f215fa54d471ea696bf8767dc236631eae1b7e0c32dca725d43546128cfdb3f945670ce47b0477f82d474c06904830b2bf4484f3f2015517b00d9244eb9c8b9ed2e883530e5afafd8ad6b3f49fc5b8759e82a370aa8a22f1b99e6c9188dd3329471fdb7ae1550b06c32c592f73d00bcf7cfff2b0faef1eba1234f5eb61c81bde0437115956909f07c3c3f19b7b582db51c4af2f5400a04ba785aeac4629f471d651f103750c6f42b3ed3bfe050c8850444580ff144e00a9255fc62331667a03a0f7dbcdc6d5a63512f5d8ae6cbc0011de021d5be7f7d21b815aabc9e07aabdcac832583ab3387998bdb6118b50f85e3c4e20e9e82c506aafbe6444b74209ccada33e04f44b7170c04c9f3cea2d50fd8dee020ba3c3c3cffbedb760bbe6dbb0f52f6abafde1011d2e8c996a9f695a8478a3d312f7fb98b224eb8e9c66a9e3d25c6a67d5f294318d019516ca024a2ceec2270a953e777f497fcc52d5a113237f995da9d83fa33086d8408ddb5a5c6879da4a976e8b5815b23e3ba268af45dd6aad2ba41c64a39b6ab2d89616d16c8364db6eea03b43b7e461b3080e459daa67b1c755068a4f24f1bbcfaa26eb2d8e9a9ac94b4cda988e9bc59b9cfc38de575a250d45c427ae3483379882798e3d1f8da4bfbc994bed5e7660e4360ccc9e523c660c962bc0e24bed1f4c5f71997173a0794a63ba090f0272f6370d0038b9f5c22d1438137f431d2ba603162171ac79c8cc9ad7c5b93faffff4e3933e78717c1bbdb1b8eba53e979f90528fa1a801b636ceb269d8bfeb50735e1c378c047988b18eb783457a6d589329cd8647930f7b22102434a276011d8f04bd63db06421d53b1e7b9fd8a7906ca19a12058908e78db18a8bd2cab7b3ff87390dc4f19ef8ce54b0b7b82c75478709dda1d94de7ef00a2ce803a453f32fa727f4be114bbcba043afe4b0218b21d6b81dc85a833d11015193f8beedc6e29ddcff42412a273f1b2e07523305db6b325ecbc3626c48464f33f13b4a1910a3591920ba048d564d834f60cce4d93c4747d55a4d010e8499fa27a26ee99e4581acde54752ecd0c8b90e973289d60d3799b9ebb7b73708e9b1abaf3734a69d43f3e35baf3261c9958919a6c64efdc26ff07771933e884bb2953dba47d23b98fd778c8d0fc9ed6e73e1e5ef16cfc28e1ac7b81354a32844f7c9a80731913cdfe7f7a58a9b12c5cc13d5ee6f944abde31403e7ae9d3ecf88d1d0bccf7fe142a958e7e1c1106cdb99fa0113ebf64a06f6e6752a375c8379dd98fc56ef3a231c72c694b31a18d8a698243b33ef6e2fd92066792736de301b2d8817e052f2d80ad92215aaccee468aab5fbad78fa7090397b98fc4b65641122eb42a9025525f94cf1db2a092ebcebb09aacdef79c9e2c2e348d6c88f678bba81a81858a3a6d2b0220bd71366d0c5aba8077c694b39b81b454499d20a66bbabf13bb6ebcaf2bc1c6e5d92f19f44d4ba82b71475046a2a99b63167561c3179cd7976e0848839b6f2200a482d5c3182815c5ac4b827b2c557f043c55a22dcb58ac196a646082e8056e1b79ea7e6123379a2fb68d26ce5760fa2249a1127b011ced44ae7c1a219fbe81da8efb17f899c2333c5c29837242867b6b99d566e9708b510de8c499dd03f35e24d15fa2852327f7bb0db4a33a684842016e8aaa19c02666e77a18fc54311621866221c420199696a126c1351aea376ce6c854bed87fc11443eaf732daec55d4d6653b49a85e1303ae56a5bcc45d06f3320d90030e58c093adf6620333fe1596ef151b4d2f860c1d97d237e4b1b155436e3c8c91d98f37c084de8e2daa8025f69887af4a23e40f29fc0b3948170c8d2cf74d0f2639a1fd71162173581d45bf7e6263128f08477551dd8d3900752e1211508313cac70bbab934d4f5812bd60a620c476342d9c0a75ab42875d0ced8603048e50963e55b45c5ddb4b0115dc4f82d04be81cf614fd44c6d58aa98d0284236b7259ba8586b0764043783b2dd5f8bd835b1e3d1454efa261d20f4ab16d4373b6bdd355f34b57ee3a9c2e565b6155e9563ac0cec46cfb01053b26230bb9aef8d52fc111d12c2343fc943e0d3bf297cc744f79d053a25dedd69f6626987796708c903d037653b2dc03b5ecac6f34c151953caafd321b655b206dc080de41cbbde26883942d88b04badce89fa0aa161495e0a505434c5abb2a2632efc5761dc72bea5aab4fe8ce964c80b72ff2512ac1671ad2ab1448eff5530b2de415f7aa0ef7c17b671189e9e62c4d7e421e7cef3914cff7f68e347ac6bf7256800f1b8c31c41b192e07b1c6bf6ff25efdb114fd13f00f0dd858afeb033d8497c2be60b1a45cfa0233253c6a562d75496ed756c09380d69c2d3be25e0310ab8b1e65e0c5561c6beef682572f1f79341520a00679e09a9f2e53427e87c27070ced3435dea0034505ae4261f66fd4d1dc68c613e2846bc5b08251af77dca7fff7c91160ac142a19f0a893fce1f9999d2b7b8ce72102e33cb6c5700a30038c2379429625f3e8a451b0fc04a3d5de8fada9724d4f9ef1236f8fdffdb4111065988dd4989054af14466a265e35db39d70d09afe4669ee31cc014442b173355dbde50bc57eb2d46150b95c4f3696dffdaa037bf9dea826a791fe0bf1a2b241dc6dd86ea2be72996c553295c82dbd68b53b3f64a39807e2997d13967c85f5a81059d10efd179d3ae66b36c37ebcf9d60963c02cc0a7cfa6e9368df39bfbdb6357a7a9c91b93599366eed33d3f7072a995414e34f625f00a4ba57ac45520a4c63c84659a55994362460e004b634a70f3f5bcd34fd95abb9c99876928ea4975572d6950cc9032c33f0d2bee0b14642de68d0918c34a2d04317978db560c863cab18addfb7b3544578f32c32b7b53c141bdc07445111dbd7099178d88db6364352dbae8aa133e556004e4f23ecdf5c153fbf88212b06f5ee863a9dfc1808fa13f3dff55578ee893126b6dd52a0fef6c28f06a4da1e9d8342bd5a5f6adf64370f58918a6e1cb0c32774deddf75d95eda7814a4505f93609ca453fee8c24423c454c9b8652c72b5d4136d01d29c99124b7c7055ba7b28c933747c9bfb465336975f1003d8e139f409d29c4b0c6ebc643862b129c2c9f6fe4fbad4377464d0a06d11ec9098db6b0f062df6c185ce855a32a83674bb98acfa29c65ad0f26bf0986a1388bd80e2e10cf7238555a681210412eda67770599ad25235c66af168992897ea53d69df7f493c59d11d5ed092d2a86428f04c3e8a14e3c6e5ad3c34b46bc12f50778f68d55c37fa6c8db7b78c1ecc4b1be617b56a8b0181faeb655e6a2ea6988c22f13d2bf2a2132d71c3dd21f34c20716955d15a84eec1bb4fdd496d073d9a51b7cc2e511907e51ee3fc37402b0a7ebf6ea201a356b919abf870c6b03495cbadeba2fe663205c209f7ba0fad3fe58a216c276f6cf861c8a13bb7a42e902b996aeb48db87a7ef9298712ba8584570cbdb1a7de907f2011719dd70e54726ff796d0eeb5002730a5bd6d9accb9b44f5f0e4a58aa93cc462d7f8e66fc49811e638950ea191355828f3953f79df52ab25daef6e4781c8596837cdbacf986904d3059a262f342ebe582cc55f4ed83b5b7b7193c0458eed2e101df97b8153c57d41ee5b804fd4b135ebdf7e907e02bd61b642c15bb6fe37a711a7aa575863da496eddc7fec20390e84fec1e395713c3cebbe1222d4be7090c5c2ddc9d02c32ac836fe19b9b2c64c71f7cf5423bf24c338b443b9f46ca60a860c3d586924a0c3a6860e28f7d668b5834e8cd3bf6d06f4001955c7ff01d874d9b84eac46405cea29745a4310fdf08aee3de4a723ab0093dfe14fa68eb893cebea32d149d52fee34699c8d2eddbcb0e31f3b3f431d44937b419bf19181f3540879337e154f574eacb046e02269a8a58cefea707b859dad4b97a99911d659289d502a5d8f274847ab620f7dbb1c787e822f0f6377704468eeb377279f8bbc9de5473fb5ec328ab1a4c726e33e3c24c464960aa541d3efa2fa0506b1bebebcfa2ea611d629cd153c0faa783e5a3fb912eb08588a1d3737593c8051d3a1dc5355debb73ffd829520880e0fdb32bb0258f5618289f9fd82d449e49df790236e385b832fce2a972e8ec071ed5d90122e1cf36d816feb7dc9b9e81887b9b2f68118b56bad54215726a26d712620b2d231aafcd6d023d4267c945692792de41083d28dc7ae9f8acb0c162c0859504d144563c41eadf8f6382a4b8fb10f11dc49c5123469244256ae3f752701035948ba3d7e7f651002119fb6cec4f6068c95d55f6ea0a1a91c3421b4933a7620fe8f97dd1a53a768f06d3fc880f58a2fb28cb544be45a48ead27b105dfafb09fce2bd2a776ce343aec5932299ce8b55d692038c32cb3eb59a10924e8afb7ed405b14430e71935c81950629bcd7ccc97f828d88ee7f633d2b5d3d0c3773f1e24a54a66b8a7f00de31144b89108a33ec0d2e6314a36ff6553eeac556a6b726ef9f49e56528d2da56f159d74de3b91827b93da1547e02198e019ebae39450de1719043a8a4bee7c3b1e388aea793c54d626d989c4daecbfc12a1ab47d8c423cdf548f3865e49115482c3e3787d6a06a2cbb271737806ac3d9d4a6c484a530f5882990444100a2d1deea73fa3a13dbd4e5cc4e5ccf2338e45d31d07e8483ea244841c8d3b2eca0e91dee067268656d78b9caddd336a72e960417ef4f006ac505a26c27d8d8ca81f45b1bb9a356c6d8065f687548a8f5e86af8e5ce13cc50ffd5c1414081935227abf263635158aa39f8ea2402d1948960528430b949c5e50f34a301dd27d7882f0754d929167ee92e75853c4572c71b088f85fd1bb3ce5043c70012f4b59c4b65e468ece552759163cf825071104e654aaaf3676344cbfbb4f4b3691d4b004284afdae54c948f645b69b61fd78ebb5bbe6a99bca949c7d0ddd10a516f1cfa427ad4a797dd3d0d5b91eae1827cf75087372e02bb4206d454018fde2bc14de2d8e248ed616dd82cd7d10133bb0cbc03e02ad454a7db534185c585025b867d985d757f549355b8e8ec53525c061113865a4c2a45aca178b3116c33ba970e66473c541c600134498385c057aeeb4da05c62a0176b9f93738bcf95816c111a2d422423301f3dd13eefdc7d3dd818b89daa4b4c368e446bd442a67d6d106e7a6c1633950a897e3bd325697f6b83445c9b3c82e4d0a8f88aff5df3525906536fe59748d4dc925b81b8916d977934890981e6ef2a0e63b2778b74cb3d3f8521a190dc0e6beaca072fb6dec19ab2399c08ed28009b122c8d6883c353f400809a8ea30b8ad4f4df33321a2498f8bdd38224801860898e526684bc733d977f5ae9865213cf559289aef01e943f5961d92293b30f1b0bceb745465a8cd012b27c7612858b3b99c1c29fd8d63f61cded3b230c96244a8c99203e70532a1358b71b2938e10ca029c3bc93bf8e02f9a97e72faf43849c29462792b652b2c17992d8b2ff2592059fd5db118cf8e1f95d9c129f7054db0ddcefc4fba347e0584206eaa3c022ede8ebd78b63dcb2b9e4a486ef7d8d2a2f6426b074ec085eaa05a9c6c65b8d028a688a3154d11e214cc2182d892c6769c023429fa1300ddd3dfdb330c11a24cf9811da4188e7799a4a7973d247cfe0563b3718217fb5a9fb0412daad9953f6dd2ce88dbf41bc7c9708b1422832c7859e33dd7188c29ceebd56ab04b27d9fd4cdb8ae23b7f92e340bc2a55398f0350c8f9ba0a29cb044997b5bf333868a1d383bf9e5f2c353042047139a16351da5e4c1fe7316984a0057b74506312dbc8877adf4ab7e780a8db067ae2b127b0d615c7c584f8741cac6ca06ee8a6baad053b285ef06f3dc5c164aa8c5a92c671d1739bacf4b5704ab37de9becb46ddb39f27aa0bbcaef71ff9039d1d5350e15d4bd00bec697ce2ff0e3390682504914e9d59bc3339e9d877bf9e413e97f3be09700e2b3751d9d9fc9b00710ab7d00da317ed07c8b1eedffe281fcc8e795ca4740ff8a90ac5c89203beeff8207f00a5dacf467aba1cbef1269d98072e152b925fc2ebb2d68fbef3b38102833dc0d0990d045cb6ad4fed1f598c50e960d2e0eef13589bb60c8c977156d3fb65d0b530816fe55eea5ec574d59c8131c4085e161a504517fa1f3699706de42cfeb2a2f6cbdae165676bb2f6932b1363d8596f79acff95cfba7a5e418ee4fe9d1188f7a1c94dc914ef89cc24cd5371ba7a07e4b658c9d5fce2205fddff0ce0e96be3b1a237a4ead4c32847c3618f15e1d890576d40f990e75816a6ae9b5b2b1e9e4711fe0d5d059e4ef7f2cfff65b9c60c18dd1593b8d8122690567da79703d75ace398767dcceaec6fd4b15da810fa2e538295c25641eba71f629e2098728d163dbdc9d47b6aaf19db95018b6657e1290c97b5f9bf183e83549113f80c991f2f25256c2fd48a10ab7722ee6eddc80b7b1e307418c7ec18c3398fdfcf0ac9adaf73bed20dbdc6e8f875a109b5e7a7d074f71a76a06c137299351a65e4e9e33d097ac5af179070cbf2dedf1dc1a38b403da50ef3db428a58e577e28e01d2c86123e09186f675281f8b7cb75c07e0499d2ef48553e2d56c2e24b5115f5644223014448dda309b595e8330a37ea9122e78fc8a51a85abb988b2e96dba3adebd92525674ceb28a836e66f60eecb729299a666676570973f44d7ad57f780f3d1b27ffb9396d59a0b98890dcfce3ba01c29b41bc6c941caf6edb57e0aa31eab055c1ed36ff779a22ed7a96c471307d210e05f04ff6e2a425c63b0f070df01a210a3b4a9a757e500e857fb8bdca398b6349c386ec9eb8c2e4b8694b1b8d707003b6437e4bd0971f90e699d5508b506c5976900ef59174132671fc600daeaea604dd3efc1b8d297d2b7a9ce8ffd32733f4fdbb60c6fe9fc4336d385d637afc228b40185b09e69ca3ab4b930111b843c9a95e991ddf60f50cd5381bb510574505073c3b9d87628d26fc2f8aaa143b72c8527331b96a7ad317f43f05ae3248d98c22b2165543702b83dbe1287d501ea7b6c1df5b6e63ce301bab6ade38bcf3e506ed2360f1a4f36e125c903d2466e168054ed0bbc04e3317ead893f4d4068c07f6857b0c9a58202187e6df60b2bc0295004c5897e69d2259b470a7cda5d884cd8f683fd98d2c3590375d7a10b4c1e0c81a35c7e7730f784fa03370647599e92342cbf9e91ee262b76cfdf2bebbd18463f9562300c100b9f0fc7370dc2c9675031b7dd9c53ea8282209a3cded485bc045e722e22ffa5f2d7a79bc50f334db1e07f2d86db9098ce2c05d25655f4cb308d8e9084a9f3932feb8ae9e236f8a0ca61ccfca1d4da3d7093c84d8a093704de8b2ecd0b888bc02c2355db9fc83398418b883bde6a3b873f2b53371362dd13c4c16e7d9f708fcf1bf13685613c219cd286d9bd84ed5d3e11eae29b739728ae2bf4064de11931d54aa8a4752f0727231f36f958652958a353eb73d9c2451336d70fe9c7780bccd0d9cb1e59ab8d6511e804173cd62701c8de0d9a3d71ae7b2d5253de3f5dafa902311361821fc17a2762cec5d643a40b065437509785385723a9b872fdc48e36f6d133120faf5dc8face201365cbfca43b427d66ff7d0eb6e10767bb149a7547dcca9f7fac54adeaa2f28d2f3cd1a92cabc52b538f3765838c99fe5b82c24fd48f4f97fafefdeac3e3e0ce674bbe200d8f4ccf26ae81085bf364d6c4d028579ff3ad93862d431311266d529ebf2593c30085c7346a2b8b3e7c74212e40c794e8ad97fec04f1e88719010b9e8f1a9cebc2cecfa3cef9efb40f566acfabc7ccd3ac5fa47eeba8477a6796811b28b90dcd27a9dcc831cacfbbcc555b7f46abc915f2e30f508a48e70e62a54ea2c33e90b9f304bbe33f37c37775a764e220c10033f20d23017e11d97bf71ee46e82894cbef4ae44ef774becea5719fc66ff1a9534765ebe8928f8d58f284130f21396822ddd42c0dc6d9e70145a053e408fb72d9a390b118e62e35d148a408786c1549f52fb28f4e4c4a7201c578822566fce13edfd03c06797e6e382f52dc86f876051773edd98340455e59f66d4364a3908938056b9c66d3f22a4846dac8cf63321423c213639c1ec228732d39fa5137716fa8d6d050137f3c5dabe811bab04f37f030396831a491b667c0bd42894f1f841402bb1ca90309be864691befe52b11c76a55bf2e8085d3e15d9b5691da7c18dde746724f2e54dc9c61e0d62e24f58a85ef088d0882ca72c387684ab18edf71e4fbd8070dca24955b9b45299d1b4e4eaf21421caca35694e7917d11ebd19d10a7b4a1d4724add89dfa674c572929fc582dec0c3f5dac3f6902fc43dd8d11065d24df9414355ec9ed97264b92bb65369d88de4346158d8bbdd4cfe18657666cf68dda4d1dc058378731adce601d1d9c0b3c5311a587f74e2bc6bb6461a57240543a1221e9e74ba18bfa68136f84cb193d5fbc1376143787bc97452285885248adb08ea58f460d9173ba238694aa41a4f3ba18047328ef740370580860432a85180b3e13a9c0775c06416dbff729bb6451ad690d46f5b8af3594424faa9db2787c011734da00fd0ad33743949773d46ca2ff43ea4befb222091a296a81e51bea9a78b0e6d0eeefd7f04eafa6fe2766a8e1fb9e5f1e76fd959b163a6bf90fe8284b41266072f57ec499bab0e5e623c7b856a9086d8517d220b945e3af86444b4669842c2c88080d6203fe7638fbc444f7530d36ef600aeb47e89806a43944cbc9cb38df80ae3e58287cdc5a5b47a69503393ef426de22055b1cdcaa516804ea2cd1cbdaccb25185d948937c3e1d053c5815b93739338d1c3be3d8a925cd5a75f71dae4d2dfce79f46b6aeaecb9ee28b42e2f40a0b9b47a423fba215a17e0b8787dde40847aba1258771a1ec1591803cdd431d4652fa4e7001016d2e4430b75f9e932cc850649cf2275080715bed0bfeccc01b79aa2474a6c7e10407482215d0e47341d7a3a1d0b65974730c22b0433f726f20d4f958ee4caaa31af1fc819f6121bb99f94842623c00b165feca772c0395a4a1329ac9d0fd97f672eee894c525d93a199b1d817febce1e4e5802aaf030f5d104df89d27a43dbb099c24bdc0b5f9a86f27d4d499db97d6055bec65ddae9417eae6cb15f109a09683c09e1c9c59ed5792fb110799746a1844183863ce4202f8206211b12e83e554da246237a77fa61beef505e27647238ef6a68d9946d3da4e90d7ede066903fc47eafddfdbdb6a022883d9b5523c98bc31f2553358d8f28d52d274cf75b62e8e109a8d39baf9c13a30f8deb915303a6ae5e2436a1a8217c1c9c37980535a899e3a2453d547fa0e132638d7b00fe6d7848293e4af81eaaf257f1fc19d6c627bbda052c4df623addeb2ea5284e9f7ae1362c72c7036f30898c284e27c8c6c61dc7ad95c89fc6982ef1b201857a468b1176fdefe53179516c21f108ba9dc83add2bf981d34d93417ed17062c52c64bc4e47039b3c822318c647164cd0f0b17d5ddee2c9df2212c62a745bade66830db79867a485e521e2628a573cd3cc2c87fa7a7888c55b6e169a25c95d93e81fc5f66a2c175a4ac4c652339ec9941f19e8e7d4ed0e990cb970247fceaa40147ac80099aa3cfa9cb118c52137bef090b98c0f192871cd2c6ce914f02123a5148c05ef7d0c99729e4adbf6dcab57e70ef17fc78e31a889292bb4399001cd5c3f6a47f725de1140abc80188b4aaf675f7587b41cd50ce64d1d3d02984b7dc813294446594c8c6e53cb366a9622a8fe730572ad2eccf5fa355abdf4f8a3f6c68a24d753d3895b84eb9504738d5047486dfa85694cb82e4515339f8f15a792d4a1f4047c07e4a7adf8a5351483ea2c8fe4752e5ebba19f1e0542587ddbb3f36d7b6ef48c67c997de90020e671646c55270a82345480dbabb20c197193ab7d75851c4fa3b2f42d9ab989e67992ce95ca9f96b75a9cc7321ba180f95a8a4a14146d37a202fae1913eafbb5a12d874261c01f2a3d5157b535cb3d199590d26ba29ee36923900046d8fa8f898ef51f4bd1517734850076ebfa03aa23750176d4438655513e08627f5aea87d93114673b89b52e97f4434c5dc6de2284092af1346725fd53982242c70ab1aeda1efb4008e5574e90aabc352f9d863ae939288ab955b5eb408b480dea1243eef7a9126731e4bd157ebdc608da070edf78121d009b549c0609488e75513babe205fd84ca61e38f0446faceadf44a4aa82de704e55be20e6df10f7f235aa42bf768833a5efece8165008ba2b77ee0e0549f01d9b48fa573a9412099060bd17d0df02cd83aa77cb867f3b633d227c21657b4efc1fb17d461cbf44c456b7a0e6f9a966ba2928574b082e8b10e1daf13968bc44ae0142905cf1d3690834810c0ae32971d00d1a326efde8856511b1ad7f23ea2f11e1ef88ec4f4469c1167d3ef751d99bd44150d5010d4502a1e2fb9e0558217d857337bc485d51772eb8cfaf252f6e65166f598b9c9b7c54f3c1a966a7fad3574514f982401ade644194070be879ac32376558db22573cabb894e98a672f73ce10bf709762b8bee851749ceaf2919224030c27b499ebbf7f50fefc61fd8f1ffe7f5b51e9953a46f786a60a100c4b28771d64bf3c1be9e819d8d09e5148f1f97e222216ed6eb435af00265627c19d32ac5aed904b197323524f3b6a61d1882963e020e487f2aaa68c7598518479b12888ce986a0b0d87766914b263f09497621532ee4d03bd9afd27096cfc8324f1fd242a4f57fbc1e5b27ecbd8df12297618cd50c22869b64569e8cb6821cece37c4b21df41dcd375a9da79e69d6882b01fa57cd6aa53a9721cf0e42edc2454a40292dac6ae32fa3dfee085e58589509ef1a8b78a99de652b1bc48fca58bc2685ecc673037a33ef926be4f33ee7a969f3b448ebafd6cbb7142501b76f79f5b6c6838a407f0f8277e5098f4b7dda3c9953936ab2c8cabc3a9fd9117c9283d1ba3c76a32f7533537b038f7cd9ddb57fff34652d07b105ebe55e106cdceb68daeb770c160ad5b95548335e5b5a68303f985f783550ef618114e540318353cd2b16649c711c736d3ac466d99d0c018957cc29ab9a85a4b614d38c57411c1856d02e42cd67b79d5143248f805079dc0b3a41864fc82737b8b0f2d77d845ae023c0a67bae1fc02e15f63864b8f917d8ed2e368ec251d953f47ebd4e84aa6c7988b026990e4d7f44e1c7e4dd27b0c9e432a9c14cf21ae719f853593157fdccd1e4007fe021e87bbfb1c4c9e861ac130fa1b30402afdc53c7b0cfaef2e9fae703ee237ee80596e5781df544846193dc635485c2d5314780f7a15c2eae196782f77d06fe2ee945230e682ce2eaef1678ea7ceb8ba04aa1e43b3dc7e5e2d7cd3f271bb3a4e3dd277dddd341990a83397a2c4cd4ff879757a2caf80caae38a9f9a5367bd4d042e6b1e172c72545027d7c4441b0033e28db25cb7eb9e39f33dacb86d38484d0bddc019aa3c8da40af816c45973bd0b5e57dc75d2b4973991b43b7d79ff686b7a7ba706eef7525ec2deaa7b35ecb1dc21c24046ebe1e42a672af8a283f5aa7e23e0537c8cb1db1679516a99b87671774472463189292a96ac0a1077dcb1da4df49487b1f30dcfcafcea0c5c2aa6c2c755dee3034e21aca812523b52fd92e77fc0cd02efadece7ea8025a9e2fce72c72bc0b41a639b0bd9205d2f77fcc5f781ad7594e3f976b3245055fabc1ac2f5f61a25e37dbddce1e86d25d799691c963b8aac2f3f4695f74966b963152428af8a561a78fe09ebde713ed55cb5830191262a23d46afaa8a3cff03eafce8ce1a275f10df7945404799c178631e8e7d5f0d072c735af817ea983a5c68f9ca98ee099a4598b36644af634c21212a187003b50b13ab4f109c7f37550e867fe35a7642a18c79996a2e58e5c11118e24cd39c8ca5bb19be153a50cb84bf9efdc11381070cbf3eae6d37ce2b8ba5f4d01ebc8f223fdbc3a8ab413807b0695430cf7b4d490f3826001382f0c10a0bdccb5438412188a1711eb00b66a4a37c9819ac371479cdf12d239f0110fdcd7d8ecc2ae618f9c0e78fbb8a3100f2cf3c6ca1ffa3c40b6c3fce5d528d554c3d6aef3878845ffb2c548b9995ede44d551a3f1d500adabc1520422d2739bb3054f6c587aebecf7e555c31dd79526a844a377d37a432d65ccda9b484fa33209d03cdca1a1c1105fde43ccf012894f8962a5fcea149ad19cccfaf86525d15e8268be979212860a7440b33a77a2daa2a92df119e8245900b1593cf4bbedbca99ef700971f5e5d8458391f8985996626ac04ff0d363742e2b9435aad4050dd284ae3d2d9f00cca35d0836b8b5edd3fc6ca535487d6699e98d1d26f859f30064db501b3648962b09c52932a8db716c58e990823851ae053b68354374f75753d09d3cda7270f83ca2fea05b403b633d806ae265e34fea86312b079ed2106a2a3ed642c7ea719569a1d2c9443fcf8a24291ed142d566d058ecb223babb11a2d623123850ac19d7e9f5e0f192e31006db111c84063a48f3baf682ade21e47b9a469723ac994ad45416750d8c3e7db4d69739f12568688ee1756c94f120cd058eee254c302a22d3977cdca71ab29c5d8f8fc5787f2a1fe30af7c426085db65c81d49f4260a0725a994bd220ab1999d126263a36a721d6a41edd55fae748bbabb286937408e58501921c4ba4758fea3652dfb24b3588104badfa5603dda57841a9a31908686cae68fd7e7ea20071d62f754fe0ab65fdf57fa851ed899324f442b1795199d7d27844a6c2703d3845abad77e5984b588929385bb8c9f8266c08c9e007d06ca17a164993395681c766ab9996b50a742fdfb9643b39ce7c2e2e6361e628d130a96cf981b486d18ca2b62c26c2bedea229e28f7ed9728d37e26aaa76295e688d6684c96d0845f44b7fce002dbf37dfc72a64a84e467982b06d487238da0045fc919aa3f81e9f8670089fb91736e4f2854e19183180960f49f2ab1f5143e351b1f8ffe73ee3e5f301edcfc3af45f7b63a57182c8193840ba1b57685af2c07df3a65f2c0ad0803c8a330fbd0e205771fd3325f217ecfc4ee850225266d52d95743cdb442703919ce48ad62fe69791ad02dbfd53d1d6329e39ee645f7797583484f45ccdca3765afa468ec56556ffa0e695907605dcba661a33ae8ef2ca830cef435bbfc5af37e2fa83d930423101cf0ba7549dbf06c7452e08c55ab1b928678a446520484284f403bc1bcb7d5ec797fad87d2196a28b4f31781c92955dd444ed54ba2af3f4618e2a5267e30256c2545605a230709651f3901be4f116419f6d23ce5c02d57ad6062c3cab476ed5fe2417a9b469938c3bff774f7b0c40e6d3b897495df8812a6ca1739dcacd62a7a90c77ae8977f5c12f60fd96ea6900139140cf7215b2514252401509fb1f3d43a4f5eac1cdf7745e330bb6fc3dffe4763bcf3a30eadbe082db183476cdc36387f6cb4a8d23a155f25dd7207bddf1fea7eae95aa423f10dddf361b83b83ea54f2a293f883ec0f2d4a0e8981c90190c393f5e6dda3f2d8e48e860aaacc4ea086565d35ab17c7e31d7815acff2b9d9229cb2c8a555b6265ffbce02ae38ecd52e26afdc8d8b268a8e4350456690fad8a4778fd51bc556491477a5e5f0ed0374de1c2ea9d59874e2a9244d20946bc1cdd4204417bb76ae85d348b5ea313d64d2d677c50f7d4f547b6737f9210023368ad5fe5ae9a81292db795a4630b818c794ee2291e10a49b46580bf7385803829e9a62eaa0f8788a22d1abfc75ea6cebc4919736339a595c4e74334aa3c56bb6ad0284115411d23a485332e1dd9f639594b8b29a46ee1faa2fa16005c81d3445a1f99badc610385187a600bdfb126bc13e0a9f21a644711f65ff5b2eb4c06508d59f2c3b75c636c0f4a5525d60920fd62f9ede4d469228bd809216faf32fd16daf66925925299977957f264b47e31ac30f47c75ee0c319b7adc7c66d77e2307df0c1ac076b7890028d49769b9fbe7c8637547753e6ba55329f4b562215885944a13030bc8e860c8c12e25b00c36e585d833c90e7df256596fd807e8735d0cf7250dc2b19fb6dc7dd7c6514395fdbaffdeca9b45620080e94c91ac8fa0d77aaa47066e9ad6888fa881214a8188528250a713d409972876852e71e63585e069f48543aeb40943f43f149671d140953187327fc9c020703255f850f70012d4f72adfae2108971d0b37e79620fb02bfe41ce69095200dfcc699d32e4b6ee8799cd26e7c9bc8a8d1978a4970d51ef44f00c8b3de80fafe11d5de4f5483a07a30225d8930975952c430a62a98414c1b2350dd7d3f690c011993a50d8b63d3a87fb580ccd4db756cecfd30566ef25df5c0bc6f6a8c57f9736a8ed5e041e2a37cbbc42494093a26f65d237edf26bced2c60887569a859de11f53efb8fd1f1cfca7ef8c37a727faee923f7690753bb6310df9dbecbd8b1e8c759e75c4372f23bd5210b2bcd271e726d1fc3bf611bb19088f05a17db04f77f9b5a7797845d07ec7e9eb48a5878e6c0a087d33e31e81dc85702065c32639a0963a7b4d532620adc3f79b9fd875a63bbb64aa8a6be545931e2c1355fd36ac0a7d56c08d31df985655a40670e45929bc59d72746e17ffa2db86c3610f4da6fb93bec5e556a87ab6d1b39cc1d5541befe963070bf35b45275d3cbe666a84320aa1db4a33995274f4521217baa8c01501c1ceecde7db7d32ca12d76706ae7aecaa4722c7acb6a70465657925b325fd06035e33663d753223dc1a3118ad9a88a8588281a611c28209ec19fa6caf98cd40f5b58f92a15453fd61508d20a9a87ca9c1c2bba21eaf5b11ea41b5af3079141e9ae8d0cabd76906cf43c2ee1a41e19790b7fbdc32dab39f7c626e07e39a5bb5ad88fcd39187c7556b2fce683170dd8ccb9cdd86af3698881f00798011e299308a6a138923e2a616de607d72c3807166d6e1cbdabee5518b01020d6c3534a3bab6e54647d5eb5a8861c5398c3823367454b4ee1a54506c7002b363d12f93e152cc1c350d04cd7e9560df8806b6681e5c3c0bd04c18a1779c021e7d7f8d7f27f2b59e3f6622af7de252d42addbc232e277fb18b80eeddefa6471486b4f6f8acfee34b66af9728ad384d285e673a52f6d4bcd34a58e75b0e275f3f55e017f5b92a375d13ef69718a58ac4927fb9f3e065eb2742700e8ecf3f33fac4d2176b5a218dd6ca4e7d1e955dd0f643d0373c89290645c5a63562c5f5e1027b042b5ee6f3c2cc1b610a57378abcb6305508dc7d5cf028141a93823f7a0a32137a5cd946ca772a561121e8cedb2dae16786a45148079c54cff994a2a166fc5cf0d6d35dbeb7868415d77f23a8bf8c2a0a15a15c333acbafcbc710ebf37591a071526b83fe9b6b99e388479afeaf372e33c41eaf5561fde11a6174a9af982a7f652edd18a85382b2c7d31ff586e302ab4204f34b09d1a55a68a5695397af1c959cbac404b3037f1a06e25eaa29e97f81aabb45677ac5c556a6418ce33879ee84074c17d68630e8c9f8bb434caa9f631f9b9909158b4c8f70efbb0ea7e088aed9045f499385013e5617be3d6f074058703ac27b644c5fc94d7d8902d772a987e5192cc0a622eafb3896f29a42ac8eb48108fd73b0e97bd7c9632a70fe5da1927c130fa235d379bc9be452ac2070563fecf272884a0ce95ab03e96c9c85cfe9212feab45a7dde97d92de02e483864a1cc2de730b9ca0ea6ce2ec5d8883fbe2418550ac09c2440ed05cbfb347a88ecdbdad1ebc11708dc3b192ade415aab6c4aeea633ac62003a01cd0007e7dcf9b83bf4aa7e8fcf3d9062c17c0e73de8417740d0fcc42faef9e398e416dfd558368c76ea21e2d8150282b9c92b3a6cdefcd7bb178c3ee613a44a769d1589eb8760ccbed32e63454b0f9e559325a05ac26f0f965bae726a16e45e6f9ac9d2c9aeaeb36d4dbdc21c38f68a2d21d326a5d481e05e4ad6e4463fbd40eed90298be9d635ef49c4b1529d87158d2ef2b7224fb5f3679a8ad867ec034921223a8dcec8a4b9040dabcfe91432a2a4f9eb0c67d1de66e07e0f15415947d941afaf7a9f19c9da7f0c26d031ab05eec4ca32a374f9bde5cfc4884c2534f3a29940adb231cd5fcdb48736b940ba10480fd5535b770710346c6ffe7d6f0b735045f49f089e33614672a5b880a90ca1bf5f4c82dfd8ba7d3a55ba8ce38928297b56d11bd58cfad2e56ee45fc5ee2a2e82cf770ac3ccf2254f5f025a91b9dccfc0e6226ec827b927feed909cbdf4c0b604bde5b13319c768a3fd89d24883c12732a84df9e25c00850abdd0f3f08c885d5111f613e50d30e21fca1fc72456345365544edeb741a142c45ba5a67459e68426a506e5df834871a9db0f70f023d1400daa28a0dbf0a206557bc49d400d4aa63c1659baee31450a7b86d6476c6e9c3165a5d053e365274bcad2420fece478c315939609ec234a3dae5903fc9a655f2954a953fe8daf6e409ced283a107e92258dce6fe41bc1b6b2db7ee45a1de7edb876d1402af1f9ebbc469fe8f80c80aeb0309f54555d65fd4ccdd761e28ef94c7b61885a28a3d5254c1b5572f69d2ee9fea981618d377ba435600f0ca3cc17d2443953443271d1fc13075f06a7e8f2f8bc5eb5356ee115ee77638b8b5df30731d66f6e7bbb3bbb07ebaa762f997e22b56eeeb63ccc5283d89a84178add1a12a80c01ce50f71a9d152d12f979288de078c0914f80147c722c02083bc25a7c15108661617f25b8d52324ef3fb3a82ff0fcf24a7904fe02c13423fb3fdd416547f63f73f7d248f697b5a042e21b10556181b704312cbe49f26621de14fd208768e4196188b06f937ea2f9bd0204d6818aa1a4ab45d58d0da2f163623468ab7ad13e094f6a37802d0f6ce215925e343c4f3b2f0adda8bf08d769664b8a8225fc4f2a375e6ec1b07e414afe010a81fa94be9fe1771f410e9cda6fa08412bf57124c80c531c4013601cdcd30529b897f4e40259b4b5745bd24facb39c810d345516e729dcb14b162d8cf16e36b8bb9add0bdb40ff8fb4a63d45648f2b90c10bd773235cd56e6280f4fad937e9b294bc67657079362c0a92ba685eec9b8525c701942fa2aa612cac307e12d85186690ce5e0eaf125d25994d21baed486d39a11c806ebf0950e17426d724c6c12e98d70b40f881f579b8d730f585b4a12439c5f4ccd531f2c926230a4fea3beb27fd1f71ad6838463f315be76c626b96b4999919d4e3a7b81e493b4d0d262819b6cf28e1b9933f33cc9c5671154e2c13247c77e0e6a56acaf2f49afc68cfa9878c76fe35f29cc3f9cd23375dbb0d04fb6f9e0a86b7537c2145b4dc1238f4c131f28bbc0779182f68f5bfbba58391318533ac4c0607e08593bc9a0bb08098253e3cf1f9d5994cfd92b292f8358e2507007cef2279b6edfb870d9a74d76826b93fee923eb6f83cf4610fe0c22658b0a53bc0fd86822b932f0b00f24f847cd6a1d22e5cc7bc79bf6f3891d892b27a4045e86bdd9f092099b99da5fec7d921cb8d6159e6d0b7030616d3e106d06be20b7b5d66c499a4af5c379c432ef774ddc3f118821cabdebd6739e6c6da51fe80ecdc1b2a3f79a3b863a961f23ce257567e73ed2732ddc8f8b7db32a505e1534111fa211750356a26ebd500678dd9f31cd6e378634806d6bc2f09fb0bcd56cd5f66ae1d59bdfe5b8b189533814c358865fb45fab952a0b00e458ba52957fa42c85f5aba8337012cd56ed1e215a71b85e2843ad255e43716b880bdc7ae40ab369996f56ede54b4d32bbdadbdbe8e72584a03ddf8211dbad0603d0165fc3ddaa572340874fcb16f9e924a254f6a4cbd0f797f15060ddf319695550bd8f4a2481ec0b719cd6e0e96ce20f508361ae8fddc9f993734033006f2e36992305957c561a505c43157daec646b825f3829de977ac0a4f6bd723cbd7341d7e20f30c47554a6755586eb26133c1008fbe67938fb7032c360a5ae64be6eca707d4115d1047c7818de7eb630d6c2030fc9b07543a6ed1634e2f95400599fa97ff8d90ea44c90107a9233796b9fe334a03aee7210fe22826d9c55379434bab789de032f2d7fd6a92ecfd6630d2c22d7c5b6ef4f3d72cab43ad884830f9588bd48f4d2352422c303333b516325d48a8281cde444cc9daf3b8817059a21daeff7ab41879420c347aea236f065cf61828473629470a669dfd58fd477b650cdb946a395ad0ec31310d15c2ba975ec3f828e2742a38cb49f70c169bfd58bf6f52736a032993e4afc4a0dbe7be3d8d81dc04720d0018db7fd883cb07f9f669f0eadc7186ab01186d447a7ca6feb48624fb8c4d397bf05d1cf9afe7f7640d461b4565304169d06d94742f1744984007841c2503bfdef9b3486210bb0625b94406b285e2b4a1de9e340c69cef95dab37658d78ea61b55b7685d4a80ff6928f07b7891fb00a2f1085353e7d9e0cc8015962f395fd4b37cea49873bada5eb3b8e11aab8bc1f70bac661952f427ffd18603ee87d03fdff0df9ef0df4cffe9d1b51f88250dd50f0f9abaefe681bcae939ba3499413c64dcc8466f349a4a2aaa4d404f265b091e31fd11b8fab73fce04d868c43d4d3062564d2ce2b3fe32e483e4fa2b6cdcb1e6284a289e4164492c472ab828b4063741e207b4c547bc8f2112833b766caf3dc3cf427cab0794f6033a410ba25830da19a503cd4a6dc615b96db4d4ab9835addead2f52359d19ecfc058299de47ee461d30dc9c48439802b723a3db7d0008230b000e108e80bc5230d62f43ed5d84736fdbb317e9d54fe8f26d9384ecbdc9967b4b99524a01a1091d0a3f0aba4469f8db4fdcae74c88801a18ed4c9a1aba6ac1af86bd32a19ef199ab3735af2e92fc3edd0a3a328fd1ab81d7a3a6e879e1d45e96b1cc7edd0c3a3287de6be13f76917df2e83fb56e78db0f41d3cc35698fad2e4d25b4d8b650d51212a6259f1ec9687bd7612cc6f6da05f2ac8a3778857883d1d333a74f4ac14a53d413d42357e3f638d37cd6137491c0c908e48c96167fa95c25e6b250eaa673990d6d776883d211e38f5830f214380d0a143871442520c51c191822847be7a16b5e85f549a4b72fb240eaa278411cfeac9aec98ddb5c316b3cf44b8a2245a98dbc99aaaa1d7a3c4dc91a58e377b0d73c3c0af43cfedb2cbe3d5ba0dfd52f8f741e1fd6c646e865fcb73632be89fb0ecea467dcea0de923aed586748c836a43464549ef1815bcbcf4ede6fb01d017c9e6d0e9e83a2bcc6f757cfb4ae1d4d755beedaf8bfe9be14941ef1da6b05194de288ea27487297214a5cb36f1c80cdc35c148160705e3bf5de27595501a2efa6f79fecbf141941862cf87084bfef3e529ead309f230df788ee7e461c760b208b61df4b36c73feb378abb932ad83f1a1af790f7dcdfdb309c4b76b5ce6dc567346e2632ce5f28fdd779241e3607e39723474c845a6329f12290d9be2c9c6ab0daf3310319ffd6be8eaa6179d8a035b1c94dae4863032f50674a828e83868d838d9f03398228dff687cf4cde543f75a25a45151eb326f24a49535a8fb5eb867cf589749db99d4464ff5dae5c549f5da2d0eaad75e7f451e4eed193e774218b175ca281f84b0175db245834c653e571a7e559afeac35c828c82119b96c82b9d4f486e8924342f240820409e7a15a808fe5a32331c343f586cfe5a36f6a80e88d64eefa1037da8d9c1e1af1ebb107d8ad7ab103bfa3c842741857826c18db0d71b911f9ab36f8fb00dced07fcabb71ee0af6796b61c11fcd7b7318b7551d32ba6f466f8c508067d26c37d40c6b396323f2d92e170307259b3a3d1ae74adc18299490d722a1631bab4ccb11c0efa729843aec73a06afddd13087534c36a0aad9c1dd11375b05751815bb2e2e31598ad0105601a134aa5a4575ae1892ce3b8cfbe44b39f2e89c6f607af422948609a79c708a5d1e3195f838fddb127cc4f11f0b7143fce07ed479ec75fee2d94a8793fbf63bd9c9b0d779d69ab6ac3549d5468769239b228c503233b7fc6321ffb4a8eb32cbb3174e9f59662bf9c839d73591716e1f2ac161212121211662165a275df09c5662341461595b8d7bb612832398d328983364940373240673ba0613bacca2a64a45a7aa86fcaefcdd9552bbc2541a0eb71af7218bc3c8a33f4069308f0e014d7536f837bfc5555597a2a4b778c7b57ad2479cea0de990c64bb741c64b9729f5f087dc97f9082bb9f4ccba640d36d4e03bb8ebbc5bed2086613d941c83dd27a513599fd78873c94ff08e89e3465c0d1c03b117dd068ea1302a7ad6d22127d993befb99c459a24409cc81394a3e3acce154e72a198f0e9be0d40cc80357d0c9938f3d3af077be83330ce6c01cc804a607775f116d9d08f8d28528bdec64f8a7453d945c7644ecfb74c19414d12aae4813c2a9edbe91af0e443837b2dff9a8aba1c4fca00d10c7c19b8e8348304d833a1f610ea3628b605e1ee33360487066f078f28e31d16b283189ac4f27026fd88b6e641f22d1f8d18dc81436af46d2c83b8e65385e312a3af917ff58687156097b37365cf7c9dfd13470df3e0da3ae08f6a2741a2e83c3781146704a69b88ce1aa31dc39c884bde892833aec45875b11d1a5c4ba221a1d8cf14f8b66f00fe61c21bd084ecd885b0f27976e6d404e5e04a766787423d6466e404e2e3122f6b1ee63a1210646062efa0c4e6113198fc17df385fb76c94737719fe6c20d71fda7429333b25fea78602ffa90686d9d50741fad92e9945110c62899574e9e9c528fbd0da2c136c0c0f22c53ed02ad92e1560ccf66c8e096e5db5f3855d4877d778d9c99696669ca299593bde8d35d1c5e1cff95d558c1ecb45b1e925fdc3a89eb71f9ead0b543b83c9c6adfdcf28582e5272bb8176f7df196af949767970ba7dcb4fc74b25c7cb0e437df0b5a2b4dab1820996fcb4712fa15a3d6303911f05d5c88d2bbb8f8ec6173978e887d53f75d442e27415865a42dcee6934412d2280b7ece373cb3e3e97878321e4dbde6d9954fef7b7948a4e534f67aa688ccc310017f5d88d26f07b71e36df8e88fd8be45a738bc39e15c4658d607e9eb671dbc3deae1865b99f4e5336cf1273065afe2d8feac52d5f2a5bc5f2bdc2a975cbf9094e5d330e9d9a98ccc4f20fc77f3b94c34adef2174e48a32c277190bd8dcba15ebb46d9c9d1f1ed3f3a509c68946fcb35dfb81c38d8ebebd2ad0609e607ad274d50e194faf480ca6b17def21de294fa3c61626d95b73c935a5ff12ddf299c926e51796b86bdee7ed08db059d761a6ede26b392351552de178976e86bded7e68e1befd16df4d729a646171f5e101cef248e921fa34e88753df7ebbe42db72eb04b38d5e296b74caec98b97b821d6721267647feb268073815649cb8168d54bf703c6414e48bbe52a63754478a7c434e820f34c552a7fe6458af8a1aa53a3b21312bc2d3e9b81c267ae32cbf4ba9653f67c7860f35ae5d567074b3edb4d76f217c2dd20d43e1cbf38622f478d1609e687f5d2e1cbeefbc05f9d7296b94a1693cf0e6cfed3f1997f0aa4234b659e830f0552d4bad67d9abcbacf3465f7c5fc9e3e9332bf538feec45ed6a9af629d02f9509afecc79e0547b26b3ab837ee294f4acbb3c7313a7e4da586164ca403c50be70f29843a26767de5550af5ab55318c56eade456b9bc91303ff82b4587f83bc45e0da6e6576a597edbe1c71d6ad456b3ec9da6841a59be1db2b2a5a2342bc41241bffc5b2b3ce67068a730947ee9d549d8443d59dfcc753dc0bc1cae92e8795d21b15a21b1e4b10041d02b16474419c02b164738f9ac0467b0a87a368abd5b633455bd42cfe256032f78652fd9bbc208230c2ffc3a771a7bbc5bcf56a9d5a7d92a9d908340c0188ba93e3b448fb9abf46f86f48fe5c37e7d551544a3a4ef63d775c1e76d8368558e0c628bf9fa75611b84d228d99c0aa82ac72ef965b2f202e8a57ffac54bfff6088b3920b809b0279db71aacd3c8a2b1273de6683992a7bfb61efe986fa6cda2b177f9a7545e3a7b104ad32fbd08a7daa55f4d343749774eb54bf76664abb44ec6bc7c29f3b2c6af8e05d9d3f482589831ba7acb528bb133c26b591dcc0f8e1d11fcb0598b215986b9a66dc6ed47a9ad9cadb584c81f845063f9ee8eb15b2a6c93125620840c998f50a085db28c894b9ab3473f3eef216651aa10561376c666cad2332e58e71087bd2af1863843042a8ddad6a6dace245895dc085ed90c3c0fe123133c30e4286cccccc1c9b775759f7884caf4f7eda641f7a8b1b62ffba5c725ce59b932b2da2bc1547f800f930f98c95b749619807c8c29834a01231a0687ef27bb64c470076617ef363f4d3f400642fccaf9f590c35f4e0dfee8bb9ae3764a7a9b107860332dd3a0413ee60e850f660410d82949779f5a1e289cfb6c955838a09f3037a24129dfd8b5707d9b35cd90b2c6ea0cce57d22d37ec2541f1f25ec83a48ba93e2b28ff690f7f9c303f79f3d0b515ce431ed0257b6a69c75a8d1dcce82a03d905198ce5d1929806fb894ff688066f3d68bcec84a0f1d2b391365f8825d2c15f881d7ab938f0119936f26cb32229c2e8236f0ef3110747ddb7dbd643f404bc6e40a27ffcdd23012fbba9a9d2ec881b9230c04f84f5f2eaba03123b389d304faecd7c33af318a3d7bc264679c96724ec5709e7d8b2e564d1e62d55261d4baf8274dfecd17ff4e2f9c8973e1545170abd9a5c229ad8a154e3969958b33a9c5d9ea61d5deec0fcb978cea94512397594da645df3c5b2e6e4676d05fd2912f7966692d5c74dd4abe83b76df31efa5bb7f9916fee9bdfdb7416dfc1913bf22c93e44df21d5de2626277628f835014fbe8db9b0c6e355a46f21a3b98990e5ba7b1b7afdf5e63628f33dfdf6db36cfeb737dff67ca697f29d9e9bc9fcf4e773e0d46ed74327c029181e84740a04a762077d0cd1e6c944c59287dd77fa6561cd892b8080de72182096472ff5271d0b6239c66d181fc663d7d683e5a5bf38056275703f76b247e9612744e98f5cbb51643bd8eb184c54b63b959b79a85604e1cab39b160431cf37c87ae8af6f3799ebb39b28a7a4efefaf157dc44bb27c29310cf31efa981f79c97dfe1208e97cad5f46e25bb17d475f5b4d77eb2af49f7f9558a389c9ee355885c121a2679af75ad98d6b5272ace42b2bdfdf3d3dfc37f891b70e625df76c4a84104dfaba575084a610f5959b253a4ff0fc0449a1c2292b9ce2478283cd91701e3888de3decdb14567ef36c0bd27da6599a257b08cc7bec7fdc6a489dea8d2f7306e281cfbc7debbe0d881539213e60b30189d9b61b90e6616febb43984cb7b389501895df3b027a940b23ac59467de7ecc5fe9a34e887dcb25d718d73e6a63b5232946975cf48bfb3cd03fec75ec7aa536ba7330bf7ef2edfda479ba8753d14663e9c4ca13e0d5a7e7e7b35296696e3974686d3dc4f68b5be892838c3262e43ff522dab37f479e23af1742251accfd0db2bf403d4fa4a0220593b8f5b0a6173ff909c665780c574ecd7019884cd7b2c9b9f8882bad6b522879cd675c89a2ca7f2728a018faf698928bcf1e589cfbb41fb58c5a3a1897591a913ce33e1657df01c65b7c076796363992ebb6807d986f3aa9ab41c59c3e7218c4c5359fdc67e4a75b5b9091979ce49ffc49ea605a5ceb3e981e589ca479a9fb605aba1f2c9db247d25cdfc8973e16b77cecc3b84b57838a49f2520f304eea88c0784b4764866b456657447b984ed93bf96886abcbc07df063786f40d635e7edc78c0eb277ea5c46a7ecc570c85e8c529052f7edbf0479f1cd5fb8ef03bf957c37df2dc8375d03e249ddbf5b10adeb7fe93e0ffc16847ff3519092cf0b3ca9fba21be9df3ec8dec84ba6cee4d14dde69da88d35c73c919a9d1464d830903647f7a47242bf97aa9fb469f39911fa39f8ef534f1355e7da428fa6cb7209b398671d9e4485d4421e531cf4adc67e44bae9c6a71175756c578c9a563f1164ed963e93ef99a6bc9358fe19451dae625ee2ba2913822f6a7c3ed07ff74ccb1eecb7cfae4483d28f3a6c3ec485ee2585ce33eed35efed47c959f835eed3fc22f9e44a9dc6dec64fea8864be5a5744fbacc35ce75fdc77825b4db47958447b22f6c7cbcf602d0c432084bb7177997908735c584565116d95ec4d4e869365baedc6e8ba294f8938205ae5600e7bbacc7dfbd133dd7a8029d81bead197d3c85b8d761007a6c0b55b8e73946308398d4ca07842ce1ccd54bb489d65790be68cb95672d8452c7b08b71e4338b504dc6af8c45ec7f8c53239e51d4d728b9beca9944fa55c5bcd2eb13786708cecd956a333475ddc253ae9e2980ba78cca9e570afb642b072c790af39345b4eef618194e45dfdd26e67743d3f16b8201725dcacc45dfad267645b487ce6e011d4f64bb4b90a9cc37f3cc905d7215e67783dd6538655d70326a5d3315f1f2822ee5f5f2fbc05b8ed50ca1ec297b52fa7571d7a8c9c8773454ed1b8bd5cbcf9483a65a7185cecfec11bf565c81f3bb2a4945adcad9d55d649ca6f55ec1d4b13e83a393da644f0227400284222744e127490fc10b2f5e90031ee8200a243cda55aecd77f79c39d8c3c19eecff64c2f82fc7e37052022a6831862c66c0021edffc4e62039f17e4a0a7064e5cc1e3f3be79a0e4064b240902911178fc808b317cbb37e1fb0a2d2831061f3861094b38028fd5d7a082299f9d53eaf38324c855acf2c1ff8a44cbbafcbaa005396bf7f6de85ccdd09713ddce6754e69e7eca9bf40090f931fc0abcf0fa47ce422f71969b8cccc51d9e3d8ed903d72b09d1dc2d4a654ca83597e748e425c1f998f74ce1e0c42061d726074308b323017537d8890f39ff61cf78b3782057214c9b1050be448f55a0ebd89884fa45d6b6d2f97ce466226398d3d662dcccbf5a1477f494447447cab23023d76923949b636476ae0c40b1fe0dce0882849788801f2805950210920247184a214288187ba063144e3a4a855ed90359c644e31fe83101f8608f161087b5888a02485eeca1ef941166a40852a55a21001143490052f7c7ab002a22cb850c2944277e5e4a79853ab84b4a55840020c9650c5175768a20647a278829226e494c0093390021425020065a78630081912e483902340d069411453e4008b2360a14d6081133a9872338610c0a08a7645110b18a7d309c78cc79cd8936121434eeec578f5f941cf493ac9d6e555a5694955338d5a21987f3a666468bf274e7d46e2436ddd0484e4595e7d8ab0e4755bc1fc74c5c35724c7afe7e0835357b783bdcdc1077b4e205dbee3e27c5c39a8b49e1c4861157483840a8fd92a0434410559f830718511b4e0715d91c597fe72698517fe72ed8bbf785c7f755f911c5a95a9ff69ef7132a6c969ec9d18b5be39f3d3954af2581b1b1b9b1b1eeb1aab248f7513ab74b55ec309a6fe2089afe1d5c70753340d8a5122eca1ba020a1212c1664ad3bebd7ad64d2c85d1e117fa3063c39d42670a2753ec4cc1d331c8e6c83f1935e83bc28174cb25f4de7838f21212c1ba1d88bfb25bf5640cd22f3d8b5af4de7a801a6f406437847423f2556d58db25a5a55b8c618f4fecb19b3aa8e3598584ec978339c7f30e52f0284a6307a4280d5294421dba386e215319c95b0dcba8b71ad30c8ec96269335b0d0ef674b0d7d9eb697198c13feb935ac45e7bd446fb174f331487ccd5619466e4ea314a83b97a0e1dbe4a58a58351ed01c0f1d9f86cf06e866750d5b69864780e39e8c841c78e1cba28c6dc22ab657564b8b8f80ed6c12acdc1c59ba5d47df04bfee23968f897e38687a88f7be83354b53627871e958606876e2d0e333874c9a9181877877e521a191c765f111d0f7d86bd1c59c091a3477b86641add47e369e07ea88df619b81df6467b0cc7037bed309c10f6da9df381512f43f783da683f713ed4467b33314f1e9785fa1c8de2192e66464318cba217cc6d0230717373051a1b35fe34834562afbe403cf4dd38009aeeed852e98eb90c95c57d882b9ce82b90e573057b341b508d2a0181f574cd034551a19520d3067ae4315ccf5576fcaf4c7157b296051a5a1f1eaa719af2c333095657531fa47e3bf19561747431d57a88f40ec69a1c58506266e6e6864c1c534c3caf412b37a8189a14114c83869b25571c66c221bc5c53c6970c90c4d9546c6ab673268f004301a34418ca64a3383064b4083067168689009d72009380d8ea0d3a0921a349844c606ad898ecee866091bb224fe9bf16af33ad0f01891dac0020034cd02a0412526a71aa5c11b01683089016810891a1a14810d0d229904b8c137666634559a9ef9198a6255748e5d5c318a35d5fec9445ec1d55cffe20d9a2acd0d33370860a3c6000480f20200001b646ae838a741c30c313032cc38c988f162726961993324551bd0bb3b1b9724646d85a9e98eedb5d6615cb7e23a8435116edcedb42de67ea1aadb82ac4606916531ec2984315a977ca266e4446d8cb2cd749a9b6c26afae3aafae394b6a72e0471cb5719a198b363753f7683586ede5267b2d5b56036b787a6a9e708c181b839fbbaf013bef6232bdc490f12243860c934b8b0c192c53860c192519a44d860c19011831413d2b697737840d1bb6b7dadca48fc86f952c2bcd852cb5eeed87f5dcd9fc37f32a86082d09359dabc530bf29a5269d74ceabb718e627a536379375654ef6745d0bc3fca64cc993f9d2d623e695bdc9526af998b99b9b9bbdcca5c58565ba94489b968d3079b9b8b8b85871068b17b24c3921f516e228538662040246eb9250cae6956a5d125395d828d3a0a635af36cab48d0449a4e625a9a69b9634e5484d909e78f59293265e7dce27afceb2d3025b5a9ab785ad1459b95264859110fd00fd4001fa8912b4cad925cb647376c9e2f0942aafde54a658210202470e1d391e87fecc2c733784d18296d5bcd6723784315a17bcaee6bd60b4aceb92121bc1d1a8794797c4b0d128cbb46d6bde6d9469dab69148a509e76cdeb9246d4b256de7d4968545db1617e8e2d2bc2e2d9a2af7497d79d134460c4d659ce0e9d4bc2796ac455bce05ba68cb99b61efbd2a42df7b2f578d1968bb1f5d89f32a00c19cd2b4392607eb05e2f9204f3e3c3c073107bea044841a64ab39d11e601da4a7b4146a6bf00a10c3716ac9dd50972c2da11f26640a1c2134f8bd14aa1504512a3d511646278bc9822c384661d3c3941c79da5c227087147a8b1d01961aeb73391ee14a011593b573ecbc7dae982a503cb274606d6ceea0439b17634a2127b43e83c98ecfab063b8dd91dead428e88befd8b3e71270b5107d1e7820248dc592a7ca8883b23a219488be819c230cc9787bea361ec279a78d84c1ef69256f2b0913c74be52d47591de7908b53021ec556bbdc264cf3417fd378b62bcd5f58d105a49efb00e9e98a0772c22eb06d65428f3d1f45195e32be27d8c5c9831e680de5076dfe9ea3e9f3a9f0946e8fd0c2854e8c1470b78f075280c96cb179c1ec384acf1916f848487a3d543a209611090f0edbce930f3b19b6aa31d8660ee105b134446d845cbea8a8c560a852a9090303f2c305abdbee0f41232f5d48bd6e5124b659fcc7b5fe3f3e15bc61b42e25ce6878d8b712034ee1433818c339d821871d35404e3b409a566e4e260f4a2abc6f6fe23dbc2112c134790b460490f9850e18313802164ca144520b2c2ca07446810f090614c766597ec2796af1bcfec4e215b12bce69821080560a0c10e7480852a78a86bab1ce0852880e08516e040080a1e5fce5489c4cfcf9326b058f265cfae907538f2ab43a6bcdac279975b68b2d0720745263995f516f3baaeebeae70bfac8991bf9f5f95fa74bdb47a32e551c82d81beb2d34e775849d9fbf7cb98f56c920160799bdb1a5ee9b40dc51e14a2e5be5c92c0e39ec8dfd4e53ca6c33e9fbc097ba226a633de9eb392c0eaa37b0adfb4ed2b5ee9bdc7d92ffd39f5fcf38fe0e9aeccaaf9c1a7543acac5244e6a36b1c0c90f9d1e7c74e87eeaa30824d66328d00ba96830f1e7040d7e6054f30c7c3d5e6de8883ec5940446fb994e14c26f67617ea07f5093889b92e953de51baa106aa132df08c7a39ca0f09cb386cbc498a20d6ce8eb4540f2ed6e698aadb4956915b392a921ad4c78e584c4a39287454b5e1d56e155ab302a1895d56ab5c2aa8c906057a2605684b02a18912685a2fc06b1b71717f3dba04b855169143b46c41815a632835169150c6214fbbafbe934312a300aac02a77c504a142158a3061342f975ed69d358cc6f7e07b1a7c5fca2124e7d1327c886531f44f2f33730885313c71023747e968a929d285cc464d5536e94e609a5e1b7d97ea03e3a618fddc41e5c8f55d18651ec373333c769a5d18989bd39635cd406fb77a94e517160d11bec3ad546d0c44c5ce333c5ad877f7750c280f20a258c1e2861e0fc68db98691bdbea9e3552303ff8b059379246382e2c207a76260f1f4229cb242e7929fd63c18e6c7a8e16f78f7cd8f58a3dde29728a5c8edfe30195a6fdf396edeab5ea8d76853af8c38dc8629229675949a100bd932690d8f4504be9e1c959c256982808ca134e6e90ec941d5af530c9d122b51225e8676a54894bd63708ca134ee00d44326568d5d34c3aa7c84a94a09d275809df5099f2b37a9d6572a5e85528cae3d86aa0daf05aca84cc3850af52666cd8b049336a433d5b4b9baf488a2253853a90c99522a1284f761aa79554a102f4d304ebb0cd1529423c4f1687a8880f99ac8f30b783abdba4284596b1d750a67ac6dc0a61ff2a499b0cc10a1190fc17b0a16c3784f9115f880de33302c266028c91c1b15d8d8754e4fc97e3085d3117a718674fc7b00414ba20049f2868010c308a25a28082082fd861e20a186c573c51c3228153ea2f8242b0f517dbabcf4f150b8cec3fcd8aa2cc8a2a58015e7d7ea0f871a245e6f393a3e305f33b9db2c83c467dee6abb9a6bae1bd4b4515cc92738fab9f999579f2a842eccb386107a0fe9106a1a6c8dcbb4ecf2be7c745d162fab73d7437f06663b454463103295e919cce89fd42e6b6606535387a2076aaa18c9cd6939cc0f93b373f7b5b8c98ffc0eae02e871bcfa0861c9679776bdb8f88b1fc956caeb6271ddf6c29c394cf31197b97c3179231217bdc4913c5bcd832ec3a979f99c3f5d39636d1ac11e7423ec41f761687e1ae52fffd4ca430f0202c129d5efb63a981e17731f2471cb592c24eec8b3a89422be3df6e06ed387213f0031014e911cfbe47f1a45b2a799d883b35b306770e4d0d141cfc1070f2c845330db49e8ec163c02e4eab483f9f15d7ee4a13ba75a674a8f923d194ee97f310f3f996fd951104af287aaf7f560846e40e2b7ff803636cabfdd07fd0a209eef1f1e88d0726bd3e1485b1b8441d0362c35e86c657ed7677ae8529bddad34977559d795f9f95f97a9c6e597cb78979f622ccbb22e9f9cb2661804bc5d83a0091c4dec9dd8e3a07e617e26d329064238770a0bc730bff970720abae9c4a97608638c702dcbd5aa6130cceff4d6895396e52ee3593e4d9ce26a50715dbbd75a4299bc243719f9655d1d91cbd9bfab83e1cec4524a29a574293166df1921b06f8ccc85f9f94728e3b16559dc6a4108485e00421deb30c088aa98d2bf99c3b2b2b02c280d860e436f60b7785ad52b0b0aa79ac8ca4253dd8595c5d360b0c0f0ec6c11a9d5055559436a4509c35b518e8822211288c4b3431b36005f495c4c84d1441691456411c126eaa248d42a1951d1da7ec826e29415ad7875180a0629b18bd4ddf512c256c27dc3a9a834ed404b8298700f3dd1549e34d10f5449eee525172dd6b888533160e4e108ec70ccccf4aa551814a02841529e1d9b52e5d9f9e73feb0a6711591b3b6c65113d7b2f43c5883429baddf2ed85beddbd6b73049bbc22cc4f9a4c32e04050dc61d72271074a99ac4908b8cad45326cc2cffa0ffa153f8ef48a6303f368cb7bacfea8224f90992e467e833ddcdb2822449a9d50549f2c39e7e90243d1f24490fa73e0b92040a7bfa315a5690244192749024507e58353f489215a7f63948921efd2049786690242b4e0b92a4873d7ddda465822c761e09483e8b558c9717bb137bbb69544c76f53d9dda8b798a316a9ce234523183a258415622844153608461680815420861c78e1d638c713908218cd1953d9e08617b8c91218c0b15c26e34021cc8c3691184bd1ce3c599463b78f68f83b139f81984bbd189d10eacccb22c4b8bff4a503871639578ae3037425277315a502d1b1b0b09ab3225d94d7663352f9326ce4806ee34e29c25c8525e2d39a59efad7fd4f84e11364f41d0c217c82aa76ecb461c3861042082184103a7908855e15e301e6110aeb66b4e26914a746a32b94a755a320204e8d86aed0d4480ad756230449d6c31a39129247e6a3a0568da80c716a5424054d8dc210b449288a7dc42d137a03fb884aab661a55c4a9b5612f0c9ada10a8c74e85db027cbbe47953c006609f6955a6820c064cdcd874b6b0d3ec87ff42b91778e83b778b788892bf6ba3ea5d9d6a992f13aa4a4255de286e72b248ddadf5197723798c3a8c934d98eb3c13a178b66e68f8b5817e3aa97f690733990d9776321be611129ab5bbbb6183006eb3aaaaec8511da640c71cccce8c891831bcafcc2de2246523b81ade4ab2d185555555595a5c2c57444b296c0a8aa4e86496823faa7a1152feb5255ed627bd53f2e1aec225a564b3662d1320deaccad465d8940daa64c82e5e4d509c922826e252d092c2d2ea617855dc408656c20c8da7962edbc7a8c24b411fdd33026a18de89f8699174798eb0d29708a32cc60181936c688a0d71f188da9e109b3551072bd1cc4290affb07ebb0e2a62afe82da06f1eab81f0df8c0ee226b73c7693b277febb6c3a082b624f0897cd1641dc4f6c626cb1e4766341500a164c9719cef96467878853504769da0aab30243b3a3b3a3b3a3b3a3b3a3b988db5a383ed4421aca4265b831042d8ca49c8425c5ac9594f30ca09770ea798b0cae2b19ee4482a39abb642db79d283d94f9aa777d863cba63b2e3191e2625118c5589015300c075b614b58a5358105592b2cc85a6141d60a0bb25696a63377301c2d0809d5eeee566eb2c77068462a56acc2aa18af584112af2841f26a2d51f26a3159f2aa13897470e6e923d110acb076627ae059925390afb0ca42d23b5eef785eef78dec2ceb2899c9fac9dc689c162ae999898981819199997f234e7cc5601d31ecc56f25f4caf4afacd7fedc4fa61145b616a1c8b2c274a13afb00a932265ca942a55ac58ababc3702c1eabc77ac2eceda49f6095f563ad4cd6ea5716c723b48ec7f050e3f01456b11546b1f3952a8dc44a95ff9cafb095fffc99affce7ad8483b663a2206dca569dd4d43a3a4a1313c3bbbbaaabab1bf3d15b9561325e8d2c7234fc80df2473c9651967713e70437ed041868f9d102b2c1960cc5f1c8e1cec59ddccd0fc1448b5430715a2c5ab1092546dc0fc2a173e148190a9cc872d0f3a06ee205a578c4b6a317a02c18e0e600ee6ba421ccc75f8c45cd71bd860aeab13735d633a89ff4e1f0d9b8f4441d08929e6456193b95e03d8049cc1848189898989a17182b1745aa786d6d1c962ae7f3d83a64a134382984eb3e49191c2d0a47d31428fd08944c99e4ae11e7043bd9adc388fccd54f31ae9889bd269967960564a6c9c8e116a71c8c621c40661e7632ec49ee15645bc87216a751ea3794006c43f57472fff6ad017500510016ea8a02c79351046054a3ae55960000a8850d998caa364f3ad26bb0a4c8c45c1d4fee647aed30fa07a11381cd95a606a1b0f8d420110db80549834bcb0ca61a758d31c1a8be683274014f2719aa32cc880123c34b378ca64a63fa4f555563341885d50c3c8d8ac26506ad85060d2c4e2367faaa0d384b1da7419c9943ea6e7a660d5a17965b9f6c19edebee6e1b540180b584523e5555959cfa1cba7afb3a115fb5a19d35800cac462b188c56af2e80d6f138000d56515555551b0d21aca1c12dcce50c0a0f8331e32f16731d76564cf8de60ccfe259a604cfe0dc25c6f30e6fe8231b5bbaf010fbbe84f6604b0c13708b0331a07601473b92237b61a7528a5f3ee8c303b9d21e97001ce251d6bd5c8550037862014b0a1e7161f48c2892d2b92657977b42e6b7964231e2e3817378f00505e50630128e93c634412967424115c6144100a18b46479628a52d508880600af26a093ea6a04d42a1f4040ef833df6919491144e7da3268c9aa0401108164939e7e9e47e7a7e1f51146868171ea116776f3598c7ce8ae1d4e598eb16988c399d72e8608f65b6067b1e5719ad1a720db19150f4d90267a498ce781ee685c6d562315af167a523478e95c5cd24531956ddce049d6d1e6e84fd5ec854e69b39c9d0d0739f59de139c62bcbc695394aa9dbb98f52e668af9e9c0e1d9d971501afdd50d264f5cb5ca026ad51581f01fca65e7795cdc947e521e1d87e2101473c5c4eab4bcba8c0e71a293d71db5c1be33f2c97074e493e134129669c1d2ea1795bcbae9c4a23844257b838b39ec2dd9ddbd76d4c4a889911356c52511c772ab6322739628591c62094e40029c9dee42a6325f4955aea2d849af0e555572c2d6c889cb4745b309263a31052d78f5b802c5212ed9929356c51c46b16f17734a3da51e4e7d25294a5260461839f11c734645578701c59cd844d4894ce292c521ae20b620a620e69456d009179bdd7ac06f873c374a633904c27f4b0a8a4b620e46c5095e3d964071c07af6066f5e40f11b91655d5644f21f06850703c2b09ec501f3d11bec5c05464577d84a6d4831d7c58689d102290d0daf393718014869a0cd35b9c06e7856d861433ba31d9e0273edfa8673c69c4e49642c135d75a870308a1d07950fc79f9acc4679edecf5f7aa9995c854e623053dcfc027ff69d007135261708a243cff61557c15a423180b7a7625d9604258142c08fb79c67e3020566151b0202c484941fd04bf940647691a22c1e77d3b18e4565bd14dac9271d5619f0ec387c95b4df7766cc0b737d13edb5cfda4ea51e78348d89d2c8bff46257866b8f334bcd58d70d4063bc4c2aa0df881c77ca46a43d2f0ca298547489cc46013c8c53c4d2eb414e6d2d97df030e4074e593ce41387a8b037e4331736297604781b5398eddb5d8ddd3caec6639caa078d8843714aacc21ebbc6c58b8b45f10a7ba8ef2e52d1c25ce704f01a17a7302a7a4598bbc3a927ac8a53e2501566fb3adc8098be3b99cdb798eb01a47fa8e4cc15764d4f32342322000000b314002028140c0845a3f1703cd846d90314000c94a84a664c9a089320076190318628640800c6182030023042331aa50040a1e012f9f57d4526dab9b134d035e7a9bb488e110ee07802f268991e1e2e6c9a165c695e93def355302fa3aee953faa586bb7a4e7adae802ee16fd2a72363644e4b5c9e0d3ee01d1f03cf18c5753ada5c521a36aa02d442f776a9289f07adb33b46c3efef232012ec876fd89b03299759dad11dbf974f15dd350f8d295cca76637e9b3ce7efc02b86df2958f0f90e5dc8d06924e1afeb03d78975002345daf6f26c7a16d082a3b3b388c72295d6fe494ee199098e13edcbd759fd6e1866ecb8a0d6e413d1fa996144407aed5216a3c3f1c28c2a70ff4eff37291fb502684497591ce911a83edba015dbb188482caae1591129a1fb1a00a3d6cdcce174721f0b1e0b2ece47927694a2a618cf1f0f2a62f18f7be416869be05a6be32bb131615339ac65769a51573898e0bfc8fd2f945a3b4c566d67652a892fbc8a5dcc09c356e85ecdff08906def51cc3fe21a698a7c73e0318638abbbd37a595a4d8b3df3bb701984d0cc2018319e2e0a61322e7cae3c139eca17d1cebd628cf11af412de9f52f8e671b9cbb1b5cecbe786dfd41898c61aa41907841313cdbc9c6809161acfe51fb9ba8d164adc8c97fc46b5631e092c817a1b59329750d2c011b18649d39c1738f05371ab187a9a516147d67b038cbb44fc2276deab9505590aefe2c2c221bb154c5fe20ea01f773b54ac01d1994ad55bfe08b9fddc9890c161098671132051a27ab41ec04eba3390a88a904dfb2f5be9c9321bd138c5fef2611b8212581a4f51c95b5a309e57427fa0009fd3fb2f4865e4c820c16a53b75133c6875dcb4e7153e907f61b4dda002b483e0ae189ed1eda44dec8e213fa1658e6849bdc6c63d610c42d05af1f100e48fe1eea3af99c085c0353add0f674a6af2c815106599c86bcc1292fd904bbbd30ae8629d2e25a06d1b124908dbaec8f1574d38d1a5fbeac31dfdc9162e334bed150d8d2479f2767854f7af5b4f52750662a0d52bec09037edc6273d71b237aeb8440fdb052a56cfca7551a3c4e74500a09362e872f58bdb0df7d1027e8d74d99a1ea02f49e621818143e010ea2372b75308a860f401ff0311b8994459b45874b18bf49bc85532ab83c9b39d71d21c13e20bad30484beb445dd78b1e292c6255e864d79c13c532fb03fe2d9a2993ae40f8719000aff7409360f2c143b8e5f7e2760f7c97789826bb49e45277c04d545055266a43d052d4ce41822aa994dab364d7d147c1370838dd5cc3564aad449b66e2bdebdfef203a3a56f7afdad90dff93e4e7e87cebe87a56291164860b522a2db4980995b675c0fac357f3ae35d3d8675b7e86aac996ff34d356c2e00845141fefe53809c32ada6e9f0daa2137cb6eb617bae34121c5db0c159239327539e87419000e73738f5689024b4dca1c71339452de101af68b1cf29343248ba8216db81aabb9fbcc8835688091211839f84f261c84f9a2a2a60da83d38a55286bc89ffde94d5a618e2f0a4950efa737281af3ae081a8c65e5033ba75e91fe939333c50983c36d9ff4d0bda1d3349c0f879ff28735b57ff9b39c2d35d7e324f03fdf6a79455c6d0c682c1fbbf10ef88bb9ac1d16f1921fa58afa4e0b787c47c7147db9c4ac40c944f9423ed7b55c7a12ffcaf5064c3a15eda82bf4483b85d4bd0b194b2e2d7884185cf8cf520b5b302e9279f8fa1047cc504229ec50d25b53733c7ab8b498a210d2164d3e67d8570f977f7c38975f6672a0b843b85332694552aa7b9f8ecb2790a1fd45893794fa70ae580a48dc49b5496923a5128466c1dafb07a89590384c8c646db7a6f22f25b5720d9e8b6b2940ce080ec1a0f5432f414229b545144868aa06b3d334155a369d52d0b42077333f6b55d7affd50b81f789f0c1176fcfbaddc32f085aae8607d58cb4c10cb7b7082be7d92ca8f8001a536c2f546c7bd6ce9eacf216d19023841229c4dbeaa781e58de781e856e3dd0a9eee1db02e3c6dc8ee2c3e5dd4e8c0b9312ac79350d53f581de241a50dea25672b296cd7eb2ddcfea2a8941dc59318aa0d925053d8e0ec8bf8e651c7ceda92ecef0bfceec4497c141c0b6738d26ca81fd9f962fe3d1cb00087d63df40c033258e798de7752422a55cfbc05aabdc1b8e3832d51f5eab8730b2a39ddedabb4ca980a8c7e70e80e8811c4a24bcd68f9f82fe052026f8a27b7fc74dfaefd4f4bf67a3ea222a2f46de8205929d15c80709db5e2e6ca0674d3b822542771eee85460fbe2075a6cc63bd79214056207a724380eebc35b354bc28ad6b6019bf1db5fba0df3afdbc527940514ea09887d3df00f45ad200825d8734a029344740d810856fcfeb5fc15b9d5640caf625a99eae458b940727fbb429463133e014b275204c85ade13929b40ba4627044900afb5a41212af600fea12885484bc9d320f2dd871fe5beb4a266a080116ed79ad20921ac01e07ede0e7db187a3210dfe112407f225349c4140c8954ad6f723e5fae4d6b257fbddd6d80e2763ed791e8656e05b2380a103f3e095b565d1cdf571db7efce8c8388ffff78aebb831638dd5e3c1cccd60476434dd87c22ed55e4929448add0a04033e4993e3665ac5d4cc3b8dca8642f99bfbf6e181787e2e432b8a801e9501000405c898a9f7a6d211fa73257d0bf7aca37a05fec8c71a15a0e23c7eca77c2cc502e23e7143ea69673a94b810a310a92ac81cafdc3dd85de11541d04188051d76df63eeb1538d407e8203973ae01a4cb56e887be0d91bb69a8cff7d643050e94ebca9483947710ba47120b5ed4906a401bf5993b82684015c695e4a5cf93f1c9ff05900eaf5ff2de03003ad02d9d11bccdf53738c30f030fc3e63c7f482d8daca4b343c87efa3a58d4ac6411434edcb1ae6141c58290679167a6ac834b0df3c03567ed331834a354f98836e790cb98b9d7ea3ba19d6c96e6d06ff3c8eda58e88985ce82a30fac751497cf6471833da25dc15505049cd9c8e20c2eb91b39efa8e4bb39095ed59b1143adefce403b094f8bebb20aeb417662b5832397dfe3a9d86b3f61a4406637411156513bcc3eb3fa21e7df0920691cc796c044933f2cedc289b68597a3cc8e1ba9160b1da010aa484028a5f4d3670d372cfb38d211d9349ed7fa1cf7b781017f5dfc67d2afda9893950c8cb419939c29f7f89a6a7ae74b375af8dad9edd0107b4e2aa1784f0b7be8723c7c2cb9f01b1b5fd2c020c95d10f5b32d6e9c1c45590de569ec32f36120bf006c0ca00dd222e93db8f067b4b137d3cf544c4cc508e2322f9029c216b2c3c26046281998da5c064f735bd24caec47e21b7305e84c1157d8c7c76732d3683cd982d27b5342d04817a910e0724010c38f3f5f1690337af118347424079423349497d02a4d879f0b5a5e950b1a8d7e10faf868f4e40738b53c3bff424f55f3c69370c421d2a8cacb074373f91a3ad0f83eb44d80efaf0d34ac398c075b717c1cc637f8ef7b64468c7a4e0463a1b0ba9cb30f2fa8226f55f0ed0dba84113b23f765fad204ad464d960281239b6b27a78884aec2548e8bacca283dfe653eb1629a9332d1506f30a85f732e620d1d22161fb7f47e54b77e34972e79b9414a92f4590e58bc1a606f094ca86563f7bbcb6ca34749908079a0dc341816f681788b6d3b240af9b405e41820ba4519905bfa79b048514efb534a564a729f916a70a8f5d7b87ccd2b5914d0ffaa1930189f3684b92df50a56d0d9c4913077e468f69575b476993bda56435a61635cad4c31676cc58445fd2003616cee02548ffd8043f6527a0c2b1741a5be79ac6f22034a2fa54c547691a6d641e4173f64ccba1ba8e255575a114750d3cd33a48394df6cd9f04ae60384aeb706ba4c7c8abd8a622301774fbc08bf61eeec944b819c99e51912a05e860582c03ca28c1c92137eaf1961ee699cf5ec7139f88ca420d3da1134757ddce671c461d7bb68e65ff4b1da1280c635bbaaf52e7769c068a83b9e1507ad02212e412c3b2b3a4a8ea64104de6cd16ff003422f8517dcd456280d4433392236751053afbee5136f831268ef9c3b024a0baa1604a5721401de2176c817da5a7e0f87b157aa9e2261b281f42cdad550ab0a21bde02c3560c10273454c053026200ab4b0c609e85c826828f53de017c1aaea4484f2e90e81e2a84e8e3e96dd19324064205509d6924319c6923202c97865a390d09d8050892290cde7c613cc1c3611f4aba1a748a5e58ffe3238bc475b3ec24781250bd8bb3a94137f09a19656032b1296ae9a8a8c3465c5f28113f323347f4410589f9d8d543895f62f505b07cabee1d6225be5d32932ab7dded642f0d614d8ddc36630b55aee4aa74e0322df4c6939d4d849fbed14f476c8759a365947b899803eefbdb38a7b15830fc993e59c6ad4e92516ad6a8cb730b97021b9772be1dbb2759bedc948118c2207c5059ac3d9748858b5c72a82257550bc1dd190041b7d71876685a960c4d324c0435bffc2aeaaa9126c93bf981a61a41411b670264360219020731c8af38ec12d47becd47ddf41763014908793529081ac02461d8b0f75f4fd2396830aec779a79e8f47f4599c65baffdbd1e896c0ff29d3b145d2126270f8cb8d4d2e02c755283bd66425447f44e2d4a533afd4881a2afb0c5c7f5bcd329c2788e09ed80b764abb3c36d00cff45966c75c00d044f052ba6fc8ea02ba7f0ed3a39b2371cafe168f41b21d9705d8408b06c39ee242eae1b65d1e5c81727ce76d046d32655c6c8e815216bd78b7087fdc57a2f11509fee887fa24e45fdef6562afda4956c711e2234c8bde3b56e70b8bc6260b7034cbb632598e8e86bba7095236623ffb112853ca68eae1e1be60cdb2a41e31320be10d021f8035f65ac0241699e7f0c1fdd6cb621fa43cc2fc973e61e34ebe5318cc2360ab10b41bbd63bc196203d80ec9b1900754c550b4ce5e63f9afc9c31e9fd3e81d5bdff229566ad2b008ab3d5d575fe8f0fd13a76b712019c6e5fe7f34ccc2e70e79b1827b57a603a1a33537deb8f4b088864fad23c878470e890c43ec5588b334f6daca912a885fe3f08655bdbfac0cd6d33a52480c5e206bdd38431f6233ae030cf1c1565b1ba5c4bbf511893f7f4c6e540b3856baf4a8b08a6cb8e018bb26a3b4f9e99e02aa216a1cfa06ec2210f1a9163f7b18dd72725c04d32d1846cc2950a681aedd36372cd19ca65d62bb65decda60fcd2567678d316ade82bd376b140b70523bffc03afcbd090216a5d026c0b605484f950def519a8acec9fa9d216cd1c2630a82bd8f01fa2c89ce44dd06f363a9b04abf07776600bbc77c0447b004ad0620740872810c8234e313075bb4831f50d28987ef04c9ca9b5ba8f1e16b28e49703123ee0559cda727142229d13d801a11eb80b167e6478f9d86c3a6558b4494d50b5ddaa17ec73233b3b93bfaa9ca03991f6481eeea31eda9274cd5aeb8b551d73ef56458a48e2cad62a211ca4cffb24e0e705bcae80614203e22b419e179508f53f2d58d6b189a45b6052c4de1d1f4ceb6f16e7e323dd40360489b16d38431185ac9a63ede15ff8617340cc5a168e853d7cecb2d5d8086fa57b885fbd39aea77a7e8ffa8bc3bffda6a1f486b3073cd1e9b10c9af5f2631cb80c95504f3a87ddc4a3a2b901c7f1d88f136446f98714e8feb582e2ed402f59b9618e653b93235c3651a627b8b48e090f16cf7e1558ddfd28649eb9f82df509d7509a675c92cae2c4ab7f8f93d98c829163c729998184b0f35f9dc2974db0d874137271b2316ec3412977856925b76298d5e6a8d754b843ee1dfb4beaae80aa85ccfe64d368dc0b6251e622fb86c070ddb54c68e17ceaabc4ccae484628f4696fac4381e67c38d621461acd43e2cb0011805779a16e971027d9f4d4000bde7097683182ceaba2395d27bfec92f1fa153c25d32d47692b6290febc0df8ba9f922e700b7f22b29591c7278e28c9bf69ac566e240f100d3a0d6a3b5b647a358d59d4d2305406559f233c11e0b664a4d4534abad14c763caf39c121218480b2a93af9d4b046ed9d264546b740acac18962e638a5af43e250e3e5a1a3910565057108faafdedf8dcf910371a37f180d60305f0e2df16913fff7697bf8c12cd9df9cabef0d83c26c6c0d7194a9fb10d68e0fe6c70ee97085be3d0bb1389d56c9e09da039218e2dbf58bdff8047e37731c4784ad5c73486dce535733617f3c33ea9e2d13d92ccba4fa005a2ee34ea1cce3fe2991029ceca2656a88d1cc1ca688ad4c10ae5d32dd119cfb62db9868ecdcf156f463f82db87f882d322522e269f0c5769c5b6894a8c39018765cd8bf0c43932361b2bc9bf7e244a58ad01db271c66feb223a2a447598d7a1d6815fab6e9e5be12c35f335b6058143ee2f61ff9c6c6666cb9e0e116384af6fbbb3cc9fd24b905043374892396d0f822b80a380572ee43acbddd5ca39b952865473c45c1de53e569d532dcaf1a7af959b728572b85a8153e5d1424e3f1d20c36f52a0dfb2301852fb29668cc43ac1c753b2e67524e96e8e9b7a4b415b7671db6f5ba327889e21f8b8d880eb5c6eaf614ca307021981b54b97446761d370ddb34287b7cdb91fe901f3bae52ca3b080723837db596bca7e28c0ca0cc761b864e8ac8e237d14aae84b35474cf825a58c629584a38c7dae3e61511d567f741520be0d0565aed1c62005e4faf6cf1d2155c4095db97258e46969647aa4925b9196cc34cc965e73eb7e0798714ff5630a2eb2d8942868dc68ad7d47838347d3f515d14a06d53f8819933ff2a5ab19fbc29e3bb60b0e42fdd84bd435e2275a4137ba59ec94bedeecb50e801fa7b11e04fc786207c0386c2bf0c98ad13b0adac0eadfce10d36b72560b0884e4d7b2472d82bb2653113bf7ca8d41eaf5b451e41512dfe10c144d79d6aa4843b4de0d64709735e0595d5b84bdaa9251175b1862bef9c1fde3a659e4b49096577e551b0743e45de3396a46d61d490cc5665491238c62926041479eb1f2ec8504e8d8966910044aecd32447665b4ba92f647b211390204a06bc3bd85d52dd1547d6759eb911e6034a0580ac412d237e1f96a85789e905cd18f22a0fd822772d875df192a55ce698fec8f861561e0bc16072c1a8588b137342a110368e2b1f793b23504988e5f2b2ab46fe40248b0d13328be1093f04912d49f881ee11c16de4e38dce5b91e5b035b2f9e5b5e31c60c628ea5e50d2d57a92c4efad6f21a0d4d3f5296ab3185947991def88a8d2916c00c12fff48f7ef264e60c43ff87e6e8b99c9a6b5c51ee3c3af8d9fe5ae76fdb3dfbfafe8bb2941205511b8d8eaa75ccf87b808c0c931764828871befe1000c0db0fa11a7c220deb15db30caee21a5128e3d4cd360bfc451c598e87f2032fe647c85479236a689068cfba4a14fcc4d110c0bd6f19b11628527668032ee1ae063a3ad162433beab1b181939f592087159ec223fe3b2450e931d25af872907c2fc8b26b6dbc6ba12013b6ee64cb7a0d5a39700c0a31075a34a3e1fe41065c60c1fc010a309c01a24b56163efe90b8117a257c9cc1fe767001c143c7911abb8f9290916bedf7d3908a672e7c9665976377b84034717efc913871067ce86d8e3b7e2a0d2870ba04ac0fc36138c282040229fea3c61aa65543288ed389bc00349580844611a70f26188a5cee6675805f04f9b3e84d280ab6637b91dfd5b3776dd33a2540a4f99a1da5476c4b1da05a64f805f57b3b3eeddd9bbc639a68c31ed16b610d819d0a5d679d2090133e00887abb8d9f34c07690af5c500bea9a31819949dea786c276c623ee837c9fea141261acf7aa1983d99bf5109dc432237c144d3ecc41d7b3a4204b19cdab830a5d2daa3441cd394ed8c0e5ebc75c75729a1608804ceeccd4a85f6b441ffbe28425d6776b5a72e802c771ea997ea35e45e41522a7cef501bf8643f7ba77396fced5a2478ec3d915dbb6dcc4b9329a39af17272b72f820dc2ce330f8e2cc0eed64b4952c1991766d75fa8e365a660f4f4a9a0a6f5c79b20bbd2c2b4bd6a28d6a6084501621eb2f8085acb9272d6a497d5fac8cde353351dfef8557443661109199032771fac0207e19b8dc6a06abcf97eef67678cabef8890a3dfba0cfb60da83081fe07794ea8d765b4222a59eb0d045be8eb9e5ee93b567bd6b9b052ef41b3c6ab02f26abc196be01455ccc86e0e17deddfa311a5551a71246e0531c6737c5b561febfd9645424148fe1633457c0de6a80501626f45e9719274d54818d2cf747e1fb491d0678df15addd260e9ff78d1c754a688e63fed62a5bbffe302904b8b0a7bcc9a534f3827ba3c1c0819620e69094b59c02bb3f8cc2b967b4740f4e0c3017a4c8083e850ba78b98c946a6d83baaa00eb1ac9f8f8e8a9e8b4ed41a41dcc2e69c8ed0484fe4f72a3207180d821327873eb0731c3a6fd1a593f820b25f4bea3dabe367cb8cbd12584aa9589b9e157bebb9a02513cf28b4b7eb3de73ff6159ef69105ca4fdd2d5cef7ada58df4e23bc5806c08f4d63468c57dd06e5c6d0b5604667c02c13b35f3072d78af34b59b0d615796e589e8c2fc78aba5db736422ff427d803335edd9d98015c99d17e66922388e93d63a0d88d33cdf76a6dc0547b1409ff525a5255963ab4d61ef6be26fd9c31226121010c40b02be7dcbb29589938dfb2a2c2b1b215e36e7ad99b00dfe87ebd941c62a254620daaa57a2326624b72a6940db8d51eca01370ab61b39b9bcabd4a6140a0e209f72b836c73d58568170bd9a7074b369a86335c084faf15d45fcdfe8cf47cf9266276ed7c6ca55d2ed834b30b6a4f3dc19f72c3e68f76e2ab6b0be13263e4fdbf2d5ac47df94d9d55151c38cc6768b06ad8ed821547d443f1d79ad57fc0a8704a280d2a032f4348a9daad89b28502b8aa4118354cd230305d541fbd17043b71f64d4616ec71a03dcd218c97bb6b051611524c0853b39c7258f0f842f84b5f52de1390f8d2384ebff009f6d3ba72e0b0fac8ddb588c8bf96599b332aeeb030e436a4c26e01470cd912ab403af1f061b39c266062e81f3d14091f7dc94c6c1f1c7b51cda6d4522d647459a86eaeb095c6e24a5f4e65273808b2f009af918dd4b3400e524c44a015b8000bd7d3d9b853fa22080824839000341b380578c26ad832b7566092cd6e880d8d82bf65e79a45b20428b0316d46a0bfe346461a16873aff5455c3d154f16241966d9f9652345b346d7773345d2f6136e22311ef812a04433fd214996257e84f0756d730b54281f6431b244245db1fe8a2713ab252042da677ab4ba5e683fafca150a227d8b489a04e516ef4853c5aadb62ab211a8cd94f9c7db0b98ecff2fa63f92e37b6b89b4e5945154b3374709fef0b16a6d0a79e2cba84271990cb02cce0eb2ac19f8018403b1103c0499700b42e81ba4f78cbd3d6d4866c0a2a3d81f794549249169e76a59830b086618ce4b9c38ab8f3fd09f555a810ff3fd00b25d5be860b2dcfbe81cbdfafe4539933dc539772c6f9c77075ef6f4d6ff8aaefeccb3b7982d3e758a3b1554b9497b6361b231c1ab93f9fe12eb798501a19e38c66e9568cc9fc25f8ddc46be67108022f2d7592471e1fdee2d3962c3c37181e112e0e3664cb4229a70388405c2313749a4dfb18e3b090916366b2a3f3c3943b0a0eae3a45d61c66f035b8dec81c101af1d527ced83582035111b79d510efc7bbcc85c0dc1c0790953bf7cb5a89334134415bfa599224e71de3c6762800d4de08fbe79430eaba6f315a602fba86350262cdc13811d4954bd59e2e3004850e45d2037b226fdf17caa13929a3f0b84cf6b756dde5a04c0e1bccf55bebcadfd16dab63c7f582ff22c902896c527c72b218a4612f356ee03a84ebd68dc652d7769988a8209ecac40864a00dc417a3d4bb39a3a0c66261197bc435efc3a03b584824c6bd0296178b2e40a780627bdd64818a89f8eafd0878371988975d474bbbf0a1825223bab7855d4b280be79b8c6f30209af109dab11e9fea4d5048615d8b0891625a92e799a7f6c13222828c293eaba740065e67eb9e5c02d98e2f6c1e9ae03c7662fb2127997824c216bb01e7dc65ef630faadd1a8df3b07d8cae6865e58faaa37b7ce67ab3032c0fa3f016d5ce611f814a03527fc25dff8b2f3b3b128cd6e2ace21352d2d6cd831bf1f99689fb5b4583197e875c749468ebe7937db3e9a7a56ea3d31f57b20df066060c63a82f0433a6d6374366ec8c108073a21bd7e851e0ac6e768240e45b5f124679b4c6a6bffadcf5836cb054b3242c698321ec381ffa318095e4f53d085e33a1d7b0f8b2c78151b98a8102bca0e0e8c6357b08d18cc6e60883e78d9026b7abba39b84f1996d104e2ba983ad7f4e66503968ed82390b94b3641cad31fb34b869e90625488536d62612eec2ead7111270ba6b27d61a4f551458f3a1157af7c4bb87c2927af6b9a5617caf5e51a760ed4a32e113cf47458061e3b57a7ff3be0be088b8bb56977e16a0ac34598b481c370f719bc0f1fa4ef73b0086b4d94c117f29513e80f08d819ccb154148fe1d843caae26b2205a8555c6211d866ce2aae5f057370b3f6f21ffe293634a9ab3b63cfe817be29b9be941e2929b88fb2590b859dde4721c5d6b574ad50c2650ba6da21d377a184906d276377e878a9d35a3986c01386c26240cb06f6f858dc16ffa7b381a3248131d24a74a04f0f2913b0ce9ed76ed552227f0b3ce2a655e861b54905b6825ca810ed1877ae024a44bbb37122ea5e92da8ec5f9d515e86b6148600799bd7c9d54c0f2d989ad7cf87887be5440cf80eec76f2f6739031dedd6f360c37146a0936a306ba3e9b35932603fcb4929c98a48b3f92da5ba24e6a5f7d39430cd94d7cf5020683f3dfd62b3a1ffa3e5d1a1e2e92e2dd4db2b52d00cf7680705897613ef5343836ece4343ca897ffe3b3e639ca8cbf365ff64d043d78b0470e96bd8b4f1613878f42c5ca16a1d4a653d971a0372047f2a496447b6ad2cd82b00bcaad72c244d28bdfafc456abe1280c0abd2744121da09db1fbc0186c4db5fa09701484ebf1e9415d29dc85335e86fc4910176a1866189f720194e5fa10f5474d2a9854ca513e5a02fb5a31655596b0891139781b10594b400012370419c1ac6b2179d5b15fbaa31c35199b67566be03f027967d26b5c7c6f6576427cafcf3f16b7739001091a1a60f490e24861f4d7de240d4925d99cde580855132884f97023d0d08753ca94425955b03840c720f21b8bf866da14865f25b466c9f2ec8f1fe542fe8bc3e0cef9956388e87ac32761f43a517bdde2ea1a0d1f12758690a3aa8ea0950f7067b3ce6b3e2972995694344ac0c25fe893524af22014c8743008bffa704c354e3b98c3bf38dc9d9ea4454ff6c3a292181b63696af02aed516f5100ce8e37bc293c8768463cf66110a02da8d9214ad43a30e5a291ff5cfda5830a2e55e71b7734399ae50ac5cfa95792a393d40a764a803341f082c00d44263078aad48f431c9d76d50830aea1ce1e89410add1f07238eb58aed385dc0e5cdec68fea88e2b5f307efcbf3f9058095da42626de64318c5cb390d10b2a9b0a5659c20b006bcdd1c2a5bf1308d0b551580d25caba889b052e07087a87482ced1ce15da7140dddb61a44c03948115263dc18e98761ac19729b44df5901c327be25c52cdd08b05360b671e9e94d8560b45ec14c7309230c159c570b07c7d232458f84b8489bd81ef012eb1de4f504069acb88d6a4377020f153e01616a63e05980e7dcfedbd48f3bed03a50bd71daa5d043dc3947798288d966912f89ae524acf1d5d9390978751715d5d277d2cf7bb91fd77b100a7954e93e0e8caf8dfb90350988fb61d779da84c2aca9ccfab55d7deeebbab7d3de7ab3cad4abb64867b3fb0194c7511392c543cac2850a81c61b8cb0de435d7ce64068757177a54091169301eed854b23a9a1a72869064ec413c21f416cf849666f70fc395288849d02322763682a342cfb88968626142f021953e2a2b9766ce924a0d7d1015d2f147c50b1c114c94f6ce6642ad0dfde1aa4322c5b686103f46ba39688188e89e5e4582c04d8d460b2184f4718412c42308f55ac026f2f417666f4b85925cc628e5432593918be2130bb94f5e6e0afa438926c8483db607e466a963709001f9c04637391e74475a6976cfdcf40b9de5981790007537a6eb52480134ec47ae022608eacd36b14f587b0b1a6802f963d54d0d9cb0070ae7d4d2d0b3d948f946181cbe1f62e2152e7198c9568dabfc23634d17b662a3caa1bf27152e6dd109754332b26117de5facabbaaee00d234112c0a60133c20fffd06098f7cf2b620885a7ee989daf78353c3908bca679da2757de4c8f1cdbd8a0935b76ee61591daab85b42eceba3379f1e678be1dc0f7a6bcc7c9008db7d53425f5e75bf93cc1422196f9c3cd281fb48ad4878e8f4a6574fb339d5814133a76b40659113aa702d9b9e441450cafa604449c27cb314c75d51244fe19892de2cc901d4297671c74216804fff42bf6ab2a2d81d9a2280ac137b91f4dadc0457887d9bb2fa735b07934061cb6df7cf4ae2593581bf12b0763401c0180d7a9048d0115ffdf0a1a5c9dbe21849f07f66f85b5a32600c0ec497df029bebc010992c195ddd5831e03cfe57d961a27279e07f6603776bc677b600363927812dea26d48a9ec0c38f65fa1ba7c109d3356a8c4f6b82d1a306c46bea0ec53ea9c702ca304fc27edc4aab24ee784b8664b4ed63f41e98ef8f097b5c8f659c2f19e75b3afb160eb40f34729420d572656c9eb8b3f8e5b0b5f883a2ecc261edd32ff6d35fda683b23dd663f580aae8aad6be7e55efdc15317a76997d1427150f70eab13a40b86c24267d212c5addcfb70c551e57a285dc41a250ed6cdeec645634c9ab91659ae30ffbdb2ed0c08f255b97f6dee8efce100a2c0d76b7a286d7272f03543f2950969f7e19245347f5c3e51b5e235e6dd23e782286a62e5c63330fe92929172801eed6b49ad3fc8d9f02605a28ac943d83c9a92495323e1cbac9643f9ba860bbf000855bd72080e8f6d32310c1bc7587006241089601512f4e46888bd79955b96193e6d5da26647c450d3c3a60f7b06fad268c2d5779ac794a9fbfab5571f06ac89015d636a40cd2dae3b81f01fadbd6f0f0149b78e34e97386a11967867ea261d9eb455ca81121542fa47ebbed1efe9da264fafcc8ce2a4faa794a28a4553f0b4af6f0b00aea27003bf3d4fec7d31d86608aee0db4424bee79531c97d3397f3e366fffc736bd9a94cbd96ed3cce2bc69b49feac53fcbf4c229014833761daf4280b4b5c2e9b85916141e5174471950afd31525a05d67170a40b9966e9481e49add5006caf5ba4a0994ebe8622864a0354ec1eaf97169d11b0d7044a51bca40b866772880706d5d5202cd35baa108a46b74971210d7e8168520aea10ba29483ce7b907a37c1e3bf071b99c0b73ca9bc3eb1828c954031296f1127c0d139cb6ecfc83b5de356a20bb6ddc86e487e6d06b53ed5da537a47c420189703e80324e0ee0c3d0970344a35469f9c9855fea83468bb11ed5651d8df17a7a2ec7655c27d128f800d303ac0ad4c36fa8f30a917cfcc6e527bf80edd39112c64138e05274472eab53d492a39a9e001f7477702268475b639c4cf7940b9d512eb9c497c2125797bc18a0baac4b23cdcffe3bbb658e393ebb12aa64cdea28a18f5c6094130d98a22241ec510df02a9e05191e89b4e7c2a69f85002053ccd67083402506d7996b22285cc3b371118a851431f1eaa65c0bbbe3968380c947e0269cc11128bf213caf632ab08a9070f350ad6f6c24f13b043df9fdc5e8a4530a297f4c916358664941cbdcf51bbdd2a01add7230d120605894231f162d05a8ef38a41b6c3cad69654311ee9fc63db548e7336a887f4241d3ad63b63e455cc587590919ab1916924e2d18317d90d1a34ea59f560320ba0dbf98fc12394772f2bb1238ca806aa451e744dc3e23c25e178e67a313e32e7fcce86eb0f91a34f504946d340ab94ceb98986d18dfa22ebfcd8e8800b2c401b7661339d2ca071b66433d8f4ea07ef191e3c84bc40a4291461bf5b65022ae74691ad713580d6adda9ce87fbd279d64c2485987d317f046c2a225dc6c156dfa35a229a646e7ec7042468a4005d9c638395b1c2116da7eacf2756d7a03f11d41cd5e8902bc9ee2f3a1e8c0b04180f5c7c7d495efcfa273bb8c88e6dc39f6b3c21df964e3083f6774316cf01b4fb25681b39bfb05159cd9ec7514a023ced39cccb169e51a0f09763d1cea533bb5b0e3043d4c2306b26377e7080e80f670e2656baa8804c26302975b546804f762a142d89502f042fc5232be6048c7e1f1ce6d435b094b01aba19bc80a0e29869d42f0cd4e04aeb5352630f236f5ca95a79035ab2b3c032735bda8b8484c94157728b67ce4a928a2130332780911fc84ca188050969cc987e1856bb6a4ad425d90109e16120e3e0e09e7e8a19e8e15a15cf2ffaa87c79d883ea14881fdf3e94c8d3bb89bfda75642ca7a62b5a7f9392c1df541831a9bbc37a4a0238d3c5d1679130c9473119fb092e8a17421becbc48555c5ed18062922d42e8ad8e01787b43cb96e00b6e51c80b130de1069f6ce00ff22513849c06a5e3b001181c44a9f7897adcda5e029a9273d3248ac0d190f55274c76a2a4f4550f19824cedd1186379e8685a5f35a462a94594334fe399d0de0f01e840374f15c692105700ee626f3a7b44a60737f750a79b3296414e0d9c8165518354199436164e80358fbd5183c161d06e88aad5e4daf86384614a012c427f3404ab43ec5a3968733b4bcc2d39001747172bb127f8a9fd4db746b363da33331ad2694a7ea026d231ba3f49c87ce01bcd0c8e6e13a5063b54a45302c05d2a3b9a0429bb45edc7b08a62eaf6f6d994734d4ecffd5485c5edf7591b97df3ce62b641f03485f41d3fa15228313a52105d73fdfcb7647e0afda3b7bd704f2c45f4aad3df4e92b8b487229b6301f0af402986560850ff1bb2e683dc859d65f351bd99e87fa158a7043a4fad50ef5531149cea1383eea5427ce96ae6bed57d559b82a7b5495745960db01ba91efc0644c69fb061dbc35b8af5c1578650b0d5551a0344dd3a3de64d6a765b8a7884bdc465d570ae43e55f0f44b1f5dca85c5c2559d0d4d03645faa606f43362b617447d3e7b3e653eb1fafdb6d1405024512704eeed69e3fdbec45b79df9a45a47b3bcecdcbf5a94a121bfa0799415aa2741bc030dea4b084e9982fcee8033a6d64a006e9884ecee840ba6d69160ef8246d649f184f409c8dae740b387d85405385642ba682e00730825ec548e749a245a15ab3381de054d6a4800474c4566ef800b93d44b505c4c8a2cee000753695d0913ecdbdb68eeebcb133af3cec0e04bfa0b71580b2e513ebe24f33b64016944a36ac3a9795c01eb4a1fd18df0eae70d117489712f46713ab03ad47ff12bde87bb6a160e8e524c9f4bcf80e6acd592796f7243cd57d0cae87c36c0c167447e2342451bd9808fd708ba9c331572e13532f53e78a44603978fbb2b5776f3735d39f62904c2da4a70b40238a966a207dc03b9f6e4a79ba7acad0bfb31709e8723e03edb670939f183a8aa48b879aa118022b5a6f9a5b08cd7293535e22a11524af2c31e655933ba06efdf88baa7abb44208a2f054ec499bdd2402467f1d17633720c11f79119fe2202e727e05fe86a497e98d9f62c8ac8cb0a212a4f044f9cb01f5ed24353edfd66e36ac1096db658556030531ed55470a5aad4b70f11ec0d057398bc144e8d8671dd88b72ae8da24e33773aa1b39a6d1d12419be8b94e27b8c3d5a119e8b569143445b3bffb337a1fcfa1dc4c8e12f0cf83d715f2cb128bf1e80df57c6e0bd8ba0c937f706f863ccc05e261eafba3908aa8e6cdcff7fe50da382e0bd55072f0332ac21969e808e98b71acf96fc189a282be1e361adb2be3a5b055b7a7dd6fadd66a91b165319a92165937f7c85f00920bb10be74cf1ba960f804178278d2fd818a1d158029a24a56dbad17c4c79cfee936e629ed2cbff35b73320c9da36fd56a8eebd08f5275feb6ca2f02d3b16ddc2ea943a6dac7ef6bb7bcab0b80d7128c32753b8137d39cfdd61fc5b599b01590b5eca16dbe7107a73e83e31c85246420d6d665fe44401a2c3e4100fa989fd016264ac30ad68aaa80dc754816e2cac09d799cb6bdc98e6cb613f84c7d0ff8b33b3d4f4d31fe26c9a7a9a678ebd3bc0e8fcc8528f02d527c10ab92172a1b214aa62c7794ceca97730c4563a16964198accb2636878b68beb7884834c1e7a15bfb3ad1ae0408e70f34b4959ddcaaf7025645419f346ededb17a6fb6bd9f6e162bef01385714940a570d945ffee6698db10cd6a7fb8c89d546601251c29b1abd5e916a66455c8be0f1549ea2669385d5b1e0149f9c985f473cd95f1af89ab85a6494fbe6715f8615d9d8d921e6b70c5883cb045f588df2f338b154ecb27b3e5f2b0648814831dc69c62000317c63d154a5e7751a9dc5a4b89a567b8097267f4d0ed7dc5316b698d49de812c3220e317af76a6b798194fc644eeca572d162db5cb82099134089fdce2fe085e7d1e61ba5bf3288785f2f153a61e42a5ae0afa7d3263cf0025d7d805c4ae9de9f63d64c1a3613557197e2366c59d2e41d42d12a5dd12216ce3eed1bce132cc0505f8ae5288d7f8b5050500048605871974f7aab23edd9ab897a059a0f7ac8345187713f6240d8475aede6968f0e6612be7a403c0dd39176c09da7b2ac984dc634876efbad40236ab2ecd49af5011e3b75ed7382953866f1b05d2db993c0ef26b6f6d3aa48a747f8bdb5c543e89be4c6217ddafa44cf7125b8f5080c68ad72f9c28cf46b285422ded121b6ef12de379cd967fa3097c5c030db55c8cd2b07b5debd0551f9a5c994ef9db6c201fabb7774ee61d1411e9afa34527e9bb4aa74a470133b02e6bd89301acb6c5f5d7b0475af5a0e96f4ef6ef95138c7fe32c7768498bdeb704e2659ccd4c572323fa5ca41570f87071f065bf926fc16329e601a6e487071b97d06ca73acba21e392f3318d92825258a15c92bdf4c9cdaa437c5d0771ddcf68b8b44f07946c3eab255d90d2378b277dccd8d2a11338495b27a9c0d7ea49e819d4cfb32d309587bf36c2a9c87350c6ce96111a9212c5d9ea1110419d7e33b6becbfa1c03dfa25c24175e7cdd658d98b204fd3f33e8831e1a5d0e3ee4138466406720d43985226ccb91300a29deadf3fa155084ffae0be599d2235b358b6c6624767e616e2a1e95a0016bbe58996b50c618127a95057c4f171c76b0189d6704fe1163193fedf6b9ed22a5beacfb652e6a9e81018fcb3ef914323fc28ca8da3b22b7d6c0d727c05aacfbd17a98e9619854efe38aa51cb79ba4e1ccdd4fa6c5a43ecfdb75458ba4e8c0c84d5c063f0a7163e51de538bbbd3e5ba9ad39b1c05eb5278a74e981f7391002f8d028d514d00e9005b4c5826d0dd5b21ce597500745c6b6122088695c5d8a32163e5c04bcbf892559710cdfcfd6545a33907e94645431c2ae9157067015e7e20da59669d43ae312af03a0017630f05cb240c62d940541ee2b2bbbbe2c22558cdc541d7104681288119de748bd2d043a99f7190afac58a2e89758326a301fd3f79c1f189e93c0305984519146d186c0b1289bfdda3019f88b316d8879288dc87f468470705885d33d78b69eef20ebdcc3d6fd672319c37ecd2d0f793e1984f810bf3fd3dd83eea6cd95b57df17828bb5983353fb5a55cc08544a52c24198a06c2a0b3771073f7308382f5e12deb51015fed4142612788b11ee19f956f6cfdaeb025ed1b76b19b2b9f81a8a9188a542d73a022acab30281a606650f5c45f72b1423797a954b418960bd10b90dfc904240f06c7b055534f940a6c7e9a722ec0ce165b15dbba798fdd20f010ead85538bdb3d09dee0456e718bbfe465d0c3d0577cb5272f04087822c1b7df13733546c2698420aa38b85ffdb4f58511c5921752b0d46133ad4eaa83205daa03fc2dc4ac8e1e8bb7742d0ab81146d532d00b3f759dbd2a63041f02ec923d2cdd0cc8be1bd315eaf57d2b5acb2e677a72429ae954933b8ef3b007f908e886b44bee10615908f7b5f428c13c3d9333a1007e4af8f7ccc4326682aabec898b397fd01c13cca11ae43e1c49998529c429cc7e6313be154e47f33b572b8647885fb359d82a8faf73a15945b971cd35d64bd022aca98284bed75feee75fd9ae27e8b97095379838842659cb80ba884a99a988b8d87b81399f3adbb55589189e112725dc0faa6f462babef39f6c8cf02089379e214e5e1baff1b324514f0a577af56a1263be20eeb80e905e5c8513c5bc819304322f85015cabc77bc86373045a6fcd1a95ea5e865cb98e75e014a8d3f9f28fb2551067170054e0547052b74181199f39a03d34021d43d82f5ce35774bea581009e56ac0d0ae7b987ddd7098a5bb246d3ddd64451252992d46d93af7157aec4f22994e00cee7848eb853cabde98c1970c77707f3b6c2a0d22a330e90b24df6ea8c9e23f4d4bfbecc525e803c486c5743146649ae21f149b8cf84e4031a4905d3694dcd88be96ef0b6cece015c280f2547f5b8377a877d943177f90063562ab1ddeab35cfeb81dd9ca82781f86e20565d68ec03baf29936a40e95e555790582e134de878002c6ce6e3854b74a08663dcbbb8893acd58d3c3db443b49595f99c490a19f2e45ad9b1cd9905b86c7266ed7f8ee6e67ee027729b1404b222cba424091910950e06adafe09afaf0fdc991d25a4cc2c7acd09046f1fe4a48e31d85cc6a842d00d93d0b8204b43e376e20e89b86c0167998f6c025948a222a5c088c4c052fb502000594e6ad24b17f561df505786d5938adce3ba043ab8c7ca08b7b13e029cbe3fc777b8941434dfcfd48e7209cd1624919c9c10f34b47207249de4a9ea2bb837a7c14b060d9760f3daa16cae318f5c2dc814821dfa5d76f1c7d5e34810688c3d3da583f6bd0c0d9523610c798999a451f293297cc6c21b310efb0ccb8cc2a330236504a11a5fef821ddb40cb279353a28446206c7608677f9ddcac25c4ca87a527d7f23a4d60ae9717c98ff625879d899575e3e2a3e0436510c064cdf212eee5f897d8bf178b92daeb70455146ee75074fc299f722f981058cab388111eed700ba3ee132e6ff2a426129305572024cc3930e679810e1e76359c3e86faffcbd8180b0cfa45111e670a31c79d449cae11f016da53a36da47f339ae7ee54b1e45aa7d0e3b987a1c7123dacca9c29447769e309e8e6e0f25a4e973d9b96e992766fab95484825c25a855796c66c3841615a9eec1ed1a7fa8102b731973f54400828eb7af48ab2ae2d35df89834c29b2040d62a6c88acdd1ba3086487edbf6a85737519abd170476d3c880dc956292183d6ac887b4205373fcd897114a591638bd140dcf4e0dfdafd9c930645cc31244fbebb043a7815576e9ea79fc7f8bc5a1075d83df13b67e5b395867b1bf5cbe74bd9cb9a68026090a865cc47780054348b2f866440734670e6961087c9b84c054f47eab7789c0d1190709bd41a897eb728cdf7faac0128b6c8a59437ffe45f86464e3de04f541f32ad12096ea373ed5d8c1375703ed95b6eb066e00f02ab003a48975861a38ec2ef09cb61926d9b5118332c1c76153888c1c793b50c3cf12828761bcd6c1deb103c7da3b9d1842f16aa6026a7458567804e0bf87c1ab7ca50c58575e28d8359bf71200937cd81a6798e80d3ea8c18854afabd5a5ac4525901ce5df9a46371813cb0bd892a0fe008c573cb8abc75041d1321858bf33b8bbef9fcac6bcfe7965b10e83958c068302f4cb16c7e0746e32ca96c68da26c3f4827951069ba6a58a638ecbb6164e23c3ce18060ff21a7c93b819fca1fddc18ea1ca276827c1739ce488596865238457a1b7270692e2b3876c5de17289c9a93812b52584e2cc6e34e125394359e0754ea1639b5959028091612f2caac513b2750019ac731413b89bf401973a75bdc788c5e6af38108e036549d74bbf56b5dc7a07e851b30b3dd03f5e9ef6523ed194571cdc727d3e80265b70d3851766394fde03672afc152f6f13f0c047d9f522f627eca7c9708b7beb3edf6e539e98379b52463c9e4ac262c3987bc43227b81f5906874ee0cfe3bf11a2c529b6914cbf2a05db5cc825d8613c64f280ce4aa81605931d10208fe05d1a4b87aaf6f25b26dd69f3c2b4efb6e508768529c983ba3485aec348c81712eef37021671235d41df708d6612272d30efed3e7d978d30d8d43a8fccd50101d13d094bfff1c7b3ed14e6d2e27e7267ab4473f48afb3fcc61a7c1d08954fb170363600670fb907ffb32d70da5ab3d83e2cb0683253c8402ad2886c91854e6b1e037c6149626c8f92b0d27a6be3edcfab5bc02f25fabf9475407a6d5ebd579da7d4fb62ca8aebca110929d36d7510febb2691fa34616147b73b2d31d6e2912980511bf9b30ea8d38ed811e3b684f764f8154a52501e54cde2c144d691b2df051fd967d80880d8885f41d879a09efb75db0bf38ea5bea64857601bc6553f8da8043fb661014607ce232b5d2dfa421d732e9541a9b1630cfbba0aaa7406273529dcfa73e92a15bf5ce8764054d512f85b9df00c065034a9f112ca9260bfd5f601e852b5451a8bc866d9d8d33b2f8588be834fc479af32b57f0aae13e81e70550d57e376e85958d66574414e64ae1f08a735f0d98eb863e64e89372c6e7dce03b699a260564f7336b7457a50f09b3ca649d0db0f72c80adb4412814807bffd92af23d893f56266ee03bfff298641e4ea588bea4b5eda7ad8d6109e1da1c156619239ae80de25ecbb90f365bf45f1f846cb9b625cd2c9710a187852d6179de9f2a94f427305f82e27493cf8a78e2ba85f3e1cfb98772efe45946b7ddfc93e11f19e3ddca06bab998e553a03e4515e660a96521b0633d69bd58a566e252b680c4ca278482a9fc72979d1d05f15ff35fe828da6628c417d123c0b8f73a61d90db3232b37c697c401954119247b1ca85f694ff040ca88733aa0309c8a481d7e7158f51170e919c4f09b7bf5382d87f46a9014af43193c24fa1e20b111b4b1341eca802ed66075dcc4447029713b37ccd10104976b0c3dc1d4164fd599a1d4285224c1c8504e4494b42b8054810656c301c6682cbf0006731d9b231324f83ad2181fc08842c0f62caaa340ca8f610bc47fe121f5220c198656a5aaf50b589872aba0f9b1e80839e3aa4c4affd2160c3ad108d0f8f5eb7664a54dfbd6914b90088b8309ecdeb47fb76d616c0f9a887dc0c63cba5750e949f4b8bef73c3a213732b488a3b8999a3f810176fa818b4df9ca549c5854b1c602b3701482663cefaf660648810c03c5b8ffc7c8d14ca0c8c5ff9d298044ba942204ee498b9d23e6d400d58a9833886517a7d66428895cd14b856953d0b7fb318220b747e4f6b1ef1797e56665632e4e5e57bf333b046d6d63f2aef13e21648e768ebfcda9e547da8c1088a6fea3e2b868aaa66f5d5e10770d0c56df135b160ffd3599c519619fb2ed942f44866929b41aa60daf8e56c73aaad1480c223218e22a5e5b782d952dd3910ad5a1733fe48b7cf5848908b22cf5782280b43632f704c38081dfb454dea57cdcae67e0d8b835482ee630b3bcfc19cc7c5dc572f456e0a08eef148cb219021b56d477cd485dcb9e5722b8deb39794b3eaac9650ac8a0b5c1860db06563271f3d898de0d8fea5489463f9f3ede33524b471a9ff6cd590c9c673c3fc06bce25f9bbb48a0bbb953915378977d21215ec839e0c387001f92c6f313406cdfb0e50e54bd4dea8307187e4310be193064b03a2d22418d97e5be2b7f5d2d606815a344e4e527a680da60da6af59be9a2043c9e1b215e2e2d718c3c37f2104feab00b68dd7b5ba505dcb4c607c1d4657055fd31c99a976457056e748acab5a66e45cbac9201a5e4f54198a89c85a9995284b8dc21a7079dc537904fcb51d0a0c3efc08899c7942bc9db4e2000abc953686ca5ac934eed0bb499a6660d5783b3e365b782bd254c4c005e11e309c36661c08c677b4a026486d2595af388fd88022b8538fff9d16b646cf7e0c5276ade755da0ce3211caa03fd236c94e75d5097ca48e691e7a3584850d9ea9d7a223d54aa95951f4a0ea93ba49909dc211a21474ae2fabf6dd8449aba22cee0abe5c62fccb43a434a79d4cc0b32985df03b6bf06bd8f98d50495a47d6ec0cb8190bc17a9311fc0a8ddc763f26cad80fe103ac8ef2e567f4d469db0dd3e5caae02eacd32089c8c5413d10a04a58b2fdc8cb31f2180a8a1ae9e42bcec64500cad00ca6cba28b014a146e15798f3430132ca932985c2502842bec339e04ff0ec806aa276381086154ae460ed562c0c295651a3306aa41dd18f5267be43f28bfb5725fbe8e108ebd45490531f20ba64bf017e7aa1aee21a1b7d5561a60c9c894d2a4998851ddf02110654f5c72b946a190e3acfdd75b83c8764e5273c9a26fdae8644497417f9da3d350655280a2110f87c346c2b8da899d6a207912bac02f1809caba7458e4e6097a2a32adbc140763464e6fb58bfad6a2efc31edf5faf168b1d35c1ea1e742a1b9af16c1a70354a75252e89f635238c8ced217a60920fba62699ae50daf5a39a01b3c118c5e2d05ca6b046085502c98cf13314ee249f1d59aba944c001c3a1fa45b2609c245fa04184bb79ebb650fc68f3a6051e0bcd2ab87b851b66c9ce2c0e6a0aa2d6ee060a73106d1ca84261a5d13af4f1b3022c4025f99385c41e9dca78c414a7ff0c33af91754e0013c84535438748abda017a8c5ed549710689b4777af038c0a1a0da7fb3d8bdf071f1c8ef801083d37703bc42010f6cc2699c1a48153161969bae2d46aacab438a087b988b2f920bf9d1e402c034032971a8084cf36d4ef73e3c8828bed355a205b5d8993b460f6949f32565e4f89d5b52b6ca92f16fb901b4ce45adc4b7ee9909ae23bd223baba67fc478345d16840ba87cf01ba5811bf973fc5716ff0149b4cce4877975ff3fb32ad4e1d6e13525282b7218f365acd69f7e42e3e96e97a739d1642862bc05c7a0799aef9b5129e33f5f5cc45bab3e6a8d6b4a9ad678104d0b8b14da0ab600fd6d06feb9de187f707da9e2a6e3338b9b077bc52334f886011ef0d8ce12171f82499f163591f582a2ce1481880c56babdc2e5c4cf50b9f389c17b5d0d32390d84444e1c76c8d1ccab0a244512343a4dd6bfa6f1aa0faecbcaa74cce2271a7b00cba652155e0dd410add1f0c74cc87917809a7358694055b9f01930e3d670da1fd2483d003d04c6f90554c18a95370f3ed4afe1a9744767c20f51312ce70651e9d9d753e694d6a6f336b080da018e1a7ff3937f230ffa1d0ad56a8cf22768bceb1e34f5a92e82193e4a0150d6092d90b7c1273eb2d19db5089440b2f1f1380335c8124ad05f2fb9654838f2729fadfd251abffa07e543fab9361bdb936f5f26a733441dd0ac9b8d57e099345e78605ca4661925f41cd1636baa14e564897954b6c56b7e95771de53555d9f2e42f2bd03b6cac632f6a0856bb57f4a38bb92e3e7705e0cd7ec2d49ce6546ed6ec1205e1312231c5387d039f2c0262eaffefcb222ffe314e6473cf552185962346f94a03cc408951d4e1e5ea557bb663a324587a783eb7332321825ce74e588bd0c057016148eacdb3c8ca729a5bf78640f6431322afd8d6dd15c1e0d67b35d87967c56f61c9c759dfffdd52fdd11e4c78dd14500e896168f9b6fdb2e5db2c5dceecbffaa1a83fd38bde9399a4e2130674e33206f0ebdb652f7e4acf17173d61a6a218fb9fc2552376b4df72e921247c950e2daa382b3a1aa69ddc7001aaa727f2d77a26a54bf911b14f0f046b773590245e68513e682241fbd46742ec8b7e6e6748d172fc5ff2b5e00145aaea1a5e6982e22a0e0f00209d3a800403d34bed7a25048a20cd9204bb24d436518b3a3ab38e00f3802bf4d1dc168432ec89f7ab9b17651a6a00d8004030985928327aca818e7cc9e0d983c1d4bf19d25629e17d4c5a923d6fcc61ea1b8181658a10e7e1f1f41fea8d2df356594e8d67df6ee5890d76333b19668327a397d5ba61c183a70430c0cc56bf518ac0de67c843ca4ed21007e1af0d1886372b91297287fe88203161a2478ca04a987209d541c45a1272ca1ec084b1d5c94cba8d6f9114f6d1b09ed377d90e574ea4656b3b9bdf40998e32f91e0d88bc7cd4d8ea7fa63cf9377e16e955f4de6102d1dce303794621b60c60135081f2274db85d4a636391d22c08ff9f787d949ca65203e0e6cc9eafde470ea91af92f574279a8615cabdd12bf34c0d141ec3778e88341beccf6716c7382f3f0d648ade1916e32f515535df039368a2ed8401ca5a4c1c2937ea32edc2a2c7593e65d0c176f0fa67bd32d12c4aa2d7fdc2a14bdf2928359cf042eadb8a552831a376a010c91a363f3da0c6de470ff7d30261ccaea7054e64c742d8b410c537e38b041521b00c3a30079a846619f8964b1b0c66546843d9cad2632953568452fe2a57036621be9846cfefd19bff184d037d4772e6763429c14c3b96b9462523f11a09fe07f53db7c15334ff61a78286b4c93d09a1fbf16df788b08a31b4de1332727c1ab0f91ecd16c0000ada45fcc9542cbc505b2b097db2410aec57d12363591dca26f5ec1c66cb6e433549571974d0236c4380304341b931360dabb7bb90ac41acd7e0cb96e18ca8297d7837c02fe791bd9e1c56539a5ca9ed7a43e401531383cf31b76dcde576dd1c696e27d50c0e372e3d283a363733b34869f3aed6f5dc8a2270e8048cd20475252d63781bc9687327e6036e6256130c33e8524d43d24e34cd89cd1f1c878fb2a5761d0c6a7cb6d7810ed520955020a3aeeb4a0e7ff9e02f50dcc4843b38fa3d2ce8bd3a6ab8d33d76794cdd626e861d18af213941b8f7e5d1c4ace47a7aadf8a1e8da0ff77a664d0c3823801a63d499bff27f2e110cd5de7028357cb3b1af83e3513073e8ac34dad6f70b116f784c5fcabf07a6e5623a2724dd202d54b48427b857a2fa54da82e00ee5321d47db3e8e53601552486443669b05fafbb50018c0d11b149c426786726a2a982f38add31174e105a7196a73d71dc4f521ab9b4d8aad211b7a5b9e11f279a7296f8b8388527ad932c28c370b086557c18230a18b1db4244fa906999407f18d9fa211c0c46379c0d24d777e62beb640f8488b54939c79bc1da600edaea1f8503a15a2cf125a9ec29afae8c80347a1400e9597cee7785c1ec5092e4dc76e12185982a55d2220dcb0051c4e026694f9e63b624c903412a1e8ee4f0aeeecad8aa80ca285985111235286d93842a97916a9b1b041d6a39d16b577fd56dd494ce6b38cd397f8e611b06ffba203a7566359cc9e268ed38f9ae68b8989abfe3a9e36d4e204946fd12efc2470a0fb9baa937f4675edf2be2b1b0ef9952120b74d5e99ac6392196067694049b0e69f761660fb3854b5602a160c027cbb7943db867d29d823babaf6b76d12a538dc0bca5068ff5fbd7a28d94d9e179024d92603e17106c401d0bbd6608021dbe457b6656d3656f8a446891f2e8f72ad53a9e0b1e917485d338417ac30f0a203bdbb9f55b71e3d63940364cda753d88f2073368ffc015bcee4220fbe3b98f4a4f2219a8be36837a024327c6991d14fccaf82265512d14074d8ecb0ad9dcd9bf0495e7fd0eafd7c96136f4a8570c1f00d748852628364223b4568a575c074348e3ab74a76e6a562ace7c8dcffa1992679926791a273159bc5b032799d4504bc17e3f711dc83733cf4d9cbed8f7cae590b08acacbe9ad0ae51198eca88af860ab27a496a2cb26b4a906c207ad833149f574de8dbf273a76e00516aa2825baab690a31558749e721a52a2e8a6c695f37d13ddd31247939763d7025e30c520d1d4cb1e3e26c25e8f928ad26051850100e7d207c624909e83849c01d0f0fb32b696de2feb8eece16b18859a7c51052abc74cd001f21b03190544d214a704d6835632748f685f3ee30e83e40152684e97b8097d6277914160f678a20a4a55b89e923891e5268a224ffd2506bd78addfd05be71f38dcdc38262cce12962e4488a2553b2cdf80ae6ac7920cad34af04ad4345461517728771508b13b3dd989405c29d902e61778550c5b13c46e5244cc6e7235a40dc4caa8f7197b92983d414007d1123adfba2e2a559559d8232557104659e009ccaa473a376ada9f216eef005d1973ea0d09e804f9240ab58fdf440b293dd6d0be5669c3589cbc5b33b39b1132e97d41509d6121f8749ff6da7bb0468b6960f7ee8d513c7265a45e6e593d3fbf0fe3eff0a93b14bc9398d56ca2b369223ac8cfa223cf5e79442f468a8b020353b6a256cf42d41a86fe0ab6773cd5fa007b940d9d976cb5c5e31d976177170d606dddd617a5750318f94884b832e8fe23c8f4819f7321ae3b98a18149ae3cc03d157200642bb6b424cf68d97c09561928fb9778dcce037cf1c849048a9832839f23a2a19c03220138c1772f27f28fbe40e4c4894ca6a243dc5d17890b4a052da39103828a594ce9dbdd0fb5b9111ced8d260bfc8bd44702f417482c3d46c82402bb9185b5932f89121075e6d8849abd6f71793ae4d070cba451866c2fec72770b41642e4b9476031127d4a8eff91692e39668ee429d0b5149163d23a4f03d1b2d759d552431608b8a33c841dc556c2db3e73e8a17fc2a44e2431085cac948c84a256e25fe30f0a1514be3f3114e397860e519968a6761ce13a296487432480f53efd8e3c13d679238fbea8fff2276ccfed7855a61dfe2245bdbc8eaaf5670b1a7e1f10a84a8f8984073750e90737764795bc6c6a6b42189135bacecdbd2692360ac1351ee692010af61d52ec603749d054f74991c413eeaa5a4ede617503cbf7e2fdbcfd9d4010dcb8a0f162034e13704980c0b6611c149942a5259718860ed0fb9405865b5f356907c904f0d80665df385add6009eda4df5fd2a04bbfff21b49c535ffd8fcea44041072b618ff82c23d479aba9bc20d6084186c9363c3fa5fad5648d57bb3e4bcd63531bb1158428d4849bc1bd6ae454f682bb73627ee2191401377cc674ad4c702b99328c78a4379162961c75e042f26bb7b362082940fefb040e6265f2bd4fe6f3b98fb2f447626ac902321487fc3385d5380c98dcb028a657286d4ae06c7ee12e5cf6ecbc31562b238fb80aff711554bb5826d95ec04b6da5710dcec8af341c24726ca2d2eab7eca9056208810b2c3963d167f65cecb048ac3930c7da734140becfe41e220fee7e0a8e09eef090cd9e8c969099cd1427a8551f0566d3f3e481967f8acccd1376901954e8617cc60490ef218b17d0c7a2ca50773fc1d552a1ea2c05041d3e46d09184f9a8f88c1976a06a3f5264d7b9413517c2564e8c714d9f29221e959a2601f5b9fea36c8539e9645aca835b36b3669904281fcbf6b8212eaf750833c11a2b488dd313d7bd81e6ca03355cf0777cb6acdb6ba56880b5a5a3507b3df00adf588543d444d9ce1eb88e892b9d29c0ddeaa1d7875b086f1a58d8e1627255ac10fcf2e2a3c24788da01f093d2450c2cf281d973bcc7cf9c016b43cf300ac457270a61bd8ef9615b1437deeec68264ea59a3879235b692095cc819afc24f7e7e43f8d1b18c71d3b261edae9c3ae492007adc4508703c29dc1341ee981bc45a3994820e1ada047527f1793c4faa6a423f1a439b3540d70d22a6005be4559075df47a94bd6933f622e9d50f6733bf8a508f9363967dfea57f00e8393f2f80d6ce10135af29c43b9de92befe3a3a73ef1a2a7c29e7524f31a4dce8fe2a21f21bade568b7a0e07b8b6ba0dd4273de49a16216a75bd817f56201ebbcaecdf4866de9c4fa881ddf87e1e03562d8b5556c4c8ef966d4628b7655be01c3e36d5ed91a7fc25a4b8e696eb2bbff5be6dca2b2d6d292692c9eefd51f77b9a436aed371ace058990ef3a9af0841cb27aa177e3953fb22e1cf82481ee44cfa9f194c7a6bf132b30369b53604a351d189b5be879a31954084d818a706dca9a01f395ad8f5b84e4843eeacb06364995844eaa8cd6423029709f1c3995f9327edb346b36a4470dc2a1bf029c72f29ecd0678bd87985e3122ea87aefa14e54a90a6513a507cd4cf3a3efed4d838f6518ee87368009a130280a2cc3eeaee6173b7e880095690228da5d56d94e6aaf96b2df6137dc045163d258384fcdc248043f99bc3d9eb6689b23c5fa741a6e666c1ae6601b149eeac14f76a2b161f409c04d9c0f791db4a44dd558b5684639c500ca91c430060f9526f3c01aa59550b6cdb3147fe3f28207e18f6fd7bb7ba28d4f6d707a73c2df4ded22855b8a208bf1a380c8e6350d79d0d162911b7aadda26ab796310fbf3693e2402023adf0ccae36336795e986ee2674ae03fdceed34c6599575b4ccc6044d801b1228a94118d08eeb4c9c47453ef061750f5fffe6cffb3620120797ed80a51f4fe39a2b166307832ae0fe34a87a8e64f0ad054d077b2b9600ae31bae989972f245aca571152b1412034f64db72635558ade67410e59e30e2d323176cab048ba4522c548607a1893c793025b8866faf8d067dec76a3b38b3adef199eb7c4d155c02bd8087a425070ee25b058672cb229934300928e18f0bd88de92c4f135b7b311fd84faabd457339f31054e58583ccc5df7020b2484f146e3515bc79324ecaf65c547eb97ba43de4088648e87509375e708cc1b44a7cd6a7e56cb67879a5f67b8f753f1107c957da6790e5a86811416e4564465e49cbcbce1c890444c1218d761b18bec0babadcf48b9931c54627427e98e5dba59176e90a01df8881c7142ebdb91675fe18ec692a34fc733211817adbf09ea710e5626a85d122befd646164ad81dd9f01d2b88acbc77774186f235b1fe242507e233a242ff3da0f202d701d542a3b117dec8fe23203b92c603461074982dc4c10552feee1cc7ab9f89df38d29f0afba65d5aaacfc9384fb6bc4d0e55e858afb09abc1618500451ecc0e92b942f4a3c65746d1d2f9a16a7c9bf8f2f06e0d7e09a1401c16f6923109ace91be3a8504f05a555c862812b1fa58392c33d76d68902cdd41630c569ec052ed2000da434587e7ae508eb62d9a073da4d3a8112098d07c44c0f083fd1178d337b1bd158e06912f575cf40f0e4aa0766ec4850cb46cf4921d9b334622d0dfb28a9eb5805f12bbdde04db69637cf9a60ec4568ca9ebfc71fa902fcf9107fc41197fd0b61e68c5c76239abb659a1d2a01550c19519ddf748d17f63c789bb38284de61269cbf6ddf610da27c9b19004d74af2574640b36f114fcf952e4b95e76e4d8252dafd5ea43b0a632636aeb1123009c7be18d0203c8b5fd4a7282b97d62df380c0080ca1a33b9e19fb7f47b1f6f2faca7405318e4df314b93a2365078fef69bffb5ee18ca7987d364e64c76f9fdc225d36a45b609e550ac3eaf74445b48471d972e038856220fe1708b13952a059afec3d36800c51291ecfb0d1202d1ed80b3b41fb79b2646641fec13763eeee55649c98b059ae55f6702bfc9d3f8b52bdd9b2e39fe9d9ab8c2322a947aed8d8b24ffa6e6fa8f056cb7687ae3ce184040ce7640ef7f6791c181bc11bc45cb7055bcbe1a88103135017ae6939feaf57228858ca18d08d79aa4628892ba08c2eff1082c7126ec06721ab3ef05050e34a9ad31df905f01fc878b7ffae97934106867f2de681a9d643f4d8570d80b948b89ff1b90aee80502883b35f1412d0aa12777b1ae73218f75c116ee6ea3f763e80810aa5a14fd2d7cbaa4947354a0ceb5095fcc103993e64d00fa5c5ffa1250b6e07ded3af2b3977d3e0b2bbf6ca441293e7d03220592ff9241ca2224e459f1e31715e20d885f9f806010fb1a78a268480bd3542cb55168de24f2e3ec382bb6ab2cbdda1b3efd781274596dc23307d88bdae1d455aa7ac9bb8da18537355d96b97d3b14ed6ac359ca4544351d108b42d15835f3fb0b9ed7edada4ee29fd49d866c70d1738db2b82a8ead037018b8a83e5aaeeadbaab3b48d361a8ee3a09de2f9bd8198f30ea5b748dad798a467318ae9f7cbce48555e6a242adc46c188f6c3c812884f287f92e09bb658c0078a9620c51e910ab56b39d86d110ca1ee921e1a65948e33a06efb39149a5e5aeabe9e2548917a5d91a9a6007dac81462d5fa66dc618226f192d53aa93d2c56d1308e9dc9d4734dd2c513106a81e71c5119b92af48346c12fb20d21f9783b2d4cf949eb0f34afb17bc04430595dd51b6435e5cd28819bbbeebccea1f295ea95166f266127740827b098b27202bb69acaf838d27734459701e9e96970958aa122408b24a8d6020ea0ddb8cb3c548019e3d42be79cb20578b3ed1c6c42a72c4bfa1d6a8587e22c8bb83b5529caaf391c4531ac0a5d66baaf93857db5dcccbc232b74ccf7e6e009173eebbb933788ea8a5b0c2a348a3b0e158c96c056214d52edb0dcb4374029547f57eaa7cfbaf4640f487aea44ba5fdb6cd985b2f176cb33148530def19926c61ed869fed0b607665cff1c54478d433616f9becbfa46868b52e21d473dc34ca5d31d6cc0985ff708702307a545b06695024dba44f821e7916a14f43856ca97a5247091343364be4ec9fe139b8ac3fd6127a4c3d96c4781e0f3391aa6248cf45a62bb82f8659f1a75cca4c0c19c0e3819995ef091d7a1ca3f915ac84e8a0de0f7da0f1a8b4d5fb719e4896271687bb18bf5816f3aea238d8d5725d58be9aabd73b58c1dacd97879891d81ce12f2cb31ce5e3c0aad913e222006c512cc3ba09f46470100b6a73e29cd5cb21fefe291e0edca01300320da8404023b5cc22fd39f94c8a5a1c365f27b1eda30d579178537b1851f3b01d0f76dedcdbe72b2767f3aed3fc92363c57891149f742de21859ec458225aa70967d205a223a418c359e1bbc8eef8c9117739ca141604f3cb13810e2cdaf4bc30ebfe123bc87b45c00e7ad8ee3c889d6ea88c4b9a0c04b6cb15bb31944649f019b21d9a87e357e7460c55869e8ee17d8037714a27d7665b28eee5282152c02ba9054117ed84ac9f54b303bae39e945a30d2324a0765ca32349e13c0f36c9c0e29d08e0d7499ec784b386e97842b4af39d67180a789f9d8bc4ada52d10cd9e7f47140c03732a24d7221800eddd4530fb47bd89928b24ee858c41ba6d4f1a219290bdf7de724b2953923219099209ed08b1470fa80aee1525a52d904e39f4171350558388e6c6c41c1f31f3a1ba3537e57d919ec2ce09416e6a8b66469fe007921eae283ab2828221a21aad2a49d478e3890cae60d9cce813d42242e820d485102638c224066e2435710314286600e64a15dd95a2297bb85edfd4ce1b35488306463f4a90a00b01105145080655a01184942b42f48a944ef2d0f70a13d995222a98db2c2f756b56f1b513e47aae85d125caa4bc585a1acee36e6a0b2d5afc808dcbdd941762eeb37a1d66491fcc9249e450e398df609f0ee6e18d8f9bcee1b440e2b116e65c4ee459751ad322ddf0e646874bd5e0f838a405152d66f0e1ea319e60b6c891a3cb0e859c98133b55f5f899635ffc421bb20f890e4f38c37cea2a2112e829d82077aa0a0ec13c3e0b97c7d60aca607a0a126165ebed877db16d94509e35e0c25a9ed8393d250f068e5c2ea31ba31b7a5e8daf5443acc767815b3c99dfced19cb5ed3bf26379b22cd362503d20f2645e437cf178c0ba07323fc0cf56cbe3b32055111c92559e4671c80ad1cb212d5a1f5acb29c04b609612a72711fe22fc4458dfe204e35679766ec84aebd953dcb1c02d1eebf1c712613d469fccaa5f48c357c7c05825d853847f8233f413e101eb311f3b1666ab255b2d1ecb427cf15830b64dcf1db61871e66c2e81f9a3fc1e22f249600fa32cc2d163f40e65175bad8f1e632781423d4a6ea35030a71f1121f331ec9391454140bffdb7c9d18f080bb2457dabed5248a6f1c868539d7e2cc8d64903a7efee87ca019c6fde02d742e411e5ca1091328f5ade088f111e21d641ecabae7d4734bfdf91cde9c783892b4344fac8136301b08a51dfe9ed8b3c9a0ddda17080b7be7557cac01958635b6b6dad6dadad7d502a6dcb94688b9d0365fafc2494eaf323523f21f4d959902d50469bac03d9b30b3f5064d0f91ed61be1b13e3b219883f58875245064d0f9225d80ba00e6995f68c3738c8c31322d3538033fe61d260c36316a3f28b3594e1f664f504616a520a0df0c5ce99c5c29cbe91b9db34a7622829132768389b30637e4c18371420108209210abc74f7e8c945b314bd6f0e0d6442e2e58e31c7869af20b4c95c97883e55e8ef942011fad3bfa96a300abdf67a9655065acc39e79ccc61a19d74b34fba16ab8ff1962b7d7e78ca6eec11ddce89cd39e7f42ff6883ee79c73c618a3a573ce542a46a71b9cf38b6dce39a7d599d3de7c9c5a5ce9316e4f298d3146ed8b9878c092677aced0f08665e39f87e39e688846628ee6ec520a69446c1eca20380fe50f9d87d2045ff2502679b696bd0d9446726666069a8fb32309984c2c8156e005231fd9c1d06f3f168670e74291ed14827061820e2d4df0a36106fbed2088380d166116c7c045772764be56c2c01f3366464a293f29b9abcd488e8b6eadce8dcd87e3f4d1b3944f8a0b6d3e7a0c6f5eb39966b14a67176f620efd3ee23865531a758e14bad7f3500a8d20853ac703d186fd862839bc789029b8b280ed1ba4c1ca95924bdb673326ce34b3692ecb34493499b18df10bac525a6718638c31469b33dd62b25b8bdd5a56b23ec86cb3988d75366b5b77376d4b43c79e92dbb6d23ca2652b92d0ce44ad23db9c82999999e8a333d047c72a9dcd730a666696cf98508c9382610d416c71c5c99eb436ad98cd669635cbacda4cdb34ae2b994a5ce99e5031a9994a35cbd411921737908ee811da3a8a69c91c619ff9a159f2ec9e0bc7c481a359e2684559e289284250bc845a4b67692eada58dda4b1fb5918bc992264c5c4e80e4acf2ec3ca1e069c5b3f7acd23dad3ccfd715379c6c4b216cdbb6690cc4421c855f5ce5e85585a8c8a8855a4cd46ab55a2d2e32d2728494090909090909b55aad56aba5e3743a9d44481d21b5f8875d4c5e55888a8c5eafd7ebf572b95c2e97ab8d841848484848284888a3bcb88aedd7ebf57ab95c2e974b4848484848c8afb822c4bc6415a222232dafd7ebf572b95c2e97ab8d8e8c8c8c90b8c53fd8ebf57abd5e2e97cbe572b5511bb5511b7d2a95aa060410420841870effbe66f9a1a4cb32914032480abdf07abd5eaf97cbe572b96415225964a4e5f57abd5e2f97cbe572b974e8f0ef03c11d3b56224c11446896229c5e885a90646b1ebda48bc572f7bc7b25130924836494d7ebf59a2f70be76803b562b114400000046604d16ab59b2ee8dd5b92fa079f4028be5ee7956cb3df290bcf583553a31701ed57944e7d19c473d8f562bf901c009009e3cfb08412370f223323fa41d101627bf902ef1ec361d10f954280033000168960168909a9e87940b74e331511105ea1c7a3d0a82948812318b0a5129764fe502a09399b1b62c40c40dc77146375cc99c1a4fa6a08686a25d6009c1fa0acc3967fcc066190787473323e79c32a918d4e99a4a1db76999c52a9dcdd2e2f07294d8c3b6411a69ee986c967172d06d3359c6c9f1d171bcf73475e6651efb68b499dd4f971bb09d10fbf54bfd66b9fe627ecbb8fe50bf695c7fa7df36aebffb1bc7f567faad54faadc4f5d7fd66e2fae37ebb5c7fdb6f27ae3fedb7180efb224f7fd96f315c7ff6b7d42643c3f5477fa3f1361c5b0d0e558e528333f6983e5d8280ce66960d8613573a13dddd8d75379dd1672a1533bbfb8b28dddded75f78c72a57777c798955442b26f976fc1a07dbacc5255514d304e7146ce8c6b654290497485191fb2fe48c905250e61a1e4431f57187d18adb0a2820e479f0a3f4e3e157e829815a6522f5d524a2965cb96d367c7c9a427c530ee679020cc6a62dbb02f7bfbd86fcd615f7dfad8d7bf590efbf8e77742b7135f583da136ad848158659cadab1005d1662093f8389445ebf963e025cfcfae8f4357103dbb8f97065528f0b703612fcc8a6fe4bf6fdfe10cab98d655f9a366d5842975b8d0d13e7adb78114988d27e94dc2a452d77533ea9aef3ea4d659f774ba58ec88f76ea262e64854ee9c4a8b5f56bf9fda5308459ec5bf7638241aa5cd9f19471962a28df9a2ee3749974998a98f3eb9fd82376d8dd4db1b8de8a3d286df7764a29cf39a565569c1308cd374dc116572127f4fd1349b0c2391e16cfc2e272d33a0d5a7bafe7b93397678f55ba997440f86bad52522e9c5381da460be3500f128af2aa559654a226b5a873b220b661cf8282b220a0ced9dc601bf623414a84964469f2cc3979f62744bc21657165c739f394891887a662619ba2ace8d9b3ec09e7749366520611e3789cd0c71d36a9724f5abbbbbb621816411f89b0f6f4ed70ddcd33bf1fc72c930c6f0993120b3dd6dfbc0489ccf72f32390decb3826156586c013d985b8f5aa296c74a1d177a948931dd8f08193fc57c3b5c37d3686652a71877d417f3d5300b63614ef3b1d806f3992fb2cd2639d4175f63dd744eeae4ecacd3e7ed300b73d37702b3302f7d2c300bf3ee7381599873df049885f9f6bd107b602ef359b6c162e704611bcc59db61a983628a6562e01777b8aee699c436cc39ccb71b7abf81446668ad0539671fb6b872e3591f87cab0f2662cf1237c1c32438919468fe3e3901950fcd61c753281ba0933790cfb0a2e79905dccc26a117e09623931150c4b8ef2d07aacb556db3931def9f5980ff545b6b927d0341fc338efc0287d3e06f6702026670e1e47dc28443f037bd83167b0473a052918b2eb7907adbb59de632e79c2e0f3138bde87306032c8af6006bc9f608ff4c923960105192ef80c9c12dbba6e0576f12b67c894728997bc03e653f20f2bd9815db3fb81f10fef505d3f59892c213ec63f8cb3832cc135f98555ca3fcc9a140379074980219dd315dc692ac5b5d6deeb792c560d8ff9fcc09da6ecda4112608654867e4a8fee93adc6070f2824f7a4d54493b892526bed5b8b59eaf5eb27a5947282f4060c7df531c622de3bb328ab461ab83045e34bc72712fda440172b85343c0d8c605273c3a6b8ed4e58e4dbe73b061bc4bd3227b216595cb12a9f7e3c7e7ea1177a1ecf7b3d96dc7d9b633d4e3be7cb6e7a2804408b22b498df3ebf4155bb91f7d83b5c9786ce317978c1080e29197d234d6fa20f6cd9629006665124903ee3ac88c2e086ab158b877363cc52e70c2f9a209a6fa3856fa83406977d9b9487941ba178ead48a6b3dbcd7cb671ae6d94764fe467d2214369820c914a4a79db339b34d44ca98af4ccd6b9c73ce22373fbf0ce8843a3f7d82a1cecfd54b1d79e994cb397ba8f3cc9c4ddd52e771ba09d4bcf4755f78f3142432c3203fb4ec823e2b146a88a2c60e823efbe27706749e823db32467d13603fd9eead8c671d996b905b72fd4f9cd6bd8e1ed0b6fde322bb319e7d4bfa33e3d67f2bca46fd4d6b05f0fbdc7680b6ec8e3d933eb251bfae8bcc9ade6eca66ff3d2c7796cb36d9bf59d768b7d1504b9d784b26d0db2e6ac98e53aaec3b04d8bcca214ac181832fdc2f8f255756bc35397e19b93e79491d6306b87e734d2493a05658117002d8ad8c2eb282e777badb54641c3222d6f6033405340c950926505910c2953fc3045173950b98104ca60e2e48b24b26043076434c164112a487d1cca92e4fbe3509623596cd344c3f99499bb829466d9819717c0c7a131987821fdf1ec6eca1fa5b4bb9bfbc155d6208acd317ec448c1184254894113af377ee009bd1f83c9953080c00f5428a982f4440bcee0a927b01f87c680f2f4e3d018415334b73440514079d0a1927dfa74ce67cf0453cc6abf540437e4dafbe6e69c487ea547e956ba27a5300014203592f89245910a6410953790b48005263822c1162cd2daf5bb5c4a0cd7cfece79c33c52cd9df2a325803b6b2115d13de0adb94732c4f74fa9db0133b8ec094242d295d90beb822ba910357136ce4904588273cd3c8cacf6964c64f9b9f92889f73ce39e73c400e30c081122ed0410668e480c41433a68431811936083292c14fd54f39c4cf39e79c73b61a4e6c61c4c507a31c087103122182700214a5053cd308879fd3e8043f657eca17fc9c73ce13267d1d1d6932458c25c80813c41520b638b1c5092a40f0cc30b0fc9c61f4e027cd4f273fe7ecae3cf4059397f938f485086ad18c569b73825f10d7bcc139670a8ca3696e7dd3340f23143d9a07c99c3d2d0353004f6016c77802e3c89cc923a7eb5a305c3d4ba28906d1b527ec0421e2b0748781044718412479de3b4dc10823068c35e44e90f6ba767b04a3cbb74f30c07cb7e7f9b8b1ab97f1cb4d1332e9d9dd89150f9a209ee6c723b241004d27295414305e5fe400a3978ac68149baa0fd46a7bbdb6394ef6fb761d8e0dbb976ef6e8add672c633cb37bec16cb0f162ab09ca10318619c008b2e655401c4112dc8e9620513154451050ed6a8220c2fa8b86c2046133f42a8da4041182a70a2031038b058cfe3a66a229dd3060b13f830a4248995222de60d3cb41165071bbc66d0029ee9d14aa09fd36fbc1eae0ce201516011c6152f4e54c1e22141c58a15247591650b2c22c072c48b366c1b2f670c9086b0e042152d7001135d701045939f035401f30222498d2a6378c182cc0b22ac640152c90b245e175da8baf08117bd04a16488092c55de58230614bce0043e38f18114a22e9c74e1c40e0984911b7c788204106c0ca1830c7a403942065e08ad81a4065c7c89e94289279b2040ca1334185ae28b1f80f8f1e3041335d0f24507285c1499b830032557e082e72c2fd0f08cb433b00fef4e94afd87db9e17d4cc767f526304bfa1a17fb38e485191f5e2fc440b27a79f1c591d59c49341f87bc90e2673e0e7921f421ebc96c638bd9c68ab656ab1966ced50443ab80c283153894e08c325480832358c0c3142d78b8e245f488011afc200a9832ac78d9c20799822c3f64d9e20b12e890c35151962b5e3e033a1fea7cb43a9d43011df4000a13254df0108527f47e0653caa7988ca0c9195d7800123283e74687593e98256fbab948e2bbddd2f986ed29c1d0e30289679f9e0dddfb38c4c50f1ff371888b234f7fe4f46a56923b8171ba631519e6a94f4a29a5945eea94d2093a4b7aff9316b5f1f4080fa594ce68860d62b024081f18b103153ce12d4a923fe8808a9690123f548e96f074d78f43455e6a9197973759a2b493ab95bf4e376eb558f55b3d7281c5d75a6ba520f7c68d3f83b65985ccf15287110020c25ded00bf9749d793ae8e10be932e085c27dd9aefa4abfa4eba39be932e8e97be99b84eba5e275d9a9997bea138908a6b3fb4329f74532f7d4b719d74635efa26c375d245bdf46d86eba47b7ae91b0dd749d7e33ae99ab84eba25ae936ef7d23715d749977be95b0dd74977d35efa1602a7c33f70c78a1381030037c208ac527bc4a11ece39e794ac6fb0fe6c930b6dc51ecc2150617304731198ec37c203e045587df6ddee0191c78a61773cf8dfbb8e1040a851fdd671fde5f8ad64badb29460431c46823a5b7cb7442eccb9894cc0c8d8783cba1aa0121044e877fe08e95082cae3fb905c086556a9007fb220f022665b18d4fae3fe868cd2492f8084e211dade323afb1cd2b579899853e7a742c7a8d4e67f4be7225a48126b927ad98cdb48deb4aa67b42c5a46466683c1c3954354640ad1a550e1c1ecd4c083a4068171025329a9149c5a04e3abc865f40ed3a5d53a9f34f255df5a8e3b6fa8139a47461af232db3e00e1cd241ebdab1f29e87946bf4512813da2213a2f9187b6c21c28c2693039d4291841028150af6075ade3af683a2af8ed11ddce95aa5d333c75c035542aa675e3d6b5bc11eccb91382b9e571c4c5c01e8c1382a950410c74076b3c664522b6ea1ee30cb1f1f3d3e90f907c20c56fed79be8090faf42884f9931fb3930a3900793dd5d9c3eab47a48bd823d1474b051b0458fded6de9b5c3d337b6c57c5d8af09c0508449c8c38dd99ac187dc772f2f5d7c188dbc14c151360fc6094d08a5092412477cc8d122fe38e425e84313e4b70391df3b4c4122aaefb0d7f3a4420eae0743932cce36e79cb36a55ab5ad5b4a981d824a19db7ee9ff2350d0cc19d6eac7d03469ead0cadc989a40b10544b1216a8000929882124a460dd70f405d195d60cc648630b9b0618134a903080d498b2440fcc4022c3082aa018f1032dd608230d28681a5374f2091186798cf2984f0ca344dcc7a12e687821621be9d2eef0565e8d7b5e8daf3caf64e4c03b5dbad0c1eb6205c96ac6d74e902e543ebca161d20842230addd265053874612202ca832e4cba08fdfc38d4e5c949851ca2708cd327157e8e98157f634e724ed66ab55a37e8304e1c5203e9656b8d177cb85aa3f5e18d081ffa88593e8caf08c54bde9a9999412ac68df938a4469297465b1cc09594466b41194c2f2d28a5c4e25aa7d46d68b3b8ecd6a9a5dd345176ca4ed9a9f35c0077e6b512a999c79a82b347dbfda81816b217913f5f4dafd041171cc2f48003194740f44839c3064638d9811249a421451a4189563ad0d14157b1d2c14e101d2a3e3a26c85a7954d0b325a04dae74673d4173702514d272d14e242186d8439aa28f9b3fddae84f1609cfa6c51f66a465c9d13c79ce6ac6d9abd269456f26fcdbb9d85eab4ced18141fb098cc3c5dfdcf268bfd9bc378e037d745ef3ee50403999a287df34d0288b9609304bce3631a60327f4ab583d3a572be702b36a8d59befa8e2437943ff28771b0a067278cc360f5da440251173ac7b3b7daa21dae5b3d48e7d4c055a745dc30167dadee02e3705e7d022f300e93faa3847134af2e5d8cb344b66a88a01b5fb955ecc14ebf8c1e51ab3bf3e09c68c15ba59014197d4619a36423c8474a45e763649622c6186b52372856c730ac3a56bd07ab34d65a6b586badf3629f9d3c6ac524e6be4dea23f6885e6be561b31a6f3272f6b1f6833d5b007f19c7adbdf4ad1807eb2fb3dd97621bc91d8f246ef50c486456ff68ac5a4d73fea2fd425bbf95f7ed96db0636b2f14c4325a4c80cad87985797a0045d822a219bab8448ea217b281d5409e17cf3cd39ce76b603edc77df6dbeab679dde22bf48fd63a66c120f30466c54aebc64c7fb27cfa35af3849bb9e4224a186d84366d2431f264c806d648ec7755efde433a68381263435e2b21847c3b18e99bc33c776da84f856d3409f150a3551d4d8c1673e877c9ffc12cbdb467699742148e79cbc7d48fbe9b36d236de7f0609bc6421fdfd449901486b0a0e535cfbcdd05ed83611ad526b6b84a710e0fe9ec9106dd707529f5b6de3ee7c72e037db8b799bf608b09b89dcf97469f79f98c05ce29128471aa6fce3930b04de625d30d7d5017da260bd23699ef18e25adf5accca9895f90eef7841e63b924497415d95adfbe49f98b32742afe9b2d5392bb6c9dcda1568b313d812f2624514f64cc51ee50b0ac6b14f9ec06e76b86eb8dae1ba9853212eb3aa33570633a7f633178a8ad84ecc9b675df763ebc022f3f9858ffdc62aa69b92b7c375d9c3954fecc11e24f32c73fa24cb8ec89fd567414f1847f36c09c6098b6099cb22c6e93c7369857138cfa495cf3829419f48f4ddfced9baf7d9327731e3a9c1379b2ccbd298d32a91d4129a534c6186914d40657fa15dc471f8e8a970f1ecc4a21f648514aef0456557c564f591c9dc2c376d842f9148a1b4e49a4bd08a8121289ccf7d179761f236fe48dfc263f15fdf9379fcab5cf5ad84fd6579fbf900b3dee496b1a148a15b6e23729b10a1093d993d2c70d0f7e9d974291a80691e806a132b821f7eca333db84835be2aeb9b951ad6618979a5c2a756ba44c31379f63c4a9c04cc148fb74903e71a51b79361d11bf18453b7549694b30139395e7a49346d1348a2b797ad8ddddb1bb199bc02acaf43a2df7823b81753fa6d32866c7ee684b31f6881e036da2c8fc1929866118d6514c1fdb13dba41e5d7a8ef63046eab127d239d95fa04e5ce9b3087d4ae36c291b77adb5cea6545071e5962d0a292d93008da01fc0c7a133b62dc2c0f20bbde95c6643ef5395e63d995bcf40eb303cf50a466f88d71ab710672871ca041737ced0f2f68c265c88ac8c67341ed3cd380ef7b893a3b6d357f2ecbbd24faf3f3927c405e8f6a0c9b7db1e2cf9762e55f23b838edffc7aed5640f9c9fb2ccb4c20038cfc76bad9c94b5f98f2e80c9871d3a901f2677c874f28cf4a8ef2d317c2f027af9d0a99df53cac3fb2950c500239ff2501b30f22690033a3e05aa36ef3179ca3793a7dc64f214c83281210cac1418c2f02847f9c977faf48529afa719477d210a05ae30e327b067c64d600fe7271fef4f7ebf1005fa783f03669c7772ee8470e06456073a0ecfbb97c663683c8626e6fac9b7134d4c4c0cca4fa9ee47f9892626c6b3eba854cccd6462401919dfe1ec93399db2d3e9e45a76ca34cac455a1f028bfd65e977eaf45d9338ace78b2b9fd369474cbc5f5d6f4a5be10864fa57068dc3b9dfc7a6078fffa8cd37c9159278ff94e1e3947e533336068ff0486aa2fb24d0c18726ef2d4575de60b7dbc473987f2d909e1470941b905c3cd51fe9564c7002328142ac6ef97f2d3177a7ff23679cff5949baea7fc7a0a8ccc3ab9c963c093ef34eae33fa13e7e15ca7b4e7e1d05f248e2aa849cfcfa09ecfc829d7bbf81f6461f30781e9b86d89a4b9609202d80bba787d8b03c359252caf0e687308b164929a51548473014c17ece807d0fbb042dd752f0cfac556294524ae7a454899cec923e3f5ec235cc628f5944dcb0c625751fcf6b3e6e89cb35f882cb9cb46559366735e201901947d3879e73c974cddea66b32a923a02eb83e11e92db37020b0e5e805f0718807424f6720f45c6472cc3c6676f20e9200317afd588924c004f9a77e910676316bce8f2dadd3eb47698ca2c36c714595b84cc148f437b8984bbaf13612619588cc77787ecd60646924d520c2300cc3747456d7735226308b3f1f6cc31ef3a13ecd6775e2e9029d1bce52aef4b0f38b811de8c37de7a58eb34d7d48e7d479070ee41d3630947e41da81a10427f60333755d299b34d27bcd26cda5b534172e59acbdd7f37acb16ee2dcda50937526be9a3de223d4b6fd1d25c9a4b6f611f2e4b93d6d2486cd45afaa8b9f496e612e3c365e192c587eb2dad858d50ac2d1bb8a54ae68df3e17cb82cbda5b764e92dbdc587cbc246bda5b9f41624a4edec6fa68d3233af4cce20955c07444569f783d66f763f64a41fe6daa77210beea38641a95c39b49f9b6759aa669ddd7c3451d9a26bdeba4a603ece9744c1f64099a4b4a75843099c478c87afa3df518431c4f29a514d43ae71c050e04553abc3a4643e903fdb4c36b84b053a755f37032517d5d07443ae5ba1538aef11d60a803043f979c639fe5c0506a34740dfbe93258f2e90396753fb65985be8e2f7e7d1d94d2a66038f90bef1ba9c1061aa84bd0498fca6d78fa852da45f93cfec15933bcc2a6710a60f1abb94986b600f75954b762c5261851f8e97338b392ce936921082ab9cde3c75cc2b53ea52870a73eab503a262df6911be9587f0991c84af73d5f77daa08e200430bd280e14d8131aca719ca6507041b82d2f173669f0af3f81aca51a00af3ce290d6d337dfa090c7578170c3d701255a7dedd7c5772ea9bafbecfc61ed26907a4f39e1218cad9adc07de734744e166d583f7c2e1c2f3d943fd56707869c6fdbe6ddfdd8b46f629807defad6544a09de7c8fbd097d6e5e3acdac05a5738ea0aca1e8256f54e2388e3667e9acbb0e084d1b750fbd84eb7e34b66d1f8dc71caa1ac6b0c61aa867eb306c66ce2078778d23eb7cf35c82de0eb78c8736bc2770ebf63adf1cf3b6f6aceb1a546d3b339e4355d36028a431ee1004af98d37ca104927967186ac6bb072c0301c430cf6a40159803e4b886a2a3f1bbeeeeeb06b1ee6e5737500f8ddbf0cd6cd4aece687078d84b7a9025609b875d2ff9ea9c672c37b0a79dc6330f3b6be3bdd1f3627ba5f1965fc881459a06ec1e5c34ed383ecebdcfe4f2ab25a7a169908ddcdef736effc3a770fb276342c4229e7dd8324c075f961175459975edd3b67a76da87b9ecb2fe42ccfb929cb82653b98d30ee30beba103bb0736ea1e7a49a9bb6f7e9ce5b5ac7bc021bd1814bd7f9c8283962355fee6e394234c1e87a217c0c7293710f1c4738f39969f498e3c023e4e4162c54f41d264ca08bc4c41f2247bf2f39be8e9a9eb3a9364f9f3e4190c7d6407e43a63f18bf0ec09d7fda88c31917599cfc47dd7531f630b889866a486b640595016a587c34a18565dc35ccb8434af25b04773ae9415214b68af52734ea62403eeb0ac52caea5236289d394df3aea0aae4ec965f4ca582a110e9d56be55a6b58c4c3ec09d701c1bc628c6aa1194b83b9d64d853a20e6c04021ac739a19d062798d56add67adf480d18e659109645f9d07a11eeb9b331cc026541b204e93513fad036d85367b742a7d86d88615e6485ebf5af635f983dc9e940b4a1ee809813430f8924c83806c6f8588b5dc7986da890eb5556673b5f5b81ca6b7d87b3204980ea5807e44adf6999cfe4a94ff31b728ffae203312b86cee15707620e6f27971d1093f3ab73fac554624e53c172da387992f2caccb1930ff7d9095459d7bcf6aba9c41c9924da50a7d2888be1e321e55eafdef9702f3df4e142ebe43b377d43620fcde935f94c127362d49c3a20e6a831744ee4ac88ac084980ea9d06863e60689d58a0ac88cebbfbd1654fb8ac882d1abd0d7daa0ff716ecf1d047f338431fce3ac98ae8189943042f1b7ddce8442a43c4c00c26ce98628a34b2a8c285511a52c0f8c193266c8023ca8d4e6845c88205126c6459d2859513c0bcf173441a48b88cf88173418c13acd5ccc72937f0408297a551cef6ee0d22d881afd73e221bdf4a78babbbbdd477f26e898e0c62d7d9cd2e2c1879707b3b88f535a5f3cfd38a555f421ebd561d49a54a7b4967cad5c844cfac20224a41acf0ff0b2a20c1d7090c51b38482931861453ba2091c283305bb2305dbe25be8891bda01a7145e3b8a04fb6307a78f210e521e761c9439387d7c3ce43cdc3ccc3cd43cc43eb21f5b07a1872ca637c4ba552f235da5ae28f21a753d149a3a7af894e1f87318ef22d269b311fbf62501a457d3d440aa13ef9a74f7e0b89892bb6908eaefcade3bce41bc771a55229cae75c681b4d0b92bf699af6e2384ebb691b8ce5b54dccb24cd36cdb4489514a6bad41da867637d09c938994b147c6b3f93232d1066924c577056f3449354d1a62b4a280c11565b0d1604af0c40f6b2c79420730617e86c14146c6e0cbf671e80d2318cb46d7b8a17d8ed239997cc92a599151566594173a47c3bc15bbc9f342dbf0f536ed933cd837a46d3296fd542d6021d81ce3893c3f7a88cd34b7986ba00d9963d6ad6f5f0d505a90683041458b6773cc6bb02173cd37d086cc43608386b9b4cece08a0454338889fbcf421b16d542d5857b58079e69867e0106f1b66a0b6e1a020ca35cb662309f279a26fa6a094c74e861634bf31b14b7d445228cf521f91989414922f544a122115bd4419498fc94c1cd752c95529bf28eb9d776008d86d0baa163a3ff9090c01cf3ccd3e812e300254292fb9119e8bfa88a0ac77ecb6b3de812a1937a964c02159ea1b4224c689c8d082e6ed282722430bd433478140e213319d880b35605ec3e6d689c478e7dc3933e9ee53a19c73233c5bcc4744c66520d282aa05ea9a6b6008783a6f41d582e626378121e029f903228fc937d90d29b9ec86741ef3c98fdd1013181901d2ed6d15cad98df0a4be90fb3699ef0191e70875cd3729f3c5d79c7aec5cd840fe691be91aa84a79e641d8a54a814326e8b58df4068df0c47c617c0db9699bb631326db86cad6c917f907df99265fb22eb131dd892125fa4c84a4a7c19818b1543e0a0048d29c8b879f97006920f531c9112c6882e4c9492125fc2fc500af3826ac497379a78830a2b60acbc41468de73fc8be64d9be8039aa60d290497c91a10724372863084c1b52a44cc2480a9068214506424a5cc183158f3680fe7e1c6ac355856afc123d5e403ab3641b777e1c6a43873692cca4396f1b48da6d1bad365a6132975fb8a4a30f3d242ecfee65796630ae0f9d4e71348bab795c41f3cca910ea1a186a3dbda7bd664ebb1f369342ac6760d8d3deb5dbaf67ba953ceca9e904d5620b6a858d20a42a4630317ae56a1f8790861ea9091d9090488234440e413c67e9f8388494840d2f181336b8fcb0a1e5c8b437373a6c44c146143698bcc9be638ef9044376cc03a32ca8f4ac776541e914b2010000040100d315002028100a88844291581a478a3c1f14800c7ca44a644e9a89434992c3288a829031c818030820041883084d11819302eaeb37e8b4696df632498e89f0a2050de61d5dd890e93ff5600583934c2e2ca4a5225a8999570664c8f932293782d7015b4f1f7e9d4356e6a9ad6af6048dba3bfd414d0146a7242bc2a9e61e85042241c99ae915e09d40b9b5d6c688ddd9629647cdcf02f75e86b93ef10834a8105c058947b864f71da00624c5dad4c1d078c1d97ba521dd8d97ce580b334805b4b1e7e74ddb35f179c31445b7dacb9874d4d4351ba3d17e539bda2778e4baff5d483ce26af9e46c8aa88ec87318ca2dadc4230a9320695690b978a60309eae5ac70d862fa24e85be2922b4ba1ed04d58042fb0c5450eec89b65ab6b66c60aa465a05922e041c967f428f7471ac2fa030ee0e3a957564e1d18bbf39778048fca5455d6361d8a344c079e0773528fef129b9ee7e32d34aef54a3c22d3f1e644762e7fa15f9a05d93798aff38c380bd0047c0f572e1ef174e31da75bdd531202f58df5df21dd5b4c83354b9addd832551ea40610a6dbc33e8061c0daef00ee67c4ef06d6ca58bc81fb5fe13cb19820c31836f1953f3548089f8c9e18d75f3075d6f8b64c1ec14a41db72868d8cc2c641d884588e1e6c1c3497d55156c1ed80884686b23de6df22832807c12964c334843407d37df89872c7056a3a1e761453798de12be613c4503649d876456d123f801499d2468bc88cd478d3930ef1ea89143cabdfe080ef77e51a7937054e41d651f779f23dcbd44bc1468077b02d33687fab2c97e429f23d673f0c50f69fc3aeccb21f5a0254f8ddfa0d1961f1a41460ab3bc873acbac70e60d7973fcbb1f868b4d175d02efd704ea2002cde11b8b8e2b41e948ce34523da8e7ebcf9fc324b68a55b533261ce0fcac5586ae8e1f457742dbc94a4249eae1b666f8cc9e092efe3e97cad477d62260a3e508f73f27c693cd8072a677b1c31740b925f15f7a91c6c19a5ad2c67a0820e4c331b9ae36e532eef71e90ed4d1afff55cd45d6a3968d6149ccc2b4e1a11c5386076de989473dbad4c31ad08ba56f7712af41ce0dcc954b92034de223197e8fd196cb7cda886b40402b84484299c860670d461092641511dbb8fea94cee6a263d0337ba7a53b3e10b4e2883299d95fb75586f4baa0383b97d02c5046acf8569a1c58e06d3dfcd90be8f20ad66cdc1e3f283216678ebb7c7117330f5d0c56de740c78f56f10eda4746c5d3170bd8ef54df9fd10f8627dd588e322865ccf7af7d0d6f15db3c8b25630ec216af3c721173603d2b0406db4b6c92bbdf95cccd37fea61dc850581c9ac0f1c1c8a89d639241aa8094c3c9d63c80771a94b850c638199e561e8e77784687b00a01461367941d5a7265194401be140b007b5bfd88b4f414fb23f66078d50f11d0b811ab5b266f3f1fd04f30078a3335f82d08bcbd13523db61a86543086312c8e0f21d5e73d265860ec30072beacff145c7f67029122924e7fb8036942fe5dff4e09cc605cac266d65b404170e8026d3406fcfa2255a3f45190c661e143c8bc27c4ee15e5b987efe3e1ab124e51498bee2db62ea7248b3a6cf49552092196dc39d516d3ead19eb9b1f51541115be62029b2c457cb88a58294487f44701d610c9675a64ea8f4869c52b119fa7e95e1df84701778e51dd0024b14d05bb0550793345c97a80cf6b1f0f19ddbaef0906fd0305f6764cb7e4e9e6a0be4dba4814846c507fa37556f31f0c23c83dd729418428832ab8387429f2bc1eb211c2f34f8ee57a683663b173e57038d4d08908a744c6c780c41df42d173790fd898815f1b234a095b5a1c8690f5bfc8f25e6abcbaae2087ae7e9c168b0b30d88481903c67fbab11313da7860b467caf42bf42926f78e595ae05076902f1b815c8cfe1c45147c29a27a0c62b588f631134fc4d0e30aa7400e608b45f37c62bd8fbb47c1a09f1c8726db96bf010215136307cba40dc357f1f8d8459af1e7c6555110333bacc618150009f9a6b58aa425a02217a7f6bcdc0a544ae0b88c64b2a4402f06f873949b51f358598c3d7a998fde209583eb6af7ea7e8647f48a0c378d782ac628c85a2f2f51bec3466decaf000594743355695db8e52e6d271f672b7944caabd8451a1a59608aacebcf71f6c19122e54885a7cf9fa5cdae74b851ccdd0b39c93b74d995e89c897c748d21083b0b614f39825dec1dc6eb059cb1482e122e69375ed2b500d159f9025cb1b5196da08ddd89f66ee84ae9803116d598809b825124ffbdceb5968b70b433e8b2ced50f27a1669cf379edf22232088b9dd908ad0bcbbf982e74d7d7ed715cd01e800d4a39f2c559905527100c775a866cf5066bc1b136f9e1ebc03eb9a79ad590d5566e12cfa99f802ae219641eda5ce9b56422259952e752642e08db7b92502e2dccbaa085abb516816b8ec3aa14ce763ada2409b7334ecd78779619026207073821c0b5178936029553ac389ff9412882b53da2f39df1972fa9842f5f04b090b4a73b1285a488bd1b446f33544935df6a4319613d36e1df159b802f06ee22eab346f486f2bf0cf027aea34ab3f95789397f6b069696941e4c4dace18604144a4d854d19616960811222a93e20572ad85050f5db0374f409546e1a51662f45fe08469c2209d2663ed95cc2f05c9815bb3ec0a2aa53d92728480f509c2db1c1ca734c26b73205969179256174040d86f80c22c6e518e0fad217c241fcac6d90275b1e48d7fb20123d4db605af242c4e5ac29fb5bdbb6f0cb6f419c1d5c384ea522de0faa58e8ee47fa03b1e750a00d02d21f7caabae3079c72423192f4d37b9f87e106c1d3870b073a7e704d555195b0da02c717a68bdd0217c4ba9461d608ed4e62520fd51fa1c0803dc8b8002cfc5461a87b04004297d53c9ac29840a2d773bd54ee6ef2a899274946eaf2fa61c8037d90d576bc1a4680a22923e50c272330ee0c9856f9e3ca768bfdc876721111e4b602adad7029ef05dddeb782f5173f41358d63c5e6f79b1789c16a12c0c58051b03a67aa425f5998b275b293f841666a83ac191c1ef0d2fff250f75d627927e1989c4e9e2c5e08cf49f43017cd6f469b654706f8a7e1f6328760fdc09dc6cd39e864880cb01764dc9e8b390cc075b0cf8e9df7b628b0af3057049c61fdc0f829a8661177e76780c9cc95333ba47d94d7cec0be4e899c271eb4280e4d039732b103a07abff609aade839b033aaa371b3d576994d83b6033bd9ad5cf952bad8065e0a5180ece2b7f40af5f897305f4868198c44d2d708777f48c606f5865ee0f0c76521776edab6308620aa2d7e76af9a563af7ebd932ea84d57b83fe0f085a6d43bd6098ceda7c48c92b9455d3c70b2717561c4bd2c6d97350540bf0a28986236a299523501cf85a31a130bee30e65c8a430db58d866d77e9fce636d4a1d0c2a7ce2ec63829392ce354ecaff3a661ac7a516283a3680f05f85bf0976a38b1a95800199a272442cdadd8c05ff59499c30238925c125771c3022865fa17cf70d8698905d48ae3f0d34624e6a548d18a65b720c089008d4529c3bec0d46e0c198840ebb5d73d5b633db757255bef78fbb28a87ba3b1c03af489ff29852affe8e81f6766622eb64ed67ab7d44cfcfd7eeae11cb262312e3586eb2caeaae8f8977c5750b49fe05447dca97a84e7f85426e263b8540569fe6e662478ad60fed973eb6cfb5d177bdcc3f7957b02c4f9b6a89f674cab83599784ef467fdb2c85aaa18283639e5c78dffe4461768ab061059484e245a332a1dbc6c2d7a1af13dafaa3328156d02ae2bf4136478159bd8075714034916bd62ee82355f5c3efac69b885db4cfc0561c85fbfad6e2dd044786e579bf0b7fd00c6c85cce832c1deef31d64f7a3d93cac81175adee6c41564cc9ca8a287ab99f85c680d5d704beebe207aced64953cce498f9e08f994e7e4414f8624e403f134288df91264e638cb12720eac9ae810b8e4dde0202b2f0d4cbef80198a0d509f9323d2340de33d542b81b95edb2628bc030b9d8dd2f45e409978d7c30fdc59fa07debbdefee34159724aaf60dfd24b8ded3f9cf2d1db1b6ab6d04e6eb49903b760f5a04722dca1fd0021d4420b878d14e8f03fa872e05d2d0b1a4d46fa29c1479d02cf8645aad67e5154742b5029d57517854a2ac09a7bbef436fcb7ba7667c59b7f6d09617497f94bee18ae75fbc4cc1e4c9013f0be044961cc8330204dbb152b884a0db7059abb0d32f200766b5978f9fdd09d02ac7595c487f9d91468482062782800fa6dd3019ecd9410e3e75d1802aab205dca76cc3cef6c734d3f588d6444e4ca26566fc91afd8a737ea66ed3c27b046a9fa6441168431850901f11d0091dbd0083cbb0284dd20fa9eb13813f98ef5eb70d591e1949564f04b1f02763979cde4528d5f3e98c88454647057a4336227b94122351365704fca062df7ab81750063ab660992953cb0108d15c43765789e0cf0791469e3484f759c9c351ff6bd138da5b8e50b9694ee3253ccc914c10619a675a4fede7effd65e5ae9c2d684ca66646d95901f289fe9f19db61026243dd4ecc4407e315288f9a03f23527bd65a382c2914d773df982978ee30d4e382d079f6f25c3a2701011990b671162e2260804ca628efaab5b9e40f2ca57e2620d1397a417397c6996041018078715ee9f8b7ce92c3beca9e056943e2f9dc4665bd11799f82337eb9c8fdf48b6c32997d79937b560495419a892db459ccd8ef3af7fb919b93c3bed60f2f6fbac859e9335413422e1e2a03859703618b9cb04d31b7a38cd56e0b06d1e9c90181714ab8608d42788cbd53b14a3db22563c3fc4fed9921203ec3df2907472c0c92d7f652e14e86560dad9bbbc8983396089199250386cd75c74fe383f394a84ced67783d44de87f1b0488684566836cff86e7d12c76581d4b30f4ae264d0a3f1ab3477ebdd72e292e2123cb668a6819376b18455e937d4c2e3ebf0d2f96ccc089f77374391eb7c63914d2811083af160e827b724069b29d28841b712a9b859324b86f48df18d20e4ca3f3cb11f999cdbe493399120607b4480c0209d304d91cafec62ff383cf8e7feca9b81f8663f674d0e2fe3841ad336840e0cb9db70dc802addf83291070fc7a8c1138ec2595835476fc0f09745d8cca63c97d9c40cc3733cef354ce26d43ed1f09fc136449ed2b5a587fe370fa3bae45b264a3fb558d97afca8e90aa213cee30e29b8b56ba103efe08cc8fd4d4b5dcb3c8dde4962fc8c0408bf07a5ab61beb1ce5cc9899325e4f2a5ee8090dc09966661091a3ccdf9e2d9559f3ec4bc75304fb0a3a7495b0dfa5ad2bf1ece31f9f0933cbc8c94725fb4985f8e4e7b59eb423624bba38b1e3d58261d24b36ca4340a7a6669f08b6ed8709087fbd48ed15741132ccc49f40a0fd84b4ffd7811e0a8d6bc3509388904ec968a017c3c1bd22c66bba24cac1cf7b38411e099429d23fee42ff452a6d35c4513874441a1e345a905a6271c98948e9b6e1b0c2090c6cad58cdfc06f642384606f946d893b4d93983acc4938366c46309fc706ac4f3e45f97cf230cd9ebf5510f2331aa34b3e531e649014ef0b2bdd7013c7720bd9f0817bc7f5a22f1f5b2de96b822f81ebe9deca65ca0851fba7fafdc774e05ab8b815a517afa0812bc87a425e8ea4c424df2a4861cce6792a0be1f4e75368c36f789b45fd9c4a18dae39f4cdef799e750653a61e7cd78f5a979e6848237b478ec27f5fad176b7ebac4ada28e40fc72953d8dc1a94533392766e7b1186f169359b5c5063f4bc7988065dccefbea50d24dff3d5bec042353cf9d77f54eed06c88242495836efbcc8505cc9c296d8bc5b8b0b95e7ea76ace0795f5c735baea5f22700cfc2f3dc6a003a1849d8774462ac333cc2b0df755246f167115a660b400ea48ea2d44539d928007f668776b22f5d54f351203c137fc74101c8c0eaa09043f694173a85b81a0356ef6a2d34c8d4dd2bdfdc6d043520a2f7ec5fea87bb6b98eb189511a19f20b7222ff3f788434f40b190d7f05944082580118fd9c574a3936ffc476a33b1bd45706e784591c8243fb8eb9ba315f32f31cbe6285251bea9fa334c17b0af92a7db9460a84d6fbd1136a61c9dff3b3e0c5a87dbe8819ac421103b124a39290eeb69013cab360df173e6d6400496a80d752cdfd773d017a73b9d04b515d41e2302645394906723845b325462f187225633cd8700e1906edd82f31a0a0dc8d4000f60178b1cbb498d3cace2c47d8e4f981750a1bc04ccbc38e80d978bf8e08eb49b02642854e7dbeae32889a582370e55a4241c2019a90be84997963e6861a5226758755450418301eb8879c461f2d30dd0c70ebe2c6f9de0bc07813f8ddfbc0b35ebb0b2e1dba790b28a336e3e642ad63988d21ada6fbe4c4c5a10d023ac500e0ce6187709fe6ecb7e54ceb49f251e8129445c36d455c5e8a4da8b32984b4ee0e0f9cdf1ce0eda57991a035ad6efbaad994b549f803b9832a82c25450c59ba0d68615aad836b7ad9fa0c7d16b8ebb450fb094c39eaca40bb973ba54b6d117da67b9c140e1392b03410833a7d903c8094da7ae36c0db0e1e2a6eab1b52b83c1fa960ebdbe70611c58adc8b9784b56b01b12499ea01508404540c74a19b6dabbaf60d8859236449a2e859cb674c9fc8cea4fc013c4b9e9c30947b4626705e601fe003ce423f8d788f79302610cb228d8151513d5989649bb1ecd6249a7beb89d37e5489c4a04e10caa7fcb4e06a72463e359822b2e4ecefedbb0d786a0845bc6f2ae513ceb029f8ada266338bdcd8e10bea2dfacdbc322846ed8fa615ba0d8ff4d437de13492ccb29f486023b641784a6aa72617a79802590115d06d9ee63ebf1e035e99d43750cb34cad84ac6fa3404bd29edbc0d0a2f03a588da07a84e4ee7c3033725c7e547ae4dff6f4b76700746118868ab99705bb99679b042d1b0594c1150837823e4b3b8434360bf55238e753b72ad019f2f9b3adb7a42fa2a0a5674df95850d97eaf0001811f59212afd558f60e0023388e0996d03dafd69ac0f31021794e7d54d64c237eca54796112ddff2f91af42f18c1b7f7edbc749b766b2a4c0090bda3736ba2733cf31eb68c4a1ddf85f76aec96ec18a8d102f0ca202c71c0ad219268b7c4e860a610890c112584243c94a37870b0daf23b35f99991b38f10922ba3ecfd715eb94b9d25dac613bc44ebc0758a80b9b070f01b442e5d7c303faed1e7c3d98befcca8d738122e5f773590a09e10e30599a69324d78c9cd1c8a07ced4120ad3c1a9ec2c68911707b9a5835a93b19aa19fd0ad53683b9025de2b95c566a0cc59bf4dda4d1a9050d5d773a86308cee46833be455879dec66f71bee2603f9c28aea2fb712b7a107ab9bd62b2171d2129437766320852354dc603f0c9f9847887ecf78ee41f041f31df3dadfe6124bf4c761607195f4cd6d9be2e47961bfe7a6000d7181c60fcf145d4a7e31286e93f313905dc8d1fdf86276abc4d50ae13e3aa60485fdd6fcb7fa58730e2b61dea680f7a25616025163fd4319983940f85365f136a48a504ab5fbf49c5a8740fb6dbc2ff24bdacf68c3c8cbfe1005c8ae8f62a9a4112b3550570f8f576680058562153b9d462f0c7157520793a8249865a2fff03d95c541c6f17ba836cb01ba59617670354e34ea9f5ecfb69bdc4c97070c9e3814c1ef067576294ddb41af48844ad76f450fc065e71ce5443e55b2cef1a676609f5611747238d3043cd2dd9b826d100c4c8e7935433699affd1bff75e4e2e6efe9f63b1ac4ab512863224521d69be3cf4abe2415f16894758c297fc08b3d19634bfe9a16ce3c15e1016d53b2ce6a77c307ba5da38969a9ce81b8c164b484720646138de045d3c4975f0f5afbacfc56d8f3fc68820c2a645d2ed492e8060bd8685ba007b4562c60a46206a3fa5eb7b9b301751597187bda27f1da04d4687bc9654997a53b60d53ffdfafff891dfa5f639e0af46c007fda274825fd134d059ee1e87fe5f31a03c37b69e2653b3eff89614e24ea8a5a72d52f78d274437451447be19bdce426a93f47cc9f4d5b7d5a07ec9e521f98c948f7192ecb3e8f2b20ddc5947d7822db5456262ffb60514567175d4b897e9e095a5f4fbdb26077b172c9b0c9c859ec6b91960015fbe296b0fc2c3a4c454a4be1d41c83770185aba19d4c9dbb74bb92279652292db7c0baa2b63fa7af406cf858af0221ddf712b0ed21077b36519309980c87f53ac6a9f8cd0723011b46419965b80eff2923c3b2c81b870cb331f5a73312e7eb246fc5b9cc7d2c4d58eccd2711741e2a450522274ae6d3c2ccbd3133ee7256119583aedf199f824c2a196410f9ffca60aa142ac1d1910828bbedc74ba24469990fcf9d4b2f40141fbd18d4980b07117f3007608b67dfb81311cd30a25c538d530988a419ea6967670684cbfb3a8ed3d2b7c50ed43b18ea87c1449ce3cbcdaed8c35cf54f329c02d6c5357c8e9e92a30bfd27f3ba78bea4f4f0e2dd0803399fd983bf81e251453cda650edfa517ee897245bb0c13c8d4822b99f4183469ad67819a886652c43253fc7399713d3c35d5129a6d09f2107a5fd833eb1e063d2a817bb484074e3be5136d16e94935c0f5f2daa4c9c9cc4c977950a767a706873b2ff131b3154ac58c261576b59acab7b98a979e7da419abb6173295e8392b0458f006e78d17de51fe38612643c81ed43f9d567d46f461041c2489007addeae5c7f106dba56b8d8bdf8d5aaf25557e5cc8dff642097054a92951648cbd06bc1ec5fda918b933ac881ac0766adaba0c261d0686124e34b9547d496957a8c49a9f7bd06b2a1c4e685496192234a7fd6e54e939b91df446fd3c59ac45cd744a9d7a31736c4e12cf2fb690e23d5bd5a3999cd37b59967d16dfb7699b0f07fbea178de6a129862df023a924585450c1eca5c38baf2b18667a1ebf84c29c94c8faf82e0181f859d312f84038a5c47e92c0386325a85297c3230ba03c162a115881b87c0aac9fd04168ae9e784c605042d2d52229c37a6346684a2e6375466aaacd8f915c959cd3e8e36321d5247e74f1eb54e97a29a2ee7715f6b56f907d88ad20093c4bb24cfb41bfd1d0221c67364b49faa2a3c030a97e9d7cea1b17292039eb0f76c5d809b7161a621df100300c5835025ceae4c6b9aa982c3dd622f5e4cf0e198ae127fe8c6db917c14539474c5fdd1c18865d394b914cfabdb918b5d458944e196b5b61f4402196a891e2c8c4cbb2224fbb130f5fc7ecbf670b02eec0df1bc4444daea0d72fa827d0cfaffca4a4cc037b1d0d5dcda82ae1daa3268359488a8844942b1728d65a0553e3afbce36be50b397c3f45140b31c5bab939c3effad0254950bbac8c62d815015174d1a18fbf0f53d092d3d2531b635c0d1b35c8831c75783a759ec5113d246b5c879b4a6ae544387c12846f1a8395907d5f673a05e414a6da7d60551fbcdf25ee1bb2a915356586c8f0cd880a586988b095fb74e65a7d83345b152ad89a3fa6d50cfabe03f69d92d04f81dcdbd8b918849b0db6300de4ed08b5f0f5ee0a5e48cca441b9a9b07b6c152844356edbbf7ff6a437cc82c41f0a5f84788773b96cfba3b25245805f1edc6db38289ce013fd92fcbd9742cbb8009d420a98188cded767312d593ba6d8fda0da4daf96175ba4c777c58acfd9d5f0b0aa133cc51e0ae32319bb10b99e61c026e895b8e4d462117485e07a25a21523c68ed66fba138c2ea032a204e6b201b4727af2f316ba2363067d62f6c2b4491cde04d0542315bd1836b28de6d0554be3f9c824e21bbb8262f59d905bbea88f9401f51bdc632596ae2fbc22a55669ef91e3607ef5b98ece766c1a9c2f2df25d25e8286470c4c66129191f3779c17b7efef51b21bfb014cebd4ba58eece135d201f5683e1c77213dcd7c45aa92eed0cc4254f8eca67df7ceb400000460ab0bfe8b242d8c6cab9930a0cc68ddd17c4af89f55eb82e5322754a034f5d118b1d083fddff9415b0c64de6311124152dc02b36179d0cf1f62d7be93665e9b10aba11c8f61d7ca89564f77f909bdb10d43332bda113ff147f908158f025ea2e4551b783212b1fd493982bd97c17a574c10baed4d79d70d7ccec08c74eb3d2780755bc9fe98493fcaa1f4b7a545c6e79f98b1241d57db274df74e47df6be5386b755e746e44fc4bc1a2a4c7a77f9cd7828910c09fb5f3c1f686fe35fb33fc5c2f1cadd289c54ac5f501e2081d57f1f0fc2fb46e568e782a06a184a55948366f0154079e43fe33ab91af37ed3f1d6e2d4e54894e855f4a026d2b608cf087f110db3e515853b1b59bff295d199c9d0eb8d4ff0a779106211d4c85f2e9aead03e756e7529e327bf4c0bb8f8067ebcaddaf261047a82576a93e29fede0dd539a8eb7b413443b798f670b8f84c1b87f2795719fcc09c47578287b3cfcdb5aeadcb52fd32a8f6ea653c6305dbf3d9c249286a4a2393dd7b6968b4855e23f1c430ae602f9c2f67bd2199c219c3dbab6a4813b426ac87405b8693b15f6a82da5b2976ea12c51b74c5909884109d845f0f7e8adfef5677b3044579ea7ac8d2a9f4a5834a9b83112c5ba0e3d75fd07786623dc41faf7bac0afbe919a2d6840fe2b01debf2e8112de46804e1b0f295075873ff4715cc2f9193d229e80d8805b50dac20d654c758d51cca4b7ef5bdda442b7c09690a2c62f4b41f311524941f2488a8ae20868a52c2dffb69b4e67cf02e929e677c5a5d00b6bf9555f2090b9908a4044a1d7051f126bfc2f52ba246aa9a3fdb3901aaff2cbcbc15093b9862528e4f5a0f83d17c68889b0c2a336d0858d99a8b73f74ab498259f02f478125f201c4f0ec153d45b8a1e513256a8cc02c76cf9579771845dfbd580d8ebbf9f7746a0e8930988498af548c73b08cb8a14de50e90c6c071160891f11a5d3bb6a41838bff808bc88b7cd15433c87ac07d0c4ee0e6849475a036beec18ee355643f2427f5753605bd2ae5fb09e93c88297208510013712a976e77b0c30d8c4620cb5a52474527a212567e730b7ab7dad727e1f6fbd64cf6a71e2eeb536d4d31cd8c4f73626993a7f510868b9e53c894bded4b90f2799e2310e466bda1a7171863b48a4d262cef6858b9796ba39345d4d21b393df911c12e29d764d8729d61afcd43a80a648b5e216924a1f1b5d36b56c66094ee8180020aea8ea639da3221fe113c9db5bcc65baf2198e31c795d74ecefa511163dc189b8d8ac3976e2bafc99e2eed5ae6888c489b89f53c53d427f761fc1cf7dd4250b414b1db641ac5746dea4e91b5d511f66fa3fe34567f183f49688417b7056d78654bd534f0a49a2c50fc3688565e5c319cfb51165204167e3733a7d628ae9b101b5310995513b098bb24744e1e904a22e69ed91ee275fee4f5b5104e5ea9e4ff02acddfde13d217eeae6ebd8397294426bd8201cb0c9120d446c0b462cc20b791d8d4763bb6d3491f0889139c9df0506a321c5e603d23278c3343bade26a018575c4d0af072ae3ac4d9b653f81cdb7cd57fad5af890128072273e79f27876f9d56079b64805b3d384d4aa385488c95d3f74245658b0e653456a70113e6a39565ce09afb106bb1eda14667036b6e86489fd835ec417e59b03b22502f06337764a3b95cb27d6260aff3f6a3c005d7c7f6f294d7d9b50b67c2b38952e5c5bd4bf6b960761554cbb902ec81032a571f44fd04ffecb54ce4a3f4b23b9ec8c880f34b5593f403e25db981dfd4ebe128490a0eda3146dd40bcab98106ce39ab36089fdd265528cec5e5eddbac8548f6867822b73177c3df9abf1e52800f948fdd88927ebca5330f94962dc8079d96fe00ce0608e7aa702ba4408d4e1f20aa9cbb1deb1dca92e94697fcf8f2739c671bb097c5a6e1fe821dd00d3b894ebe372f697b68d55e41e10f6c31db9be2f2a9ec4b5af505caa84e3858b1a291e252d08bc78c6259cf464df2917741bf59c5d489b94a3d5d34f172ceebac18e5052141a56c8323feda5c8be91bf76984cdd48cbe8733b28891db914a653d010b0ff52531d301cfb8e2c156aa1dd704f67c045bb2918406d6e117a1fc32b5e69a6a6272846a012b9162e0e08a210f2549f328b2933dc587a5cf403abad7f6988ba54dcf0b6bdc37eaffe2a05fa575776f239f95f926c411cd12d81e89c083b16e59cf0484994705db022cb7a87031209c22ef400d652a26b1c7caf14c4acc2940110cd49ea6f9bdb5b047ab4d9cf482671d87919557cc9c0cf8a0d3c32cf11d965017ec4fba4416c779cb6d5891fc346fdc7b8700d058feff6d9fb3b0030a6d80dd43f549209fbff35a59181314da0ba98525a7b7d5799d956e038d9e81e1f6497dede9cb184e8f5b2f5bdf1719528e0504caa185a9f0f502b26f63538cf22adfecda8c70b4998654d48b3513f5992598043322004621ffa72197c1e0ba1abf32918a8dd906920553f1666abd5e539be0e83266e76cb57daf3d5d8d1d6074ec67d8f42b12e3e4776d71c7d62013c5833ed3809b203a7e1158737d2a001d30fd3034f99ff3baafb281fbcea6174309b5b05f6b00ae920c95c1ae9fec69e9721f778cd48b795ea68d780f65d934f86e882128146a2ccbf19b8c02ae5d5ba9c0af79f9c3154cd275f33cc4f7f478591088c62701d76c92998d826724c204fc9a95132099dc4d0134e019b5df9da1e6f4ac563737ca60c32ee92537815aa73001f274b579ecbb91af4f3e86cd0631ced3c2675826378433abae3b0a94101e47ba9e89a16dd4d29fde70243603a94d4b8940428d295985a074ee98a3e9de41448c15b0a105ac6ca4aab281007b79af2d5c4941f212be8db817f47b6f7f19decf34a9a436b8ad2eb64477c88c57201012916898f4ca7d39ad2acd48feda635a5325a28f84c53e3f371807bd830d7ab9e3081ea73466baa40552cd83ab22ec1fc520ea9cc2f03185a53aa94e414aa4d080798daac790f2dffb7a53555f9dbe3a27aa8fc4da5e668ea86d6141141d62ae2f0607af2c4f25a9ff80355907aabf466784719fecab0a7a367d016d3144f998601170a6c3d5ae0d96a293f9c293c58a5080daafe34a284ef94d3ac3f09948ac2d1f1645a3245fef1521146fd8773474d4c518dcfc1c8705229d9b09ef697a2808b8470fa9bc146ee0ef54b293008ec4be5bf47ddf0a52c2416bc76e960a339778dbfcec2be26bc0ab3107b1fb5bb168c8821c9af260bc7f212e5c7208df69232d95020daa3e493358c361a5190c2bc21dc00a4aac5da09bdd7f2b7c5b8017498b8e79d6900e2490430de0e8f2f2de3e7a0878bb00f039d5eb6fe4835b36eedb18eec8d4ed508619e225bad70b3cad499c62755f1674231ff3368e36a268afad2389d946b36c7fd1de502433288dbc86e6a2b2a37c0bf6c724f33a4d2501c5c2f66682fcb50e34b24eb2aa4d50c28f69ad02b2c0b689e62f38ebbafd5a88fb2b412f19382a98e468e987c747334cbf889054e5d0458eede0d28d09be551402a6696c00918235dfa2e995ff5c3c40471857113f79c8104a18fe4ec9eea8f44eba752bdc40ead205568c833a58f536f482e6966ad0aa5f4732ffb61ab20439a7807ada2c994a0ae8ac040ad91b50c03eb4f3d4c15105b079fdc656d459015d3c9cbbf95325702264233eb41b698c6cfc72a0eb5a870afe2f4edab4b00a1be5da21252534eee607226e712c0ad384cb4e22f2fb7c5b353d8f345d6c6a20209bfb415d7ad4c91a782076e6214d997f124a2f85746bb285e5a9a08d12eaa2686e2408b5b606e9a1f391e576e3c2a80bcc40cf4e3ed87fd5d168236a62bf556c75bf018e77f76ccd6f4ca71623c315b1c79280b8056348c46423843c5562bd9c856b05d9fd2c01e86d2aab361d5ca0ffbe855b7eb531d01976acf9983e04088c840c4d2b47ce6c8a24b4d844b0aa83ab844a9c299a38d21bac1c640a2ede7d4d372be9d06221e94e9d726f984e5af275d6d52cc40b878ff5de3407a7c65ec74551df30999a8a4800fd78da29f383928ad370dfc107dd9d77dfd733f6ca2e8158b8a7733bacb04ad9758dac5a38d50bac41adbfc9ae75981a7b70c966173d87fc5fb5e3c8585cc39af6beaa4191316cf4e39993c9b98e665e0cbabf087cf50baf2bc9a584242d12ebb8fab90746ac86e6ba3cb41a857f418a6097d9c7f26b3b4cf190c8e7e7cee1a15ba50d2c2e3a4e13a467caac2d7f5b7f792aeae4d731759f52f4a4c927e4650acb427de3b55cf3290b9e4437a52a1c3fbfddb9278a8ce3bb803355da27a4d14752415c94a4e81b9ef231205a3975bce4fd302ee832ce23765074eb8b2bb03530438292ca7284f31da058138ccf41ce7a4a2101bbdfdd5391bbbd171be55c45ba3f12489119f7a393d6eb61c341169a53415b38dfaf9575c8c522c9581ab20531bfbb5cc4a50f6380f41b1b6133004678a6c6bfc35d99c58513a0b58bf0e5d69c7d2d3c370e64b653f1d55fc2a16a1b9cf3dce2319fd09adb7f0fed84c1e1cc52250df04883cda59acb987afcd09f3f119261f80f55b685e9e714b7d94b885dbc5e2800956caba986e4685c14327269b19edd7b849bd18b6e9aaf54756412a74f33f95b68ed59d9be4f317a137d49d815d7b93f37756dd457ddde43783fc7e8fff60a8c53229640785cd1882f979fb2427b38816944aebe6c10dc1c828fbed482970c33adb5870dcad121cfecc8671917545d44eabea63fe7e6ae1cc261ef70c08ff15063e7e49e788f0e688f2854bed57e8715b51b772f74108cbdfe854df9bce5a32a838664a6e746d21af9948658b2512f690c698227a1e042fab13b34f45908f1939c97a545c2cf5da30432400c52c5fb65c942a93be28a6b911675a404bec104e060683324304014ef8506aa9b63d9eb6c42d3698bc5a267faad429ebeb566b794e726784458d6ca3332d813cd7cd0ae9340c1f5cde18a7fcd30304ad767abc9ddbf29ac1dd24754a27d179fed812f3943444840a02b5f60268aaf9e932a29c53dd534c304855e8efd1d6d0904f48d9af65e8cca21cd2553f9a37f3d77e15c6c38a86bf4a4a4d1e5111603a0206fb38829b1729896e41bf0956dcc08715c09646f2ef184341a36f4531006d992b268eaeb2ed493f71ab2103a12f67729fc44f423c9892bc04a103b56dc8ae52c92795609ea772f3a100b33cac866f1d95536c7aeb8fb0ebb15f6d9cc69c11967180dad67035a871ee50440911416db484d729d217b65a6913a753cb0e1725f605b9e2d2e540804b4e8bef1ece22b95c16a35dd12ff424a8b37a3c2392b21a08ccb1304cb9826161070809f3a263ba4d3f175a7a1e63dfc89caaad11f28051004e117333e5eba154b9d096ed8d50b353a11a35f4ec4157ad9518d25564ac6786fee36de4b29159d7b9f75f663f5a081ac485e244a9f985540f191644fd122e749974232b0e08d0777c5899ae1dcce1813a83d9f636bffdeb4bd784ee43316a7ad0fd5a422e8dd1078709e4bb2bc5e4e91c6b474a6db611af4935138d287bd656bd5b3a0a92d67aebb25181ed4a21bfd90f20508fe8119c755c46e3369122b93898c9514cbc76ea1f59eadeca806c5724781b98cb743ff6543b43dc3db0247287bf3241c9fdc24830f900bc7dddf5afab176ffe13a53a917af4a0b49f15645e1ef8d22b3dc91581a00a0da7ccc255e3fa98df9d157a4a2fcc9c9fba913c63be1e78b323ef79b7ecf0fe05cf5642c20e4ce5ae5db298bb33db6e3ac74b18128989bf6ceb940bc8e50dc33f609620c6d792053386624884e7cfa7e744eaee0d9e6f41b8398e4940c974b00911c46de2cf2091877d99023c7e56bfba3498bd2d914fe3f4e772dbb9fd0ce93bd572fbda044729d58da739cfcaddcaa5b1f13cbc3618963733c04b34ee0acdeec9172610803d94da57a159a4dc24ede5c6dc36a0b0c92a6801b0fe6be56231b28344d30f463277bf91e51fd16246ae8e551511251ab080ab2c1cdb90ae06699e3bb1b1cad078a6e35a2e8d0b27718337d24d3cafcde7bf2c4a2122a3d72e608e3ab8d04e54335ed1bcc1e92114354e9d9e3a3f32c44490144105e0142c2d1a0b68934774f8601a2d861df97608c1dcacdb842ca0ad67ce5dced7a27fbffcfa90da25175b52e82ed7ad1acca378c58fd53bb2a47869041a9f987138ced587ca03bad5bc4df9182c8b5a85d74d5a6107c030b7ec33055a9f931e0791c65b3319fe933e0f4a89b704c622dab4e3580f2548705576d62e3822d8339314effe864b0aa94d721ed812daac47ac8b5897cc5bc2f7eaae11c6ba08c82502f3c79154fa12be5df6eac572773152143ab1a9ecd1ec4c474835ae4bc8a0fea2fff4a2eb39dc3c6133a140911c8b72b399a9402f96cda8015996e7d571538ca909ea1eaff6b6cf12ab75db3dd3a07b08de9196c1210e81213cfc614595feadf4ec2bb649186f385099ff493ace0c38051e09e9b6fe40156d1be6f3003c76be475ca45c2829ef5caf2926c2b867751935b49581b77f050a7c41711b5f68c9dbe28245e3e5c8006e34ea071a2f81ffa5ba9f097a25202439f18d32cbf67bc4d239a95ccb06db7f5003d5064ea429400e57cad088597fcf0b3dfea5691c7f33baac50a00867e7d2077076a16cc5810e5ab51550d0e715c0d05ff6191874fda59cf39f2807ce08ab124da7ddb9fc39e08ab08efaeec778f5294f979ec02009318fe282f83c4599b014d25826bdac36b2636f712e5d46c3eebfbdef2a1f150b2e120e490b1f46aa56c655e7a562e692e69fb4819b414d145a7c7d60e6d377f248bd5cfd4766dda4a557a8cf36f9b93fc37479c590512a10205229ad3b1a1456c3086fc00bfe3240937f2c0d00548ce1411693ea221a891b5d8dad2286f6f54bd244f0c03be86b6b28389c8003e37368805f13ffef04ff7216e83712939f5dd28b55fd8282378ec77097b3f8127720bef80cb0bf85fa1ce37039076982b7b6edc958e527d177214320360ccca892a914ae635bc76013ee1a78cd7a986e5ca8b1d88928516a9a712a400206cb07995304219f51bd9fe42e20d61d95a2616f6e11a76654815ba42c84202e44dce0ce6ceebcbd4c38bd9e527c10c6c0dc2cbf8b022fe9eef035e52c9192c931740af4df029f27f35bad41d67a2621619f86c5a8934c5e3c59333ed167aa244eb00e9d7592c607766910c6cced468cd1542617e365194b23242713580806ecbf9a1e981d21fee324aaafc0b8e210940c811ec084224623eada4cfb64ff9476367a9a305018fc82461683fc51f22373462999c4212bc5aa54c10bd04ef210c38904871ff613ac1a8292fb6a63617e353a6dc181e16530354ab9319628271018515a04201a1fa42be914d41273655f42fab1d1c9104108d1546eca5c0660d1dd9d9288592a3bcb50c1f3bffe9ad59af573cef68a9125567530ed71f152818ea7a8a50a8c621770bfbd0b91744e109adaf063342c046e87ed087b2643e87ce745cbbccd7ebab8cdcf2e09fc2bf67ca757e37db0cb5126541fc9e8eadaa531be9242f44935c8105ad8fd8c0949a2d02b897ec4570a31e0e80d0aaaddebff5fff043163275c5666ee820e407ac056587417252834800090f6d0ae1d0f8851941bbd797c952abb1584b21c0bcfd369b103b581068d32e65c0add430f2167919c6c916568cb9e1fc91e12b814378a03c8db4083cfdd66db27a0d0381130865ab09b80c03e52d111492374545934b51a361d54a5d8ae3c361414c2af004124cf2a914790bc5781d877b9f73e70f224015e801ebf6c1c4f80e557a463d0231b20ff493b1b46038498f3328bde9e75dbd01a2afd01e29cdb0ff8fd39951ebd690dc27c0623fcfe2449351f50aac151b778a43086f49b99abfd7e490342b627e261a45c52f48438d7a89391855620f82f42f6db1287caa0be98a071dbf36f0c80d2338514bf68947908b5ec593fd9298d5c21085200d76667810b56d62328619674ae95f61e94a5ffb0d24dddb66411b4d6330f1fa746289cb40ffa10c72c1072c8d5ceaee4df25e2cde0a76d7335c575f7386fbf0f3897fd42b65ad79b050f97233dbf2f3e76f62ea25ee663eee2d1f2d020d93b29ef9ab4a46485f4c128455956be7c0946b3ddd1523e248707319c40a5f3fd8584e968a584a50e3b2ddfa7f7342ed1a6e7bf9c1496fe2dc94475c2a4fc9e80de18f48328d9ae3d5c63f813a05aabf5872f44487785a62e2eea63bdefae51de9a463eda766fe83aceed8289f3dfb172d0a295b6f98057c5379d1d989d8d2ab66e0fae5d9cd41ebc4b9d64ab3db685c4aba4daa050e325342d4b8a32738128cc94175a506e0b616ea97559a91e5515159757b6d277fab88a2e24a200ef01f49e5a9fecde5d14197a9538db6793692d57570f5ac3d86b1775c1ce71fd651fa357e15f01204431c44814b081f5b27bf152eaf3088e0be9181557fb12cdece9998c3ed2fabfdc962b5a08dd252b8b9a62895dd22f95346f7f4ff864639094c250122c94a35e8f1ea5a29f3148374f4ed9506f515e0fcaf3c858d9e8f69910b79cec3f92f007415700611fd0d0742b39aa4cf58370d77a0976c48103477fe7346389582016df22da238e850a434304a14ecf6222f87fd043dd1b374fcd7f6220c97813d69375a5b5db49ee0068de0b62eec99e5a35dba322277180f3844f966ab27d5a260a576f2ca55501382420860b2d7c255b497411b4a49029c17481963a86dc708512e8dd7ea7d6de37e445e03b658a8a305626650a0a4205c8b79067007bb6b50dfe1b1c29e9976195ae35acfef188848e1b88b32c4c8d39dd08ca73f1d430df11338d825cf0ae54068d160b594bede1c9240af0b0df95e714ebaffcf19377016942bf720829d667d012d2acd1dece12d5295503e2b61bc083d30a1ff6812bf61c68bfd2ea33c1202bccbb1a04dd52928468ff60e41c1cc37c8a29348cb0e73cbe2938876a1eb24cda89c56d500dc930ac7549c9ca33261e6465b7463a316ce1c3535a127f8a211ca40e62d75c3374b2441e3833b9e6883f00290ededafc8f9089c40f80d4fdc797dfc208e57715545913ca4a2648dabe982e540d0a3f428ca20b15b7291565fd418b03c93b3269d384cd2ed545422166944291d110a3e4dba2d48c36e18af918f0249dfa1f0c1b55a2d5281b8ccb40802cadce52afe50b796c407705667083940dae0d0218adf3489433ba02666fbdee67063111d1a4e88b1bdd8f37034ac2b124aa198133d276c304c9df5735f330fc5f0532a6d299135a01fec705aa0831ff925c2e0ee773e3f997f34e702c5974d9cb95ef17b76b0cfab8197614f64479fa5ca75c818e2eddfc650bed12b163bd12be8047f2853a3548b2b4a4d0f0bb0fcee39d65fabb0633a178f1a9bcc69f94540e40bc69de219359643299bc66f1e8c9cbdf1bb891e7fb8953623224c041267dfd75b95bee5b2a98919c864da16d06d1e920bfcf11a1a12828d92768391b8fc960dc6470164f0bf5724a068c82445b24738c40c8671ba7d958d809b04e303c5acfd18cb36db3673b7f04d3b8063bba7092a0b0956616591bbe192eee6c777a95500b484a2314c2bb77b5085265e48c14992adbdf0ecb91bb5ada5f7214722cb23d0c0e608c448d04f20160f8fde7d9a065ec331086a4340978699fe619cfa412ba054196a513dd3715de00bf620fd87129b2192bb1ba45e9e6b60bddf81cad64533d9c7dc187fb6f895015b3ded3cccdcd7fbd7520b436d6fe6a84dc6d7790048d1ae99f81ca6686b937f4d67d00097f570621964a099a7eeb3cb3adf4274ba533fdea11880459beab49541614cc20e0990558f89cd40e700f4a7667106fdbb0c40631b7d9ae78a8b0f45ce8cab43cd1136339e8ec4d16bb71f79e2d5f24721b30259b8545894ccb8d134b64bcaa90c0f438841547c86d31782d255d968d45eb037966a83489f4701e848e4132bc718af4840e4e354d822a7e55716e158c1842a9b84cadd2e5acce98541b27f18a9facffd7e0fed6ab5ad75ff52238343628a4b0bed4ff62e9612834facbc918048680f01981468edcc33997c682235ff32fc5df9a53932313513bcdb7376c1842c062f8b3678e7c8deb1c5124a0e4c89cb0b9cd5592de7a860f594462d292a385050f2910cb26411d2648fb7fc91101cd29f8e29df2edf44953c6382e1d94f60af97fa8f9a489c82cb58a0a5988a3e247a51a7f4a6f8746a195fe58a7d4a49034dd7f83a21ecba093423d0e217e6547618a4b54d08e2f14e714fa2ad09df4831ca1ee503962ee7585335ba8270c39db8295233dc25cb2b5ad2c11b2569da0a9bd401a770dd09e15e47e3ecbb6124961c2d55749852cfbe5b0c98e80ea91a87076edd7f1dca4e5030b5badae8b5b6f19f3b71a4accf3f94897e46518f9040960ec7bf754f47bea006014da57caa56a22720731ebc526f0210b4d7e5a490c67f0183a957af9e38b3a7303b01f8119c95b1460d7f0aa95aac3da57eea8a6ac981b7c0cb5cc263e8e7cad4d25c1b619111859d47a5fd3fc8093710b4726ef41e6ab888e1d7c119d143c0aa982ccc6c455a3109950a93ff851b486e8062dab745c55dfd992cc3618457327576538530a36b82aab469cf6cf357e01b7ea97e7cb7c4194dfeb1b6bed4733ba7c41603ce0203615acd34cc33adba3efe26e474e6789d2a16f9504f6a8d42ed89f22dba0b4a723527c8e57bc1abd67058898c65c37d2aa58627511e13de8711ae8cea02fee1f1f507e7e25e198c72f892eeda6456af8c6b89a8b5888ae527891817dd3575eeb01fed70e64dac33a1613f196b14557912f2b4c476957c0e44925bfea6e9598acbd3bbe72d4e36ac5d13969876c0531428b6e164ddd0a9ac7943156106a73588155f38b1ad89663b6df4668e79aa287a2a7f4d34978f738a0c73b9a953e362af4bc3a3462af2568b39ab2e011a7782d74fcfbe71da1da44fbf669322a4dc99a9ed7f3b12358929810eb962d6fa51fbc28109f5a8c0c6e5d608afc16eb6479794c469b18436ae041541138349b1b31dcfb1983effb01b5e1dd42182dc8490f18469769fced49d040adbf7f638edd4e3b38f518bcb3663a68533a8101fe7dec3736f603b89fdaa1b7ce7488e1e6ae917ef83f3511c0155c961f881e8e4a14a398ebe05a1dd228786805dfadb0af53f4d08bff5b514f672ac658a3a193501560501d7508ec7c45bbde05b9097597d0ad5d56e0f91f6e5fb85b97ef890db7f7fbb3977a9831b7a0d1f839ecd5c8ccfc1af21fbc77b8cbba39ef93ec0943dce3c2bc851f34735c94c9595e87a426f0ebb33dc1c40d3d164929193e60bef95dfb3a8767f3f9d101c635e147f4e096a4d5db566a5ca63e7322999f77b880d97b21fb85635c4c45ddf80a14bdcee6aba25d8af315fcdf9e2537f2bef4053da0aeb991959b157b88f92a82fc4e36aa519902c84f22e69345669d567a06a76b84a960bf500eb17c586d72b5b4423a740929b09496f6c66cdcfcfe49229973b45d63235c8809517843223939ae894b9b8bc215d2044b3f8cd5933f7b7febc41d99dc14666b3b6462a518a35a12c9b23bdfeeb7adfdedf14bbb1b626dce87d06dc0a34e91218cf8e39f835a5e873a80487a9f4c6813e9e73d4b5abf084373d375c7308f9acf417e6447a7be4185c79f5bb1946eeef163a421731bca6cfa5cd59778646cec6817e3bef4b109b84ac6f3800dc15304b60298c14d7607f104c2941458a37efa5740c664bc743ff9539a2f3b69826a74913b71d63f35569695551389a17048d9fd1373acfb4804bc366e31f9d4f8251d57e313484f48f9b666e4a10be704fd6f822fde5082127344686392ac69d1647833bf145bfdf3c875e909b9e81a9b2fa678e07550d011af6254c948cdc47392425b6af68af760ef3e33289fc5ba0270d4bb53a5ee019c9d5afe0629170e899ec5e25ef546ea569f93783db9d763a3e1784746d5c5165f6f803a00d29551b92b43c6b74c5cc668e9f4b0fffe61bf9ed09bf8bea419d8640531040f363e2e1aba5e7667b5ecf5dee2b8f52deac4e4f177069614079ee5819ff68b4de4786ec1b7b11eb5401bf2e969267018b934cca64e1408bc27bc2803b8d8cbb11daa017d6c8ebb70f727aeea33c824ef699d1a435a0d1cd6c593645290440d5bbe62681558c6d99697675ecb063935898abc6b38bb14de530b5e53bb69de4c10e25b68148c2da1618d53d33dc1cf5040d7102fac48a71a8305fc0b8d81b166c4dc9104917460acd348f21c1f0bc585d4edb7c77ecef414f765920eb43032912da597b5a942d5b28188baf5ad7caf344a418f66348893fe6722ba2986fbed31853df1882eb8f462483dd1e6ba4d1d403b9665880cb9483439e55c4e02c74a613990cebd672e956485e6872859196a25af304b7b79bf7cd84dc4bcce69138a43c998bb0214e2184ba635acb09982df8bc5c09495f1f013549c82d38b3a4ec8fa85669ad88c317efa4c42215987ce92a386026d455ae8e1f41c20f292bf2c8174e1bb9acd22587af92d0bf3ef7b9fc2457cfb7980fe1d8a4954e7602068b322f2a2f123591c8e4ee039b8a9f7c895b195366f9c1caddab7208508c162f9b9ca45d90e6dc8fef7214fcd455d4703e2088fef71f4068f8aeabcabdea83a0c6f168db54b9a8b09e2bac51b49018eb8dbcc7932036dc1ff963690c4a81f9db53846f4690aa2bb99d19fe78bf44a1b4c1505eba1bae37e48e8bc2c0dee01576ae26429996b7553801c569b82cd53160f192e43d4e655b341a0bc89b3ed1c5f35a747b9fa6a4e644e1bdd73864392215b81467c850c25c135850cd3fe681cb857314271987a4c53f3059d211ad14fdf3a48cbb735df23b9b7896a4c9960d1e43ea02f80eada62c8e1c2e73170de8b91126c736aa4749146e47201c37539015131e71253d809b8340c327357945ee2412165ef3b08538ba708d29260aec5daaf23151db02f762414e2a8ecae3a20d2859e19abb8a82f39f54544f1df3d49579530e50006f47da2ab8d032b9a5dadfac2213ec7606e875873753912e821527e863bf66b58e4037a87f3944090ad90d6375ad2bf970a9b725cf983e9ac4695a1bc7c357cddbbd497037cdf7d27e6259e098ebe48c3188d901805631788233ac85c104fc4639418b185891b03d3ed2324df961b9a3e31e44b6d4e576074500600a2f00553fde70ada6a67f4cdb6d553074ea2c07e5eec3351ca2df4e9013b04620d9bbcaf7d5be5b36993039948f416ec024100063713d863722f2d50d963dc4f83fe04746606c8c8187a37016535a815bea038174d4d7ccc2c8c5fb07754b76f8acae74623f0443492718d160afe719b4547df8f3d2c831b108c863c60ac6935622269345b204c36ec155ddbf24f9f46a8f194c6b045d90c305e817b75e92aa369bebfc9291b80b7c50238d472f1b7478c651bf61e789c596a8fe538dec65d9e1b662b7f9540b613b176ae925ae4aa3af2089a3e08a7994099690e8e3cede7070da8b3f3206f8801f2425eb2ac8745f9607932f910996680cc8fe270df5310fed7f3bd72bae96201d2c9e2b991bed2955bcab505d5223b72cb7e7a0f68570c8a26b9860c81b404f4a963489cc4d31b9a2586fec473db4ffb340b060688755ceb71dab41596703f95952438c1c24fa38111055d0165411e180d0371ea50b06f4b16681bcdf7ed6cad26d306121cf7b45b42ca4c20d29ecd51c7d6f1de5c12149f870577242bba07ed8d1f365130b65c3a0c961fc7c6516de8c759e2f3cb16538b791c43ae4c691114cea2b59ee75adc62ceb1d1127aacdd80fdb916c70004aad8f7680538ed9fa2048a236ef107ca85a52e29b9715b364f36a3ee0017fc5a3833a37c32ecd9d963f31b6c683473d0ac2650f4c69166c5405ec84687f26d235a83022cb8ba796615b5702fd706c38f2b34676a59b6d1050f6248500080563f4a1aaa317155202ed72b437964c8c8284a49850a65f2e88de9258d54a1be0c8f3598c94b237dd0b0ce71d56154805ac2b7e2a96b9eddfd0de98ad09173ac29c9671daeb589342f12c823af303eedd7240d32c851854b0c9e75bacc3d09089623ec5f655407940988ca640c50419f3134d2b7394443f7be3663a3c9643e19a0f745e757b0162c0f7056d77dbace70026d6cbd2234a44691952d57bc79e68b1262c87694f1527126358a8b14b3076d78d01c169568fc5e959f8a16aa5da068e05d82f89920c200b28a733d2746321f9855917dce159eab08bb05c7e58da62f7733e7d57157c6561e831718a0189b2d2659fcbb28e3ae099613e86a9c785189e3cf1aa800e202bebf7a5c2862d079b6b57018c85dd19461567651cc62888075dda187649ba70e5d38055e1b11e66c2b725c1397c7f63361e917ad2042d51bf6b90bd2ac21d51fc87421f2989f389d321441037f804c60c131bf1f3161f9e2f1036c77f7b602fc8aae5a4f9a4546375665ce64994da3358d7279a644cad02e1a7294ab8d1246ab20c07a3c314a12ed23a4a2b028e055e9541b5542eb585c23fce3481ce585d3d82857644520cbf4f7f91e04eef88b80834ca8f369438750264afba58e2c7f0ac7940cf88588ab1e3cb45bc4a610b4d6249051dcb56808011d812d7883500240d1d25f389c02e28b5f0e11a05411965d6152b78f4c677762264de7e3ee045e1cd1d689339c9079a60272060f57793703b17325898faf72325d322aa81524973a90e1ab248c19f2f2cc68fb7d928065eb5ffcba75a12aa60b54f14e4ca570b17fd0a14e7c039638864b94fb0350d816b885ad1f7b0a906b1f2ea4599fa8a8bed2aa3b4851a308b42f921da15580e66bfae22ea98daa32bc5c7e412a6ebf0dcf7ef0dc216be087a3a63bb59423c47e702e566a0c13211bc590b9056d38e712f0a8120c05f825dc26f25775e601ae2991ea67b2642ce8d0c22dc0eb0991290c2536795af6341f7a45418f502c1fc15048f4e6b018b12bd84abc6a8d365093e625a70b3f4fac13789c5760b6b8134e33d02f5796049278c64221214b35202c5ca3f8e9b46a594e521c2b9a798a4ea718cd082bd9e3f24dcc89518df5ad1d42623235f7bc46b9146a98a3396c8cdd4775ccfdf83587122bd535a450cda994088854dbdd9f8c79024b04529ad4c0363666d06819b2a18044cf1bcdc31615407838c79fdf3f162a22e687ffdc020340fcd2fc2e3740f28892a3877526d9228fd76a1ebd7464318cb51df0d922a03028c54005b6756cd6807b73fc5ecd43164ee3b9dc30d011782f667c15ba4b8247dfc0a2293776262a38f5507aa6c0b51da64e55f349f9548dee8e84fd89f669e87f0a0839cf9f067b64d667f1d376f0a53368c2fb716eda1dc8d422c1e3f427b5e04d1fb8e2ef1814de17789194a4baf490d09c487f6cc979aac82f444216474c50599fabb59e0da87abd9fc5de39869fadef4ffb18b98a42e1fde8217584c3a06a8120da99d35a52629bf0e9bba405fa242a8780d21202f44d38c1abe07a2131557b0a406919c1da18334c4f42b203a557b753fc2d03da2d0b4cb389ec3412284353769a27682d23585f995310d4b73f15c20467856c7c9e8ba5fab29cfeb282999c1550063db8d202488bb4ecde1d72a42054b7829730a18f16f75d46f7008a715ca3f543194d946754cd7eec82fd2f459ae2a8287faee4ac34459dea0f32882ffbaee2a413d532c931cdc4800d40771c394a98048a69337772db662205e6da9a7d7df98446e9804b06e17ab2242f760a41574a4475eb9fa8148c3e4f31b1b0887065b4c8f6ffac65931ed20cc9a75f56aa1023f126304b69331bbde17f442e57183ce55ad585d9f0d93f967b043fa65ba0f24fceaddf10d830006f7a001f59bdafbc61edf7522ab0458515555045c08b4153d30293b730bce861b0b2e3ad97aef1fe7ad5776bedd238102f727921e2efab668eed911596790150f323eb29f41708ebeea16cecae337720b32416f8078a1b6e5c9bd0a60e9b36f9c9928b644c2021841e3ad8f3d52ea702932a9c2dd229acdc893eb480b49ad421d552b64c72d8d661e0304686136208ae42822980b0167c9aee0f4a856f02a8ac4f88db876125ffd757bfb746978e8788229786b4426241cfd7d8d95578579942aa1a0e60d1113c8d1d0331452e31c4c9a569cc54b5c44de1d604cbb141f84d1ae976bc20c0ed5c35e2f2d6baae37076e1be0af0a8349ee2c6faa58eb1da1845ebc9f91223d0aa392021496a18410ee6cb894e26eca357fe95bc17888c552c74356ae3dde5447b126c477817e5b3b61c6c6ff068ceb4c3163cdb1d26b17c78168d1e523ae6139d6fdb2e66b5e7f26dc748c28bf2620fd927f81ab5e33c7fec862f2dfd23cec4edc613b13b231dc52968c64954fc31eb1122b531521e3d43c25a2827a08c5537f59817af21fa85401f38fda6d714ab1e926de9b2927f35e94fc633b5a57be62c52a42641ecca82b92536472a0c25eba80efab2b5facbdcb6347b47858da01a3a309888ac282482061727e79762f1436202be42a846c330206295ff611357b7907a3f8c0fb8e87494a428bd55e184bc389936a2b0449fc7b7fdc778aff3deb9379c5487ca7cc7bf696667c46655da79540e2daa96ed195b3d2b8c3d4796b2c14298a67feba48523e0bde1511f7b9dbca975fc0ee9ee8d6fb30a8d1e320ba22510b28a5a55d8de685e15a52ba39ecbfd483f86a9b73c4e11daa3ba399c8be85a303046d16d0c2bea80e553c484a4b456dc68a879d87d3b47be8e04d08109723bb065a718510da595fc78caf8f415c817e20e15a3e42ec00e0e56630ef0ce4ca48ff7c2a9835be7af8ffa122cf1fc0b000f93fda4d6bbc5d133c4bb650905921710eb817f4a61bc920a91ebb1bf854a575077ade7323d03d400c28cdb6a87789894ed3c5317f5fef0977f4333ffb2a8d18cdca199d7daed516dac897cb160c6022a6438b30131df9417656595881ce8b4bee8d18fa693c07916aa59e89ef4c6e548a01afbd32fe97592786c9ff51a7a9d4ccb8791c96d9a937e5b943f254aca0ab939b487826fd9165fbcc7c70f29f2684dfac50d9513fc6219ab1ef204ed72f315b442f4265750dc01339e15eb57f1c8639dbe4a837d3ada87123d2ba2d6c98863b6d4408d30197e80ddf4c650cf0d47e7ec314ad5b29a8b456122b0976dfd710b8d18f04083c34fd7450271a885c84acf3f75727d1009b7d9c685e1f32b96722794c86eea0a169a88416cff9314e74817c8c959d093d20a6f4ff1191f0848f95374b8b954c41142685955a157387c74debc3621303aaaba158665499c51b3d9cf39b4fbbe3d226bfa2049f72423204148516d0145aa16b688556d0045a4211680145a1145a435328054532f4d98097b6239b4e799ec7465d3fa679e09c52b101a63d9d13821dd9fb5c2581c228ab56466725136dcc97010c67eef54fadfef8f7a0185974e922b1cd07a8e9e65e4b4b7224a0a71cd6972333b136919d2367a2c0cd88d9a2de059427f942813411102963a92f6a4cedb5fb4b4d947a868c82ffc76caaf23d8b1f93e675df8135e7b0bbf0188f3ba8c645609cfbfba0983892a8a37b22f19cc9032870d6670e2500d41d83049caf9e97591134610f54a48d0a45c498cc8fbe039cfda78dee9af43ab23df580cbd8fd0b7bdc1308fdb8f5ed59594e746b013897427a8d1f576224590eea0e6583887ebcf33688048c47ab9b6d9faf0295fb202ac589533b79fd2f232dbf7eda4e369659cb21827ff2ea1bac90521fd4acb965a4c53b43988fc3a1d84f29689aefc6fcea9e74ca169d947db4c5228782ea890dcc281762ab9efc8942ad55cd83ce1c2c0dd00bfd1c653eabeaf8981bee7535dcc703f251f9d17738b9115741ae2da912d02bbae565a689ad519eb092b7617ccc8df2489becbd59cf0319393680aff2f462f9f1cbcc3e3f2d051d6b6f3efe92b41a5640803695ae03377405f4292ac9ed641c523bb69045e8fc3575ddbcd1b2b81ad9410730c6de2fbb2f22cef6b4b77c0cde950a24f49e51fa00da4cb3bca399c60a45ec4a14f9a2ee3f3b0469e28b24bff952bb495d636e488205fe45f740c81c1c365e026c160018093938cd95ef7bbec853f7b0aacff0db2b9b6c52da062cadaffdffc5adcf532718e8c5851383132e6585bf557cc7e38b27caa600d051203ba44cd39172617c9d082735cccf32e0cafa592ef153f2fcf1c99e117268821b884f3a060353e872ee438e904fc64759eb69b39fc4e648903e101c586f3e2fdcd146a3a1a559ff966c6ef8f57979381e6987200a3ed05d138970b7a171c9734cbc06836aba1a43dc47b0ed7c0939426652357fe7e30a814b68cd6badc041dbee05be87ee34bf8ccb233f42103807c32de519a8aa6252d3a71de0120d3031627543139cce3a5c1cd38093e76650ec851994d58b0126ad8e84913fcb6c927ab0c4423b86032e377bb1e982b9fac2cfb7e4b893ab37617acf3bb1524704f2fb2a08efb8abfbfa9896599fa643b47ce53b1fa176bc41c9deb509390e7050d8c9a5113450ea9a758b21f3a6c2f8bb620a9980b98cf557d91ecd8b6ac68335528103c751c5103ea927e903bb9431674dbfb039b9667f0fe040c197ce9998dcf58b46dd10fefba6beae258d81e64edf4945bb9bbe77af2f34aada3dafb0cf2480d0e43fdc326a7e86a55765bc13fe9e32884458149a763e40cd6cf75418803111205cb162521850c52632e65934a216e6827916eb37c675b439534c5884d972823bc20b86a2e6d44df3ca14af68650080a6a34b48654e8e7c8afe658187ce40c57d70bd8ee8f80c0bed1fd99beab5a0d65d91619e20484950a4c71f63ed16af888ce57152983510aa4e87eb8affd7e7b835b9a3b13c7f200f0dd773661c61e06e80a3669f4293a024eb229312718be37602f47140e8e4ed26c3d4bf2090f05799d81675312bcc24a477481341e05b6de9804486921f472d1aa87a0016445f02eec8c2ea6188e10c511a3c3f4d328c1b318c1743fbc212666058d0d8be1b1b854d00b44f3f056f4a87ea7d440d0d5d379dfb0e8bd7c9cb9ce6715b55dbc4c1bdbc0904ea7599eb2ad8fcbaa42f344e1e1fd6238094b3c802bf3e6801bd2f28b315a174762732b4c83e02af892b6df2bf34edb30e20c41eff53dd24b493d1a726b2015f5fbb431f67c5b7a6bccf627d2a56045479fa06c4db97ce5bb1568baadbe145ab00910bc7cda281d3d0bdc35216cb5794b42d31b03c52cccb324ad1f3e6dfebdbd101c7a651525b29a90c76491ac5310439c33e20b66676e020e9601e32f09d3d448c37802da1122bcdd1ff313eacca037a86f67858601855491b891921559aa6cebcfbd5a9433f0fab671e7d08568d9c641a835ddfbedd37faeeedb242d8af2ff419a31069c3bda40eff80c744be501cd61ed9a2eefd2dbda8182519a8c0b289b6b526921049a195dddd3b930c41074707a007f0ab4f3322f7dbb7ec571bd38cc8f4adea537d7ca4ac3f54579f1d241ec0c973284fa1216881865670171a720ec7abac23d25dc84f9a89bb50aba0453813e92627273f83ebaeaefa8977a94fbe69a94fb0b3429fbc5b2ee590cbac94adece66c66eb1b00e80c4f57a8cf3042e248b8202b3c9c9313171212127246e42c964827e4453893cfdc90cba1fc7352ec28755fe25ccda6abd47dcb13216982d9ef92ecba3ad22508219c93f63fee9ad2ff0f84d549279d8cb16ec8c44f789c93243f1d342289b891eb63b812770ee4a43b7f1556f2adf4b53a29bb874cbc73ee2713533b1393094721bdddddddeb57ceddddddfb5d6d6c6282c40b40ba690a9295fbc6302dff42013c89760390cedddddddfc2937403100096264cdc38231387604a9c8b5228ba92927720e762c9bbb7c1e43399dd6731bbcfa00d25dec1e9b366c3bffb6e3660efde75c97b35d1405d0500a31e63a2c7b0eb1fbb3f033622f22718e94db0d13b16ed97944412242d499ebe37d0345114867127f9c6483eca6a1ac14e902eec6216f6da89c6327eb76c20180d445141d6bdb9d0f053c5311ca5de403460ad612f1121ea56ebd72e914abe13a3f39d21d19160a5f82224f8a3eb9ceb38e79c732323ce13e452f9248ec4775cfcea17e05c56a891cb62f8024448d84557ca7a72231cab21d139f7233ae73ad17b9cf3c446dfb943015dc939177dc77548b052a99461a9f4cdb9ac389cdd952124d2108984c477164022951650559f5dd20fdff11ddff9212412894442e23b2458f31428f2128e0d51bb8da05aad095f8f30fa552f828dbc5f987b2bc2e81f181baf185b885e18468a1ae88af26d14913a287bd7acbde5dbf7068acebefbea57281729cd3a8872217ab72237c2fe95c85535ae8828ec2ab761ad9b91893f31abaed31861f48f50ceaaaedc57b483721563156fd560aca27f756df5d32afe917e35f21766ffde7bad6f2a02f20610f411375870c268653d9e6ffd5bd844be7359811fdf298beb8f60cd5356aa875503b58afefa301a288802b58aee9f2d089518c645e46338076a1517c19aa7c0eb232bb82adb280d77b7ba59dfea34354dc560a876a7a9d63a5d0c539f1abd4fd79d3422e1cca9fa947513ea9dcb1dbd8876b7757dd78b8eda47d3441d67ef9a3c95a2b0966b9d91c9a03539fda68171b2ac6f1a53d3c8304e387e3645cba74a59d0ba18b56f59f0dafa99cd15675dfd0aafb0897cfaf0ef5faa3e857b469d617bc6b436abdd33ae164181c45f8478b911a1e8535f6f2c95a2c71b2f37d4e793b0fb51f4238c7e8cd0c6a5c48f32468f5fdd15316823b18dd76addfdc5c65f72324cf53c646f2329dd6d3f4e1c915e6e644ef2244cf27293e3bb4b69a3bbbbfdeaddbd014d7fe65822317e8cb4a57cb9c9f445d1925012ae84b3e9fee506490d41dc2cc6535f2917fe303d793b929be39c8fe0ac24826f8e85b3e9e88b10d6c6186764fae7c5a65f7260442ebbfdc751cca7ff62f382237a7fb979b9d12ae84ff97293e7bf7ef9fd3ee38bbe3dfe9cf3de09884b71a28f14732b9a2f36ad12452f7f92b0fb23ac7a91c8b97b9b73d37d874d4397c6b9dc1c9702bf74af631a396564c7976d5b2abddca83e66d350867f739c0bd47129f04ba57b7332fc971b9955610b9f4dce5eb69fdd1f195a4cdf6aede5c6cb8d56894f59a863a18e853a2f375e6ea4b32f376eb28337d94ef02677f3e6cd2d86995ed6971b223f235dc206434ee8109ea15bf50e47a1d386980cf0f6e66947e908752deff0380a572916cea5f55c9f95eac837eb2f8ae58c8cebd0aecf43a68dc4d3913ded246493a0549e384f6e4ab17b53fa998bd046dbdb57582411a5f4db9d943cfe2398a55c9c7cd7138a7da755fc5738171d48484adec49ad08771274fe9bf9fb8655282778650ee3afe0366e449da3b747ada8d3c751edf69159f4de7c9f1a1eb1f79f7598c2dbdc36ee47be429d623d877745a85bea45c8c34c562f52358cb25122cb3bdc3f29d9eef3ddff1d834526fed53d3771a081d7a2403dca5edb4217edeb3acac4d07dfa9d877623c0b670dc48e1d6b792aaa1b889da15293a81179b5d11d77f4e99fa3f0769a18b1ea27894e53fc697298dbac69a2d7470bc35c7f69b4dc4746aec6d3f5f77a71b1c9f52ee58d48deef34114e51249a7e44c4a98b9e3a098fb08bacb5d7bd6664a2d344f893fb34c1e8d6f430421afd5f7c1f634a7e5de8d1c2ec3b062b9c1ed55d2a51d8447ebfbff4bb547213cede53bc293ea4345ea37a0d487bc2a50cd31fbb94a7a9bd06c90725ce7b2e4bfa4b99bdec14e0291067edae9bd7f01a47e18f62e178b6ea6da528a514a6b6114a29ea9d8ed0afd12a4ade479c33a1265e935d4484bed7cfe8b7df122a33c131d76bd012c72635851d39f7fdfd2dbda62af9ae25f25390be39c99b64254fc2e198125c9a2817ee61283679eafe4ba8eb3729c1997b12ae84b337e58c4c731afdee37398b8fc154d1bd741bed14c3f457d5c8675ee32fab5b0cd399b322228f33f9d1b3ced53b49d50a7b0de723987c87454b648e44f8eac6d9f57d75535fbd06c5d53b8eb119867e55bfbaeb1b9b3e854b81f461f6674a087f7af43927a7e6b43fd3a4bc9a3e27f8eeae9a4f5113bf47f8ae51d3ce49616c812c9005b2409208f5bd28e5caa44fed8c4cfd95d643d56a7fe5d6f7ea656161c9b00c4e4108214c26ff350929f8948c8e4eb3bb2745cd5fe1e6f4559b7356f3aba96bfd69a989b3ce9ae6290b67d753f733eb474f39f5a3e96726c23136c3af7c5ed8d9fa9985335b7db378e2775f313a719625cfb36664e475532f1d56add0ba725c3817ce85e3c2716764accbe6bab12e1df7b2accbe6bab9570eebba70ba07c640ebfefd875dfad9bdd08ae1aefc0bc785e3c271e1b870f43ce1d6f75e1d52df8335a8fed49fea63cdc8b41ac4ba9ef5de9257b5ea4fd35c0fc1c52eeb5eb75a5b7daa4ff5a93ed54796e1cec854a7516f6eadf0ba8dea355ee3356664aedfd42abaf76bad7f5deb57b8a85af7b3a6f92b12e18cf417674df399e847fedefb23f5c222f81211c119095f31365b22cbbd0b5b5ec36b780daf71270aa09d744646423904c3439650ce97f04df4331b3471b040565e3332fdd569ec8f1d82a9bebd5bebbf77bdfd6915ef2f59afeb334923d3cfde83d7678ec6c26ec525b05eff25f916b640ada23efc4a529662525ba0562159a056812d63dee861029c1e338ae83123a8470986982a6bad8dd4daaab2b18585a555ecdb1999ea57ec5b2dc668c5b7ec28562dd9be578de2cbf6595a45fcf714c6d22ab64e116714b3b0b0ccdc8e40acd74cd6dac9fa8d9dacb57e336134dc86b5d65a4b3fb33ffd64b1f556657d46f19595bea3f0a595a4a4945d55b292949ca8d7f01af3881aed8f1db23f56c806b99452964a9673f5efb3b57ebd95aa6f6bb5d6d6ebebc89df4d6e82dcb5d845938ab704ce9c2594c69c231cd08a761812c90e5d487753e2323a3942e67642e9bebe6d2e1eeee570e29659c32fe4bca6946b953efb6fa5b516e2ba6d68463c4bf70908678c4b2d79233e87046a6add0e89ccec8341addafb89b38866749ed642b8ee1efb1906cfc41097cbcf8d5b9120051021a34466496dc7ad0fc706e46864647e33f87b54c71d62d66f2fc2729a53473504af9e43ff728a591523a9f7e16636db528a75c4cd657955555d5c5a19195cd97e847a2ebe2891b46615b31f621d9cba98c1d36883a8dfda176c806d9201b97227f4ed7325c8afc69dd262b39ce9c86b45e5ed14f395f845d58f48ab238a6549aa8d32859200b6481dc0ecaa511e4bb7066642e9bebe6d271e14c178ecbecd3d932a5496c56ae7bb27416f7744f8ee9d793dd5f382e1c178e0b07e40284efb5d66664deca8bb1f5c4d7d2923dc6f8154716161696da4f88185ffde9ee19191e5a0d32dffc961b96d5213d6bfd99733a4e9e6ae8d354b8c65a6c7d259a78fec5ec75e1ece56be10a37cc3623b2fc6ca2b0adefa79faa4ff5a93ed5c7e1481a343a3435cfb586d1c8c834e4d6830444fcc806c8ad07096ce4daea73adb576793696f90d8cb0db9398946fa9741161135e2f5cfdb4de84cf17bd63aff3c22c9be7f489330b57f633ea2b2bb18bec06d35bfc9e7e36e17713c3c8e730c951bc887e45d4e7a37b721ca1fadf7b0fcbf913cbc66f4ed903e3f5783e1c05c542ced7ef9d60a297987f8591cc3f29310180fc12ef548b8ab32b7146438e5feb7befebeb795f1f9027f25e8fac2218c689bc7c2233f8c8b2040600ce9e0ced7d6b27f8bdeafef53ff99efbcabd6f26223f698919debad89770782f1ff05e4e29339f4f62318c7cff66e931fc78065c0203000300d710c4f5d144fb95ee7bebfdf50080b316e4f598fe8a70222258cb4e6272cec8f4c8d7235ff6804cf91ac6eb6915ef27fed1eff9f0fa7c647f148cc4d5ddff4c4ae4937cd76e4ee8100021c30f2f60217ed6a6b00285dc2d886cf9b0ea0e93f245fc5f4fabc8eafd0413bd0946fa126cf424309127b958cd853d0cc351647bb1638dfe190d395bc951da916fca85137d732e3a8c6434bcc3d9e79895a2c5aa2023ddb5477e049bd01779f93ac48f34d0f05f2add9ff9f5fa2b826b08e27af9d493304c84b5fa3017b66a4be98f3dc8b11bcfbff15f8f5651e75b4f3d8cd7e3f98031d31ead42be36a24350430d999abe7e16534396d3cfaf2fa793f3653af1ebd12ab24f7a86202c6c412d8ee2d16afef43e6b99d0c26e90c5e184d1dd3d6230b559eef36314fdf468b1c0cbc217ce7cc65a314babcc87716293fad33f08e1f7d49d5dff3e6bc9d3db697d7a96920b5b0b1fe6b2f0595a05b4d3d482628cd9cd33326d65c25fe1601cc295146f466f6199997d8ac235e2183ebbe2177da555a0fdf96f7a0ba31e62afe5aa628859a2c55a666915f0dfe42a4bfde9595a32f6648c96a5553894f2212625ce1162965679565b4a10a1b6a6feb81db76a775a697bab3ef5c751b8f369e3b0fad53ae71c064335cb39eb4ea4fa58141d898cea4ff6b794ebf66efbd4b7536e29d92dbf62967221f25db3bcde6d9c8bc37129f09bfa8f50926391a774c4e1b808698471a4b435d6da3b235383d421f539da6a9056416b90d39fead32aa4a3f527a619e1f59d8ada9bc658aae2ea5383b40aadefac587dc55a165d6e53bbc6369e6cf5e94abd53d5a755ee67af69bac6bacdb4c901d5a75566fdf11c4791391d8ee3395c47f56995ae41a636e1c8f9946287e32c9e99e7541fb783fed46662dac782b632e2c41e2e0ca5b252169bb178a53696a94d53bc314d2c783045bc51a729f650a737b1b44ac595a5e295a9b16410b378cf1e6a33615b9d6e9ad6052de925c5e066ade7d65c98e9a1fc09058dd54bd870863a8dd826ec355a1ce5a5c551bcfae2286673c183f0e6ceef9cb59e979adb2b14c0801c2400630ab2223b21bc86d3a0ade45c5638fbf419e074880c0333195d116325c49ad03f1cc56b2172bb8e3ed7829e32cee066fd13557061e8c3f9f457b89cecb4389bc1d7cd6543f10a07710f8135111dc48770148f8820edc116b4fce09523e2b8f1b31e224854c1ed7ef9b0887ae1689519d843043bb23622bb6f3d4490935d0fb970507cddc8cbe64188ef858392113e4c7fa811e6bc1c0ec76f9c4d76362af5d03a1bfd91248e447a55d3b7e6124bb8b594f8325a4ad5522a11ace1fb9184b3d24f0c28c212e609ff39a62cf8545e785eff627856832a0c73fd8479427c5dae87b6d7755d97b3f1a491c8870d1f2e2ba26c29711603baebc1d5b81e9c0d1f97ebe17235ae0767c387ebe1ba7a701111c1231f310967d3e1da9c1b899e4e0f716622eb20a38baa739b74faaab58c7626327c9e02df4e126c581f5a2dc3591656610fa5065772ce86eb018714448538efc6d9b88d97350d48a3a9f6533e9d9ec29ec5666bde304cc5d90cdcf0e44da367b46bb843c7b08ec60c4863068410d2d07031e129ae673cca9af014f73d8366060d1e388306a4994183670684708689ec9270dd672666b5021d1e970e8febbaae6f40e88844388bb13c78e8b450d6c2a301d178e85cdf78e85c0d88c643a785785c57bb784828c4fbe17c788ffcd640b44e25aa741e9cde6a4fc114f0492b39ba3baff9f147975f77c299e36c85b21ec2095b385bc91256cda3555c0c33bd05b3859b87c3cda355a44ef378d4b3a49c32f0324c3fa53e8c6e26e57d09dff281f4106b243c3da5291617bbd8089b9e324def708491beb1c9fa150e3e693449a5931f611b3feaf0d0e171552137abfd346cf49485c509cb48d3443945c5aca2230bb6948aebacad9a3e318cd3d6288a6128ca8a539d3ac638759c2acc0791e8ab8c18e5c38dc0f5a37752ca5fe16a94d4378a850f22ca92df28085c3fba984856980f77b29e42ca930bfa139591f2f4238cc2a6a34c2fc2aca74cdf540bfad3f5222c043f543f82bfe107f93edc97188b0b7b6e1de5e42fbe9ed27f05f120902784fbe13eb24e4f960f438787a7cad14fd4cb6f0d45d51a4ac4591b72fdf4f7fe34b58f936862ada54cdcdac4ad4d5f5931a46ceb5793b2d56298da3f7ffa8461dcdb8ef3f80e7d5da7213c43da90a01c1ce9fa8eef38cf10dff11de719e23bef2fb6e252dce750714f74a59d40c2759fadf0ecf0ecf0ecf0ecf0ec544454077f3c1f2e47dc561c6e71141723ce5ab293f11dbff72f570cd3aac532bb67b15f2d86790f73e3189eb3d792234babc408575aa26369890f42e8585a5c84ef39f7a2ab11c35ab658fd15ae46f9f2677d8bd56fd40e2ca6bda4a9ab13da4a4b6bc98f6585a585a5adb0b4b0b41eb2c7725b1ee964b24cf3eb736171fbf99262163f6a3eade87c4abd6d167a83ea5e07bd6c412309a3813ac8068c067a1d64a38160b807c3f08a70433e244b2925ee20470912453c7166fda52fbf51d49346660d415c0b8bdef17d19c3654bf4f09f85614458deebef03a230cc757550034d174f9e34214a8c05e049ce6226c41520ddea2e76e823f20947b5f081f4b4a144aa850f34a51b486fa5777b2e621efd70fd08e60da4aff167b321be135121b26104eb96224f4895ecca5262379b0d323bf9b7a1c4a730db50e2576c3694f8240ce62873fc6e0788d353988dd8cc232c04f20610f020e386d1d7c624c43562fd9709ec7eefd04764735ed86c27dc5f0cc551dc375661d65b8cfa09aba23cf1053a67b381ae8f6cd0038d78617045f850d07b414293ce8fef21d5a2b9883e9b2338b38df4f3456e8ef347b0d6e28b6024acb5941126c25a4b89388b01e5bb0fefbfa7f751279f508e313621214242848408091112f2132424a48508e5976df2cb6d6a2e295c8a83427e827e8408fd0811fa09fa1122e46c84fc086995f71a70d3adb7d9d0b22b952e9d6eb3a15b4cf4c2d62095af81eb6ba33e0cb26461d830fda601e7628c548be9a3a473ce2b3be7ce9d5b11122224444888901021213d968b8654e72cccf170dc8ddbc8f74d3e2a332a5f37fa15fdf929da8575903f9d8ba86bdad45ac3597b0acbbf5807d7708ccd8d7e664dccc2d4bf4c318cc5f4abcfec3f0ac7d8d728a5917a8d09cb6cbf1377b17d1f2b50ca302f9610624ae1298e06450e4d93bd9c592c85a7b8065b7bcd515b4208580342d85ae5174d6d266a54c185890fb37b213289dc7a986047ae6e9bc20166eb289c932f1f4f76dfa3b303081dd97ded1cb0df831fb11d78682177e8fc1a6703b9b513376ed63fb27b17fd8d6a080427cf0b489eb93e8bf32e1c105e36d7cd85d32e9c7e97cd85e3c2b9805c38ba2f9b7eef709a0897e29a881247b8ee710d41dc0be7c2f17e2a155013c21aa449f7f6382333d521b672eb6fab692de5a6fdea29cc5296725b7daa4ff5b1815b08af1b0be1db3823632f1bfbd78dbd7450b39a733e65aba7a6b64e5196b3319c7d6afa0bc785e3c271e1e81ecae508ec84309d1b05a1ebf1ba86fa2c85adb6e4529c7c4bf282bda4d20ae702c353dccf502a4dea31ed84fbebe7f6472cd84b8aefbde4f7053a069a375901053ec630ad1b409f2fdbc27dff5e749e713aca4c860f460821f4200de44defbd95e9520c83eee76c65c5cd156ebece0084ef03d1a3c7f9c3fb26df4b08e12382fd2bd4a0ebffb0fb76262fdcbf7f18e6b91fb3c5d8a07b83103608218410e22c66be9c560dc420ff92e23ff82c74120045b8ef4debdd3438b94eb074f4942084104208e17bafc413deb40f96c2e0ba1057bc3577e82f7e14c5e04deb0d85e9427e6b3ad1a7987bd6bcc551dc65b3d9c92c7fe4cc6564f72ec387dbd9bdc3bd8306b73febd7cd1fee4cc6dec1c21b00c4d54829f8ca167c941003a90cb40bf03d88858e428e0a83124ceea35bef9fa3502fdcc777140e104298e78880801c0b90634a8e588e2472bc72a439c66f3258ee6625aa01991a45519f4dea690b429e80d08019b2fdaeb170e53096b13c51203f1cb0fcbec26e5e4d32c32765ac400b420be0eb90236c5062167b52420a6757522fde4f1ca91714c8f0fd514be79c0f4f1931769d370edd686bc42dd321c788b397e18b2f067c31837fc41980d98d6165120242f8222330a15eb89c892e471933e06e6411438a28a412fc27a5cd114b6caf25bd12c9514cfcdce7288e04112ed522c6f7def77c2f76af28e13d08df8b78de372784104208e17b4f076fdafb60054840d6f680070e9317efe1430c63f2027efc88337c92851d61904ed2cf64969fc52c9b0dd4cb6683f5f2bdd950bd9452fe3b01dfc2ba9d6827e053d86b27e05bacc29fe05399e1bff9e4a5e9362702269d485c540e41c8efdb24c37dff660e1002814020108892e14a039222c306c42a998265b5378360fd00c1031d84ae794b8035f3eeee8eef0fdba121249d14412a9d388afb01c29f3013c36ff93d081f84d83e22387e2fc67b9180979f0bc230e160b6ac1541094fc8efb3dc5c348092dfe7f756e034a1fcde11f7b96f1ce7725d8afb1932b42a3c6fe9fe4599385bc92922cea19d703f3a415382101de2430e84fac7ea988269c78f2c046cce81210e14e13c644a44860ddb01d6e4f77edc0773fc06894b746edb4baa210215405093df8e6703d9efe1d72ae4c38fad82d6874f9b0df621ce9ea3b8e94d057e7bafa940e9d25bd8271b0b9316b973a358c4d74e4089b30ee4f73d5138a394b861b4f96117852558e79e4def6e2f8b2165f8f2573888a79bf35edaedfdbc242b4c7b5bb3ac9ca1c01c49e4e0f667a4ec2ed039234d7b4906708110421ee906d2083a08018b9effde0e9d5f23914e4e1e259d90b0402a9d5c471133f8c3fb49bd901f5f5238c0874f522ce6730a873b4908e1f6af70a4d249bb6d4ca801136a601fe2e0cc20e3b61f5a683e5a10f9f3da8fea46670bed078e87a1d68041cf8313a5240365de12439408c0841a30a10482c904cec9c8f04b1871e10f69d05a12294a382111cec5e1f4107b8c99a1111792dcc6b977af0d909c957a20e06e98f0c583dbdf430fc698ee88238ec8c09cb966060fdc189418c37d3fab21c0f7de7bef3d1110dcf7208410de7a4382efa110a1c417ee7bd2182625ac4c5578ae0595109eab415a36e8c7821d274d0a408624a149c1ca6940ac901db8a001e91d2e0cb684176ef672248121c6931b8467b9d0436d28bfff097a2d2950b2f6401b2265a169a13d202d1cb421da438e22b4a121ac8807a619efc1dce9b50fd118b272e49fa901aac3515e8eee1fcd699537715e0d5ae5e136653b0fa5b44e13a5b5e2f82bdc442b5de1b2e92984729aa6fab3d62a25a5d34c10727fad984ed334c95c1fb9bf4e3db92f1c3f5897bb30eb9dd5281187957ee49d9240098f7ee451f2e8df34d58ae5d1d359e3e863adf5eb1b7dfdd2937c7d13286112d2d777f3e89b7241faea2baca28b97678b96495fa5b5301189e6d1532ecfe98f6a417af9958edefc154e12b11e409a7984a7fb3b935dcc4ab6f06341455bb85c3fbb23708665f793046b58299a78180f6e46e492050dc4e332ebd34b1694e230454aab530d981a52f41b42f9a2298d148be9e724a5a458d0a7d4025aa6b8861cdc979f9bd40b37e14c0379c2eaa45ad0873f5138404abdf04c716b27b07e17c3bbb907abf8315c9e2daf7012dba18f98990d613067e67cf59dabb32b6cc2b2529e1c56612e5aae1cf0de57b8faf715cea6efa72a6cb28096ab77d172557dac3e7e85e7ff4c5ee14d61b5dfcee4a9cdd4f62025f78626dcc57e7d37bdf71cec741a2b2972702e263c05531973e0357230a31075764b4b8c2fbef85ae04bccb262e2492516528b0eeeb4d73d9e1e1a1a3534f5a7fef4f464e77c874bc19aa7583b7d6a90ea839363b3fbdee15c4a3e77507daacf0e628eda4c64eef9c31ab04136e8bdf8e083b0bee7bee45caca4cf79caf387583bb63fadf2bab107d42a0fb70e9c955ac7fd1481b0401608883844ed1f8ea2bd075e388ed2b0f96583af9b56c1aeb4e3ba73178e36804c84d90cdc71e18c78421f7a6c48799325be794adc9e8dac50e269657033cf99d206a4b51b3eb43fad225b5a20d793d3e4e8d891a363c70b727a6c9e945648be2007081d9e9e1d366ef7c39740e8f0f458201b2465ce0e9e1c1d405820fb039d46dac899e7dc1c39a57453bee7b81c0bd4c385da4c344d9c2be82a6f0a2ecc7c5825b51536266b102a27ae3e53e3748e1c1c479123a73db882076b100c1c27c751c414dccee139aec37738108ee2398a29a877a8242e5845355423018000b315000030100a06c3a2e16024097a981f14801081964e705218c9e32cc8610a198388310608100011008119da244100605d22e9c0033ccbaa340534dc4077ffe0f25acbd6843542f835a18fa580f2e9e729535096feb3fa26a0e943a7bb6a2765578016ac07c9accb6518ed45bd5121c1c4300182e91228f3e6ee4cbfa83bb80fc9e42735a5d6742225feb5f601f82422433f7085a4bbd4ac56c9de06cf0abea3cfe3e01445d0d578726243286b502b95736e7a343f81b2748242c3b3b3bce27581b8203230a0b4f4999c581159b597827a7b4655bd84e85e886103d18bf37ab179f9fa4e474ad7fe0725b79e4d9fb9855c1a5aae089280c669c55be86d90fb64a9e882c4a11dd833dfb541fb4e62958ed8686b3e309cf4469e70b13aeeecc66508d6788af2adc92b9303b2abc8e5b607a76a492d5015998892d79848f82120bbfcb3da79c7be24870885ce1e7e87b84e3ca5050c827844875dd0dc73b9c01ca6ca5baf137b4b6e5e566ddf930037665733ce340ba7bc2605225f53d8a866c6711d1dfccc24a54772d78efa91c0a42f70ffeb5b1f6c5337a9cef0b417ad1ade7d10328ce0d1fbba12aa6c2289c3a6407d645163e822e159fa715a21417c714bdceccd60ea088ca0fe98a8e85d7b08552d69322252853510b93a6a161657da9d5b585d124d0c27c0d2d0c19d820730e23bb131a3f5be34791c4ad26f10168e901c02c89900ddd6f9b76328233501e1b08894b3b4a66ec6f265a8d317c805127dc420004bf386760fa992a7b311527d99a987c776d7a576d856c9ac7877120d797787d20cf11a91e00f5bd28cded4c24272c3a7c92d2852f2482bebdb5cc1679b107627b8bc5aa80a7443c6546126164f6d45afd4779e7627a8281e31a32d811ca076235d002225c5ab00877920eb80b683e61fdd5983872decb4ff2b1db796674a53caaa4772eda21b9ded4aa95f96a9698b19e62000ed5cb590e47828c93de2fd55a12187205ffbd4fa950b9a5d921e93c7e3da20aab0468f847932bfd0693e68b39cb9545c08e8f63c4ad279e968854714e04d444cac07496dd81405814666936a7ad193435b30074b5f063cc7a2999afe7bd5c454450b7ca9d6ff1c12c4487e15e9c0d73244e9cf7690c9d83d4ad2336600fec3a0be5c2c29a592c6c0c3aa586cd7332b9daefdf1b14e772fd3f9d8d81568527caee780ea1f1f40f0ca12e4da783965dd016c850c9df37172af9ec394207d899f925d84fe4051960cfa80de37c60cfd96d4084d47871bdf703866940c69eb5c854bb40903c72fb619f066505409e85ee077db460ccfae7c2f3509a14f40fbdef41f1ba221ff587e6179436211fffb745983f9d783b5936ac256e6a95a5370a14f9fd51d90b899ec6c27b01ab09aa2ac0ff38f6a644837e31741221a757224b4d583e8ab186e6d36eaf7d77223dce6d62d0a7810ab2be546367787a1d1ae6bbc89a1f048279fd0d66088df02fcd999694156007307a89b796edd9ff064d51d90bb380e4ed1cd45184879c1598f9440e695bcf82cb5049165f1f3bf7dd797e5501bf5ab0a913f641d549fb8f3484d314a9873c67628b040157d12c62d78312ae20846a0d838c41688d5d404f394dcc7605dcd83c788bc821edcb409eb710bb8223625713a7d56cb1f030f20a760365a63857a5ab639b506e98b5645bd481cfb16785d026d0789ea1102ecad4483b1269acea3197d828828e30ecfc447263241ca7e2ab4b205f16dc4918067d319cf70943a11f2afd4e61550cc9d58c68aa4594932e37d3fd6ab2c3678ec76a561a475cbde89c8d14b88d30fc6e606886576384af013aa631374e1b199874eb848cc2f65585d57e006a75ef565b23b4beba0c64bc87f629fd6bd43afc54c5e06930b35617fbd7b4ad76c2f98fac2f777ba17ddb864bd60b54bdcbd2a1eda9922a3a3a06f6962b295f341ce3c4edbb32b43327a70364f9254e601ccc49f579d8129516568950496a9633843c937e12f559a94edc30767039b8515252a34e495580e154d6a0229cbcf0f31a091bdc6218302d8def44006d803e2351fd851e6ab6c9b608e07ccedb6dc407bf46ae80a7141397a0ca15ce81df315fc27a55066831665deb2ba2f66b57516668cb57631b37abf5a61b48356552bd8b0a0c81734e99aac354a45a8e9be12f5586c70b2c94855753dbaf52acf25b4b430907e673f1092d69ceb7508a93c0627afbebf31e5659292cf8072ff296262fbf5c9052aa65e778469cbe218272dadecf93692c1cf70b8e33af0351e924a1fba1031bcec360b39937c947a62e87ea103b36fd284f7bd0a7071ae1aa3255aed8a80def92fba95e11de10162b900566dbaac43fed805a4ea4d2fdd1190b76f881cbf92a4bbf6e1775e388088453f3f98d842a0ad1c6e4f6cb7edaca158a35dbff38f1c46c5c7ab7ba71780a33b8566d50c2c3921157c748f81fedc0166c428a95e85f14b648e0283fd4f6e9a34e21b1816273e9e5a52de36898d4a32c3800972731d7d81d8b316651e58b46bde94e982a07f40908207109619277b3dde9696bafc1982520cab635a3c17332983e371356d91211a7a3428927ad07e95961b0fe644480c28b6a655a863836b0be67020086fd7882c5a0b57dd345c741357474ff8c87b938caa770ed3487481c8282f841380ea31e8c62c7d3ba24f943e668798b882bd0f8921e626571cfc10644c4f85bbc0a88dc6bbe45004f42a18fbadd53e9fe4b63f619c090a7731e5407c1a3502693ea33a9b61b51e9b373688b396aae2ce376e76b0f1c749fe956e57fb3270da45a77442964f4fd6a8057ed1186054e43e4655f87828027d2d0d9652294d08f6aff83d0b7a72a8966184466118a1b1ceb414b599264c107e214fbc030459b6dcd1427d727a3dc58ae021263b0a8d5199985d5ed488c006edcd73623dbc71bb73c8dde760be4a7b0adeea3383d985e98810f2215c533c8ea8f41b9cfc9e428402b1b430aed36e93fba60dd09670c9c559caa790f7ce3a14b0fcc4c988c7d26922594e462e51640a9226b8f8005376af9b366aa7d1265d521a68d4d4a5a197fbcf82958a6fc860a40293b9426f261d140d3bbff69cc634383643e7b6f2c23b92c672e97d227a7442640aeb24c4710b160c9b11acb1512940f7e788d2b1a98f7e8ddec83394050f74dd781d039a70916a9946a24a21267027f496a595a624d918f8ba281a476ed99b0b5e3cbd7be7a91e6d35d37d17788a19aad89699a444936b0771403ac889c53a77209e30c90a6181e15e9538df8ce5db800506abaf7bff41cc3209b346ef8eadcaf86fb1098835dd98ce99f18234e086c412478c854fb07d1b2fa5b1308b96eb25af53cb800720e895de0e51aeab02b60ea0d7860c1baab1ac775cb1f116683150901458b20c4fdddd18ce19d9a37e14278a0a8e450506ab5d289e48b829c240719b7b9236edb6580b5675eee87a73c916157af7d3f3c6678169055c007ad1c5084c7eec49bcfc8cbe2bf5923fae85fc45840b55b37d405464a7ac44f541e50959ce1a51b27226736d8c0378b8769e180b5461b1a439fc161d3e062ec509393dfcb5084849d44b61d93592a375908a39d040e86499aa85de85dc22530c6bbd80604f7f2d2f2c4e6fed094d61796a75584cd84bc724b9022e372533e9cbdf7466fa75d2c989d00fdddba8f25f830208a46678c3a7c29a349bd144f3e1c9028424359c8e56790c1abe708bd1a79fe52712911198e82c3369ce2fb68809cb276da7808ecc0bdc3151df80597398cece0e842834df9ba40c1f7bf2721c7d42b7399e39ea20212053558645811d90e1809477f3e1a9c71883be5efebf34235973f8a3bca9e830965f0b6c4a29276f69cdb87843cec1d6f02ba4642c7ea86c966847931b20ad81d21ff600c366c71f0fe563334b96bafe26c78d6ed4cb0e4a4829a562b64b24750b45e9440590102e92b0ae348f60c140217090869e78ad9e192bf809367334d43de918550e55d9869a593f14770e7a626225914d76f3209fba98025ee99e289226992ce650de6160fc96470936a9e5ae2fe4f43af212aae1cd5f8a7d3d7205170355aa123395156d55a43a019b66edb5c352a52a95da1f6a8d59545e717af75185051f9e1b01ba9457bbb5b7e048ebaa07f0b34e33de59d5780fcfa3de6d2234bf0273d1edc4426d00b9f773b6992f22cd762cf59876aefff61bf7af8983840cd983cc13e4a8d09735e8a544c3b3068a001b4dd6179db75fb5d82bda0d6f8c4e36eff91dca6da89eb84eb29126e0fd63dd68fd3c6d2042b166d8b7886531967ffa820126a2e41ea60311b89aa73536619e43f64bd8a02015df13f27ad2886e2474ba442ea6e0adcd58a474ab254a3c109544f917482a0c2b121a1f0d452d11e94be5a5af254222d853b5f827a5c57b52dcf56252197801e3a5301f6b50cfbddca467f81f4186963964804d64f9c31fab91dcbf869d3e16a23c0eb96e1ba5c9b8cc567daf220b92c94eea6a872b8e248aee561cfc1b43ddf850c9f4be117abadafa63b006ab105acb11b8388d9d6a399fc9896815042f171a4418552bf6ec0694b11a00bf6599574b2ac5fbed586810d304b9424c226fd08b65e69eca69bd2276f9159d6120f6c6821b68f6aac9991e98200691ade1ac39292e3445936ceb438982be063559955305db297415ccbf0d108c43969d2631a1dd09038290319a0d0e4366d54ab18a136cdea5a0b968a21ce027b08842cd5d71e41546024091a6731ca4fca30d0ac0ce4ef3a2f16a4652f00e45dec8388289a3af93860e3e021b982afb85e6477d3120565cb2f5c9938abf716b3eb97b7879bd88081913955abefa5855978779bdff54ee2e3b46142b9d01b9c5c2a4391d292f4c2ea0eee58ab8480843f082044a5d3fb10e61386193f07d69ace7f905774e3b7cdb2e8b6474cd6bcc6ef2ca0badc68f31a4d0e9105ea432c6508284c150e318b1be10626fb99f90bb5342fec9d6bea240b1f482fe07b5e63bb1a3e3395069aed488ee3724f33c31c6f4640464fea8c183f9e12665ae8a0f4aaeeb17b20c18ac49e05ff6d194ded05bfd250a27568cbc5c92088b4662843bfaefeb349b6a35ff59fe1ab7969a1dc7b33a26da1bf5b0575dd855821115fc959e4c9db1cb0a670909ff228d857a93c94689dd3b00b5790dc74dc4513e95051feeb7a12bfcf06a1049ebd25ad1a7049b89bffde1d96a2d805215a05549f40c4d11db7129ba8e4b607ffb249c6d8266799463ff388b5c6f7f6c0595dfa3678bbc54455532c5fcdc873968b92e4a5077f1893aaa948f92256943c125452009fd26b73244f56b6da056c4d9224668faf383b2a76e2dd3a3f28efbd9af0c6db31b4077608c31c213837760331cca353c1230c50f41d388028d37f1682858949a37274da0eb817df6034d9a9cb6abb27e15a0fe06cbdbb1c1d428adcf6f2f0b76d195cb7f9d53c062e7485a9c94d55fe07c260640695882bab8499ae008b829cd8f77b3360dc6401f261bb75cf4e6a4e89a43cfc805c9f46ac6a76eac54a7483c7ed553db40cbf78643b218135b223933a1cb4349e0fa76ae02dc803e28155c8538841b8d1b7b40039a81344a089322c1832c8f64c90634637eba2425948cb4e6606fb609561d4de3da9192dd881b85d1db49c9a6d1049dc7032c8dc694041d3325cf156515e17f3fe0f45690648e6889e938d0abb1fbf8f0274298ad6ac60596bae0a073d3ad896a5c3bbc9bf34a9f69306d8f015985af961484b51d1d79f8a38858c3be1322af8332993a3de7a453e5cdc73adf10ef7d36fd27d2587073a9223493f31f313f9c41f20b3102d12bce748ee2550a860d827ef5f239da22aabd45ce8f10a557f12283953d37e29a2d27e07a3aa371fd923b99c28f36a48d11305a1668535c75c24b30e03c399ade2ffc8ad81f4944545e20809600edc4ac03d19425e1d97b64781c14ba1dfb43469512c75a5a2a7b2048dda48551d55ca154697d982008c1a63cd77b368524a9da5e4a91613058048402e11d2a05088841742b05c47e0ae82dd9382521ca5876d2ff3d0654607ea8067c7fa6b5ce63746bdc0c547df74166a3c2a478ddce371108bdca4eb4db1fc43ea902f14ff12f17917691a6abcee15dd47640a5205e69e096507e955972f16ca63dc223b0e548fb10305a0e6418290528274b92cf9fa5c1875d3709c3bf2291128176418825f91fa46f49d3de90e424927cfbdadac5bbd67c487a124529a9694c104c354312c892fe87dbcdf8c000430a5fc5bb3c469a5c4991f3b42833879206ff91687af0cfbbca72cff3c478ce7ab7c43c24e506ba2bf5fa3bd838ec3af71c5d7e291783ae72deeb7872b8f09ab41a8b3d4d09e9083d14a635539ad93a0523c3d84777ff980ac9adeab645612110183faf83c1f0776ee2138adccec961c175ae0e7ed39a6f9fb497c30973ea3cb701065b80ca988999a1434008d27a0df9417aa54dbba2188ecdbd1ed356d70e6ddd785612f1f28afc8b47032ad9ab7039060e623e4ce2483e4cd33b2fab4b774f3836463efae07a1894e2acefe31d35c25ed1023ee95a4f45d26f89362e0e73a7602a77fa299b64fbdf08611ea50113ca81eb034628af81954601481546ecc3007542be9f0adcf371e100cb7bbeee84a867c2be4e16c100b5f0590454e93cd6365ac55ea3201a6467755160bcf4f36db6d5ae424a3fd16c9ce9ebae3b25afa0a3f4d8996c2c21a3ffb6d7dd0a7ba867e1609da41b9f2f8a4d657e0bfe5c730aeb65f5fadbfc0d7c70f230598adc7d6ef5b2b287b3a24dcf311f975d4c9fbe1e75e03cddb69b41e8c7134b1653764acdf1935bcd6b03c758cc83b870cfb2c3229515a98baf9f8f9d92d2979072c7d58e1fad44eeee2f76d52eecdbd8f4856a41db827b5746a9f2850fb80856b178a946e60ec17981cf592736565bb8145d529147f169ed07309d0b5728119eb4f68f5946184c85a7ed830e9447343dc0bce08a51e63664b0d0b0d1dc0990c7d13d7c4e3e7affe96baaad4373481b673e9044ee8087662858a048db982a0535ee3d9915ea98602cd0f01d4f52a276aa727b0a9013263e9281e559937dec8f6b0a48b9f82d90a768efc53b825c34936dd00501adc8517fb5f54de2f483c2c02962d782b63bdbea39e345d5791c5695018f1fb7c7b65bd4602a96ae6c54dfba0d172faba553109633e9221214ee0846964e1377168ca2a8bd9f7fd5041e03c396d5c1641b67999e62ee15d6069b92d9cca3b875e8dd84eb063295c87bd64080da81fab45e5c1af5b3fc266b23c56cc188f9680695d4c28d2829a5f9051485c9c7d1402e5458a282b4c12032e7c6e6a121e0f414213ad9698268d19c809d2ce15b0b470e2ff728284bd193fc851ad49bc4230e5dea41b9a551223bb464a9a72f9464c7486863d178b79c87369aa83f2062bb863cadc02ef4adbcecad96a330653a910251f06d5b0340498c8599323f880b0840966d7a5133453422fa362ac1973d5f827c2b4f505aad2cc6a758371e8ba937a0ae87260395173ab310162a67f707a388ab4460a0da653846044839c13355220208ca3a3734e8991e7ac9438802345035409df784064161e12052337fc539465c85dba943d68e47a1b722b2f30805203076f9013abcbe6cd29b04e17c78840e32858fad279b081c7703a796525bd38de56692578492984a11b345756885232ffb4dfb659e89703b5040d1fac9478e4b2ae6e4d2a4fc22cf934dd888acedb016ebe36af82f347df0e14eaf91412593cfc92530a2ee7d5a106c845dbe58c8098f00d45e2fd591ebd185c0ef404d60b0bd3a986c11017a4ef2bc0b050541ace6227116b90ae8144488b4525b7d159eff9a1dbc2ea6e69c9ff6ffa73ea783a92aede0da3c55681b28641ed4ccfd7d6677a56a486214e2734f055b29ccb414da24acdf2fa17265ff5c3500e0a2ce1d1d43314693b3cb4cf8a4065ac57d6587f682fab1b0b8996424e095c3a10aa5b573dd95b710caa86d25b0082be61287cd2992824682d1b49375c622ac47b0837e3d8777a4d9808330bbbb3152d3f7f50190c52b386cff39772fd3000bfb57f3c39a17371e74b9bf9a374dc87d238f3206c23b2adb2925c0974ea21bdd9321e2341dc55224f199d56a80c1fd41f6780e3e4e3993cfc34ef9c4ffff0aba48a2bab62131d2b9eaf35803d26dfed80c7b05eff170f8d517025c9f9bba3852521fef0b342afd4101db69dae503f1f3740efc9a10370d1fa643006bde84ff113ebbe39b4c1aef43c1f4dd21eb1f858f1b1e6912c307e0db885b046890f384c98f2cd55b16cca0bea65141921168303f3e5c0476ed44dc9342f42eddaf915e6edcdabaefddae7b8fef613d0d482a94f87d0f130a723afd19d149e6f7fd812fcd0619c9dfbe1fb477245fe51e51120b5c725739efb5443cb36e66d24d98749919828d129ac0df2a3b075c2850d490c474d5a64a6e1dcfc9b6fdd7ce20c75ffc886f39aa662267ac8bd5965d75460e14b9abb84060336ce65aa46437244274956b43265b3f579bfbfb063f2a94cbcc82b74b73017b77cd2a2db122387c66324a1c4b68c75502ea9b9a626fc30923cd5aa06d8a55dd6ec942391e37fb03afc9152d3e70034cc8c275cf24479a79703f53019fe01c4594f913b0c05b959f35d3e4df31c36c3a37d765fbfea2ef703d5881b043e7b8478c4127e9646b12c90ce02c46cfd57b431e6d7077354d8502689588042afea478e27fcf9a45c2490baa8db8ad8c9c7507e162dc2f667e0768f4e6cf9ac174816c522c8ee31f7c5ce54cc531cf88a70ea402b38093203511af97584c181362cbd0954ef7f834af977d049b6b0e0eabaa96a3d7ab8a88c218bd6669deaa002d43cb7e2d0789bf9c90902612b37250305c89bfdbf87a596e046226baf621a79fcada15097b0889dbf908e0505f2f5f9310f182742d7c42e50400e1ff9838281a834a91e3ece3754c2a50c8baebaf57db8f10692c628208e3b68897bdf41d1c66eec4a5aedfba3779723a8f46a3eef73345e5d01303284a78e935ef990e77bf244d0364c63e0778c73385544672b4de1d39637bbc0bf928d42fa835467b4f9032ea427a8f576e6137e10cfcf743813cc96151c0a291e580ef265d7fddb676ed74bce1644a24f9d6f36492c3035a42ba9cbe9a48479737123a8093146edd421a78ea09b0b57be77b45cdb60893a131a27b8cecb6706c673ef9e7ed0f63907e740aa7761127bec167a7b394917b1d374f6a5c724427c8a6f406a20b6212a4a52034698ee2d69806dd771b826360e43e0fac76d1233e282305847ac047f53220d9c1352c4ba349fcf4dbb41edb2d1b4cbccdb598bd2094f932e294ae445f0dfbf4295327cf178d2e014dcbcd04afed578e6a69837a3618b666d103052444a0e7082381a9b6f8d5420df63de532bbe601e644ff05f6be5dac511d61bf05db5d8fb94d2f97271f8cc8c5c7f5424cc8e2b7bec9b6d6590b2ddf6382e79fdaf1e8713168ec795c0619c5746d1dd1268cef875dae96c429abb814846b3a7a9418792c4a364424696bfc03c7ac1ed97169774a9ab5c78ecba60d147249c0ee6171642ec864f2172118a55947c795a331f749557a346e2ff891ae417f4579074653a400c7853fbfccc747ef123f3af9c1467a9bba01760d329cbc8a792a034f54432a7ede55045e54637135a3c035ae8364897811227d69a789299ccdc74208ee34ea20ebe5a2ade9d855663a62ce5c066811a4c3b35267d4b8a8d44be4d8c51efcd34ee3ea8b1397c676b20c72f85013406c38e4430d3264c283b8362877f8d7a7216729c7dbbff8447f35ae1695db59963ee1c973905a913a65d614ba1e5268b37e21b853c77a235f3b00e32e2c46e93550de379ab18110a6871c7928ea8f07e98d201060a03185724cdb998f7ef0585a80651a883c312875e72ea82f4f44790d4fa5c8eb4b68a8f55550a2f47012ba76858d2c74de39621585dad0c80dd109e337ee5829552347bccc90a40c5012cc32a90e453036bd8d123a757dc05f4daea0e7f427157d6b85435a1cbe060a6282c9ad4c2a53fcab5e318f5a924cb89a30d09f9a40b5a38f540a37cf5f5300728262548f0e60f02d67b44f6cd0a8328126cf9ccfcebb3b9c22d09c706263a69882d07def1a9eb861b0da65b829929a0e51d2ecf04b87c121cd26c436661d232e68ecf04cb28c453f64428aa742a9f4004c19c0230014c5625baedf95645170ef3215c477d08bfe0c4e636572eaa2cd0aacbae9e3df12204077bed8e93b7dce31f9907bff9ca274de1a5bf6cc6cc9894770c92d46cb24f971e6bffb5a9404f41e8228c3a34162e53d6bc73b3292284301cc66b4d9b1c63182a30833b50d819001642206032a8d93a29a1349369b9ff15fc4da60469e87e68819d84e17a5c0a641ea56c67dbcff7bc93c6055e7e6a7e003fb8b0e1a78d3768ee9a8449a8180b5f6362d1249ecfba6fe3a7454497adfedcdae4edce2454f4d0c36d2546521078bef68b8831f3170ccafb60e064066f404e3956bbe2f9ac1844620ad6fbd1b9b8e0877c0d1521d19c8a60df9148c4d7764087eaa526f320c288f9ce1db6e66c14ba98c7923dd6d380ba5476f8c59781533c6724c6ce445987d0734870f5287894997cdc140adb71f408fe03e7022529cea68df24f42789d9865c7761e2014e56fc2cd1172690ce5e54b9ad9ff7b19118172640db9a5a5560d1da7b3f4db46733855977635885c7883fb6beaf07966831293da390f5f1769d3691721b637da0ed2cb27e7013a24bd962828cc41d6d61c55905d2c6aa0c49580ab53e54a3ce3604f88ab6aa1f89dec1e0182b6d013ae8e65134f91c2f6e34e3e05c8e01e943b9053235033889664df8afa8b9a3768bd966929c190b6ce0094228dbe13d8f62fa8b0df3c09654b3f2f57cbe9db70769519fd7f0b74709912f3199a8cffef0fcbfa8c55b1121f241d63425214adb05741fd9021b5d63d34553367b2992df8b425c1aa759789e6135284b88b8e1f7d4edf339735c986774bd42c74c715f2739762118994b45346a645e1058dd1dffa7ad7002208bd3a6c38a88ccd16cfc8197f48f00062ad65199bc91152c82757347fc8335ce5997a864c5a173da8e6ab4f92204ed2f30ca7f5e46adbd873f98accbc852a3ae928ee031f498e7350eb844b4495a6147b5f02ec0249a6f705159822a64bd8b5b2823b842c4f9e46a0f32e25d3898d432f7b5601e0c72b4b8c70e8375d54d9fd2b0ea6ae748402c38068795c24fb6a03896ef11fa5f3a27ed29a080b5ace5e7c5e5f872b07b4750acea94390c74b4bd4c900a20e321c012d54e5a65fdadf19bb0daec904be82e9d8357a94fd8856fb62a86231ead4ecd36f15cb6be22f89bb512b18ffe6856e9071a45f4082809d41a24c96b2ba1aa4910cbb20619dc5ae24028f6ff0a8c08a19a7ba4efefe410bdea22b3154385b3812408103dafb72b7e0998561544551e2464f1e8019b5b458bcc4ab8c477ec1e5e91224a6b22007781263f9aace23f6ac60a26edbf69767a183ecd03a0a6937e120ff8511a296f5e5e9ac60675df425dea87ed108cecb722b23bc62c2345aaa4d31efc34d587904ff46122a8c9724c2675fd0a9de9494ea91a987c1b8379b612a7fc84b1a82fab6840e8ae4784afce48a3e15b54ffcd4399fa8b156a22ac3d0e23b28508e0c1f2990c410d44b70c1d4635f2c6c24c2139b257a33493b8a1bb79216093cd70e76238681b1a9d727ce53887c0fd1707340fcd21f580fd5c0185af8c771a798d59c9299d99dc8070f72f068f221b3c4edc40d5116ab902cd5ef858369475f7580c60f49267fb6d5b97795346cd9677118413d9619eef7dac02e5ff1c116c6ff7ab31ef22f0ef61563b617f9988cdc08fa2115fc7f0894e953769e451334dec183e0b0d33a2b7e024b2ba98b5a801633338f22c13580b874b0b86eb9e4c89971f997e78ba3a204e2c750150588c4de96f04ed58378854f9cf65d86c883b3f9be25437fdcfc91fc31b6c951f6195267e63ecb528b073eb46a84301250b4605db1e4e3357c7e51044858fb6028ee4d6db0c53b9ecd6467a1c3134fe39e16fdb2d1d3a7c24eba20d78a0069237a93b47b30c60d7522a5ef00d86e30ce6f7e80aacfe4e76b674a02652945cabd9b5130053bddcb70cb26a08bce3790102f4027bc780ed1b7c2980cf8a8f22301f000f330cc0cca11d334e0e6bd37c5b48eb28a447e37bf29a07d17b0c317a4a4783ba5534098bc0c28aba71fdb2096a7b5cd4cd81778d8c2d03e38ec58ef5b76c4e1225e5a8629e4f8b3086b9368f84ea73020c22687168a121995b703526f2ef3972cb39f904023f1632439fe5bae5a88f90e52b12c6666ea6136f3d56d5d944501fd8e92f9556b34cfa4bc71ae19610a6fb46e4c13a5b82bd3f23cece8cb6f577e9c868e5b321ad861b110e375fd2f422f480e116fddc693a646314660c3debd792107b6afe5b33229c1323f756851089e0cd71c46e05478bd4324043daf7de61926439a522ae4f46e298d5bd46e26b5545e74dcd213d12b7406e2b3a1a3c31c7c94cfff2e1070311c1735322a3214c7d2555bb1e4db80493ac8b671cd235fbc092d4ceec6bf23b02280db56518a68de986ec18a0f5afa4234bbbbe2417d2b34d058f3b29c2a3e2956f0af8f28d1eb9fbf34fc64c31f1b448498367f0bcc46528550983253871ed0ae67df1f3b32ea4e9e41f167aeccdbd76cfea789850a9d0714ff3a6c8d2790d4c6bad53cd527406107b7d1958487ec71b4b0344e4c37d08d96a9a4daec423558245e67c350d02d074c1106e6d654f29ac8d79f6aef29babc3e5c3f3546d1c625fc712ba8ab2b60147b0425eec8aa257d493f0a85aea7c72b63ef75316b228dd24666b787c39e8763a0e3061c65393ddc72a7cbdac2ccab06ab23fa6f3a835fbe83eb6a0a721693ae0953ca98d42df64f266103e074048874e7d2d40329022f793e69a6e17520e1704442620570f448f86080761e60604511752148eecda071963ed78313a9c12356baeb167d3f45bd496feb494e8030b67481145a45b1b5250a940fd8654ae60480eaa17b41487541c98785de8ba546f73d9f87e6fdc8b24d7d751470d21a247d767a8a7313d5cdfbff2fc17fb2256f0eff0a576686cc0d56a8708ff6178e27bbbbf1453646ef84d18e210c5c70ac7d373f0afdb0d3e29bce3b281d9cc2a447585362ee590e9856eae820f674a5fb839705d68aff8d9d7bf9ed36a3c9a6daa0ad949a0209da870fb96be4aa8934e8872669a6262308452c96cad13fd979d48638ff3c9251657a1a14d25e7566cb747847ede54f8926df5b1117b0f5024a4d22a8e8bda74a35c60743f88905ce80cc932d813f8b886ff61f91f1dee1dca65ffcf55c6457821a96bd82a10aab1d4c11e31181c0a6ea652ff4bb3e4beff4b28a0880a4b9edac0b99c62e15f0db102b748398a078dc1ed8bdf477d5baa7e629ec203bfdd63138f9180d3a05007c03f98951cec6cd3498750440a33e0cbdcee50618b1f362493bd165ba085474c78cabae9ecc4f9ab21b6104e99368ee0428592a43cc0877c62ef6d9c929d327dddc6473ccba7433e678585711ce76994c7c4cf63e85157b7ae01abfabfe6fbd71ce69cf0f41c51e762421627cd64421a842569ba7c96888b2a05a3459bd945aa8cb40d6a8345fb2030c7e8689eee6c722309ec1bf4c787743eca3d1067829da3998b9911a220873d53bc5887239e1eda7311b0b3a1a58a0baa14ac65222eb69aeafac1fbc1804ea91198a3174812928ed94385b11a6fc2c656e15f0fc4aefd3502d526cec325e470d83a9ee782e3512459c166250666c192480b65100360c4bb2000f6a11379d8c499dca2448ae04373295d40542c83563c2130609fcb0b2e29617b3485d447c79c146ea425f50d0967f0711c5a60c74573dc12f00f39fadbbfc01e79824e6f5c31d470cc3f89812eb380b742aa7b2ca9c7a924e823827ee14637ab3755cef9dfd5cf4fe1a0c37613a9e037fb0b643cbd5012bc57d6936ce13269b2a7e39b288df29e3118d2c94250283164f41fe650a647adec72edc9ed30faa610276e7c9961aa62945af4a3361e9cead3042c734926cccce41096e8e34642449376b4109572e61f60617d80579b14ba9b45a7243e0a583435864d8b3aa80f5e7f543ad07f9f5f45884817a9a0da9144b33021e9b039e46ad740fc4662491fe4fb1267d9e4167109d3b4f4508278b58c371cd9dd94d741eb4036271c9f7053be78b99261d10c67e1d19b720a13cb6bf76959271e83491e5260298607cb641a6a037fa0f266d5ade0ff4adc08dd31304843c56cbdd4123ada284735282a3fc80f61e2c0fb8784ecef3eaa8a559f8db6f5637d9a6d121a1d81542e22edfaaa507cb6e0fc82476de6d9e58bb783d998b0f235408b61e5e61baa03d42ef42e1e42380a55d8061608aaed2124dbae0f5c5a80438907c02456185347c4c272c5fd0c101f5f5acbf4ce3caf2d466164b4d0ab67adbe5ae4b367eee32c0352328ed80c6114e123f0064e0e17299264f45d03a4ae3920e0bdf3c1f21c9ed22a11cbb33eac7110eacf5c04c41ec364fbb452cbd6821ddb7100ee0d756739c6fb028cf63fc4ad7e01f67f89ff547789bd4a45815b8a1627c91bdd2d9dd407805540daee1ec8fbbf3fd22e5abc97153fbcd13c24d74e1d4cd3a64c65bc886157b7a36108132420c3f20bad429de54506b64623f0da36622149fbdd5528e689b6fca8f2bb83a5163eab7b70676bdf989c8b7baa2dd329ff907c7a9c21040c8c3da14dee92099b486145b11e760b1acc987fee3581779d641cef5c53d54438a7beeef52917206392740ac8ab47b2504c3737ba78b4873e22db40d1942a4d63377afbd85954fdbba5c42b601d8d14143f59f31b1b86ec03e4a5711c4989223c799021a7f57a6e4e25c9fd94f0e67e0932ecdcdbd45838eab7dbaa03076f0f96b7134469d85e661b31fe888d50695f3790e9c262791354a5d5fb6a8308d341e04f10b32c5db0b63a6f4b178f989487748fc39a6795d6f3767c9928b4112c96e53924149a160d9d70bda0660b2b8dcba8442dad4999981e81479861d959462dacd1ecbef4bc531be98e7c4447c75a10c80c7b8561a062c3ec5ef67083546995936599c7fa549f932e202e359f600ac546e1a969b3b2db08e614d072fa0fcaa5dc810705e873456ea73086708f98623b7f12a85199dfaebfdd12966730b1837df990737388e0116154ab8a37daf6116a67c2d11e320d1d88a809a25b52d6b094932aee58c8f96f6475aa73018795d5293460f5a132b69175beea8b9f6383568b3c6495b35447b8f7f05197d2c9c3ad6d23174355f6fd5fff6d5b40c03fef387a613b2c87299d58c26dd7c6baff07ad022be2403b50d1cd5b2a4cdbfef1a46badf279ebe6a4e4531a0fcde4f98401b3f9048337dc28e6b53d325826032fa915b06ddab06d21e097ca205c057f23c4b68b0931b6ed302c20ddaee6f840856ff30deb8dbe2e670105e830f1daf6e7c4a06cdba6e3756171d5c9f0296451069b4c18284910a9cf84875c2e1c7f1b65fc0a996383df05c59122f75f1869a047d3866121372702143812b2e8223611b8871fc43a0702abac7fe204a910d31dd3d44e68860d80eda34b614a75493b4b9b38a21f3f7540791daa22eefd00eed9e8a7b3c017b291235c80ad46baf89d8e90216bf57ed61f13ec8ea987c097b7bef03b6dcb0179998fe9d17eadf0728329c01d4b0b303d8f3b226305160291fbc6b672f1c86192aa202e3b2d74da46350b959db6660085edd5c9e4faa66ea91c9f5c8f3aef0791648781204e7c49be4b63c92f50856c786e0e51cfc4279be2f7ccd331b707efa4e93bb066c49da182567e61d10f7aa08a705a5c0d1a9447c5a7e5f50584375e0e0ecc5e4e2d8ff8b42d7ef84a6c51138f3afd061d204fee7ed477645e38a89f6a5a6d02353e1f903bf169e4427350f6bcb0a8ee0772f42f7fbe49da45848b59742161da7ac070a27d66495c4e39ffe9e3304a3b58d92cac7a2016f58fbf332e749c753fec091fcb0700ec505837d8527d9bec383a5132cfa98491f478f0ace4bf041a3d8f9584fc4bf1e292e170e5d64e0c8cc6570eec45303edf829cad9d1de8c9a765700c662db50abaa70300435d7fb8525e3c71b069dcc0a857ea122fa189554f0c971bfa8ad9e08d77a3561aa9063e4530c19fef658d8a8694b353f08c1cd581c12129f384ac30e3c2f8706d54c72bebd46e4cf04fa59a9d5d12cbee8b13ff83a1f6695e265e8dae2b653b8f138bf940f024b760ce6340673fa7f8ca2f847fd58ef74e0a1d95d4d31308a1e3e2d0c675157212eefdcf69a0a4fac5b72c19056d8448d791db64291f959324b4b5e349b7dfef286c122d9b148bf96f8ca55ac03b2608346fdef1c0d97af9cba8d0cd5a4dfe8efde3da082d9bdb0a2b8a5ce5e3508b11e0645e1031739cdb569dd8f2a1cc6dded982bc6ca287306c3d277bcee0e87653dd5338b19c218e9d6a950c0afde18c4b23db4809d6efb4b81cb4ce8d2570029f69800b329c5d579f46a9e39073292e7e6c4a75252e2bc28693c809b7628a142c7874e0a73f6d9853641191829d8f470dfd6925c240a3c3c79a60b3e8101874bde2182aefd32c141bb37db622060f9c8799989f06a0017d233c2f82f113c412735ac12287b135b69c03b8486a2b6f13c95e0d90c3e591395cf418c3c6b21037f30521c13fc2429785955f96e02c3570248687c2b03d075ca8a600c10dc42db2c69a6052d51a07e3eac22235ae25c4431d2cef4f7e65961a71a160612f4e4e8987aed5a1b3a6610f28e58d7c2af6c0663e80db12408c896fb017ac4b250f688e86b4c6437abafa80b907eb5cd8d88d87b692b73b08dc018e878825529b5f0f1d28b0875cd53f53d843fe022924c907155b918d3da4a3c91e5aa2ec2198197846e0ce6779c2dae489c57565c7a36593112c862e27a4e8f37aeea7c3aa6f6f8680d755c54ecec1be36813a512342025aa4f3afef8dc293e8b6044c4140e2395eea6517583359668b47717f0408bfb257802b4b0fc95e1b410213a1bdb107e118852403ced94b7a1a0632818984eb216fc529288a679d0b4c34b4fab6cef1229e29847f244d7db21aed4b6b22574943bbddafc713ff644eacf76ac8e0c267fad9dc1d4e2e5f824379d03f8a9746ada1cc3cc04bf104ed079fa1fdf62e58e01d86c7f12071b615ec36c394872a407d7cd2c5f3e5c62eb46f863dc52010199e4fbc6c73f824fc1a728befc3891c1af0fb361b063031c7e5de27719e1efd496964dfd89235744a9fdbcbd742da77a78668411fcf09c20344085bec230fafdd607eb6745e85540f8616086e30065e1a0688fa18862d8c4cb582d3989e5363ca9c7ed0a3d89b918507743d7c0d2c679b6cd7b516e838fc9c51931e13a7d197b1308a41311f1217260cc2011daa0c47777e28cf866560ad9e9aaf45c6233004dabcaa4f6d3f529245ca704e62b6d8001490c9573e4e35361c064a655be9c3080a51309f05f083210164bc1802386824b7b0ef6de3f30229035211876840fa39bfad837140f2b830c96aaf1de8591f16ead54c5e1954fe10a48354f7af90f7d89af9750f54df2b0975256d8a2c04e3fc86e23180074e838071a5c010f08fd744c8648083eb0539c02b80f4499e97490dd481669a4005e4d092ed67e553d4c2e0b04281e04a3a35f45505efe19cac85edcfb5361868f876cead632d7124b0eac75f0b6520c3c3102fc02302fc0240eea8c8291a1aec361ccabbe7906e3cfc6b95a873bb812f89f52b89b92ca809a987de371c323178a06938d3d803033c0585d63978361272152f1f402d301d481c0ecc22595eb263aac28eb8cbe25f360501011243ac5e9821efcf5f3098449d1b47a00784eb0c6d90684075335c45e6ba151ef15107073a00061043746c5a79b91b1da87ddee16604e06c8fba48ab90efb442ff7ea9a488f640f5c45f60e1833726c8aa543dcc58287381b29a8562c12e18051b2c0e2f6f3637bb74489dd6e86c5115891a7e503c3c59f7f5092efed02ad4e065340ce4505811b90a969d66c463d8c0b9685f7f2126a085b03621ec0a437e8f8dbe1b49adc6b7f3480979c1c21692cbe3032d7c73016ead5687af397bd310d97bb3f4a8b513a532201b354d432e31a23429fb02862c2cd620b74d263144c349cda20bed6ed6a993fa4f871ad3493f5d3a432c69bdb59d1a0a5257492265e85fa191ae2be83144fc550ebddb4b68464b25aaf4a096d0327a4f1ec972c86b9291ffafeadeede6943e16d6a9a499e61b07e348981b218d393e7247cee0881ac0addb9c1aa7e95748f01994f2dcb1f1ab4bfab96804e0f5634559156e11d9e00536bcc4130bf8a7d865533c21e00232c9072489026c9e113ea1599e376869f17034df3b207aa2c156f6e66c226d1489ee83cb791851e03a03315bd6f32698a820d83d5c44a1f242e561bacfb4a09fc860c3abf95012de439ef909964a98c247dd877f7e2d51dd276278a3bd09b664dde7460b32f7433fd9a7d695fe6c79dd07adeb77512d0dbb4fd89c16703ff2766a13dcc33e09a953491486a903e9c2deea7661d3b2fba05cbfcf7e69bf8f8572dad2ecbcdf475d0e0afafb6002fbfb2c6964a3040362e4dfc788f7ef6311dc64b869f405cacf0b119f47deea79e7e4356cb7f02c61e52fb940d47c5dc3d569a6f6911657c196e3a0315a42dc1fea5b0774797cca25752de941d1925bdf6597ed87fe336b9e2339a7828a95eee13a60170c352f7ff412d73facdd830bce8395e02c2700c05376a7bb070dc6560274090c6611812c1803c9601ab879d42540a01330388a6a7a60a7c3aa5810f27680643eb092922b8d441f183f01a21dd0c78211a215c406d1dada808a1a709b0c7695cc3018de832aac00edc7f34d0d48d89f609b037660965c1e880db2036b7e7f21296d2cdd1d8e39c35a15aa1d7c9ca044d1aba983f2ba6a5d0b98b49826d4b44772b0d4930c451c3e0339f11940a93e0ba662bb4f1f7e5bd86993c8a31f3d65ad8d914c543850d21788c84b8cfbcf75da8585d302f643ec41694ca18a4f1c1bde2a1e7fbfa011f1a78dad18ee8494fd66b9e21ae566eeb7a6c36ce941800b2b7e3ca668a7e13961e0675b60087f22545678b21f56559e30df8969f76a7c0cc4597223e67ee4f90843edbc0ec38fa80827be778b6facf96e5b1006f99289c15ef9ee9bb59796d985da59d030c774a786ca840f2b108dd8f33d0d746048d90523716a278ce515ada04b77a2bc2797010e434d9e0166914c612507c468f11b42b8f5e367ca717764f39264b157d079df68ba30abd0c7c295e92ef01aa1a07b186e50a4f2b84bdfb3413739f205a0adb75db8683529891d39258a8f8840d2adfd6bf60f6f9bf15dfc1b2e81bf616477af072615fb6cb8a626cc70f074a8c7477fb8bb93f04ed77981c604edf13832b1fc169345bbd388278f3dd0a2701c613951834a0588426061f170e8e9cc08599c422912d1089ab9f1227ccb9fd3e751a3b567ec856662a33f4e5109293b6c64eb4ba1ddd9a037ca538ade68f05a180a4811fe0b594ebcff63a52d51bba3edb64add672ada420dea2eb4fdb96a77bca7f21ba0bc0da13a035ffdd259b77618931662cb4a5659810a15de083a665b2826bf3b70a443e2b280c1706bad6afb44426763e3e606415418880d3e30d8bce3e5b042be3c7eedee3959102c458af820d8964f378cc9aec8a69c9c55eed3ec68016a0f9b2605698e13cca6601ccadf94232ab025f2d276cdf078f461434d7687e9ff583a1f8792dd571e90477669b877c4e0cd7bd5d1c018a5986d5de380ce48770cb4e594077a4d3c9952d69311a9bafa40ea0811575cb7f52c4659a7c275eaa48c36c175a2914ac23eaa033f284316a52cda4df7c889e3782c672c8b1945982842fff2bde15b4940c46377ee9504948342459c548da9d452ec500dc2fa271014e64a7dc48eb3efd4ca256c271306409519d61dbc59700282dbec0a00339cbbb4638a9675d26d55170a127f86e7113fac6721ac707ab3e2a81e80f225656d27c47bbe24f2fca11047c4d24085241506a64f720388650183132af3dc075a904cc83c02de47d950ea9a99c812caed8c36dab49fe7f31ca8ded6d666c8ee27a442525b796d288f00f5cc2bf69416e6c4e314ab0c69998c588ff92450349c9114da04a3ccedb4e09452d5310af9e8445e4ce0c35464037e149be170180b720916cdb6b548c40cddd16c5029c57acf9c589b4f9743f76e534cc583c1dcc25f7557943a788d01d3ffa51892317650f3a764bb6731d138a0a50ddeb6e0c37386bf20e8370fc61b4830066c928c0f566618963a809bc008379edf7af0347edcbb3399e8e2a28c756820a79fc58932de26c8a1ced81dc45de1a0ae8fd7ef9f8091522940013405435f98b19e965b242774f6d944e223205ff0473c5a36439781794860aac452fea4797cb980677a0405a391b2d549071946f057113bdf18255ffe44b66b5f8a4163cb5eb216a9a8cfb46033e3f91ad1b4e22bc24361366d06be230e7c63cbd4a88f0ade100111a6e61485234ff13c9027013ed5a09752f4e2901e38c1906a03d62da411d62af3438b6bf2d11c8e0175b2a7057bfcd250a7a83d07ffe314be05f65032be08780020a7e6a7a97c6312a14c5a37449a5466bc756240b9540487df04abb29a44ce3266b45b4ae498513dfd676ac82ef407ed3a3f1b0eeb80916344c2c89121464e4126d6bf44647cf2fd651bd1a2d79d48bb2dd8464f0a27fe86493034a4468e98169d689cc1c91afb5caad114016bbd7c4a73f64326a8fcbe918f86f3306994ed4d1c46e646bc8b1e455e72ef0c50879507a9a9a1f825c2cd53514e45c46239081ddb9aef19865b3578db317c057b2a047e7ba4af6900de8f1b0d2b6dd5f6d31c6674af2c2666e1af31b6803b1ee85006fbcf7bb121223cb1703be727ddca8ed3e1bc5a4aef4f9b9763485f4e7810847d842d8227d0a824c3169339e52965580c16aef4824bc6dc79d13aa6d54b1c5b7e34b190eba40701618d289f4beceaedefd6057c84554f825a48b0ea26317ef74c9b2d29d4302c03384fd75ed9ca98a91bdac5360e651ec29ab4cc882bee815f5fa3a92234fba59ecdcb59f4a30a6f562ec3414a2bbcf1f7bf81c24cb0b9c21b501362c3358714f2c1ee2a4764096f8a6ac610f54485861b858989808508a44f8bf4c7d9c6a5b1864eb4a60a802da723e21a21895b83f2fdcc926d5db5111e40c0e97bf89fd9b3dfc3d24212bb0384dfde45e240e4f2952de2230ce025b433e3ebf2dbe0593878a2ed24a0afdb35c1ca925262618a880c9900c9b3ba6f1e88740773a6be08ae6863c71f78d11cfe6ef772bd78c117773b295f20816bdf16817ee75bf58c05ebd596a22a8eca0117a45e94ea767784294d29fea598db543726a70c7553dd68b8e96c29791acf850abf506a40198c5d4aa7803e26746e6b7fd3e73ba08e6f04a523bdb5c372441df344244e48a8d8e8f31e135f38f97e2989867e5f69a3f2fcda52977d6f496fbbe432f8a9cf4d89a6fb7c8ba150bcc827fa65f933e2d6239ae107c6bed96cff30440a55ebc11008809b1b7e5d3709c77b0c56051103ca1a7b91e627f59164a80bf663db8b4e6dede7ce132583ff2eef5dd74ab80719536783010c3e20a6d5c26a653e7c21e9664c70fe5dbf701355d0ca60f35d87e849d7e8637964a6f23a427e7db3df9bd1ca3ac485936e410c51189a7fb21eb83dbcca2bd945f5ac4408cf300631c0a9edc131d39c46ff50f8e43c9f589984b19a4c773eaaf1e998d24c395fd44e63bfa4eca365e477061565f0f61c388d487e2a066a9818e6da4573dc50a0a3b4e427b3cc203b220a7f88f36668a92034730888428d5947e36d5ad00f4bcd5b2e54129d21ab56f8193c4f7a2f260490123220d17a9955504c5a61c5176d96d5bc6c8e3928de403f73509a6593eeb1ee439709783cd7b60f4acd796ef44329af0200be326988b2b36a36b46347aea223add9facaaa412a3262054e55b4ee5a2b4a661835f6a668815431e97c3e934f8a16d2c3e3dac674255d67417050f24822975a92764e4d576d77af65fb3f938d974ede6028bf0588c6e5eab9298270822b8ee8319756c475c75802a18d40a9a058f15f6f5e44720905989ca4b7f7ae994742b216a75905c874b29d11a16f165a1a23ce4c705660434542ff9069ea99d3decaccd94d7a473c8f4c9314915222acef7fba7ca9478ee05a92705c7fe66225873df521134d13041cd584b3e239c5b49a6fc98649375985abcb4af4a37661738f43bf6faea34186116575d9280a006422fccb704643b588239314612146dd3c32427587202b189dca25b0a21b6f17d664f92bec93540d145116929c301e24e7654b79638bef5ae488c50fd51b636cb1062577e62bd95dd2066828b9cbfebb959eae4261f24ead63750f699b9ad99a636feb770c08b31d8f33181e42ab04166f2d5fd558665fe31047b70db13ac767150503c5fd2c65fcd5978f446f27420a494629034258fe534a8710e397be88063a81cd51d1aa99d84244789c217e8adbe6b3fe5b35db1d12575553881ac1835a2c1941ea7084d5e7d85e5e21fbd0d1ddd1103e688d403bf2bdcd9f039b5490ce31d2c619cbcc553eb19371960dd98f907bfd925519a5bf7c8e3594df903960b10b2bda8bae9f3092279c586efeae18ad0be769ba94e4b007ad8c64bcbe2b0690903112269dfb30d43b98063d629363c04fddfae32aef20a88a3e72bbd646bf1e6b35613b49a4d6ab7c93dd65612026ed1431930af700db55a801baed1ac5cdeebf1a8ddcda400d56f17ea855608940f6af998bb636a29c691b32b020d2e8598240fd01567eb2d6d226a24c663587f0c3a84c58e34269762f648cad4fe5ea1a16b0f7453dc0d0d87637185c636d905f29e32d6387bfa0249199fcb417faca51f1e210e4a6f5316c8b566e1b64746b65a0e1b66d3e8ec95be5d14681220f29f8208906ca4747cfcab94cd4814b265fc40ff7ef4415bdedf9df71824e18ac7b43c5fba40d0628ae894d42616d5add96fb4f85a1cf7aff19827270356b6d27715d8d0d0bb3841adb3b807178454293400390041be46736506047d51a41b47af089eb9f78794fbd84612c86587540476824f624ae26519bf37206a0e1e930b78d1e2c623cad47da01504bee42f91fdd43212c4847d28aaf11fa18e8320b8e95d68e4b646edf046734341108250b8c26fc496fb5cf04045f3b370ef83ebdf9841390de5322e3dc829763ee1f43fa9dd68653820c1887d3ee17cc624eceb8c3b19fc1beb81745a326498abd835d70e6f8a3222ee07ed147eea5a45880c3daef22d915b2121fa920fafb4298de605698f6a87b8119f702aeee0272cd984615cca97685e4390586c670f2328881ba63ca33014b0117559167c0324a10874065fda81d3a93b6306a74aa280b6989097117038651ee77628691efda112286afa0388b4fc08b708068b92eb12e20fe780e49b04b4b34b315122303ea967c1fd07b2fd69e46175a26e7055a2ac3948e30ef3a18b88e0ab27206c5427f7a4648f75710267d9cb3806606ccfe6f5b67a2bc3514099d74ab0081b830a8e1950df6fcd9253fa9d72285061067ed37c2caf21ef93b892fd37723f763833874265a3e45ce64a3928d0628e9705bb472db6744dea390d1329b1691b5dd0ed9fd10a467dc5bb5fa98116edbe5e550fb1f7b8578d98374bc33dd498c1a8b240e16b30db6572c6f32ff593ecaaae95ef1ac935dfb959830dc832995e8aaf6fb8c332f52636cd32f6229666c3bfa4c153b72ceb4abd69784b6efa16984e803988759584a7cc1482db4b99f81005283791471a14cb2d6e1b59794cc7fb995a3c0697f2648b325f34f9864b91f477fc15e9f60997ac51d96f64fa744fc1cfb5c8c7bf43e3190096589826edb5728c7c85c064b511a1a3a72f9cecdbcb89cfac3036d02b23622de72b4c6c49033d6e1aede049c85d5ddb331225895a58f6f7d02833f204c186dea59c872fea2fed0a8e1191964eb759ca25aeb146d4fc2c8a5f5aba42c8121744ae36c1bbb85412b34699b0863b0e98de08670b2cb02a6131e20436872c99e6795744b275daafc84d5d332b2732fb1aa9705543179bab336d30692ff1ea4ad33d150210af100eda0e354f768237370c8cbde7588949e38594803cba7187977954ed8682c56ea2c1f91ead99e91c271baf5b6347ebfd032f90b5158a578b4431dbb56d277179f769f2db47747be28e2f7112a12e2abdd090fb017c2d0bb9865bbcb5dfb6b9dd5221112db7a47b5805bd376ea1f66fd8e78118eb9a8e84ad071f4c12f0c01b2e396d05c1f0eab764077bffd0a8a416ad2f684286aa0d24f38f7b7c3578b5818bdeb972c9482bf82671faa455a06af0872889497ba82954e14b7db6f0ae46cd26102d3ad9174077c28bfe0d7c4f1b22e9e0a057c59220c62cd8cea5820af678d7d5c810a2f50bb991fe3d47f62d53778bc8000dca841e46f622a7ca4600bbfdb13176014334126ec3002238231d6c20eafe48f63b89efb290d8fa186ddefec2f8c079c7ec907c979c8be874c957ed1c270107e897d402632ac98f452bc78f8f30e2b598761e3a983bcb6d15a2ba8ebb5c8d0cf176857fea6f51a1d2b95369a17183a82227f5313a52d127e0c40461528b9c7a5b2263c5481e62ed7611d86a2830285c9762fea246524dc89481e88489aaf76f16a97008cde79130aa4d24552599eb02cd3a594e3140f033d3a5f77d50e0ce1e6cb5f5221c1bc7d3572f9a3a924e805b9b8ff18bec823043792e7cb15266b79c0f89bcab5194746b7db9cd5c3e3d745f838c93b8587189dc3c54fa63869d3456dd0cb1e44ca9a39a4239bff160412570a480e033937048c3ebe7d3be05eb42e118fa5989ed5230336f15b0e5cd8ae6f59e0fc914be3aecad3bec3ff8f7111dd33336cb24145190d9615a33f3fe608c231a64b7cdab1c409faae29e7491418d0586abf02c5a7a1b80585a912ab1485953f0ba39baca98d8841b84074ada22db403e2d71c6d21321e8688465b4e53252e048593049c59d639ac7cbb198867d99214483781599393996086cc0097b74243b24e103f59273725d3520b824a93d558c924d475122d1dc5160a46e803f9b1f193da917e1fb394647e587b07c2645b63975541b120b37ce9c3a86ec59e8f7c7037208126e830360caa5ed8a7ffe4034250cf0b95549ecba0f3af9145b5508efbc2e6c0c59a6d90272dc0c2686cac21c695d2de8656ec63dbc3844d5bf33f4cd4f458b24540f5afe8dd3bf9c85e71a640c26d043814f56c6fa4d252fd43b466832b35dcb5e2ef2106502cfd48afbcd9c8e89d5fe1a61a82ac8c33ef06214b9e401ade16d5c64632d425b8cd17631de955a777d617de99f61f9e9af87785124ae6adff97eb66dda1681e8b848e4be82abe6703c9b5f1bf3fbc660eb421c0eea6d6039760a406f8481bc63112b9a08557a36d73f8297edf4d9d20d704c737bdf281f962aaff7bdb64e2bd05150f9144080663200b9560edb76d1ed21827c48a97dcc473aada669e4c12ce48433eaf70f7bbe0507220a74e00c619c47181116d5827de46ea9933b0ac0e9bfa8e3b2df1c115d770a0931b02d3160cb7edb11deb2ad4e84b59a6aa5354d9db6383d61be055c17ca30cdf19be421d045b8ebe4670d70ad261b96a2a5c20841b37d200d5e396b98b01aa2ed2b3c2259ed039cdc76f851f61588c18adf265102361c1a88bf7294b6e06a8353e9e5b24148a05b3daac7b38e51cfd3e5c05cfd13368ad770b725bf0e3de68286ec4da17282ae7edc08ae85224de1d91162312f904f9415c6af15f5e496f1f0770e132139fb69678cbf309d1b3ce8d69d68873880986b69f5468c1eff43b98fc1df090e2fc481bacc9bbd5a4bd8d629d62530e0033ec1aeac371e3d7b0eec8853fdda9481193bd430d3682b1455df66a05b7efa0e8e2080fbff95446298e29b49380b1c525de77dbf20bf2119f18f200497414d1051f43ca775c09dba70df887092659b907f91290d82f5ebd244f232ba92a4b2e5d3c0529c56f607cfeb965c960be99e24d8d6a7eb58d582b3f383fe22fb2ca5d3c54f205194f76150ac00cb21f91d16d11e116504c257f9cbd73b0651d3101802bc6505ac3df04616e2a370db5a0b328000c788fc01f78dc5253637fc299fef4dfd8bd34eb9121a2cc7492c8427f7a14320e56684ec1c033f97d4fb6e52981bbb38c6252dcf4bb33293c67928548a6b6715acbf3eba06e8cecec9e00589da141842415b4dbc578b75a2492f12f9aadc175e963bc5b35618ab32c09fb1ceddc0c5a37ba9222bf2bb30960e009b100ca84217f7e84045394d661d0200f00bcff43fd12b9b267effbd28de1ff67fd12140189d0634ac10d571df624f93da4c0217c357be93fadafed3e3b2fdd5f8d7d1e4ad58687163c287a75e5f7bd0d196d044a5d0c775f7e93d85c4ba775fb3b7a9ce143c72ad7f33adc7e3c2645c889ad30939e8a84db846a4f432aed940dee129725abad28dfa808f3539bdca577c065a171ce8eb7e7320b9655de960d28fd7cdb8b4a840b83294d0ec18dae307a73be6f61870f2e852479273353cc7071d78e1da0729e02ea384d03f6ec40e12fbb6c343aed924687db3cbe6e25ceb8066d7213fa57cdf13840b0bd54b40af3400ba6efd6efe452e8496770dddfadecd48ec1496ec3be98af7e96fa5c7ea76d294ae5af2b779f08ac2a402c155406295d8fc9e73c4ef5d44bf5b177a73c40b82c0a9ae8066fa2af10a7ffbac3aff8f243fafe9de3aa4f2b1ab4c5d383938952a619e5b766c05349246345bfc1edf51b9ff1014b9fa50d7664faeb170cd010f3538061589b3cc1418f1898a16c257c30521ad8fde063858479d16fb24cfe03adc1d06096876a5981025ede8f8ab34cd2b5a9c37a5de4a315fad597af6c3e2e888bc1b0ed606c1278763a51277412d64880bdc676b63e9a11c46acea144b2490297e444e54695d1fdaab18134219e31300d7e45c82fb904e36030d92b21a483919f57e5ab24155f9426eda73d9b9b9704b99ac7c860ee5af57ae1dc32af5501b6f22baad3f16c8d299dcc12716eff329b4e3aad5a7c470cf8b449caa987466c146912e622d591a82277913a32c69da55d07216f396c65a219f5eea2f16b0868f5ca5b92e21698a48eef12641c733e94eea0ee1a7a60123a971384202e91b0f2459993e87572059fac49f27eec0a36e4b9629b5dd28f75aea7c8267a9d18fcbe5cdee17af06e2f377caf0a4697713f586c6701931afaa3e19f5ada45215ad7336301ffb28af42577b2220c5c8e12cd72163453e48924e0c8ef84322622b1a7f0c8f3901d1eb250343453e4e6dae3ef0bca5d7f03e3ed0f014abbe4c834d0d9fcc760b6ec3a0a3cb4f1e68a4ca6ad1210493b62225cbbbe08c4842702f56124284e9634372a208f5fb8f5878bad02603a61fb24b7de1720241a0a06e93e1b6779dcd143680aec9a273396dcd17073d8c08654fffeb6099b1e37b0055af2b63d5a25e9e2b7c74ddf31d91162da14e833c43d74d68cec9a4673ad26d502d374259e982913e7b841525f32331b7f120d85d4a4150c305e318d17e08602a6e69aa4485bfda094cbe695f15bc6b3274759fd055e8e96056a7e8ed701d50f839a92ec78716f59d80454a4ff8348f9cf6c2ae2a0c664639e49c8fe08f8e6325d87b5cc16ae86feaae9e6b2475415b30f6f79c2085b2f20aa06c9e52efb91b1f9f464a17515f8cbcca8f4b7ca92195218b0cff4569508b4828d3432eaeda4e364c76349d20e3c70e79d21455e0613dfcb1fd36269c9bce81d8dfe3839ab4e24dc985c12ca366c3866d22dc142643c3f379ab86225faaec0019065ed591a94d52da43fc1c90a6627b833896ae7f50b93924d6adf40bcb0dda6f2489e2d92839c47f830bcecd0982ac188c1a541c03e7b50d9736405c59604e046d13eb76251a2a5e3d6e0c2bfe4e8886746d80412a27b66f5dd04a2fba023dc783916a7b5352a870bd77213c906ca341722cd4cd5462bc4cfe3fa4b49e4a71c7121b22b13e7379b9f0c2cca0ec4bccfd0cf332c5c5248564622976e75aa49b06daf8cf02781200ad0eeb3dea99b0e11016d9aa6a84877c9a98e3a1f0a510f6aae76a161ce788b5cd3f9095b04e5de2d28e16664cef2aa38e47bffcf9e09066e060bc9ffac2ec646ac504e84a00e64204b02cd1445e47a50eae570aa09d549b55d68adf6701c22e2efcf75be7d50a3f5c407d9aa86e3721118f1b5a6e82b161c96219df69d56560ce0e1cc6cff025742eaf40f1dedad154e287dfb30d04267f5cdd08ca745fed814449939c6b06f7f889edbf23ad65c222a1eb3a9c292fef84c4044a9d7ce8eb1d4a9d5fdd10ad623190f5ba0f3f8a46507c0ef03fc8e7f5244d9abd3f92209b2d654e5ec627c7fb012930a5b23e3f6e545df81e4d913f0fb9f628fa4b8e2b1cd43be4ff98d2e712586084fb53467a3b5680987f2aff0f5ac7bbad1a9a75b7dab7ae3867b239e8c098633a9f2fcc633198533ad353f83a415fe84062e40d4055022b0f701b4aa098da1b46ef49e61fa1051921064b49fb456f4daac22b3c5398687e865add40aa3f8be89786a3d0720bf8f5c89d7382fa61b407bb8d2767116de7e03c174d18f34971cbace6c9c829f441cc2f0a5c7e26c25a05c35553597951b09a51a17dac0d95baa29f79842d22277e1db705bd4b8256894bc86399a794b2840a9a1b11437bec295327fc815eabca86bb9f7fc3219b5069258a40a3f82130a386631f66be64688dabc7f5d3e01d1654a9a3c8c746d090009a52356aec49c98f3bc8b0265838acdd4dffacac25e3e49a171b9ab9a16e0b702e013a813bbc7f2ecb54e888121808f902c1c4ba19d5f1b8f21e111cce3a3c608eb0cc128301cd1c8052e8a87e43be5bd4fd9b108297a6d650a5fe7342f58814a48c66673228a2c3433405f495a5492fe0fbc0c801c390da9a1111cc2cc818b10d0d73ff53538c5fd37680b40e89353bea356f36f4b4c6f73e0448ede6ed6833436605e02532ebfe82b847c0c9b9a712e53a1d14de19a47e54c42570c2996a36b21a68fe4eeed87c994ee0608b2d7b485dfa0bee466bb42e7f1f925e2f7227f23f5c3182060213ab67021d49767744d29a8016bf42214f4b4326dc6b2169369258659775a33b6130545427f38ea4bc9b2f614350d9564764114c4aea7d945d3c72dcac3394b8bd9b733e131a89d234d995c9111076cd5f12d74fe18589071a3e7f6c8d8f358d322869fba8ea58f1fb26a3c67c28c83d0936e59935ef8c192345e0cc3d76caf56f6b9b918417ece96f0a0593d50afb3c8af42a7e9cb68135687776ce43b8b747ae7dcac3421231426930d6dc332d12691ac56b9abb2439ab9f87aa0e6da04a4a307da9ea3ee4e143a94561be00bb3fe3b5cfcb20b1d77aaa8cc224c18c98dd0afbec197488bc24186aca831e0e534a14893c615dcbec27fdf9eaf2e707b6e39a7687b8bb76fdd6663e719c4f9e62cb5e1f13725a755b3414e5c94d02f03e258525a5a3efb2839250e73217c7cf61f6345c981932e20cd0160b18f41711d3abdec12d1cad038de886fa34522a446433ea2a48df1e7d23e92d772cf65ff5656ab20d374e12b4e872d14bd7f82daa42a4f539126c8db981a312a2329c92d823eefb49da09dee00741433baaf3b0790f7ed1b500b089cefa2fd319d9f9241cd79eb9c995f54fa99c9470897eb6442cdd7b322af12fbc7b3e0b557445c5911eee7fc25a28a6ada9053000fd95b9a074f54fa18734b741e6c4b42ff85791c9ea6c35a9b4524846fe7a1519e32a44389460d5811b82a30395bb64dab37528fe617e572dbae79e836e77dad7c8fa51fa93cf0945718d14c68624db040065085417010300bd9ef5588777e0e21bb3dc6088850619f3575eed959cbb2953495c56b82b885ba56304ad675592cae74a03f3d95077ff47d47817cd15e1ee33aaaa91887ed21e8d06d32aa74ba1ddca36a52df40a0ecbd847bd61bda37425d39cc5ce50b0f1e2c9785e250f7ac46c079cf4e719936c908bd93e9ef9222d5b3fe5ba2bbf01b81539350951eb4feef5bf1079c449e033abb273c463e98bbb2c2e2f0f266b3b24ba7a65ec7b658b17e52d16d7644e9a29f834eb87b62c489d2155d4937f42fd9e04ec69c060b53a9da100310c846602548d023d7f1c6a73fae010c03f0bab55be9a38676311c476c84976194100def1d5298c2049145d694909487f2afa21b8a43b160c8ee8795b4742b92e24537897d878a95b89339adf67e861a6da882d6c0fc87f4fb4fe5817cb061ce831b521a4822b0a1c48dd8869ffa9f4a8041f7f66c541e9e672e96ac3646f291d574b63a855444765b40790d92507786f3d53a2d231ea95f562558cd60f394427845f7241b727704636dc4b2c3ce4495d0f2cc29a940c4289fec3822bf75b60e282a7491bf9520d6e2f4d29a298c00d0040eb638a1b1e7141f3d11e84bba09707dc84d4449ddd9b426a34d0b40b2f0a21a94e6c3911b1e624c737acb3d1b1bcdcdaaec62260e6bab18c0efa91a90979c49b7e8b841052a07eaa0072c41e587a5aa94a5c2da95216f74b9041adbfe9dd9b0414bd0ec8a42ccaa10edfa18001b57637ce24b4123b3f6c10d13de741a46cf1431dbce4ab9c6c8627a4d906f2661b2b88364e3cd51b707a90c99e8f42515cbbd6371fe9a1f0637f336ad220ee519bf168035b9cc7a0821707ce2efa01731c45e03e66e3e2a9ce0ab2a6363911b95542e837b0d0445b2ea5c3e50ec801f24cbf227afd15701fa1bc8aeb45e41a65473fcc1ac5f3c176fa27ebf62779a78ce2d35b7ca99398bc9c4da01568d690a039f5226b194c7e9c3ce14532459aa38949f378131a7a1f02c9b1858545de4a30f95af479df2e9128180f05e1e21e24b0d7ae4298e7e66dcf58ef548286ac37ea78c15c40d66c3ed494c11fb7de356721fcd1a57b3f73d2201677771d4e07aa8123a744b9a130a11a013f8b007d8d2ea334248c2cce4a5a7bb70a062e346459e199d6d38f12af60c3142588891b4a0b8775c209fe755c5099dfbffb28cada9804ae35f9cc849f451eee3f5a9a09b076718c3f776b76d93f8fbf351843292e4a2daebdb7d9d4d023cc776792e2d11ff2fdb83ff2142e434d007b329cc5e3cadee2ecdbe862c813ecef74c6b4e9a27da7fce1910dc46eeada6723a5561b7f018c8d30349f37971389e1bbf707cb1f0a3338ba30dc8aab32470c3f68b757c44edf6eb8470636513ccf2393af1dcac4727222bc4df927e30582a75b4011ad5ac6640d2fbc2aa3e3f34a1c880529d6f3e187b144982d0ebabd2b96b6db8565a739f72098363ec164cdfa9ee5b6fe171c71043422e76cbcc1d038cfa46edd037dcad06d41eb7107a477c8005f6fdacbaee134543f325422a22758d1bb572cbeb69568b0953fba84f401257f56440e3195f72aeb9aaa00a5925aa0b4486986ceac94f2f4adc196ccc4d13670603c3175b0259c451e827f66230adac57049fbbcad496838c66e3d591eeb61a19fc5b0b9b3dcab6bd1f41299596fa368f9791d6efdfc40614095ed7eba8b05ca6966ebbcffef9b2ad08993e609c5b4960bf4aea11aef9e845f6886436c180066c1cdf87b470b8eb959e08455e2a9b514c9edc76c07b80512ec0bf12dea0b91b060fd229bacefc3f13d34b448314cc0b6c39e0dd88241087243b0d4448534ba43c6ec61a488a8da392f41f5ac15bc0b02d5ab969308a57f25eb920689d4a7911d9959c14949c9d6539a95c536d5930d17eb33a21f1d4f18edca97100f5aa0c6d8e997714c75814b5f64f942004f76da8f65ac3181d93db0f653189ac644f9418950794522020c5c76604142b34dc1ec487cfdc18749e4b67eaee1486fe2486858018166d2838eb1f258626a2efe824933c7d0add723202334331d5e62d1efcd1692c86fee7c14bb6d1171ef396063ac0ae662910b3d9ac67002fb5a68819a54002064b0bae656d15392a04d71a0a1b37b2da898fdf4a139095a3731835a7402d4ab1f0b82b202030af50013dbdbd209f7a80c83f9aa42a5c44a2d2a7c80663124d8c1dfa72164c1af30a9e41faa3ba6b661279f3683cb7b56b1a1021467231a46f06b2280a4057ac07f24a9e36d7e346facceead2747dd41942d88c523333d94c5f00d50e29111ed99c831918e961b9f21b2205a0a289e8afddc33b5534c7b658153ef9e2c62d1990de45a9824429a0d8cd9533ef0c21ade8cbe18a16e563573d7b406d89255abbec0899f56dc437112b63f0239943b55239206c5d6d19cd305d4c13c776bc0c6a85f70ad451d664333b93f9786546258e281a0ac8d4344e3cf9ea5f96e8018e8a8be8a6f045bb81abd3277c05741154ef3c0c38600c1e1032df6ab64575fef90e047aeb770e65e2aa8946dc81e1573f5d39d368accb58bf9e72192ca7951bee85a7e187c138333a7707f6210013321f4b2e69fd35d335239120bed1584cca2d8a7833f1e67d0c04c361203a3c9d4fd50ade878bce9f1f226c58897becd6e20857121358a540e67a22d0ab321e32c8fa96a3cb57e7e88d949bff4f86e3ffe65c847b9afe0ea8be07acb38ea58a765c66d7bd7f0a456ec03353755ca5e44fa68439f8dcb0433a9313cd63acfd940249fba8a26c540089061614be275ad95106ee010f247210ee9283e43c31bb1e4f895771893151f76b3c3d6e484fcfba62575313edca5018a47614b5730ce90ab03e8daa952af34cbe14dd05a35eead9614c1fa5442595242e88cf86ae3e24a08848f83f60221c496ca9c9fce2f027476a11e62a8bdd1493ebeac6e3caa9cc061768c9ed0f27474b96d2cb46962654a29c924656f04a604b2043070248450a8db63072abac2d4428a424dd69f0d50743193079a3b64645b6b152905b22814fb9c3bd9c11aebadf196ce66effd8ef6af4d71b77bc9ead44ea6e46a58b4a436c7daf72caa7d6d428a681959515b24219496c1449d17d2921aa1aada4bd52c71a6554754948bde6478fc449dd4608d62d98f578dbbd4826666eded449aa5f4402929cbbbe00b3f87fc7540180e89b61ad432a600e50a3574505f511dea172f3a45f34139f4a9f711e4e4aa26ac49571233156ca65c7aa658cac2567cbcf4f9b5017e02834a255d6e6e9f93798d3b4ab16a5ffd9f46f24d077e93269304f665e3c57c19717af193b4f40395aa3deddb23602421e115c064c79ea842b0555e84bb42cdc8237406e3fcff5ff85d8be8afb07017606f400c8ed90a173f4954b398b6250fd346ae2b7a9de1d1274e0f6efa378e06044e2b394645c6044376a2678b03d512b59af028d6d2cc9cdf7a9ee93499feffd39f9e5f0feaeefc6958a51b7378e6cc16e8a5642c19f570a2ec1053e49e224ce85977596a40aa3fbd014248efbd6b04b7910c9d9f36c7bbdc1c748c9332b7123d2103b70337b534d7169dd64957865e3ad292013e7a652eaf7cc1f3e6e07454dbb4a3d0320ec2d7987d4610c5ec79108488976eccf1d6bd073de0ff43965530cff28b2c6b7c80a6e539055906f10a7ba7e3f71d017edfde5f0f0ea7d0e3f0d21c4a806b78effac2fb6200ee5de010f7de8cf7dd34fc727ac3256c8d992406d169ffbe1c29d4311d0b7b062c7c7f1590e30d9ff4de9de59c8ee18d8e98dedb0415ea983e41ac316b94c017de10761f9be11abe208198bf317fdff7d5e07ba4f7dee3384661d73b067be3ce79e73beeeabc03a63b3def0dde691f07ee0deeab39077b044e076720f77df338deb7b3af63d39dee1d721d732efb669fdd19b0e997eeed98de257870d80530fc34c3169ce61dd77104deb75ac3495bde82e9dee90d6f0db2de113add01d33c7ecd3476b4a7ff87e9bd9365d9d3b08733b8ccdcc1e1bee1ba9f5cde70a5d7fb0fc39cc3300c73f8c37feffdf7de7beffdc61696385cf43ffe70a16363ceb890f1c628f820d3f22fc3a7d111e4f59d870edaffdfe50f356f731cafce390fdafdc04be376ce356411427ca839ef80a2ae4661d370fdfe4cc8d0ff0af886bce3f548f8c042debdbd77bc5060ed35e60d20f3cc65df078c1e6b8ffc81eba11e18cf99d324c43e1e42cd3fa879006a3e63bc204e00be2084d9092f8841043d04bb41103a68832184e021eab6ae8b15ee75809b3bf06547c7a9634ef365273ead80b3ecf0430f75d7e01ca875f020def42fa0ee08a83bc7cf87a1d7e9348408f1e1c3c6c64fc3a741f3347a1a32326460c8e8f57a3d5aa65fa5da3f6b3e01bae6f1e08cdac33bd8f757c9c2f63a3d2030e86138e89be10d67f050e04be365fcf42e57a0d39cff2020c7327f3953ff4160d33130c801ef3efae9e7ebfd8dfa7fa87f085fcb3246c8c6c6871018326838210601d4d0100c66d0f834bcfb340741977dddebeaea7ccd35788743e1285b31dd5b0d8761fec43b580ad937ef8d0461ff1fae8ddff17adef76659deb4effeff1e47b86c83ae41d9fb67ea00c3d45b6201156155b9a4aaad9d6171960e911752848cb5281184063744b6eb963c6367efbdff1c7d72efbde7073dfd4f352e8b3f1899a256132db659115b38d729ebdac7ccd51a708c274e0ea53dd60c3d0464e9a45e608dc83c4fa8b1d9b4984061dab2a26188f5debb900aea9345504936579469505b4ee5e66101dcb62bb02931a49630a0d3b7c653acb9f7debb906be893b346bdf7ecd36799e2af940118e5ac8ea4dd30b228334241a162e493326b2ed4fec4e943ccc8850c190fd8ffffffffffb7d6688899e299ebd7b53f9307d1d0dab930cda2f6e2e94bef7f7dad2a8f82fd2f2db6783a7f1c0e431579d491176514c7d4e22ff60206a3aa7beae35422541855e425b83d7ed7413d4c603dd79254206f3775dc5d1d9c870fe29ea4c68870d4ac2b78c55264f0c3703804e9484b242324e8e6787bb02661438fff2ba12ff5a7b957c65013deae91f34149768d8711ad89ce8425a5e40584ae1a17a352cc4ce789263fddbed77f9b65d0a2130465365b8464e6a6d4e54f9757d59a8db32b509105894aa1d18e3c5d388d82a2c06a78ac2abfeb05d3929ad04e2d6f6c3aac65435be956d745f8ff9fb9688e064234da94a53e8f61aab320ab4c8aa8acac3d292e2f61185e586418419d749bac1b3147dd0a5a41a8bd26b6f75edd7bef5de856f5c9bd779f33168a8d7d7da7f71b6aefbdf7ff00d513ab96db16b7fa4689565c2c708c29236430b0b0571ae70fe1ffffbf856c8eb716bea56c8eb7ee90670d707dbea6a6566d526147b03e5167a83f2dc715d59ff689404b98ba51c638e135f6e13d9bdbe7f43967ef74a2ec7ae552954942c24084e829659b79fa70702cd31a4a06953871046142abbd6772abfd09303adcae9537b11d2d8e15b8bea1b5fd5195c6ae64ba2a5b50460ca480ebca59c292486521f5ac11bc2c3ac66e15e956314aa1a8eac9c20587c2f442777c4cb0494528cd951779858415185fbb0fd47bef9d332c7cd2c2724e0d97d392b994f6a284945145161913e644d45543d4160316f771d927942202c1047899b64a531726938a9217ab1c33ed58d19c88555783ab00f49ac1ffffffc213dcde9f3eff4b01701352b2d5d2c1a220610509aa62370ac74df8bfd2886ff504ebfda8ff47f546de7bef99aa32cfb87a125d69b031cfcf74057680d58dc3767119ad5591c52edd181475efb41c735477daa75c116602e98a56c6e22282900b3a94615659120cd187610ba1fa8a3de94cb988ec84bdc5a02b77954622a43b47d57b86baf7de3b8c4c676e7bc2a09c721f5d65189c50294342d4e64b56da2f2b0ec31430def2de7b95929ce1558e5a7128666a45179d89d58c95d4dac42195842b49891a162553d85028fb61cec87c38b54461f020a17475efbd372f204513c6245eb7ae3c2a486a242ee0c2baa029fc93f8a3aaecb0983b2b8cffff95f9cf22b1837989a7dc6cea8982c5509659a43500aa37a09da2188a9e25abdab741c96650a55c7d897befbdf7de7befbdf72edcfa640f109f90269eaa971aecf658f72e15abbb87b2a02429ad1d9310e1d306f701dd9860d31f99912da2ee914cc11ac9ca0a190913f697abbaf7aa4cdd817577aa7bef40205ff1cb165cecd9ccda50118814ac720d475a9242c5e556e9064d33084be28fca012398b33097b591951454859029cb3890615464bb4332b0e0fad87beffdf7803d238232d6918098703274ae40e9a670a356df06e1d9ef935a9d92044549440a41cf52cfcd12c90c8ed4cb6d7f249196485c0c110c320b3f7bc5a77be60aa1004f0eb3a62c0ad62335aa4872cd45a3287b84c7c98d8c907249951c237155c4cc7e05a168f211bc3d8c9f90d4ab54776a8961d95c2e2da3f80b3d0226c54fe74cf5b4d77aad88de0b075612a540291a7a2e382fcb4328673885fbf852caf2183ae9b6982ae05040d575a7ae5c024aa605cd742b6e04507b964282c82829648af453a00c2fa6d7f8271621549295f92ae940f464078c4c484bcc4b9d39bc57fb22a9568208ca298eee6523c625f9fe01b4b07a52efbdbbd8b15c7fbdae8f05174fb75f43fdffff5f481b73bcf28f3af7234dd7f90ebdf73e6c83ce24bb7d262dee62e873c249cba94f0b252a21bbf1e8bdf79ec593cc794fbf066c6a9bdc5e13ac47fc513588998056bc9facb42069578ae81189ad0bd288154f32ac13733c126039c4a494f2a60428a88d8eb36b4c495a9d7a90f3de7b2fe7233724ddc201688b8b5ea52a313f2f303625c3a46c40cfb812392fcdf2c7557c6f60189d75675818094569a440c1d2248b6740564f3dab2b0b7057b1cf9679f2de7b5fec4a65aab5f768183857cc84329f12905204b5229235c2f9222bd1c817a84a33c64db142d2babdf7febd48c0dee846de81ee3ced54835fa9a4feffff2434d9ed7bf924b965f89e95056d73564c81acc154f960b24155c5b493a32398d085050dd8b47a1cb8579c03374bf63e9e06bd229a5711424ceadac674bea89a5fbe59a60014808c23239c6e42e4de7aef7d6eb89b2b997d720b880c5a0ab3229d3968dd7f905dc6113d4e32708bdebb2c2d8145c468bfb307f651355a1d2115c15ddca9a0153b632a6e480ca39b980d57092b50d4073eac244b1f3e63294d41b57f6391240009ea0a5f4e54d7193a3220b765cad3ea2be84c83b6ffff7739f62e52ffffff8f2970028493b4ed6a8a6ee0e4ca66f4a94a29127e0f63a3019b568f035703cd1d94175a2a56692c9926155aba90f217230e5cdaabf87591b4a08ea0a376c9a22ac8b421adcc28c5b6d64278e7b64652a8b0912e9d400c5990618129a1cd48af863e50f301e798e9d7c5d47beffd88c84ccacc2029ccb0978161aaf7febf7aefbdcf717d7216544b480ab820ed0f5d734767e4c2a41c323a595ac2a6a9b074c665936285adaf8e05732bc6b5d449156729a405b4def65400ef9fde65de421bb2481f1415848526bb7daf0f4c48ca3261253636bdf240f11ac1ec9223b25db550e4ad08e67aea80e8c6664e80c06ab6c6b2e68207c644e3acd7f49eaebdf7de7f9b6ef56905574eb5054fd80c16892aca35a2f5567bb35e538921b622fea89f9961883854f4e115499f257acd0fd623fea8fb8c1873bcffffffc4814e7fab03749a7b8e856e37de2881f2686ae525a38246d8118caad95eaf925b3654aa9936f9ffffc8e5e6789146f21cac79be5df3fff7a23b0afea2d5f338bd2616c3a3ccd9de7b178e5d7d3296d8699f4bc70e775813586b0229a72eb344112548c585260d0d98fb69221a69a1462bbcf75e04f228f369edfdf3f3208fb5f7ce57094541468b6547db82272adea6c090a69d6972ab8e051edab646884274293f0fd0b6e8acbc6843c2ba6db079feff5fd8853dc739b86bd064b7efe5bdf7c217e46e07a3ddb9c466c4de7b7fe2188abdf3628e067035a75125bc609240cea5670a129c4e8c955401764c90b142429146aa3b5dcb172a26d9b61495ad6300ef3d92fbe474a31ca3e96086880b0a456b8eac8e837de2ffffb93e65dcbf4897effeff198e4278ef3d903b1c0e49bcf7fea7ba39deabfc356b835cfaa7bb8186bbf71035097b27ffffffff51b53072fbf6468f3ccbbed90a0aa7c91d99edf8f088747dd821aa2436a6cb507c4502b84d0039e0575fbd73f0d177a03c1fdbd7e6fecfe328dc44a0989b816ae2e73284b75f7cce0dbcf89dfdff2ceffabd35d81be312c49e785fe05e794fb97bed308237e2524b9b6471f3d88171aa5b7a0b9242799a53cbf1d018c642b33bb5f7e27d60041959226226054d1599261f6d2fdab84c4b6938ef314bacfdd799f6396c9a842db347b9342436992462d4041e931920a64ea06e205b275030b0ac9e646974ba2e2b1eec1bb88a451172850f11303836b128da4cb18ab48d1b4470bf949a435616d09ba6ab8c347a252ae1c4835602de393a812204582942eabc2cecffff17b9f5a23915217390bf31ef35a12e78b3cfda184053e94b2b3ab46632b222ce256508e62424c4c1a6d7d21d237a28c34e76a02962d718b28f1f198b470e4c71cb666e0d4968935801c371e1baf3b701b60dbbcf29806f85213637b1e08ab31eb14910286b4058a26ed98baceccf1adbed9ab30d5820c02c72ab14a52bda9f5464eec3896039feffffb0cb5f86a53c55e78f430049342f529820e1a4185fe2ba395edb2666d4d0a649625c49ecac785e1141d59e8f109db030b2b4ec1505970a59313c82e44c7ca284468075ed62afd6648d7b66734bbc7f6e988952463f6b6559d2df51da118a15184bb1caa5834cefbdb71c7d726faad4f6d42e49537c98664b5d328d98c6651212ee180e5c18c9db1a86f09ba85c92509c533232707181f666ec6a114245d2dd3072c9fffff9bfcf79558c3f50a12aa90b02495373411814542cce49cbe7e5e80104ec168da7e922042c0258b12a154c2416216b1b6c179e0e233022a301992ea5b51040484ed30a2529d5b18adab2f100238a31aa9b17a612a3165864d2146459541c36d1c251dc08a0a36313aa052bbc517151c1e8806d96fdebf5de7bd22e699714f4c95e3faaf21aa2c12bb5be7a6bbca5ef021aefee263e59e09ceba9eb981524f46685f22c35d5de6795b5f720e84746ecc8e20472af6470d0e99048878e30650af869a2d2ac18e560a75b6c2afec9c7d32003276ad4ae3b4533404f951f2c92158eae4d4a0e3bc543ed45b51d321b1a79d8e6ca9a5521175d9817a833ee46e9e1bdde7b1781c61caf6c82270d41dac97d04a4ee3dc351efbd779fdc5746b84bef5ee56cc33e993ff315c67dc5696b1fb765ea654bb670ebfae5bdf7d598e39565de7354dc42b548ee28851dc15a0a2d9a3899cec4450145e3b6493666b9eb218ae829cece16efdc72ce28aaf61b90c596269036252412a0a4c5a16859a0e6cc384a5e99a2b3f31fb5d7ec11638ef72955ff4df2a342c33855cc58d88bcdd0d4a60e4cea434a6a8da96a8fec845d48ef7ddc0a24947227aa29a6fac3829697b2e39c5415d7bc457e445f44da18638c0eafbf0490c9a8146ddaca3904c0c804831800000000148581309044b5d30314000631b6b0a8945838180dc7028130180603c1404010100402000c00300c03412c86f31d8f076be80db8aec50c3e426879253848365cb9534cdd64c99238182c4b13df206e85fc6650250c06f164d20b2e1fca3fe2010d1a93a51885730176c3bdb30639019fc1a713cc3e90dd4d347e6e8b4f822b097c0c5b2b2d76b357f448a3e4afd804ca153370627051946e8d9c03e6dc00dd1b6f73972477aa5974a74c2da0682d078c709ca9b6c40d0ccfb91f06f9dd8562ae6bbc14fdf7440f9c6d0fb44ecc455f9acc8251ede3852f14fdf50a6719fa1aa6b3c6220955901f6db65661e04b5721667d11651b33295fde55571f4f6b03fad33ee9a1a58589e96d7224e2f5b68bc3fea0c5c408707eda5ee189114eba660b87621687b4b44b2468507dc72454c91de0b0b979b8f40130a3407913e6aeca986fadb98ac89fd83e43def42080f9f52ec4d66e8b48cdeadc4272123bb41ed272dae2d3684d9d6836557eeeee96920f113611032d785726ab36302b8a64cb704f3d8e6013377de4e2d51b679a5dd712eafa8dfec045db4c8df1da8f95e0a123f2d2138f2b0e66059fa639f72adeac2d0fd58846d998cd4953ea5c2ccb03ac9352536d822a0c9ba18710340d6c797aeec647baf61288c764ee0eb717926135ff6085f8f353010dcb885533357d4a85e92c127624d3a6656c4cb6d1b8bd7a487568d51ab3dbc6bc2c2ddeb58822a5f610acad4464daadf6e6193fcfe8457e0a4e50c84684a3fd5634563b987ec93797bb0c61c695342627ae116d6e2472bb5f7311c0216a07edb962b646d870665ecd60416283cc5d062b6c42263c861a34a0b2f536c0644c64e234d3080e3199b445405387e3b97e68c900163ce081256b265611fbd18dc50d428a47d885c4c7e31a1d949c579f9be8bc653cefa16572e2538c0068428f0083183dfd80a36c3f342e0dfcc33930f442020ddd4b8336e2402886965bf07a3ca94295e1348e4dd791b6b3f64c6bd2576fb01e8e1824a3e9572d638cbd23c3d9c4de7f4ea653ff3a1a37280bfb43b30ed8d783099526b271e860c922bb626c864f5d923f4be312b3f7629325009925f34275206b0e03e1479325299e32fa1524d9fde8c2511753c5dc79d3050e2974cb6e3dbdb614d2e726e4f993821d70291052e628d0aad9d16624a4e6db8d259c7b268721e8286084bd5b071a08d8c5d141d0d3bf8a40a692a98cfe4ed768baab38eef3746b00228068b6390006aa26ec88390c2532e8a356b1235d671a81592326c0d4963011f5eebe861c59f674ce7d1aa86b27939dc6240ce9f1532c5b8a62e619872da5d88858fee39e71cd5112ebc6bf5bb4cf077d6903a317fdd26771e22c3903834485ff12ee836062c6725e180aea461cb5835a3ae810c9ba6ac9d21d615f529430d03170d5666a1bbd312aaa1de13c5edbb9e3939f76a05f3689f68fd540245c913c83c60ea6587e75663a3b3f9090846c6b88529d6b37c016e2887e7200d24a04c8f41f878161da6784a0f4197627b042b293a55ad02d2f0f1207775bab4d2dc48db25127fb535cfc77b070298a2113382262374eaf2213c0a4052721103e6311473eb9a427b115902e52155606b9c213ee70d3956ddb652d73aadb91a8aa026542836ae5ad3fe88860275e6169e9557de6abf20ca799c15d3840bc649a7075b9fb881a8a57b3e45401b7a4373e104326576280339de8a42cf1491994e6e815242ba6c5c641fa78a20f82fbfc9c32725b6344b3cad898529c10ea4410150adb891752470c8dc683d598d780bca584dc8a2834e3920ed11883320ac9d1291cded1189e95e29c5b60a0db9007db8985e40bd627e1215e8d4c1f15aa975905cbded79813546787acf05a1eb21be15a61f7b87339a81a9335df9e5dd454e38f8b933195c50980f834beb347ab47b7a72a8c9067488541a5069d52a425fa0895c1030344f1a4ade66bd0c3b9aa2daa192c309f37015a2e11f1b7eb3265aa6f502ebf66341a0b7352894d398aff4a8413ad035ea444883614393e77db55e6f6cc74914e9bf895ba0fd7fc476632252963583db271473be75313d5850279d0a42ab6fe1ddd030679a485b1cba849a8f752f7d9288607680ce2aa6942420bd7123661f36ca3269997b959c5cacea83e148fe7c1b0c433c7b1495fb8cf3dc604e7894056a9785aa9c7409be3de969a459e457569c76c0eec25d359190b6235b93465ac5397a0ece81734df75edf1cf7b497fab377af1ef74c66aa581ca6185d7e6059bf18f59339630b0eca513d997dba062fd1140212ff4d2bbfde4374c1233474ef7451a21446ec43efac2f0419eabe78f9c13f819fdfd8c4d006a7efdff7f3ec5df11b7fccaa8363066ab236981137e4020669057e0c9e2e968402a259eb348696821db92a1556e4a284291fb8508645b465bac05de4c0a85eee4c49f862d5ac9670741effbf237a2adfe2112c339cc9e969a95061d5e7f1830f1e6850099a960aa0819b99aa08115dcde246df886c84a03cee45dce19382b1b4e29c196df4a4f0b34c702fdc7f85cb19df4810c4592041a2bdbc915c6cddc904014b1288001f8fe39e1c9e282439ac1d0200151ef7e839599ec4b066dc4bd005d702fafec82181eac14a985eb72c245e465d8c8104329d39e64cc01e34864e1694ea0fbda4affc7e2527d3daea3ff076c0b0d2b88d20e45f32a4d355c10e4370c8a4999038d4021a1c61eed0f692db12921440c96fa99e33700b7037310d22e76876b95a69ea7c3fb71418a38fde8fed21fee8b35b97ddbc82a8bd31f012736d2060b31fa0fdc1913f4d183d72824d9091a200dbb80117608903151039155a725ee381fc5a0b0fd880e88d4711a18f561673a3bdda31c625e4cb3808b3d06a795e0293c11a282cc5480fc70b34cbce3f535a9a13a165fb86f9e829120c0be9d708d6dd15fda1952259f6f3c75cfa15af26a7f8b6703555ba90ee3d9e1253c88b3a63847612f489d0455074d8d13ebd1b165d70824c91c73741ba4f726334531fec35e1c774acf62869779cc44240d898f4d42377a26e51de91c4db562a5578598f842ea541ed6b192460853347e0330a56dd795e7bea3e8ce5145484423a19fea5c02419c240941e278767492e566c0415260a6236dafdb33bbe5b39c5be80200cb70b740c7b447d8075f4a3fef86b191aad122de1526216b3a100176399da669af1af41d8048c4919ccfd5297db07109fa01494075a7f445aeb213fea704fba346b07285d74e466e099f9de7e240e626905a1681d529a17f6e943f38e8f046167cd1cf19d3d2f8df085b8a203b8afa0be10970a908ed8d1ca05ec2a50b5f8d8013494e9f827f8df84683a70d30057814f583cf922127665eb2f73ccc02225d74884869cec7ddc7fae519372240f2164e79665408c60c2452b7a5f22d8ec01cf2388780be7ec3a24d02f3fb186b1a852c223581dc982b96c4f590c448bf3695513a165e32293ff0c464e3ac9604f44495960c7df721368f571338346441324b6388ed6950de335e946ea043b2b466959740be9f32b7ef67e7816fb3c4633b2ef521c502ce8800138e2a7cf1906e84b20f1884a38faa2d85e25923a2e0e7e077d670e6133294bf43954e35b9933431ec381423eefb08585ac41bc11f7e498a3c0a7a6f12ba33230f432ba8bb67d321ac823e288e7fc8d324be58c79226e9919d424d8c06babe4141c4a8f852ab1d2b3c204252ddb60a57af4988cde85056516a03241d505e5b93a3d47236d4b815e9b1fcfa1536b0ff4768c3166621f6d56f7dc1c094f38636ac95e93780746bf6bfd6d1c877dc4745eb7cc1cd6260c0ce3b02f560f06bee9f87620e3356745c8ab18937c22913a0f6b40e714a3f587fc4d94c1c877b3eb8ff28a10fe21494e36e374c134c6c2453d45de2e0b552f1919590479e7366f33831310e2b38b9774d4766637901bf797e5d65e8dc26df377b65f6adc8792b85e9d6138b7887662884cfd316053c08668ace4a827fcf3e2c51dc773ba4f716b02b997d4018eaf3bdced489d274364574651583410036634c3edd5ed5597375980617fd2c2d92aef41598087abb4226113332553d65a33ceaf4b409fd4a3d552d7b8a8f27c93fcfa5a2ab42c4c44980cd855dca7c7226948bc4f11a229e6655f56c77981ebb226b5f610db27ce5f635c355b93ff466d0fb0abf32e05e040c1f5d9a07edd4528a1f70902e06e128b1ae8d275417e4dffa827d659a0bf5462409772c06cfd49a1fb18b09fade44ec7728dc174989e7a29c169b421d9d5ef1ac16dbf1ff5f3e853447ec93b345a90f991b4a64de96da85ad402895fd90f8e09f3db98d77651d331ae333b0c3a3d5692f5fca3267115c54980cc7a96eb3caaeb0b42d1acc1096637620c2a3138edba7b57791dfc414453c23d1e19e8060de878d30c266f48b643f130a66c1fcb9ddf97798c834714f2437971a72c2b4cd6e20f3828f0f846982332fcc98709bbc3012121b832a897deb2c9a7d7db78601b21584973601b93f5c20630e69fc1d6273db88daa407db2a747f3eaab3e9975da75f49d6695b9cb1e9d9c46eef6ece724b3c252d38c7b1cdc11fefe48dcd2f10b5ba2de7e1ee96d1b47dad425bb3c3dbea8e2d15d088448adc4b0c542d1111ab010a4745faeb11c285d4c40b0554f367a390f4b76dfa309756d2c1403eba519b8e30606477df407d2bb23f07ef3323708e5e216055610f398df3ef4cafa846f3a49a99e6ba3a148c3dce332cfa769ca3728f757da2bd8f2cbd26f15ea37b915370460264de0cc8ea530ed0152c431b07c698a02f0268279c0b91d974980c2b3a61b45210e5196e87b9d60e980cb962b26646f8e258a99110192933295c095711b081c46ac8362620e80242461fdce8ed9567bbd4aeaefbaa04a8fe63558d262097b900d23f8f625b09eae610605e4dc7b470a75bde90db1c3128dce3734732b34e9733bfb8c850a48964b102f8e1d18f0f114ea9a9557ecfe0977b6ba17550273baa0a4d5f91d85bc2b41feef67115c0a1d63cba1e5800f137c8463f17a2b20a1f77fba3674ff375baee1358022f76705e18e348155168c3d446c88da376b23e4e5a73bafd313576f0b8583a0be4441252f51196a4490c8295c8ec0947598fcc3a007e8b9679b03be57b8124e4784aa7628ba6bab602cbbe320750029d36262d73b991e4407768cb72c1d39994888843b10ec82a8b510ec658fa75a938a3154e2b074ca0473367e764b88bd27bc5a0fff6c57907c1fc4014da651ee024307ebc53cec587c14ffa601ede54c3966bd92d3acd112b97d6c3cbd69a2574f89adf737618d8a2bfdd3bd4ebb7635910d6751d4b6c4c15f4a0b8543b7dfe49ab298bbe249d7f0f423e7131f6919c52bcbe4cd91289c908cc7b9d8037974d8ab14df6b9ed7f9e01684c22c48b1d9e9a02df193b6905a9221b038aaf150540448fdabf58912bc3153a208ac6732c51452df3d4be0ff85544f0b38780be10594f1a96cbcff0335d492071ab36931b11ef1ab067ca6c5573c5a30e6876617bf4656db09f45dc0faceaea569d3d3b33a56009c7a949595e5f0f497f87b46aa4be9ec40c94241a319c84a68528c7aa3548679bfd6b16fadfdeea54ab8cf43a49f212083d35a66ac559ab28138e7811ec606ad62d8c23d4717217a31b1d847001da5014bbb7e1a90c6169131177815503b78b52c886d3baa4c352aa6794ee9f939cc2127890f71da09a8ecb6f1a9bd9a9116c8a7022696d8e1558845a8f2d8aacbdd120c184f611240b67bf3baa1e5997479547c51d501d306fbf14f0052a249000b42e8a0956b3aaeb923c0f7ddef2eeb64c2749e15ae3444b2958529aab212a45b9fbf3456192a449a2596d07adca1f1b04a6e0abab460d5c83b08a44594aec1a2fdb46deee90e0237f0d8e848c3b17445506466ee1f931f4a22c01229a8a4d80847b85a65a2eed80c03bf9292ee66d8aa484114febeef70fe3278c8df81925767f8d1f465888290eb1ce3cb375bcd93c05c90dabb749b0bf843c43a98838df48019418ca49e4f5ecf981d0af059b4bb06982f611c7cca5f0dab2e5ba986141d3554f4a6bd5bea9012f71d2f6626e2d39d1da132bb1632997b9125877d2345bf2fe847c28cb81b33015ec2cceb2657ad1d766821411d5482a08c16a4cfd91076401e6b3383b6091e0ea9f5845ef144fc7dfd2842321e1be1785f05cce012bf535a2f8add06722ffa4cfc39ba682a303a24f63963a71b841df0962499b251f58d81e5a13847769d27cfbb2be3d1b2d1a59681ea54f11cf816ea0de3b323c1157343bc1922c375da2548b1e82b3a3335c712aeb3f36740000d4b44d8ef21201b91d0ef310e7c366fa8ab71fe53aa8c62ba41928899737638fe38a714cd35282f064dcab0af07864697fc6b0a6d5020823499d22f2bf4c44a74e1c39c796e588d28434eab5cddb4a896d189c9f3448aebf75a6cf7535250eda198c24d6b7e4dbf978a95202e81d6a6881c4aada0e007042bad2a74b40c810c0691354d63bd6a740cd8c6bc85afbd26d40e01ae01164fb73b2142d4434c134a03b2ad07563892e3f4bf7e83a6dc351719704dd3f063d12f271d3f6900d00d01baf3f8ee05f09950294d6859360074ecec901fb87b0e75a1858702c68c9c63ca31b9d0a047acfb45ce97c4ba9f181ccfd651528ca4890c3ffe3386a32c9470e93852e4f7b0a81ca448bf0db9e3e27462c8764283b205ae8ddafa2a1e7c5339de9125708ca07e1eac609d1f9b8889b6c57ab402c9d9408a686738c2bb404185030bc2f3630e62e900e60f1922b0074038255adcb1adda2e223f58599494d480bf99560813ec0cd46fe1145244ff86f1ebf874332cc3819eec375392ae3e9bbb952d7fc9a6daa2a24b940be0b0e157e428222c93091b2ff19ef23534c47275eed890a911fa802a6d01f713775ba226e732c0edefe1e6a27f97a960183aa24597ccbe790b03579a00788094336eb79f55726c300f1b467512d5192dc79186383ae287551c23f15aff00c27207c81ecbfac711c3d7ba201f7aa9200cec4c6ebf95d60727b31d33a1195243de350032e8f8fa32d5ed0f80d88ca52f52f6f61713f3f6117a36c1123093899f6ebed3ee1f970ffbd8f35680accc30c90508508d98f9455f9d9a958318b51a67c269c88b01ccd606530879e00f1ab393be55dfd10c899928abfc594dc6c498c7f3d4ba5c906336caaa05b9eeaab6153cd04b4a299807d2e2ad0b4af47ee039a6eadecc2fbb1b34eb828d2aee146c181482bc447b83b8ef5deeb8ed72db9cc11010b2f696adca5ad4eafd19bd28684301620096ffbad046e0401cd2818f8967acd8a54f59311f825888f883c4608fbee1185086377693c89437364c6275fa302486352c342c26ed67074e422069360d575a4563168e365a249c5718118ace48da117d1021b4ecf2617d10f4b42481335ad1108fb1201ef041d85607531955e4368a51a6c57520919b2ff7713551d944d55ceef53f17d92b7a10216b1052a0b3cadf95730f60ad0a83e0f4ea30a9a9579c2b54a43785ffa99a7071d2106873043ca4ebb66ca4514145b00f2547fd60a8ee119e56df0c6535166c0765097a329b8eeabb10e74d032f8bc3548d31f793222c20f235973075e64d6fcf139a76a377340e17ef3cb8055efe878d27fc2f321d8d472d6543138a9ecfeb96968e9e97409f405b4c3255d0fe67c07cd0a338704145c7e4413ebf63e9e041f3eb385ad902a8d8b150f7bf5d3a20912c2f17fbee85019b75fee34e1551bfb048b1acb94458317be1505edac9e8d3465a948e17901b83bece8c2d6b34018aec930f72d00e34336812d6d1cd463b8436a4a8ae763dfa66624468088fac155698dacfb0a1436f34d8b63a49e5146bc3008104a528f1a2f36dec7736252629320404884036b484b2d688a492ec3767c0b8b481902eae3331ad21abdced51fc3a8eda74cc06dc1f9ee1d2a80e292e0827bba6ba8b47fe6041ae037d698b26dfb0369d1d94633f113961e738b33abe361cbce65bbaf0585ba4432532a8310f171a89425a5332b283512798cc45f0525901497d578dad9cff59b4f000cbe88a4924051475212d79b2d9bf7a072d6a6ecc80011ff37a94d89e916ef23fb11f7e908f2a304d5f0edccd61bc976616374c7bf05c0aee4ba540d8f799d2849f560803937438937ba44ddd2f76d36c1122d572544dd0caab7e33b2adb40fea5eec4c7474facf36560e865ae36698929497717fc4db93e23a9d28079ea9bb35f4c9d71ca6187394dab1aa24e402a92c55bfc039b416a7b2bd2b711d4764953b06a80e37839699ba690f5e764a570380fca130df4f05bc1265c4706aba820874f06c1091fca960eb89c761a507539f32a1362d7048580d0239d4748ec2f889d3d08e0196fa3cf19a8c67283852160519b354349936e6b2190c102612619237f684b9886f868e4d51911c9743b8f10fb273e0d84647407c918f351d3bc407c04299b9425e66887b02675f89864fb5226dc8a9135595e70b785d79d2326525d83b34108c4ee28cd08db331003751a165367a8a416ea79278f764c644fc6b0c34c27913570ac475e472731ee74783b6727c61d5f3d62a38e3ab30972b1e83c5a2a7f51b1325acb6ea8794cc7383fbf6c793ae20b35be314f6bad9d55117fba7fe8557d1b731dc9ad79b1b39988785c1334fd1c9a3e05bb68d777853bf2dc52fd7dc259ebea716e7baa13eb614b19f7d725b15501db56d2880967c21fae13e04908ed7bfd835849d10bc58b11baf009fee60052284a514b9f7070394965c01936047450d7c5ce60e2ce99837846c66320967931b1e4202d48b3c5f41d7f1045f71b1acf8011457f76a8dbd4dc9daff1ce89cd332a604ecc8bfb3b8db0031d4bd9601d1f1b55974b565c6c3b39531d315ee92e13f3b295ccb89a08404ef0c1fce56d8b0b23ccbe0f28437b5d70063c99b517449dcdc750fe8c8bfc4aa6cba6c976a1090f1924fc933ff55826109bdf05949030a8be26da3c92f1a4717fc8a8cd3af2d7ddec2a3d21fd94ce58c91f8ed32dda7e4059946d95a254c069ce958ece07751dc89c40ac1223f8b646630b1e9dd3ab1763dd5ac91315753ce222ad139e0b862240c58f0fe82f57c1774649241b15d8f950390e39b64b203270356d2fa1c8c2b5c6547ac5b45ea4d634c4d0d393160c593f30462fd93a44d41655857eb96131bed2dbe51eb5b200fb774db1d98ffdfcbe0ba5f23a11b998816296a4a046f488e6fb7c632b9c75b9c4519cbd736836e82663170d610c7849827d2f470dccaac838add0bbb6564213a8aacf86cc6ca96a07d280f2d59b1ed3571810939d0e15ae43b002ba339fcc5a5e69d7fd8985357561d1d7d64eec531b83313adbca826574fca7b4ac9adb67dc7fed46308d9ae868505a7347905c563c9c5a6a48ae8a4066b9b6ddc1ed5850600087ee6c81530b9be0a3d5c43d1f05731c780658767cfe8400c08d4f585def1a2ea1c51c2e30d489cce798840568c7181ad523159912ac8416bfd4feadee714839483656814e25e6b8f87404444d2db108338f425deab195aa2b99bd213c86fab858d7e466771dabad00f83d66565c16d6495cc5b90099a7ba96367d62786388b7cb3c6d4944b6b43b120e0aa9c5bacd72a422cba014795322574635c14c193378669e32ca06948870a52332455e5c9651e5245db58290cf4c8fbadd971e9746b7ba6b7e87ff4668d2b45271c5a31d8ddd5126880e040fdeb257901c4aafc6a560fb22f0ed7a9bde35a7567a21214a35daf3bd35781e6722e8312bf528bca4cad8db00efc30c1f44dd7cc484d59ca9b4cca0531d1246e03ce1506f176c6d314687fd69429f99f45925d82ceaed501f2602a76fec916764195dc1a5d57932ad91292afa2f1305188929016e2d9ff08e40ffa2a05c25be43b4e57c0cc8070a42c7c9edb5c62e27892bd8641a7560968e2693abac5d3d704e3019bf10bc29f1506494dd9300e1588d0c266087ba79e363f1bfe9df6670d8e09a6d647e1e3d1dd01d43cf4ef2f2291255f0e8a0583dc3c5ca2d2e0877cebe1e5a7c39247c364b727eb6134aada7709635049b8ac961f99d1390380f99be806c434b55160f8aca85a69a6bed57628462de0afeadd43ee85c34e3e72826b2d571a58d362d6b07036198f8a15cf74cca59c75b23bfaad15a48048ea63f5cf0d69b34516a8cf0f1174a01d650408a060099fc7c7ae6f2c7d351af178de18e20d6e6d1d46201adc262f11666d03d74f466490a68a251d8e64dae8914212786b88147825ebef901344c2d4eb8e7990b855033849780f4d82f43a2734ce54fa89f1ea13235b0fbdcc238aaccba85b51b6db2aa5347bb04d9125391896558fc8b3d67d838a163afc6001d010f7cfcbe4fb436d4edc0869af265321d553b1e55a8a763ac72a4a224b55d29c507740e88b355e061c5fa4a2e7374662ea73a6f76d8c3980ed91f8d01e65855ec8cfbbaf8b90c774486e3061c71ee022ce25dd927447e57d0a38da3cfa683c9c78a0aab21adea7d12421329036c6c1d8d4d1068b1cfafa8c5a37904b726d71b8c6181bd657ffad23a9ff07cd4bf5c2ea8efec620138b80b607957ae217cce09979a596c2f0acd9c549a3cf2b00e1642a90b4cb1a9d6271778b31664ac12ac7b1d17bed1b759a6f80f4d64ae688de3158580d92d8bea41038aa24e45b00fee653310efc4852352fd314eddd3c180de268e099fb11a2a427ff7bfc73c42d59642842f642e17a208241387eede34b72b9ae47e30f982a26aaf515746a33e1b89a57e5c4225caafa5f043bc439d49fed97c46c389752d0145b60843f258455d988d538ca483703e314d43a4ac095832c84d16a47bda267d03d6d5cd32105034420ee11ce1cd230ed27fbaf6bc34a8d649c6c6e1252cdd3844ec25519e271471ca5b4045c64d8a95914fb00e893f6f38be18e866f5f917bacc79282a243aecf7428ac16eb925381750178071293a0909b7f1962d589eb0bf79d1705008cf07708af2dbcec834a17a2dbb1290af477a2f84f98aa630fd4f0076382be3d99f8aa129e087be88e7bd92b7e45f887f6c7233c85932dd0075c553de27b7bda89147976d91d9a1cd33d0d2056e3a74f82f9b4a80234f827e8225f51714bcde603a8acae55719af313a484a820b8a6ceedf80d0a37966e953367e6ff19036d2828a1aa16d9f1965e16e7ab5792a84ac9dff5331cf251dde53c3e76e016408c3f254dc0d649ecbbab32878e4dda560527c14238c6edb58d65a577bb5192e057d43afcfb2d1c849e78f46449216a58d55531a3eceaaf2516cf3d92b40d3c00cf5c0f548d18c1f14388b5a66e1827279140fe6f2878453bfd816c6bff78dd295b3c829932931243f9e8524b94571d7833ec8ad9a4a03e6e110e05d57e167e0678d62c6d403a63025a9407195ac9def21f6944274f0f7966e6ae0e293b87af81390e3fd3ee4297668fdfbe3043ef2010c73f7821ea004e7c1039c239b5a6058f44e69117a9efea6bb56235e4530db2254c2f060616b758ccc943d1be9c0da01b97dc24843d6f22d01efbe3259aa5b21344e60078a1f21019dc59a774703cfe63450f97f8bd7feba7e7385334f0026d4534ea25880a231d2108fe384c584f125818e38ced4cfae5e644a7b214c13dca5ea061f43fdd07c0877cfaeb8f0547d57437a6272767033dff43de5bd1752b29f6f7a4f4c594eda8cd09fb0345be80f037f34d676f5fde53d3e5beb104a8bdc76a8a2ee0156f679af838050d20d624f845c47a3b136432869b2811e865f0a51c946991e78e10c8253b00053ac20d36124853e0b0cb8e5daf192c885a46b9230216d88b4bde91f4ba8bed958fe6fb68190cd923303cb8e1716da7e5d9ec91260d9103bfbbe6e2f3e389cf0c0418603e301d2c7fdcda22a345f21899f0b7011c394dcb139c76f387b998d246e57c579ed74e584f36d8eaae50474824356348de31c51692cb3d50348ca384f4c3ab2cd412406f341ef8edd1f5dc511425dbda31f978c83a1d077938422f3216ccfa801cb5c0667bdb51aca018d6e23a690345c10385e375c9c01c8b89a2fbb2f7cc3f96b9514a1f6bad83fff1175d78994cfe323cf58257cc2bf1a03a9524930e67b202e173611adb28dbe56721be928201c9255a46ea44b11590224d7018a4771445e50ca3a4e07daec00a0d6c08e146ac3a023540b672c750668cd0ca032eb062f4e53f0337c10e8d5b137a09af3b74112441837d26b35944808e2319482901ee4c4ac781d47910888a34d97869d8dfaf0a05afb1ffbdbde7b6f29a594294919d104e3030a04efd9d8fcab43d89ef7d90d3e904707a80c4ea6cfaafef34c32554f7dafaebe0279fcd5f676a00ecc611930832a76706df859224b29a5a22b833c9e070760067a7770f56bfb4e67a6355951bf3dc035e279456ddb01eaab5f557df5d7f6b5ad60064faf8e9b27755a0e6ead4ef1b426eb48ea3ef93851ebffb6c2404dd66c596d451cedd7ca8d934a7fdb9ba54913a03db36713264af62c672dac99463672f84ed558cba0b9bb5801b74412ae127256d8c247ca4b42bb27111529763e22f43d89a844b12970d62994b1c4a61a030d3e1fc1b5da6eb4dd75cab56e62bbce5ea6c2d49e445484f6b7271115594863428920a2fa0912273f5a0c81d4e5080e970daa27d599ea94ceb720004511455184b1410a111c74b6f39e209d69e15a6d4af5a43acf6cde64d3528a52982b420071044708258c46a490430c3704258183ead4932e89bcef63391b4d1044645a6830a2c4a1cb124198fc24093324872d58c898a08ebc08794d985090a0dcc0c772048931c6516830ec8f08380992450f24114e1c21e0c7932f445b4c9062f4d26609cf0591705ae4899fa4d1a8841f2e682138d0812dc8a42a437c490c1ed4c494244e8a00fde8c205ae84171754c01ce992048b1751ab402a22727a328190226010a32586252ad47abe54d12288315b4888920311368b12fe8840c1022b5891d2254bcd0728127882860dfc408414454130f184926a010b628ef410c3e187ca063f58503181c89322619a14651fa213aadd8be56f48b12ac4a590d70df0031822585a187388e262b1c30a2db81003172002e042e02a41b1cb0df50c1919fa19021a121a52325434447b25d923256cbbf75e20869e3573ae4c66d89789ec8bbd1485214c344456898c3073cd48f916a6a0941a9d750191146caef35e4f696d2a63419188c1a3454162a50914b4403239104485155e009272f3610ad10441dc6cf0a50851971e4ad8410920b86051422b1285c9cf4c85a1ae08632c8407ef15300412286620828a2051542972421555941c011313e2e413a244e840f040e5e88917bab8a2033c330b169ef89cb024c90b2e08196b84a820c37fc042a2c098071f411ae22db1d65adab366eeaccd2b2ca1711f1e3b812ae2bb2359899654c8e0030f508ec04184394ba245cdcb0f4b2ec09adc5c28879c2a310821e18b12494f84b45c91440c859e2c29500112410f37369688c0c48b0d3f6c41e2c70c5e9a0039e2b6850a4149ec16a4bbe42f91da8d96b9e299cdb4c38863079e2765163f96a80c85b16597215a80ecd0c41346bce0701eb080480000ac9de0821219b00802e80326288c896d0006a02249b4700b92596badb556cbf8652d43acb5569658c207a22c301ba238a109304a33542144121a0eab85675bdf01c77c6e54070b277489d57c18bae29553f84084481511644860b0d65a1c62c82f5b6b6561bde2de7b3118941519ac0015e18409af2e3f3091450944095ac04c31e50a1dacb5560adb97adb5f6057b4485e9e80bc8050092bc24f1a3a78b21d204196a505a80218b27b3146800f98832aa010a10144c2431a1891123038cb478d9a2444319c58f4cf13f54c4100f35542164851db0105b0e594825506cc18131ce9e037652731badb57674d654c293432cd94812369a0ed61eb17646168c315e42625c8998045dc761766bfe8016a0a0c2c8143015a608413245081b8c58414603135f022093992284ad0dad805a7873ce396707a403d201e9807422cc39e79c7376227ca5c1b39df6eac77d095d36b657dc791f12b3ce9b214185c6c46c711c67859b71c47d978ac9f2315326ffed76d9aec35074c057a5ef6826b06b06e1ce3e59577bb7ef0576cd3e57576b60574df3d7751d161d84cfeb6e9208a9f6ab6908f56fab43edaedeb7b48a3abe729d1f2021254546576ea7ba539cf52247faca359714d2eb2064f7847276a532c6d38a3853bf9e4b7813c7e5d6a9b68073da7347699b9f10fcbfd8f5ffffbf67d42c7451996c68aab48a6e0ae43b3348c877a6b6e51461cc94f7a2cbb587ef0dc7f7c50e5cfbf876581fdfce3abe63baa71a9a9950e624d29a9c69c27026950ab5b85ab9d3c6715ce16886231c9080fba2bc8f820770910bf2953d0a33f02d1c7afb1695bd0ca16b72d9483e7cc7a4ada680b72890b3ac36d970095d38187c8bcaec9b445aab21fcb44b67cb9821b4567baed3fe7f599dd9a004245fcd6dd2af75ac833b2ad82619fd32e2a61f55b9be77ed6997a62a4f4cc9a8ccea9aafacf6b1f31749f27ff6f7ffff5aff6bfdaf5efeffffdfdf9f8a377128cbf1bf9c659ffe3fadb57581147fc1d10547e4cc996f63e338e2c0a2ef1cbe585309ecab6f78bd6207ffda65815d451fdfc6363f61d5beb25f35b5f6a99e53bbf206a75e51205fc988261114c32f95f2f46adb958eefcccfc7b7f163151d37107e0ec359562fe05b1948d9d410baf2b4311252ed82b1add5d8ea7f91ca5448425a825fbc89433fece18aad9ddf9cfae7ab3c00c103ba3f661452236fd1e839432352f2a9484b6fd1d853729ef4d474e85b2ff444a2b63d35ad817f6df7994ca76d122b292392ef1e2476034a7baa1b6cf4abac0a75844b673a8fafe60dc7f8061b7dc33d8f07de2f567ff9ea0654bdf5a2f40dbfc186fbc79ada70a2a7b6086dbe77bf575feff42895bfc631bc7972525160b2aed2be3cd9c92cf3f15b737af9a9545873f9b83dfb2db6ab9e9396aba63a3d6a5479b2420ad0a85ea414c78c8a4e16b72d06f6bff67c52374d1cb63d6980904330f9a9c89b38ae3a6e4c6570114ef7d50ca370ced874c7d8d477742af01dff39cdb9e42cfc65ed7196b3ee968a189890b0e7c5befa368ea30c335a4f1bc711061c7fc58a9ed89e46266bfe64a0c99afb821a0f9335b70b15e3cba08eac5146a18b1a6dac5146a1879d730e63ce6b8ad3756e5779407797d0f55c36e67225c977e6c4fa951c69fbd2c677889096a0c63ac4ba00b3742097f948959ee52f67618d2bd898828d6f381bbb606cfc89f4f62c0e8bd0f5471bff91efb8c657ace8f1d99ce8a4aff08d26a9a8529dc1f195d7518604cf6686d07575aa652885f4678ecf682174a5b67bdbadd6a9e274aaa9fff4fffdff69d57ac6fc342bb35ae666352b332a6c52cc1677c4ddb8232bb8a31955b8a3ee6e71c7bced6d369bb54affd676dffdb5f86dd7755d148a41b81d97a3603dab9ef5d08cd47e6c404842366c371bbd7142859ce55ac9ac8866549b62bb8264fb5b1017c6e61e93191a0441f093a03eecab07fbdac1bec2bec2bec2bec2bec254353535353535605f3bd857d857d857d857d85798984aa55235eac3be72b0afb0afb0afb0af301a3162c488a15ac1bec2bec2bec2bec270542a5504abfab0afb0afb0afb0087070562bd857d857980412d458ad58ac092600000595020ade2905abfab0afb01a2b58b802595ce64cf60379fc1218e3fb216ceffb4050c70d9cf64cd654b9cee3ba283c250e6c07b10e4adfba358c04035d1a3e127a1cc7ad52b4d43581177b1d470ba9f69c7960fb9cb69cd51cc803ebaa339881d5f7b17d5b0151f89c0563f5e5f1da77d57fadddf109e14d1c4fe69399a1a939a12a0af54e51a80f656d1669bb7e618fac45bab149dbf503f60641850082770a81b5f9f418f189fd90b15991d1acbc532eadbc4a37e92e5da57b7b8df746ca7e8064a4501026710d4fc157700dd3f011b6f9ca31cdbfda19df47f5ff983bdc5c39a59452972f6d2a6a2f68686669b5b22ccbb28cc562b158ccda9ee5426e6d365b4c492e0a8db66b9fb25d83bb8a39675bedc5655996658ec562b118676dd6666dd636c3fb40d06492910967eacccc3b9d39d931f384b194cfcaca68351bd2ad2ccbb22c63cff2582c168bd9215bda99a5d9da079a64cab22ccb30168bc562b1ed5ad3d49c4e28948dcd8baaaaa9b45ab321dd9448922449f2deca679565599696c7c6ac8f25adace644922449a26c6e79cb5bdef296aad4cd030f4000010c183164541932dea90c9a2dab4143b5bc85638a479324499224edde6acdb65d23dd946e1e2049922421b8b7dbbddd9b1843c68c195aab54228d4a83c63ba531737ba53af2541f4cc334b292ab95d6a9541856590daa43b5ac33199886693348922449954883060e4e04114850a3d6a8f14e6bcc3c8e35db8869cff2d54aeb542a0c7338863bc5a36339a7444ccb394ca5b498837070324f7ee52099278fb927c7b2cc8ead74f833dadb90c66fe51ca65262cee36aeb087250d0769569dff8d6e71c86a9d45e6d093e464248b5578333813b466ce6b8fe586c5a30b30b0752c9776c401d397c965e2f9ea5cd8a1ad2555512b0aa0ea97deb6748be53472be64e0532ab5512ead8bdba5798eea525ecd95e59d80398ffb32163f66cbbae7adc8e792acfb7ae920dafd2b7268e67dd5c47dfb9b8d621b392305babaca3a5e82ad27b9b164cbc7198a57c8fb77ef6b51f1b1092d04dc92b15d53a7eebde9ce5faf625b4310be98cb6a7d4aed88e90b8dc9294eab85dfb735bdcdbccf17bdb7eebc8ea9d6cce39e79c73ce39e79c73ce39e79c73ce39e79c73ced6da2e756fadb87362396b39aed2fa61b015affdff377232631c98a0fc7a4e26d467e55150c76a65ad28001d1d7b3101668e8d8ca33b252613ead37d14d401a55342c6bee4b73cd964b9ce390c3d198975089f8022235f94a98109a90774ccbec1a4e77476d554c577df613d201929237fbce501c99884555645a2ecb47e1057a5622ed75a396bb98aeb7b3c32f6adf5d65b2f8d06641a31bfed07b78a94524aef1277e5c60acd989c71c6390a9d39b9e3a2e46c83a097524aef92fd5964652eee3caef326d6012371a0d0e51d09654cf662db71200f0ea8d5980b2ebfad98e334ce1cce1ce5f1866cf71bf37c3c9e0f79be3571546fb41cc77152ac48b98c69a64aee8d33c71bc79023e2e2da7d9feeb0febcaff33e3a84f278a37d4d3d1eab5dd3d1daa7a3d5de5d20d3d15afb7ddf87ed5f6b6b2a1586ef1ca8aa2843d38537862307e56671b5b51e3db4d06aadb5d66a5505b031b321b3440b2bbe387b628f1e4bb495a7b5145da7053d660eedba6af1e9c4d93ceff3aac5de8d91c5faabe542d753f7f059e344d7b46dff9d8005f8ca7b2cd12a58c51e33c77b4c0ba669d663f6b8795e42a4508a1b2b3755c22ac22a6e9cf8fb7dada64f06d461b54c58dfce6edc380aa9ddd1ed2a8659c2191a8fea7ccb136fd052e7c69892a6c6fb3e8f76faeab4607aa713eac3c95f685303f2e8e074a299418115d05175b6f1be7a4864d5dc3930f81abac16f87d536600574741aeb17df4ad73caf97ba57cb803c38d8555f55d51fe6b831a674eb609d2f529412a5eee51c14fa6aadbd780a8c31c61863931399a210579cff33a753a99b2829aeeb3c6b6dfec2938f93e7d9efe2238abe0fc440831c37628a6e064dff4e4cd388fa3faed628478e908a226badb5d6da0f0475d4229315bd8e1373f82cca71b1fed4b392f8f257a70554e7dcd55af3179e7c9c6c4c1cee2c07c5b316039506beaafe39c59daef56b5669a0c2c0570e6620eedf5ef8e08b39ba08a976cd22cfbfd2594d56a4f5a3f3c3fef54c8f72627c724b374ef08035a594525a7d2ac6b8d6a32a7ab79963adfd60bfa6d7da6c7bf39d42c92de4933b3920184b081b7f4ee3345d5dd139b2c1a5744aa3354da9a69a6aaaa976d9252dab719c4cc70375b2cc893333279c39a45df2d6cd55cf7a68466a3f3659b67d8b0be282bef50d95335acdb3f88d3733c7b5077a40776ae6b8c6e487f5ad3b42703dd6afbd6ebe9b6c76e83b186bbbc3fb68778f6c36ca0971415804117df806715852d9e77d7ce5467ce5ef9373765952905d1a7a9541663d3467b9ce3a38924cf2965e417aca999356f46e3f73fe83aff3dd4467ceb5dab397bb5368b4e77e48311c799d5efb915c11af1ba11ba11ba11be1c6ca8d154eccebf57abd5eafd7ebf57abd5eafeed5bd461b05b0e135735d93d2a854cd9aaa29443325000123180000180c0a8671204882200912e90714800c52863a5a54382e0fc86381382c86511044610c0300008230080210867110b3c6cb0d007644e4b4aa9d07c0f19fbaf6969a4545d62476cf871a82d1f16d8c6fb173d829c8bed405a81b5da0440534fb786d0cca0289439185526882c414eeaf96f90fa4cacf7c23bde41579b2f7c279b38ad0842b021e676adf960b005c36b989b3bc8470182054914725094781fac60fb3e4a73dc6d86f7a419f7c469bdec404441a85190bd88c9a90101ff783ca1bae2732a7c9ebcb172444623e626277be379c60fa5c670e26a1ae0b077faaf31ede75948542f62d28a69e66ba38dafae6ceb6786faee4117a0e17789b4335131fcc21a65ddc773910bc93c06ca5bcdeb4946de92302529395e7b766e23c318c59ed5114e6d08f5112c6828b072a69f1fa0f452b4240357a481afd5b0ff7748624a2b5355ddc9a6d8a75c67c2e0eb0e8961e8c0b46d6730310e4f5ad4f3e51e78ef3669b0976530ae7858432ccda1b2f2f15aa22fda3e1b86e85d45437623f56c096fb56600d8850a0625fe2aaebf25bb4336639bba5365f11e494459f5c550a727ff71ae08eaa952f0582fdfbf7b72700aeb6b001836a8de9d591f6a7e0cd052477196eff7ceaeda4854d7d32a6f68b0dd05dc5e7b0485ded58553c475a36e07a99798280787733e67113a2bda30db8e2b09f97f786360338f6e6e173a6e9d02cdcc7f201a603f14fa25e91c519bfa0ac03379deebda03e46d6b069038a17f89de7a4ec9166873450319b101c04cde02eea72cb5d16529a0ff04167b601f99574956cbdf303775900f75d6dfd706b8dc0cb2dfe7f77bb7d159662c376278b1209bd1bb72286c6659596add7b3c795eaeed532ef405dbee903645f96bbf55f854b1e7c21b064a85a6e48495b21fc15e69e474d3cf238fa3f8a3234bf64ec1a996b76489b78c67af9b576b459c758e1220206ce3b8c578b75971ca8d301eacfe2d1e6dabadc762ced6d3e67b65926e65746118ee56e0e3d8e8c88b081720222bc624bfa0cf228ada29bc1492d8e5e354cc53f2a88407a9625680ddbdcc96bbf3b453f554a2f473080037fe3a755777d7c300458342c4b58dccaa148687877e1920fde0bb8610034bda99af19658656d7c157a4a441a67187d53412998343d2c678fc83eebda5f9d75cdb9f674e6496044f646eec40e32752d6db14fc66347c44f929f09f2199f8dab98b935afb53456db5a8df1fabc7c528603b813f09c768fe547d370f80b4135349b9acd5a09019444fcae99f4bbf668fce6002ed57848de6e00b90a92b3cd9707f974991e1e0fa1f7ea9ffe0e59ccb1e27a4d235afab2423210c0a44dc670ca24a7a1d3b7d3155f3a9a8653a09d2338930384beb614170bdc3a674dc35b1afc0ab493ff0856fae06d092364be9cf8ffb0800fce89650999407f7e274e227254c3b1bae7e57609998afafcb7fb764cc8971e330e40e76a1eae29c3bf0590177f3a02d2d6a12564e26af53fc4bdf2cb22b0b235b00b991d4b0f3a1d03fbafd79966be61d051b85177a9413938c1644c6d07892ce92e6605c8937994be525163ff7144124ec86b9fa11c665e21c972519864a522aac230f3e0fb0b099e4579d5f4b735d760d70c414a299fd523961114c64fb9f3fbaf620b3fbfb3f167e6c5ad2c6346fed6975f25b2703cdf9471f672136172c124205370312995ea725a5591d41144ddc3f401a70c5610c1825df3d88974e046c2c8680eb17cb64f22389c5b5fe42c46023d81f296e9c9671d6dee9f83a0eb7bc72237ac012a3ba1b233e6ac5e710b61f5a5e254a0ae3a908764691f63007322cc4560d8f511aab9d470bb8fc1680e3cdb4ee00f377df795925d6eaf07789f0ba434a343df9518ed9dcc218fc2e8e07d9d348804205dada458cc6375e5d472e6959701ccf9ba1239f80f84033c9bab0ab202c3f64a0075aef637f178d57dbbff99315f963a2c2c82be3183fd2dfa1ffa0b549208fcbd01d140259dc6516bd69ccc0d1c89708e171c08e5851968d4800d61b6a24cb5715f1d4465efca896fd74d46d6ec236d9b9fcc1fa0c66257629d34ff92db895ba6670abe735a7d6d55e592719fed628e3a666986ee2e9e1da65d1438b5ec044bca53c26388fa221a04453f53ad7a104124fb9cf880dfb931f0f9ea998eff8978b2d4546ae5d93ba150fd229a4a9b1eab492d33373fe22e75749669050538ad21d651a2c833e934e80a3bb7dc5d00ca40cfce9035b22b46575f0e7e957fb6c6ae12cb12a1375c3200449800c454f53c9db00a38cd3d2ea7f40a4723e198e1a8eaa4447b1708cf073e8dc2644acaa2113905cc1e717125cf905872f3bb67b9c51daff7b74ca7aabaa10ce751c567051eb9f0c0ea5e36d49fad42e8db44defd3d1e54cad7ad85905a55b537fb1e6f47e0764b7068cb416480aed86d460e91a098ecbdde24a382e59767fb3049bd97014ced1d62bc6363a163f6905aac9e0e96c41e86efd82ac45c5402100d06b93d964396a309b2ce3b26c2deae077a936b474baa1a0b5d39a9f89bb382ccda84db6fff84044be7e616c36c3d98d5f25b5c32d3755e4f6ad50fb12ec89ed6d8c813b16bc61c90cb094729c7614fe67a72ac027bc828f6c9dc0a0a7cc26e304464eb9379258f9900fbad75bc442c03a1d0143c2d527b88d5080da3d9f5beb6a504c15aba448f7d74f358c17f21ff408fdcf185a3addb76d4a5e6bdfa4491f75f407f12abe379f2dd2b3ec5d746726624aa0087537370ab782c27e4870d481b6944aee353733a8b3d904cb76dff5f8094ca54aca223c5da53f3f3d68144af2084e1d4309694e0cdd9cb21c1ec36d01eac1a932790d00fba9b54ab52da7f10a43b452081a202254749e2130c4a98db2a9d295c58e375cbfb2917e0a1a24c4402ca726eb588cb9a25f144d8d2864b359e92c44ac7d4cba221cb25770c550033c8062a7f68d29cb209a850429f7b3d2b43f960823f2ac79ba6c0054e73ab3f77f276d006b9e0fb403e88a8761450972fd55c46cfb8c02a4a5f954ad09a4e4ecab5847b0c15afd3242a3c797d0c06c90f519a43ef088c7c905c3a5d899ac9f70a7671c9ad509dc0cdaed55c8b027b08ff325facda64120725f28bf0c64f4e16ad6f2d1665ed99c9f5bca9b943859386ad354dd84f3c94722414c09c37f08aeec00dde002c68995473c49b1b01b9607c2d4043545b139f387dcfb12d02f5a02dd90284590709f0c3a1a19b53cf78e446b9c0e4c817f9fd264d0d8cf5f2d87b90d08049ff420587c58ebc052f90d3a8f4cbcc542f9c0987510d4d262eef995d74dd499f1f68d2316030f4c1f3fd17510dd5b7d2c272d68d36d935fcf538217b343e71c3dcb0d93fe5dd569e596dc7da949e7ae2bfb64c754b9aa4793dbacd10512c9376cf32c42a7c1ee68a42d2ee325001cb34e21deae1768cda5f8d1c6bb5b32cd6ce72444623c492bc9962c29707885ba4bfc081a0dc819bd2ffb72d13d0fe3b82830b55b9ff72894698b730dcf3f57cdc975b012a0553868a1a9261780507af1cbfa0fec094c780d5f81601905a807d8a1947f851db7986e9bec8bec57422e6f3ba261c95bfa12154753a49d99f8649477387cffac7281e93bb8a8361af67c33b96db5b1dd1e26a072ac43e3a81a82fd3dd7da00254eece450e03185a22ccf8713a45ede38fa0fbed7ee21b2d89739bc8b16361604ed3c6e0fc01b01279bbe306fbb6d4cfd9442e04e94ec29d1a4f78440f08f8cc4581bae08a62088fea1f226f0ccae09b6d0580a84a30450309a3870933226f274d02786701248dc5dbc4574022c54f541ac6e6a865443e8c6e03ea28b9820fcf41e47d51ade8dfd693bc634b4026d0e86f47b005eec247cb3c68d27fa908149f40b51fce281a21f225961e445c60e142e4a1801981e3b400f45260fc74f961ac2b295d23722bd9dbc83b80f6eb65385909a50717273d8f805dccde561c375332020a8766e6cd7e32d7c0e07848d74338fd32734194b90da8af3b387455b8765b3f82f774757b2bdf7073c4bf25dc653be2b13cb196579ef5b79fecc675842d469daf222dff97143d7bbf2e3f6a09299f4ca87544d63837fcb57e0fdcaba0cd3e91afb68a3a2b822877ceba695a74a93222f1fa58543fcf2e947351af5719696a41c274aa26f2bb7c2a393da9ce0815c91c5963d4cf5fc969a51644e8180f218b3c4523d25d36a853d97533d19baecc5bc9624f29447a4c06e41af61ede42223bb518a1316d9057b9d7acb3a4cb0a7004759d6dd7cca763bf0fa04b2b40e7a78a7d5763ac5f20a2d8e7526b7f30ff0a0042dd47e1b39d485e026430be3f994b276564c616d1ddb8db5d1129ab4002641267985b9c10649dc1c84fd31eb9c47e2c8f5f4c1bde5176b92390717c530892d31f67c6c54d85dd618b233ee3e199e044b5fc6865871362e1600124540a038b119de47e116d66b9c279a3ca87c81785e1f77095be6e58fc87722ef06d9e8387b5528f956a90aa9c5d37e31b4e8de74425bb510f24b73d0be0e54abb3287ca547d3a23545cb79d833a150ff74ca045f28cb3e9f4f7355739e5fd1aab95dcbdebca022a543fdffa25b662374d969ec21635280a534dd603f5da23bca492b140ea2cace9ef4af2eec2203027c4c76e9055f08665f913a8c7939f356619a5db9457ac36f6aec95c2054f2a6a5f293bb0373d198104f668bbf9b5d2330eb19f6d8217e34b5b141a8c29996e5256d1746c19c281e760ffdfba59e1858c87a1b777f3b97eb5c154077ac5ce82dca338239413cec06a90a6f58969f813c5e3ee2f29afe2c9c62f84d083705f7657893c31ac62d22c29ba0783984cf9916e5e7602e5b9a9491f89cf59c90d6a39d71f4e98c550e6d9b0acb9b16e54f21eee8579706e208ff680e6b7b681f44c4070139bd771a99021b556f99dff83073e9926ded3d76376fdc1652dcc0b0c2bc79cdb679a014600f3902310883709ec856a682447fb63a5b17e79041135e986007683d2620a8ddc7ce8f9a99039f9c0a65de311d5e2ce2c4f8cd191d994a64135a804968649ad003406b58e29b480999ce7aed5198c84560f766888ca7096100f66fbfe5011991c212db0a3f54211400128edd8659af4291a39cc52efe252a26bb66172cf575087a51ddd25d861d118372d31fc68e4990b8140a23a1a4dcc6c64c664eb45d314ecd0a7e1bc80aea03f3680cdc2996730305948ec531bfe86c9e7d317df74d14ac354cee3d71f8d5611c90226e254b908556b293b0d72f8dda3f38eeeb4c86f996dbd0060a78dffc84b3bbe4cc1d6f3bb059140c7450a3b472b329afb4a86d39faae323b5c919417571106da6541212ddc6aaf36ca99f652561d00becff2c85fb94a088010178ca4cf0bd32bd3c61c96a74b205578d0cfb58b09aec2d8283018ce0993f27452ba6500f6e13b20028673c32078dd448a15b14fc66394d55f82fdfd659a19f20f580df4de56b42923683dfb7fb57d274cceea7d3fc6a5fc0664b4f338c8faa561846c54658c68b2b314bd257de5c8b80ceab25baef22bfdd6a9dac342ccab29cd60207dd57af3c45097dc73955fedb78cdc30d892c66bcdd0ef74205edb36d59fd3e58b19d73fac855b008b2c34a3d92588ddfdd75ad1280d9c672885249a3670200f7d89d68e3f58c15a6e1d0e5b676e8159e0d9a07dda48735fa5a6db1114e7434252dda3c7acb2ec0580c71ed5f914958ee122411f9f6f9d36ea787de36073f8baf5828d1565ff7ef5241b6bd09b00962c9b1718eeb9ecbcc29be466bf2f7f285cca345525433b13e21fb3090fbfca1ee95453d45dd11f2704a9f4b2ce8de294c138e91df343ffa0875ab88a30a1a70c2f3622690f03fb018f485337421652267c5c1ed502f738eabe1f1dfc98619a82f48a0f6a0f29fc5ba379c650c5b5baddf35c1d690203ce58f711caff5a21a8449574485544a22f627e5d7872ab2d7f221531f0708ee693d54475c1ab25b41dfc71ef301aaed9b0c4a5984e4c81840186571e3bd4e11d418dfbebd69736d628f3eba8d56ad6ac63022c39f65e2fa681d5ac9ebd287681781a0453fa5f826b7c669de653907586acc126c57a70ea3815b7ac162118214c52fb5545378e2afeea2a87da6646a43a820fd5230300bf5184f7b3b7d90c600fac04b8494742ddbe4f9d9ecc297526809567f73226c6c2fc0a0d29695e51653ad6c5b130be05f57fde4597ab035476413c3542f0ee9449bdd951ff14985ef92de521e53e6b9ac7088a78bd36955eba2a17828ac84f17b422db7e3e975a14d4f33e4d46a0064934a2221adb002f399516772294d1e0e09e28630ea87f286609ccfc990428d35fa8608300328f9f2c9db2c7ab2c677749e845ef071745c2455070d09e3728995e6d8f4fc6d9edf2a9def9d40f0f745bcb65a9a8abde79885c7e4e8509fcb7467c3d97ed23a38c231232dc7d1f51a44891a57a0e5f0136b88a3cdd3debaaeb00258385553c5b457133bf501cb6e81519dc25c765c732927264e6ec7651e33b50a7d37f8fa60ef59217a848a1f425a5c4ef3621da9230a6a303cd5e053f1cc82e7675d99bf574a8bdd83b405c46e9155b2b5ca6a2ff95ed547c621437abc5417485c54ac12f574c2f56e93f1e47331a55fc5535225f59a834b113518bc2f3cf4573cab3bd414f8e44a91280986ee97212b6548102d64802e561414986dc62c9413872009b04e9edd14da88db53c06fb1d3fc49361c6723bac8bcde7c1c578c0e1c94be4f615ed25cc008c2300bcdaa122da9482df24c4d79f4fe6b3972cdb63785dd4ad0d97a5a121eda58cf3fce471977c2362dfdfe900dabf148d29c350784a343d88d0469dc5d015682c9b9967eaf14d20a527169b7569e1e045492c082b312f4e7bc4b4a35445a02d973fcdbe0b14d5440dd090b254587bca6cd02ba4d3a346734c7488511d730d1c9df2d538d1f474d60b8019f7f92a9ff7f678fc01a0532214abb16438163c234999edce367c3f2b626456982c7539d9441956c6d148188d47a6a29feae7ed20bcecfb0331910a3a602b9b415f503a2905a17a23f55728495c3dd8afe31f0337f0c88b38c4a425fabec9f7dc583d2b88ee984ceab4f57655e8357b29dace4da0f2d86b2e56090963423bfaccbf03295cdb53749ad75b3e7b913f8994207637ac820e59d68271df43f767e310a8d14d8ad49a5e87638dc42d0f949914b68a2518ee2d031d94d0eeca3b9414efb87fa02d5d78fb957eb8d8dbec09b2746a99b442af6355dbed17175a13929a1aa7b0807750574370a7edf6cb08c6d8878515823c96b0f2ddebb0fdb2fc4bde8c8c13fd72afec976b1aef44bcd486ff68a13a7f40bed74edee0909423a7b00cfd29bf8c4564998a112556e8a9f9946e7393e50d5c5c9254d30b26bb3a2e132a4ae26fcc9428ead4892fabb6be139383602bc915bed5ff1f146eed971f1dad2c453406feef443ba511ce756d39f22a68c5505d7f052f5bfe5ad09c4f7ae08dbfe17b0031f95cb3dcad8780f02cd395b8dcf72cc16fc4eeba423916a246c0c86485acdbff9a7350259a4e123eab9b6d88e6ea6f1e56e842c41041344f7dcbcfedfea41e205499c623feb2fadb1ef5f825dc66ae4845ab2046cfe965bf5f9e43750f32aab8b39ae70ca097dce0ae72524eabf1d3f934d166aa47bd91dbd374c86c9e6833d55355ca6de65a9493529bb91ee5acdcb6aa553d29a7996ba24cca6de7daa849e24c0c6ed473befc293edd4556d3df679191c31348d490ba88d01fef264b400a22d2b9a38982a08dde7a901154b6372f23b5981721cb3e4510e95c1e3559fc1447a48b741341db5f74eba88c905a24619aaa89fc2e9f8a9c5eaa234245648efe7d4f9b0174f9313977a9c208ede451c9e2a538235d9c8d88def7b4d59a3e23d8740e8f8a2c5e8a23d2c532c4d25d4ff1d5349e98448dd445847eda5c74ef210b3be72cb5a42305a805e5969753a25302c2616b90e5e8cf671c018c857b39470a5e0db4459da7684038d0f3e12cdb91b204490dd362fe2844ceeaf2f2e2f8d520c3a21e99bc36cbd9d5de7046e7396631e62dd6330b17e42780e4179abeb36ff56aaab17a513b38cf589165095b799b19ac689684672c2ca4878659690617c62af9026b083bebe0d5108d0972e5691d6bbc3a9236d3cc4939cc5e2aba8d122dd91597902daf32e35e18bafd4912c3497200dd443d4959459152af82fb16e83a4f1b2465d60c11c1d1cea158c5f7086b996717d0abedbd7f1049082c936423284647dd5cf28f2851319695d264edc5c883ae0604d45e5532a4d6e9a6fe7aeb9cc8584fbfe9e6699fdbb6b4f66a99a391d67a44322db67cd1ae2ceca586165f04f50cd67caf0ed07009ad3170444ed01d060fedef55eea7d9a880f932832dfd315cd89ca8288131c5f1028f07d5d665fe53aa91a0eacd12614c01f08cad0effedd0d1b32994f73ddd613a315272cb1d1d380d8f2a5e05d600f38b2d0435519d1891405034c4d6063d5ba8811ef52cb3b1812105af8166be855060613ee5f90373ee53bbea7e047b1eb3d1a7f37d41c6cb3128bb46262610d29409eea392e1f1ba09249c5952bca1fce2d1a9629e94326c2ccaf3765ae25e54d9c5840c965a386232c368cd9d914286aea5c4c884723145b0457b52d82c99de753f2e85655ff59deaa2c89c067821aa7d3bad2fad87119eea288eae424e1583d3e180ce8130e0a8665508e784368a78a4d9bd9620f42f01c88d21f407aaf0e4dd49e4af661fbb5aa2715d31694bd0637ec4912955d9e815aa3cdc9213a54494e7a0a29a84ae0f1967ebb23ced3421f34834dbd61f52389920247d0c6a594d209fbaca44d0f80c5895fff7ed594bce417d5a3ebab05d5baea8ae3493e1793460c5a24334afa5915eb5017808933b13d296a34ae12e54d5fd995447b2787bb04b064099a8d5cd44b7ef506db82712b100d626b94a2552a0a18a60ec85a27b6e67775e0518927600fcff0ec5270451911d91cae11947fe5fc2a2261ba821170ee7c9f741e7ece67baa87dc554c018aa9d5e9b6600a426ef096ac1556ea215b086f9830531e5d1df4c407959a8b601ffec17bbff96ca55197ea20b36fc950ea13102ece5c71c9f19060a1f3db8c941c9c0aee8d13fc7ba8853ea3b16fb2c299f399edfc863b9a01e8d7339b2d6f35f9b4eecc3d7f7104565a61c5d061149eb7427dbdedeb73aa9d307e19fc9e011c18f66a0ab5ff7d05c2754248b07c55bbe2782069a31f62ae37ab6e7a594a40718efaa6d56cad1b6648f28aa2174fa39e2d3d3cf108b2f5f310d7c14960896d4d597a0ea04dd3364946bace0b0d807911b41c59d4b8a48969846ffbb414f615792356ad38463f284c6d7607d80883cb4d0a7a2361bd68f0bc20b2031b2befe80c0e1dd2c2b39a0ff9de21ce8e111a5c9271eb40e9e7e81c43d6c3b8aa8bb2002f7a90afe171e3a792036fcdbfbaaeaf98a1cc52b6980f0e8d704858a229a5a891c86ad8fc122b957026d55161a0fc748358721e227af292c8225c09bf29c227e8971c548ebf1b607e0c4f25c3e605405e1b1a0964b3dbd37d2a6145143fb527611163be75f5a419d9ec30130b567b5c4995dca4c102680feed6d3344a02cbcb1689ef99af3880640abbf15563182236bc8d414d1e4c2c89ad4835efad46b42ca633d55185031f523dfe60a62efc5cbd9cbd9ac42af2ac580ecd33451c819df25541415217203b5adc00af88e44754d47cf5825c1146272a3cac55ca32dd5fcab3f4ffcb19f020d7049707b72ccdf361ef3235aad4092cab137060c9bc1b315bf6affce281c0148f0b3eb19f122c5f3bb1a05850dfbba06019469d8821bd55254f582d4d05cf42d6b826108a6bc56695beb29d30305f9a7e014d8e7587b0434ae75a12ae061c99699d5581f3f2a9aeae083d58ed737eb7f26878cef9a949a3993f6b8b8337a3a76eee0b9c9d68900297988eda19eb123aba970ac7fe6e10211e660ca9d690a8122c39cd2b6464760a574b5474420c39ee4627dc22362923dcb458b4c58cfa5848b0afc6861842742b2c9e08d5ed9900778080fd4b458fa76bd0b8c5885171f928483bb700e10ba08374e20ccc43542d2359f8e261cd6635b36ef8040c59babb0e5e4ff27782e58280a2f432a13420595da7f0f663e0488e87a71ffba686f5f3aacae94aeafa010b4eb7ddb7c8aa41dbd1cb2896c927459f3c2119ae06a96310a6f1d4305d2eb385ce1f67e270cd90f4312e064536f095eaae72ea493b91836a69080a7410fcef07d1d9d8042e95b11509cafaeaa8d77466b2c04aa43e021acd1091589d3792db2a21d439f9787aadb68c7ac0726c32927d8f61708f3b979ac1b241b9e5fdde43b004f13ce7c63ad5ca841771f194f312e74245535ae34c8066e7ced708bfc429301885372729af23698f73d5ccd594bcfbba1ed09cc216d9a932a50a57553157a71f98c6a280811c6447c9769b1ad1416e563b942e390d43f0fbd6f7927be89334d693c9ff6bbd48c0d6cfc706fca78301b394b00ea8874e9820a9b5eef1dcbdb09de260c80a430a55b8d025f0db48ef49dbda68244bc7560db5fe48968e191855ffad99a3621282a66d395743091d4a46641815781e6bff44116cbf1cb9c8b64aee81490b4a2766d853a3219edbf130ffb05a6a1bab59650cd19e5c1f0e68d9b0e114d62df7107fa2a460b9b04c409017e61f59ce34606ecdc0736442b0aa2471111f050861453cc6836708f14b16eaacafa5993c1383dc787395f6d6eec1dd404e0ee2db0a3d8d5525e7789551208985fbf209f51ab4c5a7e4c38fb57085022f9af2584723811da5f2dfb1d4b9390c0f716254b1c115c1f3a916033cc33c68c0b89f7fbad480cb06d1ecae1cf8f68943b1bdc442830ec48e1ebf8fc7bf94424ad6aecdac044d384708943325fc79e7ce89c510df654f16f262b0564eb0a5db4e799b73b6a0b609614b1ffab440ae2310331159e23f71eb9271ad810591b391555a65ab0ec765b32ed239bc07faeca281b457e656610c9c172908dd7f3483ccd41be48ffce09ddb6812b479d975061123bebc2d85b7bb9a173af9f7ea29c8c670447f2a9081ff8a95c4865c8a7a89331ec87cf2c4772da101870e2867a0e0cb202ffb93ebe649c821dfb236295e783f452cde7afbf030a875e6bc0cbd22201056ab017b5d2e8068be5ee1e2882c94a00adc4a9914dbb51467f010983630cf76f4c45aeac7fbb4d601b749f5974b558dced98984e2473d2ddb2ccc562a94140fa7446e1d37e57f6731070606993545230d538d2430795fd46d78b124f242a900866fae7694e148eef76887a07827951a4a6d30587045d9113d579d2d0c7838b8cf99c22be99d74e418499803999a25421cded21bdc52adadfc87698bd65db7c2ea6ab3735ded882bf7324eeec5e1243b1b4d8c0b2bd639c52732a09ba458666241151f17c06d23f6896629562e5c80ad1cdf193f43b5f69c74849b4d326c2436a0f304c1e4d97c2f3a16e75be1e7e02d7ee35314271c43535f62c2f14bbdf3ac0c067273fc01cf23f00e07a076128513cb37845f2c6cc3ca4b0b1bf6227f14de2584189ac38e4aba19935ab752c7e4dfe9f1bc095bc667cebc80a1ddf2b238dec94758802f066b33d5674db2ad231934a531ebe82480c49588f390a7ce2f1ecf579ca29c7c3a7278f122eda31de0da2316507ce591df2b1432cee4ca4a71d99f96c3f572d4c980ac99a8bd40f1433cfe28a143fa6f31f095ed1eede3514c0f4a0c2b754765b1569d26b340711214d2101c3a60c89a9b889fc32a9b8841b921300ba15b05aa92d1d5986fa46ffc3b09851e1d3286fe656b9fe3ecce359a8fd336bb41d671dfed27ccd684ab57d8f8ddbf5a661e995d23f1250203cc08858701f3e0fabb8d10c80e2311bdd9b2f66cbd3921c8275cbc3ddec2c6433acfa65a76e954055acec5e14d9ff4bb21e6b0f1958b299f210e9166bfc17d29c97e5c4249b2c19785831357a05ebd97e6ddc6db1ad9a39017d0a0b918de7a85c51813a0a775f5ce3a3614fd4ae6f5c8dbbb0e3ccdb9792fea98b9620bbce0b2b8ffdab72f165216d52d42ef0abb8a49413329ab5132c47003365a9c775a85a7e25ecfea2b4e5f5701f11e35f84912488e6a5c1932232f42f16cd6d2686f091f796eb85464e7297df85f66c74840582386f799a7b8f4093386919123558bae9521126a1e204df07a4d1ffc45e0189cc34047594d2a4ee67c5c1a7ab325f659f5a89c0fb575a86db2dc41fb3e270db485137fe91790485f0e306c2e9397a1e13bd04bcf7ff1e7abe834867a20ac8fa3f038ce626481f41bc34a3a84248ef9dca58d7862a1aa0555de807162e2a18c64525d5adf1f7188c5de607010785a9ef422d5cc1434f502deb7269532f535bd3fbed9b3133b8dd1bd76754566c7212bc5e103bdd0f2fcc241d432063fc617424ac85329c57b29709e443db064c13bcd790e67e4c9992f9fa824b5c586f59ec81938272437b4c316a96441cb861ec1584fc13e0ed204c321527f4b48cb46910c38aaef8eb48b216ac9402f92346e9292e34b344b09069eceff2744af5342ab12131f9b28420550c2dc1ef604e1be303f482a1681a385e348d66c9a76bdf9f603b1e9df256d70ef0074fd47e54f9dba1907aa8578e6ad5e33afada16d4723ae363338d1e57e432737b97a7457fc33236a8e192bfcdee20c42f24af2b2db47a623bdcb3312cfbfe64692572cc6f98130c5c02b5827bc58a185ae769c9c4c4a402db0e6a0b7b5b71fc826244ee3cbd53ac4523a0c764ffdcfb78833c9161264a586f5f25893bfb6508bdcae16632cd4f22616e1714775a86896acb0757a36f81adf68f604b9d0afecc37b0f023d207de18eadadd4b4a3ae9554cd289f2575f5ce401d82d41e0d14f3b1a56ab20b9481e5cf2170108c4a34aafe315d075593177900e0ec412030e0e0c2a203638a8f1bc4a3bc241970408e3ee86b323fa86b9c4085184f1e838c85a3f28139aeb356e8593e29b25043497bbbe3a091755c6c4ce197205847747afe2350369a0f669f329fd57432402d89791a27afc5d389d10a29572f073fc9d29e0fdc8dc6e243af4f831c47b89f93c09bb8ff73ca4b68661164381f38dc7a68dbc4fe7ea115fda8906b7238e0669f3bb221ef5437b3597623694868ff8abc3415edb95330b1bae76f1592830bdd9ac774df0310c77c9eae638b28f2945173204f040babf27a3335e1566f06723e260c9cfe3ab6ead35a6990b5815e3f54b95abce4c66904d50509bd42f5c172d117756113b711ecfa1770eec4e06bec8bf9d31247a24385735f23dfc3595a6fb6af37ec11f4cab2252c4a189d645f32dace61e3ef681de13d24245444a2b794be6268430c87e3cfc908a595499232300a6bd8195976fa2880d907e64e920f0afa6051c1a467d458a5d1382a16d7e9217adf0d52abd891dc0ab633cd5537c16eb718bd9e0b7898a4fd32254d5327d9081964cd1f066a408b4bc341c1b93b5c31cc72718833a2e60679ce48c81ece17b33cb6db24a471863608d93e50e9bf91822f8bf8be5c91da95b204e7df4083401e9f0ccf7895172f45c130fb7ac118b35b4f29a670e723431276641cce885c9606906178baebeb59b0500e4909b39ecaed310057c98ed3bc0dc0d3e895da025ee9ad41db6e63937560a9efde7bbdb08574bab722845b955ece21a4998c4a53d95b9148be0146eeb1e376ade886d065b6eccb935cba496bc77f53df164565123212938d0998f08a3f4e2a3abd15dd4d5cdaf531c57d20a80d2a9a7a78ee192e9f5baa007104341fb6a0f30275db54fb6f941cc8a144d8b4dff2d7117a0769071c3a9b8813bb22dfc8f61da553961567732f20a17a00ecc0a6a22c0f37c8b9e1b8f5b3260a60e47a10ca5af47a4c17c77f4a06a6079a98461e80e045d130b98805cae50455d3176b5efa16cadc0eb71182080b2e6f134290ae6109cd058b00ff157d721ababf6dff35e17c9a23ceb0b3b375c0e585c8491886cfbacb98a18791a0a2defa845b5b41740d115c7b1a018f487df3c374caabe499c02b8133ecbe90d8697f8e7e85a3c795583fdf6d2188de56dbba641c46db024482634cb03e148b8de3b67b6c3461b3e9e40bfdb8c904d6e65bee57bb5ca2323245916fd56e1f5fd6c06e8e94e68b6ad7d3da712c4ac173ceb7689246d54a7600e66e8bdd4df1e3a751c50824ab83a203abbcd6e1b33fd0092affbfa34243ec495b47df53ba54d3dab925943896cf44a65d1d16c601d0499895bf8dfa94757f270b5602210ced65849b95ff9e6c24a9965e0a837c44346716378a4f1e6aad650ef1e858415ad4c294315e8ecbd250940514b85c421e9bf199faa2cd5e098611cb28e3182975d0609ff07c689bc782755c28d4c64d1ceac07080182666e9bc7c60dce21d21c64682fd2682d55b4ee1fe46450fabc049066929a73d1d94365cb4a84f0ad7c27bd72f5e945d3af005900b3434612c96a28b3fb3ba1c5c617a2ec3b86ef90b372a9a52a99af9644988ee23887833c044f7bc05699f6710b58eb767f9fa7c50d5d64218f9a2a97c7029ed198819052f5ea1486e06d137faad5a811f79712878f66d3eb67fa6a2ad6f3260888f4955528b73b8bd397865cccb8509b8e30817f0909d3a87cfa2611b0f95946ca741babaf79c30a71af8683e77cc7990b036bf4f3550c541a05431c51a4677d9aef7b980cb8f00fe80df1132ab2b45ed005fc05191a8ca84815ddcd008ce184e554ae84b75fea1f7b2c7014cff722fdf646c01aaebf944f2651903428baf326e9b4d75e564207dbbe58520247e6b230c889a563bb26dbc49d237c5d0c94ebcb940ba4c87f54684e50b098dc51c02a6295bf2babdb570262c29451b44fb839cf72d730d59ed426becd83ce88db7e4493284fa58150032c009c71f1baf525ec746ca707c45c8a0747b7397b33ffaedd1454d82ea0a50cb0476e1c911c5aea622c5318101ca4fb31053edd89e9787f59a2e09f1cf4a4759b3e0e7c6d6a9635600f70354c102aa3d9a77604010b2a20e953ddfeb191f955e7cf3f3cc3d9b7b9388e469a859fc946c91be8e9eab7846a53f4dce1dc1c5cfd18cd8594a6fa653ce38732c2e6d0a7d04551f91021c6ca94943131a19163315d196d055bede255b6bd1dc6dcb2de5de5b4a29038f074907510716563f30eb0f6b35d3c58be9e265c7ae5925ba1c44905c0c366880c32c891c50211d888af871c40a1ea400c8111932311a3b41d31f024862b764b024b283298848e20a1e7800a1e6c6ba162cd1c30743a6b001861afb94888e6eadfdd1adb535eb16199918381e74fb1d69bf765ac3d97a4aa735dc917e3bade170467272e85b591fc2524ae9b523efdeb004b5b3df75f7de6bead9f5add7d15a4d6002c234054b89a948df38c570c25121a24244c5080a084b89a9c704848a111523a622d3142c252c25fa86be41df602ad237988a4c452a445488a8100945602a321599805031b247b0ebab18d1376880f021b7b9cd1d73df98696e73c7345d981f1273946dd9f49edcddd37d632e2c00461c98a227b43b93d2d0cf85b9b7c9c4a42685b16f9a3ed67e3ab080055e572bce41c2f3fafdbe5badb54641c24b41b5f7aee0aee072c0b3f7dea17d6f89daf5e977bddeda79f79631c81bbcccde79dfbdf775817c187f34e83a305b18097d5f6e2b79632febb2ff7a5d52577a19eb1086be6cbb7ba1b6f79f8b4e7f050d782c8c5a2800e88f8e82d9bb320699c4cbecf81345e854e645cabc5ed9c25cd9c25e7c19df701122221db3d44d6be6d8f5ef93a4d7e9ccc21bc25968c3edbc0fdf1c69c6ea1f6946612c69469a511a3acb410497696faef3e97c66b8299283c166836283626f873f202020cff3bc1f3628b61bb542b1d50ac5de4b4251988e42511afa0410101059a4c8edbc1a0fa82383684d50d00c45f67ed8eb6698027d14c8a340dda54f4a7ba6c3873feccd6633cc645684ed3e6c8bd872bc1c2fc7cb99e900faf8f8cc6cd1bd1ff63a0ae4d1eef2b0d96c369badf3a0d83c20f3ba806464acad54dcee16c981370a6341f07699d86ad7bb5e97fb67624b013812439d31ce79d5a37156a7344a43814640a1ce0104c2d69381892dac816cfdc045a727d82955a979f3f5ad60d70f6f841f086908670871c8960c64ab8ad003a18d1624c9e212ca409224d9225fb4c8f84301d9e2f95ca4f85ca4086fbe0f288c21ec400843282b0a0210a25c6105d9aa826ce572b61f5001e5c9149f8b149f8b14d67e9f4bd55290a4a98a9e1e9919887c00050c6020ab373a70f2040fa2f444397500889028148a10214248962442f407b40da55d6bcd5dceae0f08880db4dba4c78628da0620408000f140ad44fd94e996b4b0dde9d71c1bab3aaccbfe0e1d47aa0e215dd5e9becebbdd677bbc281d101025bcd7ce67bbef46f1bcaf0302f20271975248a3b0865134ce8f411de21215b285a49070108584d6cb0142a90041811e325da19b6826da092da49b38dd681de8253ac894c3a4432bd14934131a893ea28de8221aa797d044740ef4105314ad84c6814e42dff40db40d740d740d3e6c433fb9470383eede5dca1022b8ccae3382058a93ac7b75de9741effb6cad76e6ef7e24ae8055c89f410fac2ce472d776f79fa8c2f78936d8c32fb526f4f725f1b0973bcf0375be58ff803ff98708e3efa3e70a5705ef3b5bbd1200b5ae88b7315ca2503eecfa27aa7fdeb3e0e7e78764818205bbfb70aec93ff887d65c5bafa60106b7eb70fe2e08b2fdc1f6e7b33fd705a5ad695adf7bbff0fbc25aabc6afdf136d340a198747d440d08580d2eec35f07852dc7d6cfcbe986c8bacdf96bf4d08eeebd1df6c936b93ccb5d660d82ebc3eb70fe6efec13fdffdb1d70acf0ed56ab55aadd67db1b72eeb82c2ec707f7e7a57ae5051e8ee0b070dbbaff370074567c511b520741777d8b3e279f7281c515be2f9601d823eb41baa3ff527c6090440c08c3004315ed7f5e3f9dc278ea8e99fce3355e1c1501a17ae6eff2cc5a850956ebf66ecc3ae3fc30a0962dbf591d8f5350d44d2c90394e665bb781ac8aeffc374fabeefab9d501fc61fce197f2a40a57652aaefa3a9c6efa38d335059f9be23b4cfae6f840c8af0110318ecfa9a881046ba87458b215a9856982f1061849a1642f7d0416820767dfdc32be6fb6831257c1fad84efa3c1b8174609a71c3e9c416df221cdaa772baf351defc09a7b9a012182cbeceedb6a6d204bd46563fad6e2dd7a36cdbc2e9b7f056a7a375018016eff4a94dc6e9eccbcbf0285b950d33e356f14019ee7eaddc9807eabd7619bf77b1f84eb22c0efbdb7d290f495413d7879743fefa2c0fab9e66bc5ee3f5185ae6c293bddbd74e29b363adce910f46ea8411f90c8a776cf42f75fedba12004aace7dd7b6f95d9da55e8de2bbbdb89806471d2795fadf9688dc6b1d6d2a06b086745a5ada37629d7c3615df6c35a6bcd197bb3abc4cba94147d5355c1a7a5eafd7cb1bb5d818a5a19de20e7fde3732afeb83dc970d0ae9cbf5ba8fc5c93e411f9f1bdcc02b4932f0f6b9ae8fcf0f1bec784f29cdcb7647dc5cd7fe506dbc37bf3bfa78e779d5ebbe4d7a3c34af87d7e3f9b0b04e0c4370498c47abba04836040107f0539ab53b093e20ee27ddcf3614d9f1fdcbb220a2ffa2dbd1e1c2a41681e0e32dd825d2f094080e95cf06f84ea59cd43efd02cd02bd03e9c6c681ebd8331c65a0538679c413063d30ea616e81e30d63a740a340a340f5a479f409b40efa073e81268129882a075a855e7e8116811e81c340e8c6bd538d45a31ae55e3f03ad15488a8103115e91bd7fbbaefdabc97ed7e7063ac2c713ffe62bb9eb7b2c4a7f3e9f0f0f0f0743f58598287098f2de4a130f67978c01878a03e03b4eb72d1eb3a473a1d3f0c129c7801755119641a6c1b90441e098baebf23a19338090ea0f9997203b546e6a9b8009a1247aca1799972d4630210a88bca406ba039d01d680fd4091e543b210485a1fd8cd1f55f133a899b202e4085e8baf0c3782a360046a94253aec8ae0bab4629bcf614af1dc55bfa89d72eb4440bed400b45a185aa206d744b27f1969e1aa578ed270bdca220f4176c073fa4ed16f29f2e7c1df52edcce42fed48b9f22a6e0adf0f494a7220a630f1b7bda8aecc662bc08d27c6e4cc6ffe8a3951b6f1de7465bc7cf6d327faa10cdfca992ebf89fabcc3afe151c0b4b79221d1d0fe5e8f85cc1f1b8951b1dc69f2ab28eff54c121756ceeba4625ce6f78ab07fb7c2eeb587f7ef14f7f7e89b3d89f6e85742a7e89b37c6983746beba1fe12b748742ae612b734e854147f8625b5a0b5fe120bf9732ffd0c0be6e7321bcb1c07e5c4a65d4c953470273daa7ce1765279e6d28b35f19ff85b93b6721dbf0c1ee3baf0b37037062b298e75bbb198bfe1a4ca5e31fcc6a2dd18023e07ede744367be3348be3341b849be1b71bb338d785df2746cf8b66ea9039610adf89f9c7dd18ef615df8634ad6c969db47e6401de33ace9955db2c1f36c669fd6415b1cf7ba3e36ffdd8278bd6b1cc9af83b6bd613641bba9dab9bace387c1f1af886e0cdf58cdb92efce7c7b0bd7c4c1ab9bad5d5adb760fc289d1b8be1b9311834dc8dd1a41ea53306f111061f69d7f5a7cce9e2cf97b3a59f289d987036b3301ae2b0b0fc79e8c638edbaf0dfc7cf693716ce74c8cc699cd6314a67f563d5b3a2917cd5c3c457235f95c057b6ebc22cb98e5f85b310b13ce9707aaa3ca90f0b1f85c6a0166bc5c79ed98d8d3e50e5292396e79fcad305a93c5fc072d6d2c3d9ad799523cf35f1b8b171c7d8a3e3d749cd4095bb31940e4a078a07b5c3c25a1e3f8a6661aac78fea61612a8f1fd57363b1c78ff2b13096c78ffa6163311e3f8ae8c6641e3f2a7763b0c79f927deac6c2528f3f8563612b8f3f75c3c2c8c79f9addd8cce34fe56eecf5f855b21b8b79fcaaa11b2be1f1ab886e0cc6e347dd6eecf2e07a823abe3e431d07e174fca36cbc19712cec8685991eff38b330f1f18f382cacf4f8c71c0bdb8f7fcc6161298f7fc4a99c8e9f8653ea1ac7f1f1ab54d126e5c59c75c976f0247bce39675087208dda431b1d52d126f5332c4b0cd587278afb58aaf8b8c39ae0b7f0d35b91864d7e142af9831d9a07798b093fc386211555cab34657c94fc36f643ccdab4290b7400303356072515f9d2fdc9efff420778106eeb93c3b0dcdcbe03c5a70e176d6836548c36f6248292a2a2aaaa1791b5f33eeb03378fcd387e389a3a2d8ad3f479e145a23cdc2c6f24c81761ab88fffc2ed6379d2c01dfcfc2d9ac73ff2d4a220d23a167682b3916661a7d6d13a340e0ba3b5286e3afe71c7288f1f8e3caca391b730be0bb7dbb0d03240ab64612c69e0be43f3b91b0077b0a8a8a8089c5918ab7ce176b0dca179fc2b4e298cea675c156ff913af7dc7840fede8a4f2349cd65071854ed6554c28c71db6a51c795a4a62f0718775b194234f8ce77d01d80c3bf25c177e92dcfbab68932267be8a07c83d97ab21335cebb02eb2d429ae75681e6ba24aadd34a825f86d719758135e7e440e60051cfafaa33d5ab3c25553fa2baa0d3e97442a152aa12f52ae549a29e2ccf3d96a9544aa54aa5522718a713aa84d3a95cddac895743c61d23cdc4c71e638f35f197f8e8634ce1e30f6be227f1d1664d3cf2f8b0cfd5ade3bf008501a3e8e0298eb69b6f236e0ceaf8479e8b7f1c1a818ff393e4de54d6f168e4e9f8cf91a88b6279d6a08dc0c7a35f0d41c02b86e7bf40589efbc5297581fa574332b0ba59185edd7e35c4c2be7254c3656b0d40294976d8243d6c121f034852a3a67dcad267d8145a4b8283d2aa23a496899a14433aed12e8b50f80c652ca4aab3b7eeabbd0584a7902cc2b47e827d858a55997fd6b7af3d563f45b561e3405a75477e0ec94ba23e537d9a9cb7e4985dca57dd23c236b12e9298d91ca533f7e2daef0fdf95d3f28a2f0c9643259f7ca0958111caa3b288cfdd188bda302a3164cb6c5d7d6bcc9375ff7ef53d1669c5c29a594d2eba23edf27c413528fe830fef936f52ca9bbd5c9df98ad355e906edff721044c02d6c0ce3b017686fddc5f76411219c01dacc04c10d100b3c4ce4339861d3201c270c33f9bd4698d8919086162081d30d1826c05133cc898080192221c5e7ab0514f28d92325d9c610206c940fe801218040e2c30f2426a801921c90c41002160cc5141905bbebb476c40743b676221f3942c33883002710c09a388edcf2939dd269edc811b93cd2a3065416628f788c3852822bf6eeb476e4034aecf1096d8b4d98189285f6a8d39a111b911d765a3352041323b4bdedae19e9a15b4b5bacfd6d4dd2561c836deab466048710ec53a73523322cb4559a641decac2423b1513f50b62803d088223fe0206c55a7b52225c034d8a94e6b456ce0285becb486aba2033fafbbd467c609042840d8690d07453fcdada4ab5df630e8795e883b0f97afee952d9f4892d8ebba0e079bcd06c506c5665301a202c4be042da82fa83e6658dea9d4a1b07b0ad0a014e67e77e2f7ae3d2940290cee3e12853b0568500a736e98913533cda5faf83faf72160fe3af5dfd3ccc5ba8b5fead250bdde77eebffc7bd7fe1d2c02fdcfe24dbd84d77e3fd0d8ffa36ccfbf45b4454e440ad9527a494c63b75a7f4b3f501e1b6b11b1ea7fdfa37365edddbf89a186a510d0f161472afa180d0d274914469b20b34708d4e451b8fd7a29eedb3c2cec6680de5e9f4f7ca0c8b29c5b9fbdb75ddedf2cfb01f58bebc905fd1eebcea8df20b0a098f8a52a7631d994c868211d5e1931b4c22949338c9499ee42451b2929bb2679fa8d48f7d6a9d3bbec9f4601eed6e3fd8a93c156d54af9f61c3949333a565253c7d9ad176694ad0b21b1b6f1aa7f31e6b629aee02e875b0e4b411877f6687391676ae6edd02d594e0f4daf1c76acd89f7701f16467a9a18e60875c4949430c79a78dc518e3cd64cc191d3f19338e40d1d1b51fc6e84b7a28d080fe30206e63bd3fc1916347f8625fd0c7b7aad69d4ae47136c30833332e5e823f5639f3d7b887d8e3c396cec69b170f6e10bf639f2a8c8c827638f857dd0d0d04946e9f8c9a11b4b05d9aa8d08241aea78f4e978fc31da48f8730482f973bcb9f8731c62fe39e246f873442282ebcf518824833afe59ae735a9521c43e4fb693ed74bbb110c72977b285b3d771b28539489c9c8e1f868ecf93ade32a66e834080a8696fcb25d90e7c8f342e30e4e5580e53834f2b8808b3a2995ace3cf2a9c13cf69c78976ea71eab1b0f1f19f7c9c7c6eac84c75f1a2a39b130d5e317712212b1878de52151e7c65e8f5b8f5fdc6161acc72fd22c6cf532a48bfdd24f516708bf026ccd2be75c72c965e6b925b3c821e4972ce69cfa9c73a9c4228417d1a5e42d25f3431284bb0d01fad1b198415bc7a48f3571122472921be4244be42448728e99c931998f951083f1e74b8ce64f1732dc87f75c974cf93425b53a2594a97aadac067fa95472164deb944aa997924ba9f4949e26bcf8d36cf1e7b3f893ec217c0c8d8d6effa2342d5f2ae5ae0b7f49eb689dd48f72f745797e8bf224598c7221e43afed1ede2d73a58fc97f26cb994275996e7e625de9b24bfa5e44414067f0ce7aa2076f7df698fbf542a5549527caca9e2c13eb9ec4c3911f9c9a3e85a47ff643538c4614d1cce544bf639f23ccebaf05719b4e3a7554cc9f9b5c118d8e7f2ac00c5f5c751b1693f1f6763b906bf58a64ab0a47d8f9e5d17fe925e57966d3dbb31ad93cbff30ecb16d5af4b0e6681b813a0e62b3a0620b5aa65e5e784acaa7525e3e954a714ea3f6140f8148eb54d1a6f455a461037eeba685d3f1974f451b979255b6b4b072ac8959ad15eb579c06077a7eda5b9c46edb99583c55b38509cf4294efb8d19eb2604172b25f92925ebc9120926f4da431a80ddd26b0f470bcb5d0f4a6659494e56a2c3435d59098f9e3f45b4c921984627fef554681a31d101131e30918289154d3ad084066a6ed14693b88b940fc7910ca79961576e9c348a44828f95d90a8e959c951c293a3a60cad0465d94c92d33c16d2641e44a27f115cfc70fa021484aa4db69d44599f464263e7b1c9db8d787740ced18ea51224724fe4d74d084074da468624549b4d12da399e7e12cc411e68439421278a8c39af86178e86247c76fd23afe117a74fc22f474fc2e1f1db7281330f3341f8641ecf3f3c7e893ca8f817f80e340635ce7ba780f5ce7470fbc039ca6827d3e8ef634ebc29ff3de3420368b3f9fb682c3829f2b381dbf156d7e06fb54a175fc3158383a7efebc64ddb0668b1f263a422859b21c8c3ff91432fee4577c0e6fa2ef405dfc4fae44087ff2255afcc98f74f34faea4caf81df5053e390e689c05ea3911c5e95c56c6d0b9141d7f6d21b4cf55cedc2d38b5268bf27ca18e3f048e7b241dffef40635c069a73635cf63baa8c2f425fc8de499781c63e8a3f4261700b1e4761f0b710dae73f8d3fe6cf9fd6f99f24478d50bc1ceac0100d4321d8432420650c600805f405ede7979dc44b1467f513f79afca02eda04283719b29b185175fd9ad5499ca51aa1784a3ff19b8366920377fda268a3533a89a7f49fc1cee549fa74fc32ddeba70b5e1f6fd61c6dd65482ae8ed0551334f6b8eb7a2628fd676285838ebf8e20821d048dc978fcac18d0588c189cfbe03d3a7e568dc65637168d05c42a07d4c57fac7240633c48c79fc3fe3f396d04203bf52fac1ca759de03b79ca02efc271a6b055d8a298c043b7dfe140a437deb497d813fa7782bc70b6fe138e9aee504dd41d0932a6395047db152e249c71f9e4664131034114113137ca28d2671b267ce511ad7f1a3386915d457370a833ffc619f9cb602daa7a7ad1f1a1b2941632cda75f95419fc07fa023f4b88164e081ae3415018fca7ed67cb87d346a06dbcbaad92a0b101380185baa813402822c36a49c74c6a50f922f4713f32a206c67f36190cb38e65240e85a2a8a806c6678e673218669d8a0bb01d282aaa8181736430ccfadbb0cf960e8e8edf85b3a2e868295be5e36fe9585859b2722d1edba2b57ab4f0b788a0ad223eccd1f2e7ead6bab1b91b5bddae0b7feb4667e5c21ee1ea26f3344f03a35efc9213424e9e78a54ee2a551b73dc4729222da906eb7a1a0db6d080ec90d7f9e89c569cd4ac66221a00308855545fd1008872455440b89b2d5da6ebf96a24d8b35e977e468dfee929fad7571afac46bf9db5767b94d211a68205657f5b87ac9cb533eca885c4a650762982197f62e8a2d30fa9f77dffc13e47d756da91ce1a9d4585ae81ee9536b6fc52a821de39671004b50e656c281d8db60d2a05db698601a5f6bb4582b39c764a7dee6f54773b008c3af639eaef7ded1eb7a86e730e6dbda4b346ef280cfdcebbff5d3a6addb62dcf9128924829a3bd4ba552d5a4b346cf14866a306bac3fed75d7eaaa694a5dc1563a283a27f5857d3a0535bd1928ac23b2a6fdd55396985b3a2c6cdfa4e0b030d4e9e97b3c5019ddbfe0a5c0dbd1a9e2a398ed20b7a4174982c6ba5ccc1b82bae87747d09847bb2e5ba3a6fdb3f3d1e977445098e7634d4b7a53e9a967bbe111be8dafe1a1ff86c7e86d7ccdcab73cfd90d66a6dd7755df748381b2f7ba94fc57a625d3b2c9f3bef16e40822c8de79a68f05d476e4e5fda73ee23bff1e9fc95118d80d180e4c3613c59ad6c95010d1ddb961791bb9a67545b73f53057d619facb9b9b1f1aa59f9d60e84963c31a33096afb49ebf86700d4b6d9f30b4db735df557bcc2d0c222b6c9c4798bdfb4fee56dbc6a5cbe347d983e666d64da5c1e70c95c33170e77a754ecca19eaa7c95f4e5018f65df8ab098db15ff2d7123a633fcb12e0d5b4ca57108df999993ecc9ae933327d983697075c32170eaed9356db614d366da6ca6ad5b574eb7a4cbb3af8b6ce1f9e33199aefe918bcde5c7e5f662c30bce4bce4b09c8519502c3171d971f179bcbedc586179c9712bce4902eb7d1e5a672b9a55c6ea0cb2d74b9bde8842714eaead13d9d46e16b554e75c5281b8d187b46dbf843cdfa2a7fbe38cd27f778a318a5ba42951b65a31163cff833da54461939cac65136ca7e90f930ca380ae3946883c2a3570aa11e952f54a783126dba6f21b16baae5530fa6f415cea3fb90efb046bc05ef5dc8bd0517764ff9ac52a93409c7e203ea6219ba2a22aba2e70bf3491691907559f3c7ae4342411446255465cc2c513d814435646133459ae8f6b550b73a33128ec507aa2954442312ee92702209b74938128e846b82c22ca12fec779ef9b3cf9d4aa9441bfc29a89f615b3054521ff11dfe21df295ff31d167ec303f536724d0cb8a8a8a886470b2eec3efafb2b25a2d214d4ec723756ca9986a0aefad54433f9986ad4ac5f553555c11ad66ab2f55a4b5cc94948ac2b778f84b3a67d8c9b02492f1159d84c11129fd199c129e56e6c8607d3103926da8dcddc60aacddc30f958d8cc0cb7f3453f4bb9542907966129a74bb9526e9b6cdd3e1f327db87ec6e48cf8ab89d792198eec15e5952372c25f42d64495af200a6302655cca7858442c43dd8e2202587e1453e8faf7978b3de43bfc477ca7e4a55511d517f5879277dde3132fe1280ccb100977eb678c4e14f485fde73139312c1e8313731323e3af1c7f3d79115198d7d04b688a2ae3b5e4d5848ae8156402ed93842bdd1c96a18c1b2f1f959d1328ba9c0f113ff8c0838c44b2f8e621eb497c8687c2e45018d68c0f54a7cfe840676ea038bac5ed24a113e4885cd0504b2987a79368b3c3a234af9515d16687f57c87f59af5292d1ce76b56be7352658042f50591858143d6eca6a030f009b073d2ed77b921684cbb80d26e4cf35c978f85e91e6b7a350ad331385f98bf7b97d33e2b2ca227329fc15d977d149f193273e233a050953193047d013e3103d4872c6c260835ed8c12ddfe090acd94b84c8ec2d8991b5c80d3ed8dcdc0405d31a032517a8f85c95431e373be20e2876eff96e7fbd02d0fddf6191dbafd94b2cbe9e72bc88754cecc5c34ec934514c489280c09c7e2ac10555b4620944dae462cac7e5bfc25f297136bda67f1d78abf72d7657f85a344145ef45cbe86ac69dfd5c43e4916dec25b2dbce5322a455cb288587a18420bef64b21abec3f2239672856f162ae56ad5f279e66ad5d2d242c5ae1e2b674dcb226269e1f84640f5d00508933be61d092316dcf18b110ba73523dec964bd85ef9a9d96d72dcf22f2b1cf57d0eeafa0d6edc6626cf77ce1badd4195c2d46f0955aa94f779f8bd9d51efe12f954289362c432c439dd77d2c43dde79d4e2693a9541ab188584f6c482e1cf6f9621175fb2f220b3b49b86e83845e432f27167656e0d29e84f3389d19ebb3705ab3c269cde5bac3c21aa46d80102c84c0456020b806580956c7b80b92c9642ac02c9084f5ab0dbbd412b556ef3301b9f77e18069ee7e17ceab446c54ee5352a72e49c415da3e206a5113bad4129ea286bb63aad4109ea286b561e424a297d225ae9df20610a68fbc8c4a0bf6f14210dc046f5daa9d5dff7d5a18aa3aefa28223b45649fa39e9c73ce321744ddb7f7deae7e8ff59ff847d644e132eb90a3eebd1fed5659ce2439fa19f6ead286948661a939ca9a1f2af3f0fbbe5a8eba1d9982d8dffdcecca202065f354a1615bec75dafc0a87bf51100f6da6da70bb7dfaf00aadf1a9d8710873351546cfb1485b03609ad495b28b5b65e6badb5d6f26abfa351bbbdf9bef7bcba517564cdfaad1ff983b06e904c2633418d0a6a999fa8048c9727412c15cd080000008200831600202814080804436996454916253d14000c68925264523e9287035112c3188682208881186288318620438c2108395636008064de33a8de79fc81a7ad2ffba24284e9fa168523451d8e6e41cc3b8f264be317e2a2e5b9fd2519d461e11f35dc8140f7a9838a829e814641d9c8b56b95f8fd53ef575633ac9b4fd96e5a14dec42ec32ad81b0d23e529143def948698e24fe44a8b85a1a9e010d5b2d569525c41e7fdb4257a207372da322b593636c0e3b51d6f7f769fd1d40378f33a385a82f3657f9b84d96ecea0b9dfa2b611561062a4ce5bb13949316aabeabab5dae46891efd49ab7eed57bac8f188ffe2c44cd5efb0a53186cf27afc9a92a716f7d0da1be80a903302eb4dfa10b8ffece4061d18d5fc084f6fab2e015ecbbde2b142d39b8f2d7489fd30e9674446da56240970a3aab6e6f010fd530f6a3c68883d2e40db76833eee4d6d4234b385553ca15987406b37f41a5dc2ab7330b431cf3d1d91b21f36c32d73ea9c6cc8e39f732408f310b431d53425cb507c2fa4264f1aed37d0d7d9b4269f2317b91bcac417e271370db99d28b16bc115b0e02694f383fd515c1f17f6d9b583974d6691487870e05fe0e79276ba8256ab8a5aae66d97ed3403191a8e1289bad806b8635dc9382dd416d3d517b4bcd4a1bbf42518024975f32aec20af4498315828b6f564c4066bc5a83ea9a0714483a5a1f3d9bf064973493d532fd1b21612ab95f92579fc3c76e73c1d2d76359ec644cc5f530db071b2d37d5bd4dd81f93f91fd75f78ced64bc2af30ccbfadf5b9eb70423a08f9d8e29c824072e4ca7357861bd6f843a47220ac630609b374e6ded30b9e1f9980e564396c8fa88e44bc50bbd114479932f28d559cc5702340a91cf0ad330e09c1c134b041831484e4ca085872a70283eb284b8ab3d73378179ff6c25bc08817fb0db530d8e746a245f4ca82b2ff1187fec9e885b7bab972fdc9e8e7ced0268e80407cb3ff13b70e6023f688cd9d7f1241a26c106fbf7f774a2d046d25bcff86d0df68cd78be8111b0da28b6e7c7acff1645c1b9118b452a79ff0cf76cd76bbafbd939d10ad232fdb38d7b8db6c90ce8d9154d352c5d5e286730528105b715d483cb1673811da5bb15530a4f3276788e771ea1d86447627beb95659c260b168287da671e170d6d48149f084e59399d206f69420aece8635cf8a1d00add546722cae327eebd9a45c29b3e9cad2e6db0056b4ec631328bc84de985c1919fc91924ff423c90937c28114963f69ad4b091506fd8f48cc282421fb40764e6ca673dc27d86324ce3fa6f2ed71434512dedb1a78430f2b85390cdb82033f9fbaf181f362300413bf781ad1b9ca1a5f1040a735d57cb8076ef66d48ecd50ee0be6ee90505e0274412dc48f9db714509e4a7db23de65845c83acf67fe27a0de061d5b094521a10c60273b41ca94723d9a9baab2d79d43e9ec39c6a7c529adf57f71b6b4946a735ff2d26f354a05760a63f0c32330a10861f08f4cf335b11ecb5755ca5e7c85c823a5866dd4b9dec7d483b47293924e774816d148bbfc6362709b621316d204cdd7eabfc0e23bf6d1322640773fcdb00b15b0a1d73d74539072e85f4f1f5a5675111473e9f51abf26b8deda1d45ebcf98eb8f6f7efa8716a886f411c3c37c92cd2c37634d241603d98a4fbeb26d1f26541d3fc6df92b8482b6c261f006fc0a8dbe0f77b93a8fbcffaf63a9b62db1101aa43bd56d8ff87a10f29943c54435110d11e1b439b6a49c468c929cbd5a88a94e479e5221ee414c922c1ab02813715d5c23592d8a5737da3bfb5e7bc0e3333e8687563721b2cf58f879eb61ed31074a431682627082911fd16dce1cf0b1dee4a6383a1176faf5fbe7ee2835898848c2af1234c8f121ae823aa91a61383aca42a970cbed003ccc69546b0844461438751e4c8c41b698cf3662f81fc2297c950402ed4101074134c10db3443d25718c8b46f6fe94abe6ced5f14a2f14fe001bff6530ca94256ed4e919de1a982a06a06b9a3cc4a4ab00ec0bb8a2f32811f819c5fa292bfd336486bfd94b14e6bcea9ca416524de6600a83bcd6d0b15bbfc3687c315b385432e54f6eb2cc67b4bac782fecfd403f14f24c003e1b6e9260b703f539a033b4d6c1a89b08fb35757e43dd289250dcb9e830a2d4043e37b80fd7176be782c3f9799cb54d157206323d511096958b93882e11f10e998b6d91d0132ffc5a209b94927788677c9b8fdff8052df10d04106cb5d3695f00e6fc90e91406b4c5a3ba6a662a0fb72dd62f1728ba0ab71d42d930a21bf16600e98800712a4b5e382bc933548551c661edb85b5bb0b1730cfddfc75e58ae8f7368b10c8e4d21d7df5954089cbf8cb1857cda7f4491f5e0445b8f6ba28e396b345906cfb0abb0e8a2bae1aec50abe9a3f05fc2b7fb436b04bc59801d625c9940c351c45f699ecf650e813ffbe7f9f50921b9f7cffc4c227b1d37325dbf629771ead2deb290e710db7dd9782204bc2e5532efe8c667bfdad13cc5ebc060a925dc8b58f8c51fb72a69de158d038670c4f884e0b4ec75313e2a67c30447aa54283192c45e6bb0666dba407920c2e3d030bf3e013168546241b4a6fe8b48ce52fc60a0faafbe484f22db8f44d42ad72f374b6a40fdf022e9c30f526d0877d2552adcf22a9dd4ce22a786a6a8cc616c9ed1cd41b25968bf057979fed6f4002552e88f1cfffa34c2b110704182cb9daade08e28d99099a21798062e9c2e0ceaab65d0f333f0d289f2822392693d7f8fcd3a22ed9725304fa988ed7ca72668573784402d4fd7e276397a04eeac4797bfb82d1d840e5e78e86c73fb64719b89e1a58a174ae79d95b8a2949ec8b043ecfbcb8457f16203df4cbdaa2884591ac33f364dd8dea0dacdff8740ab40d6350e4fe5f82cd046bbf1911fe6f0fc4f16a196e358a0daed47ef95198f7ca1a00f43d3d56000a9d32e77ee5c9e697e2a0af9e91943b164923be7f065259f236b0aaf702d94a02f38a2a3a8dad1f2108db6803ee01ad4e4052dcbedc8a2a44a2d9074eaa28f2e90af3ac8b0a96555e41cf193c89ab80fb0749d1c71378468322001d574d1c0849b8a962fad579909f1399241e76049125ee56063f58250aff8bba50381c5de7cab184e6619a103d9c93371db12b6c665cba1a2ab2d5a581802ae3194982762115e7db83c47e0ff115f2893e6f73345cfa28d8ef844e97df91a4d2173af2d8c3aa1d7e010d2caf6511faf5b849108e217cac312e9cf8b9019336a1c5cc3e25872d59de1be31c62321536a27e818f24ba9884f9ca9075eb823a4dd0d040b35b064174169319be33eacd9ed1e19453a5064f643c037744c649afb3467c11458cf2777606ce95c6257328295fc870f465a66054eee856be9d2f5bae82a15ad15beabce1f0765fb45d8cd631250c91286db73b24a752514431f2287c8bad8bce7e3a733637413352709e78e813b24d2c39035b35667e027a45aab7caf7297f802420ff2955f45071c0f35c086838704b1aaf06ac09889044861ee7249c2e421739a9d06132505cec8c13a50010e76d4d99cf0fd85147ec028540e49f3005a67f1ca8729768004f30c184115c59baf4f60a9627ffe939a4793515563882360b355202b0b5f0e7db2e158cbb4debb73c1fa1db35b3625507e6a74ce8cb220ce81aac1776680749d7ab783992ffb35cac2a103b544b11067ce726d8101a97b19b0aefa14aa5865be74308b1dd578f29125263f4f146221e813a5bfafe2b3f42fab7b6c5613ee2bbac76483e300ecf4d9c512cdb497ac464665b7e1e8fce20e75a6277981e5fbda25b0d17c02fca3c6bc4ab275a01bca508ac532f18b300b8b0b71e6135aca144e6f946d8a465c5f0d681170f405adce8eb735efbbcfb4b41bb3f197fa7d91f729d9807e86ee2674d2ed8e8c65fbd29f6d4f0d1d40b353b47eb02ef726dcc26c4229852efbd7c6819b661a9fa5715f534f0eca03caaf26aa010aa3861b59772e71c2ffd8a64d2f419ff12c0a1558ec4282532ed31501b76c5f16d095be42429130495bf7e06c14f8b0f7132a01e740d4bc12f055a3d176afaf07f38e5419a363ce3e107c4a520ad86e565bc39210b6af0419cf4f5cfbbaa2c4d03154b4c82d801143c9676fa3caef91b4b62d28afae9e5eb42f321a65b157e9746e0340d533e41e6b042728a36f99d764109405a6bc8e07c2dbf0bde8e258d41f00d79b11fa91c319105fe552ac89da7e377ee325b92ce204439e095efcafe388e8fa9393fbaf14509cc08885b42ba3d39af315f4e1ac40d10e895f2bd4e46b1ba0e8b0820253e70f1fb7d6f7d9b58a7ad14cf5a93c09a4c86a5a4698c418c09748d365edfcae317b5828ec077c8185160376d3563cea32c4cd4427a97c7ca412c485bb44d9d38d2ae7a7154b9553d515bdaa006772a12b83a262f3a1429366962834bdb2a321221aaf25146ef95e2456267e7d5396cd6b61b7dc88150b6462d68e07dfd2b85f267b349102c11afb5443476565bac2efd4975c29744f08b803a235a04dd3b6c6cb612e59274f38ca62436e19101df04bebc61b1e5a98f81c0b18f886c1fec1d51a30f9ef4e4bb5d248942644271b2e10a0600a466cc411d04631f40feaf547b0cfc31e4e402ff16ab66b636201be62625a2a8a44efa282bdbd3bb7b8bf43c9e46255e3d841028808735df77f4192b657ca2d338e26ec7287cb8ccc72561436fd9a7fbde7e9e12aa460d389ca816ca140fb9959404193f584be1e0497d60f79dfe886452b7545ade0ccd4e37eb9c6681a52528a01faff2a873caa02c24228dee07a13a1616b7c37d4c517c76a08c70c238900b827e9ad6aa5b666a50260e04e11428463ceeca04926f570d34a882b257f74e8825e091cb320de38470948cb8db76f8bf659d8f7e9fb5c611d02c357f28c9f699ba571d079b8a6126032331c43eb3e6af3e8761a27dc785c3037cae1d59e642dc282e8761a89ff241a09b49120ece21a911fecde150b64a9a63b2da39352173613de219b231c22c18c50048049325b0f319af4af80b122c38298e052910b262708e633850727de15624b4487f23ab4627c5df8ecf92d453e21177cee15e84a2aca2a9d16f41fa4376093de87afc406182eb47bf0de444fe9d629baf7ddf12de0f1ffd01c300f62ef7035349f0c4f3962afa0c4e385fdf3f48cfc2dccf7b57468f3d6290c091e44ea554e7ebe28b8f7f504624e76a0efde8337808638ac67a8b9fc2f4b1dbb28265486e09b884ace3e30ba7b260f251fd781879be06389df374217ff743efc1caeac68170dd6b3c5d31d8950b16bc9679f4697112f62f683902146a7e8cdb675af38b60f09deac3a238973004f5c2bad0be340ea596659382f9613442b2ab20dc228e164bc403077336d0175a07188b023e4e61afbbe02d8a4541f6052e710b3de73ca6eb2c6f532915a813c7af0aa15a5de49df8d32ef1176f5adf95cbf684aaf0bbc0c48202052fcbbd5c3cb8dd0e64210ba615b1ac3cb67fbcbb818581302a8375745e783420f8884f7cb2eb22788f76b1095c134904d843382861ac20ee84a760495143d5d39730800e57cc16e1d10bc4829893af1de2210d0d5ec277589a938798c902d4d1fc0cca5d26608305f1941f853f3fedcdf4a4cf2c923cf5d83d3a435e987bf5ed935f717d88ec02ed53025f0bda29754cb2d0aa102be8cc246c7485ad85e833205e2ece940ab1ed6f1d86b509218b865278be3108e60b11cc7b2ea019d23fb1b29a57dd7e448ba1c8e88656851f09bfc97d4fab77e5d330fa2cbe56c8eb392571ca5295a65138b3e8a6925f34f0891d681814ce692ad2cde2243faa66b0dc2020b483f465c015230e35ba2f21c0c0d5c63b6726728700290291a698bd288ac8f8086164e824ef3822b3d6c6c96a5ff78fb927003eacceb6683fa978c1844963ab401905800dccf3b28f0253628030af260c6e69161107e066499ed18305093ceb966b4816d8c305746f46945cb192b133894b31fb2caebba654cacebf8dcece8c22b5c743851da7759dc0db371b2087c6d57de5042baefab0750c8a7e73f8d4ec8e18f4c280006a9dda8bba3fe2cb64e16062fc291c4f1e78d6dcde11ac2fbd57c79bc859491532d653c7ab0a7f5765cc6e28501b5ebd3ef8d51a2758b1c973bd82783fd99594f409d0c9cc3c8cf848aa00dfecbc3d1ba6d754fc139f304126a1c099da090f5b77eaa9a85498b74f73cb474665a104fe4b045277d57b49ff015256fb8562e297d26b822f1de3db6660e346ae38561f3167125d737fcb629bb49f51ad60000006b30db6a4f14cf54fc78a8c87d885327b198ba894d7b502254849682388c6a66b7fd1a914239e3bbaa57bfcdc6266ac9f00b4f159872a3e6e28bd70ca948a58691037f584c921491e65cc4858c934cd6648bbed7ba4934c55aabb148d3fea2247b314de7058c04f49ec172fff29ce1274e26892e203b223dcfd704c9ade0c68792ccd968b7d1690e03aaf3b8ae2701686f3c541b632ea06d05da00f1b9adb5c81f0cb56b35183d7dcc21fa78a1e20ca13be6d6f9cb8cc1dfb80428d13235c5d62f55ba391e0c9b6f22b8f2b71bb8cfe91a48e29d246b40549c76644ed5c8066b3d0560353d719a010dfd3fc87ff9405cbb80f086db19595b98112158479d4a2289b244e3d1627988481b7f9aa02db039bc3816e99b5d9baa97b86acd7dab76834c140c64ae416bce5ac940b591216ee77f2950746895cb42e149b41c6bc02fdd06b67fdf105a4403e5a29007fbc82bcd230f70615db128ec5e1cd9505fd7b75b3b2dca2f9e86b08b68acc063f6348c51517c75f6250aebbcb06af480c93bec18933a18552290bf3c347fdef5ad37bbbe09756cab357ac88dec3d567459b934e2e992501be685d540c0fb7cfc75cfa1d62e48dd3a76a9c8f4c72f3a35b78473a2979f226952bf379d0abd83c98605401e41e3e80155bba93e61f3191e006fbb63d47f995f549d39158d0bab06e453c13424bb2d4b09513c093a59c4855dacc1c2cae5dbbc2eddda155c07c8324a6df654d0ae99f5820b9eb0a919779ed3a367979f9705119b6b284572a7041db3c186f006aeb12f78023ed9843e4a985ba7d1658cfcabec70eace674e2b572efc89d94353cef98a938c1c947a2903c47df453d04676cb7990eb69a20993d0a09956d13757ad97a797ce696e1d351073150a6e6972f322fcc780503fd90de0ce0cca1acee7acf39049c89325eefecd0ff94882a31bfb448ec4f21c2b020cc1af133051dc6ef18f4e13b3b4289ead1014049f2d4aa960ce6064b3acc85bc5d1f7361512e4ae311098da3cd472a58c04fcc5c4ab2a81f9de0901f707976ea2982e5c543d9a313a7bf7e841cb30695d85b4c69fedfa3a2b0da1e88728a501a4f5a0088a5075e1217e4293cfc130cf32e4064a17424c6110f67fa31b3ba36f9203d55393f5b8a646cb8e5e30a4c64a4f47117b3fac92015f3c684e6fe29d0125e17f9e63a44933f7e9f7b83c5aaafa119e880c1972878a2f189f92e134b7c893bf3fc0d01136f6ba3d867d7be586c3c8ca42d5abf777b44de5f032a9546ec312058fca8d96d51903ec58718e6a475fcc5ffcd78a7297687f617fea00d1d495b54bba1e6ed55dbb794bbcd5632dd3d88acaee1eeaa3a4dc846dd8047a63e72b3969590e5eefe962774cffa8b01584db316c316aad9140c7aaf6b8082f47ac303b614fe586eb0ac7e2d0768bb5d1da9a0adc0099cc5152ee30a4565eb94bd2458a1fbedb59e5bba21f232d89d6481daa533e732e4faf0b0442bb5f1d98ebe266e2cf4b5e485173d2fa654251c0a29e56605bedb296c4185e1971d28c4f4923f792ee43d47f70a2f126dbef12aa2d46e6706cbc9210e288a339cf5d89f0407d18d110941d09b4c6299c8fa8a927997a7dabd8d453044cfa93cdc22ddfc72ff6db6c9a1bf2203190b5e03162c0870b893a3f33eb2004883dc6398e01f8290e17c50a11e0a698ef50d205d4b35417c16e4394ebb0fc4155b4e9f209f2bdefdc0c9298c7d0811e98566fec818efc01c1c03ef7430e8a2edee76153011c756550e4416c86c0973ddb2166580a15b25a183ada8523495f3e25d582e76e7f88ffe13b03c5c0f1565b931dd4b298bd00912fc41f14a70b76a25361f6f9b2be366c3b8e640e885623f512eaa9cf55bba57bb83db7e4d4c5c1d41749d20308966ae936efd10e4a32852d2914b0552beac29eb9e287a616501a7d7153e365641fbd86f9d49daebd3914cbfa838b57711e057fec94a333e9b5082af718a36b32b27700e0e075f2d63c3c9288f8657741bf3e533f51b7a61ad9e0cf7a5f2d303fd89072f244bef79ffd9309979694943f7908ad24ee5a588d8860953091f2c1a397829a92c635b3d22acf63b3afc331062918fdb23db6787c04653827980341c1f30aada974e7c6fcb57974c50cac2877fa80da9d7deb758fa28cb28350139d1b81a4bc4b20b555a16734c806b93a8c0e14d632967798108ab87974dce76214b4b6cf5b5365e87c5017e65ee59c25c76aa0615bac7948ebdf31589d7bc178a86ac9f0e414ef715add7d92d8d1cbd5e2e9fb2aae09b98b46cd9f4995b0d801addb8a45488ba4b6167f5d4bf0ec24a4e4afab8cbc0a7fcf62b0fab5aaf7cd9d95a6ab23eda5b0cff7cdb3d5d83aa8512df503f7dd246dea3a1c0037f051674f75322231d2f8d47c0527b949241b336e42949c48987a1f946c25ce64fa934d298b6533789cd6c6b9f8b61dcdb4a2ffab86396392fb5f318e3102051f81490e2a76b8ace32256abcb696c90b566d4dae13f92754840cac8ccd41e45fa5da4bebfa1eef6243a1480ac6052eb7c132579ef8edb1a7a5ed3dce53d85d2df289b43b17175555345c315b2aaac6800f8ff3d0fdfbea1b74b20d04ab7bbc2b88ef27b33ac43274b7fd82339b53e5b53677dd82bc32a85425ef79e83662162d99bd6eec566184b2a6e86b672778c4da40a1a3d020e6a29f445e10fb8df3369bf98417f48ac9c7ed966dfec41aecac7ab0ff5997a9886a3a5574396c6a76fc413fb69a8d16b7d6e4f7aaf8103c23a8c992fb8a2a82379242e9c5d0779113a91f440a0bd78e64ae19cd79ab1fa643c0784b1e5d1f80f51decf44179ee71c44b65b5920edaa86676550a8cdadd4db96e572a85f2e7cd2bc5031cb9b0d61cd6ab6fc36658b57272d9e83d33bc4b2a44aa9430eb32a07566d128628a3754569dbe7f937191fb2c272766535d28f2704ded28c83fbd18dc6f5032c4e03ea18e072139d36886890744fe0b2f51773520d73cb7346cfb07700ff9fa70ca6c508020aa8eea47e867575bea18f78305d47ccb69b8fe2011a44e4a9397b18ac29f49946a144e5e3ffed8d4ad7a594af59488df85fcf91fb290662db54300ce6690afa8d5ebf86e5b238fac4a5455d15478ae20c8aa914a2ded28630cfc01aee6ac6d0933557b54d302f163a3ccb1c59dfd70996b41c127c640b197eb2ade00466bb5f67e4e4fe1ec19d21e530a21d8ca06fc5c7b1ca1ef9e0289d52fad3aa571bb12c86f2ba83bc3017d8e9c5775bf84e06fcddad38c346f79ce0ff0fb4e314e8cbd27e9562317aaa051837c0c01c53e2bc9004367aaaba8da63a5b2c3031dbd31ba6ac4a48d0e9b226c3d7c7c7da762db8c706a6f4d39d2d41ad6e73e42b096df48773e244885ade36020324e1109c8cc8c2494299479e4e2aeecb931e32105e0337f92c6f600c8c307adf8e3fca5773099607abd1c0d416f28be9c95998282c19e043cf8a773c380e30c1fef9c146293fd9c87d190a69e88b285d4107c1469a6adb6453457c6851efc6f679a59d5c8fac93d77a21a206ed0138a0a347210eab4787cdc231325d2b9246995bbf54859d1732deb4846d9eafb242458e8b2429e829865a3fc5b7c1a98adc1f09de9e9cf383aa6a1a88bb70174f4a2d224de12cd7a7d321aa333c3558f63963e0f48e6c211550e0e19614fa939d3f4d49f0facc873ba43aa6cae1799698b841a3a574837d3ee562d6fbdb4e596708b6ac199fc36f17b8d5aaad8bdcd6b76d24798e5d478992c6bf892f2bdebc016e3d93fc8b6b77c227bf4b3d41d00e9791b11a7b4bdf72af6eccc8217fa089b775e9ad423f46f1f2439b47368020f1d17df000a79d9588f6e22f7302848573a2f1f93c33d80311bb96892411cab2dc85bbe97b9dfc559cf1153412da6968cad783816cdcfdeb200d316cc5bd1a3bb3eef0456d5bec45248b66df0a3939b48b3b7093606f8a2d98efea5bbaebd983982b71eeba0f847164a431433f7e4dc93a4cf2ecf66b7b84fd77cf15f6fa50c15f5cf9d824cec939b5b338ce5501a9832136f4d41c1027c864814b45566b58f3152a67d1e94287ecb39c63455db3c76012f0c9247d9525196a2685954ac876be5b932c4091567962976b08d4611c393163d0a9102eafb30ebc5ca12d105fecff54faddbb214f14e48b46d95e32a2f63ce334765eee9c11436f271872e866de5fb44dd78439e518d0a98d3c3eb99885ac7dcd092741c89497d237ac5c7747272319209238bfad8ae5b4866c80d81967eba94d4eeebac371e3f115008cef2e58458f2583a882808efcb5e9d96d38c8b9ea0766ff5acf2c2268ef386d9fc14236064a3cc0701012834962b52447c00c61c062407ab0a5afa14d4ba3664a2570b479db77dca6f2b267aaae54fa06d7bf0968914a220e8fd187f75590cda7100f57898363829f786c4328ec0ac278251dfde61de0bdb24a585968f168c3fc01ea7db942385c269199fe52dd74cd0bf40006a3260816528ff6cb383b5e3299e0825b41083c23b45a914315fa5be6317f31490f0c442c99030dc120de16daf8d8fdac628ebe9fea2803f8f19b80cf3cb9af5ae6a07c99ac59c7f54f44cd6ff09692d97a06568f74fac7a1fd34c78aa5d65e441c077eb2bc1f7704f3b6dbfdc9f10ee7468c6bd11fd4ca9e44d8fd20bea1584afb187e44b3915790744c3d484a7144e62855bc98d0958b4e7ae232145a5334789d399f4e227ff05dd0347f986e2cc58985f523c19268450409a634d1a4f46d529d3460cfb0c53322edb2c0b57bb45459838c8d9eee4ff8eac04be1eb1f0e42887e6a83915ec16cd6f5afe4d0b83f96a92813978d7c634aef1b050afddf7736a808b03c7b47b19732b34d48e9cd5f9ddee466392bc155dae6cb6bee72db09d5409fbb3752fdfbd96ce235d0454d14f9e97c41c9e72244f36eba8d038b0ad4952f16413d70321d9cedb7dd468b45b8be2bb891cf54dcf7e5110457b50206e443e999327970393d68c4aa572e02bb4e4215f938b9ae2e00e9f691c875cd3856a2c0396d4a7cb22cdcf7a2bc64e196fe9ed894b7e85a5b970a497e317eb94c6db3c14d15905fa6c2a83628918aa689832b518b2065678f41062478751fadf3483a97c5b986ffba85797e0e9dc5ec5bc120f439f9fa178f757497a22f9ef8303cc3eeba86ff1862af082eaefbe92723f729861c84cc7099e42b7be2f5303ed108a7ec3a3dfe0f1ba02854e5b8342f34b4e78d2ecc78853035b20b18f3a74fa7df7993fc57c8deb36088f35e801e0f6660cd5cc15ea82ab34aa861134843852e8369a11c2428515ed2926d6800339d0d3381d8f9661dd1147bc653764b8a73bcb3569665298941c9eb12c45a666aec5a0d72491a1706d853251657e0e235a177a4dd5063bc8106f19a18e653dacb8433cce7a81688c04c847336821440a32a5685b2a54cd10535041e5b620912d89285c5db5bc3546b3f466b5591ceb9e30374f53df034d07db30d004237f984eda3a8b24a6972b9617b02fca86c62fb0f7a96744c516cb1e31a9c2166624f2283f1daf6e962e4dbd92a95e2e5ce9a0492d11b36a7123a0a231444fea3cc91504b48483811f925e3d34cb9aab41bde2366cc205d515fadea7c0b5e53515d3709a2ce08c495c7de34db9a8f450deced806a66234400a575781bce16fc517bdb2700ba26b283f50fdcea9cfecc09ea5df3d459d2cca6c5e371f65d72dba9832fda8810e3beb8acfc8117cec0e5b9363d9ef817ba1747bcdbb7100da7748aab32d74f10a93a4dc3e8b9c5eaf588f372c3b1ab4fc7168fb7ed45c132b5b1c38c7136db6f7cf0662f074141c444076ca8eb2f72320302199e9326522d57f7ee729368bc5eb1bc61cefb048d508aa0cd44193be9ffbf0ac3ff5f2483d6c352bcae3ee446cdf52e5f0e8bf3b243ce26f289414836a60968973ace0f39414157f8d8871cdff3c1d08e220090438b6c31a504c40152bfba06ed62e2065c7cc16e2c1c637293d6d4bd3d4f30c2a9ea41417bd7e9b2f729c7f2c288221c965050e946380d08465459015996c51dee732d8b5a6d5a0630aa98241a117e9aeb44b444642e432d528405619b6483f78be160df33aadaae8f89b6bf8f9522443a1ffb3e8c8249730dc4907c2f9eea898c1ae89172eb8f2f48c64a54dac1ae9c00fd483b2362b4758de27660b84d6ea533e106267701376bed44a85c157b34b1c1ba1b7ced543582cf719864d527ecca249c85cc59ea69a0c21ee206afd4cf8a11eb38d4877b86da947313d5a6b59cc0173dd207f4d5a978dbf92f18590ed7c8661fd9293ed188727264a32219f1cc4c9c9d22f92dbae66057d1a4429a738b2e1c3a42b25011aa7e8f551da0e40531a4b70a1e200f0c07c6009f51143ed3e13a1a5651133f5840b6187d26845681a169f16b3e270b41e0fd789b02715717d62b1e68415c868b56513f610cb43e2b1956e197a8e22e1ad99bd55805d02ff4a3e46cde756c4867f3453d5751704190c9295eefe2a470d79f8044471c5e5c57120585e72e1b17e937a4cbec2fe1ea1a15ec0b0783ad21da969ca690d01967a882020e79352e7a6a57f9639b6606b311b3aa1132e2b5d8a8cbe560eec0ef85478525632d63958298f5fa95c7254b61803a6a7220ed672d1c413a59019be54598374f8f6eb1e11a37a2dd90256d64371d81b2ef87117c69d146bec68099e921c0d1fdc6eb1d815b7de0c392aed35cd111d183c996e76cf285f555a315e560f244e58053624b172a125a8df6a35e5cd83a772292c18a15c21a68f48c96493c5aa5db96a972a441ebb5c51a420522fc4a5e3adc2c7a1e066b62377646ce7b2f68b4918d46a3a44b1a6dbc1b7b12c030ee0ecf5ac3b1dc2b65006502f77378e362820de1a519ee208d4df1f036036a14218d2349b46c98ed3e06a6c701b8c27e273e108253e802dc402bce08961e2c4bf84814c53c0d257c11530744bb0ad6eb8ed1b14cac2634cbf777c48eb5961e7f15d93b6b4b3bb63bfb2a4e564a8db417dc8852f062fae00fc7ec4016cb8060e0f19e18434303390c34181648f4070eb6fb2887134229f935543ffc17281531d7088d15b89741f8a3d40f1cc87850e23d2aef05672d91ba22a16e7a28b1e3ed18da6b804cc6a6824090e27a5e03f2886cbaf9a823b27c2fe1e02b679df8b6bab267c41287eb7a843510952c01890ba77549ac091cbed2d50ead78d6754243a7520c260e1a52481d5fd2bebd2e8a87529fd0983478a7313e78155bfd60dc06cd28f8be177beb42a37916e01403858fe8f026e3d822d97e52ea97c977b8be255ea0f32bff8f96361a63d3797043b3371927a2c5c5ad8c49ebb0fcd6d7a2e00a3228a4e63006d7a9fd7068275fb467e733ff06c095f293b45e531e4263c4ff8d27223ac4a9480c6cf3c93756ec264a509c2c6ea4c36929db2868963f992a326047e6096f87a9ce08b592cad6c9e1ae1296178d868a0378966e20868c6bc2275136973522b05a6609cdad9b6dcd182006979801994749879362a2244209d7434dbc5c7dd834f11cff727999397af703534cb9d64fed403686ea796bf9c030530a593af551e89019de00db62acf1ccde8a8aad534d9bc8743d668e3b9450550fdf9feb021cf55609a7b5e51055e612f02e3184527d1efd8c31bd14bc13e6a1a95aa81c2a44b76934341b87429d9ea296b862c4f0705e190d77656c7ba2a1efeab2f061a1cf178b05ed28410165c96fa28b711ec74b223bbeaf2400e99d993d1f97a8ef17ab6053e7ef53a19fcd7931ca129d6a5854282f8342a265dcb2e183f05769431bdc4c29a5ca981afe429de910c6b751834afbce145cde684f0395e094aa57ce5a9a161e0b70c966094380deb4bb52cfcdfbcc93bc3b1eac3b7eefbf91836437ef423ba4e80808526c48cd89d09db3c566713c33583606ce477bf665d6c4ef35c7159ae54085cc7116488cbdd215808aa2d440cad3b038035093eaf9dd10909eb0dd7af1b47c086f364a7fbb83f72a464afcf00acd05bef45fd0d91525a4a50a859e1f15a5c7b10d16078ba51589fd70540459b31564a0902b35dbf611a60f08bbb00679a6aa4f78d7fde523cc20523ffc98f5a1e414d2545b6c1c79b2b9a8039dbbbc2587d059cd18007cc61451a73c4238b6e47b7e633fb33c7050382b0795b7a8728f37059eb580a3fd48358c36f7b7dc5ee3d7fbf871dd7059686ad37ac66bcaab7e9aa4d47f23a3400d43b637d086868a3c57ed7c05892479a3be772aafd5077bbf2d9a8449f6f15884772be9c8a49a6200543e51ed57d0576a44748992f13ab8f05fe5b58995d7260bd3a2323ff093e9214bbb8fa52158e6af94cf3c3caea162b23863deb4afac6f4e091978543f2959398679e2de75d4ee3a640e376a09a529f42673a2e7183c04c4ab33c0a1467bb0e4b694273165d91dfaee0385d330cbfea2db0ede2bdca1e679315c2597b65757be8cb0d8ca4b7ed0a797b70c08347037d72eec26369557d59c81260ad0d9741953816292e24b8dd193431948b02890831b7dad6bd6b2b7afc0de02bf0730e15ebcbe93c28eb0c2c575ffda0383ed7a3803f1f85601056738209c2474a01e3da25cfde9c60a8a6a1a8fc6228be6d76e029369fb46e997121437d6826991df3f365b89da321d5ce3c0bac5e899d3fff48735fa432c0489cbdd15c24c133d81c9655229f59f865b3c01d454c1aaa8bcc5c3ba19fb722368dcd7111651facd9f070b329b98bbe7945403338a8c1b71b8ad3ea9574f4e635d1fd5d2a9d6bd96d708e965b19ec677db40b5565b71d1348911e5873b9f327cfa5d868f45fa1cb0015c7849eced79505d54b91550138fb26a8402030b6e302a1fd67fe6abc6bb6f35d7831e1bad3675df13b292a0d7434968dd871550b2df9093bcf2b6f622da1030bfadbfc5acca00366c59c0447f99d96ca90c3464c21cc1a646b37a6771b509f8604204cdbba40c9803114674cfa11680a6c1b2f9e73cab53a0d3c9a858b1bd521fad920e7f1eaeac381673776cea0a187a042d7d92a7fdecfcff22921dd5b4c2bbc746c5c20e5ea51df062f74d2fb79e849f0e130f92e4ac8e405afde227ca63a9956bdb712919430c3b701847cb7a5d3d68118fb3b1f6f0289702698dd2956769992d589211e021827b38b60180b8d364c8de3baca8d978bf2b892e6b15e42134ef269ecf0d0e57591291265e4afcace488bd2e19e1f1cc8a022db8b022a3c7fd02a60a9978121e70fc1eb29d836b0f3b4f414efc7c2bf974fa6786c57c99723ec69320381ab3f968cf37b2e321cf2bbb54a21731d1904074f2a8c657e9d3d972384101970c96a7b239956657c0179759dd2c5a556c0430fbe6bde744e37bd21ff79e3ee41c502a8f8b9e7266d49d9d783120ea20d3a2531403b39b9a9f285d593473996b5687038a2bb42aeca2a3f859d1ca961585bb3b944202cad247543784f4a3247564ba18489445d55099a5a6b5341079d5e2c580ca0128ddbd830971b66b327393020280946ea4bb1a2d080c72a823a021b09ada1dc69691012471555f6c97882a303dc0637b6d23ffe44e6fd99ea6d572596d7e4809b78a582add86872bc3906d6976468452ac1ce457c9153f94dd1198166becb0e3af43edf4d2c77aff57a3a52efd7c2ff18d6f1ae9fea4e0bc34f4edd2d068f29a86b1ddd6a1436deacd276ef21fe0f36968551949af571c99982b71b810745c3ad4165c86315e8498778a617ed4be7407ac4791afb293dd641853ebe285e9a5e008e3983d7eae78b104f80c76466a1e1462dd77328f5df1f16a44282633c3275e340a0836a18490a5ede13b38c1a3908531cce31229a38c828093c3bf7b48fe42cab95ac24de61090eaf457cc8c2f53c01bd5534e2c8c8951dc1e102f77c5ccd55221215e89db9639667a86e9199e150e65ded942ea044e1e6dcd94ec829e4ddc922f205d0bcef7e83220ec2bab884aeaf50ae9109ce80d3032718a961d48d6ccb1d2563652f7499951b6cb103a648451e6fe1fd50924fa0cdc23b91860a55fff66087046646edeb87037e893c7ff085258c38045cd5fc8cf074e2aaee8e0aa2443f38cd30a2929bbca404265d8460409797f3c3141aa79db40e5f2ea5788d649c675e5025cc2150601274806835598a14b2e225f018581bc5a5d000a76c19b8301b3298533e3970d1bd4a3c296f35fe3309cf58759481b02a8855e1e1b2e62fea861d5d7a8438ae366629d1da7ff22d560f531cfbbae048ec4c27f7b85d76e9ecf56d007c2b420da7daf9691b0ffc9feaa068eaaac2101852bbded9aa79f14c0460d4e4d1cfd5bb64f7a6d525c5f2d0c98f7be747f7b75350bd5722b053ec7ad869a6b985dc8ab78058614d0ddeec221816e8b6d2e3b1c40e0becb6ff82853322103ba9cd10ef12974c75126dcceef6c02ddf8ef6999ef26002c65bd811fe84057512474b54aec73c0d860b52c1fd6854f56b5d0acabad817acc4ae6cd145aba0700c5c2c4e2218edeca4931a2f2a8f967394c68f2f0c6829908b94485d8b88e3f2b32368ab3d8fe208ed89050f9ee3b013e7068c1bde42bf4fed327244a7fa139d6063a9416f897959e7bed39bd5fa2d85284dc796a0422256191ca09d9644f6d6e917e9449a831b6591c27d75e19d0f3a1dff072d22be821c4596448378f3cba633577c8e2c643443871fae9d502e31d028d690bda502ca5a56a409a6c1a61e7b1d4a02d4d19a6d49415f0c273c99ff2aaf6af8453e6e06f4add928d4dc848bbea74192e5bfd41d19eab83f23831405ca465eb405ecc2fca4d151a4e7cb5e32326063b0e97971cdeba8d00d5c501b2b11825f87f51065e39a5078c948c6596f03abe34f5af1e10fb21c0242d2b5baae5fc7e37f20a64886449b27e9ad2027a982a0a398eb23dc3bca18d861aea953c1f385d259b9db4865acc75204564c665e9171f999da272a9deeb94895b93eaa22764b3250dd9db4c4d37aec8feffd7b70fb8f75080e652ce268a33ff114db6c5e9cb8a4b56f73e5664e3da12a837e9c57adbc5e9bd1050886b30815b80cfea454f5515f0b1cb25b9ebf93810af2d39d4d3fa1643a5192f3f895fb53cf43e51fb1020ffd4b4c4c48b18c484ed5d9116060a54d39bd1208d747a9e85bd0da433fc67e187c403ed9e9d954ab7d3898792879af2424382d98cab05e0944ded67f9708619448f7c0b641c029586308394845ff47e796a0b9fd3cf8d2a8562bf40ae2498ca0f4566489a278877b8fe017b587baf52e5d6a78c87d6fcb7a197216d38b8b27b5395e298bf1328300d0d4c604c7d5c0d2a60f53d00c7b9c5cf623252c7a60772993334915d6cb716f3378d708f4cca89b4315706dc6ac0c6d944e58108be1ff658f3d96fee356f63bf0b63edddcb0b0028654c362c2dc8928af6a05fb05060e02316c87dedde6359907b8115acd53dcc63257125b8e33bf010e3de09066faa05aa73de18457f5e2416e1eacb362bf4523fcfdac664120d80c5834e08ad3ac9dd87baa61ebfe56c2b481f4716f0f1898d185ed30a1243e643720ac40c53312d0da2202425b68acac4d4f7cc1d6656166410d9363e597525701a26641093ed1155624f46a6dc19d3c821dfecc56ac0502c1ee5f1dc8340eac75da24a9cf6fd0df6d04b0dd0fe53367d2c6f9d6e69813484a54e16e5df5074cb7586d30e9768f802104b3f4f32b5cb942c46a24cd366a620dff429d6fae381cad29c93a5225e0f3d64307439c51311707cfcbed19f332174ac4e84d2706ceb70ba3a8ec1beb3409f15742a8f88352af23541226c1069e2e6424f2d4dfdb55ba6e2c27e6b7fc83d4f6df4765647a487412a13425bd9e2142b85f8fbda1b05904a99982968a34abc78c8424d2ff0c186a5269d35b66f8d97ae31f68dd70e878d0ce55b8e44d28355aa74b49a5760586943157a1f71d918d421df5115c4e70b73e4d720c4c45ab20badba2cf4a6541e86054cafe575ba6ab31cdc0b81d17c2d21da4f8c7117708835573452ca2b2ca3cd9982f8c85c421329aaddf5b37da49483ec2451c16a1210f6f996766542957ca3b21d45ec512a6525443895b7e7b2e2535310f17050873556f54f9c7438e27aebd0395d1310345c500f77c87b93ebd51d8fc6db3ab25c3a8ca237194ab2b0dd57862c51fc26313e727234b0bef91e495eff3839dd50863cbe59f83011e745bdb2e720c51faff70e9dd76d4a4ac304d4521217e2031fddf1565d801a0a1785a1f619cd2919c3cc6bd40a5047cdfa0d9359e3f4f212ad8782795de5a3db405d61f7d6f61da359bfef2a1fdead5bda8a5342d83a457cd1ab0f979b747af0321748307648e46d54407176f437963b5c1bea6958fa4b0a72b5e45963ac18c242cb9cf75c3378d4f6b34672c877dfc31101323144206353943cd7fdac91c6a6458047cbb1b7191cbed641877931eb4b9a2d9b7466e571adfdcfa08afa332cfbf1893099aea8de4acb1c74207800741bbe2b60767d92b6150e5ad702411ddddae9c5b306741f1c7f5d9e35d803ef67981f32a9cee71cdbc0b7fe092ff1068ec8cd85694213ae308752b9cc9aac5477890616b61b3c65b24e796b8719d494b93e09e053963d463ce51cf882833bdc761b1e1c30a66c8c3a6ac88c204012d04a43cc594f40e9edee190f434fd1588038491ecd8f38b874cd6d73e955b23e277a0dfbe88bb452a699e68bfd25e0da85b360d91ce0fd3058948a18f851e078cc64a2cf260a08af2bb7a4e3381e238868b119927ad7328099934bc6b57ccd480978693f4e5bbc0005dece603e3ba91597820657fb4ce1ecd2afd0d1a6f55ee7a5f2328641e74fffd7c335d6c36543a9846a8936da6f7426e67f2e91493da499440e9009e0255ee7efa2414ebb2dd83d06f300cf303ad54092a941d0c3a5dd4711b14709fd1a743dddcf0c4c8d830f79e43f9f17e1d8a6316560dd70eb270e5e3d58cc8d7568dc2028d97eb4d41044b6030762ccda4f826d093804349b8e369a015d00fbb5289a22383cc5969bc950b21fb9140c205af25e9d9eb5af8acf5b1823cf9a3739a41beda346adc532e2be4297ba0413623587ce1aaa1f27519a64a0ff03b7f3d808dcd1e8f115a56fe14ae0729d91ecdbf270f05de653a8932c9c8833eaee95d6d6e5f1b483781c077e877da8bb6a5f1b22cab57851852ab6a4db9ec694b837abe7c9c87d949f62fd42e95a24341b121183121b0b899b3878aff4f2988fce07eb4444b8a7f1312416be1ebdb19017063428f4863ddbdb7af54e57c44cd6b04f43571f51c27b4f13228642cfa3caab9cbd06a5ebe2ed14f266210d93998d45d8f8697c20055963c5b59f06f41c3b7abb15e2147a3659c9aa80de3156006af498a1deec770642705ff44c2bb0d566799807f7b730036a74dd8a5e8f7dc1d192d2909906d54bfaf3d3c807a2fc8c1808e6169d15d1821a510abe9d541d8a46f6a981b5bbaa1fa6f0d556a2a046c88a80a41d4d4a708ac6129583453a96410d9f2063ec500cb571643eb2de9456465feb2f598f0c004fbd6e00ec18a8223a9b9a2e0f6aa0c07872e908354a57c72850c21f0b03b7421cc1969b43aa4e187f96a176b520a2a93192a104214a5dd7b5ff174007352ca6b43271fb4524f2282b74ba69683ae2fc7a254774123e6d99864eea13dbf460e62f8b10f6951c3bd3a6df4c764e2b12856d1271b3027f1987f14bfb43cfd0690cc6d39891a2dc74c326425b93b5c277b5cf98766e850d3d053a2c4fa38c1d4458e66975d31ba57b16929e8647d50130c06b104000a8eec8c72387988a38ee72de64a9fb7b1ab10d1145dd3d8dee8ceff062772cf7dee713c2521cc7a79133f1bb20ac34119c58bf1ed5c353a5e479ba1ec0103e8387fac532058484ad0dee8048e834dea7011dafaad7c8e140bfb49718d465f74716208fcfa032047c777ed25324fc8d7072bdf0abf8a098b64719773a0d6b978be480146868dcddc476abc96597892abd6a9aae398dbec263686507820d9422f3fa171acb9f41147e6038423b8d2ca46cfaee9a810106ce2fbe8630daebe1b92de7f77fe31ed7d94226f085ef5529dc3b1290301ea0f65e7aa3ac37d60d6698034ee8f60cfeb8c36c360fd0dbe2ab1d4d3af4442966fdd7209875d1da4605412a199316a8bee0ea8e1d3b3a3f031884d33bc6e64464f128d54b2335481f87fc05cfa304981ee4c9d03bf216e47c8018cce40a2b33740cb4a49b6f441edf0d17e1a7a4d0e38b0cdbeb1279540e14d9d97796d39e6aac7cbbeb61f403b0cc0ecd438cea4e52545575f72818d7235a57c92db514da7528136c6571b65d8a68e275802f117280ae1d1b2c611d8e5ae6bf01009476efc04f74d0adeda91ad4a127ca23f6611b89b4d5a06ce6ce4d5c37d60534ca4ddb6a9bec54a754005e3700287dbf3a33fd8acdd45aa9bde12bd8e153352ec79ea8dd517a092d42ebb911689f7dc411cd8ed7c1a1994232d263967e98822b4f72230dbd0ad3ddf34313684ebf813e47cdb7e5bba1dfcd6fe03560ef1e543d9f782c58a51dd62af6033caa8473cabc0dd78746c7f20c3be7a0fe36bae26a14b16398031c10e73558eb353598afcce93e14002de1097bf95b4057394c44e621215969cb9da66987031006777126e965b78e220b15c71d61be36e097c3004bfbbfce0ee980318aa52c54802d9bf5b9b0e07225302665808aef91f007ad8731347c036af10e9f5b208ec29a0ebd99ed598bc38b2f2e4e02340a18f0cd170bea8d74c546bf0cf40a01ff255b06787f9b125c8919f75d4e941328a044dcbedaaa995bfd0b7a566dd024b402472ea18c872ccf0c9bd9772992247bef6e5b76db524a2903f409a30971094338867084448cb51e4153030e0f7078508688b73e4a81f3e0030f3e18a18cfa2953991c7297a63248375c3e186badb57e408a39ca0429e3e3af79adaafe5af1a0defa6873153974e4d061d5d484ab782c091d3b74eca822b28262e50413b123003b0260856435c4c528692b326698c688318a0560cc9123478e00805063048471c78e1d3b40e0c1630481bc81004208028fa74a4ac016b1565ac15081c1028c1433cb44cca19e5ffc1c3aa314883291a15263b464b5668cc834517b2999c7fc94890c95ab85a5b5eea040d675fc303911e6141fc6b75e78781ba5a98e0a222f4a1e878e1df483b3f594c94bcf468ee98c51bf4d1d2f4ebf7b7ee32e4dbf6b7fab20694881eae37aab7621ce271822f56a2fbe24a5b78b1d7eca74c64aadb5b24031533970bcf75e302b8149dff7e5f08cd199a2700441506c5d33564c66b8f898a5d1f086640af87528d0f5902447c8e248eb1dc30b9f3299e9cdc427785671c5b5fa68cf98f50e58d796163b57f8ee87af0dc27ed6bab5b35d3d5fafd69a577f6ebf535bda13e03ed61acf2c9148698e8a313d59352887f5fde1afce700dfa58ac7b2990f55cb1b366336b458dd12446ccfa2ae60204510057f8be82df14563cd2bbce54c07fb1f872cebe29a5f41bff7e626ee530671dcbf76ea9a3911e6d3d771e0237b616bba5d99002551f592c96759bcd9975bac4c72e8e4fc94adbf57db6e8eb98148136be0af83df02dfdb55fa52c569953028b35db0ef86f26fe3db7d6188945290ed639c6ac509d614a63b8e2ea79a62d0dd311afc0fa5a973018e6227e53237a7eaad7990af58620ccbb9a746b3d82e148841c6a440fcdb558ba48881cb0f8af73e00e59dbed31c11d12bd68d3194f41dff7a98fb5b7608febcc67c54246807471b6829c06549be8d526ce8a461be945d84624ba8f6cabb446e8e3596d963c01dbc8998f175c36d1ad8d359a20ce28ad117a3863cd2abdf2a11741c48325d0226a09f40a0917078e5a8d4673a74e4e2c2b0fba885b33da8fa5713102a91069cfd63863af987ef9e6096c698081817dd1b492d6714f1d81487b76b8fb3bbaa480fe22737e91afd3b5646976bba8d393388e65cfd24aaab7fe3ded7496769bac134b23cb4c7a3e5358c1bf5ef4cb3385fa2f1e56a477a8c6b17f392b44c50ed9389e854977e8e2a8cff522a57b8f724c572c3d6d4253262b9c9e3e7dcc1aa12ccd4659dacdf9083cb1d15873a660b4d5b8a8c1d3e6bc35e7cd4e03825728dd1e0f0d7a631ccdf9397d4fdf54102bb43d409bfec35921222bf44559da7570f6417dbc1a238ddd35fb2142fbc64697bc659b778f9d2c0dcf2e7973e52ccd3a8f67445651f51a6feff2aa2e5506515085af69525d0e9dc2a73c0b9b786113c6d80a1da5e95050f51ef88c1e747c5ada08dec0994b472d6d2c4757eeb76be9ed941502c12ba6784e1889bcb17cdfa47d7149fb33fa8b0bc297c0b3aa84be43230e87c3f16cd7f1c9c34678c8cd596bcba33ed7b1df294bbbbddee559dabd7ef302bcbb43357e1d47d59c4ba693d6b16e93a5415db752975792b73cbb533c7c8a57343eba8eb11872793650f475bad76b16fd9ad925ab64693c65f4b652fe66a1423b7fcb099c51b14d56e8897ea0857e403f707f05714963dcb7283942fe71b6b7cb49c7a70a34ae5d7c79f617063d3b8c04e5ac0329d4ab9779fe98530a547a0a31d98c04f963338c54de21f875e21d2cedaa9082085878d0530067788514c0c74528d0c54360b3f2e5a4e7d343a73957b89f5d2c5f34b804cb5707b2972ee253058c6968661d003dbfce3d027ded9a6d7096673925e42f3d7f3923c17ddcf211e39e52f10c6b4e5b84fd62a3ac4d5b74af2d3ab2454955d94adfdafbeb59eafa95fa8d8da49e9e5e37b2b4eb3546ba6a97bd7007b33d60c412ee5518bf59604205a7c74b89b7ee4115ef410c1f468b1850795a0592b74e0518524eaa3842a3a042892922d02c4bd0a7259e1a5145b32821d50375c26d1684a0e2ad0729f12cb0dc252479fb91230039410b33bb22288b073fa811606e29dc167e854b80fc77b63fa0c55bbfa540afe05ab82401626f671b04502f226f9d1c41a4fa5ae51ec1eeed873ffce1af56ee1058798bc911f21323305382fd4d822106d0fa41f730b3e2ed0820166f6fb0f692e53e0199b723dc1cbe185f8cefbdd8c6a0dcff15793b80ecc4db1c6f9f855b413138197eba66343b2f9b1a5a191d8319d15aa1eb184e7d06cd1146d5204bf28ce5cecececece6e6767876a07960597d8d9dbf5a876bd5e4f86783291e1df79a347816e98b96175a3eafa50599a958adaf12e13a29dd90d2d68909561c6f05914505aa6780b6bd2136316b533abed924e4fda89b393684623039fe164294a98a391a155e15e102f4dd53e4540487847e3ac39413bb09ec1598382d6b03ee3ac69a137a22cad6a36abed7a3b9a135a14da12cd092d472343abf279c10ad9d0628996a3e592382df7a2e5c0192de7530484846740483daf1bba284327834986530f0c3db81ea39e1a72706e4c19d97344536ac96092a183c970ea81a107d753438f9115b25126680a0d086f6226d1a40ca79e239a124de94371b7b3e1bd4431464f95981aab2096743b68d3b69bdac629478adc813635563641d82cd930d9e8746aac726aac706aac6e6aaccc1a2bfd456aacacf7e4489139526f9d6763f3125b5a689038abed76363c1e32c6f9047beb64728a34feaa89aa91aaa9a255ee72b8e4f06aa66ab884a235b5dee9d55065a89d4d54cd71434b154f5256e806124d44bd358295bb1c2e355c6aa6c2722796bb72e7da95bb5d1314480b94a55165aadfed5e362f1b9e7832e9f1d6c964868727939d93e889cdf5183dafdeabcbab8ae6071a259a1ccd105e69743550bd196709053abd8c602f1a1a1a9a9b97f992bd5e5555b8278a37055573d4b2a041352e35501f9bddc0ed763bdeaee86d54ad092db89a5515558f27f53a6b5036b3daaeb73bad783d9ecd4eeb64d2e3e2c96446d8e33166f4a6346e460fecb5e3ed8c4019678da2738ca555591a0d8f02d5a26a50587c4d4b1353bbdd8ec7db89334c65438ba526498a0809a378ce1d5d4481ce22463f5a2072bae24645bba8ebb3eb5151a09a171a540323c5c3663770bbf36c852f9e18523c2c643d26494b5148b3950ba36a8ef2a906bd7cdb8f71ee5089b39ddeaeb7838ada396f38d99c379a7435e78d9c54cd71e30a16547856e8c614a6b72e93b25165a3d7bb43375a6062c38a8b28544b56c88616bd26bd2461af48d813f2d65d61efc75ba7097b465fdbed6a504f3547cd09285ee5939eddc0f576bd1daa9e19439f3b7f67676d777da42ccdfae91e83276af7d67778744e9ed9b8f3228be419cf1e192438dbe959da4e06e3ce496d3cad93c98e8b3b3178688c3bad93098f872793bc43de76a87278bb1e8fb7838a92e2ed7cc69d9d9d183dde6e071525b5a3b2aaea953b1bf4aeed7abcdd0e2a4a6af733ee00853b3b3d2adeaec7e3eda0a2a478bb1e156fd7e3f176505152bc5d8f6ab7ebf1763ba828a95d8f6ab7ebf1763ba828a9325adf3ad31e185fc41d20c17d2627c0de7a923c01e370d8eb799fc4f5b45f734ad8f86966c1fc58f5cc2fe631cc6128567a6dd5e5b5a11916cbe9add6ff5e373adfe8a9cf7524aab4fc8de2af9f3d1e14e83ac52f030039b2b4eb56898e2f030029a2ba5def2580c5fd3723e1e461437802c78916e84d9d4708245c90c5f20dfad78156e82768f92b87cecac93313fe04aab38533bf3e3953731ca2f16cd77e29ecc169351ca6d982699a429826114eabe1304d1ecc9d699aa6699a3aa6699aa6390487699aa68e699a5e3899a6699aa68e699aa6e98328de8f75564ac37eab6391f5959b05ac334dd334754cd3349d78d65622eb639a1587c5b416c4e3b733cd9ccdd06c99a2399aa4498e622bcc6615894d13a70892d65aba4cb306d3a5738681bef7ea4cd334cd9ccdd06c99a229b6c26ce4a523067401cce194b055a5253a1147100473d812c7516c8519ac61244110cc6198413264f923e6dcd23a34cdec0ed268e50fd9e4e2d22008e6b0d50a3398847e4179d1802098c396388e622bcc20181a180e130c4623b3522e2359cdc3686a4010cc61ab156610c98603180d0e11d595f342b5b70cbf16d5e42e269f9c4ca8b8eb43058fe38f4e4f4d0f1f4bb4f1d3f35be7c59124715a9ba63b8d56ab691a58e0487562396b6d9a18c70acc614b1c47b115e67229e7ffb0c5e06929edbb7756c3d6dbc0a0c5d21963319d9e1fd7b1349c28e2f85b878e0d1d1b3fbf75be258e24399aa63b8d56abbdc9c548e2291d9c2ba48e8e4b884b67fab91ea915d24d3faea3a3636dadb81e9d988e886be12a8eb72b0f7783ae56486b51b742adb5ce5a832cfd690e7438506c71c4192cd8868db73512a226c023045cab42bad2acdb7097e55b17f5b15e8e3f34099656be0d81eaec92af72c181686b8eead42dce5e9fd61c2caf3958fef7633cbdb77cca7ad18a66d99feab7569ebf1ed65a671b749babdbeadfcd75a6823fe8e067569ed53b569653ddff37d375a436683afeba8e4b9ff643594aaadf787662e8e4e0dc983635b2188ce6a55d25398aad3083ac0f5f4b81c8eb3cacb57746ada5c2baa8bfeaadf549ee0e7dbaa79efdd23c1c2d0d4c63f9644fcadf12bd57d441df51cb3328b64a523c8558fd197d39ddf315e9581e713c33aed21d9c9bf2d56dae6614cff3c3dd211b52214a8b44607d9e650a54a343dc7050f453e90795026d608f8e9292949472339ec7659c33efb1216f60ce61e839d75cd689f51da28ec77c66d9b5b977c496e655f4ce3166e8e072344df4b9e6101a6c50f323bb02c4014d4ea98993256d3671925b72d224b7c472c29a7d4ab92506bd6aba467dc5cc21622f37631a00b6543a2a82f43c57f4c645909492908a2825211d7540fafe840c392a12f215571d97a10ff91ace3e231b63be43a37863a4f403310b0d8938466c85b00723b643d88e1f64fdb7e7a70655f1bca7097acc747acfdd6ae97ef4a1f7c55d0f9dc7cde7e75704226fe0cdafefe7b5fc3ae8a77740b17bfae1889e802e7e4b9f94ff9abe7428aabbbef43a7832215d245d24cf4fe98e67eeab675dd35717ed787eb8eb536469f6cb710084053c3f254babb4c7acf3c39d1f91f5b19f14f073fbdf6c3be0f16ce9abfb7ceb0c80c576e8a35f11cf107ae3af34823298d1238303a09f0d34f0a1d1a8951d5021d21e2a3261396511d56c3edcf6c4ba586fedf738c41aa1766b36d36c6db54223d4be26c4ce29c7d4c59214b64231bce84d9d6ee8136c96b74eb3fe532750737c6ebd025754df72fb22aebe63d4fcd0e8bb1c227d8b0efab69f6f4cce6897966df227826845e7ca2a80a5d92f947da8f3a16f10de028541a17fe7a541e16c879406b59cd2a0fd79edc0e760eb5b3313644ce96fa6827fe8043e2547e0e053a057617c1e61cf3ec456e8aa9042bd7a1548c07a10be350b4ffb22ce2550dde7192dc13e38ab599a659d3f965667b41f114e58d294298c252ab5695f23a10026d46896f66323a465c11ec248fafa9575ca88a22979db4142c76634227ad72853184b6fbd76874ccaf24d9d9ef629759d1e03d467cd7ea634f53b63b158333765d0ae02d53d09545881f5f659d7ebb34e10fe9ba5400d50e45483e8e31ac688b5d25a85ab60cc248171aa6072609e2481a9010c118bc56281f9cb18f329d31729a896f08b13ad41d431112f48aa171bacb5f662ec6508b65479061c06cb7c990b961803704bee0205822018b6c2300c5b6217276217a58f59da77861e317529fa0d9e324dbde0c59b8b1eb422efe27b33164551aa065d3bbbd7b10ad6ef0823d83c5e26b509c9032d5d12a2ddd5446a452adaacd4870925766476194ce2052a3a38a27d8b6a6c0e9449cc11651283fb6d3e7d3d650a339501fce1af1c536ba5545354508cf7decb02c1ddf7911f98a9964010cc21d50d978a48960f7f5d24bded02e9833caf8b17c22facb5b68b94315518630c95592c16c9ca391cc7e0b015b676783b26098f19126b892d71e7728c388ae35869b662764f732866085114c5911403a59c4214b99849a264b55598ca5e9c94dd599a1522f54a6b254356035cace3adc7e049b7abb5e2af3665a347f753653aadb66dd2bd06b8247cac0244d163e68f2204039050802bb2f531a6a34dda57b170a03c1d88444536b26b4fa5feb4373099797aea54abb5d63b9ac9fda64d66a4846085a8992511bcddb9a0827861a5ad7fc97d597acaf425897e19f294e90bd1532f663ecc069a5aa0d284a36ac269c1f829166bb5d5562dd55bebad4aaa3252cfaa211fb3342c84563254228f8c78afb5a109f7f4b40947e5777d3a3e6dc2f9f0d5f1adf7d626dc0ef78615372463ece7d5d595198ca7189dfcc64d2decf0364ad3a61686fcbeb8a70e3e6d6a4186a616705e88b5d65a6bad951cc938f98dc9143d19a4dfb46712c3fb9daf5f2fa83e466b176670605445896214ba3a1d51f8ea48305171d2557bf187bf5a6bfd58f7defb7ddf07822098c390b24223aabdf86381396c555a69a5b4eaf145f3a219af88591a0d596ba58111d556151e6324c6314a33cd3d598dacc6088c27c42d35363536ac1db9b3316dcc24ca22cc1bf38685450ce206e706a70a8c2a60e470727072f02e4c171a0c253146e48ce3388e393a601ce52a75e572b95c317672971d9e1d1e308a46f14cd6f9948c55f0388fd7a83dc62c0d0683c1fcf44284633a994c263b67543ad105b3d1c6c6c666260329dfdcdcdcc8e8c9c9c9e99951a55ec880460634605be498a5f1f0f0f0d0a011650c86e643f3614d7dd515c72cad4e318506a30c19326468b001de609c3163c68c0d7ef0cf58a5007100c4c117505f38e5bec849c91c047110547924931c540baa01a9d5a8d548aa01801a00f8c2e88ba2bf5e89fede2f705c00d001003aa8b88a3e82eac04607367299aacfc8c61814141464e346195ebe31d6a851a3c60da132bb2c3456514948dee59abcb9e8175ac858d1b1808c0e40d8b64eeac0892ca2105179f15265fb822cf19fbbc8dbe76593315f7a49de4a92bc915569fcf1c72de31423398e2314a306e3911f1d8f9e9174f9d17592941f9308f93109d58f6392323fe6a0e5471d947ef491bc8de58b6e8aee3da298247a165dbfd884c4e8c52c1aea77cf7f3fdb868ea8dfb429e8377d32b2c37f4afce7d94898ff5c2359f9cf4d475ae23fa7e9f09fd770e000c47fcee3c77f4d47acb87d3b8ce44b30aa22862886f041cb956dd35e84dc53154b3c31840eb65dc3ee498f3d1ba9e17148de441c1c7ccbe9ee5b9ec95b2b3cf2a13bed27741c2cc0f2a18e0f71f807dca16c0bc3b0f721ce0b1998ae30938315b6d0062b7680ca51292591c5b6f587679a6cd1840d40a20812c250e6284c18420821c6465920e443161c791a8f3f247ec77a3ed74effcdb0c32dacfadbd5bd93f37adddf8cb58495763a8b2c8b0ce8b76c27ab7a2bb37aeb329c1df25b16e5b76ccb64321994a3df32d86fd99615bd956d59d25bd996e5decaaad0a02a576f774c17ab7aabb37aeb311c512c168bc5a0f4f03bd62b7fc7a894d02025576f370c2bc1b0120c2bc16053601b06db30180cb661456f611b967b0bc34268b0109a4d338486eaf1109a316f9d064a13cda609f39b66d3d0d0d0d0d06c9aa4b7349b26f796e6ccebcc6bbf30ee45f5af316ffd05e5e955e4f7eb68c9efd7ebf57aed57d1dbd77ee5debe6e16fa66a1b7be3d7d7bfaf6b486b245d7de6fbdf5d65aebad8bdeeaad93deeaad736fb5ae0a0daa72f576bb742e9d4be77249b9a6debaebc90e5d28eb531dca05f5d65d56bcf5ed92e1b76bbb90fc766d57d15bd77625bd756d57eead4bd7a46c52faefd2cc5b27d6a7fa2ea9fe3a29c7bcf5128a9792688bdf65599625afb4a5d29581065d19aede929becbd2549abb74ee2c8bcf54d6e9286dfe4264992dc64d15b7293496fc94de6de9259d0a02caede8eb637dade687be3388e4f76c89ad9a30be31e6b96dfe31ef758f4761cf7987b3b66a14159ae5edc893b71278a40c4dc6fd106f92d6e511445718b496fc52de6de8a3a17d020175cbdddad5c2bd7cab55a2c68111db55aad160e210ea1cdef30294c0a93c29008fe1d121d2d856118f2def6a041b6c7d5db6c8b72cef986bcf3ce447ee79cf3ce456ff3ce496ff3ceb9b759e7850679b97abbc12ab00aac02c1246f7f83445fc5fc068f9efc068b7e8320086eb0e82db8c1a4b7e006736f419d132c27589b15c58a6245b1acde3a0bca5bdf2c22168bc562f19e7c4fbefd2d7d4bdfd2f77d5f53d3f75179fbfb23dadfd2b7bfa4b79f52ed41836a8fabb7d40a4be1a9b78e9fec5045c23825de3a5192df78e325307ee38d8bde62bc71ee2dd68d80067571f5d6f73563827b71446f91f87d8f96eeee5ede3ff1fb16bdbd4614a04167e896abb7d60c0ad65addb8ca71830655dff5ccdbeb531dc7d7fa54ddd26d736fadd25ba776db221b7587a8ce669b106f957edb6db7b558bc3533f5d6b6abd45bf2eaadab80e6206950bdd639508d9cde5a29bf2bd15bafb8301ab042b4f6344501e3ad257aeb35eb2458cfd62d0e8b7178a7c449083043fff9c5ba3b847116a7fbea3194f4c643be3a1e62858e8e9841e93f5c91150a42eb207adfde57c7e942437d759c31bad4419b537ae337b1d0dbf6beba0d93de76f7d57362d01aa77180d0db167d75730bbd6bd557c74942efd717bdf1bfbce85d97be3a0e111ae9abe354d126b8435889e630842816214dfef3104828c0e727d8216cfb7c022864ac74a569754a85e8d47dac84975c41744d0be8d357af19a27168d01b3f8e104d6b708f7f6a455a224784fc9402ed20d2d95610044511381bb5377610e9aaf88108f7d1df9a75f13d69bad0d869ce0929a8479a606265c3fa9e3927a4001b9962bb3321349c59b2dd131b9962cb96565d3c9b28fae60ee554b745bea8ead9ec6e0b97a43af329b2d1a919a88d949ba817fd80fed09d9203932eba2f2004d124471fec5d4d2bbd43f489a9099ecd091b755d73d89c235a7f5fe07b2fc618df7baf8feaf7de6badb565aebd09e9fd3ed6f7b1be0f638caf796f7033171162fc61ecf7de6badb5768a66e1f1bd4d40f45e43c1fd1e6bbd12690fa59545e96c466bb63f9e7e416cd433cdaf9ba2f3a9dfba5f6f1de79c80cfd6f27c5deb9c59f01551a0eaf9c4390a54ad0d57dd9cb5163f3ce9a370873e21d4c7babb69f7272489faa6f19bf25a339306b5f9fd09b111c5590a56606bcd32050a7da6fc8faf1f7884ab2ab340cf2c90e52ca74f1a50bfb80006a1839e82ec615d128609ce96eb17f5edae4ffd2c4b49a43dfbe37db54a7f45d32b67823cbd02468ef7f48a99267f8de807574781aa02acede63e31da6977688326c850b184ab5526c0dda10f6e8081920e67ab56578fee506904133030c2d9e80eb77487ec192a46381c0ed782cd55b7b822a33b44b3b361ea6867d5ab3b5b757daadbaaaf5e95966a8e0377e8d6ea26dca11c59a0e86cd51f80028f3b7471d7a77ac571876a6e6779461767abf55a9ebd38ded743b4f8635df1411074c0132db850d402124c409ee825b1850b1f5878b8b2837ab0c68317e94110ccadab634347930bbd7f3d6dfaa18a179f36117d3912af9ff95d9dca64d04e812c0f0f9afe80c4ef8ceb5b307ecb64180163d1a2d38d4ab1259d5c8fae76b1533cde1d7159e44bc33b2672b91c8be7e4042ed1844eb7c5c969145b5aec76f7db894ee4110b2b2bfc75e71c83233169c4d938d1393d4db314153d75516785f618e4af7fbadf798fb81137167d49dfbd3e1ac1461db4ed1dd1d5454cad35739e34ebb73feb15b334b17e4ec90658db374bc10a6c4044d1456b510d62af92a551c7e42d493b015df95e7b9bd075b647576cb4342a8a556c4979eaf7ee56aeb56469ad166eb5ae6dd516ad29370b36afafb38d01ea600fe720c97844636bf5378e499a8ea16e996392b6b311c9886444924325522bbaec65b1a8e8aab5d65ab1b5a76b4ca2f1b518578c310dcb9d822f9f005f3a7daea4bfae6469d6c95b23fa32191d634a2965b12865b1669f67904991dbc6ef594eadd972bf977e256b9629906e9df4fa50dd974e14c895e4ae2496fd9488f529169b7ec892f3b44908a71e6aeecfaddf9188defa694fad3d88394418a86688bcc18d150d6a9e601fdd021a4e997c9640f098bd1d9ba71b1c29356618194e536eb986602b85aebec77befbd331c1c347d22d67c6da554f4ce342fded8fb8e173f2a4bbf82d5c93181fcefc3a796a6f3b5469daeb5e63d73ae874fbe183ec54f2901ea5702d40fbfce720945ef3c44109b2c7ae7f07b9e8e626bac9656cf1aaff3f5bd0adfaff0e90fdfabb5ad34c4c1a2770e3f7e00b18449f92af4a1a4a74317422a1a03c9551abc2123a15f49902881f425ac9283642ea014f04ab7bc680112a143177294c640402d1abc0108fd4a1262d134549274564249bbb0089b18bf60b26141fcb1ae36411b3ac0a74d43f8e022579d0641904ac39e3641390a428b534227746eea02ca134806ca962c851e9f3641b12243a1c5a74d50c8844174e84293c64f9ba200098934f8b429ca0d5906fd7ada1425c98fa6284a804268f2695394273211daf5b4290a1621113a7cda14254cbea2594f9ba28081330f129a84c0e2f38203e358725d36715439f1789fbd2a7dde3dc6f1d97cfc559f75b806f7f9795fbdf6a039b0120daace030c4fabd253af491a3c51527a4111282cce2c8571a50b6e4b951e3f001df5f8e2052470f001855e79e28b2f5f18256179b2edbabbf2bbf274405016aa0c9183e105475f8800b1d188810d5dacb0b2f4838fcac3e1703350af63ae95a7d4698dce90c4942d8430897a81948d843b54009c9225638660828924361a640c145b861cf9606543e10ed938197104105351b4208b8d7a25aab80eb01c74ea29304108acd025e25679ea3ca8d3ac503de2a96beab5c7c3e1704468130bc218afc74c67e2af29faa6d938e22fbe4e9742a1e0c3177f698f8ac6371d5371477fc75b5483d8f8ae436ad299bf3557c9c9ef2aa5ea7a44f1b73a3dfdc521faf2b74ec57cd75ea5fabbeb18abbf6e9750f9abe3db1605f96b871cfd759bc4e4c8df1d9c48a1f2d7ad6e8a9bdfb6e99decd35f0bf5d74ac560c44e6d4bf5d78eb1faeb17d7f4f7f7253a7ddfa2207fafd39b64c4dfbbc3dfabf4d7e9be4efecaae537b89d4d0c1cbbc02e44d46c310190c06831181e161238c0a8cc7613019cce9a6bd1cbd19b280ba0a428b28604fae9af0aabc30020a1dcc654e774c8bdf3abf7b5e26b341c39397399679aea1e865358879d910a997c9bcd682a4973905c89b0c070f0f0f0d4d9ec72740de787cc7e98ef17eebfcceefec1839fd8e1029bf63d4e3775c02e46d2702e40d26f4332533fccc2140de66f91ce24f999f27cccfd3f31d9a51052509293a2c51a485ed9c9a3284770396234b3250ab3f77fc8e3d4ce7613a6cf130186c07210fdb418987f903c81bcc6532994ce60e206fb20690b71307cd7b0c3fde9d01e4cd7d00f9ef13e23f77da8f1592e19fd72e0e1f54febb531e8042cff7f908e3bff2bbb9eff33a6486ef8a94a4944310d9f679dd65f07d5e793044f1dfd4ae56382b2423a2e1db06313a5222fb6d91967256e8a4629bac13cf427d6eabacd08e7f6ec75833b8a22339bf6f9017fcbe494a5688c7c99592fb31c57fb7c905bf6fd47f7e7956c8fdf33b75a96ed57f7ead7e98f9ef93f21b1be11dfec34a10e07214e68626577e18d9c840d9b045878427c5b6f54f014415171ea06ce14312dbc57d21f241ca945e171b0b4d6a90c2e88b11a42588f858280246163fcaf8e84294e4eb00d2142fb04208304d74f8a020620a0c28639a4842fa9cd6aa24251bf5f5b878011723882c3183121f0e478871b252c5154cb67d8f7e054a92b0407204962ba06cfb3afdc7440f2e7e248952d44311b67d77ff3d4d4d6571c4142ec860db18f75f1227391e8ee44026ea0797fff9f113c8dbcf6c369bcd7c01e46de61bfc38e237700590b70d80a0ac6411435397293f6c5bbfbbdf28ef1fe86106a63139f8f0421136ff31e5dd1340de5c83aad7c04d206f1af0f0b8c9e39987c71140de787c8a84781f3f0079f3d9d9d9d9d9710390b79d1d4feb3dcd0b40de68e7799ea71380bc9d4e63e969f800c81b8d2cb32f837a9967990f2ff312328021c867e02490b70c72d0cff0b1c4cff011c8db8cece3c4882d51a83832e20a189487191d2173660618e0f0c4151bcc47d3c35c04f206ebf151e47bfc46de7ace97b1c5cbf010c89b0c0190b70f2f29fd7897bb5c2eeff9b1423beef2da55c2f2ae1ad70f2e974fc0c5e372b95c2e99bb5cee72b95caed35dae99cbe572b95c2e97cbc8cf7ce636f236cbe7799ea73f793b7d8a77e741de3ccb6432998300f43c4a47cfe301206f3c30180c0683c1603098ef206f30267e2788df711de46d0703c124ca7f9ee303f2e65aa2e5cbf22e7d597acf8f1dc2b6d26d5821faa5e35832c5973a7ef807582197973e013a45a9bef4102c0953c28620edf02513205fc2ca6aa59479e9f5a984fa52ea4b2b2894c050c40520a4e06c5b2380cb55124ef8487aa205b632480c436678418a0a936d53a725319439825b62062a9ad836d5e14a2f9deebaf4a58c498f97c9646ecadc03f22673580f0ff30c5b42f530c741de602e97cbe572b95c2e970f9137d7a565ae92254b92f8cf856e90b7d23fc612a48fe136c85b0c1d377574747474747c090b5ea78ada97de01792bf3e75949d47f0e00f2f6790df2a683238708ea73bc46de725e70fa582c16f39e9f98d76e8ce8cac7623ec4601e8b95b158cc6337b827c25ce16d71e428e6f40e859004c5ea8b0e4eb68489f9d0efd80b531910c5f0a50791b7d284c1dc847986bdb0e561ce0179837911ae1f1bbf6d607181880b51b4a61786b4a0e53f07226f1f0e20aa6628fae14a15484aae27efc2fd70c56889481548bad85c2d647997ff9037976f40de62383d748fe31a90379c7ce3e6cde73737375ebbf17c73d30388bf21bafa12005fba0f792bbfeffb3ea791b7cf6990b71b1c260f6f7a06e4cdac71f235ee56a8f41aefa9a931c2e1703f6c359eef90058ee0410a1aaccca0e483ad0602473c5055619ae1879a1b887c8d47f169f99af8783e2dbf75f8fca64d4462f09f7f36e06c88e28887a33348ff398f225efef3194ebbe7cbb274ba69d4974a764bc2e0d0c4920d4de8a67de9b52f9d964e775f963d7ce92ec597ce8388d4972cd460840995a416744b08612b89407de93de4ade4c9206f35526f230395b7f11979b301e283ebf2e072ec3d1808148f4bdc04c3300e42e5310c5f251c738c6518d326199e3cc64c7e57272bf45483a34c90c22a8b29609830536513c28620904009c2082aba60c75058852165891139f464b06d6a45f36405135210d9c2055758ca8a172a5f48c1c506dbae4b7f4587175ea841092332d876cd3d0e12f5354e7c8d9fe4ada6e6504edebe255e06c4cbcb9c87bcc9f209a230b20577840bc23461dbfa63b1251ff37c8768467470a2738117439ab0c58064f131df216f319c8739adf2308f41de60a5d31dfbb2ccf9b28c21cb97408cc400e54b5f01992f56b0c8d02307226c5bbfcba5e45d9eef100b3ebcb06265872da29ec6d86268f22ecf711cf28679343e08f1347e43de687af8f2fab59b5a6b976bfda4ca6b98be3b68ad7d68f2faa5af0e3adbb4d723ac9d6acf5abfbe228a29381ca1449113b64d75ad189c78028c26575e00b16dea84822654483a240571a283767a8736d8d245eeea491826a8b0d5e8ee31c64fca3c76d3bcf2f9fce7d90992ff9cf0feebc18bffdc86bc7d5e966e969e4b2fbd86bc9532ded54312ef72197973c5c89ba64effbafa97c3c8dbebe8c92773789224fdc70a954e7aede2c83da9839c808b243d04609ea4639e24b1935e87909aac494f7abe4325f0924319246574556ca4d33b0481189e909992a2418924b6ad7524b57ab2e29ec4f2dab115d2e0b5d39037cd022e8c9620668a3861a6cab6f5639ce4f105a690c24ac9052a47bab061a2328ffd45def0cdbb78089fcaa8f40a9a0b9b1a22643312000041009316002020140c088542519245591a06fb148012718648524e32968c83591203290619639041c418a0809011a91999d9000066a5d3797b6f78cb3880f9e6a66296ba4f327359da14b71a25a47ad5c7402fc8f0c958f4b6c3a5ac1e0ec938c7350185c5e0d1b1bd2660911fbba4456ae42669ceb1ea02a68c9fc36ed81dd9363ecf66aff42aa7e7996846af5a3e3fb4ec810f1412efcf7d3f799426d49ec56f93517f9bd126c3bd06a5c0d7658129da419184e7981f525d251a47000096d5a872c9aaa4147e1f146820e786efb5c696ba2cb3c7a78b6b09df6c54bb1d673aa674821f57ef46f50b5312f0454057c253aa5ef24d8c79f2e05788a74090f2ab13164bb14370514ebe34f1b2370348d1062d11212bd4b5c687b3897f3747e09c83384e860e4b3d014672ac808e1f0a3539ac0005f14dad5b220022a7ec235972efd6a262e4d0ce9565fd5cb325d551194dd7f566e2e3aa68ee6115b27e8c6b572cb525d30a6e53cea791d55363834f8b7c5aee3309f0d82eb1c45787257f03e4ded0d9b94c833e5182f69bbef7283e0ca4c38f634630505ce68581755f55c7e9b690cd05f2de8a90ac3b9ca88d7f126b1ea2036c4cf77f485cd52e98cc9cafad1a67e0318cdd9cf5ee3efe128bcd3302fd0d0bb2721d8e8e1a42de438eae6c3ab77296495e9311f8c5424aa024a72f28ad39d5ee6751f83c045b0734b1ea315034a2f7a4564b4404bee198b620f727b4abc291c05443b887c286218d15ec332c6b92e3ed47db4247cfa1240323336b17a7393575d6e930160ae527d782ec0f465ef95ad56cb604814a48a3d84938a7a49962ec81733a2c163a0891dd93fb3a5be2520faa52b0bdc385e40ebecceb8e94a90859c954efe288d86a359b97801f0042082992ed4b4a0935e663b1ef53c83ae6976a600740171063b6c2099dd732def51f86476b30090ccd2e1d2803b2d261a4065fb7b5787f4e7fd7a8de2af6dc4e79ad722436e8aac2dd360399e32803e23cc1bd17feee82b1adb23886a6c7e9961338ed1b7b07da52f67145dfc69372a5e47587e2af676507a930c8d6985cb129938d1007d39cc9a0f63493cd2cefe58ad04c2a35d8d8e74d3b1bec103b161929586741ea273928ffae1ed362295dc5988219db8c7f9eb655a03a71988a0d6887f5c73967a91f20dea052add20d5f4de632568bcaf110282e8dfb19958a1e63386f89c4c5243d808595ddcd08198992b85157af5f699961259a7e51c2105a5426155c17956f411ee6bbaabdf60fec884a038a61661a63e58525b81f16fcdd858501412faf125034071528494e18a0c09db782b1bd99bbca61fc68a5b5ef18fac17e2b5bda8c7a118f38c0d4ab31064801566ce84a2d4f2aae314a8f958e28cf228d9b445e0a9edf301539d17931c4c1a12e048a44087f60c986efba3b5d10fd9b5e8631ff25b01dcceca9c9355a127d0178a6c56ac91f836b0c2a64829c4c40ac38e45c9cc2d841ee60ae73ae28b16212cda10a8a6e35ba55adfd25b16a4a216e68c7b69aaef80280580cba64c9c5744cc8696c7db7c1f3a6287335adae9b721787ce126162c42ab4debb4237f6f4f8588007a18c6d59cac124e1fb7b4ef8db9a757730595f05ee390836efa5529a51ea7eef26944e769ec1ab845e294a19fde326da3fdccbfe055d5720ba174527e15377067ea67217800a85522193b1a814a9aa110d5ad5d237a5681ffb9306802863b0874c01b6eb72fc6b38bf307f4112b3bf0d649169d9cd465de97dd0096410bab22b91da12a425685303b797008c2d77ba5bda0ce5f09afc635f69fb8e347290eeac0e17c2cce933b0d9fc03ce08a981ef9b9c86652a4ac2be7988542633c26dea9ef8a26019073ce2a1f6cd8530fc1c23c2855089034e02e91f587b041a451f060c704e5116eee150a1e0edfb1efab71b6822268141118f4f7dbb77bef8891e323da67a7c31c9387009188d95c30f03233fe6a0bc741bdbf9beea03a9c37085b974e09f23f4ba013e40b03063e2b110c0f4bda815df98b0ff80a2314c44b529b0d1351d2013566100a8c5df692e7fd2a5946b267a0651814d1feb88ac4ea3a2c908b0eedd0b2a2d471f67d849c9211b0f2d7df927f106eddd43da40794de4458956c1efd731dbd0d134a48f8c0640d624d088c70c3fb7eda02b320d56a01297dc516a5c70f9b7c5f5ecb2404fbe93546f344c2624758a8935b3fd461de7ace0c665ed7c1302137403cb73b1cb6870a89eb214fe6bda1be096061f21c567fa6b1e3ded14f466c70da6834f887e07aa7e933e6809557544c792417be36d3d89b30a1746b97a42eee7f2f56f07ae4924343542d78d6c5b60f9f29d81fa5b6f52e6e9bab4ecd5d271a943aae2e14d51324922ddc5d502b73cfd598d226adc6293b0c4e2d39192d484f3bf0a45626481d1c6d3a1445ee83d8c704764a579b81e727cbb7381e6ab9428e6a97287baac7c423576aa6e8a5d16faaf881015828eb57845c51077125e2ac1784b6b4a2deb626c6d9ab470d20f62ac70f905d81b05c3282ce0b090753392f012628f2f93efc91e71bac8d372407255720b242e63ffd0bb2533a16e35bd5c2fd3e79abfda2ecc85128d89421e76bcc258a402791f90c23e521a39391aa58e2c207c49c0ffa911e2d794752cb4540288fda8092c67cb9dd71d0e20f823c35670b48ce84bc545eb2cdb9453167d0154f60462787ff6cba1397264870d9ba6281306da67d98349bbe12ced81602326b444a695b1da9c5a8ea5f9df6d8eb4cb352bf7c476ccd3c07e0a4f774c5fd41e67cc3551486ac69cbe2c0b084a2490b92305526ea8a8c0c2aa5a68bdbafd5ce768931587a3ab30757947ec153789282ecf97e9a227ca234265af8137c60eef1b0d151d8bf18a36918703824ab953b084580771b631e220e7844cfc779300e4a306cfe293c67f8f206fa54a89513756613c51fa65fe5e279abeddadfb41b854723d0badb4c9491612be977dbcffd7880f409471696083aa1189f5551727fa4fc2dabcc40625fac97f1135120c2493754ab0bc66a2dae0b0418201c3a5fb42fc397ebca11de7e3539ae2c61300d000e1bd01a908d46f8c493f028111d9921f205cfecb32ef4236c6b01f1f4b67475182effd803034f9618ce883cdfe2fdf6f085a63c0eb8ab42f3f83f0aeeaaf3bebb92ce2af2fa6104b480f3c298365d60e38285f825b649414bd4557a712166aeb6a214cf4cb5de2fe86bb206b2ef59c7ab3f6ccfb41982c943edcb131265bc457a8b5bb2fbc67ebfad02f5dffea103bc8dcacbcde55fa6dddff78cbd52c4619ba5d6ebb97a5c735b1306b9592698d5eeb4d65052b6ecabbd27bbf8c786b738a1b30985fd8572b113e96ecd82120d80be3e125f0fd12d2f99903e31b610ca17425f72b5d1659a0345d7249dc9189323310d62099ece1c3eb104d8315d557e25ab436812346145dfe034b2ef36c7e317de3d72c780d7c326a3593d3676d14f2520fa129713f25d99ab3100686dc9aab65791d1b18c864ad025c1967afa67a16b8d25587b2df9392b3b56f1727eca2f3fddee341bec1259ad445d33f09982efcde375296cfdb95ae6a55c518e0f43bf1e55c4aa0689db991990b3db8dc17f4130e540b7482b833ad52ab5916d731ee83fa504a1229d13edce42b93f837094960a15cc831342a862a9e03790cdbe15bbf29d3e94b631eea2213a9f3aca1677b70fbf86e43efd5dfedeba1318e30ae42daabc6c656e8d6003b23706b9ad2081ae35d2fd0ce695439081fc39c96b4bf0e1729865cde0fb9d7f95ba132f908ccad8f16acd18df97f7ce8d4c7b3f6a5f0005d7f99287afd3ac74ea08cfc5f13d93942e94217564a215cb3a6cfcd5497a2bc2c74e207486867bbc1000ab72a74cdf03bdd7c3849c98352d92d2e469e01d2a19abef9c7a77eec39ab3a17370254a24c5e7abb13a5a554ba97aa366c425a4e72d108d5c92260af138815ae059bd7996e39f7636e6a2558a769418f8a9ca0cc35698c1079d33bfb4940283888047ea8c7a29aa8b06ba26989722d4b548f679a84cdcdc41e259948c24feb73b619698036632b90602b4a3beb64d26e77ea41301a7f9e3cead62ca1311e86cdf5a3d971a3bbc333c876395033045e7969164821234725b51ce1ddb6089d2b556495015794769330c5ac98a73035f2d1ea43a2c59aff1aac2b4afd93aa9637daa854a36d49982a005f1bb8d66b856d402d31983916866132114d3b5137e821ab9bb740fad9fa59d3a4211f2dfc810a17c06e557eaa5e345cd32d792a0a1e5db2ea684a566e0e99143ed2a21d8d34a34db87914a52af4c52cec596faa4b2ca07621bb3eb29b6eff1e6cf3c1677e712c53bec2b333576874c284a54cae17dd92938c7c658bca20a432c4ae814d9427c664f4b022b364a3a8676005a055df483b968600d5eefc54dadd0335484aa138361614b7468d50b4ff4d718effed0416c1fdb090fce49167b0418c95eb9f852ea823d7cfde4828b1218420819f90f2dc3e84b19f4d3bb6b658f391ee463e32b840528b8a3d487b62ef16ccb55ae69b6884f97a6545c21ff7fd366c184c5c4c8c4fed6d13fd583dcc18774c7835dc6ae3c637ca692bd02dce0441404176736b74fce0a4349dee2b09632ab9d142193134003c1b591cead0bcd0379fd9125ad68f4726a512e47eaa3717de56cb605a88c8debd40cec212c80d50d3e753c4e9e989b8556a6437ee36db67bbedf2a848b047e93ca9728b74c70662147204b62430dd31287b28fbd8383d8628df84bf6458f4929fad7149b58858304b198da1776b0f7a6675ecc6e37417ff046852e134d31cf6322562cd5d4464c0744c94d2199d547d0662298d1c899f4686203fb7a83cfef1917d729f7970852145b08b8af4343a20d85d5c8890398f6803cca331ae13c65364bd684a64942e10109f818c47aa09c2222ccce45f436ed50ad44b41363f2d926bdf6c1c00b5932aba12088b8e18596391d1c029d1ee036b034cb1aae78c5ba9811c544f2ab6da40ed139cc7aee76815615ced55eedeb6444ee56dc7cc28f31cab1ecfbd4e91728f3087f67b3d655a17a7cca6c3773694b0808649c8e8f06182179fe4c8a37c4f353804b9947e31abd38f2c23fe2e2fe29078bbbcff667ccd343b69bcce6d88d7ad0fd7ab9ccfb458e23369e7ba33e593faf4ed4923876b69d570e6065edf39c7c1ced856f9af7049a42806b446fb39a9ef2f61e5ef8c3230a8d4f318d340229b2b34052512303983e12c240d1d6015d25e95a68411b04312f62a41c5f5625329288a14354252635127cd6834b1ec6688e27248146e71e7c29294a5c9f5b6b2ff54a9bbd51316417588981ab16ecd1ab529c9c620aeada3a94eccc6ac522368be9047f604f298ecb0309d699bbec9cf9035534215b5bfb5a6d40baca60cc2be502fdbe5c62623c162322390025296da201c4d918f96ebbda9920cd0d98c9b1254a97a65c296a7ade0320870e0a4b3e62ddbe1ee406ac094416d568ff0d2f728e7d266b447ddbf9bb5c65647b5bdbb4b3bfe8d8993683773ed54590db02f51a3edb406e2a6f15a11bb89e4d6d9231a5e6efe723d1331a8ebd018f9fe1218332007a92acb409ecd676d1da0ff35f359eac9d5aa898a5a3598b43f0890824b6033c2ba7e82cb791dac0b350592084cbea4fcdcc98d1d4bdcb3248dc36f799c2a15809e5f54b12ee0db8623e2facbfb04cf7f3567b521064ec46659dfb31f95a39e8cb58bb5f88708a270c2b936356152bc9cccd456c258c41b4b3f565124796299b5c53c12640b10207d2d9b1fcc0d1dcf3b31b1134b53238140490fae7b14c2f91be599f4f066d4fdc3eaaa23ddabb9ba785bdfc24a89d7570986a2e522bdca009c57b79569d7b1ef2637e5dd80a67e93d7ed33e98869381624118b87e9920ea7c6096b48ecf2600171e3e0aa836a745e915eef5e1e8db720fdb78775cdf77ea77d0724b25cadf20399e0b43cd50e450fe21ed117c48d3736a5e2ee813f7b975a5d17d9fe78fafc605807e4ad79d47bda560d9c253b0690204effffd1e1a577045ecd5567ad65beab9496e75289df66757df3378deed2c07f42741a8dad19052834fa66d91e5cd873af179703b943eabc8fef5c3d61b81a52eff07aecd0b7e4c282e92c1b4e6617b2bcdfa683cc4015c726df69ca71eb77ae6184834c3fe605a030bb75c96904e17b76d2bfb611061753d6dbf60e687e91bad52a64449446e5fa5b062a935dde5c1bcfb58bf52f235f1d8f9913a75efec8edeb2b510ed13d7d40c20fd4485e8ec6a3c449d4967992ea50a58892c2692eb9fc650fc2dd8782e0be99d7ee408823d5da6702a269d6707b557eebab16c1d9bb25f8b485d7b012bd60a32d9f0bd192c96a239cb79b14a2e8870b8417cc225379ff515722c7ae5512aef5c8373913cb07fb69ca3bd18dd68a40e34715aebc27883313f2150af4083c807cc4752156f2e029b62449ac036ab9e5bceb549f5fc4e94150dfae4b13aeb166f6199aa8f4404044a6e01791acdfb80763dd303072f00490bd372a7b7c30388fd1226a0c79c4cdfc91a7dbdccf89877218c193183d1190741f8423a947497b1c584ac324c39d899ce2d7dce3329653a05fbe04f6075148bfc3bd980138f1eb2cace5333ed07313ef37bb7ec0051ceb131171dfb7eab0bfa494b9581b1b4735f20d3d340f3890ab596113e2951a52119e7c947251db614a14ea18d4ecf811c0ba992e6456db2beefb4c39bcbcce73bf54e2a4075ff7c9919218f68875d119fec7fd548232d030f1846e9c4956ad2b80a6f4e939cef81d8781d75747d2fae0fadf267724a29ea110a4c113d4c70203804da533a43896a4003032141b6561629fd6b675e423560154afd9899cb36aae1ff59c5ea30a9350e8db43af505c8bb54e09da911af4801caa0913993d74af301131633b1a124d1d850118975a2f2b61e5a48fd322c0bf70742820e236f62e71fdc04561d22b350ba6bd929ed38ccf2cb6f58d40598bb25c480c9b89c18b91c1faa7c69089019e0b12648c949a849343c6a989f45b35d7bdedde0c2ca4a5e0a15b5a76c6cbcb2bf21b1143155ebd797e3f2f76b922cf739ae51d4ddab79642255e8b6775ac61a29760a3ac0b50c6b398ed85d8e1fbbab253a7a09a0c5e40fa595eb5a9ba4dfcc0a9d3312a1c8bc16ddacd82f549dd57a16205972e77621ea07b4425eb3c8f0b6cd6c768201bd33abd5b1cd7ec8688040f740d02fa751a032d6ff64cfe94b78cc1ca570c746bd30ad9220c28e2f2346aadc7e09a12b2518f48bdb4a2651e1bcffbd766ed8c3bcb008ed46ae66a410fdd527915fd89e11fcbf01f2a7518c1981b3a95d6bb4cb0a070cbdfa545e7a9954c874f3ad9b453606df07552ddc6afe13c05c009e78148e73f6c1bd3120de80c5b7819468f1b287c8b8e6cf22477d89061e8b1bdbbb97f145274afe0ccbc0a504a3d03d2f566490b7132d4b8deb744c6a7ef4487880870990edd2764a0aa396ad289c84c6c12a5db7c35fcf89c30fee84d8a93e4eef57a139900d5a6b60bc93e011622420bba478953526ffbc8cb65405e011a937de522ecbe582f0f24c363a8aa1d5fe4757332d1e30f3412ce17ceae252d331bb14a63a60a40231f1ef350fb4e5d9abdb52b2c83a63a2a0dceb34cfc39d5ac3f86ae387230e51b72b63fa6148681fb3aba23d370ecb9503315ba3c511e07aefbf5f3b87e60b5b395f7b3db56b1b6e836db4295e1fae5b89fe9472db48acd672a4d7dcc9ec8564da1088de55557c6b81fcc2a331f117248925570b42861d022b5031b49f0ce2a22798604dedde9079c8012653f696a5d704a59baf466bbee283639f0ee5011fcb5fda57bc4d3eafe17ada947b6ff221737dbb671cd4cd9d2ee7f41304e695502988734797a439112ed93810f7692954f951272f09df92eeeb7e342d612517f882f37b30267d9a41027690b510b8252b836b08c5ec9a4281abe8f069bb6ed85c347e1b936e632aebe9cea02457fef295148a6a85836baea20411fa2014e740fe80ea4858f007c548c8b8ff8d16b4e0a6e9085904f566f062ca1b982af1de70382414869a136a34f1f78a030e09f2f66762525e0ebf17060262a43af22a647578e18078a812c96a1ad56482f5a237fdf244a5c22fe63675fe04d1180414d69f9695bb35b23390b66a72c84e2eb764fe0512c9b9fa51247b183ec2fd3346675e9f094a4042a8447a0d8cb374684e1a4a311a12539f1fd4e9e37eb260cbccf46190b03babfc83dfb217014bf2895d72d3cdc84c701aa94dc971512cb733dd5fd08c0f11dcc1f3ec2fe3de9f0b7f577ce0cbdd60b382f2708e0456d06e3a994837e31210e5c9ea8b0c1b826114cf012ea53409b8507df07aec2ba93f9bcd802564b9bb75679118f745c77047f0c95b0e081c3f7c8dec65d0bd772b35a87f09e701626780c06ce2cb9fedb9d48dc1b592dabc8a7e0b8da7437612646d758902ef40e0821d00598de21b04acbda83023e2f7d1dbb104dd3967d3392ce287297a2695e03cb294ae0521ee0e4fd68534333724c6adb094e2ca9e4f5d83f7108c8bea8c14ce7929f9b2996ea2a343a6fc2a8bd0a9ad2c9437ea8ad9267e024a52450b596e13160bc119298af7d0462abd1684c9943416d843b743f4802dd405a2d8485386d6e0c35035de4638265135c26c2f283d33c750b27527226cbda16f4c5939e903ab3da1fb3ffaad80c1d27d0dc4c81b6297eba23b9d67e23f3a4f957ff7c019e5a32eb7740ea43b15b42df5685ced9e670fb34b09a53771f2e4612c81c16b7a310890a1d28e44d13da3a6e2ec7e0a8d6cf4e8d90d55e50c2bec6f18e7b305f69e5e6c7a954c67560d58c2e4f9593427bf9c11878af46f39478081292597b9462a04272d1cc8266ee01242de1b38b789ab582cfab91144b36f586da76846c446b8d1b5373989151d13a0d4dae1e3a93a27c96c92cfe45663ef073b2ba23cde65db668d4ccca009c9720dd6398def2fe6346b7d9b0e1389b61c784b42366bddba966f0ccd31a82144e72847261cf0022f76a6c1d122a691b5624f357640c50b24c54a1bab6e796bfb14cda90088a1610759aed4cc50a556fd6623d6826ff213b023f1fdef66582392ab4ef37675e858597f1e2c45112f3d99e5c7e147517375259ef180bc57c6dcb85895f6ca8340770457f5c2f6332f9707c52315d23cbc6a669a789ec1bc22aa41d9972ca79b86a0ea2bb74f6d5064e63910f33672aedc4165b0806a0de9e3d041805f93b755748ac91c8513f8fb390cefe9f05167f78240c257279c32e47069a6a78662b9f93e1ca03a56fa0e9bc57988bb995a9f6fd307240f41f80429f63fbfeaf83208a5e90dfa6946e6b2a35b0c84b4037d2b5de788e09bc6c03b06adeb26e69882c9ba15258d5ffa10b094f19adc981259961ae59d8c03d4c3e0eb70fd389f90ac0eb4ee639bea01a61e4b864ecc22ec0c9cdc4abab7875fcf7ba1d04ce14f26a48836e6087e758cb3900fcac4c21566ae803fdc31a2c6eb60fbf92e6211d69a1585d8705a5b1dea7242cbf9f54dc164ca6097804fe70072e394540f70640e681003920469c78e584c0219e15517e1be976afc13f9a58af5c9f3c63f65f3fd9b70eeee1600535869f8df0ff21a476f5318d9f6277f7011439f05922c216e079a9fdd4a3e02c8da4b075c73561239dbae542b5ce47d06993de15f7c2f2d3f38562067295aaded92b591374b541a9c9d3df8d1890213115d2c8c08808cb3a64d37768ed527095523a45fc26b45825b47322cebf8595c4f32dc8f61f2c88f7f5624a06db326c7df02339fba92251bab49d0792fb0ffe0353ee85b16fafc37ad52a7ace56406ee7b0f9024acb6af8c638908b0716f23749d031f205614140ee0f13c5dc1eb6445f04210bb3ab4b603d9eaf94be668cf8151657b294a6e588c93516b9b8eeaefbbadb593ad4015d47ffb22c2d7c08353e6a15f84bbbad8dda5c32f7e408eb808bb3cc95dcc3c186fdbb13aa1869ae19d81e1446edb5d04dbc48f171d52e6f97485cf0324c0bdc802be44aaa217e971123313cb538046b5da3e9cdfe0e4f4cdb73207615aef614b0ad09fff6482e905807d0c27e133af5b643ec872ca832c5aeed0a740548177a3d7ee545cbdbbf4b7b906e30486a6ffee4ba0766fa55ab99b6c4ae765336f3b14d0cfb2f3ee8dc9c199ccf313af1f3426a15328445bdf16eae6264d31882e82ab3e88af2d7cddfe82a35026de7aca9ed57300e43b9a3d9a431b4da021c4cf66eee0e7511e83cdd4c7a90c891ae281b79fb9bb05705e597dbc83520e2392d3af908cf16319fa153e7e735f8bbba3799bb3419397f63154225ecaa8a2e43b61e017d0e07bc9db8cd02e2806bd81ce4496a527755b40fec73478b4c2ecac2d65a188010405ccb8b8b8836811fe6be44d3c08828c347803d47dcece75b9b9f6617368e42c5706ec88ad6da1657dd7dad22390a9d8cd20720da526166bba911edd39afb2d7ab85b1f3c2a54fe536e250e27bd20aed4601970625042cdd9ee94557600d8eda2120ee453c420769fbcfb054cb7120286fe5532928e614cdd1230d843a83303a8f5961fb3448c8725d3bd8dc5e640558c1262196cb599977d8c8ec3e805772bc8a4c768f6fb8d0902a44c29341a134e8fc10d8dd7833853a81ece4fac4ac2f0133db1a9ab4d3298c8004dc14f6906839567b1d6930c2584ee033791c75a9060045cfeaa662e8575b16ab8b630b3e246eb3e3954d3e75f76ed6e42f382aeb39fadbb812654980bf447e20c676877cbe044e3c54853e9d347fe5d0f3e00c9f11091cf1a9fde0982e6c78f709e6da6967947599675e00b8cffb892a124f32ecaad324efdd51297f6433bc4c718530907e7eaa40c69b29adf9b4c95fa07f138b26a70f6e0dbfc68ff99440325ac402ccedccdc38c1ed32bbc311ea1c0606f83450614d51111c72f41cce171949530d2b8784978f274e8869c08ee15e4061869ba8096e7542abfcf2c9d6d4c39017169b354180e70e95c908c4a2625309b37b6ac336c99358d4e26558876b0ecdc237f96d207cdf0e24a33a70269a85195d04604f438fdacee583b0e563e5b47a128b4d568e55d7856e826f5658752cd0c70d012441d2dfb0dc872075d0933e929e21cbc439a3eb6b3f86c571dd206c953af4b02a79b5db64aa5f98d533485f2d45053dc61f28fde9da42042defba52ceff639ce191fea87af63f65a801b492f8788833b697db0ebb5a15231af5c5b5c4a62600e9622cee1652df0cb528a85359802ac3542ef45e56c1d6b7fd139df93656836ef1516fa148a90e877f7930f07d53008906d938f5d8e72b5c88e9dedaff9b30e6a255f22220ee413f9b1eb4375bdbaffe10a9beb9145f5e9e26a4cd98c62288b08c95436d2ee0938ea0924838ac37e60dd3c9f77e2ed32d8d21f468d8c282fc5cfb31ef043332b686f381cddfa08d4fc650b063d618f6361cfaaa5ca1bc1b0769faca326e9671685b741c518bafbbf44ad25f06a7d64cfb0d6b69d3255dcc1e4cce3779ca08bde0bd12fd0fe0c146884b139b920f448ef9c03bd4ee849ff3f6332359f3177cfa98fc3f8d7278b633283eb625537ac2921c466c7ae216de786a56788777409203ed19e99777a8ea8f7bb6b5cb44804ef6e78b60e2434e2526510ff52275e6766397f48e2ac503b42240a0960b9dd54975a07c994a2a7961bd35f9f87a7a6bae54c112d81a31a57fbe7a5283ad2376fff74d8a438c516d7ffb8ec4ab25f1a2d59a7560e636da68acbcfb72ecac71825439961ab05c815d9aff79027389cc27cb2ac6fe3fa87c691662fac354c8090f2da7060ab1d1af3ef301ac449bdb84cf4e963fca4bf904ee604c37c07ecad0cd7c09094b898aa0938761f4ea87f8ff06b767c01c19fe12d9186026b6f9d8cbe86096ddc140153c7094a92269f8a3c4e2fc14d7d365dc4e8eb26d36a3dfdc0f7291b110b4514bc36ab8d52121035c2dc5add959d49b3f638f1c97d0623863a70844d2bdcb8cc2f8cc6f1293f6fc0433e7021161f548b186ac18c1d43bf85ed2a8d07372aaf9584f00490d47cbb3b10324065240ee24f4c0321338006bfba9d8c5c6156f8b3e0e059e1e32e4613db4ae2d278e5c7fdab1822d71f84ffa1ba8fc2453d370e1ad4a7180185c95ef6ce46bd7579e7562cf1d854c23f773bbc9c29af2ad2602eb1b64c730961240e9c640e1ebde62a1980978c1ad0f8064f25e618e030fb40990c899287c5ee3ff8e28da713bee74620115bd48104b0cfb7294f190cc9e3f696148948dab74987a0baa4e11b6d9837e24564cf97c5f80bdb2f148f17f2e2e285ac1bdb89e21284dd3bf4f7d9a2fd63558c8fd1eed71f514ae17938aae230854f1a4f84e3d30a0ead26cdadd6dc702bcc4dd9568ec6c8dc8350be98487f80f5f814eaaeec319d9a5e7bc4294b3dfcd4b4f885e92047d9816d5a3ae49d48be4567cd14f1a3ddf5648af8caff611b8f1ad158db81630dd0c11dca18cd14a135b593d7718a807aaeae6f07c916512ab5f53e5964a1ada18688c0e60bb4528d6005baa9214335b2b76b6b808ab992bb4e6a1a0807de4e3390dbdc972495a255a1c0767c639b8c3420b44d038cc4d75945a415aeff27956defadb05350086864d0fb71eeba6b94c17f8c842ed9dc57fdc07671588ed11ab816d1a83e06a702b99c98b6d9c27dd83ff7f71499c48c854af88ef0b7383df312e3099cecb364661e4b13f05782271832f60310ad1cb8b7be1ba7277b98c9b382a571167800e101da565d2d2db8d09a8ad215bbff3fabc481a512613deda2c5b27209dc551285189d667e9c9557166da77206265c9a4dc8ca1d375844bea8a1cb83c082a1ccb25a2f20bc094cb9b687ab193bbc6c13907c84cbbe79ceabe7cd7b30c427506d884ce3bc9308e041d51634062d1566e08b3e1d9d22fd18ee879fb7d472cd10f405ef8079d1db0ea47f4955166deb3806a0a119e40d8d8355f9929e590d38bc55fae073ccee2351f8a19cd11d18bbb71fd1bb0a9b3384c248be4f2ca0cc888647f329cd038bdd251143703f4be86e76802e6e5e144d7e3e16c63aa9c00d358dc4f791f3617a6ed4fc37aabbb047b319d8b5ab7c25897db19bb7cf1cc09ee2582b9f987c9f4ebda11e62a0f4d91305e93af3790aa247f214c249ee612fce75c79d0e005410bda1a84d8b51260c66624ec60d2864ad0e83b4d893f8e085147f2079073228b2d5e219e4344ec500454f409f8b88305e2cc36202b7be542279fc6834c23edf0e088c03f7bf6467c2265112eeb9f12d7be52a3ed54f9f5ba2ac284498c0a612b0fd80ecd712975663496c4a65ad96f0500df63aa35c727306d7a8a4ab98a8403186cb21f1bcf65aa71f91f0305191cd649623ad8c8fae310bec210c0e672cadc594bf4ead205116cb0bfada4a9bccd71ab7d87305c6e36e97649464d623c8357a0fb6b81928ee9c84f8feac0552697edcf38a858565061ec4daacea6a21e1839ab4c56ed02e1a5b49677dabe2879cfee3833ba9cd6a3d2a25b43984e6698922eb23e7d7d1661e8775558e27f5f756a2976182264af7ea084a01b3661b5713c84917b9ecfe24b967343c95f4fe5723add785ee4c0bb9673f8d1d5b0dc48ffb0aa9f4c562a04e0f2df472dc93470991e1331f7e8922ad036d8b6b5514132d14fb834568618d8082fc72804bd0c8ef7964a79fb32399b1a60c947918a2d00fabaa806c58504eec234d838f0ec917085dbbf7d0f27f8b0404236923d120711dff73cd17b09f4654b7e39554b81dc1daab95ea30b209f78d9256a4689b31ce7d3ccfa629f92b29b8bb349289b1a6629b4e14579e632cb65ffe48ec061c2c75dd53c995d0be134c20abceb9ba31ac351973346760218d622b40c70b2c05d2e98a6d6367b8bc2e44f7f8c61d699742c3398a27f2bddf3ab41c01f3bbe02701345fdb31fed73aa6d69a3e25830ce5622ae48251dde285ec416809ad5c34def1f29bfe20acd50b2c3e8c9b2549e4c60856c3fd471def3f5d35b2aa9d088108f9a7b652fe6e3d721b0db9024e493fc62338aae4eedb3030549d57e8f8bb9aa34779b6dfba5cb9fba3c0e05fd5db442c871ca1d9fc27d349993a4595413d89b5f51073c2a7fb592dd90e2059165164f4fb95581364b20d96f643c3aebfec40507fa4e47a442178be26e760e860f33db9f6f0664f273bee2c6077c82bd35629b48afe18d66b0409600b4f211a7175a311e0191454f2bfda2f25a8c53a8f0e2575706087bce89d71ae51d83c70d1c74895366e6ba6c44edac0362f2a70d1e81a38e638d8f2adacebe661ba0a96b41d2ffc08b08e3739997b0697e31da0edda625bc0f2747fab9e0a94009469ea39021071a8a00dea2a5361d2724aaadf246bf843f2bf270b232bda6ffe1e0e0ddaf6a38fc01a0f9ba0664ee7e6883dfbc9e256028ddaa0ef2c9f078cc628282bea547b90c2a65b1d0489dc04a2e5566d2d16e865a118c2938cd958ebdd8c6e4a6ac6553de42830ace537fcb74fcc37b41462e514945a07367e74c4843cd81adf5db73693e17efa6e150e2d5fb4a2c5f35810d929c789281c6cbbca1f880655ca3221af3fe64b5f6816aedfdb024b4e515136cbcb26548877b5de4de8a59033728fe7e8f67896a8c9fb525da77385b26607b15d8a2baa0e463294d4197a50812aec8d3b50de7a4951a250d519bddc6561ee9c2779dcf82910e55910e590af6d62bde04c565247636f3916d2364826e86cf999d4d7a5f46e64cc8f5870b23c1941489a850b4636735678d4fc66616c54a036573240f516849a56a02474ca96aef6085dc0c50845c7c12efa50ceed16951ea0392d3ca2915bf5b0b12427de6b9bf920c4d91b5f109e7d987afb4003caac37ad5f73a426d6196a6646305580c7cce52389c5f717687582eeb043a8de8774a5618980d5a7f8364beb39c279be09e3903c053e6196a294a72ac4e97d1d32c46019009a0f8a87793f7235020dddd0a5ebbd28553db0a7086c87452c8249265fc5bc538366506725d48208b6ac333aca94b348fb9ad29f34b8b7789406e92b13eb531981558e155d1eb0b8f413540c90ef75d1b9516b6c82d711a6a07439096147e86bc77d57fc53b57850f72de41f9dd41543ef6c74c7e1de5e66351c926b4412f0b8b4a017d3545844f7f0eba3fbb7060ac5220ba5ad7dc760e9221df034905e0d98f5cdf1e26c57f46ed294f4aa762f5a9426f149a1c0b94cc02752565912e68218d06ff78e8f0e48e5301092edbb046e39e66fc1ef7da914980675f4353b8ee568c89587cdc4aa2c1d310166a1c4a695034fc2d654c8760491aa6f0d9daaf9ba0f8bc3ac6eb8118e2c77126f3553282c59c68dfa3044b6951ce355be07854e17c6887c697c390671ca600a960a0163ad6e190b2b22ccf700f469977ea0cb9c421740a1a9a2fab9ca91a8475980540a07401cf595205ae1e4665a67783b52d76665f84f8b8df1523ac11220069bf2861993b5d34ce98db39ed706c7f2232cedc662ccf9e2df5cc2605943c5e7d7e1b58dd6bc0247a8f22287144bfb4ed5a470eeada467380e725c3935be9be32ee67f0bdc6327a789bf22e20209885df8bba112107bc108e8f84b6b98781ba396f674237ea64564fd7524e0bad5a6e6dcf131aa6844bc2e49257ad0aa792c9dd9257746f3757c46b01d9327d07b17cb0eb14e2ce14bfefd9b4f02f90620a29a324ca4c0793c14f279fbd4c2591c831f34882cee5ae037647f731dd7d197cceba9f38a3b24a88dd906bb04415e7a6448e51eb559291b6d0500a166922629b36fc4cf3cf48cd2501590096671de4e320c4f589053de0924b56a00f7031317a11f272c668aef8209ae4a9838dc6bbb6a499e8fd92364ef77962b4c44aaaa1881e37b276c290e4bf992115308c0c508cc5aa2606c99b6072116ebf637cc234eb9b0c5b64e882178c1a388f3f6e0e0d88bd13cc80b344c8271a4c421f8f2991a78e88c39cb6b04cbdaa818ad7092f187554f8e41a557667048d44732f6e7c63ef1c978bab7180d65d43b19a6e048ffacabba5d97fb173ee61396c6060e5bf4c6674961f31db9b2cd25afcea3b072d7d638f2718d33db0c14379e84421d97945d5f219e5cce6e78b2b85d7f258fa9d9a903dd09a796cbd8644eeab37b9010016db40395ed4e68ae1e825830613b1f09974955ef68fcb2cc20d494a4573290a432ead4a6a5a815a72497e7df96ef512b585018c7eefc73b85751b155d6a89040036eff3323f1d7532b8f684023dbabbde305bf0e1ac21bf865c2ab3ffca7a37a9977dc1e4bb8db5c42e08087a8c713efff034b1153d8ed85a0ff0f64d5e2d4fb3a40f6ca64260925e822ed8211d57f90470bebb8f6597486b096d0662d471c6f609259316c5e263d88282dcfe2591837c6b38c03f002a438e0dbf58d740ca425773f7a29d17e9dfb255e7e9ddf3e1cbe81f1d07dc40d19e5570fa487670ded9a7bd171ad0659cdb05e4781d4098b0940ff3a1fa8c50e780b204f028f59ae051e808598815ed2370ec3d2fcc2d5a564a0c3d4b30b1bf5e815adb23000bc34b66ca7f6c3c01e404d18936d70a5e3e137408e170af601b64b99ec76ca232d2b9692b5cb726a87a4ae28ba2dece285e4b5417c4295600370564bfc72757b2f5c9bdc050b3cd2dd2fb10c48ad4bdb2b65cc854013a62ad18d49a67d557c425ef7bd90daa25de48e5a81d7049acfa4d58bc95012a3b27aeb5404ab2d40f3643c07a022d163a65d9847842117022a2970254ea53dd4dcbce41ebf190181535ec0458fab3ec1eb9590fa3f4f3e852a3251770479ad00f5dea202989b96d0bed2b9fa1d0a25fa1d257ec400b51b706f11210f8dd0871d25e6d209a72ccddbc71671d59a0b3956ae7e65b818a6b04f8f99088c47a8770ba4f96af58f69f96f849c48c0bb27133716149f8bff0009cd67954a5abda6f614890912fad0ba161bcd4b762368152d2e66a6a4f9d1f76a6ca2c78388d09f9aefeb4fc58e4641e585df358a24a9a65151887b0b9025255c1627242d151216301de513d9088b689956347406547c1d2c819e0d55ac3ec1ddd3b0d544cd3a5a04e63d2610e48c00e79cb6024c7ff19af7b84931f0ac24497f45a31a030b09cadc1a6c5686264b0848594d3023f806a4d845c021566510d6ffbe1e045c70d65ed8064b593f06b302acb4c20f6ae7023f022e90f2a0a35b90b3f4cb8b293a2f80a59ba9229dc9ff3f630bd41277c5561889081848222b5f80579b96de298caa70d73e64df7cdf864550b7149d3ac2735b2edda44b4df6b7f4411b7355b00f4d80630317243ddba60ebc34aec22c2188ffbd239e2744b0342bdbe3d1988b35f2b8f58fd4ff8ac443debd83959e163773bf217c459ed84300f4fb223f667978da39ee223fabecf7cce8f0ae05d19b94af4c959aeeee55949c8723aaa4023e34d76e6464fca3497d21686a0cf69cce0eed02dd9797df5c1e88bdfae3271d0498ccea77735d6d6d129f3269e122e62a5034cdc739f0766534e3fbccc6e2d183698f64f83bd23b24f4ba317f23fd5e222a54ca2677b88df6a40a85d76103fff5d6d35cd3cd7aaa0432da31566cc78a5529b8282f98fc43dd9c4ba16cfbd6719b8a148d0082d6e68a8072cfd98b7315a91718f712f38279e67ec121d9b13823b3c46d0fe2d2c74b49091ad4ca96d715484b0e4ddaa69b55a8d74fe058632e3b559ac47c5c9664df965b91453f384aba09e6a28ca7b0bb803e409b13cb8fb183f0ed951e1afdb998f7603f0ef17b8a82e5bf5398fb7090f8a83c3845ec3ca55b8ed73e2012539307a942cdb318cd137406958a0d995ee73c8fb7cc874c607556580356af7daec3ea98b0f68c579c18fdc3ad084ba79b8d6d7757162ab909904fe4f612c23640f922b855992d933784f22a0bd30f4b0fdf4988144b1395b189a3389a286bacb28ad5acb18275d62a0b418ef3622666b9cfa41d9c945fd08f2604fb3650978bdd00f98f6d005a1372cc352013b342811fbfda4c01fa03e1df88bd3478e8727aeaa8145c0006dbe0bcdd0c78328b0c9a63a504d5c87c4efb0277c7289a382d32029f445c1eb68fdcb7e1299fb59b9163d92ceab535a6f96fc6aab2ade3ab676651a17bece8434dec0458e6d85d9c21c906b534208eb26b624282d608840371d79d86c78ebc6aa41771a38b2c0f1cd816f6fdc0afbaa7cbdd30c223cecf98120f0adfef01c34b24c05c1d3233c46a0d3ddaeb00094c04912c812b53edcf0a872474fab54e98a180f7bd6ab534415699c99810f53f6f04268cbadcdc915e02cd9981c4d95b829e4f0843887163e005d00fcfcf89b8ddee587e96d7c4044988024c89e3790e13cf52a0f790d22f681537dcde0c08dd394760f6d9f3f9af2ba191f393482837c1239f5c2590dd140a41fae46242b34f49f82a8d11a805e7a6a808ca3baf0487c3084f08b9e5d676913e6621aefe291add1c15a1fe387f4787c3e2d6f912ca45ccd8b3b28bd0317199779751ee98cc174563816a303994d53586d9209703007065f61fe37b1d5d93a94173122bd17d3aa2d72800037131ba5235d62df89df5f7e822e47b3e8be621913b1b0290bcbe8b67ea8cc734ba86c14df6c24979b3eb894ce63a41c69857c542ba4a2fe027635a6928f11446291d61c2e87a4b2a022cce5b5c334bd431c59f2a81a4b853ad540c47ac63d5ee2eed86e9914d97972861e303f6989745479773957a74ae0831ccf71aa9512cae25057ebb88091f967fe884ca0e4dd78001263052bae1d0ca438a27acddec06cb03aa083ad601c346ae3a41b943fb1a01011f113c17808ab01662c6319d54d6f8a66d0f7ed7eea36321d2c2b7172d9b46ce5522003e9f294ae64853c616fb08230fd4154361ae4f7ad6df3669055ac93e681336c1922a1b12c630bc24218ef7c85e7df337248ce11c480270150f608dc057c1f034cc1b7efe65ac1f5736d63659ee5546832724a14961ff185f452c44ac9f1d5bb4cb7591cd05e951c2f19514ea859eff8557d22f25d2ffe0f347c75fa8e07d53cab351622fc3819d9992d040fe0641408894f8a3fbda24ca4320091b4c9d656bf09484631f9c5c6076e73f0dd3cecbf40ad080e9ba1b1fd657890d68e7be50af924b070e7098405f0186c27a63840e6b59dc63044e0326f9fdd98905cd09944a210ea7e6003134c4096895b8681c7de25f5933f94193cc830231a221345b2e393425c023e891a333bff4d7338f8bcc6642bc0965abb08aa71c38b0918253bbe5abcb55e4f3b8e179af5c38af5835c41deb6f0727cd40287fe3d84590f0f68b596c6747644dfb30f729f15a49fe89736e13d74735e94101e4bd03ff993d9e724a0691d2b96e20d5075202d9b9419c581a33f90f2484014929ce42f59cd2e3d638d8fb4f12f0887b14118e91310d22838bbb6bf024317c85ae31a3379db9d52d1f9d9447bc39cc3986ef43a27cb80fe16e7df4723790fea85c5e1feddb62486fbcb3bf7b62cd8b7b37b6e6b83517111b50118ae688ff8cb98dbfff5a717e7e57b5f26547ad4ae6accae06effe2b3e14ee73aa842f15112d4007bc68472e32a86d1aaff07f69a99b7d6b116e501cd08fd881eeffc84b1817b90ead96e81d4cf44c09c983b67e9d9e930a5743b8a5979b4922d05e4a21681524c75b13199e9217a928bd5884044efd8b83b4c52e9309f3af8160c72291242134e98b54caa059ebc7b2fe3cf1aab8755e24001a3f514be39afdb2901706423851b9310d08af42d108e4626707dd1421934f13876c7df78a45fdead9238fa68fc94c6222ac2020cdc820b66d3fd4573818a18056699ec8f6710c61d6efbdb27191c9b6fd333ac3352b66d30c2016e2282042bc47d2fb94328376c7ac943af42744c9c67215d09025fc06b6e92133870353cdfbcf253e5acb8bbf98b716e8fd075069c3251f0fe19aa4b2057a353ba437c0c7af8819a2d4cbed128191841089f235da7ad676d2455d355c32bcd5d102e792c8e19d581d18ddfbf4861c8e5f953fcfb68ca8bd04f7b3be4738e0e229bbe4042ab7d53e1a9838578178b23c4d471ee030a096fb1dc17841d26bc3b7b8442b0f995dffd1e0905fb73d28f1c1f33a043cd0ea5c8ea07cf91e3f4233b4cd85b718b53221c11cc23bcd59a793af25483f8ef72e217af650ed0ec891b89b223edc73734a6bc6553ce38449d2f432df8012e55af24dea39880f0d9936748fa42acba3e3eb674f5cc9c1491d334ed3002743ad2350f7eef131aa3b528baa926ad3c890a6afb1e25952f55c8f98de3c01903925fd47a0b10bb7784b602b1e0ea9a053d63f2ccf2cc77cb60a4fb22b430266784a38319ed654d33cade66bc03675d759b96a35ec6a44b70ce65e86584897eb5b37df2d3d1b9fdbd661b2ec463c0cadc4fc511c23ed0fee6e24bf0d3833b1dbfe49f9fc221092dc84c8ce41f38ab786fc5e2fbc7b00892b722e07fef1d423651b9d3cb58496ea335ad1fe4aeb9f4aa2e33acaea6cd3db0b0311634f7db83e51a255d134b911c4bf4c621281d9dcfb1f99ad11bc7ed18ccfa050b8ebf614c77b35457418d73f5ed0c1c1539531c798a2290f9aba9bcdc1dbe7624c10b6592911b14a4185e41f6e50b8b991e5c59095a6d57434272d256bd17938183c1ea7b98c956d79d95375cc7c387fa14af094a4632c097a182e849814e484b69d243bfce92ab2c2b5a1d75fc6cb05fc189f72d05876c190b247312645c65262f978bd804face6ba69666105b903067907d4689c50512c5855e5155ced37133c0a4c4b0abcd4646bf8aabf70a6d06a87d1678985082e3d1a1ee225b533be180aea5a538fab4f4f1367ff0301d085ceca5536bf931b87996635c5a07d15e538cafbd91dcf298be2b68d84d0a0c70c7797b701f7065fedacd72f93650e046bae117817324ae6ac658ae4a901d1e424798a6778a7f7a6bd42b28e5b0b294e364b18f01b9078163a21b91abccdf41d056b0b696444163cf340b0b747fa0485664943aac7ffd7fa0c2813a856b50a7b0f144dd9673ba8be52389becbfe56f415fd32bdceeee55bb2aa5f80bbe993ab9d31028b939fd7c743a4a2174e9545d50bc33249ff37903beac580a3651aa70337ed5ca440a0e1597395964bd88c98698fafb47db89a68258667163ad640f9bbc870a34a71e1c0b106e285fad6916247a3a803f00208ce5557a584079cd0f922bcfe2ca866450a1e0030e30aaa3d3f9e9479ae95814c43859d6ad7d393a8151779fa31059965384babcb095e404ddc3cd6090f9e9ee80657e15854cd80e79a373ad1951ca6e012db21256e92b2e17372397ecb9ae43b9b4946f88075df858a1c3bb9dfc1a64089b598e64230ac1c2d9f8093da22b6f0db379d052f6fa9cd401cb24b282e86ad6a66c8c18d19b44d0079e7ed07c5073186a9b8715c9e3b666d98230823f17a865aa661753164b123ac81536f2d57a3c78ad4894657b354f325279e2ffc724691b338f698d8fbbe7a654826962ea3f7edce7c5262d09172828e758a6999a4c5f55bdf8931312916a718807fb10ce0a45b03ff14019a76ec39fa5be8d2be4e432854ed273015d6e4a29b333d2d89b446463672edfc4b4dbc0002b18911289877ef2fb568940233f81d81dad93682bce682237c3c260b0804d3bf87248c5336f23c7befdc03f1d180274fd0164b448733a5353246090a85743c491e2397d92e376d656e7124ec6c06ca592030e5f23a0dd267db6608e71d9148067e9ec013ebe9acc4c91742f915b460441e99df08ec4cf4d41c1652ed511ec128766488e33240d6ca3908d426c350461aabe07a8b94f90a356907903b434574bccef90ab5c444c6dd86d04e5b1ed46181100cac080fefdd25fc8cde0d277f09d52e0545727564c40a1a8d46784b31785ffbecec2aec11aba5a11594487ab9bf5c413387c514a67791bc2f0af5a7b505361e1ac3f3bf3b1f4c8d097dbd7fd79529477da97160144b592ba8ebf04e1aedf775d1519b83093ab318e434b412ab0b8c804b788fbfd73d5739ca55e06a7fa669dcf379a6ed427b716dbf0cf41ff9281e7a946d1ce33a00c04ed6a425831d80502e674b16bba078e0f2b9a1d453c68ee8e286668c4662a0c75898b402f14a3ab762874fa66717b385d118b29299d929c69ec4fea468f654571a7f000d08ce9cb69affafe46452032f836a68a93a99a6a7beb33802f082248a1f9fa9e9edef87a0f054569642d479d002b13678dc06724b84126e5844db86a40607c0afaa1483e727f3c44ac92854a60baaa9b5a8fd8365b16b230aa628ab7501d370e1f17ae7029de048cd725186a71a703a12946b0a20c83d717c9e6d63826743d12e664d1e6db4f317af9c943f384b056d357b710347cdc37fd6d0866b36f16e6d12987695ae6c83a4032446dbeefa0192e6babb37258e1bb52eef9cd36568b55fc2a6f7cc4a51093dab5cb84ca4e12ad97281d6be64c8ddb9855264de199f42947d85b8554d51ace874ec5962955d23a92a21ae36c9a4534904915c415a297e646e7e5b02ef48dbe990077b6bdcb8c2955786d3c220667ffde875e3d414fb4f7607f49803cb6b117b7ae342b7ff71709bd1a090850bcccfa931a3bb3ac6e3e35520898103f752f00c2364e5be63a4eadcdf166049fdc91206fa8692fa2125bdba6510da2a17945696b924b84f2182baaf22a50e0f36dd1db588f47d59ca4e8f7adbdce9e7137d071bbff78c07a80e44757c27f9831f6f6c39302a863cf8c0f01f80e5b67de5ae8f814dfcad8ee3d196d31c75914d3e0a9723a42420ba5dbb79dfa14f287bdbe05352ac3d96bf471ea81766112680815a0ff6ee2c415ae786c7037254c2370b7ce1fee76c1e939d99e5e744a7fd7b383a5e266d7e06bda57725f0a372e0a6e724ee5b9db59ad0e70b296a310fcd22d93bf3eaca795ba13cb53ac1bd36d78a903b6dfa8704d17c35ca37d230db02758915a9cdf4b127f79e530014e3ddd3a5fc0f9b6a5229659785ab97bf357210e00fc7aeda056f85a119fe778d32e0e2ddbaa211d51d1491e7cf8468479b0eb6b9cef03a55c084487cdb77e790e0ab438b2584b496fd1cc1bcf4b0c0aef2df25f2a4d53bb373a85e012fdb0947704122461d3064b226c14ac1c31474b3428bfdef458aa1d0a55173b77a4317d689bc3fe21f5a76ac74d7c8a6f703da44a6b56e7ce3d0caabb28774314c5f4a1f43b2458f894245777a914e20274a8037bd4484f23b3bde06278e276c6af2a5bcfba4cbf4f3b4f15a10069b09e02635aebe91bb37c2350b6a4b17d1dca8c500cc4b9cf658ee239a95b8ef194cf6a37368d37183605d8f85caeb5c9bfebef13a4901e2077e1f7f84a3f5ce264e3120148021f2b1c6db4e8ad8483265601e6889af91d5308f22895232e68971a71c4467e94389023e30e1b248042b7d7b3d1b80724ae582e3b9a85b16e89a3c94e8c9f1308fc7f4bbd0e04b5bc4d8b4c4865c08e8f062b9e11c3ccbabf82037aa3262412d6fdaf84a39ae7b5d7df4094c720b3719da42a08916e5ee6a8bf061353744c5c357d1b09b0dc6468f04720b7b28d2e21d5c768739752572033293096b57b9777db15cb3b44b78b3ad1651ca0a3d468d8a7584a8a58969ef4f8626443a832639a2e1dffa97d942ba284c43baaa180de962fb88740dbadf90ae87c560b084b6764f4639b5a683915636f21ad61f82e5bff75a6521234d0fc745147f046cf5aedecdfd59431ffe7c8cf0624133cc4dccad7e3ec9defe817e1ac345d7e6462d52f470efeae84970a5c19942c845100a5acb82b73d7612e3c75700f4ca6d181faf1f14221ed038f552888169848a3c8278293f6f2edafede4cc0c21cdc37abd2c32c539756142863c4e848f2dcd2ac67938bdf3b95b3d31da7b34480a19d6d363031726a9b8fe2294f876a9f78fdb90d9db48fbf6e2ce48acc19a8a40003314d3ff1de74cfe39da59877916915007f7cdbd3f93717f7e6dfd212662bb8fcc0ebe7cd3edfd03e0f655f92796fd7849278f810cd3e0a9cfb03e9849019619220b7e56c9aef64b85b25746baef39bef3e0765228a327a088a3d27a123b343cdb88e1e54d844453cdf674e81cd0c43e65800ac78071666f1d3b0b4534e4db7ee1eec30987ab2dead28fd32ede3b56266acfbe9d775aa00576fc20eb5226c103d71071782592886f760a976b763dd94328b1ba96138cf75f548bfca420c55f553009e754f57c9f7a7ea439be5970b04df576362e79a5f787769dad31cedbb949bcaedbe2690c4a09087377428a8d150fd34c980403a552c08c917d572bbe1d1788ccd993bd1942302d85a203b130cf63493b39c0799c076de4e32459fa9b84edda83e0c69ea167049d6252e259ecfb20b328221d75599fcb413871ed1c0601b2271bcdd183328e6c580a73a1993d525af2ea89a64fffe665e76f80fa6802399b5113ba3ca2c553906a0286cba9d16b107eef12002928ae179957ebb39207251dbecb7436c7ae875148d5558e9e4f1083e6c73ac5f2c66c4b7bc3d0334a29a475879517c9177564abc910d7492873140eff442e8e4fa1a0af703215630581004fd42c01700d0853f0ff075853689c0fbe4322678a04fb88235edd5e7073a02bc707643034ed786803bafa0449f784e0fa205d8ae074bb84f4df7d0d31c2ee6470c44c6976a8a83e8e6fc5499e0067179621501c3f482ece17cc69c83aeec5acca7e73eba8a605f874ca37dc01fee4e44932b3473deb4043cd699dd9c93e5f77031137a8416b1dd9c4bab71da9e2f759c4fbceba525d4933e74b3dcdf5f880134e614fd6e5187da8005b3a4e7c383550ffd1799d4e72bba4047a975322b7106fe4019691e54855786cdc7a4287d323efee1b6e4f33d4d5679a83a9b37d47b46ce3addf3d98b0757c262071500f02f7944589b55601d3064445bf2d389224f3259b36ad6a6bace17028285077ff1c25d18206cc000341138d6d96af4098e713fccd88a7b7f2fdf637cc3880d47a2d962c99da5cca24256e028861a4359e0189f7642095fca33bb8d719f4743141074f08bbbd7729f9936447ec3a94786ff03cb925b29ee4ef1c33a03325c85c8f2e36c75c20f0145dc109e84162bb628f7367ff46a54a625bd61b5810c9f210a3ad518b731eec9ac856a64f86e5ec34c6054732a4f132ec1096165a965f86ca48aa88f193dd874b397a7a99595d0bbd8eaa40fa03e606e78bb59187517c80d63470918e287403e3162dc33c6b6a162675d1ff777e0d460da91c603fcaa9e3e248cd808d6311dc45248fdfe3e855f29e1dd16051e282291c9f2865d8c6ecd0b0247e8b3b1a8e8316baa0a02ba150f39b7c1236b529590090af61dbfe60d5e435c90c8782ccadb00cfaa9a45563e159a37d55b1e8d69f36e55e6bd0914d5d947ca5eabee1acd54fdf270b7e2452f785385a5419922470463b216206c47a41a053a1eec26d7bbf03266bce562d1ac0daad6e5c5724aec1c953a38b01b4d0e62d096e568b6905b80a4e6892a4c8df4311c28cbd153748c4ab0e83642c3712b7e4afb587703dfcfffbe7dcc317b6a3ed424ecdb005c5df14f1f0537305d93fc37c5bced100fe3c7fa45664923ebeddb941ca14781b92cce283dd0a7da65f560287b00e8a06054b689319cb203980516d9195c6b7c36f4999ebe4120a9cf8ee67247c151ddc679e480a4615dd68f14274a5f5b4d39aa13f87d7609eaf08b3c7c8973f60902b347f917eade1004e5b3b1fd9ab321065c02c846a71d006c9f7d8f6bf570a85d1bc56b5fe6b303951ee39649b40d641055fe155a0e4a8aef713d125cdd6be09a58204f33cda7a69676098d9c057d3ad32815b9c3e50cbe2b87065dcb23d83c9e041a994bb155206055a5035957b58be7b9de9fe3edefdf33f18cf9ee5eb0574effe3ebb97bb80d6a7ece1588bdae78b0f1f080e1a0a85aaaaeb258e6197e68432323306c3e6ffbeb5e0c1fda11a8246a9290bde5de724b29654a293f0be30aca0a4497e559fe9b4632968f2f051f711592abfce914968a79c58ddd4472e34c72952021047759fef4d776733d0be7b9c7f29533d96e46cd2ac792b1b0601a0b37345953c8bdf8db11be58f4c95c9613c7b7b673c3528d370f6492d4c4c857b6a885545484849979d53caeb29687c77efeb0bc4bc7d2e1e176f3df3c0d84fdf85d823601ab3817140f2814ea39cb830b7dfbf6b79289e381fb1ae7b82f2a6a19719cfd1f2cb75ceb00712fda0954e7cfa5e45ad2f2932534f4639fe3dc090f9c3ff197f815b68ee5fa56535151cba88b34ab833a68875fb97cfc682422894871493c8a476292a8e4c6dfe16bbca8a865f403b60e10c84354e4aaacf5d96f1dcb62090d712d5bc4ea6ccbbd8862746391bfc4e7a28d051687dfbef4f027ab12191d4d24aec221ced63572e33cc262090dd98769c27eeca4756cd7c33e4edf2ed241701559b0a2682c96d010f73b70ce24c95f52ff419e22a221168cdfb1b8ae838a3aa868fe9cec69e5557efeb0d8f9a3c3e790034b87ff268bc5121a72950e44ccccabe6792eb68c5870d53c94f2f0b074e86211ab680a21d6104b688852181cab83ba75e3b74c160b89eb7ecdc362c5a218ad4cfc227c188153c35716d604e1aaed656664586bad11ed79f15982cf8dff903114b8a2b07a534aad9d1d3bcc8510660af6632658fc70d5c75bf83002be0da6098293e11efc1e82acff27430736e1d23df9b2af673fbfbf5edb4d6f12c8b1c93ceb98dc22dc9344684ce8214470e4ff00d24bd8f1e6f8768f137aaefc1dae721565a41aed5d296b48f9d2832b0ff08b7c7643902bdb892bffeaeeec70b2b0dee4671641c3e2428aa7ac9a2aad387cbcf2d66f76df6e74f84a6bf520ca3e4565dd9712ff6bb98c04be705f4702573f32478243172c9bea4f1d7ff971952995619745714f3bbe7ee39b66d08d5956bf72d95b8e46fd6c46357dec6d46cead5f034d5f037f00694c8baeaa5fb9e8da0fb8eae15b5ee519d63f7d0f5cf34b7d0070588dffa7def435d318d356b89444b1ee614bb02af5a7ff6690eebfd9c4f5df74e2c69902d5ff379fb8b1db89c2f44d17dcf895a9664f2818ef92659a46a37bf5c6f4a6c830dcffd7b8dc8648fd73dd97bdc954bf47f616d6a8e15eec1b3319b79b4ceb2eee4df6847a174fbb8952561f2e99c9b4f2f5e736442abbb45ac3bd289d98ba23523a613fcf46b8ddd819f6ea9fba8b7b53c6317b75d370e882dd6eed6aa7c3bd586b85312b1fbf722919b7fe8963aedf71cc95e398eb3fc75c9f07eec8ad6fda6ee4dcec3933fd0a3763ea64dc9bb3150524f79b3a1f23d141e4c6dfe12aa8841b7f46e1680ab935abf5afed26aba68fd7d47d4a5cd3ff4f1da6017255ed9e99deee993bd4eddec499ba18f74c5d14e25eb4278aa23db7a2b0844621377e64273c5cf5c9b8f1478b4e0d3cb9877d3775a0e021d5d5f8415bba8f5a9553c7431785b82a2281ab49a9b5b5d65a5bcb30fa55bb862291abb08f1f8b5c757dfcd88a3ebe42f56c2cd3d0855f3fef664b6c66faac7e966519ad2b007cead95300e8aa690a0b1f6e373abc8e06827efc09508055ff915e164b63fa0f7559f8257b967f0eb2973de54c5cf60060b9d9f3c0655fb9cc729fddc1f4f4ff5b524872b3377d65cfc272eb093db7fedf6a515c5c5c5c76d8e15dfebfc6ffbffb3a7e4de17f93897ef7d5cfbe47d6454965932a932e2157751fff1af2150f1fffc54f9d1d1e99449f871723f7e2bb706ec4bdf83b707ee45e8c1c752f7b1cf5e3531957f023b620f6a07b221437cee0c69ea882d8433f46a691298dbf1fffe9c3ee6bdc6ff7351e7b620fd3c81b3f0e893e7e7d68379544bcd91f61ba99e96bb8177f88ec4d5d127d6b977537503f85cc1e57654326e745cf79ebd270b8eaa38fa3ba90337ab07b3f04a6096b147bb8ffeea3b781709dfb1f0780ff5ef0d0836a8e80bd1eb8eaa19b24e0190401a005374614dcf8cc404c9df68145c031e27f5107c62c6e34fed6084d178d3d70e0f4bdd1f5a08fd317c80fb88a3ad2e37f6c895fb9ceb816e21e8f4eea23171fdb66c8fb1d0c90ad9f9924667455fef432097e74da655c0e8f03f7f5c5c1d44d1dd314b67e0eff4d1d88a2b9a7fd3775a6cedc993cae12e2aafaf1a329ff59d485f1ec5c1c127ddc8bbfd598ab03573ae04b7c6ab34e27872ef6b817b79f4dd4ef21e0d78f3aaeda993c4cc337d66b93e86bbf06727c71b029cec98ddfc27d3de4c67fc17d1a8afb502c1c12d70af74515ee3bc53f71df49868ef8d145f7d194eeb3281d128aaab68b25eeddebdfea6b9b7ccefb5c2ec6b14361b9751434ffe2f85e489cdf37d4ce6a583c0f34c68d371ee0467e8930b42558f8736a450411d1a494526b4e2aaa1483b1bf23b4de1dffa65d6e33be5d1c2aa1c2d2b3e9b78f80f625fb6c1382fadb47207bdb85c0f4d96f5d08a2c861faec4380f2f5d9866d2a67fad2e728955eeb52fddbe7d800d1ded4a5ba4b39a0bee973d4377d779723fbad0362faec81a07cfd1c9b1c1bde5438064df5e7d8685caa3b2472686f29ea016c537adb0101c236c706850312450e940f0ad39b4c6fea9408414d0c7cd1be63f8427fa05f7ad37f3151943a8a034e61d986372ec746e3726c2a57d792e06c685ceb68bf75408018015fe0f3802ff0b58ee10ff8021f8907b0cd110fd8b4ff5a47e3243771fdd33d3f3e3f7efb37d3d71ab9f81877846f48e4307da90302a4f4a5ae59f0016cb35332999e6d4a5f034d26ce6fdbd4d6ba3b710cda7d3e50f7fa2b15bfbf726c93c92e153b1b1d8fa3cb690ee2570d0bebeeeed10334e4951de3308ddfc6619a186366eb0845d774b96504d8383f8054a8190157ade3490f270d1971b61b23a2603f2e9a895f84ab220dbe30059fef1773e3e8c6c7e13ce247244b88f2b9b504a20bb998ad89700cff0a430b5b132317c5b88adf5512c6d612826e7c0fc6bd7e4a21dc70bae73a4311ac6815e1075d452a483ba402e945118c45ff9e17133333332d0ba24c406c61839c088871d9bd9627cc961f6ec9a8f4838bcaa09023941403a275230b13b09211d3d05cfec85c0d8024439dc1b63673f97fc6fcc0177f4a2d462f8e396adff403576cfa31fd5ca7d7edb6ba2a2d49d84aaa98697aa2f483d1757988ed2f19310d5b612a95b69256aa19464ba552e92a95a62c4558f2520fa0c4acd1a0a69888f1828a00d816786de05aa0f025211d640e2c4d78a1e2a7ae7a28dd1fd5440525a9b6282133b1c0dd5b9eb0fdeeee9e99a0120188db236c86d0b51e7271fc3a747271fceae018cc591fcbdff2c4f2bf2059fe9c0b813bb5e64a40b02c4796bf52ce091c016c84decd1915a9bedced7608df614719ce520b0b6ca635974a251b9c7402d33037d3481cc0308513a699cd34577fdc6e9a69683ff46fb9c148619b69e003f80c3e4022862e98408a2ab460c3fcd24cb3c14861fb6b062385edaf18c4186becc23097138ba5d207e4fa47a1c2d7a104b62fb7963072a3b0fc150c36b01f1f09a1670b3ce8c1950407285800592b7260b7204c01c5fde8fdb1b1fbb80cad2968d0c4459f3c9793d5501f33a39d604cd1733f9722269446e6177f13fcb8c7d7045780210b1506ba8b53d1c4dddda711ee35d739e79cee935fa508d66917213f64ee4c5a805454151fa414c17eb44485fd622a06f6a35e6486dcdea3b2cbc753f074f7d01136f2f191b3733744b1eea58c2e7f0a7633fcc2e72bc48074d98a1f971819ae8ab7bf06d23df29e1d9a1405b77a2082fbc90821e9a234743ec12a5236e2e5a7112f53f62454764939612b431406f024d5d6d808424e0c19dd6028095b08220540188213458e70e0844d2341053f68e8d1c20cb6a0430b290441670d4daa4862d39f05dbcfb7995f0b2c0b97ff43b9fd85cbffbdc0d1b284f537a9c192c1b220b12d3af66f3f8cabe2e7a08088125a484a100426ecd824c00a466070220a155081c4a69ff880470b3e7083169c000051912b8410842580c10b36fd91bbe11e3f5fbfdc12c2901763b0de7d5c06d8851b5eb75c851919611857fea75dfa94f6a5efdb0ded1fcdca47b97cd9d712c79f71d7f78661a594fd1e264bb94fe33e9cbbbde54cb4b46d5a9631765d1df7d144029122448a5c2c92d073f9c9652c5a3e44170b2318b95a186c7c2ee74a8dd963f766dfd253ffe1624b9971ee97921f3f87e766ef0375e34dec52b2b321af7cf9e508b9d957ed69ce0d36e79cf3edddee7cbb3db7aa307273aee43eedcacfb88f8bdc87c330e746ae5ea17da02f7730ce91700c66dd54e48edb86bbcf2b71d47ff06709b29f0623511d7c5be31e7ff5a9459190279ca27141e3028571999e24cab8fce40b391cc50264bf991deef9d719e4baae8b52cdaaaca06ef7b3702bd7ab5cb6b46d2af684ad642b55a57eb695b6adb4bdc964eda3a09c504c2693c964b2292e5ca4d887d65adb69bc848797f06c71bb296da68791c26e0f67c88e6e3fbf347fdb78b8e7f7eba1af89aeef902db03335744829e386e64b5a47707263f7a15cb84645eb0847979f5db8bb5605eb1f6b54cd0ad6521413f6480e1d3b661ac2d844d0f317ae85babbbdc6bd185f190161bc0b26b3ebbf36a5f469f0a55d6afb1ef4fd69e7bf3df639b737aeb5e78d596ba11a18b3c8fc58c7dcb17c3ef15f4f35cbcffc547252723776d13da41da248514cd86f26878e1d33f67e33f3ed679bc88342bed2fc85752791c62e532fff87f197a4f42ba50be03b6b6b9a1369bf715fceddb22ccbba94e97b64ef6fcade3ff39c3ba7a9f4bc75ceed92f653d334add3dce3ef5128b6747eed3cf762bcf91707e3de8cf9e6bcfef3ae9f1ee3aad9c58ff160a6373ffb9bec8a17e7c1c4707776b4738943955de4f34b96ac59c17e2e37ba783010721db9f9056e72930f23859d31c61828ea051bc89d1f4e8dbe3d2b7dc9c15aebd3e05b3fe75edce4b087dcc7e3c2af1c8c14aec1c7b42eb2a07da03fb9cf9348dac5edfaec5b2abc2e786d37725aeaf7a5ee2da0b6b66d5fe2aeeda6847d95dfa33ed6bd7c8dc361eea3179a9eb72be75e9c0fed9a36a1bb3de53e23eef635b0c47d7fb3759a7b973b7cad8bee45f81947dd83a732d8ecbf986da1c1af5f21a7b9b70951817bfd4dcdb2eee3aebf07b5ce4e00d4cc7dbfbe291b9de71e117795d7c242d2e5161690ae002eb798c073293c72ff720b49e856a8bde7aaf93046b01356a8d14f09e17fbdc76719a973d75f1f5f3680afcff0bf5e7229f9de8d6fc3f39ca8ec42a9b528cffb794251c17ea754e452f1e9cb38630de46d8677d9230d41d2b9d535ecab6b919b5fbfce6afcabbf72a9ec4fee41aebf7eecb2f76e4c659d0defd64e867cd6c266ff9d92c8c097d37ddefd4ef7e45dc9c980f108d19b712fcaccc8b817b915448d1bae4ab50b8e1c44f888481e61d4c2bab8b8735cc2ccccfc01ae79a273bd0d49d7db80743ddb8478b9315219edf49f5f277784117263407c4f4defbd4bcdce8607c33d78445f29bb20e817c1322cc328e73e3043ece7401e04df8198e6064cd30fbd087784c987901fe5c7f86d43febc812389beb3cbe19e0b710fb60d7fd5606b1e4b5fceade11e7c18201b1fe6517055c3f3fe511a129bba7efeec3cf7d8e86e377433b2eeac175476f9665f17d2fc4953ec9b66f75536f355798de5512f34236d1072692e1b61c3d1ad30e2cff833fea45f12724baf5da1f49acf5d794d45e5579e7e67b143e4f6a37c653762b94505a2cb4eb8dcd262c9ad5d74550f1dc77d2baf430e39a45c5858543eb5dda8bcf80ff52a2a28152ea5a2f2de6d79944acb0b1695172da8d4b7b43c8afb522d2fb8be2ddb102a2a2d1cdf171c5f940a4a05c5c2c2c282426d43b03c6a876d860a8b4af7adf0a0354c8f355dfb31b4e82a8dbde5c58bbe27969595e81e6d16e2c28776557efecc8cca7f296de55d6c372b5d4aeb6c78577b8dddd39e9906f51fcbaf7cd538ec5738ec6172606d6ae5edf33623b5f2de7df12c1dbba775a995ce86775fa0389c78555ea54b2511efca1f61ba2bcff2bee3decab37449f455f91eb6192add4af7a2cd2214cada6b7b944b09f68b47eef55f34bad75be188ab60dfeb51b621e2cf782422715512a6e17bbd3d7d127d4fdd777a958f465cf5695fffba3e1a95361b9dc5089edc8d01f44bdb2684364b5c10bcbec6f0852981fdbc076a31e80a3aa26fe9618658fb0ee4aa1edaaf300deaaff71830cd8baa712dff823bc2745f3c0bf7b5745f5fed5f74a821565e33b2069ebbf2822f0bf769ef3d36565efb1a6759e17c48127d593ad7de85b8ea537917e25e01aa8cf605d866d40168cd34fc145bb1a6d8c37d54bc67c7e75b19e2aa1e2b26952f6d42aca8acb4669a193d5c887bd7e3f4e5609a803028b09fefdceb7a07bade89b8ea7aff71550f94efbfbeb4d9a0dfbf6d42a054e819d5baaf79b81307953b7fe3554fa629fd9c53450476ce968b3ed55ca59d52b82f06f9b4db5774e25effd127eef5a62bc6e05e487187635cddd611d138ff714f3a11f9443c469232d6d4f5d963a9abb3e15d99db2f732d765d17a51d9d2e2d48baf1429d79f4c15c388be084a1f16a06c1171e1b7e99ab250541ea1fb53388e722dd255c88f774e742362558be420aadfb45a2f6a2fbd1e8137d60e751ef7acca378a4e345daa1238726053be7459dd97bdcbbd1e2f7d1956d64e4caaf10ded88a826d710cf9da117bf9f8f4770fc7d3a70cb67f887bf27d5cd5fed29ffee5e39e7ccab58a1336e7725fba6d3754db6ee44c1977cacca00963a5c99f733eb6dd4cae8ddc6b23fe225f3e8989f13cd9ea56b7a0603f6e5df9f27b225c4523d5478cc0d159021197e3480e19c40d5a2388ffbf91d0595c19052b74ab5532c23aba514387152817ae14c3958c862b21c02f3207c79071e7481157ed348fab5a3d6c23e5ff0091df0ae2fa87ab0ee2c43ff13190bde3b77758f24bec381e601aedf965fcca04d9e808e325926bd8f44cbc8da98ba2e45e2a953acd03d7755dd7e5dc86030b3eaddd472dea591f23f190f8ce85fdc449732ee4434e7471de84c6722b0b2750d311e379ffb02923e922f75e6ead4eb4dd5cdd96827a69d8900e59d8cf853819737bccff70dcebb1e64edf7cac5f763dda857c454f5eb07cbbf321f7605fdf31f7eb7b7d387d7bf488eec9eeb1a714db6ee8d79f35977331ce85709a762ee41ef432700ce85ce3da112b7f72c5342209afacb7e852d8f790df9fca3a21e4f7cbef6bbb3962fbaf17f226ee4177e22ff0e14c4c8ce7fda3509ee41e7c0d0a963acb5530d5cf2d2514b9fd924b75c703df85a4e6fb10f8ee13d40f1de8422f729d38812b4ff217081f75613b81bdc455f2fbbb8944f52441f87992075070b5835ffa9534b93d8342cdd4f8c06920faf2c3f036dfcbe06bb870890b9fce3471e15f9d27710cf85a16363e74cd71804165970ffedc787577d72222b7c214adbba5a4b75e266a5176b0979cdf00a883fa88eb23fd26ae91dcebaf5c2f69269de45e6bfd33bfcba670a71ee25eec9e24a4fcbd4e5f61caef70efe5f60e0ef772b8176bea0cf6e2492f0e1d358290e15e9c712f3a13ed4344437cd879108e115f3bb23d3d441a081d57f1b8ca7552b455f7c097c8344e30cdf5f1fb04cdd33bac27a82696c92dad564c2a1f1f470e5759941574558a8b8fef9de04bee06460a0bdf3fe5e757aebf7b9a5c9d2157c8edeff19dee79727b8816d9f8299c0baebfc4f59b92dc7e6d0993db8fc2b17b19d075d1175fcb37deda97a72702dd56e1386e1f3ec7c1fcd97d7e83dbdf3ffde35e3ffc31ed80f6d81c583a3ccb52165c350f65b1585c5c3825ac8b89e559def4b5b2b054963771352b65936559d923e92093a9eb20f78a984cf1cabe0676501781730a1b59b82ec20357cdf297f86dd4413c1e047b6eeca022abfdf51bfd9a206a300ddf55f30bcb3316b0a8b5856d961ffbc5238ed49b08ac086c8b63f4af60c1f6cff62349880cb9dd32c4838971af65dae7ee708c35d82fc2e8e2dc3f507b83edebde4c94915103618d7bb048051066540c56fbf9f5bf66651cd7fadc176d79ebd74e734f3ec6d1b860b330d9d990177bacfb71a1bbfb3bd6d1e09be36195feeeeeeeeed13d3e74e92fa594d18540ff18218cb021f4f160bc877c0ae97653cab22c8350d6184df22f897139f732c512a5dbc788412ee76b847da7953242884188617f55a4ec2ff9f656f9b6460ec3b9713e6f30e7c2797dbc1ebbbe06d2ab860e1959151f478c6ebaa2c6bf81fdb4aba3c60d4a8b70cf8968191d398a455844433e313a1145e0189184c7173e468a9d8a0fe9fce11eec208c52caeb8ad725196a39dcd3e15e0df73c6e12d32efad875d1bfa8f63dae8b7e8dc3ed8666178f8b5ef4f2abe301579abf5cefcfd767ddcbd57da98b7352d705afbfba1f3fdc5be182bd7e3e7d1ed0e925c4877bfe44f0288285bffdd6b9b491fb228f34d84f43d2ec0905e35d3c98b62da8f187ae18723b0a975b4a20bad559806c853d23e3de10f7dcc73d07fa8940dc13d23c908822708cf01b3876c0d85d246689e51ab73e5039d1d908c99017a130fd87e3577a3dd4c0caef875d8ffe8af081baf246d29812bbf76158bf46bbe82fdddba7aee7bbdd6c5daa3b1bf276d71573bddf87765d9a6177728f3729a57c7a5d31c218e10585e99b93db0de6e22aba327532b48b51837df836a6208429f8f3ffe26c0af233e00607cbb6aa57c1c40aa1cbad2a92dccf872a9edccadb4dd4b6b07c3fdfb9f6848a3015a1f606cbf76b56cc19beef92d9cf2e5f1769d90e3158d35f2fb96f7e671a3ff63eb40ce34af44feed18ccb320d6a99d6aced7da06eb66dccc539b56ea053d08d71461583d83a1a7ce54cc98e2fa50dd44145805c5c583e4037a2583e52769fe733277d8aa29452174fca39e544c17817cf55588fed31baddd4d7344dd3b49faf7573db3ecb64b63ddd322ee752ec65bd340cb32fe5c4a69c979473ce696f697b7b4bdb9cf4e2991a3a621012472cb24170d1e6a6d54d734f7e8aa5d4764ff7404a3ba336e29e3472e23b4e9eb893aa69a5eda696b6f91425e53f948bae7b52baaea6b204d9a02107f226f2c3726f0d0cb6fa38a591520bbbcff6740fd4b61bf7f155dbc8f71fed6fd408829331d33df66a9cd134a2e2e80a247c9b18c1553b812ff229357222bf7633e924ae9bb827db095cf914fc229f0abfa29db81338ad0df6eb251f6d269d24e16b1bc4e0b7d037c372e5f70cf121f2e3aaede53790ac2fbf8b8c9049dce72eb8d2876348d4959af6fef265781092b71b67619af8f2ebc6f5a59af6d5a451fa4cd33eb0727528ecbb0f5cb978e93eef3e2e3866148ef9c572ec2f325c682f7fe6e324f83e4c63b91dfb4cbc8deda298df524bdb8d6fedf6abcdb68d63b9cd7a93bd4669a595cbb914d301f683d56ce339b5a794ce39a33bb5eec920eb48d5536ba8ece2de5b6cb1851b9883822f234043cceb2f372aaf9fef735e1d14f479eb94d06ca288db8c28c4bc292e253b791dc6186167d13083ca2e6bf09eeb3e3ec47d1c863fd49c58e9c99ff11d7636a4764fa71ae83060b80ac24e26e593e38430764d74bb75b98bbac555b881a34f2718305c5c60606464645c670172b62727164e2e05e1cb3b21fd873045ffd3b8147deced36c4ec5254c2ce42b895c0c2ffb49b73b1eeb3b14bd990f03bc9ab492d495a115f0b83353d7df8de44dc8b2fb7b01feaa787dca8f1c8498bdcf914a825070388abe6eb7c0d5d4b83b5b17d324c9b5c8febb3ceeae75ceda5943f75e3509e371a8c74bfeb3146ba95cbb9184a06a4b58ffdf995562b9f6d525238ea3fbc7b39a64bb9be299f32e77c295373fec4b0cfb2ecbaaeebbadedeeb9a93fb70aefc1237a5c47e6219cb3da6d29ba971cd5833a7646958a89365f420c47ea83b61cc3b1f665ea1764108736e731ff769dad6d755e9f735875441c4545c6e51e1e452b1e472ab48c9fd1270fb672eb78a8adc6aaa3d979fdf8f30cd76e432b40171c40d0784dcc9aa98c17ea8dbfd30dea5dfeb87e9977155fc14ecdaa73fb2bcf0e1d74f2ebfeb304d373c817476afc6ee5ab5f781727fd7b4aff152e9af6bcef9f1677ceca186b9cbe7ad56597a2fbd56c24a1dbbc48ac8a7dcb66d5b972a7d8fede797b69fbf7533e73af7698c74b15bbfc4b167cf5bad1ca683f681025df973e5d7404a4d2cbbcca7133ddd1d917a490c4223c5d8b5900bf6a013f68bc1b2d84870c522d440581f9cf4a0432f4909420c96f5a0e004dd6dfac96da5d24f4e2b351221a699a5ae9528f918638c8d54faf95f4c2399bad4d82624d4485f23c189b7bf1bc951c035ab8396b03132667e807a743e5b2384082aae602768c14cb8c9e5af77bc215223497a4d19f762ec60627a5492e08399d4ce63c2d2ff66908c78b86a66ef5f448d26bad05733fee22d04618d6f5acd24ccca6f8e523fa27c8db1d3666672f1a6b71cd4563817cf9bfd1a3f9d4e4f83efa94ba97c8fd3cb3f9d5ebeca4f14ce850b95938be882cbb931c5f4d0f428dc67c4357d0db4267b8a14867659c77eccc4089c1f4074a0ab84483edd56e94b0d31c618637c0218e0f273dcc968ac8acfee28dbf1b7c3655ed9ce7be00b10f2f939064276ada47d80cfaf00f6a0f41eb8a2c12fb081a8c142d0147e2e37e1da700cf85f77e1c2df7a6a0f0a4ed034b68ff36b77e9733ae781eda5d94a9866629d0f710f6a9b1356f3212cc46affd78c7867e73d1c03fe66028bfdccba88449bb82f5edef31ad7499e881fe1c2466a244dece73d3ee017f1f59122a30b3f991e72d5c74546300d1116905c186dcab0860b7b89262e2c6a2240474b6e2633657a2e5bb60c1323b3f94a1b9e692463ef4be08a6312a5d6a250fff21f7563fc2a34e4dedfefa56ca1265a01f197f8d4b331a8992ff2f8c9919664bfc873445d98545ab47fb87256fd8f91c75fe2b7d67d317cd4d27d1e1ba152ba6fc6c6785d1b2bd2c2e8482b437c729db817a317c1158445b18b4d9cc4272cb87227f04b7c2d6816be20cb60bf9894d4c449f4977ec3551e2316874422b1a889dec5931d0dbe33326a8cbce0739bebd4782322724fc3300cc3885c15ad0b946f21f722918e45f9af8550e26f2d9fc22ed805b38bee6be9d8bd94ce8bff620505e5afed06e57dd536f13da09424fbf5921e82ac8bf8bd24f55f4ccb7fde9f622fb9f1230f5c392b26d57d31deab741fca5ac8a257b2fc25a2ba2ef2c01eda7d36161515f165e25e5211ac8c7551091797c49b94d2c524cb2283fd225274d6b54a5ca52dc9b99ab63591222c577d9075855cf54114dcf89147484f4cf9f891c84f048a41716809f6945a1bbf625c89a565615d741f1fb9180b0ab55cc526179fc29db8547dbe29efdb8d8b7fc272b76f5f8802a6811f3f8543e122b46fe23ed42d71ac8fbb9fb376f89ce8c6572983fdbaa84845839124711576e9472220aed2699e27f5b9b37e8c48ff5c967bfd5ceb509eaf913d9777c841f567c1c8247bf8b1f2c3f12bb9fb8ab85f4abaff708f6954aeee0375a228c96d4d58fe14979a3e5f5ef9d76427375efed9a5fc877bfc39b0e1d0d64ac292568b754dd7db53c521069b3df672fe2539e943bba5e7414411aeda1e3e25728fbf5bf2eb478e06dff835db6eea866d75e372c49fef0355e50ff7e6263b5ada3afab9c0a8dce7a1ce603f181cae9299a135a44bcec5e2d7c8f1cd64e4fa62a6e799717c4d524659bdd66cfbac542a71dfb695b44dd68cfed7384b0523e3c64c8d18999a20b2292a9218688d5c07faae68c1d2377de93d694ad1ce86bcf469d1907bf2514ed82f57b7839a3c871e0001359494e5060d0386a504426f8b094a6030e1c8fde2752660c1d48ac8841fec0cf98a236f10eec1d7b148c419ee3ecaae04aaa081e81b6e14a414a260e4b02f67ba77291bf2fd69c8c87d401a630cc75dc9e571a36478c482f642b4420a41871c7080916a798162595139b94841b1a6d2a6d50c5b011bba6bca08bd6524c62a540b571042c84c808fb3b88c635ed775311320bbe69c73ce39312c1ae1af8494525ed7755dd775c5677ef97e4008a13ff30b76b326586c824008218410babbcf57427641fc658c31fef0c30784b9001801be9cfb619f41c9b10dec9bddecb107323f8812318ec0851c54410627d400898d5422078a2988800d3b80810e9678820d84107641661745d679b0831f0408fd26586c822831afebbaaeeb7a26666cae0f02249b010d80e082278e80c58f0d10daa1e04bbf128c24c80d418e2889c21ba2b0b1f0a529a594524aaf18c4ce39e79cf39998b1999d1241726c641784fd054208513623b89eec30e1d98c00be41c7063e133336b00b920395b8fc1445ad2c33b02c50d88fde951f6bd31ba835a75be53e3e435ec02e35bef457be5f8dd1bb1821e236833730737bf097bed698b94cad7bd7673898a65f3ef3571738a0f05b48b9c8acbd0b2e8543e13ed4ad6fb9af875b3b24fa96ba13cac7cc85ddd7704fca1fee458e417f73c14e1448f43d02be41e7fa33f13627f943c75cd67d2e9761f7750da436ec856f95d0b938dce7c3a50642c9e3720ccca55f63e4863172ffb8ea3b0171d50df89c82190c184b78f870f8542eff0a077c9135e3d3172cff77ba28f7e4b78e7bf221d73beec97ee6e03747831ff237ebb8ca638ab32ce59d0dcfc53df938e08ae555f888a55ba154a53b7532642eed4d066a94fbaca4cdd3bb4f89fbf1a574897f258cd3c6002f3ea494524a2fd3aff11b8ac2cfad243a3f5f6acc9ddcbbd808f7f8ad90181df277c8f7e4c3c8dadddc5fe7be2ce5764b4bf9b1fb66aee42226e21f615c3e8669fccabf814332127c41adeee21e066a7be418fc42bc5c482f7b9723c788d285e7c3b817a3432ab48c2064eafb17bee97adc5acaf722c0a4eb5fd9931caf2015fce20f8ffae5518b57adc48fe0d1118b083e0930690aa16e5048265c58766c2fb99e62544ec98a2982ef8fc9252d68e42bf9d3922cd8825006f14ab298f84a0a619d84463ec94123f75cb2244bb258b1832dd892432cc99242ae9243f1eab9c450371b748c71f968d2f55f9284c9e52a2eb79204ddaa49c1369366d9b18de47ef17edaed0ec8f6c3e7f11545822f3bda773a51240829925c35132d76bdc43dffee225543d5bcf973607790245a0c69978fd6ec3bec3a3109129325b065748f4086907d7edc83cc9d0b89f0bfd3ca87b8f7c48794fab87a8874214fe0fb5441122db46fed5bfb9e5fad607b6e9a9ca952aad4d9f0eed77f38b739b539df8bf1e7bbccef8501fd9a7baabe3f0bd1af79b7369744dfda18d745779827acfcc82eb3a83eac0f6bb582ed67fe502ebfb8302ab0f3fb372aa4b6d4d6d9f0ee7bedb28ef3a27baea24cc334477412a5df0b03e0d714fdfedaa56867c3bbf469e751dac1e0e022f58779c2ce97ec72c5c008ee2954d8af850c619a2798c6a7bb27721fcc9d5f8c57769f12b77974506a2d0af55e57243e1cf180c3a772fb63646230103ad807fffe8d5754631a1f33b7bfb9d3176c3f8c0b7c877bfe92a3d1cf5decd93a7640faa9a6a9e8d4bbb5389fb94f46c6bdf9c52ad9a16cd91f6fbf12976156c0e47ab1237b9cadc9b8eaebe78ede75ef617290e2a75c8afff39adfbbf3237736bc7b230e858287e2a87119577507139f53b1f3bcfea075dce06384c709164b38be945a8b4241085f4504b6ff237c8131c6ee98ba0721fce8d3a691c2a75ce41eafe0c1115e10c50b5e80852f38147c746e7fed0185127c64130585108318c4b858847b3b78cce8606461f7c95c762037e25e3b12c85994ad88a52c565f597c1f3e3aacc3280a0cf7b0a79d27f123eec117420a2d7f11420a462887833fa824ee74a622d878c524ae3a428322529118e4aac912629a0c084c53b5af93fbb4eeebd813e3439e3d71270a588910f981824f1592ee178f90b4aab0a43f1e1d75ffd0854f1f0b46773e167de210f7fa654f4fc6f482a5be75085689afb63f8a47fca57fdb81e57bb4d18037f6c488314d16b2d7e1512f3a24b0f8342014dbc323ae42e22a0a575bc762b15844b03d22907bfd138320128c09ec1789d02c1e3d4694fd11232d21215e2e4ce25e23111b2a71afe3b8e35e9ba8b03db0c78947475c45ad90714798eed5655d2452b721e6c3f990ef073f1271af21f649f4c53e0615711564d5aead4524a82402c59fbf9043c22bcc02d368a157f18b48c000cd70fbb9570cd990857804573107fcd22fc5d11411e93615372eb9fdda16833846ff46c4c2e71b9bb8ea8b44ee515388c431fa897cde8faba677e1430a943d125cf916f8a53f0cf40cb60d3e827e28045930c9ed0fb25046600b1241f8d876036f6c5d07ba455cf56997eb22a22124b8ea14f04b3f46218ad5e11af115db340bec0759d87ff1629d0def628fc12feaa1af4d325c2583524aa98c8c3558fad13d1e7309c402f6f0b71c58f8f4791b02d29410d7677f3593e1ca5ca886db5bdc26c16d0e743adc839d26bda5c43e5e4c6e3746b8a771dd833d8d5bdcaf3f9ceb622fc300ec6fdcc07aa484984f7f3eb3dfe082188385b0d38870554a087ae5fbb86e12f07e7de50e1e457cd895df5b5c8f11c505b2ea4396ab52d92709b92afbac9bc0213805d3780c380687c3bdfa1a977d7f27f5f84b7fffa350945adbc36a1ffaaffa9fdf8b8d5cac84e3be5cac039263b3f97613376e04db03c9b1d9388b8b7d37e1625f3b161bb9d807b6e70b716cddf6183741a0833d806db6bf3118418e4ed14f0fcf8e0896d0b1099263c3f085e58e1deeb1e630525476e918d638c6f4fe51283b77708cf93ab460e5d3f93d1d5ee04811be9a21c2020c440e1e4c73fd7c5b67e6e79873b214ee8cb488892177fa46a146a5c63450ae61e6c6996a65a3be97dbec835f6223c1a708872e5828c33d1cba60e30e96eda59e016f77331c237e4adc2238467c22b630c0e0f88a42233810000d30105efb103fbe0fa6992fc4c619a681d7f9bd0682d98798d8ff05e0c6fe3902e6f84a0e73cd35281f7b193fca8c8bb7b788fdb5610c10a2e7d379e3679796f1bc4d7dc94151fde536c33d25a98566f8e1aa88fae12af82846a17e8021c8766b90471f813132cdacb9d73f3c3af517f88ee2ee9741c0aeeb02b23dc317ecb12e6ebcdd60d84c5ddd8c5d4afb1e95b5f789711f0e5f18c64d160b901c511bd2f43e50f7c291f28c44e9372ffd70af3531583b57292fbfa6703b29cfc4dba47451f8b75cd2a17fdabc52f3b5c073b995852137e6720b49c94df977ca3b6bc3aec1809eabe00cd3f0ed5b2acd1feef5cfcc19195dd4465adecc90664f4312e64a560bdd39e79cb37e8d370b86ab4c2f5d3c981899ae250efbcaf9f766726cbbd1aeebba2effeb32fd868292693997da6e7ad93965f736e7b6d5fa9aa6994cdbf6a59289bb9a3e6f73d2fa5d7fab5f03b58a65daa4333574b82a877c19353770c85923c5a9881280aebf85f1f42e535335e5e666ca14754ac96e89ca2e0fc45a0f0a72f913d8af8bdc189b25344454d4a21fbf8d7c13560735d8af7d52fe7c31213d4338661f6bad3da0c0b6bd9b90077911f77cc75d881f1df11dda3e5b10fb79d093eb3a8d6a629928a13176e6a828e94676b28357ce035f7cd547ad9ffbc3e5961561b8b567f8e88b5c74049d07ae3c89bfc46f8262c2139f526b51a87f6f1efde741da182cfc203e7267f7714b2743c3d5430b6c7c2b945c968195d26354c21e07618517d8e3fbc17b21f7f98ef413d41aaf4b43f9fc7eb0c69203fb6917064c74cf5d3ebb7c01a931a8e44c3695554c999a11000000002314002030140a074442c158442c5504217e14800c98ac5070529888519252c820430c0100300000000000c008820010bce24c959144fda2656d1f87af6e6723b724200fdfa54cc8726117d4cf3f3d76bc9f142727d3980c95ae8dfb7e56afa1b55a69e503a6e892827cf1bc7c7406aba709907db59c9420a54b5b6d9e0e06fdf88be79c66f70a452eaaddeac55346c03bcba3ff178dc404dd161d3976dbab7be5c4197c4d0905f84ceb6380cb9634a7c9df23ed7eebc657aadf4dfad5cef3b71a805dd261b2472063f7168955b87cc21e79c72171fea4530c41a49b7cbe52d7ede4adbca3c1f60647835dc94a8723a46f461778b70761138f900c87e9db53346a26e10849fdfbfaf8f1153254e946f6578c074c3a45816911bd5ebf14b96a67f18d3dd68fb81206265d588d224789d27a7e3c97c5cdec09a0b021c1c4a50012320393d56694d0a6a0222814bced6ceed1b871a25b7e6ee4602b5af739d045551225cbf442dd62f97ff447b8db215893d5c20fcd2a23ab4e0f2ac99bbd408e76675a3918d3c344baf4f88f5281fccaf238e3efd7b39cee996b0611695250f8125cd856ecaf6fd160419d9d8e624f2f5eac9790444f1758f6e2656cf9e3d90b03620bba5662e5565aa115afc0ca577a652bb2d2955ae9ca6beb5021fa5764c52bb38295f54a480c190a7cca7f0126b41ca721186eb8028c123a2a20dc94df7a5ad4e85bc1ca567825b00a70f17c779efa6c54585686e0afbe87c6a7299e6af7ee5d7e2a451ea3c38f2bbdf7929ce6532021066cb7f533e497e5b1611ed3294cf81cd0d3e4f288e93d89417d8984629bad1ff6ba095156ccd62f8c2bf8b86772cfe49674e55eb0ac7fe3c644e665f4b620cac5cc670d04418b8ac4e111182387b19a2b940177c25dcd96b91cd87581caeb0ceb6d29f80e54223e05852f8ddfa0010c07370802a59a458141ec231d84e488ec9326287acab847557c7d2d66429963294f2f953ab3778e86120d2e45f1071ab09a08914ea1920ca0b9bb5b9133c1e5f4fee8a6365586fb387400231dae39ebc6711a6f4df39f6248c60903a816513f25c09251256e99e93c7eb9102b8ad75c816fc2691de1f38717f8586acfcbc1b50c5885d9c350e654d3ddabc696f0056feab23a266d8d6960b2277e59e2794592ff0d61a574e0f1e2b8f4fa2bb8d4c434fcfa4fed00fd2605362568ae28e9cf42c20136f3297aec638fd0eb7ba9b838f0bd60ebe3a731623fd2ab48ae07b9ed9fb486dd307e945e4cd92f52ead3cb86e3e37cc5673f14ff3ad6e3bf2c4b39d59429451ad7c520dea6992c4e59be59d2cace747ebb118ef1d322e2ce043ac9c314a55c89f95080e80e67935b42b764cd6d928c02eb1e036d24c3f04afe3374008d72cd6845aee8b95926d7587002bd5eed167e718c5c395a0f57d9732dfd9f4779b9f6436a0c24c1d65c1edf1173e3270660f98077d603aa171de18d5deaf9ca35c65852f5a2d2e4e6c914a3b968c40e1658490665ea8b41e7524b3bc076b4ec651383aa1a85f424a5f18c5f44425f2dc68fea3eaaabda660fe12f58d223dfda8266fd461bbdb4790b8da8e252dddc9b8d4e52cfe8fcb3bd423599fd182abd87d8567dc0f5750b5d5314eaaa275ea3f93b22815664610f74a9ee63e4f2afee6bc9fdfc9936f94bffa59b517f6a7b4abcfef991d77a21d3cad84f7120e00ddc5d4e600c3cbe9f1085a45ae9424108f471a15c9dbabd99415cccac832897993303655c8f03c34690139cfe95afb8dc2c1f570ea4a8be4876abb83e606fef99ade368bffa054ba096b70dfdb29e07fb5d900f595662162970ac064a8854c2681b64de3f1ced94380354716e9d0802f8c881023ca1e399396917a751af0132aa42632e7811cc7834ab7c59841c8193b39dae8ca2217b680cf8d65aa279dcddcec082685a6f97002261fe245997dec551a61330e2890eee53b86ed0a976d90fe41c0d13bbe5a6a0afe63c786adb8a95df395e8c1a7d15c31c1b88b2f9760fd15436904193a0b23690ba27a1a8c44e94804cea747633fd29ab19482a4242d26496f58ad94168432d61109e5b52a634c7bcc0f29037bf63ffc3c608fcc41311f72dd4312188e51102b770fae7f9877bf19f8c7b0fa371af2a409aaf5da7a6ce89fb1dbce35159a92eb2582529cb367e834684775f6599b0b254e5cae20b63591fe17931fac04da8018c5ec490104bda5719f7f0c7ead03eec7a970d7075970b2ead0cf18879aaefaf5074598e6e32935057842af0b231485c26825665408ea4afa7a724480c3be902e36a470ce7816fb33da8c7b5886b4288a011dc61a3d2f7317ae08bb3968aab1ef5a5799a5a8d1f9fdd5bbbc9355820a402544e2dc5a21abd010abc92e101c2b800514f5cea3691e8655e3d3062aacc72edcf547549f7f6aaca5b9dc0b3b6706ed8d7cbeb8e0b6565ac5afb0bc22053e506793c20a8190eb4dc8f862c60fa2c522fad275c87a6b5123d009e5029d6a8bb2d66b3d0470a0336169ca0c90e02fd572989aa0989328094a1044ec81993c4105e3e347736df1c67dfbccde14bba8303d789bb92babf827ad67b35f83f84a4f7afdc41bfe8343d79e7e09d784b79afe74116dc696aa981f9dfbc9fe44a7c8cf1c27c59ec8874c6f95c79a4c85866ed7c5f499aea764ad3754ca13d9c79dcacbe588a3fd90313c5cd24f7b1345403aef84b8781f36016d88e97dc83ed1cbb920d20283ebc5a750614d8b1b7a2b8ec65da654c1f6adc081941a3ca130baf1747b221ff48e8a1bc8062613e272ef400f39d8ce9f7ebcab03174c7f9a6313de9c53adcbc902a13147aa5aff6a2b8be5d80c053a93a2c07db8ba46f10486f15a5fa902e7cfee1fbfa75b340ee7c81ee851897f2199b8921f306b0d8a6fe43e82246b7fad791b2e67697cc8ffcbba420d2c7d9c7ab5365755d8919ec6715f6ab72faf091d3328429faf0226a0117e94260b6dab3474356619f9e50c9197ef7d6c52430d8ba3bf7fc3508573459aa6375e905440459b5c606dbc3888df70d3723a4c8978e6c1596edc3bc5bc3e3fffa830c919e5f9a99809d025e37cb83cfe8f90e8f2642ff8340b52d7abedda949f2ecba18c6ea7a8b9e1f34b6ab25114e235de335df18d04baba5ce2405bd38267ade065b8a6b57fefb1d48ca84c1232e4609d9245caf72abe2e40b779f72f9265325841319ff50ea8b8055823eda186cce12d24dc4ed8808cdfa469bb9809a5b6c4d2cad56eef60dcd4f16d12ba48796b6924450f5e172c3083afb671c40e0cbeaa29a13ce8524b5ce2298f3076856083a53443fd441ee9065c7f69e0ac009b69ce9f196e16cdbb0bef3de72271ff62d87680c03931693d58180d8df32314b66466b7a082f4f90c85f2e243556cb99fd2316a5abdca8aedea578d3e8cbadf5672cc13007db4eb759e2440718053a4f2e82ad5e951bdbafc9e19aa851b585e51dc5509999c05020a19dd483bc168ae09475250edf25ab3b5f597b4fef90409889744880f7b0a19cb25fad1924238f3e94b22c9acfd9891fd374bb7859a5fd68cdbb411e333a10231da199a6d8e15182b1c41086c866ad553fa3b68b8d63ed01c6d2a496f09c989d682eb747d1e3dc8465c0739b0e1d8efddab8b6fa6acd7c3212d0e95db9bb5a3a46b79c50a6a10866fff934fe3ce7bdb98d05922e85449ef49285c92cf22e30d5a87af2def354ea4646ef7724a3a605a4e62a52c4ccce11137b0fd079eea1755598c74d7065cc310c44d8e48da362fe8d3aa350fffb5ca0467ee5c8df43f5be29b63c9153b4cdb96be52f61c47a2a7c0b5be8526ff3ad1d33de0b3e83f5080d4ad428c135c3736ce7580bd9dfde63781697463ef9ddd5c97842dc2e308881c28b1fccac484f298d73f30be2d295fc02684b8ab95a53ce8e84566167e32ae876610e61b280415e75fba123d1da27151857111067b6d3c259e331113f6a04fc8ed0e382bfd2ba1e3ae6df1d927878e0c4730b6627499958209609f8a7570edcade9b2aa7e06f59982df5a7c1b941b990cfc12ebbab96e11b34ff68e2609ec1cb6a336514dc937ec3aae2dc774fb7ce245f0c8ca0c4eec2ce0ae40960ae8b6435022b1803f15e5edc0a83ad602b8bc5d63e5eaee518184a0a0cb6a0d4084867fc5f40149cd9283fdfcad4f340ed6283ae69b501158c5779dd189f77722f3b0b79f3275f9c8aaaf61dd60176eb47ac53845d352153f97f6fbdaa16b95b1e4a68dd2ef52e664d1e484bc50ff332ef7ab1c566da6b630e46e2f1afe3bd8caf895f420b9f5ed9618576e80938ecb304531137e0e1e9e7dbbac4204edab3e30b8c98c36162c8fc13e375ee60cc17b27958f7ce6b67cd93344872e6a7fc06bc3ff2ed105222c0c4a9cfa00a4ecdce30a0301c6803f590189d1cdd10f352facbe17abbbcbfad774cb63f2304676e7ff868c38412d2cffe00c843777160e5e877d3c19304c7781f993de483ef79adc7267c815d4792459ce2c1d0f8e60023968450cdd96592024d7ab2db5785f2a0fcb60b313a57d7bedb7fe855d47dd9fb9114cd21d242a29937f597a4402a2e827307d2a40ad6e4befba451e5b28c70deaf8a49d23e68a80acd1954dfce4aff04d0402b47eb2e1f05a4f52c84f5665e37cf63d1c36cc1df8bee29564b351e9dea4ad22b6d53534176628dc3cc915574b81ef5df7ce885b8bf5df49a073b24098acc0f5a8aeabdf46ef0ec9001deadbd1e1a375603af5c45a74fc99d1ae036963a6b180595094d61166f1462119bd3b7db115571d69c14f555a96e50208b652b9f853c09f4658b56e1a0146cf2be563af98d9755b9d397c6c6eca301931d3f4618fa795ed0770551579cc44883ddecde13fa4e9a5ad7c039cd2affc2f50ad1f4817f0c0fa681364c84b8fe32f045f9df9c83603a818517e682fecdc075070ec2df756f3035595030fb1265330c49d036d337d7856801f67be49c1dcee4270d2b74cdcd1b801a4c902883935abdda57787669e5890203aa6db1527b06225b9eb9f49b9221c2ea2e23552113ee3f120efe78f2b3470fd84e7bd13ae9f939e857196a328eb802e5d8d7fa00425abf8f7eb6849f7a02ad54f11da569047a755df201f8c9e9437b46e85c07d24182a30a21434d4eb30be546b4d562910701b19faa0476dc577ff8d573f16a637823f59dc951ad488366de108c7e030923ab71536956494b37a8a4462d62e1d4da7b50f6a7b68cd7e8b5edcdffee3d9a3acd477cdd813900ddb400522bacf51306974bab89ea97c42003ce7a3f4ea46f47661ec74fc885477c8f8c3e2eb4ec58800c53f09efce8ce75ef71e63d434bfe6da4a5705e67916073b1af7ea4e7a5d96fb0964a4b0698b80c03f8300de88d9a3086c096fdb9421f033b9e00e5ce1a15b2940ba34a69b960f2af30a51d3389b0b523fac105c8f9b4d93aa2839f110808eb46f5ed77cbda2eef32aa5e3f5e082ea290d2b7bbb1c46b57a7999b24cb2d80fa44975646bb0dca8ad8d1fcedb00d44172755571dd167e625daf9edb3a9ea9a15016fbcca8fcc035cc85ed5d9167757724284accac78357499861fffbbd94f59e75f08911b71cf4c8805a606e008b8f2dd1fcab9bc3fa2d8ab445e46ec2887b43c8cc7e44e237ef82e8ed820c80d15428d26f4bbe786435e3530c280ce96ce02829152e726b92efa54832c0e9c3f77477210b27f6c72fe43059b08831e806224c0cf6a0bee4567bfb3478ebba2952cb4ed566f5e61b36715b1679331a25130b05342400e812d291b43e4308b6ba13009e2608fbdae03e02724cb08916d7d74a65b191c86dc17ecb7b57002f2012079461270cb411a3c681d9f78b0116cbd51e100c80b5a63657af4eb73bf9138d3d805a75206e0e59ea62918b693ace168f41e231570b124edd1e29c03c9381e9cea16f3814bfe404f8521c741e36f00bd06e59c10cd416a00d08bf4b2cb27d83416459bf84ba6913936159cb26bad2812de8c5c978e57d75e93f777cb579eb1819a0b54de06b61ba0bdc1854c493f0ee427240396fd7f1a006a0509d3d76d3e8ceeb216704b63ce52aed6775c01e22a9cdb2fb415a6a875e26e2f4908a04140de7d2a2ab0e15f88d129ad439c045d42c969565e359ff0a4525051c60012e46efb8b4070d34a7e6adceb9ea3cbb9d7c7306cc57c0a4c4c84265a60d498b4bd7cca94ef2ff614cbd539b3f8d84a80614ea0013927fa9ef7c182bd0ffd548a62e4e00d291b2fda57f572c9391704105477aa7923001e2b198dce5a7adc26593116c653966e173ed65fc246062f62680e29d4a09c44cd1aeb2274449362e348b9e8246ae4ec58f5fe28af679d223801c663ff0c445cfedd7265304544a5b85d64177d0eb54716386c1e97269f0748b6b5b8260dbfa8398ba8b369729a9d360db5745be75b83ade62c433abf998c37c6fb7c9ef344a487455300cd4d39287f6cc59248cb9764923a0f3e345035a7489d344959ded95bc5e72da1c8dc52778a5d644a2a4a6a8b24e2dfde16ad858543b8b88237953ca378afb034e2e0ff551f2b079f511a28ca04a54cf6eebb75006a1715c7e08be8f0726bed1c6c8f1c2c06a2e9d9a1ffe477a7c786747157f1c7d23fc0a2c5fe8438d8d2b87a225a4062109979d92fa54755e0f8699af5edb25791d1de6c49672895a8207a3d51f368393b3c1af6843b70eed26a73028b485d1adc7139df8c308a5293f1b9e1828f7d4f5f0ceba90544f481690f85a135107fbd569259e402916d2e34efb86ac7dbeeb209eb23585a305a523f3974884d021b8627aa8f5d83398d9dd961bd2bd5f6887dcaf44802fee2fa062a44aedfe9f922dd6509aacb3a9f1b96a488d306f55023127b37e929221f1b6ce51482c96cde2e4c252a9f8b465a94e83abbe8d409744b140b8d9e5441d55609d24a23a68897cb86611fd05217a06d4c37395d82b829ac10ae6e4c846da55a776b5e59f0163a02de8951aed582eda1b4b8fad0699c7be3a8f389c719e71d408bf605d52a0fc297d64face485e80ca73f20bf0a57c0a3db1b4227eb41eb59c2d5bc64a01c4a7e6a036f03cb118c697dbd4cf461384bcb174a5880b877aa3a5e202ed4a7182c8b06d8be1978f9bc0947e9d2dcbb214b0e5d4daf0c6e0edee1250dd6f063b32496ba57285fa7a1456f6f4fc53f9caa1b55ecd2013fa5bdcce52d0a0473b6b5273b34287628255b45204163913a3381cda3dfebcd6b4825e2fbdbe5b600eb559a01d74c260f4d88f57dedc7f699c3265e8ee219079408d0d4249a5119c7a66a100af029dfec2b7c86fa02a5e571da88a64f27a20095af2a242a05127607a85482095a572d4202050e5b9604ec1e7fbed34c1c82aa9d0ca7fb4b7f50a37d3555223cf5fcb881556937ae870c476bdd44fbb8690b54f781fe5dc08f5e7008a8de467639e94287bfe3fa4d4aa1da35d1bacc6b21bf882666d83d4f8ba06b9180345120d319cc36cd550074513f60fe511a85d2a48d175badc564c2f3c66d897d61a4b00f3333f6bdd4bf8c4a1ff68146c1406dcfae4d7f0dcac31d68bb606f8460fb2b25166064c0e72f2a33a0d76cfbfc1c7f48699efdf55f0f4cdd7972290f36f1aff9926779fda040232221cf7275898e8a30ac29fea9756ca07e7634ec91e4d1aaa5b5f983348eac9180d3305639d823bfabe35ea2db113f84304a3bb05e3d18a59d5bcff5e3ba4c2c7afd8faf6f52a374a129ad7962e75e17a18265451324fbae8b6468d2eae60dc1b1178c2632ca069e2f9cf93e9543c19e77a1f7c05da44976a733ca475fe2493cfd8f8aeaab4450326af581fa893a853632677cab818a9d277ef12beeaff3b8453200817f5352d3a9bcf00457b4f29d1aa9d398f6bcb5fa985790083a531d930d490c001457181531a762999c6d8df13b7265e4ec109982f4580b86e2be663fd6077d022ad539ca2e17b1c226d1255b9481b296a36fc3361eb00c6972231c0dc382053dc378f5fa9e9df01d615db67b9889046aed53dbff88624475b7da65c1f952aa7ae1d4a6e5b2d4929228a68cc6237172c81807953365de59f028e0508d1e0a539a8a14f2bcfd29194f5460f6be5fd9d697fcde2b0b002cf723f2cce7475a5f30ba4d55b6c68257372058b68aaf3ab7e948013210cf5f222a7c78bed07474815980cd7ac7ccf4d53e509fd36c4c960829c0de8caa3324abf0e1b2596454f4f16575a686c03c171543fe71817f58fb6d62ba427d850c7d57a508f2e6b313bfd14e1c6637a00f00acb61acc4616a876ce659caa2d412da0f1c686257aa97dd8566e0bada662b7e5d421769c0fb8c51a66602e984369b114b6e1e54159937a3b24764d8d3b47112d696d0e9e4db74601e52f04ee85578d5d4f2bef001f538935c70b8b885e4881e6c003659fbfbb55ed0b8d81f8e7210213879f4a86f840371202a6b01a1e4cfd80a2cdcbf142c2b89dbfd92ac6272c60547de2489ebff2dabfb5fdb23a5c8fc084ab857e41ceef2e2121f69aa74715944a3034fb8ac5b735f9af5590d45bd14b0dd05a6d05668385775daf7f2ec123a0b09273dbdd92f16fb040cb8d2badf398ff112bb82c4963c45ab20df8d3155bf7aa6806627677bc91feb1329a706d98467c1c08871f9aa3732a54b6dda840a84c16b18f4b643a2e52cecf0e07a92dc9f29e2424798de82ea412e7acc83eee33f1f9f0a4fe72e3b70efd7bb9a18b18ef960fa3c0f812ca6d95e5ab6682b2b2b1f7f19e2b6ad9415a7f8ac53f1eaf9169101ff0535e714a9cdb8823e0bf614d650233b5e64704551f7987a1efb1b496cd762dc4f9554de6207a8b4358c1f4de2610d5b2d85ddbf7313bd2b60eb3761285423a82065167d14b8475ad7b08c7ea6e2e9c2ef6fe50a972ec3d39d3f1fda081f32c5fb8b9939e6764c642190aafdd9ae1ad9bb368d213407b055d29ffb22cf6c75f4b5f2b3d6656c5937772f48b7e4bef271267db3de349096d67464cee7be5b4b2b219e7ea1bd184e78d013928a81339a6e12439032b7364ec80ec46a272cbd74668fbf026bc592d148c7ab6accce902e4a8b607e5edcf03cea355d42ad2272812e03c98f0c6f0042939f246019c321a9879daf793a36c185372e8a0ec79342994c54e7b5fdb41216ca5a6eaa084d93d7a84d838fb537da537e02235092a1bb2531d1427754976061d5f66a185c2a543783b9bb9dc55bf55e1e03a90de4d37278906f34ea6dd25d9e8c37b116bf2467bf1ff7d202caba2e9618917bd5a2880c533b330ef863e3050fca608978d412d2f144e8aa8d2cd5bea8048c5fd6e8d31adeb10133491f95ec54548dd4829838bdc23c487b693dcb7481661003e083316fb657841ebbcdb5c2df8f0c7237230b2acc09fa1121a8505c9603e239a4e45bc6a9dc7668de1b34e4400dad1ebe644e9a273a6bbde1a8943798840d258b58113606193feaf9aba91b0020228feab391b5e148842b3159105820aa230bd5d6028674b07eb72f6e3d1f52db761cff53c3f0ad88dc6b3a6e223994b2e58604df2bb6352ace7e25d4b18a6af792c71495376341c0a71c091f48724f33d871da9f7ccb15183da151fcd3ed1dfef324f28dc1b9321f6fdcd50fd60872bde2226298829886e4758a0423c8e7d4a83fb9b6d9538a0187c2e9bb046208c6447855d452a9916b2f32adfcc3d7bf512aa5028bf06cb1aaf388fbf1c3002f440ccc05602fa340d799da8b5bf1ba68a3fd6f7b9859ed10eb1fbd4c5c66f16977f61cfd33ac0bfd2cf4663e4f937ebc704a284f5d4ed5db9547f46f55aa796b0d0595049f6c879c105337ef29359e7b3cd025089315fde577048676e1e5f802ff1f851a92e03e23bf7fe0ea0ad4a0a5158c0e30b1d1e3f088f484688ae86ee114cd754693d6a43e51615440ab47f796f36e8a25ca4c05ea18f4008615fd77c16046d3810e64eb084ad310bca895c9a472fd771438240173fe105c9617b8f284aebfdf7e45a2828807f7f7576e5726ca9f05988f431d88c77343f286b7dd84401499af7fb0c6e775ad08058ea769880f8a5d32b8ebbda7a11ba35afd25d5b1f659873510b99912606503373d2a79d975cdbe981274c071f413a94c99a8bed8aabb2ca4ae67401f6784cd9005290a5653db666300358cba043e5bf96e3678f8b776b2fae138f9d46d34018128e79c4d4bbd06566d3f99a613241722ae7aba112de0b747c46ee4582c67b9013ebb84fabe19967f2ff5c2276c0a691d376e3b8348fe27bb03017a089c4a76b42292fb7b309c2d6a6c9c112cc50e57bd6135ee2d856da2903962ff54f10e204fe4092f51a151b0f9646774a466e1b8d35a2808ec16ce4593635bc5361e468c488cb354178e4991e05f4134c6e76b82468f071cc49d0170b112e0a4d19e0f859bd4981f02bda8444f1f0e253214ddc55d92cc2081941a32c5773bab29323e368a1d89855207ce7c8cad9b65e71287a50345b710295a8a5aad185ffa9d9896e00a03f86bab6bbd17cd1acb5a9cfc9af1ea3fabf894f5d81971e7fe5b74d00ae997cd4e51df506a9318681f6f325a79fef0597366e6936c485c4861b9c5609ea46c4dd8421084349970978a73cd4b97c083da86b39f965d02316ddcc39435ee0dca66e28386becc367a3aa4ea6b7c2f6a6079b7e470c85e776a921b2604b4b52bc999920a0a294f11f07136b7fa0f00f8f0ae9c87a919165121cc0aacc09957f313d0e54f39c19d7cfdb072ba7c2222fcf7cc15c53d53516dabd550fdc1732492b0416f61b4c60fe0fe0cb4365925e38244e1cf8661d3cf6addb656b10160af6ca83714678911c117d10067f493f60bf0f2299142ade1caf091166f74286e915cd6a97dc9b10a5a6a6359875a05c5bab2ee96512d377dc6db85d171083869349da70cee77fc00d21278c3cdb355504c9fd252555c88210781928f74103ae3ae05130bdf26b0c0366da0a4c0cb376da7e190ff9fcaa91ce037e649810f3157f7bf7249f5f62542f9bd6fef920391b33127f7c7cee9891774f0025d4ad54cc50e20ee638c6afabee65ca55b543150ab93a949d0807462847d1004a2eccddfe8e091eb5a57df402b2e823239851f43606df96d404f471ae1cb3bda72b8862733b43e81da771a2809b4d69b004221bf68945f11d6ef519e0e164010e82294fe3ccbcd8081720646bc8436df04bb01a39737b02e84f41b32f1147db0426bc2b06bd7b06d85716374a6711b3742beb10e3734ce6ad7d5a8ab25854fcef50756e9a6cd62079bbbda614baae6ec481603b9e1370719d5c45a072b73cb6fb32666985d059061811f76e857e013785326ee2c97dc031e31271bba5eefb2595df6d0ce40e1012a116c0c0f98078da31432b32ef6cc7b1f554ef76fcaf75eb66728227d1c4e3b7c0dd7d4e928d97654214abaacbeb98a33158785cb7f218998acdb909b9c60d35a0e9bbf3500484832784c874e33cf51fc9465d88dc9253708130ae217f0a8c230ee6e41f73b809831cdd05f3c001a4030ec03330016cac85f0c3ab6f2b89918d171d10f7af941d965af38c74ebc4b7bf709a94e4b763540ceaef47717f213790bdebca5f04b045bced0d7a068d1cc630cefc5e4928046d24480f583140678203dbb12f953c22fd229ad89e5b6c7a95de7c5d6acff8924f31e313f2e0aea2db6e9675548915790554a2d22add988e14b075a0967bf0418700955cd8a1b5fd0fe58ca669e433a028db24928f9b773f6061b083d4b68473370484965cd6b5785f5da8efeb999c45630ef17e4f0a99604054786b00e44100b8dfa661a2dbb62abab2e8380cce45f18bef5b4725b959a560af2903eb73c1cb5bc614f12e6dcadc362bdc01a10d8e45c326e08792d69c3cd5bbbf03d6f4d0cdddd8f731030875a858511376db3d9e1ae02920ab443e2d0cf0b7f7c7fb2a52183d5e12cba72bc09d62aaa37cc95cd74185df33a3e6458c7fd38341dcddef74862b2ed73a345fb13adeb36b257cedafb9fa71864f4eda2224868508891af847b31c085ceca2e13541da17893474257f023f379e9591042b999f0159f14a642d5a2e3ff3c81684e1a364def5dbad07e4ca6d15053618aad1a41af95632741617a85bdc62fc9b35596c8e3eea026b2ae915ccedc18219022b36e88c28ff08e664bfa5ba421f0a828fc2239830266ddf992ad9f698b38f506319b22481a9ec64b96b2124d35ceec834d8187d008995ab039747f9cbf124db2b7753a15548c127edb3670dca2104b26c6ede81dec5bdd910014064cd3550f76dee94033b284b312cb64483d90456126edd2d1877b265d3b413e53896ccf97fda39ac88327a3934348df99576b6be99bfebe40ad8a18fecee96332ac05370692b3465d25c4c3c53bed8d8fb20a9be355cebd9bc77a7164458e57879d34daf9d289a84e42be7984e88e629d28a6e208731493acfc3784bdd70cf6c48050938902aef00d7aad95680b478eec876d83639388a7e80b344adcf9c1b2b6901b0083e4cf01a2f6d54c780d159d1d1d12c0927f3ca095c6fc86ee2e576d15cdd15ecf9f02a9800f72bfedfc4da109791aaf0b5cb98c9abea9ce86600857d979c3795b9a8e5c9a767ccc263b3eb58fc41cc1e2fd65a6a88ee51734c2379b2a2e0ab0bba9a08654b5890e5dfb3b8878fda351d54c1722f28f1c2fe723e1c7139587804ef43f405ba5cdf71b42ac3495ddec7d8829484078472e46d72636ce63d8766355bc82a4c761a45e23e2358b69154fd0070ae22a78a77d09ca26cc21e829c4eef3cc31ae62ba59854e891f497a1886aebe106421a9307e6369f6c4e35865ac0c36de5cff5ccad927c54c96bd93f367323a98f0892acf52d49fef149682c7671d6240bf1df5032d88c1d5b9f0fa19035b762cab442e9172d444b22c30c52c46f96905f09b0b1842995301164b9790266439454ccaf5412d067c5bdd3dda76de83a6c6238c1b383e7543a3c933bd5fa7e6c87b385f68f876213170b792f54d007f6131daa1c8a4b232949eeec0182ebee50bcc769a54dc14c1dafc0b9597a04db9f942331fbde63cfa3dc6804e617cea3c38aa2ec31ca289e0f926ca78265873e4e3599041727516ca731b370c3f04a6bf619c546228f9e2e46914faa7b199a1e1ecf818568ad7c218ba2b0aa749817e6b715d98badd8caf358669ac2d21d672959439c1711d97e0f807005a19ac7c3200a242a016b1c519928e58f399803888d51662d39a19fe100728dc14aa4b22ee678129e994e516306f939bee898d3d7a43a11f42c87bb7117bda70c6e5fe5739d28a3b32e762bcc496b1ac76e833939295c99fbad34bce9f9012cf29d0944f97f4407932dd3eeb152ef9ac8b69fe9381a2e109e921486271889920bc7fc0ca3bc4b5a7412389339d692f008bcb84237a2a3f6a3dca05803c3cff3067094e8345e1efa6da9fdb9305edaa74217fbe299092e6a451621c7f6f12a7f6dedba3c86f4a1372edd55bc2dd76a4aaf7ef1fb7ce6c8bcdfdf96e8014e5f9e14ebed7a90f250ecddecd668a1f946c04c86f2187c686d979ff224b7e889789ac8ccab46c00c2f402ccf06c83746be821b03651561c8a45b370a5956d8faabec573c5130adc02e65f09c37200a5ab66886a00953adcf04370590b0315ed85c2ccee6156f87bd78f8c445c7d3727322617acf2f0e9600464566f4c766e2405aa7a78e092b738ed734dee42e51780fcf6cff34d6945713b76ec9ed1aed6e9cf999136a486cce1541faf69c01ea652e12e0ae6e0895987c6c877d4928ae3c36274c4ca856ae2bb28b87b8fa0d8a4c474c0a5a79fe19e082f9be3233ca8fe3f09d21209d3980e0105821caac8d35ea741329d410c591f414433022b8f06e4c21adffbb8d454deb476e1801a91c77bff114f48b18adac2f423538b041bb53d22f0f9d6566c3ec5a9599b97d520f76d853052e8c0e988cdf7285c9f3500e636005798f68b901da7ee819f74aa8ae035401020765230afd0df729af1acdff8a9b39ed8319ee268057038d474442e14c193d891060919a2c04401a73567047a7727dc798c849810751d6e12d8cc820897989b7f6fe5df0c43c9ee836463961a6a7e6ba36939b71a325f6226822183b643c588108b8765730c77826f3f5928d3671fb30861e7e90b19d7bb033293e6cc5310f42e54e61cb9ee094171a06e2358309b96d71fb89e26b0b3adae5e817e984fb2b8a0470074d7fb15c890291162a5a67e93a06a2d7ae350f34e36724bd3a99bab168312fa44f3b025cae395a44fcf944af7aee92e5bc40250bd6b593dd1506c0dd28dee6a2b2c985c1d8e9a396db3306ec13b00b3a764e01b87b1cd8d8e4a37b335e4ddcc8a9d08cf659f8cb43d27768d4201a7b6888e22ce686104552da23ce883b09075dcfa2af1007d951b1c57b835c545b0c3ff10dfc9b8a65f876a20f289170cc262d83962d8ff62809d9ab59e92fe420e5e537cc283568b5365b82ca5f362156f35d0a0b2fce5bf18cb41ea3112940938b945ba460faefa81babe4fe738d02224a3a9f0460ca3c96417bae7227bdcfefb60b17ee8c2c8120b7261c34b4ebec60b0c4c09496fadf06908c18b782f873af0bd7d1e2ef3c3abf103be73e1020891ab8bd833a351b537e261b0db77e8b12f00253e59ae22df68fc3ed6092bb8372298898c77c9e765b22d395449d06a1c46f13ba85288e2c87dea271bd7d07bcfa854f484cb11cd97400ab0c071d40ed4a4943d1863ce33d35a1277e341e83b8f645a15fbf5c3c4a68404b517d830e95b29ebd0a60e04b3ad53671d0821194779a7501bbd7ad701f7ac6822f052a50b2a034873d691f78b432f013db1f0a37323f0d993e5ebe285efb1e6a8b44688285f312b2cfdbe51b5fcc575e1c98dd5ebf8c1562369e2a765d07c021252e8c5bec59e8cffbaf3c0d1b98fd6ef0a1282ddf3bccbbf470ddfdd8573f678617cf2d47398400a0e227582d70a34bf63e472f9e2be89de0e376e33535df964676f822bf58af381eafff9df1d0e0134c8baacbdc162fd7ef28edd039af9863dd29cb5a8c1387b49f7222a9ae8e7a72854e3f878039df7266f454d2164716722370da3fa2f2e4bedde411c733660b7c8cad36899fbc9e46b7bffb053ae93288ded0246cbe06742467d7774659db79b14f1b25fae9ee7694db9fc757270e66a75f9ec05915dc40188f731103b20ed3c953ad26a9fbe4b3910c8c98eec4bf8191204390ac5ee7d9004a10917696a94b03f6e54f1ef6e653556e11d5bc03a04f31c4b0cb9a193788d05798bdc4fd755f6966b755ba8cb11a44e8c3acdada2dff497a00b8765680b9116c7be3e6b45fc5b90e42dc926b5959315c10563b1c054104e708277cd2a43648a0c45582ce7e62e0d20b3ce0edd811969f287319ee12f7e0651d73558f073f65a5cace1a443ba6125e9563079ab035795e0bd0f9d3238ce2018f162ee899fe4e4ec87c8d883c4a266be7b96f8a5034f981ef8af962ff6674622607871732cdd102cba5eecd999716047bb0e457d115efa57b807f8898cb881222a9b0d8764205273a67e8f7835f561b97e52f231e58fafb1626aae9a506342d1edbaeb857228d879530d309333e5829749239415e67265b2bed4ef1b241636f5219f7760741b34c0877d13b059f436fd3650e9641a4f2619e484b0e37d84577d1c26cfb327f2a2912c82af2dea7a408093fbc96ab872829af0b91c4e80ecc37ed904e255e90b8faa0dab9a9d2a997aca47fdfe5d0c1466249e734dd489649b08ca792c482db80cd50d4c4989ee139baddf31a1ec5455ac4f8ca7505e8eb278d40c0f602d3e09d07f73c4dc91af32dbc9c6e747fd4235b3549aac699b892fbab0f7d88fedd716c0c546556ae030e7ce6f7d2a1b54bcf107bb76ecd98fc80f6ad4fa4dee62ec4890c7dc3f83736b1c191877b572c952023a3894413739643cabe3bced960dc7fd30bb1fe89559dcc918636762128406c14265380013a145400285242e5ba684e86455dbe9296805a57a30f32e249942aa15489ff25836c7baedda31c1dd9ddf9fa5eeeb101295c159389ae01e015516a3126374ae8fa3b5f66751936b461504226b52fe6b674bea0dcc1944bb02d153738335f5ee8cb406b6b042ebaf3bded326ba2911b4205943a8d9ee33c431a5eaa43588e8af304f121b20f160458fe890515d3a6292cfdce37d0f5234583645bf0fd29f1f63d7b3d4a76c08edee58216cc68a28937c233b7c615e963a525f06bc421cd6631423a8727f5b08fa9a72679472044a46f04f248085d23af562acde76b4ec54a648abfbb3acb736e1e1ae62582aa20295f1c5c29f227cb736ba18ac20cb89a5bc4bafb340cec09194f3b772b7cc92be3dca915aa8f3603f818a44fea7c722540ebc4b8187dcc104afe9b06ceb053400a8129127f3ec6860ff0e19ca6a9c7e4bb84f29fc90e5976d1c8ad128b3d483fa651ab22f2850dae6f5dc0638d9b2a98d83f62f4c30daffd85c06688af74cbe238f02ccabc956b861c2acfbc69e324ad5dd0d4b8bbb05946e4c0bb02cb6f165800656008cce2eb3070f26558ba104a69def25a9477649ef5f5a9dc414363fb519dd1d36c0fa6820be64b62c14b8418a4b59a1284c6604c93f1129675886d353f86e01127dcdbc9f95451a19b0fbcf6c7b60c2070c42bfdda820f3dd80bf808a00f070b67bcaff99dee86ade7d3d78841a46b4783c604e311253ee5c6930abc22aac799a76f796a681d4fcbf52009b47e8540b0fe1661de2cd7659f4a214c68e91d8c0ac93360dfe492a823dd0a20b69886d2e47658312bda1a6e001e685bfd2882e2bad61016dd0c47415026de3c253b88a4689d7322e512bb1b4194eb39f8fff09aeba75d12ce908f12cd2f9c6cf54095de9c5e419cd426ae0ba0ee28e47c2af86cf6648b64fa4e66fabd86705dd0817614f466b49d94cf3d8abd4cd4ab82be1ce05f3abf3f3607403bcfe926f58a59c701e9691cee0ef4dda5412d75fc6f83c52c3adece123f9846936479d33941a97f05a4b5c759d304429c70c32cb08625d6b8bd31fff169a423fb1dc187ad4a71f2a09d9d2cc88b51bd8b851d91aed2463e4286b6206708ed97dfe34b4bc4f11254195abcb76887bd52326ebdc3f2f541ce01e581aeee8ff2dff69e7a5d9f90eb6e9bc2ccea36a66cd41499251b91a7da4957b0f50b339a503df38249f74dfb6eef1a8724bba5453bd7c42a1b2581996540dd8e9d03bb187292099b03290fa8772a7e5424ba87b49e7688efb3d554e2ccbcf78ad6e6f26e4e2f28ab239a15d02d6e7d51253fd756b712a7945eada2ed4bee1a4c4ad204a468f4ad7b22d7207cbd0c2e141fd0aefaba403af9d8355dd9037d4e340dea1965a6d1f011420d4b49baa639502bda7090c2f14926f63851320823f21a3740f4f626fdd23647aaeda976d6458d5a3ae6a64187b27e0860a359e1ec17643054cd1a9ff1c57efb0d691bca11a3404ee0efc339a79b10ff1289a41f86e43639db6823822801e4724a8620fb7dbb7ec89caed5a48992128f56faa91597f42d0d64ef8103386486041ee058e665f2ab6126694054679c6463d2c490342023e27288c9ea020d1c9b27a67ecc373e1190c54b5aa7a60efd69d21c23d20b10431ea8deb68a2dd60efca2a3fd798b2164005ccdc8fe2e8ad1aeea4ae088947a6272aaa536e39f15a5579838a7397dc97134eae44283d43c5d0b004a1ac00907be61a46c6a0432d999ddc8714b7c6de6f7b833be1be244b9ed651fb554a0bc299b9ba90f5f5f9d6fe694326b441cfb6bcb21976a7f18733f21f440de29c7d2186ca4f2ac2ae6f33f80c3c628c3d420e3eaf4c3a4229ab09f41fdfa52a161b5340941522f6206c4cf5cd739d7ce600345b7452f5e94685d98796eccaeddd8c86518c26bf8a10c3c7f390a7884acf75bccd96cd3c44c09eb8c33f97bc5a3dda30cb89431299d4729214eb4257417a090f17407ffba2ad6e633f17ceea9d0abe25e38f3e713f50a31fe0187261cf0426b8e78e6bf0f63870fd5cef4699882869d2134002aec7725c6ef267e02852e61e33517181cf72dc8a2793529e32a9356a92e4e47b62de2c62b7b17b744744564c0283191c22616de598b2b63d2e6d05678583354404b33268e3ffab76c456ed877c1d6a092aa8f7d8ac8085d5fa2043fbc5c116bdd35cc93bf531e004769b2765373117338a33d8e82a24ee517b4b0a3ca0d7a6056559c6a8ca5360e8844a974e26285ad54296d5a42aefe4d1a1e065d51108f91a53eecde2a7cf819af466aa933418a7a8d4cd36752799c3e40712b9c8bc207190ad5317ce5b6f4a1f0c4efb7a6aed277a07ecc94ed92866b5c534cc1aa2678422690189529766bab5fd88e768ac01a7a115d37c6473a69753832f15d04207086680aae4344fa7d758aee22a47025987c64d2764f1aa5b5750ff60b9431caa39ea829ad842a98824d54d03bb2cf33125dd4a2978eba5fde8dd21489202dbf4c208f17b4382a7ace5f9ab58ec42a4de666041db60d0eb1034db2ff7201a191a8804675b574d0019edbd365ea11af43d622580141dfbb67f198c4b82bd9c093df5f93c5d0084479461bba56aab4ea638d44b693461177211df8b906a69a1aab76f6f0ce3e672ae8ad728bbd2b2923d20151c09a301c6bc9a9b9293b78a72b85bd39aa3b38897955e85f2f2792de243a11d3ae8de498f5cb79256bea050233341abee52d6d3e37e42d294c4819772889e33f852138691fecee3915aafbb1fe36b5bc6c330ec6a8bd6693997005028c3ce2667f09c0dbdeb6b7f7a8120d687c225fc52bc34ae105a3dd2caab29455900e9095a90ca72866c43ff7fdbda92ddaa7d75a9f01a89a2e267ad91d4f4b5496f439a48ba4c8d955f4fc9a3e7ce33808d751fda75e79778509c38c4add068f4d55b52e70345b818bc1865472398bce06fb339b84b805bc36494b322e85c8e8b77ee0be7ff4bb7171b65ea88f98cc10b5b4674fa4037b944634a4565c98fee687d30e58e40a4fd0c4b1c0c27be07aac5639501da627ede47b0ea4ddd0b43fa85cd3e22ccc7dcbe2278c36c62eb5226f1c65654d09ef3a425753047cd8ce45ae3936ddd70926b2f4316ef504b09e2d09a82996b7631f86a829eef2e411fb3a75347c5982b73f790a2c0e349974ccf49329e35d060a6d1cf7512b46b4f35f530dd6947f0014233ee2cd36b7df06257d3ab7fa121e38df49a6d61dace5af5a2a0e839594f0576c3c8fd36020cd1abfaf6c8d3aea56c21c043458cbedf756e3700bc320d6f1fa5d7ac2e892c289ad4854d18ac343ba29dc2b7f38da57cec29f071b3b70a979d6c614ea5f8a963ac79e5abb0c09992455e266287197a5d20e29a32f7a594d88978ebaf36e04b6fd046f115a540bc001bc6f07badccf46e6b1727fcfe5f8982b0c368b67a7a00b5039fc906cd8f5ffa17d735545e3a0dc2968e1c99ee474e53304aa6e1d840a2659e3ad289f7fdaf364e55ff8f2e6b49557e9f3eaf1aaa75c7c9e9a5c889692ea421c33ec17791a4e3c50b3cce56414e563a941eec441f334b4548a3325b3f4f6eac35881c8b518d985ff56ffa0cbc89afc7409d760a0302eaf8bd92b3be16a48db8453c7a34d11da0601d2949166a085655c9eb7f680f6661ac5014d68c09d35fedbdacd5374c1765eeec58a84652878ff78216cfb71a2c5d8664d90abd046d58f66de8a47dd53c22a67fe9e36ab6c330b597288c3d7eb5b81a5222f4f3d360ebbe7f8fd52910968425eb4a0109800fc555796867464eb6248b46b386766b4bed471df2cb3354a9bfd0ecf7ed3bd61dac72d319e0b81724da59a5b0a30d60dfb3d6cffb3a8b6cf077065044ca81009e603948e05a958c401bf154c5585e47c32519f8b1f1b101f4cda3d3c613fe1eb5260319e264978d8ab40b0f9d568950330e0fec580d4b6dd7522a308a8a263c244861c18a9f89980d74295b0c89f9f3dbe8bced5ca976f01938abc3a4f4b115237dd0f27f274fc8b6b1239aa64ecb02867ad2600c10313a170dacc949081a3b0c83c8ebd3aa258bba0da9d016fd5d38d9e1eeef5dbbea4fd7f74296868b8efe8ce299c0fdf0cceada9a9e13d75fc9e36770ba9944ca4417fb6f6ebc9b3e205d439326f6883033c5e50c12fbe131f1a0ced71e27b7693dbc442d7d0a3b957947a6770248f8bbf79671330b2928eec24a32cd915661713a86976d7fcff1b59bb38ef325dcd78859bcbd01e13de6c67e8f3f60dfe81e34ba3ebc236578c8cd9836b4118c2566c6c844a2bf48058c9606ee3a0c4c05a6d70d9567b976fc67131649da44ac3f6bcaf58641e0ac3456598b82a053182a857583f8e5896a067d63fb994c82068c1bef349a15c0de5412983145e381dcec4c9158aec1471861a1cc806f809e4793a2175dae6461c4a627c1cf5f0d39617821167f476aac7cf14e66594f698f13b833c0be845d1b586e3ca2e0787bedb85d8394508f45eac8b0507e9b703ff43c0915fa50d7818a0f08fe680105eb738fcffa2160674aaf8bad0a0453691db09e8a4b554290c316dec56890d9ac44098df19047a833dee68288c3952586d09bae9b0ce1b21b37cc04759a67504bfd8e9c2cc4f3c0227bedc60029cfa7f9c7eb43223e863848d8c9d2236eb80e83ba1440c3376972f8562199968bd4b5896ec40cc2bf2eab00e2c8a8fea2b9fb985602f63644212ad022c0fcc77b1fc4741e51bfa8554cdd0ba50dd9f4e054b6f8131fe455406bb32195a9538b7df7fa40f55a113d51a9588113dc41cf232f6fc6b668c4cf588d6636662cc44dd51130dc0730e4694216f30bdf05c32c7222d20a1c43b05d28155d381bc7f3324f578c072f66fd47aeaadc978e4667979fb338cd1b847d9150f26110958500113eaae02e59c28b1a72dc2ef4b3c5cbce48e0bfbf8370e8367584716918f5707094489c352742d268c308e01b437612a1fda56bcad7b01b1bb5f4e4895c9886491c0c9cd23a49162d1140fa9d57a566a5c1a4fecfddcc887d873f9d328a278f96162d3f699ff6257ad8ec773822007feeb8da7f93a3f3635d3119f073c9c0a9ca48897c8e4c3db594e40213ee0480fbdaeba1234903d9eb4e7f14ed17ec1e5ff88e8a75e68e20f8a87e665cdc3537944a451ac5dfd41875fdc5cb5e47c5f63710a6e6be32f8d0e759cb5ae17c88ed53750a74e0cea8e950981c396fd901724e7603a0ea593ac3b29df7157d9ac94f270b4f8c94af1f376c7a5d1eb3d5539fe7b6dc779c9d30dc82a807bcbced4ff9b651600778b5238aa3ae62a65d9929c3da07ed5e85115fbd8f20cf4378101d6a3b680b402977248141716695612878a0c94712cdcfe8dadf384fc0b2e5931b753cd5695240d82d6a3c01df0f284de2a3c22eb3d4c5e8b2e11aa4d23a34306f9bae07effba8d72b51469a16dd64fe8e09f4cd572b9cb49d50cc25b18c66b122bb0838f4b5e651c74db39d128d147af997c09a9fa2520155bb8a65b3695913fea30ed715e1f1d6365747a8e5336ed39f4a01521fe557511ad7b46589383326432c0655079c15f7f601a6fb8cf90b2cac5cf25ae226b02645f8e1064e38ffe4f6f8ff8d3729a18534bbfa3abd9880cb8475c63198d8dce5178a36956bb045ab382d87b7231fcc62cd26c10666e4def111bfa1503877ef1b6964631c3ecb703c4432765d5d7b7f900205a667cec3d9559351e0b25e773e2e6bce78e6f303a001435289e0b332ffd5240b7f504d5409dbab90cff2d2994e38fd34f2e73b124190f35d16f23401ea6712b385d83fd1f014ed3330d8fc131ce3d0e611e6aa312d74fe0fdca87cb91ed847db0b599a9dfb90ccf7b23e376ea431ba0fca87319561b3729a78ff1c5e2da1a857fb112ddeda68b27ad5218306feebbee08a356ff4b222ded92ec5f263785f72c81e8e9f3feefd486757449f577616405c51f11935d5e1cfb430c0e2af712cf9a635ba690235b0ce079a00829f6e6d679913cbfd6fad4504eefcf537ecd5fbb5257582da83acfe17586f20138d55d867331646eb3bef2c81e446ad2d42bda2bdc822dc3ed9205b6d88965e7ff0166361fec4d8617d8800e86f3e9664b7297b28c23d422b09afdfab67e21c11c05d0721966f0df9bd5c0e9dcbe749a238b80ba351c91740347bd6d7d97eae13cd7d0ee8b0422812429003dc94f049dcffb99a1edd06197f00342ec5a35f841e9d510c1bf65fa5801bbb12981c5fc6c0b75f688a412f20f3e1829a2bb7c4e583f0e75d1f219398199a4c7fc6f572619850d68660979d4ec383a5730b1ed1b78f6b4c1a6057e01212f8a6a27f8184ad8ebbf2c22081afea510f20a24f6a97a365d24e7fcac6429dbfd0d58e0e94d7b3d9eedc2c74b5674526b17a20b839625b7f53b1a7a9b5ce1c130a3958b1a88eef817eae67c432ff8235f9852eaa57fb1db90f96ce5b68ba5b8488fb68c96005409ae1dc2338d83927020419b4dd310026458290e33ebb5bfa101aad36c227e883098761aa113928f3521c36e94424823b4ccb83454150a22cba48cec3dcdda158259d595c030922b8b97d588ae0411a4605146fe8f027725281760e4bee25789572a26cd1db9534f03a998c43d62d71fd7b57ead0a0076bf69ab6c209b094cae6f3365fb62236a61f7dd8e100cd8f3792b4c07b5e6027de4e39f5ca1dc30d7e2fe8e0ec5f40b73ff034c655ef03cc627b8dae1f26771ed22888304b8656786675a47e5be2435f6b6d94524a0c9cd325e870f51ceb0f74e5964bafaa5f36c623e207ddc5740849bbbc71d0292104280e350dfd40232b1976e3f23921bd292b25233f2abad11fa2b631d645f47b45843611d9d449b46b71cc1e33c2ebd59e6313c00f2a251bed9fd7f348bfb8a25b9f1dc1cd5d2772028e5919208e537d6cd3a47f1e0d69ba8a33f4970dc34832041a254666a610342c4b28bc49bf6a7e1fa4662439d22e65e45b1484952e0aa5a86158b699b925ef6d232002a76e345d09a35c12c1038dbcfa9167985392adacfcb7858b97cb006a08017afcb49202388618da022c00c214aa61255548c1231f145a17396cbf92ac69b74d3e27e89bd903b96840b20746788c8cac53d198ab86fc6eb4e42550fe457083074249476488a565b0805128628601991e78b46893495271380e599d4922ccd96b527a53e0f23f3d930d09885f2f1271f5daa409dd747174661311f7a31fe9fce1c62c8946989a09739a7c183948e77279692bfc606f0fa1997ce5873e9dd54ce84a3fe6eba010ce6c60307d12ba6fcbcf809623037cc32258d608de14787d064deb5e3a08d76fc9b824d49f03570dc3e6fe4143830d52f4b309124545116ef2608fab19cb95b62d096428c0088461399712001cf6eb5f78701630cc8ae144aea6fd9d6c9d6cb01a1167b62cc32117fb380903f2dc114825d23010e7998c52a4b4e5a45d1ae8a5da2f73bd2bc471f1ca40961c7cb3aa304a31e5864c701c4664099cdd12d57b51bfebfd68c47feb9ef6b3479c2321f257172a008ecf064bb3b1064414d0df61a67f6f39b4ed2b022cf62b7fe8f7d4d84c967a4a84d3c65bbff217a5f66c786b4a4f71b206d6bd4d4f5c9b29798a238a5d9dad9deb055b83826985f15a5f78a7c2e0f49722741ed4df8338196448eed66f54d5b67b3c0794ad3892af99f1995f3aedbfeea41e147b23b1063d9e128217ac84f4aa466b8842697601014534f951a198024bf5c906f8b5476124e1eec2a37185638336f24ab069d914289792f7c416be2756b8c3131de528bc0cbbfad90421212b25cb19940bd15d46790ff1151adf91c8239a2f2a2661f7bef9778b16d5e869bf58de4cdf918cac4a5a764c943139077d2273167c7a20c4d266659126acabc8d47c511901b9f9707b0f79c32bc1a752500e61e702a63ba4fd30f00d7e1f5ec480ff0c50c86527748084816656d8ca97bea37a350876f8e6e22fd55d8c643c38d1e13765ca0caccc4bff2c4f25a52febd6437c03523c4564c774e76d1d2d39c01b886949d840b42db9321a80a593042724f8b11f869d9f61c7525701a51e19f87c1a4a191d48479f276b94a80ec048c99175f9409eca5cb927bc0512bb17891880f30a24c8a751d4747c7f7dff7e443d067f60cd4052965a0269f9f7eda7cba508842776354f6403371f9248ab369db994caf578f3647de2f89fe49d8812bf804e75e2b99dc413d5e36e1396b446aac3f1048fc86045a4f7490c0367d2e877d5fc2471fb2f2d47c40fb479898e61ff91164f2ba11b9384c67d291988615eb5a501bf1a061c172c379512bacd12b46afc656d846afe009955159cea56c740b8e5095083cc9ca19c06f0727c2d70f73819bb0f7511177a71c698a1543b1fe8aff06522b29a4b68f1337cbef6e6a056a85a9158f10524f5af7d7533d6605ebea5f8db4dc9d6704e43ef337c78422ac0336c224a87482706114b416fc03ae10a03d961eb054ed5b3e9b32e63acc3f008fd9597ec3e62d846ad29662b2645acf2816cf1f93e60314fd9c64d8c3bbd26abec5eb554a21e614b047bea841b0e206b22cdccf62f93229b51878af4944f013c92bd81ba1780b26e050c07ffed36da79dd669b603cac9d4bfbec889b1f7f645797adfa86e38d848438dd7da2a4640dc4db912e68269ad6668fece8af660742a343fcec895f909c96d52a25f20804f7e591d5b3564c0b2a5dd20520be7f5242bf6448c2ee6439fa2effca02b28672ee02e26d4c4ce608a9fbebec489b8141128f3ed20888cb55b76b481bdc0155bf02c56bdef3c64e881bbac20ec0a358f26d6419ff41bc819e72199c29554da2bcb1a080271f569f1c2e3a55dd4ae2f0a3bb102f95a1a61b01baa1b9d470b9ba22c105d71bff9c1fb4ddf0f45f7b620f789e99edf19bf5f6cc96b7b2bf512076594e48fcb56f3aeccb18c5d3db44841839082dac80c090f72693cb84289c8255f503a8edee9c263102c5be02a50c1273e0031f58747cb149c9e66b76e3afa49c13b2474ded2cf7be6cfa1a29fd04ab254fe91824443a0bfe82e1063beb13090c947a03dfa0d9d92e2b03a2e8a28f7bc3983618dad925d15a45e864534af658a3f8d23eb80f8768fbcf61ae2191ff3b41b4424053629708af0a4c40c3de773f4c41cf05d3480dbcc5303c00e046308bacf509652ffab766210a95b5d53df4a1c1250f3897d21133d70872514e08d9db8349e134991be99858ef005891af1e414f3d8c8a351312946709c2de80ec6d18befeaf818a439de2a744b7dcbc08b9c8460f9911681b2b04c188b67560c60f78b03f9eb65b0cfcf4573e0081f45a59a26fcdab8d3ca2552340d90c126da3641281a1d84dbd0c4e8944bcbada7e81b82c699b0f87c678bda5b3f8fba579364703d32d8e87d40c465141b86e0d1eb2a24cdabbcaafb95e3fec8ff7104b3b38fb490c8de3a3a4afa0ebeb85ea63f3d837302c4fcd77a700c0b0045696a394739fdc9a86c642893ca4c7c07fbfc5ee0355807d7046395a8f507d78afe593913ab112b4bb81a72f798d678335a040587aa4625d8101c1d8c5aea1819b7048bf7b1b56e3f423d8db0f6fe65ecc3c017b9b499fad7e0a2169561c2c6a49e3d68ad7dea45be48e13587e856896e96d82ed76cbdac95d6d33ede8563de2c2e676642ef9b3cc326759f59a098f21f93ccb1c66febe25d94ecfeae4136e4a3d0a7accd234d12a13013a0f2f40a05068a1e5fd825625bb6ff6f819fa72953d6e2616734d9d73441c627c8af04a70c832fc1e8ff319beab7f3733e100c8c6b3805c16ae203f0905d5aaec84821f20a9b4eaf21f34066327779b7de882b9f93bb5e4b8029df4b8e74d47dce21e1a7a30ba54f13f68fc411ff8132fc9c2e2fc48ca995e7664329adffaa8e4a2ca71860330153e1efff2b0969fc7db29d354cec41415304639c376b54f57bdb03db600dbf6a32a9eef841a474e37024671a3f4c0bc17053843ed8924711bf900afceb729afc6a4645d1310628f29a8e0f7c9c2cdc5d5f2247a6df38848c8a7d6b1728b358ec3704bcad28248aba4d9e2f0f65478d81ac58df88a77f89b71c24690733efb1bec928650b46e247f6e371e790140c4b128b227f6faa74c1824c4eeb3df2230cff65ba4b640963253b4b07c25b878ae78bb57c10b967ceadcbf9cf8956a2104b05988c9cd22c04bb3177b2d1ed712b4bd4c12a47720b07d74bf8e28f8a3e94d934257586a64e4855c0b0e9cbb1326664a2bfaf1b957f84c5ad40e586db76d63f5357a2692b24435838c06ec36a94e3705a70c7b3260564d65dba5ff3cf110201fa9ab2c762244a5843dab4c9d8c04e6d25103453cafb3706e11d8aa13a4607bb02d601dc1b47653c543659e8d007788fa2db932731de0ff7e7ce1ab4b6fd530d3d789db046759aa6e800ad3e78a5208f91180b66282063e3a58bd4613aa5f5de81bb204041dd4f5b74a615925959c1c67b157296c2651dcf93ce9afe58a002ff5cf84e2d2f3b70f3da35bcee10359fd17698fe59f140e54a3829903af56174c210e9a272a33ce5c4891150d07571d4a607ed099d0925265aaf5298737ae3a0601e474b88a67bb2ac23f73b9d2bcaf3ff71a31245580e0c8f05ab85d05f8a30d56397063738654db60aa60b5cc04fba9177c3c3f76ecb76e3f99a3cbf61b88859e90d775536d6938f1b8440151c588c25623636689fd53684af68b4301914efdd688682cf32f62763483c13f3e6c2a9bf006da8dc8f090f27ac495c47a89ad1e4b41dafbbe839dde87e9c44105eb04c540a8979526dc57cdc56092f4a7793692b166867da2a26de3daf5819fb2f6f4bd0fbedfcc8d14a909ecb8d85cd94b65c252d10e9f897991c6feaa40a02eccda85b34c04856c32517a8eac25a523cb6ad1b91654da61a7872d5986eb8cab8ded131e359fc0a1180893596ddd552e671d35b9ec5396ea8dc585251bd484ac405e7345ce779b623bd215d525bf4df86b570a52c11f5b08a0bc54af58ad43f8e4c3b43e344925b65b758431d2a5967b40410181d37aba890c7b6e16a19dee40b93b73c541b77fff00a35744d184045d3fee5274958321fa43e5182728492d0392be568a50b0478a449d803c4b3a81edaf68214f11a163b7511e539b99b8591a28c284ad08e515a3a45436165debf0cfb6aebcfe6d2aa11d0eef10da5696dee7eb700277e8012325ee645c9b911442877e97e5cf43e02ddf5274849973329c97521c8a55f389eb683f9ba081d654410bb9ea14b181d4a5f96bb0d7be529d10c7938541abce674e686423e28281b6a4d673a128443d59c5045872ae040366cf9f217e88bccf2cb9f427a3e8c1f3a0a072954f4144535d29a74de6110faf970b014d2d18789e719b4ea9313f0714065713e2fb697287b317b11e212b5d2a4a680c22ed5d7449c012bc17511c37342948ffad8927c143950103f1d03382a7f34c4beeae5043435c9ebe371d6992b1c230920d33ed46d48beb11047783cb1088c69fcdbd5d723cdad1ea78474cd6996a709ab14bc70033697c497933533fea046e8c3ca1687cf5ac27af87fb598e73d1ceab0eddb745610b9ccc39d07b15d2212dc808b353013dcf5109a444419d67871f8d03aa0458c3c49eabf48d368e93659b6a6efb4d941c30510222782e68160d97b200eadbf9b871370334613eb7eaaf48fa2c71996afb3dac379def222f538717833ac52e358f140fced1f718f59f1c02b6695d2556ff99a3869a707e22d93c151bc4dabfe07b15411cdd8a7c2d7509217125207f0d1ac05451fa028fb625f14cfab822e37d9ce5e905fa4ef58fa2ac2d273136fa14dc21ac48856cfb99ee01ef805608f8d2fe2b3858906f206c69a93c7ecc45e40da4eaf0fece4a6c04e4f5378d1d90cc0aa59c91f307a868ba7ebfce8a4e63957da4364ce6795070dd8c460a0d525118922ab7f24e14e7a0556a9137248775c5c75258b44849e968e854da0b006d28204f5fe67b2417c1cb916531d3bb04685779635d68628d2555e2121f0d11523b3cffa0c4bc4475bc3727c85ea0eaa128eb0131cc302461d78394e0093eb662f1e38ef40ca4568f4712580c57369cd9ed39f65811a59418ef871da570fa2983e0b95a788558700522d277bd14d3e490f088d16698b67ff939c77023dcd4b5ced45642f95ae8c5734f03d511370591ab3273351b58c06e20b17ba6d4aff6907f3511ef6d3d5293bf46f9d5caccfded006f10e0f0d852408f88043e3b7c57398ac2ccc9bc20cbb951e3540c2284205388971ba698bfbf89e7b0f396f5ba866880868c68f22cb3a2bc77fac26deaa46ca9e71b0af684c3623ac898a068989973f1187499a1183d4c78ea93927240ec18f6efe85bd6a08f184dd4882e5982e76bc53c16023d9d494e99d7a718bceff38574304d7e0007f1aaab7ed4882201679282e8e34741b9384ccdfaf6848db5dc338750d835ddd3c16a160712e840dbcc5be2932d826770b61c6432e657025c99288286e94e646c27c349d447ff10ffe24c4081afce7fdcb12b64601246413c3283701a42a121522416331e2d0f1ce670cbb9c5551a3b63361c5feeb21b916d7a10e7173d77fa1d8d3709d69f6a62b92302e2b7d9e4b83861e100574c8b6199ea19428a42607167ba3cf2ce8ce8fc3820551d7c9f074d85377f0c185068d7d13773362f3133298c708ac294c464ff4b760437f2432e5086f7a92a15bf7f1a9157ab6dfa249b98d45eefd5d0b7c5b8a958737acf420abdace101935d53d621f8a9b197d347c27647658655d5474e22db3b3e74cfc5da53a9c56d62142af4a0e04bda4891262010cf1e2ac46c744a725922c5b97088769b9c378a29f3ba02d0a127641047273a76700d031f7fbb0ec881ae5725094ffb067ae4677da4f42968e9d1ef80e34b8dc4a12ba0088a79100c027fbb7212d17f6f157bfe894ce29d942e678b8b5a33f95b843c72a1455a64be870e55c2348306078426e2dfd1878b9fa41ca28b1b920c3c9b4214b1469cacbfffe64e182bbd835c57764989987deddce0a5503b6279e8f844ae4a8d3658b4649f4f5ee2770ef18fad167f7053077cd30d8000de6bafc58b4f82f120f3dfe23ec7a44233f9b853b42d0fb00cda3a08e389b2a559690c220f5173281ba24f3250e485c6e7736b6ba9f485fee780ccaa8497d389ecc84557b7a8b00cce373355f08b886aba354080b4c9c2ad87e1110ec1925e04725c611706a661c587351c40b57c07452f56a62b414dea261738fabd35e0b3929444f9e185a8380c0dd2206bd82e5a0eb3aac1997ca212a878cd169f6896487ae46f5a233dd0d4a57a645fb820ffa336e314f883485708b95c81d96f83910d656192759b4850b942091c5328031ece40a27167827bb05a9654e4c204735d9838e4c68a67fea70c8fd211af384f365ca7ff75f84b04ce3e9ae65445fc8cc897ea51070651512c3912f8fa4534d04422cc0276179f5c8039b4f8f7f8c70f6f83c1cab1ebbc05bca1a1d6a027fec2078a6ba52c70ad6f215b282a10c4948f63ad834b074f44b03f3c63ebd739c7c101a6d0b6f17b197b74ac1ba865f67e759bf77f3fc04a410eafec98040923dfb038ef67e357eb3c6f4ff9ccab7c3f5a0f45232db9696a3cd9e787f69e387982151589efebaf9936ba05db673f5f4fa919645cd0a6786128f69f8968aa76da079393483734e89aac0fd757f3f5ad611da99302b2c37579326a983811f4b5acde376daf5488acb9b38e11099a49791802665cb6a26758508f6ae046b252252e17224cd1ba9b31b4b42b6d003f7a7c66d40f1160f9d68c27eefb370a211434bcb976503db44918b97c3adc9bc704ff3ae095da56eadaab94a02f7a2202ddd03677bc0d3e896773d6515128885540676cb79e80f5d4aba2e71ee442f48cba8ac30112e0bd0f02b35622bbbe8f8bdb59a019250c235b4068d5b5e26c95fa8a8eadec42f0f80bffbca666cf50715fda059267cfa08c17b9b40240d56153e415f7b9a52e34abee8464b8581c0ef54bce4a35698f77eecf70f2217169454eda7a5dfc1c425d29dc50d13cfd6ded5bb99585d1f1393be5853ec3d999f92045f776dae236146392f40b2b40f3ef78f064e92476f29f924d9c29042b649224b4093779224fb7ad60ffa6d4962947bb0b123300d4f82cf8974ae43c11d285e5492c8ac5c0b056c3740fb1d92dc8171419a296407527fbb4742ab1a72f9b69350c5558289f186b8115a9bf603954a4afc90c74d06d8b79054300bee29cf994c3aa0b6ea5674605bc94b371e738a81bfab0eff76aa86bcb1c403bd2f19a600374829194cfb8a3ae02ba91bd63d58ec94a3109a5ca08b90da33b80e306ff7910ae0c4e008805286dbb847a3130298b220967d00f054f1f70dd1626f7632869118c39e439bc0b1c1d2cddcb05e22c7a5341900d79805155f07a53fa62dd421275ba3e29364f9c7c08212fcc68b35a72e2f2d088318e601f3adaf905460a0d3c2ebd98b47c24caf2a299e23038746a379774079e162b597e5bf2b6ce4984ac4b87cf73e52f047010b80d01fc8675f6523c87c5a351bed238f70372d1d5fe56e7a9010b6a0e96f3d0651e0dbaa3a8c187816a606f7747aa4002f179815dcd70d83e9b7d2a6fe11c12d066e0677bae18d3bf220e1c9d30dd8208653108bba3e93dc73f2d84d4b13522716778d405c1290aa01e14437b4f2bbc273e3f7df11c814624b2051fd58ad0766cd4ddb2b1f0e111e1054a9b951d6ffd99e2e74bd6d78078f8e6e6eb081bc0c95e957988d7a449430e49f39f46dda907a4b07288404a07f9e748250f436db70a70d80a0a371d88d47e4194fe674ca6701fec64a14afd847037a6e126b4f14b5b8513cb3ebfaa7ec619492ff80a89adafc0fb3feb50d9ae84d91930d251335e7dc2f476c849784fa31d3996b7a3fd9993524006c9a307be3425cb370794716ccfc95e8b13f22293843b20330d48ac823966e82b17180c21103f69f5e2212a9cf8f14596d3f23a94192b6286612fa90d59a2602507011e0ab70c692a86d3d94b4c40f4daad23b5e630e22cf9b3d0567d726be0a260d99f1ac9a67c39c60a0bbcd718baa9b67ed0365b43b99ecef70c437e15e623a44154a5d67912568316530a96124ecccc39d72062275ebc226783bcadc04968a951ed0ce8772069176e19f76cce2a8462e93a4de6b6bbfcf83811610ee82beaf6298b71f39ad8d1e091972cbead3f1b0b457e3eae5ea9844eb171147ab17c7f36d1fed4a0d9279a14406c9b10cb2cd23ef4a5892a1d6f4602cc11141da6d2471bf507b5885e6b623f0a451780a4d711ad5c60fbcecb845ff5179a3c44d6e237321f73bd8862cf1939c5a597c33d03c6d88dbdc829ccae126b2305d8211b56b72c63dac6e7a112cc0f3cd80ca24f8fc49018b9bdd856ffd3f9e0853260a84b39b59572d505e7eb591d0a1d1ab6c8eea22f26f2072c7cf0fedfa7ef55751a5551b4ac5be1bc7ccd5fae164d05647f89f9e5e076b186232399a24628289c50dd874d6546e2104d46d57c3a15c208ce45da0ebb6ba8122609278635eb1d609b70cfc0d0123ff1ee515cd2185e78e8b2e0a0a0e8e85f47e26bda0c255046709c0325f6d4f540427a461595cdf5c3256acaafd1f37d9213d505c1ea520103d4e52b5be8f1e1406370289836a2272f0891635117542dbc138ee825a7cbb2e244ed78c27b1700b462b7000d7c626b67c2a9b0334647b9cf93f859380e2026b7b4c5aa84194efd7909bc004816401cff006305da3ef95614ffd10ffb71cbb17be29b0322d67bcdbd9d98c25d21bfbb0c0c489291437204d8378485192f384561081fd4e6ad75d42ea062c979597a3cf6d6133d2c7b0998f31d104a1d134f9b09895d27cb50640835d405777c141e91d75df582446d6ac31c21247f74aa39cc9156833a586f22b1823c5cd4dd3612206d97ba62f2ad3577428c34710329c9ef5aea81ba2cc9609dbdbceb1e7ee2aecb0d9c3b54d1394232b5195f40bd02d7f31076ec8d3cb4718fb27de796fcfafb9cc4c8960c86b1e209fc8c893da37a13c440974233ea4c1d4223c27bd0ced07952b6a04436edc45691bdcaa177197d1f68fd9068fec113631e1ff49f8fc04a768b449db16c3094c9a67a7cb24aad01e7179b97ff920a991c51bd8807515ccd07acb2e89e230ca10eba79849f0dcd81deb22b3699b27a4b5782e85821cccfa75aca691c3e58bd96e9a05e4854c0dd9321d1e0fd32908212eafad4a47b4910768bc295923764525a02fe5e752da76003849d7d7c87ead4b4c6be44fc9fceb263d63f8f1170fce7d6f56cddafb10e3164f501aec3aac37e0b71ca002e4f38d2e5bf528788dfddb43c3e1cbc275ee3d7193affa2d22aa8919d4a439d1d6605470e6fdbb9497c9b8d4c0ec605b3785b4744a84b1e8c19d796025d737ca12a761fa0b40ca7c59c518c6813f3d5d7819fc022e625900f76b76b0834029a8b25ea6a86094558ccc685d0df9729bd845586ace9319ba900fc2d9b2138bf8e0ed7877b3191713b568a7d5cfcc121a7f09364dedbaf8cc5b0eb2d98b2ac44ad4e2c2baf61dd4e51ef985bad35f8a495a3c49f038118ca240cd3bc265be4cc09d5c2f4101fe7e546e93eddf09a2ff1a964bdc4a3c2f70d72c665d3665e5352d77045784355929f1fee9cef6c53433b1447bdb1ca79ec596a81869b620fce963a79b629134f4967a62c0dbc595305a0891b11209b22782364f22b7cef9ca104fff37c6783af42b4222016ac7a1a71957143095e16ff8560d025aa03f2065bce8099964f5e6acf2ae9092a860d53493d19aa1c96b6233f502494cac43952feff8940d24cf12b65cf5feec99f8c6292d635a9c6a056f7073a52d8f84b884012e3cfebd2afe5aa245fd3e61bf3015fb236c486fc755be9288a5a0bbe2abc7470e5b2dff2ebc905b30602bec59f96615d20278cb9ad0ac13ac328dd76aad61a411633686a05e75557454def595edb7a983159bf3c78840cf7b3d2b2ebca370c2d8f5929dcefac84743499042b37dc62954d8bfe870c314ddde63c5e464aedd28ed7ead481218113ec4b6fe417bf075c0ca4598a5e667786aeff92a08d1eed84eb2f815448bec741e89cd80d5482abb42d5765abec5d4948b06d6022eea2c0d6c69a11ba35dfb327fb201589d7675d8c5bbd475ed7b29ece7dde49e0ea1f447c0107027fd81b1a24f0933d0237fa03e5850151f3216c49715fae5b7707b7ec4274cc4f12cb63916feb288203f9eef97b1d2e840e9e8abfe7cccc35515b5be1aac03c95654f111adb74c672ca6c358213ff61f7af1d80366f7af815a2c08c882c88a07ea93a92a8b7ca208dff97661044f9e8ac628081c553ba6157e62bbae6be8556a34a18b8226e4c4d0108099c2807903c0f393505ae9c101dee19a11efbd454496c171895d8bd79e96fd2ca916da381aa1bd4a12424776bf3ed4f3119514b7da8dc0d36f4a9428acbc9b2b75701d80245345619675110acabbcc62e2ca67ad9415814e990a93a7933b21c6b375492c24ca88e3f226cdc4812e5a747d2f051d16727a1363dc910f6ee8a6f333c054dda343756e58461ab947c11818d63cd61d9730e27e08033de25ab23e3a8b1bfade6b52f8dec622b75a64245ef55c96b0c9673cf8f68091ec190b800468c606568cf9e14492b23e4e8887417468b087d831e4a769ab6ebe903abeea78f28d2986a04f51a55ba0b5cbd3b3fa8137b3e1477608d44b211a638b35e66a6159d4425355203f800fd854e8d144f57549ac7c06c9dd668edc0b2574cecfbd80b70e7de54dfc0caccc6c135abf43f85d4f06bd75ed2912ef9ddac03083a1aa8858afb84ce2bd6c9a7a22de668e0649cbb2319921ebd9159f4430b5c607f245a0c1029c75e56d2ebefb5143aa12c1a860085896ed91421aa6ed01b88779840db77945ce58225da1370a74f40b376c8a5d398ac186c990ea8194e97f3e995736a384257b4e7f16869eb41c160af1ece0dd9d92bedbb6e69468d802a87b62789b4b006a8e7e53e2039b8d852a08ca94887e86f6b110091869db18344212def4c32b9309d59d4872a482db72b71020e3855bfcb3f091e32bd594ba7c1511bd9a5da96e1e4130eb20647ce6da44134948a9026f7852ac57ef1a1f8d4695b28245edae556f18d3068818ae6c51d6289b80a4ac021db0601e0f172008146b2b6db67970d8842acb900c922c3987afb6a907f1ad02e1bfa75769801e7ecf1e9d96fe241eae5a1520479976e55c39fbada0f6ab2c3984d035a23eacf4c458776d2555860269c1b7e64c6af58d0839dbefe73cfeb51cc9e4c8e0d686c054850cd4700892efc7a09064815b490234dbfe0aa5b6cad79902a0a490ab011782ff0ecdfcd664f91c06337bf5dbfbac716890056478b6d4fbb9b527082e7921bfa9263770b0b6ad9b186e61d985097004864144303aed0bc4e193b88bee91a12e8ccf0616bdc87fec8fe02573909df0686dfbc3269aa62b1059028ab259e4e71f8ca40a252794ec2446f9eb167df0436a7e9269078c0122503bf3629fe77f07d3f1d526cde968ff9ffa0eac3aa2ce7d8077915a718f5fe02043eeb365123691209ea85d1371f0e26202193ce2185e660eee9e2b744821500aadc81fac168829b969b2c604493c669a0ee00f0a8e91c440e64cc0000a3b411086cc45ec6947b96e337cd14b775d59ed20261064a37adac1429e29c5e344daee874f7462c77dd4dbaa2d3b16e834cfa2514e88dd71321a688900eb80ebdfee07d43040659c3073f61ecdfab1f01573422507c3fbad70319212743bba7b8226407bcc240ee9ec7143c054d983c31615c7cc2df875aa53a6f563a9548ace99e6faa6150971d9df09286574d9c908facdc98574ff6b1998920dc120ff1e5e406bf83ed65b76a238e25eb3159664efa90aa4711565f72ca480635751ba2e9bb4348e9ae7effc4bdcf71ccaa751a5da748c40641945cdbac2328ef4b4a99ab005cf05de26e28864499dcbddbad1f18d55b33919c4a0d779c6ac669a7f43e3d0f33e03ad10e39996d9ad7f0e5e940e06c61912402ca660cb6cfa74427036935365bceddc9a0b386ff90051dc059ec63347ab595739a2b37cb90844675960d8df8114a83625645e0940dafa4b9fa3ee62d5bcb50c2265137b6ae75b3c119a399240ac22c349fa8c04938e73fa99bb4b2b87516f39f7f774a9e5c1f96f6e40961d22c8d2f4ba833590ec9c265efe0ac8c82317266d7720f80ecd55b74c656e52a57837290e7a2a58a867e87f0d4a3efd620856c5e22a9021bf0a06c54b4ad212be852bbd56968b04105ee1a597dcd4833eb15951e14be9397e184c1a3d7c62045e4b67c8b9f427d95cbc28a01ac827392596c747ac4c4c416b2002a2738ec491cd59bae4ad114729376d7713baecdf9eea6b41dc582403ba0007d4045a9fa2bece6307cdcb34e63a388d927dcebe7e06bcb7aa41d689f15eedab3e79160775ef4a29cbe094dc1a9ad5b85e03219c386a9d06c129c8b27509bf6b7720eaab4c795a8a9037c84b68b4bf0205f9441e50d216f4678ec6e69ede0acbc3e6f1bce98a1036194cf14f97f4a890e82128fb17c3068dad4b33351fd4c9c2b28b5ce01a10275d8ee885719d28d37f4f329854d55ce873547849b1374ad8ee4fabb1308bf6ba14350e9a6eba0e40a661450c20a9c80d6b9c1de4f7f754016481f77c2937e4aac62cb0cd55b7fc63966dbb66cb4b517d8beee9cb3bde8657731d6f0c3eb29e701636d6baff14ff5bc33629a6c79a882c9b763ef036525d6f22fe433f9d1b35c1dbbe948b86ce7789a73990ae75f96ad3c47e0aa325e4182d7ac29c18731ef0d39b89d86ea65f38bea7af2a828fe9e46c84b4d0657596f7dd7c8e714aeaf16a76fc059c945b40d948dd32b570e1f380cf0e1cc2c5cae0bb93acbdf9421e747cbd7273f8bc91f7a1bf937c4b455633bee56259e09598d28c9470c7ce224fcc093d56f10fdb07caffb70c75bf072d9c7eaf4dc289173234c30fd860f0ddb04ce4a754e8e8f3bf3b5f0cbeba346042dbfcaa4f3808866b36815c9f81a5da88ef7f3e1c478c7f8783fc2f59fb156980f7fa844c1623ee387cab93656fb3ca57cdde7b9fcfc8b15cf98d42ecbc138afde67d6e5d5df0c363343eeef1e567f9cb3b80f28b603b950cba0fdf456d460fc0e72d20a15855f675c6c343ad7d4c02c25102e59bf2ff32f2fd820dad9a9f50a2ea08991ca965cf7b4a2c6db8fade804cdb946e53dbf21bfa84afd7cae11a11bfb0770bc643f788b1703bb657c1dde2feece50d6268e731f9fc448fcf793a456c98d8514b736d16a8ff4c5c730763ca7c7cb3d9cf6bbe3a0f888936aafa0100cfbe23ab11a77c312a3e9f4d0016cb0cecd66cbc6949b4408c4dd3bb42c05edf4438d67839d580c6a370755e885b2b73f188c1440bad89f1f6d7cb5eb084359978c5fd7ecae5add2247bb63b53ebac1b969377083a1fb48a54cd8cd5269900dd6336b5a4d3439d3bfbe649b3de79ed7eb469bf5e23e30ff1418d8b000e207304744d3bce05f87306d313e18e699fdbcf4a0db230c5ad0b92dce3439b758fda2006960ef460a53aa8d5e82264c3d4c6124ba7dc4f662e8e020c78b75cd19fa17c288dbfb61999891c8ea2145c103da70ec722506db2c8dae8c5fa9329b23094f354013b02ac964f1f45a1169e55585daf661115767f24437d3542e78269938b7519687b825b64526a6c1f8827b3f45f72d1242df6bf880378b495954ef6c3169eb983d359ad750a6bb3f7bc7ed6e8a7a7e32b19ff6222bd2276aca6b6f99da87b7b3f3d336bc27b3bcc22c6a4c85829f4eb2b496c7428c94b767914bd70445562fffa2b1a8494b88990bd29bd88aded2d93c83f4c63c12d494b34aad530323d11464aa1ef99fd9a86dab89a61128cf4dddf080937a95ff7359c034147ccbacdf526ad51d5168d696e070b300e670aade5387bbf93a42bfd67cad6cb16f6907927b33f05bac22e8d1b317119e72be9569f5ac8d19efbfe34716686a2ef15e8a5e907fe02f07f10877f77026a4f30d8fd1300576388135033efd37b4e4a0ca410e94664caed0407a91ce355260a9c61f6ad394d027bd67139d4258eb08a2b9b2c8fe4bced4c7942784a2deb72e1b4c59f898c1e800a5c8a932de7554a4a0c83d3c969027d9c2ca63f404b59e97eca2da5a48b7f72ad61046bacd17237928aaa7918f7af20052afc3249b4e7d821f06d6af2d6462559f01bf98736f4f48d9ee780204be9ed723e5df6c92b5b2d7e24a9180e698896236bb27983811021a915f28c99388522f069eac7f9c1ad6277af409d0a90c439a6a0166a3e1d6424bd8c3df632b8d7462df81eb5762ef5323312c564155e4d721239c2eaf7f1ee6481891189a61781ec34b4027a4fe6745740de10710e19c180312769037732caa4997ea34c6fc25907ef209c75bc51471de23f0468e35c6dbfc3edc61df4e8840212a9afeafc9853b7595b0aba62ca1ac6b8db33788804f545fd6e611ba34d424b56f69652262903260750076b07a43b3393879b899222e6a3ab52c95435208a2f4cd2858109036ca2707af8e89a60ae29e67bf0291226e9b65093db92840d3e7d9928e2835626a32999eaaacc60834f9998a4aba2c347b65545f75b37336fd8e08b6092ec0c3d2171c444a9323156848facaa8a2e1636f83626c9c25093fb13c624c3c2d8261c7ee23df83526caf66019800d820ed6ba5d4c926d199928f6c1c73eaa3250859adc07c15f916780ac1dda609b4d00c80d06007283b92037d80869b3eff7407ea55992b12086bf6d2dd5b66dad7d3f0509ea6ddb7edb361422f9a36d324ddb382d3e90a6691f4dd3c4106fd434d5df0f59741ecda4b568a651336926ad65df0757701d99a622ebc8b24c53d9f7b30a0cd29a015b9d566ecdecfb5f8a0dc555c1a4f655a95430fbbec7d1be6bba2da3784d2dfb7e27dececaae8a955999ccef735810ed2eb718db9a69b55a33fb7ec851b20455f6055554302a950a66dfaf9baeefe19a67d6645bac69d3f67169b337d3f8f0f9906d88b6f75adbaeb3ec138975554799c65f94949f982617256ed48d986d56d90cb3e4fe2b933996af207e55c6e4a1fba106759ef15096b9e83e58cab12aa3f9ce3433ccb2cdb6d936c32c1e1cb27888f2910f996646a6698c44d3992aab233cab568592bc1b6a72ff8e33d94cb6af77e3da1feb4cf3a9cceae833b9e886923e144c93fbf753e357c2b3129e7d2a9825f74b0f0ffb7e477ea52b88f6cb90258a77b242d6be4f638bf19332c7b6979feccd55758ee5191f89fe7ea6c9357e62f3c357f536439a276ab90dfba6d8da9759b62f9769fcf6b79b247fb4e4fba8ffa0411517ddf734582ad5518eb9e83ec6a2e839460204b10482e8b7df1e34f9c9745a67c9b59bd3f4e5a1fb3e680a73d17d12911e5d741febd7231ebab7a68ee6ccb13aea509b63b992628b8a8f2aaaf4752aaad6d4eef828cfb8e8fecd3132c73c743fc76ce81af11150210652f06979022f440ea267ad0c3ff97e7fa191f805d89e59d813c60b37765b72d691ad2465e873086258cc1637fef0c1f041f1c1f031173ec83d0e1feff0c68f44066249b7e7236142dc587c24321073e8a03bc7834258783c1cce0a0e8b703ca731fc8443e2e738ceafc833389ce7384e08c77d68a7784e0a1d76e38f41c284b87dfd76be116efc1ea7b5ed91dff4936ffaa661186e21b8811b88453e509724bb1c293f9f636bad9581e077f20c5046ae8258facb5f7e12c25c66a2885fc5503f452602fc30244344314411129237423bfc303ca9ef2e3fc9c1b53c31dfa02111e1e3cf36b8c720f89e68bf82e4f774c8113fc41c073ee74530a7840f860f8a1a7c2e7cf083702c8262c8f93cf20335d6bec18d6d842598db775902df9e7fa116bf6eaaeb16758cf0e97b5f9e11027e0c0fe107df0bf57d50634dd284b87d8818227e68838fc91091bc11da6048c6f0108cfa89a2b8f3374bac8c2050e4e0c8982829befe01264ae7eb7b1d9d44b8513c47a748e11e738f391a7f877bfc41780ace2b413787d339b8c78f4297dc8bdfe51be1e3e7b28d2fb4f664c39e303099ed85bee92721df2cc936ea2e4db031f546bc8e1b19b9a0e7987390439625d81c89b5d5aead6069828d3d048a2148620fd94f4689659623cb137c3036fdab4b71538fe9ebdab77a290fbd33d76a6749176ef69db391d29e24d3a3323446675e540eae9928f42bf95f7c47fc39017ebdd835665558f67daece5c749de43e7b5d7bd13dee1bf1a755fbfe952cc75d351b93671a777b64ad29f3be1f2a41dcbe7e9ea35a534513c55a930b8e2c6de992f73d2b763c74dd4445f7c7511469976754f2bb9cef8569deaadf4449f5effb0ba6c7608ec0bf5f7ab862976eda4cdb146dcfe93af3f6dff6dae6b9cea81a8e130cf15bd358903841f4b83ca362ad6ad7956570b76f1a9a41e79c25e18c12d3202df5595d5b4849410a52f80103baa7e9a3ffafa5d7420081bec4bbcb333c1068d7d209886ab5846ba9966a4b5559988559190b7afb15057314a3baa032610390b6321eb2313bdb3686854d96854981964aa6aa025a61017d59776cfbdef68174c843a00775d43b10489b6aa9aa4441e41eaf6a0974837afdb9b76f8441ca8279b4f3424ff458d82dcff83c61db2f43db133b3d477635e7c8c2aac852cb84494b580a7b1c3b2a88e17b2f36ca5372bcf7c4f73ccf866ff38ccfd31225e114a8609e80bea33b1def3b0ff23cefb5f7efd1f81d7658dbb08896d1d8dc887c100ec2dd635018e218afe52f87a910d15ee321fb5abb8d8b401f827e090c83c9c47ab0562b0b6bf1a39fa9997964343637dbb680c164621d08090f2da1e3290f9770093f29f12fc1b590b1b03ab22a9895e96cccc22cac06a2a70bdf410f75a12fb40785a9b1ab2574d81e7564552abbea2e55e1f7190fc95cb4e2c54505b21f4465b1b1f53ee44b9aa2299aa22d21e33896c68fb632310f592f55ab982a859016465330da44ea6a1e16479a4ad11ea9d408365c2a215147242eb22420f0136efb4638868c18314492173030c6b8754f1f77e106981f29982dbcc0fc7001a141cb4366edc04055338580927478a83abab1232809096a521fff4096d807b2be880c91a507802c4700902ec81192860725dd555df1d05a6badb5fe99426a3df2e48f905abfd6da456abab5eb755759a09991f1b1e99777092323243da9ba537752f5f0ffffff5aebd7fa59e414fddfc3ebef419325dd4ffe3f8f1e34dd6f795817db44cbb2ecca06416babea41fb26652d3299aca5050804028140a0ffff7f9027a73c08a4ff5f3f59d20d224120500b4d3748db15bb02db62775816db02526573ac148bc54a897c3e9fcfe7f3018140a0cf9853409fcf3fe81ff4f9fce7f39911d1747f66644fd8d2acc60c20504c44fb6ea17d7b1c6ac70e161e8fc7e3f1783e9fcf7f3e9e1539e5e3f180fef3a00f59d2ed213d1e0f8b85a6db535915a63641e615539ff0f9d41e35a89a9a1a54c8388ee3388e1e8fe73d9e51454ef18ce3e73dfff19025dd23398e6388a67bac3b6aaadaa0aeaa4b55551c783c6488f6cd42fbf6708b05b7700bb75854808080808080808ce3f8e308029253461010cf8fef19c9926e10120464a642d30d32bb99435da92a7418471b9c3ae1144ee1d46945a7d3e9743a1d1010900701e974720a48a7333ec88f209dce773a9d17dd9d174c0b35b2d80f1010d70aed5bc56c65369bada0e070381c0e87d3e974bed3e1fc4ce9703820df79100ec9e1b8a0d074735c5e841003d383089d0ee932b95c2e530a5114455114391c0e4744915338a2d879ce77386449b7488aa228fa8a9fdc05aef294a3fc051c0e69dad4370a958a4aa5a22a60ce39e79c45517c51cc3f53c49c392f3e47244b9a7396d19d35a5a16750a136340da24867b6122d6da5adb4956829fcbeeffbbe2fe7fc397f624ec9df277e7e717fe4f7c1842d0a8518cc45a5903365c1480083c16e3a8ee3388ee3beefe3c29cf2715cfeeff3479694e33ada4273407bd017ca83eee07359c2c5c5c5c318638c31c771291cc6df73ff7118dfe01b5aaa038a9ea8c90e9bfe9c6deabb33e9b0d1acb5d65a8b31b639a7606b394c96d45a0b9b32930b3634335ec0987c6d1aab943447518cedbadd7befbdd75a6befcf147b2f7efb98de0be3c288b1cb016cfad5e5d26201b1e97cb1f9f642be893b9f3d7f64764b88c16a91ba957bd4ddcd40b77f4eb92476770f07bb7ed682e8efa1ea77abbbe98fb8d46d093cc432b43fdf58ebdd700c9135b6de55bfbc230f459a099821faddaa8e163045f7bb29ec3ab1b0e9df2f453e0a838487585ad4aedf014a6ff0c3892cb85c2e97cbe572b95c2e279c70c2091f3e7cf8f0e1c3870f1f3e7cf870c209279c70c2091930c46cb18a1eaadff77ddf2ca9d343f8c58b17240db73f14bc3952d26fb1ed879ad8a7b83ea524a663d8f6ef24d189729f527f9a532889490fd1d0880c25e96962dff64065b6bde4676ae72c855ed4ea0c6df63f76d45efb6cebeed7de7bdfc6b631b8f6ed3efffc13111b41011ffdf0b3aec6d79eb0f930eaea4e527d51935b61d4e4ee1c13bf9288458cbdace7d6becf5e6dc35ce77d190c450e0acbda767b1d10152b460f8b900fa885c86bd2ffb78bcf56b7b12a72f1d555855152c8c2226ce34a3fd58a496596dcef4e2b982621eb6bc1be1fb236d806f313191f9184beff417f2d5fca4325917492aa300f987d0901f061e8e2430f0683c1c2910fbdd92cece1436fb55aad42f243eff50af5871e2a448561f81f7a2f2fa1c887dd6c369b855f4f1e4b08fab083c160b0f0f361676313867cd8ad56ab55c8e2c3eef50a3d1f76a8300cc3f1c3eee5255cf121379bcd66a18a0f3b963004f99083853058d8f990b3b109537cc8ad56ab5588e243ee454dee2be47cc8a1aae8a2425418d20f43ee25c430180c6613be082609dbd0d344113f7c24fc84fbf08f9828de6a15865f848ff0aa8aee2b7c1b93845f285448e2238cc2513f7c0967e12c9c85e177f8250cb759183e9d24cc424dee873f4117794608009b7711238623b0190c06eb0124bdd5cb5b792b6ff5daf75fe7f750de8b87f2501eca7bd9f74544be16338f65369b792cfb7e0b90f781d9c060309b7d1f14d2b1e856af6ed5adbad56bdfff78b8b143752f1daa43bdecfb212bb00a6ed6b184dcace366b38e65df6701b2753818671372b08e83c16cf67d4f0a0d05b7e25e21b7e256dc8a7bedfb232746bcbbdc623814f7c2a1381487e25ef67d4fd4e1d3310cc1d309660383c16cf67d51fbf63ced3db7c2f3bc157ee1155ee115d6f5b38a8a51f805a3300aa3f0cbbe5feb6390aab75d577524d60d46452fd49fea6bf94c9fca579a25df0aecb26c60d8f7b34a2cf10ccff08d8f7cf8161f6db0e996c706c097f625005fda1e1b7c9bf293d0836f7330499bcdc89776071b7cbb63a2f4f0e0a6525993ca9e541675e3275f8749da5a2d3bcc260a29e3a3cd34436303f313cd8549da5a5abcf09a28222b1f6932194bd692b936f879f06b1126693bc206bfba4c94160f6aad56ddd16a69f1d820e8c1af3098246d66a6c660835f57264a488d8f34956aa6aa251a3f19d530491a0c0c1b36f82e9b282c1ed44c2f93cc4ccb4f3c539824ada5a50a30136585ca4757267391ad64ac163fe93cf8ce8349d254dc071b7c4f4d14150fbeabf8e8b67c850504b9c30c0fdbde83f1819fb5fd4fdf7de3c73ad24c2eda1e63511cc7f2439ae924b43d976f50f223450f6d1bd74dabd1d18321b0bad0051c7401fc0a7e05bffe40d5f77777cf4d88de6c5b3b0a810dd1e6369db8cb3c44d614d9c724ab3aeb92acba82a9ac8aac7b3f5615f1e69df4150fe52f9d15bb356722ea83f7bedba80f9221f7febdf5da223a6cdf65a2387e2c077d5ff190a5a4b378b3ac3195a6b6668913c4d2b2e4f02fad4a6db965455553f736dbd34401dfbe6562a284e287e1675d8a6449bb9cd2cd0dd2af330f59fa41b86b7b53532db356ea479cb7ef4d5d5bbac6b8c863b5ce3ab2f35a457ef470263571ddcfaa628ae5d0515a966d2dcbbcf3b3cc679c264fb2ac2b55e5c66626db10ed11583a422b8d876c6b96d81cf575d0d44a0efa293f51551e550813253ff819b42c5b9cbba46fddeee0825856144b4b65db10fab16abfd6380ea6c8be0f7010c4238cce049f899575655bea31bfb1349faff8c9e619b47bbbbbfaf62bca4f4abbc34f2c5d51174d4db3c45217bc8867e488f6bdad9ab4c77c4656472e2b8d1e8bd11a5d5758c4b2b6768df193b2b6268a15aa8b4bf1a7fedfe9b969ad21f54b1d52a9e72b4ba7bda6bae227d8d6f7ea9b2dc120c2bf7afdfbf5a7c64129795d5b9b12918137e708f5c9825973c5cb2947fadb8f323c7354a38ab42f07508ab6a6697ff5111ed2384ed3b86fef5b5b43e027f3b53fa2c6385e8d23bdb433384e9730b625616896566d6af6278ccc8df65b08fc443b62bc559c23f7da7738eec7ad8d98c31cb673db020b70f0c25a6badadb5565badb5f6abad39eb40b4d65a6bad45fd78bd5eafd7ebf57abd5eafd7ebf5faf1e3c78f1f3f7efcf8f1e3c78f1f3f7efcf851dd671beedbbff6b333f0e657daf5c9d7faff1f04facfe73d9e1fc70701f94ee7399c17c5cff9bfef39ee317e6bffa6f8463edc1aaac7da9593752b4e4649dd899ad41327a35e98628a68c8a67645c681e728836d9eb655775aad565d3853cc105d3145f6071e3dcbef25e52765b7eac2c063d7ef7654af255b1a9b8339a22e467c697fb0ad102c121cf0a5eda1eb30471456c4971605dbbac03241c4c68539f2128e2fab18763d436d838d2fab0da80873e4aa1a5f5625ec0a856a85195f56d78fdc25c4979506bbe6a0fe607f597978d430473e0be24b87c3f63a54141ce0338539aa29195f7a16b673c1c560802f7d0664545b31bef426b617c19550802f9d35de618e6a0d8c2f7d051b882f1d064e83017ce93b3823fbe24bfac4a66aa070d8259d495f340b740a245fd2266c7f8a04175f5217dac4a63c087d496d90df47e80ab6dfa19c73d8fe2250f1e594cd27b6cf2f887c39b530badcf72bfe00db0b50b2dd3ddbb9edef628e6eac8a70b73202020f7000ac08b1014450188e1b2506946c94543554345443a866a85c42b816e052806bbb388c7dc6a16632482994940152ad18ad51eba45580160c2008506b06506b5e98a004802a41b15424ac1f583eb0442c8c457174616523f744f64096620bb2c4222cc8520c21cb5105598adcd80ab21441114b1103492c7664298e229a875a79c1d562b5b629328a9a6dd95afbf640dd8908aa2ed5a16ce9655d0bbad2ac466bdf20eddbf3b0c80073b5569b4325c145c5a54020b2ac2c9bfaf668df1e480d1703cec49566ad34c4602e8f872c3d66d4be41b46f8f83534f58b9a866b806f8844db804024296aed2d1be39dab7975d6f90c5603171536d55d858db6a73e170c892f6d8d477de4adb0e36d476da4c14b5298c0e35b258ce64396db6f6cd69dfde75f1d162ad38b29c2eeda166497dcd54479e0dbc15108a906a02e5f160d7fa790ba27f494282b5effbd5dc3247d4e5035f5a1e1ef8d2be74c0f5fb0b0e38f9feb6344714b6812fad49035fda5306dc6160c065e6c84b17f8b2ce58e0cb4a53812fabcdf6af1e8302de62e4aa097c595912f8b2b622e02ec308f7af2c73e42e087c59773ce0cbdae200f7bc075184b3a899239fa57ce9b3067c594b44b80b81c363e6a8a66e7ce92f067ce932361ce4bd460d57a19aa3daa2f1a5bb0cf1a5af6678e71d8710eeef2a73546b16f0a5af28e04b67d9ce792f220847119b238b4ac0975486802f69cd018c90e13de6c8b2485f5218942f698c01e88a02d4a4c6f8922661a280ef4f51736465a32f69eae44baa2ac097d4c54fbe87e118d03147f75445f507f0e5bc21c097546503f1c25f0493c4016a52913862a274265f4e9900be9cb1922f6256127f1b9304026a525ff4e584f1e14b193f90cc1a13c50b7d1980edeebf856064a24ca793740435a9efdbfb8f7986bb7c80ba788074e9c00b4aa23c3840967eda0059620d90197818944455188051aa234e768192054a1520cb310625d1160ac450d511c79a804a02aa0890322889a68c204be75010204bfc00b214eb3b8092e88e227c5647b826c5670df0191142501245e1204bdfb87523c580948d1a9444596a90a56f9ca2d11aa2358392e84908b2f4bd2d4001bb084aa22b4190a56f8b4a000a01a80390e5b88da0246aa226f56590755355112551152baba3ad84014aa2256a529fc4426119801583c423b2c42764291680844196be355815511209a849ad23cd050494b40435a90fc48900a7019c5ec44cc8721400598a252409597a95f3bc3087fa563d77e753e48fe3380e0a31043b2950703831043feee3f27b1e257965f03ccf2373e4aab7ad7dd4c31e47f238cfe3bc3278dec849a34f709ec77954fbea13a007721cc7711cf8f9418e03432ee4c030e43cefb9aab5ed5daa5d5a06ef398f0351f1db832a403cced3ee067d046df0e648494b74a4d4473c442b3583688ba8224ac233a63559d655437b5a6b7d533ba98341f8252b1bea9f54ef67ada75a6badb5d65a6badb5d65a6bee3423bc621920f01135d5e934a91bfaf91016ef197f858a07e93c45f11c317c4ae9d7c051841114f011f9f439e0275fcd29949451a3c583be0529848768c5017aaa5299542655add45df803a141dc1e5b2df29fe6deea169abedf69edb3ee1ed459d4e173b4f82834e7536814dfd1291e44775e8506f9152bdea3c7f74c504a82e6016351b53f5ae443f4e759e890f76816ef69ba49ad228416cf825700f9d90c227d2af3116d55d1c6bd97c4d9f65b0cae1a6f511c3db274952f3d26b4419e270924bc1bdfd7fa81405fdde52f984c0b5d5b542eda9e82608a268af56dc66acc7d20bc3fda43b4c3b4cb78cc67b4cbb4d378687b10ed353ef39b5aaa2a1e32d5957aaa2cbaa276782845eadae2a2ed3f5d79d088e9fece388c9fd0dfde59de22d9dbe64eb75b3d6789b5d6633ce49a114b3a1343d3867d9dce5019a5f13b454e75e994c19b23a516c34763156d3ffaf631e6f41049c74735aa689b6f313751b89fdf5152f8d37f860f86d96a9a6b2bd31fdb19c61f88638020f818c418635c4dd89fc0fe04f627b03f81ffce913f31616030a78420183e0782a0a7b1cf8436de54fcc66d9ce6df13fd0572644953643cb44dbff77e9a7a9c08e331867aaa3dfc84f5551a70ab3279db7e6e5f4f7514aaeeeeeeeeeeeedec2620b243b12ecbc9787c0ef7eb32e5bd3ad6c76c7571b6d656faf9940cda49d3426764eb9ef7ef38dfbdeb92ebbc719c655de6fd6b5b582a5d9ec8ddf34c4d063fbb0278c184edbe370b6d7a9369d1d1edabec7dfe3f1db724cb4ae5ac99953bec7ad79e323f1cf4f33d59a5aa399268aa7b9405b39693cfc04e30fedd7aeabe07bf7debdfb870f3e7ef09dfebd6fbf07bdcfdee7eff10cf5e2b3fabd59ffd375772b23314030677c6578c86bf08f688ddb7b27cac74dd2dc1efee4142765608cc343a118622e7412dfc0cf9125f7f9c79c823f249500e2b340641ba26d6db211448f719787b6ae461db90761966cefda9b9826db5fed2fda5d42ed43a026429825db7bda79cc92ed3fedaa59b25d7b9d45be61496aeaba0e7532956a4df7e9baaed6d49aced3d5ef56688d8bb67f79c15253436212bb2dd3c824263ffcfe3dceaf84dde027117afe5aec61a36b444f4e3d0cc9294ecad834e4fe8239a2ad19b870008bc9466a1ce113c5e98da71cc6652bd5c5ed8e70cc332a8baa54929a3259764f5758f414da367a3ad193464ff54bf0aba622dff08f2c39d2bbef69fb392696fed2216e90ef2881951065b6f0a522a774ef3e516e74ef5fe640f13ae84ef1aec21c313f88ae729825db777485c334d93e85a6264d470e59622c92a5287264f6efbe0cbfcb1445bee119467455ad99281f59e13051e6ae367586dadef582a40562b5aee22b709589d2b98aabb88aabecadfb0ec4255e91533e31db00bfcbf17968a30192393c92ae38494d54456504d6c6d8ecedb7a72b7e625b138be387b06db55a2d8f001fad362c7b7b9f93ac359600dfa7b7ede95a53e150e3506deaccedc9b26c35eaa8deac6c2adb7b13bfe35aebe75a7dfb18f5efaef5b98932e73cb1f3e48239a5e25a6b12746b1ff8f5837103242d2ec0b7bb9f1a11f6a6995cec39e7fc3b479a497b01ea081f041fe0606f3f67cd0cec745b351966ac0373442707260a7e8f87c3d95c09bbfd9308b77fb73d9753c0775209baf187e4213029daaff342443bad98585cb4fd4b0c1ea11dd65a6bedb5f63ea638484c22fe5233c980aeeaaafef2f0ebf29398bd6db7c7deeecbde4cfeda1b7955e2cc7869f63663b67bf3bd7f09be6b2edf83a412747b64891fd45a0f6da5bd78c8453bcd92ed39ad31314bb60fb526036ac2a2359412787f24ab461d693b5cb47d0bbb44584c36a2b5ec6dfb167908df63783bf393988952771d6926dba226db7b8812767f9f44e8853264780f837aef35302b738d2df1c5f6ce1a194122c8f6d2f260fbdf39b23c98a2ad9b285a8a973d1a7efe90522f0918fb61c61ee2dcdeb63016c56f799953e51bde675209ba4313258d26b123cbbbe5e04877f1466a1c717a81d19b148ccb565c5e75f66957a57ce0937908f2fbb4b6413dc31f6bcda4ad9c5cb4fd8fa2583597bdbde7aa7c8392cee3beb6324bb6b75a339141d4be7bfaa5662af1630f551a39c0f71ebb8b87b6ff48e7a1ea543cec8ebd3d1054fcf6eee20858f1db8779051952417ac935f2f590877032c747ba0c483acc5ffe0ac911d86ab3bdcbf849ad7195ff873be267fced858b9c25b646579996a8f4ca180e8b246443230008000063160000281010064422a13809f26015f914000e6ea64c585c3897caa21888520c304831038c310000000008000008d90600089e10915eb96dd81f19f3e3669bcc70975eacb18e645e0d12f451c1245e4fe1a6e6ea00f1ded73e758a8e3fdf12e3003664c48d3842a7b0729fbe44f92b78f406318ec7d129a3a8c8b912127bcd4de1ffc4102da39bc50f7ec63761c42eccf8c8acc57d482c20aa5833c62aaba35fdf5ce6c30ce870b8a1f4542b0303f34c470610ca354a73382d50b8550abd78066e50541b106f0d3bca792c1bbba491439ce0e96210dba882a94599e73c0d9124e5a7e07db802a961ccc7532356ee8d70cacdc8de58505fcb0ecfc81faec1b1097ff6695df1136ace89d760e2b1fbc50bed2ac4a773fdafd56295158d69c9e0b1ad031cd45cd1ac2990cc387edf2072bc89fb3a949d220807fba1a952d58faa120a66bb0f497ec84743b8f2dce015e6902b1f99622a9908b949128687b3b73bd87d878cb94e684b8f1146c82d597bbeb6d2088c8f6b6a6db3361dc606688bb3d6467349297cd895e7f58cee7d55a6b42d5ecdaa705e4ce00e004279820c5038f58932959a7f89a40563ea39d5945610af345787d3323855796cd7c1e19040d8701023121788fba484674922c86604c84182d308de23f58e976c51aeb7f6b7a2e33e354b76d020abfbb1f55a6247c42745c2a02bf6684b298abc9b40b65f6fa2a701faf7da26b2d0360bffd4f626a9c744c85a5f47f3ed8eb6c10131429651b5866e2f63793d9e361cd5a62805451db6785b98f46f1607153e80a12983a010a2da457323543e290755c0c2d4913cc905885b7401ada54a2a437bea9a07b8f34bc27e5fd5aab1216a36030f10db367ab658e7fa5f7a933a8b6004e906d04a37343f6111e6dc9df0df325cc38d9872cebf0a6ea2bb7bd5d615ca564a77ae86746b267111d131a62cde067a6cab01a92799c5e85a214752a2e79e179a3b4a595b7648f5b20aca9744e97387318b37382ee15829842b3b8e592eedde4400a423eac782dd487bcbdb917e295a5e1f87fd129e517ec8069557445c5b2acf37f3e6ad37b864324017da9cff318aff64094b7a4a3376679e8f2245e38beaa0a41a20ddb22487a2460ae04675b5cd55a3b250dbc74b0a62075be69b1bacf9e100398e9b3b6a2e8d7904442f1fb4afde62479bd7b4413e0fbb95edabc7670ddedf0b35b4ec41daec7fb42042955a73ba78f16fa7e6069960b04671a7b9fb95e284d5cc1d578872545a0153174f09623ad24c684f071f29d48d1f8aa24e8857addd58b1ec90e3db3b2185559b36e9d0fb9ce8d5d6a39099cbb7fc60e242be9890def5dc21eecd532aa9f2dc5d0fbc82d1d707ac78acfe0d9622ec2e4f179d2fc54f88745e323c8d361046b501cddaffec0650724078d23eb17fcdb7085344f6ea5c2147b9c125a876c503101cee7efc07d2262c74830cfcb9d7a6e88db3cd07de3dc523224955945ab416be5c81480e39d5133cfd7736cf7375a19facac2dab432ed8e4fc3cb9cee75f833a4bbaf5ac59257f7db667719955405a67b386afea18a9ca7a722f2ca49f321bbb763ed279a6131d0a46bd56f70f93ebe7f93c54a0f6d432804459263ac7d0eaadc133a9c29d2c9809925d576248e06eda14d4ee87e8fb323192fc516196f4d291759a1e0a1e6de8e2228157b48f88304c560f271eaf9843119057a3074b11fe4005b874e3c638f5bb962026e0c5b911c6c5509c202f87c527376ba20f9ff6d237fa6ff265d1f699b4559d63c807f47630822f1e1136038dfc127368d02b4504569121e13f40b336468269a22382b8297bb920158f74b5dc9a3f8d6cbe87e663de1e30b8188f4eadd342c7123f8601f0075b99169d1134c6ad2f799dc263f1b3d485ece44e8411ff1da949b67b48f160c7423c8adadc9ad05df290db6f9232efe9d2be90eadea8eaefd56652458308f4bb05e554c623e62cb140c15d85d00a41e5a0594383a6f9aca9f4bc8010d6ea241a7b853c8fbb3e95ec27605ece07937e3f65c13e6cac3b3371773cf85ed11ecd2062e99d6765724075fc9c0342fc7ee6caabc441b16afb387ee1e6495d59b1bf12c01915481632cc45e6e5318c82c36c4e1ee3fc307b6714bb6711b3727ea6821fb156651bfab27ef58193bf0bdff744ff41b668df3e82c70bfa0a6135bfe84312d821fca9bdfd053519dfb1092486e19902deba9cf500a533a6f12d1474c9ebc02c9c2a4f225b0c078e07f53d297bcee1f8dec632ee5096f0068801e4488fa6d95eb527f707249a6819315130d45f176786b601f76f9a14605862e7e9a7a0ab059117c715fee37cfbaa342ddea96606c9bc305c28fe9b9485baef37a9383a7b022fb69b8546ff5da6ff12c108cf3c0394f5d4acbc906adccf56ac75e1627237fda4fd9d2997019585198cb3e205c921e9d59047c5015eafa866b272038f12461763962bf9f4012674470471143531447dd67313bdabfcef93595c97ba74330b03c0474df1467be6eb4ff2a4c75fc2b763533c6a86946d685c118cd016613711fbdd232a9f0c6774b21e5b3d67e9f9fe38626b37b5535f8f2472a12aa85bb6517cace130406cfc66d34157e5bdaee529f3152fa6c85ab831c7bbfe39654bf052123cc4b7e3fd28c5c84cdc0009ad2e184a7bc2dc4d75abda73ed9a4bfac563aef33c6b2e49bb2cf1d5f2af79c34b7152620e7033a6c8d0cfcac129c09b9b8f894c4e5d687e6c073a3e321d735f04104f40b6ec000cae7f65cca0472162946b13da89f894b33aab87e9e717b92d97d13f412f233a5475ce7f58fd9591ca0dd1c9064c6dbe5106601cc4d1a82df48ae474ea798bb82e5f701b157b1c4838e1bbd49098cd5718c5726d3b17bdf31639668d45cc02aee417d48a0a14ece3c0b57151da4f0998279a4a851a39568472dc7ca948299092b75694ba02835116674168e2f73651eae543f51ddbbad997b8cb7078df228ee699ee9b92dd9dc03150fccaa542ac2485f438a17f2efbab7ac957637adaaca6c2bd8ea3f4cd27f0e52a2ef32bd57bd87b60ce4261baa506d6ba82e16f863bac0dce627d484f43233889566f3d6c86c6342f8d6ab22b4c35e860981c4d763f8e6e20662c29eeba7e06f4176334bf222aefe6dbdb56925ff891143df65c0a22cc7b65e2ffc2a9e29c652652cc9ea4e64ecf5c73e7dd2c8b78acc0b36083cab31cfe8050e0ee7801a29c962f481a67f387e70083ab3c88c80620cee87556453872f2ef98964d7d652fa41ee2f52776347a5c5e13bfeb54542a5453af953e0516c8aa7cca7b6ef761b31a102ab3e72b4598404d6da97999f7cd4ec6bdc61203f78edefb30dc671c8e7d3ae292dbada4a670ce890404992e078a2d29edc9c675b6ce64775af5e1333b88629b9242fc63bfaace051c62d23ca34202b9b2aee406a9b6994c0cd67e163dabf88815deeb379adb6cbb478939fb45091384c6f66aa07f78e7f294261345890ea5584e2cb4ff466964a41693704d4b7f29eb425e71380e47cc82462eaa84fb766de6e817b16790af8dd4a91b73634a84f1c8eb59692c97737a5188a36078b26e103991243facac6ee731cf83fb85a455bf7af347e75c34f58ff3d94878e6d7e9adb81673147670cfa552817a29ec96eaff58aa5ba98a04e84c91b939941a2cde8030661494d379e708d8c62d36dfb087c65541a5708d71cd15653fbfd24927902167cd9897c7294220fed12e311f3eb71ad1e40a4aa77204c091b59bc2bc5c9e586dfd7c6233fdad2a13346b507ede78456a8851880693c6ea32f33d647fc3bc9fd8c86d95099f82c1826a47939c285ba71204486e025b6e1fa3432a10b7b355ec7c1be5cea751607f72f2aefb61086773d7d280b984fecacfc5cc310b6db65696eae354723b31835803a1950eaa205b2c9940552342b05661c25fe10a1d98d0747b7b314617803c748552d8d364cad35e9084ace2ef9afa2598e4bc605b038c38006e1cf4c778204594b803c8011bf9e987585a18cc7430681e13e643de0c0ec55ebdbe09f5448ffb1781c8dc381481baf89056e87a81811a72f61a5ae1d5ff14b5589f2d73862e6353802773e5fbdf2c96edc2cf2be1a6c36f7ef2bf3bf8f9e8b51624937840830c8d439dc99714c966b82d4139f70ddc3351477429cac0b8846f822537c207e51c974cedd4c6f0a08e56c265fa1990bd9b5e2acb887e0c9739791da24e643a2488831d72681cd9202ebaeb1ebbad55968582db180c4356a7616fcf68fbdd353d16d1a5cc6d3934268f7c4434c553a16505af416410ab2e251519fb9ed902e6a44624655e46c07a386cb44ec1c1f4f8a3403d864fd411ae16605eb60024aebb106524e68069dac49a71dde58d6d6983417b4c11fb181de98cbc44898bb505c04326bd24de72d47ba070d260e4b6c498db8d8c8f49c4ac688dd2d43fc697509a6dde43aad72208560d56d25f675b21c3f1347dd1aead0931fb8788d26b6d43c7435c0fe395de6a22f70ed223653f15bfa99a6c5038a8f555f8ed7d02b5da8720f1b63c907c652da293f7f3d8a59c6b246145fa3203b67cb5fc6c125e0a79243e7922dfd603f30c98e95a0694701fa87a368c8b13206e1f03fac1bddf0ae30592c81d4cd521adba63cc41387b8825c4f73bea9175c16cdb5c78432ac4edc2e46d0ccff79088db8d734d70d580f737cf328c409f7b0237794f8eec4bbc66ed554010706781cb929efb4c02a13985dc03e54ed0568ae11627d4c605ff257fdc6feb9803729503d92952789cac6bc5c2680df35a392e33d22b19ad1f76d2664ac911d64e4b095c9623373396f894321b7dfc4da084c7e34b2bc75173479042f722a8b70888e91def102a621a841953d1bed584bd30758b98492f1cad9bdc93cd0d4e062740f8060d2ff9aafcf289ecc54c1612faa7845a83b930c238ce212bad585a9c84d3cb5698e8a0c930b454030458bac32abcf8035829ca012c51d1d54a55554441dc3c73060c9fed48c028f788225e43e1d567323a1ff2ef3719ee5671454029da917238c3d1af823de4cd39f97ee65ff534725a5bbc42fb9f3ce34563cc231a454a4dd538037d6391ea1cf4a91cfec2697300d9e294546b3c256752605b47c989eff90248d971f69ef0813b31e4079813c3c2a092af9aa8f61d91f087400607b6dab1971dadb9e42408764d1713a11e4db58501cf082fc693de64fb63a434ee1ecd2ec79123467e72741a90aa880e8e1069534798799a8058308ed52a68d988980a3ab506d2440d53bb0e8753e53482064df4a469c6476a633f2998bb9e6065ff26b2a5a4ee3c6b4eb48f0d8f81bdc336cebaef25f70a27a099c032a80859659f5c3058d5f667447342f0217799e8c468dae06fa4b2a1e5925826c870222e2bb48eacddf52340087f83c9f42dd2bec758a5893c230915d2b8d88398ec6d3fbd240738f6ab5da63e786e8c978ead2bbce656e4492c386444cc06b661655264e227657f7a25f63557008b954400341bf94a40df3d8abdb289cc24177bfa6df1d2ff4ef6519b137d80b35cb2e5d5adbea3005a1f082bd7e283904fce51c6b0e42b6703eba2205b6049462cf8d3a98662c178309ccf4304a2b08699cd85f1e0dc87eb691069d8f27a790c7117843865ba34c1b12c7c60a0486a757841693472b1a5a1ababad915b935d1080bbfa5ceae1b6743d71595470af9d12a19fdc135c72ba7c298e338e2f4e0caeaa45d63eb595daa44c5f5c3e664c0a8fca08afcbf3afe5882f98a22c642dea4a1290ac6d1bd83b041d2364d36d14ff69114b3dc95d072d5e1fda87293fb2c45ed14bf4bc343c84e7465842c88c4b51520fa50a173f705b558b5882f0b200452e3fe73e861a05f00f1a7a1e8824feb057342ee99487fc90a53959e013b01648b4175df6e61f8a4e48751286bd83c92516e4e0e2bf1264e1ffd7d49c3440a06720baf8cce504b4876db85e431dd9aafde8b922c6e3e87b5cf801b1fcb1cf2777be7c4967130144be7b76671a5e3160dcf731511f90b1030de787280607bb8b79bee28d7e1acd79d73cca18a9affbf599606783683e8e1d44c95020e3527549a21ee06fd29ef8063d7b0771e38f2f1f7d88b097892e2fdc60b9bede1e915b00d2b14dc10715003df8e8d909cd82830a19479aa72b76342274f671e13b5860814ae287f92350ba9e391eee6028cf6ac37a9d65192b3c138af3bfbd248a20b9bbca88b6a4a02f7744c96d579e9996a8b5e705a24c8c05bb4c07a2ea50ccbbc0c5a39d3cb78b6ca2d8e5afcf8a3812034a8cdfcf7e963231debd846530ca2ce628490fc2aa23286d22fb563c49460223307bb023ce7a53e5d7350febe4abdea2eab233ac45dc6c9e0d0bbb3689550df6c1185d0a360108f9bd84e6f897d5d9f014035c734a51eeec12d276f83fb604dc7188a9c5f6e7739c71803f36befc30fbf2a86401f963a30b64eaa0205b252bdba1e4ba857da9b82c3449c6f59e48b034dcd22f7836d962b3e95e15d0ec25e9adde69852482124b768b8fb75b304fee827894136d5664809d8235f109df3728ec4735a8a9c4783530e07ec48dc361831910c20a811b6d02d566a8cda752de418f54544612be7016595a215be7e8078640452d2c0b6f49b78ea7fa69e9567a320c48a04b30d1ba0051cc907a36f31d94ff7d4f6194086fdff5113e8826975d41635835a005453a39849ac110f77fc7a8f93576dfd0e7b5225748ab1df56bc6bf4a87206b917bd4da3b303d079c7ed93ac6194eab16b93bb75ddbbdfc0cdf601ae2e1c4f0b03c4746b0c3fc26d35863c48038b887ebaf5d111da70de91006de8399e899f0d371f4cfb4b4c9cf78f21724638600fa6a23ff3910da4c8710cdff8614d0e0278f8665e4e81b2e8bc691649645561fd60c666391bd8bee100a5e84266d6c62fc58de76fcc5961dc65d1a6299b10c0e0cb76068ed98f1e111c321c46887b654d1433132b5e8d627c5194a743f6c0bf3af65172e79d762bdc3be258229d351f003e9f54f9fee1012d06c92af6bef1ecdfcf9b0b7b417613bacf3cdd7630babc4f3c9dc326d0f5d5c3a2b91a0ef96651e2b7aed572b0544e03805ed0dab24ee43bf89aeac65aca389aa5ecf31f27ed7e9d899e1423c353200654623da48bf0b4463326883cdfbe94bef5d06558d6d4fc4563c5d9242b62c90f41696632fc4f9b7eb2c404502b10108ce9a835ecd7214ef47f76c60c2cd4456c690759c9d7e2424a4da8038248808ad372f91d02853a85f818aad0acee774bf371fc25a1631cb8f04b249010683ee09fdaddf525db36de9003289a9059d7e5c999987253534d20da2a4c3e96a2a6b67c302e31ef69bbe6c13f18bf0ada0752e8e6ab06d65d4878d2d6ccc63e7afbbbe94830d2cb2ab5a1e8e78af0a581417252a3826e655d505aa261139aecc3f34797a9cef37c826612bb49f2c7c286be2101dbef829225c55a903089734aa0636f8d1eb8cbd3dc26f21fe59e75cdee8f8d9f9ea36e7cd9e19aebf04c576325a5dc65fa0da8de8fc5079414b4637738336dae18b68bf79a249ca0559920c38b759a7dda987933bbaff15db1a48f5b9beabc7b6e74891d4061338c893dff784eff35a0c1f154e6b70d418777a2fb741aff8409d9b940994b0376f39698869433a89d2c43d769932c12da1314086356c0dae31fe14995393e27cf5519ac153c058b0784a5224871daf140bc9466a657422fb4c03b3856521860fc531b5b0fa30f6f8c44e6bfe247a1145005b38d414fdbafa664a7af034e0dc48809c8c7c44d5ba248cec8a2e5ee748929f2d6ed50b8a9de0f7e2d994f2be0076096546469f96cf2e9a3f1de8607cc57435895e658127a64b7e349d1c1fc073260a26399e1453349552175d4b8317b8bedb1c3dd9a27c076e0e7fc0fed97aa64f7fa5c530d2156f428b63ea483d951c9963e7051bc69f19f5d69b9ee1aee357509ec17401e82976843ba3b5d36069a23f6ca704e66a6c5f73924c392a024d7da3d016197abbdc8cbba6c84b09bd71db51993ca74cbd07d099dcce1f153d4c71a12aff9474b1c610e3609c974e6b84e87c980b1d71e9790cea545460dd72a4d40daa6ed8c9c1ca2734bfb76c549e3015f24984f0de15c6946cc18ee81bbfd1f7b9dd2048a9f7e45b04756fabe92151bc411032b966c7a3baa16dfa236274568f0e8b784df88e7ebbdbdb3764ec6de83c164c3481cfda924db718413d34b008b2077e765ae103bca6262b8f74160398286ebcc1c82f42924211030613e52232c2a6e9140e17934727d0bb1cdccf9f8063611fc058715f80d8b02f80d8d837402ccc072076ec0b2016ec03b67baf013d40d083815e10e885811e10f462402f10f460a00708f460a0f7033d2ea0e703bd17e84988eb29e5eee4aaedece16b7b8097fd012eb56adff0283250c4a751951a9d52b0dfa44b63c9514f1df87d26396dfa68feb1c0009f2daece9bbfc60401983a7d3be347bf2f6cf4f4a6e207dcda9393dd60110c198e20e109643c61812b862e90177938e97ce930161a451669181eeef56f9f5938a7f767d5d8711cb261085b8a921bdd0175c30b451cfd4215eca8a41875768591a574828a77cd88d4ae62c677f1470fb6a2e46476e28ee006e2acc09dde8ef6443922ab4d95c9b7da6f4ff26ca603285784baa25749db2d25b7a8be738b72a51489a3a2f4d82ea71070f70458dc1d397b5ee022f285907c4e21781d068449c4c83b6004286d87989178521870a7828177544146a7ad89346556dc71133dbd4380229f7644e361eb4073de2e3436ac6d4751c16be30ac392fc3273854bfc15baa7a92bf39de8fe9df5e489a395da62281358dfecbae872e3f7962bd125a1a78a2d7b77a7880e1ad04dda53d3cf18d6828c5be75c4a55af57e5b23b96881f9d48f820067db0eb5b5be9c187080982b612f92964bc018be2c790802efa569eb3403d151af864d191c7281c3a0c6dfe53fd2b4ccbe53e0097281e279273f1c168de73cb8d3c207951680ef11f61c3c15c0e7f805014ec61f94e05d0b3fc837d971b7c801052cc0a9303cce3d5a4e5cb757dc0bda4648e793f76261f7f39ed07842a45189ddc5741520a26c3a91e96b92298bb1d342745f6b3dc1b393062c95cc44c14664f0b29f974e9d58ca923a0e43068831dcd4e2c41092119c9461373ad61295037b5f9bf2cb169581bca6fc8ed4781a3e43853aaa970e59d9c05c30ddf481333a8952f96408c537d33f6b12c5147b1399a56e488664cad8e8fd855cfb0ded56cdcef1857517bb5b8dfba93c4598a46a3e2172b2b458b7e0dfb65aa61f5e2d73035cf9eead2161bc0269ba7cebc1360be25ff2d45ad7f68200e0984fec2dde718ced794e3a5feeb5f8ecc43319119aa48544c5e49be9870805891e4f2f6fc9b2edf3389efb0674aa9f10269c88de469e179d9047d82b309a3c8f74b4e6f10b18a4657ac9e2cce397cc13c09a20c7dc54a1ea8cba87de4d03d41740d53561f50b993c5b6e283ee04fc81dd09aac5072544dda4a7ebe4e513e016ce271455cf2a51bd55c842500c1125287f83c5464f501c3c01b6e4e42f6c7d1f0ab86335d187fa95780f9502c304d310831f5fa3404e5a69a127d0a1c6f4caa16aec2d60ea7e5daf701bafab2dbdf1bec14b31b48da7414743ce27aaaf9b5fcb804cac720bedd1c2d7ff6e2b74a542494965666ab1f2571465bb3d12737ac46345755f1e1b5b45088d9f943fb52846dd680d65c4c7e2d74d48cd65f96db123875c818a62242a8541538a9e38bbc24a41438b28beeaa287a0c304bf44b01f98bae24e21e512c45cff97378fbb7953cb9f4fe9f5fffc5966c099099f29e06e05c0fc50fc198c60bbaac8d7641b4ad2daed328f37fd3b632a9b8cb9ed9eaa0359264e828bb4342e2b16f24d3ff53f7ad50def7232e791bd76677e90c4e6ee8138383ad61e714ebf8caddd0b8b44511199b3e43b1818f539b8c7b146ebcc43f68fc1d4856a0c465eb8a632b92579f73bd707ee1d6b1ace3ca47ffd28f32661785b0277fb01a51cd96ead103aeb41a51a4cc066fafbeaadd1f1b3246fbba60a3af08d3f7a96e43267c971f9151094696abcfa2d628fa4189cea4993761e3cdcb7de1cde592d101f4b1a0d50f9f71736e6b770aa9420fdf38c0d46f522728e4910dcead94c7d2edf2d4382b8669fbab84c04fd17593d1701513ed0693a4a3c098bb53624b8589460f02e1f45de0597b0ed5b74461b2f63c004e815ef1d0c4de041857924264b6c9fa03c22a3267b41c80d684c16a7efe38b269a0234c5f5212ab077d5a1c74034bee35bc1c88a4ac37e99c3962a6a51cc684c6a416944a82cce2df0106158120972ea81191b112899600ef2c71edac5945dd79280c3607c44a4683158caa66b6b29b6e725550df8ffee6a65b02c5cba46d20cc7d7383964a6b490954c347f7c183d5d48691798dd76eebfb96c10a3096db00d18c958e93f5c926a2240520a04d9c70b0b660eb13289eb4d39aa688983cf173b67e0b3dc571a01e431f9342942e0a3ec306c9e887c1514d72f74b161ed829b1551e56c88b84c7d8f58057fc7884d26d22dfbdc05159ab25e1644fff6f118a69d6c11400dcf417b918429f5de8c0f15d0af0db9f4fc7246d605b489e25a40a88dbf85fc5a4b51a3b49756a35c206769585ad3b08d6469ad1ac80b4e5a180c703c830eb7e5010d9eed600478a1c2b228f494756e4d991dff36fabe3354a77869d3731dc08150294665962e3a81efe4986c32357f6d27362308f50441a11a35ee09d74f1276b117d4a66d96262947c900324f2050cb76804953bdfe03d0dd1f3e02c10729404287a4b0b0268f702efa4060cdc2414c5590418c3a38c44094e0635e23a309a4605968ca957ce4285091afe1b4b296a1d1c3fca8fc02ae661afbefa3cfbb4f5c01b27249a3635353debda54555131401ed1e558c348911fd6690284ff06af194a4fd2a748df95f78d3967a91861abe11a9ec7b337313b752744d464847e39aa9643423549061601436fc54027020b7429ed1264199a2287f5885b5cd38d0be31653870438f175f4aefa78cd699e65d7d086a17ae1b3a4d07d140cb24f40cbe62fc848a817eff15deb425b784ceb67a62952db255afffb58a00fe31d68e1ab7347adcd231e35431ba9fa5e0e3853f48b48391cf4bfe4c12af621a7835a6f982017eb1cee09632537040131a081714ffeb450875d4aa2171a90288aa90962417c0897e0d2307bc6d2df06e04de72807954e07581a9229e8d42eb10631f32680331ff17b322328e8ba28a6ee777b9214e99d0c7f0823241449c3ab2270e20c4bb5db65c1baeb037048fa97218b60ecdf90f02f569086fbf16014f74143093b811ae80ff536b398edf8d6909846e580406c642b5154f60ac39414f1a3b6949a527d8bc21d7a85c5356cbe8ad3d274603249a949e34161e5943f8048da4ce701286cd25d4e0e30f719438bb8bbc18f18bddf9538d7953203ad086f9c20bd58f75dd80f67d0dcc8c633d508201508304ea9a2dcb6c1fa193941b9869514574443da115e321e260f68a69cd63e3580a52ad13c181d69e08699739227ea93639fcc0f9b7f0721dafdb6d5104dd700c0486856d15dec0d8ffc0f4f490138f2aff21fb6a190dc834c999878090031922296c27a797a68d41d6081ea527a91b9144417199527c40279e50ee48377a81eb5737abb81631883cccbcadf2f799874beac80ae684993757daae68bcc6ca9cc757d3256d0c9731204e46513c942f89b36905a3789b712afffec2225500067bb5999b97668d0292c65f77d7398f1b6a10a8d630186c960161289ec0a3fc543172cff8b35b606098390502186a3c0f2b02408098244d1a169c6c4b7d048d24cea032d00f11c0fd90daa40a747c80d96b652cbba7126be4325ff1d9395244a6e104c10fe91f0f001d435cc9fb24e9d2b260c858c2a36825714c8cbedc94e0b3f6831407e504d9baca8c5b0bea6e0e10d0be760fcaf50a2e4cbc57f34f208453fb09087e986409ea1e85b2a03f089a3fc21b282ee4e59c198a849a4dd99893473e5bb1345d085a2a5fb96a782d84725dc6df1867314805e027f4b4e41d77b4eb83202fae9f861cde80b8be35e25a76ade268449d68a211c28c2725a84c4a113e4dbc654538317fa3bc68cdde96892cc744b74b625d9a46c7eaf1b5342c0cf097e90f82a0ec504103ea962763298fa491c41a0cb14fee77475d23353df030e6f34928820c108220ff62771c35090c0781e5133c21cbce0a33b58f1644e0fd68e5073b7ed3a766fb199333cdc44833886d934494cca1fda28673b2da8017f4d79d843c4f33bb210994e0e6ba91d6260043ed76b33d9abb8b48010cfd9149e7c91ca517b916130ca8627eced3a23c849a5282fc211b59229971671959e9f6130acd35d0ce8ebb9cceef86b20452330c0a40c6372efcf5070a5b9b430d1aae8717f287e7290bc894e06ef5a5200f0b0ccaa7fc270740bc019e5c98a135a4487e09a833b0fe58999ca65e0f7d15e4c72dd417ff23a652f8daeab1f913136103d26d6b3c45af83e10395c14f877df14c2dc49e8de6e407f8580444b00242ee62ba17012059382e5c33dcb5b7981d39216df52f7a4e4870c3cb8da36b55550410e9e2a44c2b3a326bffe7b4e32a2e745b0610b9f4855adbd3e9e44d6dd8587555b86b284227eb4b03525f619a1d91a0be902e414d8d9f914aec04a098d6a4ac7aa062ff1223a4e4a59883ed1cea5d7d920f0187d3f41bd7c6e171a3e10fda8add8488f909196b0cd4b804808cefce107309604b1dec6a0f92c76e1b607b34205746ab707a471a438cac0c872360a0fcb7e9b015be6d28ba9f71c47e1b8a523e0aaabc89aa627a58640f500c8362c2e341070e74bd9866eab500e52d48b2ba01f222d4b2a9072a9163e50ca079442c2aa22545ade5576235e99c1bf92b28bf256c53c9aa1269cf7dd2acbc8c3dbda4361962a4d4f4ed5d3100edc3710ae6bfff3ba7c22a627351944ba03158cbe4e1431b69d8725c272000ba7d6408ebff622cea540c6081d916ff21c2401103b324b3236a86cd93c0e23c54747c640dd257cf8ee1f5e2f080c3b5f5e275d09884d2c8614c00bd502b25783269e9b3463ccc5ec0e0ea948c38ecbd4865dfa8744bc161505c5f5e58eac71bdef47a31ba475a2d2811e12a803662b5a024824b017ac4ca84d211dc707493233723dd701cef0aac469414b846402b58892859c01581ae602542e9845b086e387213d14d696e26a01705b89729627fc0c2bb3142fff5c0747caacb3517ce17e1be0cad6cc446a3113fc3387a4a24f3bb04d49b39ed379ca5b1d5679bf1f7a3444b15fc0549a35bba08eec2644559f312197b4ed599394388728325b3c4737c76c5f3927e6083b895d3960b007f54540e350266557c1b315210ea519e4d322df3dc14bda71550042b7a545de0a0668df4b0aa9c0ee88a56b5058c1c6efa9b731adf9c87b7c961782910a89264d2478e677218c6aef0dc9c2d845293abddd02d02482b9469724443e5b7a625c4d2aa2ed7afa61621e2cbe9640690065c1a735ee26c8fe0626f76d5e416a2d2983217025af363a74af0740939aba05bcf7e08488230b33b25b038089eef2520724d482495ee521c1ddf8af8e036b0e50c2be2fc3e4dfe8c6a6ef930d83172c28196c7471d0666021b66dba42ae2c11a3cdf7f716bc2f9b24a94ea7c207d184841cb31a4dcf3021b279001f03dca1605d29de23312c8e8150e8f9b5b1e8c4488708fd9abd818d6392382b1bb39dc99d21cd3962df33b98dbd7bf405b5df3d6d2156e6a5e986ae17c802c48306c7b31de317ebf41cb61711d62d2956e67a07cb401be6fffb5c0a14a9f8b4b4b640a7835dc52b9c5cebafde4987139ce7461bd5608e7eddbf2785f9a0179f040c72b71cf385fa22049dfe09b50350b8b2e1d2447d053566105366f3740efdf633b6d693ad9db5831b87bdc49b0d122d96cdb6e8d5ad36ecd1651428c7c5fbc5a4d2b714b495a8135ced9f010c60b3ceeff76ed8b67f0c8fcd91d4ac3e3173ee8c5e820c30b82150098f886b13df0a9b0db22327cd88c03961f44e1b071d95b8f8bfd3571da570f873d3570f93e35fa4edeaaaf2cac6ae3de532dee7dd7e0de571dc3c1b8277f7319066f619d4384dfadf88217cda0ca79d1fa642cdfcb91be8d819a2f4eb18b9dc33997568ff2dcae986e73b58eaa8fb424805521119b56d2a9d1780519b505c56779b1b20a28666b4b1965e4287c6f9f5f6047fea5b6af7f8af1c3113c2f90c9c35764d788b26d40b181289b2d0cb0565d35198294689ccd157dea5a58581e176d866f732dced1473553c08245fcf43b9e6014ed6202eaa6fab344b79534641f4c6f4e39d4fc49d23f9fdc9f4226f3124ba6f2838cb828e3e2c6efdc2bfe580fbd29541a6f7082960fd560cab0fefa0ffe39d7fe682a4e985a9fbf088c0ba6f4d74f68d80fccea1f0bef80a9e4fb17419f3fc1e45fa7e31fec7002591511ff38df2d98ea833ffb871d4c2dd81f4cc6ef8cdb3f97c2542f1caa0b4c759d8fcfcd7bc0b7c194337e685cfe3ff5fe6f2a4a985a9dbf4c8c08a6f4dd4f68d80fccea1f0bef80a9e4fb17419f3f61ba28320bfa394ca5a444a013df0353ddfb87a3e882a965fc61e3faadd1fdff8cee0e1ced06b56eef1e5e31c56f955ff87ba0ff7ba248c214edfc66e2433035ee7e42c37e6056ff5878c730957cce3e7a6861cab573efe4e6383cc3544c1254cfa6f57782e33a914246f23908eb4d5e5164239c584b1dc4740d526f303558ea2093b7e1dfb5f3de0e75b3a5790ba69c24a02c0053e6a6ac433690c05468aad3c6874b15a6e2b4686163380fba215576aaabc60035f839e9c31445765e07534c95388fef28a6bb79bfbc861441903513f74f612ab9aac9e27a9d07f55803a59c41d5f984100153d27aa4ce3bb4019aa5dcf19e5f533424cd178bd74d21ca65a830994f7cecb8cd40c1c385a505501b3900434975f5cc608106cdb14cddb455f6097b6232f14035c0799a8d93fc4cf2898f0e300f5d3749d02003324c84a7d70403b4690ab0901b7de2de19b9f5eed01d32a2ba3c925df8c1efac83b5f91a734fafd847b1716d9257ec307cd524d256e45372c9d2d82e6a6151806b911697bb3aa1b3abaee12e92ee8633f4f03e2fe6b951d0c298ec3fa807adab045afb3d7b70bb23174a3c66b61e0f4dbb34cd9b550bf2c7b17fd6636a5e9e594e51beeaeea8b6fa6242bba871f6660949d57c72b61e84f315a2043bff173e873d32af2f08560a8369d84aaa1479a1179d10414809c8006aa16aa74d1fd07cd3a03e50a6f88290fd5c95a30876a2d1facaf1d0567cd3990decd073b79837e3af4a43077805507c507ba268f2a3da63b6ea1b2b192d8e95f66ff9e1ee4ce3deeffe4dc570d15bfc09095742e5e64c040a895981330e367fb9953f42e24a50392b980628ff96ccf2e3b58027ccbb0c01019758a8de768385ab4af4f927162c74f769b7551288b8208e786187bfe92b1074664bc55bf8f0743dfb6205fbd7469038e0fbd1793ad065402eef115550fc5d84d67bd7e9318e5e50b8a04bc47f642abc0e94ff57020b4f146ff41e3ecd6cef8e860ca2641e4c7e4d77f8db3045f33e877061733e44f7646eb4e8f680fc50305192eee86ba3c8270467cb9558b065ebc1658a2cb4b649e944eee111e9fd0de6c9554512d0b7d61a0b36a33894ce51fc0a78d9215517d9f95cd6b9f33d28f0d4128a14d1d71e8daad1f27ac4234e90bc06942a98b4441080c0fb69ba30fc936e85ac91eab087b275ce0aeca16387d12df39d580b146ba6094561b045c0d9e5d448213259d27b01dd595688779faa7a6d1d5c601413b4e6c04ed3b81d1fe3da92aaa1383a22d2b147b1a086d77c59fc87db472a47f39c85f065fe204e7247031dfe5153a5e08d23b94a38f97521a35e04da8683b60fe8ac58a58081d01ab7e42c476bf138402e16480b40b5802e48600a13259982015044f9022254c88bee02893f02501a9eeabef56e12e065724382a08e93172ac50a2ebaad0207280e2c58089340044145094bb58bb2c0a09c0d143649672256084ba035e4f4046fa5848104ecc16438cc8289312909c27f1247eefa26a6761779ec5ff48b89f55cbe02524edfd79c633b846ea0569d6afb8ceb99b41e3c6efa817c751552d1b3d4064675e354d5fd405c107434900392c8969321ad56f2996622897d83066a8086d960f050f1a87fee0c2922809542cd98bae8c54ce208ed876d48392ab721c25a2f90b99d91b9a2a5592ec428ef95274b7616230317ab4788c981295e434c1fa62cfbcf1a0566f6c97c5af1005e2f9a6c89f69e19b84f42c96bf73de083a4631347af49b4a8047f194a1c493ba1761c63ceaf4d260bc4728fabca8674043f51e5199a0623deaae721221008deb82ddd4aedd5bac7cfa05e852ee91a3ac3e09cdb796eaaa7bef32706f3fe18f7b0e47fe0a0a42d2a32fc89bffedd317c5d52f2d8e3cacde17e6e141e65a5ab327c2ce7a4f4fb023fae3ae60fbec2c913d8ad1aa32d81aaa55fc78fed23b04be25229069021803c42e1b195bd1eb7b1107b01fd2e7cabce3e584f6c3a9e0b397de791675b090fab7b799ea25feb57f4d3f6953fd4703466fc2a26d24d009f9be1007df67e95f20c4358d6ef3e4905c7ec7af2e5fc29eeef22641d48a2e09f801e80d10a78ac723ba6545d6849d12ed9996123b7cb0a67ecb6646078ab5102d327def0234239102154b33c8e78cf848008ddfbdfd59d4faa28c08302ca9516ca7591e33e1686a687fa057d656d7df2f269db5d199fe34592ab17ef5a22c0e0b60374ccbe909cc0848b21dcea9fd29fb2243a3528b93589121e14d88798ddbf58ff992f6c47dfedb22d4fafef28b65050f59da2d6a93ec44a1b9d0236b5d0fd965e8b6da282f1cdd73ffe37a50733924f34f32e351787647922bfbef422eb8d24cae7fabd01b6afbe375b3b9785fa8818ef604b286ce0122e2c984930a269cb8477e16b43efe4b4302c2e29b29e2b772ba098a79a2996e0e20579e624ea3c19cb2420ef3dba4a421ab07344099602f171d0336c61faccd5bc7edcd2057511e9e5ca770e6fca412fd4aa6d53a3c0ecf3b6edf004b526ebcfea37481466984589bae5076d41c9326a52359e608532f197cd1588431e57c01c7a16975d0543440f674bfda53f8a502e4d94b17a31d2743968e9276e9488c51f3897207d5d7b2afe890a280f9c9b54420d02ce350370ecb0cb7610e04249cba2d7f104de0f80f288d0ca6026a47e2213dd4755f64abbac3c66c1f0e42b87165a6d50172b52b77a05dee71df25145e9f7b391a64f97a14157381bc06096706bb6a199f5469c3637d9ca9bad19d59ab5574a4fbab5780e567fcc77014acb360e270695a4d777ee2bc7e8f508e86ddbbf0b1a21be6789e7984ab6053fa4b9ac41affbca2a5d545381110adc0ca7d2a7a22619dbdbf1685a5e176dc826166a423b6072531957cc2c65c68da3c3e64936b594fb218967cc95452b40bca8d0d18595c2817449503b069e3cdce0b10cf84f5c0f1a402e1fa2df33f500c06471f22ff43db036a48e952e9fae29f44843cc8170e58140de84614c318182b99956c398c0a1a438ca191d06a2ae63c6befa05477225084ba00573ec3ba0b8a23785e2fa60ecf6da821b707c580b640f37d4c428ad0bce24fc83914f9ee8aa325f98983163acc08eeb742266f5bff1c06b59d9a8b893f94ce9f6b47b724445e04663f0a620f30cc4fac0307bdd7d8abce9881ff3d017e478ec2d7c178567b542b5d5367c17ebb1d8faf9d0c88ea13f9d5391cb847c65deb5568c2bcbf8fb2fdc2b34b508d1408a6816f4aeee9a787a6ac7bba414bfe1f3f191d1201dae46f9590b6c2560b6a4e0cfa37c347c36472e5d2979091ad053b10ec6c38037f9885f317325e6ebed4dc6a1f3c5f081a4523270b08610005aeb8df146c4ca32c19528403814e67aeedd9cad0b7dd94f118a818f7941e12eaa01f33af53dfcf657db0f8940e8622e5623f801a5560aa59ab41d0093f5654c5656c10b1898d797fbee715dd1e326a51c0fe12ee1e3f565048038cd6bf1f45a637d613178c9f68f0ca9e3aac04800962390906b390c2ebe42eb10f25e630fcde692f3a6d347268381664a136825829c04934bf4fd6e32cabe372add4ec06f72a6f0be82b8885df83e015d7825dad7e80421ccc88af89e3faf43c67ea2d81a5d71d0f271e0582295e7fa28b8adedf699f154047e71ecdd22127cf074fe372708a52f943f817601b7015da59122db44562c4217d12ff5a0a44d92f4f17b69ead710b8f5636441c78680e6164e6433aadc594ae38bca5bc80f10b77a3636d4fb807f944f1f21337097a0bb4b40a9828240ad31f5bbc7478bc6a127701a4577fad89df31479b56ee205ce9354b8a84e3d1384459f8dbee876227eb572c5e88dcca2933be7ff66eb685a7f7acf8c9f55c91379805174f7e9784546b174a40bcdbd4d1ba49810d8a400ac7012fa07897fa781237f604667998b8ef1b0feacced31e27c9fc0ef688b0c28c549715e57340605163bd032626b3ea428fdf2a524342915807113f117b3a65f19d6efddceda929b75a94bc121f69a71c93d8dcb31ad2fa43d94ab0cc621fd9a854f4a1cd381b1d60be4f849d17ae9b332bf4f3856cea010a667409da01b76124e09403e4aaf0b87f7a856629c81958b63879c9073ee3c69f98bc3c5f1da51df9828b29b03513f0c26a32eb1653385b779125dc781ee2926eb410004cebf804a0f0e3ddcd1586d3a577e72f36a3afe4ef29b1dcad909a541fa197c98f54a18bf9c5b78d30aa3994fe785b5ff915d5d096ff7914708b419bbc938a1bca4e188cb215a0a353737d87eed386b9c75cde5e75806221ae368acf362fb26ab695218b272388bef2ac94c203e68065435a3ef03b0ce8c2bb702c390024dc9cc997409908581fcf7cb9efb62477406e2bdce71c9d73a191f401a509887514b13f7c7a1249df08213b2874467c3f14b344840ae49b5e1b115e06bcf09987c8bfe49011f2d7fdbb0d711f0c4c0b500c9d57b170ccd1e09906465fca23d183e3449f456d80480210f13c46a4f009e911c299d6df9b195a3460306bdb964e904423e1da2a1767479a920bc01341e17f9efbf8d7bbabd54e215d7097b6655e0ec81a88f86cf97bdb6ab2356d763591f6b6bd1996d1139ee06fa6e7693dec9d7ae4959669986bf4435533db1dbe361df1269039ec9ac5d3d26209e3db3cab16addaad44b1d3367403d222b8a6c3821fc39a036ba5d60104abc62120944e439654207edc994641c08423aca84af4d5690227178e9d4a867e9830a0b63459deecf58eb2d65ba3122a25daf2d8fa3b31266c27483d1b139309bf3edc619a66135538a2fbcaf7e93061c23512dea810a801404218284cd8e4a5814306c3bc168461960fb1fd0fc3f5a253863661044239595ccdfbe996162af32e7f7ba68cdfec73c37dfd357c7e748d149459f25325de4f05831be94b22d08fa5b9d50def4a69a583d5d97365718a273124d3002d1cbc5dacb3fc7532f529ac853ff4a67d9978b55e77fedf7f2cf763beabbf5fcf7d1592838b97166e67fea9bbc89522f14210257615bc61c80fa59b6acdcd0d7578dba3bc93f9baba2a403319a9da42e79c04037a5b103f10fa52fbe29d2912e9fda804319c487fec6f20e4f8c6a64e49768347acba2e865c4e19a0e99ab35991260163edc0abe46a2d2f8df61959662e16add4185cad7ce2fc63ce50290f4a2867411f1dd8b656db87603d65449f145c93e69894b873fbec393ee927d25c1d0e1815085b41c8f7ff42023076650fee72de5720cca8144ee2cecdcaab47e4e4321295671d3670f49d23c43510de5c84ba29dd30c055a31d6f0444b50d006c591e0a8cb350caacd75450808c40188e9b890fa5e31e66568178e75c393dec05addffbc629613f143798f660a31d4fa7d3870734c96930100afd2df4afeb3fb881aa31f66f8a22f1ac87dba70b3aba9773e93fd83f260061f13fee853531cb1178b727615b4838995ae00bf2196701e12446a1d26d1e1f74d8a8454f978f358c02688a4e508d9c46e9cdf124c088cce15dfedd9bdd6d6105e6791acc03e2fc750b8b00b97d045b3f96a581f565fd910320ffdf10f11cfe85c99dc77c431e04843f60d8135b77378eed8c2bedaa930a806740d83b5eaa055948180fa5a37344df1e3c210ceec2d13b3133208c1fb0d68c36387081e3d774eadd495b5fe44a0ed548f4a3b6dabd8fc08442c29cf09e9d61dfb538150bf8141aa98b90bd641b70eaf0ce61eed2f63923f33f4acd0d1ccd097bf213ffb1ebb34ac73a7487fdeabea9e68435c92b1ef11461b6f93961265d79ca8154fa67afc02cabee45f79b30344c61e846dd7a02e9a8c8b5f4830f61959dcb511f7153381969a62f21f305b1f0af07b70762855510820dfb049565c7bc8f5d20bf297cc4025b9e09bdd07d5743706e5ef2cffffedf17ff884847e62bd24b603217af8030374916b76803ad4d937e59970ddc35e76e232f151a9db8e94644c76718f4b4ea759dd29b4334c0e291ab348df43b4bcc0f44fb570eaf084c84032a027f9a5a301a12a703b183d50cf6867d99f265ca2a6deddf8dff525731ef0efc62f9cdbd3bd0b9f550770fe9e2adab079c43ffecdc51c22e83f16188e196e5c7ae147ea4d884389d0b8d2d09aa159f0b2b6a22bbedbdf796724b29939401a1093109960959d6bccb997fb9f393fc394a3e49c9355c25a7ace492dbc82b6eca369c259b3c67965566b90e39071c14e0e3861e36c4d4900098e7818003d0b0e3c5678830cda89054b490a602963b72473289d1e0b001aeae3ed552e71202ba80808080808080806acc55632e97cb753acda91de1565744d50a83b8ca6a4e507cad4420f9003bf1353570a92e5715d2aa52a6b9e60b7c71e07cc99dda36f8ea32a857b583241422cb055fbdd62024af7117a9d5ae2558c9953ed8677856636b6ab21acebb0271b467763ae41c320e590139b442beba8f1c5ad757bf21f7c8a16d7d751b724cae212720c3e4cf3c3202f201320d79477ec961d613663ca21c6658841913322abe7a8772103772487ff0d55baabf90435a84af0e801cd2235f3d0039a4395ffd94432ac55747e5902ee1abc390436ac5578f2187148baf8e2387348baf9eca21d5e2ab0b2087948baf9e2387b48bafae2387f48baf3e801cd22b7c7502e49082f1d50b90431ac657972187748caf6e801cd232beba2a879588afee92c36ac4d77a82af2e4edf8545e7ce2adfaf41e44b0592396a90af5e4f105fb29d9d1400892c0e89f892f1f024f1750623e24bd6d35382af5eab5722e24be6e3538bf8ea5526b2b432e24bf6f3d38449646563c4974c891232be7661c4970c08488c2591f581115fb2254bb40014592757882f59501016944416ca17f12563c2c40a5f9dfe44168d2ee28b9591a15e7c75ea135935bc3ae5a2d22944568a16f1c5d264115f2c102ce28b6d59115f6c1015af4e7722abe4d56992c85af16ac3e9160f040a2d2704b9e2abd325c417eb9222be582132474e7cb13532473d125fec10935716af4e71222b7b05dd55851025d444f19542c1f2ead40745882ff62573542391357ab1443caf4e7f105fa48dcc51e913f1a5ba648eea2f7a044a84a741c8ee60ce3ecaa07b79e4377bcecad7b94cf2193277e3464bcb0b2f0000000108c0e98442c100430c31e0c0914a0940003972e8d031800110a000321840a572376516b7914dbe926dd4c8294e23d770944cc34f328a7ff9c4bb6ecb9ab332f519f2e672c77ab56e2bd08d1b1568a7a56587e78517787a0000801e9f0004c0e7e774fa5182422901820106a02531c4b02408078ea0af9e3149a5322632021080cc4c8e1c33343a5c87876d810cc00700e4abdb16018214c0258357b7420c50a37202b40a10e46570194088cac3ae6e87ac5e2e33787569c3f2ead5b51ae2f29ac159369495c3fad667c82e39f454394479eb06c8614a6823cc6f9d00397ce1ad0f20ebc861eaade7c8e100deba00726880b79ecae10c6f1d470e6908e39130e684518ab77eca615c4218ad78eb00c861c4e2adbf90c398c55b6fb17e2387918bb71e53d6bd7cbb98b20e661c53d6731ec59475cfa498b2ce925762caba297b4c59b7915b62cafa4a3ec594f552c61153d655b28e98b29e92658829eb35b24b4c59a79177c4947594cca3861b72e0c10131657dcb12a0404c5927e51e622a526b372227cf291faf468a4501e8737cc4d182c97359c7596aa5a433387926a560919571d591ce2a4e9e4929f3359d88ab2623a2aadfb8512a9d9c7c385f5cc8c11a553d862ef88614f30ad4a71a043d658ec306389c2ffb7a4556f7a23cd448af24cac849495c48da25585dd3853189e4eedae2f5a78f385bc8bca4a1f0c75b0f298ca70201915c6e289390965181daa651d56f6e4c0736d3a7a66994cc22a2aac34e2fafae50ee8472878bfb05068334c6570f923c3155ab2ba8de10f12124213888ab676650868741ba02eee2ab570bca9d98f2025b0f6578eb340a3ddff211270a469e521abb6eb550f2f13be7503a1a9e8ff9dce7b6f3622a505d62438510595bc495b46928f48e7cb14474c4f88a051b2f8858a76e43b9a3c3757badbd9ef55c722ed3fc7a496b62010bd851f2b30448065d1a1e6699b5353cab41c34e2dc63c0f07ebd4ea609d4e2e873ea0b810f24b7ee2d2c67a754b44be481b9b9baf6f9dc8578f9d6f8ebd1e5fe69a8771c77176d2e5ef659743415e97bb2e735ddebaac75f976d97639dba95da6b235bfcbdd65f9200e943cca57baa647051c77b8f4c0d5da45255ace57eb587cb52ed6431abe3a67c1f087963b5717832149eedcd387141641d848db89d5254f8c282fdc1a7de4d9a0b90dad6f3e6f399bf167f97b2924a636ff3ecba1a0d067d94be27d963b58f759e626902c6f3fdb6759c3d13ecbb76bee67d932c9766a91fa59a6b21553f4b33cff8798da9c47df305b626a739bfb33229e0fd44f9f4b617d2ae28361aa195eabcb9ec8127975c9456485bc3a5522aea46ba25810552df93279603ca04d7c9d3c5ef270e0dc72d6a95b4aada5337289fa867389ba75ad73ead32797ba9ff7a1b089aa3b4074e84c8c49e5765aa6dbc134a4893c1da877d8f341bd2bc1bece579f7a666608fad7a9e61f6d199e3e5dcd390d070e2e9d3ebd6a80579f3d1408033ca4333c783899ece0e15cb280da0050ee50303c31c09d071269078c170056cfc3ceef4e953b5fbaf4fae9bffb05d139101bf8dbed60ebdbcd9cedb210f43b9f3d53ee94340f4f9e771a88c3e93db065fa54e94c4c55bf190809f49aabe0684158812a505dd2aaa096e134eb9b8fbc1d4ea47ced8a988febd7edd5e1baf5ae84c3e9a90741279197e642c8b72ef262ac7739fcf1162ce170a24ee3e421ade08ec2d753a3da6bbf6e48d5a5dc401d3155bfafec127d6b611f6f8ca0fef0d11289234bb0827677ed4e7a3bc8ee29654ff74f0335a5f7ca99f822898839224b1631412923050e65e861de9ea1325dd3d25e815d121165222b4aa982a72e9768d50f9e8f5e4ca4ad929e22cae44b2d907c6320037da232f3ca54b0872a1af5296622529f6acbf458e9d5e36b0e04e7a107be461f360781884dbe89191ed61c0a8542a1e91ca8811e131c3d7a1b38515a0e3f708415dc341eb89ac35b7dbb2f026344851b08c4e4d10d883035871e18def662783842c260c73c88c022441e821f3022e732cf86ea5de9ab1e109c87211f627e131f10390f22b088108ca0c911b6c082186494d10446e446fc801181469c380e8140705e5d9beec525bc8cb0d7c058aa162cd526447e924720618a884d60668034293022100991638c31c618639148241289447e840b8cc847200241d244b57b4570b7cce00956d0e800880aae80390122859c1e181ca1020e4c0f99a162860648984c4107a69530c21528908210b24002a67d0b830b2eba90dcccba1027b36e72c1719cc6711ca771212e14e238ed0bb9a6711efa38db699cccbac905a785421aa7711aa775dbb6711bd7458e932fdcd4b88cd338aeba949ca67d2e433e6f964d8deb382dfee4e6f46e6a9f363d2dd3e6e7d974ed5249bf2e9b9cdcb68d9b21ef6e36a736a78732b0f3b88eebbc8cebb28c0b8542a15028140a8542a1502814722f740a1f9056d50ad23e6549601bb1c8423d8d559db922c5b9bafde361ed797a699fe8ca111c7e327375316ef0c4450aef3de56018ac80c34fe6936955cfd0006905f95c9f90af267e435a95f98b08ec698fafc87f369f91a7b4c10fe7a9df9820b21135bd3af4f0f6098321053beacfe199d1eef62b414c4129f13c31816b30eed8a1d0033f67195c154587416a3e5b4c8148f5ceb9fb5ced6eab7c68e7aa7b5ead13cff0f007ec434d1e3b77e767b3bbcbd9bceefd807df46ce0d1a11c721a1054038748796dfab80f04750ef870bdba0fd7274739ea997359be7e9dbb20109a57044b17f1e81999f31f7ec03e1930ace0746e72fe71ae826307b83ae79cecaa735e678c366f086662179ac09c78113416c6881f30272010b34993265d905ae671da407d73aedbfcfa0f3f603f1d08cd430ffc048748b9130442f3303bf1ab79e637cb3ce63c018108814d2071321a8d46a3d168343a393939393939f1235c604e7c0427209e28391a8d46a3d1c88f7081197945b0ce7b524ae971f3ba1b7d682ff9d07ede2c9b7c787d0bfa2c03430d6ce2c4fb042cdda73f05218f2385222f9d4a0dd8cffcc7b7e723f41928c4fccce70e2d232323f359069670701d86906fa9ff603f03879831d167d4007dc718a61e5dfad4d53a41c95bf7d75c6a2e359719c7c5961a8fda0425cf75dde88607065a15ff63ecf618add87e8c382f06f74faffaa6dba74fed9a8cde375c37571f18bad7c3387697655babb55135a34a4695e4bcce3965c6715207e9dac41a38da01c64635d1b9cd21f7c17aa66d9af44db3b7bbdc4172e870de44d6e6ed7d24b238ef8e69db0e59167fd6d0a7f62cdfc0430e15ec9951d733a69cd13414fe781c43b0bc38fa24bddbfbd4d8664d7f6cfd9521a7ccb82f3a959a6f9bbc92d2e93f5ecba15f9739ece1a56f19c713d8fa0582934617536f13688127cd7c6c1470dc8207537aedf50ddc34cde36f9ba65d9b4de1ca4bb9c8b14578ced84d2cf48831d29f5de717d72dd5badbc9972b734c9a59d7c0ea9aa6ddab5d30b4545e41094884d8ae0b7c721c46c099531f99dbf8f77a85710a881f658c328bdcd7c98f9e944e88f74a2033028771474658844558c6c4957526ca708e348daa9e396d5117b86696342d29d3aa991f7af5797509ac4e13b5d271c35c7da0cb074ae9c5506e660fbc0d855040fca9e178027bf51fafb9e7d1eb313d14f234b79af3985dd6c0ee345737a2ea8da7ed66d4bb5de6f5a07e7de698cd713c81a95b3a7f6cbdbde0c70a3f3f3f3f56f8b18212255d5009a4a7a4895476883a8f7e3a3b1a95d0d8a1494b3e2875e915d6e9910237f218794c541579ec41a2dcdbb0982a9264c73e37bb9be38b623aff721042e07b4955c825c41c487424509f4422e7aea6715e0e70286336c8ae39b9934818df39e7ac3256bba09a3182220b87283ef20e4514240a1205893cd4b0f3689163111689441e413af2dba75ac51294907c7850b28cc5140c4b25ec20f291df1b171b1db0d3683412f927f24fe49ff56fe474e454d4793dc074c60cae613098c867ff8caab7cf88f37618f9d73ddfe6e1301a8d40d19d41588644d3b4d5dc73279d4f9f3e3c954ca08b495e7b1e080ebb66e4b7e65e8cbf6e94b1632c632879bee7f5f0e1f6a97a5e0f11381af9078e4633169b32f685324897a34b4cc6226b7ef579039bb12aba69950874cddb41e4df0d1581f483cd7b31fec030fe8c66e8e89e9e9e9bc8b25f7d024d1c24dde1bcb9e9728cc861f3f3cfb9195d9765fb20a6aaf71331870d6c76593e67fff6989f81981265b343e1085e04d2158dc81239761a5946d4d7e1cfe3e761ca873226455fea03b3e89bb783f50f1c0216d3d99141b6e933eaba48f3745f1ee2bec8f15ccd208daa2ee40ec1448a7c15cdd6043269b0921ee44b731173cc1952ed2885af2860f75001c7c8cae64faffa02e1194492a134347874243921f94ae7bcf9e246e42330bc4127b961456c642c4b24d94b25c454752945cc519dc75c499d89aade461a8bbc05370cfb30637daa38e0bc6955e9f32068ab9a27d6aa866500480463606c04020581c16027d1db01f5d3ebc1a18ce9d4ce4369c5ef3072dae9641e0e231494e9d47b0a9135046e2ee2cbe7d5e7cca4e99f5e350cc31a46622273e3a843c9f5b157e7c1354aa3a0388aa378787a6e94e74d9f2a0e247075d087910bf1599fde65f99249ab2e58bade792d5d1005c41981f3e624fb84d127033155dd662b7cf1d571c3649010080b8209f93a041321157123d53994d932a2d450c8e9873c100331559dcbf2254e646da00d1a2884ac3e94d680c3c59639494e494ebd7b7ec76877abbbbbbbbbbbbbbbbbbbbbbbbbdb7bb0316d492585548306cae86486087f21afe3362dcbb7f37690dd2b6e5a993988e92b17bf6c503be79cd99c999d734e6af29bdbb36c83cb9b973beb2bf7e25757ca26524e713aa3031b3e5f77a26aad4548617cc5a18d833189d4380e8633b6e261e33888f3f572a42c9f65c53d6f079253ef3c1c482427914cb991e824b191a7909a4655a791655f31e72b7bced0f4957c6dee586e95ea29d549b96be4e6c9dd8392db27f74f9faa9fe49e911b28a8994c9939336926903c5b33c8cc790a69d490c6a9029e7486667e2871f0b57ae71ee60a038d6aef6ed2d7aede9e0e59d6387d8a551c58b51ece27acf59e2f2211076b2d485365eb6b4abbf470e81c72c8b28cb6569a34c54f173f5d7c52877612a93b523741f9e2624b6861dfce490f07f80785c554b54e234beec41cd55bf08a8dbd3ab08bccaf2a504b1b3f516bad936cacd52d105f322a24155378eb3d5420be644c60c2166f9d029135835b9f407cc9b0c0020a6f5d0291b5b9f5074427bc75074496e6d61910af78eb3c4456e6d6758855bcf51c22ab73eb3eacdf1013a378eb3544d6895bff08c55be71159286e9d0604bcf51d9145c3adcff0f2d65d22ab865b37c0eaadcb308002bc751d91a52293e3ada7e28b959989e1ada3e28b9db134d65f882f96c67a8e2f16088ec82aadb8f596c8b2e1d63db24c2d96b76e23bed896f594f86283a0c417ebb22e8a2f56c84a64b164b73e8a2cd0ade3c81ab9f5e28badb1aec5173bc47a8d2ff6155f2c9198a3baf5ee465664b17ce5d6bab594e4eded60a905addca111c7289a31c36374f7185f5e3cc61d3b3c461a68f0180f70008f110108f01879f0f018ff3d4618188f310109f0186ba821c6638cb1c163b4a187c7d8c363bce1061f0ac021879087fd3a788c3e3c4605788c38788c39845c0727715b9ec1b5bc7956e0f0c472046745325889099c87e021f111e78b99978f126b5578fa8b82a45554e60b237f5d25c955e1014282a51ef2b3191d64d4afeb70c99c2b65b90915a72ad493c0a18a4eab36ce55bce4736563ae56fc3aca155926186cbcfedac8f83551d7b98c83f4e97a29e39a89babe02fb8b5d13757dcba72f7d5d89096c3f7a68da02aea620cc01e9939c2d678882251f53029f81b8d5a7eb2528b08a975cc54b1ed69b10b7ae5f2e86639fb6eba5acb23351d7555474349087120e0e57523247d3a8eb35af7864657e3d47d556463c5dbf1bb83189a9daaa415a5553203fcbc02ca3711eade284ef9ccb32909a79f8c33653330764a68234321745e6ab6bee39a7654ea64fd7bdbc05f5e93a0a12780bfaabb9ccc6849be16838201e07e4da2cf659dc3ecb32d73820335cc0fd2137b3830fa255ac88a94b41159d98ba3d4c3fba4189bd4a508632ba89a9eb5c8be5c5056955e9fa7cd7a7fbdd44568dc735f8855bd87552f2d755ae48d22acfafabecb8ca75959e567d7e5d45b5f975152be24b352273e84496c8af8886db3e739929c9b28d897d159d88ba1e6e47bebaca1571b5f5f47613592bb81551d76bab5230e4300be24a4567a2ae5f0e45a6d6d00bf0f5ccfb87ac869e935e0d1e1caae8641e5974224bbe3e731699c8a2f11708d904253645d988f3d24cab42dcca32ee536904dad03fcabc24d3aafe7bc263839f5ea578fdeb2a4b5a157358d00a6a154a4e10257fbd44d3ab86b93ee2b21025f6b7a7f0d7b19056cd235e87249664b93a4aacd5aa4ec9392c98e269fea1e6ada74f77fb412d8143aef5d74f7c4696398722026e2739a7759ded732c3243c024300481ce671eaadc4416c96f0da7a1a2835b2490450655046ee7d1b5e7af8f3c2528b26abc3ecc607f1dc55190a0c422abfbabc5572d628eebd579cc1a2a34702b08899243149dbf3eca28b190eefc0ca727cef99c80db923edd4d499feed6a3e4af8a4ecfa778e7d7af6759b403ecafd2735de5e7ba8ace15f996497dca1ce7d197b116ca375323f2e51a49712e4a5a230d957c7cbd00a77989e33657d1e99594a2a5b2e3a302d42afad75598b84219547efee2fce8a8e8fc5509faeb6149e6af85094b347f9ddb34dcc241ae6357ab6af00bc3b00dbe7848930f31912e7cd852c687d8c85f193ec4adbf9a860212750c4a24f9fb310709921c244622921fe42079fd088c2873946093a304224b628c322747494e4e1757e6e4f0fca84fd251adb75e62026f25267057ba81f2349e2bf99817e8f24b1b3938ac2dbfa116e0cc91dca0892cd3479636579e5b3799745ac5b97553921b409bab153457a69d89e222aa526efa64a32a050a538fccdb169a9fa81428a869a755329e6a68eaa9120c7fb85e419a7d43b8fcbd2aecb7af877831df8b097cffb7d011b89da3a123f0f41ea6bffe11e993f5d805a31457e879e9377a7a25716eacdff8b9b1a445a60548ab224e173c6f4d3b41640d1578f061c7c17c663ebc11f4960a403e6cb9f1610bcddbecc396d6db0c266c71bdf55bb30e342f55787b7e5a156e2ea05685df90a0568594c73a8b4cab3237ed30f9d0a4848c0f4d4bb8f061cb181fb2ccbca52da5d75a6badb56ad3b34136f1626af51ef4eb878378009a0be3b9ad4e03cd49073b685c603c0f3f1ebcf5ef15777835c737f134caba6967c78b31f1f429e506c5821b40ad0a536e6e3441e3309e579f3e80d773e327e526b262dc5ca1d8b7445499907c2e53159f9090149bcb54c58d1e13925b62026f77cadad26e22abbaf54d0551b5b9fad48a2ce91b0ce2c97a58673e1cd9d45610f2b4c1e0e4e36ad5898b78b26ee58d9e1b3d317503099bb7ce830f427e684ab931edc494ade00d9a98b2377a7600d01353b6b6531b09dee879e2464f3cd58002961edee879546b460eb8d812da6002cff824b00d576415e0e79d1ed259e1220ce9fc741622601b40f207409ff9cddfe7a4b4d9f45ee82dadb3abac36a4b9ccdf73b7bb272dc0120079d03157d333cffc8656cdcf3c739524700daa4c7ac579e69f2bb2747cc6e553a332e7c10112a040af70a332cf46e1cab7f429f39b6b34014be7c101f1e2b99a4efd9afe7a7db56afec5f1d7332fe66e5926d201091a90873e651fd013b2a344b0f4f90e307934b6fcd64e64c9f0b56acfbd09c240a7fac3ad5081578e80ad47393ba4812b2968cdd52903435cc196fc5a429e4a2965adb2caeaa7ff5c7da25fcdd320272ec0e1d70a125d098a6a016e62f33b571b78033d9181efd7fa5a737533b0bf560fd1c7f073c9d8a1b093e958888061557c5ce8081cda78dcc434b778312b7d8a9fb7acf469e57934154247904247e006bf21df906f0815827e75ea7854a96715277ae90b8e8b73f6cc9d173327a5924a812b496f0975742221d83fc4b10a1d1d68c109141c310509607e1039c20421e08009393b57c044570bb41802061592dc00a6035eb860053a5d08a1c504267a6c8943d015dbf234220940c5d549fb27299ba15a53399cedba5edd0943775b85fa5865cc26e836fd3df7f5e8d993ced98352daa366b5d6ccb65a599665d94fe7be2f0832faed89b3355b7dd3374040b246d6c47c41c05207fbce6951f6a435b337d4838261f81406fe983233828b2d618ca2a73dfa9dabcf230c174347e0b0c2a417d32581358e736e5229a59492a314e38cde2b2f374326c0f8f3eb2e3a7355fdbacbce5c657edda5e7e78b1bfd420740eb424860ea5f2e752e49b089ea2d7f5d944d3d13753dcba69f898a2c2922ab73f0afd76cea69035c17fdfcf5cc04f4b782a69dae073864d9e978c0b22361a60781cc3f9f1e04aa63d0e566a2ae7fd9253651d7bb27f00a16b8bd05087f0b5088b924e090e5c5623359602c4f4456e72c2f96188b8e0b4eaba45f7789cd9584b92e372e372e3d3f211afcd5a0563f9195ff7aa804987a88aaf16224e72caf3e5d16274c3b1b0d372c4ed080c3f26a150d475256ec7c4ae7e5660b1d81c36f47500b5044c20e974dcfd9bac58e3176044596092586009c303385c5d49cce655ec808dca3cac4949bac882ad34e9feee6d7635499a0104fd74353920f4d44fc75934c6471bee594584c5d37412105c95fbf6eda69558a14913406aa6607187f3d6c016a6e14ab11e3405210cd28c6f23b7f1dfcebdd8dbf5e6199a378d3bc987cefeda7601881df6888c1050755f31755d3aaec72d3a7eb32bbc4fa749d0404cf0f5d566c80db5d6ebe1bcf79f4758e03000d3a293a312f640496323125dda41353d7b3c1f42699987299c80af975934e6451bff409fac4bbdce8fc75ba0328a6aea34c8043971bcf26a66ee827a6ee05c3cde6afcfec72f3d77bd04496ff951ebac4febacbcd5cb5df0e0ca2877c0ef498bade03c76f60139fcf7be74a0cb0c7287a6a78c1c596d0c4d5d88194b21bac5d0d2770f8c9d4bd923232323246d419bcec8f8b2e7193e9b84d58c1d4e1a243061718c4ead541054d5f7c3bbc335131e6ea9828e9170ad9aec34506172584283144c75c5d0d870c1b527b186d1a15ffd6e0b6e3270366ed965b1c77f76252fd8843c6111fbad601f8415ce968948a875665cdc5b49b74f029fca1e571dc2e70418cd76a80b1177707b886ce650166f988c38527b41f60ff88c305150c019bb480054e798276834552d823d822210ab8c6479c319cd091c41842fe6201d38f3863b8640d63b426eae6954649ef4c323101873a74c8e0b2434ef1f1f62ade60fa112728091f926a10ba5630ac8ebff721ced756d3279cf974396d967bf0491e09882b0768378c4ab002b758d2755983cc42890c5e642001f44516b6f004112c964882109a604443418e0c7466022123396985c7b43d463d411568b409da79dcd00d5edc8d0414f4e0db3bef6e3be281d5b20c3ada5748b77b520c7acd50f511df384143f8f64b7292ca479c2014ece024060eeff797a2fff8088632c63b5f82251fd2e5cc613f8a069f9accd8a1f0022fa5ff78ef8ca2c1f2d4044bede6631fe1388e5362e21edc1d53d1efcb761ae30c2060e9e1eceeee1212b0f4eeeed9b25e51e79cd38b89b1de5c33e4db3521dfdb26b7d8a74bfd44f2da8ab5dd8784a934a41c5c902da6e6db59a2c0e13677a05f37d744d1cc5584e9976babf9f66c60f9ada64fedf80a2caf8c1d0a47d01a0a5eb2a42bb232eff6d007c612dfde29e995a8667aaeeea75553140b7203c4c69b8131f916bdba25229d49c4948929b179550a5298e9453573d53c2f9f76d14d3311c5b2d65982332beddd5c2c756eb1e58bf5568ca7298310e27ec714753b45f0d3638ad2ecd28cc66583ff0c1b58af608874bed6af66a264226b7af5d6f9624cfaab5962a304f6b57eafaf15dc5c9a10c0f8e6c18717099d4b936d6c89cd2b03359b2e582f869afeab992bcb637d3eabe4b34b3ecbe4bb335fa5d95c76a7d2f41441166728fcf132a6c0c99aa39a510f17c618639ca104eeee0e638c31f609ac14b87ec40942e2439c047f1f71c4e00212b0fd882386163ec44fef0f176f667cc4994216c4d04209f762da918924604f602205332eb98213a0c8cf8b99b23d8a01fbf69017d317892d04b93c756f45c9168c745e0c0d83081dc08e28c21639581185282031c50a52a0058c8c4520d105ccc993c809383cbddc420bbe1bb52303245f1431c60d86c02c010b24a0620c29904007303a6464648aa0243041151e45ba4c6902def1d2e565949467b4a4085984e1826fc76164e1db3512c909d263ab5ef8b0d38291a73c4f97b89efac54f20e3a953eaf69276b270841d4f3d8b63a0c08b5094524e59c587dd0503e8db2318ae6fa75e4ce3156811c58eca53bf78c9531c202b9efa741b4ae0b03be180e25162e8a5320a4f739218e3e953bf2107ea0e90400f91f543fc1935819920169810c5c02365b097ce420496be32ea934cc29c3954e440917384306194526dabc9696559966d5c8eccb6e4de7bbd1ef202219be0f8e4e0f04c1c2413e7c8c481799ee7c96fe26e4a9c1a9c2526ce8c482412cd90385d2c1143a11853d193709146e7d171553d4c11590b5630362af40c8c249e191d4c2f4202c9847789af39ea70b233c1732d676c1a9231d51e6168a63f73c4e98288af59b6bc984f092cbde3cc42cc99a2c8144c4cf18239e79c82e6240ccd8b6dd382ebacc852c47e24731935a10c095fa808e670201ab560468e142438d9c2e80765874677e2c59c9c9cd0a891138bc59c181435ba20907090135b4225279644a96bb27dcc89228c52a954b261d294983a9973a268423e12050f7214353fca3967f0460e144ba248e286d785960f0b2fe0b40080f2840074549c3a9993841fe42421063227a1154312687e144f21511139495c494c90734550ce154a72aef009e2a2c716aefd94448e128234f9a631a4b85b3a670a9eefa62d9b8c647b740aab3436b1d2c499ab66c3559ac8c25e5db369217c8d597cf520647b59067bcf71ee3e0f9b0759847269769ca5b0ad45d3e36bd1c454f5ea795ebdcea7d7a3e4793edff3bcd4813ee6773ebfeb3c94492f3d1bf277a0661353756b856ebeac6d9edf034f623155bdcb9f8d1cfcb93c1e66f26f3908a97daeaf7eb7d6d6faea59db44561e75b24ee1dabda4d2d46ee992f0b5deaac18343d24f299dc6a69419a5e6a7d730a39c8e5b35bd9b91b6aad618d1fa4af393ce2fa8c3b1e3761359275b2cdca4f8b9edb836a9da6ab6297e6e54bcff6d0fb3bff77a4bd528485ea7afcb7d3773556926aa6e357daaf56e352832dab4df4d4455eb1f1471a54263b7574455b7dbcb729b1371f5dd702c44c040669efe025cfd9e00559385fdccf6b9eeaeca75ebdf4daf4e927c3d9f92efbb09bff0f3f97ebe7ef8017dfdecdd5ead0a516460ad0a55689e48f518766df3741499e975ab69d528a843fae18856fbda7713535efe3e9dd75c7a0a4ce6ab34d9c454f5eb7a7d47825af52141ca972f093247f570c4e4ebc8f5d5bf9d57a199289ca84229229e8e44158acc75cfc3ef06a508151a14995085e66bab4ab14ff56b7cfd6e3e9deadf4ef5efa6fa17bb9e659993e6eabb9932aab6579faa6a73229eaa87f433eb65ae7362bea6d72ff6b59bd333d857d00796162e830b8af998d42fe863d2a7feea32a3d7e8d52b69849e116c6464141b25f122480a6cc4337a8d6ebc30327ac5f0e148a77e38daa930e1a827c526e526251694a293522405968293822405b66d9b56b932b82022380f71114ce20e4e4b2992024b81a514f9826c5a157e41a3229cd70370adaa5f10f7d57c35f85e5fd057039b8283d7e865838bd7cd29b069a367f4fa5e9f135f102ce5f5399142e47bb52a05075fd0e8051bbd42527c41b0cd158a8d5e9babc68bb4337a8d5ea3176967f432c14236e0624b9db2d65aa9572c70d5a949eace16b43119b9228b00df0e548df0549daaf35d6d64c5a93835568a91a41e8c80e612b8d812b21c8143fc2a39dfa391caa693da50751e2dbb48576c80c31aab31f922bf31759abf9eefe7a34101627a45d60064aa9146d5ef4749afea90d18a4d755521b5a60958fad7f3f950eb11864757d75c9578b87ec11048180b5aff0143bf2e606fff80e62ae5893098f082c70813248069ff82e6ea870da0a0f3041d134051c60d60dabf9ef6efa73d7ad3877e3fe0d7b3033c3ffc7abe59b21ca0bfed1fdeb66ff3429ae669a21e1fa0eeb45ab76c946fa79126ed56ae6f61a54fd7d39cab5dcdbc1ef635c7a3205cab690b98f629abf1d1eb614b4ce0f9d12dcaec26dd9a4889e914e7d15c96812a3a252670c986ec1bc4d1a7ebfd333e4403dc82da537baa4fab28113e5ceb5eaf87fc206232df5c250996bfce12f45705e8afab5c7f4166ae3258a3ee0a0689ba7e6d5ea02140167f9dc5c5df233fa898badedea9068728b11ea1e75a31753d9402ccb568161332024b161d952095257d028aa1eca0f0f44ac5a75152c4958a151175fdaea0c43250259dc9a8644cb5964d8e3a443422000000059314002030180c88c4a2a160248d2361580f14000d89aa4c664c990ac42448911452c60002000400044000400490340000f2472ef6b6b22e96df62377bb71223d7d5430ef327b10d88f70b6fbc9a7767faf7e4b7a2e806fd01cd2a71f1cb7b42dade131b45c703c05d6896a2b635b48b70a8a16106eb77db06cd1404b52365a5d1849b8d2a540b83a69a1c766b4b14526041e72bf56b0b4f128b64815f8e00eec9c12c919c589e9e7c221d94b5427a1f25588c43a3d73a1c5c41ac1304ce55a13bd2fe8714816c62a5b7df5a94fc93e2e9b1c17005918fb73562dc74eece62bf5d03288260025a78ed28f867b6698b100caf5a8991e3d912b45649753c366b6a20e376948dcc46a564a0e3507f35ae5d9c057b23b7234ad8057c2d23672183ea6bf32e3f3883dfce91aa62cf150a835ad1106f7139d8d52e9538d0f7f93d77848901555f707440b036fac61a169eb84d4b5e030e2db089307aa493afea9fd0be0e3dc3c962e90c0f20d18627b52e36920b41c900f0349062c93008ef5ab0a530169341a865c7458ed71571de788f79e0843793896c3ec91d39409e6dbc402e87111bb7506e335de35bf1b85834dca5d9647329f9dc985543b250d06dc4359a3dad8c97f61c3bcf74adce1f8bd6608a13fc846ec06b1a56199d775e944056c6cf255ddaee8abf41b8257fedd65b38ff2ffed956562068109b2b294adc8ae800533d35764831f17b97ec5a6a4d88dff210507e021c3dc4f794ab07a0561f5025cb5c028b01d72c7ff17ef44cc0daa85a4265d28e658a8231853dc7d4d971612dd5ec56dd15c3f3d0b01c4b64a474e2323a428d09e55ea37186afb47a09c6c7432d979482753a457735cf9ef622fb11d1ed5ea83c68397dd47aa52b36a0511b4bca44513e158d0eb1933881ff041b1cf7bc0b0cb41a0c951488038de1827fae4763a8b772e3dc27c940e85ff8b2b7a092263ce4d0920ed0408416fd5c4939775d677afcf18f6c050d71407408b0600584c3a24fd847112522aeaac6c4132e3ca452626fb8f26f918c064c3e865ad2b83bb09f7e2eb46628d690b983341cfc88485387b4a03bbcea1ca5456b599b1925320e152e5eae9ef085c91d9be88deac5fd29e5708f8e26de2c0c32decb7836a0f98aaa8075c9a159079d4c98b07895d5d10d3998a7c89bc1ab1c9c0714d7b0b5a372e756412c8ab9e88b5a8dc2e5b68bdff59446c3eb920f2c8f3938134208f6206664c4c52391e873e8d2c13fe6f9626613d500a3b7dfac5d5c86520bdefb42b024333e1f9da92aae9059167fe10c0fc315e684eeb2dc995164bad551b6dc515349496225a52279cf18fc0d68f78d279ce07cbfd9f62134ce1c95783340f4121db57e93c77108fd76770dc50e7d5ea2b2e1ca8edeedb4d04478563e7dc00c74f828e94e59f7d770ead62ec9af2e1a9f2330131ed1b4595a17be4dfb3102049f118230ea238320450b436d8cefc53d621ea9c0f197d59a7a9b7f4e78b7366700887f710dd93037a66f35d9db770e73bf68231f469fa09eff5141b43c4450ce940f19d4d63352e8d86efb11e92aa1dcb294315f96c906ea16d965bc7efff9edc2e1d6d1fa6cfd9047f7a6bc4bd6d9cb499b6843e1d5f31c46c4b61e89c08803dc5bbe45bfdb8901ea9f7b54478c59ff2c3a5cfd4766c0456ef44622b00a429124b42577adeb2008b9b6f8bca3b95154994ca9ea929cec6c06690714a2bbac59a604466022e51d7630e2a8de4dbc97c74cdcc48307d482da3e0e079ddd3daa1c3bfc833c9f26c2338a4c373113f49c7547c921301664e4bfd9e6720b9ce568a2f4f5403dcf45c461e1d2ab06ace962b6e07d4dc8aef98d957dacc15accc999fb59d46e10eb8841210e2acec24105a93d6ae30c970f1ec9d3ccc19dac382abedd1ec0a330303b6af909593efe43cbab6453f19ad28384aec2163c6ed9c8cdb6e0d024bed5d0aed69e2be043cc254474390a2de610661a6645462e65d6386b56dc4671c7ae6372722a10ac2c565d336444e93dc51174e7fda4e355082ef62f07c993335a3facce3d5af684ba7ef4b40d92b5fd8c4f20d7b98df0aa663a69b198be426ac9c528bd9a25607046c62fc944f08a588d31ea3c9f37a1fbfefdfe85e58e25ab5993bbd0c870ab710662e52158d0283258acf5bbe915e2e02943a286040a57d5477fb7be017e2f7c27d2097ba1bc39cd1376bea7ecd9ac62003b2adfb982e3389c60ce79e02fd1f9003006d61c9401b40696270be8b6b79c4f5fe4558e6afdf38b8a7d242316f6449350bb53c2418058e8d5be66f295fdd7680ddf69ad5886821229db7ae0504937828ac39a12dffe8704c4e6cb940361cec9ba1f4480c614413b04a5eb33dd61ef3e6281b582699fbc9d3c343cb6f8e172b283c5a385d9ad9a77989a9e38799c3ec888f71450864b24a07627052f4399350d314cf88418783c22b48030bb010d70a4d82d780439c2c100f75d9a62e685b56d5e36bcf9681b3317044e8fda68f39eec1de5e54d79f2096552b2176df37a48f535262c92e1e6e0d293f1799c8d2ea9cbf0caa264f3555722e3a270ae200d1092e215633f9a66343774687ce48a4d7c483ee3b4ae1e90e703d406c6f52dd0f35ca809204117f03b54044de15ea44cba7d88bfce2fc404c923780159f7d611a0d6f70e292c3140097ef308e11dc0f13fbcfa6e8618cdbcbfb690a598c3231e5fcf7aa722b4c3516328cf8ff552b0c08662a51bf29dc184cfe756095c20af34804fd09602d100c01f1c5f5c577cebfe72d13e7a2b09618a444bcf050ef1c5ad041365a89a174ae73584e50baa90ff118616eee72384ecc40721893dd63f4e91a3b327e10a4af20fc73cb55c9920a24129f7897a1e8de6dca107f97c6e49b903f6c83d688d00b1c293fb617cd944dceeb4a47e3377b0dbbb77f1a36567c55badede20932dc867fcdb1515390bd2a8a8bc73f12da315c78ca686361b7f6393879f6b402234ed5a074c634632251cb5c31f4c339094adcd58b18aebd92108ce3c73536a09ed1ca1b2dd290592409470990a4d7cb59279f447f93c266cbf3a6d7ae975295120c8fa2d2711882e9991ca18c42d02d5411c20c0d0d7f004f0162501e3104d0955541c1d7aa2967a1bd32a3165ef6d2b629d0e78cdd57731ae6566b23b60ee489748e02e3a5d676d164bd6c477d9543202f735d868a7d2853bd1175458bae4a5e25af69c4dc80a34332f71b9609633eb949412ad4f157708dea293858cc4ac627b0fb213d55d8ae6b3b01dbf5330dda91e8b4e3087e80ac9ae697c13023acd54d3e530b0f8fbaf3cae9a018d0a52ceeec0b4a7fe7fb4867ea766a1580dd84b8857d6ef1008cc4cd84320d8da054d51d20f7f36e8d027d7a7b7803e4dd0653d93e8822fc8060185c8a0b00002ba671be5e2846a3b8d30b8d6858857ba1397a0454a07dd0a54904be54665e12e7f87e1bd7d227a2bf8aa531e1d9409cb4343cd04015d2ddaa37e28a6fd1b0a1e5f860943f17ba6b9f09a2921854bdba62c53baa10b80dba3ec837fb86af93f905b3c732c6364d6efec99ba28618619427969fbd6604448688cae0cdaf719c7c9283ae1b239c2beb5376a6bd01fb605422a98b05d915c935df4c5146ceb6578c3bf4cd083b0eb8fdf26df2af625379fa81b5cfe15cc4305ddedf9393d5ccd7f2a8649c3a63fb803c8f8b4c4641abae396dffd58576bbb37a289f38568df84eb1075c93b3fc5831d8440de054088558878e7791208661dcd4997ccf2094140c17413a63f9b3d3ad4f4be445edb9dc4b23de8e36f959ba4aa4b2e73ddaa6289bb753bc6d5790179168d89d25c60d8dd31a569ad0e7138d85f6f440e90680213d39421389702473ff2ae2284724fc70e9af6b1cf4f101a984835f7bf601401e302fe0dca0680aeebea2f1f9dbf7f6eb9c341539f15a908e6ecb30ddea65435020ac85c60fd86213855d46f61adf7898aca4d33434634dc1248855c86b055201eda2371b1d3d5d8ac5f7e2b7254020d7b41b3dc1c260e6ab65a1910dd5fe280a2e81145cb36d57b86cdbbfee745c09533c53f0378cbc12dad63652a21741dbb48df754e5f9b1fe843eb8af732f4f4939f2fd36bbb84dd82d7c44f9869fd9ac7cedf37abde24fe27d6e3b3aad6d542667c02f4830254e0288fb1edc09641fc13392ea2c190a6b9a7581b473b3449b3a3e0aeda7cb0d6f5bb66b86e2571cca644b8b599247f13ef399e468afaeea4d72c843c21ab9a490f0bdac2c337303f783b4d2e11ee3c0092a063a89f8c8b598296d272b918679c3add398141ff552fb0b1cf9a40f545bc6893a59a9caf4f8273fc4de44800546e14f54036150e9b3f60a714fb121c107e434f1c15967c652050f6b0640357d9f210b95a4a6dad61d9a46fa954aed8dcc25cf05a594dfbdb2b77e31be65ece4aa1927f0b898ff7c0f5dd4c4e843451164ebe5eabd1b6ebe3a3c6b146fac216ae349f2bd1641df5e2458c7d9f03d2181d90c2c56ea9c64c9b44d8a0a083b2209e920595c7bf582b4554f274199a4c14bc7d4a684c709a1375a1b5a1c7c0c5cc9e727d1d7383f719a605038e5f485ae4d938fc5b9a7690bb82fd61d6633e393802ffd44f2e7cc5b867c727bf7f9950c24bee75ef049363efaca876a29ad298381f7f43f7cae8c4f825a3e0a8f84e67393e927d510a441a258b7f8a12cb41c68ff043aa13f77b58e31313e4ff2f897c228c71ed628fb34cd058c7e2d81cb327a329e8b6f9d73b713b62d263a3b9fcd0e0b32536c363b2aec63376845330ea38328fc7da523c4bc06ccc4d551f016620797d7626143ef73429ab892246c3d80144554b0853fab7b793a0c37e9455273ac8d5b18f0426dc2df6774ada786b4884953cdb32a3977c5f97b407284e3f452fd8e11af7ea5a8bf959e3061e4518e6d101530895b7fb9019693257e1233b7b90a80a4a0fa5b7715e5a757fc9d6a34b445c4d49a2b4433147d62fb0bd1e1090e57e18e80194de0eeb7b39bd6c8325909a2d48afdc2cb8bac56b970a930819a2fa881310af779b3613041ae3d5251c621de49946fb76e175385fa75f5c32222488aecd871ba117fe4410b396525047a866b4e93518c1433ca7486421c8b096162461682056420218c781859815e3b775a54a8eafbf259a67cf2326dd54bedf2737e282a02101c80cc7d06792b056a854c756f955a15600886b8143b804053fc9619218bbe3050b405796a9eba18ff79ad20788ca09c202328762fa8a6cc4c45819f08d3504680f1bba58b1d92872665bf48a54393ff68f2ebecd9186aa7721bd7c7471c531831cd4a138ea0630e737ac02ba0e3ea21edc9604dbf1b19df810dcf48179ca4f79dda52106f2e3f44c97f680b3b8e6e072a8ae5602e73303568bff70d380372b2091581ca907fa904e3fa782a1b22f4b54e80da6125d6136cae5460769bd76006628a9e92ce6dd183f59079d4b877f12e6f8f4828ecf0ef6a95c09b72792d7ad5f52dddd2b5646a3550415656cbefd707689f078ffac609ae0c1960146dea3c325dd5212feb1129aa502477d27b0c9b440c1d58b8873b2393998cc9a6f2648a2e6b407d0b8831b0d5d1169a195122b7a6796478fd9e5863673a8ac4905e026821ef9ec4fc3b71b0fe0e11708f42b3ad6b4e65031681b5fa2a4f81ad86b81e3c374ab4ec7c465b758f4c884b4ca933ade3ec0e1db1b1e510ff684d28e8c757186f08bd8659660889c6ed28e520708c9ef31bc25b58b740047cb3f37778cb9af245cab52d539fbfd3476c54a287c0c6fc29837765b66b500a653e8aef97851a0194f69ecae7ce773fec02adffc39f203eae266b358a41008168cb3a04d4724f5fde85315da609420025a137113e420d951fc84581985a8389411a7ecbbe2a168a847d82ca682f4d351b655e104194103da090fad7a682d4f7707c5ef7e6bbe8bb822e93053b3e1b3b48e06a9d4bca82464d730795a36704f0e5872178aed903d51357855f20162130c0da4125c3904cb3e3e72253e6aadbb9576d4ca032ccac1d84c91996453e16c22d9e7482cd52edd6b02c0e3d24fce69aca6c06aa2988ee329d2d0ecc55b18d5b68400502648d07d8dbb1e897fe0f2545d4f4d841d66ad281404c7b64887975ed5bc4c923a43252e1f22ceb685270bfe9a4c91394cb100fa14d98a1974d5d88f164be83a43d58f74a529b4bb89fa5b4146629bfa1749350f084f20836882001443351280c80f8d08202c834360307365d435eb826dac39755db7d23483717748c6a87955682b25320a0aa3caf021c7883b63aaa6247b19a8cf8229c32935f332d411cfe216d5772be179e9cc5663e2571864c224f75bb95820414e302be0ce4239b420dc72930a14f65bc95c00aa70744a633824d0b0f904d4576020c90398baa9c044c579f9d388b3b92bec4dabd34c683276e343baeffeee8370c8e252bfaad77c9c18c3b5d5d5c9df13e23820c2fa94d5f4426ff3d5e8fd83d1fab1f11f040fd022d73787556760ce535f08683eb739939ae67f02537d2e1922f6a874841801fcf50e6ae11e8a7ba56c06e2f6a99202f6a1585a85009aaa084f6ca8b2562cc656011d589ab6c9ee81681566b9b422f1f28e6451913f8fc5cf881edf9050c2945b283a033b0d687428e88baf244ec5716c8be19e1de3618029cd56b017b42b232a607e051f0ddc41b03ec865db35db329159e73a4d8c18284dd464b5692c48057e1e8262181ed629be302a9f9472c516df95ba20667e691a3cce85d7418d12d694c07039839a12caaf82f7dc048cb1ed595740118961d742384d297d2480714398893b148859cf0034634a2bc37a19cfefc357b238c4da4291f6b2be674286d7c1ad73bc31fc3c7ab4c2908ab8bec8a231c0154b6cae1a4406793d73f8d155fac9f8099b506790c8ba4c3df85d359541bb127f58a921c008c9a48b4e9a64d354989950fc4af5c4d641a399e67e30b1e66eb489d98a3aadccd78d8874799d696c961aec905a97aa1cf1cdcb41e20e399fd8bb14e3b25dc4356db7cf26c2d894c8d499ce901d001ab164a8961c886312c022d7f3a68681de3702a64674123dfc485cfac64b9b3d0346b056cff893169a550301330a8bf5af6071e52cbfe459b5bb02b4494927059d0d66906f58c595d12aac7e96b219ce02a97b2efb7e95d8e98f62fcfd2c95b3a8ecc2aae3c8f7af6e14bea864556cedd118ad5b52585ab889666a8a1fd825edf7419c34b956dbfbccbcd3c3de872ab12409636fa8ee3e6d036291bcdda785d92fa264bd0d6226dc715e49781d045416133f46b2abc5afaf513e29c8775a64d6909fb7a4294aeb4d87dde218a7bd740059565ad6237274d3a77ef2f06ad1f34b1cb4675900deb18acfd014e35b9db78a81f3a9ed9864676b2424caa81aacc2fd403cedcdfe57b5e4962136520b573c6db3fb20bb8151592c36e40e711f1ca5fa07a022734fa441573bf35839d2aca9a851cf50a1ce8d8139e3c82b7dbf8c78d8646a20ceed23dbfdb0cdc5cd07c9d9f44a8c0d05b20480776d589891c72d7c3615704ec4d6de6e7ffae784b16eb3a58d2ab2f6074ae170d98dcd3628844d5214a07226538709f55d02a7ad4f65c53ee05792f309e6fc47014a22f5a7dd268e8a848ef2cb06d33c4adaad0ffba1e1e1a734011bbb1e05309384e77a903c37e8696e45120593682dd6b4894898533f9f20cd4306a4bae48714651f66dba1e5ab648ec7fc8cf213eaaa22f29481ce73082e112094bf1d95089572882b072f48689217a74c81cee0f97ddaebc496536c7319049589aa5aac8ada6a8cad3c9431462af367fb8500e753e1a49ddfc3acfe4c3093c96abad999e6fc5b500782709cc5e2d037dc2aab77aab375ffd192f8e0db45368cae9cadab6506abf024d0d0cf386ee13e3e84bcd9ccfefb4e55ff29b2241cfab373e97dd42f3357753f8c045d14456576aa943a846dc217240c0ecfd23d8322a2fc4e72fa6e846327b34341fed93d849976c5373b3ed9bb1b69ac61e289c5980098d5f4559d0424f4a3032a3387fc8c4c39238fdbcd90d4adb5fc43e23f865b066da9bbb28c1e5b372a7ab72356f7bd38cebdca7a23032700475924214b7ed3337e00c70e2483e3b66f7be11cb0275f552efb27d8ab703ae2b201279d8d1850636b1b9d3b00211771912d7dface7dff5c74cca13bb12a9f01eeb7085ba4a687a88337c5bfc167456365744e90dffeac1154c943f19c888e1ba62aa9e6133a0aedd6c940f84e25044a4aaa2ccac158ffbe34ace391ee4467bf6d8faa15e3a67a48727ae5349cfa4d9e2c0bbb5e77067366ed15a4f12fbe8dcd9bc2f8e49baf61942330e29089c73d3184b0f8bcb5e848efc0464898822d237e8c97bd59c940db451fbbf31ca517f052c63f501961d05c0b2b13231ff2b635b682ce11a8594358bf4a838961d8e0587438f62ca21fa1c48ca15042d8c1dc0b5e24c0461c35533008d9b3016d29476ec716aec68554370dde9d1752f58a2801e3bb17128b4879f0971430bf4cb10482d821e15f2650f483c28d5e4d82cc2ba7e3b3bc42fddc35be2649001048318dd0d211114cd6940319ee95b4662ad24c93aa3ab53f6f19a6a5b76dcd1a85feeeae0e883bee3324ac22e404981891ae6c412c6e2b10447176ee6c277deff1c8746392ee3ae7af6831663db7bc2a5b5621c49ea3948b7dfc9ebc04892df1dcb48da2a25020c99cae94af41bb56cada80799ed5c50bdc8c3d294df2ae39f21f3f445fd0025eaa94c454127f9675d77d0bf12be49857568e5e6242a7e621a4c85decacac6d5a8040b218f2f5aa047481f92015d88f7c677924b72a8a81cfffd49b84284913a694048c03662475c9edc7f05d0265bfeafd64f834f3bcfa1711501b2eb62a85bff95617f520b9f1f4185f3f148d5d0b6c574cf159b34448115bd767737340b0c00f9167e0b3dcaf7aa50be2ac4da20edc52334005cd5db18394315d008c87905b1a086bdd1a68ab4a85132004b8d6ab9473df5808ba69d4438979635c8a8afec070c43f7e60ee12b0cd2dd5234c40a92aad45c08e3cd1eceaf51172de5ea1f7904ae7e2514d3de91b41db195351b11510aff5c2e7db7f8bfee6821bf1091fcba638b0dd1182ec3e55c24892efa5f62b5b8dcb8e3200f08ba414579de5f5e2128185aa205e9605072f4e287d6454c1af56974006be694d02576c69d2a7a52291b6c6ca5af96f0fd3b4402042c7f3ce02cbd7c8f6d602cbfce74e674d9909604cdd438772cbad04a30bdc09fbb36e6a8eed551101ca0ecfb4468995a7157b09d8c9268f3daab1029fea042f0aea3149e3b024da598beb563dad77e5228d4a63c74344e6144b494465f6469b402b1ab7782c3563f1fc53f16ceba7e14d1a2681b3deb1b7a929959c819d837ef223ce8394b3f2883d21ec91c538be9b9b42e93caa7e6b3a3c3c45fb68aa40f43a5c7ae43d734c40fac27f7075599fef13950f91544aed397f551a3d5890825b0bf17e19342fbd67c6e0966933e9eaca639adf2a9c1a6512cb9d1e54c56a0c958cd847b3fbe456b12719468a52368d7c4b00390ac0499ef4477e0196984da0c2f4c6d82c0a2f05da201b7ab387de5ef019e05e7f6b9f66cc18235b7a521ddae0b87f035b1fdb62bf26847089f74f961f631babcfd713262889b07f4798581fc832c053bf1c37fb207a04c5b45a28c977a37ac8d0e9977cd8e323e46595cc9adb99de0887e0810ecfba3a1f540d061ec3eb1001e20c4270caffab704bdceb079bd532cba8803f764842843c976cfcba90134eeee402729237f22e713d849f6e8b7945fa11c8b6a3d3ea0045175c3326fee02441f0df7261fc0f40fbdd76a3940da7e9b70dee38f0d510fd6d6388b180d2428f66a6b526938ab804199d4a2988cf96641209c11f4b8e40b9ade9459d002d8b171d82bf21c22c3b6d53c0caba2285dccd87ba82c3f47f031a308a168d38900750051e5e660fb88bdfd576ec178c48d2b613d0bdbf766be0f5b1985e8c8e5c168883d6a5736f710a575ed28050b0e1ba4108965a0c1891970c65335c6a28a9b2eb09a93dec762f910740a9ad073f3dac15614dbd78862212b75b2c76e0284e29fe8cd3c1d240af1a2d393759d175421fd93c3644893982f5664df1330b1fa678f4779a943477a992deca1db34b8153bc72a50efe99bd6641e1cfa76c3b9b8809e600378cfa5913a1627827876b8f67182b1740868baf800ec85bbe09a882cc681e1192fec78b49125e2e73fa7727aefbd9044c3e2f213b558fb24396dcf8ddb1ac4252a5f2f8859f89610a0a863729d5a09333b24a523c16765a2b3457b7fb5baa67119f6ad32cff6a50a909341d4a74e741640d8022076c187755ac4357f551a19755d5a91d0b4fda7e769871037768b5b1a0285782d5382bec64b16d50f76292da34042ee4d129acc75f12f7c95649c92f9097f3f6430c4ff8754cfe486cb4db4e6963271cdd33435dc9cf9b2c2728acc763387bf112cb4b39aea92fe3a4c54b995df96235d4e316971714c5a2b261edac9b6a21c16e51fda39d420f000ba7fe3334592770d0f043acf5925dac74f21e18b5365a8d50034f10c4faf841c706913b143b3eb073a8c9ec5c9532b2452478ca511f5985f95cf63f6b77203359474392a938d7a0f03634a53a414dd28c84fb6975260468294d14381583e91a12fc273b7b1afebc2279d5b2db41438d1fd026b7f7ea4c7d2eb5263a227343e92f6432d5f536fcd9be06c84481d668a8fcf06561c9872107456b647bb23970c001f0ea47605f0b6fbdbdb03fff89c0a9b8bf94385faede07c81b868b29b2fbfd4e58b2500ee0fd7f7dbb0e1e2aa1947aa954fdf73c9db8f1ba3f76a428b2b86be0ac092e8e1fa146ed51ba988e4fee7b0dee11d7949a53a9babd4a2b078e9db9d188420e1fcc04354b46e8c265fe9a13f122f5522f462333137348044f8da60bf7d61e504d0e4be57fa2e79261246de45904b4a62ea04069606d47c1842c67b078b04ff929c2b6c32c854c84445e3dc522c728e504455f935c957fa048e5ae2018d7e7c8cb5dc2a9203b0bd3094827ecce6e804f42415d61fec134268f35eba2f5e56680e05bff36d99cf6238f9bd4c3ca4efebfd8f1481a4ea1726e101c1815a80ec6757cf142ad55d2496cbea03bc9ac25205cfa4992fd039b26a0c87badfcfa76589f218a30bb97bf4d67cf8619e46c0e9983e53088c3465cefd561db19a96b745201b9a2be8e8047ec438bb2ec05ecf104888b32fa3c43caffe567daa185c7c8c3bdb427ceccd0cf9c53781ba9f5b031a6fc46437efdaaaa50afec533f0e9f469a6495ab91632f1b68a0c044a1610895c98cd5d92a88506186cad02f72f12695d910005ae9e69ef7ff7c23155885b1d3a77789f74ca894da70dc37dbd0b24cd45da090aef2b0731316af59ec07c4e793bf4b062f970035cc3e172fe4120138e262874689cab363723577d75f4357032de3dab9cbf8c8ab615a8f6f75f41fa9bf8a7827638bc550294ba182fdb132651082ccd9c608ebd6d49246bffa313c78b3c234146c40b51e639dc602bd7523ce9111f05c86c9bfdd324705ef3116504710595e1459133e02ae3c557963b800f610177995cc3724617d6507563d1c23e45ede1766253c333aae622f62126cb3f52cf2a6a3c9b619373fcbce327c39ae67aa49e16044e77cef24a3ec9381793068983f5c5c333f991411afe3b2cca8c24cfe62b5b4de5c0596b62c1dad2071866b844db79e8f57c2f04c6be41e08b47ecd5e2f3621eec26a08f51027255466e23e4004b1db40545fe5e11554dea9d424f71cd50248b509b40a21c40841458737cec55d2f2d69612413919119b384942a8f6b9c8183749843fb6cb6ccbecada1d0bdc6a341b2065d970c46f62398b8debeef0f39ef333ae376ef15a3a2c4d3d8cc01b4d70b8e525dcfbe35588637cc52a55f9fa671f1604f955e512d4581866cbe80d295b52219266d625c7a4e222ead901cdb276ed3f7f3cb61649a92fe0ce8bce577a14ad41a00eb75b875bf7d00c2c1e5e6df90574412c5b1b05465143d12a6f25108b0e5b3532b98abe402bcdebf9c15e426c1011567f3365de0766c3d1a2d19d18812dba15931515c757381814bd7c461d0b2d15e1acdd766c52c01cac5c7cd0b9bb32284a447e38f86f9d2266e256f9b2ffa94ef84f3e3d878cdeeaf603d3bfeb5b3af44dac1ddced2a8819c0cb65af863974e0e7d212260cef1bea0d233a07716b8f7a03ca8d5294f83c94e0b570a70ec8b83865f7decb73df39add3bde9100423db66383531a5f5a35c2a2276c63ff4692d81b5e34e0c536537eba1dbba49c11d4875c0b6d34f6e3ab1202e8cd07f8308bc5439baf7743e51f3acca4f15b289ffb0aaf30615989080409ba64069b0e06d4671b2d94a15b1398c9c8238542cd4dec258c048ac9d8a79e0137fdf16d4cfb772324a0d3f367b39809d44f3b93d7a6818b7f4138b92f0475a5b6479e330b4453a989e8c4a39710265943b6f02cdcce5a87ae2fe1055e49bffe0c3b26a2ac65da54d7d5680bf7e1b3ffa26292c9bb994a14124fe30d891b13dbe74f065eb954322ce18cc710d2cb6b34dfeb32910f681ca7c82c22c6edb6ab602080cd38bd2f341afd6101063900897980319504e88cda4cacdfc5849d30411d5e741489d1a65f01a5d91309d6e6501332ad9c0169cd15197cbb5edc7cd1631da785d603e280d75323ebd716ffe36f83ca91e418ff2735a4a3e9794d9de2dfe92885e81ec6d01a2b5cd812e421f00d014c75805c8a18234ff9572c0b08eb597ab0d5f494a55e01894cebf7245d566d07918cd6ac72125ef80d7ef88760841c014ad5611be1e8c367755c610fa67c849f9bdebd17c72fe561c448b83fc75b8e3c755d8521e690207c9cbd29de591730284e15bb9e0cecb300ddcc5fa27bf6663fab1aa0c481f1cd792c36b4e60e8a8b183f73cdf7aa0927a199e374d0e749bb7c02c5ea4014af727925c286a40da26b2a1a7cfff34e971d065fcd70f83ab938700add00fb710aab3f6265f6910eea06e0853ce7ed5f2b8d2cd20640ed5f11e8bc6088e2066eb5cfc6001ff34f7bc07148ef7e89656ab8a5d362c1fae4a705975cdbd06607fd17a3d7f3f152da56373a759ca5c53b19236711eead7a762e920b572c2d3a53fdc5ca05e61008647d4ed3d2d1eea6ebf5271a59017c6067d07c394cb4d734a09612f0b4a448ecc8296f9c7218d5c014a335161050c15bf07b2c687be8717ff5343e8abd7c31be0849e2427c6d1cff4da2c867177afb4083c1e96ef7946b3a4369c396032a4471dd26a260b0826a29664fe018e737b86165ccccecbd031126d875e31b73de377be8795dcf47e78f62fe028d33e4f5018f4dd197e1f9e5498256f962df211897cd851196a1f70c737d7a356b436ee1efe4f20c4af59c1c4786ab67e055f08ac67c278237f9afaddf01c29aafb344998072065ef9854ea84170c835fbf023a56acb167a63a485df57ecf22cd5a83a97fe0f6264c61d42372b6cb3fa073d0e2556c60baf8214fbc01226dba9be839da834fc6ccc617e8807a63e11c428b6b93bc7749df6101351094c4559ffe6338e74a8baac3dd6c3aedc459853628f8670b7f78acda656368b640c1f2a02fd100ff055d02ad9b5d410d86742f14a8a870716b0288ab8645ba2c8e4303069f462acb4dea0e44cc506b127d63f97eaf93664a718f1e226b864bc71da124ef98ea23abbf06084f1fdc3ac96119dd249d4fd530ebfe4912c260f583443c17edda913b8f398792dc7df5707f611d5961667bfcbf35413ed61404ac60352cb533af85aaf9d2f625092961d9b859c622dee42646b795fdca51b04ec13f1c322b854f75cd2656b9151440cacb425b403ade2810431243e6c2e1945f6b35b062913112c0c50f20ee200eae7984f9f40d8fdf4a94be5cf5059cd5bcf09af04fdba0f01b418786c873c825d359940c02acb8c63c61acc406e7abc72de23b253802bd15bbaec9ba5d9b28144254fa0c8152d3772513340fe1561dadd919ee9c411422be105738dcdc5f023308eb2d170f9358c33e54a00ff39c854bdb7240e18f588b8928c9202b4f9a6ee6b9202d781d39098c27456e22e575dc3794d99c6c0d79a82364d4afba3dc2a2bc781986e6e2094542f1be48856df1ac73aee9d8f7b3851ed4b7feff3ebd1a4990a4ff1f61c6401350f401a9790f23dc3173e08903ab1f591089e387c44da735c82fddafc2df18774df2a24cfce8cb9b3c410763973f92a1f93fddb9a9c3040fafff833b453c11f3b64b7bc0bc6005f1339d0a515c2750e71f6f957925a6217a85df374d762f5aae4f55488482e53e61ee7f21ff578d613499c6d241c62a5aaa5f299ca45b90ed527774b1063a59f606a05e63dd17cc79f16270287f4cdd3945f431f66699e07e55788d21483f5dedc00886b60cf166912fd7654da5a5f46ee0b5243c28faeb6c389954c5bc9c883d7fe7f1d34705e32ae266d49e60213b6a02fe3cec833fa8e2e0a5f31356b98af0d86e23ff90d84f0ac3bb368548f90104069783d2a3462561bf510e2e13311364cea2f40cd4819184b5bf22ec3a5e7156ad9b8c3075b42fbde3fd46daf95c2286cde80696cc9c2545c8e29e78929f73f824a89dee4868789b777b9d17f7cec37c58500981c72d2faeda5d4cf6740ca1dc78588d4149b920c1022b582521b952b42610c04fa71321cec731924d9338a65d67364ba54dea92869a6d742aad825d9fe7be40453b816a87718f7397f11b4c5093acc5d0327cc26c72d0ac6e70d42806817723a86a19cce9114666039cf3ee2df8372b4ffabd0480a45b19187540dfab878ec273b1e74df7adf24b25ef5560165919d0920801da46ba2a1afea8a6b0edc0b8370917624fc9329824ed35653ddd5ba261fe96a271bae8c15b0562d2f60cfed4e97a02b084095f87772d3b3ece87f097ae0670a3024b3bcf689cf871e11f4bf29b83df63c9ac2367542580892dfca8d9c4788bda1b444a0f60dbac0c6103d610208f2c85358eeb46b88d3aa2377d83896d811d07316dc59ee89753b7424eee72ab620421a0a83f1876801f461b7b50b5348dd871cba86ef3e3027be53cca3efb6391517316e67777bcbbb4c67c7d2a26d4e924e4c0d69d15aed2a2cd38a30f59d6319674e8eae8059938e6558f2b51cfa4a3fa216d6692be1d377246cb66ba37180de8add66f2fea9eba95e6bb59a7a167c2d31f3e40b7ba88c68a5245f645ebe92fcdf079e6b9db2c561fa28033b37f9f8c9816a07197752220f2b57238a56407cce8895c0a9605d02f759441b3129b507148985aae573eabb62843070efe93f3208f195ec6fb7def110a1f7432bf4dfe53e42bba8eba551eeb7c88c9bb51b4ea4b58adfdd07601c61aa348a760bfb7ceb95681bf494c6ebcf08ae67a03d39fd1ef85fcf5e0c1e23ab422c04956e3c6e9b4788ca0f354bc17054e7ed7dd310f5242d5b3aab31a967a32701cd214938018171b5ca53b9607494476e1a48c428649ae37c38504fd0983bd60f86ec64af81a880aeac8003222134f9d01b54d88aa65253212d7ad5e20703c5099b0a0b2d0e61ca77495c05ab3cb2741f72e0df5aa4c7c012133428930d8d980306d1bef0e9f704c7fae2f0aa5ff9e4ca2d7f2b0695073fd8372d9746018171cb3c6ee6161d2bf22b8378c435073b487938dcbde5a8096433e7aad2ac0f411434a3d425d2437647758d74577de527a0406c245dc64b6120880d73870ea6bd9dccc6cc5085dd8f3cea894f32c5aaf316d06b85cf3a565004a3a8578f95e1cd99068f7a83342b96bbb888cc45da5e8a4b15c5069c585bd39257e470b8f5b8cbde10182b02e732e81d916a39c28591c94ada20207b1f67a68d8a60000730a3e06e127935e5f658a33056033ba084b414ff3a586c52b5c4fbbb0f8fefa4f5e53a122ab88fefb53f65d7713170994ff3aa691184698177f8aadc75c4def84e9019d44872a28d98355d870837dbfa72fd35c73178da91f75700df317a8f1fe15ba5f749029f32f11917fc41c66fddb937457c6320be9895eea78105db50e425b1e4008eb370dcddaa11e851e8a5915f4d826cc6448fb1672ac88dd4abbd94b10f47349e1ec91cd1e991226d864870777a9625d053acfd9469e40e6b952a7ac1e3214818880086873d37c2e6e947a607d57dce0f29f3ce790fcbea52d16f5bf363d6b04f012b263d9ddbacd98076d830440cbc5b3a47890655bf841f5cb3efc0850683bd9df48783bbc110cb50f2b762e6c58a5696e995ff2d17a8c7795463d4f4bcaac8b7b0005c185c60258df6eee06c0d366f73ffa3a97ea3c18559b3d1996ae90ee70e40dee32aeb68252a52e5f82482ebc5d3ddc1191eb37065fc04b6b0a8fe8727a3140e851fa21c9b9dd0168db828fa8556d547c720a3a493a5869e9b9b59c75afd72fcda66c524ecabda7ad2bb46b76a0d2822208f13b1239997712e37d165c4c618d65d4a4857da08eb2786d7cfad99a461d0169da4b45809c5a531e28dfd7366a8c1017657025a2841ff905d0c29d6d2b201f7e2357ba7c3505599084c74477b662abedebf3a71b94a29cbfb7f62fc97510070eebd0596f267fda6e66a3880f93f7b9ec6d58c304f057bfa8537de57f21f8401a272610dec6e5a384916624da4495a72c86146de261bd2a9124956a5f65ac0f2dd0d5262d6f770e44b0d0510584b862250816d5caf8228be2964f02f236d6e930c5d8df3eaf3c1a4542276f2f0c5ad5755336ac96724eaf93f1235e01276df36dbc4a2630e82db1e9d5c119ddac5e110df03a24bfd3491b2082ebb40e7eb379af98db1d0b951e5489afdcf36ccd0c383dcd8ae409b92e1093af55e1e80001a938e58fb11d10b79006db595c409f44f79d2d0253d1a2f26a0bf4fa5bc8f9196bc7fcc6a378ba03d82ca5a71d0256aaae43d1f022bd44200962bca1b434a002479e5b310fd2f3dff3433a32c7823213d633a7d01707f6113439c788a414312b40b9fd8ba36d4805afb198a6d76cddece348c1ca498e06bab75c802106f71980b52ee385544e3a845cb5462b918cf893912deb1dd80164ef39ce92e25a881fd764783f052fb92b8da1180d39470d0a200feb418dd3acae8325f86812211d3fb07dda83d4572169915874e44643b95a265d143f47287a887463bc44b2588c9305a2274f421424f0934838ae0004f06513de62aed3052e5e0a245d23d4d908f4be02721b2b31b1a7541a83e69c7519fc7f84e20b3ca1305e2c5bf0b49288690a1ea58d9a9d70336d436908d2abda697d208353794dc336dcb0485e7223a6bfc48bbe37975f450163ce5ad11dc9089bcc2440f0c5b17b33f527cae35ad659c9efd1cbd89764f61f764a1a237f264415003131abb8457c60ba803d8bad1e1f3f5bca0c8eee905cd628f5e84157ec773d018ac32c90f25308e1e1f46c42d80bb967dce510edc7b76937c71ba38e9faa1ce70b1a982cc5a258593c3c51560ee9c6af63f8c2d047cdd94efb5852cbe3f66f5f021f84aae6f08b570a1cc6df522d45cd0aed5c3e6eb073684cb11382c783d6113a5a0be42189e2612f708c52702c9d1c232444a7a0e700981c0ffb87bc6e5eeb2b71f3cb327167419652c81a3f842461002c98cac583224ae919eed004af3150ca46448a5c9af9b041308dbf39a42b2ce357cba15be94dbf2c16893f13dff293174580e412236135cf93454649c3a7cc62e531a12adc0e318c28c566ce209c0d183f4b514279c09cef72b56de77ef4b6e1a150ffa3afd212f370dc117c1f72e929ac25f4fa3d2a401102fd93b6b41504f4a142756e623f828d337adb2bc3772f989799cd3fcda49ab8a1b6aaead04d87d8534f70617a1e20571d00285032b9a3a43438e0c378ffa2c0c08729d361a70448b09df58dd5c941eacf82a45d3d405e7df233ceaa925556fba130b9116f560f431970bf12e97db8a8d668678f8e158a0da2e1cef3d562646c9996362740e0d6b35538dcde2481be80220c4a5f09bccbeed74d90d614fdd8b21eae501520215a3aca4a25970c10e7f00a929d1715d787e5a0215b31d0dd22dae92a47d45535de47a48d9f4c319037fd7b928ba81ab7e9a123229969c99671260f38f81448585ace812fc2d040baa6100a6ac24812a68a6ab71af902a98e7cdcc2e0eb2c7fab37634c05854defbceea0934cb439570167a0ee28b6a9b2700af6a2b4d10bfd4ab4cbcfbf8f838f78b4d973aa7a2b3dc262f0491801fcd0fd99ab30566723447f2a4e71f3c3cb3c5438443999eadfb9c6b036c4bd80d46815c149cf1bc51895f2e91b2515d695132f3098a9e0022cac9d76bf356ef06a1e6c59c5c6ab119b139d894ec761498502ce321120167a507c6d675bd6f7c1f0a2730436c5d15b613ca6e7621a1af0e1d42648d54074726458dc0881485c27764b23bc1ef3078940a805b826d38db081623e1f6fdfecfbdcccc95e1dc530f790230d1bfa76e9ef93907f943936b538613998096be488c08f33548bf4976b5923692e7d7359eee504b88e7bf4a62f643985252a9ee585be4a5cf0d255501095dab2d576253c0924a529006138eb2848b0e3b1757e25cb94622ff2371251c6880dc3b4d62128790b1edb56f2088dda30e41fe3122fc3a87342f498e10f0395d5f16cf125224992a03a7497f04e2a415d9806a8a49df7efbbe8d6c8260352fa4702417c3479a007c69418526fb3b089c3b177816091440a41d95fd0c5326c7e3110157876296d82c583f115cc693101692c043a8def8d60158db598250a4d096579c8fcd8bd17790deac8d823dd080d8c684a340ad8d34ee0d6f2517b5273f718830be80a7e80a44435a2a44ef4cbfea171bc2cd6cee43b8a1d27caf11176b6cb1d87de98cd00ead3285dbac0471341acc7b70bb8d882016ecaaf2c19f79ac7a31927248d89ea7fbaa45c27d24dd82474b68e04e9949acb656032c1d4502e0ae06142465ca0077edfc8f8a82f72ce76a865d53d200f0f0ea22cebf29561806dc2ca0544408ec9ee05301168c233c8ecfb6b9d16684feca36c8d9498f7abb46a988e764a3a9bd03c37474d502c1c555bfa2611ca21c9040471dd91929ee18933694f362689ea5c8686cfdc21aa8bb1066909d14d4bf2b85ae0464a2f15bb656f040fdd613e14d761f5ac8762061ad9b088d21fef6618e67f0b2a4181181472a2ca1764c8f0b07cec36acc30464f8f51fdb689249bc20cbe087a6b263c4cd297ad12ea84e71ef247a424870c78f5db2d1e257a3e7f9eea6d24f1b8e91ae4097b8467cd4a3748f86170a263107912f3c00ded4325f148a5fd6d3665c405d02a86d6cbc712c8acd515e31447ca83d92e7d2a0169405051f6667a300dd80a4cf2b332b85281354b24910ec1f5effba74f09466cae788214af58cf2d1458faa889a27908545e8aa4b0f9caf1b645d026a57690eaa37e3ba08058d94dc3fe2c95a81c136b29f448c1b1e4792503b6ff9dde0ab1442cb88c1aca5dfb103e5635800d88ca286eb29914bdb0451aed86c6b4f1b0c52cb5ac79ecd618054f34947a5fd45afcd15826cb3a3a79e76ea149d43250f1e4c514bda200d14a1ae6410f7ca05e4d8c409967d3eae3e21c6e1cd0636bd630824cc029363f41e17ead6bcf6086ef05f5699bedd1277a2c00291337d11b328005f591388124721bd36f412d05c5402304911a3b0d510e4f3bf08161c1535e6794b42aa89f24a83d2ebe3e864ad8c449603928d95c9a2fb8fc4c2dbca173fbc4031920ea196532081c86e96b511a4527810bdd0fc6770f8ac8be6c7f2f05f6fe1be20a771fd9f162973e39c12bc678cb00bd526183a74c4ac4de058a8a258ef36664b26c097b4b26b05910914e1f967901641f30423077ac7d1aac4f0195e064a110dbf79b4c8200631f1b691083596e06a95c5a761671a0b91af5434addf5bbe7ee2a909fa4a27277b8fa903b0d7629c876fa904bc1d4c61415034da83a5f70a3dfb4914d5509055e60ed9a5ce1d63e91a0d8d472967e8efd782fc4589bac6524b18b0e62e70d06ad18e5aa7cd0c1c24e2ca617d0b864f61171160afce0910708179110e4b2b037878d9806f801a6c3ec2d221a42412309fcc3df821b0b6484c26d0c641661eb12d6e98080d6019da7027d34b4604e451ea5c353de8522d2e385ae3ab852169530e5f1fb1804c078769251ebba9fa27250ac1ee15370daf0537a6d9581e962e5db79d53d9259d192ae3a41522b72f255776ec5199db9956a8eb9674819db26579e8eab2e91ec8a29c9a92324bda2493a75920e5864c9a7eed2b0b86844efcfcd89c8662c8ed493aa80853dc274ede9afcfddf15a641ab604a2701ef678645897289f88502579d90b8503af80f938a3371b1bbc3adeb84c3b9b3394cec33d7e8e3f7408034cf31a4b05846104322ead30a130c06aee83b7391da25b4ce31543752954ea2366518a512ba4a6b0870199783c0371660c70137569e0d6cf21a4ecc4890631127fdc88584448d62773f2837d8ce615142ffdf7ced5e920f00108a50f25a48f4224d526c36534597e7f2a66c86868c5116687fe11f359c08a024279e6338f77a726767c8de309ba7c41542d07c9973efb08771ad27312c7added2384e8288aa4da74b7146049983a5d326228a91dcc3b85e83be85c4aad31dbe68ae219b322a8475a1782b5aa778224444028e877c08026520849b008bd860e7b4738489bd88050e2ac911a8db035ad7df1c96ee456eb0cf9634f4e7790f48bb95d62773653cdcfb82f998e2293256de8526a32a5a62d13a064d8db3e018b713f6dd3aa1e55760ae68a90dfe234e5d3f9c711b7e24dead36a5d6ebc33412d8272588309f261dffc915cf4d033cd239fc42120a8bbe33d5514960c0545cd6866ed854e879061296ec1fee8b06875e03908cf30e99496ec559f4c751e1043254a0f2c27634bc32183834e66ad61e77fc527f128479acd61078c189a0ee8a0f88df8e09220e605dc2ec8da11dade283a642b41826fb59a101183a2fea0117d1fecb670f722b55b941830e94a00b69051c838bc69eb35a31b12429f3dfff0cd84053da84bfe50b3cdf89686011bf0c61b3570d73e0c51155ec99e9b8d21e55f3b496bb0865700f5d5c17c4e3825eb7eeb914c67b905a52dee7bd5641a4f9bdfb9fe9dc73dc6a875c8387428dae02894f2e125da8dc0d8eb119c2a1d5c5c3808240bb78af78f20fdf8ede039f1bcdb160c3b9234e4e0e78e881e26b0aac51dc61c771547ffccf44fe7de25f27dcbe426ab802cf74d607d247a36f102909520d7d6237aa03283eb900156e5ed964df611574cdc3ad552e99d8efda5160735ad873aca0adb178272df64005510cdc9ce83e2ef364dc28f816dcfa398dc357d10ce1363d8577ce8ad4ac190f00deb2246947c298557f8ab481bcfbc6eab5594f06dce0eb2227dd651d1a4ab91d6fc7b0882b2740720cf20ad7b1c1c2e98b4114fa59a17554902068e1c66e0d3cc248313a725576375d5d10f30fe35ae3760ee24a88e4273b7e4c76f3ccf041e497f95e9b0faf364c7962494ac658d1ad4c61ab3b5c2452e990740b427b910e4aae2bdfafa4420d71994262501c70f4996365a85e9479df1eff94f33ea4a1c04444bc19d6d799c8a00aa4cfbbf35422c60758103f8d5101195cd08d5efd3552460f875a0c9c7ce578cc67c8a7ae8732e301605b6766139d78eb139264a6c6590bead6d25cf3541506c5a0e54ef0147524b790128e123edcecab0789b87fb0258cd3d57306588072e67c257b183d65e6adf5a5bd8d4a9f32788ce68136f85377b5abb1d5e5b9c3d0b18fb701e81aa51111929b5c1de390f27cb21866ec37273eed519f2927f7990a99137f8cf6cde2694ba2dec5e03ed3710602801f75ac09fb2a3c17e4844ef9d521a51eb565a09ada3ce24edb13f9444c121ad721e793133a57f559b77f45df2a1d57f7aceab0b6f7aaae553ad7ef5ad7616df7154980326d658dbe165181e223f1738b920f6cef5863f1a9e0e19c08b664615f33c71299ab61ec35be1f6e7a685e3ef1eefa3f04d0413980a9ee649cec7bbb640a9d1c00f00a6157ae8438136ab98285945213097eeb1e28d92aa218c048c1420d8cb2873285dcb711f128104c83a1705350c02d5ca31370723d7022ebfac61f3e65711cc286c333b72b8afbb89f0380ffe996290040d87cfe6d93ca6997719685d4a3717e9d06fe2938cba611603862b8acf1555e76ffa2ab38b19a9a978f32279127e9f24ccd3edeb485347142991b92ceddb6ff8f767eb8ddd41601a756b91ba7b6d26b7fad82fe017ef446d8f905094af216df46dc1fc86177a628dfc2ebb1ed723a4442754b3e5395f29337a5777c62f8983f0cc8364eef3be2ca9b18e18dca878e9ce650ac9d2db2be5ed8dd65248a4e3b5b3bc18bfcf6c1980832be5a87d0718216daa16f1b08bc6bb0ace94c88756097565650c2a5348619725344d690b5d7ccb7c0a11a3b4a60e274e818bdaba5db229e4f92a9a96958ad324bdcfcea4eb6221f561a60c10214538b8cb71586c6d3adc3695b4a6428f5814a6678993adfce2aaad24b0ccd83a3136f590a35e568198d736513ff056234858da274e26ab30dd9e900757a4be0f734d7d7e71b9d4c41b78feef5e735af9972f878bede54806d1ebebd3e17936c80170977cdf6e8c5586b191aa02a49e9599606c0aa6f2ab041bc03d79926786e33b24f6f6dc25ee237e41288803b406f84dfc6fcf3d50fc9288629fe7f0599a72f4d4b6c3c173007a02c0cc6e11acd189c1694d8f0a78de7308c8f54ad5a60dee9a0bc31486519978504288fa37b8e469964c1b1b02c7fe30973eb3ab414b97c2b0f79e6ed8541c57435e38286c86eda2f3af6ecc22bc3df8d0cb61b72eb1bc89fd4583ee5e205bb005f455557fda81f5b1b1e772329021acf7e218305c9d1031497b58b8984e54ab3274549d9b5f15b7b381da4d5089100e77ff477d209adf1c4891c3fff4a0e091f57aafc3438ee2d300619744316466f3ebf2b199656427d697593f364e8be38836861e859da1c77087d1f14ef92673b9186c8255bc7c6488668144cd5bb054c9218addeb6b2ec8078025c069ccf65f4c309001899787bdae403e0c5bfa929c8932216fd6b8b6cdcbf5492fdfa6293fdc99638c939ecd2d126ea96720e3a9a05c6024fe5c72cc128bfc069818601610a5e0d636982a11c381693045b082bf63050faa6f6c429b484934d352833fd951b06ccaa43eec751c576a51aa2d7d3b3a31bd60d1b406b0a6ca14a1a93d79b6926c44e2fc144c5b9393fe09502b91be02d42acc396c17a578bb82ce313388cb7c0aa30820ab04c70b6d68a8e12ee9529af161dbb518eec65a854af515a407c9c37eafe7c191c7eb06a0de007d50e1c14325448037c5f15f1ed6902cc0222ff1378b9263d28b56b6e1f952b3ba8aebf9320b7817f170c31272d9fe356549a4e9985267ab49c008af12ea12e2fd2e4709ab69143823f14d4514e00d84079cac99c9f94b66ff0589b36062ed6e7965bff60e204c9eaf56620e3211ccd71ed3958bb44c20dc28375e7c69bdf072b29f66e3c52f90dd585fb90ad442a1069207eecf073d656e522bff7c44e048d53b578d3b4842aa476641f64a28f061237f1ff00d39ffa904fe47b80f69f79c8a22781d5b059bceb289e4dfce020001bd7224f59b038e6f9f94651471fdb9802693e8cca575d373e8d2a25f7f45387683631b89c2b3c08c969c5e91e9effbd80c9fce3f486fb2993f217049ab93a3ee5bcaf2cff5c016b81ba93070e26c4f7d90c51e4ec023e1f03de656dade3c509aad77c9f429d4a341dc866d0e33c20d27e9ec9a2e524b8966a859f98f46a9a1728b0b462b90346d80c2c4fc8897b87572616814fa93718c735cdd042d9bc56825865ad0a44a09626e30629d47d3b797260fe91bb279d7148550f0896ff8f33cd47ace51af1646fd8186fcadaef7e6a14085747ef90410cd96d99f9c5ab5aa4458eae0b9d4d9076f4102050e88c8f7b008f83601cc4b3e80be0cce74e2a4f2a1100a7b9a42142e51e042741f9f7659d9470439dc931c5a775403437a79b0fba9aeff135f49cb79d549c16fd305b1fde2394fd9f3b42c6cb9333c7fb115db2265284866746535e5e5df44a559562fd5c65903a1e067993e04204b6ff9f94e595f14c267eebd949cbeeefca73254b6da5b06680f6dbbd52b9a747a83dc1d90483c54044739ffcd5665ec11ea468cded5a609d73fbc01cda128a8c6e3c778621f182682d910aad30d32e718b4b12b04de280e7090428f86bb000b4c5a02ec2eed75a5bfe66c789a42fc58045eeaaf677a83793384900776ce0959a01e849b9289aea362f4796ad61e294dc73ad59220d191bc3d775caab8b20187451a80d984acaba8d77b2d42e90a68a3ffa777aa0232d2e7e2859a1b8d6a0616bc435c1a33058c30ca398a28373145998274a3699d44a3dfe6f88d1b9c478f01b29b09206ec8e265636a1ae5c537fe17f9a94bb2b37e2fe46dc91fb26a7995a606030e27ee2c54294de197e248f4cd8b935566eefdc10d7badaa235de21a992d4daef822716afddb1c04588c6d189883f0ecde6aceb7103aa3e05348ec7fedad7b63c69f456aa0f9b198f499aa913b9c1d62650b5cb1fd8209f8b11c172b1e745c2689e49cbc721c73e777fef4eaef4048d343fcdf564d276ac5a717621f49d538f36892a36a8f51451b4e87df5976f162fab3697d30d28e8a1d6f1e899a30b2ade910c920f827f313cf19ca117e07d6e3cb71216b752793d462898e68341c38b3d4d1e602c98d728c446f9cbf7e252dd482ca291dae5cc7e078098ae24484891b781111d45634895acf8a304dea5b441ad8a5af2aa25c7271ae39648de3ae80c2fbc68f8e12fb6845cde7ccaed2e5a8e6dc28d1cefd3f688b0b7db322749c92d2641a6f1fc830842ff5526758f4a4c611c3fe27b415488981bc6402285f5803da8434253f7a3d463771bd004dd4ddac964affcb0841261a602ba1087583b7d7754a22d652948a373296a50194fc924a711078fe3f88f32b01866a3d0eaa467c71f85f72e3867eb194f5bf4c7ceea71162883ece891a2e0ede7f7ccd254a472e2f749eff5e560fc57f4fee33539fcbb18a6375258b68a8bbbe1301a5cfcd1fa5d5f3ebca6b98967737073d609a83e9ea903833d8dddd292b5bd9ac7a811b0af9a14fdcf82f1a8b8f745036f4dfda73cfba66d84ea8e129c331528a28d8d0ce550d79a6b6c931d90a11df78f2be8c16a8d5b9692bd7a2505680d15560d95d0262aacc759975c39f5ad611dc195ac91ab7fb71c679642b6b48a68e95481d9a2cf1e2c402c2c9132f15b1a4eb6408225adedb2eca6d286444e10ef3606bda4c2783cbe48490d26b43cbc8d3cf62597ceeaff0b6fb23672e914d1ab4172fbd9596dc75bc74b906f045b4cffed78a033dce2a1625a7f97735c8faed1795a69eabbbb57410a0d2da14841e51670fdca8d1d31b770364b8458a6a6df36dfc5de4d2e190945aa085b15cc2e24b0d98d70ffd82f35121cc37fd125d8d9323bde7c2d01f8dd63e41efc8556aca578505bac9b13638b4079b91ac6c421504048ba8fb06143a2a2317375c938e07486627606ec44f0dadf65e20e2b1e1a224b33419d6100f5b68cd502caf503e69a87811e3a2dfb727ee492f0880584164c23db7f0f881d87dc1c5c07b435d762c29fe13ba89b457367e30032ee7ffafdb05a601d6a1c316ad1295f593f2e0d2fc69284549911fb58b3609a12a1ce2a7af3a093996db7f8d793c82e851958c6f0b583b8745da56dd7ecca5a5f0de36e8421e3f67f05103a4490cf3957ced45e29aff54e7ee0c63268ce833c3d1f170ae0ef7db1e2c1f2adb5cd044c586aa54401a38227c369c449f7bbd5b90f8a1dd531b960a5b5724274eaa6e8adb91becd43fc63ffaa6a8c7328db1c4ab4fb2f74369fb4209e546c579c206faf0b8743be597880b63aad8b5e6056539a892c008fc9808ce7d40229866057da801b0f25fe225844cca21e14df6c72b27c203169b883cf2b052f4b8e14c5057626eeef41a35a8370274da2bfc4ecb32829ca0d5de93131f0de2232efef43900c07ab8e81f691315c7a0a513e504b63ebd1799582ff432757b28adad1754ce62bcafd35b54870bc7ee96c7bc0b669cd9e8640ccc6447596f389b37f8dcacab860bdadefdb929e758137ed357184896ba5b1c21bd117b1e18bf512c6bbd8c3c69c0bf19e3c3f3e35f34960df4a6d345349e229e60aff2df29f6104f20b6d0def1c29486317cbbf072609c2050ec8586a1bf10766da16a9614bd6c619ca33f6262687e37f12fd80d75c610b1fe220e7d2136fa97b4da211fc157a05a491bba81894162ab2670bcba014c269b2fa279198d4c7d31b7ab5e5d95f486526dea13854e1b2e91b10c96021876d7636f33c23531b4b0a812b09673e5b4d743bebc817d4ae9a177401323580a16fdf8d7e8f5d20d2f55480fca4702db9d4fe166a731bc84293c2f62633ec672162d3ebb1346d2375057c700dc16d6a5af7f5a707a8c08c31d1233cd7847c323c3b8816e5d7a53017cc69a5c2fc17a4534d3cdb5ed1007749363233d2d47372d437256cdbb6828956ec4cb48bca7046afa8bd3561030ec6c3ae772859e6d11a909ef8610f24ae1daacab0b73e350b13750691fff0d6bce619d5bc91d9c819344d657f00e3fc8e03ba2e04134ae52f8575b77ba2b3b4622b895205084421a14d2dade6dbdc99652262903130df40c1d0d29e45ebd5aabd71d42eabfc5cf4f1095d787e03b0806d1a0206b53e1fbfbaefbdfdfbf6f9fc875d36dbffded20b48b4d290da241413bc8a7c2a71d93e7f71cb09aca4b046dc8bfcfa0edffc33f88c845c66270d350004bd6ecffce5eea9a258336f5520691f6c894ea09996d5ff6a1ec88973e2e5551d79dd6f8773c1a45b2052fbdf66a55e5d5282af95d0cda4372066b1d83a8a2406d4a0585b7cfcaa38282b42bcf9a37ef36ef604dbdba2167205843fa08c218647cf1ab3e8b0485e2adc15efc5a90982b6b1bf1af8260ce34da7f59661bdb2cdcfc344f427e1a126ade86a4d606926792530349b6eced9f41ba46bfb5d51f62651fbe10996cb370b7eb87c8746d7cf165efd2b5f183768591b511683ebf0934a409b117f1ef78c976b370bf1743924a7e91a02e12b46de5b935419cbf7fe99ffd695f9298c782a8eee2df6875f7ea4ec720772c802533b8afa6567e0759f3270c96249a5831450553e0fc87549914f4b045961d9470ee56072f8124a2cb250c7922bb48d0f617f9ff438b6216636cc483883285a26aca55a44bae3e5ebe973e5eda9f0c426cff5020fbe18e970cf351882b4bcb0ed9dfbb3e6bcd84d787a409e077feae5ff57bf90344cd15a8cdbe7dbd720621b631698402d9cfd9925d7021fcd7bb007bf0eb4b6517acf8bbf0faf05d001ff6345f03f27d8db6bf4fb28d9c86c94a800c30b81003c58b1374c1ad30461533aa0003cc124c3b5e72dee7cfb64fc2ebc327017c580d9323bc3e7c22af0fdf4922e0c3de45e6fc0ca187586badd58e977cf7f933643b790e09dab87e43769120aca9804f0ef9f207ad9ab35f75f68dd86fc17edd8d5442eae3a2b8cf02843b51644b8b629b2687fcfbfc5d8bf0d0054beb8c26678481ab4f64cd0cb2d02265e6093196b4e0eabf35935c39b3049533b48411c386184bc07429a28c2430a258a269d8304554152523ae58a12440c2045d88b18409948882e9e5450930b250e30733ae8099412507254e3003145f901186089624c1c515a51c9220d56004192f4a80d9ba014a487dc2b07e1f7e1ac8cde538e02c6850ff086d774081aa5dc19e2923a49e719285fb47c0dd03c8c5640fbaef7f40f0f6ffea4737be9724d240dd640dc876523c0237de6f4dd10a20acc6f480a474025cfdd29a3b4bb8d0428a9830cabc80a35f440135c31433676865418483122567bc2005054c705fb54f9c4e61e90247ef6a51c90015cb51c16006962e64328049a2428d29b490114365434513521c81840e4b0b10e1cd15395655cdaf84212048b36813583ec6187f6fc99c57e1e260815da7c556fb200a02c15bc5f71fcde9638c31fe6c7636bb5cff0211c6a0c8f569558d75c9f5dddd5de0f628a1bd3f4478798e6687b374dadcac59dce65eab0b5bd7bf5e2bd4fd0a6faaf20749d56db7ad64cd522b160ae47f23453e73967d562c15f6fe15cb4b1319f28191974ee3da6d4454b65b324fe57a73a6403221accb86ef03f187ebc6157fa53533b5e5a739059ba7e3070d511b0d66233bf635cb9e661989d3c8d6556b28c53d1cdf5d6fcdd8d717bd811fde60344f9f3644e4c36ff80619fd783dfd9176203efdac75bcf41879695efaac661cc9137f4c05fcdfd7977d8ca4e32b147d24eff78dd4eb3802b1a478c12e18eb5ae989f757af8f0fd347681b06020cd3e3f7e277c72076c3c84a813e7b7148d607353ef1c61708de2fcdc211501fa16d503bd5007f42ec064997cbe522616642ea73bad57ed12131aa57ddeeba935af55c3b36d563a156728813d96d752b1f777bc5e092e0e8675a2e6951ddd4ba75ebf6ddaf75b79ec5972423c8a0a1d5811445f47058539cbf8fda41dd95daea571f379b56d9a0c4d6dafeb57bedfb7073a6f5c19013fc6677fd1468de85193e76a560ba08b34f8a75a35eeb34bf9d39dc75c9ae543068ed1ac33ec55a10bbfd43b0dbc37affea9f2bf9032f8d966a4ee67587d79fd65a9f1eb9b8450a541f678c7c8ad4bd5eaf667e06deb23ead0fd6a75135a8a040d9f529589f566b178cbf0fa9723caa17a2766867e4874d39ace7b71a5a300ce3a5fd9d1a322cd95517380a4785553c613d3a5209afac1992f8c9da2ccf6f67c53abfd58d79f66755197c282f6dd4e7a58da85d6eeaa5cc941d5e31b624c764553d21b48b0d46e1ddae759768e0dcfeea78549a914300a32890fddcfede8ef7e908d3c07d18f991670d81278b02d9afbb0d86a4ec0a945d3d5913c4597ae5a5a5b921ff3e6557dbe2f0a400220925505351e0ec03967c30c115515ca96108fb3a1facf77df8613d37fd8957050686051b23665bd915996d615fb6855d6d3b669f3031dbc2b2b6fd13a605dbdaf63f2cbbf2dba9230be337ef62844dd9c7344c195605eb79699fa6449bc5a0eca8bdbcc79fab6a1b0af28b06cb82772533b8c3b1eabac14dda7439c979ffde8bafbf5cdf8c31c6f86d62f8ab163149c31de6b3eed7ae9f048b5ed27ae9db1184b256d2c9aa5f3562d5bf2989499b2e9f6fc3b2a9a1c9ae0fcf667746b31db6c5177ad9dea0943ededdd8d9b5c1bca6aff9644bb0a54de3ca60ad091c56802edc646d4bb418d6d17bc7f07be8437949afc54f5e36bd88e983e4093e59ccdbf4bf713cb23784514a29d581d65ab1a608bcdbf42f9841eaa2f96a445b896d5e14e8410a74c31d727dfa607d6bb3d6524a29756d15a80ef44abefdaac2067aa10eb97e11586fdf7ba378b0a74d9f366eaa38aec8f5298e18cdb63b48c053dd5efcb9c0172c14c7982cd3d4d8cc6e6ee0a0e1e4d47476787a5e93397c8648ed638178799f5015d6b9897b5a5b60c1051ce8ff0b2ec06083efe9c10083f108975041b017087b81d8d5c3c3535a53a41fcf4b6b07b4e9d8a1a3a3438c2dc91900813a352632b855df8b3f5550e03ce11e8e2a746ab51f9cd365b06bb55f49dcf3f2e25ead0624028d47aedf61bfaf58c7632817f87537d3edac89691f922788a7bcac1a8f2e0933a377eb0e0dc418855d59b3eeac39d33d69655918566fa6f372895c673a5ad44c37d359d77d6419b4010638381bc07617bc98d8f45fbd271c0e842cd82028a8071191d0908fa66f2bcba12f6db4c8e6d8f4b3c6559ad69481abaccd7fd439e3d1909a326870320e8d46c3c1e3f59195beb60b885cfdf61a0473a6d134d8b8cacb1cc0d014b18efea63a51e39eb581d6a4b8990e876669219148341eb9beef5ae126180f960516d5b3ab558f325177339d357176b099ee35d3cd74db71707660067176384e7096bc749c9d16f9e461e261f2dbc91385270a2da2b80702cf5e0113db6fecf4707638bb1b383b9c1d2da23d784030d35ecf66b0710f4c11fd10470cf7708fa70927813907634e7f0bc3965e6bad5b4a2925efad1b6fbc2969d365709fee2c60ab7dd35ac99b791bf3fccffa35ff24dbddfdac1befb3488d7a4949b09249362c0c414d623db682d05a6b2dccadb5f6822f6bc5f0876cadb5f682a0ebfbc41a2d17bb6acee01c05ba2478c19a54ae7fedcb6f2fd7cf2278d6b6e4fa20b5568c9d49b64865adb52e6b43bff9158e376a663774f497c3ea1c18e8f8b11a7070c1900b5f970bb4c02787267f3cb2433c6e063798fe1ecc736435305df8ba5c20e89af27d3a39a34e1a19631c9388a8073db23d3ec71ff88a3ac0f8d2cc3c8ef1e8b3d8526aa9b5d862eb03b420142e28708c3a68646b8900606fdcd8e8a471efbdd7037c6b86c8f569469d34646978606d00ac19198f4778d44923dbaf01c08faf8e18a15f174c0cfde67094d16637683cf8431fd2a7b40105f1106da668240b8c08e5f803830b7c2cc86112b9aa053e3b7ac03e30d2cfd3b3c341d11830608894a0339285a533e243f6a153c329ea00ecc0c546beef03006450140fc4fb168701d019838060e3fffc86885c3dc094528c03e005c70bcea85346beb703232b82341c3737661ed89e2edb2f7651c9f52d790395ebdb8c3a6c648c6bf21671780519ff7884471d3662b84f16ab4db53121f539b15f172c5c92ef87a1bb5eb18c03d65cb5c7ba0deeb0d4d12152ab5a4e4f4d478e8e0c444a8bc26aeb0f0c87e683f343b300483c7fac86b8cd4df2a998ed4ef4d6e69469e9fafe86ebbb296fd41ba0998d4d8d064120aef5bb6190b8c1c5b75e1e7efb24b5da40c4b932b93e05c2d6dad97874d3c896078d4c6fb6e6ebbe68d6c681a873c66c8790ad09b211aad9a0a74bae7548bc7eb3358f4798bcb19285eefdfa34e3d11dca43a26c3cd22193efd52993edd78f8d475607f2a01f8a314a81ee632b5df5d2228f9b5229b172496570532a2555a00f99b62995121e08956f6c4aa5048a6b0d254bb4e4d816942e84c8389b52e5a27845e5d9a654b923c026328e4da9723cbc72f96653aa5cd2136d507146ebf5e58c164ea0703a8384926cb3e9d419272dce3871a591c14da7ce28813ae471d3293367c02e72cda65366c670c20c185566b0cc5c99b9f29101661918c25c5fcd0a248bf8ec6ce6c9128da92ac74c920d3896b670da1823821b22e0d1daa802ca8d0e38dad8b2c38c49eb461b47c46023e5060c6aa38a520d9841313769cdda68a2616ab2698386263957d3861225d9142b9a1524c59c96f2163a8c5176b2325637883ce462659aa82174b21ac1a03248c0c00c8a190a0f4a9498ad24bda6844d60d313ac090daea5a55799186af87aa80283c032013784d4e70c791b7f18d39fceda708fdd0677e8228e21287dfab93ed7e310229f5f6ee7b7a6d06a18ddbef431f90d7c0c8a1f92c3bed7aee4978b99c9f8ed87e42586e9dc6c9f5f2ef7e5dac8d68cf937fe6b5b4da99c6cd9a3c6c1c56c969763b01626e336cc23ccd181453ebf1c998d3fd4d1a21a622b6b6bea822a6d8c1532d918874b57367e188f16f9e33fbf9cdf5c7e7b3d56f21b18fb24b8ef696d84f1634f64fc1889c44a7d24b1ff4822b21f7f24918c2f2393e03ef23c727196dfc650d09ab1fff016fb7b8cf57d59c0ffbe87ce6f747fdfa386dac178f4f5d86d107a3ecb6f5a6536fe72d686e5379ce525ee82deb018f423cfabc5fefea45adca60d234fa2fdbd4b973fdf8f2116e3cb657d9f4e8c698a1bb595fa6196a2b54397126687569cc2468ad40eb15875adbe06fbb63f5dabe4178317a62c36f52265c90ebf2b90aed8d52c6176258ff8fe62a040f843906989b8c60e6162d5355933301b367e242c8a1d8ee2a7538ad158ec43a240f8c7fd69ea250a971dfab72b297e392f737ac8678fdda3a8478f1e342e7986438b3e259f437d7f4f681f0e27ce97b4314e8ec625672f416bfb7ed45f6e63d78739178c873f11fc7220f8e5dcfc3edde7e46bfaa070d8aabc2fcb97fb963ea78ff7456dfca0ebabbc1ad5b34bce3ab571ad21cf2688f0ebbdf60f6b4fed80ed7a1a8d5681ae67a1d22a17196b229f356adb8fb2d7c84bebc34b3b03cf7e9097f66b786bd725f66a15c51a2365c56debd6b6effa6e22d8a75518e77091cfdab35fabdccc5466f58ef57ad150cb04b5d987d59e0e94ac9394fd4fd9b6ce736909a9cf4979b6c820a5409f9d2de533ef0b7bfb361ac9ec6dde35928af3f7aa1b78035d5fb3bcbcffc5caf5d7455631b4625d850153f5e592b937cacbebfad708be7e85106c508c97d70a8c97f7ef17abded4928d5909e1b54157967c7a9557d99ac74f6dd579d26434af1779badeab5caeff1a122463e468e5371759795edea42d2fa96781f2f2f5b5d8f85ec66fa747edfbb7162341f01d730773dfc3f80d2b6b8c96df5e64b2ecfb36171b5f517e3bfd742829bfd130f67d9ff2dbad61df7fbd5eaf1c2ef2e95550fbbe7ff12a27fbd268598986383de4b3ba52530eff74a57dabbec49ec86ee5565ede77b957b95971f7ddca6fd43582f0da2fb2ee28d0758d2224d9a76ff043506b2859eb90c30fabdd9eb3a6bb60dbb54190242d0b5563afda331dbfc1c8b308d5a2e0bb00029b1ac519b9cc4cfe266be6a002450e0c28945879b2e68e1813289511450b08267037c9961bcc6cf1031318ad1dee2699018d2bac806912c3182cdcadf7ab7d9face784f7a5c28169dfaf9ada578a0b622d49c15e32755da057f9edd2f0fafb27d502f38ed29dbdd6e502f58b3c82377e23776d72479362fdde80b1b6da9102d5172910683f715be782ca7dafe50afcde7bef7f7fbfef93ec8f3cf1873fc9bee479efbd78e763ed18f75e1d7b229ff72b79560d2553ad4308a09522b4f86b85ddeb95da5805c53ca3dff8d48a169376068a57e79166821c3ea8a9841f56d788bf8e2ef0fb34a8afdb4437419cd53193cfdfd614dffefb7c6208da1c0c5d0f6e97ed3ede97478b78be267660ed2b8a189f777f2f6bda389bd66c4ae9e7ccd0c304356555d6d683e5b3a34558b4c866b369d9c8f88d85158e80dbb6b543478b7a7aa8d8b7078a6db381b1effb6c71431f31fbfadcb085ec0905ba2fabb2a60c4ab5ddbf993c6528a8d9e429bbda17b64fd9928c698902d9d89bbfe3d1ecfbbe4749fe6e70a53646f3462e63f2dbf735e5ef96dfc4f1347ff3f77baefc36fbfb3d61fc56fff6f428900df9c4296353d31304bdcdcaa0e5d38c0c14cf152d92fd4dd50d9de3e4e595e1d039486ebb7fa37376394e726c744e8dce69cac1299393a382e3474d8556f664f1f27e5f4f9497b72796463e7b783d3c6bcaa47a783d3d1d88c3f1e1581bc7ef7b7a6e3a93554f15981eacfb3d63c840dab70c997d7baef625c3c93e7bc4ec3beeb3276bdf1ead7d7bb6f6fdf1ab3d3cbf9d32a9327e3b71b690fc76f6f070b67272b7ccbe0fee10eeaea14ce3d9d6be588670d7fa524c72dd62eeece9128b21d32930b478b62c6b767f0606bdc1765e6635a1e5fd7336669fb32730306452b29e6cca6fe27f1fac577f7c71493eeb871f13bf6aba63e258eb58bf924560bd20740b27966cf07b4a452ad24b8bfc9e77871f621187ce81725b48862e1ee540797945512473785ede9c272f6f56cf0e3d567e3b65593d5f3e1c1f4eb907387a3d55b22cd06df6613b58137a9bb1715305655f1818fb7ef8d23e3336665b39cae821bff67979b4d8f7cf9baa1c59d6be0fd3394f3c5714e8be2d29e73cedfb2f4d56d7df9a7d2f0bd5a74781ee6dca87095adebf35fbf6f4b6e8e951a0fb5a14e87e4f6f0716ad071ba8c0825608338565a6979bf204544263e6c3cb0c4c8620238b1726704cc927cde7fa94ef4b382089178597154869ed66a841899a2a6424618592992baaa5076b8002ce2e48ee1905a9d5b1429c30431858ac91c31224d6489ac189118a174270e1c48727c24041b978f2b25b3a5386184c98308112640b144138e14413285d2e4803044f1a665fac2a94604142f7c40f381488b849fd87b5ba6ddfe8ccb6db3e3802aba61a64f8620c9c2571b0a046ee5121ec4333e63a305e8a575b3c235b30af305faaaa5468c517163b7026fecf39b445718bb42d965b0cda22d116dfbedc9b44d1dd3f84bb3d8c51865b9dfe4bfcdaeb45c15841dd0dfb3a55e6ac5fdc4ab7cfeab46162934e0a4c87b4cf2ab561b05ab561d56ac3fee5620b7e3b9d880dbb326c98288a1fc2dd620b7e13639f6483a016d1c8a2f8dee44e6ec65ef4252f45275e8a66642abac7c5dedf3ad9a27eb0e6dc2622198f5af0527cf1892c7e95f29b6864e97ee9b34a6df1fd065af47af11d87da01f8e25f2dfe5999b6f87509d45e43d54024612fd269a040b017adf249b736ec61df82dfeec3f0c39c20e9fc163eec43f1c31fc7515730f49b7d18a982f3c622ac88463e67fbcedcea1f2532ae77178a6864fbfed9cfd9ccafbbbfad522115c3c8b27d492f4f74d9740422db360aa7ee2e28764b3c7777514a29c5e091ad02fd2222f8b46a707e1bfceffb4cda45ab1c32120104f3445355569fbb4031ef10b5ebd3762803eab85c2e171d29798e20587c3f88e8cbea02238a9c892809628c4dfa04ef041d9c88b13baa251d82c6a61c9e76cd362deea4f7a3543b38d92e4b53bb7ef924b76449f6db5977f612ac1dd41d5a9dc131b2a540943c91ec9352fa18eb22a2a6e2a2390db4760a0778f8e20a2bcc3c110305b8fa3fac59001ca468420228ae20a581ab1f44e49f18125ca024b8403385a22acb76fda53432eb59a65fe9ebd5829123b0d7a1221bd13a69395259fcd8d37c7e4c9ea08c163b5f24ff8491458254b8ef72bdc61f8667d0ae6f756d04f1636f82f831925a9b09e33f2e12b45d3477f75174e5e04c94ac4e665972aeea8cb44064644d27222272c11a11fc984c82a3ef55fb87d433edddbd497e277030e2892f28c0028b2c3a8c608b1bc8a8810c285b3877ff6b2950f5bb82b0ba3ec18b412e8b44d5c521d04bea609730a2ba38f3c5144f8080e8f2c20e5b3bac41c6d770eafa2c76777d2e0feb11cdee9feb1c2272c7f87e6fa9bbb5d63ab917e3ef5b9241f0954f91498e1a8fa436fd7b61bd4d45f18aa275b18af7b3bd31ab4d75595ed2a15cc6a543d7af8c5703e22f32912d4905e6691fa15e6061628a175a6c04914b8098304de88458c2440a579fd6076bb8c5d777ffdff505e2788632239704172d262bd830a38824a224c1b3f205ce0358247092056f0a4a185c659a620b125a6050a10b0257bd4af9f5737d5a7d0a5ec0a9539a27cc1f5cfd11a9745a4a9850a2a2a24ec090a5ab8a1a8384451338a664fad67f7c70b2c8f47fac7b7527cfbb8f7892215e70628aaecb184db8789084aec915542cb1431975ab3ade95deaebbbbd75abf86f1aff1a6b488deea5faaebae9b3e590b52b7915b33890d615e90f2c513247e2803e756ae9e48d2620caa2a45e0bc862d765a9ea82146148e82f10489305928f590060a2a16a5f80e913fbb56eb6fdd452f69f8973c7decfb345be4f3675f8c312687427d16f1b1edc37eec10ec67e8fef9b38386761886e19f3f3b7c4ca461ff0a693b7cd87f1fc2f4d0875fe409ba481ab5d1bf3f41431f266b402e590372de7d451fdbc92414b0420d29c660a2862ae5105a608842831334a400575d5738d0daccd0098809234a132ec6545982a317a8628a0d2982304305068e52f72361ad3e153304fd927eee40487dfce54524a0531053440229bcbecfe8070e75a8381ab255f02f12b4610ffb1ca94cadcd06bd748581ba48d0fe7cde4b7b35b8b18e97434a30faa1c4f5581fc1dfbf76bc64d70ee27af0c10f5dfaacbb9ed921fc5cc97f9eae0fe399a5588456d4d1d1b1d5f5e3477d5b5d2e1452c042210527a9800f9239eb78c9fefef677a8f9002c1d1d1d5a14dbf669397c5c526aa361cecf1019eb7cff06717d01db3a4db916d3ed33a6dba29746ecb7601f05fb29586b6d6c3b8942ce960cfeebed0edff519b4fdf1f71e66a38c65a4051402bb92b5205605d1070a585451ca6cdadb942a8ad4b6640aba48087b2f69be59f2a4346fc973b66d826815ecc33eb4faacbbe6bd46fcf043b021cf223e760d79dae740287b51cb9e461ff1b2bed546acc854cb95743855f5c5ca6f610553affc66bfc2be7ec5f25bcd92bd18e9bd6a7bf9cc5ebf9e0c994e3da1e589942c46d0050c4894605141940e306ca1c01a390c899b385fdff2909d58d295c8b322edfa38daa3dc9160a4d36b2957f1d391a64a1d1a03650d2d312c51634a122e69206d3db541c3175f3eed4a65adbf947f4b40054b7841850c242a30b84abf5081144eb69498fa21885a65a92569a064cc43428b8c197040232bc90f3264312345054d679464500453cec9883156604618613021c5871d9c705202cfed080801f50497dc1a3c38e1eafb923569145063b8f0028a962e075c7dcfd1fca685a54e586b412fc3f7599a61f159f25f1a7f248350313bfcf0e90aa078e162a8cf1ba4ed4ff78dee4669fb27d9e38737391df229840502d18e16bd60fe22717839513b51e39f39513de31b59983eef957b7e406b9ff68be0dd1e3fdcd11d4851440f87f34970bf94dfbe1096e7488d604ecf4bcf91f2d2dfc86f906e746168c59a1d72a4b6ff8dce4ffbe38756dfe86e72373a3b8e1f529c13e5e54dee06c992e797139523e5b7db9b0a5d0c5fa4dd3e483eba908a5e6b2813479e9d1bef5fce66f3e1a8692f6a1c7f43ffdcfcb903eb26676de3e3d0e2cb643259cd1bb96cd7fc8eceb9a175ec9b9c6cc78e2c720796973bff425b3c3bac68dedfd6f3d7c113c71d533ba67654edfcf8d99affe3388ee368adb9f340a39018a12c211a543e6fa8f07c4ece8a1d56b6c7e1d1a2f175ec34d10e2bb6cb6f94ce72a274ecc0dfe142b6a4bc03eb864581fc47d2d664cd277772b6b626eb5fe3e533c7961096dbfcfd0473ceb1b525bffe14c23a6974dce813bca244833bb0ee159bf3bfbaeb6735959c0f35959d9bdd8ed63d2ee771f44b1cb56f9b95ade7a56dca4b0f41d18b4c4f1b18db172ffde953212c212cbf59317e1bb3fc66f3b557b9d42d554b45a21a51b1d42b95886aa50a5183a854ea0fd587da43e5a14aa951ea93ba43cda136a937541b2a0d7586caa4ca5063a8305425495c0081073ab0010d68168e70a0850f200941cdd5172a525d527535a92ad51aeaaee2509d541dea52855299aa086a539d529d2a10f5a956a9507588ca7baf45bc6779af47d4a89ac4fb136559b34abd3f919635ab12ef4fb465cdbac4fbf7c8f5d0e19e6811cdfb0eacd72ec70e2b6bb3917d58459e2dee7187589ce9d8d76899cbbabcbaa8cb15cb6fa3673fea9aaf3d6de4eb12bae75faff055099de32b179d81af52dae7eb168d81af49680bbe6ad117f81aa52ff88a842ef2f5088dc15723b40a5fb3e8f22b167d7e2d42dbbe5ed116f8cad33abe12a153f83a84cee0ab155d81af507ae7ab109a025fabe89faf41e8097c7dd2405fa968097c0542eff8fa838ec05727adc1571f3404be4ed1415f7bd00ff8daa437f8ca8346e1ab0834075fa568077c65d2425fa3e8067c85a287be3ed10cf8baa4797cdd419ff055077dfb9a835ec05727dafcda449bf015074df4f506ad80af3bdde3ab0dba84af35e8a2af34e8047c55d21d7c9d4193f03549fbf8ca4423e0ab4e03e0ab0c9ac8d725da83af31e8037c45d201f80a8336c0d717b4d157257a84af39bd3f891ef221d0b8774117e09168013c083401fe03fa83f78016f22de8a3ef8016e139a041f80de8207f4487f01ad0037816f48fd71ac8d3e89f6db52c3f8feef9dad32b7c5d42e7f8aa84f6f9ca451bf92aa52df8ba4567e06b12fa82af5a3406be46690cbe22a12ff0f5085d7e354217f99a45dbbe62d12a7c2d42ebf87a459f5f793a83af44680b7c1d42ef7cb5a253f80aa57fbe0aa12bf0b58a06fa1a84a6c0d727bde32b153d81af40680dbefea025f0d549077df54147e0eb14bdc1d71e3404be36690ebef2a01ff055045ae8ab148dc257263df4358a76c057289ac7d727ba015f97f4edeb0e9a015f75d0e6d71cf4095f9d68a2af4df402bee2a07b7cbd419bf075a78bbedaa015f0b506ddc1571a74095f95b48faf33e8047c4dd200f8ca4493f055a73df82a8346c0d7253a005f63d044be2269a3af30e8037c7d41efaf4ab401bee634ee93e8113e045a00ef821ef248f4070f025d80ff803e7a0f68027c0b1a84ef8016f21cd021fc06b4087f44ff780de820cf8206f25a0fe069b48e9da38c4d0ed92797632bc7d5f6a755c9a710d699636bfb2cbdd6f1e436ea3bac6c8e2b9b03cb9afffe39b4783e47d5de61a583e7a5ebd8c9b40e2731ad6329074a08cb9a2bbc91cfc063e0fd8772d6bcc0fb0fe9ac59e4fd8776d654e1fd8796ac79beff5093352df0fe434fd64ce1fd8778d6acc0fb0f45599302ef3fd4b3e604de7fa8ca9a1278ff212b6b46e0fd87aeac0981f71fc2b2e603de7f28cb9a28bcff9096351df0fe435bd66cc0fbf3c8599301efcf4367cd13de9fc7ce9a0b787f1e4bd634e1fd7934595301efcfe3c99a25bc3f0f9e3513f0fe3ca2ac49c2fbf3e8591301efcfa3ca9a44de9f8795350ff0fe3caeac6980f7e78165cd11de9f47963587bc3f0f2d6b16e0fd796c599300ef7fcb5953c8fbdf74d614e1fd6f3b6b0679ffdb923507f0feb7266b0279ffdb93357fbcff8d67cd10deff16654d10deffd6b3e6d1fbdfaaacf9c1fbdfacac2980f7bf5d5913f7fe372c6beef7bf6559d3e8fd6f5ad60cc0fbdfb6ace9c1fb9b396b02e0fd4d9d357dbcbfb9b36607ef6f2e59b3e8fdcd266bf6787ff3c99a44ef6ff2ac69bebf1965cddbfb9b3d6bf2787fb3ca9a43ef6f5a5953e8fdcd2b6b72f0fe26963537787f33cb9a41ef6f6a595383f737b7acb9e3fd8972d6047a7f229d357fde9f6867cd1d72fc25208e7c7fa2256b66f0fe444dd6d4f1fe444fd6b4bd3f11cf9ae5fb1345591383f70bde2d78f779cff1fe44583950393cbbed83faedbfb51647d315b4109650969096d0d6506e4837b41b5a1a6a1a7a1ae20d450df586aa86ac86ae86b086b286b486b678e478e878ec782cf168e2f1c483c7238a478f47150f2b1e573cb07864f1d0e2b175cbdd74b7dd6de9d6747bbaf16e51b7deadea6675bbba61ddb26e5ab72d3367eacc9db96436994f26cf8c327b669569655e99586696a9656e11e58874444b444d444f443ca228a21e51159115d1151116959d27b50ec4ed90443b6b739e1dbab882ce8932a2737a19d0395518d0395617d0395745740e960a3a27ebd4395a16d0395b29e85aae02baa6a380aeed26a06b4b12d0b5a608e8da1304748df7005d8b4241d77a0ed0b5aa06e89a150374edea045dc35a80ae6599a06b5a0ad0b5ad12b44e2e015a474782d6d92140eb2c11d13a4d07d03a4f06d03abc11b44ed410add32b80d6a92280d6b112a275ae44d03a5841b44ed600b48e1610adb3f543efe442d03b3a10f4ceee48ef2c7da0779a04a0779e707a87b7f54e9491dee90540ef5479a077ac00a077ae7ce81dac0ef44e5691dee9a17788348fa9796e9a8787e619d23c429a8703cdb381e689b236ff20cda381e6d9a1798034cf8fe6c940f368599bbf0ecd63d33dba0703ddb3b336ff0b748f05bac747f73c599b7f0eddc3b336ff1e8db4f330842087eb795223212d791ca542e12f09c251ba81f83c60501e23c993258475c3a21b38cf0d8b168def4fb4a3453cdbbf2c239f3e4b1a83250ae4651505f2cfd13a4797b3d33937b9a5ed270f1927cf18db1f268475f650da3d96b63711c4a983b7fdb18e5dcfc6e1f1f269bbc9d97ad6b4f540a1317ebb9f63eb098da19bb625db7dda7034c5d5f17ef81271348ed6208b267216a625d4321a9177fe946dc9b6605a4459d606d3f2efe1d9118259f158ed68c914fc1e1e57da79f9fa3f41bbf33d3c3b752b79e964ce4b24136a8f43d688e0fcceef9048703e092ea465c9f64fbc73a278b24a35b2dd674e145196972e8445713e1281e1749e684781fc6b43e49b9c357b9ee74f70e7267793eb2185b07848ea42583b42588f2354868644a6fb14c2ba95da987d9d5b2e07c3f1d8b2367f11887c0acd348dd41447a3cbbf4f21aced2fa4654ddb95282aa82ece20e20bce5f68cb9a46724354f961aa0812ac00e72f2494459dc83d25c1e10e0083a9be473c68e44a9e7783464ea9073a70a400d09538d007f8f8c35159ee1d8f709497d8e5c2525ee2cfe225c6d2e3249fe0c61863d99f0720165a44a9ce99ec7fe2261b3fc5bd8b25a43e27be3820a50e0474fffe9465ce0f190469918d02bd74ecfbf78b38d8f74f9a7d5d5f79af4a5cba49fb41848629698f7ea156f48a628159bc20e6b9a272fb82fb1437cd20982f8eba0fbba245fef736599b16161a665f1e4c8b7d6f96927d1f96c358180cbec261fcc74f82ab4ed646107f7c22e28f24122bfe48c617492789c45e7c9144227e0c575db58e5f6dfb565cabab7ee549d5a38a3dca6ff47ed9f7fec551180bbde12d4dfbd6fab882f55d20de6285a3aa68c57179d7eada6657d735afbae6a4bb7f75f2886f7c0505ba1f82e2aeae6b76753ddbb592ae61bb56c761f6c56028d01d771d432029b6f2f23a65bae9f9da2f5a84a9a04055ecfb60682eee93c08a02ddbfd84aac302b87e56ebd185b616ce634e12b2c066be132392cedfb21ed7b2f26b32fdefa72d86bce6fba8a74c35c2cd6e2eff321a43e27ad9f5b31a786fa3f1643713d4b1a7d8fa95575556cbfcfe85210347a5a443786faf3de7bafa640f4490c7ea00b045d1f26ddeb8d952b4a7e1c1a2f2efdb2a045f873d99cd5f1e98111c16d7eef2ce78badaeb0ec5b9bffa055748aed3f68106ac2dec99aa356e4442af0c3b90ad6faafcfb3fa3afa11657fb890f2ada222801971aa10c14b5a15ad8a96fdd27491af925a5d18c4e03bdd22b849b3b62122bfc1c2a76ff4c18f92e66575e24e5eb5be44fa794637bd494214c57a038548612f35aa93252f99bcfc3ea60fe32527b50918274d70932ed73e795585d487e2ebf7e22e20fe684f53666b734d81eecd196b076cfbd53ffb597cef5f2fc13ef3beb2b9aa55db080ef9e223ae3d811dedfbf8c0cd92eed9cf39b4a998133c5f592c867d9e46a4b48862d16c4d8bea97606d8ec97d4128e1eaeaea05ea7d5facc92f7004621fbb74bcf45781b6719cb0c1e14376bd3ecff0a7570801fec0f1a804aa2b144e28810ce84eb885a713fc468b1839e25479a04054e4cac3f677142a0fb46896b33551709b7f59fe9757346272fd7036bb6f1ff3623d1074515bc1cfdd5d5b28c1042883124f5e94d8a111c5dd5d0772e1126673995a22a9162b0a9ab972b960dfc706987b20cc87bc8c721961f5e242e5866f07527189a2840590e5c96546ca150096ac4f0c148bbd68b2c48dd809c088a59bad9c542472d646412a292e4d04704493b5517083ee55865444191b32cda6543188f1d212831567649b4da962e861b029950c503d2272be398320edd22eedeb07d592885606d182f6dd392c5d6ceaee4e4399edeeeeeebecfd91622b6dda2c6b69f83b6eb0127092db02033ad4248c9719a2a766801b3ad7d300921b67d3d1ed9cc8404dadddd6f7f7dec5304b52c6d1bb5c4b6df331ed97c43e5c50b5c685dd1e4050544b14595153a1b92a62e2fe90c0ecfe572b91d0ea426c5dde7c93da2966cfb3b494edc2091c4b65fb67d9df1c882d5775042c2bd67090e091b32a8391153662ea67c12dd8d83453e894e1acd73c623b7a560dbc749aa61a4954728b1ede3188f2c0d861b1d7070040cdb3e35828a6dff868e40863492c278a18930ae209d342153a567a58b09703e040d5df20d1337a2e493a8cc7266dbd9ebb658258d61e5490d64969c7051c3941a5bc4a802e7d5ca17227c2ff82222fa6cc6232772b3e2ea1be900204b0ddb3e2dcb1758a8d8f65bf8420d31886832868b111788fa812aca8b32680c0145c30d3494268328b63f98695f522c326cff0cc495122829e19d000d29b8333f11238a1421ac4ee0e40a3183951b1f78492345cd4cc7e767a808262d8a4063fb67da9741474e94a407254b7ae0c1a9296a0ace5a9ab5f5876d6db8b2ad6c5b6badc5e194897e94f00191201f46220cc142b4e28787c3063c27ae88a0bc52c6f68f05a550658d2b98ce5c59ba920406aa26ae78f181882830aa88898de3d115673a3ee6f60733ed8928c12e17208613676cadc1858b3530d80245ee8b2c5840cc80b337886d6fb8615bdab6d65a6bad1d8f6ead95609f3fb47d0e99c0ca132b650ca13444d6f60ff21ba522c20928a9ed44bb2470ea8bdcd73e683f4341d9f6a915db3ee83e65bbff0f777777d77874898488b22d08badfa7ed3764d9eeeeee3e4840c72a360c557142881a68b918280d47586badad9906caa345b84f9fa723b20882862084d85e05697b6999c4b0adb5d65a970f99ee4aa7f0d9fbfcf9210c2c80e86da702020a2a4b54c8eca014dc90c453132488a20977e6359488f9a20d30864801ce1f854b854ac98ada76777772b6443e6915d114f924aa5ef6296ebbcf99530fdb92605b2736b6fde1896d691cd800c49629c84c210417b8336f9b05ca081fbc38e2072470d696d6562f10586c9a6d896e49f35bf551afdcc65d56c59428b67f9eb2fd693e18b1dd09871eb65ed5280bf0d63fefb62009baaeb6e05bd7bd16a45e56f0c1bf443e40f2cb201a66aa9628288846cd7ff0e87e6026fbbb0f2dcb12b67d5a628a4ff8a78fed572b252e5b7ae9efe36548e4a5bf4929ad41341ffcd60cb2b6ecfa5ae231c87dd7df3188037cb6c57f6f01ec636b83828c2c69447ac9f526e14fbe8fec7bcd92e4e7d2356aa4c8f6fbd9152ad4e6421f0710484d4dee4cb72e2991431d55799f104d3a9d4da9a474d93c6c6d4ac543d63e5f4b6c7f9b4da9a474d1442502a5ed8fa7bc87ac0db429550f519b8a87abbd732a1e94dcc997ad7de2ded417ad2fdbffd5dbfe336b31c618d7d92533bd4edb5fcb4b32b5333249b5ec5696981a66bbbdb250dbdf0a05c2c143f6dd769d37e5d3a3c894c932c584f374d39e6e1c4ff78da7fbe69dc038f92205850435357bba6d9eee9aa79be6e9ce4fb72cb747bae9a69b6ebae9a69b6ebae90ee97ef1b6109dd6de6dfb740b61d2b4bf78992e9fd88c7c825160144f4aa9c7f3db093a65f11ba56a5adafea093df4edcd341d50e689535292ecb9a546bcb9a1427065cfaaefce69afab09e3c5d5f7ac813dcf19027e864873cbf313ae4f96dd5c8d325b5fd73c8d3d5dbfe4292b4fc767fd874e36821495a64c86cf9ed3a6dba695a48d25699323cbf5d1f36dd38b490245e962c3dbfdd299bee1b5a48526f6a6ac96fb7874df78d1692b4c4c4d4e4b7dbb4e99e6921494d4e4e567ebb3c6cba6db490242b3060767ebb22d874d76821493b274eaafc76a56cba69b490a4aa2f5fa2fc769936dd590b498a92924a7af2db8db2e9966921494f4950495039bf5d289bee9816c2248784f4e4b7fb64d33d6a214c9ea0a07a7ebb4b9b6e510b61d29b9a62b2e4b7bbc3a63bd442982c316162c294e5b7abc3a61ba685e8b2c68cd16df9ede6b0e97e6921ba2d5d195d19263cbf5d279b6e500b61c263928549169d96df6e934df7a785e8b474647464747ebb386cbaaf16c244a7a4b4f3dbbd61d3edd24298ec9c3889f2dbdd6dbaad16c2244a4a4a089326bf5d1b3693262fe916c2c48916d5cdc4c9add3b55299f6896b9515bec2faa4b6ffc724c6c12c2720d6d587442bb31d9319f3397d50dfe772555dcd55a4286be29edbfc4f30d3be0c9a35c9977422f2897bf7b1ada4e73c7786206700c7552b6bab55bbdec88640b75d642d7304dc8e5495c4c8672ee3266e3aab923be659cccb7dcd18bee4370a46b9cd3f29ffbea92ddc03bd749d97ee363de4d375bfa4f3d757db93d05ebfa9e07ad718e4d66df5addd8b82dfdcac2ff47e1029d264b5a43cb994a77debd9548b8c5f970da116c4b7fd107cdb3b0ab13f7636848ec54d67d76d96fcefe947eddb7beffd10ea5fd2c706c9d33e073ec9fdb4e8e45f82bfd10f2f23a43e48426005bf8bf63c6b9a2afe25f81bfd709acaf23405102380228b292656ba246939cde04f6ba10d247a4aa0400a30b060801720b86c31618145863f0de31fb82786ece307d0fe3e236bfb7e468beafe8cac59ddad4971551f0d52bec0104588c1c283143124e1fc4bb0a60853a4e1654b0734745b70fe463fc81f1f7869e4e6c5b9118d94fcd99f16ba3458154605399c279961e38a56115a92b08e50e20a316260420b17079fc40095c3657f9a3ff507b1422b21f509eb1279b48189ff7966f361188260f36de47f9b1b3e50d112c4982c7223e8c2043a1554314607a60b17b37b27c8a7e7a809ae5e00824c1126d84109ae5eb0258b0828686049320257df3d07e64ca3fd979e0bcac1deb3c690ce6302314d4da1e6c0dd22536f532a261eb9291593d2f69c23b9ce95c20d239ba474bed6dc2c916bc8b3f23692dbeac39c28d927f20924fc1ab23a79097b580dd6a2976045810f4852584e9429c1074f384104151731e8d0040c2d428316f9d7ba93d17c5db2f25da528507ddffeb5a93655295cadb57783493e5730b24552059bb76ff3367fd61d8c76dae49d7deb300ce9993367ccec9a0ff539dbb686e4c0dd993c8d6c15601fc2fe34b2c3d9e71a12f636337d66f2c8ddb1b779aab37169da09720d08590bff330d533ec34a19565c69eda0c5050b55442933050721a4d8506b4dadea41f25eed6d316695691466aa747ea351b4c1b42b8dc28cd3aef56e2a27c45031596d9b97852f111c67339bafffd6ac0dc1f99a01280ea74642c5791ded3b7d3404c9563f470932c5c5a0d0c14a1b579c72399cced7de0a919cc7791c128995da0838aff344705e874462c53e126a6d38444470be4622c121734a1a0e59b34f711457b3e40f2d2b5824b16597cbe186585b7d1a1c68d50523c0e104555e20e38a171d94a9302b0043c9c986d9d35148cdc33e0c939cb32f226e910375d7bcd5307d9ee7093b2185bd02926df3569f3f7bb66105b8dbc6dad8dbe8fc568bd6c25e3472dfb00f6917267ea85708c196d59a9cb388b8652ffeec43abc307c7a3d95118e6fc995441f6364ff74cdf5d473bd3e2cfb45844dcb1b763107a45952baaec98f8392693bdcdf7c09042164e3e304955e1046684adac255fd428436957a76afd9046dbbf63109b97d590e7915d637508847a099bd5c24fb243b0ee1a1bd1e68d5c06c492b397695a03f2f68ddce635dda12b7994944cd34d4798fd587e1b5db3349a6e1a2798ae555ef6a674f01133e5045a4bb85c25f1c23c9d3175035309beb859229f6eb5ebd3f16876f3460eb34fa4939739cb645fc5b74fb3c585857fc26030d8197331bb56984d7df29b2569feb4ff549f9cea9308de08bfe64351d7272febd7e8dae465ad4de11bb948c3218aa46df25bcdd7af4e4f7ea3356148d68058b2888f0d937d927da31d4937abbd3ac668bccaa302a69fa8446cf576554b32c5cc88080000000ad314002020100e08c582d160304e4431ab0714800c82a6506e4e9c89c324875114328818420c2100202020324043439a00b6eddcfba9fc3beac37783da5380c35cc484df44e8e4e2703106860a46274765bb74c37a6785df6b01d402ca012cf6580ede0c02f9159d760d59129f6b7b81f72b9e75a1c223361b7e24b04630121e154d0960c4d6a52b3b7d83e917ea491b47e6f7ecd5bf61d44deb1b7b3f021a0ce28e6b3874890cbff7926e87f145073346af9cd7cc03e9954136b339cfb3559b81524b5635e791bd53c9f6c51f5d48fea8b8d3e4d123b495bf85742a13bdb42e0f6df780bc71290daf0be4444401926cf918e6b7f809c55ce1fae2f5803b8f1f0c8f4b50716aa7b06a33f213fa7c91351086e26bbf5cb5c3169f23ac8fe2987b8f7392c7470594eb79be43f0963966653a706ae6027afd063e3f1d8703085364f6b938ad0dbc3ed606e5002044ac36fc2d08eb2e4218f42309c842f2096b6f9ff9395b817037edb6c8912a551d5e8b0407414cc7e573e2788b677d01be359b58dd767f870e21d0207d44a4bc78937ac252201c55ad27e83fefde4d9600040660b05c3cc30ecc83f50ac4640197341acd7711ddec8390cb017b9d4be8ecea60bcd3b8359cfba585ec1d3fb676cff8248798e47408c0e594045d22e24bc9c0c81def1b473c9f53f51755fbc22ccfdffc7b1df2f33185234264e9601247373ba8c4c673b6e1871c6bbe199b0f5498476c89caeb434124c8385b30d5f1ceb00610e6324b910e1d9e8d9a60f054aa79f8e0cd478c77e853d543ff4d2c3b61f67a2bba07d465aee5fd942a459c4545e3cc65de8337aa44f6119bccafdbb402b2b822f8326ad31926ec4f656a5439dd3057a3e0cfca3f7997f0c77596a40fdc72031fc97e16677f4c2aefcfbe3dc0edc2c9873e2186f757a0e4b762c2c99620d3e77df01cc345c5480af5ebbc5e530dbb4b95ac28f5e9f051137f19a2435b1ac61ff70a043013795eddae364f08f8fb2453b0faf389f42968c0c04a44efacd96a2a2cad110668adfd707b8ad518700bc83959fe856dc3aed3beab17ed8fc3ed556b955fa87f59a161cee827890f832961da210cbd50d82f52abd477e5a9206a1ef7b116cfdc6b90515a711a7dd021c1cb77c57b6c04dae3b65275035714947be04c48227494e56017f1fa5460226b97ddf37b3629021abbf87adc20ba5244c3cc1624d160909c95a42265304916e6b8be4874c252f86447a346c00d52e5de2027982e8108a337071a837951953739648ced20b9fcad4d09480f9b40b25c3cb9801755008094ca482b19414e17d0b55977f2b32751a9b508da7b1a50dee93fc785e787dd27f5bc2591203a3e3a227d6f94d52bfa661ce5e44bef5c40b0a7fc17804e4e81b044ebd63360ac2c81e72506bfab6454e3218a4cb51aabab155234ba18430f1eacf66ee2d354bc8a7cdd1cf0eb33d9c5ce0cd54f98e227e93dd220a44ed577953cae125a41aa5712e82c55fc07a6e57cf9b8d6e7d74f0f08a79657b3b674380a8d37641a9e8e559e502f99b7aa37652a71e2d85638572e81f4dfdd0319edf6fd362fc20e87640d2513678f0ee6d6f1a66dfe11995fb7e3b8f3f977b77587c0c24cf5cb820612aa125e63e6c29b91a8b57ce306825f805b13134c4ea85f8f63e43d4d9d320115fd1bf245145d4f0d16cff30ac38a9196a5dd36cf7af929848266d5747358a14b36104fd87c8602e1d815fbe6942c143571e200e3b8ea66ef09d4fff7fbb1f68b0690e123d6bda808d4abea3b7268d4221f446022d764d89794958f658d74b80c43a9b93261a1a88005c1bccff02e2aa789c2d5827781c97a51d903aa66bd046b12ff4d9d4d7ba4c1415021e3b1126f6fd119f4ba7a7cd26338b07ca171a7fcc6d31649438f2755fe3f3b72235a9ed1b7049211ea9c5d8f325ca5091b5a8a8b10c2d95167bdcae7b37b0906371da9edcf86f742da0dbd508cd538340b3f6e9ddd5afb14985a85ee8f0b65718105d00677f38f67a9ba394955c1709608d09efcb1fc608a9055ce0923d157c93cd09f69de8161985f712a8642cb653c5a4ff25bd9fe6c928aa1a32e818b17cc8c87ca13d9beda278478290b06edd7bd4714afdee3b079783671692f90ffd50fa41bc0b8c1e4ea55de8cd96880c7d98ba41082b0d8bef95a154acaf6d613ca034ef04331c8d15d6b70252a7228cb3a3274b3817acaf4136565586a09b3602cefc756bcf57d3c86ca87865347c0af390912e66c566ead6985a86c8fbb7ca21c5aeccf74e342b1925f0c2026aaf865ace61606bf648e47042080537fbb7635b31db84567fe46e5131fbcf1354fa1ed2b88fc2069d7b1383a7448e3cb93ed338054fd5a38bac3982f576c5944da97832ebf0002e9bd1953485fbf37ecd11f34d77717c956c9c497be3dc7dc720a4abf0944f5d08864a6b53f5ff82ffaea0607d31c1af480e67be5e9ff0900dae517b5212c0ceab7353f876899d6fb9e25905ad1821679ee398bc1b0dc9c8b51ddd4706ca195d1b2970def2b31e144f633000dec29576008d71bddbd0b05d03e191ffd7bfef308e996c955d07b2719e95d93759a06e6a263e334d2fb021c6db9c817fe96b1bf530b193890afe2a62162aa4cceb3de69a309d5596f0cec1e4b211e9fb01c4de26f77bef5eeebed3d9c15584cd10dad6d0d01aad96156cfd006b730fe01e773d89a13d4ee0e2774933da5bccc3e1829c5eff8bd743dc5272a6b4cc13d9197cf0677347b3d8be24f51841255b8ae39b17f281cd6ca9a33c9404b3f3a8ddb6ea8d89f241725cb5067e5cd2b9ec8b04832fc22e045356ccf0755f76748f5310eb20eb595e89aae56eb32f1670456b8d6da03f5bfbb25ea976f1b01223ec5eaba0185afc641300ea22428297c62d0169ada25b9d388621b229d602385773cb0ceaea6521a11a8794340a146244e141b67d41005f72f05de6453ec0b8d36bb4b8cd06cd6709018f367a824c1cc7070904adb105bca71f5800f2aa2178e67999923e9df35b582c5ee14a1919194c5d80585315fedbedc7122218b1597b7262a049e339a1919dae9d972969ad1fe30b1c7ea4f5f0db56f6d5b920fd5190de8098ed37aced8f3c57dcd820fb8111a2c003071ecc8acb020351d9b16edd82fd344fa4d906cf50add6cf4f57f17a3447c33d54a0fa49260245921d58ba5b227c4c88c14b8d27aacdd82eab46017cecb94d9f82721ff68d6b335c8abb3c9e58dd485b81381ec3cd71f0d7359ec715a160b67fc4a0f64801f65eeb7a4dcb08984614a9e290f05027cd67a106317f8b8e0d57998df265109a3b5b30c92307120a0784833a0cb28c354991f2da8ca58c42903d75ad4a351faa4d460b100799cc973647b0a8744eddca5ce4b0f2e30aff362e94dae58b1520a864cf466a91b2ec9c1af459c4ec741c707defc7113fe395acb7eab346253a0b9bb734365da61ed8da61855e1834e7cc003c32608d333506353fdf0c5375b7e6819bb579fabccb2dfad2456b30eada17cf3c54fef423653142763bbfe1adf8856727c6153b5b4257690df8925f9e120bbbbd504407d670fa82067de9c00390a5b50046b190badf9290113112b7a18e0734e459ee00e2d7e8c2e3ba2114c855fe132e67277bc81a3e93ec22ec6c7c5682e806974b03482956f25bb215f998563a49105b334e973ae59768ac8cb7ca84829eba304f5bed55e8120a02e0cbf43799383bdbccaa5e61c654c29bac71e31b7b00562ce292930f5de6f3e521d08c193ef04f9ef6bf71c39bbe72857c04837a09577434c72dc9aa76659a401691f4c43ce632ee4b46b2ad2a5c5cff4dac7c74cbe731ebecf17ff818047be0236afbc0b6a0f4a1b0ff30e81d2776cfc641ad282bb8b882e07627058c864e4a4a14fa09b7338a7f6fbcfedc327e2fb49a8fa3e623a8c9b8871fb7e9a8c4fac2c4804e1157f6391b755df667e2111f850ee15dcfd8e780f470c346a511132dc1cc57c325e649e29e35310c30ca1518ac5184494d1b2bd0130053bd12fb9393d7176f147668167c0e53aa76996137c7b208e36f7eef29f1882c39a218e4cd5b4aa1938464d40b49ab1929fea20005dbd237dc312b84c93e76cf8c8b00c3deef9918564027c1e3842d702d58610a040720cb032b916bff27c4fa760de54e6cfd9d44e0dd9f1c22ea8c1e6f5963646104eefa32026bece3f6607df7557229c1aafd4dc755d64424e27e6b79917dec6afe8a3327b123286dc852ee69d140bd1bdffc38ac120899c481669f1cde3f87062dfe16e4e64df0ffefe04b448caee401ddc46b2085a80944b830d2b40efd2522fdd0bb5dc26b515b01a32e0e4dbcc5e3413890470265aa12e6ffe8c9a287de58b653b345532242fdeacc6355225c033f4ad536b52d3f99fbfbd15a6abf8e9de64139ae16c03a1f70880571dd161f9728f04f66f89fef09f80f2363f4d7c67ee44b448ed9b7c966f92de9dc0944e665a0cba11d0a548e88564d117657fd0ce77bd2e3372a93bb0224eead301a4568786af231bfd54f4cad9ed6c5334f6992e075409b8617579e636c7c1b34002b36f148f94416a8cc70a5746b4351d59439fdd0543784f14b3a00ea09889666600552a704867cc2bfd53f64270829f613007f0509c3e548ea4ded54d4eb92c80e8ea0c60195049e7e080d76979f51ba0969b87c8e18ca62f33baca773c785dd1971360d32a4fba32c231c7dfd777cfadfc8da9fce867dfb0be03e9b6df274c299a7167ebd55c3b5c3f53338ffc89d3e0da3e257296e462dce5220c8d67e800d53524814183a954b4a474eda3a7d98cdb6f8683dd7c537aca2d805c11a2e6a048e1ca2829726ec7ba785cb279d43b0b1afbb08c6faaa1503d71a6a27be60c7d9800e95e1166485a4e8fd2e94a107bfe51859ce3a3642e5ddbf550118a51b4ed97c7997b2e6df2b0c17b4128f3ef80c920cd77afa080d487302520b6cdf23723dd105a528ff714c239e12f66c7feedefcf6454c563b0800678005976a819bc626966e326a82309ba6d6e760a3ddc3c596e55e59dc353b6f74ab4a7894dc81a2fbf38db720e54bcc65b2b391c3f33902c082b2165627a98a0cd5ac12b3d02c179f811bcb2146b6aa38a41235e217c5670dc6cd80e3132bfb776c7a122706835e85f5f19d7f922e9671d4d46a11411bb447bfd9f180a2a8494a2c28d8aa4f4c72cfc5991c17f8bff866ac44e36e312dd8427c814404722c37ac12562b668ff1b50ec4eef036c6bf79f1ed5a5c1653608a2649cc52c3e0fbcdd9b2045d98c8194f04f365ce93de6cc503ae6c63733019b99d4f8ff0eaff5052a15a00c028d84e3f5733caa234666b65eadd832bff0aad0ebaba8a2b6b0119e5902ad5c159ba2b9a7555d8565470bdb4f098f1b80bbecec5cee92ce53aff200aad007842296582785b7da539eb4f964119f5c630aac8753254d80f214f50427622f1e773dcc36874334b9dfc0e16a3ec24ad0e9357df2e4c3a8ff15001aefc6f05a313039a8a0c9d05770d2f49ac3d58f69b1c451482c68f78eb0ebe7378bbbaf5d6dd8855abc872a75217de06e69179b5f0210058d62768aeb114da6d7aad232234d3bebd9f46ce6c10aeec3381e79d062ff20d9bd18d76019cd268158867fce2a922ecbf5027637689286477e6877edc599501aac1d72bc6b186e9f1cad9f81f627899aaf40fab2ae1d5f09e213a0618026b1c06a881f90f84802e02e0fb2e7210b3049a780643bf4c583a7e4d904f87442f48ba0aa31d01cc8f627bf4a4d3c73e16db843e250ef5995fe04a925ccfa76c25648b43f01b716ef3e98bf55a6e14763167bbbc5036502a1715dbf2c4679fd14b9cabfdab1fe9f8259e1d22b5c5c09a626e1920101e0da9016f61d201b0ad021e5358c3a51938c373f0091498b3324f2a9efa86275dc3ec5b8696656825e1a3d280e35f0e9a31ecc1326642cff727b4490bd364518b301ebe55090d084ad615a2c6f4b07ad39423de201dc1fd488bf3e501247402aa905e97706f823fe32108126af575a8921cb5e8fc3c8c5dcc57de5ee7527f72f2f7347d986fbd9aab8c3c3c31d5503ee48fae31e5596c3d73be16ed222ee76b570b76abfe15fdce64e650cc3afa1e5e1eae3311c3a12ee4cf2732f6a8173d5047a5384a57a3c3eb72e4dfa76026ebe62c5549c1aef910f8c59c265da74644d7b64dcf41415449ed33b5a35fc02e88e35ec913ae5ee84def5995ae6ea1b0cc685ad1df24886d9bbeccb8b46d6ec3488af063667afb2327af581f100c47c681b0e89e787bd3a53b29ff4e831bacd5751a2cf9526a38d014c603e1f8ef09df2f1281a9448ee7a2f895a0e2cf0aa61af044e3bbead62fcb429f18524b463d96a155045dbcb8fa64d88b28f70fd859d692cc35f106ef8c27e55e4e715cc0564d94f34bcda84a0a0cb82c2394d8bdd692d41e165cfda990818b8819f7ff28e58fc0aaaf26f08293828f8cc606d59ade940fcd1ee63ac087bc7b38be19833bdb584247dc95447885d4ae7d75cc537cb547268bd01f98fa304bdf937afb40f9a7e3a127d5eeb48a5de42edbe2d0d83c771f7e375305bdf964944753aab165edc4bf8ea718e9b2f8a8c504810377f3926db86959e030d4bc719ae80528554b381ae1f444aab7e7c250da97cabc600dd3f70127ab0dbf6d3c180cc32cd2286677eb353aa2c444a3af878c37188d6c20c96bb11794df258354c9e74acfdfa8e9bd02c38ff4dcce117f992755536e27076fd3803f1e7e47b8744c4433bb05d545652440d0f6869538dca7ad39495c86dda305e4a6ce22e478b4b5cde8a2c10139bdf7788b3133902cedc74fa25efd3929513b79f6fff7a608c98265276e959559cf4f86bf00fe4f06174dacd72f781b3afd86ed2efaca7202168f5655f9ab0a478598ef4b7baf4e55ca8785fcc59393060235106f770df0c96a89591219a9e76d113e8b3623387aea49371831912ce18d30e21f47bc1b98a4a03b5d9eff5fcc5ed82ad6dc0db9194f2713064ae61425083385b7b265120719e3da00d5b248bcfccc0644d51c8114d446821cb7ea242d303c4b9ad07fb46aba0bfd228e2b374084fe71e2b80ed5e670660ab889f56a2183c286e700daaf14f1938949e6f4bdf396fa7ac1b9ac5ac524e2ade1f960a9d92cc1eba1dcc07d609dd9488f785661dee0f2b240835341f6a4e20a7fdc83f329e293dcb10678c43f485f8a0ee2cf8c39e0ca4e6bee4d0d49721a15a8b011b86120b63d3c02c43c6672d56430cddf13775fcb8a515b571100f17ca881e271ddcd85348f434509c2a7b1d615071d34c587e0a5b8e74b11c9e82e02e548b7b6d38711ac7c4e8069471ecb7d32b9ea37c6852768a323c1c4616de8d1ca6cfea1b72c9f0150f1fa7cae55f2d5810b1a86a80a14c348a850c81a1cf52216df0ac7e683ccb621574b867d7769ef64b58646b7dc05c3b1c76ad557d9890595e0da7020c9b41baf2b8b5477cdb342a504d4162be7c92b47fb3446d7286c3bd9ca59fc30073f1ae8be33392f6f110e0c57f23da0544e79b03965260623822c9e56ac572c4bd41f67d30679677422b48e9744e69901dc7bbaddf72a94d103286fa7252b1d6b47abed09fbec3f628ab572bb7a184941064200e59a263de804a7cd04fa3dad175a8fb77849c2dd7825637fc466dcc7f5cf2c9e2db40323c3279b328f32666fbefe640b0c77390c9d5d0a7fac4ab0b1138395968727770369433308e63178c5a308582011058795fbcebac31541facdc754be2668625c6c4bb0a8c84b33973b3a7e9b88946314495a2b7d3ea69d3b3024d6330d95c8c1c93d13fc687bb7d9f41b04d6720bbb573550e4b643022298aa488fb826a86c5ea207ed2804844b9c012d91a6d3079f1d471afcbda1f3d89f1561790ae481f6ae1dc192f8a8a87755e58229d7f2764407d5a04a990bc03403eac728c7f41c513c8154f786fb51abb3173763e4646da8da7ac21c222696b895c41bc035ab198bc0550aadb0dcc6f0af9d63b85da9481c7b3cc5310c3999df12233222e61d42b6ffc1b148a86241210509626d927eeb5ab23402687b41ac4c3f38881539483eb6efaaad0b1cf2980535ec0e4436fac78d227ed7dfa6c6009a658d33829cff6f39d95979712e63ba8050f30a0b5f7aa0dfa9c1ea22772209015ef8d2029416c293644843d7bffa418579729070776120c19ad6fb3c46a37d3138d2a4514e41488dc24664eb75acf7e92e08edb37a36f874d1cbf4a79311088d3bea449ccac9582897de3a63a48083e9c70dcd29f0b382f8e06a6822e7c220a280daad987c05564812072716834436843686a16d8867a8e6e824f500977a2a3855893b12cd9dfe1b7e2c6fcbf8512bf649ffcddbaa1b304566d1c6b28b16bf0a06e48d07aa9cf15d2bad24247e2ebbb451a84d509c0cc6c544f6d22e6381669b2606b999c9a5521e7c620a3e36188dbc90f5a54d078a9cbf95dafae641380fea3f458af3b5210017a5cfc9947af49842ed53cbe1deca8cc2f16861bf974dbaaa14ea2e98c0e5c370e09f5e1d072dd9b982ec477f21b91ca67d266342b20102e6ec56db87240313a4be6d0b90bc840cf26896573265d661ad0905615f812dbb73bf8750ef2f56e0c14b223af0101c7fb7f2d974a07acf871035d8e6122f48c23198b3862e17e8d1ce3a83138b14e014255f0ffb5a2b605238f9389809b15269d13c5924e70b8ffbb4c098ee0868d6a6cea52baa7fd793aac415d2b5e5619429ed2ad192f83076e5754fe33e7eb61dc83b34e55b6b9257bf3cbaab6f95c9c07234625ad57864c826fefffd246de04ec61b233a70e489eabe8f879de2b1464300c5bbe258c398eaa8a1e00c3d023eb8d42850496aaca18da93082591c51d6d6972b3d88a915c77413f79f4087f0ecaf60161b6d6bad640cd34db54fdede8d6cffa572fe17b562c07c35f5e3b901a58f22b1d5d63389d0a0f2db651ef33020da485c5324a6dc7d2de091e6eecd6fae7a068f86351f47682a2b0eea45ebd05822d72138053fa2a10454d25bd2626f46ee86051bdc304396e36dcc43723fc5c51c1707a4d5953dd4e2387cc287ebf0d42a7a0bd391e8bb0dd3179a7db5057002c9a680128aab6ffda6508f04ba19f8c9c2300abbef73854125240c1d89aa64b5ad22a7c2eb2da151e711249876155caa7d8762ba20ced2c72d7d05ff38a90c0e1cbcbf97ab2b8ba13c18f762850c791fdd99f63af7164835361623de0a5be49b31ec8e02e9350369a35cea7b9bb616f97f49b21a2b8103d3803608974f0d9cf50992c579d03e9dbb008b6d94d8683d76a35f5901758f1060531919354723c343b6e8be941de603cc5f7025c97d79ace44a1ae7870ae0c4c7ee8601bd572fc27f36610018ab0a36aca15bbed786635ae59df12ae15db65802d43426293d3a59acaa208a59c999cba1b4236a2fd69de600ee283e48530d0ac26f380c8e35c9fd372fdfc010296c63bf09900a90cd4f74965b00cd708793363d7c93b4671827a2c0a27ed4409ee9c9fb73d0c722ce9b730007b2c69f7a187c116d3cc9a49113923866536663a158e7e9f147469050ce5ad3ccd9c634856848f539c020284373acfa7444f731e27248a55f2518d928903a72c9f7d436e3f70e1194744c3eae5d0335d0220962e487ebe47cd7c676d911f882ebb46b6e8c7f3114b753d4a5948261a844c52c23c8b54e8e5846865f8c8eb71460e385bc5b2334c3ffe9e1789525e295e1049b163731369facbcf589509a2e8e6574e4aa6d0aa0863a5ddbcb02d6a3bef41d7701cf778afae732aa6504a8486a131df66b89c1aa85bb8f4b6c8f97e9d11cdc9bb3122ab11927a96d868722c8742025cc08fef0030f219c8695709a1dee3f1e668609d3f872d44ea903bb31700a9687750b298abbadff7fd2500d036117a8c4e0ad89f8661948a10bc0aefb165398aab230c56c9073574c1f9955883fb6b43be2e82bca346bfcfb71c3a8a5d82c51cf71b7bc02c308826aadc4b9aae0bc5596ac4acce98f4f21a794ce87b873d5281551fce041b5afe1b30ed88f72ce74e91cfd31afad30568668f150ca331bca14253c96a27d3020ee63b714bed4c5607b25725f03f16d77423ca0993626b35a44ff5f2e5f078dc713a7d48ba8ce6b871b0ae7dc66625da41c8653d2dca2b65e614254a29847aa65bb15e3c580a2115abf90221b1915ffc7726bdc04d1002da9af45578a0ea983908754eaddac486c7c9b61a8c7d4ae09cf28aad63eea249d4abc87195b8c0aba1beddcf3e1c9eb11f03e7201fbb121f22c0b40ac6c612164ad57154a918a6379247667ee5059eedd677012c28ddeaf17f12d2677a42981663d322d87650744510ca9bf7763b0a4b726278c6ea6fe41201b710f293d6364abf79fb10284cc2b001159de9dc5e7abdf4f3c7af2647e987a99da935c72f5d747f243aa8f589633cec4b47afc874a9c073e08b50ec51df2f932a9ac3fe81c1c98919bb2f16f2510758ed6a254f91d8f39a5e5ab22aa60b0a8d9865241476e00890e138d71296323585b5f54cc2204b71fcf44f6e88da06919e9dca681bb82c3ce846253f492f52348e219d585ba773de4025322ad7abb148a9bc6a83a2ae5ce8d62db2741c6cb8a385377ad24599e6f7411647135fae17f79d821e9561b7de04aec5ef2da608215ed3cd2be57d3ef388837bce570a5d5a38e207fafdc4f9fa94f6a02b1f8b59cc01a3716db94708c4c318c59b6f7889213a7fda25b11cf0e1c793c7fdf85660cfa7a5ec3f1cf11ba23a01e1c76e6122c6008e941f11cd4f60b387e43de717e92c82f2198d6533a1e68639cb85b6632438cf8373c24589228763a06c43e22a143a16bb56c5d41c99329e033a8a40e71ea2d706e0fba7659a2b7a001af2e4c70f178f46894d0f4c378e16178bf54d4b21018c3da7f739e3c07c84eaffbed0ed286665a82f7f8c09feaf499d112754bcbc3a6cc07f8ce67ab6e36b1fd8f0e835c95dab312cecde939fff9ff43f6623f36d07144113df6094b00572ded2fbae2b68b02c4e9a9b30b63ef51dfd47a9c38d5a4fe62fdbbe1d05f6f96654efa50946e289275864a35cce9b937bc047c217f26cd936181cc35764120999e141a6e58fe1148ff1a463c273ccd837a6c21ac34bc6d88031815fcc28594ca98a610bc5583c31194bcc9822a6208861fdc398ed303136cc4818a6fbc2b059610c9230d120ccf00753bbc1b070c17821981806268c9a314b6f46000565961a1ad0d10b6c8880016b80b1f05fb2f8cbd8fba5607e61957d31a32fb1e7cbc8f1a5e37b618bbd18502fd1d3cb90e6a526796149bc78869718bfcb80f6a52a7d613e5f6c8d2f11ba97397745c8b88202cfb622006f5e3501495e3b665fa8251f1505e5c63e9b7674b2edbdf636f52414d16bbce7f262b0470b877decd1f9fbd8ca353a74e12db5de0a773157d52dc1d8d1a2c75eab54038f562ba78cd6a7cac1546939d3a4e4bd4149766ed2799a84bde2c1c14bccc36d8b92840de53a48af335ee7c2bccac8f32f7e9480a8091e80f74647109d08251f335eab3db53b7446dc379475e4930de0ce5104031b8262a7278e51fd35f38b7f6238e75ef45735883edef162a68228e8b9267e87866f3a461f34a640f6a35006a81928654ea890389b0d2aa88df1e50a7388a0aaa568528c911ffb4f056978511fae929eb114483435de5b5a8757870190e9e5fc8503dd52c39ea23993eb27bb0a61775006ff7e02b1c3334b36fa865c9b696011145efab222cf1e59d1db314310f34d4e90f364cb089f5bf893970699ccf3866908f84d2115f5f116240f9b69192f4b71cef779fe4489d10270ff436309bf8bf4bc9c57f83449d6ff2e1294fed81228fd4eb22ff98372abe5f3d252c0c3a55dc3aba5a9fc9bcbb1d8534abe280fc8bdda4f90ba4eef9778890f93c8f2ef2283d29f2d87ba9f249d01c2e8dfa47345398bdf315a390729bf1f02a223a2a7682819d72008ac621f597ae1b5ce86804c11959dae9931cb2d491ed9026b8d637030c0be252332ff3ba6256bbf0cf1ada4f6837402ad1abfac92e727d3b11c7821324f868888ef64606bee4210150a2df367052e0bfd5b17edba880d5d68a58a8366f559c6764c98f5b9832719ed91922e403607f53db7d57b04c6f085aa3663c9c368802997b406d7d4418c9f15ac707f08bb208d0b3e7cc1f4da3588256c040a7c694409f2c65c49e5c62e89eb2180fa20155935f795c24b15cc2e9a6a28405f3f04588258d65abf0c0a23b97de6581115ee6fdda92ce1229c7fc896bab7efb1719e2224350722d2604aa1d20e01eaa788223e54855e4610150681f4188787af304f354e059c7035666fe440b4b2d29dd64bdd1e920991c56cc7b5e3c059950fa972665d6dca6901b87ef7af94ff6fb588c91698d77075626b741ed64253bdca3c0f37574e6c1c4ec18ee44982fe4dc26a23302a96c85136ba4ab785ece78455e3c8056a83e3da762228378da2d1296c2310325cd1431d3ae42e58fdafc9934d4fcfcd3bc22279d8a20bcc15378a3bb640ea84cd5ea0c0b23c17d2ef31beaa3751525c2b5caa0e92475f47428ebea17903b8b21dccba57e6cddb5890d9c7e38c2d5b50fc94c3deb67d4d20b8e660c683a3fde14e146c5d21faa4a4c70f2366a5d5eb0efd442420a758081198486b9d39d1763c7c72610b18def2c7baa261dca1d21337624c322a26b6d953e65e08459ed9dbab3815ef5f10d91885ce4b3c7e30cbc35f529694576bd1deff5d1552ef26f5748e0a3d9bb7b0f27b887a798f7590919984efba56e30592017ac6fc36dfe53ec93acf5ddb7a9f599e165e54c7f2208b98d5190cfb50ada244baded4ebbf14c3363f798dbd63a0db281e29f71bd0bde277dfc108ea5665c20f4e68c68f49f28d79797f4b5b89edb62e852c16b92d81da6d402eaa9db7887cd5929cea43c2f72be2c22d0a7fbd47e12e19d13020d0e857f5e5f22bd1be8037809ba87a1945d9634b37c0e5285e82f0109c6190d16cc18531ed27b36e36dc0c5efe15feb770a7bb7923574bea60281d93077a21437b3813e242bf11b9e569c48cf3a545e2699b35127fe3bb7b2ac59ba6a9e085588b6324f94e89152dfe2cea75dc124ac3080cb326d4588a6148a7f72e529f0310d2f65a7b42fc44d710c1782b28e2a0ffa446802d9909d8f54725d7fb334fa2b7e4d5188595734be4db088525e4b95886fef4dbc99575dd6e3396a775b6046d818fedc26d1b48ea8aca87f3decf9671604b76d9de1e00b2d4daac862d79f7957e7fd3f7b1bb947e4dd1cf368bb425d8818fd6ea0f754b5d9224ac75aecd898977c8f4e89a912f1c56846aa2ba6460477ad0a4c02558e41e7fb9e8560be458932b901a6af43cab6cba44dec4c102657f89981a5dede8f0f33807c4c297ac8c08a1602196489bea8082d941c6fb124c984ea85d502f7998c80c1678728fa77e45a68834c1bc8767178fd8a373824895754e0007dc7df9e89748c4d8d3d7ebbec83169348516092522ddb7a04606a5298f522891b1be75e5b08cfaf4ab6ab08ab8d5966bb812d9cdd50f951c87a41d7094073f92084eec375e23fad2659ac442f13d25e98644bc7aae8e65eab7926f30406238736d281e549b55c5ac96989aa9673c9b405dba3b069c5c6fefe40a175a62641d0779ffee5019c7a06c76c8c2c13522a7cf30406a18ddb0d88e58240fa7bb50e0c556a613260690a777d33a201c8deabe1738192466c44c369bb423bc97514d37e8eb47ef0e944821cbe689641409ae31290520ff6d8de7a98473cf365c798a012a95ab53c2ca8a66358d337a1419563e391d3467408fe69f38600696d893a3d01e994d78b3ff17e6ff6923dde5b334a4f11c7808acefb95073e4d49132b697c1eda11a2c956cfc29de2241fc6b02c44bc3af11f5f3bb88cde5d89f6bea28fb9528b0e58affb55df8c1fe5122f12d0032c44da5c004ade90a0df1757486a09fc615c28bc495bbb6ac038d429e8d49363d0d0f027d93986e3f8d9906b2eb9242d9caf186954c8ad542c5dd13814e0ab575ffe072e8daddcbc9973790edbf9b21ccc05075db0c65c18e7932ed0500a1cb67f33a465a42d9fda623ed748cb51f6f9a8d548dd7a4566ef5d014b7a6d5381c717a8645bc3714652d726bdd7525f91a4f89216cbc699863424bf93cfd9dc5bdaaa40896902687c7587b657b83416fceddb31bba542135d17bcdb572e3e7404be4ed40db86d548af93c4ee1c986d09ffc468cac868a6b4af90d9256cb847f5406512adc913933676ab2e0a006796b47d1ce9e1c3f0604bdd405cba30bcc1989994db8e5d1b809097b1a036f8f3e0feb889414e054affe73f05e41f5022bc19276793b2ca08643680d371f42aa23cf52081f9a37c3a4602dc7c06e2d56b221aeb26f05674a28f7d02f1b9fdf38c0a54809706011d3006aa3c9b4767f321fcffd9b94b7f208b3b961714c11bf77a4daf59b9430013159d9a88c2ce88da0c4b5692edd70d40d68d2d14b63ea9374689022381e567ceaa028a6318e22b4ae6af14b272104dbc750b5fd2896f4b2f5a01abfe637b3e47e1f19312ef7bda1a47787634643d75ed6d161e5d1158ab5e3e2bd0f5114956dc7481806ebb38a03d20303cd63f3806d6628e5359288fb6948b7163c46451ad2555fed803b45302f99708cfe42507bee73330be17b138993bac0143dd49584b5544b5c26c2bea82a0b2064bb04141634c311fab164f152542ee5069757422fb7aed70ee93cd94a2acf35189ab57ef003986cd1910a4b16c1b0abf3306b7513d290772d564817fcbe955c37378b87e367141d4f349be05b40245b8cfa4d9df1e402fd743225183d393b9f726e333ace67b2f6bd3ae42f8b19fec0864681c282d81274400d3c1dc9ca6f748cba118d1ffc632d0c68ec30436b2f141ef4cad4e89a5e91fcf1c53975d3be06f1670928ddead69af8d8badeb087d491ebca5367f354ad0ded9fa8582ceb5104c45fcd5f91bd0b023d702387c9568f2b771c30c09c0277dede98ffef89bbc522ff3ca2f6436d5edac77ddb9fa4c2c16a3067bab49b3091853000cbf5f783087681dfa8bc8079df92a3874f8661eac86688137eaa801e6f98f4e28f81c386c378a0af346014150c40e95d7b22293549a8fb57738ab0f056491e6b3b80c626eff42f7c11b2211adbb186f4960e0229d399af68c10fff675cb552585fedd365a288ba1a88c17120ccdd4c0fbdebb9926ba9d6cc9ff588bf2977405d46ddf13275389ae576075ce9ba75338bf62d1caba1fd27d88d64e8935bac47073aa6f09469144867e4329cedebc89d437fb9d9f653bc4bcf12144e8b6e12126ff872457d25e2edf384ee95108c870a733e7b5880004e2f7d1f901170b877cca9b12ed26ede7fa7390e953e9d6727b0889fe26a358da7a53fde1471a10a1755cd0256d77a7c5cd2c1f2cc706d1a5b255dd68448ceecf4529800c00d8035f789efcf9e4276a8d201d8943f07ed37e418019edc789c325aa70b045de39bb23d5573a105481cbdf8f7fbde461573ffbb247f169a4329cd1092e28cca007d977a0fbcb68aba40c836ca96a61f8f7066f0692638b47032e75eb29b07a262ad1839e562c6b07d1f0c980fe3af75ad3841afd94e27cb53c472fdc76d0f416095e6796f9235727050036069e18ff33daa26e693ed25f870eeff03bd6739f46013fd95bb9892c01084eb4e3e8e4674689ca16b496003d03d1cfc1459406627cc2757777b95bea56a3f78ce38a4808d96fe88bf6905a332a396c1c0aff668cb1b7b78db09cff90e190c1ee9b2a14a3279f97c71485e70259e1685ea0cdbfeb872e515817bf50d7f7ba98b41deeab7316fe15aedcf26933da413414fe5871a7a584b18088c62c2885020a3b181d8795d6c22e0550ee017573328d5183282ada5f40725664e0e4dc6ab2dedf1542e4cc223616672cc3dd25d12d0d54a9a727df790ce541e5919319bf2979cc705e3eb8245e2e7993894222f6d403f590b231fc9b55d321a101bf5aa52c7e1d2e21674f220aa0129b852f66c763f2f4376ce8872292f0026186803e4a36363996f5ecd58e623dd0c1e691e3cd787047b31312e9e141b88a838cfcb07249bfe843dcd1c2f326279a1d6f155f593bc03b28bdc4b257a3f73760bb839a24ffc3ac6682a3bbbc07c694d0880c0c0d0dd40c7d775bf98715864e5d57b0cab42dff0fae3ff971043d535d6ae0338b2157ef4420f8affd84f8f7769762fd8de920943ecb7313709419471f59b08ad00e7bb253cd23b52027e02309ab11af30d384b7e79e0108bc3b19184c4998ea754828e9548d82e0d42d314a1a31ec04f0ad8f617aa716425b0f9305946db4cd231016ba77b855007fda9c92522f8c36a6f0b86648745f0e6966e1feaa5e5fad15eed14233eeec1dfe685b2cd55354a03571e4028c4e90716d860bc81c44b904490ed073cd51d3106736d6dc3bf994a7651b34ddfb6633aa5dfac88c33b321b16c8f0118fadf8cacd1909497594a0f1935e4fa45b59cdf43558ec6ce60140a908e12f4de283be4a9627a1dd232fef108de0ac613cc1879c9aae77b6677c42088398ba33871c69989ed406b86686890c6ee12332d039d99dc2576b7882778c98d9a6252baef23f8f08f59a5eeb2a0d2f03a2685c1ea922c2fac2bfab88f498176a90b3ec80b312926bac2144d42fc8e8c728cb418dca04d5061cf3c31290c14f89fb8acb114584e9a090eff9ed7ce4e4cd57b67b27931011c2cafadd116c5c285004cfe79321e650595a0b1838baec06cbfd2557f67acd6c7796e9cab2bd857c7b4434515046722750509b5f96be08b31adac291ee418f9ef9f3824b3b0bbf8161ca31bf3bf4501262820bceb5d54711be7c140b38e74687d946c8f01b5169fcebeb930b2f49343659ded3b78f34dfb94dd4dc6744c5d9948c7aa035cd867afb07659ca75bcd5842070d8e057e504b29c576cd9045771ffba99e9785f6f9f31bb2425396d7d57fad68ba05e199aa09cdf89941f339797aabec7f96390c636668cad467511db327d47ee9d48a1742f36eaf5a817522ed3d30d6c605cd43324a414beeee7200a7900b79fefa27c4209c9fa315af551556563c27a11348cee34a0f168c94be8008d8edb788d7d5c2b7ab95192d02796babe2ccc464054cdfe4cc98fbe2291dc467b4b5da81dd1b6b41d1414e6141c871a0fe88572269cc119a31786c0f69ef1902ffab84a61ef7f86d7fb0338531ae00ec0aeb2d79dd604f57902515d3e83235ce916de4ac3be897bdecd124fc082e6878f5767e71754d28b0c3b67bc20e673e9a4422a844890d9800a0b576e443f43ae8866084f4a4585744b3356845fc2a7dd7f94abc9e592f2e7bba42adcf9f7163a376078f7c46b5c0e5be0e4868e84d9ed9d82aabf15811534696ab11e47a7f5ae55cfaba1c3498ed19aa58e21eb83db6b21ff42e112d32064ea17715ddcc038516973721d1db7d88ec161fef21bcee1bfd0edc058c3113dec7a085b4f1664876ba81dcf5c23e77e4cfb91890815552857d519bffc6019e9fa97ded87389640854516a8174d2d634fcd0e199d80e5c163b7bc90b4b445f309193436ec35147c1ae5badd4fa8c59fa9f95742051b82b90557ce3c4c720fdf9c2efca3ffca6c9a4de70d1d3631edbebde0e4208f18b97c8f8f4e0db25d93103a96700d181ae6f0fc15be9227c80130aade43d166f2feffc66f51063368e0d3629b8e5fa7108fd2d16cc1e5fa1aa98c18b1815382242b7475a3619da0a4a4300cbd3d3ee41cbd7e3807ac25d50fbe1101667147638e2ef65c8ed42f8e86ad1f4aa047f505b8197d9cb6dd8a4521c2181dc2adfd1bb98a85647fda7d0c430797ca2c0fd3a9c16cadae13d3da6c7611e237e0851e9a9bd6d318b8769d8aabc1417e6938f52e6296f1112bf22ec840606cadac6db4798703747dbc8c6abe49fc67decf09a35c268dd1f38a2c9336cbd81f7311a05d9f60d74630a49acfb970ccaafb4889508832c2ee92d34972e203ac8b2a558863003ac41241f16eaf43a0e7978865106d333e036b04bad9a76a21e1fe4b7d18b36069562413730409bd6b0e505e842a7edaec560a99ac74ddaf35cf7a5a2c05996c4e8e232275a4c97cf998267c738756f79e7cd1273f33f67916378d40d60449c8cb80da8a594986db8f464094dc7b759fbb297a423a6829e620454d5e9ca71d0361c9c9866e03a484920468dc03a6ed29ae79c15fd24629ff079cd10da805c250c6db8718610781b83956348b6e2b80b42b8cfdaa6b1e08dc7c799f1e81d34fd09691acf537d64d61d3d6cc9bacb7c1d04c976d6731b414270232f7d68e6fee16a9aca605e3b9699dd1bcfa8761203e2d382b118a49bccf2b06cbca3e5d25b2ec103585d508f80c56de060a3c5e24dd622b2423ab2076f15abe7c70d1249d712405610488b673be685239df12ec772307518da30a511531320a410130f8f41ee44add3d1c9d201dbe1d6ea762339bd48b8a5af98d9a7b24227337f473af9f067c6bf03826299cb510edd6cfe08146c0625102d233855be527038471e1f94b9a222f646faddb4cf2b9ea5a9311fab4d925be6b0d9f8f6432dbf4fbadedb2b3465c605b1531c7fdb220f2a1aa2c93fcdc4c143234422ad6c9e53458883b5f742f152a8e8a47c868db9f51de24617d253ef849941f2fcf5bd6e420f125c219a575fa76ecf6f67feda27f72594e65955605a121224b95104694f428e2a1e59a07a2410e084d5750546dbc3629f488ed0f73531b37b1543ca75bd267601d9f887eb62a536d11c7ef004ab8d93e58e51febafe4c50c952df6e2c9be1868db79aa8fe776a45a9c1969108b3664981a8688bd66d29e281d98054727eb96fdb05ddca928b809c837eace426a5122701b7b56c0802c291b9b3bf2c559842727a17b32b6676ce25b7ebcc5012e8be50b8172c045dcf0fdb5d80dc7754b541a4443a9e21122883181c8fff0352116c17d55f40a0c009a22da49fd466a23244896ef4faab089cb46e24f05349419ae8ddd6c2e680402c05b636c67a77e17ca75c81a81cb4186fe59efb08a33058c09551859913607e48a5e5cab3e82e2bdf0a637d3cde0eb764c61c62a8ed0caa56db0c92449bf5911d401b249de161540fce863a9b679246549620d584da5045678ffddd511b5b9c564273fe9fa0954928e96580e24e83b786266f62786c84192484b58287f0e6aba1a2a654ee512309acc2ff7fe94221443fafbcf9b0fa410d9a657d1ed917432f8c3e842e1b4c107656ae951811a5884cebd5e010217c4c92e3b46b9794c4e33c55e9ed59c220a33636750cf41ba8308d695ab7451aaf5d0e172238ba46619699d747b5fd28245afa016ef576076602943e6d18825f1775f203611aeec7b01d80063c9270e0d40379106a79b02c64f263b6469821bed3526e934f35bc5927a0339c6c52b601c6cf08553be8b1e29fddfba1afa1a6aa8b7872f22f73fb390a017a22e39b1df5e11f15691c28bd54f9096961a5f8dba4c769f8c28d558ae122cacd95f6543801144b2682023185f0f5ba0b9aa97feea542ec9c954caa5fa5d75a68a9c699f6acabd72c79e4ba5f8c3092bde76374170b19642b65730b4d78c00b2558d8599b96aa70dc681b748b97b7e4fd3f0310be59e921806bbe4afb20bb52f01df5f2d70f392aaf75cc97aa472a4bbad4adc5addd2dc4b7d73681b2da9c2e3ee4d4045033f3e5de7b3e3b3d01d8e68edf57b9906a63abdd2a02d0b8c2fdc2fa35a21461d0a6aae1c1c30468c3563e16cbf92f0088726525315ab88c93f7f55c46b2e9668767abbfcafa829fc1bb6661d832af993c1b2af42a8b744024b2e9c9f53dd4a979a46765c003a2a46317201e8de5cefecec3cf5b0fa28ca7f89f4fcdcec283264c0bfcce569df5c792127c15042ece841e9917cc769c1b3da54fb1878219114579c100902aaee415e9df15c13719eaca0d41227656bd7736067d942cbf1159135bf06a04dc6524630df86de7e16768519545f88e3def46f1b9b5301d617615702598424536f5158d87305f51d9da0dde2107a10da0d719278b76848fe5ec12feff6f401256b30865e6244fc2faa477d567d4c2109cc0f960dd42b4576b8b8c4255678071e868a083a59c6ad1b212e2503217d99792a0457459273304069b1c9504a2b3ff803d33b07f412affef18641f6d1cbe4a007bc9bb317d5ebb08c4eb0f6221958c4ce155404d9870384a464ed88112aa02d961c0d2a26fa7b73286f54d38a90b545cec3ce40e5596ebe4cf743ff1792c3bb4004ad287e92f9bde5b0835810e51f14554db683ac64465f253679df2ef26690dbc72276b048cf9cd01fa5b7848f5e008228bcaedb93023ab06f9faeace240393336eed36f0f29a3cd4d5cbb9d88dad1bad34053dbc64b825288c1ba9ddd8c35c9a27c0e6ccce527537b40f0e45c6899b1477f8d91d22266e01daac08154d597941a698e66f06ff017975fb7131e7ed130b794e65305cf555344f2b2bde2301bbcf9cba59a0ba036324e7040c8c35c74642da669018f5d3801148f740adb6df10fc7383580a6589cf3459dbb0059c2c804d15b35634ad8035348da5ddfd3b47ccf6d473203c75fc2d33e21d994541e553ba91c70f8071999230a34ed1399676fcaa511b1a027040200b43a368713217a494cffd65fa8081e9b4a673970d66dfa9671d509bfe6215245b2cf167cac317411e2a7cee529d3901ab16f377df5d2b84465eb1ad37082d7b3bcb616d9e1e1e1a77e57cfee3a9ddb2ba7d536362863ee717d6b23b041154ac17cdc3e5cb35d300c8d0cbfecf50c1a31f7d356bf9d140518cf1e8045b203eef4390291f9e5d848244aa07110495a3b0b1492b1e6dcc5a3a0aa87e3482457f4c2b3392ac09dd93983cfd792735cb640909b47487c2019ba8593ac93a60e0937eac75953892addb893711a73c3ad7cfebac33a5dce6ba6b2f9174aba0cbbc066d8f0567104b1968f8a0d7a57f83aaa061fc78a9d77f785d7b91c5495150f78827b054e536af04af1c42cdab2826397aa68bb32403d2c4d414825cef267fe8dc2f60d5b375569226d39eccd4bb057ede6f54dd362a7b85dde00ba384de9456acc210563bd3612c14306f529af148d5f5ac1cea611785de51656fd912ee0f5f1871157f6a4154b862597af38397d5909024be007dad351f7d0afd8b158210ac9ff8e81aabf05049201e97a2ca8a366ccb1305ac9b41b30ec2232ade9cb7ba9474644f779024663cf18c22da8235668c55461300c29f596f9c3fa81dc2f4f3c41308f871c32a023475e753ccb32892d3d47735e45e223a6def6f48c28ee286debb050b1210e5390859d794ec2bb2710ece9a8f0f0668e739f69836826e667ebd6a060a72d0c737d3d7990804323cd2274dd34267d45881cd0d66c3a9b67ada9e5de6578a6ff63d158d2808e002057ae4c8e68cb01037d6862ebf6383716f26f0da8ae18df80e195ddd6c775f293aa860e23585f45624c0b906a743981177e186b45a5686a1e964d14ad2d8902c39366f8d93b5bc20fab86c3fa91d3008ba1cf743238a0e18e0e914292abd6ecfa7c73d54a67624ba45792c53720bfa9b1f3e888c6efbddd03f2c15d043a616f42a02824dd599f02c732bfca74c9438b32d526b39ca57ee11d1fc7389fb9fc0284935e4f024a47e9654cce6ff174b02ed9c37d9b1407acb57803fb22d62fc5332a9c587790c55a6880fcc675aa2228037375d2380597f82196a719954e5e1e85453471782bdc937261453376f7e975c935cd6f484d7ed602b664e67ba492c0ddfdef8767fadbd1aeb6770dd88cc62f9671fe2ddb08b0c3c5976ec0bc7a40e6b83778cf69c35aa51a1e8c4d46264302ff0d82343d8463d3f923fafb5a9eeac56354c1bb93e52364d8f5d1e686b42bd7a2c45eb6d57055da4dee307d2054826b3465ae60eda82b1b6259210041710b5032b97fcaf6586bf87a2c10b5d83328d887944a71fb21786c75eeb89a0ff02af19e78c22fbb2975c86946aaf9a528a2e784eb3f77ee63602a7065a2b125a9558be3180eb4fa60a9e2b42e01c75e4716e5e9bfd3ec2c3f3dcc6debea7ce45cf05c1d926c86b09fd40b569316973c4220bfd8b4eee13b257b329905d29d090c9b8962a8c8f2452741c14ea9fe7460218acfa0fe467c0cd570f827729ec8e8a2db7bca0f2b7585544b37a998eab41e4ce79428547bf5aa58162597192be8ecc5d421437f9a5de2822ca08deebccd272bac7c056053bb8fda93e39e3684f83238e65187b24b8c3defa4e61ab88d3d2d52cbcd9767978843e93d228b0df221552c0233ca178926e873e009268a046539aaae8a261be70d3349a6823fe59c4c53fc562fca334eee723089a46db9f66f97da9114f02e58ab69d8e3a5b708c155021f00644446ec1eb3a9201d30a7b9fd7d93c1686dfc2262228acc3bde0c37438aaacb46c3b9e20c1949bc5a4e4de4f8351e00689c5aa4338eec2cc72d1b96a3c0f937ce0c43948b3976e91671257d91d1c3bd6f9580b797c96a9ec649e88676f2e410c3575e33677d219652bfa0cb3c02c489f2b326a384ff5365cba4d65b84e02f226f22c1250475e16db650aa063b1c6a8558e533e23e33a0959edea59ba0ed288dda17a18629d54b081202457fe3170bf2034e8c87d041643503810265ae7fa5b9a7b7032db34b01a3292f62d19c77c2385c06a85381168647585037b43f0398203effdc1b21cb42a5d87a434dbe4871528d5fde2a29fc4363a3913302e74acb24d0aa43ee1003f563dac35118d65e6b097d1cfb90d6f85a843807440a1f851c3c4cb222995cd206cf85480cb82375aeda767cf67658338c73a3c95245e6b8f1b84bfb3249342e42daf57cc70439d95824a810e06c1165e0bfe778805adee5b696eb6318b27960aabd5e92fcf651e8349b15568632dc32a6ca529fd0032603de13b1c39c62f10a28731f2c2c6785c53172eca1e4159f72ca54b33bb023f4b8dba11d860b7a3b89c48360bcf6a04ccf7b509848f0373907441a6205c4829c552828a1af6422797e22372a050220ffdde090adc68b40157e8e5099c3733794e2502ec1713885cd140ac5036947c06d6c64f799269cd49ecbb7f72941394a6702f03c16629933f1ecc2beb684ea5b6882b057d37f9653cc621915c4599115742e8c9435ecf81b58897b17dc9b09820314379fdc523d8549e042b93ead28c0ccb0baeeaa7959080fccb3091e5c5528a3308f430f8f28ec2f0bfed5243b7ed38403c313cb649971d45b35b5c29b350211c06ad890966cb9b536be3ffa5da8a84664b30c23a30c89510e7683b649dd83f45d0ee1240da603c1eb547f7418f63a724ffc345360f181e412e1e682b52518f4652bb799e11403be1961cd431132f3d53bcfbad8534c16908952bee8ad19c4373182a5b9153a804a1f7f90e5901046a5582c4cb6895f4461e789fa8e9938082c964d1cb25e50991a851f2560d34c7dc7402eea96a262673dcb1c7191895f516390a132b2ee7e0528c123fc964c17071fa003f8427b8df03a2596d649e7bdf08f04912b7879515c6b813d5fca232ac91b8c86ec5ad59120ab4b7ab1f12c667e2564835eab6b0a745a41d7239be334e7e106211e10628ab91a45e42d763cf2513798e79b1b690f8efe3200211170a2fa3d1bb7e8bde992ce0a09215d50a0e9a056030b98a30250c664a63b80e7e7c5a517f3e4c229871d85bfcd8ce618ebf5b2eb88dc5c027ca492a3bae8f00191b6a00fbd2215c8a6044808f8fb6c05253e0a6e9671053d8c88caa934bcc5765483b929044b93ec5837aa28c7842899d1690f806f480887fa7d9f3f90f0aca0ed308d540f3c054131cc7ccf9a3820492bc9d1444496023d07dab2bfb13a63242b668c3e4731ab0b74caa14421f1be0d85f3878890928781a241aeae45f3053d17bfc6cc086b377a0ba0b037e22de5c81929336c5dc50f24ea811cfff4e66fbf656e7b029fe0aa7b48bde11921a40fb68c504ba53b9ad287a5467c199aeee1174c4762de71e146bb6c8a8d7382bfbeaec8c83e0e35663b92a0d3908ea6e0757ba96e37063fb3926109519171b6602a1fa71093fc169e40026356dfa2c192b70ead1094548a68132c2a9d8c9f16de583c40a66f28e9cfbb8a9210dc6b6b3c280c7331c9d9e1c5f06992e7ea3c3cc5dc8b8b2cdb01b80825777d3c3c0c8bfa2ace4f3c3258da260c3ec8363d362740dd5ee6d30594b5914560e2822ca026b9e0b6a235e1eda5127a4942feee9817e17886a0003e1b9d0effd6a5d873f837c3f1b90704781f8f04a42d0d699be9ee420094088d5b2f6f274907a82ead01faf7c7834d16561c82f5d3e550e5809063c0d47d4d204209f29b7706e585a8c8c572113a9f1c33341004562ceb975a328435002b3b15c6a0125e7e040e0d942d5696db08460ec6b07ab8ebbf459726b9093d803792b4f2ba33d16ca66b4362a06b4e28daac44e8ed5f653091af6bcfdc398cbe463c980b7860bfff04fbcc6e2297bcd6f083edb662e449abaab4f284f826a3079e203698e11a354e91f0849a7cec3748934779ce66a6e449d499ee106500b2d6c2cfde883b7536fb404fc76725c10ef1a4dd90d98e1a0aedd1d7bd6b66a0ab305a301c42db8736c836b9b23e02abc5501c577f32e850e659b567c201e0eb6ca9c4dbf5ab8044794ffb6b636b278a09641d822d1a96d24e64b95c96adfae426119b5e9dd9500a808bf37280b830586bbcf7a43c8c83c23504cb3ee81ff770abc809d377006bbaf63ef9183515819aae55cb8785493f52a4ed961315d2093a64351d812c0cd0d51992b2c72f41ba23f39cdbbf030471f9206a0112c9ef008f6221a4121120be124c1e6ccb8c26228a6f0997e3e94a598da99e99ceddd10752818c275589d4a2d3a58539b4891cbbc229c5174893211897e0567bddfc9a3e1b935c1d00d04a70cea3a01a1acdbdaf8d89d752c587afa5c412b18d2236aa5ee05d8076a5126845eb437d987f3ce2de71daced12b00e1cc6b395edee5bf54f632836f0a5f0fac5af4b67d5087665714d5c2b0bbe4d4c587a7296ea06f08cb13f1fb92bf1e870fced2e97c72a3c232d62df54f41351b0799ea4fa089c4235d285a6399d15acb765e6f9cf23341e33b9e17b126c5ff8294f52e2c3187d47f2de1a9b4de6ca7115a0ff06bcd166052e06596ad0f78b99276748d88c3cb534d1d99d07eeabca7d01a50db584fbecfa765ef5abc73bbeea05f6a59c7b059d3097c58eaa202c7a3daed917d6ab39537896d20dcda594441c01f7e176f0ad30387e0846721f6979ba5bcc063f4234b5a110736f4dd2eb5bf09ab396eedcc0130287f7403153121108b8e2a79e2a379e55b0cc9ba7e25a1f93d8e7132c4f48cdee026a34332f674a0b59c515904c2cb8544406aa8eaee4cacfa9d3bcaece0fe33d79b0f90d1d1c0f87a332a73dff4acf3b70dc211785ac24dc2840093a56461391db208629b1064749b4b09e64eda0e02e02c00b9479232ef2fab99229875210964abd8d292c14f770cd7e62b4a5cf1f3504bb0227bc36b6f9a04d1efb48092998a8eda1df4f766576faeb09e5d63b56164f4246b7252343d4e29109750712c0aa65af925f98a1cea59c667f2adcf371c0fa8be08b09b48e1ec592b5a6e6be52891bb3de58fd10f89db644060b7065dab5d495a6a35647822f026161b75ba1c64529f5ff4ab32c5e8cc00cb941fc605edeecd8bef630cb85049a624cb2b0f579eb2df0b8c48f7f07e4c3052c11abd28eb21c136bd60058f7dda5a2ddd1b38f33088bb268051f97160216e7e54a8b3ce162c158c64d6fedee69736ffd4fbc42af68298dba45f5f5af366fe117b8b69a9c0bc3e44a2e030a55595f039f07474010f6ac9f86c03fbfb586c2905b8ab2498c90a5aa095473a1fa478eba1cf8aa37c51bed7d6d10dec3f40cad4beece6c5e3927be3d07be70cbb3c35f049b021310e7625a422237c3540300c1b5fb3f9cd0e45f8bda4aed4b5dd22bf36c320f8336d147378c0c222ce63201341fd7c3070d2711b442736503cc96e5c18ead3eecfbb2015a99523c3ac00456335694f1627d1e3da70958f42262108858027489db481bea6ab8dbe5a373902eae3f9e1156c10e23dad2b620d4347700882e3ba419a77105b6e3d4b5acbd79daecee6caa7f10b1894b9168d55b032a800a2335d8562da456bebb544bd686924243ff8f0ebfb5cffda5fc2cfc34702ce8a9391e2f48a5b262e415fe6ad8253d03809185043a9d0bdfac3eca5c57b8b992c32306b82a378ccbae5dfbb7ee11b4f8c1fad38329f4fda6910527fa9b28bfe2c9b24bde99d3a80f4573217671d656bf872dbc4cf47393d0ba1c6f7ad122518dc58ec0ee85bc2af41446e1064fc305d78cf8d934688177e017e2aee7929368281db89339921e8da9b97e61b028f33b2a1ecc52543bdc972546e2cff5bdc421be197f3e949ad467b9f30ecd802439de018ac03e87f0740536a3b83c37a81196adcc6eb984c20f0464ef336c0e9c04a490a364d5cded0036285c039d846aca369ce07fb184b8c950e5866ee0edbb3673ba06fbac5f27e410977d59edd465a21227b0d70e2765f9de0e3b2d6f9926c4a328b0256f06058eee1048a20068bcd618c59754301f23155c15bb5a0a1ed7b2f26a77b14f6d978b3b2d4921ed7256dd1ad81eb98326b81ae9c07e2171e81ce66c443201466a1a366c8f3e8f75cc43fe2a1b234652d1e029d70d7ed60a6b947941135cc747111a3be1fb203d0dbeecc892de2fb5238c12a46d7b185bbb5171fad7d3c0260550c7f2618f4b284d036a85b04eafd59a853985e325142b068d85f98e3cf03c4ee9901e4b3fe50e8c318cb59f196c59410a252047a38bf6a95f4e4592e802caee7cd3237505beb7000bcdd3e8bc66a8e6814e6905f6aafedd6010515708ed7afec1a4940f42060c2873abac45a14db6930bd6f57dd258541120137c2d7e227aa2a0376da5179c8fd408c6bb7a7a943541fc0ab1fd07b0b788dbfc39f78654a74293adb9773ac92d4617bd5992c6595ba370b3e59f9f67a0db2dd03c6373392936d2a843fa4dc6bc6f087a6f3dc7dd8f163a5f018b283abbd0bcbe07162f25dbee73287b95c191337e5b0562bfc3576b3fba3401e8248f21d0c0f7e01ea89208b68ff6a1eda53d90b6b9fd1ca5476c7c081354787d61c8dcf757fc5ed9960a7dcc9734e8b45bc0c3aa847e2f75580f9bcfe499ded63d3cfb902fe0f3d1d6dffb157f3f14fb07d72d685c8b9d4a324645c1b1b8fd5a6720424ddea3b88e033dfaec169ccd6cef560dce790e37fa371420dcf7dd5192c8e3e1a8569a1cfdc19e8c021b237ece3362d66b043096a9384f7c98625acffa37991c39ce714ffeffb588dd3cda4b18320e46315a0d2863e1b1a667bb32a734c5dcd7220000bc757474b4e9fb948d674ce0670814fe263fae78ac324f47a06e621c661e49349fb0d617c065d4d20458596586d0b8e67f18bbc9beed910e445ee9e7cc951b0320821af09a530d4ef9316f83629e056e66471c56ee7294a7cc4e474542c65d3053aa172f4351d166c14a1bdca682a3bcf9f92db6ab2478c790d9a340dd777990458f964813612e616167d21b1d2d041a93ac6497553265a2a07e0d31e3d607b695218b14173c815759e27a3aab3060008f9616e0abd35b29f3ee212f01cf4e14a536b28f50e076c74aafbb715d4f5229616562ee11dd2bc1b987cf505ec6d187f438c6e48b2d88c8bc2247bc7aac23398a2a0f0f85d578f69f84a045e93074324d1d252db960c241822ab99c020ccc4f72394f18f8741e97f3d36060c7ebc5b3a1c372b7453798aeb71822d4616db7f7c5e6bae449b788085546839bf7741bc55eeab518bdc80245de0dad917103db541d9a1a59a520f898b829d3c9ec8eb09ef499c3ca7ceb09879b912215230abf9284edff76311e8c215d6e3b83caa8bc08f99757c93bfb53bbf308c591425e63c108a19985653a8ab716b0e32dcade708e798adb783c1942d69e46b14154c87d99f34b3e5005cc537d1a118087133ce0b77e4deccf022cbbff5745ddc59bab0ad05df573ad9f8a2b64bee01ab69398b580868a6dc1a0e4604232a355206dd2142a2b5997d2996a1c8aaa9d71281bb1ac0708aff9a93e266b0b4d706366b1cd583922228f96d16cd867b4ed0ce38604597da799070eeacd1e88f2152c31cffb40b085327e63d2e657acb3fe4cc079f117d0f0b0fbb84b598ffef75a4816035c16fb86c0a5759524526c68591126371bda095f2e1d856385ef160489e80e9bda641d83c9d6fd82a6809df788d2c7f87b3a7b39efd9fe7fc334f4b56bef8d1de84b863040f852af6fd26e5acd70206a49c7200bb4a28627db2c3839c6b172f62217a60f1225f1372db6ba22740d95b93ea851ddc1b949f681872ca517fc17d3a52d1a2879e524200bed213b380107bdb96cf2675f79df01999d501abc424fbbd7b5d0caaa828dd9b1822e0ab433cb7a5012d21f5c3fe90861837b339836567e6c4cebd95d0c8829feec982a4c71ceb791368c8092623b2bc5c62a59b43ac636b26b4d79fd4eb1461eeef756421fd5981a1108c54b9b0a0531a5c8d52f454ee5297285c02b6e9bbb19548867b6665f3214b5f07e620847253181e1c558d9feb33a5775e9c4b6ee455a8fb6be3aac9a6d45e642501e57c93ae63d7a370a7ae290d08a5e7c2b30cdaa53ef62010c867a8c84fc1ef2886b552c64769f62e31fdd4ffd39c11604a6f8713cdf610f3f9c40baedfd5506be44bc31c97939407233932aeba998cf04954737bbfe1da5dcfc979c8992bf2e90c91b6b7cd0128506704feeec8d23e637da64c1ac2caa40aba2e7e0801f00967717d29100969ce939801313481b5e9808335dd0cbe1d0d4080ad3825e1696e38d874be54d7ae74264dd63263c009cfe0af9d88de98b1cdac3b97c552f33d7baf01a5747488dcd57a3ad284025dc55fa35f08a015bce03d2fd8e8a765731c8cdf7c9a0afd3fc2a0655ed20f2ad7bb581d88d5056f83dab0fdbc2f5c165c3eb8d4187806ced032d5fbebf82403385aaaf97f615543cc21555020be0eea397f1c0a55fddb0651c88673ff452c16c7a67395d37360746f843a273391e159cb28b2e3439fc012e9fc0d74ff9ca2932da837aa5f858e489e501b2e1bd158fd0a3fbeece34a01bad319111f4d78d285ec95e350d6387db8dccc9964bca363da3f15e3eb1c1058e059f28336f38ae9bb80cf0a6d6d0c41965d6636608da71599a88455ca424a2d94c32ab9fe83aeac02222da54e6546b71227708868a3f37f14ebfd433899f47a46bdd4c4448e1dc98ae8b27dacdc58222f508e36681140437cfdd8db0f146942b4b081a2b93e0456d6bc1ada3a0b90d896caa938b377fd48d0f809619054937dc10036122817445a0205caf740d827220b250acd838e123f175b96d432b8b9e7dca5b5bf2a8a78bc7608c11e6d9291ff86ed78e91d7d4dbc76b194133d2a6ea6d58b9d60af7bd92725dcce74e8157f8c524e0c72ce8ed7ce39c9b7f92d91661d3034c0ef92b1c13b9c39f04b547894347b8b6193a0b070b38e96f10346d00ab77b92df584cae483501a2f85783752fcbd8e8702adf14198ef0ba26e3aa25db5ba2c8871faa03f9af776e2b3b2d1477c29f2eedd7c5a0cd41a8744a68803faef06f093a441627dfb105fe7bfc38f3661d06907adab96a9b05b4d677cbf0cafefcabf086701392016223c21523ce64aaf97bf26129e5e2bf52c60ecb7b5d44740720b0cc081885f2070c1cc5ed591b239ff5c0d1807d0fb0669d7a2e4a25ed4d20606e943c863cd19383cbece36ce64c32e70295ee628d72a9a15dae309919d30a7f414e1674118e135ac438e1754869180da2b1038df5bfa8b5efb14c0f8e2fe2c3a08098c117fedf414dbda5889c3b5ed08724b5296d809891183dec6f9c70d459f9ea615cae8f8eafae4594be6802cc67a480f71f8c74b20f2f1130bfd9c89234f0f32c1b38b68f0ed4c7044261fe17e2466397b1140073735f2844e04f4050ba86d19ca732f65ca69d9f8fd1f8f3ae618ce3fcd52e4448baa0c6c9f928aad86c37df7fcb65e137bde0b951017d0c5cb55a39fb637282b292ee059ae252d5cbe5c48735fb248fc67a0fb5bb29f9293f13eca2a16630a30e4e1024449d4a19d185850b0b9c328a16482dc2622a9968423563391e5d672159c1dfd9c291f6713fb43749700f600d12286a9959274998cd34a968e91f30610bca4cca8ee47a432967b23da2de60a056bf10b40c5f9d56e8d514a47d6285a0109d798deb93bc166216c943ad972d81350dbfdf0e3178fedd87480214d463354187d5b94d76b45e31472dc999a8435db382e3b507d5972e8c36f9f9168f5fbdaaa79f1b735a41d5ab50f92303527a6a37ff20509e221dbc5523c50251cf07341535e06d69d06de999d458cd59f25da482a88214f16b47c709b45fd1cf5f0b52b70b0a43737a91df8597893e43db94107a6434ca2d971e073c4572f68ea589694e924fd3c49e39ba008b0782914a6b5e6eaaa2db10026620f1803e568094dbb9f4bf27f9e9d6ef91cf0539545aa4b79ee361a9938cb8696ef0eb6716106632fc6791451a1de2e9eb678a41e64a80bc6d3a6fbe183730dceda77341ed8c366a779c7b7bc1388b3cb54d9037306c8037afcbb7d561226dbb42682d8fca5e093ff880af11c8cd0c78d7274ad40973ca8d123a86f43757e3c0c5cf4abbc1aeecfc48fe95b80e7fef2f8a4d989f594b0e5b0e65bdd86d5a0a13af975841bbe6b6731346b40469649620765dcdcb8448d918ff0740218bce21bddbf3e994160f61924312d24e99670126708be7afc60d310758e000db7e5dbef3515c923fc901860eca0180ef057ff56e70073d3260d506e70832a7b7bc919c4a326e741b837e23bf7a3d63059f917915c2f2703c7924bf4c187075501e01144b06c247260f0b65ba3f81e3b761a89a82669de0e25d2fd379df766d2a2ab391b21efe97105979e335ddf5f83488a9d32c690327422176df33b8d7dec5782cc2ccb5ecb3e8463f24d22a9332291d1810e7db84a8bae0500ac5b26c99cbdee627386a64cb13fff76d9a30d6e8207dc25634b2ff80e911df147ab583060189737330c4adb9cdc1c93725212b56f56f85413d6df0ee19be56e2809cc026ca90e9cf3585a8345600ca0c632112bb99880291c5ce19856671bbc575e38271e6426fcca164e04da53a1030aa73ce51e8aec261407dda46f3b7d01588d4647df8c3a90365f68a85001014e8f2245fb50def93626ea3a9e4142377596297c21b1adcf442c8c620da5842449c69d2e861d5106a820e3e9c493e16e00da83ece6761bae2118fa1bb3843316319b78128277dafbfae30099df4618ccb2dc953c3961ded8ee38c32d896330b43595096c0a9cd4ec1feb5cd2c3f1436b635bb5f403545f35653e8a3f8c0bb033b0c3af428ea7787f703057a29a6ebdf9df96b99d1b6d16eb8f049aacb8824658a8ae04d6a3173f3ca44fc0114c362330170c0556ace5fe6e6cd1640a462d68516497f8b1b79aa9525e84abe259d3d56634dcc466a13fd12e1c89434d6a7ddd3b28abf2d2aae6901df77ae238b287c5a918f9c6571a1d227e2c6e2396399f84391df58e145efed65dd490d8eda6c6b0f4dbebadac7168aa6181d7e07ae67700491a25bb4a248db34ee649dbb23b103c46d4f554bb0458ace08dfbaa483196472a29f925881e79e19b4e5891dcb34712896dcc15aa0950e808a319c68d4db0ed88e38dd089e26f800b2f15bbb59258b313305ca151650683198dd2b2d93e95a39e7b58e7cd94cdaa6a1c24c9c42bd948010ab5c6d168104a9f7d52d3ae361280823acbe55bd1b336b3c23c06124d7824c45e97afeb2c2d51712d87d31671147a54211424f1e9722f409436e48009f4d83d07402a47d6e7650c4a671aa95ee85952a080d6fd751300a9c601e11d62e8a02869b627dadb0971fa9e149c23bccc3f643a9781b048d77daa08716528f478aee495a94502b9578a9303ccae6f3d8044acf1f5f7ffa5d241ebc5cabc8284fe3680f3eb62aad7e157ffd07e17da964ed3e1eaaa118425947d9a5a03d7abb2f4cc58d0eaf6a8289a9b65483e04e1231f3482f33d77d35b7d378a948aa11e09c191c742b9739ef12ce52222554596841bb86e4c4b50e84ecfa0fb7393f33b921142353845b3d9f394d3136da2dcbbc7790ca64129df6e24ddaf196192b97a27b899ba7ffa03166a3aa801c20dff17ee0e7dde5db06792c337e35cfc644d545d1282069bcb138244d44c9d11f5e6fd0779483d4c50969113d967bcc31701647cc87e9d86d5a9a49cd01a8e80842b735ca74d095f2f12817b8f17ddec745586e64972cc451df44dbaed6be4c5b704a733d6734e2e862e72a8e64628c4204309d3febd79487f245a5cb2166eca5698404057626d665e9feca027d828108cf3ebceb4194c2b60e94ed0c7014380bdb30f522a68a6b94d9a9c5d8c8bf4fb9247a9388260c0b8cf3eaa08aa695f46cd9c8d196ccdcb4d205b18a21b8cee0e0a12c1add8ba24e98e9da0907bc7f02eedae8f6360c4298439facbe5aeeb01aaa1abc0211508a7197813138bf88611af1bcdecb8ff0151c051aba3b600160ca5e322661dbdf5556d7c7d1dd3b7baf623aa455d3e9649f2dd4cfc46e5880403f47255b54e5d5b3e361220e4f7dc35cf4f300e968d25592a38d22ee8c4ecbd859a667c798fef0a32dd7d6e7ad4b7651c860aa1bb85b29f9d1fed3d08438428631857b14a6d013ab2b57b02bddd68cc815fd592a7eb8c26d320a318f87d00417edda5b16750552f8538a91893e7d2de9fd3c9a60c21ebf080dc282a16988605331fbf1b4aecace04435ba3b50b0d6eb07af3f827187962493fd9280426a606c3ee90f3c9cc4b9eb4da3c98b77909dae914b3f70b8235acb113254e2fbe8b756d32777a546ce50ef088544c0fa71a978ee5230889844cff6aab8e7dd58d14394e62489f0a3ecd7b4869f3ccf875c9b972b1b2d862eb165835f15677af2bb32d38597e04829b2b3268587b6a289145b25d5eb7c0f0f09acf8d680194778b2bdfaf205ed781eaff6a246639a318a2e0425d259fdf532ed1f684fbbe03a61b46cd41e824c823374c594530719bed429122aec7bb8810c7f00527f758ef37535cfc4c5593d896c7ff9ebc064043302428359828c1ae8c44d6fccfd9b444bd83b3b626417453d572fe72efdd11346f4c7444e81ed90432be1fa35fd8bf38ff2a07be7fcee39536ff4381e7a8643fc66a455a7111ab53503df3af55901930dcc44e2237f63c4f116c3c21d0a89595e466ad1f617204a6f93b053ca472822157b6d94b8a753cf480327e627384a40fc3e55b5caa62471862e2a66601141b94507347cba2e8df4d28cf8bfd21b98dadbeee7e0b2c1e5b133dd3c35d0d4f104d551d85a328f63ee0670123fd14c58a36baebdb7a96d52f329819a3d118daa90251406ec2b27e9950cbab00768779da225e2a93ea48d267dcf669b3250e59dce6384c0cc03df0dd3cd170f354460c73c9e98f81c95c741f905cfc3dabea7f45bb94c5feddc05519ca479c02c91ed9448c36fb2e17a4da8ef718bcc37b542156913b62b954742264d7f33e033783ee22776dd3d97e704295f4ef69f4463816aebdcd0fd03b6e1b688cb196a40242b819f2e4e68c590a708f44ddb642e357c125e5fbdd9787338be4b18b6b6f41d34f381e408dbcb23c983841c5348b04acea3b27a5f507cf0a5858a8ea6e84bcba6a1e20bc98cd587bad8ae1bea2618ab7f5676ad4d65606fd28764088cd90996dac11887888949f3a13faf1687a3a50ca6e2d63753872b37b247c81948602ce9a240fdfaabe2281790726111838128601c912dba85bb8df2d92d59ae781bf5eb3b4379c96cb8cd92dd3b6a2d63cab40d26d83404e77743d9a49d2963484dc2c3dba30a293aa83badc00313fa7d48130a0aeab3f6845be70e611cbbe3d978b3131180a1eba6bd3375caa9d4ad92f32e40055a3413a0b5fc07fa92d312a21ec65727bac959cb30943b8e6ca2c88937e56cba80c1e276cbc72e97c07ab0a6b98b3bbb927dbbf3ccf02317b4daa6e4b26def5636e0212155fc24a3ac7b19fd8beb3784c28b82fe44cc3bdbfde1457929a84bb48a0ad84e1bf08786a5d437ce07c6552a74078320e4fc21b1002a2ff3cae5965c8e3e5d5c5b066bb022ef6095d09ae8cdfd7c41293abce57cddec8e396b4a5adac27dce14c2ba67631f483d2cdfea57e273a38c69423bf7c5464a84501c6535b77b45777abc7316ae7447084a15346531f046326d43cb5c4b5c7bfffa2d2b2f366855d28d1b5595796e00382c1c375e643da6b91e537908c4999653ff07bd9a1752afe6e7b48a6ab127a140d50b69776fd141bd97b4ba2764925dc5b5db8354a0ed85b5d997324b662c3257d9e450730d69c9e938e71bd210eb98907e455c11855ebf891cd5125aec5974505da176fb6b31682babc51e8500552fa4d57d4406b55ed2e21e4223a872218385910b9ef2ce309882dd0a0fd3e86a725ca0beb0b734e645f0b8a3af288b502875083d87ada4b63db5f8a06c91916ee64beb915c29449107b48b03fa866a815d3012424e07b69f9b231429ed152169e80ce922de67888e66a1b365451f3bf1a5cb743e10d48e6b7c428989678ee43c3a9ee318ee8ef3ba77fa6be4db361ea03e420c06ec4345cd9723127b23027d79a1ff5b48db7bef2df79632a52403e9079a072308a20e2775bd1de9fa3b93032c7f0f60d7e49c73cee65af2efef562be7ef6c662607f0f04ca7a8cb73a5c989b5d1dd15788b0fa86ba08ebf33d960b9c3cf39885860a17a0ebff6018172871f943b7503b2215bf4b4ae7e40528ae349fc80e628e4ce0fc85a076c1f9076e773df0380f86ef33baf652dcd0fa8861d27996b9f34d32a57a21f50165295091cdf19f2154239730236a6135254b22293ae641d2cbf7477b7010bd817544721ad482acc1a09e6944e645d84dc9f24eb653f903d331ad6be3dc39c73ce39e79c73cee91d02d9f334e7d7994a1f97783e6fc5d6d44311aef3be522be804e6dcd9b29bb3f34e2661b9864f0f4f9014c3435a4882249667920b2c3fbf3ea6449cba9cdeebdc647aafd61c29786f654adf67b70f47f7a7af1f8e0c5cef4fe068afb5cd1f0ade77bf99de337d9b6c09d47962a7e9b3cf04ef4de1f8bdf7bdbca5cfbe9f12fd4adf174eaf9330a2c89894d8ce6a603433add2cda9d37770050fb8e69e69734e2a517ca355cb2ccd9864ee1985d2f1f7c3653c73a4e0ad2a73be975edb06ddee996a75bbb183023c9ae59d400f4720de795dd8c3fbeef94da5cffbcfbccff3c2d94920a0508b413e785060870a29b458abb5a9d497a2ace8944ee2542d8b11ad73f0603bafb526665262b93a8ec99d43f7a4a6e7bc3fcda0be92cd38938ccc894ddccd0daccc31716f4ddccc7c66c3a29338e36aab59f54c5ec9fb93f7de2a75de0c3ab5921250fcde565b7fdbbef4e1c8c0d57e035dcbb2edbd0f477dedbbcf842cfb7eb60d9555eb19a5b3b34979e09fe6c681ef3936b45f69493aceb4a9518dff9329cf7e2f398ea3a189262a3383fa4a5c8632f1e94d3f73b26fb2e16cd1144a1bcd053ba54d8b8d42cdea9452ca791ea594f328d77162f6ee19a5f3fd2bdd6876330f645a96d9e67cd0491c6eeaf3676a99c6d73b4fecbcaf64aa3183475362d294fcf676db9e7bfe18b03df7de8723039d859667c62a66ffb5cc6736b5cf8419ea7868b5efe7ca733e1c19a8b707b8f29cee97b9c1d6da0d9dec920b47ae7c255786427d59dd0c432ecac6cb955aae84195174e9cbafd4e4a0bb8feb41d73d704ba697a5bfe3b393150d14ebc2082f59023362e8e65c0983a2e57632cfe1d8f30e5ee62f40b5eee12703cb9c6559b66d19b3cb300d0aac9e433ff58455f94bcfa9616c68c8a5f2300733fdd30862208416242d1842125808f12104240893240b0f4ee4c07a58435fb09f0c6cf6f5f94e5025f3abcf5ed41979c9c569d6f7790ddf67c384f672bbe75ec8f5bc0e1cfdbf99d73ca1be33a1cfc0237cdca4459a2d79f1fb61c229fca9a6af3e50bc2488213a87bed8498b94051ae8e00337c0e083176a20c2459fc75b3a2c10218423589264d1c145ffe98bf41f073b3e3f716909ccd122fd9b3176945a74a4a0c20e0af0f011c445da52ef3befeb3e158eeeb907eabeeef9390fecefc07efe7e524ad8f12fc511755633e8f7342b63d550a555e723fb4427714693fc2a69adf42d8adb32ea3507142957b6fe8ddee853f0d9bd02907039f5fadb96ba5bad3952f0b95103c6fa33178e96be60c7eaefe375cc42a1295fb0357c4c44240dd67530085b718221b6b83ce0112941111793f9dd8bd2e771e002d81313e010e60532b8fc79bca501164871b40217908c0cc1e5ffe204abe9a826e9fc25cea429c2f6f0a7f4c6cd3aeda58f343c97d2d0ab6f537dc4a806a3224b5869c58831776c2324b8c18811d29550ae841921b95082b834ae84198971ff5050e1e0dbc37bed3b14c82028a28191aba329c2fb48bf5a8613b68d04758e775b80e78e376e0ffadff38f37eec7435384addf691f10bfe9b5cf465fd33709b8c80d928629e42272c7df9b05b943c5969ebd6c3fdecce9d6f4b1f933a16f3b978b6258ee4d4523cd1d3916f3c173bda0169d4381924a94140cb9e4e7854084825af4afa145f71b169cb09366792c092a6cbed1c28e1c8bf5981ccacb33a77f3f9ff1651e142ae42223f31af1d674e5f0d6ca7d15f355cc573359a4c83b04ac882277e498841541c45cae7bcbad8e0f45455c1464abb532c73fb5f2162b2173fc6d70a5e8a6b7f29674f1185d8f9d88fc59893f17b11106fc18c15f28759906b9e3f451d04296418a8ec36f36bf67f8237ba17a5906b9e3af8118e87696b3c4452a13eef4580d48fe1cf3e72dfe4950b273e68f9f19b29616fd81e4e598cf60534bfcbcf555aa2a3fd37e447da55fc9dba9e6872bef563a589c122816ddf0c0ea1da9dc566fb8d13ddc409d8edc58f1c4bcce8cc450c2faff45d250605bae3415ac781c47bb4dc9ca2844994224862854525064001e78e06105328821082d0cb1bfeae7e97ff1e7ef8ae7c52e9dc4194fafdb2fb98439e4ca1ee2129a85db6fab481aacdbdf1fe016c7644e7f75c1ce70fb25e370fbe53c314004472dcaab7159966559a6bdd3152c27794b95bd1097186fa9b23007917dd30b717d6f027ba88ba8cc7f10263aec9b3e08131ddfdb0fc244c7e975945e260c22a6421b060952c397ae528948abba9ff951fc425517e62032fde985b8545ca892c0f7a5d761b9b7cf853abe2f7d290cf2bd109774c9842a0f994f33f4077691e7f49fc01eb2593856d333d151faefbfefedebf8de864198641f44fa17eaf8de1406b911f2f09cfed2961eaaf2856258072e9882071c40103434e46282014e0c03bca7efd3377b1fdeed30c05de87d068e54051fef407969109dab7de75e96d16e7b0e5cc1eff6fefd6c218b09937483e5242d05d63feb2cf3fae15881fda236d2434da4b6c8a79726a46bdb830c0c98b24b4ae94c7d1dddddbddd9b257f3a07449cd00ce941e6dcf0df18491ad446724cc8162d2abacdc566e0842e912d5aa5764526010cdda266d5d0adfa5546a6563be35514aa9e685cb830793141613a32c9408383b89c91a4412f27e532bb462e7699ef28b95c99ef875fa4bcd49c5c8cdbd262d32db7a91097060a71a9a4d8918b6991355c3ad6c8706b8c5cae39525374f93f2897f96b8a2e87ec1a69882ef34b0568cfcf197109cd82cb4f3324699c2effcc8dd185e169a04a87f6f56b1824ac5d8d57bbaa71da44cda8b86d46a66e55ab32b59e6254ed6465781a28c4d5699a1057977155e44e73589c348bb322c5fefeed0a360db9cdc5a469c805b05699e126269cb5ca26a689659049c0c5382d9d136bb1b5a840831d69156e8b16edab340b4b2b407b1566ed9c598556c9b1c1e79c37de3737373794e58d571a8568a074996204d882092ddce27c0667ad811d7bf8468f8fbc3dd9f96d78fe142c4aa4700c4c0411037f966bc8316c61e5a5ab16d96b918dacf69dbf8bb725426ef7dd0a9acd142b58ee00ae9c52e5c8656e56c7216f5cc8465a7c795a587933141117cd296261984072258c891a7a0457c29420ba9dfc7ebe21b6635eae84c5b4dc51c2ae84c58a5cff7ebc1fd8feee8512cb9a273d6b2ad99f3275ed9b2c28af94a753e84daf04da1651208eb80267f07c4496ef6c517687d916d379ce39bf2143f08460395ed2debf640adb404dd9884e7e367c35d82971b6d7843a87be1c75926af4acd12ce9618dcfc3202976e42233d49bdd220ae5cb993fbdbf9c99797f99f791ba4c81b428f3b34599f769d9419e439fb7d2f7b3b9ce13ffee0b3f28aff6fd80a1ea3bf7de04f295010a010183042d61f96f64bcc9f4f67da4ee7ffd7e3ea4405ab43fbf1bf2cae0d76efe39f51cf8e23fd0c5c70069de0644bd07b2112246b292e7cd699ab3642a95e6ec4a3fdf76ddcfae549a31be9f1f3537a06cd164bae138e698df2d7fdf474df8f911e3c3cf068cef9e7e4035353fbf9ff9e1f7a37aee0b0a6a96fd908bc4f8f901d9c4f889c10ff205659ec199bf014f32dec72bc8db3358df645160ca06c46991be0a145b5ccde069913e0cd0a745fa29f0c6093974a8d0628d16e9f6336092f065c02444de15fe8e66f1e9c3ef7c06f3bb77cccceeeecef4fb715efdfc70ef048620516d12ace92d2ad57ddfd7751d774797ada9f47ddff6fd96793ff8fdbb93473f20fa01f9f37f3aa7ef47fcb8081769aeb91a2dd22f72e903cd0f88dfffb361d925ff2c5ce4c71ba5941dcd9261b6ba849def45313ab5a5fb4060e7cb4c2ed353c2fa4f7f16b44dd334ad47ef1bb2fd55f3c0c663f76cd3e2966a71dbb6fa9ae78db15c2871b60f60c9629ad3bdbbdbe70ce7f439e74c9de06161fddb8964198252eade73cee994524a29a594524a29a5f429a59452aa849d4fff656cf6d0c98f063b350d9479224b9e3baffb7e4aacf384d93fcb11f9c49d258ffdbbaee3ef479bf9debe9f9950a575ee95be6f9c90837bfaa394f2d5fefab7f791ba5aa8ea16b7a7aafe1ea18e0f5665827fc67de959d38c6c44bae9f96742bd33fdfe1dd76305edd65f41bb33618f7e79bf9ff6776de3dedf03fd39b0e3026e6d82c79ffa804eef319bde41fb1bf895c0fa3e2e730245af4584fa16de850a99d8d77962ed9b9ed95ab63d6b74ceac2113c56e3f4a29a36cd1a7e9e77c5b7a138892d79de315b4eba3072e37faf0462672bde6ff063b2e3cc2f7d375e111fc9bebe8f7f3a37bfe80648bdd44815b6fdfe9f014b1a39472e7a8e3cd2137c962fdc769bb34260037d8feaf850874f2254e9622235c2f79566c8fa5eb2090bcb345ff1ed279af5236ed5ee511d58e196f2e6576db22cac33299bbf9fd4c769efc56d2f99e67df75d62cd469d19d6ae198baccf2639d193ad57a60642c892f57c292e072e7afae8425b164be6cf750a7c5a9a5743ef6968e8e8e8ef4d68ecc994f424dc09d30d7913bf33d2bd65f47e28c1f9b2aa8f51b1c3d4cb5589f7b59bf5485d55eded1f3be6c1bd8f2ca142aa6eb5f95e8e437839d2daae8f4a7947ad883feec9f199dd3e77c545361676a66944a9ce95ae48043161d8ce6773f973ded6749837b89638695fb063b1c717e80427c356d1ca591f7f01997ca2f977e8602783329654dddbc184dd7df252b7bfb635fb7efaf9936babddbcf865f0f3db943ff3be2ef5d3ae3d2a73e3c2a2069cccf5e2513e210afcccb843a2d7e7f3a81b5c5ef63cb379737afd7dfa79da5d10f3681b645af5dcfee1edd93c240e97b97ceeeaec1da03cbfda49aa67992865f497b48d534e92d9fcea14fa591c725f0f5a951358d96f8cb52df932872fdb7248edcbff4aba4d1efe1b87d6d1c154707ba66f1070bf1eda75fbfa6d6da73331e1e14c04bc39494b4d2aabdfb7883dc40d376b5d68a82c7633fcd6860c8b22ccb7a7aa6f6b53bab0dda1e586f0b6d8b59ad55d2f02b690fe1eaadd40d18cb7f4385add9f659966ddfe1382f065876978c3829c6cc39271243dc713a12415cffea83040c092eb79b349bb7d2af557a9d664deebbe2105be442af628057f2ae7a6ee8d8e1030851d111254118616956771331e9fec3c17d876378e96fa82ed4b12bf0fda13d10df0fecfb8da30357a7595d3380fb8ea33cbb721f8eefa79401e268938231c58e38ad138ae18801fae5f6c390c0d2cd9e75823a54cefaf3fbd9c21558a70072c7a7b737d3d2fc0c1c3b70e7fb9de11416272f2544424084804c3ae79197193ce2d599fc0af2fda4de4538f275f15dc7a81832989963d0c87881e50588ea417da31e8542a15c3c8c7701ca0b030cd2620369b15526d030a8c57e1358e6ae4beaeb799e5724bfeff38660a316db850b1a90876029ac3a1abb494b5621e2264745dcfed6d25b8ebc7cb9fdc5cbbda8c94eae131a17526615f74bdf8f0b0e471fa2fc7e5e30d8a56850fc025c812fcbf940f34e1a90c38869714c5f16f7408afd9dec4c9efc80da28fcfe131149431add6e2273fab36e926d606f39aaa5cf8676bb8a9321a4546916169bef1a1b70be0a9c5f03f65013b5d8635a1cff639bfa81458163ecc849747292dc692d763c59d146cdcabe2fe93b4e6a563f619e45b467e4c80b555d7cf77d3f2ea80b564263323d6ade3cb1a7b78dd45f9ac54962c60c356b8261b7d107da1795f3264a5adcfc65a4ebba6e726fa6dc3cb1a8f7dea859f38af0df8ff57e3fdaefbfd5b8ba1fcffd4408d989e77411244bc2100c2b4d383ecdc3089352e1c8937ad477dbf7839a3305f292165be65f8432efa24e36c2453743d8d2735c9ac5459ca663ada5595b50a08b477d57bf1f1465222d823c44f3737210be34a88e358b871a4bb3749ea0bed3be1f140a0c42f9673ea859fc5266e833e08f29038e35e9c7bc2327ad6e92dfb19bfc609bf70765f51c1920d8eaea30465a8000054fac18a2e2eaef2dde6ac0932b5692a84109189070f5b751573925c5e8057ce924ce15db491ad94bc93f9b25ff747a79ea195f58d9737af9299b4dd6972f4fa0eaeb18acbc4d6b7778b7633b9ab33e83f62758b2f4d6b7358c0bd5eb41c1198f52d8975e0e2900feec685146147694319f368a555b3df0c747bddfd12d5b246f7391263128b7be9e68e28e528c933b3251d1e7d11c5f6ea70066df4fedeee5739d0e779904c54c214717a22077be053bcaa358b30bb86f21ef47c1a7c61c85fcd2e7e6bcd49db567907b1ae46e135cc14321bfdb73604da1c5e66e1c7e08d9db0f013942e7d0217772747693831de55150b3765080870f1f498363a61de0c0e95b60d7e9c4d3ac943c0aea07d2bfa39f479fae1479337f0265a49439a15e4a29651e8542bd4f5314caca7cc73198c2288f24921461bc604d408afdab66795fc9644f323ff3f275340bc5e355d2e0583b5a94efcf53d413902ca6418afd2c8647e3d13e0b5f8423bfea1df91526a9c52f202381ec05e423e6c25b5ad4c2315622777ad88169902c4622c5fe915f3777944823bffcd5fc32c2468ed8b4682b4a09bf18890bde9ae868aab87b29cf4a29a594b2134320d9b2606bcd1d12c1ed1f6b6e7ff88345b05d1af690117664312880dc5d92623a44d9e69a1cc08e8cdcfe266ad6b4364bca469332854ab9b239105280e0a410b17117303a887149c1162edc30b4e5055ba00481065a964891a124e504a8490537ec89d78b2b614f88e0d22b614f10695d76dcfa72cbfec11a6e536a2fa7d4be8242746a9d65a969f3ab16ce2c9cd2737c4e2f3a58d92589eb4a5ef713c470a59ba82e57bab0e0f6734a627141920c5f80900511131a287022870f58b1830d52e04ab9cf29ae83b9de5d777747c5c0e27429ba4d8b3a89e39aa6699aa669fef2860d567b1c190cafab3d67af65e10fed4e3701c7afa6fdd4c21f9adca18f33b22804a759344425a92fb31d3a89a3a55a740d94ae0a4a57d7d3a27bc67fa35b9e43051e42afebee46380c08397018107e7077ffac9da540baa3f7c208db0f0342137655908649b4f7696f2d4c49d76461dee0cb45c095301c0c25f90013fecc2b5dc979c1ca14505c29c5fe7efe243ad92c0c64b78714a193cd92b2f53287c71f9c386ae206da511355fce0047f35628a0d5ca6d870a5e84fe012faf9456f9d20732416d1432c40dc208347e0c77242b7b8211d3b7c006996846d31badc4da6905862301a0ce18ed20b8c065aee2893588ef1169b25e386cb2df04074f707f2eb32b8041d394e9045509c907225cc89201070258c8b986b615d867080e48409f5c34421836187cbdf9f57ddb485fd3bdaeeaea26b6666ae37af40d3a59ceddf5946b5597d6b8e5d7e579a7507912b4d4977f7093bc1153508213fa060e8882b3e7004a5897a24886e010e9b0c516c01c68524b2c021861a44d952c4f5580e53fc2b0eba5cd78cb25cfffa04141190fc90450c2b98028c12cd0726824bbb00c5c642eb9043dd410cd7bfe2507170e4caeb8ea9d15bcd48dda45439e4963bf668128b08975f46cc07ce45793ad87925ac0642dc95b7523f5cf7f7ae7f8a27875fc612764ca56c1ea7063e5cffa982eb5fb32b9b25613560c1659a03f357299d973bddebf6d8ed9ff3bbf965df659e7b0c6c0ac525f4d0f5efea8c1746319582875eaefbdc19cd1a2b4fb7564e8cb4804a0e2f58228ccbdfa76988b033a45c0128e390e6053604e24bc3293d270ce212f8faa538d09f2c34b972ca9530a2292e0eeb866cadf855902c17cf9f8264bd787e1d9295fa1f51de8f33df8f3277c6e59dcb00b81ca3647f345dee912cd4f3fb4816cdf3d7902c18cf4f23abf4248d191a42f5cec7d1993fe25c9187fb780b88af6e6e52626cfd51688e42637dce6a546f5135aa1ef3b3af59d0b5972728545369c2d8915ffce21048ded4b72af5f2ba40a2640907c14e78886e5e183fa21ec5ec8f7266d46b30c01ef3e93fea7d9cf96e71472142f352182a79b9493fbf58490ae42f2df6bf0039890bc85b7806642420ab8087db3b3ddcfe6f052ce0e12d3e6a20de62264848120b09604544d817dc7ecd604716c362784c33ed42d50d79fd85dca9813a3e5818510e2ebf500e7804fa1ac83a363fdb35c351a85e0f755063acb449623d47089d9a36dd20765b0046b77ad5d2173d4291d023479af5d270bc4c1c1c1c9c1b2e37556ea038a1094fac0f756136028cb0dab8081122478c185915c09b75a8009e013c67d0070f24a1a0a4202d0231c00148b0b1a8d79163470a2a963bfd9d013cabc516b92345a2d38b557043225f357c4c2f53cc84a45b5d98ede5c5b69717db5e5e6c7b79b1ede5c53c95a6ea2f9dd4485eac916ebf17f3b4746b43b2bd4ed85e3766ccf87e262581ceac0e51a5542c14892251248a549d206d4836252d52efe1e948f048f87e3212288b7bff1445f29c30544c8b633e1b3797863489225dd18ac8ea160fcab678bccac3483e0eb7d7911d29d2f642fad22d2f368517b3b14359fb0cb16225c53133f7a474bacb7f60f9b9d6d2499c71734ab3cc0a37e43e853811d18412310515eaeeee94b2d39965be8453a14e43ef85a2323484b9dddd7dced9d35f1e156e68c2ac84712b2f50a142850a152ad46b10ca1e150f8d66adbd4453d1322d0c83a262ad741287b9b3303b593605951cac3061458939adc46c60832c492081e5ca1156aa84a142650a4c4a14236a5473c6a0b29933069b39638861e3de5d81b87225c5b9bbcf4cd3b2962e6fe962c4b440b54cdbb6c88c32233addc6f42ba9d80e4e3ee79cd3bdb32c0ba24993a466f94bd29861bab51135793579357935793579c92de32d681560a26ce1eec49b6443946a99a6d11e6c3ebdd71643b96db21579311fdce79c734ef76c66f3e575b591ba3469db42089dc419b32634d3b42b3eddaf781b577c0636f4bdda6cf6ca0712a47e38aaf6fd6859ca73c2f713cc6ccba4744ed603ebcd4ccb8c3a0bb7a2cc084c14bb5dd1499cd15fee530bf3457618a22bbfc8955ff39db45dd10c26ca952b4e5c71239a65d9155b84e5af1bf3968d63dec23d21628819c82006d689e5b73098415d8112c2c50be6282f0802881acffea0f2ac0f3631b28c19861832b28c190619cc9c65cc3058fed16fbc1836aa1a18a917363732b61ac5111b165aac961b2a9b16568b162d362dac96265e640383c16c6030988d8d8d8da4212f8c23ac96ec08988c2bb62c5e463636cccccc4036d7538f231e918133787a5abcb91eaeba88ef39308e480db12eb02db841b24cec12cb02bb02db83556293581eb62cac0a2c129b028b02bb837d7923f046c0493535f67a3a582ff7c7bcf67a0864063bb217f63236bfbfbd9c3444a39ea4d1d673fa4e334aa78bf1cc5ecbc347f672fabb77a665dee9c28862c3cc4055239840ba6d04141a1f312cc9e8aaae84253971bf2b6149b11b9b3c18bace56fcc08a2c404044e6c8ebb1a1a12113d01873887e12fd49a2f45760d966891de551d00e6f95feabacd5bc6077f0f0968aba8a7ef7debb8a724ac47a74247e60951b475ec76d3076b06c33c48ef268073ba533a394568d523f729d5f4ea4452fb243eef8cb8ef208a4c1daa1acab16a7cbb7a76c29b9c78799bb6868684886287de5c70a26e48e3c5d4f7a8bc893f86f5cce858a1a8aaed422732497eac5fe584185cc91777c71f9d9b34181adadefbd77adc55c57f907794bc5fe40bca5e2b0fb1c9f325a798ebf078a9ee3efd3f6053b4a239ff99ea3d2c2facb2a2b8c97a55d9fac38cc15eacb2377e46f59f9141c86b8427da709725ce98268e594a7942f5aaf5af59c99226749352b678a2cbfbbbb73536237cb32adb656f200b2a56921aa84abc960bd2ab56e33a3dacc7cd35edad5ca689bd59bebbaf3bcd594def4248decbf2bbf5649c10218e0007247ce30f1ad562b49435eda35069d94adf9cc55b32cddc5165137b02cc4094a06b28a83a3906e1a04aef33e0f64d7c7ccecb93af61db9d322c7719df7954a9fd7715bdc3d9302f62222566b9d4eb9cefb529eb5ae978b3fb145979dd4c1a6fef5e96723bbf31d8756b79e9e9e9e9e16f7cd854163cfc5b9634f4fcfab5ffcaa41d2d6d393a587e3bcd9bf0c6014c0959df79536905d2590650eb75d2e03976e52ee48977c06d9e58199cc995ffa41e5ce74c96c03d7e5cefc7a27953d33441d9bf6baef0ff25617ea783fe27c3fdadcd1bb8dbaa367f24cb596acfd5229ef3f949e438116513690cdd268f0bcd9e77c6543a8405841c41d575dac0c6c8dc28a126854ac00c1860330496090c028516bc6834f39a27505e6851cbadaead9294e3c475601c6045494547134822a5baa4dc1aa8872c7df706841154caab841c362b32b615514fd544164e64a581337807d8192432735db3f7a77fe98fd4829cd32af9e336bfd09f675206afdf93df60c512994e779935e0eab040257cbd6dacad3096fba90430d1563ae7fcdf7e3aa212a8a48c0ed873102a60205316e7faaca1d6451448b0f34e460c4881f5b5031e4092636504118b6d38a1878501a0173690a27958a1a8a8e5017dfcff4975388e0fad37c3f5e5b90428a47492cc070c9d8a538e2facdf522224841248214496eff49862d3ab60421520d219210b7df64030f988052b24816b08324a6f0a086dbff15ede004b7bfdf4b41143b4040675f0082bb218aa1edfbe9183a7841e200b7bfeed03a90e2767ff512e5f66bd6f68b7656ff66f154b10206a6ffecfb99301db4e09670fd690c187210c5b512c3852b23dcd1068a27b7bf4241450e84b8dce5051c94bcd9150a16aed71ed8c749ba3d3d55136f03033bae82b020c4b581f91de0c0fc16d835bfbb6d8a958441d8456b5c60e94c92ab99135489d2c213464458386008341042135774d8828aab7fc5036387173b0eb11cd2998894cc44f8c54b9c64cc1ae518a12c41f28b1cc3fdcbe7c0ba59d173de73fc9f67354a2f14d0c1437bf7994d69e898d9dba7d8208599d9a726c474770fc28a16345522c90533a350cc8c4285527b1a9be256109cef40f81f4484ef00f837d571c0ae12f6160f07942e1140e90a41e90241e992df4f8e36b22ed821261204a46b05f55f40b66c16b769264d68a32f0dea0879b444766f390ae28eeda5913a890635837a8261d4113bdadc367204c89c580805f980c8882123860ca120f38bba179251bc1ca0ada854ad57653dead4cc00000000d314000020140a06442291482c245447bd3d14000d829c40765499c9c328c86118648c31c61842082104081991911992a902aa076423d0eb303ac1af0a372d6ff00b6e07579d746dd605ff3cf1ac2cd64f1bd510dcbd919acbc40c9a2139e365616b08a9776193841f6b35b3e6f21e7131b93ce3bc16102ab5239d503bafd62bdedd28abb899c8af8f0b8591db87d988c82ff5a386f7aeaa229ccc8203b805a82ce4545d44251b70b30e4f40344a34328a86c753c7f254eec3183b77fc5d6757af4e298221c94d401998b1e79e18c1873093e4aa12682f4409cebe2e51889181b66629d4066ad089f615bf87b08e4c79781b24caf2af88b891c84fb9495f4880e483b76307a837a2f51d04dda644395c5d1cbf8c700a67f17725dc1428746364d514eea7c8189b29ac72889063213133690aa8562093fca1c1ae3d9c990cdd6ea2d37edf5978f2b08c85f3b26f9a368c87970c3db615b9a1ef49cf13220090d27264b921eeead67d858bed27268bd6cbb16cf2627e08f1c7b6fbcbc476d4d458e88599f59fec64cf6860b350f54caaa39db54e5069d4f65582e16f6d410026fa90e3fadca2128f7c997ecb03de242c62306163c97c71a727ee919bf1f2e621e2d57fdb26e8fa2802f31eb512ba11106b8012e30b127d873344711eaacb423d4f309acaf4c22c8fa0277e35b2e76e6e60e36d8af1c19f5d851ea3b08411fa442c2c777ca77a171703bb7c3937772bff7feb05b632a12535573f8358dd54023d043880a809946a21bc5d0748788fd9247fb227f5b072157ffbc3ca22cec364a21ab4a0af78e92889e2126ad13fdca2f41efa86e742620b38422f4161eae57ad83dbde2ce9f37d1e2835d5138a9e927cbc79849f38457bb62a6dbd693a84cf214284d62eafab8c2deddb958457888fca5ab541bbe4612201e3579b3be0b268374043e0b1b58a0616b4f5907bf44271a23827c5471124cbe44103d2682c13b7155a369f81486aedac05b3035c2e08f1de929217b17b08963a26adbfbdcb9e401b9ef5316819e471e5e2894f44d2726298db21c4e7dc0db8996d08cd264c9133898562e4bd002b140cc40871500c9798e501db8bcc585024c803c1dd475a18b54a1dcd38bbf885c6fa54b2450d7e222e0fa535b5310fd3ddbb49a0c4d623ba59afa5df2abc343ed1e068bc43670ac8de5c927cfad544cdfb332b6db2d2522e57745694602a327717f15723387e025fd7367c0cf53b1b50100b88a29cb158a10931b5240c7d660ccbed16d7a82216e3b22b94b27e0360360f186a214269446f8c4db0417d0f6a560bf8ed4087755f1115723a0c412010946ede65102c6f46dcf1b5136736e1d34d85f7a44b87bc8874ad10a98a080c6c1f9c0d590826d64e259eda687614732ebd0394ae818a136c4620b58ee5a2d68eb7654a338f26b77e5fef4584306fe6f263f473e0d32deba1112c45cffe0cec9156392bc9249d134e35309c12f46270d3f59ae57725bc7df44886d197dc46680e2b6eed02b4ad6379060e756ac8fb22c1776c4d1e719bb1c2d3f194fe39fc0c2cb4890b9afbff580089298465d8bfdc0793db0f2d2c342a7fd910a7aa3edf209f3829d8951b0f50ddadae596c17aef58b1f827492c39e12192b4a09bb1f7777d673b5ac64ccd0a1f477ba47e52a3159a131f17d0664a310996c847b6eed1c31d2e2de80d89f992aee352a0ed4d1c848f0609b2605408ade1da000748c6be8f4dbb2d8d7b30584b18940a12cb831925503d53b08a15b3a4efcfb8da4dbe94dadb915731379e8fad684c7600bd51e87aa8b7c7357cae202da57a85de07a589a808bd9cd4c4157e1855c631f1f1eadd1619e2e1a6a8afca66c283a700f561c32e1dd343027b17fc0922ab2af396ccad3e6d6efca91c18cd9632596f08cff11779fe593c5e781296f3bf9de6abf1170312e54479de6dc6953f643310c96d1f0a60e30a884a60d454b1df88aea6aaf305b9c499d29a8b02e711a6d751b2917498d8878b84bb6fda28c52b1514c66223d39eaafee6d1938e40ba7b7a06da5960c577de112a007867b36ad9d1888633f9ffef6f640ee999284203f6e65382fa35bdd98d6bea9d22870dff16044cdb5393466b57dcd8f1bd0dab13410591916d2c73010729f260b822cb64f8b3e037b252f4d455f7d77f443324faf3a2abc640462102b0a69355623d7a3df4db14d3925a00b3c65818e5d18d15eb89aa85d2e19ec66d8af51033af3f3718914926f5f0981327ff2816dc61aa2eb9cb96101c9d967c5747436be922d739c4524c696c608c291641664ec46cb6497b3cbf72d4c7e87abbbf74b078809e4eac9f367fa9f71a3d77d0ccda9410d35955ffe3b6a109463f6bea6b4316f0a39485b30e30408b6e90528f899b206956c514e2cab735f0232b204b9d0581f16e02ac00b63ca6321de8ad97247348ec5f2aad258428f2129e724f672c61a88855c158e8e5c8ac3cc81a2da1d78d9f58a8a0392da5223b5e0a24378b54e4a77c472d7f67112bb8981132582568f0c41cfbb1523d4636f41797bcd1fb0b02b98bfa4a39d480b89e40bed280f6cc0f0686c2372c21d2e369fc228cea63ce253488153b58347930954545423f7a27466069ce1bbdebd02956cd047ab8b7186ce52ea7a2d5baf79a4eecb14087c7ba41552b01fecb68d14a37b767d251152e5ae2fa43c60b02503150cdfc1a353d853e39e91aa5eb81a76fd5e68f34aba0ac59d1419f88d125fea7d0db8de20ba120ac5fd3fc3cc712ceb91112e7b1173c0b8cf0f1e3fe1f2e554dc540ef5d815eb3d3160919b881ce0d652686e4c2e071409f8460f109d8191829919a038a1c19a9e3c3bda866bbd21017b4c82c4a207e8386a626352696c2f5a926094767001c40fca6038a5b7ef5c3c468d18a32a8d4e946295f608231469b8eccff82e75820defa452f454a5162e763ecd263cb842a77a2ccf134f2ea490876bf34ff3a7b0e275c410190053df4ff45459c901ab7cc3981239822faab4867b58d89b2903f4dcb14e138ac5e68181ec818be350672018c506fa7f2b1dcdf87bb29c86df95214129761cf24f1d74436a6ce3b5401538ac8abc9e89e99ffa9b410d834267ac621474960bdef91690f9dfef8a560b3a0fdae7da46223d0c72e4dfed06b128f85440a0480d0058f1edca307fb4b301d0b054bd0646d1c1e130d061fd4518d6447272cff76d778ab90dc2dbf24a48963275189ae47aa6c60ac0fd0c61acb83df8856d1cdf958fe5a7607f0f8e7f21094fd861b4f40f6e6606f0839c1da629c6962c45e539200168b53bf983c1be66de0e078fba8fd005949c58da84fd9351d00bc304be6cc9c250a618b51227d5696d289e56006ff626cdab4a173aa197754aaaf9ff32e38bb1efbe06a5c1c433a1cd4c0c5c342b3658bc4540a80d46710ae9552393c36b7cf2af6092f39af1e03d16455d6b36796b627a2c5ab32566a5fb60d533211e3322852fd326d269ed0f69d58cc2f0320e477f4e763c9f8f5c449c8bc6733684efd363b09ff0d5a893fe8a5c1ba7827f24bddd64ff18f642a14ffaff21315150ff2b8eb4c9c3d31ce259d379c2b75dcc389b4fd96c83f82a1e90d76ac0a9280192edf24d5a0057836908ca3379b4d75b86d49ccb3111ecbc44134b1d984d7fe4103c5e49b09f7128c667ccb64ae5eba8db71c666904ca0f5ea514dfc374dd07b006a2b2c1787d92406ce4ff221ef5402db0376439a089e782e802c15699aacbec6e0e82b1200c8042c906cb86b9c9865053e7b351ed06afd83693b4c1ffd90db12a93c4f46f5c540eec51a1a23a85512c637168b97a88578a94d536041e9083e01e6c229b411ee3bb2f3d0199eb0b280f6d0a5b0e2e35fa703b17dfb36ce3839bc515b1507beef9530bb840a06751cdcf61e7e1ad2d53379716a48309136283fbf02cb4d8a1e31069e8b1bb7c30eccf0d2ec950056723d01b8d32c9048cbb7bdcc572f4326033cf126faf282908b4ab0d34ab33c579ea424adf69508de188454f2cfcc20ece1714ba10bae1e0977a289a141fa2d0690859ab37dbcf9d955a1d48ebbb0d348f3a553a8bb88d37b58963e825ed340be9d86bcb14146d9da93bc8b57ace99a2cde3467edce8a6571c61ac1afe4a08438e640c26188d00e9eab95209c9856ad432f3bb2a9113fadc7ca0499a850c1ab758bf51abc45b2ce8aa4a9c640d32786c409606cbf6f4ba3cf4a4c5088087dcdd09e4600da3ac378d38fd3857e9d4ecbbb6675467864e1a0d3de800aae842904cf868d23e5a7712ba282b3dd026862dad33f70f48fdc240dc84725ecc75fe09d02d16818485bdf1271acd1d0b99a58c3b9de66c114659f2960b27fed575b67db2b7ea346068d263c250f61db4ef4256bb223c591b184563bb66427395a21ca5e0b6e0c4f6af55b76570b7c5b4b855128ad8bd69a6de1ff1fac2fa26d934f2030a937443e509372c93263a32b2087dd0ff1d0140a81537e81f7c323f33d2ec2031dbd5dc20d566dbda4414638162be2302cd587fe33e49738fcd6485d5b83787edf66cfcaa9309d6240400720944d271a341e6b37ddbf30643b741e64272b19e8aaef6a1cd28f5d54456956ef10e85718c4c0732925aeb97d2bb46926f7fbcd79a29492c8df92d8e7c3b3c6ed253dc8663e28fcc17435c7c727ed2e8ca09af2c2b3333f1ea978c23a99033a421ff60c3b29ac81d637ea51c539df04d45cd9700e1b1e51fc0a1815036ae22ef0622549b7114a221be5e051b7d70220137db9b3e9c07f3b14b68da69fe95227404b1952ad9bca226d7b7de3be8e7cc302703c37373029e30765a443d8509960429631f5b6b5abe6db449967d16955e491fd5fe0567f9a7a0dd5009f152c3c7ad48b98bed7a0e88b3ddab3f44b76a0b9e1b66170bd851721fb31ddbf536359e283f9b6aec05ae485c61fb56764cf7e7050b171827fa71acbb9615f62ccf2d6a78bffe40e111b5c4513dc2ee48723c29fb4b337bc59be091e787fd76871288da264759f66db0b4cba2fefd92fe4d90d1831a8d52e46c486fd095b7f168d412184f01aaa8e636090f768a85e1f8cdee3344940386b1b8893ea5779d6aa1d7a5d1f3717c8d83827c0ebf6a2ae4d72d82a554a105aea9bea1b7fff91842d79cb8c9577312391ecad5c4a8c4fe449516e71c97866204fd2bdabf55cd475709c2d7c2a7b5229302d8a92c932adacf2ed1e272b9df27603d50c48735c3fb911bd76fa746c5b202a2cc198e06f71467194c8aab8575d422040c78141a69abf47752e5451811289801b22b90b8202606dc49d7bcd6b5aff33fda064bb1cf50aa5b7cbf7dc2c111c1c7371a77e559e97c490581bd3d6d5d15206a89228ece2f8567e622342618dfec7443e890b1e448e132cc9186cad6e034f80b9a6e2af0bf3250fd5b86c4ce96d4c76fa9fe2da8416f3c55989dee7780c53acec44a35f2490b33051d04f108423be80d133df711bff79576a6585404278540bd93934ede21c78b88bade78c2d437d506f7e6de7800475f1ca3d96499e1d10d6a6fef1068c544ea378d8266345328374de39d827472b2b0b8f8a4a2de155977596e129a0f8c16665dd0375241ab96dd0ef82b3a1725235e32f4875eebf01937e4eab4c7cf3ade890c28581d3544ae82efa23fd6574c87e03af28667969098ea30aa2c336cab0c54141dad51e8bce142e4483d9677f797b81921208d286dafdb38e1ee0d165cd7125ce40a7bc4642122528d54862d23d5bdabcd50aeade038777017c3cc606da63059050d5f132f02617af1d12c2e59e0ecd4bb076d42b12d93dc576abcc12c3578466a42b10eab161e7c670b7ac4ebe56b939425eac122fe7cce752c551f0043970ddd042854e81a3d2e352a976d3e747423cfd22c8225a2cbfdbab45ac3b8ffe59d5b298483dd98545d5fb604527732e6ab03a77378acbe289af8221a2c660eb50fe7ccf555a43e1718e778734c298894f7ad9290138250a6addd8e8e8f1ac866c8703d55552fc647c6366258b7a2b42f8ae7faee0c164f4fcbab7691df316afc572592b6816c55fa22efc72fbbeedc77fb13e8805758c4401bfb13379cb282eb1e3d281976dd471aeb8a560d55b9360e58cb3863b13e6337f9f05e7f0697972a3943cc65d5151aad7d0998f03f01b0a5f40a08d584c4f7e128ece36360fb846f13ab0ca239349fc540533f67424d8819aa4026d47643a21a5a775c4a8eb5e0bddc6156563526fc969624a28635e37b7c0905bc642664318136dd898b579c38beb5702fb8851f78c1bb8f15ec9273b80f403b6524ea9182701caaf6fadf8875d657ba22b81a29e654329266c1360d8c3e1342171b751e31891b803d95d6cf9489969b99bac1810021e3dbfa2fca446d1621966ed4d14e7020b8b7c22e8213c14b424917e1b88d1e4605b2267d76bd0a1dbf6a724c613153b208a6fe7852d0920f04c2d9a37a848ab60667bcd423dc8481cbcf363f5917ae191d564dda72a320cf1234fe1ff58d07b3cfe7a71cddb3cc845b5c1437d27d9768e20f798b0783c1f587a06906171f180ff7ad86bd1b4e5b100461245a47752a05673034bfdf98185eb8efd3c67831f645be51269b8364f8317dc6e7260a08b6aad7066aa16e06c9bfa3a86784293e4b5da71b8ac085ec8cfcd94a3c774c295cd2bb4d41466df992ab6d0338bc0e02824c5f2a4a498db1b5cf001f8dcf10b9fe3816afb450e95d9ab2b1125b68a39c6daf76dd2282d2329f3e21182e78a0592c8297b6b15d6ec40ae0abdec44f3f8fc23266044c85d28c08cea6052314f54349c9b4333296250ad190205e4326f41ad5268fe17e119f4a1c820ed739757a84eb7ff431c8b1e8789d4d3ec810126b347ef69978f55340a094a596fe2d1754e0d7ef0c0e845e368f354104883a515d872c2f33e3e7034cebef4e2b8afd06de7745e7c03ec359cda2c930215f8e247cd909971e45f7ffe3fdb8f5d68ef32dab2bf411a438281b0d80402a028ef937b895e5cc7bf2d1f249edb3e0f91cd3b84922fa647084fb7ba81ad0e2fc942bc492749eb81bd2faf7581d0064530d8957c312dc64fc7e3dc947024d1181e3877c3dd52bb91c9046f44b06d131d76150d29f7f67c29f4e4655e1146ab2025defe3961a7171bafb5440ca0e25d0a7fc38269f28027c262d8e3d283c88d013547e3b073c28baeecfd4fefa63da1077daac6683cce30d1a1c773799114ef6861ab9b1db85878a930e0e38e0732b99ff14c284854da4506ffca25ca8ce0b8fe024db0841de88009258cd7850bfbf6abc831368a8bd3366db22f9e13ab56fbe2d4b0bacdcd9af8fd9c8adf3a36a939c046e84b6bc272cb90cff1dba961cfd4c20a675e3d5a71b409deb0488c61645fa6af57d208a6f25ebfe9bc1742b052e08a8e1fb3b60fb87e10e52b37d6aa07005425246038d04dbd3a1ce74b80197984f396cd10127ad3cda6d33f0c9c18567e81034de8b76b9ca4410f940485504e444deb476a0c3374b41877ae0e7e0903c876b7e3d6dff91b4a9b3011f86932c537174b9cad3027be7ec2530b4ce5d47d7a6a26b8065d665a4aa4983da8641eed77aa9b02e6a830b9817fb09e8e3614487c0229c09476258fbc4012cca3524f8621e194642c0b18a7e320cf79494f73d5cb149749996295d17c3b9676d260239371b6825660523d322e6307eb8e4171e3c750b96c51a9611b350d85b1bbf0167560f4e24dca8b71557806ff10a2c214bee9295f0977d91d4b645cf21b0dc130f64a1a54b51d8d38cae2c05590b6499c0ad2ffe6d014220fa3d6dcc8dfaa5b8f719a0441ac310313a02c7185e48b037311431ff828f5de5a86d0ed5a94dc31d1c1768b8f62cc492a002d93fe463833854ec595255effa7941112fca09fe245ea655f768b26e4d77dd7a3b4621d93d48e116b32d4b07f894d51bd90359986cb3e2c3207461b393c5c2131f98e03241ef11b48e3d83bb89c94f611ac33da270ff4ddec6de8b4f57cdda07023d68e90c0b80b5d12b709833f153a55778cf32c4d2f82e2300a239daf5463db6f4017193e2f690ee50a64617955983026ecf2b60fd1d630309c89081dc5c70031334ac8c52a21bf02d0b2fabc36e7670a3e591488ae1d2d2320b557a59494c8ded51e69f858982c674fa41cd3e8d4fca7fbd77d3e3fcb801e6e9302ec2b685f98b2f9ff650f417910fcae2a45cb01edc132b270b081fe013b72f1ae07b0224d9240c3edf6ac48563dba60c22a535306726a2b80d7991d38a189575cc900f6974e0355f0061790dc7adb1012b481e887263aac82be443d01b28dc7d3f14c5ede9929c2e842a849fcf705012944d431faf771eada42897ada5b307cea4cd84b9280c90ceb369f0ae776c840be812d9bca8075292e865a19e565592a688942629dd72dd12ee30d99c999d9a47389866a23a1a0b370a803d2876a858880177fbdfd9b2276997b4f5b91311d422ef23c2745d81444e51cd888a38e51c264e82af1b663cba016ec619950d8e8050ad888fd7f0ebc00d5836dceaec563b4930878db8db6f0d91dd3f90aebcb053f31412c47f59da82f1276b40219009f6e9fca778337306b0697c67693557f2e96695077f85486333c54f7aa5b2ecb669702ba4ecb4c88d264062ad7ad92efe5c4a9073d5aa9713c9ab10334401cd94df13f71c154c108292912a4fe2b99ee3d79f579fc101caee4c8edb3d3ff1c1fac62960a198b19b71d71bdb240cf3dcd2ed081eea0f8ec9c11c2ebd5aaa529155fee2f62a67d02d89df34a00537a018a25536822587f737bb1ab05b7e45cae460c7d0a8f486118b338c16203146d40e92d6711dc7d4426150efef7d4925555faafa1123d8f8830606436f8ab218d8691f70c4fd1bd65a2e2e32f4f4f7b667f1b59ce705ee27cbdbc7a047162df0ec96376f87b3357879863dabd382b086ae8ee7da06a7b8bdbc3b9ca5570d71903429bb7fc911ccefadc356439e0462fcbbc6d8fa918e9fcb580eea2ad634b115daff922e678c0062514c49cf3ec3d6fea8289ae423a54e652d4474ca94b4e7065587b3f850dc7fd9101443321b61839164a6dc9404037b135417692c2e69c604b1e311eaf0d98efd8d63dac8e66cb8935d7ef98d2140f25165d3279011a08f462a5db002019e6c671c859dc0db81a434d77b9fc7e0423c5436e8fba8ad8f8a56223d6146e2318fd2c1a8aaa9a620850ea12f069114b5333172b3cd80f0ac5c91fa06da148db66ba8df9c956e988548032680461ea276e27e7d3784a89f272028bffbfd78694e63ba9acb406d86c4f04259d1d3577b3ed5eeaf8a4e100863777f2238736206fb89386b528ea205793ec687c57ac29930e25ba1043b90d4dcf954af60e65158d07171cc94726155d4c7138c58175c90f08d2b310b8182f70db7b34ebb25f9e3a3353406607bce1f430bc3708f966885afa734123d68bddff07ecc4bfa28516217dd7b48f00faf85a9a101f4516323642c084334c9bf7548d7a229d92d93a3b2d3c04749b731ee850dd7c0e757f9a93946e68183d808377d186efbcfeca27280b4199a787e1e67e9fdadf6b241353ad297ff2002e9fffc1c7042812be0fc9ea992ac739bdafd2e6e78617a1a4686f39d26b7edc3d33b0ce96eeaa4482f56ad968a4c6842e3ecee07a40236f9631eb19ca33447ff77f25813d17f9750255f3834e884c5acaae2a7bfc02ae3f147b33c64b3aceb804c51b8d0eb59ce7cc14c102badb921c8a86c2b8a03b27aa68ae88bf63d2568d1236bf90417198013f106d44cf78fe1249d1a8662935911c53d32f4cb4f69428ff544321cbae53932f1cd71371438d49d1815ebc60237e3e8426e16a8a2f157f03a50c11cfcbf529026ccfbf9f02bce849d8a1e48d41361fd3946d90148feffad0610de967f5ea9bbf3bf9ca5ddfe48e297e7d4a1d14cd5a7651e4248856be5709690eab01c22766d075dd49593acff36c32d35b837780d69b46abf1512b8b9d4d33ca1b6b29414945c883fa460cda5bcc93bfae79b8ce3b0c34a67f3a21b90183d469300c6a2eb951b0bbfb0e26b0b4f8d315c6e20122f0956a199f392608c8c098b15f9fb40c02b8ddcce26b2e8f36ec1f3635dff7811ae56d5777e73880ef3c946dbb3d7d2f968b9b028ca26348ef3889198bd5f4edffc8db29493c4235c1eb5801be69a7240708221478afcd9fbdc73e4d540c72cbcc5f82c5611410bd757eddad4aee5a17563b0964a46948a19da372f8aa2e0926f2369bc9e278638dbf7be5e1d3b893b602528745b97350ab0ac1d424519a3a04d44e1c7c35b3d2e1a6c3e4fa83425cabdbfb7caa34a634203da246bd9c0687d7f9e587a7e750b51be8340c904ae9a35891cea254e144eac8af342118cefb71c4542a2b22cc674fa52edeeb3035f69448463d11e97499e91e0b12bf5ddda611cbe7c1391db017c072c6a4359b65976c07d339ebe73c6d80425b01603342c7855aca622248a43e19539936efe69f1fbcf0ae53ed2dd9a321560292c11a9f278174dd63b5fffa726428fc99b31b31c234ea04ccd01aac4ed568e3e48a38c05f34634c95ebafacd0411e381b1cf0846c2ae34476c574db69a8b6563ec4affcec283afd5f091a25c8386940960bd291e27b74f2ae346e0218b0e0ac86d8e1e09e680bc993b77a5af9191c18229c8a142ceff8421a4ffba443a3908727f8031caf0afc4fd17425951d0c5d988298d22da93168acb4fdafb9ccda2097ce375ac1283f49d185dce87f7bb8efccbc59f664d0dc0541a43db050d802d4a0310c50b5d1c31ef97ea9dbf0ef8b0930a605b904bce2d3e04283bfaae81994324af408a24527e291539726e05216544a5a9229c6470a0da0972188bae1975381d982187cb503078a503ef83f951ef239c0858efb5742f6a02669d18dbc0e5773126ea473b86accf473820c604177922c0a690031c5f6190d29edb1f5f12b1e9e2dfe0c0ac0d5d1e10107a00a448f467a46bf9e86c2c54cbac97cc2728b9b14ef3a80686b56e35e1a44b602fcde66bf24980eb7b05988f14c64a823585b0c8bdcd9076c403ed5639290b2ac1a9efce3cd81d1a0ed2053697a2a748309959e8be0e131772f801d302b224ed5225e9579285f348d2951e5786b266c8db2c1a3327b872bb679d27dd6e57955c6792fa04f1255fc30c453ea438897c9955486442966ef2590aa92a53564870dc6e98997608fc086c304111dcfdfc05b19a515fdcbc0a7189cf7e02f00cf25e858dc09a8690feba76475201c7460aec2e443af57f2978805d6dec2dc4f4355465e2b36310cd307dd34224192ee36cefe759179619ea8dc35451fc4653393d9b8982287426665084b50c735941f13fdc9c34e11000867a77a787e6612e3608373f27fc3747f2a5db441e60b7ed587d98169c54c7448c7c9b828df8fe0dd7378070111cd69e846bcdca5b3d122b7f69f6f1eb0884c57b6418335749009b156171f6788d7c3d92b66746c799963623a8174affaba0342208ca159a8bd1c20565ca63367d94fab0214dc969b007c33980a1b5ba1050a14aab7532211da8e8ed77d058edc5883d54770346f00535aa84b2aa614a63b200a50322897e64518a641442c9c16b2ff1963f55478b6bd916e4a05f0cbd95368642f1c94c7e1088d8ec0019dfb181ce3815b9de644ca0f32937d198bcc47a656af1fd6490f1e388346f21795f13eb742d83196219c9204b1e7e3c594aac73ddba3d8e33012c366e06924142849d26f7c0abf1da7d449d23457d0b4188b1d552aa8b1ccb64621a234edf3daf00785e6f6a8c505fecc350b420b978ecbd976961ec20119da64ba91002fa9e72f6d64f278a5ba827b7e7b11ee22227f6f2810760a9bed953ad75950a975a332ca7477707d711cbf8527f3e7c6e6971085c010fad4efc633a0f78f08e91e12c6c812ac511538fca57675c26482beb7b71aa7ad007b4e0d1b1f53b403c0421c33085ee20169f0948703eefb28884e167922b14398fb4d12924ca4519dcfea02f5cb7d000b6e923d7ddab421fe1e02ca84a826a9a1bd0ac1465383aa38fdda9e39323e0de4172b3caf77d4afa4b5df5e2c14710c4104c90257574667d20e92f7afe360e8658cd898422a5aeb3e6f646eaf80d2717e68291cc9c884c10e009a2c11f97cf0f5135446211717a25db661bb1332736808bcb556c5c23f745b4e2d37ad00aaac1a541638a329d93e8500d62ea6a4256594cd1b9506f10926142e6781d7413e19191342138f4f49a4cbd0fe9105ca32f83b97703aed329df7d4ccbbdb4b3aa8b93d29ad74f13f924c7a2a384cdc4d54f6ae9473a4801e69466155e579afbe6e2c3342b3258b77b11a58887adef33466dec51003dbb8917d46192354b2c9bca7c36d1c1df2d6162290a91d39c6c0c0710033cdd05058cfbe84053c8d531765e2f8fa676b422bcd9adf2f381be958d32f7b158fecea07a989c6d0235943f7e26042fb5e3895d33c6c8e499178e8fc24ded03ddfb1ccd16127eb02301697e505d5f5f1b8194f5cbbcc059ece14c2eedfe575df7d863439a040ef680b45c15cb2addd3e7f1de123d4e1657b01a5c8a121e5e39ef9a6e9aba2c3051d595955fcabbea46636f9e6910c02ce8f590c97638066fd8ef2f4d6c7cecb0dc6027c59b2e73e326046de640c644b455f284a36f215de13e9ab776136d171702e0c7d118a075f320d6692fdd309e9478f3173cea4e5ff968c8dbd752f9355e05b9b8f270f519f1a6f322ca8af8bd32136821093cca07beb2d4adfaaa0c3bc3419d20d292f239881158f26bc4404ed14e08c3617683722756361f3799dff5b5a336c3826608b6c2dce9bdfbe92d682ce59fe1846461d62bf41aa3e8f4b3a63deaca509e862b080f4170ef4085a3182e3f8eb08d52ad550e1bb77a03f0e2e60ec815deeb82a4b1374340922a1e110b49e207ea666f94b328912d1d542ad9fb3432939bd04cbe84793f7b9fe8b528cd32b88473e4b7b94d54a313ab89fec6542faa5421593096ed6b1a9e1167990b51266068489470ca182dae7aa8dca7a230d300a75a1f80a6c526610ddaf3347a18eba2221c78712766ef426920e82f9c676bc613624813e18c986ad0caa16e4c8423af2c962740dba8669bcf81476729ddac10c3776ad86d27ad9110ecaa44387773c3b57e79f6d97e27436ef08343196003c627656af2764da82498c0b0e995d3d80b786d5fd13b562e838fcc0de490c8727cb2827a8a7569d466ab4e4ad0838fe8d5c9af9fa46249c25a373443eb0fdd5f4ab111c99fd952fb827e97bb5388da6c664a06941c0fcba5b5a39700fec07418f3c781b0ac180c628a20a0df1637a891f02146a60eb5c5869acb0312240162246f3d0939ff1735f16d1da006dcc7b51272a981a4a77e812c77b5a13bbeacff54d621768d212edfd577983ea16431887a807433046743e86808ce86f3e50ca526574e34fdf695b96b0705f682366a2a18eeb30929ed5025e5a3be2cc890778b176dae81509d5860b856abc17f1e99e44d1d10dbf9168a7722cdf032910f02248161cc2f39adc4ac9015d36f29bda332dbbb71dd1acc38adf60efdbecc658b1a01cc26fffefb94530c04686425fb3099f8493fdfc0d06ad5de0825b526e5f99892db0d39d3de9db88d4adcddc49bdcbc5c4a7c38a63ede8a19888a6dda155f5fb227b8d6552c4acd01b4de7645d292f6089c967e4fa7fc2365f5b62792be54c5d457f2142b616cb3a3b72953b10d2cba9251a45f785a79a0be622c5e62d21ea5a479fc4851b4144d30d547483d19f593dabb56eec11c53839146d572c5f8e94a2bd657f2faccabf3ce12359eeaa3a75ae3d58526ed450a3de1426d3c403d786da1544a4a3d25a86d5d890e9ca8c05300c4d0015527e5adf24ee288f333f48b279a7cd845f325e9c9bc941b9d63d24e166600cfcce49bcbe42a001b64d4ad1829871993e73609ea6eab00c3517b67683524eb096039497643094a3a170ddf6fd695f767b8236b4ba6a0a7b46b2b3e9f3baa9e0e28e1f355b4e84f216f94a1eabe4f161c82924450ce6586321e4483fada9f4681aa92e2763439ff40ac52cc7bd3f213517d8cf9c996d1a1ab71ea82fcdc6c33acb7e50d9d0649c7d6892c4ab1061601cd2b2286d307d53b630700c37b60c4c270a141021879ed4a13aca21879652cc1e3843f4823626436265fa8c2892e14fbe8163d3efcfc78d8df9e6a684dde68a28dfa5478588693be4e43546ccb87548c37e5d05f9ad0f8e60efa1c511adc59865648dbf9adc9ece6a9c125b1f5132745dbf328cbae3276fdd79394b92f22facf551a71cfcc3eb097aa416b994b521135516306c6f40681338667be3fe255eceda117bed3f53e96520b0201f92dc8d4c205c977bcb800de0edf478f0603587c5e01929261681c37d5f7372eb01c4e76b9a867cec1604c86e8bd672e835b75fdd77586060bf408be5d83d9152a5b6a18960e307b9bcbe2ca372efdb52e844e9e4cb526224710dc7900248d48d9df4c01eac93b8e7394170cef59de4a8f85570e2bd487515f77cde192717b8fdb77a2fb13a35c3d90efc2881a0a4dd4834cf08c0caa27a0e126568c0ff2309bf0c26ab3d7cedeabdd559d98c9c9dd32803646d7017f56f0a68c4d5fd2c909e9eedbc04a1a6214d1e6177fb8e4b4664701c2118c0da4730282166ed846efc769f59ec5fa795403946ea80f85accc486c47f779927e10721ba9ce7b1c13241d686beb9c3e606ddf61c9ef2c24f0737768fc67ad8c17e488129ecb65c8a19d346315dbe4424138ad8eef296561c98f622a21201af92d6cc653529e341b0cc626c5e1e4d14820131d221818b9012836fcab5484fbb9600a3e0b3f6e5db147a967f6ea7045da2e337b57819c2ef9fbd170c9b43099eec94475c46f290183235784f85de743f39b90464453cd7bcad4068c06a258b5b9e84166b3e0950faf1e94c7c449a0b540b2da90c4ade6073aec3f8de60b29a62d5448c633252dc8436418e6e456e8ecf652f4dc0cdb31ba00b6b085d25f8cfeec40168fc5241b8a3bfd37db1f6a36704a2d7ee0c1b13d8de736b0a277fab823f511b6af800dc1129f4b09d493b346ba69d2c75292ade48da514e1e800ea7fef611fa543c11f7a825f5f26f2e5be2cf97f8e3252caa04f45a253bb0d0d9dbccebe472ed4c39e2016a522cc27562433a122bca989fc6a2143a7eb46c0473c76b7f0f858cbcba59b67cafdeb3f87ec8ecfbc860746fd9962fbefb840afe9274deb2dd76a23d5f51640dcace4449b696bdd2c289f9dbd854062f6eda3d4fcdfb8dfa71f439844897dac1a1fe239c91206afdde608d02a043d3a687094c176ab2367df6754ba09b9dbc3b2add4ac22830501c82e0e999c451efca3c806d1523135b13788a2aa1e9f47b7e4fa7e04de753559e0ac4088870b66d0a9b4f75e2a9638697d0f306f20be9f2c16d6acfc52639cb38537f7e1d13988b9512ffe0f7f6ef1b517da7e69516ea36a3dc9324bf3eaa72703f61448fbae2a6293210d9f6457906fd7e56d87af47a19999aa60c6addf0127f5eff190388ae90b87634ee0719fd39c3c8a04726eb45a44d2f1b95bf359222c29d4e35f76388e119f3b34f23b8c2b17fe01e17c18e4967688d6e0f7d76e103723c09115bed8924cd4f41a16b028c97f9bff72f1c9a247cc754da7a56d3c44ebc9c5d2558f1228285347cc4d11bdef64a9fad544097624840c824eeb935a48dd455db5acc309e4b125938b9d1a669fae49961b86050af15897629de9dda05628524001237dce0065b17dca2fccc05c2d740c3382b4af89eabaddb475ad4059a809acca9db7b151951e1aae6b8582bd2ef0b19f498371cbf05102378dc63af74a2a4288a2f9a1bfedd08ff6ae73280e5172d3da2aebb0e22e2055e48acafab20d04aeb96003b97d5d8c1cc8eaf1ed9b691c147165d52fa6101c16c1beebd7109160e6d14bad9bd9f4e4f26e7a28ec7654995d5a5f29c442791add960693fbd2af05cd19d03f36e402cc991b57deb4474f68ca58dc68eb9b01798f0b5c1580f4636ebd135a78d92ac8773b86994076fe1d33a6d52855d20a1284cc080b8345586c16f4b0ea0f61744bb870cfb5bbc70d6a052e8e6112ef396478fc06d720a94378347d7bdcf62e500760bb96cc5d77c07373b217bfa25f33f2ad935eadb5a76b9945acbc75c48db1f1b1b2e2667fd15d1ff1b613e815e32b1f6489082a0ec1ad12a0720b7fec3f9714b780aad056c7a14c01b6ef797636a4cda2f43d4def9625c42031e8058d3a61b2df26305b174cb2bc0eb226701dcafb5385aa411de33d27d6508a0e36ab52f5ac82ad876e61e47cc4e63b980f4865422d41385b77887a0a4b361ddbc8e10ea104f85cdb18b6e236ba8b5ee54a50b4e775d23d939173895a0d6c64b0eb7466431d4534f8107c5acebcfc2036064440b1d0709d3c0bd5a6cd8208a588adced236480fd6b56894df45ccf1a77585674cccc9778b5ada5b90569dc940b8630a9c2f7e9c3ed6fdbe0d890142dc829f619605ee595db8539dead5e46f18be9663d8e778aa76b9594b96d3e244e36d86fc74827bcc9f243d82d4e05e91b955e2b40723093bdc1289b4c00bdb543034165c60e08bc823e68473302bbb7c397388a3cbd7fe1506d15ccf08d45b2c54d698f2b32e57caa292fa64eebbc0ae526f8d01c0417578ad8cd9a764979a22e5404302459b7d3b24f1bcf7f9fef6a1b00763ee9de6fa6db053945a2e06107ee1a6c6181e4eb416ab146410497f351117018d3992266ea253bbad20b712faf46d03cd8cbf3af8da3d14e3e05deaa213ae0f66f1a3afd7555885f25a108b039efb66f0335603ee3d763e3979860fd011b4049235f578b3e784cde85f35d130d3f9f1027a8e9de5550ce852c4ee2f185f6cac9996786ad56bb53b969b181b02c8d6b0131dd26a21c381d27b57c53772666c67a9cd903df65706d493751a2e54d39592a53eee915e2fdd81cb9d4973ea1e7c31566b91e692b07a2bd56b812e445e618597d870a8bcdbd8f260c546a55ab639948fc2e66385d7642fc9023e1e393a634b0f7e15af53aa11169ab1151913561c169e53d12ca3ab09c7225d748c8a59437a87f5bcbbc240d2146028832cc36ab384f0bc97efe428039ae70e3ac675510bb7ddeeedfadc9375e5deb7d800e8cf4f9270998ea7ddd8054a6c4b9565dc209ef6fc4247dc0aa9e159676dc4270536235b80674650614c559dc48d7535447c948c1e537813e83ef5fdcfb1056b5d4cb63c570619c04ef96ca34b2c568a6e7808b467a7f25d9ca742ebabb96ea4031a48cac98422a3d02762c2e812db6fc93839a71014cf62733bfbaec3f8c5074825b796a19dbeb57b9d149efc7ac4d70e1a1b377b46f6eead614e727849380bf6e4be1ea0fe1a103f29e3934e4d5209b0fd8e1b702cc9fa8644794c69297f81c2bcd393108b26ac84e0a036403472839b2a83b0f4f27e6f4b26343681b2d1f2e6cac280f78db1dddb29c9b921943d140d4bc1b08bd6a4bd4ba32b6586d74baf8e3f72eb1afaec1f888accefc781c48ff26c0b8b246e10670f4e8b2db22173b92bc6b7f1ccb1f512c1ec302d3312bdd947c91314ed36ae6310568a8cfcce8230b5a4a871ab1c201e75737125366d05964c60a5d20e713dd19306844250ac4f8a2728153849eeb0b63dbae67703ab75dc4e6d8d475c8b5dbd01984f7d8c5e1532304a432e897b90c911137602aaceefa758651e430654c9144980a847ef2ed03018c0f0980c5c12014b021093c69ad105a7ff32ff7cd619c921c50499a145f4a2af68ad2a3cd9177a5ec3081c58cac3c8874e137c8c656a57cbd37c41ca22f1621064d0d51540d1a00922158092cdd47bdc8096c2a579069c69332626a25d7eff74c37e4e13c3a7403412146f82280f3a93bd61190d270886b20154213613ae18aa30345515e017e52c078a0bac101bacff41f2389fc2d2b7ee6d9f5815676cdd892b620db8e710748340c67e6967dd3d70327f605f886939d3735adf809bce781a47d52d1794ac1e979da96827f5ff9d2c6152bac97a11f5c12be26d45a65b448e86bd7d04103eea5006eaa11a68d285434ea7454e77b0567d6a13e1d9e7cbb783bbe934a5cafa4e4516bc216ae10aa93c61b8aefa138e2dbc79e63fd17f00255eb4075b3dcac3f47f51235b44e6eae8f16caf692c118938021a30a60a4f9d08beb2ba5c00a0361bb63166984b0b268607c2a49ec8cf2af9ac7ac1b096e6e9cfb22eb585ab82a93e722f7818530d0693b33821bc15a0648f7192154fdf33b51f4914ef4eb8659f2b19274cae8a6531dd4828cfdee998cc58f1d0a38bf3a66932405aa49c9888c2eebf7f2606628541de59400aa096a92cc2ded7ac723caa6ed1d0db194eb0d175ae12952c87aa109cad0e89207595509123a7bab12b2702d5c26b596a0edeb9c17e611f9e774ca772bcff42faaf2611917e2163722b0b78a31e1b2fcedcbf02fc19861fbd887e68f0d63b3e09e44db7ff295ef591596a2b9e67768dd98d61345c9dfe0e1cb123a1f2cccd4df7a9e50f6dba967e617532686a6fe396414a543bf75cb72a7e41a628e1d27c88d49410744c0a366dd531d387fed52dfa70b934b7c4770607a5a263a5db042e78420bbacabe389ca5afdf206ae35fd04278596ae0542b0642aeb800d375038865e84700db1002828e68205f2f79fce70e3a5f429619290ae1122575dc1ee1be1945dfd4e1a41370a396a00765b4334475ee01a9456ce8bcb2723e0f405f9f06417214ea100416f22e5657415ef06074bcc1f80154918b8f51c8f49a6a549dbc8484ad3a912199c8fd459f0438bc393eafcbcf2c60bdd0330e884227aee289437a2d52cf626240826da1875b58d3ae9bc8492602d18f9d086b809f9a0fe390023aa7d60686d24fda75a4ffe6c7e3f198a267ab62ba03ba03c9930f51e6864d176d5e060f53e42a38d046d08719856f19a5786c698fa4158997423158830e32036520107f91078b218023a945cf91e0cd75b647166c5cbb112da7560f8b1d2db0a4926457bd1beda44bcb4f5f0e1208cb4bcdd12bcfd6044ed9746e07060ca1ae7ead11964ebaf2149f4e2886d29671cd2a0230bf8d4214b05fb009d2ed5613a3690d19869b9fac6fe01675654f653b72ed68620df904a92ffd03044f13d2092ed4dc594cab56463fc84cc7892a832a7689694c72934188449c7b278cb50b423220bd25673ff7a010b88d14c4cee5ede6f55182f9adeaae014cff5eef8ebdf14e6d8a02a880fde0bd3fcce3d1826be0252aad774eb448f7f2fceec99eec2f0ba388a545034f6ad1c08b7defd46490a8f64602eeb74749c60a8c7b312667a9bae14950c2b8ed99a1b400a4c84cb3f9b4176033ec6d052ab8d858708350f9f295daace4d92b64f89038d1100fc1a538322cf1b559249e848ac4fd8e4ba2991d0875a388a0d9edf3cc8fa755f59f772d0d88a5bebd24280faae1973b9e69bc0731e2946c4a5a243d4f2068204b3e7f84224ecf6cb20b0abc5a6718c2e9b3f3f5a9e588609368b04329360d30121be6313e398a12c1fe353da548ae7a60f5196b7e969dad7637d0d9f610805267b241417ea9a4948fe3f322cae454c52a795d556349d4ccd4ccecbcaed7294a9b1f87290c9f264edbaca207926491689c49fcfed852c318357a80289dabddd2740ce958b551faf0f7ac1d01c09702d9395d5d327923a323cf6c7a612938b70987d6b264cc6fe39e1a1b0dfcaa43c296fe34a07674d8da5eb721619c405a3b383f35637ea70b2f0fc234950fc355ba4f12710d52b9c087f3a9889fad78ec78bfce3d518bb16e9fd49526cc60fda203d318a92c03b934e607343cded471a87fae209a6a5d9041cf5383e33c4875254fdb0633c7b680a548e24e5709483ef3a65173d1c3e9c50168b16b7c24929aeccace534eae84c5a9bbea264072bd7f885f398c00256cf2883e1d8482134b34e9e1f4606bfe43e32b7d2cc467c9d51f88f670ac0de1cbb84a5543a3ef9ba3ca8602e76eb9587914bc44b480474fbcd03e630014fa137056385e851209ef2c949fea38cdd47381b0c7f3f2c41861ea1336a5e4d98ce5e6fe34e89c116b9ffafa6dd7faf34ac2d1e9b0e329b09a1067dcc418e164f4e0412a615225025dd77a9e727f755c2766605651c1ced23e73a315c99b621da9248d2738a061a1ab4f03e5d875dd3613d3e4d326fe2e00796cfeb4b7c405a6d3869317bc9cc02ca0bdb519650ba29252de68a572c1ad95a73c9c5bae857f5260e33631f9d248a822c0adc728c1c0223cfdac782fab8b94313aa799d57528c4d1334f6e630ef380a5b20720640cd3fcfd16f51a5b74dc45632a78990905d4f6d7720d393802767dfb676b890fdcf57fd019b4cbafd61a1fce3cad6c6e7353911b9d6a07fb0ee9324355d50aa306f9f1d10cdc20923f1c3789d3b0f7841140ae37cf7d55bbe12ba2634472db9e069a93c82d4bd4f766b6dd56221489fee43ec98e066ef6958523237fb399afd41d8a4a16704a09125b116c4f025ba0e2542dd74ad67572c44f11bae89d71799d648cad3de08004a9f30b874eebd9cb1ed536c3450af509354b4fbc25e1919c83f1dedbbcba72f4e511ceef588092f0609907b076ef85cf8436a9333b90ac3ac62040ab637f1a611f1dc9001b74d91406765e5fc820224f8104db0dc193645c56a49abee7279d76af70f823ff7d0dfd63d94adda2fe7e58afd8d3809e51f64c9e2b7c0b3dff8725a1d6ae8eece7534bc872db98c27d0639c5527992c531b561656a27ada9de5c51a9332b9b795aeadfc551905345f7d90f8ae6a2fa2b17aca5c2c4d1fc53f354b00c44b6300016b9baebec926cb4b391558ea22fea73a2b2b8a6a41b6e8e5ec1c31c53843cbe371efe377a23e2012401663dc4eac5048d329ac5a09eb26e940254a06f5d8af69ff0f7972feaeafc78bec1f18f47cea012c6eec13225e49c2dfd821445868d2e4577e9f192be55b5c22fe8121b8105c669375cdb2c24f29c03a0d091c0e90a286e778eb595460bf161727a9831e69cadfc3dbcef270df8158c9ae5615c635681cd8bbeb66287df72437cacf33e4d04f417312b8c0206f8579a90a1729c2dccb966d07bbb6a7f0f57f9a3cec158ceb2eb877cacf336e38f09631d6e4273a75468797eac026b740d46252be96e6bc7c9a6e4ed009c432efe191981fc7148945d4b2d7c92652ce2db59e5e14503cf795eac21b45fac9b0e8e75a3a7e748312e9a704237bb12a9dce1431c84b350bb26fc7168c18ca13ce307f4ccbcafac0f0df6f1e17fade9a27a6268842db541858d3e3b822fc3af920ea45b070112140b0d3f396780c2341b94cec2818e824f6d5e7278b722405d977f3c890b7a6f215c508d7f61b56e0dc74d4b8cbb7f9b82c2e07eee7010126ae11621cffecd709ee08080308b20d86f82348879044f26ec1d8a14388b22e275a7a5bea464f4d84d985635a923f67650bef15f94f3b963a5302c7600ba45c08d14b5fee21d68d3e264aca6c30fdd96264414e915310c5d7b1bebcbde92d0f58d368086fd060d06918216bf25e9223b9777ef7ea53536b41adc300a4ba73295f77a4b5b4c9a8784d91ca7774c7e19b5c4ec7d2e9cfb402820329378ba7a251ed245f3226481a808a701825b9ab8d22f6e5481263b37b8476436538a6d2013433f024f008d7e8787acfccef6388caccb05c9af6f2ae064e7e40d483c6fe48ba08ad3e2a40479ce93782ee133f56dff7bdbb8cd281a260598d9b5de60cf3fbfc958d0dc5f936baa875b9992db9291c77056c6e24acb28b57caa6c679a2f02821208446250408698a5d1a0b016422b9e2a16eac05a6cb09dc5d22b7352d5d47c4da8392f935759b2910d0f1671e630725d304215893c70749a509dc57378c03f7a59cf1144f1939ea93f7c31875d42a5997dc995411abd1ebc7bb897606db81c8ab37d71b54392d08e2106b66af6037b7c16b199db406663774a5c2e5c5b9ba2cb404787964449d90d7a02a4b00bd6d09897260d9176b50f2eaa86f77d29638b95f954a165368ababaa316571967d26fc72ad40e4648c4406d848c49cb09c233e06500503e4e8416a68192405553c36a2b0aeaa088fe4897b148e4b4149988917ca3d06fc8f0af8938b89bbb8894bc62417bc08642bd2be7493b547c4aa8249642e6c22bae1a0f20790bf8490f0b4188e08669a02318df951036969469628fb3ad3dc165934b0298566609d74a6e39cd46af8cc1642e1c5e7867908814882d40934a721121fa2d6fc37f5acc2e82d0deba67e4da80c81f11456d17c367916cd645eca50925bfb320a9fb25c5f3c3cf5ece831a49655e9414d3f538dd676d05c2d7a6b884b6940c15e99315df3211c6841a2120805e264fe5ff8102527ea329aefeb953f81034abec4b2d74f2815d0f94126a134ab3446b205126921ca0395d52f12674b3d74d47cb1a6c6aa2080c84874c3ae7a0869d5905facb7528e01ae176f78e65516d7ee0730ce4359bab6dd280fdbcd19e1da155116d7c2cd892746bb03bb0133560ef0a16bb33006f26ce40e5850d2769e414840cab9c34809114802006fd30edee25eef9531fd25a8307aa22940e8dbc72b6ae4077f917251dc55b7b91fc0a7b2debb6cef1a7865410854eb25d2011a987aa3fa58ac0377bf4e93d3f2baa2ba5def31ae0adb40c5415dbbcef843f01d320fbb91d1e9b728c11424299140850f7889e8363790912674fcf55cd4e566f299c1aa42826988f16e13f1baf7974941404f60c44d4570e81f5af8775a431fb3387ecd46e6791e7de370fb9f181e320d97b032302bb762f097ac3d5c55700307024e2c234894c5fb27cda0e7328e56eaeb156e613cb2a806d3e13682ae2443f7aa84e34c9653e17cc757e3cea15f5817c5f8bd8f8847a1a63bdd92b45c2dda94403e61ff2bba32ba416c9c2efa1e46c4f01feaf059040877fa99e80fd6848320ddea18ac7c54f01e0e5f7f553f733e5743979100ac1213c831db8bf6290b65dfbe49b2637f9c6cc678951c52f6afca9ab9e5853b28e3788cc644d4c1625edfa47352d73c675a85c4f0e6b259bf559bfcd858214d705424a164389fc2c960e4b7c91565e74a56590cf8a1b55517707cdaacc1ac2b4a1ffd11fad163cef9697e1e180692bb41b0d003f764548cee85cf4c56c9298107e77f3395f3beb80a049af59a7d635e2bbbe384a273d8a3231151ea0229c85e69aef7b0b30f004c00d414b99e13ccd42e2dad9c35b3b19a7c845a43a666116704426a0786a019863b716afb5a9fc2c1391fd82d258af9048408fe000b4f87e69642ea57dca90986cc194f31eb06fe995fb4ccdd18261fec22e30226fe3f726cf73e86b8acc58625308b19de74c41162b6389a56ffa855420f945226f7ac1f8151f4aaa792bd9d9ea6a09ed01f8fb884a18c46fa66f4ab3d987826fe241453c11270e778235c75cef8c04c733e6b0d98428cf56cce1b185ef9d42567020607b339fff12ededf6e1f6c1509a6b3e6809fb96fbbd4096f67422204303f800ae0ed11ef118731f2b8b6b7575ca69deb47e05278e4cd25f9e4ee45761bfecd8237e881354d53285a16612e6a7160bee99e6f1b3e5d34bd2df1b954097635b82e2f23668b0e028e431b2011af91ea0b19488dd77692e0c3fca39e10530dcf59db6c58b62fd9e128de324275b8a1a84dbb3863c52e77b4048d589d1fcea216f697714299de96db4cd48700a2ae95d5478aac090d5f945e9a1166b97a624ae787c3bd4606c3c48b62868db530b979bfc274e42c1919c821a722995bbfcbeca890cf84e417db42703b8bf1e567f32849804bd34af33237aa00b61c8684153a1a332cfd9290189175d78bb672ad273be2459a43a8e8c0c90a6d5ee19d3743b772fc966c6e61d61ccabdb252acc46e40742dfa79261536b6748f61287686210cf1f757bfdeeacfdf206101a228e86ae160798c3b4d990e9687cfab10c6d171f9416649ad96494d43e467c226ef23b98c0a58fe22fdb9b000e156a4bce705bbb102627bfcab3dd3485b44eb70f26c6424d3f3281081338076be7794c9b30ffc49da95b1555211ff88b71b29ddea0820ae71f6d7433c57ec0fe526437161025df7952c97414a93f80d139c88249b9217ad6ba18adbc06878d28c8a71800c4d70a044da53a301ec09683e42d2e65e1c3759932830165197b6a498d6d5343453ea2eb8c47b1c665f36bfaf33c43d5590e553ef6d0a7d2a9fbc47b0425a55949847a7418fa91dbea878ec84590cf73f1c44a0002637f7e991c82bf19a2337e1ad7c9e20f326fe28523c2f182c94594b120f1aa605f48b21a290492f9d44da009c52caa9359fbb0feb7a42a22d717d4d4b5afa57e8dbc3b3ea4ff4824eb7cfa311a6883fafdfec1a2eceb1a20c4f945395e1498ad03c83a19fcc83f3c5a919b87fc812a58c1a837020c23abcd89fa30719f01c6e3df99d0bf593eecd38787e12199a37943ae1d0a8a7fe1e1ed05be529e522c78b8a0fdc7eb19d862c97f3e6e6006e8b955cf68d019fff379a3057c31cc3e7ac877a45a49baa3329cc60bfd8ffa10a3604b44d21698295c52664474cc35d0e7f853f56807a4a633ce2b475cb598300038f17212a7f53707a61ce246ed7142b5ca0a6628d57380d232cff52037f7eb6b1b4b9e56efdfd4da2cf3271e3c1fd20524ac301f9b5dad967c7a1acf65142399a4295005af4371b35f03caa30f2adca243fea4e8696dfa7d5210847bbebb511f15009d8f6068908a8cb9c64a70a86a953bd8171ba5630bf55e2929f6a85503e6899328417df834cce348935bf4f01a2edd0e3d83ed8412f3a83a4518f1e8e0d4c048c101c6742c4767b53e3f5b3e744b3b80a9d6d9bed320876fe41cf943637ad7dc0f54c4cfce55174d2fc0bdd2516fcd64326a0b0ed20ae66a6ba69de25ed0a96e7cbf50c58a86f9149b790165c4572034d3c14cf9ad36936744601c2409dc8d67cbaeb21e0dd9d05016b31567159cab9f367fc305f2018d009432001bbd1e4a44a9e3cc94e33d7d40ac947be8e5169584315a314dd34e152781e6c392a82a344e3865835cbad66d260a6b1ac84dfe78f2dade66c3da7898685044aacdcb0b88d0eccee3f85c1cbd96d7a2515132982b391de4f30e7f7ce5fc1b7b05ad021008098ced907ec8389c16ec78727ef5c698df90dcbed00e106211f9998941a01d8858885165244cc52ab04fb5d99271dd0420a209b036012a9f5505ff5ec5c211afe2ce9465080ce2d1351c823cb0ef13142e6049c924080138c670509d5bbb4e5be10667a84095d88dff83a2a261d9745b14a02fdd437469f5072ca3fcc4ce852733a825eb0dda502104630efde941f523652f392b592ff61ff3e877fb1ea73082de45252fd4927b6808daa866e6c8e642bc898b767a91be1623dd952541ee688d83149533351a216cf61392eea165f9c5eb790071324e8269bdacfa6c52f710339f034a71a1020beecceeeb8a75349171e2676f0d6dd4110a045b9e577da25c1952b8d7a3763b153dcbae5160ea1885c0ed21834e5a5183f642094abc114d78ecb2cb7ea9d1729c393c9790f8f485f7f93ccd2b4ded7275530032444a7c68c73f74b2d1b1cb1a5256c4707a004dd8ae1c9658374f49398d7cb54e1bf854cf5e30217861a0282eea85ba895ff6c3b7aa59b46008374027c70ec6e0e6464f0b414880d053ee99949862793d35ca8e8f829b3056abdcb65b33154f9a7cec90b045d2ff4499e066427a5b423eea192229df37ea965e58badbe2cf8997925cb775d26fcaa912e6fa0a1c5c93ebe7210686d100429b39c42a32bacfe2cd3ffb2085866c9a3d56046d026dd4fa2e3bd28bb1fb951a32b92489d9dd446702d9925fe5c2b6367f572e9b4e3b4d88265ccbe1927bff0231d4059c3122d6e2a6b223e9f6a0aacc1a88dfdd11881bbceef3ded9c47ec3100742815084800f79cc61a7a9ff9f3615c7fd59318460029b1daae136b49a87605bd236c3ea13d01759344c871a8c93ac2895c6fac8ad276ded7932e8bfc3a417e0ca1e612f131600e358aa5831a89455a6e84c7333a723721fa6f2c612ba6b183845de82dfa8217ed67aedf90d4ed86cfea0ff1aa1b5abc8a653f253b17d6f1bbb9f7498809baeb2ea9f5db59c5df674cccb6954889927065b6ce6af9e43cb2a88d5c8984aab9a97fe3f4524f786d3898c0e2a990c64b4daf773689ac55f7defb5441031b8acecb94c589727b1f3336dc021eb923614d95664da98b835ec477e8025f19cd3ce3738f49e47925f8dd60c16373bda350f1ec72bcc0398a895b2ad82c0d0c5515813015f84777439178f3c684dfec045f7500eb0a4ed87750bb2569cddc83a8a35499a892c8bddf7540cb8b627ad9f89cb93d4c6cacef100d908365d453c20e8510b6cc8afc6a8ca78fcdb10e9c60450fac3b3edcee9805669eeeb05cbd7d76f20513965c28850789cdd496bf589f3ac067547f66224fd52950cae6078d330216f1a3142a7a982d59935a5657a1eef271b31cb2512bebb9c50308e497ce889d19b088985edd3485a94b8685b4d07d5054c527e3775aeaf821c9726b9343ca36efba39302a2f77ea7bbcc1e747bfa8516ece7d53545db03fa8276eda115251f3eaa3cc3069536e594030182afa490f4dc22c3bf549549c96bacb1251bfdc596275fec7fbc9112890fc987661bc01e76a31055ed2a249c151e5f7fc5078e01269a3b41089cf0ff00cb3327364cb8b5d996412c4b9d22f6934bd9d997db401e474762bdcb1afaed39e474693e7a16c3cf009be2f67e2626ecdff682affd2a800c017fa59811dfccd88b532c46733c2e6919865510b29642eccbc392c4d6d7944a8182ea70ba68efd902158843be77420f8d5c5dc9d1021e7a510d0c9b3f2b8f30654439f43d5a1de1b104aa6b9e90258b2deb75f7468747e70d24b462cdf522d997c47f94c38e6d760de9b68e2ab0693cbd13a58c39ed546214b1e30cab582611b67505e39bc11816890fc5a6a8e4df5e9130baea70a60792d98027326fa181a34c2323506167dec2b128db6496032568696c89213f5330dfe109e70c69d2439a3338841a69d305f521433b3ce42fae85fcece6323cefde6423bab088f07532d0b72b804e995acef2944a2199ff13b3a968f82a6c07c9f645aa171807496d6d043935efa314765083869d13d24fe6cd98b86b0ddd27300be59fdffd2d86792b16b67a950fe90f2828c2efa2bd32b1361c77538302181f60ee9e57c16754dcdb3a0bb8a2ea60c644206b1584a16cb18648eca0235ec0be5c23de53305916918e4effa039eaf05cc3cc3297f581769190b9291c0f24c97eda44abab30de8ebacedceaa5a2611b53ee100634a4051271e3247cd48218cfe1358b015a0f014932ef39e27b1b4b1ed307b5fd4d4945b6c85402b6f8d1394c51074754526694eeaed06af377899a0a07701d325b8d51f6f166d7453583114777cb41dcaf0b8c7dd8abc1fd41da7baf580510246c231bbf26df792a552acb9e63a3e6d8f67a89dc106c8003a53ad831d056e0b965b23bee73b875919b18033db5994c9007d310a2d8d5198b5e3437aa24852de7e95c3f6452bf6f7fb58a5e279a0a198253571cf1634444b4786c80f6d7a155ff5c76a527d8547c3814608179906cb426d3e4ff7c5230574b0a6ca624d1679082f31b63a0abf96ffc515144bd4423c165506f3dde8c3bfae861c55c82624d87189d90afa844fb464b52f57739a3c34c8c444a03fac497b8e53650bf160f40b49255b2b8ab8f56c594a040cb0fb124c12a9a3d81f1f715cf15238a86275d3f792f73f5dc63961615109a30579e48a604a9cf28c6bab3af25691c7e2f67054fafbef839c5cd55d648390c117a760759e8ec24af50bdadb52cc6a03c0e57bc6a556358aceecc4474d58d5443baa07a3a13e7e40d4cd13fd0255abe42e970ba3a739cae6280f429fdf3f3b42083762cbf677b5d01fc03ca3b75977411e1bae81b06ed65530d5a1f3bfbf8b2e21d8b78b833f2840b4208f965f8b2f434b6a4a5f1f686381c899ff36359976f33cfa5052063c59b8cf74302325f9dd855efa9ab31b2edd9eb5e1dc22ab6f88d5d1592e308766863c899ec8d5e68c54a648727ad76f8dc7a6779251c8cd88fbf48a4845889d24d438420f59c7309a64e3f36227dafd3c7b594a173250441333e4f4a529e22ac151950a1592077fc3fd4fd14291abe14ea4cf379d137bdad85b608d8cf65f71bf10d54d0558bf6b68d3b1a35c12a07aa6d9c7930e2d21ac92b1ee1ca8f84c6454c00b6c2142aec197ae9133dfd165e7ef3f06de890994fcedd47bb64a1d22ea76b0a826f5a1b627c62d8dc2675d39567ce6942aee25e1fc511073cf5c7632363a80aa23e21960fec0f7007669fbf9fdaaf03ef6efe614c7fa686d5b21bc4a7958dcb4eb9f3a81eea9e1d47b27502d8424f7c17c6a86728c90dd1ea62afbbab93df740c9328748a007c425e59b0ec80afb6add2ae7374a4a2c16cec17287d77a3c1700ce04ad6626a24925736996fe8b06c4e20e59d18c425e5860483c64c87d94eb3ffa6bd5993d9d903c286620a0b002212508778e808cf0640b72255d3681379f281cbceb751a9452dc82c8b7c408d3168b283aabeff78522874769f1676ed7b474582ca36d2871c735373e53f6a81632553481a81f6bb2a940a7fcb416f7f580427869801fd49c5db874b46192ee58241233213954a77f7b3aa0b1b883dfbae8fbfb8a0ff64ad5b79ba5bf4880b5a35045ad092d6de0daba72a1a6e9629e9cc6f2f4d859b7cf09a3330c724dc0215b78b5ce09f11db2712a52d75b52c9b82db7e3628ab06dab95b4c755bf4245fe723c1a0e21688dc485f2261a2d8d1d2a87b4cb6fe1e5b88985e06a014737a7b572168ae0d0f9d3a3c647b47457bcdd21f777614f23e0812a410063882164c51a2575661b2f82f019f0a1683724147f2d57931458cda5f0dfd69673ea6cfafed3c8c536da86c42e63b1cc2efafb8a20aa51b8becdb7792f5977c01141b289a8c8c50e35226ef2742bd1a9402b93a394c4e5761a71e6c740473e94d3863abfab19887a250815d6b54de8598f2926be9f34004b33b5aaef41cebf09989070b218d1a831fcefcf9d28d557d53e84196122e184f1c134e8df7eedb8d169b6d7dce0425c548d099e7392c29d4edac69ed05d4ad0c77c6402e95330248a7a16510e7cbf5b14f6d6877d0736a27a6c9d4be83a41f56aa410f91bdea6c108f94f502ea1c5e6e5c3052b29a0eaaf1daadbad0e54da8cbb164512553368d86ba7016425bf752d21f627adf9a5319ce84744a9e7573491a867a20c7300862c821b60490c8a09ad5801b54502ba01fd6b0477a2f1d91609fd061b1d676b72db7943225990214070b079506fc34ac9aef7da8fafadd5d391aea5cffe8ef51d69aa48b9e45ad37372f41a89886eaac923a5b4dd5ca137ba064d04829538e4d29a532f3fbbabb6f9be4a194524a296516b38ab7747686524a29a5d4da54ea6f6e52f022be82f9d936332ac7715ffdac0c41935a6badb5d62f21deda2daeb5d6fadb77db17eac80cc020827c24a9b00333d659654052af9f88d45ac1241c3765091fddad7bdb9adc90e016704167c78995278c146bc2d32343a1e8c80a52b05294b243462872e3adffff11da966cdbb66ddbb61529a285ddfe49d3ff3bb76d072623a74fe9ab461082822988c8674ca3a6a06685262dae902988524a4d405c18e2a350604313d0f50732557193510aa4b7d73c52a5baa951f9edabf2160a447d7ab9c1867fdd65476789a24ff33472ced09e07033333d33c76d04492524a29a5d4f3606645703cb16d52cbb66ddbb66d9bd778379ab061cd75b609b2478aa0b0bd3f099cb36d5bec6e77afd58aeeb76d05d4e3569110c65bf65708c462dcc722481f573ee0c795df270a7eac921c0dc1300277be531006ee91543f11a11c073edbc80fbd567f53aa06514a29a5947a95a3de57c4c786349655302d5ce9b960b9af229131f8043d8f7966189dcbcee144641b391d8c427976aad7dc6cb56d5b210626384db8c649ac25b6c373fd37565823640424e0d46cdbb6795c8001d4d60af557f0168e571c9cda0d1b80e3b5e27060651ba981cb5df95e18c39d9e4a4645c71fdfbda547f6d5eda2141b4ed98d1f656c13173061b3c75791bfdb7fcabc157ff6786bc2a24f9e56b1b5a9d447d34f5167d9728b051da818620c1c68296202026180e1f3c509a474d1c5abb3dce22fa0702223e389275a102521810b68404039e20a1a96b0cccf423acbfc29ae1ca4e3e8ccec52b9940e7e171729e5494e1e0634ac411d1960ec2b2943ec46a31587300bb9aa48790dde6c1f4eab62163c271d76901104373837236411e3b2b86133c3f33c150d8cf578041c12a20793ea8147a33dd47a406b4ab466c6ac6d891e94a406179c6007319894e0062a6465149106131a133e5e1ce9408e11d90c1e78e522450407ad40d68ee864165a57b30137ab3518ccda1393cbe82c230829017a8284162d4b29f081891038c103252490012cbc51a2c154aac16deff29012144a4bd4e895bf8ee338cbecf2e339d14929a594524a96b38d410ea62000c4a42c8b1b9c82b2d87244951a31608401821d2c79e2c38465021483da8e114436083a61d1496e54ab79493532b03829d9945c10b948b34f23a448ab8800810c114a41d41258797948c9071cace9f290520e429466c021c76d306ca1c89022658c41c613d6e5f2d0185f80635cf900cc1254188de10410d65e1e1a8305b53186e0a28ca1439533a658eff25096307686b21cdd30557518ca5283542a3594c54aea53333f944589d4509628374c1d65d161a3c2d6cb43596a008185c982853d79c14db1a71acde270a2f6408c29b74211431634a4080aa957759787c4f0e18637b42446e4c08b2c4e7ac0a4e7888e08349e0881183b94d102317cd24d8ee04a949871458fd095a23192d83112a28ca22486803511103b64921838742e675c5fba81658ecd1c5d89c4020b97150b19caea51ce5814514411451451c4e80ea54635538d7033bb9949cd52343ffb999573460e1224480fb17dc887da7dc8875cfa900fc9e93e34a913e1528e707343020e8e9c4ef35fa352d5289f48cdadceba3916b1f6e654ce29756061e387b27ad2dddd39666636a1a8938e694c5c9db4ca6645af4541982db659a6cbdf994ede0d5b6c712386d44929a574296df0603be6fa8c77ce3975689c161b5fb294524abf15903932376466661d57aee8b8c2a1a1e30a0f2d382d3aae7068986630cdc0a1a1030bd30c3aae70687068e8c042c715ab057368b8bbcbc9a161e33b333b8ff49f2ba54c794636eab8625d07169c9619b08b18e7c4c1dd1d8d21df82552c4d9bdc24686ddc40636edddcd4f1e4ea142fd6c27cf145910dae64518bb2769f214ddce95674d24f789c38891dab410db0e831795c8e3d9adee0c45c07ad8d2635e6facc65154dadde0e6e642e7f8fe91da5074977281c14ce879375ed524e97735229ebcad18e3ba14ea8971a366038048b63078f1e4d9bf96a66e4abaef5d0d1410dd440ff5faaa9f48fc79c93c3070e293e3e3437269689d4505ad632e61c981f1c941f9ccfedfff1e36402bd11e4646c336b5573566e7333af0784ea821b4e244ed63db5797860fe83e3bacc5ad5ff7944a00f1f27221e110d006a70b2a5245f4991c423c993754addaa454547473b7a67c7cca9633e542f5890906666647eacec9191d144928959ad02200001d404c02516d56a312a27379c481e276b2c8d14adb4aa7f1667d38b8a8e8eb06099409148c729d25c640210408d8d47d4aa667677f79a470bc14556e3d1a61211935b749b8fbc270af17815a8ab9948de9d48dc177da20ca822718eb75ca0f4aabfa8e8e8080b96d4045d6440394ef1672604b721c66ee8d1c2a809483e783cbff7780b7cfe9efb0c2797df7960562ff178cc63cec477bcf5cfef3c5deba236eaa3466232657e0d5f73994ce1be8687edc89979f64c9ea952ca59ff6e983cff70c88f3b29fd4b31153f467e9c8a9fc9d9f050dba9c321af7f353aefe45a622eb4dccd545f545c46e08d340e90c4364c6e38a9dce833a510510408342e2f2e333a42980199ad804298ad803c983abf283446370cd2136427080feb95f45a22aa424a152ab74128c2a9d9241bba8c5c46472ea46651df5e545cde73bb5c2e239a9fd50fdb9cc0b08b8a8e3a10047bc826a5f9b91df690dd3811a16ffa587ef18505d63f970b7eac9aaf9a36130aea613d61c95850583ea62aa47c589380d07c55333ac2e232d282a32c190b4ab76e51d1d15107868d050c9dc92b290442bb41313cdce489e1c991e344c4fb1ca712e49ddf45e1f142bae2d44edc17058498da0d0bb0b35480184e0dc70829856454f4aabda8bc805e555e41587420d4ab7e25771991b003c2e742729791af5c49ae259716129898c0d7cf56270d689d89c6f3cf63cd5841ac2a2c20160fcb09ab87f58465e5364b0a161416159614203420352045408e58b20324f100fa95547d95f2afc3822434b342233a2aea590a12db69e2c4a44ac3862cc54f4c8a1f1f3e4e44384e7e51485b22dbf382df454af29511db748d88e623e5870a9077b7e05b45a8da1bbe925e492f252d3b80d080d0801001a905dda42bd42d161420342034204068204b665a7259c229c2a9cdfad4f4716f5aaaf3c78f1311ffe4fdef22dda36b04544568d6aa6ba58887a806e1015f4b4162adea204c9a78e00d8ac26326995c47dde2d12c8a6326f9e7dc1705fc1edf2bc957cd037c69e955076152c1d79215369c343b69de9a13e8c60fa7d1e5eb5fb73cea5f641c2e9ebe784d5f8cd7a2be78e5f58fce7c916d628fbfa91a8f070884a8570d02c9c23d9db3b3f1fc93b95d089e7f31777e51c0e7c01d9f15c1f34fc79d5f141e2ffdcb71bb1e3d789c8800216a55731c0702a901a1b97ae46059f4394a39677afec1dc6e04cf3f1b97fba280f03ebe290b60988f9f5f142634ffe325084696609511a0761901a11909f25507dddaed40f85e3fe0d716665243854d81010624d6b9af4125f33020a977e68d0479cb08ad575b3827e6fb5f69704e0a0dced1f13ae36506e7d8f8fe57199c03c33937befff503cea9f1fd2f323847c6079c33a3c439f2958573660e170db0f34c6edfc0c00f83d470fb83c4fa057e7ff7e39b423d9700210bf170fb8dd09edcfe16925941f4e393376eb8fd3038dc7e1b39dc7e1c4d6e7f8e0fdc7e1d3adcfed40eb73f86e7c7e74368f886d4f00db14168e7c7d730fa0d99816dfab96f8812b659c2364cd8e6c71761311fb34d949d1bd8f7a92fca0e0eecfb1c38c01b351ee6cb80bd35dec69781d4ad0146f9c0213b2ce4030b0171fb87f0c004e897ff01c2376487613fbe0dd6e37b0187c4706adeba4d24e1d42eedceaed0edb94faeec42d9beeb6364096e82c80850b36e152e236f5d294d5469828acbe895048476cac2862ce4e3e39b404d80f83c827e8462fea1eefca2d0bca4018dd07c550303db4837c459f2c1e3c349f2553ff8bd8c5e4848de7afdf7a2bdacbc66a6ef257b41f1be97cf4bca19fc7a65c1aaf6d68bca4be855e5f6fbb88cfa7b7c2e231752ab5c585c4ab71fc70901a9bb81af9f56f1781517405e4aaffe9796d7189c638513570c7619097a2519216a23b4667daea35ef5eb3811a9a0cb28c9862f97d1ed7f2535ab7eff4be9b5e4f271d55c52ba75855e4938b557124eed9584537b25e1d45e49afa4daedbf71632766277532a14d73e3ec8d1d9f1eb689bf7df13dd393a0208608ba374e44eadf80399570e376e00d4ac386afef460ce664426fdcc700a1f1b04dfcb819a18593871bbf670f375a41f38fc3f1fcab5d013cffb6eb31e7785d00687c80df943970b8bca30b6a66871546a624325d011b624cc658e3b0d00ba6c3e03227fd60678b516069e2073bdc7e09fc200602abba3c4486d1ad7179880c2aac14afe294bdb9b92fb87067e8c20b31dc59bdc8cc71a2429dfb82ce9d2fa49f6c4a78881ca3e4127494524a29a534bc92295ec967956c16adefb14a3efd2aab6448813b298cbd94e3bea09dfcfcf6d62d5b6edbb66dbd7d914fe8c00d3b2041669b49673d81cb9f4845a5ba21a1c891282b520559a1718d46262294288b3f2a0aaa624fb382a2113fd49a4afdab54373738382e38d86d0b827bb96ddbb66ddbc67172cb962d5b240722e9bb85fb2a27757729a5c934036a85d3a8dc695434aa27524ac62161dbb60de7a64685b36ddb06aa54394a60e30e3accb021cf8e7cdc817378437a9aa7914f23e5d33c0d16293d5ec9e795bce19514c22b5904851458c52af9a10b08f02ea52fe8dc49e5868dc7dd9f344d9431766ce9524a791b8cb2cd8d866ddbb66ddb36cfd47dd76d6fa2946eddf6264a3713fd6e33756192bb71dbc6719ce7d51ffc7abbbbbbbb4b6e4a9d051d4bde3e6c233f66065558df6e7c25678f11760343ebad0974e32dd4cb94957126e52651e00b90ed0f7dce6dabb5d65addebb651d063bed3aa1d1b7acc63dd9232f5baf3c8f71ef91e93ef3b46a63e4d11b7ef42d9f2db3ec91f913a99bedce28dccd151745ea671217ecaf9b5e30f94c2ca671618f45ae5206c611f94810d6140c9739af0b2f2d7cc1294334bd8d05e30ac6c30acb9fc3d822cbf0eb82863d1e56004abbbf03db1b8eaaf358554db05afd5637cf27ab03ed125635184fe4d09dbf48726b9a488db2f63d1356b512ae19c79658b57dc709bc9257436f316b5825797b67901c636ebe2f636a3db6c1af1e0f616bb621a45174583af700edda2856da8b0219d69b9fd74e6ad5aaded8f7476fb633a076e21e155fc0bb0084bb86d6096fc38434acb8d1dbb6028b9fdf139bae2e57fca4edc3036818105d8a685f6867134e07fa962656a8c31be4de96099266ee08c9d1bbff2193d37bef42e0a1dd3c8fc60f93bd4910d8a1fe511fa498ee8585f4546bd70ab1a944100cf849ac830a06e320c30d1373dc3909cfafb63c141191370dc7e1cb75998a08c09fdf3fb2798819e0935c171fde3d91354ae0b382ebfe9936180e701d37b4f7ffb0df4c0f6f419c6a715badf4099231bf71b051b680593e9292873847efd0aead4a71ed83fbe4281a5db17630aa68f61dcf6318c7e0c0b3b7ed7da68b62cc393718e0be7c497efb2b1cb348a488176d8a6fb869e289a87db1f2392af5037e60336d268346bf448deaa499c2306bb260958849eb231b8354dc0abfe9b1b0108c0c7ec092312cbc086f323ad5fb4a7dad4a4710e6af6005570f6789e0a6ce85a74d2fc7109e42dd3cb252c639c3303bb8cb8d5d15c0b1fc8d86d130c617bb82d73482dd9a446c1c086adf4b2892a45ac8226c1abbe9702e9e081edbfcc3671b2a33a6936acdb5c93165d0eb62c8a4003ce896097806dfa5fd8b6a411c1181a6812a5794bce96e055bfec6447eb9ea853582b6e3fb50135f2810a0dab2045fa28108db162e54c22cdbca552fdbb44924857cee40ce88629a6cdb0c0861448dacb51703183db4f81bce5d1703c3541aaba61cb6893e693e6b00a361336a440b73fa4402f40367ee8c96a4ce938041b7f0496524ae9fe85733a818306352b68a88207456c8939020921967882c3123da08e6cd8581a0be7f49539d275a0cc11efbbef92c05c3e89cc91ee4f7f4a024b028beff2f50c0516250384adf9981d5b7365fa3d7fd42781291de9de03754edfbd7f47bc47813aa8f7fea589a46e0d31e2a7577c871801d42a4ed92c2cea3b7defc4867f82751fc39abb32fe422bd872f95402774d88b3db495886b09f82b7921821832aaa6812459420ca80c55fc15b310011841742ec50441232587c2145e2c7e0606fbc25e40b61ae7f57a46fdf7eaea66f18106c5003836e9389fbead630b7bf25611ce3ae00fdb8c4af5eb531b42aeab42ad66a327d6732994ca66e53ad1d18436c49cb92d2d79abf240007d4e52978a8dc0a2e95b17443df2923c99dd8a8c2f2d052951bfa0e931dda8def4d9cc79d74c72f2fb0ada55bec208461614062afe770038b105fca8d3128dc5f0823a7e76d44288ddbd6a712e2f6aaad045518b7efe456c2060280893581613ff7150c3b8656c53e95d0df7d6b69568331d6c5f0bc54b1fc313a58b7e184edef9054c840bd2cf4d3e7ce048632c4aee9840097eb3b4bd89e71debfd154709807469a735f57c1b06948eaf5e768c6d2adf1e3c798c98ca41b5fa75931fa4e67e2aa0a1d18f67ceeab496e87134452af045d6666c324b7f95f94b0ecb2ae514ab11b6f7f642182d66b8f317a3ed8982b6cbf7c191fdbdc0e6cfcc8c423edc68e79c7ae90cea2b60a0d3b7dd7d4ab3c4d16367b37d0814e1f8a3375ded6a8282e2e28af3371b2faf6c4d6303e9540eb50d775064b64896a7ca0c6076a7c80e50e49bbfdf1a442c350dfbd20612dd0820bcdda501fc19ab76c34bacc491e9738fe00c6e5bf00bba2139913240b156441be372dc6812ae8403cd46a7b523d31283a89ae7ed2a13e9796d5544fd39e44575b892274fd27b71b15c53e9f18106116d49101e6024a59cbbc25671f946a99fca957a8691ef479156f2bd1e549b008bd04dbb41010065217490ad6b9bc2ff0963bc16da379cb612e69554a17a59c93d26dab95eb3a8f9d99bd1333f3a37889bdf8d917777777776f312c115b6144c5c6ef628cdded4e44daefe69c94d26d4b59b6a95ea5947b2ae78408c763f24c5d6789f0e93bcff34edecb11f68442752e2e2e2722fc9db52722d6ba58d4c9bebc586badd5818ab7ebbe783bfbc5db39ca7339bdd03161b4e522e18f17753a2175198c41e20e25c4dbb3c118c4830b1bf64f528c31886d667e08e29303b837813236653dd001d3d710612650e6551516ef178931723237301c5fc58fef92c64ffcfef1da3bbae8a275b961ebf25cab9c3d41d99f94dd5ff8606b5c8662270b0d7879288b1b94e1e322afa46e14227eb5d78399b94e73bd8669371c810416f2a223c632801bb2d275d6129910dd3036a941847254952871fdad92a1ebff4b82b8feaa25585cff1b26445c7f1c214ccab8fe4576ae7f0a3dd77f05092c711d0a1a68d7df85663114310c5ddfa9410a9e105c87c206a5eb50ec58c9997142b1556a78320249487cb1451361143184056c88c28314a32282b4f8010e2d40b5bb7b8ee72e7f6e90e28b48987bb2db6bd0bd80614be00b438a7dd5f43790c19a02cbd0d148c73421e5b933a5ba612314180505cea46954c4576134baf5c306b2beaa4fe3673de85bd54f02935c4c89c11836a5a6e0abfaaf33e508f7deeb4c39d2cfbdce9423ddf7d7378142de0375a61cf1de04eadc80a0ce831fdef433ccc43dc34ca00c0525d0aafa16f0557d0181fd3bf3fadc1783afeaf7e74561658e70df5566010c6352e38e4c0aa65f00c34c20034c1fc504c61e5fd5bff55d88a7593f0e14c26c09256230864523aa58010d587cc2b873eb73f53d14d8d07f6ea53cb137343aa67941c2c6165cb000dbc4fa9c2369adafd3d58f7e49603a320dcaa840bffe11fa3a533850877d55bbe85130ac042ddbf8bfb08d3fc318f6f2b30c6336c2c637ea761774bc6d1d67fcd9dd1f67cd0da86a55e8f590d5e8f4e97d4a587ebe3dc3e5a1347caeb43716c6e357c52e33ef90754c0befe048a76f97c9e8e61114d3389242f3dfa274f961188a1894cbd20737a4b9fc3e4f25b07b8cd5dbe3f7820cfd32a3352ab02dc0dc09469327dd534616875398334b6c586f0c0fec7cfa7d79cb1977f254b58ac74e3095fab1fc1b187afe1be7f89448fc3a754aa7d10f6b9985aa5ad3e95f952e87f6c618638c8aa2cb5775cd3232128a4031c3cf9cdd7084cba89896a41b72501a3b976bac908ba6a7603e6e621f875b1b0e483e2c0925a1041518bf106e7d145ad4962871c5a708c6aa3b03860dcf65eb1c377a1eccf6a96860ace7c1ccf0b83c54abd1405184e5efeffadbb18333926efc338e2ec71859fc3ce956e79cb36ed4ca3963acd269d051fa261375f9dcf37b7b7bd33fa103d7f4f40b552c98b6efde9eebbee7e24901a69f3fe9f7f673e3e24901db091db8f4b7a63255868d6f6ae91b7f34d509be046efd49b768a5a4c073d283f3e820222261438ad831e89e5872458d2228a3fb0c2ee2195ddcfe3ac5cd7179e80c2a1c15d3e7ecf96386a93be78471a6d629f5aae459a5836916dd6038c7fbbae3c70d6e7137014eb8fe7fbbf740981b77862c489792851f438658d8edfda1ecaf2f40d643526568adac5e65a712934428795c77eb1c409a49b23e7b6e6c61f69cc0fdeb18bf6f2843196e8c720ec1138578cff3ac8c314610a62918cef9b646cbab28615ada5639cc4ff92c4c49e96fdfd16d9bdba4ef45db706243e9c98ae3c565a2aca05220af4f8c2fd7c124d77df6a8b658f91c74b919dba04e20235bb5dd28233b2a94e1222165f52b3c59bd05efdae8052a0acac7c667b60941ad5eaa768730307ea79f008713a924770ab3ecaece49f9b553fa4ec1eaab2ee47b9e67b710d8d0bb9e7518e645226fec25292189422dd2aa6e79656cef297880218380be336c131d9431010c65fce39dd74b25f10205c527848ddf0f36ac9e844b0ef1ca98505b1593dc293cd2ee18a37cae334e5006013732dbf80f6ea59495cb624319e79c3efd84429270de5aeb9e1c6b6cb1a1bc31be839488ff277fb563e76ac7822e93b546fa9b651be975182ddcf822050ccc8d6254f65a657a93cb2aa58c42ba7fd031b3a46415cdcf395f4e2953335a7ae7fce4ac74878e0d705342285caf455a25e5d5b9b5552eeffc86b44a48abd86930f7de8247ec9ff82e3edd72f9e9558c748bf467b70c1d037729658f7c3227a51b90259a55699529d5bd1c61856ec7689add36057175a3f37492a793f7299ec0700237dae93d679c73f2d7cb6078c28d20aae6f26383e5d0e5879fb83b969eb0fc2e3fd2e5c725e8f2c3362eeff2c3397c79d0b8f98284ddbeab71165d15f4588c812bd97c03e3ccc11803b6912fa3ab46ecf2ab3ccfa3f4bb7e73ad3feb9c750245d7043d16455082732ae84a3ae98190648960d6944d13b04abe69faf84a3a6956f7ee9da0348bce59148351e0dbafb1d6baa4dc4709bb7d7cfa3914eff95ce64fdc89f3b44afef4711380618dac594e04abe4cb6ff7099b67a874cd5626390ad194080000000063150000201008870362b1602c89527d920f14800e709a40705838944793208851100431c8186308210400628801862853434600945c40e4f85ccceccd33e7fe5a201b216d1925b4f12c7d00471e647aac566999b60c391bc6719b0c9352e47de1036e37effbf90c42d19c8f07194cd73f2ec1dbdc3f5dca5263eeb104fc45ee5ae08921f30286254c7e61b5808cb45a0ea01c29b830123754728aa9d9acef10e11b0bd585881af8374c96a5abb7f4d5cbd7f7d5d8e3f552dcfb6a391096d2691a0b2ecd979749c033e40b0416c13bfca58b0be6f61f4e7cdd015f55d759699ba887e1033195cec140b2305880ec281096c3403034a981403de7dd56b5a6b58bc655e56d05ca92fbc4b8c20c9481d355c5ff1b9cd22868c2cdc697806e2f4e2a4b5c902df7a1e9195769da7ff219383b32237e96b41bde497c77f46452df869521c707d0e98fa14e131e2ce0e22bee7a274fa4e0c713ccaba8b287383e616001c29816c8b04a5d7134c96e555a3cb78ac061ca0f23fa1cc384e381e6ca32343c590e2f3a0a9c08b2c2a6ce312b2bea9b82968cd0ca07f573d4a81009899b09d4fff4e98b9fbd584be0bdffd442e2cfc141f99213af964f9c3e278361f9e4106af5a998430c02ae2b11945e0b23ee41f51bdca75a27469d16e8d3e6db9ca9c05944cb3d18d34323b08be7c8c67038fb3c38c46485d042a45f3395d7412a78b743f18619d2e7a9094aa48a5d03d9dc455af181307a44da54fc437caee98de1733bfb7f4b57bc869a5434e000b27c921a4a814999518af53029d6ee924ac48c6847a184ed5207267478827b24522821f3453d4993ec06bdabc6dd21813c6daa8fa404a06170af713a7b64a6fcbd307c026938149a6c1d7644a4b855f06f86ca943b93e90f9fa1c092082c4e8526d85299f97607dfad9b4a7f83d94dbf07bdf5cea0ff3013f251c18ee930ca2024d9f9aacc7d01ff4eba02bfa56eed0aed17b00dba28ca9fd4fcd73112e9d9b4820d6204db059a8ec98e865f84326e8342d2a2cb7102d68d2b37799e1fa438e71d2770f7cf1e92a7659945f515316923f00c5a7fe42615b43ed397c7c4932d947b1ecb7fd84d50f1859af6a510c8ded93e1d8b434b4face4db91541629f1ed8b7566a7713747ba15ecbd2ab6889441c3a1e7846dc3a34f14e15657fb6f1090141f42df551ed8d88dad3ff791ea2d77291f701d9340d9d4d408b15eea4b513c5ca52fc1c86c82be74a0ea10ea7c09f5e8f4878574b620592014743f76567c96c5fc0fdc88b2c6242087fcf2b838e57bbc7fdef378498cb290c866255ef3004e666d76985ec5afba5ef980f01943459aafea38bda14bf4856f0df3278637e216a750d65e166514b9440db43319546517dc1fe6e949688ae4f5ffebeec072972c9caa6de087c614b9803ddc8dca69a01339a83b52e051e3f3bb8f6ddfdf819395f17ff0b321f2d049beff05998cb7c302ead7c019717d3cd3239d4eeb3095cb43ca2d9ca433b33dde55985111c2ab28c08fdd6d14da0e71bc2bacbbd47357c564b337d9e669938dd7369606af530c873d6a9db4e75f44be33a0cfd026982f65bc695d2b98758fc6020837d43ae93440e3995c7349d1e3963d48324c6616f955a2bacdde64e5927cc7cafe4a4637bb87fa4afc8511499059b093a086d3b7e0a58e301a0b2b9e04a5b845863b80ff455148c56eaab74f5a9f49462c20c4ca49dc69b689c603ff19ed3aa308456e582617ccc5a18ea9229d85b10281409137b12f5222b05714b3bf736dfe112861b24ed9e18580554af5e39d833ee791eabb067c041f6367005cf01f183a82b0d33dea644f56c863aa4ec0aebe3a266d4f67c357aea3e4764281131e76d7f3b2b68f1a1fd476c1681d0e26185d31be933f552fe4499ea8ba96f20a1a88410836b21fd02853a74707d46bc274066aa31e55065780e29cfd04d3cbb2afa11ede8b51220921442552ccd3f176f4d3e86db8a2937aeb89b025c43fd7c820b089e79addec88002940fa9f44d4f56a894f986645d02eac940cf3248ac53608b1a0dbd5fd7fa7bd879c9d6f02634212019d3fbddc4f93749de34d0ac2e8d6d98dafd8f24a38c14f9825cb148baa5e31808bf6fe4e5b2b00a28c31393b6c7ce5e7089b3b5409162c5278f0cba1d075f5a7684f336e6ce3d95673be25067cf44daae2d20a4a6530999e25044829ac03d106c671872cd3308abfc933fdcc069a22b2ba74f1a37859dbb68fe0b08b944653c054dd61f40468257d78f54e83720821e1d6cc8c306b566678c7e31f38fa21123ef98714c508cc682292dbc22497d844e2e0d21e6ec928961dce94e454df311b3fa8808544acd4fafe3457965054095fd6a580ac6e040a62e52bf04813f05c7d979790c58a018dc1e5e4294901754cf8a5cdc0168e03869b370befadb48b030547dcc15e99e571ca898664e2f39829c44cd07027cd16cf1621d13c6d87d98c35923029fe1e1a2b3f6d4d2fc0c65309eb251f8df5b782076d9c2b35e491cec89f8444df771ea33cc21360c0c855627a2aa3e5a65c40fe50f89b58a91a9044f06d3b5379e8c27ad876d63f04150be2e684792febc6ff30049ac7a16253f485c2473e4bf25fab5960fb61884d08552862d6b545acc480f95996481f9649e40b1455837b791ee44b3ff4fb904ce541847a7c09f2f8a6ad4b8b54ad5872e22b9d158ab3eaacaf2732aa2b6749f359d5a5d5de2468c509caa5d46cbe1148a99e2d8f83efb113d44dbf4d1e9bbd3e3ab25a7b74c0067711c734a60f437035557102024c7941f84f6bf2894a09384a465926ed9cf3d9f566a4134add1ad46c15acc8080441a6201942bb38e8d6f8ae8ad05a73369b5c717f0bc842d9d321c352f2f8c5a9c2b5ec2c2c978f6b83b41e21a68eb4f84e47f49dbd8badaeb547a1d206d678de357b6c49a3fe4d219e66f40d7dfe9db18b926f6dad4fdd4c11012926ead836d6f5f6b31ede4cf7c3b05bb2c050ad8add05217e93d58e9038c07b6b67a60a6f8f2de5de4a9819b4ac2105787fba4eaa78db6af1fbddf979bdb8b40b351d2d4634f554dd30ebd1443ea848a5d48dab889640c68fdee87c28c2789592aea724d4625ce20da9b6cccb7dcbc1f816f1c4eef7778abd551999f44cabc8d3a1a0d4ade184d0a2bd6be941143d3557e8696f5a5157bf49d586e03b6be05c3e0cc3bfd523a57e29496b5d362d587ca0dc1b24f5b62b783e489d354dc1fd48c7fc4b3001b8ade59f54a6b91303a6dcc1fc527a401c84b6a8f24e55f3560e85895032aa50ab4a5004ac3fa796a987fd5f56fd69c0556bb14442389b6eb51aa15f5b58f48289e4d2fd0a063eb2433676430be56ec457a01d8fd730510fa2aa240640b5e1007409806c04b12116a58c9c603f95e2947c285d40200b2d82d4b80ce6111dd8d237b23b3ce76279c558301db079f5d306d510f590b3479eb30720cd470cb1e8752e0d96ed3046068496265a77a9edcb8ea10a0390d19a3e8673f4ba3a0ed037460c92dcd58c44c956b931d328a49d605dcdc1f0d178e4d6905559a6cc2829d9bcb5d2e572543c8d46d05aae25ffb16dc2fc28c6ea3a9486a907b7e3501b3ea39b656463fce1c9e907238d5e11b3e4b6985fa84fa4e819d6c4946a30ae30f31894282d65dc55f45f604d33a52f70d05e69819300c7a7e832403683a8c89f34a6fc53906a2b2365cf666e5ad4a19c63bb267967d7519f7bd25e8fe86697c8f13446f694c2063c34037d08fc8d1bc2372c4320900465cab99da13a75601ced0fefdad724881843661d5a75351bf813ab66d93b50d48d82e43975399c058bd3d3266af80d40aaf7768dda4ed15460d8707bce63522c1c4b21a6568f2273f891d826e9851df8e745e86f605584906e840dec9c0cb4ceed3075b4b99eb008307de30d7aedb012f69201c0cee23d218c7abe6d07e8555b1c53a5b053ce38386dc6eb77310a432bce593b1c91a9d61f49e391300a1f8df31160408e23d9cbd1d56f0edf5984e8cb7dc71cc2a52053832d859afd24ff429986285b418becbd53f2cd95d1fa6449ce7f09a757ed924d655f151c9a1cd5d898b485e0f3bde0a128a734ecfb9628b80a6a631f6c9e07a1cc49b43de0c5f258570cc70c538c72c308738a04970525d7f41d4c5098bd0e5fb631c67b12b7d0239259d4297a4ec10465547939ba9ea38bc22312fcc99022f3f926b93d0d4a05913b87a17194489cf3f211eedda0004c22bd0f9aa328df3f7023582fdeae3c225cb818f61eed2f2a9abaccff1edb2e5d1395a002ddf7acd0f7125e645461cacd8b3af5e25444eadd425b2a7d55071cdc8d9291c5add2a7f11429b6fa948c39a2a8b50fdfdf7300ede9dfc8881d8e59f21e260eb029747aba8787a7dd04e65528a5c98d2a2799c307fc8a6503aed1d2f19381ecba37751c7ab6080f188021c447a3e4815823048e48940ff8c071770512afe586d6d01cadb99f8a6f921bcef8a3860b47eb4af15cf8c395a17d03570e2816459cc748666611166069b9920389869446df853859280c8a3eee972a8a1d70b9b21a2fd021e5c2f2f7ae70dff2288ede1d6e01857902c3c967aa25b1ffe2e8cb5c94f62859e1a5fec7e5376c1e82fb6f8a1201f75d50925d7d80b757a0b4659755cb45813dba0f90b0a75b028fb6e8aab5d70d8e7feb1a0310028208ea5169a2a4ec9d833950b4a1a0d33cdc28d7c54fb692d728309d4100d8b22df3909f2cbd40160273ff018414951bd705f5d1bed8077ad55d1c8463024c2f7c058cbd154a3dc4f601a812429ce01f2a159e64cc2450e3463f1fc66f6a9d4a0f5013e41b7d04c22fec2ac79dc74e344afa2c7dd2df60a0095eae77accef01506aefe574d4894567d06a51490320a2afa05a2fb53f368527062669374e0c58c10135cbc0b5a641f4dfde83eafbf9d20d9cde17cc16187d54e4800a442210fa872d2e0c7ece8a090889648e1645b6d079ab31d08f8c7d1fce13aeeab902ef96bc3a50150ffbad87f33910b848c6748c597a0e61d44658f8bd4e9a308e31c2c6c975a78e8d3b542e8b1df38a15df0b56b61831276e2308917a21369226a6e311b53462584614c1e1be0feb0a25280ce3f03e40ebc56f42a968cb743bca796dc355a86430148634a6c1cc083c3f443df51fd74809f16f3fc650a531720246a9f22e5650584ee0a2e16abb24b45b49e52d58f3d00f51e37889b160dc0ad42ecb4bf54048a6b4b21bd47eaf16cdcc6a3c79daefbfc86d5874aa53b78a165b08631bc78295051cac20c265678f06160f1185e2e7f4f3f3d1056a3554d0d168a4d742507f08e7293da545c4dc841005437e42816dd8df699c75a06b12bade44080ee174cc4ad0b8a7666929b6ebb99b08641f08d18800c18b62cdc4f223845326011e56509302130020d7a92da93956fd2309bb9e2c7064ce9f908f3595bf5c6c1a15368ed1ef06167c138a0287a95b9444587213e09b0af75526a7009acb9de4db4858b8dcafd42210423562c1af5931030db626eede1c626c7a29a4b64532068848f786afc0f20d00104ac9f646fa972964fbc14f928b3f9b40fc45b25b6ccad164b68785f4bc1773454e656b76caf251fa1f85f01c17a0365965781439035284e154054e04e77234e512fe538364abcbf739ba4685a48a24d480b3cd169394cc767a75de06ee4b8208e4de31ec6493a106e2c23cb60ba556fd4b2c5daa8055fe20cfeb3289201c1ba35e9670e07e101a9a227e77a4776de6238031b958cca57557737da87b4b5c36dccb3a5f1397f35b9229a46fecb8903c4feaee2a3d2b9e2a38b2aedc9145d6744136334f8e7a60d4ac864746c97aae5f897f88ada9437b9e7eb36cc7bcd60f9601bd699a9aaaaae52eeb8c5362b1abc243fd9bf8ece39aceae5e79bfee7e719245579de87416bfb25e8d05108bde6827aa03a4d1558d31f43161be03b4b347f2da60229dc2caed5b52e064570113c7e46c46e3a6c9270ed6b0e5f096ab9da3259a2052c965e7a9d2f2ca34581a72c5f7c963bea5160b23d0d6d389d6fadd4d3d89e5a704988d1a17ec1fcd081e841bec73a52563e891ecd665447fc492034b884082acdff23c2bcd490a3192c4227112929422fcbb66db6a373580ae6254d2c54b919a3c20b484b1e1bf08f82aaf12eb013c0f16c3bf65c204174371bf566e572f1b0097645004a9fc8149e4186421e7b475107b1dcf08fbae5d7b51dd50d9f18ee1ab63d637502f09900b785c0b2c9d0524678d85d48344e97f93859e8ad89f4dc5e00a9f019256754d40e8534e5fb3cbf1dc62ade935ed68fe64a36565b33f3af6cc263e7928836565db724405f22bd4125729633843f7f737e48b5e2be33387de3ec325938c1bab4b8149b0e79d33388d402c4bce35d15541d837a3db6ada62b7954d3776f8577146b5bc0d242feb740e4fa0db3b03ba11dc87545bb1b5f84df7d49d5ff4ffbfe41b7bbd88a0f8038afb6d119bb609a1a5b7cf3d1592e45f3bd489a3fc2c864ff66e73691363d47655c00e3e103d6782af68665df17686315127ab6c22f346e9328505a4c8c428ccc7e231b5f0922e7b802e8dcd901ded91f4087fb03bc177600b9e46b18b0279aa4ec4d425a0629bc29a1b8d38fcd6cf003651554ca714311f1b1554b9534a26c7dc3eac251f25da89eb71c762b834635710f23566663e9dbe597050db331a5600865e96d5fefb40beb65ba49384c4d6d0fb4f63f07a46e3f0b92a87ba00f8e24395b4bfa5f2956c8868e12ed9a5886526e813e20e99dd1dee875fde7d1599063b46296db90ebc30e48fb3d260fd8f4cd9c4a6da69e52583ff8b36298ba7d5b45e664a9597b21c16e3365581e8af3ffb9f00d4eb697024672e3a7442060b301a22792113be309c0717e801f2b858384dcedae07665f9b44f3f6881908580f61025362b0c60faaf2c90c16f85ba233ecb573969c9f96da23decfc8e3f4cbbac26cc2085256a1c47dc8ca0c320814bcb43a03f830494e987a1a2f08ab162e84c7fb1bb47ff43bbe8119aa605c132bd48b01205f86dc9f296e9cb68bf2fd17aba3ca30ea75781cfb048ce6a146c71c1f5f2d0721124395a02121722e53fa5a26319c78408211d4d0ff4a4f15e69386b19a9195d2ad888494429a1a2fad965b3dc7ada427236b6b5781b729968424786fcc6221fd348933922023c65501f235646c3347224e3c98a170111741adcff10ba7cf3dad27c8e1e794ff5e1e15925863e9943eba6fa69719bedeed157389c49d9f09564eac8f4508c8326f6fbbcdc0ba266582e9287b1124576550685d627675d657de00b6b24bcc014df7676d7a299e35bb5d76edbc659dfe47674951ec2f2d685f217df24b75ed9ae2db59f2c282d7c18f26c5c38e16e0ed5ab8a20781d8c0c249e8fc774a681924923ae23bf9f5091d11fbca37d067a55350604b857435efe9be0624917a2ab2697907f6f830c131eae552791329690686cd66edaf719806182286f02c40488669440d9bf68af9d483c9f8671a1bd83c4426dcfa6b9c821b209733e8acd8b8f1c82fe772c139cf3735cd7ba7926897052b9ef78bbba12a19cd6a651f416a2899e7811faf1e7c20e278328b7cadf41603ca6018328534e05a6adacaab18c953855700a782759e908afedbade697d29761635c244c50a75dd556a66907028884588ad472af5c324ce64226a1fb9d53170bfee5f5c5d3c6f91f1de57cd82c9bc8c520b0afe14c4a77ff921c3196d8cc4aa1c16258762f18e68ed75525b32ae39ad12fbaeddd20a129accf80b07a68197108440b92c0ba919d874c288da128a62ab8170a0920862a9b09f9c37e7e25e77442e910e211132ea957a72145bfb417078483b5b3fb3f5ae4c0b8c358c366354a9a80d91a7e816a33fe84bc5fb3ae6ed4e37455bd03022826ed91e700ba366d908ee953263be87c2a610038585faac20734204ec8282ffa31251e6fd9a738f31a2cfb461e7145b8df3b9f0a97af2d21a91b7accaa129eab332736999dbb3bedb980139a35a0d31cb761d6349d3916c538024dc405e8a99d6f88cdf13c898a70f0446ee595a49c9740c8104a832cc4ae2cd026bf6450ba372e55044e9875e0d5e7e3609bcb760388484a29d42aaf0b9507bc341c6c87a10386370e6d7967cf115b23fbe8bb4da7717aeae08c721755ad43c410f3172fbd2e36a69d2d6e917096031f2c67e9f2841e8787ec7dd2c1eb62885f2c7c8c27d4efa64864e0d9e3cd18c2287933c3fd090920ad4d5f36a199a51b2dc57374566a3e118d23077427a09efc2484c2462d34c18bd8e426ec8f2a81db0c079202143478a8e82047151b0c4795eb48012f9ba4d41156173a1fffa49dd76d0d38d7d637af9cf41159b31a212c04db708c1960d3e4b638ca4375546d51491a50de6d4c382b8a66320485f2dbd23aec5eb08e2f1ef1f060a800e784ab3ddf913213d7493764816ac0f9256b1a17ed8ac50daf80f332d62e4058141ca9af0202d0d07ab3a2226fbc65851460dfe7f697203d37e4888221c0ef544cbd19e305fe0d41ab59efc1995b0b0fcbb5c4bd057e0348f3ae12c0b6979e44fab9bb9aa7ae758809fe8194c33f174679416d1cb93c0ab5b02438744f15ace1458b439b7a48b0bb3343a309af9f1f24f3146426f36ad78face2b59e8a660c087591f94d7eb1069bf917084b72d789f53166857acb4f34113472e00c5604c47641c6d1dfd5313ecf885908137be0b71d0a6b711c5e590a4b50f55f6518a6989c477a123ee6efa90f471752b7b09de0e735eee1e473c7099c846198e977b11af151da2e3308f10b93fef040c79781c403affcc8cc17af085471a62b8719366de6384704dbda1f5fab1d0386982042f34824772526e0ed80677c3dc176b2db1440f3ae4d0ef70149dc1e8cdad20d5503211153bd4fe0f26f6ac4e7b52dbe01021f0417c08d08e823d90d0fdf8c2ca09d0629f2b75048931d2dcc562f5186ec7bb245e2232fa74580374124148c48a2cd9247f10728e1d133db777437e8db67efca2fdaf025adbf36f55bd5acb980c60816ef608746c160b2c549077d9c0f1dafa73bdd5450769058f4f7e004ee6cb1c78fe87ba84898901b01440be986fff8f4f43eb03d2fde311f586b4ab4bc79310bc3a547237bcd0007f16dc823c8e34332369a02f9058638c23436154f26442ec21094071ad9baccf5a348d22d663bcb373a06ec9fd6ff839a7f72f680c5ef5297bd722e87b6f3424ee0b8b5c694e356cf8fac6bbe62cbb52868222f890e362f2664933153b931a476fb285ec9ac8d02c7be57f923900832ad1d2a63ce1f74c312818b39aa2fde4cbaa11c2e1bba7c263d6ec5afe831575e7abbc964c311a450564e2644d2141e9a33610572e46b02af89be053e0b8b391d1c12602c77b2f0d887a511b7062fa92e443463faff1f1925719ab35d82850e36175c22c3498497f2865c4110b254226bd9133da8feaafea105a727aa2e3890c6bff59bc8a0979067bdc7265e362f7380f84baba925b51009fc194958a0578a33892865bd702d20907176facb3f99a400a63899891a37b78161d6a9ab4e54326f1838bebb8bc1458d38d39b1132e4e1c829fbc397c22f8dbeb0bd25f855ff4de9c5330f418b8cc893f9f10848188974afa2c4f95d06500a7d72646e6688bcb36aaccd28193f9de0d0c33d57993e08a7cd14faf0e4f6c6f9d9eb0721323dc0e370dc209aacb3b64ec7d60974a3cec47bd5281ef9fde95dacbcc25bceb545c569961e463f7be21920301c98fd90296949f67db0539d0e7b9b9bb62cc1acf4eec07fa84306e7a6f9701128c9e4f76fc635f522686c3c98f78b2b37f96d63027bf43656f96396dbcec764e4e40164dad8f6c1165873121a72cb623023dc97748761e215fa7ea49cdc3a9c6ec904ccefdc7289da786d690b5894b0303663fc7231c15f0c7b74693a24faf0856eb19cf052049dca3a6faa56d345249c08bafdb65d1cf20fe51d0cbcefd6a66667a026b45bfcff73bd78830075f00ed0622ed272de8c7e3b3b217f33210f666dc8af5ba2d2b6a74a20e2cf929c571ffb66ebb85dfbace7bf4cae101d3c4595c33632c7f51a49bae1f3e0e9ef264333cfb1ae3c4f1a68ab2484993880bd53f3ce6d7173dbe420a04020e6b1561708814b95001598d0139c8f1c908c135672726395f0cd82f1fd9f8603c1e1c35095fefbf79b0788e99d5bc88194afa0003f24aeec99d6fc2f1a60ba1ef90217368017a3807267de42b9d7f307e4ab341654165b280fdf7daab75bb60afb5a50b5112be844c642a09a7f5df93aeb6de62b66c5a4f26c0e2c44af628c6c4e3b533b396062b9cafc82e31bc287a6e37bb89c1d1d93c3811509fa62e2f55102e4f0a7f4e24724b8e7249f050b6284ad09e1e5880e27d50c8330127f62cb2af97b0c530ad11595f0691f07fdc0d5dc9302c10484606c953bd43d2051023e9595eb04dcc8d3d7f034982ca5d764c565058597c9bebe9551f4f877999e38ba9e28bd62d759692e347561a93733b4220ae5ff202e72797e45d66094ac09c7a904dee746c19f010869cdea52fcb72055977ba1c8bd686f2407fca95d377271b738e6ca99df6e0db6a6e55ee220acea0ee1832d85057bb336acb1851a198efcfe2b63c08f34ef4a4a5aeb941082fa15421774f9f4931bf14a8910931673bc89a73ec5bc6be41da20127a96b738ff25445f81c05d9e0d94fa8292099579e4e94a1c6c581514cc096c01702c372dfff4f296ace2b2ac17401debc706b854f60bfbeb02e67b2a50e7ade91075972168652c5f7d8de359635db733bb594e85e99fbfa0d1f55f166637340450e9fd24342ba64cf8a87474504e78c9838524a454d2d13070ec6bd4c39e53e320e0cd4a387746c558b40e53a20adca9eaced2e68ffc3190ee076319a7034059d72ae58a48c7dd624e5e30fe9ef79a53a92520e3f839f7764ad1ba287d35ca16d057ecda83a98a5f281f174ed21907d8bac5a9edeefc15fe1d8f007155c435c69ae69c80971b396b132787aa579e11b84971578d59d0491d7c22b8ab4ec743e05ead18075b02af5111e60a7e4a76accf5e8ca6300458897e91528128d12e5ff93baf7ba72796941a686fccabb1c466b500af97154d70ee73d90cb8e02801453c84f8e5f6f3cf4648efbd75503e9749d58fe85b9326a3d4d766560ecf2c9ef1ea8172522cfd8d0875b30d6d2fa54965e864f535bc69101d14ffdccf26268a3ba367ccb5b611fd66ca26e6fb8249dac0e16a978a8ab1d68d21c23bcb60a542ffc5e4d6195e72e9ede4248c837fd9b721875b9ebab22341a64bda13f511b154074fa7e24a62c006755ca55f196eea00d91b89fb6a30bfde1dac69bee489b290ab63e3c1288d8f8849fc672903883ba11832ae3717405f82d2a4692a34e1589ed67100abe2f4c7089950c85767cd81a83aba9a9752a7ca2295fa6fa1aa960902ae6e9117823025d0ff38f3111d2c959f9edbffe674d11dfebd44d06a9827af6646b4b631356201e74713c71285d944717e0812a46afb798c5ac32a6909b7e2bd20ee009d085d7d190b749c07e6761b6e6268520fb6974b1bc8aa8e1a79b84e419075edac2be7eeba63d5a1a364ef0bbbb793f1c467c681f25779b3e692c062f37ccd98d8fbda4046627b7aaa8ea933c75a1e36b4478c88dd8560c5297aa88e3d0e27601af4edb4081a99d044ca24854fc594381a30da3c2999d05aea5cfc31c568a362939a2d13d5b564f31a8c15ccc9d2a3c7879c142198b60d92fc4f321908fa253845389c5ea88b8e7b3c19378c96654d4d6e24588310169188596b8280f0ee1d9520c1e7a38edbd2b38a35b9aefd55211cc5dc6caf98fca30a800ea2bdeecb3d0a7bca377e785d43d522a87198a8226a17225c6d35dcb78dde05c150ca4f3ddbbf01a22d035866f84d4357182e9418d438111dffc0c5c2535e24c4d2da0b334e512ffd95e697328f243b0a9c6d36138a7a67f68f322badb40f65f2d481b8fae9125e1693b6a86c482d17d1672195188e4999e9869a98a7d120147ba107559654f46c253b3a76dbe74742ac9db8244b2e6cf04c6f1bc5d12b1d20f76332e141e88107a62b2c3a2c164eb623a96b1b2428f64893d9e356f979662916c5030409e652312a6f7a1e5e81d4099ab1c6ab35b6d428d1b78d070fb89aba9594b2206a118fb137a40164adf1110e3179d85c6eb42264c3f36af6d5dd59fbe868e5247cdc7b7240e1dfe434d4ab37e9905c8172871fb81d25e69ab6227d8529908db502dc2e3e5724dc1f2fba383f939ee0372c05e3c7a3cc35257271640162ffd58b40699ccda7d88cf52a8381cf95df562715aec134695d6dde0ec2120d0bf4bcf779f37c7878b18bed6c18d6cfaaef7c9609a462bf3dbfde3017d025ffd5519a2f01d5977fb89ebba039af86bf75e2229a0ebb0293e8d442f162da207b0f9b76071cb3f3c53b185b4ab0dcb28a53080956a047f80a7492187b520bf6ae1187407a13362dc313bc0c9b62d443b40a267e2b4f3794d3e19e8cb4cd9b0af5c477f935af7a1f994770deba9a7668e8d2b7df818c176804e8704751cc688383ca2795af8476bf40371a3a4b466d3ca03e3407556f242e14014f96609ca87f70b1c0e8231232a712dc240ada5b4a2124cbe6631981826261622358680086fc6a7849c0a6251934f271ac5603796796e4198e5976e8879ee0adedf0694f70a654d5f6ed89710f0a15aa302d4bf2c5e93165a7c6f2940a2648834a0e7d778aef4ea60648b9a111c9becd83192643eacd5a8d385cd05702b2f7be5b6d5e6db75e9da159eddd66d2535cd77adb8b75212dcdda61c9352fe51d0834ec92ee1744884e6ea08dd273f588e2fb7aeaf51864016ba2c6e9dface3fd3c27165f7b9c3d41562498f5d6fe1f03e75dac67e4338140629ee721b5077c1ac4615e9ee65b5b5ecf97db19b433da1e43c53e9acdf683e91f96297d9e34d3ca702091277534cf36bb1dd4991946aabc0e4098f0830797635b823cba8edff0f5ef1a22b5c978ae7e5a554c09334527531d66d8057e3e585bad81154c15337572738b16c8fcaa03cdd5048b58920877199ded5686c0d01223f4eb9eccc4c3ea36f66403c546e72377baf06e12be6837092801f7d9c56ffa6fa4f132f91225227b3a12c64319fbbaa6475284f2943c91eee83a09c07e782c061e6bb864f83c1bc352a57455b1e4c09a37f81a71fe3a88beac738e76818af436c3ff4d241411a476e2b4a49778151fcb83aab29472e7aa1469e4dbb3caf01a90acca88e3a82a4038b325390fb21ad298da5dc87867d0ab51c6be399e1b827a32f4bb7bcff87a4a04038b37e451708655d9b1ec928470ea5dfb2799c2fadb959fc34c66dbd1d2aaaba3f0e4af790c4992eefc828e90cb516b943db9c5b7de8820643edf2e604129bbbd3201615ea501ef4086aba8325defde224848882f72d5e3e1d83a58bb47e3aeb2cd073544abbffe0a1e6c9d972b962d6aab18b51f680570217cdc84ca8de798c4e29ca52fc280ab6b91111611b66bb364b1f71dc620e0701aa04e6c750be30b53e94f84a125c835ffaf9c4bb04a50e4ea3ab0738f93a5532447dd19f5feff0a120214948f2690c03afe261fee5628a7c184a566c0bc0c4e7d5b93f9422c491dc0996a65b3793c6ea38fe2b1a0b88dfd118ade079f5f1715afa0a1d096096b8c0f268df8ec07fc4681917bea5d43e74b45a1d66dc5ef57fee264f8c5405ef80da6a6a417c012c5754788374e380b80288d1ce578a07447201835562e64d9fa6ee0eb06bd1328f14d8f02d0b30b77fd5c64fcc1f41734b025df9a976d0e4c81cdd35713741c46e062dcd71ae9d97d2045b9be3688c9395d725a8f52a505dc46809d44c1534822f6e4d3dd68d58d8f25381f3817ef23da25bdeb0207ee4d920c4db31d2c9d140aa8a8d495805388bf227f09a0a2504b1646d0a8b6e56494f0af7257eaa007332c794669728ed26b69b531adfc5d4e56e4efda1e54d7997b3ce2bed8043c60ae1a0b6021ae51d81e34d3d027959de52fbe27ea10cc207095cc21b03af9765596d2500ae9ceec7da9812dacc0286e6d747857ff6108c4d3005fe050277ea1df53b28582f3931280fbf2eae4ebff3c810bbaad422f3fcdcd5da9c474093f186e84224db2685f45722ef5a3164801436b7fd67ce88c5e3cfb82331a01306d074b264bf467413e2a34d866cfcea9328051d8d6fbce3425bd901659e25d45e6d5132ecf12c592453b6e8693d715f3f99b8b79c799669ab20800b59d4a49198349001d0ab5fa71a0c3d80c546cdff345b884cdccae0c8a0bc67abfb5bbc4f42fbaea7a65a79adb88d5c7ef4985a206448398e847780782de5448d0ce62af349730eeb00ea14b04372a18b297d8acc6378285018b8eb6df58307f0e4e7f97c801ab22468740565524a5ac410f0b76cfe4222168949e1f9e10773a778e2eb8942df4f38128e58fa884e5143ccfd41d591725e88b32f3fc13705818159d7245fff954327236a880bce64eacde1d5f71e05dcd905d25609386114459881778dacc16d65979e1fd8e2d44a30e03b771d8ff95f20af17fd858dac0c69ed65886fa26ec3139eaa9107f13fb246e79a8415a30ab4b9c088d358ec8f7b5dd168d203b18ef912455a6e3a3c7168244416c4c7ae0e444217242e8163eca77e4fc151992688fba5731309764f820e9dce72ed555c8d584c8ec78e6ed06cbaf155c38ea7071e99c7e55c0c5b9af34b5500576fef34d75b4acdcae5d6c814e1b2f0b55ca84b2d5470e0a01fb2d4f68b2538f3e4d1a803ef080b0536c86ba8dd229a3e714c67c8773aa1e29fa97257fe640872fdc527becf7ef53940c64a9eeccb0fbf74ab36c9a26503cbc4b31995086b2423e88b79d8137c1fe876cc6bb3b0e94aa7df78830dd5cb6fc9110be6d96879f085bf6711eb55c67de4bf5f1985686dd76dd22882efeaab2a5d6b924ba484cadf1c27c14f64a449d80cd7105171d6c208f962f505eee3fedf267eb1cf0001fb5a620665da0e982ca61b95f0286a69650763b9cd2c44a71fd798a506249e146e7a6073b253df0d69f10f43aefb0457025968fa5c0b6ab0964104c488b926a0011cf5fe3878517e455648c59e39b24c30b0a4f7ca7c5d7a7fb51cf67b0ac002f5978c5d9ab67b7091873700de3e8e28ae5a9228473aea22b5527d559e44c12216e7953236123280d18183f0cb2010ae9ba8c7c80d83616f7e833bd6bfaba639286afacabb4f8661631afdf8229faaa69daaa3792ca06f318589925948f70435e7e03e7e617d88d12b58949a9cb01ea2c995ecda00e4386e58525f61fdb0518883123375557cca72b9f4bf6a50104514e2bc84d1feff7c589d55427e7fe88c7bd426aa291395bcbd07e72ca059e12fb139edd9aacebb8acbb5eaafde2f2186e35a1ac53e70cd9fe9ac49b19a3f2781e458c2eaf8279ddab59b727fb198773ac13e1e6f8dd87a51d54ca21002cc57afb221ef1337e4701b26fc3bd66c193ba909d89a35742afebb8d66d3d9563c5f6b26689e5e1bc49af9da29ea74b566551b98dc13d68c6362cf3be087815c34db04810a7789eeb1b45b5dc79b8cac36b446336a392686c1e0f0be67fea910fbd929b5bb54f24c0551c94d2b2827de35b6081781ffdba27742a6f085c3c822267e3c902e6629e84f748fbafef5018e2ec942532a0d023db0f8fd61cd05bdae09222ee0671e40dd25f6428970ffb8279325741b23b9f1eb3d742320e5130c23ec87bdb5516f775ba03f83254a150f6e39aa1c94444812bdd112c0880883803247941979ece02c2b5e3960910be9bdd97c6c03236f375bdc7065bfe2b3ef60c9f14885ffc52614bf1822cbecc06d0c5a43899a48e5ed1ca550af3970e6cf0c5e588e30ea789065f1387cbf062379f68ba145925e81458e5f4f78c6fa482d88495474a42cf18e2d981dfa1ae66703f68358cde02b81daab9691d6914edea85f366c9259068f7b3b4bd7d5a3c0fbe5ff4c4a367b2f1800568f725ddcafb52418545a17bd31a0530e24ac258ff129cf023d609384c913340c288fc571709f1556a03ebfb475a1db9b0fff4fc083ce1b57f500a2b2599fda32e5721ee8eb38ad2a938316ab2f8d96509d7a32871a97d59054ddc04e3ad8429b8150fc7b27a9b427492d69d06f24dcc007a5416a40a1cd242e84f8d833be059bb003f488854d573ffc334e25c5b00b453c070c9c2206794583ecf244bb6e96724a449752885978d33554d6edf43d43fb36caf7680dbdf957f5db3c80b179a55ccd95704b2dbf5947141c884adba1444935bc40a2aff66f377853ce3d39333af50194465fc24f70e621a0854e88682f8612ae3ed15057c9d430d4729d3badddc589f3009b967133884fc345e83c8fd00be771ae190079102245117161b4e06118cf5d654f9ad1091fd8e331927ecf46c449a6850007eb095244fa6a4198a72e3eacf7b39fa65a20021db6a8e9b4d19ab971422610e461ee11ddf9212c986ab72ef7aa754cb24646f69909f1fdeb110f6a284e7ca39450a336c01a695072228be69b37ebe8765b51a2243f3d708a61d3c1ae5247500215f6c684f551fc75d6abae54359606f2e6cce6f4a38f1d5ad75316a99211d658fe3ba87cae87a5c344e3c57e825e1827e50664b4bc19e39e9597fb692648124d7cbc0ce938efbde9f075bad95508d2f1a580ec39746dc5118db68bf08e045fa74f48454b104642ac9c5f3b4ccc0deda58fe523a1b93f15ea03eb579552634f72f99bb40ff08c85496737bce8a01b0284d760869b4c9b20b9f8cec8a613991076ca0280bd55159e774708c6a45adddad80c5a6e9fd2554d425cb1866d95e1eca5351d504dd27dce6df686785ea45bedfedf9f74b89bc0ef789d3d534e8914bb1d66695cb54f06dfc76337581828c92a4330e0f88172a66234a359a6afa22cc46265408cd614be68ab7393b562051081aa6e409fc047f6fa016090a342dc68f8bad924f6b7f88057caee3205e46540ca7f56bbed9fb3935b8f0b44ec09442250e8a302e79d60c44da79f7d5fe4ffb236b0a76f65f4c4bc8c6185c93709746e346400ec73ab260bf995d9ec3a831fa843f42db9d8b5dfb679cd585cb7e1fb92dd0af3705e2d3ad4410bffb0a168a2cdd12252351e8fcb5294d64d32f070c6af8a692e9bc2872778d9255bb7d660f18ec43ca8bbf7b1ce5a520c456421fd1ffecdacc0c240b9fd3f8e4fa3ef7ff12e35b9cb61aa6c65c028b93d0776db0beef4ff038664da5c0cda9670ef64527ae4d322c884c25e1ce74933525b06ca249115cf7586f8b1c5809d742e53ca60de841150391a30e7993eceb42b49dda428f4cd2be4d1bfe0d3cf4b5e2326ba2dcd7f6026c30dfd4d767ac34e7f98674fe85974761296bbb37d375b9ac243e74a0dc52e675403298c44e4eddc6a3a6e2f45b11df17107737c539646383cb810a6310cc2d6b0d70ed16760d184c8a5ada0db2a7afcd54b2abacd2ac21c7ee4db6ba46807707dd6885dcafcb76e40d21443498171d427cbd343e8e872a7083b76e5bcca9f8dfd63fead3d6ac1b561406a8d65423a994f1c3e59b462409a70db1fac526236574f319d5e6a255bed3b8837b580790103f77b5c134586602ebc522a06543159544249c84bc55052edd9309231f2db68679e4351f058a2d62b4a1bf12159613cef5fbc8d476e91dc01b9219454ff65257df3eee29d2153b7185e1c61a5195b77e6c504774faa6c7cf666b423957d71bee497da3d88be8f0b070c72d6b361408e77f10a032618ef5534adaeaa367f30946d9f30417ec504adac3cc53308e5cad786bb76e60db4af044e982015a5fe6832914c1090912615c9092a2b50463eae0aaef22705edd73fa76f6355f02f2e1730ad820a173e347bceab964a3b9c01c04a468d1eba90b12e7e0c1a43b3db95df3ba8ab78c88d84026727f82792c98457d231b17e4e207b709e58af0a1afddd23ccbcceeec54199cc021cb19b251e30c19ceffac267ef9682bad5646890686ca3507c07a5c83d7b9fa741aa0fbd4d1c7caa9fed5b316548d61994c8a96970c81621558da451773612b27951c8b45715bb4ba241f0d91e4f95e10c6daf8fc2021d7da19e078be199470b29d36390fe6c7ed00034161fa4dc2476531f30e09d99248e82ec2c4fd2fc8e18f49ce22dc125348e3748274e714c490b994853335b3565d9cc1d4d77369c5fc28aa656b3a8877f8c4ce0a201d5067a645cd668d7aef6382619e76a5934d14ced254422192768aea5429f2aef5275837c3358bf55636fd122f73e28ac4f40609598182443698beca36756450e0d979ecba59c9e22136c69e837a26e33d2a94edcef5bf27c9c4feb8d02e86551edffb7568649b7b214e675e17524505f59fe06176c567a700132baf1eb086840cb7cf040cfa7a7a7e181a07af746ab4afb7e0a361c550b011d825c55869b85c7530104943d7778a0969bd55e0f2e3747e89c8906c35938439c631f564229b14f08aa15cfd9e48c341ff7f4749321edf12458cfdcfe3c0e01415cb925020bbef2933d5bfa47269f4c7891156d9cab7e7d9f259facacc0ffb8ec3d95dbb9cea8d80482c67aaea2ab965845c7d13acb3c5abb7211356d3e8acb3998b4cfbd8f7a141b4e6ff4fe5690a3cf477578c146e377dbbe8afe10f585cb17a167b57ec090bf3c33f94ec95d954889e16e85650028107fc9454fec57f0cf0ec9eec230c3249ed259ea589155d8734b7650d17aec928f0237a744c9c42e4188a4cbc23567b98a689d12a8a1ede28da8d3ddfd5f31185284c638ecb9ab53275dec3659200488424aac9d26bb9b8adf9c7fa1522728ed152a0bbf78b7089d4141b12a1d799936998aa0ea07c9e67f96103860d7ae7ce1112217d7518606a7a43a10a4f61f3242a3889d654e279fcbdad33e0ca687d4423d1cb2898cb7677a8c184f9120906e6ebeb69622d5fcd656f3f7a8ec1f41751ced0bb09de86d72d41c5d09d20f3191f72c70d3763cbb4f25150b3f918c74a6fc1e1acaafa95c4e3e48c06c7ec6d1e8f0468b79949acd07311d521f51c63df748acbe66195be0020f362295ee4c515e8041bd09364496b78e4b5f6604841a164c7d1ef938a35ce7a8fb5b761cd4534f94a750350f55220be8e86b6042b51bd2c62ee31db5d66729377a497cf982f6c21a56cd07dd3840ff9e754499df652dfa486580bf7f321d4c0796671208188bb2eaf0127b10d5873f50a3f4d2ab95c884105db62e586faf9e19049c573ec8f1b70a2d9103e45b9cd73af3bfc1e55d60392fd098f392eb67202d3aaf8d475f0e163e97bf8cb1225c3c7b0ff2267838a09dca53384f2be10a21bf4c1a14ba423e4deb011460864abba263e2252395f2d57f7a157b44b95fd95c31f82e5d7025bee6b7e31b55d1acae63be754a7d443a99419dd71e6e31fba5748db5d5175dbe378003828280115d2af976bc7efb1e004061d2b722a8cd31409746da911d712f0033bba068b79ea27ae7c2235c48841b582c7122e57041d58845199df2634a0ad72ef5d111761e671acbea21ce04320cc420e98825392496828977651e246c47bdb290b56dd7076a332e932ad153df39342b3aa36211b8b1cc1d65afb4e63bae93d3a738edf0928798865cab0ae75577eae746c0d5f7449604dfccc4dfdffb8fd9b14592f22b1f340d212b3a12070c3992b3f9b7241ce98f23a6dc43943f5547104d64665845aadb3248987f71776aecce1431ac35bcc9309fbc007e8274e879fb749f3b9647d210c7d7490f082800a911f74084ab7881fdb2df3f748e485b07c9f9fa79419868ce0f0da60fd59d9471cad309cee8ddf89557bb68d1c172a64ec13cd560f8f495241166e0140c8ad4f0e5e0a255a9b65b8516cea03a33854198b0f0ea87f892656a78abe54f30014c780d34f8a382821c4ec281bf56256ab421bdc8eedb7605f97b7cce2025d02a18a7c33a68c0ab90b9d6ad81923134f28b927d68e54c88a1ac0656d959b92d2a0e71f981c5fb348a619e065c86d90cd3a6f171488be02a66994928411b6b73b1a249971af338983db2a7723234df40a6d7f2babd67d62f894251b29736979cb18b49504a4f5f41a57f8c45b06bd8821f65655f071d417bec3657980bda1bc1a2d5ac6e134beddf95ad5ef653264c030832c94c968a6c7d9b48596f9b382cdebd88b5ed996c1baa724817bf4d45245d15452b9deb3b24495155d921c420f1ee74aa721e920b6a329098c9e7c7bb6c2cf4d33063e1590b87bf6767054b410d17cb9d1765ca737da052d07d6313101814a594297cd796c2d51af4ce1060a0dee3c1df0f11069d74e251f65d951b65609388f06454707468b840d771f2bb0a69595a44f8c199268eb3a3297845e4212aa566b7e6342bc6f8f52298f4ab4d9ba8ea4b7c6d03dc60fbbf05c9b8976d5109086e38b084fecb9d93328a90d506b41961afcf88ab072a43d20b411d887d5845f0d4f2a00e17670d301816f739e638d41775df7697f3420c9904ffc1d1cb4f65d1129eb88ecb1496ce2495d80bdd328549d07215b060fb54aafd07d7df7c580e924420abef02b33af26b28e6f47937798cfa51cb23e56566226990344b8d80c640be4bed5ddbc7e1f31d0dd8a9d02a8c29204b8168c04e6dbc01fb3bbcc7f44f185c557340013c198c4bed7a26ae30ee1e82f7c77ba44b7c683c77743516561e3215e99e457d5f083c9019217485583cbfdd740f1cddd402fcb6c21992bf6375e546d0fd061ae4b3f0732406b6082a7949012fe84f753ff3b711fdb3bf696606a9b835cf9f4e8c35926a57dbbc916c4192b71fccb8ac077dc3045488f0ea339d7f3474695b86cae65820b1a84e990e9bcb957621d76d6ede76b658e14e98151b9179b9ed414e3706d19a0940ae4e246e2cb8572b7580aad1e7f983a624430271005155bd0856a210747b0edb81628013a43fb21a002ee2e0e16d903ae296f97260c2b116506144112229cadb4b12829a3af5694e2869cc41c1a6f3cda72e9176e826d25428685e64b801d972ca80e5d0a956f711b5d5fe6061aba57b339c950c0b00be5b3092b4882f0709f38e5671490cb8e1799a5051ebc3888beb3e11d3fd988c43270b11d335f6152a4a79b7ecca750bee8b70eb1b6ff3a4477d2aabb1539a84bba59eb49337a71adb3a2f9ddcefcc412c93132a393710294ebb6cfbd74d5a50b24c7626acf10b403b7b3abbe961eb606ed9c63b889d0dd6b10db00dd26c9041f945efa802156884af5efeb6070639fca63943cd94a9e18570f12b51d0ef4bb1f944514ce9f824f09ad9206b4a33ffc663a4ee2023a5bb80e8f2a223c60be1a5b641c1c37093183934260615cf3debbc80708aa35b301fdf14808e229700e674da31f2d9ad9bb2aff897f47163358ff94f5e0c0c9649f15ae1f2324bc5473a02196bc92707f990e093a102e713d218434f63de2897d604eeb336298b12735afb64c3f35d24b93e264b3694b3d547ca6d5908bb689597b5203fab1c1c5219dd0065470434f33eb416a7ed7e838efc0d5b803a7c18192163c84ed4e70bb76a8ef494ba3a906dc0800a3516af99d8656861592f91046ad288e0bac79c7baabda7de0bd4b342357b898a1f12bd8e6a109e655128eaebaee3fad6739d5081a10d94e6d81fcb54fee3a4a62e70cd7e7d3980874ddc8d4b05302390904ded089db11a1b3590fde6ce8271d9f85a195394c069135083df6eb9985fcd091115eb828a9820857a4edca3e9fffe2218572c7725405c5a0d763bbe5fa1a98c0a06b03d0bba0b5e39147d99b063bd7248bf4c2820bae8767bcc1e04a107b197305bf91d65283ac924061fe3e5937896f7b9f987c4ceb21ebc812f43adc406d451fa839669ee9351767bebf1c5319005219571fbda5a83466e1a2eed343a72eb3bc12aca279236a8419d60f9555a3341e0cf5bff5dd5a55434a967f5eee5504965c9fbfd524cc47a1b92bf0baa65c662cee0877098c4d94b371eff519d496aa4692171c69019eb5ceac103c6c6c6648c9821fce9cbfc17f15a43962e659a46fd3b49c1839932844b815ff4d819d5032372e89d88265785f2aa94d7c8f483520ebd0b8cd3d3ca642926fc0b4a9e484353f21d630732d9d80122f9bc8961eb5da774971b27758de0e230b018b255150fb592148bdc85e60acdcd93fa4e0eed5d409f5ceaa7f75345af038d161e6c726ed2162028c989deb6554c4d2e4e2ca77dcb7009bda2954e7b247d166910eb3ba0b76276a2b5e1765056c5a8f63ba5ac7bc484105fa9becee21c2e9d3dd0e40048ba9ef9ae7aa52c15770221a1648a562029da440b223e8bf5540b5cb94c7b433c2be1f695ae2d05b1fdb5ff1f5a9c854d8c49b19cc1eff567442b9aaf4d051a50999a526f8d023bd5481464e9e469b751f5a22a45d36540b5caa073b5f4e9ea98bf5b9ea87b24d9eedbf70fe90e4eb4291385841f559d8101dc7f12e79b20741dd290287e6a954146c9bf21f60ea2d66851884becef93d09f6eb5658602bc59d5c08509ec71f1d11bb9b8eb856fc0d031b186dfed8ae306420115ea6a894d9c58ee71f004b06a5d3310a89101401bca8b921a8515249d257f6c524bf7715b4cc980cf8f3760c861f172811a2541beec7fa16831e088b220ee27c1f56f4d37c9d37baf4801bc533916f31aeeef17fde01698b77730d2e0743d60e5bdc541bdb01075d42bcce53cfedcbc8790e543210430f1b39f67f5eee3065fd84c29efa2917101de0d11053aac399f7c95ed11d72a99191072db67387b54f310cb871e6d8d3a989d4a9d74d7fd2acbfb7ed81df7805a4fba43b442f50ae2eac1fc575c5cce799a1d30d33063fd03e9cafe35db3ff99f2b5841c93dae824a0d0fb97382a75c79e34f746f169f3131bede835118453d8b2790a8fa6dec2131622b0ab23dbad2a843381af2a5f93e1b036db1f79235dbfd2c266365e856f87a0f07a863667bf472b2329e0ae3af86fc43b38cd9afb74681bdde59c2f3ebf24400a92fdb8795fbce60e9803616cde6d04cd5c0d6150077ea091bbe73d814373f87cbb8f0c2313fc40153c9b16ef438471eeddaeb03cfa8ef4e9c4e836c5e56a3e4d26305a9baf40618af434bf3cb38dc4a1e5c297dec6656b282bcc50af84951362e9d749ba99d9458ac549df23ec5823845cde4a84b71f5f2f3476e652f41e6e006f0bad18cfe3d2a0cc66f04b6e6f10ecd4547ff1626bc788187d437a956cb0a97f3d5c4f95b691f55fe0843b5a119820e42a56272c9e69c893a3a244a1ea5622309e5d8367566bbb39b6593467d3007feb30cb59a87de50056a879497edb896fc541f10ee3e8a909badf6ee6a6874919a81cd8de0310b061ac86716c592e437f04b7e7c66bac8bd8752d2835c761ecc4bc7ab60408ad5c2bb47807818edc2db4bd807bb06534adcb056770ff64280c9ea245e56f71528b6bec99164114e27310bc0559190dd82622800eb563717b329e87729703e2882e89cac8758bd441aed4ff864949a6ae4741d9fb45f134239319334bc9ab267b590ae96de9883c848ab989c7812407f241bc6542ca9988ba1674951dd64d3bb5fcad44771209b579a2258f83489b8f8bd761541d5e43297cc84f2bb8557ba5babbc369b3e357800c3318eec06ef17c1f3dfd4f04fed358459b8ec54f22b91ff788e43a311e2e78815f803c8ae7d9f08932e1ee8b125483c8363cf10ad54cb05b6ad819374ea7a940b2dbcfcfe598f02521abae4a3404b121de5ae8abeeadf151812ee3a1f3589919413c83cb4e2fc1bbfc300282f351183bb686eaf88688cb5486e2f1e1a2b44e7ba4ad370a11ea84a6bcf6a05b33162fb87c756073f6087c06f500e85f73686dfaa163ae8c01c41d37b562691ae84bd0d5cc32d1aa6cf7407821630abe40013ee9aa2a23c5fcc09a9c6f9f684d994f68bfe55f85a8bbf6f3e645db3cb0d5bf3a1d232a79c5dc532d8a5be3632353a7ad894491c51e9ef9a12127ff2011a6027985a2f5b4a6c955a3276d80206a7ca43064226026e08c956c12a90e03767c99025abdc2487ddc100a630617273628c1e66efcd7397ef157c7cfb5ea6c0f30d5a52de2d2b4dc54dbb40844b612e44dfbb702d9608c15f7e32dd024e40988bebf6d8ce7bb0b4686629b4e90b626280fbbfcdd4e5a6ebc1181af19219b52be0eeac9ccc18e51999ba011c56038a31ca6f5b40d6554d07e92896063b91a1c8fde0ad96eab7859dfc9f837d347aac82441fa43fb8722f3cfb933d4b26f92e7d400fd4c70a01499b0fec07414f3bc50170b72aca73813ad73d3becede5b95fefd3531312d2f6eeb6a59452a694640b07cf06b1065da21046db309c81967768ae75069a4cbc03749607032b46c60d580398c08d4dba13871b6b903008331f86930ceeceffbcf9df57e0c6ee46d93195195ff8a25d1974999a67d51a1e2e026e460184ae57bc828c2e2f2fb291ccb903cb3fe5f39366a0273e58b44ebbdc9f3bac89dac34581aee0d161ac0853263a4d76aee0a158dca64f5cb2a343ae76f616417cf9973c73b22270e6e542179c71863559ad513273fc59afb3b4475d5cd3822c0dc3e2813d406475b31562648e114aee9c18dd8720856cc2990a5613520d914138d327b600773df288cc4031f210e3404a58593af0607a88083d7b366f34faf298cc4c32f822d3b9ae433e4d3391cbc8f76f1de9c461fc8b8a8c8c8eaa0fb78ffbf01dd7f1a3fb807863f4691fd9c923877118d8af83f85cff0ed23cdd33bbbd0e5d8f31c6ec69ba5dd9c7ef1e50a6811a1201c48dcdc38d311add18bbac9b3e0ee313c861fcfd8b43472c23ffe2500301c95a3dc6209ffb80bfb28b495ceef3c524d7ff9b433789502deac99155d66bcf8d60b5f65e5429ecc7fa568c31c61863ac42db9f26b61cece611b9fe8afde7cddacf871d8d7fb5afd67d5c73b8241fe6e11dd671f2e4c8082e993048c69dad3bbd3bff73e14ed6c38f30867ead21875b1de36af05b6de28e4b839ae748887d9c50ae861d97fe27027a69ecde6ce47c186ffcba448a27babb6995318831c68a3931e79c9348adb5927a80042191489976038416f4b124649099ab20a36cb1424e3955a4987452960b5f4030412bad2f207cc41863c5e0ce939d26ec2c2165a46c0017be7650506bad99b61384442269db8b234dd336ad6e25f8431177e1eb871ac01f885893fd61087bb2a72c4e2e9854d45ff8f201498a081f50f0b12ef48188245f655df8f2a187a73242f94174bf085f3f925cf803c985af1f447e28f1c3c75da5ac527c3cb9fd7de1cb471550484861a5b05086582a2c151f413e62f0f281848a0b15173e7cb8d05e3d3cb95fece1e8c2570f4517f6b0e4c2570f49542e7cf50074f9238410420821510f38b7622f121c5d55ca0a45c52aadd4605dff1c92087285ebba40e19021ec2135e8d0a13bf48ab9bb6395b6bbbb439fb63d67e998ceaa62c7e37a74028dde45271b369c19881aac008b74ec58fe1def533fe69328e0f41fb4c2edc7c2e93fb8c5ed1b39f66122453836c259273977fac9fd6c5debe7d4417739c27e4ce4767c1e729b769f0ceaa6a74ff267eec73e8a3b713ab5c66e3618a5b4337d8d3f67e52b230dc66ec65f9475ad421640f3ab3d166e34e8f81dfd375c66fb7e1c2e47581d19f783447276322e330d0ec3a64db30fe99c554a196e60000769b321bdc3dcc8e666e391c4a271e1892863c85939cb79ed4d27998cfc4fa5f943187fcac170b743ee0d7c37f3206bae46767a81851dab067b9d5d39e88167c892214760e131436e52db83425c46187290243ee45504912090851882c5cab116120022c49051467073bf82f8d1de1e84ce75729d0aeed509357a3482900352842f722f204ca8131915478ac082898a55ac5a22ba1b23555246ca7892c41eb0e831e79cda9665516bad5b898709d670c6a4041682c99a2c8f111ea0233c3c41ecc99e585583e2843aa1ac13a8142ac53f7c6c4a9552bd78707874b8ad4251a154209616282b9495f3f40871128518550d0aab9455ca4bc8929a3549d152a9542a85f5129284a544c5858a8b19c8c0c58a8b95971027565856585e4296780919a2f608d9b9fd9aaa8565ab81b7e05132c415ae5b5f5df81aa2c9f52542b7c5a5c5e5c8fd3428c5d10c5e3f96bc4a0a2e2f2e2f4300653d44af2186884878f997275df81ac28715e2091697e8c29710575c3823895a5a5a5a9e5b41f1f2f2f2c2751cc7750068bdc0db81f4d02b98993d32315df80a4289bf8240f20ac2887c055124039ddce2e605f1422980e084122f204a5e418a780501d2fd64f0bb4f60f9b52ec506f6834617b60769d0c2a74eee535da8f96633a79452ce29a9ff8b87222f1e7ceee73dcfed7fe1c2ed48832f2ce1c0f6978a2cf62521d81a35a3c251500d89833537b05fa5d3d664acf54663fe37df7f7e396e0ed58d3fb5c6aa758c8a88fdfb7dab5f46ff7b518bd2116c644215407a5c19e619ba5f1bb96c3b7af7551e1e21197806e05303af019c6122200c7e199c8384ae1731e26205961fde534f1682203102235e492881482b0b29766890c4882328780739130161f88fb8fcb2fb2a13dc441089397e6647607be732ad93a559497f4a7e7274598883e00c949d0d7c3fbe4170c60670a6ff09d786b6a16f131006f34018628fcb9f75d7bb2e02611cc1ba5c260420c09e9f75681c863f48f2500483dc3b72ddaf915c16badc4b2eb3d175c23c310ab11f07f51123ed31bf771f8eebdfb1eb22a52bd88f79b887c7835889773b3a1dedf10d11207539700de9b1cfa09f6c7b41d28899e73264c265167a91c00809746ed6b18bb44c0b3b2e97ab0712fe4ed231909fb1cbdf4c3a06be48b0e432b751470f3fa954b742519d3d806d1debc3bffa6ba6530cedf93b8cff9f3816671dc6df747acbadcc3f75f54d9ced6c7bf26346e31f17c9527aec9c9d136f1a0f87b70e5294c1999c06d4bbe9947a7f1c3974dcb023878ea1af7dadefdb10062afdb6c914f70e73437b0c931b4be368b04a25a51817037b4aa79cb37256720c30e25f2bd7fa792bb3f3ee8ed6a89e8a9d58fef22c951376e73b572f7bde8a3199bb951accd306053a831b0d0efbcc371a58f5eaf57bb94d227534b44785fd60d10daf301ceb3e78746de06b2fd3e02ab26f999bec71be86f450b653fa2cb499867ff756a30033b4fc499b8df395f44ab9cdd0bacd1bdd6c6493b606f0b8ade217fa336e050bd04fe2526001fa2b94b5d3369be91d85400109988802133e60e20813404c0861c205f403a020a01e201f3f4df8315993fd81c29eece907891f1dd412464bfce024c5579750c1124196b859c275e14b8923258c2e7c2941a4c40e9438a2049012492801c4902743ae188284213918726408d0909e0b5f437c0c715df84ae2288925492449c289247a8aeafdcc2bb7f22ecf59e05e7e85fbdf5252489b4de9b392c610061cea4579f995ab17c2191c5817e53fbff2e5cbcb67b98ccbcb7f97e15ebee732ffb2be94dbb67dbddbb675adf6a46907bb58877798c76186649a6603bd37d4ebe25352ba2de52d07ef062f2a258505b6fed7aaaa14ea642afdb695be7236703f2cafc2fdac9c6ea8f787e557381d56cdca672bdc0e2c28abd5a3bc0b674306af6bed566adc7a00fb7110133533938e91445c19aee9d71145aecbcb4ac5407bfd2b1c8d8c96c3dc58d5bad954afb5b258f5b3bad954bf2c8eaf0eee86f6b4f6ea0ac5be9db6ad65698ff9693aab75f5a4cf32948bb2e2e0250111e1223a56ac530c1ad9b6ea5aedc558cd90baab6ef5f5ae56abee06abbd154acb8aab2ddc67abaf5d6daf762c8eef0a8ced354dd7c05b5c18d946e3a77b865e26b5b8d188ed659fcdd5df871b8d55b7523b6df5b0c9ad75c559fbb3c26a7259da6bf915d0f4cbd0dfea97d1dfc27dbd96358195af7151a31acf46cbb7acd46e06bd3a208c7ed6e551d35af960bf1607b100b15f4bc5c7d61a96eee606e76b561ea755c3f22ddfbfe3bf5fbe5dbea67ccaca6e9c0b4fd8ed4d8f8282827a94cf7cb341b136e555bf5aa5a4742de8d55f5d8eab10a6fe7316c2d47fe15810a6c2d457711ef4eaa73817a0571fc5c5805efd1327037af52d1703f4ea9b381ae8d52f710c803240afbec635007af533520bc7f000f55938080bf0d15b7f8583d0009fbcf5b976fefcb16e7bac551e2add42044b2143056c0fb7ffe4855b777303eb62385fb303dd628b2d6a5440fa8f5e183f6b086160d39d549f54e73603737c409531c86aed5420e57bec1d9dd69ebbfb51a48ff335b45341fc395d7efc1c2c9b195fd3c23267f1f2f171e1eb04447a7eb8c530c9a5da65ade39d22a4dfc13eeb76306d04b6753fa8a45ad6d7d08f8dd44eeb629007818747ab180fdaa9ffde73a1b5fd1743460c2d84f2abff2051e93f58d4a45b71a537993493518aab9fbda6d5ceb2af15c3f8eb639fc5cd06e3fe7bea3efa9003f0e86e80fb72c023af5d0494c7d6928aac1fbef84c59c70c6fec0101373e0d9ca13762f1b1ef8d46e9d24018f14b4436069c6107c01abe0263b7b23dbca6e77179abe1bf32c3c9fee9e12d29b1f14d9c56aac2d23079c7bfa53819dc0aeaf9a27ee36e907705d5c5b831fc60df467c1a628c2c46589a0f8a75eb3ecbba4e7a48e3241bf8568e03adbb01f8fcd41f9a8a7e887d00086138acd8631cec03d4beb4835ca552ca1c2f22f7dd88adc39cefbade82cb95baddadd460f55f8d618034482959c75f4414195d77d6f7a2c891ebecfe526b1c3a64bec69f5d1d136f78b4c2f5cfaaa669afbddc6c344d731d08e3df3b1ffb11950c9a753a464793d1861ae8165bb06e75d1c26ad43b0061380ece86275cff1cfc826f3398007006077b19868ed132307bff17e00ce9fdbdeb4962b89e83b3613ed5a2d3d19e93380c090ef6c12ff84fee067bd90708c383187922ac21b2e3232f59d8cf33fa58a77524c2cc0aab52396a0279626fd35d3a829d34081f40d1e3ca22dc9611d8ef5f6584d9add4983f7c6c8532031862000580ae944ca4b85f0c57323922651134baf221cf1f3e97143707cc1f3ef77b7b407dfe19fc93a3d3a6beec6aedbc17edc96f4f7e8bc6e5cbe0f25bf265c87f9982852f9e2bee7cf9dd30e7c3c92e8c89a9ab4319191fc22a6137218b5d4596d283eeee761ed48ee9f6971da37c87303876f390dc3eb2eaeeee410dbb2fc6d8dddced5ded984aabc3f020436d61f91f7eb70b8f66a6228bd1f9061943d83a4ce956f0f8eacf6d865923be474aa594310a8ef1b99b0061c87679792992d3e77675055d93b5d74cfe9165cec19a9ac8d5ea900332a488603f3ee2233843e9253a32752c21972975df79da3351c7d06772bd288b5ae6b2a5967df5b3b76bf10c659d0d97345c54bed65e3dc276edd44d11cbfa162a0d18a86eeb576fb47e603f6884630a2ad432f282e0ee0f67addc032b569f62159ee40e8abc284a395b195f1247ec4958c7d8f1638cb1a33fa95b8a295999944a5289453af127ed396cd8659663648e0c297409d98130414099a8e39f414aa39227114977d72f4b4ffa284b9244e9178d04c134c942fa97d8a5ef77297511c908921f339bb31449d223c9c83662189532ceacd6efeeeeee6e59da68f4257d067560336b63b57f3d9944ca1db9d322778ab85cae2290288230d0680612473390a8425ca17462f3a34e4b27779c460a07f68b47593c92b17cf2868522643fb993a2c27e72c7a748cb8b4b0c72187fee5f5c825ce6e5b9e738f8225b0810061aa132c14201c2c0eb2db3643b497bde3d1c5f1984a7470ee91820221d537a7f68bb9d0ed23ca758345f0ab94cf41494d4ca9f5ca8bcf630c6a2076259baaf24835ce7b173e9045cbea5ebcd064b11f6eba2ec2957fa68a4bb8844081b83aafc2fc750c7f44d5c727b67c5795c741feb55bacfb25238998473e1e44ee4d9f1ee93449fed3e39c4734fdd278fbca9eb2ca98b472ee4302f9d0b56d49e7b130cb3fedd117925dae8ecba2eeaa22ec2a2bb65edee6645f91c9db477b453abb52cd6ff4a6bc924ed7132487b2cc9e330fe3a2e138f8e7468d021ece73c463a8627f3f9e84f20221c555a733d35f00908035f335c9083192ef801f4204b7339127013747f4220026a54e3f22defb98c4be7a246352ddd4a3face11e3eac2d90e36a16ec73f1ed850eb312bb19f4caa761c5b6e72ddd0c7a6507e58edcb9728705888ec6a34d652639e0d0ad144eea2526ba71f2a49b888b98888988889868871b8f52505e82e8d85f8e761704b94d284fec698f071e5d81c7c76bb59655f445bed39e9fb4f6e6eb8823975feef0bcbcec17797aaeff8b938f7b6296a2c522976969e9625007bd7cc73dbf5097da8265412f3cb0244e26690fab94bb9341edbdf81083aebf1f75cc279b74cce74eae0b29f1215fe244cea463e6fb1532a847458b3d39b0403608b47c64f13842e3dfc2b18fc378e7f339d6f928487b4e3ae68974e974cc178d5c231d73c41f165d8845921bbf5effde7197ae8bbcffff58d6e5fbef582f9df3b874fe2d9c0c92425248e8eb9d5a2deb63fdcb1df7613f17da118a472e43bbafd6d8c52319846590e4e48e10acb36a3bb15753fdc0da60d96779dff25a432b9a4a12f66bb55486d8d830b2c8455f60096e7253c9647231cb652b869472cef9f5ce396503e4f6ce6df39aea7f2693a993a1bd25f68343363a66deceb22cfbec09e65a83d6825cc8fee9b3d3667372cc4fde2a9976e46042f946e998a861fa7f28eb2e6d36967a69a32dcf64323dc9642ad9c83ccb32e6c964dc2ca563238731b2a4a27e9ebaef4fafea3e16f394deda9a848dbc4b9feabe5aea50dd67af56bd1724f66b5dd772b0f8c9964aa8b7b6542a9d4e5f2a994aa71b1dd325d39bbebfc4b9f084357de9ad35914cd6647a2f7570eb9887893c296f8a0a3a23c3c8f146b7ac924bd6746219b24a9008a25a8c2ccd468d99529a202027538cf1eb8d3adaf31fd35b53573259b6a612d7ff60d0c954b2288c99146336a746b5ed358d3aa5a88dbb9165421a8ba399d363680fa393e36be2aa758f25a5cc31da3321a990a714e4dba9c5d7b7270decf267a821eb8ebdbbbb3b563909255264475f76efbce42f6b8030b03bb979e1f680cf0357763a4a5a58e830508b453f64a4f9b96a06e97255310c2ff88599c5d8690ec23030101c84006e3fe9c28ef9b4f87106f7067ebecc411c87cb1def4018fd5a580a84f5cf018f1c20bb9f10541ae8e7a002ae9fc14d02b3fb705c7e5ab91cac6bb9bdda2e1f894dc9dcdd2ca3ec6666e6a64d2be4d802894aad545ca43da797450776a3a1e2bce716c0180d7abe3253dccafcd5a3300cfb7a31ec27f575425557579c4561478494748c248291ac50296ca650ab15997a14b7223f85fa15b7225198aabdf870866aefae92dde7dd4cba76388802560f61023e58c5f5d5671a476fc6fdac7e723a72e0d8e59fda64e7adbec4fdacba94acfb20165837a5c4a40ccb616fe2e69738f91af783f229dc733ab506a5830eb361d8860991e69c2eb24c4a9942cd18b9da391fc318abb5eb260f991a8545912a7430c452a4044d269346dab0acc4db10249454e34834c33ea30d5fa04fe2308a513a2ba5536a2d7bcc3a276ac8f6677c437b9ef7cf62593f5913ea79e865698299371b1a69fd8cb18d621b57033f71dd5c7fcf69828a68288e875808c6b011e8f97b13f0c4ad50cbadd0b76f72af01b73ff318e32a8a229a029bb154a96d068f6d464a6a7562fa9343516d3358c0690dfafe28aae262c805c3199842adb068d5d6168c134e4506d6a2da66d8804a9542b1b4b8c47050e9741b4fb1b4995650a873bcf6222ff2a2164b59abb52cd67fdc02539735955c5ea278d9515142065f7ccdedab2857b362cfd3823a3b408f5d0ed331eddaa143baa45352f71de609c2c8a923dd6337a7cb58e99c424ee1374e21a7e81ba79053c829bc6376e1b0038cf12e477b8d637e20a3b54b612c958a49c748242c0796570c677ec52cf83981106852e550553aa394e132d87b30cfb154eca9755d9073600759709b8550ec067446e9ab52116ff79e65afbb5c86ab65fd9076790805265211da284db0a669cf5bc964ada9b4693de40a8714d5ad331205c2e0f1528e0234cc06c82014838c295463b43480030836ba5051ec18d80c9b54921d1741189d5aa12e7c6eaac8ec70981dacb303c2e80b7fe35e07ac959dd90161f0ca244355edeaa4c2695f315b3776ecc45d2863c7efa874ca98eab103c2686cc7eac255462aedd8d13b2b1e523aa84891d24145082a54d499136bd90ab83dca3995c8492b46ca26eb67cdb2ecded385fc35acf7ac6d193169256519ad50f33ed58796aae0a7356d337800abd9099a4ad9cd501909cb4a9b7465299d940e9df065f4ee6e534ac7f2c37e08219d010e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0eca8df3b8b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b921a1f020db9fdc707b9493568c94695bc9644fa8940a6595c2527179f91c979c961c969c951c17392a39ac9ce77258392939ab1c941c554e2a87eb725239a89c538ecd31e57400c831e59472b61c2d07002f72b49c2c8794f3220039a41c2c270002c8c17204d0424e0b5ee64231225d6264416a0470250017aca49a02076c46c2664714199f3b1a8d5072e1cb0443f7235df83241cf2511c199ec9d624f9f7df808ce04f98e1791882a870274fd655685ebbf69afeb5f12e2fa9bb626d7dffe0995dafecb80b896d27f5915584cff69af15fbdf26848bd37f5b1315d47fa5165c7fd64dfd67d2e1faa75cd30eae7f46aa25edebd55e7b1297353751b86803df1487e23eb8033ee2d2b7dcc751b8f44ddcd736b8f44bdce7405cfa1bf779112efdde66acaed69174200c7f181dec27493ad0068441210cfa93e3a320af9c17411814bb8e1d8133f19d48eac099f9f47ef1b98b2e38032fed64f7c526dcfa5c08001e29ce92a8db51ff1caa4fe2ea53deead3d24622d52c884e4a29dde6b6518ccece3e867d9631ead4dd5a7db8999ea6514f6b52b446f5a56ddb8c545c8983ed994abf6d9554eb86aa9a86fd4923a538080ba0619886619b893e866118062fad180362a039c2ca6f6d5bddb0974103d33ef38c33818f0b5f3d468eb8cc8e23967d96f7f0c8abedd1c7309f412f07c411a6d5cf26c33927f622b839a0500c47a51964f045f6e2f29515abf51fc67c3c6eb4a95abc5d83bf621f5b2606b95cae2135d83f8ce1a74d297d81691d4d7b7ee166634303da9b2f437bf3699ac507db70080a153e02708003254a6e7003152a78ca69851475a8d56a715a7b2d059446482b30232863c3611ab6585a50c3b81d37ecc0da181aa216b81ee42f6b8d4f35f728ac6d29a56b0928b0204191859203416134a178c27426262b868c183057a2bb88294c67e25584153495e6e2c2571141b8f209c78f46ede5c8648c2c5f5bd0c1c61caa2b9f232a32b21127ad3d6b0bc2c48eac2c8bf155979fc462f973e172cfa8bab2da20860c95b3e302da5a166d685bb8f075021dae76e1ab88d7fdbc1ac04034a476ab58e0427b2cc81223868c18685e27e861591f800b5f4630b9a40b5f452049c1cbb0829f2594851783cb0ff92b3f6b8aa2fb79f72ffb2b270a512cf1039e1c1bf450f3d95b820b6b783841842b84004901084798a0063ec411c513338a2493071698b42b5041d2ae10858f190590c95444c193459184760519d604f3d593c4ab882577e5c2578f0e775ef82a620a5564a826163ea4373b040982b2e22743596129a594ca5b036fd1dd97c3a5e911409165a69624a098a098b424a12509fcb12483f859264ded300c210c38f8054a514caced9afb5e5c1a6d5e32b8b9d6dbbd04210cfaf35b0703b0f7b4eeeb9bd2c3f6f30e4f77cf682a31f4d2d69b165f6ad936030824bbdd66f0ef0a218c48da6ac4efc7ac5482089915f5a3a63d6bda7f5293f5d6aefbd1de92befaa4ec69f7615fe98cb5b3edcda75d85f3bb7f72ec78324d86350429788708d10a87539b1fe3c7eef39f1edd7dca0ece172ca594f6b26cf69f67eadcb3a9cdcd064208e18c3164a9969d2c4b1334303b47964c983166ec233373cfcecd8e2736803e3e1aa26e53a62f6dec82435572280eaa381d1c0e182301e8f943007afe633f734ae9d74b6d000db10011319272b98cca6748c734a03dff161fb1bc14f7d9c3a057a8d46d9854b1746804080000020863150000200c08074402a1482c1c699a303e14000b748c4272563c96c8b21c865114c3400883310a21000c00c430608864661400b2ecc3a4706bc3ee37230c13dc08720db7830d7b21e054318c7d9eb0d35f76b7506bf732d9eadb3b4a3ea73cd5ca207e259a44c1fdf04d005f5c9a86232cdf663feb3602f5157e753862570e5b823284db4ca8a74b5212016f51a2ac4e316322d4a216fbe1627e9126096405f824b041a93336496874e0739d7bf044d0266bb5fe60109250d86f102d8d6c91f262f58521bc9d9caa490e28b37f9b310884382f9f283e81cfda16704a06b30b20968863d9d28577defe9ce0dfd3e88dbdf75a0edee2522ec19ac280da4311e0dda334b1d41b08fdf7164dbfdf8f3b1ad8b6082b3ef9e033e4d446fc8d2aa89946a5340ff752002327674d76ee0d98f876722599922a4a39eabe152ec799acdf9597c48f1405528c42cfa030f2ad284c9c42a30ad861db4865b68f0ba0cd4c5bb8f1671884ee5fe0bebcd61fe6ec9f58e6af3ea8b6729519b589977a4f0ecec0c58639bd7b43611f883e31dd0aac383023d97a7ce9b4a7272405b5a5250e1ffdb939b6365c46e40a0c031bf02ef4a29477b3ab71a14611872424e7d38570daae2c5f9850592155f7c2fe9640a33ebec060796192c8fc04f0c258a5cc7deb7757b90ba37bb06d4cf209d02d6570a8b1eaecda5447329fd64c1b1595b119b92c119da748cea2f52cd3990c6c3f45348115bdf3bf7da7b176ba86814d085b275d0a0d37ba9bc97b78b99145c09f3659b44e0636337b544cde465cce6ec4635a256d5363862ee000c5b10ab12b393b13267655c52c336268805cb7061ff7f29875884e5c62db082158b96d120c9cc8be9155bb193693324d6c6fb8aea180ac0547bfb62b81a475f090c0845648b91e1a0eb659ac5ce23caee52d812e5b63579dd5ee3043f8ee879c84039d8f046a1d4dcbe36e1f59955833ccf70860467bf07446f55d5d3fcdb35a2b30efb3bc4254a841fee9e921f3ce6e02b67900f24074886ad551fce06ecaf26cbfb98fde7e8b25b9a3357e25b8c1676e596be639f1e5962e90403b466ae12edd06ef99dc92888d521fad93ddd772cf3d7e26432fdec2410b93766c5ff70ccd7aa97f323fd31896abc77bf65bf024f744d366f04cd0be41fd784d5ab041de84a49f23ad0e40c3d297c48cd7c6ebfe5a1e82bd40456bf3ce5ace5ede98caef0ec72476efefb76754e5989b2315cee97c0ecc653a833640bae5efe883253a36de3e6ee4611fcf754d1214b23bd304afbdfcc22ee6f3761d7f2a363a2b14f49862c4d2c2d8e313a05e2f1fb7c26796b6d06133c5d413108862df6a0fe2ad4304087ea6856f751143eafc9223ff45986e228aedf0c80e9c1cb9f44711d07a4df68b2b00db3d3909432e3fb71f9b0b3c352c48661134870302d8c3222d49f960ebd8b55f6ab9dc612f7f8afdc17a458355242921c3234c96ce42676e4dc23b89534ba44bde3029fe0613559325a89659ed30f58df87f9231ecd57805b41b252c856cc033c36b0cdf44d36bdc6f3837e0a40400837d8d094ee1d4a8a65441acdf555ca5bc4a5c1a8a35f1c9ec1dac7b97a2ca92a8d2938c3ee0370c7356b5f4195481cc6363d5c700a99e5e90990284c6167adfed695ae906059c9ef03919457c124d1c619f08220deb8dfb9bdd0e83e598fc6fada87d8a30c6eccdf30d61465ee16ffd265d4cc463c9a4b5a8445e42c3df2f86e2b26b35e9874e58b2afdc256b40972018e04d91614f45e2d500a01acf693131a655db5e2f6df81a2af82afd39c7aec4d16f8c2a9e0e5c99c25b776669b0e2aca74887e128724bc289061ca15ea0335ac2779633976e30592da325ea14f59ae30aab47f0301531a34a5b732f8290b479eaaafdeab028bb04ff88c0cd3efde5c32ba318e3aa05456ccb60eaa54cce814f3c0eb926ce99c043c806e74e271a87a879c6a91737d3016570213e82fcbdb6b46e3a4b01014ca2dedc11700309ea0b1c0f2f84ac75f44ad8adfed7d957fa5db3cf256667d8ddd7105a025d170fbca1d5b52c7669e29c2b874431bbff76a399a44419be1fcbf6078207feab684d4b0639f2d32a03b7b1bfff9dec138e388ac988903eb380ab3f2fca58ee0e1328e5f20c7805bd54302fb5da1d54a740c93567030181ba918248c5b595b1210575f4860bd7d52a7aa30cf010ed10462996ed6da73f272a957bde85761fc6796eab06150edc9f9b65774251b82528d84ee483387cf691b6058e0a432f5cd3e4bf8b88481781aaeb0fb94a9ed97bb77f9e4fe21d38574080c7c4efdd687940fdbb02bdb8c2f083daac6c246c749ef5bf84a933f327bb3de1a74e48a352e7d3f4f294f71f69ddd4050bc8bec057f688fe077817121c7a12a867d7a270c78a39db48f6c83c66e0b0038df03649051c20435c8cdd4c762c7fb1704d18806d5d3adaf6c02331a218c9fcb51f867b1ccb33a0e9661c1100ca90bd35861f3f72bc2632eae170d91d02dbc887f998954b24d7fb718bd83d5f6a8647609bce677f880edadc762b8f3ab644879020580c85d537b78122e8d6e90e372b63491c60974d02def55292d4aa4a5c20fa34ab97145c6c9c2509add7a558786713828d975d58d8d50fef4ceebfd7cd363d437d4bf6f7afe57d991b353db6f7faef22d39e8f7addafee6fcbcc1e835ef7b7debbcbc86322bbbdd66d74f77619235a640cb54cd87a0fd428e4d2c0e41742062418d6840bc426bd06d12ded959c52005981a42968ad65f415d4a2bfdeebfebeecec55efbbca90b93dce32d95fbdef2ae3e376dccb647ff5be63781bce65be973a994bdf2ba37d66f76f2323a0ab8c78eb3d93ef568789cfae7d94246302052bded666b733662e562835b207a138f9f47e8a3cacada4295c880724050f5d3a0bfa310d043c75cac9410214f0f09709e9b43768d2b2cd1cc59e81094106539f02959b6971710cd26990bb812e06790dd0332f2773b88d285e8f81dd06700cd66b10b7b93329e1b65471dc0d7431c069809ef13ad9122ba7413a06771bc065dd4e32c4de3500cf609dd6f624882e8e017dadedc9f6039a202c94ee64069c467058f3fa45fa616f080912d66e7f396e2e1c1b46e986d6b5f069c5abd34fcda561aa68a5c0ef15af309dc984699ebedc9ba4ad24a3750a83e7eb5017f6ab27769d2edbef0957d383eeb0353cd23a26dcd815cb0e213d4e81da0b8fc6a3bde1f47bc8744ca8b17fcae640fa6002b1178e96077bc3043ac6a399e1e1b8913b8934d478a41326d5b03dea4c2a0e48bba1a545c783a667428d5d8b6c85aeaa004575ecf06a17289b6a1d0248703f783cd2e831f3eb2cc760b81b541c686466dcb503f72f6572377684a2fd86396c5f2012fecc00fc806dfb78a4f9dc31990a356ade27cda2086c0f3a828725742146cbe2c8cdfb3d86c7af4ab1f04c960dd08ea110610b6f88962369f849469e685c5e95f83e2cf654ef5597ff639fea2db22189bd3da2904892a62f04627a78ac41e2cff582924c8c7e8035f5c499161531a8586a1fb052e14b01fd60ee41698196080190856410751a146e20c78a433e085c8c063a238c16f63df3501c52df96482d7612f21401482b8d33b8e2b1386aa2d3ac5346d1a88953c2a785aa77bda38caccf576c09e1a804e6b73f353dcbaa16f76e2453e82bba248cfe95d09299b32711a84ea3f2bb3b585d2daa48f1478d6ed3a10821a493b3e19aea709f40a45959b1bb50d311643d9f6240c700e00e931a2e945948cac54076b371fe3ee10b9aaa74f4164dac5ac302bc47304053e83634bbabf23504af24e7ddb1ef02a42d787a037f22e847a72c44f0477ba79063b69aec8db56c2f84ec9298e1e520b25d4fa328e8acd38c9b9b52c95426cd2979122366cd6b8e8d4688fba366dfeb7d0ce2116353892d94632388d840493be6a30dfa08122488bd8a61f52153de0ff2031fdd78045a589081117546ac177bc51bde2063c4d1b991bd4953e76654ff82bb10a93c51fabc6785396bc4016be2ce7877dd20921b9ad7373cd63c8a0be250c560d3c8ba3c22652f7ff5a14f5f3899ad6366277014235c6d83f81075cacbd2d65064a05a6e6415288a7236ac9b4ac7497b9542ec9392a34e9ca43491fb2d9c346a08f7e3c2d3a6d31a9d36506c5eccb26e14c55401a6f4b6070f3a580550b63d2278830400b2ecca0b458e55a8a220f9f656ed3add26518de89bfc937192a7090a3d255e22d17c10bb54b1aff9d478efdaee0e439049c2fc8358177cbaffe99eda390c596061765d57b211e6c6dcbd594417d7240875aad397def9ca3ae8db4756586b00141235a17e3692507a88d28171b1b08ba9410375f75da225ad1398c094e192e44a592dd17e0433d0b1eeb3b88658934f761321d6bba6631307274c5c4c69393287c6d1766b7e7110080436dfdd7c4a4fc8e613bc0b0725a339b54b115c0fce59982827477e32858ef99538f157c66a1c742fa60f6c18c05ab836388d20be18b22079458d0a419e120050365819e9debab4250bfb0c81383360a251b0670ba59f69022e984d54fe91645b3f42ae98fba30a8422605ac59a86165041bb5e82cfc7dfd07b60e7454d6fae34e4dbf31ed449587e787860fabb7cd8c0188417b9da91cfc79e2e67e8f8e4f734e0ab51a58fc0c260eec71a778fd69db752cdbc0f2c3727ecf0d156b0dcba75b3938fbea29c6e7dce539d1828c237bdcb0bd4c816fce4ccdf14f806f903fd3444900633ba00b3a9b40758662f8864e65712f35f494ce96f2b329d852dbb1c1db8c9e051a9e14e5c08296474fa6b4948e5cb0c7c867133ad03a512851345e1a969df545abb9f892c88ee4b0e0356b7004e5c980dd122841000a546a7a4b6f29c5a1957c8c830024b62e0232b4b919ae3c4be95b0eb93bb2c7b6a94e5e405360a33b8c470bb04006c56539205f886d133a3867c718e084d44433067d240b970ac64a34c3a876b6555f6509324a1858e884ae0b60f5e9e50a6b7489af62f5aa107304ef8d247e406083b779639e4f9bcf255009cff2a266480053c7f481492436093858453758ca40a5525ecac1c18658b572516074b5d98b1eb2cfc24040d2a49add9a2f24ab610189a327f0de28cc46e083fa838753579d04c3439adf1f7f38fef8c6b6af649f6ece3ecd4f84660d533020bba9a3140b950d66d9e66c3c4667baa6e429d989f2fd36d1c64b9475b98ada3f572d9aeaf1a6d917eb4b0c085f5434d358ec055020297e1592f360b5ccb792e43051966383f17b893f2c0a57490b13ea426b605302c3ab86be77314aa233630ca39866dc655944a311d7e8615fc58096909ff8d898f726ae15141ef1393ead7dc24ccd7456033d03de1e5b0fbd8e0cf3ed7f847fd38270fe76be57046bedd36a67fea273d20290ceeb7cf3d7bcedece3f898df65dae557cf3869c0ef4097603a00239afa056e0e884d349dfa560d5277f6fe0255efa27d35b89de82524eb0b51f107fd3ae512916cc1020e620e1767ff1012d2bd5d07ecc3ff414721037d01119e46fae50d72a00bbbe1005b180cc6e8cda143b99c951a71848fe7d1b1cbb6e477e0640a8d526c8d2ab3dc796250ee3e8eca3d62c4851a7e1b2104cb46650ae55cbc1c60957335bbc63d8556d677c84176d130ac7b50ce9fed32962b9517caf2b908730384e7ce2fe07be200e01b626c6166a0492712fdfa670cba59656de75551e0d659837e0479aecd10714aa46cd14d9c4c667e1855cddb0c44b8449b218374f157a6c51a7175d351c21bfb6c618b0b48689b4ed25fd41a7939f5a7a42754e8f223d917245731331f3dfd569eb63ccc38ce17234330f17d1586fc1bc072336d29eb4663d63daf4d2af7a955bcc88871381c6f8a2b0ff54d3603331eabb28029000e973a48fc7bd36bcdf9b10ab245d629c2f8d35aa3d17c0c611611a9d0078d761e8b071b61d109c6924200a9117de148191d927d54c3191a6b289e31dae67bcc5d2fb83a57baa12162ee62cf5934be2106576f51b70416e2ad2c60e0a3757d57854a3af283cca8c043a13d9caab1ba9fb1e6d79e5b9927ee87fe76660b5db10f2bfefe91175ca9200e053ac8f32377ebae4380bfd09e44c54689b3e57f2cad8963a0b12990d1c2b44c616bae82d2e0ac334fe25269177aaa77bc47a5118ec19636bf4329f3d89cf698cc082b6f48b22c63646edc96211497c9ebb741cde1c8d90e78700b1ec085abf3ab672f6d96b5c54bec3d16ff0b1bdfe57d85e1860af078c5c3f754c3ada4f3de1175f86bc32050615eb22c51a8d1b1e34e8a1e20fe11c334c54dcb4e653838b6743c43473949ca515bdb1ee4e695cfb5c8f518a074d66e98af355b0d55066f79a830d2d0d7196d7396fa45588b37acbf98dad849ad5bb396cdc3294344beebd82089aa6e655b9cc09c4e1d8648b2166f79e031b5a0d71869773dca04588b3f496e3cd2d8434a3b7396dec5b4b2132bfe04c5b7dd1d238472a4d1780800fac012ad34598f08026a0a9703c97ca5c73fbcdec1ba0d8d60bce511f20f1c90320896e317cd9e9e5125b861e541a61f652b7016eb4e786059bdd3298249999b5af5a4e0ea82d1c5597f14b695fa9fe3becbdfb3fdbf47ad607ca8e145774d80fe709b491d293e00833ba725ed953f9333ea0b643ebfc3ee3da8806b2d38bb28589aca12480f58d9fa622c5d2e856aec56d7e5397cafa70e74b210902c6f22346afffe63271454ef63c9afdad17a3b14a98882dc82b1c7104a3351d3b8dfe5bcd9a2077469cc64efb731daf49525d94e3ca922d92af21bec5bdb95da110fded8a2092290ce37c26aa6f93c41edab5df2c37f6487983e54b581537b327ad07a760039674ae961868f2339d3409b90a34facd582923bec280814f2791b00673df8eb6256ba701c6a6221ec14430cd04d8e036a5cd7324c2de77c3618a175c89331d4e368f847e249ceaf778417dfe6f76a38790d08ba9e8ab78a1d0ac35d2beda04647c472f48881f3ddada6f0af7424c93301129407e33fbe1fd7fcc4e748de8143e5ef8732ea1234bb3a1d8dde57a8ca883e2965b0085f1b8e5b3e74f208c3fc9bd31a2fadbf2a8f29f8e4ba94b27d8a44f4223a9566564598985347961d4f498af62faf47e4d5739414e06842b441593a1c872d1acfa7352a3d5421c594c2135b1ba4817889fc0c0f7655403de3f6714542710b1019251393f0022b9cea2b0fd1ec5e89c7cf1fab89cebbb29bb6f08f325c9281fdca5438209e107fc56dbc333408d22c17e4a5ccf494e1996079269ceeeb488cb123ae531ef65a198be6409421f6da734f77921ed1a4c8261ad9d61612453a7b04ee5948f7a72b152b2b5f913b09aac5dc8c45bfc74c5efed8c4cc45be46109930b0158beb608c67e997bd7e8d29ec424583586e9ca779d24ef2939280ba9033092afa40c290d5e877428880b86dadb8333998ebe39f0283d53c7c1cf91b73966705c5eac8c79898b7a2721b5709dfcb0c92490291c38d10e4105cbbaf123bc0c8e1b3bf48c134efa796e2bd4b76d54b490568ef5769f490655f4659dc58dd4031cf90be20188c38b1b3fe17bc1f10de46546ff8424a068276c08377efff2c7d5e1ca8fea99e73cabde58feb5c23b5a2bfbbe0db02bab81bb2472b20a61b34ad83cd9e1681bb3147005febd318ed12c30207c4582904a2b02c622d461a5a7c3da3b0c132945aa641a94d3bcb474130e175568decfaabd3c27e54113291efb639b498ded552505216253d43f692458a63f672f5cc93f7dc545a996a74f6aa37c5aaeb95df49ae95c3e31554d68584119cafdd34f2d592b0314a47cb5f6531c01adca41a975a58584a85187688834c22c9e980f952c9880015127536aba79f58c2e896d19da8d8231ce04edf44b21f9960d616cadfe3da9061c6a4b8ae8e74174768087c599b568433a5278e33d7117772172e05f1cb2b8d895fcacbc5222184a0400a574dcef5c80804cc7fc046870914ac8719230f8106e273b49530c105aa5c1060557eb3e3f395c12a0a008145180edcf44f5e78790461aeeb794bc9b9071246d027cb8b4016759725f42666906d8d26c511f325a00a3dde6144dab6333a370eca1509717d5a9d6ac66373bc820d0867a8a77095138043c5484e6f264fbfcd37a9e991ea3dc388264f550640b7d617d299d24be736d916a87c20cdc13d746128bf656a58d9e694ce110f34f0d59339cd3e852ac9b3856e51cbb3a62008d3bbe02f5bed6ba6d76470765a38488ea161118caa7a1bf789f12bbea4f714d635ea1aa0ebdc5c5fa57b2eee21c036b9be076191436244e432aee6ad0f63f855171cb6224b6646cb0cf4d914b86f5ffdc283c9488bc585a9de8290daaabf4db5ec04a35114d729c2f405862ad8ed7407fd0730d5e451723bcbc129ed8f6ef3754169f3921797b8c8d0ca9f8b62661e0c0532744860c3d3b9da46585de3191e11cfa6c531db1ada83f7ba6e3285b6fa1b709c29049b2c7da83adf4b89abc197a47510ab13c5511642d7c363076100c09e4800fbcdc846e24cec97f611bc2adec63671b9e7d25048f20606b0e91845706f6fba745965d65cb8272f21619c828caed7a671ab4a2811ed8b44ab83b18c5a96618c8dab8c43b98313aefce278f7a8c36c2a34bcc705e417c7fcfb1bd3c2fd3c4d022528153a2bc01234c5905fcfe9be4b7a7807124e4d69a812a36007e81db71deb4323c710cb7114aac5e4f353d1b5fa4d78ca72f73418f430edac79199f1558702ebf8cadf7544bc0e287c721fd8763455a8d67b2bda28dfe1e74c9b464db2ed8b51d8a13b9dd039f10f385f5d4dec327c46e9a3a76c73200459e9fdead69b6aa4f2df778283872ac2ddf45dcbb0320e7cd0f1816d92c57074b0f3650707ed40194bc3f3b5c5fff4a2801eeea9b79f02b5d9e2d0fdc89d91c26137502ab49fd69fb59de041de291376a3c8925eb462359f0a836dac1597700c49526b103b06eb829b62e51e7d09251a2892623b1fced73948704f95b48d58532cd9afe8b8dab7e77d032136699b45f3a29952ec373c41802ad1fb8ea8de618a35259d48eaa92e885265e70e26a5075c1e388ac311c72a058e99e9024eca5c4fe63f7798dc8e1a3da96f5ba56cf45e804299ecc1ecb6275627162de29931e1e54f76242ba66ead37e66520bee442ba9e2ef798748616c1566ca23f0bb5d9262737aca76c2979aa03e3061003567031a69125786aa92ce210756417820c517c189db59c2ee326560bc0065510f3b1931911291cc3e8443f62d75e3bb3fec816b961bff72cc91fccdbcf05a67398791296960eb3966f3b45648fc4ad1680ea5cbaa34ea8ef2a72c2a5355b1411943b6c9c483c76abd03f9b2ca3cda869431979a2fce0d350271ecca7cbc5a95bf6caf404ec65797a9e559584d4f098a230cd3299d12fd6cdd7722b73cce2ec6045ceac1a5f9a5a6f9a652ec6b251463bc8a163aee35eb83ba7fe701fd25e7b8128a4e09730e7e37d02337f76dd3cbb9c12cd8af79ff2746a7e2eb8c33726970e1479328ffd81087242919a3f75ffdf2cf4d100c43f9cba522cc1a3eb47aa7d6525d81a731e647f69dbbe18c9ad867ec0097ca0345382d07015abe6fee48d7c66eed00691b9428d1869fd43894ba2a8dd063287e1560ff58cff2733ee668ae0d97ff9f9c55e73d0c422c4dec8cf10e0355ee83bb42ef6fa87de8d50a76631be3d6c6e85cd228bc8b4c22adbc57ca2b1ef51771cf27bdd103c8cddbeefd54d7e75b96233bd2c3c2bd38cfd1ac12d2d53737b50d71e5fa41cbb3e7d05d70811e025ba115f6c0367ab9f3b64b2208c3db4c2407c21412f13e1f4519451f3b6628263ebfb7bc9ec9617e163b9c1894ef403e37c4b11d764e070ea74108a800a285913e178c4a83d051421c7e0e3a2a5f9e6959ecbebf8b31d2788dd3128af01ebf418135dc60b0fb21006e42b43cbe8f1021670f1b947914699e31748d8e158a8a7f50f1aa13318ac895ed04f3d17461b8b93a1709f2954deb1aeb1cb7a25237e6afb53cee31e4c93b37037e64911d05d3949d73d2972fd4f2e9ff5bea648ec2e1a0e9184ddd627a0dd6581011a3493cf45ee3d2b18ef723673274dc1af8385b82512000fb1c11b8a99b98545105db023a0d863c1cc20fd90ae1766dac70b48b79f108f66fc0575d23cfacdbd5fc25839af2130c4b824edca27831084dead7491cdcbd51962849567e249cb1102c9ee6c626b363255cf68be48a2839583fa4216144d6a80cc7ba36ecce3d2cf85252e2a72e987b2a40aec7b48ed6cd3583635d66d6a4a6d4f5a6816cc4770de7e64c32f69a57f5ab8bfe491a77457bf2ff4c134ea5fc4651c15fa1e326652c04f675372965872b8052aca77119eabc55464916b3012d05e7183bca85200600423a4c1ce6ade183cf9e34c42af9a6797730c29e8dd31f4f8f2f63fb094a685432fa6a3142b19a55cc5abe9b1cae9de983d4b73d7c90469394fe761b9f1e59afccf8ec18b4d116e502be8623255b1b40a6c3cb102dd53fceca9eb899b152876db9df495a219948aeceb8e743bfbb6db326c61ad2129ab3d337c9fa052a0278ddfc225fa5d7d2b92f3b5c7b7b393a832c8570b515c06563f4fb6ad5e159f5bc23b6ef99347e07bb338e98a5dad32b46933c05ca8dea675d831badc0acd3d2106fc880c83646a4064707f068f91ba12759b557dc522387fcdc5406d9c330c8d6a020eaf5f483b7e6638323df28c85d86a8daa0f10193edc40f3a8b8a54934ef6e96cc18130702530d6c0d9ac2a60199c610a01d4aa305f623e4882d5201560a61e8be20e9bb41340ec1231b5f4ffe6c0c969cbd83f7dc5d3eec566259131c0da4d88496b58a56bb4e488d0a8efbb0e608aac85131a3b3ff3be1181e0cbc2f768d8ed5c00711806f948ab37cda1e498f72f9c884918ea3c7cc8feec00cf31febedccf1b34616cc43620236dbe415aafdfdf9cd48f0da96d6dd29f90206b9a3aafda39469b1bad4f7393f46d0d03ef7982fa30d738ab66dc0626bc7c25b83fd096d75cce61ab89e8c004c63a176893fd880fe2c046fc48837a1071844934d8f3f45a55e6bec5cb8055bb56233837a415020bcd8ab35fa480d5e6e57b68cf04464896b10ca1fd43c93c5aa4508a9eb88a1be8e6a1186c08e14ae9eae48975392e42a0bfccfe2c82654661a1f0e742b5412d0d22f7cbbf260b8422f054fa147dbcf177eb96a8a720e4e26d143135da41b649478accba45eeb70a8edbb16395c36922d16651298205195d2a39cf87e018e9901d80798c4feac11f3a56fa04b8d45861b2df3a928bb6ab5559470ed5e6d47e0646d952de9fd1a0cc341b8c83f7572d07a71222aa69c72158f84b9e81e4680d0055745d0d5f13f2eab8732c5c2c0ab6ba1791812d29bf7141a2eff528d03623ba47b21b2914fdeeb252625a90e3458a5c71223c04b02cce48775a7ac0ee52280e90e67e9b9da1d549726107ec82c3b3f75648978dee2c7f8cd503f34781d128269f4ec04d8e01fca8a250513b9cb7325d226d49c1ac1f106fdf31405b9f069f7f55483d9c9a143638f5856c0487b9b54060dbb33c9c68c65f96094e78b02858dd23a05741f121c91d1e319fab732d2002f8a0814784076e16f9861c2efe3511dda7b0a6d10d06de3cfc02b9b3d1acf2ec0036e184fae0219d13eec1845683ae21d1852982058f7d22e0b0404d691161e3ba45a825c81c80f6d74763eefe6dff534aae743db7760061e20461da9e119fcdc64463c15a45640f6fd7382d629bd7f8036dbcb8b8add67b68e0810635718cb78c815d83613d59f496162b5a15670e3a51df76e62c98b0102148565f6fcf04ac6916f3d6419bccadc0fcf2eaf10a48509ef28568fa250d7a21261397f8ebbbdf834ee40f22d2ccc1d00d2103e8250cec113d72115f3dc2181c43c2a9fb7a66a796ceb417ca54a8833520f145b03c40152ed6d255211688da6a9cdee095c58b8c66eadaf2ee1cd778b4d0517934d2fa6f2e004be5d81bfd163e793ad505eee573eb9db432af6cbdcf65ddb929f79f1dc888054d1067e8fce52ae39e85a3106cb9e7c645eb4362616261688b939fa4ade315be9c32b717874b467c4665d5d682e1a2c51a03216f12b46d56045c586e6a437fc6ed0a988817f85174012c2e704444c7e0b81dad0865e33c2f76f3c12088174df573a2d5db07e148fae056b5aae0b0a948ce0a6a8fa5db5e02f76ea0f5661c36fad24b613d3b18161a10c4b882cce29a45e606369355afb37050cb49de92f359e02e0abce4d603b53d8e8fe24fd6c9df7ddaac1e69bc7066e3eabe7c571f522c95d187e7f8b69fd3d934ec6729ea3edb5679f4fb78c06e519665cd4120c9e2bcb01decff9197dd4c3e6b14062ccc5c5db61a470f9bb02560caea647f99fc8324834cbc06b5e7004366b7d58bc0b755d33d79a1fc3634d479320f220f43a4f7a877dc3bcf58ddcb221f9d7bb5e61b7e8703a08f8fb0e82cb4763285e9727743e452eb65e36fd05ea6af2d24fb19b21127820fde3a92078fe20f4e6fb5a255a737db7aadc2c14143842c00de31df402c30d68dac00bfc882535d95b42b20c7229acfcf39f3b5bd2883ba441dd9b13fa115f769c61b6b2d475d782c482f3b350062bc415c5ef77447309d1f176bff34226de7527cae299f01b24b8307ddd716901cb9e193a227ee065340d4469a083a6f56447bfc5823af0b99cbbe08f300a5ee3cf879da70406500b018d745de4d1b91b3cdc1f60ec81dc4540144977bfc6b11d65c8ddb74f8ef3694a02d0aeb7adfe33279f6fcfa2186c9183a51ff701708ba02839fa4bb38800b0ac52ce1bfb487191068c0ce94a1117a98280e043bfaf8e64693ed599752626ddafee4f8d8e2de840ae2f15b5990ff948039621046f00ca46bf08fefa0852846f291b9b3f7708b4db34628aba19c56963c06547720fae717ff137a93016810c2e5a2d102c00d25a64ad724e0936eecffac7067c23e054a73c8eb419babe24b3214d7835b1dee3032a15feb4adf90117f2a24e394fe0d2522326479856b95fe0354bc4db81d50044df9dbe27fc1c31ed60c5e9e3ffdb5853cf625ba733cc45b39017bddda810ccb2b0a2ccbbf554ea7d24476658224bdd245fd11d9f6e6e283ecbe0029565d163fe2fc813b69264fa705d9ee7385d187a2e199fbeede253005713a22dec0cc2539fea446c7fadfe421abe496192facf0ee4a5546dcd9c7af34e6ddc946429a72d4bbd9e618be21bd1f7061ed446bca7506a66cacf371663916afc95a7c7100a7098fcf71fb91cd4d330b961efa171548a88e58403ae759fe7e2a540007a6d27b25ff2c57712cd8fc2b2c3659c5bac3d7a3a8689f2c9474a626408e6c276057c2f309c24117e66f1f9e6361c0cc8236da094f181c40c07c1ebcaff227e751493092963cfe71e46cfa91009df42f006a1b36aed0a7007f4ca489fe4bc5be1fc551debb5ee955b3e1a34eb48a6d9886fc7fcee0bf017598e8b72376f8114a42bd7be0fc728812a197ae28711125a0df00f492ff49a0a892c2d18f0dd2d6a18afc9dbfe60a731b062b67a330d16235d893c57116603bfe070b58bfa70d4c1af208290ccf9bff08f445618fd402528f9ebb1649feeacdd6dd667b3732a881811e6a7579c5b6f4db071db6130c17d4a593b7b4083724e536ce41bf87e9b68c4b6e260f1b7956721431a879f09ba1d35565bf26dc1afd9f3dbe072e125871d82cc86fd6411e4d5bbd79e385555aac8f5d4b561d57dbece66eda42d1751b8edc1a070db28c5560805985adf8c07d5b7a590aac6b21db7a90b0fd37ad7ed90884d91e212a492d3d4edaf51e45de30859161401b734bca531a1db0e792afd60b61d496f5742063e61ce2b8c838626dc189df8cf26ae6e0c427e5fa88ebf4911185ea8f05d2a0627e12945798b5b34215b5ac40857b4c1f6e71bc7d8e24d1078eeb23df2c14c8991bf40858f0b8cf69e44cfa0ae047a289a014f3a5d3e016ac1da8d2aa5d95ed208b43ef315a935b0ae4c89f87b400843223704c80b1df7c391d8c752895c0c84c0d235394769e21301b7aa2e758bbe00a1e1655b025d934ed22d97f270b6e4b1ac8aa8b4276381cc98c21c932e7ff18d6a78725b21b3e06fcdf8a6281786d875bad95c8eaad0d7a7d77b11840f32f69d8c5b8018d84b29254d06d6b0806a8e4c9d90a60f4c7ad8de3deeed34f7555c56be0a5846a3d5f6f155ad36a3e877a97c0a066e03c04d7ba93890d47ce9e5bb5dc72a25b18c56ddeb7c6e82f92564beda234191b31652213da7d4209918fee1a9926865cc5c546b4904f31209699b7586cf201d63cc84d170af4e35623ece7571f5684fe3fd7a3c9a448fef5b259694245e05197c48d507222f6a4e1f1b76006e507ac7a638281202e0324b3577f6f781f75ae616b869b05446361209afa199a4630e0f434e782388c3ad326bbb611d4dfd76dc6a7048094f74bba644385741c513083dfeb2f164b0d488db6e9424667af00d7504c1a893016355bedc24ddfb2dfe7e4c43f6d6ae0426ba4fd8ccb3c26e6a9eb568a70c6ca2f57915a9bde698c89025b8f5958a4c9de9db606e88bd2399637efacbb2f5419397c34f2d70126f7a8e9ffcc866e65f840d43d6834b9faaeed353fc8295e427f796e3ef4f1b33bcd679e65102b1076c4e23a263d60556516370cae6f2f3c58713827fc5e707ec7c00dffb80fd3165f2be0e030fcd1aca269f1795f6d911623fda88261cd31e1d777fb0ddc4d6295ccd1edffbb5d43d0f13615d69534f54377da0d70f60630b36ca6fccede00cab0014e9e748b4c2e42bdf0d6fa88272389935d94e33773b2b4e8d75075968d319d0e94f600211dc1bf591462c8bde84c28883da881d44a10873c54b8fd8d86e501fe29d9b5a974f86e520b3b457d72a31d5fbf8f3c59b0b42c0cad579284f45544504f15c93883499c6f4a88e7c537ae70473e4d3d7b69151e643de3a64a0ee6de431ded84e84b52b12207dc725da086e4abae41083bcc95084a009ed9e7a21de4c4d2d8a680bc523a8ad4f271d34d99187aabb420d10fb41f874b56967a4df7e7fe8834eb9af421c51025a5fcf1e62500da659376dc370cec8e7ed04c30b6f144b93a0e621b801e3c22cc5bcd009ebcfcbea66110a3747bd848398c265da275fbc132e6c4a3c9b554a75ace59a52d69bc8aaca35e83c38b505a743f55a0d7cc14c1adfdec8e7b8a663d0a27ad920d38f492f58ca62f89aecf41ebd2f8cfba8827fbac17f8c2647bb54f28bd005e921cc0b0ba3b28e7f9beb5314cab811603474ac18090fac6bd819cd97ed14521f7e48256e1ea41ae55a6160606f5fc9a7f773b3ff703dd0aa81280386cfc1758918acec36c8f9f0de56ec026ccf40761080444e0058caffd70c50284bf7ec7d1037d27918bb1c3bccdf61bb05892cc8e0b50e042ffa94d6c44ebe631705292a20f8d2c29ab4c14e78e94c5686b914d280bdb548576bf907128ee4ba19feeefb2afa6cea9d7077f2ead9d8781c6f008d4d208f80ea349fec8ffc11112f98a56abddbf0e67989d5bfc0be024009a8b7bea3976fc69320da399ec9c80290d83c5bf50928190081199ed3415914094c677ae20ed9a2ea9b694c80f2b6680f50255f107ddced82e1dfc8696847f45289b9021b5717ba832bf6e7e271245398a636ebf5dbcebf55a1813f049f168e45b4b704a289b583cafbc79d10f1aa15209f2c8701f47f572c231ed41523a3cb943ca34414edbdffc67909e3dab64a68a8169a48dad32d07b25347b159522be77774cdee2a77c7d665f0d7c0076e27f2492d9c7756d4b38e20b7c00ea504ad6709b4f9a13e09ee6007e4aea20a00e6433cce5ef16921e2a9a9335f256f5158fad6a79c10881df1117af0311b2722a007167b2a2406a0bdf02d76224bab1bfd921307d0013190f9352aa8dbb0775b830fe9756a74332a74cc2b2201f0bcf0460353f7d2cce6d5d2be110248e93cb609fee50360328124d68c76a99419c80f36fab6a3bb669442822f941eae42059880acb119ed62997e441220ca417569200ea713910821095c90294e083ef6c4880ee820704ac63031d4d823201aa0ebc4d4e96a2b8e23084b785c66e40442334af7a885541bfeae28906c2b8baa308dccf966176ad6220ac6a2faa3f4b72c7722d64ff39c999b340ae3d5d3e936c8cd041f2405881f4c6eb1b08258dbbd828259fc4e82942e13cfe40c34a4bf913a87fd1288a253fde4f5aa4895e0211d1d31724984a0f424681b06e5ae299e59d15e2a18d7a1d5158794a071131f1106aa8f01f62bc6f7d32cc9f69202483e14cbeb46ecc218b6016629910f583f0705583b4b52397a120043429b06738bf849f22e5205a215937240c1324a55f3969afb62e8682c6b210c4f0e25396404fb10fe531a35a82420363885b51995213f1cf30619498c224b24ad5c30f71f814366318d8679ef73dd4e81a8f4b3d47d539721f8d14db126b36023baa4b2af09be660f6ac9f231dea87b743985303ccb9beacab298ad42fe3a4cc10943aed51c14070073eeb997d711599227017ab3273dbd0eddbe3f3d12eb8d61ea0e016343749a851ed192d766ab323e6d8a8ccd4b12b947336651daf6545f8c0045c6f23e83fbeb51aee20655cda64f1c18f7cc38789138ccf9ec419ff07f681e963e371fcc29c3a37b96652831a90d4e89e4e8809bafbc26f1170835ba3674cf8426f460266f7e10a77960bfdaa5677dfe0ce3ce989c0fcb214f2253cf4e1ce1cd0edec0a3ebb6a55aa768a1a7e7212678198d7fb7637baa907b70b3b99fef23ad643739ef04b687c016805031458c020fc34bf94cf84b187f1d7efa1747aae918a40540746014c243f5690d6589d4ad5b8019ebe9af078b5d3d77e865512a7878ecc7f59d453adea059b1b27ffa2f63081d26bfcd919e9d91e482c5fac079b347df80895cac3d7e88756fc9223e9668cbfc205b5f4ffa9f604176edcde65ebf17ca6cebd85be3979d00956645ce5958d627a4a9740245533ecbf5317329596b43cc61a91474d3444fab307bfec3d97df36c0e7be21d73f9d45e04057f22e69b1db3c4d38a7338fd42832cb2602c028ae08b7a9df3a32dc9684aaeeb5801e4e58e69b98358e75552debc8f32a7b701a58e07060dabcd377b53a7229a3f7669116662362b0382877bdc81e60a0eae4d6b39d0843bf6b7fa2b712a2d032332efbf3a017424282bbe4dd197b82c56ae36d4a2ab1fa2f79ea32ff3d333a40a18517f955f7e810d2170551c54a30995c3ced4bd880748f98cc8318847820908433c0d98b3b885716f20e48bcb7f5728c25c81c5a02480010735eb8bcfc1b3099399f823e80c94fefec7a2d127ba648225bfd8dca681f497959b05bf467c61fe80bcc5068ec3d9a4016b941dd9e14ad35cb7de417c0cb2d970ea708d13385641d24f5355834ddedfa532034282d2507edc1e33eff6a4b7115f4f814931f688b497ca8e3f82d0bd467d384da04416501b0620fe2e90c38cc11bfb46fd16dc4e4b2344f8f987511806ea635549e6715009b4599d3fd29fd0f6962c2dce1c6464cee1d29b8e44a9c281e0214ea245d647602f02b179444b6a0bd531d811b7a41631404241de7425f1e79b4abeb4c88d7e1295212d9fbc3f0605e593a37c21b6a199fb1931e1c3656fe4e066af59b1edeffbe893e586611fa9ef7e3c2e3a0ec212dd809030ec267e2853a96843bf898b28326fa367a2545a85486af0e8d3e2da9ec07a87382e6c73706f6c867b5b05fa042c50ebc6cadec0db68a6a9b6f7f7451c41eed56039227793c0ce64b4ff36312a35cd3a1494d64122b00427654e5c262b560389676ce1e960c64edfd7c3a3fd6e184474bc42fbe71e7d7e4908e81b131f31ba68c64fc274e4f7f56461d9a47535d899e64f3743a6e5ac4980c631045ea33e880ae7ce971695ad4e6bd14e466b831bb77387bd059074049c62f944e1d2bdddeea1a55038812934aaf6be177c0c53bebb8c533133b35466e92730f5e6490f83f53b4ff334c9d6c35872bf34c48be2005af12a7f42389086c981942eba62b243300875c1242ecbf00929f706a5ca25bfb804ba00d925316b85d75d48d01f4a7eca117c757759e61eb9dd274e9962e5cdc891ad3b4d3c2ac3a4a4a5bb7335937d2ec597f7b212a4583b6d359d643000065c0ea57e724a797e80ab3f6d8bb659dc51332d6044b9f01b615db47665b61ba7c574ec8bd462f6a8c46e7aadb53692e2ae8ef04767d35fa6a33bd0a6b0be51e597a6c388c460dfca0518beff31fae3c376af8f42ea0d14c76c02b48620e21107073488a692a9e672fc58c0d5363e44bc436bbccc46832a70ad03c80f2f18a900e226e5c2b584ef1b7809c3c542dafb29815e2230dbe078a4bfdaa79187ffd93e92e2f0fd7ec6eaa02bf5070403fce33acf920c593d96de2c9864ce81c783f319130d694181a8244643c7137b66e7cbb1a94dbc41f9cb69cde3f4896b9f78a3d8aa27e24cffb30ac1aba1c745cd8361bfa0f4f8576fe49b193491b79477eeca2d3402955f1827e21791ff6d15f60451fcb3d8264a0f0e88a56f001355e31e4198105889f46397f2c508d9163f8ef9fb46846cdcabe64e37aa3ea6ef12c56396b8ba32311dd7398931500f268ff38dd394325f54885c8078f99e921bbe604e1f09da06b89585411211429ffb788de4eabca1690e2233dd81417aebbd421e11fda34bdb4bed8b5634568f46438d0aa3fd0fb44586a2b20479ca270cbd2562426c388303eee8d41d3c5e95f98a33c48d50d4810c57af1cdb12ec8d676483fa635bad3b6585a32410cf6a74d4571122507b65c8dfd3dae68189645b2075cd57e299c2209649a8c26e02ae9dd2f0a0b76cf17fc4aa78673c94f98fa8fc488e857c112c64102a8e2a54796e6ad80a0b2afaee860f92ebe50200b54267537ac00e811b0bce84c79ffe2b70418cdbdb4b81c24a085945f1a0569015681bed4fd8733c59806d1f23864ab561b3adda0c3dce1f2fff09e9d6d8e40429e9f8ee32367bd014540eec8b5e8ae30101aecb24c190c4ffbc79f97854239b0ca3c29d6dec966a03dc8f11d1dce1653da96de7f2f95c375bdb5422574a9770bd778334cdbcd482e2c7e7ac0d4071063dced661a469d998a21606144974ac985a8fd68e5f1b978810ddb9ff4499c1e23cbfd29a2d4c3745318bf4314a6164a2e7d7e69692ec0400b591e7cef1afb68df4821769f5aec82fc80b78228988cd8469302c36500b6998507a5c159bf0c362630fe3ddeec204dd8a2f10c4048dfb7946aad79088c9d6773132e80d7fdd236ad70110d5fccc7f11c9386c4e77d13c1fb44b57a4f0ca234fe8ce9ecd1a8461bcd2c453a1b482d4e53740e025785456a4353a415f10bc43d91bc804239d5e24790fb0f2388e5f61e51124936970d06a00058ac81351cf1cdc59c3c926797a31c36e79bd7ef0196beeb526a3254f9c1134e5454a307aca7ba6a9ae1c3c92623f0c3891d235971b263f5fa759136837580244ed6eee3dda9b980ab39d67aa98b9f55d78cbaeb94706e50f6722eb00205c214607145498ef6cc6243a4e541a1b122df98c3c2e1d6bc966eee30d2b0ed548d1d88cc37208c95ac2314c85414e2bee2d06ac1bbd9ac2662f4fbec7065d0e4199c79a3ad8941049d570a588ead173510d5c205f90d84c3584f9496d15cf652666ba5b8c2f30c7026a75a0acf577deeee240234628a1c7d3bf378d568e9f641df2625bb1735e76c539a74a60b616d87cd9cb01050790b7abda028a2a7bf1110a207af64cdc65f133c6c63099da6e9c34b2840fc87be5e5d6b4a471e94843172dafbc61cac7b57221cd70ef5492173098943459fbb32bdecb0d977de8eae1bcc1591d81108978f4ba9d87fa11a84a97970cc5d88845d589d3bbb7816731dea31103f239fc55039df0c007378457e967728803e31d73fb05599f680d01913a0c14e98585696e12fe91d0a40efddf87642d7b253dd5ee60f519933203aea929794977db50954712950969e46ee851c9bf76a8d3bfc2e03c13a3ad8a3773add33466f8a55e9e59c03125b45edd924b70369df1d295467b353af1cbc35b012dd22e6cf1b1848ab69fb50be1ebdb8dfbbb0858c175972ff7f51a2a665de2c0c053416097c8535222f8e75609b54d4446a755ba214a169ec550a20fc6749705a87cd4c1404cf9d84372a7edfec172c93300fae0f059c8ec80b2579010b2d509744c00545419bdb1a3f053808e96fa002ee6a7ae5ab41c6e436126eba7d78602e186db662dcf80a35510c8b62d23fbdc1ce811713c1771bc65c87b9278867f0a442e319139629128e0b6aed750273343255442665bb8e034998d48ba1e8899ed0d57fa087ae1a490b17d2e56558d503c6d34e209cea4412a3d8a82c4c8c39e3e799bb2ad86ebf84ef1a53713c7432a9ec7df1caa1e7d3b4337519f694a8d81abf5e2652a37aa2b1ac08ad5048fa5b732eb51aff2a8f9a05777bb60d46e43ef90c8495c782d8ac3ca85ffab5a73039a65d22a8d569d6da1426e0a97a21f2c7ea1b51c034f998ce5cb7ca33a3e064c326960158c8edc12cd0b803faee2e0a78ce2679dcf117f31c0af0a39c3ccd0699699251051d0c103ce876a148ad7a3b02c7ff929f23cefc8f31d3f166a3140f32e63b52a8fced31526b33021c9621b2f3ee2c3c209862f715d70a1f071c9fb64129d05355115c6e9eb0b9179ef08814aaca9e72d228b87026e0bce3d54212f1f4a30b0139d4a0a95c67bb6af23a55d4d981fa60ad7c191129aed4df8b63d96ac584b08db2f6d844ce3a3153e728d2b69ae50a2c57acdb858132326c5b736636dfd4e27b06471be245562fce2661720255319b51d671cbfa7063cae5da4b060c6eeabefcca69cf2bce47e8b70a02aa06410f408731349f6c77224192bc6ea618b31d6d405d29804218edb0c14bab0176eb1a2e5588b5e38486277fa22b4d6f9010042df502aeaf0ab6d0b979019b04115375373401c8481e54725699c1a1c580283eba7f623ca45cd024a007f159c7077fde11382dbf6e1c4c5079c27b0d08bde06703a4a691cc6a9b3a8f33380b2ea2ded66b346de7a71ab6e84ac8a7839505a3653817a527337532381c9d075a90030f167c88e6a969c2aa17ace0fe3a39e4caa84708ff7f75b21e85454ea215cf235cc9d60e03a8c98a889b35070e22b7932af5b4215e1a51a0552b4c08f90d5f2e4f5a742d4a51e8f0a8ebf32458d70e8ce34dc5fb44799fa28904af01121ac5e1e723075253284d6616167cfc6e380f13ba51bbe09296122258788712ec1b19ad1bb671226aa25ffb5d37ba808216fe143e078cae5bee943c989070a0896126c7fa40b58103cb3ba18f94d9e3514b081fcdebf28d33442b9db273a96877b6c46d2b166cfb306bfe45f0a91bcc96fca26eded8bd614810ac76b686b0e578d6b96d98316d553b425df6069e480b310910a4af04c0fbe64a06bb009822521755cc3175aa862dc026ee3c0110185679f08df81700a4e9653f88782bb16a9feb5673d4ed6a1696251535d95e7ddf506da5dfacdbf977119ced9b81477f353ad5892bb1b543781521f556d0dfeab66287ac288554528e1093c73638c8875163bd8722441918afab1ad3969c945e3ef082eaa2f19d131a429e89920efc2d72aa2fa28af3e5bb376f00faa1f25e61abf08300ee3db04658f33ee0555213b47332c74aed44020d44727d7c552d2782c1df0b51cc654e99ea27454adc91f9f1d58ae4207c08ca7f832735dd348684033d2104d2d5831e3363dd1b79139743ee72f1b7466161ff18eb31c5d11627ab0e23b55e9d380261ba7ad3e062150314a278c028bc16fcbc75892f9dea3620d98bfca5a45110cbf1bf54b9500256a8061e798ad5cf51cce0f305ea0b838b94179bcfead3901907f572f7535a2cced89dbaa126cf0a635a4248147321941be3ac3f1850b8f2cb3bdb55c1ba3662c28f6830d083c9066da050d728d99b41b6355ca3cae40ba9fcc0d1d4f82e140990214f00fa9e38992c12af3996dad114571560be449cc5b03cbb908c2b6a66e9d740cca21eba79a48e4f744696b986e6983d148014834aca3688a26cc1471dc2de21dcd278c586c9cebc74288b90673f4645a60ce1c6bad5b63e88cdcefd2cc2cb5c9ebb0c21400b085395254a939c669926caa185a7b40ed38aaa9d7d98600c6638f190d01d0f4d467c2e007fb4dd1882809d422f3f3ec55a7214355b6cd338fc324cf5f153c1c0ec568f2d18bba9bae015dd7390f451c8ed9861941ab1b1b136e13d49fe06092ae7e47a5147ae16e6dc0fb1ab619e30e1a5958a8431dc4f1b6772f345f55d84d7c453c642fbf751faf5899e9f1706179ff97382ea52d378a99b0bdca156cff2d2b288db6c1acc7d3b82cbccaf3165c563624a87f71c55ee008ea8721cb0c1f711b8aa9bd4476a905559bf070cdf050941d155ddc21ebca86f63ceeaf2c848cd212950b27df3f4ba5507765f0e114f4dc21c4710d4b63ee6cdd4ec64b3eba292d1c8c141b6f2e233b0a97c6ed48edef932d7fd189083e1c4517996b4c1756d911b7e6a3cb4d85cf17362d8f666c695625ffc1fae2f3346d5000f2e5060f0d8ef575024665609b7dd1b98c6cb2b0b2f728c0611a79fc2505323b8bb5f5c0bd7b290388bbf7e094912841488dca588cd51cce1b2ae3c34aef8dc6f7b5842e747789150298e834e6fe57241c4c76a7dccdf0c3cc007d4dced2b7c0948798dc008a730ac1b22095836c9bb760631aaa08ebd2bcb29514d8f84d6abf8d5256bb9d05cde87407603f6b265c7b61a34fa3ea70eca708aae4326216ba0b603e7e9e05993012f3c59deadcfabc9dc1f1f855944bc33d1b0ab7aaaeb71bd2b24c91ed99c61d445568193ff1c5a892ee8025bfb7690a2d78e076f8417c6f44879545be28fb47b903e7b6e397f49360a70bfdce7b432420be4bc161f27b784f3455330c2149d606fb8d36cd0b23ad2478fbdf82ee872b2a9cd5ec22e9c252f04958523803c748853c44998e2416d4bb944fa1a9323a9d1677092b999f5978e7add13d9780a315afc3db4a888f179485dae79743fc256e95232b4c92d505c4482a80d9316a2f4e0dfad48ea79a30a24c99c9d7ba6b4987140b897ed37c429ff36cc63ee163fe401260e78088454355a945afe7d80d72aea5f4228e86c18b2f1d1cbbba9b9bceed10553e2f0223908b90514e2131c5326e99fd68fb479197fc564f7f50a3e0b9e6497d848ce731a6c67c66c0a9d1e47282c930471135a46bef4e225de8706cb6427d447cd133ec01e070ea414e7e96e6090504f84daa41dfbef7a38f0162cfd06223ad4594164ffb002ef0b326d6b28249d563f2566887521ad79c2e91246fcba8ecab8afb776cd0e8a3d3a9d33de6f607a5bf2c6185ed5be6ed8ab3208629ed4ff58e623e6b4807173c50eae0e43c975b96644aa636ab72fd19324775419896a62f8dc1e7a6d04b69189ea8bbc02bec63947679ea34a8d4902d5bab03722b8db7730fc223cc6e1ed12dc86117cff27955439ef113c8596ca5a3bc6ea596098e2ac284b1ba1d81fbef545436392a7d7950154de89db4665a1d734d7b5491c1e6e87dc44f8bb68c151b810ed0f34024a19238f88cccf1b740ca7623586982f584c129922fd5faa1660bba07a1c64ca0a3b99c4053a12c301272254f468088cad44f189c8abfa132c78891258d179a4e28f44ea0550d30105d077bee843caaf209ba5ad0ae14bcb3f2b48ace037721f1343feb4dce5432483a09fca3f5da78d8d661bcae8353fa75f00509ae75492171b44b7ca4c25e9e61870809cf99e567f6208290ce6c7c40ac3098253ea6fa54a0e43a30610b472c4dfd79648918d8b84714f392057bdd65ddb573bafb94ea046ba22194a0bc8c672aaeed55f2384fa6e5e5d18e2b0626aaa53db39e5c2505c26bdee62282495cfb6338527ce884a3d5cb2e7b89d930b4ab4e6f7a1a647292e6330e205ef9001f01f4169e028d3c7f1b3d942ee6309362dbb4a12473ef4b40f345a99cf9a02f6612dfd5ba42e44831b7042851d1a83a38706ba6232c4a851d8603d975302c5f6b70933b2cc4661cbe0875e7cf6da555ab47434a5b840069c63085dab952588c70937c6922b89c1915422ff139aba44695b7d8865cf26483a26005a1a9175217394c2a4a508f900fa91b76f207154ff7ba88a51b8fb822388396124e77bd97307cd909a8e56ced1da23dd095b68d198d44acc0ce4b0a282aef2a86d3ad7e6cc60673f4ca016e78d493326fc38f703edc0a3a20706f0fad9f5939a8b3afbf37af6c918fb0919e11986d96c266ae39ebcbb19a54c4473af2e6bcab2c7a891fcb54087e8e19c52729b54365ddd6ac89527e93599fb1e25d86cbf8f7f427d420242f90b6d912371d221eaca0ecec2e892cdb0c67b296114a0f0251e70d8f380e9fb6197e83f0a7411d34085e0fbbec94240acd4ef1b9ce75378c8e4fadddd9a0de82847453f6918889ccf626d34bb03566c859721b4980fd3df38848136379ffcce352b64a25ca272180950178c49782e486defa52f04f1e1a43231e9293ac49cec6defbd21cc2ea57ca1b62092b4ae332ed1556ca89b90a78b69edd11c4d3b919e0d4be44c6a17456df1b52fffc5ae85f08a7d232a63883687d46b3a1c94d395512a8b5fa36e98095506e0478c79567a1d95f4effa0d08f7444817c76ba8cf044d50a2753dbf75081b7b922c0db12e4167e4fe98a33d2ae90b7c03f49f690373d9285eb869dd24fbb2da403fb2a1c2e04579d6ceb72612094809a6a6e21d80dd169ca5568771ad5501b338a5d02f1df121ca761f22b6b90161d9bb84a588885430d0a48d8512bbc1005ecccf4c35be062cc61c0d25b07e8dec46ef19b8ff27038c090b63d1c305a9beb6b083d212c307137895f97eae1fdadd2d06b4ca0c63547c409f3d5d660cd04a7ad37b780ca459c10f68dba52c41d46aee89b865e93b5a179822961122f0b2a64a108b65b7fec48f9b08a723e5cb20e69c2705bc03129b2e703e88073ab6e2508729253e35ca68566df103c54ef2c42abdd8cc7c6f086025ba5b9ab0bfe1812234eb23b1bcf0694a8de70804894d793ac2a5741a5fe693310313b54cf4c7ab050ca87c35c8a8ecdfad5f20b3913175ab13ad25e73b6257b01257c964d1d330a0d220eb028c1ff3f230955dbb6167155df7e127631520eb0f2bfe815abde3a7ef990df66665239a9af387172a561ccf1d0892a322b158afd99c0d1ca2f990832f83d9b40d4ae103048d271a90bcaa03c9fba8972231ab32b88b9cd878eac57fc757c3d4b28f044ca1e0d9cd3a6db96f085831a346dcd9b8022b06023bfd0e4cfe0327efa5eae394d3afeee3f3d301070cdcc28a8c5cb7690160390937ee162b470e1e006df206716944440a92e70a2de4c5d1ad17a6558f3c13648257d8b6c6d545a86a5aea8533a2a5dba92dc702ae3a59fe72646487d0074fa189535dfa939e500195423e128bb81c3964533aefc185c20c5213b461b3d4dbe0fe8d8cf897b28f7f4859f304a1751c01db2a6b8779e8e8dd8d07d7609cdafd8eaa13374b25f631b16d4ed85377edf4da2e7b54f273850a22923fc886bd0e8c84d087ffcf46db23545f1795881fac9472cae50d9bc28d1702d52d33dbe0f6c104883e9631c9f9bc93fd0e3ba5341b51daed32326aa94d3ecdfbf3e6e14c729cad87ea849ad2e37b7794daa449dc86750999be13056feb12bea1762c997c46189ba05c4bc8cc9d8e9a9df74469d0b3f2aafc37c36efd690b2115434a58114b97b8a20c776c0cc2e485b7c2ff4cdeb18bee60ceb9d1d8947663953cd5e02b084e6cd05b0579c07ea12b16e5805a0d7c8b651259b9a4e1aa7462007b61f5ab3d7cf4ac887733ac755a1325f05415fc146a55c1bed84829eddcd5dea5fe5bc2b54f05f909fdf3825454590fd8534adacff96128cbb840fa2c280f5e8d40cf809ecb4359d534ca6a933e458918f8124c974ea9ae09916c2933ec7cc6b470bf6f599def425e71fd667ca4d19acf24ce12c595f28289675050726bec2c274823b591470ec49dcfed976234e67cc55e42025ed5054418758964a775d08668750496def6ce7248689734335ea36cc5ea3f634f70d0190ea6cdb7fe5b31494af5ae58a08cc4b92f31d8ca204d194719bb2098b4bbc3e35708cc5942dfb8deaa0d3e9983470453926d8892600efbd615b69d47e618e30f5d6254b562df3cef18b9243b38c0e2a00b15d1840985503d805250db3118a02fd321f44a566dab161fc3bd587acc7003231a44c9ab3695c6f1927544cb9050ce4f08e8df4cbb7523320802c9dc33e73177402ced6199051ed3fef8527694a118048ce46eaf9506fdbfd2ccf0253adb706c57666e04cd4f925cd02c384b40ba0edc07620a795c330eb208e323b025ec279ab88be9d9647bc8dec7b6a85b597d35fbcdf3bdf6d5eb1cc87acf25bf5047438cf1c24c4e93effc5cb8c37bbeaf0dbb5e70c2e3198484dea549999fe706aecb320f8a9b00dc7fd5bffd7e04f1a0479570497e2d82a24e5c1c31b294c29a12ef1b92ac28ce4c5144c16025b7f172590effa1733399ae45c03b2ae4b84b5698126f9fcf06affb3b88a4c6ca34a1484ed81aeef1c3333c7414e2d19b52caf1fad21592ce3816659ed7841785b88b181657aae305c7fad1a6876b4cc39e5324000450a204da8486ad76bf612c9731b59ac98a0c1c8e102e06da1a9a235539b1f78705da0b7b261c15377dd36762a0b5f2481199b60a9e8e3154eaa7435d50461dbca5049f3939312179ccf71f1904154491682f59bdab8c63c06e3f5558e924c190e9a94ae899d7b2c26c2ab8c7acd4723112182ad4071ae5cc8a75faae817f70a22da44932925d77d36e832129fa230d3ac3b64ba83d8343735708a38a687b2a471cc003b83023599626ff25ab926ffa8136d35858421c91942a1ce16a10ea7a23f51d75716c3dfd9b19721234d1ed482319b257de6c38ff96e15213989c553d7f13635e9b4d3f727371ba3deb204f168df27517850e4e1419afc3322e94a5ad9bfaa038e523606f905249ffc2df6c3f7257aec5c33e24c1f96fb5819ca63e6725d7e21e92dfb4f877e46e5de4fc5124093ca007b9c830e90f98e8a1c8345b07cb11266eddf7ce10bcdd30c63a5b68667ac9c323c4b4bebc1fad83feaa19e38b0b43d6e30d4c4ddef69a707739225267341ade6688f20cf02328e4c2eb86becf2079712e2a1aa8e1f1a3129b1981c0c4dacf6cee8494036c3b04e2dd49aacdf2f080e554298e8b8aee45f461eddcceaa919651245723eb0f6778105e2316eee603fcd76608c980daf24c6f72a17f70de310c605dc8c15810fe5df8e24d06247316f4bc019264aab0d8ad05642d24c9c8b89341a300eaeb825632916114a71a75bceb3f8f80b2e91744455ea885c1a3f04f783c812849c7b402350f6a5bd11c54b78f37ac00438b8df2ad64f84db3d585682aa5148181370492559279c92241008979b316f806ad2a99af91d3ae58c902160625146e8f58ac12611456f28a1c06cafd9001dedacf828dd1d39d9fbb73bb224dbb6bd23defd284de59708a945a82e7b2c55db19153c10fbcf9e1903b121bef5b8effa41c40f1f58af301d32a8fda8ebd63d9d7c28698620324125ed9eb50c74ca3eb59a78bf6ff2f398da998e0af4e25889ca85702374df3c49e8d5ed7f0cf638c9480636a5db3f81ed151fc4fc4f9ae247705eb8827452f52078575c8386698e82ca3de43305028885ff4a51fa16e27fa4488acbb87ae9a80ba78e0aeee713635875b07c7af218100133c9530c5433a2c818f4a56cc188cc785cc742d0aeeadb39d80f2fb2586d08b6cb822cbcccacc5bf54a5b648cb27d0e16408be7f7510d2ac54c32eacb5c3c221d1761040395cccb069b115af3470d4963537e481455cae958064e66ba24ce37a6bf4e62f708fef1585d25217dd94e3548ecfa6d47381fbdf6bc397a3e401b693143bf799611e0d7b6b48b88d84609e8420e7202ab586426513f25e24e5e79b3164bbbcdc0bbae74e4a01c97b3d1e2d1cded74ce34c78fbbb62ff78733748a49023e2c42649305ce0359c34013233a010601d24b88e74aaac6d1a67c734095e3896dbb86bd4be035242253cf6c79b72298fbc831b6837b9f9945ae30889d004215aa47fe172247e3d165fde0b6cda4b78eccbe0eb11a28424152444f165326dee775b81707791a091fa03132b04f7458364e86da4f56f710d14f3afbf8870a9201fc03da670e21e269bdd258b91776305a341ee909d94d11a847f341ce267c6e8bba530d24b76a79ff5895ec24507dcfa4cd481ad3bb62e485fb5bc99ae1072e166e018c246a20d1beff4208362e66ba85d5111b00901944c03da15a66a5930161ea503c974a49a68c8bbd26209d6626a7e2b6f1b3ff4bf1cd0b2a072b07fea21a9b5c3c06e066231e3e9563e9a15fca06f0383b0e38f8f392c294b43abc41d1b3696bb95bda82a2d103f21844842f6de7bcbbda54c29a5900688066506d8272306942bd71867ec29a407706a70d4d0b4d008a0e122f1c430ac20a9fe40c240b1c1f532189053fee6ec68ee7498ac0fb4dfffc7e52c8f010d6b76b0a31cf9351ef8ee0ee4eedd416cd19be3f2e6881f3bb290e8ec47b6f618e5d51817396e7334b7d5897ce9b28589274d44e3fbac52ca5f1a39838dbbbbfe3242a0c1b9bed3bb1d8073e3080db7f5a3bb71683afe6ccecd33e60bba1fce2158e74bed80cae73a1e94025d3ba3c4b4279b77dcc675eeee97bb474afd57a86bdb5397eac02b565155d962b818fe315a860c962163b8540c4e25838be95631abd54a9542ad5627ba5aad4cab52b75aad04a0fd6cdbd61f65eed8d37b5c557e7373c815e44ef59a28af0b93f28ad78c9c4ff5c7384ca5a22b233ae7e47e6666567fb4ca7cb5d0e66651f59f292d749b9c8a762af9376ea0f1535a6848ab9b684ca00b334f4f27f718afebba2e8f3e23fc7101e95c5ce38a6d3bb58394969496549654965496f65a44eb820f61e318bb637b37ef68707797cbb6fb02cdb637fc512d1a8232a92b3404c1d5816d12ef7cc8442de9139858f6d8a765da7407837da1a1c1cdd120b83ab0dadc433fd3c7cd7db7b0254ae992db62d673069b0b34db9265ed131e47546181c7114cac0a5bc3154d83342a57ee98c637d83f6384f687efeecccceefd8b8464bbfe284a8fef72860b14e9cc5c5e6c70793f660ee2c7bedf3d9e95762e5cf24f51a6b311ee8992e36b3e2f18b18f0d323347f7bf78660ef657e7827f3f2b8d9d0c3274853df6f9b7ad0a566eee5257284f60918c7cf57aa0d90bae13d7a0ca26fc7eb007ad24ae847ec1942b359c5388a8e923b41f47ed6f1c6d43c3be4c82250998da9ffc6155c33d4e88349142132f9a38a10951ca082f3666e6e8f1499223864419651530484635a475332e55b00bab32e4d5ad025467a611c131c6884d9f2ddc0daeebba66e664a84a91aae24ccb342a616abf77c16db14be508e1742a45388c05075c701cef0a51b922440548884a0e6ab66de33a2a49b8d226b6d413cacfb95b71021284ac7489324aa228564a31b456b034f9d2c48bb65941c28a93b59283aa5a4dd336cea90c5949b21b86850a0ca6783105cc142f538a30a58a2944537c3065a889a2268e78398c48468039021478f98912b5a8ee94274faaaa4186c2c6cf315370616b0d3c85218a5421c2d470c56dcceae0daabe397acb07ab00607a8d3894204384a2156583d58e346117801023ed387a66de8ea4124788c5c406c101d84254982347fb801fb6c4fe56d0921c12384440e48b8a00a2125828494b82254e54a0da5901252849458c2ed110812dbd2dd178652c20826524ae9ee93c4882132236c60840e4251bc88b28550142c84a270e9bace44a36c8962258a128e328354941d552ae50e05098a1531507c00c509212847d0a82b04e5072830a021f4840b19a12755083dd9f244cb8c158dd236b8dd1389edee2ef33adb08439999afc56c76fa26a3d525652fcde2168dece5888d7a40f94b6d2f0d1e3568845a426bcb16bb7777b78f6cdddedd2da557cc4b1d6b648fc9fafb6a0529a5442d41430e4bc2d9cb4f15621886694c531993a10c4d0d65959f4c0ff9d863d7c755ffa413fcf1fda37399985c115d51155dd1958aae5494aa565c7e724593ae5474a5a2aa15914d6e11aee4dcd157fcc8716cc2a702e9fa43a8a1457497d90683b2ca959b938651878c8b18d9c89b4152c6e90d5425d0b71d856e74f79f6105f5f79845e9f5720c2d6d5797c693b02d4d8cbeeeee9162b9a2bc563fbd0ae50fdddd9f6cbb37bedbc3eceee6661f767757eec6f6b691fd7ddebdddd70f97695b1554bccfe0ac9ec16f76040519edf0684367316e99c79177b221e2afc01bf0e2c0d5d1d7b2fae7c4b010ab0d624a287f88d59eb3b543dc312fe918570515389e5483ec581d2d638cac1d6a42c5b24a40ed3740521228836bf3ae88652d8fa2777fb18a6dc78e2150b01f92c3ccd1c01c2859cc8ed5817afabbd5ad828a8da2eee36c8df17e59f27f67cfd417ce504fa7dfe137f157feefab550e0bd4f8eca88fdbae9aa07a71591707a49a3cde1cd797bcde1cd777bedbdc5cfe2663949a97ad0a325e5807838f359a5768f8466346dd9c8bdeaacaa8d35b31a1cef262d4983a678c317aa7ba6d5cf468dd382e7aa6ba954a752b71d1ebea66e2a2c7d58d72d1dbea76e2a2a7d52d15bdac6e292e7ab36e2a2e7a58dd62b8e85d55d64dc6b6e266703332344af192357ef4f857628c31c6766ec6c936b0b081850d2c6c6061030b1b58d8c0c20616180e660c618615291c5238cc08822a26cb326de3ba8edbb46c2726868ce8314b962c59b264c97214f5f442eae6a93c147be10c1b8a3e4afb620d5805fa2a2fec2e9546cedbba6da789fa1dcdccccec75fb421bbeab8bac2aefead2a0b39305fd3f8f8d58969f20cb22b12c6716f88755f01d88547728aaeba07a1326a2fac7ba4d0e854addf0014d6dcf9eac9bdc4e1b6fbca9bef485937eaad3c79facbb3954df4cfabc99d42c7ff662e51eff18ef744a4cd4367efa5d20b26ecf5b9808896edffa98a8c86f7662df97ed34e8cda48ca7c11d9d6c48838e430a955155bf5d0f19758699319ece440283a23e9cdd5524a3ae10124cd4d07f6245a15aa8a8152a0a4745d154d44c45a19eeb9b8984fad936d8a350ded505c96f2e23aca60604fff421cda4eadf553474b339577e6ae85baab7ea66b6b4a0be45d485bfed6969fb8e2a3fb7a048e51618d95a50bd5529f5fa94d420abba4f8355ae085da952f94fa713ea39cc4e453d83815451cf601855d5f36fb348cb6fdac85151557913ccb66da7c34f1af4f7d50cda5da4593fc07afa594563e2f4cd201c3c501f40b8f2407d9c1e0857fecbcb65d4208e2334ec2497251ef22bea96401908f5f18f7791eaef3fee40ab0385f2b87a04f84fa74f0685f2b69e3c9953763afde974fa7c490d8a78759cdeffe471ddbdf19f65eda4d4bb25d039f421fff80f579612017e14ea9351a96450df493df8559ffba0509f2f6970ebe99b5ab612e79d0b1783f9c1602ae84544283fd1d7450dd280869d54fd271713697320a1e155549d43795cb78b542ab0aa7e5bf51bc749ef9a71aaaa57e5a89e3b9da9650eb5cda76450df6c4e777affab4bdba0de1f5503ea04920aa4ebe9c38934914afe28cf9f34e8aa22ff6b9ebe10dcae22fe643d7dfed3a03f8e2514f5a79f486d13f39ebde927e6bb8a1af4577da62428eaf3c18ffad3175e459cc78351df3c79fee35538bc8a425594eed3379b73137376caef1bced9f8dde81e45bca55023c30f9013b401514c334868ff8ede01b4289294ee1edddddddde3c187d896660aea04a0b2399c2337c4a9eb5b2483dc22a4a06d2609ed6f01738de83e022894ab0f68ffa28eb8a4fcf4389ba184b68cd725b1ebbaaeeb929f61d715639431c618637caf07da31706204f58f9fc30a55edfe4c0b4f8363fa403b68c936330455d5a8f1c38c0e34e40260da66acc46f0e876dbb52aa81182c4d94a133b3ff61d85c5890a6c1fe9086023ded824a8482605b9ab0665710fd1987dac039ee3da5400024ae40810738089103173ba2309a01185b58a9c10f39fc745545103cc508ebc0374889c212a478c1304c0a16599665da26a5480a51184f82764831e225754508a848dddf183d4f90e060632c9b1d8d698286dd6a9b36426aa2eeb96ed3344dd388b239a7a6699aa613b3043d6a22ee1698eec2474dd4450d248807014182b6c1b4797177773716bd787cc4dccddc611f1b5d44a071bf3ce1fed7111b35e84ca0df4ae2c9902466f6c84e8e8adcdda374b2449497bc4c4fb06c73f4cf5eb24e92cc4cc8090f0db64bee5ed8fcddddddad135b29773428a594524a116c6b0a99ec4c9899233b3b33c3a02337b3d81ddd378e3ba013554fd41f93529bb4a5d866aa2eaaeeb22407e4e7901cc01c6d6e58a93787fc8ef3bac7a64df79849ef3862b14d1963af0a913747fc248d61f377ab32ca9e18d6318b3f63633162d3b56c4b13a27caa3f579c5e1d2898bd3a50407d75a0a08865ad940728496255b3ed55e4e80d6838dde72a9c610d5fd862fd65590b264c1343169c3358866df68b75ee05d5a23e2c6b95cc22a8945512cb5a26b080753211c5b2e6633b3b3b3b5772f623ce86f5f658e54efe2127ed243d0e34ec2ed53f89a8bbb4cd97305efa084cdbb81152db2cf36c0eef2a500ac2e10652d7b3b3b3536b08b2b3336467a7d68085d9b1626791eac7a4bbb6f0c10f762ae6f9b24ad075c8901c68ceae017c0f303f8755ceb507988f792550613e9055bdfada19a5304895c15e06fb7860f5fa703687bffc6668d0917064d64bf7be63c4df7bfc7dc7df79fc3b944f0a08a46d69c29af8b12510ecde43bbaf69da87d80e9f18111a54cd83828239e46a10fc5f91c017c96c4e7284e3688fb24b4e2f7a4cb2c73c4e42029e99937d34380b0812232e5234a47a180904f7ea0612b8c03d43a03d7ba0259800f7db5fa0ab807601edbb4f0603dc77df7d2cc89efb76b0a39ced93a1c0e668bf479a073a8bc9ef40c33da221f37072a021fbac539f1ab8ced880d28061df0c121afff27e30f7d020041a8205fd69d81cfe3ad070836caed6946c3c64e2af9728fc203fe55f156d35f090f15f2f3cbae6a00fd2950cfae3ac3efa03e21802a84fc7e0a15c8d02420c116185095b2e99d48122a450c40915242248ab0fa7851d2c24064870a0258b1748f1c4122cbb70e28b8a01223f576421831e9e68c9e9a62bfa5654ad455bf2081604e56dde5d1c59b3025f9a809078777164cd0ac482a0acdac935207d5315caefbbbb2b5bf0b96ad0bd121494df7f6cab7d464a293d32f5a5a92166688ef1291029b3a8dac63f4aabfbd3f58ed5bbc9ec30fb39b52f04b3ec33deb66ddbb66ddbb66ddbb66d1b428c2a40aaf177a609f4873452e30f69c4a3bbbf9432d206551e1059e3730dfa5f97948e04a305ea9d2424fea9411d41f9ad688291bcb05913c5e338abe6851d324ca0c55050799181813f02e1ea41d0a8209a342d4436bf55839f3df6654e36f00b799b73fe505b0b25ece4a946859c9862ae7e25a3ae9013572aad2be4c4cfca08e3c19eacd40c217aa26f88bb7bc51eef434618380b117949291f86b8030597decafef28bfef1e39d3ac453d8c02f583a7042a609300c7d0257a5099eba8f53836e7777778d558fd699fe8abb9ba5622ac5b1122d258a94303a5a96124ba851bbbb5b35b9940ea8bf0f1b49f21bd5112bc1b237ab2a2815ad5984949a844f833ee3637c7ff25dc6fbea63ccd8a19587b3ac7e195ecdb2fa33d03731de672afb840173f31bc3e3fa63faf291d7cb1e5f2fede51245b5465d2125a050e53655df4db64f03e2a8590147bb527bca5241b4ffbaaeebbaae2b00956b771d800b34087a386a4a0e7821f32070cde001d5fbf5ce44f57efd26af4b5e97eabaae979265cb955eb842ed8e41a73e0d8102c528a594524a5f498efab02d7a4929a5943318876d433a28e6ec1f2d81b444d282abe2b1449865ed905964595b8fc4580327dc205e1dd76746419220656f70fcc89755148b2589ea4a708aa89e03da7df621cedcb8ec7d68c7b2e4731eceb2e46f5ecdb2e43ba06fb2f7df9eb1711c23372a1c6e590bcad766aa6cf9ed6830a88619aae4237b83b32c253ea6a2d5b1581850fd59d89b1dcbea25350b1bc1e90982092facc3eab8bc48b397ae9849299964f25dc62863cc628c2f636c0a741282af0b9bf1faa6a9b9ae1a2fa49b9c5232333333b30c6baa5ce1eab6c11b5b287fb34139b443d813e6a49ed1d93c4629af0bc3e68c42964501d3346ddb368ee37498994b8c31b3c9b451caa7246c594a89f1c57c31b34a15131383590bc2b893c19453cea02b55b0cfbcad1af6c33ca4b12c626629258e56abc9866ad196cc17333333334b29a544eaefe332762a3679659aa6b536d4ad699aa6699aa669dfdd755fd85b692ba7adf6dab7a6699af63b5afb7eed0b7fccd9e0e52258551ffecdafc453c995a44a5357e80a9196ba752b107a4c5d1a64823ab74c4af80d6b69163f9b96a03e9a477769b072e44c58286fff03acdca5419e7e793ea2f6d8fbd09e2600def4b86a52cacf2676715f92579686c49d9d9d9d9d1c288ded446e3f4a6cb1f5c7a48c52461c48a6c4a60fae06537dc9d5ddbd06f63c14300e1cfe7bc9ec07038e22647c3d19d03fb0c6ca3836071f61bcdd982c5d4930f1d4ad475309fdce021fb10afdee9f0e0775e42366817d73f4871da1a8edeeee41cbeaf72c7b13b907b58768c8412c5fd551f0a86de2aa4aee43af32e42ae50b25d1b3f40b67898f588bf6ce7d457434414a498f96e52fabfc6d72728b909f50bd6e1f070dd14b6e9742211a070579a93fb81f5d4c357e7c14543df2ba89331c68317c28bf8a437d485365f8135697a6868bb483024204843950a7132ccb3f0c40951525511255b3a5c5c2daa07e9f017bf3dddcd45df5fed73cf87ffa560875df026b2343833e45dd77c108b3f0830712cce037dcc3022f41312fe9bac9ae537ddeee26a9bdc3aae0ef4faa3f522fe118326250bf49aff41be390427f47d35def64c8da457a87b551bdffeef72105c0d3fcfcabc86f68be06c0aa5b1df705e9bdd3e9e5c9db2ae5cbea792fe7bc22a5e4bcadb325f32b4a65be355bf30b18305a91fcb4d66c4929a5945a2ba5b5b49646a415695548a9929152be9412cce9fbcbc96b30a70ffb0b5283e13cae74b5eab892aae6341b3cbdffe9f425ef5443aae44c4a65a3c66af5dbab952cbdca244d347e86b4a1b56c705a2b4aad55fa7cf0cb577daadf28f7a5511225515e7f01d39d8e4afea62a954acf1d8feb4ba597de8d5779dd6f1773b66e9db737bc1972557e773a2717ae53c9930d844235100af59ac7f8ad3652335ec85d645a611791f4a231c3e48571e5c5f0c72092e1718bb7ac8eed24c0751b5451d4d32f95de3b9dd2e9747a1736aa03f8b00509aad8ab857fac961ea61764c9824bac8969c2a5498cc18c1f795621cd5ca4fb714ca1fcdc8c828d72e582b1d78561177645dfdd6f7281619886cd4ddef08f11469827738fb4af2b8820af48ad1e2749862041505aa420f0c290ce0d23080c05f19b1738883acfb4c1def04f33143f379c25e5a7f20ce9dcd0a279dd543a7dc8ddc4b0acfef0719cd5528b413c15c3de3014fb82df7050061a870747a5ea746688317ac9404c06623a9d19d8a1d81b36e247ae5053c346b0119e148f141ae3319e3ae629c2461a01fd6cc4de7060598dd13cf3f4c8e0377ce42a62446aa138c018a82e02d8cf3fcd8f7e938b308f1654254b1d0cfed7775d0ff997c42216db57595632b4ebb92b742deb7a60d8c47c6699ab18f2bab04b061751468f91198b333ea946db264e4aa916846db3821a11c10a6a14844ee7a45d129b949eb618b3fd4e9392fb346d8b5be4ba1ef15b41abe168742efe159d93ce751d8fae262aa853294a6ed3324a2935753a566cf725d357faedc4c5807d57faacd329798976df36b8f489a5f4ba66c5e8fc8bdbb48cd6f92d4d71913ed05307a6b898c5a88361187d62ca99d54a3567ece12fbdeb92df9664100d286c2cb15869da067b28d86a060d99ba7fda05983e66a7859eb92e8f94b6cd56e7fca7700384ac50758323439561e3c2715330d7a5e37e847bc434f89187329c5fb037dcd342b64746ed6124b8a7b29265b57fecb3395259d0e037413ae9a8dee0225feb74e20680bacf7dd5ab353ebcb13afc57fb85227f7b66ec024c1fcfcc31fd6e1f4e0bcd6a2efbbe2f5a68b0d3d9b1859620d610a76abc65cfaf6ddf6adf753a9ab64256532399986494d11dc76f8234abbf1ba7ab694ac95d6add0d2f980facc3baef3a9d4e621d867ddc7f5c1666fa650cc3e69bae20415244360411a23840d01437ad83c1abbcb0895d5aa773b99c01459c7266b5a24c4cee7fc5cba3fb4976bd52c2caa53c32883a3813b1eb92cfd49dae364711284db717db1680ae66b4f9a72bd3b24c7ae6fe45b95e5c96bc62dc5244d465d093e26171d034b833c618638caaf8ee032c462c43d11316e3a665d354ea381486f1607459ee72763d66bd64f4aa3f87559f41aa96fd8c97fccbc76351b28c9f2a4231836ba2e869d3b2692a751c8a060cfa440c42a3a9d4716ec37a1ae62e3ffe3563881ebf95479044c868b42c7bbf02a351757f42a5eae937a66e8cfad1d0e8d070d152da4f5417e363af7530a4a06a8ffda67df413f57873f89bbcde1cf337134713e36f1d0c290869c5b24cfbcee33cf61afbf9a6ae47f6f135cc234d0c588c588c17a5099ba5041b6c8a31184eeaae417d130808089b8931464ecb18c398318c97fb8ce32e18a97b07a3765f9c46bd04bb1e48c6188669cf3192204883ce1aaa2b9978e70482403b9cfc8c8b31c618e3678f49da4b1a6c909180c0f62942c30eea2f458fbdc7f7ef16511bf10ab5a307da0044763a91b6cf890bbf839c08b35504dbaa3eb2e73eec2d6d933de7c9e8854690c4281ff344b02d2140357ea11020f9fdc886382ffb3aa8b534d841b57bff2f7d1d04fe0a75fa80b0ae7f9018e97fd295440aea9e9d09a67d903a088946119b6f5b7f3ef6fbb5c74aa59999b2ef0790bad3f45b4ba6ddc7bc703ef61ca3c61f3d1fd76fb5217a21ad91abdc9cdc77dec7d2f703486d1f35d8504bbfb5f4c9c0c03fbcf6f7f6173bb1ecc9f4e0ffabe3c158fc7cecf74a29bf19f667fe61cc3f3df9580cfbd26f62f771dfa5bde6853f80d4fdc1d5f95714fa83abfb3102fdfb3fb8da1f7dec6f0c5b95895f8ffefdfe550df735301bc81b9485a79b40414bba589e3b750746ea84c1c6cfcb32084b82bbbb180434a5389622b02c89ef56047909ea1285ae200e0b122c3c35684bdda03082c0c476efee96cd50206148e5eff8a3667aed11d3848b93da45ccfc93f3424355f5972aff55db2c10d9e3777676fae33733175681101b30910426802004128884710d5929b828caa2ca102ed0618724572c21e242d4c4091c70be280aa3880859dc0004184abaf802280a223f44b95cb00130ae804115212829222988174ea2400206099e175c37c82db860a205932a92081911d2830ca210a103d212528cae1d21438824f14417585a3834d1812048210a273de8e2084698c207b288c2095c8648d10397237c83233bf40425ba3881871cb8c0085258210451d1c5165b9ce044951e2b42202d518214467012c6b6a0f8e1c80d9a20c21051f400e5094138218ca1208abe90618408e145163790420953e870c30f8c40440e828a1c415424c19000108a7ec0410a49f842031ea63822092857a85002458a2f7ae88045152b8a6805a187217a88d001152ab03c4189f4a2868b2e4d88d282420a2347f8080b58c2910d84c0b4bcf8347139109ec4888661ab992c60b4089ffca834aeb734b5646648000080003315000018140a0684029150249408e3281f14000d768a3e7256361889a320887118858c31c418620831001832303333422500e723742275daca15417f515df98258275f21702b62a8ddbb867343d4d6b629f27c1c1686b2364038ead86444f60453f6e134eb7d54d34fb0db70849fb99016fe697eed92c31c19e6b68d5168457eaf4c920450fc940be90dd5ea7a7b3c9460544cd0bc2ff7370b707574c3391fd620baa9ee5f2f4454a64d0db09aa082299bc937bb517fddb6bf30e4891d34fedb01c8b043099c6d245a8e80952551767fe486d836005e71f6f6e800e4578bb656aa3e83a8c3ccfb8afc2b0f4b8c7ad82af0799cd1c4b23efa5a8b9b49270e6677b469ca4cadc914ed93292c0cf0dc28726a05e931930387ed871abfede0c1c5703c8461e81a132f08a9f09ce70c26553e6e9e3d91d42a430838d53b610feb305112ad978795b999d83755b937e59da7a4e2e35bd7f683db42832b39f704fccb298f1895fa8ded7e5ebcdeb850d25b855e07ae8a1cd99b4f56b7c824b12e9d6cd048124187f5cff2677de78fec017c1720958fa0e1e691d29bb26f53ea627077150bff0e3bbc1edb9323d37bad13599ff65299e791df3820168992ad898204cd861446028c2761b8e4d310847ab5e1731c6c3719a8560633305c90d4b38578120acbaf258b16762f12d65b4427206d084f773ecc05791af926b15caba93cf4444205512269ed8f66ccd124d2454bab2808fcf79deef8a7b7c88ad5cab0284ea21274cb1ac177e4308f880e73ff1e9df6ffaba8fbe09425c6aff4eb6ea8c10add7ce5fb0db3f5f174045b5f49ec9eaf18e5339f2f59fefbaa877ce6396acf631c414ccdabe3ab1a5b0698243146965f3abeaf098cfebd32c359125d37e3d8279dea18d8c14649273e15abf13bab5aac39d09f25ec17231b9c72a33c62082167f67a957cb33b78a9d3225380a767180f5477c04e8b421077c25d26442ef920a8bc2a16444568ab678fe881741c5e05c3f26a04368290ee19e5615d866da2dd903883d140b3942aab80f425798779bd4484b02193c0f57c657e7492dd97a4c3c5553c6bbbb1e21fd99097066f6a3f26f2405dc91d2f08ce43f008be121c27784e0e206b0a45e2e88181303610bd6a0e30299468676b7461081441f912480ab8b79262392d0d3e29a92656ab489aabbf5206252c74730638bf16a04a345eccdf3f330db8c49c664838bf26323638fceab71eb2d07092c843f8e815683249ae70856b86132ba9d1fb30cbd5a668ef1b016994cd225151cbd2baf192bedb70d88418846fe11966a97e957401e98ce01ba7be5f8dc8ebaafeac6fea40b7c098c95d0ef3c5976eca957888bcb2124958c7386d52d4e5522b260a9802b771f6fe681d8fe3598b8d461a9ed047c07f94c5d2a1608e19a6aa0b37e52b9096fc04249ee7b23fcbe44ba54c62134ab034adc4b79e489e5d2522a98c89d3c340fa00ab7280c6c002562b6bdae9a6cfa9d75877612a41b20c16f8d96552530e78d029d599fc354dc329389980ce66e4bfa90829283e900b263ca1982e5202016c344e9fdc0168fa90bfdf7da6e2f214b8ff01510aec1f414f0a0f53edeaf7471ba5e5d1a5d83f36ba6211919600b1899a6740633e18516f0ffc1a1bf3b94d39e81296c6e49c8ef8e399a61e97279bf0f5160f7540d78810354e853093a91d5268f232d60edc484ecde98d0e6249855a1a6851301ace05feff031f0e1c65f8edff6a58540cf038fb8544608ef314b64126186c750b9e45067d2ff3a7a77932b108588b07dad293b1ca5c0464698539f44aff4c593163916860664caba19774fbae68387cac4d03c9591549970a1ef418ccca23db7ffbef196302d2a6e46fc86aeae318303f9f159bbbd7b6c2fec7abdca004557c41acf044025fc3a3f585ed8cd0e3026975eceba6a7099d112e73507be0fdc69075233acfb57849322e7f21efbf3b772209d3ab527e891147cd18e6136bed0edd5ea301445c3fb1eb60d42a70842c72229f59cc0e089cf6e71f06050f06854f926d74eb15521fd747a5d169dede9b1365206c4f136c8372f495691ed347e5956baeab0484350d1a4fd813a16051099becb65abdd645d5fad28fb581cfd58327384df1e9ed05c5c4f032ad7d22067eac6179c00397dbab1bfe66b3357118d14eb85d45197587164e36188306292e7943dc2e4ac079bbdd242e35fa4bebc40bc4a63abc7f417cd98df90a43611f30b896fed790d484ad83a11dc023224ec0e038ac7d463894e30f8e81b00732ae8495261fef281c85550b7246b067f74539c4284c388c300d058e29847045b1cdeed624a4c8035d39d5232aff558edd3ad6767facad53aa9abf05a475526e3a977eca4fd17cbfeb7eb50863a40f1db269071e3b150e98cacc37cfc0a530ded2a8f8a078e1253883092bf9fac02f61981b7c184a383892520ba6c87daa31ce5300888b99cd47e9b49adead56bdd5ad8b6add128e70b162f2e35ddc59fb221e3e5f8eb04593c6ce5b03d3486d51cb0f9881582c6678da528a0a2e219af0e474919e93829904b50900a55fa2cfab105d1d2580d9eb362f00557cb6f1f38a80e554820a572c9dce97a3c2d7a7b9a8fb6261e86a18b22fd44590969bc478727507a8d1370491928b48a538d97cd2693c55059d8df2e37e13d995bb51ee8dee4df955206a068aec3015008c5ed0bdefa92b6a22483804409345979854d2d7123f18cfc7f7070dadb46234be3e7b5c5c4b759ceaef4b47a542977b60db517f84662f9ceb2dedf6b62e2de76f3727cc80dff6956841f5d70d80f336b24886dec34e7056c475b2623ee4dd668be6e10afae6e94751eb896d044267de80cd8064cfd0055ec07cec1a9ae9d249d5c77adc2bf960c738b465fb6d04698242f08961860a6f1b3caa218d4e604ee99d053c5dbce921794c2cede6148d33e6283b05d864c0a13c5f69ff4afa2587d506832c7ca7d85e8ee48c545bfd36d8ac2170cc678b7a75de31b853754866b239842cd4135571910a2195c558f58ce1d0660dd28f02de30f3666bcbf56d597181eb71d2ac2dfadeef7a6224ca3b8030859b28689cdcb8f3bd700a8d6cc1a7565907573474b5a3cc4804c4a6ffc09e071bbe27ba2423c24ab12502e5089a8284dffd788e1333e2da677c4116935d050a0fb26924e7f8e0d92321f78f9a27c26bb91af570c306568e7c844681137244a38aa2398c00a0d3b7941da30eba1f550c7b270790d3f8abb1dac3f1ba0e9970e59632dbfe82c16838aa026cf46b7f1f5d7c1cfd18c20ff59ab3d7ffdc02481099dc4c8eb2c3f8d25ea01321627a496804ae00b2b4f2878aa2c28bc6916924f880f16ec7086fa649dca72db1221ada2f50baf597feb5e60d4cb353b08275ba4eb846c2121bea4ef7dc7b07a8e6869111af0c0180b6b5026f8a194209ff2583a0b0b1cf17c6aa09c1004ab2ed476799d2b495c49c70fc22000d0f18a8894d9f53e2cce176d185a7f2b08c8b155fd4883298f8e38f27f8d01555d6324b509bcfd711e79be493f35f5ae145425290366b61b2896bae881d8009e1886a6fb0d0ba092dd8e40d0d46e5ee4378fc4c0f6f9e0cf1b998143fbc39c56c3044739d14b05ce5be0244eb080c421ecf1bc16f320d6ad5c8aa36d0ca21d498d99c8d829da00fe04e187f0afe58e7150077a10cc813734999009a0213a12f8670e191fe4c4b506bb78dbee89429f405f84c06631c661c8947dc5ee79fa6a4cff6795e96dfc819565cf7ab8ccd93a9246b497b258cc5aa790a47fcb1eb93a7369190614751b71d1f43f4e255c6ac5ef216acfcb8f41e5276e271a10cfd30ace14898961c8ca9a731d1de9f21bcd4b7104e3f19762b0c8b6a9bdac7a3593d2dced730d70abbb1cf8ba5e8ebe67ea355a5823ddc18ba11c8255c8c31523809aad3d748e38d78d4c9c85aac626d7e583e0148b1ded0ce57e34b19faedf62cd050daafe9c3c65c920d22a0b12c75aa62d32b44f84eb9b0fe70f2c1652a94b4e20adeb26a998955e5a3f7e7c85c853f44e10b4bdc40f462587fe890d188f7f43f0575e8dc33f41107fc7d04682ba571d11c59cbbd49688254f72102e5105cd9fc3300ae74fa843b889d0e46ea404395ddfddb5fbf90ad0c1938584269676943a345f38f02204c1c4ba1e9c5e5812a0747f3de7653ead80b83ea412fc63f87839b5ebc604398ba37f552b0c34355ef1c4a3053ca9c2bd84ebb03ca9824ca578818a79c55c23e8dde9179d2fda64396a2223cba36a411429042d473e35885012e17245af19ed737cec585a1abde0113726e6f60f62c9107657df45bf8eada628e04e8a0ea66ac72da8c5ce0a1a58e9820a5f1e536bcefcc147739316372e49c049d8c157f22afcae1a50a66952c642f3a781f340ec927212ad5a1d2f608e762f147b79226b9fdb2b1415d981ce8b594971065cf93c2696d0124d14bbe8fc4431beb2f0e2b269899579f4f4a52d6db8120781a6fe7e4b587bbd616a212c02571951a756fea125e5f8992d7cb1f3beb7b18adb3da335a0fe704d547eb8c6b3efb3f6f959d4e62e79a02c63a6d4eea639d06a55f432396367ed2927300cb6bb06918ce3d9bdd07ad92d6b533e64cc03ac180a286d79442ff46a7b1fb302647f99088955c3d19baf9c1c3848479705bb7d2b71bd92bb5a46550704a78cf58971ceb188744f8a3200ad1d3a86a5f5bc73ae35c1be76f93f3538bcdfbcd5736191445bea113b8c78c7355fb20251f08f49b0b17859470c8de543e1b22c2f7317cdaa5e4cc51f33ca35985c97ebc96e1cb9c31c676b537d7cbe100f43a032ec46047d920a7a84160dd694c31617b48782967a5e0c3a8d8cf25ca8fd606ff303024296ce025a5dff220750836d07bb0eaf46fe176276a6dc61633ba3b32d52e746a499ce343a923b782a14984a8bd4fefd29ea2b010d1c6243f6d5bd7a4cd6c1ceb83f7e4a225cb8c8211be584e5d6c79ec3915c2d9e43e12fb4bfc467ded64193de8e450499fa55cb9de26e13d0f8e6193ae4fe14823fd94fc2e8e9ebda9b33eb9ff78f13d32ccbd9ac30bd59547e9ae0d94727da3e92c54026b6ecc0aa66d7dd9939db9b14e4bfea6626004fc339c7f858f6c004abc3974d1294b70b46afe94746e3e5c9b74ec6eea9e9aa3efca25673bed691c84c0051b9101be55b11b7b4984521ad8cdc5b5560229b7b5d2064ce2ab5890a679b04021c8794e93dfa660d5c1fa2b638a8918a246b12420299784fa7f454db0361aa00833e4e306453b5be2a6305b26f3cc4db684fef1400a7ab4d3c6c60ae400c81085d590cd15323444719646ae1c8d3a4895a367bea1e28cb7d859c6a39be085486c8d92293744951b10927e0928770a2767902364fc04b500bfc42164c4417148afedd388717a01e089c9bb8c9dc942b8756f7201957c62249b4ab1095f0d513008b655bf212248f3a2e4913b1d8f0dc5ffde9384ed95d19de454688d2d0c5d8e0188ccd66c3d45422e51273aadb65c11c277b6135e1535cc73a4eafe3171351632d744c2d384b504e54e53bb4f9c772914aeeb60ca1bfa5e1f67a877e552c574b053ada1b72ea167c3a4d737cde31d2c8ee01796123c9f2d82ef0a4ba3a2512dc4a43c430ead70b804e247d8a7cf867c0b457f7a4390ecccb1dcf267f8519f3ae8b301b4f05426b073f3489529270f42acee91ebfa16b3d76422f8ae38c5a6d48cbcedb4f601b25f14d9910b9d77ed6280af49683be878fc324bd6854b5530cd4bb742733df4600a0f1a3327aa242cc922b7ca0dacb0c751d37c3b9934d3fa9887190a7bc7c3bba9a685d3526eaa17a903d10bf869eeeddad334a0a1bca8bf5324af8dbb47f44bf61d2f17958b2845d0b25d1c39428e1ebb1659895fa28c93df652747b8b445e0826c38553df8d7ebe998243ca62c7511794558f9eb4807c98e7622655a81ef34f239e9225309edb91a7726d10ae3155c487fc97730036dd76c6a4252dd19207302bf1032da21c12451ad4c486668cbe1d380a697f1eaeb86905662d0906e422bb48c1051ea266238f53e77fa1c909d573fc2b340b332e390118291d89b40c4fb4e360ae86e13a5e10436ad03eda105bdd7bc088add2a958ddd49f85fa88398a65f6ef239754dcd4e24de5c4c9f3b2d6b67730c95b41e44a2336b6cddc4fb270f16c44b34e4a304122a69a92547b0b03e0263a701553d0c39244ae27215c2f62e2226e3834e295856fd570d01f7266c232ab8d7b107d9a06bce7b31e1b3769c122b75ac111fac630e3d267c181775d1289ba945eb1b0c6a67ce86dbd81d5888b42ae2f52941ebbed07a7a8197562577ed46ccc8ae0d8e36724c8e8aca9cfa6c4906de3e11397c8d4ce28330640fb7ff6d08a84b177698f4feb9cb71de1a733b479e0aa5c969334a33a01e25f9e5c6f5a05d50ee39f21ea63d7ab3749ca240367bfea965e2795dd4bb954b53c881436c42a1b24c3683450fd8b18bb725b3a57042016d11e90e1de44ac70308601ccdaed8c6f2d6f92d869f8b4c31953c2a727972f905f301a827ac8c0a42d254d04e733a81bf492b1f3266a400f47f459c5ef35f0f3b3d7677624590b7d246835eb5bb5eeaff10276dbfc18c25be8a2c4dd3b1f222aeb7fbaf91f61e2ca563ed20af4a69b874b5bb92f4fe24c69f767bd0d8311d25180f164bd2e9817ee46a39d58046d1856e2f1e7bf5cbc6a4bd171beb067959695aa7576e9d84ba8451943e4d7f5129097b164a3f125fdd06a779efda75038cbb713f80b1df62ba8fa5f42a3a094de7cab7d15ace2b9b5d7f512562c7b2e43189b3d65cd0397b6a25a509fd9b35100855e9f4e7c937274b23b4abb8e0a64c269fcfb12a450c5aff6909da88adfa5fc33a4b70d389c0e5cf7d37b25f1784120ce948432261bb37a46fdaff2d2715b73542879d5a28c56e588c54fe6017cc5a24bc778c138e140d6db98602ee301a76880962ce8343c71f20dc8e7ff59fea649c8ccd56b7466a02dc07b8dfa0cb3a28dc80f83974b4d04bc735b8248b3b854c59cdbec41a557629b4cb3270aabccf2d2e56ec5c0557240b0e90cda843a9db4b2ebe7af29ac0a178a1c04c7411983fc2c100183ea45214964df868a55cf112f05be34bc3ad3e39651a2180ca564b02f7b367c89c5014ace5ae1260b9116488277083631652b90cf4a89e43b10666d98e2457eed0a6f80542d50fbb31a28a4eb021920fdf5e650ea400f56bc591b8ec91e089a9c7894e1987e4517c985e93b8b3c0ae10d43d43b20ccd29baac648b63ab2da8e6a7e7d9d0f93d995c4879cd59b41e32e12e8f40b5bec0a049edd2cb4460c8a1746f41d0c89d364a0f49a60c6efc327de8e4860af91a1296a4b9e1c6ccd4ff4fb362ca7548abf8eb951a82ea6616b333e5f54b055849a00fd57d42584fd14f67745a0130598e6ae2b2ed6ad4e0200f99146a41494b32dbcbb7fa0d3b31f4218674450e16dbc2c07be9a4946a619280c3cbf1c55046395948615b09b6a0f4ff15d0af4bb49adb17f28b197125dd07151d1513aa6b2eeba853c46f825f2cd37c1b11c941497f387b7eae579a000082fd7ea4e3e8097257a6a2e79e9b6c898b784a7bf1226c18db8945f9d58498129c219d993ea9deb5845005e8a18d6528911a6116253b42b82b43d021244028b9ea6b64cb7e1458b9563df02642385452da8ca6c28ab567d00c97eee0187e66409db7760f85be2819b0ac734d3f330bf2ae7f5b616af6bb1bc7f42d5977376841e9803cd005935e872d1ffac352114f14769b2cce96d06992e294a248304bf6a1653b1a091dcacbcb32b5371b52de91f7e8bcc7be4a73dfc37fc78dc842ae85848d285149917fca0b8c33fe2f1eda57b1c3cf31117e6d369ad61e4b711d701f9a4c9a0dbba4628e379db02bc543596c20db5e9df1a3966a9fcd020b87d7e2525d77349cc5b5bab6bc7d22442b4513d5c60d71314c7982691dc9bed2590494389652baa4d2fee1d2d884e16770f956683745a8c6b4d56288779a08c01150ab69a79b1ca1a52bcba6f4a152a3ac6b98c34518fd82ec58918db3cf5259b188287fb5c689f449d63a1f95de433ab0319172addd5c70079e5ef115bbe1a57aa1fa6636e537374d6f44752660325c993199b47dda7ad54408b724c08e58eab997622e90d6a763eaeb0cc85fa7035a3c6f6f6e931a147ad7b0c5f4b06817d5fb5ef0c5160066577cc976b929cc0e95195fcc7045705df18e94011cdc8d4e2dbef062893a2abb2c298fc52e1e24604eb2fd71e6ba84d90b47a65163ab57fb87079dd5cb8bcadf2fb7349f6811a73dfbf874743cb7a486dcb2332fb78cc15cf7c604b0a679a663f5b1a3f7bf0216370b79fefdd62ddcc13637470439abcebea150ea1e8319df4f1c22d28898f63b7c8d171010a869d5b066313f447cef50872aa4412165a3ad29ee1b21d69b71f80e282190231aa0f2752b65d6a08e4e0bc2b772c5d24f961e8e236c04d4477b140c77cb81d0090e26f4007199bb7c5f8b62e837dc6df332fc69bca938cba4f150e537c0c9ed09915353772486dc5c996e459e45da16daaa4ac5e5ebcbca4669fd01c68c00b01cc6decb53ad89649566a328d648afc56495689835d60a3c87951f7ee1e68d8842e760822793ec6c27d101677cea2d45bdf2f6eb46adbf90c578a7f2311740a01cbb38be2af511a6bdb9055c391a1a78c8a0c9ac9f74031fb7e69cb3de757334fd93ce92e392698dabec0bba337bf9b1096813a107ec08fa8775061dcbce0302ff2672c99e396be9be96583e312df66ec93367ea82d0fdc8b0031b540281e25bf827cf45a48e09420e4eb1027a061a0e3beda20eaca51e6b86d33ce771b69da23f0d4ed0e8972cc0c80dc4e1a9a911961d8cd7e849aa4d2f161f6656ab3beaec98588c54204502ce9a1fa1a3662732bf49261dfad4097638e1235d2c8296d2cc4646651c2a7642b9d637b4e2127860a902efa0470b545c49b71300c0f0b5a8e914519de4abbe9475a3488a3d99adf0bd1dc7b7d354f5c44d61140e6118e05cd6b2e942aee64e3c852ac4cc31fea098a0d593f1c972d185b26e2c54ca78817bef430263aa0538414042f1e8cd4a3310c7177f5a47fdffe765bea928a55c447fbe1204564ea2b8bacb843466dd4a14acb2fd5611518504017024f4a63d28dbcb95ca81207d810aff78fa2e7a8464dc533857372f5eed872aa3d94f90e0a157aa9cb261b1e52ace1e78edba538ed7bfba836eea70c3a99a0d69e8c0e17cc14580e32c0e22e0468d1c030c90286ff58dc6e2126ef651e0431f9587b4e7e063997f2be8f23f54f48f882bafe65379c0132247e8926a24ae75d4c3f722bae388015e75de5ed266634c77646e7e66825aff70bc9054f3692e5b1f1900087d33d25ef5395a42eb7485b3141af932eabed31818e1ab0754b4c1d2d8693323c64e040bf9f07d471b87e0024f13422d9da07302ce340879311b281718396795d1c3281dd285afe6404746fadb9edef165bd528d8ef35f4282109b33aa27b4d4c7c59d1ffe0fdabfd67b1abd4d864cb848f26a9d66d228009e71438d572469503b523e413d1e01938f830f3479b1cb53a9b65582251634b15d61d04c3e6f66aae305493f299a004c1cad43c1511806167e00bf76dc87befefeef0f41fd65642604471ba2837626b2b24c8e55d399bf290900de897f8fe798874b48270baa275740543959c3f4146de10ad6063fc416c506e77aca17770ab848199dd4aaf33e2782a6cf73aa24aff9990ce4a38452609b2770bf266f83c10d4af772431c1735ce06c3923373dd89bd22389dc23266455e7be86c2dacb0d8bb9411fcd089badc7a34c392bab49509d7c4503983d551de1c48fb79506ccd570995b7dfbc870d8d866896a6bff5167f10c027664338b96e22e7c1435c8512dc1ab663efd32ece1a8397b8cc7a8384a6a867710f1d8c57afe851763a17ac71eb4fc5081803716e645e0918ceeb0a116c54126523d79736df99f69322cc68cbefd1502fd9248f524749eb071208c1015e2e73c1f2dca3d80403110c808ee638284ec1a080e62e9fba88f504fb7e4c4c9a867ee4133e08721b1af141bd826e53ea821a44e8d33a364d0b0e249c2f8cbf608980055922321684c3cdce57032a49a357258e5b1030aca4b6916412e1d930bc257a8348adfb563a926f8eea70819c43ff5a0ab31f344b38e7d00df286b0737ab02490efd3b5e239bdbcf9b804ef71dfc9ab2bb43a4917b02d995c9c3f68b2fe9c8b871e2910dd5299bc4a20fa04231dcce0320130e763e3009c3f56b0cb3313691baa697a3f5232365d0d308b19c34b11dea29015fcc58593d9282222767afc6012616c485ff02ef7120e94c2f2b58e691925123cf90919d2317d92e933152be1eb4297ca4034b092eb0ae2ec9ec7b90078f022da5e23ac6a3d8f769b455685825766d21f87ac3b9eae678deb9dae9a1e31f1c1e81c71a51215c8cef5140f87c76cf4e2a1af03263d256cd4638d611f18d50673acaab60a25263013b2e223b9281b82d00acdac6f5668a3aca33a27fd7d2143261e89d53979a085fb9c0de870748e68680a4b8580be6cf6525a0731bf5de615a78874ec335574c51c1150fcacdb5797cfb12ac021ef7a245cdb7158fb4965e7e09c7ec4b03cde5bfe3a283bf1ba816d10ceb3650a701ca9e2e3f03358e971ed7c76f6d5256539761b4576ce433746bb69f7bb9b3f40fd1b4c2992fa01e7b55ce962ed19ec8ad8ac2df985b812db774aac965593f688c1b566fafb7365ef9c7e6a6245081c14525219d8cbab01ebdcf4ed12939a085e9312049ab37ca650885f01b16acbf3f66942cb13fcb6e26393c1c9dd558202f8b777351bc7baf860f08d5ce6ad213185f63d7e317f2c65dddd76279405aed90b4a9782071734761c1f8bd5927cea6e810672e40b4bcbec0ab51fc6c8e89e99812cc9c91efcc76ae732d499d8d36e82083f5523e6f1c65f03ddf411dc7aaf68119a43738c45b36488c37b80a0010b11b14c2322ebac87d9dda9355eea873e2b9968a922e20b99256df4797ddb2e465042f1d5ee0d5cb745f5c4f39ade5ffb7229023d279fd128e1f75fcc4a656a5d59ea1473a5e90632e612f088f9210cb9fc152d104a4556528123482a6229853e2be5e6415f3b35c984140a4ea6e9c30817c1b89dce1f40e86ea26394e0840a5d2b7f32d42e3f5054d14291395344ab5dde490d87579d380a858742260df68f3ced8a290b733ba123d6d739a7ee04533d4c5645514565a933dd3634989cc80d49bc8dda258b26f05f941442e14514a54d2d342b0ab64ec020771d20a8cf17d47598fcd10c6087e540ecec5147f90df62ed1413b3890c8f9504290b3a3a344e807364a7b1e40156bd9c59ebd11e95cbcaa26bc463ef696b33b42814bdf95c83929f5d98fe8286c7cb76b43f1ae08ab4594431439a2ba2377148d3d15386fdf65edf58e0c74fa7d771a2df8002244a0258e9aa96b43dbf8dec2c7048d40a399b23d871a866d6ce0e657e4b809e9d7bab343404111c0c0f4ecfba9c51526e9014dcc12304c0b2b72b2085b32f6adb57b44f3e1e1e89f5ab24b3aa5bb827d2dfd4e877b4e1c885fb835c1933a3d2d4b3759175189c8522910f61450e359c1659489f0c7cfaa84020567b62a0982363105f6ce2188eb5e4dcae32c13116b36cd6a2c704625633dbc67372c7c267c8a3077c8cc36d63eda467a986bd0e940de346728620ec8ea5f6e78c67e6a5453fcfc65264fc41679f0dac70b5c1622994faaa72b5b2c89945505516e3f17707c7aad08dd93d3a8ba25c3c923f8cb92b826878cbcf42e0bc9f81b2e2090f33d4b6e33e648e70b10ebd7fe70260f9cf2f30f455c01b888dd6a24f3071b94bc0ed6bffae32ed7f54ef0549e366e84c9670589de73815257bb8de4e0303180f3f150cc225af762df45f704cd9707aae9f78713b37982b0be3361a3b13cb9bf44bc4df934318341eba2d362738cbcdaceaa79dd621fe1384c24cdbfadff6067ecc120eee87a4104adc6337b2976f469c1331d96992967ebd62c1e662748d2144aec702da48bfa0f9baf3c9ed3ec88a056d2bbce8d57ca49dbd85817597c3ca72797f1a8a80972b97f1f81d33fdfa73f0135f36c384a409643a255939bca51ff97f6b30011620c5bc2434394adf6d087313b490455909508178c971462f0efde10f4373d3e37cd85c001c57c79c3f9d4a45a290ac80e66f32cc4cf6c8e5cdc1e083a658ea3f6088187dd9b430c04747c8188f631ec389bd0ddc96ca5a28b246238ae269c18d1696077a638d80ec242196155589b36a653ea1d527160ab52036d148a98978ef49345a78d9068ff5ecd9d92e933360c469eb0d7536a2b4a53c6e109d2c1549bf9882b3e61cda8ee4c3fca85e977048f3612f8b4b3cdbbed002f92bfe98fab6e99bc6b260ec1f4df111fdaa442f6b3f2a353a551eb376f452113297c1e1e0267a6a6228074892cc5ff97f137627cd90c7b3c5a7ae3be5de47f075b843e15c07c091f75bfee644dc529b739d0e80969185d5397b472bfc475f874696a99dd5e5bba64b854c0b20e95d0c82895774a393143c8051acf8aa01573011062c7c3eddc22447361f806bf4c43531b0f321692b42946f7593d46029802b0eca192b597f233cf45f47df287b797cb868b357fcd9d9cf7a7d4020efdf683de61b01f56de3178ca2f7ba4c8edfba89ecf4a9d0e217380a295a6db2ca2d3573e5cb1655d3e33973be58a000f4f66b56dc9a795c6136e2dbe81bc44d1a4e838c8963c88305be0b21e2409adc3f7bee1b50c63f70fc4281ed3a7d237921cd7ded6f41a618e8e48b3e03c2ed74001e4c6f5583b7389772c8cef2361bdc4719d6078988e875d4855d5f2e698df2b157f784acd27c512a368afa2982fcc7e251423a7992908038cca0dcb45eecb404d2179be39a852406890ae8e02f13e36a66388e9454161c4e0f31e4a0f89429532001c608ba401c1e5ce3a7c3289f3012604c2a879382d40240c7f16a827c85d74ccc881609fdfdc154c02a1bc4dc7e50893b3f9c1cc8e36eac7acc8394c898317cbaf4896388562b909df2cb5f9d33f7c21e9136491bde27a34047e423871d602433b80239801b39b017642a5c902a830e0931608dd17ecd2baf1c8fd4c3de0510cddc467692f66f6ce4105a39278bf01d581009970e54ed319b4f83ecadb00a3203e89826c4783ee44c550b88fc0cf0c724352207b0a1be9a11ea288f5fe08a3e684730ea13bc0c3253b3b23050fba4c08a515a3b4f946686626018ae523dc288a94fff19f9c9295ec516abf0d774d1941ebcddcee90139d45df1248284e866699ca3d04be9431d7d7781f83187f08af1283784ed4d8eecf800bbfeecdc76e1185328fe3016d8474d8994ab47355323a85618df1034b8288f2fd40bc6f7c90ca7863fbbe44722ed41a801d917e5e3bcc25fae17158860c425a110898ebf1cf0adbf6890c545cef23219c6075fd0c4ece7a0638ef93772196a16815d704d8960ed04941b98d3ea08e2741f751a10eb6924c53eb45f68d956548e9985be6035f1f43bdc9cd4957defa1ab242b3d0f569eda8d0070d23e8d80b0fc71952ea3ebc3e50668f3ae50af853c2fdc44ba79cfb007334a411771fa934cf26f87b5ea041227fd7c703aaaf80bf1a18be97931efbbf0707e648261617b5e2d8e3cd3c7a74586e18f795d8c32f0322faed99064cd06afa208a54e5ae8ae8db8317c6b036035c5ee2ae96d3d4c27381abeb4796520aba1fbc5029088bcd6e8018f47e2c5e1ac1ee3fc99e8bbb55fc7f14ff8e5c0508ea2d2659b9409c0462c06eeb09017c430292321c92b17a0a6da0186f8b0b1b0743819b58bafd4c3ca9017fd6df06bbbefd18dc785df10a365651b808d53fc7984fb7cd7950b640969e055ce6f68b9a369398a7f604d5ba00bd128746178c579b4a66bef2a0e4b64c8a168d9bd3a721acd8cc02a952d19c99d616f31e51887975a44374f50fd7548ef3c63980fddfa3f605846b1dce01ba79ddfe1d8989f4f2c3e79868a476878569968a3d031eed5a020afa82e30497e3f9b3a553f17070a59d38bd9676d1d53faae2095683be490ad3fc2adb0a3e871ad53b6a0f9c160e25546be7fce125c1f3bd1d517540bdc85733f4595c23805523e36673b0f16b23bf6b18a3fd04fe1f17600bf0a664f06d5ea31dce245d90005e82ee381a1edd58d149e85088aa439c019e4273212373e0d70beda9bd294d72e85554f3b29c17e64f195e050f18b6898f15486332e8a3fe28a4a095b977be459fcc30c0b13fca774ad8e771735be2f0427077d0b89a2b3e46a32269c2dc16001139e31a0124ecbcad34e5fd621b2119c2bc9f11457874e4cd687f74308f2f50ea005bb80268ab11fc5783f0d1703066f8aa3a145565ee4b5d1f4f41f6548bd2008648fde646a8cbff781614a467007bca7c7704d59ecc1e9c1a2ff6c1822bc033096eec5329486de4d3cbc7020b3969bd97183fa0605e1b49f2866ffd58fc45825e546772860ea40f3323d4907b7a91a18392568387540f83bcfb16e8f704aaa6b1d2e98b80aea4c94fbdeb4ee65ca4afc70353301c853d0a9956b226ef2485285fdf2c10645cfd1950439ed346adb6578c51dae1aa3c060e4a4a560996e14844c796107fda9986a37e6a785dcdede84ad055e3532d9a7e6d7e3ea7195ceda21b0ce3d550d9842618317f8abe14239565c6a88996c9619227165141dc99555c33953251b5d4717986997cd2a88411a5202c5fb1983a46d7f50db918ed694316acec155a036184ecb50d6dd122330499b06922029654e3ca0964ff1b75aa67c4564334e2c76f705471b43281cfaff55a61ca70ffbc630e13b99c92c844113de79c43a70ba8b8280b7f4a4b04671a6f9930aca007d6ecd723f34cd0d4584d59de200b34edae07d06c3676f2e4b7768d9ac3b7f2d4e104d30a4b7e8aa8975868b04b342e4a37c94375d84734dd19e7cfe5e67a87a26c472b2573da486935b2023a959b76bfc4d04023a9fe3d03dd138f5bf1892ddd1b558522e3f0083c537a8a963c2191e435eb966fb92c55f11f4a837124c848bcad6b7a29f253fd34b72c0a6242bfeb03dd0492f302034fa614a573821c671c580f530d635d26f85005ace22ff0edb57727c8f3c6e389509af92201b918e68c2265003804890666bf389eaa6113b532b0dc07503b91f642e9cf8acdf9ed32ce26741c0cd04b7f8830d6d0010f64df639fb5bf28d98aa269b74a0768a0a9e036de0e8caf3605fbcce1c26cb79f66d0bcab73e052e2062a2974fab9028c3c90fbb468000ff384284fe071c1c4b78319a75d9d15cc73f7fc08b02d8329a09da1c7e7946fa292ed2b254702663dfe274afe30189d5995cd89fd944a73600e6cdb7a88acc94ff95ff1dbac51191f77b5c63928c9a32986b89e15294a38f0ae0a349d9e1b98279053554c9088ed5a97470bbdfbeab11d898af50e06a8268d1b7001022625d43f6d69455a96855e6f20a37e793950113ae2865ec31b715b4c3a19d5e99e8af5f814eee102215faa5a89c89984556ed5203256707916c2c899e77328db3d72d897ae854fe1a2a1b2602e9c4f53cd1c3a2b49a65c8d6abaf37207113079a7eb9f7fcfa9a1f8baf15fb051de072cf5a7ab3f907172ba12001ce2c804fedea021cbfc8815782883d26e9aa95344393aa71b86835385833154eec2fe8def7b6f0202ca7ccb764e539c0a5c4c5145bf135881279e01a0aaab6322867fdc6c6cf5861b366d0a9b314967328bff0ecec501d617a983159992dea3a7bcf39be04c475f9d526c18618e5faad11e17f2548d2a2e46cc946b924d0b73fe9f449f17e8aa3f00e2e1994b3bc668cf341756d45ef199ef96ed1b373e5a4f67f4c826d05177184deb3ef20eaa42bdd5a03d8a4ea5f01fd03a8d5705034c96cf166f153d3686d36059e320ed824158f904cdd55e925534446c1276f6d0535efbfa0f650fa05197694efa2100f6aa93fe78146f8fecaa13dfcdedbbfc51ae7f2360ea8b221d6821c811f3e71f73a2e5f57ee299681b1e0db2f144f4095f27e94dcefaad19bf50912d2369a1131c8afd2eda30a046231116b8a098dd752302e055e55f90718c7ab40bfcacd7d08ea2fed0888124e3f86303d784c04d821e603f5df85f15dc3e4e72bc9077cc8cf422462b26810a4ed689b6e66220eb23c14790b3806585756822e65d911f7a01d8ffba7229a591284b8a56a93e336165d359001f7722f0f163023bc03e7613a0e75846f6d60af7f4e30a661c86a7374d105086a82f472165abfa82e88297ceb5c65108e937032c46c573c1b3977a9988397a67914335e54526c1337b65924a6b6ae03003d1203e34ed890bc69178485f404088000edb25fe93a56bd326583c6800bfd1d140fc7b4b2ab41bf8f0821acc6f7ff22b20783d3e7f08b34cd48c8abb035e33199d143584cd68f343f3848a3051e845b77412e2b56275b764e0850cdf8635020446270ad1aa56785fe619f6a0297c8037572ba0e6d0d12d8c7e27dc13246647ad7e7743e51e3e55d7980b8dd869f99519ead8c0de6668eb1562774aeaa3d3975d68e9a793815528217fc1ce6f32666232b17a05f2a42ff674bec35940178a9590c1d61eaa0b7bed4db3955e6d5fd1c8feb604d61a9f613ad015641dd992aca4009e7a348bdb51a118d12455bbe18cfc25ea3d5b3f0415468ce11ea3eac4b87b463b6d5f28fc5c9d081c37faa95f9b45219a00e889c3de32fb5030f723559c1a7578506e75d2fc497698d3b8a08d873e83e3d36bfb3170653bfcfafbe378aee3eb8b1891848cfc93ee205824559fff19f35212b32970c1bd18411979aadcf8faedf167648654da19d0885e6aa870cf3dbc9674235026a25fd78414f036a745f1cfedf02ac30f49baf92ff10658f005d21923b2e7e1f0943a2700cd0329a3b962c310ef70f4f219b457a6bc1b12e15fb31718a46d5d8e02068f9acce3b7e522076f913a651ddd4ec12ef034b48666e61b5e4f57f3066d5ad92788a510cf65b6383588014986448aa9941f7479001b06b8dac74bfe474612138dc7a9ba60194635cdd0887421c321c974491d98cfafe490db6e62640dae1bf9a56cc171f21c0f9bc4a8a64d5448392ed2a235c2581e195908b45b09341231ef5cb1ffdffc6e9725d71a456f893303c009ef28f92688e344950ffea9e8481c82da32a152d0a2c9f0d1556a013dda6145ae15763907e6c9aeabc7b54a12c26bd56b5e44765c6bffbe2a2f3ae839b99259cab47db035ad81ec61faf4621a88482c5ee453ecd4d8dc1d442dc5b775b85fae23eb7eb1305d26d7477517a691c34374546683737eb7a74f434fdd38f5028ee44378afaa3c8b64c8f686492a2883e6a3d94ceeb02bfc8673a96eaf8957a58dee8a34ddb2a7c64a0dbb5c3b74c7ab594eb965c8e991777137157e80a9c2d89371bc3e0dd8c3296f9c533fd9103672605169f0007856203d743658e86d69b20e9e8375b17e05f69650c41418dbbcfc6c6a18d557907fc81cfccc0e0d22d6aca74b92ef715a61e19c474e3df1e4034c912ecb54ba445b0e09971903c492eba346c4e31f302f9b348ee3fcf8ad609e63d650988398dd6be49216b669e722c3669847bbe380ea70cde5c68d56e2506c7abd091c58c8528b9d735ef1f5586d74175906c0eabe2818e73a4b9a358b42027dc1855f217cdf95f8c1d32a4b7e4458b02d3a127c0b6ea58ca36e38e7ca3833d8d67ac6f2385658f2e2ce12871b1c7848c519e35f52bf840c7f2cb772feb2376e04ef030ccb2a046b16d1007d7ce79f79069b271a92f9ac6268884c7bb957c8e63a8885b02b896dcd659893151506db5f5df8da4ee524a3ab5fa2a704c136e00b8c38d6d08a91d2a8f1595b47f43ec7223db6f1d753a220af18c5b21dd5b028c088f637533f92d892dcd79ace9c448e1a32280d794daf8a8eb6ff308e6db19d2b103bb4e2d081f797179056284eb7d2ca972daa83505b30d20d746d7bda96ea05e68425f61ab8cc46af8c397ca4499067bb37e527538a6875d4aa67062963ae7438af32eb3825b47563f3914035af97b354323e4c2c93b3f8da61c96fb680415cf125c530ec8164c45c2cb0473654410a3cc3bc2e934087e71dacaecaa51b7bce57ff6632f87db70cceb8df093b709b5f574d4697d2b9cf7f819cc61eeba31b55b0d1de1388cfcf6bf5d155aa568218d3a8823bd500d3efd5a4d74b059f177236102c29fed494fd4a4712ecdff7dcaeea77b772dce1e79783ad547dd6e18ef200c7f16ad3072cab634caa74b6ac9a48d16a0daf6e52a33a7c0cfdabac2ab1a2953ed9aac9a3ecca798df63687b7207c95af39b79048176515083196791fba7858df0f6b7416a5182c58807132e45617283b774d7ccd15c6e41974510089127e335069da9b6909cd3f000907ece8a521fe63aec2c12381dfba7c72d45f2a58a955fc658873e0a8c0c912dc1a726a8b5160d9b33d89ebae38441676d18433eaeb2200ca06c553671518fa8699265811a3785681970e1a3895e753050a6329862490890464c57d2641ebf6eb00e3a6e9e4f1cac4d528eec6fd7bb2f844c3000565c458d588431569f64f5c37e0b510701a23195b67b5076cc2cc3d3a46971c3e3c8123f114e669d53c59d783b726c4a322983d8cd26e0deec8cb62d1fe5739e3db1a9e1029b591aeba0d528b6a05857db51ec3073ad186272c0f3f2b74fc9e1c54f1347ef6eea525e024ffad7503d058eaf26fd7a2cf6ed4533d73883f41cf82329d5ea9cfe9f8d099fb911429890ca8173e06d6900fad5677584e54c3e00fb320d1db44b60a5ec529db8cee5a4d8079e0f6f88b05594ad6377279defb5a042d9f2c59ce45ca3ea2b5e4739e0f6aada957868d347a2b49dce09a4cee7ec298c0dddeef1213470d256069bb004a9e500db5506df34a1f3aee5ef86537aa7ee42e7fa66a56d9091ba6cd2359cd27fd87a60e8826fb71b5531baec4bb86b89da607fd7b90107fd516128adfc07b596533c0c98e7fe3a548783bca2c53a38abc7c01314f435df125dbc5192b69c82a48df617b4908f670c6aaf4218a07d51285519f2dcb0e7ea5b8fb583882115b1e37ac260cb4688ea3837e9646f661632980154d992621499d1840a41e513e81d2677f3bb1f9656f845056c62ea3f2414604ed5a1b5ff9d7c2eb603a03e38ac2682fd1f1c0cf24072c676833ead02bc05805acd93e160a9fdb76565dccf714b04b45162c8f4fb38b05222a81fd9566a1ecfe51fc8830810f135e17d4ae0c15f88202b74a23fd573b8a3ef7af4f8519a927548f21cfbe22321e773c3515ad742969ab27221dc780dcdbcf903026f476ccb3336c581b5b0108a44f75ffc5205c0240c5080c28f96e88a2028c2f47f794bb175d41765387326fdd93727b8a4bf60767dd30a14408841cdeb227e2e3b03a31aebb9fbf7f6cb0b9bfbc39fdbdb05a1c29452016e29a908ff1d4ec7ac8e57e5bf102c20aed4057b23a94ea81c8fbbbbdfe71eec5f6c1381a3bc0f77520fb98170d84f9c7747186ab0879aa27719201baa1ad9641ef326820fb29a65ced88db4d9fbd28edeb3c0f0c669fbfb8a959ec2069f22ea9cbfb89c2ed7542543041e3e1e9d40c119877e2a26573c6de3d86c0e0302273f7577071ee1f4a0a4332893bbfc9e98042b046fc2a03ee5c33f63eb465c08067953398f711db692a805734332c19e10e275ee773d79a6df6ae6da8df009bd28e157ae4361e9019c9c1831a6895f951f9b3db71b3c3ad9a47184db5c547841fd83f3327322bc8f2436dc211281dd0039c6b218a59988204afd0eb7daadab5babf14d07ffb5870b053d204cac5709f390f0d6617aee387be7810b5d2a4908481bc3d92785b9167d5bcca37da384fc5cbd836434886c369bb457fce6012438655969a3d780e3aaec55411f7d89c21f2892f6f6cf40c241e79924d59c58d8f7f902dc50ade0170e2025c3899e7bef1e9e088e4b838dcd29a83f093ea5d44dcf984c769c915f11da3cadc09d2de11a52722eef2fd1045307ff8fa01fe0924789d90a205211de4ae6d49a1bfd0071c5f93211d800f8aa69a9239fb7c5188506d573d42505580b9aadbaae85851ac7d599f413c472c266c505d807c93cc9072c7eb0848df9bb7f43a45324e29ab0af906c4138fcd2117d72a563d64791746681dd06b41df2a56a23d217951ca4ef04a3d6337a7abb614bbbcd5664b6d1a47467e01bad041052b4d08e51b8876ae668f5e940c02e3fcee6cb04e5c345402febbc2b66cb45f9309c117e62aa07eb39c05aeafa7184d719b43efc29b2235454dbd3c61e95c77471f4e6b61b24cffa2c5ec806896939aae0e555937ef6d7635c5da1672a50dac552bee9dce6bd92d64ee8c97f97fa00fac907282bb807f05de8a48ab373dfe0c5916da11c806e10df748a85466a8f64ab57bc11acbe5d40ebc3bab48537b548ca4c5c9081487cf82a38e7cb230b94668780e91e67226fcd22f6d33d029370b0ba713ae27d9fc94203f4669c7bd7b2e62f963e04ae8d795a7103f59d931c0d54e7212f41f53d5c2ad332ea868a1dbb25e41ad117c05869e34832b2b4e9bbeaf87bb0e31e8c008706eb987f28e44791e35af0538a57ed6770a109842e01d9f73c19b520a7c4f514d66baa56884bf37a5fda718f035ae777a2cefbf085f76a5eb2a708a1cb4f68cb3de58e4c61a837c3d9ae924cdbaa67019fd60629a3d7c783d843ada26d214ed5fed0e5e2338f60dc619dd73fd036cbd3cb8b468ebcc20a4a5f4fec3df695d440b93008b7ccc23b40cbe0f056e1015cea3970c12bfebdd2e548fcea1bc6ab819b74c8e583daaa165f9254bd6d6c73f3feb18fb178442e65bb43a73d8ad1aaa7a66782babfdea1f562f2e0517978568198c8cdd9c6c7c11208b79b53db40530379bc12eb8689850abe560ca18bc71c6877492a2f4c3c8de910f624b49f1675a3c6659be2638d9b3a645284baf4673ccc740a4aad2e9a96357e85d5887128cc54dd191f61e66e5fa516e6f6e2843345b037c4ff7ad1c5ebecee6219795de7cca174262ecfa60fe8dac1a1c17039b00835f6cc43f1ffecb1f4e1655e5206f11604ab1b888981313932588c6e9989497c816f54fbee87aace2dee1bc7192546cc85e39f65c9529af53071cdb39f6763e2d56c6f8a45cdc1651daee91a96597f17a43bbc9f9c37639f907ba77af6e51740b7bf2ff0508826488c434cc322ebd768044497c88942a6b3d8ad60fde72c020d21478a4426f1f7df44bda92b5991e96e80495235367e0bc8f31bdc45a05f89e05786834a2ee7aa9c3ab64188127288e22277005611f177a893edbdb894cb478160df6f1aec283869b893215e053fd8dfa47702fb0cedb94f48a09cd40a83638924c7677ab9cf4cb936e7568bd96600c38542384983f61c31767f982dd8a96212b485bb8bece41a3b67b41972910d533f093cec86fe41e247dcad1a7a3d739f086f010b7591a8aa192003fcc6f07006fa8ff41b08c45d1aa86d72e1cf5b8d37ff07a93b354a3dda527c6a143c4f216466280d4b6035b5120c2cba01957d868e15d86d6d5a027a65e89ccf25130e6bdaa278437fe819e436e13c3dc65d2047e86635c762250edeefefd7418379dddb44e60f5cb37a864ad610468d575505c6150992620bc826361b9a1a024cd2de1acfeec3c6d7eb6c8c36ef56f66be60bea259b01f3d2fea1cbf60b05360039f92bf9664eeb3e5a9b68fb0c43e2fe5a06af1fa9a68aa9cbf4d3242a2fe7adbf4125ac2295db412bb88876b18af566c77d17eaae4882f244cc95df7aa6be136185f4bab56ee82b57d568401112b214db7bf0faa50a80d2cdb2d91a0c6c592b3449244eba39b6f0ec4a141b95c75489ccd8385b76d9c9b6e33067cdf054622858a148dba1930a2ff9587c331f930d223d8e9936d2517bb6c8a3e4823839b98d30ca556fdf8d2fc0ac3c11632920187f29d35cc6b1ca65ca233496b5c28ef513c4fd188bae5eb1e1dbd5a1cb8125ed10dc3dcc809ac2a573e3c184af028ed2ae0b2f70724631643b832b7f739695f481781170300c065c51dd571ee945135d6dbafe5abe4e03906a65cbf527c29f65346d372c5036388fa8a6cdd61c0b49bd7ea575e305a9787d10f82e83ab72aeae0c3d307fa7a3f68cbf78ae33e78689664e1c038e44b35b0442691a8dc27d29b7813a773b2ffd24871fa4e23b931163e16b450c70f42288b5ff262253121128bd889f3e5e7f804610bc81ad6118c2b44cd65696500f8d08a90109e77d9a8d750c7a90cc90009d63056e90ccd238ec17e3a52e5ec5449b31cd6420aab25b23dc064405c0d56b332f21c10ef86c1f7e4b570bbb8330a2d9b609f2c40ec9b18b58c98c42ae7c254b5a82ff526b50ac2f1a250ecf7313a4208203bc3e98f0deaae56feac1fd2a84e42dc7d61190982b8fb2cbfc3fff6b08d79c7f21d6a831fc186d89dba08375b11392e30e44255c6101ce1fd0acc3374cb1212988a1f4958a4c9958e1eec5cc28ae06b97bf8ff850f01311f9853b240e9ed4f779704815aab9a64b01432f42eef4873cc0d736b97b5178acfae328963f0b67529e25219574389d9b7cbfa971fccdd3598173a4066f4cac82bf1c9a74797ac65c23425f9584a393ebf9ddb5a046a8bd41a870c4a3eb0dd25ab52b3c06bff5cbe9c9180c60330ee33008f48623055aea92fc77a295e76c49145f00f8af09089222e3f00a3876f88f6a1cc169ed2e6fa861409bb5fc44d9ca816840e5d588daa638da0c4ef3fbb1c493f6b2f878daf79d277eb8c981d7222ac186fae8493d298cb022ee757a34cc08552abe2544ad52491322a4f7740155c38a6994e18d5804175d931c2ff8b6e2453d72fcf83a48b1ffc7391322c45ddfa962bed4e5f7c3c552e2a6889c805610d4cedf481d0ea0783937fdf5d8618499dbc68830cfd706510656945f6d98c4db47ff398f12decd4095067a1460e64c459d6e2b7d6106b20df1a7698dcfcfa514e58e52e4ced778d2320524b195ec4b55bf6badc772f8e002bf95ec76e8aa71a5990d942d0a40abc373ab72ddaea3353e39ed46f5c5b2762914a86418297262014f9962fc04d55b0814780bd1f5063c5d7569f3151a12c743ec65a2aa093b51cb61eb5b5b4b3258adc1186c2e2f4357cdfaa637dfacc89286aef06a4d44f794720d5d81b0d5350eaf73a40f70f636e1827ac40b73a0438b7d4794b99540c972186925b04623507147a3e2f9da1c0da537caadd3333608588f28a0a79d467afe457c685bda949e3710f5b66efadaa73d56fd6779e8a8b4a57a38a48d2975e5bd333a43ed6030fe61142890ecf383922cc0c7e0c0cba6606e5a8f833182b04fc9ff316eff05eccbe62b74f5e6c87fb2f4c0092c22e63e39654534d46142c7a61419ebc516a6d9f2838ca2fffe3a945d43b943f9f1e01862af972eac31da0c84de05e1a821753da022b10b614b8e1d50addaa34faa6d251de5deb6a428dc0e6bd373d9cde51c353737dde47dd8f0a00f0a0bca0d621b1340cf48e0297b4e7051e5663e38d8f543a435063752ddb7bc65b8281e3da5e8832af6a247692c08ffd7439d35564356ec18316b993c8109712f90159f6dad7dc7d2334146177c6fab0af13bbd48532a7e4c8bc732bf83cc760b8ed27261a919070505f6c00522051fcfb28a06f06611c98f1d1afe3a1df43131630f52ce26b6e6185b10f8bc67b446c01135f76795363d90bfd77f2afad058563fb94fef2971c4a043cd2309ee13ce1a69975ae4e20cfa7065b56eefb008747641693d0e3dd5e5a8b55174fb1d5d74cc3a3f970a0ad76c3ca256c64324a75087c40ca7c9ad57d509f06dc2a34e393cf8b1309128a77c151833896fa3121397d12e9e8ccb6723532d223678df5c486152d53bc21ea81f55037e93d2c29be4a99f26e8702155c9be1470170facdc2f1315e2cf33d3fc3142bb103494e811d9885dd0fdcd06c2021bef0c0b50b089a5cf0f238d72c2f282618a88899f63930a07c331ca272fb92fef7d40f7d4772bfb0010f63156a590fc620011d70a4910da5a7ed92f1687adffe7e58c19cdf6d3e38461a01b7269aa403e3f7b20f85fc20a5ec4eff300c2a1c25a83de2876f7cf3928c33dd87c1ae95f569f63f5f1e5c94a8b1fc646123a596c009d446e00eec48ec3faa00682c45b35a723a08505469e89131dd9c78c3e7c5c9f2bd7807a8f921229b4214ef4f05f38fc1dab23568f31d3a213bdbcbd90cb12ba06d51eb890188e8584da1ff5228b6dda3a2f8a400775203e75223c5d44e57e55a073655d1684518ebbfdfe86307181fca8c939ea59c1109542558fb1c45d1dc9900279c7ef0063f1074271b56e3b54f88a006529219ce7192e14e4f1e302eeafda2f504b46f534e944fdca1a5b411e0e63e9e79dd9f1102226fe295509a602aff78322d569b1f75ce5db7c581a3ef81363959ddda1606643f632370c427845107604215eb7300af3745c778f14251d4296a542fc777e206fbabf2f92ff0610d08b7e5f53aefdd410d0b59c4d187dd945e2727c379d5e051ea2baedd7c8e9168544a8a7f169553090bfbe550724637e90a455e0a30eeb1642c02b246253c07241a196494041e2cd3bd9f5819d429d2d70e6868c7a92b1f1e77b1e04c438f6e30ab9457ac04c7ef8847b53812f16024f58ddf857ef1a3528688405ce6de95a49059eb78d3aec03b74947f26bd9060c364e81af810110692b8a99e27a1081e279e4ea9d35ad591956c935c44a5704a79b5dd4dd71b436c0dfb77fcac56c95c9eb347f97631ca7007070a800959b78c0d8e419c6014f15e50fa2109810ad3ca7dcaf293f92b410fc0107ab19d860c473f564ca77a8bfe53d8caf468c0dd0468a83ab54003f9ff89f90c44eedab974e76de338d5bced7df48c13938d5c0f78e1407cfd6721bfd0e8040f64ca847dc3215e15227418888fc4542edc1ed4b576c0ec9cc6d960fa263c879b1551e022960880d58896789f1babb11710456c26484640ea804d183c7a004306638c3a1f812859a4ab3b50314fc2d9986b784e8abb9c44a31734377625475c63c9a31d504cc2df288b5b45479aa462ea237bd75130b5296c1b5701bfa6384e204bd8c65562d005e6c6e435d59c56cddac580dc7c9530c18ed812d73f7d378a4853da7cc1538e2d000627ec104ae10e137f1084a7ef9bfca70a037c7c5693cb0b708d209f9c5f306eab163182f4c2cb8edf627c9dea4aaa00455f160e52bf8df30ba5f218be3cbe4c63e5ef7aa1caea8b1797385c8a58b8a6c60e35e57eadf2aff5b9c37479cfc4014e7f1b935dff8ee8614194fb110d7a07ee8ecec3dcca620c548af45ed35123c59ca5c07a438b91b5c3fc86c851bf8d254ae7f7ae8db0ca17cb827baa129a7ede601857ff9a4d142aeae0e6aa8b0aeb4f192e95eb118ed35f442b93c323022b3be5c8e2ec2953aff7d719b7e1498dcd8dfc74bbfff07e7818663f0987c288ae0251f4b6bdb28060f38e0f4cde11391ce3247ac7750cae821b7a149f9fb4d003de3931c8ea2620cf3b10720ba49149c49460c348137922f1f317191defde9ec39aceb269ecf76eff41e8f316909247c595fbc7c5e91ec26923e3f2c09163c0ca8edfb0f037c2402dff03c98b189e8e3dca26b5fecfb45e0201f3050f339d19b65b2b1e59430427fdb3496d5e75b0277d97a522f57515ed45c4d2bba2f9a4841099ca6b3abd5b1626969380ea80110cb9c0d2df0d484b9f5f1485ff90ac9fda57651c171f98fa6079d9b389df4e7bdcda621cffbbe7de0c4aac26cadb5b4cd150bad7e182dc5daf07368c996d915ec5e5fa40517c1a76239835301b24110ce6031154ce293cce259edeaaf067e9c10c771c86d08a9c2819940d2607eeb457713ccb1b7bd581d8cb879e6e7aa0b196f5671367a98734ca5e92156b6ebdb06c756b069c14557a752c5b42eb7edc81c1128ee1c839f9c14fc2f81d1a702132bde5622a582a9d3889b3fff2ca68cdf3feeb69efa548d9ebe1ff0d38815c1a6fdc20be9e8d2d9ec691886c149f2132ab5bc2223aed26c670c8e57942ee85df818b16dc247e88773c0e8b3bdfdfc549ac63234a64e82a9c5523b45e1823ed4edf32c725d9931ddae36411ab046792a525205074ce9809b5e46bef189915f670b70f84cf0f14864932369bc46c6be161b55b7d7b5463dda474820c474ba3fa40c3733ddd1afd0c6d1c001d757d41028558efc7e9014024029e1bead59a14c3b4e33d5361e50229cdfa2fdb24da8f31a5ed91e54316f39ba5e816253658ccda2d03dd08bd6d1b788211e43f13d22a97b800559d89ec3922e9b994bdc433a608603349a5e2c328de7034b7402bf2be4f05a274af71eb15731d520df63c826d7727f000099f2298552ee2aabd0498171c2bb98ba43c73cce89b28d9002bb65bbc3e373ec54bb74d571abd7009ee6dbcb41838103d8c6d7fea4f773327397e212d04370039c3c168b96d54a0bc83741ee109b949a7971be60414d5e91f6b4ef846106507f645bbf4d96a10c91eea8706c8730958d75a8f27c22da465f857f994869068c086cb128bb08bab2c5fd3fe950170ed8beb1458a06a931b72a5e8045e519a3857bc03b05dc75906bce1283ef9587becbc3b03563e8ee0ffaa86279508eabd05c74dff333f207d11b4f0f5aa9b34ef3ee634a2b9fd76cd6670d0548d7161f316c91b9790460860cda075026ebc03685de8670001ea950e77100df57558c3a78f3a4575cc2f91bf0e5e7df317fd4d6b2005da385d623901616f13b40f02555e4a96040f5247aafde8b75bafaf13a84cdade533019167dbdee8001afacccc9b7f68e620562ecb57f38405a37bb31a7cdbcc1734aa08614e271b310faccd011b217505220d3911500a6ac573d3c5bea9a79f6bfa88d668940cf70dbabb94ebc4086a9f566b63079a8a81599ec891e7402f717d99f6b43d642674bc76d98c72aff3660b7146b46c2d9836e527e64c28fcc5b204cf4a90a59be28449614e2a8b68d2ba152f630bbb5b65a7aa09d71854d802024bf81d0ccfad59eec4e5fe560d8308912455c7ff58b3c73c4fbf105b505aa8491efda2a287391485a74023c502ce62e9ed11bf8a6d7e1da5ba118b21f8847d24aa881ad70cd979fdd02e350f2e0717126977e208b318b452e7e4c60b04278b27de6ea4bca4d4f8e4024842249f6132720545a5de0a85fc9da3bc02a5af8c11b92490eb0c91365d27428225214f6b823941a3ac0de2796627e6772ee19157aa9062fcc0dedbd95c526a93fbeb321b0fed8bd1e898447ad0067db948a3c7a8e0a58293b775f42fd8277b155b8578c190d154f5592f3f815ea2903adb2325276c77179194ca644d7fde078d2eb427f3f66076a4878a14e151f64c22236b85284f225a5e216c86db7fd27238cfc3b4f448661e5de5a48a5466cb452d98075d93cf783b621be772b520208c0dde0e1c6d2eec2cc1ca20c016b8f144e81653adc709508d8a25e6e7d7c74ecaa233ea31c4e093b5293585ae6a8927e1cad020244982d047ab8cbbdd0fed985d38951e34bb8927225a6398bfbfc75e9ecf6d0b740eb99c7d4462fe74582b56c8d0d073dff904daca7779b44a6e0aa675fd79835ff6a5f601d2700da1c0f97b59bea5009ad58d7d45748b00af1caa1b6eaf33beb546fb36feb856424c8759489f23c453e8cbc64fc61379ec2f71007709f4cffd46373400c0e9648990c3ec6839fe8d94636275564a6126e105e9089a692002069b3ab7864b1121631d538c4393a6fd6825fed85a014bad2d8315009b844b69c8c41f45cdb081ae6eda14fa42bb665941d0467e6272d29d3e840bc772f1ca588fec9cbd0c6424022c72f113446c836288aaa8b9dc8fdb462991b65fcad9e1521c411b0634eca86e591a3152d95ab3c2bea4be757c601cfcc582abb1260b3daef4a1ebe5fd26c992727620a99c560df3a6b0be42619f131cb05919b472ac2f9e70b221894925c2f47dafbff3f612a78d85139de29f70801ac44824fb49de887c2f3316062a11a886f345038906cc272fbb3e0ea55f1203369d00c65e09b580c5f369ef54b48634bde4eeec1e3f54a99f3187fade24a62af5c66f81f3cd90cf60bde00d8c39a1057171a2b5b2bfab3e5f3d425328444ead74448d6959e35c19d2c9962cf756b2d3721858899d9f410c73547a8dfb979a15a233914efd9f379fbe08be71ed38c75c84a8b5f3690331941c732d734c0e4440da676ae18c5762c99dbd8907302ab65db2d0ff142649d97284b99daa2a0b20c0c38115948dd688ac1794d81fc109e1fa2b1f42f68437d27d1c04b3d366e375d2080894de6a14a579681194e8e39ad6fe89e79b2d716ed9b3c1fbb6e65b5d2321f05ac66100c9fd145f14ff7413a55022a5a7d44ac73c569a09394446e577a2d67b88f55da3063a49ada0e07ba4d203ead6ce905a20185aa503fdf54465db5ca5e07e1d56eccd1ea4de29af7c1a763b8daa1640956664eadd786238bdd14a7510341a2800ac07b8fd207a888e86340aa87cc846602744c93f76cb5be168a0c5a34f82c826646fb9b794524a99640a22092409d1089dbf862d262e04a9b0a6d0412478e42fff1618ddd74530f8cdd72a5777cad8625c6a13534417797491465b9b0cad46efd152727d5b5d5b8b931f5344172bcdac236daec2136ecbdc862f4a742f717ca57b9b8bb156fa12cfd6fbf09be6348a3319ac23ba0f62c958e8378ecdfbc798e84dbcd43ef339530c42b2f7244ab985dc4d788049963f6a8e91311207895d401b3232411bf15d2976016dc4a713c21c83e3742c87a6d8b1c95f917eac5e91dfa249ab5501b741661d1f7ed37acff369cbebd10fa8810215f09be8b5fc2fb7711be77254794e2febca45860c1a5fe6cb533a69bcf705c7978165111dccfd129f3e76a84e0929e9c323534ee9411f9e2c572e3266cc983163c60c19cffae678c878562ac6172a3f067fac1cf336c779724c4ccc9225cb14b6fc19c972e7e5637c8ccf71daf0277b8c7e7361122025db7bbfd0d58bffe57d2d25bf3ee2979758c6cfc0df96677c0cfeb61c33f339debaf139de02128dd20e4dbb30a2a1232afcd7474d4754205293e735d9a0aa237e0363c34795c47172725436542a954ae5f1f8cb06138a99d878b33a8fcc3491862688fc389063a679cad13ce58078a6795a25cdd3fc9414afeaa432de3cccc34af393e629cd4b9a8f347f4343f3744529cd531a58686104251a4a29d5360d06db361cb86330dcb1e6e47371cb813ba603770c763a9d4e28d9c9548a9b9f4aa55229944fe156dc07db16450e9a4411a54953b65946985a391d5593bf763c8ecdc767451c987c18bef91b8f07c7c37e72f2e6611e4f8ebff96b83613fc4e6613886c0dec6e3d1f1b0bf38308f13f94e84e03891dfdc109bdfe1f1e0781bd80d660db1791c8f07e76d3c1b9d49c95ffe0e2549078087f1c26f241624997799ff2c8fdf44a61c7d094e4e2736d17c8e3b14bff91ae60911cdfbfb14bf06c0483ee6a4eed8a7a1f9010c600052cad71ea6064a5ff8e6a8c5ff8217bb8036683ed20c00431f7fd1d0783cfe722c47194be710c0fb4328b48e00bc3f8c42dfd4bc3fccd237365ef86e8515fefa50958181f9c8e9c0703052fe0364b2eaa5ab549a030090551fa587fba5fa283f6ad2cbaaa758caf85d43f55f043e9c552f00dc30d6db2f550d28154c5609f1114357a9ab5ce365bee38e4f9561601ee663dfcc87f9da37f461fef68d7c984775016cbc23483e66f3b08779cae9c0acda46bfe2d6aff830dcf58df836abfcf56499a977438f4f901ea203b40bf1070282748e39658ec33c0dfe7a320d8dfd1dfa9fed67aacd69e900be39d993e5006285c1ddd360d4c37ec713e0b5efc679ad15ffe60bf0dab36030180c0683c15e7be77434bff902783c4ee2dfdcdcdcdcdcdcdc3c1258ecc6f3841c81793c3046801d30180c0683c160b245058061d7507d00b0b70dd5d760d92fd5dbc0b65faa7f016ffd527d7b90ea5df5353c0f52bd0b3fbe9e1cdf55ef347e094ef8a24935a79ded947eeb7b728c52c62865ec5e85514f6f7c733add5f1c18070b8933fe3a300d35c419e7e938431f899322b06c2466f9691f9fc2e4c8c383c489edc9f59138b1c166eb15a909c0d7815cbdcffb8ae490e567189565e1743a6ccf689f031fe99ed1beb91e403eb76f3a70c772e08e5d1cdc311c1e0e5cd3332d3c0e6ee167fc3923a7235fc32d7c9ced82a643dfb91b7a7c7a726cc1caaf6fb9f996fb01cbd16362f3969b0175c4c6f3b1233f985b88f95bee87dc694dafc70619872cbf5a2e083cca36f7106579809e2cbd6e175af8cf712eba003f16094d007fa8041b8fa9054a4f1ba7c33d3c62818523168e58f08f94ab0ff32ad5a3381dd56c69bf23f1b77d5bb6147f4624cd374769601ee62dfe3a8c0cf339110673afc2dbd39fc14c6c3eda3cfc89d6b25013bd0fe6d77fb01b58fa8cfcbb6d1ba7c3c4e62fe45a9e0cfc6d5962d637d783f53658fa8c0c2cbfb9cc6b7fc56fcb317878a65e4ec4ae8f38f512af9e05fc7dfee0cfe721c8fe00c0df2683b160f95cfff5e49aae017f460cbe57cae803e7186396bdeb23b2bad819fed4199fb6e46b16c37cc52eada5c17ccbc0ab7fc1a98fa1fad4b3f0ea9b83e16996af70a7c2d65fb26112fcbdf2ff74dfcb4688bf62f07cf8eb23b265997f7ff9d7654f02b4b93cc618638cf3a9cb5f9e23da40256e8361129f7112740d17419f72f4600dfca1b8b2247ff007e8497628ae54c9fe304914518af20ab9a388829475b62b23135d32aeef84dcf89bc7f9f8acc669d5873d8e8fcfc9d0311b8f07c66c86c01e87c7e3a43e0c0683c16030d82381c5609e27e4c80d8f07c6703c1e18bbf16edcb871e3c68d1b8f0416bb91e336d8c6c6c6c6c6c6e691c06236de4e8c7d57dc5c109ce307853af8de58642391e6e892e9bec86206051a33cfbc07d2800562e98992e547fc492c5d9c92d538d4da764a29a5ad2874f47d7ce8d70ab120a1ab300c77ead469a5d413e223064a69fd1abe08e4f843e6af27e32cc45f52dc7d628ae822d7230087473e503514d47ae6c7832e6308ddf72fc3e968f30b2cd9886baf7d32f7e49e2b3aff0ffae4294bf995db480760e42bafcb13d82b6e5f13976eaaa56b819d0aa5aaa8baaa354906f7dadf13a7a3ad369724baef73f4a1e568afdd25edb9bfb7456b61554d63e1983379e23c63e499ca703ecea07e7a1ff4c179ce89c29d7f72dbf478685f9fc3d8662d445a4a462945f1c08ffc799e1a4889a006c83f404b2084e5c8cfc3c7fdd16b01a3eb181b422740a1bb8eb1c00c6414fce65c60e8d054f7daa1d35996bfa4bf849c64429005d20aaa4c214949cc7f879e1320e1089f27b0d062072f58b82d214776d061083b2001edf0c4109662fe3be42990f0810a1314be901283df7985530bb753d6a1911be305d3bd225281923f98bb89a10c5f3621d404d02ab7911430628c934a619a734e5aa5244971627afde3f0689a600624c87e0404970c143dc0c06584fe74f7f11f484f8a3146b7e20e8418637420382b6993893146f8d15ff077e04931c6e849f10731c6e80e842bdde30f64f48191087da20fa01712881490007a914473a49d8f8f4f15445e31a86cf184c8ab66e6404a94399424dd0aa6ec0a13249892e2509214294a513e60c55a23564949b342841556b4a2c6420721d08a7a60a4da6a858c8b68094b3256d021288424033a949474a7602228296947ea67ca0b76b8fcc6882cf2f1f131226bac60d15821c20a168c9f011af9861e9be15b87c2dd1d5671740a82880947494d590f4ba26822b2b51522ac1441646ba46d8b2454d048493ee00239e8a509335188aa82544be85e5c8b1783605200a390214873e64b6b84eda09c0ee72386239f393014ad1083a0ffb9d20fd5e572b96aa080924b5297cbe57ab9f09ad6e572b96878405296652ed7bb5c353635f42da7d3792838b9c00b1869a2f1b25cacc955800853969d5ee6b918743717e873c4a78590b9b79e35bbcd1c786acd32efc321731b27bb5557ebbd41ac277da81b87638ed0b5511528b98dbe10ca305f5bbd258f1642e737f5b9e77e723a9cc5f087fee5acbd99e5b29b3d676d96d92ccb2cf7dce778c67171f69cce711e4c0fd9a9748ece540859fb1ca75ccdb26a21449d38adf523858bc479e9c6799e73fc6e397ee976bfefbdad874494b2ba2e8828e9be4b123af8157b66758e0f72b83e8dee33193a060216be391b74b6bf01666d05391dfc90d369b9ed37516699d6d26c76ef5b7bb54cd2261a571f3583cbe1e0ca6df9abda68d0f81ccf7436262cfcc53a2d7fc23a2aef6fc5315c5c6e6301c7a13843df8f2c66c2c2672c78523b51c4f1a38fc5eaba4ea2445c34d763de9a456e2e322e20a7ba315c70d17d8e73b98dbec0418ccf71d40c58315c7434b7d1174d4e1573afe27a786e715858311709adebb2a57004a26bd007008e2a8036e8cb78d2cbd38fc5faaf7b495ac17b792c31e8a529c68c2fb8487dc52f5ec8c030c7148159c6df974d85eb6dd07bc8a9bc18e4e118c40b135ee6367a42930ae3fadf713a2d29e8700d42cbe6facb6d5e34c28563d00feda5721b7d11050d5c7f0656713a9d178350a0ba2a6c15c75ce96c6e2322dc209f6264703a31068639064649579f060cc703e6187f65f8a0428cbfadad62981ebafaf52b0c865986ab9e0b123af85c1198611c0a5d83becb65363182fe95b155ec61f8cbb1740dfa5b942e0ad197517154c1a85b3dfc2f06dda4a8d012211e2d051e5ebe7f357cfa8b6b8cebb377dd2f12f37dd7f55adae9747af811f53047d43dfde94f1edeaabd1806c120fc455570827e3efdad1c8f9642be7fbd4dd364ec18bb654e1f0ef97a5ffbe439853d77feac4b0ccaf457986e2adcb9a5cb5e7bcb71afe10fc2ccea1c5cb771df414e87fbb4b7b8a5d59be122316bda977afb17b752a813778bf06420db6799d6faa17d96592d95b241b2dfb6f7231d56e760750db8e5fa9bdfdcaf5f6bf6b79575e6c9d9e93ec42d54fdd6a97e8b6b69156657c6c6619723746dd48425f98b51327d1885ac7de4787410b2f61bfe20b4b8486cfdb0b0b37bbd0f871a24f32c8c45ef310cc9cba383fabbcd0ce10b76c111c39c083b9e4f66977fc19ff65f5dfdcb47dcd23c1e9acbb7aac74373d132ec1a2edf5a793cb4dc5dc3e563f60c73e797223c997bc13047ee8bc4d60ff8abcff10873e737d04777374d5a6b6c505d11e9e3e383734060f28bf7e1e0f239d1055b7fadbced15919254de8b29e5357550889e0c19b124081aa264b92875fefe16c6a08f75f5b8c0cc0521e8810852b42082082978a0a70722200c81c44a135daca00758b4c9acb68e8523d3ad23c39f3145f76dac8f086c76573c70831f96908009a5d8c7ca2d48b228c2114538c10225317a821c635c6dd0090f26b0b9fdc6bab7d11348b2cd50781207aa3602a86901d8c46bf34374149bd22a25a53a82b2df1bb10e25d006d401a4e3071d413a829e832cb84af78a3b84aba40338943f22f347e200c29104c70f0e1e7000e100b22fb1a4bdca0d4495775af3dafb88acb2f775d98a7e5728feaab5ebd36f278236ba763fad95564ae5cfd973f6206bf1a1835fdf5a6badfdc953d3beaf03699a960165d6624f32adb50e64adb5be759307226b6badd5facbce39e7ac4462967db7d69f65329378beedaf3fa112b431eb6daefbe7ac5df311edd15976ec88fa0a2331499211fcd0300298244914972aba6f55a583bfa30a180c624174f419f18fc84644a4c493be12babbac504a6997293adfe1b2bffd25e3e63245e78a5e7ed96aaf73dc913d8a1034c078a4a223298a8084388254e4501c8a33e144ce844371280ea5881d3930f87039130e6589b55b4763093aa0b203264069e94040ce832769e7c1811c48090782c18e1c187cb09c07216864f924104618bdce5fdb6abb465e825450fb7b456af6bfdd7f879e0c112d69b2c45fd4086aab9c4142b028cf94504a2825442a8854504a8894504ac861b684db04e85242d9e625f027fc88c0a354504a8894901130cb078c5ca674ee5aa9ba860e3a55f677d8393a5b229460cfa8c45f2da784322a911e7b80363a02411bd095620f5149549284a84489063e62103244c695620f51c91011acdd3aa09e92a489c39f342469f2278842c35c9ad1934b4b5928d190055c5aa227584272ad584674df3f6c07fc88ac5c2b965cda9e74dfb7145b6747d07dff48453880126b7d5a6b4369a5d4a66c994d6a6bb28444fe8ade9389a4ac112a016dc4089f401bf21d2a01897a20d1dc74e05f871cf58a549df8feea2a04a22cfbad93ee5bb18c4825a08ece3f741f2b1b4046afa5d0418702afbb30d1bd60ae97915ed7d765890b3b4747bf81f0da5527e564c9b7b65acf02db76e3e651da9452ca637a9b67bd6795d60c9e6674c44849966536b336aae0b666e0815d0c1981b9012df82f34c5785e688addcf1ee696f96afc234e902d928620a58992282d88f90da69002211ed8e0092947624b38c20f4b84b1821484a029068308906820f4042eb43842cc5f73a28a1332c84e7891dbc889a55c23b7d1943072976a7fc801a939c22529e5f7e4c6137f39b870446734c58b7c7dabb0a907b390d5a310bec514d1d1dc1f53443773b392e8be2ef22474aaf7d4a3de4f734993ee6d4c115dcded1e639cd0b990142de442af38031f2a2d59bfb161830e14816c178f5c5c5c5c5c5c5c5c3e7ed7382d2d2d2d2d2d2d8f04166bf9d8ed2fa4a3cf3ec75d82e20c10527deee37f9c0791e011f684bafa4748328000c451ea1581597e62fc893f3f7028c79fd8ea180f8c651e44f21163ddf067db7d2cfb91d3b1177f8654ba060fda864329accb87eeeba22ec767507dcb434e06d5b7a4521d0af52dde0c27194edfe24109830aa77092c7522778947241e723c75f2c1a248140124ba188d3bddbbf34a688ce65cb4f0dac863ba5545c6f290490a089bf224e2a8551b87b46bb2eef1deb5f47f63f980b5ee1ee1915b6f8730a75823ffffa2ef32ac7f550b97044b7ca749539aec72acbf72a3de3bffae00f84a26b88208aecef1e28026309261cd1850cb2700110b2fb53710278d4354800e4afce48742d25072dc8fed002f9f8f848f97aa2cc872da5084e8993c582482f27e8be48e4376d4485074f22141790e83a2977b6f18355a2524662790da66b83f6b77ecfdbefb71e8f93f686d8af1e4ff3d8cfbc1e584d0dcc6ce6e9907dad6f3dcb7a96bf3cb7f61dcb2cb609e8d811fb3db1cc6bb5fd2199d7eaff21adf65a32fcf7c4723c6e9df6dfba5afdf833646f3d1dac0e4e86d8cfbcd6d5e1764c489cd1fe621ffed23ed5a4fb2c8388ee6b2521f51b7b6ef51b81b9b5fd90fad9730fb3c5ad7e1d9cdcd721fbfa3a38e1bc21f2edeb503ffb885bedb5366f48f6d56bf5c7ae37c4be7c1da4d76aaf027146fb8ed997c144d7ba5fbf63adebb564c8befe0cd9574f072743e2dbd7417ef633d8d8ffb5528699497d08545570bbc60189181c1184d00b5e7083583fab715a8ba1a0261a08210a1821e8ef9c1d7c96982c0df13ef84b6ba5bfe2f6f15d7e636dcbe89ee49b74df667ff39bcfc6750dcb5c1f76196bcb1dcf4ae6c4ce9225cb145c193af4886c997a199040366085082b42797a3bf0bd9f872b55b0c3089ac86d65b43d7b3e20b356a7fae8ee13acff013550204ec91b949cbd563597e3b8ef95371a72f670bbd92ed470f612d2bd603ed1f58814151f923b08d2807670032aa92964096207258608838a18f401520886b8420543f0218b25a8d0101457d4a6294320b1c47dc010911747f0c0c590093430841f8868c2872a228042055bba9df5fa4ea2fa44b918eb66b718b56e2d8b31c668b7ca5115900aa8b35276d35b60cb112d49747675826172a1473969b5997637ee84ea522a175eaf1655aa43a956dddd32ad26ce5894c66d2b1794cbcb49e6ff058673b15830ac8db58a71ed5b0f860bbd551743462b6bb9ac2ba6ae543133a8aa65068d5913676ad66253f9439d32b7758e9aae1121fcc7b13b87cc35ab74ca5c5385b7526125d336b9a65f5e53840b2783c734af8de85656656b646456a79a1ad50a2e7cd850094a88c28b8c092d3e463bf0f131324a8290910e828c8c929890511fa06c50a03041c4041c72284bcc211d3fe850a20368fe740eaa4307083e22bd2d6d596c4a5b16be2ddde0ce9f88e3d3fb8cb88783071c3f387e88b8afd77f8d542281e40f12888a0b7fc2b843d81a894b641ab12423c20a3da073b81532e24ac7c988889478d24a1075130ddd769b24c9087eba7db8ed8ee33c7812fff11f07eaa7435ceb3899cf784b3146b834b928a3f42c628c281a9622f6ea9406f0092412a2a9090f3081824a2b654dac5066849456b242191199119911925e9a8294de6c375cca067af7cb3d013d2b18f240137e3072628508b1f6ccfb36f919891113d9728799b47cd7e2bd7c463e4ae7e4c9fc40ca7769fb956556f62bfb2b67cd2617c4e6b0612979e27ceda1b733efac19941fe389ee2da495baa4fc93d7255ee69cddb367bb74ac4fa9f7e1906bf4f812b3186da53266999665537e4f9fb195b56cabfab7a8cf29e594ad19b1fc185dc2cc062efe12a19491b6f42a142884d2adfb172b9dd1adcdaceddea07b6c45e9314e28a3f4f8f23a8e1fa36c29bb0570fa709854f437df5b53cee9dedd3da304d2163a15ab095b7ab78ad3217e99c72e57bacf2972ec6336d47c7ef49d424a1db7b4cc560921a57fb7cd31cc5f7109181ce7fe84f94cb451c1a8fbb6cf4685a2ce1f7232c4584e9c89efb245d7b9fb421deeb355eee6f82a2cd1c5bfaa970b2f2dec4cd926582f75258545b762b9585aa89ca062424be71e79f495af57b28c2e1c0feab580d0afef04f95c10fad56ad976fa2030af5f78e395f8f4f5c0804e2e083e8d5b1ea73ba4adcc562a63f418638cd26af3ca29a8f977ce391fc209e3f358f8addaa2f05b1276111e98bd486c2883c4873fdb5fc2871c02bc6137e482dacd858bce86fa4373afabf7c1e81eb91e2f64f76ffff0075bb19df2f4375b59cbb66a6bb617e1c9ee4522a5b42d902ccb9f1c10c732665c90f835d9bd6925a453ae4b1645907029723d5a8b4c9d88f49bf60efd497b26844feec5ac38c3ed800326368f35c7808e719e0edbf5588c9b36e260c516626784eed60d723d78e477408b6d4012d0dc90edd2a5ba3dcc1e665648ceb820f31392ed5f8da392d62a651624dbef6aa518c69b2d6d2b8dd3e9fc15df258bae33b7b5950f5bb2d2296d4bcbdc5629a7fc0a81cc6dc34efc2f6ef9f7dc589d7821d797dc0fad7a5f9ff6a8c956c3725d963af9d03acdd6a39edcc0f5f1ddd60d3ee4d33f40df9003066864eaeddc978f72e9a29b2f447b4b44cbb7476f9104105462e82d92006207f906d17216b920f6b948354a7febbefb196c5daadda7f893df675fc32dd99a2ddbaa542bc2a3d51a24e6fada47ee8796af2744c330db4f01b961aeb0c2c0461c2d7f15c8a7dfc5fab45525749e5c3fdbba2d4d7e2b6b59092b2c125b7adc047a9a80d8bc21b8ee04b19d53b60dbf80fbed610b5f4781055336123305e24ffcc90b7ab0a0d2841d8e702404c3f6ce1da04702306c5e834cbd1dfa37500f0334b27cf99889c8e33dd52512b66dfbce6f4ebf6d10fefc0d9f708b6e27ba6d3ff1c7fd77e79f708bdbbe75b76f69dbb7b2ed348bf0647aa2f437dcd6458b6e677bb953371e10c02c3127f33ba0c53820339fdeb9040041430c2a5b240104952d92088a4597a56e732942b77d7c2db20d9fb99dedf4a7d34b4ee7b4e12c9b27cb934f9fe14fdeff34f8db4fdcbad9b7b416cdbe05b339719ff2e4bcd68feded6fdbd3df5ecb27ef139239afbbc66b3bf6e9675e8f06291857fbbb69370a2734e59a6db848ccdbedc9a68ef6717f296e719172dec793b93efd7d8a5bde92ad53a494b3f4dafaf7a7f7a15e76d7e0bebbc6e92f467927fcdd9f4ffb39fcddffee679f713cee7b4edcb15e0b487df9d5932f9f7a9683738beb37b562972bdd17836210e538567fd989d33214ea2fdc8af40d3ca25ff47b014d89887064048894693ff7ad369b753466b4e05779dfefc36f54f8fe18fc26e6fb85c8d03a00f032dfbfd1ef7ee77838be106a90e987e94753c2edac61972e0da40428d3bfd2d5616e85cf71262f26337f395c9f0666c2c25bcc6485f7309399c798c9eb676498890aff8a4991293245a6f893e50b63f51c4b185f44faf464b9cf82b0292f02e1584e5e24caf439ef63b1b2475f94e03559b2648965599665599665d3ceccfeb42fa595524ee94d2efcef428f49bfd5be00da9c9043000eb9fec031df5965865c1058c459d6f01188f404a20c391a34ef88a6699aa6698f0416d33c6b33fbb1d84ef6b3b920d98f09e97499d45108207fd94075a9ef57a1715abebf85be813ae010125d43fee7757ce94e827ec96fc10e829e919fc2104b9c91df61d8144fd8043d4345e7702f7f5029fb401b4038f946f7791014a127415604e14bf2260473bce777378d5c518d0391e81c9bd75d43a2fc0951c441791e1467e457181494e5efc02bfc25bf6bc87f6172fb5563bf22ca9fc4a7d124cbf8f1733969f6f1a776e744e284dbb8b9795f2c9243a69f13af92c4c201f90c2ac5a0fb60d27cfbd226f9cd8da471c62031f86b46b6620368250ab4f204b422850fdec7c7a7c90bef58897a89f25028140a85423d12580ce5512be943a528b91f36c6f7e83232f9f9d8e92190e39c5e3e4c72c2ed336ead3cb515560461ad58d25941c44b860f67e428ff4a917f0d7ef3d91c1f4262d292851d17fd93e1434881260fd393340f7302d12e6ecbbc2ce9a4fc158aa2502b14f4542e94a254bfca2eb808bc106628fa9aa6699ab642adb2afaee4e3e3f343acbf391d2ec3970cf30e4b19e76e6287a27cafddb2f64c5e3ec7b9a7ab473d84784302f4b61586280c835c0910334308917c7c7c4a0039d4ad1bea7606b34c9eda053dd33cacd0a0673a7fa70c5f80a474a8ffba1a2a70811cfce6c88fdff8f751f775952c21cccb0dabde6f5457b559187c019f910f319115a600ae6189ee832df8522fe543257ea37af9b00529d5d793bb47a17ee5b5bf562715fea091862adca26a493dc43185b7eff07d14965cd7dd7cfbcd988442a71c54a0060a58dbe5f8900f5ffb16fdec35e8b5e6c3df5e7a458478eba937247bebf178adf0378fc7c97cf82a22e4d60c410263101667e27f9c618a16fad01ee9190ca210a594beb54f59d1b55a69b76af57a18fe72f7c299fc8a86bdc9bdf02567f224bfc287ba86fb10f6614809197d4ae75b6bb36a6b666df4893e1ef1cb5f0ea1f755cf05191954930c924a2490fc4106c5a22cff76cbef5776a81467e46bf7a9f7b13a6febbacb6269ffde4beabc0875dff67d818833235f7a484d9fcc2ea5e741f84bdee83e48144413aa24cb772b49b27c5f22e57b107e03abf84b3e27a5b3f26188618813a9a294bfad085d8c28745e44537054c415f9fb27ac041d1d15e5f8322ee4f82d21f53358c471b77f3d1e27f2adf5841cd13c1e18cb3c1e1863451963354ecb772981637777777f24b09874cbc40a88ee5bf9d682d4f1805f1f7efd2b37c8f5a81fbdef45882ecbb22ccb60ec5bad58d0054aa0560931e2f9944837ddae36c6e84a55921c0a750de975f13f3b343434e42f2ce83af6c9bcac7520078a21d47d502800d93b077c1b60fea090ce8431e6df5d279256e1eefe54a394cecc9b6fb18c4014ca9772d2af55d6d98342eb53ca2923f4211e4a296dba468dbf20f52d622b2391ad359ffe263bff97524ae9f229ed9c7467beed56c062ababe9f9d7ff28b5df2b60d1d9ffba4ca774c9d223b2e508bf277b8d828d504825d47d127adce27ccd3cb18cbf64f66f018133b29763720e6ebfd0f56451e14666fcbe4d3fcb9e7af4333cffd239e98c5dbbbeb5d352dca3736deb922e936564824edadd9e8b35bbd596e5c6cad2b32bb0547431b791d112191e5530516add06b6a30a17785b5696b98daa60418dad0228c30cfb73b9aae4a8428e485f4c11051541e468448517b1e685a698bb85df659becc10422c8fc658cd9ca14f973e59bec6e24c50cb22381004bf67729a56442960f83dfc42cdf8794524a6fb3af1e20cd1e607c8feeb5ba21fc8e0579f0791f6ad91527a6137cd410ea899f9a228e1674c282f241fda0805041425a10d492e0674a11675aa60cb3a60c4b869af6338134a0092552c4b1499d128be99b5e124b8d8ffdc9d0432df119f750425572f5e8d4829a20091d05150111fd0cad7c9a64576111d292544caa2b401147d504ab794520a862c2aa2bfef2a6ccfb564d602ba19a55d08b7adf0a68f5937de593dd46ef5361c92e032594fd514243da921115268801bfb4234eebe7cf8743dbcf5b3425cbfca68a5f2104147120936ce2f313873e0ecdc09008c316869049761ed3673f9b833e9b1d28479f1f4add95669c53fcb97fbdfe592cdbd947a53b391dce9d03820a810eb0c8bca5ae11effbcf7b3d7834b1b892fb305d69f2a2ebaee81c87708abf7a70547ffe17877864bf03dfb97f52ff3f483463c68c193366cc7824b0d88c974d228efdd51f6979d52361c5621e092ce624f54846402202920f721751e4c8046d3c1125c7d9246d00f39fdcc1cb7f520a97ff6415392691e337d471ff93d7cb804422471985e803a8635239e272b95c2e97eb91c062ae8fb30739fe17a3c8a7ffe20e72fc2f4a91e37fb18a1cff2a650edb0033f7dc37e75dc991d3a15c175969ca131759510562c8d10933b7333ffaf5eff498d0f83969d0a04183060d1a3468d459b9c9791ff7f02752179d830ed13598a00e2a349b62fcd745dbd463fb1deaed703f0415823a581f9fcaf03e4b03773d339f85bb6dc0877971c15b7ff04238e3de19b863105e08e185f73e84f7fb7a1ff7df0ef75dcfacf06c1b6d637e0c961d80f9a9ad5ff36d0b7d38bdc8297d4869b7302d6ae18e5dbcc3fda59c77275704bd1b7a7c2885b4723fb6afde0ef71ba44594fb8f16d122ee07c492e7e3907b6c90e7d7ad05194eaffe549a227fa828dc7ecd47e1dab15ff32795f91f8d157a3b1496abc7a4f5cd75cb3bc2715e93c621cff9d7eb395d802e4c9bd026b7ba76e8730fa9c741dae44aee0092eb0173add9ebfbb7d7ed827f3bdea1efcf6120f08b1fb09c794c5a0fb9198eb4bc56abd56ab55a8f04166b797128cec49731e310e47e5020f08b5ceb7b1198a5723f2091fd0f67b8633ffbf931e8be38343f2ac5c435413983463df8c9522ac7837bfb8eb98755609538d453f29c4cdd7c6d762cd47f1f5f6dbf1b04c8b39dc8b379d056f2f4be16429effbd9c03923de77d3d8506204feff3a7740524fb9c1887ba4788ecf5e3dfdb039f2036c06c3d223c2016f85c4fa2fca8148df754450b15a211000000004315402020100a06c4229158240c5455f41d14800f879048664a194a83410ec4288841c418628c01c01003902164a4a8a80a9880679c4a646bcdb5a697992899ed9dc0170fd3fa2eb0a5a667a5308a030a13ae57e6441a2c39336ff8ee5419dde5c2f18c672ea639bfe629867f335a3d83902f9f5db4de374a09be4920bba431ae4078dcc48eb5516366c5d683360d05319ff8c79268c25a0f38145493d63b231a3cb2ceb5d9286dfd725ffcf4c7aefae15d301218e1a698793e4f7de9b5d013ee808101706e95231b772d7f08ee1df4e4fda54443a3f58e3b07673a56a4892f2f6e62d7c6eb2a72f2bd3e146bb715fdb1fbffbb4593070920fb12f1770b5abf737860a8cd72a3e05c342682ff54456b68dc8aa1c25fe4caa576e4dbe26a06b393c555cee4470b9e9dbaef28d1777eac5bfa92add01736ef622eea68703bae0a5fb37a00aadcd1d9a046608acc43e7450257f057359925407b8b07e7cab59fb2f5d7be9c2d3867c2c3a33473e8c87cdd3fb3f04c9975f8d82db1de133e7f7f6f49e3d486240334fc7dbf98e7a3f286b9b97364cc1055edfaf5cdc2fd09a0329d9eb36393615fd8bfbb0ba06c0c089d37b5186781b7b3afc503eff7439e8000212cb1ac886e01266cb268fee2ba551c36321d3aece64903a619788df3860eaf19f28e552ef2f562b838f8f2fc695b78086d78f86921f0c95509afdc2d0c23f8cedd1a1bed3f47e58005e2533b88df98ca58c3bf5549be6e52e5082869de4b0aa0a240ca0b86d74acbb28e2b0db5c6d4790b36915d4be0850390bd88c0d1ef4d7c2b287c97935c08e5dea1aaf8f850b7fd006dc2c6ec027535849e7f370894eb1da0a686fe2f007e160dd3574431b227c953db1d6b509a4560250756a1598cc13ea8c56cdc9d1a4ecda06c8c8c9a9c5752b3b1e4bb04f8b9023363e2712dee95ee448c832a7b5e42afe6d219fce9c145d26ce3c281d503b0fae8f79876dc7c5ffe6a63c2cf15fab47fbdcf2cef89a27d4611779566b5ad929d2a6b263e6f47511c3a585c919ab3810501bd7e7cb9952b921d45854484c0da6e44bd8888368a7c5d99e01f331549546b369d8048321ca22f8a551c63cd1266a15a2584f2cbd1c81518c404aa3598214e3194e4feeea8968f02635855ab226f0ae85156a99bc81832db59b0ea5df60ee735475737108b9dd7c22926ca995951b679022231294b6f97e92b12697ad985a67e96c469b26218485a29164b9d7b5c65b272f1d0a195b712436664b29f0b6f260b8caa53d165c0162786e3881ece320dfbfe79fd7a25208fcf49ff48832efeb413808074a1483b511db8401609f78092e87df83ea960758aff4aa286474d3668629c48c61d3497f4b71bdc0c81161cf80685c048ea415c12accf1b1b084a30829d812e61c734f670115f3035e2c894246b7469bc37a2ce423e5df305f8e9de5e1f00bff021980d549923e516a58ce4dbbef1808895bac762c9bf658f662d1526132770a352a1656268460c60d789be10c4bae88850b143818fb033a6dbe6a4cd0a2e3ed34c958585ac7b06e4898739456740658446857a29045df7266df8fed3f80e08105603d9850ff5f7dd4cfe41a81479474bdd60791ba4f9ac6d1b2452e0b1acc731634cadae04205d8061e33cc56624684424e63e540508d41a5f895318d440486839795c916bb88e272db52b007d2d455d63ac002cb3d82488a83854fb29f7ddfc2604e370306a74be45d985dd5ffa4a0f80ef2b7796856e9b7ee9e6e4978f9ca96a080dd2ea5ea268a0ba4939cb3cf8689dc9cf84fbe799fa52a421f4c7590e979c5791a31b8478d8fe778104cf94e7d809ad7fc78578c0118322e6a467d9b4ea7f38346fb2236946410f8b24702226e0e8584df5839f391b094d9a11b61b9b0de1f0bad51ec73103bf4b6809c6bde5294a0bc0841b160058fa0dbfe242b8effbfb043264165a429f238642136b24559c606e11c0ee215cb426287b91799df3ac79131c7e47c6f20b17a40f22f4e953065220cec12a3da2c82ac10e95380ee2ffbae349fcfa75ad82382633cad88030a5f171bd31c86ba4b13cf90cf9a3ba1083c73211752906a3588bd64b4e50168a557bd1a165b135971804f98c5ad49a7e60d2913df9fdb1a3990b5a54d29553f2d495f39cd095345f76d183c84508acdb41e12939bd062dca987dc81b577fe7d4e68ad962e3ab0f0602911cedb47dec11354d7259ac9458aebc1fd929d0ed814e87cff9a69c65860f87659aa6a3f48e18c47de16f3bb0d86a3310107f0db9b1a16e03436fd83b413990786b2ecb7abe3d2d16017a437e4573408427c26fc87b2558bb186c27c9b79d7d60850472ebc321f485f2f8843025b86fce605fff22ea6eaac502f2645ced1849f1984c39799581590035c1377e54763f33c0e9ed92ef8adc7c210d6fd6b14fe4e989d3c7b950d915896f7c5d80c109da19ee5ad757bc9490d4e798a281b49c209587af26beb4aa374d3caaa684604bdb6761aa505582058edba6a99df452e5072c9f0e70e9a696896cdec07bf42ea945fc11cb472894b3272d428f798b0bbd41a337c57a9435758c0160a25f14e4cd31d890ed76dee62eae095347a3cf1b6d964c0a4831c72950bd608a6b203fca31ef4b00cbf098366fd45aabaf0f95ba660522f8fb3a06736a7be08df28d07e1ff0eba6b1d41806fb1541464a4d931f82d9659b9e5d2125de9f302c2d879bc5592d4b6cf94de67f67f224e714dfe56555a761ab693de6f6c4d368da60d04b76a9ae53058aff1ebb466fbca2a7c7891674e7f62cc9eccd734b78b1cd55dffd540357ce7e1fdf0ef053f44e50b520b1fc7cc22764ce246d1ecf4ead00a7f8c7c66a68035c02597917870e49c120912419c010565eb8255a00f50a82aacbc45a384434bdffcaa9bb4cea38ddc876a7707143a77f0fa9b68f4a23796bb8a289619eb6c6669950a52741eb4f23b5658bc9029c17524904fc94a250e1114dd334ae55317600808fa63e2e72a440bf1fcc09f95eec198c00ff371a4a8068041302d6edeebc92ab839055d72a8da44f3e6a40c9171620c8c5fb39d0b8a83daa3e2afeca9041e46cfe895cbe28895bc60e29c9f963dbd4cc39eedfe782a73f74c4b6744729b2cafe8151cca082825e15409ede6693c3178654b8b38d7ddbf26cc0b0985152a08bbee2f281c9da98d808cfabf39dabab451428c41905a10382def947b7452fb7458d081da591f2e6add4113d5550f9bd21f01fe161b3bd3a8775768a6da20e52fc874c0889794241e68ed68d3da8c579f1ba442262582c095dc74b3f8ae21511b3ff1f150d8678a08b70c17841764aee76e06a5906a24f62fe468d125016297b8c57fa299e0202d84d896cd40e605844c6b02445838d3fbf25627091953df987dd4c024b6712d41621f1f75465ff17271577b1d6d0a4fc94d34171b31142ae3c225bf0d7d1df9b2f0d8df1976c7a8d01f3f22d1f1cdc8a9706d5894fa41d7a60c34899b7c812a485664000a47283012e9306ac2dc406393f9c727a308c9ded2e62b4f07db70575b6d6bbad5e7cc2f8187acd1aa4a453730e6540e395ab525f25f31c4c375a78458d977a71f6c000bbf25834f8331239257c05734190555382ace7520de438bdf130dfa182ba0446cc008efd78094471e145080c445841e04561170994f458591381421f9406b3dda2e07af4ae1b13681f02611cdff71dd5573aee620145b1ffca1419670b011612d8faaba514f436213844e6120a0a190039e4ec3bdcbe4d8665a05bbd6db3bc48afb2193377d2745a2377ea84ec900de77d106f826f4683c945f2e97c0eb372cdb848085a3aedac0191aed77a40571fc6027f5ea90d3c24a4e7e270e797e5cc634a9bf672fb36e90e7072e802f0334383de0073317e9acfd24620c27813be5e66063bb80060dfc38169736c11430bc80357d79b817f84f49629dd1fd2b005bfee5b82d86a183551bdc0a3f32da5d8c8ff8c3e0a787782ccfb6be36bd3cf8096f6509a91d0faf325d9002e49430f4859a999a3f48b7cf8dd6ec76783be00de5a2d9dd6b4e43eba38778155608e47a8e231b236d526f2aa7810e807398505a6288c5c01798b6a8f757321de061315f1c322a18dd881b7ef3faf673cecba6be2223cb1969ab38c9d6f6d9ef562ac8b457104a31c9f1a60518b639200d1252a71d2360541af16b6bbf6984544232718f224436ca2950207d4c10e708fae6ed90c899e14593491114a6bf4cc90f43691fd507235898b15843caa161d09c8aa38f54ca2d898e86815d672cb033b15de2160e88c2ad384f832d0ca80e7eee4a6ce125d9a560de8fbab21e0b1dc0b6f3e87c47187e4c165ae6474598e16b50e1e5ec54f0acee5f2e726f7c1f909b4f80be4c4004c0067e42f2b1b70eecb46b6293fded560269fc88fed05b64dc00f5b74ee620d28430a0c98404cd1503bc7383e65102b5efbb720d1e3882938d98b97aea35182d04abb37d6513d611b75464f7a70b77926411931e0f3ff9017eeef3ed303cb08d34c94a2f177aac2c06d7da041d31f7819f9afbf6e9a27698e2dd97835293865c18ab5b5b4eff58afc400388599819f475f2167a462d2cf1b17fa88c2e4f41e07c66078a65a6cc0f732e71d8dd49525d076f8d37705a4e14dd6712c4a6a2599d912f2391a8804355497f888faccc110992bff65cfd14c18ab30d142cf220cde8a8a2b5504c351afa95817d838caffe49043741a9d831e6c33d3d69848c4c070947b323f39a373e327d60506a3b0898b14f12d13dee1111ee04b9890a7144881e473161884be0f3fda7ca389e1bad20cedb8cde51c57ef594cc5b117519d681292bb52697f5856b8c44692d4dffd8e9a622d7707cf4c300878a4701f3c889520a1778b9fdc15dc2df9313c7d7173f50a53a87d3d22260ae15506b367d5d91ddf564678eee5719f8f188dff8804dbad5caa19be72c1dee50a24bf288ff37aa0276e076edf29aea094b55080b04c2e9c63b473575fe5189314eff930062be8f51ec60b10946fb9d421446789f80830de0aa67f6c070eaecb1db800fc13ba3ff94815fb025ce0d7fbb6360ec080123b15b294f3b9cf77e4c81011edc00dbcbd8821b80de92db47ae1c34632b8edf0d9cb4b37e12e2e125b9dcb27f586a2cae0361f37f7d4bff850b5aa9a68384a2790b95bb8b824dbab7c4853b557cd10f2267f3bde5ce5c28a9a04fd2012808feacac9e7a2c3e7ce5e61cfc9f14d660d8690fc62c3f93d854b35a5b74d9a1e8cb5d30b57f810896669fdef93d99058c34ff20a332bff867b7de73d9b082cabf6429fae33306c64b6cf364164d1ae339c14427bedfd0085b93a6390850e1c2869e2cdb9c8d6479f3aa8e47a685af359175c3f95a8b76e9971f7e85241deb7554a7e981542d6cb50aea0842fcf85470ec866297ffbca6e52d23c911370c378b45c79a3f72229915c45c2e237e562b765d21beceaed1212198fac9392b11092c262979f328355f57b0aba191cdfb58637dee952105eb12bd4da79c5e474f3df8055602cefd4d278408fbc87d7cac268e5152d1a2e5891bca080070c992133db43b2ef9324f389ed7d84c86716ef4ba42177f56e5c2dcb4b08ae28ab83cba840021b2b3898ebf0ad86db0a244e444ebddb66396bc6a084212e4667945b4b2b5defc042e513134a910911fbf3251025c7d7096dafdca9e9c4d0bab21a047400ea271958c232d880a19f732a717ffd70348c9bf9a682214307b8b343e52954585c03012649444d12b94986e865093cd0db4296e77a6278396c429dab76396d44fc8481a5c7e3e79f8bcfd9d6a39df5df444d632e666fce8fc79331afdd132797d4287ad4ff7c1bcc257a5469467be30227ce129ebf76ce6ac4dccd7a3a9796d8328352bcb1df0e8452ca3fc09c48a2768d033fc56cd351f626ece997453fe14a08811df51ca6a918950bce5314b889ee288fc8465ac796d89508bc4b0ea3567fedb9c6a0508812f909e5acf89c376dd868d5a742de910cce6370a5857ba94a730553b274c82372cd4c4492594978c3257503ab243c31e04d3c9017a9d4bf950ab5c4fbcf20e625d2270a7399cf54eb6f4a8d2b0ed8c28a06c836e1f290c977e0b8ca96b63ce161c176c3174979bd91713de250594b2a62407ebd616038b0502aef95a13b59a8702eee534e000173457e920832df3bb8394a092bd207abfd61409fd252781e6c64e15e464c51564f86ea3bc02371eb0318441f3379921176f6d43eee97298255ddc665768be2c2a6d9cd95fc40754acd8a27b8474a6cb88cf8828293728608c1fbaafd3f74f64319f1428ea5ad2416c25834a19a61c1c97a54294bba4fa7b755a473814eeae0267d3bcec44e663e5d273ab28bfe8714b210648b06e83a5c72c11348b5c7e6bc36178c61a18fe7a4f4a3228989b955ca778653be59976afd119528185c75e445cc856f424d724e7f886e0d6d7e8d0ef8e96f5f5f37d4144f3d889cf55393b7339e098da39e8428ced54ccc5e98a8bb40fd1e3ea2eb024d1ca942d25dee6f20aa1ccfe10c274081b5fd01fbbd489cd890e44ff339b318d3f1c527ebe865d5797e748eab760c4353ec0cd3e1a7800368daf4901c4cf9666be30357a603bc5cd9fcfaf8d3eda7a59fa2206af1f4b90f9a6f6cc0eccc4ad0caade379ed88617bc9476b89fb7bd456366ad3e7b26c1bcd81b5391ba64113647485d13e6ec33ce7f7713fd01a886d706521bcbb36cfab98854382719c73d5f5bf2c4c2fa01050f664f74328c3426a3450ba0101a843118cfdad9c739c750a614e513fc6864b4a5219604b85175e6a5730365dafc6867505c6924c98abd962aeca1b3d05abc6f4374ae4175958e6baa6b25d46a6d6c7ca954a22db945b3fecc49ebad22e7997ae2c18ee5c1bc709556952b5d39d27d9c87e640fd6a1264de19f6705723828442e368f7e00d8d0aa70324293e3be60cdb983c4cb9bff7dfc8ef94725c5c9a58b28595775ad9fcf917aaedd1abfeb400ac4ba7d2b57db45cb0760ac46bf2b644caa832c2400b0c6096128f46d694e3ffd5d886bed2d7fa1dc905769b13f864d8edecd178bfeb2133970b9ab2ed326deb2fcdfad44bac97d36a670c634c950895f576a7745630441e809677d5d91a097cbbbeb18f92bd1b529c34b1f08e2e799d060e6f0d7ccc4e980ca86dbf699915967c939d33e5aabde2393cd72c00131332914c477e69c440f9de27c22838aea11089b2cbcc49973f7b8a2233a110af44ca829fbefbfacfff52baa2f55ecccd361506a6bc7313cbdd05638a02ff3f94fe9b50e64eec72127027e7de9148499aed37300ec2d3c2426d562301867032c29481b67d8e726ad02ffba1c3e8515b23b662fbccfbab1f958776d691575060849db1b7685c76466ca7d78189c4f2d8dd50160c61f40be0c90c73e03a8fd6626e1a154ec127d926efab55257b180969e6672b10745a20cc47741363cc6c09e1a5fb64adf1151989c718503017739c35be893791e74dfe4d0e2a18a2541482bdc2df85ae11e2a8c07dab589d826c8eb6f30ca87123a132508133bc07b53208214497f10bd41544c73cff590a04a629cff17a3aa9d0d25457586e463d060ef24f2f0c678bf9283521188a0b2713f3f06ba8e76522e60699104964ab5bc58448e43a43194f3a51b3d1bf422b40b17e9ca44a01195f81288511efb41242652209c3218f534dfd57df7fc47baf0d7438a4f71a65a20eaf9ccee8da315f8ac99d1d376a9db30bfa22e1e385f756354140702142dc785d37310f40ba2fc3adffc7975e70f26376396a5880c7f051147f61d2248864e6648eca4c613e1db90e4d619828e84bfd79251ed2266e18ad4bdda8b15085c96f8846edf459ece76b1ab0f6354dde0d7316590a7de5dcb7cecf13a7754943f84e68594818911e149836a60ed6f647acc2b9b61d422391e38ebc6ba6e181243789a9448d9583af41e009a9ecdcad105a5f74a679f48f4b38f04e8d5c929488f08aad41dd3e9ae7d8e0eb25d1ca22b6d0a156d52117a56254fb94d9ac8bbfbcd29ea600cd3166206483698f101bedd874e97a5282206772960e0ca0c1344c34543787b389c600de5310b9595b47c44438aa94c87b1103d5b0e1b06ee38e7062da0ada8ac2b4bc4194f01c216549b3fc71011ed13a9b0df71a5aecd37e45ad707e08bfab981f3071ed6b7b64741a5890d658bf5e59730ed61120ec6f8c40752388cf40b3934c3fb3279be44d6980830fb33c1fe9f02c0e550e777d406b406c5481e3bd014e9144d84098a019009ac98ce55e09df9b64f38b83f31f490064afbec01cc78c9677e68ac96ab493c3e188d571deac1fd38c40301f93a9dda867f5474bf59ad090e5f447b18e749f75e2acbe2ffc8acc4612580022904a6b4d38685460935e063c96348007140237749d225936b59b52145a255675cf80cdf057e6a02d7833c66568ca4179df4acd847705edb69e5015d2ceff40f1ed02d37ac4da569fc014271335afbb5cc33b7b918677f376b80d17b7129216e88c91851c087e808aac2b09c82af037eea3f5404804d82f63f284d410af0ae1bbdbb058bde4dc7270854c560fe752cbf04915752c9d13f8581d6c80d6e779eae4819352123575a0f296e4bd4dca68dd54f94633725e9899e77d22a29a3b913d1c3dd24373a24ef5029fdfbf22141bcc421229c9a97f5d1caf1700912c978e82d740f71a76f2b74dfc6333a26a20f000d51dd5cfbd6ae92998d2d4b464c512ba643729ac02edfa1808e6bc0452403ca0e391af04b1deaacba320b1ab651ddea0ebe5008d550e692f6a8e2cc3eaf59187a27ef482c89dc124acf50847e08a03bc73d5056e1554a688fd45370d0526667914b4551bce46ffbd5251477dd00d8ae663065fc24d207a9fbd950a275999de0d49ac260a2d1a77149bd7f5c121741c875698295359a1285e55a76f1a75e0ec37e850f52db0922e1c978d3f9d5ddab1c3980b3532cf0c6706ff52246631b4b52f8662d3a7e12d834e3c3e3a7fb959945157cc0424ea3b4bb9d29e2264cd007750c9fc6c6af44b098cf23759db3c8555cdf07dc7ab586b050f6a33f39ac1233d1e391eeefadf2db5d986af3202405304e425899030838d10c539483e12050650f10f56913e4670728e5d19af009af6dc11db872cca9ed1478814a71663abbbedb957277f76e105e69eddf1d3e1c26d5b0c202d06c1e10097439d4860add97b286625ebccdd527a24a9ead69132031a7c6ae5c985d2164989a82f386228f068857f2afe9e9b7974ce003776fc990663ef29c0464e53cda6313df69bdb196aad009bddc0a8960b6e8e26cee41964c1e0fb3f6bf2fe1214c968baed291640e8c8d2b04ae155f75c342cddd25fbf689de5cccece092f01f29f793b2f8e61862808fa2e93e8a6810c1e83884cf7c445cb547d1b08640a7b00501cf198b80a1466e1f6700b2efb28b5939464355870fee20ec40cb296c3a5b83dd37e45c4eb8ac84d287c7de2cd9bae74717884dd28ba9053c80ea412b4ea6f69338004d22d02f2a501b66fe611d5afefcf74f2b5cf49d5492085e0f001452f4cd225620848e0ccc7c4cfe8047325169f1faf82fdf365bf83dba9819c3c3411ec3ced783cb719f471e5c01cccfa200bdd86094c61d5e0efd29bcd8a5f87186e354bf82fb3c28ffa1ac1ad5f85fedeaab8fceb4cc798871b3cac496cbe65f79f51568030eeb0f128cf24d8e2b3a6f38d4530e8746b8df103d55ca65c1359bed6b05999739b9cd98440ba4000b7e108024b05ecee073149c983711fa35368b178ff6e0d78b10e62df45ff1a0aac830a512b654dcf09e203111b73131bb3ff00f91532ff15f67cb4abea592330c915290f16bc6100df7af6069824d86fb0bb900cb180bbb92b67ab5fd6deb317e272528d94aceb4eaf829ff64d685617bedd6f3cd139f1bff83907414d6f1af0e5e14bdd4b630117fb23f0757d467af1228adae585be6440e0d9bfb570f3f94bd26edaf1c3df692577e23e6d48da97c7e0dd3df5c5d72643808f5cccbc6ecbeda0f904c85db6e00fb4fd964ddcb6dbc159b6bb5043a7017eae5de986b6582371e02c89267402354c5fe8ce34716614a64f0060a81953006f617fcadf794bac154bcc1b5a998156f85c521f4e70793bbcd0f0e069a0e12e1abbe5bdfaa2ab08e2103f072bc46d31419b66455eaa7e0015f18cc4a0bfce398197c24ccfad57ee10aab845ff05d0c9096e1f899f4630bf33d997749e5264687cbcb7dbcf3875ec5ffaeda6c988c70e222ffbf398777eafb6b54cc560cdd9cf85d44d3954036df843e91d58e529bbc149591c09746421f16075cb3a9d653092e434fb803837b896bdf3a41b4605e46f6f13c6a7e992d86147be2473cdae4aa02ea7b19800ea1041a4ac573b77e63ae817f6f9b77c2a74c1045be694b83297f0be55b2cac22ac6dc43a5df17b8084f32f283120c4b83be3c3a6130cd459289fac1681cdbd5b1ade914bf817d1b0113879947f216c1a8c04a662c459ad4b580f904be289e8f1f5f937fa4e78c88cf04b6f1c4b2fc3b19dd26a016a5155d1142f25f50c547212d778e6616f86871b0ae56f2992b03e0f8d59bca86324759a287d6e8f745095543e62dd9185f2609d8095cbad0c9d7cd99d404aeb0f81b889ab904205054653eb4c5923f31e1b7f515f572105e47bb5762fef7d1d48a9ecacb771db0d373bd05ecb8a4356c26f1de0e62347eaf5642c494cef697b4a76c421226445cc607e9e1e804098171b8b43df294e556a099d2f972e4d12ceabc04a228f130bba8335e926bd5108726d0e62c791329fbe4276ac0ac4d5bf9f1b78157e0c5e3e9e3f074dcecb4f9b4c26cf82eeac08bb7798d28345a7d30f8898639377bcbf6e5b4a0099ca51c260936b6469a34670e898e2d83a88ee74a934d83fef8249d54705c8ba7b16c2b35ac2ee9d255dbe23c8d53ecc8edb424991a82abb06f62e69cc5d5b0bd9ab4ce74af1f315821a81ba78747959119be8a92adabbe07bee718178209b14347e11eec760725d2236690bc4f12f08dc6304d350196924b4aa0146d04694c007966a25d54a5a0803492853654d77633d32b9374a4050e382f8f814279b1150c850bcd6fa508fcc3e32faa492d36f149a46411bf5547cc459c4305e14131dd36cfcb114c6609285f0ad75706589702466a6cbc2e4dc85327d91caf4479498e99189e12e2f5d9a59ad17cf3435d5c62965887e0d989ab82e5e73173f9158470318814eba4f8a85e022c171c299d8b1f2a5bf41972e82a940506097990d50dc83699b6b6d109c00a3d2931eac60392a034063be6054be79f9a8f7ae07d5840f7f6788d417561353c207f2b038bec0fccfbeba4229a66b6ad238613537029a1279d64f395dfe328a2de9ba0b1ac56bdc2420589e4afe7d03f2801356bd2f4ebc07ee33058b5c73f242236c59ce56490cfe36cda061fd2d0eee0c8093187832a98a53369b1e112e682712d842e0da17f8f1153f922310140eb16f61234a9b95d5471ff9df2670378d0c12de385da1010829f80c42ee0424c35987f85247fdc001c4a94c1928a678f447df236e3bfbfb9840977d80210d0703f0cf509c448589d172964bd00af5e0cf61a2a8e54cf5cea0802fa6c7c813819d7b75d9b4645603c658fc0a040560e061d81a72b8bf48ff62a4d4f5485fab2d186397f366b154ad21792d245f4f35261c45799ddb48363f0b2d005dfa88e87a6fcc6171fe345116a9d021c5a64ca4d0cb2c32bf286d8904d65236f5451c2086046f327b411d41c8a1a8db2b253fd84e70c5646b685572e86a743e44c9b22f2a327d8557b6cbdda74ba185d55378010b5c75cbf6ad9cd198a2ce4a1f5a9e0d2faba4db95f6c2b04e92ee5818bca0266d80e3a423128dcf766b56caacacd46d108a930ff46d5b6a4be67253b152d6ce181c3da47d5be06f39275b73369277bc5ac4ca059622d85e26f0bc33882145d359060ebd14d4ab095ec7f73f04be1be37ad5c5ecd8b8582794b74a4a8d66ad8321c6d7e0cad6f712d7547daefd573d62497a981652c6f263985c18ab066597d32f13e4ad0912cc3f0b5171d7bb706dc3d0bd2b91ca6b4cfdb26a0468ad176a3b02c1062ab7d76e684a9f19e5ac74a0dfcf9326bc6992bc0cf331d5456ca117cecc209c3cbb8886dfe6df5be018a2a31e614e4e54d4218dde04d5415845a3a15994ba90adf46edf3bc31dbe331d09aa506e485eeb1de9403fe09d330db169d10f8adb58410cad4cc906a4c7de8aae10cd5c25eed493289478163e08c155448def7106f5f14cf51001c91bcf3cf0a0df61bc233fd2031b79f94a8e0adc00a503c9851abbd805b7d722ff40be5d25acc17ebc874b3800334bfe22335da0826890e4d6cca37e202d349905adfaca4ab759701fa4f9d5b57936ae7bf0347c096a5917040ddc96100d091d4f39eb20d70d05fa619dde06d59af0d6012e144dbbec01ac177981038cb357b19f285bfb658c5ba5b8ccebffa760635e3cf561755723472805237575f5b82574519ff2d2e46c33b3c1894f03d2668b6b33c4554a86d19ec4ead90736804cf64def81c6352988c976150c3b5d5b3fcafb66307c71815e673142aee418f2d7adacd3ffa3c7138ce14aa7c541023a677566ce1439b727807161df4fb6b039d1c99e2d2ec9512e13d8c837ff504ba11da4ceac707d4a64249810c75614149c744c30e09a751c8c1a58588fc754676b3ef649ac9fe2582a0687ca814251228adf85c335f1752d8f4b9524fddbf9d7cc481016797979dfcf969aae23850f3aca3bafd82ba9718db6ce78fbc450876d192ea78c492c262990fbba2db97a47000cd59398312fbcaba0622205488be7048b14e29212a1e235652153ebb8930313202f90d8200e24905d470749cc4199cf9434db0a010894fc04e8314f1b6ee865f00840ecd48811c866321989aee322e648b5c856068fcbd4c6f8fa66c76e52becf810005500e6a6ecb2cf1df91eaf6b0085d46e71692316bef51e75a8deee1f069438076c621d052f043e4478db313ab53cbc84dec40c41c7a4f1526c39a213b37548a99e52e71cead57cfe0086a077ad311db91d39c740791eccd0670e03ef375afbc762a14b74e880e28a4a3a07f30706b6404b277d474b862270a854f0ff39ddb5da28ecf06df05423e3052be0eefab5ecb5841f2c8e5d62c73cf550816d72ece4e574add374cef1773b1e3f4f38141481646dce150a4ce240ac549c5b39c38eefb28a4943aa918a4446f2c12324f47b912b579ace957d7de82da21b3bd69fac4ee19af8be3bdacdf580bd77c4cbbc02e908b0653a1f3d32fef01426d7c40b1220d248a63450cef47b6876650656078eba85c3fa2451be43f62a965ec672cfa36b0e8357046df838aa53b3a37f74d06167a712759fb9690627bc471b11d0494c2e149410b805c2256c99918d144aae42a7bb721859b9ef25c87f8ff91bbe30667f151189bf7c052a5ec6a642755f2a1bde98b5353930e3943440b4b3daa8cfae184727adee5924efb5e1bf98e467912e0b54dc65f2f6a30922d53344055b0d5e350ff5a18dce6d18b73fd676716cbd0368eb410c8051fd26b0c63fd4a51015f3d435ae1ec171ec67b08c4098a7570f0544db471e05602ed60db90a008a0a2c5e54f1702d214dc0648c9ca56a050974ba68352ce8182b821c7aa8e88a2485b1f6d2dfacf29663ecf19877a3cacbd512ec51bee830bcf69a28742232fb77d060497399cae063a299876da2fc2d4549ef7d2d622b832b50e7b318fc61f996d9c1f3137a9e0bfa4384a395e7260f8d99aac2ad74b2f68ef252556009b0e726ca0301d25340859089bda6b430d380f53f9b4d46f17d7a2ea9b4227b3bf098b8fb0beb30c65008d043e1642363db1d89596aa74588c8ade26862bce7daf8021dea124d7088a7e3ca0ad01f07c2a2f2dcdd3fc9f182e9901845a30d8259e6e27d01b6baf04c5b57e84017741bded443051f513e1f6def0b87a973d6c35c5f971ac04a61f79f2e51f22d68d8f834de9b8b3c45dea1466570644575e127ffa584b7d2f4e34fae9f712a266f08d80b9f22a25df18bfb8e706740d032d8e731c18fdd6c9dffcc84f2ddfedee7dc81e37221cf2fb06e39b3390665c5b8524904bdbd0325f59fb9179245355130f9ad4cee374b42e65a090c561716a777cd67902648b2e8de2c516f1c9c42914d74656ffdf169ab3a45d49262700edb23bf81bc72519f9bc5a8889a5c9d6a72907c9e38b3da4869779b67bbcd918202426b4d2c9c900048e3c1819f8dc0f47d73a546db0bbd7e26e5d99c32193ab533121704c68afdd1307891c698a02971dfd2ad06080000fbfd135ae7933334697b0757479afbbf799e72d6ee35b31a5c42d9f5d8a008a74c8dd95f2ac739cf03f7926c7ccf584d1105f2072350e938f5f8a58d683395a96bdbb84eb97102c1b4a5c317c817155b8d8264df9b140e3417a38f1fe1616cc218b734a8e4414b8d07a3ca8f91b7366a71702564cb520979ff077442a08c50639f5da7d43b4385d821a2dc2719cba471ff57ba0e798a0cdb1f09a50ed62a94879ef32bbf0a157976a9bb5841909a6759f56bdc3e0057ebe5e0d3b4561a9b366c94c5e19bc697c3e0f190e995b35f3b0ef64d3b75e20ad55c1079bbef1ee3be895ee8cd71db88489b22f3864213868286eac7d42483921fc7fc2e810975143408a4e4c497e3d515f0bf91336ae988c9fa50b6d2d721422ac85a5bcd182ada31d27e466a73a87d9b9738940ec44f5d0baec06559c115f020909cc525ce8370ec81950c19759ae6320d02dbcbc6c09af7ffaca2d5db4054ed64bd7608e0bb2452aca7a8de7cc26fd646a6e9ea121cf83ee1e96dcdcaf31967f182d1a2faa43d074fb9dc33b791f67b52b46f5633e81f7c3b00f287e3fdd56b9000558700d27ff05c94b327258b9275dc1417805404057b43ac5549c57724dc4fc4d1d9f1d409f2db6f1a17d6174ec942eedd79510e527985c9fa9e861c572d6672de1bed4a81bb02b20cbfa80007528d4dd27274cbe32ea2200244b78f159b8993c14055fda9cf42304fecd0d37aa9d30373b68dcba7cec505505cc801289321ca25b88e53e09bd6a6438a480c486f1bae4bc01cb74a80aba85c8a851044b5ab305c8ec7f5493f10a7d1f3de693c6c9339aca8fe1f54e437b67458c98c51601fe34e299d0d6aa9034f809f480c171f5ca155fdbe88effcbb4c1667747e15a5b9918ae917e01cb8ce7310b6912cc7b53518bbd6f344830e2b69166be416e8131b28cffde91ab8a92ecbfdfe29c2181eb0709d167094df2a1d09c564be88962d6888fc773b2d280997a5ad12db33de95cdf567c6646812100261b5a539e5c1d16acdc0d781a64b1bf6595e0d1dd6fa01b02c887dd033e407b68f544e1e086a9666a4c96147321b0c5b528c012fa7d1cba04a7d81e1975e571b936c7363ffef9fa31080c5bce430433714030df09101869928553397537afe016d5adab013c0d8e65fe4be4cde8d853bfdde2b9b77daca79619ebc0eedd1d72056e01d84688a2534350fd66ce9f8b7b1b6d8c5e7e789750e1be62a19fdebd22dd0dc64529c174fca0ec0df7772692d35b9b568c1f8162a583684a6b22d6d8fa839c2492c1ee5ba5a42104246b620bfe2675b74d7f0e4a0f0d9177393016efd91f379a80812071ea496e9b122032934e3f2defc90962f5fc34268d757ff98c9cf9fea1fd60d83ce9e6b4b6ed96c69f9f1338eb2e52f34c7a06b71565130c24afbccb78312c2088cd4b5191c17dc8f9e06a8a0573273a99fdcc065911f718594831e6672f13cbde9bb993fe5501c0c88f0cb025a07893c5b42dae0d9cf16c436a35d2f24eddeb2d54408d638ca55ee6366cba3ec258f3c3bd75a1a748f6870fa649c43ec573d6180e9ed0adbb79d6e7cc47e72f32655e6cb8e6d583de6d9416d75509dc0cd095ac94cb7691bf5a1960c9168ef4e6498d87edbe5e3dfb17153e9173eed0f0f49c2892afc4de9912e5cbf1fe4c868652dc6d365a0b6e603584855e0f694a912568ab4d82bace0cc2c6494002072c8e778a90aa87dbc3d9e7a51d920a1ed5efb33d9c683e0d5077450b580670846ace0d3055fbaf9ce087b6824d5093b7c372f099943e37636e7ec71671cd8f262a3f1b3dca24287bb9f3347fa55e6fd9b3c0d5f11585b1ffbfd6cddb99e922b8148f9c95100bf02857d396bc44490cd241d52f7a3ff186e9484e93393b2b3d2f3ea9249dc0abc7fa6e5b5f6710cd2261a9915f7a0517784891e2952ba238cb35c721e4b8c77709bcc270111eb697350b7e53ebbc314643b917fa41f942e0dfb6c74aac26e1e1cbe1063824a2464ca960c8b64d640822a9046727caafbda3f08decb4596868b66d3fcd580d9fc14273d14973e25e7e86782da90f45c4d032e39d11bce44bcec85021fc403396e6ece0096abef0e93fb165c04c6642dc0d1793ef6f663579b8b7d5319658a0d40a2669dbcb4095dc20ac3d94a1b620f8dd3e8732621a9b39b03ec70eeeafabf6648e2fe753205807e4945d61464f1e8cd098373b6fd00d5bb84df40ee2c351f91188dbcf88aa2f1eb0e97cfe33ae13bd45def54ad84f7031f703e8f8eee727dff40c5314b0cdf89bc60ceac3b2b073af8cd70bdfd5aa038b19a67a010773f97571de0d104eae5bc18ba0129aaf302782c4be429342bf204ceab2a589a92e77811779c8ee6f6855685c020bc9225576a0858e44c9a43da0627ae8e886c5c7858bb097994de255eb2647d91d383cb1a133c802748e23f32e9d1f4b450033105cc193a59fa0535e8e12d38407068ed08862c2fef89769daccd84d80102a280e25f741cbf0b6a2a8ff9a5da8638882bb6bb12626ec7c643db3f9eb246c614e8e5fb9f2959dca212de721c8c28937b19c028d242f04d31520816382ad2f737882315df1be16cfad20a90731616be7c5e3c978ea67a3d71d502ff9c6f6866412e1e3c8bde19d7715c6aaab6149b31bb682f60427d0f39983a10b61e0bf546f4fd63248188cba12582ca1b142e85a1fc3c90d93a88021b7464de1255d99320f0fb8b6a671f5eadbf30b36bc0e623a81e95fd626f77bdfe4da2f21c57086b15bc1246178d4942a45f6c1c69a3b5074d4182cf570ad2c920b4274e9b9d6e0ca10dcbea6c958ee64ca43797b3e2edc7db8e3a0b743b22b352b743ca8cf8ae081f4199e55fd9830e579731abf29fbad15fbf7b1141969158a48cf2fbd4c089525285d7c360d1bae5e3933eb448e320dddb88399f15faa61597bdaf300820d19a4204ea10c08d999766bf9eedb65d4918a6301751c417bb738128dc0c3402c39eac84fb952355d8b401e8cb3439389d71d12419c245376c3c2eaec3a2d917b12af88c522e487b022cb9e7cf2089d23c6635e4de3c9f69b872522e91360517e5f1868ecf4cacec38873d92d0495d6be7ab34f544bf157ffa94ba7f0811122ddf6d752c579e44298e16b3410b00dc2ddcd40f0c5243b83181a6e04d419c60b56d92e300c4c0e4afbefa9ac4388eba6e721bf980eeb27eb47b361cd4f59c1fd45ce34ef2cebe21d4f1ef72dc78db13473ae15ac10f4d01f0917447dec026b4a77a4dd3cc0067868940cb44416098a74dd64246cb104359edca57fd896940e9f9e468d0ad796ca8439b702e2abbb8de1b1d714ad070ad9c8142bbcb509207bfaa3c44cfd61818b8768f06d8b035d0a4da78e32ec2f0653187bd4027de6699ce973a90a3b3f4955dc64a05a78b18073363c893ea7e8fee9f6a5ffd3acdad13a09eb538aa41bb84d5c20834999ca80a43dd4eb179176ae8735ebbe13e48cc13d602aed56332626a8791bbf1c99eeab6e25414bc4a6f5205555e8f24fed05a5c4a45c104c1ae446268aadc7bae75c384d524e85bb9986082eaf847f79436cd6a9d85fdee74f688a4c04465040a357b87eaedcf072fee9fc18c4e1ff06a76d8a0f3bbebe4603cc42a108701491ccd9ba76c360e864930e5c89670a2c8d5f0509f411b1aa2cc314138e782577f7a9c03eda3d4456ba8d20c7a187dc207758b5ca82b83f28f872a267ae05641e840f3632b3b239446c5cb33a3810f0b64a904d1636c1583361de648bcc5324262738e7eff8207320058f574d3e4d45b9779be0fe0efab01865ff14494ca1d322af7e4ba8ba4f5867b5f3944fd12beeda2d26692eeca370e1e5fb3b80a8bf632b939b82a5dd4f9697840da94a3ccbb7ebacd901fefa4011b48b7281e010517d4f5151653a51a15778e12f87082bdd4405e2be22a0871330c678b613d4424ebef4b4f272e27935e57c11a1c067e4dd9dcfda4ecb261588815f65ab8773995f0b14dcd80efa84bf1e6c2a329ececff454cf2061e1c0e0d545390eb8f9188355d0527d0b8ac87ebd516a357677e1da28266f3f676d49424f5568339bc8239c6a82bec276a060ee08febcaa086b6bd5f5bb114ecb2994fea27e6bf76d959f2e5c9b7d2b25de34b1e622526f3c06432f13b02b651019bfe9e6ee2a346af914b56334f924087995db1504cd3bb4ce4fa9d8d64e4792e8e87f51bfd6e55e83171a7394c98b39e243fb813df17f27ca1ef6ca701dfd85367751bcacea77f0d55eacd4a478c681fcaeed58581999862e1052cb360ffc84f93aaddb2839b94f0b68fa714459cd6085d1e41657cbad2676df0226b8d9c979a39d99491c9f2d40b6b28872762a9fd69c9a979c1456727801176a4e7752a03c4d42e79d550d87f118830afe08242c2668079a4c6664ea4558e8c79e66c900d8f1ad50b72f822b0a8277f782ec3aaad81e91dac72a0a6655792a9d4e6d073b33fcaeb39e224b79e37f82bc030daa6c68714b59f3b6db2cf4c02bca5f7f84d2969e27387e7acf0b4c41ad2b9b10dec715b7e9c173168f7b7d2057df7fd159e76676e1ee22d032edfe38faeb05482cf37a800e3904ceb7012011260cf0991660011fe555a552ce3bcca103bb15ed5385b69fffb886347361b8b30053ad678338032e9ae483efd68cebd570d98fda1dc547b54bad32aa0d6126eea3083349a2999696038831512baadc19f980a9e454ed2530893a912d4f77ec5a21660f01348bfbd8f940003fe1bcd9abb15b4bce939c8f3a2836346c0eacf8047814cc43998c0cd8e5954cff89fc8e550bc40a187bb473db27385981b8a56191c1381c22028b83f5a3718d6a3906657eb00dde126dfd9987b09954295aa60b7e3a8349d23913e4db01c26486229a0f29803550447e93cb6bbc73f1548c394dc552cf866408cca3124bfe0a13a641de0d0e1bfb12cc79ef16154e5f06e260efba2291a26de5aeedff430a0e0699030209759af901649a1088e8ae4d0ad0b5f037621bdf15d82fef0f8ccb2b22342ca235ac741b96f086158bc3ba530e0b4acce16e712c03a04a1fcdbcca08ed8d406f17f8d3bd3c3331d595c9df597166db54260cf0cbd2a60ae159b0eb07d46b09e02aa466fb221298831f3650c558bb7e405911aaac9a9867fc18f1c2a9a88542573d959b293952b2345b1ade23bc99a791f4c19ec389e2adcce5e1c9f90069434a4bb3e7411624f50da63c9c8d84df6f9caee8fe2097892b490ff64fae4bc7ef642ca9874b13380245498a35c7673de2c084d4eef1770d0600e492b8bb5508f8e797b8b79c52037f512d046c089b9e14e25397b5ac40f92d00b2cdc8c3009f1f849a06ce5684d7eea8fa269838069bd8e3d16da89a9d22c2bd799dbfc7dbf20e5714043acc818bfe760db7c15e3c06bb9fce04e18c917d63f0d4d2b6fb604b44ed8dd9d6122f4fa1e54b361e836eb434de1f9e123d7a72b63029fc50725f7aeacbacb7c9094f0924d4aa9edd7386f0b1589ef3a764f9f9e5557aa2124464b01129fc3c176a5b0ac13005e3d8149f7c1c4989934c22bee289c38c724b2b4927ddae8389d2755c0afb5daed3f691162af4e7e1868c0dc333fc8a9dde8a50afe770be606c98a20fa40b96ed185c2705ef232498345f3b7d955b97ff4ba6c53378eb9eeeecec17711dcc04b3256fc81be6b035aef55997a668442c1c2e2acf5e40035f9c42b242c055e746069d7ea4ce774e768aa0ecc07f661515448a0916c1218b360a8f06fae1d7822bfadafa9e908dca58f236beeeed93fca1064e1d2cc1303e997ac563ab3c439c7fa9a827cac25429ebb383028216fb0290b3104e916ac517bc1958e66b00a0892a44586a04cd5e22e9ea991e226fd3b2fe3fbfa059af03ac18ab455adf2970b743473cef620ad39f4b2c4d44959aa3a111f815decb263dab1b3ee5b494247f23492fd86ce0cffd0ea467bcc6b2a2c5388ca0589b3360a68beb24fe8744746f104968b23b99674d1e114ff30f1a081ac8ef80df575730c4790e5da2293d29b3fcc924b5699dcac7b67edf3d6867d94b0f87d1b4638c20492cabd2d81424b382422238cdb63013c0c7a5321915ac6a524a5c5662cdc05668024dde6f908621985b42c54f71c3a7b347f446e1d492f3d0f0054539161628d9c30359a4950495620160b86681147e3e493d21e2cc2adf5adbc2fc41c799e61214343d93ba3a122e89e65fa8b0ec6b28718aa6c6e71162e012a98e5f2ad9dec6e3c817394bc838d3d99c773e23141573a908f0800c5217c05496a46475443b2f2cc7607aef61b2a07cb28ae6a46930d96cd27257ed462366e2b7b6d7fc6767545f07e5f257386469fb136fd30f3b12910c75917ff38d40097b7244e21f351e0628e149117703a385f718f236ddce508820459fc49f9b6c7cfea24443e93df4e966274a13951adf3256faa3ea5e6cba5613fbbb6b115852cadee535bf690dff5dd40b814270b7a08d89b29fddb63f2dc088e3790a12589b93d532c9ac1c384293aad5cdc0e53822f86e80be41f3cb0f03e707d2986317be8007611645a898be0374f5330a33bebbefb8f9e5fa513aef9b89f5b11a4f52d94b8c814547d1eece1ee4f1ee5d5f06e1b711719fc32c0ad963b5107ff1a312862301bfda054bd00ba75407adc03ae3e9811560feaad0d070945798ae851ff9e4f931da34c668bcff8d66d62760b09a247299dd8f29185da525ad121ec7d572db7139fba7d168997b75c58f9032ac37f57505fa2871c71b5bbcf0f00c5daafcf741668136afd7002aef1037281ca14e2564859982238be5dc4f3bc6fec9a744b8a748bdb1ad78c562455261ea3fcbacb8ece1ea48abb9912d295247c09ca2e0721513b897dc4eb2ec45a1e87900675d88ef7d00c6bf2e2a858090513c8a8b0380530dafd974157fce0f07e72fff819e5db0fab0663f86e21b47df72ef9eaa143373264c517d16a83ad0a7182711ac36c0b9664b638d1e4960b4c26588cccd2716b3c4d5c3166595355c6157340be8d2a7e562e420dba53b8fc50f395977d6150df01075ae2405743063f60e1598332f17128f72cfc86199b254a81e5e6ce99ab8cbe4a03a1b9ad28085dba81abb47ea4c7011fbde5659e97100a596c782a4f61d27986fe3e2553662fcd4407dc109da8994f0a9bbd80dffb9281182e4f6b5897a611f8704f37f64189aab059c4030da02900222b92fcb7359fb78f400f9c6121a7c83b55b4db2d7880ab7e120538140bdcaed820e355b4d105c51492b2f10976bdd2b164766cb62227746bd82d82f011f5b098461475bccaa5332d3ef4e57a656be1f4623c5cdf932d9d98aa3d372697b534a8135e14bf4a5682b76e4da2e9a41c999a50c4b2a505af3ffe525ea9fe6af75ea37686051cb14b1c8447db5c2a881bf28448ce88d7ad6a256737251669abe0c75b3713f22dbc85b5c7a877302751fff537f1ea41ded69ee2ba8d1d5752f4493b634a4e897dc0958afb60e1ce26e6d99dfc84130adb64860e0a58f1e8bd460e43b0de720a1562c356476f37628f4ce88656a1891642ecf405b7f2e8e27af535f2393268e6048eb507231b58681062a7b68d91cb75022e93ba15301b2ba49f258e1d7a56135ba04ea693f90bef068c0989bb94653148219f78a600fcf494f97ab03539c5876a3fa8d0e88555a00811d28ecd840829f55e8b0baa5f15e560ca4531bbdc93f7184e90dc229ac6edd09bbef815eccd30c503633287d5496169a7a0c9d382becbbb96e48a5b06f183efbff47292f7ceaca7b46af62b163fe080a215543facb3dabe0d30bf0ce0bcf48bf7fd0394c7a3f33ee64899eafb3aa8c838a21c379a47f4eef4a7f3a68bc3e76f5d4b421c430fcfa5b389f93dadd9ba50da7772a2256da67c581a8183d06f3a316d4a588b8b064d4788ba464a643a5390e81b4fcefd0d1a1d0da16a6e888390ae45e30f690deaeee3962d322bbf512e3094c67b6833c94a343542de376f8e25996c184a84f27904074323478a5ac5197e5b6be81464eed0576149bb418e1e22eca936ef3605a82c795aed510b4db3c4643243a2447247b6f895c07381f34a2be13e71a3d93ead2df90222c78824457e273adda3e4854a3625c7ce0a643437e00c08f094e27be6f994693d30861d69163963788f54d219e962785b0ec0ba204f7470a2a02e1c9844f00ec954443be585bef97312328ce29c33d1bd4f6a94fe3db3f27c487e2656f4c6888aaf25e43cf341471835f8c42a3622f52b81399dc7a18cc88b1f5d0ade92339250c43568655147f9e8453f57a2964ce7155ab7b6d2165a87916c4c5e117ae567e12cd41dac36b2ee22d595731fa70e7a6e05169520a5b07836c57d16c8cf2361ccc50ad06e7de3878c22c5f3e509bb123111f083387b88394214e03d44822813c3fbb0403da3034d2ef34d9dce002fb462e6a5320ffa6f09dfd9cb2b6fb1d73631b055d66f2a085656cfc356b29fa5730a4b02ac4147c4e2bef8a536909f25d82adcc39e59976ebec2962992a59b516879cbb741cc3e9e8eb922480e3f24bce67468b883c86e84839716e908384bc046d6f69893f933e0392fd0b24fbd51b795fbd3b986b8e272e153f2fffe65cb840acf760251918901b08c363faf127557a1c9c97e93a69d75b3b280a6ef95dc6028b4dbfb372a6f8f0a2414232f0261ca233e4c4e2b5daf3851dd6afb8cbc02fbc9f5521c83da25f873295a54cb29224ee130127a83198613bd74e771d2c5167e5b0bfee80878a4e0d0613eba3b93be2d956124fa9b1105e6c86e184b5bc58220cdce3fc89f0a602e1611b3b4663d900e84042a08770446fae7e1ddb8371e4079b0f43187c9f4b96d5ac9c9e5932f5b3f86854bcd04a1599a5514b11e9645880cee86da4a4979ef45ff52602bd90ac71c2adad19dc0c88da542f7965026a1b9c17f7e8a7e6cafabc7a56e75cd75ed882e52aed940ec24ca51b91fe4eec7e3efb7b509f5fbd8368f7fd46afa05e1f8aa6512266d1b2f4da0d787c2a337cf06ad19b0efea007fb9da736c93a9955292ff9e5a228bc5071ff943172c6e639159d6319c0cb98db85359a0b164a3d6a147f27971660832db1ee26e5c87f5dbd9d4a322da3c22919a2908d3878adcf8026c0a5a60cc1ed025da7683520be59da5dfc5d319f4c7da230526c95629aa68abb469b56a324a1a2d4d11c86e1a8ec44ad3938b430df6611482019b8f822af264f9d5e968a92d1e43b1354a80343cf568dea2d917aaf7212e6f9de1c775f942461cf2d990f241bf8621d4c1f7b399450a6048d2631b9127bd42a96d5791a8ca7d4f27aa96849c633d058dbaf937907a3caf0ad7930606ddd6af0f8a77d6223e3d1342898da7101be6cc3a3bb7a274817eb5e9a5d32e3b1c45eb64c55803fee9209d095071119372b6289ea6dd3684f9225f425fb5a6cb6ead751554dc69960cc300995b97c26174f58993a4807bbbc43b470b651e9a0c6290f23a5149b18ad80075f4e46bce8a80ed92afcadbdcb9e4eda9889b0791fa98154f0499e883be12a693b1fd6831bd7f9fc7a9288f0761f513c218a4167be1f6e07f1afa627c47f090b49f9e0c5152ea79021098e58b2bc7cf56f537efba6ce7c45a3ac52cead7f13d076ca1162d24337a8158e6938255ecd62886409e768d5f94f2b40d387a8032859a94887a3e4b0027142edf41b36cf0b72dc35dab93d33e87f92d0cce8d4ac2b28cc06404e2f730870ac4c5183d8889c00f50eefc2fe1d3c104a2c0639d430f633d07d38d6ef1e247b119f850501913a2c1def3ea306da7573ca6c416496e6ffd310e7a77bb81020047a31cc506b8e97d00b21af83b2c0e0d904a679a84272015150af25e399e3abdf8881dd2eeac1e6096bbd6118fea348fc24a6b69fbc9550b60a00811c2115fd0d3b7013c04653a1ef2317e14614030b037d305c83c5245e94a2df2581296e3cecf74cb57ec5114f777294d429849ec8932ea02e1814528ff56fcf1ae555a71c436baad9af406e3ec2fb9d03ed3bb8af3373237ecaaeb9cdb5e7bb618eb63600ee2f7e47a8e6ea44cf5cd37f22b92aa442604b94cf47316aa21f39053f6a43b0dc00c9bd0f5a51f5b06e113e0f5b292173f49a47c8015ea1b2d7347055d1a41c115acf37f5866052723a493ad418dc40282d5f4cd98e66899b311aceb033327b669eb74f06900d6363128e9791c6f4c745335a50e8e7c646b4b9ba334171b7cf388ee220b16cf66892e33f7636c1ef4c5cb44519283363b33c1403dfd6cc0ab4878aa996fe326d8550a664ab6cffbe7033113d9fffe232b943ec00df2e2ae863e5b561b90e5e6a3e533f5e64ad834fbc5cc19b15cb134ddea619083906cfab2b7f5b1faafcf2538372a07f7c6e4cb7454e542243280b90ceb706cf8d65a1aafc8c531aaa50230afc80abebb5fc1d929ffb8f642837473dff23059dff1c724a620d4a4d1d7018d7bcfb2b9f3f8e0fafab8bcd38a889960e1543cfc87d2e5dee35638ca82ce57513a069717b74ab62fb3d675ee53c3c2c428e187fa4a9ca6b884b8e1c5fa46e9a5b2f52d420536c2f5fda79cb9da6d9eee69f62a89f656aafbf9fb55b7de8e8effd671d7c1887f0bccec581cafc9cdc5fdcdce258563a2f89e99fc78b21848f1bedfff4ea3ad2e81b904c38570cfee063367776c18689b4683dcbe08dcc176a592da050228cbb372876f38718b0fa3d6efc1db128c74a5967e49c9dc16e7f6cf5e0c74a4f2d2b824352cc39d14d7ec4f03c99b9390935abae98f6ace185e15ebe0030850ce214bea353043be6c956600422e2214d247b3d22f8c7fad15ed7130c6436284ee193b6bbbfce6c4ef14e268c7196000053581135f5d880c3c056dbe78fc6cb59530b98795854f560e59512d14511f1dd0fadd10821d94a398bccdd87dc87401036d0cd9acc90898f54dc87a16bec49e2cfce232b8ad7f2948777c08b71413b20119bea2af615f518b883aa1414ff63145c530bbd2ea8bfc140c61a29f7a3a364f3450004ea6a49b66886083a6c8820b49057a352f137d94e269dfd97a10aa413e7fea7fe0dd7acb3b4f2b5e9816f14c410a730f3cc0e3ea30b61f0086321f7af43b2baa8b0b121a13ba1298fda8f5d8f59f8c7494a7c2bb901a202b4b2e52a4d3e5e2e40ec97a64333480cbcba79efeae9e08da833d9061507cb5008ce7e67deef8ec3973eef6b483bee8b0941bc957b40dd02a7dc1df31f04602c3eb16486955b4f91e3b717e445422fd567f82dcff4bd2e662b454c51d0405611187149a6aba848e9b079bfd0771892d9dce40d11da7bbee0f660fa240f2ff833ed54678474cec353e1a67896dc6e6561b5e760675aab0e9e4c3385b7b9b3d470a55e8e8b6367dfc5606b6c6c06eb17bd428a9abf0884282fb4a8285fe426d1d26ed2c8fa93f0f32dbef7a5d4ad66a9385e72735ae9cd50be98643965d3aebdbafe5f74b360f486a1eccdade38f7a6e137e45ed7931e85c58eb3ab010a0bc234a84188bb56b22dc7a9d92c0a1d0a1717a8064a413c72b173bb7d2a6edc915a04d0446a253a70d0a9478c1f1aadf137ecd8daea4f5e0e64d0a18ae9016d8a25732fe2833621024bcf40fb37a08da799916ab1b48cbaab90da855c7bc0aabd9fedb86e3c516a9f24c9f4f533adefb4f372786b9d68e4c0e2303aa05bd1469de5b3dc169ac83eb8620cba6c57aeab0580ab4a914e8f160e7fe46b2844f02373020aac9c05aed17655b5196a2e37774a46549b58b9530e45cf6dd203d14b30c601192c836905ed40c6262ee3666ae4caf540f0a039ceea44d21d250f39a78e8ef2789bda70ec8f36fd592464b0af9c3c8e02b37ac76191e6bc1cafd44a214390bd6400d7aa3ae30136a6e5d9628282d12f809c5b098115d16a62064f2da891cfb77e6b76f05b4b14908d4189eb06aea08c1ac5c23c8dfb19c1321cb3f2c9f5e43ffdc3363a02a17956fba869eec0b9bc2aeb7388ddd180e52a45f01b111104c0197784901c108b5afd2f509fc76ba327aab6c7ee9b25e33c182555db8642d3c8c5be5cab8fcae4b8bbc858c1a8f544a7df3105da96d592ac7ec544b6dfb9cd21d4a47faab80529a8bc4b2c45e077e2665ab65a1c6def7a86f789d9e56b8640afa8a8a5e321b37fba050b4da242e2479cbe6f8ec3c8ddd45092e7f88864edb4c2a67432ac45b3b1a2dcb65e327c7108dc6bfc60ff256d2659e74ebcfb7101f5fe90f865c000b237f93daafdda955592d5f6cd4a8fc0627834870fea55d1e6a4496bc44b8d5148a16f8844d5dfd2cf00e3b2624fb383b24124d7db20fb37a21747d96081922ea27112e93a9b3eadac91f09c2f2d5dd42d348d498067ed4a54a63bcb89fc25853600cec0d901f40fd31e1e1ab0d6095c62ce86eb1aa9e535287e64f4669843fe48a6a34aa6a192919248fd4fc5bd035663fc87fc2496a496d0c4648c98a3310c7f19230a883e3888aa8dd7351053f7c08971eff9a1d18e8ccab7450f34327e353db742585d028ed2cb93fb0e4bd09e2a2ec294c841d26dc13f3e79de31b0a108551dd8a8be1cdf72cd389c1cb4d2126337e91fc1d56c927c95db9fb5d6f7ac9f1c5200854c46a8f07bf89d13168e9629f18d3c407ce8b05eb534614b20aa0566927f06b5f94c9525e6b1925fb9be15ccd2f77515f785de2b321288dbaa95cbb53aab9037484401892f5e86809fd7bb65dc44610f9f2c4467c371b6454032dbc6497aca1e1555acc90916072debd1bbb9bdc4cb1023e3360daf6a2f1016561fc22edaa005994c852c40a69215de0ad304f109935a4ca78396a11cb307e993e6309c7860a82332265c6bf13f12b1f8f243c8d157311a986880ad781546af935c1bd379d069dba8d236b3ef9edee3a6f406e813ab3cd613bcc5a1c5005d51936b26a6cfc28bdb0bea415b4057505183b556a5fb36f6438454b69a43dbd5a30dfaf27aeaf3f8a3b538d878582b0b07595ef96f8559f5854f6aae7b5a16227b3388b20760028b1dff33be13eae7e0c3dd7ac9498824f591ad96071db9b8c261ae41bfa2ac7d14b08dfcf08c4dd3c898a2346fbe74993b9a2ec52ae7cf19255f7728727e8a2024f0865b7f9fe7a3618c612632ddc457171329d1829647285e3f7f32c54a54195b00057ad0101ebc3378b2f344f15b8f414c037d4d7c43eb95a8825b630a0776a241354d2ff398b554e9c70e17c31e6d4295ef4c2077dfa7f2a58cdb7b3f2ddfd118d2dc5d1a1a4465dcd83501f0436fe87cc55c4e7b4144a12712216838830809702539815b233a3b49162c51c9958adba74a31091f6e1b81c98b11cadc125921909207b447c6d15f50597839b06e6e114b08dd2d76d488f6d350a341fdfc009a236c66d11a1e9f45f010f40e5aca12061cbb3ba072636859c1b1e21316463c8e856766afb3bd03ab7768a318886508e6b3b96d4f38ad04fef1021821aeb9608bfbd52d7c6a5cb9b441007f49c8e93669f0db1d11492ba8e99a6034a2eb6151b68d9698fdbca1f15214422217c96db746300da7eb229f5170274221402fd65fe9fe2f36345efb3b8a1618813b75b5eb58a1249db742d8fe3c850615f4cea9c3dbb14277eb96f56b913e7df021e50299f1dcc2ba6df104410eaf279178911a34c03cf4bf11a541edd17d0d9a1a5031432bc61506ffaac53ca0335a986165f1adf8e864ba1df591888fa456a2002803b445585e5f20b1bc6d07f96a3b0dd94046a58791796fcf8a097240fa98cb9990986524c76e4a1cf7c6fcbfd06e8779e8500171119ff0cf8b267c178a6f9b52edee9b377c3f6dda8df8d006f4e70482c779d9d11ffa5cc174c444b1f1004f4c9e7d6a77a5222f414b6938ff1f440bcd3c44d71aa098543536e5842466f400ccc6e0dbd5935b0c2174ee4bb61c9cbbd304aebcc71f66e7158d60955eed701dfe6987e3f02e8c6301acc5fc449d86330f59d8a5d518e847f3faa28257b9a69764c670335649e4f116326bb88f9d43a0df858fe3bded00d8d3f4dfe38218135fd351b2ec9802f686f2627a26b847d1b8f54ecfdd21b65c2cdc230f402d61934f41a622a830d62e8898b47ca8af9abf3edaa2261024629b26038de942d05769ad03973abd2ece6ac43b92aab506ecbf167779c6a02db6d6016588dde9803f2390c473d7fddc40f6409ba33e58e155c54020314bd37f7821ab3060d611ef4043a9de070b2a2a06c1717c375099fe1e9bd3890d5a44ad585dfdbddf4201a7a4898dbeb007c6ea52a1e28641a86e3fef472bc3cb364664f6ec1a43809874ac4d11319f95f6145439765c3dd03d50fb2649196919cd0451520838a282a2e5c1cde151b36dba4b3300e29e5645143573bb724f2bfafee8d94b8de5fef80b7c6f8ad6f81825832912f5cc45bc9d213950329c8af9f8c4bd7063a9e861683aca8b6c4ade1d5788785d41b666eb3e8ef31bca565cf1470e783654ae31b6994e515ca05000250d0204da6e3c16c633ba1b05576311c1429c206118f324223a56350d094e818dd4459848d57e4aff94283ed8b06680c7836b0d7862c0ad8009f7a2d3c0b9155a00cece3a36bc12e34f70161c2d6e1b00eb8b3bd92281346298e2328e2d883062bae63ddb26e246826460ef0d339ae82872509538407a535c91026f977a9479578f411501c8b13c3396c4725cb73ad846181deb4a5a948995aee79db1f282115d2346abc52bd467085d9d050e826758d32c058e450dcc97df26011411c61c8094833505aec30cd0b24d6c6f02a920e0fd86539c441083376be9322f24d844739346e397dc58539262e98939a913fb7914133dd2428ebeb5f691324fd901cd7de6ff47a11b25f10af29de0fc14d642ae506522db8a312bfeb0d423a3c6deb7fadc710c06af5a18ab304708145747c290030190a548c14553fdca90bcc10fd3f8878209cd2024cb903b0bde6685634f0d243783c82051770cbfba27192c518d5eea70b3acc9baf558ce632287015a743f54b6835471b1142591da15c5c6ae079d1d8df07b1fdfccf8a4127e7b564faa29fe6b397f7849634dfa7b200671f4de5bae5981c43bc3a4500572e32194c6fde792bd3e19fcbf6edbf8f633d607c8061f3b5e19e1ea5f42070998390d9641a75e6011034e0fb68be5eceaff59ee3b13c0ecf7bc86a5746d2ea9066fe55fcc3fb2cf1eaeb9b57602c1e70c349a787f55edfebab116b0897027e3a815cb0a739be064ac0c9ce77216a78f05e1f4f7dfd61578dc2e42c189c19aba692b4812629989db90941786499c559f2beec4083463c2d58ff99b475e05ec39720909b9a16d6814e93ecd5813c9261995e07514496ded946f9afc6e66c606968d21735c02166305844326f3b28f2791d98d638d166d66dfa7de0e4232ec8f908cfff0a72f27b2a5a7d439327c7aee0e7d51461752f80776877891d0cf7a631c64eb20a1a7783f2c038bbe8074d2151d3015aca03392da0b1615e7db4ba2b2eed10779854b617ad8b7bb350458acd7873a51027f06004abd59bc3f888e978b4aeff5a8b521409d0e9040280b71aba57c0398ac7f9797c4b6092f31b41a43ba5cd8047115b4e77687daf50411cb74469d41f3744828556169f934f1363ee7870c6cf96ce70ba9cc51fb5ac48d6a01fdd0b7ce0ca2908edf983383c1b35b25025d6e3167b074e123c0f0e8076b0782059a8cb34c59020d42a9d050416e2ca07ecd4bc0b5a72b9554a0ae3a71b23b0518c5c2dac40ea5013dcc637abbc192fa39b3840bc26541d8ca3eb3f2c908aa628b0bd9b642c33682247d8a47054e0d96fae1b557940bfa9c14a35c20a3dd219708fa00eb8a3ff4ccf14ffe3e0d9fc62f001023e7ea1d1288b70f4b1249ecbe9a76d40d15f69c5b9c1147db6c0ad09ae18796e9c41ffa800c38996cebd26ba51fabae75b56034a01b4b42cf4586c939bbddd8b0991145b1843201abb9badcbf452673927c6fd70f82d0088f18b5e97815f7f0d3f407c261bc56df3dfdc14fa02567ad3e0b607c9ece46087de763f582a561e7f340c34b9e2353f67be895e47de7caf89a3e128e279bf44612f0b80e5f41a661b7320ac4574a0bf92abd0a3b22a32c0984e7d2b2af13b1a7f34b8c24bb5aa1b5e591f2e736a38d41bd847bf57d14594e588c6c33150d4fd9e53978ad64403c1ddfa586b092fd7937b9960f8f6386c827a4d59660b2b375f639879dd210e1a04a1defe5a967a50c4894021f0e682fb96b00e3d8184c66b88426a367a67b1966f4303ec598b4413f62c742f7fe535a18042db79041b79a80c4050b1fcb83dca93c41e034490267676458f257607a3a73518c9467f6534d68ae1469379073d8862caff8db062cbc2e7754d4511657c78b8c937a0a01593ab7cdcf91da57423bee1521e85cb13622b4a5e7a76c78974a59eeef2daa50605d6cbdca1fb1a6bb9d498d27336b9469e67a38798ded728e10cf1d44f6c9465e206d0f07f94453684ba66bafbab08a85a91f9725277b76000a15280422b767ca4945bf668308a3e9b54f22ac8c604dd8789773e8637428c20124dfa769b725ca27de8ae94212839a5135a0720904f451178417d896408fb60dd4fd095614410d22e6722daa32b329f7cb26bd71a434073f68c4d570aeb75f99011914c3969d7f8d008b4595212204f7eea5ef1a786759007d283fe9b26414f63416490683f1b13f45bfa4749dc8a5f0724dba18e8c954bf6d646f68ccd46b56c786b9cc6cf7cc4c41a519d0724a9033ac88290592018564d07f975ff07ccc8bb8b0a062685dbe6a4c1c026a91d89961fef07bf6ddb03904e71b98d77a29aee39140877060a00feffb3dffc414eeb56dbdeac878e80e3d5da51f9752fe1befdaacfed4b6b7b65db52ca2da59429c908e908ba085225439715526e2f8dae18b247194607fe9d557a6b02fd85eee9d37096c7032875f01a9f96d348a21e5749245ca44f5badd6d3d0865248266518cb7c646d858183b842c88d2fac4b100d4d71624e1275d72b71189565b0489adc805aad5612401ca91d49b2a26585cb8a97153fe20d29a5fcecb4a2082b6860451256ecc08a26bcc6c3d61292c8e6654c184f012854369d344aca8acacb78f712e0e3e3d3f23e2eacf312fa04c13a3ef37d8268fc3e413eee7d5ec220afc383f4710983883adefb74ff85f76142e9a229f9952594493226a7904590463882d320c169922067f288b4425e2191482c641632c9123a269770624e23322b65531c9242524786744997e3b86e54e0382e1b1f1cc725aec0715c2fc4715cdf0f8ee3d240d8972c701cd4cb715c3741388ecb4608c771892d701cd70f711cd7e702c771e921eccb1738cef7e338ae1b221cc7655384e3b84418388eeb89388eeb8b81e3b8b40c1cc7be34c2715a801cc7753303c771d9d0c0715c620d1cc7f5418ee3fa6ce0382e7d03c7b12f8f701c979f7303c1b72b0eeafdb952ee3cd3098523e3fd51525456585032de5f860c9c0fc785753e1c97d6f9705c1fcc87e3125bf870fc9301ca19aa82d208286356c22c0c1359232b906c6b6d8bfd0f94339aa2d194c538773f418cb9122e855c17b3b46d5d5c5c5c5c5c5c5cc2afa5a5a5a5a5a5a5e583dce8b484da53f73fd0e7fbbeeffbbe0f72a3f385d853f751a08f7beaa240d7f940d769015dc7057f9da82a9fc8988cc9988cc9a399b26fbd196638e7fcbaeced703977f73bb971f80120addb5d70ac8fdffbd27b9e37c32350efa142140a8542a1501fe4460715d6eab94ee5b82f791cc785ee39f04e45e196f4c1f3efada850264d9b924135140db4ebc808658ba6464fb280fc1bb1e6dfeadf57deda324653f6bf8f4a1b295424688ad2e50fa5344cd5289790af1aa44b0ab1435e5c5a3e1928f9648a36943197d0da2f8cc908631615f32193e48f32462497982d3d73fc60abb5ef1beef0fbbdb36e560ec9a1ebede492c94bef5d2787a6ca654bba5082846491a9ba2f5b16a0d8a55f2df98391746d13a153557a7fb9842432fd0e0a837d9fc9f4ee993c93e76d5d2e7576ce221c3885f08a9e45a62834c53983a6a06182666bb666ab4569b5d22aadd29c060468d397dfe73b80e81c12925d26534a2975198e36d48f2430556e740469d3df413be95129270e36b949baea3ca729afcaad565a292737ac93bf4e7bcabe07624fd937819eb2dbe6c110824e8247e4df4cae43bdbb6ddb9df4d2fcb96e39e79c73ce3987ee99dbf286b7e766a97328585bee2f67cb9dade599a27dfbd63e1e6ab55a505028b61b55510528e6e7eeedca0a0cccf664a6ec4f19168d10fc7fffcd5933dedf3aab0556ccfb63ce592fef5f72960babe563c9787f93b3502c961596cafba7382be5fd559c85f29a757a7f940c677925d60b4c8cb3f2fbb730c35974e6b7cdbe68ca02b55aad26803822c491228ed0e04812477670a489234f1c2982d7f81e6f58d4df0688ed3fb3023db2033de203fd76778a1189db4d6d6d7f5de3fd77bcafb6a1ecb365ce52425e02139cd5e526642a9cc5bdfd5c85b34a6f3fcf9ce5bdfd7ce4b315ce3abdfd7c85b3f4dbcf489c85f2f63316ce4a79fb390b67a9bcfd9cc4592b6f3fdbcf4e7016eaede727384bc6dbcf5070d6f7f6b31267b5bcfdac85b35cde7edec2592f4b9c05f3f63392b362de7ee6c2592dbcfddc85b366bcfdec85b3feed6726ce02df7efec259e1dbcf60388bc6dbcf61384be6edcf191970abd100b72621b88901825b141edc9ccc003729b4006e538801372ac0805bd20bb855c105dcacd0026e57f8c0ed890c70c302b865c169ecb380db184e637f05b42da7b1af025a1d9cc67e0a6877701afb28a0e5c169ec6bd0fa388dfd13687bb0416c0aaccb69ec73a05581f5c169ec5fd0aec069ec77a01502da1f9cc67e052d104e639f8296054ae83117a186f4d8fd743f53958b3a2253958d4c71461074d1b6bfd536275b52175aa0da149d6c4946e831d7c62c738d587614447390a72aad4ea668a7e039acb9e68452dba229f9d967dbcf456cf7630eaa383e3ff6d58dcfaf7d95fafc9fafc4cf45823a300b05756116c29123478e1c3972e4c8f13770e0c08103070e1c383e75e3c68d1b376edcf820373a379e868686868686e683dce8d0d4d0e65aae79ca7e0dc71ce622411fb47fccb54d3f875956c17c446b984aa552a954ea83dce8a43ecfb0f8f88aa0288aa2288a1fe44647fc1f0cb4ad15dad6be3af75517825906d61fb36cdb1ce6a329cebc5ddf56d1247f15391c6b986734cc326ffb1eb34c369b2adf2ba9633fdba701b71268819c467e0e1cb52dff06e83495922f6eb22d7fabd195d5dfbf28dad8dcec52579ab31b3245697fb6fc2144accbbd6ed3ddba42fbda12c7bb0dd1064dd18637304e692d7e9f8dd0fe00b42c2869aac62ccb4753655d30553ec51743db7e7662f3936d9f5e21ec70d6dc3e7382ce8ae8cc089d1dd119123a5342674ce84c0cd5ced93bbfe967277986b936456bbfe507fa6d801489a6e4d700ebcf105d69c0ed46346eafd814e5ff966df99f84ad4653f63f69816c603fd7e8ca0ea96d2b34554153d501fd74618bec584a29a594f25e4b64cbb743a6955fe99f5efe36a32bfdf26d8bae505efe46a3ab520d69cb5aad96b4e55b97107b13b38189443ff4096d294b43dff77ddff77d1bd0dc8036a12d08e8093878ea5661df14d452ad542bd54ab5262cd85b4883d3dc7757c2be40743087e86a03c25ab4d9433c9ebabf01d155fe4ce1786333247ee3a7f36b88a6a66cdbe1a90b84080f613c8487f0d08e17cdaff9bfafdd36242653e484643faf7771497b026d1b50f6a649c9c97a75af764eba4d4a29fdea7365ce39a7dc362cb6ad569a3b5a396c6fd8df8af76c2956741e95dbd35a53aca8d36e1e0c37b0ac786eb5d8b6ed93d68f64dd9cc669e8cbef68ab37b06c4adf8bcc72d694f2e2f952caea9b6f3fd24091abd297aabca095bfc912f879f5af3e754a875842115920fa411668446090859751152d225840f2414592111549e8818a2778a0f576232a76604363bb91117e5455de5c3b996d8bfdbdd93b29cd75e3c6083f994bb225156461c4e4121877b4c4763c27066fc0cfc9807d701245cae73cef33c61897b81d537aa72f813bf83df0876fee3fbab261e61fe6b07318e7cc5511d09524fa328a3c22af70d1be24fab43e492239db41638f0b599c40846bcb47b93f1c8c5d7a53c7819d0d14632da5cf40141178ca3ec6fa668b5f6e8b7d861c86983b751c18c3e4a88a13f7dd54ed70bae3a4e86168dfe77228a1e976297ac0c1e6fe5a1f13897e14140c72cf71bacb397b1ece39872b9dbede0e97f167163cf7091c65926d5f83633703f7a5c7dc731c57ea3a2f8505a5bb4e86ec518ec1cd59e268cca4e650c6cef3d4ec9c66762c73dbaaad17c481ee7bb74a2f0c6f6bfd6ed20ec481bef43c683f6f25f972973c18646c19e6cf8fa7aa3a8dcb9f14537a2fbdf2de4d698ecd39e75cf122e7904318ba948186376c37cc9755861b68c892021782cacc147d3cb7f99a21f35314678afe8ca21e3c31cc7059165cc71429104ba4475a3f187a2f0cf5f3ffa8407649fecd616e1c0640d6dcdf412f18ce2beed044f94101da96380d9552482424a7a16f7ba047b964d3475a32a3e9a3211c0d01f9cc96fdeceab6315e3e536cf9408f728c3986b37c531f21b215043da9f0da34d73dca272e4f767e2fccb4db729a39c1e9b3e9b7a6f8e4077a942d495fb69c253b8edbb66d8263b767cea5772fe7d20deba4af4e522cfc6cbcf3093f8f0eba367600e3cf0637f25b7eb4034b607dd521ea8f7cd731576e417f6145d6ccff8933d2d83387bb8500e24e7fdccc5bfe88daf351b001b9f3b620d79701902fc8bd851508993d27e5fe877c2e04b2377094f5e21ce6be6100640dfd1d54878e6df3c5bf8f1e9f874e9b296323e57449fc9cd431ecf0344169589390398efb3ab977cb43bef92fe8ca72e79c398e09dd77210bf4b7755dd775dd4ba0fbae7b1bea13f205b9bbae16593d555d89e6c7eea1ffc6a2176dfbe098a3048e22d8a5eebd3cbb6c3f83407609cc816e2eac4fc81afb18dc416d6a37dff0b3ae39e7fc394598ed3f8272dfaba5f7b34485949e6edbd707b22f3876fb4a1f640dfd5b2b28ab445349875530b13b11c437e9ae6486e178c48882ad0f7ac437b29b1b1309f86c42be2037ae3eae75da6befde827c3a307300d50261db8ec0cf812eac834387555876e1c2ee8f38bd7f111ab8e7c26f0c3d7ea38e5aeb8b5fb9503e07721cc73d97847c41ee704556a7ffb9d25fdf3d0bf698a9daa3fbbaa307908d3dcff3bcbfde5fcf761cc76d75a66a9edb90ec0fbeacec0a04ede39c9be5072d7f06f9159c306f76f8bd89a63feaee9ce50159db38dc0d8214ef44b70702dbd136083a93b33c205b1b07036cf9b3d5daf2756bcbef7ab0c818850a5b0ca1459291d0f62d5c5b7e957352eaae85164aa41fa9fed56bf5af5e1f26ec563addad74badbb6bad56a8313f6f16637514293234d9cd06489ef982096efcf84bfcba49c6d449a0468503eb9919850904f8b86c409a29f214e6a322345845c3e4a68302788fc243939b2f1972fb1cc4811a1eaf251428339b1fd89243939920d159942a60b494911ec4992cf68dcc669dc9dc65f36a78ed4f6982df4762a22bb57a04ae449d2ec6889212a840952ac286802cdd6132433a225e4abb6011e998c926919d6294aba0121fba4ab29841edd8341b65adb3f57d05575ea53b006ad03648ff45f7a4a9b86389cf611d59fa6e69c4bf8e9f68cedf1dbee6d375af2039c43a64f2575cfe51763ec15fa05d26f37fa223689f8c2075fd8e0bff8a16e75bb0185cd6e5666bb119321d86b2f13195c7c3113cc61ce8ba4254549bc28e55246f92077b9f36288cee58907859fd94592275d1ce902b6e557d727dd05155dc4a06a148d4245172e9414142f858b242ec2702e66291d4df1709063505ff2b3271754ec11735cc0f6cafcd16ec4c590ca76232e886c37e242c81ebf31345214b61b2da1ed112321ed96ed464849d8f2ebcae7421ada66235e52db6eb4e4c9f62f6d374212b24fdb8d90606106c4c0811845ec9524d92712ed464f30b2e7cbf91649d65252182609b67c492995ef540af1d2b36920bb04f3f8622cb1bcf7debb95b68befdf70bf6efbbe3b176efb3edd375c677958ead95e60a8adf086ba9f40ab724fd7f187d9e8a594524a29a594527a374ae9b66d5bf54a53f4edd36dd31f4bb06975574d0b6eaa5a7f22e5fc4dd54bcfdc285d99464f7062d3376c3f43ad9a61e763956f7fb2b68bd66e37d46f4e21d336ba6df5466bc2924841a3a560ab147c0290a434cbcec2ecb9baa9e118d16a7bd2a1d81e3b2330a060f404a194231956500b9aa24b688a6ee4842429b61118b03d83ec566b4bafa7b674d8f469e82ed6edc587dc578eb1eb58826d575ac31b6af8d2539fbe0c34a4d92299fb93de2eeec009ac22c09b564fba98712ebddc935253cea5d2ee40938bf55338b0a54f6ae242cf69aa69570f58a7d3d4394da5d8c5fa5b9d2e565aa97bb3fec061be9529d6da0501c863a20716d41e5ae0492674d8dce0742b5d122c7444dfc30ab2e04d81050a051e86f821091d549104ec058c25ae1db48c70a204149a09a07d8193ad09ee07b409ae0a5b131cc71343ed9b8fb925326782163db0410ba27801185200c2831ee48009404744818a2eb0a84eb06187a8c10eb65a852372ad820b4c3e2ece2788fa4d91f31d3d7862c049aea84992ac6c374a22451228360d0c8c331242601d60a52443b4e0ee20e392b880b03b08611bec64c8667363a3e38607d7c5d866c90f156bdce9998d4d16570881656184178f1d5a5900e10594c5114378e8d0d24217898ed96e94850f62686fbb11165860a24fdb8db000e365bbd11448c60d74db43e93f3d9c40f64b8fbf7ce936b1979e39d2a74943f6f8331cebde80136103d973045b86d8699cca89036c69add55a5b1d94345ba97b750adabf975ea7d6250b4d29a52b58e8152cb40b167546c3147d04b229f59f57662da5b56e74a35bf5a146412b1775db62d36202594b6bad9552ba020ac566bdb077c9a59426918283c257dbcfc7ce7ad1d51676401a61b204418fda4604539c3032cca1034638cd7c94103dea69c49e3f8dd89876fa7a8dba74a12b92962cce817280abe318a02772ecf9330606580401803d5f1ed12b9f111227f6fc8ab511684a2652adb4d29a8cbbbb4589c1819655ae4cefef522e41ae4ca16c05a89818181898776f0726c8539e84dddc9baa128e384173f181113363e26aad56cb88576d075cad09aef604579b42c69e71baa7a07d1f2606469e84a67861c213d0d154c5fcfdd36caa5a4072342bfd8c2fcdf8fc200e72733f033c1d4df19e9050af8699a7f12dc080a89f9810f572d1d54c78fa9951a4b91f51af7dbf72e128a280e3e90802e1cb84a7a1195da19084e84ae6ef9b92e86ae6ef9f8ea60ae6ef9f5a53857afd0c2803a28868eafe6988ae50307af2992bd490d96c342579cc63b01ca6a411c694b42f4a490a5ec01918384334c5fb2de08c13e08c0c50a636c5fb2850c6095dc924d1d4fda17d7f7498d0be3fded8fcfceb73e999d6be4f03947955a13dce40daf73e0b388336c5fb2be00c2553bcb37defab802eb229de4f015d8ea678bf2569df1f4bb27d3f045b6a347585364a383a2c0ba18aa678ff04a2602610f50251435032ba42a19cf81c9f8c49b62f18a25c34755f083d6a98864d150e5d174d159ea29da1b94c9b20b2cb60fb532322c340daf205799eaef56ab86fed4b1d7bed07c13aee00186b0d55e786417838e9d89f3af3ab8f4a830ddd0130521ad0b0e82188139ec083a9b5dd56c5bbfae8b11b2269525749a336359ab84749fb6a90ee86743f73e5d5686a4857a374f46a57c47be2bb924a244dd298d092264d9bbc48c82e7364a4c85fc7ccf13230736bb58cc0d876c5c13ad80a0c062693033bd1f5c9e7b309491ab2fd2b9309a32b0e894382c160308e49c9877b72c43999714cb85a8767f268cb0fa56c8ab2ca6e123d4ad98ae36a5a7f5b8b43a2ab2a9ba9f99243aa1cd2ac1c12e5907cd7a3caa42a892139ca71035dc3b955d81e352a097ad49bcaa67885de846cafa99a3e45dba575d86002a022674d2143473389088c2a7139ab88b366cbeb49edcd45978dbef960adbd09fd8a8ad3cc6ef31750bc46cad041e718428f754b6e65feb7a71e7538c2bc2ee53bc618634881c737953ac710b2d2e97233955e2a5e6dcf27b2ebae48885018125a44a5007d45619e9a140a5f75d2fb81770da98c1df428955018922d657559b7a4db1ffbea7a8abe8b54da783bb26eb54aec79b5ed08d675f367fed00ebc70e26e299b3e833b98232222222a6513c63977279347c51c5188f506e7662bc2451c38895c9449844f184c2233aa254a6a89d23f7f8468f9a51449e4ee33a28e8b6cea543abd593e14ee8583e94a337fe93138ca978c3d13d4b17b0fffcb09ff8b09ff0b873d2f67ef66efd6cf6b69c97f9f48fc1387e0dd2e05930f83f7de52e6b8aebb1c872f48b7f47ef815f6bd6136e5373d0b28f70aa8f22b25d31579eb36969c57fe52a758622ca58c899a7e075d01b9c7a083dd4a4f0eebcabbb723a3a351042d3f8f0b5990b4742995b8cf5cc702fa96f7c7cbf243f737dc7005a628973c1fae0510195140810c26329c808aa1a10659f67cb8162d526811e36b812bea3c1f28d8a5ff7c825d7a14bc783e30e64cb04b27d87786fc38a61b6f683281dd2cb5d56ea0690462037c4b575e79af943325d8a5909ac01bb20ae81b7b1a25e5f6d0c1142efa7617eb9e299348377f542a2aa5eb509e7b9414149309c56519289dcda6e7c01fbe93bf03f631d6af9a293fe75b2ae1aa0c4e2253944ab8684da0dc7268aabcef04ce22648d7d0f24b2ed1490f624c269ec9cc1b66f99f894d816896d93e68fd3d82c8c732691384b6eab829a29ddf5d9e39474c2f45c01c9f67cfada2fee477f62bb13810000b82daa6da5019a8acdc41b1b517c1b8e7fa95854246ba4fdd25b70e7be06e663aca54bbe308364cdfc1b1b1b51fcffbe2059f457dad2f6fa17377d218df48622e1abf9114133e14ad0d7107d0dbd76105e331f83b4052ece9f4132f6821db427d5c16744ec88da4b468bbe58a85ea199bb1bee4adb7d99e7b8b0eecc22144f559ddb067e309ba55bade11492d1151542a6e61731a3c1a64920c9970bf6fc3944c434225fa042c89af94ac490a03320da48d8138ca141d0d7149a42b3887762426d8f34091a85d218821096edf3c794edf347176fced6de41fb119e24023ab7594b79b41c969696de9ade467f5febddeebbe73bf5b3a62b1bfc55963034054d30c5b981b235c5164dcd241b686afe66b31de1fd8ee98552d02490a9f93bece9c39e3329c49e5f3730c6f7089c668a000b7a74190d35384beeb9793bf43790c50b4de736efcb3dafb412e5820ce31269a80892d0a6c1922596e46089d09225402c716d91b4456d0bda16b32d26be577a3bdc634e668a2fe3e59bbbb3bbf6622fff05f37326afebb9a0e93306e7b6a6d7f55ebcdff14cdb8d8e5a1b83737bd99e7460b231d5010bd3c612455fcd99bceed4757363bc82f3dc28feb2ebeabdf79abc6edb3aac6476124608ddcd1ae2244c29cdad2973dd7e765ea8696a7adffdfcf6dc7981c0e9bbafc1f49ee96d58c3e9bb5378af079ea6e677a1029c7a3070db86b2fb1c39d0ae53d2711def27c5e078b3e7f5c18d79cac9815cd8638a937ef5acadd5565aeb566bf576a8acb7b33fdeef31c518eef34c71c2c0d990de19b8fb19773886a98ac1668f2b4db4dfda2306d3566be5f0dd6aa9944ba58ed25ae946ebb63da51cbe74dbb6edf3566b9d318d21909a079d8ea3a6a0e98fd82b0df25df7176cafbb5ff0a5cb1cb6d7eabd6d6067adb5cf02861ea57d7cc10d0b9bfb1d73658adb2e717fb9b16af0457b5db625cef4f84d8f4b27eef17321be1c18d385f6ed5234e1677f3ee6d653dcfe6ede8f961db37a30b498de647a3c4d386409437be5baf01bb2c7197b7be7b8b7f84b0ebe60bf1897f28fdc97dec117afcb9c2de160828bf167eca5d27dd31612e584ea12926c7daaeedfff93fed3fbe3939c61c8e8f04f9cc9eb4c2693e9de7b77eefde99d4ee0d56ff23a7d0263b8d05af47674f853b47f026580d0f27aa7eec8887e968c3d4fffcde2c9ce59d4f6cda13845eb636e93c9d39f71f7d9d45d1593d7a53cf7292a295dd7e5aeeb523a144fbfc6197b29d93b755dcae94fa793c9eb4ecffd4945e5f4a7d3b794fe544275a72838d9638d74bfb733795d494a8e931c76897d62ac4cd554651664399333bbb2fe997e9cdbabbc25cf7ff8cecdcdcd0d1786dfdc9b1b7973c3472e68af8fe97ba5d86918e94ddd5a2ba5b5d66e95864ef678f27cb46c6b6da535c439c8dff751ba6d92c50ba7c1847629a288d123bacf9bc72cd16e1413b2c79aaffbf99fb36ae82a351d917fc7d4343531cb16daef9cdcc42f50123b32faffa23d7a923d69ed76ea578f7e8599aab1d65afdfe0acc0d61a638454f015347ea74e1d3d413bdc23aae9d25b709e4548c25f63883525ce92785969bde7a6fad52ca71fbcbd9ade68adfaff04bef95f25a295790b71d7eb8c114b27ddffad8f181f3c3c70f9c1f3f700a10032351efee398fe2e1ee8e51251e200e72973e1704bc7b3b32f0f81d33fbc8cd038c99d972e3cfc1b1e5de41814df18a45fbbe1813615b742226b9e77c5ec9c979fceeee9e931fe780be57401c40d149284600020fb0c1010d88405803018d1f106a1bc2cf01e1372064400dd1be8f9b2c91d3c4899c2645394da6c8c1208f9c9c9c9c1993ca143ce5b52ce0263d9c768e7f6d818ebf4a8a0a8220a2c90c9a20d16428af7461cbdb097d6cbca6786d0c4151a15155e8948bae5c88a5727ebcb1f9f1a388f3e3fb48b55252ad5dd34ac5e8aac645694d38ba20fb7c84a37e9c70fcc41fe1f836392ec46a50335dd3da269a0909d5527ac92628bcbb02de3d01ef9e73729d80f0c759808619f489e787ae4eb0136d0214a880d7e9ec1d0678e177662c02dce0956a003a041080149a4a4b05080036352ed0e4c07123a5029380cb8d686343acf1339f0c8d1044800c7fdfa5c505430c31af081ca087e75155e89a568dabe6355535fcfd1a22ba72c0eb8839001c408ba6eed700ea6800a8a366c85ce940a223470e1db19a968e584d8b47a82306d33dc25174d2c30411de039b2a1f7fbfa768aa76fe7e4f6caa7efcfd1e2353d5e3eff7fc388bc7dffb0b7005e804f4f8cc950d8faca73555397f9fe7c95415e0eff3244d15cedfe7a9d115046898419f4c3c3f3f92788878603c31ba7ac07fde50a7b37718e0057067b643b4f3c322c0cd4a35001d0208408fa41e33baaa424400b0a9718126078e1b291e35baaa483d86e8aa017f9f07128f1b51c8c6069058e3e7675e9f8c8b46289443dbf7736639486680f7673c2bc632c20a9a2b1311eb45570cf8fbac1f1611d687a38e3db25e2dbc4f229f4462125db16a624cfca12b0cfc7dd189083455ac1f0c80acd70540164c94d1152b2606cd158b08eb25feb05ee20feb25fe84ac570be19823878cf8b3128e305bfc61bdc49f1d9490c5a4da48da49a10e233a50421db129de1f6dccf6fd961fe84f821e63886a0cedfb2b6f63c8592c36a6b041041b4cd85062df0f653590e8ea0414c66cb8e8ca02612c8c8531a01a5012506bdfaf31445727d88bae4eb41a32ba9ac0dfaf31a32b0afcfd1a34baaac0dfb7f19a2a94af1183c16a10d16afcd06a009d6a080d196dfce8d7be4fa34657292d195da5000dd1558a8c4ba6d54afa90340d6806a3414469c060b17ddf0691b93ab968bce82a8516d6e84aa565a388cb46d027a48168fce03049b75a345c2c268c5940a07d5f054802dca3a0e010c8592bff31a195d817893d8633d8f7636074a52336a32b1e22babac0df0793e80a023fd39f8e18a21da3c5903eb0b6ef834074a581168cae1cf0f7c1185dd9f0f741195d3de0ef87ada942f98f480f0961d7be2ef035823f3efbfe18baf67d39a3b5efb740a32b2a04a32b1a03a22b8a4453f7936a4248df4ccbf68dc5b0d0be484344fb7e2864ae6c5a68d15575d1148daeaa10917ddf6738e4fbd12f570b2e8ca46bfbc624edcb7addc798f5d2cee302a0d4d111a3ab8ab1d657476c5fa0019ff3388ff2397b3b2839399f5139db50abd5c2419330729a5021a7c9183962a420470c16782a478c215cf43ddad8395ff2767270a0e47c09d5f2924d341314febe09c98484f448fb3efe380b803c3597cbb52f014e4015a000c8039b00c8033bc14eb03fd14eb41f756bdf4f69a500a5c06a5a2eb4685afbfea86f00a57ec4fabb2f81149a4a4b05288596424ba1a9b4545a2a2d1520152015a07ddf45860a4c05a6025381a9c054602a3015d88f2bad7d1f0132fcd8e2daf76380e1003d3c31af9857cc2be615f3daf769047e803d311f600f6c07ece901f61899e27d1e60cf8fd3f430e13ae1e85338b1ef5f223c757f2bf1ed08479f02897ddf0033c8017b5a53bc5f0090e7c914efe3803c1000796a3674d5e33379e88a47465f08479f62c8becf0a479f42c8be4f8059ec86165b85a3c7901e00f2d800f23800e4d1005df1fcfc5085a3c786f6fd010839928e70f418d0be2f8070f4582b00e1e8311700c2d1632f9b70f42892f67d2a44573bb31d228a44573b3534179084686a4239603862b11bb2582a1c3d0aa07d1f490c478f428822d908478f6268df47daf71b00f6a82ebaea91d463d6a346387a142fd74c387a142e974c387a142d178d5a880486a317d1845ef6cd88e916c2d18b60fb7e0cc80389071324bae2f12274e30264d3f2237eaf97e1fa50e1e8452ded5024edbb128e3934a19c590e9229ba364a38b264a5219611568cf5c322c20222a22b56908a55f42c273ed6129a5584880121eb4553f775c458af7d5f474c8791cda79099802060366086b6efd7156eb6f1967bc6e5b1b7d3c271a577e1388e23819397e7c0919b6d97d2cb8b8c1d93f36a085fe6b3a3a09c80501cc551441b3568fcf8271a5d89a17ed5d07ae6fb68fcbf6662539c91cdd47d2efb8bbf7878029aa2bff88be7a9396d64ae4e347f0da3ab30d42f9a8671216c97f6cb8f7a45e514db973bc9f409565a097f973e971ff5ce982b954aa624ed128e9a4ba2a9fb3355a5f072af5f53e49e0bc1d3104d3da14b72fc9fa9ba1c2737f7837379aef42f3fe6d7af0cea700a5dfafca37ecd50fa1b72a87fa6285e8eba80dc4bc34ae10909a75f5355fafb7a48890b5fb82f81a50ec846b2af1ea2358ca65fba681437c7bda62817f7dc63baa2f1b39998b3ec067f4e4053f53233dbf7c753913d233b05b9a05c502e2722ba6ac9984ef8f74fb413d20bc82203b2ccc8e88ae589cfbe3f235b11a2a9fb34c095194ddd5f01595c2c42a6c882f4d19258662fbad21a7ffa3ff15ffb6a71b4c79924fbfe6abb9192225b7a3b3df48872c5b66a9c91eda9f28d0a9a2adfbfefa3849c45f75532648fdf9e91cd95d4b93f339b894d958e69184ca3fca861fbbe4c12d18c1353d5f2f7676053f5f2f7678aa6eafbfb32b5a992f1f7659c4c15eaef908d9008f43fdf4b8f33ad2df3a22b1a3f8336552c7f7f8692a95a7995bf29df52a3abf051b0a2a9d27f1f4564ae4c329aba0ffe7dd46baa4c7f1f3564aabcbf8ffa99aaeeaf13df12bac81e03a1e7a8742c18363d2b11cd08000000000083150030280c0c07434291582c4c5455720f14800e7c944a68569f4ae328875118a590310610630030004040606686260e2ae03eac2477d0e5712f29808c96547693aabd81644084f94e16631ec0c38273cd98205adbb6935f381bf24044a676431eec4c458834788a6a8c679d6ef6ada111f6d5fe5f26e25ba5624f042b0647c4a190fbdb0f32e222030e0409df09e9ef37d3f761f8e3c64e90acb13e3cdb981d4c8bb46d6d42512565312655a17870396e8ffba348be6106fd52fda1b24277502c056ad3aa7694d65cb93a5731f5fa34327cd5b79b3dc617b13c203aee6e000f6f17e745d6689443a0cb42fec6d080ab6180901170325ba6494332b552b47bce63d484416346dbc6bc7ae4d59e45207ec1c5bd992978c2642ae4b3263dcfc8e84979d53bbbf9b93214e966bb0d232646cf42130b5f4f0806413501ba52edc65ddd9d5a5e808627b9e5878d8dbbd7006e9d4a4dfbf7259f361376a70f5279ba7b243debfdf4fd4f374fa4a73d99ec9fb668801c8566524b2a792dc6443de0e375bc419408eb97ec1c7381e904e50ee461f6646ee1e40e92dcd1228d20409fa5503c335205cc4a84256805335130964e808c8ebb87f972a08df84e3775a03fc1dbc8bb6a897aae2c7f10e7899b156259a3913e523e027002212ec4892a38cc2882a55ea57e71e8057fcd161721a41d5f0b9670c85b529ed1880f550b387f0903b3fd11d8a482ae672f02a737c171e0c8f5631bd4211f46e9da444f3410d22a2830e8cca34e84c202d5d448f0c5c649b13fc796f0a1802f5e86559160b9baeb6dd2423b150549c28aeb0717c09f4ca17f54ebf69dcd700502d23a6f64b9a5a9466a515837b83cdf1e1a16bba1c3d6964b092ae1513c2fc18f846bb284bee0034db878e22600046dbe1b4e91b22bdf56feee2c06d58d46d310ea7306592d875542d116d765d150b650e32a7984b4f04d32d354c15af911d1a32b36601e31914bba837e14d575b457aea8a1e70714ae5d2784e9132d5946e0141b53d4d5b45c2a007e74b94f841752ebf20b65f9a1d37a61a79d3fb1326bebb43607a9e50291daf02b5723b00254c60b023cceac96acc5b2b08a88ac0b4f439f44c245abde1404701b839443a01ab6ac11b94eb51a4d4768a9e89cb46961553ddf9b9612518d7573ad2bafa56c03cc8c5579c9f281a735797cb16c9e41539fae6ae10a2bd45b835347d9315877b08ae2a8461f0deddf4113f31f41de7c5ba68beeed145f57360b53803cb1f28dee45a0d138e752be78396d8975b0a277ef9fc15ab84168ebc0f01352c61b3022984e46bac5b2a64e58d5f19a45e32fda4e527cfc84767d4476ea1e4073db9f37b21d27f1472316c9ed89f8513d219fb55742bf1dfb39038e0ad6cb3ff78cc625fa2b48bd3f7d2d996a7477f84ed6186b3371c4ede8577f2c803b46238432b2e784e232c402c5731b79dabd6aa39a47283d2f9efafe1a619de3ada0a3a4247900bbc38851204f73664e8462ef05cf5f802f6b6d8c054dc47e7a69f9e79554a4086dc760ef5f6579ceca38f191c32aba66328b76a550ac62795fe82f92484b89da44a4c47a3691ac30865851ff980c2540ba06a8e4f7854cde38bd1c48d2cb021cd2abcb0ce3dca2a2f387a8c40b3069ab14c5719dc75c9a57283e597137966ccaf7dc048a55e661399c476162500fda120578e885caf38a071a4178f5924f37ea5337950a35580e35ac444d3e23edb2661500b32ee951a3f85e59b756c7a4aca25286e552c62c53f64ca6c26cea78e46e862a70d62bf04a5520ed523a27295a6cdda6b5665a370c8e5680cd56c00857468814752072ba13d679832b06d1bc9da7690d56ea1a866bcd23620d81a2545c901228e7ed9824d9000735325273d0ec288a3004bee6a71d1c39b76ecd7c14b96e87d4be5cb765ccf08935cc39ca555a07fbecd0ebdd71bbc8d24bd371dc26d1501de96f0ee16e073e9d1a5efd40823b787178f4daedc8e414430d566c71840aa7bad80d315140663bf33e67d5678676b26f58dd84cfcd73b19db7dc567b6e17bb7bf467d71d763760d8c28eee83e9b02d451ba6c3bcf40e6b107e8c5c0c97edb0a9b8a3a1d020f4b34002f72cdf614de685821159c864e414b2ce61782fe18bd84d3855917eec2a2e36c9618d5078cec5e8804bf84f64115683f0c13770d8048ba15481d841623c60c8b46ad1998c16d2bc04409e0da208732512b27418060e985eccfbc41e1446dc6047903198541d465c00e1187366ccf4ad5de3c626975893b1ab1b2307c286f72476f10c12183e29b189879ddf98ba12231a4639acb223384a3b743e4ac9a1be3a13c0f46bb604a53a454afcd1d44d85613330ec0d83dc01d7cd176b771886fd22bfd84187a9ae21cb5512ef66dd2c78037e5bdf621b5a2746931a4eea69b34a95884d58ec2808479448b18d022ed763caf4a9f4296702746527e6d24dbe3aab389434772b96b91ef75dc7cd2a5d9707f08c5ff397ca8926585c51acee4557bd93d91bcb1ec4adb093589148bcb36173892416dab63807b4cacac24dea76f68dc8c94f7075f54ba4d7ba6413e9e254c22362906baeef3116e37a738d5aa1d1a0cc7e2ee74c96df56b6624dd313b0725384c5cf9006a4b296e0cd5e3a8719e227fabe30b05b56df050e2e461b22b9e1174ae0a941edefec28140038b8336198c7dcb4072a1728706dea2f235899b7ad4278c3bcc53946212084e212e645538bbac4fefc40825162184c601f04de7f78f8949b9f133d36a5e79906ff130526775e032acd18c82efa430ad454147c7e295a0eafc4512d0d74222b4a848e9425abf93b14190916c73b0fe2e8f0a9dd2094212df4b12e826512644256a0e4b6cfafda97b68d7922a524bde9bacda9c2a1ba2f91deccdb2d37abb3d20de7c3cb2906ffad9726da904b83cf2f37fc0330eb12e6321608b8b857719e6734e71af8e7ec0bd9b7af7ba51f99a902340707622db80726d08bb76fa91c4cc2a3121a9967b4c94cb2f46816b0f80dfba3f3b9867ca0200097baa0b0bc5007431ab3f14511e6497b147dafca0eac21a654a32a7dd7d08f24eb995b64bc174b5e4092442679c6333a3e2671690f9fe85e0e39b08c0ac3eae94a0865b345f8f9a80dcc69d72e2cbaea4c0df28a4907ea3daf6a02d71c81a9d7a54d3968fefcc688a5d6503828b038ea44233a9e3bef656ae38fe62e6d52c64ee1284ded0d9ea0c44165c611159e976bae7d10cf3800190a247b1ef2657d7915f2a06ce1275dc313c78c94abc8f05365f1df7081a5db9688208485d9128dd8432d6e8e358369d1317b8f2eab914978276675f439e6cea533101204989a5613e81a32af64601894a1e6c3c536f411287805e2b02649a71fdd4d824764aa7b4e3c2ef85368608082a6bff6ad86317b1382d804b01bd2770bbf3d127e58c3a970819cc818c6eea3e85ad2a9307e8689e2896129fb9ca5daf8cc2ab234587d289e458ad52de394eb4a39e6ebc454d5c03858c53fc5e0a247e6360966556e7d36adc1b4129aad81845ed3e69e258d6e751495ef1f07803bf8370e8474e67e8b4a97781663d8c9987947f0e6e1f04ffd71dc54bead9b9ce941c9fb17365e042ed20aadd040871ed407f77e468c0da2b5fe9c42b40801d32d449867c7098303b10c3c032ec5cdec1717b0578150450632e936178369bb62680e5fa449a489395b71383e3cc2ea69beaa3675d0c63999e537b6b3a4e31a5f710a59fad2e5da0d76bfde5fb6e7019aacfb16d6310ae507f27e3710da33d018e652db51968ef62a2e158eda814b9f68f3e21f24e3010c230fcef410f313238f7c5688d0e40b2ec2c05d48571937d366f8e2c50e832d4346b4467ee8831f97ba78f37bef8aef445f8fa514a0d73b56837a425e379d102988ab96bc8dc8e7242be1faebc05e8fa57e8b27556beb05c54a323c43ff6f5f34785c2010c623883efd02f240e235c073d6755aab01644837b0c186b4c0c941f9d9badd3659df0374090692f7b16a05168209c12e48112fd09a1d0fb12219c39b6486d02d2b32eaf1991bb745b6871224fe819ad12484538be0bc648430cd61348b941173e1b1837669c098c700d20aee81c5e8465d7085ee52421fc4e09ea8009ae7591a7ccab2a0bc8bbd9627866cfb2253a48dcdfed12bed8cfb57c03889094b75933fd3dc287aec02abe211c686c476f6b2cc96550e94b6fc18fd9a298a8598270598e80324f1c3be5cc17be8943a1ca3e8291d6208edf324b11bccd7302557f6361a1454dedb68eb2cde3b69b65131df55682c98e88a4391c94c1a736353660680564c199099c5eb6c46bffbeb5aa832d87cbc5806947fe0c70d704137cf07a8af5f6c9b004e1975e96670c9bf3a6738b80d4fcdf5b184318b7eb789bc8781929183a3169ef04248bd054c88409bdda0eb8a67989370d2aa78826bea4c659e6464fcd1002e175a9b267553175968a2d80b9b4b9d0426835214747ce27e0dce6657f8d8713f4a594eee2b7759b1ac2d8342a3bf8a23b6ef81a967c804299890803d301b1e90448b3a73642f850af39a74f45938bce0f1d8adcbafb14923fe550adeaa8a24c054607c4bd6c5ffd40b5404ab9304c52161696a2f7dfaca283fe46839d7088e450da0ff683188b24d6ca56e669cb841dea630a59b4b4181038e25fa91ced8693c267f19cc552e82d9d435c01aa8d28884eb2129addb2a159c490676a9b9e9b44ea0b8d371958fc3261826cc595abffa942012420f7ec5a90b7370b790eb7421a5464362e9ba144e50cc4f7d5be389c25a80672d10eb13135a787a0b6749df02fa369015aa0f3c87f75ba874b8d67b23ab1dbb532f3aac374dfa9039fcc6e54f7e073b5416f4f84aebc0e97b4d4b187b2c620594a8b849d8078a85847c26be2939c43d2c9e187d295f87b6f50565ccdec569d04b30eceb6ca334b423a95473885058ac5faf8f84ed5affd54bc713520827c0b8c185bf137a4d71d825daf0094d71299aafa54285b77df53941af0bbfc958baba835a4049b543389d6e79afcc1aa6c8c312175c7b22fba5970941adf19e6f33f6bf97c395d2f5738a3346476b4ca5aca79df16aee1747585f4d95b29bce4c641f50b6d273741c0b5c76591d10f472c94e414743356bdc7967d0fd186a7668e79b41a3aff9b83ccd022fac2dea41472735ebdf79f9e8fe7db3fb1d2fe2cfb3ff2df41332379d273ec2e85c53c970535a5345c6c8c7d79c6902dafae938194609143625f63c3c64760ed04836a69dfbf9554b22b12811e2c8bc9d027bdae4c729b17dc1fcd40bba9907ae4c9160aa3277592a3c8c9ed19b622532f4ee6de1c6444c06f5736c2a75818167b55da7cbf10bacb6537b039a1b4d7cd418b35195878c6cf34ecb1712ed371452384ec5afb338d83899dfafcd11ee8e1752981044983b2a976626a07c325d7363ec1c4bc35b4f6a8b198cf2b334b2f32875a1824a01d8bfdad9c128f84053f27dca691b66db550ec1b5378f7f2166de4e92912cd83dc4fd55f66e3c7ea7c86610426892a253e80b291b8436cee5a8dcf81710beed7f211a47b7617b731d528c02f3f936fa53cc505a0462cd0b69698f69acb3cb86eeaa09adeb9ff01f44c22c77c552525c432646195835d960ea3f66ec4877ad935387cb191292b8c2c08ed6581091846e1ed072be47723882abce30ad1f9f964c7d543ffedec81e5c705c48b743fe72c30997fec6f79bf9e13fc3a4ca348fa726cca203a3c29cefd5b53056472fa4b7ed4b9fc6d858ccdcbe4603be1105d26339f8aa48b0d86bac2f96238be4c5f8e680b40cdd4b8628007306f55bd098918642694d65c4e96f426a6338346e312ddf0c26280f4dba16a921f0cc845c6623bc4b8e2a8c4f71b566e338ceae1841ddb021c9c2e85f7c547757d5dc88eed7d784fb21da5bc3b83d3e99ded34aa332093ce30d33e640388f20c918ae60c3a415031a71584d4c56ea1f2c5a99ac607b3715fdb37873ff54efadaf773dbda6d5be54ef5b576f4147af6f65fa66a60ee9f2f7417f8d58f5e5679cb2ca6044fc306cfa04ae55a9baedc69fdd7eab539a177f31a974132a0f11513217ffc03d7e693fcedafdb01037cfe3d9fe3bc57d8f444381d846aa18b0a6920c7c6829c94462a3c68631d7668b67bff85842c7362602286ef25731a6e5f09a03f589da723bfb6aafdf769d8d3089a6361d3576da7a4cbc32942a7ed81077c630a24640270e04a947582ac434366c11b4ae237069642282cc505ad5e43fda8d0065c3f35c7e9a789319892931fd0fb19e4d2e488d01bde8147f1255d7c044fc3d9d0260c532bc93c846fce343b2e19bce85145184b3ddfc8c588993325ac2c97278eee8dd0ff9cf79d379c33d127d2c75783d5761d6012ca4d69885b53738895f5a33bb1085e24fcb1c5dafcd3c92645859986589655b7345666cc72b7e4bc4dd1a4a65262b0d1c20e04900c0412bea4cae348e59533bcca06c77018e50d2a8fb6e5a0b3a17ed14e11e71a4089a93e3f814aa1fa47040d0ead01c0131e4be4e5accd3c4134cd4ccb3a8e5f246d4be6c8030c853fabe6c92047f25fb60c2fed8d887f336c438bf24d522484b24cd215f023e38753c253f32282cdbea21cbc6696aa8e8c14e5c61743da2e3a20cbc80589c737732ab57870959c6e0d57964f48048247be2b5d1a353e9a9b786333a208bc2eadba81f0812e27949542d69b63f427aa7ef742e5f0906d7cc3a04af30534b98ef1746df94ecbee439279c6fafb3f4cb59e21680b4bae64c960bf46a00ffdae48f7a18f6e7caf544d0b8c964f1c1a4ea15f935598a91173e14f8f171e064d5bba53a874221298559b102ecbb904938481378afee431c3e5b2b75b29260d2466a392ad53ed9d0c0686af54cb3052484e10f514ef7110582b6c6e0ede92f13365108f4b660ba05b3a36ef4239cd6743a367c17b7f72aaae0461d2f3df3a31c43951833c2f6d419269bf8c882f92cf1f718c95128431dab601f27bdce05797d5dce77beda59c441844123565b059f34d238603c92b335376c5bee81ff8e59dc90806d6e42dd07ce14b4fa214bd99689108369143b621063a7b81b868d4d94a18597dd1910eaec6e56031b1ac07e33ad1699b0308eec59fd592bc7096ba1875d211889ae11fd727f653dabe62ca3ce703faab2a8c005d17562c82bfa42d164cc83ab8f0afa7eab31ece8ac1cfb56596b792a74b9733b79d4b3bbf262db0387b78abd2fa1ce2af234976928b4b4b780945520dbdf3cd48a888869f827e8ac3fa6dc8296e8e29efaa21c54de9e11a2a94416b9b2ebdaf464f61c5d299d7469ec8521cacdf6d98e4e4216c4e174a2f62dc023b6fd41585519858cfa38d404fcf016e02a9fe4e7c95958edc941aa6399a283fd9432f1af251bc19415ffa0728db240cfa4009bc0cb67887cda19d07f49483989f5ca1f683e829854f591efe28cd98835198d3a76cd3a84a174cb7852bbd22a40f6bda678c2917a915f967378ef1631ddc90bd060de75657605b098411deb1aee36afafae702a6ef3594fc7c7241648f8005bba22baa4d20193fb02cb73fe764aab2e408dabc2042d0bdbe4f834e6a71f1db4ef39791a59d391e5144e644b290849e4a3f1862f407c239de4030a3bd4ee1b5e6025f86ad6340c382ef8169862938c193794c5be7eda9c877d6b2860d04d36134affe4dc7e914fcc4f05ace680f57a885313f357f40a5f949d696d5cae3ed3f9d9d3820403760ca321f2936dc1f462267280181003adf07460846374ab0c4dce8038b533ec82fe07f0e51f167083c2d810867f03d2ad3a172fdc73b1b60440fdd72b4006d94137e80a1d11157d95d43935b7ab5f3abec6faba5e13e9a0e7236a5bc702440f07356a03fc9a40d67f1e4dc22228c18ea747edf08fa66edce03dd39d8aed3c518cdc0e86274b80c263a71bbce2486a52db288095e225359f7603ac3299e0258442a426f37e11e96605e32a70fb3dbc9bc5250f480efb683ea9d93db14fe885b01e6ea3143c8e011032f61d815d839a8c74e18db16b1b0923a0017c4db6f570317b016de87a5ce7fa3677e0691f34c8f83b7ecb3ab360d830db5fdd3e21bdcebef1cad9f5cf6b0b9e39984d49b83405f406c1c31bda2d922e262070a467ce3f26d0b60f22f0f09d09022bc21da8605c94dd9b2e244008027a3171ba8c0ca6081a5837b01263428c1f05f1dfc3d03f551fb469113010d2cc679ce989fabc6f9697ed56deb536d50dafd19b91a955a1d004777795a4416a1342a38991d58418aa465bfbe75e4dd30584a15d88692b09c43a9021d7fb1f8f366b548e399931fc1c3b320ba497e35e5297712ca458aa86d7c01f30e5c1d945440c38fe83137ae60c788bad68cf4f91aa125618f13148cb6d023820a5916b62b8aa0787830fdd015ad3d16a398626d9c31c511246c515528697c7c08c7b9cf8e1768794ea8351b6e872bd25230ec120c13afa224f07985d7ea89bea49a4b4d4cd47941281e6a8b9012cbe0bd3cf0f1d49a5c24a0c197acc3ce7370c67042b878b2b29167d3c8185c99d16c9dec4a5bc08337e4cec3905430e634c9230d9cde22476f2f3923b74cda3c6af8037415d09a1cd64c22a0e5ef3586bd11059a3d7a88076885a40c67699bba415dec3d43e0396f6112af00cb26a6ac801b9d43c3fa33b1ed85583a77f7b06b9425d97553a9e2efda10616c10dd2a22d8f3f0ecd30f018a2819b2e58108c491e73e009acf006476ce83b8ecb2d5b393925ba22383aa7d63fe744601c9586d38727b888eb65760d940d7a5e32449ccd36725d8806800559b3bb78f1a77321d676cec25013516543076536a101e2d068c2f7e5cfeca3c4e1e979ed2086ca5bd335757a3ca041d5e6586730bb39100f689335e39354cf99f2513127dfcba8f38760f572d369eac0c96480ac7c9d3beb885e69b2177014cab24c9548b99076b6ddc1b657a147686009b9abc01af8465fb7371ac799a1e0e7b842b0e54936fde2f1abf1e19a94185e414657775b3c982a9d1033afca2e19a00c7028667446942c3b63e4b864f674f8d3a75002f4e433be093676773ab92ef414f699ece91570dc5336f4f7a1e14d9958e22026ef8eb1e4228c1381c4658b6ed0797a751112c53b53d1d42f52cc7d2053779ad4854728104fdeae6239b3a2acab1d36d979cfab4fc8c1189edee8e771cf97584731c9fd48d8037afba393c272a074ac61de325cdfe42453c85a192cc07040ad7a1eabe110410632661e023813f97f75cb2937d9116aa5aa3aaeeaa749d4b21694d9e86b1f65245e898304b630167eea463a11759f7841eb22a06abb4e1567363b52d70b8316144eb377667c93846499d214320591c6e1aaf6c684ceb2b648a61ceb1d41f759f225a44c125f9241e153ae39cf966b0732affbb05e861560c65a6e4dd06675f9ca3f5a63a5358d15d154e665c176601187045d851187e7a4fa4feccdac81115df79c20ec785d4c48b28d3edfd83135edf912446fed9ac75230b58ecd42a2b927b92b8e8ca7b202ea82abe88a7a33e223d7669a7178dc183825e776e7b485041ee14940ef063cf652229310d1c2eb19e603b9a773316b6f4c78c1538d854f711a8af0b3e5def759c28c76312f40f8bf938beb691f6cb2511b6d8298aa88150b7a35cfea47b3cecfc26317159e4cc8c0c7f1748e1aeed1338341f903712d651ef167207748444d2ccce384280b7122ce88c24e90d3af4186bc4c01cfec59027019bbf321c2da587aa9bb1da8b48767925272341a4c54468c3c19131d590e350c26f7043a426b05010e4f99af9f21e10c26771eb0c9901db00c48a81526992260a53f39c061c81bce61f6597f9cf1ce67fceee444969be35d5da882cead451eaba2627d5c0acbd1a85acebde0855ae7c7a4f3abe63de2c547e56e36cd5a54f08349d589827b458cf09c31139f33050cd237a12c19bc7d765e7ca6507b462e95d878d3b32ffcb2ee4b92062bcf427f6c1fe0c8b39d5efbfca5b05af7257fef38e78ecdbad761ea3139b28d2c4be4064cac5dfbbaa909f6257fdf2a0d4949960b85c71a8015ee68e50a371d95965a82843206a4d3abf17e7449acda69df2bbd9d26adb29031a132845844cce75d25503da6020e81907787b631fdf0a491c8c689782630f8c733d6fc77a025d60c2970be1bcf520e0009d996d939c12e4d3e5bb2c932959e033a7107c573fe7e1e451d41b528ce7e971c6488c1b90d22047341e29911fb680f6f217f439991d20e9acc0cb3421ebec28599b305f0fa35f1bec49247e84192a92e0f63ecfa506665ed7a84039bab9890ce85717e698161c14b5b7bd6b571dbf5228e436f3f42a35debc2527b65d054a067a3ff34a48ee3e9cf78935ba4008f993dc0ec241838f29224898b3412ab2975a8fe66534301fb0e7365d2f544a2252de1f00f89f93b5e82738385ec665405aeb02ed190aa51d53d3faed64a4914c4ee1013d109db1109cbe338479e3be50075f035bd6493b5eefffd7f95a64ec19ccf7162548a89e3b72ee12e1937332de12071953f5c4a4b1194c9b61d2e1dd5e09b0cb9ee3a3afd75e4ffd73c833860282018af38c7456cf09382798fbff6f243f9bfedf62b0a1a3c591dc41938a27fa438ddb5c008f4148475de0da7d7fbd8a3fd3f45a6bea3d24af13dfe7d369ed240991020e15d6be0d0fcf5fceefe8da669ac9f81dbb21a06be7e2a5d2a484380b99fec9bf4b8bf0afde7034d5474f36865ba6e649478df88622c3d740c6e6e6d64a0ae669590bf0ef96c241f1c6e3b2cc60b3e5a105c99c365ea83c0be2d26575e1eb82a7d60cb03711db344ec28d27c1d4087d0bc53809044d0c8ff503dc2f6383df26ec3c393737a5f24928ec8f863832dd216c1984139c15c1ef4cd88ff2c56b85d0491be26ff2f167ac02d3b2b6c414e0e404663b452c2805560083264049aede5d68f0fcfeb4894221fca9d0f847b27e5b6412fe1c608e2fc32c52169769a8680703b9edface4159cb018602f7016f550cb8378d83a9899d0a500f18440d3af4da42b9feabc886f851b45ab59324e9947a997be46e18494446a484df1c1c1e70b58d4109b96110852732c3bc6eb223558b3c56302acdf75003019e1dcf44ae6ee346e969caa8f888dcd87099062060b2faa8ba8af04e025061bf9216ac80afd96322d1d633caa224cd8b549dfa942f763d068262565f23e2f5255dd3f77885c2275af7448594e2d1a13a996a8e27d91ea5cb45018609ab46e81ee4faad14b2fbc0d75ba150a2b1b29343aebb08f9c1b09f4def06a56ef96a0600302be9405c5f8a4ab2873e1116af7ba868ad6f4fa974731f2ce94b66751ad9699ae912f8910b7c7757f22edee001a16f8d4c4a80401188fefe28824d66ba76624966b3c8a1fea07aef557b26ec5db0683d892de01ffe30579d698c0c8ef4d90ce01d43cac16247d327a40c1da88d5ce4b1b3cf977a05dd9994f44ee7af12fcd825d7964abb93eb17ff93cdbbcb04cd0fa97f0e3c760a41d481c1131e81b591b26d280d2e5b25fd4388f9f256e0f9f8e7ca5b20d3a7e2129f81d1a2b4e07a76a9ec203cf2ed0816b7acc10eae731b3cf3cc7d29b03ee0cde6245f5fa4f070b8c98e85b84cd9e9c6faa19dd7c96a6c31d2ead36b3eea1d037c92903e03edc9b7ca9808952ba2dcb42919601c774f30519fdc27088ef3f12200381617460e133e7927e242ae6e96fe489d2a19f0a993351f2d86aa6cf5eee8bb1240ae0bdd2a9aa65b0cc49d84be09b0c821168ea400bc0c81743c19dc9c5839989ca90b744ffb3801e3e960ded3e984b124728245e7f6391bf60dc40e6b2193fa9db842fcb427cea403ebe2181f31b664982bc77c11270780d9f4ad4aa7c2e85e95f6de11d49e5745f8dde33a4c912105e1cc23001c7e276cdd6b726264591b747ec3d317c42f955af3746422790126312dd3d55cd8b9b9baf17a824f66ec3a19d2ff703126a5ea775fe79524a10d6447449819bc0b343d25ce827cf48ff6a810714c0927ee8bda283055395d5e8f01ed448e0b778d510d7e5e8e30424cdd769f825e2ea2793a926cdb625b12fc2e2127f170d908e0d2a8688e806cd185d3126d6c4a522da928051a73e341a3722b453ee8d50b1efe685043e2b4a92cd166d822bf45be7929fd62dc6b6e9c9727a9b7a59d83c909e2a2ff0fd6485792193d66214d01c48de8c48403e3aa258a203fac1628f410475976319e35bb429dbb57b35935012635807b1a5ae77c6248b56c98b5171a0b80dce3357f164400e82d761ae8052626684b59c7fed7fc8cbcb3de557cb238454d3bcde872fa777a4ddb12f9aa6bc4d8d9d0eb885f0018c10610dbe90a1882d7b66b003775722c44806eb4b02f24cc4413fee6e1634e2d8542fc910f7b8ce842a2c585e0ad6d92c09a602beda3105603bceb7fee33774102b01f57170c83051e3601bb33dc73a700f6124d1b08581abe4fd021cac8a30f31c59ae58903c0be1ebcdc994f1299d4d773aa2ee4ee4e45c2ad82a730081abee161bf116004ec460bc1e33dd3d33c48460a2e84cf79f2bd52d1b53e65b5cc6b5b5010ab5257570b18aeba8f2509070440a057f1d37e7f94cecd017110c5d372e96885b386c72b5625cde42656f550641073611cd5c10def1f8bd0ab13d938acd0bea9a326e0501ae702d7916af97824f093dd22dfb8102a88c5da49cedef5862734e9a2d0b5a8e50996a351f976e99a04241baa24a0c4e202b8f57c2671930f2900beb3a6132628f4c2cbbbdb50ed825a85d36519691c671ee160d8d02261eacc6c15e0b4bb6bcd732fb338d28048dd0e151ef5a8c381e6b8b65aeea3a3ad4746f16d81c5d60fc5bf5ca0e34fa0a395ef61e97d0246dc79c0ea0448c3f1c11fb1425536e105eeeb64b33a414296b2e66074079ff6713a3fc9da8e9fbdfed27d1b7b57390fa0952d5b70e26a4564fc7b8f30d2ad32207909927a033c939b86ac16fbf0c4f87885727c57b027a75ad92a11c9b0622922ed7569830743e1d3dd0017b1205ec48229b4044ace4fe39ec5e7012fe35056c08a7eb2aa9e881818802b2c51af501276903b1260eb7f295410fbf81236bac4b500008c81a8f02abfec9b4f8b4e3f3ef5a783d4a10b8d70aeebbaf0dd2b4026a9e053ffb13acdf774a5f5b81da997b98813fb0499786620430f1aa963fa4fb246e8d521943fee14cdfa56e081e76470c9892c0a66250a0fe0ae9e8ce412b02dde10a5a0c50ec1d1db178f7561640cc375f806bb2d3b480836dd37803c38353b0e736656415b755c1dcaed4cfec1b999536335a30a692764484e41be581b23a62a9e4f2aa646815a42b0c560cad0f7b57857f71f0d56f05b487f4bb43f334641ce8f8878373e36e05c3ec84ec51ddb9d90f5feb74213ef2b6c8e8860481396bb7e9394797b32004beb09f8a7143a3c2e3766efddfbd3edff98ed4a032ef22383f26f55a5167b97644cfc4afe48fa39b6aea1545f5e25ff7c86cf9ab4c37108e31bdcdb96029acacb29e1e95321df33d79719687ebf2b0fe2e872800cc633cbf76fc47a43008a40d2c72e20943e3eb0c1f366f6f3ce34182d52f222ff40978c882e2c5fa0c613dfaa8185118c2d356bea611fff0fd85875d6799cd5d715fe582e2c16708a8085b949c5293aaafa3d7e0577a89e740eed1157b6f4036f7c742f7e7dd3f85568ccc1bca3c2e181e709c7598cb74cf664e31bfeca4933fd1e376683d662559ff69f493283c268f17e33f8a5b6251aed2ae77e61cdd4e7d1a4abd123758aed3399a92cddf90cea29c1deb94730cbee79e1da4767f156b8c7d405f87167b07cc3133c0dcf524e74e59e0f0ec7a84aa4742fb869c99353e65f00297e286dba071d946babf06963529677fa031d3ebd6476a9b95a4a59806c265710ca6b0df1f173a46d9da02d1e62ff4be5b2520b4086ae7b268d003ea310061acd119afc9b0f069afcaa60361d09e98cbc96d022d4830b80d5e3960575c01ae3b9dd7dd61e3e37544d63541a6f7e42af8c29f41343e0edd35f915c86bdf0deabd6c0eb4d96bc7f4feaa885825618ae56b72bf1983bd8b4a3dbfc2abda0602bdce6653424424c63436e8b0c0b9f0331a4f209115c0e34605cb997bcafadfaa8671b647df3e92f2ec7278568c0aea25d72177dda98ac3e69dacaed46a24013ba8e27c341d798dad00df06708c84f6eeec9d6aefde0a872dc893ad0b957f8b4a9ef42590a739250090c47eaa6fafa58097221b4cc5e19007083fb717a445f0a7ed85651d4145573c67202b1f5313241f75ee2243191dde7e8909a4e0e1635e4cc0796047df2186188b94ff9949036fa556cb91a93d6a5dea552caddc48f26e43bec4aca8e681a8df984654f331ce208036e3ac174a8c381e97da9ac7e60dcbd8f5f80cf145f2eb1d3773a6fdf416c66276eb767aa7f4d7d7bcff4ffc85310aec26b109c37a540df225daf8b3c085511bce0effd3e6dd14f7151a94f7bbda212eee8731cb4394e761f6d5c71110baca0e03e00d19199eb76500a8b1bada0c9b8d7df0bccbcbc9f3aeb4a6ef3f571aef7ce2b1499eb7fd1c9ccbbf9db80aa7c4b2c211df3ccf0b196f0e8edfe3d29fac1445e36f5510d4e7455f999343e0b0c60241ba06cf3eabbae47edcb9614129878dc03723026149810e00e4e1b44df9e28a5ec8fda6815c1d11db56871c0f1728dfa71a9caa3459da507af5a37762aa1590fdbb42c7ea3710991920f99933f8be302000456fae3470c2c97b4e236446f8449a6977e2dc3f836f8a10c13853b07b54e9e6fb661f42b6d7aa3eb9e2038b285cff8ccf0feb989fd8f64dfa52e821b57cfdf8251f5a92494eb67ae92225e3e56acf24652a0247622e419ec38da4a693b9f93931ae6afba817504562b6e472e7fbe22aa66269d645f811f4423b56ea82ea8f3c9af167934a78fb8197a49880daf3d8bd6fea54e7e98284bbe617da8e284242e277c35a1085061a37daaf20a5c8850c054e51c53c9f45ce34907b078fba74179b31f69cd3da6af2c34c6670ebfa9787d6d96d158735d66b636828b6bf60a596ee0fcefbbdc8fc4c1a344cc233010789337dcb04f47aa744dc40a4028fb8eb8a75c41df8f457b791a0bc0e4e1a96b1e633ceed1d0506bd3897c09e198477c3311ea193f8d000c0fa18c851fb760225c355ca0bf7e51139f1dad982a60237d62e4bbc77b35a32906d24a4a3a18317979d304d7334e33644569bcf3604105042cfdecb29336ee5084f3060adba33dc1001f6cb4f15a4b70b54ee0204e312aac3d853a0da904d43dbe3acabca52baf4e6bd49dd7210677bc67237e8fca74e6568e5ca050508a8b6ad34dc570f8ca7792ad2133e42d30ae7ab12527c26ae3957aa4014e857fdf6bd053fcd27a633d030c04f4835fef1627a5b242943a2a6579afff8ad114c9e16ae7874a3c592d3a95e5248acbaeb14e9b78b99bbfbeead0d32c86a36a6063c9b86f32f77e2997fcebf66610c9b5ca823086787597fe9b23c9e8a3c0e1650c7f0c5b9fb09944da297eb00b2e95be32c78d6b1ae20ae1d6626487e3c077ee8f730136840d91ffab690d1d4429e99a4d94c2786f25908885e85dd9b2503f509ea69116d969ba4a88312fef0922598370090b8cd0e45153f8bd9d5dd0a482cd3610334f8b1069ee0e52e50b4b2c92370a57313b34b37d9190bee8f807bee307b542a33378f880f0737e9fa5dd745353c7b7b87e760da958a86115519ad1cbd34f952c3898cc475c60cbca25b08f662e97715ea2e35be61392cec500deb5ee86b1f6d95c7334b205a96facd48cf6a8f8ec7c4fc5e00934bbdea25e1a0c59c8a2ff1bb71156a6227d9749daa26863a560edfe65a4829a4a9416796ed614823be636ce6b22de29224eb2369ede98e743cb1759c2ed13173073b93cfca0f96599049e0e9ca0654672befc20a56501243647fded30983541a6f65267e356e0d17756cfc43bac4944c89524fb01fda48a14b20b97534049dec2fdbc2c238ef6e99655e19fbf3a68c54651f519a4e1cc731c61ae427482e613d1dc7b4338177a38a574e5f0d9a882ae49320726cc8aaf34e920ca6095ca4fe746d1ed0f0050ded75aa606c84fe81a1ed2bf9a4bb070492d29b3f0fdcf550bb15d05faad8df10c3a8915a46de28c2595afc122963f482828cb9b9c8b434e89489828b63aae53fe15aa6a64c95d766e8c9ce898dc92c5daefe922ee29c6d093f41895562db6ca33835bf84fe24fc4b44ef8cd725b674082f2e3ed9e5f05fc14ff61cbc39f2f231cd8ad2ef5d6c596279ab75423d9b8369cf2855c9d7a7e403f7519a83c1228124ee070446c257dba5b4f7ed6d7d542cdb4d552887ded2e064d654f162ca4d69cd22bbc00661307d6a646cf49fb0d20d7f7a1ab526cc5efe7d310460808ce2ec8c79da6ac2f528dc9865fc9c153ba3a538c04bd9370f40ad338d37df2bb745172e0a3e3902e41b5a9514fecf4f9909a87b108f19a1127bf270478600a38a1a43a377e75125ddb47d4b58d73e9ffdb87bb2f098507c0f7bb224128233181a12af49df5943b82ebf491f57362e303e537f052fd30b7a6980cc46f31dd8564d1146da0b7d026e46d6d07afd75d7f9f667f5b20d425ffc791ff60a009146e7b9ef20f2496402d39577ffa343203d08f21cd53937f37003f3b6ade793f9895e69097b1557008a882637de66d81ca2b6a1b99ba3e111380db052e011c2569626b001b648a268133ca337fa89118ef0deddda0700a4ce899dd41b09ff5d5264dbbe283f11dfdf4198d9ba1eb5225c3587e205d918410718acf08aed082d603832734dc77fc17767113d2b9603af54a3ebd0cc1186b4afcaaa02faff40a9ec49f82224f042c374647075f5e032d32aefae23fa0c7c0da53e621bd2a1b724fd268b9c6f044cf5df0a792902fbe59c687ce3a1ebcaaf83d7b9184b016b6f106ee8db457c103b1de291baa8420403efe4e0f1985bae8f71accd5f4a9c4d7ff47c1033ec67072708f8eaf08f0ee128c072f198a3a011360de0c014717b3b2e3381af50978b6f7720cbd4549fb723c2a566d3dca2941a88de76c7f612438e65a885c2514389c377137cd6c9f8272b80508aa809eae6a1d1b8893cbe9ea15ce10a4b711cd1682a67c828050da9f19313f654951cb39260f53b4c7b9988abae42f6c4eab1b4421ad992bfd294fb186d8bcb25d646f43a5d96aa455c9afa3ebd1fe621959080354cb03d9e9838362fca016235dcb11c9c5241ee2cb6781d7a5eefd7c8495c3d662b40c9764245cc6664dba40c58d5313a5ba8b548b3d5a02b1e90e0318c64b9248b481e2e566b3dbd987a26092bf4edf9d703796bc0e2a62de459a8251c861ca4f78eacc4c0e4a696ee2fee0781f1519fb1e84932a44c76b9109d49198d45b7de965adcb78f07ad4eb8d4ee5ad55d60a9e588a985ee13bd319346a7c7ec134ad98405b347460a96044e037f9cce344c3ce56bda6e18328d4a67cfc6137e348ca3044846933310c4ce1ed7189f9c21ad19647c9853072572a3544524be0bf2b7a388aaf39f7d33c023493f7cdc934e5d73f55f22c533cda8c83c9555d9a54ff4f9e2231dee1b554d43224a438f5b283fec05e9f0c81e7efb0eb4f68c45b72c72af3a7c1f5842275ffc863d76478f99174810b965190fad3207fce02546135558098752d1cc793c6e14578af3bf270fc81f0cfef777eedf1451a4f0ab7f82de9cb2bdf5b5dd14803121199cf5a26c478651dc18bec72bb28fb96c3ecdedddcd78a34af9c683d09c9ac0c8097f653478a550abd4d751878dca0593af852f8562e895ec92c9428b5daed6b0917d5ee9846197d6cf60e12344ea3a8a35719addefb5a9229be15b41f2cfa9436b16f6fd112a87b3ff46102a7d3490c5b0c92bc9a48ffc54b2cfb1ec382b455b9b8d1eeb106a4b6f61b608b68d286268712616452147b788700a6492a6f604b9542dd4f3f28fd15dc972dcc594d00c72dcd2503580781344fdf5b2dc1bc78b1f4fc4dc703df5c22c7dc08f002bf26445256be871ae053a037a739431e1800ce5736ada8799f9501cb1c5a3005714030765c25ca0080deda9bb9771294006c1ed5d0b460d72c5a3b9ec2aa06b0e9a1a57e221832a482f9546132ec6f875194cb26a4c982b77176ea14f5736fd036b12a36f3fa823c554679351ca822f2aea238fbd0c2a5d38908a085941785cfb5a1002df5338d4037a5bad0912c8692a732158b7860ee3fa61c48e1751d4ac9ebdf191524e708c1b9db9f1e7d2ef3e41f5f8d7a9826c6888592add8c2ecaaf5ced1481ace3a841fa0b75564694223acf00a871d00268b8c0265259073ea52e841a2dc7c315d69a5c97040509118e2128283c741c17f3cbd090e1e5ef3814a58ca9720ccdedb18ac2842813e5bdb3976626e5903386ddb4278f0dda6036576b370def1686035f04367ff0c33b410b347210179558780e5fae90ce88382fdf2c063c38dd2141dbc93b6f0b3c4fd16cf4322f72fd7d54659fefab9d2ee139380c6fa0368b3dba793960551f0a80bbfcc0aa9cf309cb38273f93c5f8e3a778925f5b0f6bfd72f061f673884a779bafd39adf24481cc3f18059645ab11197fe9fa9f1ea6fbaf1fef8ca13ad6803d8d129692906ad4e13691fa4304c050a93c84f82c78396b073b4ca2c913b5809262173f877f3ed1054215fbdbef00430868982d1ce01bc5083cbe8fb685bb57a64bff0ff8c0c434aeb37a9692a3270edc316f1083c1689f46e447045248e88c415515c228a4b44718b288e88c61191b8228a4344718a38ae88c5d188cffd71fe540f1e237a56c04a68fa7034849aa13465baad3c259867d4ce8b0859b2e6fa14ca1aa14fca188baebb43c97afd55956a757360acc77a1d38fb7f0845537ca90e07ebee50dd1c90ece71817a2e24644a9113f4cce7fa678a9bee7b0552ba96633553e0be0d313cb6aff52a5975f2428f5f626983741f1a461369de79e99aa0d168e73350bc4866e9649910f026fafdbafe9c0f74d8f0c2461150455bdfd0f9eb0e583b8c7f353f32190c3501cbdcd3c6a4fcf14178a6507c4a74216425525d27d18bd85dc0d43f9976963a3cd5dd87d18ba2731fb36b90dabbf70e52775ab80170dce31893b87230b4ad89776e4743ba65969f55c87091c19b8196c130bab9e90b892758822f0e6a19c381a18d53796f72be909f96dc34de271b05083c02983efae5c26a2ecb8dd45f901fefc5461a7765bb1776e3e8555079b9298dbfd0a931d25ff270f337a90750a85c1119e9b9b0b4c869219db8f42a6215729678c6c8eb19e7723e22845dafadee086f73cbd8ceb6a272404d468215e06e8d09b9d3fa875d1b798db6577c165ec0b226d5f44e6cb68653d235eab29a6fa7104f8fbaaa6169838f14135a95dfda1b5d9b232c621e07b35e2b7f3a83f32a864c1ac2f46399948516bb6fb2a6f1c95855acb44caa3e5470f887ee01e572d9bca608dc5fb83696a54d7327095eaa8e58e0b5c7908318a8c01c2049b1f7caaf3bae3730a95be5364fb7bac5ab477b83809e565a062d17760ec5d7c0df370cd0e73c79fe1441d1bc5742585662624f0ae4e8a1cabf00e702e7afb4b17b3513427918194478b1ebd640a3a8c60fae1b1a6d2e9ac4cd097051ec70a18cdaa8fca140ae7b8f45243c556062445ebcaf390987c9e145f502e9ff30165c589eb8806a2918574ac104cf2f02c3f70337a5443d8eca0d94de8e361b00209d40e03133ab0fb0d0cfca63e371acc1cbb4c19e68c529a143f88123e19a637eb0c5752c9f82558f09ef21716fa491ae182e35b557475873776bf23c3577b2b9e952895048924527533e2e4eb3998980d0f45c650f6704184164530b99c46b1d611180d755757465104fefb4d76bf68078ab8572f22405ad2b1840bed47303c6a1a7a6c957648f7b7d458a6ea133b87298937f8311f0650bcad7aeca0dc5fd697560e20be6196460ac90d534e1a23a57bdaae22aeb53ddc05f9a9171e50b441327dbd2fa9311754724e2b7263107746d9afea31fa1c9c47dc0b416a3bd102e5f7301bfcac2442f208b3c95af24af2a996c3daa6b88257896237316f0a8f1fcd824b9ea83e4e7e3e9e9d4630f1d4afb7a6776db9b7256fbaacb0208d523965945e3a3289d9140cacd08397e91992c9047cd36e092c31a0bd72f7cf7311bfa4b6138211d524105beb177d9b67a48c70c854c2e93ef0cd997b8a541ed2eecb260f4afb4a3591e79ff7788636ffb6418809b3e9f8bea4a5177b235f113b33720316a988ff885f6c57aa07844d932adce56e877c71c8ebe6c4a99679a04e86cad1268df14ffec0a108e84daaf929b09938e670b87a474aa2a76fa2c86165b65ba4acab00e4130cbc5fdd891571df84a532ced7f613c5c9138da08840606ab0dedbb30a60e1e5f41281be15a083ac3bfa1272e3a629503b76eceaccf5169899576caf9b8d4743ce7d700e1414a48537f6681073197ce2091cbb6d79444173f31c0d568ea3ad325bfaa024479b121b0cb6c882e2b77b577ac6a9fb9ba2bab8b579810de679333864bd1bc65e5bb6e1c7057879af76a89d54c9010aa611529ea6e9f2fe427b974f49fee718b268d6a7736cc5e93181a2772eb7e03aef512790c7909f408a7ae5065fcfb4ddf0899e4f349c881729d1c590bf6af7f0c010faffa6ff6a2396931afe5fac763e13fa41d71ab26f38c48cd4f64d1c5b3040dfa9751bc71165cacb66e864cefccb4c71c040c304e647424b4b091d5f5d1d7b6dbeebd5e50fc7dac4e18872c54362482eb72585652579375b1dcb352175977885312eff7a5231cca2879c6b976756a6e09f3d2f2524fe0dfbec48104ba2d63678a6762955b926725f654428d09045a59437c8dd86b3c2645d09d18f0426425c2f6fdccbc90cff028baaf14ed3d0e1d9268827c240e6d5f7cbc3404c96722b8af28dffcb742e822aaaae34cb9532e5bd503a812a21c3f4346b37d26935c22861da881f7ce17a7a4f4063906056bebc45f1931a43bbd3a114e602e1a66076da9bf38078715d67b3259929099c956a29788c2ee5c770d097374b52daa137ba22b18f0c237150aa93e6b83522ee3b1d79444b84d2261d0ad4b9ed56b70cb38d637dd2fd46e3ef1a5ba97b3ae0e0b8e7fe2d5348005f736aa3aa166ec8548660e10e6a257816a0cfcab6b7a86bd7087d6c20ca9c69a60c4ed3680e6a0b028eb9030ed22bcae20fd69acc36da8807813f162065935c39bd04027f70f78d6c27f432b3ad20fdf3f472fd2c4f251f967ca756fd9fe01234015cb4d53f3fd807eedffe5e5175f1ce737df4fc870b7a366ab075df688511656cb1ffebba8bbe009bc958c7d0969885d3e2fe7eebf6274832bd823f6db9081246aa1fe2d755b7b18491d62e04d5951fd74f4b0ce9f1efef906278ad737b87ebbf3bc2096266e94d91632fc68a5282a42d5f1c13a7470e56789eafffbfbb87fa2f74535e192e453528e534d943edb9563f980c1a415b045cddf2fcff2d773f1944a10e2cbbfea5945b58c05135342808f485fd3074a2717c62c5979950ff2f110a8abe44bc445c00a89ba2ca20f75ddd0df4582582fa30cfe027897eb412861bde5963fce9b6e510ba1f824057373fd2779f2cbaba00eeb156964040c104931451cb203c86db26d5b275245141f6bb6e96fe2b0aae04e7c6060467740c54d847e24b68e317ba0fc49a80e62ba40fa53b09b6ac83ab25c3629ace55851dd65efc7a0bb314f772f262c68a7a8d031f1216e212b6a4da2ad37bf41d43099916b090690128e683a7f3d0145eab42cb5440b482f45dc5cd6fb2b9f111f244c900649ab1b51b8bcc81025ecea9a4fd0620441aa6e2e0bad6fc638db8a714c2b18a63c44bede92985c0b686cef10eb280260b4a617cda217d62ea0464d4e2174a74b52462d0624107f51d83fb68fb3ce6b044372af660c2406fb8f6e55546c9a305e73eaa6c07efe3147ca225a7cbbcb8038f74a243e86838b694a2d326b63067a73645795a31a7ffc1d6d32d546a6c5a537c47bdec31ee8fa95d5cfc65d6799fda4935ab9f986cc00a19e531157b477cf7e167156bf3d974aff4e972eb2a1e40e4a3eeacf4193b6635c9b020b8ec741e9f44e9d35884d21bc3f53c32d85be415ebc0394115e9797e0d7846986f0989565be29f191786abdf7938d434f835c59777e01b1ce068ed3c27af331d300bf022f7f8ef13b3432e297bb08ce393c1937d7f0dc019a9849712c737c6a93993209d1d94275b13a471adee041dae9770feaf66ab6c017df38d82161431468ac27515c5532304041897e707b8cff4c5a9f0edba6bb5a3dfff85bd45b9a0c6522bbe58c20f6850de54b5d9647355e9422b2f60b55a855c154179b64d2a45a60e03236424d03fbe5f5ed7a746546941c4eaecc250211f76585f2f222b7b1ea4323218cdeafb2f6ed7e13acbba24e9ded13a23e339de439200722a39f60e8f8874e97952e34c4afd0e686bcfd5d33ad8d3a16de3732b0fd5c055f4655aa3db364a6dc940f7bc4caccb0537e40a7abe96ebd7223f2e91438e95ae43600c04ffab38561dfcc74e1ab896395ef20c72434a03baab30cb4c38c206b29fd95fdd5f5391ac3b410099e6809a9188d3a3dfe53232fbdc605bec5a8cbc8c98578f8ca4bac54142f86b3bfdce1ca125173fb1da268c1541d1910b6873f48f82e46d26040c1636de7c8f083d16034ad0b8062ea9ba551972e65acb04b2628258384244a2106e0786b4981e58bb4b74fa9ae9aebb83f436b28701dd628f6943c11b4a2db0f8277686d4047e814cf72e1a60fe063c8a1965e411ce49ebfec014163744e35c650f08a9752b68c5725f6020dc6284b8c53a4b27b8167d3d66e67fdbddb7b2ffad8f118b635a77dbc7f0bbc449f267e6498d531c4ebec71e360a14eb8b084806cc71c3d85df5a56cfd0dc2e39b5e91f6ebab4742524085485fee4b71005ae46d365c1afd19db003a07063e1a7f40aeab13f5480bd1f502c31d714276f8591d01e488385ef45f2229f5f9776153c6b33e676412e68a175d86c41f8d5f9925011f7e1037a060158678d0898a59660847381e10a81b8105d1dbddd31fcfa047652059222724327abd68db8489d48aaa82d9576ad9b0a29368c5595053e9eef4e5e9a0b6c0748ed4c00d6fbf389202b24d5240a890e292d30b855e398b6000fb95ae7047cc12a1988608753deead9a2c550a1d785442eb36049e20b665bc70643645fafe3847d570fce6e01efdf2b4599f892a5f8828ecc41a6a69aea3029946029be2265baf82f60faff96ca6c998a59736b95299fd5b1083a4228c96065bb6132c1cbf9922de766018534234cb20af9100b9235bc170e22f63db4fb5a98543d59c410afc7985f98edca944d6e4327511e30da6a04711cdb8454f46fe45937ed4e45097d5f9c008fed32030590a01dd6e7db38984cb79f97fe30b4aa844921e8a889366384edb742518729d449534d57efc2e8890ea14d8d7ad04ddf8d64aaa73efc309ec813a359059df02c0b4715c672002d8df19242d547fcdc3940dae7ecdab08695fd940a463373c485d44cd8d87177805fb11294b8f475b9b5f5c0b1eb04a427c002b8db349ef07d11a34970ea164185861e80ff7198f7123de07e72e906ce880b29f68d0d128d351d291af2bdd87b992328f10a3d7278a63e46509778734fb8999169ea34efcffc76a48cbee0cd323b201b2fac151281afda885f582ac74fc755bc5a2256b180420dc2016f5ce030a351e97746de7180c6f2e299d92e2b66e05582157814852c197251dd6872dff42c8e0be1787cbb21831534b4e3e6c915db8edb7cadb53970242e325f218e87deabd306954a056b3446f83d8a7e2dba374511afd1391b035de9191edd15df416f9af5c427171a66795deecafdbfd5a7f363bf6ce388b2bc1c8dd7c42b4d96e9065f754732f15f62c7fef22ee5134a867d801dd546e597015f751cb9eb5ef5d893ba0db7ec132f9b6f251aab23a45ac65c69694772e08e3c64e4f9ec20325d0485c0ca2fa911fda12beb1a526f6b614526806d063ad9e445df55db2dd57b36afbcd6ca1610f622981b83886fb45605c2b28953eb67de8055cf0069dab81a097f2919f604617465889e49cc0296f00f08084fcca040b3e2dbc311a47366c49fc34cede0c0379c3a7e04e22ce8b40ee5fbcfcd49e81f37da4c48d11539965016f27f797711844ac75ab440bccc7cf7509e073dfab74114b4e93f08fa1d526de75b6e8250c9b0f9039bb2ec43f7e6ba5c181418cfbb9bb76bcd3002ebc00731d3c6f3657766ef28d05b3d5be8144e935678b0973437be3371b736d305084891d42857598bc5827d744580bb3867143f1ecc8facb2a95edc06ad7794ef50ad2ad7fdaad7afcfe784060827fb0e93cbcbe3f4645caa5cbc0ea45c8149111a7e4b2c416c3c5c20cf2ca8c37f331bf2a237ce32fcdbf9e933269d2127ccb9b5e91a7a571ff3025ce847ff9416c1196ed984d5c53c9cda6584c236b6cebd058726d21f35d645b94b5956847050a8bf2d3705e7fee8d5605aa1b60314dbdeb287260d6cb21e0a0326690af8271d57507615ab47b5ec18fe634a3f35f218b059fcd9fb4d72f6e9b94a1da763bdb493b51b4182806cb0a1f1de930d09b32576842281d32262070313bdb44b2c028eeaea26ad0a747a140b4b91be3902b4a91b596e114f3b0f27b72f16b1aad1b53bf86d61df3872f443d44f818aee19d0f9d5c59d12623c9250175889540fa1017092b8e8f7fa2a2eb86831efdb8a2afad87b11847e5e909ba4e0ca7d44fe6465b2ea5d9c7f8f2c04a9c4b18d702d5bb0aae47c64d8417a8a38c31d3302ab739ee51361581d3364a51260c12bb9b14acd2cd48f5901525b6daea5cc324f89ed5f5ffd46b9938a2a1553f1e246682433bb8e4b33ce25af140985f6190d4327c014a66beff292c705b52350b92e493caa9a1888634278947c92bb5559e2a7dd93bf56e144360353fbe7c21f440b03cab55891c7fce25dd08d1714ba8062339522db2d1f52f08d8482ee3593f515e584696c5e2441e728975ef54a887b9f6413ddf1319f7fd19697446993a2061c887a325f95d74aa72f6262cb2e204744d90ab71357ebc02bf8b83300b18a29447ec6a080182c1863e3648d390318cb31ec12489f652cfdf0be0d5e92a18a48308990ac2a8b820ec25c5dafdf590dd708abcb6f054b4906dcf1c945e69b6ead1a4f527151f199dee84a7fbafde76d75f8a46a49ed1be85b20d6a817fd6eca88494aa368ab79dfc2a1832e2a6c1baa65a4c89066dc033134dfaa7992706b7ba54fc7f4ceaaa584e5965c819c87d56e940fa7cb366191bc2c5ecc96e4f40c392653a91c635575a8921d44ac75cdbe42a4878316c0c01d1024d90f821d0695e738655011b4e19d9c51f2b344089c3ad2951e28d11bb5134f7d8751a174a44f9b13ae95dd2954cb9d048a960f7c80521ca18a14e6188bbc377beadb2bd760e09d1f843beea2519e3a9700bdc05659824cc546f3179554129e95cbaec559b50fffde8d0964d2610f7cf125b255655c372cddd7bcda5c8046f97a0f4399321d31db829aa15fe193ec9b8a3716259637005fdf69b777b0e41d341a1acbe5f4c6dfb82f19c924881539a635bb600292b6734a4698b095767471419cd4c7e6161411629810abf7a34ac36873a82144cf54eb791727df6756aa94511d555e532d933da1d92753fc51269951f4c510b0f96b02889ae4717035f85fe41e6f1ce2e6dab62b7deaec691260cdb653d269cb8feda7f3c5c0c270325b0d58225cb358f29d32dff473a7fcc4ae4068d58b87d800471557cb5b6fe5dfdd5d30a845be3bdb54786cc92897d665dcd18dc9a692fd20f76311e8cad802735062dba62492b6498fdfb6d15dc4ed0a85d7079e0c513f2fc85df1c5e7f81a83d94be107676fa4eace694a016144475ca8ea36cd075cea260ece2f837209a99fe0255209ece29c1dc63f61830b92480f3ec21d729ce379f6f0c83d54b64af5d3755517ea2759373ac3813beacc3c641293a2394c6a2e6f20d3c4245a033628bd379ba49a96bc18d51ce21ed26698951e856ab70dccba709c7e91606daf41a8d2d7677b01e4e5d219886b0944bc2c05cd7baa45064fea123b80e5d0901a617a654440b3b34bf4e6743fb8cfcec07ef79c708530afd3a36eb020d4ddff6bdaad356bf945b68e5afa4955a29697dca6223ed3d9c9ef5506c14b1a3d4cca4122b917108ec1e1496c1d3da205169fcc9252cba74ddf0ec835c29a159df2f6765679cd9fb41bae2c70c940ef13053c3b6587370a101e5803a72968f9c07d7cb09fbb418626d9a4fc7d9fbb2411af7fc9b46f2e923d46e1fd31f5434feefb6a2683cc838fcd065a5a2795ca3ee443822191c139281b1e51c7ed67ad1b995eb7fdb56a2938e00c4b40c88d4728e414b7f38ea95b20071b17b8edac9b81072e3837e0751386caaee75a06abc01e0033e242c6a4b14b0be23aed188dc52bfa5b404b724c455e022d16679dc65f0724b4a12af5359164f7448d8bce91eded48262832798e623f27217e533ec52f92a6d2fd5bcf7cd43931ba3c60d3757aaae5ebf78452553d41e8acf3a6f2a5a9982748b07c5b1885f46e57fdc12dd95042dc44eb5ee59272cab8ecc3fe195adb8b7a705ff3d6aa79530de496d1e85d035590380438a4c7fac4f8a6929f77a945a191f177a15d4e49ddad86b71a35607fa0fabfb7a71fe0d4341c2f2bbd4f94114bca532698b0ff5bec1f2fb54fc4a75beabf1f3e447a5c085f186dc047495fa8dbdb98dc5a7204d2934d654785f32ab96e74e8c2375cfcb6a62cd1af921cba567a63eda353a1fecec240f0d527a7601783a42df9040326c3a32d15c2a0a9237bfb46b8962ea4338145af5694a6981a97da9689d1e419dd45895ee9f27ff1d01add6a50dfe393a5abb491b74281dc1d113dd5518620415e223044678438379a01b142baf7cfcac42cd89835d04d8e5bf642d9496eb4f26145ebb0b070ee0338efa0252d655f06eb88e8d6266fd35e322e9d25be44ec0b4182df789cb2c2433235a39ae511bcb8bc6c3506dc8af675c7df5132ade67de67a6bfa3a27eff28fa8c1888c7143f0f45c5ad77ebc887f9b160657cb97025a56ea8b03c8fc07155b62269ed762db0e244f67f56b410204b4dd3399483ae7ae9718c576f1c48f8564fd607fc70b6877e3a2cf90e717258914710b26ce880211dd888980ad8c88665830c338e9a0ccd6bb321de16af503ad1adb68a11c69eabc4c0a1ddba666e4c4b1eb4cb2bccb83eb2954ec4a0f025bca33a4b0da53d3b724419df8d48e98bf8b8d6264cb163a1f90cdb5260b58f646b602bfb044403e3aba19dc72fbdce4b4c64d8ca16392d7f7c4c51ee0f826ca802bda243c6c3836e28761f2e659493c7ff1761ed48d9f2edd70cf7d1a92b608b6f7644052ec54d4fa20932ad1328374dfc9c671213d21f4b635ed717df18337fad58ba6e7216ea231621a871a1dced7e645a0ac0c15af9bcb52ad38950355c2078974f8a5adfa7a1519aa5fd33fc8603aec879fa611141c512a47f8604821ebb4f1151a62333fbba3972de26dad3288fde2b6f2655cfa008950f946069222ecd13f467a8af38652653351c242f14cb67157c3b4b868f34940f55a52df6007aaec1e013bc2f928c7cfdc84200b5c85554c4b7fb61d2572ce4f1ce5a48340883845aa606ae28229407b270f1463201bf7752208c72d4ec032c461baa8fd81195dbc64257fa766b99ce874ffcf1e573794ee381274309c677d522a64f135826d6caa0878d568126bdad1442f2ce983f4886e868847b5b9525df6a0a9257cb9914840edd97360f7c7d3fb4400855bcaffcb02e99a99ae225129981d725db8c1e6d03c15a4c6325afaeb2b10a99b192ea651ac19e19766a2a0a85fd77bfaa080a6814854f46a06255e542160be4ff0a20ba77042827b0e20a23d0b94e214d6c2d895e8d4d94b5876dcaebb8e3ae1edc09f6b436dd9bb761a466cd0cd24f1f2f972a9403b91c0b24701aa85141013ba8f291efab1e318be6f80e803f054cdd1dede36ac67e2b91d3fabc5bebf7d6463452dabfe48466a4f6b7a3e3521dc44b6c070712f691701c3e035bfd40400a9075015979ff10c187a4493f18d64dc95b6fbc87b821c03ba018d79dfb65ec8174f2ccde053fef28cfd99e0032830fbb1f160089a402d500d121044b6f77a51faf9c48d60d32042aaa3420a55254a90b971e84e3a770be86999411033d4d38e109ac40ef340309f4027f8e38dc6d6e2744ff6884272336c8034e9957c0304f451dc4afe42f813742ce4168b69d0b25ca2a9d36136f6ccd8c1f796c57985d06146d048a85956956870380c1829b451fda412b61184445d0baea7a38fde38392cf97869c8c8e7325fd3629321537709c832039dca1d1805fe3e0afa45ad35b34fe0da989202f91c2bc64e034410f11b17b37a24333db26bd5b22a244d6605647ac5c3fda6962cfc263bc924d53c0fe704258bbe090173a05d48ac412cba0959c9b5c2712991ad240291f8208257213ea0f6ce120d64d2c96c3a64808826f58c5ee18cca92cd0216e59bb2835b1fceaa793e018d30aa31028c81496cab69247ac3cb1aa41782512362ca450e94d4a41ee40409c84ce88d77e02a9a44d216305b43b429032637c676e5345e076ead2c94ba71a46253299088052778beb9efd07f759a406086c08ad83461b5376e24dcdc70f0e8e9e4867190233f9e8ec2b993207765be6b8692222f831d39b65577d0db17e1276b665f07ef3f6f51337fb3cef221602a389dae3f975cb079852c2665f9fa06b72ae6f19347422a40fc3c36787c47750d06110d47227391c88a225898123b9329cc810d243ce1a97b2336cba3aa9d4ae37277b7ed296780b964ab1a044a4e952e3030fac7b408270f1246a03f60273a5751684845b215b0597fb06cbf38ad88ac6e9aa0f741c9afd31bd124b9603542f9c6d15d1d364af8bef57649a524b85525a119d7d4e22367142bd0fba20137d1627411a23091a140ceabc62dcbfd5d065c43b450fe7b22edf0b03d23b12035ae19149d69a4695512c841d956bd2d0d318ada1851b174d433a2f82dbcb994296f0daed1295c9c12fa03cf233ac9212eccbc1a57d1565976cb8a64daf8c80ee5e3dd1ae68d01eca7f68439591ffad5c13882a6d64bf7dc9061450036a4eea775d40503a4e0795286e71305d126c2510c5e65a69c80e86ed23b52469938baf690de027f5b4dfb3189bd5187d9eec5e1466b9e0b2b89357cf01dd0118a154557852912c3608269f8f2f32a3357bf1f943bec06b9464efdd6dcbbda59449a66f078807670751602ef7cce7482ebf6e085c937b3683987c87c04599c6c70c44d4d49963e21f0d8e0d8af24cee27bc586236032c9739b47943254106bea03dc5ecb3198a64af5f0070df7bbf9db4b4cebff6de7befbdf65a6badb5d65a6bb76ddbb68db377e34acfb19bcceb00e0db3d4b0ad43cffe600f3b57d4f914fd36bada5575a1d04290083e4fed5bf7a7590849eb25a651f5d68a18956ab2c0446ee9e52215fee102081ec420b05c842b66cdd05fb42b61214909d460b05c8b3a9d8f976adf696fe4232be32bff72febfb03e67f6e8146aeffd10f0428f0cc4ed23973f5d4545117c26d87d0293b024909f93ecaddf1842e712cc01b0aecd802d00410b2c0fe9deb28c39752ea54897a43cc8b253c212fb0dc5065635c75866568868576a7d8d6186f15657163455d14094db9320b6c31410e50be2072e5091f3a549145042ca21dc6cc1d7ad4a043161a91161e42d060564145c0d8808912ee2497a48c0644c44c01f485172ff2fc9e7fe797c83ce7771092292a10e362e283112dd89c5052440a234278d9224b0d54fdcd42df20f777033cefec57c8208797caa7805142a69a44547119a17231270a954765404107542e521864a19a5852a045a6f21c9e7c5153a556c044a61ab233250a900a86bac34bd52e42f9ddee524d74a048e562ab60f03981bc96e55996a13c472134b79353c7ccfd2d00af73f0484f8ef24c4f99a6bef3d31477ca76aca925dc37e77352d5f0aa26276aa2efd9b19c4efd3d1a3018c7664f3bb5d65a5df0b51090e6f1ec3e548608c279ad264b02f35f980f64fe9cd39ba1047b664d157d9f1a0aa0a2cf9aaa7903848e37fdf65bd5390557d5f1a6c79b20740b0c7618a3a21fa4be1d31d02405151d320408245f562a3a4a809a260e0eb83cd19f541ce2a956cd69c407b56171a48a18e4fedaa96e0112b4224cf043962a84547d2f9e3277cb81daaa466ac5a1e544474b470f3a90e868e9e84187ab0896b5e31c4b21948583b5ad263958395a39583970c8d12262b2acf5b6785578b5283306a55620285096009ab125a020e1dd6d3b8610b6497624d99164870f3b5c3b7cd8916447121940ef8abf5aeb979ab7f75a0b3de1d8d1e3b3049bb771b3d6daafcb57fbaef8ba8c54e0ac5a4b6e84056b4aa7b5468cd83059d3866924079b1f8b03870fe034001c38b0f8d09067e15d3c0b1ff2a12a5a5b6bb5dcb6d5ea166c02db08c195e6ffe40d96ab774cbcd60e366fd8f7573784b7ed9838697d82b67ea59c146fced95ddbabab70efb7fdd2cba493db98e3a48f36b2fd399642680c750a37e2ee947ba56c9b4c852ac54e7172daedceeecebbe4faa5b7de7aabf44bddfe05f6a79d3d37faa5ddad386b1dcd11163e7d3ccf6bb0b6a8ad95d6df2c0c968adbf6f5a9b8bdb5947e6dd51e2aa5b4ba9ca4dbddc01ed3d64ab969553072d9e80311303372dcd3bc8bf67aff7ddee3bf60cdcb7cd7b1ac1921f0e5fa30bc51bddf813eea93defbbe0eecf1d1384971be037b6c1dedb66efbc0fadfe733570e868c68457cff037b380ef4efbd57964960121c7a8bf48dbe3aeafbef476309bef7dd5882a3e3b07ddf813deef78ddd5863f0c92e26fbf7d05a4e569eef38d8ce33b373c2856b7e5072f561e5cf2d4586214700e943b19cb90c5fa6ebc99a3ab8df4a217efb82dc58ce0b22c0037d6c251a1911e7b16f6057c54f2ca7916c7ff44dd634e228ffec89363fe0d1f81ee828e7ec5b10015eeec669c3fdae7bd08418ba6dda306fcceff1b64f9adc0f7e29bdd745a70c389d4ea71dee8dbc4ae9f7d5eff33ab0abb47b5ac160fadb0914678baea042025860d169c495b99f2ebac209c7cee976e1750ee8d44b8093dcd3d0e0e0701327734206826e1831db163edb1646b62d8e6c1cd8300c496e37ff6a97f478a7052ec9ec51ce5b9325aa00240527b9d517658ee37c8ae072b6fcb96f159ce448d186789a2f9a172309ee8c18d1a2821ebe90f0a307173449561ab4ac6784d25f1befba1620f8a1c883474fcdbddffd3c7b1c47bb5a5bc229dd0b966093c36fc4813d76b4cef6bde77dee5d6f7ad47e23ef3d6fdc7172fbc9f5a4e112192f63eca1a6cd7f98e0a6ed4b62bb0831b6c0e58e8c874f70b4c96147f36011943b5fb1f3dec12531fe823daed839043fffee97cd8bb779c1e208cd5f91f431449f26f86b7855931a2f0d8257860738dfebbe18e254d1884b627c49b4117d6a785569fc414ddb7ba48fdb42901b6b62806bc41f4e6ef81b248d3d4e6e3c72e8f0155de4067b906abccbc10b7828ca9e4cee190f5964eebd192c7c72057dccbc24c64f908acc3d0573cf78b892396f1b9613c8def8c3c9ad87078cef481b648d474353f38d3ee7bb18de27769651d988ad22c5105b05e3721cc77ddf0e8c704a2edb8aee1a760f88d0800682967441e1c79215b4a973b7e98679c271bf71ed712d7c5dd775e08f3e71d4bd27f61d7d3db8efc49cdfc230a460edbeeffb5c081f14c1ef3db1c1bfe2f79c58230399ae5e42f07a5f087e1d773f6f8ebeef2be184a31f81248cbe1b8dbe2bbe640b7ea34c16980449f021237befc97c20f7dff739079620237ba37befed6e76dd9c200238b19f82df5813032c76fec03b929ef7cdd1cb80e2cc3e648025c8c877a43223185d8c189e0c9cef86f139c9a822cc4f0725ed92fd67d45efe5536eb8bf4aa2fb2467c1f708d3939235658c5a902d717099eb7205ab8a435d877971c7e595f3fe0fb5d5773d41004f049c4e1a4bf4c11181761fa3b766492e072870527b76780b71c15824f92a5521eb7d45805aa15e6820fc72ff31e482291609048301a94195df0d179c9cc0771d5cc38040655531326592dd6659388f68a15b234bbc5d66c173b64bf3839ebabbe668874a49841332cb2ec34dc332cb1c622c40c4b924c03c688b79acd98cc6641cc664940b0a202971d34a69dbc2121ccf41b4b0660b9b1646095db53f89be2d14d1f6d74a3047b5f7e620e28adc3032e3ba816a4e547ade68fe3c524a346355e35603576c891443ed23a723c9937fc7f68a1fdd8e2a8f924a21a97b198038ae798e239ae38391a73003929a666e5a497df0c7f083980cb1164d9bf55e600cafe23c846184188a648df2508e2c09f61a3080c011bcbe50462286dccc6624f8a07e8207bdb975f0d2bc793a963469279c33fc7131ab0978f1c58ebf8d3788936391ccb05dc7ce30168f69e2e207bdf8150f3781ed05ecdc37d490396fdad15335e62f6c600c8b83009ae61d1548d163525993a7262f386d768f98c24d97f460d925c690a272746cb1aae5ce688e04609deb078e91db9d17eb55b9cf49a9598123cd7f838e9355a9e9a41c46ab87e6ac41c55b37f0d288eea27bed052e6c4a6f8cb8b89492297356062ca1a40d9bf866c53953582b27fa5533c81054395b606e4a8723424735449220a725449238696f3c43f47c851f6cb654e6c4a2e73a69420973957a4e432274a2e73b6746d4a6badb55a20276daac074b4ddb03c2da5b5d64a5a4bd3e2a47b3655e0e999f4b5d610e911fc69c4386abed350d614c9fe35abde41027b4c4b12739eb8698e39312773624e3e7112c7abc6cb51258e578d248e2a2140637922f11148ad1a2e47cde6e9a6263a5a1a11cd8b060c0d114d182524229f5cd668dd28c1233ab50c915ccde3a551060872d250f350035869b286351a1aba61002b37901820c851378ed468d568d568b50ec9c571bc72cc64834eab75fce7180059ebf85b212747ade699efd5492e2d59d668c5b2efd4b0b23cbf399913322073b2738dd60d321d2d173c933b0a982299caaa0327643491d1444613194d643421c9e65b228dba3f638c5e4efa535a29ad9492801cf431bab91cc17c9060bfc79770bfc482e50856da561ecdd1ba5a673ee8831b47b0f12605aada7ee625db380406951d6d8b9afcbf2170ec497627d93fe492fd6958cb5e8e6256358251937f42e049e2ae98324a623230f1440d8650221382dac9f021a9ad18f89a11c922439e79d6c0fab92b580d5f6ae8d21e05f7ac8891dcb31ac4a472cf6808937f46431772fe6fc9d3469e3620c065a541027f2eff84670c42c8d0c3d0131f5ed0c414564a110988b2f0424503dea8c4f8347f67fecf27e77f11b8fc3c9f1bca2574974cedbd18d3b7422cd8a3be7ff69b7e8fbb0c2f7029c466da5fd66d494f110111feaa2b295d6db6ba828850d6637430020b212744c668a172c1e7876804555cc101146cab4cbb6f3ac58d2674e9419e93fb1cb20fd026fa5d968bb964fa3f5eb8b4b52ca48526e424edd9b14354b3613c65632c5d9c5af69114b2424241db6a89cd097cfef4be39005521f76c8510428ddc3d6e4ad1f77f81a6e8b8c29734a9fae597cb96d5dbd4b44208219468aafebd3db4c7afec38780a01d3147905cf2f51d3158f569fb45593803001c0f3412ebbbb3b279794524aab0776dc44ee2f8dae8311071ece7703ce0865904ad8462646aad61a4a676868666a60c490b1c125928c700678f3e1781c8c3ae868dce7c46db41ed41cfa810300846e32c4345690200020f707b949faf47a308a4f63d481c7c18703de843348327049c606468c199aafef75d44c0c183632252c833423741498fb3d9cdc8ef2ba17470f723e000008a4c933912000e0831c0f46f16974c001cecd0c19259b18356478efb55bbcce29ed2bdb39adcbb69ca4b6d5372bf1e67b536cd28dd83afd636e29d923cda47065219e7b6ca7d4bdeceeeea7012326de84a0abfb915a9d27f700b6b1e7bda38c96febd54ca4eabdb5a9b8782b96fd84c25fbf704d1d33a61dec29ed6f13fe2cd0f09ce89217b53acc9defcc45cdb86f47b5cacc99ed3cf4531dbb66139bf7ab5d6aef62c39d91f125c6bad74fca276e738d94fbb17542f39393f1ef0fc4a69cd17c8dd3a4f74df8de86629a576bbd5cbc8f3e27dd58a954bbf0facb51ee1c01ed5dacb1db1cd813e3c53ef7eb55a2f1080ecbf7543b7e338ee76dde586bad1e52e158e0a10df40123c4a02ce737cc1c9d6f7e5822b77b9e8600b5cebd7e151eda068f3a74104fbf750dfb6ef6b2769ccb0adb9645305f6d1868a0d151b2adddf0782e01696315cb0c712d3ded8c0eb1cff86f2cd5efd3a8706840620db9837bcdacbd5ba01b1317554a06fb8fb056ce417467703d98b64ba172e60e387ece5dc2197f38619b2bb0d1b365ac705787e69c3860abe5de5a9c9abe0f96589ce5b42c7813e70aee3a7c3d643a3cd7658c0707fb75d77f741492e4f346cc0fbd69b65d571008f72cf68d0402e4f1908dbdc331a587d6958e1b8a92f5e412e4bb68a50c9c7ef5309d13e1a9f209b7be623442e7364958b998fd4cda7df87694a1f0d9ef97cc086fad17c984615c5500b5c5d452e9ada6a60178395f795fd715eb80c5939646d356f1c71b2e092ab656eab59ee6740c14d4de17332ee95b76d2b715cdae4cf79b13db48d5c8d09dcd4d4d4b48d5bed4553dc10fd70fc6f2c4ba592e35eb81b4b92dbc2d5b2e092d3a2c551e556a36d40b9c49905902bb9daaa79b65aeb10e9d4c665db6a25b7da6aa52d9793c5427883027ed207c123690cf2d45482957e23617ec571c3fdccdc0d379ef28e933239e0cf2557e388fcb9227faec60d6db5ad56db6a5bad5badf549241957e36a36addc1ec018235393b182c2aa0d155c5a17076e8364430567eea903f9b70391b28c46d534e9dfa5193760076a9e965939093ac5820948b9eca12b405ac79f059a42a14dfe5deb227b983f203e26b89c420ed43c4d47eb1ac2c171d71402431b624168a8362444731776409bfcc17891fdad1361813ad09003399003d53a27482427b17b3092acd9da90c8d4291964f3d0ec3858c8947d77725210db009764769142b5e8aa4408f296e13e411226c76d9bbd9e2ba5556a846aa29830180c0683c1e69cb07b312e955efc2c804e6d42b4c97f739223fb0624ab1b8ca65c25801c5443601041b53d0c1fa826154dfc30a11a0203f7a5a5dac626304c289250d9b1c9dc60e506c3300cbbb9dc60750cb1607f2adeef0a9e42f4066b1e2ee7c8be39e94d89ec51421a2eb725d97f2ea1e3066b1d2d788ea5756db02e9727184e11bcb1b86c459ac7d68a8a943298ec6fbd6c45b293a7de60d98136d806ab19b54844242d603cfe83a66ae5e08979bb4352ab795a4a8efeb1a3bdec209fe3fce1a9fbf7afd8600f9c152e4bb944bb44c7b264b96de3e83627086486fb0d6e35e8078988bbb2ca4e63857b2cad2bcfee6efc62f3a0e0aaae524f4846a33c9693eeddd0a4e76aecddd0a81b47959c74d154758dc9aef2e6ad444ef6284cf68ec60a0f39e9ddd24da3bc19fabd191ad5edef2d314d2b47794e9a4553a3d17b79553c214f8a27e462652fe601794ab48eff15bd2b200aaeea46cfc5c2fea5e7ca7888283ba71a72d2bfe4152ef1d0cc2ef800e7dce6dcba0fe2aa6e1c02836abecf09cbe5c9d26c104d95a72a5ed113f2846456e009be9b76d311ec3ed9c8f91247b71668ae9bd8021d3366cc985cc6b0711cc7dd7b5b67030116c251e4ee064d3462a76cbbbf62402f988e1ce639d624705977e6ca57b3e53f5dfe73e53f59fe3b3b2bb4c97fe8d6d115e0196fd156cc97d03685b54ef8ea69ea73ef4301a673cecf06b87cd7bf8c42d1b202647f0f336903b83c9d46e8bef3bcb5de7a6bbdf51b9ca391754d9d7b652ef03ac7abb5d66e4a29a5b56b1dedcb499b2a708fd6d554e0d25ac16d34ad33d26c3434a10b9756f625f9e34a625f4e4e92ac39995dc1b2c4ecca11b32b4a665770985d5971f18299152e332b53ccac64995929c1cc0ad0cccacfccca9199151aba70c1d0ac0a1653509955516256858859950fccaaf030ab626446850b2e332a51cca8c8665462332a3fcca8e0300b1a330be26216c46516848259109459d0cf2c68034144b2cc0cb3a15cd6d96ccbec4aee9994d90c8a17f38ca0f7625c2afdc3eefd1fc2e1a92e1b8ba65ce5dff40eb931859495ea7e0caa727365bfe5c62ab7d6cbc82549643589bc9f0dc99c957a3f1ecc51db8cd21a4df934a1f3bdf7eeb7bfe2e83df17e2772232a2eb97f476237da22d17619b25b08998eb6e6a48fc1979ae868b7d036d6dc5873d6df589e9a2b190ae6289bfdb727b0da0665639572b9b16c0094cb8dc916db803659f69f95da9aa34a4bb35d1cb53d91fded90096ccd9bd25a29e582821d6c615dafdce3c5c0237e663b4334a345f699f9fd6400b9674c68917f9860ba72b2b3d8a91e6df2c792fd4b93afe0a417514abb8e869962be0cf91627591c527a9aaf1187d8fccc7b457475333fc6c7a09a116fe8d77c0caa2f29a430f335b44b49ec21319ee66dc43ba4e6679ed401cc429291d69cf4520c1127c1e50cada029fae482b896be493f5c01cd53354f6b34a4e092d65cd494a2459e7d9b9fae0bc599a0301c67a638e933b219b4187cb47ca08720a058e288196210e5ca133db4a0f8e932336526c851dcfbc3d001ff8c6c46e628701c4b8c4ba53996245a23473b96a78dd67668c421345ff333e2909923cd8344f324315333326af2a74d3c01054d41f6ef49abc85344c83d6362895c5fcda3c4676434456b1893fed446ac3f35881a4dd51040c17aa2ae9a284aa216515f4e62814bfa843e7114908fc07a954d85657fffa92f2bf8734741e2279793c9265a3aded81afb2d14e7f6337bae312d63ee19132e5ac14c6b14092e27cc6382c5c4aac7129b491f95fd67dc0063a87944689e9a3d7c9b7bc68591ecd988b48b9b584436e1486b5f63b3257e4a7a44f6ef4ca7d3b04b7d29b143ae2f9aa235286172cfa0fcd0c83d030a93278ca6eacb4d3312c8662400e2224a952db9acaf8e42a5d551aa68c9fef5a732c9fe37d388534545cf3362ab604bd4dfec36b9ee318df71d77bbaf668939bf0ccd2e21a5e1779452ab254f7bc5c9faa21e6502c56ec9f307e6a82740de96e6723249d7d19f3abadca50bfa0849a8354ff8e1d738814b4a94fd43918a691d7fae56247644f3cc9172691d1f60a6b51d7039612116d8fa10e58788143926fadefd946e97e3b88ee33aae75b839390ee43e0c375b276dd2c22652c068895aafbbc729e55878c0031a55d364adb474202aea98a59d78a1f9d942b3fda6e18b85cf07283820d068d4e570dcc071ef9ec2b84a43177cf4c8f33c6ff47d10577d97c3c1916d37f4caa33447941be48f3305c609c252f87603951770b9530311c021fb0751f2407fc93d4c231fc026f48efbfe27c8c894bab194edb6d94df4cc71d6889118172414c5e5705ac771389c8b33bfbffae9741272828d9893b562cd8c1abd3f49a879ba087c2995dd3b593465c36d348fdb400257efabc863be0ba7091cbe401f0786492f3c492ce9804b6c044e0c9793950adf439135b9f78f8a52964be5b2729b7a5ae7134b1a4e449c237088c0e1778f8304267df73849e0eed218b9c11ed327fb783cc49e29f0e84b6c44f6c736c09315c22ee5644e4e61b1621e09a66c3a41bb5580557be7ec54685a6747dfddb7fd71727673d005f69ca63f331d39d802bba6132e4a5dd4455558a1795c04ce48f7e544a28302974bf6ef9e4551835c36161d46095a1053cc8044165e54b9693ebc6f34fa46d78ee66834c711088e9838495361cabe22ee7b37570bfee67db563d951c0f17af6e9bc5cd7dd3be7e54623d7751be65b9f4376ef447d023181785d5cc3548b1aaecd57930ec49cff7326453ed7a8ed67a3e6e3da64e213883b965349ebf8316ff86bfe38ca8a30fa63225c846b78c85a70fb7a69ea8436f9a3c0265ba76135a1af60990ccbb0cc5f08d3b00c07ddbb8210d749f6ef9a12780b5ce21aae657f5592a6ec8f9ba60ecb81be01a5f424cf5cabb5401b700d5b41a918303aac5430743fd054b7928a66abc4b158ec898bf0c4499f406e721dd349dff03fa2bf884581ebabf005e9c6a64d4d4130355d584c3683624093521a8be1dae61e6dc6a611f7627ca23ba5ec74670748f3b4f7cecece6c89d3454dfe5ead7587099ee2cc40ebcc06276b0abc243bacec305ee792e611e228efdd13a92836e8a31b8d66d7d1ee72af1f98937367a7c381fe6987939487fb03fc7f38497ddc7898d053dcc93ade6b8293f4abc843fce124054ba091fd7ff030a1fac6639c230e18e029425e18e2280a8191014ed21f95c065b530c0a58ddc0588a34a4ae7f39842a7f4ac07a05cc712d320644e64ff9e71031ebd6acd13424ee2481c55df8de03ba9cbbaac8b4646ab40e175336ec025b9f11099facaccf0e79214c50c2270498a227bf8fe772c0590bfe7c63247f62834158ef57623bddd797554eba89bdd9cddf5bc24e436030dcd7fcde374e53f6fbafc29c15e2ebfec64a6e36f003f8dd2280b449a92fdad94ec5f8660b62332fbb23f5649cdf2df3a335e5829a423a4a099a26f1d1f42acffa799c16c21f0fc097299737af4e7ec2b7302ab68e63952aeeb6e120b54b322fb7f0c53d81f74f9413ed11c164d1bd986a3fc7ff89f764ea99dd60e8fd99356760f2a9b567617cff57d78ae0d1e80f392e729fbe97422d596a0e1aa100b4c59304adbfddeb71aa859d151f438a5743e0d229f4de2a23d347529bd32d9ad37539c2db0aba766675f7a6bbf5a0a33d9a0f3b3987d622aa351d7714aa28d6f9d1cb1c96dc4a2ab66e480cbd309632ba54ca738760b93521f77218f623e55996e2661070a012e9f4ed1694a34f9bbf08fe0828f9ef7de3b472317da8a68590f78a079e6d32fba38411120ac6859515129407005151da800f22932435b21e3d1d3d943f8e9ef01082001e8ff735a6a563463689606734ba3a9cfd2689fe7f2fb2c1596d63c33b714cbc57ac1d182a7a5657f4b7b9aa5adea15de981087d8d61087f8881d1512b0020ba1377a201b7b32f485db3e1004c10f631b7b421afa42542a5d2bb5d6da4d29a5b476addddd97bbdc46ad8c6e250b25f6248beec60efbc90113dcd1d43f29ffcd0a301616131e3f7464e799d9398e6e946e23fd1762c1eb03997ed7307b8f4b4dffceee49bded8b5ad1deaa822138d6702cd53c298dbebbdc06fe8b964e5696e747cbde953c47d53dff3eff3e2ffc20ae0aed15212db42d3522ae063387ecde7f537441c89d1f47a7e84298856cdfe6c339ee9b393394602133d3bf993773bc41217cef8384ef8d18689282f7e063e0fbf083804f7ad28801cf003b3aba00dda5fde1409e3bd39bdc0d90effb9b205e9e2b277170c0407cc2071f0c454fbcb90f7eab3ef1e68e3728781f7e10f0bf0f470c3449011c7f60a0a9a9a949858303a617d3eeded1bda3fb3ddedd7bdff3aeab75e66f16cace4eab6b4246e6ffffff55a03ded694f7bdad39ea3ffb4a7fd7bffb421d3c96a552b67be341a2d7b0dcfd6bc8fc9d6a9f642053a352791da1c672d05b89c4237f37bd25a066625d04573c69a67b6a6934ecd23add86ccdd86ccdd836ea66abda9198d3fdccdddb6e7c72d6e69c7328dff1a6841362c16569b6c452f66aed66ed6629b5d67a9e67bd5a2d0473a3bd55d354c9bd84eb97a55a6ba979dcb7c951cad15269089b964d0e7d3a9d4ef7625c2afd7f9ea267ae4b98e9fa325b279a72d53cf5a94fa7d310f75102c94b05c3670391aac94dfdce740ec580354f8e4c228d1b2d9e21a8d42db665390bd1d00800001000d314000028100c060402a168342247d2e23e14000d7388467054389587434990c328068218439052042060002104cc98d050050198cfddf12c5e590cdd9d8af0bb5b9160ee9e8bcf50673eed4e900db3f5203a7b9885df57bbf804258010bc5727aae0a6c26f12970ae831b750d6dc739a9efd183904da7fbbc1f3210bbcf659c69fd380d55fd79e1ef8d60de70c00ef352648b64bc71b0036733b495ad9fbdcac04218c93488146dbb46a1a44edecfffb7c858f2ec21c140015dc45acc8fed92b412f2f84848121fe8450000332c2d8e7634860a1df31976dee308b845b12f76838a2173a655e1e2952c3bef0d21f23128e5b057e87165c35158623cea9a4d540f046a47ae7d57d40b9a1db080c2176a05e23e45b9a100d50c2fe2e2b58ac1a23b4e0b00d261bde075078c7a1cb43061ba40832498e7936bfd35bbf0842a4c1d9cfe364e4dc5fdb23881f71b897b5096c6755281c44543b5e061ead85f7f953443688ffc42b19571984ccaa8854b223eb562cb05e927fdf3ed24e2fe45db6d2209e5552689556756c8aebed6ad5de5598d9ad73b5e69b0d81ae924e6c61cc438e66f1c4ec1d694afea97cf347d1573d7915fa3377d45126b18c72c42fc9071c8c11fefc304c74469221769481cd2a80f652034073ce46d88e923f4679ed5afe96182129a8a59603319d42b6e7098375935e1c4ff0fc72158049791e42cf794883fc71081b97135954f80286a957f130782e99532816b0f1202a0ce6edb0f5e625427e13eff8899fed8e2530e0d046752a56a980c867c9a217ee6f096ac835495bf4e0693c1ecc7adf60c60361dbfde873ddaaa2c11927e8d5eb5ff966b61a200ccc8416540551f22aa8069d15bb58b6aa615085e556808f87777f4b85b610fd1ee8c7c137fc684fefc128ff86b347456df04b47bb47a80a5f35a9e4a8eb549662102bfa3ae83d433dfccd728f410bec9ef751eb8309a11a0b299a5b096befcd3ee16936734a2c248be8eaa27549b1eb4bf18f2bb05ec21edb191dd65901668a8001c5cd09d77270fbc8184b8130e6314536a9220402ed69681e98bff1af8ac707c37d11a3b6dc2d6e35470f01f90c39b24e13b5e5e624f547c9ee6457e3aa3a54919041d1dc8638e5f7bd5d156442c2645d7421136e3cda20c5c6224a5c4ea7db3e2bea2d79e112ba1f0e3b8b97145bfc0a6d3c61f5c2adbcefc204df5881315e8d17b5388ca74a2718e60cc6a2e8694312823c6c0a3ddaa371cac2f185638eb4df40cf341751af50ae31475f7b077c8ccc3b8b4ba4b9e261ae37ed2768cf89bcc334c0df6795cebc50de090e656581770f7b9986bea34c0e10386cc43ea73fa0ee207864b238ec5cc2a303da34a6e05856c50430f110cce84109c0a97d8f212472bcbf6ee72c5d853d797af00ba562fbbf2dbf5a4cfe3f28d76b949f2b62aff299240393c587784df14133d7a06889213210e082412c730ce1332df585a911929fc02c105123cd3e39477e97f40cc44e9eb10b63ba7f8489b511c9129564951804a304f78706998bd51d1e4b674f7eb07754450cc09879e403c725447412009dd409087597cf54168d4e1d3348303369a97ed0765661431f03188400b3e6e683ae11a34e1da4107feeb669dcd2962db41e52d94388b3bce72dec3f0d7a723ee084d7c90fc080e0924c99546d4afab1268112b2481564fb62a43fa8d0feba7b567c14309b6915c3a68e54c8f5117efb309eb5fa2598fc54e7d3e3fa11908b1be35afd89f8945871f1dcbd305d271f737fcd4db858e5f3e817eb7e71f5ac8c7a7f0a14d096153bdb89d538eba336889d635f6530a78a714ad62162c4589b2b377a5c03528418243701866ec545e86261fdb16743ecac99514f09f452e8b3783a059abb79215242bb473f284880e01d6c08588d4fb830732ee0b9b0c021f2e7a63f8083c2940304c1315c877d409db16b3ff9931cf1e807382ac5681dd5cc6bf2774c3ec0616492a6582b41dfec5f05955527d56c3d36bc9a58a8d0a05556e3a6a646f8aabd04b22a4595f2d2672d85866f9e015a615f4def6efe3957cde04138168881f8809744f7030d5fc0082c9caba96ba23152363551520024c60fa1ee8614acb9cf1d0d6ed0683a9801a4a04d235803c4172929191334f2b4ad2be68f53adb18dda2fd82d92e7b4cbe9b19936590a232a8f376bc7234e460a205b8b33e02fa4003ccbbb881a654096b25ffc0e61dbec8a9331552a23d935323cbd2263e902682618190fe4f8df6ed5962182ffaa80e0a64fe63a7f84d8cee9d73af99e1fabce8d8f42227f44d519e2a8ec3848c7c6490ece936b44fcd8aa50f06647384a52927a616dc0ad8d4c1ceecb448f6c0be306fd88a7dc85e7de3179d179fc554d79531e3aedb6b49bcf47f755c747847f1e795d7d598c8fe1da86b93d363e04ca91841359c59970ad092884c04d5300f1e224ad5071f6626dce198dbac8c99c9dde7d57c129ec943a4ea4cd27204ec414325530d46b0a7f0b90522e6e677b890b6ff49716bb1b6473735ae60dfc1b608752d1acaa60897f88719fbca9d0b744f845f0d5ec4158f5cfd120191ea2767e6f5ab83318562c11fdfaf499073e1ca83ac8c8aeff476b9376f43e52a2ee13e5687633bf6758d4dd6752fd8969ff2b4369b1d3e207abca81e8d8c61e7c6f16a0be9cb1b81c5f3299f50d52009110e10c26e5715219cc650db9c31ebcaead0c399341e47932795742a56193bfca989dbb0f3d57ea783191c003e380ab295aeed9f3502d9995c7169c81c8f832d9b24e3f8359ec102978cd6ba4d40c886c4d3d381a1082c0200ff1e73e4c03127f27015adbd141cc6f3f89e4b0dd453c63b902e8f2a2dbdbea0a823913f6d21cfa30b0236db9b85b2dcf4993ded915b330d9b082bc4a7de5a711c6719dff4d7277ab4350e7ad49e250f6d7357e86b22b7fbaf5c61adf8a680604701b6f68c7586168d022893c93267a90810537afb62cfd75fdef6908a942ec91b2f6aacbc8b97d04e9dba87ac951f5fd8d0c443654ac64a4591938340e4715c701c60368712b0ddc3dcea709b52a10de627c9d87096146fcabcf8cfe42083e4e784832d253929191f81e73c76474eb9a063f059470a109f7abc2b70832b69d5aef64b5e0aa146eb00e7a2c1a88f6bcedf340b32a68cf465050ff8b4162dcaaf43dcb9a10b3ba43771a2b1c2ef09e27bd40ff869d52e2b99eefb30107d5c5286fc9f6cc0f295e76031a20e4be061c7a5921baaaf8e072c0f9543d909861f8e1b051c8bef250a1e4febf71cacc317d0c3ed0b0c23ceb75e03af285cf4c8c890ce2487bf11780d9c210a6f2ec0fce3d851f050ec5faac43a5b6b663f276e74752585e10d6c43236d0a0824611f1565e403b234fd317838bbba207246bdad2f8a22b98998191c5ab21ee75c064eaa63cbfc2b6803e544c58585a15abf5ebbdf48d4ea292c5654a325159a328eb2abfef0254997fd7d7468383135ee9293b18dde57aa1c3da8e839b8e8d31ca3eacf484da51248159831b145a4327eac2d77f2d77c8a4934c7a5d4dffb4febd3d4392c7950f56fcc6427fc8b25c557da2b938e0ee61a19cc68f643ab679396f04b0ec424f747ccf304337a1b1fbcc06835c3d2f88021b3719f8eaabe12706dc62077693a40a81b9b94474d604b53c6826f2af63281300901aff1336ade94bd97124dc4172139ced8b86a68dac5680ee8886ce9025c3ba673cd04764eaeb4bd125bf4c79b2b831cd0a2b5682851b3c6a9fbd8f4735ec659daa74a2851572816dc4a959b72a4ec3920081052b9811528e7597aa2796501b29436d6ebea867f5c5e01abf7414b94974682a29b985fae575a2097b18724292ba2afa0b9df78ec9fa04f48e51380c901d5aa850d2361b1cea493ad2c6821ff528db621eba3712f29ae680c36dc48a642b0e7fbf6a902904fa79169b153023c2f588abbf55a6c1359c86cf09dc3819e2dd01e27903bd02ff2916e284be60a36bada584e1775025d7d13c86f4a95b9148e4ad97cbbebc0b26bbbda489a10ff2b4e2cb14aa732bd70b7f56e14ac173cae5618f7998002bc8c1d2229c6045fa5d826b359adc5dc34a818aabc7c8498d4f45128e0876a7e50432092131aec72fc5f124d0dd29d5dba0769b54ada8bf5374639a8072dd7dd002fb0269390c15af10be17d59a0d4fb40948d45a6baff69676d2a964603744a82c98f1fe0a37ffbd50b0616f4cb6a4a2d673f6a18d723ccc35c98d8973359be925c53417cbec782129d72ee02648f98e061b496855599eae63f49e6e06b5f2e00c9d54372148d458d2bedff2c9aa3a98c3c509d3dff26122288d741ec84d035f0898044b75cd32f064813f0f871f65a6a01ab56a1e590161db6d50d8a97e408ad0cd925a5d28773aa3543a06c9e7223ce3f5402a17761ca179955ef2176676e74d5e9f24571f16f89e40bf879d8f963cd58cda61cd0bc3531ed54a838889112af3557ec4de7a32cf66f76796d76b6cc93a8d3d5795550792479a171244d8667e91a3f28962d3ac59f2ccc014f8c4e8a757fd3bcb19ab5f414d0a3dca69d43d4f3e8dd5442b9e712f25c8052f8c3819bfaefc8d0d5142bedb557875c93021ac4741ad46ac3456683c145f42972d975f10a4dc6f5a7b6ad5eae7367513c192d0568306ab67a85445c5bbba642580797000c169356caf350369c3b6397885d75c806de610637c1a1f130cc002f20742af649170f660d1605b86b57c17458f2f461c0292e509f10928fb7898bd6f50f34db6b815269d9ad6cac5fa3fd4e4809b21cf7dad8ec035d087727db26039b9e536cb980e026012d8c664b399b5616d09abb8f17f001c7597b63e705b1f1fb81e42c26cf4d55aa454c4ece406c8cb7377c737c12217841d2674ffbec1f11cc64888810b1bb3803add47b522257c65d3cffd946e63cbec398f902cf793f9c410ce95abec5ed4b5bb65e044b10a35a7590d4f8d5940c0041ebc0169d633b91a27379bfe1f4176589c144a88fdd462e64d048058cc10b7808787cef667122f3980b9da88e38eebae77630927d9decf9d347755208fc02486af25134c2bbc57aeeb46053a763751081664c312976c82dfa5c501b0fc60972502109008f94347d1880ef8bd0c548f0568a31b260043b83a620dcf7ea4274f921b49d03956122835a810cd003ff6f33d3458cfe1ba0dc675facebf38d7cb8e1f1da929729108a909d9b420c060fc8b41a25358504f4a87d29c12ad4a063129b2f0b438520d6ec200c572e9e681f91cb43275d9c32bc0a2dfb3126e0221a524686e55cfd20ad915e78ce76db7ba69f78efba25c3aad542f9d26e348deb28871546a95a6ead95bc287ceadc5879097c400a3ea1aa4385ccf637eb892fdc66047052cbece7a96dc20c7c59f61f9bc8bd37eaa9dee1be364c99aba2fa84e66b7a475b7ebc3c10faab62fa42872931728c49878b4ef0800a6ab87ee858a806dbb6301f05c9b010a645f847be5585b096f3f6eb7b5602a1937db8d87dbf4c3913215a36466dd47b8aca84c449919b7e96acf5d266b73f0af43b1961bc02f8fd537581346c2f7146fcd76083d22a06019a6e550603961f342db1ebedeae33c4d90821bc3b9e4d62e4e88725e69da92636a91bce6041663c35223834388a5745698b3363c37d3a0fe31b98b9f6bc62a22949458d9456862cabc60f6ab1666ada6ce05f7b9f452f08a3accd07dfdd538489abcdd0b74aa41e06ba7efd61115cc0263e2d7f4957010d22da36f38f0505140ad9e7acdfd1f0c3b805d9b6510eb129e16c792d7021e9847e088f42509a0d36ef5904889d47e4f38802c6e4e057318bb685d78734f09f60b03107df731e0b2daab2990eb4368a6aba9bb57c48f2c7ee840bb70d667a6ad9c65e3228292ff1ab8f7f8ab6a769a7caf6dd6895bf4e208863e2a8ae03c00d4b6c361185d62d2b0ba274df854ef8ab982cf84f88e6f04d735201e94373be8f330a8c958f043fa0241fa26c8dc1fb53252a558e2ce6703217a2d8a0271c8f472c0e7d364ae268f0047b845e607ef154ad59f623be58c4755349e266ab941cb1ebe56276da229d8082a1a3c8b32346e29b37913c14696006d24b1a02f821ed5f7220b6dc2d253162132759399ff0c6df5e59904aaf0da4427d3f916019af939f740d58d3154ae5d60e0642d30770a63f62da24786d6051b96cdf82d48da470536df8922d1ba709cbab1da1b11fb12d4a99cf68e19448747242d93015b068c78404198fd06f84d82c4a1db2a656b820eb995eab4016d8265a4e282b7b1d8d865886ec51c414fe28d19b622ff354c16b1e0170a3cb1c2cc0831c642bae2ccf37822c4aa43dac5b8c7713f09af489dcd25d6f4e7e6e6dc7b36628bbebdcf9a0c12388d0e092dc7bc9e2fe5eb278f08045df0797daf0a8f0f86d7bcab488a5bafdb328a018abb565256a56b085ad56e350ce1bb65784faca5a625b0b072d45bbb74d5b88b76e01ec7674126c7f53d3693bccf77bed649dc818e4626199b90525c43fdd83040064129afd4c2f9b370d9084dd1a70c782ab07b44595d6ca550ae56883ee12bdae9b987587aa96289725735d9061090a9f91c81a9d7ea684561c533a37995e8c0ca1bff1d5943e5a755bc95318f1872f7719174e9ccf8ac3681b52e168de63cbc2cd9440a9d6139cbf2d4233af1a71f0217815b9df18b3cbcf10e679fb3e78991351bf520d714e43d3c16922c8e61818995996cd1bf949c8d3b817f70b0511524462402be9ce4e4db38669310252af9e029de8a2797a798e78845ae21cfc5dceef86c41517a3c0ac0816e4497ae9d8c198fbe83fa992c39171c987a793df63ec5a475436b0440c10b95fa628dbd944bc95a05ba919360cd157026e1c6da13f842a2fc9d383de0996954608cd5e8abf80d603a9d2cdf0885e6956addb76cdce9aefbdd63e1e1420a0b470792682040ca5662a115a23a63b1e6e72bc9e4126531a5ee75261d32a120f7871abff9c0f32bedb957529cd911f7775fdf422c4cd0abcc38020531639ba57736687ffbefeb1d22ff926bce025e7dfb4dbfc20cc3d25424a29083cd6e31090c212faf5e3664510c9dc13dc9c265f8ca912d01335bbc2bf37077c9403e62c3b76312d264437bbc336743e9c35b04f8c2742e9f1ce24d00c0eeeec01737b60743bc82046b107d0d3dfb85f12c54702abbaf1bfa40adb125c00a58816b7dd61ae0800f45f52155cffb35526a6da2b8391953239e34cdb33d5a2f7d0319c5439f2d299300fa927ae77d1d8a3d7ab6c27d201004eb1a12c5bf6bcb4f13100bb155ee569c00d64500c99e33dd39e037c9393e05c0446261cc8a1d959d93ee67227918409d6035b459b3c976cba0769d97f294bc1c849795a0d1e1d9db983079c7d001a2c45b71394b62bb4436f941eee6a77d48181d72952a0c387c040bba29551376794c67731d9a7cc13de5083005d8ff922d0f2c5825918b80e3e40c917abbbc3088d8175323d5fc5dddf5fbe87128e3f0e39661b66d5ea580e4870426bf8f930c20dd1f1b002a23af2f873fd0e2de8fe1357a0d981b29bb188102fb47b1113c7c5b1265ed6bfe3e1ed6820253de3e02a22352cd6a705ea3a085ed47cd086787146e53bdcf41dbb67b21f0b5a61b6ff630dee634182ecd9411590a70eb7b9b6fbfd48df5b79a5ed71d42756118e1318cd62947137cd80ed23aaf1c401ddcc80353622acd88623b07cc6468391add52fe807c9195dd232c7c446c3e2684d9303286622721f32ee9bd7fbb3f7441d8f7d9c070c39a3891c10e71799e52c5f01fd7314ef88dd53a22f8d6724aa04c3470734862d66b95d4f11c111e9ba4d835971b61d75397b300718579758ab6dbd0e2157ba009a8957516a9f8508706c2f444c91266f8f1e8708ead867f21ad99053071bdd64006f48b18a777bd7deff9856d90fbea916be77a36bbee8ffe98e2169ea9bf94cd35261cc880248c5661f2d7cae28afd803a598d617387ec857d17022151d266a2e4983b1b4c3643c41240817350323ecf905cf054e1ec21c2e186261a2b6970e34e2989fdb0596a196aa4df7b0032c03b1c7efefb0b743a3ff2b9af9bb145e38343a36c7f75774a49782f121c18c494f81c4413d4f02aeb2d89098132ad9a9cd9132d1ee33c3ac0aa7c4cf67d7416b5c7ae4a45b159b170a553b6fe8489c399668ffea8951ec5f4137022528a86bd900beb1e21a0e7705de85d9a5402853c91a7751c542e6fc9867f41964515ac677e25baffb6775f917a0aadfc1e760644795761cc63ff4a0930f40c8c184e46f9628c6e34ed70c870d2c2670453571ef75624d3b732ef0a99af33a32044ffb760da5cb9ef1bee282f4badac146a8b143d1f7d938d83bca6c4f5083679e80a9ab779b26f156d496124df14a09165055f4497aec4f4e3f03cb53cc9630d088ab1e249c0666a3a76f438a0e7246db50ea61efc597bdaec6faf26fa6c8b4dcf20eb7c1fac2d2b0f83f7c5b50c2b039df52dd8db00dedcd352fc09617ee092ea58a17e14473219136fc7b32e0e50d02872d8aaa5f1a6258902e6697ae882cb11c6772242d3123c0acaa88191520a162dc67a182bccfb03bd16e16f5e37c55cbc419811f52771be0286964ce6bb161d293d47bb0e1acf8aaa40ed73f8f3962ed17c633b93c8c44573bbe54c2da287f01215c7726692a6fb3939c6371a61bb9077c6eef1c56fcd5e559a2138080774bb094f0813cad0aab72864c34c951111902bfeb4d5a420c703885d4e63c9018969c6c368371612457826804f9dd49af03a785cea8e939839846dac726a91d84837fa4d4b6dc3a0ca9f4e8c58057dd5f1feee864c9e3c0393b92ea0e861d307a2e7ae2cca6bf6635a038e38319ae258d2842bf988dd4635673fb38c0e71f374126e2e6f10dbf5f19630d1f482b3ddcfb69a8273b35a1f8608639a180bcf8c2856778a6e5245ff2cfd0595cdf0e111e2fe888d3fad39d18669154c65b4d52dae15203728a4d6793986671e24be64b591c573e620b412efa6b2795be5d6a7c98d07b32c6352526ebf009823ea3e4daee1c61162b9b3b3b5586bc746a944209889789bec37731d16395173c936b7e2d3abeba3b0e75b7a8ddc3fdc6363dbe7f39fc03af0b53f4bdbf099f94742b10eaa125268b538eb20fc916fb1a4d4396ce907dffa66f6fdc890112f291cc09fa3b6e348f78c5ba860e5b836431c35650ab6ddc6ac3aeffbee48bd99bffca649cfab5fe78474ff6902f9f3662bd54a855481b50729b9320d355a48c1781d078c6be7686b794322cb959844f8ef10bbf1b218eb48e7fe038525e2cf2b57f9846589951494595bb8e692851179372856bcee2eb7bc675c83f643dec1bf72a85dccf1c07e128299c5712ed088c6c6abba6ef0a704e80381e18549977a90d4d07f7d2a5844cef48e09b31b3b0e2d416cba413e92a2e8748e347db4e4b5f745db3d2179b7e965871f2ffcaea6f5915950bf41e17e2c84978686819363def789fa2ec671fb66cf5e7967c7369443a71e6a081290932ceae401d413de72371fb34031229fe302ed3eec9ab64f7028bcb8103f96460c36f2b9bee627afe2b462083d99604b16b059c3b28096cac9922d1a8ad5eb85fdd9f0f4d42530190059f5267457960486f9355369854d6d63fa247267805ea3e2f2f4310a759a2b95526246523c11bafa9b52211bdf477cc57492dc0097947bfbda644654a0abf61cec716b441555a14db16e5136d7a5075a9b39531e7c5994889a3d70b7352dbecaa814e940cdbb9ea0e0e1e280cce5a329ac92a9644ab97439766f4683bfcb453493a8a3c6b9d667934f308b0fd7c52c3acb3df57b725115d39f86962192f783697daba553b3983258ac838a542a489ec51c26890b1711cfd29b728bfae6823cd46a69c4e204dd8a0e8a5fc325253cb3e8eb95e9b4747cc58d8b5524aa840b065783e22e0cd95f6467f771042a1ab040b45ce3cff57803ff0b3afb11d1c52cd4f0f374b71c2455ec69f0c84b4307d24b26b33415b11fad013db7b04ff3902b7baa75cd83b06f0f883c5a6161c9130df05a85bf7777eb3ac183ea93aeb69085e5031a7261c0acbe1297dbcb11ce6df7ceda5004160df27be9263237053cc401e0f85ce74addcc96cdaa5f08e8957a3c8e89c2e450d6834863d42cbeb2060329e5209ee845c25e100c4d78e8c0a46078ae35946cfee1c82359935d934e188123e4eef54f0adcba1913949b42d4233f89733c41c5389f2c6a87088ed236057fa5d073892ddd3346af131ff8dd46a6c48c4a944037a03c7c8a0405745bb4a2d4ac93b1e6ba8a66e4a3acdaf0b34e42d40c981aec0716d032bcca942784c8a6cddcbe6d91a591b91d4dd827b976fe1392d3bf76ce46c140ebc0ba4ecb9488531c0cbfc013649f90cb3875adb5a2b414d45f385778ef742de42619dffae49e707f4d03ca2ff83b7a359fe6d6f492490dc21b2819e1407c308cd4c2f04a4b6763d8dfe97c6d0bc8a3f0d1bddf9da3a20bbfcd154f0a34462346d853af422e2df0a45dc6462f34fdabd0f926a2b8d698a12193ade30cb02c2963811aedfdd23f13badd336a640cc4b589d3ab7fe69ff18b10cfa4271343a0b11465dbde38276b47b7ffc64ee53aebe3b49c4b40b63ba2864ae95f43e06d1bb1f17e105b6674bb48ecfc774e15e5b6a1b0b4f65d3a9383661c933943ba9490d8ad84a9b2e1a7fdf611919fb7c90cfb9a29c32fc72a2a25ba597df7c690568839dd648203adb6ad176b40a4b4aa3d194d9a03737d3dbb3cb5ded03ef290414f4201fe4ccca7f94f02bfd7e37dce89f137f212ddd290fd0e9eadcae0c13ea12d7ff423d7973b734fbf82f62e544c4652f5da4921e898dcbc3319656c707f4211632a3dfe0baaa0eb18c82a41745a40002d438f5a8bb7e009586532acfee9942f6313294f7889859c31412aba6bb9f79540ded5058b01e6f735e285b0b633f2e26efb7386ee3f1cdb3f4c4d1bcd9cca20fa86d178ffaf5e68c07c99bf375066fce4752fbce29cb21d78d0b325ca1a180b6df48f3b267310ba3cd8da0e502eb379b7d27711521995295cb702f2d34394b053160f5421cb3b14abc4eb4d3ee7416c5154bda5e2b1bf98b6e9f390b1a97709fdbc5b44be9664bf1b0e9097109eabab7a34e1543185403cc5dccd1db76a745e873900faf71498d8945b3d0a55be58198a34d3e2e49e0198d09c424764434f4402034086fd65165d64530ccb0f1e65c1289fd4b52d31716fa12d6a7f688eec7e825750afedbacfd0e76986d015d5e29bbc141fd6c47bea06ca3a5f34851c6c995c04f4aa368e60df57a317adfb6344eb7f21116d46eba800411a038a71aa135641af271229889980b571a8504b337baa2720ff83cd9bf52951e45ddfd6418684996b852b9200e0d61d39c406bb66ccf7dac27193c7d7b39a2e55ae8b7ae1c959b475407cb6f103efefe30010a0325f507c78ad8574f4ba35df969ea7a4209e8a618002386ca4b2825002a11072f1230c3345e6cabce1fa9bb5a876fa7a11db260b8b39bd165fa64d9419f3e096f2ba1b8ba7b1a649ea0a2851264d841cdf8958cf6cd495b0d3a20bd53d0c1cca6020a14b0028464d002d180c74c2f2ba88040f541296f2902d3b8528129b8c3e9bc41f53e63af1574935db27b74e5ddbe9b75d9ce8447be97c448ea924a95e150274aac6ffcbd3789a07aa73c28134aa19cbbd484c43d0b1c8219f7f8994637ec7277e54b60195cbbe6afdcf57b95aefd35ff55ba7736d3814758940cb7bc8ae2ab03d1f71922707bcfc08481809fdbd941ba2ed5cf95b6f95208b4f623d43232917ce65199f894eca40ef9683361e0d47d2feb3baeb5ae4b7fdefb1846082232a4d2cc93f6cba985a53e06bafb8aeaacb58b49709bf8c0f302b9c09f37c9430e1dbb8d3ed37997e8ed76acacd50c8cc2866d422ae0ac829dadbc17af426ee1abd5a795c9acc7096b0cc43bb7bd143a4c56d885f220c07e742ef20424b7e068ae2715e36e9f57cdffff817cb63cdde6a0b8bfdf2505b8035f86bbbeb719a65660330607b0f5bae00990434ba655a0487c090d64401891156749bf37726c6fd8e8cdab5114e526114a6175a79ab516600a8c23f6bdd5f995753d8db358d99134b9c7b0843a4af2b5b8a280c12523cdc64e8c59791df65c183c1861e780f4ef8096aa21af1ef44d6445c8cd1bd2dc564838f088f6671548a5032d04957d2fab59240ef6e9dc561e70bbb2007cc59ea675b7aea3346b1f188bee9121dbdf6fbd41834bff856543c9707d94a7008d77174b63c601e4892559a76806816fb2d17a9cfcce7445a0f4e1d8d709dae3ab588a82046e1a0cb8c6032ff7741c519195b63a645bc2e7e1262c4b5a4f8abbe69766d32e08190ccd5f6364ae4dd28655d320097659265bb31b8e64c9479b5758fe29cf657d0ae67deaf4cb706b2d911de6c5a1faa08bcd63003b12017ec2aa861a3ce9be9f8862a675def6532fb016788434a9be081b192b1bb556265215251e7624de5678150247074ac014d870570a0e1274692e7c58a7be894a879981d3c13f8f104f8c593a1591bcc3be41f999a94c50390f22648f9bdd8b997a267d5d090e514d8189c46cb646df92a59aac0099c8f23eb4160cafd19b4e572c255ea4186d2bbf7be5a9cf5a3ad48af51d5dff950a88049d90f8881c62564ad59706f2dd03b1f9ceae138dc0756238ddaa48750518195de20fb29a533de54b94d8032288c3687dda55116db505fd56d9f9eca3043eb49dff4ad8904ec7a5206759b6ade4292ee307573d5bd7a7fc34aea3928ba75f019d87efc9b98f6c7950f49e36dadc188f7d415a03ff37a8ca01d4ddeb2acda4ad42a6d2ee96368d28a99e89896fa9db356a526467a061127f7a897751c57462898b7b82e18d9e5de97aa5300f75d26c0ccea139d6cc5cf5752daddc3be9227bffa1bd066249599677eb89d222b99ef628c70056d434f08d176d0b0f2bb38869b198859ea064ea2ad77b4a3009e23449ca2f6f65efd45bb823192f5b4ada491444fc62ccd317a36857ad68d70e39112bf38858cc62311c23016ae8663c1f61d3e6e13c6d38c65c4a304eed0beb57def07d1bf94b21ccc16d18b23b1628cc8718791d01278d797982038f93a69d4bc9963681b5ea1463aefe03715819124f2b16c1b7c104fc96fe1caa55e6dc32d7eb5dd25238825866fe49a2fd3214d4636ca5b30cca8a91fca67463986a61d0861aebde5a1553fc86e6dd7bfa045a806f9397bf9301d2c831cd572e8e9e7fd4cd7c1a8c511619edfca535e3b5aeff067a3678f01461d2e2001026e5127b92901f4b9d55e14c34960411af8009f14ee0aecdc241ab43330da34b75a2ab439878ac931354053b19ff3bd54182d1dcbc034a97cce42187689ae973148e9d908fafa15a12123ada106a0b0a39d946b6a6c804c81f6a922bb5ac01db81053429d10e460931ad380359f3256b8422158d8d9466486ca42d83f9a0e9804439dbc2d9e93566fa2283dbf7c5ab41771392448249bc6f30b852ce18550b62789365778a55fba30d80aa571af315e5a6520d1020563c534601fde4b272d1dfc1facb5b27e1e640eb24ec44c0eb817a67e637d838551fa9586fb95f192b3774e6407cee427cdcde82defc148edc82f3f770e6b9aee968962e662f1ab01af0fc8bc10273277768757c3770139d38d5972a4b6e0400c7815bd5f1006776d669445b0c3e922ad3f78808b870ee69486817c4b5200867de77b940d5d4eb4e5e9de60f6d3e4e4ad17ed8952256cc9a8c8dbbbe56341c866f80e39a1c9a8b6810703c52cc884ce28d360c39d26202d6c1a555325f87dc9ca1a432318814298ffac0321a372e6339e2664b3dca19af0960a773e767812a50d94c429d2e5b8d3a9f94934232e3971b804d57d6baf1bdedb587ba0d06f094cfbb2716af7a205a7adab628c59f3f831177679f375ccb03b5cb0820d8bf31d3eb8cd3118c5b2f52b9a8c8409cf46aa570353c4f16bc54d8acb68fbac1e33f44c45f1b09f70476049636de651e946b9dee2836766f4d48f203962445084dc162e4e29d58ad47507121f33e88dd86c60884896c97ddf8c4bd0ed2f7b25b6f7228492100b6172b5a97284ddf3343096922db0a6a680f36f0346da87faaa36e74ef8272cea0a2f89e160a1e4724d2661c87afdeee1a23774261648e20e962943360d9b5c7e5adea9361d98289965cbcd233a20c7027d80146e53465190ce849f5c475d966399f26d70f6e68e4e8a097973aa2d94c9fafcfb65d8018a928dc0d1958056bcd9081aedb1af5755c48ec7cb2310aae5121c224462141f92911dfda61d8d902e69193ad25a8ef892d3048f997c417d79bdc85bdd707f1c559421fc50e7141b6ae2ba02a7d7a41f73815ec5ab0dfaea820c579b798b0ce3d427e916f96e2bf222cfe0c860000905b4a334bf753adcc01126bae2327aec35f0cdab24c923eaf0b05eb91c3a3d292cf2bbefaf33e6c2bcb0b5ae8a6bb70cf3ab1b851a6b132f44deba45a1e0681b6c95aae7ad8991ef5c3817beba5068c78ddf09bbd6715f2760de406686f894502a5bc3fc84acf5ea65f84e5b9c1771c5185544518c40ebe248df1ceb1b755eaa091486fcca996fdf965a599b1874eea9adab24fc51cda01305a86dca6ac7c9fe046c44a672ee0a1025f80c9b91c5881fbc1f27b6a2aef224dc898269de1625d45278aa7165b85b1e707cc88224d98f2bf06426b182adae9eca1dc415b892295a0d05383fb08c7fd24962fba2c85a884400d1860f819787c897120167445f781523228c77ade335c4f3caf5e793f8e84f7a286dd9c5b6658f6a7d71bc252e285b5434f91411e8a2a98fd1244de80d5513089d951895d9e4ea1e67441f076d816af07010a296d9c905ab39858ebcd01ff9ac53f5a4549b09dc03d3c1a76c57fd514fb152331942677355cedd9d807ff241fb77c767e10af51d3f74aad2ab8f6648f2c0072fd7527d6be8ee2e2de23ac0826bca52e301a683e581debc070c7eeb3171cd16eed3781a32258c619ff7754c392b1d8f48b6383e4576591335e58b818282fcfaa0450ddfe01cf0bbbd2f88e1274642b5a04b7786c0f2cbcc16d2dd24e633d72933ed6a9f4e8799b4e7d7c14ee76d743e404e14b4c548d12f9b5aff89dbb3d6bb8c526a6dcc61df887481d461220c276ef1d1ea5dbc61a9800128dffa92b30eb2fedda196aa286b8eeacd506290d8064533cdd0688ecda4117c9161e9208c888586482619ec484b91b7be08b7e9150bb63b2338a3e1c3a0b6590e8be3362d7c674e17922285a13bfd2902c2056a57d674920df98a009f874ff673fc95b8c96d718996622a682bc1ebfdf472f0a309cf40f399f55a2a0e2b0d16d819b943b8fa03d612807e56a0d10dee4170573a1450122051ce6614609ebbc9c2eb4939f8f0a00ada8a79c1f34636e2d2529d213e429912759cda8089d78339d1dd7d2b4834f285ca40b8606d90bac500a86987abffc093babdec280604af6941e545417d9f75a9826154aefc263cb214508fa5d77866cb5872111323b70cc80f2d2c0b8aa8e488a4f26cacf5506651cfc2b3b9929feeeb8b79223e77c518807254257af2a8e0f3ca1608c0efe3d21cc98be6c4381e39c336b0fc3ddd1b8a48e3e5bcf2e9ca7b3319c868912a1505274ec05cb2736818dd4ed096f76f0e6154766118fbe818289e04ae6e2d2f37f4703d5257897d485a696d7bc5bab31a3e0d4b72036429a7ebaf5a104f11c6239863a62480967f212a4a6f2cc8928e28d90e55ecef77f22f4782e87b08441a78e4144508cf80a85ad04a885b92b584a5d04a247a531370cbe23e3def5b5f10ac6ec9f38b7c3c955ef551afc52a8a999d23b36a606c2931519fb04edf20574a6bfac54bc687134ca1d6bba28d7db503df1b0c3aee1aeb1c4c71283781ae2139e947b6a26ec1abcdd79cea68a55b2ea6cd026f2781de5582b0c0c1f0d15c013cfd85d328ef3401e9a93985b31be2064a0fecb0ec69e48603cf2844148335e56038b7a3e5e70f6f9de7cf04236a90934f3f13fb6b9214384e1a9936d3119a466c8408469f52bf6495c00e2ea1e2d796f8befc9b940e2ee9475adbf53a130e95b2cf0946819beabd3bb013ddc0201bbfce5be2add3c3c3d5c8858d51d804db31b9a87ec21251982245f224487a2797c86e6b7dc6dfeaf19cfc293020f695ad17d17f34b8fdda94d9acc181caa21130347c42eb494eb6e7d14025c3f4141dd8735c09081832645881584b64ece140555e586034d9dcc8428e09387676c80910112a427de341212855cad273ff0acf1add58e13878d6b874b7f9c77117cfeac57a8aeb9e7b5eb606ae3c675af88b877ba2ac236c91087cce1e81387d5d53526f1411c10c4e30b1b56f37d963bc917f96fe9e7e5120020f66f05a9779bc2775d6b26ebff453d6bf5a694f9c2c1d0ec630eb70e5647f0c90b544a441ebc69f80432b7210890405030395c2ac80b5ed32790dd9f3899df1382efc1e2f7d35bc89ba5bf3533d5844220181c9f0eaf4c2501a80cc55c27fd183d9ec0075c8d3a100d565809231d0aaf3a8f4fa259a41aa862c380cd8ab9e974ac56e9a0b9d767ac23e05119f660a11aca8f4772a1efd63e428e37df09b1724587de325b29f970926efe5104841e9269704b44e3f5b288c6b77d2ba72d074ddd84e50d2ed080b8543ebb5482b3c08cb704f3d8f7d3a05599c5b4f47d8d6b3d246cac858563c9c9e306079d8f0370cf4a4c48e580f37f522a681cf74736ae9c6ab960acd1e75c1b4b86241312a928f1eb7509672c395fcf19a141eaf34e30f12e7aab3878a219243451a2c149e9aa24418a14d023d54ad18ab3b4b0ae48efe52fcd28a050fc918020d5fba075c2c49d81300a24961a92519588065316b070a185ccfc27381c84a96f271b2f93d66ba3734d44ea6ad1a6c292c2bf8f8b053b4c85cd31318301198eb355dbb4a07a671d2b04981794434f7963ceaa22840f8b51a8af07e5ce59e6462b20089c75173048f81dc2f608f2a3833b557d58f210240e13fac66e0b59ef45d6188c2318bf0b179e4ab001d64c074e9b0f85c33df90819176c97babda690043f648b54c139c120ab44a3e50f1c2aee145907c89c89bd32ceec5e2ede7c35643a5b838934d9b60f865102163d5fa63ea934824620e9b336b487f6b92c83d9050b000e6b6cb500812c92eff3485c3488a5be54a4de8114cbc72dd812b4e0351b77d8af88f351f345b22c00e6facc9d949163e5e850628d8f999ef9c4ef5edb4d24ab3b4b3a175a3239286fefae8aa419a24d54a65820da8d42a5c3a16bef704bdb22dd561572cbb08e83fae38c3c6be8b4dfcb5c7b561e0fb498197e28575373de579a8ee40f149e2f77b6308f5eb7748ce87efb503c9a7f2b8da8cc8f7dd1befac0e3f51f092fceec1006dcd84558a20b272a841bf1f89adb5e57037337b46f86f3c2709c0cf79de13c18ee73c3b935181706e76c605d0dcd3d865c6bf0f256040ebc51fa72aea0549d20d86a28750a4728d0818d7d36344783e36278ee06d6d5e0dc0defc3d03c311807c37d65384f86fbd8600e0dc789c11c1b5a47837336b00f67707f6e0e2870a64c40e643a2801106d4b6dcba763277c003a6fa096ee587245362d33fc07b44b15ac39cf2d364158669df809753334b25d8e5e4c921d0513bc465430765fc38351df2bea7e1a9412f0283887b2d4b385aa6d6610f44400b17c09817d0c40d6c7005d8f006c502a6097508eb9a0c95fd4c722de8e78d3acaf5bc981b3bd591957ecf79124356a0cfabdac4092f1ea1af2f15d462ecd71ff87534e8198863d9774ed45fb305800f998c296381081ceaebd43cac4197b247e06345c4fed586b8e49b3361e703997b41e64e0cdcec72b2e3ba370ba64c4ab0a5497b77a3e9c25844474e29e13a540db888caf4a5746d7792e2689f9d57f8f1b9258ccad8158a6b73c565d4e15a7438f45786c9c74e70101841a586d60333e1841ace76bec04138cd0b621a03de3a5392a05acf2f0c44e267a3d92acf358d1aee2ed85f3c858ae5455ff9b8007c22bfda4ae704a12e00a2cdf113b19f87d13f9818ee5670d86f67692a174dcf0774eb0e6ab46b14ccdc68a0d1c9b2b381a55b58038b8bae61c578a91d965a568b0ae2401419f2545df1007bd0b76931c9461ec5919c612f1e81bf35f70510e3ab74db9c101b58e3f0ce63eea7b8012164d0d382a274b1e8169a3911ae8b0f0fad970887f6038376794a829907290efd3a7be523c31873b95a0fa25ebc9e137735abc9ca00a53cd3f2d97ade1c7667e4994dffe2f612e64993b47fd611fc9cf48eef3a523aceac98e846e33363319bd08dbe1cbad907273f35b93b10cfc7ca9ae7d8f2f3bcaeb4d9a03ef4a97540e6c49a8d218019a2420c1139139dfba730b37e283591931715bb1037e7b86345712f1308fddbf0d2f5b6d33ce26233f65cdf260760742de8dcbc6aa371477528840b7d8cbc761f134713e97d65722b229a3091600ca8a632977e828e8d038f5a9293bfe4e0a4924267bd20c776a216626a6f0b943e51dd926b7f74d35260ce4b3a3595c49374baddb975a9ebb6f87309c444052169e18e919ebeb546f39c896b3e084201602c1d2bd50a4c917e9982890a2ebd1574d32cd40c1a7b91b08365e14ae78e621af7b7c63c0f868b597ae07a8ba20e3387ac31b13670a13f1b5253191692766e17f7b934334be6ae8c7136fd734333ecb852e3fbbed3ad3ac9d2dafe155e8c686d136061bce42974fff56741162876827e96a495af30c38db340833f151aae47248e994973534ddd6a0a7620af5bc9f1c219d6c217f7b4f578eb40113002828e30fdc118eec802730cbad4204898a13084733ca34cd2e7613693c808b73ee6230c21dd211f15033301ab755cd1fd51c1adefeac65a5624d189fed8985c0e8765e5753b2f73642a0c7929529db512b63c26212b2a76cebcb0fd91d5acac5c0565fd899def3ad6f66cfff683139594247d7f42f2b672efef1073f8f364b7f06718995ce8313d2a79be23dca2ce54dfeed32de027810bcb48640d239f898be840d1ea63f19d4d5672d173aec11969968f5c5a4bc5a7e317cfa553d60a8bd47e2f017458999a5804e91d2e924172fe06e784edf18de09f7235816aef095d35c27ba10119740f8b997adc722560abd2c21da0e356b711658ae865715faca570ec7fde97e16437a115080e74301936476e0e3ce0e664ae0e910789315555daa584214d18c5f9e2dc730e7c2aec366f09a0edae2c6813a192511ba683d21b0a03c46bc153d2f59e351f92b247b9d431942580a37c04f0e07e7e6580850098fd5521f55cb9e7aa8c5aed7a366596cd6dbf3faf20b1802a65d8ea3559d5c7580a79213e1be04e93c6e209b64b55f00bb733e685e23b5310125d7af3870821502bfbb193c5ad799b6ecd5f1e7610c3134d2997d88fa2963a65d86ee746a165a3d75fa66e926895ef9e4c86c103e1d3ce13865651794a2c829b9627acf488037e02973b8a2271f5ca0481d755fed16d634231f1d06d8d4bc08252e159c796982d8f4fc68ca0e1951b134ed26dd78ba5b5617b3efdce4ae9acd73e6d7d893805cf1723896d7a4324ce20379a92ec573a19751bcc4fe28b0af8d2c09fe2835200be0e5c2c3c7fc7b50b679c66468b34e316c5ac5dd348a7b2a569ea0daf9d4b9efcf8ddd8626b1d5fb86af0a8639fbd0d20b0998689eb8310eab5710ea6792707b39bd8a361ab1483d86aabb0b5e7c1130e2288a94c8efd051d05ce4440053ce30e9974d0be57cfa044a7c0e1bcfa2aa7db3e444f96031b8f046b3ec06d62ce44f0f8b943efae99c2f89c4ba9cc0c0dd1ce6000e31547345020d63cab5421218c1aee39f49ba94f208d2052e951446bedc6e41ee6645aa80cf1f1d99a6e1179bde6c398f943fd63131332cd74f0cc8283d26d526e3eae44a0125c95fa0accb3c2eeb38cc718dce32aa8a0e0d87fb1cde0f2ae0c8520b61905fda8399a97d27fcc66bdbbe73eab8f6edfe71330d1b0656a96451ba996cb2f0ef44ef03e9059ce9ad374e5050f4948973f9941241107c69fcbfeef3fc8c1ee8e4c61a90e5931c7f1da7e612905cec43b751885b928fcbdc4bba461f13d46fd7b247607ab115b600127b0dac5708490d1da2bcdcc60d3669a9dcdc36a9e25bbae003a69b79e5117b0c860cab93504881236f69d05abbebb998c1c7f50e9999fe595f408b3c94883e838678ec119cb7d9b4736120be6df35133a7c84cdfa3eb01dcf571f27e97a6813641880ff801c10099abe456d4477031f19569274f1eb71188a2a9fb0bfa4fb1c46913dc629cb4397c86d5c50b4b2d5a1e874d5038c2bd53170579b96ea42edf5c8ebc258e74a7e93b6f61856c5cd63110aa9d58e1365094ccfe4fdbe23b2854c09450bd9e4ba3a919496571bbafd82457fc93e6d1ad3e631bd086ddaeed9d0b85d64511c43e66a70e1f61a252c7aa0299aed61673387a26e06bd1ec05a1e069a25df4d00be75817025eb236bd69905000513172db8aa6dfbfcac51b6718a16747e97eb1011ffb4b7a19aeea2e53f5b03ba03f842f6c2988d8c7587bc49ea224dd1d1d9190cd5da93fbc6191f307629419dfce93df9b777b6ecd76ab2dd674fc6c65455d023ca7a6b9b875ad7ac77c547c668ed2d2c363ad706162d667af329ea14a53ddb51e708b9764ec08fd12a70c81aacbabd270642c7b5e3bf9e99035ec91da5e99fee7929129781c8c9b315e508c0e9ec985fa07eb516412f2974a864e9bececad3df030e0a199e6ec93c6a15ba0991b361d566686aea3ef91412bbb1a3b429b9509833e189c4bca5ba58bc5a1af15cdc710b3733bc6278a73b5720bfed3c5943c3b0fb1d559f2e2be64d008d6bfc3c2e2981c074c3d7c8ba2dbed03e538f9788d2224f1af20281144e3562b02da07afbacd9a06391cad23c3370e3ae2856be6785aca2610a2003863893de9f05e79c3ebe926d2b317fd267d047ac9b54736979ff562b2b2112942dfeab8c06c171175e5364a1a12f71181c16517fa9e0ed3f5a1d8fd62a12914534526a8e10412e1c5bbcb1519600fd9bfb6a65f80b14f09777900aa3217b568ed92c73fbaed06eb4b87ec23478de900ee481441636bebf8af1af25797de85aded69e87d9c850b7f23e5b8749bf34a6a8e86552758cee41943d3020174493f132af22a917b1c907a4d5bd380277e024fa5ec2261cd10171d0e86e08a701f091fc9cd7ffbbfacd14ab501d662ed1e79c133b25596ae26cf1dc489da4319ef1e55c910616ef988782fec32e7a00eff5bf54921d105fa8d7b66dfb2f22e593a42e1a187f318a8382f1e9f1a997c5c0524a06cd2bfa310acd3bdcbd3ccde05451b4dd906a5a726bca0a43b0e283e54cb441a74a100bd38d799f589e31cb81bb287aa950974bb60a875936dff01232e4b4dd69baf1e6bf8debd666771872b6a6be5b63e651b822c637a8d93dd438662721f97578377cf9e5d698c8541ce3aaee2ea7fb179dc6f505ceb83a0e7039ddc76e544bfe66c52b5ebbb254dca845aaf4f6f2fd0bf5b5badcc581668c48cb196987dbfac51e44d5cf4ff52be8956ff1f4350a66e5c61d5d77fdd9a92f4af9df0d4f9ef59c73baa28ea5450bf7e3ecf5a753ce8b5bca108bad146afebaa7be808bc29f6cbc273ffd81154725251ce733260453e511e9c641da7f8a208b487d0f366f1937eefc31065063b9fe6cff0e3440f5d4f4ef6ad9137532c969a0a1c558eff2683c91e9ef8ca7566df3f7dd7377d0884e22f64951c437790e5cd0f497d4277e64f597e5053e4df5349928a09241980156a5b2ecca50bc9234e5158c85fbd3977350905607dac506388278f8872bb8daeee198ce74ba23aad15ceca727b365f76868b27b80f0ed91fee16c221dfd99e29b8ec71a7c24de598f1439d2d1ab6aac8361c48d66fc885c48fe41167e217d5fecec894a7fd2f01694b0d84471dc7571530ecdd33ff235d83e549968e8ec5a3534e509a71751cb4443ae0fac55c67bdd0952b74b950afeb587c2e025bc697e12639290a9bfc6477ef55f84bb190234c220df0fc23dc9b3664241fd0dfdb05aed9df3a33745db0eda7ad656f2176a12fe3341932a6c77d99d8fb5eadd299d52a93035b6031371e8dac322e31050fb4180fc1126b755160f91cfb7e51a5e66df893c32e98e21f0f106639921df60ce6763a0d7be851d980d26a71b6732fc51b30c9cdb83538dc7cbaf45c6ca1412778e3681cafc483ed3d1703c299a8aac3eed6f95181d9e346634190f425a3be06aff7b24be113139f4d1018dd94a8b334b9ec13e9f8581be3d0b33306be100031d4714436938a2655b676af8d7481a5d71c31dfd314ef638ea7638095ae23d46a25ba7a6d7d6b56c2010583a6959a062787f28109fd6f150cf4ad151341d71fc9a55d119be3ff1efc64c200892dec3efa2d960c5cb4e63962a0c9524a9af3e0db946308e96061b23678a57adadb5a50bd311251b45dcf1bead594eb04488c9e80869d86e1d96e7b4a7186720665fc73b2810bbbba5152747e58186dc40c382106a9ff10bdd56969dc05c2842e7ace788208cfeca01412de9bf7f9d568c4231cd95af4629b777085bcb9a42ac2e424ca5fccf6b7fbf12dd2e396fec194e421a8db6ad8e1c78067c4e4fe335560f7c73b5b41fd47cdb3f61bc86080093518f6fe38ed07e92f1a1e7374b912a39cfa173d238357f516e039588dd4b788a5973c88990938c59444461697982614d9eb86a1f002475f7f5ef53c878b7009057f41b2080309416001af5eb5daf72ef2a435dfc2016079d2f8a82173866d145876b7ac9a9973c0d8a603400c2996abf21ccb199b08de220bec1c6f5878f197b2dcdaf7fb54bee8e25caa3925c8ff551179cc8716f31df8fb5bb8513eb038cd98eb519b7108a38970cbc4376a884c9204b1b067108a96a3a3ffc9578e89df98c4d55ae34fe4877d8120992db79a5b93762917db2d50664f09a0cd2facda5208de86a234537077766fb64ff04d74fb0b888894000b2c9806628cc71b695a172644f5935cc6c793c2d04a17279dc16e3349c221a9bd853e61302790719a038d9c11927a8734a709c13498dfc7f9f5cec1c211099939b9419deaeb639ade215f04d4760ba082eb31757a77178d3affffebaaca878e89ecd127ef19431d6a66518acc0abf42664d7fb97bb784823dcdd9f03a940b3a99cacc8ca6ccb98177ef7d20c382a1b729c569ffb9c4e11de1cde9114022a72532c384d95eb53ebee0c64ff22036c35260800f9dd35daf3b2d4f11a3fbc834b03200addac2cf8dac5a68b58117244f6a6941885c07eb738df5362092182e8a90a9eca0b3e62fc1dda88389220f628684c160c845c9aec3fb877738c6acd7d1128439d71f82528cb12ba43ed88e8f866b22c27da0283f2e0307289fedf2e1a7e2ca3cc3cf11e4d5cccb3ec1c540babeac9f190d07c90c78629b7fb4934a7f185b9da837fd7c50d8de5d11dc223a4a1df03d78ef58d57893abd727c9089f5f046691671d50915f5c6f61cc45c589886989c27ad24e6531d02a09e7de696bff30a772528c17cbb4fb34ccd735116fdb3f6b120c44ccd0f126a6ac15a9a79d6b2970f85cd3b1451acb3aa7db43e5e194667e47242e0154bfa4a5070acc8424d6362a5c52f89fad08183646df765ca5898b947abe250b5eabc3b1c425d4014cd654d01b98f82aa8226197c7d63b32783c09a3e791a09c73cb4c497cf24abcc9b562876f6a0c95dc0933b4623bbe43993d7638901e2f9950d3b4276521ee6fcef4b61b5314091952f1f17a1a8ec2b3e801489436eff4cd90ade9dd68bc702da85c38c32eb1c36dc16248d88a62a69a6d76fd88a4daa071ab1c9fb63bc5d5e21c4f94aad72d283951e68b242d886c5d0614cf82c22e8dbdcce3202a5deaf50ff0e3470dffffafa34709e900921e8e878d2f551fc8a706a5ecc5ce06e69d4c0219877268e498bd3cf3a4d099a37812c0bf98ea2b2b3934cb416a5f1f7c501689637b9703e2a86cf44569fa9454568227f663c6701e88a1aa0ffd686d316e96c3dd87108e9ae2132a6735022804995a6079d8dd58649b19bf02cbea7c186231b7e8b42a61f7a6d2bba74e53e83f80b58310fec7bcf09128ff6e40cf1d67ae63de7d91f7594f7ede87f7902a3a43f64befc53cd27f3b85048cfe6696fb862abcf88b85b698239d6a4c5fdbbd7e6344e4f981fdfb7c26f7eabdfbf1b04fb5db631519e1918af3c40bf4af32698395f00efed14f0fef8a2ee15c07ba0f86100042df28f005bc8d46be204675f640bf42324641367be6af8b812ba172cb8a6344529d348273566d914a215e07f6b97f03db27327a2290ae14149c24ff12af92c49ca5bd450e59d7e0b04279b3e77263270c20715771748ddacadcc8f6d45a6a5f7ac8d8e844b04d2445346564d1ebc67ae9eaca853dd87d97f7eb66d2b1367796ea7123287573f6718f87a3bdfd75d910be7a89b986256d0110c706c9710cd2b836c1d4b9875d510ab7fb861c03e1b6f7e09082fa67d6d91a7b591fe7843ae59aac248206f9dd060309470af77d9b28de3dcf563b0ee952da0b7bb01dba38504ba2f1f99ce92af9e75c16658ef79679e77de63f32a050548f7e21052ba086b20906c41269c91343818870dea99b3092346eb0ba5598a84c3839534a5a075c54c0dbafb5c571411d2b06fa33ca13ae8ed6798c38d5c6ebe1cbeaae5832251ae704ddd46b126772ad9454203ef09f7754b91e09f4f87bd589a1ac78a498482202b727b2fa5425801a139430c53215ad15e6043b790829cd3369c6a6b2755acddc73dfd188c6061c6490cc6fa499ab4343c22a0731e7e69cebd09ea370f2c6cb697d7ac1c9ed8125627772cf6b0d91e0afed2a6452aa94a99bee8a3a5da7ebac8cac5a04cf451baa97b81161889c2256143c7b12fcd5aea6f08d54160bcf322bd9249e0caa7ec8ea506047c5e4c64c4c917c7c90c95d4144570856ef2e1f04652137221665e35911ea914b624626a553155aa06b7748baa190462276d7184c63e9b0f0e6df8cebe8760a908874f3a3fa28c98acdc65cfb90b802ca47ef9e5fdfc2375eee37aadd0242e9e569f1f34e5f1d50aba268579fc3bace45381a1c454bf6a42392bf9441609c387e22ca10e39ea990f53d51aacdecf40fba94784560867a0e93894f90ac3972a93c04496e5dd2a7b609474ccb3a9f7c2d9b0209d6b65b0d0934a4fe71a7bedb7218ab24538fa980eb1585fd50303de808e7f41d16537d0d39de9bdb908111678e56b2c81077635d1fcace9a9d73515f12eaed6d22b657437247efab9b7a6e2ebec22904a7d8abb70174a808c366f6592e1e84cd8ee95a5e6c8d84a53ecac91f32e8d5b398fd091b33fddcdb29b4f6e1131c9a5ecbe6e595eee07d44851b40220ebab6c709f7ad3a838787dbbd1f1eb4119454fac5547b5e1b74e0a3509fa296b204d1a2e00242e6206d04da162ceb6e46fd628dca11e2f8069c261dbcae58c874e6c2e58af8259a41c56ddd0c89259bcdd6ea0e3008d00a50dc881ff9817082f1334b3cca6cbbb3be15c6d3d37ba73573732f6643021380561a3c6a48951cba50c553b57b97825c71a53e63d9834b71c802cf0c5d93ad811a9ee26054621fa5851b186228a56d253a2f926429d2572cbd9bfc62093945f2854446e0a0dccd91fe9060b525df11331816ae12a164f43f2973ded31ee6f11dd5eac01ebabc76bfa3dd13e1fad4961dafa9bebfb34df67a332a09f4b11f5da5de631f33439ed83843943edf9a10d12fa0a180de9629e56c5e0d2afd9811636431202daf0b690123221b31ab9533bb49cb5546104fa7af7a9a6faba48ae56749054b15581f2f9728cb05ef5dbe59925a8c8203a1b46ac334c03b289e64562edf7da8b8b012806f82074b2588083b5b7f6ee74364c07f9666933c6da4ac10de39451ae4151aa852a8bffa89d697fa2fc607e776ea0b970ad46ff21c8e909498d08382985fec0c1c00c66c78007f7710442cc4043ba4028ab51be9b624a78c93e46684f50625f6243b208edef0ddca5007ff6ec859502f449b90028136a21682305d3fad270e96829a383c67755b8a3700aeb9ba898967f7914ca0267b9c308533b83155baaaf3876e6825244eb84e6e378f9acae54820333001ad7a756d6ca65f6bf3261d87da9e988c809ae65d39f698f638804908d3bbdd1d8e0f56113affccc5dedc3dff478987aa8f784fc56c949d8df06f9ad8a932e190c123d12db3d6b019797d549ed67c47d8170820b48855c7e33f11135a419119067362487bc9145aa3768e5f5b6c8158103f9369f0d4a49f8b18962921940ce479ac49da3ce0ba4185c84055ccfc042e2a8c24a9871439d9b5709b6e1b456bf0bae17dd4d01beb4fb03fd58696d0c714985f3ca96ec32a7d846b95997e97cd81446b2be4d12965fb503f40ec62ede657e5c2a5085a2753e2b98baeee6650038e8c38c2c824ad802c07571e71417d2991a7a616c6ed745dab1cc7f1ca4a894052da0a2fe3c92f792ffb107a70fcb641ef81479835726b7df9983899f24d325cae0dd3ed28bf6d41c14087ba57a602eda7b07a3bae832a18d31d87fa2ecc42cfd0859bd9e7c49b805c6a4d760605afdc4f94abacb6014d3a10a2fd32da10d27326552ea246a67bd3fb3a1649c799d8fd0be10d5c67664e1a61aab388b3c38d1ea104f0a01a308da6166055b76193bc09e4d818739f8b1ae8a8d3683667d1e4a42cd635a53d0790e5d0d3c40994b30445ead560457f464451bbdbb8085cc9cb60296cc80b22bc4bff02e6e67388f1667e0ede155beeb55ab9222f915db258dc98c9c869053c2590ae5994d2597b9192188bb0ac27b585747ee2813f289363cb805998f7beceb22f0945d8a1482029c50e0c048280fe1cf9d5c3e817f28b0e9e88fef1f7f7959fd39fd50b9235b6f6a3e46cb75c6ac5f09de434253755eac7248f93f3c8119eec417049e795862fbd02aace544ed217653ccbb6f6c11f1a7d118f00ece0b0ed0f7226d3bb409b8ddd1cdb263d28d49b80c0a4709b46fa1c42b97d5ca6340893a9d44367c731c1a9e86ad7a80e6ac7c12e8c7326e5836915cbf56a0898b4217febd25f43a9cf48e6447b23fd2d0d8375538e1dff17939f657197f83671a45789844c225f29c760e141d8a9745546018b4b445b760b835130e0c14715fe179a76cb861c7d2d88dfcb86e3e8cee3da0b0d8ae48905e410a49a2b7243ee3a0f4259c37c402098237de70d348389c04664e10c9ad73c28e991e4cb4d2cfdf6c88fe8d70c04871eea88dc8a2dea732fc4ca4045c816d1d6eef7eb897606fdf7a7af0c498bd66d6f5a58cbb5af9b94ba9ad2e8ce5f88e4d75ed7a99787f98a494ba03caa102895a20d0ba4a075657042da55c3c38d2fa487a825e8423074bb0ca6c1c05f8e8a31620afb735e9e36329e27e4e9ec258682e830100703095b3b7007e3e8dcbd0f726867b8ebc12d8696fdf55eac35a1a594908d97b6fb9b79432c91490088608a608f485ee2e43e34264c50a298e608117608e44a071d192022e6420c317129080096d6b424b6bd12d836be7f5b3c9267814bf5d66b45dfa589f25e39b6969c81f79a9024dd0a841862c5092b88173008329b058420c1e2445296d4d68546864b4c0053ab8a08b25322824f0e508ca1746608146155a9a49a56de9a2e5b48521464a0a50000518472875818d2d104879b2c2c4033138507a02a23e2575da144f47f0609f8ce89393ed1661b17d131f82275c6e18828b0d5f6000b3f12c2bc25274449137da3cf863fb287ddbacb51192311817e5039c734f430a466a9ae6d58f68140ceb68e0bcadf151d2cc61f76c82bcbe7d08c9fc0cb4d75f00d133eb18258dd1226a14f53c9f1ec9fca1f69ee1c71766f80ec7281fe099331e99cf81f9f49cea11044ea77e00b38fb3e9d9d170f5277941f6e0e58827d814e92fc826b2d821069b6223440e5997a18de6fcb587476a0bfa29e5cae591ba02c720178f13b47016cfa6734e813b2ad0c673fb5ee8fa7c652df57c48576daaed939f94dbe6df16beb6158286d8af451556d8669af89105d7dbd8f09290abaa8afe52d74e102aac1034a47a41ddc339706a1f329f654bc07cbb94cc9ec244c9982ce21975b80aed2bb407b50f19f32dc83142e64bff315feaf86ec0cc9a184baec0c14ba7cc339d8d08e18ebc47416eab92e308391e36da186df863890a984d98e18f2543f00efeb6b4c50fe497ffd32688954b14cad28bab47152964516cb1561d51ecccb19eaa71c11dc5afa27d522a6389af3e9974cfb6a4c43efd54c5694a699a5066f3c9d27402f5b2c1134e684d9652462d567f92d2c4b4040535ba7ec9b5b3347b524e524f9852506629294d559cae3c2d41a58c46d72fb976a6cd9c2fa013865c80b3f08cbd7cad4f0ca6faa4a20ec6a9360752b08c668f65ceb1469b182ec06265f4f503302e8b54a916d51be812358cb9e4abb797eed98c6611fbb4d25442454c521824305fb7a31e43e5c40d5f534dbefa58c34819814a62928ea46a8975aacfa4b169397e339a3ddf189d531dcc5118a44f4cd2d794122a5f534c94befa8d715bfaeafd39b5589d0b73ab8f9d910cebc899975e35d053cecb3ae306be6d28bd5038c41d305f595f63531c2acc8f3abefae87a7d75a206632c7d952d64f5ed2ba30d8cc9f4551c92ea78c9ea33dca935b4f6debad3a9202abcf49d57d74967fb8fbf0c5d4d2fa0ee22d4eddd3dbb6738de1d16ac0085178eebe705f4fad101f4027a3910d0ebe7f5f3027a01ed88af5107d08f0e1e3a5eaf1716af17ffbc1c2d7b0d999999999959f2558ac2b246370932f8b5382d78e9952d9d682f8dab019dd0e21cd2e2ac341422d2650810224244bafc1069b55a2d224243ba0c1122224424888707a4922447bab0c274f98985091315e688509756ab4b0b8b2e5da49176c6f4d6741ccf38d7a55beee17a6a8fe6dda090e65b986473f77a7321eb5a98a4e55e0535df84aa6b6112cdeb14d636af6192eb9e062699c23e25889b52bd0b93b00b69ce8549eccc69f799335d0337d08255c6874b4356ab882b9dbb67173f2f20962949a963ac8e17d0b6c9cd371e3b403420201a10eb591008100f20201608c816fe843e5c4bf3e4022d2d794c73a9c6a453cbaeb5b59f9f76d95a776b955e2caa0e3a86ececfcecbc847e767e76c49f9f9dd7ce6be767f6ce0f11d7cecf97d7170c4813daa7d7195cf177880c99bfc2cece0e941d1db08c24ad404e909a8fd279b47882944ea594524a4929953d249d94eeb4f87a7abac0ebf592b40a91550cce12466ee2ce8fd4a4a6f99074a016a70ca7ff5090c70fdd409ccd5ae66d0379fc4810e8473ad00f0fb9c91f1ee14bc74decb68fae9f9f2e1e205e2691e6919c33ddfeb02c07a3a73f3f4e4f9857b7b3fce8af575887e3e8ea6a9add9846c7e295d2cfb76f639e6ed27ced759f03754aa552a9522b4fa1612bb01e215d59cae2d4a2bbc501575155bfaae18bca1deb516bcea9d15aa9a452d2fe566b5663cb3562c26473da5e9014fb86e0e9dd0c71a791cdc3443d81e9b8ce696f3325b6d9b7db70da36256a372ab3bdc6963b6e4cbebdc6966bc34481a95e9c9aebe8a4374354a56f57f2bdc55aec2dc614035ff242e76870c74de9fb6e4adb95e6115b6c117847bb06e2b00e09df3e823bab9238a7fbe6c4034a2728644e318115639e02616ccaf417a648e79490e992dadc48bad3a5f3cf39a5a6c96e2a25b5150c398479080dcbb2b839b92e35e7f6f508f2c22444b04f06711cc7cd9e6f4bd23c7269ced5cf548f4963a56fa91eb2b332581817e4859c821f3315700eff8fd91416f96b38ae5ea349813c732cabfb40e61234b71cd7715cc74939a59c1c77f40409ca10aebf12c07e03e546ffe5baa122e38e3d1cb0b9750a540a58b7a940edcda3856ebd1dbcf3be4c12d056b9784cc3e58e2e7e97d3b7efbc7e7ae5b9387bbc50cc1d5d5d18e32f9c60926d88b2810905429e39d568e9253352faf69d9f6faf530f609817b69adb5d2f233fda5a29edd6752e170743ecb258228b752865b1cfe49e1cce691759ac1c51558201d809718b2bc3d166aab6dccf8ae3f72ff699ecd3f332a7dd36b1d3192ea4fc5bb9cac3dcf1e5c2142195afdc85cf532ea87ce536d28552feb9d0ca55ce291b193a20e59fa7900a79e6a4b00a55b556fa35cf1cf0a7c7ab893b8a36b2dd6513f439bf502a641a6fe536d672d3f33c4abdeefb5e9c15974b14dd5bad7bad6df21a36022da64cb111f22e9712fb6c4b301bb51573092798949aee28ad482bec23ffb33641ea7d16556db953ab5553524283198b540edef7799f07e6b8e8c4f163497fd7492a25e53c4f438319c70a68c591c4b52c6ab5f2115233527f31aba206964b5dac731e69cc1a3b50d7c072478b03cb1deb92522b5524d639a3359d65eb518bb63ac95c29a594d236cd9eef6bfa9a3e1df470958bc43e8dd446b00929efe625dc22f8eea4b19198ccd3a698b7d40fd5cbd00715a5314ad6deabc43e2dc5348f764d488548acf4827d6638bb586f76ca19ba4f1f9969e5736665185aab648eb2f3e936c926281eaacac379751ecdd385b015c8300d6cfa0a53fd6897be94a309146584f9109ea17802c3a5b0ac2c6e9021ce7b8853a9c2918523cfb9d4e84beb141c92ae8d4158ee185dd83186c088f4917beb9ec30da2df79941be973321e9e7c009e65307879af3bd583c63b55834a136c38e79a34e103e7dcb24fca39e7d807471497a684b4fcf3d5e717e4c005835055680096716f5e57ddd0484df78c7b74c63b85821cf333a1911a3f62df001585f935337ef9552092fe1af7b8a964aa6a617ecd0539205f3ea782d457797d957c5679d090166db44024f257e107361ca83fef0b7df47f2a2f424406546a7870f22d3f95e7799effe8f76e2c467d7cd97cee39bf0dd0e6739e32aad555ad56aa32a8acae6aa652a9fc877c9528b6e8d769f3b068fcfabdeede05c530f7feb8a158234461e52af7e16a718a4b65a447a517fae8f7647f897954ee7024a50e10c714f7ba6a476533f3b5683313fae89f519161446485eeb9e1ed458eb47ba07966be3dc9ec99b0f6994ff5fa01baf2ed3c80347dcbf07ddfa752853b2d165deaa38eef732dd583c63915e4b2409bcfe57f4e03da7cce3f233403fe7c3246774818d4624d39ffb49852794243bc30680ad0e45403549ecbd48fcd45dee45429b934b4acc3f90772acc3b904a9dcc159bf0176a037bf1c3ea87928a53401af16db27f8f3830a2b040d69750b872597b4b3eed96693a67ad4272d4eae48f5a879891d47751265f3a63b5627efa479644f95d239154a8bd3554adcb156a95094da368c656d6d52a5b9c548a1fc577de4a09d93230c4fe6b9e62764a75086b295aee090dd51da4827827d414a78e610c1a0bc58b9caa77c9faf5ce8f35598648af4243264ef2fd431650a92ee6595163b676173eab48539e6bd3a64dd934bdb0fb773eaad29d78254ee905d385aef9c16c9505669514a4c2a7969c228bf0e5550933b6496ed87ebb975d9a5452b675ad5b40e014b27706aa3ee40148aa02415213961d9097878969d00ca73afbdac872e3f8067590f48efc9afc7a4148a940e944d2090e06aceac23672db6749acd669317ca2da1ccd2626bca1d89be664181869adc2159506a31944b2dca9772a94525eb575a6cb7e39167af9d4b0e44223fcae752a9dba5d2eca1b076b96465ec87eb310986b2ca2a863b7d94f248ca7790944eddc361a078c274ac998071328d4e00c35bf1a38c3a82fab1957c77d1771b7d572a653a8899b2a224d9d1938c4929fd877c79479ea1b0c4e929944e38d2b823fd0f8c5c7c4518209e90c2062398d20014881185090c6730a185b5c8428cfad48732746003135146200397091081c40cb8b0820a164d2c192cbe4830b088a2259112313c0103982ac6f8d044dda1cb53ea97a5e0727425072b48e4c00c3b7b585d6859acedd6104659dd23611d3541b30e942eb5b23b4bab5083282076d0831e76680113d8d8fa9af484054c28ed00090dd8e87aea42ec7662f1f40a590e462c035831828a1834d160c50e30eae2ec196203295d9090a205356081514a2995e1e28e2d13e808fe81bab738a5738849885deab19a877e2dd9ac16f370959616ccd31e4ba75a4829a5f28b146b29b5f3ced69cb37d9c4e434d76111ee34ca2af55db2c273a6ddda0d5795f4ab5ba323334ac1a363e687134a9285b52cd0d1b1c37394070300c014784114810eb7b390008800e71041d5145431f4463adda6cd75664395a9f13e171beb31c141756cea9a9af1ca821c27c6f04123e0e64580e09a28a869475aa8740d38cf01867f628d9fce39c4512de9b23bc4745789ce7c086cdd4400be1bd2d7ccf82ef711d08ef7939defb6ede4be1784fb5baf1dead794fa6f5de0c8d8df7581b1843111b32e7cc1a21b541f3de0733efb564deabb9efdd58bd67a37a0f47eabd9befbd1cde7b2074ef791882f61e4e7d4f04fade089f9def91f0599061392488a26a8692454ab599c73863f7ada0bb3bac49ac339bde4845629ff60d09a97b6a62495596b638e962d40549290bd3ace9a753a3e619372746546ac0a43659f2ecb5e8d989253a3422a7e64ce55697ffd904b15d41d65235629d559542690f8d51ad5297ea96da54549f54a72aa566a9b3dae567f5f2b38ef1d3a97c32eb930a55c593ec8a2816013cc61943a830763b29a51fd48acaeaca8a69d5c528cccf95979f4d7458255169d2c48f2b5913253faeb6fc5ccd564d3f574e3f9dca8e6a9e71d512f38022ee780305357b584b9a3d15369192ba16975bf4801615e1b8a2f2002a77951442f14d1136966e70ba29e2a6082a50bc4a5ac11d6f66493ffd66367b5aadd6bd37b391c6e9e78acacfd0879f3ed28491e3062a2a44629d19357b6ea870ce74a5d8d2cf79c3f4d38b609d16963bdedc14f1d39925639d596d6a6d45754f45aa8931a939aa8182c3959f2c26293f9d4c20432beaa74a6602293fd618fdbc01eac79a273f6dfc5883f4b326e9670d959f54b2989a67bc819a35cfc892b1b64c2b584c3fbd5932f60921960243abb5ca8d8659953d38dbb57776f6d808a9dc73cf89607563f7526085795d675acc982435ec8b8c86a3dfb88b8f3a9b3db5e9b75785aa513367739005fcc5b3ac044e5f7f6426ada879644c9e7efb5e93c57ecc36dfb6e95eb804f5f2317b4271e66cdfe69b6b9a563924122031756bf5fed63ca3fbe75d78674e0a2ed89953619bd72edb6cf6a33e0a2508335bb6cbef701cf23651685e674e758c946f4ea3d8a7c10f80b0cff79b9fd03c52fee636be32b10fff96426be6545f39a752b833a7aa7c1526f15c15dacebf70b32d6e9b50a7695ab535208961ad76141b728b1b83b60bb039a78280cc1c9b2cb77b3adfdceb402553388bb3e1b4b849b96d33109cdc919986cc809ce09b0b358fad33f69138d5a6562d16446405190d627e9b7d8d65d9544b2400b3c94840e54706f3dbb679e5192b54edd23c5a1540ed364b6caec59a4749f3b466349be6053de8416cccece6c1ed9663e6f4395bb6a47e5b50b775c33ab34123fd230e1cac33ddde96f526991dc8685b6a205d2f4a5d6a9ae6f4724ff5add6a1da4401cd842996e725304ed04e6e7d5e02c30950b3c8355e2a89fb79b3672f3c534e2d54b44091697122d3a28456591461703ccba268e2707ce1d99d3c27299029c192275270012305164e6e38829f71e80c87a8773fc4a38b887da4e1f842f7cc341c5f78095267213bb670624c9297432cf018e30b23cb9ef0f247e46fa106788c2116988bd1d35003ccc528898fb67be662f41c728bdd4f2634c8ac5aad57c3816d3f9b060212a5943e551ae329a5746427908679ea9b56a9bb660f7de205461d07a53099322ea784e8132fb0275e609c12ea2c92c821066b07ea661c3a83a094fa0cb9479dfe3d4165508413d77b96c5a06c65c49a30c544f0f30c26942db5528c668f71c261eebc1440840deeccb396315cac12d7c6b396314a35d032260ab7b4b5008a2186d86626984f6ce124169912105cea59a69483e4e47cd5966d29e5365b945b6c55aacdad6ded389669e2c9e69e7a52cb3366baf786b3d0a96daf74d2ba554deb6acb590483c01be4b6f574bb4d960b6a91360f735d77dec7c904cd829a9c9ebaf7e4164110b8ecc5755d342e5317c4b320f6e155102d39ad9c5b6b73ce596bad92d63b67cfc933a7c77dcc8e02083f549db658d9ed9c734e6e247a6f0997b895d0809f1b28b3016f52bb695466033f5d720e7596f9f9544ab96d52c620e381e7125b57caeab7c8a576ab9a9cda66399ec945e6ed7ce2b870b61a70a2f0962ecb586ef416f7b8767c335c56a556a920f7876466ac2a35b3a53eed6910ffa1ca3e957de8079f9ca92f25640332975b1ffd5242288fdd310067f988c17d1ed7823ba9f3a473f67065be0471d947fb52eeb30c872d62acd65e6fdb66b7dc1bcf322b62667065660075af175c5c96ece8aa9e655696d86c604508570c2eeb59660507fb824bf32cb3020317831236f8d1f53607f73ecb9408c3a569b671b0345618dd2098669470c268f503928c12539ca8a0405d25506094fa216aa58492137c3e1ca9d0a0c1036229d5050abaa52f892678e07a8879490891834dc1ac4be2061db61e9a38591231d8a0213d59a81a44d4e6c50905024a9b3199508e6a9525a31e92aa08a1830fb32a474dac02908aaedfcfc2c0844d13d24f2ee84da24566cf2783a67fb6ebdc6be5dcba4cf9a0bed123f53b4a27ed3aefc221614c9745f3f6f0d335a71e013601890d12629faaf9dce26794efb5508c92720946f9c22287a5429f395f57a5ac527293aae089cd336be8a22c326d374b708bb00ff7d3574aec63809f754b15619db9f2e99a9643a0097533c5ad643ca50cf3a72daaa8b816a88b34cfacd5e8227d582ea54f451f64ec12a4546b7726002444700416dfad5983163273ce39270fa5ac1c46e4c088a6efd6cd0f4658012dd41d3fd617e28f38456449c14fbf548ef8e96e840d3f5d8a426cc802092d8a88f28451142859ce8862ca0e4f5a174d94a4948a883507454755703f78961151c6f605115d38a3db7a961171e5a51391e4c4f572edbc50b0345d449800072e54c013b631406d5ba76932f02a0569334b66a649cef6eb06abddb806e9a675d3db6b7f5eaaaa34224d4e299b1277f52c234289a53c755073d03c1851fb45ba5eae9dd70e4e33876d530d9607277b7f4c99e1f8fdacb5b7053ecb4440c5c710a96c4a0e2f695e4ab73cb79893e7479c9f437cf979c5cfb902a59f526cf829c549e4d99ee816f9d197d272df77a4433644125eaa47dbeeee333a3923e3a7738c061834dce08a1f7000c615b0f112b1608a133059784043163dd0b8a041064f2ec5623126308dba651efbf4e3288440fae95bbbd8e23498a0bae8eeae14266995513f7d3ab53ecc80861833aea0c192910557d200620b2582e8a66fa71ca07477c3f0d4053bdede407e5a648102660b591050a84007159811058a6759d20cdf2e1cdcf1d3d1c58f38a2f8114707173feefcf890e51b8a6fb77706d90f620081e5db452830c8a078f1aa34bc76c6194330fa9ba7161d5061ada699235dca85ba796a9ef69b28d691de3d67df40cd9e6aedbdad698f5e7aad5142b0f2bb81ba81ea9e0f2a87921c46399ed038417999a3e8650e272f731ce540ca91f4d227378dd35869c698375140dde2d2213da045c5ed1feb91a4726fa05a374dac236f8ad8699ce8e4960e3a7438de44357d0d6fa056705b4ab387c6a9755b4a2fc3a497f266c94b1f43215e76abe96f8a58c769f6b48e38473ad25312d44b2a2fbda503ebc856930e2f5745b08e9cec344edd5391689e68c2b062d2594ce48a8a9397344e2f69a25eb294bc6415bd6419bd641dbdf4c9bda2d23c63aba98897b2887d3e78e9ad26f6f95e7acbcb8df4551155871cb11c453750375121185d2bb4c691e58edbf3f46be7e8c28fd2a994cd72d7cbc56d4ee1794bb287a2d938c2b89c13c70d1b5f6ed7596f8bad16f9f9fbbac45280c4e34fd7f447a7879973da54f7d7c0b861630677fc5a615c29c4faddf17cf3c1fef90ff6cf897e82639216a937897e8247fabb700072c7b639d0b44f3d4acaefec498538b6e53248382e3305a81d48bbeb15eba8a8e117b33a61d56dc7358f8d90ea3c78d9e2ab7b5dc7d4573edea75c149b20a12b13facca9ae6389cbb0e9aeca30958faeaf4193e338ee8bd8138ee3388f7e9ce2d162e59cee3764f6c8980a551eb5f8812730dd30e3bae7404e681efbf194e93edb7d5f27c5673b25b2ebbaaefb6cf77d5d9213c030450d92d267bb91bb7ce5a161b4aeebba140a369dbbfe739b94137d0a470c443e50851ed262759929d75fc6aacba2ea45aa7ba0fa0abc5768e5374c628305b672965a8898c560321e65c685e4e4b2e4c315fa719e234a85162be72088e07e17f840225ce77960e733a06a8c98f7408bd58bf491cea9dc3464f3d1cf8545acdc9199809c509d5329d0e9323261921a2c906209a672a00663f6644b5f578132ee4d2e62281883ca2e5050a56538b7b150c0db22e712a979ba87bdf04092ea52497569249d1c35cfcc57974faacba4eab6e3865427525d852762befa05aa7b1ac771fe433ed7853c5aac32a0a77afa5431b8459a4772ab42201e29d0145242d7576192ef0aecba4c09c9b82a4c720027b22cc16464a8e4496730eb14e4f75a9063bec351da76e612340a8e2fa484d04866eeaa9a2192fe0d853966cc46e946a754a7a1d7d3e71b916fd987360d35b9a3a9d4be5d6a9256d669ef51eb11443f051353376d4092fad3c8c6533029fd0ce2c25321554a2de583e8a957b70da83e1d05a24d4e186aed20341643d246b4179eba57a9a6853cfa9456e66aba5769900ed23e54c31b5a99621f269ab275a89ae6446f7dd382845f4d964b5bcaf0933b6c8f9a2cd2847fae82fc54fe984b306561724487ef79cee9433c69534a698cae649f13084829656aa164d34929ad54dba8d53433aced289b77ca012e83377d509422876da150e7049dc17572d36a370448cb00257cce5f193068d32af5e97941d223c393d7dac9ce7a4aa94b9fb4359f2165e6ea355a583b27e59941ec9c74d26b9d869c8bd64a29b5b5c7b4e8ad5a69c87ada53db288b71a577f56969924a93d08e72b6f3009dce836da3db263363b9cd795a5c14570ebbf9b0f1d4a7037d5e8d191acb4d1e405edc99c3e2b8b9e675292121e02867371a1690eb322fd90ee45694d6b4db56c2e6ad965637d66c395926a70ef6d172700e157d040ab436d006e7e4b040588375a88df1a7d718aab1b1c6710eb55c077ed21a823a5f40ae02704eeb000a2881455b0021602da1865a83530c2e5628fde812e26ecf322b8c8862c50f1b1277e6596685911545f4fb2eab35fbd24462997db3a61a58012d2862cd66ddc7c2814304b745153330e23ad926b76983820927272698ac831d5c690e8bccb396a82faf7a96cd8c105b941f3543d39a82611d21aea4b39923ed564429a5d263755aab2562a253415e9f62c04c428ac2cd6a842866df8786ac901e49af11e28e5fd3b7e6b131df3fb6a4f287a82ff123a554491e699a16c562d150eae43570a494528d524a354dd3344d73d6b65ab5198e94760d29a5fe8d2f16057acd47cde946290d5b3345ade621f896e6468ed823add7bcb539e948290d5b4d5ce9d5738461cb5e6dada13bb53eb51a0e4db7df9a3da3f5ed7bebf701dcad96b5e1687d0bbf16599f751b22fd58ddbed7fcc3b91daaee8dadb7de9a3ddedeec6344c67e0b87aadbb6dea38de643d5798a67289eba8d7a1b8e365a5843a6e2398aa761e7433344323fca073ae75e3e5003019a39568a375df6a455db2c7b9d57c5ac799055b1f4237dae2289974ebbfb4bd9e881524a532a591545aa4fd3344db50a818cd567adb5abdb79d1755d7765b42c64beeffb3e99991928663e954aa59aa1512571efbd342c6ac4cccccc0cab0617a41a1f8bc562b520c74cc9c5888b121bdfa422ea4bb162e0318e26938032a240c13cb96486259cfe8cb8ad165bac23d34486289816da0ada0869493c33605a783f232e6d51cea694563102095641cf0c5857915f4f5a37de70b45ab62d67adb576b2b87b3fe6e63c81e8b33290524abdce6ab5d6ae525947a9b54276651cad96d6ac7b37dbd3f970de62e7f4f755ec9c76d6bcb89472952bd3d9ccbcf166bbb63aa76fc8cae1c5e5baade3344b299d158adaac55cacc9273ca05b53544d410514304b54caa122d619eb5d4400b0c9e05558d10c5a49c9b8f3ae6a44fc1a12d44323f03ec444cbc8ee631620449ebd991d8673772c4b2cfa5d79e594775f672591685d24f66d6344d73c901a2d8b3d2d3d1f60c431c2299afcdf0fe1f7cc03a6da3867d6cd4d4b8c13e356eb08e0fcb860607fbd0ccdcb0cfcc8d4c0ef691c90102eb802bafae02d94705a642f64985ace3f385e0e1b08f87d389c03e9d08acd33ec208ed24f08f258175da6b3834bd631f634efde8d84f3fa2fde4699b9d3b224b962c50680d1ee38c6df4936afc4a9ccc56cb935d909090909090ac9d3a6a60b9e3eb67aa05d786dfb011031daca4d94343c5c612530b2b99fac179872337d5c0917459375c242897714f32b1ce7489347d66ba4c28a15260a4cd03b3a746510d955f70fb151885c639706441f5e48e1289c6a7cb245fba4319689748aab16df8b902d8812ab4387d032fc00258e4d575f8837f0b121ae2f9741d3888b82dd60d774a236934b78fa74f89249194e44c4a69714e5761f670e38b6a2fa830d20b69b4b8b4032514892491a0c8598b13a986d20716a7cbd7eb6ba3d40dba535bf35018a80ddb551aaee9afe93e5d9c8e63cad5a628ba4ba4582cb6c311e730d20f27927e3841a5256f587b6fabe5b3656e8b32278ab4ab30bdd53d38384670a98f8e13e4208bd39d86ad16371c9ce5909923ed0c9a394f2a68d65a6badb5eecd4d9b734e6d4edb9a39565aee4f0a29ab94524a29a5dcd2a50790167ba96d0dd2dd466edab41f3a72d3cfd6c0f98393269c3ccb9648f93101df58c06ca3656ddba41652aa8d2c84db46e9d5344df30d48f3b4d6bc8734df42aa69dba66943d33591db5a3347f616728b4db59003efcc9121abc51418c3adb6351afa82315cf9edf8e8ea9130b6343ae826573acbb074797656cd9c287a962d45fd9800a6db16a867d916a71f45d9d296177bacebe81cf189bb852074b9d591c816ed2e3ceec026c430799ff7dcf388524e41af857efbc2a7460ebcf09e4b6fa79e4fff74be704c791a23d1db6e488648e4db20fdd6bbd40f2b639f72996a80cf7b61479f3cf54ea63a1c89ecec2cb38eec34e742d99294a76e654b579efae7a99477a0e7293088cf7b3e5ab7fe3950d3940febd4c60bc74e792a1ce57ba3375a9f9e070eb1e0f35da8019fefbc0b8d747ec43e4fb71dc8ac43ddfaf49a86d74e6e3fcbb0cc5e3aab2497b08597b2d25c781f7c49298104d2ec69c045429f862d4c4ac316563f59ee9004e0c24b2d21cb5225a594850d6fea54c6c091487eddc340dde3369a2be17c038b2c6c7306c717843a06b3ce8132bc60b586331c5fb0d1c2a00d6635b709d2bd16b6b0fa1a46b10ecad85b90c1a291a874ad175545e910d10000000053150000200c0c8643228140282094245dfb14800b7a9e46705219cba34912e3300a32c618638c31c618202202234444ab000909d2a65862fe89d66c83ba6a0dcb81f52afe3d1ff9d4431e58e4a668b9c8463e12f0f97212e848b625f6125173d0c802b3df3a870a7f61b87b25022116cbc81a624eca2f6ab5a31c7b8bd33ed4f7f8442e8d46335926b081e653520c1e47256e2c9ff1fa97a84eaaea2b4813ea5a46f75b2da735c22a4c061e54eeda7957d84651fc11d06fc89bf3ca4a0d4067fed8e6b40058df8202857006d46879577f0fed5c6346ae47f8a1489a1fb58629e4786f10ed572304b469e101067e29c6ef79b15cddc9281124bb54074cfd49034b4be7c7137a0f4be54a1740afba3f73e17051f29259497e247e04399eb0ff1acad652d459aded89e610f4cc909ce244f8e6825975e16be97861d1d8e40f03202ec68110786bb239848e701d23685d492dfee11d7161ddf68b96df212a8d306bbd88e9f1bdab9723c7bdc0f0fb9decb59d1dcd5a850a16c756bb0c727211d9e797c65b9d921cbdacfbefad2c5d4b8df7afc2f7ff3e91204870a2475ec31d74d5be52383d1980f1c8ab534c2177d09ea7cd568886e09131167d120a064bef9127b8524c90064cabea2c8c0fed23be2b6b020e004fd75623c0114b72d26839dab6b3f8b0ff9d3c901904c07468719ef338854abc981abca43f679104a0c7008ed5d6af03ac3a86d2af08485a1bea5d3d4972a4cb9aa14b063bdbcf2e57845a340d092427ff4562a3449eebea9fbd604f4b129355c10d5a22fad1c377f1923c474eab92e0e4ed8e543900492f5f068c27014caccb41a59be24b839ddc6560bc6f7797874a3a8c3b0e609a9957e77746a39ff4b77c2540cb18e817cbcb8ef588cd385e4c0d3911c70184b2ff6867504b585088425c615f6b3c7e7aa4220f1afebdb3b0e9e9a6ac6b5b2c96e9738f94845024a353ed6d1f01e140bc3081db0f0d8c96b29fd5d93f78f3405c2d6217a33ba31c04ecd3b4eb81a7bc1bc0985622ca0cf08b75c253c5c3d88bee0cc4f3f03fae8ce7ec0382b8839c449c49b0857084ad6e0d28adb0f895053ab30a2ac97e2150a71c5c916b99c0efb9dcffd13040f1cffef85fbb99b707e881e0f3026b4dc1102022fd67e8712def9734ca5705b68930050a7fc88e520bb9c1f1aecb34a54f69650846f1b4eda89051145f7e326907f80a7311f40df9d0467cc9357f30b745c805df7f61c6584d94461194959b726e497bbfa88a396b8559046520ec32bd4a37a1fba1f83e6a3ed5eb18181f0179c09deca44bd39767a0612008d4c07cce3dcfc7f9a4668bdbf72a3622ea149aac1c99586e3d005ea39c933528e339ea4cd62740f431e744f2277f9339a37e3cbd77c9f1ba4dbf99c3ec5271f259f47fe6b05fc0a53f66e3a5137639ced09236d4d610d91c297153d57f96749b0e4bbcfc8d3123cbd3ba15b0aa4929d68560e041fa105e5def344cabba1b81049259f3f1d46a39a413887ebb96c3ae7257d944291a03762142e0b3a3c50ed5a4e87a8c56f8c0be3d86d8292627552991e331be0ec236ec4ab227b7097d790a38a2d5b0876e027792b5970ed233110a141fb68fbd050b5967fc820171eea95faa1c898023f66ff4bb51c37091be2eef2e52c8787afa4bbb8cd125b5352c8a656244a4c93fee398ad56c4610a20e316fc868622d6ae0812cd9443e96146b33c63a1e5e604d00e46c8c5d4526d47dd1c537a4d90a19515821338e0a9b39ddeaf4d2e73653abe23b523766bf1c3d9ba84f0d579c020b735be8c04d5412dabcc9900d6ae12078f80de3c864483981d04b927d8b10811850ba21819ad0191765ca08b9f87bfbaf350083dd79a732bdc2fd2b0be5229bd1884ba64286bd07e09cc0fd352903c40d8689848b36c61bee78de98bf2338dc9ac2ca17a01a167112e7a786f8e415cbc916e2621908b7ccc60dbb8ae2aef80d26d574856869830de760e628545875174dab1e8fa3f34b88562768033041bf3ebb900fc9dc5fd78709dd1251df07926ad7da65c880d46068b46b360c24f3142bbbe4c71221293f64d12fd3831eb2bdd7b96b9bc25668381ee01bb0a42accc502b18af5c74970e4dfdee6782aee431407828e266e807514d9332d90b8ef0a657d9c8a33c900aacd9094362b73f6e6a7b3506f80b6375492ed48daae9a6d42c4c1e647272b8f09ff7c43398fc21607224e8e35ca703ca471545f88741b3a303d9a086c698bc155ef0796a51fdaab43356e561ac53fd36b423e3bf8b7edf91b237bb7235f62929c703469fd65758e5e1eebc3416421dbb018a9e3403cf7cebee53f0535f887c1ca11789a687134f00c5056d41851a5b6c68383dcd6f1640bcc4d24f3fbe85673b48c22c35ada8737e01921682381bce815755e0f3bdb161da519c6f5cbfab4021e31f3a9b204595460482243a33dcc0769dad7730f0df12227c137dc7d666ce1a9202cfcc24a88df8b507cd377f9e043fc0be0fc0d3498745117be585819b943b31897c4d8d050e014282d678df365b1dff174d43eccce665521e90b74fe56a102c64d3d18154e436980459c6bf3be7a0ac70f0ec9bdc439b16d3d358e73cc2f45aabdd9fbc3c0e2d49faf7f894805720e29a00192595dd16a4e1925d0fb0b2856faa77f2c2c2a94d27411fcb1bd78de403f5bf2d88ca691205eaaff1c23a4b898b9b618785ec0bd58838e76eca2b60466b822c1f9cc399c363643b6dffdb40e0cc9153d8f8d0c70251f385ce4e26fea90ff54efcc7d87394b37f362f2e83c50170097d3b7edd7b01a1ae0624c1e13bab88ef1f72f000955797ca172cfb25c42bf2eb054c1849d37070cec30242b73d914aacb35f382913997b39f98f9a02099a0860afa9190173833a5342068e134cec338cf26cce97681d45ce0f1cfbd62dd9e8524ee3b866cbc54a1089f871bcebed0fc92aa558f2d5acc67870f3e07fc32056d441e3b56a940274aca93a0a9a2da0c6a82ef024bbe2b92b707fa8f9be6c975a1df198908e880b3a2e46e4c009a9799556ebe233ba14e1128a5a6bf12823ff6e0190ba531fc5693c87ccb6b3b2c584df723e39825f8b1d5e11eaaedda2e3cd40f86180514f1aa4d82c515b25a80d8fc091d1797d7896d2346783f4a4f61143bd1d5c38650e7f89b488c7033e953ffedf24b9a11a6c292f848f6f9ab40ea83dc08269a4117013378312d2aa74b2a319924e4a33d60a16944cbba0c07339cf71c18e98d9983f94f1012abb8996186025b9552288b8358626091464d6067b4b085395c5bfd95bf0f4c7d183cae0f88acd1e95e07e5ba88ee304294ddc6bae3aa513af79232b6767e3f78ba56e635cc5ba6dfb840aae5a39f6d51a084332eb85712a1ce06efd8c9ec2f44c2b3c5a9c4a88be254d754bcd4d603b5ea65f92112c611782dbec06ce4475a4df12300ad84bca15d52558243f4fcc9ef6e7268f847a042c1ea4b9cb1c8cdb3952f95e299d960e1bdd0e82125c4efa4b193723f02e7f7e700a298934e0419926fa6134ec7481552c81b9a8c0b5c70b0bd4d3a02bf7648b70199d5336b11f506a85b9663a1051696a6ebc7d6b91b2aecc54df63581b1d40cd3de9bf60ba24268c455532294359b2281eb70751829f1a46c8f9e348efbe9ac26df3596a000ab9d3513ea3626888951d75128720859142f8c00dd4ab12964c0060503346be18cd693ffc6bbfc5ade7ebda32a6639277b60a7aac722918ccbbc8987a8ece90768eef0050c1095c085da1baf3f40de80a0a160229417b470d82fecb23c5cb245b682792f0a01db0edf04a6008baba9a958eea331d313c70d7f0a36b8419f98471019e880bec2b148267a87f9f52269d8d60b55ae0ca4f355664b4916fa99b4c9529486058d19fab29f1364a12411155d400579bad5f07ff9ab71073414059b71d02fd0822c114341cc72bd6444e3206383bfddaf97997877f958259611a1002a554dfd03b3b33ddd541e06f70658c315f14ee0624bffe37fe312f247a123b18cd45387e0484b2f0c3b13914a25ca3ee6f12489db1725e4bd2fe8657ba1c54cf56cf5ac194d431411b3a530bcb70b35c6e830983f20ab074a47d37959c70550cd8a6ac9d9b70881400095993a9348b937f267b7edb35654b89af3cca5bfba2f8def6de561bda2002c5fea7c4d227923f3a51b6ce35ca0c804824d6422f41e64626acc0e454af73093338f16b318e8f34a2abadee4263689094d64e2d2a4403896800d3319341a2f4971f7e965c474cb4af691849d94220bfa1a1fbd0b9693f66370fd8c441bc7657b8a2fccba343a20bf8dc1a72759111e18ea3c46916bf464f9d46252bf288d9f2fc2aafe308f44a936f02555ea17f38aa8d5d8074e539344452f942f115567be9596f5a6f9024af5c157624d7f984744178b49e5918a8a95fae63c014d1505acc7799c58a323927c18f7b9b2cd5466d2f82a17a1407806a32dc16f97dca2e409672b8b743239a2798c020105af3d5967fbf9e2a449c8e0e667ece9a1e2922837657c615bfd64c686e4297b3c7de587cfed944e4f707975faaa1a27b94826e347e8025d94c2ee40e27fdd2067ff0227685571ef08925a0c0b6b7c5762104ff39739e5eaa932c4ac89107203abcf046b7a36d5eb1a1cedbb160a2f462e64059aa0c8cdda135689b8cf95eb640a146c4d41ea6c08ae39a0fad484b5d87730102e157a09f0e45555b686538eded3587021c69f32bb79c2ca37723d8c060ce7dd4d389d4c92b9788272eabc00e66cab0a6eb19c6cbd5530e846c2ce167e420d0d6ecad2a8249485a75eddd03a77de47b9047d08213cf3499e3f6e106cf784bb2f3720d7c283d0c65acdae2eebfa4a13bfbb2a477c56522d6e6f565c71cedb129dc0d13687a3b951e06c364c5cd5193d698939bec1ca0ba0ae24696858dd2308f5c3304cf0198ada6d5331c122804da866b7f229059c35de16a860ce0fdf4e7458c950cddef81fe15f5228c4aa66e8d8eaed78879e38ab5e5cfb740aaddd9aaf9ae6704399d2cb46cc5e86f772a311ff8012452ef1117e6e6bae1d73f756d380491b310323468d16ddcad553e782e67fa410422ef46c192e056f0ce47536fb2cf7c37e101e7d71b0da9819e2733de83a9c9b21ef7b90e67e51f16e4f4703d3430e10bc3f5c8f61c1d618666d0ba1bdbc224bc2252b8076ca51bf146561a2065438b0326d58d34611e9d6bbf149f2951c0138fd2245252e9456a847c1b771e7952f8cefeac342b5cf6b1630176423470c91a8cf691f9c5dbf9039ea1080705e0e293240789100eb806d19d983a59f835322d2c0099849738c47fc8594b244caf2fa8f6dbc89f322d8d1178856bf9ae1da3e1858dea553fb8325b7c7aa26acfb6bc0c26baedc859d5a83f2ea0f812509dc823aa7f5858571d511129fb44ede65d04a64d1ac905214f6f25c68a2aff9df0d744ee7e7cb24181a42b360fdb00ead6a10f844a59f35e659a90aa05d18fd3bd9eafb66468f3eb6a694cc55089bb6ef7efb99121bba86d9ffd9f1949c294db17c9aacc1c20cfddc9b3343188a8a822f785fa839f181196cf1d6f5d12da8cab7a0f1abe49a08b177e483406a3f1a1899b8b97383fea1c09ac528122a8ab6e08a6f09140154db1b7a0145506532c1dec8fd1b8e717b9fbbd42a9459fb319585671208a234611d7d2ae1adf1b8e3309be0ab0a3874bb1c3ddf16ebcc308ef309f3ac339847efccb95edf49f1bd8e2c6731768b028b45a29b52be11183fba5a4a6bc74d616ae089c0b9fa08269f896e44344697b01b23d732ab0f7f312b90fc6ece6b9be78b90a0790d11a60da892c8b66ff765c8fa55e9da50d0c93cf6e934589c5d37c29410133ee7f12e2640618f15d698bc8dc838b38702bffd335b837f969643e5c11b780aad3a7d5e73deefed4a318e0a9156688d090a1b0d1e3fb8fe3e61636c4d8c096aab9bec3c6f6fce543405761ea7fe82db2ba1c5cab9a0543380be1e6ee47b6aa9c1c3410efa58c2bd49ad9b159b4341806e2a9b4c56f61abea8b48a989f3e5154412b6ba35b51564df760bfe7d6bfef7a8622bf090f6c165b95c600994c6a96ac240288c897fa01dd610ac9e4bafafd1f951932342084ccd92b7a8e8a3bee38c4b518f8745c50c35dbe1769e832f8bfdf92e8c1bd0dc28ac7c27a390df4c31f36c1e8fe9abad6dc96eac31c9ca7e5d8638b355ebf6ec000c8413231d31869ba3d56962a6124165533d5e1561a03dba9cdf6ccf6f12e0218cfaacd6513009c01c8c378e23b670d03a1e95c605ce1457a4db3c4c2b41d11ec6e8550bb6fad14c33f3f4c5ae0560238ad6dc40ec06102b30d7793fba069bd385a18a3bdb6361230ccd7f86b34cc7c527271e18817c56b3a48e14a79f7ee0d18a86932de22d8bc8e3f130f3e1990661ece3d0b5692db7bc08c736b9e89269d53e045488e333502262ea940a51900ce63eed96b4ca2ef33b421384b96f4150f289c9d095d20e27d394b719fed76785c461147f2dc68d4e00817009137579755d0d8b6698cbc0601e4d942b544a396ef9251c02ab2450c99cbb42db27ee026522b2036c8c86925b9b145648a8fd43448731db19a99552d564ea76cdf4205c3008ffa3ccdbd519e2b87fbd280b50989a654f8fcf20134dd97e81ae4bc14490fa9ee67f9c25cbb4823e27f08067d1ff00c8aa46ab3a647c44e4fa142bf5a8fb8c59e3e2948c2802ed0c17e416382a91c0e614c09c3d2290d5daa94202aa7b5c2a5eec3c7106ef230b0fd5ffe5ba57b3a5f21ecc066f7519754a962e188462833efee848825aa65f5158e61a187d46918c205467a225c8004b4feedad0817f762c223164cf6dee9085147d046ce628ea8293945f53668cf05829b3b83cb003a97a7c7d0d5a1174cc6d9b99274bb6dbdb3587f3cfa83eb707f2b3d066e032a35a6a566d045c93ad98aad16114349fb695f9de2236d388543789a874dcb09d4d3e6349b8a8447907e8c2e6ef42e0780d60a5916eebc000f7855ccd009a3910941c162729ac58e03dc2e206f7441d7eeecfcb84a5f8721f095fe9600850e52481ec8e98d815fce4f3374a5eeac967732d956d5e71d91c1e4dab35b3ea70d46245f560e03c0af9b5fd9d64085400104e10aab0d30d618e0c02eb0253ce78ab22b86f54f0446f158045e5b5a51a51d47d25cbb4efafe3f1c166e389450c89ca0959d4f2a4eb1c65c0ed2d4658ee414f9e451eb3c08ce97f6603c3c06213cb499a8dba481ef09accef0543273d37870f4d37583a300230a4c04eb78d5bafb423b27c5a495d943df99dc71b99ec92ed0f0174149ac0809d1c3a8974bad42519ff639210aaaf74c4eaa4159b21d8a1162b9151fa97a42c52ee3e77dcd0248825efe0617f881969bb223690cd3c4468200297346a37cc3ea09f409fbac31714b21842fd52eb98f92480347d3a7ef2a12b63a1f2ceb314dfb4e129e188641add792d6aa612f0c17b1ecdc516ef626144c074ba32b86c18b5c0cac27c2e592363bae307c87921a82bdb1c269bc0a630bf55b6468c87e89a58b72ce57710fd5b08a7054240f6a55424659ab056ef6368b67e68aba283f71ba77139abc4987bdfc2f9b90a318de2cf3357ab23a67d1a6d67d489c1910ec0447dd5e058fa0f3855e939c1e745748a12a199b082419cc26e6c804da8dd570b4615c826c5f776983663870ea29821ff436751e2206fe33ab6ea590a60a1d311da10e2213db4bafad117888830320dbd1ddba4f13c9d7b6b64c958ac2f11d9fd489da7eac99d7780e974d6400b3389bdf1f797b70c524e27b373a77bed57dd787418082f1e5fb40ee5b10551817f407f22724b11d510dcb168d36d1ce0cb484982f5cc2c37c34266a249bda4b8874a217ce994b2d6ab2236e0d0cccca2263622ac16ca51a9dbcc04303e02afe86606654de3ed4deb325b37a1f6c6b34a64f60b15ddb03b367b685660f9c516bb0a8998f421b818cc03f263cdbe4c31fdc3bf283d528808343b694fba452af7efef8084a666589e04f12a4c6872b8aa3f41c455d92d8675f8ef6cd5f26f259a84f571cd73cafdecc9e37b766068d3bad12bc0802b9a8fb3b72bcb049dff72f6c55458558b12a6598b57ad60ebff7e235bf05b6009d2baa7ba5ee4a69a1688e470a484fbbc84910825a43d023168551744d59add439518c254751f326a9d649b7a498d0939797754de594fda9459fbf428526c34d75828260545924a379def259f200e5db3855ebb1183f2e6668a006535d4db10550000397c322333e39d4305c1e179cb837ee4848d05ca7fd69a0015dd9da4acb3f040c0c76dd6552423a72742083513e339319ee8cf671232b96ae175ec1e80a32fab9f4752265cfbe34fb3840dc01bfa001c3be0259ba3858cd0ddcbeb906fdf07b1bb0b448a83d4d9649fceb9a60fde24280916fffcab494d8cd7ec3be36907256e0ae75ca677e4edcfe76bd389383d2cf2b7802e2104d6864ef0f7e8b395ff1baa68cd7568410659c114443714afb223c53838fb8570aa7afe8eece710e9e3159b6a93391a13a5e2333830b860c9e2195b0221419103a8bda7e924b6efe5b11773b76a5dfe57dc723680460c4fb30c518ea9db25f2a670bf4198359e86165c2abd15ad5146aa5c7812527358778d4e0b5d85ab432c2649b7751cb5024a55a46fec004b587661a5ead7412062d416c0b163c3740a8a6695ba3c9c114595f781a662fa804a4282f93d2b99702d7fe2fbbc1e6d13980c6caac861c697b48541e6caa8db4b71c286598819175937bc9b9de6ddfe6e50b1a26a2ddc57873cf7e4a2051fa552249c7b38b3223a72d4c2e9dde657dc0d0259bd0c2b5131ce783f553d533fac3a303710bff3a394128c31548947f94b917d4bbdd35e0c40afbf3940a5c735862d51613a0dc6603989844b4ce10d0d5c6b1e01ce6da6f3a92c37432119cad1ba51eb461d53222fb3bb9cf1cf8431351c12052eef3984b9a2a4e4281ea0323d4c8d4413fc110cf82d0b90f49c3909fbc5e0fdb48cd85c4bc0907a901348042b0ca01f380400bd6b25443280c712cc9320f85c03959451165eba0a19667a05c5cebfda0e35a5ade644b47505fae8084cc78cc97c993a59a59839b0eca3f8ccc85931fa4e2a1a54ed09d310c2208b8294c5b615f76cc29053b137819e6c8bdc10ae985ce5f66963aab745c69f2b5b9cb01350f3e4ec98485a2a42e8afcb73d5932ab62c3eb4454a650b3ae71dfa1a3f4716a6c73e6cc8c54709ce78f21d413a30ecd6e522cd3e95105f3b137b48ecd1ee5e22df3784289382090625140b9466adea6b09840d81f23d61ebf7ba9425ef43e8f4fa1da020debbc10c29e56ecd33e099a43f53fe3e7add09b897df27e23e8b1a64b59f0ec7372c924debca101e1bc4752f361b957351ff7831d243aa14ae5a07a5a42d6def95e6690a48a8ef1d563ffe83672ecce4b14db1eece0e33fea255f1f22c50aa510ca945d604e90b14b169de16c7654a034d2757676c2016e0cb0a8e16616261dc7cc766ecb25afe5fa295ae1e1b1a805cb895baed5c23155701f865e653b4caabaf1eaa33624a60161a7567229d700c7bb3f748b8dee27cf4a96490c1c743f89e28d7de338813067561405ce8c1a27492b670a45d816e23e7ac4edc8fe2652919b5971ab55a05e502578e337d6bbe2a1744aa5a10f88714632ff883bf550e4a95859578c0c6161607dbf3220ebcfdd42cbdca04bb1e5b1008d6ce1ca2d7627131cd9e264ca80c47be02db9167d903d2ace128f7958290018cea4f0f501cf9a0cbe70e1267b54c8525700bf3a214d82fb3181315b44a511abe705fba91020da1ca81777bfa87590d977f997c5d3ec501d205a0b0b0616b9eb6f981696a90d67be49890ba96f8bfb9f9c03b8efd0d702d1b1b30a640203bad923e6892f9bf8a157f44dcbaa7cec29bcd1d87d007a5a654c41f881540e2e6b94ff6d7030a24458cf41c49e2bf0e47caee764db5443a901fed568ac6b662841fd0ec002a150c8e271b6c079de9b1876d904134159f2f484eaa5d385f72ed160751d74fda933abeda318238d08b264ea2e03f6fee41c4502fb6e728add3d3e7cc9989fbbe5b43553345fbaabb762420933b1235461be34c95af2623ecfb65bd0617f29722ceaf0a61b936611035c2a8c0a79137a289d11fe39a2cbe46fcee428e658a3871f384b0e92e4aa0eaef2e2a937b311f4b385782b2d1951897e7b3860cc5b32ab6a1f8b98118224298061086a5174f4638589bf29ea8d64e8a4e3e7a19e96b0b8fbb95de83bb2b988f830c4831ad50d59d4a7693c1a430a7d6a35b8fd18dfb7e96aa4ede977e4cbd074448a676882040826cf24c23806806a8c4df3e6bea59a692a32686ae7ee17e123d167c8db346bd6c048a77ae9c60cb9311c8f2828f530cf04d89aa4659f70689abc7d66a3341ea3c40094a6b5553afc6468b1b6686debd38ee2d605cefdc5f0d0e2a82cf8e323670ef92f0c86078208c2b83ff9c8e4d2114ddf63021aca2488f627250d72e8e601165a4bbecfa9ee1d155179fd21f484bc9d09ad8beba1f06ec435c87f52a1d5133208a9dcd6915c4fdc92b804dc9e0820b7f496fb9df8d0039f0e0434499393431ee02af228b6b847e3f741876874915d74f5153d1bc2d3c5eb384149f03ddb1dee3cb10962f26f7816bd59fedc52050adc17caecbf26ed613114a3c9880a7905bc79e9ce8208eeed3c6fda49843c9f5c81249084ec5a73e53b713d68951c6e868556d92e88fc528a82aae26b033155c6e56440300e527fcf467aead11013daa3364bf9088f29944b834c0f5f5ee5cafcffaac709c9d2ab414a6c27a3cec110d372fc4f98fb98f5731a739892197597cd700a3f64193db87ab6504c04168564a37246500ce2f23d756d12c5b36d038c405860e861a92c6c0c3f2b886a539ec3ae6adf3c35d958f1c2cd1204fa44642a47a526cecf8f02c7dbe226856f7e8fd80c4981dc4f07c7adfe5de6ee39c069adc0f08397b071ac56090c298e75fc6e7d03fbf9ae60e4f18ede6241e3cfd9a0f55ec4496271ce2797945e120ed49bc035941327030d5462f9ab0152fd91961c9af4649a393a790466865447d80165c1ae7b0b1596d05caf139bc2682da9b040224d0d2746b6ad26b68573db7e1a94a1fe73a4124af0087ee761995890dab3db65964a23e35b1af4c2aadc34e27167c73b27a5dc36baf9bcb2a75dedacde44cca17d347e85276d4c60dd68c360a7e9819523bcb609ecd93324c787d2c55c5a97ebf5fbe21903458ddb139f5912cdabd600f9266fefd8ef45ed5d460efcb893a62382a0b86225ccfd586988fb09e9172e44caf4f4dfa964ea366532369e545c294cfd5579dfe7a03dec62139b66fc137c51c8832bf2ccee2c0215ae931562b9364682adecdf7b115ac7e7b63a9353092cd3e4fc3991cc9231c428b788504a50e72835472108cf8b359f2f6ba544aee37bec7d4ddf930b1f2eeebd661770bb2081be579e1a7b730fd07e88e2e058f0c611289fe9ed799cdef1fa74d8bea733f7ecb3afc43e31c79590c5af2c5936e281a118105d5828238b1c035320007e9045794513f19cd853558bb248d6099e592404a9222be763ea38a6ee1f30a5bb6e0acad8f08713a8bbee1c52d9b95c98b04edc528c20229bc4a87de32471227ebb55acc6b7bbb7ab16414d13c3dbda2b0ee1f8bab6e7f4353c8090311dc086142303a79d16972e93306381421cdc46d24dbb362fd3136161b18038d066a4a79d6c2ffb64185912108e66476adad55eb2ce86c9328973a898909236aa5eba4dc39405123207cfd2c5d18369adeb4519fd656b1255418e1ab457b807a7bd361705f5975689b1aa2070f4c7855e8eae622d12b54c3ae0230c42964809632aa29735322921e1367bfe4e00520d910ac0335a77868456bef2b37bf6395ca21ddba11103b7d6606acb82a0d4736e18b3b64817c3ae613c3e5551c24c6955564554a0b2b3c43366f8b053bef406dbba5827731b7386791a4cce0bb101e8372d571ccd21b1d2316757237faf7be026f0e38e4681c09e2b51a0c765bf53033fe7dcbeb5444632270ea8563ef493d5ce123ad0011c06e450e18bcec7bb2e3aa740eec958e4833c4fb37d046687e7fb3250e0b8055fc7203fe1019aaa5085a37dd60801f53a6692dfa46152d5599df6302364076d7368addfe0ca3a480d8782b0b8a08468e7a86322a385c38c850f6725850a7673df957df0f956380ae61e3bec08da42a5d2962519c55f309e6e097295b6f3a2c1c9dbd4f563b363ad3a78163764e63838604ab7a6a6c34a48d77d66f5f84d1e3db3040661e89d7ad9734b4e4f9287a5df70cf5567dcb77560393c80f87f51d048308182c2a4a881de76b0b7481f58428060fc5fb8996b8222cae64931c9522679cbf04d69131e5452cd0160441ad7005b3b9f56a6eef9c66492faba0536f505d2452d1f2e2294217e758acb78bbd45c33e8c497acc2144b75ee194058d0dcdd437d1b7b4e40c5a0fc42fb6f3a63337a96e38590e7925183251a1bc397212b5d97439ac19c520e1ef70508e980095ef3b87013ca7f849c398316ea78c2460ea529219d4f8047f76b0e9c47cbc6bc9611819b2a309e50923a064d9fe4df72f5dc7cf043908129bfc62bffc72ab8d662ac14c95b707afdc881c29dce4164c558aff1049a549ebb97f16e68ae39690d61619f37d8ff5e2a851bd52ff8b72c949f633409cbc192188849f8b74349d4d29f46259e128cded714fa4879cae9e5318b33d4a02c4f0d32fa984a1dee8c8d2a7a037df36fcb0ba012fbe03544331f5ed04c08bc8d03c83b99eaf75697357012ec0ce1f5eec9f8cacb533aa67b517e99ef2c60dcbc8aff3e0b70329afc5a7a6a0775315049bd826bfa8894db6b9102331692f0cadb0ac92e7abcdf65d753809bd268dbc16f46815a59b8fa0d0fb7087ead4f660747e7319bb86efa69d4c2c83d3a70d597b9c88e00690a65a13af3649708882967f40ddaa66f42beaca379e90467a2b816e9828dea2da26ad71ca8db939d0417221b8ab2c18696a5825c531cfc808ce942b4cfcc6432ef9679cce4e56cdc85168c939877e9f61f39bfd512da65a2d54d6200bb8b0e91ad1bb0e9ae4fdf6ac0d285a233a28e246375e29d92a44b22ab4e1875330b3a9f7499a768d9ddf0e44e83f87603464e7d8ce779ed7a5e2445a6e2a40ded8d475a5513432867b898337fbc0195cd27c1f12c7d56a28c0dbdeed5b26cec633e9fbf926c8a9ba9889905a8b1afebef0cfd54d8685036ef1754bf4ea4ac8bcf48cb89944527bdae9e818de6555c13f81b0c981b9b065a0eb2840dd35aaf3ae569d67ac6103610f1773933ef46a7bd393d489b349c73ea551e8a3ddbe0435d886e269ba190233e63e1a4c1437ac0fa6499c461ef7a19e920c113505e9ac7c0a8f68b619f60f959f02c1eb16a04e2a7d042da4f61a0615816cab71fa7162e303196dc6fe8c24f84eace678ce45a1ff5e3b07ecba5997808600ba3aa812b1ba7c1bc513eb318a1043aaed8be933e559a64e2f4f0543a8c5535d64a31ac7c61fa6daa8ff3c141802de374e25a95875776c574ba757e976babb40244aa1c7a964981c55233b070a4131b71a7a38d18064441496e6b731a0cf85a0c017aba9b9ccf7d3054f636305da9d8ec78a5c7cf7057448494e52fdf52deb93e48405351352389b3686222026ecdbcc92b919160a2a900530a156dcd86d73432225d989170116c341d4934c0dc6af77c7fe72f3ae7d445c15f15714c9a6009c4e1282c69b97328d633ac48339350719fcf93937c7241d47aee02ebd705243e9f455cce81aa5b73a4f503b6d739d75a5d1b9c9291b125745db69c2347cf85e97845f90315cf77c281524aca5155707c6726a8b7d8eaa56f51e47efbe05df6a62a45664e7e4c220338b8750d31dd8562408a0098920afa5efa725e43dbe6c270d2e99b1ad51f1c9bee637167f2f0e0e2e4cb560df6bef86ed8f77571f2e372227569de1bde00f10dddd9d7612ec042c25a0a697a04a76f5fc1b3b3726292ffc3e911e925d3075ade32e7a794b1f1c8c5d8cd44d1d70113b3133612e5d128200d48a75f244bdb416681299cecf579f230addcf56aa349c2521ba988f43334ac5affe483b66a3edb9b0a4b4708536d44df6e6ed25ec38b571ee85d05e5458d399cc72c01e3fa25320b89f536c1d46ae8d6efccc2f89a4fc048a78fffad160b1c917346687747bb7b7e18b6b14abccea1c6435b50034aa50e07e2a936f00b6ec669a73642faca86635a6ef86c526de15098e4e046c1d4fe219a3679c4612d0e3459f9a292349c158b230a9350c8fa8d39b21da65412ee0bff9827857ee7c3603ebcc10421584926817d0dc5c6a502ae0e2133a48047c1e2a125509f12d2c7b9d6e52e831df38f16074ad162e943d0c5f39ff6a943c4abbf009794d77d057eed58221488189f4550899162c0b54ef0001489c19eb7a4d04f9c3dd751a453ea83f791b562eac0d1e062345cfa3ec3093ca9468ac9282d4575e76930dd3dc229b882011ad0c4c962f9fbf8c7978796d68fa04dd13193f2323953ec66e74651abbbd01233a344eac52fb9e9bfa21e58b8c5b36c5cbfb0ac3cf51e7827a0a5157ceece49e9d202b997d8ac3e942809c05de32bc198df52fc37b470298719a836c183b553bbde6b3dbd98488d5543b5187486741cf7df8f503185be12a9645541ae9aea8909c0e2f4b3dec0351781c50ce77929c66996b0310ba304c4ed90da824d1576e6a20434112d4ad0843444085c32e701584c39efa4a9d58b87c8a336cbcc7650057357d2531e2c8f6b9a4a9cc2f0ed0cc65367f1d264194c284d3fd84c332befbc60c8654d41caf732ff534bf0780ae79efd3a6479b3bfebf8c1d4be766a081e94a09bc467b7ba6bcd447c979f07f42ec05b52d709ff25fa68c24826c492f9c041509067d7514c1e43d7f6c69bb8cc96d042ebfc2a3ec2df1f9a8406fa557aa146535c500051d48b0b80cf8a90a5f1acbcdf994d16757a79ffbb091c07468724884d56439b4d4e23dfba7181652a18e141cf3a6f65c52c87665732b3bf80ce3ef2c2b660b51ee4926400dcdb7b0338787c508d825af1aa07351a364798e716c466817fe3df942677d03df34399f4e22a254fd2b375d4f233a46a043417ca457208a488751c4a5f2f577921d5f6b1ac83dc3547a5f3af5b9e95948c9d3ef5c80b67391026d634d4339132781b1198f13a40bac1a7abdb267e6880490790fcfb78e70f6ae08dc3afb5b3ddb958ed4cf545af41a53cc9f5275edbc7a2eb1ae0179ced25e436452298f6062c4f04e65045619f786bd95a782bfb1f1a7019ab8b2016029f40cd8b2c14e28fb951f6c7a44e4f0b9beea92cfa6ad9efa059f059d6343e6f101cd616f44c21dadab00fc392d49470ebeeed4ba753c92060e83aa997b5e98474e127d6b35a33f91fa97dbef2dd0901757c6de9ef459fb4c7f8c1b8d1ec23b9cb4a2e97f18d6fb6c8402ed50f97043a8ed5d777a0afb50adfe3acaddec9ccc937b46ab9b3480099446f4b15e0a2079f0abfbf173e217bece5b79a89773c29f08d10e6438d50cc0db83d1eff4e50e1f360b173264cc335a10e43937134ad1025a95edf21c8a024b9329839abb36ee8151e6999a06d20f8213c47d7c61ec6fc7b394bac1d12655154e06e3dad9a91926e0ad3378629c7abf5753f2d17d9d3c746cfd70222b7edc94cb370b140cca37629829c30b34945e1e839c4df39a2728d61ed0a4c263173cd6617e1ace34a417415250f21ca03a6eefb69c81f682931d280ae98f40c903bbf3041ecc52102153074ac7fe25647cfafeb310ac12e48bb4cd770bf3cac13af84be5ef1908b86ca94475e6bbcc133d2dbba4db89d88f862bc0ce160f9148a1ac13caa9a07f1f36cd57393261f06542cbfd81ca1988a509203e62f30ee9b8b7c3476b58313e02f3654c7582f3bf2e4d964bf9b3aa060248e17ccabfc4440647c1610b013c43c74e28d4425f62654f36df34c2248b2bcefee6f650d7a7362c83b22dfba4da56c94c7a56188b4566186fc73cf40054378339714985f68c9c711453a2ceab22c85c2afce86bfa3ff41cd5280ecce858a0e134d3734f0c87cb41dd22599df8e050c0a50c24c6a9875aba0ef1f0ff940882857f565480bf46b921d2362e828dc565689d233a7229a1e0b51e9db5c444da8047b2bd3d4ab533ecccf1c67eb1a29f0f24d182a341b53497caab4209beb82605d6cfda5420a1de66bf84e7b747500ba0c8bd5bdf2b730a92910c776eda97db01453d677854c54a21f39ba8721663fe800d24033d9bc424d07cb35483e681414fc72d49ea6dab6f5878410b9b6690926814dda46858508d13b70874232bfafdda28052e85d0ee3d0fd404765eab6614dc7764cbfa112f9260b6cf4ee5bdc3835e92dca28683e35dbddd446987e56308e02c20421d4cb27dc5f925592579158a6d6f99a8a3ca2cc4b247f9b1c4d7a16020815b838dd6c1df2c012962276585a239c70d860c642239d6c122d33bd846bb7bfff04321a896fddea7ffa871bc089acb7c5026078134fcf53d7fba8a0963a494dd35e6347a620c034c66a5dbc07324af7968ba23775255a42f89e058e34702c5f2f3eb81c8fe441cdd10bd0d624df5ad4e595167ae112bdad344062282d1b002940c03cf9fb461d1697c4c6335fcac4272d734a64de102651da2e0540a929946f5866c05a1119c2e5f73a5e76d467f12bfe827376c157bb37c395d412745dd742dbd1031af3d0c3020a8bc49c1596b9278267282c00eda584943558d361deb3762f9bdd0af6638918e4dc17f20a9b73190b062218820f77904836176617de416a7c6cde85e0811e92ac22bc6876e51fe60b3dee4f056b840e90dbedb8e4f451edbc49afbc49a31cefa359d7d8ba5ac8786001c51aa001d0fb571e445e988d32bb1355bec6c149975af099ba897d3724aacb632e2286e595fe242dbb518c65ea224934453c6503dde755d5328b5c7dcabfa02ff9a987871902b85c371ecad68df9ea963fa1b192e98475c0bf8109c008821871159c2bf60e17112835eabfae10c64098c4d60913020f4cd9c0d811c036439a35f33261fbc839170786bcdc75485d5fcc962689fc8fa0f337fe20d913d9f1f3db7cf2d64586ebba5c28232c12b6a1b7c0f5bf4a0711132fc46d8665ee034f87d4561e5f0518e6bee8828b2912c014761a3b673a5861589bd013fab623dd0bee1635fd22b4ad52b67f50f68a72c61e6ca859f300e7b7b9d826fb89b177ab153a7f8d5e511db42ff45dfaf5492776fdf3e8af6fbd4b74fc4a09f2b5579095f123e68c8918a175a078206b339cbf2490b43085ae05b3f764525a1ab68bfcfa0467be286dbd8c2d015bc52dd449f15edd4167f233fb905099f1521d4c41f7a5965277f755d71157b738d669b4c6149465521060438b07224c7ca1ec59d2074a70a969f16f49256864bfb6f92c84a0670ba821f2dc643f4407b7f27ab3e8624075c27420d8907e6814c9e2476f426738b2a225e06a3294c97b37d91b1fb2bffde7e7af3c493e8240014e69ca2f0507e1b034f50bc8183b6a815e4f5380ed89b4eb756e6c5c3f54844fad0e09da1e4f82b16fd594da2573433c6a8c37133112b4b90f17874a7d2cad275d5ffa6b452ca20179cf53bdc2e6a796b7e1aa2df72efeccc1505b0e389337bfc07ce8a9100c5a064151ac7982358ea57ab09b3d35cf1e875a7713cba086eafef41826c1a78e19fa77251e88e16dafaa83a30827438d005dbe240a9b1f010d732f007eda2af473b9232b02ac2f49ad5c246b26bbed7f5cdbf2ae342a824cf3c59d91ac31d19bdeb4e6aa29afeaf8c0ccf9002e95c45093d766c3750e01bf4778a7d0a0eeff46f25686f622a50bff1b4aa93c1d8cdf35894f2dfb7f8b5d15720348a1a11dadf86d3de7dbd174a11db62185ca8cf9566b68130d9d413bc86cd116d7d8e4ddad023b89e3684359098be9d1e950e0941dc2d85de280ba8e2eb456bdaf99ae2a4d3c219597575d764c7f68d0aa00e626a052dd3f26fe39a7f8a6739d80079627de098d86f4e96c7335570fe2267e612df69a8658d84037922255b76d361ef9655746389d723679e2aa958b6bea6756fe11423c73ef91f7d24fb37dc0c512c5580de758c76feb3bc884982d66331bc28775e691833a536b9c8cb03d4055b4398f3d892b371e2889991b4309c7e8d9fb4c9c90bc92485bcda1cdb43b8ea2a2a5443fd0cc2b6f0effc9c3e98846f38a387992f2640fbfed18227082f8bfb8a4488ce310587494ab2dae8fbe1a43fce80025dcaae61620033ae4a2c95825f083fb587bb6c56aebd254f53a81408efe7185c09b21502293df53733a6a8d856c086985a0b4794a27c12f3384b7af5a7ae0bb5fbf9f38db896e5c0963c62c48c0e8e7b8024606d09a9a4ea73b23aa1f713a4a834fee3c0288264d0d34d4273284843edd0d7c300688de0b32961a030aa373c02d18b8dcc018377ecaf7114fadef025cb9ac522211f47d6025cd486216ae4248fc1b99178608f0ec6604c1e7c028a99d02e66e1a892650fa4e787b08183233a02a55eba19caad5465b7551ed15a98325679bf26de8cc713c68ad13a7d2e4cbef3770cbef933ffc963f5ffec92a0b78023a7b428b8126fd3884dd327338c283c83bf2bfc3c53378c2713f364bc25ec56f726eb6b7ab610249d3e063906056ba3eb6ae229ec165456b8b250940f564a942e058d4a9a7f0e54c65ac448af525f401ddac3049f3d9829b559de096fbf90911ff140b98ab8007068aeb6c25f0d4640d72493a87b0c16e851d5418d815d17f56c4bbf00e3c52ce455e410514cdb9a087966e89b05de919a8959cd868d491b753fcaf39fc0f73d9749c7f72e1ea927eb35b07fd031784edcda9f55e6e7d911ab1caee2959ff58a1eccebb2ef7346db532e466874d8135ad1da1e1cd2f85dd40022164e28de0b51f00528a6da7ea53655802aef8ae2de96cbd6ecae69beffb751307865b36114d5098f4d513c8537131abd7e0eb2809b46f4f9d575b407f8f2cc8cc794283d3f59904bfa9a80a140cfc7e3aab992b068f32de0868dd8e1b4d15d59aadbe9946ebbdbdcd338b2283196fb6f3159d78c71c9eaa3696702bd49e6f2a3a0053188b22443408d4d938a172e5fb28e13b69689a98ed4f131c9449a99484494d832fde52064a02c4317808df41a9487a855058b24cdf862259451329779d20d7b7cf8c67df46a2106137a16219573d7c4634fe0e8115db0d7b7e5299033724060019ebe58b2b49ff1a1ed317eb1dfc31ab27920ce804ece18c5cc8fece7f1c4d07bd46a60e5dd774f06a7e5e2a05981c971daec3ffea0f1bbae76a76a8afd3e10a8181ec8a8bdf4d73c3383977073891823472702eb1c7844869ae1bdf8ba21dcfd333c00dbfbcbd38e81eef1ecf4523b1b9bf74510f28f00759b85362f518bf543b6d3e1f1f7e879ed957a1782d5260615069d03250148d7121980142759233d5d3d97b85af567ca4672c1b5d292615ab67d856cad38e5b4e80642fc4302e21708806a0350a412c02249192632e48e2c704f06737d5c211c50646a361a6564942225cd861a8ad34cbfd45b7f1e28478c4b07d9a7c6962536696900d1d98780d05b86c9288af942402e0b744c770d45c79c89ad2dd9118cf1cbd894907c0931c236847a2519013e87f98728cf32947d4bf35048a9df377f025c53972a66ba01d8d2c704e5dd6327fc112e563081688d1d387ba327dfc409b18a826aae3fe360d4df79882c4d710ab4c7ded7add961873c40d9ceb514ff80fc40b29be617859f275e3d9f1a6b8cd0f906b2899ee34db8cd9972eae5219652c40a5eaa5f1fb3b27bf452be41d61fc04aaba220f677dabcad7f441908a6c9f6c3310321ad5f63dc75ec8406c1eab5431ce0beb582343f77aac11fe6218ef45486b29f13148e617b1d11bd812c8ae88c66c92b88c1cf13b0fde04ab905a783f126cd7526f6daebf18947b89596b99453550d015fda5a95d503d572099cc2b0d9053c22713a683003950af1ff89dbb02288b8298f757813cc98af478e9b7a9e890fbf1c4154da32a9ce1cd20aafbaf91dc1f6deec19496dee0a033d5739d7c7118202c421547f9a82829d5f0a3557fed1ee78dd45e5e31d776e3964342d068d57d3eabdddbc2e18d1bafa34f7d42ed738f17e10a975cf9e33770540465146be80e9c92e46f81cfb1cd41c70349f0ee32621980d3ad623020aec1c10f07004c4599822cb5b4e54a5452b18a555af1ad7842b4c33476e8d22910c06a977a8e7d2ec0c114788b00060683cbfdc0889f8cfe413f444c32d27594d074e5774f1773fc2f959e2628d392ae68eb5b299f018157f725e0fc18780a07d5be7c628b452c78b03e8c5027b36b0479153053f4ceda4e52726abfd865db788a4167694be28569311552788b2769f8a8766a4898c9659f7af1d22591264f0ae2d8c5060f172aa1bec84642e260c892d76c90a072c6f7f0e7360ccec2f143bf9d4ce6b3da58c0362ed7ec10a552533f542ac95a67db49cc97964e3f20c2fa3a2958b9cc679725d1854a851d900fb5f668656b14f6e1fde72a250b3c5fbeb4930a14cbd2ffe7fa1fe30c16fbf8a5cbab30b1a0353432e5948bb3805992617de9ffb0f1c20ad10a95a8208271d5489f28b60cde4705919b753419e152ceb1df0bd30d45f831bff9cc5219c4a8ffc4f09fe664f7c5a02990c2390d8810379f8bc566a13522d912ab6c1e5a55ecbc54e005c598f98405573584ef2945f8bdc13dab3e7060ccdf05c90c9921fa090a09f30b9d73d09c267c9099de56ffe8ee3736c22a27591dfa2cbe5442cc9439f1ceec3c4f5566b90db418109e30e9f45d2adf34e27efd67fcc6b3e8e5e9cc517ba61ecfab16660b92a09e942f136465b3d883ae6218a111b73f86441324e15cb0b69bd43a9906155a6a4be56f41b303716ab7a28792ca1dfb3e417d59de6dffcfad70f81a7433e524748c296ee58deaa02d2a23fd789a44c6c24d882a9c1c2fbf45b101c9d1ce89257b6e8e5e43557bae96c24f3949a51ccc4dcb1ff81ffa5ac06e98f195b3ee505905b46cc17dc1db3b3e13d0eb507f49bd66856668397c4989c7e3cb18c2998c43f10e0655e5368e4b01779597d7b59157a056b2bfc42e986df14e508fc576a24ec7cfc1a9a4bb41e54103c962e8f77587b007edab5eea3aa8546d235eee77c0e2cd773cbd5fbfb13f6518530d1a9cfcaf11462755c41e6eadd86497aaba827fdfc957de9325984964d5e7eec73717cdfd9d03727f8425896353a1b258da969abd27511504b037732d3aacdd42889127d4d682338c752c2d27d729464e8d7773a514ca47be4bde3b3bb5b97338a6f4a96142f0672d7baa86b12931654ea33a65abd3a0cc0fb95fdf43149f593ba2238195242819d32073b5168ac7fdf00cab576dee426cb0bc8e85c75ebb18f76030da9c1f8c8f800a8de298b533edc912aa581a36ed6e1d01aa24d780e4c2196b37a3834129decf01ac3ff34b7a652d9bd5dadc0449d9f5e0ea9cdb947b723393a9b9b511df3d4cb7942958f30a2c89c9dd7bac492ed026bb14eacff8e271a7f8187e37069f42e0289fccabcccdc401e4f1fe272708c4cae2e5913e2a975f1c4430d359f28709d3318e1ee69ffbdf36b3c2ca11c486650c949bc1585aa8a6d57096a5cec9e70cb390a2d48738a928f836dc00f5935e63ce9c3a889aa3d9558b9eb933978f31fc255941cc46a11aee7b3ee2925df88c144be5c849d447429e387a7da67ffd4cd396a0f4f7328ab730c5f16c57f2f01d1d1705e242cfbcef4337cf33f21ca34fdaa1653243d08f63731440abd20663351a60a3e1c9aa4fc4c68d368a2755ae00df67d3a85c60b151d10103e866284ff8fab0710b7576f400455461132b8edc83ba0a3027fb8d217f43ce810fa9e4e337eb275b67e71e99a0484eed31926cc3d82278f3ca2494073848195373940fb7e2441bc53dddd0dbc23bf718a22e33b474bd26586e3a4039f914c394dcecd51edc491c9c277ad973666db6f6ff8ab35d8ca2cca4b88729f9b740ec7951311edf75ab9c6c8da9ce100f0a8cd924b6f43c8d9ca2e7354e53173c7e5f337aa3fcaf4fd4e8a72aecf4c2e5b41c686e3d921151b14d96c3aaa43c987b2cc0e79c5ed813b61b6e6bbf1e899c4ed79d71b16592f4c86a86d838c59a12795decaf1d9c39d6551c1284e82d3a96eb1b3ca2e1f6d1f43f23e24eafd44f8eed90d573cbc5495eeddcf9c805a62420dfdc624d8fed58e17dadbf3ddf6f5acef279c960e58122abdab01bba95bd76dc7ca622a3a2cbcc576df56724ea1726106a6c3503150ee93342d5f585c1a12f24620c6688f83188ef5321d8cefefc6cd7f17435723a32b85c5c4fe92b57f55dfbe7517b1e2d69b06aa04fbe5dd71be29e69fe55d7baba6d936cd813329c4906f6076e0e87003f0452da607ad99fdd3e684514bb886a46e287e045ec42bd80558a3927305653d3e6eecd4115d97c0da44d2f3afd46e875bd02acaa1d508a98adcf30272a1f59e64225931ec3897c9c8655880dca1a1b552f621c0a3aa8c603cbe2a6d87c72b3e977494a8aa9eb0992f4856eeba1ad0c7d880a4eb120a3fa8287d09b32bb36e80d76777474c7d4dae8c2c58ae0ebdd044d14ac12716b855911d41254c1434204f008212bb27313cb724075ec9a3876342b02311bb14be5024a53ed63aa453d20b4573c8d8eb0d030004a1c9f39145d9c1f2b1f9a00aafa09f78c41bfbd16c07d627b9408ad138cc6c9ab204aaf5934efeb4c59d69c1affe83ebdf54a889e3c0eef59fec5d71f4ee2842e21ce1db1705c8e970304781a215af7560dd3c066aacd0313a0fc83d9fd1b3307ab219a157c1bcdca8fc53e37b227644a44053a5bf99d8c4bb8f6375376eded57635cf7610974db296d29bfc2935682c992a7e3bf92aa56188d82f46f8ef2d29043cd5533b59aa270a6ef283a4130ccfd58e861261174938034d11b1f10e2d2e1364575bcf5df411a3e86c3cffabb32125177d2ba1bba25443fb2d32adc60e5258ddbca6b2cd8544fd8c37f20d36b85b07ea83912ead8818dc03cbfa543af0b6bda43bde0f38b97482985edb4376b2624eeac0b77d501beffcfd63b95f339383ebd32c81cb2169de21f77a8a94afea998899dfb4a2f09ac813d433a65d7f313c7ed5b16a147813c1f3b7811607a7224a55e44d13574d06fadd1124857a7dec5716dbccfd7f5abba03a5e0ee2f94b31f22429d5fecc5924f660b01c6030ea452f3a6d8079c68d608129058b65622ec288a3c3e2b6bdbd3dc4e7f5e6ed988ea2285d14999ac455bcf700fd09d85d159262a7937e04a06cb876904aa2d5c1fc100384560c090bedeb3a02f3acd2df155de8f3baf15896e07bcfeadc88dc59dfffa1418a2b44319e95d11c469d4bbbb5b82bbd935f1941fe86daa12f772582e0587dae8d86cf292026dc459a649a8156effd452667fc478a915329b4b94d0de06b55dd693116d8df7e4b491bf19107cd080f0a0ffcc8dc4add0eb3b9ae8eeaa23cf86acc0e5aca19805dd33f93b80d2966a53014d1da9a855c11acbfe6450fb02a8facc5d1ccf5fee0972ccd5338a6c898b1397415d3d4d287a5c4ead463b65bedf6d182920aea3c383a32f4f9fe7bfff5ddfa099ebca930d3a2d89b712f81b73e64b1a1303b4da1b259736a007a3bfa5b00e340da5153e2f7428fe94510e597dc6f8847d1725e0e784f013ff6b8022d44260f1c79bde0588ede5b1f931a0382f8d5b8d670c5ac0c1af8ebf49b7d7c53d5a84726d87e4d11b458675568f3ed4c13489f91e338b449f50fc888d5d653a2d301aa14c98a867ee9562a3fded9449d4114883395f2c1123857107ef1d78fa0d69c30724c75fd178e80e7c000b3cc371cf8b7008838183544fdb99f7e9e10e15290cc914a90693e6238d8c0d3c17e977d19179aed4141d07f9d2ab00e1b6ec37246537b3fef52268e63ea28e79569adeaf2448963d5f277a180a9cc6df1d322ec6a7a93ccf36984230b0ff4b23bc5833826f56b443cc789ebddc16441c03c9529747d72a7629b978d60b43bb5b30d9a5830bf7ce301ea28caf4c0d797312136066c445d0c8a9a618b6d883cdb3c54899348edb59350d6dafaf540ce65c58e7459d9ffe5876ec9a8d2a19262d5a86015cb6f3b4871c0c297de7356af5d68651ffeaca55091e168602d2f61e7436beaebaea629b8920679a35ae7686afd706f65627b6bcada0d13c1bcd9b3fe38eabf2534e0850d3ab39e7aedf763502157679d9b25a8f7beae2b02a7064a5a748eeee0cf2c9b09e5cee64dbaa74945775414c55edd9230feca25993a15f1fd50e50baa546ca13812a9900e0485a6e76d9411936193e7cc175067367155fc4b46bb56486d9909adf63f1e7e6712e54696344d084752ca3faef530e585b22e4b1a44ce17328d9bd4139ae3751a1489e87a3ed17eff3c96644a66b227c35703d956fe2290bb5ecfe03e4147cb4c6169f76f75ecfa1ead38f8a7aaef7bc70e10d9e9a1c5c8b369c939f5e67c3f82bdde0515aae84279b715bd08376801f8811f5d7b022ba9761cfe8b861a7ed2999088644d30eefe4cc1589feb325b4d918755d5f7be1e07cfd52b101afd993de775a5d05ac58405b1a9c8036f256facc1f0b7437450efe4f22c50f18603d185085568041801e68138b0f870b782e84c93f382482ef64df81d6f816996d5a9bcb3d6738846a3de4e7603004bb670861479211813d022d80a9cdc888830a81f328661c70ceae01cdc084fa6c92dfceaeb1afefd6083a31026968ca942118364a51e7e1a677957b2e247b14b6308b1d0be18a13cc7388cd57af88e56a97df61ea0582ccd35ace0ef7ba8340db9848614d15a04a0f1855329a5d9990c548a936bced60a0d60adf34d4fffbca3d7dedae368f98e117947d1861a53612bd68fdcdc9a37bf13e47d937c5108faf063836a767bc05fef62f473d8caf2655398a3634522b1075596bdfd40c58ed0206c34b6d83afb1e547829d8133abe60c3ae07ba82dbf1bbd54a9cd708c1bd1fbb843c887c27a5edc2350936539a2086203452355c0f415ce859b48e738ebb6e221888c4499de4bc9fbcd7dadde35659b21df80a2573b4f769e2ff453c719a7986c35d13a8534a971a58f74d0aaecb215f7f6fc2430069dbf2479f6036303943baaab699b7fa0f095c1d950f82e37d4942d30c04cb137dbb0c54dbc13984ea6f0f26fb550976065da283596359866d6e018dab4ed363adfa3d928e8a66298cac8847ac850a52ee1fd5d5369cab9138f43a142b01c86fca1ffcac77464e353b45184715c5f820879f2e2665f477de2a2aa0231dde8e494e23aaa59b4d09913004a1bacb69db01353a07024ef421b503f9006eef0cf0f83bddd814577aa6b00379d2999c1a7a7141de7bbc2fe1e409646b8403335f3cf9cca359bca63381879dd13d75a25d3b655fa48a72507e1f2ebb67a842cacfa11a329303d1e5face337c971050b220b56072e9ef32c624ba672a1614415191df51354c154025f1fe91e2d38a43cbda225f3efc065cc6574d7f49d0ba6b8f439bfe32aef3792133a3f6a7f45fe64ea6b9d22e646afddb2c0864d35d7d298c99b31ba0528169d4427e286337a1e0018484f77ec99e7a8dd5c89f4b5ba3b58f5c2acb583ba270bbb986d14d0fcdc2a5dcb9cd1225af3ecd84aa8d1fd0d4604120e645b0fe3bd6097c4a48807f2ff427fb797f250b3571e423f6ced3f6e0a460d840f7e26401019235df644d7d1031e181ad6b65e8d4c2a8b0e2884f903b727a17f9148bec6b913c181cb4895d33ecae28d18cf40a600d7b65678ac9a129209e2c2d0a1df36223505ee55aed251c1db7a2e7fc63b4a527f8f9a3e5d5eed9611fa895a2f06ddc34a63c5dc011d7e53bf33648fca7a993b8897af0baede976577333fa6a9e60474b11a63f53bbdaf4390f13caa263e9f7f62a01240dd7cdcb7a6981932cf95879d9fc1a0b207bd1f654e149bb39b2da8bf31721279a97f0ec9f77324e7a7578b284a42631285400e3df73158a7d1ff2628cf7908125a91a0b3c935f3eaf73ac54c908adf35084c9a7ab8012fcc752f9ee67037a64bbc900e995cc8be698b853c5cbbe6975c4ce9013cece5ff38d6bef883cb981bac3ea1ca2209230da3b859cc8503f6daee666d0b16ed884c5777ce5d0f55d173164b3ba48dfc8583e10fa4e1785fc7e2a72fb473c27c165b6b3b14eb5d038ab779148d4fa0780241d12d509c95f3493b9ab8d50591b5f719c53648391daaf2b98120f2c75e099ecfbc5f4b5599b60fee60c26e43cca75250fc0fb6b2db9d8daa958648cb0c3e059c071b41fc4a67707aa16ddf86d98f60a90de92b7324aac746442c20f71d920cc21d8c9208c14f0922db662e7f0b4318dc94c0547d012c1aa4c9c583efa207f993948317c2e2f048eca2a6485e10cc2d050e83c19ddee273ab0d6f57cc9a02151899ccfd8cc5406ba0b749bffab1851b72cabc17b9eecf6a5182cb6ffcf33f3f416d00f587945d09957d00fafc74dc20234fa1ded4831e6d1686cade883d10a98b00c6ef41cc8f8126e692dd1f6f8a70d8ddc79c28b038a324a0c42b4fceb2a377e0ff5f86fe4f0400d8d262874651149d5490f0f54ff2353503fbbee49c1e5d6a977b038c050580df518055d6ae70e4001e7ad42800d531c9d19cf28758e9a661dfb12dffcbbb80180e8ca45e718be5256059e2439c6aba1a59639d2f60cb5dc4ea7208680cc7eea5ae51e161c0712a9cb68c34aa96ac0c081589364bcccbe2960103c4775e0e8a18886f8103ef94c2d438a53cdfeffc5caa791b183ee6cd165c838942a9fa3c908e03e4019493b4ed88e1afa66c854951c0fef653a2686debbd1eae604b6a7347d589ea95cd55ee609151abea7022dabf618550880879b1eababa170611ba1a6d9199d6bf059898a2acedd6c893eafb224a73901409bd913a3160a21f48e8633a650109847db70df98653953a3e7e299710e1de77111ac9ce56644e200401a0695cd2d8b63f57fa960e081c2594c10307d5d922dfd2fd99e292246d5d11428174697666b74c1b8cb256d8c06292cfd3858de849c7df7b61347d66d8b41324d5e598d6e9f492288063391f81066845ee7ac935adff021ef2bdcf4716c10578efeec4c8c876c7b9eb34dd1dd81919c05177453f6c641d04d03f9464e00670adf336bb27b84afa884ce17070cc7c1a9a5b1fa025964e75841a23a4e881b5f2d1f4bc00bc0761a7aceb847db02367b93ebc73d0b69546efecb3d77a106142438c3387707a3058a6b0191cbe59b4f33406b67ab6a72e312c67365dc3c2c74f11950ad0b80acf3223aa8cbeb81ee961b9fa7e942605b0336a83083543d145ee73b525aa8ea6bb92769d9aeda117bcbaf786d48b0a094fd921fa175d0d0b2a6d195d55b6406ae45f2ba23d6d1709eb1c6d7f61918fa999e08e6b674c2d86c8517bc681e70cacdd6d94b2cefa3f62a92df7fae5c94c5b14c8bc3ce4ac287ca149cfa88206ab8224a2ac089b63a3d24b9f7abce3c04facbe0afe1f59910c18a297c254b4e8c023bcc4e7685803b3705d4402db3128a6c2d5afa57d49012d3578a5a3813803b2a38bbc1dd5f084d96a4aa9dab0e8f7c47caa6d59c6b424ee1095d9f2924f97c6e843c7432dba77780b903f312ebf44866d6ae9436a76c18e341e1a8e46e7131fe10d14d2f37bd40a4c84ca6b0dd7c5975e132d0c9432031529e6bde0910e6ecff5d9dc112f3e180a882a228bbd73ba86dd2d6976cb68c0db8319264b69fc4d4037cb526302fc275437658a4d36795cc4df947f081e9da2187bd884544a4b49047bd71e8a773f3a52d28c44f4cb89138ad88a30e6615208c5988597681cb5aaadf1a93cfe4984d8c84197426b4c9a9dee327199e43a5a9e1da3347f0dbc768a21734b82a6c1ea5062a61766dff991b845682e0953da2d7f9720c28dcf2b3f47bab000fae27ccb2fdd0f82e8bbcd594a1be2c7097fa14c45eada77f9fcf1a966f3b71798bfd575a1c03763f06805a5a0c2aa71147a639c240224aa3e893edea5bf3e36f26f431d39c036d2eba64190607782ef934896cf8945f8234a1ad070c66e76bf83184db9376dac965d13c39e83baf3459260902166c6f27e98ac758b8c852130261e2b7ba2caa1d890c7955e4c9a8b260d529f8f218dd7b42c9f50ddf427681fafbba599c881063dcbe5b5886f47d2d75480f0db71c4d4e71de2246416d09e05a2ee0f820a8586a3edc1b64ad95ef22216a19e887847d36f46cf95907ee44e9a106a03982788eb881271a119f10405bc9e739ed25d73059101b0756021876f891b599060a6ec2373bf174979b5c0587e9834b31eca05edad785ed0032c3378c768613c7d59b64901a7723a120a452af4fdbc063e00174b4e4e4aa6354d22c15771eb11fcedf142a670d48b8084b3288eac2ca4c82470c6900c45c2b7b2e07419b788e65045822cded9025a8c662ca7ef4b983d20121e9f3e02a4f8f2696617d3f994de425527443ba38ac87176f7ca2208c679f170d09aa0134db88c4539b9055aad30020b2bab3a22b69e17ce9a52b4a9b947db870b47b9325147467ceeaee8891e8d1b91f05d7b2c90eaa56c4970b5043979cca93a13441a0b5e2271090e022f22b4ad1d1130c1ae66f07fe8d4756a56042349591c2dec8884a425eb09dd86a0c7bca43ac880141b5b60da1876c9c0c3d25e72a44b9e972fefe5b273c6a79722661328f9ab37cc80e25ff0293a645798f4b5e0206c3830b34536186d0d1b347c07bb7580d0eb9f45d56c53a08c48d9274ad82b0559c193f1c151117b599d585843eafb85a2c5fe80e8e4aedf332e5cca7fc92a47dfad55a48d11afb264719e699da1088cf39633465e71859ef978f94e49fcb703e2218626e049b704cee444c4a47dbc78e47a1b07abdea888facf9a8d8d84bb2bab9d7ac5ab960d5650a2476b064eef7cd5350555b078510f663c26c1aeba3a8361b425f8cb01eb55033b6634a3854ac56238b8f89df61ea26624c882d95d8f4a8d3c50e22360f7cc588d54da18abac44a7aaae8be6b44656bb7e31171fb8e5b20c7b10191395f37d104bc2552508d850367ef8ae734a7e2a30e973a39a1fba2cda1064ed2d4b4fe9d78edd917a3a33a98c5bb3f637797ebec9ee9c74a383b2c7822a59c8036778ed8a8362fda94c51adb94a1355492c2170d26291b24e2195ec920a9bdcfc29651d39b152fbfb4140af109c8d5d326be02c3764285b2f43d230b04abbdd6a31a3fa88cb5ef6102afbdf4f890dc209abe653ecbae3b3e49b0a331987a7416512d831a0b924c2d2a4dec3ed5d128b2f8ca06d71a3354a9cbe9e940b60a533a2bb6455e03d416ab252d8dac5228ba432ee8263787acb262bb529104644ec435f59d0e9c884d5cae7c3ff38ac953c5467cbb24b7115b36c56e7c6c1e55566f159f74b8e88e9ce7e136d24eb7fb90a84cb67c018af84a2e9be1491328a8ad5664777a60bd2e2b0ec9ef307f605d622a52a2ded026622e3fa325750e8f1ee2b3d4c6c9d18fb2cee3c69129dcd1a27b762866cfd7cf8867386a257977a89fe5bad72e87dbed18d73dd75d057921a774a9a00e6016eaede2feaf4b714a8d98703e04010c9b553c5ee450f02d206d12227b8abc360fe9665c412956ecd7307a7068755deff3d42f8834e774c0ac7e5b869ad5e248069adae0a119f44aa5d63bb2074626546a6dd7f1812bfb9847b2ecd5f8a2b1f1ab9f46ea0c7874ba0c7b7f7a424f46ff71b57d10f68a3214d488ce4cd6ff4cfd7aba040ddb358137f38f88bd80d5ee63869bc8e1a560e045a4615fe6d9183d309b97ef854963dfdaf547b3e85309fe3fd7ccc7387b18a5ae099ffd840983fa24d23a56d35b0dec0c11785e79e74500c3fa68003974c13caf1d31d5e48913cc1cb18370ff0a1c5f3229b1407c1ad1c34e617225655e27abc42ab8c63519c9123a4d57f1ff8567eb15d4f64d32c72e5b95806c1462b0eda183d02b1551998cf385c04b516bd554912b4a416040f91a5a73a57c586aa1c49be8bd3f28d829f080fc8c86dbaee7f77248c9c3a59120d81482739b38229e26499c4f37df67b54c3211ac83e8396a84e12c4f640252cb959e971b42652d9ca83a4a01c2187f7767210af78d7343f44c6a15def9b8ee45758a231b540467198c15038c560b87ed9dfafae2c9ee1184c054f33909c5e17522035cfa6996e6136035967847a664355444d7375cfbb455b8e9d097f7c69dc49f30b91bf7fa25e8354101d7f5edc6731d653b84a663ce62e150d6ac3722cb23f205a7ef868625e09426013df8b33508e40f41a0a95e2a3cda07c432ecbc2fa6ffb5b7ceec1ffa6132ed97dba74f7478c0640e9ab2c99172b960016404c9cdd8b8a338850482f7f86ce1cece1dd4fc42decf16b0979213cd53b5c99d504b47be59592d7da1a9538edfd4dd582e978c751b9812ae62c94febbec5d95cca69aac428170b95e81c4fed1698c8a6e677ad89f391d574762b4a51108ac903ca8cb772dba309fb2ef5ddff42215b73f8c050a7f00229c181d98f7bdee519364cb8ca601c4c401b1e1981c69a69e0b30032be2a4a49328d3aac22677cbdb24c285193e470a78015c16043a2f47a65920d0aada1c123c145be778a0675ef050f087e09b95ec54423fceaa3f7838434fc0516c1da481e9ecb0741280cf952aa4040a42914a59136d14a3c0ba307d484f9a2e894d4cce9ff75d8c46dc4aff4dcc7677afecde32a52403e20a750adf09568556b5060ed50ada25b6fcff20d741bb15614beb29d05808601026078962cb0f6e492f9702bfda3802fefe22ba4e77ad69f7b37777f7d6ddeddabe76777777370765a801db97b6a65bdbabdce523bffec56a21aea1bbfdd6a459dbfbb86d1fd4ac8ddcec876fc4bfc79eb1a768a7dfc3d1fe2443d18a29221bb47d0b6ddfafedfbe7a319b2a18e1d57deaf76564fa4bfa6a991c2d67cf89bcc6fdf44eeea31f35b07b5ac268bb6d2ac9ead2639fb01683674c4edd002563c7d28d23cbbe06fdf85fef06b44263fe6f132df7588f7db731276f1cc15c34db2e16effd5ccc426ecf6f3b60f771e7121bbcc4d42cd74b48593bb3d6fd9be5f4deef60ddb9a6e096e587a632c428c85b1dc4d890964fb25b8b5fdc653dc6de327eac85292589682c2ccf28b85e96a16ba5bf2ebd52f3b5298210ada8b306fc79ae7a4507fe5d1f44b0706533d8f87f578996f21774d3b9b435c77fbfe7157fff63d74abc6db4f77794d92f59b02ad203799433e178351861077dbb66f642c13c8f635497655c2e9577fe4f4ab91e86e7f84e67bc85bdbd7cc60f9cb7eddcdfe0c57ded853e47d8f3fcdd8d31f96e06f7fc7dfbe37eef4870f8a313f23c2bc4a7cf91e22ea3f1ee22453169824ece551a997114fb0d44ac7be0526693f7c998ee47165c449eac0602ec48cd3b787194d80bd8c303bc250a38eb7b6879dc670bcf1d6f6af9a196868882ca786523e5bbff8d0af39e7cd939d68c52a879dddbb0eac8e2bfa3c75dca9f57d48b11357f4bdf72179b6efc615a5d4dbb6f7217dc88f6b8e4ef5d6f6642a07d64e20f45313c86b6fb3f9173efd3bdffd3ef2f8f3f4fbc4be6933df7fce7155027ded8df4fbd8e3dfdfe36af6f4d371357f92f42799229ab3213be6b823082e82b8207d5e43088146142934a89285f47181863398388acdac90e20323a01831c50d8ed04288e4f76e24665438b9dd0b4a3ba322e8ce1915afd9ace9da3b67b3a50e7ce3101a4bcf5325c7ed4f359979e2859222acc0e10b2272b24125881d96e002f4060e64bfce91e91265da1290aa9c584e474b542c31b93c7f8be3f611cb4262b16e7074bcd58ff3ac93197672bf3dedd19eae76e86b9b26d26e2e8d6fda4cd707d3ad005080eb5f8ab7e607db32cbdf5fcd0dec0ffa4d20355c5807a280eb4f19b0f44348878e35df7d6333038a194e66193c8fca48ba7c5b76f9bfc9559952ccd10416337298f202a52e88178cacd011e50b1c281596c95d0388620722a8f0a10e267e4876294d4db071c6d20cd620a940e30c28af25182cb982649f2125dc38e20e17e0c8d285e4ffb2a0e4b0bca4bd0a9bb6711dc0c096ac82569f955a083f67e1a5ba69dbcf5185edce2e5dbadcf95a9833ffebc973dbb4b19c4fbf8afedefbcf09f8f413962f6769d652b3d80c2e771e99a1e5961fdc796486139767eee22cdde2672d97bfe4a4cb732a3d0928f7fe2af995d484c4345b6a9992926c69c684d494f4fa1f56d0d5348d888b8e825f5741bb3ed5b8f3e80ca0cb211d59f5849d77e8a3a9996295565c6c3997586902e19f61b22513d56a6dad27f0579e4b9395947c4e6e4e162b29bd52bd5366d7f831b0b8730a99b79b65050f4c51a62451c79305d0d142121b8670e2c50d487eab8242cb0d52a2e090e4670bfb0596309808f1041c40a4a2b07f4bfbd45eaef6f959fc5655e3c45e5b6d15206c4074a5081c62a84296aaab4de17c347d65c572b7a46109da9d3dea4c20fe3430d87e7e0657566cbd28d41c7263a7eb00b3e53f33f3f2e2ddf2835b9eae7f3081f82fb11fdcea040e54bee832c50d8e20fd4f701705b088d20212165c96908374378242042788609b63fe0c8155d91f56aef5020a01dc79b414c4fdd2f038aea647db89315554b5000536c5131bdcc043171e9881c413567031040c30b28b40e2f66d9eddee5659eb713477ce64305cd59d4762bc60c1e0fa833b8fb634dd973b8f94e0708265600b3181ea8ec0284634c441fdd32c2ef9757905243a30177ca44459d2c6cc073896c082d44617fc0c206478e1090d9e8841d2d1046ff1975369ce2e5f386ec9da72cb297be39633c98d5b4ea6366ec93f4c978d5bb2d106829e2061441244354c21cb277590b2c41246bc5e9042963897b3484254070c395c898214e50735a29862a80729be207b2ce7d208b44063c98718de80a28504e187098a2ea220e327895b90a1c144062d7448d242961cbbbcc665c1135fc820891d59d0d04605aad82189920d5abc58f27162831d61c0710316425441fa340154832d94cc61860e4e488e030c25a4b8c38c2d3590fc26b86b02b037a24c592205d2111238889814d1d4850918c93e3028638c22ba80610d338c48f6494206515469020633f47005c9b24ba45dd03ededb1c3208e345839a869500c880c54f17245a50638dbe210563502123838e232ea0d02e3dd0e1c30d3aa4489a22030e45af2832466934e9f08651142b3cc798c4922e762042280d235e15872a464743247186126a5041051bad24090d6a139b76672bae82194533d02187244735cc397e80acbc962002a88d49c7fc8207228ec8f273470b3060c186556140146b361d20d990c0e6724a2871714b9beb859216d746fc6163238508aa00bd91c4100db6c84296f662e1440f6970d14509a13ac892e51324c41d537e788882b40659def8ff952b01168ee09892460c64bcb62bb62b94aeb8372fd10d1e9ca431c6cf0f338c00040ec8c0c10d372811861a5f2a5971c791529523a52a2cdc20d9790486ec962a3062b7acaa9ab759e9d49f77a75f64f7d6133f11f653c9aefb88b82359596092ddf34c19b982fa2be83e0197be5e3fef0eafe6a8d3512d0e42373333a7d05785be4fea7f13c60a3b8fb0241d61f9b9fdf3080bd2ed07ad873bfd22ebf6a4ce59ae30ce6ddb54e84b47983bc31dfa7ad59d29a33c706d471a0307dd0bcb92104c0fb162706231f16941252b0a95da31561533886225a5e405187401329725017a710514c3997c480c18c4c460228a1a5e0cd3101532dc8851c9028b22c797a47b09622da15b5096f09565063470de8ba5851d395020484a6020bdba18e28103634db3203fa4285250186ec470b0248a3780171dea028c50d64517275e66624c6334018392a0b8a2369315574a4a029992e2a8a2c5952dc21eb22b54c8c04206eae5c50a32851b5d77774d4dbb3c40b2b909a148cbbe58e3533acae2878fbe48621eccccfcd4bb8c995492a8e3f2e5b7fc1f77f3016c308f94ba24913c5d511225d205730a134bd820fd5be4e1c2205d101303d2c72a34f44044ce2d828a84481b187111237158c2c90fd9e28d14f2db382ecab8e2876cb106062228409b257e61cb5a411ba3aa791b56e5a66f4e21947a83d03305be2ab40a4de9f411f8f5ba5376e7e82f346bba8c179656d0c6a86adee6c78f195e062770a8644e7a3899c9c28849991661fd79861eb0e1e406fc404d4c416ce6c64982e22439f01345703c418723582ecc59815f054518f8d35b1e5927c9852424609b7372e1475b880dabf5795ef8e3870dabf57149dc70d5399a0257df9dac5483713f0fd04f9d63e7faff9ffbff1b6d4915af4ded1327a94d96d602eda6f0da7fdd089dc7b3b5fd37a64e90f230675502f8df1b014723f38791456136753f97ae0fe943f6574edc2cecfbe9ad1f4a581466d355819cf300dc979649cf5d50521212c0b3e79c1e9ebad1ebba6d9b7391d61a927f45fc5eb52c96ee3093747bd71e05ee02dbea3c40bf53a7630a9addbd86b5560661ba8f7502e9e7e9607c45dc6bdc8f406ff71f09dc8dd71b795e9fbb55efb50ee6bd92221470ee6f11d09eecea6f736edaa976957a5e17765a5117397cd35db5687b2aa63082b6c3b3d5a9a0bb7de4a708059c3b0215fcfab3ae4f749cb1c2dd192b1dbf5e600ddfb4e9e66e26fd49ee72a975c2a2156c243a9fb974c36e77d9b30eeaee6e72fb5b2806a22f1be8daa5db9c0b47389005c90bb313ff30136e324424741b764b9609b1e24951dce62c4074ed28600b378b1728a1124b22086806241c3964d162071519a6c8812c4114494b72d471c714349061b461c717310c910613e464262359c44145104644418710646f092a83081662a0860e5a3c2bb7acb9de9736d7fb39bbde7bde5b37ae37834176bdff1880aef75e98e3b1402040d7d8dcd9cfd0fdbeaf61ce1742b3d8ab6916f3e0c1a85bf3ca58b31b249ca46e4d0820a1d4ad17b6b8ddbb2cf7460e5785fc4b53f28456678739b4a934953b82b4c08f7419e470a85a9c4ba9521d5cc5a8e20d22a44802e38a0a58b002074d49dc08838bc925092a2395b2d248d79f4645df88e394c262cb3973c1889930c7815c50a9f8858beb33179acc6055ae7f0f4b830d32ccc3ddb8fe32618e9311133223c9ec0d25a098576669cc9e10614454c3e458a81294c58bcd6555eacaac851eaefbc78439aeba2e2483279af06207190491964a104f9c286252460e42a4bbfb6ba6461beeee476a60c21c7f09736800e6159b05dcf2479010e61d4bb7a9e88244972d8a98bdeab8fd3773c6829424312401e3f6a7c29ceeee5e92c36def76b3104bef68e2faa34e6bf051902a1cc04506161725b87089d951c7ed3f85398d7362a30e1b84704f5bea50a2e6f6838d74fb21d0ddddfd5129e878e3fa7b1a17994316167197aa5bfcda38b3852d559392cd7438b98ec5f5e76e98e30e01dc6e19b8b0da1c465c7f5a7bbcd6584276458b206ef089a2c40b6e7c51e403173d90fddc65095277778c145baa547c3407d0f51caf4055661ba0290caf43d81254d5343919325ed1c4e4ce232f98dcf263e3f2ffb8f3488ea58fe9b26ac92a25d5185b4369e7fa7e666bbabc2a05e766acb16ae4290ac010bb65ada9812d3dd0e57a92ebaf5b7a5c2e7ff9fd5c7e8f4b0bf160602cb68ac3fabb472f25616a518416455cdab219151914fb322fc95d1589d9e26742298aa5ea315d4e72d7249596aec7546313086ca31f51bbf88a2ce6440b99b510395e977fe8935db661fef24bba4c969f031105c59818ed20e361f602a426cd85120c0aa61652725b2e3f97f58823e69066294ed85809724b1ec29245cb76c7b5e396cce55a6bbf6bf25e359674f9b92d2d846baa2fae896be29aeaabfed420aea90e718c8d784883e246f6cd66955bec6e469a6c763521ed470bd27eb41f96f6c35ad065ed478b71f124e4307c13bc35b39093fc8c84ff8d2b9defc19fe40c75c271d54ce4f41638842d3ba91a8943eeaa46dee28fa9ecab62af347479c85d93248a19c96ecf6acc5bac6949fc9a4c9bbd00890a4c3ccc21fd2668d9b85a816736ed600212cc2c9732bd5e978e2b7ec1b2dc166796fb62f203f41314c4a4e4150bd5d8e5afb23aabb16af431b98fd74f87fb746d638f25cc6d7e71b6facb4eb56937fd382821dbff42dfb4494961bfae7eb25084192f90e1821c2cd0e085a80b0c4a6acc80d40439dfaa3e3a5e5220e95f61dea964420be171754b9e447388026edb0f4cd78fd9ea77a12c7ea8cc61dbb83dd178c007d3f5b3353f8bdbaeeb00ea62375e7030ddfec1846571bc6e09deeeeea73e6d102c9b1c5c7e282159c1841338d042e6df04b426c2bcaa0984fe0c531388bb908abc0fc91d54e946cb2fa1c9b795e9e31e4b9062e92c77bea6e458eefc8d6ab9f3b9a54a6bf5e63a9fbbdd41df28a7d5adf3a8e779b3a7d5ade3bcfa811404bd19e4bcfa75a0179ee8e9e4cda70ef4c2ef04a2be13880aed29f5425f5ebcf905b450a4dcf9a918943bffc5b613773e4c1bc5d098186f8e99ffe2d2b07e7169a0fe6942b27205c90a96a4190f71137632c44d180a13b1506bd9c2e45ab834c94460977908773e9d5644e0bbd16df3e6ad2b25c1469dc270eaa532df5ca62d06c1296f50e8e0882e2f771b6777f78ba0dd3981bcc0c400c5c8c8f0e0419453bbcef3be0fe4d0fb40300c4f27547842a1ac4da55e60280c8c37c3d8d4cb0b0c4c4c8c0c0fca838737f380899191e1c1a3470fd50c9d99f1e6191e3d54aa99191a9a550dada9f1e69a558d073ebe03d183116cd187f5d1412802df163d0845e0fbf4bffb7a5a8d5051d049f753812d961a943b7f26cc99598134a10747b6a42d863936069c2b1f3ed887765a8db0ddfebe3d961958812d965eecceaf0973a4dcc9dce4c59a358d3e1f3e7c501f3ebc7db00ffe164b9af3c978cbc8b08c8c0c8fa7d904327f631c28dfb4293d0802b2a7316c8942ba6c743d00bafc1e00b590fe1a44c99a85a20264e7cfb0679308f8edefef8b92b98b4bd4ecf24f717ef9b75331a84d90504aa82514122ac983203af4939999732adfbfa5bd99adf973ce991a6d5c1e4bbbddf2e6268d31471655c811472c067222358941531c2d2061840c88cc2f32ff663ecefc6933c7114c2429be6fce9515db3fad50eef33a1c81a9b85b873f9038a2cb5d7d1d8ad0ddee5be45bff4708ca30cd599109cc18a23cbf7f911a2796bff4b91e7d66d6c2d6a3348cc8e87206163b0019e228890e4d3ad0b105e6ce2338a0f0706e9ae52aa64c99521a84becbc01e315bf38a00c793d99a974a41c4bf48650e892f05f075fdd9abfba6646b584164975bf6977f5cbec1f1d9b31652764cd654587ba67f847e35a28dd55ba2f5d6d7a29d40b83652956fda94fcba3c41005f773edff08703010ebc2e3867d751ceb46b6cfabdeb75dc12eca62488da66cb98f2fa5cff5413ff22fe37382ed6ebf5628129a685b4ecf5a25b7c29a8502994d848899a1523c5969389de91e6053b9fc5cdbfb4dc6472246e2c7f6c636973cbaab2412a6b6e8fd35bdb95197a630b4f76e2ce23349cb8f4c6889a5c96d2559d1b0f8f4c6f352579ab8d38d36ac7e371a5d191bcd544fa3332bd55bd353b1f929f1251a276c1c8269dcda32d54a8142aa35628d22c2916a5dbef3c7d721d6bb853bf1b79baaf23d36da5eb27bfd1ca4672211fe2a6551d79a6b727ae76ea7b75a7e3251fd2bf3a92bb688c12a9901c892621b96b92494a4b8ee44d9488d2202a445ff4071cc2fec040f007adc4f2fb688728538a886fb6e4e767b3dad5e32684223b4d2e161ab3724b30646a838d5b4e591b4e2451b29cb467b8fcb6de1a3aaed1addd546c3bcae85660366b32b9d21535626a0c5d00dc79a485cb6db124c1ed2a5e68b1d24654da89cb6b0c3590cfa636f2e6d11a52788e5b82fc3c4c581f6a17926ecdb2637582290a2ce9a0d9e5e7d74b0e6c592ff3375092227f7aaac2722bcc6917668b5f06241c927a802d153129d174990697f932cc03186cc930d81cb282bb182604d604ae0043756959cf3ad6464c3218b4a86c96cb314bb4e888c38b2a465bc6708264980d36b091041252c0c84675e1b7fc2a283920cac1508f1f962ebd5a82ee095a7e2e3f08a6e6e9b07e7e1c389584fe84a94169163f114dcd14db2c6e54e2918d86e027410b2955d0f84160c20948e610236b462f19c1efdf695aad54056d8a74684989fe9c49373fe90ca7d63969d759ab42b2820927943773de68a3ecceffc4c9f114ed7cdff37c4c63e933a473e76fb14b6aee3230a6d1aa699ae61b55a24d34ced9dd999999d22335bea8a2b9a6511e41ed0409caec96ac53d0ac6806b322291cf53e4a838edb2ddeef9a9ab964d6daf46d98b9085b7e709d9bb7c4d410112bf04fe5ef790846793a61f41f00b8891636e8a57b966f83f82d13b6411304573adb367f3a53e340690558033d3b995cf847a809b390f784e172bf087d7b64a366c1b4af8cc45b41ce43e2f496265e6092749cde9a5fed9077d782c65f4c77f79c5d456de6ce3ace9108cbaac2ef3f1e4bd5a500f745f8d691880c2cabb2c3962488b9db58a459bca24f2f1dcb0a8166710a4ae74a4d59176800d521860b5e4421f98fb82b0338c052851653705044100f88024a0ee018820939b420398c232b72d8d10507a52ae4c79c0d523844409c577fffec80af7a7fd5c853e4e38eeabb9187c7ab787af8e81c41127b78fc7c167b8a7678fcfc9e1eab127a3cff111e486083e36ae399a99aa14834ddc7b8ebe5fbfdc75da96f251998a0db2e5433c36ae6554f234e72e63b510582aa077f06543d4dcccf70b5cda89e48af6a6621f75ff7ac85f8517f5fe996b9bbf7cb5d0da5a1341428b7a7504d125b72506f2a243b2c520adcd74c09ba354996f68b92e3aa04f0556f847f8e3df3f955634fd1ce7c567d0f3f38823fc957892cf07fb58d3a33aad79e13756030989779d8cbc7fc3723ae5e25d27c0f919f8738915242bd345fa899bc9b885e5fda0bfeea77c05ff1833423cf9c11c15789ddcbc088937ce970a5c333fc18d17b18f1f42ff65322ea1df6ad7440b0fb19523b2eb1122ce418ec1b19e68d2c1b39e6adae2507b90bc96cf5f7099ed872b27157de2bb7b31235522bf5f7527f23f57752c3f8e733c5f86c2dc344b9dea1df140c4fd099433ca1239452a794526d0479c2e7b8f72129a594524a29a594fe7fa0188af5b937e27dc78d3ddff77c3443f688bbc2a7afe32ef061e148a94eb3e8d30461eb7bdcd777a17b8fbe706bffdc19e67c6391a6f577a30edde1be8e3c45dbf3f873dcf3f4734428a52f0e079ac620f4cfad97ee346bfb2a8ab53b41670ef9eef62821a48d4331a198dcb5d2504dee72efb1a7f64aebe9c6150dbfc79eeec3afe1247d5c694f564d7cd64f24efb7d77197bfe733d43952da5bc79e22ee7bea7fdf8d3bb5eef8b8d2eafbd8eddf037eff69ece9dec3ef40b0bdfb1348c75509ddf71bf13f8d3de0fb37e85d28ea8cf5bbdff1a73fc91d8ffb1dfffa3bddafe82489786b33e1049d230c02c78d25f8d7d7807f1d579c06fabbfa46beafdfe33d38f6d41c66d2aced573adeaf5646ead7d7f116e9892bedeb7f6fa47b70ecf14613ba11496db2afee4f8b6fda945676e9cfe9f25e49255d49255b45765398121cd2da2fc36b43f8c121ed973037c6aae69315eba49e487f437708b5d44f7dab79aa7afa9ce42e9aa71cbbf485322fa5fcdbff24f6fb90e15bc0870c471e1f92a76867872708265a5820c391876cd48344bac2fa436ea85d00507abd5e529a656c85af78ec895b825b74714b36da02ca2d99caa5943e5799855a087d0ea2cf4ce80aee02816701c1cc5282091660564039bdd09940e8f76bfcc304425f03825bf45b842979727202ca132ba0e4222ea5431585fadf28c25c79e3a3c0e76a3c24eac060338f7a180fcd21a74b3ffce658b3e8affe88fdd5b8aabffa491e497df8ab3712feeaf43dfee11b39fdea57634fffe927c9e3674499578930ffa1c449c68893e4641ee63f065162cc83220a16f3a8954e787a9046254e12b5f518a7b7788c373099717a0b1633c26060a8d18ef3454c892bcd8aa7b76f247cd4d883faf0edd853d463ff443f94b84a8104bebcc4f6344e6f85230f798bca6aa3c6a01dcc7fecfd0ef8deb8e29dd3af781c771a05138ed0309db8916f8149fad853b47d8fbff7467aece9ff38b2fb1dff6e5c69ab125e5eecf7a4623e66ece9dec2881af975e22a05fa392b9d54aafb97d18ebfe21ee6279912bb7f7923f661c69ed4db7f197b8a7652a31d7bba1b6fd13f8522cea573b68d3bfddff8dea2efe40c735625f87bbfe3ef8d2bed77fa571a256fe8e3d07ffa2cfa1c39c31c0afa68ad3dd97e52674aa978c4b7c7d9feb43487b8fc554c76a9ca6633a409c27e0f7ef7dfbbe0ad74be71a5fdf73e2438aeb451d3c61defbbef461e7f6ffcc972d7d7fdf68d41d89e22ed7bba07bfe7fb101c77be71c551eebb9deffdbf71c58dab12beefdec8f7ddd853b4d3bdf746bceebd70a573fad5ca080920e07b42b37460de93fdf46287fa499ebaf7dec8f7a8b1e7f4df7b634fd1cee9eb99e4c68d35dc2a5977fbf27467c9e3b9b57db95dae5fb89f8361cef7ddc8e37df775dfc853549f877e37ee74ef8d3cfe5bbd34d481d1e744fbc2fd3890b610ef853b5b48ff74f5857ae22e0d1096be3f4ae6edf5a0d347342752e4068748911b1cd5ab6e8814b9c1199b69769465767465765483d911951bc34c1cf9315863322c69b2179c9866331ccd66f881f18d41ab6289d0e4672710be73769f5623d4f99a407e34cbd97d1b956641507c63aece6e7dcdc85d4c56f0416de6adfa1cee7c238eb7384da6a31979abc2dc398154ef3bcfbb047851ea81cc5de61546a0af279b402ae0fdfcb84beacd73e6348276eb6bb77e904ebc6956559ae9d0a47b4e1f7ecff7e0731f8ed55bdf8345bca9c5f3ba2741bbb42115b4cb3d0b39b9566c1006b1b1c62d19c60695cb4c2ec74d2ec74e2ef75e5727d042ca1f3b2d0407042da49cb326e3c7ca0b9c92ed3f91fe8f9b2038448ab05ac846b5e71eb431da282e3e7677bacda9cda8ae33758e524a29ddb46dd3b4133ac0a29a4e39afeeeeded5ca9ebbbb7fde67e360faba8eb98c299fe775607779d21ae466ca8d7ffda98514e0ba48191365bb8e79439a62535dc76cc594d44bd7319731e50506ac532a4c0dc13a67d7319761e92723f3799d4c089ea270fbf7dd72520901c7bdee52bad520375c3f2d427f501657372e066bf35f3b8d0d5ba352759edb2adefc40b0d6152a5805044498ae6dc3c23faf0b2bb7692013e8063bfd9a86a0759ea79ae9ba5bc12dc8cd0df5e7bc3047db342f1cc1bd90159e369b3f4d54ce2c325db58e3b48393b4a6c8d0a45bd186b7df31cff40ad762a981a4735ed4f618ea6893cd209f3791d08ced38f736fd8d49d331998b0b962eb9d331990e86eb0e19d33199c7037b0de9d331978b833196858922516b3a83b6732bcaa1dd6de390362025ae2b86e9bd50245714b151d2a59f56a056d8c125c18495dbd7152c35685803452e9c5cd8060a081326d71dce0240e86b42e7a68317ec4081243c8aaa0e0618cd91848b325311ac218ead6bc350ca26ecd5b567bab25aa5655be0c85840daceacea32b765435ec8351a9d89495ce0a9b9a014746acba61c13b8fae38c17265072aae24c1220b3a62b0a73b8fb2d0d2fdd8edcea32ccc28b264561b73e99db318a204f1957cf972ab5a2ce78c0a295f77b429fd6fbb74acd4bb9bba807dbcbb8bcfdddda97b7f39e79cad032c407c6e4aa97bbbc6dd3fe79cab2128c714d5d9cd7943702f754ca9a6dbdb107e4eab5d4a69a6b6ec01c437c1a946356e737e3dbf3888852e0d965b982e1386f0cf1bee047c9cc00d8b08ce04ac44e074273037d5cc1cc2fc9a406e5cb555a643695686bae67de1078260f869d4c393a7513fa13a94ad36c5a55eb622aa2108b82501aef742f38d4216cbf605467b8d3a4c0c8d917119191eedf42b8b8866fbc7b1619ebac6a3076b4fdf5f4644935199cb7ac8a8e6bb88fcbb8bc8bf96e55381f33f991311224a40e0f852a05705aded6566cbd4a9a6e3adee20cd9a40e673b73802eabf02fa29773a4e19e923cbd2f6e9ae347cf5f6c6f2d6fc4d73f7a7d4c1992f9066be4883babb7be97339a4393fafdf6d15f40fe9896a5eb90dc9b5ca6d1f45e384dac898b26954a39be6fdbcb9eff54b51808413b46fd3da30677b4b5394db3426a1fe18011fed58b7e9c6ed07291a29ff147da19a576e4372ad729b47d1486d9faa3054736eab481bc76d5e45c3356eeb281a3030618e3f0c8da19a576e4372ad725b47d188d1deeb645e95565a29b76956d0ca6dda193354f940add2bfb4729b764665eab4325777aff48c4a2be536cd0a5ab94d3b63d3b84a378db342db368d3b83d64d3ba3d24ab94db382566ed3ce78e39b369c08dd4ee9d6751e67c2112e890ae588e9f2de1b91b00c9890ec34abbfef03354f9c5dd7710f364b594580b90bc754280cc39313c1c1c1a9e1871baa7566120785005400fb3f3f406020fea0371712fe61fd6b401b129eb18c897f50a1083d04bcd92677679023e10f44db57206110b8687ed0cf41fdda111348fff591a140b15caddcc194f1837df285c780ddf24658517ded9558d27bf75e8925bbf757c9dc1b57ed79eeeeeedecdb8bb7befeedeb98cabde934eeffee22977f7e617d13e4a0c7f462cf25ebc57898c42798ffa0e959302fd5577de7722ac7bebeeeeeeeeeeeeee2f7fdbb9bbf6ab8e620241f2efdcdd39dcc2558f3a5deaf4dfd63cc4973f89a8ffc498ef21c2fc465291ef4ac75a92870633ea78cb61a9e9307fd8699cd7bd65954020aa9d42f3e5328e105a847084033cc4d0e58f9909f3106d5cb6c2fcc406936573369b98972e330d31c7fd9e7eef8539dfbcde77618e37c5ed8688c16521c0b8d5754bf06a0cb89a103e3811c322e0d2774ff22d1c001ec22d43b8fe3f68b9fe2a20a4b8fecfc3f559104cd7ff06c7c90d3f34b9ae3a59e8fa7cdc75b1326bff8a5aeb0b43328c977ea5c18d4be9733cc0808a4be96ff5896a52e1c30d2ea53078591f3f2ab6f9a1e496412ea5745eb9330b9d5b7edc7272f1c1849d7c714b8652034a7fe270e9d3af56f5ac190f3c5cfa38448ae8bce0c9a57fc4042e2efd13908871e9afb0c31a2f2d3f4397ce5e10c4100c77ce9a8071e99cf56074e9cc8724975abb040d6bb3b09652a0392eadb6ac201dadbb15805051b5a00d7576bff7f7acde35d96cf5a5253a119db8e6e4a38310d563c6a65460cbd4f8f8d377204ed2c787e2c9dad3dbf7614fdf81c8244aeca179994f893d453b342ff33dabe7b1aa6fc49fc71be997a9f1a81051501093212743de1ea783b4f1d0d0f78da38e0f1f28f0b91b0a3a30d5f7f855fd23fe3cfe48bfcc7f2771d57d07ef43fa1057ddb82ac1fee977ec9fbefbd3c853d48d3be17730f2bc0ff97dddf77934b12a7508cd26a35b32942976c8628a17f3e7752bb49059a5cb163f5a9560dfc7efd8f731f214795f33f2acc655f7fe3cc23f8d3c34e3aa1b57752cc19fc7eff4cb7cbfcc87cf6d5a0ccc4bea4fa385c178c85b2dfa3e617c6aa38aa015a6e486ecffb1240a84148c4fb6576249ffd263ba05fbb921fd9558b269bfcb64b38e57b224d91cf23387b86ea535a04ae6698f47cd70d9af0692f58f685f25c6ac683efc1a9a07c51085423d0d2aec68c215ca43bdd884a542682c2645c654280c2604136218c33c145e29a0e840423b8e02490a590d64b219a2e0bd0893c31456dda843b3bd27eac0603c7ee66132af7ade81880721202e159a40ea9740f3ab3f4233f61475dfe38ffad538bd75241c7bfac16725ef5b3383e5adde19feccef843fe33b31af1a79fa636844d48722f83362f82a31e651bfe38ffa6edce907dfeff78930df437cf92f1427694f6f3f460ced879bb8d241a1c08f91112719de180d667c19755223cca2c2f166fc4f7cfae2c3f5090e1452cc88a2c695c6f6290cc79c42f0e9f75ec74c5c624dcdf28f4118b1c802f663c449a6fe245a142a85b21ff3f2335c69a34e2a656128a54f3f1629eafd77503ca771c53f4f224a24b22fe319c7d86808233181d0a751f8e5c5f3bac31577fa8f6a4f1989d9a24f4b8ec560edeaa75f0f714cc114b6d73e6575506f8149a2de484ce765e4596c0ee19a8c909294b4eebd87811f36a18ffad4efa03e35f2a05e1b774e6f479efed3ebbfee41ef43d4091475bc45ff134df0167d4f4ca236f4a10d2ed5d78b94a53bffa589ca752395796b3e25a2316a4487ba5a6ba5332177770ff256addc8fb7e6d725a6268e033faf7b7f0e147d2622cdef44ffd7adcff51533921169433ff4999a4e70add6e7aad12b1d53396ee324a5f9ff5c6b6d56e5b80d87b29c6b9830ba1737d536ae76de07862794055f34a0cbafc1407fdc757a7e1a4485a8cc5da9e7b15aebaa41deeaaf4436e64deee23cc95d9c2ac8fe30d117129315a4d66231596c16d3828286b420226d0577512626a74c5992b05c992e9ae447dc45ab92d08c327d733e5d9aae1a9bad8e40dffae2434d725705c7b2d6584daa492574ff0b11b3a5d52057a9acad1a67d4ac96d2ac1e6bacdf8a144681aeb605253a978fc25ac0e524fa96d9d2dee302e398542a6b99b65cad72481c1287c421dde681c2f50bc979acf4ebd2d7625a4c8b69b1db2fe56aa50bac685a904a65ad16c4c4055a2893cf2d403489d2249a74054acce59e1a51236a448da81015a242dd0b6c18279ed8f9f4ce590e6754e1c28081beb624257e469256459366c4680e5274e0a51f6fcd9a0311d01943de9a3587210fa9f3232f7e62e0203865242d61eb9d475ebc6e0982311d1853c3e3ce2330906c9a7c1fcf395fd3344dab94d2f700d49e1b27cf71e34e35df344a8f34cdb5f623e6597b6afedb77e108da6f63495fe3be0b73b8ca69d652eb01f13f8dd22b2c6be90d0f1ca54d7080e2baffc7c496748683d0757f2fcc71daed41c490d4ddcdaa798a051636f70631aebf2a76fd9f49971ba2b82c9d1c18f590c61358a410a5c08b2e68c044c30c51d0e0629082e2dc12bc3634516f80e1f66fa0bb2f71a66d430d53fa82a0bb7b0d705c07afbb77508310b7bb56cb6678e1519056d0baaba6a6e6f27c9ed5a0c4033e71b1db0882ebe396eb5f226065c7fdc00462c20c93752eac7667ea52a266b99394776dc657c384e5afbdf26fd2cfeab7fdaa2eee9a3f9985ac481801ff36aeb8df44dac4524d639008fd22f46fe8e3504a6fe8cb9d3335b8dc6da41aa569bc6e10a7ead7665a9176bde8cc6868ea170e0d21340ef364cd11eceb6adab8d2e6106d8c00df3ac7b25efbbadbd8a5a87dddd7bde1b373fe9cf3eb9c3fefec6889d9510c66473fcc8e8466473fb3299a96665360b1329b82ca6c0a29b32988984d21349be2673645925995396655d49855499a5559faae7c18f021e9d32c41619e2ebb2ecfc12c5cfeb1c220859d8f24a4dba8d44cb755392b95aa1900000010006315003028100c0744429140240f654d710f14800c7f9246745a194ba46192a320658c218818620010203003324232dc048b6a78ae90b3e05e7e2a49a66daa1ab2e87cc156f9e60348cbd330baa1b128b6895976b75f4a44321c8cd0fa58be7a4e5716f14033b4c1dda5a70c2cd7edd9c9d1cd78a6b33597c29d41a2d90c084818f40f03e5ab270c68373d35f045c99cf0edc6347c828615e3a952ffa0f9d7b37e99417c4c1a712545e9bff5acc000b9f83ad17ba599fef9c7d504444ff3166df729da79ea44d6c0c438351a37befe1cd1336a1c35b43be8e536a458df49489464c26060756d4f18b8bf537b0c35cd77d63fadb637630ad2d9012d855c59ba9559fa4f3d17dd00a39a43b51128d755a90ec4dd8ee2f11c3ad5680400056e189cb3d1bb2f15e049f96b26afde182c4cf7a0a1d4bdf9c28c4ac7488e49d851401d05d728d3d985dbc20e1ce9785699ab49c31169d47700b0c21aaa5b25082abf5286d41583c98593125d184d9e14e8415036800f626f41aae8cdbc7a2a742789c493237334d1dc2973c0c8d0bf01cce84da51189f176ad53c630dd5db1430ef6a68aa831faa287c06de212d2e676038c6c61e8aeaa235028aa1f1765b6c552bf0fcc38fd790e81310ac354a2070ed141028f9dfd377f148b65d2b4c8f1c1ea0c787a86949e42a0c042394f70b0238f2f86579b6bc5c34f6a279e2ebffd4d20875960db6cb78e688eae2395cf3b640d7625ca833cfe862c0cf48d47c890c5eb4c41983d961befab101e53d111792690cfd1222f7bba583f4137d3004036c6c12149a159bde5e9d70f4afeee1ddc2722292a74f21ec002f07255d5494cf985b843bd9e5f3e3217e18687bafc2b3d6a8e30b0fcefe562a271802d3663eceb3346e5d2492a2ee23fea12d1e908886d2b845e331cb0bd05cef527e7639c96701a563d7a406d34d0f986fab8a29e9683f7a965ea79239262a1aac8042227b032b44df257ce1c307954611e347a64f1c1a112913caa69a51b59b543b37d8b092c953ea28e638317ec7bc0a300f452d9c39e22cfff8fa0eb41116b6aaae026bf13255c49d843ef354619e848e843772ed57eafb1c4df8f9293f7f2f15efd553ac1464087c0676847df0629c9685f686fd932391c0915770c08d4835958d74d677404873e52ee1fdc5e3cb4c4ce018a47d84d0244e2d0c7e41ffc2cb7ce67d3f549d8cd3bded30261475403bd139645ea48569cbb3c472a20b54e408ea8215a55c15e44306a90cfb4efa30119ccad9a638d2b88d37a11380252d5a20bc6977e8ea5b60287f97dd63e500a7be889c8e82acd64d635597a5c8957107a915bb9b74f4aabf61f761d28673a759c2223532fc76f5a315cab7ae66353f7133cac22ab2b99372f4519743cc3e772ab9b144333af61d763255c41ed0af65df27e62e643296a6831039245b5621cbbf950eb3be5a866138c328d729640cd8f89e3d326668197f29d94fc3a79c6677425801feb01663c646a1725a49641ce7ff51a58ce4840d8d6e74b3593387e72ba5b3bad7a5cc9d7ff4e5704c3e192dbbd13e6237b944d43f5cb38e1a28dff720bfc70e083eceeda676d63e93c483f9fba6b4435acd5d95b21b939cc2c1b0973117264c2b09977787a5429af907d7c92e1a0eaf58c5beda9c430eae1814d5f3fbea1f5292532f15b4350f84d6b32f35b869e52ea15c9c4b8dec3fe53d57da2dac39350f548fbef015844b8f0cdd866d4788f577e8bbe6bfd35cae06e3771fe9324434ff5ab84311313c34d6fb4d73bbf4af005eaf667697b4ec5953a4098d895c19cd896fe2d1cdf61532fb8c19ef1ef22e432ca43c4cc58e4d99b19914ae8ff37e37bff53184ae0fe23ec4b7e3740208270b9f4ec678d130b56a3213e317ad5fcf8d87c8147d2b7ea4b11c5b77eb131a065a83731777bd1a308403416f4b8aa2d481cb91c58f2d8e64551360cd02845f78e7fd1fd55146b8bcb525c286b0dd69e04fdf5a3bf8e491f7fd051496469337fc4c1b4cf0d7334844e5dd455cc7a21606f95e8a989dc0acc597504e54076d9e54d740c1b9abafc2153171dead4bda6e73e13d1543141aff3954d08e2e01ff24f06a810449e917d733c80490adbf1612c166fd43effd4e223c900b8459b3728a43a1d3d7238db56c9572c31cb192a71baeea6ed7213672e8b5aad2ed03610ba457f3097f589926d8dbe8a7c6383962a01841971446d9eccc607411ac409b6587ffc4a2f2638476b771291977e73c466123d8239f451a319fd7c93b11ce16b713bbfeab112f4bfdbc6f5ebac87a0a58ef808b4295d74dc7572c81dbbae5b5d3f5c1510af9a25dd3ee4532e6780c9361ecde0c642c73a9689e6a40a3d6c40d7cd453b1f549dfacde6a1e8af2afa37d39ada9cb0b2aca24a0a618537a392a5407212b7d800cd85eb4795861f321124e3f7a80278941c3258ccd83408948d597bb2744f960299db29d63a973dcbb506a20e5c3627e8b8109a7dfbec7889bfc472e33d0c341a547c8ca3a8045b4716b11b5b4bcf911acc50caec5128cb4ef3c1fdda283e0f9870c80865e9da1e1a9121ad5a1f9997491aaf4d99c908159b621e60a55a4122de06ac929cfaf6ba04ee4520a8ee019a358c77162d8655125fc887b828da139e23342559d2da5c4a35b579d866b4cc67224f5ffef5f74189118044d9c615bd042450e2d9048c2591826c453588685885404eeea5ff61dc3964ac6934595b9e2387cf1aa923336465e7ef9a5cb074b167bd834a6adec478af7b9fcec16b85f70df2b06c069e204403a62c2cb5c35c7101645c409981625c5382b1b0e43e2cdb6adfad47213d11cc750f40440dd92014778184d40740d369382b24712c04f743fa6f9aa292a501e7129fa68d7225db88b2d38e083602b41df8e1b8c6ab1a6edc629bd052b877a56931c463b9bd94a0987d6e990ee1fccc46414d70d4304484ce54c9b428fba6e1fde18c1cada704cf2318bfdb8642a48b59ff7cd0d7058bab7f9426f3c7dd7037d884065772b87ed17156a506949ec3bd6fce1a54653f4b9374c136195c8425a0d0a67a6c2159ccd1291060f9a3a55363f4f14feed029e18bf310d0de6128ea2a9368f471262923a38bac3ad10846988ada53e654f491d30dd986699fbc89d8d8eb1503adca4817a65e2d3f1ad3011ee54055302605529460f637ebea17d4129994d8a6bb62ef097415c23dd21361623b427066ac73340d78205dde190486ba8fdbd62e9ce90caf32fcf82ccf48c2b5fe2f93601ef878df6743fba5dde2f0750b34316440d5a09288aab3f46a510a92a7c5a64e134ab6b46f93b6bbd0323aefb01960be92d91900e99060442aa69d14fe38013f6b85052e7facdf61ee24f911eba41ecf3de082eda45e6ef1c58027daef8daed18e7e434a35d87f8de4f1315173b4303b50ed1a49e2294e4d3a4673d0b002f8631366148b58ff563bec411e4ae6424fb63eee1e7d73bd84e1f9246f4007889f05fe074a16d93a0c43dbcce0e282a6c35f5bcde974824a94351c7bb50877fe5f93f44094e854e0852ef1fda502850e7342190ba3aff0f5dc1f58fd0270881070a601145e58a0ec96227afd0add359ea1809bdb669912aef5e6b0e36bf116affe2b4c1fb4782d61c076c947a83594fb9c84ad636e968253d5b928d98dced90124d79743eac30bf1ad62747d807357c6a18cb05fc536a2b1dadb5f93f0070448cc592a698c35c45997927ff532a04763b6a3346b1fffa43e8e17ccbff669d90fc502fd9d00ca9a5bae04f62f51d8ad9ecebde689ff9f71cf1b91f3a1ec70d52e0bf5969456a554c7f067dc5ecedc7b880d7ff7fbc1f9ddbf759a5c003dbd8c9da0f45ad03a0e1a5be5278caa8c0600f623668db9182bc57bb6ba9e35c32479cd8a17ea79fed1dbff18becf2e5441b50ac0df853a0c686618925520ec8e433258a28c215470fb3b6fe60547129ca724f836c10974dc9723cec5e20d240f4794953c61aef0be5635f4de231166c2f4e25a58d207676be3721e0d16351004d9309027a24aef276b51fb36d51ec8bfef53b1490822177b0350c0bed1e68556ad79b91000e802cb81819d17186a76a69ebe2994aa7b3e8beb1d0d3d1a66675c3a8e225b3f59e1a0265525adca79f84e77073d659eaacf179e64e3d8e1e9b39dc492ffd0b5152892732900b9ffbeac8ea4fe488a8d76e48ff63f610dcc5247a29a29bb504f61a9e270209f3ed9f63e34d603065c56a68ef1ac71e95035f1b6645ba98e4d93b005e360e8bf0f0ad52839c3b07bb30c4c9b5173fcb4fe3dd34931ce286a284207644bf2536d215a306b75dd8a40af185507da5f2c7809ba97e138ec6272d57d88813a59b44e99ffe9ed75f1773ec329f90175606a05959feff67ac4b97d0cb1a98f42a8b4726e8339f8a78b61cb6743bed7eb2a71497772e02f1c477211b2a8eab8179b6402a53c592234751751e73b542364c43e2d7a2ef4c32b91746bd442d8fb8e63679cfb3ccff63b961b1a6cb1aa484f7f17697c24d5e01d24160ddf24a48814a2ff97c7205d4e5031d86c8951ea6d380767a145fd385636443ece708533fcf6f0ba940c69abf8594ac663f558a016de4a894910073360b28a31b2f410d2b5cca18256c5be188f25e3895531a53070ed8c069993209a07dd6bb5f298c92cdaed5f159197aeb881d4b51ad752fe2d4a454523153589453a13ac54ec5c1001649241749553cc9a745ebe13b9c1ca553cf860ae377a4ab3a17da2cea8d5b533ed70daa5b86aa24f2ff24a5cd5ccfefb12d1bff6eea30fcc84f6886c90f443269175d53c4d2409e8111df8ec31ca171a6d1e23e5f033843fe378d59838e2c067144986a84844ccb8cb78dd41d4d4491c44525ac00f9794323b03884075491ab4c16d28d69c27b195a5f32b2457af63183019a2a90960a8a82231c35012a30927ea17204168772668473339d0ae1ca1bb60017a483a73bfbd9973f419c6df8ef7f6d1f149381253d31babb8a4377a568166a120c8d6608e20f696fae3cfece8660892f601350d44628aff49abc877f4f02fd1ed9312fb1f0848de8dcaed748dda0944bca93f342651ed042d61058a135047b8b67ff95a9d2164818221e2c1cc6cd822e73ab8aec2feeaa811d6bcfac86e9ad7fc60271b74e9459bc700ab0e0908753840ec0f028826e48c2afca99e2a42ffe45702284d35b24b708f303f8fd719087e25859d7189c5c93edd2460b1c6c89887e9ca42d00ebf8b2f8e52428fd9d089a2eb9ae71b6512cc70c962e91227a0d3941c7d017597e921b31414c6e7117b16854b2d80384af5613aeea626155b815810d929242ae63695fc3d385f6615385d9f1b83782fda3521fc070458f14d74cd54bcd0248d8973dcb03df2214563bee98d46076df7ebed40f9abe9e7496cfb0a4b7f6f42ca9b6e0dfa201686bcf067cead35cfb3a166f4d740f825640978628e2edd93242df841ed4638d12eed97bdec4f32ef160a9bd2149687212003b4fa1b0d12f0ace34d7e0585de92689015effec11122c8728fc8a71fea555525ecd7e5ceaedad52fe19d676615feec58721c4fed57d1abc90318d4fc1768ca53b81344328d68a10b1b7f438b62d1726e7e343e31ba93b7a89a27b749dc8945ed68d8971919cd14abe25fc098fc48fb34f71c9f7fa8b61b87f091b64aed27409af873ca2d043c0d61fcdb36910f286e1ee6ae8d2f103f01601ddbee4aed18da98c4fb2380b59aef0b5eae2b71fa8ff559f6534406fa070c0f5cf185ae1c4d92725c4cb252091d447ff4b6a49b352b2b0308bf8cd2f612a0d9867cb4a0ed9bf85935564bbaa9810ce981aea0d9b1063245af0f974f46cf46f99f9c41230e56d0395b128fb7f864b0e17fc534daa46eb4f13f919ea336329828b0a92139fd6dfcb333c83009cc64070e51fbbd14697bb0e834ce45f07c7f608b94de947374f9cc9a1d09ed87384d3935297c4990c72acafc4d3af685ea73ba79aed9e6f49ce866567a861dfd25e976b7b07e4c9b9120539c359da4c972dfe5a37f0796b20a943d02fb024ad75ae60e9d43e74bf308f8eae812712180f33041805066e821bfdd8c7f1b24e3d4cdc4ad2374d4c32b77f68207198a5e8cfe88e46a22af76020f29c3a859e1ef3a50f8091d5a539845d504d7a8cc0c7e881732d939dc01f258b04e76a447dcf73d37180f2726e0f5a8e165bc0139a5aeabf56200f88ba37b21c211593a864c4790cb6cc933f5ea97c40f69dd980ab0dfc285ab24cc0505f2f1a48e2fe42be76b8f688a69fe8abf62e1234b05d131cd651e3104399e12e86c7f49f6d78f2c74b72725520ca241478ad05d8390fb06e452b8da8dd656c8482e5e967c75ed39998d555670f9a9b50d7136b93c27d68673df74d278061042462d0dcba7b31b8eabceb0b7c606754e1301006e2c1a04a11c62eed8c9ab8867ee577af3be9201c2dd3874b0f7f41ed9357673d1abb97c0045d2dbb64bc9dd8bd41046a9b35054d04b454d0b8ef174872d925c79005ea42169990ec56efcbe3fb4ab0c7cc96a5e58592aae847b116fbdbd6c5334ed78d76073da3c6b21edbd2672b28ac048c02f1ddee104a5462691d2791e4c4d56bb329092a55c6136bf2a760b7863f95370c24bd43b3cdd8d1c93f3268937360338209da848adce21584e9c90fe010b3b2af78d723a96b0a7a61f2d63b8430af6c478dfb490e27065775bf59fd5e874095b62c9708573f3a819c21f9fffd47785b77b4fbd88eca69e710c5703f03fcb8f34690df4988d7d31b087d2f4ec089ee1d85f71ea5bb6677d4a02580999b57ffd9e92375de15ba670575586149ade406285eaebc173c20d86bfbe8f5bd3cbe2fce18284fcfae5aee7af0fb0f153421a7eb998c569db0b779710de8a9cfc773e5500cdd944fc8eb7edd7412035e45dec85d3c4fa9e0c55048a9177d9ee5885bd02422cd0b2ae0e3149843b2389ac43ef685c61e4ad7905263ffbd3209ed6acc8850579f0c533c987ee76e4ab26d2f37c4fe508d0e1492e9dd02b0d5ce9a3fec36994912d72988e35cdb4d087547bf6b0c631045925d82df61086a163eac0b464ccd1d085078dc8543703d54cea838cfbc3f5e49a565e722d7cabbc45a8ce4f1c08019b4739187421feffe8ca319979237634ab03a1523c53af6c5867f642141fead2d8ba89d170ffa3dfa7d923df637b103cbf2fd4167d2c4a2d2ab61cdea1611d237ac023fd2196e15ea940b32c3f00221a9ab1d5ebd0f7bd9ee2d11e3701ca3b2d13a70643945c87c91d2e9c3afe30f19d945dd89dc06b8bd4924800d3249dcaafc4b47d7b3c323da1c8019bc81faa175f9291cbd8db0b65e946f14f9c353e264dc87cece64dc4393437bc83a33f6b264668e29a42296e6fe13dc24e65289119b841663b212187a0768c19b8a76251e3105c2cefcb97ed76e52f0497666313d561e40b29d9a14ac2e7422f70fbefcfb0f18d32a2f12df00f48785d15a28038710273d07db6115853f6df7334757280954f04babad9d7fca46184c3f135696147b04824200052873598581e2c220cc450ca384e3ede27b188bc70eab19712f0c432dacb86069a27f83a1bb428721b75e68b25c833f03673604f460f9ba650369f78756b27f205f7f9497e20952f3416fba8fc425e7b4003f8b538fa66a1855eeb5b15ee11bc144b3838080a299a0e2cb4f539a5c61825e210a5195c30dc590c4c22a44061af850a053005cecc999d0ac29193d21cd15c8cc9022eb64778d701ec3ba35b3d0217e0ce9d480a56093f00c722497e4bccb3978aa06aca3cb39ea68923f69bab3a8b8c103cd06ca98b79cefbbffa0ffa1b878a54a0f842118d3ced0ababed16da81456c906fb391c922eaccfd8bf52a8e42fef975aa571fdc12c36a5fcf9d94ae935981909708947a7a407f91276f38297a5b96be092bfca588aa9630e6301e73d178d1e0ac9bfdb3cfaa67215df5799abb7977a1a9ea7bb41ddd4959145899e89e37f1e0629a85869c6e2281e74750c84e3e21accc5361372cc8819d6a4cb8550944ecd9fe7c99b55992d721b040e242378302598196c87b9805a5dba6f9ef8281672126fee0663565a6fb1e44536e4791f4d1e822b1c9a25d414304e7a39bba14433c0ce7ff90dfa361c0c33a1eb064112471a6f291616b56a9725af4bf5a75e5f4d5c96eda4016b622ce6e13333ce9c8e312514a6860172a44a8d3dd4c6ca6bea10ebe0080fcc396e64689bf111bdb07bc4a730e764423fbe9e30b3bb588477fc1394c22b8b7be6a1c168159684d14a616446cb26012cfd173d24e6c38e0ddfa1585316393c7c909dc0e77f0cace38f4c165b4c04bc73fa72c0b6af9ce0fd24291d02346fa80a92847400ec413f63b0018f143a1e92f1de7e86c6086231242518299f0ea7c1b49e232be2d820ceabd882f8f1640006682d10aefd2a3ea30f8469928bdcf5962b77722e760b1a413b8703dc90ecbe43420cf6903485200b128ac7a9cba63d8ba9a27305a825339bf01d903d4befeca0fc32980d8024112d42a9ca14626f2d09a76f688251d1e5592c05adbc537e3a37ba95990a3cb87fe269ae9d853fe0570a616e1d9a62a6fad853b6024243236eb239c3ca053bcb2a9c223cafaa0d1201f11f55b49bafc9f35d8e530cc6cc03c5f9f2ce0f1d9ddd9016011e49a9b428f37567857af94bca37d1d997f91c8d9731b1a385db7a287e40051d65efd8f7f4d727a8dff2221d5b7ca5eafb1fd6a64d901ea005d940c64442d7e64d5cc7d63deb64468f7ce292633726567542a9b19e442c692235342963c8c47e6cf6c4977d4986bab1afde44362de742297d9fa9f59f509ed5134897cdcc835779f019e62a1391501d12caa712320e8449cfabd840be78f5e2d19d20f2b60a02b08a646e3382dbe406bd045865f48fa9f11e3a8921b58711cb6e4c0c1499bbc5848d56be55ff0aa470ecbd3fbd0916109fc546bac0dbfec15226a0aeec97809e041e03296eae836a493e1894df7b2dba480e05cc526d98f18e2610e1924ee9aade3caf362cef1b9a445a2d97975d9e8ee10405c350e2a1b042e5d28403044a02027ab6bc721a51d33e595e3dba779f87e0ac7b7a2e3d6c2199f5af058ddfd7b370e5cc1bef2fcfc5ef1be7347989754ee204a4005d30340e413064e6858442517ebdad8bad7f74d5659d4ba90951ea93d423ac9c1b5a99b762858754d237ccbc22819adc64ffd2a365e708867395033fc361a74ad090eff1e3805a8db60fd57c1f0c93465377d5132109c73a27514801925b501cd81aafdca6ecb10942350a878d05c1bc2771196a84bfc5045c2effd2f87ab82ed2c83af6c4293fe6e2d450e9aa6a9a4197497727a60dc01a767506227ba9aaeb24605206c0f9345a327238e70845ac0a5e591fb6205982bbd01fb8edc9b34d33f06b2f956a85ead7a87cdb5471be4b0478ab43a84a4e4e13a8d741aa86be331fd863d8c53cf028e7ad19c51408b72c2c04bf0a40d371cb3e6daf83dcc07a7643937d57085b57207cab0154b97cf2597f1ab41e51d17a494aeb89dfec8b0d0170d1eecc79d3f9066e0beb4e94835ae1dacb425b490357c0d946d035482cd014a85860c3f70012bd04fca4161bf0443b4110ee639c42186cb6758cbdb0c012ec5e43c3b8500bc0ad948659ba406c78376e7d41ec5e32c9b88f27995e80cd4a5aedbfec54f90f9594304a1d168e9b6f861ff4421944876f7209d076b874aad5ab59ee82b8e9b35232e2753804177614520a47a1b32d76d162191697ba36551e40880a186773e9d429b830600cab0e8164fc529a737a59c20b6a1998ee183d457ef1d7967b1fd7f722dda05e0c4b3401085ec7135ded704dc3758f9212e353f99519a83fe1be628a412f271311c22d1983cac21739a8ce2daaa2670a79efdac2f7b563acf3ba85f864d6528d3eac49bc5b34ae8bfdfc959d6bbe0f6e85d5598ec320ca64063c933164da2610aafe7017e8280631dfca8008e9345adc0be87d55fc7897e8a30d638d232866709430b358126952e107a77dcc972e70f678d21d20038ec0f10a6439242cae62fb9d175c6eda2ccfeaae011094f540a378d2ab17e651c7134b17dcfe832d6fe1f1f6eeb0fddeff23af8a4b456c6baa4606c21d340569982a5719cac60698b9d73ff1e043fcbf10490aa83a259f2aa1bbbc54dfa118dfb4b2a32a1343deb3e34245dd317137d92d506f62306eab52ff3ae3ed9e2357da199ac8737f1e5fdde0402cef7f0707e6e0561d7d6fb513c7483313e39e9f14468db1123fa2a4e7ec25683506f44e3dae8544935de702ad35b9e01bc14ece93e0fd6a56d8fa3d13c2601b57675a22fe195574579f16fe4c979d5e8e7576a7da33d635c6843f2504b96b290d33e0b305a500ad4b3c6711a333b3548762764b0d7bfe45e94579be45af41b625dc4ff6cd3d56de500d7fda0db130d91482d5364a90d5ec7b8d08f114d4df2fa47b64580c11aa1b85179d5a0ce26831029dc5a8c9cf62957f694856e55521b6bd35f9efe37e8d18d66c31f2d2c973f1bdca7ff54b04aca7602d067f86224f8d4614834820def2ab9bba7b2136b869f05dc83060cf1962a85c84db6a318ce921ada5dfdc808000e86860c93dced15ee65022b02823e635c3759445a24487f02dff88ac39b9987319febdcb25010209cd02a344e3cee6b4ceb22ac1c7f2bd784b7bdee798a85f6fa76bb9b48eee340bce941c400a0d4e6bd471b35ed6e68f669ddcdab93f0977b7a1e2ed8a0b017d3c1d21a8407157930c133585dbaa6a868340ef55b56f996358241403022285cc38317883dd77bc383e50e032bae69487003731225c63e4c04bbdf9266efd62b3a24dc3687605ef8c6e3b433c8844dc239215740ff2cd256897ec516af3caefb36894b54f6a2608f66c85f3a610935de43a71f76b03f3989e1e859ebf59e1701674a4652241e9af120fdec20ce5d49a7c982085aa36752c1428d902dea1e0fe989fcfc3144e7052f26eed163f752a09c9dcfa5acfc7eb148c25a252bea14b71d4db023d5ed464ed013cdc6b086c8ba63c026759b3583ef790848f47e78628f6edd59d77469e51d20a3a9098c18c58a1030c0e5da45a5ac58a15a4e3479b3a65b6fd360f60578ecc65af73a5672235cd2bf4591544391ac56ee60d63f43771bed8391db5247514c9d5d14cba452571ec2f2110020c326f5f417b28dfdf2f17a13dd4db9294186afaac2242305de22bc274a5630aee47ed437ea3bfef6742b3bd99481f4253cb7da507667bb44d96661404fe3e49cd0c40ab4f5c3ff72a9930b13ce05a268d38827b3d46c9c21855c80e2f52f0a5e6e0a6d7f5f91ed3f33be808dd34117536b808bf6ca79234bd908ae6d7cfd75fdf964c2c13be8510013212f21246bd285254cde1b785c7e96fb17a55e81e331c39cb347165dac19c1145756e70bba52f452918c192fa9caf0963cba9034470667d624ac7f6afb349afe50ea050812c593771259139da6bd43ad481673767d165d3814cf4329ebfe8766667082fe26bc83eb2669d310fa0e1bcea9cebc9714e85f6e07ece57d7719b028d32fd9ce393dd9e53ff537a004a21d0c0aa7d4c859adfe93a0e517a654f4204f43ba095329e0d37b248871109aa95f58f802f8d22a2910a354ecccea5725ff28974c3f7271bec790610950e34bc31cdf65aba0c00138d7c3592d7644ad943d2f8ae66af7ea8a4dd1a903a1dbcfb7bce2035471918a522929943143e4326063c44f9367dd267f747c5e41c5dfe39c666beb1c76bd7071e90e2072761810b5985626680a8fab353ac39b06acd1d84158eaccbdcd4a6a8b2e7ec807111629fb852781a35c134f85dc73e35b54b3a9f0371e922b719dfc738d087b627b1c5e3dc99a3f6e71091320c72e22d82dbfbbc1dbe0c1f683340b68952e8711d68f36ed2de8eb3832f657ee1179d64b6141a782fa092346f923c5628f4fde9d16237472e8431d9f6e8ae262dff2a94d0cf2b0b70a620019019a0852415966f3ce81c459fdf953efc36b17319dd8cf0154a1cda99b162ff2d8b9eb6d9e7f1ddefd5b9b7aa45b26cf564b9a96ac9d22ce2a82edf9963f0d71321443b0fe5334168193a9a219d2ff99b7ceafc58b784ee650be3c9446564fd0761ff7998c5de5efb492dd3cb94f4bb815634a92adb7627dcf32e0a799a71fcbc1cc06d889e03f2aab54630b7a0c24d3a154721e5bbf6607e49e911493d4b24f9ec430da12dc43d0d79c2511546e4b43642cb597dd132139d2907a4c466cbf89a433b9c262a7b331fb42d0b8b9a83d8cad3efc1ed247ec31b4a9c689ea22e1d7bf3b4619d11178ca845ba4753748b2b1edf671efab794a1be296602a19dddf44832a2705672bcc84ee02aef246e2e6ca80396f4c62516808f1ab4b12d1ce8cdedc7511a496d3e74e61660d30d96783c814b079bb77c3d027c99278c93d33858fbc55c78a2fd592ab7242a3544ad6fa57ba82415f06b518539abf61745c779c1be5405cb764a63332d55a8f0f9e217887872e4cf6741742aed14264aef119e2eb3e569c4618a910bc68b51f1fbf9950e8f57fcf31316b649236f0f7771094b3f7a6589236a5f3fe85c90ce0075d5c6880544428bd1c26275cbc2b89920c0ccfcc8ddaf37c766e9647d93f79c06a6d7bc6b6144bd747f236927139a153b0e73e9d163cc9a0d538a8038ed8e86e99f720ec933bb68e5f7b3bb4ab824458adca0eebd337fc89238cabf4fb0853eb87643e4b552e1d28b2680423642f2fd4b46af68a8da70e1c157e3ffece45fdb12475793b208ae99a986dd348f37e16b9b1f87a7a3dee36a148485a6baabd163387e30ea954f9430c548713059e58558a4170c287cb144b3e0c3e214e0b6fad3987c04d0a649d31a313b4816f806405d641d48254e0158c894b5d808caca52d68178a3e8574c430b09e194f25698e8963ecf60de7b99ae115794827c274f0eade8075808b0caa83db2698769308a035f7b7e5f35b3ad14358bd4f7ca96c27cf724c5ee64d2db7fad07fb96d33038249de8e5920084ecfe2c9479a8bea0b75d66f94d1a3b32911390ae4f7a7eb8ce8df1b22e9e661b563e7295fc31323b3acea7dd285dacf573bfff64f1e0ede1037a5c2c68f87fa88902da163a77288fc4679f430ef0579bf6b213de1fe9c967332f2ad22804c059215a7391707ca4b82c0bcae392f11f13d1214ea360d7840c5cc4b591165cd35dda098af165c343d231d067609b8a7548a4673428826517e117c1ec145b795d8bf53cfb637f019e7ce48ee8941e72f5f2191881cc0c02d14c861a29454f15778bb4f9d8624e65234b0c09eafd4a3192be06efd1b35ef9a9aa118ae2e28e198fcd779318aee24d588e128757dcfeec9b74b08fe75091f86133f5355ea1c703f04a0881e324c7b445011b2c95fb40d7e694cf1d9522d29f336c3bfaf32776e6403b5e3f1b44fe6e1f27381392e29bcd94e147fd9e043b5091bfcdafbadc405cb371ebff639d7afd5cf5126ce5c794c7c5f53eca03b2b3174a5c335f09da1bbd773a1d5c26bae7dc89bab48dfbf923aaec3fa29b4a4d0353a31752278ffe04770519a85130f2fea8b6cc2ef8047a844ecfdf45dd774b51f34a8f2f3d8dbefdec165fd959f6d973e470af4cae752f271c438b5304e2ca84feab7c6f48b8c4db2a69a817aa139708eeaef761931b6703693d963af55ef2f7c8bb8a13d696b3aed2bf0e59b205acd5fc3e3105a36bbdad04175067328484183e380a4e6b687475fcc07273a35c4204acc805b3781b5d5e502c0ec512195875584381c74794cf2cdfba531f7c58e62000d4527c178476302a79d7f8161996368ff429fff11c6a22184bbb39684fa41cb15250e9fa316a548f1f2824e1aa2b50dc01855dce6a48eed344f8491dfa8234436869651192c21421796d8eebf7ddd3a22527a9a56dbf5e7d1f2ee9ffa68ce4f5e249e3581527931c0b0ef2b2d4a1960137ed612bc44cda51d0f55d1f720aaf5b57341b4b855d1ffe59200e3569e94b3f35d551d7751c1d2668e32047cb0a54babdc204c01d31d19ccc66c094f41c4ffcd7cd40e32e1622a7a83705489d619dd199bb5ff1b0052831e8a22250ddb13819e7073c16345a962ac6a25497aa2ed50d0506c20c3a68f2ebcf4e6fd78706385971a9ab763268412783fb5d231629b0b3e0e825c10a9db6b6d15d4b003502d3457730cc01088c3b488305d6504030bdc4bd706795432607c268eb63ce2c0eea8c118144ee301a831e4c9ebad088e0788d60ad49df0c4728a4c1ef74f98a38d19e029e03cbc3ed76461c86d46bc3db16707048cb77c8ed996c253ccb9c809db0bf2ec1fd5b88519873c9f3c20beb6db12297093c813877c0413219f06aab023c1f620576fa4981d27a3e02e77dac22ede5f97fab5b9b67d014306415e58c6eae235eccd9d5e1c5f897033bb622ed245a393cb75831359b8323c64c2da73cb39594e62b2518abac72f81a24fc8b78bbcf18efb31b3eaab0d77b26a62758adba075a1e9c032daf2c30002515b64c4105106fc685b2c36150f7dcef09e48d398535a0aa815989b92cdb3051027f00c6b3988a26f47071ab04e6ab1cfefeb429d93ec5928ac3e069e9ce40446ea85af7c52f05e421f375ed81b589d5a0eb5a933251ff6dcd227032d67b600d967604cc064db12ac432fba919e49414044f57fe050734979b00a433d828e870914dbb83b2712bc9bf966a633ad49706679ad72c11003488a30963ac32373a7c4dca75cdf8d338e4062e0f984cc00723dec83e9038f2deb91dbac2cdc5e670e6f6d31b418e1a245fcc727aed8600b170798a84983ba035b67c2d856e780b5bea18b3e7d93866b68670557205cf2a3b167e7fb6e793954dfbcdc4cbd5ed4de89c65194a48c8438280f76475c46e16ac372aa27ff38cd6d5c5aaac4834ad64db57492b7cf07cd2c2e3f7730d7e1354b2bbf54d306a50f414ad211b1b631b248519b6654424ee96458a4a5f622cb42fc7381286ae9d3b027219e643996f27b3e29a08769eef268d72dc4b540f13685bd0fc949daeceb9ff90e1fc0ddac6ca2f895635aeb4158b196ae14175eb5f7fa5f0ee66d4a5351b27e1ece0f274891b1dea9504fbaece09b49d80bee164655d9181e106c0fe407452d677b3863a3fb69fb752608afc1c091619bd590989014ddaea087127f9f58ad62f27c30417043ed015a76cf25298efb8176608cd3f1e1369f9b6b890ead9eba341e1a6702095b2661f03a01394db1e56d035addd0810b3f8a21b445ab61d6631145c2763491e3d0510514ce51b269a746e33fd34210ea3c99b5584e02f4d2cf55d8fb3c68627b1872b47ac2bc58e441daab25f9221c021d88ca476966f8917bfc670b3c77b35f1bd251a5a30618c2d37cca2436ab153b4cbe049d88472f049c86b1212455b4a90a2979095df5bdf8b44a780cd30a1968eac8328da7084cec3b79bd17fd842149998fb3cd5cbbeac4fa4ca5f4a2c744dee69c5bc844478737011f0c89ddbaac2b046c191aa3a872a79509182a101b4e81caafa1c823ae09fc4e8225208a49eb43929fe549f987968cc73bc42cbbf8614246d3942102bd3f075f211a941e3ccfeb3f34c3640e587218dfcd9d86036e39f01e390316f1862c0603bdc9364216e39643692ec8878e17d7c9c90da93cb886c464201be3f0f66ec54559b896590649c092d13ae04231cc785d8cce4f280f40668a85c23e04bffd2bc5f58f621b1e9dd7e18f2f80bf828e65d4064f8d1c8a234849b709f5a8bb822d846da7c6880cfc30da0e02500e9249b814b21cfc011c3eb30a70c40910c539ff9efc6f6971cd93399a7ad648917a77697b8e0dc6bfc8a08299c4ed8829f7c015fc74cbae7dac7830a80621ff865bb3867d95b9151feda945721c8161e1afe25666bfc4bc12e7c3c61824462493568ebfbe359693e984476306866c13aec031ea9b8877bf059e2bcae24ab493786bcc498af114805351af6d295a2972d82d2a441314c0ac3336c9f0f9d53cf0dd1972e325178af367c8954d8d0f82e74dea322fb504501bc669ac064401e885e9473efa6c00af44c0092f25871021320c4c0d604caa250ac0a88f4a6189b9caec85e560fc81539fb0970cf60bcca07f53a8b334a4d9609d1108a41c5ff14f9198d6cf47ad6ebbc856a9e1756ab4da104ed6228bade960ff1c8ecc4129ffd5998dad7895d3917c3879f9a64073180df22ec50a5c41260e72d9f86065a3cd1b3d310d85c64592412b1e148e7812994a890fbd0e73fdfcc2bd02140aaf294e13273ea250d5ff6919e009beb24e8752df8be496256ba1780f550859475c69f81f483cf4b681ae699767c9b31ac7dff35df7fd770694a88041c776e0e54afc05a448ccdb4af642578bd90b9c6832b87128723d63b37618e03c30005ca307051e8ba8f8a136b502ae78ad94fc007de255ac24deea84c79a6bf723665d02108a0eac132c8544ad6cce4d9d4eac3c87782c115e5a1552cb3a373633a1ad5980cc486f1de7cb4533fdc5427b45cfc740165ce9f080c43102be5196c6ac3a3d1d3375daf63d50bee6b022e83c0d550ed328cef23ff0d154299cbdbef1ce3e246f782f8d3a04af54f9393ca4c5c43597135382244611d53129490ca52d1fdad226390e1c20ef6ffd975c431668670d133011c763f338f53ddf636f5ca0eb4fe1563b0f16eed44e26f7c2da66af21b50dcf858aafcf5ac83ad025ad27ab7d6611536c9e9cb0ea82b4948f22ca99c7425fbe58044dd13445203468b883649ddb65866751fc806eeba03623b549272b011673d34a0d6489fc9ede71513d3142ed224b06dd6ef6244cb45dfdadac6bf67eef00242cc462e2993a36d083ab2215e70d5bee623c78a66416c585ba11ea1070deb596328a83171231a247e3fa6f4fcf24449423fe9887ec2a67b538973362075f28a574e8c4a41bf46f1003e7a11ce244a8cce34e9168be3acceb345a90dced65b4a76258709f7642fe95f9da032796c4a232426cad41a12e7f23e8354a61c4c4635af9f71d063500ff602b56208f585e36256e89ae9ab194dc23b569c06767bd4b54497d39bfc186cd0e8814d6624b8fdcb1442cd128e940df0b0d9657ca71405dbe1a93f43e81a8a5b1fd974bc157ebc0b76bfe3bfeabfeb4188d14eeeb520a6b7c7a164450df98113951497e82b2e7ee5d6c8f42787bc9c0d6bc502cca380c7ecd4033af4fa2887a491684579ae75f2e5592098c83eda77d2ebfda9df9c869be544f22353994565042dfc029a5016d55a7e5aa887f81fc704e64856ccd558a8011884e63994b64bfc2dc2a159d51f25265680864945c1aa9033612b5293ef4f633b226fc4cfa4ff714bc737268e980361c8663111946fe0f47670212f529cc83692384a68f8bd757f3c2c695df694f9d78979c5b1da1692b3ee62ad108dd9db46fa9813810bbc4d97a34497855d997ecc4e59b495e9a55f61d22cb9308dcf7dfc374e105170b3bfa8c6ee3f6c906176f064485f8c79d4f8bb85c1cc65bd4d127b74ad95c4bd9419891edcc6acc57902c295cfb4139df426fb26ed0cb9efbbfe666507757a05b76fedb27d5309b0e57142e8c2e7474d124a462d4e82f27b750d4cc2d901c7e518d217b139892e22b321217889a19c70e438e1b9de3e309911cab68712323292d9054d0cbdd244e1915b3213a1a17c89f6bd111b75b2a08ae35b56f13cde14f031d873c4eb1821fa9a843b16b9031f0fb4e015cf0ec90020cb6a1bd8006473b54d42905b7de9208471b50ff9e8379e26d9edabfa954b319db4ec510facba9d04364e09116e24ed48484450deb9e82c76e0b0928cd1d909fe6df69e910e7bec84905fac263468bfcac0dacb91458ee2c0856bab7f6ab5f0e565f60e23828e2d09f1501ce77dff2b5fbe381c7b13f179b33ac34c80257610d4c5a50276604c8685ae77ce719728930f5f4bfc15574d566cdfa044a93216f87e46bcd3564bc0a262965a8c3740f394583a2cfceeb48b0d23511d26eb883d10640909dafed2894d2bb1aae71b92c466099bc543edc2af7e95691f1c0775bba170d0bda06671bb2681fbfdd411df76764b7a874e6f3054cc0fe44339ab4994832ef498ce07c7a3702bc1d3f081de8d2bd234014ace3049e4d2324b9ef4c53275df675c0a513df5842208c80bde6ce809daf82128eedc38ff0a87b150b18612f7b6c7a2e32f2263991468f8ee492a80f7aab2dad0d199b4384d2db4d80188e4b0b0c4696527bac059e782d4f7ea9f6f557935964370400d508496a93ea3b7021406c3af2a69e3873936452e2f911d7669f858a735e43e0df7669858ca86f28358556fbd7f6038fde182b3e5dc26b4c53abe8985d944efa8aed6b39fe77e120d4b6c6534a08308e0bc3000c7a3132e82c392b6cc523bea445ad4b8a3961d23ef57176541de82291fa19d7492a496a03c2a7d6d7ac23c9983f4925860803120a0331f325e93d46d56083618b1d9dcb6701475943b102d39bf4eb787850c0877323ab6e2bac65640ced3f4652ba42c33c875a5fb55c0257888c72edd517d82a987a1fada64ea45296c17e1dfa92be04b5b3fce07ab16cdfd4328e9677021af73a05318c64cccf1d6c7af71315aa068fae9ef989a463f6dfaef5c6e1740f510038b1060c1395de52e112a450103589da458170169ede28e046c3fb6eeacf422b539729901c429d7e9d8988bee220612167a2234213223d17753e9c70629ed4d75f77a09ee62332e97701ad5aafd964c5263c528ac25608e0d614f708e08d1feeb9541c669f39ab7d3b6ebf798925ec4e0d1b09d8f6e6ea82a0075f75203d2d87009f6c87867c473c4290641e39fcecd44c27324a45c375604725ca21835e04106c63735e6d18e26b069cdd12b07ab90f91dac42e9506a93c6480627e8e1e48e0d073cc4072fed13b7b6fa01f76e76a92f3e2b10124f01b884285ba2567294c2e1f9f7624f875ee238e6fe11c1f7be4dcd00ff1acb7c379be699787bdb97bf7073f086ca2e13e0cc248fdb7a17a20a2f7c2e84dc22a3c4b971447e5b5c9a99cee5d45f02d8aad9746db48fb7765eff3628d37ac6ea6f872494e028b407fa4a1b086965fc8111d1b1a4ce6430a69f4846cb3ed01f75812ab025bcd9026dc228228a3713aa35012585af622ab61624ac7019422b61b827dbf663d5c22592a2f8ce2bf6aec3a609804e155be6243045d46b1277550f1113cb73b26881544781a466b12450849639d5febabd03ae82d28660062910b1033500337ca8c3824e535e245361fa8dba269fc113dfeb49c27eb657c5f10f710cb3908311313c7cb3ce8a586c573e60fb58598521d32734b62138d3fc31e94884d2fe63e72f643a4467987d864bfaeda863b4d8586d75755daea2f4bf475568c89f3af11c5f775231f4f3b49210834f104147b34a62a915b8686d775839e60749c898fc76e82d43c31d67501d1491500500f3b637636f96655c8ee4dc12e99a0066804a629dcfbcf1bc5ae8b79eabf59179daa4e31bbf7eb0cf1bfb11b283536823b9c046325f9c1416a1dbad21b98ac7d4301c888475bc0c7df0cc14a8ec3f49c3891fe0333fc03066a5f8066b012f53e054b7012e6b98bbf7af9cfb9d70a5c442f50a5ff47a9179eddca74663bbb9fe70ac9ce8724550986d08acc447108857d129a77adb4a1d846acf8ae8f37b49597305d8bd90f110a7a9a5df52c0aa6ae942fda4ad224072a89234b1630e09e05387f93a36ffd636ec813e114ed412d519e4a32c2e0902c8e96134ae84a059f6e107711b117078c05ca865e39a43425fcdf8ef087dc954196ae426f00b93a7bc47b1834f1debfff93922cd015054c70ff891383489cedb091d308526716857b721647123af40cba8947e02a8f15339203de3c275f8a3ddf4ae92313464fc9d7d1914a0e1654e90cd444f7a434f1240e41eed973642385dcff82dbe01614f529e668173cacf9dfc3e4c35644055b2cb309a8e03cf26569a8d0a84b289cbb8c009dced870536e601a15d2381e832a01ddd8e4857c1bc178a44137b1894516245d9ddb9f1ec03188e108156e3a566eca5035c9cc5504293df2cabcb4698f501b6eaeef9f238bf0f8582e066bfa73c5468c73b993e79e81feb0176e1d846e02a28b4558eeb9010090d2d33a12bd561c3511f40cc7e3fbd84c9408fc8d24a3610a12208b5f3ebd8130e0f53d0d27bc458c9eba502773280fc102ac9d1dde8e0d1e9ab6c3603095e4ab191a7389cc43ba7573dc118bc5e8224964033b869e5ea00e9272627d0d9f128a8d8f1e2e8096ed0513d8fce17a791039940c0d95613fbef37815972c0308fa800c61d7e744bb28205f6610316112b42cd3d9c9df8b82420006f09e9d2e74a76503c4e71f37f261be840267f7517cc35e5b1a411208f14df3cd85f82cadefb172e3d25353a558d4dbee76820164236f9adb6d202ed83e5325da97c6d414911729b8a808c8ae50ee22a4309f56b269de7a0dd79789a0bec5977967501265669758855ca8fa92b68ae4429f78ef35492bfae680c47a6d85125174482039308e6d4810ab994274e4a687b4c214fd1a113a94aeb0f924fd0e56e64069f50473f47b74aa0c5b29f0fa849489f8dd95054022e69608036dde0fbb00aae3d2d1737ac20bbec503005370cdfa7589dac47c4cc34c023103d75e2e12099dbc323cd6a727e21f8d91f81c329ef65ae66735510f2fc47ca1f332bd8e3e4703e2a87702eb13a430b8ef5a5f4f11a315ad1d39b87dde6afb7c2e1d16211c2580e5cfd8587879553088e39b8f20a9e1e76ae203870e0ea2b7c3d589ca2e0c0c1eba7e0f470714b81546055bbdb68b0bd48d344083c4eaf4e3e69578b4e94b962d6e5561ab4a45c1e6194eca813c0d00090166f1641830d99f7d4e40bda5d69f8c1e8492ffd9da488e544a00a85d7ee4dc6dd5c457ec97bb5c8351d7f08a55bbc9196dbdcc94e1b129ae82646c7f2c714d0e31a95814297ccdf071ff5b951bda642faf8e96df3fcc5321f149292d85185749e667ee482b81c74effb994953561600a43daec08a721ebbd6197d72392edeef791296e54ddc20a846a028710069b0567edace9851c8bf0fd6b344e2d73e4288ff0eb4aaf32268f58075944a0a3a944a3587718c92fdf06c1abf23e4f817bd0540e2b8ca1f68c799de7794dad086e919c010668c563b3b0f797414908faf7fd2c1fd5643409254d52c4eae920e6f3f31e267170c7d851e8846420f52794cbc62b59db13daf82c5f57f8ad89b228ff55a2c9c5bf21c5e2ceba7fb24f7ffebc089569d58730f28de59fdea4140e3fdd64ffff723498c69e263154c1aa608b2d84c171283a9e6ee83f5249028eb268a0b9d14f7a5c1852293cc9e17b704399a6d55c60fe1ddf0a5ed48e4486b0a1c8a4f6715e818f664ab177736a0cbf707811d8dfc898c027a7a2b80d33c72a3069164e863873845903b8965fb2090ca22a634a08dc1eecb1b52408d919d3cd5d075148c99ec0639bf1d4644f779a3410e826467598c1df32584025c48f18877a7e73bcff703ad9e3b013c6ac4bd6f4680e0a4b32658a3688a3622c324629b3f38ce9c9b7d6463b70ceb0509e49a1f0eaf34fa8fc298270198570066965c7bbb530f9ed576cebe18cc1b8fa02ee047be1a4a0e59be849c096bf0064b3048b6851a6f8d00ac0868a29b12b503123ae21385d9779e88b82cf10b61a40b174625e1d88beefae1c960591aa1fa79e267882be8fa7cbeed702a647808bc5356a2c122db0eae39c72578fac29044a9bb94bbf1339eb01e48d1e63a67da1f50be9dcd9bfde3a3dd286b1a65f343e780bc8401a1722953a3b5590eac62efc6c79033c17d1e36042399cd1b5d982240dc2353fa23166d5a1a5d42937d7a1073173efec3cc72f57359a3ec30f8ae715a23c4765937ad906159f55970f9a70573d00533883e298a3eadf01762af264edc76b77f1e4e5e8ac23ffc8f8db7685a00bbabb92fa5aea6e9691790575f04404de59a847c402c0297ac3d5108150896f509aa2562a149eb85f1d6a20b37a271b12c9ebd3b16a32960c399d29ea47c09dc83828caec5d83612f8a9b03c3dcd9b00b7a301673d44582b83167bb63943c34ea159bc6cdbf2f712b392b12e9d0878f2ca504ca6cca1d743b010f455668e0146126b055e2eefb522039dfecb6beb59a596e461acd7566554f4c764af4d6196b4406414f52114257787ccfd0b83e7b91df586a493ee6e6b5fa57c1ea18bc309c99e1a206b005e12354ebe50bda64165c330f700911db41c9d61d453211c7e1334efd0828e29286d72081902c2ccbf9da19c6020439907930b33262966a062adad1b84e16ff2ee2d6a1a9baa2434ade094166fb2aec52a778cb5dbff557ed57ea9d979a509b7c80264a54005848c3723263228c42c0023b0d2dc46b59e6ee0997819c9df796a628128fc083b31ee318f8527a45463042d838e0489889c3c3741b36ba6b17a7ebee8f81146a6e70e010544c5f71acb41c434276c071c9956be29f9e4d9d2318d4c6d9bdde5a21132bba734156397238c043e45ebc256955c20ce8ec1822165e51c40b2dd0a45282811402ddb20191f7cfd751102dc120f9969365d78999d9f6257e92bc9752c6660323f673a29b0723d3b7bbd21b5de03a5992db7ba1547819ac6d454110f1b4fc9c4fd2c955447ab6e204940f528fbb0642943e90e269cc4eaa069cccdfa8574d174468d1c0ecd0b0b6ec30b557b91701761a9e69f656a7250049fbe3d4fdcbf05f8b7b0952c70759a8c39ae8ca2dc19dc211d372862f4e67580ccef52dc76d81ad7a7acada57aa5b82506a8a9f5e57054a4a058400eaedd62023e925bcec1098679a81f52ef671722747d6e526ec62690e8ab52e53d75cf11c39cb243c0bb74cd0aa47c48d7c0fa9e006dd2bef3e3c27e3cf5a289d15eed8b8df5e7b4bdf35347c529dd8bbd49ea866bc486574fada8c5900971ee5ea13ff8de09c1dac56ec94552156016cd859baa5bb7329e2aecbe5fd11b9e91002dd3c6fb7466de499cee904a63f1b76604fadc0615ccb9c14e7383c3af8dddc55f6ed398721bc3ba2cac2c911b919498cab69fc798dc40db4c34224b945541d2fef73db574a74c48a0a8a6df940f6b59dadeffd7aad4b3b85f332d0352379d8ebd4bccad961c9387c9e73b9c46a7df86ba58f87d1992e3008c50b35fe704325e5056ed7a290da17c821cb8d6211e08ccc9a254e20d6ec4a3e4a5ec89f721ca853a3b1099a1c87bf9bab0a1263319d912a1e710c8bd95de3bfe0fce0f4c65a9b36fedfa460d05250d48e9e41a742b613edefc09156373f81f1033b643a5cf601a303743a9cba5b56573afcc48c6e657db9b10fd3f336b269bbaea68dac8cee69cba1d1c6e60148a560fc54652c890fefccc6987c3aea41bc13b50ffa2d80d5c10c8ccf5b6be93efbf1b669cda2a2c3ad8c092f2b2f37a87b943f7573f6ed9d770acfd01cbc71096a74d211bf2c5fef464ba69ac39286939b393f709bee9d353114d3d69b501e8213ff0a3903606ee50f90c58575d16a3ede3a72ed884d403416e5dff502851e72ec8ebbb1dc096ca621e20bcc14a10d0cf15e560c6732bcd91c9440d61210b1acec71d0fa11e944dc786f1de983407d40125c4a34a454b95b2fb0a0aba51e8e0751551a96b1e3a898c85d7ae9bbd7831227d33eb0248b5cbbe4c072ffefc493df845325dfa13ab298b05b619aef135d1ee2f44165d6c004146e4b31a6a798a29427c80713a987b3ae32451fa3bdca473935446f19e1a6be1a92ded222f266636bda0184f9f540eabaf7b67e480ac77513c7f4e64a191148b2309fd929c4cd6c69b9f74ee9565960a6c263c0ae93d9b60449ffffe4483aa04f99ea949e9ab9e7c016cf3c1c68e2aaa951ab33cb6d33e09263c3b34a2d054f409811255d409f89b5fd858d144fccc487594c4f9f8226198aee1e98c2aa9ac1b40c8153a1a170258a8d843d6b293fa6738d77490ee75ee05ca34c7235db68b4562ee6e41fb36079be9eabf1f4e10cf595c2c73be92def7aa1303ab583ab57af4a749d15a83b3780f5607f695d447bf9afb84012cde0b2cea386e9cc743ec7318cb128186302bf0a608763ad93b908148c320bb6f6b4867562bd10c2a539c58c8a792b091e844e65718c0aed92185d5007ed927611bc9332ecf3dfcabc744e646ab7218eb790a4fb8c96760c4e32f6a8e3309dc84fa1a11bd001a04cc406cda3d6bbddf70c20ca557b196bd18f5f66bfa5ed32d5a076c874f8cfa3020965ca4f8075a65d199ab55997d96c108519fe4d907a346d240f1b6d0d1d918b52332e7927fd219fd20322a095894ce5390ccbeee956662b6930e698d7b3f5548f32713a4daa579fae36d148b8dd3c36dc02638d350c9cfc3bb3b8a4f513d3cfe508d357ba87391ccb85f57197c0edd1cb4815fa07bce59ffef9f2bc33f0f95e910d14b392c8996a0c8228a2881b33bd2c72a0b27960f3ff90a7b00233a49e9f2d48586734b0ac2043f9287e28a0317c72fb997ae3079e99205f8598139f2dfeb8a4da0ed43f93e9dccfcfcda9a7d0c880fbcbbf0cf430dbb43af6613ace9123ebf63f15e5cd26c2eae0f2536b5c46dfc2d1780f6a409df986f84e6312466d2304d0737c20707e7b358f8141638588a94adba54f59e2b5b6f670cc2f3ef9ad2e3bac185cba84fb836ff9108c92d76d86dd447344d21d947c69f52bd388e13035ed65e559390ca7d1e1fa721fb3d75fce3e60ba654e590604bc0fb034a20fd9a93c69d4a6a4dc4be8de1de9b447ed3a59cf5a03bafe7824dfb7c4e74b372a448bf1e6bb0e329e5ce90e48e95867f63c3cbb68e9c7e6cca45388fc0801f51b9e47d7b577c3350eab1c7e04d0f4e010aaa5b84aacf4d68a0b555c4dfafe3ca7d47b721ad93af3a5cbb5891e6facb70d33e5ea67a53c3551e7d649196258e3958618e571b009440805218b85edbd972febf9dd444b56f9d52bf5e5f6e68dfb43eb0cab31f8002ae11884f74fb73baf7940026e9ea6a33cb7ff3d1e76a6eeb7bf6a90602ca008121fcc9078e47d004d024e10f6ec53c226c093f70ed3b41b06cdf6b7c480ae92c0fceb19beb6a19f5b5b9aed18046c447775f2188704a9cc42c3c85a5801768f147f7a8b5c70e5d41e7c8d519b832683b4295ff79e6974cf204f66213b0664113d6a3955024a6976021d7f3dba4c39afb9d7b010fb0238ac820ed5b72166b32383d94a2d3aec9eb6a1079885b3a44193943cddd01758306459d72714a9c199f8585e0f217aa8281fbdbc08335464919c4ef0f97dd16f3e16cce56f6dc1c816417d75f3fbb8e7451cb9eb601337dec71af42ca356ca129573373b80aaf507848ceac31e80c1472d2ec10d2443d31e71ed1a3398bf199d80d86d97e816ef40e0f10cced180d08f2061a102595c59434643fbb35d51dccf47c8d141ab28b958b4c5bfe0b6203cb9978722dd681121a1e6fe4ed159e4c03234b2ae421b887f83674b2b9fc595b5a4ee36b44c6dad5765679b145c286cccee0d4a88c63168b26671a2139a3fec819ff6466a2517b26aa5bf1568435a3b62af7be2e183d1c6c5f73104874ad4a4b41cf28f1f50a582f5ff3bbad9bd0d5345c1cfef15c1916fa8986ab65102a1842efaca2ed14f57c04e76b064c68675e910b4fad33112be1e3c91e50af0d420d57a72eb736c438f853ac6209e042b2872e7ce8a308733f1a6679820b27832e89b10e1dcb580815aac8ca187e040a32f3ed395deba604cc1321ff77c46681bef634dcd3059f8f406f0ab565329af7607b639230fce2a62537dd31e484dcd2153a06b21084b20bf83d085a508cd24f9aa3973f53635118d03bd3ea5cd3656fcbcf5f507805adb68c0f296334da538a5eeeae32499f689c8e1e8ac950a0e26240bc054fa515c66060e4e4332b6f8a7fdb6cb4d22a7eee6c34144563c4444d5cffd3f81d733bfa3fbe18f91e2e2f7230c651230e54420afef54937bde1f12c24ca63dd514eac55fb2cd4ceb9cbfd231e1b0fa213686890db1ecb4145858749029040b2ddc8e84a11549a2e219ffae37e7659fada0836e75172bd7888993d73b868037dd69e742961c7b5291ec46a42b6d83e7b9fb8b88a6cff20a282e5b127711d92ae3993ba72da3168867975ca9040a7f7631b5c2370520a7d9d11c5ca8d92e38f9cb21b24f042ceec47662df8e457071d380e5341be23679597289d082bebf9fc6203498e06f1052425f67c26501d7ba314a0f26f7fb435dc6547f9149b6d8bd1dd07949c0d4bd893d2bbd5b452d7c18e6b64a1c196311ce1799b65fd0a188301932717f37311fb8b6f9805466ced59add82522567fd3f48308ecbea22167b2cf1ec07fdac879ade40c0dfa4a3a5b1e947ff0401825380f4495ba2d34c1cbd97ca63683141d1e5a68484672beb0cf3d26d1f10f28297623cce51d7b53c7256c51c544abaf188179eab56f9e8a0c483fc32bc676660368862bc2484191bddf1ada0d4d94e83831ccd317df8cad9f911852c2cd0b91590367a0e81a2d4c23cd3ab776c95603c79fd4a44daf5501d58f93bd99b1122fc21b20ed3961d697cf395add8e4fb9abe3f7b4fd9c819044b6e7d57ba936a20bb27849026af85ad22cc896bc9b40d45b959642af0ea8ddc881ee2451a092c175aa628125d3a4c714fbd5183b0579a930701232abd074dc92d43d1351f04e01dbb862c0b335686c2995aa55412356325008b6dc75be6f2c59856c55fc18660f20c7db730f9dde718f533d1b07f583bbe672b551dcb593ff9f2754f7f80c938e99d337424525c6923ab9427226fdafc1a8583443d87c9574686afa3823b2d62661991d3d4f3aeaf654e74ddf6d4d9c294eb1a98dd2c3010e281df393576e4c3908c6ee9b2fd023360ed3facd0a247aa848eaf64614905fb7c0882a554be69a1283c5b70612b5c05012fcadf9c6a6ddf784d1415072ccc772bb9232030df56a2e12763a59affda2e40c4142b6760672881b5998f4fea01b3c2bdfc92598dacbcedf46e8e138d138ca4a42d1e489ff039f0b628a73d8f410cbf90c2647b7655169456e8112847d89b6c664445b3268a99b60a2d7befd921c29bd6a4e1e04911d9792491a2d342b5a32a6210bd6a2926fa86b9fd8c7b31419c57969bc88a2adedffc37376b40291b2bb32cb9f19d117b29573eb89ed1cb60bc5ff0ef7742804e3885607a7de4e6d5d9bbb5d7cda106670378f3a88f8d4b799786dc4ee0ce30d5ae4c23181992b408f61eaa9482781a37b35e2cbed91ae47477a82fa5fc55da07f0feca5294e7d5a549404dc52c91dcf7de159f7889fc07371b4afd8b8672d6fae42235f1a400c5c418c2f7958dfefa64a8e93c0c5a95cb9dd7b817930702bfa1d72fd95e19e480284e089f7c0839afdd991b7b12defe9625e76023e7c809f141f76a65d116101eff83d05babdd2686d5021d06c0ebf42aef17dd34dc6c9a453bdaa2abb7daa5653e9a95d19b559e9d4f2c27c22e43ed40dddee51a924628b39a4fb66767b75e8a70b643733b759a86b58ca0f7a5622a8ca6c618b73324d91d42353d96402e79b727c6119cecedaffa1cf9a6a3752e137c69edb4cf107a5c64281adf227cc66de7b604641babd753694d67cca09a6d4cd2ce25a078225a07e7f9ac7e6a9086a0e55959afbca89dee8c7dd3dd704aa1220da9a732e5a3239b871de168c03ade6623a6c9f3522316af18fefe62bc4185af1fba7ba87ef1fbf5056c29546c053a8f3851c5fb1c4637767b0dee04ffb9e01ad7a8bdf2cfc899e2a088d897acfeefd4203f7201271864bc537f2cda6294e0804aeb79ed376223d32ab913aa84c57992e567bfe923c071003772273ee47f030923835bc6dbb559c3845dde9e456386be4f3ccf7c04088bc8d8f146fd98c3252997074b0ad0fd3ddd60614421e8e02cca613a72bff7ac6bb1d4a582cb9ab2732821b72e60adbaa92aca087f43ceadd7a24838c4d75d74e05153c6340da521724cc0ea6c75347e969f6df19b49ebcce77ea53138e84b0cd87dcbadf9c3f6922f7f76359f6a15614aabbbef283b4ed3a001b641e5a0698dff60db9e27b3333c5720e407057d411ce4e6497f48104f058811548180b0233d314343f50f0b86c3ddc702671218f1e07991bd9e9c58a8d03364bac0e06d6fde624ebffef4745e7fbea11062c119df1fffc356d5be1473a16297cb38b535bd3de5654f1894445702513da90b0f83fe9d8980d39b70db8be324a40df31a304af4301418f58d74e2f17581d044d0b595ec636ba6c0bebb8150898d9cc122a4330dc7ae30519236720a3ee82d14c0806b58877e93a1d1129f95759ce1fe8dfe83bd7b801a77fdd6df0d28c05c7e897e3d1436c9bc4be9ba2867f31b44fe53cb47b8c352476d012e9dce82dc6aa961823a49ca28b66a49bbb92249d0148b05f93aa07cd9b8c4661c6e266708f5494604784b9305fd7a5e1005b622931f06038e73151e5d6b5b3c7cd233c4c84e7932ff37f6493d5887a79799e5ccdf1d5a2051ccb9eeac056ac7b814c7a39507411f447fe18c4cc096b120a4f7ba4b2e932faa948e800c961e48dd1bb948297b7aa5a106aa8dd5813e15d3122d17557af9714c73c64b83d65b95da80e0ce61e59e1131cadcf1d438a6e1c9ad08e6df002a395aa2450f8cc466b764121612b5bcd7810bfd00a82c531da46068923b4167fd86378b05782cfd4ffc696891a1e4e72a2d108b149c9750fad85fccf770ac32030a48a637f2bf8bd117312021e128d71fa77ded99fef9f4e128b19e76d594609e53580b0b7094b344a0b2797bad6c99946b8577e78527491bb289fc21211ca04a7fa7eef68aa4fc5787a5b3857d2c55961cb499077ce2284b979656d5592ffe57e0dfecaa0358fe3febf90fbf141751a584a947fcf6f28e908bca11ebb06ede2336e9eaaec0523c498951d0bbedbd5abd72efff71d82f08982ab7a9711a8ff9b6e9933ba3b1f1be459a09e73514aecc51c391a06e0e210210e082f8847c60358a58e9e18fbac9b49947ea43ca1410e10762796b3d861d0fb52fa0f5a8c2d8d6b4d100203971056eaf4a4d02b834a4fc639c8652d86c6428b9d8b7a6031a6df835ca33c2442693c5ef4a4b3b45df15bcbd1d00b63afa58b8656b847dc296499290059686a44452b74c7fa40981d3124b0ea4219bbdeeb454b101d4ea8f1bd2687ed0dbb5d351fb10e632df8a7af7caf31ce4d5beeef6cf45768f1fc50d85dc810f6c3f04143a0588ce263946cf30a73311fa2b2805825815c7cb42137c775fb1ffe57670ce5a389b691bec025c7bb8b36f0eba4afcd1037fab5a64cf70f295423b1097d463c68dcb53d5d0ad9274daba649d542ad118a7e0f454dc775e852f75389e6c10a6cbb8f71ca831b6fcd75c6ad3e30ccd566ad50481753e4dae7448e132e3bf4e240976b6a33b05e54a62c33b020fc5dae8774dbdeef162af78f907daf7116f2e0365cb8f9248f90f35326e530b0c0b0b0c730caf45e4fa54cc145bd027d42a496a9dfd090115099237e80aed225e3ae9280ace206361dd6f4874c701e5e947c635c2d59340bf7d16d5f9955c18c01502da8c936f656baca8a74838a93bb023ad3982077327c0914fa6006c7553ad3d59862ac0af365cae6aad41c01aff94ad033cd0e4ed857f3d09b4e4c85ee53f4736f22c09976d943976a968844caadb637dbb37f1dc5a3b9a68a3cbd4442e107836d0f6fa1d92ff7c278c7d0d4acf404abfbf9a878dade179f2f4433251a78aa36f6c6637a644739c06479d361ddbf37e24dcb75e4a12eb4a145b942102e2822d105969683c1d28bfa94ca40134f0d22130954ed2808aa3641904c08224f54c8d1f9fd40ef4373000903b660ce57185808fe4bd1225dc93e76a0c8891a2855cc41a911fdb10f4e0ffad02957fafe0609827a695940895c1428e056f73ec12c0132c1ee55b25bb4d17db6b8d2f63135b411157ebd710311ba8a0b6b98d6bdc6efb7451f5f49209ef982a53d433016b3ccaf11343c9e2913273cd5112dc4e83011bbe0440d1ef4fc0182414c543e6470d40f39177f8000f243855638f01b267ad9db811adce8ea3506b95751352547f7eb78e2d3ad1302b4d2b8f1a669fd477c10e20b1e37dd2bfb79d718adf30c5a3c46e10369130084f31d7783f80c768626119b76a40a424737e784a3d520150230df2337cf9d448a6e7f84183421c157a6efd02018f72e060374b0521d455fbc6343896f8c8b3016721f423a29876d689095e93d348388328d76b51ca8769536e1ab59b0991239e99475c34d8788b395439d2ddc58b2e1a3c4df17ba4ff0895a6f7cf9619f8ff2f7f1cb70cc86ad4a64c884c1b9584312ef04cd5a82fff37be164fcbca0e7e21bffc934ec39427d1cbc02c958f8505e8a5d255f251e6324ee7f43725ac69098b3422f381de105568d274e2a6a5d92dffc717f1329d9604f878c4b63685eb1b92096650b79055efdcda3eb2adeba16e66b553f378575c01b5617f451d578da94886a68691bc6240a4ef61e98b7ba9c162002b7fd1724fda227a8923875e6478cb7508933fbaf530d0f86317b75e82e9e51d46fa45527481b02ed5a3b326b8caf31e23a6b75fe775d2002ac764e3f0ac5657ba28372b4f53d08fb0b122bb4fb795b4b146fa57b8d60fd966f2af08b6b8a51f7e1346b5f8bc9ece0cd3aaf10c3be1ff6e69253aada111fe4ff8b6c25e896993c1e3c73dbfde67353add25687cd03d816fd4c8b6b7a46e22509a88d6f48c96f3777bbc9bbedfb8c35fa9b702b7ce4cd9a5c355315f1a17c1ec105abc7a17a177f167c0223dc88a61958d82834bf2d31769da0c9ca33bac3b3c6b50e66aa955da0fd211d5939ac6395ffbebc3ad23ff2dfa13eedb81704e55a01e0ff9c992ceb712711d6108859219f4157ad2c154ee5c39eb8aa0f19d844be5e4b22ad0cc01d279a56a804ec59e1029ccecf5554ad3c000ae5f923aea7bf9ac560691df06303742c24bfe198a221248c8c0c1d97c230615c3e9e30e43e879acf617075a0434f6b8337e5c145c6f645c29b33743a65cd25c8114ef129296a9533531d238198f6a0e1f3e5d45467c923c9bdc9748d20177ae71727c8ba74b23d45359bb4d388bd4ef33b3c1dae283791f00563ed2a1e9a2a564934108ec5bb06b00c2659200176488d5b2941c7290038c8de5bd582113ded1185ebd1a2e496facae1a32eebe89b58023547d9ad872568e86b08fbb8102419db7947a778677eb95b30e5910539dda197cee20ae3309fb74860ec0fe55310dcf8b6dc0c25ca40b35568ed145fb535be8dc55e40e58d81cd14ab7bfeeecdd9f2f75455947f638aa5d4fcfb09b76c70b44418d1f672010e46bb10a145ba8296f5aff6a13e2d47880cc14695c01f705b627597e61508d9ddb25e9b47f1f26206bdd2ce2db033c0ad730040dbf44b9fda4c4c4c0d28934087abdbb6ad5eb593b8a1a2ce9f1ec6592c162b5b2aa78c52e912559895a0f638f3c108f8781f62ef3148a18d5ffac0b32dda67943dfbf89c9b747c3eaa051b90a53ac5486a0322714c665020430b6cc4dd3e7954c3c91e3f3a781c34898a067fcb30a981c70803a6c1951e5aeb03d0d4402d4ccb77598578a07fac3cf7c1783d5372caa0e5724381760459f5c5bde9c10c771895a8b0ad85a0b44b18e25e6a5949d235a52135368ffe9a0977896cefba93dfc3337567395d66f05cdf33ae4b67ccba0c1fdc7ed464cbb6edab2ca3a6ef578b04ebab6b027fc5b3795f3c380875ae68037823d99a984e18e1200d48e9870e988a1c76761054aa824d8aabb97bffc221c6209f37c825d511cd40eeb316dafa54dc28be05b39b94fbcd849aaa7a202f61eab616ecaeda0285ba420e558951a39909744c43affa9681815a404416f6d626855259abc89ab109e600c90f5d5c5d14c4c371e44c4fda663b8437d698a3d13eb9212203464ea288accd2c598c844f6ef83ee34f15906961516d4bc6d46bb9eea8460a0311a574c27ab8c9c2d1d83f63f8c3df578910e2feb5dc469f855adb071df557d585ceab2e6acfe4241a752747e8329039dd83bca63323aeb65bcd802a45c0037ee7e3b9bd9e2f1612ff31090a99aa0805f6635d20e0df900be7a5a82d28121eece9cb674fd3b6353980f1e819accfa362d92b3b420ad931cd29fdc79e2b44df427ff9d490bde11ac8f907f4b9033ac906925b2092b29a0e36f0b827aae0e74fe78cc87f5bc60bb9c3e55647e070ad25a8c2794a7c57a1506ef9b47dd8bd9dbf3a79d4611e41203018856135140a9a375096ab7a6aadf9e4d1c2eaf6f2088d99df6da4851ad9ddb6dc72cb94a40cc908c0085409cf620589c5f213d45863ff7de9450a4042835518eec1175664550cd99adfbce57efaef4f23abbe51f65bf6e9ad0ae42d77d3c8da01dff4e09b46561d83d89ab7fc6d11acac40d93f7583ad65ff0ea80bf2ef629d8f7ff9df585a5a2dfb83425499d7a1eb25589575b2554fedd089773dce72f57a9ce5eaf52c0be4c1790820e9ffe1a9732bc771d175cf32fd1841f63a147440f0c107c74f9c31f9f0bef4a127ce6ec4344d4d0de8728e16391dc6c4743239644c24f9b25a7536706c986a401ba64a572e2e9326c4289489875fafe16c8de97bc63b997e5c1f9e67f2dcf327664ca5cef35fbdd874fad7a617749573d084facfe3dcbbaff4f474fab2fbd9fa7e964a93bcdf05bdcf5472f99e4e3eb86c7b8a70df241a093367026cf2c18129d30fcfa6914e9bfbed424a954addff7a4c261ef6a7e7de0d8fcaf5ef33f97f0d72abae82342095b6220af56dc7cd9eb19cc9d4df14f744729304fcf371eabbf1568eed7e7e141ccbd0541abfef4b1f697af75a418c8d841995bf2f99bef42811343d367da8914e1b53367de9ed056fdae5ddee741ac16fac4d96e88defa64ee3a6f0765b547108059aec9dcad950ed21b1c516dd0f95a2d217b6abf4817362bfa99137d3e60ac67ec7d515230c96daa17cf74e1d9dbf4a1ff8f36f82ec0c6957fd1adc8401a608f3c58149bee6ab47093d6a9403109863901ce24d8fd05f335f0f98ad6e24e9030c60c71b1b99a349f208afc8dbb5f675d7bb5c5c2e0106c893ce1f3f2ce0ddf7c7ef5faf57eb7b2dcd3e7574b615467a40c1941d6657ac18f2c013206e70236286234030c3764afaa4829f1c8eac48e10206b012d780763f35a12c43d0d4a8e20534ec40c30f0e0390674da8a685935cc4c94a9a85a06005eb9d5ca55e3ac9463ad772855c472db3a314dbafd3b340fdc0be28ac1f449d8129d7d5cb754c01cc73dad0679dd0e5caf2316d28396de887e1ddfdedeedfe4a52d067defa7349c00bea85fae686e21e6fc9aee6bade2c55fddeb6c72d62bb36fbbcff0c576e7eee7dddddd2d0537575c608efb192e7019c472d401762c593eec77dfd9b126850f37a6309bc83e761713a4cf81ed6aa79576b6ba3fcd3da7cdd77bc3107c95f07cdda75f5a3537d65abfe9e85c80ab12cc75dad09f2fdc7ea4d61314f8759c03fb3167e2d1558ee5a33ef79c112eaf00e6772f389deeff46af97db51e6dc55f690e6ab3bc79ae38e1d9473265c444d9beec1cd39b6cfb7cf3db5b60b39ce84911b75aacc16178b4942fdd2dd7d0523353f89b1845018f714c68d3e208c7b1fa8ec8fca3e963df9490938772d40424e7c10b2e1d24028069c9c1d54bef881c9d7dda477d3dadd2d813c9b9c5f896c6c6c6ab97bd08ac458c1452852112424249f6f43800cce6a93a78ec919d1c45096c9b376842d7733c83e0e4a9ab45f91c49ab4b7be306d8e5011ec7f0e0ae086cb4a9bac209efd5aab45d5a8da9078305d75092958b2fdef1b7958f4c9d2f37c0f7e0426ec79c2ef817d8eb7c86c1f7cd4c8935386391c6cc2ec106fd91522306141469e1e4639a0e09d122b88ea593ba507bff4e053d83742e9c093ef9fa4822031bd17c41b7928cc54ce5a90efbf5bbf6c00714dda35a1e0616641ce275b6b65d9ceb2fddad463ed2abba06cbfb550aa1a91ac3a9a0ab2fdae49bb6ab2fd4f64715f498c79413cfaa977f90f1463ab20ab91b5f3fdeabfb1f3f196fdd5f8b092d803a3e24e6a8ce2968d78eede6584c2a9de7bd5d80109a130f0290c7c5008fc7592f7b1d2ab5e48eabdd4ab52aa6f213561459ab4af1255102d17abb79a24d65b3f468d9e67df7b3aeef070336fd92f7d4964d147a1be07c643e9974a8f1a79a6b74a634df2967d1e202ec6d9af4e9a541cb2a59452db9d4449e8b1dea80840983ae858cbe011241506ee7ebc63bd799117b991db1cc96f2571c23c69eab8d54d359604cf1cd565f65de6514c17c7c32493fce58df5f632d9cd9123972e03effd30f66a73412a3330f75f6f5deb227fb184785ffad2ac19b5ad91faf67922cff72d1cf1fe1bbf2ffd84f178ff8dd814c41ba158fb15a806d558f5e9a00e6a59cf7aa8899a868474abedd34044b11b11ad566413c0cd7e597d2850a5b3552cdf6a92bf7a60f63db107c6c5fc5561f6391f07e282a60edac9bc6baac8c1ef8d9ee7799ee77ddff77d7182708ceeebc177b3584a898c4ec295712aa342c1040ad007fddfef352a8e4e66f4f77ddff7b9285e9c5b0bfc83fecf71d2eb67e758a690934ba337be28993749eeea587eee1fe4a6ab98db72a5e5fa53a43459a3b837ad4dc20bd3a6be8b7ea47d68c8899ce6352f72a32eeaa236b221dd921ad079e604b8df3de68fa7cded96d4b1f669a00ea2d16a454636240a3461f5358914518116a33ee5cd4d8e4e8f20430470c3f5cb965d1c3ed9b21e58fd0aab93569b3aa8db6e1aeefe53071d73114a828f14e8851aac9c5376e0703768c0ecadd3cf49f39c6f3a9664f6e6b784ca120a345beddd4c6574c6aae1994b0ae4b56fe9e7feeb7f81cfdd8bb1e7e4640e6689fdfba5ff46968323cbdfc721f413419164cd377d0fac8835c79dffbe378d3ce0c8bdb7382cf87e8973e73c3147860c4ca35daba0411057b24c9e340882963f94fd8fd291886aeae81103d3c6bebfbc528ed3b04883fc853add6bc2180cc3ef9fcc1448e60cdc3aa16762c0dc13e1c6d37623b27e747fbfb3676a3aa1fb3b066972050a34697f4893f6290e9ba41376bda5827d16ec13b15fc47e09f4c1fd7488630112a51a70b032b522b0a881ad0f6e0865a1e19b0320bcb82bc01e1635605bd425e15bf384c097b603f694b002db23c0c0b6882e0c271e0df836f982881c3a2ab02acf1a11305c2469dc19195ed1103bd0c10b2d43643184bb3c6b43140d51b3f6b61503bc17c4ab21826af086be219428b9630c9582b0a4c312f36665fcd82c4577b6c50e5c1659379b82062c361bc4a0cd5e704396a49910398c119b05d530866d0694da72bb25ba80e207e3245ed0c5132c309827952e98784174e1d3a5c105103a222e748093b3833ec112932715309ac4be6fd52e2a4f3546f5c9047e5df2fa3e761f7b8c6db9ea39de947b3a96ddddfd370cbdbbbb5fbc71a441dbebaa722e9c5571d56d97a2015dbe2e76674117699e5edfad8fff4e25f75d67bf9ef004ad7372cf8d2becabdce5d5b471e962d5745e8192018a8b26cfefe1002253c79c737e9de325408d89293ff4346d201b134ce4f2060d26665498f8a13302e33c6b4c2c31227cfc2da1e532c067a8b404193f9d0c52ae0c53ae0c55c27b73837cef83fd9ab07b3fbc772c53b891efdf26f1c533d8ba3591eead5b7386a46ecd7e2a369cc0a889244a908e005232349321895110494ee0b3c40e3f5718f073d4ad99cb8b695a0083c7a40b5b2e6faec05e9e54bac882264f2a60b4a0bc394793f35bd9a6a4dfd9dfe6ce1fa5f426a7bb496f51b1ec2fa9973877d80deb07cd9cb7ffd4ebae49dea8b5fd86bbf6de5b9a6f67f27cae2bb5610577edbdd772d5dbe1bb41dee47c472b9d5d47da5d2f25936fb4cb89345989b48bf3badb5d0fac958a54d6753a2270ed6ac976d68a15f67da0151dd6b88a151bf699402b52d8c779d379e24e44a60d8cb68b449aecaf7524326d88bc883c119bcd56e288d86220119f87eea02cefe0dccdfeb4d576576b7b925ca59d394b64bf52fdf6af5cad41428f0befdb04847befbdba02b907f8735ff2b623f6c0766b4d3fb8b76575f9a154b97ac3c140db6b57f220aa31dc76ed4ac1f9b7f375a7b3fd934252097517c020cca18411370d6e22b14bcc90bba3e1ded074c892a44314486230002c558438a2448c2872002b69ac043b1a1cb9bca18412b9ebfe9e20771d1110b923b2e52e55052e43f0092ec35c422e57d9ba6006d97eb57f9b649bc42dbcb9d69a45a5a20555a204916b9434900842266b2c567bd6e970bf00c32d1a892d72f3e8db4b68dfc517c41409a19c823e220d04e4fe79b16fd181e2de8e44bcd5e1b7782ce2adee7b6025f6de27a7c98eec300dcaa2442ca75d5e4e123e58f1240966c5ca6409d8d7098dd4098df94ba75bdddfdb3980ecb723f9fe6209b13c3d303b3eac7b981af61e2576f9eb49bbeb89be670a8e3337dc032b7d93dd8b36ab40c4762634d93d9d3abe47fd27d64c9f9a50ff3d60c8372073799a7ef8d3f10644994c60a9ac3df39c9484fa429e9404fc020f11857ed49fde13593ebc6af2d1e39c247dd457d3099dc1af26d37f60374a3c9dc4b2667a02e8a37aeebe7b13a60eda3d8ff9a231cc56f71d0dcdcb8b2997d4d4755d11224d761f1681fda7cd1482816793dd77b7876fde2851b6ec4da9757f9c9c53d2d45142f6ea52b03f94fbe08843f0c131f49693edf29c9b266f80f4b37ed4f7de1b5160fdb81d98999a7c7828b07e8c37bc91dcd18938d3c61f14757a047ffbcafe234c11fc066584ba82b27283b2128210a6797e1d1f064cbf4e4171794e577dda207d130f1a64884e0fc70d76ea493fd98ffbc3be4286dc9187c5846902f6bb91674a91061034981da7b73cdb6aec2bbdf75f4974afdf5372bf24a4fb1b6f794fa9927e99d0a193ec3d118ac4e7021337c99ee77d8f7e793fa7e75d32d2c046454de79cdce98969e6c77bea6302df4481fcc512d27544a60e9abdbfc0d461df7bef699312b2f718a0af3b5bdee31ecc32b2f7934e20dc4c1bef3b6b1a496f791f05b64f2b28ce9237a280634adc1e4d86224d93ddd3196e4658a1d4ef3c8a1d656bad646b63487c8670c836d67d053720f560ffb54334fb74c83e4d14f83e0d14f8dad4cf266f87f675e34b30f53afdedf2dc7f59a9f104cfdef87dd334016a0272479d265334955a0294a246c8ba451d1378a4fe7e6aec914a7db4826deaef44968f8e7ef73d39e5931a696c8888b53485263f4059a9efc929f7532af59e53edf23033c02e2e22cd392d4051fdcb9873e32f96909787799891a707f6f2b57baa534f8fe850bf280f94488ab5629f1ab54b95edd32bfd6a987d55aaad1dd2926d4d72427777a5edb5aedef36afc00dd924b1772ea5dc499dff49ff71f910cb8b8d07b31b643748806069c12676eaa4fbd9126eddf473d7e1a29b87c179772dab2b86ad27e6ac4305370396df8e5bda60a3588ba9da2449a2653689288bf68ac5bf64fa3c97a36d6519ab44474a8c9b0087cbf0c875e608484d4240453d34eccc38c3c95c912b098f17ab703f32f23cf02baf8a9c160c609e48e3d9ad0a4fde71182814b1acfb349fb343646880b81f969da79f99891674a51047b3943b685067b193b866a56ec0b6db8c433c7c37a67b2e049dfdf53f3595ced5c97c870fa85c46f4e72fd1ded9a3d1ca0caf57788f4ab61f5b99e2b279ae49a24d739e7dca225632b2239c59c782277bb0d1a66879e351828c69b9b3a6b6d318a726acf1c2a471865cfa1b48a2c6b5ff3769b5abc5970944b309b913da9635c75728493ecce713e726277e202cfff2c68c4ff5e1c86ff0d738386a1825bd6ed568e606ac48db4a8c9b0086cc7f277e488291469b274a950bb3870a4b21c9a27b8a445457eb193642e69913562c4532862534ff0677f8ae43d43d4f005d0123ca411061159fdc582d23dac201416fad3c0d0b252a37850e46f6bfeb68ab592fdbd7eeafb7bf085a4beff7b10fcfe5a471e9e1e158210d1b1cda21dd49bf0a3be8e3bab975fdd58f54fd5f442fa4ffda66acbfee04f18fe1b6ff9ffea4fefd85bfea85f8da891e74f238f9b46562d1f2c31ec34b2aae985a05e7ef52dacdef4a6b10558793381d39b5e4456c522ab8e2bd1e551a28ad2a1985838f25019d0902c0663b48a9514284616feccf7c0649e0ed1d563d4af50ff32c28c3cd4f6787c19796891b7461e7fd4c8436998868b5e28bd652a8a2cfba9a70f8a2cdb2f2475bbd769db1642669c218bc560e0ab1eca4eeabfffbe077fe77bb065dfab469e8e8d2d03fa6430efb154cac5a6821979601edc493d38f2c08c7d1b5dc62414a6eadb8c28235a2331469cdeb261fc65df5e7ec25e52eff23d30d5971eebe781b2f3fdcbf340d989f9ef797c4a80c1ec801f8e3ce143d979199b36f2f490b7fc63c6241406d3b4d54fd8eacb1e5a8d8dfa09438d2c3b0641d203b3465d046567854281433be0bf8c3c0e34fa904c25da94686bb5d28140f027ac05d4c8da39bd091c59424e6f1a69d95f884dd2218c14a4a0168bc19ce62d7f1e9f86a1de8537fde94b1fcafe3994c01356e434293f2e98628a23d4d8820bb16f64d5d1078b15c4e6366f79988ef7e6eae02f8533ba9c8d43f2a09e37f8de70092e6d8c66639c5173360e498a0fd56a633666633656c9c0a58d05c572bb7341281ad0725c9b1b1a114a34610f344041edaa7f9394b4c59e20c7b4b9342234cd6d1a1b70c925d59266b2a1592e6f6879939494949454943424c95f7d935494748305975c5252ee2f8876d798c28b585110945c01030e3db3a22331231f08e1c41542def1d0b56050c6168d93b343a776c50f70e459bb418d8aa3dbae727ee9de44f61f939651f0eab5d64a7d5e5a0993f3e19bde44a6b927064ef8984da02ce795726e488eaba61f3d32c8dca47dd7730f476b1adf9c3a4ce03767694eaf6fb79d93ab0d7677777777b7e7eea673ce39bd204e26b0643d5f81e53ea2280a65bb4bc7d3e93475cc53474793297773f503a9d75a4114ea643a7dd3a6fffb7a98974acf700305fd49ffd20fa1a8d1404b9eb52a46b52a4af2aa5dfee52adb2fb95ccdc8fe338a1600651f8d740e41984b1662b158361266fa5e4dfe4c79fe0a2b7c806ec92b70df95bc9aeb587a1641ce5aae23a18ef87aa6d96bf0611d95e52c19c305c614ab3a0853070fede10d9e93806e24492891b89269e092bb09b5abbc21f397f5a1ac43ab9c0f8755366c626fa98b41a3c4dd0d7f94b4ece62dd25f45b89bbff0e5469d982325a4775e6907a52f660d1c3ea076552b7237eec6a1315f9de5b604c1101875aca091a00e0cd83e6d7d25ef82a7b2270fd920e2f3262c5461c61b163aa925c5c1e5ef37aa737378339f28dd841da2009776f6d5be2ab476951449ee299f15154299f9b2334b2220cf378055829c363eb6c21ebdf0272c0cc2a59d7db6efa85d48edaaef638172dba01bfa18933739f956d2c1db9708e2491834988b9f182528310411ccc509e37131784082b9f019c1d348a81882b9b023082636f0d018cc850905ac8e5058f47b3295c10641301744d8924614b0d923380f45620b82b97033c3ed49535912061944301efa02114630173c09f5b2d4707083b9f8d500d622cd0de5c17a049b7356d2ddfdbf82e0b4f197c982bb7bf866cfee24307d9a635d85df42990f615279420531182b8cf97064edbc7ce8f3c410ec05e6431a189e998719593bab7bfd65e3fb311a36c4f7164e0397f3f6259eb17c0ca282b7fa67ac2f70898ff20ca986c5466bfee2e1b145318ac1c2efc745fee229c11a3080c97cd7fc35614599c6e0466badeaaee12ab888055772e31af7821330999fa61dff8106b3182c7c227f8543b93f147190280b8281c02738049146bc89f9ff74d577779028d79ab892cbd98495dc6fa4b5ec8410085f66c443deea2078e6ada63914533b4c33923892210a9f20143c69fdd0bcb041c91055d65803bf068e7ac0e40630b01091a45f857e16dac4a35f857e16fa59628f54193846741fa09414acfad409f5ad23e3a3a3a903bf55a9de82604ececd0df9320f03be7d1831cc7107df25f52651f5e0e7261ed6adbb4aa51a310612b11741b8b117b9bfc4474451dae5efa6efc743f808c98bfaac37895888e534bc49c4559aec07455c54762df7cf723f9eb50b35625b93fdf755208218601145113ea8228a166f0493244231041df9193f40b3fd2f3d8db968c4e6cfdd1dfcd2bb581ab119fc3b9635836ffa2ac68c928a6e35249a6dd6ea5ff322377277f7fb2e964ce20778f2f7dfeb34474d3c4aa3112e7f2f7e78a8c9c64277c4331ff0e3592a879e273f6891450f2b080210385c800723ccb08d61050a54306f2c0035b1e59e39b1012565ea0384944b8a838cab8e67ed2ab14d08dbdac51a42814f3569a18a1656865ef8024b19b07eeae3af0d28b103d20f434da4a105d6af423f0b279ffcc51c81cb49c6b4e9bf65222bb1c8118c6f5f8faa6b6e80e208098502075a32fd9d2b2932f0bcc119f2ddf84b8796a343a4489021448a0419e2affaf47bf8cbff7acb5b335830ab7fc2583d867fd5c0a817f04ce5809f866a33dd5aad66c62d8b604380d600020000b12604964ccc8b4b0a65fabce746d60ed73df73705c8818314c08df16dd0cc84302b153ebd1d593b167cdb039bffdd887023824b5017157911e432d7c8419250107ac8010d4a72483185123890f2031f5e00a35f0071da88370b4c3f878809208631601ce2b74492094c8a37dea23f0031270916801800b1071070396900b80100f08b04d0be00e97fa3388a7e3bc015215630861a53d2f839a3a68324404881e40718fd176bc42132c0364422456e80694496c8420c70396f33323332dd120b743b6ab2a40b7d5049b8a43198179897d9f56053d443d783a49548815c441a14a3052e29902aa54a9590a84894b048652891cef018b8a4b293e964a2b9fb4e2133d403a49ee23690acbb9b0e51226fd1c762e0920e511aad9da4c025a5e5229817f0b71025a19f0acd16fd7b5b680d2a02fd169a9ee9b7d111129fb6b550a63da58bda4aa67da58f32fdea3ef4295d23d346d24ae892f6a16b501266ce7104c6b93b8ad3160ab20921758e9eda08100aab7f2d8ac5623904b9bc90fb5f68b1582ca888930eb97f75c3121f0b72bf8b0c536e942672bf8a4945a24a2a8a14b93fc5c56a2cc645cd41eec740355f80516eb91f55b39490e4fed30cdda743ee37f170c493e57e1028168bfdfcd42572ffe74bba29b9bff4c3d2a16e91fb3d9a1e3a1de4fe5b148bc578f08048b9c08cdcdfa10089120db9df0ec562b11ea4a87cc8fddc92296e0d5898a8e47eff2116c301ea8adcdf40ac32bc24ccc821f86203a620aca7b4408d294a2001451d50af4e7aa7cd945c829fb588925b868f3e9d3e83224c6b1a27fe92676d064b2a1a5ce885add22d91574dd2da1421a6f030a5867ae5eb2128263bf7eb61fd3dda557578ee27a5908196dcbf6a17cd4766114d1b8852eab55aacf3a462bb628e3cf85c824e457c4bdc29a92a950bf08b59ca42ab77a4fe744baa0eb3eb81a6802821315552e89d629ab068140eb82ff31ccb9bef0c738f6598e77fa6b930a909459998924bba7986145b9c383292410a1b385104144844712286160cd1d5504312175c817845cb557665ff8b7190bd260328d99d5ec9e58ddc30b02100b9ff62182891fbc31b62d00370c5e92008aff2ac4959830b2c45e01b79d6a4d498484922042fee95c28409b743ac937224294bd10bacf0b0c3ec0532c8810141432f1082871d8abc356f085e80496e0d304c9e546c46f080577952b131b95982c33ca9d860a8e1973ca9782146085e34ed187cce49bd76edddb40253da9e72cbd577c1f7f96d5777d7eed9b4bbeb4fd751ea857bd751ea8577a5390a176ee7d4619db322e7a5520995e797266ab9ef9a7ed8afdf551f359f105f4e24eb6381826af80367065601f733994c269321c97c6440327fe18b24f3911589019756f611c9ae4cf6c40816a64dff104a828f249822b41d8ba8a10587f45e9130707965d7b3cd1cc1d976600584394a50e50873ec1086b4637cd09e82ae5ec319aa4e0326153bb002ec98a304558e90cbc1831c3388c89b9b73d669d30eb815ac3dc07b398ebbd5bdbd821ea45623d0ca35c256acd44afa58f30c6eac1af62f692ec56c0a880c3e35c704fb75d4e941bfc7be17f7d0699dea3de8a4f530c1011960eda0b66cd9b205d6756d8c1b643a8a3cf75b3822c46be1be3742b923f656d7d1820ca9e293cde6b89b1b262d0e0ec764c1b73d460de79038246e0c0e8d27c5890180a39e00971c1226e29080283aa27e32ef07dfbc51963003303394c5890b10578968ed2ab9a227332b45885cda29386238621f8e98bf1a9663e2b1a3494b694e932a2d2eb19cd4640d92266d8d4fae4152a3c48696336c2435696b62398605dd3670e86ea04e49b675a20d9f262d0e9676513a22f1f7b736624df2f0b086f6f5f795c82b23007d251cb11ada0a80a8a1b9f51a9a8b0fada50b50b63c583bb5721ff33123cf3dc180fb041bb9fb1e716cfe9ab6716c650cab54c2b1f54b00371c241c3346888da0040d2723e08063c31901c9083e258e6d04ef70f894aa24a0769561120e24edea9ca820c77ec8250e1c5a2c6dc456c0215b1b3ed9be9097166c1079cbfecb4f1827b284c0b4409bb0192130f7e17fa1c8eaaf1f430f4ce63991d51ff331f4c0381c311c317fb1fa59387cfcc5ea910501ee677e87fb99ef9f1979a0747d1999e789796e64750f4c460cbd65bf459c192270cc50b66f6396ed23e1529504ca7269679fb3432775e3c6d4ad2726664c21790fac8a2a206f594e54a984286d511545a592d2e4e9e4df624935d4aea99aa98454434428942a4995a4fad92f55cde567ab6a2eaa9acbb7a8ba35693f8564434addfcc5da1979544863ea6655369a992c5668ab6ad97e102afb2a24d5ad5dabb7afaab5ab9bfdaa09fa15135cd60865db624d941a22d6f73338b626edd70479413541d97eaa85e613405a80b4f8500ab3dfd1366ad79576754064fbd55f38346fd9bf17c7760299716864eef9fa7b327dda407e6cedb26169fa407e8e44203f58c2c047799a1a00e4076904f283a5c4316a6caba6ce01c6a165fb2110b5abb4331c1b96696b7202f9316ad7ccfd407e8c80fc18e50f6902f9396a7266203f584a4f738459226b87f5dcb3be073623b27666a66947e6b991a7c66230993af2f895307088c1b837f1881165be8a312f33f2b8c4bc9b76ea73238f4bcc5b360213a64ac202eb788c38613585120e244dda09c3b1b50b043d998e3894e0f09111710039a5a95359824c3f0e04f28364eb972aa95bf66706f273a55d3457203f463303f9319a3305e4c74a93933301f9b9d223901fa3122de318d5d070c4a60e3ad64829c9209735b49b4cc719a55da591cc35442908d5d8af91e22e42ed2a716cee0b284202d4e4266b17a84651b6ef326b57cdf65d86fa5561f6bf92e3d8da55e288e188b58b75828dfcf94c1bfbe0cf6c1fe7a85d9d0ca95d18cbad5d26337092da857afb385aeccf1568761157a82ad1c3b1ad5073a9aaa590b27d9458aa7cb2fd9358aa82b2554db13355509456f9a866feba30fb29991420d5902a661acb54d22ddb0763d986a058de6415ad5da9a1d4d1152b5dc5895253b2fd509c307096ed87310f7db22d43a0a06cbba731df638cd823eb033473b66963bf880007c311f396fd191f70c9fdcb7f5f2a71b804b5abb37d7122c566835cba20c9f646c16407b974018a82c914132d5d84b2ed6e4a690868542c7d7b3f75fafb42d0d3c48395bb0a9e4a13740a259a4e9336a7498e2be2ec9362c7ea3a5552bf64622e3125ed0a727122a574116a5a1862e412048bb01cc9496158c9a54b936c5d64d9baccb27519caf63bda7636d4ae3287a85d256985dad5fde0432ec19c825c5a29d9e6f80b77abdf364c7d5b820cd52e99ed4240ebfe8af6be1d79c83b01efbb91e7436f6181612950dc2e14fce7516ed834019947d9c74beb2de7988084ab80a1462e71a0432e6fc0b8e57247cd6909fa8fb78fe195c62727019840f08cef853add60cd00fffdebafd3f7a6bf7f39946812eb6db274ef1ca1ef8ddb3bf8545b38f78280e94f8fd1ee5ec2d5219f359e2306d87d72ff4bee223430fd18192525dc108f7b5a9c4e920ac679e5b40e70fdb1ca755c3589491b2e71e82b47d32e86fb793bc599368d63c405e226c520c990bd234627e8264dc7841e0ec842cb97852d0b2ab2b8e5922cb221e80b5c868056d2617a53b0494fc28a158e7294094a9fa0f2421757721439ccbac052c176759d9126e918366902b100c130e4bac79d188681bb2f31c7612c707fd871dcaabb97eb199e35db95fc754fcd5625ff50e39b37304d8e1afc10e592860004983a66feae5260f0de24c9220aa59da55cbe57a6e46531a5b9aebeedf7443a6da64d7747dfd23a62da94082c68518ca220912aa8c10d3f53d8609be134a58919c8a08a21a0ccb0a54e81e1d435a90095274b6c4834414113130da016245121cac10e4a9ec8e23754c704ccb376c51928b0f9133828395143cc3e61050638393bc0154d4c9eb52bbab8c20ad006598e6b734323428986868799132119ed3390b8595bce6380804b3bbbc9ed3ea70d2803272ca7870eee866c16ce990a337f0599f5085780c3f0dbc31ca4d4687e734a39f507950b639c0d87007d6c9c45d2afd9fd9ccde6c4a849110eb9ad926c2dc77d6995c019c18e375edc8deec6b4d1824b3bfb8e9ab335ce86744bea4020182c26119619d2942b44b42a4546b6a3dbd096995094a1894304de9877153e99e32687480a111151bd75da181351a0c0a83f4f75cff2b82b419de775cf197151aaf48bfe704352da35db55c45969d7ac598125f77336ef76b27695dc18b99b704edad5f540bbaeab59a1e5e3c09b4fa8c995e8a6c2b78f42f7f7cb6e45ff3679bb1c31c0ee29fff2ee685793ab1c555e5406591560640a93fb71aa9892fb73746ce7334ea85db5066fea4f4aafd39d0836c9cdbad55fe266dc0ca8f4de3cacdf069dbb259841ee460595d9da8dcafc658b641649666bf36978047340ed83ad592ae6ebdaaeb459bc8f78470c80191c030191e90f91e913f918492c3489d5229d64363784024ddafa76088d09c36888cd3ac0c3177a74315b6ead56eb6a38a7e6af106326786689bc5aadd6d590e012e797d56ab5ae4665b456f3179dc96a9456eb462a9bb901f797b626cbf3bbd1430f02a154a8e42cb7753d2c15d108000000001315002020100c8744228140201a2ac3643b14000d7d9c486e56968a644194e328cc186308218018020000c40019a1a129072f4d7c00eec00307d7280380969fdfd41bb7441a24cfd268544f206cbb87b7e9b8c83cc18dd12e814d9bd07c0f7d838f05bd111af41f9e7667ffe11df96ec23375a15e48b3f0287b186d37a1dc61c808bbb52c4c6a74f592cde6d66e82dccb69e7a55cd8edb728a7d2926ef844c92ffae416b4c5390d84e8c516f9e42601324bc8ed6dd220ff1930391fcf298f5974ae0c322bd52df5f462ca8d6e8e05a24afadd7a03980523641fbef713d8153c58738fa70123e467cb66ac9f1f828b3479cb03ca92cc28dd8c32e408b59b5f62f89f84817013d331293ce8996e4166d9408d05fd9f030f7b56b4e14b61518be9c59205fcae35c4b1b2a3fb8886e0468c16ccf386419ad900f0338f0027f6376f3e99a93cdf0e24c197134b7a42e6b4429a4cbf73d802492db6df19d1802175c50f73e96b2c4caf8c30c6c27445be23338d57a8109f50d655887c3356851e302c4656de287f9493ff75d8a9d299d53d6bc30a29652d2562e81efaef7f1081338be714c2448f12c0e6ab8a6a5e7e5af8892040511ee684e1cae07b6ff90e52f887935ccc003dfe0a0a1c6643344e24c595a4c1d85c3b31069cdac4d478ec0b04cdf5a055b59a7d674f782687081fe869d571cb0f34cde8150b0b42865843d68cbf0a1bf8fa69ad68178e112f76cc11e7767417f1384945acff42ddcfdbe895a498699786e536c661266cc428ec28d4ee1056e31366838a30ee655c60b44318b3ca771e3692bc6ddc507dc01ce54baff12d18f012a04d3f88769f08899b872872f673f7836a47817a23a52c7050d8e5c75183bcb2967308bbb4dd61784ca2f9c27f226b700787ab65b67e518d648c1673d34ed5def28730a081c8d7f647289cd91bd5e4159468ebb188ab119a60922ea5f9b662a536988a521ed12217a91e83213dfc02121525d04d15cfc6c5b841fe20587f7d99d87eb249ac85ddd7921387d538b7916846ceef83cdba18f0a1f9f25953cc624d2beb345f2b3c1dc7c7c85a4b879310db2e0a01db1f09a70008e8490051a81a0f0ffe84eb513438c3bd8cc31890e2a4e8d7121c34a0d288181faee0f7b2bd3cb498396472a751ea3343198fd61959bf850948c531b45655ac3b5aaa5782cee2895ee3ef0b09d4de3cc6fac130ed25322eba9131a7e814952b4c0bcfc10c9375d712608dcaa97285e1aea13b2a47e6aebafa9f78305d6252d3961451843044e9aa54f044a94233ad8fbaab63999d84e42af4aaa8ba0132b793af0e1a5a849eeed68825077c32b9c92793462126198238cdec93ff13497498cfe315efc943ec297f6b63d2bd076a152e782d5ec679566e6b29187135d5acdff0f73218b54ac9b1448e766037095b0842e2a2e7d0aff872379e2b3bb06fcadbed4b12d58e9f964ad00d5a474cdf31160a63cadc8993d42b516677d781fe47399b5ef29ec9335f567bd54a85305640213b94767ffb607e5347b361ae43351121abb0348579a64046f271c6ffb87e2de7501b99ff145fb6c0979363ac54aa20507520fbfaf53f5a8690e8fd4430f3e26ca85d0e319030a24140ad80e85cc195536ee2986df6c1d59d1d602f3cdceff6e8ae7d24d543395b01a8189804c65b892283d28910eabc98f9fdc6d986256f6250193c0bd09902b748d278df3fc85bec10391f016196a079a3d71c1fc0a1f440fcd174f9ea3b0fa22dad1362f9b2920738036806fc022de786dabc4e3222494227336811a447ef4d1b24935489030f90eb575833e57a437da8868102b2989551b1688ea4487d8a61b81766c1bd461d0902dc7fbf77174985059efd2dfa5dcaf17cbcb8aea290640ea9b552e9c1de582e8a5e7d289a4a65fa1563fbf81f1230af80027db0c927c2987b667e8a3ea87434503e196e1abdb2500639d36e971cbcbd63c4f34fc0ee1f3b630d41e914f1321cd2dfaf490b60e0ba461ef6fbb41229a0a9808af7653c5a030515aa025a3b3d03ba68df6200bf285993d7e96a583874468484a10bc200888546cf7119f26cd6c74521e79edf4191f51cc5a8d65a3b755076d8fc83f7d5f2b5b4687181e342387aaeb8a947cbaf7d22cf75edf28a79ef81c68004554d54a009db108e7c816cbb87a9ea4dd691f2fe23bd10b6081e22025a5635f6c325898df894bf97e48959074b0a665633ff8f7dfc0888313ddc89339b006d3242e0ee1ad00068d001953a161581152b9039aafe2253c675590a3cfc5246d24bf017aa12f4ccaf59ccc12afe68a3277b013598d0416ed4f0a711ea4659cec96974a3f569e4c24ecaebad646830900b9cc06df69d49f14b0f10159b7233464e5539677ec3ac5f593282d220fa6b4b2ef4dcce13920a17a8e87640de7c99a5129f88da8a9c2fc54fad444cdae07a4343fde125eb1d40fdc8e238b649cfb2fda86b5b3716550ce07c47e48d6f104f9753a09d450ad5687b2b8b49296294dea9de9e11f3b76ec33bbd1c44a0dd93713bb8760ea2c0fb04156a64ac8cea33ca4729e97636e36abd14af48643cbc3a2c8c45145678bc4b139b3352ef2cecb9919c846cf251c1fcac5c21a70b10dbd785bdd07d0645abb45dcb8adfe6ba2c9dc55bab72b94ec074ba82f79d821df1bf523ee90733c4312940b6d08d5791e90ffe2d1d413b281f77b91f825cd34307866274fa2fc34b4f324f538e501e795c0e488e5f7316742006ed48f3b065f9c089fd73a8f2e8fee79c10a5ab50a47d16b2ecbc788dba7b96f0d1c5c2f263d49633e6a6f8d756c2cf9d6dfc2a0312e4558001fedb75c007c97eaa1489867e316339676bb1d987a8a9a740192ebe738a5d900a6fca19f2ae892871c98a6c6ca01493cb86bb0c5b2ebc1b05967a1d9719acc84825a65b12c55f75697b399ebefc75508a6bce2aeda11c8ecb971d22c137544d09895c4b10a0c7c6cbdd5bc90b978eae8a56b8c6b84a49c6d0f5eb6643b8f7e8cf6c85ea5df4dfc993269ade7e0fb4717253d6b034430c26681a74ae7ef8e45cf770c58ca1892be66c452d3db24294bf6069866f97d9b2ccaee2b7ccac1c0032a4f5cb91d0e74f1bc931c1e43e8769efddcbe52828f4b4dc6e6a539051814f072050f8804aa793b37cc563701a1cbfd2d01fa9f24f5f6ae0801c2cac71690feeb41b1ab3ba42fb505b43734302c46ef8ff51501b1abcee2047f22e202a2497d0470e83f5241d6e86b8bd304a8c1d117762017b2fd4eb416f9d226b4c428bf3cd06a651747303741a454bc375ab04ffdfc09321f9f68ae9b6c1835b18004d87bd45623649626378f18642645749484673cdb97bcc59c840df6d861a1390460c551899cf0b30cd41d000fbbb834fe6cb6b5175f519f5c86110220fff06e7ba7e4c4f23a3aea3ce51e97d6398915c8d656203710c192079417391ccfc9193a012a51291214f483a5c8a082b24cdd02580417529e308a617faabeff71e1baa2a30adaf549e272b2485ba8a8cb8154d781155f2bd0ee09a749e1664e4801c69203c58605fd76871fdb132a33c8072e94b82a6b0461c418be4fe999cf1ea8ce4c8a93a1c3786e5abc2ab27c960518d5552b990c5a032d7453947d8183ef88bfe1c2d851e66c221e5188c5eea11cff6b87cd3980fc915ca86260e75506fc0e803c3dfb9ff48622d335c81fb3e1e12e37d4cd08e85cfedbc2752b99e6926962072e7e447b17fd7855c56a7f6fe645b9b290956674e532a30b730f49c299294a20aa48d59f00b9a1cf1a8545fd1eed443be05c22474f8b79579803f6a8f878b42690f7394ba060821f5242d4afe68f3b82dce50e88a89b5e394964407ae3fdc92579779ef9f90765de7418c35569af3769aee38dbcc599ad7451948800f1bdc2d708217ae5a3d24bbfd8171e9e803097dc4b9ce7cd7503ceac451e590e6d383c7bb44d43c1aab175d61fe43184e832104ac372d44675eff73736e3a01a6bfcfb3cf8e4340438905e568106e8624045f93b353eb371e3992d2dc4729def12b678cee6d80629b9954cf4fef5e7e9ef212b0114ce0e0cef99120cb2f7470bd42a101ceeb9ab9aeded47b24d49a217503bccb269f61a409acf489734f018ed10be6d51a566a021055795abca46a366f8205206df46ec88fd7e1203e316c50c0ceb782aac4467a27c1e4f071c6cf43fe55e252dd1f6f9c27c9ccf9f1d520e2a5cadfd186cde33e6f994e02347ce2a5d4a0ceafb6917dfa5c97a67abdbeb7496bb42ed987531b0d8c9070c0967f1e8a8b6d713580f614ecdaf5c9f115559dc578bd71a72ac83f82a9f2aadfaeddaf1add093f732c40f358d4fef7be15f1b60c1802e91f202aabc79985c405cddf1bc97c3987c166170d5e5d1173fb078d6f9db2ed97c7039483d7b3a768d9c87d7c91e35a566c53889c5d7dc6082e8249d1d3dc830cf54060c6bcc678d194e82ec50ecd264e4ebb4da5948b93d1341309255741eee03d55dad185edf62816f2e93dc3e18258b524393badb34a0a243c1a136df902dc648f86c76ab821eb64d82d711364cfce2d453c806c2e3557cd0195e8d427cf4708d84ed8a25068a95595c4956eb25721051df5eb3a7de644c32e3172c4240e296764795a7bf430e6acac19e1deea66966cc70ca015986390398dfd80c22c3fcdc2685c04c4e152ff6fee569fd3cb5c8cc83e0e6c2a79afdf82a73297adb1cea6ac2ae05529f582da3dfbc85b1d7c7751983663a4f6ae1f69bd7f422400a6afdc1a82621898fe24803d3750cbc6e03511f34076974dd65f7d6f843f1dfddca483b298a4d813538d0b034f3c3e5a744840610ef6208d5a154d89e237ea940a982ca9b563eced0088a412552cb9ad753e181e3983400cde97f6374e3dc815f6cdfe56ed80f2ee819e9a28a5ac7a4fd04773ea9c74425cbe9f8952e1238376b927a2ebe646bc5b4ceb943688c2c0be8c3b8d417a9572ab7a760153faaed73bb3a6f36fb13a21cb30ed0798f38082543619fae966d1f95bb7bb0cb37be67fb09432039bbb88596a7823552ca8a42fcba349095df6947e1c90034de0c4a8c8b2d1c807be9d4a3488b4c162531ee301c92d293f3acfd4c31237e1829b01baa728fbc80e34e06ec16fe84fffefd0f1b4f71e47944d8b34e0a1c39e508e17239205c70cc2573c9406d1f5f8a13a1a380a732e029cd29e2188473de8d5d42a05de6f4472a73b9adcbb1aad46a4a5d8c8a9dfe34044346cb78eba8934c468e471f4d79d0f2faea099cf222cb71b1ee97d76d5a00431da8af835f299e9ffe13e0a522f20888be79f351c7ad4822fabc68e1795a060b1470a41a5fc0e967f6cc6d4e767d8eeb462d9999321aeb4c146d5f5c3b22aad2aa5309a0fe9407fbef743145201bb9c6a69838e45a27e7dbab44d330ce20e3d6a83a5863416f9d271832427a78855dd90ac15ea6e1aa0361cdecc76d32b6ed6e8385f34c9852ee93101ff58217c29576d6315d7e4be7752eb8ce2ddf8781a9e4e1f01cacce55dfa62596c10e30c82eb0eca8d31c23ae9cbf98cd03c2652257c393e461e0fc6a19db77d413d06f4e0e550ca2a0be9859bd589accce1fe561533107f7340825f2735700f9c8d9d0c1e3c43f1fe783b596ce9e4f9cce659daab5e6511b608fea0b937472482ac206fa93bb57ff52393a95816e13ca105f7ea826fec3cdb484554d5927e5585d9e96657685203b394dc510b38e4f48f0862799890c967112cd6781c8343d61ccb94ce5b24d0e4161e249c86cfe0f8200a45f506bc8c0cb76531c3271caaea8d28f9fff982f218f165a05f5a26362e4d98d08ff9efca1ada47aa06c413a8c8b1a1c2e1f1846b309851967891c67f2317bb4b323aebf2ba4e3d048fa3bd01a65d9c8b851d9dba7f9d1b8e534204425392d34093c61b77031509e0fd6733e3c43f0e15cb1d33b04ab05a95a10584117dbb3585e8742e5e07a8194fdc5f0bff09ab7b328d54b8f6fe0f9388f7bfc8d3bc8492a4622cce23c49446cb9093f3096ad0c67f3a15049b981a76fb86028d617c23994328546888e29805d44cfd8c9bf59fb8c6235bc30d5c6f8b83d617430dc489a49ccce7524a09333cb9020bd04d915f432984d8e89a760ce7988f143acb777edacc22e6833588cdd0500fcb80362da236873331bbcd604db2aef29779db5f2e109d27aff7351817c40ee9235c53ab11868ab3bd3abcfea42f5bbd3d25ba5adc03f3d3b822f1ba5ca889992117ecf2a54b1035f4b7e7b5ea398afc8542b848b9e95d1347f08cb6bce9837fab4fb57c74e7f13f5f130a1e1c860e77d99b532d44960e43a07500e8aa4d32d5d62884fe69414d5e1b7792cd67155652c9cb44fbe784e1694f764bbe4f755068ddea6c062ab246fcd69716b584d6372d231753f8707a769845c727c73bb2520cd335610eadbc690ccafa303828b22c25f6f2490760c6bdfbfd6ca63fa966266b352b81932f414b6f2bc4654e51e510a8acafe10dc4b17d87415840673b2a2c3078ceba4d3ee5b56336786bb1669e8b80edc3cd8a92fa9cc43d4ded79c2a51ac58ca2f1c88c7a4eb6011c1582861aaf046fbe2f913c5b07b6a3f5057fc03af357da6da445df3906677bedae573dc92530bf40a23b153db34b138832b0fba8c0a71c8b950a5f340678be186d0305c3e111a0c608b3947ae4993bacbd47a1fab20bbc3495eb1b834c6a4a8620ed81ae12fd281fe06be0d3dd7c73e92137c780272eb72d9b718064c2f8368faf5737766833190e906034cc66ab9ab8e043ada2ef3ace718f7bb42d391468336694c3e34f68696595d5493e4ac7a39bce3dcbac451aea8299e4e31759370abfe9d638709bc51fc24967fd6529e7da51a1f6ab92e6a6e718c575af0f13afb0331cab1a24d707f72a48a613af511a43e310659789cf7e75f891dcc1199ad0589c2641a40f9d7095860412731e3673c062beb900018d4b75147c72921b7bbb8c794609c1a644e970466f0b5cc74b3da1a65eb9263d2aa1b87da907df48a2a05c27a4dd17c9ebd43d809484fcd3afa11c187e364e41af73f95d34ee21d8dd0980243a0d26270f6fe1ce96bf0730ed02a910f8ebce27dd173f23c62b4cc4a9cd39f2aaed6044892d220ba35bf40d827b6544efbc387bc6281a685c1c272e7d9fb59de0d470468aa2b261e45455bcb1c14dad8affda3161a79617b967c8a71784d8c6295c3209221ae8affd4360509142ad748d4af45f08732cfbd6389fdddb26ffebcc0190b4106561012aaa148466676c96f1a83209f305aef60f6529179c96c66ee0b4d8459f11128b74acf46060c761158b6c017985774f39130f1c90227c159439182936e08dfa081717b902e8de9e17b33899b95420bfa937c91b87df80681eb73acfa8ef72de4034dee5fe2d23583ace63735a6cd51603b8a38e9a95386a406a7c24111291c636ae66e9ccb830845541f98d8a91a21e4705b6b3ed6d62c789a0715c4126b030d829982e4fea926515acc3aeef43738f398c23e3a7310f5814386c048146744395999c64dfcbdf602239a2023b0c54fc443cf7a55240c3c9caa024f9ba4ab4252f51bee4114a8837bb8aba62c6900562a32bdf1ad080bc50ccd114b813364821a9426a2d615a697280e0c5fe83568942289a48c9ad5a2bf4f8a8e00687db66fcb0f2804e920acef67ef8e2de0ce71b94c55ee6622e1c9ada9be709d7f92fadfb8cd34440ac1ab125d8da296ab5929ae43f557106136f4c1caf610862edd1bbebbc6222ec19067b2109d21927057b612dbbd26178be8aa330c5906cc819fa892a123ff63f9dfcf48dc39bebcf6f94cf7caa9c4d803485d3f225d8e257cbf2c7ce30a5e390767b530e93e5d3c6fce4a3fdbd88f1fa41632907a263261793b8069389334344f6a2745a9da6413ef68048f7f7291d507a65039c930d48a3d1a880481867d0f60ff1de9896592012c96510aedf89af7a197cc8d74f9af6b5596d3874d78fc6e32d15c07a6088fdb6bf68ec23057ca4854da3776c9efad531b2ca7301b4558a75af3450c2a9ec592972d43711609acdd74bfadbc98eea2f11d3d6e7c5d662c96362a49d94caa7705894f21c9c183fef4d1428301c4b74aff8fda90ec1ad221bbc64ba674873ed208710ecb178c52fbda0184e297f16fb42ab4da37de7daec2596a955ab3ab8a40012c592e8904799a91f2463b2f0ad638f0650fe828338704cca9a1674cd3d8c4934ec8b161b48b3dfc274b314ed310567d4ef16f59f50f6b351eb132a7ba4a2ec3f43c9fed54c2b56eb1b1791db055c112e5afc81de3bd82fb3178f3ad325d4c22632c63ed0caa6e47e35e18a31d613cafde972bdfa70eac9426a4f0311c6d2dc5bdfc78b42b4073b9f12f1d8f4fc65145a760009c268db7e1fb51c6aff052eff2f95e982d246c7186f5efc2e03c451ea0dde8b9b3f413f0e46b94282c389e2f5804372ca1d758279e5c45006db2c2ea7b9303e387405da10ea7eac0d460f9047a3930aa0bac19229cfd14069a34c22802e6a5331aa334af63c3fd3c4d1af2064e1ed3c0161809e9c2c33ec385a18c089bf7bb4eaee34ad23f0432fe36a42949afc1f124e0b51aea7e31742264b7a12f2dfc402bd3714f26ca37b9537cc6fff91e7de2d20dd945fcc594db6b0fca3d20c009b464b9a5093d5d92a2aa71d93e349ff8b5adc54400533d3de45926d0168007cd55f7ec5306b82736feff6ec9f9ea892fb2f6a1dcc732d174597b3b52895195d98ebced2620952cd8087119ade58a3abd4dadafaa7b8d181305ba93b23b6db74a350da238b1b1ef67bf3133e09634c5915057e44f946156fd74f3a11d76e681661529ed83302b8f1c9e90f6aa3c1fc15015fe0aaecef3a9f9bb959262cacd86b65005dea3c0462bc0be4efc0c2c6cf631a43287afd5fc162739b52070a9556003c4fd727990a29a9b21c31d0a7685d53e5ef4044d044d180249d6452d1851e9f922840794d3c1572190921827928365dea2f820f5878d32da96b83a3f4c9304e25ff90b5e37983800d6513f9328baa7a0bbe83003b6bb5860e00f0adf195f6264f22c14d748861e66e53483edc01cb096d6ea640f9c3617ee19b319e74aeb803e2318d763290cced868e1a70e888f497352c3774b8746d5d5b91af08c8789b9c59f79a4cede3fc71198f2f242f3c40f4e60affb154321c7f5a1e12016bdd6d439ff81c03f664e1de0593d45dbb5ff1ed4f331ae41a215a3fb068020260134bbc01a38f05147bc1c1bbc6b79bbe2e6d5368d43440e83827044680e8e3d32303aedfcb473cdd16747ca420eef39c0ed90cab1b23b6bf08014739be93ca4dc1839837cfb3e4a27f0c5e821a5df19c9b3bde95335780c3033a332ee7e4907e58a112357bfcd0c89260754332ba4c969ba2e43bd2ce6eae8a6332e2b729ec13c23e8dadb5d002a07cc0b5bfd2a99bcaef899aeb880e444b0eadbed742b52f20a2a9784da209558a940a0962d966da9039d3a6433b0104572735c3f779a50cf39c7f4a4a5e69d3607f149bd3bb711939040ad16fdf8827e86ef8c539ad0072452913a1903f5712bc93c7b634098a892046e20daf1d304d3c0d8b49e031c9b0e524a9e3485665f2d426330bf7a3ba89f8708d859efd675cc0f93be1fd321d539b176a00bfc47328d111e5f9767d602c455ae72e5d8a8146c14bbad7155660b390ab451eb8bb5e3cac0e31d7070eafbdf4176470e7e6218a2c36d2db5cd3f69e4208822c9d445045fe004b683d704276e9208b096d2e3177dcca4403ea01828f5a914d4c2ac4fcb9cb1009c71d4c60a8763dd368c47d872f3a1380c50c00ba5fec409b13597bc6ac7226f40476d9ab33e2f0763d5f2b0d6735436e33da4d81b96d83ad04940b41275c4a4de0dc64b66d4e7ece3990fe4c43dbc70e6535faa932da289fb17cc01e32c6114d9c9f3cdcb6165a1afe381268dddeac197008ec399d6d314b9ed4f1f4b2ad38bc67c3a4591675281c887b7209dc0144cdc3e4598a3294c922ab5cad1759ac92413bd85310375c825ee377cbb69dfa08c7ae950844c51993158659f43bb6afa0930f8a61e8ceadd6576d2d0e58d64a842f90b634c26e63dddc6c2671e9642c3d4133fbb77abaed4358e0097eec951222bd12a069af8a0337c8834e1f59b6a08d1d451b7384319c7aa3ecf047d88a64045876d4d56404f0a0258369ca8609f062693ca277974b38514a1d22df44f7087348a00f1e10b01f7a49e33fa9a262c74e8590c080db4512f0f121e0b98bc56547dd42be961269ee3e425f9d054fa9eb7878ba0106faf7309d1bf30e7a5443e4555004125d41f11ef412988154ff88408e5b32ac9390155cb282903655c9778e5b14daafa6e449ef1ac77c1bc316c93929286701cba77969b54116ad3bcf947a943db2ef28e65ee6ff21ffcbbe7b1817a9f62016a06b354de528fbfe13539ebc1f98fb2ad2a0797eae3173d187141f1b8427ad428a8b80a2fb27c12f0e011ceef5bda79f2724156113e8c80210c7d6b2a2d8d1c775d160bda4b9954e9bd95b22d933ae82c62668ebccb9b70fd04329600ea05d49a3634993cd76a84835cf5a151c69f8183756f4f4f9bd27354d2856461a755a2ad7051956bb5d8bcc695a78cc3ce37cf531061113e01d7cadf3fa9539aea365ee5a087628002105704f31b329ac578790525aef3cba031545091046ca5e6d09f884029d4ae1a268df3be8f708973c1baae5f507fd32384bba012bef8d4e1b1eea60ecab55e655aafa879b39b0414b7faa56e81e72dec74e36c83a3fcc569d4f20a9383136805bdec4998490f3f777a03db84f73614ea1e94e68c01db185970d42642cfae72c0b05a3edb641a2a42a6772ff8826769d56a13e013c5e23641de8e8bd3c90962e0afd40bee92b7caee1d0d7a407ed994f8ddadbe552c691d50f6a24e12db1d12016bf43caa326aa1ff8d0c64dc2edf629308deadd2fc901bb02792ac1e9fcebe1add750cec68a482875f381b91b34d1e2101ddd6baac69c737dd23035874d939e75eab64c2e6e5778c97ef1851c385c3a15ede4b37695c77f3d1377e5cf28ea381af6d948ae8bb07219446e16efe555f49dccde2e7800baf72b877752735346838fa4fd4b4fc7d69a0da5f0ba157631cc2edf719e9c05583f8787c4a2c25f95ff877eb7f2dedf9415cf695783dd9e7908c965f122588f0562abb8dce02364c452f559a1ab1f4057d24412a24dcc67bc013b4b1639765d7ef5a2ef15ea2f2d2c59538725e69e9ef28c281d74a259ae523aa50415ac7f419fdb7be944bb9290b2b47484ac085e676e28d302ca00b2c21b220eebc9f2f6116ac7c4464ee58d71e2d3b064ede9512d98888c406b86f4376781dfae2b431383916018cb6fa4001c48f673cf1a74723f2e517e0875b66364b8a0ae518fa32df9180c15c6f6e90cbc2d68ccbecf915c9e23922bbab209e26185918dbfcb09732f8eb3542a506b1bad5e1cb9887d60adcc56b329945c8cb8f7fdd36bf1c51e6d0e2b5feabd46a46492619c1d2ab44b1ca68179b73847107f8b31177873e2e83a5333614f5b608d4ab134717039a87fae97bba63d8fe0691bbd1b73e756a2b40f085685408b186dd768385255b98f2fff1c002aef7c10fbf05517e24e4d89922eb0d2fea8a26d341413bbf88ebb470e929bcb21b38e8a97cf313e609f0bd6c151cd476d47c5d81dd5e99f62d1ecd8e13a2d0a46153cd51a028eae2ea3b6859256b296d623e6e4ecec46b785d2f25793742b26d43a3364dfd28baed167de869e636da7ab01c9dadb7ef2435f691ce90d603f2d0307a74d11322625d2a122534c312d2e527485a03cc672a4a81ed7f5010dfed62d970393ddf9f2fffd73cd6b0c917607043d315e676047d76bd6711d1831398a268c01cc45aedf40f67ddde7eb6d8f691fded2f730b8bb01454c88d63d1e7b85212f61432d8f8b7eeebfb5f5d972acd8cc813fb87b34f5e3ffd4ece67201f47816991404466f3c45cf1b51b3c37ff6fd2f720c1b1fdb214230c7ce8942f2cb3810086808d689e8b95afaacf6d1ca8db9b5c30511bb815881fa0d6c631b764ab189775cb3f5b9611ec9ffb6c571eebefa87466e21b8de74e5ec3ef07a801d10a80fea80cd44add42bbdc06d28dce83f8ec91e82e5a7806b317b1b3cd6fa8b94ae07d0647c9d420520dc54eba04a62619a83a72c1367d3c0f85a6f54453d7b0a1bebd14d4cca0df7195f7564576ad2724f603e33f21f179f891858203c87bc02b10bb00cd3a7e533a4c453e162b08209d989c6a07f705a98b1cea8b857f781f9838c40007eba0864a629d245d55b27d6828e758016a6081f4144952d8acdaf71c1834b94e08307a92bcaa8ebe91bf3e1a62ff6d1580390802171193a6645323f53bbe24240cf01343c37c9b69b6142035a4d93352c4dca97fc09d2cbecbef861d6bd45b8066105f7ca8486e421f74715bb773c5c9e24db60150082f19d92c38f9ab32ee57ced2412560a7b0908119e694b42d49a36854a0a1d70dbbf05f68dd1f5459156490606fa8b7ab28e022bd6f6d9c96cce650cfa24a9d0c7408bd6b42f95277a86c6c02535cf366beb14803e93c52ae642ee84b4763655b98581e0140616b4dfd94c625e5cea16ad8c87687f80469bccbeaec2ea48577be7a3b894f507a7ad13b37d1842f552cc29ea0a4dd75aeb941c0c4b7704e9c841d0543254d844aff9564eb28ef4c5dc25a70a238419d689156798b9e7ff5bd6a570a67bab5b4d26f7121b35b1c70071434328c057f3899692ac810e3b642cc4b37140413570d359e8d1f9ae8928104a2be73f98f7d49ed03d80cd57a39ca72726252178576dbbaa035d15d63986ba80ea708b50c4ceb447c606de4135d2c29c401f426e4ffc4787d918e134085e3f8cee496f56ce1d52031fa61142d61c04a1988889b1cdc3e1a8abc0842490f31fe5e12f262796e7d3d837a1b5ced705d5f30d72bc889650384e605f1ed4c28f7660e44b2326c5fc3286ddb0454c18db7cecf97ec3906bd191e9dbd1af6bfd1d58bd97de0003fb09ace09d2c7a5d53b73556b2a71718b4c0bae1e79eaacb559d49a8d2e4f16eb1cc3d91a4881a0d5b66edc9bc0d5cddce35ab2ed24f2603e5d4dfe8cefea7915f28cdf8a6da0d144ac7e1368ea3be85ff0b1d371ae2ffd0120a3bc654515381b5e2e8d9ba1e4f57da5e9dc48317e6dcace64f337e3ae96819ef02262ac4e628aef39aa2dcf5bbb054d3036d31e175962d16fb721a62ad246204d5be3fc955e840a02171b367359dc165afbd9dd87f590f561e0ea1faf970dd5faa199adf0e3b8732cd291cf0dbe6e58a4a5f8ed9f6f94cdc475f80af0d57db20d865b7e1aafb24dc2c03fa27a33ac20e54d8ce34942e15595c03af45d6adaf790d9dc7c8dd59864b005b926b7ca3ba64f232abbf538e230fc91860c2b2e02a4c50f8fcd1ba7b43a5fc6780df3ccb4de2d8bd202a62fe22765a2745a2191c8b64311e85cde17c3c548c270810fc139f9ec4fa6d52382ce1e341aa6d13c5c2206d6d5dd0b434cab099540169175b41421026f1f344ae6f659adaa46069575601512c0cd2aecd0599b63629585a955170d396b62f00bcb8b0110d9acab382298cde2df5c3a32b443b064b6c429b02a2cdfe2f5f2085d4f262afa8f42a8cc603734056ada84cf05d984e57c2d9cfb4f925ea7e847960565416cf53c94d270cc5aa59de3db47c98f0e81388cbbbadb5e748e6f6509abd19247bee4b3cbf2912acaf1cf51db7070396c43d8e71b001e7269e81d0fd64221370e8da9ba0f1417170999870dc1e312130796eb30665ee04686523c9ed71d3c973da2204913c0a38bf4fbc87c709cc3e43649e4870107c69b11c54087b19718d289e22eef9ac34e9a35095f78c6bf847e9147e78090f40d75361c42d18803975dce7ac47914efd31181b7c4f35b06c2bff93d9c55575f1ef6f5bfca54ddd45b4bf6d3998989f8f7eee1594e97c1e8ab8e56d9750a62d698413b47812a09be82b9d020c05029bf98dcde876463a5c3ae47c11dfd374cfe9e398bc68411863e36add41842633f4969a33a7bd3e4c617041ed706fef36c8cedf448e41b446c35e329f4bc14a57017a68d4459c4be66562c8f4363bfaf5cae01968c120ac3479e3c3e1778ba66f94ff69702571b14814390c6bf35bb861f4d2396be6f3c7c763274ca4cc50bc07b2d1194e1652ce6d673b6d25fa2f960cc7c5f203928653e1b4fc7e4415401148646b43cb598e7bd672ce193546505c271454d161bd9551d80d3f2bfc70cbdbd212e1c589ccfbc19127ddb2a26c791eee709f675f9321051387a596d2854d326b7f81f1049321e41b630643fbdcaf344ac198e8922c2acbdb8ae7f81c9547c3cb8eb427919bf37d5cce79eae7cc7e3bd311bd1c1b207328023ec3cb480b10b086e2215b469394ece35810f6c1a733cd3f5ad7991627f766ae5ca16569df9abeed4f440713995bedd58c451ba408894cf4b3d94c6193dfa78bb84db7492ca90f666aef24d6921a6a3809389f78eeb4238d2a69905c63782e9c437f5caa4baf213286e1f4db4daa52ab49774469b1d9e05a1a98df60bd8256f66915da8321fc7534c98754a6f05eb2f2de2c0e02e9c22cceacbfcda91c62335ecb121b2f258431fb7aa00fb22cf0cc82a26a03f62dce743f911e77b6bcf115e5fbce6e226b059254acea492c6b058926949e290a79ce0d1f285fa7e398ef0575a7d0e7a28988301f010b85d89b448add91c791033251f5082b2a4c210e6e31e799c79ecb401bcc2f30ee84e03ea55db8790c9f9d2569082dd6371c9ff61944b0119ce522caa85cfd49e37048d5f283399e70b482f4c6f8f7ed3aba032e062b266d2369caa158a8a4fb88b7531704a93a3d27892863e0c8e75ca9c11cd7bf84a3603807d7cc0077ffe3d4890210e6d319bc14394a722523379b72728177ce1bd00064aaf5a7d8bbf6c33adb038126649996297688948cbd5ea74edd983277e430735dda3f7177cc12715de900cbdb584eb99b0307a7d82cebb5df6170d0d66bfe717b59a3b0935cb765211aa0720fd3b89a4450bd64398fc08db8bdc21ba89c99557d699d579989be7eb1999f9019b14e659caf9cb965e7e6612a658ec6c45c7ff6431e34cb6f541efee5e4a36803a3798308d3b3e185e6c2485cf85be84c647d9834c11f59a6cf01f2041a2ca33e27323215aa8790220d581b15602beb7ca693b9b352dba8503376b1f1bd12e3d429cacb70313f7812c5683d5256abb625453d4dd4a176cc63997c22128d06ec73ee153793bf48739f23e63c0019a4c6b17ad452a988cfe7f258132326debc31923aa78a95100ddd42be15d3ad5653935d3af522807a346083f28f1964ac148a04a51d45fdac4628f74faedbd25e5c7537b1b3b885d3d790e8f09f2b1f623dcf324b5b7d11e450013381c56187bade8ea7c14dd200be469e42cde29ec1079d941a6aebcef56f50d084b908660082a5bb7701fa1a79a99a8d568730fc2c0cd2b2e1bbecfb62dae669fb94d3cd6f3245709595483591986774c36c4fe954a25176131f516504e8a6ae4dd1140130415a773343eb7490fde18300d328601a19b63fc0dbf556c899622f267d808103ec03849b27e0c86c3db24472691c03f6e7b599c4931ecec3f63aa59bfb563ba3db082ce890ffa485238739e32487b3764c7bb92c9313406a9ed1a2bafc81dea75d85ebaeaca65014cbc821c5713ad4ce826f7d12a8390cbd76352ecb494ff539c3fd3b5398d1f0850b27fb5a6ae8982c8baec57997e2066770d7cafeb9185807f27ff045aee63c0003baacd265cccda2bff064d6039d93242a72450c48100438bea65e5e917e2e3c6809cb21493452d0c71a49ec11343846ae58cd264baa6b5cd63a4994a2af78609bc6185a505382a4d0172fcb6874a9119895be3a4d60d641d1df0c5210d8e73eb3a508f85bb5c63d5ab1dbf12126884f1562f377fec42cd4fab05109583de70202093a0c7db401c89386833646fdb2234f09beb0f71d05529a43445fc3207ce18c08da9b305b28612636a8871074a4ace3001630edab94ca6669d9d7fa6cb5a64d613ff11c6f02d061159dec701ac40a7eed891ad7cc6f55686e2b2a4f8d8004109186ac5beb3bf15dc89eefe32d87486bb2d039b19edf9a478d3572b0043a833ca48a8d1933dca8d3854910e7f2e1c08b30f6cb31c9d5d6c2801b2a6b57a26a526f52d08de8f3912900c26f15f852c1aff8300f9002a1a3444d57310719caeeb3bfac8f6a8df394d65265fd5a965e474ee1f0b8e230ad81bccb17052848038836bf9ec4377fcf2388541bafe0e939e333959c51b47503cacb7e3bbedf2a932dc4343e0741acc4e214085c721c5c53ca5dcbebc9f5638871ffaea07c9e78a79ee4351ed7e8a006d76fbacf341dfad0d4228668a2a3155e17c949a4844496dc67dee0a84833ac71e954709502012cd10063c385952ccb88f0bfc799af7f15545e1bbe2d8843705c4cfc37d721d6405cd60cccfa4a051db634c8bbbd7003afcd9d05dd804dca716a6ad9de46b861b4617536422bef672535e03ca8a28ed25de6edd75f5abf861aa45d9ec5407ccbb0fa7f198ca0e11a9a4d327559fac3f9a1ac2c9d8232459ece53fcc0de2f960d1f5b6e949d3efb363a86febb46fc1ad13f3cd385096f6448523814dae1f049e178fac5bf6b4545c664f153db3aaf145bbe6a7906ac45c629358217d14921ca0bdeef55a172bfb16f89a1cf47957f6a769e9ebf714986af4974e5948a7bba64bc50628121debc1bcf0a32bf760a909ec2d6fa3f4e2f03a4d20d1028dd034901d8c94087ad3085224f97d397a1fd6540dc04844eb5c0d62959581d5ca7912b9ca3d0002cdc28c3dcd62022caa8fa3b1b6ec9fe0d34eeba7e633863d8a2012b24f23e124ef3fb62d9cd005492d523be17401a6b202e3523943b25b0ca6b4ffac27c0b96a954bf5c348100141214943fa2a4194603ff1b7a83b5e1f48992a13a982923f381f9a099d20bc40ef7fe7508d42a09168d0d1538b4887cc10127d5fdd5168fa04c05033388a89783f0139238258013f59c6ead531a392ed36d22479c7bdb9bcc765015213c17d0f31c982c6651e5e37240a52f0b0652c2fdd51d5f0671f4c04902889e710906b3929b27982c704a52b1c4c1b8ef61f097fc853f64de3f497d1df5e29df3d30b4e4024117302641833f41572c13d1ed889896fdbea682d64403537f5dbbf1e856be415224e208676e0da07db0135412f00a9241474864a8f08933937116d656219cdf08dcf8fa6408bcddb3f3eee8d0758e1df3dab5006d352e5e43adfb2ebc10aafdc4e70e5991dc6148ef87e96001f5f20eb0a9e796a4db70736934fc022a01c787780a2cc0fadf60e3fa0c1e2b05e1b91e86d07cddacbeb076786925c5f04962df38fb67edf1f48a71f644291c78c9774c6bcd5d1d0c86741eaed8e675942fff71228b9c283e2257b2ce0ee1b7994b0bf8abae48222106155ffd4a3983a471bc828609135918d3b1e6747c77fd45ee4c86ac85c05e820dfe9d40fce8c10abd4a1e72be481f9f8ab9b0186ac914a800b664f4a0a191c4f8a277027d949412507bf063f36d2e2760948dc94e24a4c75d1c0f61f7fb03a8802dfe08cc2d314315e4ec17d0c08488a0b66b1322e0c4f21f1910a41c2fb6e0305e380ac824b8cf9010c69adcf87dd36f55a2f129ccc589baaab0553579d29bd3dcb74f39a7ea38809163f762fa2078ced54312340600a3f447cba74b667551e49c14c92255167dc9803b0268928523f9878ae7a6887559668395c2ac2381c5bdf4a00c78c17e103d023f9b73c845b3f0bf10a2e95e010a24242f27c7bb29e104bf373c5c0fd44032df57d7940dde6c3fce37141b2d9a78638005787e87b7d4f5a9dbbc99788d1de09b1c874113e6bf1afac2d6684ba3ec395c4a7c9340f4d132fcbc396a18437c4881983740329db92c6503bae0f32f030ac49a80826c28a64daca50ce1d96ebc347eec57d5167365bd73839bfaa1ce7c52397e68131691ac44d00d64e9db320a1fe860714b3af786895045a2ba740195197d7ebcb335a2e29c5933c5e6a95b869eb2460342a8da6b36ff3f63214d072562951f037b519368ce45aef901a78333342f37965789414a38b7379b2f9912f65a6d9d58cbca1a6e06b68bcdd7c9181f4ab9bc97f29ee5c08d2ca994652b7192765660b3cc02aef34a4ae089210e8ed63db7f59af84587c8ddf2cc36d228b87535a21f829d74785df5adf26eb0c9bcf6a017e50a0377c48c0ff714aae452ef33cc35d07bb1b25bad036173601844408c87fa943af754393ec074e33c5291f97e88fe74f69c624089374f95f64101024e854b73bcf96eece5fd11104e6738bc66fee79e207d9bbb6d0c6e636dc9a72770c68123101f1df73b104f05c8068272e7820ad9ddc924246495135a06b0637b3c3b0e4d58ef0df0527f20b442045ef5c4cb067afe59980ae892888c1b52e7bcf2a1663e6e81a792812fce21ac090fd51dfb0be98cddf2c569b0cf079639331bfe43a67d1434bb0a6a598b607bdedb9b25841d6b3fe502d0ed7df3b9f61411343c0393a29125ff3f22b6dc6a37dd0f583d7a7f710461e0162adee0ebb841bd76924c4f2c1a67d02849161df80003532cbc1d78cbfb736d07ddd4e0dde92c18123b048c7e895edef3e6485e56d191127ecb1ee495582c0b9898fdeb78d518f055f7429cb647d8d92c83e8325d3435835e848aaebc33ba4b5b85354b8ff6cd27000ba6cd0e0412b10cd43fadcae177201c37af24ba170f6f31b0311acff7951f5d3e7889da842642052959e2f7e02a014f36ea1a8eb23b980f004454c9ab174fba4dec30ff6ea441f1dcf9c9a353cbc434ff6392ef6ab90f4ba467daf707df20e9cf615929440afaf0040fc91df4c44a1da969b9d39237f4ee78266018449da4dee82fe49812129a091f279e31aa107e520ff750989654507fcf43198263f86f723de48100ccc366ea83871724cc303d097c824e0d6aef332e37af2cc6cf144eb8d5fac35321dcf774624153a87599817130f8a92d9ae82652226ee336fcd24a51627b1ae35e4a7326e3a8a8cda235f0575609beeee55f0a60afea28fdcffc661fbb4f17d8eb3fe7cbbb9b788bd37f6e1143a09bb9d7f70f64036aab9336b740664168159ee71f5a59adbd82bcf30f1e41a284ec425e13c88bdc862e09e197a8e6747742283a85dab7d9ecb765587f6a64077afe415ac6982687aa6b11d300219258961c49dc225769b609610f8de6e2ab246bec5c273ae65198eb7b3efdf330e6c3e09fd9e1205281e202759b773ed2d235e34e54f061a0705b20bbe703cc67c53bcc5142c91ce6dd8a0e45ad895ff83cd97f6743c33c6c0b5ea51f63a902b2905c8237b2635ed8bb8647487a0ec83a529b1ab755e288255ed562b62dbebd94c652b2349d56f8d5a474ec9322cff4a4baad01ba595aa73b338cdc2f2acfd3d42571da7990e01e65e1561f9806cb7567be4ff16e5ce60af787a1777f67dda6db8a7d0f809ca6b8cec4239d5cef7c506b664435678e8de87962b95f3dbfe13eca0d9b173c4f5ed2cf4b94a3888323cb0af57a53acb9d442fa9c84e2c6e08807885c856bfae9549f0e8ee449e029685c41e92630e135c4643bb73142b0edf09e5d64f5ac5f8f09f08cd7fc2e57e6a7874a980dc93ca8ea97e7fcde5e1d9df14b186e27b76ab3b0b9cb162997392c66db5416a3f45a8f3515797d4d5a876a33a31b581abca97c7601556743afe7c84acc44330451f7a6ebfe847387bd1ba7e7448a2acf5c0e1fb341124f63b770df4e775b37155a8e7803713d2524d23dc554ec20845e8670461f6933188926150d8a108e5f014a0c4951e0c3c7a6b6208701278a4b708857dde337b42df0ffa36ec7b524eef00d6c43fa596a130b4d50887fd575480558fa4c63b0414c22adfb0541ac8521d305f5195ac0024343b80810ff8c62fe2651327f6e9215300146538534aac51c21226d9acb5aa69c8749a7240d7912f68dd3ad219e0b3df380ecc955b3b8b8b7f5b6e3b01c52f5e17573d2aadc18c73cb8371587238af53fa760dff611086e143fb41defddc64de16a6c77f3f9f358efe307322fd9726858b9f8dbe6dc4351d986210dee55892085e3096b475d8e9cf0e149cb203d961045bef54fca2fa80dca6255bf79ad60235057b56a3001476d0999ada8651d63632f694a69c7d9444d3a47de1475c9f6f672f31d035a40fe0ffa77b35e7505dc91eba781313d62a6ba5cd85e89802cff54284a0876008e5ffea81fe0f99b6b44a783adb922d97af612a8a816957406f46f59df712dc5d8b9be7b2898ddd1a837cb6bd232e38bc7ecaee4f8d53fd75cf367700329ad241e660001cf97f8a3fe862193e3638aa34b1b7673a3c76dbddca862cdeae678dae515b1caad1b0a05506e499ec36ae6ff27d82753f13854d8266073720a4782a132ec078a73b576aa73bda4905f1756142894e74ba43501cee7942b244729dbb31a9d87294e6bfea4dc6e6614f3b2e0c02460c8bb9a5307a6ca8c8dc07c0093d1a40ccbd9fb0868226636103c2b5ccbf198fac4700609cf98b0f2fd5de67998a049c811022bd5c5641c6b6a468bdc26c425a0ad507d29409d096f0fcf281cfa2e1309d433383377f10311618c73aecc51bb0f3da3c84abcccbca0a45308e623c6dec85544c31d1817b779ebe2d5a010ce8e5dc6b3c4971e78a8c03070b79e7b4426249fdcf118e7e21bdfdc6ebc55707bc3bbad48b2ec62a264624e763de15287af5caf63f8d4891129021f6f34fbe8090a77e26d251293341f25de9ebf92042ddb4f5a6afbc0bf3d8a8a3c2376f1e35b61ebdf3f468d4c93933a184337f7f5d01079ad5004c064f07f4996296fc711a45b207ecc2bc3a711977be324388343c4ed2311c594d40c8e11d83aea5c2873f70219b9c257fd2b344b9df5450ca70719fef3c5eea8028f3bd9f6508f136b78b4308961df1073a70b5487543ca711f1ce07b52fafe619ff66e6a5f7440b39d3e8183a18bbfa23025241d0d7413a220ac80384e5794a43bf07d0093926a2635a4027094ef4b2ee3327480afd57191b5ca604ef5bce3d174dacef23eb6f9c2ef2457982a62f6eea123acca40356fbf950add4ff9735cdc9c3ffb80b6892354bc06758d57e27d7781489032c75513ba1cd8cc2636fd1a99dbdb661ae6f8601501cdc79ca2e9df28ac62a3b47166c14164be55b7900927162b9337d7b751e128573509e2f0f1c19ed123d36ef8ba3ac05073b2f581286e97c695199fcf893b524501d2b2b61019a0b826da184bf71dd4cee3b6b14515a5e68cefc6c36ce81c222fb4396426b1a8b24d330e59525cd5e13bdec06e5b6414606ed2bfeeaa5d33ba5c8517a998bc7b865ce1d53e940cf4697c7081a7d558994384becafa1d7a2c5cff9256bbcd3aeaae96651ed21634489ee511caff288ae37144712365313e42e460b3831fd5ddd9272396e48ac87602a587f2bd50f6abb6b9f0c8311699d1ec4d545b217dbaf2b22d1584989e85a56d6b6e16454f0b366848a6eae2867f7e0254daa938b2df9fd91b7158d40ba26f48b22fee52c6db2ebe12f37fc8a8cf520d64abefa522dc726a154be05bad0c46f507c7573483940269c176ac2e2fe64a418e5252e1d26cc1341dcb2e75e5a58b7d9c8ec1cd43f24a01bfdb64247cb3061538185042031020f606e4c278bd1c225504af29f3c8873df466323903d2b1292befa7a6e188f5ca2df2efbd1dcdd8fbede73ba789fef0b08ce95325fe8d44322648d77510f216164fa00ab929c5c3e62d0a0045192c07c6b216897e27ec393e5342d5cc4c2068a776873a28b423aa48e537b40bafc4789244009b65daee4b53da9794b425ab16d98233cca99e997e6598d21a190fc17e1036d1ea7e335ec1bf9e2b2f60d94982a391b38d3b24752c342eca232621d3e62f3a2ebf329e829ae960f2078ce03e204ce3cad2d5e1c30536954030af882436d1bc01c55a1854ec3e7899feb1398af62811958f75288e7e2c2c458bb3890a859f8030c5679707415c1a9050160c4f9792f909ba4be21569f12f68e1a35902020a9ff9e9798a4ea315c1c8489efd7dd9f87cbbb717ce55d0d234459d04d40414cafb9f3a5be40774345d3e9fa4fb6995118150a4663c0a6a479a2574b71743e0dd2b8dae37ee9e38eb4e7bc658e9a7549576e6d4274a9e64c4124477e75d95ab84b667a23ff654382a551d0f72e1ca09f48c87a1cdb17f35b2d50b0211f49f6dd281fc40f7df9fe5c3e1887e600010f686a77870419ca105e058ca41f97c2f05f5c8749140a05628cd85af5818a9b8c65c99d7e4ba197a9505a3e238942905f07b203644e86d29e95b80d6073aa4a3e62979deecefe3515aa34c2c30a0f3ac7430773395a0170416800389d942bb577c606acd721586ae50e853f82600f2f17b0abc8c90d5123ef8b0c6f40bd2c92a1c200e8cda039efd7ff69dedda5bdac7ff6fd2ddad4c33da45a861d867fe9db57adc77a1a5beeeef2d58085aa0014dd00a793651cdeb2fee90be6be13c2f76f158a16e704109e376332e90902ca1826f4163256b79c727a994df02f328c344b70f1ea03224713714067a9ad7a73f5b9fd9185a1cd0e511f3921de3e5dc598546cf5763205073d0f143a2c6306ba50a6d9e364835c2c98e88a687f32244474ec1cb37e6b7fea10c991f755cc7a4c5e65f75ea46fbd8ab25af0d7d11913f6a65a4740a8dece20ca0e7fbf54ecaeacb8820e5d257109135c6b9859355691f97f119782249792fd75c9fc2ffe81d8f8856ce9c9b349a6b2ddc607b48510db3221fb6e445d9f23ae26222b016ef084e71e89d6f9f309523432ca342c0762b9c4b99fce9b098a4c643783d5b37e2a4e09f6a54ed0ac6c4d53b25b9e8e46aef7715375ed713b6d886b412fbe86b92b00998adf3a02611ce5eb5fb4d4cd327e7bb55d70376c5e962a6b23f23a618cfb7562025b184f9b0a48a581583d02a87493f7a703f514db07daf733ffc30fd3cce69e71de6c8624b809f379cffe4e24c34b5637987d0bf6bc0ab60bdec6620d8f57eae139769c88ee2240b0acb48984fc9b691b7525ac745c0e647539962bbd1649e3f98c7494ec2c00a6c5d9b6e93d7abdad8388c4f1977ed97b857299735a18d8cd497fc697236cbd600f778e2189cfd2144856024957f99ee61fc4a3facf9b3e71ec4dfd94e8217b62e378687fccd0aad5c198bc481eb69533d41ca7df56783462329d2c278002a8cc8052f0a3c8f787029be68127a0fd705c735141558386edce4120893891de45a08a20a0bc282834f327e0862d57fcb624f2deecc65931ee0d37091d55c8abdbf28efae00bb6f55e53a648981e3618ec15480156d5bef9e5c27d38db4f93eef221d3d87011780b89f733c1e54579bb8d4aeeca27d58b727cfc93e857aa6f24255cca79e654b551dab4c2717439f64840eacca9c343212003f9aa9911854d5a570fa1e0d6d6330f140d49e61395f260d2894c6588fdc79592f63a6a0f8443dcaef4aa2073cb609966cc28a15e4b1a117537faf25ed2644e4c1bdd2bf56f389231c92db42b452669a942a10244fe206f223e134ed3023566e5d3ee31f3d0169fa8f20c3ec562c6df23afd6aa053947017b9e10f773de5386bc8b3a17473d97195f97a24b1e1059a6fb1531400fef683a3c40de1f67ed38c69cd1fe75927319ff8c5ed8811e42368595f8b165e833ad461533ae04e6c5c587a2a32c19db5b9e0bf143eecba9e906b81fd602134767536a05c6ef10f00bb6b1344a5818a53455535bffed6cd7b6f7d259c3b1d5a512712219360d09e2b4772a33a41824744d5f919201c1c21eaa95f6a25a07ec5483a24093af1e944ee5fe7c35e0c99aa5eb9dbfa404e07d4c224aa28ac9d2c4cf91ebdaa52563b52e7fbbb0a93eb15d2cd5ff9a94a555adccde4bf82e0b58b76031f0ed5fa317751d5415ecdf6551d751953346058c1c5b250ea1d40b16cdb03b5b5b0b461de27c81e5fca013751350f4dae8a305073bf4efdf1f2aa90c3299f4927c18c90d3e8f414a6cf03eb828b10eb754c7d1a04c1f00aa74ea789fa88d47b779bf3a016b734b89fe4d7f7baef176f3ba5a0930f7731538df60fc32e7142c300d8550dba3f8be2abc60f449d4d84cf1f2796f72d7c2e5f28549e0e47fe06ff19669d2a2ac48e80bfdf44269faca293c8ee7c1b21b9295c071aadd3cf6a9a4f77cccd0376f039540decfd9670fe9e65eb1b66923b50657654a4943d35dfde3c1dbe5f1d80f73165149f5bc05cd169a3bda48c935f1185f933e0339380413a7e868186dc695f68ea15f50d841bf167756389bd99068dbb1ad2431857ac013261dc7fd9444fb11c8b947a1ceb61d8790e3c53c3324f99613cd43fe295f391575c6384173b27b74e44ef42f20df651344663dc6fa6850ab1ccfaf8e661c900f401e76e782d86b353a3310900d2d68f4398c91c05a11783a65d1d48df7c841347d2f322f0b9086eff840a69614c31b49f819428d9c5de89d8cb0bc879060f8407d0c7e278ca8a5625bb28b720230bc366a23cb732d86130efdbbdd91175f3e99316deee142478d9b3221e686c3926c79283b949ba8f2c681e4613889829334603ecedc95e5b936b85888c38eb1193f2a105c809cf24fa24678a7f12dfbabc860f501222644faf9fd24601b2a0b11e5e8411601e2898309dee39ba88cd60ed8bd71dce82a2aafd0788c170e563462eb2953e263c089fa6c8d6298f8952e0212b6e38a39dadf85f3e5fff6efe6fa7135da4a7e2cbd304fb8cbd75bb77da9e0a53758b2dbcb0fdd8a3d94be7d3cb63835213f463a2776eee85c8372676092be9f9b82fbc3950dd5e58894283c580abcb20be2bdc0da6d2689d168249215488c1222971a3c3df0804b6dd613d606e074e5159f4a40fbcadccaa7da59f2641dc786c6c55b768d9b849a8c28552d0ada0f4bcd5e9aa46ee7b4cb880cf3ff7b526216218db308a33c900256930c63c1e07cf9211336df56520eddb5096e16b6291f95b36aa32a7cf7fcb9841fed668dbc0125264a69b700fafe1b832e30d7844e8a5796105f36db8f9f4530f70770abfc3f0944e2da1b70717fe10c8359c2572cad035cc6ec767a4c311823547d732c9f73f8372afd6aed585e96c7ba4f13871531114a21f5803198b720fbc5d8aee9da670a2a3d38965c2d285b38286a4634f6dfe1e32db99755fc306541944cd8b69b559a1cab883593518559847f5babb82892c7d6c9ddb1e3b2d1ca55cc50f95a3bc484456e3724a2f0ae81d9ba648d3691260b2c48c82c15c0538dad42e67a13fb6d698c6d7f9c995b85050ee7c98a646b49484c85f123f793ccb048f721da54b67fd7a71071763a65cd759ebfd45719a5a0befc5a1b878aec9eca6739e9f6b226ca83799f58485e4faffa7c361cb0a841008f5ea1af15863854164d9b0533f6d6c1a16a8b47d5d020869b9b40a67188d40dfd0ff935c1fa4f40761cccf846a97ed08984e35da830c36bf5877797b364238a980ad8825a08b19760003f91634b8c8efe9c914ad4e36adc2a3898e9966bb7fd40b836b39a1d72c30ce23c4e55dd76aba38ace7b1b1b7c222e6a34b54018de02899f74f9d0d10e2da11419e9218ef1f22ca84d31d157d2421e14ddb4627a41f00cf64268fdbec1bbf22750e78e47b68dd857c32f9dae72247595b6ade070a5d9dc6b182b814dea7d08833b1ee3686cca7d279d5f159acd91d8155b523b5a53c1933381bfce3c9b262be2e0fa1e9d594c9e6b1476d600ce5bf72a0ddaa4d84e13bfc64f7485437b9fb7de9c827c183d505ad592c07ca071a78b9b1339b54cc45901c39f0f911d1e87fa88a7f8dbad7711326a84bc6a32506818a32948bd17aa1772dd1226bf272d2a65f815bdef541da4f314d1537e41dd2b4648c8e5f1a9d10c033dc0550954caf90614b16b052c8d36aa5fb4bf97210f8f46f100087a821507aa6146677b3cfc51f4f9ea4b2893b2ce86b8f88c645ea54abf3217d8ce2c0d435b3be2c5bc60d4ae9ca6336292de5c4bac54d964709f399f5edaa755eb7fa1537046d4a663b796deabefcce70b0a3f09b002d3c992df05e944c723be362e542c5879fcb1ae2f3650d0910b3867e2db386b0d54474eee2c2eae0522c0d3a084c8d816415354b624e592ce11b0cb89e372f9904c8c51990c5c74ce0be1ced26a0bc601ced0b248cc2689a7e276ec137321e893218ac30011c86c1dfea08faf1e76515dd3a6edb88ed8343a4fea37e8b9dbc69697e725b4117afe9c89e7a5a2bf9aee866a04ba500015ff12a2ed623e9ad616c4cb1ad173cc8760d0bb81949a2739345017c84773f6ad3d561391936d3a64623722a956f126a81800cc70b42db8a54953644952a07fcbf24b10e700e649f633bd14442df76a804da3615c29feb52a7f1f12fe009207e67944fb1af5e1d417e7b92c4a9180c2b9083c510cb06376a470024ec52312c616d91cc25a3fdb3ac37d5df257b00fd39e1010011eaa0c9f95315484b01ee6cddf0da80f4cc084ef00b02a49302753b9edcfbfb286f9963ececa4ee333d30abd6f5210af357b5f431cab819b29b17186e7c1633e5a89f5fb5a451b5773bf9d3d9cebb5d0a011a113ee51a3c21dee01c923d2765a8ea44ec3fa96fcee88ca0ee96017a33600e050a5bba197a4120da68f1b5c1a893eb069bdc9d8057dd4cd0ee18d4d68c9e2e3a5142ef6180bea91e0b53177d669cb17f70498a27732e46fc76213abebe29e050db2ba757618197fcfcdff3eb4efdbae184eabfbbeb016cc1d45f8f4e002311fab82ad6b1f50746f24d41178c746f32a0628a80a72a3fd092e09ce8fb59e61c84841cf3f5743a6a73a2b74883153d70bd07ccb5ba66d598970f4166eb7da41d8c7fc99d4ba2b5a69cc10218357d90c0daa4878863c2113a105065d181bc05472ee74c3a04ebe6aa2ed6a87f3440045ce60c4e1b9781b3485c54336a8e8d112e12200cb07045834b8ebed3650698eae09118f59af6c7cb78e62f2e41f7931449ef56c98831c263b9841f90e51b2b9cbd0597a09dbfc7247a6341f69e72501df30f48309531d816e8ab4db5f806c08e7945fa3f4ea2e69e52dd9e6d4aff52863511fe3b8d2e71a002fa08c88ad22abfa06850d3cbf09e4c7f1d39cd5ba2835e092ace2f50743550fcc6a78dd83db48fde75adbffe23604b60c81f0f27da520c59dba7b14d8b490d1af9c4a9eaf14ffeb1436b842ad88222f7999fdbd60af467f369137642c5318149d07d47ae9e52df4974d131131c965dbc9553940ce94ddca6d06ea55dc130408f1566ee547f8cffe39ac58fe5c5c581b3b344f07cf1defac59bb1cf0a19c535a47733447437b6aadd469edd8c64b4b3d3330db7fd5078e405deac9c8718ff19e651c23e38bd1fdbec281cc9373c5c4ca7ff4f43eb9a7438e6d192ae312dff98d898835accc59a4235044e5c26470d649d03b8e4398e9027977d8cac4a494cd03dcf8aef9639cf8a7eff26160719ceba40ea2376884b87315661584c65241c3a9016412871e23a2b5397bf2bc99c14451a8c81be4f00c4a78c1af9f7c6c3553d0fdc5cee1711f49eee57e18c6862dd1f17b851263133da1d0742941a33b630a77fe3da23f700901a9a512ef57a354e16867738729061affdcc8c33a7254f5707434bc4a6d99f677fbfe8792e453f5ad319d9b5a6bbc67799d21582a39b5493da74231532c564d59d933c44a57755e91967c8c987d911a9123635ace780cd2b9949fb9433c4800ecd3e39e4acb8ed7ab40b6747403499216b99f4dda167e5904bc909c5a274cf1ddaa299632b060f5489761c4e6ac492f165eae065b1167a9b4f0cfb639e0d586baa74936d0e92d2ed3b882f6979d7b0eacc1d17cfad82b8483fa3409fe469de39c0e159f4d39d93d9c14db19746ff9b783b947ec6b5eac8cf30b1f9d3b9ca6e9e2402c3fd666ddbb031de821f031a0d33eccd1d99dbd2e62c3db2c117c0047c72992bd0d4834ad137bd740f4ed0bf6b66e832e2d84d71d1f949b0293b44c45b8bc0af5cbd6086a7f31f91ee325bffc20c4b7470d282a278f1f777b420c04a3670195ad56faacf63effef16efee96dab3b5e860f819cc16e8ea1593339e36082555e20508ddb944a3439ead88c9fec490c51f2de4ca88ec3091291704679c484019a5f21044505298c86780192a0b262a157d3391b6827cbb8e12039eba8fdfd3c2042ef688e88d0d06f95575ba18bedcfe36b41fff1e0162291d1b1bd3b59db169a2c860147ab6ee3b0b0cad701c6290146e18e8114c2e8fa20099a02b100eac057a1733ae5bb5d63ea54ca3ecfb7886184e0642c58938d988d0d89ccb23701c3601b8fdd64df30fb32dd2d4a1515e31cc155c458a20372be0036e2b6684356161d1eef15148aec317dc61718ac31ac4174a90fc6f72df5d113c21a1c189ea9ff6c6187e8c30b73574f1ae2289e397ba0ff508431e33f416a0c537edf8381fd63974ad4a057189d882d24f377f684fb92c38b75a22c064b46fbfb1037344567dcfb108ff368cc39f799e1d13156e36915a30b2705cb85cfc9ce4bcd3064534154dbe8daa2d7e17908e35927ead0d323ba89dff0f1721c11a40c44151c907b60aae5cd9c2c344a52153a29fc55eadccd89a9abf848aac7e7b8a9b9bc921c215a65086f4b3e7fe73a5f84848463a5473de6c527235f4b9c402ed7bc50c74891118e5a6cfebb17b7ed7d9c64e55a4e9341e0dd71530ac6366002df932b3b25286dd5ebd527f9d53ae3ad28f9e46a62db91b197b248653f09589a18c035adb0d8d26fd977713df6f7c79e65a33ad1eabca32d98aeb9a94e18d731ed719c81a6712bc6eef1aeafa000e5cd5c27281f4e7efbd8cfa22321dce5ec72d7924e34b5143bb173d5de670c74546ad5305a67449c2dc4c4f3de3708025debfbe30f9a3b30ba0bd783e389022042b9555aabd0b3cf547955b97c9fda41448ef9c234aedde9b332b49b29b1d4be503f0a455aed7db4e584e6b2cc5901f39fd419af0e5ea8ba0f2ef6f1b9342d68a328d89e67203d94612534b80cf446eaf835db844aad599cf44a3d18bce77b40b7aeb7436cafc1eda4e28cafc333953126ec8a7c0c692a4c2bc6743c98f196cb9bee2f3b78b1aab99a12827b395feb7630e55d6c8197841f2c9fe8ab4db38c436b41725d7b8237d9ba9aecb592dd72424f8f5d9ae5a4e07789a360f60f3c943a7dcba628443e953d004904894aa0061b2ff48e16b012a200899ae8f66e1145923542978da5f904e60193fdd9df355d0553fca74e57ab1253fea0ffbb7aebcbb273f1bf1cbb50ea31dd7f74d3a5fd2fdc8b9d4be6d65747e099b014b922300d246632b10fa39c29578c31014dd2a19a5ae40492a933b3575488147acb89af90e086cf92a054223cb3e7b0a627ca7ae1c12a9309e40e02fd0a277b20de73f7d5849e0b0527d244099123e44ad698598b34ab4c5ee862a3dbc936a49feb3ae18c21308c95d70a38e921f726628232a1598add31c3af4207edffdfda2191217a1b1c21a04132ac049f6a39b625cab52b5416c8f057ef2ff6ff6f718266c50edd3fdee2a1f415f48e96ef79af969e10e146e939655181d625bf1361aa0097f2590e4923596c0c647b917865b09a00bc3a08392bc619aad13cf97ffbf3d97dfca39bedc77abcdfcfde605d89f3bf103611afb670177a72cc08cb42d5920c4eb87b34ec34a0c2400eabc4afd214016216da41021c29d772607e6ddae2efb970a8b2dfb367e2f7e9a87f768153987219a41a0c0de466c919989d7c9273b2b7d6dca041b1e7e7073d01019c62029a80154b5d5012564d07f696196647ec4b8abf18e9aef500da2fc89b89e68d6c57be8a1369b7e632e7eb7de33600fad7a82021c5906ac66710c0011689748e49803221687491e23deb787acd0e570ebfe2aef55437945388167b49935bca94524a01a60468046e04a9d615ac07a4558423535b51f8cc6e6d5a51a8e6cc8d55ad8d696f78bb211521bbcdd91c7ee99619666d64d626c539240e7ed126368aa4845ae5c01bc51bcbfc8d37171fc9af41f3997670cb7c2bb443bcf176b15af0c6cfc26a31f9594767875f3020263f4761333967f20eed03bcf1a7c044766c33c4372a1e7f652d6c93a941537729600222535b5338990398ea3241ce8cec3c9349addaadaa106899ab7a4f9b78ba84816c13fbb340933f851c485eb5e310bfe3553ffc18de78c5cccffcdd4f3f7bfaf469ab7eb7ba36ebf08a5bd879464f788005163008483c79029fbb3fe702fb91c40a2bfcc1e7eecfb9a0c1100d7c99792502fdef9fa6b335665e776666deeef79a775759d777f0da4111569125535d372c204c75d110347788ab045d4c7595c0893231d545830ae683dfcd648759aaaaa4d5e1ad21cb8a88f443886c53e54bad61a4682b281a1bd9202a2b1e4590d45024890d423de044526c1f311022938cb1233fd0842158453061628a206060091f7230b41304a0273613e3232bfebee21a1b99ec9383119595dc9efef5e9dffeed9f519a28b0a0bbe8f70e4dea3b64799607c5888e239752ec4e4906945cbca54bc9a554e2591e64a7acf72363b415f38046362cc1b3c40e403b30c184be5f811073777777777787d873777fef3d2c368c3ee931466981e743f9073c949ed1447a1dfd33893ebe4731c12799e2c7b46984c2c29bff8c27b25f73defc7906160c310c7b88bd88418861ef3d77e8fefc2990108a20b5213c2d9e289260c2043e777fce85896536a634ffe4dd8cd9f1f9d4b28127803f727c054e33fac4ecefb4d9b135a32b04c9ba344476d026f379400c13bfb9f9df0eb73054419b8c256f3a7ba507fb41efee767787ee5948fe07dd7ddf83d0ddbb5fb7b763467077f7b8442a6fce1b0c5245cb0927b61f0180369e4e607ecd24c9e421b3fbcd58e181ec1949e08d46d5a3ea794ca3f251f9bca73af2d22d8dca47d5a3ea51f5a88ea8582a1a158d8af52a1f8629a98c2c0a8dca88aa47d5a32252a2511951451b7e62fc7881dd90441043417c27c9e0cf5623743c5ed45620f0c5845af7aad1e020a1c141a28b02212bd4687090f0a6f3c8a4c13932592d25bce9a4c1a1c1793549697094301266350d0eebc8111f4983c322d1e01cb981088b483789e4a41aa5c08b0e5f999474857edd05400d008a0091167d76741f762f69b7748d8c518ba51e3dc42ffd330d237ae86f88e9f53c23bc71bf0a43b2d3d70be2970ec29cd93a30871ba07a191537207e3fbc61a83d9db7f378ba85bda6db5b4589122c2562f08a41bbbbbbbbbbcb218450797b3cbcf17097bbbbb743a8edcfbbdbfb8b4c99e4cc0c460b3adfb376313326b1f388a4dd313b1978be12a95b59552184505d9b955555555bd9ab60e9780dfd08c197bb0e2ed5d02990137ee9944906e08b88b9af03e8f5120293520c0066e2ca11b163d0903764f37abd5eaf57c3c8d7eb1555904276f0158566a7404838888890921f6864c950139b230fc95c254e62a130f1849321217434d68c1a4bfd1083e08b1b04c306142662bdbac58dd5681401a9ee0196e2940fb2d320a82af56ffd2215b8e25616b2833cd90fbfbcef34a8f57cf0a994801caf80c9dfcdf82eb5603bcd6cff57c80ef2bc0605aa92c4a2543b7127edeeee6e6d6d55fd777ffe218445acbbbb1fb363eeddcd5c8c4341846abf0ad9a26fafed0e1f0685f0c0a9aaaa6ab15912e96305280859555555e905c6838c38aaaaaaaacccdccd520a308d093065257555555555555d527acd9cccdcccd39a8fa113d6c84880d9302654dc5c84801c770eaeaeafa541548f54755558558ac60b182c58a0cc6777777f7d2e08d05a50596a99cd24770161fe4a60cadb290bf54551da0182a85da522914874271a966544a8d78f5699f1f3f6e1a1c3f7edc8919c535c77c3ad9b05e4fdcbe3e201a3ea650b55bbbbbb5311d84a8aaea11a08d51a652aa9c728949d9486d36628cd1462a26958ab191b271eab6898a41d99841a552a994eab0abec7040af081b847e645bacfc005f651e901792b31133839a719733311b63636626b5bbbcbba51d26ef0ab6782337ef6ddffde16088dd1765cc8d991a6d79e9955ea9e6466be6468df74c8d8d560d8eee52c3ccb44aa556090b245a2d16dc644a94e097abe020f57943b9beb7b7bbabb7ae0e524fb0e1890f2fc010c30b776067bf0a0eb25f559fb5937e779acfaaa9aa6add69575fd999e3dedec591e302fbd3eda7131645266f143b5d6444ac6640830a0d525ffaa061e54d2a3b72979725ff2eefb69ef460f2a9c8154cbca4177237d4893bf9f3f7de09c59d381715482f1c0a2b84966dc4cceceeee6ec7d89889994901e978018618846c84083984906b17082184908b81fe9c8b7154c7bd1043c7edf3937c2cd12a41a43fd46a27deb8d37e6f737333eac46df7896b171a2feece7a6a09059d4e4c76a30b8d53afe6826a97de47f1e3a7271717d4f6aa617e17179714275cfea6bb3f168103a2f7fb99b3f15ebf7edd9d02d932a898ad2c17f8dcefdfd47bdc7393cbe3b854cc732e86eb17676ee62743cc662057024fa6ad3fc5a822451975c8488a9124a3ccb989417476a28e1887682d69cbdea20964fff3e69a1449d2a3e41778e38f414243dded1fc33d1fd73031b68478305b8ade65f9cce685d99e6d4999d90c1cb941f86c1666f7ba66c718d9885093c80d21099a76aa2421dfef8d1a88b9142183a06927a3c4ef083f88179225fca2ad277a5896134cbaf582a25b4ebcfa67f636c946104208e12b9229d2ba1874a3c6a43bc8f7fbfd3ad6086fed6f359fedd90bf0d6ededba6ee4f9b4c317aa90fd30f8bf7eefbdb73ddad2daaec917e9044a0079a78694b158c2d140f9333ea53a7ed738de76dffdd565779ddbe5e752db31ba3a6058ed5d5e8e13c2e9979797b95595959577797779736077fccd31e5884c98760365378c46a8e1295325094de163a4904611853fe161c85029699d0e296f32b414b46e6f4ed054b44e85a4d6ad2a25721ab783f45f9dd437c75b8c7fff0679e9d7dd1f93e23ca6b918766d77aad8203d10e1971f7777e738ae75c50b38ae47058e46847e782fd7d38c136fdc09fbc7fd84cf188671bc9dfa4fd87b276e3b1aa7939011b3b54ef6108c252854a12c55f15f1b1b1b1b968cbe9b4e317677bf7dede7666e5de163b6e6379df93e0dc5db8a43a5505b2ac61853280e85e252a843e6496b740d7d1409a80cfc1f1e0d2b53a4b505c772ae8b64fa0d997fe6266dd33666ea7e623bab632a3f34f1986a92e1cda7a5745804ccd0da22b27e1e4f2412692ba3d780c82508b902018d794c3575d1653666ea3e2032753e554dfed1c46362d0bf4d8f47dc9dc2fdc49b3b377cf0b5464f974276a8e665416156735c00a535b0f77f000040454564a2a134bc773265804ced4c5fcdf724539673c3db7b4d9e408e86dec7748c520ea1e61b0dc91d6e3249914422bd34c130a5c4940ea99db9845f485990f93e33d9e02dc624d9e0ed91b418de9e8a7c1a0c93f24fdfa3b814bf90fea57ce7325f8a06b2c7b0d40ef61105050505253375216832b335752f7a1e73d947a4a5748826d7b2154441f6ba3ce6ae93e947189a8be200ed6220cd1878eb7f81b7ce3ed35848203b961f0e74ab96668e1e699db2b25169a4c409ca7771f4aa3030524c266ec23037b8a57f341ab5131c4fe70826e5fb591806c6f76f0c231fe53b2e6a0ba7685235332665260d88fef198704627e95bd049d25c82903f49cfcf638a4c9d0c73e7e83353f7193645a61986cc6892e14d4c6b2a1601ef631aba94bb82403479d9402504d0a8b9898d103e4a64748c100507f610833f82effdc8045f64c251ea96c6317ac81204c9bf322293cabcf78b995486355d99d819eff2330c84fab5bf7eeff97baf5fbff6eedfdfe5dde50552469db813333333ef2ef7767737ef0bf2e22c54060e45b68514b223cd550db2cbbbcbab52a5717241b9b03eca5d512e27179713ca05b5bbbbbbbbbcbbbc45b870a8146a4bc518630ab5282e854aa1b845a150bc3f500883e16df64ca618a467eac9b176b1a16c1fd7bbbbbbbbaa0c720cb348ac6c6c6c467023c70b4eb4e6ea92b9bb1183d0a4ba2f32f9729d9954c677975399f514f3abc6c5b0066167666ee6dd1dde767986ecf2eef2f6644096351b8bfb56fc79c8c46feca65bfa4f3b8ae0c05ef43bb28f38464fd2768c5ea4ed106131dbd5abcc484662da0afcec3b19b515a8ad5820fe28c31e6a3c645446a4adb8ca0d92bb79573acffb01defa57a773744bebac82acf639af4eb3b6fdbb0ab2b3377bb3eafe991db165451d15d218567be1ade8397b7ec992263fb9700db3302aa3bd57184830caf8c283ef416892f1298c619b2c69b2bbbb6fe18bdc7291dbc883aa67d4b2316dc505ec59db550b8bbe088ef8d86318f67e07f638b017693bbeb17f1aa77283dcef186e58b530a8666cf6666d5eaf0dc36c73c0a6d32e6a31a4c5af8d8d500eb3b50844311ee4dccf56fc77fa9e5cde6bb7abbbaaabaabaabbb3bc413821da52c95bed397cef6d0aa5db5a0a619385202355aa3270b710893358ac9ec81fef78fa70719bf94ad3233cb288e9a1cfaead7ad396a70bc72b46a4d0e7dd998b9f1352f184251a8261125caef7b900a695cc3d06469a475cf7573cdf93bd7302ac36205ca7858fb15b6aaaaaafa73ca2cec8f4c9c480a664d8e48bcde1b76ab7227d4e984e24e9c2ae14ff8a807d9163a9476786946848f86ddaaadaada292e0689cb965e5a559520515556e6ee6ed6cf54bf03c1298b1bc84dd9625503bd52ba9cecfe9263941e2000f8eda61695dced0bb9df9af7e80a7e8346e24d278a2098e5a0ef41f09a2d99c8ee66d9f7d2036fbed76258f1e61fe8c6d048d88eec48a4522986af1159777777777777b77febb7ebeb02ee532e18483f7f3ec4898e6a5b13310146ac7d09fa80e70c9700a111f23d24e015485c91b5aa7621dd93a82a15498cc8fcb95e9412d9af31a4fcde601324698b2c25aec062347db55553b9d04dbf47a02f3ba4ba62d592261886b5c64b732942f22b88c9df6d54bdb8b88923d08d5f554d569816939f0df7602ffdeed9a88e6c846e8084cf0edcb5611341276cac4712eb247bcfc9fb4112fd4582c37818f8bb2b427265b24e964e48d7e7cfda6504bcdbfd20d9095fb8fb6abaae84c12260e627fa54277ca1cc2d08607a8f1058ac90af9f4a6bc0e777fe07c48978405d83be602a6e95d6e887e174ce646666666666e60764c8ec50748050562612104a1015bfa000d18d9f99999999993985b52c02666666ac072507f319ad30160968b45a16c10ab6da0048807c86b0e0a2881399ae3479e4400848131e1c86b0030fea44a6c760fac72c997e011a84c839e24789902032205862084d6441030e846e64dcdd7b781b1961b1420e608a7e7405951fd18fd618c0e419c3a31a7482a6ea0c41a707d285a36476a4c93848a6ba708ce80f99eac2d1998ab39aa3a92e1c13746f888ecd0049c82e53c9b093a493ade6663b250f9aec5373237af8fd1ae30ca28f9acfdc7701838f693c0db32e44521299692b38b087dd63add488347e177e10313333673cddb2adb1deca7b1e801e66e62a54939999f934bbf7f3bc5ff71806fc58aff59a7889a0b6e2429c41f4f15546f4d330236dc5056c06085d1069d94bcb58ddb2adb90fb31f288409e1652d5c408476971b08900b08144fb880f0e002f2c30544e55a0db95652b856af235c2b1fd78a886be582160f5eaed50a5cab1faed58deb8790eb07143e40a206ae1f3370fd7081eb070eae1f2570f9d8c2e5a30a978f285c3e7e5c3e8e70f928e2f2a102978f1c578f2e90e0eae184abc712ae1e47b87a1471f56881ab87ca9523e4ca91e209d60a155299c06962062008e952841cb1de0f4b13b934a3e90f4ddb7ca6de1981d1f4024c209c26efe707a7098e139c20fd19b18a90c1d021182c32063bc01fc494109520128d329244d156554d494169c1e75bc108800ee43e0c9407c8a95d4976cb92ca09241450b666468163c44821854d01851830620a3264c88881c2093264a848193264c0909182224306291b8922262385e4c3eaba70b41072e138993178dbdf710951b984d8b86ce8c195c3125c3938e921bd442199deaa5b5e8f0a32e8163df61de3af48a5e21791ce107e193d1dde5e4e26fa7dc97e455a10def6e5f0b6a2a7e26d3fa5095255afa797f071e51071e5ecb87282b868c0010a457e8931f555908107c5770cdb37f44cf12d016aa2d9834a7883ac0e3631e1cb86e967fec641fafed676f49334a992f42524bcc157ad2341166fd0002dd96d3facf7d39ab2a62d9f0d2989e4efdecf0b8a7045bba5ff87d6e0ab5be02e60e74e85ac19df4f8c302c360fe8397943daa2a2353b9833e1cf84f0753121b4812ab89af0c917bf743490f00bb682091ff6c09a180c66079be08742718b5650d05c616a0b094966a6fc92da9a62c9ec4e4db4a6085292ad2972a4ff6b18d75626a0325020b1c3099c6001840c1f40484665fcf9772ba90889993971ad29ba38b5901098e4a8c4adfaa312aa190980a0006316000018080885c2019158300c1459550f1400106b8442664c2e9a4943510c05410e830c328020620801c010020c526688ac16f1df8321c46ec397074da2e8ab4872d6d5347566f61778ab2945cd2597fc4d79d05c0321d3f8e04754e77bd2cba3ec236b47bb07a79144cf2b69b59244d8486a8bb21fbcd512d534a07265c283f86025d5cc40fb449449131b92e2b3284e4e9b4e26f3a79220bb6dbe82ad28ea4545412cc7280b8c4f13e0e9a8e4184fb2ae14638f6bc5304cf5bbd97c4e6373e8992f76c0eac112887f0167fadb5e9f52bde6219e9e174e3c2f09cb57a3144bcd63d75a35c8a94f6c401c8cc07ec47ef329d3cb28fdc17079df1920fca3e7375aba61e2cbcc83b9667bf9539856e1260a0b28daeb682f6fd09090f9a23b7b8eaf1a23f97a4d769535b30d73528056b78318a11bd83838f8846ccd92bacf0d83defaaf088af76207b2213447bd7fe48050547b68280b84bae6039efa11321dde31e0d34be140c024021f07140b89f83a7c5dcb5ed7bf28e37b7809485a26d1470ed83342ff001fc6659c3d432013e38484dcddf5fde62cf957d40c602f9f3b24a5fec8ec5a2900beeb20d5387d16e1532d625d49c3196ca9422eb33c64b84ca1fe092d2d5e88bdc723f5df37ff49e63fcd1600c08ac543d55f3f3f3978a738adaae74e7a8fd7d1b7e1905386504a8538213a2c7e7eedefb36660d202d044877e6906a88a68172509fa30f8a14b1d0c170c5b5945df1a3842061cd2115dccd2ca8e457524086b3bc75c32f40d196ecc1d36828a1288b45bb270606dc8ca550c6ced940330c2ad02d01477ac7bbbc6cb8e01ffddc9cb7823ccb67ea386325791341eadc153adc64d0750dec341d1c6aa46b42c991b3c65a443b11274e8733fe6f0f5709980fba46ea49f3313bb962560f5b9376ad7310764a4b8777c583467ab0131191760b6067fde7e45fffaf59a60d2928a8144df6e9b74295d7d2f6b6edb9e02dc1e9c51295a50a458d06d23c44fd7ed577447981deb9c90bafad9af9922781c6147fc38bf42a4542c5f010018dd937bc5e5795b248fd70fc3e91501480900ddbc78d7ed0d3557b765925db37cb0c900870a4f030fe63d6cc8728383716dc22568ad199f081ba3f7d0d023839bedda3216844e2585efb7f1130693cad127161124eba575b72ea273475e4accbcca1589ad9fbc333bc73983c0781ef79b04d321db9cb8a741ca4da02673d079688b8a0cd7262c5ab22da445811125f831fb574f485dbc383c83d535198c1098804f3dbb592a0caf86eea4b45d946cfee2a58ff9de7be224d5c0d361bc849b59eb93e4afc6e45bc2ad2d8c8aef8179136b579dc21ee480329744ecbd3a4a28812cefd1ea241ce187426190900b10ff1180ccf09581bcb0c731b585ea5a9cf0010ecdecb055e1a52bb527ccec30e1b7d28d0038e557e37f41ff8d921126e19efd54fff4aefa026ab730802ce5e8732c1e54f9e2af34cde88ab021b6a2a508354d705c0ecdf66f3afc438e9cfad8b3a5b058af94ab56e5060e1bc601fe2f0c81a3324bedf3c5614faa3b66f0f827f886a2563c69e02a788ea0929fcffae612c459e5aef706291fba8d0eef0d877889ac3760746c06f5c801d716fa2f9ac1ed2dfc34fd8aca705520a35b4fe3aeb54e804e14afbaa9411624a9522605dd3709fb84e04440b183ef08d692368d49b92596c2802ca07b272e7ca4262c289b4385da703429b07b66bb254d0253176c12737adb90e29844e5d0834202736093c468252a492919f8559f7bef66c20afca6d339f6808e7162aa386866a87214a9a53e3c2ed03b1634b8993d4aacc0355d8e140ae41084719b4c4baa8f48cd592497dfbb3fd0b271d53916587b2fb3998417aaabf308edc5c3493c70b34380e7a0f42232937ec701a363e6b5a261e52ef4924d57afd4966016e9638a2f50f975e65201d4e35910ec2830d1f18190ace0b5298dcf3a61db1b13cfe417db4be9c1dcb59ee4d3d0ad86f5ccd4eb658622a09ec5065d45575f560b7d1b8bd907fbd61245f90d09546b9682897b59b1d2def3da02e1b23ec384c803b57881d9d8ae606ac383e4db269bf2977acbbb2efeab52307823116facad490704482ee975c150a6c7a481bd0b6ba7731faa27095051ecfa104a64ac35e730ba628e32f7c5f06d8ef67ec9fde070c13b04fe520548b7b1dbdd8669f19fcc5b7bd467fa3900c9d78fc82f25e372001a164d67bc610fe6c6a1380601ae9d1a1f70ea939a5fe74e221d90a6fbd6f529e09c874dd83afc663a591c50ab155be2cd599a66c9b1e1171254304d9b862c82b2a7300cd37d2c596e69ea25eb6740edb964afbad27dcd4c378a3f8d71a335d2a2ac183d0eeb43d7efec543ab58f7a4542bc53f9714ac8ff32c4955b455c413eab03c56ddedaca8f2f59540ed8862ad9a4cd53aa29c55d955b4372e5cf399cd4bc8b573b8c03884123925ce89a4ed9d58b077d5c78a9da1fbb704e72e1ef0cd700176ff1bce4ca3e2f567c31b11c5d26771ddf31613d4e83a25f26108722b7741093e2b0e4206c68849ab68f44c6c11164dbb044be2daf2333b1cb8a782bca4b16715e5610da242d936eb29700a25ea43d6e30cdc2dd9189beb48840515fd2106d115cbafec5068c435e871d5ac08307fba6e0cb35c631c939f05abcc9d6b282f1eb9cc85d81155fa47747d20666480e728556fba61df0535843a864366c4aabcd9a41f3df94124066c01f186fbfaa09e13b84848b01e7fc0140a026583ce91cad1591cad4fbf407d204c65eda721b27bccbb9d51b28e50629bd0240617f45e542dda2bda2c0a50240b852e66f60fe2f1ce6f7581d8c63a8f4fbfe59c3498006909287b088f2a19afdeeb6405daec9f4fd8e1af445dfbeb0b42e3cadfdfef37ee450ea5a52f41f65302a17223f0a00cd6122906b2dd2acad7bb01d049a42839374c4834489f0e468e759cd5a81106ead8e04f3c63993c7a1b2587caa406f31f0782fa8ce108ba1b91e1035b0a7612e8841072a3f092c543f94a8dc8cf7b373ac4bd10aa20518a442969f638289836f746ef60c53a6c3698c814830abbeda981dbc58e8071054a243b1bd8d7279ba8b1ec1a34d8d43d46a94f1841d45d9f9ffbfb4d7fe1d98956e77f26501167579f785dadcde8df3508b45ca50f20394516446e3e88ef2e25f54ae0c565f2b59510bdf19dfcd881fe37b817bd61e8bf7ac392c8318321410d5c1a44bb9945d0d34324cc4ff3466bf6b57dd067664c88fc38814df7e78a4c43bb3047034015308b56b149113fdd01e708cb3e2518e2e458b62c43926e11132109e1fe64cc7d76b846416c6ab41ee2b2c94d149bc7395b3c82cbede95bea6059ada11a038018c68b625b3e8a133653ab30bda3d5f58f4ef4a0a3a2c407974f928cd457bf485fc15b2d865805f2fbc1b13b0af370ffe7fd917f0f04c89ac6425d0b857e49242084539258206761a272d4bdaa4a8a614cc0a589776195294797ad9dcd6099f6f125f8753adf7e4916ca72ddf389e9e9b63179d721f88820c6200c7d08689f71a51b4b23febf32b9b382a2da4d2e73af7d64f54283e4da3725938d8887666cae353a7db27c8e59a131f9b03ff861dcd01e87bf82eca78df352373cab9d9758c3b9dc5a720579be497147f06c54d7eca8f2412687649b58a8d2e9a6a8e34b3d5237961fd8600e0c60b62d0c465c36bc9fb86b6d6dd9b43a43ae4734e71f6277644e2331844f905c9ff28fd3834f435e6414bcde7fd21ce56be2a1fde5199451d5c979ac699da44f006a2c59bcb0ec69f4809c5a082b9cd4dd6d519d9807aa42d7176c5b3967496d044ac8dcbe845f30965c266c3c956c6d243743f12346328616d74720d9155cc4657c346c1943327c2daa0121cc7218540cf6dae9480271fd1bddebf910d960beabdbc1403cff521e06861309d5abdda695e9b17f5b9da04ca26d9585cedabbdd53ec829ec2b2c53fc2ef1d2c8d8f94d6961df44875f55e10799c9a7fc0644057adf5bd2d96c19bfc087167e2dbde137951a07111bf7e2dbf8e312119947291ccd05f1ff9b38d3eb3bbb5d1152cfde777dc683a6ced40159fa33d7513130a85dc6a154e7586315cfc1c235df0d7ef7f92b5aab7a7fd543243d82c8ca850e704d9730c5f703acd52092a5529e2e2f2f2234e7e5c5bddcdcaa6800b92d1f38d87e9e86d7eb1f11a690ef4245cb4ec7f5410aa03c8f883bebd2e2f0a274556e9aeac5ad9ad097fc50dabce2c092633e22f592b408bb8c302bce7c45623733f795140dbbed09e08c5e95444bd03c230488abce3320f65349d446d3800112cca59942612cdaee73bff5a0d4424542a9bdc3f5175325ab90bc9150dc1a0eef2836e944b83ba0587b6339c321df5cdf4bd7544bfd4b2588a29d59510dddc094d473bd9659edda62f28719351c64072867933a8a25131497257acf9a6448e39a5d04438baba230d7a98b465805854f51faa27f8848a15cfe22be5ea20a49b83d2ee30a3f4e46792d0ba83dded86dac5fce087df4c29d0dbe34eafc280a8ad573b75b3229f7800c9d854ba2b63bc9bbaf5c4e4a580c9b894f62ee0a846618a823b704a88cbfa63f39f4ff14f40c4a0112e49820223b152b5a0206bb05d50c9c3407e807ff35bd57f1909931d91443cb7f9f01f2a0ed9c697c00a51e0118f64d914d80e22c774c45da573294892eef7f835f4ec60cc5b21c7456e84429e0d4c5f32900f5564be6aa329e9fbc29654da8890abf8c2b3579cb9e3f51877b5f6365e4b9ffb5ed7954070b8cfdaa84aafaf33354455c5ff12510d034aa3d4091e95f254c6d81bd7db559ad574488e676792b2fa6b139641b8a926c620bea68b30ee2527ef715475e4ab8d5d9f3ba0af718089705d7948199c87efb2fde624f833decbb118271218b1f56bc7c4c438522ee1ba899464b9eae989203a9b9792d859801937b98f4ff757e099a0dcf55223e91269cb2e2671474f9e1f8e35e2ab24eef44feeb5ef55d883d77303141ea2de6a34e56edb19c307035b3e654166f2ebd7573b90c6389ca7ddddd187037a0c7f9ab91f6e205d4b05b26c525fb6175edc2ebdfa6d9227e1f930555b69a4d97cc1424d897a9f91cb837e04aafeb99e55b617a6d03dfb9b0117c550dbac9569c79b60d4c630904c114f1f24d54a3574bf3cad9a050aed318cc0f18d60f7734be3081b0308e436a1d6e6e42e47803647957a03918b28ac640a6b881dc09cb03d946d0c069fae4923b55d3075c73da89bc9a86a5c94f0ee43da77fce621f0d14feac5d163f782818f9c45cfd7ebe25b7e69ebe8dc25bd8693c998ec3c7acbb18b666d20a4aa9c3c97249cbac06701d0b1cb515953d5fb475569aba42067dcb1231b922e0548f9474b657f8a6a926a49e14a349acaa197666189d39a90839a967b62c95f864769cb5e04c1e59fbde7eaa711f521f96712a4b3e6e526af8ee42ac51324e8d944a9612f1543cfa894177187a780976bf405d2222274ab24f0063778f45ec75940cf7ec69aea5189a35dc455f8c97246aeb90e763310a77b1f8a9652445471e3db7f00b281595802a9748491bf9d2b0e00cd5a6e72b2191c31e9fef7e357ee7c2d4e0dee8e62bbd88b712ca6964595635982a5dd4a649c02bc6f0b040927cce1e7df13057d72ee218289c009b1c58a7aa38d032fff5044a202a6a141a001e06adae803900b768ec261fc0b46b614fcfbad248d5583e66a46a0bb4e15410e10913be81ed0c5575b2114ac6998564e6aba430362a7ec03626a7773edcb8e52c24f4351c346ee698831fd94f7664e2c83e1030b6e63a32154c4940e6eeffbf6f16354a44e530a28c78fdfd6a3623f333b42b29af42ae7a1d6615e0529eb887ab508e19275d352ac85ed080e8a7f892df400863a0b78e82a8056b048dc5312360a6c440e2bc90c2d569a3d75e73712062a01bbfd158d2c43d8354c2e6939c8fd66ece4600e9d55860c48bbb197d0e20c7c1eec4e07edd738175507d7b401a824dcb8d33e27949f05af01206027e42af2edf7a86bfc15c1908c1f19c1273573029e42386717209ce73c1e64a4a7d2f5ac3c7a4ef61a9c379088f8f8514ed0a1723ec6bc1241aed5f2fcdbb333259888724ecb7385c2818bd1809f8c57f57f339ef39a4a3fec67fc74d52456d55570433d231b5c7bff98bf98818c41ad691cb56005149e4064d3478c80a7404ed68583809b02940ee9a420c1cc536e448b190e950ee18a17d9335f0b03b034d6c35056f0266c32ec8f2b1e37160b04193a411a48bdaa4e572d375104c872bc03e7fafd8bc23663a85502757b2e9748761afb791e56fdc932aae20b189706601196b0ac89b975534840d464f8bc755435db60805dd74cc8a99ad176338a8da0ef497c4f91e410fc7a0d94584a6153d85db820a909ab51b132da067d594618a3874e06213a51dc140daac6c4a05961db61d10c96ee39e33ad7e28ebb8f31e5e28ba0b2bba88470a189216b3167905fc96d31c6f41a0ebd714baeec6190369080fdb5aa38f5b0d94b785e9e13a624485bf71939d18ccfc8896a810f4de4444a0418bbb154477cd42d0d86557d50594b21a56d20872101c341822672943a24706a1d610b5d5a3ee3c6d34aee10c36b190b33f05a9a7bf24b252f5c1bb81067d10494ff5010c063fb00f18afb4712b64ec31157ad373a103fcfa5449a183ffff9ecd5e327655d9a2ea00a43f57fd7b79ff67556262353e10afcb93da1d054a7fafb57f8f5352970bd9110eb6f5b68948521ba03bdf73d7f7adadbc66e9540a5648cd3207dce672657c5765ff66234a6a2f5314f23a9258e3a09542aec4b56acfa13f5f1e14b04b09d47a48732b8b9530191cf4aed4c28cf098dbfef00dd9cb12896602c418c05a75b60581ee56a6e016ad9b1ce660b824dac5e4e62382c9d2e8462e6844b5a63ea91dc9406b704ea1ba463744144b7d2885f0ef728a72e408620da17b7f7d52f98522f9dcc000a1f1800aa93554645de8d83d2f04d4e2acac519bc2a4b43cb7c8b9568a8bcb9f802cbe097611858a73e23e437b9abd885ea16de172bfc151cbfab1c7d2756c062db0e95e1967744b60d71b8dde37072859ef2486aece09d96b4aacb7a19af730233fa1581108867c5109ccade7f8ed53d6c20446b95fd244d22155b86be1b03f916242655a2a6c62343723074e6a63d5bcc0709e8cf9fa66ac8d9451c26f0b6cd233ca334bcfcb0b50b3142fb3ce82c8b304fb65ecf0ec37cf3ae22864b0a58366d86157b4ed0d41c6cf082add18ccf38872633209cfef49265263ad949452a34d93bc5bc92e4a7f29dea0e3015054c79a403f26c96ecc9daaf00133e96f26f29c843c7b861499b054b0f02648c8fb890586cab04285289ac6c13249e3d00070a99635d57a7e30214bef47ef099623e890c32f270d38d2d356ddebc0e42a144538859a85631a65e7b28192d2741ff1154bbd446233a8d143f644d2627b00239211a82bd697ac389e34aa535eea14ca9809ef56551b3c8ab99190d8287bb7c3d69a00e029d4f0a336032e6b332cd747da9d004b3fc1bec75330b530ef617b8925632b595a0ceb4c2b9dadb8953644166ff1d3e106bc0188688e26cdeb0255c181183524937762759203f3c6907fee3f22527802204974fcd537cece4aca9ad50f0572f7fc78f503dabb6a6d82941d883d093716a4bb330dc188d4064536282d46f052bf306b8b340b0436c4cc2a507b022a1bef60407c9a3d6013eb5746e16970190ea49da79714f917b33f7152d08ac6c099acc4a6ab11f9ec24d2b663a3615d29998a155c5de777544477eab28dc32f1ea071b0d7c9c09ce13261514e71732625f74c79c456901d8b0b4b222c4ebe57e11155dfa407100b82c35a26162316bbc1796d032f5e9e99175bd1decc3e366ca9f2972708ce490c6d300be34553d797071018de3d6ee49e27a92e0caed0f1f4e032f756ef0404c80c1ce2dee695993219b2150cc2c57d700e42ae5eab75103ede3b8623ffbcf7124d4b11fcbc359528aa586569b62aa51bb3a6f9f575e95bf0ba7730e73281aae8162d1f6028e1e29cb42e9554b7f8067fc3499541f85926607c322c089c93f52a93697fdcc84f73924d2fa5439f34445d8fc1d0995accac81f704c882438bf21ca3531360836ef0629bda9b31dc45ef727985ba8d75e7bfc4bc256fbda1de609602eb4cf2012d163c220c2378c7f5872a857cb4d7e2ce66463fc4b40e3c24250c01cb00feade8b3ff2ad892557005264b9c539ce29fa600e9e8e449e92458fc52d5d1b83a5b3cc01a60cc31460100afdce3477257a25b5276b21eb21d5c0f39e27a707923d7a9dfaa8d6a5464c6edd00e07bd071fc3ab6c3d046188a150d1fc7a5c877ae0d3971ea1b9cdc04545c3c15e1652152e6f8d6df263095694668b311fa30e009a48c9802a12bd35a7ad0e2f12cd81e7b18775eebbf9266ba372d3b13d34b0ae4c1ce5fa305a47d8dc2ad3715e92de891bc1f7d9e31e79e0b9b3c6ddf83da415a35ffee6f7028bfc2b78f8f1e17b108cc58363fbf994071e42d3059d19fbae17dd8c2f77cdf7561b97850c74d943b9dcb84fe3e8222c1117167e16e2c009d946081d0616b233c592a57492c1ee722ca0080e84d3f359b59616943456286aac511a2f5f990f3882625118626697be2853d6deb4bb1cceb3b33832df3fb285cb5af37c7fb1a28f51655d35bbdd0932adc2f01f28ef3253ec2f4d6a20b2b66b95e50a56326fc3a4ba9e27934a64aa86a7e4f05fe27c3a9b7afb9650acc4433849202dbc63fdd70f77395f768c89ccd77e7edd321c14bbbd07dce8f83ba32013b5e80444b5814e90608cd2ca8f8d703a4629a58aceeb000db311fb95bf32f1ffa54af13b9970d932ba5086928a1bd80f39beff1369f034c9a7f7c3651b203d80932d3a1e2a0e23f23ea7c2b85b3826ab8ca44345e0f94538f31b4eb7fceddeae2e8e49bf64d97d49a435bec3eed2461ef4f1761795d6df80232b7cdc72a137526cd24250e9e4aba73ff6ae727a2fe0f3a5a2c77cc550fd2c2b203e590c8447d92dcde9d6250c6c2557bcb51d03f32d2552168a2fcdf04b89aec993cf81858c42c52cad140b6a820192243ce8c4fa195d8e226fe68c0de4c150807b4fa435566b2cbbf7b798f6eec8eabbadb5f28908ef5b47e69946e88bc242abe653646abc398dd6cb18c0b35f496a7d1f5184056bee3f971aebd872437af43fec0de3337f7f57c591a0644c3740bb328c297e7b8aa7e2f8d7c53965335edaa9240e25c095bebdeb84046e1dffb16d53e0aa8dc30310e577bdddc0f92b6995d73246dea4230f8e72e6d0d336d8d0f16ed9b6c4c42f38f4da7d08557bf53e927560307fd1e899d2204c8a169ddb271ba767f36a5e2605b053ce60d20884eac69a9211cc25bb09971ede35e443f9a8c552106425ea89720b65196a0828c9fd38432a94c5071d6f1c95293aa3e05928d7a56a8fb18d3ebb50b26e0ef479a50ac9bb1eac9b67c05ebea538b171a5adb9c8df27c4339c03d29e98b416e33c2645c9e4ea51c9653e29937517178a131f7eb101e2a08d3ad628d2611362ccfa058aee843e99ad9a0d12243e141599e0e3c10b75d6e04367beb73751b7bd87aca210faeddc65aaad5c510d4e1b31778dffa14b717c98b90aa6876fa241772b452f641be22bcc25a634921335189cdb25028965dc30b64671c7af49f31ec4d25fe399cc7499623f36d07ef432036eb68ccda130e6cdfb372b8b5f5bfea33af1da893e771c43ddf7d3ca06fcdc3f369152d272b4bb3417f8cb7ce341e1381b0e63d203ae3cbd5827613e99619da42b1abc50e154754b96a9fd958f77994fb671d43f30116621733cebe9587a9945367bf9e2745073032121893ffd682c52b1b5a68c3ac41e1c500b7ae1a718e3a72538d093bf33054e37b6bf07586b6a510a034015501c44197e34071c8a8e6ab850555a8d23afea65a7421de862c160a42d2838cb917d4123d90656ed638b716abb3476b37a234218ccd800007cae87f63f8b9e20c323f71c31455b73877dda8d5b261024a01608eba20dc3688b49d178c70c88c9fa3dee8990706eb87138e640636df42334c5bd9ad40a3b19c3184d067631acf86834180ca120a93d7e96bda492885dd7b9f651551fdfdc181bf6054060c02130eb82a5c32643dbad0a07ed0548eff92c641fc86b28f4cb06c3a7e43935cc6a3dc2f0217e14ea4b03ab2faff3c710d8abb07232a173ebf718380fae7ce4af68102164b840be9840fcd0d20d6d21b2c2f4e384b1849daac3c249a4ce5657e89811a9d99a2e5cb854b807e73a1db7de18578ca5415795cd2c3ff7a25c80c1dbd31d9f33f469fcd85b5a5589d23cc665fe71a3a7e79e87665ab2adc85223d5e50002182f7210241b067f47c9928b03c6a419721b6f8a868c7862cfdc4857e50abaf64991447fe1b3b22dc55df168b8fc8ed273efad8c100130f3230d82b89209c3ac9b57e956c68e310027180506048d94ec8423143f821f9ec89005809865ce129ad747456da12a54c810711109d6c4e7e221c095936f623d197dc3b720ed7c4332abcb11c0a1a087a06fc54e852ec306c2ca3e8bd24a5bcdfc48c9dd4a3383d141a3c93ed6b328f953ee894c892d169d284ab0e344abbb44a67ccfb2948ede6c7f9d9377549258c3f07af52627fcaa4ef86ced8b39ac2271b2619780695e752f0d1e2a02920154ee6c6fe191654198c7305e092ff94416567024438d6c47f0d2cae7fb9f884fef2d9820a80e30f73725f0a2490500f37bf6573e2cdfd89d8e24084fe2531ca1090635816392e2a13473d65db4cadb1ea4b1cbe57f004e8aa4c4a4d60c05646f645979a8024089686671bf108defab618d71ca203a1aa8609f96b0447c0e9ca6816c91bce0128c780cbc35fde06c24495a00dea6296ec2bab19d86705a2009a968cbc12dd9a78fb36849e6c06fc150f611b02e7d6877c2c46d805be74219a618b44b97e0b7bb860b68a19cf52a0e5db8e8e41b97fc87535c012be6d1350c29a0c63cb4c569b3794f81dce9b1c4e2b14ed2835d49b95b4813428a44b3f576121e33148ec8dad9191ad9feba1f181d9d27b0908e32f72634f98ef5a3d0216a4c6793f7947571bfadef4037dc70128230c22cdcd8088701faf6e95bf8023c41c12fa83962a91d87238aa5cad317f736a544fda8021ccdb327d328888cf0eabfb0f2bf7de87cd4ddf5a4b4bd9d38f7134788c88191413e52078bb1e1611e56e120f65b1fded07e34a16785aa2db966c2a12642e2852aadb4793b5ad833bd38c0b072bf271be2dd1fcc1dcd6c0c489e61a12a04ad0581bd952985763a05fb69923539d3ffa352478ae4593a53b6009c93106012778110d8bacd672fb2eea8942365bd354b922e62cc000cd6d9407a52154ad26d5751bb853cb7fcaf13cf6fcac04816f7071e213739b7bbc326fa6e9d7404de64a864e91eb4d9cd53835e2f0bab6eb47d0004d425459349c2657232db6ecad3354bc5554145dc7cc49df77109140572dd346c786f42e648b076c35bfc7f7b7285eea2bcbc3448600f74ba86582754c3cc86d5d269e6863cae17f751a02d1f0e54f184a6c2c53f6d7791c2e0e76fe6932d4ad3c94801d524a58386a7d267a64da2bbe05ba6995c3a5a5e40a22843c6394fa60e37b01b76f10116f2e2302a204eee46eb10c1621df4f50f0ecead11cd09009bfa76838d774374bda12330c00768cfd2144866784303731188797b57bb9caf1e0e6b67ca5c3068e75bd5b4577ea15d238741b956bb906fa2727bd30f41634842abebb41744d89768506848499d435d0e554ca35859885ca90da69129389f7f1e67b762b32460ab61eefd850b0708f7ad298f9bab52ce6e7319f75230ab278b5cbb7c1719c9cf9d04b8737a0b4fe893b699dc3c1b511fae8925317610b45c58e0aec93ab244ad01fea0470e389898b5806b7e3745017d0811476e65c8bced47f52ba301cd5c41174e8ddfcc1f20cc883d2f4ff6f7524f5bce3a2b73ea7cd14ed7220c22d874b697948d2c9dd1608e7725418004ccac05345667b663fe982e050ff453fc7c9273a69fa49823d7376275dfa9a3939365bb0490d9d9b9299493ad26f98153eef1eea875d5ce99c1fdd5bf1c976c289829dd8193ad7dd683537bbb1ca27a060024b1751d606d6b309071d1a087c4842ca7138fcf162f3c31d35b7e2909f3929677a20fbb99933589ec90ea74c53910d14722b3bf048054f9a9f9bcd6b4eb0c30337c185a293f0a3420191a016061179e2305cd94356e4f50386c0ce47933967f92c1ba7c3528217db424b2320480a72e99d32e29eb22152306c16cd592544a9d7f598ef7294c56f2516f12791bac6ba86e92c2308c4933ebc8921507a0f1d4e5a1762847cc126180a886d32349b64a97bd3c2260481530ec325459e9555a362786f4b137e34e87c7ebbe2d96918a284318c3fa7cafee42f79ab09e1c7924675d3cb37815cc73015605a62b8762afb0f7af83b7d748d791200a04004cb9a49cba754e701a7445f061431075f38251ab27ada63d81ed9528852dbab6258e39c8f16a76819b2848e4d6b36159de2cadeccb6e9fdd34a34acc1d5d4ab063902d91af3cb5144450d96c5a76620e14fde113bdf62518d53f5a40ec50a67262508f90d35244c1a2cf9483a4c0e04128e40d410db80af178857365e1f15e0e048609a8c483acc065b5b0b7e74bde6b4d04677230e78014e16f3c126c6d0f0f4662e4f4f90207be66d0368e611376444d055c662d2b09f95f52640944192c6573199c78e0f16e5c27c2fca83420960146119895ddf7384630bd854079f7c52f840887b1a48d3dd5207c34cd01f35a9dfe1c222be111d6f0e2c52622f5b00e9d57f432593d4dba806cb74f6211218785ee073aa2cb8e80ccb478f2db000f955e97b5263c3971e8d367e0846c74594442a5948a07259b9178033cfa7743224d85aa19ec2043bfbca1cc8f1adb65bfc168c239e0ce8ebe84af3c192e6279d5ff05852aad41423560f819f40065b142ff3ae9ac73c8e12c93f7b54dafd3ead34add3edb383b47a0b84a2fd63effccf83daa14e232bb655828f65b06acf65fb30d3628ff3e5ac90177ba95042824452f038a53b9ffb7db980b91327735b7374476b5b2bab3f8e571935f301581dfa12042ffe99b8d905666e67603e551e3e41b30d119349cdc5b80b71729f74af6a143e244f96dc373b6ff2e7788223a712879e5fca961167946716dfce5f52adee52791efba3f24a5712db874e58657a932fb212bed3d7b095971e2b22d6842dade5690c83144b02441a206d0cf0864c5e0831214d3e2d64d9ea5060b4383e8ea52bb3f15c2cca34b03a299d4586cbed6754ca0f35090df7dea075598ea74a3a06eefa738c6f975c4f7d059a279234d77731c30d4c30bdb7988e1ff3fac0b3b76c1a80d9f3aa6076441530d74623fe74c18d6987310591218e2715a2903cb884ff2af275166e5dc0b0a8898467360f8d544be7eb706fac082b35cfe525d622f166c2ed734ab7141ae8efa27ab6dba4abe61ea815d754d72313dddaf0421e484702cddc717a972cc5939ea4f9b181bc86bb6c6b0fcba6bb0b43459f429d118661b34f5c4a0c8337128f358c1a4933beb45e2017796ad4b5a81b924320df4857d10cf0c962ffc9667d84220fccd1f2b2ae22de8d3d4f6777313c2ff257f1fdb68b1fecaec6f1b14351e23c2258e07d74a653dde424141d805fbdec1fdca8ad38e9cb6c494e8cba0247f7966f34889425c051646951269a2f8b485e91c3473315ee24d0cf1e863ddf8588844c4053c6d8667da6c0d4a1d5ef85b11d29299c63b93ab3563aeec26ded71a9572fbb66177ddd0a68957f954cdb54d22551204912e52c2c69d6c60628503b5f681582c813e1c4efdeaca8cc846779e9152956c91c0d593f57d477c75081fee189ac44a350977595083d96e7cb2a88b974b482314966310e03b44f5b23a5985b22d85b3b6e460c0f381d64a72606ca64f5e7cf30ae5bd6f0233cee53cc442e5d6e73b7abc3c8ecfad82a9e80aab987e20ce2b0bd0dbd181275bb1806223462858c821576e8974b3413cc251e920ae841a8b1e833b879b44f8b402ce6a9582325e1bd402805c721e0b984c8d4023131d759371d12e7a455048966c3c3282e28f80ff3a13f5faebee1c5528658599b09b358c965a3139fed43b142b823c0a336b6b88d9d3daf41d0a03c2b3f825a79b99c44ae87704e035299725cc10bdda92c058872c1ab3a226fc9a9804a699b3c51e384d8799baa709a7ec1cd2ca99e345aa154725af753273f7b9844ab9d761927ccf5288c7a654c889faa09ae2609a38d5508d6fe9b8c92ac67565d2fe4522a13588458cc09b0a60fa535776fb45f55484c3f628ebc154687b53da306430247cd5b5a5940b77727c02cedf5e5e59394e99727dc288b04d56f0a15ccbeb3a69cddeec26f0c3c64a35089ebc60e367ef4d03eb1a4af867d76505dafb4d2a9e511f0959eec2b8d45a849b2ae1947354f24959c162b18ee756435d8c656c79d22989108c79b74e605eb764252ba0c574cdbb8b515c1c57bb252f0ca8dcfcf339dbce400e414f84fcf0589e31b45c72ec45feaadbf6d5f555d8db930320da546792788420c3d91c6c716893a98b32af7174b884d99040e86a4f752d822b62e5f6d6146451b60500cb0519b446185f801916d6a0b82d84838faa7d30c961db42e9ff4354c2aa44eb6380a0cc50e5bacd00507bbd7baf521f34dfc2778d9052e22080369f168110989ca5bc7f6736a26fe08af1718e6149f4318a30877b9344bccb6a5a0133de0576d899b0e42cedc31d17f5dbbcb8ce30dc85833586872d94259aff355c080ececdb9de287fabf82698ba2d32bb9ca91e3abda2675ab69899418fdbea02b294abf4ce67db82f952f0742111ab29ca74dbd2ae25c179728fdcdb0836e669ec6831c7703311727bb67c2e210aa8e489e573639f6fc80145ca9e678b76a9ba72f39645e15f6431c70582412baf156092c14bee6300d2159dda93a97e92b83cf11d0529faf67372e4f889ab0e931f575d3a67274566e3ee5246c3bbd64e25325ae3ad1526700a3f75ee6428199b3868f8b751fc254a750518cd7a85792e932d3e4054551d8edc1b5f6654a5bc8fcbb7269ff12df6b0f061865fb7158ecb93355147e21f6098de61e45ae6e109cf25e21faf60fddf5e774c4ed965f6e2a00328c808d0dfe2d0b151354598c83648b618502f1b02c5132f86a08147f116d54141da167864864bf5bc9de05fc070b3ce6612b59c302f0b34ef506e50b20db61d1d619f2a33a56dbc07fb2571a72b24b50afaabe450ae0970465c286af0b7e77679662170e7dfd7ea4cdc70ba395d72bfc86b2909844319b0b90d3f498eccde6f2adce491488ce9c8b06aa6d0451a68c7d3c17d312e69bbf54722d03d2c4ee9cc83ae27f668429df88582856eb96a2e79137c0f97984da86831b0a2868bbcdaac5ce1af838d07ed8d33160a08416013e300b460fe24b48047a933cecb6348a6c4dc27635530b83854668aef6805c08ae91805182ae41db61c31144aea9fd7ab22ccbadf2abb178c2aba9a0abd75c072177c5e47cd75d18c8b09e6230625a638e4cb63351b0099e2638436ac79cc954c30af36d1ed3178b6eb2a093c056b3c5602ca0bed555bce51ce11f331ea7292fce8ca6acbb569b62e9e8f810355deea1aa894950abd274d0d43866f0d23292221c591d629fb851a7580d1dfc35935d52088d05406e253f840587e0d622c28367e309ac73054844faafb7225087c1acfde624afebabd4640aa55662ec0d334fa68722b31e0572927af7fe9e6a6ebc581bd1128c13c3d4c716d6c5cc76b6a00367745452c02880f4a783cbd978b7be9dcfc005196d43921659a9e21d1457cb1213dfb9710741b18d4609c9d03eb03968f007100813ca84c5215cd3fcbbe3fc7e0e2ac88f106bacf2a981502d097898333b57af660acb5b49f28252f9d3256c1a896ee216d82c22250f05611a9c843437187d8bfa7deefd43e1c387f68a8fb19d5fa7ba92977b14598a37ebcf3c80f6ea10871a3615321f4af9f6b5c970a3ffda337845bcd9ee15d09c5885e774ad8b4bfb379771d9a5985571faf38a080b77316407c83aa091ccdbec62c2d900829fc2ae555fd2bb45798c5f3b46cc9b5fb3b6d9c4e7c7e0437f72725d3b70fd68eaf8cc24da0366f3112b8e10319435a691f742d3f1afcbc7e1504e54c982437cdeaf4020a536d312eb17db856ce3ad715cd00f0febf1b3bc0d4889d802b016cdab931d79b1a8d234fff2b965e1f2158cb49d0885b86b14f2a29b487c65c1392e953920ccb689749e6da14e8234d847fbc0ee0de5d734d010f7f429b2b1f5296579f81000af7d2b6e9de058e2d60da268d86fcb44e5e02918326d37693ad9880666e0257b5a3d2e710a146f3d8172c119712655b02da9ec917daec59db5dc01ed8021931f2c56a764fadf425e351d6dca3c52a3d4f1ddc3930ba11657b7c861bae6efd4f21fc1ef1149ee3b7436d3f4e7e91ecfe83c05de479501b7ac9e68b757d17da2be87bd13afb84eee0e497b9f0dcc52923f07b14697a39cdd42700a4f7880820faf58163bd57e1fb7f5915804214cc05f0da3295deabe986e26e40b667b65b73a1bb29bc72b795d59b031b9697aaeb88cc7bdd62a7c32b9a2b6db68f7294c58b744eca9658994e37b4c3c8c53b044d61edbe296a05ca21a2ff1cb8859b41c9159a6487a94560d2217d478166e170026b219a71e05c0a1daa2c9424c13ad18bc00d074eae107e202c92e3ac1e1daafdf418df623e946136ee52472278e7ab218891a6bcbe5c10b3bb5247d301b4b3b89774e808f5898f82884b15dd97ce4a82e986dc0ad1248dca697faf0ca5b82e696fc8e58007bebc7e4529d2eae963cdf8d4e94d8837fa9ba8fe074b25a3e39cda934b5de3849494bb3bbc00a575d128b5b3a77a17797316b108978d2b237f791c4749e6a343dcb45721993c4bf39c8650b0ec35a2ff0df950d078d1049a69374e07e8259fc81343e071443aef69c0a60222156da61bf5cf843a9092203347ddf6d8b33204b0abc34634b0deb6e01768eb4332a18c8a118d65852c38835a3ae8fd52bd21e2f1138644960a60484413406c8f6185e2373e11d971ba9e0db196aa6852721cc0138ae8258402bc6aadec39f96c81983af7b16f02fbd17c737500a0b6c609b5252e78a2b1dadefb30a2af90b5fd1b9b61fb7ebacca11e9cbab9ae8351ecdf262c9dcbf15b1fd551f4f6d766678dcb070d3e4d2e124eeb1ba19693c9c6bf35d2264bd13b666d67fb36e022215bbfff57e21ef109dc64336f5aa5a62c89d1560d3eab169e53bc591859039101013bf8030dd63f37f2587283731c9ef13879c5adf45750d979cc0f8c6fe9f56045a1fde07e2941545e0dc219611f1c85104814e481f021a01bd56c9e41b673d04b62e81d22591e1dfcabe00b36fc7254d2e1a2b167514dfe36c18e325e014877dd461b42f62e42e06de2dcf24d2cba681354f721a800963c88d8d8900be82236328708c2436ec5e8246d25c1b761e28a6523ae12c1e987b83c892eb369e6ac5f3d572f6fa59d26b1549294782f496923a4e7cc2ac6340060b68e7a023e30a2c7685844cb9cd9fac431b95f4c9175121b0a92f31ef87255c2a9130ea2f9284d93c03728c52e149346f11fcd8c7f20677e0a29aa631910fdb5df32e068a32729ceebc652ed150fc3cd6fe35044e80c5ab1c96b60554f4c97aa96d77b3c4a3418eb56b83156e9e711e68c4286599010c0665d8aabd365531d77a47bc6363ccb822b9424df975b526815e4f574d6069a11083a149bbfab742b37c12e2380d86494689adefd57b2f6c765c11006449007918c8f095b162b39823f9208aafb982b27d9c4c06f43e28a651eb73209a1d7fbc85eef453d317455f3256e380b779273ce5bbecfd8c92bc4afd2b34d085130e948b76409211462f01706d148ed3df936cc99cc0e90fcfefb052e689611201f311209eb2ecf62f2c67c6125299630b2b06bce2f9ec87881cb5dd17bf04a35b06ef7713625bc9ac0a94daf32351b21fbdd073480bda076c9d8ae00a7cced40f720eb6bfaadb8289a5842ffd91e06625b5a5528e959f673249566746517f0bbf525e8229f1d34da2bb404973071329cb859210ab79cfebcddd45bbe026b326eb73ca6d729f366668e49d64a1713cdad8bc49b5043c51a55d16061ba8c453ab0e0909c2c7a8e8a444ebf8856194f65e3a45fbcc9126696fdcbfba83a7f5fdcab83958f56cad03ad98b412c7e008ae11a971aa2c1f545d4bf1bcb5816543aa27409776b3f35aa9e83367dc37c329f388ab4d97692a42c7b9198ed15980c8f33a59fce3bb97de3b66955d3662374bc0598456c4279f5d22deab917648472e9572ada966a7cc9f4769dc84e4fcd3c195ead99124bae40b001e2e8d45ae1b1286b010490a6c30970e5d66456e7b8f184237aaef9b9f17c31c051ca1ee4c540c66cca4e6d0073a51c4e3442183311944924cfeef9625c2e7a1f8b2596844869d73f6f7c430f6472c3fbe98b5e241011193484a6e0aae96776e8bfef61f14c1f8dd96051f833812e07cd6bca4757a21b79d40422ef6587c5e4026166710c71c1224b699a07a5499bf537213df19681e7166f9697ba511510a1da0dd70ec878367edf0df16181c12f84a1b9ef0523cdac64004630c117ccb7de30370619e52d497fb6c1265baa2d0d61c9c485ddea52a277df8f6c6f36b722daa65989a11b34d85d714cc7dd0c119332701311cab7776edc77965d20fdfe090b58ac30c947a466d5c0cec150a977b55714c8aa58c700d023c5be2ebd73ee89de745461c105fd768e9faa1c6a865e76dfd7737702108fb6813bc086288fdbc410cd3b5532d8ebddee1c40295497ed57d86d4a0befc1161495becb10bcdb62779e24cdb1460c5050e5545ac824ea0b6a3ac85dffd08a31835a9918d2157ca936bf321fd78c6ae6de9dd87070c3893c02eef2dd1bcdcd3b29f31016efdd7d86ce4ed781e863fa2ba00932ba6f65bd7fe09223535c4fb750c64587d014adccfbca698f9e9955a6308f80cc7a839bd0a52f09df5cb61885f5b2781597655e14e511f55c473fff535bda153a4a3474c0cfc58905ad89e0781bb6dda8c11e94ca21bf8dc445bf16ac01396c28d3f5ceebc1b075c0b06ec011210788b635e38811de4de01f328b368ef40198a8e08cdbb713e80eda101eb8cb4c348623b2886586fbf5332218ecc0f01a16b9c220e3524d3e4bb5338518df5b501be5b8ad5154bf7dc4e78eb7c89201e09876d93a55dbe518f6fa33a94a0ee87eb06841cf68cafdb444d74757fa2d88ab88dd7516d8ebdca220124c55f5d2229732201e0f004526658a6184aecf8c1a5922ac707212374844c060bd5a589ecb5b06ea36f059b8452a6e492970a69caed7a4f2f944137bdebe57c825cb12164e126c2e1036ad2dcb57f920f3100607698a917288545fc9c67b8daaae048caae1abbc9343be16daadb2240c5b3766a8b862693c5beaa9e002ba9504a12756d88f2cee30dc0be7302031cf831e1153a47cd06720177b16a7896722b7ef2d8079c26be12dd8e24d4fc4bac80388c02d68b4ed70eb8a0ac44087b446557105d4c3a5aa6e8a590306416a2064258ed7a85206cd06a1b32f29ccafe2b4fc1eebd9acb6ec817d36206546f44dc91c121b4d711072df950591cafe2b89f53a5fa38a842bad335364d6faeff5bc45f1e2cc67a1faa319b7e45c8a4988b4b94aef7cc1ef9e54beaf563f28592285b6621676aa2c3de3cf52478ed2007a36ee2b3305cf3e11ab450b014c536fa00998facec7f88bc34d23589eac6ca55981422fafc6630d33377866a4267a9476187af66b838eeeb49923d543269b683d67d0191acbcdfb8f0effd6197ace407d572b3e733d268ee15a8b169357b59e7940edf0b57e72ac63c070d23e3a81eef0cc0c70df3de925c5647b1e1e0cab76e3d0ac619c5c65fc3e9a78988cde6274966b51dd7e18946464c0216bbd30b5a752aadfb8bbca722e7cfe02d9e201259a3f5968488475b3030ca21f44644751f4649dd8842e04d4374edbb3b004491e7f045a78a4cc87c7fbc62418dac9a83e671f37ebc636a50afbf6b2731f843f3d69852a2d1557b0c6d5b45795f7a7ce274441f998b10a73c170b0557d272003fb3719538897340dd53f57d2a2ae4e7a7c45f9a7f6706066a748aad2704fb2f417bdd6596ccb5e3457d7ec5ddddb5412c483f0e35f6ad3a7f4fabfc60848112b84ced23c4aab6a5c8427198f788b59935414a6a80ac92807426a4eecf06249fde6354f72fa5707a615f2f178c956a793cd459adfad8daf40d45232dedaf8e15203916e9389faf05bc20c5284088e08bb3c904b11a5fe9c759341d4d3438e7a32ee86a62b627cbb1a21543566a95142971594f8e68b09293b76a1599be7f0d3d3a48ba7e6a301a316562a9fecacf2943aa2c13528c8052d8368222220fd16716e9f346e75a28a3efb9e4d48d93778e22e1b2f1349571641b24e7ce2e07de2cb0e96d6943cc9fcbd5f3ed595f45e1690152b4e7b2e46dd89f87011f4cb61ed0b6122a7a5cf157b606fa31ed2392bbc3ebce9f84d2d6323b51935c0a287ab01e0f1331245bcb37acb2dc8b8978a39ee925f81c072eecd9f007e9458fae3587d72199b7024928df7595397b0031c1104aaedd69c5b204e429b0e2567f661d9782227dacf9f411c68b308d33fae3e0419eff02a5e69c7bbc1c50bb2de583ef9a2d45f50a71f83ec0a002754de6210fb882dd9eb6c0e7680625c62bfc387d9b29751c8e6570db55023bbadc9bdb79449a63a0a8f09000ae3928e167cf634e5fa4052403bbf2df1dbd9d4e3d4f3e4b7fb5bb2bc763df4cafeb4838c766d74a5837a98ba87494bae6f6d709909667a013d01c413c70b107defbe66585902bd99045fb26f101c00e258f0b3b44032bd253eb959c52548b92659f24b6a1f5fcafeb3235c130bad94e4df8fec6f93047ec94002e2519897362a30bd665759023dc71779ca40c218469ebd050b88070404e4404040324a2535df5909cdd79781e437599292df96fcc6e437998c9c11194d7eb3a592d9d797e1e4371c2f4527d1c811923b8f007002c0e56acbc2f467311a1a1acc06ec2d5863aac6feab3195ebcbc0d851528c3cc2b989634ad8cf9fa45b6bc6980bd86b683635e4a52171ac05ec6f7393b303f6f2fcc922ce9d5252f66e414b29fd64a448e99723243797cefec2d45f72bb0edce69b9b9b6ce6fe184124b580d9f86aa38def6b376e9e3ec05dbe5974e142cca18289ba45241d54530265894a4427403b37818078504838d71e1d0e241c491e846bd0787518aaad94b102c2ca6b7ef6da65201e1056555829d3bcd26ab54f13bcf3c9f547231eb4a5ca293bcd6c5666e59a33059fbdbb25a077d983685f7ba0c81e5de5a97646d313c5ec81a2213b709e0f4810485b12c1307202edb27d77a329378d764652b8f23cd06e2ad7175db8105f8c2f6036640a20819ec9a10bfcf72d8d3d913b8ee5b6187c4b9e3b8ca6dcaca4911489230463dba50d206ad703c3077c5a6fca8233b62d4727474707c685d13d76ad9557836a4a9a7b817839470a2e02ca739ce05c0d12739507a96fa3902e41dfc6a5a62fa3905c9b5ed64a023d438b80caf52bcfefe95b6a1fcf358da3911ea2ae26665164ead4fffc92284700ecfcce0ecc4618000c46018c2ce8a09a92068b017241ae343afab5aba3c1e52a294b7257f1108500b9ab78c0e51858f011ae87c01a44f3f561b1a721253066306600b391d304834d9b368591a92cdb520253673078e566d5892d74c0678fae47870346b67901ee3a92e7b7d47395ebd3b397a03acd1e9ddf6c14a8a89ddf6c8f54cf94dfaa7aac7aaefce6fa1e1d175eae258ef6d29375f684d1ca15569e38d7720f992324a65cbf28e5fa60988f705a2fcc334d93678cd20395ebf3c070d8dca3eb06cad24135a5d8d4b13f8188c827d02ed75c0e0f4b62efc69cdf62e40ac403e2c1c00288e76eff289773b37e65671cfd254aaedffd45eafb119ddc8ccab13ffbcb2ed7fe0205c4e30169c9c0f9ad7930194ce6129d9cdcac2d2ec9b5bfe0faa849ccf94d8694a4b4e4375989a333d351cec85193eceb1f39f90d566ed9994bb97e59221a71b3feb8e4b7169bfc468a4d39bff5cf0c37eb7f393a3a3a8a4185cf1e9df3c418475be6e8b0ae7a0d5dae35a0826abe6747481e54531a8db312cbd605d7c8e57a8a4d35721e6424e53c4db53c69b936dac5c882db14029fb72c9ad9d407a5bb65c5e06555241c2e89979541061968d5209aa72ff66ad0ccc87f29d357cad4da51c94dca64b4ab4147b89da8558abb9a5ea65f53fa28f2f214a78ca6b658f5f4c06c1c21b9598f7047496e620082d1ce71a470b5c7a746c067003951cc1b5e53327ba35ded2d53780063d720b0a85fd4606c28d848ca6f3842358c7611d0022104a21c1a8c1afc58db13021f211d595efb9c3a32f3a4808da422a0d5432d6249e00fa2cce0f590eceb7fa09392cab546a6afcbf56d13b9895c3e7baa6aea47563a09e60fb43f23d0d87e0373ce0e5802bbf6a9afcbf43b025aed030404b311be48002f63605980b864a445136b047b1b8bfdd75b76567efb5e6664958da4a6aafcf63d961117bf7da5d1949bd5a8ca48cacdfa465730d2082b68f6346f84556948232ba3a9ca63b48bbd00bbfe4806ec4698ad937c524bd61ffb0b4e4c3a777cff03b3e1aef2fcd1e5fa4e8e3c4bd2980ccf686a68365e6f5ad45cbcb01f8e2d4707c69360585e1700765e01c0401480c91363cca0c767001afcf40fd85b76a0d1ce831a8b96d194d19511cf280caebfe0b690c9b5b754e5baeb25e5b3b778c9b5b764e5ba452bd72d9f3dc21d21f92df42157303b7a830c668e21854f31e9456ed1a4663e750b9a62485adace78bfd256a7e5eb375bee9bae87c6dcff4571f17aa8456e5a3ef178da9c6a9bf48a3c55b0bf4eaee9bd7631ad1eb2b2a9d74e36b52b6b7aed539fc704d8eb9fb2a95c779f94df3e2f2ead8fc46fe21acdea08b177ce722908fc737c35d5a0b08c55dd57934dae561726bba872fdd326d725999625d87cc6aaf2477e3c556c596cd1cbd99e6a4e8b5eaea4ae7d6afd330797ebd36cd1f45a3ce5e07296727239b89ca44a7572b9649f8826167c7e3c1858e0f363fa986814b0757e034beb66aecfaf7e4ce72795ebe8662dbf2bb3c658823766fffc73bd5c31b8605c8c2230fdbc6481ff95383a6ff90dfc8af3f1b874eeeea131d7eb258fbb1e6a91ebc7fb7a1fefcb02972e056db0c2cb143253ac4832bb294ba62465d002242959527a3cb02a2818908c7861f714c293ac1e823c71c584c8561631aab318e30483dc53637e5461c6863643468a18ae744898e0045da58a16a020e58a264c3c4521420a969bce05571e26b017815f536e0054b135264b15608214e159e9a10a2a98a2ce0411450d513520e10131460c0dbc27a670424c4825ccfa0186ca145fbe50f1c30a044cf483a34b7c7015b85471c5c54769902a98dc38165b8591d9cd7e52b4ab0042d3b51de56dc5b27d8c5bf8a4c0f598289280382288112f3134d4145b342f9892a10746095c0f861ef0895db3217ac895fd6be552439125b2e8aa484d91c59556168d7a100438c193a9332b0c69e2a15209a7680d818da0c23be2cb14276478724304ffe02f0a0a812c505a50d2c4eac80c4567ad43293e68dd9c2cb81a7638e28923df159e9695efc3f293b3d46044912c3e4c51040f5a54ae8f2153bc6c458d79e10560767660ac80cf9d1dd3836e3da2a58426083ce3e9852f2ac882081b8a7867617531cc3004846862ea88a4130091c2df1154d71b38fdd8f241eae988244c44d13a8114381c7a60b2c40f35d892e05afb20817ba836a1851323c50dfd7a09238ce0e18a13292469c2077722c689eb830524caf46888a2871dac68ad4c12982e596bedcd82940609c205de114849b18411285d94e079182435032c9144136472665e38636fbd94e788305958c001881415341431453e2270e8ade0852a3817c28c4570bed95a5b6b0e625c18a1ac28a2c48c91243356584b2421258a9c930a7a08777892058ec0961f60aacc4c61055112f20388314c4c39c9a2cbf00005ce0722a464e121d481a9c969719282163015c9a2090ce28a329102998f19527064ca1628aa303915d9371d4bad996833553efc2688a53b092d3e544103124c72b8c209154b64b9a72033440d3600f1a34ceed32983cf1158656bc9d3eeb29dada036a16ec7dc10d6aef58f7ba555080d21081abc0cb9a14a87294d8e64fb1d106191a5d5e4858c0c31d0a614b94bd125a842cc14243f92588187db669850e102069770414a104b9408e182b55a70fda6e2b3e7e823639ac247df6bb57b297d4cbf2f9757a2c54982ef69759987af50694fb03f6dca7da5addf15983e91d32fe2f55b770ced8edbbf7da80b256ed6da173695aca1c92f88d47ee50b3e304c6301f822bd17e35aed6f38bca44430e5d50a56b0822615b225834cf8c1d9d37cec41f0e90ebc7aa1377000d560a9875c0f664c22b928eb8b739fa6c4717d17d13cf832b28b70ed777e465e5cfb71e7c10ea01bd0a5d6007cd0c177e1b8441ab2077e1cb308176615fd9819a44b20e01eb46856e2bcbe8b664542b22c84c07791393e70133cbb893e61f2d65a0c3692bdf4f98be7a2cee587cb7abd2e7bbb881606b3e162f55a87803aec3cb5521a0c164425495ff4bd1be07b6bc379e88b61682ded3f4990fd7fdc3f1a96ba876c7c6f77f7e7b253400543ae46061f645a9241307c7bddbdbcfd2f54abdda0041ed75acb8366c76937ad5b1861f069613d84e381bfeb4b78fd48f3db09fb1e82bd8ed7fb836fc7590fc59e0412d8c8ec24ce22092396fd63b1fc592439d0c9fe3a3a59f4dd993a8e24c56591a43fe41789e38101b2bf01b2bf8b3440c6094b9b6deedd3725d68aaf38941026f6b33012e899affd062133f490178400118254836c892f31c818aa205fae2b08afc7d7ebf51247aa2056418208a394909a6a150100854f9bef48a9131024ff11fafab51aa625b53d85847642983959d8b43f9cb2b5d6ed8f740522cdc9c26698ec17034d0200eabddf1bd6a5a581e90e6542fcc9c9bad5902a57aaa4aa5c7f9c7a2b822ead53a73744f0bd94bea63dac5c5b987e577aab58d1a3aa92541b71ce0f6507f1b06ea9bd42d89e72bf154eff98c38cd3544a53b9a994ae80805c01a9ca4d05242a9f374a1ec5dc54409882ec725305d1e50ee2949b2a0813102419969b2a08522d8a4a0f497e6221e6e8d254051051c0b0a0d750e82004131dae40624c97283e2a604bac986410062a3ab8883ac8f101a8c30f950960c8feb72637950950a8f1ae0e5b6a88086f96db01518e0f6a5fa342a1c60bbd14a9406431853f58000c0fea8c991da0b0c8409314b47e009284c20d4d66805d6992434e9865c68f500d31236d247353a130040a5251ba6330526d0c4ab39efd60c882e1ea1c41ee916b6984d2c0a72defd8bed688c12755a2816b7d9ac3dd30885c5188caf5ad052890c1137cda6ad02bd5340846dfdacd201bdd8002ad41fdbab5418d00b99e19e40ab44ffd53670219c0809bac548f8a13cfe64c14d414d4958eadd882e195afd63a1462ef9c4f5b82d67d2524858a3cd178424e7ec2ab2aae1a5910e13ed2c62ca664e1c4c30b90a072503a1f1a094f7eaef569ce0e1847cbf5d094d5954081e4fa96ac996a9f9acbb25c143e5f4bb95ceb537f4a6b1a02062918a0c8d0a62f4c51bd50e505285c7240d01c9597939c1353ee0f95722a645a0fc1620818aa2157e1102b770813d71025b53c3d90ed15ab6c6b44f15b34a1747ceaaaf8ad056b59bba4cd4d4bdb214d37ed8b768c9935467eadf2d8ef5f1feef8748d736949e4bb186030ae660ffd9ee137d7db1a53b5cc57b43bc6c882fb93726ba47de8e33088004db59d9f1a583b296c6ef58a42b04ef9ed1b8de45d8825dbffb09a7652f9fcaef215fbb2722111c59c1fb038820cb1bddbdbbbbddbdbbb3ff0f3ef033ff06beff6f66eeff6f6fe2c85b97ffe7deddddede395d72bae474f130e2909cb5b611741c77db4e0dfb39a6b2b52dd5554e4724d93e0d886c7ba2489b512f02e7ee6ea697dddddddda95511a21d89e0d1be4c5f8829d39d5ed439a3c6ce56fa02516cd1049f3b5907dc3c22a594525abbbbbb9b3a217e2fb6df425a6b7591d2eaaa9556da3576435ad0071ebe5f9d3cc272cca96d1bc63e90e59074d2e59aca1e34cf97a37d9af039664cabd95eff7d9f2d73e458c1f6a99bdff72e72c7cdef7ba11ad4e33cdf9fe32d6d24cdcdefbf2b9d1eae4f543faccf2a7605feacbeefe34d2176b5b6666a9d87d29dd83b670d67c7d246dd322ad74f52827a0296368ab6688265d1e468b46059345ab0ac5cbf5b34ddacac1b0696a3d1aac1d524d168d1f46ab8ea02b177ce0cac32f8d45a6baded5aada5f68be178003e40bc75f9e52e0673a0f0077e18ab8a5979107eb250d51691ed5bab1eba7fee645c7b22c795c7bec85b79ecab2983a78b2a835fee068caff9612583b91a5453721ef0c44ad715ab2965f02f59e3640ccb4df079aae0908c610520ab87fc41d0cb185aed03867fdaa03208be2d0ab441f5d098c1ffac1e6a91c19f35c160878115f81860818fc10e7c0ca6c08f61e1d0c91958dd2bd15f7492012eb3d1f304c37078b56ea9b5d6b62d7682205fe58cc9199333e6a3e00a72a0e440c981920325070a1887c15e6451b4a08c270bec5ffd62309b4305db1812f6a7f99acfb33fbf2732025ab0efa93a9e91d75a988dd71fe58e968e926838c662dfa2893b7d1d09b3163c5a72b35a6ae991929b163c62ca55d811ce257eccfee8b22078ad15c5eb1a97965ebd91695c1291ecabf7da127140bb4addabb56152d5df7d5baf27115865d7b768e22e938def30582c06238dae48232ca3dd167ebd8c04dae1f8bf4aa0292f71686b0fce7ae018d53ccdd39427e0f8d73ccd4d0f1c23dacf7e569e80e3a592d9d3fec6666ae734ea8b393b7c8ab91ff039da34619aa0197984c3f180e270124071d9730e12f6d7018949a0d52e3bbd62c50c0e478f0ef7e8de34c1b1ca51d2b8e5b730eb8b9253d80da35d0dea819aeab18235c08b7a7435e09d118dd1ec6b80763588561a4d8d4b4f3f946102da559e9aafd5f68e9280a672add65dad1537e02baa297dc0678389aa69d101f17a58ca3dd5e3e50f05bb28151c993c88a8f2541b4df644634f95ee1d1c2555e1287c049f62cecc6069b4339272b3cca9827b39a906cdca5b7996aa8ea81ef26b79591c2dcd15f884e170305cae3f8e393de023a423dcf7a0cbd066fdb366da3730e7a6c41765393de013886745546132b85c06c403e201f15cfc723290ce5e8297ebc76adf27431603e2c95002817831194c3272328ce42aa3c95f329c727d0b7e2d9a965a34c5c42b86403c202f5e02f1b2c0b2e7c54621e3128da6470723ad482e567e13bf3e794562f94d24a52829f5f58e941a858c4bb8478761e108be623f99ba756b412e3d3ad0dda613af4d977ba07aa6f0d8a38bf50e24f29a2cb833785ad9837fee7835b969f303db77cf3272c76b97ad110cc8340664a8890503323a590c88172b81bcc8a460fd450714462673f5e87a763d56e2288ee28f406180c2c45e2469f904e2398db131367e9903f21203e2d56c6ed6efda119297240f7cd91dc90bbfafd78209c6df2207dc342e390f500b2e78d743d46af5d00d8e72ecd599ffd93ca6727c50df0217a83f82df6c7263610ae345f5417b3b1b4cd494dfceb10724551fa8ca6f55855c1fd411e5b7b34737f660220ba34c4c72c96a64f904e26139495404c7fe8d7646534fb459df05c473b3926006edcfc8ae3b2d88a0f0922cd71f976a10d00e28a7755df2c4f9fb903c69792ccf1a85dd00ffa4656adfac24a03e62fe6989b47eef3fbad4c06b976da9a39657875314c416aa61fddeeed0ff7989a338963ac4b762d9f333faadadf3d83fef4ea896b687e93bade18338df776badb5e0876dcb0fd87c4b1de0df00ff0bcbf65bf9f33b6efa05f2945d543e2465333755142e8bb0175fe4d94e335476188e328b2f521464d17759ac4064d14a65111c4512ccddb75a022b5270c9e2db1e1a5ffcaf875c2f966002beac63fc80cde3bbc8219904591e5f04c7a82cb65fc14de543ae7a7dd9d7ebf5bd5ee0ebf5a2f745ecf4e194c577914de5430f59bc677bac5f47acff743d083bc3877d2c06cb4124ca46ba005879b60db114e2082559fc26adc551fffbaceb75b83ef0f143eeee395def6f610a70bdcbf5e5d9ffeaec4f76c08797d6a605eba615291806298b0e448091e2c109132b16d0022160f832c40e4c10142833460a19a4d092434206054e4a922ca1822f419030e2892437ec9478b8c2fab010c14790ab1a783b5849e10a2c2d504116212c6851a2a906271f401388508d1cb94084af8c8fa42ab6a028d182930a7618d3626b8813e460031055403418a725313398e121092baa6822aa4c39d29be1e90985566285a527c20059e2040e5a45b0c04b1241e86ad02205e589608574a4080c52a2925021e67b820548c6a4e0cc8f212f2cc9d251b15ab2654c488593172051458103961d702354b9022a8b2f5764b6c4104ed15e8678d9b202202cfcd00a591001014a60916169054e5a7a08c358202b080b44a0783202c8d198294a4c6559b9028928423036463c61a4080a4d579088f044cb85242756ba1879628273626549174317246046004b40021750f103961652a80105f5061f2a5cf1c30f4e5260559111c1cc085de6cc91520c6466d0c282a7854a0a1d902d3161b45461496284de9273c2420e4a67e6481885102980424b87274d5ca49021eca90e40d2e626fd6f841ccc2061e4cc93dc9322dd2ed75aae3aac5c0190abcd21d75a6bad3b1ba83c21051120be801982859892454c09900ca1840b4672ad6156aeb5d65a6b3daf0f1aac68811154381c6ce855232f524b5da808c952a6a8ea6ec83596ab0e4aae3f862cc8b5d6a6b519ce43df923fb43c77a8ac8071dff1205b447b08909bca0a54beb9a9ace8c028045081e2c49524397829e24bf38228523564863353474478c0942d275260b2a09205858d130e49967032258c171058d54084098e544184052f1a50018521aeb460b08aa1a8bf8f0ae094420b496091648721e1133d3340d0d073d24315df0b282f841a2174a208152b62204286862f5f8ace6f220b600a24ba149182902d1b06c0022492f070e4082990f011c3135d803c358132a40458dd45727f8b00848f1fb8205ec8e18812dd10f42fcf8e881e165c7a98a283dfaab5aff2b3aecfdfee18dfee484023910312396477514722823ff7bff2dcfbeefe3a34e0b346be7fd6c8d15560adc26c8420d8b07bef57f2a761366aa860f03f12e899eca344fc6ef374d5d1c26eb83ee9e27029f97bdb27fc8685e0fe2a5d25f8b56cd66e5cc0d8cd122ceb13d5135b4c2d15150aaaf24e6e2a1fa6b2f7fd57497b03ed53dfb602ced1af12e72ecf1693eb793ff0651dfd3cc06cbfc188ed4c847fc551c7a5aa72ca34d34c5515a5ac71c36b5e9b9bb7346936663c055070b9a958e09231c84db503561665e0f7ce04dc7c4c9b80972bfbd5b65f4d8a3502a5e511589602a6b4a4496e9aa6ec073e69d25b4b96407377984cf60e09ad5cc9de6db96aea22da7e84ba601c3298da1dac96a852abed6024fbdb762ac5d5e25881cf7105d186f89866c3345c0b67c0279611c1679379b2c4858368fde70a5eb296032d6bb7502426e0abf045e33b75bd6a2eb1bae83d77d4fe083e6b355ca3bfa314824104f3f8c6a70618bf862e6a1cc919ce033a812f161ba6ed42285703ac4ba294b419c1ae1bbe3f4dbe053861a7ec96fd95c78347c2b6e0648a082d6b70de91e64429fbd79efed068f8e316f0796d294099d104cbee66084961185af8b42f98e07346adb6ffc5127c5a9c7f8e2e1fb456f6b76d79359bd56902d31c6e829004c62be0b3a7845cc8cd1c3e7ff2cf0c2c2651df2f751006e17b57a698b4c1801d8adbc30429fbff08d15802bbfb348f7f4ffbcc906e8f197c5eab2b5c4b9a9a2e551c25df775175e1ca63b32511712f534a69af57eb6d611da2647f9a0d8fd8841ea64b14a947977a140929e98ef60422128fc6f79eeba14a74d2a51c92250e150adfbe03428b2b8f9b3e8a7c80c1b5742c4f022cddcaa78ac627f8a4bca9faddbbbdec3fd28ee0f3665a82cde7ed1e8fe0dca54f515e53de18049f3e55d596e70e2e2d39c92d31e52025b33a2c7826056fe1dc74ef551e186c2d0dede35e79e3137cfad21203acd5326347c8968352f67f73e7b49ad65a396b8eac30385c39ae5e1c077cff9e057e03ba082cbbf280af042cbd57799ce61c9e859504d7f8a93ca610e6ed14eaa06bd30f22d2f735390dff9c12e09914d893dccc65b748fcc644858391ecee4fb18a607fc7d923cefc9861b27fcf8cdeddb20d099ff7defbae15f2b08f69d8c657043eefad411db8ade5c9c36632fdf6dfa89eb92d156a7982a2b61c1df4389841f584fb76336a36602137a3f059cb35fa36947c3c5efb397f683ff6899d122928bf9db6cb69a1a2a0942c454985df3bde33a382b5561248a1f6712837774de0d9157c5a280b55839c48f677f75f6a1fcaab3c44b0e551271b6ab9cafef449e7ba9e26c7a73f336edbdc741afeb132f8b463157c7a13cdd958804f1aade6ba1588484cecb7ce16a6548bf6cce8822bfdc02c77dcf4af2f6b029f3ffe0e5592a6ecff2394dd7ed041679b504f157cfeefd46c9f11376431b1afc2175da7340cc3300ccf1d0f9676e441c3bfe6083eed0c05f8b4b8251129fc25a791731afe2f9ec0279e55c159b59615fb9265f21c931b91824fdc036742fb7811f8444e7935abf2f8f378342babcb936a9d38d7d2976a115856de147c5a26cb6473b629c93a4da9f045df5b72741a4ec33f74c2ae85c3e15c2862e34269bd74b6043eef97049fb456dbc982e9db1f5436608a7333c969f803e0094cfb92e0b3b63385a1e093e22ace9988b4c8845abbbb9bd2aef52b79f470b3077c36995cbfffc464a8971e7e3b318dc72efb9b80b3ff7da2754adbc676d0f2f7b58e5e7026903d78b8e93454e0937a799cff1da956129116f5cee954f088743a52a885aa86a4ec4f95bee0d3be2fd1802f0d57d97fa4d9ff11e9788972380dff9b22d883a69df3f414b6aa613d2fcb3d68d28a426fa8253b1512a4ecdf8157610fdc019601f63f990c38e30674910942084439aedf6f1e5ae2d0bff19904133275c1e22356d99f6663425f852f02df521afe620af068ef19fc195fa1c30cbc7cda3cc352f6bf48b822262be0d127e33712e899dcaf99028024dda059012c68b9494777f25b6b5962ca9d1590f4e4b7d67282addcb9be96dfcafc63a88a603555912b725315c9ca7d239663e0c84255848a085511aa225445a88a5011a122424524d7cbb4510c37bcaf97484918ac564aca64640d562b6e4ad2b8bbd3dab49b7677bb49a3d9d88c94bca9f4b5456cd7d912c55a8a98d2b6b6dbb6d52983fb277f1f68c1ab53c67e38863050c0f7def13eb96a2edb8781824e19ab53c6ea6ce16e8b61df876b1f1b75ca6051b623337b64301cb62c623c9bd1747777dbcfba88813a4ab382489dd6aa630576ba42548fba558f08219b4aa6555510af9d9411117c578c7cd74dab2b55d69a293ff2c2287de14ae0a6925a92cff1fb8f2c93c92e8fb0b54fd3c7d7d643f56b2e2f6d2e6a0341fb39f88de0fbc06fc7833a701e7fa9963a80555fc9de07e8a1cecd8342f49246fb34b53102536b6bed5a75e2cd27ad8e341a3d54df2700b9731adb749050e5f14ac1a7fe3db5e00bd5a0102a96d029f491f543f8b03eefc60a4bdb4ef61ef21ff029947db48fbf0d0af0d95817a03e3a8b6df3333f215dc40f29441881440e4a418ece5c0183c399126c69c1e2c98fa74ac4c250dae5bd21f6ce4ecdc5b795a63ccb4d6545298b3d849b6aea2adfaff7de7a6ff4058ecbd0412fca6a04a7f49cce17ec410779aef2f450f7d48dcaf53d57832a915a9ede945d49aeb7acb9f6a942b90ad520f21bedeb8ed6cab40fdf36ba497ba11a84f31587b4394f48fb823b3f0eda5fdadf0f491d345802602e707c7a6b85dd807dcdd3481c9aaff7c22cbebce7641c76e345b3e7bce7645edea33610ec01e0a928d9f5a78f7c6ffee6bf591cc7ad6aa406e17cfd9a548370caafa50bc96f16e996f7b3c5b9e95b53e0d37bb7f4ad8645c0f638e5eb3c2daa486ed6dfd9e9297b3ba826559ebeddfc7dda1b5825aa41fd7b6d6eeedc0f677f435623157f7dab4483dfa6d2bcf5b0ac399c8fe1fc766db28dc16cdcfc256d16ab8d4da9e484178f83f3e205ce579b75e0781076b6f9dae37cc36cdcf4c8799c1665025edf010ef2fd1e3e8a74fe049df2f55e448b72fe042fcaf9cb00dbe7dcaf95deb32975e07810fa567e555c45f2db4d79faa838bfb5df6a5fdfb76c6eeeb55ffb1bf27cbdbdf97b7f846a6f8638a4cd5fb2f6f6e6dabcbdb9b446f302b6af7fd942b07d0f263704ff96e708f9beed5f301b5746de5bf2b009e0e08c088331c0f6dd3c365f7335c8f6f5e9bbc8ce2d5e6548dfe6adab3c69761d377fdefcf71f3d431b3637608b6fd8abbc416dc89b5b94a78f1c81aeb60fc99bf2459ee17f943cefe872bd5861af172f29defc25cfcfb786610def7f6ff34495de6c65fbbd48126ab6a54d095b00c5e170381bf2e686b9f21355136c640d79de7ccb9a27aa34b2730d293e0d5902cd67adb99b4119b9a3268e24cd8160177f62d7df7b3f7b5f7481e5f93d8f9a5d8f6342beaece36ccf65180758860fff38e837c1f07070707e76fa9640427bc781214350c049cb2072d7a51de00bf07c9afa8610da0452e5c905676e9c675b2a8d4d663edef68599b0d93adb572c36ebc4e339b8e5477443443607f97227e16c72bdbafe42be73e1bc30277d12b0485745058d22560f924e672d9a9ad4f1487278a44ccb5a44fedc3c327c53d391977323608971ca85ad6b79c8c9bce64a4a44b3a5ef0499fc844f9d377f2a8b7302f71f3090806695ec01f15eb8e5ab64ddb634a40235aaf0deefa6e4107d54a8be4c22a614169cfb368cfb3aa568d7c51abb54f0541a649756bf6277655acca53b54c5ac5aa41d67f569eb259c5caf57dab5ed77b79caf2696fbcf2174301e3dc78e5d9d33cce8d1755f21bcdd7a7493d34fbda136949b4572bad3c6f6f031f5f74b2d63eb57e8df7e8065f15cd7b76665d36b459ed8e412ede4559b56ea2bb781765a5a129959ce0e26b0e0ba1e6c245edeb8c7c659a9ba7b9a9fdec6b4fe4b51eca92c96255cba6cccab46f83af8a6a40438e34b2b56a9027d59aa7495ab9fe574537a03daa41fdd99f4efd2225f568ad29cf9b5d3f2b4fcf27ed89d94b2bc6b0c02e1ea479017f355f13828befc1c4cbd9e3bc3842f6777177d45ef923cf1de5e8a6974a4ec079173f2b696ee2942eca1e2f5e0526247090ed93a0e8c5d37edce2fdef8eda18ec6f713568b4df010e32d98316d568510f154e08818be7a0c847918b27aa2285dd50120217efa592119c50fb138a1a06828bb28717d59e6cf1b87673ac76479a94945402bd1677de4c694da302773ec9d1836e517dda6745731a20a2a86306f78b32772af36e9f2ed3afad5b56f26c9d26701583c66f0aa683c6d291c4b29d07974f9a55470a4b00bda24e13f8ec9e094ea6e25cb32a8d0a5cdf72c99666b968962c7fff2a4fd92bdfd27131144ca88f7389f1df85c93537d5ee8b987c3aae7d5ee57d5779c34bcba7e3bc8256c4eea1db5e8028e06d90060c571b2a898352fad6cd913e151b23b0bd5f49abad55caf77d9f3f218aefb216db0b7e2ed7ebbee87ad1f57abdf010fb597bc1a75f08b67f364b0bc0a77f69487e482908b311d290d2d2d2cf62a11241a7696af02b682b9628d67ed6ce7ed0cfda2c49df3dc3dc9fafeda197eb8edd43e3f77bac6c377db4613f5bcbb21b368aa4b7cff72fd2b6cff7aeefeff7e1f7e05736cc839b1d46ab0edf377e34ec0457773ac5c584ebc3af3f5ccff0adeb2fcc83f05de5593facb77e185af0fbec584477b71298f6adb556f7eeeeeea16edc073e1e1f910f7c42424af70a854d30f896d4c04ed631da71c7ce25c7251c7ebb489bed7817f0019a69694b0dec94250ba23f18deb87e6ff857890bfc82c25bdfbe12d77faed23a8f2da9bdb66a25be6037ba7dc2afb58fdb4c6b76d88d6ef75c6fd8363df644fefad88bb21b4e9b7eab05cd3ebc417883f15ddf3d24fefd19499b471cc96e0d4e17597c4c8a2f23c5dfb165f1ed8b5f01d0a6bf9bfefdd82256be5e0f1b5be4d7d7f26c91cfdfb1d91719d6ce17390c73a9a32b0926ed9aa8137da24b9cea68dfb3efa7517ea3f9b6f97e2ae5b79ad953980d9a9fd1663636341b1b1996c968345aecf5121f36be5eafd7eb057b91ececca63ae7d6e6e749be2c36e88a0d3b6f58b8d4fe4af173732b47973f3fd3fd4d304d32cf9a459fcfa2f925a4d65f1297d91e6f2a53434ddb5f97a1a49a3347d6af3f53524956af3f534248d6af3f5339242b5f97a4c525d9baf979174499baf8f91d4a9cdd7c348dad4e6ebc79222a1e143d28a25b5f45de4cd3d7489fc92613e290d36d47525cafa357e574af1c730f99562f84455469ef8822ffe6b24693537c757cf9390f4fedefe4e2d7fd4ffbba46b24614d06a38ca8f4adb3663d2b95622300000000004314000020100c078562d1783c96279a2efc14800c8098427a5897c8834992e3304a21638821c4000000001999a199d908057624ec15f7eeeb2d9cbab04a1f1bce43b24929f8120994d8624368d9f58d8e77c9a10df8475dae41c53e36814ddeab59961393dad8d5981e91459e8a798acd9ff0239b758db9fd571b84662ae84dddd6c65eec5de5bd8d1fefbb296141631a1b2b8b2218b869763cf5a2ed365efd82e3c41b7cbc39048feff4764788eeba888503cdfa361279bea398275362a5cf7c58a417a9fcc05055c4f60d7114fe84ce045af638ce25c6788777cd5714821d38fc871b07e8991038811b9e96f637236de0bf646efcaa720da321d8c078b807933c711ea88fca50d59bc073a6b498a8416fb71cd59ada10d40c1592092b61c11b836c89a8498a5479c56fd82cffa50ea620cf64421be048b64f8d7313590270d64c4a0909528a4d4be245bb4b8beb9b40b51bbb26b7b1695d4a12f5131d826c6c6fd2ff5c01dd3c7e808f70a63a42cd1b1b4d03827d33d09f01f96f08246f49a5fd703c4f88f07a5b8b96dfc1e8cbd7685117cfec10e9f104a79714730fa81882061c635c8516a01ec766c2a8ad8322f422268f2e9b0f4d84433690d1281ba43cd18c8d7c630559e158e63d54d34da1ffeb7d3213d4a21a4b85ed06c423a2c589d8d7113ab31c795d28e069d3082f75bb09af94e20cb16fc0838f0e07f33823767cfc97cb2787960358bb7139e028e23db0eaae385a9aa46e2409d52eec0e25cdf2a293ab355ccb1bee13e86f2b7494c566e04d46237df8189b224a579a09bb00bde8e290faf07739c94e10e222283155e8433c4d2b6a6c41dfba2678efd0f3c7d97b324940b49981b1ff74a492ae4572fa81a8a7f8d2d45d73dca7d797f09e7c113d768168b5f3413028799daeea2e338feb29c7a6430966c37105e7f125c22610f2798cfbbd139ba7e1352b7c4b9cf597af03e521e366aea6f8b941d5a4259a250ef31b861ce786d66eff0045469387b089512f733a6f2ca5264462f0db9d2bb3e84a4077170a4437d4ffec099026ae2ba62f944845230f0d372b1590a8cef5ae1c54a689d0456468983abf69afc5d2031324d133b1bf04ed8812f532c85478f0a19ac692f731ab872a2e6aaf114ada36c144ad063c3a424788afa95236455b08dd2879a6a55d080dbae774bbb6bbf275e53435e5050cf3753ef3fba5e53d83c8d2203d577e70819651e67775cbef4421addd3fcc8f33e5243b78f118631732b33af5bc4e5ecf24c4c32ea1c3a4e77101eb10066cb6fd89efa99083c246937d10829a52d9b0c6f09e30bd28f514f0c68d513194148d6dba24db1feea3b33323f72d7a565635cf7fb55ca6084d4ea7468f655735e364e7364b53a7f23e6afd0e4ac5becee8c1adacd5188242c9bb46ee9d78846d0aa4afa5a6d8834081ee0d977b55316a36cdd6bf7d9d806e832650fc0a43eb0a7645bef5161ef57d7a38ecdf6c03ac2a15fc9391d913c88c382f57a0646501468ae9031bd0b05511936507b568d23b331f00b7389db195a4ba6ed00c4af5c6fb3a4ffd52864f8ff953d4e047d1d20d39f25bfd7bc7e6e3fff541ef2398d2ad43540dee06e286f2c521958356761b02c246b12abe41d79cb36308bbf9c24915d223ef09c1f5a16b5ff9ce31eba3d950d776c8e3e029e8e91568a323a593f574f71bb35e8097356182629c776c1722573976ba8f80dad508549ed9412e57380b38b1efe8a83ea97a13d905f4bb146274261701b3009e57f32063fc04276d7e8555fe53cfa262127ec67df9452a6c2a6847e8d57c50ebe4f12223c8375fe965e2f95c3c2d86a866d29e70688613718adc3c20a5ed68eacabb7ddf5bf676a52eeb5ac7e18204a1051de3596516c54d4e2e0fc88f7b9f7c58025786146866ca23b4606eae1fb71e00db88407ecf12bae537bd40259a2bc476fc9c223f0270f04020c0f93a30d4f2cf88a6531c62e59ac3ee3ef7c47fb2171df92f98ed9660b6cfe4c552d91e51c9cd44d5f25129f5340573e73d7af57bcd87f198cdc8f2044a4631a5b26d91a57b19bac00b79aa6a7e9856a68ceb89133096cb5fd797988e16a3d1322c4bec2da35d2438b96738c4f11a9ce3fc51b043a5f0e8c9f7d30510d30821b0f4cb80f5e20f6c3172a75b3c14b78bc2dbec2169e460dde4e9de8dcbfc7480e85acb532b82e361a622beddd9d453886a109357eebd8da9cf0a533a93cdc5b70ff28c85d28b9a6bd7b0272a42c3e3f2a955d85447ba4c0c0090009a13f1da69775d24d0866cf8b24703f18bf348f414a5ff0a91e4cf8bb268186679788cc575cfb927c556d641e31b327d30a9d13b31191c82725c018d66168bc322c611e98b3526409a14457e4dca5c8105529014c4fab09255048604fb5e66feff377de78b275322589e65b59786da83ff2ad67ea5308c830055c9aa4e95be69859a4e8e343b606808a663262c2b8c8199250406cb9a6b401fdaeb4e86b3a9ff6fd1fc2f3f4d161c41d693fdf4f4d76a1b4ce19778872507496bde3e6cdfa780f9caee1a0eac90a719ba8e2c2ccc456e50bd1a3e0de2030d757ff9185a7fc4364fbe1826d047e6c9ff4dac769dbea2680558a192b5674dc621086e4a2de4ca8c53a02fe032778500d36c0d78fa918861c70b082587b4f20c29a9d02f17361738110b8c85f752dc20ea739d44a5884e859381aa09d3885c8ac433409b18abf3e6f147c3664900711ff5df535334bb05c56689deabfd20b4027896c8b5b68e59f0b5460f38efb1338adf88237af280e9d9180b5a9a8dc742ff4e7318c360aeadca85d9076d9e2a0bdb4a1f6d64cf6617a7eeb95387100faf4b5347f361e892023c82f038f02e2bd9940e2f9920548a7498f8f18569ba13dafdbc506ae7e0a082446989156b51a9d9d6614567f5a1658366183d26c2d5c7d1154ed6742270d98f5c37d04335049e0324e41d7254d4650581fc307cb82f9a12a9216245fdded6f79409947919588e6f65bb91aea0bd4811f579a50eb14fb589ab0424065d39204a0b734843518d2b09713d7f0023bfd21906d7419a15a57d0954bf9a52393b69c821e01f5483690a65deb48f9ef963578c2e52f9eb6f0dbcad58c6c32bdb002b00b1c5afbd1883850914b312c6d42ca554b4214908b14abbd8c94648ab9c76e0b4171c2825fc4805c7f21a8397ae9e624bc806e9d5fb3e37dd8eb2d5ff64aa4f5d016b0bd17712b5d99310f41371aeb88a7bd89f6cfbefa16b46aba96dfdb7ea33b212e134f92541338ef84ddae8f52ee29babe62876393e03483ab71fe8b42e458aaeb2538fecb1276ca077c9d4c4ed6c348e5555195af8e278ee7e320898afd00d9797148ef3a5bc2ac1538b95aba9297316c1903820173e528acb896664360427dd4263c2e86c415bac9fe070caaf1e5a5a84aee29acce171b2dd270a83f169cc977b12395142820f96ebbf894901a8f94df530563f665f2726b375e32da72835a1d3f4da297f30bda905dce008f4a0638a8eb117ed700e3fcc921faa6b2035469c85848929030fca5003413f6b7ca924a75de741db71b30e012cb9b253d059652d5cb4f20142f9c5c2d40ccd9b00a899656a7a6388c21e1a862804f8e8cb8b627006bb912613a3901ae86196bca033ecbef140062d50a9f17f708ae107b50bdd390e6d82554a280b44bcb36621cc05ae7db2c8c047f04eefc9a6af3a48e638eacd9f0b78410b98a7c56c4776788f0bf3b239b715fd01056ea548f4bbcb36db238b817e11afe0226c409688b67b6a88894500869241c439bdd7d088c1e0a4a0a29751c45a08b8302a72b4f388813ba56e759277e6dd26d778bc6f5054bcc7b72c742aaf6d4ec5110840c398cb6aba23bedc86d6b9d9a18ce57871a46172a1b17f2ad2fd2746bcb1983197ffc9ace5a57d571db8351232d36d1a7f6c99251f0a3393830d8b8117a52ce16af27639220484b568cb34008e55816fef5b7b2d3b52bb40823fb68e6e75d96a04c710a41e211d4e33579f1b7289f0619a977b4cb8d6541c36e07f0618009f32a57322cf859045ecae39965cf99ce26b7f8b5c6059c651c14dd19a2db9f79359dd9c5aa1d872994f91a54b0157774dbe2a52d548ce079507fad239e22871c59c5db63f688a9c434ef684c5e92750569e6948fd11b1f61fcf97421481cb8f22ce08f00c2b4eb3cc5cceac05e1a49e50254741e655ffd2e59e1b49b89ee4a8a56f68adda87e245b4aae6b72283b49f579ed694344724a4a05d80bca00bc526196f3c598b04f0d14c43b2ae9ce00dc27353130f74d1ae9f8a740230eaadd71e4df483b8200415a940ce07a4e8fcb810fea12d06d90b5e738a2198080c115385a40b519bd8d655eed6871a40c7163061827b7469c6ce308572e0896e264cbd7c7401f54afcbb08017d15967e9585d28ac54923011049a485934df80bfdd5007fa4c5e641185a21c1014589adc4a4c5eea746a51e59268d4724f4c4d6fef4ba7c16fed22ba1a5d6cb1af7436942e967ae62f6b872459c993c77388a9e7bd30dc486ca5fe0986c176b1f557afadb56bc22da8e431ed976baa86ded58253db857a3f90b5ca761734dde224be16d47f20b98b0f5a43d813d94f6c18e232ba2b7fb54f2d6b8c7f897152014fc14a1be1ce2d5d74f4442301ea214b9a807a1ce592b207fc3cd51f7a48950c850bc6f438e7171be1dee194bb17d3b63245d92e5650053de5226be1f1dffb2e8422f22816ca4fa8f09f199acf1265a4f55e89b390fe8414f6025ac827cca71b5c4d5b11aa87d124a848c89f88d407462a25dda359628972210fb6050f5567443a46d1b1fd844713135c12d28f57a8d52f2646a6c34a81070c45f8559fc06a8c86d1ca6912e47efc54abe0bb4246e2177af884e822233340dd28659ee8159597e171f987ea817382f0ff57d4824a6820e855cbba29124910638023c429f30277a8875bb1292c33d364a9c370e8b75c7f57f8cf1cf53e262b268771ef2e6c8eec06c71016c31fe191714048bffefd37fef6e7cdd690dd50699325cb7b538d508dc9789ef9ef3f2f30ecafc73f3967b36172f2079fb48959ee2cc4dd21a40fe17813cbce5e2703dc3a05a0b391b191a3e9991fbe491ff0167e0c4fbaa4ce078c1c5440b924609cd71d37dd41237f0f1e073201e71a671cd761ecea6bc538b734b6eda8c233c8ba5a05efd3f60d02627580116ea1dd46e0a8c41784fd6ce975d59f00bf8783639bc7f8233ec2170c0ef9954d3308cd2f13e2362b391dbfae5d6df203cbb3924918a32cbb6473ef90b56279cded285f80ee2b74d4f476b2585a37e78a1ec06ee4150cc7c26a4cbb6ee35198c2aab5bb86844ab0e4e8a0eeb579bd892a664e534172f0c2025b19e9fc3c62761c4aeef2234d85aa7c139e270b2d366dedaf749fe8d973e914a5ed0627fe65b6b7e5ab9417efbc1f26658cc8149b2750a080ac34ae89896982895b112df75d9744c6f9768da0e1c51ca057abb476502b115ec16091ba1b4cc8393090920d05599950f25c9ca6755ed7c7184e5e365f887092b9f867f52f3c00aae463eec12de81ae8a04c152291536afc24aed61164b6c2380c72579a80d278485e506425f97c22b20f5917d1c9524c05a05b60cc62cc3ab44499d14d329c4fcffffe0d71528169198e392d1c3b528341a0a40fb2828c30ba2c344527f457273e0a3a6caf5d32f163f64e909b192d170aed0f80661522399362bda9fdd1627bd8a86631bec74cdf5cca87f509d44139ec41e041faaa890e4a31a6f7f8b126f940eb3e627ad55f780cf936cc5e05161d94db1c8d2cb8d621bfdb6261c93fb062184825331ab94ea8cec55e5592e025e81a481a5853599dfe0f3faa83e4b9f657615b02f6ace4329a20593343abf57311d7751f262cd735d51709737bf9cc7d5df0524375c26456e0fcaa432554e3c6bdd3ba475ba855e4b982943fff540c6987cade5ffad30b88327921f5efc82b0c00dfdb2deff241f558714011a391595364c5a80f3c586b816f030df6843ef1e860908765e17e77787ae6135d91077e1c976bb73abde9afaf83c03bc6ffd2a1d4062b54785f820a82544a86c64a24c990ef42534d9b07d951d48f04923832bc83ab3fd829119b28c43979395daa80c0684a34bec23f533acc1c7eb6528a4fd42d754f00db39b38f83bbe2c5e2dacf207b2d13cb39b31d28be41ff42b450de78dafba1f0f40b757ddab8fa133cd0e894556b67232e5c8311b9f3c77411c9113860cfef38eb8a230745b3b43bb93a2211c4fac24cbb7cf56e9a02841f3091d675eb977635526bd848bba886b6ad300ea84f342ea406c6ee1246dce554d76a79ac3f073414bee67315e996d16321e31d29a6332cc94907b803eac104573ccb900fbd78faac9950831409348afb12d9cb315a023ac1c4807fde99f04fb22452b0ea925c22412ed5974e9a1504293bd745688d7c67069363b51c34ca6e4cf5af3e16bb261115e27e1be004ebce3c7336a7bc68652fc4e73336994f01ccef483be388e9eb17f78dc85d7906083730f01eaf807b704e5a3b64ba50c5461ec854b6001ec1139ad39bda521f7850ecd8cd9bec42415e6e7ae4b510c0607b7a8f04009f7458614b3cf9e3e1eec654633c1b842f633c95c83ee0eebdc9de93ba58c62b7a7a0ff40a06d9a8fbc5fa31c38011f20ce9212bec77d5d4ace29a2baf66fd616b68cc4cc8bc4b08d61ff6a7703de96de1d4a93107c815a150d254f62837137010a201666886c791adc476212cd01ccd2d17e80ef32dc238524ed5eabf0112d6949225f7a901d402ce582b32d1e05bd7e47ca2965aae4700d8ba9f947d8c1070292231a39e5f7cdec6255410969622a9ccae60ff158a40cb4be7fdfeb9b38bb638c6b89973c842cd888a4b4b7b40f836abbd539461315d464527cb2cc662c9c2fee40ce0141694ffa45c6f44c8f2d7511faf02b39aebae4e495cc219393c4ba7aafee288547a7fd2d5a7c83b2c3920e42421010205dd510b56a8d96b91bd39da60d8728b873b39be969ef9cfb98f1629546db28e7a8076e238eba10dce00ce9e3d17f19ea8143911c604b4926365d87a6b0961547cca8a30e23a6c2f3236d4a9b75f3cf4fcce57f79dc848ae83c1d45d6e51c1cc7e4ce357b724324ecff3de3bad3bb82efeefefef3082398637483e7b045e4a6a2c387da5711b09fd6e0804525739c57681cd6c19676f2e9678a0eeda513316e1f2b62af5adf202c094e25b8fc5c0e14c582baea38cf0b2c66d42021057def4783b2788dcdbc6a0233ac899d426047c9014ea7a4d6e48a535d404208a77c6bb47638259fde30bbef44947a65d21c25430b04b824f4e4d954699d1137a23aee0af1b924b20ebc652950ae64aa27aecd234f874e658472f57a304cb9f2d92042ff6719eafef97233a03abb9ed67633729656eb1e893f13b27e4c3520ce1c95d383879f6387328ac51f21d409021a12a64e197f909730879acae6c4e19d11b137959572e52e2126b169cef6427b250fb5ba7579c0f8b747117ca758cd71207ebf753e7f9b12898121cc7cf673014501ec3c1b0c267139ef1fd2e9c8360b09f1cdd924b12ca51334c3f9a45822dd90995fd2b997bb643a30f8924bf8d80e872d5d7d991ad5ff09a811fc5db923278447f4b74a74a4952b06a1eb3ec835eb923973d574ad87a15d9700b4d10a42e811a9cde5971f61d80e71c2d0c51fe70c3b9e643884118ffc20687d290e6cc0c8593c5783a28b576742cfe46d4e9e04486920d9dbad14e1b1698dd24dfc15af49df6cfc1bad78f1ef1e17f2e76ea9ce70b145ffbb455ae14ef1882155b5de5d4dc62b321c720721a306547de4b67353c3a5f035a3f47bae7e1fbfe799c1ec8971154d33ae8ac7779287fdecd8407fe9c3e95a35e10847f6ca42c68ce354cf5173a4d8b6ba33a85640a20d561df427844433b59e86336183ae0589efa2c70e14a21c22a343ecf3d8f68dbe9531a0ee935a5c2d7ae6deaf64fd9a99f5da078ef833783b3a4aae0767732d87eb143446a190303672d9fe41852876a5c6c81e8d733037f2f404bb3afc82624bda2fe4dc27bb70380047e03ad8f045391f61cd03f199116ca47341757492032f05edf18d391f2f8fa165676a805e4d4db27c9b219914b55f081a62c08feb65e9d8e30901aba671cc95a15f63dd5220ff789d581d33c7033b125ec26d34c3367f5f62ab9f02e4dcf9b2692127606d68a35bb5533494239e89840ecf272c95f93a277ae44a6d385c8ad94b95d7c68da8abd004973531987d9d07ed35bb5b28f9a8f50e18b45191ebe464b92191cc73c1b1901ee5c19947c0627d15fab524cd4fea4b2850a18e56e0af94fa4a15f0b333351aee9c2795e9d758873a647343b0bb07a624984aefc2957f8c33a679428ec0c16763c8918476835bbd03d4f50d47b86a7bd841484eaa13fa52943d29a6bf16616b2fd735064b99ba153549b53bb1215df6d907fc70822d1dd05fd4a0501e85c58becdaa834297dd4ebd6071d7d820204161b110f5122a4f9ac20ab3414b2a3d24f0c08d6df75d5504b79e5fe788b7b78184f2cfcf5024b6609f8998678e85b7f5ad451b6a77540e79e02c48906669528102f4c02e8c13317b6662646690eed8b62ed8688b22ab89f16021fb5c422b30dd03c330bdbd12306374a907ad02b6fc787dc99a0d23df249bccf84c1ebef1edd2eaccccf9e7a640fe02609c2d3cc4e17dbe28c3c78f9e6e59dbe2f5081c903e430377c74612aebc62ad13412d28193011d6523b79d6ff665e34ff70d01e0e7a1cf642462e089641469631b04c035335d87a9e2e84855ba6b33efe0b98ad32b8713d1c8846a3c29a10a6b4728d259994815b8534a59357428cbc1a93d3cc3bf76a83a847a4f3b4035ece5b75a4435324b27fe277721eb35f84d3f513dce4038fd2af94c75bdd7f3f71a1896a83d7f2bed9b4f3bfd71329bd51fe0e947834396e27e37fc659446a4710c0ebfb5f7b01aba28b0c29687a611b841eb21971d028dea59231e2cf5c680c66fe150e90afce22a2654a68581745b12503a26be2dcaa8db3f81ac99a17a140aa4f5d370c746ba9df35e54250c55e998f88a16c091a3f2be22914adee2ecec9f1fa1a463c8fffc16bc10058d0642ef5df5acef846f6276dddea470c84e2273c34efd47224b476307e80b458d461dfaa776a0958c2126e0a1ff6adaad66bd010b1402c7cf53b2c74b612ab04525ee677547fc465a4bdd3b53f3e56ddc6069dec58320e3ef17ed96d985f866270c853eb8e2a253b9b2542d760d074efd79f0bc964b5e66dc9344a840927203f371ecb1c909839566651ae384b77c63ded78e7aef28d29ed11758d3d5e50141cde2926753b474eb0fd14ea86e4b133b87be9cf4e2696e8b436c0d4d461a6ad0085aed68b981e0b02178dace4ce132eea6989245904f293e77c6ff4f840e452b61020f160b3b9f5e47c97a2cd3e43db0f9d4822b27f51a18e88975be3a4939ab52e76e6d07d24b473a3ff10c6cfd7daf62d3ce919f4690a1da08ad4bd0a835010fa368e6db72303669d2f7aa9713ef9580e8a2c508b15417e88718c6335b4c3eaecf2a31fc93cf9763526fcc7cfe4c8de72872110007a3086c3f73d9c925e3d9ed1a4491ef50c6816c49788adc524e6ad370c9b4edb1fc019de86c3d196b1d898a3a5659fa1a17199ad7a6e46e72df3d04c9c8dc9d207097581b2a39210b91d806dafecf4a4295cfda403750fc4f65e56a0f0bf2d1e3bee4e79c8238468e02275bffd59f11aa85add0d5b458f0e20de598414969419ee6fc360fbfe4fa3059813be8b1d6abe81928581fc9195724f62f8262f817126714f76f223a184f4a0dc3a474746bf4d4b12682810afd36d012f0311b4213f4809eeb0d5aba29d72f72d0c464dc379195ef05072d3cb8857ea8634454531f8a6ae00451010bc25734f2604babfa84526fe34e094d01b0980b7caf8ccd7d02f74a5809adc4f20d0204fe1bad8fb3c5d7ad9301bd1a808e02bc518b70c40ba5b08d5800409dec0ad4876f229737ad959e82dab930b6c40501c57b1cb0bcf214e788a01fdbe2c2f15dc7d3e2ca4aecd69ff0f95e3575a5209d8e11e67c7a56981ad23b2844c628e15a24f2e591e6f0358801d4c6f8515e355ff6e00e2211665ead084389eca5ae08bdf45d64d9d226aaef4560aacf75803dfda4d05c53377b907ed8bd761ea5df1e61f3dbbc035746ec6cd82757edf4db3c5586f497071c177253ca0364c2d7729107d6b652cb22a58271cc791a0683dcf899950d39b1529423e1a8932dca34406356b46600cc705d792a4c2a732a8bf3306103cc645e666443b6d2935f56166350f31c39c467cf54810bd6fa814cdb3238807e57ac38e95f9ab4d0b7adbd8379f1b1ab17ff0792e4072b3baaaf7cb468c672c1632a40adcfc8b7f08688a16fdcc8792eadfe684aa05b6f80d84f4a0611fd1d77e59305edb60aeb761a97388bd55206f16214900b48ccdff4fb89d8b11cd65ba3dbe8e8bf847cf1cadac1d533130b30cd29c903405863541d1f4352f02d4d2de1b7eed5f74fbb43ca044ecb900b83ce862a6ccfd148862c822926858ddba7d6c608cff1c04dd4a267981b348a4cc48fb4afd0c54a0262aec67a81966afaa26014b8a66352d6bfbda120638b65aa8ae2ee769eaeb36ddbe8f0cdbd6684ca51340bd71ee0d0eba913ffc6465e54b53819030efa867dcd9f1b10670de74d763b9f9b829832ef39d3dc143bae6c6bc38821e169ef45446bbeec92255f786a2a5953ea8c620d5526da24f53f283d9a6d509dbb27fbe879abb639224d74631b4a87ae18f403aa946b203fd52bc6f4d4034e9f0722e666e1303196dd76d4c47ad60d01847c753e4a2c597814921ea5333eab96da4abd3ffcd805b85b7d8a3e5e07716452d87a49197b789bd98d858de9c69a6f1f2830a85f06dac4dcdc16e297f7c9dd75cd7b8d7faa6ae2943e1bcd6a7e3241e2499485c9ed1abcdf1baa3398d49e9d2eaf9e1e049731b7a95e5c153224a8b2c071cf1d1bf51b91761e5639373f66664aaba426bdbf81f3025868c5e78d8776d462944297f4ffc2b59c56903adcfbcf559df870b35e9547a79a3f0a0365f23c8c7aa519d4c0b1f7d9a0e276c99795fc4878874b1dcf090a33de98045311a9b7a733417ee21ed3ad655559202b67a6906aca09a2c71abd4b7302d0b04c4b824f50ff289fc048b25cd2fa88d8c5245d9b49e6a1572c154a316351d92e80417f7414fc14358d6613a9d30415152bf5f81440a4f7330ed4c2f36a83d187e340fdef2650dfb62089b7a0f48dd01e18b9b56fece5dd9cd720d88a8fe7dbaa95f8843a5b11f4d22fc61e945587644a15c807146a9a8ef05e1e04535763487398099a3e8265f2c1d880e1eb88205b0fe3dae744932abd60aff51f35d7106cc67619b30ffabd652e148f7acd713905d4e5acba559046f41ff1bbb1354d51bb16b19cd5be720edb04fc97e449676d808f75c313f4f0c92920c28cbe1e7d06636047ca328c8cdc8c1d4436e3d0856d2ac6749c17363a935c8f5dcdfe68ece9bc1779e83c3bcd8c7e92de9ff8f7cd827c2ad7e1e8f9eca7d7a81b250cc47dd67e7794768fbc72350e380bfcae2cca0d3291b6f8d89a6318d2efacab1d6e59d92dc99a5e628e24ed4bf2ba012a121ef35497055c793d4eb62298cc6247adfabd768617addef879537981b55b11d3cb8de3be18d406a2dbdd13c5581878051679452e71799953ac943701d1337c31d90673422e5b8860831ec9554301faf76936b418fae4c46f3b40c3adbbb86de62c01aa210993eaf567d3acb7a7c341a8b5b9710b9e6df6ff6035ce2f32438f1d5681d84f77ba8adc5688618834cc0325f53aae27f537a8e3366074e90240cd75544e434c7707621f0390ab7064287b0f85aaea5e7195a3f3b237d636c7a6e0b3a3929d0c00713adff9796d59fb2806a3c72740f2cb3b23093f7a2ce21cfaa191d8caece2dff9ba2d4d3f8c65ddf6491f58343287481097576e6965bf1bc3f688a5aae268c15ffefc8d3bc10aa53c417464a523ab31f0f0a454929fba30a5fdce1044605ab39e7376f4e4dd819f808699637e9f2b20efdf5895c3c2e89d15f8cb1ae0233e14341c654cb62c90affc1c00a71b63cc0e391fe429f2ef32cd7e6ba4062a78fbf69831a16b9749d2b29b028cb0999e43c8983103729ecb1ecebffbafbddc695a8d60e56b0e8df04f5b64371da0963aa0002df4c31e10461adb45e36f903f0d0ca68cfc077729d9d9e3f093cde3b4110da623af2105c2206d753a83443f85b3ac25d9d2f2d011e6b2d4ff7d965f807b7805f5b184f35c059a9d72c491c8718737bed6b3d5d9e60fc8e43e345bda04f6786eeea458ed520f991e484054431d6108ac94d2e2ea7bdd7ada1e9684d98dc9b5942666d78f5787971e77dd1156ac7e5038e5f57a058c5ad14e0001177694c742a022e0ed377e31d8d5ba8b91e341b87f7dd44aa6780391a61476f064d83d4f6a46f0d5dc899302d495777ba889a7d93cf4a97abac84055d5eed3549d1a43b0d98e089cf4f853a9497ac3bb5353a27c746a5383d93630c1aa168a4b1d338f7623aef94f3b52d36eee6db00854e287a59e3fa42a69110236dfeacf20f15492d97f85cc799ad1bd5bc19846bce01837adf080d523ce10469a263e9909387fea6dc4fe618296a2302d197a3cf8732c88dc26a6364c3ae38b26868e9e7f2915501bb206e2ba9bf1b910d27536b11fccab279158b4b81aaf032b222d4b2769668b401444c6501ee4fd3c75368bee21aa5ce394e9448ef69a93379f1a163b396133d7739e1a02894acdeb4172531f770109790fb79973dee55a2456b180d1ecabea85ab1c5dc74fc0be9a33d7a5436586ec98588f92b7b2412e033a87d419b98ab18191bc111d0a8f55ca33b364261a467fa514ccc7ecbea4133b3152a30e39e23e9bfc6c8338491502b58a8cf245f9884988f349e0af0506cf0e65aa39145683573856ea77a71ef663fc769ab96de8ac029be0b3bab66becbeffdb7479f9f7478c70cee3073881f19a537b3c0bdbc2de29c9a6547017a6c3c9baed89be1ba9aa0e0556c31674a505f279fed2c34f9f9530c987c25d001a9198517bbf72b4259aa6d1cb938bbab4af23c7834a2bef2823038cc4fad729713a21de40b257aa8cf9dcfc5ea5ccb994388631bdd89189b12b3b419c767afad8f9ea99f79bceebfdb4f797e358f704a63e9a0ef2e5cf54b6cca618e050b3ccc3fee4de73cc942c63398fe08adc665f1f44524f9073896ff631a873e4cc3490e86a67d6cc1b8e9a69f3ee5e2ecc8a9e6da78beb5196ea577f462d6b6d201fd4d2ca2e729bf736329b64d3c8df8d39a7ec4f03136aae3b45f5c7566373e3d6b26121f135d66bd125ed918fe4397229038bc2ef7bc5a60bb797b72de9c842eebd48c5953050c72004d2f8c2d93b588dc641f7384162fee7655c9b8bad1cac13d0fccd735f2d5c59ce80f2a3f8e0dd4654ffed553597c3918328e085d3905697b00f3e2e143763f0c0752118783eded5eed2a55dc0cd6f42418b4cf24e35a86cf1062b5abcdf46727a3327a458eb55de4a97a4027271b4571ad3b4195d72ad652a26d8b746d327f88bfe8eb21b6322ba54c7059bd9a5860e8122831e6592d1c7be6774f1e2a2bb001b742bba7468c34f78d4bb0b21663178a3042f842179ee86d4919220a14b00730f410fdb8443007573147afb55fe730eada5782c674da3b0bc16fa274583667946e7973dcbdf351422ba81ffc87510d15bc02423af58c68b39572e2e48c35fdfc4ecac13f7883bff6527535ae00f866770cd6f0a562069897fe572cd56f22d608925edf8747a1fc544fba2183c86b780a10e6f9c8790c875446c065b547005572cc39881ae617f23e9cd233a0e86c5c4403226bc035240e3c819e033d9d2d21e32e672736dec35b29a8160860a2c10992875e26706a6791db4ca0db817b84e2712a573085ce7a9d1806ab0166bcb2195d2aea6a988b3719faf164c11000260d9ec0396aa12d12e36709b6cdf93fe97ed75e6a2b4c9d94183e135f7f16f1a08ebc193ed8f8caee2af66e33277fe0d5455d73e2df5af65778c7cb798469c1b96987998cac4dc501895a0bc93fe868f8840b9dd7bd53446f905cfc3d7ec5fa76a1868001048f23d349f4a11068287538a40a99cce90a8be82e942f139e1dc644a683e15f4ed5a052f9d35ec02f7faaa544f6b8b0954605fcf8425d5290e8a71ad78382902ac86cd9ea47ff022261c9f2814c4789d254f9df6a1a2f474a69f2117176f22859f8e7fa8c70c3736e4bfd6bc0ec8622fd22240c53f6770cd20d962ef95a6c0b2d7eed1d0e6c7e9930c52de7a1331596c570520cbd953ecf9598497268aa5581c82c857274dca51156a4bb29f1ca8b1ab67951cff328388a06108e4ba4ad6ddd715d2e121b35d08d19da48dc97a82ce365a5b9757e35e86d4918788b6b6a738f06608f7778c0f8c97762ba1db6da5d46296f7f1943e3c357f547de2ddf59d932a5da3a163d04665b18a36cde4facf4b2e68322a758783aa2bb27163b2e1eab21b67124757c65413e6f8764a102b5ddb657e8425f9327df370e9e503c2a66b40149e1e4f72bceb048f4167e79710455ddbad88125d7b10d3b5e97d7ac96327c77eb7283dea750154469059fd0310bbb831e66e2b698b603e00b9e0de78507ee1528153e2c298602fbb280626f51e3435fec2dc389332c2ea4f22fedc3474206f7e51eb349e6478804d611f19bd63d806bb2a573fb3cd1cf9712ca52f139213940e769bae2afc342785a0e22a5b0fc72e4580074408dbc107f32465b8c8c852abf32edbdac442ccf8e9abbfe49384bb02413a3f1efcdb319c78220dcbe1001886dc7257ab15d3f12c917598fa9b24d875714ce0f397866602085af93eae395f997910f84f3931465d139ede3a77fafef7b54b795a3ab183179843ef626352e8b55d96c0ff2c71454e3e8a9057a9de2f0ea30010cb0469ac4484ff545ffe526a13906175b408c2ba658e5482b29a20205a6c68e001620a1c68798e1299d8fdbea064466d47d5b8d3ad738d2544f287ea20583529ed0f55eda7eedbd9c18a0c5d58590711f5b058a9727c8160a69cbf439811d5dc65948b1522466033fa3e4834a1053ff0215427addf080a2eb3f4e9a0316bc4024135f735a1c742684b4c1e376806d484db094a916cb8404c33216bf47bfe6a686070f0e31e697c64b934c49dd6d5ce98beb21d9493ca5faddfbf7cbe962a1c7956b6321ae346a77bc3c5595f0ee23bcb8334dc071aee7b93e0a85d2bf5eb4d75e219ae3994a43a0892dc5850aa8bf3600df857183d89b186bc0be733b174b1abc39c23321f0a6fa7180e0c62718eb69bc4297297367ab44ebf2b4055c20919c220e4a059b2c6a24b3bc19612a609613fba0d3d93438ac5234ff89b3a39e0f0dc5ea5218af6e9dfa74dca43b0dd2dc60aa4780a25245074a4571ab49db1477152e4317eed0e3709d1c25dc12deefbbba97c8344af7d81df3e04cf212ed082f2165df6aa913e19c5a2903591700ffc1a74693da7f9059d8ee69bdd912b633645b45db586c6743b2b1421a47d512e4b24e275cf61adad410e90e146e0dda85528ffbf7b3f74e495b2714ffd8aec25f41f333df169279ab1bb97f0ff98e9c537a70132d38b4f4e011ae9af4fcf0330d0af8f9e0668a0579f4e0560247a8df9be13a7f0c637b15ed5f8aed647ecf453a5d14293576aef6777d0174d60b40dfe8cd8115d7da9958381629d5ff51fbb9c90acada88a95dfc98f9ee12e89f2c55e81fd6ed1406ef526487585bd25b7f2248aa9728e41170550dfe42dccb3fc766c4bc520152440f75af43c6d1064066ecb4ed62811589224e44c75727d2173f3a36ae92f2a273babdab411b2c85258bbf94bcfb211812d34fafb6c8db267000b539376aa60a68f9269f004faeeafed3a61862a3e3c54e71d3f3105e89a173be7f9071db247a644398916684351f0487c7e153bab23841e924f24e8ab44f767ca31faeff0e8e954bb9bde204eb281ee75f062fa245257f61ac0125b5cf467df8fce072d7c289010a5745601b5c8b68cf8aff32ca2ce600308142ef74e0d1123b23914c77802312e6ff7587dd69707c52ac8186bbbf7a337b9142eff53666ff9af99c46f6ca58c377836961dcf2d95fb1ac0bc139d1dd596e0032a8d0503c6a115cc7e02e4035ed78f0116caf04157325ab1e6d8730ff6dd3364100f64663480cc3006891655202ad1477ca662d172f581c0862ddc233e9b0fb826f60717cccaa3e9c5f16bcba430ee54f9d51349e449b07b4dc8026d19934bf18aef1f3e4435b10da6342fc6ceb8832a16d39e1104a0943032759d54d29e5d698c48693c44bbe6ceeb31b034ab8743add5db41d6b440af95c8fb281b7cfdf2c224a3b66dcd7d4867216f505eabc61fe6774cd21265c8d7d8c82f0afb0dc6d391a3b2b896b6991b76e37ad32b87d279031e486a478778f6ef650780c504cd2a13c567c7f1e973e0747bab2a26f47e337e3c318044b1af6ec35d67b1e8bd34320a29f5b033b377ced9f733331444832889929ad3bdfcec93a43457abc41b65648ddac8e5d2972ac82d3c4148e55cd1df60672689669ac41b054d3b4f91e552add4d964386383a31cda0dfa5cc87b43cd7d269e2d2ceb48ff4d04c6fef194f8d370b46880f962e7d24a54d2aa864bb02ba6d3f570cb79748892b1322dea6ea4a96033f778dc45828c49bd2be951b35e8654d9eb2b245b293306a193eaae36c94f9a5648b1139387060abb686c66da8479d076002418cabc56d4fccdb3bd1927364b11b21b507c0c0cb7494f3259943db99375240e25d10e678a292a08e24b276eb8b3909f59929254dd50e4e2ef9a72ea3665ec59e14354ebbe32d24c947be99e7e68c0bd2ead37964743e3dd48d7727569fd69fb4f7422b9b2909456ecd08939de0e0300edd50adf5f05a1c509077d1dc5e7c20abd328add4566ac70c2c681d01e3911bf774745536662a1107fcbc85d28c6c4eec12704b1615626604c2a40a08becbe2b27d0554f28bb0cd37f7e1fc2ca337d5db58a8a2fb0148921f91f626af82824e7eb6796fbbbf8a3894a1eebbc0f4d18172a87d51a17911dc284f1d193f1d2d5286221fd225a1f54e378ef4f1127e283c422b991045fe1c6051bf3f2429ed546fe48bab047a762bded7d9f5442bd891651d2361686a6f4b574302efdd4cad67351bafde2326170387303da95b9fe1fae8b3eeec7971717eadc825ecd657aa1f9e371d51f672ae89769068fdff4a444d4cea1a5d95b9676656fdc4c11a1c0e266600a0aa457de5b91ee03abbd100e90636817773bab43780541f35fedb1e474e5153cdf0e0da2dc9246d8981beb69eab61e5553b69c61891cdfe27ce020526e9b0bdc9715fb0194423be959a08873d500e8a314688ad5ebe12e00f052223081ce978036b5d413c2c6853211828f8bf2a862be4b01c4355f062e30f2c9ab65a19cb49ac6a7421adf2ce0f8c2fcba613f227dd9c333f5e33754c4555752f822cc33ffa7d26e8beb605eb355edd3efe9f76c72f889e0169228c445750c2f780d8b7ae4e37bbdbe8871e5873b352c8fdf5ff2f9fdd10d64a09b15d698e3c141fa80c5b2aa761c49b1103d6e43907a89516204aa180b5180695a1e85823a006da8e0db66db42c27dd388ad4df529ddc7842b0f2bb13f4a55c436ca1c1aebcd27cb5ebfeacf9442a25cff74b1933bbd2d5ec615dbbe20ada66f5086be87f4c9973c8e0b38ac1def95e534d3e2d7636312105feb08b1677e36e2ac7fe6a3f96a34a68b9eb5a24c8c49a39cdad2716c17621bea665946f6c0e4b2a8651932d0c826712380354a365d39c91153e2cd844cef07d4fa96bcd7ec2bbea5f700bd1b5892c4d60d44b5a400e9845631f7b16b5d0f927b6c78d5572e737386681d125b0e9cb5bc4f85faded77ba5caf846bb3acf8c17281a459ecd0fe52e0057b34c94ebc231177248f236c608eabccfddce8326ad2f37a00827b52ca454fe0b8aa84780b971bf34da2d70a98dd99960b01fd5e676c5d7fedd3b8d8d631fce2e9ffbbb167202ddf137761c0551013159c3876093dd04659580c471ccae7581e624216bd8a7f503a653b7fb48629a68a1b354780ea698fa1fec1b1187af3eb042c66c14a9e1204ea0cd75f59a6022170415cbff42486bc6d9b153872efd14d2f53fbb2a5db4c7848c5fc34233f25b387b45a5b89f7c40ea52a1050b642ee68b834365647136810016527c0113eed01cd419e25d35fe5fd7e798b8cfcc5e28ef81f7b18b797183f144137752701338cb135a50692a87693de25cc145d8157d4bcf56b20f26c24d98564b8a21bab7eeaffd64daffccb0e8c921d6949ae40119f3132a1461b3a3eafdb3f6134893b588a8630bda3e1cec98d468947c07a216e59429e6eb006b25bad28b506abf7fae378e59c12135d7d81af5e19c95f53b261814c230f2adfb8730f83202a55007fd1c0010ed39fcdc134f601b35a5cea375bb32585142b2101f5a129e14ad3ced0ba66dc2edfa219884e3ea1182716279996338ca3ef7653a5a4820451e9b6aa1120c823b55aa6a466724d497152f62b25c1104980979b5bc8b8c2d959f05e51432a353558b2692f252a9cd2761be2ff979905ead2751c216a216a0e903366bc546058f95c567c963c812def5de5ecf1289949a51c15c99207496298ddeda3eb74db134d79326580c6eb57697048d4aeb60c87fe9f9ad7e56a6e9f08ce9bdcce0580b6ad3c0d13f749a3c45a03d8eea6c923074c6a794a307283eeabfb3fbcf46114777f2a4103f9af7a2e25430b21f0381450456d4d8ecdc64235daa61397f755b25d12be3382ba0ac59f942babcb9ca5b2d448d15171f93339eebf482d574dd8d0c95f3aaf8431725fcec91323b73b5bf34c9db9975a7362a97289a10809804a4c890a0105529bb7eb3a85e2f0f46323b0f045c4d48a7126b48b93423f15af12761733ebfc767cb018875ad6457c93fb5fc8b853bc8842b9a08451b9c6537838149196e2aad469ace337963d04b3688e8be16d172202a8e5b7440935b8732972dd7e52fa30a91a6472a3f62a859503978435417e9182283de0af4846ea590279ce837c948b5ba122ab29d2552fe76750892c9459da2b6404270d11dfa3890bcbe0a3f1a28252af44f15c2189603fd248dfa4f6ea13e70c3a1744196ff938f9bf7609aa04696e88e9884469eeba66513db9095a99829a43713ee969948fe884760105d00d391ed7df4768305e71097d13941d24d1866bb0268ffbad3ea141f19115aeb15754584d65ba801f5d23bd2509a66b1ffa6ba44849c1a411135584d2778a96ca85668846cc7ede98cf4e6a931208305893e2da26f4f96afd47f40de7fde08ddf0ae6f2d1af03f4684dd6e583d64ab641cf16d651437c6204e2e6c9e67958d02e7b3a2e1e1d427fcd831436628b2e835ccdfc425021c87ad70617318318c529de50ede93e9de7a9466dac823bf4ba1d8e68b7464ee834133f982fe9381e3dc9ba4da1cb0d2925adf5b1bec575b3984a152731b065a0d8fe35301097283b13c038890b0bf00cac22252358b068ed4862f8268c8f556e42ec4cc4bcc4ff10c9f53a83097ce8791e3567792d55f8e92380013bd8aed2b5c1f9d7855dd8520b2960231f344dbbc34b271d56e66f2b51c92dcb964c9df57a558696099b843cd53190f7d5a85d3f5d63040c91eb1b51c83e47b3e443c4509ff380361b505e5e5ccb06018eca0cf83cdeef1bf337513d8860896427e80a3118876f6996b7ed3c0571889d5c69ab0900cf1e8c3507ef8706dfb2f103706ac9c3d8028211d85766f498d97166e6d951678ec4e4535d177d0f8030581297d5a96cc967e3998824da764a9ca64ae2ddf1eab76417ae425ac8360a5c9ee86372eaa03ce332beaea63b4571c685738e8053a18f1d97a3810253022603b73ba18e45b75080101ca3eaed515aecaa0a35c6cfc3c64bd108af721500723d352d25661b6a1ee0e0d735c5f6b06e517e7e37d4fbd11fb235c0e5428467df6b197aedfd5fbb2db123c08befcc87a23c23615ddb61388cf68f2cbf5bbc9557610e40a27f7f478b091f00e4c814c3660f8f2105307eae04350635cc173cfa68760ffb8e4113e51c35ecdecb1c10950cc132242ad4e7e82840804a312c8a704178d4a7d2f0479bf60c5201c40d35c9c785cb727647bb873c9c9aaadd0d871bf9b03a0fcefd0f033994b78f0e0dffb989554f06ddf3fee1eacf7db88fa0b1437123e2cf7c162524b18d61a8565f779c0f5060db71d46adf78c8ff8df9800e5be8796df26ccb0c5fbfe417e0046b62f37cc01f135346f1d9bc0266f80f8f14a49f2e7e6ca54e6793eae6aa76474d4efe60c28ff3b34fcc61cc07b67346e798e68fe61df3f08bfd25cb26d571a91feaf32972830d4fbfe61fc0cf09f0938cd2edace6cc37d0766a0ca84d79632c13cf3e04d8d23a3f08ffef21d9009b59a2d806067ef78db69951b395add48004e1601d69ca850252c214fcec3ddbbe9e330b93dd84e11f0aadc4f34a3f63d4958511405efd910bd4a2ff9f9232c0ae2064c93e18962b066695afd3606807d5baa6c3d077448f32a1e7bc0510031a3d475260f73dd52163a1f658cf43c3f1a49e07d55f9bda74db937a2d059bee25aff51e5f458571a63a209224416e71bf7dd2bb43013a995151720c089943dd928e14af76958faaf5e13802e0fb285b9c5c9d6bd988d2cb62a15d7efbf0d8819500d6fa722928cd6ebcc5ec569749415c7ad293a6cc6bfb24ec718c471844d5a9bf2fcaece1737637be6d76332756598a37185e89ae87dc8b183893a7063b5ac56fac821dbb68c0380c52f25df087e0cfd5445d8c7c14a852164dd3efa3e38aeab1f56bb3fe7c4eed0d49845b36c0697bc4697e7de4cd63e286b11d8c567e70d3825d5931c59c62243562919f53e647ab3d6c9e99fbc331408b5009f131c7caa2d9253461a5c10d7dcc330aebfedcf40c2f009d84735526430606bf9560293f9fbe2429fb756601abb823178a16cd362a83277392c3a874ce602bae0dbaff20b9d407227f0ed63124fd7e21d319b38c1830764b9b0883b4187fad267b13e10b1402e7b764b1147e66ce658eda8f70d52f5bbc0818d5e12e366cd07ffdf480f2c01df5a422f762b14db4816ae65d35c2ac2262761de41718061e1f9032480666b10bd0f922e49aa3b05bcfcfb2b61984227adce5624169385553d5ac5b91c0073e38dceafdd0aab05f2c9703bb471b9a6dffd202fee32199bbf3bfa73dd60b5ce3c176319605738db48e4ba7788bf94071e1a5b93eb7aa676ec82fd8af6c51e9be236ec8269bb1dccd2e44495c6d9440535a90089a731c3e58ff3c1a208cd81f77a801f71e4a2df4e8dc2585e65baf1cea354d05942623e8b719ed5c0c22a24e29cedab44f14267f8422b830b37ed2823669baf8aa71725ad0b8712cfb931390e2425ccfa07007fc53938305c6cc0306dc5a1cc7158c5c9174230f5e6e6b858b8f903b57f90947f0447bfc64ea25256abbc4d1ea805c801eedfb9c318710ce7c4d44cd91b966f0c06c1d04ca283dab627ac990d7cf39b67d33456754099c95002dec80627c486dbe69b3648421273149aff306857ad85596ea662cc330b56b7b32f80d0b9a3d49dabe96b1ef6c97e1075c68e2c6e4756bc8941475c7c807f076a08486d4e83d2253cfc02fcb63d79e43f5d92ff080e3daae759c50bad78ddb1cb3cb8ec7071630d0b90609e0cc98db0a7c4c5a1a85f6c482ea1d85d1da34de9a612e707b14f15ef63079af011285ebf9e65b75430534505d55f350dbba1f2d9e7377a66d68a2d7826f92215cd4e67df90cd97a8c3592a46b6e62f89fdca58d439b0bccbfcd5570bdad6d6b37af233409cc8d8e7da456b2512b62212c700b395ce758107f3f351f697c1bccc38f1753e78ffe2edff7d88da1be0552ac9aeabf7e55c51bb0af8051459113d0b61567af3ae5ffe24ebe898bd1c1ab5630d33616ff08b61382db6fd329f5dee61fe36826f9f8e924e809183c68ca547c30d3edd49e6f8e2ee8eb8a8b02b0fb8da6affc6ef7523fa1acd369625db9093a97fa14ebcd898fc59907f98e97ef58cb06553734c916e26e63a9592c2171b908ee10d0e77561c417a28d49b5dc0432933685cdc2710dfcc0ad7bacaaa338168a411c6d701854fe84122c28421d8e644c413d0ca78f8599240fca6f36df534d746525608fcc6c5e9d086566e9bd8eaacd78e4a21faf0458d5f0f892325ac7e8482a0940ac1c4499e2169526a7f64102bc390ca784ccdcb44bc77e895a4e5d9712941fa3d9ac29cfd59fdc3ebb88cbf495bf3bc69c2f45693aace26d22c096575865c34284bf4655702bc72abae802ba9c494f8082e3c208d6c7e728a86b5f9a3c42a1f104e668c7987b78ee682ffbc68ae889c93525b6024dab7bc8afce30b3269885a183363926cbe9948a86d20c8c89e6594c2d8defcd8cbfeb29e33323e59cefe1aade72d77c7706fdf9bb7528a4971c88af6da2dee5f18d2ad0f7b5f418d117fdbbe322f56b4ee1f38e659749e59f7af0ff10e29a8ece454be83b43025b013b69b04a5b3c2df15e3a682b95892a258475dc449baa0ccdfafc50d637d26edf2f4cd95317c21ccd2df36ef334d2cc50abcbb01ccd3ba049bda3b57d76c4584a589425f4e00333cc4eda4aa012a1e38e08e90e9e267a67b471671565d059c233ce6298df3a7eefd61b43346d548c6b7a1115cf74c1e07162e75c7364d1b447fe2d9b05e7146f9ab95cd2f7d77e78082b1d11e44ad42f8e3648cd0be3292950c500555a547a1ff0e3ba9e9af01a2bafc2b861727866dc0dd3bebb300ea33f8864bfe69fc18ff8ffe40a21da1b2a14145746f9c7ec4605257472d805173ed92350a05b56c1186a72818b0d65f746dfa944448013dcb46b7bdfe598f0818e2231cbb461940499c1197db2c28c08dcc159965050dceea748dbc79076673b2e41b8b41fc0050ff035ceecad54478ee1efff4e432d70e7ee65f4b23f9e4e3ff41f8b8bb7cd1b99ace358ea2a241accf2cf52e05633921cfab850fb852ca0f0b064297c41577c6ed1136622dafdd83e2b9b5b6a5d4377cac59c39a2150dcecb18dc206ae616b5f82fccd969421085e3cb53d3aa64ac1df78eb8872d12006682dae9ffada20dc997791ababf409393d3aa35b0ef1c7d9d7d447a8e67848f41f077f0e7c830601e80e3bf519c6f7d0dfdd7d063df0061d949c5de9ca9411760378e0d19a0184f4aa6b68a95a6068c5f46a87f2ccd0561dedaaf8a1c4bc929c3825376db4e54e4bf9176a0033a3ae023451e22f5b419d1a8ae780376f372207fff7357a94e292192f2b63280a2da06ffa721ee4b36ecc013091cc81d47845eab74483bc547082264ee3627dc273b6ce46d07a417a84fa509bd1ab684c4d300cf06652a5617acb348215185b814ea241026329842bbce9425d2022e66d7862fae9773dd363fd85c08f73fcccf4fc945da0bde02e4e6011e5a8550d12686a4139e527c109b92349a0a6cd926d779afd2c3bfe4081bf3aef0263a3a0f01a52ea10618900bf0d062f3710f3f4fdbacbe37ff57f703d04bf21cf42adb89ee76d320282b8de78b7a5105cd705e6438427301e3ffa6aa86b163f55931a197f65e24c1dd9a7ee11f703f615f0aa475e0e68c722ee26af1ecd06b3aec88ed0abe4f4c5950055aed32d49f503da7c80b489d590b0aae2483545402a3cfb37823b39816be59880e8cfddf0c54daeddaceaf5be0d7f0010a6f15cfab475c6ead9a08c78e1080f99eeb06a2fce41dea88d189300500e6b7596017a41e70229a90bcd9486b813453a4c10eb060700d929df699dd96af50c1cd2e1028e7fa875615550ac59427b18bfc757af9c804d74e4934d02b406443a2a415fb19b27ebde9aaa4a826aa8d22c661670f952c3822cc9220eb4a66089a7828419c15222bcca0538b2d0f5474a55f071da61010054dae8fdaa5a9f4365697d165fc6b6b054920e0be61589b17a8845d84d819222b4f21f5e00a1e26fce0fa99cd777072009807cda14b07dececcaebd94d67211653fb4b3a9785e4a890ac81e4235fc890b73558a18a99504a154a2ae8098122c2c7398e8f154914e323d5b2eabc1c5041fc6e151c28c1fd7b3efed89922a4ae779c6281fac9b84298fce1399f56076238cb19b4246e68af283443227111c7fbac0cba88ad93bf5257a6bf7905a60c3796445d29e595f9c57b1a6aa5d30033b25c095aef456fa508c9fbf55e8107c0de8286d9b368dc7a9b8166310a7abf8784b93d91d5cc6081d555201a618f59bbb7c0403ac969888a1a81f79df9d8d32e3428124190fbf3029fa1b8eb625687d6019ddbb44548f37cc03cbcbd71250c4067ed12527e4aeb25612be0a6ba018a4e144c413a5b0a4b30f26b8876185a576927804da21b4307cf697661713a09a195909ead4006fa436ced987a924faf494b6a422c924f87c41a06a8b8841256b6d75b84f150620eaf0fb65189dac1364bdf4c11bb86e39812fe7f131442a324835e21c91fb4394291464a5c925f15281ab27436a721b483607712865c253a74c2cf3269b9dabf6efe8609e89966e74e23660e98d243861cf88aada433ccab34ae3fecfa14c7024da7f05420917e16fe67b3daba5844bfdccf7f04367fd1117037c8f815df1565c81372fc825d92c25e534c9f91fba8f38d107c91c6412abfd7037af4b43bf0095cfe323ca91e92694f9682e885f484e26e6fc1494ec02c6716ea72345b94d9144cd66162d2059715e1e2444c71183d4f7dec41b47cb19acf69f49eee642431ab78a18c2b447c4171aa830e2eea0499132b61ceaddc7787892081eecc7678a35c6e7208c31f560f5e17acc8bbfbf12cc1b88bf2f392d8f1888c9c1c4b1a6490083ffee93ae331c01457d74f8cc2f8c0d98fd96e7f107a6d6d067ed1e0e0612ee4d66897d5bb4b988a32f5c5b444dd0ec0d142e9a1d66aecb211a6d2fc4d147c40c8a43d0ebd65791f5a84b6b0edf659eadd7bee3d020f2a55d757080651ae263fc1a47b42c73dbfba2c36743bf512cfe5029618b1873b03b63eda94d2137eafb2cf2b2a8e34d5db0c6db0a927801ca63e6b0883cb854726564fdd745ce9bbe5eb7833a1ec250f2c7c6ba1abad99a42bc194b82c121dae3fb466d329f154c469356b3fd3ecba0e15e2d8c59bf6908d67b3f4480f32af6b7286f40fc1ba1ccecaef2066d4681c002429b7d408ac88b3e0685ee15de8362f0a8eaeeb74461f287f5640a16abb2a15e78696e36beed72594a61149d7abab8b307ba8c11370f12997cad345ba06431887eaff903660507d83a29fea18d969e70c7fa31916dc7b3092165ca18e5987b52e017269164302624fa83dd3a62498712d895e194a7bb6bc676909fc44ac4f327b66a750fcb5163c3ee4080a9230554962073c3da5404e4e3837b0e1ca1c8e368146358bd9c96b3ead61cc96a56a81ceb20200b04d316f22d2097f435a3bd4920a004e05f88b22897f712b35513f5c610a996914a418cd307e661e32a9a6d0e88e655cdf691955162e0036e4c81dfa6b55a4723d0684ffdaef3473e8e2c75aff47b27842b11504a87a737c6e229f9c23e54671dd95a16fccf4144bdd08a630a6282a221525eb1744a422ea43e6c80e908dcff81c96d6bc74b6d3cd8f9f200c766304c7d678c1f06595ed21c032b90139a7d2ac8df7026fdfd2675136c5c49eedfa7b40bba3c80070aecb66e5055d41b6da2d9c78c30ba9c33ba74fc355ff738764727f05ace58a99fbaf6a1884921ebb07bee12b897032bc7f288c35be814847c9793cca1e7b57dc20c2df9ea5b6bffafafa9a062f97d6e03cce14d8f750fd22a9d1529d982928d6552749cb3d927c8deea5b423506d84eec043fbb095a41d6d0ce9fcf4caa688d3cd948edbc4755884e7882be0b24467510b4e95766de47855f57905a300aa432e8ff60a45f546eae82e522d9fd0373af09f64fd7d35277c4712c5e831af1ec5701c0d709c2aceb0107663cbaf451e2e87a1d865a88608c1223594b2da9430934b00693c40fc925b82d7087eef70ab0243ba3c88e5ca3cdc8d05350a4df3d8bcc45f107672052b62ca662209fa017f02bfd7c94b1054078cb32b20f2f4777e4c63bac40d837b50e1b664f03516bb1441c6c076bf84ea0e7d3f401e05b260fd7cc0fb61d52230269ed996aebe7fa2df6f942531c77ff905285e70a06195868508b499651320428a17e9e50d26893479c78fe4dcadab5568771303bc0d5219564c4b9b6fc73b3f4384abd7ffcd1c8bad668227c3349c4719019329c9602ec4c70eb60436481b713fb7fcf284e62457c8de3f4b35edd07368c8719bd2c651d2f80c88ffa96aee9754c475f8dee65a94132154cf3379be3f2bef1b2f519ab88183ad920a7b2734142d555648026f15dcc35196b90b3549be166db6ba8c85d5434dd11ec945cccd0ea2e13a685188b9446fe4256dd4a5a6bda4ec7dd65da860b93a020e416e82cfe1f4529ecfb6f1bc7642263db8dd4769623b107a2ce08b5370064d92bd9cd003a83f0114e0232c9e01cebd5df6fafb23a2a597b8cfd3937a361e902cb368d725e84a24d1b8b42fc78da50dc029cd66c90fb2e49274dca2417bac46b6694e0b0a5e0c7d719240e431f05b1f4e785d45355a7af1450234299b74f6a510e095f7875e2510841464eed2e11f4ae54501c3deaffef3ff2a898c32bd072189aa1085517a0b2fc18ed271cb7b8601c51b1cc21810f9f3d4482154d3cf0c58d623eb3d929d7f3cd1bb4c4be690da9c0f1acf8a0fe79a3fce3a37714d47aea473b20b5e44bc6bb8ad29efb7ab087aee4aeabe4f94229d63fefa43f7018154ee69c3206144895cdb21235582df9cdc27351b4d67c32baa5bcf39fc0990dc23f734eed028bafb09c4c685b932a882c0188fe6d86c1f836509e044387f01913afd5861f6f7def3da87250d93606a6ab8bdc6d70f826ac92c263de26640ad9f7a3ca74654bd40040a2c3c990d656c4113afa78e9c6740db79c4910fc22a0c5510f49521434b0fae61810743ba8660e506a5f7dd6f89925ea60d289547969ace39bd673c7962fcbc4c6a205ebaf5bae7c25046e951627014a4f7b4c7ac7c7d0592e225cb6e5c48960e6543c8cd8dcee921c6de189a1c154f6682d2739353fc357927b9f7b778878999ab4be2fdebaf4defc663725ed8f912bc2d8963c67f70761f5ff2b843496f27ba723c8550efdf766423acfb8f21cdc7d6afe8881f130c6d0988e5c549e6de0766c2b00009fc83eb0e55f1a112de8459ac1657dc41dbca60211483675b019f8d746fd6b97c6c8cd45296edea15b3b00f1da7157b2792bf6ceedc5f4bdb26ee456c1c7bc7350d97c8d9d6e1aa4ed4f7c04883c80feb1793cf61d5e91029f75eed8af8824ba6cd1ae3619a304c67ee41cdd78d322396653b8654ec3c7aae204b67d09109ce413a85eaaa439e74cab4f21a51a6fd844b1d32ff21cf0a8654485a10712e41f0db78a17e88437b8c5812d24b06fcf51e899fa55a454b5b3e570aa563e53e917d157a25093693d044d63178c7a2a7c8efd48fe428f902fc38995a9d07065ab4a5f083874816ad0c19726aba59664b4a3d98da0f6d77c560a1748da9d0945ef364b2adde1ea8ad9b8696ba8772cbed94752b47d7126e074949a3a83f196a73a50d729d05215221626322388c14b6077a05b7d204006c862c9e71afd0e565c7dd1e40481d3710458209e65f445a0ca64c39cebb8cd1ba886dd5da3f460582a6f4ba32770198a745a50ca01b7638b9f641420cb56130ccf48a19bebe6b3587b041431b5d3e96d63ac66a691bc9bbb11b837e81bf3e020a0cc89bbae8e016e2957a78d860177d554cc09b33d868dff515273bb50fd218a33a26e558130cc63f7b356736fa41bfa384f32b705d79660b5fefcaddf162d2c5273c0b9f53fd1592888a2e49061892a5823560c8f2c7723afb1af9c9bbd21988c501f4f870aa022eb6d8dc6e00afbcf2115409a216628046f429d329cfbbd6c8c93130f0331884ab466be36666005290dc8e08f5edd5ca54b624cd6ec8311165f1d822634a997d298c7cf09b59ee310b8203fcef460662642aa520ce758b0b5b31d3773a018c9c0c6e12a397e06469b78503da1bd7ce7f5d6995ecc7c48e1f5722a3c84eeb02e98237e2fdbc0f51845e74f85d79ceaa3a872032ae1885033d1865694ab44fd27ff2f252f7f9da6626d6e17dbde0b55cb7f27d40a8de25674c93994d6061b4346500136918ed3adb2cfef526c408d9c41839a485ad462a0d38d2221ffb4d15bd173f6460ecbd423edb72948a50e2d39443ba4f7ec705a74706c93e81c3f6f1a4d1d3fd1957058f8816b7b6145514ee9c989400357f2bc03737af8d07549d0f33c0ded06af1b1df83efc06bada9a7f3f0f1a427e512766267160d32d06c607b4ff0a0cf824f3b72e59e6a3fe89fa313e567ab7cecf3829c480e837241dc590a3007893eb16c1a998f17d885e0c46e233191131ac652bac80c88692d0d528f5f634963fe99939825c3242b9f66a43593212674307666d6cfe8d68517a6545811a286fe675fa0d41f03fa98a8fbe190f361f812f2a70751bf70cddad9fd454d1da1ad11cc86d42d47056cb1c54b8a8ee47dbf3226a054c77e0e266fcdf5d9cdcbe4d8e2986ae5c145c9dc6f12e1d6d2223cd3045304cc5d36c3c8d69a0339c96a7b7bca606528f3bef9638b673640aa12e38ee2b611915a81d8f202154de62e371990c3816e32b75d715ea4c46dac597da340b6efe4ea8415abac8a21397b3aef94e5df0099bab1b91049d330dc482b38c4ef0a70819d1ad6ad54ca395c740b9f2049cab4acef5e6e5072d70ee00208f9b268a417b11a603bf64f1463ea492a0d380807c0e667ccf74917dbabf7e2db1185ca727eab7c9c7753982ad386fd0bae3a04de32a007e04c63932a87a15121eea7c0a2726a6d018ad8ca86140838d74dec34f403d82e80207def9d1ae68c51989c1ba16ae54a2bbea1b8810c8e100a10e241686afeed4c092e769ff25e961d024a54d882aa5557f171f9c8f13b07d2c7ccd44559a686a8b0a907951f78e2c5e61b561a7cbcaeb50eb2bf401d4ddebb0ae8ee70fd303feb3e60f3a8b2dd49e5882217420a7c686b77b128e8f95f6a3080f9171eac98299e5d886d344d9db1f19900429d06d1ec36e41399698f1e0a45ba6eacd562c5f30c12168591829de91e1aa6b03865e71daacf413e2069dc9c178bccb93270886be9b59f6decd5c3e4514e1548c7f20269a775bdc3312d3022ea2489241a3040bd6d110c313031f6112a1965a7ecc362b517b15dc6105665f7f6e3c78be9a9adaf7a63941c64748845bf943190882049d456a496eeb1a6027a576996ea4741b22c01ecdc2d011f08ce86f8f5c3960bfb17b0fad3049e003f2e4aee59c0cab61a85c0d58857e25891fcc3d41aabee2f9c4ac3675e93db67bd04e7a6b67e9b02018be76854749ac673028487311e273bdcb22528cc84aa30471c94d2949ebab9f4574ac03415a290d4087a5cccc6be9ac19d2b58216a29b8f6dd602c5325b2307e0deeaf14d0acd27b557b6d606e0eeef7830476abfee38b50bddb63fefd4c25f8603abaea1c96ba01f6705aece998c3a946ea078de2c36a30c8ea8d97d8d386369cef9e428b25957971fc93ad5d4883cd53d655ea68cccacb7f01210cbd580574590aaf2ea03133b72a7e21b45d6c726e9230af75c3f2ef9b5711a6e8322b4c26b701a8e892a278659ca11cb6148ba125c0a36fbbe892329bb92a2e8b9663705aad82b8338bf6eb9dd6e0e0d4685bae1e5b8c53e85d22f11f43b8284c904fa9fc08d38dc4cdc54150d4296cad763c774d259e57d2702789e71c29f98870f167eb11c9089a5c970d4bc172a8063981c2fbf7ece810ecab8a81277e85e28583e5f9ba79db0bfed17a12d9859cd37f6c2d2d9be9706d11f1c59276dd03fbe7904c2455e2872edce7c63f99afd8693ce1ad4c8a0eb0d152b573d9506a260d978f4d28f2d60909b90ae3f6c1c52931ee43867f979c1af3e29de8c5eb28b1494fb3c1ac16c23b1c0b893cb6a87e0ac485133876610ba11408c044e8da707c8357bb52fa0b84aafd50c9109eef60ca47a6883f9c71f280686f40e956b984e1011ffa715695819f13505b655369bbac14b6e3e3f368572731b1aab2f2032bb9ef5f9ba35b0088d5a9afc93bc11f688dde85d393135f842e77aee6ac0aa2b41293f9705717426bc585ca08f3874ace807aace5ce37b42bda74faf90fe2f8d6376f29841867549e303dba64bfa6e420ded58952f7f40bafa6e45a745f0b580c7fbf98fab8ace7946742f6931cd3e1c949da6eb423b9663416969e089c857c1017e4817c04fe232c15c90ba48af7ab0876a11a28aace0fc3c86d3341fdc3946f8fc9db59412d4520f4264838762c8fd05ee3006199005a722b34f5cbe269df683452d64716bbe8ee6962c4a73d8acedd08d7bea4116749d36a08db29d48f302230393e347572e3dc7e1fd9fa7454458c4161706d95e9d24827288747bf52f5e13893a5d1d4514bc76e0200761456c54ae2495d160b565f29d28195560059cfc0a37b676217a0338ac52e2a500bab16387ad0af9461ec0cb13c1325a3eb0074e1888cdb16ea61cf373b7e118108d7c47e5ce0d839c3b283abce3330bb2a3fece75d1c7f31b3b3131d88fd684001c1151bfe5d31c7e1b3403275406602055e596aeb335d17c6939b82252ec7a6163c0929ed563552a890cab8c01c4cf70f6e8bec58eaec6fa99a5570cdd1a53519e68bb56b14568de5966f4984d192b0a0241525d814c7ab3c7578cb23d94ad145817709f6d0ba490bcce484653012d5b057921945c9cab3500102e5d6982b08e32c86f3ba0e72a8d9f66a06b9abb1cbb1c9961ccc894c9db6afe7339c1cc87662a6d893fe7e8221e38708126e008e67c0f7f22ea88817358053cbe2b03dfb5db25955e8038c27b79232d85def6c34d2ac0fbde04adbf41b7f1481cea542781dfda84fa4eebb19dc880319bb6ec965b9711f39a06c7942d643c7771d4365c8b9f1d3377ddc1d995fed550ab4b49acacadf9276ce08e07dc293154fb2e4dbf731f494289dd9bf2c4a7a0a24e6c92e02662c4ba441d35d9b9a97aba17a45c8dcdcedf3b23ad640924dbfe8b5d5b881c0741e66c4f327ab103cfbd019dd95c2e88ba1cce9c59c81944d30f75a045645a7e44b4708f6e937a81ec5a99cc73f53004c9bea484b782f3f97a31da625ab879c8a7c593fc1d74a9bfbaf7caf45d96ad20ae66a5215241eb0d967a4312d39203264b813fbd1efcc7d943153ae99dfc8659dc1f1ea48c6df4c3e2dc41880ca394a475551ba5b8de23d7b99617b31a0aa05af7c5a5b5138f1f34c8c062ecba761985333be7a523a6ff9348295929264124a6d8ab5cdf4948475a2accf1c2af66de42b8b86a2a57e6e506f3866d94b615b6bf74074262cc493d609a95ee9d481621e6a03b398a33085d80706c7ea0cb5609b2e9a113ca019c89c09bd30ed244dd70bf5d9f4366d4770084deb08c29270436d715e68c21d2541a2c6c5749ba7e3935ac7449112882e2166c96b6b94d3f1c256cd2c22326ab04e32601545d5b604c39b57e2ac0ace5894c6945cb70bcc2e0548952cee222d3dde0204adc552353af1c17cfb0e5f4c4a38b125a145454f2924c5b1973e2ab0d7747351d2d0846a24af7dcd8207fd1657949cb57a9768c88d4c44c25094c3f64a6ba4c3ff0fa52a393d6c91eb7e75de7d3fd80cce48062c4ac66cecbe86fa74bac3a3b0065d217ee434ef89ce191e5db21f04707f1db4d9b7165220b64767d9d3a911c6088a6a71708cbed4dc97eb3b542301bf8479cd3c779cf092f5ba5351647011d15990d72f1982339fde5303635dfafbdcf7f846d5a90a872b96ce13a0f9cc72c3bb0d103ae615c9fd2c3cdc7e282a8c4f2350f33edd66e503dacef8b5100eb2a4a017b48d550b84e6b7674f3b9743c7dda9328d0afd3ff9545ff0d116beaee991069d50f96968a7221fe022f8c6aa14354e658b50b41c0565729265989dae3a4ba9c634e46aa299432af5cbf3dd57d1eadbbac2fcc439702fe0e8136abb2885aff1c23ccff39f0fd3e71253b3e589e799ac0372745e6e4973bf2494f88509fa5577804fb02bca120a4224ce09011c19d89b18be8a2218d345d35f9ffd4e359a6640fe6cf634f891bf78a5e1a0ae29f58c2a9a2305d07df5b043d2b95e2e0773ac8852ff5fdf2671cd3c1d39c8b11573cac02e649c4c53b5610539e29f70facbfe743b25c04bc80683dce7aa1df6b21f8f1cdbe64c48f1dc18a2e2c3e0d787ce042fd828a5264d1242b22255adb6d870e87aec610d9dae88bc97f2bcd5c9a859e3047bd1d579ef371f4dd59d2b0953254a13f85daa0645971ad7f91df11e68e22ca243a4921a5c1f0a52bce5c86bbe651c216c60e36053caf3922039dd0a4758aab8878c7ca91c258b8037f3e1c87ab39738c48749db2f7f5b1758ccf18ba73b7b545cb4fc5fbc2e732d21dc599d06f53e2d0e7e9b6031dde045b4a389bd922ecd13e1defb8489207531f1e88c5a135fee8fc5cd8516610435572c54f3e4339f0cfb91afa505f781bbabc30fdd04359a162cd6040b687fb323157b1e7c1d21836e5fb14dfbf88f893da39234ba7c93933e7302f507f5c7b224d90f742a253ebe1ebd06650ad7053205646104ba676fa24f3022d5a4c5ff9fabaaaebabebfb40943118d10821022008040e41823dad30e19898e459378c087abbb73e47e354502d208fa55add8963da6d5b74cb6128cd6dfe8db461a1149247213914422bb7b075e0a460ab3098faf52dced0efd45f06e4a12a56b5392d6062c48a1a74343adaa18219ca6cbbbc2f512869ab61ad5259bc34df7a4497ab4153151cadec9e94b593a55978a90fe3eb522264bffa8d75a55b9b519153b4df134c3e52da3c65e949856400db69043ac1c14073b49733ae730475d74d155e75ce526e71c1ce8f003ca90e7600a50a7d3e6a022295fd9c9e9cb4691759f4c296d0fc9053fd0624635d4937db01eed1d7d0fe5524c1c2977d89d7bf6431bd9dd74e7fe52d15beaf5ba3bc5f62838c271b1cbf3c84b138e92747f51a778574daf7ad1f63cd48a3607655978b2eaa7fae8a69daccd0dca7038beaa4fc153cc3a2bad9543ef2e4994523a4d544bd8696ce3a4dc9f28826aac375b00a1ab792ec834df635239ca5d7739eaa28bae3a67bf5b12257a72794787bfb085ed74777b1ad91c769a4e5db5199421e52b769f4ea5cd314992cde1a2fc84a543ef51633299f4a87260420df483af88aca92f3a99334b92f541f3bc1a12c9f31c8136a82ca515cfe30321d498c2ab4e4f39823e31bcc44d47716a083727abe8e1b0b00216d3c92471044edc14442be06109177e7894e0c14353b1f0a943a69234d0400abc18e1f37288254b6887852b68e4122db4b8221a19c16c4a8c8c40bf2cdcf9edf49e97f4f4b67387fbcd76914057a07043d05a6bb5cd8891830b4fe9964508d4a0f77c8520086aad41adc5fbee9015a286c09ac3696badb51bfc4042082194523627cd891a7ed092b8bb1cb616271368a687a621847036e705ba9224450b371e16d1043abf027d267e007a06ca11482be289174dc5f417bd5b1d5e5384c8fc9cb294a39062060ee9536c70cceff9a237a6373aba5423e58eb9bd41cb4c457b33848677b85d620be0708f313a152028d2bc700447cb46eebe2b8dbd590c342f1cc1e13291764c03020750d80114aa70326f241661053e10410fa880230a2966e0709f6283a34521c5c3313fc50370b84b788a07e098448e90843b911ff0084948f32e13f1e4254b5a204aa0051579380311da10064f4d0cb6a0820e746085264bf0030e98246ec4080ef7c906e7a494524a29a308a594524a29f78bfebcc8c7bc183db8edf310c258e4d5c0170d8122621a42ef18639452ca0704088220088220082108c2bc2168d211861046295035c0e768350437ba403c315c42d3482d5bae21b8f1cf4a3434d85a94784629252465ac817ace2d65d4f20c945104618430cacb6f08a394581e7a90165920c23d09e50d0fa19c34f40625d8410f7ab7b7e789382a88a2c7e79145e80dbd4150c215185adce7a277f41641f379a0dc7438198fc49696171a4b5c5a66d0e27979b92d9e2532f278325ee4f13c4bee9e7ace7bb168410b9aabf5d8ab21e994b7f4793a4f709d963ca08c16f35ad6329763c6e8e88ee50617060aefd58a7de55b456796cede9a0d966f4967f764777935aa6759769857e37ab679963d3b8f5703e5d925f06aa43c3b0beee015ac825b93012463525f709d96de4b41c1aec9f37081dd065fd82dc14ec9f3247157bc0399b3e67d699ee870248abb9d73ee48bdd9fbc291ec48147767599619497951099e38fa8cecb03ba05a5bd5a4ec82392283eb747547de613679c3bcec17cfcd7b4ab3d1d6e8f530ec9bf63c9beb1db156bed9be7aeec913293f71990913264e53d8e2edac0e684e9f26183d4d6f4ef88eccbc3d2ed3bc61f4be47ea9bd551737c4a6832dea330ada0857e55bc23ef08b491bd23efc8cedc136823cb2973a2644e7ef29e6c5ee54116b0c802164fa694524a29a59492ca47af4bbc1a2b9f67e2d550f93c106803c6676b92cd393daf46f579979757c3fa3c8d57e3fa3cccabb1f9fc8d5703abc1f9fc9c2f3e4f5d753687ca26a2341b11754e699463628c889c8858be1b0b8e688746549a922499624c31a618538623c6143de6c53cbc44f3d0ab60269a871e0606d264d0bfc0511c21ba1413478c1c4514521c078c4bf182e3c5637c421b3c9a0cfa6ca664239a879e83639a871ec3379a877e83619a87fec2349a87dec22fcd437fb14bf3d057d8d33cf48736669341ffa8bca77d8e815d5b003d0cfa17b83504ec48d33bab23d2946679f7498a8fb0949d3719990460644a6202a80a9669028316b709a80aa80aa80a0468277d4f60d08f73844ee1ee184c3847f47b0c262c9c23319808c0886b6981b9f13c4da23423a8a5c5b35f5ea08df6d2e291e4949184e40f2963843fb4b89779a0d715ee6e819c849a758f5ae2269a123d13f3ccf5858bc724e645d988181a97aafd4129bdad528c2953d1d334ddb5698a9fa6699a2008dae10e41461e956dcea24b39ce379912fa764e34248424b211100c8499f3d1827e40243f6264d9bd50de34609c8b877013ed899e718fed498c672a96a4e59d07dab8977f91f2b44992945f9e473aec984019697039b23b243d2108826268e83b869ed9cdec9a3c8f10c2009f70b8256337cb6ebe4080d008ac7a8a308873be3d27cfc99cf7b6f769e9f716c127d6774c0d65f7448afbc4c8d3e1e2e0e25283bb61f48f2d9ad070cefd983fda8c7718181835815013289bc0d804fe8010abc1dd53ffd8a249f4828b4b8c11dba327890e74a0031d804c77917648139036e37dc3d0413739bd411b2e2f100403c14030107443df802028dd123d03f38419437b12212856831b2f3770b8ee90cd54b2ec2b196e7a25c34dab7c7a5e8dcde58572791a30afc6bdfc8d57a3aa41d9cbf378356a0dec2c979ff26eae943f53f994f7b459fef3b4b8ec4ebb2cfbd45996650a645ff98f159ce1f654b24f793ecf94db8e4e83c3af9f8e20ae0b3d43a202c65df34852f6980723a3e245eea4641d91a6ef9ce5536e6d8684825f9e67fa9cfea67358f0c513ca98de69355a6b9ee9ef1896c0f33c9747e3c1bc1b2fe619f13cd3abb33aa6a6b931d15386eee2cc35669537ede090dca04012cff32036e2d588f9cd796f2657709d8e3b623cba591db32d81ae2d91d221716e7bb4834d34267ac6e5cb230b77c99cf766d9a340a8bc70a2dfa93be472adf4132707d7693a9fe745d09f6b4e3fce4bbf4f2a49f486aca085dbc49444cfb4bca7243b5e6897042d7d4356d02cdae5fa44097783e44975a303caf5f18513e984b6d62220239d1f4c478f766e3a9ca2e89715bda26c8d32f46aec0b3dcafbf3d1d2ea70d7e5997808ab8007bddb92771e581c42bf4b800bd89c7391aabe192003eb18a3a4e35d93537a95370c95f78bcd129d72cb3b3ca0a1e779433404a71b5e346c11d4da3dadcdd91ee345b7432750203aceb7bca147877867107489dba37819db8bc24d09799ecbde2f063997050f1875b8bb7e60743c84d1f10e102db6185b8c31b6d6628cf1098532d6db62c65ad45ab4a14716f8a8b54fd532c708a36bf0416acfe8c7e479f0405d6dedbdf6daa3b1ca08cd5891dcd65c9bb34e21b499d5ca39771884b8adb9762dd79a6b1620686b79f292baa935da1a6d4c96b406bd524abde14ab5206e0b4a29a594523aa3370b45adb5d65a6badb5d65a6badb5d65a6badb5487564a46e8750fec046396a02ea5c73ceb920d0f71e840f3ef8a0bb13188760c96264799ef64fcdea7d8c31c678656b2dc3f8c3ddf54e30bab8301271dbf3c498612002c240040c44c408638c310d4db8a089bf58ca0f628438c6b6649a9e83d4ae91301aa3845e8b51fec51863ad598607da9ecb81941e18f3b2171de4a212b8122409b5c77b7568e35fe18e4cf5fbea9bd366b1bc6b34f60b6fa72fce2fde9caca3b519d7ef63a085eb31bcb93a32d7a95f56de1f4c5b1d032b4ce12630bd3ffa8369e76e84820117b8c0852477434d4048baf8771d3114ea1445cd03a1212d4298a6d3a4d1d1a5d8a42153b4c21da9538cf29edcbc148a50755284a40c3dbad639a339dd916cb768e94e091dbd79a41e31f47c8b5a9a990ab419e0bed469cea9c2fa24f44fd84d759a2609465a1e0a817a727aba277dfac454e2e9d1ca4842fa0723843f804876488c4110825ea321987a9d45ef9ed81872591836815c645805a4e6dbab750834089b698bb9d08f897e1b56f1e4bd37231b3fa60909159b9ba0fee1d9c8dc93f7a3096cf23c33c32a9ee7350172f16c6cf2638155c86c4970f74b43152e0a1705171ae62778d04f9c700871ddb78b423bb1de4402b7239eb240106b019655e9d121299f4ac8457fbf1acba6697a99719f8fa429372a492e8a1ec950a129ee0586cf2701c375df7f79f7c6081d421a5ca7679463d4509cd7c94430a955c2368d861084794728ff79c870a36b69ced739994c3883324e0678c449ad2943b83bfb6108e8e27b848981f0beb1b3985d28933223c018883086216439b8bb35f96188eb9c84214e28dc4de3d1d6d34377a89e56fde2ac2ccfe37414451085f086de44d5330ec24d543d339fc7b59b0411b439e03e24da030389674964419c4b3c309078eef6e887642221034c12e394f68dd753d2ffc275cf228b2cca500657394bae7be42cb9fb6a1e85b8fb42d8895ea3231868a3497989395dd51347cca3104b24cc73891742560121d113422283bd1a33c3c397f68029c33c71709d9e114a3372d38eb4730e42e2a6046920652aa6afbc234b70129b346933de6313244a22669991c4a6c0a44b794be771f7ac1a6175f078359e86d0f4a803e51e52478ff2903f0f8bfe7f2c639991841e841d99b89bc8f40c7c8d7e36077c848f13d7f63cdb13653489c0c40c2e980b0aeac5b48b195c5c5c5c98b898c1650c63904dc0e849af53775d1f18dd048cdef433eef5eec24dc0e819fa151724dc0f8c86be3f30fb332f08bf698e9fa1af37ea9b4611f71bd317475f2ff4f5d66c70be03a0afef8b725d79d34f47c116e660770cbb8a86cbadcdd8e7b161261f51175d74c18799985bb49e9c411445518a316f18451014638be69c734a110cb268b9cd47516e32883c5c7419fd46ccf3bc7deb932d0d578927030577777850e0795e87c6f3bc1bcff31e13310d630b5b44eede28c2b4ccdbc501765a3a3042a29e7137924048ca47f2119467daa38e965b3852c0606c815681b61629fda0e393e7d98076423b201a8a814cde49bcd4e9ad83a3a54e3e7935dea51f6a93c7e9e24edff4d5d817c9869ae67d6ba097e8499283b8552cd14d36adc63df43975ebc840f81add0e5be4202e0d904ca11f122efcb33adebc48a08c774a08356e0dda0607fafdd12397066d4617177ed323b365b7685784ebaa2488b8ee9b1e49529f348718e9bef3bae0c22a4d184d6e74160d319da4699a26272ecfe3328c26374a9282180d701b85f332ea790479175f247d8aac0eeb2696eee6f449eda5380e9b8f204fdde1149ee802e8b6840d46d0edd5983072d18cf99827b9bc85403db1e771d00b1dd01510498c2bcee1e03ed91c0ef43b7419cb54d0c0c118e78ea93df779a4b31b28dc7d758b0e07af0622624c09c255221169688189f1c80b8c2669ea9de97defbd92cc194646193f2d2c56f0e10d1ae64e8f9420589829ee8651c04c1818e81c89b8eebba5c148159ce8a86b851c545d506fa69bd5217796d53baf073a89527bda0c31dc44bc7c4eeceeabf1a8c7bce57c4770f6137dc53637677db86973d4a8c61df51445bf7ae2197999310cbb9a1c02c7262d34da0dd18e88762c3c36cb7727fa647a3ee675a2dc436ae8501e22318b7698d3c43de79134945ea508716b3ae64e7c0d7e508e4d984048035396a2b02cdc0ef51a4d4d5946a11b03af23fc44d410ae70cebdd1f07342d86907b9dce91135f4a8a1fc43e68b351b4abc1fd0068d2703fe0f2e78686970f8b36cd2b8cfd1781e7868c55c370d5d5d1445964d871f424447513645c6e2eaccf4044936ae64835e929260cf9331cb7031152d445114451012314797822732d5ddbd3ca0e629268e7a97f78725de20ce4b27856fcec939e72346591445511445edc9949fcb318a4edf8e484f39081535b799a18f9e87f4dc70e189729c9e1484113afc4883bba2ded091868e2e3ab6541b9506a236b84e4bf9dc73354b797b9c91c8196957c827a2bbe245cf7999bcc6845249211ad149254aa953f264bc57ecb2642dfa2e7a3b1afa45bb246dc9b32e890d6e0c5c19c1759746f0a2638c32b620ceaa6f7c9cf9be5b86ebce84469f4dca6846918f20959632e6cdc83942d046a12018be83eaf34033488b506bf6491c71a4016da71c15dc8e7d8db699366d216771476653b7afd194a22e4f694a9d3a2a07715d3c4d2bfaec83386d33ac183e1d413607b485266815ddb4d802134d6bad183eabc3e2bda3e999cfbbbdbccd4dbccb579b03b23bec8e9827adf8099a28832b646004dd269af7cc94a3d556c4f4f48483b82e607cba62d7858e4542a0e7dd9cb11541e3740e7a47f385b6c6bae805f4bda60a30fe89182d5fd366ccc8dc9179808e7f808e8f10867e7fe2ba6508444abf3f7175cb31746bad35fc34ed423fbc8b84403f23ed31ef3188eb22ce747a3c40bf3f91bbd034d616d98176a0cb18a30e77c229c68e1831261d5707714ff4744ef47c549b6b80730d7821a0d3a98524252312f2d321963ee138d9f88921a09bed21bf9f8610d0330781809ea7d74d0f460a8aa785407a3628f7786be0c2921ed0a553faaab3484097b6eb42cf2eb4941f7df680f2ac22e7a4b0852cf88005402cf143d48217a2136411883860210a011606a1852eae90059485169860c1c1e86276b26641082c68013a031622154078c8a2453368315bf8818e0ec50dfd419518dcf81928e6497847d1a7147d66e810f4667d401e8f6bdbe3d4405ba481178220578708a4b5d65a6b2eae8a1b3a4a48cee8c6f3c4b864be2050e73a7eb8ad5520ce392f4da8c5c71825075530759452c3add5daf0aea1aff431afe1a66b6b9f31d0599948534f92a45d445b7aa4bdd915b803ccd7373ced5f0adc01dadf5b813b407b7dc3ef08b46ff81d9994ce5bdc5e316d3a2fa11295e86cf3cd39e79ced796875bacd361ff3e6e39c73ce19db83d4cc1094f727a35c1d02a5b1b5fca2636bad39d75a739776cead80d640d81a7c3904d43df7a8d866bccbc8d02fe470df29b43ba68ee6d111be90c3dd2dfae516e91e0575c0a8e12311ddd131753c429d7befbde76e70ddd1185d95ec299bebfabb113cdebc55c159cabd9792d2eaf634d77a4ad91cd6da5a557931764929768a1ddb5c7797f2a297bca073a01f2ffb7b4fc59eba11f7ef4c00b17e2fad944287165e82d25a5330455fab84683c0f744b2fa5abced54931fcc4bb31d97336f8279b370d61d2e8304465738a1b3abcc5d47c94934e9d791cf468952de4c084e86aea835688520f2aec8285bc9434b2478c2eba703a3a67829804c27223e0fa96b1f9c6d8b78a7671d61bf337b9c15ce1f83c4edfcd37bd330d598ae1a58abe116f585328e9416cd58b3b4812759e5a14768abab7ecadcf59cd6a5698baf511e176fa7a852debf179acbb36837a852dabc2d6932069fd57d316f59867df7e04ade8635ef5f9c8f9a5aaea2a3d38b7bf48ccefa9f7d555459d95408daea1acdc8118facaf0ba85adf5a63f96bac5017ddff44753a7508c2664753c894e915eb7b0b56ef17db33eb0fcd1d4af98b7eda1ea90957dd0aa3a85b7953f98a633ef0f562bf92aef945a296afab499a8cd349dca3af1f4ca4e9fd5669a3ea95b769a285346414199d39cd2ace6f4c1ccf4a6e951143d3ade938da24f16de1f6d5d0c5f5d5514c5e1e4bde9e03d359537bd7d0cb4b8ddc2d037f7f45714e53d593b81aab25c5559d6a9acb0aa2e29542beb34b26eddb2aa66a395696d466b339aad763c5dbdea14d688a3ad6f19daaa4e639d56c6baf51c6c515215ccd62beaca406def9ee5d1b48b126ed49ba3aba69e4c3d751aabb432aecda81c5d1f2d752aa9ea54955b9b81b51913cd1f4c4f397abb180a1a2276f05024f2863cb7050f9a0c82c69af2e93a8aca55eab36fb0e9f7d4e9c59c53b8c266c538afac57d7873d6dafc6e96da699a2e7e06d69bd45eb63de44a947cea75fbc89e8fb8ef529ef8e0f7b3a5959c656a74488585a39344fd37a9a67eaad3c83d9a7554e616f5fd9a8e4cbcd06e53aca85429d52170acae9ac1346a1e827ca27ea42b9fc44f94451aa1a8d92532e6f659e4ef98453aaaaaaaa8a07b7d3e34ea26668d5e3556b6ba85fcae608f274859dc27bee21fa464ddd3a07d33cbda180f6d737d4ef2d4ce17abb699e960e1dc341ae3fabc3e9eb7686e6e92b0b71bafaa679b2aa2ee54d2b6c7d5455de8ec2d62f865686aaf0d3f61595e3f3547b279120118df542b57302d1f2deb709a90a575b5fa50ce49351e09325e13b989c4b29dfdca25ce559adb36242627c3249922a6c62282840ac7d31ec937d320cc3300c089637100ce593a1a0540c7fb24fa651ec27d335ab364525cb52525252b0148cc3e1707640511990cd6f86722d94a3708e7db3a91cbc3f99be5e4f0dc1320cfb3d3664fe9301c9aa20c4f9f7e8a20b3f511ce33bd267e6a34bd9450937ca322ef1b4c801b6b1d62f6a5dcbca585a7690ab8574ae5b795b52eed47c448da6d6fdbd65edfaf60aaa16b6ac8bfa75cbbab573448dbea0a8d155ee400c5d73877ea6aa5e3d5576425fd5baf0beae6c6fe519fbca7accab97b5accdc63ab5ae5b55ba6e4957bd188661966559969583db71fafabd77bff7a217f5f66c745e551dfb5baf6b5ed71135d795a957f51686d567ee6b653d6d5d3c9aee5c9f7151c2ed58f6f62dd9a3b270a5963f3a9224b963fa04a22749e2fd434f79476fd41e465295327c4077fba3e567960f8332f80d9ad441d499d5a7ac7cc55ee528d43b5885af5f6cc95c7fd607f60a8a8de93bdde9f774c2d637539d74703ee5a9c2d32fbcabb71f6127fb9837fd3e52b3627756781dfb84f707897bab9aa6d30a5718cb5068ecd6cc26079169cfa383f3cd9bb6aa37eb8353e5fdd1d637d87735d9637863bfb20b1617cb3eeca73c63bfc933d407d353fe607ae5977a7b07855aa92a28289695f26691a84f79ccab29d6efe9ad292929d86f95621dfbad2929d6b12ae5deba594aceb2ccaa34da1c77a2ff0d6ec7e9cdad4c5977b7aa8567eaa5cd9bed6165ea254ede3598ae8ee1fdd19865e5e7b9d6595252f29efae68d72ecd759b095b77dd58e61e8289bdb73b010a7377fd0ca6c2ee5a784b66efdb5e82de66df0d3f59bd30daeaa5f8cfdc21ceb145a99eb1c0e7e56e61e8b811bfcb485b7fdacbea1763ceacfcadc4cbdca33d5e60fa66b96de1e03f1d511de301f4c0b7150e555339047a690297835a2cb0ca58f291f03e5caccfb034f222921d901277ab77fe4111a1ca981245d9fb06f529eb2729473b2ab549f5e61fb8aef343d839f2d56f8d962fdadaafbc7c0aa5a39ad56aa53b9da4fd5218b44fd7dd5a19fa6dfbcefa9217a7ad31f78a2efabc7c06ae513ded36d76c1e24ed4efcaca699ec93e7de4113dfde25dade4f63c29af397bbb0a67fab332598ecf93928fc2e1dc9b37d837d8e6be3aadb0cd66535f6d2a6cb3f9745f3777ba36f9ba1ef3267c4df74ef74e97bf9fd39d6a2049922449922455d6abd7eaf516ae871f79444b92b4e51434d01f7944d32cb5ab23bc2b217ce0c9471ed1429c3ca21b006a3257cfc0e407da00ba69f1853f40f797b7bb3ace26a50f277474284635e09f8fed8496a77142ef769aa81f11e83083ebb443c269d7e40b5ce879ea8541e802e8a685178ca029ddacb820e1d240bda1a8d95367cf3a4f39ca5766eeebefa5d38be9255cb9572fe040d7ab7821055a74e1104eb4d8a2898c7de5a3fedeab43b38c752adf18b8adb71fd1f97531f56627e074e731afe27d4f65172ceebdf48804dd4ee87bc82221bda2de5eee5caf79777c58a7eaabbc3b5796b1aa53f54d3ba1abdf6d1de2e174e734bb6071a9573e3aa7f24ce7579e51b1304dd435d344ddc9ed79b24b2a6f5fc13b6a9443dbc3bdfe5919951c9f27cb97af79a7e4f63c288fcf835221511de3e05d4463d5eb69c5325063d89d4562dfd72534756991801a7316895dfdbe42cdc91b041abbbcb4483c8d5d42a2facd14b62b69933797df3ce6497853d1402d5dd2382dd1442d7d07fd0c6ea787d3f74edf57d9fe5919eaaabc274d67e8e7a4effc8212eda29b165fa081a6ce22413fdd6717f0b09dd02fcef2eaca7beaead65fe0f664d4eaf52cb8bd8aed2bbc69228585387def9dede13e3ff3a6bfc7d469b33b9e7e56c7cddbe97baae27d65aa5b3906defae8efca54f93e8ffdd3549ea177af99266a9ae7db2f84b713ba3dda1cd2887ea269a00c07aabcda45d4f1c5d9a0e853d28f869cd05004e1cda2e79197dd14f187c185772e2509974ad16df1644422cf13cf41c1bc8cf42965d784ec84108dc82d9e27de6da1e38d27233ecee84259f67b3c2fef069157633e4a8fede53def9ce2c9889f53ba93a048cf44190813cf9395789e187512eebee1a6789e781ddc21378c90401235803801bd3c4f8c2f9a06cc9c1084f1e1428f42da0c19e507c5233468302f316a09651aa721c749c3dd55db6838585a9c131b05e582127d7d0044b83beae833ef17fc95ddaf165cf883bebfbec3e6a08736c7e694b608adbca3b64e2f7cff820f77372614803668aaf607cef707d3d7db69aa3ff470bf8f5686f39bf775cedbf35816de5747cf399d44149d4ef89ae26bcef7bcd6f5373979cf7bf3be99de50607367736cbe4514dabd8281c6fee0c0052e34f5ea5354afa669647d409fe48b2717cbbb3161520f2fea6fc7d5578577758bf3d1f7c28ef3c8fac0727c9ecbdad7cc953f98ae6e5f41b6877b750ebe1e032f1dd4df2dfe6099e7054647b8faac78bf5724deab4ffc820ff7c9887efd30b80e477445db837a754ad5f86a5c8f3edb75af479be3ba45abe851743de6410b5ff87a1b0013eef578e519edf1d4d508338dd38f0eb4b5d047a1ad81730c0c30d0d3393fd051f4c13976897d54afa7d07f2c2e3cf4e96dd760215047ee539e718fee5426122e6fec42a09e4139344fabaacd5a75cc546f9a420e82b0a3afdc9b2d22339dca6abd7bf5066dd4ea8a682774ccd4370d458da6b2ead9f409d719ea95cab1b9aba7fed6d151cd486f7ad340ea3475509b91724ae10d41a7efdd9bf79537f4066d6c683fe184114d033514418a4078d74050d4e829b7db67adcda03a32d3a14f7926cf50af43aa25f4f40ac3f9aa2aef242ae9d32b4ca52a372b7d42d727bc9fc1fb9e701a032a87e2a12044b465bd622ac743505baf39be59ebf5d467ac4f1dfbcef5e9d0ad4bb8632f1dcabbc6c8959f90a964ea8485400dc9dc293494679cbb859d115d19d10d7f3ae7cff6e01c3ba5cd6240e519c4c1f59bb387e84d037147663af6e91818a2d0d12d132534aacefae0689767a0b6a7ae562895e7a9d69a4436bd52d05bc6a409da1dc313361dc27b6240e50dca8032869b8e68e0bc0a86d64784ddb31850c90dca78d6de8aeba04b380704458db677a7d355f0a3d7093d51b9aaf276f5d72f347d7add4374d4191a08c9d04e75aa9e5218a2b0adbea94e4575a8b763af3edde20e75fbeb10ee58c7f0a6d6096f8ee1697a6baf7853b5766a4e4265d3a117a6dfe0eb2b38d3d437985eed09a769122bef54bbca49a83ccb0dca68d55770764a05678770f58ba1af6095379b844a95774d06bd51dbd91e0898f0076a280bc17fc2756f7f15aefb8340979f90c69e4a0aa00da8416f50466bd29aec1a21e8d6eeaac031efd644b78601282f691249128298e83da1bc6b84a0e5a51a21347185883042b8b2229da3d2cd093548420fc6e8c508618c515a1d70b74711a4c28557dc78082308218c3adca1bc84a724a44f10c288b7ab42ca3f600c288d0dc7bca7cd713708b4837f7988fbcb17ca680e0330bf1a58e43da70594520ed111035186648481280f6950067402c20a7a8ccec938e7a2c3163df8de617e51da1cd0a10c6119f727ad8eb727d4cfc5cfdca00ca7dfa570a370e1dfdbb33e7cb8c3f71e74da6180563adcdda5431c7112f3527e1ae27d936850466b8f792f01920a24ad5a4b6bce49f784d3f0f1d169ac8e1e9b20e1b6264de49b6899e51b044139c884028232141024235c42fcc214b46acdb9e89e70fa1d1e3a8dd5d0a1a499e9c8b8cb0789b2100dec1aeda09087425e88a56586c29dc66a17830871da41efed017bd2fc60d3bc9cf3f3c17e7cb0f3e14e906af68dfd8a24e1fbc1aedf0ad3926555bfd5c6de4e59d223851dc3e6a51746e92f4c532ad8ca46a5669b4dadb556494a49494971028671381445fd5e14148ac39918a6efa5a6c630cc6e21c6e888442290735d6042cd8e75ac9520510b79a13916e7f4d42da628d7651d51a329cd9ba0a8d136772086a679baaceb5ab9545e075b51c930acaaeadba66e6aad75536bad4c68f60f744652463292d1a12882535695f8b428f16959a204954b29d9575e31eaf798f30a5bd8ac18ca2dcead43d6c73de563f3dda22ba992aaeb2a77385966231d056feaedd92f0a4bd963de95aaab44758ba2286af37b29d1d964992b5359096d51d92f273fbb9467b25f7906bbf469d1d2ad169db5742a66576aadaa9494d38aa6581695284b454545c5b22ccbb2944037bff06e5142539c73ae2b2bc5da98ae2c96aae2b070ce82ebaf760a43c7f0feb4e8fbfacd9c97655db7f06ed1d665592dcff369694b946891e2148ae6bcd75d46b94259c648188424507a29ebbc53afb2f24d45a5bb322bc6b916b2a2afead2bea6288ac2f21135bf1c0caa1296a41cf7125aba52ee1c81fd4aac92a4cb2aa75cca3329c7f2ccca25a9251aa93ba756debe5159e9645545e5de2c3bcab39ba158522655d6a528a594a2288aa29270316ce1bd84b662682a060c182f5eb0b0743a2b2b2a2a5996928282c2e160d866735d96756f555194b5b5523a4d92949292399cbc27ca7754c4ca3b6fad08ceb7d4f7ad1591f2ac9337a4a9ab7c05b73643256f48dfa36479c736032573a8b75683732aef0d07b7e6b979571a79cd7929787defbe96ed4b38d13451c5614a9614b1c25a6ba3a812e1839eb6e61d45daba88c81ff474fa269c5322c2073d5555de449ee8e945aca8b34651912814b1c22d995aa00393234cd3ba84b255ce392655a7125e7985edb3d70775a7efa55713b6bf50ba5592eeda0c7b28926abd24ddfa9827bd5d455279cc935e3dae9cb292f494954ba78a5851dd4eae66286ab4744ab245aea8bf58cabbe3e35eead42c73eda51c054dbd69a95e2cd58ba57ab1542f966a952e96e8aba5deac0f7aed6b112b34755556542ee519954f7926e5d22ffeb8255abac59bca1fb7445739e5ed1926a5a07030ccdaebbaec755da7ee456daecbbeba9795ac2b5b12b6243b49522449d2116c9ef6ee7666aaa6a9ce695db0b86e893d05a939f39e2a4551d475f752d43d852a451db2f7ded257b52ed1b705144569a1ef376c81bed43d0cf4a5289bef29fb18585fd95347a9b5d4d26b612d754b6fb35bd266d09a67a6bb4f57437817b1c22d714c506400d1e808a3a84e9fd3e7a7096472ef0a4590a4699a84c4f8d469ce69b2eea7ce4943f3a99f6aa7e91641922449922449da5092542bd6ee69ea0b75853aa3286ae8f2910c1a9a4fe5c3102469b2d354e54f9df0ae7a9a36139d36af34130d0d0dcde6533ff553adb5d65a5b39f6f2d25216c3306c0892244992244952a5d1d5e653b52449b5d6e7a9194d7da986d85543483e829e922ba04fab4506d194bc1450214df4d5f5945f8b9da2189ecec195a26e27213120eb833a66e5236af42663df2fd839d627bc37d8f509c3166571a653c7b0d7634a74e7881a6dbde6fda9a7a0a8d19bdc8118daca2e4ab8f5d4b1bdc19ba2accf5cd4a729d1d8c5c9f6ed2a97b2f4f2d4bdb556f415ad2aadaa8ae254d8295a5518a7a25ea90a85a2288aa2a8a8afb59228abe3feda6c6e59a7bae6d66a60e770f2ae186eed9bc7c0bac1f6fbd3945c1ca98a6a4a743dacb942d7d7a76bb5db1f9a124d9d153557342529ae0e8285e566edde2c63a2bde8de2c93b1783071b1d316762eba37cb5824a0ad536f5e176f26f4bd37cb5864b4755d3cb4f59867e57d5bdc4c3667d9260340329001204cb030c1721fad0210b29a7295d38d55d9572c2c9ada5935e79cd5e79c73ce39ab395366caa4285ccdf9cd6642cf4b6b562c2c3b03fabe02725f55196042571513ba6262ce9494cf3c93b2f964d1f3158b4ec91bba51a114653aca34a14cb6cab22c03020b1359b5318df214ce51707b1e4ec62a1696170c78c180dff88d170c806179c180df78c180170cf80d98172ffe172c2c4cb0a428814e2843c291b33e3e5afa243f253ce7fb9c9174013d3d88ebe2879ef29e6ff195d466c05368da1dce4592ddf1dedc0161a5fee694ec113517d0dacafb87befba36fded55b3c859da6a63cdb0cf819bdc17b7524236a335c9b11ddd9f9a29e1cd0919ed1e53c85e6635e9b1141737f3ed82485fb20fa14a17c6e3ed1a73ca981a8b4ac38b4450b158d0c000000052315000020140c084442b17044d2242dd60e140011909a486c4a1749c32886518a218308318610191100119191d1b001e5da337b7585d4ef81674a86f64518f249ecb282796eea695675b9002b40a42fb6c43ec6a712e383f337eb87a192e1d5a08981e7455edc8767480d6a12922e49243ab1e2b1f5df7e1de69d839fd8a14d6079580049b245a3b014c27f55eb026f435c86cc9857bd7caeb5bfe984c27fe2d2d6a843dbc9b7e73167f903f76edb3d81d788a40a4d936b1adb4180cc3c253e569db4291e8973c03c26c27fe51fd6a5ad3c5092cf0ad9438e1dcbdfe875ca38d370d3159c66cb83ea333b420eecacb90b8b788f292e8759218b912e70cb1b7d92247e2e425067318c8a8b60d9ac3c458332d05da76b8372a9c1a290bd1d2ac1844a09867210f40a2c352b79cdc542411de343630bd1fc18326ab7043b69dd72c9427e4834d5ddc81254f47163dc5c717ad74df4b869810e205037e5b6fdcb3207b5358c6418af161314e24f0c07af0dfcf6dec3744b8103e4d691ab366c5d5a3b6688fd37b721dbe50b928b5e9b5942798628c506f166c26a7de7e7928237d202539a80efb1b703d6f36b47fb522cf0ac5eaf0073e736d7ec2a2b0ab0b75c3123864c97cb0a2eb6b6bf9fefa4a7c720edba2c9ef01b2d5562e89346afb92ae805cc11fa769a797e9f87a38be358f53e20ea796b1b0353d570fa04c566f31dcd2d9ed6109fe8674913fcb442c23db9b7428e222874697c6fcd29972a4518a6f003886c8ae83bdcea956bc3ff4a79e64c9ae107547b53c586accaaa6b7f925b9dc7177570e855aec2731f27a1baf249acbf52a5244878fb4544b3362d8e6d54e8a1bf3ff784d73a78b7296702effffc673eab36d181dd01a948aabb370ca8ff8ca42c28e51bc01f50efae3e59ac60a9819a13360aa698911300ec9ce9ef54e9aeb0803bbd2f3f4fa37eed3a64d377d217ece0bc0ff9c444906268632fbb1a0e1b091d1123cd0065474c67290b6595f47a255b863c2970c3db0b9d0d86f62a564995735889282c60af9aa9fa778261569555b42d0b12dd8276ba35cb9cc216051be0736615ed7d8ad5f0dcd9dfe9c1de17bfbc3abb8dbbdac993fb336566991a152f3d77c35aacec91b5a8e4baf3927cbe3a737c030f1b27d2e24e8d81be41a9a1cd6eefc91908061b2ea0a3edb10e3a0b52d36ee61c04b20e3409821f18d23fe2d1f39071613020c5ecb3751465e64ad21007f234ad42d75fb68561924ad655d418e446b4f42b7f50266aed5eb471c5dc4b0f311ae04d1c6cc30b19db0548e9a9a40dcfd75b814fa4fcc5925701d459f2ec8e904e29d16f2ec8b5b0736954843dff4ccf4256c28e24d694ebde9457b85489b771151e9e03fc0fa05e4b72651f6c1dcfa31dba84cdea060612b6eac9ad38daf367c7efeeb5fdc49f41a628301fb6a285618b8d565fb9bc8dff5bdead53edcfe456aeb6229b9091435d47005413f53894521d949a6dea1c0165c5d87fccd285a6da21218fc856612f8207d0c39a9aa9ff19d3f68fb88cf39b23149d678fd4d94817a94a63e01d264596b3d41971f50165f42240f942a3e5913d77b9937e7fca2ca3c783146b01911bb235e7699dcc3bd96b2e1d066b11ce4f2c0e60b622be904bcb8170c86e41a52d982c6057ef3978b5f2a81948141652b4ba2861a1710ad693b0754d9d644acf62ed7299d2f0db0e5360ea83ef159115fc7b16188b01a52b07897ce4433d93bdd46d660d48af1f086425109c2999b44df9e783f50bc0e6b22068a642dd086f2aa85ceda08c6dbdcecf2bc1c32322b813178c35a1619e9856c38429a528c0a0328fc1af3c874ab621a809b403daeb584a1cf402126a50e1630f036332f81681e152282814c69a6684b4782c4340722eadd8296802f0bb4450f67f44ff19c7466676f6765565f0ab4c470f321e61458055795f309a875c40a6c141119de4e5fac74ff4f88802acd36a0f2028e282e0da2da31f8d94e6c0204433c5745cf954fe0088605d7a66c406e51f242866df90f0674d44fd49eb4644d007be0bcaca99a635bae9d0d494c2804c19eb01d9f689b1dda86955db0531d3cdd204499f61e0e17ee3d2c7469e89400f98be0a64d00be6da4aa80972ed59b123a2e1c0d400cf8cae8357ddf7c23108fb94266c91b191ef1479f90e48357240c32c610f99085428fe2b5cba9e516d211045801a0eb9c8f44c37fce3b7725dad131c4d579ef024d49da947038763b8d4c156d5462406ad3615e02ec9f0bceaaa83d1423fe3cbefc18e3c18d4a2d8bdc3b89f26207b315d13f002d25e44157a4d81268cfdd94422c8cc730abf9c7a5e226de95a1c98bafd6dbd576cd9cb57353c6d70f1a1cde3d874500ab5847e2f806e6196a1ed4141c803d6c999c22818ef9414c1050dd08b51b3b3df80994c781355500f8d500e2f1794f0e09444de90f66ec820512e2f57198f4c1f330a753747655fa630b917c8195092afda3da1e05648fae3124c9b8643ba680c0837a574ee58fa05222c56bf8842835ad1debd718dd09148b9ab70d121ef75080ed2f04bb04144bd4ff20282eb591af6f77814915da769ef395f3db2db83d59868b6c852174388788b1d13569484dd74ea4411692e20fea1b1cefb56e3455731758eb66ac6f1cd042b6341272573a11de4a9675a457da493ed150a677ba90b8e53643fba4fbfff60203343c7d8ac01cf39eb97ef00648aabef59597649409008c7c249ba5d83b54f5f8b65b39cb109f30dfe4b7752762e01599d053dd3d7e70fca1998e17f9f9581d971fbb191f203f58a58b5d4031e2e8fc20e1a600284632a9e8421031465021be107462f528cd2f676ca4239577430c05102f1d9ef10e6b3d33139bae021fc62efa445bb61c23e2f8115418a672a66ac2b04e6f6096b00cd58eb1985faa7c389a578261a4b8803a539f63ba889f9a3ffac6bda23f5caf771373c718060fb82683bda2d2eaab45ec1202050556647874128f6a3bb5d66938685df7e4038cf550fca4346acde8a080de67d4427aa9bd435fdcda1e0107e9efe5837fe292e217e09c06e30a13f5a59a112bdfa2b321d7b93ea8ff12d7d12c2a08feec4209df83fcf410f21c5a3fbfab2fc7c66c4d658049e9c0fb1abea8301d3d8fe68139fc699c328aeac2f18b42a05aa09f197108688bbfa479432748ad3b90122f565d12e722aef80f6aa5b5fba52e70a8259440e255fc6b8bed47ee4487572e6a0ea82ed255b40503fefc6597a5f422fe55ba33c7c790257d0c1bc4be8e0655a2580e5c3f24c5e0ee22846d63cb958629b2382b4be082b8fbb4b501faa2f37734a6263a0b62eaa539f81e9d52779799c7abd07bacb248e429475392a2011c8a83abacf65be51876aad50159a14896fe9a2b4112734c2e79bbc6891102e8b7afb75ba57c41ef796418401035109257297bd6dc55158fea79215c82534938bf19afb96430efd60983a1425ed133a65ff2d13eae2aa6f6908614c7c7824927b622659c1a56b77cb019f4d6ccb3adfe8babdedf12093b86ebfcc642f274b59554ce069b10ed4a99f660e29c062383a4883c8082b2baa2a91430c85a91068bac532b3111948c0de31d32de6529eebb0a0132f6e91f81df50f8183864a2d8d16296d8908f2ca56e764877e0102663bd8836a8bc6b9d27f65012258e16c691f58963049f4fbcaf1ead7f8b86caff7e53027c4153b4c154472f6c71993a44dd4c4769a6e4f23380e59ec931d129b317e3b1fe6a69e27fcb09d46c66fd4d327d6bfaf1591119a8996ec80deb9e6938ae5c21ee2a120f7e79d5f950d63a3e0f821b8e54915f375c20401efae847c8d42a06e2ee990a3f42b3500a4063a3466efc1c47d58f9437c6831cf52feb8b7dbf053ccde59a8504e12e88c8caf79d0d26adfacfd849f6a42f1e39ab77fc48f8e93df25804dcc393624b2c301d6adb8951b0b3b80c1e3b40d54353974ded933e54778a3d3e962ed9347674a2213f04909390e0ec73a2701aeeefed7a4d69861fc7b07b20328e6fb24269c434c8ca69b207409286d47bd4bb30273275450c8c9ee5f6dd5f0342cabc2179c1554f06731a50f7ec04e32cbfab46f841f6abccfa422ebd6ba2f27dd350cc8e200446b3da0fb25edcd95c990a4c55a5ef9080f270230c1cad81a8794157e625d37528ceda5cda8f3f36fb8e026ccba227b8d820d521ad695cd1d23643ef9ff742cdf4c86bfd9eab7f8dbe1b5bc1e0953e788a544f11b290f30f42bf24b4a5ef9366efbe5ee230309d62e8421735dfeca17afad2dc7a22f3f774d56cbd3dc567168fa404dca085f56cab63386a140735080107c54b6010130a3e2da476300b814cd6301f30dd943efd7dfaa7844be3cda89616b2c2d14de34d8b8d4cfb8f293f84fca5472be3e13b568d3aad58fff0c05c31a5a8653f8242422b94056f45be9b705df157d55f04be9d7255f957c57f65be1d705df157c55f25be1b7055f157d55f24b21fd853fa002ac6f2188c1ac2cdc2270192f3f244cf196a4c59553ab395b262e67e439b4ab08b939ee8c3f7b1041200de76599028d302f9fb58da2e96dc0d58249c36ec3f808269297e1eb44ac72e418026ed68c160847495fb3be7dda890bfa08b1d89edcec24d79f65e2535d61c1cd7fec0f1adf34be09c720ae61c7820b5f11fb35372989588cc26b9ec2ccd2ba968e2997a7987aa6183c79bc93782aa1fefb3b82688eeaa41874013b69e2894b9f5acd3d3ff13676ce1ea6eeb122e1771f3037ff3b2c8f1ba8a150565c86a2b534a2e9b753a9151f326f72c880aece61117eb5bfd6922876dd078a5e01ba1699b7fe38c850912706da814934a4b2215c68a2f22d1042009591a00394e429a3def1f4e394650efa5a6a296353e6cff198cc94857129cf96521ec3c6f488f395c3bc45e648fb53b63108601fbad41010f622e727dd185a6240a9640ec2708fd10858eb6714395d21a3cdf071556a3a4b2e40c0357e979605b20a02c586a5657eb4278bc2e868c9454a5e5abe6b193d9d99785a66f453adfd4ccbb7b6848daef8dc0678706959b3d23fc93ec9d5a79e50014d146e53442bd8fb50cde1b41502d01dbea83307f27946a5d8ee077c0ddf48502280ce4fd29a2fc45c5a9eb137edebb9a8d1d181e879227376539a5fd9f80dc9763966f891f38ffc72793ce6728a1181edd12a470d57b33370d42a62ae696c81cb30ae3510b8aa4bef3e7251dacecedb6f923999a762c06ce5d2e2696c206c1a42901e23ad2a5c004a239717f17b4a26460e521d097d457e970697911e5e3a0f6c2fa5010a867ecbeba6e2d9d9b5ace08eb5cf420d132ed80b6d0d0777acbcfc9d822d7b03b9458f6d0d0c663cbf679e34b04a58a16b53da7a234f10024089b228596d1b7e2364ff65b4cbcb5325fdc19cd972b8f05b917abc5c954a6f38fc2bafb3653732009e00d203534d14fadb877cb8bdc3672f16868e6f7d8d47d556a03f461f27324f39520f1c806ccd4451ab76e091674705f40452b36314c5e93447577494a733d8acde06076434f31bcfc2abae911347378055ce9e08f0ec3fe02f9ab7061b8fbf2ba3f822242362b0f27883c3b0cf8cf814197a67e63d8ee9decc7167abb45a99591c26277c670c33becc9d0ef668ede0bca9232fc4320337171fa9b1657608c4cf54e6fa2a4343fb3bf98532f76cfd0c3b99194f4e7a8bedf10a74c9ccb91ca3a22fa6e10691597067a5de1c566c6cbdf8c4015d9df964abd67ca1b20afb071c44f088696611a71b327234069a0e951ab5393f509f2039b3201302805b3aef81048aa838eb3f2be4ceca5f956b6dba5468066b48dbdf0ef41889b9d38ecc0a72540840560a0d5de3e05090464e26465f99150a5b1573344ca7dcd48d9fd181ecf5a44b577729e5a8247213008c5afd1dd7ba72bc3094ef3984cb9c5cc550e7803e03b80f1aaf2cd188362f42d6a8bc37a2d2eff1343d3e0b831ada35a66de3a8e01480f981763aafc151a9d125d4361d919afe1f200e6be543588de81c9588fd70ff81712557ed3db7cf32d222ea0f03565efc0f18f4c5a8d1f905100c04a74027dff52e2408ea5180c1cf235e0f3f8a2dfaa1d5b9084435c23f70ebd5723677a07de4f22e918ccc602510a4543287e095000c90a1dc7610de02cd84dc7611d6cbdbc42a9cb070725b221465fc188eff84492789cd8cc358be31fd76c73babcbd4f289a49b68788902427a1ed3d311e4b6d2ba96e1322e943c9c6848d3020a5e553a79084945f0cd89989e7a9ec5c7c36e308b798d541b8727b7dd5a17c25d9fbdc7aee9a2dff7bfba59416f5f39ca6d556c890b9f8a2f4c900f07748ac15effb8cee5813c8a0fff018ba097442aa2498d248c2af41289180f9c72e0e8b085248c8d84e1a6d7a9d37b6496f195d4774752c51986661e0a141caed6e97c17b01c8dd4e66b855649e720640540ef9cc68fb3230b6d3edd1ef32452c94b85a32e71cdec5abae232e7d3b3519682314ab470f5a7dc48d796fa1b76715ab7746e6c85fd4ce74d0232c28862c4e05f612a9fd3fdebb0e77150eeaa8306932ca12c8e96aa84038d0b703f2f4b6b7ee791a5cfd43fdabd7100e16cf932fdf0cad012adc0d5861e74eeed1147b615e07454c3ab094be9840c1114257d8726ac977ff7a0ff182f86e675253e2d9450f511f1fcf862508588e9a6d9fda79b9828733f981ab95872380cfba71e1e92a276bb00be16854620f3ad14580d3b127afac5b482bba6fd8b8fa544751226ca98baf9b73bfcadbd89ca0f4284ec34db00c74262740cd03899354f5b409159c801252ec9f4774d9fdb36bd8c9b7e18c66490a9444a8448ce0df5f2166efa002a86e04eabfd8d5d8ba6c96d172d8ae8c4a5196aeb9a3023f41242b9d614c43221dca13221dc2613d23745802e25f3bc8b662489ff86ebdf252e6ae1ed6de4f70e6240326ead8828b77374df95b9d7539e5e3569bd0c20bb526a40319582cc66a5439d0802d99ad825f6c8acd222dcdaa984d7d84ce012ac314d6577f4de3676354274563b5e9e4540cf5428c4dc9283d0173a71d2700e00f8ae1083470d861b44a0e3e6b242fb61cf6178b3bc8b6a80a505851de29e4a937104e640bd1f54507c070b0b630a7486ae39863c4c9b244d02c574876771326d5579d8a7cc9e9787d8f3def057adda0b22a5efda1b98a8b3ee2072a3d5b08b367caeeb9911a6b71e12aa56a404db0aebb06eaf981af7a45246b83c4184bb87cd120fe8a073f68c35e7c2a2380cdd4a009dbf3d260ef2da06f2a6d2d2741d6a10f59278481ada3d0a30a95a75c6b562d776073037e6d89b6cd14b83788a9474845ff39b04e931eaee120c434f257671252e892fb8e9326c9934cc6d37f8a14a04494350f3ccf80edc63509eb434a81891ce2ab6e96998933cf520338d430822debcd220be00d48556929aa3551caf20e893d4a38d48036282c98915ac8e56d8cf0743d0421d993b42cd7a4edb1891802b65abb1308c69e8f04f0aea02808e5b2da4f26cb41763e8b8064eff20fa44ac0279bff7be273185182758977c80f23119b822a38b660c96dfa92996e442c31af8b5c6e4598e22925e95b2a1e8bb2f68deae9ade3d3b2c47cf80293a07ccbff7275e562f84c5be2e49479fdd43d84e4dbd7e3076518f40cceec993a73e7f29c56f66d6b4f83166e826bd3f54e9cad2aaf344b1c2cdf2e9a7cf345ced44dea91fa7d9688fcc79dbe1dfdfb7a0d4101ef5a695d3eb64b7dfe281735eb93e5758a8abdeeca22641b58d0a08f98e9b40a16d455fa900865d0ebd7637624c94ee300d2394f7cfc8859afc2fcdb65f39109f8146c7869d9424424155b982b199188903b53e038ac401c9b160d7bba5fb65f113cdee218e04ab5051566c1d503293922e79ea5d6b0480519f40e036147130c7e611d7a43c9a0fa8f6a595df4887688c6eb60e98663d36775706c2a9b987679b45c45eed860023571284dd05b41bad32775cd802f36ca21dd2592fa71153785803af2e913adc99ce85d0c7f5c4b8e07b8335855beb3b430e1d9216e8db04c619e03318ed4ce1f98f3bbf6b5d54cb8d979d4533404f9938ae272f1b2859567e2a00fcde534439db3fc3a0e0be75edb1eb28da9b7e24e2ad6c9209158f6a5a57ceb060d294291fab4861c6b3ee4b0b6862641e867859fb38fa9b5c2c991a340459e0233ac75a41244b15d06a70a8af682beaa4f0b869f9c81eb3e99d352b8607acaac06dcda78616f0e399033ba61e4d500ef175888f299c8d1753711aad8a97f9fae2300f5c840035a0050d520e5c4ad4956afad713af34b726f07e472e104c846dcc264075ca1f1cbdd0f3c06df661d919f078f831c9c4ac7549d49940c7a41bc9790722602b0905250332908bf22ccbd5e7692c664bd7bf0ddd05b1282eb48146ab5a05a13f9acf1ee8dc16702c9eb018c98bd4f90243d3717aa8a20abbec8d6ccc5929f1eca92127950e2aca0299ea0a73fc65681a1588b4408b5629f508e2dfcfd06209263d5d81417e678136a2a6788c232c3ab2102368f9ac091668f3a13cd6d82ab7be78a0b01d6e521f8df31f7447b06c6b576e2422e9649ac668fe7fa8fe6678852f17514502c7117b220976941d2d43dee53ee18cdef2b73d4bcf865ebf1c0e6e55c49cba0f4a3c2b8bb75fba55147c82f8cb2ce2abed96435502c9fb5f8913d226c4dbd5bb04a91d1f41f63dab3c3435faba215c99eb916aac0e8764f643f7961a2e4ef9b93c8c9e5061391e3249ba6eb76cc89b1afead7154538fc4deb87582f402a859706642f610891040f88d41b61d39ec090c162c6eb380dc0e02c0d818101b841ba0762e006aa2117f187fa881020ee6eec37f831eebb497fa8c3d8fc9931eff76fe6f18ce853b5ff03dcc50bd36a7dca61f6c481f26e7cfc2cb3823f1875dd403ef805c09ff2a71e23041e2fa9fce4abe9b706b00635c1a7882f9a0f7a82e1cf80e154a727b644a2bae945a4fffdd4a3efaafe8975448ee02266137d4b926cc7da3aa48d2a7c463f662ec9337f009652da7584c92a4e2c547cac000f324b4067cd21bbd873e4ee815c470eaf3901295545234cd5a0d19cbb70eca7024ec20558252350f80311aa91a549f180163258a54ed66e5592f4f5548aa1a548b006c40428682c19232e6f78aa6df21176377264bcd9bf0401c1eb7268cb6e6d9fab224c927a9a211622918f90288583c084eb7bf3ab5f75dcc5d0db12c0bc90e465991ca13e180409157079934ed765385264e23d6f0c8629db910cfc518e6d81e22780911e268d805a968e07f5ddd8e899a5dde82c3939f6197af0835df960015a01219831d3724bf9eea31f3a22b9b8460dadf08edd70d365beda57b537a23ae8ead89cb07f7280c961b67af8e3ce00f0a5143e8c0dcc8c6f2664cdd68a5379cb2a0e581dae8adbf3ae19a9c3016a2f21ec554cbc378c882113bbdd024159a96a9bc62f9d3d6e2692570d26c290a5f9516e762965cf4617f0cd618580a4d9718353b4d5f31b6ae96fcc4064f18252e72f74578c2b9ce00cb3979a85e9827c55ebdb636e14b3ecb77e1764c358895ebd9d859383c43636c44a13fee02d5abf011316462c58d818c26af349011b9d7fc1d77f98059524e282eff57e04c9223010b84de71a1118810bc67641081a0be1d5cf1dd88b007941273c925c821af596557ed01d92c0337e21c3f706950630e002b3b7825ff44abc40f657537670ede912b4e03c8b0b933a2f884b033d2abd81a23d4d6dc8d639e38db1665b00a4253608e151961c0d67558b80d49096fbd07ab834ee06a44f1d3140fe11b1a6bd0de3e09db71e6b3f08d7d3701e4fc010fe3157abbd0741cc1dee7c2e2296c187c92e811837385c7daa1068a0968432faae358b47cbc4b1da8a64818d024ee0bdb6057782809724e52b9ea7d9b83d398f4c3680183a8937b1cbb20cac0810977b126e324373702f25eb4e7bd1077002667bb42c3c8fcce93242163f200b015bb9dfbad14af1d5aa54f2bb055d60431aea188b033213e1b30a0c8eb66e454721dcf0288f8f048a810925589f311e9e7f7eb97b3cf0ad6b55391d524c7587ed8506668a9cd1dae5edd233d9902fbce01eb3f70813cd230a59f2232028623187fb08f3112a4f07864ab80e775be9313526c495d433e008f9ef748899abc8764b414f3cc1503bb5294f79bdfe30c32618d8f30c936f66b850f8e391292b504fbdeff5801ae6f1e4bea2da40e93ef5f3f4402bf5a519ae95e2b22a50ce74c01662ad41ee4e05a15d918751735349fc2270f48841fe3128b20da0198e21497d83d4025ec4a8dfc5c027d330fcb683a931a451911329ad1be6576a0e7d226473d5d019736a3024b10f81afb799d39aa043c7c552ea351020aa71c21898092cbe26ed18cf84fd41ed08bd039dba9663866aae2c2121565301902ba195a530816890df51582f8338631406c2093e07c1834882a22a959e1a901712b622e8759637ae589550bc9ea8d027f690f57d8375405c9e05e87a975141764d968e8513c0a91354c77743d5f4a0854f780f2e774439c175f619553c679985dfb61e2a2087576799b9bd2ece19b04667929940c9306fd2e1f356512ef0b1a7286be1cefb4a51c8c17b951bf01249bb092a30c87f1601d6807b516f1d93c3ef8dec2a8411709bbbde3e6d6076ec39c7f0f4633cc14664107e80e34df8b969984b1168b0e913b133e8900fdfec4e0bbba8e2cee8684db393881d75429111fb02a67e1a4237d88bd8c4441265f6f7b3c23c7cfe62cd73d4e23ba7eeb0f1e79485cf7cd8f4ed64965a8c4ad33932da2c567a100b59f2eeadd3aac199bf422af0d3cc0cdf950201486521849190ceb3c10643fcdff6b56723fa2cedb0a195660a6bf1bbc68260ba4dd2cb4058aeb6883422b8db099b4e35c62a8881a3128210786bfdc4f0a35d4c47f25dde5db72f6c53fcd31002218ba2ec5aa70afe7637631a06b4b4311ba371d1c22712ba0e92226d5533714ef42277d212e53cbef309109ff846e4061c99ebee5ebffb544580dcaf0cf0d60b952589195c7cffeb9162626379c632b06caec7b7ce26b4fd1b894b49d81a6f67d2935d9f7ae3ce8cbdaa3da0b9e7ab0c4fdb0ef94d9610d43fca56cd733d7a1320affbf452cb237d7bdbe54115a35331c4e8067d62803fcc3af3f6db1a49bb27154552afb9312d235e2541d7f8ab8bc7ef2f3075dd4c434c39f9258072ece13824dcd8b86f00d7a4527f315d0dafc7c09b5d47badc08738bcdde3306ff4d9e453c5835630cf89ecbce3e9a8bfc53ba237278ead7c8a0afc36b8f88d88f73280e66c50f072addf03153408911adda065f8465eeff961db7200053332e0c26fa7748fef9ad732799b45a6dc448cbb178a23ff65aa19c8cf16df356d1ca9d848646e2087b5ea8679a5563ca174879cdfe46dc5430ea208aaf1383281dc208f9bd8ff2064fd369feec952dd19c5296183c41910555879f0d63f400aa43cb17dcd322fffd31f1b7fea99cd3ce3ac7061afb830505fa8cb6b61eea77aefeadce1f79b8ee25ba6225b37a5a36eb29ee934737c4bd1395f94dad50bed908ae869c28cbae43830afc5b2452fb50f576002d125cb38a4c3113e29714d8084e8f505c75bd81d13175d406bb5c72c69444b1923d05e707c560637ac6b4d9bade8c5faa9706eaae3c07d4e831b88417786f5de903bba64604ec3bdec143c44fdde1e0da0bf9c0fdcbd5a5e77555e735dfcadeff2ac973fd5f53b4f7c3dffcd8b3fab8f55d1ea9c9df723a6da049e301a560fd9473da523043afa51d92495445a0d4648f65cf091aa80ae040f8f2793f5bedced4b123efa2260f32d99298c8442236cc2365f553b89a394ca27a5e9afcc00ebaae6b449f9a450c29fbee82c1256cb2b102a4e09930471035d80b26ee194ca63039583b73b9c6f34ecb9999d5170da0a3d2bde142373eb75ad1f54711ec872a3c18d656e8f6cc5bc27c99deb227f9dc4f450bc4e9a50f7d384a24bfa719d0ae360b7a1cbfa9cbda688d8557c80a40031bfe9dde576d08cff74123605cece16ee137951d96937c2a9d4f033722ac7d2c8a28d6a23aa0c9a5d03f5267d3c609b3294be8e909af84ff8e0ea9b2e1086be0db97cbe747af7aa14633d6148fe7f53b43dd0554dfd4f4d51b55f634ceca902218926c2e62466ef2b1dd070d2aab5ed0d7289c144940faf7ad14b8b71f3f4e1a7378f2d861e2624ff087a8ff37eb5f45ce8b3dc065995f93655e4a4010635954bb781257412f16d08e01e529c90a65ff2175a3d9b09e27235040161811e4c16d4af1ced0bb71019ac2cfd74967c2716df0936a3ca596812548692eab2fc67e4ef2b6d5ff1681506170569f629ade94be32c2a5eb38064dd682cdcc23eb6f94ce1ba99e9a5024ccb005da8571903854007f8e6f01543b6cddd9a92e0d01a8ce17716947fb65c071fa2092d71c71fce836a24ed389f84d5115f52571a34bfa77210a1b5568b2962aed86390045aa656f1b0d45691fcb5a85e47a8c90f70ee7b9e4a55e6f004d182af47daa69cbcc3973b17399628703fb9d5471d60a81f5db641b41ff0416029ca33bc8874e1c6b89c2bd3b8f1e68ce3a893ca79f1ee16dd4252defd4ead1001049d8982f66120a2d98444d805c34b7691114dca9c4db015903396afd71c3773ec82a157839cc6ac042096535992162b278978898d7bbccfe40dd172a65d8a0b31ca5013b17a467dc6e9e2b0b7ce209fb94f4bed13c9260b95e5ecf6ae2222582a2c5d15e98f1188355d5642b0669399c6590385be50d3812564e793d56d0b6549d3fa052f00770f649b20cab8e90022891a895f3cc0e1cb00a350656d969b2f49fdfcfef6d9c92f35423c53b1139ab62ded967308baca523e6f14d3d0ed264512e94333772c3beee4fa797e7db6c6a607348d9e4f35294810ee9684a1527f6c54b0150c242224c515e772e7b766a4508c247f0f59858d1a3c03e691e1cfa176d877fecfbe4f9dc8830aeab0049375f6b96ee594a0d6bbbc4e4f7081477d4152b360aabce9f202b183a9f21907d7e05d007e6dbc419b107a216e222a8e11caf4521bd1571a50a21d205783fb62efc4fedbbb98aca4bca3a1d73bfce8db0671246a7a3f58e3a1fae73c1f842387d078c4fe549dbf1b6dec99431ed815407c4a9cad8eb5482535f94b79ad537e4b847aca00498b95b594a3ba199ceb83de680a12699b09e8abe180ee930303cd16d021591324068419ff5d11bd950496488385403b8baec0faf280599ca81e05b1b2524f37c6eabaf086cb04ab52e5e1611b3e628780d3351bcc4187b13db232b2c80a394ab5316cace134a13aa09dcc95cd248d995607850f88260f74990bd68898fd4ee0f6ca644fcd1ed6b7db7bf57753fd94b6699690abb9ae4d69a86b54aa00af9ad979c9deca95d61c12ff618067fd374c6ef90a68a5492b5cc09ccf1980eaa8d4833894c3e0f0dad387fbfd63d2e822f76e5c26e06342bf34950a3d25ee2240cad2b953d236805b24be40f32c62c2ff4334461db11870979c450c6c8acee7d1f7283fe9cd7d4229da8cfb92594a20e157eb7b7f2fbfa83dd8540a027fc5fada7906878b9b08fe25e9d234568111a073a1b6001ab608049a93610d31b6f37c8244fdb1f22fcf4e5060ee1d5e809eea4161bd49fa10c712d6295dc1d819143401ea82df70a355a45505bc05e69d47e0074d4bd29c2a992906af7bb15274819f3c85025f5ffef7a83ff776e6fd828b2c56f715e391a7ddd523d6305a35de31c5d7797748015fee2638c05568216a64687e704270ee108e8187f629536d0c4eae16545ab7153f20246445193bb2313550fe31c52dc0e7e57456e125163525af263c31b1485509b4261ad2cfde00132528cf3fc72588e075f09f6694c4d1b1d2da06b962f53cb7a352289587af4c52960159b32274d3b82def8b7b04b7f2a3fbd49f86f77e3b9af0e8474d7268e1ec7f205d1324809fa0c875ed1537faa7ee5548456275b100c5c6992de77a66719de920d3babd80884f7a26d9ce036b083b527cee59710a0cda7bda99ec063a5479731fc0f9882a8b1db40decf09bc5d612156016a0d4351e0cc6d6abbde83b618cf364d5bff6d4aa160ce584a30340803950229f61ea86d5e9c4566817566f882acdde8da7f02a661a42b3faf851274cc8699ae1c8ca776ad2c399768a8106f851aae7c9b5ab1fdbcaa161b55a598cb7544cff29b93bb247918d1522771ea7cb4277405ad661505307296efd6187d7220c6e9995342b0f69b60165ad8814da3b557b69aa4a73b1b3bb823e9996245567242b56279f57369915e18dea68070e522133eab206a117675410fabae61e35c983c4226f9368e6ea0fca67333e429861599702b6995fceddba54373f248ce2949998956f912c5e10ea59e105b4a6cc32d9744379374c6baacbe2b54cd174da652743139ffe2c3eb90b5676ea20c44c337bc83092b0ff27b950784d352f761fd26dfcadeed833eebe240230372ff3d7db430c922b1833e0a38b0257ee77c4db6d130457003f9c5f5a2b60e09e8b5694eb52c5678bc5c664e92e5fe75a64f6e6e4c532d53bf2f37782d091699567b2f879f8df26f42a32cf6a074a98e09ddb5c327174be10b00f26e4fc945d42d5021483b1243efbed11b86f3074bc23b0852a1d72e7e92a9183d716625306f227b8d8d4eb4c1ec5f259678068a33f46064a1b03c8aa0a3030b76527b87aa15a768521b47f4a3904bcb60850e025b1c8d703be121a9b11a694b4fe158f80171824ccbd386ff29c53de754c008baf0f7c152216863cf016acea182cce3be74c8a961667517d7b7926705741ed950df8f2705cd10389a2411c0d950a17bd127a440a5fcd34e50d62617ca61672dbbd21e7dbca453b68773a1e40ddc9b2886fb431185c75c312bb5c59828be72ca32af7711ce8ac61660e361b546dda6e385d781bb6a79b0a57e989cf9bba2332a9e096a979d4f43100c8c3d45c47b85353ba30c6bd322f7878d587cb574641cfbc74d4112425f08cbda04c2a8bbdb9f7b2954b33bf215ea64364b6f6ec3e0ac1b4d57cb9d2d356064d1451cce23ef456b5f48210a910856f364b14cb6efda9fd3c159703477152b7ad4a0cbc7f2be38466c0d119f1b1655c3607a580b5480131218a5ad67b03066fc36ee8610da97f7ca6e1ad0175564e5d2ee3a1bff871229e10e69cbd35eb1b7604624065684dc6b03e27f3dad9145e0b0f9d7a8065f17e2eb02de68d643aad8eb7a08ade96ed5ad0162c08f6c88de58db321174e1b0bc4c1f6ce6e93a5563bca3b952c4707866043869794022fe2e0fab68b5ee4ee21625a1bb47827cb365fdaacd9e600b926e18a4e4abb01fffa9df8255f3c1bd7b9a327bc0808b5396017b0c285e87028b165308c3f005493a1579c47ff6f1354106d0c9a2d8ed6d8741fa642e018881737d73600108b67490b4cb68976afe6dd65acf7fddcb4247da540987c4d8b96ddc4b1f537991196c062de8c9a35244734adc5927881eee944dab5c228b4e15912709d24930b526149e8affdf6ad7257f53708c546b33f2bc8908c3381ee46ab0da795e3e912f3077ddec6084dab02c5769896d6a6f77c80ca16d0648e98533f69b90d87024ee54be583f9502c704349ec4c5dacb5216da7cc3c110d3c289a3f307f57f1fd81c97246a8357413e269c619fe10b8550d0b5e4cee0d01a1407f4942c0a18819b940d7f8ed46c159871320bc57b047173c169a7edae8bfdffdee34f99bc10d505fbc620de09e059df5948ac401d603c953a03e90e6455731868e14b1d0318a8c09a3d677aaa22428e4b5fe1fa513a6868d0186da3a969d29c19551356816efafd1837c2e384bf7235a42a3d3c2f9a7060ee3efa91d5bffd3081fed86a7ea6da68d935c22f1297234e236e41e9f87787d891adaec1f3ab1755360522757ef12e5f6ba812285144a33ef4ae443e6ac58a0319db017e5094274ee521c03f1f815576ff4e00a21cad3dac8368fb1cfaea069ff86b7844b3aa0362a41b83856bbf1916da4d6800fb0719e388da70c3ecc82a04dca34b00107caee597a377b8ccba31b5bd3d02b2245927295b6062df99508f339096d9d1e4cd5b3346fa6dd6923482cf1754ba3930cc4f7eeef4fe76650ffb259116912796be866941c177eae8b1b7c068c1a370c16caade881986f06700dab65e5e7da758bf1a385c740f0fee8f9be2cc5566bafec8d2a42173c9a2dea6555f99009ae38c429717283b2e1800db4b56657fa71879d86bc557773ea3b6996f2cb14a1bf8680f3b8f5ca5fd2ab6d242fb27aa7568019fddb566a14f4983e3d69d4bfab429146acd2f27a493c16a8a9a2945d1194cc3da9262762e80e135d43c90e9598ca5d1340945a88632b95fac5db45492d99648a8673aa27556c1526623bbf1eeb32a6fd865d78ecca1b7a277bfbf54a95bdb3a6eaedffbb6cba631d5e331ee291fe8eb3b582bbff671a01f52989b9fd1228c68132ca4c17cefbefda5cbff4b1d9d2b027793b905b739b81c2e5a0fb57ed4452a38b0d17f678c6d0e846cc4410f578ee1343d746617e947e7d3c9052183e9981584197a6e4cb5d312469c35fe103ddd7ba48576c894dc5c8ffc7065eff5317b0a81681fe76dfd00a9f59981836983e2d3ea675ddb20aefa8abe4583a24095a983b35d2bfcae081831704293046d5e2e74e8519f470df2e14b50eb8d2654069e2ed81205d2676102769104702a1002cb16f728f74bcd078d05c4b51f39e41c04a4bac3cc2d0207ac81f5330f55a20afeab187474179853396f8f27a28439dafe1169be6192e5d83e284b24e962e602cd034ec50327155884eda0b663694b7ecb8392117a754893ce1e2f014b15c1924aa7ec1cbec2b06193e4f878b204c695cd6e824b4fe17e3c6a4dba4ec1b659a0241a895803aa25725890e6919c1284fbc91d3d1528920b6e2939c7ee071a0c87e8e1f2232f919d8eb637ab48e71658ea8f8956f9e834941b1731ebf89ba157f160c18dd5a8f57538417bfd7063361931f25eeda9103e0dcbe93db93e41ceb7e79a75d2d95e2548e10042f11bca70a2cd75cc8a87122fa09c55232df08ebb84aa299b807288969042d914f15f6621139a3247f01a0effd52a89d420d8779e22e7f423273a927a785244c1ac593789ddcf0fee886b16fac4124b1f521691afbf9ba015b749cf7437666d2c1928072ca0c59f96198c99a443786cd1433a8ceac123a165b64f116996eb8dae66a78d5223974367f6185d2abccfaed7a3e989077b532f33164b747d13de7775fd08620c31e833b27c6c2715cdccba0ed5396b9703f0b7de4e4966a45bdf92de122c5ebc81311cc45683903295ad1e554ee95a3dd6571c967dc2ae2f51d3380c56bf99cf7a6422fc8163af69ed5dd2efc66cc59d98a9b4b27bddad04dedca1a45a50407640eea7d6c39c3af3b1e02eee285dcd3747ef7bb314925ffb427c07351f042b93ea78f9be4eb7c2e756e04932f93b0ddf5b55420666cca75eab8229bd1fce9da8b1372f9708d4c21bfdf26134ee69b431fd44369549001e94327f4426be8b3526663dc4233251afd7b89f62751d21d61c75b0a59727147da2bda4826c520fcfe5be73e5882bed96142190e2c5acd9e85369c88a3b20844669ca7ce2c01de629860bdc4603f28f65451341c74513f8115370205fafdef43c54091e255346c0a7ec9255317ca526b4b784f42462db39a101a3fec9a7212d68052d3b36c4ae550a4947ac87a0130d187c7d4870b5c91e0913ae324b4194845b02e122ae6fe261ed92f58883c8b04b0ec59630510d4b01d016df25794831f78d2f881bd2ce70a0c03162a10be0a4c3f5394a6c211d3b1937ce46760a381ede879c0f52570977464d36e6cd3a11ae508f98f0816f7c5f9b0204d9e6f3def50440abb01d68b3e27e71bd33f1392cae37f04364de915c725b1a081cbea44b5c074c69ac1a24f1b308a553b5cfafd0d685d1195ba2a1b041fd48371edbed3b9adfdbd307c99ecab12cac8b3986cc9231b3ca596122d09fda51fc0852ddb09ef943aae7da2e9b7f9ed97e12c2aa005cd80af036bc7cce030432c2af3fd6d1c289c4e4be2714f4612844cfe1900d1ee49af1aa13c7644338480fe34e4280f8e9a16a0d0155409ff5eb391a212c9f726f798d64784156e4b270c062da40b34211fb4646a2b8f48796d937ce20168e68bf25963b2e4dcc2e1eb0fec4dc6b8a75f04e63c54f681f03b6ba42e4094167bdcba73e16ef52f3e4a98d0f0cacd24a5d524d0310e2862fc32bac84b85c92564b7d11c4095b53e9dc0bb3f293d3bbda0ccda5611c3ce7a714c165f78fd7a34e85ce6194801f0e94129965ba2d23c6ae3233818fa0ab9b99d2424c528690861cc591d70867223312c45072e16623f9fd5ed0cc18db25729050e6a469f5d2ced735eebaad515127a78048bb4aa005ddfcbd1659be7e836c325b66bd7b691d962a10c43bc73d4df0cad5eff120e4f2a7371362b5abbed09bbaf5458201c69e91cbdbc28dddac4705c7ddc0a9aaccc1e78628e30f2fd33ac8885e39ce509da67683f09a461f8c1abcfbd5806125ca403ec86b4c718c26e00c8ce2c364559d02720a26090b32addca185fa2837360896115edb49085f948854c1da945758668d9262b75b81da079b249d35ff4f162c9c6f626b61ef2a4357954203e613c8f8d4fb902c03f18ee5b389eafa49346210989e495375a92a0b3a03640dd801244be4d7c846295421cd169ff9ebeccf0c84a397f3354e2cad50cd347b9cd787a06dfffa904e0ef7b4235f200ed3ca94f6a4aa453532ce892c7b5e3c981f52a5a0fa7ea57e3dd1e2296a6c67e2721f8030c29af4d4e5448540021a415a3ad580a721dbb9ed1a2be3f2770b3411e922b24e2c06d0a67038376c71ba2804baae915fa6f8d3cde4192c263b4c6a5419268558f57a190915865904aa641a1be6cc20cca57b3c7527397307dc789426ecf8582ba88e113667e00c6dc6fbdbd389b3683406ab44ba895b14b2947e4c90b9ef140ec382cf7b26e125844d8be86afb343493987003d56f6d83d56d9adc8ca05ea36cf381990511d49ee7a058c724c44bda39afb087655ef9a81684aeed9d182d525c99599e2db1c3341e4a4238542a6c5b837695e5122418963daffb242cecda0d81472acaa932a5936284bf8cfe9b188701b21af04a2da4f962c7a2e268a7294e1ba0f04f48f74371726068aabeab071554b3500a0dafb812db8209a475d652347d175ae36ff15918b657219d5f35c5e0abad936445991b4597def751540a94a80124af0dcbcaa1f5570b600990e57941ca8d9000873871b3bb91443c3befee12cc0112bf2ae98d435ba97cad9e34985c3c4c2109c61b6b56720f22c2f2bfe00d93a2167470bb3446e588b29227bde1f39d850a205e9d04f82389c68ce1e32d1d74b0fd35a5df020be09d2b343d69ebce2583cbf6490bf1e4974fb2f31e842da8ebd3876409c943bc49656c4b468f3b8da1311a7486617884554e8c2c43be85703680b4318179143e3410a815f128ec57b0250ce0dd0d714c96918302f6c29f38d62b335d2f92af96c1d84e8cf01f098a5271895b262651678626cc18773678ca83d7cdbac315c269fa378a7b06195c11496918a496f1f365af6163045ac92bbb59674834f00f37170d93ae687a77c20f1dfca0364f9c5a8646c688830d081694e10e1633f1fabcb2f17b96e2302e269311bc0a86eeafce675f1444d6d94f5690aab544ae3a0b8ba6b58fdb249f28727de7852203a552aa946f47d53ffb159bc77a270217f7ec072a4d38c472dbe1f6fd4efe0baae862f3499430a8576b3422016950887ad70d81a80ed7c07ac0c0045178f0d514f3c2ee88fe9cc42f35c21e26acfa6c769dbd1de20254dfb1c51aaf8836d32ecc8134775c9d1c189bcbd6b60abb6e271044d5ae6280b77f787097e66fddf4e0a3e53fa7f749e19af748532f2e519fabf310bae94b438ce2c1320b02edebcf673f014b01c53890275c2a749883eeaa2137740a7297ee2cd6dbac3c99d707a3c46fd41280f2227b1a61fc3b47b9638f6cebe984c3c0a4ebce50f966837fae18adca5bf8538381370f27190c2781f92048acbe7cd20d5b0280095d58adf1989d459386a50f7f11638c6071db84d4c1a782cd0e99fc084612128c9ca5746140a93d0402508681ee02fe0fdae39d9b6bac209e6df42fa60fbd2087c1a21476787640aa4fd5d8dc3af264627db4b48222e564874dcfa13d106266c0a5f2a0d3fdc6b5639d34875b9cc6c70292e9f82b867d8e1bc03412146aaedcb84ad71c57c5dad6e49071c7c621eb14f3d00cf8cd82a4b01532a56d5e92d694288057d65c4a0ac45ecf9f273bcf1e2409c15c08046fe79660cd837194087516a4b30a2407cebe65cb400476389feeb0659c2ce3bc652ee6ef92e0e337b76a13ffa495f845f1290b5cea194903e2c79c23d748cbc983c660a56200a2ee44cb8d6b744a7a91714a1128cbcdf0de5657a998991b06fee3e76dd21ca133304966fba5011e2de9b15dce1034ebc47ee365a95b21131c6d9e211652bf86de0bc98fc01ccc98512853b1bde219695cafe4620ee8abef3b48c5c131ec606b21a3ad9a3a69cce1e0e67b6aca16e888e19529bcd5eb5218c658c6b63bf7d11c8ac2ddeb8678a558ac6a820733ff87a374a871937b4562dbbf5a40529397b6eea4f44345b777578a29882b62b642ca5d5119930c569e628c9d0ce8a0b45225c806acf2f08a6fa8565959fc5b289d3ec1c8fb60e1cd27f88bc6456312010c0438478c067ac881ea0c246a7aa420fce1094768dff42843dba4f089fc2580655c2eb73bdd275179e7e87bbf107b9551ee24028c736788d8e11cb405948cec249719e34af5ee77009fc7bdc17b5a6e4c3247bf8456f313eaca7644f91e54a20d91b34fa8362b0e6457807c67051396349513b47b8827c35b9cee6f58db269c97a4084e6ea22eab202c6395bd779727b3db1186b4e903975cc8ddfc40b708c33d9efdeb27db42aeca32b43457eb1794910ecbcea60fdb2d6388a8d551e70c787e4dbe16158c21261766baa9363691ddf6e893a97840f1e61484834019ae16104e339f582b52b26b2b0ed54226b5efb34f52ff49ed88031ce17256f21b1960f67b67443f84f934d22a96905f9fbd2515ad08345a8ff0382a434c571b437f5f6343ffe3aaca51bb2cdb2ef23c2ac0a3a4b563cca3ad85fbfa6a1514329fa886c869ea6040f3e5a8b66f28277ce2793ab38df4223b99acda6d2c8a136428a3d1d41f54c30ba211ced709c2ec3040063b77555b487bb843f8298725db4faa9ad70e48051f863fe915d17658c3e7b187cb84062641e562bf73c05accc279e9c50714422de483bf2ad0e3ae40e83ff579d431d50e3abd2b80e7409899ccca020686e51807b47edc79570bc7449099f4582ab55c2d8ac34c21ff459787d262f3cc0c6fb20c68a703f5481b4cee67ace565ce6ae4440fb9d7c00bcdfd90e1e1a04d7d3c0ccd85cc0334de0b5161f1113b034b23d0735c3d1bee86aa42ca4a47f91c71999e083f466956327024f680a623ca04ee3e3d33c15f1874378552f4a9c340a975d0d312bbcae2a75e0b9600c03c8dbe4ab33537dce9522d1f9bbcef64054d60f4c9d768380298266c233d9decbbecc53042c6a5dcd2b4481f297bf0b639cce48603b959e3b43627965d44180d78f6588dcfb841f263d80ee6a9a2e500adbacfc4ced798fddb28f30c25e50a12abef5acae97a84bb4e652a32f4662f413812e35a4ba7e094e8c7b75b99d27c7dc3f9430ac75e268b4a718e74d044e3dbf1ba944fced65b21f1a02aa46492fbd5b2130ad0e6cbbd2043070ef0275922d452d8328c1445e42280add0b7555f53570cea3372c67cb98bd230846da6667c1580adbca34acf0a6b599d2903a871d74ec7e104ed77ec554e1da336cba5cc8bd8b25483b9627248c8b5f16100410d1fd3d9d0ded69f99f9a82620edb6544b280f13c410c8d13dc431d95e2d81736c45f2aa09b55d20ca68690ea33380b35128ffcf08665ecd932c65ee4761bd0a60f0511ea0bec5e8f2fd16c4de130c4eb37cdce42de4c4cb9d01f2c978a2d7c0a1a57f399dacfe8b6a0fe1023879e936441ff496cf714f4a73d318029108462fbd106881053ca4b21b8377f99731be35c4d4fb037c07d5a7bd72ce2dc37154218871214c9814d28647017334cc8a72b9bb241827776bd20a1c0e67928561bed4a81e2eb4ddf6006ad89ac33f6f4c0e36e055d16508746eac47c8bf123ffa2014a5bf6d0073591013e0c3a112bbfb8648bddbd3d15355f9cc6854463a0cb581a9ed499d3ae07c06c5488e16811f69a895b33d8b6e02b3d9aeb92cbc18b7034913a1bd64e259b3611a10bcaefda2328ec9f2f236d20434c144d3fda998e40bbaf16de9b7d520a20ff9c02aab4663650699314b9a1f8bdf0b3cee070415b46426e401bc05d2310ffce78829afbb6519cd7ff360304284340eba78c47c9b941b2f59ed6459bb7a71ff4d1a8d4e810e1df0e2649cc615ef906630752dfb418d0bec9616e553cbaff21d292ccd2fcdd60ebbeeb58ec082925d24fcd243b718f49668f75ce955141a1a66487302a3770029b42452698223d6a04cb7884ce874f544bacb2a0b8efa27a23e85d4b18d9e55c29d24b7f375211764df1b42b1136b4839bad24bbfce26fba38f119c11158191a58c3c8deab7829f3d28c450a070c8b3309686545d045a677491c37c2e596f139690b13e1d7429153fbfe470bcce9d0268beab4c6c2f44c094237eec32c91813aaa5e85297f6f9b8a049c0d2112ebf882449c08af6acb629de66b294f22d61cb507c3886f326dab751a94f4e8f8514d6139f47656b23437d064c44d2c956dc3198dc83d23833dd3a0d9f27c0d5881f30c5bcf1dcb3e84e52918756805554583be12e2fab961fbd3b46120058578e4990f51d7eb1929c62d1681b01a025e6d79fc7023aed35b3d9e6901d96ec1c0ed817cb860faa1aa683089dc88d144384d150d11a728ae0dc45b7d4283dbbe2543660f4099e97e05641dd097c4a837f65b957e1d89c938f037b218032031dc446521c7890ddf327aa4d797cf7d027aa0eb0c62699f1ba87779ecf7c510635144f418b6b2c125838c434a855f9389668a89cacc44ca2c2fce11d499de084b099acf16113550bebc7de38fdefd88355199af2b98b85a1f17325793077433aa5e61139515e32a736e52804e700d6e0c68c47ebed2683d164975c1f25a93e635b3718b214ffae592e6545686938a237c470ce823cf512c1633681ab6b696bd3664c8d6442e168aa5ed24188052d058abe330568eadcc4d882785c95e826636f40991cfa6c2cac111f5a72a3515a933c28916b3442e5c524136125727f13a22a95b952edc5e6cd893faf786fb8a4af50657e6700ffac5658e696cb86992d5d112bf64bdee9d69554931a56b937c33252e872d7e07063fbc24b9dfc7ac0677fa236cc6f62e18cc64bc2f6e45c8a3c2b371fdc53de0d663459ee3379d582dfc01a82a97b7a3e64173d92c2a01a2df8a521d05abfdad07909a86eb4e1f84e6f72d8ec2e11cd74c1c0d9e052e3240b7680ff26829e8b4389ecede20ca94edb2b6ca048d492ef5a6d85ea307f52b55b50bb0b03b4e52af6ea3046e164e20d08341041c494bc1ee4506b493e881b9f573e2ed5dccb3e25df11c8fc7410dc1ff2310df8b05ccc064053a016b2d7db4046f267bdc0a4de8ed53e1b6579df7d72a313ebf9770e8bb07dc00f9edec72f9297da1819180820c0b0c97ea88619711c9b7ecaf0cd17f3a22e999c69c1ff3c0f80e66b0820d21166fc9c6067812730498180b2e387dbd3a3ea63f248b103d4ed620cbc600a0a84ad9ab0315d9d845f1fbba61ac7a809b8d63cb81031826794ae344eb27eedac8109082676e258c9f45bc49c10f619c92f61581f93ecbb777545716f40b5f8106ac2a9051c656e84d317b976085a01a3de32da476f180e55454bd95fa037a8ad476b2858099fcf94215d8dbff7d033aa4d8b08d6d54f0d6e961a3ff3b64e9e0b066a00e68e89028c3c9861d3246522fd903031454a7ec899c62d174ddd829e192be7842ab4306684af1f04840768072e60dc473f1fd37cef3213f6ec801d5ee0689ee65aae90117413f393648f7f5df11aa860e4d054bead89e24c6506e9f8995584dd3a0d8515450276bd0cf6256a917dd2afdc2a7decfd5a70016f4f32ce9e4163b4127f34e0a96b7a168cb983a5b5ba40ac7986d7371307ded881d3c7efedccf3860f2fcd766f5e9a0bc428145623aa5ec875e23cfe4c902066d28de0d6a9ada5027c65c8c958beb1e011e74600bed08fafb60a4d11fb392d905ceed6021768f58248634eaef486e3741c314b8f65319b69059adcc16784c7ca867398f5da73fd70e085f7f83e8f0569f08219595b3d2b565d4d5a400ba99e342b0c760448cfae65540c463545b5173d2464462b6d56ff1d96e37af0ab6d4e1a739aadf1fc736c796a212f59e07433dee59d1a6912a1098441018e5d5e8269fc15124e5ed185e9c58bd21a75cb1f8f1d851054aef9aee035cee225ee5338a75c5940fa59c5a121773bff27a30b89a3c9fcd6881723ac656e99f4f5f185b7d4d9ec125feaf5bc87f187040296d6e4c545c4e07637dc5679a9b88fd30459b09dbc19cda29159058775109b9a2104e1c42a1d7b8dd8113bfb892c42809389ecf6451a2ff51d26da622bf3815d8ca6b4c93bc88ebb24dc9e03e679c18273e6f60e0a2470a4635f0f04393196b400673e557f8acd2e9e555e9a27bf15c13869f2d993f36ce3e124c18385243c374ca93003c07b39ef953d43a28c51a94e3a80e6796b3a21d1675f338774b41ac0c030b394829519fb5537525108f9b5d3865c67fd1578fdeb5b6e45a3110814038da3bee2b5724ff177cbf115dc2410752456b99e40a44869df51b838ef34f39e6f6f2f71b243a869ab305ac0ff2183ba7bdaaa618956f4415dcfd126c702c2e1f204d93aea22eab8b5a55fe30217fb0ba1aa73469ba0ce7dbe482bf16f4c40adebb07dd08d9c77cbb642d16c9bfd3df64ff762d211fbd4381d95c4385a48ec761c1f97c4b4b5ffeeda3fd10e5970a0bba05182ae5d9b1220fb6df439fab68a44e29a373bfdfaa34df981cdb5e00e283d6e615e856680c7db8674455032ac8c93d48b76bb350f1b1783071e6e7768dfe9bd96cb183744c03b33515dfb6bd4dea81386e2a96827c7b5f9eab6654f5123f4dc478a0fc81f39e1d1ab5d927b5cc61e6f82614eaa253ef6bf5304dddb48845870cebd383a6b079153bb2ca559e7e25004c6eeca1a3decfe35b1cb288009bbb37db7a8d73c6c22893610eb98f9d0e7d54f2f8e3b4f3ee334d098208faf5b02bbfdc10cf152b5ca71760e43de904e3d5c5b09b504daa1d816f2e7cce93008b224e664510503d1f2c89a09ac1aed88bb25e1d0e961e6e61c3b1f120bd899e0837ff576eae31c841a21ee3a2cb3c76549cbc73c8d40a0b2810571fa547a2129201c876c9632a27ebdd9ac19102bc2d5e51acf60106329070dd94bc8cff2ab2c4311a31833c6b54543f829e086def0f34bd66973805a37990b94dc2bf3b7911558b2c872e7ee36c5ea8b9abad1878d81416ed5a7d427baed372bbd08aa3b3332ee6112d0a23f651645e6c4c1f9ad5f4023cfbd0f93d0c9a0948423a655752e68d6b3248f55a450dc251d618594cfb38b2ca6b5628b2f5ed35a14098666160b8a887ce39d9049c53d0ba673e810e227e19df2daa75805326cc8a8c6e349c3248e002c51dab81b0af7f615bc2bb034c26c027eb39297c88ab82b97a1535200310a6fe716861159021f23696a8e51c107ebb720e252304c6bbde67cf0269d95810b889486ed873c16834187573d24c4bb6f50141dd5417a7343a8ba080181f1a2d0260eeb1a0520fc138e54ed4e317ed8460e7a89e486abfe29858af2cfb3489cb64ba95013de368ad74e1ead29b417f5e03623a1b7345c386a1620dac27da3a61cfa346d4c0405a2eb2fdb6959b1c9ea03ac6b66b83d9648bb96f8d48801363700160861573f2c095534ca0fb614077f1f5baf9403df523dce71bdb01b8de69e86368e9b7ce24c060c5f76792b575705b5bdc4bb4163c226fbc095094a65c2cf9965a7315c5a1bad21452ef2fdbe7c2d8cf4f76ef194962f83a511b00f3c0ae21aaf91062e820e1400f676af63909b76e9b5d99c754ba1b972a1052102c795d3bccac7ba7e0035bc9d9de6597ff3367a3ee924305edf2c1b7c30299299a9ea18069a4bd98a81a55c1f12808135692e80ddb6d978dc97cef7fd5032a6ce98d130fed55ed80d9e1dd13d9b200939b1252a7f638c7d05fedf06b4a89c862271199143bede3394c162f73384678bc2220c888f0235a393c92092aa76fbae0393cc78609a18417823a6293bb0fc307b042eb12943da849c0294a32590187e76fb75e2ce1adb358410bb20c53f89928666ae5f4a1df976078b26f7dfdca1174bb74f5372c20133665df14636c0454e9fc4b88f2444325a91e5ccb4e4db8cbd1262d012c7e00edacfe909e449714da6a64b9d909f256b83be5208248ff67aa045cc381539dee9fa7daad2953d75aa68ca07032ba1e2a4bad904081500502ccb8eb1b92de5ae82146aa366922dd6ffd469ed2f4a45c01303e7110b2a7abc883816d53b27e3069d7078ec14229c565cbee943a3edfa389f938b229dc4e2b2e589cfb3b89ba8950bfb4dcd1400dd5bae55d6dd83f5590d3a6dd506ef132d021f888a7eaaaa09bc52ecfc21fd412723fac46995d960bf8419a1011f749a64f8fef567437435743719e39d75e74d8602b0d0043bc156742e685af75eb6e00dd743739c1286f6a015a728e51fbfe2a72d208cc8cf057abe908dae16160fcf7cffc6f87ff94bd54dacece1b970160cab023945f26c14ed1e33b63561916e18e400581c5f8d51efc905cc97b3fb2bcc8ec63c2f8030f00925ecfd86e22974eb55b57145cd9826a215bc5281fa098ad87c634f777b4b81fc5e4fd8ec25efb6c4ad37a4e23a6d33205c0893b2fd0b930421ee25229485438aa59679aa25280e22ef5026c0e9215ed18b301a43b8d1852cffb02002c47890a4bcf86283023a7507f612f6825a64b51c9831defa5a98cc8c9197c5ad8fd27b961eaf7644a88fe0eeadf85d10f703ec121f49cfd42989d29a4c149a10e85697288680f08284e0a92aa1cdf657af1a6fe872b41c53385608176ed46e0ae409bb1cf6383fe00ea128f5cb05547a5695f56342f5d369f0ba839c5b88143e8e55a8f34785982c17e5ef839f5416ec62a184459bc1e2cf125f23020aa53f7b5f910543d8e4edd879b593ce92c2f50a8a22110b4ad75e5a4d73a04d45b4bcd731ede9177a884db36feca54896ff24eb6db6027583f698e91b998abb796ea9f9afd7a7a5f85625d998ba82afc0289cd5eb0bebea74d824c0063322aa29e43712d1550fc7355fa1b200d6b9a6681f633f16d36473724010447128383b2d043d66a189c2fbd046af9a8b36487c30f066dd2d5b8794fcee5f064b3277df824ffc472466f62c166bd912d3861f74416606642d679c68323b6c04192b6e36c2a0ce3dbebfe4909ad382b3f595d807bfbe2b4a9e284497c746b4612dd194ad4329b4b12062b019bedb4b9a18dc32f4294d61593063091469dd5b5295a09d62e8a4d1b9463dea40ff29786d2987fa91b9e2058b2a21f5bb1172b21c9399993c69600b87ce8a50bd583f4144bacfd20e4270a061d5e50e0cd0aca3ae9699d17612fef8688e5ec5967edb6147bbb4a75fccecb30b580f038a8008ad0805abc71bb2ec4f46afdcb4321c400b15c550108087674d528f2d1db28b2fbebccebe33c48244f87808a94227290a546dca0faab4bfb13c3daf38ea16fc50e0f07abd70e373e3a89409f8c95308d8191cd38411d924d7641c1f1e4fd278806bb486142e1571488bd5e040805c83a62df3ba190ddab4143e70b2d6f767d450bc68032b28b20bcdf300e3babec28e2020616cec82e62bdd331d6d40a0c0e023ded4133884d6fa539a2067a4a513694037b86d37181fafb954cff6f33ec7ee5644a24eeb214b4455b24277bb20789248651d1104bc51854cf6132344a22c916a02b34dabe6c5fc00f7e1e956c08e761d82b536e96613b556053388a7038924414716cded960526d7254f6fa35b9aa925898f0a03c1463195d0b87504d8da61b0d9e34457fdcadaac75d7ad1064eb739115a0f7fe0262d16eb5abf7fd08a139c4290aff8fb062501db4e53e1c9fc69b68bc95be286c56b6483a0ff97e4ea762f044f95636de7775a33d9e12f0d17de58011dbb0a074f89c1af6e878fd05c15aa024a9c982e06ec550b2b861a93ee25fc9f26b0750556a9701f05c814e08d9ebeb7b911ea22826ec0170384d3319182fec6fa847ba0441b570abbd8d9f968de6790870c43c08e5eeadd9387d0830c3560de1b4f558fb057754ad586fbcf9321a12564629e70216af5586d25330b710f9ed192270465b3106a4905a5a2f69e9780a7a09d5ccca1fad63c38240edc912674ee84452c12b1204d2662a7d882a3810818c9f8cffc1f67c212d6da703b73d860ad689715b051bdc0eacd56b0db9f2e758ce12f281ea6d439471ba422600931fd1792b41dd460422962cab85d88fdbebc284521ed31404da80b72e1ccef7621621750ee0a6f17229a1fa7aa5e77b033bd95b2dc2d291b5bb9c6a33f1d08fe08c92ee20e9649d9b988efb28a4b7760a44581665ff71c2e04323c65cd9d5a992a58d7e37093f4497cce4c1c56cb2643d6034bc9b71677e7bcd0395f01193dc1cc9005c7f3e7ca9796920795ba36bd6b48abf5eaa5b168719bb0639e49b6e1a95e357fac0fe45527d26f14d313ef0c5ee4ee1a9bccaa46410589ee5dd78eed67aca5d37c2f926cf64a4c2f81923fea2b737010b086c6ccf01d47ff911a020208101c2e4dfb2718d58faf0f0fbe057da24fe1b8a613533555eb5e0bedb56a1fbd98652f058fed5b1c4c2ea64eb29448625cb22118cd5e90ee44d35b8a07de1e22be3cbaecc3744fcf0548c2b1852a15de49d206bfc7880e8dee6e75373acdfc091be4000fea58b25a77d3836f033a288d8600e67c9a25154eabc5c2861fa328639371ac4e18b203d88be34214c11d49db5c2ecec0ecf8221c0422777cf52a501a257db59379fd6d728009b223dd2656346956122efe7a5aa1294dfc014b3f1331f9679f5b1b98aee5fbf536ead80ff7ab85d2c121f5b645a0590816781119e4a2fbafd6155b75a72c36617833b2398a6b61d0eb1b07d1b34cc15510a4f3fe793a2906d86e667beed5657d6870fdf0e68df850a62c52dae4612f44bf9bd3c241231e8e86520d771561f0e3bce2ed928eb6501566b577f4c543146a0b70cb183eca946d5c6098e426375685baf023401d88222283014331568264229ec90b94158c529208b8cc0a08d9ed0507743416be514363e92296041df0dca765f40d5cad0a4295a829c89870daaa2806a8a80d3174117b37f0190dd03237764c2989e40c33d7229bbe2f1018e1cda600af490295a7261e53dbb86cb562bd4e95d38d4aeba6ce7f3b7ee589e51de7f9e49a1d4cf76ca49b1d77122f0152679f7025bc2299264cae1f0f30f6d7f56455f1b7770be42fd082bed519eb4fa768a00f6b851bda7b02ac6db1f8cdd5512e2fc76a42a4363161ac33ba3b88e520b63aaa6f4afb036dba0a808dcc07609ff86a1a855621f56bfb538f01ace50cedc6c78add3cda986b9f4bdc6330b607746a515c0c9ffac5f0d77bc6fd817779eb43345c6df53870e6f904812e72ec894c7f411e8b43510de613009b18b839fe6268d30f43dec53a274a6d6af8818d27ed502889139523f182edf75e40a16c84aee7857b215520d3d7e7e67fe0ff69289bce58e6244c94e079978e628ddff05da1040d4c4237e96cb1da9a31cd956b544a5c73eddd46a8a7336dcbcbd1fb05de29be9541d15413075dc2481848f0b2a9513061481edc5482181627ad51d3002169e66eaacc6df3fee6c3737408b2581a39948c6e52e985dc6bbd1b0a37d25e9a28622cb58754f03cc56e18e63bd76f3879d10bfee2699797fc84f4f8e7222d339ca605c54f92f68c8f4e005ab436128d15b78ccbe4e920e12f1188d9908ca1eddca554418550c083b8a92f81cb1df4386e35c5b6deb58869da95405f75080896b0b763e221730ce68d0ba292a39cb672484b998732183a840c303d40515e70f730514c1aba62583aab27da122079f3c81eab3103aa13ab076b8102a7445eef49ac0695a8a854de6f9b5da7ce66823472ac8e507e9976a7ddaa1b09ff29473bc7c1e54865d8fe5f4e63ef8cced256b8dddde6588e0ef58980c14d3dcc45ffbf8f98862ea71601674c6a45bb3ab25ebfdced26ece5e897b76c8ca9f89ba01f037fb681abcf22daa53ccd20106ae884d7bd33a90e8b62d73779b01653b04ecf35827a7e23a47e5c8877531ee80082f73e68ca685b9225345c9bf021d049d8e059c2ff41e4393065668fd02ba2f9fcf5c88f823b02df4bbbece748e71cf0d41a8159f97da0623de1c02480d2ffea20ae5ca37350c5ca8976afaef7e53c827ffbf7aeedd86430cd9d19ad4d4ba1a2928ec35e50dddda117dc44b555065fb06c83942b4057882f51e1b79c74abe7387448fa6aace385f547a08d960125dc26d243b8b1f0d93e2439622f602fa7e5993f718d24b50d00a00b31fbe9f4aa4ee032e6017e302a3326c83b4754e41acf22ea096f9b0e2a804f14fe7b7bc345372823bb02a0829ded7a4acfb0943a03941932e0bd994fe8ebde0e6d25d4d0ea7c8af3512328b1bc8786daba15f07e80cea459feefad29a90b3129674aea6e08675a41b126d54dfb2c3aa841b3e9b59b1c35e7ff11ede9561599f6059592b4fbece2c675beb4a4f2bd8f10c11921305ba940d00a978431345da892de8842e7e89a36e2b7f4889e266cd2dc77f50b682fe0f11b4d670e23174ced0491baa165a33cb22d09e68ef89f0079bfcd62ea7795ef85bd33997930e6a4387b73ee57507a2fafec63d26cf26e37d9af76eaeec72cbab7af426670f5f56205d56fedf86d6f0f6b3568608e6f007205fa80969df433965738db5ff9a68858e81a59f94263c38f1ee00ecc93edf9f424466ec279381aff010d093ad52e12ab7d655fde7071f79f11263e6bdd9d4a5db184be93d6544fd1264d4e087be2986625a5e97174c296f14b188358e2e0679efccec34de8061b13fb61d7dd733e04f796f5408efc842d5c8910849df964e147b5588751bdaa6dbbc93ca8dcd84bc7233547200cf18ae6d8d566e9ddac580d4f9319e7091f938d3dad18bc5a40263d71465e21344731c4d95c4bf338b23cdebe6274445bce02cb608d5c6801f66da50de34c1bd9823d42188e2ae532adbc6ff559d1d8072577ac05c351259bf7080f1ae4687d5b083a243ed5022195d56f657767ebfb16663ae5e3548031a3c2b8c960286ab87e31449a126989463c1261f4205c48986bc3dedba194767ec8c22080f3a6de26663a44b6f4c2e9c9f00d5faac77b375e6f1b5333e4bce9cd876c2b408a1b07c054102444cd73414f5d65862014649161f2cf7b0c4916d28f9beb26b88e68882f33c1a77aca3bd0bf9ed31ecfa9c5ba702778db8c7b307f490e25b67744207362e69f4182105df68b80d90cf3ecab9c7a52550912e8a2679ac7791ea464c16012808e607f71ac9faf8bfe3c268636bcfbd1a4ad70750e83d3beb2cb80d6d8e007761fb6c67079f05b2ca5d457cd2d0777b03a2aae23af58342536d20c25f81b0a1c0e9a78bb6292cf2391981f1157843b0325cf01bd0c8afbd6a5cff93c3011c2e07a89ec152ad70810146c4f2093b6e576738fee65dda12d524397beece5ff63684951d6b0e90fa84f3d4b9689363641c0d31707eb35a7435a4ab534ff8553990688f5cd05a1beeec1264249a9f3a827c23cc20d35aebb0dc35c6a8a3decab1f02ed7715896891d1d550d48970d5d02dc4ad4fcbbc7397e0635743e728a104a10c28dd315ae3da981e951ec0c5df14a6a10989b12d3a399cb3a314aa394ea756909823bb110f1c408ca308182ee9558c5362cf5501dbd2b169e7ba7452877268618180453e5096e404f0df39becb6cd143cb1ee131012cf0f090383c972f824ef5867e7c055232c4ac326dbfa8940a468595e9d0a45460d757abf90d0b43b9859edb0b60330cba3cf42532044c779af7de13c824c9c33fb55411b9c7453258c29c48cd398487ebd1a5e64d85614684db312fa9289be658022a8798abb5f020e807848f8d587a5de5aa8b8e8172a3d7ebc3337a4abfbbcc29c4a958e8be29ca0526499b63d1d007648ddd8ebd0d341061c0126a7f0c424aa139c576b4f9e440152e8c248035639db3641caa10b2ad595c7ddc67df8002232c202a3a64d3f4bdab4525df4838053945972d29faecc2a21dde705518091aeea65b401914762da408140017ccfdcfe57fe5ee21a1ff5cd3a3a30527f146618a9d14178558ca93545a0564cf72851c45da08db91c38235f3ddd4b6ed6e227ca05a1791af717713bbe813eb914f7eede85614c345c0e95ef74cf21968ebde2a1cb8c19a338435880b6bd91ad6820e6b0321d64822b1666ced0cb5f923ec2a6a9d78187d9177fb47e102e271740d9d0a77e48ac5fafdd9de87eb51449e088f29e489ab78f951eaadb75a31b0bef4ad03396f05d741d4e936e350d5f9d603974c073fa9fad8b192256f36185c7593d74dde1a535585400e6b6911304eaa74a9f241ae24425669cded92ede4ff8c0d453cd0c58566827cd07e9886fba8097474679fd23b5c1a72b14612add2457389062b487c1aaade6e2f5138bf8d652e2c1b9c6571dd4faa9e2772caf62ac2f2ff8c3618ca47b79f13c640431e14f996a38d41423dac9eea9dc501fd039144c0f07a440c513dbc238d00535a8cc683e43ea3754819d6a7355f71e0c0ab49d98e801e04353506ee632549bda9a0820f0a088536571c980e4de063a993fd90860b40e4eea4a993ff63b83a893715f906799c4e3d5ae9ad5ac463da0911a1b7b76f3f808907fbc27bb71cdb1586c93f984f21bbbf4c85b0cfe11bd2cf959e735b54e35d9b6eb415072df4b4052f38d3d407a73e7141c5234afe58d02f433f6e4d4e6e6c2b8a1f8aa94fd51bdf2cca34959e9d9fc18b97c12b7b1ebe5773f3709ca79db5accc4a72738ca7e5fdb1758e5190c8e136555cbc095fc688bf50c8dc45024d2047620dca3d80b8dd4689f30eca6439b78adcfdcd45f08fe563e35cbc45c951c509c3d963129b45995eeef9204670c741170965e682028d30cb125e0983460f6d5da789af20518680c9655de4144ed926bf76b6669c132828fdc2a83841e247447bea5cb5bbe5108f13f662ca9f21074aff1de02e8f4313e5c8956101c630dab5c4d502a93750a3562240cc329beaa73d42cc76a9498282928b68b71bdc58e683b701d37e8839da79fc0b19e5ee6b4275b5aa833a84ff38a26c6dc4401fc3e8e88ccf03c17aa5fe5a9f516d8716f5f8b61869f325d00e192e9fa3dd394a60041ad714fe57006d52af8cdcce44ccf6bde2b0d8eeeae4a220df5fd95406fc3fb5bb81d52d1b3da11743bcc28d579d54edd82024cce0037f4015588ec214e21a347a50c3562a1b587d2830005d42f0c02a4b6f345d2a07f68beee5022c185689b394dfe887474e44bbbedf48016150c8d4e360cfe77b325e40f5e22f017af31440dd8765475f59ea68b412029657e0f43822cd53a430819818582b030ae42dc6dc8bef8e113ecd472b8702996fc61bcd0335d94fd4a73eb8727025842844837ab2f56472a02563f058b8158f361dd6d16cf90645ca4dad615ca230cae528e1a3f91c728ee61dc2e3364ca4e9e76c4201a329b504b1f0c82dbc307c92db71f0c04ba84963bc434967a76d0e2809e9da182fe822b518bb16beaddf17435a8a6cd6b9221bda670df4cb49ea48a1f53bb57d5651854b93b4a24b98f23771b3869e646ad1b22ff71725d609d7fa4651a11312966a9c6f22b91a5c29edec2d322e26e10204e09a90c6305baf8fd3bfe5febe1ad56420feeeebd81fba17f7cbb69a658ec2fd89aca5d9a224deeccbda87e8801bc71b5cfae7caf3ee8933cacf1063b26c0e2ceb8e8568892c0b7e962cd3d1c7e7e63daa2575e5f1930083f0a43a589cc7c2dd90bdb41d2a7236a64f93005c87c2c5597228bf1547984bab86ed29e990ed0a35a351649f4c5c9cf661352953d5fde9269edbf0422ad263b47d72ae485cf91d13de8acbc0e420aac958ea996c9c85d6b792483c988e86a7e3c594e17e408db561c3b8318c74a0c48aa749c2accabd8b677e60e62aa8d864396839817cdfa7e8a2671806ca03518fef9895e0c7d671625636045c3a63d74d36e3b2f108a981d822b7b04e59a4b6020519eaac33bab4a228f6ee09cd12f909fe8c53b80e9820b81f52bf695345d3ec5d9d3070e5587a770828ade83be726cc878f6b1004324feadd5c99839b8841bdcff14f3284cbd1ea1d124c07645e638197dcf007a043a7d7012c96e94b432aedf2090fb7b1975d689922c93f281209927095346a0437e28b3d962910c9480cf70bb2abfe92c89118dc42fbd4b3943def4daec91c40aa438ce85d31256f4cfcb0119223f6b63ae9c87553a08cfa1696b1f0a77b0435c112cf60694e857a99e8c5c869fe857da6cf853f51544d7bff9a47b3849729e3c822b48ea77509f3971b2a208143f3ff7fd271ba33cb89a65cf0aa40b9afcc345d8b8b63c704bb68b74439e53315fc4e495358fc435ae6693e0b8efe1369c59f79f0ef0242f656fefb213c7d3f0eb8ffd359226fe76f4449012226ca375525a3bc1ceb6379ff467c40d28981f7555fab1d2006bf0688ae5b8739ba7cef83d44c5f6b47244f73051162aa6d50a4d70741d04ef67089c2d8b2f7e66242646d8ca8e57935e7c1a23854802d44e32641e1f38af52fca7e4687edcebc7a721614452c898d922d1c914ea205ced593775790fb4429751c64390c2dae661f5ef29b458c6a57a0391d3707ad6a5536788853f955711acd1c40db68534c614d7579c5ec17fa1cc08d0e01d72cfcaca83df76b6eb4d026090e46436039bf5558716f0f05984d253058e677deae1b1a825238d37ef79e8aed10444387cd86534402186195f432653ea9f22f9295b3b5a578089324fac31d1802d310c5a419c9515caf3bfb153e49e6eccb77d85d30f206676a959377bf4bfd510da61d02f37071eb8769d45ff34ff656fbb0d3c579ac298af61a203633e1c3da93ab924746996602be94ef588528a66f2669a5fa60fecdb3b4e4cc10e3b46a80aaec0b66e67ffdfa78ab3487cae920d6ccfddce947428950063436edaf4272e75f57280947a58f3b26db3ed4869f63e1f3b1a45b99db23af610639f379b95192ccfab8e7e91d5ddb7f983b2715a4d835721f11a63c743110b1e421fe4912b3cd0e842d2e5597520fc824927a4621f8ff2472508bfe67351a9f42595e45a7ea25aa4d803dc42d97cef890ab93f93f703ef54912364ac7b10ec0c9a1ca7a3ae0661e8399418c33d7a135cc31d544b3b47aa669349c509ac582561fe4c56d4b78896a1d868ebf3e19a773db26976322ee5094bc4215f04527b00294e8f4fd5d309e8be3ee85450ee61a3d84fef75ae120ae932da814a7e3af2f262bc181fb5e69605f7d87dee50c0cf6053874ddb34e087713328186337646d12d025dea1d092186700f60116ae24fa7551318d240f66c07be68b7684b771a34cfe5c03700580b6a97e920b4d822d2ea8d1506e2a47fa80fa71be5cc73a23f8057a149b7697f2a898ca103baaf02895b404ec24a07a9b61cf9cb08cc6a3fcf7277d4bac1387116fd8de8fb1bbebae2bf3b8d707531a982f76f05dcdd01d94f188ca66061c1fe8582d423925473c23d841a9c303c29c359dbb834a167049979f425217befbda59432c9246504097608e60753fd30584186589aae50792b6c67a37dd8017423b2bb7b1adb533f64f72929d961d3b376868bcb12171364557e505c8ab0cea51af122057564c30e2c344132af8a168eb6f82044941b8ce86a60b0d916843ccf0af718aa7092264c952f58540080142772488107244a4b40ee3589d5b972acc16509171b72fc1abfa1b81ca947b20b68d0bce41f1d1dbd241a1f3468781c43f26ad6d4da4362e1d202440c526baaa0c20a19b4d0d044822dca5431814c4da1b2508388504300ff3d19d9a0040ac2a879ba72c4498d21cd98304fb84009132a1802e8fde380a7700454971b8268a1420919240913c609316376a09285aac8120b488c344d11822d2e60f96285972e4e8a58b30517205a852187c6a1080e9ec5b690c39c73ce39ab2b6519620627826022e2488a8907a5198e8a585aca92429ef5851cc61421c3644a1424c8e0058a2830904004052238934548758149cf39d3d8f601ae00092c54702a82050f2f7844a0b003982b482024871a90b0a944d2e410af98ca525b489303840287159e3023e50c1446528628b205912a60aa4c41c5aa0e49b374051204ece0431649494da6a278607e1872a68b9a159eb84cadc9b3b29086094dd2248a0e34284933e5c194269a70c208264a60814b0b9c101ca4d452a5aeb0adf091cb1241cca490e407242642fcb041490c1223880823b5c2b642152fb0e1062c43ac9052838b042f4054b921892426265260ab0a6998bc39ad906122892827575e4083b388915284163890e0ca941679d614d2307929a59d3b6d434a2937a32241485942c60b0baef0206f70218d0c41ac34f9e10919382d51482497ddfcab145090443143111aaac84e8a272a04f174a404098024134bb2944eb29415852ca59cf839eb6396bee24dd1022aa69890c0458b20505ca69479810a4834308162c24b9e27e470450d92868639f1cff7bad99d9fffe6c339eb9c53e26d05d6df7f7b3cde48347fb10379775adf2e2835a58a96ec576eb0574ab055203c43566872124589248e68e08a179e7c41c10a3fec7045057b6586ad9a500227282e5018714188301770c2073551609aaa40c19512e415146a0958d428322b6825e1cb549d825989b04b11334a664588297582217280a1092d48926c384209284b638cf861881e72c8acfc20ebd111ceca0a36564888502e00f9614d0f639c18bd4004132851547072ca82a66a01a968bd7b9c22737768fddf96ecef525064ffeddd3dfe0a220635be557e50555650a52987a993415c8bfcd0744e457eef64febd9d7fef9dcad360f59c2fe1555c2abb95fcfc4a7e8e25ca53f627dee44b51e20d579a51632ade88f1efe398fc6219186fff7de744f27b4f72255f8a375efc834f5330ca137c708908520441bcc181d803bf4c0789f8960cbff32f79ea4b53f7a84cf50d97ea1ef8814fbce18a3df05f1419be990cd790d03ec69b1e0df8dcddae76b38bddfa2a4de7422019f7634fcbeee8dc07e441642844864374eee44478116e04a53f9bae90c9cd054d7f6a17fce8f1e9c631b1077eeb7ace7522b107fe8beb2e2e7cd654868f03ff06be8d9a0cdf426ba4ea4c090fcf4f71e7f9a8299f1ab3d0cd1228187c5c83f1e37b9fb0c494fa289e7765b8d520c1c68b5a01910c7f067c68800cbfabaed703ff7d015e04a6b2cf0609c8f091b0b65d5009ebf9415561ca5dcbd53df0b347f1f787ff645f763976c52a26c831c6ef7e50557ac8538cf6783a39638965b50dece3b7769ee7c68c5d1cec530ba18c8953daf5d42ea70ac489cb9a7d36c9f2bc0faa8a5296d7266b5d8548f659391cd84f0ec71229972453c5e413a92497a492cd79d3ea269b4ccc4697a9be7ee7193bca4450055c0efaabc738a1fa2bbff3d697375bd2aea5359d549252492ed95e2a75d1c9c989ca9631f1cc9190a4254f989ea4be9071356da3b3a650db6656391c532a65377e6997dfb0f30995763d754f849f5d87c8669f4fbf33ccd8edb2af719337fb59b32c6c2781502e47fdec2927343fa36b6c7dfa5d748a5f80482429a46fd8bf11a5a20412a7747c0aa2d805f665389f55753fb27cbf4febd7b2e3e8d4ae189fee941c1f6361bbb8149d6093b6d1cfc4412db19461cb26ae5531f4bff81bf4893def0150826d1bf03d0dde03721b582702fe2f886c932d44f30343cd6bbea6129f017c79599d0124925b05d577c72bb3d33620841e5f99dcfd504a7bbf44d2942f41337a982bfc6e6e6e6e7ebee3e0e0e0fcfcfadefbd76f2c168bf5f3ad8d8d8dcdcf67b970e1c2c5cf6f596bffd5da79f1e2c5bf5af905864d5c5cb8a45df359171eb9b008b4f7dd183fffe7372d13c011f663cfd4f996f64fe7fec49ee9e353a386cbf5df6a719cf6735a1b014c991677d50677f64d1e2fe8e11defed6baf07cc36ffee8e9723eeb0af4304b3cdc3dbd97676e872e5ee3fde88811d9045d30f100cec802ca636dcb55ad8015950893d2f073b208ba7d8f366f75fc64c3598b5698d85395fce39e7a4f805730c3af5e6cf8fee94ce9fb1c39b3146066474105c3ec72f98637429dae3e9e21326d6e368cfaa3a588ff3f3ea50d18f57fb6fe2b8ff26ebaf7d3fa514aa2a85cf6910e779bca93cf4e235179810fdf73152c071af712a0a6fc7dd193b681f787b35edfdbb42f4b96dc3f4c70f2a59db41f5ef51d5538e7b7bbb1d6f8afba7e3411ecafe65d56bdd0e155cad301ce1c751fe8051a6aff260e20f18658a556fbfeba92c7584b4a7afe1a137c4fd66b40435ed41880d21ee4080f0a10fa5acca540fefc31dcc1efff45bbda9956bb7eb2fb169eb5fecd17ea373bbdc6a935c06337daabdceeae96774042128b43dc7e34d5121f8642a533c645f65ef0b8cf32bd6afb467b11e278725c4c21deb56eeea08698ff3dae3d4df28ddb1516eb5bda918adcf797a1fddb1bdc6711c08392a6e5be12e67dbee8c1decf69a6f38577b6d2a03ad5fe1ce056edd1831a674d4df5eab17368d5b94423ffb20ca69704a7b4d93ef690f982115d232d551fd6a7529c7d15fddad537d7775542b9d156ba357e7e66d9e729ca6692b8ed3e1ecbf67e9a8dee6b96d63b1f0f6af33cadb864180f13aaa6f7dce772a0c42ebb97f306eceaf5a37e7e955bdcda50fe3b6fe7120d8cfb1f49f11040ec0bdee8e9829eed1f94d3083b0f089e87f9d120fc527370d034c13f04c96ef4d64f9512ac3979c90ecd8f15f47e774481df263f7cbf2fdbc2f1a712d246374105eec8901d327ec587778ee9b77dd2e10b6dd37c9d43046957c87d329c57eba7be3a0ef10d64d4ab193763b9df2a57b77a614d21a86e4777edfd4b3d339e4df39cb2ae7cc28866994524c5629e7cfb94929a794b4d628e7c44659deae28cbe77e7b18ab86bd269461b86a544a4925a554665868ee9bf4badd1bfdc61a70f2bc85ff3a2ef999c725bb1bc27e98bdff2f9385dfd5a81123bd3a532707fdec71509ce19f8fbdba283f0e07fd39217c114695c49bd320baa5fbedefeef67e1ae8c087195f264d93f52e61bb9a2f53266b46b16da3747241f431aa3da6bd465f6c1dfa2f1be5985f1fc734caf4aa7e5ed5ed8a32f65c6f421aae75d3b1d96f3850849c90e7ed4ab10de59d734e5aaf143a27cd322e877c308bdb263bc32ddef668f46751b4f7feef19bd4743e2ceb32cbb0ffcc8efeb6373e2ee7d7c8d8696b3fafed3af07cc2e145b4a29b19473be8e501689e28d0fef1136cb9d1f140b6ae418ab4b65b0b5ab7d8cf830c3afd65aa847c3d7eaccb4f8cde588b95fbb2f43c805c5876698b2f613c883323325c39f5f8107c4bd2a3302e2b0ea335507b5768c63e6d0540f1f831806e7cf17d462e53f22f8ea22f0e3fc57bf9aa3c0f3d1c177082f0a1c00a954af411584fef046dab0b11e3cbfb6d131eae3573b04628fcedd1ad49efbad2877f5e347c1002463905fd40b49e4ed66b76f579487e676bbf9419917e5ed331c2b6004b47a8d7e91ea37dc35d65417050e80561bf7287000b47a6e857dbcce6053fd76e96b4019cc124e1d215cb5f635659e6401e407c58225b94c53ce7e6addabef949defdaccead0ab737dd557dc793073bcfe6ab1d9f7c38edeea649bb01fd0e35e9de7ed8a72d631bb43afee5edd1c08f6e8e8a8dfbff1ab73fdc85da40752759eb5477a20d56bb87306a870d1eb0cb22f7a9d413ff7fd1850bd2f57ffd14659cf31dae3f1d7e9d77663cd78ffbe7b4f79b6e667d8adddd35fa9b3a0487e563217e454c6e4e7da6bcd2be6f1f991ce39e33f3aa1d88e2748008f46fff5c176353a01d4c04000356047272828d4403df1d417870d7e3af8a0d543eed2edc176df4dd786cbc3e5a1fabdc15dba4778753802db65f36b4d69174c9a2dd972dcb52c4cca6c27c1248a933248826372d72554c86421b5a5621804ddd30f824b02ab264718dd3d0a1551bc661b87a91eebce5a107d8d5eaded0a477b575a5b6e9372535169bf12416c460f367bede9378743eb2cc32aa5ddb4a230c593298e8adc1c804851468a25514c3d45f114258aa5314bc61cb93948f1450a285124f93b21955d4d84e401e407e54413f989284f1cc95adce412578a473a53fcda61a6b84876c7a8e75777187e75eea7fe917e87bdca27c31e08817e8d376e1e12c9b2f7376f735ff73cdc3d0ddb1070f7f08e2dbfb7afea566fb10ac3dd0a73b8f32c710ccdf78ce1a10d63dbab7007913287776cb9b3c443fdd8d07c9931a96179e22692690f6928e1bfad3c75c326d690956538be3b71247f7e5062b2c80e7f76fe994ff74424883b98753411c99e9b3a88e4b3d95c9fee89df43e0023a98a9a44228f5e682e09c9388d36f21cfbd49cb3d041a4048cb14471c7d2e931863acd42ffe893d4412c52cfde28409729fee0ee74bc862b17676dcb5b3c4c61d274e27a5136f5e75b09025a7bb8e503fe6b1656fd714b7861601ace870a5756bd8bcb3d0b3a28315261b16325e66ab353c31b788c9969850364d69a93cc3641146c8113262173304151335656b5a28e6891829d9ddc77595c4dc30c534c15789d53d6262c8587e506284e4cefe0a17898f122db6023165299215114f5ca94048b5722beb08413be68a110c3514c16409135c605282d10f2d60c1142f2a78a10440b6cc2d61704d42e9bf2d59327da754f3414e21b151a2524a293d82d21b2c0d61ec6b62c28241923b179588a5f51e0da9d795c9afcef5d10023955f9de11b65fa824d091308df12c4a6148ff000058b4f1c89cd087a8b11df524412f12d2a502a3df61735608864cf0f0a8c10eec9a44f5a26e7f4d9d3a796492ddb6694b2d6fa1886f95663cde2933044f9a0f60f039f0d7e68ad11d3fb035d62ecdaf8231ad1ee2d584ff5dfd55fe3cfd8ee39f97b7c45bea8793d4f08ccd1eb79b9ab4260909eeb65568e2d4061a9192eb6462165c3642f369bc262b124687e505f9e72e7f218722c0e9cb5497e8c93fab40b7eb783276f80c1171bf383fad2943bfb56ec961fd41728b97b4d9fe5cb93dc59db9ad22356923b571cc30029314dcaa8b043903317986109174a0075822f30683953b564b1aa485630cc343f1d7c4083cc29a41bea83cc0feacb1054ac962a260d42a9962632a512c968852347d0a06585125cb086e21841102c55a078f1210910ad5a98c068f81264aaa9b304549ce0440e5cd22865523ca1e6092f58f87085962130b4e030a38ec0278db5595e60b35461a370b8d8b420c5b2cc6464eaa494524a7dd2583a354336b564457b70b14562b1ac966dc1b6d25896854269109f34d6097d2f2bb054269a1c8b23311dbb63592d2b1e4069a575524a6d0b3e692ca55964c8749569961b32a5ff94523bc3e576c7da96f5c2946d7e505e9a68a992821a353068edf0d468edfc7c33bf05ca0b0ed14b0d39c61823a518b4c08b122f47bc1c51419d744edc3262c26cfdece9e5853c51009af2e7830e3e783156b2d0c5d2fca0bc9ce0849df9417939cadf8455931f8cad5b7e505dc8e4ae0615135a3aefc68f53effc9bb1ad9de7a1f8e7830eda750548fcf900896e3da5b308244a29ee7edaf501a5b4d22e51321d02447fa3b4e553de1a3bfd2db0dd6bfaf9a0f563ba84c9353fa82e5a7257830a09deefc8131d8e28410898c292203a4a09a5243cba0e499688705f80509726cf002f0b75d9e1d178b9eb28b7f76cc8a81e68787309dd307cae977529d205480676ab22e0726662954e57c147a3068414893a55c28ca2a75091b991da625958ce64585e605b692ccb62d9b26119b3cd80b150c1b064895d564b328bc8e3e735e0dd80014e44a0b8737f006c778aed871e18922f237ffee9e63c90912516a13de370f2e7cf3879c43c2402fc97ccdef8bd1a4796bbffa737f80f96c900054bd640c92fcfcf32ed7142f4f67022ecb3c07afb65e37839c767f30346f9d56f94dd616bafe122271378403e7e6ccf1d6db85fbb3e9c887082047222fd3f4b6cbdc95b3b314a1821fcf82f62b8a6885f7194fd8a23d9ddd700b9e249feb61163a4f0e9edf9fe57ca76d54647b3bfbf6d1b3c88e016aee3c6af81d597b3e257c7aba3fdbbbbfb71de6a84a4496168473ff613c33cfa271e8128beac7c8979f463f365f39c2f09e30e9bd4e6d589d0593076ab1554f42d23f6b6f16a576bcab6ec2b16e637e57ce9d3e9d5911807ec2766b50bc37d2580bd130ebc76c5a8189ae49dfca28a34c945b0280420ece37cb58c37caa4f3259df365d5e4cb2e6f733ae44f2feaaf1e14e5ee3acba71bbc4458ff38bf56fa6fba0b5ab5628964640ec07ff9b9f29db2f19f63f1d68bf440d856911e08730660b8a8fe0ffaaf33881f1f08dea9233a81ef5362a2e81d80fd5a7583f6dac6f6dee7f58f15cf8f31230556c3a68e1eedf33dc6ead96b9e7d8471ca875083ffb8975faf94daac75cefaea57d76d562c6868fbed6fad73e8d5db43fb5ad1c4b0be7bd47ccb88b04ef63e2305f62317a4d5dab5ab287000648b50e000c83eb575feea27b6adee03c2b4cfb8a06d725b9c91f33c5fbc6955ad58bd3a5327477dec7154fcb051a62fff7119465326fbcff9137791cbd12fe79c4f553068f397a2304135300bf88a6294f1391afff9e09ee683a39472172e611d99454ab9204a27842269ab686d15a548fd1c3c7a5aad5d25d22b72398628910cbf85e2d36254c107823cf48a3eb44da56d51bb9da484c159c46db393265482993e844f4df711f4285f7be5a11d9bd434cdc208d548eefd39dc47428d77c44c1f369047a3a3d49eeba87d73309af3a197e79b1839185a11d217bd3a2862d8e428700014e3fb613cc675ac9b8fdf1746b9afce11eb08c9f7971836554ea8f1abb507e58baa2724216a8a3c0d6023758cdb48dd3363dc9a9fa6c4ecb1afb997a001e6f76b1a76fdeb5565da95c2d4aea676b55353bdd5bf9d1cfbec6b75cf62c5cde4d1c9293f2db553bbe605c2c6ec1facad724c04b7f0cc5d1dd7c9c1bdf638380d1b65bf9c6a7b6a57110e7fec9b8a9c577e0cee62ef5c908649d9549e3cd7a75b2f756ea94763da50bd938e64188c729b989ca99d989adaa531e50e46c94ced349d1e8df917ca6aedde524f0348a55f4abf4cb6eba4a75a31ac026197b0eadfb2555a76753a47f6f171643862a3dcb72bead76e57d4fd146ff452f7ccbeb07a963d9639ee25fcea2755cc9cb952ace482b8ada5acbc05a8e99ed975102cd9fb686e59b7d4d3c067a4207b2d5ec9b5129735904703aa81592c79349692a662845076ea093e01791a74166d436af5fa6bcdbdcac52c7bf71873c4973293306218cc8676c48cfd082fcb2366c72310c597cd433b62ae9847ccf52b1ea187cd8e5f36fb57fc13fd5169d7fc96eaa7764d11c2ceefa433496392928e2825794df2ea4a5a52673529c963edee86943693d3e9499ea4e450ea93665a1aa27d204cc2c0d41016a9f692a741521f691b4a91137a5ac4702bb50be6be562ccc2f27d5a642b7c9e18039fbcc7ba99f34944763c905a79a98824830092ac197db1f2e79b0c893d49bea0cab1f7be6f7c78dfbd8999a3c3fab3173f7887d5fed3e619c07b06a9c7c6ee3fc45552f793424ee228fc6fc16d2aed9475aa95d113752bbd4b48d0c7752d207dd331f086e936d792fc51b1ce89ef9519c7014774dd334170642a881459f2faa3610317834e6c3a578a397620f94a741ff5cea27b97613f864b1cfb2e89eb9fbeca7ee99d7089b3df594889fe24b39f1f4a588e19f76cd7675d6b0ad49bbde8b57bddfeaf176abbfe98c72c5adc1d5ab7cdc68190a1cf84081031f373fb42782594768fb17bffd8bd7b6db4f7a6909bbad7ebb2b6c75b3ba59ad9efbd5dfac56b5ae6a5dad36ae1d46553fc9adeba77e7a34a6349596caf36f11363ef7f659af7aaa7efd42e6bcd55be5c8d5ea73beb9a09c9cfe9cbbc2fdfd447b7931776c85ad1e0bc2e26f1f9f7bec57d877d0fb71de6fd75f5f9d71fc76afeea5765d2df6e65fee7a49c7cd779376cd7e12e52a67d5a2abf79bf330ee036a5d22d84bf2219763a81fbec4fda45db331d18f210a5f8c18ab2f82f1ae8a72412a6a48d2930c3fbe8401e3fdae1ec67d40953e7d55ccf1020fc5874fe1dffc6ab55addf4132a397b25ec833aa394bb7ecaf31f941564f2833a9394e7f714283367f27c2dd862c5163454ca64edfbcc97acfd4d6bd9468b865e9d3b0fbd608edf1887f3fe9ab6adae3fbdf99fbe44589b7781bbfeadf3efa5b6e14d6e7ebef62fbbaa6f5e75f38f0bbac19d0d1e8aafbdc543f1338ddb2ac7f96baa0d72feda83f64555078fc67c8ef568ccaf3708dbbda71b84ed5a1069fe5581ed5cfd5a4f39d611a28d87e86baffd75b2f4b7ef7cb2f6377f9dec907ff61df7d7c9d6ef387ffa8e87fab3cffe3ad9c63ce2cce13c5071f23ae741bf18dfd70677f6fb31ce83df3e46ff748c71911e288663311e8b818b7ec0f8d719788ced3ea0eaa4bf72396ef01027241f669bd52522fa91b5a7f7d5dcbfe082b247a364864a6e4e47a6a349b839c33aadd3584866af5d9d1cf26353865f87eacbda0f39bf597745f9657729cf3cc9f0b1216c087bf84db1d7faea1cbbbfe0b4d1116dcbf376eee853c68e50fe8318bf3ac37fcf61244183f2dfd5ddd4310cbf63a33c6b51f6d9adb8b700ee19203e3e456af5e1e1c130b8f3b4207ef5236fedf0c0efe08ab19e5fd41217200b594a29a5b784c4af514b4e78514b4ec8700b0ef0605b9665ddff21c9feeeae45d491166ab022b3f28baac1cb1431760113bbaca8b0606573272d89c9a406192d1dd8b34900edd13dd6d0430c987b1222b506222ed01a8008992f906658f0294e884a9a4041c917255488f0784e7e514a4e90a586264a890e55582cbf282549a65062c4457e514a8064cc055c58af07dee8a07be05718a58cb841bbe08f0f1449cee44b2609997cb1b05972c7da9951932c49524496f9452509227733ce6016aea04eaaa89888f4d85a7e514964c8abfca29220dd27a294c05c30514a5a74f28b52a2227b7e514a51e4581cd9e92495492221632173ce4b8555e517a5340503ac4402196eac508a210adbca2f0a8916692c01f28b4252c509cb935f14121e5c606f7e51488698512345987cc346d190040cd93d43c309d0d8cf2f8a0623636c8c2d9ab0309e2863611ca1c6de48b9c2bac82f6a0437dc303627bfa811b470d7d817f9451d5973596061e41775e40b1e82935fd4912332975fd491a6caa4b57793a9865555867141dca6e18a55faaa4dcbf52e5b6dcbcafc5e7b8cd046b540efb5157c36f2e3a8131f6415524af9af4b9652ca8f4cc01f7c22e5397b58c51fea0f980d44b24d2e791af162537bb0fd83a4658018b1e282155480692289a4184e908202039a198cf48063c409467d72330223ac785281973043bc31664a00451121486208124666d88cdca0551e8c0cd962172347dacf1470c08134a454e0840a4e539c20051e4c860c7146c90e2608d104ab3be8a0d92937b18bbb149bd825cad8e5a912da4e69c854044b99d2280217b8d84504413617645bd34f2090294fca02d50c3dc419a0d0ea0452fa94524a1f569613df9adc5d8a608624f37d7ad40c21902b506aad7d97024ed8858639ff95c9d3c815373ef8805d9851222001a5663091263c5daec0fa9cc656d6c2a10a9e5ecbba5e5cf1f2e02cbf2819acc85d2b775b0d2809fd6560ca36f94585604a1913baf5ad9d1619779e56940c5198c073bff88bfca264a892697e51324cc95d8d262d4b323ccaef6f74111ee5876f8f2b64f3fb189f1508638c31c28e591a0a4b1f1d1d1dbdba6d48282fad94be845247487e7d49258615b5c094e1f70bfecca6075e59c2cfbe47ff9cdfa31fcb32f61113c52923c720ad73955febd72bb71851d60aab7c58a9430c81fe478f68f0d52c4659b35867ac4fb3ef18f1ab6dbbb0224222d7837e95ffc2a2944f2423639748c690c4aff6c03f72415a8cfaac1d2d1d2b7b7fabbfee6075fe0c1fecccb285490cc33a42fdb55d15eb48dfdac67c97d89d314e37a33d1ed94ea4890895f8aa7784221f3f46788fc62b6a954846be44316bdf6943dad00e7fc8c37f3abbd8dd66e378d903fef179f8473741ab6de3c1ab45a8db47881ac2142543d75c63557fd7debdf690a6790eeb7358d56b7d775c5fb0eae714655666bdf89c1739f705aed51f7e9537f7655f1a82b4c2930a4c594dbe799c2816c6e4fa381ccedf5c0eb66acda9f535cf79199f833bc7ad77f19adbc8909165dce7e235b8c9b80fc8ef7321147f08e76f6e706dd7078c320eff37af75f5fb8b3e28c60fe5fccbdae370e4e0ee47ce7917effe17e981fec5233dd0ff0bdc39031e1785e0e3878cfffa1df7fe2eee1051d411ea5cbceae3bf9c73dfad32ae13d6c7b84430d78f5f3f7ec53d3a0fc1c05d0bbfc8511f077746f971d1ceffb32ee432f043e79db05e062e02c0cbf89f28e316c9f8a2131ee83f00ff380bfcc5e1fe5f1f3f76fee2a39dff7f0cc449ce9ff0404e6e3e8a85a90c33eb9f7201f28b1242266b71635da3fcb7c8c9cd3bc9b9791939f705eefc5d743f727dfa373200d70700f0090fb4839d64ff806cee10d10f7b87eabfbc1aaa431b7ed5793debbc3abb18ee8cea9b7828becc69d5962c935977f6806e2edee0f0ce8e263fcb91bdac998e0c0fc1972f3b1038864639c3afce1787d56bb82bca99a6ba273cd0ca7326640b0b492b4c656ddb6eecdc2bd6b6b6f33c707b0835ed57da4afb9f6eae751adb7645cc6a57ab5dd1b513776e12f603fc83c167984846d63ec341598741867f93b0fef45f26e9966d1a1621a3ffb26c7b9b4d98496dfb91a18f1f5c76c4fd0a0339e18156dff827ae404044b56deb606f9828bef6ad611ed97767bfbdb6611ed96bfdb2b9dfb7d8226b99963d0f60beaf8edd2a9d4cdb1ec7868d72f6d86b58841c0714b3b637688f67361734a35dad5650f715ca32fcff6e7d6be7db155d41eeffae39e79cddb366d974e8f59fab86674d479cb88352d2313c5e1359b607b2dcdffa56de81596ecc23cbf2e56bf4fac349333afdb1793becdbbfb3977768c7438287c43c1e12d967ef8a3742802ed70ca75908ae86af75f7bc1083ae76c57758037ead10ce86b0279c15d639e7cb9742133e0ff8ae4508a143036011e22877af167a4dd9df35a36db80d08e59a339d4f2b6adcc66ddb1aa9fcf25bd344f6f0cecfae503f9452ca8979f4c387ac7645889f1681e7736673cec94d778e3adda6f46fc51bab15c63877770cab8fe10db8534a9d7ac4afc661f521c41b2bdce2700bc88db25c65c9efe66fac8979b02eadb572b54efad99cf57f1a739f2fa594d2ab7455567197d6fa7272cf3da56e44e967f0d59c849f659807848f7d86611ef0b317ee8af0ab721f2717045d0ff8a05d31fa5c24ace677be8661d8cbf75b9423d06a57f41b1502a60c23bfa81028c917ccdb4720cecfbaf725846b84c57ebe73413384c881ce1163a073f63ce4fb67ff137fdeeca550369fc77c77c262496e121cd2cde74fdc03e64ee2977c987b48dc0366b9e3d5aee8f3b37110e0001aa07b505840c9f0b58b45940cf12bea681262c41ec2f7e6e491fd9008d84b66e7828644e897814591ac80fca0aea0a2ed6cf0fe701e18fdfc4c9f1f9f0d9e8eec87fae56bf3f61892dfdfa3fefd993e3f3e1b64b8fb11e6bfe43f9f0dda46bd4432e46a65dfe6576f838fec0afb08a1aca884cd767539c990b211000000000315000020100a8804a2e1603c0e63614c0f14000c8ab04c6a4c14c9a220865114c418639021060002002006104386c8c82a73479b8eb1fe04ed6dcbd6d13510f766407742e1dece56eb8e2468fb7de839ec1ea7d7ef1620d1e7d2abac99c112b834ee8c4a95b3fcccf229460dae4a36e0037ae27254124641c8bbb24deaddda84265b3a6d7e14c6939f9ff3c8a53cefd05625885d45842f1a312c84e381a265ec5f915bfb690a38a653b72c5afd2531fb862cef1483e15342dc567cc7c9e2cef3b1e0aaff1d73148ad9432563af539b81bca1d0a910826e4658911b37d43528916a31d391153a60fd6d2116731f7b0014161209f82ce7733097f5144c695d7bd0ea76dbd764edb1e2892989290e43fdea2d95b207bf2f10a314679b1a8f0e55067230f7f3f8205acb162016a5f4a2d73f4aa76086c1f1491427dc8389d17e3bf445b800750a06096c2506c53b6e4a666576d5e0072240fd69d4adb52779671289115adc04262ed444d55f0451434222298825835c2fe3b03db2b04ce2a55720614d7f4017c84a95494c43dd2e016150f6644b5df99812da9f7b4b172952fc421386b39ab9b6e875ed5048d3c0af79ac776ceb55c73c64342279cde71a9998d2a897f95d2fe12a2e2639a9b3eb7d2da625dddf910a012b2aee8b3b2caefefffe7b31f2df8915310b763d6cc1917ee0d5ffe7a904e92f312e3bda8ad03ee0f00752368e05668de09c03282ca37b592213e92c938f218ff13b15fa2b0323e0f547dbd977462b30bfe34c2fc169877f4d430afb036e803828ee1e4097a7eaf8d8d0843d45c87e6be234f41ed13d83276f889c71b5cb255eec3e9140639cd56bde57e9e7e9d873bb059c5d3ee7b5428ccab9c9021ca4a91124dbeb4bec5335c0bd1eba0964e886728ce0ee73e6c6161ea77e1869bb9427f14069d4ec76e592e42978fd56decce560bdbf63a12d19cb448163ba9a68fafd465e934db1b003834c51fa6a08617d65404aaa867c3db405ced4cee41f294080704da608ef0e1aa948c37c7e2554c1451430f2d6651bb23dcffb920f1db866d4b32325019d268ed8722a67345c44383f52af718dc4bcb4750625a75252da571b80f35da31e8eae3eb09f263ed9f823dc93792ab4d9c1efd95901ca1f63459d0aa6bc8d71771ce1d0f6c9adbed3f6d7e21d5b4cd198b3804e9a8de3031803245aae949d9ad16b8e07bdc93120e358aecf2411a034ffd3c5331944eacac5e8e79f0924b34a7c264821cc950b67e370ccf9281d3dbcbf3c078b243033c43304b931819b8f4693be735d0d7d2fcf8bb68ea8d555d9dcfe4a3e7fc54f52bec83772ae21454e6f39f6862230d699ad722623755ff40cfa43e5092003861905da117a4de03b457176156ade9b388b0025610bce8a443d00e0c417e2098102a0740909cf9e48b629de7161d0fdc809535065597a4965d6b1b3939aefe0bbc0880c6e096a0c7c0e658a126eca1ae4c06877c7bf0a402a033a43b91ae1f5be7e295e5cbd7a0cc1d22968944d01ccbbc67913d69694d3956c5c9103ebc15c20b40cbde333558c2334b65794beb8df833ccbcedb92cb3498ce090542209925aef7c81c69384fa0d8734b22c65f25a97b8386669f245a8acbac5c894c99a9eaa547502192b32a8706a49b31a3e7c6c1bd4027b4baf5a3645b90d18f895e0528863c92572689f9f0c426ba382d89410fbf7bf81b8a2083eeac49be063e2dd522e6cec710fcbed59011516a806be8fc772cf89d148422c598eb8b4f3d8ea486ee289bf30fcdd14bbc0438540ace760e3936b0e43fcc570e1f103d2c5eb044736791d91e128c4cb9200c55a73181adff5396f9f2bb15f6ab4a674b92e8711af8f3dc0d3e8a52bf11996e6ecadbf2d235dcab69a86b0351aed34c5717667e8dd142420f4cf6fe6e06fa9242149a08e37643664a31bdb7563c52b4622f1c072315420598f9e13d0f9ec8540919eb47d515455c40d5b1ba601502107533c0f4e627ac8c7816f24f5c0b6695e74003c7e1fbaa959c048843c992fe9017c94d3d8d841956f67e91f3247f8c6bc613c242c68a68618725218860f910c0b5d55d32e4f310ca69183499cc8b09d9b1307a9f6f74f3fb955c46ba125d24cdc7211a467a4a00633e18137fd3be5534dc40aab20202d9bf49adf2df209447b92f63d34c969e0bf3a8a0463063f85b26e9315c67d9a16091b495d5bae7166c2ccb13a68181cbfbf8c6cc087166d8f7341cc71abbe5bc169a434f6a0eb9cbc5a2be3147c14f6dd9e0208932b8cb2e7118e3e2dca537c4119b138a9d4a503b1cc2c4b9bc62fe49bd0c1367439542c60a8c70c84d24a28d1a105d6675733c339967ad1beb75f6e126e3363a3435d7140860977510930934e5c56e8ce173e052afe9ea03d5990b7317ff027af6b1fb7a9cda4ab1892182ae2d4a698d2bb1d64a94588331f404fc4eb3ba29c12964b6e1a42a1d15c2c6d923f041ee3c5f0f0e96e098e6942c0e73d26dbb1a09997c4aa6abcf8d865f2cfc941eba6c0311947a4082ee6460d703e2a1728e1cc22f8f1d7c1cb77d0e7e5ec5dd1572b37b2c8623001cb7b6bf4bdc633dd0bbfd601242adfa32dc5847ba937677ba58a8e461c35f0234ae540260bf1f4a91f11de97a3d34c1302d760c63ec7f0db2f2de5d5120a03d8cde62bf2e8a468a9dcb5b0ee77a899d4a2a1cf9982341912034c048cd414e0e176e33e8785f7ee695ac80ec7737aeb5b1116b38038b04711394314c4f7acb0f992810af7318e3fdcb036d001091bf67fea35d17f70426128a78f176e8f68ecda288cf9ab275bd9c9a46b353cd1907a91e00f4a14370af3a9d0624f49c5b910a244e689e0f2513e84dbef24d706abe1f108978b53750eb314e5e23fe5cbd3cfbe5c18dd55b91952c398763711c1b6f07d0773aa11b4678331ea598a1f6272be24e99b4495aef81a9ec23d8212f551c4d2ebccb3186bf39dd29aa0a661d0ab473a8bccb88715fc113345a9b1092a7b9d6044cc809b383eabed3f5e47ca9c1471fc7c30ba122cb827237f7537c89fb64cf6c4cb13cbf9807cdb35b4af5ce4e4f8d4fe35337f0655483d0b3dab3063313c235363a9a93a6d1b4194d1a44bbad003ea3ff809faef326fdeb6003b0538898d827b556afb88fb1e422b08841b8290996ef43172052960dad17e844dcc77b11ceb710c811075e48a5d0cedfbb85eb285a6bc549294180ccca53a317dee34ce2bf4824c214aed2be187f763c18d5ffe3cc4f4770ec8627a7907cd8f1593038cbd072609822e6db6e35898045f1619f31dc56538a866bbcef478ecda0c68ef3135a98102faa379a5c6abf0bf04f02072537dce65ac951fe7f8b45f58b6476cdaa01bce71b7468f1f273b2ad7645759eae580eda18a33e4b64eabb4cd033339670f79ad003f81188b26a567b6b754f29e9e388d444394cd1453e97a8b009c5315183fa5b028099843e60d2126c0f3bb956718ab4a659edb333766eec20dffdade098425f7cf9189e25bdc3b0ca8a30c56980a406e29b1f022ba7b1d287a3e31c2cb3e7a42ce9c0c115a30652fcc77dff01559d1deaad703b293e8b7d940efb168ba9e485135fcd27a9684679e9f369aeb5c66019dd2102109d4b957fb36e9a4c0ececa216afcadac6e7aebeb7c77f3707d6bec92d8d722f81a01792a3623a7f5c0eaca9bd716d823cc7459c929639e73545d83a4fae6baae3fbca3f5a8694730b96680aca82b1a476cf8051b6ffbcab6dd5813189be09ef8e05b73cb8386cf18206762c0bd0ef7e22c5e79f3b2572acdd98b9ef23123a9ddd61cbac59df09bec21e138453d1908fe3bd648eb7203986924748161ee3e51fa69ecf8ee1c4f6c81df79e7534a4c83838793ce969707cd9c5bc3cad25a37018788ce9f2274029a06bdfbd9176fc62f5ec8c29bdc1a178a9895b6b5de87077c45e401213ebfb5f9290603abde93d106f99ac46ae80baf11dfeb2042eb09f4f4c07e7f53adae6d3899e362beecbf2124498efde54c64e8578c664396148d6ca49670838603e2b06cde2a151056d2ec636f352405c5d9a61613685de59b15431b644ac0ebd568d15dcbd40ae7e67efaf68380aa2fcc81f1f4d6d2067a4a1a104b3d715896017816f19541828a7f46693dfe8ff58ccd55edeba74394cdbd3e642401f75cf2fb745602fd79c42b384c4b70a11831e9d91d872953a784b1e09a0aa454a0af1e166cb781c48b5ae989050c44b57d0cea8596588a3d670fc67c890d029f0907d89afdc005447f2de364844562aa00ed7495fe33e098e543442dc6a87ffaf495e4a57ecb77996cff63f9898c14f26d3980fdd2efe0561818c9d30a2d7d29d4f346f2633b07152d07608a5d2a728c921ac434c3e1c18791a1b88b252adc9af762f89d2ec0a803f5c18bc18d7f261c1842f110b7d4a63300132142f9b332b6a9c9673093a62b90d63c353b2f755102917e1e42bf763f3bbb9b82e5c0b3388d718a0d7f5d577036fd40c62efd5b69de21674850d9768750eab0c2dee3e08af373ae7cda00dbb0a708f4131fcd8e7e8070c2f8d320c2da295c0294b442351883538109d67bc967968f67adcd8c3663663290a90f964273deaf55769abe523d87c4f164b859a5c2e8a2107c19ddc3d13cb146548160f87f629746b796d367b2f62dc5f51d0968e9296e4bd88c89306be54d53768d6f118bfa7415bd1725bcffc8aa4745226ba88a33370daf7c338f5f66b8be3f8a56dd67a3f4546206e20f55939f86cc8aa9f1c722c54a1e76afd5d661f35ba748857328da575b199ae87533b70c22ffa65c20ed05f446f0008225423861de72a29f799dd143f974e2df687b6877447c0d3604903f2cbb7fa3ce9c6ce383081126cd558a839a34139aa64054dea56a2e8fac6b75c9133b3a3d966ef3d881d61ad40815e869524a5879467e567caa6c2b7b867322fbb58701dd9fac3ae06b11c0c04d1069c85b7b7dec046d20040b0f3d090a8dd5059bf8588cf996f43a99f235153d54340f1c59bb0a94545c8351b5b6548b0c4e0d45b386b978c415d9284a4ccbd85a356b27728b74a7a24139b34be47056804060727d88c107802b26343ef8c675f90f55d68c6012846414ac366ec4a34aa65f203c910978d0a36c4e92d31b5467211ba1485c3a9a7727a2543dbb9580eaa7af3131c393f33191cadbd40ea1f6323734578776e1f4f339e5c893ad03d7b7975fb1805f1cffe158ba2142aedd7e226b134a830eef9978f382c66cf2034eecbd6032fda5c8790bfd200348314ec1db08d00baf5a101fa568c500fea64ec5f3c81e9d9a4fc2052f489464a05caa02aad85ec9686e11b5ae5ffb3813b7d44452d75286a3bb9a3a1a428301d0fce9e4557986f302cd19653c4437c2ddfa10993ad8fca45f401f89fc52748f42afa447e97873b17b0a903ed30274f27d44dd262538bc3c45e569593ea7b61d5d75f8456085e6ef0f677f8e50d2014203e6d604da4111c620387d659d826127b5f220d23dc1a888cba4bb97cc051838af8bf5f24303b4e4a0db3e1ca08188c97b200d20c5e4b9f642c165e2969887cc2e0cdbd001c55557141e74ff2bd2a9e1d5fe515a93169dc12f00f8024f4403247564a6bd85d13095cda2a4a80d53828046bc39ad6b16c3673cee036fbd793702f1e622180ced989e5eb6731d63bd6d185a48f246c3b36a64080f0cce6101bc959b22f3b69b0e2a06f4abc322846ec4618d9af60049bac57b4f045c1411bf2ad148e0c08e64c9ae8d094c0a0d3c5602ea0b7122ab81b1f62c8d5dd495dfaeab6ffeb6449808c3b45055e1afa72c4952e5545de95ca7b89120c8278cceef424f7cdf651333231323adffa7e439d529cb87571e903c939a82cde1ae65db610cc9acc007a9f7a0d74f0a58d3ac6e5f62ae87e870ba783039a578d4ab5283d18d0e6cba2a35c1aedf0bc9f08edb1dceeacc01428eb465837c11519a8f11d311177e2b82e2abb0473aaca94fa0437563f21a6c6b2cef28471229774420fd945b1c98c1c301d942b233860c0086bf70f69ce6495c42eb26714b5fae3fa596b7c5617816bd90184e9ff36bb8a4c3470eecc7e45af0bdef3a3922e48048563694ef91e2ff62fecd09341e0c241fe7db81498bd35ee150217645485112b57c20fb90e768dd0a3a7b7577591ce8ecc63cfadfdf7b3976e2c15cf710ff115b5469e15f3412ce3ab4a709d70458c2272a47cf9a52e394dd581afbf1a9b6d36bcdee2acdc60bf25965278f45b7b98335195042a23a7a070132e4b246d3ce382bdca4945ca5d097f3d540608d013a214c45e62929263ac74d7096cc102a55822307bd56800815b673cc37a5332402e7d934c5053d1dfd4fb1c19805cdf0d8d5ae40f9c1aaa7150a10a754ae312970228e8041e65babd6668b2775827efe01ccef86a97d5bea8ab0fb21163211854a9045dd292e30ab86dd4465f8569521d542010c9887aa75eca58a0f520f8f9427f05f5d60f19435afb9d698ef9b52742a1bc736f56eabd363efcc7599c4be0f69ea1290b524a01d1ac644164a1709f164a6c8540aaa0560f06d220ce5d6e5841d11523ec9fdcf440df15a08651d6f5338a03831e74b9690afb3ae64e198898a02b8d6c9a22159b96c684bf9c2d7fd68fc8cf194ecf4efd84ee26cfa99b8637143907e96255fccc2a5a7b90510486b0268de47a64398831d227757d7d8162fccd633a2f7811b2ce9b15a645b357688e286ef1ef70fed26acb7b9e7afd58551143cd47c1e1f3d54836d8c04d4065c76da2f35821e6b157f533f648239bd84d0b5627a9081436db09a8908f65961dad75652cdcc59fc2c93f364b7fff0865b4f43bcd10e6a5cd811c14eec67709ad79106df8b5a5679672b4b02327fff69d4747c9c5c9924785be61d5d28528dbf6c631a5dcfdb42dd2134304d2e0cdbd3578316eae4c9da043b686c95e679cea94237aab4cacb39cc63b772aff156b2265fbfb6cc342f24f7e95cdbe10d371a5e53e7d5977e036e5d29e66382896ae124d92840c02914fd5147b91c73d1dc347fca50295b25c50cd6e571230c1aa462ee9533ce42ba0690f417387dd3db2023110a5d92ad9226c2d9bc162c43c7a2ba4a987029b398fedfd1ed519a84eafcd0ed52df23700dff8b3fd9ef9827ef229f6135f91b61d024ff9892b14ac574ce10a8c0b15d04b9516d8c40391d5c2892115ad3bdddceb72670816095cc29d590d846133234c257cb440b827304dbffd9dff95ea1f98a63f0a1959abaa378495834c358935366ac83e93bd67f92436823dec557f9fe99f0730b801e77e9e8c3f6674fc5a8f8edf67c6f6b340b569e63ff0e4cc348920df3ff8bfdd0022bb767a2b93722b4fb08a155de362e909c4a4d305b95d86a84c740e7ca1fa980fe60a18ecf041bcb17842f66791ec5a0473d000fa3cc24d6c67e443578cd5a51f8d8c5cdd67ab29cfc06a3a7c4109ce23405f2d5a17110117690f390f24e1af209dcb5fc3d64ab35419e002020c32194d4e96a192c855f89302449ba072e2cbf86ef5e971b2caf5158eed64d6284c0eec3d6cf5f4a876b5c7a023f20d6c151a8fcb744dd838e7926d80a3bd0f61c03560e90f48893b80cdd8709323b6577b12e0a1fb57f85a065f4228b9e20aab565e1c5066791ad5dcc2bf0e08acec043065587e9a467f38609f9c7d7d282cb96ded3f29c0927f69068b5b014038fe102a4ae0ad30cc27f627296bf1311c2ab154f8ab2c257e60da41a10e2109f293785d69e318ec7774c57cfbe7775757c50860f4cb237eb23ca69627b4dfce862d0f8fc3bec307e53c7b48617b2dc4ba23e38731acbe0be8886d4c39403e5589d818868860a15fe4696a908e7281a8fb75e5bbf5c652215e98818acfa32721a3a5222ea45d16ba2b5ab784ccb8618ee1f2466a7f7d4048e14a2644267bbd47d5e776a73eb719c9fae9d387d7bc3981dc350de8b6a273a847c388a5d28de7eebd76bb55bb639ae43bb040023f1cdf241a331fe4c0d9142354c0ef426b846b8c9c190fd565b273271e87639083568f926253d92d9ad8f9919226b6b975ef978f495c3c4fffe7468a1febf55c759f0555b2199ff343fb52ff38225d6e615a06bcf20905c962cdc7c8e9dc4f6892e106b85ec1e7ea2821c81609959c8f806d1c67613ab94b0a1397c26198bd0c38831752777924e99011004d1f440c9b2919d1a2dfc4c8bcbb375b19f762e23142c45724bbe85783f74fe07e41c0ab03465da4e42f7c1048c3aa24d1410142ef2ebbaddffc47eae8b08121c89405c966714544b70e686414256addf8be0d0f4ca9f108fa7acfce8715cdf5c2de6bb5518c9a5fe1b55c6dfa7768a443ce5b013ec2b04ed8ac3bf86f8dd0dfdd041acda1aa2d428e8296bd2b54e68a0f3e374c1c62da4fc2e02ad244de4d2c2cc9ca200fd9b9386641e6293f8a0c1bd9122f99ce5c9201e022113d9d78b273ed83bd351782ef798a053d3a64d2a0b2ad372d4fc09a6401ef53d6c1cc96fdae25e1a4e9e5ed95b0e805c6801909419646a331eee9a6bab13904adc7fbd5cec1ab7b092e2e19a129929944c2f2fb2e7ac50157c3432b14d0f491fa7c63edc0e03daea6ec58f91765e499f656cb95b42642879d6ea585e098951d5c22683a386a0ea6519f3c447f55eb2f301b76c49eb9712716aa0f6088f4acab83f452b884cb3248867da839b7ae1f37678371d07c1f9cf89a4f125982b8840f2c38af4805d40d41465958bade82478f9638b2041a4f992ae74e9357d7e2dcd521b9657d9c4a8e595360e63420559b24dec68cca53c53df02e5805a9f7d1025ffe96e7df7640c58d2af6213c1fc134a96e4a2a1155f9be97b8dfe5705aa4e462e3c8794ef20ff3121bd40645c51fa08e6f393d84432db283051f62fdbe656167488f8f7c0a8943703b2e095d945cdd18c011a9da3ab19aa6f60fdec7005e99f50ed66234530ae7da88389664847cdbe8c9bb003d002ec6f5995615746c998d69deb0d7310ab001d9d71e24dad24dbaaf22d2f17c1294b2c37bed3206728698ee603189413f9b222bacdb2e7e8c23bba84988f341be9d31c65ade31d543a8c9b0a36e8ee10c5a7767e953e739d650612ffbb59f74a7cb14800e8524399036c7ad7c6269c18add0aa42336b149fc8fa245e12472a224e31c137851d8374f274379408133c7a4c88eafabf22ec15ebb72e3138a3fdd17987b1924a3f8543adc766b53021233aefb5d9f4310efd5054b1dba498ab3cc64396da5a60183e2c83e47aa2212462fe4a50c50bb827698eab96c7c4ec77eaad3ee54f1788771dca085c4644c33a835e4565100e529f2d99b36111e4aed05b22a153d3bc9dfc3b029db76d7a53e48370a4a4db314a4be68547cc214f6c8a13513d79feaab021ddd8d28eebdd4154fbe1678158103db1daf9fc2dc32544900d65cacadd46634d4d4a55a69bb97e8db3035fda81ddfb5088e285e400e1ea658829fb2e0e3962559ac7d075ab1f4a0ada6e421918216434e76cf05854d0a323711784b4c291815f6e10b507db2bb099f1037e360cc90026dc823058a60ba082d6c823c8c60f94d0bac9809a2879124967e51fd5bc7213eeb7d72cb78f52fbc15e09896e1c050ba432e268a557f8c25d9f66b3a3f29647559237c2673bc734d9f268e2cc6f5865ac589832ad6d06f76a9bc8df657c74948d337a7549ba37a7c2533c28fa9b408c3853402f18a67f437de7290e0671d0f7bd0dc4eea2bdfa5a1b78686ce77734510bac755ba88e59d7067e844a2c92f67ac983dbf59eb43a52d62036bf4fb4daae2dc88402fd3263356cf689c62e07b4e212852bbba0f27de4af1cce8d9a5b75bf6dbdcec2386fa0c21087d9e99c65d5cd47aca42e39778093defb8efc1d20728aa53fae1ee0bda0243958b8e52002e9d2feb2539c97f164b60f230ccdfcf82bb8b08d4067818375ba2187d450f1021db423df0769a4c6f26a49604118668bd34015e3f5b110d17aa115af207c15650e9b21d7ceea1187cfc2819a0f59de2f027692fc44e1bf614aa8ac3c6c01ef7d42ff5d3758d7cba26a015125abeb19d99f568e8b450d46efaea7bf12c9519aa336bb27ed39c686fb7f06189597d09536055f6eee6e4c7caf3a83d46b617fb894ee2f65802440d80e3587669d4155b8c872bc3830135fda1d7393bceb34702c04d1c60ed1988d9d124819fbe91b84748fd8c40044762be084c87d25836a5b8eff0dc98089d20007e040a6fcd0d0e19eb735000cae61311b8171e838247d86f050868cd77f41708aeceee69edfd3a68edb1fbcfd70ab8aba3459f8e7d9faf690427fdb87bccd4509006fa13be067630fcd52d83460be699818866d224ccb53edc265eb73e9f470d51582a1580f8869bb38a0a4664444ce4c5fa2bedcebe45f875540e51c3d0ad9947e2e636d804830adbbecb5a90ef99ca8a2d7494486e176c1916cf648b1301b5ba9d109b1cd81f6d674959cc2a8ce2963d4ec812015bcb4f4b843eb926fc2d34073f56d4f3968e9ed2530c7bdc27e10f810f0043a0331465a71ce1648d57ea933b7e80df0145b59bbb21dd0223974b02bfb76e1ebe190021cd2af7b256b2c3b96e39a554ff63d6a01aba38d154e96a788dec86436a19d61810fe613866f1e6c794989a4ae333b9faf82230e42bd1504816b1d775aec314801f4902c4af11b394a80670c2ccbe01bc6bd77c8fbadb4f9f54ec802f7b9acb47a69a887b0c5c2428043396c88c03d41ea0bb5a4989ee563b11cb5e774655d4886844e9ebedd30cd6a50755724411e4fc456722912ab71b11a4029d42cff7fe1e99eeb33490bb7cd388c608d315ce3b2c7b1fe146696572a097603ab80a33535a99625248980fbbb380e170ce715201cf0ecf0ce47e8bf524b1405dfad93e583e10c331a7a2c0bf734ceb7199d2cf2d127f46d4c91419ddaa74de9754381ddd81265d925ddd19623b21655c9f996b03b881965230d780afd0b79a8c0405cca3b993812aae7ecbf2c5fe209a4293bcdbd63d0bb3ff78d5519038af62aba65458b4253dfd70e06099e71c264c9f4f3d245fec5e4979ba016e1cec28d3f0638443d5a56f0ed44ec4df6e3952786cdb82e9765ee38f383aa706f31a5e249a90c86a10f6c7e705d8bf69c50a15b089037ebf907a3a3c825812b826e870729e2d4a4cd7708b248b95d7cac5072066d44fb3a2e29924158f85f30daf6b7ca6e4dd243facc4e56216090677d1c54531b8b4fe9837e1129253aaae78c97929159458638b96534f7f184170c109009472c8e152766b9973acc586cc5e1be8fdc003584e182fba69ed3205dcf1201af6d8e4c872cb6a98bea482713692e5a9058d82bed98a5db0f1a7c84e66e188912aa5c5c25b76e0d0709e9c4a0c8f2cedf80dde931fb7f3064a84a4857108dc414478f83acdd516b0a7fc5bdef2e57580cc101b68301e79a93376b5100827dcd8f703a19acff32b52f137bffd692340032f063d70fc43c2254164972ee4d6456524249c184ec98818808660eb2ba890139ec06ef4803f3f7b2b10c9295c694b6873918db053c9498645f56cafcd5c4aa041b3b88627d398d307e8c5c464dd1d37d08b12866f20ab5911d6858f64441563258cc9b910bdbdf88a1fab956add66df833d6bc80090ad7863d97a70ed904b24e5e24000ae4e8dcb7c94990ed4f1c1d1f22198a6037b0ff4c26d8aadde73461834bcf2faefd520e85e574f31c8412df6707be6c67efba07f7620baeef0c2391a5d72fe9fb1ccb19f11e630a21e71d4b0e8240fb577a4ab3657e124392df833031806bcca11738f87ca86d0dcb0b5e57ca2b151d01fd21901f20a0902129f78ef67c5e2ddb2cde72468fd7ebfff3e5ba392cb2510eb64d682920ab009e9371535672c5f85f6ef0f4988529e1e20b088f79eb5374ad0826e149385d85ccbad48a590411f26954bed840d8510536d8158ad7e7b368ec7885c3e14a1030cc70ff4650cd70927b4d7ac6d4d2029d94753377dbe25afc124861d884a412556094c3e90599855a434d64e0cda248f683398f4cdb1b9aaaec7518dd567d942c0e4922c3be8f5e7578cceee8cfe75de72a0542cd21b0b58ac759f8a89a950f20028affa3cd35310af4a3d5677d3f48ac38b42db47f352fdd23942822ba853ed41970fdbc685f89e359ceb4981a94a88e822f3187080b75dde6d1d7c7814f5f097e761022c416db815039ac967c9d828fc2e6e6702885031e39cbd2a6f516dff29e4ed5a3cfb0fef218da3d7bb880cd694b60a20807c98a1252ce96b26baa0e8e92353104fc55930a1545fd7bdc210ee763b14d5239bbec2fe24043bd91914680918f9172c4150be69a23af1bda8657d55449c8ca6435caea7fdb178323855688b11d481e31bda48443b50e87f01ea8bd75b2ea054b911a75e0ec03a792e430c71431622aa6c766889a2711df720086087012f8966f4107b90fcab308d50c8d4334a342da0778b1abc9771cc55eb618c7a217fd8f5e0b69373439ec0205f1e6f153f2545370578a1000a478bf4431a638928b3d0edc5a016f78b0e6b65ae642016a50dcb1f9e168b4750a4707c4638e9621296675e55535e4a557082239fac8531d446c947f8a3a82d7f8b5a430fb503ce9e43c8622c50ab1c866388e49596ba11835d258616bdd3af63c8e7b3c01a540cff3011eb663f240a69bc0dff9fa19bd030b7da3d5f441175e9be6ca1902416c711cbfe20fd5e12cf82d6e0207b0eb0ab068c937273794c8c54906cc4230243d2de88c9d20d4a022807cdcd215002eafa37d3d611fb5ba0b524b3346940e3ffaa8affdd63a48e8f7dd1817f22d1126a41a62941ac63084dee2355410bee5c61d334fca1c1ca6ffc4934f5c8161c3770c9bdb7a57833c6849a9c638b38a7585aa0eb714b78516e86033e2db7e20066347bfc43b52c6e465dbd1aac4a69b3a190685ebebf6067e7a2834f27c2f10cb19adb14a3e47dc367c08f1a5cae4e06c502310542908fa65b6623b11da26763e45144bf2db79fb682a66e8a7fb8005a722b7ca259e8b53cbf4203ea6c10422193eeaad00de9005e2ebdd7a7839d55433900a350a6db4bd2824039ea4b71fd2b2400993e2645d53433eda8404db675ed96942c8cd7d9d4c894f7b02fb6b3303f81d6e72356798e829346b74632954ce0bfb3fad32f5e999d55b4992e9178153b29a2473b3af31d3f8c6f16e46c6afc9f1863b365b1e86c987964a121d489b63e8645672b899b3aa780ccb46903ba80eb5e2045903f0cf2fc10e5f5891d2d2416a6cd1941b52890b652dfe8d44744e9543bb1ca5be4151af8a7477831a5c9634b4e0f3d5c16e141eb6b6574a70609793254b6a18dcb0f2597c8002c20ff2fc48b27e7931523e5a884c2d8cba52b524798986078a62ccfa2296e2cae957c24679664997ae5d5dcbe591e6b0f8eb53b32dfdc068d4a0b73d2b4cd2e7d517f576127a84fa8a28eb2d94a1973eaacf71a8d301e523f600313e7705424191d3682b9e2062942f080bf4a02b4956a6e84681d42143380022973c717b9c36b251a977ea0bda56dbe26c4d8f5d1dcc8b091e733a5860112d9fb8fe1da34634129b15b519329acf87b0220e1f8aab86e4ff8a801d218aacae852b9d65f5244fc26604259527fed2d78e167b98b5093136711437530be3e8e961d92a397193903854509a3ec8f390b23e1501da36e2abb94c11ea075bd632a5290e4606e10ed854875ef57bb1ae44bb860d51510cada7540b5a3651c669a6859148d338120f13ec260edb4c397464fc74f426e4dc596511bc40a8c2c85dc55dad4407822a217dd7232cf86537c8057a6b6d76813731f86757a26359e30b5f064a9b0f0590e4e78fa51a264c408d8b20e1a63b169cab6650b256959668250465042889ae694ff8318226f09ade6c48c9f8ff7aa56cc9cbfba5afcc6674f122db19add9a89bb24ae42c63c87ff529817a2733e8a7271a24ca26c4c1704248e5c86d6cca726001f582d6a63267207d42c3fb916a49d02a316d28f886d3062f5c603900cd88c254f49cb2e7c4d672e3c9d17dbf04820f14a0cfdd673e6eda85ca604922e46595f2d334388c6ff64ac2e392ea10e306c8d0d4b97731fe57138acddc006fd2a07653287b9c0fac4c547c1d1ecd2f689b8eeff0f9f69a21436e28a1e7a9ad78dd3a6245fee60cc540c56ffe9404a1b0a143134b479e092eaaa26160381dd4080632ecf72967bb21eef13d712324b405df1acf1edc371b052315e232dc0d2d83223e6cfaf54a1cbf99895fd976bad1122e42a84eb23c331b2155f877c39683ed3310e2ba48d7ac333c5f86130e4b7237f2706c0af70034d6fa6a84b2ec153430d82ff212e2dd06464bac4f369d44fdc5d57adff762dbdcbb3a69fe46c6a0066383128e30a3ce6b08214b23e3a806f04652f4ad71215be4709366b805694ae02dd4e55b84d9ed7ea3514c325a07f832d89082c9b531487d0867e051f4b58615421b21036545e44ba5eac28f31f86f1b82eabb5b1be245542984c87aca7a99673e89d4b5a982f5ce177c994dcfb56fee701d61fc4dacecd4fa72a17651fe5239ec8adfb37f5930e5eccaa1a368720b8f8f8f23d0d5bb671c2aa71e2d25e2025f593141746562522fab28e9bc2076fca7d33fe844f1617f18d51d66df1c23bd658f44e5057837dfecd61864046653e21fe3bcbadc63d05dc001ec5ce00cba66937e605e95c1cfde3675c06639c3cb214628deac1e2dba265359f0eb3cb7adfc364a47fb8f15a77adbc0e3393f0fbb069ecac8ccf7d10c956f8b3aba4213331e42521f994961b1b14a4fd83cd01d85aef0077091cf484ad6c2b270cac3280a80bc63fcbf066cfd46a3e3f6ba1ffb9f89ea6b93c19401fefbeaf77e03efa31db2de9440786e413cdd311f9035344a666a0c47404fd8f60bfd1a99dea6963d7d4ff92e2a7b9d60ace580201bd3e332a5430448b07f02ce9f7e1b377bd454461867a72b3023a334d265d4421bcd1c49c16b1507ed172d2dbf45c6aeb8d1fb1e5673c5158e15e728867544f6a87738e7e0bcca34ee9da533d4e6744d65dee42380a75e4b0edf8127e3350a5870ac7e6ce013264996a759d8b91c6d946ea15ba4fa38494d696dcca91bc8d3c89ef49f6c23f729f51151424066e73348bf3e3081ae86c83322dd136137cd34e9f7945f9ea11276c78607b64238100fa1297aa028ce4160ced81ff7fa9cc0867b451516e587f9189bf60c741a0b563fd786a03261825ba04edfca17961aa15f5575939d5d227b2a79770d0aeb83865d000ca1c415f17ec71f376dbfcb733e730844cc6e38ff3d65fc13fc8f511aaa39aa6f4a6c833aa78db67dd0e4cad6064a7bf2ee1bebf63dd993b1c8526f84f841db1c5307b00737275c40965ad77c87f9476a8991a4d4bc600f91d2104ce140c8d18fe929b0bcc8bebb92a73ff4dd3141191fb18d88c78176a2f621d85222bc9fd270f49632fc7341e87d19a404334e861fa1ffc7328888530d5c962f946d7979315c245a78bee03e1c7e238eb24cea608af53a0f7eb3ada6b23190ce0502a4a392e78432835904a09a88e6236c1c802879ed8fc27cc5dce78ac01324e842ede104ba60e5aaae6667f77af77382cbf37dfaed587ef21f3ee2224accf6e98d6d0f65e5c586b8328e23f263399ecce6d7324d8d904ace16c853d0e6fff39c85892f4158fb1807eccff01a24b0d83844b1b1e2c6985d268a07050f190f7edd12e70e948d9a1ba0d3247d6bb8b4f04d5bf766144f34292a0423260f0e5952f8b15dac6aff5105e840a1955ba8db1e66a03945f366a01e6c70dc28c764826f29fd3d88324afaa938d29a7ca8c1409befcc10ba1d5d3c7afd2dae9d210505f17945c15fd751fbd7dfe6e564ddf01daa1b317114df553724b49fc9a72612a2c86ef90e70b0f1549bd940454daa91defe399581446160988eb6e697f96306c2405a7e18fc77192f41df55527c3510e1dc77035e8f4a13b5133225e48b1217274f2710aa1e97334d6538f7255dafae52963e145b8264fbbc401bcdc54c16e82a966a64ca661d8916d55e3062f1dd29465a2a7449e028d3447850257212176430a619aa9ebcfb29282696329be2dffca8a0c0104e828d906b64ccf654792326af3cc9e2985ffe1b88cad53d9ac4737d3f5faf7652cef481ccf957ba7f14972c83134e22f0276ba476e3060dccdbe1712dc049b7bd949e15e9fc1eb34237f845ead04ba70c8efb456c2f4814888f8bb6c768dd037064dc71f43e639cbf5520abfb15496ce4d711c2274c060a0212171986db4105d8383b4337d1495653be2b9bf788334946786d0885d053dc6ebead7bec0078b373501f7647aa74fc1804f3037d311555207edc945ec180867c0c3214dd0fe413f4450c91125e2a0e8e14fd6f5f40973354082ccb47b39fb29928a21df8fc47c065bc958461dd68a029381114f20a0f0ba6125e16ff4370920a08a6481d155ff9f8434f11ad800332c403d3a40cc096b3ad0794dd4ce710934863c88d4bc081ac6029f34230ac09ab7a2d4fc993d4824858301ab5d2d4e0237c7edd658617960dc51f2cedb220829571f065803b4e6a92d76792b14300ba8a61dc4c41361f0723531a674dd3ae18bbb9558f55e148d6ff017df699f29c4bcd189f577446f52bffceaa7cf7028b7c437571188b94302f947328e5d071679268394b1c2921aaf84645788ac97e0a26e840981cdf145143d6d0a85a37049b3ecff64cf1aaac21a5808e30c24086b09b1173d72d32a8f98be99debe51ecd6c2b5acf260195bd83b5a012ccd233d36781f6727a85c18701aa5152c952846dca4800c4c294fb8fb9559e1adc83a0be06b4ffd7839041bdde898cf108a904dafee54742a58a33a0f1c848aaa39c0e2dd147f6100c26e51baa16fc5ae2325fff4eb563bc31d0abac576d245deb2659e9148d1500887820f849198ba9caa2063e7a0376bb372f6a2f48c88d5a60263cb149627c86ae565e12bed1516592f89a78479995b75f56c2142a46ea243601ff3683aad45e5984680cfead0cfdc7cb70c64a50145c4603218525bb7b507518fd5de7467ee4a8e6b691a34f3f5f3e5b5c529e757276c8a503f423651ac59982944b0d7887717085cc6dd33c427e8667a6f7194b224716c4800b1086a2084aac3b4bfc532d4aa53429d5d49a973b701e376e4f8a38ad7ce2617eaf3978881a58f9d809a42f8b08d46e9b07c2cdb513473cb3ff94d0e906f426f83fa253cf4ac7af037c75a013a7750d861c4b4c1c3fd08e2576b8cb421aa1ff2850c355cf172850c103f09985181952c02c1a579a4e304437ecbfc05340bdbbfb3f572a5e884d071ed7aa219aca3a7301ef009f4b1f0d498dd9d9cb3da0d4377bca0319af8cf3edcbdbcd52fbac6e8d4398458777a4a3ae23525b75b63b543f5eaf727af41f543237c434e1de43f7856d43539ba22e73413bd0446f66ded6c8c06e9652e45c35fd3b86c255269fe71348e6fa3e5141f05e11f046955752b2019724ff4d91ed5f15ce2987e4b455a6b5804abffd070e748bca83797dbdb94dfd990cb19d265fb72d2c614833c9a1ea3dadb9bb466b351d5ad339bcaf132675e4917be03ec05bb611c08504e46754e2fd8c253bc68293dffedfc8642ad306b191ea13e9aa7e9cbae2ece513ff06e3918ceaafda98b621f76109da49c0d77dd7d82cef5a894305ebca50cbfe5d7ca8f17b5be82c8229d48e8a434004a1ec12a7688b9d2820ffc492689b9f6a0353fa6d1293d33e3380a8c2d1f17c66a20d45c2addd0bfb58bf8d435a0784bed53e6f3dec9d066c2f16545adaae7def1a5c5d938f1003ad07dd145edde71b8ed4cd1a85530cc94c59e87458f82048fd9333d0a28c7f2f84ae821011f3f9920505d75fd8bbe3af8f9c8e0e7f413739c11da644fa307a9103a30d444c7e501b92a5f5eb0d91213c0b2d4841d9b8b30a80e6176a2393818850fe4d93435d282df8e34fe782cb83398a3766950d7704aad94e3800edd36f01316c961348daf19b4b388626e425418b5e5d0b97fab1b8b41ed786c979db2b1ce975fb49ac030997d841433cb55b67cf29f18effdc6ae246017fa402ca43a877c9792511cb0221cf3784e51ff21c64ba8493d154e1355a817e19a2db86b4a8729d9f9fdf5dd78fcf06e0e2a0de0c0adf36c91faeeb1e81e5fdd46afef3283d3e6195988050f6ef4481a67a3c49dbd4524ba9095c0a492020f660a19b33aea6a1178fad6d6cb1de7d8f25e953a365e1b54a0c9998ad8b3db50d39c00d14e78a4a087eac56f554fb719c2af27f0ed0c5cc5ee91b01adf9b0a70d558fa3eed73b0aecc233cfe55f5f9fc5d9441c887294c7ee0a9ae086c85280dad93d909e6e73ec7e6b047799117842857086ed6c7e0d656a8f2fc1bbc6785809a18a8d8cd5c28059a6ae5dc4e0c719d28c2032ad7db7beab214826d656fb2146ff8c0e4622490431547a7fc5cc0f279f95238cc0f1722cb34ccc2aff2bbadaf9181c8637683683f1c820b1fc48307f273cfd033c57cd642bce1a27f166bbf5d6a5382cf181f3ff58cf2a5fa670ec6fe424869c5f743eff701da468e68c13f8c64936ab687564dea7646cfd03eb6569722305beee349d752c257e135dd2d1ae6d835eb9ba4ffe74c92f798056b372d373498cf12788131b940e57704f88e59eb33ba08046d9a99036eb8d61b1a97157e260e58cb69e6a2c24291a59bc351b7724ab021b91f88c41bfc73601b4969f55eb15c3a2cd5a71af86ade33c3f592115c2e4b1472f7a3200f9b3a1ecd71d2267598ca39b226fa47c79d452b8931cff8d691636384e53104c2a7d3c24a8ef0fb01fca6590dae2314afd2cd4363758dde42da99095ba256363e5e8acf93840f00c49a7c27aee0e9e093bd4bf4c72b0e20671669dff81c178c23320f8a0790d33d0a49dcd83cd9885b5b0916cfe953f810a905662500ff6137eb01048c5ea4625186d6a0cd7b8eee561d1d3cee044b857ef3954c1883c6d908498294281cd92a05c02d84d556a4458f2eb7ed8603b8295f8cee192ebb982689c052998717e6c8e0f78670a263bb1bf0cf7639811b0616e6da3f7d0ddaa4ffe137686997ff8e72275b803671bc21a95da3ff6e67ba3e399c9e4f118580f1fae80b4471916546abec57839da8c4e3705a403b34646083de52d1f413cfdd32ed1cf4544486fc0a2e3f13e52f6d5c7f29ac462ca2f3348c0dfc3e81159ee705f13b253e060aa48dc3e94ab3a9184b56a93318029f36446aa5aca2e63916e6af489a8244ef0d17f48b28a63b9bba06dd4e9089a14b1e0c60fef4c4cf9963e19f98b4d48fd23703f36629e1d32a52c3157a3031c3c00fd12558ca3d3d6982be025665aafa41d54fca7e6bba93d05510d6a47250108d1bffa638815fbf21b1bbf55cb44d4625a35d32774b382a9c7d3c0dd0554c50be6396b7be42fe484068686ba597d630dd26fc48b6cca0ea8faeff4613e2d16b31d596679d9cba4897cc1ad3d7dbd99a6ee568f75aa4f131169fac27e146cc7b5649f1d2ba7d860094e657430bc069ace3a7a6a1ccc5e4c4e2b238c69028299f08dc7b855dd2a27a9d0a52600de4923b172542537be3d2a716049ef14462eb095391d62ca9a3f00da00f7233a0a4730dd3ec84e46b7fc3718383bf4a0e524684f0f315bf3beaed7e9956a817419a118b94ae4f53c0db55037c454906af44c70b6830cf243713b64661252f9b15b47cb94f753903f8cb061c97a89ec6704f733494da0f627ad855cf83471fe05da70a4fc8b3438e5d7cf7a5e6cc9cbee9923d6bb79960a141b679c71b29c18b6b4dab1684c54f4e3bb910ccd032de8c3ef1924c6fb55199c5fca3f446c0ed35d1018672c399f61b904944149def3a0ba3fbdf325b5a89b8e37bde2fd86294ff019990b6c6ae71309da1e8f1a68e7fad5e08166067a44ed47b195f809119a46a381f6fe08fdf6c7b10410d72d56b61951e57c34d5e3a594606a0c50af86e58aa612c9fa5537bc4b2acc48220d9b954a0ab27c87c88d5d7d449b32d1b7979e7c7bb26c889c4008ff81107345691b8a328ae862359cb3b92469894982ec3b67c2ee324714f27d4d0581352929ab2760bf891d6a9a56c0243fba98d1b5fa3292a2b8a503f0302038ddd6b06367186a7ae00f267d3fb142e61347114693ab2deea340c32d835cdc8a612e5533c46cb3f181e3272158c54318d71ba0af7216ce0179b873dcd49986917958a69c8c252ae8c2051a9ad92e38c7840e6ea43539832f04cd9053ba20ffb9d731545747637b46d4035403082809da6c88157e71386503fb302bf01c6e6bd59d31233bab6d2a3fc443477725f763141d413d2122ae0270cc1f06fa552777c05d3c573ead0f616d097c396cb5d028c85782c35c130dc44bc16c70727b23ee773e3548a2470df04fe79e3564a3feb931883fbd95c70d6dcb9363e3a11258c0c020e38b7373ddbeee239467f282b080e6247ac84ac4594ba3994cd3681dc26c08090db1bc220348369641873776b8027c2279043567644ac7101458f1d1bc86bccb8644713e42ac2baaddeff030277d9866680a33936c8717c09cce4b03442073f41876bcb0198106c46fd920138641df39742c79997c16eaffbe975b49d765041f87942b39a1040ba5282793fbe95107c8db59495a0224a008268f52c1eb05278b13c3142e02771a1a7c5713990156806cd0e1f9a2a6c53a414829d4a1df901065dcfb2876d64b23a71ea35d2716fa0d6058e5be4126bcbdc67daafd39f24bc263e7754be738a84a1d8434e8bc06b23bc34c919ec1ad978b6ca22ab8a2bfcb2d1cf51839cdcfcd1920a18ca4d47b7d66c718db1f6f0680efe27055815a09319d02b202bee19800a8222faed2d9b17ec116831d70a98800b806a42a794a62b9a1f82f826307868dfcdc53da2b5163090ff1036c8ec2a19f6bfb34c2d8626b92a0d7ee0c04a4cfb1e250d898120d8ba0b318414acec3f509f0117534ee2440000267af4a23b321f1f8340953e046c488d67a7bc4869a5b19e295d442db2a6f036201ef13ee2f736bbe2d5724de2cd54cd8ae953bcc79c5f5f4485e5dd2283407d9b3e192879a6e202be944b97de3289b2489fc42b9cf8e3f731f23d0a4588704c7b9dd959b2c0f47bddd6874e206825a8e4152dcf882c7c1ffefa47b2db5a0164240847e8386f0fc7a89cf9309b105479566f8ff558fc0444fe2ea5e9c9a8af7ddd3c0188d1d965bd208ae28db3aa6b5f8b8ff7bae67a61ee93c7a99f75a2b56e68832f2f77f67bf7d4f536664c0ef58087c3760182e5d0fc8844f7c49a3d573aa4a85c736b2ebdb06027790a663bc38ad423f89c7d252c5682a5d8287ac2e00373e21044a27b8943b4dcb15bc1beb7d9b85c2c418f79eb9554393d325b1b0c02098ecabdf60bdf70eea06e3c3078861a292a16c868acddf3aa36190bc4c2094275ca7f3efbabb3b3d0e60852c98a8e3d0ecdba0194c62bea82250d881685cd1704f5ad93b5ade592514a2c20de56e7a4daccd41f38d88729fab2a0be5407ec905f1d25cdf3461f22a05a2776762188c130662f51a941be1c01b5e2db19e138c56c64c3ad4184d58ce968b95ee531c26eb66ffe2e97d7cff418d1518d08329f551bf218ec7763aeafa5355f7e76aab4d155deca025b06d61403c580aae80df9958ca6a5f086cdb11aba97c6f559493477b7ed4ee02b14b4ab588cd4714c4b6707fdbfd6811d921049e88cc4c0fef9d89e92b55e1186445b82200039614e1025421391161cb9faca6642f438ba52a5cd790ab26f5d23938f72a99c05dda387a8407145d7873ed3c263f1b258aa845d59cb3c0c7b64d4056c79590bf97a78fed154ba2cf34905d19e8e2752c5c4b2646f196442cf9f7fad4d71baaecd89c5c6c07ad8fcd75e859942ee4dc761e41ac47b92606e53afd5c07ef1b48a4c08bc54d84df2dd6e706fd03ab9ae4654fffa02de83ddc7a0e582afbc8266fd063c670d08b9a8e6e66111bee9d8ace7121a3ed9a77490ad0140bc95c240af9e4aa20c184653af19b492abe3ac8d8a8147d0f7e903a3b4940b120c4c51a631cf1486de36cae6c378a89c5dacd6baa84958a25e31ebce47e02c50c93ce273f6d0ac4cedc7c43810831d08064de8f4a9357156f25b64171a92c6add2723883bd891b0b79e1d837fb5f978536437035e848e86519b7a17b2c7f093444e0cc5f8d59c40ff560a86ce19ebad48a57447d470ed3390df4c6e9b9e6f0a6d587e9a8238bdc653c460b1d46ac0828a2bed6a764fa7b4b4c53efb734257a5d2c9e801a3f64cc355306b408fbba251c471944f4f16671e6bb10c575f87aba3373100d0c4dfbdf333a5439644dc8a361e3865ebe0557d832ef8a4c361f7cc5a313db96b2528b5140d696017f151910a9e201173bf707f6286f44687795d250e02f29bad8ae1603031ee2e6e35c7e855c14b7a5bbbe8c22cce7fd19a09cb7e5eac4bcc988be672365879cda724aa877cbf5aae19bdde297834dfc519c0528c5f512d53f4a5133f9ff0a65159ad4b1285cb0909b3b49142c20a1606d7b45ca75db8c000e2a1413a73bfdc9ad748845bfde413843041336d745d73128c51f8f570bca1a269b84a5f3539ab9a539090a9a82a411d606cfec631b5ff351be22c344ad8b1f7896ac8d3c9e82f448af281962f0c4ff4ea930282a2aad9b4f8f717a3be96b1df80d4e450dfabe5408955e729c6be76b603aa87f7bb1f15460a8e3a75e58cd8631d067cce383d9a2829653f4f23d9b63a17cf28c2c72edd182772dda8a772721226dbe673585b168cd06bd5045b202c0e63ac2620113bdbc679a764f1d3d0642e049ec56a0dd90ee2aee98cc79bc3bef3cfd84d508254eeb552eca654a9414f27622ae32a5b5e590d588a9a21de87ce2127e73ca9bf4c1a8c8f2ed17f3dc733da3e1d573838eac0929982865a0aea7baaa16de10b301621789af16055b26cb3f6cb0a66aeeeda99b3964a57bb6ec2281c4c25a718e63b19dd7c5eda95aaa8f29938e476e06d0d73286663cff80d7f21ea8affe815637f3192214130f567c4eaa17d1b6ffe4ffaf60ec0dcf933871a9b2e87e64115325e679dcc2f0df9976cd4cf21168c6ccfb04014180a56725c028f5b6167aa96929a846e6db39339648230a5883ad7032e8135ae08d87e67b3698573a98b54151130d9d8afe6767ea5b5146157b22d9b4c48a62c71c40b9e1b37ac3ad24699f0766ef2a9b1264e31be49ec781a0e4f474bc6820fb92835b8bf7a201d29f12a6b834118bfda5d883348daa22a931a6135b795504d47c9053fe095be99e3f8b765ad0356e3c262662f0b1692056f98282cc8be07920efd0a3208a91feb360e42c356900bd8243858dffde66b2567301a155a61a487d66dc86dd05d3dcdfb44ebf1876e2d6f4f20cd317ca4a7909bb9c16396a4ccf1872983985b2144e463da2a24a288dabd816f534c5df65dfd70816d6f9aa0fe0f2f288ef26a3222e99ef370748f7a1026e191681b06c78f5eb7a6468a5e5b1a15b9fefa1ac7ecd8aad1a1491e07b7451bb789417eac910ba215cc9bbe3aa085838cc29fefc5ee010d7343a80625f699c7b50dd6df9c2f9f75ad5d4efd1c8cefe038b80e9490ed9b1d462452c7e3a1691221f7960fea302e5f9110b127795eee6c7d0423c446bfe4da03693024e57635ec8e39ee856159d052ba5e904b4709d1b944a80556b3ed162f9cee141dc3e786aed9e76aa0f97e848903d35b650ecd170c1015bc84c06049ab48186018b36673c4f06ef611a9bd6cd25c797cb5b0c72bac275614e9522b95d716c6c82eb8f699449c5bc98913f924f46c9e2284dc408ce9e9332d04ddc30eadd062ce9ed6309bdb878010bfd93e8098f5661aa03be53381733e06bd66d373b643e161fe04429f8dd3ad10895b36ac31f1cf8a20abc5169368714cf4279d6df7d3131ddff088d4a9326ec2a1812926c01cd7eba00dd4cc0d5f1f055cf38a35f491f700e898ed2bf290eb4be996a308df2ed4cb63cfe768868a3cde797feb2688b21c973d722bd05687ee02f6c5bab38783696a284da4bf1b708ed0c6d780226cf5b2587a9c35c8a848f723f7a78b60d9243715ca598e41e250779840a224cb432c51fa0be390893335bf8977b295691acd9b60dbf2f0b09f5a212403f028c57a38775a662a78ad3c18e671addaa3023c3692ecee62ee7b4a764543ae32d05131286491447e2329d6d11dbbdbfb4d6341fdcea0399ee42605e2030c2a8083ae8e131f8e83a8e0bb1b58081e743306a21eeea5fa46fdf6dda2b80f7af614ef041ae3b9badd89e71ab348923af4652dece893ca2aa985f63654cd9ea04963267bdaedcf21427b6da6843a0dbab4965f1eb0885f219379982856b3a00b2412c211a17175fe58595c7e5619d5d1951bc5d5f8dbc7526e0e988b2d09ba19f74ed855efa04bde6682d91c886233928b101f0915dd1b27590040e3985ee9884208a452bb7ea2ad07f05507f260b15e1724fc75f31f732d17018f4c080c526739acd455dea25428f5e3284def257ad9652f09f71b0c8d15ea98683a4098e4e3f943095f2390200cec66d85b72a02d319780ea86663626c2d0c7a211fbb5c9101d5d36c0cf433091699f4bb12242f750c480ad9a200428921b05129bf4febc7d1e5307a30d8fd324cfa58d345b3d3c4f8ea245a0630ca47e0667fc7126be9dc54702b0169ffb8fb70fb0a7937a0b7374646f7c7ad4ad24e2bf0a0d093f1c95fe2fe653c5dd1657bd4ce5d52975b0979524d499ab980f5380be419f645fe432c836046b9b620b16dccf2f4b1053f7b3ae307cec84f2b3dd22493e44ab267eca5b3c72bb0488e70c956e2428cbce98c503b1103e67d447091efab7b5248a93fb1e287e5694c715070e96a06067da4434fe69e2596887973664aa24fe0f5dd38f8f4f8a0e7b9014372d3aa3bb0197e4cacbc4c73473bf95f76e3a4293c47413d340fd2aa169ee5619dc0ec4de2dd0047d2051f763f453a36a01859d6adc426d24616d2a4285dc185e7d5051ef1a6d00d13843782e0ab31f54989d9b38e30be57c72cd1d5fc183f1dba48e94c4ed9f2af18e9fcc676c6ddb0c8e383c0b62a1743c6b1debce8217503337ba8a319eb1d44013c4eaa15a1f1cd8333813be4b91fcd64dc3191d6938070342c4007232c10c0dfd3b1ece8d9ed486ac6c8e5d210f68a4b9836099830806d5ac58428fa5326244122ab0ec5afd4516d272a66969ce16dbc4b58baad1485d17a346502be0fa3e559006973da09299feab6eae744af25afe638e3930f3d2511f2355a0af4cde3136dfe0c5aa158bc01559c08415b639666b5bbade1b26ceabd7122c4d0e447e678440c6b40c2ac0870e23c47cf85afe8b49ba90922931f1f4ba6702a70875d1baa15ae7c3e4cfe9ee0fe20b0142ad009310751f8ac7cd6a8ee27926507016fb8fc452281294903e1d843dc8c096eac6290bc565f7c0eda86a0a2f0c690cf9a657e22ff390a862a5c241281bf0cb1bbd2749f6b369470b09b11a34163e40988fe30d3c8842b04bd1d5559f538881a360b8bc04ac2d3c67a4d896e9afc026602a21a2b41173166e2eadcaa4f6e9594f64cda9385c6a612f057dfd59cd2e0bc7b9cf5ff2106a94eed144682d93d150a661524f064da0db56378b17ad7bc08f519d417083e646c8a188f9049abbe441bae8d99e9bcafdb00659067ea1054634bfc6afe365bfc16757bfa13fcb17f75211f277eb725a8625a92115ae6c81d93dfa22be9baa50c8270401f4a5d6b22a5d412ec7f5b5e2ed80a6c649d410afe38791784847a1fd2328548e761427130e7a83120c1bdb284c8d857f560e5d410ef667e33b8d40e241cd9c4d2f3b4b82043758b6ef76521ff8b65b74730bf6228f1e214c7a8e98c0b5e416e6e408ec3aef8f4266dfb7225a32117e77876b13f7cbeb30dcc609b52c08124d54ef20f45bab1b80614089f308e812b4b6c2ea90e017dc79a46f4b0f460f21d758ee069c6a64cf3f0a1066912cff642746fcab2037ba3fed0def56b5946d3bb7e7b4ef33fb687bf4ef3d15d0cbb5e9a6f7ae0dec52ce40139cbde5e938be786a7eed73be2e4ebdfe6edcf80e100a23a3de47d563654d798f06c9ceac15fc0c74b7a8a151d585b82010ee57b94b1f4c5a54309a52739540094c57ef6fb55f89a8783c6b226a14558f8f1335a6dd2f6afc448b7bedd955aa8b43bea233d8243f097ccbcaae439a694c983c297856b5aa0bac74dad2b6812e43a8b5fae456342a9fc70ecc671ed4b096f120f14c5e59545b9e0fc818365ef7bddf09309dc34147b6b0b7fa2ed2bdbd39884180a8a10b132a607d6429c7d708ad8c5989b811ca47a6328a82895bb1816bde96298ec204c8dd02213cdce40cec815b3c7a389ad2b333f87816562df04fa7cd9eb5b3008c9da75386d3ff823833cb7991191d2094db8a85b3c3bc59a386a33d0a0442427614bb6d95820886904e339fdce601fb948dda18d91d4b4a0ecfc8ee7cc8a1261ed2f1e8fbba5e3231e526ba9a857a4944788c2ed92958e868abc670dea3fa170690ccf507a35bbe596adf91b93ce311823370bc12cb2ab90bff54ab4409a103c728ebbd675bc3d42c87a108e85520998120ddc39e51908ecaf0797cffd41582a3c1ac4f485d43cc3b17287da7354c048905d9937ae85c5d0e92035b58c3d42414ef4fd738e3b5aa5b4eb7996d0aad08d00537801974764000198ca7f97d76130f4086ce5338514273c64d06618282ea9e7a1e2436ea14b2833c89b5561c31368faff6a5a37432c6b03224644c25b183bc938509eccd7dcd81426bf1955c924c06a889c60bb0539f3b5ad487b988fd3f5abd877bb5f4bb51e4727554118ebc51c5d026aa4f681b64c9febeff8830f3484fac8d43e0d234021b761d3410f91fc2fc27c50cb801d4a5cdd71014c47478079327ac6868a14c10d4b919953b3640f5b439a666ebb4b2947346927471a5c98a4f1aed90afebd86782471e7030a7b54e881962b3506309e70e0cfa70631d29905d12e2eeb67c7808ad8da3972e26e67ff2d013aa533f90789070a5080b22747fe5f2050c7c7996a95f1428e671250b1848b2e09d8fdc1751195b439ec0ceebe48c8bea2688733c8457656ac01142bb8066a40f20e264366e2905f67502d7d0ad6e5b5068d5bf6983b8baaaf32da3707b1fc7d8ee1c34cd75f76658fdfc6496490f3ec6e840ae716e4137670a5a112dbf785857d9a3cc9e6295f782336df456e279d94aef76bd60706cb76a7655a58190dbbbd76acfa5dd0e733551f5ae9a0657e9eb8d46ad046fb245821bdb7654b271bb7d3ed73abc8c217416ac9f53a1dd5bdef3b663fb6ebb9e84cfc5d4089c20e50c3a4d63244f1fe8990ff83c396b5df4ca489b01fa290da361f26e679d2444db2c2da0714b35b9347864099d29ecaf084373e23b3359234a2c0c6d8f47955062e3e23f20f7e84144a380432fcdec07ed2a6abef6c0f78c2ae0a5b75de424ed82c6908411c155266cf60e4dd1b05c383eb4ee10533f66937c5452ce262c654fb1cab841ea1e03be224d67a094d58cbc180d7d4e6352d45978cbd641d8f452fbacb1f0db7d1459a49e76731125d68af259575428670da1ded30bcb38fa31ef50782b58f1b86f9a2d13f6506009d34c4493062776d1a136d74b0c2241660988c7e69a400b9636ac525b02dd509613cdc7afc8dbb4f3ac8ad4c576ad5a2d4275010bfad411b1e0156149631f3825117eae2fe0aa46bf61535cb268930021b5bdebe3aa7c4059be3db2f4d76c892d360970de96746a40c0f1327c6a82591c46b26254360ef2693f92d0284e56cc7837dce1a35c81d925221f0939cc0d05b9bf3dab387e208610005dbd1bb3621f9a77a7609731e33eb1a66ad233f297bcadad983870cf8cc1855288e8c60d53d629c587e38c00fd5fcc084c77b7daac9ab2cc3d4b83c6b6eaa30d7007f02382c31a2ffc4309327cb5a0ba6ca9b5949f226d0611f8f7a00a1ccf495967dbe7e2f64f788b3ffa4cf1364cf0f8511ddd9af0478ec3891de0ef6ded14d1abd52f8553f5cfdf1098890be526dcc11495371dbf966f92eda42492f2e37859413afc2af6ef970e8d6e684f92e65ad31a66ca910c28d0da66b704898b9aeb3b68c273f66e686b4ada0e417e5c513b0e9c993d3a5110d448f27a3dc81a6ba8681ba44c1e21142debc71bfe93c17b30bc0743a9f534e06e388b8ac6c32b3ea006323d149be983f1d6c28b184f16411de8f2fff1cf2621a684cfe81cbbf29723b36b55289b2313c2ac9ec4721941f3960199c7e5db9c2ff085d630cb56a9b94cc110691bc295c9539e87794171c2a23f8495ac12739bcb86417b4032fdc1e2b0be127c20aa52889f9f7d946587d77ce32b7b97a3a4131c4699234a2e7479a1e29b2635de1b7c0a8fc453ec416b03a0c31eb1ccbf8efc99c6f124004bda8d83cacddf225d7008fb68026770a45b056f216e904db394e4b0ec9df7b4d6e068554eacc4cce251bada4ce3c45ae9cfd392b102af205f69d6c4840cc0a2171186511f2b794a08027c07c02280ef470926037d1d1496fc92df24b901e7141d43bd829ac178fba7c70c8374c9b921270d622118da303acde391d0343ffa6ac62080d5faa9a19d3586eb21d1387e214a98fe65f4aa9ff60fbd8df3e3070dacff22ffdb589222c3e25d51d49141d17f782abe78d8abc2674f77ff56b9d0b3b0f8d85d4d1bec9289c4f548ee6d593d4a56efd0c5d21f582d76499cf6c701a3ea288a62c43a4b76f93b221647f735476d82b287334fb0f34ce72bab9c29d7683970c4400e680fe40be16e5bc7196d748da91e387a72fd978990a20deb02256d89a6fbf7c2dca4ca34ade754589e18cd14b502fdcaca6084f4d8156479c38a19e88e482f607a785337c2fbc351ee04c1986ecd723a794202d1c6239f3afcd88fe3c4e82a7711be79cacc988c5413275b4d8c00e0c94f49968f33235cf6ae511b348ed6932cc7f33c17a67276ea94b05a218d98e5452580c18a05c7a9d22de41c020ae761fef0606135a0f4ca46a0689ae11b680874212c829978a439c4073728ad47c40d66dcbe28da76100856ba53acc8a10382a4eb35ec0bdbd3c15d390ddcd9e07a4a23e0201d7a885090d0b23fecae6d5774b947e416f2422f9a756dfc21accc6fc6255b526b8ac88aa5e660d654b20c89e5286753b285440c199613e9f21c293090f48daaab16ca1e6f9c398673617ff737526bd0db5d0727b857f4ce37a807a942de62e8f93d14c07c25657fa9ac15c5ffe62b6de25fa479334eaaed51fff1964ed5372f4a6616b12a073c8659a8045e679a90a5f9a01da540a21fea4335f553a4b5233f775545228b68228a2082f57a82d0f163cf31dc0e9e89e93017433016a36f612fa847c6bb67f4c16e9f66e2aa95c880e59893e953677d5f301ffbc38c2de79d3da3edc69df376e66f952715c90a026d4dc0298ef7efe7f64396c318eef15055e81c59e05a5bd76103e21c79c19f9ac73d0fbd058f68d95165aa79651b5d74a5083d41a195c1449aebfa0d442e64c705e7c422086e960c776f4b580301548c031acdaa905a20543a4e638a603d2114f057b7464642e6873c70b219e3664a66474e32e38d48f0eda265a826d3fc1bec9a97f813c74a9c05004f073c17d8117d64e670f7d743bd28ea208f21442ed4dbffe2bffd4992bdf7de5bee2da594520614097808bf0834a9fc55ed5b939a56f30ff8ef1aa77df2a0ccabeff5f2b2d63cc3a1d77d3e9eac975aec9a54d56ead32a5fde76e9f8fa7b5bc61a1d55f98e92f053927b85320bf65ae271a5241e336113946efec41e10fbe0a5a869be3e4d1e4a12447d01e0688ea2df7d4f8a85d9fbdfb06cf71d93b777350de600e9a5a93c734f2f85a5835185a2dff61edda07049f4385de696c4ec31b1e8af1295cdd47cd7df224e577d2428e90655bd5b752293f3f21dbb52cb508aaab7bac05f8ef5b0ea171ce7104de415583cfeefd26a438b0298cf3350410f91f306f997d3e5ac088b4f6efdee591d4428e10b577fbf9f0bcd09bd5378cfaa6a037da839ee34ebf086897b9db4175d209ee14e8ed5ab87dcb526a21756478a2a0c4ae18e9ea29bd33863075500c419e86415ba56b0ea22168fa9b523ee9b2d7db5c73194cf3ae333c15659d11b0d73ea78ffccc55d6bcb573cfaacc3ca96dd9863f950bbf30e3a19c101b24cb6ad659cdfd68aff65bf8935dcbf3be0aa9bfa75f107bed19904e67b96ab94cf5c9f2e3bbb8048d41c03108f22b2134d75c06d3d74b248a7492a8a8ebe9215540d2d6859ef8ee6e2bd0b216b47db7719d0a310da4d332d76b06ae3ef3356f1598d0f632ac4150d03cba3e0811155d6f2bad47ba1823208b34cd5b16c91b9e1a011563a74912484b2ea57c22c20bcc802265490f4da68840133153ac2086256410041aae202979c2669e1523484c2c80c316508429620a992a5668e0449416c8b8c10f3d356685c9bd56c6bc5c473c41e2080932a0e88864b71a25527f37225cdeb28ae22072878c866cf7d468c8f67a89c823443d74c84802f4f54643e8abd1104a6448769ba90a574e1774f6d1357bfc6a57fc3c0c78ebec3cd131866444cfef5001551d8df20e7215b12374b0217771440db12366881d31430ca92c8630832201ab0e001d6346846184d2149bb5d65e4ae78c225020aabbfc335f1fc33b53746ef36e974e3a63bd1676bbc62842f74db5edbea7b652db68ef0323d2f440f495ce9093590bbae8f2720ff0def1dd7bd6f1d8c254e8e900df471bf5cf77ef45f878bf376fcf0bbfdf3088f7a39df32e3fed5ef8533fcd93f45eed346c3b7b83277aab6cd044cfab7a7c64d65e6a7dec3b2dc84f76ed27bb16fed8d38c66f434474f66636ca1051760c080d9c960c0809157e7c6537938b5032dd33419b3c10a48a4ce8ea69971e4da4ae78e97625101436f17523d4367e290cfb61b4f4577a0a9bc149eaf18152f90bc5c29eca9bee3a5585472a0b70b890641cc25c343620a17dc946d4a129e62043825088f4a12dc16b121c2c4a49491bd5080d2d1113a2051c1910ebc28b4645101182563bc4c712135c5069a7b8418aa0e072b22bce88880928940e25abab1a2268b8d9649a1a9010f3578416b5ace227741c508151f4c6128650184394612b8831dbdaf942542d8204549bb46d86cc28ece5ca4dca071e8189332450a105baad1f603c4d79cd2e982b5d367d65a1a7a9307a5d49ed294d4544a29efad150244776b77e96db5adf9ced7cc4aee6db6b1b5f9093c3f79d04cedb77cac5af2c08998104ce6fc0827c8596be471c2f432faccbbb27a5e106927a534b8d0f548190b42899e3376d444cfdf79abe8edd56d7fecaf3dc5f98af3256b44ca411448522c515cabcd95daf905a94545f50411906774cd2ca9633efbf21616abceec8896c9434669d253524f8652cf6f5e82219b482227516badb54e4abd5b84cd52f0a6b3147cb314ac652938d3590ab6590aae5a4ac1544b29786a29c43ee9f82c054b2da5e0a825beb56a31d25a6bad0f6badb5d66a6badb5ca5a6bad354ba5503b94d69aab74d94aadb5c63bf74ead57475bc1fab5d3d6daad9a78c0c96dde2a5a16638c31c61863f4628c31c6b8615d2fc521396ebb5a775fd0e5a3a31b1faf65b6d2a3231855220b104ba65b04961e64963b054ba68263ec07a5d80f5cf2141c633f20c58c96623f50891925a932c814899595040700a1f4c352942f64e0ca92494002a7748c45a1426f55942b30c812050a0c5c592a8d8eb128318862446f9d26ea9c59098f1504961248d438cc5298314b61cc90a98254050b52952d5aa8d05aadcd32cd6699a6ddbb69f76e1bc775d7db38aeeb3cefeb3ceffb40d04482075601b1e87993a9ca163db5e839974c2593c992a964d23067984994be70a1f4258c175e8e6494218e64942a54e4135964461a914566a412990405c98572d912bfe8d9c93929add5ca4969add6665ad5343aa5566d9669dabd9b76b78de3bacee33acffb3e1034e18a319d127fa0c984f1e94483aa28149d1245834aa56a6a6c6c6e5455a5a253aa4e3444b1501e0d531f909aaec6a3e1cea1e76d3e2052bfe6abdedcd0296f6ebde00aa6a717f3356f9b4c1cf33323c91c04deb6898d529bd8267a7e522d318469e7bc9628c20c5184688f0cb065cc186d1100850b0574977653ced9802e5f39d2f15a662bcd57b03ca5f9ca9e44536a5dba2a692e22c618e32d426ef24e8d66d5daaa692e22c770ad2c1ae61896dec6815753aad56c84bd57d6540a95a2b94a0602534aa92a469a81c0f294529a8bc0f2dbd31bb80ab269fa216d2aa231c6988b905acaf98a74857c041425285fb240b1628aa6bf50a4802245cda0cce0430f50a05881529ab709327bf23128b116e8539542c1329552e5e8188372a4af8e31284ff44ec1e08313274f9e38b1818e425e3b270f7ad77cf550a4adfdadb5395c4f70d4dba565910f49268e7bb5b0fab0e48bf940835826f680a3963d6a4fd40f784286e2889a52d5f6c4882754f456d52739a09668fb6aad0d4e70d06c38fd326be04189ce6c8852c3668305827ba211916dc834985226d16027d3c0b56327013aec5024e38035334df01db3f9400707f090e04486cd490d140beac485981318c6e0ced8a08a5818d1030b5b563812660b10806941102e50f283182ed8620bb3d500e5658a53c1d924aadba062a978d0e2f110854d6283aad5c489298060861861c86c31c316299ce0c18a92103cd420c603d2bd43641b624d98500131377a29d5b4faa8a2b7babb5184ccd25a1790e4f670d486bbf2c8be354d485b4deaf94ea373939ca7d9cfb96dba8bf504576be7b16dfabecacf8dd35d9452cb4eb81c67f6e98b8396dac1cc0e2bd8a18915bd77e41c9adc406f8c55af6843c758931968aa63acc90c7abfe60b0280028c1c7848fa81520e574a981ca0282941c61216588440b5935fc82fe4186e725aeee688f5cdfb2f1defb78e8e32cb74b257a9b35bcf6055aad65b21f3de81cc7b79efd0f75d67897456c568f2cbec266d11dd2b87a6cdbbcd3ba9766991ee92531e136dd21ad9126be24b0c0735eca84b354c155397ea52ae56bae8fa013dee6647366035d045579423d423baa502bc011c28b1f6d11502f9e07e8138c095a0e52d630c8172b92211244713d9a069040323aa66b4b5f68be64eed0ff79ad3849b3bcd9630dafe6ad343bd86441ac7fbc9c712d114d196577b7743ed9b76348f9fcfbd25b0e6fc26107b58678545566741f66c1f90abaaaa77d2eb70e8e7c35d771a109ac718c2e763cf436f5e09e9a2c74363ce579ff7987d759e793f20f75515fed43c6a2f3c41759beefb6ef0f5aad0c7fee6cde1d7fc9d8706e18eba4d08246aeeab9fad7d3bf345f403e6fc6ff52362a9d53b0dba5d0d4fe8bc7a1f6f85494ddfdddb6d9ef511dad390dbc21fed5aae9738a041cbd3accd170fdd43ab1fb16a9e693f20148caca082221de32bc698c3d6d79a7fe269061ad29beaf8049d26fcf87abd8e9543e7f48d523ab9aa4fe1abeb4ca196e9cf6a5cb97fdbb7cfc7b77d61d51c673335855573a1a986a670ea4f1e01c33a5fb56504cf9026d38477e2d83eef539bacea65eb63dbc2aab97b73e6834e5e46194bf2a2e9184be2124b4242a7928e740a897469ba4e1eb2ca97a62a1dab651441f3b48cb5bb35dc4e40f54641075113545abbddf4b554d7b900eff171ea3a79b496e01dbdc40b74e05e0da56eade0d23c1946dd2a82b70732908951d2542c4dd3346fbeb4548b05bc555a53b13aa07940042f41100a5a7469465d9c56708cc5b8e8186342491740c718133f689cb2b5bece160c30b53227c1254c1e31ea21179023486ddf010f8860f2a882a78e3126a26c1c97e2eceea36b769f0faee39951de1446ddd1eee3826c9cda74f02ed377502660be6a9524ccd7d534ef34c1bbeef49049e49216131cbf77ae4d9fa9334993e90b5b4b70dce4110eefc4a1eaaaae7568be4a4059149fd2c7b0ead60a30a579c81978c72834c58163865c7477a81c62f2b8a797479a879655bbbd84211cc799de99f26a25017cd42b703acd27107b8c1cc14765d38f9c4e9323c561aaa029f43e224d83aaf6b2d442ead8de6de7a1dc76c3584f14099c9f942ebabadde569599307787f8ffa6d15c13b87b6df4e34db841dfb04d0783fc518022af40e86dee5e7e3bbe1ee4e7f3d79358d48138c2c72b14dd889400c3873e60cdd3d6ea2259a6e79043b7a93a069fef1fea3fdee9d5ab797f70e0db794a7e394e9dbd3a138e63f1cc6b0b50477e7ae33797ccf71690f539eb19b2f1df3f6bc8dada6bf5b78b3375ff15a66c36fd62cea6cb540832815ad166a44aa532cb9395c2f9a9aaf5a245fad2d9a54dc9b2393ae160b4a70bd7e7c973bfa0b5372eb4c39e52b47b7dd6c77f4a27381b943d38489185a2fc0acdf80e5b76a89f5a22e29c2f7f3ae4c6bb98057b268258d4cd6e70caaaf1cf335b51ef899ed687d7c1654756d15e16a43d5f2bb04f165144175e9dd86dba56de86554483c532b4b3e86608fc3d4296f7cef0dcaa68606e7a9abf03f9cb05efb7ca8ae908853f58d4d4d0af5e31482c79f8fcff4994ce0b32fac5dc8b9f4bcad2a69c1a835dbf7db525d8e23b0e9dcc1dbcf07f85a3f211157fda582ec9c9f264963b0b6d5025be585103973e68c166d8f038f6047dbfc53f32c72e99ffa4dca578e9daf9392042d25900a51497bdd3f2e6f3b02574feb054c756829999ac6a3de5e3b2c27480734a5f9a77ec728b47c099a37c31ffa4a7376c07c591282804c28d1da5742e4b5d4b5779bb7559619ad258cde5ec173a7b905cfc9a31e63085c2a047f0f76213e17a6eee303f4e9ae37b324aa074b28227b3691e6826caf3fe0b7a74254b8c14700fcd6993cad6aa7779d4ec3fd9dc618828ff69b7d3edb3f9ffa0e7c37630cc1fb7c68ea37dc747b0a8c7afba69946d2a35ef3f968dfdef7767a979324311260df67af094d47859b266f221d244fe10f78a971f8f37d33e51a30fc7cb4bc63cbf2312668d0f4d58b22c0a4d63afc3d80088993273f207515a4564df5bd164eed47c45254a4ef4f40f24c77da9de3b60765fa04eef1f3e980be368018a0e3f7809863cbbb3efba92781a73ea339040ed452671582fc8f3951f3cb8194f6065dc12fe9aa2d2a76d7ea29a594529ab7093b64ae62be3a79644b3e284e787a1682efc2d40eed1171542b168d1a9fdf8f2d6fac92799fe6fdd259de3ab47dd76d5dd7755bf833634ed76dbfec72f2cf9653c5c811bacbcc464eb65197b4ac91b70e251a79bfa860e5fd2eabbc554cec9d0c2767d98e6e9bb02393a7fb3968ea1cf9e4d2a861e3b70942aff1d08c75507b2af4bacf47b3f9f3d66123ef578dbc4f236fd557396707e5fc8a9583e829e43e205b6e92dad0d7d09b22c58f74755fc59cc06b6fd8accec9744e18f5966559d64e3444e56b98ac9ad11b7cd0d454059d859b6ada69af61e408f45a1da3372853bff9ae4b7a83dac1bceb9206bf5d0747887392f2dd25edf24ff6d4e5f7cc71074a4a5478e9c285891dad2040cb47fb4d002dbf75b2ab2e9f3a0d65b8332fcbb2e7a4c01a46ea48bd3b18d2f3501ceda9306a9bb0267cf285583ec9f11e7febd01e87bafc805c6d8fc279eb7859d5d5d6eb74b8404930ff70df2ee5863a2aaf6e09ac0e1dafd7af52616c37137668f0db841d5b476b20d6f2e90302fe077faf9f8fa7c1cb27b487d499020797d0e2684af3366d29468e00e60d23aa62a48eec5a15433f1f5a5daa56df4cdf143427867eebec1d8ca4d2722e52661376e88ddbf1d33d56cd7d0b396eab622c4bde4c9621f4758c25114513ada3630c4b183a092c579828a1447bfa5ebb1251e803e8185382862c61f44bc758162cb12c6674a7e5bdc8c2d33bcf93f51cf8f9745afb3e20f8f555e3a2e6ae492fbccf87ac9f0f2e47fcaec39a934443551e69af415305ad859b6a0e3ca769f297fb4d5530fff85cf903fefb779abca7062fbdd032569650f2458d1a35be61ac03c158a7f11aaaefd56b4c26d337ce770d1b366ca8f24ec14a991c9ea04183c6376c7520d8eaacd3a8f9ce398de779df36df346ad4a85193b736a50b18aa60b158dfb09c03c172be3a2befd369be5537ddb871e3fbe69b4583c68570340d9abcad0eae40f165b5ba508e5e7dc3540782a99ef355de35f75c2ed777ea7bc562b14c7957289e68c1879c9c0be5e89c6f58cd816035573d276f9adf68b55adfa8ef9cd56a35c168e2050c954af50da339108ce63557e53d7fe3db74170e0ece77fe56e5e45c0847e7dcc87bde2044125b6a6a6abe61a603c14ca7794ddef8ae6fef2d1b1b9beff0bb46a5ba108e56b9f28e67b0508412343434df30ef4030efa6d3e47d7aebfbc6716e6e6ebeff4d535373211c5dd3ca5b0533cabcc082c964fa86dd3810ecc6bd9b5cb749a552df36be4d343417c2d1342a34f9020a2b9e77a11ced7dc35c0782b97ee35edee06dbe5bbfc91b76024ea30e13fa34ea42268dfaaef1ed1d7602aa4d870981da74211c6d1a52028616636edcb8f10d6b1d08d6baeb376ebe719e4aa552a99c809bbc53c06289054e5c2ed7370ce740309cb7eeca1bdb1cb5135ff2743aa1c042195b9cd16a5d2847b7be61360782d91ce7adbc6f9e77c497d4642873833138383836c7c9fb0b5128142aeb3c09220849d8d8d8d8e40d3ec7c44109178e98365e1863c9840544a800d770c5972482548314339c683cbee4f77d28f0f20323a4f86ece62e1cf791004c1146038e348939b03c16ec0d457aad3f18160a7e3cf39a775028b0e3f481d0896facd5179cfe37ca39e9353f125bf9f0e04fb7e3ac618e78d93378d5961c48a9b9b0be5e89b6f18ea4030d453bfc95b75737373933106ff1d0806fefbe9743ae56d93b70a389862ca0ea9d4857274ea1b860f04c3473df55d733a9d4ed9cbe6c103c1e6c17fdff7e59dca3b053f140182132814ea1b96e1a3f2be3f7dd37cdff7e56be73c088217aaa1c1bc4f796b2d5cd1020c1ae30be568fc0db3078265b7c7799b40107c904a83b9c69704e2be1d08c6cd79a11a7ae6fde55d993c013383de5e9e733e48a567deb07aa0ec30fbfa0d13d2747698508dce2e94a3b3d36f9810a7b9c384509abb500dcd1d06b4fd1e883b6cfb0dcaf4bc8c5b4ca9582db900299034ad9db496d6686b8db5d61a238d714e6f4eeacdd7953ae4a3a474d2596bb8b275c6d576b56c4a6df5a4f419d7755ef428ad91d6badaea57b77e95d568edb442e88fac67ce3eb2bbc114a5a4a75fc418638c31c618e713ddf4aa0c57d4ca6aa5a45412cdc9458e2047d8f24155efec3be86aed4167b4947a7b476938b34bef6316393b43a979a6b5f7e6a497b796da49e9add532cdda5566e9b432bb96cbd0a0edaf8dc07cd564404691eeb87b59a66999a6695a5681d8d74f4f669aa67140547741b28c5fa60e7aab67b9ecdbdc7feab65dc1dbe77fbaf0ced7dca95a6bd5a9250da4e913d0d468a7bfa95aa8023b93490b21aaf2c219bd89aa141569183de2f2ae45455acb276829d2f5411c97228d539a4c91de11a948d76c2375a4a40efa38c6ad35a916135c4abb16e2d4278443795ad8d2826f347df6fd885f6a6a53d227f06c3a2e551345384116695ca4b9a7ea4a72d95d75f907b7dab8af2c9765b2568dabd7826865949051d2f2f321aab2a448c38890382afa41a914e97a5444a6487319943ae879a627752c81e5121a14bd92d2349ebcbadda0bd579c69f8628c37cc618c3bfc610f8343c0bd01bdefc431d55b2bc755ae76dcf64cfb7ccc2b987b4c4d996559666f8c8c23edbdbe537971f2a859adf60b92b3bbc72ebc49e09fce7bad9ac6d57095ddaa854094ebeecadeafe495d5bba7bb2fba7bf7aecb9bcb5b6adae6648c91a1a4bbbc6bf690868e4aa22b6792319634fdfc5c59c943e3dcee4a5b6592ce3969aed3052d2b2d2b0f5b36c0f3d39e5a8a804a0510231d9244921265e145698b8e3413062c1f634a43e8f80876313b79f355535d7cd89a82c5184defd17b9d98f2eb84a6bf5c34bd978a5161445b537d7479dba35e65b5de7a0a668ca6af6142df44a77ee3658c172bdacaeef18b803dd59af65ba5131cabdddeca43b5d3a6d1f7a7d3a6c03ee9ebe3847da4e449dfd3dc9c67aa9efacd4de0f476ef5ae883fa96b7775476824314b59324efc1c92a703d46dbe92764d35ede2504d93417456baf5e68d0deb329cc68efd88b12ad69b7d7c070a139bc2919d1f4a9d34f20f2071756d43df0035128d47926cffc3e213547ddcbec33ed8783001112f303826f534fe5bdddd29356853ff624d060f8631ff5e94402fd537f9ac0a7cce0871c6c61841237f4c488436bdd67f2f1d59c67d21ffafa5396fd68a79f7adb9be6bcfca3665a88fa16e2fc632fa46b18f529fca147e5bdd9cf87f7ef5d4d585f439b7fe18fcd76cabe1ff5f8f6fb517f4de7c21bae84987ed3ddaffa50bd86d97f4cffee89620c617bf7ba7feaa3a6c9f24a957f1069f0ab2035a69b6ebd9b9dddc339bf096b663dce6d98e51feff6a89f6c57bd9bd07bfc24107b728834789e5904e72cc44800d9c34371c2abfaf1eebdcb3af3254f79275c09f16eba7753f6c93fde979ff30022245478001191ae797f102042e20352873411153622ed7ddbe7c7750fcaf409400cd0de83320d64f2eef6d85d2e9b40a583547acb19f6aa5ca145a776884d91240764748c494146f7d031260592ee4cf13b748ec5123d9b680d813b8034e47ade8428029522c62d5d9c3060d5c5818e5df1c5d35395a33504969ef4a1bbe2287605932b54f0458cd81727748c7dd161878e312bc048e918b3c28a05e818b382065614412d690146e169b901182506b12a58f0cac0c9226789958e312aa2e8548c0a263aa7854454ddd8d4a4503419922e3e7af18b291ead245a576ecc4b15fb27a874d9a2bbb94549cfedd5b8a5f6883d4a524f7a42cb0745919e67b9689e4a7436b0cc28b40b936ac67a917dd1b85ca4ed09c7a46b220c9722efc6c8c82f66a10432810501970ac074b5e0d88326b4c79d30e0ad4ae125624e249937d28091e341cd36d65a1d7096635d9aaf98591ba68aa94b3cb39e118fe62bc658c3b8841713052d43e9c57cc553adce2a7da4165247fc9432f283009196af07c0f23149090d5a124d298bb8d1ca21b6cf75ce9a8f69036e666f969aaf7b3c5f37bbb7f7fedeecf75e9b6599b5d506d66ec4c866bf921a49acb5d6ce97fde7cbe504b3eeb27fd9e7b0199d34b04e92ee87d4ac95b66936a5ba9a96525d1a9e20b5bdb5d949779e79ededf20a1b31e2cee92f3bf7d977e1ca5e2dffbcce49a6cbb9a246ab65a754d334d70de89412fb40ea394f539307959987edb65a661cd58dcb660035f7629c1a925103e86870acdd091b319af4aa2ece05cc2867c6584a0474261c6b175d35abde7c65a72e1ef0f63c9c65b5d6ec443bcfa49582d87eaed0514f533c59acf97239c19ba529ebae578e0feb9cd1b98a600fff90bae370ac9eb65a74d14bcf9e662e225293479785323c41529a9dd06cc3468ceeefbb8c0b8ffa8b3fbaa297da6a9ee9b2b307ddc59d868d1819318a3cb228638cd962234636d7f9f2e6015c3be07959a58bae7bf1bede9ca65c0e2ec77cd1bb94e09d83d3f4397476ec24a022ed2e7e40a6ee62081402f345ef7201efb8851e02250cc9c0cc4e42197e3553a52fba1f524f4c6b846c208793bed61d04e810e08523dc383a4a69a5f4a15a667b3c4febe9e715f3f4593d0de717242299ae86c585273a26ad208ade261dbf43c7a416c8e8f805c93490c491a78bb8de88919c9b2849c90b6298a48489968f609212233a26b930466f06e8f901e898e40216ad9aaf79d67cc52417a85cda43472649aa42ca81925ed90c2459f2d34992f7c84f28bae8c2b44adcc9293d571557153ae718ae226ae74d818a195c51b4440dc280e235031da220d5800c26501c6544789407d5552cd50e9daa051ab480439531a4744c6a818b2832091748c6245102430b4e5e98020867ec193c0801832e8eba1ce9a98f63747d4d42e60617294fdbe2a5852df28abb5f39708ad5c33e0432cc40832c5a5c30824c4432c385a41fc0d4b043195be85aab4b05aa18a37f92a6bf71f298b3852b5a56295ae82cb47c94bf483ca1c2c3511096b8a0b4591903460762b840074c8cb974cc981d20901102243d68178b31c2d0bed0201827505538a1b330c4d8eeee92f4832c589ee842071830d3040e4f0801850e5520c1e1de2bc668795eca4372a4b18e49488840a2040e2db012915ee86a18b20537568d12c9304516391cb1c4142c31242159c1c6fd42944313611061832c541071660c50c724167ca0371d93582883034f0c2e342bb62e3a70a131e33abdbd3058d872a40a3158f8726f15638471a44d3a261db9a23b1d938e4cc9a1a3db8e965ce227b9d01ef5068a837e4707bc96f7eb537519ccf19551a57a03ed3197ecb96447e7f552617c897a26a53ff2b24847bde567d1ec316424b3178d83d24b2d5184225d248764514f90a6e7655190a6b3fce36366a07846cf9f40d3336f22241fc0b127f6d82c8bca68f97a4d4f21b18c9e1772e428bea2a6428e4889499a5e6ac921048e6574d43b3aa1690f8c94d972460620c4a0a5871621c5075cbcf0e043134524604a1531408c8162094a0fddc189194e762033e68b1f7441c2c48932c090c1912e3d443358a10a18ae5051c68b0d3df43ab4870d2b64d400892a5828c3073dd48a25293ac030033257caf4d0f3d01eb1e7863b6f105eddc1b4d67ef170c035bb4946c82419419274a4869abdf96a29e14ba363d21125baea98742489de55db397be8a26b463052ca7929a9bcd2ba6227a94894a4158c1061881e72300510567a0025a90819d3a5e247173a68e20b19d4f0c2172d2c928a54d101d031a948179de998542449ebb8900847c46808079ec80cb9d70fe15ef390d1f6a179ee5b1ef29de621e9cd8c31c5a1dd74b0eba6cd6f8e3f6434a4e6f352def421f226d3e5b73c4475300f8157e512f290d1109bcb3ca4437168b7f94db6c9433c7968e6a1531cda6b3277dae521a39504eab90fa9e7f29051fd9687d07f9acc43464325e0661e924579c9bccc43434643e4671e921f321ad25de6a1ee43dee93448271d9ac79ea834bfa435d4638fe4a1348c3d434625a0f290ec098974e7ba2c6fa038b4732792c3086b376579447168dff206ad3d870d702632643481d8639f11b18f3d5b1ef51899972b24d1383a26ad7083eee28c1374f20ac89ed8135d9a89884e6d88ae3ebac2d819a5a4222567967e4c90d7786c17ebaa3cfc12705acb23909ce646c069f99da51f13e8b39cf27674cee042cfefa87204550ba3221da36b522c3b3b39b877278a96145d5c5d5a5d5c5c68e45a54e8dccdd3b4a4156c5091d8694171391e12cca0e18c286778f1aa0d492a50925444436b0ad65daab3cc60410b62661c899931d342eb899617336068938e31334a7aeb9c51a223929e4130a363adb5d65a849e51d453cfc24e4fbd9c596f205a04393984c03006ec222d02210cd0b3d504965a5e864eba38bfd050af8848da9a89b2e745305fb10a11c1e431331003f4fc06e2d1b3d5049ead26b04fb4a26b908834c402ed319a3fc5115fc67659dd65065f432d3cdde659b853dfd976d4b970a7f21e9292e507619c4e17cad1a76f1898f7e938dfadbb5caed4370a75a11a1af5cdddc6e6a81400a18b2580f07d1ff82fefefde37ce6fdcb881b2b1b1b141410e56a8f001088235df3677b95c2e140a35e74ce14810ce94315ff3ddfa0d168b853146a10b1a8c24c1aed56a753a9d50e00187252627150d0d8d2a272747cb22831260d4984ca61a954a0582a0d6e4882362401acff36a6a6ae69c99151b801163d2d0d0608ced17319838814fe3bb6532994ea75325438b2862a7d3f8c6b161c386e779dff769598a81141b1b1b9bbcbfd3f8b6a951a3c68d1b3768e44d77b852a606e0c36f1ab7f1dfe572cd39e70d7010b3653efcb6f11aad560b63fc832bbc24b1b1b1b1c91b3ffcaef187794b1cb8608517c8223e202ddddcdc10dd40c5074752a9149121b850d284a524894b0c562c16eb743a0d1511840e3a9c7256abd5f77d4331fcf082a54f9593930382200a9078b02509ac51a954734e14c870a60b0e93a6a6a606639c820bb45071049f4e27145ae0420c3f9c3c93c9f47d9f26e5890c457c373ccfcb9ef4d0451420ebdb75e3c68d39a78d81920c5c3057df2d97cb8531ae3c08c20a3338e71ba7d56acda53057a89c6c52a96d838373211c8df37ddf34e28b0c47be9aef1b1b9b0be1681b1004250e4d9ed80158e329168bf54df39dbab9b9108ebe9973f2e841892ef3ffa671d46ab5fa367da352a90be1e814c69888510d392c81ff6f1b67e5e45cc8a473320a857ade43538a6020868d03c16cb0be6b7ca552a9be6f7c87396756de292843076796a87120588ddb388dd5378de7d4d4d47cbbbe1f86e12aef14142971428b0d1b36be61340e04a3f11ab791f3cdba8a8686e6bbf56de37f4ede28089faea844cdd6843d0d15a319090080046315000020100c8744228148304b7361750f14000f94a23c664614099320875114c440c6106408000420638c3164a4a6843a0aa240d9f14045f8c0807b2237cb27e770f81162c0fc8c961ba2d3f79395dfd387ee8bba8f7e8f8d2ef59942a406a193dbbc927b33b33b0f55b921134deafb0f797e60fb21c197784be4924012ff25c84888714096d7af1049294bfdb3a77be0eb02ca38a6aad87a0c2a0848c4556b8a64f745224c2b8082c65aea6e7a35d8c96c705d50551c34195bfea477cacc39651d1cff07749c0c878a6e9c03343212850232288934e96c54f87fc86915b0a571856bd2cf39b9260cf23baf67cb27dd3f4416900b540f059c24349d05159b1d249a85a46c39312cc988fcd3bab169a75b3def4a8d4a3961c6ab18b23e5223f07d1800b01003f590d5593e6b3e13aae6ed263d32b2d39358f1bb60d65cc3ba573db22bbbac8417be00862f4e1368a9b25706b6a04e94580000dde91b587e124863e3c8c8e1aa1c0197a6ca291945769452d26e679f96d91375c4e090a521024cc39a8970ba4c250262428a0d60c4243b8033b712b32a45d777dc58ce81825fb0ed90cb6e7d21ac163e8ca376d948efc05b957f135372c4fd12f02170f6adb030d6a0ef2a75b0c538fde1766588b9ac47242d1d5cd5ab9f87b126963627ef6b66a1b5f4078dd138fe77cd6117ceb949bc584e017c4aee1b2696a5ce0cbbc3668a5d8f382ff000f6ff503d06b92c1ddc90972619d428277eaf8abfc463294d05381b6b6960623130af56d2db74bcfbcc9baada50e76180dc92409bd2cb9371c84cf7847c81e8d39d99650485256165ef3f22c580b62237cf034d4b2a42c18ab3503f34621669c85800f3ac6c523f71af84b7c509db11914bc0ab71efcdff0e00d862f7f0dc2652ebb4fac25707aa678efce0f960332f44a63e3859b2ccdcb86c47f8f3fc87d71447364507ab6e940fba1f9dc9e2e02d0d7c1759c6a061056fb279213d9d30717b2552284c8160b8d3941f8b6b345b27e802cdb0e8008b3a5632d7297a76ecb466a334bbe6a71fe19845d7bb4de3298b8a1dfd51db0fd30df4596fec90f9a1bfa2a2ae685aa38ebe4046d5af87607440bf88d698d1f4cfe82dcb9bb133360dc67c2177b279fd1dbbbabaabc5bbb09dfe7af7e0142d4b328c589168fa8c806ea7faa4bc602c2cf4d82a912b38623cbed1edeffa7b7ed78a22bf373d735ee188e28bcc5e1e63985c4a294ad52198e15169475585592da63fb45fb876f4800dda23346f7a69b8528f000ed831184b90f6a02dd9817f7e07d18fd1200109b0f282153531f649863c98cc717e82c039509e6049d52139a063ee6292478062a12605e13324bc3c7970c4397f8228961b8bae42f9e68c8b6094a470325004cf0fbc51939080a3521c1df82acaa32c71c3131602846549b48ab23206f8fcb0271300304fdc1f2a10ec67e932f927c69e8c5b88394947de774cf202dc940e8dc727bafa5b4dbe24045c8e66b2809a56f107f11a763833972a0a4d4dd740667beaecbb80169e754cf540c8908978b88780ba1747ef2749f20e97327c29856c440ccdd3e81aa12df9fcbad1efcd5343cff56ad97002ac7d96690ef4e4355d0666229b0a9ece140ddeb55f10abc96bc795a8f3988609d427272cf474fa85f2bceeabc2c0747dd0b214b114e365edcdec900e1e59416fdb88776924d88c559178383b1050d297d9bca3f668f8d656269265fca6cc56775dd60b72bb04566ee0f2d20b67284180d1a69a4c8c8c1436314e43bcdfc7ea7b12362fb7ef23b99fe77f73e41de980348172ccb35c96c0927f484c1758dea6dccc06c71f082157cb8e2f3272a7c2230da88937bebb9b0f9fcd966ac72502352335adc0ef3e30c3289dd47f7b5e12bb4c2d6da447cb170bdf13a17211f42974b646a32aea8b40474200a18e0db87dd340b9e6fe1ad3ccf1d0b3b01bc48ba059b5d4b09be5c82425bb1b4ff913960f20f5b7f7ea7c65b7ea01e5cdad14f0e5d3e65688ba90696029a791cccf90a3736e1642df97e2b7659213640eaaba408050d9068afd5e4f0a9c5a63279e0a608b58c4a226db404026b4b1c0419f1efec9640536c2dc9651192da3555f19615ea7972200037a10d855a025cff3b33f3407778fd6661910f2ee53282719d7afedfa7e11e163472349733cd73e58668c2df87a84ca285bd7be9c4ba4e4dd5eeb634a02d3a3644ca9bb6f51769787d4577ab7f6f965f3dbe65026cc4b8b4bb648f12eadc586dbf522423c55e25a2244f12e6ec153d92d5b93d658fbb377e25de94f4ebb83044bd2076e357267b5b93c1a84b2789709d63b72ac3332a825c5e3c53af3e989f01df848a8f72db2ef5f19bbd08ff15c19fb92dc2d56e86c551cdc0290b8f4198fff5cff79e37baa8de70ef7d72f9aee8f2eff7c1a2181a2c6217da83ae5a830fa2519bb15ceb027672ebedea1a2f4e01eaa52fdba39b120b5e9db402fc1f6b894e9c614156914c137674dd11051bc14abd8af763708527f9bc6298441de315c7748dc3a4cc2f80d92c120f929511a399a8a35f32c49acc738e8f79187261460509312b7d8b59275bf0592f05eba58d15719bb75da2b9bf5324361517abac83e3f45f18d5dda9b54a528a1e3577b05fa4108112be55b8a4131ee89933117d041dc79402c9c6ef4a6e401191fbd58d1877ab32d65ce0ed99b2c38201a2245b8550ac83782bf6668ebcab876918c2d4b685eb07c60b92da30789105ab546222743a023e815e8a6823ce201057ea82be905bddda19f374b36defd0e13f696c789cf1fd00aac34a2284b500a51d6f24cf1a5e880037291bc7000555e7da23ec42e0924b70bdadbd8e5c7e2e682f280d44d0e6867fb697863db3ffc591fdc765094c6684e3699df302483b4dc2c5751172b012d78c0a874be246c9108f56713f6ed28c51470e5564a73d8cc5bdf0a197b3e272be3cf26b38bf8d4c2cbab04c613ac87af8ab3ee24b7f8b62c13c2dd493117b16d3ef634d89ed7b09930c7ac98dcdb893134d86c85aabe4429eba44f192faf6a9d09847ab80413012e67f13243a57126b03d92a51c828d20624859d793754128c36c392ff60bc866e2c048fba539bafb9960b617423717e377b6d972a9d46a5e8f329216eed49d4ae24e13fb5c988042a54eac15bc884c4dab9de2b5bb038611d2ac46878de11c9e49c9f48e8d780ea8ba79d6824cb2e7b99f8e6b26ef1c6ec5550e128847eed2c8031517455438a31243a48bdfa1d242f0907b938de46679e4e0ca929b1ddd24cb5be84d2d66635fee5f99ffcd98bd5f09b890aa75e15a3c9728b226343e157b1b8648b80bb4daca9b5e9320943e3f904473994e009799e4d4b2d369d3af8c1a8a43529e41200ce923994b485a041af4f7d08f57e0a4ff68050154cb2bb3a989ffeac5419cf7367d15cb5dc50d532521b5163764707359777a68d32e5d7424aa612951991b75a6a8803399cc179106b2bb30bf4d3be6c300f0ab908da2483f993dee7c5bf4c3f54bc451005526d38040280b5a6e19272fd37d076649e76694fea54444b7d222a79d5c30be7e91b888e09f00dd4239af0750c51b8a8052121fbcbb5c4e6115a13b76516843bb8b982344043bce201388d6fa7d296b138008d1dfc85ed36089362812e3082d21037e0496254e5a638f4509eeeb415e1e8a4a03b2c3b578555805219aa3c7aa9115694832abdff539bbe560979f45ec066b7ff2e719fd966b84a92b25633d628019ef1ea72c4096b730759b4406435025d6574ee99a599135671b62a94076678ea27802b973bf003c10817b6444983ccfebc5d257810a4bbc25cf02485c6a5f62ecc3b4b322abfd15b9d77c82d6a73c2c6d3e12525e30abaf5a47448636c9b49b346f815c790c2046e50ed408d64ad0ab7c0c2979bc15dc5a8acdeb92001a28b242d60d33cdc50f988245b9b8f3e3cd98630243489be511690d0327e8e22ddd60643ec2e82c04c2ecf65c6435bffac3289402a2671aec43ec82ae999bf43331f3143e0966d6c400f46db4d6587b929be5b5035330b1592b083c0602dcb13b98a8dfbfa68b923edbd85379d781c3f1dc7d72a3c3f4fbcb994db26a82c513d9fe716429feb5d0d722d7d141fb514fedfd771014f664ab51521e2ef9ff3971ac9dbaf2df3733a0b0dfcbf1f5852b57c2088f49c06dd4efb083b2f8d2a58423304d0e56d498a04fabd15b41dd5900bc837470b87937b7513aa8f36ebfa370879392ec407d58ff05d6b0e1dabc154a9a19a14f791e451021de5d01544b6e75eb4353bc215aca7364d4b370a117589d1c8235983af8a562543ac07d2b144e0930d0f982cc52d2926c5e8ec72d36830df241fd0d64d70f5b40138f7f91cff4d94816932be63a87a83ac8fc36f18ea17f39b17f0a77276deed200a8d30e6d8990212cb7a0855f483597fa56d5b50c13df13ac4076eb1bca4c0107e40744858550c72a96c5ccee32d47b6e39e243c820ee4165eebf29d5ff05b1f34eed564928287cf25c650380be17584481561bffe2dbd72e786ad23476260c9ec87c96a54af2cf486bf171074a5100ab209a5f0200ee7231a801995fc919805c13a35c361ab56afd2e1b92058a9ceefe51ce34a87527092915f2ed73e297936766ad39cf5aceb86e9fa1f24d92c88b83215b0dadeb43b2d6c294043ea966ea8eaefb7a1c683a4b9739e3702a73935eb3d87bdb61e9bf3bab6ab1640c9d0c6340f3d854233c1ac802ceea8ade5e668b17f79e618482e16b98cbbcc3a5524fd30fb98ee5b281ebd3308d0fbddf082d304f4389ab23fc2b1b8417259a6ee671a89ea06987d80d23d33201d9c7c86d674c316dfa62539cbc5d1ad6e50981512a4dfd53bad899dfda979e4ab12f4b5fedf8edb2694a8befc2a96407187bf677d0835413c186e7f3ef314a87a39a5d8b51daab6171be0d9ca2f81de9c2a9b36b314a7b352cce37184f221d3fc055b55353419b877e2aba839a035999126a47a4cd86c1995c92b10668a67374488048b0da48af1a3ee6978c4b4a47c4cd5e1bb40aa9591ece2b4729ba4d69f6d2e055281a74e0da973fe21e91d4c07472d3259cdda601cf104d9f3c3ce4fbe0bb8325489ab34867766c6a394489a6805a3e22abd8ced989c3d49e684ec24ea9fcb8468a33f2ed88ff62f67288ab3d1a3660b49f2f99704f960c6193b88e40f52eee53b22e589b7d2ab4f0e3fdf2bdec71b3d7f6006758cf8a5fc67379e7cdee9dec222ffb881afd4ba619a44987c564b77d9424d460d57dd59f2c1d99227b58ca1a110d7d24570dd2a4c362b2db3e4a126ab0eabeea4f968e4c913d2c658d50735dc995833ee98e38d9d16c4a8190ff89c5efc91f391d992a7b50ca35aae6f2323707fad21d71d9d927d024831aef3890b34155f623984a420dfb706846a7a0c3415876978d94900695d882a309d29120217b0f6c9564a5f99de673077e8251784fb0e86b54ed9347fe6cb0ecdc16a7b2f725d0bf46ea83ba6fbafdce7947045f123da2fe8ecf07e3a6d0f6fa58d09d586f3c590c561535a674bc84fa74544617c18890028910a885d4d3a3e698731e1efc2e1b728b774ea881632edd078d202d44acd030619cd60de84d17707c9f6050416166e5fd94119c773bc9ea30c8acbc976482fb4f479355352138b366f769037a4c874f8820c3147efd8e774fcbea57cd7ec13961f01054f378a6bb584caa9d0704999a4ffc3390b4510cbadb1684b1af0b8967d8a275383edb0692b14f0b89645c81750879db06a4b15f21d116ac83840ec3966f7bb2b1af57092ff08056e1a6ef9a31daf200e9d30b6f2de8b6a7c89619f21d802ec1e89d8e66b9154099ecd98ce60e352f32415cd6f60bcacde2f58515795ffb2cf8be62801851780f96f734260495d877e9af7180826ce1c977640672d70887b5030a0341223b5d6b72b4e536009e94da9a7b44f04def17444ad44dd077990dc0356588a8a941d524c4763d33616dd5f7f4a7744bdb4f86523cdae30da86f14b2fa0fe9d5582dff663d9e7ffdd2dab9b9a175f006d0963c9f8f848621d62bedaff1a9a4bb3b048116e6fce8654bcf850bd3a08b744f6acc1465288d826d43361540ff9d48783cf655d4afc534a8e0804742ff812e865f5bd290abd504006f6766fdf18dabbe3199bd8ba47f301ac40f5411ff97c401a5b4095d840782c683084e06a54440afe902d50427ec5969f88f862938ca3810c585a3eedda3ebb9ddfb9ff2cac0b409bf52b9100713e4b24a5442e7a62fe0439d71066dfdc53f912c407caaf82ec4531704c216c3dc6f6ae442e2ee287cf8e1db4aaab0a8fa3bd300667de19575bbba238836d14468167cc873d2e510f18fc6f52a5e38261cbfc1aa4db2e33633180ad6562f3122038e0bd582287d26f1ea1d74782fd34589fcc18dd2f7df0b32591952ce36c3deaa847c6fcabcf9314d18a7f1ab8c3468fb3176169a18fd9240df2e47fe9b727ad8cbe427817ca75221a2495838d4554fecfa4abf01fbc064b50186ad9e17dc27d598e900a4ad59dc597c90fb2cb7b79e834b341c8a9e6d81349f3615451d24983a6be702f8ee5502766842aeb023044f90590cef82ef3fe74a26e305cc25bb063b6adadd0b632b19049c621a1dfab643ed4ac69ba915a2dcf2a6936f21a958fd83deac35cfc5905bbdccb92195c9585579bda38b98ea57d8bb29822ef075ab5856801e27c07d7db4e8337f50914516d6b59601e523278b01c42887a8d3ec5b3ed435f884f1f3f7c1437336ec74900ee49c45511c11a766816b64299327083a50113ffdd6036db816f15657c576022db776abb8d7401ce9f472695c3172766e2bea79228f3fa66ed147d0a598b9ce29162b55168dd5bc7b590429501b47d51321ab4e5beaba3b342dc30a35926a81ebe110e14d5fe3adddab84db247192e3019216d30731d83a10296a7914e96274843b3856db9591b07dde0e1a1bf643c1bd94ac2bf879770327cf6c14e50449d660955a1de892b283050a9d4d31ef30a10ddff2c152f90e94103dc4ab51fc6113996cbec9d286c9be6e838c2aa1abb77b8f870a290ae231e9ab55e00b4e30c669d6403540d1b22a637767b26f819a26c4d691744e2bb448187fb797ad59a02313a8ca0a543203b50c402523056a3c4249c69328b249b5e4609f6090ba0497af92d998cb00abb70f506a4e1f98fd3edbad33c61944871d793a197388e6a4691c35971401ce815331dafedf3519cdb31379b4d82820f22848880a99a7832b9385865e2de64c8aebe5968feddc0fba0efce8784161f8a579d12d9d03e8865c9dc685d9a2edcb248304159b8c71b81e740f991dc93359600605fe7ac91c7d63dcfdcc7be9dafd096a1791dd97817c8f55996d027dd93473452817a1cac73416c599133c9df6d8ec617c40972ae2a357c05994f9ae0d7fc455526837c5e71e0bc6758d0785f457d04a2f3a0fe95c5c44ba180b81649d29011ab98b03a175b25489cf44e2674fd711fba01ed2efa5088f703cc4771993d1c0ed06302414ce5c78b263603683a3a245dd12b56083ebc1823b4218018b207c61adbb5ecee0fd28c97638485afc95ab03cb613915ea4b8f55e87fb3e2ef4f10fc1e72b75c479d44faaa034a279e13b8594deb29bfe1524f6f95c35155b10e93743b25a81b255ae701b68cc553e0bb4d966e9bd2ca24d7098a468210112c93fcef504483e0227c09e83f85cc13f8f6dec7572204cf70ec2c8f46c1487beb181620ac9596db448117b3e144733f021f93a1eb0faa045dd90ccdae235c5b98d769e4d6febdabe86d89d05779d46676e9f45efd54c85b543c35265a072adc1ab025af35e43cf06d8227ac7cfad47d3eaa823c6030a1f80a69c9f07afacebc68c0b80b02485624fbbdee71c38ddd216b8f81889f363804fc29afefcd0862db47caeb545b0c468deb3c8eccd6e49374d81c40b52155786391930006ba47e039420c238e7341032acb8a6bcf0e803840825830fda8a9f0be21505980112aaeaa84e97996b5eb3cba6cd070ecbdd53a37092689b6b73d0c98b5c924eaa5d729167bfed5e367538ce29762ca00b8f2db2609e67e20889ea462ec21c975825245465729a7666cb5f977d5548fce380c75d4fbd8f1c29e975b0b35411690d148c1b1d88ce1a89176baac020ad28233389dc06443e066e9dc0f4cf1b5a3a506fd1e440a3cc4ec42531547b71a16a8289388974915cbf972dbac26c4b1e3593423785e036c3150c7071d15addb835cf8faf7c49e53539fc5ef5267d4a5614463d95c3beeae5c4e3db1781b5838d99f113d1169f0ae009ba07136be557f0ab16224f7ceefece80fe21b524d10316da85506aa2d141b773f07942cb2ed5d6b0feee144f37b06820783034fb622ef4820812af810ca6afd799811b517dc2bbb92c16ec16246acf0b69abef6a4f3a452bd27944bac8c6f7912c0a266c21eee24d11ac35237f49a7e78a6a0ecb8edb9cf8daf3bd98304657f862ae6901624033c7e5d80676dd6a6f43e8106cacdbfd8c9cc356b0b14de88fedd731b6ba0c41fdd271a517a1d2958be80fa68f6f55af9180d7c2a9ac2479892794a9912a5c99840327931ef8ac87de543ed3b5354a17c1f16b4982c447c86d2f3bde8b4f49860c392ca6b4a1522c34004f9f4e433175acc86dffc2a7afacc38bc40c154e86ca6a1c2d14c6f45388c82128ab20b090b9ec3032adaba9bf03ee58534bfc8e59bb513823a260afe0f62d7a07b2a377a60bbefeba856e02f0cee121eb33dd93be31d6da0f642ff475b2e4d38a3f87f668c65966b6a212371c2e6d4965370ccbcbdb9430e9c19fab6a2a305d823cda3977b94ef92d4837d289179779dc3d56eaec92bc85ff4fab9e820fc70fc60cf80040d825d5eecbe0334075878dee6a7ffad56baf353bd05a7097a6749f9d2685740649b974a7213884db610c8089de9cdc1dcffa8435d2f39b25e92014f9283897a9d70adae476494e9e7897639213ca58ad4a6fa6b02120b6a333e4ac823e72a11b547ad3909c8d516632882ab0893e6f1d8d5eede7ddd14bcd272a4a154597620fc69dc8f518468092587fdc3c62a099ee6d7c23abdd1021ae479e251c16ab277bd8effa2279de15f4102a021d74a720641870e5894e951997a1f6707898265ce6fbe7e63a00065e7e48c4614edb05a1ae21ba6ba2893d7bf81176190667894a2bdfed5978e73bf42586d502b52bfe81a251a681df9b67bcedd2c6f2ac4c2e05927821a8b69a04f2dda2e76210c09fb8d9b4b2dc8d425dc4b3f4713c5608d55b15c2b45b367ed7c34cd8f4176b02f4915e966b0de9d1672e2e166bc83bea5ca15223d944267b2eb633a352844eff80c62938e320f23f4bd2928966fa0661f1f968ef2cc40ed1ef68dcb1731e0c893b573c06a61aa0384e52bdde5ac5a38a4dbc6d1ef46d1f186b1d40bbaf36620c7dceac65ecadf5b2d83af5841a6d1090cf7ca8f7a3649ad29164177bdb84b41c05795d79eb809caccaa1622a20a3e2dd28338d0a8f895036052b2bd1a285e235ac31e6f1c2fbb43fa923ab14a9c6a3d812a358d6d10babc2f73d1ddcca3ff7b9a5d4883e7743d6d6c9a131e7a4d0476245fc5c1f030ab9a270d1698d46d04a2f0561aab0762d0708e7551178808b718275f59f173156ad9bfe7b014964a4ad1293b133a3ab0ce58f4ff3acda3e91b451b9246cce5f21f01b18ff742345d21d2de772349e57f6fec66139fbc44787c5cdb7b901f9ff8ef7bdfac33e8724cd0e13bc8c04b22eba507b03af37a41c4246c484fa1947a6a3ae571e9eb252cf1f3d113906c2a7e43a4407d504adde9d7178322132fe8973d0e72096dba46503d605c71e9df59ab97023db600bb15c92fb8c8947ea7dd65a988b052545351bc59aa1521a590c3212566746ffae0ce7e53eeaf085859e39ac9cab92e899c2ec7168dcaaf5b5752ea06ca2d5ebbbb5aea2df56aa91b8bd87982e5749fb479f2cbf73c610532ded3d47890e4e09303a5f9bf6d76a52a26a889b72c226b94b4a98387b270fea2a091e804244919510f89f9d1fb2fbe06656f579f8aeb4a11562e9c26f75dade23e64aa4ad887f2227e2c8a2c5cfc4e18213f8a0c2472d1c95bac7720fe50089b18a3e1eb502019217657f79bbfc3bb52ffab424153687073b4c3d8f1252219625b85eab20c474b078441959c8c831528e591db29f6c6dd7f62084d1b1bd58881177f80ec7070a40e014f64f8d6a63bd4a80af4dc21e6dcf2d3fc4ee771afd943296f80978ef2287497ce7706a727eb6c52a12af7108703d6dc540b320e005365d1c3477f1a956e42e5bba6ad2ce799ce14b61b2a6f7264a6e9656a57a005522525374f8023935af1e7b8b260fc3c3633e278ad315dfc41cacc95f489ab7e58a213013c27a364534f9d5097fad5a1be75555ffdd55d0f75d5537deb5177af2b5cb543463a1282b2b8ce5b8b18df9350a3c1b0aa5288d682ba06928af9fd91340d58e85f688471428d6c58b1b305abd787a7c0b885426ab8ee6e637d6bb09456f57830f025ef51a7ea12731af9613b8fc6661cf3ae56cbd21376d86756e68d7d358a2f7935fb5aa67e2e953ec90b8bbbaadda8ac447910e808b5e5bd1facac433577c0b0935fa5685d979209f2ada39a9aed24908f2c5986f038377c61b0a9e431abe6edf0148ee5687ba8c1f1426514ddfed388fedc880ca423752059d91b607fc365337b6d3fb433c0a021c910b1a1eb3e64dccb40788dc87623bce15b0a83967a229bb2707909795d764126554db78ba4e0e858f933b62bc066cb005de80a6cbaa2c517b97bb566d2a298cdc0060f695c6522ed8578fc6844751b3c0cdde469ed61ab54e3c7fe086671478acb10c567e664fa808d43965168d9566e34eac0fb3f5f3e62bc7074b9ca25b7412bfe3f9d4ab77dec66d40f35a411093f1608d4c0f7a1136736641bff078e18d85fb832f609fd2b4b1d1d26856acd02f67d5b6132f8e298754127d27d4a8a9b0bc9ec050835ea15d43aa05d68df445cf07123604f8cfb3ceb030557381eedf7502876ec3b170a569ced8c9dc8b18dd701e177b73bbd824e2638650906d4f800a316d06ae9a39a1b9a6b744af12413da131eb2f27a109956bab3d1f6cc28265e600305a4f054ec9ca745ceff4634414fb08320862f360ba004cea34280ed542b1bbba063324bc408a303ee56ef573b85e632b2bca896d369c219c2068a5ed3393e50ca17b7a286c2da40bea4e332e0e742bb29afad34a37a3598eb38443b8197a77b620cd2c1103322e7050c9f07d2c6e91b4f22e962f05848bba57119e6f9cdee0eb3028ef901714a8e79460b1eed9b800ecb3b274818e404310c01ab68e2b88a7bb97c11d1daec6fe61b26144fca393164dde72d418315ac995618957d6d4066e249f145853e60db27b3c958531ae84e903cfdad9390989c0a0331aa122d6a0802e09ebd82ba3e5f46aa5d75ceaa939854750d48f47dd3a071ebff1b83183b29f8c04d974e0fc0ff7f8ea8264bd19380cb2589229768cdd5337a75c21d86231eccd51b2615043bf70ce379605d6259c4da5a6cae58ac4f5c48c18a8bdd5f6b4171f002b90a0382edb46212c3497c5b339cfcaa39a713dc002e712b3141996d45cef9d3a603f17e10b37f06d20d8da7f9a695402f85c2d11f8cad6a915921a415051a0c7386462bdce357a872e7172d4a04932a0654e04d5eee5c49307ed8f69a6cca1454741204d378cf3d148d73917769183dfc89e373e12c80a43af709c555ef288ddfd6c10acdb713d77e510751622856399496aba0e0d7b01c8f65dd1704e7f9794e70b9afd54f812b2eab7f0ba5a2ce5d9a03830d25fde31da87e83bde298efaf2250754b38d55940c35a06929e5f5164938553e372405d54059d39c4d642ea3998b290c47379f9eda09d430c4155b115d20b35c7bfa17485a30f3ce4a30391607cdaa9ed1227c26588cfe1bbcbb8e9f53a55dfd100bb19fb2278a5ec839a9b1576fae9c6ba73386c536d82e1b4f105511fbb2c2fae3cee77cb3b7e2eeb8594f1b8e9e93b725496800be329ff36319e7f0b3c08bdef53238d06223151e470020d8cd3818e74046e55f8d7616eb1ed00a18162d5ced4c1920fa0c7a8344e2dfbd5d5eeefc08b4f7595acb7f8f6c176c5218b6716847bc764d5a3b0c5ca815282b1b1672a7a85201b5ce712dce1987e811a3a488fb36e4d706d8a320729288a925c8e80f472dd4a8af9e2e0d020bdbc582282b31ee43091d9999eda0c69a817519eb1d256c2ad3328438b053377f191ff8db3fa446eea33d19b9534102772f8826c270ba1c7d1ef0262e87a4dc36c9ab298d65f09c1ee9f4308a6b532b385419cda0fe5176d469c8818f86b0944e7d09959405a8eddeee73972f0adf6447c33d0646d6be16ed71e485d813e00c913b9603efa7fb79e4d447e107aff525cdef38428f6162c4762ba2e8455219fa4dc93b28650c09b44976583901256375cbf26d182cb131a143ddefd65f82d413bc3731cb150886923332ed57163d1110f583a0b3caffa3cc090edaceec12fb1129492d76b95d239ab9bcf1bc2e4c697c45e3ee000e889e0d3fd205845b52385aa61c2a2937e56c78014c17db083783194033b39237090db3d4f47f1616e3bf82d131de4f2d9e5d92cb9ec4382048c820e20ef41d0f9ef5e17159ca786d86bdafc535e25fcc8a70a66d47ab727dc63a3385e2298fb3cab907ed457d5d727504b4d098103f6c63515e3adb2efbf9243adc414cc46f7ca43c58fa212041eed067580a2a92031ac21ea6cd48afddda281773aa3bae1b31e02202de4adf4602cc288b14f0ba242bafd1bd5d5b420eb8f42301ae3f032f2965e7d7fa39822a0126806e326c4148e5ed33ce5d7ca080e70e7750797765ca6f020866112f09a64145ee27d167603b4794040d1f3c675606d652ed66a3ffa43aba8d1d19dd232031072ddb687381e4b0a178191c0035525b290cbd0d241bd2d59bc5e68a9c6a96b92ab3c4cddbe023bb430434e6c91187411593c1d345d312a73e14cad67223ba01a7d2be5d3a8e1538a05d01ef7cc69cd4755ff356702f728e5ce4a783b3970e78c39cf1ca7c0a50d036a65061c2f7ed0e851fb597afac6efacb85018ae98bb2d16102f133f04918da15fc9086ee200afb884b86e48d2736ad1ea705d57446d7865d05621e20c590254584f318aa031996c5774f3d87651d733e0f5bfa52e11780e7876add5c6c89cf11cf99aeb23b6346cbcc5c7781646d7a533769609c37e9804128e397809a5d7b29197234914d37854b4855a89bcf6d02bdb6a928d2dee0d8d2c08ded58e79d1c71d6df680ab9a225de950672a0705b9fd2b19f8f913c92bc984deb93ce02804d2ba301198ea4ab2e17d462168d8d4c852580895bcf87fc52154197b080f715e3de0f79a3f0cdfa7527e71e05916867904674cc8af16c224280e801dcbc314e9d4bbfb243403ca475164adab70f7bfeb0382022310f5a2d61cd3b36d47217287cf6cb32772546d2927eeb4b658a310c8c18b4a26f781757fa14802a7494729cecc44009f86c82329ad2afd4a72afc8f85d74d99d1aa0cc2c7597eb234b1ffb8cae965335f9df604719da67d92a75c7f8a675ff6a0a700e932cde986884ab10d8ada8743303f7d5d393f2d1206508ded97ac8ea41f076f375cb3de43c81ba193b80e49851b9ed22ec1536d996e3e52f6da3387390ad66adea082bd43f9b9a32292541525b2eb74add3432eb8ea1e1218fb72f81b8ba56e9e3e48020aba2598fd483f6b2c0b9c529e2d8bbbf3d2c5e5350763eb8c0d4f4f8b0eab12e334b54edc4ece38ffe73471695e90fcac046544740d21cfd4daef807b69960f7552ae2596e82afd61280c0ceb70ce66678c75c4a2af0d08085131f5d28413449f609559cae3d7f96c520af512a72dc0c75acc1af116d126884d76264f728cfee6ece1c875018534c41285153f71b5444b7d9378547142e0d0abc9e162dec23158f6f4128d1952f38f5d93ae51c6ef21c66d5afed291eeb85b825318c6a9ce77dc587b60a9a62a2c27c7206cbefe93034d29a7919125f17b75b76d6b00e86f0c9f5653addf55193583da0c1c7af7dca6ed7fa81f8066d0b99d3c5d685fd0b03e68ee81e3eee840f12ae973e7f333b0623aacf282e4ff5bc3c22efddb93a226fa250ffde105fbad492d0656ba8a3110ac2e0c27ec30b17b1bc2df64a0b83177858827497ef81aa298cfb97a1dc428212e8b3c45be63d7ca90576df97a5d7261d028cb2a5dad6f45e54c73ca4abcca4c88c65f87239e94bfe4808ae41509ee2e6357ad6eef8e82c0257776f47422617238ca3dd63d05e95d1591bea97c5cdb4f61689e6c6a4062bf2a40d6e67eb11c247bc003cd667d118c8e7d466a63b7259f8d843ec420adbd17f0987b4ac181c92adf29945c0b0693da0aa1115ff021cc80e5f767a052b642a088cccbcf3b0e3ea2a1d86f2f9dff099b50f9cc2783b362d4adea3ea7aa03392adc71c525a77009a990ad9cd38ee96d0132bbcbad208e1877886959c5170b7407e19646ce617abd10df10a8c0b881468a148a4e6bf35cc9d6bc42e26bf03416365a0ffff545be92ce2c4a32d498df2114cddff5361d57f6c0570049a44af242f85944234cb1dd37f599cd3861a8abc6c260b0018ce4b27cebd6276c520d95aed4d3dea03eb48796ceb7e4d74817e492a6005fd2b27c7dc000733a00c2e7dbf9d440a8de8431ccaecb802910a9143e5686c6241a3160a895d603001e5c445b3f6690a2d24e25f17aecf7e21e61bcfe7b48d726280bc1f11041414aa7f87b8618e87e72e4266212be4067b5deca3b89b04391c4580b9fa39d192ca282e92335c1ad8a60479aef6ba89e6b5e325ab3ea84657b7b39fab40885fe79b6274c4e56dea05ea4811cf086b0097747dde8721b896e9105195887951150210f7ab143dba0a26237903fc3065fa34d7003888dd8a6aa59d995900e8b2d9b43f2edc08bc81aac43484f0b32f66c05a1d9b675432654f501a007d7454491ddbc2052de326d473f0b1275c106bd1008eda35d284cf069c4af0802d1a50fc00c03fe3e3ad0ed9e3b8a47055893e278ce2f9b8f62195bc200c6752db21f86446c73c5472778943123e9713bb92cc066eb8094b41559bfff3f7df80bc73b8ee12083a9cde26db7f714ed1e65307b7d7c8caa43d95eb83aea45f8e39fffe63ea09a8c57fccf435a8bf82012420cd7763cce56de9478e94c89e872eae27b163a927d19e45313d21f943d072afd28914406fb25e935c3e1ca3e95dc25dd4a20405e9cad6d3506e0a5885d6938b191914871ec721b8c796f6dff7423340f3269fccf7cdc11b291e29aaacac893021203741c7d9394b0bfcce0484224388c4848836d689c3805918afe090543f3b7f892ab0ec39f13e30cde47bed9170a92dd052d04694fc5923403521cc0380041886ccc8dc7487f18a93272d33451979501c8b554c05a6bfaa20df9707e57cc1e5418f06ecb09be793fadc8cb0cf811fc00d7530a214988e95d8eae9056433c43fe256c39b520fa008f088942400df97d9290432374b642714dce0d6e1d0a36179c27004a3fa28f69305ea218b940165079122fcd9e5882038244068bac2fa6d575d61029935f558fcc559f3d2e963772827afd061d3678b753b9c94573b6478dc612653adc538c80e8fd5261fa43b671571a077e48e8944e9f80778627d257323833b1841d9aa66ac31f0097e969ec889979202d8699817c3ff05c053d41d86e965921e5743c014f336bd9d03932d66053cff5c63334568c274ca5ce9798f65fdf4b8af24dd59ff45645c8c9558e334200f6108379d300998dc3c6c82ce3dbfb972f849c92b627e386fcc472e9a7a035731a2270cc3b0d991576a191a09e3b5a01790eece8c90aa9f1dc796371e6180f209a3014d7960a903e4523fdb18a137ac1f9d18f68c0a893a404a38af6783dbfb590ad3f0d5d42545e0481bb1cbc329f834fe9f5d54051c05f4dc693311c61b54c25ee4c61c0d5fa00d633e1e21cdf742e5c1257ed876d6c136309f470c476d824167a006601f2100af5c53371711e2c154049f02b84114048c7e63f0a484989a0393cbf8cc24c2217bcbe1b847dc2886e625bf6f9440e87553cd26cae3c0a5dddc2679c9b4410e84194eaa61042dbe8f7d9d893058e1d836f625119d21421518e18042cd53f9b246032109c410b6b8d894cd3f53b31337a8116cbdfa4851b66be55380d4c7a9060b46a50d1f525153039a738baa1216c606cb98d3f263b4d914887b42ea41c5465f8c479c3a019696f42e6a0ea186bf2f28b74a6e2884e65addea8ad6d33607567fa074f5aae91a5d079135d0196cd9872c5a47de975b4ce7db0905ff5b850efd2fc25cf462d1a65a9d88a4cae8d61a92946935fd288229994aa8a3af441ab8d0a644a1310f8fd029c4892bf10dcfae2a6e5bb666fb50b0f47dac21042e8cd2b88c08d0542f1b11e47a548472e3bc098d7faf57e243147128666007c5df87a8559ea952426fee591a9324a276b3ce7304161829517bb9a0d7f55d532079d5f87eb6a26ab37b3fca05acd642f512ee5d59c80719ed9cce891b1de21fc45a9da395030d8331941561b6f32d42999c9a89f4e6c2e9bd7876b6e2dbe78b7e8fd45989c3dfb32a890322874ba2b61a9fea3c0325b98ab4ce17af3a7958612a099a9f8dfed7c73227ab465950d1f1831c17ba840096ca1ec1cf1c14ab45a420c0d8429ce040a017aba1ec721d05657e638243dbfd352b0c03b9caa681a01bf12743b36d31752fda40d01d9dad9544f1cc9e6b12c5883362714c46ac6da49cf40269ec309ee5cdc5ba38b2a81ffbb0754592c75624aef7a9fb7ce06643291ef434aaaf01f96f2869d04810fbb97e622e1e3a5bb744caf3e8dbaface421302e384eaa4228ec6db9efe6eb21b0b01d1908e1b1230176b36034ba998935b4964f1697b5c131b6b9cfcc311f819ab6a4a0231d5d70c184f27fda7e8dbac68074e84487d26615faa0ccca5f16ebcc5d58005971fad1a743b7c862f408a82d95ecfb4f3f088c029ac4fcbbe6dc9601c48759ac5d6746e0183c7a63677f115fec5db8e02642673866a642c6b0d49888d748b9176041c277166a92548bbf19f59f22f27f8b8c2085982bc2ff34b11f69001d4d4be3d265a461037b69478c716bbdd43f8c6e0e16c170f308097a9b8a58848fe2900b8d7276723fbecc7220746f44188b533afca30db913e2e791b79cb6a69d345ee9cb4b09e9f3cb6902c56da2cd4c026703b872f7bb8bc6cf42f0ba525ad89beb68d049f8b5479673178eb0d2950580a9417755441c7e34cb82f71d6ee2cb58e72e7228742b915273dce73c62c0b14b5c9ae1b32b053565d59988217299970bc3df3ad28bd07cba2d44efb66e1cda64eee8674f5a81a0a5315153a74ee76df2ece678585e4101b73d9e35606cf4b8b88e8b889b192d52c382e930f167fe14ad44e2247284b555f58b8e6c525f86e63840ccefed83d2d68fabb6fdef4c6d0a5d5a730ad21a6821355a19b077697deeeb181ae49a4cd51daeba8f9d2282a07c5e0fe4da428c40428bb5468b5a6955a4db997aa4e6bd949aebbca1807f28740efab864907292da36abd1e29842a4f653c0c4e82497d6e26a13c71a57bc135e275cf566858674c9bb422c6793c66fb15fcb34aad186a2df2f3558d1e596c81a324d47b1fe10697368ea63c4b6cd925a46d3fe4846ddc942f669392bc1b6070b6d9d0e9b37dc47d882eab29acea059c2c2173464e988e9aef8d68dacaba5a99d1d02f0cc45c08934342a22028ecfa27a4c8e28b381a6bb286b6d63b950456f851bfca3391340872af1e71b18860300acc09759343911eabd922330a3140341f50158a1a53682df3915f6baee1e6acec6a7fb51c80bfc1d1cd7cfec4c8847fce4c296d99cee56d2a25b0194f0505f248915829a203885d9799de409290ef64f6b4209a741c6925226df0c2b0027a3afc15fe8ae99b23f7d4dfb29726304adf912c7be35dd8d4ca162868e138e91ad50044f713d5bc32a06e534eaf5354eb4be2cbd7f4397f2098554de7da4bc1ace0f8ed9c185df3facc5ab25adf87c6ddd943239dcb024b56f367801cf18de7a588cac3d356f49984d0538c8bcd56a28997f63f3677a0459a99ac1a83c0cd87c817186e04872811dadd8ea5d522b42381beb73999c923cecf89927cfb77a03b15548c191bd54caede86ed32522dc51aa03f9b1a77739b4283932bfbf4b17df86f252ca2805bcc260de3278938532a8ac87e36ee23d38ac0a8f7fdaa37f4e41b17a1ab1ff0c4743ea5a1e8a9d592a11d578b98177071b568d0af987e8aca0cc236493677d129cb1271264cd48b8b315d6f9c83a36681612eaaa129ff716cb54fab6719d92cd818226efaaa6c7ce9f8efa86cc37fa87c5016e6f4cfae32a259e67170955cbee17c875023e7eddc303654d9b1128fd6bd8fc2306f952734137bc8217807d1315d34d2bb039fa6386893aa10b3a22567b29e72b5987936cd952c64a1bd47f12afc2121a6cfbfb06dafd4b0318992a8bb0f14172d168e7afd20ff9d4e0cd5507b72b22118970f96b2681fe197e1ccab34f9be7b4e040ab60b836a775f4b06bf12b9d02e4bfe51059dd4b0834979345bb7582ad1e5051a54acf2474a8bc10d6bf1213bcf0bda8b03003cc799179848ace22511d0c47510fecedb4026f51da704444d72e97d750b4c2065e1aaec84626ef8eedae1044a18e82958a8a5ad3804de6ebe502325b93452249c0108b2363a56a45f4290670892329b6a2ffa390b582020aa08bdcefe310e698c2350eb8ecde7968aeb53638be0b98c698aab5eb4f59aad64f34529b4bce2977654ea6be658423229f80c0dd8ed9b693b973a7400fd35f6f03822fcb5abcf18d674eb46900599e7482628f5cef4e688f7507f65cf4544f73736cdad3b6d654d609a7f2dc15a843c320f5fe4e64152d624162cf1fc01659623b96e947d4f0843961d77e6b72c0986af3c6155108ede7b93469fc1028a7292d17e9669c5ec6ecede9621a98442eb430001243c3ac7e61d796c6b29b2dfb2c17d698f9ecf56d5e02520c843e237ad3b60ecb5c0daf38b71b05948041d958c30a634e5971a946e56ef95ce337b200337ce772c42b29caf4120779bd52ff77bd210d9a07d22f55f16a23059d5338b78ff7efa2dc8964177cdb0bd4081afbd8e51e807bf8a688b7c7aafe89655acef2b2acfc5434441a1260b4c6033988f6b5facaea63094fb5a7486abbbc1c785c69b5d0559d5d6ffb4e72559c944a209ee7dd03eab587774e6cf1a9a32416b7b568cf4ec155cce286a08533c9545bae2adee8f6d8341dfc9f58b80199a5522ff70274b3528ee204cba20b52f9ba6b300288ac962a42635dd623704436a2f4a21587471d26f99f8a89d872753cabca27328fab5cf83f5f329d5a6e8adba8138534cd6bed62aa8552d6baae0adcc88dcf513787769990910ec0596a584f27ed2ea338905fc97986ed008e3b959f9cc8e254369cff9a545b9b11fe35e58f0a0ea3faa711156bad2dcb05170cbd172e4a29912c861c0311a21c3faa8d4b4afd6c496a5dd0b12a9f3af4bd0c6039354265d699c625858bf68d252213d180f8d7c874975ec1c1557ca3188e9decf5eaf0af287a900064855a3afa70330b979558324099af93e4b6c8e32eaefcc8e3a665d5dbd0a5abeff671a79770078149c3c0f37f10166c2145b9a20cdc111690e26e3feb4c0da1572f4adbdd697c29ac53405cae5c12867a795026b8c564440bfa44df52ddff39616ebc67f68a77bec7343034abad96bd8c2c6ac5d4024c15c96220c05ee354e8f6dd05f526808887e546afebedc13d719333f5c1837a63d035b1e1fb20e1d9253dfc2c647c7d91f9f590b8fa495a7182217acfc1632de19c7a3d9c7a8fe72fa2712d9480f65aa3cffe2c9581480d4758697bdf94a832074ee89254a02f3c64f685c15e8f7918918839473068f54b545bed6c6ac4bda7954a0999a2fd77ae7984a74d61c840c67dd08efbd9d1cfadd3425d9891f590a9b58ae15a9561a097847cbbc83c14d962234486fd650bd60dce7c04cd862b492a26fb27fbc1eacc33abe907c0685104229764a2b612dbc3567d8273a787c8cbb37b448a0b06baf28547c1f4f68270c4a5b264b12384a2c8f6c742a7d01ef228ee68262a31f9a7614980d853191984e29981a8e436a4030bfdfdce16f1108596cafed0848b3019b41332ef08cd8028e51fb2b1b39cb997103bcbdc146d4b52f3d6bc9edd3aa3e7f9d34978e4c8d91203f46c10f1aa1d0a98270a7e690bab4418025ffd9a447c00cd1c79fae325057952ab903a0b01af3841a462b111e0dc967fffcbce426a7d2923ae06c00229945693c304a3a0fcc3393178c1544ec8c1984f9ff4016a7fba1e80566a527012974ff3520b5adf144a899012bf9e0babadfb8cbcdd0680eae8c85bfdcd66a950d22affadb8b26662d58abc86e88851ba6a8f150a560afd58272baf9bd259453f3412c237abfa435f9cf7d9c21bce9c55cd629b62a7b7a30863a5e8a0808e79b1aa84d572df83f4b6305e89d9a8459b745316f67a9734b53b85980935762a2cdd41394db31071cd667f4db4b77528eb54bfbe62f4d6f0e18594c1811162ee2f8f274539bb73ace87a6f8b2d46a1322fe68e0c1459443bff12346fae4a53937a04a2edab294a8674257f26312a1f8329714d331ac3dc78a06381bc582246fb90b6e75d4b182477afdd81302e19f430dc0d7294836ce50c6db4a066dda7fa35d8c795488d7dbb5f46b510c4491e40a76b831af7eb64fe8128e72fa8812e9c18a3b5b63cac180d145e4c90bae10a61377427028bff9b3fc860b355f0a8456cec881705fa6400a1eb452fc57aa9b130e898b14957ba7aeca48c604da248b6071ec659e40fded6b17df45e9d5584b04b77eb7689051f1e1f50083826d80c6740c16675a0317f737fcc583fff61e800a10f20fc0dbe53b8d1be7078a877066bc410453cb9884275b37cb8f7cbcd3565fc9088889da67efee814d4dbca995a9c6093a621cfc4325ba070455adbfd7a7a07a308db5486f2b469c9d5b1f613ff1550772c49611267295bc6965831a53ee6fb9922907f3c1287469146058208dd1ffb237d8025f699872597cbe2725611cf4c625ee80c0938ddd42493da824578f9f80dd0615341cf79f7b915e6b678a2091d4daa9bff7f4293de6d1ace6555d28ccc22012bb52398a01f580dd044bc0991e96279a3a5cfd029bb0250155bc2319c3ce6e18f06eec8a2cad63300708ea313ff490ad7c8b587c3a724d3db6addb49cd7304a2184408ad3238851318e551081539264e572c02bfc4dac2b1098b5c2e7da9c2d32abe2aecbcd567bc0fed27551eaec9df9db81422a2dfd35a326c15d6e8e025ec4ad9701cd984ef90817108116e4587d5b49ed0add981a1665cde76ef233b9de4e73789e841c06a898a02f1a51ae87704befa14cba957d441cf560ef71176202c403707b83cc414c332f01f64905d2e5ce12901c5d02c1d7a27e170e999db0d82b03e203936e3ef6b11c6898e6d23d80fd311ac513c4a9632538157098df05350a2fbdfdd92d18be30369d74303715138bbc17c23d740f9f9fda1e571d641e80666366b6858b2136109aea19a12d41e492bbc80f8f644d5a8f2fe25e81176376fb41b8d5308d93e5a7f822c2ce90a82ff4ff051083f62a65a1036336ee39941a5112a828006f2423a9c49c0542a9912fc49c8dd9650754e4c61b13a8e77ba51ac586cdb89f4a54871236ea30f9a337ae5764702d3a27eb086fcbb97120572bc56a08327914f772dc715649b3393137374214c16dee0f909cf7ea65d075666ed7312d533e32a9ab3c39b77b2b418f61e69b0892c167e6c306fe1265bd35be84c6dccfa436af36d7eef74c2d4748746ea00cd87f650046bc1224034add4f6d2315ffcd8686a1deb2482480c5bad1b307c54670b5535a1f9e8d5127108c96c816f3818a98fc85c09e4dbc65dc772b19632bf25f7e5d2b207b2182d00e344acb9dcda1c064b30344cce5f750c37fe50e868b865937c22293d326526548a42188555ac5f4f49702425d78a0474b616489dd1b742b34dad6cd2ad0212030c4350d1f2d5c8aed3f2aecb23f9597a4751662931394078e24424aee3cc4ed9429c20dbedfb53e0335e19c0da5e2ce9a6f82b305bc242c19941a4d39b2e9f57e7f3760f11f444cf61a8b5ea178164f7ec08b671288e4971e7603d18cbd45c59eab30f9eab97450c7800e2a0ac30915f5f89fe1c929a0ff5676640de7f677d63c483d147c3647765ade6b70a77c34c04a82b4f15a4d8ba81438a39f0234fd0f41cc0de89200913f2a329e2cf0fd9e56cfc352f14055c9c2957274481869bd79f1121c671b7f0f4f9a166570add4a6bfac92c270a7becb2a20345476bb7216781e2c2f61e1dc2207e88a42cee0dcc0b28e92471d1422bb6c91caf8f12b5566a6ed874072db29803ff8b624efc5b1402099eff56dd95cd804f896b4f4eda8eaf1ee4e7c5bc92d8bdae02c06093ac02053673608c659e1a13bb1e596094074d352ed835d522393ad9996a02c2d7ea5460d2dc488137a274270e733e08f720a01538f056ce77a1495bbd6774ccddfb99aef8cb050bc6383779fabf335323906be5e8ca39a47878d7a73196a149cecca748c80c9188f559f51ca36d7a76c398918d846aa184492f44ab1f242ef394d97b25ee47233e2494ca22c52adeff88955df718f8e19b63e1e2dcf720347a61cc621a10a48fa23f2aa70489919387b35da059783150d98da7b570305101edb2059f1194381acb897fe3a6eed090a4485d60d2a45318767af1ee15bba5bcce2a2698049c1621c8b82ce2ccca115f14ef74c5ac8378d6ad0b33318df869d2737ba1b8a7934f4c41b05acef99667fd4b383357c7e631561e15d81df8f2155b24bb99d76afcc60d706e514a48a661e70a7c3b18ba2f2fb0dc42ade124d3c26d3f2fcd9b42a5903b1bae995c279f8c7b21d8569eb6fc3cc6ec643270651a7fa71642ad9c3afc242552da74b1eb3c4e84383dad20c1b7f69548981836094ce9e209fe661f5eb779831f8a767f0e381978ea99501f5ca9c00b3d31bc510d80ceeea69cb233d81c55c0e8a39fd01daa118ea6473c8c0a79655f47d3a7b3daaa8ff8569700140c00341942ecd78f76af86692bbd21fdba607924bdc6b422931baa0f2b908c010151f7af5e36e78a01aee958ac19c315b5e26d92b909c3b2459975a20278580fbb9a7c951a91be10c5dc06da38d015f74ca2b6b97f373558a6fc02e66cdad2028a1ae71b1841ad38e6ed208709db285e8d8aa54deaa08c9d753d6953a21d6f06c89073062199a149898984518d03f01bff84d2e0f23b449a5c8aac8a760a812f0d6b1f363a1990b3ae0f46d8cdd4e2a43b76d0ad0cba2a6c3c63691ce3704e14baafd55666129bf6429e78fb4404296c8e314db574f25dc1b275b8e24af193d0f08d953e0691348288770ba5c26d3271f2e148b848f9c146aeb5465dc82c34b899d5dfad4db60b296be420520a160800fa1e1f34bc9e86544f8089accbb6fa322c42c43e072902d604646339e563d8006c9700e72e0cbbc96bdaed28222eacb9ed97e4465f2f6d7e1db89276727aa9340bb13dcb56e0a787bd746459917d239b3c51cc8db9292dde7a9f650b6dcac06156f46c59e86278c5a2a76d96081f5c03752029772b9ea07ce53093f744c8eaee8166e4fcd4d646a717b3090069f8424755b66d0d8e348688d4bfe2fb918d2bb21a955ea864a2997ea160d26257993cdb00364c00e71b21db239b55ae278c97f7914cc0b516fd6220b6d7be43e358dbadb8177fd409419a2165ed1f387f004e8c1a6ae3ea0a5bc8025662656bbbd8f77908e0408c99648385de377da8fb2378b1fb82b500ee4c51617744b12824378b9f36b25984bec8ede9834bb474203938e3332e2b357b803dc03b0f78410382466840f62329976acf030aa4a1d02716b7c61b8cde441357a48ca89db1377d3b3d4d42943885411c62ec44afc0aaa204d423a22fa38ca3eb2b601d6e501cc2901c1eef0b21a3193bb37a2caceb50bcd03082a575a7d07fc086ab881ea3472eccc19c9036a44734f08085184be34a3735e62951d5071fb546faeb6a01fdaa650a5e04479a81c815f578d48f8417d301ef12e2f81c110c6a0410919318155d5a038e2538915301437ffe39b1b6c51fd44be55ad9aa42d1972fae180e2429ce43c7931daa0cd27fe78fe5042e32335fa524ef71bb256e3035c4f352e5aee05e62bd0075bcc2379668c210d1b379c8068acfcb9763ecdfab66b2113166bd266c29112c99ba0b41684ee3ac47959e834f450a752ba7993369961c7a517343b6c46fbd3b8d5fbb541309156ea4a3504bdc711d80a5c0d27487dac5af081064a0a89d2d48f55e7797e02c31984be08c503372f2cc6cec2d7b9c346bd7939fba68618169d0d8790b1693dfab0690973a13f985a167a180753c4ca62c76c95290f56b42424056a9e4b9ad49dd4002dca7163b941877c2a9d0e44103f2121d60d386dc55aeabb79c40c13edd387ee34150c599d4ef2eb444ffadf8da217ecad742fdb21caa2eaf86dc9a716fb0776040832d87a291c5777c7d28bc1b46acd3307ca18b80afb97baf9de158f594a6228e8ace34250a9d7b145b5148e8ba99847af05babdddff1fb99e12bc0fa744381aa37a6a3c03cb3595ac7917299ab8a902f455b390e66f2fcefd2a97dcb0f86c6f74de3c8667fe4ffa4032f449b9d31eb33df3840c69dcff3812d3a461f389a8e34f05eff1df57b1871b0c807465305849a4a60825ef0645912c79906069033315a20e03af65457e352183bf16005848904c43cd91c9af73249e351ccf03c1d89275a95b84ac7b3ca0c3a5814a9bc1ee04cf6c51ccad91ed6f30694ba1b5fef10dfc04d8044006d245a238f41c0bb159e1cdd27a40ac41aa04ac0d331b397b89739e1350ce423252fdd52eee7aeae733e85632c055168d95052e0d6c2c87f209084f5ff408d8e43775a301123500ffd7750555e21a1ca0ab1e2c85d56ae26b2b9a27f65cf7c2be4aaf141f760d36a0f9684319c4b9309639d2fd01e10097dea532707feeccb418d305cd012341255f777100d60d16fda107ba18e1c247a80ed5896003eb101189266576aaa95ff15e5076c0eb01489852d1047b55fce9b0235d3b43f0ac0e551f48a9c2fad4ac199272d1a1f83d094fd5f2b3d58f066441597843a918befddff38098b61016973170b724c3aa1b201fca3cb0260ff84df286c672379206cc485a56587c5ba51d8efbaa5070d2a68ca51997cdb40f360909a84cab286da279dd892401667295b6098de56e240d9891542ad9a400842575835dcd902473442bcf205e890694d0e2aae8c6e7b79be249733d45aed687ff8f7d1a4f623c3c5bed263126b3e04f2a1e5e1b4750651691623f3e8e78681ea0fd6a11c389e65ea37b220d08e214ed51031c862237c16409a418ac75a41788c5d95b1e3b83aa5b5079bc251282fc5809e4f19eb0472b22eac06faea5edfcca654fe4424e7bef7aaa840db4e8f88a0deb2951ca3792d2ed8bd16f0e06fafb280a1c0b4bea4cf0918498ec7bb4cf722f1aa94752b2af47766536d42bd7b93dc2acf2406fe6e28fd561ccd2db154b683f531fe22191c72fc73b7708e3a41a95fa7e4ee1085ad32cfe551e3ef61ed1ecb722b5380b2d86ac0293b342bb039e369bcf3e4ebdbe1e4620d9aded60a481f6e8435df16409770ec26a27c566741e2e7ca2080d74816a1694172deb6cfd80890f322d3f2f87c072aab10b387b044dcaf5393a765ef26027e216a746e3f4a1bd23560a1fc3de186cab7f318f757288f4abc9d717b312567d1a91b87e3f5f7d659399533120c57bccf4faae2fd11b2381579041ccd4bbe8707f115083722d4f990dc609c75ad5aab448cc64a086d2d44528859446c7e02376057c902460c85af260be5f7176ba2d29c1e1d134877f82280a8a5af6bb1967e11aaa87157f0a9baa7b2084cd37d3a29df92be9a56308f4c88e4c6e0169f700cb7b0f33b07e4760016630930ce36d9d5dc13ec1cad24d47125d0bb08974cd36d6136826d35eca1388d6fc43349553e4ebd448e45a586bbf782b69c4a002f88f948576537d11407a7cffe134334828e44cdc3b19e070779325ce78e5f06960eca219888e4aa4e112e6df4f10f49069c9c8c9ff78daa61f9ede80bd596f075964bd9ca122576e85534259b1cff21e1188a2bb1a98bf796fed74d974b350e944e1a091416032f8cbe361d796ab9ee2445700228d7bb98bec859f7b88b6a926fd624024cc55b8a5aa32d7c79581569d3561073e8b22a2fc1c1fc54f346a050c69c4ab48f159d239244e58d11ac6bd112e6e4459aad2cc501f1eac10a4dca853383b0982dea9752a10a4d2a06efae56aac21effa6485088be037f663b6c32a9941ddc9a1bc862580f03aa66603e4c966961e98efe3a2775cbdabd146ee01177459729791dd98032932df398b15c5d5797241c86c6f1e0caeb141b13a34f6f1b60059ca7a1ceba0406e92e6fa134b62a50d16e738c47aeecf64959c3be4ae7a262bea741332ca5a5e5869508bfea98e92819536876893aa188fd63aeb72259dc92dfb89c99ffb0a81d07aaa8cdccc0db11750d9436a78cc2f98de1b6da226a755be98d3dca44ce594a09307e0111070c37c4f355196b162ca0ef9957c6373f473428ead211fd861203dde969433f8996d0be86ba51030fa775c2dfb28c736c8928c2b5b9e0063d1fcfbfeba4a1a188bddccc35e143f27d7b3468401423c958ba3a2199dafbc5883542bb09f63a14fe5944783cf105f1c8e547e16ad891b7c34752541f2b47c81d284e1fbc9868868d5738cbde0ec8f44bf1668358409aa17f9e8c3316c7a124a76a96a19e310a6ae7413afeaef3b7a6aa2d5678805fd6c07e65d81026919c6eba5790ba96f7c9689c13c32450568ef21f5075246c410b592d22785717ce1e248d718aff701824f4cc91f3f3005cc3381683052e20ee0c24143137d26f1a0322c275429f4e20b59ad50b5c66253da9a2d30b21ab585a1a06d599a5026c095459ceb715807d185c0793826f9c98c0f53961059c4f5c80a95dbb7cbf7cb921b2daa4c5a28989e561eefcb3924921ec163dee4d8596974efe066f82eb268b547df6542de6857b3a07630a26851e0619d2d2a3b504846f259143470af13b366b156327db1c3c676f112de4b730ab393644bdff851800e78f628a91f46ba3f749dd0ca3dca16aa3b174d323879f9b3fc2200440e0bd4af9246a08241430790f46ae16a5a1e92305c274ffb192e3b2768ff611183d54164f4dd6dc3255dc83a4113f08bd56d0bb67c15e14f45988584ec08a95a42221b09428636e37c4544e3c0aeeef2ea08908866af7eb4b3539a2f13505000160a0c6fc9bd8b9754ec050fef04f12711b5408b82f4f71fb0bede1db0f5df02124225db434a04a342adf4a9c148034528af7a3395b5db083b438ef8bc273c918cd4cc06cf335efccda6ec686fc5091951a782d929d50df7fe0aab399808d83868b9691ade21f5f08067fff4cb69fd51f5f62d41b456279fc21b99e032914f4e5b6b00681736c3652e20edd4e36743b177f2fb604adff2a8b7606b7c37bb779a0d5e8506aded51277cce6d35c7337218b1a131ee880830dd0f7e2ea16c2d040363bf4abd147e928e31115c9612b05bcf1ed019902a1021aabf9be6642910c91c8afd0ea093efc2da70e4ce295d3d9aae32f2fbd842d38a03f8a90febc01ee6ee9e2890e489ae74afd26d6341eb23af3fd124ddcacd94dc8014b4ea5dc3bd3af564014cc5010a4c81475a304a69a639b2e26e11408e1fe37649c41216b95c5285b04ad91367e8535e9a7411ad2cf16b70c415a04501e04406e37abd5caf0e5787775d5e470d4c07cae3b83eecdb86c8e668245210a60e72d4b9b9516ba1252b7b4b29a50c2c04b50492044460b8d962b294638796b23f1d9c92910d5f8ecf5b64faa4a63abe1336eebc58d5312c3228ce307db1a322b52345cd8763c8d6cd7273c3605d2ba7a82d3031345e4734d0c54b9836349ed60409f2dd80b2a532a857c8657179a843d494026b16912439768e94a498e2032ccb1a25653cc8ac339a7af73945dd5a6a410aa65a321e2c9a3572541aee989d62096b49d4160c2829764a601a53d525b6a444a681120ce067034a8d6aef047941bda55758b8516cd7018a0820bd405e502d95d3ebea38c7dc7befbdf7ee7befbdf7debb498fe4792b0c43cd71dcbddce5baeedeee729c7efc277637c2dfdd9c1572c076ab75ce39e79c73d61db78a16df2ed20d7cacc3c7f947705fce79931da7415b49d6b5551681c312d16b84c34ff0e65fdb6ddf50becf670a3e3f26cb43e4e7dbd577a2124b849a3dc883067e1e3b7c06fadbe79fa33c74621c58e8bbd92b14f3f82a8cb44b109520eae17fdf975748c042277637da265060212be2e548584882cf1f4a30a2f7e87787e2ab724be46ed595ed5cd6ea793fdf2fc1ee1eb9b96dbc8d233020020a12ee51070e5297eb7e81b419d068cb403fe70882598ef7890272bc5a32d0fd71b419e8479b810430da0c3481cf683350cfd8d56f55cf6f693d7732b65c69d3f387fbdeebe955fc1e00eff328be426f14ae3cd4a3c58ab8ca43137cde8f1fc55f7d7ff61aef93d8e3fef24ae42676bf64cfe61ea12001df58d80aee73e32dbb75469ff122ddb27ebfebf6c678638c31c6786f12d575fa7d38f876ff5e36659688ef8fd071be02817996846224d8cfc0fd10be845e1e6271645b2d17c04317c024f21009cb7f04085644a68936da1e3bfe3ce310dad3c8d9681b0182ade03e0e310683da2e50042b82045bc17dd47a41450988328085b8e73dde779d36b25d0fd88f92e8341a88b7791ddee6a10902f01f6c3612f5e95ed93d9b813e90138c5ef73a901c46dd3d7ce35b77d4d635f738f901be79ff8d00182518735752d976ac93f5fb164e085d0a10b80b63b5586b4d04f50ff04debb7d65a6badedc81076f611dab12e87967b3b16ee317c8edb5faa20825cf7f03feefd1e51aef6956974bf3bfe20f87da11786a1082682ba876f9fd83ff039f004d78db8d76148a29fb7adf6f1728af734ef4b107511dfc2f0f1d3468e6f618881c2c7a1f723f283e3e7911e4972ad0253df5d79451435d96d592fb56cdfeff798c0dd6f190a2d1f348ebc7e47dbbd3c04029dd84c780b51b79c7e8b45e8ba7f806813a1170c6df8ee6dd7bded4b2c149ee0ba9187813c8f444374ef677cb4e19bf7e158e29be77da847fe20f4f0826f82ebe106de938f6fdef38cde475aec919bfb4d7a63267936a335f6388c310612f1f768d223c50c94df964b157f26c454222fad4aabfc24bcfd88f66da7b5d6bac437fd8f6fe51011e55dbf4f79bbf72cbafd3e5e11da9bc8757b17611da1b5de0609c4e0bbdb350948bfbda412f5a7b426f1b8210842649c3484ac30b1e8945ade9c37d69c60c2ca30322e74515acdb2ac27562793a9b34754f9e507931d5d4d669820324c19415664a15396bd3975ac3191c2ca15c8b0d0e55c5a4fa42c73062b73cdd4591555b6f9610ed9710269fa0222a31403b2a28c43e78cf2c6b4b3c65c0a3bb1c89c5bba2c59cd3a594244cf2a86e84d1931726209d2425aa6b9518449c80f1866941f2a3a6ab59c4e743afa687cc0e9a8f7d85b7db0e9f975ce393ffa5f1524f9391231d6dcbbd8bb58c20f3e2888488f97b4e1db2d71ee11a5e31c1a608c3df38ec839b121eaa9728ef875bbf628d2d13228498fa7a013c49e6ed71e2d9ee86438a12d3dab3dcc657d47346b7e33ae5dd21bba1a6c234f705e7c6994bc304c1b8b8c6ecb05f70425493f2149ca4f3e929e9c9e5c30d5e968108f0186a59903c264703131422d30c0128e38eb7655b34c3022d8edaa3e29c7881c1590bef7de5bcdd1f7de7bab487defbdb7ee7befbd5da82a3c329dd3779ba4b116246c7f9b75bba6471d0de242939e59d32f4944bce69366999951a56f0afa0eb3775a15a6db7b9b7044aedb359deaa878010c463a6aaf4a17d220671a1c5e3ad8ed9aee4895d6e81547946edfd22efa0344bc77d49df3e0ce67b7732be23e7e7cffdea8d385192ebe19336c63c49af8c227436d0409adb97c46b42d6d794b2b74f87c8c1197a2bca5a90e4463bc1b51bcac1b54483792b4b801f5e2c68d8e06b5f0f91144250d4ca6167177bbde8011c2b375bb3ab9a985d91ead4fab3c34c2c94c93e894546aa7ab8ede92e06e55e2b12645753bc33f029f6874d6da090cd00948d3e78423c9fbf34aecba5d9d4e7032814647c68d21e9b016b98c0b0ce6c56a830b8b527fb7ab8d25369e3a1a9414861ee981a0c816d97ef3f1fefb141ad82fcbed53963ea8cd7679e79d7bd1d64267c491b6049c82c379468803080e292c1daf37ca3abe29ee1d21b438b4e5db95894788fbf5e8f839b6256e125e10fa2c739a39bf32d04ac29a4202b6e6cdf764270693252ea06c71f5f8ce385e651717738a296b08c881254ded14735dc408eaa25e1919a4564c4dc3a8014889284855b05187522c4b48eaa849ee8e1bc6b3a19454db8205c3c1ab77502ca80490200503833a80d404b034d7cb8519ead815ee9451a9a8612a990a7aecc39d210b506abf84522ba64c256ba18e72d4a80648718f39aa1db3e502f5e29820ad604cb53180e9edf249d9a8792cc89cb50d99d597d60a2a6f9ccecca064692aac779f4ae4c251ad0c168bbd4241abebbaced35dd7755fd486269ede16aaac42c060e7a83d29b65bca2835516281052665c112302739e248058132c389f8a550290d466e1515d436ea65ba5a0048b5a822522ebb1620b556ee8f9b23eb264149ed1722aaa563ed4cd951cfd4f49c4c714185a6698cd58b1a646ec8daa430f6a481d2870291187cac52542f95c706101ace5c61e1451c0f49779084c0d0a15465e9c5c7a3882d733ad262c5c6ad218d8d33e389ca458daa0101291dd562add852532417dea835d404a40cf849dda8172aed62e174b68ce5f25551b9232a1910690a435d40fae252dd98a280d49eb966ec162faa947a82982f2ba89c7d43e3aa4d962b620ad64b998aa957c9a75c2a0669932f27778935134745a33269407a465d7339109544d5431d33234582151567021f32c9d5338d36abc16bb5d176cef7f77d7d9caca3dd1e8dc4f0fbf6f3af8b01fecdc7be1073b1deedef23512ed6bbff3eb475d0125ffef2177e1cbafcd936e635cebfae0538a43d1ebb1987dcf1ecfb6846ea97049fe7debb4923f03fde7d75923adae3e78f7148238dbe8b79fe8e3c648ff7618d8bc386a5b22872cfc170520f49daeffdddf79c447112d8c5e08624a771fbfbee3112ed3918edb9d906342e36d33c0c434ea2256c1ceccb56a48b499913ae1ed4edeac4a93319eb04e876a5aa92eabc73785cd613d0ed5a75d5ab98faaddbd5c9585fab9e7ad8efeb9987d43d67c22530ed764878890c438fc387e1078220f8f174ff7d1b7848a30d76e6c1d7dd0f2ff60d98c90379c94b8268090ec48eec111f7c8ea8430d63fc17ecbe0fe5c0a78d7c56c4e12f69c401fcda7ff050c2362bc26ff4911cfec335b20389ef73b8da206ed830a2624f41c2fd0e77e808308f8e720f8e46348c91b010f7e083b84647b98ef6f839f0b90f3153bf1f69749ff6dd73435a5f70dc20d246609c742dc0bf6745b4e7e1c2bfdcffec5e6ff6dd8cecd97f5f3ffa5ddbfae59f4112bd9828ebb759db7a8797bee78f912c67f2f64645b07431e0b8cff340d2d68dee77256c1d7cf0f33cd2ebbbd31d6eedc90538eb7c810ca93026304768f44841a34d19171634908ec068692e9ecf88075249894574cd56b3f9d46c3eb57bbf8bd4f8866b35dc73af61cd599c35a737f6b85c94f5c7e12e0467deb6dfac88dbbc410231bef0cd52e9e879f6806b6ff7afcd1f86195fab937c592d1f58c00e392067120dd1b32663b57c80810c3249f4c105ae4fad5f60eb76a552d173b7ebd49d8edaba9138a6983656c44e15c898575c4c19acd4b83a51709203897914e4fcc1e36cd1f4642a46c966ca04aa321e317c71a149199386972b2b1d2a389e9460a4cea421e792148a8df2ce922433c6921527151ace2937659d31162d9874c098286439a3b44e2556504b4a32444c1c4f306e94644a964e274a5adca8b3e38da9448dd699f3842e2c2c945db64c27294c54275754171fa5971cab14d398d40b323b526630636063b2099361cc59644b1903d709539e9a984a47b80029b9ec9873c25712182a2439a2418eb9028616684a3b5e3eba8cb9a202cb845165ea48726a0939b7502052c374834446161215250b73cc3264e6549a31336bbe9461b09459b24c3128a6172536a04a392a9393f9e68892094758bc40e7cc92a19ce185b0af7346981e2baca0c2952855533514c9d1a30987d9c6c80c73cb888bb34a0d53e09867d69c5ec0ce3062826831adaa983f5238bb989c3b8c946a7e9829e838d7281a27551452963b65571c934c1b2a622712325e5c4a2f2b669c2b169c94659054097226e1614a3599358ac46051c484d24dd90915c329c305534e1913062fe78bd50c9552cc93128b54902126572a65a385242e44569c44e894606fcc74cdf91476a640c6842e2692d5dc92559eb13a9ba6d2a872cb8f53cb8e534a9369064a4612d48af30b9d236f4c1e6b4c356150c81ce972fa58cf155969ac664ca189325ffc30a376946f9ace2143649c47435680d129d737e69435a78ab0b2063266932e40d6b34b960b2bf38529538d5ae1c7696587dae4243f4e7e987c80a8c95a856bdd0263b1d0d0306709151d585a58b1d3bb2b481b3e261b681233e346891539707ea8aa74f50fddae56c6ac7881096d8971febcbd8df6e3f7f637a08797a33f4d8888f6d1105d7f08fd3f5222ca3bcad9ac08b1e641022ba27bdd79bb7b7ba7db5957ea2c4773dc7d8e2351109d7b5ce54db140b6a33c1c6c495920dbb9f67e868820b407fa7ded71cd41f4dbe44748dfe007c6f847fd51c33cdd27f1fe67027f241a42477bee7fdf9d6d0016852468ff7978c73dfe3489dfdbffdef6d8e7fafddd63490ecabaeea8b6f7ef87e0f8b324826f9f7f09de3767c56e51e0dbf7def79bec01490eb80e3e387eb76be11bf7370abe71fff3424483b8a274ef7ab95dd70b0b4971122d3bf7da7edc7bce397f110b81cfbf8685681cec42795ce468960ff13cf7e16c24a2719e3128037ccb00df46e01bf761d005f8c6edd90f92a81ff5c09f8ddff3d1668085f88320087e5f37dbc00b85fcf4c03b70ac5a48abd6d19a45b666a9c96b96d80ce1c534f09ae5d531fe0a74fa27454b1b020b5d9bde3a440adf876f1094acaa6e572a571fba5da940755ea2b3d7de1abee1dbdff2253bc042f91d806f1dd827816fb8037c2b31fb6112730799ab5d7ecbe8ad13fd2889fb73521617c6a2ea76c502d209d0ed7a15a7866e87a0c042f9f3736f9f0a0eac322c635dc7bf677863756169f5d0e3fbbbdf5dd73739c47b3b234bb06970446bee2d079cfe0c01dcf59fe8408a6efb2551a859af92ba6ed72b16eb943abd76d7296c7a8d45687128a475c618e07ebbd1bdb7a85b2bc4e9fc1c89478db918050a3359ad354e42c24b988953f2e3e20786fe8bd729582cce22da758a57ff7e73c0fd7ef16230c2fdb097685729509dcba1c7b9abb5fe414134ea7e9844ef4760f0e3442b8213b1d00898f3f837725db422ac9037fbfece8a7a3e1202d7c37d7fe8c1e6baee76e3a30e827ce78e09af5f5b417702f39d779e79a08f8eaebd75af671ce4ced99bf1063f4ca27e0f7bbfc5aa865552c823d67ae636db39e73fe33cfcca21c9f1addb32c4fcfb393edac09f18225a76fd177cad6711b07746e2ce22607b4f7e23eebdcf640825a2c697bb1ad3f6af50b8ba7e72d5f58b21947caf6745dc7b1f6e7c310dfc703fe9f191ebae8458a8e73ba25c7794fbdb26c41b6b9eec79de17d9ee911cf71ef95fce26f6a8dfce52f4ae04ef9a0ccde42f7829b43c8fb319ed43da87236aebe0f3318fb40968fd3492f6fa692447a37d91ed3492f61dedbba7911dfcef6763789fa7e8a0ad7b394578b19787590d2ed6b90fadf7b6cf68b4bdf7c7f7fe381817c342dffe74fe301431195efcfbdbf8b7096c54fb123a7efb7d485a7c1bbbbb43c8bfe6c183904471afbd07b17e9fd7c88c33e65f7bfc18e37bc99edaeffd852117db2f861e440f3b7361298e416c72ff8741e4cf5c1c6c079090a8948bd9905ae910d58002a3160000200c0a868322811c47514c5fa6071480096ab640543c2a12cdc4388a822888611004012000400000001884011884813086e43c14707006cd631208b00cb74e8cf551aa25c83f663275e012b8a9abd13d03b7a87e97343724af1041e00ee9adff81df639198452186d0c319d5e919cbb9f9b207e4933a7053453d43201c2f4e5ab9855ef860a71eaf3fea4e85235430ab06308040d065c7d60cfa0046735b7c0b64c5f43efc6c169ef2206031aeb7c7939544188b01e2668ca5a8aa6259ed238f28c41d8ee844ecf98be0822c8fa09b3b547999b89d5067a88948d336038fca92cbbf07c4e9f807b37247d83b51bf584980517799a4330105324c6539dca301874ca7ff48acec0c1ed7866d7e4ec27246a50680a3c38b1f7d3137517db935034e345336f1da6a6c8ae043deb5fe7e2fefa89a48e0ba7c9c94f3e13c81439b8b1e3002696479f8d3aa452548e103ed632c0ee70b582f9f7a196730ba7eadf2fafbac8b16304ee9ab1799d7ec28bc1fe345a709d261c89de6d5c2585e5cdfc490a39402f24a45fadab8a99aaa0002d5c3406359ff93aef94083c16176a8f698ed34fc4f0b7639f124809a2b2f3aa9f4e8172e54c4953d6f6de3a1ed5e4984ea1d8802cfb41536d2bb9e061872db1e92a1540be6930c7b22f8765b14c06fe644635b5ed846309478ac7c92107b542ae0c64bb73af8c6435f9e626f10b13597da1f2b53500cf031a28b22d4d4bbe5882d8c563174b460a24d0ac2b2db32640a56a8f0ef70271842a3f5bb98bb46391d78fb694aff0b4ef71f9ddc64c18d018388175b8342bc0d202ded34ec93e8b696bf863cd9d45d898bda54fcf0d9a70ecf12cba54595ab8b30bfb1a93d5e86ace4c789badf69eaeef40cc5b0b19f8db9f8c37b71ea86f258b77dc5f7f21f9f3c0e869c9ae3b15277aaf621849b030f43c1f957c0ad23dc28013a2856b062a03ebb56860268ea49d95dd88ced75595aa98fca8d52686137ca2aa8aa3abedd0ef26229cbe39f6150f1e0a6a152a4cca1ba0d68e4f8e538a0312c4378f520da4d861ea2cdb5ca2dad74147dbb52d6efd737b4201b17d810db4bb47ddcd8aa41fc7b973fc3f5131d7115bedfd6edbe453279faf44bcb4a96cabced0c7d5105b516ebde73a8cb4abd7d8e1097176e6e0892f40f3b34a3340246f70b18c10bb203c21d9d2059305bee003888b618ba2b824cf4d68c4de4879e14a001b67dfc25fc20fd72e01adc5ce84d2b753325f5d02fff28369592e1e69f6cf4bb05b0a2cacc188887aa94403101477467ab177e50ed95c9b9777858df388f953602bf9d0fd7552c4201cef3b21dda4c00cc68840a50326f8fd2f17bff19834ff2034068d5e6571fe393e220cd40e334e1d8e17cb15afb3f97d34328ea4c12c3988541a99eb8cd4ff22169e47587cda5d6cc8a71762eeda99be229e6e6fa6042cb65a2e52ec075aa4bb71a88f13fa4846111fdeaa76eb3a32645abe804d4f1bd330e436cf74b3b09f9d9554feccf3f58e053772a4824c1612bb4fbf87f37843773a62361b7eb0c111c1dff83be0dcaf5266b5fd128d7ab803ce63f3fcfcce92893dd7543bca171854690a84544300d08f4164091021740698038609ca2938ed784e22892c4f6a4771aaea1047b325132c5fceb5b20973bb1ca0083de9bb73dfc96c3c212edc331c4448cf5a23c628596e95c6c0082d85a7d50f796aead775c357b5897f25de6ebfffad1801b7e2ccea383de047cc15e3dca31cbe2d719bc13415afb4a0f747e9f1a0b95ed8387f4011de7730d14a2f65bc38700dbe76ba8de91703c9dd9990e7b9216772f2bed66febfe95a393d49e3cdea932b7df679f8b39330b91a342ad5be3db0342bf439e887a1e7a3cc5d204c653015b7e37000eafb7da5abe1a90e608313aa0666c89a4ee6116905c70384fccbfe58827878c31269fff5643bf00475b57e32aea5b1257a910aa1ab91acda6ca6abd92aed98e37f7e92751eedb4db40d0be8351110c988e2cb20f5872fca93c016221b76c02dc61a6ce170d959b27323fbe77780ad7c529db89dd8a6402a2109fb925ddd7137b3e3f284d19a37d7cd40326fb1af3276d4d945bf2dcdcba5a43929c031d48632e827c6a0eba3cd66698bfe2d92b769b0dac26b4e871cab1834a3b144d58c71e9084b83e9e1f5c26672024e70f44f5e08d00524266083c5f7e040169cb88a60df5dfbe902d2e8472ee9f6e275a75cb08cae1150b97f166abb8ab092f239627dfd9b7bb57373755a5584f4bed566c46edaad73b6057f89976ea5f3f7f83a557387530704c51103d38f517b59e37b9aacb3ece2d4e8081fd4231fce6019e183caef11ffff07fe8e96af3e6b40ba8202363b7b59738c13908f9f77ff763fcab7f9ea7ebcfdf6b5bdc23b6c24f44288a6c03b42312c9037050ea56c6de46f5d00e5f038df552ed2c309e8614747212f60c7062a6565d47ab0aea5573742abcec1f8af93df20a8500586c8d8628efd361e2dd87dcbb1841001ea495a994bc5b9ad00448817b540d520362704256d62f0389a8af3ec5d4b970519e41eea0610afa92a2c898166d06fe6619df1003a07dd0bfacb8310d66ec15753100f3d0126397ee40dd37298f74d1f853e7d686ca4e62dcb7c668b04d902d66c14a15bc9131fbb978db0c443ab35c0c80440b139cf452211a6df0ce359497a666c796d780d24920134ea5a3e57ac8d797957f97cced47a2f7b0337c36243c661143a97be0daafd50dc8baad670815d05f05fded1f9511aa43c3a4171234269f1a50f9e0edaf50da8250f891573111c0f855666bdce9a4c43473be6c909a6f8d5551dbacec5d438b12ea700f0e4a04c0e10b1aaffa8eb012ab9f5b36e4b4cb5c3d89b2be4c337ce89a01b383fb753312e2ce2022ca0469ab44e08616d18968736ddc31775f9be2efec9ed70e450ada712882817b9c9348bae8dcd2131f550e1e6a46872de294021228b3399dc587a698e096ab2f1bfe7cd570be252bcf0db2b93565d022e484974346636f339f1f11132d956d396e8b363f74c4eb808863795e0d62925e6c6c20e6bfc3596277a05168192c831e03494226cc87397a1a3b2b35f8b9c5e0096366ce6a66eb4b74c420cfde9dcf93e7e652570a0f579776703e1f9d359b048d56f86beb3ea5483b872198630e41f018eb507f3b0dea31a19675e5bcea480c2ba498ea3fee3aeac0fc4c961023630419afc34227902c8a1582b77c12ebd19859233cb938cc04f95398f4c6086ec8ecfe4d3d40ee99ec9cb6d163b78d20b6443fdbf7b24fb18c1415294670385e4a96e34aa7ae17eae5a0e41a36dceb0c943795c2ce69d468d30172a9b43e90ff55166ae0c1a29e9f3b0c1dab1f354965b4befc3e911ba10111ea9d669aece52b88d934af9e2bf125cc643e2d4a55619df1691bf500896b1e21225d747540dd4a8cd2731d2d727dd624026105620463a0a5633734383a0c7eee3259fc7a28ac061076f450fac23489e2a2c7558db707228bbb17d6354854e236747f70487397779b812806f28ba923a341d74235704eae45b12113ce71035c0d2cca7918929982e57e8490121e425557b027f62a49a741bbb1248f0a1620a88f881d5724ca06fdd273a5b451647f8120f1104269d6baa4c46bc02d05c3363d900631180e757e4b90e7d27e6770d05b62c1c0b1b0d400cd724a6c1c20f3e41cc94d3364bcaaebe20b9b7cefd328cd71d7609dfc97e2b3a93a6fff969514ebed2ac6e47d996eec9da451bd9447c45e6e04d3113b0657c4f843748cb81939b75206ba1a78a80e62506d130780a26b1d529bfea0bd652b91acea4cf8c31ea690f6ab73e1959ee10f20a53f5ff262f1eaa2ecab36c465c0942e004095c0b3fadc2ab24e3d57371f0a56e9480ab98a22d9e1147708c80298e08edc2f8f98ff18e432e504838d76ecb00e2ad4e04ff660437a83c14ccd5f5f77f255d3c5a1534382b48bb0f2c6a9e3de9adbd516feed3f7b5b4bed68d4a562661f7cb52281e8dd896a6af3c703703821cf5618b3ba183756401205d488616fef44ee8ea611f9d73a7bff6c206fe165401853c4dfa6b50df2e629255db7e43f3ba08875e9be04e055b2025d490ce4e91795c1b160be7e64c0330e765d23098025baf6aa5e448f5fbd0e7f804f6b6e37c3bc341bd8e7a0bedb8b72e215bc3ea9e2e874aa0770b5add15b4d4d575508b599763b9cb369eaabdf13faf6af7518b7e08771157f7eb79807775e9315a34769ea775df72ecdd981199db3ecf5b1a734d35d2776f9d01fb6e69e2b5e0c7ff29cc68c0a996e7a074cea4b1099fd23ccc1adfa10a03578b5e3a242fc5f58ba930fc9540db68fb457a52ac6ed3ece421ffbcffb71bc0cfa6deec8a4316ca2e851afa6ba6401ea14376a1a9c953a9c9572cfa5c03d37eca088a2f53ce31c1b91d18013ed4b152e525c7a321959f52037bf22b09eab90928dbab802b6a1a13b63c62cd68b4a67eda55d181805e2a1274719ba474fb16c93250c64a9e21b77f48d388dfc070d59fa87470ee71fa059e5d388baff6fd2f67aceaa64f1e8ec59b5ff3a16e205da4bb2aec28799ba2a8a27b06d8a6a20a29451fe6aab1944e643956e670b91a8133e381415c714b3a076442657e96243b07bd7be8da7564b9fd400a254de31a0fe1de13e29e686cdf1338d794991e9182f9d6db73181e0fabe5179ba94ab91978ec0cfd933d491b7c706c960cfea2d8e3eca580a0f8ac484c9c0adc75d7437c57ff9bb9077a025a6b41bfc82d4a3d691f0f7cc0b0e7c61b6a6cb9806c97ebcbdb3d08d6a14e1bb5ae429e893853ef2905075bc6eca6d81243889fd6e2a445e505aac942ca99f31b560036939e425da33545f424b1f9351802308e200386eb0eeace09027ccc27be6f2c51e5e23e93fb87b761a66846ea91087d54103a9c456e45142778a8cd250258e3fca59c62c7350d8cb2edb12f84097620642d1d341badd5eb100aad7593b427a926364887bfdf66a5e1af6ead997fbec08e96f14eec1bfa061f791b371f3630dbec7eb4816919a88ed3be009800fd8d50b9d8792043c3a3498d6b46aade260bef8e750b7952078b77b30cbe0beceb43f9140fc3e5e982a99109cfedec7ebec3d97f9756d7df2b874e0fc6273e0f99f230971e87a067679c7d7142af347037417538db9cfb1ec383272a79398e7c160e1b80f2cd44f9e2674bed038ff4e46c9cad4d82f455d08cdf118348364cb19fdb73bba9a86af4d18fa06400e60731c079e1571774fdf22e63ccc06c4e6786c9a63a0daf5a9b50f1cf205a76399d0388449733c751f9be322a15e20e4e21d60c24cbf8e5a2090e3af0ec5f38ddfc1730effe2421635640a0d512440f659f5b9c0c39094e0e659aada541876bf8c91e3c7ddbd263c747ac97b539d0a9939261006457e455b65d08c5f8dbdebdf785b21f58e2d871172e7e25e388814ae883d742d4dcdf529dfad6d53703372f8df186d94f5e74019521fcfb474f837b885e827de63948410bd54b20d4b23377bbe110241175149002a057b677bed36e929507053c6ffb79c6f904669ce5bfca37088e89edff4bc926604709039e24e22800b53b16232bd210a91ddf8be30366a446821e8bea8b4ab4336e0c6e811b90079a89d382703bc7261b21217e239a66d177046c9ec8cb4ac09aef39ab4f40b1f0b855ec3713f3475530b82d106ee1d7e6efc336fb2d749a8e9ad20b130c04bb10e7b3feb356a5cdea3c6b3cf3ad76429712933c391edffab82ac3f155e89c12220796e7b018d34fed7bd7727a1dd60991d8feccd171a0e7494c69f6df957b0f35bcabd5e5fb2ceb9b2a9b66b65b72a1fafba4138b12d96aea14cae68d96e8ec823331c72b6209a4e0a57f7c88bbcd9c2fbd0e8b472d2d2822e34e8f43d5ca2eaabdf882c275029086468a87201373ba1afbfe792103e100be01d9180b2d88e5eb848ef7e263b3bbeb45b876af6616b316d220687605938b330aa13ed8bbf74c538173095178c2f39878ff6dd1309f022fa0b83c16039b7a504ff8a3f6778b0e087890715e131a45509c82156c00aa579a08542e51311467d087c6e1c262077b5919e87b810214459f4723c17facefb1909bfa2210ebd5f8541d22c6cfe0b29077842c8a4f10eadd0bdbcc108b1f7bb4998486e1557b64324837cf7117a1d8974d8bb92ba005ff114c117301c0223070dcb4171476fab169e775edb0b3149ead75b96da62e569701501f2d46e805f7ab1def75b9e95e17ff580b26c1bb483856cb7ec05d6980d70cc1af132fe50771bc32a812334058ec10a5177ec2b24265610094e2e0be8370e45d7b40ffaa30ce661fa0a6f8d36f64d6ee88ed6a65ac99ebc2969f8181e784b7c838ea50ca605eda25cd304e95236988a8bfc8485d331a290f48043c0c146f155de621be0083e24296cb4f640f9e64154917ec602cd87daa46bb41b7fd15eed4bdd54313b0f77b15e683ed38eba5096692177338696face47d192beaf24d14e4202334e734162b102917072b240bfe1206d162bf5bb9052fc0ae9403f28d7b4d09b9ace44eb7d920287e03199c0989933e857ff1526d775e41f0fa11ba203fef35ce660b53370dbabff708b5d33d3b1499a11122c95f43f87e78bda1d7f6dafedbb6e56313d2f4c345dcb45a7addc9a84267aefede8af1e0e7f1c5fcc8d32e146d6affde540e9d6a8cd752bd6db42fbd7daae22273f0edde7b6e97ee7abe4a796b64ee765172e5a30ed78ba23ebef7d8affaf87fe59b6f9aa58585c6fed79e90f1b976f7b9c908b6b53b51bf5f6d0fe63242dabf9cf6ada9ac88b3f54b4745ad3bdb95d521608a7d9a90da6f9bd5f454eae52f81ca99d53767ec09dbba0ec6568d692f248c983695d2725dbefa070b9755046c758dfe0bc7968168b283189d3466c7d75b951101cd3e02994704aa4bcc406a34eb30f0681342ad2bde5436dcbf9f7b539ae20b53383a4214c74943c3eb68a9dff2f4ca42b3ff5867071e4cdc57f707d70ba7074934fae186b2ed5c24420ff40eba751a4ab68c64f4a71a14a1a7b7a5d700c2aed4345bdb0bceb51489f5e1c6bdeb712a9ef2a93c26e293c6874e99643382cda7c20d7d6ae67a06de530f326dd0d4fe6b8457f235ca04136874ac6968d9fa8e1ccd83f2accd8a640cb0ba0e57b4b605160bc10396bf1ad6b7198fc66ba0a8b7eb11e4ef7037bbac79958766f3cb25743cc0847f8a7eb28b5718f5626dac4a618a11da2209c3ce8b0799aeda921fc4c2512c69dac1f773687791e63c1492786d23aa543fd294ca792ea345648fb6053db1683a42507579e3cd76f4cf28b4302f0f8cf077464128b53ac13c1f695a4403d1651f474625ffd98b225896282df2895e3314430999f83227d5bf9782f95fbf1a803106bea982faa8abb6901056b4f6b8c34c8fc6869b3044c91f1c484245104fed13559f233ee89f6b7eead7c5de3d7214397b808a76178a417e8a7a4fd1c94398b9a389c7fcaaa2c5c512626433e3f1984d21934015e41bea882b330370e880cef66cc0de49958a4822853d7977a2128026266a4f2ae7acfac933f7aedecaa8b266d04660ab4f993e8c93e7c9d7877701af180502ccb0a857362fccf151946097c85b0083f0f62b92e7bdfb3a660dcc8423b520d7b18b09e6ffb4078a14b2113e23e8b72981fba4780b965438478bc58ba12a263836282ece9412154dec6adb17f475d0cba8e55304d52fe913b14335947fc74b9e64b7758074e7469b836b023d9d86393c99a139d0c5d4ab70f6490d4affb52aee0347824de2ea732a7c1c2088a2b89427711d15e029c968024ae463d667d2424ec3e4cccbf735fea4348d84b60e1f849671203f38fc3afddecbd2ded619e2c3aaff276a99f29eed81dbc5c514582a8c3bcc9a935142171b6720af821a0474b506b9d2b512f43754accef6e6d28cb337943bdb19c9295d5ebf4cbcce920c03ccdaad787f3a1fabb2b8e6b4c6e8646bed149e9bc109bae91ff835cf8daf28ed8f0914b9aafa2c41a45b13b3a68bf2df295c5a12bebd51114e77b4c31ba487277cbc97044e5c7c7946859632f5ba50e0a3a1a1af2d079be743d675111f541814bb326ee7ccd4b443d938c590cf92c9a4cd9006c85cd78dd92d207830729f0947df59d9cd3efb91a0103ea80e1ba88f8101643fcc28226e7825dd294e0148f601c6c2b1168d3b8334bffe92887b83fd9b4a9912906b1b52346f48335ba455c6a9bae13df2be982e892ab70a4bbbddb0fe1d348b72888119db1056e19624d2226c84c0edd94960e068334f15c0d9b03daa2e8850a21f6e4b8892d8d9e49beae0a6f11f4e697f73bead40c59b663dc6fb38d6d6300f437005b548f7682770c0ae5a9eb4c1b4ee58add8d4e210daa191d3c0d655db2cc544cbff5aa1ad7e31939ca082562a351f0921a42e1e4fdb4976e9f30c5030d49a55e587f08d5335b479f95cc1508e57c389c0a161c505d3dec8b3bdf2a6a305eda8a3a481c26ef29fc21647effc950d22cee79717f6ee797e32e7d1774738ea09e3acb46b3271afbe8868aa294a6cb3bc74cc0ef004afb392749f76f93e5a5ba2b17c5bef559883ac5b22074f5ce7e832902ed1e85e219e438a26e9129594c64c32ed49dbaa56b565d4fd30ec3441874a16ff87122502401fce198c6f9eb9a1d63292a6839bb6c920bd9870ac24537686cd57b8ae0a92c34a3f42a9d19b484e63b5581020db483e7c509aef40bbfb8d1aa8c47cc83a1d284a1068dbfd82ed65b8121a4b69de93f5766752150f38f29097cb8920c18a66e81aae065bbe007289aa285327b5509d552dba839f0b77d8ce417266017f26f6fcaabfa0f1efd1b923a9e5df0a10ec142351a6993557f941e4819a124c19da1a03f94d5540914fc715ae7a1c272ea4c58cf781245359bcf2a8c31336d65c718d541461cbeae1dec5cadf0d5da79cd6ae35d6cbb95525cab54352ae4231b9085526f4d862194e62f386c2972c972bc9c2b14aa807f14146ee87d996c82d92cfeb0184d41791e6409324d03f79be80ceeefd66ec27c394eb82e3e3a3b5e5b412a97865a78897981393b576f489b7931bc1a9c1fb3a3173d0c6e97d315dfd83aaf350fd53b643f5fb2eaae2f0b97382fcba469376955f6d79c10192e0d4474fb6a11eb9577d80ebc4b060950ef9549bc4d0e8457c1e0903f77f5905c8783230a1d6573b44348887014a2a34922673ec285f2bdb9a5be73185a320b16e1d2129b0c82a7d9c9130ee0743415c668bda5f98ed38868ad818c7468d822b7e3ed78624791c137534bb1c9c5922324c705c792235d216c3916e2454635b47844388e1cc7331dc809d0c18f88f914a777d737c7f9064c69758d164e008463448e262c34da71da8e965332429ee629be0e271d5b38be8e5ac7dc0e460e48c7553b48e8d26052d09fd1f2bba4e88f9657b86ad822c7e150cb941cc7070ee23566b91e0711225a63121c47d962340c09701d4588684ca5f98eb245b44dd2ef98624721795a0e922122b426c9ef3862c769789a2072a443579b24b38e8b38cce128440c8d478eef284b84b689a4c34124318d29719e637ea2b46916b81dda0c92ef6d79abc643b2e7686ce00d0383681ab70f970639b9c00186e3d2b1d0f15f91933a908a9427c0fb88f540ae62f0358444ac1d017110714df3447e1de70e9a1c5f076d8ecb71403cc530419a54d28c89591f7fafafbfdabf8e1927b1543b421d173860b1a3c88bb6c862c8141a4952a8c52700e620924f6361297b94268c6484439b29f939e6c9614811ad19c9a96522b8399e1d0870e43a6cab630713455b49d68e0c71878830c209118e4d474fc7d79dfc72066c895b1ded408249ad1d2744cef368a9b3a5c0f521142e1d04dcbc34fba053339065d911eab874fc655746e40df517281134d64fb1790ec04a6c2af7169d52db4f02b2748074b0742c3a5c1d2338983b3672f81d57db41024f8341316404ad59f21d27e6282b4fc3a0983582c69c741d57ec3024e047f052607797e56ae1b446d1ef784207891c4d840a21a2346092215cb42c091c47211e689c2d2438dabb244c6bb0615aae87c9691fc56f8e33476977f9f72f61c741cd11bb8e5573d19208a53a0af9d1b24be038c85ea708e0cd8ae2320bcd9406d352f69c26de64c48fb65f3a398a3b721ddf70203b0a4d3559e308c901ac1d244b9a9428b822a37dca5f4773c7b6a37dee85623f43e2045d498006b275403b2a3aea6ad365d6b1e0e8ec18cdf1668eb25bda971492441a0c72610e22389a09146445699349463a699882efe8ee28ce8187e39a0e12d034582d6515344369730e222fda224a1114da722972686ce8637d33d21390dd7c1281da7c078587d5038e7f01710a07fd03bdccb392e80c8b9b3dd6a303f31e8de0401350aada3f5c451faa98a0d9d28f05ec056444370d5b283f1210f6635cb4273da54d8b9c43956c8cf68ff976bbb4899627b22c72803b2e7050743c38c4b27beb666a9773551105d9113652a33dcd0c0b49334d3a99c1b18403b89c653b8fc14bdca18b8c888b5c45adfd9deee05c911146c71a8a53140163d619653d3d7f64169900f469831f8687a808c7489a8601c4b4705a360a092e0d3bc1e7f0c851ecc875548bdba25b0353e873c486e36dfa201fce41680b0faf7af8502130df5eccb7297e218148db9bf41d53ec3024879643324284c654f80e0539f2b5816484e3aec30e07116369bc49df71c511124c0631a425f92c638a00e43fe2dc4121c6daa17302abfe6dac1f5d884121ac68de61fe65640c6f9e7a7d428f7e34ad2860204d0c751cbcf8631f200bfcb1ae85ebb7bb7aac72d78d04ff15a69327bb08e09aabf070d1ea591f1d7939048e12a576d5081e11e34e83946330f1f62f65205592b967f770225a796f5d3a8ca62e4a1c7220bfad05063472eb67482af331f24ce348321bdabc61a61a5a02665f16b33dca11701ee0fad44a790965fb6b8b45f0d8a884591bd7f8c827ee5c2939491a370a0e6ccbb1583a311449fb200d9396642c51f45a970fdb174e7c3647a69b2e2758c4b25abad7be45eb7d0331780c1a1ca40e2b54b4371da6cf0f5262d3d09e8ef09c3c851f5019a4b51fa09200a867407f81fe0deb3e333aff8bb87ede0c4f7b9be13c64435208190c87066b60c1521745ccedf56e5acb9a31a40f8b6d3495391cb638b77bf32ba342213d13c8d4a261acaba6e2a909b0a69887dfe21e854cfabbaea97a982fc4f9886b7ec8fddf2012dc886bb4736796eb6ce917f1a32d8db553a3b134d0b77ce68591930551c8ab4111740a351c08f4f159bcfc9ee2e7012621c924443d0dc11a87d42c57fea5e3e27cd42b79f43a64db05cad4a015bcdcaa4416b6084804398a1a5a75dd394b2b6d87d6bbd4f92a4a7bdd4003b9974097c0d6695e6d0384e46e2bf5783ce24c278b5273ad182df7772ae005f5b070278a445bcce3540a27181ead62d23187390f72db726611b766f338e3d06aba6008b5737512aab2127dc966e630eeb126f162165817772d61ac2bc4f03855ac605e7e5fee65f123340c0e5e962ea6c2b8f2a6bf845ca609c0275927ef40b1b29d295bf09f4d31d743cd4c54a4c00d2ea81c4017c377a5ec9a7a418f21f910f16a171cfabacc3c2150445791faeab7ac48100cd53b8ed6391eae68855b72ad86d9e55924b5032e43e8771332dab3020a9a3d5e3169a284adb4cc89db488110346c74622e6d93c7048d418bb2faddaa80f837f7a8b368d263e798d0b01a69e10c14d7492e736a0514a8eb3bfd82bef5c7255180109c1d0d7f0a7860e560c38024dc8f055c9d91ea36815ed54de96402872795fc53f873bca145329e3a076cab659b2e1380bcc97835f03f0f45cd7505cded44a12284e688ebf0dad21f5718ac5d74733e0a534b14715984bb2893a7d40e9244e9a0ef61e6c8eb1668cab103d191cf816c2468d4170a0b5a53ec386a23688fac34c4d6ab521f5faa58a85e590da38d9847860d24509a9a202ddedfc5e7567c20361b5abccb9696e13a7197c3144a3d69c380f7a7d7531681d48403e2e3f55d3922ac79174144b1aaa3c27d4af94baa1660d5227be921917551306a0c07b6578ee6a4863b4f17965226a5054c46f62c2877a8702ac585166a189b980228ab0b4e618977991aa5a2ca14a5626a81f6b85ecb774a06b54267e1a7f4241750ae17ef6423f257db4dbdb3e1de456f0db7f5c6fa795d21876418f9d411dbbea47e3d2a294ab75436f430a12aac67dffbd1bd744c25b7230ff0ab4c4e047785a9b42536bfef39e813735c191ac73634a8e5ef8b950f3ac623cbe9c984c46ac8358f70569d62367ee1cc1436a39938d6b047dd21f8a58c62c9b379416b86fd305e6880b6631c96e23e5b24142ab4c67de1a7ac4288765ac071044a083a75a94c54b12798cca3f469b88d82d5b72f4bf3fc4b17597907c77e9e620995ba44cecf66bdfd2b226da3c5d0d755406f96cf10cd694b6e28020ee38572a535405db20994080241bcbe72d98dbe447e9799de82ee48f96b2529c1027aa691ad771465082509977556681d1daf933596d7f1dec73939e7d629b85192769ba444cb0e48bd18d644b1505a22ebb2ea20818a056fc31569fceb4baa243fd85b55fda1f53983fe7018aaf61e6e6ff881ed3b3e4c45d09341fca09c5d226edd6e0bb8d4ff7d9ff501c6b41045cfda8df0128649933d9e91de1410fdc31611ef229f54a375e7ece666338e59283c27f552fd95dd14dea57ae9fda9e566a615e4e4d03568ef6b28f2aa1f68a86215c1c55e95100cd0724cf8e7788d1c83bea60c257f517d0a92f25ce8a0e5e3c78e3a6f5396b641a3680f0fa9ce12e8420cefe57239a90d0c4f28ec44d8726ea28bb6267b9b97e6602d4206d194be8790844effa3f674a0c4b80c17db38137eae0622ae04439a8c907cb16f9241503b71e123488a8f99cca9bb268b0d3f2d6df5fc1e35f434b5d79f3d02416bd7703158c5455665b5429f930538c760f9036897113ff49785bb28b7547ea27a6199681c290146007bf0e488f132640f42929682c32550804fabdae82e71ee48e55a7598ec42c34429042d62494a8081b44931b4a02b073d0a84a30c19621e6714c40dc2e29be252b132d5329e02228b64d37283073825d4e66867ea30b9a5ef48a27739900a7c5898a91653b81594229a748716a6705cdc4b4a306e14e592757a5cb7dc81b5ee2c05adde21b87d83991df7a0845f82cb914c238220894204491ab6c7e59e0003c204a4c839cab6d43f01a2388aae9ce5c2baad26d0903ed2aa7c6bdc81365702867cc4e2e07dd0ff4724d2b43c5236f6ed0460488fa805af5ad7170151881e116f1f465c5f513e948381d2132ce3af980b074513113dbfccbbbba00e14f803eb4b8b13b1f8fdf732dd32fae89ebdfff5d9144f23c878753978b4aa52935f6a2a0af29be70485730be647ff0527cac6b1965a23a996e05b4a80848e26d3f1bf75ea7facc429afdf67e17de89b2cd13ffcf3a5c6b9488a2458830879133cececc3d0179264dd4fd6325fdbcbaec65db6a329f20c6d51c8a2295bbd823ad256435f4e0dbf9823dba68c30050d88407eead4231286f444d6a29eedd521a4f0ff4d7c3202e2028da5199d5a4c48c18db6fe9a48bd84a7405f3f823446d73e2f1f2c470a0ccd1d18f091c403439ccf91d7417da90c560c06ff9391fcb912f27535e3de646206f7609a1f633d1b13b915a68f4e88695e089d2a9db29fefcec07db9be17b4d0620806cd5c9d77ba75cc87660b965ec8d9a03ace681ad32a053cc5fde5486948fc649fd43eb65c92f251de711b6f2595ea09e8cf3c8ae2baf3251ad9654cf71e2820b4db9c023bbe9d4c27518146204e6ea9d7d411821228ce7c540316b9b4321737046d8eee412b1ac265a2cc3b21f944b3cdd767e79fd059a093cbbefe1405181a8b09a53002a08f0ee0d5026cc5020a0ade6b5c304eca4a079a79ff868e1ab7ae7f75ffeefe1dd237b59c59bb5a7db3fba7ef3c788bcc478da90651e0db4dbf5546aab77205001400000500501fa1eae100aaa567746136955cc0d187ee0b85381695344236217befbda59452a624656d0663074006730355b781a1f7dbe6817bbff2364fc6dcc07e206f167b6fc1ae849b3dda7fc398cc957a969e4516b586f4b18cb9011e812aa655c6dce0fe0766f8cd34a430bc054ef6fc4ec668423df9239364972546ae70c9214f182438953b5a3e39eb92431e5f16bf08f47150a0fcb845102c08636270db34eddeeedb17f47008420baf5f7a1f847057f50310baa7c39d2d9f7d09428bf27bcb279f863b5b3e0f47b1e5ec1f817267206e7a0d4ee0af4690b7afe0c9932759ba49d29d2f9f0b29e56f99a21488f5ad16a5f43d7016f8b52882bfeabbc7c587f2f90dbf933d2ed9f3b9fbeb78b990af39bf033a74bc6aadafe395ebaf56abd7f1caabb74f65cf14d3e27c6af17e0b6c1f2dde6781736a468113f4593380f2f552f7cca30fbc87dce7f5970bbb0b38ecd2a0c1c3238affaf9786b5e770c0fe1c70ecf275ead2e2fdb9a4c5fb3b4a7ce35cb2d425df9f4bf7bbdf4edd946d0dcbba5ec78ddd4c6a82f3f7e793eec9f9fb5c0ed88f034a16eb5bad9653dabdead53881162b83274556abffbeafd562b15caed56ac505c896282ed7db8023904db3587d73e3727d83dfb7c00ecc1250f8126edee67bc70d8bf5add64d8b52978bb5fa16f83d054d9836a0cc9c4eacbf3e506ed916fd499f057ee1abc51baa700772e0068ef8be068ee233602ae902ce01f79135989a961c368f82866444453b4a4fdd33f6977cff3ee7e091d7bfdce7157ee0807bed03e518082ddef73ae7d393fbc068d87d8cbfeff582018203bac74e3bebf405b478ffe5bfc3e5ce584076891af0d0e8a07b3cecc26f5a77777bb91d26be1ee753beff81bfbc520947e7da59e2b35fdb0510bdd3f48daf5c7794be7106e1717ec9fefe8113baa743d721e5d3c10f94f1d20e950f5490ee4cf970fd9965cb502707cdfd34f70c6a91ca37c2c8b5c39d29df0823ef64f960649f61b5f6e5b66a5ab5f53ed862c7cb273d701cce20dfc01c9e6d3b0e6a7108cae76dc2cc3b66b6ef81df10c70cf2e126cc5cbfe72bcf262c449799961c6aadd5be95323c2127ed38399a690132636a9a692932635a9a31f9f07e7bcf9bbf45e5ed5d4e59ac6059ca8e4529bb3beb5738b8ff7ef5d613617b4f04eebff77284dfabb86779deb6da7132cbd24415d216bb9752b4e94de4a7eade655de7426a1d7578cef426e71acc797963d33ea74f2fe21e853c3daa7d03e0dd6bbf40f3b457bf5c88fc5833bcee2fefb99f1f02e7af79f76d0b9d778163ceebee2300848c5e4c7be7b4ebe25b2e1c7ffb570340a8a3c776bad35d843a618bf0769d3771cfdd03ddc391ba7b37b9ccbd68e63c0ad9677793cb2607f36f383a51d6727e8e2ee4723f7a2e24dbefbe271792e09ff3da8f5e58352db45ace7bce4f5073cf71d9dc60fef56239df6f41ffd54fd0aa3e0794b99b5ab4ef53c32fd790157edf7fde0de2d39b9d07991b7c7fbf50077ffd5ab5b73fab8eda69ed74b57b3dc8e4607a100fd2752e4435471dcd85633b650fd2f45a4115282ab22a4d5576c8548296a428e52e775fa5d3159915262b465682ac20652ecf95f6f8b7719c816bf753ceaeb8729cedee0649e0e4aadbdad6e3b6cfad644c0efa716571adb0ed733feac8c18532e606f82d0e75b8df9ece709c3ff1f3e06ed6d31f67c4ba9fdcf6f45b845d579f0456575fc6e4a076db269d2c67ed97814e40816772308ec003af23ad5d6d953c9383fa1b0d8a6dd71979d4d1322607dbd3c7cffdd8bde785dc873a3a9330c74e84de6a68b9e6e91e7fe0f62bd0fb0a52950672a1ea3de819ead8df9eca981cd4a7df4287d785a38cdf5ecad86eb5d98e20903139a03a7ac497deafe0bdb68632e606345c4d69627dc614e76ca3d44720040d911e7ecca628ca20882e61aaf041d443125292b4259952da8930a494a97c93e56c6988251f9286b8b1e7c4edee1ecad983938f5f7c18bd5424b714419cad2de5284a92993a83fec89367482bb23f95a294ddffdd7790e844185298a484c9425a87f22487578ea2c48bc2a4ff5b80549ac1a6004e8a68b8b282a63066c01489624c961a8494484579814689e16a444451a153d355285852b956f7522bad2f95728532c543c2170a1328472fce88571ec2f5da5982758cf8400ae289931b7e80c2c310d9c70a941aa2485a226284673983928343c9214f2822b0264412478ca002450b2934d1907e6c992223a4640d953535e4cb0ad41e767aa0b1d3037e9e19b85b6109933e2f479b8cbbcfb5b3c337f274c03323c4d7fda516c4576387876fc4b8fb5cdf8c053321e46c26440f36b203c46c0664362b7a3273b28406cf6db662ac1aadc5cf853a38b0e556dd73383aa3ac49cf8609375e64fc2fec8b4c99285396cf65db1ea24081b8ee7af89ca157df01ee538324ac1fe3cfffb3cca3ff5883bc062de5d68e648c7e0f1ac6c277337f0b4ac3c99f7b83391cd047c2fa6f400548184f8b3d059062f77338accd386cf6574002e48feafb11207f56dfdf81fcf9be9f03f9c3fafe1ff9d3fafe03c81f9befa7217f5cdfefd3237fb6ef3780fce1baef2f800cf963bf9f00f2e73ac0618df144c0d0d7b8911d0cf1d4b8f9512691809bef15786488a706ceabc02343346ae0bcf7edc07997f636e08e2f6bdf0277bcb2161ec109b1c358d200f3b9596b96b200e34d9e390670c012a5d965b3e5f92d2ecf677d2b50b5caf3bdcf7357f3fc6dce6b6bb5f5aafc6dc601b1c31c76b1141c7d8e823276bf6f7a10b05f6d88433cb3c8d38bcdbcd2f940e60ef36ccedbdddda7c4aafe2c827fbb3421c665ff18973b8b3c516820ef2e62c4055f31aa5e92128260a2c71320439e5238530492922760643872a68835bbe0d04ad45ab11248cc8be482a1fe552680828aa0b14156c41244640420451010212aa2a8b2c2aa89a82848668218c98285154039589182ec69290d93209cb861fc62259e4669a23e79158d894b5266e64daad4e4826102d2d443c813675890c20e3229200245ca140f494d46d4cb0f2a082385062364985c50b443929731470841c317238f009421618890316d612ac11055a870064d982e6794643b674640484c9094a8208a12c0c083102568c2214cd11226a43833d4350e48acb516538baf24b14992583c855fb186c3526bad1d6ea23e7915d6942c188b1f2438c3c41158ca0021c012199eb4202495c3172f320b241e2b14cd7c5803c60a1d8498849ce04004124cbc6fa9b5d60ed75a6badb5d68a8496e6728535654eb13389d542cd54c9b54e19be4681f62551864b9a2b455a90f8fc18b383961fa49ec062496b19ce1cb19a5809a30652c1cc8cc79a9994134788e004648630410c499ad8c2cd314044beb84004439a28383cd1018822506b923853a6cb0c2dc59311414b560873c444911a2a8cb42061228414858b0b9228220ee3c0840710284092e60917644008e1a58911321b742893025ae606bc85e98729c06041048b189000820441aa70424a0c3cba4c11ab69b16fe5c8b43589275550d198986aad7595a5d67ab134177ca54c132a4baa58c19a24543c4003103cf4a043901408b94b9ac634dd9f586b2da6165f31cac1048b0d549a705aa2ca0f2f3c88e8a2466605d39cc23980a18628a038a3039359143090393a424411355dce4c592db9b14feea50215915a5282824b0a96cc1c0913839621a41cc125852b9c54330a247ea3baf8932b6e783af2f20486221d5e7032a3420a2a4aa850e3961193ef0aab2c4e94a2ec4086c70b548cf1000b568ea0e14928852d64b4e45bc6898be5e914d492b9225b235fa36a1b2d3cd183872b5a8a581195a5b6122333471b177cc58c91b6fee408006e48a187194ce0458a0516b832044b90252768410c64a6decab5d6cc10d9927972ad8a122733855781a9e41ab840390932c4c80a1be82108c90ccc1066d4907172cd1cc19a3295d24cb18317259698b2c20058380245528f1e840431794b46f52d19fc9b0ae610273d8c14299344153320812606293254a1618d4a0a122aa30c791282c81549465c848a584195265f9e60f07105130144c99992aded0c9670c1891e2ec89c30730509082924804266841156d04445e182020408272610c2c2a388084ca16286344b58f141c51921dd9472aa0170a2c2c31927215bac2c008b35433b8ce14196240a4cae6492f02759ec0e3324f7b51350a512861875e9a1480bd468f1210823bcac3086cb952b8864b0c40b7126499313225244484016e40c1146d820c64c940d2a2747c8485125ebed04c39421444ca46081966b01241e9c9018a2055a4850e3cea29c604d89c73cbccc0fd9266134613434a1a4822841846e08734508a4d454a182880fa9290d09180a267d256d29d31918262ce5c81a2fe0b8ce1d7d2c7b6e648febe97fb2c7a6a7d5c37afa2e64cff7f4a8bf088c2c6790e5eccb14072628dbab510e53150dc709e4917b8dfbf9d6cbd1cf7df572708f03fe0de8026d401628650f075aacb355ebe3803a5aaccf72b5fe06942d7e3736ac0ca07c17e0c094b9cfeb6b18b6424c83060f8f28febbd36ed2afab70e45e0b410179944939fa69383ed77dacfbac02473903939475d43cee98dd4f70c7cc00cde119e05e67cece5c6f1577ff05e8cb2a6bd45a2f506b92d212f572501d1ce3cc3b2c907d47cd6dd32e9468245fc46439fbf2247b59cebe74a1f259a0053fd30952fa597a366828a37c38cbaf8b97a799172b5133eaac332a95c12343ca19536aad588cd05a2badb5525a2ba5b5844be5d726b3930495f2c782335faeed88352e0ce7ebd54e7747098cb13bdd7bef6d91fe60a409756fa0066bc8b9d3eee950c609e174cfeee2a3687c58b5ac9b3c880b291232f3e2c3ac8bd34b4f0419dd33279e3134eb62e5beea7b4d039e19343ae89e6e011f803041cff8a3e06b05ba7818a0a8811ab4d8d90243dc40fab8fe9579e6d841f3d662a74be7336b88f6d6c79e0836c7f621f59935b45046b499f27cdb566e33e1f9da744cb5ba59ae6e96bb1df66e873d4db5ad34d5b6e2be8ec57d1dcb6ba96c78ba4e822d4e95439e6f636424cf77c9f9374799b654d4945454fbe82028a5264f949a58594a9a4453c82c3289a6906964164d593bf993748a829a008db1833c3338cec853ce13320d67b7d34a6b3badb5a3d5dece5eac614df39e1aee2ed6b48de3ba8debbcaef3542bd56ae53d573754abaf5b79373e568bd56a79cf568e17b3795de0c56e5ae8e0e8e8784f1d967763664a25387679de707512bc9937e17842ae1760950ece341c4dc8f469c6d64e578d24bc943fa0e74d4f89e5b55850512c1655f25a2975775890cf3d43b5d8511e0e30d35093c2e9589e120bca6137c429d2585034a96bd23e6da5613edcc7d454549418314e4e73d4a096a072771581861407ca0051380963b49143f22992fcb12f250fcd88494353796c4af545de94dc4725e5b0fe1e5241d9d490fb470d4d6e95940acabbf122dbd0a648c6e85741f9fb908c3171b2d7ed49c33adc945a546a717bd2a20a4a29f7af82ba67ac4bb9a1a25452aaa9ba247f6239d9c319b82c5f44e21b29c53cbc7a9e3de89193efb021dfb8a28186001c2b8c886fbef63373d3bbf122ab9286f8c63a2482a52c5f43923f1afebbc9ea9016aa92603d64d95b5687ded60a7467cb381d1cf2ebc7240ef739bbbdeb5a8637a8f49e54a7be3f50e64a98f7f572774dab5d6badb51b631cb1ba03835cdf59b1e94d8172a51fa3212863542f66751e70dfbe9066bd5805cad78b5129b1b66d1ba769db08f7ed43e0863468384cdb2af77a71235c5b3b4dab15477fe52aa5b436ad52729bd70d727776dfd77910b86f47b8d663f20399ab534ae99458453f463d1cf5e9f46e7026c4b84cdfb3c8f4372f36e5c732e77937b45cc2cc4262afeae0d874641a7648fbfbc1712b29e50d9ba58cd1ef220bbe1b7a38b8bfaffdcc62fb91324929a5941ad29c73ce7eeaeebe20267a72777a9572f7534a6bad76b44625884a1f8ef50545a50fbff69a97e3e6eeb91bdec7f9de07bbc7b9abdfef375edcdf867257a6dce16899323886602967a01ee5c6dcd496e0fc39b7a18112498ff2fc911ed970d99c33849b6d7477bb17bb2ecbd43d1bee1eb35050366aa5b3a8c886c5a214cd8bdd58871d2463ccaf4132063dbaf122776885e0248c3100b2dccf79d775cf973b89147b56a339674d32d623a29b1f52ec9b211cf0f539e0055d1529d2cfb41e4d0a9be1a35043ddb329f5cd8f1e718bd7e3bcd0059ff3ddafba5f4100032d1206f362186891627f0b2423506eb55e569dfaaf07aa8103e27cce8f80f3395f3f27e75fe109177cce9ff07a9c07aad1c28698c4b7fdcdcfd6738f0113064dee7341eb47cfddcb67fdcd50fedefb16462d8edc27e7bb1ed52387f5abb699ecd9948e6c36a6dc7fc1fcd78dad4a2b1ce9b6d43d8dc1d37723ebc05481e3cb6b618481160ca0c60fca3daeec36a39b52f74c29daefcf01b184d9c7012b6cc83706a0055ae9531c0099ab3924f9e58f83bdf071f4dd8ffab9da9388559191fc71caa425cb6f2157b21591a115518bbdb52061fd39e0a68284f5af88c89ead87149ba87bb6a0165bd84cb0956003b2fdd858d856d886e4cfcdf76f2aac86dca7066d296c429b8fad87fcc1dfbf9160e3b105c99feaab2121e37682dcbfc93a0138dfcf7d39bfca79562bbc0177b8c01d5fb66f03ee78651b1ec9096b1609ab22c5ce22c5c6990518ab53eefa44eeaf4d6d80fe1a14740356261758b5d880754b0bac5c5860edf28195891558bda8c0fa857a60b5d281f50a58b180358b8c5197c03aa5529131fa3158ab587b553707ac5924ac1f07ac5f24ac6ffd223fa6bae43eb3062d812f725d729f6dab5bddeab8ddfbe316d432943246bda1a8814a49d016746494e7af8a5ccd15c1f54bff7ebdf06d4df36fffa6219631c428df48b3ab6706caacbe117e32c6fc0e3f1943c65cdd4f43d043b0bd580bff7da16d047cb7106b21762fc68a79386638c3fe68d0a8b11504f00838a411d270988da96ed7606cbefc7bbd5827f3f56edc74f3f0689ec8e49b5e2c87963d9c7893bda9e8db5047c7cc22a340816a5f2738fafe527e799c3346b3bf94584aead4a3be7a21d508df082acfc66236bbb573c6e40732dbadefd70ebbbb45c0a14379babbbb532f76a9233952964f29a5b47a315b9f9eb2fc5a6b8d55db4479cab7d6c62805c57b634e41f1886f9452522588476801a2d0105ba9bbbc6cb1dfb5f8c15e706b27d8c1c8d4236b658b54caefeeaeb56bd751cc9487b2403c02044e96b3354a6e59d97da87f48d1df79c89e9e8d3475146524c6fddb4afbb4cc3de87b29eca4ec2f72255289ea537daa4ff5a93ed5a72a6bd17b2a917fff903d57d6a2cc7d2ec6dff77ac9c64b94fdaf12b8aaab2255d63dab212a275e9147d43d4d21cade32aa4fad065950f78596912beb9e560d97e826dda217b986364b2cd81a7ab37b225224bb3744766284c83c204feec38a6a983f6b0aca4795021294bd2564287bab48f61fad2cfb7895b277c8826ad15fc4e21bb755d18a48c6f0974a32867fdd88b248c537dd55d435d9b1e286a9a23537ccd644651d9d4771823026be1167e9b49b6007e80c39ef26d8814aa7cbce1e8e14c8dd2ddc7b53a066cc54901553b22662948d8a8ac24265ca9469a75e29b5b5566badb563beb17b0c145452d298cf0be14aacaa3e704b4bae2e2ab26925b1a6ec934d4dab9147ace2eba5eef1b27c6a056a563c29bd2105fb61445fbbcade3c8e205b6ecb154f3aa7fb602d4bf943658c0ca3c7c7d5147fd89d52cde521a6d239cf866f728629d44ca1839a26d454c1181fa9893243cd4c4d113aa8e991468d9a1d42c06226344648061b4e301443153e8c29c202153540a1c6062142f4c0248626a1244d806638530413561861422ac113378c9a215c44246a7aa85163027cefed414c10699ca230c6220e6986a409f2a5f99146084d1668d2a0b1224d0e699ca4594224e78d22aaa0571eeaa5192de5b096926a29a9b1a578c619ee6325a8cb90934c8c1755e44d19e5e67ce4b0794aa296b1424d974e71724ebee036d5b0dea4c87c6385daa6aa54f74caa0ab2c2e97ce05f3fe6ee2e5777d29d865f2541baa532c675bff5fb30d65e2f8761eb1547d5dcbfafbe53ea310f47ff0dff98f4ebddc09aaad22d092761587b2fc75deeca1647d1725d3e9cbce5e3c2d18ff2fdebe968dc6bdce3b029dfe72ec73db77d27a5f4f484843487a4e69c73b652bef7bbbbdb2b91bb3b7dcaf73ea5b422e5fbb5dafba3f544301c288251e9e0ec85a309d9533dceaa70342173dfeee15859a67c5f75392f942d76f7ad51be9729d3a59c013fcafed465b2a71446e61b3f4a430dd824a9eec1c9fe53580211f245a4944944368925b2464e83c72061fd3689ec71598b34f80c8e02f953c489b80cf2678813c99f182c91fbd8233f81c3e042fc050fe22ec81f96fc69592237e237e47e2f6ab1bed54dcd2e1babe1bb712aafc3b147f628b758dfeac66563357c374ee5ad5aaccff3eac66573718bd5f95bcdacf23a6ed3f0c5a92a7a730e8869756a58bf98a83af53eac90dc3fd2b881933dac4da2966f14db266d507c5f779daf1ef07ad1ae73970b4b974b03251fa55e8cc6b8d50dea001f42dc2aec5662139a4763ae96b3af26357b35550de912ce5fc218adc8f4cd9184a11629901645a66ff4a14c2b538bf6c75e829a73ce102ed4535277773f25b9fb5312a5749c321bb5fa2899dc4191090e5f1d1cb986a309f9be16dad040c9375fb648bd1b1e2463dcb0c31b37b90ee1e41af6528b349cdf164fad88b3cfad44a76fa4eea18eb53aeef55bcbf59d5a9cebcfe9f9db0f6aa54eebeb65adb5f5e7e4aee76fc199afbb9dd9da6bc199457d6e2582e6c566c6d9b5a9a9e8d306d89089a33af44908c3d94e3bfb576e5aa1ee39ef4750791d77efbdf77e95524a2945f032d6a95fede350be28ca6fa556eaee762eeeeef489525a912652ad760ecd217b47c92499b87cf4ed731bd62cb516bf369a90ed6fa1b43719ff8d9b9bd84dbea1055beadeab7557a196ba0727cbafe2d447bdc448a941b637b9c57ff670b441df673badf6626de33a4fb5fa582d1bd70d4eceeb8216a38d1aeac818d3858c3101f00203779fdaa461fd4fb095af4beeea54c534c9634f41b518d55233ac4950f2a8425d2c57a0a1420c82c689ef0ac65824c1d7653943e364cd67c40f3443a009a2c78606491ec52c33ece60213574c8d01c26849102518f89204153a9c5113c4428d5b268d13784333c3077341cc0a616608a2c50a49c51352c870068b0b3d82a871bdcc18ce098602344296be7bef106884c41cd6dc2c67684a20c5f4436a698846e7722155c577efdd41f3714c3b527c38cb99d49254137914dd6ea30e99232b9260328cb1a882148f3cca24d1e84c9a3c7e494f513b63ce5491c74f4c72268aefca2c9b56c0f8bbb0166696332922a91fa48cf228561f2214118a0885be9473ae1ae38ee1a0541a91321c3bef12ad8e291aef281a4fc9bec81864794aeec36a79940545ff7f644169505a548b0199eea8d44d163639c910dd0800001ad315002028140c0944e29058106951a8cb1d14800c7f9c486c5016c8225196c4288661308418620021040060002106182711da2861374005418c2b7e6f538bbafd6dfa30e443afb9437beec8be1c66ff92eb3294822f3af49aa84072f1105398d77f7c7fe8b050e8354b33ac29cf8864ee6002fd57754df49300dea641d508586082e4394734c25fa5f00817fbcb21fc5f0b28a4f57f65a1fc8155898172ed3ccc4e4b3f08b64539188120dc0abe1abac2c296c0bd49a101b7ecd5de17141219b05c8fd9f1a672d7daa41feda29afa236582866affe5d80f6cdf11aca03c46e4e7b811958f25025a195e22ba30cc30d2254f509d26b19e68083f5ecf7216fe2cdae53df50287130189e1445bfc520c81c69d1d9b42606f6c09eea8296823dbe8cf22a2c1acca3bca8f7568a133a61acba78af91a578ba2290da9297799a84a3de4eb150f79af88b2f17cb2bd2fd1cc3ab469cabcd659b22bda9caf587f6d49ba0f7a6998ab54a9188b2b4700f83a388e4d2c88fb33c231d5f6abeb73e4b00855d610b9c1b9cf1480a3f51fa6caa1ea00619bebc04444343a954d7bb483fcd8d899e3cb3a563067085e1968bc8912d363d801eb1f5fe1461fc8e440548f3f9db75be3c6b39e4ffd986122d74cb772243a6d389164c4e3a966d78a9be2caf05ab16e94936fc16945c399cc410915281b0e24aab950e820c17ddb36bbc3b8ba2c9e7661fe0a1830800ff3ccdda5511736fe082a64b256a0b9e247b07b5d4f1620b69d8c14e0df1190a3984c3df4943c2bf3fdd5be0ba3359501b5328e5b58212fb771ab0e793c49ee9f2a98e55e6ecdb0113f55abdf53150e20bb4e5372e67c6be7d09c01076203d15a78e45b7d784b69a354ba8167f919b0a05f7abc546e934b8e8b134033c8f28274694dca57037103cc6a29161e3c8f1f5184a9a95c0b168fa39944c7e06be978610739be2506c04dea5e43d1f2aaff0501bce32aa4f3b306139aecd24c4931a5f4c42ab1789efc36cb58904ede223e31d4fa3bae8c7204cd05a8b0892861c2364fac9ba3aad88e7a41bf3a2edb919b6509d912b2cfc13e1d6ef0f3d3f1e86e926f94121018bdf94850b72619a87e6afa6af13b480d0061342264dcc42b6765d43c0c79c4a89fcecb7507f6a415691b8dda5c1fa8f3a4aed235275fb185839291193549b6e2ed15a92b5700f966d183bd9f4a4c17a6b95565305c113dbcbd023db432ba8317fe096dffe3125e8cb3f74e70d47fb0cb0581aba6918ea41733ef81cf706a5569793c35645112ae6ef387037048421964e2ad44fe4a7951f0eec3c294026c1c494a3ae80e7f2b3a5b3b288e1f4cabac6a1fe3a1c843c74c8c108084a5cbf84e9de8e618b5cc1b9ee5ac80868d48bf092dc0c67b7254ba7dd2b9d15f4daf8371a5ff5c720690dae7d804ac1e77407d2797821ff690557845bbe98625317228e725ec4f018bd0d294b1d948119beeeec9a14843ac154de7cd14fc36ff465be07647c0d8fe48daed2008d3c281a5ca6d3e0d19eb255c48aa4602dcdb98c38f56cf82f98c9de03cf7957f3b5db99188df58f35ea61ff18a6c471e320da4d77c3ee86d4761df795451ceebd08548c9960765ba1c48cd303c76089c42f93569b3f6bcd9da5561caa1724bdff7737a7c19b622799c725fcbeeaca4983e3ce345633b8d0e3835e53e9d22951c49023d2e023319bc3e13560c2ea5c127fc07ff6e37214d184138f0adee1680887a409eba848b5c75a0b81f8e7ee0c7707297fdf08e94b7c1fce3aec40231271c89bb803e52e18cb5487b1f0cf90cd7299d1ac99119dd93b86779018e7b31aa00af252ba4f7a7f84ea5ed413b32a5271427cd69caefa9772a9abfc416bc3781e0883694ae8f9aa622612427d9f27c336de8bdfadbcfb050b165e46cdd3ab803c4ed4654d455e8a7e202b6c2e047aa91f97d2f25eb190d99410fc8512974d0f803306798a5f2af620542a16bb5adaad4938266d4400156de636571e2f45f9acb1746863ab04840b1c61d510a5b51c61b31f7b5f4133a890aa63705342af8fac9457f50723201535eeda3f71737723724a2958576562d154020e43b7a850045e8fa07803b76983d5037dd124a0642b25f613ae0050c350d880797432a6d5cf05d082024dac174608f39c2df587212f7eb5a8b4c365597a081776f242eb49a5bb47e7bcd72c5e65174ba31a99d0d30f9714f433fce0d3ad4aeb5e13d44b7d73cce23f818b07eea9498905d6a6f244b560db87ce4c3a702847943020e0778cb7453a32cbc3d09755603503a088cb27eacb3a3e74462f34ceb99249934c60ec4d8628a483cb9a3d4dfc2e764849e314f8897e378617992d86616b2d9c1ef94e3cbdd4cc64bba71648d780b3dda3b9b50787ba4334d0704bb2b0f3b5fc0144fe2f12a8a48bcc4ce9f713345fd89499a66c5cb8baa9820589a7480a2ed20f1756997b4107ad6a58ba16590f89f0f96e1d6ff59f630587a26e2ed7aa5db5bd76743a0bc5e7126e431bf368331ec1afd935b7c1d6750868832a4887bc281b4c637ccda766802c420378beea186d0c5bf2ac2670df1bf4134b2fb0a4d9625366283dce5846c78f468b5e87b79fd94b6a50391b05f07892e49262e991c28b8aeedaa99fa5680bb8c8a8d516688da7837a7ce16878764721d5a2392c69394633077938872b17e235cd71f24c0603cf1823bed0d974fc60438a502e3dc0a285dec8c586561066f1ee6a3cd0f90df1b28e529e48aa280e0560c72c5ce55ee00961a0a9091a2a220b5118143d8e4f0ac73dfc7b3866d53bc8567e2d55f9eeae389c840ca41cb4e4712dac194fa5ec47eb64b40cd223863202193d8b4e165d126dd594d5f082bf2951a2b35607f9cedeff9e280d7c50182a81f14b0838a4ac78e5af7878a7e4e0230a4368589ac83947adb55ea7152a62e94ceca1ae0becdbcc8000763a93676af4d0d21359ed4187f5e9aa0f4440086285678b79db226b19a07fb3e6416c8fbb68425512265154a37d36b8482582ca0cf8ac9d3763a9caa349823d764cc6c190b4987ee2a191882805bde3c369bbe2f9ed50ee44ce088753a4e07bd5b0b6dee22a79254f07ec81e3a46678232cc87ade0a3283c6883e20c8f379a8b026d65c080181d840cafa151b7373a5cfa2760b6da5a9c90b8c789d06af1371a2efac84f6c9ea524ebaa5012c7d61b8d2f0bdb0e1f9b50b65e06a398df6898029cd8418776534245b8ff8d0eb1dd0c667171474ef943df9b62de7c3448dfe8a2e8004459d94bb6fd618e6efe5a2e880246b0d949d72c7c2358e61bf74268bfa45a7ba3a3775b2186ed338681783487418d4850102fb83c9ec88bca3aceaf47573eaf873813a93354349da52ceba782053963fa4bdf7d8e4b84975e3e32ee1b79a5508276d0ec53597bbfa4fe9dcae3318c99dedc64c906309c8b9fd112d6792650ddb3ff1afc5852ccc50de1a343934f59aff74c83d64d07e2b22f749876cb2a2c73f0fee01dcc63c95cda1dc26b7a8f022f2ef0a599cb85a15eb93a93d17b566574f31abfffcffee6c80ca3ff7a96f9d95751bdc843fdeb9f9ceb9ec631d4afaf1397dc255df475b5fd9b4fbaa15ca1be457d7ecd5a9e87fa86fd84ac4185db5e32d18d2f7957a1624614efb0fd10de81ebd581d9cea9ea21886f8204aa5e783603c23bd2f2978da9297d4c23a4296bc423c9c23b8052ba8e25fd4216fc86432bc75fa3c397db0d8da3fe9ef4af6067b710c7f09560945dcc0e2a50c63106d5d06f15bb84f08ede0d801758badb9efb95a657992ffc4a94624d6c6add52791f9883ab0dc620504d4ac8317685690f4d112e6eb78ff4afaad8b58a926a43331598048bb2bd778da353f05940d98ab7af3b8706ee4445ab257f0a7353833faafecbea06b2f6241a79100d9b2d988f1a753b7dd83f0fecf7856b7add847c781a495ac424031e65a3558b7bf8f8e529f388ff35fb721460c19935e73dd93b3261c21b07ba6fa9d77fd0afdc58f22fec8931df0816d5061d497848f35164767db580e20bc97b08cbec49ab754868a60134770ca65586a6037badaaa43e517698030cb464a38f47b7b750be3832c8c00633a181610a009c94c698dd5a16cf1766266d17ebcf394d2f81be688b0330981fce9a4fa157ad59c7a0f79596a11347f6b79abd52cebefa025643eb15d254878134c10845f973133dbeb7250a9ac154c91db1017d46fbb43ffca1fb435bc4f6ecfe1785c7a0cc0e2c8bed84b318ae2a293fe698937ea0d20c19eb2c79b09e87fb0bf6a8ecbf45363676c697d055dd717615c8207d4223b891f2dbe857648019d18d85a6c9fde01dcc622028acfb135688131b9b0d88e3e6d03376d76d73bc5cfd1cda3dc6d7746eaa9a63ab34e5b8a36d5fad88eb18bbb14dbccdcdad91add53ed22920b24013d193dc6646d4001f7f8f4ed556ac2a283f4039731e65187a104b99ff6c47fd2a4a21a9be59fa88be7377aed28b62458e2711fa9c6a3897628768f997fa19ccd9273602d7c61d0e3f829b808f8d63190e00e420624de2ec0d14997ba2dff817325675ecb5632c2f3efb6db20cf0ced0d0e638496a13261643766e379ea1238afb9b14ed7e9cde1070ebfffd029e75904fdf437b79807347dea2fd036bf3ad06b86ea2c2804a3a027d392026e4d9021a5ceed4751ccc5bc8c8055674f66c31c9fc4e7a8062bdedc6ad9f228f3517f959d3e87e3bb7f7b9aeaaf98f47721cb8204b6ab612190656cf3e8d26827526da568031f0f711a412a6af61038f66899f18600f248439b487795be977a614e57cfdcbd19e7d752e621b56bae1496f1f0bf5b59447ec24a4ebe366bbee338617e91a6698755a6e66434fc5c2bb1355bac4eb929b1b6526d480c56ad597ba215ab78bcc552a4c3cf9d3928ff2dc65f3f408f15806dec6c14daee5a25d3e2e46d6122d4f18a3e104e3c7637bf7c3c5cabb9d29d06e0b52dede7a1d7644ab722dfb1ac0a863a1dd0eacf8dcedba763e1132a88b0f613836ef0e817d0f2230a3b2991e67834f34c2692fbfbc5c7871505e3ec7e5701efda8a5e71716824f44088170734d81df637e0c64dfc11fd932083e89574267ad3b73c66c5466039ee874613ea9e7271cb4cb82a44a6e3bb6f6436def10279c01e7a35ffb814edc76db133f18b6e2a3d136dd5ddb5dcd1cd12521deb60868c227eddabedcd6fc253976d7f605c4e0ccbcb791861b91891bf692a19a27331dae76fef872b396a8b4a0a5d4e1e2a6d7ee583763e451a74a9e44a93e1c60235a2cda2030d255e15c07f5327a6ce7dba2784e5c533c671863be2ab87581d39bdca83f3bc4650289421da0e23937ab30e5d1afc40d8e036ed5c4e0a83c0d793740cae166be720c05e3e492933b0e2eb9b8e0e4cc9d23370e5c7271c0cd9933574edc382677a3f6b56001288d11fb99abf8936978c9c8c2da1afe04f6109b51f6b5e51e220cc6278d8cec8ee395744ddc90343904fa88bc8572046f6474fd929dc9261e253a448f71de2cec4b18fcc7bf3f26c1680d4a115d1325ad7d3d5dfc2e6d56250fefa8b85badd7f8b9799c62cc77a8416431e3b5dd979a591259c5eb05542669f06ef2426cd4e49073e9831359a1410d44703533fdee108e47b6c7a064556db7e5d8b1114ec658ac760140f22ca12b75b8b71b1fb8221edcc61991d20d410598e1cb703d30e5b6b7a4970e2c5cabd5f86077953bcc6c14d65c609094e4a0c83a783d3c4b0599a7eb6ef37f9b27aa163a62c4ca45b578e3c5635fb6f61497095de6228b64c0afc377603ce2194fd71be15b90dc51d1ee8730620d2cbaba93cb62c31dba7460178d11c5b9df014ad14d2eb69a021635f098b742e6c83beca0ee1e7e69d230fc8522554b0b5c63c5abb17965d4851ba1c3269065ac78da7f03c377fd66f7d8eca5155c7f65e0ab041a713c19fab0a61482d5f84f8230ca4f24da04d7f177c9b1c11392d8f1c0ba215e1b6f9e6bfb9137ff6b1887b9a4b01823032d07fe7e59833bae2742dddf8e77742de40b57daf23ed430a2e35d5d17fe0aa3b25366b99c1c0818384d1ac312467e20acea867ff308c0f92432c26bbda9f9ee85c6ccb26d7be0885b2d11bb2d5e2b67c40b3669f34d9e8d7377e056a02ebd1d00cd20636cbc36e1026da33d72fbd539cfb16ecacbc680942e80e70de0294d1cddd8d666927058bd1c0366308160b4aec2eb46835667510658794abd9efc186bb30cec8e7a132150b92821c744de089324bf04956cef07ca2429c08becf1ef3d63e21d38ad08ab8c5ee6c758cacbdd6abb3c39cb25011f5c9aa8792a8db6c8e8d69621127cbf8828fa6eb5ef7219d9dbb44cb0659c183829b8cd96c4460642f76e203080ba4fe06cb4702915ba7f735c68fec8a839d69070605f21707bda91d3288218572e140595b4bdb1941bb0c12ff4973c582015e577ef2bed5caafaecfc4ea1fef9922b73da9653ae8d32d3831c4cfb069953c8054563d12282289c524d72ff08856d013ca143006de34a6240c9df8a244c3f986cf64414530291966dad7463dbc02fc55b590ef66040ebe5bf0b5d8c562ead98b316e37b2da5bebf2d823dc554f8b47b973701969cc08003b0d69512348995dbee97efa98f0e30f93122241990708505c40061819cca0407de9fa0e4e9ccd6a8865b5d7c0baa639648d00456f714afa4c602527cce1e3a64c94bfcab26a1324f10c1f75a46cdb46b504fa420c61970eb7627a31423586688d754ccaa14e5451850efb00c7c29120ef91e2b14dbe64eea0c56cd97c605651152a1de3f19da51b0ee4732742d0e88a27352662520cad1890b52f7a6ee153190ec9b0bb46506156fa697fe7e075dea0ad0a4577162b396c1005e25a430469a7b13b5b36533ec112d715be68d83f255539584dcce2d5119670565ca84207b7572a8349aeb0a303d88dbcdbac71b7b818dac7cf8ac1835de3b887d561c94ed7d31d92f892b7b59bd9fa18a4312619f4221e779962c9832085d5ed083b45237b459fdd69dcca05ae3fcea202166a5493a0b94a85cce0dd725d392701bacdfe380424de8dc686ba0a69ed94d8d7e810f287259cfffc921af17b65be51c9f7d5033fbe8c6728032a41125419334f2ea79a73d103406294298bc1863d36be4fd38616426353a47c04675e5cd9f82b98e50933b3393ef084e786172e1f534c2a038c74954592d9e282e6b41391bbd5165fcec52203335808c513616b80a776b6dc0b74b157df41047d0740be38b7b9deed0ac4ee98607d77777ac28fdf05e36af33dabe632c52d2a17be00c47fabc5d86a118d1ffbf129c414ec8e6e5f04370aa19feb516f63e1f6b419d5d757edaf612be3880998fd548b7c2b4ca23ed8fdb7e6bcb1e15e203a199abadf182a5ce64749f4f3be256994ff9a784399fed3592626442b09d98fa6465e3bce8778cf0385db760c2a33fb49c157db7916dc2e1f2106a540bcc243e2d14ef4fbb6c0e7d14245e5ecf4f46c8bc247e71748ea7294a141089b9f43a4c12b5ea2d38fdc9cdf203918d8228f68d56efcbb9c43091b657f11d47b5f867f714053a01f066c64afaf0175050b85b59d3850a348753d016446a6e4190efd57294993c5a02d6aecf22d70081313669e5ab67d0a97b2aeb993f79d5bc1448e2466c00af26260fff59b6d5d78d4017897cd3d1db5640eb3ffa2ae0ad1ae5e979ccd9a3168a76ee179d840e2624517eae416c6265e5825e4b2737f812d62c7c58c72d742a48ab3c4158ca8229ab1dab9a571d7e8aaf4b1542a004135ae1c6610a7ab750dae45e8cea193e6367ca6bbe9ff76356b21e8546b4c9f20f0de0a48fb0c408193dae810650518126af4a21edb305f21b1706b2cfa714a714c028105629942d81d46049b74728b7e2de278b13bfe914d559d239ecdcb2522d0bcc7f0de06ddcf12d0658c6f13d2cecd999319ee7b978050a8b05b1ecf7ae62ddcffdcfe1d57f904586d0046ccd0e5e5e36c17974d2ce4a540e0344a08c4b78c5964a0fe828fbc3f1728b356eaad938ea3c5d8aa81f6339109f392cd2364de8eb17fa330288dfc896c710fa206b54079b75e9c4906abed8492e302c9a043a8eeca40ade287081eb3ee7c4c233e40dc6d551ecf7ba80cd9137169cd6ce6a643e94d5f874756bcf6900740763a1a8b3c6fd5d59b165a56d05a8cc75952dc088307049011e5b06266d8d67a27226e257db2b020eb07690f43938a6ed934c508c9293b88f3d7d361c5f907aa3f7a0b47f123c46264b2218c498d0c80b936fa49925d1906cd7060c2a30e5d27a3a0baa737282f13eaa95b5b7a996827347ea3438784bb347671c6d27eec00003ddb17c4ca809eb67bb3bb08c01b523a9f5791ebc6fb9ac05785c6a1cbf4efab764dbd6f5de932bdd5f02b905610c08f2b36d9b449d1ed7ab00a2e1f98847776f855355fdc122ca6a0890efcfe2b643845b045135d4e5135d943d77ce8b2b724181f1b229cfce95de4b49e913deeebc79274154dd907b675da5ac31427ae257ea02e3462e155eb0304939a0301d652c0d96a497a102f5432e2ce3aa2a3921d54f3b434d83e24a7872c8ea920211707e9cf077ad850133d032098d8324e97509cbf8d96b6c35e1ec0f0a4572a2ad444267d4ecbafc478e4e95129e6da5f848c8cb9d70732876c6ce103211f70b1f4ae766514a92b9570b509ab4bf29e8990ca66f9cbcb0fa58872c2b967996afed117596b1767d4bd585656f826e5d36ec46652180bd4469791e66ee4acc839906a65964653775e601719a2cbc0538f2fcb4a34b1ff32b17cf00c9aa00a33b1bd152c15137b4cc9663d1b3ae6bd4ad3c4607eb3b7f32835baac27d3940b390541aff70f8e0f5cda65cdd59d1e639ef37d1a40e8e5f343414350e54a79654c90adac4186db6f948eea74e698e9b8de2bfaa7b9c2ae2456a3110bfcc12e277092d0df0d03947a4966da76f7b29fc1a5b95e788944dcd6ed841aa27031f6a0fb2a9e82fb103009091bd450acbe6a4417380caa875be8e13bf838b6fadd9d185074f580a9df8d628027232bdfd26387aeb55d6fec5b47efa09a34b7082e8eb9db24f90015b29a980f48ef7b6ca66439d42090272a5684e88cb623f7029171fb997ae67e039c16716f83c73e825211483876d4e5735126e08794704fc653b6c517e4671598c4722e15c3a242b8ad7bb193b8a52215904b03bd383071eedd7b551aea5db7c0eefd405c92908736c470c0957cf823844a06fb38eedac67ced5bef6ee66e4d894e3719318f987caedeccf7d9e30f2e575da13be803b2721c0bb7bb4e806a5e706de1830eab75fe065d9b4452f1872696220761187c52d4d8d3d0ea46488ac774e74f39201f4d43a165afabe842ad7d8149adce97899c37a2f1e7acfa6c05574ff9634bfb88ab200a04e4eeb6a7e2627d1f49927e53ebe8de16feb35f173d9806cbba1f99fb7faad7e658ed98d338eb1c6188b8f389fe2ee061b002f348c005c2e4b73a047a601b8b790d4696a1a467f54aafac4dfdf44373f73cc6246d6bb72d6dacecce56d1472ee35cd91e0bc2e9891510df84350dab4e4d2da1cbe3345942867f6265ab232112d99e4880754fef1e5a06771547ce502402c49a6e3acec61c3c5ced0fd97fd926e005be8953aacc7e421ae60b817ac05aa40f46f21e3e42d3839d57d2e90261d7a8a6515767738596d1d9169961dd59efaf8c162c05ddd0031703b4df9685dc1426273a19905fe104060cb02c5d55b9e4c71639f08e529b1d5263a52d558f1c62b0bb4329a57819ea82cd7da88668fc3d81c34f2341278930300b36c3079ef4ffd16ef9c0cfa387bc09e54148935b8d0b9c808d4a787007c12c17421067be769b8bc1d554faedf846ad0a844465cf3e7d7626da0fc999e5e40e0b4390b429d30d67c66add28629cfa1ab39404655233ddfa115383ff0f85fd7265f85b0ac829355611d5564662ab82515b6c1a8c8b9d782a970613fc53f781f145f04ec207c8ae0f1895077ae9aed5f096d3e21c68615dc4c3038674e64cdeae7dce8e7bec04064a11fe46c246f2ed2cd2a6673805b0022bdf6e599902f75a2632527601afa5422c78e99c11fe6e0495aa184b858d63630641904f55a0e42a351ca706e1457d0b6c02618b3cf2bc1aa4a4903b6c8acb0a800fbdb19263c82d3cf935e8ff59042bc585e85bdd8c88f67d925dc38f7fdd0de33e0e6b69624e1fd84433b0f421de42a2979b2c67c1c4237dbcb5c089a634d9ec881686076c5270c40283c959f8a098492f99d249d875dc59d1300930e06a68e0bb1be5dfded149b8c770dc4db36c5bf8db7c69e357c6042519af16191871988106dd467fe3da6527a8d72fd80225d5b4c0b4c2c00f6963bc347fad22b7a880f401b0735498192f9649329bcc1e169546124fea4a945dd26c04af13d7aa76d76f836c2670c550c8eb4d9b9fdd07c8d3a4e393db6fc56147735e14498cf069e186bd05f652e9cad20cd2b0ff542d35049c93e03591b7100896c204692cb46d4bf4189d9a05672417c58f3b66431bb2a323b675d8c418792622fc2831dbe85201a311cb66bff76a190841409bc344a01cc58c96252960a840d7ed417e131b6f72fa4d2d5290dabf027b20b77f2620f3dc3baf5a54c8d27dada8a33b6cc560bc24e89d4352932ce0abd2b143b8f1b97f52cdc82df8295668ed422ee5b774774998cd53c39debd2bec6cedbd033b7faff1155f55e0b352606bb537a5dce0df2c0ca53cbba374725ff07ccbddcfaba09fc055122083a15cae1d3dfcc7a6dfb9f65a5afa6b83145dce6240d18da02d1d9da970e899ba40a4634bfcdb52f60b261ee683a347698619adbb744212186161c85616886253aa0283b475d6b2d250a400ddb46b787096c7139554e7bcc7f78d8e0322d272a21007d52014ebd098b888474bfca08c64f9534cf23a345054ca2458713d3f668a342990c1aece2012139d22a45a48755a38816b27603fe185d0aa263f46af5d8e0bcf64de500cc2dfbc45db2b8bd6997c6be767570858ad7e5fe5d80075f5768e12d5959fc091628db5c20d13757d0da5ce00945e35647bff0980af7ab3aab172f45a858a652220276f4d5778b49378b1ab0c75b371564417881793984733b4c5f44a49b047462a5ccd8438a9a6c9d7781145475438d2a422cb84c1ffe2d6417a512de021542dd792de2820a4398525a134532daa819d242a8b63dffa3063b1ad3b7b74acec5e4ba4e4277c8b3c9207a9867c2fcc4d1c905689b8f6ac0128744ac2c8a66945a3c0b95be82e3998b015fd54c531852a39387555908aa84dba57f5f9e0ecd1dea0586ae73635dd1d66e295b57d424b383abf718de8b0789734a515a7b2394dc6f1176e921773dfe3f4859bf294c8ac3ecd97c9aac4fb51440bf5d586744d9a00d1fec0386633a74476b0561e5d01d900f450599cd15a316bf33d4b4781492910045be83d427fb3269016ee2a9df75e9939256037c4d70b54b9660919ae261f89072299dc8d9e7ead425b2aa8d89daf8989a21ba6f789dc00d11f92bec58a95b0a3faca18dad103f603b48fd9d58552fc7325a9178d8e9ce020871436a8dc5c4b646abc215669e13a43f607be51fde798ff92c46df01423f5c81ff74a426517b67f83b71e269fbdc810ab2c9302346f5e5d93499909f575fda27ddff5baf97bfedfa8f374ef6986013ed0465a4fc79333f8d4a0d93d23a487242ed4d52ad68120c4c80be7010480e43d616f54b0a8ebef1f5b9a85262870aa78a1550d67e41f063500ad81f34d0aa500f54ffa2c6b0d62e75c7b469655c5a6c2e117956e893efb9824beb62c62f173cbb391d5c22e8ae09b3ee1a5e7de52be34f0a069f32d5d81a870fd6f1b00326b5f88bb3b0d79ffce7486c99b193823ebe5930cfc6cc085901e7bbe4d3bd54d88b68fb78002a61fce62834f694700ed2e19fffd4a7aafc7b19e92cdd1d66ae6ca2abffbbe7303103954ce265093b75c0411cbd4c2eba663bef4625f68a51b35897cc2dd18c623748d3a635953cecc026b3f620c8bd5aa0cf37d25de5b70ec08359b03454d5a721b9a3646182dad27a12b968cb1a4cd0b4644bfd4d3522930c1383e10296817b68ea482619f41136ef21f2ecea8cb31e84d07230ac3c2c144aa45a163518930ac03318bea88691f1d8d5bd6275996ce9981d82820793fbef7b88e61cb4432fd4ff720ae17f6b2fe7d4d0aa45b2bca1c2ad7dfe7d558c4f0673fd938a0f4c6c367e9f9bcfa926ae5d453bbfab4d83702c0b681986c4d61c192b79ff83b5ae321bd5486e71f2c9ad5c26526ec55ed9060b215610bad1eaa3a32ea4969335b58ddd3500b2622234e4c291445406ac93ba65f51b1b37b2dd8b26ffa07c73cbaffc7a985ba2a09340c9ce908be4f3be4c44d9b1e7ac5c2020630ed414e2cb48993fc2fe788cfb182df97df822971eb240623e043fa549fcfa339ec65261e140c0b5a65369a28d94645c40c34420074437012f3fe687ae64065b4fc982b63d63f63ad46e1ea1d24409c1b5c8dfda0bb14ef29124f2eac5dfad62184dc1d23e2079d7ba9c1a61a546e0660e9f460fb90d5cabf057ae38a64b914250b6fad615176cc757076083a3ed8090a75f42ba172e875b7eb9194a792295060f3c41e995d2f7988f3ba3d60217917a62f3966b077b36644181af493ad202b95266247e430066e053d54a3a112ab166b8b51a7935158d88dbe0ac7e2251a1839914ddf2159d627c2274c82516c8f721d7e348ad23a92e58b6699a94019300954dc3d211333506b6a918860b18f08417725f8f6743502a6c681182bdd1c7cef87de2c61ac9370ccf7c1c6a7b95237f13aacc4782782af9b37ef45706ba44bfa37a85f7b77c87da705edbb90e0d22b7a111ac5c135e190f3b15a917b94d76f1cc8b90d3ba9380338aa62f8903532ee27d32df1a605e7982cd0a02e995d5bed1832e0c6a518a56d6676a8c4d10ea277906fbc06e392bf8c0bc145d88ab496a1810ddff059ab7276770c9c4ec9f8fdc49c82988cc4bc2ee9d6becbd6804a1a6232112538f337c3fee7dc8c3106421d16ab5519cbdd4abed7e1988498c5caa43ab274eb5cdab50913892788590890463d331d7923f77091b48840deb9a939eb28419e639dfd693dec613a82250a2f7bdb00e102712af5e8d34ca78106acb340bc6528e740b9174fcb9610eccc8a17a81ac992eb3220327466daad1cdd7f20ad935c45ffa9a4fac967861427031281a3d683487d302ee761c339fa5e37fc9fb0d29826d0262fd9a4ed788c7130f4b1997acb33db55e28b633e5c8c292777163141e223d57a590a22d1c95b86ddf124835aac11a57f1782190e1a0c41ca548c81e4974b33f416389ac35e661e48b15a28dff5ac207fe4fa150b0dbeeb412070f66ae4b89e49f90090df9d9656a9d0006dc501f4f3ea95337c26971616651f75bb3a0f0b85100b5a9441dd46155d6895f66c4ab125eab5e57820c8022ce5bdc1a896e5ba057e010e61ca6a72432b2633694182c253c66058f83f0eed000df04d40c03a4e4b7014f80ac82d8155cc672bee7fbc6fa225ae5082b8c2fbed9d642de44697ac335884efe4c5484d9233dfe48190b1b0417e980dac0e35882789d3351cdf6b4aebfe98540b56ab2c3a7449711023b3bfd55024a027ab76568dfda3065c9b92a505b72db4c4582fc19f02911497da5cce0ba1f627366b882a7550c9baf0a59224ae200156ee86d56548e68fbdf84e9bf008106965160d376a685cf8bf19303fe31fc83b685049338114cb32d323ac20545d1d7a050fee94c84910e9de0a86058c9228fb203cf3d58d4d476c187123e5b92f4b1c1a570a651504c3c33175f1a39045b68d922179e3b38b0531c104b89c297fd055959a91ffe21642c8ac9b8bd83be9ecf3f55de6357f172d477df27aab6c3e3a658acb527887a019ab69505c90996f9440c960c9303ae49cf57b1cfb04895d94835b461bcd2fa18ea257535894b184d000cf030b1abc7f96ceaf5b1045b701161fcaca1bbf369cd1c18d405509301c78cee4f8d88adbb13f85ff029786917f0b98d841c7c71d492b30306d1dc665eed5e7bba88d13a161b8619559080fc52a300915313d8c9e464be4aca44cce1f5e34212ec53e1a066c1d26b45cca9df6aed41abc0b3817540c9c2c41538d44fdd752a8a3a8e3c3143b9aefa829e56ec432741056e93d2a23765ab9b857a8e80f97cad8ca0df690b4c50b81832333fb111fcf4d1eacaf08169a61c2ab2995e12418a9b03fc9983929b83d41804cc89ac905fa486e642040002b5ee0fe002adcca1a8594614eaa83e9442c014f2a66ec447ea72c8ae5205f7c21421bba20984d790fb871151c7c68b139762d314126dd43438057c69be67e0046aa9a32a34974be8ca446c897f5462c05a33ecee17befcab52b410e83b991d313dbe6d7488494d5f0fd13d64bf6f7202fa17fc4855fd253a914f54bbdbf8744a5d62929f2c44beccf731dc2fed254a921b38eb7840b3c15eb00e386380715c54ea468a3140797a298a608d8b04728aadb6800029f3197dfb00ee4a35f196e3e5ca866798e2097d0aaf3e87f2743970c1a77ae6855f6d133b6640f7b3c3994fb720de9120ee65203ed6995a13aeba1772791dc9c44ea0b5744625e9367ddaeedced1d1a3cfc646cfcff4e0dda98e190d49184f153b11fae1bcf1c150a2396d382eeddaf9aaad85459ec34a829cbc0d1676c9bc2bafdcd622941143a06f12e87fcb89c2a99204eba9d68bb6d088dbcfc86d4b9f2b569c5dc8bb8e8b412b2aebcd34bf2490692ba2d745889530b8d8e2b4bf9284089f277023e730d075f4c2e3f89540fc1f38ce4a83d000d44bcfa35eca7161f5c164a92559ac68c5ab24fa395c56298f9077132161505662f0c70cced6326f1719ef1ddc55314e6b3d97012b07341fabeb6323a8cdc01a2d4127441685458657951e0a7c9157f74232ddf277b4878b17a7bee7ca8a22986205ac7cbcbccf0b902b4483e9a619c09ed519ca7d3ebc741f81f26246e4b0117a4b51163a15cfc9585eeb3560d1b6d5895931b4d73ab1262e5046f16cb01533a44377464db516587efead61f033c4e3dfc5916d3068e54b337c13e650beece39375313bf5026858c8b102d84d040a6c562be6a8c6527b192ed3397510e4c5bf1855286afd88832c898857f6f825982c111290944839552ccddcb71991d13a7e130c34f2588a53a106c2d1aebb45a3db6bd1cb69c8408c9569913e94e50665a9a07b4da06f91aa57cd0d76e326ee058f833c7d134761c61a7c0541778ad52d43139586a5d50565532c3d614885d416410617ab23b30628ddf93d0a36aa5e0b0b10117fd28aa63711f4f97baf35e2542fd29d17f77f0f3deb43d414d4570d92755cc0df316c62c85ef575121596c865ba07352e7e123d38d062fc3fa04a40b4b48b710256bf95c8eccdee37d077386060bfa76dd4e863315cd069b14e11811ce9c13593f082df9368b60d96c6e84bff2edda851f75948e04d98db6ffb28d108caad710632807221fe5c1f157a6d40b7b47a09583b3017b9ad8f921d5dd428d334ad911d4970485ab28a1af9c33f32e938217d3419497d94fa8c7e7e16830a5c3999d2b4a2fd603634f9646ae04783a52a602892d5796182b03e9ce2d309a77d5458bf6e17621b9c8b923429b80e2b150d886cacf96f66eab7ec3508c9850cbd40cedebbdc695a84b8d77040dd380443b25fac31dc55e9ae268d670f253556c2bdecb4d988ab0016f12989f0af25bfef018c1314efa28d9e4a3f9a3ddc57b27963b6eb3935c196fe7f8dd733086e0cfb6b2c78000272f64bda1591cc5b02e6148578cf2f775f56ff4201d8b8176c5757511c1917b53a36318d6637ecb8306158d62e2ccbb1b040af5e691a311cb89c4a039db74808439ca162f7e0e9eec1c5f5769d84b17b37ccf2b12eb5056ac733d184de067df67af22af2661a6510e28514d9593ea3c146a73a025886161c884754009ea2d7452c02211442441b8f5f406a243484880e8f607f7ff2247b203b43759148479d5f5fcb45c1d83f0eefe49bb805e465e4487d666467bee696b7948b193e5f3eaa709ca349dc659d70b35559545818d769dfe7f59e71dc58b7754308f4399504637e88a7d491c6596094e0c08cdeb802a0a8f08334aca6a2c0e017f07d8e63dff403a2d32a1fe3f7d2a81f642457cf14a5b94373e852667362222bf38a2a776aea0c13a8434d16f566a1ad238650075cd6b8ca928fef88d08823cc44d8f170dda5988a584265374559355e414d0d81f77126f47cd5cf5076d30a308455641782bb3842e78217ca45fe74ba7554aaf9a6707bf2c1f2952055e4fe66f222a166e702d47d39c2859f28887e072433a0f8aeac761980f489f938555d97ea53f70fdf525b995b68faff4d93d7e127ea030124d1fdb77aab1cc7da0abf5165af306279e275b979676f742d54f800f1bf506039d2d16c85a80b780c60dfc1216f65838d2dacb0177c7724b283caec44c4243cdd7a955a8364e9fbfba186533c685edb501956cfda7313c2b9123be10673d489081532b7f365791a4d66c0a215919ae40923f093a71fc4941590d9d139930719abaa8b59ec677feea8e0492866727b788e52b132b949ff531cc6a6a05f79d43cd4c623cf4620989c721ae34b284d94d2fd364e310687222240fb0db9ea0344ef6111aab9a41c2e456417687788ec188db18ae9d6ae6c38d0e52066970b65aa5e970dc92efa3707edbb8307c5743622ff15478d10c91d72b4f33dcaaf699150fdac6865e45c6d5479da8058f52689abf1ec30d6158b2454391b7b895f13323eb024b033b9b570a4ab75165d8d68a2911cd63e06944a1aa834aeb417bee4e1164a6dfe89264ea123b705cf8566b5e93127fe100548c539e52af35f73ccf34f9d75a385bc9b2f1e00b40a93ece0ed0c0fbdd5b8a18fcb46e7c04e82be5110d71af525ec14bfcf7b8918d247b959c462d54737fbf67baee2a81a05869163602a2a581521125218253768ac586578ea66c7a0c5cef6d2ccf0d87b9b44cea8b75a7d04a3f48e8d364a3707b924bd2b922c354972bdeb0a912a7e1060d1169da257b51d64cdc3542e87e42ab6f87a29b941e77f5553168c200caea64ac276ba3e399d5c2555aa3be61081517a4b44f054b5f0413d451bcefbedc354b1e4ba6bb1c9a5731b9720f18e841e52757f0642311daa23a3f6c5b6b8e0032b0f42b335dd1880ec63c6e3f6059009e446d92eeb193365db714ee3b08aad62e3f25d689fb0a251bfac34d53cac44ae9ddae0f7a87209152a82850b8ba0cb9e539d26d737cc523d06ca5627642f462554bd4dc2710b57498d779963ea5f9fdb5d37034bc1662e4b66874b45993c5b2c6c39d681c67eea99d88c1c2a76aa83cbdd39b68919df7c379d597b9a9baf5ffd5bb7088fc24795559a12d954c007df093089cf5fbea5117e875e66ca896578ef8bd563c6ec239f2f3ba051c850ec96a7791251b37357f0d0b1d4d2515b9304447c2bb1f54c8684a94d6196404b8075c8419be07af3013b290d09259a828650e640d44fdc2fad8cbc4ee060a50a0b6599b43885942638a745ec578948218f395a3f433ea1050b7b7edb62032a7f753b307ba44861b1e5e1edc02a41b952c91006e84cb1a5f215858e07563fd92a9e39371b4d94edc5e18482f9315b2b93b7f28058daea81d0908c6ace9c1b5902c87086b378585788d519bae69edd0444d2f3d6b115b230d2f014ea168d97b18bfa4deb7d60505fd0d0ce2a3ce87979046cb0123e7d6579017fcb727125fd043db0e74f6756460c3dbfe0aa883a7709e0f1072238c775ca5b7c76f1f075ddb95d077bac7511655f9e6bcc8af73fe7f624056e4828835fd2f5823d450b67eeefa61682d134561d704c9bab7d6f956e1500ceae15b1f804ec9512ac3c963c8b2ad43fd4b583a254b66c916892d1789b01146794a14435c0993671ca9612fd527aa5b89dcaae9297c45e7a95425b06695464a924ec7946f3829f9bc0903682347a40eecaee97844dd85b72809a853e4d63dbc5c1b9849cfb612ef4753a2cc53d918b91c6f145cc9dddc46146e83822c25c2840ece8a869378fbc114ec0ea6e30321c4ab0031d55180713e366c6d724e91266c5a11b45b129b9c48b8619a398fc8b1bc311ecf259f36aa6e4e25d04a886405575049165f17d499c9c43a1a32e0d90222a295262ae3fe752faa4134008153e6c70802807a1b010e93397a502ad44575c41d06f7dace626e14b50598e0d774badf8920bae71982edfb976dd6ac0883d7dab943360b488512591efce5eefae5fd1b8e2db77a76a1c61f64abaf17447cc38657d442fd412b5b6c4cd97280217fcfda811f104c6165589b23bb9b2a3c270d91127f1909586063914411750589908dc43106b26912058222ca5f221f6da8e497041fc82859531aa482a50ee4c100756080ac51d113c25ef8fab42b6c80f1b717cdef52016522a604efbb83fa524859f48f4be929bbd946265f680f1a3eb668f893aaad0e1ad241b20154995c6ddc3e38bfa90593778696d7a81fa62f53a48532e7083b15104cab264f7e4f1a84667e64bcbc761477428e6f63ca161dbb478211cb416e95e0dea16dee5c61b22a5bdee0e740877f804e3261aae493ee33e2edfd86cebd9a4107a381653c9982cc5eac49475d1c98185d899a294bf713bd77fb54e0c851bc6e099450c1906c1a49017c71e917d3182e3a91a951f1b151432dca4acb0330a9b4ed90d404a3f838925f0809455a797773e910e1fcea8bcaded83fdec3590e964df581554cf2639b364999e31c85f02cb45de13282fca4902c39d0da54c0d663599d98fd66a7e4ec41a1076cbb3b095e2705f5493f5dee7ad4dbf6fb18790c4e1828b4301a7e50e700f13940dc03818aa60e29910eab8e12d47aaf255f4c144b51f5dbdb2e5815a791002266bebcc220ecd28888aa2e10ceb16fb97670d6c32942e55d3a719da1884079f9ddd0188f7fbc4c6992c53e424cfa5dd36ce9da8ebb3aa2d97e886c7105941be261860bb09b33ed016874a4db3e103ad8ec83eb126360c6ddef83022f86b1cbab28c2793e7d580a2375435a8adaac32de06fcee90a0cbea425e5adb1152b8c902f2d77fccace2358033722ae5ed2e2880d18e77ec8ea3ce75837662221c0e8132bbd0a6d8a6efa8f4caa7188f3f5269e867648661191a12f5802675937d308f0578c806296d8a70e50d5d217d0b7b26d4ecfb84a290ef4bc891d26fc4b92aa9f81ee20ec6f2e5b6a80fdcd0682aea61bdbee92a92eec69472837b3fa8b74085c9c1f7f33342d50301489d6edd3dbdfdc1645b69cd60af31a69279ffdcd7b26315f35cb083c180f5548ec33e4b166759377ab04bd69b01df3fedc96eab8e6cdf25e9d7bd3903238eecda609b03f4b40e219c8ba28fa647125c1672aa2d95927afa62c1ba520d3976ce0b9337001da180b95c91a686bc0eec6e4dbfd0c594486da8ae94a6073e6f2bb625201a5120d64156a10b54a017989d3bd2708f1f0e333915832752a81a44eaf34c50890ccb799c743d50cf0dac8021189b055e74d267a58089ffab3386e696be07e2d16c1ac917461552fb5b451e4600e0253fba34b45f13093dd1d980b424938a501993c4642a0f59cc4232257cf5b78fc3fdc9effa7331c3605cc0c7c0ef64a848657082a57c4b61a00de44919000881359abc1b894dd3180a85caeb52add8f2ff82f24344e29a5d5e7c8021631c449fcfbf51afa89c146fcc406374c90b33f2ae044dca54ef8898664e25e723b85cd6c93695dd4589c03bb7cae4763e58bfab341fad707bc1f8904aae25b4241877c613572a3cfa6e86dbf7fb663d064c5caf4eb826b395779f68b60a7b964aa201347af19a5080605d8aa4e10fcaecb8df3861d59dae71b2e54eafcfa68dae0ce2f5b34b9de70d856d46478ed2840727bbb15613f69f5b2586a126e4830b774f372336fbf8998b3a1157053901afa2d3704642258aa88b57bb3292b37165eaf0641857595d4baf60330a52ab31e6e1d3007ac9ac41302347437f467b8a295fa457a221ff609492897266bcfadf79f82ef5dad690b5f6b34a20e866e1ea25fdd8acff8f629121bf4bc9f7946c5a79b8a1021246397b9fc0ef63619d54e8f3dbea2ade805ea4e7d06a76706c6caacc6b69d1f6a7be623bf77196bb613195599d3659543f9a62704e167f069030b0e0344c9110deb23b8d898410ff50abc61bf8ece6d9ed02cab0ee242a4c243f67f73070b2ddf1c74741f8bb12c40be943483b0e2e79b706991f0489537bbe139f3ce6390944b86ca372dcf24fd64fc80e427c1e5116f7eddeb6648c3f6a3c9dd2bc23151a1e39889d83a21659d5154101b9ba726a703c8f11774f53b7615b82afed886a487017b2531c05a2548bcc2d59cd28a6d03a2f16069419ba97bee38600247b6d00445acf9090cd0e72592a219045e6f0d52e972bb39308cc4247606376d7aeff692ebe51af6f81075348c9d1fd248f6b6f4d090dde06a1cacd1c7b9b1ef02720cfda43066f56bbf2011a48cb9d9c3b4c2da0055fbf9aaff1fbe8ca6248a6fcd7b31a66df8d5b3de3fff4d6771b86dc999db72b7ca5ad690b2db37f28e768ea29c225b987ec2cd28dc630302a2d059af98e25a801b9219fa61b5a218a3a8f9b5599173a8bfcabdb21ee4604200c3b94b1048e37394e8b57b70be684066f019a46e34db25d0d3a4f3fe7a2cc961498e659d8692e667e630fb9d35bc20d9f25b00d0c4aa16328d059d2f48feb62926f423fe0c98c7f2939b2d643d130e88375ca89d78f90a5696c964fe4355d0d3693bb429621b6ecf3b94450f093d571ac8bff64d28cf7889bec380c0fc08961bb13b02dd3effe204b7333a4fc5e891aa9c89305c9d45e8d637da0519331ea478db8c0686c65661cb045660f092bd1b1902ba1c7d4625e53056a2395950308392a64e1dc70271e7dd317fed7f0ae2198066987a177720c409404b947439d8b5aa1b419dd8f4afc607efa8c28a53eebf602a3fe1ba7857fae202a9359badd2b098da71827caa7b6bcdcd091a4be43eef93cdaef9f68784f85e1845ffa1b8586699abff010de56aed773518b6ef7fe16eb2dfa4398b4a112f8137279c8c7d217d1b28a9b556ef32b047ee25842161d52b530e6cbb906c0474ca7f22c29e0527cab13d7a2651eeb82ad34dd564e89aac9094d9836d19a29cb6873b1eee46d506ea0b5004cadb959a3b2e0449d574f7de5eb5486078062abf45714d1e87722bca23f4d13bf13696c94a4cf19b5ab53726b2a0913e0128452d471b684de179074f45d75be47434b1640d95da47e12195c4d748859ba5287bcec12092b4db71d1ea5cdeefddc1c64297bc7ea6986e0a6c690774f300dd5bebebf8b314af3bed429c9f45868ba2e580e9e154441971b0861f57881f3e488d63ef212246cb1c22b37f121a4e4aeffe4d2aa562a6db49de0c8dc50ec3a654e54b05519466b12713980ac2df27c8dfd275ed2516ca286fc7ee73018fa07a80d61f6d54fa7b2f95eb13977edcfd6cc347088de1d180ceb2e3c4456e15c9db624e8382724314900d4d7d6c421ec159f7fcfd5ea56f17051708f95203b465cf7eda69ccb28c5309ef28683da4b977432ed051c6929992525e710b2da2171488a7e305028be69f3f53702de8b8f9f98b45fd189c86d5c87063e55c232b7ab1277f0307d4dee9f24d784e549e881d399fe245d18af3296d0a6919c1eae6746372846f54ab404b91a3e28d594c6ce2c5c9b2f3e1c2e2b973cf8948c871718d0878f8e1261535b220e1d6df96f0ac7a36c023358f000c39abb1eec3ad12495504937b0f424079b3a03bf7b0d645d4f40e906f4ad52b05864f9d7e5a62f8ca0f3806a9a5cd536a748a2f15c2608ce5e0104a89b6a5ddd4e3feb4eb4038435175764ebd431625e0ebbbca051fd548b740447b30f03c0a8e4526b4fdfe2de662145a27d6bdf7f5591ccb88cca73147daa0b062bb51af24d3cc23d1b362781e670e993d8f8382e2ef306dfe79a54281ae8b759314180e76b2651633963718bfda33dc36e9a8faa98e4dc634d8fe200a57dcc0e80d79b31607b93dc743178ea77de3e4def8f4a23876637a581385be74153f84fec2a043295964bc2bb68165de0b100dabd91254ee09b975c5bad267dd084aaced3fc863fce5f0897769e1f6d4f5e3a18968d8bb93e043b8ae5ceb9832619a79713dbc8de6cef25eedef0d1df4ad02cafcfd685f40121ea703de89e938a96a666d1377166c5a860abed2d2b398f47048177749a633d372e817719816f8d0873e423e3adabb7344c440514e689f39632eea99faf50b958432c55add8725e89af7067df4bf9188889090b6b7dc5bee2da5945206550671068806b1d7ebf57abd76c9643aa152dc36d36df7d2a779275ff795dd43221a6d1931c1bac24a4ef695ddf3d5b73ada326252614d62436594b22ccbb2246343a69829668a9962a6982976fa662af54dd584d130df0c47d40ab5e9f9333f05d4f97ad039d047a80d5ffd7a35b003bf1ee8639d037da4c6e55575c80a54c6864c3413cd4433d14c3493ea63755eba1c720d68155fbda3a527fbeabbf3f2d5495d0e5f9de61a945166546845b12192244992a4f9649ee480d8a4a845644a8e3820be7a0cb74941490a4461b1a15a599665593e6b868686058b9a1a0f6f18da4ac398df967c9542b949db966c588a06ac8b7a510d05e38282d1170a46754e35ebe2268fa7daa9369e6a279a265fbd46a8e686afeea8261e8235280d47d493af2e8235e8a362b555a9d39f226af53aec13db78f322d681825917371656c6a20c9551bebaaef960625e5705588c794d1b2236f531e6f555f531330c30690969a2b5634aeb07062d1e268694f021891e905872840bbe6479999fb2978e2e374669d592b696b786296c3b628f7376c41154e8e99a7442fe1107cd92b5ac5118699c34df9c012190a261c9d4d148021632312b3b1a4b50b38251a5ee683481e3d1b84258daa411f86da3f10422371a59780d829847d4af0f5ad3dc189da92c2b636f0c5efd14adc3fc14a7df58ecc67e8280a3d2ad8a9e2d46d42aac5ec11aaa9f89a930aa14eab439753d1362df62549f3b4f7fe068c6f516ca380e637c2664e15988bd862b266f7d6f79ebf4b4b7d0783e9688de7a45958866b48fa69eb76e533daccfafca74450674ecac703c398919f9a861349e9fc6b1cf8423867956386ad8ea6f6cc250a9b6379b36de6bdab876ec51c348b30983739386fd0a4695429d4c1af6d64b334f89b74e1a819fb642b23e6173116f22eac5a21d17d54f6b27ccd26af53aa1d16ab524309eaa91c692333564853214b67d358c593df5af86306f5de75af1cba321557b4b3de72cc6280b6ab1751c8e62d3c6ce48af9c3da26613c6e9ada760ae14ec2dea3561605791666f7d7bbdbd224ed586e8d9823a0a1306c9a953d8843172eab43661804ebd9613c6e7543b754b9b303c2f3935f99c53beba65f2d52fddf2d571f5ad276b5378f25248e379299cc9acfc792994c9a610f45218934dabcf26989f727da44cb610f5d82b5faf93af797728cf8f3a89a650f5a550f53b2485284c1beaa390c268ad96960c2d6dda78a6ced1282a104f85582b4f331139e710a8f80285072b08018aa110b8a8c0c91314e8f02406f425872f35e47c69c10f565c98c5b0440f2b50818c56a9bdc0c9134cb06819ca5aca8e6ad1e2e48a2ecfe2e7115f76aea0c560462bacd66c792989b78fbab0ecf106c7bbb0ec49459c45bf68bdf6e28b71adf65e8cefc6454b6dd5f176b95c700e7e5d7c370edf7c6777a310c9a274e178a5cc382edfcec357eb70bc40d727e802e970bc4217a6f577c111bea4222c598ab4d4aed5f9eaa59c9d1af4541d65c9d44da56ca5a9ef496d41b143b55569d0f7aadfb2b6aae796d6f2b275bd5ba7419209a58a6185a8d26dd55a054b963aab42d5c5cd4dbde1a63e817253896e643fbdc2a896ea4203b40bade6d49dea339dd628517541492aa35268152c3fb3fc745a569cecd3a94f7541cb92069554a8a437944f4a283f7d03d505cd59b69655979ca73b3f9d921aa8389b5771292bd99e4423788bd5cc46b9a8b099bd21bfeffbbe6f8efb574eed8de9d2268d40abbb544954966589227d4892244f9666f262b158ecf5ca79bd5eaf1142161aa0d168b492fcbeeffbbe9b1bd4dfdc684beb482310d5597d2a894a5beab23491156703494b6ab223f3178bd927b1582c16b309408bf0f4942449922cb5d65aeb7befbdd78e260d9cb46fd2eca47596cc4e1a819f2de56e97446559762549933e244992a4a5592c966669966669963600115ca6a765599665d7755dd791244992b9961cf8594de26e2d77255159966549fa9024499224d8949ed672ce39e712f431db52972557db1cfcacee465bbe5e4954966559de7c247c2d2f9bfb2a0c061355b83f62d8bdf7d61aadd11aadd1da46619e57c74218866118e6e0bdb5ab45df5a776bf9d6b85bdb6e8d001f019a7cf5020815e0a3a1019a1ce033c0013e1a22208683001c1c5b294ec549fd247d9db5eaacd6595761b9c2609b7b3454e1baaee099387e1f0a3533d3a2c56cc4b0af3e4da85c9d5917b852a975e1f2e06311cfae6c9abb11f83836cd404deb79ebbcb38ae30a483efaa3200548aebfaf8233c00ab83e12a9e424f7401afa4ba2d625529e36f9e62f783705b66bf0ab2058816c5d93d259f3688334f49344fd7d14a4a14ddb3b90c6ad2dce2bf9f512c9e98b93e4f94923d1c563db00f7b81abb9f5c68456fe6a540d6a3ca4f990eedc71d93e9dcf03b66e5adab4053b11aaabfa49c3d7a640c459b30aec7f624a78d0b7bc46426df7aad5f692e6c8ff6f5bbfee547ac336dacb320706de09105016ce38af8250e4d1b9b8af9d0b3c5d8c5beeae01e8f6968b4192b2c2b44a60251cb5a2d268a70f52f9a64c42f9897a1ae040adc47c51baabecb49c8747674643a394866dab5844b09d7ccda2d82fb735a7731e724c01400fc94e5f8fc88ca0c0f7c7e666022c6021d3878186288122ce001071de4c8c12c2d576badb54a517eadb556aed6af4eeb90eadef3d573f59fb21c52bcf75396a3e89fcc1d3498d35779fae6c1434f4c0b24ab188f55085ab62986cae3478fca5b39fbfe94f1e061c50e6a07a71990a624784a42ecec1e7c90623d463b8cfc803b7410f97c30446309e22541a40b0248de2108a7a3861e9b0ed208fe22e4e2a0880502020812594e0f3a23ac56de92f1a0f2303f653c76f0f8a78c47d18f37325adc152443f144b810650a299494a51519bbfaac9e4d202b2204102028108222e3a6522cb6a2e0498f6d41c575c489163846c575a4561d36f539a3d2ea22c811e507f0539603e8bae664b09b6031f6182c46abb821e6321224cba10345d6420dfcdcf3cf47ae3f12758ff69ec3cc3e590be55bcf50deca5e4fdefafdbe1af4cbe81bf717f3c57cdff785ac5d633e491c595ba4318e2598bde7f34b307b927fe38e29a5806331ae451b315e126dc06ccf493806a34aa150a7d3e934d2a3d3489b4493c9442291482492cbc8d7c95ce022734136a2dec95a887de77a148ed0823df2d26834a6806314acb1dd7ebebf8f06e8238ec5706c16c3311a540a02d46aa6e3ba2d7f417bbe1531c7e52006b053b3af56637bc30d1a9e8e5668b441a3f519edce6873563e8391f1d17d5c35c00455e837d60508a21db2aeeaa238ad2b4a6dc0c4b147e41a71cc2cc41971749638b6c2d07a68ed908d5271ecec888963473b146e6f9998382aaf6ea74c1c194c95ca59ae3338834539caa22afcd3aac2fb7666a95585f6ed4c15d6b7b3aa0ae9db29b306dbd2ea024e3e6702b611cb55aa90fbd059e2d43261ca63521ee33030a9144c4a9cb5f5806e565bd565422b25b4546a6b83fd6c957b8e8a12139e2a90e95d3f1bf498b0f4ae9f91c784fb5d3f9be43121e95d3f7b9c5462c2d1bb7e76ca473b83f1fc30e2188287f110fc5508a31a5bd4a242eb78b4582c0ec649c56cbcb14bc3242ef1069b09590b42a0a2e0c990bccd5854920f40d26c8b26efe4799ee779de16daf4f7fec471f59d4cd3845a124762cb137748ff561c4aad10a56e77463eda2e958a930496b6b4aeead996b61cbdf5e3b6e278836330dfb92d73de7bb572b7e568cbaf1f8ccb739d48026ad1608f5bad3661745ef35623057d7592897a353d15b053e567199ab5ee8a627bc0c6de06e79b7341b0af4ea9e8014d9bbae5ec381c85238efdc8bf8a83471c8f4dd0e44b3e9a6086c7e23872cfb507dbf44926d432e7bded6a55834b5fcd6fb1c465da5407b7578fc067a7e30ab3cf3e7a403454bfc5ec265892d7e3c1b0f4832736da08fa6c6ef2fc529950a4cabf537ec425145fbd0955ec09b088e9aaae44699b00ad7c75b0a8065f3d8b60941ff6e8018da51f34f1158ca28ad53c154b5c5ae51e4d331dcf34fbea205971b2d72ed5853d27ef6c9f55d05ba1c73eb69edef0581c419faf5eb93caede552ea38d7d0d199ac6c1a564c9bd1e68e14a020416267eb80071a28818680c2cb0c30faa28216a8207123e90fce860432c091ab0d4178e234ca8800533a0394101940ea440e40911962b8ce88087a21da50cbe0c89f108122266f6d53f6a2fb678e3ca79372e7778ab612e775e4d5fbd9d48eede5339c1ceb9ced35f2c534ae9bc946e5bd7f90437ef5ed575cece57ff745e3e5f7d44d656bdafd8d013284331a2325643f598e38a4c58b2988aa889364d5a4c35138d92403e4140a4108ca4e08cae8c42248b52de9394d3acb6eaa9acad3ae3fa89cb49cba9cb89cba996f33ad526add5da7bbb4bf7a4af73f751fa1ae603adb5f2534fcf671540fcec6a1151fccc9ee427e7f309257e3a0a13c6e62b273057607a5444a92d2926a829ced9eb63cc8b8a2b275f7d83b9f2d5b185e9f9ea3aa49f555e6a8b4d31f9ea75bbc9a8295fe9bcf75e5a2c168bc50274848de338ce627c592319346c3d372b02ecae4e2fa5dfad38ae9f3e39f0f6c60a6915ae37a220f7e00e9781c38683754d3d50dfd0b2f0dbe69be39b124a2f0cbfffc21c4f531cc010870d07ae7311acbe73156ee49f93846943c16bedb4b1db0d3d30ace00cebbf0aa7cd0dbb1be6b721d59eee3a2a5e8f2877dce68d46163e4f1bbdbf0b02165ee0e44cf43971bcf19ba89f0b62c296398efbb23792224b08153182fb292b22c448338e0f21883de6aebaafba9f13bcd65ec0568b657bd892ba69849e55d75a471df7d36eaf49e0eb3a5ba35c5b1809202b84840054d413800a648507c7711cc7712c004a024a0f0839f088423e42a01d070ad2a30648870f165f76d044c13383831fac257c645ef8a127e6851d76388ee3b81764e081798108f982901774fc50f1f3c44f133f48fc08f1b3821fa19f2044bc10e101912688c888f840e40911244488f4ecf854e173c507063e4814092a72834f94d611d5498f1c0ee023430f6d64077bed96737ef9fc906293ba10d9db1452e4f80c71a2874a8f0b7a7ee819ead9a127073d36f4c0d0f3d3c3d39363481543a218926548d1902b1d133bec4d0937073842a77ea86fa3ba0c21e245217274257ca899214dfcd8a2dc7e9439ec101eea9019483a24c90e215c9ef4533664c8101dae057b73d8dbfaf6b55f8be366cd99663cc22e023863cff86a8b82334040afb0e2cbdfb84e3fff0567709e411a22d4749dedee087b07d210e1af4fcbe2b9705ab046ebafdb1ce6eaaa1bf77161ae74da3bc2e265bdcf7032953669047edaeb32b761ccc313dada5cc38266862513b38251a5502753699346e0a7bd2e731bbeb6ca7c86eecd3d213cd10dd18223d5880f2eb2e5231382832bd6dad56a35e32db6102bd6b34c880c6430b96a2bdeb6cdc826fd940921fa7196b0ddb16053213afcb66ddbb6b582b6d76407412d08e1a9627f3f65425c6825d9a39f32524b2b86ad7fca482852b0bb9f329276397c6d15c204ae518a9fd2eacad3a6884db7c7f8ad157788af93007be9eff5f917644d11052c3e0d41cd6f32bf6d30aa05bcee3a8df318a4a1df8a394c9510d6d74fb7a7f7a97d115edb5a2bad568faa8b9552017c0ec0671ab6f87cc51004711af15a5b6bebd47a543d88e7401a3a7c4d1ae9e7dc3d0b1587ad1c8fdad6d92fec7103d9323247c7de2ba7727940c769677dfad38227d0d7abbebd549cf627c8143a9d0d52c4938358e1c1056942670bf2821f38c8103d6e0d02a587151fe065e39fb22032fcb8da61733f65416258ad8218c9d9c4eda72cc8154a8c20bd1fb66d13799efcc8566c0b64c7c6c3036f99e7c5e3ae7cdb76c8d8b66ddbb66ddbb66dbb62b764d8e38aa7e8637eca82b4f0dd4f190f971f6f6645e8d9c28e3bbc2981561aa3f30d44fd17e668df916570b6f34f8754460ebb900bebb4c16ec3c7558645e5ec7019a9690030343d177a08c20c61baaa7f619daeca80af2e837df49c7df49befb4a13aec6464199c0c9d3f1d6e3274f7e910cbd0dea7c32b43eb4f875686feb8cf1b7d17fc32185a19dafbc0b0cad09aceaaefe89250d545eb3703b475827794470f865ac6b7b22038d224bde9acfb8eaeebd7e1b6aeef3792c775a7cf352b5962cf6d44fde1513c4f2ebe9847e8eb91c9d3332d101e1e3caf2a261029e69c94ca8014c98050b1322046cc29034234c3b3ee7976863526b5409e00a9813e109a3a9dd44404adb49652506db5b127613fde9f240c24917ced9505b981247b5c3287d3a1ce586c0930032f485c2165c7cf0f38847810459090253f867042c6bdf7dae0de7bab11163f6540761efc29dbf922dba9edd0aac88090ed0cc9769ec87684643b31c8767ceebd97cb3b391f97bc6d9bcdf6471115da799d27c4c783a73dad13f4d5b10e63fe215482fef4977dbe7afd29fb417ea5b2a7ecc7ebe7146fb50e6eb4d6f6a3e0476d77e5c6f6415b6b9d90f9903daab66ce86388fc53e6c307990f1d68e87eca7cc0388ee37c90321f3a5dd779fab3b40717598f5aed91e5511cf63267f6a6744cf2168e68ebc157ae13eb34f6336dda54cf24892ba74df5ad366daaedd960261fed153c9b3627dcc3a63261d078b58f4a394947e5a321b068c2c85e570e027d51645c739930b05796eb2613c6f53ae31e95d78441e3d4527be3bdce391ae6dc8d58787e169e5b9a194f6605a34aa14ea10a742a9184465181b042c0f17bb5f038a7852e733d57e824d168a807a58aae1d7be4e0acf65e529e36d72fa631ef2589b7b66accd92acdd6f409d298a43d6dae7f608d70da5c0fa7cd442147870e90c69c361b38a3f3b4ee3a8f03295082755dd71e7849ae033e2b0ef69f18401a9c8129e72c429217b29c26ac8e63d6c58c81499d6c697af76271ac69819ee779b3c6f34010aca989f10362168e7d8213a81159e06dc44d52d8e7c418e36f83c0b789ac1aafce8123df6ef2192c8e27d0eae1f1461d63007d7556087ee0043e5a6556aa194761e7c614380dd6d8dcc6e76dbec919d31e6dd82b17234a4d0dc618631c2b6c31c8183ed8b718423f722c67e1b1e734460c9f3146d08fdce68936b0b3401acf398aebb37c0bc71840cf25d1244a92df705964c4427e73dc63bac031ac3361b0f04d646167f99802370116c5187b0d8bf3183e600d967bce85d44db02c4292d3843f139ac21d6e321c730c12c7ac0b4f461c73cc4a8411714c25a6441c43893886f3e6d1ac8b4d5ad7f5ed63de2b8f569aef513799c4524964710e6ed2bac054aceb7ade2371dc9f38ae464c65acf97193a3d601c3115a008e48a0db18891f887b4c176d4245925a91a2bf18d3f0b887fe829f6b8f41569cf9da63fcd01873868e01e4c5f8a1312a8ebd8d8c6394e6183f94049c2a656c80cd10a381fc9b9fb226b49f01f602f82993a10736e4fcf7292f3fdb207b04fc94d9e0f3b21ab0c86a8022ab41cb0b72730d820ec238a5e278035bf92a238e2960109c807efa813548dc0b9d173c2f38adb7a3c29273e1761d922ab5264aaaedc7b102cd9aba1e659f377ba7512f784e99a69ca2469e7a413e77c5f1c6a5948e9c664a73e75a648dbcfa764e1c4fa05e398edbd549205823e5dc97aa9c6faf3ba5d2792415c9594cedbabbf2471dc755ce33e7f985ce8b1dcef38ba01fb7dfa8364895bed079b1f3c2e7c74d7a41fe78a3fa762d8e2fc8df9e35d5a20dce499e7d4c01eb5ccf59dc19e559cc5cc8b9deaeebc7719c8f48fbc50e2581f36d87d4862abf210c8944c5173a9b4f2ab48f0b4d4ec11a35a422427e2bfacdf485accee7eb91c94d74449d3432b9e72393c8ea7c3b37928afc367a4521b89d043a4ca80a475b1cf99db2372fed2d66276dfe8227fbc8417fa103fa0b1e107c41e610fff6dd0b1e1a63a4d4a9a83bac933bed611d1a7b2e879e27e6fb5d165ff05012381105db759583a6948213a455c8a75aa11c307f3fb055905c4122050912488640b202244e903489814b0c5a6298410c4d540124c38e0c399bcb0a2e31605152e5e28b95c8a22819fa712bc141899012981252890f25af24589248494294e4492c89d09c4978c69ce43527ac0a4c0aac08205829c20f212d55a8f642b41f5b3f615984a4b8ac0f210c9640b184064b9848e2b3e48825422cf161090f4b624b6a58a26409d0121d255528d1a24407ae1f38a5029c129836357c80bd1148c00146687151f9af0324f080082c91808a537de5ad9b12662b6fddbc60af7c4826242433228a4c68e8e7939f336ae91412fa711209c11c201424929ad02e2a6039c0608001c17460399058810408c914487a802407b45a0cce7931ac56843f4a29c51b156e66addd38194a1e30c698cb485e3238e1388e4b524342be0c4db68e08eaae2e97524ae7787566d8a1a25a2b572df9b79645d6d6d8ecad55a08b2f85d12818df197ab3db3867ae2e3b9cbf75e1b871742cbea6cd15a9385e2aa19dd6525be2200ceb612483c10632186e002d9d17e5b9f0d56ba14e2f052e2f2e2f2e2ff44a0d0b9a19964ccc0a469542713138994a1b0f218dc04f7b1dbd4c26b7e16b2b0d8362415982b07c90941f711012b2a0720a4a29a5945a11e5a39d684a5980f2e5d7a19f2ffa24870e75b98ecb17c7711cc7590e731c572fdeb8bb5d2e77b9f374f6f4077a1f78af8f724652a88eecafef3ba55498942a44a506d51b26ad45ad859656962e374e6fd811502854f601075407f8fc75fb00ba8351300187cfd7ea53b1e000aa32b3e080d16aedbd98566befc578bb78db382ee78ecb5de7795a7fdeb781db88046e24d2b7edfd6da5d2b799ee0dc79b9bbae13882eabb30dc168e2c60f92d3c61d94254d1168e23fcf554eadb42150bb5df9cfec602edb138a6606f82b8a8ec1b86a0264148827c8c70dc961f794b0fc744e5a4e0b80d86bc75f8da5afa290bca31f3412bc70eb61cb97244063d5b06656f440491937fca8e58f1638b47ced9079b499623498e18e171e4c905e2c7ca4a80610b914db1239ba205bd575ebc04d960488f0d39c438ee0534e4e4c4a04a172219dc0c9edb62c53b234a806173dc911f475ac0526dc5dbb691467830924310234246808cf868ed14b9228722351f456e50a48a919991222334275c53f6787f5a6aa978299df7adb5292a8e316f7158ea96521af4338bc6b34e18f14f003cc7711bbe79853b8316e1e9567172727ca0e290f0019aaea8f44c7747ad748868000020010317400028140c8ac362410a43711ef7fa14000b647846525a3418cb8371489022410a62208ec2286388218418039432a8ca6c148c3bdaff67fa8df61f82d0afc908da4323660f0a31b0d2dadb97135efd8a9050926511cb3d4926869e7fd41e78bc5cabcd7b06a2452b0e782ffceaf52bff063f3c3ac5950ff8910bf1119b0a1d2fc68a231e7ec161dd1aaa9eeb6e9402c577a6a3bb6d0302313d276267cc65ed53c089673a08a1f37c503ccc47074c14d341ec04c091980e81fb4c5617be4734a621300765e7820a70eeb4617157c071030e2048c71d81ab62924f3466152c7013c0c011cee7f8d1ba1b00d38ea3a33ab1693d504d11ba7aa2b19679e76111d4c234969a1bc1252edf4ec434597ab921e68d3ffe51b5ff73eccb48ba63f7dede43a7f9b0ffef6cf24a622c83b19a272f9a8972bbd3568d47aa0605c14256493877b67314df61acd8dd6bab9a61637c28b333636efd3a6645d79eb12e4176e3940904b317c9381c60321939a326fb095adf28fe17dc65eea1b2cead4d01def2f1619e6eb433eabaedfd71ef7bcb17f3b38155fc7e102ab754b0426f37d0e5b4c9b9e5d3e0a620b8aab84097c32ded49075e079f9312595fb2498381a12042fde09cfa6f3aacf8e81c74070efac6b5325a5fb26c047d0bb2620d4436fee740c8ada525e6b381231ee24d26017fba3b22d99f444d1b1d0c7e29442ef7803b07fbd704360081ca5e9e60442a0f88cad7ec00b9f680f8d87d713cad7b79236d29eb67394079ec7d7a234aa495d79f83f619fe195ccefbb16d5415280373898292683864036892fe40a5490c12374a8799c840201d50f53d7309a0df7abb96f234c0784e4432a8b9bac446c99dd5f7332e862f02a5b0c7da2a8e86b5a2afd3bec7ff277bce1e4ff097ae8086b69b6e06c014f214cf00c280b3489212db6e542c804560e23d2a935e8971ac4c2aea1fea528250b14169fdc7fb608d9243407cb55e10728e6f9363595e766b1c9630c1ca69bdcad650e0303282f1de0c1e879126c287f7963fe04ff3056b7d9a34b278cd5afe101e4c2721ea9be02a10b2fc833ee51f1ebe9e86bb5b5799340f68e41fe25566887f9007efc9f825eb9f3c1a05d7a81ec58bdd225d9fff4624d595625cad44b8c613ca86ff33532968af30f6e013ca694364a8ebd3c6f9b669736107628a5d6c52aa913f789d10f7b42515ba8ae85d740d43dba7858d5cc0fe4ace25cd07f54572fe304e7cee4a473a9e34ab82883d19237190d2127c65a7102587c3614d9202454a73eefa4ba3683d41a27a73025a378e77e974dd2d51e1bd9306e12248d84dccd0d2a57e2e302fe48c2f0e0f2e45a0644f3389ffb341a3207a4e1335a4881fc9b27478c406c20d7f4039aa3030b4363408d7c67ffbba65562f7f145e28af91681a306779bb4b71f005bb82f0b50e8bb8832d2b2a0ebe98288fef09822b27994dae5c777392c08fbc7f1c0edff850ee8f9360246f9007f5c1f385e6a1f9e479f03570a24246bed82ee8a31c1df5eaa29f5df77215f113b66eeac11f8a51779772d939996b76be67c1782bffd3a572e165d32ce4816bbcae6f5a9aedb7e2da83032c181a2c4a93f387a0a98834c4d0b129e63ae22d7d4c75b403d03b8a4853ef93ff4732b75cf2549eb7600769eaa0042641802a9fd7c10be8af3239cdee735e4411606dbfc74a1323af89df4cde77e795b1c7d324e31fdcb182da85d719e21ffcf39d8c861323331b6d82712185a77bb220ff346662f8349b488624972026464ee617238ff96d1640696818fb078f330a25e0db5c42afb00ef84c7c45cb39b2c1b1c46e5b717a32664100ca2c9f08b60d9f5b4bb7fb4a8492584accd9e822fbda3099116dacc724faed7d2d8dff040163e3718f2d7a9c4d61a208fd4e7304217f019463b6fb1984ebbcb51152b04784a1c8f7ae808b4f439d01a59515a7d14e5a36d5daf2b88b63fba28e17c008880341365be14d9e57a539d830f9a1fb1e033f9258c12e9cb4aa5cb911e16cbf32a8b14bb8304196a5c42a0ab903f03216b2d8e252f3fca4fb34f693856c8bd6962b5711a343e494ec1013e095d466d219c4f32fbe99e92527e425ac95c59da01d2b29d5da96173d2c82534f2b08b3abf1a7c2e1b272f17f9be10a97be00e6d1457adac94a9fd907ef898a65dd10d0227e71c897de82e711afe23f95a863c56c8c977612d1408dd9788519ab7b83fe74bd6710972cb3773f365cf8638e27c86b6d4650e62a9a6509052a37a64b1257c66362fb6dcb7fde902192afbe47cb4e09c52b858cffe3c6cfdb71e3923d521e171f31c05ed2faa6a281e7a7b876fced3b721e29b1523d7ce0da7a16838db627709577fd0484715ef6db0164de457bc32d52e4a137f3a073a67f14a99089631a7e794ed47d26d6d000860d83220dcf731d81a726c23eecd1fedb57fbb9dd4aae41020df307f07819536a728fde8d867316ccdd965cdf9fd94792d36469fe5122e3d32857b0d248ef0765b81ebda246c0d81d2b0a38bf34fb12603cfd3094788bc8861e0b2b060e5e2bc1f4a28271534d4c0d5791efee7e200def3b668b6499ef0c28a351873894e338463b5fe3a1c6c1422823aff5a0b9e0b0a430c690650f5f38ce39934dc19db19270b4a1b11be4601a23925d288c2e14f0123066749faec5089bc58864ffde772567c4786176ee01962d7cc19201573a4224bb4a8981c353af58f6c2d9f74a021e4bad96a559de3aae74962a3236ebd6683395aabe2f628f46463a6abed80d3c4778ab97362cee884be623487a9b303f5c5130bd9a7fccfc217c2937ca20eb93b37186fe2e4ebe8febb057f667fff675a0163911fdfec9eafd045275f5fb7e61041b4e5cd69d0963daee598c30be80a4a5eca5d5514f0b3c5178178c9f505aff05afbc823da9eeb6c4b83c7e0f90dbc96c1cfbd3608d8d654fb5b19ebda6d7b73f76aff8d80913177741f3c5fb8fe5de84f5e3c90d9535384ea2338a96dec792415ff0daedd46b3fbaa3e56a703190f0f77270fa763392233fc1a4eae6bf20c2aac5c1b488df2a637060390c4fa9dcd11038db270af84ffce675f7d06c4e9b799051ed829e4681f450f866268e4c651c737460570f041137269871d295e4ed845a82b591a2419659b95c9c90670cdc425d909bbc072ee09be7e8bcba662ef7aeed6b17498bc9081e9ebb5b722bf210b2109fe200624df0237054f1e465066b0727d7834cdc358de40c79abadeaecf93c3cf16e43c0f606133b0bcd175223cab4db5d3defd12b25a8cbd6daa03fc1788ffa08cc0180845ca8c81f789c4441c2195fb9b26b7089fc09c743d427a8e5ab4180318d827684106bc27a612d8bcbb02eec4ee0624a73615eec48da32c0329542d79080174ce7086bd88c66321f85b97afce09a7151f6d4d50756cb67028c7b98b0f17376f0b46b111db0999f9ab0d4698f770dbd8b03590730cb72fc9a92faf1b2f004437147773f671d06ae9a6949b0b5e7004a1d770e37ba48aaafcbc2ae704e81cd0cc52d24eea66d89e8f55e4ab67afd665eb9e8660a107482ff015147d9e9a1ba0daa2969430c6706e94971ec553a91f7ebc407d18f5879d041838d1d64c4a04fef92b099fe5427a44a8be7f923bc4815080ca2d590b21fc9eba0cf591d9fa4c92dff3b08a49809613bebc34731b7cb07c3f4d8dd1a286c373712beab438cf6bf3b287c982e5ae0e8fa7b42c391b23bfa2822853c5b6babf23549c82587e11a72d4030c4f027ab2ea284f6806327a016040b650edba61294d301e3083b97ae962d39c52f264c26abfe5b429e15caa98c93ed04d5a4b2258a00375aae680e9305b88f598349e78242a8b29409c94a3c8dc11a6b1f2bf335ca582feb65b1f14b3ca2bafb042e5952a55ac527b645982bf5d8203a1ca156a476abf5eb7c2da263022fea5665259a5aa082187ab47ff6bc514bdb1e500b1b286e5a202e62b54ac8c566e16986e534127094d0370ca7f645c1376f3c2265495fab237f66afa5bdb2667a8202f6027d5d2fb96496e3e0d246e4eebdd30891d5fa56cb82e11c5e3a79860137a07a555ba96dbdd74c43856ab9404d27e8c16fb2c9624b0d73d803354b662d76db0f676c09e63135af680db6844bce8beb34d8e85fcb6fd2e8aeec6ce021b22d55c08e9fe40fda0f0d885823c9c4f7d0d6a37690e305e21a811f5ba752a00f415d75d5370b878b216a71f0045fc7d605d86510f542b5f250c3eea284defa06df08e2b213d05cbd0de7114138ff22cddc377c7174b99fa31acd7e8f64e71e3ca808825e9332a41403be1f8cb0859acf5a06fa63a851bbe161c56d94f849861016c14367bdcfad24b9ee5f913c4b7d0fe2ec9c434ce842ba8a0af99f9d2516657c842d2a676a6963aca3843c94b8c34586ac137c0a44173cbaf58f7efd2192601f0168ac7055e0dd1cab783081349b64642a14f600f16ac7d2145b28c17dd475514e70500929dc4215b15cf6ec734e4ab3ed804bd05f9f188afc403e8033e520a6427a1396bcb6131898690eda7213480ce02425a660f740f28013a9e66ed50c2d59ccb04a80bf3deebb5bc534946decb29e4c037d0cd969212dd0804b4bde0ac4e3acf625890c298920a5c1943268e72ac8eb42a4333e952562f8a0254246bd2b208100d4b5929bee8375a6d6df6b130904512aa4c68f1456d562f0d045d1abcf8c6d8ab6173c27c89abf1a4f9d8e8a1d67163eb702503cbd85996b74d672c7d6d569032dd664c279521c0c0c4e0c59006e82cb88b05515feed2da2589b868636c540c78092f0871b32230aac89ee2dd7c2d186406208e5459a013b60c2ec31b7910dd2895053eb3cbd0223c1b85e85c1cb9cb7f0bc30944574f35a1e93255081d22da288e7df525831e3bd3ebfe136b0c8b69b32c431d4c638a10a0998b702ceb8a36b82325633ec2ec8844aca7190287bc174c6342040eb608874d174c73e60c41de6a68766d7037696e4abb1a4c14203741420d438ede24c948f07cc419826997220843a6bdf7430408a673cdb56feb716d3f3e23bac3803f29e38c3db72f1f3f4cacb59db1df1f1eaa809ec89163978ff0866a4035c4009448c0608cc948cf40f77252ac345c3b1963021ed7ed3f3c619ae0c73834c0a2ea009b364aeebac9bbc36e3c9c29c8d7995cf65c1268d7852190ef7cb05fa3d4fbbc36a36fc77fef912844ddf9a160c26131a252a85a7ad0255ecda37210580014d74b204ac0794373b17a3cca78527972c203f242e5f28821e866682281c5e3482f28413bc4b54d3cafe3916f1a2c5fb672c2e6e620a6a8915e333edd4b9bf128045416da8634ef0816c4a30e0ed22fc8ee899b1a3dcc47b9dadfb857c3ebc0aceb284002b2ecbd65911bbb7facfb5641242dca08d75585838159b00cbad67816b35251a6d11d375923afc4d78a9b364a35b02b5151aa5d084f8ecd2712721103501da89b672900cde4e0fb890e36318c2c197a87aea3bb0011f5dc9837db8efe38e410014172fb9321e42d6a1d804dd59a6d85a8c8d50f601f42ae98f3e12fc85d60ddcdd440c613e375fcb6b2898520ef701a25635e4aea19454c3133306f3f5abae8f46806af67d6b606ce2f6310c155f057c33200824368f34054eeae9069eefa6dd82c7f8fe8b1b0cdc0edc58599e9a0f5ee90c41066ecb6b5c19ef718225578e1c865443a402f564cc98c1395f4794414e2a9fd95ba58c43a8c7c5d44f8b023414004f94b5d11dea71a17beee564cf9920b60ab5326c7d06a681d866ba5db88d954b4e0e24586608b1b03abab3773744076f87ec6c40915e31042a9d15f75ce241820d8d06b5d464a68f320304b203d33bf6b5f62655567bed542cea660d2d51ea4132582efdb0a6ddec995cbae5d746b9ae7c3af42ef8876079b688d36efc1195c862c960cf7c9dc0671e4863d62cea8c285c51f0c26afe48b823d2ecf9d64113304ca63aa805f94300a323238ac73579d16a5cc85a0d6b697b7254d8459ea3abb45fd7378ed5a01bab76e651ae7ce6ef196cbeafaa0c97a2ba9243eb42907d41347424d81faab76af53b664f71a1f0f1733c11ce82d776f7c9f175d1a8e35d88ec243c7d4a4b1f72677720b07ff235ec4b85203fc993a09e7c817f8ba38b7a7988ebfd8fc583745e106d40e59ecfa37bf5839ec81998d0ece3d46f9afbccea480c4da4d572e1ab1cb61c580799480293f78335b2e78fd7c742c6e04235bb86dc9ba0211ee92d2e71e15531aacb7aecc684eb8f16962a56189bff95a6a0d3d229aaa2503e60a5083272d0b82e26a7adba243b1ce49fdc67d5ffb96c847716962fc9c05214f954696cc17e2a95ffbd544aa02db5e7443a70809f5c4717fa6a007b244aa5fbf483ba79e06369d7c236aa058a43f54435b06c4aea3bb2c3421f1aef8479e069a694fff309aa3a01f0e25aea98ac8e80179e3e21e1fab9812c6355d23f21bb1a70a619788dbda5b754428daa9b7df470cba2c84103b8327490f110e5bc50d2e040b6305148017c0d64d15076873db3898fa8a4050f677e05bcb843b40f0d5f46658b80d0eb03743ae0249c8626c54b6ab4308a320322383973b25024fe310b76141abebea37fa351a8347fcc20101cb5c28e16c71f81970004fee0a7951938fdfd714cf2561a9e5cd712a7525a7e1db36699a54464c6053bf4a92055c4e53e5d9fd9a6a6406209696a98d674aef59e85add48b7090bb24c736f1c2153554d9821478834d00239d0db0ac0ecac4ca1b8c02e47c8eabc2def8e77014d6db350770ab90ce3641a4230849cdf0aac0d78e0d3b089639a30085bde59e90f3bcbb0f79a55ff638533b6bd428abfb052b6bdf7a4fe132be5db7927657fc416fd72885ecffb57007ddd33664798212e64558bd44f36bc90199e83d1697c4766a0e2e2fa7768c3a5c2cc311c5fae026f3c620476ffa21f40aff75bc04a4f6981ee3c6204ba7fd11640effb65b6fa32377c0b58e555c2c07dead92ac4278de0e28454872d20ef1b721c1a0b57273808f180f11cb0a94106d564cea2963ff3e57c138e4c95346c347f27ecabaf0d73d3202a043cbf3a80456fff3c8a6e09f7f243e7f80a56f25ae6793a692b27b9603f79f73f3f7f5b2cfe745cbcdf03afec2d35e0e62b96cb90b7b83de053ae35c407df7056ba6eadfa29278d28e6ef32f39da5b371c94e3142cfa5742072e8237a7604742f4f715495620c11cf61baec6ef3658219bc0d1edecaf6b7c90b03d530e17ac1927d0fbdc764bae1b5895d87c8a33993fa7d2dbd4f9c5338abbf39a05dd58a3ed2ee006c8d1d9285a26c1428119154a6ede0acc63c72f6b1a960774e9656e83ef5c32a2b72630d644b6b96da92d797ffddeb72672666ff958389aec9976784697d0a599bdb418e990d2f32ab9046e0dbed4905be814c30b4dada7844ecd462bebb1a7fa6ce950aab3cf7936680c207a5bf7c27538211be537a3b2c2ba32a80fba0943a071570f6b63a8f051d62aee4e87455a699ca30a5c7157f27c3b4172eb08be6497d527bd71610e0c2c216e6814683f22e5a5ed6d1d2b648cbfd1dd644884b8d24fe8625efccbe3abd0711ce6bff8ba90dda3afb75713de265ddd7b468b5e5d65bb4daa295965a68d9ba256c61d5c9ff8beabecc0ab101ae0983a6a98694d3ec6095ad05571e630a549e51840b173eb8e185072f1cb8e0820b2e5cf8e0871b0efcf0e0810b0eb8f0e1821b5e780f2e10b342a790363e6c3ccf1843a92a4a406c7368951bcf5568ac220a896540afe830bde263d91b0910ec5898f01fcf404f5418bc6da64067059c7f147702c388912e94dbf782e0ed6a154f2a7ab049007a45e11b7d989d835ac8268ff4b5e8d4ab027abf5f12d4f5b55033d9cd987e498932d80246b8164bcc187c961758a96d08901572f7e2c6e4cb10374dfa6a704c23590421c6e68f86e631bf4aab0efd9c35957646a5296beda1d3fc1bcc592ec0508f2266654294ba3b445ea6742044681ca7fde4ba42825ba3bfb1e246e01b36b01731ac1628553f2194ac4fbacc4fe32f250911158c9f1546a313aaba117f74053540ae7bd427935e539dbd8f506965d7adc08d6961a8cbb03cb52da3a8d3b946d2bf06a57f1c8fb5bc685c557197bd4dabac16dd09a358bc076973e17a2799c4519898f65e6370f513e248eb7fed722020c1e9ba431bbbf476dbe348c63d315270bfe04438e3a49df855b45b8f3c151842a7812745681b728d6f198e993cf034357017880c478c1b63ba9702506cba28e8e27fc27bdba76da6bf1894e37676b43826695c68d3e46709d8d5502d4fe5db2cdaf5592cdee5a490f247ad415d97275fa33bc7cb32aa5d47cf22a479d211ab6b4df3d4b1f216c37c16a68527a58799632a96d5c66e43c41a1e545bc7a9d0a182747c2a233ec71d86eb78f7d44314e730752ed04eb7c0d2354159b6c2034cad0b8d30c90507e5866d3bd9420d5559e348ea0089077d93c73e57038840f28fa957b9ad27b97c82003d2f6f8ed7b3c267876f486cb0f969aadd489a3dc3e221b10f25e5dbf5cadf7496d2e50a592326657c3b19a922dbf2df9220af7b3fd8854a96f7fe8fb3a6b86a19908d7678141de76e796fa54887c6ccff806510d16a7c62c53e704965424e616f0fab07380ae15ba2a43a600c6530a4318211fa90be34b737c9660947ad67b141338b2bf60d007c7cd8c8d1f47cb5139cb58050322864a0cb9793b676fc8f1efafbf5f97c0aca184a890188fc15052f6b07788f4d130182bd3d6391e3cb776f939177369707dd4480b92513738731ba0c2c3d936e3aa46ac4e17b037f2e5833a352bb2e2676f1c84f1fb97ab0dd4091acf00044fe6b5292caeb5af4984ab1f895a56941a81cdcaf63a1ccc73e53b1c43dbf31054ef3e60259b0597dab5c8720519a716702cbdc9a4810dd14b1e566b93ae61866b9c86be56c7102406f200555cd655f96f1e9ad40f8c64bf226d5af2b448f7cf0a821461ca0dcec9df0bceb4c0fcf2e6ac94ef1e16af5924b6261d7e437eb68973eff05b01a9bf9ffd23d251374ff6b7cc986db20f52b7d6e76ae63b536b0e46cb59e4a4f16fdff4f98240b9ee5a9a4ce63b36b41b628fa0d301454f7c1a8467daf0eaeb3ce3338cf46bc12994a03c7e2647bb5d6759941f76ff2289a11450a7eaf27464cf42e22e0575f12f412093a3db4ebe2a146d54d2da3ff82dad56473f38aeeade18962b09bc8f429be3269df2abaafb4a2d0d7083d8386286f90cc5f86741676422a52a064bc435a3e31013e4570049c8b191c0de8bf610008a2683a5332830fa9e61c5aff369de49a58f445cf8d21daf25499e9ce0020796c97dbd913c8de4529d72d92f93af0b443168c204a220b9c16bdf0304795fa46f21ec271a6e0239630c35db42fd25fe5ba15172ec18e3b03fbe4991c8f2d9b6dada77f776473ad2e6fef1024b7b1fc0d67154c02089dbf41c6658d45d647b646f0c0a399a9ce7ef86b0c8208d6f5f58a3685599cb6e9f517b6815ab25fa5be5617a978f1e3a356ad6fcf68da54800ab0883665c02392854ddc14008b889c76202ab08e88c91637445ba40539c2a0062dd86a0aa3614683287c8177eeacc9243da339d596d340cc229212a06742c15f373394ea487ea11a9778b898b380ee048720f4c207f6992a4af37be03fe7a92d838230e8d8e795dea04842aaf72509507b01f2618403897d7663ce1ce89608b232053aedc2861f2665356fb2dd9a62e98c52d051c59fc4f831433e6108fe947a27b8602c285cbcf4933b58cf86b31f1d7212672b8f44dff25659cdc53d2414aea334c6b037b1661b46d550deb588af0e424001459fa2dc200b4b4d129bd1bee6de86559d0701f01e4e04b26810b57502bdab570b496cef237c7bc1ca71c0d923b05d4eff4c8b644410d1de0ff2df336c7f659ba53a4d4372f330cfd04430bb33882e79a506c1b083d15dd80dbb64cc7013fb4946e58e1e3b56ad4011b692ef104eed2cd0955203ec56ab4db9fdf0349abffabd6d88d41a045b32fb7494a20411cc933fc07ad510f88f1fcd05e1e872316654c456e628332559d8b2c58808b526112136330bc50ad2f780801c8d61c317d5e5b2f70c480ea933d408e702b41c5521ce01c8665b9ab9d8aeadd99a7c9dc543ddeb88b4ddb69988d57337723f88dd78b0a2f611574cbc4c9631e3e580c5a5ba01b5944832e5fab7c6d62ea7ced36bc118eda7770ef6f69f64dce138436134d7a1637e61d47a749a91dd78296aa43c4d89434c178df0214ef30e80d8ca4d31ebef2212c98ee24a417844b96a3c6afae488f0d33ab4e4c63689cf8a5e72ae0ca6af4f72c6174c9ce7971fb904d9145e17397a469ad6da208ebbee214731fd2017433c0ff39900307e7a0210c10496db8cd649c3b0715b6e08523fb7abfe6098a93d1e0ac003c8513c97612d25bcbd2889304fd8a55e65ecb424d732cd4974dd57435f600dd67af4c380292a2b76ab0d624e31bb1f744c9feab83eec989fd671ffc34587fac394fbe85b94a5856e4db5af5b48f3a45b543302b740d87f6c7b81f478d3e3952a640b5470eff8df9569053d15a4adcb33027ab9bd12103ac7f37040769ab48dde4f40e3769e8d6d376967dcbf944cd79661e67ad1cc92c8d51661596615191b0e53c886da6969e00512a4777e345130665d6cb25f4eb383957561e73f09cb293e89d6223334aa7041beaedc455f4ebdd9c7039c76bcda2102cfee2e62f320c21ec447064e150c88b033fed93d084e36672a5f197118c72cf482f6840b5b46c41c074ffd8ad992e9bc109f76a2231b593f2104ec25f7ad62265590f6fa53dba05ddc584fb12fb16736264f58c10466a9f432b2d76d2de29d24bb95ccc574785aeda3a2a873728f79fe377c6787123c092b4502db6bdeb3c7549a9b877b76e9c9cbf22661a006e6fff771346c1dc510ae170e8227027fb5e054d31cfcc1cadbb5e303b5cd6b2190bf83f0a024038b2a32f3b7aa71a57c4c449569029825dc7ed624bee10c96ff9b61fdc8e1beb79d13130aba9424da487271ed87ba2089fae39c9a596e41eb497ef17c6f882e77cef257661637209c17e308bba820155970d451cf8c932c4380e2b61a2d9d5b9086627b03175fcd33170fa04381c8ef7e85bb50ee9b9fc5e7384c4ec76c101923a09a52a1c64e6e3789503ee2751e9b2f3e1640028f4043231dd458484537ab261d8256f10ecb75414f94745da8830c587c37ab1f6caaf507b04e1b86413aef5d7c8d0b49eb17c9950de9a8e4428314f62d86e799fb950df6c3c302f58747ab45f164dc4f35a14844311cf543baab2525aea8c1732f78ee2ee6a7848aa2406f7154380cbf36cd004ae78ebabe2f6f2dabb980ad69c68e63553190b28ac68bd078c0dc022e4e0399861ca949cec57a004f54c4a8b2fbe2b960577f4b5ddfc63dba40597c49fd156a1fd64bf20858c0ea590c797151e201604260f765494b1da99e979caa30b9e8ea9ebae2034634962472db4e89d0aa37078abc1a156fbf16d7db88168fc1a83a9acd90891017f80920e4ddde07b5eba67ae35853d872977025ad097f02e8f732c19cd0318a2f115c59d2806d3a8111ed81bc7802f59d0780f5e4a28472f622367abfd3917b23aacd648a88e68b1ddd0dc12e3b27340668dac3936cc56d815118f48d0f73d42fe2e4a6328f715c1cc26e0d56facd27681bc14750ead63b75c7defa5861d636beedd41574449ca75356db01c021f7a468a40ba7548b20ccf438b4d5da5d2a028525029a1e94aa12242e8306652c653e8f982051445bb51017486f264e25a5560d15743502ccc29934bdeadad135e76d7ca25837aad289f5e960675cc20340485fc59df2b8188df3675ad8260d760edbea914f5d0d763e344e895c313a256edca4c78211c78d0751a9ecdf89b7f09fe7f6145443079218c81a4b8f7f7281f6c3725d940ebb15201ef63d2f972dbd8ddcd96f80aafbcbb611462b6aaff8c81e5a6fa1c29e6e48cd0ccc8f55d9c13b7b31ab6ab938327c8ee041bdb17b38186db0e94eaeaa113abc8d42b988a31227c50c0af4bc462419bf6448990a75c7ce8068d2fc56b436b6949be8970027e8cf363923ea93179bfd0a91bef6810ecae452f4401ec089c0cd60f1b105474758f220fb62013a31f17c36eef3625cc2ce75ff0ab99506cc64f075b584d6ce5c5c8919c0d4cae30f61a132202ea537199c228056aec3749509a977b254a7d0ff23a21daf6fd306bfe791344383f6027307d9bb907ac6a1cfabed033c48df5c263bbbf960cb3bd423e784351c0011522a5b20eea03446b5d136a993a85f91166dd70b53822b0daf880cbf1623abad9936b096fa4d3df11c6b97c21ec294b1cf1ba9ff63abdcb65e91fa1fb6ca66e385557fb0cf336dbc72557f58b49c6d6f69629d1773f27e8f37579d6b7adef5b46e16d17e31e1875c2077715641601f163aac2d08c1141016342a3ca9eede70ad418eeb5da1cdc6969f4199c7e504e3e5a72aa09223da864b2dc3bcc69fb55952a00cfa050ac53b87b21d988374f84b4d44aec6710c2627f08a08647168500b1671a82b2d8d51f4c91473fb071992cc90a7eda943e26ff74d573c24baba72dd6f25da01a1a1d4229e7ac404d2c4c8eba9325849108bd0adc617f4f5e56061ddcbf868773cacb556bdebdb93689badbd711a1008b19c2bf33fff9994089d0cc158f04b85854011f637b7bca70f73f0c01f7b057d4e78540d5746920584a134c1ff7f208cd561acdecf850d9aa04fe8a107faa5c3042666c397700103f983ba70b2922590a79159af6540095cb857ff54b323e4f92ff881735e0bcf5573819c4c6c470c7c64cc2231ffd81914b221ea274450e497dffe1f2ec1745e8b4fd7364a3510cb34a904f315966de50a098026d9b8cc07515cfaa398c55a28d3077d3156eb837a47167916b5803364ad7ef328a69f1756353e2886f97f384610d1aea55e1c399b1b301b2970b14df91a2911184b488f08596e091cde36868334a36aaafb9a0c1a292c11bb8b03fa9b6795afee0bb2eb11f4bd3684c42fc88a5cd3757150056e53ae0b198f7d0601168921e47f91f92f8a637e207e319f5aa4e63958ee235d140644323ebac47f96ba486140c88f57406ffe82cc0cb6d5e0f1be73fe6d2581ebc637d243d9e1a333ba067a78f0f811753eb792d5028e1fe118943fa36f38a8751b45ae59002f9ec103cea57c2e2baf4574a7c8d200b1e5f0193f32218c95213c120c78671c2a407743c81f4ba7609ba64ed8d3dae3c86900d153b624e4e61460ca143f04527f16fd135b06ff98e0f5a06dc464d38aaf27d3f6374df15ffb28d378b7c414e0ba62e68f55cf0e50b23316734f444cfd31c7aec94b318852c9e20183c63c7775c33a456ba8033960e30fa02554d7e12a415d27c619a6eb584d89cdccb0f4c526210f635fffa12cf1de7ee9d79c999e0599c73b42b0e883a31775d25009e0441e08f3a3ca6530a650eb4729a13fdc82122d306673a3fe2b7c68014f0ff974786ff5472a5a0717aff4a8a6f5d61187bde689c19536452facb75d50bde67a96dde1c92e662aefcf36652c9089260e666da4e12ef7831bf2cc2f1be571e5c660c5f9deb3bbf6f7a1cb405344a85081cd7940b812af48226ccd399d9841009de0116645bc6faa957c66c324fbccfacdc169a8ddf9f4d70a68ac3fcb0b7e8f5a4813c7bc151f9ad65a993bb160cd76604c88bd74c52a05316e49110250da26c4290c29e66a3ef608018dc637e7b98479d55c7276c84992a20cc6a590f10fe8ce349b9e3ad4e9c4504c887a5b3494b4eadd7984e55b1b82fc16d4cbf865b02377f7b5924a19918b2be08da07f847b380b2a13cf0a3c4410e5e9f51ca39ebb00f3889b450312162dad3828fa016c512380f3fabf3c40ae8c52d1010547f28fd7244b58a9b2564dbe60fbb77cf3f5dac0d37d8b465fa36eec7f78186623a198152b56f6410625b993e609a0137466b713c8f2316001ffe94e058d55012568050c1b2ca0f6e8e92ca06450b36b5fde6c131978bc417fc02be09b1fa3d94ba739e724bf133c607d1911bda4d4f040a9543dc934817d4c4045755589feeb634f85deeb22ad781b6b33f09eec38349690d1c62094311fc6af9c563ef4a9ba5bd832cd46e3ae9830e7d7b24430d0fee5085e10ee346301ffcacd7e2cd49a991914fa1a02397d666a228f548b1205a1a0a612280ea12746e5a0cfc1892bd09f4f726b1cb25409a8381f5e307119250bb2b3b1b8e54f3fa83c8c6eb4101d547741f825218c1b4ebb77003ab1ba40c71b20510b870c299115a3eb12a259d170da871a3177363bed9891c6c2734f75695c702dd6b6cf10c97bc75be277d54c1ba43c4ba5788b8826a23d8173e473f1379cc999a72a97ef315633796bcf9d3e8673a2e4acc4ab016fbe1b51ae00600379860a1f39ce81ff88739273889ac32a9723873e32daf499676f5dca4bc0a8a89f21201e309562d72fa079b44943cc41a2b336a7b80e5a632d547603fe727be32664123859d37bb9cae5533b8a027e801d78f2198ca3c44921d98db5f8249bd257a1e37c7d88cce7f1af6ba2e5feee8f1e78c8ab08ef50b0e1a349b45a53083bf3a821b2d2964880fea4662a0d6c4a3214c8e48cc0a476e8975bbef25b6ac6c60ad188bb1316e14793af6008c9dff184e7938625d177005e0eae5df3f5f0c4af1f07ba58ac4dca834c9340664f48d9cdded9940aea35c2e10fd870ba46436c962061c3fcc811e044ea243b23557d8e87aab334c5875db4a30516c6cb54116efabfcc9ba581a9245ae18f85df1d14e5260e6cff8cca1412efeed0a8c04d0553fff22c16a4bce1c8b828654eddc2661bed99a7f755c4bda5457bee58264f91794d8bc59631bb26b72153b61d05064b6384c9d4089b5a330d2e3c88d2e2327282e198510ade4bea12f5fc9eef3065e8085d9388b83a6e37f57786035a63e86e0cfbeb3fd685912cfc3998d2cfc600a1c652dda87b7fdad843d4725982d872b2830e0dce6bc8bf52d74f842762e7862a4d18b20dffbbbd851569b7ce906c42b8df276b94eb0bbe7855027fde8ad5b355d0b347aea6c552479846627439a2b9c5bde9e02bee67a2fe6b889ece6f2fb738caf3ccdb1b88386936fdba19449f07c216d6bc11e4591f29d4ee30c55405c0e7c9a18a4489f748a5aa47eafc53160c913a443a3e4d049042d276b966e706cfe1d1877e6f3e1c6b2eba34df7d3f2a7f0adcd385501f54e49fb318f1f8cd0b0c8a62703a7b16162ae196042cdde8345f3071ffe8198d76e4ab639e1fbb32b046866a4f94e03fd99ebce5c64f073dce3d8b0b93a4d2914174fc4e081e8ca5f298ffe4b540819d0050d576009a45da695436f64c3ac27baab62666c435248ee1a9c407078a39019e8aadda2bcb0a7e5188e072d2ef23fe3a804f60f8ffb28b60bc3b19bcd848032a00addf11d562fbb8b6ad0b14a588b7f6cfa9b0f8e4107f5d8d8a0adf18634da06ee5f569853614cdcf1247ddf01d5a1b19bcc6c691c31f1ba9fa00a04892e1710197c8a6414b1ce2063990d754c7f5e2442d56f5da5321a8cd685a7540b7cdf0019a4fe2c209663ef7b65c76e1eca92dc822d0a8e2569010ebd7059f84a482c457ca988345b7fdf0c8db17e7d188020b9da43e758a441e98085cb454eae0358fb34b6037dc37bc0140df28f60be27c0d5a7ffd7049212c30d8158d93175db8c998ff0185a8de0f46c686bbcc3aee08bfa0e98568a7b997ee0cb063060171e9d8f2fb339966c9b5789625ec8bfbd4a2eda0b77dde8a83488089e1ea96f48752f4934134137b0f4d46a659130e0f2d509ee2c866a815d779d30eb4cb72e330bfdfacca87fbc37d25470d242a71ca885525570db0a9956f23e12f92fa80496c823ab661c1319c9ceea5045380297c613c87e71f256b852f22ad582412e96a2f47c5ef4fcc44327b161c31dc441839f5de159be743052163045eff03f977be2afa5407f41068062e77519d580ae2456b47f4e2c2e0f22de912e7699e695e4f241e7cb3bd571df875aac88521bac88e4b5941b2adc7cccfe63cba2a2155841b749fb1c7cc4d6ac35382498627954b9c1704c93c9142d0933e27cb6556e556e84bcad64f475558ca28d40d2f6aca50b623cf78ca90b8231f270edbecd0777ac2c8d44e27a709e0fdcf7c51f4763910d3ff39ec8a6e2b840f37f0fec7b02babbb4781c30df044c706a3e0434d48a40c42f7693649320a04da91517d9563e0c3534f4589b4f5f1ce9448c7b333393103d791edf6a1e06e36b60a7940b38397bc470c5e0ad3d3abc92540c57eb7cd6512f0554e514cff8444193982e856aa9865028013b19c8262c695ffdeef1f218e97d254ce488121a325a2b4cf2a505046a41cc21f5854abd3c4b22e3dad341d36c6a60494c33e480347ad2d9afb574325cfea43c75952c83b3453e2736eabbba65a2b52128b3d468e90907332251f0b3391984ecb6cef096767dcb1d19bb227ccaac034be7dac07c10b157474ec4ad236c9ff60a1c1a7463e4f20fffd9d5231e068c72c173128800b142e73bc8e84576f7791763421d6c3e186fadd0040405ab171779da7dae92ae73e625a84680d29b4d59ad63f821b375665d107da36d9a83de2d2d442959212c445477b94860edb991af964e3b427d489e1ac09c44e5aa6fb8e6beaae896ae97b7799a46893f518cfa5c5c293b2fe54bbbcb1bd495f08fa530f3688bae06494353052ad7409a0b8dc8812b17bbabf81965404e19b1ae73ec1a8042d3935257a95b9c33b71368da20f806cb9ae964612531c94cb7dfe252ad7069d8af4c881ff5767e110c67763294f343c190824499f240af5f1c6d9d2186ab169fbfed050d08391b51dc2985efdfd97bbe8b4f7f82610951104c597613d3995c0a370bd00146357f0180ed117cd53025396bfc6760afe24505aad8bc8c21f270ad470919a5d5904116e10e1f083f3e987f1b92f31e8718113d2ad30756054b48005c7a6c00c8b4909cced57bfa434c463b7dd960450c34a5e28923bd07e1343ddf4c71d6b726f26cae216cdf5fa8010770279489a46f0bd1ce8542e869e092973b5ac2cad0682e4475467be0e9729a32bd3d0bf9655f568987d6af6105de6ee0d6598da1acf2e6bb86e81a640191cd6ed6524b9d52c7177969a7fb2e49ede80d929f7ed883615281689b69f53f4bfa5a2738195a2823797189485262a9900f790b7ba7fd98cd69fc7c2ea73496457ec1854d37c5a030f9920cda49f5d465c5713a2776679aadcf950cd40668aa03bb676c333de5edd9d6e7d9dfc414b247281425fd8ab9af648599fb5ad5e522e658938c27278dcf47747c09bc5b4bdbed2a213d9e1f74baef02cbe750691a51cc58be6ebe4c0065efe99e53ba757ed014ab38f1ca01ecfec6ce106d3f84b25f2ebe8e5bf37ffb1f2118e63758a61c4cf6ff7a8a231ec74e018cac2ee9270f81a4e1d60318820b6608c27def655c1912d7f1085fd0b18d21302f364f602d7cfdd8afea3d9260cbbf4892b6818547e6b7fd81c4e26adeb1213e99808950f11437e8d80ee5883634fb0c6fa6d81e400fa3634480e6051f6a725ebd50de49500abba04908540e30897a5070a561bf0a449d1bfa21251ff2c4d7f22d9eb5573ee76837c4c146d441f940355c27cb28a13a9a016b15464c42a3226068c9a2f96b3d16e1bec008985aa34ba9f5911b873332ce3d5576e693513947370d46e893992d2ca632c655662a42274cf52b473a5203ae8a6b8d7dd9fc6efc85a3351b83971e4c9ad07b2e131ecdebe734b634b21d66bb536e6a0a697172e9e2b068b58ceed575e1466c708576c9be1ff76283ef176ec2cb8326dfcd7bd0ce56b96d242de799f4736bd2d7e25d7ce67821371b70324eb3aa8984090ce201a55e4af7df0e578b0062c206514aeded15f2af800f93c0650dfdcce2369f991188e3ae7dc39fbea561cc4b50db7c54b2901eb84eeff7081957274dbf26aa14a0461c9f8c9053f0c10d61d2ee98647f5d1c1522e3a125a40ac5da05511a6557b81b024f087024fc1e53a1201a5a20b70cca00398221b825d50532d1ca77fdbcb98cf150b11189104a103b1ba920ca018c262e56d0d45605ac62e818dce2db0890043027e39194228758791847e4247a8b307daa99a02d1b28661825f195c4d654bff73a5b118acf6a6b7ccc81fa5fe898f73389c28868bfb6187ab794b91841d224d1868f1c6dc023ca7833e4e28173bef1408d986f42ae3107116cd9b61fc9785244e6996f5d8256aebfec8e2221a0f9c158dc8303541dbc28ae8f710208c04e1923decf02132a01756e1c73322390b8ec40f93e6889a4299c32203f8ba77ada9ea06f5dd295d009e5bc5036cdfa14844677234910abd48c0b0ef1a985a03545f29a7b6020790a06e282309b3c4a73227df2050f3f923109d691f72407207096d48c0f62608fb0cff08e83a66998e3c42a00adaff89578ac37bee96d09213a4dc6f2b17b6887b5e3e80e807ca1a077c8578a23980edc9957ab6a385256602109eaf43453cd9ad02c8b44980e02849e783ad2222a7a690f340300d621842003b8936059e5099fb80cd904636996a3317b1ba86e7f39b4da89142f2e238071290f8c47bdf82b4d447ac84a764249e0f35d5303900110311f4c5edc361e30ad94b7406839e5be54efa9f0df8fc00107fc63bc773d1b10d7ff1b2617c0cc1c9fa5b467a3ccdafd831d9cb635c3ed746172bb0efa46fc04dca384fda12c5bbe09798756fd30a0708b3febf33a9b092f7a8673bc7c2760c458e078e1866660144148abf6dc9abb8864c930f439a022f709b580b29dc80f4fad2c03eb501d99c1a7c5b69cccf012344c4b66f8121e6a7a2acedf08f2f416a8143e4372bc0a84e6b15ce4dd0cd83a084af261665f03cc3dd7d3e6cf2b957eee19926493eea9d5a909c2b06331db46aea14413608991d00adc68116f3bc0fd87266b761eabd15106d3e1774c9e9e2fa3ecbaeb062d18fd174d1c9c5ce97cc73cb3c8ca0aa866cff230f21b02599396db288ff2ac6c2cf12a2a0bf778a65e9154fe6286f043ce76f621c952824e26748d708f0aa10d2d6514a36938a5e24577a8288c9411016deccd69c6fe329362eff8f83523c761343f24785085ad76c5eb792103741c7fec1cc5762cc1e5ef84d0147d7c04a711a7cef91d230cad5ca28ca2f194fc862b1350c47d7c9567044650f9ba85ebc3ee2ba0ca6296c7dee9102acebfd71db5a7cc9db6b3308983279d48935feb1fc7e7b6f30ec60114fe33a2b8022e968aefdbc1483298ac0f3750a73a21a9df6f98443cab1e1ace2179547c7c61b0e30669e543a7a9fcc4807cb55280616b97e89f00993be7276d413b00f4fa0551a2a79e5448e1817a2a0c81d4228e0ae72c782a722aa78d440c116b3ffee60c63e1a448e8b92a9a22fa5d3d25a2bc61aa23f161fa7876d77823d73d31a83c565d3f7997021c8a33761f62c573b3190c3c2f3ee4a26698ff1b74ed0c34bd008e2d48291acaa01f9bc8d1132c6d89da1cd9cc8ed050cea3f067100c25007ce32ff757a363a15367d647f0f29491e6bfc0978769b845a6e6e541a9021f79b47fa65bf6120ce18fdb1bb27b5ec8aac9b20a2b8f13058469c86ee8782ef11bb9ecbf7af761db68fbc557875058082dc2438c1d06269e2c3e0e630edc0a4184f9e092bb62ac4edbc31766f3f20c23afc23259be60bb50a95512d4fd74f308f2ee3e74c8d58dd55d65e0b63d65c847bc3dd94fd66bcdd8078f6c356d1c2c59c1e99b2f97fac3e1865bbaec38db2b4b72105a15d3fcef86a910717e1cc88cb0d5208f9c1431508a8d2b0ae0bb5b9e1b906456727d52128472159f72c40305c2c2f537f9ad8fe19302d0d641c2fb02841dbc088ef50ae91610384b4d8c3353a5be271eeefedbeb341c467333f2becf8a7f4c6ee365dad6236c8cc8ca0f4a115fbe71a1f3f9e003e64ef92d6bbabc3d01f52f949efff2f32fe69f1f328de70a852c9f0bfaaa8ffcbb1160286df1db2b9f7f12034a36467d70e86fa6940a8ab73681a4f745bc152d3044b009e667e8ab3a94cf8098f662bec30b77594bb478e3a5954a86d99855c01904374dfd4192fe71e5c6979c9aa2d5e25e563481127bedf5b0d28e265ce543ecbb8e2993923a0c5e97253817777f6c6ce06bb8aad4605d10314464382257b2177f4228dfc2e18595e8daa3f230752166345772cba9c055e62238f8d583fab1d2b4a553b70638b1bce5cc4512ad37d0fdf086a645a3544c7da60a3fd166ce259d1d8bae06599e1f66dd521d4e17d74b875dd771767fc1ef512bdfcb1e5ad8655b59e5cd715087b20fdb2b19ad47224743bed0e9b18c3db33fb0a00197a6f302c2dcbe58e9201740353d350ca4387d277a5aad5c3c1f4b7fb1833b36b36ad98ab654511353563ba8d1c5419fe07d4fb01d31700cc96c02882c4592c136e0a911b5723e88119d50fef76a097a593b13350cc38d693d97395e05803653802a7dacdd7aeb50b187ee9f3c437b2465ca699e8ecdbdbb2495a8c80df4733f176651af8b516fc647307c4881d0bb14f88ca488a1bb20f643b1efefd1db48bc4fe95e20860db024adaa035472ef834dda18bb5c49f273006189ec5cc7519d62f1354cef0969413a24012a712063c40cb72bf76686c6ddad83e3895a2c006dda741f167322fb5d3fe8cecca2634b01d9286819769589dc526a748364e9f1e7ad130af0a59b18fc5b5b39900f232a777418c6fa71c661ac1a4b8fd243c8e67e45a96026422395db33aef18de2572a5e600e254e364597f1bdd0e44bfabb70bf880b6c40addcda9da4aa807be8b023d7077066b5b43eef26fb8201ccb49289f48b61ab5f9b16698502b81ca47b9a67be7f2205d0391ed966cd32f6d84325db156936ce7e8841a256b4a8385f3034464bd57ea5278700088b5c5385e84eed148feb94fe9d83e1846f14e3ebf43999625a1fde4e9fba77f761639e32903bb3a7fa64d05b35fefb2d5b9b2424683eefc433d857da1fb443d0fe65b34aa3bc633b84ceeb85b1146012ba7f24befef3be06ea35425539783d95832c21b52f90b8b758d58bb06e8b751896723fb6576b4879ec5d6ca617febcc8a8c4c00b59ec4321121904e61380f2ab1edb06db56e600bda23c8dbc2d4232595882ed9d4d810c5d2b0a4b2f4d2e9202c6ecceaabd634c7223b6d777c7412507289206f47e012750d306e89768c7be2bf765994bf37267c6229400b912f15578bada3a0ebcefa8640f59defb9bc98db4584f1e7ebd9c57f2bb3b037904a3a5bf926979d9f247847839e51529717ba58fe44c091a7aae1ac1d88e72a8c8734339da6694d869244cc42c6794077a5b274f13a29525dcd10a4ff9aba0d4429c858f198f77c2b6bfbcee0f8e258e72a9c7e6c8a16514dda534fce45a76e01845503ba842a825e409655510739d0470170f77e156db16e2b23cde74ebe712cc9a067e3d9c3c41592265b603684718d1a207b48ec805feb882bf6dd24e7f28ae68e781953c6fa003aebda04848682829285312897c7c51f815835a591bde5de5b6e29a59432d307eb079408229b0d0bb9dd3821b75b1622444827247b423e219bfeac95d2295241524152415241524152b3d42c35a32b291fecf183f57b57482b4392b1984c7673a3513eb67daab3ffe467bec02fcae9549493335dd0478160dbf183754a45d2cc22217564e3e77e14ddc0703da97db210edeeb037b2931a0864a21b1e8a61166551a56ecb226e909393235bc9f927867fec6ee51effc468b1fa011d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d990d46261d480a63b1300c7f623f23077e7e7ec258188bc5be4f2432d17a34b241e827067e28f463d763b1588a88582cf613933dd1e3d66396da91c448aa47911ee510488688e9f07bf0bf6f0858108f9f1d4876f8fc8701daf77fa91dfb7bd17f9ff87d09087ff4811ff8fbfbbe07f908d2f0f1d48e3df2f981e0176aadb5d65b6bbdb54ef5e8211b420a1eb518a91da91da91d2914140201bf6f6735e0d2699d1635332d2a948139cc316cba98bfe4cea86fdfbad0c283070f1e3cb2b5d65a7befbdf7628c31e6388ecb39771d8f148f19f66d2843c617829410a920a69e6068ec1e14c3fa96da3de3deae9b31bbe871e8c2ec22bc430f67549148fad1e770f226cf852606907ef433243e73c2c33779ee6154d17efca2cd613d14f114103be423f8f57b1dcac0326cc79f451974876ebf039726ac760a4dd329a594520a434ab7b5d65aadb596bbf7e2db0de3cbd971d268a932556efad39b51ed638e9fb32fa3a55fae6bcd4ff868b15bef631826612bf2ef7d4f9c1675e9bdab1b2b1c39f866a784f1dcac70dc7cb45b355956151d718f7e9fcf0d6456ac9e32c6f5def1b9c762e5ac1a4b454cab6123dda666b0eb8f2419970d2c1b2a00fad6c531fdcbc1a833d856ec347973710e0cb332a1a7a56e0554d76c920bf688cbddc3a6a17bacb397b3332bc2b3bae1ad603a7cf874b4e0e2155cbcaa6941e9838eaaea7a28cb1e393bb36f85a3cce9297becac70ac6e7c2bd8b7c2e171a1f0e6ef3a3e5258698583f655af48897b744ab9f75ad76b594075a63cf5823d625a2ac7a6c17bacf307eab7f4878f3433d49c554359a01feb768fc3b098e3229807f714e9a92aeeedeb3a2f66c1ec17639ea3a7649b7b8a8bf454d548533936a561ec53559e0d23a9aa1fda47960d65818f343d3408eab85655234e42abaad943835bb78f8d609f6e9f862c1bca0267d56416d9e98801ce3b3ef1ad7382b5d65a7a9fd29b920b72e65e16853febcf9c526aadb5f6d6714a8eaa7afc29b1aafa141f289922abaa9b941aecd331d6bacc1cb5bac6bdacccb65914fe71bbf4917b8ddc4dc7bff9f34c1778dbbac7a26d1b4bb68ec711ace3d7a229365de0d72576f9383eeeaccb8e475debf85345d8f84d3c74fcde9842f647a263eef5b790076edde6b09d7d122b36ad65d9cc784a29a51786cc225936ac18cb865e16c9b261c5583694b2480aa37e29226cfb239e753b63c558365f2784d56ab55aad562bbb5a65ee57b015190a8532ce39672ee4b89cf3af60ab1b195b8ee32c9773ce9cb536bb949d728f516e54150aacaa38949aaacaf885425655acaa1ec506e5724ef9ec94cf9ee10785e6c95078a2539a8b0c84420b0f6d45f4fdf841a1a29c2e50344fa79f3ac2a63fa2bc3a75b9592155ec5889b520d1e98f4b09563d04c7ad56abd56ab55ae10b6210a4f47e188630581951e8397e47dc04e55eb015fe156c7503c78ac42bf05730fa2b4a57e0eac60ab6c22b4cc1156cae443916953f244e8bd2e18f98063dff4a99dfd6f3eb540f9b06fcb8e7b24688a0ae2b08e6eff25ee14835b1f18f5f29c3a5dfd97c613fbf08092c7eaf8f807f1421d1f35b8c29fe0cbe155dfa0c67808f6df305f7f943718520f63c42b7dfedf22b65b8bc15bdefc75dde327f87639dca009fcee68beff961d8fc540445b39eaf909ebf5cad56abd56ab55aad62906c2011b0b26aeaad950b6bfd2acb87b0eb5835b5d6b00b3fce82159725cb8665c3b2e1787c21c6988631ff9d19e30f33e77dff81611886df8b34e89fa13004c18f86b4fe2e04c10f04c3ee7b5004eb3a1beaee41b0ab9fd7f1d1661688f40dc330c45f1862da7d985931560c64d95016f4fe7c6f78c3bf37fcfdac9af0de7c9f8fa1277a2c2ac3cf2c1bca4208eaccb261d9b06c4234e720c44f4ff5d92384103a3ac5d1674f1039aea9fed47a6bad6918bfe7e6a735cedd73fa575600f279385ce110bdd67bebbdf5de7a6f6e757e1a423f3bd55aa45f946fb02371ec409f210ca1fd38dc8e452fc25b8bfe44341969d9bde75ef3cd470cd08c5c4ed77caca1c31f12690803d8351f3f8f732b1c9405523d518eaf3099a1f06acdac58cd99cb99e543cdb5e69a73ce39b37ca8b5561659593972ce35e7cc695b3fcdbdccb221814a08e286b5d62ac1318253a407a0cf1e1cd25afba1fdd07e6843ae0bf94865d0f4eef5fd1c866168b1edf9de5b73f90db6d30f7ffe0cb9300c3bae0b81d85f09ff6b388386cc47eae170eb154d9b331f73888720a8b3489cf6e338dcee718e0486b5d3e1c6e69c938ff3f17c6c1fcfc77cd653cf220d37b87afed96766c53c562ce79c83a80197df57f1e3d97a3558960dcb8665533201e7a5a356af7d1caaa883a7bff4d9a343a683ec02e8b307089faea7be745a3a2d9d964e3bfb1569b8c1d5bb9f7d8ae32a07c6ab497917a3fb19eeaefb8e8ff9c1f7befb5167511d1f430ceb22d1d8f1d9ed905b8ec3ed20d7dc8c9166c4e1be87dfd2403f23807e063be623fd3b49ee06c7b17842560c85455655cdc8eb30a534a75f8a4d3836faf51f892de40631997b2c83d39ea86dd453e760bd3ed637ba7ea574e857efea4baf374856766ce9f7aa27fcdd9039be9b8eff23adccac9f0d3c5bf42fed465af6efa3fdfbbe5755d9f86056267cecddcc17dfe359c37f83aa0a7cfc57097e55957efcd8466b5a99fbdf5bb1ebdff7e1077e5fdd3a1475f8168ee638ce665149842825837d7fe6eccc8af0f4d08cd47c6c487e92dca40852c2b22163291ff6fddaaa9c8e3207ef54d5acfb6aa21ecd488dff54559279a7e77954aca76e3ee5f43f7156d47cf5a0a38b7df6fc005bc1f82a4f17f6697ed863ee91b93c5fcc9c4110fcfa892386e5eebb8cf99d5523742c2918ec91c55edb7cf19db4c271c11aec112b41c5aea692ecf11fd3ec0974c9b261d5b048960d8b64c540a031ac823977d6e6dcf3c3a85dc698cbd171637f723fecc8c921c482b79e5690b393d3b322af901e227c88c001113b2cf40618aea9c5cbdcd3d4915db3712f2d5ee6397bde0d63b4e49c73d7997e8694a6539357dad012c3e3f306498848d2e55d4a318103127aab35505a450acc4e2bad5c027594fac11ed5eca8463d20ec5b4f5fbbd6302e95833d76b77ee56cc06e90355515e37270b2aa32510e3e8b533fc084a1c3ee470ad4937d1c8eec19c4fd388358eac9967a768c5a55551f1b929f24a3db488a51505599383e73e7d92d3343d51f38c319df7b7cc42fdfe247eef595f385cb5beea5027783762ee2abc02d8bb72e2aaf02081bbdb8970a7d79f9162dbe0577b5a8a2f89df82e29b67ab2221518e94d392a30951b2aa44acdbe09bd0ded9b192460295d21ba3ca729b6aa1aa72d054955752949aa0a006f7774fbfb5360f3c58a0761a35a55b9bcfd914f55fddb1fd9aa4a7cfb232455c5dfee1bbd430506eb2d6aad2e5f4571c5eba6db9a0a2ce76c5b5a24803fc5365fd0b79ff263655e4a3f763d25e5a70a1515afd2228e34bde575065988f567d8c271b57234fdae900037430bd144fff4a87f114df4f428ef5d3cefbd57c17b917b8f123b8bf2fe24be882dc4aee333d4931dbdbafd15e2574e17367c2e7237eac9be28722f7236eac9be8bc8bdeac952ae5f44dd42f4c2510d678fdc6be5c7516de5a7951999c6dd4d25d3a866edc8d6dab7b4fc0a71a4e92b5e873156bcb6618c7befcd1ce7f2349dbab47c6df94e1c6de82d27bf4234f92c86314ebc6711471c83ada8e05452469ba40233d9b5da988264dca0fef8ad278e5ffb33d8a78095a25b16f2d2a85001e081d9812ffa1cc20f7d0d9cfa35c0177d0e3f34137e88c3a8b7561103a4546d83a5fd69ebe3aeebfefbbefaad3accd5ea043d598c22e84245dd9fdde841ae613ef5638a0de54d64caa7d85290a4fca424a129980a00fad2e25f7ea6c5bfc07c8b16a96fc189fcb3f81504801d95f404c5461aed8c72463d46650c36603ef53ab5c41e47e5e5de012d1ef50e78f9530d9c99d49fbe060c37d9477d8b477d4d7193e5268e3300f52d7e06d5e267fee54f7c86234de8fbf80d74c9886129203637722068ff0c2b4daf3b7cce065ab918aba7fb291e76e95bfccb8fa3f2e4516ca41f95a31e7cbf54feaafccb85176e8baf75d7caeb7f15bfaaf0b566315655e3e4c9515559f4a1aa58e81dfa7d15ffb3f962ffcaff7df1b90a7f5f7a875169eb2d9ea6555fbec5cfbc7c8b16ffc2674efff22fdcf5f227ee9f13f9deb557176556e6e54da6961f6d67f9b9e259461ccb16642172d662580efd47d33fd186e20bf57433ca8fbb6622a78b9bf22a882949c4949f7aba2f8a2948c4145b3dddafdcf4335ddc17d174b3a8eb52db266ffa992feadf37ddaccc4b8b77f9955714e6e97ecbcffbfae754e1a07ababfa283f75fc4cea2c06f214e4b71147ec0bf8f83aa8ace13f8d78abc7711471c6b1147db57f011ef2012af6c07933862591f59c871ab10c7bba3a4228e628e7e3f451c771f5348e289382a412fc5446579403d5d961c5555ed4c3db190645571b232867aba2c35b11c3edcb0e8a82a8ebf702b062b372ac30be4efc751d95372a68b1104419014238307fb02b650a6c5cf5deaf45f44b0a2e8aca89e62628fda86e98bb1f96286f6cf29332a6da3b2fee6223e76214e4765c8c7d2a874e9f5f3a8e4a1dfd71c1763b43d6a9bb6555546f29344dfa4d0415a09f8aa2a537d121d95a9235b8c59940901f6c718eae9fe03ea69f2f4145bbfa2acdf9fa594d8e388852cab8a9bd1aaaa8f7ae4ec8c8a54154f55f5dcd927778105d81f6b1e3b8c85602165e45e390b69c4c842f6fb5c68dfebaaad37c4bdce774e4a6fe8d69f3cfdbe0badeb23f2cae2093d599890c01f4f2249ccb128fbb38e67d3e657ebd686fabb557fb772571cbdbea047c3b9f78bc4912686289c117ef7273f43e2277cda1913de5914fe69519fd6bc8aa3980262d707bf9103419dfee867486f0d18d647d5861e7ab0b3738631bab1065ceaef56aabf5b69ad15a77036cda59e5708c23ede25fc978732b85e450cdb9f0d2cc275c9c31e75b97fd4b50dd335ed535536245515642b1f758f204a69cd39748792baeca173f4ce125f4dc6a94aae4790aed55e14f21771174ef82ed16fdecd8c7effe6aefd234ed3d2a17869beb595940f76f93aa7574deb35fc0e883dd23214a93862d848c170067df04391a6d3d9753fe8b23eb6d0691507d0717ddb74e8c962f6d09cf279e1013538800231cccc208194919df908a67ab0a908ce4d64dfb7ff3d4dabe3b889019ec7bdcbe333de7fff7197c7695a78c8be6f9fa5544f35a5833dce9e67514ff5533ad8e3e905eb80aab26ff98d61067f3db5e04255e1011c60aa6eb9e226b469467dabe79b38062aa75c464b1512562685bb68d0a2e91185cd0e3d14610732b8699d3c7d174a425a343d14c12941e9041280306bd187a1f229dc4423e549efd3a2891d010740dc92d84101132dfa2d58191277996648ef8156047e78bd6a9a50be5ead94774d235eb3d7ebe5811f8eb448cf8006fcd0223d0d67527e8632d07046e56728030d674a3f4319683873f23394219c4141e12e970b6746c5a3bcc9c75819d29fa070978ad29778b04a4965ce5078cae3cca0fcc98f3be584bb5038ceccc9fc131e6351f34df8dc7cdc9d86423e9e3ae5a49599ddd8f18f8f9b777cfcd3a9a72727863edd1f43d2182d69ce0b3d3f16356f16d5136451fb655125cbc7ef2fe480b4a8d92b25672635b4834abf93d1d858563fa6732fee656d17cb6eb7fc74c6d9ded3d6666db4cab8d7c7c7981143b1bb3bbbb34ed6c9383ec674fbea3af605a3b3e98fdecb9b9c7a366f079eadd3d73043ecf0f3ed369b519292734e98db063f3fcc6d6b98dbf6606efb616ee1673e83b985cff16983b9ed31a6878f39cc6d875fff7aaf151abb723b6dd6f271da5e3dfc952ac244b1ebc344b1edc344b1efc344b1f1c344b1b9878962df19cc10fbce7af83043ec7c0345af29f93d0c143bf4dec340b1653050ec301445bf42638b42e20a407628148639e4f4666797c4eff171dab8ef380c143bf3d10613b4c72ab3af3e4b52a63b5acdf6730ba275b2eea6cc99f174b25b50f7ea601dd9c56e331e5acdf693673d935686e6064b822c59b2640a478068d1234b962041044a2c59d21a73ec08b11e464a500322497c688d5986c4070f6e4ae4a8894190d6986f3a7dc209485410c40f96688db9ecf455e4070c70b024072a688d39a7c7d8accc2432c592254b9644712488167deec7ca04808925530802a8054ba4d0a2cfddac4c960207122a48810c749e68d1e782ac4c0d46768c10e32109274cd1a29f5f56c6022280010c8042d083d7132dfa1966656e0e3a9038f10425367468d19f317df628e19544ac8f9cadcafaec3922c8b31d419633ad21efc96ba109bdfe1893c3a539684d8c8479f2cb5d37a5208381c11e698f8e473aeb81475aebf85ba2e3a7b3241d3fc520bdb13233802e266904eb8f9945679405fc237e61ca4f7f52d67c9139026acf40a73fde3ebf9be1c7a53d5f4060bac05fe9ec013029d82f2b63f16b8b2dc673ba30cde9e254310b7a8ef0e9e93922a7e7889b9e236a6ad71540c7d8dd8b86f1f43de2d5e9ef17f4ac2a24bdc788143aa911303022075869ad195163848d6e8b8042115274121034a573522445d49e50797a8ad8d1d153448e9e226ef414b975c04673b6a1caac5051f5ebbcfcf10a785de6eae7711dcef70413837dbbcd0272ceeaa78029f3711b6692d9036b7f861afcbeb185520d56463fbebc02a0c7479ac394c29e4da8615f3e96fe64297981d0b45ada35a6404c99cc294d45f9487b867831c2ae3f3b95d1d794f99ec2ec5358867941887547c85e79116e68cf0b6d8f7336c3cf8d02f3e78e0f8367d25c983c93b6ff14733a9deacfe78ee6607a9c166106a1d7cb477aa4d78ef6bc20a13d2bf0d854d667b7b20ea3c2a81d1091160089114941102282dc047141101e82e00892031025407a80f0fc90e2c74d074478881421d2a38f272233f81134e4861025428284fc044188914ee2329785d084e8082985d4749e101b527412f53eef9b21e9f56d13e0914f7f1ad3c66e3664369b95b39bd90a92cc6af690d9078240112449109f204b0451024892204904211204088fd41444423044c9102880e40c796248134398187264880e86f00c990d2102c8cd901f86f830a407224988d888d45241292814b1155942c8ac08ad0891941380c08aec14d151c4872235454600c448911c84c8802021a224f584cac489c9c80697c88f9b1fb11f353f6cec4061e7b69364c767c7073b3d3b3b3b41dc40c98e6c87dc1901b8e4d39fd6f1a1d7c7538c9d8f243e7c7cd47cf0f800e263081f3ff878818f1a1f24f09183ce143a50e8fce8d474683a339d1c9d1e3a353aa4ce0dda0f2594fe14d3c28f24a53fc5fc00daa51f467ecc7efcfc30c20f243f8cfca0fd98fdf0f1c30629240f29d3208baa302ed30fd2ae7190ed72c8c7120f92cdd03a3abef7c5b4f3681d55f5f11127e1e1e1e1e1e1b9f7f2704b8f61bc64c72ef3715b5cea95899d3dea72e7cc17f67ed7ed5dc2f747978eb74d9777db2c47f9a16d9b2cc50b42b2a57c76fe9b2f38844d376e829be1d22927f17c4ab858a9041be9b5525c8e2a7a2d39c95663dd67d39fe1d22f27f1f8d8a37ef558af2309895e5f544e1714a5c439480921c5448a96f249f9a47c524a3cf1f3f353f6fcf3e670f53b2e466d0d19618fd8c5e3992eaa8ec962b1ae484c893d6259d79549000101010101010101010101010101010101010101010101010101010101010101010101d5991f9b803e26e70badab27ced6bcf6e9dd157777c6ecdd73a10bb3775df8e0e7a0ff0b6734e7defdee2fa7ad19669e32c2c625ff72ee0cbca76d9cd3e97b4f6b8be68a99408204492863ced309cc21072c232d0a8c611f870cc03b4c1418fa54135bf4e07c18d586d6be7d1c138922100cb99e4551481412b93ec319dc67d0a5eb7e82bc828fcb6957560072c15afefc3a7ffe2fbf8733cf3f716cbec89dbe4b1fbbfa59ec6c5c133406684f39e104a5d4095bad8d9172c25e8c63a49cb05cca894d7f464d3991eb09b02d15833d923abdb49c2f726a883de22174de25618fa552a9542ad9aa14b122783021960a025ec1563756b015290b7d28f49b03b377c319f98bd56cf1cb61318689e887c42e5cd58c2bd25b6920ec6f45ae705016e88b397b1e1f316c65228e444d337d6e8543c62de1063e14bca1815ceb0f435fbfbfe10c16c9b2e1eaf7f321a9a72fc9cf0f49495f8b5d3db172b06e55d99f2cb257ef07bbe3ac188641f79ab3483165d9605cff46cee0fa0dacd89c2ed345fd896fa68bfa291aecd1c5e6325fcc5afa49e9d8f431af5c2f820ee1cc70e95aeb9b23127148d34a5b5fb53b743f598cfbaba9608f3f52f4fafa7cbe1f2adeb04896cdb763ca741655fb7cbef6ee60074ae9c53db4157df6d096e8a1cdaa0a68348ee33a8f469294745dd7799f12494eba20f47c11c6c826c09e3fde0b7364cf3e7b94a8b1a019e8649d6e1ce210532a12812290bef5ac67b5d53798dbbeb57e937f79362967e37eb81b17945f1996c91ccbb27c93cb9cf38ae9d616fa443c04e2f0c32006edcbc2ac4c8a8d5999bdb1a5cdb133cb6369b666fb1e7fb6f37067bb9f519e96a72bfee4e9d31f4a579eb2989e7e256bccca98b8bc494451a1e24d509ec45da447e1a6d29b4abc868be95dbec46b98380e0dd3af70d7ca9b54b83c8ac90ac9644505c964e56154161716d1e549262e0fa39a5048262824139289097f1d68aba4036db1fc0a8be95d4c2b8fb2a2e2492a665526a2fc0a91a4f2231aa43fe1ae932771530c38332ebfc285d740e12e8ff238332bbe6505afe1c27168b8b8a8a03c6924438aca6b0bc2a82dda822d22caaf18911e463d199d8c46dc06cc00add1eb405b271631664584e18245d1371163b00eb028fa2a62ca44e948dbe44f441b3003b44c74a09366fb583672af151a9bc2dc76e53a3bcf3ad9ae2e92a0471f3ecc6d6fd17ba1c7f4fed4bf42634fae7fda64321828f6886ffef18e538e7f050fecf1ce3027fbe41fe723256dd9279fb43e1fc3dcb6bdbfc26b5bccc72a5bc103dccb4ea1eb4f16639589f5566395acb0faba05dd663fb61a6d4679e88c92348796f486ca62bdce406141b79f698bb13235b81acd9b3ce6f2b185ae4fdd97700d9ccc6b70bc333500e3caf9fc2adb313d598cd666c4b6a57d4d9e16b67d592376a55999d3e9bf549acd787838afb2fa7476aa3dadc433672d6850ebef1b85465f036746f4a1f7b86bf31a221eea3ec6cad408f19f211f6362eaacf559f9f4f8cc95abb8de6ac1ea2109699c485bb3eebdf48d96e99826f54bc3f48b1674fbb1d16ab44fc633cb293fd977f3c96e5fec233fd8f7ba59540deab79995a9917f6c358ed6a7a901997bb396c7d3abf672bc1cafb4325ee9dd5819efc69359194fc6e1705eccca785e8ce33cd2cad4e0b8477aa44796ba1c62533ed6529725576fa240bbdde88cecea0dee7a9dd93afdb1def4fa3050d8968f5506a3648f5506a364d3875143daad273cd093c598c95e2fd661b6ef7d2876dd738f33e37de62e8fd7e8384e0c35bcf07578bdef9e13efcf50063194418bde7bda76a10c210dee61546b3beec22efc97cfe079dc25facb63b0a8ca71170c8baa332673d75b54b5dcb55daeb7f55d38dc25ba1d77d1927b4abe5ea2b7d6e6974565dd711737aae4abe6cc5d225ba892bed0ebb8b0863833fb357791b8fe2f54ceace5dc2de42eafb47f73d7fcefb9c75dfa75a0adb2929b7fdfeb405b9abb38fd2e4c3b39b1dcc5d148fb63e66cc46f95a53c585f1cf73ad0d6c75df8f66954a8be4e38e95dd66682e2d50f4bbc0bbfbe0aa7b36993d1b2ce2caaa6704bba50b88bf4dd4e3817b739ceccfefc9e09f7b28d7f235e4b4aabaf4aca70597edc75679516fa9bf3bb30c75d17e42e9c19707357f7362babb36a5f969461ee2db7348baa21eee25ee6baa44555eeb2013340ab7b1d682b5f1ab6593bb3a872525ba5d9997d17086ab4b8b7fc961655b9ebcaac4b07daeaf89dd16cf6f6b23f5e59af16935d7ee51bc7d13899bd64b6cdb89223b917be8d988667f6845f99bf45d1ca715c6f265368687d286ae97d6be5466556a6bbd96529e7693c4156c65583de6e3f3f361b03685adfd7a8f11a9ad39aa901decf164dabd6f038ad15a6069bd6cee2fb3035d894d717edc64d311fffd6570b16551fe6883d763ac6cab8f49b68780fd63f85ea976880ff7d1ff8f5bbef2bf88161180a799ed6babecb8533237afd34664f278baaa42814e2ae8785217795e80b7c9c19fd1ec85ddbb5018baaaf7975d90093b32d1f633a1d637210d4692d73d5a4be5f1f668a3df9387b9ae0e9a0b5d9972d2d1f670f1062dd3e4ccfbe7c9c3d476addf21aa6addbc0dd6092d8958fb32709b25e434cbf811679756bad3e5919578d0bc6500367267fe8c1a7efea788dcc7168e4ef3ef494974a4f49a11008de8bf1c3a8272b83b90bdfbabd6f65eeccf6b1c8b679b769b2970da4098dda3a9b457d28bf68a1275f33f2466ddd0b6566c23b9a45d9d2abcc622ccaa40c91fe84bb28c985a2db2c147ad11bf8bbec5ee0bb7066bed75f695ff7decd8533f37fbfecb6fb6cbb998ccbe54b3c0618292cef4276ae6c79966fa1250d39d9adbe7209de5cd5f6c95cf9d6d919e62e970b6766c567978a9f16f5bc2b6fbb933d2d26bff08f73c695d885bb30c982dfc5f298d39945d916eea265a9f42c2fcef495e36cf546cb324bcb36949537f9959f16350377611b779dc879b3bd484acea8ec464b190b77e157a9f4999bb8abca48a42fdd1ba7f2a457212dc7d1acb571b36c92f2a14fb1bfc25d9486557093199d3d7e511b8ddebad7abaca4adcac81277dd1b89f4995b15eeb2e468f4241bf71afdc9cb721f3e370b897e7f0a77d5199ea1987ca8ac65e95669b36abbd59bec45b324f72271d7b58d469ff9252dca92aefbe27e4473e19b4571efc299097fffb4281177d992bb70c95d3833a117bd6cdb666057d2b4cdf665d2de3c6ef6ea467c1b71d7a5b95c3833f95d99dfb27489ee0ccb2cca7ec8af8cec68d306f2938dd2347f5a9d9566b69cadfce3bd3f5b1def2c6ab632ef00cd0e5058b24489254c58228516c7efec96987b2b686805c00bf4fcc942c324b1e9c77063374f7d82d74e4aa70d26893dc6c0d4607fde75809571a1bc89c6c9a7bc115a1358e263884f8f178f22b4e8c7109feaa8c4adb4573dca148d4800000409d315002038180e080563a1348ac22c91730714800c829c525a4c1988e34192a430888138c618420c020400400c015353325323009f926376c88b1917f9f448588c0e0a72868305fb709b7e330f013564b0bba8f75fde0a89a58d370f8ab7f4cddc2537c3ddc5466b22dcfb827483fffe163c8f3ae951d858e7b9b21bc14dcc38ffe9a3243f10f6b6eefd935121aa712ee3cbaf12da62dc0cfeff0833c4f741f7ae491a9abb240dbd5b540719115413b572c226607c2d87fc97c3285709eea662c7e9d1adae8c33fc5ee4a9c4646165f0569dbb80a9cc675b2211d93739a1084eb0381539c37bd61ab035bae55bc2f4c1ec43f1506508304cfacd56837029e3ddcb13703c1fb4c5b0e8f4c84c74fd7d62daed09baf62127f5c468755355d493f8144d5c54e2953fdbd606e96c3f6a35394acbcb11cc8d887327449bf2a875f5b19ab365ad3c3e4424153b213ef5c85579515f74b4fabf29dd0fc47e5ed5ac8294300427a09a8041efd67975fd28bcd92759a80ba1a80c6211f392ab78d5d93ff6a71759c5e7ce3ec1e2302fbcdbcd11a2762145a25f05763efedc3d3805add4b4ab04afb31e2e2b67f796b5c37a4f49f5554c107e029a915a68bf288392a879b4ed94ef96f4f67559a2dbdeb1e49eb0e461f21e4f4a9c21fa44baaa443fde69c3468ba726bc62a8ffb84da66c2bc7e9a34913928ff1a74aacc03da9dd26efa9707bd8bd3ef02b18780c8e482f80ff759ab7664358c68bfb730ea5f4edfff951940a104a267b06d8684b8101f8472a31cc7224166129e2b78c0cc989aa10c2d2ca6014ac59dc2919f6e516409d685f2c34ce7c550f712bfa5b2c130d61ca689813c5aa6a0387fe01824049397994bba6f520fc823837b24b9b99221c7ed24f1426fb721e715b8e94a146bfece3f8a3b6659cb645301e1bbbf3b0ca2145d56934bdfa9b29e9a52019b6dadd309be15634a38ea6ebab9225c06defb0e2aac67c549bb876db6543e43036a1423840029295dcd06bb8add352af96844c9f320d12a2094a288527ef6dac68e29170789f20843a8dbc0a389cc3a30fe92857be46c78e560efd30fc565a11cbe2c1336d65477a472860ca02c20c8244d2cb45104e62d9e70504b0403808aa4cf019be0726cdf861ac263db24cd6c01ce1bd873f00a8707f3eb90f0dbf7e3d6f82cc35955c7a744a37b99ef5fa736bcdb596965058733a4824ef2dc5ecab1f1a7f415f39fef42659269c561abee7804adb6ca07880ea650441c4804a41c1042937a97621d7d81187bb9e4940b7f308886399726bccb91c341d384844949557cefa4535a63e130ec1a644a5adb5ddc5d8ecf384951be083a594dffa83555326e0c9165479ef4041d3b6b2eb661a1889bd4a4eb4292c239af86efd76fef6be8c1b8d1809e1343f194c8627c009a4b00052f5b964eee492c085aa0919b681526a77dc23f7c03d14b7934a52405e0b7aac010393039ba81ffcbe2f923223999d2ae6eb1cddd0c28aa544daa845aa1489fbdc3095b7b5093808c12221996b7e402092e09a134b34fb290c33da91f8653f8d8910402e8ba32d072c5d2ea6afd439341582d2d80a40a8b7146f1325332d654b81486a45f5a376968002d150a7ea2255a38f02b12dcbcb272a8150d7fd9c9a2f8c5e347171824a0311353f454e3a54cbc565270cc570182820ce9959550a2b9b407881fb02e9ae7f9207ef905b27a5ee5df2c3bdeefd7385c847fb2b8d604117e01b32ee9fb04a4dbf71927de3472ad6bbe221b8e8f2b3bb8689fca485922f3ec390c85699e44d39cf375682ebf466695f58e4be616e050b4f1cc0f42e5bd5384c6897051acca449d1a475499a968c8b5eb6405b62edd40e032f68f1fb43a96662f7bdc3534fbb4f69675829118b51284860cd04b9bdaba60c59a2bbe71720ed96bacef598f8fcd6b113986ed0d6493b040cff106a91f4b06b63dd8dfc0d50fa48d3f8e3f576cb2fd47e9d5776165d741fc8ecbc54e806ebec4c0ffbe214da999b650f6ed035c54d8dfb14880ac8bee3a099eaba048957434e0045f80cf42bec1095d1bcca103e410e5c39cd366d00056d0248a17e6432213181671009ad8a02e4b84bdeaabf0ce21d66579055e7e8be87ae0c903dae0350041a16fe611f4268d8ffcec0b9b74022c814969bc62de1c36f970d4a4c37cee12422bd79a7a357522dfd1bfcb0159dae03ef2408af08e2e790b0d2a1fe48c5443cf7c03d700fb83d5f8669c8f8ac07ebb492d67c9adb8ded720bae812bb9775f8779c4b8590bad0c5682590555e8c4080196aa7d2c774067066daa311c3f010009baf0ac0df59c8f690318ca59f3674fe7df1fef973c2d818d4a6bea359ff76656be909d3212cd87c19d6b016650fda33ee8c59a21767296a52f3294d6288927d3cc861d856e81d831bb5174a840347bbe8f704ab44505c5446081449123640781461e20493ffcc199abe5e6da309f50bc8c2675324943c695baba5c1cd4a73ae842b2c99d055e189c5d984c16942fc205222c83ecee060fac411b1ac5e69606623b185676eee01ba3a613c94b9d11bcbc6fab9ce401a3441c52ff526796f6622c8c4a7468f3c34c257fbf9e132454dffca3445538b7a7aa76a9b5997584a5072524012b8ca4417555c18cf93d4f7dd243939aff6dddc898d35dcf7435712168ef931076394636cdcca28c71fa761f0e3c58088a3d70560dfa301548cc79e5430543b2bc9b4721c2cf552f8740cf2ad31532b90fce631f03927f5bdb1bae818305a4914897e0a051cb23367437f663bc8a17a10d0277f249c5cc1ac80b5af8af77cc05145e16c8245a230e7ccff14004adf78da93b08f6040f146759592c8d61808edb4e7df36a9f8b00babf3dd3ba91f9fef7f86002a3ec7a56a2c876b31da537357d9bc0cd349c6a5e8a73321781b9e28181fd060995883c08b958d6902e1534adc7ef765495486b73000a77e1e24ddf811ba7b67a05e3400b400a9c2c13ec0748e304c2bbf5c2c85079889e1ca362b83bb5aaa3eb9d8343dee7676ef88e4a2a4f78b5f06b48df7a5cc7c09c850d7988179d87796b76078d77d6e3ad9cf55017ac10c73b8f5f2ab4d1fab2d73cd2ac16c2556f49823827f4114023c85e4fe2f3362c6b4e0ee38579ff14bfa431e636cd38d902ee53e7ff38ea0e9613c87ca7dc0b627ab11870c67657b733de68dd07d03c8d89a28351953a71846c1afe8eb3028fe17074e33861248c37934cd669625cfa1bd222b4f7caef57e2c0cfb3ce1026bad0f585b55d0b9765689d5eaabda6133758e974960023afd42a2b7ff04b261c3928dea13b34cea406cf387a927842465dc7716f12804ca17ba071f41a5fc10180fa044c74b09c5e967ac3adfb56e334f8223173afe1708ac7d81df700a1ceade88f47a4eeac31ce42ae6b81d21e67f82a0b8662e8959c9f0113892db10f23692ddd630864fae897024fe1dc753c804d43cae2c01032253836fa1749de6bd4a1c22e7632fd0e5f80f21b818f223e1d6263c32f3d072dc7263cf617b6867445134a82780a19c6d14ea20c408191962cf4f2c461fe73b442e2cd1664d7dfbb38b827bbdd6a6fca2f0a3b40294ac8f0148cba1ad7e556aaeefa5f5774aa4fe2768d5b2fa286f547d58f9b85d770376af312e0b208985e1be51519ad509b1a0700e2cb03983b0e3b17d8f2b8c9d1422ca366190ed46f9a42a79ea0b21ae1ccec37f588861507e6e083c04b11b66ca372a9b5add58bf9afaf6fdbfa8e2b2f1b22c709e28c9265b122c3f96863993b197a232cc6d3c17491acee6b59eef8d2c15b19f27113b301fca22737cc8def6a5f9692aaf37d8683ff5d08384aafa410675a7029fbf6930d3a32274ce873e62ff4f24a55995f780ba56f5fb2e54a82cdd21e22b4288f74aaa22efbb9e8411d1a65518c53e6b0f6125d5b0507d801c444926047e4dd43694244fcdf5e1a1bc3a495298afde367c9f38f8c4320b0f9bcc13c159d48c716ffa0147d64d1c8c613af4e9430551cf5cee03fff27f0787797db1216f81574a91be06585cd8df52477a74d525b7633224e44ef0c98e1efc2d54558773eb5841ca4546cee7a9144140110aeef62541fc570673f601e8e3702e03b9d5f37d446d44961f7f00b9fa6ac7c3f3a3d3d8d9d1f8be80ad3ada78f7aa6ee406e679af144c5e256e4f33daf9f613b222d4fbe56b9904847326ee25665f6014ea85f205f72d7032c824aaeda0916368d1b4edc15e6bd104df5571a2b5988268ab3ac953aa7102b9205a50e63c83b401840cbd8d6ed33ce42cc7537178e9cb971e334fbe54ad96184bed2560dca2e1ae0f62273038b51482c2e3f428cd04731cb6d72100be7e531b8f9870a56bc0b92c785f3ea2653cbb1c3a3eed6a604414a21b70bc63a88790040038463bb38e99b8d62cc3953af005632e93ea2b20de637e003f383963f8cb59fc833bfe666f6b6653a6346a268a7ec7ca3b0eb4e51b19d611205e7b9dfc0e67e77010162eaa7ac824872874029da8b84835588c75c28492af50664953d090ef05461e90ed3ce8d1e93ac3d24984485382811072b61ea0fc2e48e9ce0f31d1def229808d3836bdc710fb2efd22b00d260be979efc00b42b4524ba51dd4a1e57a79d9c6ec2d449569ef512d3b708eb2b139f5fa6f9420750c41bc249f3b7ea11501fec4fda709d204049a2762bd5d64ce074747ca7f375c44f8f30c08ae0f531d0316c05892448c6832e37691037212bf886a34fcabab80fb6851eeb4eda88c7cc6bb9dbb2a7a2b7cbdee7e976d7ed7aad38414997b1b875bb1209f1618e4df19303b6ed631bf66f7f988db1ada2aafdbb00be044a4fc666206147a668085cbf8a0f661e681c57d0854372fc5e29022609d7852c4feb5c8e41bf72550df3360fd3d1b1266530da08f15c68017c16082aad8cd8b9cfeb0ad3e1c74785b2c918aa15d28bfbb3cfbf0d729492f1ad078682f599be2774ab5a1fd08ad19e9ebfe96e59fb6d2c52cefbbca8233633f8bf2dfe4f8646b1305f8db4970c8f63101e83318fdf18f7d671bc6ac821fba4798551b6d5f26234c3a716919847adba08c902870ed3841bb457283a599c965bc8a4c522a7b9907dcb26e3bb9015bbd22fcc692c77ebbd7088dc6725d887204c2a1b8b8a53948a63a328e85ee5cbcc48cb1d36c1e21617c3c042fe70ec6a7629c384e550b45fc8355a268e8310c5cecca30850d5a3604394ed1ee645c62e4df27f591363796fd13552a51b0e69ce099a2cbe06f5bb2e40fac8576f07c754cfdd3945442a266688740d8c79ce70a58c4527711868a0b99948b121057dd4055aaa67bf04643ce1a975664cab0d2cbeb61ce1480a5de298c60b5fc3fa0697f477bfc752c31d0c4a68058edb6a3aa4a61919f6dfd83b23bf3ac66321ae7484b6ce85594ebcfe8cbacadc4705838c2520c10f02c3c1112c5cd34e6992031a52d005454e817c2cafa0ba8778b76af46879007f4c8c1acd8752407a9668eea77ae6e803fe9206a6d8db002ee6318f53146399f20a4ce69b058eb1acc9525757683015f3ba6c6d0bddcda93da0e48413a0975c8a743adeddff800cf466727034ac864b023dfe55e33e2f9c6cf1559535f65c079532654ef863cbcf41d2b1f29252b29e4936940ae87ea9dd943d892a024976546ed85f523ac460b0fed7a113cef782d458b31f700745e8c5d08a260a77f33461e2cb700b5fbed09ea5fc94a0dfdfa28bb914987cba6205d36ef25145e9b40704e25dfbb09124b21fb052dc42edba98b8d47e6881d784ffb8887f0af2b92dd8fa8123ce45577a403a0d16e35f68c1ba98d0e75ed629aef706fd8ac85133782489e3c18cebade5daeb9f1c852fa43b31dd1574dc2e59483e40d814574495521442957254d1443eefb80faf294b859a75df3bbaef0af213885ddd386945503a2b50c9c18bb9a1b9b11fcdf89e282d2a52442a5e442fa56e7bea274c037b2e9929f8af27df682ad2e96b33a2b47fdd87218d5eba2b62a4897fb4f216a677a9bc7ca8e9dace2e076afadd9acb7b538781cb75bb3043de8baf3d3d6b8400d7e0c6290f7a2e8b991c6aab8fc76b48b388cf601a75452320f3c57dc66f4dc21ba77f8e47cf207ecaf9ec2349dccc1c73f1a7755126e01ecebad9faa7fd423df47cb3251d119b618cd1a0c6fb83dfbcaedced6cf1a067af75d2d9700532d68faf388b362be7dc412aa02f99089f9f3254046a2284b785f7b0c848c752dd4deb850308541a1bbc9d4c6baf15c17d2a96c04b704f5aef26ebcf97f9a9d71e79b781015ca62d069a6d193bb13a76af4dbf1ee00736d731d2af44a3be011f26f9a272eefbe549e8a4393684feb6595561b3f95920ccf1843442b0444016084074899e2014a2f43827642dc085bce806fd0ca7181f4a55baee2b814a882257d06b34863fbc351824eb7891d8135329c63bbfb337dacd1b1e65e47550c8c42153221645dcff72b3d510c96d8cfd9ddf7768fdfa85ffac3a1725a17f377e010c48f2e4d5ab995fcd2d3e302283124660b84c3fa9cf26d316b17dd6e6abba25bb008c05307a4ad67f05804d020d8f6b4b2ae9c1081740327f447b5f47d913d3e1906647187ac8584090b80ecf7253c2352080e199151c05b51b2f99a437079fd8db6206bb5cd9345460195a0ab7f53840754706759673d037a70eb648ac5d850f13030198f12785b7c0d9d216ad6d4203c059aa5d364932aaa15cb0c0e36de939d0a8f5665b537e811cfd966a9d10fcc0fcb0b45f435cf23d208d0f78a941643711443bf1c6b02178ef822021ced0cc8f9bae2c019af848496d2ddbd46b3e54a8cc70bea36aba22cfacf430dee10a4cd03ca97d1660e262104a04dc5f331679c10dfd59de34d13015ce1436ed9e983a45d868d96c7dd537452a27bae998e81f7a7d673812cbb016eec490b7ebbfbbd9a490cf338e8cc36995a8bac6e0458cdf2ca372cf4c827253845b00ca6b2e563c2ed788f898989a60e560d3eff328cdb60f5798d6f9a393d5fa180c5b5654bd0d39a11c88a723f3a1f536c25ebdee6c160ccf62fec21f43056b5b9e348ee7ee1dd2c8a01c6372ea5846bba6a3f432b0055d13a10a15993b335e404439f081dc483142148c8af241fedcc81cb3cdd33b81d0bdd5c16faa9253f8cf46bcdfb86aa091a5b5416f6d50c93103ffa374558085c011b6fdcfcdbdbf21a83c43cf6986cdcc9f2b6dd90bf4ffb3efef72b2ec7fdbad2b7d7f465f95c37960ae3b50e1fe8651ca3da4482fa376f5a0847d8d108c789bd4b52a2f5cd19e8d9694a0a53720949b91c6b378d6e45e4b02967c30c20e63d29fdaa654731f9f799ca25aa9f95428187ecaae4b00ad52e75b08726f6413dd69cb969e74196d22fd21d518d0147b1a777df776348bdebb04a84f2dfe431b71fd74b586960b73f619c5542643cb4aa0fbb2a805228120f817148218df923165fa8617ebfd72e3fcd67de087f03c23d7c39c73b5d2d9b00b71ec4c2f05a26e45372048715eb896923fec137876415599890c11e50f885c23b6afd4909cf4cf1e5546ef6940804ab96744a69d6e765aee44992037c0dba1bc9efab46e51a3e7539c0a6a910fd6b38c2050f313dcd4fb1b1fd56b6ac7e96ba3aaa5148306b79d7bb626985e8061de3dea8dc11c8a946e1ee6a249dee5b116312a1f9a65d808f5c635cd22409f7d3400187174c604e275e048aa9e825c5dfc578b18b81804ffecd41606e773007a557c0d94862f1180fac5ea9538708cb252294a6d5c7f3bbcc49b940f24c34effaac50985bf814f5c28cf4e1f6abdfb1365ca38b4175a5cdef7fc1051df3ad8960c92db52d80cffffa78c0e6434374b23ec213a57070a43dd453c8e5491656aff146f16c25f65c903d53d1038231e9cf0c9d9420b78bdd4bb08a27fa9f67efe9b229269be93f675d82888ce0538ce31fa70da15d04c06d9a1d7311f754a15b508c32962ba928f678934ca65211fe12c331beacb8e1966de3a54de3819bf8e66b64c683f74ac8aa3a657f2296655ef0111e5508c84bc26c59b8c2ca4a7c0ce5779aacfc97d84d7a247c838e65fd94bb98231b010d329abb2cefa6e31fd46f5ef03855df9906cad8406963ebd073027c1254aea36cb14058081ca2036950c02eafecea31141f432a3caca1e3269f504721b05940551ec91592da8f6cfbd1e325a35d3b10004fc5d5bf2b6ad7c70997fd9484faaa32d3ecaa98ec53bc56d852f047b05e6404b3715e42b24dc623da04fd28d3c902380e68156cf0cf8109b3188b429854794c1c232d8befff1f29a07b57058782734fc49b2130c0045950031812379f2a4a05a03841e5fe9b2a6b39a192a1bbdbff5f170051670189710ea725ff6e8e609f4c2bf82067b988cc2ce22b4fb905fd249afee21a2c000e8699c58affb77e35c697a1d7dbfc6507467ec10e06a6028bb5d09ef95dda40a5d897ea0d19e7b76a3d6345d490f73773e6d450f831f8cb43e00c9bb46436d7c26c7838af4193d6d647a02b6998c1c4e4632dacc31917c02a28790d1605bbecb4fc2cf7dab5e8a9cc401e8e926f9a737891c7bacb228857c783de78362742b50d9e44f9fc1d13c43881f455eb5ae4ce27afb52c3319dae00ad53b00eaaaf25637b81632aa439078b3f547c332da2b15165a4d98aab1e67c5b129e899706e9eee0a1709ea37c285692dab14e2cb554ccc1f86cb4ebc59cc1dc949507d121169754c23a4afecde2933a1e51e6229a201188e426a76c64ce9eaa441d58c2c6d4c63e5f68af928ed004897e009c2507ddce756a05f6ca18747b04c5e1f237d8161cee363381d05e1e77d4804f53b85508d0e4f8797479c1f6ed247c1389df76547441cb88fc311dc6c5ca691498e254dcce4aedb2d9851700ff4f210938d335cf519423625f99e8edde0fcb83ef08d4c3daddb61fd5689fd4ffe572f02d7492aa86a368affc23b805430f8a31a27a4ef1efa4774a25b72c2e54703393fa10b40c660b38a75022eb7034b9ba6438c000d695f85b9a029b946df23e9cc7da864007a54059c9e81c1f94979dc6ca0a0d9e6d2f07b71fd3357fe0de11334a431ec17ee7c6d8079c219478dd85078330d48a5862ebcb42280037aaf1a09ba1ec6da54b2071a2311f21e5ce727b61f77f2d6e5a50a9ff1007225f9731e24c10a60523624e182871c5c7403c48e71df0541511b6345f9eaa351f58875c611bdf2a0945b9fcd14931e57bf2900103b71cdd48c394d4de8755ad03967be46622fa598455c7681697d8e183de81cf13aac6d03f950297bff0a08b457b244e04360e7e5ae6f6211133ea6f4d87c488b3d2fb10a6e9e03156ffa418a6ffa218e6ed88133fb53910fb3cd5134148169dcc8eb2d5e1bbbc8ae46673a4e86dc4873b483c785de0247d197129235baebf8d448ba976835dc47a9476abd20d671334a8dacfd0e51d7d588a1c008095410222c250a5ab7519302232558417868c1bb652b556b053c6efa9d5d99c6353051d3fbaca53416c14598df5997d7b6001967e2ca5a5afb1258acc91df652cdeba022262fec946aaf83c633bb64f1728016572c478118e42fb146372357383da044a1502fe027ba20f0c0a54bac0b9213c4b79ac446e4e60e5278d30e4ab08bd76923927dd2206984edc2199fd5dc55473b270aec3000d04f3f07968bfe8d961c8985ed1357ae8b85098f3fcd99ca98a4c947eb01198ee58130ec9b8927773db9f903953a4cad385a2fe9a6d789e4a061b2fd54e9f55a8329f99ca45859223169e6e1e252bdac677173575e23dbd97c5f2b8cf8aa25b83c49847ab1306167be017302a54a4e3a9cd158f715f54a9531fd3ae5beb676c00d61896908815340bf41ac277465196530558232e7c6024812948111d35b4899ef7e0d329ffcd43127e0b8101acf3b7bbc26dffbb305e45814855b176eb04f66291c03c34ea2ee032f077c7c38f40447d2898ce0f7dcac604001337de9ebf6cb6497411e7eac42ae9ad9ca74cf72056422a6bd4a62f77e5768d06f652d5286389a3ef2bd49b6a52be76a575f6c7932ce92d9749a97960530cb656a63cece42f005c81251a3d4db9b7b7b0584b98420f1ea5f4acaa02ec47fbb942095734f7c4d7a2e4b99cdf791a141bfe97b97d44c57c4cf1050deea9e737e61f318a773a2807e4e202cc919c78b89004ca87123b0fc205881feab0ef4e0351e045e6af08e10224e489a80d470307efb3244044cc45d0cabdc6788aa3397ccd17854030d0167760e028786443ec57f7c6c215f5670cccc9fa4496a8011016b8d5a1f54942c50dece8bbb86832ef5f3ed80622554db3413e1159a587b96c1c7df9ce34b943341b8b938f5406e21bff8ac5f94678de76ba52e16d9b42679c7446b2e90a9fcfa4c539609a7f2a33a7ddec795899b01a9394ab1a0926e11ed59bbdd6fff6add753703c54b946144704b77d22c8dee0125a0ab60fb93a6d0706922288d76f4fc7be9e9a13a112127781a0d0b89a537315b45b7d0f850b2d902e9b02b079d58a5eaef7dded876b1059b06da4f1364b1c6cc9a634e868cc4d405aec603d0168b4d54b0332846d7dacc83e11f2042f08b04facdf96214ee11444ee9fc268d020cbf0bbab92cad093886bb5b76c6642c6b6b6b444eb90c1e18635fabb937125cab1882eed97243b967e7165837d7454786b0605ce179cea86730acd2a509ff80042e2c25d78b89ee7ce3bc1de12be1bbb4884d6b7f44bf44f204640cfdd69990ea21a563fb404807310f3b3c0c9b4381405f82be3101936d74be4c1f32026662046613dc424cd39f46443bfead326593edfc6a91a90476bfccf273fecfe77fb368e66f337e9ff9dfe2f97ecdfbc31c91bf67fe7196a81fcefd63e1fccf966782883831726db48d57e47a926aa8ef6e9fc4201abfa09e8a7f98c445306807d154b1f4911cea9f8a85d5114510ad424ba8f16ec34228a41cb24f2e3a55c61b5cc88b2c6eeae2116ef7a31cb52a4a1fd581ab393ced4c52c04d1b6a2c0e606c2003183503109bf25fcbb49f4a727e221579c2de709821c57399efdc11ed24b751b85675ba2314d6c6cfc40494e938e13458341e215e163545bd81a7707f1a909077c0b320b699def9fcc7a5f0f37820326d23a9a4180b294051663e9f8183c62a9b467ca35142f8f0206a8a82ebb29a6b90d3586c5958734399d017d3a752dac7ecdee717fa497cc8ccb5dae182b67d0c242d7ed97503fab144291c65f1d37733f00ef1eb14c8b7e1d26d2326831b5c32cd458a8ac196ff68c51ea3b8345f0696940119e2b7379eb8cc17fbb6e85aee1aeb5f33f6e11a5704b4cb3a50686da9fd60c33b9f09129b34adf0c1471b690a766f87e5cc4f6c610ba056665ccdd1d5d2784c9f17264e12c1bec6b3803fa210ee43885f2e54025da5b596e293f7a59c4be236c1e62fe9983f53a9fac4c1267dbca82dfab10a32cc87a256666f15bd970e9e7c8f6b8db661e9ff9c1b20e1ad0faa6816032407f9703c322a26b2a978cc673dfea44108f6dff0682a4d904150e5de31e0f386fcfa1bfcbaa74fa5cf3e4dfeeb4dabafd42e4fe169bf98b8437912013618caca4d549c2bb94e70dd7f525e45b0189a097976dcfcd2635e628e96707e3c3b0535c19e06b992f905a4eb889189aa0eebf38fd3de728185522fd2103cfcf1b37384d2b669a33ffee51f5df8294b598a18a032e5dc57e74b747a5c1c3d984e4737dc2de1f92c7a4a9a243a30dc4e1e06e1ecea5463abc5251f1bf492b8ba2839c02581dcac26094271eeea5431745cfb681241ac49cfa0c76b26c18949dbd539d2b45bd241463f3e4e5002faeb3d322a26dbd541718ced28a7cecdc290f187a164d8d5f92d64ccc6da022dc58c72bac2dda59b62b89accb6f36ab01a86c74f6b279067993f7995a70371e9d7ab1d5c2fbc31de2b1c814617745df85a2a02e92429423ab45108b7b6aa4de7408e6df25976667c8d9ce6de7f8fd2b60ce8563d94b77f9a8c21d7e86358f077c904546d8aeb420b1b6b865c9d3a9d4a305991388c6268ebf52b9d49b29653192b93dfd27dede374854a3e92fce606ec4322c477295fb170648f4dc484029916e949f88dfe053bab83e1d63d811f48972160e250be38611bb0d212975bafa0c7e3b3925f37be15f3c2d83c56e6bf8e1e0caf5ea3e00c33c393e8caba68511bdff1c22c4ff7e1d3173f6741105db945c0e07db42425e414d856169e5c3b7a6e9e31ba48b3a721d98602f51a76336936521cc0e339af29c4ed681cc547378b4d643806f5c754cf9d6de1ba0a5094f3aa68d36f8be1e76a148164473ce29e6e5b7ba1e185c429e200c0267495c94aad3959213e80cab22cf50d5ed766336df69caf074013b30e350fba635222b4c9111b87f69a0feb719341984dd9fef1a05f05855f78506ae4c09423664ed7f9482131ae8db371541f59e2525e29bd7ef1930aa94b14d0008d496c4709f50fe9e7b59d353079e3dbe1c85e34e6c7f4f41d4d3e1f2134a588e481725a0b8201375564d4df71717fe53f7bb08e826e60cb9002e14b216cbf5a17f7055e7f47b0a2435f1cda060a2770f1bb93667da1b1ef3bd8b0c0d8d4c276bb550df86012358a0136b0298782ef93d82dfed1d804527d05c2eec0cb45c67377444bfac3b84f3e27070cc1a7fa86d086450ed6e2642a731edff2a66bb8204031216d0138bd4422704c971d91a5ec0060f079b9e111a96f448d21a21c9e7603ae2b09f87611cc60df6582cf4dc8e19e3c1033d4e83eff0928891e7f4413bc7d1f4e42c8bee7db0505946ba197c409c74939576526057424c25e7c57d5a7143000994c216f55745ef14fcfa2cf66f677dca9299447a285bea8509600998306e00ce78fc931dba2961fe262a4d374c42b1ec4581021f60c2214b3d82b972c85656049f77d80da703836c7b10f6c4871b9d61b2ea047c2ec5d78fde8ce6763a9aee45195676e872cb14a8106cb9e970dab5d0b7772fa140ba5181e99b42faff6185499939de350ebbbfc4ee98292eb1573fe584e5340e5959eeec829b4174b4afc543ee4931f638a397e5a42a5870d9aeeba1955c37d455a08629c10f21aeac7f93991734b9d7c9f821f685c0686243f6cf5c174c700be94518360e4a08f596509f3508529db7a36d0b5e7882ca8fc1b17810a2020519d4c944a743d71b5ac422e074e374163dfa4255c493a240db0b1603f8833e8e1fa914030ce6121b2e3005ae40b3cacd4af74ec6cdda4f1ade42a9cd57c1fd9005c02cac2caa9440da15e36a53207698af476f11d8cac05385368140ab46dff8ac0be784fc7f4b0e1058b4099a9634ae73a2fe4740c568d63491956ed5f5eedbbe1bd1c90c5151723a6bb8fce9158f2f276283f5df8aa279cc269e5dd4268f6d6d39e2c6742dc992eb8382932237e37b27f5add20141a44798a7ec0c4c8f41495340e143b8f22d538ec4937dfea15e026b52fc157083f6ebe10ead17e86a71add849a5711bc1acb4ac20abacf8efa602158c78408933e4bda58430a3df25a700835ac0f6f2fa2136b7075f89032eb484e205c074fc88d1ac1f1e90665a446834dadb65b3e859345815cdf174286350b51c2d8b52c315a27d57598c867356511f56defa6546533d6bd4573e049a1dfcc8d06f97cd71ef16241cab94b9a801ea3462d2259d103933a7f37068a7b6e5b56617651431dbf8fde5568e3f7483f54e4e52ae455ea816ed0ce85764a68dc9479513fb711bb4e46534e87aae16072c8671b2c8317436bb48eb6dce320f0a4b1ac39a34faa4dc8735186e845af67709cbbe8f687d36672863f0d719287a9c3655b5e50c2289663f533e71819bf5df3a4f5a42078ef45825fd154407b8fe0d57b40023762a24d2ad3d0108c5af92acf587ff69df1a77ae758217f8680856289b17b026800ae504cbc03f10da32f10a33f61262024b99bcded87a13388058bbb0ad43d198584390777a431c85e9cd863bcc353beb4c40bc46793933606260d0db6db215c93c570096d7cfb095e131ed4a2d2cd0922c4f5442234c3661d0cc340141e94a62328fb8078b106591fbdb3d347d89a412c79d04ab3aa5039efbb4ec7587ac3fce09bbba55067008578a701c2848fb22028b5e7ec501dc36b58c2aa67d81f9ddfbf4c496df39b10eb8e89dc47b153c29cde57e3c6307bec6d82f0b97922efc2251d5b72253fea399cfe1d89751c4a5a3bf172bf97460e33ce1ca1dbe3cb7c252e2d22df60961a2a74059310181a9e9504b5a046e5a562f321dcd993aa6d75eacfa847003c449982a62865d88d7ea42a13e57d12ca7c2733a2266302bb312be475102fc3d07f38af8913a912a8f8956fd174455466e14e18e06d3b549c96ff8ec3a83c6e8657159ac188e9c57e0860851a2ca71a0a6d8a38f6f4218d70b6d2bc6c0fa39ff527d59566e8c06ad4684b05288fb07aea89d081b1c62b70bd9ba37a06d1d148f7e941b7b74253f7bf7011f494a14aaa64282ac146263a80ad361564c4324eafe24f76e6d1a5723b11c1fa9175c46fd78ffe7d4e522aafbe2923b0068c3778db653d4100c60b23b171840947d564ec9aa6b78a320459009b8c2123e55c83973fa51a406c7eebec79024ea4a033158055ebdad1e13a88f2abe7f67c8a4dfc432d766962adf07f229d5d365e84ec90a05b26469d5020def15ed9d3785e41a4db35e5cbfaaa25792f2100501b68270ec0641e2befb1f3e890f0163c70853e601edb9ffeba825091b90592ab8fc9462b3798c3e63d0facef0549b48968cdb1bcff47a256aebc9294fd39db990716dc1e84dbe7c42c46f038ad079d25031eacca038bcf0a92aec5f3bb24be1d68064eae13248f4e952197a5e9a0c4a514f8a1a7a54a92ee2550d589633951c34039589c5089b48cf13922ad45233d0184952a32025fae823ea2c7465eb4752630ab21a5feada940e146fd181e3b08a3655740b51c94891aca94807b7401147976e78176bd6b604b12ede7f0213745db179b28cf08b33cd12a72984de23689d1bd24196cda087a9c95fddf57c9db6ba7ec589e5e3a2abe5cf0bc2536baf937ac73f317669c8aa53393c3b1f7867d80c44ef2c42dfa61c0258d9a0c56cb3ea73d2f1df8da38b958e5cbdd2ce00bc2e762c0516327f14c60f875634e65a9a76a17511baf211c5044023b18064ae8129fecf27b9ef31bd222a9f6f198a0335213b1c98154913671e6c4471949c1c0dfcf49a0e8e8ff30a78209f528ed06faeb9e8800666e8863864d61b1b4f94b90e01dded7d51d3b06f1909e920a137560c6b0ac16a1353e26431c2169a0c1131394c850dcb39731e49cd2c8e0833221e4b9ec8c6285ea3f08e10b484037805076d1c647d6213febf02849b78eaca134d3f2f155dbb6825ac36a9cbc40ca92735c562f3eeb61fc2702786d81ca8086613017109db9f467097c6a486b23882e7111ac9a30f68552a70c6036132f8fbc5a5b0251ea4a286d065836900b49dbcf0c2fe78abef1c97d6b0529115d82959d6cf50fd5358085e1bb07e44c5dad246110034d0add224fe305c1dd2307426389a030955f606f77f1867b359dc9df3d8b2e65dacb3c0dc38e40f3dd9debb6cccde24cd27b24f87616d26c349a32e195cd3c5aee423329ac527717548b38def8efa4e837fc1eed153e077fd7cdb61a308a03deac6d04ffee91db3668296c3b4c6e43c5bf7b60cd176e53b3a6bb6e11ebf9433a4f5e616ac3788889601675155928efcab85575aba2b2a4b930b47db4d73fd16f59d9bd3cbd875adbd90dc83c3e96052b32845ac0c3b487e70f3c0e7af2d0ed2937b170c7c7c7c71c6466d190450cf1db22f1ea99c5c1a0a76b38bfd3a2591aea10332ffe718bec685b83b1c2ed986ec263051c80e784f966ac15f2d07cac500a6ff8753962b0d0f1568584d4b2b226464c28aaf821f1a2bcdea15c2edd67770b7ceb4bc25c32790ec869d3fa4f8c35015cb755c3a4a8a0bc7f6535135fb0fb5d1c51c9e51ab365d74b20906a5232b72b78dddf4a9247240f629aa3fcb2d051d23e2425c555a0c507fc709968ce2fa2838593723266a0b29f27c73be1715c176179e2379a2b161de35fc35b71c619faa2801c3b77ccb11f7c5a078cc66d5c890f04246ba160259e04ac9d69f7a71fd8457d1a3b3a3835a7b0a192270c8157063ecd7acff234f2ec6e830d74cb33e6ff110d5d5d397f4f1bd3dd6fbb40cbe0c607d7580b71f1547b9eee3c9dd9a74138b9e698bed84919fe5940645e4ab9a853b50262257b0abbd3274037d07be053c23f5674ec68476ebeedcb793858e5384b7a75101137ddbeeb83a9a3afcb6d032889406d858042cfc8b0700edcacf5569a7fce3edfaa29f0e354c38643af65e1514821a41d0b89465b0a56c1db15b309849d68b72e6f5a083d952d2a47ad30b356b860ff4f5c226771bde82ff1826187192d61556c58ff55796ca0d0c89083128019d99c215f9af4f40b7b4215bbf4b0196a94c4401ede09d5f372a655da6a4c78e1b043ba5af3a8e08118cb116962fd7e9291a0fe8e53744ab32bfd15ed2a7e58497aa5c75049f86d9877080879339443b9ab05d4c28a2e230f029115866822fc5c7a75d793a6e90b4f635e01f386c8362e8cea7700a5ef206951f6dd1392a980cb0d1ee56531f18407a347888f218c6114a41e4fafc7d6bbfe294752e236c6e60cf2fb777dde61e9953246466bc9bdd0bc6d23e9d7e9fd389b83c1d6ac6ca4cd3c38d49a4c285c6fae9d490cd7dc7b420a1d9a9226e2f650af3c19d7fb5e26a69ecbab4e229dc3ac21503ff3e8a4340005a6591d6e104aaaea2e471b689933ee10b6e61903edc3b21f37e487d2d04e08f3f3420684154e6e9a16be99f4171cddd473f96d6ace301283600350e5c7e0a7087dd24a00679f4468b13f022b330977e1bfec2639307f0cca91f622a1e991aa08c66a59d89d483ca3c8b3752ad5ece77db1d5acb2bafc79f5326856cf9f94de4957bf14ab8aee466ba7686dbf350ea011a2f78c0b4adbfa21d308773fdf7aaba22d92857047e5880c34451d6fb8e2d828603762620d13a99fa2a8431f0057162945f91ab270a0401034d5b43c632f0c8ec7b4225d60bcfcf75a8276a92cfe80f136964b2b026ec4dcef47102ff52fa2cab9c1184b75411c46d3e356ee78697d2b5f0d190fe4a7ad9a2f7fd3221f20872b5f5635acf87ff50ece11b158c9fc07c7498134ac502bc02c71937ccb63badba9a2c86113e8926e44c7fe8106bd1e63aa12a2fd2a2bba52ef027792a72973188a2e39a76185adb19a15353901fe2f1dd192fa1fcafd50c50c8edc6cd47126c7e603d1d6a1303fd32e02993ebe880acb5697912cc30fcb519b02a824123020a8777d256c6ebe52cac1d027505047698497aeaf0d6077fb8d2bad76afbedb0168d9e6315ac897b3043a3a8e50b317d9c72092a1a46201394ecc012e0b824aca4bc45c935c163f4cd59ffdedf55a6255a4bb7fdb9f8b101d202fe589947eb8466f37d8e0e208dd561da9e387c5cdfdff658961fbb0426e8f773074317c617fc7c8b8aede9a563c3159e3b28af7e66129f80819788a752538d5f1cb16880951b93304f21f5879db519181552fc7e3701d8405869d703c034fe8fb3f56ea4119c74f33634a3acf6853c0f7206ed81b4f21381de33275fd0f5b0ee209f3de3a49b6382fb86f838de08b8f93a437244d2f369fa03cd3a8b780e70f892d646140b1192a6371f0288ab2d2404d0a75ffe80dffe50ec132ca43ff2e55be2a8e2414ddc661a9b84a255a48957af7161c1742c3ea0aa5f802d53fe7fc28180e01a8a56a19022f7565530255514c35a15c046fc27a05b46fcc998b7e541311e200b50f47b9a6b80b73aad6f901b65044ff70937c062d4284463c2b7e2f30e21fee56bd96eceec9288503997eb364768bc7df113524fa0ff6e08726cdef7570e4815d6d468c482491ec9df9c6a5c138bbf7c7b72dfbc530a1f1cbe94e69ce9c2f5a86260367c655e412602f4553dce0c3119d578ce900c88975437d9401127241e96fdebb9308a7f125728918420a96fd835d1afbc665daa01bec8bda9d40dacc4fa881563300217cd9a216bcae294fd69d5b8362857ccfc76ba1242f6fd51f54f871177fcd2195855f970f04cc7d25a21730893af312adb0b716b292e16b6c62b1ac7bf792f56789a2250e1f9012c88aeec2cb4b8c899ceea061754897f3047052d049aae15b47b0a7f412d1b8c1a1873a3960c0a667da2b594628441c2a0836b14f38b518dd87a9fc6b2e353d0a156165b56fe9448c0b203a227ee39ba7173acbeab7d49d05b3ea1ef6b726007aa95059e4f3fa58441c50894437025a3745cf1ede6479c4e7fc5cfe81bb6e2ae80fee5d808c7b8ad3080b950a8714ee36298010e7c10bd1cb4452f114105cc4002784350c607d5ffac72def1b11550f3caf15577806c4ea06306e5f9641d8f7b5403d6420bb45b3d4e68835b170f82fad341f5b49bfb3077e89a18dfbef535bc114dedc52981fdb244644b4eb949cbc498e9b2fb9356185fccc194cd68d8e488d8caa811a09892698a09b1e9aeaeba89ea665c42b946c939447f39f706dc689bfe3f0785df7fba9ab5e7b1d866eec8b0e7b668f9727e05c9c954015d771f7dbbc65e581e6c60c3104e3e118bafa70811a447b5fb876199ce2c97f0eece5fb770f748ce39eda079f948190abc36ff2f0891b0218a7fa4654f7e66afed735345b8f04ff8bdd8d73d55dcf5ca7a85050acb8ea84a4b11ce4057652bf9c98bae7bc5c76cc9bb7ca39d685233c3a9af0f660f2c1d77852c38e38827c18d4cd6e39f03f88b8af796daca2efe4b133fa3a1f4764a95a9c668cf03e4a6c0817cdfe684473d4d99eebf25398443c7834bd63c74e3820f14e91df20238271de2da939893189fbfb57d297dc1345c67cb2f94d61daf5e4b493d19e48ccc67d948590be18ce1a1bbf9b92bff7f1681ada17209b2dfaa1e3c473941c177288133d9bee19b6c54c272d24c833895ea1e5078eabc803ad52c5ca051fb283f0ad625884cb935e9517381ca5d7729158cea68432186bec3aec7c9b8a6caa251ced56cb457dc0e784bdcd7104be6286b3975403087f6752fca7795ebbe483a99fbc78188ee01ee99e2c3572a313a0fa753ff5316cbe0cbb2279933f139228714e3394c88501913c10583cdc475f1144a9f86b501499a83ca6fe036cf7a4055fc6e9bea2c4d8ddff825898767bb2bf3f75d34cd1547012325a43fd64a9a6810616a9f74b69e94d14b635631044faa3ed9290fefb72c29f9f6a74feb03c98515b8c83cab69a7dd1dbdaa2241cec6118888364b59c1a6b4b8d9828e7d8d192737cd5255dd61e9ba0178eb492e0b56fbf3763a87b86185a7d6213ca5547e8c239d7234505273946f92bce5f61359327750bf404a93714941535d9c07c19d56228ea72590238a6fc26131f09a98ff44bb4c784a5d82bca9dba62394d7d23115ca44fa9c230807057125631f59f4718ca9aa329c380b732c64e385ba96bbff14b369c68a4df50d7ac32bb9d0e281560df727beb1d6cb1a88d9a9b0cb180b1537e8228fc570c2f2662aadc7c6b79deb55f002057998d34eee6138262be54429fab897817ab273b53826f026fca5c406f4700b7b4bf82f9f6ebd5950a5a157e9bb90e3e41e99d76ed28f2fad49d2355957155a603c2a74d37cd2a93d0d16fa51e32adfca99bca2d973958f7be539c8abec1e23fa2023c383e8d9651602bf3b35d503c1893aac695b29ab370507734a826ba9ab0b50e700ab36945864ffae062be8499b31b6a1ca7309b567c58c727a67198734b1d74086bd18e6b32ad8ddad3959dea38f65d81354099933e771f33633cb4961b14d07ecc4b27f6e70f1397cad1c0b24bae5aa8d2624d33e3e3655cc8606bb92972507809753b92422fe8614b206a9abb027fbd49c57ac82c756612b01680a0f2e0a8d2f452df2ae4bcca08f9e5d160fbe103b35130f21588b018336a639ca11433d4071033e82b9a3d3c2219196bdcf1996d332d283a89e426d31bc2464caf60f78731ecb62f1a55163f55daff8072b2049a07bbb92f6c91b693ac6999b8f924d5edc4a8f1b2d5f0a07552191357222ac36a9db90c405a7d110d2abe9c201161b5379c6e5e2516004817c591375e2854d14ff15b71061de86fa15be69f23b1b14ebdf807855a91255bfe25ea784022f7b61f2533bb9c0fbc78ea15ad824f9a7eb2752365bd8b2b60dc5cb75c88feda96f789337bc856994ff64c9e96f03daa665641b678ccab88f08d6ca8e9a52e819ac9fc487fe1b87a199919198d782ee37d9f7b81c1ccca74a6bf058eb3cfd6aff3bf9efddbac3f2dccf27bfecfe7ffb268e64f73fc9e2dfef7f97ecc2aee87f9bf169efbcfa2392322fe45b8bd48e127ae65ca06ace0e6d5433abc8f23d7edc0795e8574d6ca90351504a3648d501d5f3431af989ad6da631905a707ab08b637ae8da3974b97bfb35eadc9f882c4bc0e5e8236acb036a9d5af6f6fa775c26d28820a6184dcd52ab52aeb24840a9ac3e7195bccab2c88b213ebd1efd5c04e2e09f36aada5e91a04cf2de4007ec951f4f85bf275c51471fa1f6abdf7d9aa2caf771e61b1439fea61f375e6faf48189ac30f9bc4f3b4f2bcea9b85bcd22a0ca59abaf79b6a781b223b2a8aab2a09d06cd8ce8d4fbd411fd0e7e5d102526be4f45d760fa691d80ef5e675119490d16062429ff2868a69feec3f32c5ed99c3e0aa02a893d2564185eea36bc5375d5dd96f8c23e3e8dfc5dc74d394a98477a759ef1aaea52e0c6db6d234c42843b0787fd697037fda7622505a8b5ce6e40c5256926ee476bb27b4e73680dbd55096f01202227577f049831b9836fc59c6519a6122265d7208fcfb6f84bc5d08429132711f7de4414a63e2554fc726d3c874a479d2a34e48f87af23b94d9f03c09cc92141354086c91a60a43e9bcd73bbc9324098f3c8abd68789b8fb23f2b54eebd572ec9370edd2f8f65df6b9e0062bff8c96eb6304e59513dee52f8d1c5ba5cec250db3b0e40f5f83e21e59f3b6f5972fd722d13a1f5c2b3db7ffe0de3bef12c724ecbddeff866cce8bb47b8816c0dc9c69e8e2f3c0de1444d6c5bdbbd5b482dcd65e37abd33c3d9235706e13804c770731c9391291b7a50ce6041d11f99374ff6dd00b92aaf4dabccf8f8e209f5afd5442746caf49935c4e2ee4aa7edb56f644c3be16a53477c1aa06f9fa862e6cd111b4dda7b6383a7eeadfaffa2cb19ff9ae6a77acb4beeb625e2d559c183fa11dacdca8230490a87b530929ee9b19226ffc52f080b2c064e5b5326f6b4314c1bd52742dc57f4b9c84f627ed0afb2e8404f93d4770e2db3e1ef527124bd1646b67e7472df1a598d670d9affa5541dbc2ce71fa7be6e0f6494eb9433b50c89666b3d8468ea0aa63b0024d52a70eb622ad0b6411434eb963b6fb2946c82bfe035f8bb35531580b16248d8dbaae12338d6b5c254fdf364289b06d84432d1857a65515657f7629caafeb3e449d3e5db3c39f39a930946e3744d77340db71cf35e6b095c08e49b4b7ed1e193b50ddc72b75ebf5e8ba1e6e6fd3de2035c6cf28b8c7d6b9fe7b5489c28571e2070b189609af2f15a4ae720d9265ca42e384b8a4b6f7d2c0317a3d2a53c2f6a64e1762dc7852bfd0fe5524b4c525779efd00947a7871b56e82a5711b059659fe1fcb72b4dce13e8809b6b3406ac769181ec9f7f454a6175786596b8b4de2c117ca3c403fc10d7154ac4c5443eef7979328e3400cc6a4950d80205c90d58ed40462b1d408c69ac1a9151426eb352d73e9b5c5cef9e24d08a99903632a46f4119a70a01d727e2a72548d781925d6995f6f6d96a5322354364089357187e2947a0eaa64a96ec57e16ef1876204c507de56bb8648b52fed895dbf5803c61d03d51de5e832be0253a46f9716929a0d0594d16a8159e501eba27e9202f15cf24e5b87cdf75a81030d99c59b3461fa069112b9d924be51d341fb9f602ffbcc3d768d00946d15ea6a4fd347663dadc8126f1762d7572c390de5e67031f25d43b1e4487cee1218cc2821d6932aa9a3cb54d16dcb5c06b478fa244108091ef67766cd3cb6e41d9442be4d44d7b83d06cad17da26a66dd4f0fc6e3cded3636b9c40784cdb2efd136f86aff5fc752d0313d16d5c5cdb91a9f0ad0f6c641b25cd3187102ce63700547b545ad75489c59e11ced8f20c14075ca1db3d4b079bad21c791483a4701331183599fea50aab09f8c4e97a36a75f887cb025da5fdc1e543db11dea6a7691db445fb913b8c984433ce459d4bca363abb8d2c2c9f2c3795e3a37253c16daf478354ca034ae622d265c1a241c5fcb3cb408f324e5151616b58944de7461126eda2c59858633ad6fa014c85dc12cb0788da2c52c72c269aba2ccd9b2e99d21c86605a9ddf013e4c6ab71ab9dda98aa9bedef43678bfc5220a13a8223616cca48ea576af40ac8ca202d264ea10b522a2bd96bea03a226cb12ba6ae1f70bd6987f8f4222238d2c88b2161ddca88db7b4b87c1ec5975a79bbd8801f245796765658acfb21cb4da0fa9712ffd1ee172e1be95afc417af9e5bd75a005a970452b3e1481dde5c9cd44e0ff715fba3b01fd844db335191b96f7b06a70a4a9bb4967a16fc1f672a9e041e4287fbead2c25e06e568057a08cbef8727030e38bc0ae3176c2f5f4fd0b090be826c7bf2fe1e683e0ec2deaa162e9e15cc78cc3399be3fc6bfc7effd89edaa58840af6a0ade6fbf6e0bcd949118f6c44e82891f50f04f4b649c93687a01efd59f00b90f38ac5536c0cca330bf32e64098edba58d81e4bf52aebbf6a7b5ed2c367ed1306022b05ec291889f36e90615918148c4dd40c98f30731b934cd217126b6022081bbaabc047aa60cba961563a8cfd61976774513f8876e04eaab2bc4383e2476b7bf497d75a410071a0ed669b8da0350b150d250db7f8eb1345bd500122379ff448347bbcc54edfcda6662d8354cc1fed852c60194b8637f9d4ec589d3a5d100ef8eff4b14dec50e34a68cf6bf43f80207e8a06922e940d5704e8349cd405bb4b9b047980ef32e7e628811bf502de6238ea7f15bea544579b790988d21c3ae876980ef387ced2a20b10cabb5aee558d9c8a8fce4f170cbed49cc2ae69280ed1c6f0e0d517df66373d4ccbc213eedb356a007f3a601d77f65a006d3ba8b726a9e1fb0a1a8e58b58f7e5bfd0cfd37498524d716cfb6f0787846ecc6674346dca42e16e272671b6ffafde18bd70b51a5b7514bcd0264b6c7b70e1cdffb9b1b609124e9684db9eccdbaafc88d7c341c45aa7fee42fa9b50eeadc33b61c1fdb3997cb87948fe888d1cdd243308951bd06061c93ad71645b16234c31237c7956d3911e7da17c877a2b8c3c3a6d9b6dc7db5da8095d7d3929dfb409aa6d6cd8fea3bcbcb500214b801a8cda115c6076dd25fc90325bfd5ac2c636aaf8e78b1a308a2489c622336524e96dda2837c1078b674daa66284a4fee8d002716edd0e0188a0a30d56a2c3960b73bee8f739e9f44b8b8ed938cc15ebb0096947f784be0ad94af903cfbd8ecc6a1cdd61114092b0df1c4e7c678842eb2f5437e0372dcc8413fa85b98ca6a21245009e70d9650e2c88e9b3d15aa2073065829231885461114b2f57900a901dce55b7ff903dc101465c059f2c2b2c4ada38a951ee9c42db73cf8981a842183b337b760738b6755707a8c58b23bdaff271b14d4eb7cb8ce6221d84cbddbd8df0ca0eb1e04e204ce77c2b91b980bcae28627f369e83b00451ef2901350d20fd1f50dc9599015bbeb1e4afa8961b98aee73c6f2c16de09611cd0c2f901fff0e6458a740f17dfacd9a86c7b589e1f0f7a89d5e1a2319447d5d53b6e5989f3204bbf313623d2d8b7f69c12a65b5892cf13573c1bdd88ff71c0c36684801c60de7b9e91480fa246fdcf695aa9f71c35f667d5f9beb646d7759403c2a785c34c4bb6075e9649654c4ea61c27919dd807a28155623c1108ba1046f44e1638c4f9704d30b6bfd5c659578f26a3bdc4701fd2795622b4277ce9dddf61c67548e34aac7a33e27765166b34f2ab976e8c2f70f98884a3ea92887b9a54d2d9b68681b28e751dcb4dba0dbdc159c007a52c9377b1a8d2bd8648803b970b8df3de11f40c61c2a07fcd6202a82bd6171137503149eab5b4100450c27ed75ed397d6e8c14ea2f1c5849f1e411afc8ce26d5fc1b8aa90cfc0c26982200dd8c4e839a787c8026896dc02ebb3fd64b667380855421eb970a6d5e58c3d3f344461e92e9fbc2831a25e94002791f1e676fb470bec703df18420ed16d82672530570156896ad6a30deea55b45c47760b645cbb9f3391727a57953d21ed6bf2debc0044a51f4bd5763cc0f574c78bed7d1f278604e5c6696ca975902de8f52c6281fc1d90356cd4b270f3c0805ea525bc6c63c853be10a4ecc879aa43dee6ad7df7f2cec023b17fd0a15662d4422aa419c296605770b8f9216ad9d74b12c838a684ba016369f3c079a6bb0b4cf036f8acf9958faedfdbf2951e7d9fbb119e0c8847ea3665841ce9178e7ee148a9384bb49c652e926f0aeb1f44a80439934607298a79640c19bb69805ece200b76b86e059c04b36342a002b5f666e001e2e82a94ac4b389a1835ca4af48090daefdeb2e50dde0deaadc6ea3418952a30e89ff7fcf426c0269356dee1db1881b2b32dfe61dcca33ee29a1a7dac108cfafd024684e9acf44dd9adf4888f5b3b73ec333c32caee43ea719e7a3061008eb902103887ec22fd5fb8a7c30fca3490472692113e0ccac59b506637e6c9ffe69f515e095cc72f3b631f16ca53ab36608772c918741d4f33b2fbe1c0716a457bb3e7a1df08891091c87d33789ea0a0fbeb0d54c4de0f158b4424ea00f03db04a8053ebd77efa298e1aa93f00ca7c298895351f259bdcb91ca644a000a1c5df10f0c824bca18b69825b1be593568c396c81b2c3734f2b8c7784e1e46fd0b8d2383e9fb08ad3fef3c0c69cc90ddd1c4aefeab56d71af2ab45b21516c466dbd576cba8a475dbeda273a4bfc5e499f436ee20f40b355f3fefc4cc57268ab029c7364da14b025c5090d60abacb9d23ff6f2f9b292586ee7147d637c4c31e81ceb0434b05fe83b9036e74d0b6351b21ef03830120fc1b3bf2a312ad84b97abd102f1441dc5e7fab98518f2692cd5f62f93d01f8dc6ab2c4be899273aba8edd1efef09b96b4b66886802ecc65a8b2d924201a8ba43b2571efb6e1dc7f90ff060bc1d121222238dae810c18514c2f9bf6142b5517f2564911616525fe22e39fa2edaf6f77acd012dae613f29d5be0d40d901744b4b4fc4db540cdf1df74f6660c32000cf39c8804f7f59cbe54e8f7cd98a5955527d841c23c30ac36056f801ded84a15f5e4e18e72d4b6ffae68d3e4e336cbe865aed30217af11a387d0c9b3bb23b82496ed697f8a9971c92ebd8508f33acd17a755fb9490dc6d3e31902f0959746116a5bc77a76809331331d79ced71970e45f038721b3e6c6541d21f59303e033e2ee90a188812feb2d184ab89bea8cecad49d3729b0bb9b802b7cc73021b379b563030b953555ce22f5df93b245670813cab0daee9d0362403e084832691e1925d48eb7b5439cc9bae0ccb140a9ed8953d535d4b93f6d46c7f696926c6a897dc11a45057e2cc5c2e55868f5788a4822306c9bd1158ec4cdd3dcf0fad05c6519b5bdb86e0a968cd15c9ea9d0d4b7a0e3c56d72d8041a5816efab813402cd05f519b95c17b549abaefe506b63523f869ac0da39bd47a4408b267340998407a742f8553035501950e80f8589e623e1fcefa99f606d7645bb2cc70d1c1f009e4372916abf21b4ad02fa5b00681768c71eb3bcf63abd1946fcf5ebb3cde7e8eabeb9f286313bb8ab2f8608fde473db5ab968a3be2e2142035371e3897c31d9b830d624901047cba34469d79555cf1b95f33a5a642e54119d90199d14ab01dc9023f322ca362629aa4f442082bc6b044db3c7f4d09b4ab3dd9a90a90ddc7ec5118969cb264a6336497cf51b8d9f562f84d299ecc603a9538a796f63a161ca414f3b88c2bacdead45079199ab3b25a99ae623e6a8f7df5136bb526605f44c5f92271a59153cbc42302c556c5315bf38a5640d80786116b3c2f318ebd42efd794eecc0d81ffe09b3e26c564c3b251e24942562e801f83b49dbfd7e5eaddc43b70e578fce91b80771c956065cf9af2591ffe55ca9a8347f92ed0a42f1c227c319662f77a4c7296f0282d0fab3f74aab6f1742592aee2cffd961eece17c6f756d486a6c8efc1869f110265e6806a3d250c7f1acc48c9d845ffb73e24e2d05e3673e09a30339b1a848cadaa059ad5c4636902375b18fdf3bad1d6602de313d1e1df779c00616166fc1fc7fe2975f1b10f19175390566a92bc5ba5394680ae52403e70ea9884b84a70db5f9ec04b22ebb933b2dbcb53faf77c5bf0f3d2aa7d5e19a33415de4d78210a4bcbea4c0c71258700abbc0d7fb7d54b5b1679c7c7d1792243ef729210f1feac304f2317520b1e03a7e39fc6857aafa06f4631742ce1df42f41c2958330c163b7f8861c01cb61b32a55538c2f519505763c074672b22af5d5ee66569b62f47cca87b15110692f162791bab64afa6bd0ed501cef7a31ac83177ad5ae0b0f3c67e3708458da2c6aa5beba3b860ca689b97e2892a5c5bd9a9c8cb86098f25adc1d6b7ba00224e509ebe2a9d8457645855fdd70542e76e15946fd644d2fa42611f2a109d7786850885c8922027cc504eeed8471115610200aad73ba700161e015ec8cdfb8e5aa0348f352c21749addd7a79d61e1078492067de7a62cc70b2e8817e60bd232381f42cc17afdc2eca271f0c3cb9189de96fc9666ca4a2e992d577c6b9efd6e7f77776f29a50c11102b107812ebda6532ae6c61d5cb5655306e1ccc2bdf7a30af9d2e6cfb261c7be3c66d157a005530b9882883b7a737327de371e332932943c6ed671f2da31ad5143213efc29ebb6b642e5adf9421f7101f3793d66145cbc4fa79fe0aef98756127b9687dee80cc94f3aacbb8f5f399de7a265e5df477f01e8f61bdb77580b27169dc538dbd748bd16db1e5c044a2bdd7def4d2a12b5e1d6b35a3dfd35e8ab10ab76f6a22d538e759de38d4cbc6ed1feae1e56decc36b8f89dbddee5086519a10e7cf364c2c99e82187892e3f1228f37a7f9714da6ed47cf65bf4ec5c66ef5a62fef9ecd987ef9b341aed7d59b66df7e69c6f1d5bf59ffb872fdf3b25c65af6d375d5c456b551ce386a63aae88ba48b5a77d89bfc8834716e3acaf98e1b6ddcc4d94c2b5b55ab0f83a14713c5e932fd367da5f5e1d07c5a77c273fa86eb634ca7b1bd6c5bfdefaa6168b2a3fa771fa2491b9bb77522ef23e924cf691cbe8dec9013cff3b568a8f57c4d5c0eb55255b57afaadfe1ca22e6aa33e6e24cf699cce539b25ed1ca246f4550d8369e5ba8f3a49dcc56d348fc7b573edfed024a21a1da631adf736cfdf3a397479abf9a7a899e439fdb07e2a8f59ef739fbfb57e533f4fbb894c2af9526fbdcf22cf69adb536b7d69f449e66aad1539bbbaba9cd8ade3f6870fcbba4d2cca269ee5af239ed439b476b39d76c6c5c976539374d13e53ca3a6ecd5e2b13f5bd90d524df621d27098129fa68b671b4b91aceb0ef52a1baac49dfca5c95375e8f3b54e84e7727cd0e3ed7bda982b6361ab9aa2e610b5a947f397af6afc249269fadc6e6feae30dad6d9dd93b199e3cfd06c773fa56ab3dbad387db58cbb1f91c9e16717074fa5027cfe4ac6663f3688ecda6b5b2b64591387d88ecaecdfb3e4a7bdbf3653177d65f2592558f499852b9a645be44912647df73889eb2d3b8b9de6cdeb0bcd7bcd1bcd1bcd173e71ce4a533331657e2cfec18eff7c9bdc8553933aec6e20c393baecb55f9269530e48b3c8fab71969c2161c475a97c93b0240cb9941159a34c69aeeb71a69c25614518f17d9530252c49942dd9236b941563c6962823ea35b9aec8d972a6841961c519f1852d61cab7f81259247b94c98a6db125c68e2eb28d1967c6b5383baec619723dce92eb4c395bc28eb023cc382bce8844d8f235be4536c9226547596b6c8b3164ecd82e5ba58b4caec92db3e5aa7c91ebf24dc288af12567c61c6197156648b6c9125bec7d7a8649332a4ecd81e5b632c1943bac476e92a61c759118694296149d912a67c89b0e55b6489aff13db24b76c92a654919b245b6c7983296748b2ed155bacb229af7c81a6544f6282bb248199b941d59a50c294bb6c936d92263cb98d2758bee925d2e65c9961833b6c5d8b135c690ed31966c9131656ce9bab1628ce81adbe499d8b24d5d64bb445d9778ba4ab768ba4b57c788b1a27ba429796ec78af1fee12de2ca7cd2e6457452d5f7b5d972963948d30be9a4aaef8b446a1547a971941a47a99536e5cfefb7e9c29bfef7db187953d0efb7f1c29be0df6f73e44d3ebfdf260c6feaf9fd6c10dc1f86819eddedf1783cea5a0ece8d4d765b16b672daec95c56a4935b529da88bbd6dfb3d792edacb36f87c93a4edb889ae7b6a33384c5cb9b7a7c3e0305f57c7e2abc09e83bd70fee8380fe1ff7f9a1f0a6efc3a2ff4972c29b923e277d768d14e17041413d3d3e3e3e7de8b37bf28f4f4ea9be49a356712899db1f434612f746c8a1ae16253d12d2508a2b7a22a13ed4c51832724b240e47d4cba08771548941f04e027d075af6d4f89e1fa3ae229df0a6a1d327ed1d4734de093d363d8d6fd232969b981e83e0be1fa80fd3e5fff8ecef61fa1fa51a5d3df6fcf2357e12292566247aec71eac393461f0e697ccf6eea437d4c7a1ae8d227fdd24e9546337ee86738f9e9c353c9a4f446658a79a924167511a98d4b7d34d2e8c3939894f43f7d1f796e2f157d128af4458fc45134c9b9321d3a7adc1fcde8439d3c95fab04bcae88792494545ffb391fa90178584be488912bdd01311798c97812271b987f1477db89127d268e871c77df45aee24722b977b69242679112516f5a1a91412fa9f4ed4872631c60bc98001e363c87818b93ee4b83e3c8f7dd82585fb9c51c991df538ffc7ba9922bbf971697df4391c4ff11ea4333d987c39f6ec680d187395c3f6574d358fc9e99cccaa0aeb7287512ee9a98dcc8de331a243f02f59fef99c6cf509fcf9f18dd44fa7424a89eeec4ccb129d5f434336df6ca6236c59ab16684196d4a9edb8e8eadf7703a6a8a9ea68da8a35374758aad4e91d529c2748aab4e31de35632f079983e44d36c55deb3d9b4d5fda14f36b93c5baaabeafcdf6afaaef6bb3bdad96bf57cb39c8cf39c81c640e32079983cc791bf5b5fdc03fdf0303bd4f1ffa3c50bff507826174ae0ec3f820189d0bee5d4be0ff3efc877ffa03f53c6bb6efd3f33fcf9eedff8e1dc49e6d10dc7fc78659b3f5818158b3edf13122f503bf4dc973bbbb40edfbc043cb371f337f79ce36256fc221721ca24d8943b429719438ca55692b634bdabc6c485b18dbd176344f34b51d55a5ed18efb71d79534e31a7683be6146dc79ca2ed683bda8eb5a4cd66b3d96c369bcd66b31179936ab3116d430e787bb51a1aded4b3047a9f7efbbebf76863775221dfefffd35256f82bb96f8fccff7df5f2bc39b7efa107e1f9ffdb5a4cf6fd8e7b52b057f768d6857aa7f768d6857ea3fbb46b42b05f4d935d2f33b762dc99b7cba160de5f33d38a0ff9fdef35a34d44f2d19ef2c5b7440f9f49a160dd553ab1979138efabeb6df3d9c2312ff9c226fa21d55e4eb65cb29e614955b897354d5f7b5d9fe8ffb7188aafabe365b0fa78743d4dfbb09e2e5cf6d8a4a6e53b429da146d8a45ad694496e68566e44d6fecc29bbe4b91377db1e7e7ffb9baa47cbee7b7f0a6ffe95c3e9dd6d36f497ab87a3a0d89c89b6cbce2fd69efa9c9de5bc6a6ecbdcd99783fa711e3ad5f0779db5a831d347a9a39bfcfd7e09ec781795e0673a9aff337b04df65cfc6fde06e6c2a99d5ce6cb9e0673d56c28d7f9383f83b96cb6ffe95ce8d7fe85b968bd4b4a7d9db7e95ce9db9e95c136af03cbde06bf5fa3f13c0bf77c0bfbbc0bdf5e85b964ef3e875bf5b96eb85696c665f3ea9f3017fbf35d52b367dfec5cb45f1f85b95ab3fd9fce357bf65398ebec66e77acd775918fd153ed5f35cd9d6555ff6e9bf9fdd24e8cf5ebb526892f3cf24e69b496e20e04db0ced55544437549d59e7dae9cefe979b773d59ef5e95c6bef2aa27d5cdbb7bf7fc71adbc1f9f57d3a97cebbbfdf29b683f32b12ceafbf69349c9a4d67bb10c85efdec26793ffded4abd9fa2bf5da9d9a39fdd243429da9f9fdd24365236496eb42b75f3bc73e97c1717ec7b7abe4ba773b15ff329a2a17cbeaba773b56fbb717549c5fef65d4bd6c7799fcee5beceef87c29b7a3a57ec6ffd26b53e0e4fe75a1fe7f7fa389fdd24b1df79ed4ac57ee7b39bc47d9dd7ae949ba4fdf66d9fdd24ecb35ffbec26817d0eec739cf0269cdfcf42e14d3bbf5f8b37e9fc7e2a7a4b0de76fe02d1aeae673e02d1a2ae76bb59cb7d96aafa3f35a7440d97e67e7b5e880d27996e736e3a1d9d06e683633dacb64b2ef9292c9fefdd9d3dee66f9ed5ad8dcd6bd10175f3349acdcf66b47fdfd9cb64af4507d4fbd9ed21c3c1d9c1f91d1b8975e24db11f10f026d8ef27c2aecfe12d1a8a3f0cdea2a160cfb2b06f5bf65db7fd58ecb5e880729f354dfee7693e8aaa29cfabb7f4511ef44ff4b5e8803adf3c5f8b0e28de87671f9a681f9e3c7feb4355dda2a1d6d7a2032af63bf8cd9bb0cd9f30ed5178f629fcbe0acb3eefe8c0b65a8e0cce5031d869c70f221008af0082023a349144c00f50290cb38101472885e80100168042612b1c604144153d3cf1802a90803ae15c812d9c1800014ce042032494095b2141cc10c925bc50e04b171487676352489384082f00f1054abb4431bc48418c40f25cf652936f199b92e7726c04e79c73aea1329411cb9c336c0ecac1b1d5686c4ececf6c9ed687b4b7e937225c5d52373a9deba67711e1b2e974ae5aef5a52abe5dcbc0dec2eb1c13498e5ed0cb6c1375f83b52b65f334ed4a7d768dd8bc6dc9ee337848b3b9c9e9c361cedf709badefe0398ec36df8db703e1bd66a7d9873f33b7c07e777ba562a7776ba5e2e7776face4ed7e9339c3e1ceee0742d9ee336367d7843a4d1fad0a6389bf521ed6ffdf6b53e9cfdadf31aaff11aafd572fa70a70f735ea73bd1c8e4266aa54e765323b5b1adf15a5ed672e00c85046758855f1cbc6b56f68e21808a315278c5433cac116186d0a0b121f2314578896916a02d7b342de21368c6b3a3ca2a8b64a80bbcbd1a72888bb7373b669d44a4c9b99c45e5f2869083146142660a52440a1997e39e8c3c140fedf0f66868f29821ca6811eb9d253e6fc2e4a22118bc0cc84c3013f64d98fca46106c8b8f3d31e4c051a1a98099be98601196680b4f76ec4c4e78b8973079a30156868364ea769ce9d7d22179d3966954347d0786b3d6c265df3da4cbdd7f8aa707e0d797e6d4c7c3eabe44d34346894badf84d9bfd764d7e3ecd8a6bb8caa7ccfd896ac12cd100eef7a548d3434e9d6b3236f8a3d8e6d86ce8eb0cdd760dab333f8fd21bc84f012b3668ecf5f95bc494daa65ca24935e5e4e4eaafabe36db7a3416f3934e40dc5b8ff1494bb37167ec5ddabf4fa3bd0d11aeaf75ae59ef5a327b591fca7e16b379dabfef3e9bb63237c6aaad8bc3aa2d0e6cf3aecdefd835366d5ddaefd833166dddd7fd1ddb74fbb00f697d281bca3ed689d8d8f4a1ce9fe7db87483febc3d7edc33cbcc9b1e9c3581feac01ffbf369b43ed44b9a92a6d4498dd479d775f591e76638b43eecc3db9f6f53e4441c9cf367b33ed431da4e9f9bf371706c7d487b9d9a693ccddab9f3387de8d371fec6962cba3c7d2b6b6fffdaf93b7d781a79ee3ccfbf791c9cd7a2a1922771e77c9f7e73f35a34144e1f2e71de76d49ab9449ff7917691e7ce5bec34f2dcf943f3f8beaf45432d6ff6d1098ecf0f4fe3cf0fbba478dea6775aed7cb86fa24e6aa55e6ee2f9b1a149ebc39f3ef4a19d7fb38d3deff9b3f3777a97d4cecf78fa70f638b5f36dbd76feadf3e32eee2527f22237f2a3db4d25cf9de7c762e799b4d9e0f4218aecc3e1491cf224cf9db36ef3e7eb7433c99166d1349a4733297bdfede792e7cef3637d687b6be770d68739ddc4e968b19f4a53799ee779baaffbbedbd125cf9dcbf88cd13a6ad397c623947bbaa77bba6f4f89e8d23d2a4de27b1667455a4a8c19654559f28d9d7c7954ce4ea2fbbdac8c7d6f1b65dfe3c9f79cfd6be44db46e43e4b9f3cf99fa76db2b7b5bc77def3512a1a1e1b9f38780d844641a1ade94a1885b8a5d6c8cf1793e7b5eb0ac2187bcde1eab9c1d897078d34f358ca58b71eecd8e35af8d3b375ceb616d6b48b747ad878d3b59e51004de1e0d4d0d199f6f43dc4c3d56494bb3997a586dbc69687231eed9108d34341b777e0f6ffe1e0d0d0f51dd3364d8c8bc05a77c979ec816f4f2c4ed6eda449e4bf6743299d4c69ddb2fdcb9fd5e38e487b11db517f57d37316b4164bfd46428f5b53d11c62044a8b073d90b87fc30b6e3eb8583516778c5d88210d1c3cee538081163362ec7584033d6020a56e6b36cc6bcef2c596f30f14e86d94cbdbdc36c319b09a644bc5f2737531e4344727727beb797cf40c1d2324dbe912c0ad98c1228fa27fa27172e11e09f4a404c9cbe0a86ff49268b09f1f9e88c369b7d108f8deb4323e3b4b39f3bcbc259bab43c54d7d5eb02d128fa6ed4f9e89fe88ed77ef65ebae3dcda82906efc90728245254bd1042f7a86cdb4637333e5edb618a4695735a75d7beaab9f3e104d260b98983fc03f7d374afd143e5d203c0aede636b9cefb8ce9d8163218846092c1200b192c69c860a1820c160a90c1a2ece215e738c757bac4f9ca96389789f39f68624e867826e6dfb3129b37dee3c63bac61f4330c44c73a7fe6aafbc00368df38336ac7dc444d1476e1159a0f9c9f9f13994233e668ea3ee03ed0b3724389362e6bdef73639e73d5661d31da2f5ef3f5760bfccc4373c5fc4216636b38f3567e2fcea18355ac4f9793613ac8b38af4193fbd50f61f35ef7ceb87c9e7aedc1e2d8d7cfaef0def08ddd5b68c6ebafabba76293a366f40f415fa3e70bb2943f12552fd26471f456fe8de297c4b5334fd94a357e71385f0f64cf3cffcb4bef9ea15fab05fe128b2f535dceb59c7db1d923e9a3e8afe9b8cd13f91718ecf0b18639f388fe1c24b4c468330f12cce64345021960975cc7f45d7357d34ed666cb62f34d74fd187fd7a7e8a9e2d6abeca592ec58cdd07ce474fb487eef147ffbcd2cfff1675ae284ae4a5a7f64051d4e4afffa63e2e465ff79bda81e070449be9ec40f4b5debab3e80dfd7c435fa3272a8b752ed2443eb4fa02bbff18a38fbe31cef19834c5787d959fb0f5f92a34dd1eac7665b114d3e4fcc639cf597ffba6eb3e01792e6afb0d082e7ffe283aeeede70f5b7fed3829faa6eaf5a6750f67def86bfebce33ad1b6d2eaf3882f9271668936d3ed667620b898bff91c7e4eb499d834d5af3e9b37d336d3ab5eb0df80e062fdbae3360eed51747ce27e77a21e7c0336e72764dce33ce60b136229669cf3aaf5f9fa76fef9b858fdf55cc67c33fd8dbf7ef4b31514b7715a136d9c3e8125221af30597f829ce63bc48c640fdfbb6ffb63b101cee2472e1cdaf3f7fbee9bfe9c7f56eba03c1c566c7c5662c24ca45f9a3d8ea3790eadf0de48ec25e77ce0e39d1bdf69bdaa3aed02baed5ac690ef28166b701d47577141dab37777d98cbdd21e6a7bda77907827e4e89b6112c7f2f9031fbaa0fa18ef51301e0e53e6e2becd39cf3b76a97f2b94bd17fbee9f2ee43e7dbfaeaaf1d082e563baec79519b4371061e2fdbc8b287aa9d5fc94816c2d83cccc2ebb6560f366bae2bb8b2eb1f9bc8b2df13ee12832de43f710f339ac6129dacaa9f591cddbcc193368d09489f99b68d04fd524e3935fa51ff5c6c1fdecb33be7a20be29495f5ce17ead87cb3df78bf329f3fdbafd81d67b8c77e464d378afd9e8ed9531607cdcf437837dd21fbd9d384a568295a7dbddd06d8f56f51749c5f8a19eb8f22ebe9877ddaa568dda57056c63fed57e60b758c76f36abf5047d171141d6f2b306d7e313f0d13a78f9aafa2f1c2ca78e699679e71f9bc01c1c544b11a7313de283adecf8962feacf9fc61b307ba66137587b851e8a767e61ace40ccdf5d8a8ecfcdb45f757b983a2a17eb7e85befa1bee99af3eea46a1af3e77a348d97f3e0a4bd1f1f9d97d60ffd529d4528c41d3052936776e7fdbdedcf004c53b3f510b6feffc4d144bd13ab039c7abb7d892059a787946d9d3d3b3db93a8ff25ea10590e33c2e83170328ae0fff1e9217a98b1450e19211d05012529d1605aa26185749b04e766bc501f0afd8ca59ff15d524dcfd4d4b996987ee99b3a1753ef5ac2f44a7da8f44c494b3f23f7ac6e958c2825bd76a5949e06bcf44bbf6333b1bb9d91838598e0194f035efaec2ec91125c14a4b337e84e09e679160a13f827343430f94fba03e0cfa5c9754d21f25752ea1a417fa2e29a54752ea5c49bd6b49d21bf5a1d1270d097d0ec82808c8682808c8e8776c24212458e88380847ec73eca0501e582808280807a116c0443a8c7c07d10eeb5682819341cec86815da47b74bdb8c622d8f57293dc2df303bb4ab707768960170dcfa928326d775ca3cef74e22919eb7f5b09636ee4615eff9bd25a71b1be77e0faca5e73514eba241c373fb97cb336794f0fbbc0fec96f1f1e1f2e96e9277a9cfba5eae978b74916e18378c7b748fae17d78b6b747bae7145dee019cc08f382256165604ad819d8128606668479811d6161603b305196b7b7a22f4b64bdb047360c8b64bdd8245b8625b25bd822db8535f29caa6c719e13892c3135c28c36cf95b216c92a6f7a2db245b23fd40025ce1355624e6ac4090575193164c0b98f01030101f55b8c5c8ccfc988d1bb96c488917ba02e232703cee57ec78e01043424e3bb8c189f8bd11fa8b34230d007c1ffacfeef37a0dc07e53a1710d077490505e1fa100703fdf7e07e7a70f04f0f0e08e87f7a807ec70efa9f9effe9f9e9e9e9f19201a749382d03a74a383d03a74b384583330279f9631a2645f25c6adca24bdc738db5e7aed1f5c29bfaef778f6e18de04f4fb5da4ebe52679138cdfef967195bc49e8f7bb677853eef7bb4b170d2b04e33e07cb7856b73060bc0f2c4346bfe15e466ea873e17aee71df2535f442439d2bd7bb96e47230702fc3e7d9ddc6789f18309ee5edfbc4f81d5b08c6fdfbecd83976b70fcb6077ebf3465ca9eed305061c638943d1c820c2f887d1d32d3d2df2dc3f10eca3eebdb473300c7f0fdc873feff3ef03f4bd0b468c189d0b46ef5a02e37b1ff68701fffbf49f0efff4ffff01f2f9f1f9f941cff0dc7e18ee48f81feea8d7bfcf77f40746cba04a9e4391ae5139c3db738de8b744595ef47bae6b7bedf650551b6c25aec13da41cb8878443b48195c878ff0c4654228d59a991ca5e86331219640b343cc7b9e8c245918b205c10792ec75db612197b39f2304d2ad4fe1b6d7ed21a998bcea8b6ad04e2ed6564dca4040024914824c09721a0ac30a000440c385040919801d486c071041d96d0c20517444059d90084245428c099350b7040a6a28b1460286eb0a50c0650b32da4c86209331af8c0056affcdca6d47c042165e5c47a73575d8f58cb53015d561d733d6c254544727d5d1d1d1d149d334d55a6badb5d6fa47033e7af060002ade81a23736b4d97b63439bbd1dfe1f9f67d3e5ce8ecd56abe5e4e0e0ecd86a393867ac85a9288aded8d066ef8d0d6df6eae8e8e8e8e89cb116a6a2288aa2288aa2a88e4e7f1f9ecfb1f0fa93f69cb19d16a6a23a2ebba667ac85a968cf48fdffdfe7797aaee3ba8c1ea3c3e83d5b10d0ee1deeb69eed8df74e0b53511d1d9b4eebb3fef6de7b475114455114455135b9a6329f1e9edb8e2de786f6faf4f0dc766c3937b4574747474747c79673437b63b1b685c15415452db025d6b1d572706e6c68b35716735b16b6aa297a9a3c285f09fda97962bf816e449fdf59f2fa7c2f8788a8c7a8ae30b6ed310e59e075bfe707fe3efba01bb1f703ffd0dee68796efcde3fcd0f2cdf9da0f2d5fdbebdc7e68092b6165ac7b7e68f9fafccf0f2ddf7ff887962fd177a00fca81f1bd1e638c27c2e0dd3932dc47e1ded0a3db08de9fa463f34cfa22ceff4c8be01e2fe21919277138c75e5856b74630ffa4a4a2d7ae8f22de0329091e7a2398ff119ce3a2deb3b2252efa0d0f35f1babd1ca34ffa2cc260d125ce6e035ae48d4beabdbc2c82877e6728016fcf45eadc684c1361621d4b41e39e152498a7d96de0e8f91bc1fb8b601db34023190a03234422114a4b57141df1862a32fa951b3d87735cf447b08e8de08c8c8b843ef74470fa160813f77284fa2dca3c732edc837b26527f0cb8b78d30e0de8d31d61f04f7748ab17e20b887d4e19e0e32d60fc33d9d65acff7390bd1d63acdfa707eeed2463fd3c39c81e52ef2619ebd7817b5969837b383558d9c339c6fa7160650f0756f6728a48afece6de88484a18dc63ece9f5187390b146838e74ecc8e620f357a2363971857d8a2e8796efda35579e7df39c4d130026b70032ffa991798946c7436bde9b0339d6ecced00de967a2dd7b56cc95d8876c78b38bdc3ba851a3c60b2fbcf0c20b2f72468ab3de32c6fbafb0e218b3bac7ae4a22ecd002de1e0c197317e9ae44d7459e46bd1279ba34394a648d287f4ee44b862cf072ae549aa717aff93dd6a8e49d5d2275b1979531a33ac515cadd4395a87a9ec6252fef489cb8434c55a36a1c9ae1eda9468d6ed063b9442275119682831ad2e2a5dd6e39c99c9c9c24ede7a6639c1247c566eae1cce094b8273613ae0cee0cee08dc11b79fe4cf4ff256bc15bfdede4ff2c7cc66eaddba6cdcfee4cf119be916c24f99cda4fbadb82778759cc74c7126eedd8a318ef1fea11bde5e500e2dc84d2ae0dd718f56a4b9c9a0a2166f6f2d7a1563de83c8ba85e718f0f6d42df1c62d57259431ef3dacccf6a5b6b22536f5f9d9869708cbdb4b8d21c4fce3de3622e31cf7b2321e43a64bdcdb216c26b3b71b67c25099970a6f7abd38df2fab0c13143b61e6f39d5fdd674fb7595c2a7732d631b76561ab9a9efc87b278cd9ec5ab7fef95689a69cd1db6657750b6d5f1fabcfd4eef212d5fc35454e6b22bdfd15a6badb5d65a6bfd3f1af0d18387664043e9b846dbf3bc6d796e9f23e54948474645444342395c87ffc7e7c6c686469bcddef747efe5320df8e8bdecd583475f890c40c53b6ad478deb62d6f59a38e1cacd178e3291247bf61e3c9a98989c6d20ca5dec3a9c6a4dec3fdf76caf51910cb9e6d21429a3f7729918bd9793307a5007ea3da7de7b6aeffd1f9f74d9a5b885abc478a7cbde4bd1c43b5da6c8324e29130da72555e9454a85da9e9db66d7976dab6253ac1c988012308a8c3ef84e7b44f0fcf4d87cdd92b27df7cfbb0571f1d7ad9d7807b48aecbb2eb9aa69caf44dec45d27b669654a69f09e93aad47b6a52efbd479db816f575a80b6d1399eb3b460fea3d27a0de537befbd70efd9beff4f6793bba7f3f48e64733297316d3aadcffadb63bde704eb6a977534f13e13ef5419efde53cbc4dbb47de64d3937b47f63edc354f47baa51d9ae6dfbd3fab43d2d4f7b6b75da5a8bd3dab4b39685ad2cfbc3fab03d2c0f7b6375d81a8bc3dab03376b91f862bf3499bd7cef73272e77b4e6aed7b2f0cf930240c99e44d5c5132d765d9071c08f20f007907de8107fa3048e702f20ef45b92a89eeea8c695a863ebb59c958873b33e1187cb657ab98c7125aac6ec15f756626f25c6a96aec39c5aaf1345b65039b8132e8f3d7fcd17e23c265eece75f62e225ce99b9d6bf7ae25e6efbdcd6d9e278a72aeb5d6f9cfae4dfd5a74d6a2a134072c8e3771c1cce7da0fe33a59f4d7cec575aeff6ce782f577ed5c6a57d56caab6f37cf5ecc3b4bfaaca73f908a8f393dd4da2aaef8bfe69d36e1253caec2704fc37fc3c973bee0298361bc0b238deb4ff4cf3bfe89ffdb6e47cfe4b40e55779fecc3f9ffc44d134dd1bc773f9cd3e7c35b5d9d0f77c75a8f6e15f906a73075d4c3b308101ba38444546a3f680020819cd1015dbc881e8e0846d544d33673eb3111912f3f63472f790f61465b2db83eb176231629bd5b13aeb2ab854918553b105155268980a33bc5f10e7346c0eeab5c5783f8e972b6315891ee2ac439cc71c618c6f36d36cb7bfbe969007ac8c269e59f1ea783643cda0ca8e96d9b8fd1cb9995463c6f1c0bde21d7b1376d132a819f489768b175ae62cb2a700f8d9052db3994c2fe81299c97ce188b667abff14c059e4613693de3138fdd67df3052faeeba6fdd11dc760740777e174079fc13ae6bdd76a2ae22d4613576166ea616d63dcbef9ebe7cc74cbb8fdbacc647b285899c9fdf5b53293f901494e494d494c49349296926624292525252125d54072426a426242a281b4843403490929090909890a128f6886ac2ddf9130cb6a07fc51110531e64c25849c91b6e49c87390bb5720632a9cad9c78408829c73270a92739f0abe43500881bf295dceb949ce139833930b7d9173669273d64b72ce11e4ac24e79c24e78c24e72c6524078146494545880cc9390b09e240ce39aa819cb38ffc0a31e9c1a36520bf424850f10e2153478e1bf9cd95b1f1544306d29b7b73ce3fe157d95dbdd60b813b29be1fd50b7f3e0670ca6cc503eea4043f8bc99186888a422fc6c34547578e0059040c0439223b8a841081089ad828496108c1a553ed54b1a9e9a006300240a2ad408f42d353e202b05f6c5521846f0cbc84163b9608e891c92259810670860c00881b1b07d0814a2dcd130248f9da82890c1a14d51c69737213224388341962a4091225478e3461a2a15414ff38f2c4e301089a283590e4344329e94810a8260d441d69722408d48bc3e59c83efe355d901a1e2614d6d1101fe7cec2ae01d79e2fb0195686dfd804fa6b68e08a97640e08f015f94f0276427d43dd9019f3c897f52c11d704ba8f33de11d7152774f80ba20bf9f1470f76427f445e59c99763c72ce34cc273e5ed58fcad723aa4a0715e305ada5b3c4508340a35dd58f6a57856444c308a9c8894670ea27270125e59c89e42c0563469011a8877c9473d65539670af20b7445fe9173a67a818440be17684736fa51fd84ffc4f7c3da4dbdf0e7fbe0ee57f550a87850a6fcff843edeff938fa7cbfa557d50c87babdf037f421d70e7db3d096ae9b2be8a6ff7e417e4fd0e8af00b2200080229852f584011e60a1d45f02236486298c222eaca16147090004cde81414d014804000050a2c04f300820850c9c18904105f436c50b081061831dc0cad2c4c18a1d32104001a49324ace8a8b2860214eccc2592f0009b51551e80210a1f199a08e2c6096b4e50e64cd162022eeb07b12356b838d8a20286a2252b3011c4250a19321c609563cded0206b0a094f9428877091a469aa686d8fde8826a0707ab078ce28d0cd18a0990b06063a5645b40e9e6c6802c37041805698029b450203d342710f8729a21ea88e8011da270c1d4850439672d588ba929464537380897f0c20a253f6a3c995043030a50c483125860896244831527072c825368c0c2e83932c2572dc893af218e3cf0f5f5d5c3170a9c5027c4727ce081915913b02fa87459b1014096206c8c6b56175ac841010dbf1588401d70932b50454546b28a21e7fcf4e5436c0249d8dc00e60b2e603f0423807598956003d1560a4258e8c1010a5848755e1ec8d98180cd1640104ca1a686098e5f5f6a6c6c1ff80f461cb112b3220d8892234d6692e264d684017470c16b0b8924b71b3d822898661e5820c58f8cc1175b7aeaebcb0b294b98980d29f0e1be14a56470817462297c52c58324080148b0a48b51104624b1f861f98403e41a272766c89801860a5a371ce0e849164c6a437ac490113d9842bb5a04c1e2e50a05785017a82c40b5c3d78aa0770280d314813466720aa50a92244e9c5fbe7c01d341d38e614c0fb9af243038e0cac043a62064811f5a28c01b2ea2c8121288d08255020e3ee021be2ef043892f5e20d0051224488ef0085b2e1b2876255ad93c2420014508a0032d28548082053d3b36244ec0d245074d7e89150f6421296203294e6a7280450182e7831950d5eba420c9072478901531810274a530850b4a1c0044851767cc266c0e6cf96a12c1881a1a909ed0c28655d20911ca7091e586345370c8b17244598330294c144a6cc1801f4510fcc820dc21a3b48402d05c208633458081ea3520cee2abcac77e31b1b5e5ebebab0c122e7e0587d50a3b4313ba1d31a4f9c2476a013170a405205d90e087df055108e1806f8308cc84c92430f0233f0f29396719488c4c2e4e8841470d178cf0112cf072328023007254c960fa71a1c2d68026250e70d249808a850469743d297ce5f879fafafab27961049d0e76844ac45d04cf37431534192423285395c1115e567e3194a99d300fe21778d0599120a920cb043ad8f105089e2840c0a8e2a422c096236bba2808e16665c4151f489c2836c103ca6440051468a091429b44d3900b0306f8b2e2031a901481018b2f5fbeb0e074e6e6042a3a28aed4b0b180bcc3891dce245a1821420a7545ece389e18ba3107aaa5419618936bf3f05f88200588b04099208a2f0000362c6db829a2537e098c8b4b0b9bce003bcc3962caa06513d7a573e7412e0ebc2a6818eaf0800f5bea4d0040a244890048992b4217a80647d29621f7ae480f14a3671615ee15214002b3935249211ca424d1414d008284969688d1c0d701105081e2505536b94fcde6e72cee5703fe0ae8226419e11fcc3e113edb680421cf0d7444b976594c309833a2ca3a095d5ee476504fca7a02e0834da057dbbaaa39d50c703eaa4f07c5b47583a5ed6cf5705eba75505eba7557405d4ed157638c8f9a77ee8a908e97ee8675040e571bc120555deeaf74adec77ba4c701ffd40bbdee833b206f2bca0e58b5e359f1b0b4b27847b474598f44c911e0cfea8b7c3f9f55537e75b264a31f7057c1ef80ba07fe5ef7c01d14216fe79b527c757e642babdf0b7dbc9fd6ebb4b47459bf352518cc394be10975543c2c2d9e106b2beb83bcaf02ea9eecb07e17dcd251eda65ee863a91e4b7e36dfd694e051504b97c5c3a887519137da6d55f1823be0bfee83bc4fa2f2e4853a28c2afda5d51eda050ed94a8385641b8d698ae04723b38e22888462451840254e84e8a16b2a450003d8c782a62f7fb8242090fbebcd0608aafafaf2e9030c9d9a7f3919edf9c1072664aa240e97d3a28c207eeb0b074594128c227be5d90281c06e49c1fc86f8e5186774f803aacfffd841fe4bd6fcbeaa1047550deeaf7bb0a78c11d14e1ff842fdcd2126efdbe6a07e40577556ff5fb1f4fa803fe0e8a147057e5d36951d91d058ba48ef028eab124ea88911e49861431a0f4430225199d1f0c9278a184130a97223123565618b2c5d30d5f16401b9e202083de4a812739675c2fbf386d053c2c1d0fb80b66339771327e51c1273a2c1f3b2a9dd611284fb67ebe1ec29f90f7a60a46ce41c09d95d5d6d4efb07e50a63c1616cfea7fc2b7e12147ce4472ce38686572106804dc4109eaa034d949016e5135f9099b68e9b28e9ef87850823a283b7a26450d2b142001c8ad05053000040c04aaa600c9924506b41c9e201561e4e2c84590cf0b5f6b6238f2f5c580355f5f5f5f5f5e78673caa08793e9e958f3734cbcd70b927c2d17e8628aa4821f5643fa08b921a103c5e608b3415899184ea0a6c29c01213d8c1c50d5a6d651240b33380e229676e63048ac664090a8466861081c388157831116c692b871b475a08215883ef16c20e1c34b0e0f379293111c509a6429722e716cd0909581fd0a3080e0c2470410741046de440e585a3188cb800070ad4100481063c88a2822b18d1ca91315929cd52867d9191736ebfb2c839c7c85907c93907f32b3bb2f3f1acac7447c1a00e280c0277bcdd942642e00f4a906ab7650b9e1cb278000607462c01aff080ab04d85861872a3b00a0890c5d78442c80c0029a0cc9d717042e7c7d99f9b2f2f5f58504925818d88c9cb32fbf31a7273e1e501884ab606d7d151d965690c7e37539e79f9cb34fceb98727e72c9433dfc084b94464e4ac8dbb207027c5c77b1f1255ce1928676d809cf3567e5b5cce59f8fb017f07d46d4509beee775274505e18dcca7a9d106bc7c3f7e3057d3b21955d132a9e5007acd26d4579592f2fbb02db25e79cdb7aa1ffa1c75561ed783e84547a54e9b68aec9072ce566c9a73d6b1e520d0688a87a564845414bc02fea65c01754d7cbf2641aca99f9496ee819c732d672705b8c58096d656d087240139e7a59cb50572ce50f2bb5211041a55fdb28eb4ac8e8258bbaa5f16909cf3919cb393fcae4476be9f1027effbf1845a4376593ca0d651b00a6bc7b37a5565ce59a3441e1574d0a40b1640f8218a2a8a454c4123899e229ab8d1040f189218b3e40507181c0048bf7c7d8191fafab2c24a0e5f5f5f52bc9073ceaa8dfcaa4cf95587f2abf6fcaa3bf95565f955797ed32ef29b5291dfd489fca645e4370d22bfe90df94dc1e4373d21bf2997fca6c3fca64256cdd97d5b996af5eb51b51352edb4a8ec7c48803b28c221553ba1d61610b813faa27ec0dd929d90075422dc1a52b5cbe249e9843a1ec22d2d5f54150f4b27c5177545f5c382aac2dafa29090a833c2a3daa54e97640ac78a7c523e2db5dfd80503bac291d164f272516fe8400abaae25d10892f0a58551557ed7e42aa7642e06f2a16ee82c12dab9d11df8f27a4daf97c3f06aa763cdf8e87efc70b067959c01d912adfd6cf87f0272467f3a6cac7bbcafa09835b0ce49c6d72ce3a675a958f0724e74ccb10e4172d13041a0585bc2925a32523a4222baba22ba0eec82a09098946926e6a4a49a9aa29c98aa9e8c7330aee843a20955115a030c87bb2031efd9e007554d9b6fc9d14950631ef82cb87419248111d28208683aec1010580400b0a062332b80d608217ba8f1f322b14418607f1849628cb28b1a10baab0418d064514a1108195084288e921a201af8112c2235a38523928732504070b98a949400721102e185a30440b282c4941a6048b040869b8b050e0d55345c81030c3250340e81252a3f3e6b039e178786d30d5a40415028c438b0e5730c87104c1042b302181881b28b274e05465f074f3c47288134b14a1a0e0deb85cb0e50d22b245b5422ae10222a12cfa11a50c564002006e104f68d9eac143c6e182021ebc203e210026e9ce082824a1226b8a10101cd132a2a447931f5d941c0102821aa6d022b33db4794b5973cefb4b8d099321468eaf8d5e71c3818f510b248f0a2f592461a0644305e999a72814a23881a7b4802f2caa68e04b0d035b7c7d7da5f98280fcffff669b7386bd1ccd5395a9afda05b7740cc0602fa722e77f7af9989cf34cf6e69c633967a59cf52fe78c955f4e240834a2f25509b66cde6d61e9a4bc1320b08793f7e9def77b27399c960e38c5b7f5f424c4da0aee8c38f9aa1d16968eca98350a39e7acfcee23396737bf1b0964ce553b2c9eceea833b6195a97fabdf5701feb2765941a09170eb5745170427bfdb96853c2cade03b11ea9ce4e4571773ceb4fc6a2a72c6d249f965ed80af6621e75ccbafb621e77c935fdd42ce38a8ecaa7c3ce02ee8e3e53ec8c3bd6f87f5377e37f555585b3f28c1cfe59c3fe75d9573becaafbec941a09130cb6acd39ebaceedea7fbaa9d0fb825dc01dff7e3097542df2e6b87a595c57b214f0714fe131f4f28d465017f56af4b73ce28f00704f6c8399f396f38e7fccb6fb6e59c67f9cd1a4cf961590177527e5f45c8a3d269e9a8824023aa9d94265374543f2c2cdd5115a00e38c5c33aa202068fa67858c2e016f0688a8775b4e57b524465cbc7c32af24df9f9ae7c5b454b4c4d989ca814edb0a674c2e051d0c7d341a1c2fafd84475a5bc2e016d0e8c8b7b50b1eedb27e508eb899736e73cedaddb285cd482231cedce52202cb12d5c09fe5dc0ad740d81c859f586a162c57f66ff349d3c0662bf095fe340a8f57d3347bec473f5dcdf4b3c95f55dfd4bcc7f5bfc939bb87da1c4ae1afbecad561aaa6bfd1f40a5dfb15aa9a9df7f65fa13d0a3fe128c3d8dc9faff4679e3ecbe6cf511c2834a5ec474d388a2dbe423fc7b01e6518afbfe128b618ed42fe43c72a8f758f328cd37e1575a2288a9a3d4a8e7fefa080f7f83ed9de97e16f10c1f03eb12a6f1a0e2fd8cfff02fd26ec8759b63cd4f95a1eea82f5b5fcdacf47fb05e8ab7dcb43f14ffb05683ffb05a8f69dad0a6728b685371496ada1b6d9b6bbddb945fbcd47fae855da5ba8b21fed2d54e1af23c602672815ce623e91bffebd5b78fded1259df84b370b1afd7d60a0bc3386f5b2cfcf5bb7016f7b73c14fb2a9c85c85ff72c1860e1cf76227f58cfb2e5a1dacfee921ddb8589fcf7b7309622fc37911566e12cec86db37dbb673b159d42319aaedfab960bf33d489be8622a2e18d92bf62b45fb550657f0b55cc27b25fbbb722fc35ab5d22fc510c5822314437406978cb1633cb16b36b5179d37e2d66962d5d5174c4fab5983d2395b044369c4433b044fcd1477be66d7d9513691c0451b91817cb88b5d08cb5d6401d9bf9498a7943777a53d5d48cf709e3364effc9854c065490c9e0093219982193c1182f9db3de9ff7de37137064340821ce64b478897b2a990cd2c4eaf347137f9cc968502666799beae72c6fd55bd466d3b43de1ada6e9e7ed637ffa279cdda89caa350ec8e640b7ba3fad7fde4ef33cd5dee963bf36333ff9f9f97c294facc4eaa35768bfa17f3e2e3e3b8e03c1e6a03f1fa981983823b520915a4288bfc6c479cc9798b8278bf90fc579cc5731deeef97c987e7d7d6df123c737b0f9d1e7f04e53befb8de75cf444ead57e2e2603307be3ccdf7ff69bd981f09eaa77126c0eeaa92acbe39c7aa9cf9a2e10fe2a575595bb51fa6ccf1da3e86bf4b5092624f51171eebd5abb40f8a3e719a5615a6bd80ac33bd66a1abbac1f94a31262c410ee825656bf33c7591423c6e3c8f155be9db9833983d941361d30a3cc1fa60d266780bfe0d1cb644c8ed23e5d3021ca39a3b06b1268909300d1d23db0db01a5a08eec843ae191273ede135d30b87b40f88312d4d2f9824d76429d30d8a48a0e6b077c7acada098355824d74409d5613e10e0b4ba7d524b885b595b545c5c0131fcfc7d365ed8cecb6765b45a05009755a411e8f2a3aac9d912a56b03183840e14a28022082f49dc900007b5a2d2009bd130c4076f4305db978502783298401818b20c8210002eba4a03386186198ab0b0896013020917785c508454007048008d5ab2b4c39a9ae2f976f28d6099f33ff190df088272159f4ee8db01775656bcaa9ff08355bb9d8fa84af7c3aada09a9b680c2a0ef47f555b07cbf0ff28c746ff58312dcfaf7e9a8729e7253a56a17e56d0885bad70975551faca29b82a5fbaa5d900745f8553e9dcec96e0b4b97e4e9a96ae79b326457f5c4c78342a5a3da29d912fa7821b809028db4b6ae7e3f2c272523a4a2a9aaa21d0f28843350ceb85709310834aab2bb6a82a5a3fab190f30b4a725e324a324a2ac2f2fd803c29bedd8e20099650f7842745a77742a6ec7c67095c3022221c39707c8e4a150f27b4da057932021c22b4da05f9ff8759f054aa784d764faa764daea87440e1a33556543dbb68008e1c563bac33081c375ee8dbfa51fdd0fb76584d9a5461fd78044c3326a43cc260d5e3c041050c4ed95e236872cebbaa9fefff6957f5a3fa1dd6940e0a956e07f46d7dd50eb813fa76ff84a5f30177421fcf6842d2175961ed828f03c70ba13ce1eda018ed9e54edb60739e70bf26bc496b32f02a92806622231037fe3a954f130c86f91aa1c041a55010a7dbba39c92f01281401068a4a5cb3adaed80c2a9a32016d68f8a480744a8e42adf4ea8fb201108aa7c3b223188dc58fd803f2ba04e18fcdd139f0ed84e20012c4704c3e1b89e0b4604b3e0ffe989de82ffff1954c8f99fde2158865c0d9120ff13ec9f84563bac7f98132194273ce0bfd06a87e5648703c68123e70c8c3284e7159226e70ff2845b53ff41de4311fe53ce59ebf70a714148083e9e30b8ab7a2854425d560e87f5bb1d1570eb171412cc39a7f9158225042b37665fb127b0b136d39e218108683360ba766857c360c82531fd8d1b9f84fb1bff430878e18b0b992be77c25bf0e9cd90af2804f8298b22944c8c15703135392e0c1b72880ce1220cc30819b0b37b81247cca89d60029730f1124776f0c484230a787c7940c457c8017e6207071381a220be019107100a2a6861880c78b81618dc273165438bdc0d475281b7842f0e60427b42cb6d94f0aa0045141f24e5b4c93ff973c5cb82922c446938bac10b1d5ca1801d26ec68b1a7b0414a90202da8c0e3a56227bf286198840a2df0b8f1c4568097248838c264023288606697e08491063323fc203d1db1af74c959928505f01126c66cab312f44094630a1b2420f3bc8963459d4b0e8b1136276d202cce470442a0a1c849861e770f10309c014ba188009189d66851276585aa20617182ae82624e0c3003710c0d8640226682006203403132f4630ca108206e345e3880f5e224c80838b06418b045a4090a0041f76c8a2a7cc20f5c401aa44c03665a89960b152b16006aeab0c841a0a85ac140840c215531cc0d23294d05654ed68712045957641788047c4c2ad0210e48c450f13f4740115a587849ccb600084dac1ce0bbb2572bee128819d1317af2e2f39a35005150a4947f4f0858c9cb71860888c1835127a8f9cb39028c2498517a22042c9f988071728096181144cb47276428e20840541a43832e4ec7345470d2a684258b3e4ccbba84ce10398a99c733e73e68815de2f214cd891e64b0622165083c0099d1d91165f04e02266ccfa23b2650c155f17888142ad0261b633c5135f546a34a0010b0c72036266bea2be040511801704c18823be8c9e60f2f6203464031df37543001d4efc90b4c00a981ed67441e60803c92e29490162d63011007589260719ced50c6b7a60000f2d0178e0a58421c0ac71018d0b4d86d822e40a4185351eb0c0c40d06080345180f4c582364a28b29415ab90b6e0861cd12118464c0e5831a6220e1b246471062be9c2ce9807424cb1a181a4c3539b1860e6c305c03a381862e2f5fbe8861846aaec8c209340290000f168881a50689145eb082c06da20417556a6a58020c5610d7d40a5998a8310ae0ca0042d800230811a4d464e0430478c8d831824c0d41d45c65f13a8289227ed06183871a2209707af285108d047470430d8d2b96605d6a4260a0585273336a1982cc08398ca005919a0c0161060e8081e50988a03414288a20c5cfe94797213c691cb0c31b02d3035f2469ba491303961bb42a13284008256d1a11103026ea831d548e647d99692c90c2843e05c88a0d1c90268dee8428603ce86221081ab448e3c388224c70494848c0808a34441c247fba8a56d2dc7822cd0c87241f5c115f3da035f305175f53624883831833438ef8c2cc0b5a6b6a4090f0430372ce79cd982f74a0c0ce101cc74e0f2672ceb98757ce46463967a29cf5dae347cec2600f5bd0eaf7c2addf0779cfe30c0f258f1a5e1e30e4ece4ad7e9f7bdcffae8a17f4f13ec87b21ef6d5401eaaa7c5bbfa907eaa050bd8ef73b6195291e542f8f232f8f212f8fd889937fe2e351f1b082efdb4199f2b9c771e3715fe5db3d8e1befe33dd94d4d606464244136f9ce9a01dccb002ee77f7265fcc671209a1c10cd20a8d0eb748b2b2f0bc4f36cd3184a5c310f9064d65a155e4003403483ac39301e1b06c435027309f7618568abfa509d5018b761839d0e20aa6188374caeac4dfc042c5a2688e717f16c771e406c851d07e26a8bedd4c6797486b00587d519018bc985288365302f9a1da9b6d917967348754a6f7019bfa1aa40e40f241da130140c91b3e88e49c426716db62611ccc739944680eea030b4d7deb437ab6dcd4923e06ab0a03bfc88e5f422c2e89959df04468ff9d4cad099a9791167c024d2d6d09d2a496fa9901327a651969f66cb39df3ce52a5f613c264f91a4341911d82c4553cd5373c93c32b5aac36f57d69ff305620ccc95196ade541e584c26b0f4269fbfd654208932442483f0da7a72e483620f281d389a7ebe2bac3892f1cad454822543847c097144113f1e2075196107094c406008207258000c2d1c19c510614be84110b8850596669038c2071aac5c40019325100c11d2808f1f9f5a8e181bacc080800bb89af4f0fc7c3f31262410258bf8b5e6025c3091a096338300103fe890c302141083071d00a0090511281922246a08217e207343971f4b283104103ee480030b2a6c90010616584200891c701093802cc45d55548f99bb84e2092682f0c1861a6670e1030e76554d2860228192a81e369e72337708218238a1840fb2ecaa287020ca470f1b198a278610a2013fd850c30c31b8004207592670200a878da7a6a5a41c6d66e62f289e90400382f8c1071b6a88c105103ee880832c4e349980898e23a3345f0401228b4580a7c86503089420a1c0c10655a874ad5f7ccd56737eb1bd505f30bf6c17760b5a692771246dc416f121fe393f9b47dfd21daea36d664de7ac36341a7f4d591b7bdd9d5687e581cdd65445d38da2e7c97546b3c060388098aee96ac654a674e53dadd415215dc5a130d5c96c65da6cd126e614eef2995906031288686ca7ab49e4f6382180084bd2569944b12b7be9762231357a6307228e203c66186c136606c95d8048012c42c92bfa7c9afdecb8b2cd1d5ea4a5e11ce710124414fd219205470695016fe08a06449d55497bd3de54e003474b0dc2b820de10ae0d3801e14d57ee9e572600b85c51cd18daa36533ae54008555e80159543423c4367bee98a5354c203b098e586c4e1ccc072c06cac4144a6b6061c0011ac0f2c5839c17298b4b1524003d10d92dab12307095643a090fb791ea305d81a53550981ae34d510df01e980f2e88b034ca3da2feb8f5f0015b7fb447aa6e30805833899860e8938d8bc2d81e9d02168830f587cfd406c493bfa7468ba0b0d3062a94038add5a65a83f5058aae3f258834c216bed8627c64e8e903a04c4488c2b30d5289de1ce688a2292b666ba733e71a6b53565fc8e744d61e6d109c474daa1cf1b87cf1ca455a5e2357ad8b0a9b09cb5e90a0342d8251567069941e817a250cce4710e9d3e6b90c9234be23d588846479a5bf122939f16740a0480c3cf07030292c8230c5f540880152e2ac12bab1d95130a982c8120099223448238f0e3c969062e060ca0377ff0e1eb0a2a2aa023078cbea3931ac98c698185223d743cf5e0b42cda83981ababcb4a0420a07309e800427e3c8a80412a48e7ca5d1626ac91556e4d0e43703c1039e550e1bb0d4cb07c5a63589322e7879aac154bb61616aca735b800298ecaa86087120ca478fa7a5a41c6d1673cd027400000d684a1a37c080802f5694246962b2dd984424b348920307d39aa23168a92101288820800d2c3040010ae0c11021396cc868f517dc8b8dc65cbe15fb8c5981ddc4a9d44a6c08ec07ac48b4476c22f6105bcc8e81c3b0afcc9e0ed23f6acfc9e3eaecdac6d137339b93b667fa35639b3d617b55d59da6e73635d71acd39e7a19c332cefbc38663e1e500be973fc96fec60785bc27bcaa9f4f83b9f1e627bca9a3ac2ddf94055b4c966c0cb3968e2ab8b3da55514de96a383531d1589aa19484246415e6f70909a1ee8765d5a40aafea286bcb87f4387254eda03c416be068399f3e72cec0fcd6c822037742a14eeb08280c2e894e729a9566339b38744e8dbaea9ce934cbf499a3635a55329b320fc1f449b7aa9e26d73ad7b651de59173175e89cda38b30cd5596b7d9e4b9bdd596bcdf70fad53bdb5e668055b6f9dee1c235aa33acd5bbb467ca3280ef6dadcdb2c6a53eb0dd35b6cbde6539b9befb4ee6dadb78a64dfb6dea8b9f5145b6b74eb22baa635df2a0f274f633a476b1c95eb13f4d6e8d67af3267a9bb07569b73a87aacf208e43a77b9b491cb6b7cec998b4056612eb8313d9d9cc7b056d729c796ecdf33900ed84ce3bbfef9b75d6a6deda0aad6e21adf7b937d77a863ed2aa6ef7de1b6540cbd8dbdc1a891bb13a6a0cedd276f608fadc3adad45ce74d643f4c9b79f3d0fc4e34073cc33ce8bce387cd35aacd54bb9a77d95b7de2da89ebbdcddfed8ad3a7d6299299f483a4370c55b7d65aa75a3fe9bd97e0a85eb7c9a5e8beb7b4e6457a65b75653bd776c9fedb37b78e659cb34bab776cd979b5b67efad516d5ae93548b3e7d6a78e3569adb5beeda8945db79e52db74eb225ad59a6f6dea1fba67d7d83c9bdde93e35d75b6f76a7a6e627d7ba49738dd3ab6eb5d636b4cf86f154aba6de5a3f698de6ec1b6d6e7d9abac66635df3e9af3bdcd6dea1a7beb9d0dd3ab56cdadb57ed23d1b96726daaa6d6bae9b54d48bdc1874ecdf5aa4d9b5ed72756829b8f0632f5dee84e77fac541627f68bdf5d65a17e5346be52556f432022bf247708033c908e027a850a2730201489a50662958897ce40044ec8ee886c8460e20e60423f06f489103f49644744b3b821cc0278b1f3a1ea41a07b01dd5d0c55e686ac20d6a82619aa909ad86c9c95701987e4d3672f2854f91132f9b48c9c28fe89184868c4457fc38f9f6e76bb46cb499203b393fc86f6290336782b320bf34bcc83aa1aeaac9aeea47c5f36dc19e5ea8e3f9745a6e4c03d13b0cb4141da565358c0aaeaa4a572587db65fd824d823ca31c6e6a2bd8c448e8d3699dbdd0a1822352510d44f168d240d4912610c40f4cc1d29212dcf2f1b28caa72c692df193b7246fa1c2ff4e9b28caa9ee8805547559eec843aa030781eb94013335708a185af0a334433405c0089181c16bb2eaea88d411244527d49c56e4019b1a4078729a8eb07ab638c0444f121318032b2211cf0695d4980c80f349c230dca246100200e4668204117a3a1de42a2f889c159986145470c99a3123d9866542386d8820a20e11347321c27359c0902ac4603c8a187f0287474a185122d8c5085cfa98aaa1c7a3fdab4a2282b96200330575cd182c54f879ca7d00821b353ec90755251ce3e598899bb3b7216f239a7c99cb357cedb06090dc8e7164de4dc4504629641edc85a8b3167196fcefc4cceb94a6f2bd9b7c3a2a2cb42b2f2f184e8840c15192119e190971e478ecfe17c3b2ca3a010a8d3ba4106928ca9cff113204960b5352526e72c25bf485e3987ab22d4cada6d4dc154bb2a252196d551d6964f9b515e242e4c494c493468d4406a9ad184b4b4d4c4b4b4e49434cb395799fa5d154f0aaf4a2b6b2714ea4ca2a32084c1605690861d82bea123159e8ebae49c8dde2361c69ad209b7b28e22c8ff54b59b7add03537e40e00f6a35dac979a591775b40e12e88a5b3ca393fa13ab130e291339255159596a246d2e77820708b4aa8460da71a4d35986ad0a8b15463460da51a4935906ad47072726a726272a2e1b4e434c349c929c909c9a946935353531353138da6a5a6194d4a4d494d484d35989c989a98989868302d31cd6052624a624262aa41c38946130d261a34682cd19841438946120d241a35969c969a969896682c2d2dcd58525a4a5a425aaa31c36946d30ca61934662ccd9831436946d20ca41935949c949a94989468282d29cd5052524a524252aa11a39fa8848c9487410c2a848c8d8088000000005315002040200e09c602e2388b13b5957c14000d7e984a5a501bcae35118c430885208296510220002300220234913100063f1f8f03e629044f93804cb89ba7644b8a71b3f785a9cc18f3007d972fd862026e5901b9f2f681cb99c70fb471143a8f8457b9b397d8c13479f7ba6ec5b6731dba0559c10e86b8af8067e04f017b4cbea034e176933addd2c6053dad1d62228b0e6fcb1c77b7cbfacd323b5718cd10bed471bf448b47c7e66153b33339abfbb06d18bdbd35a2f339afc7840395909d00d230c3503d889cc7e62def4ce54c1d4fe075c5786656d8520eb2f439b8f355eb7686fac25c5cc05b6c853fe5431780c4144029b87fd98aacd19eb836f2d01054e4eae40fc8249e46872002dd0510bf37e389bf0b32ccaba33aa7488fe2ddb31fbddbfda23597788d6978aa55477706e1fadf8d48bf7c695f5c9e9b4eed44c5deb62e3d701db6013eba0e5ac7f4e08bf8939f7407f89886296c32c080cad2fd1bc44519d84c2b745a258afe01efd3abef4ac76fd87d62e844e4460103533daff469c2ff86e202de53b823ff7eaa4337a59185f62eee4e1e7dc6ddf66e04eb33fe887c9a57f796ddbf83ca377dff3b6618e55e7ee5516b8c139aa8851eba77f3ffc0313a110ca8de69c911df99c676df7956f96a0878a53ee32b438da9f25db1ddb06a2c0b176fec9b27c032d9fd19c23ce1791f87b3c91666d92a395549639fc417368f70da463fb265ec686974c4a357b9f0bca615ff438bd85de3fcd88d1de424a2f24a66f232affbc56cf26a71686084d94cfd3c30a4b794fbcf76c480988b2eebb9513a2aa2dea00ec1b8b81dc355d6de6f64fac3cfaa5d6adec4f148b620047b3a643a84bd99f4afe3dd7ac8fe32fedfa01c1c15b73c66e133437b6deb50bdcea8cad644f5874a4adedc3cff3e3550f0168d6f999d573679a1eea2020b4bb346c1f1961277e3c656eeaba11900b5acc2c3182c0754624305be4e52834be6e49d50232333ebbefe55c2aae1061aca04171f1fb4d977d5ed65ce7cdee35a8d52247a6c271c75e0c33ea57ed111c2c8bff0ab5209b8e207d28a07b9c59682c5edc177e8a09a17dbd43807462eadb766921173947ca52f45b0ca9e0fffd0fa585444e28c0eeb1f551e83dbc473d861b377801ab1790113d21c26816499c257c256e29be89bd247fdc15f45658e20fe22cddd7e295fc33f14bf65d4c25fc20aed2fbc338f43a59bfccc68823db96b29cfe8a3d280e665f0a47fd226859dcaabf528c11ff22fe1fd84598f8c1c42edd573197e093384bffaab825fb54bc927e1363093e89b394afc42fc9a7e294f4bb184bfc69b18ad52a4bfb546c2bf52cf76f4afdc796ac8baf9b869d2037019f195e75907bd061ee12f45910e47696650e7ee0ff98dd0018433528140c4a616c41e82d1e134f4d0c749fc051c9af5f3f519bbae1fc3f6ce7f6015fc098fe5f798318c7e3d0e109570eb99da6fe546399432d35d20ba6d95fd1601c3177ddadc6efa454c12962122e5698051046b12fe1c2e5dce641fccfedc109003b58d3260caa5f17545478188164174c8dd770701aca61ac9b3870db501296d1c9ac77e2b479fccb9371cd5cd8eadd2bacb0fbb516ee2720bd6ea0f5d77521ed3b1807ec4be5f46a6458dd3e21462cfb325a6615e4ba8e1306a1d74c619bf8b003158c638f8aa889c165f34985330205741058a68df6cbf494bbbcaac26ef42d9ccbe6a9cc9ef88b5507267b59cf704795f17cc980c1640a344f5463debdccfca60ee6bfab4bd31732af3669b20d1a0e7f3682b41cd117e5201dbdc5ede9c67d0bbe7eb60ca377471737c700e8dfa6b8af491c07afb8ea916af026c93398c1706f7d77e19a1751cd097f8e700d59cc78e868e551978c1ce272b9e2f6a32297d2bf41ded1353c5c618fdd65734d018d5093567f3cef09b74ed04353ee2844a135e7bbdd387b75043c27316f20d76a3133f48e13bc350ec910b8d3544243b1e61ef3f1784e7b709c38787d7e09b78bf0abd3c52321df2dd210c8c9429b62f15721fa2bb4f7d738ecec9dc54dc9274a7d4589b3c33bb1816e622b91f893556c1720d44948f72cb39aeab9b85d1967f69f7eaceb3520baaf47d7007ddb41a3d2e0b176b80c43b31c4cc7a3a25dc5719309fa70c8728cba4fb07b173ec64fee99464350654cb0aeb88a6c06502386973ddcefa1f1b34094e3d976df874e96f67a27771f7a9e3f61711ea5274406cb0da4c2adb1786b30f1f74d27cfeb97d23377f42a2cfb9788a6ed037ce0a0e41c8bafaa50d7fe567fe88adeedd9c35968169efdbd4683576a81c19446e00f9622fb7e60a0faa3e3c26cee7fdf5c6eef8f2d5649a69f0f13f9d77996af47bea07b476e9d67759111d9de3cbb78f4b8f3be37186be24abe323a756ddd1803273744ce6f71ff4939a2c3f3b8972fed3ca0715ad6e93b22808fe24f0527f4e5c6a3853ad551c3c96c57183999d77ff7421a3203c6753cd0b658dc6501dabd77fba9529977c5496589d9b5c42b637c167e2441d3fbd3bab6cd8ddbdc273904da1b132356d02985f89f9d87eb942ceb3c0a02a407a2b7abd4103495e207a64a6d30971a82a695c20fe9f121d37bbf9421e0f12d661902dd1034a187ba180d745c8f63bc5f6e3ffc519a8c19e1c9ae3ee30c7e168ca841724434df0ceedc08a467f23d54967097086619f5351705f75f2e0d821dcbc9298954d031d1553635fdee9fb84a7ba4cc53ccf318fccff5909408a2c2c8960ea27062c2cb9768194af5a74fe92d78ce8dbc3b637d4a76399955074c03d7c50dd2bbeb9df5e3086888538a1e3ae937256ce9a17f5cd3891c1f167df820fc7062366184acbda5e04fdbe27a15e2f5bb5716b7ee8915657e4672970a63aab070fca5f2d952c752c14111d43ef406356f6ef49054ba15c56c274ddb19a00bcc14c76b0e4bb2fbbbc8f4cac459f23a0ff943d37c0b2a9ea29d39487aafab9e7a56f665557e8bf86bef62b73e4aade82116fb24a0bf0a4782188f15fa8729769391a0af8fa12738731c9ba8bab06de13e413f6a2fdabfc9a511a0528a1f685ef7192961ac04b184e17262b717e741e40805b5446237e9792ac90583e7aeabe5aa30a002eaa4743f19c7f1fc09f6355add7fbba28cac8fd63df22a2ecf2a0d7f38a8b186684520c84c5f4bcf977f67e029fa0747731cbbd145df5404f1b32fafab5c7b0c01d3c479f76cf3283e2d599fc32abd83bfb9bad1fb44ef0e4f212644144915d4e592ef71a0189857a55726d8eb2792918bc5d814cd99367f9a0bb2e4cae77b6eec63a6a5d05e4189df3806f9ccf4731c4d77c27d06845f389edaca7bf4c2993948083f727ef7b7c824b6809e70bd0881977b1cc6b4f5c6ea7d788d480fd52aa930519f4947045e1df49bc0e89a1d3daa20a7673fe4e99d9ac16f17bcdd66f98b21ee5f705bdff39d88c7b9f2657886cb3e8cfdd1662ec6f3abd79bfaf8bf4f962149d884d00e87fe60fac9f35d829bf9197c33643e7eb7fa40d899655c2e1b6103c4cbbf55e3f7df2391dbb823e2f89e3cef12bfe67f932a9f178a5b4e9e563e35ce94b67605f8cd8c4ab3eb415b7262e91e7542490709f42b8b49b9a73b7fa9b7867635311eb04d204a2244efc69a95f152f933d2973123b0947de51decf5f304d8e58e2339857a8dfc74914fac1019f2a6ac8bd120c224975f02b0d2502bfcc99e5af29a781d1f4ede989b4bddc5d9821d1abcc2e1201c6c7238d8c3b4720a66de86d1d38c609d2b27a6560d7e20e72f39c7db6ae0cc09ba2a3a38a9cc48e2616d01d3ad6b7805bdc64c9e12e567b7ff3c8d971b175a6ee4546a6e7243b8d251b8b7751e3590d276329b7195feffa135796d44cd3a255ee1d4d5264a006d22536b6f4828c23a16a8437389329ee355b57cc4c74f9da118b2ec5a75d105e006a5bbc6563292357d50890461b3d146fc7522a1b625f4efb3a1d004ba8899486ebc2af35a8918e6adc2f244afa057a8123ff0ccf2011bf541b2c0eb928d695f71773488aaf4428d9fee0ae559534801cbc812305da6347e837b8b01e1e8f5e96d02ef26e350ec58ec62e6514db7c1af6572704bf1ad82a5144d514a02befe097e8709f941e11191d039424334dc54ede65165769a4ce204b35e0988287ac0775094c11e409557fdf320aa668937f1c169e3da7867e6c94ed30665b78fe870b04eaa14b42dcaabaed718c6b83a9a76caf8284141d047b45a5ff4875cbdbc7ead8d5c0583ecd6a3839d5b7d51c49e3216caab392c9be31c2695ab0ceb7c89b08bede38e27ac8d0cb88b0143f94d8e0ca812b712dc7621dcc05886f4a26953219fb7f0987620757de10c51515bebd02d3666a5306b978073f0f755c679e0de699b64d3ed424edb96bcb47161aac5d39c1fc2ac5e1175c7477d2912e25c2c2062e84ffbbb328b6869c85211c6b9cad002cfd13a39dd88ac24fdc91d43c782991311b2c75b5d2af3538eeda385c877fff3e720642ccce66c480dbd78df78d54e2b9ad33fd74e356c22cb31022184574d2be2c7c8984884533a6d7635843b2419d34ccdf6f89acc6bad3f7f51ef528b9385dd4c4afcd1646cad197ab220118564c4f6a8102a9e988de28485d3e79dc9c010b95a5650f03960c1bc0d4cf3a3443ff703f4db6b6b6916b97a7474fcf89ebd4d801d96c65c018fe6dd8da51b5af09d6708e48b007bb9a9ef7a70e5d1984e8bbbb28dbc3e8725c4c932f378bc929ed506a9da63e3204b6264618b258494828bc73e6f01457d5795c12346403074caf3d1ee699a4bfe5f1244a015dd1609ede3cf9dd106222120d29cf8118ca9b83a5291b25bd790e10b471634b34e5666faf5bd56ae2e4b789fdacc66c41e90f9f5ecf38118fc4492f4951bd87d198fd561d3b47d17aecb664e22bb21e0d41fa2aabce38572cbc8f70db86d3db10ebe218cd0119c449dd58a5d23ff952b57801abe2441908dc3db5e97221a6774ac3763cbb368fe22c5e9381dce7a8334da9538e428e9bdabbfdbe838170f318c3a14c1376b48c53e3dc20604df4c97605a96542dea47f9e0b97d198d71cbc61fa172d1bb224bf8785eb8071363141b4a6df267e4a0f9333e8f325522f3e2ca3f950a6631bfb35866ce9f15cda0739d91d45cc4f9f125d91cadf206103438128f9d603c842422ae4a6aed01183dd770b7564c0c822c49d66a724eddcdb5f5cfc566bd2c18a68f59d9f8f252d86a231858634cca4ed2d6a8b00425622504d050befe61cdc9b46376d018d69e640f373da08d36de752a233cc051d31ac5326832a84206e27d1d8c1560a98bec64c3c189e92f4f4287f5a541ad51ec922569100739faa15dc854379b84e3055ba00b659e3feb14519bbd0718b7ddb75cb91645ec95b48be6af0b0b5d6cede6a2522cf9df17a83e3e34605791312aa0fcaeb91d4a6bfe2be3eec98df3c9ade8b8a3e839f2cb4cbce139b9a2f4fd7bb0926396eafb34eb46aad5d04f9a503e1ea11de1f93c243c9d1a108282455deaad08e26a69a514d8fbd276bcd74784cec86931af88ee6b6951798e3b964c3a405732d73ca9151b0552153728ac11dd503a160cbafe93f489cd8234694c98ce4410a568df51e0c0e526e125ada3fcb0813dd156f33e847354a258dc55ff37f7204de981977fe9d0acc79de9c99386233aa10a27e25a436a196de8c790c69b4a0b0f2e778b934df3b510b1860b8d3b0b009a411dde845085f229095099ee357b922ae87c0d1edb2cfdc5e3a70af9b5df2093dcbdf8829f5f394c315650975b69ee5d062f2a4b9856517873e4e1bbb189fa26f888c1090a5d508c9d78f9e531688a3088488de621b462b9449de238a4026dc2e7fcadd4e54a195d41bb38b4d5134900cc5bcf13e8296159654e9d1b6860bae02a422c66a68f5027048a6a9ed5c64d541c68544183c722f58df1b64649732fa187b9baea920b6a304569401b9dcdb52a2ef34d9b330fecb4b0ba3f6f5a9391b921f97c8cd27e9c47bd4ba4412b67896ab9564e3947dfb01aaa331551580ea405772675968055ab87f2e9c4b5cfb88317a3e310493dc3dedf01aacb9dec1aa52b02d79d5c88c7dfa44fc11cff38c9e010705f2fdd7fe49cdcbf7135861419482f9e15087fcd613f09075a7bc888d9c06f2ed2514c13fe1495f6141fa29780f7609f3f3ad648a7d578f53ea0a4f2610675d4b02bd7ab4368e090031e3989ef0e853ed07323a98824b65045cf09ac94a10c66d3b5c1688bab3b8bf50f81426ad7c214b42c60398dff5ae28c6205b2d5472f8907d91bb5f7cfbd557da78a7b34f113832664204a9195ba5aad9b0d89136ad8df95814fcb4d4c7abeee09f122a0d923e78ddeb800adeb1ca0a8ed6ca0b8355a3291590ac80a7f72220522034ed794eaf5a60bd1cc2e533659ee22ad5d53e47e47c57f2452a54491e9f7d968cd1e823eb6b6f65950355a18397bb84fc6e76a18080458245c0f178ba7f03b0b0051ae950852247c6485c05e8b2652dc48437a8d179b1ddb4c6ff066fd84458aef13d03583e77c23da19f0943f7dcc44963d47349d79140bd382b1995b1ed923afa05700128f49b2afb200ab6435a1653a14dcc6007ee9ca31626b1b1789f8c0662295b79a8053b13fea86e45ca3453187d074e47ec6048acaaccc31a0bfb70dd14d115cc4155d43eb0e0bab3995e68cd6e7f8dff6ffce4bbdbe0c73a6c12e14f909cd9abf3b443a1674bca621451211c94288d2feaedea7283af618a66721a914061e385edcc9f6877835a1300cb76d2306c5728d68b43e12baf062bfd2d2dacc364c84baa54b58f43777397ddbd2599db8bf997b9d65f2a7bad76526f3ca0b7bc5b4146321b1747f326f97c7990c39d3fc7550475cd97653750e716a6cf1248ab0c90595efd7494ac51ba985a21b3ac47553392b0e9ac42e3746b0aa8c5dc5ee40c8d65ebbb2e170a5fc10d5af2f0802661e1c8ca10aa5c3c5406e827d9e2ef4f8c0fc2d9caaa62a9357a8e13b8961808600a55e9f45a6406e51aa52a691654c1ed8a8bf4fd9aa86dbbfd10f90c3ed06a00bc39b2a272f2cb0e96e94fbf23465370d8de0d5f36fd900a0fe61a4f125ab7cf598fb25c8af78e2a23313eb01fd003971ab01a9b74abf09f54901261603b9baa4d0ab3207a7abdddd08c665474c1c5a587b173102bb9c991e53773645b7a0cd03d201bf6330915d76926f964d446e338993696c0e29100b22cc150b86d645a56c0be44653d03b6ee1125dfbd5e96afcb0e2ec30e7022b32961aa1d6a83543fb67306c0167c7d69efdd031eb18c1162d7f058dddcadbdf330485eb34195eaaf3985de8f1ced3c0b1a266acc9625c7984c5222a14e1203fda8b3d708ea5fa4760d86598196dad416a6cc2aa768d0c442cba4c0e53df3534feff91fbff017213e60d2d6f6d0625b52ee2cc60e8ca14e408f8aeeaa2cac7f982541e1f02763c54b20f67d424e16f1eb10e1f5f15716a68cbe1f20834e3ee500ceea51ff402a546f2912eb49f7305364669af16448490f543145fa4250dd0736c78cbd2db3e98240e3d53271d05972d4df39c3498a42aa9b7763a55f2f1ecfb3d85cf634b9d173a467fb7d3793b85c22a5ed3ba9a979460a753d45087fe44c764e7d7f78180fda8151a9aa376405eac06d0c56bdcf20dc7c9a45bc726ff4217313c011e4a7c01aa7edd1f445396cf6e288108a04ce68d51668ef7a340a407729dd3ab2e0df03855e929b158f29e67ddc9444f78ca67d14d1f5ff7898f277435ea4899a28f2a6af42f0bb27c3edb0a08c36fefa6c5cb4e74162ab9762b54709b44a9261c6c755d6094aa94bec05b88d0e29a3ba9172ca402cfa9673743e9007a44d07b3bb251504cc581073b5f76a47e7ca05d38c54888a02145a1552fb32f155a61007b2d444898268be3ab19a22e4726c3c0939ae24afae81b14c934b17448e34989683ef9acfaa4f663223f35dc011d1a9152d706804b19dad6040e2b96223a03b79d9907437c8623ea7f72b348e58346d46eeda571be18cdefcf13621ce164764669be883c0fc376e7d0295299c2b6a5f646f4f24b849e8a29f301c46066724aa30aa35fc654e08cdee25614bce96e26f17051355b231b219538bec2f4d03f1e95772f7d2a2fdb9f8d92cc454f2a9acc731bf1e37dac0278e8d0b5962074ffadc0440fc914f4b6a1c3cec16123c1809c6863a12c1192f1a493e2654fa91e55ccf53bc7d19da2a48961d9b5f1867461f82016a61e65fe58205d856bab744d3d5552e9babc070da72fc25586b922bab5c94102a55e73b63ff273148a4de39f3ec904dad0716a9620135ac5619c8e9b9f5150de2e3b0253f4c3dfa5da8cd68e911027dc4c3737f86c100de106301b00b023557592ecffe80427284ac409dd745884876b96dabf49a6366c643ebb8b1cc445016d62ce34a2f7595a3cd729094fee85c409eb97d9db97e621555a596a7feeabe4667697dfa322dc6e51679998773d9aa16b152b1b58aee888ee8a74d99846c143133ac00bd52782c0a1e42a5e2f0ac64bc856a6c7be74ee800ce466873074142e9596d156a2bc7c09acdf7e0d396ff8dc721c4632ae64cd9d8d28b9b1c2a48fccc11c90c264297711a22634b3b6b4ad6df853719af0cd95b907430b6e22b9ac8161d3171a435d83da4ea3f89ec183af1a1c7e6bc0e3864368472a2b36009e1a96a8d27c7beb5b2826f767eea3f646227e5344c9061054feb7bf5c9a5e6bc1c1ea5ec515aeefb55e101065e2cb5137a354e8f70b1be6263fae7695603aa27fc30e8038a7bab10be87220b06dfd90df7b628cb2b660b621c023536c3f67b949b75ac6cf5264b0b3a5c8a7362cdbf9115ca408998bdb2e5035d45d11212dac2834d4d5d6cfb1ecaabbf43558db30acdbe17fc18effbf8442cedbb640324db2114beb71dd15e30f6e839632406b5ae06c162b308f2d4bb1eb513ba539b3ba6e1d4b8b6212adcba601acc473dc1956184d9549bca932272d96551b3a81af950e57e5b8d87ac71963564950c8a32571cea1ed0666c558841231f103eacb609a6b31f0100c88f169ac9ca3863561a29fa7969536cc6d42e2557ca88ecc25c0880d2527add21336b0f236ce26b39852cade43d0e603bed705049fc08fb7d9cccdd6169b41a56a6afb0c194f4918e782fad505e68f68bbcaa9f90d8bf164a5c54ab95bde4f2a6bdbe4896c38705d3cb18919525f11f06515e8ec993fc72a1e42394f074592f8c66b3e3b947243328a75d8b6d9178978bc0a56a8dc159771be847e6515458f555288e3cd34e076069bdb858fb1def9965ec34658fa838b6e86147aa2c5fd418a5a2771c21222638e67b7542320d5e364b9da2fae4c62b9e5cd69467c68fc4ec1ee9cd52a59aac366f5d5766a16e7f041fdf6de7d241f388bd5bbc6a3492cd35eb4d73755603f2458b41ad1ec84ec55deb3218ae7eb8a3a562ef4b111233eea3784af935f1b55434215ee45b429932b7ae57ba6944a5a49da10c754774e65ec0f77d438f22532efa378dcede33810d5bbedd6d0a06cf3b7e7eebe20e8bd423cf5f72fd6d9161e174a25105ce05969edca6739f3f67920f0a990da15d8dd6b6768e8946d23144d2542bd1914f6455e1aa76658e4596f0d9c89bdfabcb22e58284b65fc9728502dfc112947643d087970241142e19c7251545081b452dc6679909735145c871ae4ba0d89501a5baebe190b128d73fc2f7634d6f57c62f09ca02a6cb5de20e61648a43f9a7c267b517fc8f7da988f577566d2e5c971d3fc80829507cb61c4d262eb45ba3f442c9879d0c2a3a50321621789dddfb0e6fd2888f2cbb21bb0807ae7ace806892c03f41fa6ba494460a1d2e4ce53619be16e2d9cea3a1f22af375ac21fa9f92c2ffbab121c628c654e99ef3ac71ef727348b5963da1c78cd5a1624744388a0afa57ea40bdc60cccc601d66bb83092bb5826d9f1328f120fe32cf43c9a49f41dc9f954c069174705c9887acf075042aa2a21214df25676a67c46e4544411d097ee66fa61902bb226a2cdbe34f38d2d52b7650c5f47ef54a44cddf53e1efc70f73795c3ee346c245e27b111d71e9f4ac423d0de3456f59c627343d3ec342171af0888ec0ab937fe4528c21e8ae6e489b1209712e4c14786db770d1aa52ed848a202ae2c4dfaca5486fac80d302e9a02e34cac1fb0085123285bfcc64be8f450097e413e5ff15e67c8a5af502a1f9626bb0aa7edf1f115fab3b28d6e16058173f4f4d11547bfb3f5547047044b75c10ada9ed0ee59a57c875384c6fd5e39578eebc05044566aa5a2c6231b08e24517b65dab06abe95dd70ec272662406f28b639807de85c60c692528f9b91809916188ace54b558b8c5eff769e9f597308421fdf470f1d52f5029bb5a9eddcab090caf762b68ea2435e795966e5110434f57038165d0e4209c0638f75629f3121605bf64240e7150317e469bcb1ff2fb4f49be8756688807e8ce3e3a4a8b172ca3f12b979b4f1835f228b3e2e8568e3a10fdb4e609fade46519c3f15ae28f68f3aa1e2331b8c2553bd4e73c42e25567d10d24769fa8108f80141acfb880eeadf7811f52d048b7aba1dd7f9f98d855bca333af63887ec89312166ee3471da542877395c7fd83b8b418a4b25fa3134c8e43aae04a3c53dcb2b7779c7f74e13defb70ba672dd9748d6d55f1ae8d13b6565b5c2796c0dddd37536736b0863ee3e6a6cfbcc6af13a04084247829c522e5e2064d6f17cf41ae2c2065160db48238bb69b302ff323ccce3f982dfe11e667d69f29d86b70d1dd39d8025a2cafb4f7d548fbc3eb3d7a00003cbf44c1b40f9dc0677323720c852edee9633bcf6c965465691efa27322fcb09945897ea89bc3cec43ffec8fe7798bf2a95f1a05140b7b2ff8413dda3fdd795c1e4469f93d7f0c15f445c9e1b58904c7c40df8835d35bdcc4be6465e398c511b6c4d47d107f4dcff90558dd09b7fbcad372e5343d6c6010d551c54bc9f77de0da443c3eb8f9781d073fee2c2d307afec9a9dddfe141daad927acc37f66c57bd42bc93325c270f2dc8bb0448fa20532a48269a081e43eea7213a56cb4fb48c0449f997824f7c26c8bab4470c25191264dcd3fba263eb1ce5263e81ca6b7b4ebb6610511afd57576c62c9173f6099738efe4686322c3bbd6e9448efbe1586b33c606089523e8fe67e1a51ab4a892e4b1083862fa2a6c693ac4e6a35ccae2f63d4af915b365ae6d1b8561ff12c7112dbec08f04a56362f4a1d171445fe2fc1a3640b4218c352ef5441b65910e8a0c6cbb4e3f92d29b5b0ad05ce98df0973e1772c70267f9d59474f664eb3a2dd94a8727db71648c5c910e436a15b06475fffd66f46475331e4fd0798a1283a6543c8cea211e36c89b99e0119c2ad63b778b60759135cb01410372e10e8849b02b370307d44a3c9462886ca993e7584b91c6081d6b57090784da3b60c01075840f022b08fd29211e7bf8c09419d7d09519591856f015aec718148bb1ed27fcd1895eaf2f6748e98066ac805ed29eaa62bbc1aa4393de63dc12c3bbdebeeded37dff33031ea36093072cb29c75ce5d8550dad61316c07c614787125a593a9d689a97562620d62f9dbb5308002a25183a1c38222a028d6dae70173d9c02f29354f625af412ddbabd337a51cfe851ca6ff6985c61899c7d51861c353a64e04d662abbd1e1a51fca9c7b99ed3dd0fd0402fb8d2360bf034dfd34ee6ece2edff46f6227fac427e4e86921ab914cb9f52b72f5d27ad0925970d6e266cf027b285103d3da23abd742c93528469e68811f9458d17d1db59218ac414cd611a3bff522c28c72b85e74375de9ef31c28cf76630705c3bd1b1433c9deb4377206e0c89b42271844db15bd815a53b2a76873a706ad1f485b2c724d6541c7425b567e9105744f60aabe3f71d738f19149e63d5bd6279b25a4f1aa7bf133d9126da896df698de45a42f5f9f7237ccc86c22f30c80fe0c7a190967810649031f52ad9535f774d3595b9c0472136bdf0540aa570b94fbe6b5da96d0fd144356736c9bcecbfdafc8446d1f18173fa6c1921d6ced79558fc7a906c90ec486a9223cb968a620435ba120dce12e9e199ae2fcd67c402646afbd9f59395aa894dfc023088a232f5e23eb0046ed6811611276170bd074af2148ac9d8f425a9921d2ab15d182dbc1f09f569ba780fb6de1c3559ba97c74aa50fe5a4ae65a49ccd624b67588817faa6bcc21c988b5dc1d1c6f50e4bb340e0a938bb78d92f666498099ad180403f13be01d88b1ee6311193ddf26a448458595eb3101a97ed65d93eb360f646f08590e9e1e15b1dd68f530096e198b49749f838e3ad451071dd5906e341b0be45ffdfeed0f99754d7ac33841eb7dfb076aefc0dc37f0776c750c9074b0daded881866243c14fa960242de493a1ab256b25f9508a71b14d88808a498c934cf3cdeec0c73bc169facccec24dc8be12a040b33c532e1002ad30726997ea8038b4723010c9499c80578d63458f69d3546effc80a5369672fe6fa8ced0061baed4a19bc0ab42e8233679b012900ab9ffa78179a29f7bc50b21bf692309440b62fee9d67ae44a055c0dcdf98d036718fffc03073bdc23147a2d8bb10ad499982d06cf56256a01f60c5b043f84928c6c41e42ffe7469f4cea48a3a56863cdbe506e7409780da50c80585057de00b6f1e069be79a89e8565a48fb9b42cb67eb1448dd3022f4fdb910b5f30f1062e7d30560199e3ba9be7aa2ef419f0442aeb644f56c00d85c839457412ca3c310668686d4387bdb1900a076bbf285b9c078fe41c1b987986d0a33075d83f4542f1c2e6d739679dda6fbe2c8ea9a05e7368b1e7f5fc1e96558521148a8907e104d4069904666037bc44a7743bab9e5b1ec9eb9056f1357beeac47a9461a70371bbceb729089c8640ef94e277aa2ad16cf273f809c1a1b5ff84b812037b6b2dcc30777f4ff4be549788feec0aa01bcd5f3529e7487291878c3231af4d80fb652f45db5ec965039642debc460a617062b58f4cb1b0e8d1c7ee676f7cb1f1ca020d37ce7d2d3bd3ef1161374d442762e7305c6bd392366364e2ff139a0dfd3b73198365b795be6bd3f4094556efed70619efa6a724191486785f812d9511b0bfb575c5711796185124a8343a5efea91422ab335828117b8578ba2bedeb0c6a04562aa381b6a7fa1ff5eaf8cce290680c512f02154c2101861ac28a1305044247d929b2960929222c207bb5c5a772ac30e1f29f63a8e9d02e1637bb85a80e65198a58056f364ea938b0ec6cf1d014863e94fc1ea2d98638ff73c5321212014d88b68a48861cc4ddd4f2c79800ef13a632f7b8ab5d7646cf20248fccef2666190261d06c8d823780192ed8d66a3d6fe3e010bcee651dc4bd96f5bdbcc1435020d92dcef169fae08e6523877240f5681dc14043f70dd01e989276908d081a00dee04b300b29eea72237200c3d18ad7d33d09c61f37120d0739d7b344dc8831bc5e56fd5fa7a3e41019e41237951ba2f5aefc07821c8fc58b9d9828bf32245d3677c39b2e506d8e209260cba5692046ad3172330ac3cb380a1bc6afc2c4f762561596083d7036e0910c15fab3ca91bbc0d3a20579535ccf59116d92664c73b2fd52336c8ff7dafdc87ddf8ff49e527acd702f3dfb2d7b92283fe5fe25b9b2ff610d1aa1a830ce5be9baaca0690b86026439b68d2d114e265337af3895693fd2fb3c624d2299f8a07e4849676e899eff3c331e6347daf1e2e327c2566ad30313bc19b7b2a2574f481b1130ee1f4dbc190d0b3b33df2afc99ce0429869996713737e3e6f0b677c581494c9ba7d86482b89ebcc7be5953d0d0d43136af86f75f6775607c7360c6252c4efd797fb28de7119b011d339c4d3802e1fa422fc6642362478e5b6002a730f65bb751ca9f4a00a0502849d028ca005daa41b77427b201702454ed3c96e4610bd27206afd7785826bca53c45f31d8988286a4d6502c1bef3df50cc11786d3863c6999b3cda21530dd8a0b74e1e0c8821fad08957260900b781bf735476adfe9670da34687075010cdde8a25849e2795560e50d387169efa6a5f971b046d570638dc73c5f61b7ff406e3a9e096dee24a8c85084bc6e5a66cdae6517c992628870d3f3790c6de62dfc096175483a31cb51f33bc70570633a5506459c9f876e94732b6358004842ff4e868c61c503a3a6777d9b42012710bd526fde8b436c5c91de602dad28f0a488864139d6d0367a2c01b3dce2ad0e1aae1aff190be657bfb72a528119ae1bfbe00c0ecf563d2acedaa3aadc9765bc82b82ab97b007b60f8ae4d598ba714aa97d5e0160d065c04c9267c1939c762c7a508e4f0c14c76a850b7ac68ae86df804e48a96b5e5948bc34b7420fce266522513a258a33112b4ed0328e7eadc8ccde242c21becf41689318afd5118472393fda662e6c6470278eb2c747a04386e1973d09585d9b526dfd371ee3c030bcc801de784cf4c0f691c4f0f92c8706f4aa1d112a86b425fddf0dacb97a1840cb7f36a9b2bd47ae89a0d48b2534f97654f85a3b7754d0140833c53c5a65cd73a20e0f7c3b1faace359143ef27bb8ac4a31909bab89f36bd253dadc644d8fd1c969ed19db1ce43553d03610462820004f742ce643a939d0b3723a016d1359edf06e9d7019825a86fa0378850589d070c38f396d129f290dfdbfecfaa8782cdd29ab151bab338de521b423358ec81a4a8f6ecfc3ec297dab6c5b453d62e3cbe6ed4a350bc67015d53b076047b2a9079f5bfaac9d242c73e538a7899bf3105471f7f81099cbc4cd722f3333692cb93aa928529feb810c188820f59963db64e2d05f51e2ea2f0ba45aa6e385aacd9fa3e1ce1525d88b2ad2d636a427c7a69e0c6e095c0aca8a7a2a28922ec2f5b84b78077e4b03724a12edef0f2a0071cd4cebbb32b212f3db948d4ec32e57921543ec71b33456056e08edc98aa1b31805c79ade46bb871e43e5fec508065424fed490dfd43b9b2b784d6a8461c5b815ca9248c1515f9408f3e508c9e32fbfac185424edd1cd972ede3761c5d0530273bf124525c80bcda50eca56f561650e0f4993e99551ee01f24e90b505300d3e3a54dd60f4edd6e74ee9ffe6e28a08069bf1df7c6b3c44e8018d60e8390b88a4db96fb8697adb56da229614048e166f56fbf193c385102fe25940c4da10abc6c1942595421adff5740d9214bff5a1525b3adc9e24998cb92753214c347e01987357eabe856c8f3603297af43cea3d8d0254e5f42eaba84bdeecde5803c91ee0aca9dbff0aa401d33f21a6e2e05bd2e6f5cbfbd486e8374f8f2470dcef535a80311c1425c7ee90aefaf4f74036c4c108121ea84608e6431d81d66103683310a6328188631148cc368402c8abb7367b4c4c26b8e0714abdf1bce2c36a835a918bb68cef49fcb75ee10332a0de7b166614065b9aebd40a726abacbf332a73c1fb8114ddef6b0531b08ed8ac26367fb7d1651691f96cc8f247090e0339ac0e54e3ba01522197f55e1b099782d65b2bd61c50f6ef628822be3b3e278a91a9cac7cf4c035b2b0ca740e8e68580afc8d147b64da9c79928f1c44751d29c52e9aa40c14a53d3022e7a38136271477ac384ba288c57118116a5bdc43526a36780df129d7fd1be73ecfa903434c9a106fa465cc142891ad4fbb8e8c10aa7475b4eadd564ab38a6a1298057a473a59b4856d8adc6377c28f59115a53aaba85400e065163b760c3360fb4c34df29676dfb68e5da85118b6a5ea2a12f76e1364e1b83803df808d69d3bfec361a5dbf0d8419d7899df36c62ede5de78feea8480df433aa3cd21fe02d4db3f5a47a6aa9b06e05cc22f4ba46367d5354c7a37045300cc56915c9b9ad7f22ffe789bba9956dbc2251fb977c033d87085b523c70efc7852b7806c552e4f2971f99e712fe5efaeababdbc7600770847a6fb40500ec3159c47da55ab71e352d26870b8f4c2c1a00567c62970ad1339dc5b6cea63c12565c51a4f600aed6511c6039bf0454e0b295eb53913009a6523440a236180fe7dbf7128c0f291da582c61634b5ca560bf609db1e314237aa5620f265573447c7a15253190c55e76b49aa1a5035528d0033446f5789e64e749b2675050a8c2be039c0bae1299e8bdcada3bf8a1c2548357ed03a3710faa4b8cda414ba13662a4a9dbb84d014089d562007d568b01f4d9c69a2ab780a6b19014190b818de0ba3310e6d8b11a90e7f0524ffcd900bf9e270b08fb274f191fed8a446bb566ef56a8f435004bddcac1ead15fd7c2a27f22711e2973b72f1ff48f84aace9bba16b523c5c5600463b3c9ba7f1cf9e832085db92994dca750c78988e5884b4982ba3fb991a4cad4526051c8cbc38de13314be0686d59cbd83c877ac10f1e270ed89951ca9d5ad1356ac736a014150ea0333219e34c462cbea48f0022bc7355821583305b21d8026d5a0d280ea19c9e535a287ab941b56c86b25b82e30fff28c104033438d22547de5b6e5befa7e770f81dc2f907b0df0fd6c40d4067677e19e3d4909b32ac692c23f1ab4f5afefb8c6c127bd27f6a7b2fe6372593899d2089c8ed6809e6d59988fecf4058ce35350ac8188aa4dc429ccf01db555d1233b450a243fe11e1148ff2807f83aa3400ed0b08ad65394ed4acaff0fc18cdf5a778b5668297f35f538f6738e4348b92006cd693e608f61d300f27e38634541b94fd967141c5308333de071b251dad049f1a51a12c5dd3e69920f66c566731f3e438aa6abfe7daa4b051d5ad7edce8783b80bc0783eeae35012560f5bd87afa1207d4ea02a179fc5ec15a7a58fd50368cc7eefc4e3bb81d72701d76a87444d3a865bd33710daf9516f69b6d74033388d36123bc3b21dfeef83423293b9da6334d38f596c03744665608603b328792301beb024a3f2f88bb56c88c019816445b6e0596081a73c13f4f02432d1bee1b74050699798141287fe042933e3ecbe312b4c388f1d92098bab48ded822813a2f515e1df6b4c39b2acc8e763324431613b425753645b497304c1596bee4d0eee6e8d2421559589ed4b187d6cc7645c6d522cd3e7a4fb47ac38340400ecf29f76bb3e0d012e662e3a23858887de9e97b93f8909fcdaabb5fa7b0efd6e26b063317b935a4c1c73e2a47346ec1ba2fab5a43cd1c5d781ca06736b2154db4faa16d2b68fd9973c02be1a840025502b81f7444d65ab0ddf684e8234adc75b209cc46b90855d25f4b3ecca484358ce80903b49b6aaf620c1d56c59faef357505534de86b69812aa00aab9e87c52099d4b002c286814a2555472f35517f75b9bade37334769ed73ab7b224c765399dcb11ab9670ba7010a7e2f0255f3844692a08ab8cb49b7d0206ba2abb72db4ef8a7e75fd5e3050345ca66ff78dc0b747211d01ab9fa2476af35bae23f6fc5ad78c0b1aae2c8b6f96caf82e8eb07a83456ed0d347a583960ea5b28b3eae4d40c3edc264ce6a7b6c81e395cc82fb3523198fa2a6807035d5d93b712374f09378058ce8c34878a582fea51fc71ed70155a831545804fdb6fabea30d97ec44b4d9418f1879688c850fb0f283fcdb272b9d7d0e2596076a8489b06a041fb0debde04847640b5d2e23096eddec04cefeb720e92bcd44b6ab3099c739386e4bd61a293c7708d5bf2adb531b46b9f8671145d334003dbdd58a2204f9fedd1f0c0e4d0f5bf8cdb7c8820751ed2a00b3662d4c3259414e46494f441a3a0bc8ddcc6ad6c8393a32dc64cd553eb80802616fd7a671c5d01c3141971a551cbd090b54281a3d1781c475b25aea05f3e2f14fd391806228c433cacf25e4d4a869d0d302ca4150534e763120e3d71e0a565768a10c9b16645523481301a79bab008b0e44ab71c41f808ca09ac3d6f2628c522d4193d38cfd7f66cb91214d06084764c4d296001ed5cb4d9f43fc76133476fdd3e5e010c641e746486cfc3f4bde219ae26fdc2898839ef70f4c05eb2842ad3ce74e7f35333aba3d12906e50c291969101c051af53a770bcf1d583029c4ac9b187419729ff919e22fe2bf10c55467252aa04f991fe0ee0404354a43998bb2885540dd8c4569b9aee4499e1b1c6ba30cc0c49c2cd61bf6092c6109ee9585527a487d3c1b7e3a08b79846e482d8a7d2877635053744d068caa9fa4db45bb7b0b17863a735111b7f8a6d4473acc38d1747038d6e4350d919e4d5f965a743ee09128bbeeb204e7719b00e26bc57a9e37278a8f867189f3d1ecd1fdce609799fc89ec2a909bbf4ebbe626d1cd0ae7c874b0ba5e10ea9d7ddc17560513c41569281878aaf7e97256a4f3c3a6b94ec29adb57f25f123eec6ef101da01ef8ea445e2470d54332eaedfe5bba6e9700315d0192ceb84fc8b7cfd9b0232db685b9d05d9902f17d42512e06ec83bf3f5810bf7b29f7c59f48c01911106062a11998fa532e8000986ab8e0e5684e3ef3cd93567e2c721f585c8024631f79d4ba576f5be99ca32cd5c72bbab210abaebcb49de30a2069e9a98175e945731048e8ad4d9eddf51b561e0186935679fd2e97840e435d2d255927e8b15ffce0065c2bed7c34942544b914c1f4abb7bcbdf584030ceeaf59fbad98e3b4228eaf1c1b9b895a966d5ac7a326c3c6cd0a9e57157753410a7326ad0a3bff23396e78e38473bb503f72a048eb5455c3c7e8122b2221eaafaa2dda0b832c2a3772deea312138622f1bd8d792e0ba7b9531573a6e49768a92f640c1d2b0260521d0607c40aaaa88c82f3fc085df41438e405ecb3ccaa62bba0d1c87449cf1f007f0c0be567ce456e091492a49b1c7c5632c93e602898fdca5844f44d34a851e3b527adf39b10010799f1db925e15d517d2d408ac07f2164a9ef1a694fe345816a0d72ba47566428d12eeeea53e18977dce4f7824efb3f9eadea1ff6e215943c3d10c7f4781897264eac5e9525eb11be86d27094ba34011884c3a95d98fc91b39e61f6359079945d69010cb2503678c94eb7652ca97359fbd4c5e056ae33825b4e68caef017730a3483ef847b66077010fc8e78f7a424bc33f83f7b64d47a64544f8fe34b9e3a7a7c45661cb0fbf85133832e9f590f911abf6673d77f735ed416cae00751af39337b84b86969ca07bd684407a5bf3e831ed4d0354517504d45f6c49127df0e97130017e9548f140a62823f503d40975c7a97e4e9e961c5e04c49cf221c6030d57f9c9dffcb3ee24f1d70c69a8667e4fee31f5562093374ce2f6518a89efdbbc70e96fa91a1be79237ff78d10e5eb69d06a5d0a9799cd278629c9fd1385b1978143897d221f174846afd8ae5506c92f2c5b7b08cb9da90199cc6fb37b39209106ddc2af69d30d15e230ca2444dddc3421e9c1825f2cba85ee3fab35336f8f1f33311c0bec461e104cf538af8123c9a19f185f00e88754434b6e8fd3117027285256fd0289c05dc40386a671b772db342b97de57db6ef5299905419cf1caae26253bf1e497c3f526cef9bb5921a8c0049e8bce401da823e5884cc0de36cd190e06a9ce6d6c1754b897860b6ba9b0e3abb41c9f8ea148f438374a4c233991a20ed7f384526a0a5592114a352bf9853e8f2f9e5a394670ea6ac78f86e89db70ac9f43eb0e0438fffd29d3ab1f0cca20c08396c91d1203c88c2309bcafe653d1fff6b822624277b281bd21a252c70f80fecb9b9ba7260a1b908fb0fa9f3eb45770e66efe7dabe1ce0fdfd1ce1f0e725209965277163be2b40220c86a30910b8d01cd88e7cb863ca7dcba548ad6a65f9b8672034ce3b03a6cdc85df294eb815cd479f8cce36f74146be282e66332dbf4d206dc3a0456d3136a0afef2d918060a612c1a976a21d0f3839f9fcf35ce8331783cd5c50e9df0e06abaf9d9f61fc35e1edce5201b76375fbb1b09c0f0f6d02ab9db8b842571740cecad7868db18f255b37d0cc45db9336f204411dd622f50ec9023233aa9dbe4c7d6c1172f123804f2da74dc37f73afe599ab52c2c6f091267a3887e410b1e0dc82bc2db5558195a87b0c364e408cc230eaaff779f3678ef7378683ffa5869e55f2dca02b2f0f2ea808d1df79f531cbeb510a4a1a4b6e0b4f958f10379b0079385e15c8b4f0417cd9471eaca268fd3e93f76fc32245e42700adc5e1ec67e71357042c1b38196e873e736c9722dd40a05b672e12f6989af9915ebfacf4e573ac5f5d4a9353d3994380bd61a0a1b68c68c4e7a3e2a91ae1a770a821a6abd48489912eb14cf8f93e88c8b8b0ef77c39e0ece156642e42d9eee4eff0d1c08890729eb430283c83e0ab195404907d90a3a1abb6e8eb85fb31e833361c4a4eac7ee2edae825cad44c3289ab993e441875510d500c56a9c81d8bdce67164b3647437cded4f47af3747fd260014de258f1c5d1a92c38a43f47f736eba176e2fbaa1007d8f0a4235ff1b781a324cd1fe8a3d6fe857041f5c4f1cfd83ec3c5db0b67f91e7872ea1d189f221cdedc8ec30120b7018f7b59901f6aeab2ed20aaf1155f5b6189cf2f7d1773c6c5d201e92e033571a2b1fb03991ae40d523de03c75584721fb8b57e163a30d3fce0b59c9a29433487f01c9635fe53a30bdef0acb8071bd43e7d5bba18db273a1f9c4de15e6b341c86a878fa19089905008d93bc2197d2afb0a408abdf7590d85e83f0f51e0ad686d6d8ae11375d8359409273ece58dc3e6e00f89bcc1ce9a363efcfe16700a073b2777e4bb06e4d3765efcd7f969ea5357b8790aa2b2c668e096a4c13ec1d0e7bf265f788ccde212ad2443ae94b52109b61ef7f721d0e92bd731923e5c1008b0b811589bde3a4bb9ac5e6287bb76cdb344ab3562c2bf60ea2134f37b21fb8dd91ad1c696c51e079665de40cb0ec5d9d154667673aef774358a310f703bc7e1df8df0e7f3bdcdcb2c7daf2f48befe961efc6614690c119e7d8216ef6fe15c8f849db3cfaab290f7b87127f7be05520407e10f848d9fe98b4111617c5de1b6a2df1e790157ea56b7ee035b077ef23b4cb3fc603e06e8d18da8792f0998cfe48f69e4f8b2279176e04e1643bec934b9543f30dc9aedf42bf8d0dac65b5abc98e571c36097bff1e9909437919ebcf7da8c9de0b88fa77b7ac578038a1aafc9d35e7598029bd7fd11f99a5c60e85ef43037bafddf6f5eff63acfde4bcba35f97f10deff06b7ff20f17f6e76b0b886cae9505175c6a4f35ed4295cfe74ff2cece484d598bb808ae2e7b1fb1e75a1bf66e438896a29bdce2182e52ef5eec1dccc846eda035efd4afaffc325d18a64c48f52823f3b54b947b575b19a2d8d8fbbf9759ab4ffa50ecbd70147d12aa41dd2e4864e75cd83bde1848c185d0d0495b5287d2cf8cc690908036a676d6d114155e3a86081e800cde84efa261b871bee60d5dc4c58520a7a6a15c181109a742fda7348cfef0bdb11aa6c85b210171a80bf88edf7e0ff26e9d55345af07deae9f379ba6780734dd1c2208c519d8d8697922439907a868301276c3ab4e84ee8c16b85be7381d0bfcd54a2d00400afa07fabe7e567cecb4cdf5987bbcf9834ddb0e8bb6eda59c818fde979594adf79d9dc27305e6fd3a739563a5d95bea31ed5ad053b9e00e131e0094f1aa63c6314574e02ca10d5593f235258e9b8429da186a7fe944d7d9313fc8e6b5cf7b5c426afdf0dbf1707747d08bf1fee43905789846e561d8dd1eb64b9ee8b5645a1e9ccd0ab4b3bebb58ef3be27b0af5eec936f892eafd80953b02f78e4ace0efbfe4939669c5dfabf45c8f816e6dc01090c4172d53f0fed280fb9041609eae6a278e4e54e79d319194bec314fd38d9c3def67619e5093ed0eb254d35da3223b74027822f6901e017967410e9646f917183cc954c600f409d7c8e4d680169aa4531c1d8ed85b95fac2f9eb6ae4cacc7f04ee23e5f4f3d330271ada0d43ac5d6c4d0f4173cf03f58c2134bde11d92496c7e3ee781bea652350e55813ca63838855aa1f48d8b622f6e1686e6ee44eba0e95b6c9896a382e50d87cd0dea84c3ee781d8b6913e2c6e0222b036d4ea9ae56ca762eecc262a2aa0096a471baa78e1441df6ca8496d30f5261334959094baa5c1f61358fe21dd4f53f88ffe65b1cfe4d7e367fa554537177608fe20e3b0067c7d41e2c3057182c2939d43d245fcd51cbb4340185a3e3b459941c9f83fb351e3ebe61e2ff7c409dafd36b3ada0e9744496d333a810df551a42e1b00277f07a0d684f60da2ce68386516caeceb6bfe228ec7afb5f948099468351168b1b0bf6e8f8fde619fb63848459c85b248596f752d53cfafe91731de7edbc1371de366e96b502bc4f91edf62162b6d7a7da77139c9242a8e91839aa5d1ffc4329186bdfae1e621b6a4fb3299a9a432910ecfa681454de13893b64433d1e7d550413b58bcdaf54c4eee07d3eff06ae18367e3d0e5e9cb35572d3ecda86613076aab2ecb5ba8139dac41695838e5c6fdfb9daec5618a3f14e1992cb546d6dd8d4b72d84871462b3d5aa40c5bc76f3446c597502e1d08767db77d07888045e43c984f88dfd7e16ab73930d1ff6f976d7a01833612eac3cac2b03b034c597cb2058f83725155424f9e54c61d0937582f5e2d69cd76cd9388c8e7b686464b5a0b282b8082ab5d5f8e5f7f580ada7fb038418004e5e211216a557fbd7e50259c2832b6e79d85ecf139428d90863b9ee94c612e13f6433b11f0952c46293097727d62bbbdcf96a011e368d7d121c67ae3cef527678a4bfe3fed356838c852720b2d090a219de7e801abe3a70fa98e491d86a53f9e9c2fb419613f9959270600a907a2edbf99371395705655185988b06d72fc96290c124327a506599db74d07fdf815f307ed0e3aeb11615f2a6b26669666b959cebc81448e91894fc8c645e9550aadb4402a336d25dde0ece25866ccf9fb6d0d05285ed433afe836df07730fd094674bee2924e6423d9d41371f0b97f0f86b04466c99ce85a47d96ac5fc30954fd5a54c3f66bd4bd177f46cb66020fa0f71662c2af4e0a7f49b6b88fba1bd24d74d2c1eaec71a6aec270fe6d9f0b3635edfe9206af4a4b353c88be2bb47ba3a6a1cd5af1235c6c2b621167d5ebc25c5ea3799ba7c9021ece857af477a14307689f170e9e142eb33e5a36f091a11162e289c72f969fdffaa39db83c60e617e785ce8ee9d4431feb5cc93af72f19a79d1c48757ef682edf11e95f23def5492b58c54494b120a84a6eedcc3312ab55111933401174811e66b33b9a16a321b8b87d4281cd5b8d03594fcb2b0b9b43bcdb77dec52ad3509984978e996f7a968787560b5927e716b497e203589ff5de8e08de9931b031a4b1110bd3f355efc56126e25698085b3b169e7cd73e80204a58cb0909c06a9060d3dc24af69021ce7d28769333d03e0147b7cbbfc252a38b8cf6d2aea100975e812e8083603589a046474c36da9df0056736a84e433169a10f86f001b9bd1c65b54e432b9b2c5988f510f96d0a6c13c04026beac1f3a8e52f5a1a2bf2c06093ea27d869710fec01d86f651ce3a662192f6dc87727208a88377c0ebf3aea4a126ab99adea856ea1bd3ee6da8d6a68cebccfafb8d095c50c6783e9931d791285418b76789aefaed4e546e1b586cea2ce206d241ac140f080dc20b10d32c81e903109c61b5c8e9285877037f4015b093b28a00bdd100ebe333d638e2fe410994be0d04e735cf5df3a41d8b890eaa154fed28640ee6d1ff242d7b4340c98b16aa346970b5d4015bf0ad7a27ce602268af3aeabe55d5c308db981639f80ba751b32560a4466fc00727f38a4636642e70c8025127a98bf664b6f6e10ee90ac6e82e1e0e4c162af51e643f7280f227c80933faedb0df8d5bba4d16578fb95a631d8911845129207289c8bc29791de5c38dbf452a582fcf8eb079d38c0f5f33d10614989f6ec733c4b902e233bb63c89980058691c716f5c9cfe7274828eb9163c9d1f06cf96eb0605d3980d10cbc4e164426da591f246066b2e1b144ffdfbe015e128707e58f6378cb5aad0f8034d15ca1ac748fe7386bfc8376946cce1f18c52043a15562ab39e8d1d84e9772343b904d5da69637297cc8134817c541e897fb059b5069b4902026a6d3eb7bd367c50abdd50e2fea92261a82c31e12cf99c68c26a95319e4f066713fe0e42d4157e50962cd988910354572e125289dfe066f8f06f08000dedc9411ff680e73b6aeace873e4fbbf2880bae2ef8c10db527fb0d8fc1a1ed4bed85985d00642e641c8ff682b6f4c74dc7ae11a2abcbc9d8d01a158686a54079c6ba610cff4a527c4e12787d7161d7f39fa189ccec5dc61050fa34944b166cf04adc3e97e9c8424ca4e66c4a467fedecc55489eb380178f79412c48b70ac4d484907066e2ea821ae29d3d5c2354de2759fdaf4d02f3203f79329c1d9302673ea4800c8acea6f05517fc173d2b5571698aaeddf072b83c85a9467c4c70fb04cbd80bb38c3a8a20b5720a412a08a8d11777b1a9efd67d48cdd487731fcb9416a09940ce4aced6924050e7fc1ab184f415c3adfefba4c67f8c3f1de1d30942589c55e06cb3206ec57a3376c3f9086dc03fb85b478b93e6f9405b05c05d478f5786a971e7ef41ef9be2f8520f7b207c4e3c863eff3ee05d841415c8472d0b85b01c66388ac380d038b07b9ddce4d6628e3d5383d9afe6230ab995016d541f21700febf0516e27bf47a2d30b8f207e872c574193f28cd793cc807aee6da7ca2747eda171cd2b977dd4bded98e55bbb1d84b11b615cb1b6c6ee45407dffcb58f8d3423c4b5860da956db9b8084f6e41b152482e54e79599e40e3440e1f7f4b96e724a7f9beaf5b503d1bedb40a7ab12c560edd89b0c986fe1b477e0774f581b78c28d85cae35cbf659e513dfb3512b37f9a5e355019987e2d280533aec2402a6d0d98d301158098dda4b8ffef8048753dd261264b688fc4f84288e2537d1802e869a674d46fe09378a05d20a46100ae066b0581a0fcb3853aadb2ffde7c40ab8bda431ffc3a194ee88eb7e442fe78538d4f68f347f0d714ec0b76eabae1ac4960d236903770fb2239f42826eb2e96f94da3f4aef474aed1b31ab509483e1aaa483066858c8a84275cbfb5d4405da1c95321588fca68b570e6708fb1618f2704ab7437d7033019792c10f5794b4a009c26783decbf3374b832750782b25cb46709f96163921eb3aead3a84b77119d01f78808d4b6c41e8fc013ecd82322c00326928f6794ad5f848fae37ad65941ef98d36e1970e46161282dc01a9fa04eaf94702f05e27633508b5df018b2cd59a5e6d8e54fb77ff1dc1c8cdcb82a4da96265520cde735a80387260dcae2cfe4680b60e31940bb33e1f79b3d224c3d335ac01bd6257c71a5c1df7114c4cbc953ceb27ad424b04cceb3d7094f3ece776afd73e4e737a65d83e77573ca2de51af92e70e032819d14d1283b84579b90593f1bfe7215b547b33408c9f7adaa10ec8f88ec2d8cbf71bdc8d76b9ba906d65ca68806bb94212197523c7f15ee1c97bfe057e61c8945636679b286823b33cb0d78965f8ca763affd1f6987726361d0e0fb31bf7a4ca051b14cd97ec3e0091ccbabf0cfd7381d91f5bcdec6842567db807d8e8a8229107703344e33ebaeeb09481669e63f3d315caa04689e808a7f6c3c5c7da3af594a65383d0f132e0699433f771aabde38f438e77a5ba91b15ec45d436abfcf2ad0dbac23c7acde1dd3e3d37341eec2a45a6c071e60a8548a759eabcb80133fd718de40671e06af1c70bea755543ae8e46b6d1d5d734245bb6fad847ee53516e1b1609578a68f7316bff27a2625144e95244275dfc9d1642b19a6a1904cdf080b52aab361deabb75c65ec5d92993fc629c7bd2d4bd8bcb70b9846e5b609ed7b37d477185711d1d57ea51d80171a265d102400783da8a590adaf3097876be480f6bd7921ffe39297305c042f7f1199c9528fa9c23c7156073cc033b90c8c988b2b9adb541c7c1c0d1794cf9e8ee5761688f8709b3d9207d83926ffe632e3af97210916460c50317694012379a4ab963df53538feb8326febc6a1da91e288a2d2446b7b118f67d3b7d8c86fec88090802386b0b10fec21abbb0c96d6bf4de8cb74dc78700164404df084f1de6bdeab0ae22714dbf57b625953ae922ba870488be1d68228fa187191f3d857cc7636c1df67e5958c1f77a9b051620dcf96d6d4268512b9d022a24736bd340d8a60bbeff9eab25aaf6549360c127ddf07af505638e06ab819adfb0e26dcb6c74fa7b0e5f72761aefb57cb79879d29e01a3c78e39339d7b3a0b24b299f6205010cbdbb49226cd6d284a53f3078e84f905e1bcd098af23a20aee1b66d0723fb8c6a47960071806c518f2c96a5a1a0294f6b899b6986547eef11d83ca2549e76c3dc185710503cd4ce1d59fafb98818ab5bf48b4b7947f6955e88129bd44974ed1e9be24e66290a03f064aaf77da4b44f460f013351269a47041e5eb80438e52b8654cc428aea349af23704ad31d089cfce807e380cf39485728d3e8bda083d274f1452b489905c821ad51582e2897e3569178f0c7eb2946a387724d19f91488351ce6c19bed4cc267d3243ce91480e07f1e605ae44c359081c75c801b42c51871f60a8f8713fcab205f6790cc759092f7e34b56446680c8139ad00a76a917a63dba058cef817f7977df37aa3ada0a6dc64110897c249c7906eb37db5115dc797ea45da92952f0d0dc6efb1596af468b92a53c9c363af205b7d74ed06afcdc0d4f1a5671230ba205e94002c461eb7fa97296b20ad290f3738bd9470fdd14bb0f4900689d2d575ae4316ea17a3c4e0da71f6180920258cc184562bf324ab40e3122709977291ce7ccb295e46ed0796bd56457707250d550f320f79b42938730804677b9f56eabdd5e317c41d28180a4654948b74a26b7160c0bd05135d95db0c2c64f7133d3fbc1a021855146d9c07af41b46fae4b4a96af75c5fe838317070224416cc1146003d1c4aaaf3a34c6c47a1e0cb5a039b578702e571ba353de869037adca6e9c5a79333a4832c7474462bea70dc75c1c374a90d2bc684f31c8721b3a91eda6dc28571d2b926602a62c61d9f2ad3a91f1b91f5af91c560cb59f6086e3865428f51e34311ce47026d2ce8deebe2780d4abb27da171841023bd091d367aa57eb03f1455c323ac473008004385f7d1b7c5ab859c067bb546861dd64bab18b8fe5a9dedf3dbb82629bd29f1ff100940e385da339778d81bab9cd02c6e7f134cdcc7960e7aa292f69d939e336b8582c0748bc3bf18a2e52bcda892962cf429593b265af44c90d8ec8ed4d0d15353fe9db6eed84c7d8cf4e2dc29e1875a06b1b91059f6fc701e2400712cc84941d0343bbbaa090187df7a244e668ad999d332398511632ea7b9daea6e0a3cde4ca37ae530e5d17a1cdd43337969676c50f53f78b0a05bdb21eb8620a6cd81dcfc6f4094025c51d7db33659b3c419158f254e257b80b099102ee885de7aa7cc7e1836d97006aea3bb480586959b417b33c092e82825747bdd6ab0b833293dad5a8316bc4369a02a48b97434af27fc8292e3410530cfafbd383d28e0ca265177d4524c82dd0b9e6e2acfb0a5b25a250f9cd697a863e5f023285762be05db0306fb76424832035976b38f7c4a9db7af6e2ceed3c1a379ebb157927fb14b42f55c4b5e06198397deab51b24719de3228a874aed2a75781105835b590fc956efc6076a0601e6272bc4881d948639444b84bac2c855e211f63438147125eec25d51131be7dffe0164627a4f35605f8010ed7e0f806534427f511388aecfe803d458c7f83b715e9097e4538ddcad1453782a87ac8fb5ecd1f047198298f7ba0e5fc171f07de047494590d4a34f2fe31d1c42b298aa300d529590630b1422fd8094875f8db22ed8b297b06ecfab263d40b4a36065dc1aada805cb6ef2335f5d90d869388296b94f6204fa1d0eeedc1db5b8776800a967478635002524f0f6141da2e6e2f3d70f04400564c42e98c7688817969e1002105171e38f6a011447c11c739b66701a0770ad85d0317cd7770edb50f0328f1e8c7df5ac2cc0d72d2f344187dfcf04eb5a1990813d62d081772227c40be1cf78b0e3cc74d45c1834fb8f162d3cad0b4f4bac7c8039aa86f46aa0f6f86b0cd8517d041815da32273ad41580772f0e070fad466a17ae8fc70fee7d84ae927a8789f7bf6a87114290e27bfbc51a4bc08daacbb0e742279932935e6c28fa508b7d22dcdb1a5120edfefc2aed39774da212a7d63eb4a520431e919a221fbd2c5ba606ba8f3a27d89fed80214e53a5f550b1f1f7b4fbdcb4b8c3959ce599bea7553d9377192e6158116923cd5eaf4eee97a9e333b0d71914be24cba840fe65db262896f7f097f96a39307e7203ab63b60d98ee66f989f41bee2369b521d41540a04acef504b32a95c1b533d0c14ffefe2b9f5da4a3cf03fa71b807dd3b92cf05e68b54e661cfca9f2d1e16481a62fde24f53b19179c7b56993d89076eae1a4cc046e4e8e6c66b058eae03a7693b983ee0339df135580bc14e6a77b0912e9e8a74ffecea332b1f2d5f02e576cdb85e1957e5661fa63f867526cbb71015cd5ef6093d130ae62a536b7f75cb2d60058c67f1aba3a5ea9f7b545e8aeba97297b956977ec1b48d16ff2e389eee395a99acdc5c6ec0181661519602684603f09174008bff8451d175f59bb87eb59da04bc49b11e7fbeabfaaa2bd28f34bf4a86ed2ca5b9a1cf3030efbc5d35e08069b95702d52a100bccaf7b4d9e238f95b9f1316671a1d4b96b24e41778bd8be685cbfbdf58efdbd14b6e598cd19816dfc3cb75f899ebd094175df7e4ed7f3b896a9d2507f62040dbe4c574fb1e0a1d5f79abb4b82fa33a60a78a6f6abbdeed6ee9a26d3f51a838d698425b94506745d3b1d8bd13ddf9dd6620317af75e7b2e66a3eda0fad7136783c1b9317b79aa7ac3481eb9bfc1eaecc264e2a34d5a7fca085a727f80a74db8dfc606636ba8faf12f7929b8391952a423c3900da6caf356d0712d7a63ca406f9c1581bdc81fdb3452c763a7ebe742f6ef1e0394d9a6051f73491f4dc9f09f7c3124c9237ed43a4daed55b4a054ad725f42f6f6f2e61eb073c77b79e39cde8132f9c05390363fbceed62d46b35074721048d4aac0863569ade1716c56b027c05758edcf6dfe2a4b7665f2bf3a5d65ddd973ffb5351a9747705437774d282c2a4732bdfde9ff766b8884fabbaff7f9c0084bd599107c3de64ab891c3a2f4f08c2cd7bc99dca929e4478a916c6b03c0d9f8242503ea1df3f07e305e73bc5ee82178bd8475e94939171ea9143d789817b92a3773ac7de21599134a1380596c85545c90330a697427db91db50292523b4c3ac99c06e270767c3b6e0aa0bc5272ddac23380fff4d05995f0a47a00428078994a1074dce78192c8d1623533f1520836e82a159384f5c776f68429a5a0e8ab4d49928f2e7a8ff8a5847429a4a563e12b26508061c3efafb0464b57626121798c763c3fbbd0a07c49f5d47b75071f88d0a4c63bb192b827405da763059e913bf4a8092e269842ffbc39181531f10bdba883eb796a5af1050e785adc6eeec74869a9af9e82ea93c37de6aceca920a102af806071954d2dce40d58485c8d032b22a2365331de2dcfe45ef1e5b6e2fd7d5ff157c444e0d3f08039a12eeaa099ca68f0c5567be45ee378369792fa76d0769c35e907674f8d1975949b4a75b86adcbbce70785b7ee3dd403e87cd2d318721400a1ca137ff73130950f7164c4e5139b3561d03d6d40b3ca06626a39f09ed54e8855da87c129932dffa578043e0e7f1581a1706302ee6b531c8c3a2cbf4e0e3f391e50be1a099245d983ad9931718cae5a21d5120d12bb727698e896b1cadb563100b714a0134c0404e0e24a76c31cd8cc476a00ed48afac337643aafaad95b288814bd202409fc30428ca317ce0ea4740b9df195bf4654f1b128488691c13277669663c0305de4944940d521070499c0e703c8410e70316154ad349c8d2138ff29c4a19f461514322510c520435215b2ae196726d5076db4976936fab643148ecb0073a7ef847a047e8d7a98021f4566a58e733079cf30b215424602329f20c7d0d720d3a74b38cb1c6182cb0956788bad131cb3d1e23688c96c64e38b8a3b15ce7470507aceed34b1cf8b44e9e1f935870c0c3e61697378802267f15bdcc72032819ff6cb9c1d68dfded9434cb0d789ca6fccb797cd9366f9d5ce2b8a2315b930da280398e2b1bdcc0434defb4c4064fbabb25b538925acf0638343a9e37e72967d8c4a46e83a671e6fa6254e9c66cf695a5627cd1307fc199ee16d22c62784f43f91e871da572921845289da995e7fa5f2b823f4c62f0e8c6b61b27ffb7ab411b1b66c59d8df5f2bf58bdb32ef37f3b6df5b506a097e34b4dab010ed664ab610d76a0411d8d35d9682085d2480328272d3f0da66ad2a881ff294de6a438ab23e70fae16c7bff59dd8dbc59b5936181569f77fbb19cc5193237966f04537cf0c9e609db51774707a780645ba31dcfa947f8e93b318c76f3af691a75bec2faf9af4b1b75ec90c74e86eacf5a99fce5a25596692c11c3210a3f5298d4613b55dcdb15d9d9a0c705cc96087eeeda5e5b22d0651e8ee8e8194f64a8ac1168d916200051857a41804b5e70e53add79e30ee78b9b29486b105ea867ff2cf5e7bdf094c65098386258ccd7dbb9666a391b3e1e2cdacbf61818194ae0f832fdcf2b0c0606becb39cc3545b5f4e6e86251800f14c3008c00ba46037e4febfd87a25b8f5a95388655aaf049469bd92d6a75e5aee0541526b51108c0b6896170079810ba87cf1d8054f1a6bb2b96063cdee2fa8513a532e28d2f9b10b78b496baf103434a776b39b4a1f6398c6094a0f1a322a881f13d2dbf495ace26d757bd8c09b4f971f4407c71aea1a5e9fe27e658736db2cc54e3eaa5a539b5e20eeb659df951376659674ad3fe8b55c6c55f6284842d9335b5a7a1b49f11b6ab39b6ab5393393ca96b57f9ebb54cc44f5bc52bbd3c575a9e4c5c3b3556fc3e8e25ffe929b43519db4fcb5163c5ef5513953fc5cd8c59f193752a61c5ef46a6da19a33af27141592644251f0692ca486a57107128e397698857b04377aed6bbd9f29ee98b3abe08a353d666cf3864c25d5a9a28f1c5936e4c5a19e2ad4573fd1abffbe0a7be10626558f2f7f27d59bfb4fa2a633ad2f5e8586fc5b23394464e0552bec09a6c38aae009d6646b7d4acb8f55e0b595215641911a6a56865805dd5e54e9f6428c6e9923a7a679e144cbe93934726a5e24e96e162f7ee8eea6c9f53f962ea610da9bf1cb2ebae8eee95cb53ccf555bb52e58a59d2e92f48e4c17eda52088841a175b7477fbeaab7bb4e102e40248f7635973b8e896ffb2c72b2905541a831f9ea83aa9ac2908a3bbdb67a7949302cffde9f4565e6d923caa3ea5d1e352a0839df7417baaa17bf6518f70bf848626ca1758932dd79f94e3a23ca1b2462f8a0987b83eae96d342190f479ceff37c69798e70bf64620b6a5d7c2a633a12739431ffceff4dccff61eb232ba98baf73bf2fcb4cff9dcc32534dc68f9a3287a087238e87a30cce7d19df63bdac3287d404484c9318215bb0d19365197f8e34cb3e8ef59fe57268f17ff77141d7defb4486c4e078387a32a83a5b11a431cc5ca4347245648e9c9a8723cec705c9a9656cb9130445cab19cc0012668c304acc6be99f3b5fe124a8f79facb7dd557549df14fde8a91c504489880a5318c419b4b4065f5d56f68dde68b9a5f094e50021c5bf1f4bf9bf6a998b7546cc9c8a2851d5a98400b1d1ae647c9f00bbfc98a9fbf97f12481192498a21babd13b6bc342822158b2a8c3a55e7b6af13cb109aba42c5ec092c5d68d7dcecd1c3f9bc358a37ba8d05e2f67e11d7f5846e0831180dd8de16f563beb246179bafc6babf570f45846b0436318872eeb638f61137fa1c0d10dc65be367a1ac008aa9314a23174500051150d12288800878d8ec38ae3c2eba8c9e9342008410e010381654b0a0c282c51358b460f2e57f3dd90bd657ddcf35d6fb2a8b721ac31a771c930f82f6523a57dea2a789b105fdbd8c437b1f55a374f196cd7eedbca08c7f517546afd35b1c4fc7d333612d8a433b557fc1d6898b14bc3faf98c21557b05c91a4b1cdc55f648ebfb46caae885d2fff419d9288d349b4759c32b6a004118588bd2b0c3f8390e474f85678d478020c865fbb82059bfb47dee6c4b8df7578eff6f40e000162bdab082d58d550b86d1658d7fb2f9c55feee748dd719df1c3f05b295f359ffbebadfb61133656043596eb93ac70eeab9082559b3d3c57de7a2fbb501a5bbcae6c5d550103962a82ba1bebacb7e2ca6d6d51fa82e34afe9d553856ad6767a1820a263fff059f9e367f2fbf6762a18265b3c7d508f3970a2035b4ddb59cbf97492c54f0e8c6583e10c6b51d6afe7d95c5d36be4e2079e60b93e36b17ca048e89fbda047c7d1f33cfdb93ab17744b378a00ab6df5fb7d25f3cc0ea1467a975a774662cff392ec429ced21afa7b26160ff8e4bf5cb51c4cb595c5032d8d7d7e0a7e96ab738726c869e4ac0e95eefeffaecd7246d0fff4dfb9f4f74c2c1dc03e583a90c42d4c8a7baf033b4c210573d9a109f2cefa05599f2786c2bea5be6aa27c0a28ba6be45cbe9c2a7b41dfb6f74c53b81473e0568d9f5b6b92028cfb99cece4d2c52782c52ecd0fd5c04b177d6535ca41e1d83d1bbef83c9fa2ea83a7368af956e33f6d86cf10f319eff59ec38aefcef7b260e04a1bbb13ce5d7f9ddcf2ffd4f9cbf1c61d9198d153f19194a238d8ce3e8a62338cf6fea6832322e2d473e2e4886142324fc3e4fedbf93f9b8a0d68d939bddd73f65fcf208cbce6c000a10efd02c1bd8b026dbe7907bd6b36ca06503fda4ca932ffac913591fb33cf179e2f73b8d45037374634db63fcdcbe153886bc8a28130b0261bce8f71d4f2b5e0d3cf9a7c0d4c006bb27d1c4bcb348cdd4bedb96bbb2cf3d994f0ffd2fdbab232981577fcc5a5484c90d05feecf6ee6fa32876606dfff425c2d773fc5595a242648986b68bff8f8e731b5f6f4aa99b9a8e169efcb6a41fc57c6a548e82f45c2965637b3ad3986f6bf99657466a6e18efc25f7e7fdb43fb5e21704037058c0abc0132884d06dbb9af3325e14089471d4c9b3e6d47963d3a220487a1c3d9fd28f06e2ff62a5c9b26a27beaf8a1112ca68f74156fc2e2b7e324758f1e326aef366d66b8fe349264648788415bfaf9aec04ba70df07679916a24177c76679424a7763f76ebae3e9ef99dcc8a65dab6df23d3cebecfcbea4339cc117c362d4a0effbe0507ac28813b4fb33feaad9db69dc83f807f72a277cba5bd29f48dc57f5e4f85d7b23e3ccb5f7daf8c857ddc7fff37f6f383cbf2cc3f5533667190e73cca5e76aa471a6431788090509e510a281c58914f2d4bef837639796faf488cbf9c91ab280382140ab0cdd9e6d9be7e89f6306c37b2d4d5773aecd51d6b843637db087c6ef5a1edc8a3e96073f1234fea0316365d18d61988ffcf425c7bf28cf96c731ec34461a723472a83a650d33faaaa75aa6b16abaadcdd9e3fbaabf8e2fe6e1e815898181f92fde0eb7a2cf7fa7e15604318e9406e3483926ab554e875a845024212ba0ef19dda4c87de9f6b20c3fd8cada17fe7d2f7f104470fa074d6c9fb5f4e4e5ffaca5334d6c92c829693b3d3d3a336ea448a804c8020f471c199923dc2fe9acbd3ea52cfb79b306e298a344e12f472dd7c7389a8ceff16831424295053556fcaa1cdd75466fc61c6bbc9a535373787088a8b22ce658233fe389effb74f71225b6ab39945a1a549df4344b7f1fa74ed4bc3df171647c8f2775e3773fc7558c90b0aeacd4e463fc9cbda0cc4b4bb3e448b5535b7d95a13157eb645eebc900fda7c91b57602853243cc2fd922ce35e956532630dc431472973f0ab669edfbca0f6d7725ab632a6a8051ffc2e4eff674b5f2d8f89d210299120a196f19d1db5f694f164bd8669ae3fc1c9fdfd2fc47f417b658c905052ebe1bf5ed670ca866e4c67cc5f037e1c2b873df2657d1087a5544fccb10635bb6a69ba3b04585cc1818e00cb84c2048feec6f6be93a7323e759b1de779f25c7f72b3eb42ecf273373dcc45f0b31c114c080c4c2bcf1bc119000f0ade1c3d041604030203c3bd4a4bc55f6599f6dfcc35bc9e0e58bc2c30fcf741cb5d9bb957b9fcee56407773a83a3c6005ca270a48e8dee8c0145274370736f0322ef25172de13a9e508f74bb086f15f549dda871f36a1490f479c2c93f13d8d6be2d39af8e43b99f8caf88bcc8937fa1c41d5695139b41af85d4f033f0dfc428dc66c738c905043e1cf0b164905cb77770fece3f57f95ffe48fe35fae4e6f511ab9596db6d57ede5ad882d4015fec247fde2c03ae0b3ac353102c06c67675c23c8d5c454d8ca397a38f0658b896271ae8eeae628cd393fa292e9eb49f370bc180c0fc070303625bbd2ce74ad638231f037d8e1204a201bf8bd332f24170de8cb30fc7d591c6c226eb8360dcdccb73e5f727bdf15dbed7ff93631f23e86e0a344bc4a9ffa11e6bf26548b93a6b98ebe3bfa0ff897eadd1e31cfcaee7f26fa4dccb3cbf497b30f939cfefb35cc8082cc5c593bdfe27af918bb8c69bbd3e68ddf2d4b02d818ad7662c62d9fcfee90b2be821ad0add9d7d54193ffa74370c079a45f3f991e22c3d699fa3101810181818182c3f9e79b2de6dba1b03dd1d8513dd5d0227dd4404a29096d35eda0a041b220606c4011db2820e55e80e51212485500a462d5c44a13b0485d013ba434ee80ed1d11d6a42778809dda1257487e690a2852dccb184ee5ea2473ed4101284d2f8d57487e498a1e9bd369ca594d4d33cc0910f4f5ad5c488013a231f8a74770f537c22d5b1461080a295d01d8aa33b0447772809dd212474878e10324277a8082c21227487ded8a23b3484100a460fe082ab8ff16b1dfa261cbbf1daeef1cb0d37dc7003006a9c712c3f6ee53ba5e5fec63cefca4921028c1cc0c2709df1d698200639102305a31ec0b80100d57ac6f1a9e7387bbc925a94795ce4d258a34a1c212164a12974f75f49a7c785b030f28c1f25bf15e97d950d05818afc26dc08f819df085ad3cd0a5ce04677a88dee101bdda129dda135ba436a7487801092326a40a9512306bcd1f86239fcea833d96a7e6e08b7d38ae828881792e76303020aec18690e8889f203d7e8e084243aeaf1af130050550d184d1018030e2018e110f6b8c783863c48318231e54d0dd35f488071474f7c70545dbd59c92a416a7bb81e8110f4bf4964370031af110eaaf56bedc8c14b083910242d0a8e978e6fa72b978c3c87a2dde30620b6aa0067e78daaee690e20d499965136f48b2322c7d5cd0c705d1e01c6c7daa45b5a8f5013f9ce383900fba43697487d03863b4038f508f0e50862260a10823e060954618ba5b749a486c169a0082297477080900608211553e40460eddbd8204f8d30222e830c3175156e043801c4811a2bb434458a1440f151b280119dd1d92820a0d70b9341c6941778b746c887082143ea4f04277af14e00354ae2002286408a1bb6bc8028b3b426f646448d2dd223ab85085136210411384e8ee1948b0d930026f0d26e4e8eed00b408d1ba54a1946e8eed01ba7983496e8401371c41bc618e61a5137a27ee01f18c6b60dcf1c35775967e7367b930d973625fc319063db57cb33b71cbf6b69b0cf61c95bf755ef397adb5f4b83bd638f511a69b01c82756eff37d6c464f3ffce7658fceec541928f9751366bda7fa7d9ae3ecdac7082a4e7aae5c1de33619becac7f1156d3b06b3bdfb658028a3724e578c31c31cad2e892cef041c72fb1f3700f3df89d1f6988fa2b1fc7130c5ee5f8906ea461cd71acd55ab905fdbbb6cbf121550b865a8d5c9eee7fede7784647554b1d47df3ebc79f3d5ca5fb61c1d0912dffcc59938865f4eab8aa88a1f87dc4459ea9f6bb55cb614fb4ba6333cc1e098b1fde617621cfda57e663dea2976bfbb9fbb6aa77c142a9ab0fbf25aff568df329f85ddbdd07e37c2fe36dc3f86be66e88fd53f1cba13d45975e6f7c6a2de8296bbdfc1f2bdf772eda6cabbfc44a7dfc86d252b7d9bfcf722fd83d2787a0cb1a290d3bd9aad1abc54c607fb7cd63cec1efb2c6996be4e9291991e7dd8ad87c82a4784312166f18ddcb73752dc6cf7df51c1f9263f867d6b2a518938f433cf1d74781ad1ce6171ac7e20d497e6d27259e60f42dc5593ab3f97b268cd9ecad1b5518bb712cdbead7e2d94dc75fe3043f9c83274872ecf98b704dd3308ed4715cb92627a57f83bf8b4fb3b5f7676747bbdf8761ffd9d9992089490f36c1e8f753d7aeb4aeb3580ac7dc7525c7ad57824d30961c085fc53b69cd671486e54b1b1d124da95aeec77d2bd2e570f3c6e254b97c6c41d67beb538f6deb53fed9e53f7ea23b44822c666804188aa493497748049f679dddd774874210924f29a93b84c5155d0fa5244a492124eda4c55aa9c28c6f13a0ad5f8a89e9a192402288c9122053e9e7081f9e1d1d2546e014716353433343fa81c1bc9401881f5c5a7cf800810738a0871e652843195644a12e43880c6734be98cd60eb727f2d0703e293a5333142404024881545ba435504d18af792e4d7d9bdac4045828408221234242888202141dd3c421fe88e09ea0e792048d0dfc7e90e75600a293870bfaeec069e68dd210d8432f0df6180c65ce3ea5513d51d8ae2021678271377872a4069e4a0e80e5140e21c9ac0fdf94477c809dc1d9240b53c4f4f1355c39bee9093568855c3ae3bb47ad21d52752f29656b7f669ea6eeefd47487c295d5b1d6e4d31dcaf844ea0e619aeed0cd3782dda126c0569e34de90fa483a3d9a16ad3dad57628be80ed598f1d7fa149098d62ba1411009a566778889d0ecee1821b23be48596e80ea16c57734209f882cd272184c8211d911f1d9122dc10438210e1644c104374a70e065f182718ffc039b43ff244894c7740e92018102c080cf7aa3c4f0d284319ca70c704eed8badb65dc33f930799eba43ddcbcf91abe135758764a93bc475874ef2e5572079ed0ae3e843ca96c7cbd1c7e70b718a7b8f26146f8a0cc1252019678a0c791c67649ce90e6ddd21adbb4311e89633d444f4a43bb44437eb73b5341f1764bb9ad31d52229444770889ff628d5fc4a1925625758782ba434c6c577370776849570b84290d795a37c4f1afa9da39ebfc24e971fdee6b689cdc94a111144fd4eb78dc9b5e1532854aa19f2ff2e459817c7ab8308300423b2ad035a7b8f7b84e7ee7a83a517556d4c49f43f0b39c73b5853db39e47464b5b1174e9ee81050509ac70031871b0200c3c399871831544b8f1030dd10a2898218301515e70c591061c600a55e4df09b28072fdefb3a5f86fe63caec67bf2569ead4f7d360b52bab92c6cd1380bf41fdf08662149f416932add5da7e7c77e6decdeeaf0a9a304ad9bf17335bac759d0e6fe0f6c41180e9f7efcc03fee832def07cedc3361af0f4b1d3ba8b0090b7734ce3582939bf94690070b49e8ee56063fbba486328cb7bb990a5f7457cbc53fc595c750f95fe888ee904f77a827c42367042b108e9392b8095a6e82d694bff4d2eee0ff9bfca5a7a7f8d9f200a538ab732d8df8be6a56a07ac319a012f8cd4869589394bf7471be84430adeb0246bd8fd4f2b9c41d529a9c5c92c9b1f599fc35f73e3531a549dd8529a0c3ec791ea833dabe701bf8b93b928dff43594461a21aa2cfbb8a02ad4546188fe38d6c7b134549da898b13bf8e11c2031314256f147e6b05ed698ebabb45c5ff5ddf732cb5ee36a0b831f9e5686186b5826cbfee6fef735ff99abad12f8e11c9cf37141e0c705c9f04b5fba16dbaee6805fccf8bf6992f197d2916b6f288d3434d264190034fc52ab2fe5f4b409460dc459d6d1c759260382246bcab207388e1e6f483a126f18e71023e628bd084c97432abae700e7f0e9395e721cfb909139c2fd1239ba60861c5fc8f1448ea02b4711d54feeaf1721074bb712e62b010c94e72fe253d9bcf8e02fde082aa1881258b026dba77acd662d0e28a0e48ca307dd5dd3c427bfb06a7114e9c6dc2b098e2a3757cbe1080714b7d9e108c2e06091353a4b12aa388c7f129e24a105e7e9d90b22a10a4842c2162c48a80012806035bc6ef35ce1e93e274b4f8ea377843aba31e978da23d4f0de10353b6c3dff494130c4a62330d18d599e23b0746bb23eae52a57e951574cc51e6c73232be47b2456459d42c4a93274d3e0e6570e28da011e03042061adbacb7dabc757af9ef7c0367de3aeb2fdb7fb739e9bfd3689cf9fe771a0e9990f1e97f2773e4ff26e73badda89c199b5d5577b2a42151cb52f8ac06a4bb156041cad083bb494910875e43ab557c5a74490d2f6a411018a961f1301a5e5c79a26ab3d4d39b537e278e309760cb73e25a7c46ff834ae6fb474cb6a67de1802690861f00c810a2c938680536df4d669082d8dc9afd3323104198520041617c190e3ecca521a217810ee0882145310a090d59ebcc5d5b95a3d4f105aba2976ec2315730d952a34864dbce349658bd5776eedeb5001a9e0f4fd4a4355cdf14a85658eee301af3dc78d2587423884e5923e7464bfed69236eec09a6c52da80d2c6d65a1b2fdac7b13c1c3d36a28039f61f1caf2436a07cb59c6736bc66e348636c74774fb941e32950746f3e25a8db369f52644af73bb1b5cacd1a613059e3c9cd1a4ddc517502f91adead461d5246356ed09df1a49fa7b7d2d4d06aa886875203470d1c70f8f9cae2c8c7a106042addbd111912a3c57c2ad2d30604258040d3dd385e14ccd7d9f95fbbe3d8874d44d07a2be7e7ec7b2620b04839430a28c5013f08c20f60d0dd188eef7faa24c764b5dcdfec47ecf8e31f5af4a9c53f78ce71ac455b34fe87e767cb83794c7e1076638f8aa097e7ea0749dabb1bc3f307dda808fa608b88c316dfaedde4cb1b393ca50f40f741917ec7338d2aa0d210421a50743726a9f509c6344c6890018d37fa6fe8f855f4f1f75e7e91ffb9c61b4394675b3d2e2c614f4fb1866860348a7463a83a5b37c3fcbd610ebb57511bbfff66ced12397a7ad2e6b04c333e6a0f4afedfee4f6826e2be90c2aba31d57dec1fd699abe5dc66afdfa2f3c66bc1eff3195b372afa9c01f3a808be9359ca32d3a322d8032956eb011737b3beaafe82ef646219191e7c437bf250f3ab868a3eb27ec691be9389dfc92cc9bc9359f29777324b607c9c233142806cae39fe522404e37b3c08eaeefcd8b3ad197f8d57bbe3f7597880c30320ddddcae067c3031e6dc61cdddd6648e92699f145e3b963868f194874b7bbd7c41c25138d46199922a194ee1d50d17d1f156bfcb4fb5a7ebc03ef3bed73e4769064073bf4b519d7d1fd9deb208dee6eec24a7014224084eb59c0e58f8af9451033f3c75f0c3c56bb518aa49194d47f29774c082edd00495618532c8e86eb284bf94918232723759c2e5742596c076688272fdcfee649969656b19463cfebf9dcd38fcecedca20c30d32a0c0967a0ead57549d2f3536be0a4fd87a2b32364c92c1c292032998cbb55315bd3fe1f9e5e04937e692031ccc45da9c831d8328dd588894d5ce5c2004451261d8d01d83eeae7682f13dcfc280228caf475e781d44080c0c4ccada9977324ba8e88329a5b98faa71077bcbb3d905b23f7b3b171cb1604ce9c61e8e5e67515ee7fdec73cca51698582047f78805b9fd24fdfa4a0fddb8f5a9d6a7f0cfee951e2bce821cba3b48f74a035610a577305cedf497a7e017594f4f13d7c7f3da557d6c3dce6f6891700ce330c71b41307a287ff801cf1b57d17fc6316cade7ef659b55d0d29df1e7ac5ae191175778118556f9e08b8dbc607533000677e144173670e185ee7ec1888b225616300315336491022a82548b99d05ede5fa22405457a850705747eeca305c94a02ba3b8400191440e96ed9a2314709048c197fb306a3283de0ff0ee6fe0acb00ba5742b93d1c715604b01280151cee4bcb55510e2b00c8a49a2e7ee4672eb26cba576ed0aebdf76dd6c0502bd265a0ee151e5d5193c6ee151bbadfc9c421d34a0db2867685862e71af32b16061d3232c90f4088b213dc2c24777cf904317ba455ce816d9e12638c21d834e2d67b3bda0c71c259635ec3cd7f9ad4a604577dbefa5bf601f6fd1dad31db2c0488b2f421fd4c35fb0758a22ca810443e84ccbba455be81669a1bb67c842f7933af3531ace7838feb534755a2ecf1939352696b39cfd91f5337e26f74fa96b6f5aad9951165ec8e0fc3aba4558105d21e628bb455608b55e4915b6a04214d1146ceea766b53b79562029748ba2d02d8242b7e809dd2227748be8e81635a15bc4846ed112ba4573f4080a142239941047b7088e1e41318992808428505a4447a862846e51117a2402318888207a43e62c416978d3fdcd1e6a6e403404b0651209a17e6ecd48520ec19a73dfcb37bc791c67bef0e679baa40fcfaf1575a2448962822841d8224a94285b50892272c396ba456d748bd8e8164de916add12d52a35b04846e91946ed10fba453ee816a5d12d42a35b7446b7a807dd221e748bcce816eda05ba4836e5119dd2232ba4539e8168dd12dc241b7e806dd221b748bc4e816d5a05b44836ed10cba4532e816c5a05b1446b70806dda217748b5cd02d02a35bd4826e110bba452be8167da1820ebc41c5155438d1edd20b53c87621e22244a37477a30f90d1dd2988d2285396e16bf6c80373f40f212a1474370fd116259e9e1c130d0f90115a1069c756d76c1879a0a6bb3a4750c4c3110767a6bb472c568f3870438f36f0851e6d600bddbdc222aae10600086084e7f703e7196fc6f39b428a6ecf280dbb45504421e8166121ba8203221088acc0ff5d152b2d8b075b594405167d40c4758b3cd001d114214e0a0e8836900a55d112f771781f0c4b3ca22722a8d133fdb53b16b4d727e3f83a99f4d9aa81cfd6786fb869977487282d7178a6d5fdcf4450d6788be80e994419b0a9404e6645591e9913ca3835a79413fee9fb1d1b13064451882ec0a3bb45169841ce6e51051a8aff66d6784ca0bb454f7477c889eece96a73b54851339b597361858a2bb3150e3e130346494faba8bafe3d9d3d3a4347635278a287477146678865f152d8fbfdcefab428a511451743f8e2539a3cfff0d866d0667f6ce4e0a7ef1571bf885277fb125c73670666fb56d9b1b7101c28df80f0e84ff775a8b237170662d3f35e202cedcc2d1c869489c5e7be33f7ef84bc6e1ddb6cd3170e693bfb88033b7384c8bde48e737b147afe185c935721b8ddfc5d5ce484354b5e0cc1eefe748a36fff9db66dadcdefc4d6f600ce7ca7aa876dbb4f72286ed0fdd5a2a098a233f92d2751070a25a090e976f9b8201acfb6b6b8db5b43013164a89a71147082029b671448829aa76c02e0047028c0a3bb471398e3881db7593ebe9810559665d9041ef0c41d18853f7fd979828e9639df4c0fa3278e7477f4043cc103c7133821a546054e4c719ab70b27744430924095ee871949a0048d499c65dc041a39c9c249065a5a1a1bdbd518a9c92c1bb18cb080f4fd3e0f8720fe59ddf8a8a474ab6c288d34f2594fe9ccd7762d93df6fc72347c1307b05738a8bd7e429ebf83118e9fbe3fa5e67a4c1403924bfa17f9db94627ad938fd647bf138c9f47776ca6c66b7841ff1b658d2df76b9d9e8a0ffacfce0e9e3f3b3bf8a5ad8e6117dae23f3b3b3ffeb3b3b3438f4023ba1d7b8a8b274a238dc3803c38f6d929e5e08bddeffb71bfef7e9fe5a2db2dd81813ea1b3de8104940e4a4bb597127cb4c5ef1d3fcb8fa608faad956544ebc611cd5048cbe3bba5175667fd962f4e160dbec7d27384adcdd4d7ac4c4186060602811a3941aa931303c6360e20d63bc616482063d8a91408f62c21ec580571b45f4d50690bedad8a1bb5976e88b0d2dfa62a389bed830d2171b3af435050c7d4d41425f5378d0d7140ef43565f635854802ba11d023c4d130e4140175d8634b3967e5106599dc00000cdf9b1b00806ffc3caefec9afed6ae73446249afcca4479685102bab7f012a209d510871a350be816c9d00c1dc2810870bc942e7737c6b9e5e14216109d441177e039f0d4b317cf5a3e9746afc4e86d5c5ae24c96a1ea9cdfd4497131979e9e224db63c7746bec7c5ffa94029ceead0f83596876523696899443c77fe8b3c8f69bce11e0c51305ed3ab5836d69af0ff0daa4e1e56dc09edad40f95ad0c92cb1e20eb691d4e23c3d456ba234bca94040a76ced4f05aa76468f65d32dda68ec1669dcccff79795e52b72802296bc23e96e7a7c94e9c112d211212f30c5fb8b4a4ac3be1a2f90b6ef1c1097f69697d4a6b9d348fbbf1b1d6bab1ce1306052448fc86dc0c533020de08d2f003e6ea7bfe125737823418d1dee86e5b6958d1b4e8a66134d27ebaffe6faa51a52e9a65a9e52b63c31c79a25ad19f93e1855270862fe5f726cdbbcb338724eaa792f634b135457265963f4c295cf0e905fdb7de7d21fc793cdb1bb188f6396ab73de1b39c753be2a6297325a7ab2f1faf7d9e816d398b1bfa0ea7cf96bbb139e343ad645cf8ff3f4268df7bff740549df3f3eff3e442692fd864db94f8cf9636c793e259498e6d33637722bc9bcfc4b197955335d936256cf56ebac7c5f7cefaa655bb799d4f3998b0896b739435fc3ecb79d8aebeb2be894d4d0f4d96e1d6a7348dd25f6519889568a284bf47e97c71188b72fcaa892239c6e1c8e15c67bcb9b3f166c7e07fcab1265bca5a9c4d093c4f56651f6379ed2ad6e85ed8369112dda2244441dd2226dda225dd222051a95bf4d32d3aa25be4d32deae916f1748b76ba453add2225dd2223ba4539dd229c6e5111dda29b6e914db7a8a65b44d32d9ae91691ba4549ba4544748b64ba4548ba4547ba45464443748b8a748b841009d9381111d110554f188d79a31e1d463c5de86e0fc7ee46d2239eadbb7b10b1e1303faa434b4cd02d0a42fe0d3deaf4151c463b49ba6160604431b9fec79d463a4ff0c57474b0548f0ea953b67ba4c48cf6ac089e1c9e1f1213256074b79217fc03fff0b8cf9fe5b053e8e589faf123c360ce9ee708ba11f9f751a8f9377cd5941e474a2e21ecf00c06fc389611548c8c70a23db3deca0893114b789643fb72b1fbf7331865d4ba9bc3c42847c7339bfdc5b3cfde2e7aab9c20721e90797e544e013cc3dfd367bdac392bcbd3c4579371d4c1ad572273e80fa9e6b96a7d64b6b424e3e33c3755f74b1e8e383142806a4ab806fcb8204b4b2f2d4dfe929c351e8e38d9da9fd2c705d5d7c19492b08c8fc335b113755e5a9ad5f380dfc5a1c9d8e2d098ad49be9cf7beaa07fcb82049c1794dd624efe7d49c8ca74e543dfd1ff9a86b33176ffe6f5af755937e4debbeca7278d6e06b670d2e753d4cc0efe2b45e0957435b2be9fea4e0ff4d663d0f7e557c9dcf71caffaebdb9b2da191accfa2cfb79f388a608a2c6f7c7fd3ef0c3f37e5f96ddefeb6e1a7a440343b343b7630b7a961ffb49faec947256ba1891b4c0449d4208111264e2160e8d484f02b2195b3d8f7741c509ea00e35d8d92d8d19e81f1aedce62471f47711cbc7d107ffdf54a09f23e88c373b251a13fe54343d6ec9968cb97e893422824877e7faaa9c146775f2ef64cb83ff6f4a19a738abb3b23a39ec29591e19659c69d5b863ade97f9e9e66beafa2a75881e4ff0deb979048f185f57d93f5f1e888926e2cd7382fa631511a697ee4a738abf3d392f17feef32cf1c1aec5349e2c2dc2b16a5d7eea46c75a357a37fde5513ef28cf7b71821e156e3d8cad6546ad25f39d659ff7ee5b8b34ee9af1c477fb9a1a594e418761cda79a3ca57b6a6fc573a72de88b3bf74d666c75c288d797a373dc8cd7746d0b13b23e82e9b8ac890186fbd12efc670b51fc712422504f8e259c62f0d80c6a36ef438a020b4f0ee56a247313308f9310ac2e7c156fe3896266bd482b0c10b232150f04cc32f5676b7f6d9d6919021badbb395ad29cdca1836463167c48c318a01a38b1813b8b3e484f9effce5c5fdc5337ee92f8e9a33d69a2c0fa5e14dae8f4f2421603e8e05330a4246775b0c68c18424821c59c52b24080604a6aeec3d79387aa3203be0846104840bd6df51279db1b3996104320e464e5b7d6d83d43f231f6077c80ba22a8a355411540390d9d5d082a1aabdabfc9f2d39864f21765bbd06155c0ce85e61c00c76f40875a13bc4051b7ca4cd3834a23b644777680b212d7487b2d02778408f60d0a893d6e97f5a32c60886621f2e1122758b00a6da3a71e8653742e3bcb95a3f7de1e53c1c82fed256cde63a3569813130adf8bbd15f654fd15ffe4ccdcf6b725963969dbef0d2704167ec2cf62d87dff6aff2f1ab111053e4498329a31fc4504777080b3a8c7ee062e4522574850e2ddd8d2f761f03f5d5044af8592e8893d6eab2b9405f364efab261a22f1b79d5fcd057cd02faaa11405f35a2be68c4d0174d1d7dd1d0d1174d95be68a6f445434677dbc05243006a20004d187dd180a02f9a565f34b82f1aad2f1a9dbe483ff4454a405fa41afa4ad285be92c4d157122a7d2599415f49a0f495c40249705f49b6be92e8f49524495f4980f49504017d25e1c12200051c2000a38b8829f4450412fa22624a772ba00044dcd0974c1d7dc924a12f991ef425e382be64aee8cb08127d19e1e9cb0891be8c3ca02f230ce8cb480e7d19a1a1afac0c7d6576e0c09209a1af6c077d6531e82b2b415f19157d6551f495e5be32d957e6a343003a010a18e2097d0db1465f4384d1d710575c314de82bc6083153fa8aa9415f315ff4151382be622ed0574ced2b66ebee1c701000013a87035c31377dc524e92b46485f313cf415c31200027402b00af485817d61b22f0ca82f6ca62f0c027d6138f4052386ee56c0028008415f4048a02f2022d017103e7df900425f3ec6e8cb87167df9b0405f3e527df9e8faf291445f3e7cfaf281a42f1f41faf2e1a32f1fa3be7c745f3e68a12f1fa0d0970f71f4e50395be7c38a32f1f6ad0970f61f4e50394be7cc8405f3e4ca02f1f705f3e780348000d0430000072b87058a94023f1802b880641acf62ca82688a59950f18cc915dd9e31d93cd3ae25772c41a33d5b3285b6a405880c217d014101a4e3d905a443b7677078c68567a6dc9e9992747b66e2e1d9559ad2ed503cbb4a4b945a3cfba9c3b39f28bafbc7c7b323e8b88e00c3b323708e60f181a3dbb324faf2615d3d50ae9e29bafbea096acf78eae8b978a0340fd68db532f83dbe9fff8b359371065fece3581fc7cab21d0d78088125dc7063a5042ced83ff6fe658a992af75430ad1153b457cc8847308ca51724365441057ce10bafbe7cdf58b7fb3ee506a05053b74af54e95ee942092b71a47a42187869774eed86e571038e2add216e25092b59206185082b4758a9d2bd62841988b0520422d4d4d1dd54ba8606db55238513dd8d6dbd35a925b60d556b92d404e917cf669e5a1e492dcecad29f69d1da83650d6f8270611d9041f70f56de18c21addcd81be667c841084eed62199787a92c8f9e9c1f16d078847b32982542ad9ec68353f24263e405a106967b35dcdf9bfb97cd0d1fdc34b6900171147740f00a7af171cba1bff7739974c26d372c9f0e059fc34fcdf65dd5fcdb3ff0e8918dab39f9e9f1f1befd1a307121b2011e342a245dfffe199fc1f38a4e00db1f682048a6ecb83646b2431487a20715967caaf23751ca1127647b638a24577e778726721a0af23aceebe8888865ce1c891ee23ae191183234182e4328246771ba9e23242351a3dab13e75c3f7c4baeccc7350490ee2ee5c79afc8ca3ce7d7a73bfae7a5aaf0463fcdf34e1d62bc9ace7c160bca69738f7dbc138e658232d0fc6f5553698c814cf2e22512e225710d9c04504d52e98673daa9d5fe790166c31048a675cf63264eb6b6408902101e8f62cb3fec5fd253c6519066a2156a8b851c415041714db04c1fab24b881d8dafd6d5992d6dd412dd2e19e82b260b8d2f86811f02d0a21e2d39e8ceb28f6305d169cf7a5c40a43c48dfd3da60a3319b31136ef30584b667d70f23747861635859c0d5d2e4820123bef4547713e90b86a5fbfe1772a104f24c8795bf25314b2e20907001e1068be66ae9ee96e30242d4c5d731dd9f01e87239b94cc105089e798eeef261eb532d978b023c47d6d77ced0ecbd43da5dfc9c47fc27fbb7041e004dd02c8a17dfa8828140a9d5634c062c503bcbb63f70a9415115811022cba9b748b96909574a704e98fbd9fc4ebc41c6b40fa535f27e3a95373403a634d20fdc9d77a259c03d21f97962b7a05040d7379155035aebc7b2e3703cb1b57ddeda35b5486cb671ac3e29d115c627d3c4a6aed5c61ff55fe1ba747c7afba5ff20af4a96c05b23c1f76307e3f8f8a3e363d3e78d6fcc8c761f4a1a708d4a2535a9e47451fcbf383b5e8863fcb70685b2dfa13f554bab46aa4319758710793ff4223373daef678e8d259acc9d6f5d4d7d994f0d609c716a571be93893fb416e524ffe6a3e2caa5e5da018c1da29835f573edc043ab46bf21f7f73a001cdd2d238eab6dbb0ef0454b46eae1bf37d7015832ebeb002fdd365fec32801597016a09f36e1fae02b43a08060406c654df89bd37f2e5bfac93c3ff93237f6676e47b38d2528ef3e608fe4fc65627e3b046fecaca6a73e9e045fc1a549dad3ce93c4589975c04b042ce458024348d619d5865c51dacdae9a1c47a7cb5a9f88556153b8fded1c7b6c6b3af93fa6773b633333faa153ffc5cfdfba16d956c8d5fcb04187a7dd066293cafd795f51bda96e7e816bb95f755bfb2389bfcbf21f7b8cecddf6be45e7eb83f7439dea3e7c72609e721e198fcc7c644b2f929c26d66dc5402da71ac3e6857a4f470279c70f98e44c69d70c2ff6f8761cbe398ac2fb184638b569bb7d68d72e26d73fc82bbcebe8c377f33d8b685168927dc638e35fe22337f39f24daf04c61d24fed766779780bbaddbb6b98d3bc0ad6a662ebe8c19679c670daf00d870e1404677633e7c7826a7f682bbbfeea32f1cb20f7dd5eb80d674e1806adcfa140f6ebd12cbd37a25b2b3f65e3884ba31acf529207c93390fb64cad57b2b53ee571d3aadd707e9467f053dcaba4631fd7ca0ff1f49e9b9fad967b7cf1d0e9ee6cefc58347775f360ca1dbb34cd3787a724a3f364b349b22483f3da692a665f862570d6a38c611949fbaf1fb1f4ae7ea79ae1a6eecfd24aae5a1a95c8e3561f9cff35fe4e11e2c29a02f1a3a70d140c4a7c89052094b39d6eae1a6c8108c7bf022434a28f771aac13e65559cf570c4c9f825b52d0efea7761c4b7196620c67d807f7e981db5f2f3bb65dcd2e2deed8162324dc36936fd8525b6dae96abb99b9bcb8b8ce9c8b5372ddb7bf8efe7cee259a3c7e147d5573d85c91e6a52c7dccc787213241d61bd8ca616f7b8e3d826633af2bd97abfdcfe2cec2e4d0ba4539cbce380653a7473c57397e43c72ca6d15f1cc3d94a8eb964ec038c5f8b3b867fe70545639d2bc76a726a9082149e7c11e390670261f09440220c376118220c31617009830e61b8c23002adbb40a0e587bb40c0fd05029e81d65f20d0e22fd89b28f1d27260a8021884d09eb9b444d0de5c5f8b37d799fd7d275ab5150c0fc0a4a494f40531b0be40a5bbb1e76a84b9ff852cbe4045773b2b7e365f90c01722802f7607157768e08ed41d4c3c73a1315bdbe21dbe18be3fef8d27107801035e08475e58a267be0fda0bfa8b67787e2a9a66e005208f61d0053274810ecffc8b1e29e841e363afb135d2829151177a2062ebb1799d3fe34f48ead00c5cb8416ed5ab0a4470018a6ecc8e3aec78a33d1bd991638703ecd0a1f1c5b6f0052c3f769b37cb53c60acb0aae08750471a30a5b682105dd3d32ebb510cac21459708263d1d8fb493cf76029c5bd4773af4daac7c6146130a5910355465760b1c2182b2bba453954d19d8acfa47bc549778756a8e8a602125490a1c2cb14c09802942940c1173b8d9aa0f5a8094b7ad4849b1e3521c9888e1b7a4447a8474db8a3bb73b86165061e2b3520c086369e60060d5c58c2aa737d55fe22a24044dbe02fdee8e396d2c7c1195b4fc6c78937fa748bb20df85d1c1a8cffa26a0ef85d1c1ae3ff74afd0d6cdd546c6ffe916712ba91526403057bc6e7b3f89d64cb5134fd5ac9121dabd82eaba4fdfa21c3e7b6f3e2ec824df66a77b65010d81ef1113407ab55690205810985c6778298d5fa9ebc299ee1539c30a1781963948564e1dea010ea60481ca480e2ef0c5e47040ec5ed95c5a6e10d2232544d1352ea44f89ec8a1681ee16f9b4921ec51144fb8be511e5c02103b7283822000711dded47dcb1a7726ab5ab39a992fc91d5ceac9e67f53c52be9424bc7a1e0ee7c86a673e7b6fa68e35e5fbb8e664cb732dc9f264cb33a9cdea6fac351d21088d6b7843db722332ce8a1f96e2e2a945bfb96d8e2b279f356f1c6b829addcb89a38e63b575c253c5faf0f33f6ddbe618767969e5162cffa57ee90bf1ffc83853841574b3e20e969b6c9b125ee74b9897465a316581000112a4c57a348e3d37b3adabfca8d8a238b45f63a6e1377167bf10efd0044d6e7eb1b624b518c7d587975a7bf2878946a23b868708193284c8ca5e94e32f64e2d8b6f996ead9e2df1aed2affe97e8edfccf861eeabec12eb93d9987a781c7b27135fb9e52fc588e506c69d8cebdca84cd1dd94467f374205a7bb51b8870a0fd80d3aba8d4c1967e8c07115dd888f1a3937a41b40ba732346e4bbb1d246158c501a7664b411056ec3d41568d4c603c2530bd12336e868ccc8a7ec3db9b30106d087bd828419416023c876758ed8f086a9d39dd8d1943aba9ba2eac41ebb296874d3292ce83105c80e4d90b74e296e9aa6ccd0fd712c1f5a5055fb38d61a51ace1e9e08efb13abf18423a831a5d58012e712356497d488891152ba9806049a6e4c12822ff683bb564a4a8a4f7b26eb4cf98b67990d5278846ef8c115dda31fc8609923ad13f61fcc00fe057d5065e4832dbab14dc8928f0bdab68f0bf201cb07dac807405ee6288d3b5ed2a069d4a401045f2c8d1bd01043b7cb8f0b42c3096890d1ed00cfd1575fbf959e269cc7187f2713c71c6bb20c8cef651dea19ced022245a594289d0cae80c2030cddf1886327ee8c10d1aeb410bba5b9ffa6a6bb07cd52b91ad5722a70c4b3dd8ac0c4b3f3dc0302b43cc031760ad4f6ddb0e9ed8010f1ddca1032aaf8311e8a08a6ef79732ce280307658451461412947145b79521862103c8c7055919e21c640c6494039b1c82a33146d0bd22d3bd82a47be548f78a91ac7b6588ee9522dd2b42c40c0982c89098206284c40401b2f2a383b462fc26e4f0c94737e8f66c05eb5e81e95e79117136f09b9a9117010865fc7205885ef98145520cacecb0e2b2d2d2bde20385bfee50152d1f55a7153e9201d72b3e74af40a07be5010e80420ca804a8daa8e41108f6d19e854ea1191111000000b3100030402c1c8f87e311b990c6f6010014000163b6729a4c1a8ba45916c31452c61803c000000000000091a161029bba69743283fec202ef63ab3cff6ab4e95b27e9d6705de797bce183d4cd95de4dd0cf9c45c7e203f322e39e73ce7b0cbbafa9d53941fc1ef0922796d8105ecf31a17b4edf650df377fce4c188bc8b58fc322b8f652c52cf9d1f1f182c4b5a8fdcc57fc0537bb7f123f772da38d2de78e54e6ac04cec1f0fd509f6677bf982f97c78b5b597322e167fb0079e14cff8aee515665301f6b7a4f8715459af6a1d6bba2e938ec7eb10c8ff69bc698eed7ad35bef95c2038eb7a2d85beadde70353cc7c11009e0de01ff988e28bbc18954188fbc47085487a523c194b2e884b1bed3849aab1a559b11014f989f57dbac0615fe3f3301a623f6001c6f7c17e7e07db77c8fa5c3bc1013b9beb449150a829ce0c960fa31ae1700d5e2d171446a3fcae1b17dafe1e75c9d72cba2939783afcd542be0d3eccd2fb5ab107fc0ba61e5e8c0d7d9c88cfe9aac2549956c0879de63c4bb5713cff9eae69659009c1138dc28266ecd5e1fdb5bce8409dbadc42ef2dc859ed47ef43050debe78c2e3e4550506700cf0eee294845d9c6c35f1e75ace758cd60871d80d1c5040b0186309cf11644892515a2f315a111ebc90bc8dd721680618ad9ade2994c13b21d252ecd94438461b677c45e07a18154eab4d8f5e8e5c65fd52d0466f2592fd47f18a145a564eb88696e789de006d8ea0cf5cedaab4b8d9bfa55a083786ed76f2c7d2897df9d00482d2036b1cc6009a9a64bc3c2fe1f52bb189436c2b285d5e8f74bc0d4a6266fbc7d89f3907ec1fca707adef5611423e44187f2052317b9676e6d9e53d2ceda671ea497e1aac08e40bc70b89f8f5c27390326748c6bb46b370d16c2119fa1436680ed940b391b93636a54be9cdf65a7d8dc8874dee01aba1d59a03064e8553eadce4ce8730ce9be3b581449e285d8c98d4c60c6f1f61ad4c2959ef3583e5b9a4b8f43d3be7085e2f959cdb2b0f8a1ec72e767543dfd6cf740303e8b91f2c92a4a452ed4a25c4f854ab6c91394026afeeadfb6af951eeb5eda72bb60146e0b10f93aec377a5567cffd6a16a0686da07e183972af8939351c832f799fcc20e4c543f48daef9c0103f07cd21414c40e193f112f1e96a5df526109b7a71de0272a642e3479232b6bcde580afff497d6389bc70cc61e368d424afe73e89bea95c22248bca995c8a0d9adae01203e5e312fdaf6871f96ef4dcfefca3f18a2fd7bbf3671c6ee0e683336d09387029510bb3ac20f1dfddba84aed4a38c1b27198aa2b64322edbdc6969e471c1f3e89962f1ab0e629b1554f785e082f4319b6fc25517af98b28b165ac8a6cbfe4bf8c3d2110f6d4bc4060f09ae5d26978c022ad42b753ba6b0dfee327defb75aa76b36105775e8f84e90267b2f25637a97dfbc2fc30f78c1297b8cd8113953327c05b12deff4ae44f76987a156afeed493006ca9b882197aef180dd83bd26b30e3d59bbf3888174a63675952ed4f8b61aedc528467bbe05a5d6f8023fb7c642840d85f2f130b1d96e0a08973718e5cdfbe4d5f0c9eb58b00112e5216e41358f00fee6e3d944ff299f0976eca898d8db276260d54b2cd1bf0bfef7ac85f9ac277cb18f0c449096c04f09ff1445bbea46224c5da3f22d669594f9a98fc6014a84823c11b375bce8f9dac858028c998e802627cfc4ba1a494dc747ef4d9082b86f59a7a688756f8dbb4caf3b5fde25997fc5dda341bcf5ce13f26d64a58b1de34f09a9ba4815468c4a3b11d75b26bdbebe9e0d433c70db2f690249f70efcd60db960fd35f58cd9b77840ab2a10037555d6796f2d10175252f8b1a5a0e9ffa081c7977beb44d6a6cc9fa07b2c52f30228fe1890c40923debaf1331f20264586d64d731afca8dbe8c089c61d685617c0dedaf7f6c847b7b7e93063c76d33d417689cb1cfa9f63f14ba66931fd86b0f6244aac01c227820738b894d75b64f8b283743055c05262b1b8805b75a76b2eb690c4ff09a252f3609eae06e26e6fb33ffad2668785137a167a3fb9af6247148bf258a0f4728816cdbf6d625acdda69d0f3deceb3c911770ee5a143587be0f6237cb7c08e83926db896e53a88a946c91a6910208e9bed9106c97946d9f632a98cb7d8e70d72a190d61596c3d29cdfe7d89bfe197fcef34f4d28523f4eb6851fdde48a27813f4a3711705a5c55b4c78daa1bbf80db130e9e8f84538716395815530c3cc72a18a7d7519225ed182c9424b9d6d2b0252a17247138146f49f86694fa5e5eb3e0b9797410f31ae86481f54455f1ab57bc6ea9c52be44bd8fc3fdc05ecfdd14229046418704eed41e3ad758b2e637cc3c4987488c7f7907fc916652056b99823d100cf95c1daf1930101c7f38a21b7b94bd0cfd47fe228459390dee3880c8e3fa70400a47b43e141b8e21668f9d87514f60ccabff20c2ac845b827ffc9e7f891f07049868a5243954145f65b6be4e7f59f7869e6e048f9aebd10e902e91ec559cb8ebbc3529df1a6e87c4289ff17001ad5149a9d7ea4dbff71479da74e02387bbc0fe029d4b123b75e459b3e06fa5ed49f06bac21fbb5d991f7a3d4a78a501ec877e9e7937d7fb9f2ea625dbf277c9758b6f5b910c2306374494d86ff4d7f5ee2dda9b7d80c24448ef6a15566347d35ae29185fb70558f206c69a0d80f63e615916a97339f900355598c4e2157c546d56273c9f89e8700dd5d5a88bf6f480975cc42bb49017c759eba4009f21e6d5cb6e4efe69eb72c494802def9267fd297dee7825bb6ebcfc027c1fa669518767356b94521b546104ae305ce1b5ff9aa2e5c36b1d914d2b43b820dbed5f1cd7f4d2394e68a60a18ee150dbd3744ee5bff0145bb1b0a280c284a0f4f14f6e47b66355926e3773e516cce24fcc9d10d400f8d0a69fdf8961676756e5dc967ca3566769e3af29639904193e9f75e8f734dd863a4aff3ba5953f5a33dbcf2e10951ef2bfa0f082cfc915c1b758400a25504f2ef09042213aff8eab9572add3bf74f6657b809f46eb8d15c1eec8ab484a1b3bc828106f560f45d67f399c4e940aa135b0a7340b4f82ace130ea4f4c46eda233f59c5cfb3e5aa6e06d470a5fdb2e239ea6066dda1c62db1be4bc5bf33b0e45b963e4713d951941e4cf18872e1f36c13bb8313a04f1707a2bae3a61181e4e8d8ff4cc423f274829afbaddb3e7080ab72a0057fbab519ef351c0e4a7951c57ee791604b430c9e38a66760ec404ff76f2c203111bea8cf1a98d58ee76a1963cecfb9affd8343410f9e7f4ab936d6051df4b1594f3e91998c80101d2e5e5d2b9aecb49b453fd693bc790c6974032d89bb70aa1ab1e7f2dd7251692cb579dfa66b719ab09d803b609d33deb9f980ccf7b6380e7a4e0f5c9cff3725130018d8f24511f307e2a3f073b8e2d341363f97fc845f7b72d1e9802ff6dcc42426f952ba0a9f970895661b2a3462a9cff5c88ca4627faac70166f81a9c4e9b1db5c9e07cc202f075b3a14027dff8ec00ffe387e550aaad03797c4a36999cc20e8427050fe2b2eed75bb94a4eb1ea86d05fad896261abbb0009f34c039ef7248b9848fd7f355fa3774262aeee9cc098941c2e4eca90cbb51c7c9b61f71ce9433ff7c4f3a2a458bbf0d45b1755fb93e29d64c20b8faf5b0d9032c8cbd24f3d1d6d73598713beab819f4cf3b0d6288103f68ee835fcf03b8524a359f20f4730d185449b154cda88d4c4647b679cfe32b3b3965ea422d47cdbf902e3dd1382d67f13c725594a5ee0e01508132ddc93e9921fac0d1645ce85e65ce45e37704d995a1bae525f8621782dea2acf44251da476eb19371b2b6c84ffa11a22a517ceb7be4465f8d225dc9f655a1e0084c4d3e42a20564f5dadde29b9b888d74314df83b32b28971deca197f47da1f777ba3ac3e497b1481d04e39ee605328597e336502c814d74a9f9423ebaffcd5e007914f7b5512882ae8e251dfcaad4f167a308d79ac7d2e193db4257bb29591cd92e39c83acb94232bea90a1724d1a5036e28aa5d2edb52c6a611b58e6db74b258af47e83695c11e4d241c593b40d888abceb99be02f21e906fa450ee026fbea534644c8a30a9480162554290ee14d82ab6991155bdfe35204bf5d00745580685e26335a731309512b0f30a2111a9fcac90bbb2db5cc669d4adae212b5aa2354892d96499f0bdb2f92288cbf989016926fa707093cf4c26f23a3887fab48770ec8804c7b184611f8725403b88f526e1e7df03d7c1a35e16a8498db4ab18d7515488117813f207d546a170904ec09651d8686fda578ae72c6ac6f0b1460ce492f381ed4b0db213dd4d9ba183173f4c20a2136c008ebf84f2602fd9c6a1f006eb0c378b42ab378696dc38ff1f610fe82ff59343b612a9544e56a524a7a3b356a06d469f9583ff843eac82a0e172ff23ae2959c601321e8d2f02f130234f84219ee9d82f560509e44e78ead42dce1e3b1aa669720fcd164dad77ebf246d7ed0ed784029d114bf886e20b639e40e2aa1da50c4f7f301ede88abd223e9a4a61010232c9648e92de4881b52c6b44f9e475c17c4f60efc9a5091fe019d0af957b0581a26c868e9b53880e622af0615a06fc35eafa0f99a6b1223f2600626d56003cf90b8d719ce730ef1ff1102992388bc2064ecd21f0ba587f29c24619fb5a941c98050a76ddea7926f3a264ade9aaadcd6d573e83e9feb869867a4c0cd055784110cde3b1065ae76a0c308fdf9f8a7334b3b2cb4e814744930d776f726b0c8afab8888e3491581a61d12b4242d21bed87c6269f13bf966a986ca1387cd23b446397506fd22ce1869291c9044c2b32a4d6f1b92a5ce749ee18a5b750b2ab6a9c642ef45c0b7d67a83db05fc0582f3a43f28ae6923e9b6b8cfc8029209107a769df51d77ba90c47c880e4c551e331c86124ef8cce78458cb0a1de12a2dc291288c8b7c9901aa5a2e99abcc2552bd908d0d2b1fc9135455d060978698f5d0558510ef815876e80557eea1f9791b9eaad26194e1e662ba461000664eebec991332cabaa75250eec826be7b5077713bc89e187e9d1f23d05418409ece73694eb97c01015fd4b6277c239ec8b4b9b017016eb31b33ef2521b9cef01aad509b3bfec2f4366cde3c0e3a34e7b5f4c8f0904b43b169748c2797599f34a36dce1e92ffb3485cb8cbe55893e1560038e88ed12ea73301b7fea260615f30d0f5ddb408ab4f489f482eaceecff3d5d8a974b3d7a86281bc981609a4538dc400d3ed5676dcd2aefc61315173397d5b46b8d4b4a611bec232407b16d36a10dc42d00e427902de6895f2c052ca933637ab7d79575ba4b54a49aa07ad21d0698700ed1a42e68789e27e478bf99e0da975000ad35305a2c7a840a6d5e4aacbfeb2cbf158a74916d3604de0383aa1c09f7257258627c075d508de7a6b9a314e2af28579baded75d600cfa326747e9e714923a9646d97011ec55ec2c43f8db416618a07e4b2d1cf1c638b654c2a4f560a289788fc94f03f9eefb63b67626724191ca6c55ea1fe5d1c415be2f22e42b90606ec9532b16f8ec50729643671c722291681c9d006bc360290969967793e149fb696b824c0454e09939ca4e74af1978368ac56e9ee659fad858aa29306781aedb77bdc4093f3e85657f5a5935fca2f3c68460c8fca3b8c6c1954fe3ff259f6e69a55775fa48f43f8dbffaff81108f454120543e0a5b0eb3751da11464ad4582f206b8d64fcedae68f11ea8e5d400279c0965e567d0a5d02c167386cec69dae3e2bdd9fd9ac852cf406d415d34794dbbd041b925ee6ea35d685480992034ccfde34f475fff256598f3e9371c4ed90eafdaef3c6016a3d77548aa542f088da45f7ad2c931a5985157d89624023bce6f1289ffcc0470007e122ec5a6dad91d55f07b907d07d195bef2af3caae6c68d4e45d4e158a531f3faca6daf7ef735512795dcaf459dcc7f12bab6d23cf7fdc40dc03ed6f5a01b03a010bd0bd86aee4009a7342d7afe6a837f97322ec9d48ee0dc9faa9f1c8a3003f66e889a03b34b6850c542588e7e320f8beae9e22f276593bf6ee272efa9af719aefb54b77c562f73e8eb0f6f7cd3a5ac52381f2eced1657caab980de0b1c4dca8a15ab12832b36f9b8d571486a596dffbc240ccbac4583a191703925c2e3c6666bce933c8b7908fa1311009ec4a390ab61123e7578d4392bb963cd884f3d42d9d3332970740890450a2ada8c555e307657211b22f1bab9d8f0651ed9796c9741f48ea73b18f5e17579f9a3ba0a355ff8054f076c52c37b9a948d6ac83aac47e57e6fa544a08268a4cc7fc2c2833ed0c68403223c29668625a03b09a0caf3d6da419ee37dacfcf22c1bafaa59da6f1550835e0e277c0025ee8d4ceff172f388289e1c7a89b8eb27295d26c3296acfd9808e5fa15240939686bdf3d83688f14f5002988cec0e695841514c10f732382702133a9da43aa0d55ce9ed5691653d1ef2d9267b831ab72f7ff85b5d316d63964608622ec5225797de074b6e04b2f43bcded6a16255b73b5cadb7ac4974bd23c2983ff3b5872b65af4b6993776eea844adf67eba1d52fdfa5e7557a1c14eb08837d54028495291e862d2c3632f4bf40c005c3170a49baa3ce87e775fd2bfd706293d5fc757a326616c988a570058cd38e85a9047c2e4722716bd15c527a87a3114c33b80a413ece0a901c6f75180684f071916d45362d3192a4927beb1cae7ae6152b8959904979400ec6f428640cc68915a0bcde9f7721e9a7d2a00468b8b8e5410393ca0aa27ab9af7e70638e7c0fc162899533a05a1ade6f8d0f3e76498d004500ba92d179afb21949d7faa8c510077f63bfdee30c2a8b3ea2dcd94d2ca4866ce8a4d499f76ba9c109600dc698e06219763abd2645ceff7017f11fab70722e78d400197346e5d0034d287d631689c1043de251510b38c0718951931525a490b111a24b12649d3485be1082459bbc45ded1971db6c1f5bc379eae15836b5fe4a68c122fb09113ca70f3ba37fca099e0d8b1dede6010a0d6d377c696b292c771a9a83b1a66b1a02ee8e227faab0b16796bf1fd049bee410d166b2768665ca613f7ed47c8108d76118a6bcf2378ad49c137a2c224532cc557521b46f1d2b39ad502ea82756a86ff585b42a1e0d16f05699c1c8145a9817ae9753b4b89a0f2dd1f2531de24525297bd13cb59919998ba69b60b719850ec133192238a19c9e1210ce5da19fa729fb90b17b0a8a84cc404c9c0e99ad4c345a6913d394cf99a6056eaee9b20f5bf3f0730ff50e5fc325d95f8b87fa52721efa57a4200f2dea2ee53df356271257ce533a45f67acb325b583767efc7db601134c95af63ad3abbeca32302fe2bcf646fd904460c8e58de565587aad6d5ecd1f07838bcafb7a2352500e0577fbc9ec8f40b4d664a5af4499863338f3f6b643ce2806f36858ca5aff3c3c827ede6c72c56158749b9aaabe21a47fb4df5b0a0910a0130dea4872b205769dc1fad6ec3578fe60fd7f09aeefecb3ce2afdaaff50a1cc8f74983b6a8c5f79d1a0534428604600fc9ed7e20c792c75ef9252a8c8a193797057d4b7a0a346273787de3a5c8ce9fcc31157fb4f1a1dc626ded794006eb4dc7f6e783ecb8f67a5d7c5b1c817f0c3ea4f29437f32aea77f8308b666e8fcdbd165a05982eb61a2251f3c9bb07dad1d245250cbd937f798c58b1c7afdf3ef3f2e419e460d1727d165536b8e3a76a6980a063939ec71cc1158f1557606f5aa0770df917195fc2f11aad987f3852facd1154bb321b86375ad60dd8d4f224db51f35d7cdcd117c9f41a2a16830d4b85996fd7446a757f1f3ac2bd7ab489baf42567bf386df61e9e27821fd614b95cfccfdad73c5201699d80856c21ead4cd20847110f2f5a47c56a458b3b966220be183cba78fa821fc80484a2c5852eb8d6a6bce05e68978737e86d28b0b8705382b8f9d77f9fe078a82361a217088894e8f1d57484bbc4665435deabef8bcf9037d286963a95cb25abd946680c2100e85b6d626f9cc78687d83500bcc23996067629b9004d3aa85a087276969b706c5d390ec85e924366db52b9ee052233cdf500308eca4703e8d517e15bc0d66b81729bfc51df66488a027d8b8a311d0841c9731f7bb0fdbcbbaca39082bca2639471aa4a5cb0203ed368d4a51267091fc093505da01299304f1203f10c34622d4ef2450672699247f91c8d8a341d0585af7b84ca62d04675ead448063d855532eac99095c8a042e5f45964fecff1712d8735e2be210d320865c848192b9eb98ba51851f72e17b99b1897e030675197d845b5a4455d203c67a2fb8ae1facd5385ffefd8af508108aabff3e489dffd2e44efc85a67e2b4e0db0dd7bf1ee970e555478c5f036ad196f728cebce74a3cf5aaac6448b0e99b18385b45026bc2edba1bcdcf9fa8ffeb334983baf27222f5dbefafe682a8c113a7a7e6d39fec2450b9105f949ef1621ef9d3776260c663c3094f1116f9c1e38ca887ed0b7168d5e135f94b174dd07ece7cd4fbbc9dda53c02ba08cce8ce007fcfd57cd23d3e8efff3803d3dc988085263569499ec8076362561dea4058335490bbd31e0eb2b14f9aab80d5637354c15b1d492fce15049fb657f7c36a1ca8ae8accc061562b2cdf35b1057402ef1401218c6369e3d4ea3668cae82d6f5fc7f9b649038190d16d272208673a7af637867bad87202a8f16fb08cc91c08c3d2ef687e90a05f275d7191b06d6cc8e5c087884cf367780e0f7181bee254e2684df6bae01b30f873e5daff79f3c89b31c81e8744ed9dc2402b9811a6ea25f4af1891b97a210e0b926a596ccb991811b22b84d1787073f00296d9cf0fe78f16493d40fa931b3f5b9386e6bac5f3ebb8c2248df67afea05e00095c1eceb958c7d237e7d69907d28edf617166705107028f545bc7761a65e77bcce6ed3e55de61461f1c475922e8d152670d6357efd0499bf6729cf620aadbd644626eef3fd7e2a320d4be73b46fec0e06392e70d7b7a94eb297391c6727223fb26db983c34c0ce75cc7a49cb179e21fdcc1dbed60b6b3b88b08659fbdbda154b611067a75d35e84c68a605a6a17a6b6dbd3ce35fb49d41b16e784fb8fa501ad973fd722babaa23d4794a84de128efeebfa22006c3e4d6a2040547ca7a50fa1820e2182e0b3f97a67750ab4695d9596ef10238f02309e8dce30e1d28002e44904b908f3ef9d71ef31b9d0469a556848be96b309139734099a2ac084884e47285c0840010481dfcc493bcf75064d75df8a0a911773040641a3b9c37a3e6f1ae182f8a7036a6b780f7e86bfa4d922a398879193ec903f5c24c522caf9e64523350020013cf4bf64ac02dfd1d0236bd814191d16bd46340ee934aedce7db624100ab206cdc92401cc21b0363efe4366ba42729f811b4e3483c612b44642af0bc0778effe18250618b9833d7fdfed1b72773281baa913025247fe7ceffb4db56b2ff34cfca226a25fa022df345da9b37e8de7c281a93472b69e42c53841819f26df402a0604faa4621b27265064f5a9274a50f5471f4cb1cd4f3741c0594b8e6b5ae84848544996834f419550680196d9e4803c00a1597d0155841a008f029e9e084207e0ae4ccf5d369bb0b0b250fe3e2cf6840a8201a8123e633b74c654f90dcbf4a3206a6e83c372c7ff12e939ecea696f805ddc24fa5d5da882f19688319d0a8e75ca2105fac093eef9802f6b17936430bce41a48c264abe0f9de25a69ad6982a506c49df3ec62a2ffdf012b0574f67af09a1221b887081a3110aaa1061f07108a275658ade5373d7a307730e217026268af5619369f2d3af904c4baa637799d2b514ee38c61e4c563d1fc5eae21d51ee712482e074da79c335920ac8b44ef264453ef278fcd1e79d95c76c44dbfa54ed01a6473184e92e5602c8318c3af77ad292743874e306097b7874a9951f64700533ac38556265f271199697c0a0d9016122c651869061c924959e6870adb8188b013a65203333bd0168824285fd24d3ca075d5834f3cb26e90b8ece9341be21da7333341a34e7865c89d87006a0b327ff1b292bd7bb5cfd45cbc53e3dc1534d1840c65a7070b8a77678a0f1bf970d6849834efb7ef9f997659d62e1acfdbbaddc1a71f1baf2b962b022af6bc91db24b98e796ff6fc0b0fa17b27e03bf2f6a7792f672221da4686c51bb7c2630e8fd06ce070410c3dc66f7ac09f3286cf576d4e3c498c22384476808d41998cca10d70374b0ce8ba9303a33349a599b090f0eee28fb844e38f4c0ca3aeab7a9c36fc7a3e957f99312be5c0209792098ea04d998500f0b0c7c987736519552d87f46606f23b2146f74573a74b226e8a0e0bece4bba91133d1f5e4dd5633d280bc7011a120465151e521bdfb8ea8c063e5d48053d402f526dd37230f08c386271653e6ee7e5a5ca9f95dc54feaecfdd1b80ba9ea4e5e4bbb506e8209e8cde2ed01f9c552cedc09191c0260a40848b76355302405bb1a29240174fa315dbbc1f4c83c11e598c60e2dc836b48c1b880d16594c485dc3d24043ed0e97d22a418b88255d38a123b2b9654f8519ce17ba7c6edf054c2f0c02dc1296364ba47fd9393e1415ef05a986cdc9c0f8e168a32786444f82fe25812c45571c562044321369229be7b6f028d73179186c5cdb0f1099d00056c37f821ef5720e7ad5bf882bb47bf4a67c169332dcdfc8fdc0f2d11e0fe8adbf912900c84429f7ae822c0eaf294075b48d95c40d636007aac64a0d0fbca83f7cf753c6c3623fee0c9c0aa76abac27b7ebb4f0361469d9e31de06e5fbb58ff77d5be5fb0270f08756f6f1c3ea27a1770da0dc876fd3882a208964a8387f5ebf64ba5bfe64967a6cb08de8ad6bc757c17ec0f3b84a405e0a4db4503dfe5fdac05f6ce69b7defe0d53e81852bd85c6f06e65701baf649c52a313e288f87dbd785d605e6248b61a87f4d9f7dc7a3eb94f19090b9806361fd189c287d0049ae109f04d7e75b5b74116f87c1b1d277d36bb98fc7ef012c8abfc920f30818efee2f1ecfbdca4d1ae684f101c69ddb4b18903c1d572465696691fde1f3c91335048c4bb8a24be245c096ebb18621dfcdef1bdefec9d75721789d6e53451466753a26dfff5faf5b0dd375714fe7536b56604529deea6d62819fa4bceac27534d72d00e51a4bc6ecc1a2f559454bb75bd421908d81652177cc68f3230cde17e5fa2ff27e579cfaca629eacaf15441c38bb1dfe585ef7d806257da0e87de2ca3c24f1b87b17721b55e4bf5d1688ce94cb39ce9a3b521095d596049abe554b9c8e32d235f6939db5de7b7bea3b663dc1f4dc45f02180fde4e28691ef7b132207e57be79ebee195e3467a1dcdb3c0a178be6ea15f2a3c4e8fe08f0b800c2d714c23ad74eff068193c5b3614d67a5d4bc443a23c59a27b2e750697273f198dda53b21560ce3903b7fd61eedf5396f4d66ec0383ca4ce3c2ec46f21e7d16d028d6f991a912791fa1e063391adb801041c667acca81025c62cec684070fc449703e2d2cadbd39320290910521a0860a410c50a244f0671093d571d01542b815d46fadf5edde8c24e4e4c5c66d930fdd3d7db0ed6b876eadf7b544ae5e4313ab3b7c3731c24efd4d957f1d97afba0d97a4ee1c47524e32d20b567a4903e1ae4545070e33f304ed4b1bc510d94c6caa09b909fe13d4a5911a136a760d2f0becae09a3c502fe56a487e01b397e580861e18e63230b2ebe76293393743bd74b00c25533d0557369980f674808bc9a05c13da3ad59503baf467e2aaaa964d740eff0bb27a3169226b3a4c943a8b5ee9a47ba7b3f4d349d58f8ef7d2899a3d570e7dc2485d22817aeeea69c37254784049a440a020bdf546b1f131c3d5c020e534f675010708eef6c1c81b7a45c90987203b57c3c8bacc0682aff0100a4048ef2b243c35d68798c23e0f3417735e61d8e52becc6f697f367ac8238f7df78527705945292dd95909e8eee529602e1d7947f287f26f819b5df5f04e8774dd0f1a7932cf1942af0a11ab91646e153eb014d35d78fe202f49ddc8b87457534da4574104ef87a6f741cfc16eaed98fedfbc845b9c165c4561bec8416f8c39dfb57b58911b1f00669d896d1bae8c4e0837b88c170837b88c170837f8b2516b9efa6f0a1d8037281aa77886e898560cb8214f8c1ae21759163fdbd55dde424a01596ad5604622bed60ec4c8df80c833f810518ad4c4e927e36cff447eee4cac3a3d3a69faafa4759cd9028d09cfa47225da717d021f3e0fb5236194e2b5fc3ec5f52bca789ce2572f5de9e9e3639cea559a3ccef94b39db7771c1e73702a1630ee1dc40cc88fbbcecb62afb8b5a53aa684b6f44c4dfc8bf05c5ad23fe20a2b2eb945b2cb9384467e83055cc380cc0181bdc30fa33483f1c3988b8f9259a98695a59030d1de7d2b1a83a0aa4aeda0d4fd0e7de22d6fc2f9ca3032ebe3814339caf0a8759a06c21f463b2c1b7dc724f9232301539153c231b7d29adede00f2e61fd9470f9cb1507d0c1a35aeeb9d79795b8c439e2867119f3c1326ec7fc936157d05fdd2252f55e48d177217d1ee6bd20e94bd7fafd433a428f40744bec072e8f797f0d39c10dbecdab5114e2781095c773a33a1fbc2e977ff8a8922ddb3bd05b7c8b7324232ef9fdaf0bf3f829a0d2d142f00f1d9e866c1f17294f445fad911deced8338f4c2e9553e4dc894ba9d41d3bc3f5fff08316d0f1067d3816b49f5f6505a154d222aa2fb12c520c902983295ca661d0c8ef1cb688381e4cc7f344e5ade6d63c2444a217bc529ffd926d121b10e895dd0424845a96cbad5db5b4c2bee93dd73dd7b2f38344c49eb6eed0c44134ea77b808ddbc0637e8262317708c73ceb5ea8e094392a7a6c976ed619c6eafceff6fbf06ccebc86cccf6cb8fad3d0fa8449b156dc6684f3610f3e2314c1ec1a72d62da3bc7dd8cf3ed21d79cd6a7c8aefb15fc7b218e11a7e26afcc18af18eb0285b3a1a65a3b97a7138da80c7dae9f8400a449c53c0322b31d07f49ec490a5c7e7f87a1c0832e5ad90378a19b3119753fc9ad7079ec47057d1c7cb6e843a603d505770ba5c9e8de102c5c9702db94665003a32b96f9ad6626e352b6757e495ed6229a2d1a0756cb7421c3ad459e59f1134cc17660a8c09a26bca96a7db7246fbc0f565a47ebd01200f3b1c041700a7259a5d0988f91f2813de3576329bac21b1b7c3b45ae1f707cd0a718c3b3349815d2cd304cbf1b45a4616ac688e2e9dec49447a522ee2d0a7404cf1cf06ecea0244fe863dfcd69a150a2565f6e222682d0594f2d5181a062f807dc36a9901579172fcf656128af594d694cea14281d9f82f6789a25e5c1c1b8caee02300165e73a1d6802da15a4f39fa2de6bd701021da93f06336feb0bc2c41c1a89f6a67eeb6c690aaa90f2f83644858086d6e3ab45f8d839193102318b9196df6f7894fcf33ac424531a397e825e8af5c7d684238b5c1e3c163208d82ed3d1b7f52909f8b1c0c56562dc6ec20c3b41db21db31f91fe69e0aedfa714191a5c57cb698b93cf6e9beacf0d3eba4c9970503bd147c2fae2f92cfe98223f6bb4be81c4a6b2693ea29d536e634138ce99b80bbda3d9462db06f69285bfb02c47900946dd1b5395651e12c52a18120bdde5ebc3fcb1c870d4d47ee961fc447ed66095841f9bf0a836d96543c6e013996156dc3072c8a27fb7588e32f5edf3b8a9a9de67dbe419b65272bfb1a8e89ec7783c586b6856037f9a955c920c9292aaacd980a799694685e2b0d3e12790b6ab449906bf09c3e3989c5901eb5b7c11ae6a464f8c385d7de4f73edc798c38eaef3c2fda12ae3cc1baf800b33bdfd7107ae607c09a37e7c70bdd9a27f5e611e700c4f2ea98b2611918a128960cc9c6141db19ad7974eb6a77d21731785882cb57f754ddcd33afcba64f3673ecef73c58cc4ccce267eb92e0e5df47d50e614e783d5793a4a16a03f2376347f32684b66abc07feaee0b96c2fa9dc56037625dbe6ff4ef60bd56f18e123d8eb9482fbc739a1677b6f86bb9784773abb067ea7aa2f314e5d42c39092f6766bb349d66819a3a86d0c1167ad120d5ecca9fae274e5810488a6ddae7112bf63a3c6f7f029e6a0f78778d321dfe6d9d31fabb312a5ea6eb9acc856dac9ccbc0cb7361f6f5dbe30e37e95abd19665137049a3c07e92d8ad300bc86d476ad764af594297786c8cc66a1666dcc3b71d3406a36c07a9dee6a3ca81335d501e3220faa3a4f84c908bc9d5abf71f2e3bf76474acbf6d26d3fd24ec3d6509aa5523f86f31b9bdeae1c4c0ceb9ebba2ec9dc56e8ec87e6da7f97768fc8ea0df486bed9d3711e7fa83f71518ddd59f062f97f0a9a8417b4f48fe787afbe38cfbacfdc9273f41d6e2f947c13f268a8b8c74fb87d6f6d6f610f9119e5b46f4fd643fb3a0e1bba1c8f1c4e8db641e0fe68f646536f3d4fac1d94d29089e3d3524d8684f0477eaa6cfeb0f9e3c3aff914e1e027226d0fb85a6582b5d5934366d7dd7f22eaca1d4f451a9a7a499ac4d40954172f6331dd3e8556650c036ee025eb6cf7275e7bfe1c1915e21b17e24a16ef8baf2ec733748da32a655f9373177c1faa3ed8a418a88080d51fb2966fdc5f25014f52e7530a81f575b5cde20a6f6320146b7d2b441745027e633c04a61c4d2640e328be1c65fc8f347cc80e49f1b056251bbc8d3d2b8da3450c702f2fb60a59662be4292e633985f9e679953a61ead0623cc382a46812ef3e2e6dad6e71e62f8f6a11e261d6b8ff87c9370f9476b47e04a09341eaa00bdfe23666ae9e0ff159dd2bfc9c5b4d8d861571d5a5e41f9c89351782a2dcc96e2c3716eafecf9673c893b2e3f0bbdce26e3034297376ce8777be45c99288cf3713908845bfc7013752692d94149647120572a1c9816bde0cb359f4c05c207c6c43235c80d3b08ebc9fdd3dcf817db1ee13ef66247baeefa80468bfcfd121bc389d2811fb2c56c90752b8f0c7a7b08513e2a6f2e3b1e1d2fa799cdfb1f00375713094e8cdba43dee60e21bfab803c6beaa9627a6332d5f589e3efcdb4eb81aeaccc38ba4c691d81584031fb5f37f89ee1defeb44f047b47607a39d45f62d05d85281af48ebc798cf2cc2f2efb608f0c7d6a60a720c6e6314421e434695656cfa8ea480eb55d9926d815281cf890be3ed7392c9fd49caa1033b2728bd353f30e166d6ad06e5098baa97c489ffa5c69c599249c0c6212502ffc4f7bdf5f1e2d37b0be4cf4ede900c64ae57ec15c4d34331ca6165328c24776c571ba496038e435c122c9e65e19a402470c3581db53422d004e8868269e07c5436fe5986050507bd41ee1fac2c70ea066157b66b0f5ef68c0e7f3495c6ab8cab9422ea6cff533732376e870920523c957b7ed54f64204b5df9d270305b6ed202b8e169ee3e2ab918ca87d8e6e6ecb1f5046af015d646f227ed325ef4b605a71b6678f9f8f2370108b336eee6ec555fdc61b623d9d5aa3498b56e5f4331b4937655e9d1f367c998ff3d3571f63257a881ddfd64e04bf842b3a7471f78dc9236c4e9db481acd089ccde5d6c295a2fcf336e190c1c51bcb8badd890bfdfce88461b4588fd3948e719c3ef886411442de72c23346956c24462f108b8a6efa3f89ea28ed6803d17e28279e8c4b62f7de88ab17577477258ffde6ae8f473478118e6329c1ce3fb42c56170cc4f49845ed0278fe7313c41e2cc76b725093f51aea43a4eb310d556fc3ec77533e698f688caf481be369151ff416b7271ae1d89c0da2168e28efdc5f1782d40c78e2e4139f676acdf53f9a5b248a063c8f82923ec589664b59a5fc4a3562c2be1a94ad4ab939a68bd351300972c248fe1d8ff6a02fe72f15094325034f7adeff6479068191ea72474a07064ac7cd613a96daad1677c26701c0b07258d87c7923daf05ac8c1c03ac47923118347681e1810de5b23901e419429203718fbe3b9f39a04b4e7c2b40a297e92da7a9c4bffa48e0ba06443b747da4d95e598f82df90619f2311b93b905491638080d5b53c69c6f721285eb749091c58ee6c478e489da29acde7ca6cf3f374bbb7af604b78f2f4080ee2eb96e3d7a4adb0cb11554fa80767a11f1dec4b111033e9ba193db5e559f0eb59f5eda66289062c35f27cf459cc479205187fd45225ca6319b08d07aab546ff1bfcef307a050c99cc86a704c8eb43f6040810394898a1084aa234d25a14fef7926f9434a83eea5efd70536a61e81d123cafd4e147d24e72c9a98234bf04df69e2339bfee890785e29d2a0c0c4b5c411e2221918dae778b7956e6c66601895f71f3f46017c109c481009a502a55fe61b6b8beafc3420c06c5f4647fb4c93615eaded54f62b0ae8cb0b5c238f615977e27bdf4b3287b87c67d09a3b4a7700532684edc4bfbc16ea1a7fc326d92300291c036af152a04580d30588ad5704f8751fdf79e318970c24cf931c75e24c72642b177b009dd392620aa3679effa6a2c258a4ca86b3471868e48f6b1a281c0ad97cf64936db8ea1d55f0c6d4f2520a1afef4ffdb8c897ede286e9443ba8d37d7300eb97515eeacd7e6c73d909beccb055a3a71d73bb48a042b4c9e3496f791dff0b26f0d30fa04223c72b87c0c6869d2e1bf5dd2c0ae27c16e3dd2b4d67b7c028714c18fd107c272a0f8e4f15ce60b09f55a8fd39cbff707fa47d74d216a45759504c099b6458a6d05ffe016921a08786b9a895fe668c50e7f6966c5345464e466313548d723ac80129260c7b3aad00132f1244b60d4e8b4d6fb17a21218ce47aee52c27c653cb61973fa108e3dccd1de9e700a12b11c2fa20cdb86f2d3c6bbd6b7757f56007a1ffa06cc9c91843386bc864a1841747cc05c1bef2a6ee9343d89a7feb996dcdc51021d357b09b937b3ad07d34273d60e28847daddd243461d5e9d76756c0668815292b08c3a9cf3859a600275a8779ca83d282f6f65713f9ec0ca64ae8e2d2e40fdcebf40de8ecc036e2f38784cdadc027876c79074cfc4e6bca26b14ac20c645473320759ec34c916265c65384ab1493a010b63269d9619b69070e025e97af748e9211838db09331f3177f8f23528794f295f1156f2cb12326d9cab0dbab4375ead8d833a4737d35422cdb57e94fb952fad38bc203da0f95b9e911499ba20a53607512c09404254652f4be1f4e509bcc8a16190a33501a550d4d4a67bcf82579aca6c4a7a34ae93fb6d6d7449f55e36fbfac9b55651918dcc25378cdcb172bc9014d9c41cfe489703104f8693f9649abff6ae67b06305b3216b58220069dc787757c52bf7ddf108a4ff5c751129fd714f04d87f91b525e3c44c1cfd5ec7affaebf0d75e0fbe83e4f317dd5c19f510564d56b76198cd11c71b3c5d85a3d47023c426f98d387db90804f33e17bed7c0d3099df3aaa95f3dee98b10c3d308030fe0cdcdc2406439330f9d253bc9d9c294ffb142d64a91eb2b00b82c3950a87fddbf4958d83106bf33742e20f11e95df15fb0b7fe4989252d86231c15ba52952d62b0731094f81842ad5ec5b819921c11c9b5486c85a7af023c3cc1f27528fec52ae5e6b65d18c854feee0666df5bde2c1ca819998cc48b10527ec0490bd114e72eee0581b3870a2871cd7221503ac21f5b5102eeb05b0ed523d84feee3e317a390f456e8c59e44fb6c123470b8f185afbae55cdd0f7476f8b558e2b87c8c0b60fa6fb5abbd12c5e42cc2a9c2b6fec30f7535367f8048c0ef787922a81e43036a2869b13849f7d6b805692269d3835ec57a5be0729be6b5ea975d877e71f4ac3ad19cae77e01157c7b65bff9c91003b66be9cc92b0db04fcb293b0b707c672949fc95a19cfcf3ebe69bddc59865e5aaf20e6494de4acb7ae0f22650b1db8fbfdf49da0cfe1dd8b557f06b1a3871f7320a04c6b0fe933d770cda661a1a733c5353ac53e48d5f6ef050aea5819bd68d40604a3320b8fa8de7806185313bb335ee6e53976dda2d83b42e4bfb9f8b3ebd50ced80086de6f1478ba7e107d205e1e68616c17ec024dd92482135a149dbf09512f7c785ef6b5105f2de332d62c9d14fc6637771f1d94df73522d3ec785d8b6860f13b12adb3545a294ebdab015d738581568fb80e2e2aef929c383778f42b37d6c876c65cc419eae5e3171d59a0a3adc8ee387743e537ad768094599ac569757b2a3bc340aab49fcedd624ceda7bbb8269beb292b0f1697d44c3868b1983ad40721bb4d1027af552a26a1f2debd8f699df2a8b2c07f7ccd09314590f2e579c4d7632a5f16529ba7b086acd65db19ce8fd81e40f00d26a05c4970797ec983bff0111d724506dc9b0bc9f7d2c4fc1af6a486a19712ce81299a37e80d6c9b3bc397104dc14aaf1b0bd36886c88bd97cfef8a13c2070cd1b3b7af905037731a0a281d77a0d2d92a3fa9b1e1979e0d124da40f23e24f75c8a3bf95bf793ba81c9f35dffe5883ef5c262dd7825ff29ad97e0377c7a85b67c97c8cb34c796d0280b970a6b5e58e1bb9396e148fa00d3c93404cb7e35c1e9925b2543cd6a6c5de55f66008882a58ff51b736d83720d34048e17d46cf7ff9e5d271d3e33c1803600bce13ef3273ef420a68351c14ec8ba5bc223fb8e5da9ce388a8a4d227d186e7f621957e21d5bdb0c64bc3e5b5fe79947cce2d1e51ed290d33807a0dd45944b7e7082c4302d9fddfb031096a47d46c1e4749ae079c24293de214c9654f2b15048200a9002fcbddfa79568546fa0131331066ea35b316e345b10935276ae73054c82f014ad4296fbb3c02ed0cf2a223f426bc8a0821cc6efddeeb1ed09c5c94fdce730ab82fb205d040112b4783d968ab4071f726115e00636125313523590c64a8838f1e2d3945510612751e1a79e9b0a0f0743fc858875d39e2e2044f8cc21497f647cc4d48c713d2c31694de27551757519c03beeb8e2e5a64b4de0a59ff18596a88e08c56048515525848fc5616bee310028a5794ada652284a130f71f5ed39738ee41df5f23a9d939b068aabd51fca2bcb765e89c51e5309f9ed8b5ea834f641e81068664a19e013fe633a00c543e469225c288072a692409980c7b399c3147f771ff12f0615f45b04fc004b2e038596cc5b8deb4726a75c3a909b834258e0b6a788cfbc93d80abbe4d8f799971e5092677bfe1bf56160d5cb53d16de761707f2a91286f44ccba33357c13f5acce36b62ee4172a996f07d39049ccda87904888c06f86b4576a2ca1b6d9880ccae743c93c032d39cef18e6af0bbc908e24057f369cd87934b6ffd9208f25d7f898a67ae204cf68d22e0b6f204ad960578ba9a842b27c109d1342c80fbfafb41abe6b6dd1d7e875e4ea68c9601c3254ee6aae07f0554ab135ce3bf00b1df83c31ab8f592180f4cddc0a192cac496af213a7dc022a64f433899f4ee0c24701887c4bc8231b1ee0b42b9d5e26ba01b63a8d7cb305e9e03a58e4879bf8a017eab5418770bb8df66a15d45469bd2088b68d0448f36b853e8b3ec6eb1ac3eddb7087abfccff184012bac6289bd895fcf739ff15e3d1a0e916c9946237bda4844d4c9c687520ca7e47f48e99a77e6f5292f2a6d40596fad1ecc480c884b79ed4fe66ba37074faab63aebbeced56604271b57625e2ceb9134c4398c15cbe90ee4ba286c8064125319807f6d299c9cc20471d96ff508a29057a8d4ca902db437c1a21616a70b792341c1d39ab7df9f43256d2af6ae0eedc9d65b011fbf14d10b35837ed40011ae8b27a0b4310ead7ba70101749d39ab0ec5867ca74a0083ee588685887b243efb77fc4c9e9a96ff19858db3caed58bca98cb23ee164276c3077f817a41b716831e3426d986403da38ea2b59af2ad04aa59298cf2baf454c383e26ab88d4319dc246077528581c80619de577450aa2b58d59974e8b4d86c9483723a3a388167f123c11677c275865cb1cf01322e82d8059e15850a613b1306540070b9778545e53af380cb4fc0a561447de32b9502cb0588201c2cb58376b19dd6144aab20fa8a8dd3148eab1ae03fd0e383acfd82ca2f1d1b2a84dae2c07a00eea50fa5f14020ae5d0f93417ab579fcd265d60bde1047af7bbfe048df37e48fc7e2b168b1442c0fe05c7df72f918c366ff6404d92863d88128c49129ffa2ea31d0aafe337482c1af5629137c899a653f16a2f0b51181278b3f3cd6404d99cdb12ea0d99d5644c48d2b6561a75dba84fdf8fb4297a055a36c333ee1e69617cec85d21f8771c4fa03601969b9fcf11d4b761a2b8cd1a7617fb8882bac0bd3b428d8899a51c6bf169b115bbec1d1b4e926b4fb6f8d72f717c2dba6d5f64dc3b943d8357a44ba93cb094ff0a6728a2330d1dc5f8f66779266a38f1fc9df58f6d10d67fe7ffb1bc27f9be823b24650ae0f2fa791e96d18534cb8a24f6e25d19e3e50cb85d3571b5975afcc7fdce961c98fd159cba7f43706e880f1505fdb2e69c38c5fe057c6f5da97556d814a0917b523cd349c8ad3d97b687d4bf4b7b67854b57e1920146a2e7cd6f0e10ffdfb1a20478a629b09f75edd0c098e02c90ed9d6b51cf59f8a7779346eec3e3cc6227d5ca8a87c3575b7c10b5c299e9923402f882ed43675c9b99b7b0b613ae0cfb10d6842277a1fc9bd581e4e90e714301cee7cadff2d88f341f0bf581e6a171cf32e11b520f6e0f9d6adcd478a1ea842e3a65a6daf6e95ec82a7c6a5a0c85e45c97a5e191ca71f8dc02cf3bda98a8fb4f886bcaa673df6740648f080d234ef76e57bb912283c85a51a7938c1d3693e64576887531da14e6321f04dce92ac513364d6448605f299613bd759d8288bce6cf09807efb2b591d940ff04112f3379294fe43528667cf5c7d691b73f3def248391a873e6ab52064a65c599d900779bc5d3b7b9414836ae17268a94daae833a551b9302cf70037a8df10f2712e80c40ceb6de1cfa5064f3c69e721f45b749a86fe4a54a7cea8db66f1583b5629338ce33aab114ab39bffc590c4b5d1b2b03702860c1a9f8ef4ece2d9b7ca3a28d01272e31af61b28c00b783036e1962544b5cb57cfa02b9c1caef9d3373fa080bf5729c2d1a676266e6cf1b95883fca52f8a6df3fef60e81b149ae3b6a4ef82f8a0961e77ce6080e9521cb700fcfd826d931682ae448b42886852e1cc98d8e17c892b0bb9c848aac43a7aa783a6bdb148377f7ef073d1ab196a36409d504189839b7622835af88a2ec355173c3580486e9bcbc46971920040cbd71032ab1e8a3eef79122aebc2e78e0a4d9ed1c4adf6f9d277aa3feb70fb3564be093bdfd97651ee00829d2b55373fb8d3763c2cb3f303f69ccb7191560ce7cda28ecbbd7552c22ae4d5155a636584043d75656053b87a101c3084fcb1b1d34b6e2cc296aebc6aaa6d393d71e0f5c3c2578ca70817e41484f346bb6efaeddd04c9271075c95b016551da74c4d1f9a5a4fce68a3e8f94d5f226d368e5719f2441535ccaed2eb64d4b587292d8799e6b2814171ec736bf787fe24c8af1216d662d133110412657ed6c50e40e9bb080027a98249210658812a28a8575530a5211383cccaa63075144807a3cffec3688193d37f7835d88a15af8e2395e49be6f4888c06e2449fa0ca23d65674e9c0ee1766d25906de539a50bf03a3eba8bad04cf8192693eee63314deb8057a0f648a7d4c1c901e4a461552de73d8ed5cf0449085b5f55d701b51e66454b7b3f37e39e81dd43fc710443b3a6457f939af201cf4eb499a88caae1df82066d3cc5c71ba0dc5f303ab7c24559c713863aec71c9829e66b64452202cd2668d27bec9194deb4b7d9879690392f0a14876072e02620a850ac2041c64cce5cd970d137c42a79b73c346357e7300da1168e65ee68d045618cf7f5cdd233a6ac2baf6bf767b8d70f979bfb8ebe610cb9a839640219ab4e4c79984e439643265f9f93409c82cbd5a256388c925b835057b2fa16691609e90d462bdbe10c67f1d4ac5da916b945da78b98d64764b842c3a7385d71c63bd93e226c6e66d51a6fdbe013d55b10d98b2c9966b3b0ff1b258068eac3a94d74f86107484d4d2c726ea7ef3285b5cb36464d4e8fb7b0ff272d13f3df01cd22bd8e02405534b50bfa279f1466b2482d66c8693badaee35646099da58835b40b4aec1fea234e84fdf39e3aec123a636ac6ca1af9b0fcda0d7a42a93663a8aa0ba9353a15422073d536e6b221199d6f8bdb5cdc5a785db6d73013b6b92c0ebc7d0cf1c793bdb65cba56193b3ca88d7a61065403ea3ccf7b54d3278d7f5483113098a36585b38d9ad862f4614cafd4cc05547f40525de30b26ed2ec017c242519c89eee4441f12068f88252f9b27ec850c2f8d673ce6dbbae1150e89eb4942aee375f328262083a71c906dab9c9c2aa5b92311f33fec3933a6f46129f1ac574368ae73b036931908fd8a300bb8048128d62cc07460099669901b4d78982a9d9fbf4528d60cd5bc47b73671ce7fd6d564ad98edc41e5a48418ec42721f141c6e6733898226e61279a7c73970ed927f475ce8973a6de4b6127ae5e6224fb090a732dbafc42ed370b89d766385536d58c89473b9b27f7a3532666e44abc7475cdfc88bf0775c2c7abf3ee37fb03ab415c5938de1e832145b0ff0039a572786e7e256fd6604597a0fe48d12f4b438eac47da4b9e2fbe1712cc5bf466caad61a4b0673a2ad4fa23dd37cdcf2c23a0f77ced922116b90bb5d3f5e312c4b8ccb0378897335a0c7e1cfbc4b1c665e0fdb835d3055f40f0519b7aac05676f79eafa714c2e66f67e938de2937ac67af5ef68abe9d0890bee5907fbd5ac1c74d98e5918a00f268b7d93c53830e896d09eae1b05fe33d94d71ebcecc57e7dd94fd823f785e1e5aefe837a99349a82e3b1a2e6ee0398d5d0aa3ce84ca167376061c4d939a7a90cb278e1d05d80c386fd8f3a99dc779774a1dce271dec6203b87aaada03e212a276bf5a131dda47f38feb617e7503e544fb202814ea141788aca53975b607d4a03e48d2a338401372898ef967c388f4409866e53d058242020165cac2aadd7c8a7945a03f459b74fdc43ea136acd03e3e0c23829e07c517ddb78fe97a93de4e620fbb2e4301259b2d415295446cee3c82714eff211ade42b796b737c68ddb4ed4248d42f57bbff3ee00bb691e48266b12fa105d4a23e1a4c5455c933c19d150a1477acac2d53d537977883e50e8980ff92fdd8aa25db3706e6f67a2db396c9d24c5414a8cb2e3f7b3b741ea1a946859ae4a6e9882cce4fe767c59658eae50e0ad837e29b18a156445e7313e82a81b5ae5e3700d833a368728be2ab5b1aaee1292bb60410c41db7f4d23c01b3bcaffd1eaf5cecd5eb8793a3fe432a709781fc1bc7cfe80bd25d5afba0a97bc17db785061712aff10de0e3983041b098375bd7187caa407f81710a94bcda8f8d33172a5bb038e996fa91aa3509b43b55494656d1bc41cfb41c58a8426bb7f55ef0d492baea54de7d5fcfee21abd34559b7cdc1b6dbd7efc7940682f4c3f457fbc7a564a2474ed4cb0db2dbc964579a0b9653e61981922369902082e20ecb08927c0f693b320e3620705c80f7495c98c49b08bd7be001c72c62c2d3e6ced9d9afc4a727b568f9bedb57cd99f7b24799e942e9ebc3cf5f70269fbb796741ee170fcf80678c8b0cf17513d3513e10069cc00f7513df30e6ac77822c1fed278ecd0f34ed6d409e766f4c04f0a8fc38edf4748f5174a09ea6ace7bcffd5f5678a4fbfb248d2822994f6844c72ed9138911b97efb3eb27edeb790940374eaef8ad6c37a7e867bbd671ed662679eee51e2d9f89acbc33a380de0204d17e70144ba5be46c7f89827b0419270f6e4cd407745b8068f6c3fd38d9600b0b7a64ffa38cd0d2a75c400432075aac8891fa7f88ba46e0e31eedfde7599e66e7db4c446f0e789b67851154219c5f214f611ba9e470b32a537dea3c6d8eef68d8d79cde6621d704d8d945d8d56e7939a1ac9f06b18ee29832b791106d787fa1db2981c63c9070aea0f6b2cc3032c906c8ea527a9182b03bbda27e945548a97387af6468d7896db064d9f64b2ac9d88dd065b2b78bbc124400edcc0074599e2ea2ba3a04ef1532fbe6fa23987893ef773834ba46e3934bcc6c14506520504a98324ca2d67111016f286182bd104599ebea0945c820c8a898ab70a26720b2cf73046ce135e983a93e56fb3dff4243ea06a0cd65bc46028835dace0050e840324ccade24043ad082a98299d6ebbce0fc04b864ad0f91038339ac8161514192cfea4ad31a179169be0c151ad38d4a1ab0ac8424cbba722c754e74ca702056a3d7093d8af1ace940e9f64373b9b781b09e10a5eb072a7fbd8a20ee40f72a33aa61568d94b49200d4f1b2dd80a4e915b7f84ed41c3a6134467f611bc2b6bca7531b8258a0504f2da0eff6813e2279dad8baa84c707526318ff7c683e36d861718dcbd3e30163049a17ee46b5d337d961d09292c3326b71d20c18ba8ac4e2a169005cd16745b4c15c8c65976098d9c7f210a81514128b50e856cca7ab90754cfcc5a9653c617be6814d1ea9302c75b731299bf30b646ef60d00e3f71d59897171e22a732a6a8084b6512a2de20c9bfc33061d32921890086f5c7fcd39eb0412e03e89aa8656b7ec10c3aa220a4197d42522ef5c4dd4d0c3fd5404e7ec0f928e0a40d0924f5041aa18020f6bf41c4d07a9a785ed76e665d2e39ae374aeb2a0fa48d1ad80fc2e8e25eeb405bf332afb3796c06358793fe017d9e18e7f03ad6b61382361b72478991f947e2002e104833b5c9f77922054e2de59abf6798685d5806d1e0a45caeff626bdab222d571b098a66007b4b2f88ff548756c1704cfc63ce11e35f7c0186a08d8832945b92bcb9d1ea9fae28e93747d5490694c70591678424fbb3aceeb04f66e80cb22623740fe4be62d8c9f234c57f4acbba82ec8c6b0d7ee40c4426c61fcceff63813caade9948e847731acd302a78eb06bc9a7758a99e27ba3d44b0e4dc728286fb21838446ecf43ff3e1cae047351798bd1a44d33408af9ea02dcfdde53625ede250b80ecd5cdea9842828a2676283b3607008076caa092e6cf32a5e11735852b8d8f1001d31500cb9f1bdc3c5f6b820e4b17fc338b188516e037355d4cb31d4d642d2f39512ca3eff632f1e2dc9af3e28500c0cdca19cbd6260954d2987d33ef7ec01e5c8206b400ea022a8dc4e927dd4466acd4bff73b241ea381d2866770104c9583031fa1cffb4ea7f605ec2a32e1b469f15af9897d9551bad053a8cd3d69376c46a34f3e17101814b9552877deb17480e56029a596a7c4211e6e07f1713d0e431a3b5ce5b0854d803e6945537cb2faee5f4f4904bceb43ba87791f0787e01f297653bfddff36b1a62835a77e2d46720387fb5ca7dda80a143cbb3b79223168714ee3f8843449885c4392d1fbe6d9fcc357a268abc367f32929ad07c5a566002c7985da6d2972af8f0a4d7ae26bf8ab45e6a41dc08068c1574723c25f27ed1d551e744225575f718ac53b0e2175d8925eeda0c8afc5657c0094fbab3a6adc8fb782d01e930258085689a5b20a22c5bd145e0db34ee5926d46f0c77b2f650001b1568bf1e0093d7b747e368240b29604c65490cc0ac72bf2d5b69a523495b88d82fc39feeee74cb9bae58afd0111a5ddf7e7abc11891180c912ba39eb747a3995e467bfc5b306cc910b068b2d441cf4ecd8e137ad6d6bc9dca18f871e21e8ec294678768c18892f380404b48d87e6ac831b1af8b92223a9ba5bd0ed2798c79cc655d5714fd47869af9031301215028fed3126064dc88a967a652f4482a5bd76426622b8f643d076a4a93190c2cb41f7bec5ee095e2e2c13be657c2efa64fa3abcf585fdfd606073c06e673f4b5468c45852bc2b3125b1add09a69532715dd315f0ff0d92f6c113e56df98a5e078299356b9f902a81efb57ff4542252ca53376ebb4b2bbd6efae2e750451064104e7195419916743368f8b5fe4892c22357977c8aef7fa0533391471ae5371069138adcbe75c0b301ef5101f8a76dbe318904881ee8ba90ce46b3029f50f7088c7b4657bf86c0058aee03eaa32b1d51922411063329c4d5209900726080660d611c6036c1d4efd1575ce3049836c3c0af5364fb943b08eed82d1badb68a85133c1bdb0a9cbb42142252b6dc7081a48dcf38518394837c184f1619925b12af2cb771525682125460e531d8f4ddca7a3ec9417db8ed95b3ee875eaf5eb8f7ec57ea66549c87063852539d9409a17ad26be3976ca7d443913ecaa265884153c83d31adfdf4e317571dd42fcd31c4fc23f0673af0745b80f250d68f16b8233816ce852885266a737577796e6883f9921bf41a809edb2d459b80bcb5abdb5afc7a53b60d8da1e98188d36b08cf8b108bbc121ac290fc2c9ff31a7a284d8e5e291f45f3ad4d4e7103b0e1d3daad9758e1fb094ba4dfc73781ce845908a8e4bc4ecc82d0913259ec96f0eb7bb89be138b6fb6606886549c0b1e77593105e8dc7979a210783ee3e41156a14b5144e42c5217dc03459866e881c1b8af363bbc1ba1492d9279b7a7e576d70e451da3c74a25f3c5bbc859cfc562a08b93717d97c5ad0957b6420d0482e72e47c9edfb6add9c440d928250fe1122efb9d28fef69603b5064f0b53f27d2f5e519fde3458c31224286a88c43ac0bdebe5fe6ddaf2954f6d353df786ac756595ffd1416dfebccaa75c5e0ee721bee85ad8bd166cc4f5e6bddfa49d573ddba768adf20a618d42deda902b9e67836f49c258990286a4a259876d21516917a7cbccf3bca2fc8e55190cd1e45b929d3d2d2e45237879f5da92ecde4e6c61c55c9746940bede195b1b64be04f4406692dc9877c8be466886d21d5647a295fd634142cc2fa8348eacdcef1e657707d57b18f0c6f77ac97ddda8f6d329d121f3f70118e625f5f7fbc6f9c928a0a3e9ab9db2494974159d3db77683f821ba210d31701ea5f5d06b0b9b8ab7c75be5eccee26f003ead0464a0aa97b44b284311703b0b0d7844b637aed8f14816a57e9eb409df1bdb0d1cd66200c39fdefd745352940fae7efcdff0562747bab67ffa479f77b33944e9ed41b8fce677639c906ee5343bfd87d052f1116d897086c93dd4994298bb4aa0ba1c59fdcf7d3d1cfe673eb3ad6b7890bd0aa495b9ca056fee75fdd095bd4a1052502b36529bfb702e1ef9ec4ab10dc2fab316f4767dca5d9e840bb573af1a6c3b1fb61db635f7aa5103a4c2c84703631505d340aa9f5a564d6022425cd3ad43c61dce748abfff10cec50a45ad42b3778f3870801c065ed062a2888c2d8f6ee78d1672472c6e6d79a81e0b1eb898e75485db1e434351e803b23152a89fad453800234e38130a3bf99bcb800df58e5569be31776abc90859e22ad0d2b130fddd831192f5135e3fcc80999284f073d0c892b0683e08fe6e73c361f8cc21b15e7852d190307bd9b39f83a010482c1026d4b6b2253a1a7b216c5d9d70d4fa2c9b508989a547feceea7e8355bd913cf58fd78e9b9b5ddd003bdb29c247e98a8301c18cc09ebd28b910dc9f907b5dc66eef4b273439878e95b28a1b40581987d0af0014fae289d50f6ac1cacff6772e1a350ecbb4ac93958f39ecd480229233a40be5be69dad4232065ca2e12c33fcf1ddf5ea353d133e8c74c89c8ae637af4903b2fe0d7d8bad30a11229c9f537ae36297fb85dd958b622dfadb8c6eb1bb506a3930e0e87c5d300de2ce3fe3a9a5106830e43b04ee4aaf7f423973252f3d7fe41e04122ab6f3e8f910ad4da00e87e4add30e510ec5e507aa18c60c83c42278a2de0043fb19f88fca632379d3d6208a153688b9dca6620a38f110cc1da7881335931af60e579bd039504d8c6aab10cda184b12de2b7fb72b21c35ef9d365d09adab647e4b8b4390cc8f8a43a9bc30453a053908d7bd1fa0a68fe1cdb4d27ca4aba9b149c762fcbf18ecba69f8a506cff8927df1dd8e1244497389dfd01a2002d0ca680a43cabf6c6f44d0dfbd3b13b4c0a9114546f92301d8abd400053c8275b209139c0692f506c963f2801ae272211c30a3a013d6d103d1937f4ec8da181477f5f505a64cd0d7b57e19c8ea0f9042b34e76938ba68002dba32b462c5ef9b03d28513dddcb27f3a416322a76f32cc81de3b247f772e6de1cd6428d7aab412b4c0e272467ebe6e9d86eecdfa6ac39da6938c565b316bb575b518207d173c4ce5359315f6630b1e9552e3ad2f24a55401ed235f230d4c18a87e0483fc7000264203b1888247d918639f120456ee36bd29ea4f5745203196f13a07ce875183418922385711a5ce9852b211c3e97664e4df50bcedeae5d489969f48246548921cb8e2c66f8b210c637578d561d9d9f02d36be2ee1bead10cf56606259077ed06773d66e8b42ce9adc4bb65ae81cc6752f27423fc1a956208df5a271b0616e2aea5c383ca2f40ce6be8c3421e3c7ca11c9e2071ffddee1c96ed2e43f820330234816ad47d0d5fbb61f5931b340b4d70b2d530d9b7c77ecf68df1e61872e79bc8f1d29284a1352a5ac02f9108751469d2b7d443e5b87358ae50c4462fd11de12fd3a722cef2b2cbaa24a889d10e0663f44088e214459e61d3c0bb4028fae0c5f937b5dc1560d2154613060afcb00a63b3da3467a46c0728816a3eec9ec39840d6e2055c25837348b7b3c06d8ac59e73c64ce46bd41e33d228cd1a24e5455c185f0ba903f0fdc169871d7731e481191d63cf2428886c06fc5eca800e65ebd3a2cf273ecb9b5ba2780747bf70b2c09304ffa6b1323e3fd33e7b8216069226669983db11f0e6c9fd1e96793b5b0cff7c070aa9195e65437dea9245c3568a3eab95b8d18e0c46028da14690387742e75c2e4a8e1cdea9540f1d3d8e00b0992eef55a7e51b561b6875566c74e358701fc6cc8678ef026b4b529d3cd7c336da48f059bb66778da27e596db6462b1654563d4e39b500ed51e6f3b7c109bc5589b33458f08561f984d8072dd38cb6546cccad815ae2012c8643585ec04e840fa3004e5dd0cb4039aa0b22e1ff25df18313f0429503fb6dfdad575200d50f0ebdfc42f699bcc3196d851a490b53a6cbc0023b3b7802f0eee21c307c2167ec0273dff99414171e2f9778e8d8e722c6dc6e6a784f0a01625ae2202a2c6ccd29db2afb4b9ecbd683cb9f096684c914e8b1d47a8a33e1e1122e1f002d0c9bcd2d6b8dc85634b6775d43ef1f67a3c24117fa8a779b6546a3c8638681e52a6cec80e2c555ff3d13acad398bd60087e29263bd7fe381a08e6c839c85be11dd062df0bb34009582e2431859d4b5fcdfdbf136b733d05ac86961a2b44e847e740c82864ab561b0463eb1a4644344f688a8dd9effa361508eea0c24035e0f8a8ba74c64aa48369b9325b4b1786a3d2aa5a51458315c6e90b1b0cc53ed9a537e4abac3a1d447c95eb7ed85b17994b6a3e0173a2626ed27ee10f0f05302444a6f4bca0118d08c3481c95c2b7f13165d75dcaf0f72e78d42f52d45caf781fb357388620e30dbf7d5a8aa36707fb454b16c82aba161b8e69c5c0b83e57a3a5f6537864427845c210452f90973cd7da5b5b973c3164c16a645acf2257c0c10da6e34ae0facc91071e41de2b35a19d05682034a619580d0387e3b28e4a5d7762246ae1a2ebe7ef89228a6c1d12e372d34e02d925e2371be61bf68f623938926d303026ae6d9953510fb8efbb4c80f8d3c2d5fdb5f0ac125b10f26609a07e387dd41e2edf19938e8313dd344fda4357e311ab9ab8cb02078181f2d01d05255b57badb9478e62b9ed7c9b1c24403aa6eccff5bc734fb79257541506279401dba719e2987383371ab9372c768a9cdaa66ed5e1fd4d4e28e47a0833d16a25cbd4d70a07e543f096e1762a95e624ea0e09e3049ff8a1d5f2aa2c64354fb22a87b6d73ac1b3aa31b16c698ab741ae3dd45dbf01361f6b5d5c169ff9fe9b9cf7618e37158408f902a14f87732449c0a8ed14a028b6d9882f0fe48a7536d3b3af20e950ab33e2491b08a29a9a559b19ea9b34b3b6c87fcb3a9647ae5ad066da0916d69e23860848deba90409c68f09195b53d0521f99a83ea5c52727a6bed27b433b3a770fa24ad2e9651b261f3278b669821e72e365f61df9dbab5bebeb4fdad12d6977993149ef725f5fd3bc71afd5dcf6f87b7fb018deaaec30e40b2e374969fb3ad32c0d204bb318a65975df26d8b8e76e1e5bf4482e180a978eead9c8564215ed4611a8cd34fa0bd588bdbef878efde5b756528e3e9ab5569e0b7f8a2df69622c65a8aa740f1c7ea85894a1fdecdd9583ed51997dbb22602fd66a2af792b35144867dce5fe7d1137153b3e0dc66aa5beb5e7e6f1ec2780476a5e4a7da295c880ea61e3ad85e3e96bd82a5f2ba5ee400abfbe65f9536f081862b8282aaaac7b65afdae1d59d941550230bf93ec40c9970dc29c2a2b2810755cbaa8e8e35a4caf3e37a336b8d474f7dae8265435f53ff4c3b73b9bb8983cba53991e98c4bbf97bbfe53eeab09dca41b5721ed7a8f3aac8e7c5df8ed53013dec78ff033a4c6c028eb6d364241315483f696a9f73c1394bb03e01a76e50afc5d1a347f2880b5601d5b8119a438d1ab2a908226528018175453e55e8321eac30eafd694358f83e3f0cb6a31c68e4196ae78ffcad464a794e818056a16536e84a9197ad03c958c4d9aaf0db73cd4ee42ab5678e86741b00f39c709514bf11f70ae72fa4f53c1c9d32eceef349a4baaf25faa1730948b93c1107926924e402568a2ef17e8fd656e2a1401cc52b9da492938fbca1bd7bc4c3b91146442db84af8ed6a84229b81ac855824eac1647550110543c11306f97f5e815202e551cdf39af1d5c49cec3b4fe5b2b13d61212638cf154a90916719ec9684b40a16179867a74e4e8775d78275ea82c0732a1d30667d8fc2cc1321e4da32fac9e3d9d6db36a6f7a34486c0269c845613426cb016980227fccf8fa6ab2999124e1b40c9ccacd84218ff749c7786815f80ad6b8cd3260394f0157c4518a77b043b61cb9395bb109845fe38eb021cd74ee2af71539c6c28e71e1e4c73072f9ca1b33286c881e31559d69ed7ab2644e7b4487d11ad28c396e132816e0cb8460553051e89c1ec1d84d821a6f8e1dc63a53d26fb5c5d7beebcd8b29a76b7e4d8254897790e7f186829b9508d7a90808d45f0d5835a9867c62d2d4f188801fd33a753494b2ad72028604ec9287a1cc50512240afc4de6b40425a91db8547dd0b16d4f6b94eefb9530b9d7b6dc1861c08896ebfa6e1c61d247a958aa17919f185d4b9343d1ac7ef585a4ce66e85e376c928d534c6921a44b4bd6364f935fa81a4d0701011dc8e504fe346418dec0c3d6ad1e6c381fd06560cee0a89eda67217a65a303bbe78216f005887fbd8a5dec62ecab8e53c00988a83c7c99a53fadb92c33c1c9f7fea50af25155f8ae892a0488374d7ec9f151b42d83ac126b77e77c248ebbaf35ab8ce476377008548b29d93263d1031bd7854060c712591a5794dec9ce6adc1d429b5685b4dea65b0b3d1f2759c07768ae18fbb080ef429433b0e1c5b0297e4beaeef864fc271f440adf824a038f1e21f463e7a816d3eadba7253f96412ac7931109e7287f694096686651a038111a30f8938a2cd7816b9e31050742efc2c43b9b557e55362dba290962c466c3abc1facb3ac003f3b26c776724af86bb7b19423785adb5b0985a6f1ccf61dcbee4c2fee05b7a977080d60ff78c370ecc183b62fe378855bedfae93480d840d0998036d747cd2ca263b3a5d926e8b82cdee29384aff50629639e3db29129e2a9369267a6d00d802d80836e89a394ce8015927f606e4414d3f8bb130f48be388244d7c6f8379f561b1a8563de65880533e43519a5008608f0351a30e94e1f68b60737d35b0d20684808722a0b0b4cd5a8fd9f3a2da0b250907c470696b06240b52de44d53b1362e0560481caed3ed703b736bf2ffe518a6806722c8128ba03e25786df842688de18f96cdfd88f4f7b159f7b522e25dea358e4246ab45392535575aed57b3c9037123e5b3079d9de99b50f652ef93ad336c5f19373e7242e2394441863042f7ce64402e1fe5669d54d121d12e316abbb2b6b1fb1db09bff68e4935e426e6ca72de3d881e06a48a97304372e378c922bd61fa3ddbe9ac05900cdbee090801f85db5f8087fdf804e17380aa3707cbf4c97371cbe231a0c0fc4bb1f9c9c8902b85e86fe4ec504fbaa9df75b5d92e82c2cc62c785e6d4c320926d39eb65098301e2cadda553179843ce2a358623caa5c1e00615badde78d3dc575f4518866de05fea89fc0a1833836cd7c84e92f4cdb5440572f46ac894724fdbb56664b952ac9f25313c5ce67b1c4939e5100c59491351efca9cb7f2d928f1d9f75cecafb1579857e23fe2d35fbb16646f15266154da3e4989550444cbf8c2bf0ed451b01b4f6b476da2fb666ac0da32f9c678c8b70b3d3aceac0b4bd0df487747e34a3f92cba50424880d292b587a499d9637144f60be925d628230a9d25da5c230d99c8dc2581e6eb1446c5fff6e26c2a66ee5dfcc936158858fe7d0c6cac9391df0f1ae21e0ccb211130be6c30bd615ecc9e3974a0baf57dbc4ff4c631128cf1c3cb824cb9c3978ae020556fe54f7544e0f0bc8944ac9508985387ef18a87380d87160dd3eb2e540a297f5af63fb9cdf633734836ab25f7a26aca0d2c350e44ed173b5052c84adbd2a8cdde6a8ed00e16c774cdcda44e0cb243dbb1daf89b9d2adbf92a8bdd4c43ce6bdd01bccb608f697304e72b6294f625e03a3ee4389d7ef5e75470a8f1f27196a65dc07849f11342faa5582997f8900733bd625a002fb3c1ab69a0d45d19f7b487dad8a03567c85eb985ec61f607fbf44fb89db06903d37724571af002ae9fadeedf33cd8352a4a3b17dcacd6a48f213e9f61b64d195617e57539e31745750885ab600a3d1396440d490f2b5b2827042b60b520ad096c17d2df3608d0c4b6731bde94bd8740542b99290353a49da5c4602f42a60209518f18873627df87d99b388be95d1a427ae50f86fcfc5372d703334b8cb38e555e132ad5ee2862a97677ec08bf53c28d3f4eff019cf816c2dc51f066edb70eb2d8d071bde211e6bab39b10af03fa445ca7748d3a9bedbf3c0d22b01e7c1ca4f95ce2fa0acce1a988a366521bee8bdbe4bb0cd29409d80f468df00eae193188237061430a18615955f1af660746744064d5690e6d4cf7d74da0a9a661155703688163e44056725f958d1bfad7c91ca810a38e3a8823b668fc57e828b7534202423584d3e6d364fff2140de3442943dc7c1d87824deefb5ef89030d7a14602e1671429a9505030662213b604225234f03fb0e2745e0829921d25457f92298fe445ccd5a29c0ad892f685d802524a253f5dae4ddcfdc0a00cc83598181c8f22917ef77d82fd42ccefe8653da00d0c1a4665128bf4e5d275612b201d39d08cca25e4a02afe5494888c390fb7d77a07226aaa796197b9a685ddf355cf52e851c509d9d8390b3bcc3f974d8811cd704ba71d9af6d8ca89ece96bc9cbf0e8c86b62a8df7ad143bffa8e2c6f64df363ed539c5daaf3ac5ab24baecdd6387972d1b21079d6fd0786669dcd9e6b9d4be0840c389791bfd5475835c49023f354db59861a2b613a6058082410c20ac6b5f0f01b368b15a3b49b38e8168160dcf7aa4c4779070d0c6adc3eee388854c47445ecb16bcccaa717fec29ff233527cdb3e2bd8f71973321d3612058463087b294a7bf270bcc8b6f328d1b6882b46484326d135c616e4c730b0349376eb9b4ed67c808f68d994d7edfed2f91bdd438da02cf4bdfd8f65a4dab66c7657e2922f4b6ae1473ce3a33e5a23875f606cf5019b423dd1828b78601429e12861dfa60526481dcf1c5f6f69c25fc12b2b630c5462c09a0b9b6edb925342a40de0cdb1f9eadbceca2fa434efdc268eb327816b1b9a555e6afc9ec2c501f92412a95dc1821aed62aaa368458b89099d5000a4cdc4a380ff244d7ed58a05387835e98af2c64dd7c6d5b67fd26a47b0c7d1b17b0619ae91323704938358b6a708f183f16fe0d313fabbd48a9e133c61250d16d700fd6cea67a5a21b54d095c93daa33959b55414b52d76a8854f849903c56a8667a51e3bf2f0988b1c12ad99c9a790efe15354af0134c08d8245a34d80e48a44c22b9bdabe627259244fd7c68719a053c72d37d7aa957763c4a14922192085bac7d77fc881d0629f825c5a1f2fdbd040bfc97e8c01ad42699e898fe926b588fc2afed1ee191429f64f5a6201e622f84851bc1dec4a717126ed6d0c5865fcadf513f85b545a3b4c753aaf03735e19ae3b4d6ac7947102a3798e98f628716ff6be4b6a193d0604e52e043459ad164f8f23f4b177422dff2c3dc4628e026f63f7524f0a85ce87a25adcab91204b058663a3400aea2dc12779993be69630f99f225ce0cb3ea2f647542614288b48b617ca1aed88b6e91f83e2c9aba255a40f9380db044425a1230c40cfbec76e4936f0cda45ab551730f5b656b461050431c54d8c7ec21e8e6a0d809a05281a44aed218f326fc4703aac7bcfdad33ddcbcd96fc036c19a6c21bc56e642f147635b26b412e16326b2b7d1f579c35169c391193cc8eea62440e2d954660c8aff0733ca8d2b851d662840b73291bbdbcec8e4cbf79b581d55df74a538de812a690020ae67f0e1e0ac1777f84561a7ab5cdecf8c4fe2f90614fe33ff3cf818d52d50ff2db108cdd73e9ea368f9f81a3a3a14006027d98cf53f19ab2fb4a3c3f2abae7b5d8cb87b459ab43e4e3fcb24f9b0234d4af5c5fbf6d6444a566f823aa3f7d5d97387058d58bfc85cbef235a95cbd5b0b0969b35342e0fc680870020b3ccc40a661cf94530650f8b569a3379c405d60dfa1547becb23bfa88e22a0f59fb2ed0ede21748a44a13425c1f07547157133ead185afc0e603b4dfe8a0aa71d40aff46f9414814a71ec976a78e40f06336eb4eba9ff05a4ffe4e5a6eb871eb51b557e4fd4eee900e508f26248a3d7e833145616d697c3c95d5b1a888197a519d5bfe2b31bf43c1d47e640e5fb46b31da4cf836d9ff181972cd3c85f214a1faeb4cee2dbe0508d28b7e754962340810f523f3df53e9e9e00e37c37c52003a198f3868d0cbad74729be4c965600f54d3fab7093607f20af2e3d97800fccfb19ad0c549c52704d2e85e0e4a2ce459c1300c2f73801ea819ea5bdb942b6b65209e3a8f116e8fb1093c3f9ee5c8c9f7ebd9bc3ad67be36648974f74eaaa9c6bd9bf9b537c0ec9a717988f5dc67316937c90d6b73ca3d7119b091fb9731a18e2e58f12e0da6ae6e40c1d72179650f2043595276759ba449c8daa93f8bf6580039fb8de45cec8eb3e9fd246a0767cf5cf35a43808bf22b945f389aef3f3f2418ca2dd84cda05095e91532884b8d105b18cc53b6f1d70200e29a2fac7f4c7dd4eeda02dbf858ca5bf633de985cafbb0f272b42fdb89205430fca9df87b54e9ca8c39370ec511449bf78a54aa9ee8fd0a8df0f7f97c9fb09373e7109c098c9a53c809257f78b0ba967fe491f07641b3f4ce36d7b1afd1aeeaa5e3a5bdab0d8f46c93267de3c0c8ee0b310c21c0e13606f6caf7e2f6f617b30bf854ceda6cc72b13c8df23977048bbe29d132b064c56d553f050bb0a7ec88d4eca35977cedffd0e207a33763a6ff45cdf092d85e72805b653a14316cf888c58139e9ed101a1c6d4fcada75d558b419e493dd5355d3f2c6f55a8390addd6a3726171913fad7992d39c57cf8f027a0e8c690e47c378bfb26674206db5073e57dda61162d16cc6ee9bc884caceec0f6266760fdc99e81d5c9f30e40d9fce78548d60140a80b4ed406f6567d1f8899540b449b0defc05e80558b54a2f49da16de45922e7ac3b6fa5172f2861f5a806717303de710d8c9c7c5fe289f0de56b9197c1f0a8b1ec7dc1724e8361e7e862c6738cee7a575211fb80d42973fc5be6bc14e117d1edf11ee80377e0ece99ddf4aec5ef0fdad1cd771f4dfacd9dd1c9f10490329af6c422e524d8a32430d4cb00c8398692db02125d1fc050ba68e4e64c6071b5305403ab87a6c4e22a9b38714a77958d335265756554ee1a74f4032e4c3348c2fb144e63684add9769659393ef755026f69efe0c0f07e525a13e10c62ea4bc5201399cbfa474856928e524899b997f5ef0e6e93e864b76f6a341f1b163e0a8e13ff2ba70760c95dcd74cb8e5764b06f9629d01d21825b7492aaa6eb0ec2ce59dfc39e86b6c13f1340a659c729cd99a340a955dbcb7f43a9ecb99fd67d098c18f61ba4e9f25fae5190c28cf79fd47a0821e45edcf2e1f59694acedc76d6fd6260cee1cf903887d4c6054269329458340347e65fab1fa9ad8d7a6c03e285cbffdfcfee8610add1b183da33fc3d5b631194ffac621cca1ec1cfa4ff834c11dc19bf11b5f860aa408fd2db82bb0373cf14cfb146f87862d7434d04fff234a623316d05d79c42778139fb8113057d3398794be28d1d9328c39661e8183380390dbb4b25995d49dce06dfaa15526a7e1d7005c1b568ed5dcab8f7b7637e5a33fd9d5ec2b648dc8c40a4384238cea226eecd3ed663b1b3e0547d4051c439520db6e51939e610a32a347de8284cf7c5a5f87be9a3f93a3ff6ea21dc79f5d662b65faeb71a34cefcf90dd186c7ddd0916d5767af0b804067f1fbef52924446cfa4091de1dea3d26d963d9902de05ae50fbcb2301479089db6a9b2a716a25ea14552cfbcc7140f2d8179fd68ce5c4502b8b7c6ded913e7dfce49e73cdfd543f0ff9b640b7cbc97309a8be475ade8dac96e3baac723c70f7b984943b47bded999f722ad98982071cfbe9e6a3356423f2c2c52d0ce41dda7a1d3b4be3e3d8b315ce1c0df25882b6334c570798c5c13cf450c0e945900fb1c5b0805aafb4e9724300341e9c1b1c46a6f39ce3419e743cf600d8027d736853c6b2eb8652e71f4fc073e54664710feae5c476e0600ce4ebe34031521de400ef08e0027f2669a11adf444ca5f2c7800da3d1a0a063d2ff424344e29e26f0fa484f23b905d43ac02bf3b0980cfe767f4265283d3dfbb790d8da73ffcc986e8192b7584382d296479526e13ffe4711fe7284aa89dfc973ec2cd4c5498fc4123766bd430ff689f246c9e630bf17361310d1835037a8e23c0d21dbd5b8c9ea52103ffdd705cb1359c9e5f6d052c5fa1aa675787ade8f4c9e399adc979dcf7367255fccd00a75f8969e9f005f6d8c215b0773132dd7968694cbc42cac11633b84f494ccbf52d770525ba29a32f8fa31b827380db65c074ccd9be31e57fc44638ebabb337aac9ebd5c5341df7d8e6d7f6c7382df4c7f2bcf9f42de50597530458ab345d9b58809667ac2aa5ed6a01775ae89bc36d2a73496fbf598569ddf627ac10c3b052312701b21a2764da5494bc91918985586e296bc176ed02166878fb17cdcb27992705215df3c0855f87271b8bab4760dd32779a7003b3048b732d25228e590a782c09e69ee9bf91a36f1022698ef13e2db3d9b872c5876509e89f7ca34d7b28469a06089d15d0fcff737e15ff41f27276d8adbf03b5805730e016ceb64a2e4c0ede5be1223ad28b024fc7faf544abd25a7536563c5ad970bf08244a3506039148009f640d1dcd658ff38db5df07b76e8ec0fcdc7f1fed084d9c280021e32838505ac84af790655b87cd0ee0e34862d889f44783fb78e16d05a6008e0e76c034a18f01c76cec8d9a3ac31dfa4bbdb4716d8fdf132a27b126afdca7111cf280442841a0071fdb4837e1cf9181841ca7928179904193a948b0b939c84cca7effe7d38fe4601a3805285fd1d93f5afd7cc382af038b61ce1a38d2e802e1f033cafa6fc14a57357df5c6c67264ba773c0d465ae6cb07485366ea44b9b7d79a162105943d825bd71830eb277689417a55cf61f913b0590f1c0e43e4d66ccb0fb443908d416995cc6647877ea6d2ef213f0e47c635e643fdbcd79644f8463e0fc8354dae79525cbe559a8231e07b49f59ea0d338a92c6800418c0a655d8cd705def00ef37eb1489bed247a489a677b669430b0ac1ed623294baeba45396fbe391a3be888fd2122769d219eadb44b5633a3cb81e8a3077f6069c330f9412095ff53e482a7b4320ec47ef6e939d97da90c94e59701a65faeb9cbf619be0b92fd396264b9867c358b94dca50f627fb7538544c726845c56e78303a3ba2fae977f52e2a0c85c018eef878da23354c4ac89a5bed03a74748e908ef28e451c998b0db061011881cc796aa935d22eef4074ca01fffe327f9f338f698e555c4632fb617aa2ec3c8540c1bca99a338eedfcb339fc7df30ea2440ee41d047e9605b412401088ba39056935984400004020005010c969004649eea6013f65ddd01091f1d3642929c9e24e680dfc4fa8a509b8b794949494e4aa039da3c21e18b6a7b76d078d16e214ad0f5f00d24521f0c50c2c7e88b9e006d8821c871291b174c449e704030b02783143d4c2056f090d1752000194870c7b4cb89368022e9d12a235b1ae6b41f144d7e59c18d4751d8fc9ba54d16c4f5736291b8e8ed881a76b35d162a2eb5a4bb49460a354070fddcde6c271bdc6db3c2ea628d11f74d0d175dd1c5be69872f489e31d62d345abd7a1070e1500c71f49969a90d8d474ed6db7daad9b350707075d8efb2fb7582dca2d56d353335fa5672f59ad2a76935243737ac3098b919221273a2943459ee07c974e9bdd0a85a1f2c48d31dc98ea90506a434f2b881610ad1fd8c0a2ebba961636b608f261e9a6b406045dd7ea2148c7c30e5dd7dd9c1a653e88d3c64d1a4568dc6d8e521ab77ba14143b7068d301dadebba0f3aa53308dd6c67d0e9ba35336d460365706df3da9629a594523ae79c73ce39a794524a29a59431c618638c31420821841042f8e28b2fbef8e28b2fbef8e28b18638c31c618df7befbdf7de6badb5d65a6b6dadb5d65a6bad94524a29a594ce39e79c73ce29a594524a29658c31c618638c1042082184efbdf7de7bef418c31c618638cefbdf7de7befb5d65a6badb5b6d65a6badb5564a29a594524ae79c73ce39e794524a29a59432c618638c31460821841042f820beb6d22923acb222660b30baaed336cf44cab4ef62db22d3fad679cebefb991a5dbb2dc974145b8e73da2ccacd768baabac574156d0997db37ff633d974314a52ae2744a5540e994a808e46982ce0206b01215873a252afe744a544c754a5454e994a890a05322c4a853224446a744c8894e89100c9d12a1dd291192620517f3428bb2752d254bd7526e5c6e309c2d26454bf1b61c2ef7249369a72b5c6c9693758fd3370d62ae9bf63b8a87e16cb1bda497663b899a9bf7ff6a6605479bb570e8bad60d5dd70a6403a104baae5543d7b500755d8b8619a668718acaaf5786f232454b96579828599a9a707a4ad768b61a94959f9ad1644fa6b4d4164f4593bab927551e67658a26eb56fc2c3635cb5234e9a480a04b82a46bc564b6ae6bc15a5381a268d2edd7eda66bdfeb59ac2a66e3b758bf55ddb49a255a95dbed55bb7dc132e5f692699cfe54342892b4f8a6266f3333eb943cc60a54142b5c729757e6e2452a4a14152b5df4ad736f66ced14599b96cb9b44b97aeeba6e068b22eb3e670345917271ae85eb59a6e6aba0d8ad2d2c49ed8be11be6e4d2c09c009136bd2e82ab8d95cb797cdd79890755de75262a2775d7723f4d2fd9ad853903e4bece9baa62626906e36d7abfb35b12fe39225b557edd63545b12347893d5dd761d75bb2241001906a603d39b2000c961656742c29587e8ec8a3bd0d0e1b57e031670e427de0e8d06682263ae0241c2b4286aa389227091c294d1ccc4020e308380560f040a1169e3c1e8821e506045bd8caf0e00f0e5aae4021d38607556860c1a14b01c9035ba8099d2eb7c703240800c12eece1c39b2cf4102a93e40ed49b16d400e083112703bce1285035e1000b1abc61b245879f471123377c14f0a588dba229dc4031400e523c81c1759327481d2a2da4fa7023c606294f0d8ca0871ba63959c8c00680579b44540408f2e342b539628a1a216450c2539b39486f1cd571d2459b2d5acc419b5830a38d036f64237b88e9808da139ad07945081c34690ad6e8ec83c9b367648387377a0b1791240830f9680b9c306813e7f7c1274a85d9d31a718400d9b2c5735e4e1a3010a849c5cd90a806212a80fbc6ad20611383809c255000f48b9a28c1eac355db8a1b52b1d4cad8921053a40e0f000ad99baa12989141e45ac8975103232c4093ed434b20265c221431935849a5c78820e0f7c5093c24e608f12d102352f24a9257e84505383440b2b3b4cf68cb1c2838c0cfedc79a380151383d440c34623615567ca901d84a29858497591204c9f2777ac96a478b00354a33072722001d246025528ca05a145a32835419ac87d5083270085aaa9dc9519be50634b0f04e414d082069c1b134d706c0811149d0884e372a012470e2e5a900197eb220b2f38360de0a2e4d2a0a107a104700420826005303588700b238c1b395c7169ddfcac31040553e0b6b8c95e50a265938a73ab6dbc2dc85861713b8a2ae1e6e645800d8b2b6de6e803e660636146451d3d8bead8361301f871d2e30bdb92463618f828ea92668f464e2c50a48433d23c11671a6cc470238d09431c01c80962a8d2844181098c92c0973447025530a84303811aa21b0d86a9278e9a11492c50e0091ca46a7296e698b2878e536d8b035eb67883b5a8157922890f089581432bb467052caa16b882e6c39b9c8649c9098dcd0e22040021e8a1e5079a30a0da63451bd2861e3b9278a3646646cbc89b3eb41a33407be060c18f38706669ae7051e38f2917661ae020815c62c33303c088202748704248151741984035c8a256b5476a01245070e38daa7f430e5448d132475534f2a50986db1119204747f2302ac2caa698714091820f296428e439e2853b05173233419879c2042120c82e78c2834a80134a85c791151dd03a06544ba04903103800e04045c70b1c18a990a0eaa2a6854548be3caa092a1824420d89a0d01c9a8375e79430001a2010cd2596862068e0185aaa2206801b1a2b728a78c1860a0f9a04623c4821f445486c0d293bb03e53c288e1b0a446015834298ae1e068400c31f698189422d6d04187a81e62030c9a62b3c315413030a6e6f8a1041863607e269061379a520546e5abb080341500a373045152851e31602c3a5e8009a286c8d4150648a0c806a639a65648f3c3183a22a833a51799d0c3912b5f4c2939e28da1a429227c3dfc60410e3431dcefc456c30e247ce0e39780269042af38783e183a570cf14316423e055e84c1080f014ebc1d132c31c68335da1751c42b00f938e443a02267c8a229e8f05163781125754bc037b0436e0c273c4edd0d25f658a30aa9bd8715c4fc24d6f8d2af72025c1e106bfa14eb84c3c30929fa1025748f24303e9c8c35be849102a511a70188354f304c455ec39302550f7306f126385cb2a13f5af0a418c8ca7108d0de228f2e2f444b72360c14481088a1ee8bed8330e4829cee860dcdc861b3453782f68390177b00318568299a9c94e02913863e8110556283376b74995b1d97157e2cd21638f14505b43f9e387307b592238685a3334a5000a60989a218ce8c10a5836b840b049de102e88b1d3e5c169d89000c30d90a22ea78c181861a5402bc14bd8060c010a226202e787970678606cccc617b55a98170552809322f222550d796157ae8408d2a5e1680030c9c0e6e0000873546285dd1012ec9cb92336684d10194d614a62c6e72e840803e5500b4a195cc7cf101982b840339337dbe0e4bccf0008519344ed6a8a242a12a33b3511600d2d802c64c6745ad0b2cb7ab3255a8e1801c4a5cc89451014e1524a298e1a68c8e7d54c8c2ca2b93819c49811b81b290d103a9cca121969c9019b4e74a1728de6081cc9d254e466830c01d325f48d8a38789063390a120c81ba7307f8030868e3276129925328c21428107ac1b260fc680a0a60a1f2f8238268b1d1bf2284248cb1806fed00145027d3610d3c62125623814b9420c0f51981c60856707316b66058018d91489712a23c71c4b900c1263801f08aca91285861983501952f499188499c18b36ee07499008433322b6a893124518ac8de4e92855985696206ed20c22305b3c4992871382ee807101900310c570680d30bd8a9b050cd4f10198e7278f228830fd2f7dec49424c114d4ebe4471e55191424fa32f2704b1804f1743acf842068a932b428852fa52c1158d9cd0310cf0a2a86645cf80c8065e908023072fd64850851711b8203ae34c037fbc7060061e0b00f174c80b042948404211696e526f9cd1c08c8f4565a47eb0b243057a9e7823f5460a0f7f46e0e392a202b3230486aa404ae90801cc4c5193a00b1a7ae4f61840f02e363032736887325abadc96305007983742ba3ce1e10e0f77e81dba04b133031348a298b878f1270e6fc4181170e14375800049c44cc1254681adea081e3097f980094bb8144dc1a55b80002bc20c92714045126ae43088b2e1400f0b45be4c0c087170660d1b083ce1a58a030cc8b08648f2d2664b1e0abcc0a835656f69220d0552a8313cb085843f107190c88fd7162f2c5460c6054ce06c31928968630e132e6899e30f135b801108192d433c70850d08b8b08096383d844187010920a0050aca0e112b4608a1658119fee4bed07342541b10c4d9030d271ba274e8237647052c244a8deb8830d098c24994143b847228c4a74715a003eea9a9053e59c45022091784d814c9f20710240cc07e50c932db50b88187912dcbd58214c7067ce49105c9161be1eb13a0b4882007a8b6e701a8160a7510011e3e2800c5e32854c8093ca6403139c3cfac554415163ede645114c3193058a0e84fc614ca42044b9e2db08d2d4e6ec032a6481c688afc11050b131b23d049808a2cae240a42264363f6e4ca11475049408537efca1cdd85151a8034718583070c88c283fec295073af02048154d78ac183204fbf82174b32248ce054004d1a78c15370000a2434a4a61e5898a88444e6564b082002229c468f106aaca193f84a1470384aeaad490c71a28d6e8a3abd8ccf4611d28024715273c89a227ca00aa120008232cda7325022a5d64e105060bf811444506068a7002137b800a4c890f2dae96dca022a568db145940786ab4050c728ce106e989500d6e50f044c59ea7148a104288a419034faf1210d109e203d353922762709f3b72e445708d3ede10c3486ee20238984ca01427d721234da146728eb2d40e8b888848342fd9c1400992a313a6c8b1c6e98a8c18829822c492a329d8b8a2c7940f126901401630509882c5814261b48168cb14057a88608d1077a038b111a6d099139c744e390caa9a8a22d439594d3073c6e8d3394579e2caaef141e724842a0f0b66d7490923092824c8d37552febc3d86a0749d942a07f4fcb155ac0e755d27e5a8cf6b090b2c3c0b62c8e14a5b4471c9f980119a27e8e08122060a53b741a2ae53f201d7d16261baae05e60b4b8f3be2688395460f72ba9bcdd5c3ef218c4c969b2d35f9da15ae07213d1cf5c1c3a2aeeb922c3529518284072e78589a55e56434beb4e467b1192d77d3b298b6e1d678d814cd66cbdd663459923f8b2d6192c1928db614a5a39670b429244b4b378fa3f97de5a9923cc1f7726596bcf75eae0c9225196d6aa66d6728786346c999a633dca3d9b4a519ee16932d699bae3d69c97892705d9219922b9b7ed9348ccbfc110006e440472987205ea4ba5697ae6b71e9ba1607ad2d5d999cede766b89d8b3277039dae5b5272c39aee8630b4a533410c052aa3ebba8e7db7f95b6ca66b4bb8188fc96a6b7c105da714684fd70592d3d502f5aadccc070ad3d57455a02a815ed7a9f1b34010040ad275b8d82ca76403ce8644dd920d5f7467966c1ec7b54dc3b80d419c69a1ebba334b4a368c60830767ce2ccdb497d168fb4adb6c7a6aa66ba0e2880dd0a1a7295d1e40351a74e86c63684874b3b960385d637285cbad2937dc2dc7650986d3b525992c4a539306391849226206464a33743f8b94fc6cd03dd0470759ad2a5693d9cc44399734983547a64f0595c62aafc22a7cea745dd77595462f9ec764770983a5c9074977e36367cd6b6a4203464b8e98a80a3219f4dad113126deef042012767ac08030d36303881230f284de891c150131374b00d70888918a2c021081488e064115206a225f078c2e596e70c27b616eeecc1979a5052a322844c9d0e452daa701928aa22664a0051dc9a484aa344900f7914b111386165f1421435ec01b3c18c041002813a33849b7d479e241ee82641c4054065fa1480a6e9c904af1742a87c0cfa6202317421305cf49142054a0ca82530e48960e80c2d90e02ce5f184d594340c39d11288096324b18249054d1ed0e3874d140bae40830b520e2e251e0169b0508ae12aeda141694f9daec3d9683bca961ea55a353575dd13d84d6f91c26757b728b7aaadbb8c46e3af57adca06abcacdbcecf58a3207c3d57c7f81802eca5cb7e23bcdc985d739edd0c29e5e410b53a9852516025972d26469a9e9cc9925dc4dd7acba66214e4782d20a749456607493cda2dc3cae4baba9eb5af8c62fb328f08be7a242939e3194f490d0b970373f3595bb2959ba6958941a1fa5a74bd775295471e5a95e95462f95c62a28c0d0755dcf18521a6d5daa7260ae3c96aef3372f3335b41916dccd4be95f7ba82b5cac8ac605e7a9c06eb92d352d3c66f355b9a85b6f6ad255b6aaaaaf3dd4adbbd16a4f2a8d95c62a53b72adccd772b4fba9527b3e69acc9abba37423ccf15b2c8bf74f373b665823909044d775371c8d66a333d67d12aad8a6fcccca057568e8ba1f83f94ca750e7d25bef25273ab1ae1be18aaeeb9446806a29c9a0638280d5c01e7ad03147a0398aba39afae11eb8f561f02301aa24791454c77c04450ece0808e2ec7d5a13c6fdc50088a36d860a353c3081a53cc889191470c23c028f405025d40d9224d16345c41861543a8b032859c280641d13911a509394b50a1c41024c4184103118a868012c4093f1412847bc8b3431c3a4cc1c1cf0d9d0d1a10143424f993a70f1f7c7a0c5cec81f28220179858706185217aeaa4d03a214e9ece843825b4ecd42161081d1746609a23480e1410b888d3e1f0e1419e3749da40c1465f756afc584dc1c571cb63c3b542b4136650648aa86840232636648a8a2fc747e9dd1ea4e59cb1f21a62868c3234904933068a1804c014fa6284973c52b12e53b818e1400b1b515064b9012a0f96ab2bdd0a0755a8c027a65c64ca102701a4b4a2b036603d693911a0c9100d8a34316178a1580e6aa757338fbc2142c106ec9e1126535cb12579941851280304308092240d121ac8b8608805562a903388a93b12850239541819b22466021a1449002582130a41801fc813870353fc14e91ad050309064813c7c28d0b948008a20224c2e280da983406b489c3807b4ea1830c4850298040981c205019d8f3c032481420bd0f90932258e3c01e042009cd047070711618489028d21a0d8d0c6053a7734ee155bf3ca5e9a8072634a202702d48ec908495a605a32011407ac5880101118c5a01586d04ee0a0c3f082216fdc10c58621a03811e08d1b902e385a7404861a701c19f2e1080deda21b08ba9bcdb5a4cd9fdea6eba866391807014e0c89237610c3680f3cb85cd1e02a51d775466c36cdbb0e8259a774255bb3883582d29a2d3b77a3a0eb3a1856334577b3b93413dc2c969b8a6ddc2c3615db4baa723304d4d09bcd15abe997c769ab98adf67a4dd1646766b9971555ccb6e4ca53755d0b83ae6b25e9ba1692d6055dd7b2a05581959c6e29caa52b198eeb35deaa4cd72d555979ab996ba2c33175b8204ab79b920d822873b3e65e8555d24460bbd1b6e06e3458e7d4450a0d82ae5b22e629672934214ba26c991215850b15a5d91fdd922859a274f182456976a8ebba25525aa644c102a5654bd77dc1f2e4c91325379c9fc2dd68351aae8a66fb4f9af02a6d9bd238dd6db81b6d4b13eebf3c4982a409f75f6e2ff88a3287f3546eb42db81b6d4bb7d2ad541aab3ca934ce9aa3d24a5452baee49a5f15669f4a2a75e365f7bcd5a654dacea75d353b3e65e373d5569f4728593e578ecff58afa2d164525eb7299accf62aace26f7acf62342ee3b35ca5313647d7c1707e8afb4e7372d5645cb0c4aa30b9796fc305c1dd1082c96635b183cc8507d6a84266c6a80914dec821045283972b1e606082435f946041744caabaa30ebaa32f4795e900d61252074863e0f8577f4a77ebfc747ef69909ba8e75a50194243e065d6f098e46b369a1b4ef44b9824aa9f7a43a82b09478142820052263cd1a01f2871f48758e00b1707df081c4882502d21e7a745d57009c4ee94c1fbe4a942f6e30dbd494deddd6af3fbaaeabd16ad14fcdb46dc92ca697542dd954fc85979c57991b1b1dd061e476e5a99620ae8cadccaccc2fb3cb94294341992046ba202e0008e8201c4b6ebdae156621ce96e636ede4a40fb8acabc45e42bcb1dc73e37bcb1adb1aafe6f1693ead7fb6bc35c671df5e2f8c5bc27da3c6bc6869b2d6f0efc777dfd04eebf183b57cffac12527e27ecfbea7e9bd0b2b4d3df47bb85bc428eaf3cd5ced5289ee5f7ea7eb1c70be39dd56f9885370d9390c2a8312f5bd5f19b38ca1bf9af5fdaa8312f37326ceda4afd668eb9510c28923a496fb1f35aeb07a9885dd7415976bd23454795a0b1fe49dda7afbb3bace2d68f2af184e2d2de47d6e192774b92c8e1af3628d10cbb5caca638d9d43dffde5300b3badeae565f45531db96077d55cc56a35b60f96bfbedeb73db5eabdef7468d79c1997af64958df7db062692596b8c2eb27d7d65bfbebedbb57f1738dfcf309f9b77ccf2f35ccc2eb6d34279bfeb2a54c68fd8bfae10e6fdc18f6be5f8d1af3baea796b18affc733fcf5fecf6b5c0f3839e7af8e77df54bb86715cdf65dae2a9aedc94563d498d7d10b3bdf7e2bfc954e28efb69ed7a8312f325ad3b7edae9cffaefbdc1f6667312cb4189d9d799dcfbbb5a77b570c2fccf2d9559ff92e2e976dc71c53c7dd66579d490a8a690d4d8acbd5fd1ada7ee2c24423b4e16aac235e55e217317ef8defae8ad163e48ad9737d638fbb736e21835e6a53bc81446c95ffc7c6f5ae987300bbf9ebdfa2cf6ef83363fe51fdcc04cc63bc2196bafbb47ae3b2e9369dfdef3db63945ebf4b23995cb78cbbd3fd6cf49fee3aa3cd5e57fb156b5f324951a93db95cd1e6ad68f2556b9a2797abcae7674cd6dd57cf6b95563e5d39875998c6c728ae34798bcb55abe2350a31995fbb23d6ff79dc35a55c883039d66725b594770cadad58fa0026c7f760873c3ea87bed53d35a8e66a342719d2f79462975a5fcbe5af7b476e76e0f32495191827a49b9d2072f6f48e5679fd6f8d6abedd7f1f2def593ea3d8ab78ab95cb51ccd3675e19e2ed9d20da385fdebdff7c7f8c5e4547baab3082eb93e8f9f9d7443bc2f7ffe65b370903fb5b7460df9ab0ff75a5f36af86567bd55e8c4f5bf2bb9263b8e1be5cd6fa9ad15eafdbeb167b134c17978bfb17954dbb5c71cae572b91e0e5aa08db6ca2723bcefc178ab95bf6e6ab1ae13e3da61c48144e55b5f97fbfab8f57d335e988555b718ac66a355d1facc4708a7e2932c796ffb20fc52e37877871a66a17ec972556f3615bbdda2c872595c2e97eb56a34dd80254e6944a5c27b4147bd8fd8359584bc0926fb4da63ca1fff96fa4959b892257c3fd2e8e986b376ef61164ef959ec321f7bdac22405c5e472bd9e1e2b99d6c72b9494cedf39af1a66e10df7fab45755ee46d33cb95c693e9bd82df7aa4c52504c2e97cb55fb2e97cbe57261095faf579a0f619a1f596754c91ff6ffafa7d6de786f7d300b219cd1b23cd867fecae6ab6853b819adeac2da8fb5feffa2b295a192a39f56fa2d21e4cfd7386116a6f9af0865315c6edebc952dc72bbcf2f5a2b26909a3c6bca03ce57b3bc6f0db5f9f97d67e988553b9ed3b6592a2c224ab5559f11357f5a554ce934edf21b6b3470dfb9536da677a3127ab55c562a5356acc0b3625733a5f87b843cd37b6d4e39e9e8539e5f8fb8557e2589fef725a29f96b59e3961e7e4d618594498a4a9f595143835dcdb4ad51635e3f4ae6ff4ddef5c4fa417bb58e50328d383e3c27c5fad51a9f14d31317a639a3c6bcac6c5045a3bd64ddf67a09f024ff48e7c5f07a4afbf7f6c22cbcd03a91bc7f6da3ff9c4e2db9c6356accab4d938a279e70c22b299db8ce78b18db7ee49358ff73d2aa5cb85cbd1aeb4cce592b4a6419e9c4b49f7959fffadf9ff9ff6c2504d99d2293d7d9c520cf9de385b6ff19faf5b8b2bbff7c12c7c49582be4decaca5d63ad6a9ed67bd821bf3cf62fbb8559f88ab0e2aabeac14e2db75a7f63dfebe8d5d4ee5b69f2269d49817d5f4525e1baf94f4c1396da5efc1b8fba4b4eafdb0a6d6569885569e89f9eb096d9d55d26f65af1e6621ec96abbd6cb45f21b4f3be38e5bb905289e39b75425795954ce6cabee3dbf1d5b4562ffb7c300bd5d06c532f08f5f27b93470cefd4774a0d39ccc2579f69186d96498a0a53142627262926292826eebfa8d15cb01826d9fadfb5dfd5f71f2dc41466e1cb427b5dd9c6fe77e5f2c37d35d430fee06b499e1156fca0c452dadfe3875968c3dd98a4a830b95cb8aaef72791b8ddf34d38bb9d7a551635e669464ec3194b23eaa65d7bf5f98854c525498bab85c2e17931414d36b169b365c0d2a83dce1e5ff7338a9d5f23f0eb31057f55fd8e36236301457f5a5b7d1f88c1af37a18749f04564980c4dbfecb46c369082e40620105157c5c8e09be3cecf5e2b758150447e4a3e002234896904ca044820b22c00082f7c02b89034b45286860d60818584353839360012acdb9a752a0d2b894c08df0b544e402a55b1104228d667360080d8303baf636070c90a000f8f2534584c01b01f0f5423240a440009bf632fe4010084100f10800af0a92aa68dcb6a2b7bd5e90aad258e3fea604e9f57ae1d6f82347f0f55aa3ab2660c1174df6a2c95eb835be48a78489247b9e60f92a3d6b25d9c3c700047458d8491425c9a9d393020a27e4c163c21d3b24d4a133820873e48400429c0fe078f0c64d1b36576bd458e570375b9a1a6d56d592b5a8d0bcbaaec3a0153b252b429d92d51a3e201d22a0c3820e9d281d11a7db7521c4012129ce902053884881b2a38e3294602511854f97f441129c240f748052e88d9b292350f1004e47670338ba003a486a93c46600349eac010006449efc41e4c91adc1685c8931a1f19f68c50654e159c2d96458a0671a982a59997cdbc8c12693286b772a2c7a2245dd7edd00374210f9e2f5b36d0c0879b0d003b8868f0649b8ec4a9a72bd8a913b9436255341c4dc6aff8b564768edffe4f5a93a4c6a9eb3a2a2234514cd7ba104484de22bcc9360311f40144c6c80e25aecca963cba22b12a8721568c1a5842d8d5490225115809a7836e2fc89f3a48b1a31b0f0803046933c0a48a2d006476ed4e8b842843dd0e85438c24775410115220edcc43f1348d2074a007e1c8125813f6e30188403174334aa590b9e18e00e2952c8103000511974e4c0e9c175895861a84f1a75063db0e70828810e6da1451515bea8c0052ff48491d287ea0f2b6ee8f8410f343b40190ae329c81d141ce0831f7f0e08dc48410e333864916506323c54f1c31949ec60e150932bb86080023c52c45e2808314008440208a20217208a7ce189bc33b16dd57549b9a45bd725d9ba2e294dd725d5ba2e89d67549b3ae4baaea883c2149322a21683a224cd6488ac1a68248fabe775d12ef8830a193b493f419d61045720c41f0124385020ca830d1a64c0b8c414da4505405152306348147d1910cca30615087461127883046091d7ed407ae4a38a2a9eb921ea02107a607f4995a89f8676a10cc9c40c384110e9023181608544593140aa8d9038f22d0c8c1832cc660f014d507ae48e8871e110cf4cde692d5aa622fd783aeb70486b3d166b42448d2f8572dc6c6b5d47493d168389bc7c58824c94304c918178c91f44aeac04c52992432442ee842e4889ea49c2426294cd297ae4bf2d27549525d97d4a5eb92b8745d12071d912352495bb42465e9881c419204d575495892ae2459e9baae0a95a7a49c3425494a9409656e309f4c27b3c9d4a0690913ae77ce696bd725d10ce69449223cf28e30712d5192c1110c92741d9223171cb1a0eb922a48623a420482325d47e40116922830d2755d1e220e4071b3b96e494b5dd705499aa09b9ac56c36ff92e9060a35408848034c4412f0a1cf1e3c44886cd1754488382025880082a407921c482a925440520349ac240682740b2429901424298124224a49ad240486241d906440520149429208481a204980205dd7bd3e1103f018e0a6eb942c3525059004405252522b0949d27e01580a80e285b020e44e1e81745d878bcdbc5ccda244aba6a620790491a38aaf79f1cab71a7501f800c654f13575c0baae0548eb8fae6be1d1f2a38f161fad395a8c5a7be8d1caa3b5a88547eb8ed752d4b5121169d55a885a76b4ea98a3eb5a74cc4104090c22485554f1355da4b8b7ea3a225d1322dd04dd0dcd1b6674b740d6045215c00137214a8dae74f1cb1f8ae4975b040409201174557ccda6c9a474590c0ccedf6ed2aaa9e90f227f0489b2c23b6f515a35354569d5d414ad9a9aa4d59327330ff564e6a17c955ea3b3f82a3dd338dd9f742b4d4d365fcbddaa6833dfab68b3dbadcb62609e34e1fe4beef70a2fcea6b75c759a149c4dd7ba95ab4e93f2e449944da2f482bbcd684e37c2dccd5d79aa597b2cf744891117646069418e8e08b39185cd23023512d110873645ca7df2c68a2df89580202a8ea2a0c308206c88e1610a3b7338d08508696e4f09349db96185369848921b63040d17dc4cd000094ce0a0804706440c71400d41896290e182a3de869d326f92c0a410448508bcc8ecf0212682409eb00200409a1820c1cb1169d608608232d2506351232a487001bba1b3edfc30411e0ec8a164823ade581142a1336a55f07041062fbc10c4191e40316686361260c1a51013f64c1c38656cb203f2b87cec60c11e71b469a1d1161d6a91092ad04142093e2ce0e149173f44a0b9e05ed083901f575868038a383738b6d0838b2b1a0472b28343940b22c88e624a4522c84d414d501818038a31a705136e42723032444da2893f3f6024a6102111014b5409d0030821cc37383413e8f1650c1414143a638b314fb440a3b241421ba52a18d8582223430a0c7f94d0a74fec8327908450f31cd0a256010e62106af4441937532471f1460d5335f839200f5757328511120e7b0e058aa10f234a28b803fb828046528b901e609c142ab002a102291700c9218a99176a1053422541888dcc034c07703064083f3a90b72340536af02220e9630913d050c05263a5f40395a62bc87c71238f36c600b1461f3d0042a28fb1888f04a6ce5021510e323c248424a074439c21a6b062858687902dd8d8ee781340972b2d2a16d979e34c9a1ac49087ce5800100f3588912287010cc158832400224a8920462a70c183192fe0254057aee801cf9abec4025535248a23040272441c01811e223c8871c6153e843248808cd4213851aef030431b257300f879e819620c1c0cb43a4ee063854406125c200697283ba6ecc183969f03648500be3c291f8418a6a80a23871b84a4a1431055acbc821e340eb06a1853d3038e41364cf904c41f309020c35d49f9f14100302c32610e0a58f4f10307c1144e08a002a33b2a787df4a1831d2d4448b1c70c1856640a1d5f94304b83821a3e0c8d91460506b43062ea0aadaa818ba436d26c31440138941870002c86a5201af0b9a38817720419438e52a11bf400618724a4bcf0470d335375fc99e00e1db0d0f05b88010a30534c59d142041054dc513280983a322a7cf06083c0040df0e6a90d282840810e45466481c60e2d1e042a718450700614061a88a3c91d36b48e78dd8429864c4082096ec5991b1632482f8b4c48a2b2e50a1156ca151994d0888ab65446932f53ecf02501132410a20b46707c7107110910a421c4153702c95258b180104676b06a44c74e201c88cc60c6882f2230a3862163bc04f007d1a236065ce1211e98a0a500237be0d010d09d18c1699e1c984d41608c10e88081919f3cd428997c68d0e08811aa1f6378b9e009063c00e1840f48d840d6429da7272845e0fa0cb9740a058100d30ef507400430820925f5890c1612a52823e6a9882b375208118011311a8b432c58004a2b089186913af1cd9302845cf1c206308809248522248012674b122d6c6e002a52071a1a554fd2c698009844318724e34a05348c4084883f518cb1a48196ce4fa1455e80a0c00e4154d142d1cb831720088482293a687ee8c2089501fec83238a23ee1d1a58e0052e8310291126c147ae3c8033da4d8a30907bc185247092f5a90a1ca1d356edc8881c3029e0f06b8810b25b640d2438d0f0a1db450a6894b143edc11c41a789e24404455137c8280c3cf1071c898c28870c09c07f8c081a4911075053a6426b8a004240ea9d03ae483962590c80f508873c8189234e8ce0f1428092446870d2bdab0b25899049f00274c116dd688d1b9c00f224602d04f515411a88d12af8e1c2806d9e450b201112d4d247102076bf8f1c609fa4e1473dc1822a484bd05040b444882861b3f45439c16198118d98982480f7580f83374314e8023863aba40375548305d0065d053843862820267b8a0052905c18753ce8d2703e8e0044af309218538d0a8c38a461950234d6009b406a13150b0a291954484ec38838111a5ad28cc962049964083c4960102d196a0184300a9e16a3451831e0234f1a1c3d5c09c2a70ac2759f8f4b1841aae279a041a600238a610d8530799321180c1441f38be8061853245a860830b941b46744cd01c0024867d0288467b02391248922f720b0c12d01f90a064841a6012e862206c3526080e777a70034e0924e030471019e2346900841f224853c71c29264c38e034451f7af4a0142411375010c20633b080a3280e0d4d6f43875585cc1383642660e1c70d24b2243912480643e4d49c10248e1418d1908705778c0043079915201c915991e2a39fd6b8634e086e4410c717554431f403213b54c801c92a09052b1ae94047121f0d2ca1e4e7e587d5ddd3848735049893c611323cc10b28618e0ce228418f212fd20c62e188216cac5044c99f0b969620c364d11c2f9af882024cd01b7890b883d01f69340812831a9b8a0f1b749c5745370736674d04044c1fb408e428f7c217726c121bde84893d71843ae12667250a0bd4c8fcc8b0020ed19626ae063a38204f0942741028081a39b220b1439b4a220103534156b87dc044a1066a2001511c54662091471e68d478f1894256d8a38c396f1f41e0002678b29083441ba63f0d7080e8822e81d708af2d885892b2420e8710ac82c0a0cf1b0c381950078664ce125cd80c9163403025c98c0ba224926510070a0870318737d19a5247196c288a6241814801422a0c9a2a305123e60d31060824103638d02240a21f9ab03102234063102912a3c4441755a030020b4a11494c152c092342d5961404bd2981c91a2a2e8c2043a849970dfa1d5338a0628a83eb64e64a142f40acba1c0b94c0e182801d86a890e8505a4c0140056de4c4f440c3d19d12a10b3da80780cc28608e11fc4cd0b24aa2e68d130e48d280763d28043cb032484a911f56f0920bd47d61871a258cf10a10e25484923b61aeccf1230652961ab2482186a02dbe382289073e5214c081cb1a80c8d04409035a8487264c7cb9a38a8906866d8a0a731288438e0ecc00f25c2c8113420b555d9a00316608168b5e83b04015e275480184439719c20060295084009a28e0240244800fa64863c60e0ecd993464376c3187203a70a88342202ac6e091419d328c06057aa6e55a58597a1c19cafc7f3ab5dc3356bd31ed300b5fb47ecd1c15ca745e2b697f18d788dfa5300bfd54f7365f4523edc88dac39dd96c22f2ffdd37a0db310079b8ad96a1b19fe1bb1dfb4f31da5c67d2f7bc9b4c7dd5e54b2dc968262c26c64ccb1acfa4a3eebf4f6f735b296547bd8bd9ddf4a1c31ccc2a9d90bfaa99eb5877262fac2e4c48485c9890997cbf23d17df69512e97cbe5f20f46df69b349213cda73a446aeef6d6877873756fbee8c508ed2c8547e7bb1de75f317bfd77de6271af947faba7cfaf7da35ee7ee665af48cfc815f3e9a9f4d7e25bf19f66645eafde7ac7abf5c45736dccc53dc2d0685cbc8f35688ebe7b4ebd8e3f35e56cb493d3232f41ddafe24a4d5568839ed02e1c5557d39467e11dae9bfb6d7e339e58e1d8991f5fd15cebb75b478be1ba374bdc5e5ba458d794d1d85912fa4afc22b7b9f5a7f6e61164a3072d4b14ffb227cbb63cdf117594aacaba5fc62bfa3c7f775f322c319b1dcf27bfaa18ed1c22ca44a8ebac8d0df0bbbc4fedef7f6ff7d165333cbd166af0b8fb8c89862ed3bdfb56a5c25f453b318153eda22df2b2ddc9ce26e378cf8699aec4a6fa145b95c36dacce5ba97cd9116f9bd49e5f5d05adefdc3fa461baef6e4288bbc25f79beb672fa6fe4bf99a79998557351aa79de698a49836cd31d1232cb29e386aea3bd4fec6aebd84f50a3f3dff92cfb975dc937b71b96836cf66469bb95c55b9d9911513466ca9bc55c62aaf7d16cea76997967f3837e75ae78eaac855cf4b3bbdd85e6d759fe568b6d7d5a422ffa87fad94d2aa35adfc5642f9f9bff5befaf2d86bc7136621ae467b6148a18ea6c8735e3c67e7b4cffab6a5f509693d92225fdcefdd7f56afd7742b5333cdc5e582366accab1f4591fbdeb6ebb723a45b4f2f5f981e41916795fc6ebdf19cbf538961165668c3dde413b9fe8d61fd966a8cdfbc1f97c3b76bc3dda43c72225b0f63b4f5cd1b37de5fc27a34286bef3de67fdf6e6d7d10c32c7cdd62113621ebbdf55afaa08478468aa7a5b0dfca218c56c73d6116529ce588896cffc4706e5ae7b6fd37395a2277fe23c6defa6a717ff8c12c8cf7cd35514ec5a4dc5a959b29913fddba4fffe5847a531e6dbe8b0dd705426bc3dd6412d8da38259ccf3e582bafb2fe6e3df4527f8ff98cf692c934c79ecfb4cc9eeabdd5684748e47e71a4dbc3dba9d51a4e9885b56bdb148511da23b2b437be0de7ad9ae35e5fce88dcbbb4bc737fe1a69346182b22776cb9b4bee31b35de97527d44c48437c2faa69435d2486f9412fe683be4584fdbf19b1466e1ac76881c79d4b3ea2b23f514521865ae56159355b999dc4742e4fd2bec6fc34727d41157da9f59e1b199dee2924741641ae99ed4476e7fec7cc75ebe7685b3b3282ed7d54c4b2072a714fe5b9f9e31fe90b7ec94cbede997d77269291494f587fefd5f6bff1b7f2a61163ea886567bc97255b85e29473ee44d7d97524a2d3ff735c67fd44386b74e5bf18e37fa2879c8df63a92bfeb0e2a827c7300b5f339a4c57c570a43b64d9e7f597c3cfe17def73df5f34dccb425b959b490d8e74c8ddc2bf9f7cb2df882353b739266fcbdd6832ceb46d8ee975232bce510e2f6249a9b495465be195364e78a59cbc5e3e3d86f2edaa18f7fd85abfaf0cd110e59fb7b6dfcb6572a25ae0f6769d498d797a31bb27e5fce7d37b5547aa8bd6c6b5caeeac940397e7f257e5842cfed9b1b66e1eb15a34ce6f9b4215fcd398f7f7fae8f6ac850cf5dbbecf4efb7f9ef2e974ce6f9ab51635e628e00658ce3a41cdef97d8c98df231a328cd4d617bff6f35b1bff0cf9717befd43cde8d75d7305239fa93f594187acfa3eef15639fde4def5a4d5777defddfcf63ed9770d3f7e76ce0a2bd51177e39325dc7a6fcc3dd4fa4d6d6534daae722443e69ef7e825bcfcd3bb63a431e4be3dc65c4ecefdb7f6dab927e34f3fc6ff7d4ef7e3de4b18f2b51adbaea7a496ff376fa4f9e885ecab8c9f7b3a3fc45c72485dc8cf6afd74dd1e7a2c217cb3857c3d9c77bee7e18d703f0db3f0256b642163dfffd55b4fffef7f96c318e568857c1f8e78730e2786da7f0ab3f0d53deed5750dc30d8e54c8b8731d778414bffa65d735e93ad29327efdbfa8fa7be7b42fa6116c6a7a314b2add2f26db984afda2bd3b6298f9bc55e5dd722c428e4baeb8ffef13ee3af165b98851457f52d383a21cbbb37e572de4fe9a67adea2d0a831af30477972bcf35bbba37e7e5f0f2dcc42dc1aff7a55a861f1666d1ac66797233c31da8af1ab96d237edc336d2d8f1bf10632dbfe417c32c7ce2c2346db89aecc8845cbd949e7708e1e351db78736b7c159b574383a21d1c95202dc5b3e2b91fe4906b988537c2dc0b57f5ef94a33b96e27a23be6fcef9eeab57573d37ad7cc2d7aba6b3e65e13dac9b07bfd2e7c5346f9269d300b6f54dae3fa7abd3615773a2201d727e57df3616a2facb8c6393fa5ef7e6cedeefe717f5427436cb5eedd42edf77bd21fd1c97debcfa1965f6eb8e7abdf73b979dc9594dad1085977dfe7abdbefabb7ed8fb6f59123112abf5fc66dabbd9de30ead1ccdf995ee0d63a45c6eae21cc422c477220a594db8a2d9e33f6fa22bc7214429653f77fbbfc90cb4e71ec9d86e13d0221c3f8f0f7dac3b73d9c7bc32cecb4a6a33899ea693decf3628de1a4bb77dad107f9cfa7f7f514f36ff9a5ff45cc0a244fca3ddf7cc31abb85ffc12cecdea661b7db28774fa58fd3c2ce5ff498c6a8010b903ca9ddf7e3afe5c31fc60ebb5958597fe48b37e51efb88bfc4f5795a15cd5683d18faee394f55eb86fdfd162d847fe9a625a2fc797ea48f587d170928f6b2fb6184a4aadb59746faea7dbd6269bb875e6b7c25cc423fa3c9f88b4748196dd61e594e7dad9eb4eb1b65a7568f2cbbd73f4239fbeefe6b9b477ed17b8caffc787fcd398c9eb5285b2d3f96bd63cdaf87bfe2913fd55dea47edec1dda3befc818c38fa7d7ddce07bfc78a72bcf0efaef17d7cdef75f669282f29f952847fae1dbbe6febb5e430c22c7cd568366b5988b2dc7d4fd975e45c4bc8bf1d594b4837fc5a56589f97126621eea6f94c0d8d52561d79eb79f7b614cbc9b1fd988e5c6985bec2d8e1ee924b0ab3b046b37508216b8eacedab7f4a4f29fd96c32f47ded1e3baa5ac18478e771c795e2d699df7ea772397fa509e75f2fb267c0fc7ba238fed9c936bbe392c38327c1d7e686bfd15ef5ffd1bd96ebfa1d79663acbf9edca26119ca8fd31eedd6b27f8827c685b2ad9073dd638fbf6fbc6b166aa3c6bc602c37728cbd4b4ee98dd1cead65c775b92e561bf5dd29a1ae966a4baf976cc05dfda7f2e37f6b871566218eb1d6c033ca1deda7514adfb51a52fa7fa5a4318d78abb710c7be6be5176b34aaacb3ca09f19df0522a2b7e70dae7f57df14b4da1f4b6d783575867e48defdb524abfef96b56298c5d68cac9fad5fbf7a3dec7c5688bb313d7161aa365cad8cbcdfb757e2ca75c5b44709b32e971a0851609191edbf92428d3be6b1dbebc7c897ff4df77deff53eb1c462640eebfd9ecbbfbd95bec73032a6923f79bfbcdc5abf3b1879731c3584116f1debff91f545de1b5b6e3f879bfa0aad64799137fd9a6ba8eb9ff1d91d595d648f2ff5b6bfb92bed977a2ef2ab50ff5da3beb846ebdf161947dded97b65fa9e7dc558b3cf1feb05bbe3594d34f08b3f07555332b8b8c71bc8fbf49f995935e0bb3f0f58291567bf1dbae108bcce5841ec66be794d1dadb054a8acb75e3ac2bf286ffcdfe23b7d8eabd6dfe413c5956e4076bf7ddfb296ddf96e9890bd393505855641cadd78f5efdbe97d54e9885d186ab35b1a8c81663ff6cc757723fa1f5b3e6aa72334928d76aebc7da425f77e75d4e91e77f51d7c9bfed9f62db611642582fbd6d29621491050574c528d613f9be67657fd0f34ffd7cfeb19cc858fb39eb7d525f8b6db783f2befdea6825d77a53ab29cc4226292a55a6ec81d544be357adeafaf77474a2fc5cdac4cc5a4b85c2ed7ff738ac5046b099612d0c5859544ae7be2cda39fd4bf0b716421915fe51b7a7e67dd58c347a9b08ec8f2698cb795decf073dfc52c0b85c5b8dcb2506cb881bef9cd2cef9ee9d55be8a318ff14a6a75df7aef3761165226292a9de6c4e4c46485caad263e68b9bf62151189c81e4759adf757cb599fc6e99c4c5bf9cb2445658bbfcdfc1497cbdf66bebb5c2e97cb7525a3d5e21fd610d94f6c3fa7fcc5f7bcfc1266a11a3f9364b08480ae43ac20f2a37e76cfbdf736421c6b3a8b17305d5cae9c9a9bcb65af1b2c2032e57b6b79e78dbc4b8d2bccc2ca244585a95785c92e97cb056960fd409f7c36466a278cf85afce6e47d767df5af57d61b218d636fa339e172355c4e8b16262726cf26d60597d302c6db684e5f704e2e9797ed178ebb5cb19a76b9706409cafb47f87a8494473f2bdc508661f990a5be5ee3d89fbc335a1e611646ffbae13c8ed32e9458583d3cacdfbc8fd7bb3fded8468d79b14260f150efa3904e6c9fa4d2de2ae3ddfdd7bb3b7c95e25e23ac6b583b646a278f51e2b8a1e6717329960eb9cb4fabc757e219b58e1e6661a5366acc2bb272c85a57c921a5923e28ffbb321e95c0c221772be7b617eacd35ed7fc61bf2fff46d6aeffc55faf8df2cf7822f566105cad4d7a82bb657da1f3bc6d1868c6de498f30f5fbff5eb0db3b0fb179cba4fac1af29db0ff597b7f9ed2a99f102c40797ecd65af31ee78697f9f861ce17bbd6f88bff4cfd3cf9a21f32ee5e4fdbd77efdef8c22c84dd346c324951718a59989c989e62159bf7372dc57503eb4fee18fe8b2bf47153feedf793a5c57fcfc9759cd6f3b9fbe428e9a49fbe0fb5a490623eb2f70b79a473724cb764c9506d9413d37a9f7d755a1c6fec96773f9fa46f7aeae18d1543dc93239df1e37969dcf0f27e9f98a4a098bc6d0bce96a68b8d502c18b2d59b4f4f39a5b1db6f39cc4259ae4abec97a21631fbf87b5cf5e67b7bf8261b990e7fe106209b17efc4f2f592d6488f9abd752b8adf758b358c815528bf193f1c34be9933bd765854cbb7cf7e3872d85555fae42aef56badb78db1febeeb64e9c9cf733ea7c61ff7fa3ea6ac14e00f2c14a04b0deb841ce7c6d5c6a729d778fb9f275f6afd96ff772e2fe7f6e2c953ee47a5a43d46db9fe52c135825e4df63fdef556be1dcd85bb88775273fd9aba67ffb6d219cd0c2c802cb0e7401c12221773c29dfb1724b797fb7c22c84e1626a30842ab0eae467a5f6f15befafe596470f5874b2e7fc47f9ac8d4f7f7a35cc421a9f35cf8504d608b94adceb833aea67efec57841c6bef57eff76ec45bf209b3700dce4fd52863cdc9aff37f3ff59a4fdd63df72f27bcf436ff5fc9ed2fd6f310829ac967b33ac102cbdf2da6ae17d11d608efa32c103296726ab8f1db5c5b7ea120561cc8fa006a38928b07995729fbbbb1c22b25fef24df692f6ff3ef7dec357ff87596825153795fbf9adbc12fe5b6f6d93277ef4da6d65d48f636aeb333fe565170f9bfc28d6d6c3fbf4961fe20db3b0e6ae32856ff3abefa797efda63d6843599435d2bf70f7a183dc55a8db4d74e68298c78da189fa5b873a9efeb8f3e58f7b3d16613460cadac32957347f9028a328717ca5e2b9ddff20967a20c31a70f6ea927be35be68d5429467d7bcfbca37c630c688edc8b552ad6be4d1efff369cf2468d79dd5a7564f8f9de9e535931dcda573a327cd7db2f5f8df6be0ef7ed056f58ce91ed93d3ca7839fc74ebf7a59423fba81fc7bf722e5fecf66a9c9e12432b8e0ce3a4bf636a777d947a78287b5f71a45d4ecc25b478ba5c34c291f9bd5c7a1ba18c32ee8a9fb4dec8b2bfd7adf5163e3a7184d34acb50b6514bd89f8ef7fdeeb92f94ed867e62ae618c7cbe6e5b6e4c382dbff851ae77ab8d7c29aef8f72f391897cbe5c22f885568b1713fdd107b8f29b530febe4686ddeec7a97cb7e38deb5463e28bad8c72621869ac78dbfefcb79fc757b5b4d2c8cfc35abdeef06f89abfe68641e65c59dea5e2defdafb3372ddba3f196bffb8df6ef98d308ed032235bc9eba336be6d27acbf96916fad1e7e7d9fd7fb5abd5b64e4f9e1aeb8febb21b656422aad31f2fb765fbbffc39562fda29462644d7bf54f567b25fdf37e29c3c8f23f3e3ff43bf26de39433b4c0c8bb3eeb31ed5a3efbbc840ff6697d912f9793dbffbc87f04fbab117f9cf4bb9c7dc4f2d9ff79a875617d97bf835c4f6f9895fa5365cadc545defa51d8a9be9e776eb1bdc51794305ac51c5a5b64da6f9734faba3bd555daa845d657f688b5ef38d6ce25cf22574e37ffbce20afb8cdd639123bf0f3f1fe994f1bdf9b8b782100f6a5d91e37cefbe5f3fa6d7568eadc8f855d961c5fabe3ba1b78f0b9313d3e380690b149395d5aa62363f9bc52aac22c3ab9f85bf6b5ae18cd7fb6951913db6987bac7f9f5b4ed95dae175d6811caddcf47e7f675535fb5de2e57c42f78e314995aaaf5f73ffa3d35c6364629b2bc6feb7ef9d6d23e2b6b8c5164fe29b49cd37ead96b2c618a1c851dabb7dadf54dfde0f5565c2e4bc9b49ec876d31f27b49dc269638f313a9125949f7e6de1fd3efaf7bbb85c83b2b457df892bdfd5ce5613b9731ce9b498f7dbefbfb83291fdb510c64eb1c637c607799825b2c67bd6aef9aedd46cf6d4b89ecb797be6ac9b58e91f3d8432b89fcaac79446f9bfa6dcff8f75682191f1ae6f4f3dbbbc5ffb0b6f681d913b7c9df6d879a5fdc6d85f10e76f371dc3c91a5a46642d27e4787acefdf358ea87f1b48ac8565b0bf9b6315288b7ee26b488c8f271f8eedcfcdefa9ea72e57c4f705a39dd61079572e35dd7f7ef8bd97fede690991a79417ff87b9e7fcbefd01b582c8f7fbfedfbb7d7ffb7d6c01913f9cd5d6379fb5b0d2397fc8b4f2de2b9e92d7ee63b582b28db2e2aa778cf0f36bbb0ff9f7ceefdcf0c93e63f43d64acfbbe91767be77cbd6f1e7287f156a929a7136ed8ef0e79c2ee67a7f26afd629f3a64abfdde967bf9f9c3b1fb1cf27eb4d77eeb9b3adac8310ed9f2c8239db1fa2f63aff3867cf9a5f4690c3bfd3bf21828e3fa9efcf0f9cf3587d5da902fee9e6a28ef94ff7afe6bc857bebf3dee167b78f70794dffbfeff2bebf5dd4e2d69c83dea4d399ff57dcf31d54db466c85276df3b9c7ffb7eb1c510be60fcd3fa93a1c6567228a5a717efeef3b4fc64ceffddfcdbfa7ce71c42dcea93b7b7983fad3f8cef451a6e966568f1c9d0c72fef7c5f7619f286b7f62d6dff187f0e650c79536bffc39dcfe93d9c784fbe546269f5ee9d77792b0cf9f98a7fac97535c217ff585eca3d43ac648e19b1ffbe742e6f84b8f377cffd3e9356c216b4a3bafde43dfe38576b390ef93fedd2963857c722af109ad15f2b3f873ce67eff3f7b9b70a79ff599fbc70ceaae1ad5d4f8e5b42a9ff93f262e8294d21d3f8257c54d658ebeb51a290f9b59aea3a3784b6deda4fc8d752baf5fc7ece19e5e779b2e76fe32d6befb85e6b2d9eec71f4d1dbddf57e9c726f4296ffcd677ddfd1bfc7a12e21c3e729847ec378f1bf5adfc9f2fa87a9adfbfb0b69fc76b2961aef6fe9b617ef1ab19e1609f96dcf2d9cf46adcedf3ba4ea670bf1e218cbecff9e1a59335849d767af57cb16fe847c8bb76c82fecbe5feeffb322e4fb23eff5565f2d8d13fb39d9fa5b69f790e2f96abdd188969c3cebe37ec30ef9c338fe28d34e2f28ad2284a11542e6f1d78afdc6fccfaafb0521cb0eb1fe716e0abfe6f6dd592b4e9610c208b5c66fffe8ef6e7d90b9defa69fcecfbb25a8d0381b57618adee5a36ca11d66aa78772466e618f159027e1b7716b3d77875bbf3f708df45149318eb7424ae39c5ac7fa307cf05ba9a9cbe58a562e57ac487e64783ffc36f619e3ac57d7abfd82dd72355cfbc878fb4d2fe51ed258a9e623475c79fd9146fdb0aef633ca1ee2c8efe6fef73df29fb4df6929c6b3f70abd1e79fbf8aad65acb7b29973b8f8c7ff49f3e5d378e6f5f2d06695186dd5e5e5faff36efe74c723c7e737d7f05239a7adf0de91fdedd6de3ff9bd3dfe5d15e5489fdc186ffadfe4ef27cadef7e72387fedf87759c8872a56fff4ef5c493fbb825921db95ba97d979047effddf10a98e6cb7a6ffd52a6ff7b443480786d8d26be584f33e3c317e177afa7cb71dea4eb9bed422cd91a39fdadfb72197b4d94b8e5c35a5fdef48b5b558471e47de76cfc83bde3b4afde63d9435ae77738ffb83bfe24ae1c01062fdfab4d6cf3732b7bfca79a3c476ea49a1a15cbb8e7c46fd76f51ffb5728fb8a25a5966bba7bac7fba5cd5cae57ac16a15b11b997bf91fe7f8c288a1fcbb8dec63ed71da4ff9aff1be2b85c989290ad316a8994362436a1ea37cfcf94ed7c810fa87fbe5b65b8f69fd6ae467b99572daaa3fc7cfea34f2fdf47b1baffc7dc28891d0c876637be7edb84a28bdc7b29b2d4a857c76759b67e40be1bf1c3e4a69fd936e98854866e4dd638d7c6faf7f193086440674218d91317ffc3dcd6d97d1feebca86bb5672b02e545caefa4a401223cf7875f71dde6df7b67eea424185913fae9c621fe9f6d4e21e91c0c8efcf0779d7d3ef2ff2be11db0f617f5d6abca91719f3779ffc725ae877adb38bece1c658bf8a2b8757623a93d0775ad4bc485ce488f57b7febc83f86fb3e1a8e422feb33fd6014a42db8953e46fbb6fe16c76b23921679be2925d4d4d32b2b9c16298bcc3fadff617a7fb570ce0ab3156e9963ea7ea6468b8be62020242ce6acb3422a2b8c15d71969b470db7b3ba7dbd6c7abaee272bda0bd22cfbdf9939c52ff3af55cc32cb4555cae3f4856e4cda3b590bf7db7eed8720bb740aa226b6f2deed1732dfd8f76bebe40a2226f69217f30c66ea5b5bbba5c2ed78377900865fdbab6fc5e0cedec92737d3bd21498ebdf21c47e579884772349916d97186ffeacdcf36dfea5a0985c2ef844408a223ffceedcb2ffad5ffd1c4b28728cf2e9fef97edf4a7ce913195f7bfbe6f2cb7b7db7dd892c7bf771c7c9e97b50bf41f941497bd77ccb373de43c46259bc85c6fab69ed5d4b6f6bb7910d1213f9da4be7bd51f78ff77ff4b644e6907f2a6fbc3ed2d7b15722f7c965ed9447c9e5dbd7279163d410eec929f7f13d1c6116c22b2424b2b6f3dd3d6b845d576f2dcc42d906e9881cf7fb7cdffa60af72eb0ab3f0c9354846e4cb7985daefbfeb9c5346988530d2908ac852d28d7fa7b86bffe5d43022b29f53ca08ffac307a28398d37a421f2f670fedd39b4125eff69342172af15beb8f7a5db4fd83dccc22b430a22776bfbff9efa1971ef37dc2db6c6632072efd3636edf857bea87ac27c557c2fade9e776f7dab6890046549e1d596537c6194cf536fbbd16016fa902dfe71c6b7ed7e333e8dd33d4e38a10da987dc2fbf50ffbabfafd4c638c5e572b9eae521438af1ef7cea8ab1fd5534db9f4c5254aa5471b92e942c3b9076c8b6d68a35a5f8de0faf6713bb4168a3c6bc30920e9b6efa74dc5c537ba7cd7b18d74e2e9713eca6ab386599ad139072c85c46df31f6d476fa2fd538c8b927967b530af1861b66e1ed868174c39dd2be7aaf94324e2ae58b37fe4e3de40f4f8e21e5022950e69deb6a6fad71eb1abf9f925576e7e2c45485c989a90b931414531e02c9864c37b70f5368e1f4feda0ab39d16851f6c825443c69c47ffe9ed73e357ad7ccd68311a910065a9717fbf53baadfe9653987d3d88b3d16e1389868c61f7343ef930af35463c439efbe338fdf6f5e16ee9fd937f9cbdcecab19cf6dd58a3d9a6b85c359aade338487ee2b318d337e78d98be3725acd6eb49f1837756083fcc42ef5f5c423aa3c99c5c2e1c08a94fb6124a4df9a715fa5fa5ddc2650b14139314940e487c32855c72badfe615db87ed1393d3b702630b4832648bafaf9452fefaf5757a199062c8917bcba9dd57e2de3dd4b72b8f654f969defdeb7f656f20ebf9f4d1a4ebb5c355d850443ded0de3df1d33b22bd90f1a5137e48b7f67bd7ab5dc831ca0be9c495cecef785300b6d1e17a3e166565c382b5534db13f7b52e2e97957007a416329511da68e97c7a77baadcbc5bd95cb7593d5aa62f4c10f9058c89cefd8bdddcf3e1f239f5d6e44036985fc7dbffe790b9fa6fcd2fecce572b95caed7842f2807920ab9f22b7fa77f727e77f71066e10bca39487a329510faaee7f57bc3a92fccc20b02520ad9ee6be9e55476d9f7d51e66a17c838442bef4ca6e39ee16466a71443a21fb4ab5c7f3e3fba6fe78be0843ca935fb7d1c6ab2df5d8cb8bf164db9fb5f37de82d7c114a1332c6f145ebfdf756eeee845442c60f7f1a6f7fded7cafdbe554877b2e47dca1b9fbcd25fde2715929d2c2dff51cada7ded3d5698058984dced8e7abeeefdfbb4beba9fa9a1bdbaa6c95c2e9c9f72b998a4a8f8984dcae56272aa34d2d448b95c2e17fce272b95c56da7035241890ea64692384b15709ebfbf4dd572df7a2a2d16496032627262826292826bcbb8d1af3b242a2937be493c3c85fad5ddeee47c854fbc7af8433728861a45531d8cd65f5e6182411b2dff3dbcde3c635568e21cc42994cf3397b8a10694efef56e7ea985ba63ca675ec6bd1586f4f5ba4f4872b2bc54f6e87fdfddd6fd43c895768af5f557620b6b0721f70bbba6d8cf0b67f5f4c7c9d2d35e3bc4d7d32eb145fa20f7baa3f6f6cde8f1fc32908cf9bc5a720bf5c55d43df287bcf3da55efb2fab7d1f900cabeffb566df17cfbdffe478e76c2b837fcb177ef47f670d2cb3d97ff730ce1ee23638d3fa593ca7f21fc1cf3912ffd0fe22ba3d552537919e5dde3a390be8a6feff0d63df285573f0d29c7ff72ecf5c85ed647a5dc13cb0eedcd23d7fb3a8e574fdaf9e57351f658d63931a593da6e21c5237b0ab1ffdd725fabc733de9131fcf6526e7fa49d5b45f9df582fb5543f1f25b40f66210c175333af3c1699e634280baf3c15963051be7376dfbb7cf0fbbb394794dfc5b16f49a58d9b728d8fecc81e4e4fa19e17dfb82ddd75e4b9b9bd7ad30d637dd84b3a7295f6fa27bf97ef688efc22be70635b2ddd946f2e4796af7f78adae3c5e2b658559388371604a2fbcb652382fadf65e3925f415eea96b94fe62da0f65e8bbd6bdbe09adadd58aea56338ee0c81cbedef7b755d78bbf15d5845fb0d088c5d11b99ff7fabdddbcffdfa8c1fcb0296b2a8f4ce8ac8d22848510cc42080180663450090003314403040241a8c85a3e1802669aa0f1480033da2d42865642a9306c3714010a3288a611886611886412084610c418a42c8d00114fc43f8b2b2bf906d01ee85fcbeb523a02b01d6620afca1898e5e0731cb298f1a91bf7eb7d866da29a3c45859593744b0939387c3daa5d56c1e9ce2899d9220490da2f059a5a969cfd11bb39850eafeb831aa77e558a144867367750cb05abbec7e82337c8d8f73343691dc5157da68a31e1beb9d351ddade7f5c80091c5fb2098fd43ca60d39f1116a34e48fbaa0570e8d416253fa9ca838865d6d85e49a5d522fae1beec75e48dd601c2b38d4b6b741756f7b8419b05158c66aae660fa02daa33b14b43e810cf7bb020674acb2d964e4f6558a2806f4473575bb33ec15f4351cd67a2ae05c87392a813a7499e791584d9b75d101d686cca0144bb51615fc0062ee95455026172287d66239f5ebb97986567e91cddb401e101c9053bfe212ac46695c602a8ecbf188029a0b393848cc34302aab3b857da668326cc12733304417ec4164264129a272058d94db05c3fc350869a5f3ad683ed2253a9b60fe779c15504a66e54348265fa69a1a6314316d2c911e70e9e13de0238bc8087733ce1090f088b3031ca9c0243ca580d54182fe30089f59481273bf39a659647308882827ffde6ca50a125ea308eb0d27c44a3cd908c61a1429c4eaf92c21f738a22d79986129f1634cbebf742d9689371424401f02e2d86efc8c8bfe445a0ad5170524a59306f48220ed78e60b6859ae740b1abd1fc325c58638c4f9c42899ff83079e400a2577420deace69419f05435e45d1a69e9b1c0d5601c093e17c9698babc0b85ac88384799ef763a42c83a6616903d8aa44434a4aa30468b41b5b1f6c02df7655aee46e380f93fdc26c83b7decb64c0e865ede1c4185e4dc2ea0a5171ab0b3e6a78a82b04902eb111bd5773057a082ab65165f26690a079b0e3c0ac6e07bd6758ab5364a1615d943b890c13765863bbf581e6bb25d102d478b034678fc4b50ffd28137002cbc9bfb97b5be92e26b2a6db980f27b358db1f4a41eb9ec44ab8c4565813d60b1a7ce6f0bf6a853bae1f7ed228ec9943faca2a781cd0db34fac28ef90587bd59de36de371f9b3e4d42abffb7582a1f2d43ed432c0be6553fbcb8c757f7838596977afa4b5a805dba172e7979af972879ad232fe8ee6b69c19acb5e47bbc9309d945364268412d6977ba2c61ad04cac1c4e8d29bd3f0fa2a004d6d79c0a28a927a0943e7babc30329b2805461983c225078247b39b87504e83af4dd2563c20bb5068a3e40ed76515c2b1565a87400155d509609cab8b7289d2903a3a98b0e07000fad8e0905ed509604a57ba1be04852882a29dde50d0128ad2a0720794dc238a0947770b041841801f1fa2f4018c0487341471806a6d287b09655c8302e26d3a8e244054136a57d5dffc7bc0621a8049e8c99111f0cee37d772507ecf9f9b4f9c6341167194d3fd223646c4f7f7509d850579143e54b50d0c3914580bafeaba5ba3201b7f86906552b02ea3a044c2a864de585125f4f09150dfbfcc34a738dfa1238703c12fe972acb5627e405186c6c8c63404610af45813ef3b86622b4298260f4d731d4bc5403dbf761634695f51bb8a55e381c31d8bebc3548564757c6a155fd4cccbf89713896a5bbbd6ff75de607068f4c31455c9d34f765c7f6c64412698dab9e35914698fca926bb5c4262204cf56e719ae4c2c7376aa01f11c08d9c6dcb74738230aad1146205cd2690455238ff215302211174faf5d52ac40a67d91a0face523ccd3e57fda90adba673edb2d746daf15492a8761e23d605900d5b4ed38ff2381a7ec4911c59d86bafd45083cc66acd06a788f066b612e1f0601defc6da0788907845183f785ac92a21678cdc985545eb846b47623488323060c6cb4ac2e3f47b1655e7f03f7f936d97c812473a89a80612a985270c051f75afd799633a36709d23db082cf98a4f8db983412000b873ef4b3305269007d5a069223a87a804d34c0b98e8d4e6a74e6288e5cf7ff4a92c5a9b735207aaa02b635707b40d7044ecbf5d72010c41e9102119132ccbc5d03a20d3a2d5ba900e10e9d610be1af262b0222a9e07dc8dc1674b3c2dafbba027bde61e48e8c19a31e4a10c6c7685642cb34dd6142af3f7b94174b80e95b75d51113b4eea95d9ad8014572824596f3444b1c38e352974d2245f097c8520d68f42d8d0405095d42b69181e74f243c68c88726f81d9279dac0ce315bf4f2b1bc6e736092caa87cf9fbb37c00e9c9f224d889e02573d23358e34f6526e56ed6ca64be687c20fc0d573996fdd0bc60b607316517d5549e9086080ba47232774468257ec3d751503a5a14e7b8ecc991b5ccb1ad53800440f953f8f91e0946fb5d07244afb78382077bf4c1e5f2821956b615fe5d7b74fc688341137f4a650746208dbbce07045b5b2ae3c9e0e706138cff105b2273a10c815b1e027a3bf7bc857f0a52fd584c564d10460458f1a8063503f9ca9a25109f1999524e988bfff7aa18c2aa918ddaf1e16561c5e53173cba02789188fda4b20053666891bf1fe20b447fea87031f74bd0a04466d0045659e7b25f0287416cf26cbfe7a01022f05d082f88354a62a8903f18b0eab265e23fc02f6d2b4655e34a4999a1455247d7d319d85e70c4a293eeac945e531fba90f3852eb1d06d0a06150501ada1cec8a2d1db33dd0d084e2ef74920c036b72344045e6350c84d88d194e17150c7e198e28d374ad4aa07ee8b56835a337e7acec5039abc07b183613e6254e20908c01358292933e9d681648504a6709a85982eec6c1e4f139eae532a82c12d56f2149f7a78c39b99ef9aa5ece00a013f2e4f1981d2609c0e2760e80d59e20ed9b44fb19a9b8fa994114a2e20dbcb2bc3eac1984fd996b5c6599dd736c148b4dea211bafe67eaa7e4557b5b7fb086a0ff225f0c38a75904c82cc15e8a98c883f7f5dbb245602e3504af8127e804df4bab80af2742ae67c215384328f5fc68f664393399ebfaff8db42a8f270734ab2b4a8a329ceb84336414968a14754ce1876e231be9de37111c3bdb9e97bd483b0b5bd89cbfc1bf2d4d51040a770d11ae88c2fb6d9c44ce3db8e5c5b25ee054f7ad469e779f41c6964b8631a15567f2b26bdeecad435e12c954d9fc420c28f0124ab58b1945a78150bbec31d420412528ec43c104d8625b7068d441e78d43877a542e6cf26e9636fb6d729096f92b2eac4b9ac168979593165b62c18052074782fca8d8639a5961c1bcf796e42da08193a093bc86b82f8224a41bef54e95ab4a6e408060cc86f0451896e423512b1e7922348370e0db66540e310067b66a9d6078162ed5ecef35c17f7d33e44b565c3fbf53f6133b7454f8300342f5af3ac92c26f32c80412f1aa4268b48d76d660f87d55f1726599e4673e3512472ba8b98d8186c5dd5b1736b3a57f1623da0ffe7dc66bee85f69782d61900e77e527690f63c07d97f5a70eba1ee5730d648ec37f0fbf5d13d919bf5429e707aaf2174be4273910b2f600437f1a879021be684cf7eb87ba7396b4731d17d39c194800853a5447c72dd9ab28051865df3f9a12358fe8073a8b0b2d5d6791569385f0e0e286d635f9009ae42bafa01bccdc52c9b43a6c61f0298609027e105f4b4749d1b1b3cb347e2164b0c8ad06049767e2342784542f4cc09d03c8e4150ede8025ac78d44775356b58ca318bb86205708a2dd858048af3e138cba56ae66197bea7c11d55850610d327020ae7422afe5d7cfc0e9c15201fd259e8204e9721a56049f822697c34741228786e0ca45fe67707025ea3fb6b10a3cac3e27daef6df9d42a8881321c94d71fb16b44a1d99d3d0e434bd15eb27560bd853d3edd39c122ee0ac49e62a748b30e14bbe29d6610e702b1a3f8afb0bf2ebb88f1c29891e20b27742faa837ad9c27ef09e4a5a2f6ef1b90f35b74c842c20aed5251dcc4ccb300f8943cc521bbf4ab4ca5f0be3bbe95b84cf72d4a3e5f0c551aa6ca8a74483f9cd06e418d81adb4b1f0035953b0e39463d832aa1461434fc99e88481583a05738c08c7ea033380f4ec002297000e293250c5c7e5b7dbfeab19fd7cdd4f8de2a553d81787c4925c83689626e4300872f9debfc6df9a2dd29055f3b95ce4cafbaf94ad3dc056dd5f95d85a3e3d12784d8e41f1fbfa41c1030d279ace337fe6d29d80422a3f19be46021746ec03f341cf2f1fa147c0ae09166c2dddb8cdd51e27d4b371da1944de8c380bf838d236727092e15cece38bf42448a19591e2f9dcb40076054c26b22a07821ba2fb49e56798ebf4e5e058332107bc41b7205ac1ae07b4d3090ae7da9f425072eb2ce7bc7f974f3939b4b92078d9c2c2e708b9a844ab0e96da5d4114a151f93ffe960706d6621fd8de8a8b54804f03a2add9e54adf41f50757d3db2f05622cf6b4d6418779193c64d61e0385eeefcb163d4a78f75de677bdc029015804e55982a16673a6e6816ce5fd1d123afe19d2d692077902535c29c76612f91de1e38924502bf36563e158719afd40cbfef2cbc966d3d60143a0accc3892b1285132a696b8f26d1c17dacb27f2a06a8d454a3f110db08e43255751aed72900f3e309094f411bc68fca0936b6a5a665a5cf2b201b45a6ba85e2f8baac1ee7a5e74c76513a70d6ff14356a0984745fc0b47d8014254d4e2f4168ab44807c332b0850c20f8136c5bc4ca94011591ee9478f11b4f803fc27dbc45f8f54cdf68c7d1130824918cf3e0b9693c2c4b061a7e838523145a8d1dcc60fefbb5adb3a97e4d7cff16496b95395e01f46335343120e4772c3d5993ea8a4b0b67ca38670002064f8d28b14447ceb5e395f18c1bc4afcec3d23160fd9f0fae90f51055b747459a44c452cfc8b64d2e6c16153d6dc9fc97a293f2b7f3c52af85fdd275f6d61b1faf2643fd2ffe89a6787cf88db2d027e86224dcc92719cdbb67d7a5d411793b8cb0fa260e210e0e0b883ceba1e1c8fa3cc507f3cf3c048faf8226ed588502c5674963d0aff871309b9456a852250b653f4297ca62ac95bd9219bba94d6b837d644e8b2288f429a73400873bda63588f8846fbb7e66198b869b18fd2b994bb694328911ad903623d7a910caca4104b9a587f777224873897735b6da18c8b1bb1b34bf1814df83d00f473b1ab10f0cd467cb91faaf8cc2d12a4c346280446d92219178952951bbbbaa7478da4486102564f6b4bb87f7db00177ace04e1ee7f1264bc63ce593fe3e68a6e353ee4079e58db19f074d280c8889e6fd505e51b3f041f43a8815428cf5f7fd6d8008f7f715a9f8fcad0e3a50fce205772da3b65dfb12a3b636529cda95a08318485eb1926f82ccd42ce2f7a1388784303376a933d492c9240515ad9fa3c556d25f221837ac3f1e1ae163f140bc3b6ef7b08196b135078b4311be3175d2a488983e1b74188fbe3e5403cdf2f819ab46c902e30e0a738f411ddc820ed948d745fe0cb88add36c0a02e9e16b8e6c4cb2fbc47c825101cbef0061b7c23f6fa042b1e0dd3242cf582f8eb3668f10a63c2e6305c1fb06b18a53a367364317094f43211058281c27977a352e4050f0232a41582700f53bf77445eb7619cafedb4100521789bdcba481bbda205dc94a5253248080dc1906518d687430fca13a68b4ca5137ca14e4ed3b970cbd130a182c538d4151a8f657227776f2bfe112b8e16039e69859ec9de8e4747e3ee0d992c19b3c410c296fd40309b246ca1bd22460eaa7e6a467385ad87d35c74c0bfa27f8b514fc76e4941aac679d74b4f5a9017df58f26bf92d8da6c8bb0be1bd8daea0aac1c6fa0c3be10fe49f394ad25f4c83bf9ea322d40d78465b1c8645f0152911e91779229e020165980531c5631f906204869484862e8c4b6441b717f5ab1da07b78805894ae9501a5dfde2ee0f3db89c2c98ad95b719bd595fc386798086868917210caae06e8af2821b6698bdff35c399e1087064034bc8ab28cbe1d4b2ce516e7d1a3149b23b2f0ff819b7905306159bbf645ebbd18f13da185a84dcedc3465ee8d55ef1f24d2830cbf5e7c3f7b9dd9f1285e8547def3267b085f601824146607190ae6525b2edb2fbe8a9d90484f787952e7d472bf53d32f12e1caf445135aad016e9d6800cb0a69825b08af5d59a9a6f56f5bd075501a2926c6977a8d75f023508fecabea1c4748142174b49272a56e124ef7e017d59046c81a7973680768ad384c1b3e97665c886efca1e9f78f4b051a37d0bf0dbba17841938158737bd03d9fec054de37f403630d0319bd92524e0a3299cf825d2abf978af8e3155121b84d5330c3c19357910b4de82d1514696831d2b522a0af07e99a85f0063e8353e41cb5f69acf068819155f5c26084e87bca4b32060cd88a39735be7646fe513bddadb187d5222491223425092afb471d4b8126484628133441c020f0417e709ec4b88a8c983ac244f909a6c15981ae946ad028e784492e875c16676ac4a609b9cb12cbcd66cbbc9c01a8dd99dcb1e3e4ce53d675c37882b5793cd99ca1979d0f5b78c3e1d5d5b0bae3d0c21c6b5a7518987d05c1c41c6e591c1d9343d844c8347dc18cfe49c4d2bd81aaa426db40e546e213daa5eb4c4c982027520598bf7700df323f3c06064eea4a96cda3d30601458bec4658732d5f18b2788f71362a71e2b975bcb16bf96354f42cf712744cc74e243cc2d15172979104c4a2617dded423ccb19fd0209488b8f3d5487aaf3c6df65c70ef122efeae040debd312a0ff65bffb30e7a6711e9a8091437835ad42a7f1e803768fa573f0668ba420f0b0438fed97b51f2181fdefdb55455740b9df1eb95cf1da304c6192d13ff42b75b7e737ee65d5e99177934d406bd5ce3ea57b793e59c652b26a05069cad37bacb3633fff4743a723cfa975f61ae39db8fa3d2ba163d6cc8b48428b2f1be5469c135b86445f902892ea4d8a1286fc36f212131687afe04d89b6f766549385121cb38054d5dd7461361f443c7ae744da8d8522369dbd86e66a0eba50854f21438bff302aeee2c8c40541463ef34893f9f64e492654fc1d6a83874879908587ca061d0f04909f822057131760587085c7b180f375a3d0c233157a2efc32ff98bfa7a26c02444d98133185a3b69538929b51e6bb02d5488da2568a6a99505f997d9174ed0baf3009e02d73b5dcf245a869748b6dce7c3ce4a01534ae273db9854a9e08b71d64f282bc542a58b94ecc90dcd4ff43a694618cb628981e1287b1abde810ba932a325344c206277e12646428e5fafd2bdd05402329e610a098518fe25ab8c884b5d50f500b687cbf11433e1b497c95c5081ed9410b949cb02e772b83c66e91f88131309ca74912cc748418428148998c39aa0945ef0388d840250f795e7844f940e6f06ebb72c6fbfde93109bc74482cec8a9e6ef6198b4d642c3dfbfbdbd56d358afafbef9f7a89bdbc13880592e45554ab61187b7959ad229fb155096baecb0d17d7057894fa2a05bb52c580722d451027f8834cd27af528903e5f3f0ebf06e0e9c127c6df04480086e130d9afed254e5532a40dbd0e943102698fe49a68d3bf2cb0ff773ee722ab43f173c090bb8203ed1ba5e2b97dbf4760f72825b12420029c9b16b60836b260076020fd14690c9534627b93b410ab1f2711f7c96cd4c16070e9a6e37de5b08ebcb640ee56c950d6ff90ce630c150543ae5e790db023fb5888073fa81e596d35f01daad87536a67714bb1b728bfcd968ee62db707296d4128cdec64de59b081f6e7aa57015722a0afdda3f173dc1c58b8c56a798af6f4bcacae19eca12dbd4a65048d396837081b3241bec937dc00efe9610967d0e081a2e9aad50b6c61f7ccb8573d064a686ca02743572cbf18a4c7ea126f3c5cecab9f64009eb475188cd55e01765aa11ed20bd33c44e323b7318f73527d375fd958b87e21a71d831fd277511d58d434fce891eefe825fae29ebf730d331e27a4c4d48b6e1347641b7794a3a07da9b8a408c79f96290daa8e98381a774bd2aeb7f584f1e130b429ebec0d9e7cd20265c72a141f5fb9bdf2019a4a382922c8f2b08061206e0d521bf459c3ba78244ce2ec37347a577e8add6f7bb46907b0a4b5c4685ca180317db51963ce11df3f2124c976158b274a72785fc76f2b6f259fb371080afd17b62ca3b795aad3acdb9601f27c9bd971523990861710309af87ded2729fbac06a36d563f899235aae893ef3e892c76ccbfde4ddfc297c511af9ce2f6a41ca0902262a7d5da2f3d0a03d31fe51cd5d3ab1596e20e93d450730297a699c5f19e081eaca3608db4918c1b8e1451528c9471d8667c5445935d06dd9c741e9e171038dc2e6b1cdbd4983099109be1e157a1a919110452616c9971eee9d07163a87e393943c77691120a8ec0d3f5f4ac4e18660d6073d8cbdae0221fb499e3c1ada8fef087290278250a79acdaa9056f37ba41a406bf5edec1b84a06b39320ad086e242677054869f5796ad2779a47849053f747b79797aad4f6e4fe50f1bb9befa739626edb4ccccc0c4918401254dd7801dd54f7f5c6269419fdba8c07757feaf35457012355baf20ad943ecbc912b61bea03912af09108c31e5a2f18b0f27b9fbc435da4670777dcf1ca54b24383e811b084f8494babc4eb280211dad9075ba91b7451c32c0e5747eef8a680102e296f59f979b794b97406332b7af6a299c4b114ac2096f5cfff00636cfe671256e09f5fc8a2f6009c0c9781f31be45db98ab28fd935e4772ea368f1aabd65480a40775dc58fcdb07733df986074722406bfd3d66d5e1b371311ee166f22d359fb1916ec1a31b78e2b659086ab3cf3a4977e11b037feb1298e23d0be3e890e6d1c71d1eba5a00a9f60948cc9a0486f88f439785eaf089b47fbcc18a20147be2c661c01106461b2d9a71c78066ab748456f9249d589321168c831757090fe6136a80d69de28809dbed3007113a8d15178b607e96a445420cc94d1799243d0c272518c4898964f2594ee27ece384aaec3c9aa100d45fe8933ac0099dba02d6b5b4e9bd9b847641fe2733c641ecea4f1ca88a925499f1ccd4a96a350536060fbceeafcb390ce1d2c06d38dd4bd8a89d29a992c0e5d1d006ddfc11be438fc1dbd50a417528d3b35c1e40517479cd2005f0de2b962284040d7dd40e807d637ac61b7b98bdf94c2fdb9b7af54f4600c2eaa62862ea30ff1d5602a458563cf0568ffda8bfe919fa48ddeb1f11223838416656d5ad44faa6a90ce0393ffe8d1a9c39f87361becd663e841781bb9a9787e7a2ff5dd3a6b6bacdc1cb0a6bc3c9b9318642990e82083b99c0f45f209d0abe6090c7720d370cb785724cefc170375f6f208235d151099829be5a907f80d0721b2bb8213b838a79448368a2cf4b010d69f92a15c26bb003dab85dcd27149eef5b21ee8ef68d98172a3cb1baa10da33556345b3767a41a068f8efff3e7d4f9a5dc7c795431096418039bde0ffd3d9546e880e3f9f41b698f16b1fefb1ff88a4b24a45a697ba6625f4f19f9b7b94750e9af7161975a822fbf11b938c62859876083391ad68078683085f0b8a3020743c772a0f5194543466233d3cb4f1dd82460806bc61b707fe3bb18f2b88a54ce7582336a3c919400dc85b77fcf31a893c9c612d3be86a21cd49a7c03495fb3f2930b789faf157159a6d0b193a2e09f94f7628730eb46611fe7594e9b8a0f4656b14aaafc87a2c2bf036baa8a29f0dca2f268cc12168ac1a274f7d56f1836a8f0a863f35e52986386dbcdf18b9c6bb2715127ac5fbe19f3ac5f11a6bb21f2df5e357952ffb219176f1d11a62a9c531d7b232a80064c69b50347bea3ddebc265e90c350cd9ff38ba239c7dc963f68ea7f75d156ed4993b23a161fd906a687a5dc123a68cccc5c6d68ee695785045b2a3c06f031963a2bcc02291bd24426f0ef19d626d3781fa41f872be4d767c249bd9185c49564dcebd64a7c9d79d61b351c1ca38d57aabffaed988c0e7f243aebaca09633655bc2d55dccc91e9ef10ef5a04f1b8203bf82da6a66ca9d2dfd7337d23e99535f1b1ea4131b2978c9a4c1c6e6397a1e7e9b0b9a80a145da3eea8c8d1f649310f124c084197c6f4bd89fae4ed0c93b2e23023ab58d14110cb8a3f394f8cbb8ffed71bbd98807432758f32996c3b591086231884f705c68412f2d19992d683f47c0742148eed2aed5fb8972e7cbefcd0acd4372b04f74f16c3dbb251b1e65cbde6c662b1a272d9404443624eb3e11a5029907fc6d9f1ad0fdbaf328cfd56caa0b79ab3bb9787a90e9fbeb8299169ab5796ade7b7e77f5552061c1f8443ebeeb3cd38968a110bfb6464f7000f5f3d94c8ac44862ec4fa5ab98e6a64eb84ab97cbc19627b2f71faf0bd36d0a4202d88a5c803a1fc564bc2965a9d734609f05f7c1550c1d60c415d31cb46b82b3eb8989a83998dba84b0dd7f351637330b7090e9e17ec69a861cfc6634fb2d44a24604fda863d5b4f2ca65cfbb1a25955e3d92a6080fc906c5e0ffe7d58da382b93a5b417108d3f3e729ad78c93bd8397e7cff13bff620a33c635ac63ef4fb6f555fdd993e360b636009eedc179d8e8334da13427e1c3f04d0527e022b8e60edf64c1353c17e4e1375bf202be0c16c63032b4d8dcbf6e80e78de2b8310023423a5e2de99de43bbfd1434f9af9edd07d1cdbabdbbcde03f877017d0c7d166001b1328c737cfea001a85580ffaf218fd31b50db9532681520474319dc82bf8bd72cb039ed9b4abb661c6ebf2fa1374c2853b637be641ae3a70bc3fc0e61e6dec358ac065b5a9f34e0bc4d90c3589e9eff4ce54975e775b692dd5e70023f88d7ce4c50ce756e767474312558b21ba73e3802f3bf2d5366a411ebee62f3076a2b65ed873e0de8d79c9224ef7590561a54d6f3d5fb1e36d7ea7d8ee7b009fd5a993d28ff12456216e874866e9d3f9cf57b2df9b855a25c517431de2c62507c85cfe0a03d0e75fdefb9ef92e60b3f34c804a38536b3391b6fe79cad97e6938bf919f0a46add2718424d0b6dfad46ad7aaa68f7253a1865f6dc23d8e6d4502aca2fc50f14cbcf5b76eabab92e58b644f36dc36ead465b73bedfe7bf4b1602cbae330881b40f92420c73afb6cbafc445d0fd2a44dd4d4dd49f8fa5a685ed443ecbde6509999c549aedfccccc21fd394f86d5fd462328c3edec4036fb6755d27321249403233694febfd5442245ce17843a3245e5849a63010dda1698e7f7fa1ada0c98f7eb1821acd9b3a6b88fbbb8a2ac68af29624dd9c20889028fc66eaf229c7eae85385fa39a237c52d1c1f02d492c0cd410bc78781b0d02abca918a16027cad9a58e6cb60b5ac16eb09e3ad28e6a4ed4b3e14bc5c7721741a5ea7d4efd5bd45ebc4615c0ba36986d5778dfdfb70c05a10c51b8ed669c4f2fbd6c4104d39f750b4d5f1bf26d311152a17f9f909fdb6df87d02475bf9ef132afe7441aca37631c94ff5ececdfecf498663510a0973bbd400a2696ef3e63f8ac16aac33fb1bf8bc4f6fe8d97714dcb5203227f57c5473f5ebb263ae69f99877fabb0356ffadf8213ae163fab727efd47cca78b34844ac78d3ede7f6e5ff2a20af57bb728c4f9cd15ac41c1e04fb08d3d54d763722cfeac649bead8a3c98306b720965a044182ba398f51b97662af1889f0d47c506b864ae143b2d4c053e6e1d8489efd27fef484383310fc411161dc7d9f3051f5772e8c62ce4f1f9e7f3a2c3271bc70464c8f714a6639bc66005a5526b142ff325df69837abdb2ffc59b6201975f2dd7277f161f8a372d46bd0325dbb864e721446a34b890cf0d54f03d1f25b7d75d2634c0c9ad480ea1f64620b8474aa9807ec5149339a8cae286db244f94a314db3e33c5e0438a252def50062ab0065211b9626483803673624cfd23a43e35fbe3af2c043fb2c4538bd7c8fccc9c6b2c1639c1e6a239521377aa6b9d52d747bed29416d2e34f40096a6e14a40c7b5aedbfe75c3e41f207eddfccb5cddf309f92cb2531b196bebbfd3a2682c4b6a5c9cbc7ad41fda5e6bfb0e66c6415e2f49836b067dc4c9c7be9496157076d6b33d30594b6a14e5fe01d8858ed82f7fffa6f1bed682a3f041f16bd240fb50d7f516172cc7180bcf6b84b8cde2f35ad963313d71d4f920c1ec8270b991f96058584ab1505f47eff2c336e283a7c477b6ae33e5be8f37d80a41080b767dd8645d11ba115b2e65f5924006a18c41ca0c7339ef0f424ed83c5f039374f4b96885bf6684c8905d8b87bde3f1c4136b14964907d0b123ffaf393dd748c1b76a505ff0860c095d3842868f28fbe13e5d97bf16211495a781250f69fb4e807b777a5a0ac5347d11dbdd20b9a379bdf54552c90910e3e5ee0db2e40ad974e85f49238815989d81fee680c4dea356c863f4d09fa8a6f73fb2b46f7d9b14f423250ab4a281dabe2ced6bdc987170c425697b23bc26bb09e2516744aacec6dc5e111b30ef092d2f2c612887cab8e32ee37274ab83307d79bfb0a85c835d4ac171c99fd7d8ae876e454ffea62fff4b12898cb2810304c5050ec061db6b019ab866b9e312c02f30327b13215005493dc5f9f1e4cd27d3ca03058b0e63f641937fc295d65f8d0ba5f7fafd88771bc74d782d4c5209ee5cc5d9ce4d0d333ff51627dc3bee893b4101eaa2d1921128599a6e60d899ecb610b622b00266a951b274126f8327ffda357cf0e5706460c42ec6f735b7ccef28c063bee932107d130d7dc877b04e34b46fcef9b2333185350f22609509b84ebe1de87a92285a815d371eec66d28b2b19a564c55f29a00690e5b231c0a5cc84fd5c0ffbc091c1183dac297ae3b9b8c5f0bcb660713d4a940256d4ef4d8a6df85f0a39241233280c7e7ba9246aa52cc73f184b3f46723fbbfe09fe08e4331d69763b2c4e91fbd7d11104bcdc19b5a48ce25a5c24698f82df7fb42a65e8437ef47c578c76b8b81024a904ac00f275fb380f8f24d4cf9eb07c3cea0e4a38f44212bdaff3144af79386ae2f66ce7a8f349dfc241a31f19df8a6f5a450685ec311e23b83ffb85a0c897346b89f1188dabd43b86e91a14897c6c9fef9e5be9c27efeac746b7baf764d0dce535b197db1745098425573d9bf959ea77747d9b6b16dab63f07bbb1869dc4649505a5612bc23d4faecda9f2c636fd1785cf6201185c066147e9e08be918429375203d87a21eff40910a2f547c283ff0f91a421d5c24ea26b401763de85940de012113f91ddd597ececd78b59e1b40be2f259a68a680435971bbd253ae221be5ea1a645bb6369b3d3bfcd2a516e0622337479b3ad8cbf24acb8a6364719ebacc505d0a3488888173851cc4b3c835d586b3169e9177636c3ac81aa6138b04b33299a9c1dd894661c2809d3f88cf8e8fd99b9bde2527fc3c1d46926a5f7ae8cea523441fd0dd91827b303cb5d5dfc0daf9befeabfae5b49ef9d3a0cd799b21b1e99e5fcb3125422cd5b78827779f746ee6ef92d5ec282f583802ed69612f9228986e0a6de06f47338f63d80da89b854d5c6e9220a9e71517f33a03c1b237fab9192fae398eaf67018c9ae9c466d0a4de369efa1573e7f4b713ed4055d1e1f649402d4f4f4de0ca00c5176376f057e2edb697ee9044a00ce7c5abf92c36957ffcaf1bd2f17bdbd9a55fa4ffa78bfe13093ba5f7d1a810cc633da6ecd73941ccbe34b3299a9befbd203adc378d2c32ab8d5a133af23708ef184589cbd1b242d1498f6f0182301c3c726be89d641f5ecf63ecede255ce1eebf304b9d655d57b34836816df020667af02f46aee388a44945768c977d10ca09fa89a97ef0070d5fa20d4c80e91d2c3ac255e61b3953d0fc3090a09853fcacace3cb9c604575061837a82937c972da8a2374179741545ce7d1e8562ce134ab55c1a035497e482fb2c889c34df48bacc17b4d8356804965829eb3fcf1068eb78ad50328f01ead5c8102a3e60569e6fa2dc92f5af7be13242cb73b8d1b86dac3624b339866d8d6b1aacbd50ad286adabcac9802abe4029e95ca3756bea42aabf047a1e2b1053baac62bf15ca0fb68cd116d1109be562b1c5a9907b45442b795fa0f56aee10da2d051a5eab5856f629940fe54a579e966106ca51638d6a69cfc90968b9e05717862ed38d52c99f967e16a28354c8c09b0896996c40498524f499ae0ce2a53b3865c19812e0931e076f658849d13e7bec17e567ce43d14cd381db0b4249521400b933c040ab4da2855276b33221b8bcb26c68522520e1b69c367013410432d688e2578541a07590e0c9140cf3503112585b100a73839d2a6970d2f5ebd8d4520a9c7a05e634a8ef2f4ce4b47459d472671479221c07c667cda56d61d002602d22b135cc61462cdcc0edc930f5943fef200c7a52944f9c4779204a9a3aa31bc00156a052c6c0fdae862bd98edc7d80aa116250419986be24babb05dbae7e843ba77ad7b48fbaf08afede79a5ec13f6c8c447a7d4cf2a1c266f132e9f111619036d02d143075ea3c30b007218eb894e5462149e43a73a917693441ab97660cd467aaae1e0278908db066c7a9aa47390cbb95d7ef5061cf23fbc34020539b83ff488212ba641ffe322016ad1f62d19264c9f6663d4b3dd31e1b5bc89b0895df08a735d32b072787dfb7e8f9888a6f502ebe4452dc49cad1ed4839268186d3da96c9647414413182db2a2491ed0e9cc02be1c1735d9ab651b6d647808f865a50212772022c4c8aa8936c0f54b008e5aff95e4f85360f7cf2d9498565a3d35a9a571515a4b5d86593680923e01b2072de002e2c67f3e9b5830a5368bca22348402658573a37703cb59bf8507581b69fff69eda6de72b04330c28e2ccfb787f85d6a7a85dd10347464412088f9cce9a2d495a2559dd84736f66f7b67c1554ba4638290c93b412c5171ecf955e41cf3a283b3622b3d6897606d6a6d3cb497715c2e2a5586006b8366af9af7b390109820539cd09c24d42fab9db80e3ccc114d75024bf1e20e2a90ea6a1320323d1dd12df1417eb3cef16a3c65aa885b006f06b413c252f65dbb4fd0c6eab1572e424c18056fae5121d2f21f976765fd9e62f61b356de99b029ffdb363224aa39dd04ae1a0c7c78850170e713b9dfdf97aa1761088636ed14688c52f83216c12d39c0aa27b2d90d21c558534675926b40265d5976f624d153c42a4035bc5c00608e9d68fa4e43a1307af18caf2422f3bc2d5745c81826d57fcbdcecd3d277e7ebf2ccbe5c5a4b01c29afae1bd20acbad3e2d6def523c523e30a37060e139cc66ded4e21c35ce32b9d135e37cccb3e021d4926e1bb16c5fb13ce4744a2d010092a39ed1744c81f29d8dc371f3c12ca6890793d60091c037c6fe058d40c9b0688a994884f7e0b60e0e43be3be6879c3e8171adceba20e5f889dc434f52b895a56232f149f935c05010508d58cf1bf3ae388f2bd377567cf0372aeef07745de461a806a691bb95d5bb6a3c0c2673bdd074737fb10291f79352358b0f67ef056ceda53598cdb8451a23fa4852471e04f5dd066ae6c06f47d04db10c0ed7bfc101a76e2215ce7345d65a58069f4114205377b46c1b93cc24e92e5bbb9fdbeb44b20d3f0abde70eb876b27f802dd78cc9d8ba2956a263c339f5724e868df4bc472e00e6ae3b85ccec93ad45eefea0e28effdef5be67b5b98520dda47b7ccf777183b4e39e9b8de7de7a8c706c36bafee2009b9aeb4c4c433568c1b04246d16b8f5f6f398f39831aea14af3e9e4292e4f0efbde472ced4e4bd61871bfb8182e87599ddd1f68160b910c4f0ea7e6107a37008e209b375d048031d15de302a25994c64404e1f751a8d136d7e2ea5176713cc6a7009ad74dd0e4465c9c69781c555534e703f94c93b4fc63dc079435b5bf09551f978497872d66dfada1e65552466c21fa2ba2842ed5c8e398f9fc8d9b49ed58cbb2ae7e6dff9fa519524d4ac4fbe64b1e7ea9a74aae464cd542720ed5aef83f3df9f5fe79801daa5b1ad071ff9d60a425e8e16916a58036428376ea0506d0f53bd0f0b93d955224a86250326c59e56eae5695b72a618437e54c1c070bbcc9a1389c10e1d4efc52de52d7f11f35a96ade90f30279739a838a4ce70e283bb4608b5711c3d034ec98bf4c21ce1828dcea9903416ffe2843c44d93cba3936c780d376632ff01e113e8f0b2aac1aa387f3c0b53b77df297d63087f6aa2bf68edae8f7705b2ba43b7bf655959d1041206b50cf6dc1d606637f7400c0170002b263b3b5a0d97d10cda9d2f3147c5abf91d286247c2e619da4fd0977841bb39da1be43d3e603c70edb2f0a753c34c7eead2594cb62ce67bb745658ff48c79a2c0165c823198570cd19e0db9dffee41c4ee588608d4cb15ebcc03f18d1d898ff56b372bccef0b52ffe071c7b3f32e3baf6a2c8ecad22f8070eeb1d4fe727cfb78ecfc1fc6203bf5a33c4a479acb99f1207b1c9cfb9b7bb8f373dd53d7e59a9f331ec05a3f743e458258be6a894b67da11d9b0ed197de64415b76c4fc2536c7bebaa233e5113df5177412ce06457b357f1a63e6082532af1955dd9f3f2eb3e2abfb37babff866d11099692539eac2990050b0abd976da41f091b8ea9356e4d943ff6805bd85ff8ce6cd1b9bfebf3e307683539022f34b4176da91740e3f41217fb447506c3a8ccab320d1c3d35014bc8ca853e43c027e668e0e821a012f9ce2f1f27d1fc33407c75c87405100554baf1a1ea73fdc9ba2e3be8db9177ca8e4d3f3ee0b44096fef28a513d2cc7412ec5d8bd7427d3fa9180e8418d7a09cb54445ddecb35bcbfc60558f99a002b56db955f512b99d003d5d4fd41efbc7276dfd0bac0d6b8c691d8ad208797dff4e86282152770739eb05c95c7ca641370af96dc6735cac686825a2219bd0f57acc8fc2f646a9f7c1283b9e6b3a105d8bc0b85320ac25ed8d30270679f40fccdfd0d31d47ffa40c3b20b07d8a11b14a1248f24bb09edaec41cf2d2d6a863369e7609c2f8a3152bc3aacfb2957875c180a7604f409b0b1ac613d3ebe72363e751b029349684c7fc31381cfa72adf851571cf75d91cdb232ba070cefad406318b5caa112d88a9b216b293727b7fc38752c263071857abf3cc98c2f7c7c1c6344d61436af9dc93ac92f5bb93473102cf29a2110efd07d2eaa7ae2b11fd05feb0bfb9f391fd7db196f3ee8fb3d8ecb87c48c5734f29af87211ed41453a9d7cc83a735db384d16e0b05277783a3d8834f6ddedf00513bf70bfb5e59f9f0da72784e169d3d64c3d85fac0f42cdc71296003536b69129d9217b5ff4bd8b7dd18674a34918f495dbc33adc45e477dfb864c34abba707ede8356bbe7e656c490176d9e5d49b2280560ba94d60a22b45a8e7e25d700abae74ac2af39d095133b850032c470aabb646d2e78477051d6b94ce5e16fc9558b094d610163637f21114efbc6a36eef9e70d08d4fb8f620c101ba2508af9fca2b6f19f5ee76216b026848893674bd518527445385199f1ef699f08171ba46bb3ffb907fbdf03aeb4a95e84fe12ee6332ac8891c905c79c9fbcb96646b0d2b7906186d31f6b04dd17fdb78aace1b1732fc18c935f4a6e41cb9ac9b8898bbeb29a605eec47d78d31fa928292d41bd7bf2d885548073a26910e4a33bc309e66c389a5146ad7ae4dccfba3b53731e2eee3f1f776d6320a2be9e0d776df03bc1db56c021db8d26269ad2269b94bc3453a40c452fc90a1aba4bd286f65f10a26bcfd8bfc3615a829c2ef26d1dbd379f9b96bf2980f4d0f1825257e0ac961ee52d0454101ab7b3e86d8a06132428c1642ac690f46b806aa6d233fc03c6ea6ef0f402e663733e6b2b37aca56a46c2db07711c01866cf3102a3de2bf28db165e171c0e12ca916ccd358b1c85f85aba86d5dd068f6688bb9b3630a6dd82dae0735059e72e3a9da70e2c4c375d30471f5269e9e73b95c3f4d6ca0aa5c891ee83355461056122d0f430472ee61c48e871f78e6f94002d1e1170287f09f1342413f2497b52d105d2692cd1b1a03284140643efe239077b3f01ac5afa033a0e0b3995f3cf07bcb2911bc2c50b0ff98fd4098cb9cb7ba6fb2869e07ec81555b99228959005966b8b2f335399ca3a8ae4f9193e1be10e310e394db90623e669224abf35ca629c447881d2783c9d5109916c79c276ebe36c49f67385253fdd5099460ae0de320c1f126f507e3094e8d66daea67833189cd843b84c73b85cfbe7a964143b50df2586feaf5210ae0dd33f15f81ceb89700acbecc923678b13f94d41035e71effcfc3701b2a1eb10a91c441e5e2a8e69b8fc1ccc72bd32fc7bbf687a08df8cef270e2177d7fc4aec6bffaf10c494c56546c272bd61478cc621ffed03ed562d842d5a79439404a36666facdf8dfa50e040c51b7bfef73c0ba758d3353f4388985c48b2549191f71358ebbf8c5f1424749e8b4c3dd5397020d3a3a2b91129a97e11efdc74b1f800c2a3b6a41ca665fd951f382a921150d595a4b53c46d57baf331a8998a0e0924f557f4d50c9f4a8785b4822d141f4373d6d6fb080f8293e316b8dee02198158b25351778f2fe19961d639f08b44bb64abfe314146e4843245a50c79ff190c1e0fba44b75f583dcdb5755c033ffd12a2ea4b6a95dd27cc571268243c87b049dd62fdb173c28e6d7838768c6444c8b749b927d8249dd34c79618a40ed164faefe86c38dbd77b85d4088457a0a9f37237c7e67b7a8fe0745637342aada6b543b1f317dcb278cf635f125e759f2cc5e66e1a8ae1f0b27e20aff62814e929df7acc481ffa933ec4ab97ad4331934e829d05cfb203bbf087085dc0695fcc91e208567716656deb65fb228c157fb5f3c6b2dece96ed605a54acfbf9c14cdd18973e776baa17799a6079e656f13cd708d04c938c076a919d5d3938d9930cf266b65ff8f17db9a73e016bc2587436d1eaf0f28bd4752431bfeeb498cdfa00a94e38ab9f321012c70193d067cd229420ecab7248a52bdb5659fa11f845e1dd2fdc27998d3b2a73cbeb47cb74ddc589426fa9f32f28ad2d0720a63701cc18773320156f6c63dc2a77c4fece218842792c37e0fe75f19de79ecc0701d3f00233948287e26878b07a7c1bcdef37652296cfa6f96327e49a2fa5c8d67136e3f246ae24bf87fde8358843a3f65119cbd74bde1275b1bb1db999686a2ddfe87074be3cb3784889af78fef2e94e885a40396405a4d091c927cc5f33f43ac018b3e966f0fac7bbaa35f0dfd6c8bedf48e876cf26eff3fb695b54f066378ad73896b19f2f59b931eb77498d6f03e923f978afb7e8ddafa8fc582eb7f4b0bca0bd9d4719ed8ff49c339b436d7b74f8fc8849de6e25007414a656a9aed258533f1f65b5afa3716c75cb92528b1370ba9d93215c64bae3b37996bca8fb189524e2a1ef4d339038286d20b73ca4bb7742205b6e0686639f0d3cd0100f8738e8477116a2d9ff902ef5ef55e992ff85f48c61b5017a75368c36081afadbfb16d360a9ba388f2fe0dc2e99646c4e46a78b4931829c405fed33d57dc7f7feaf5c902efa0c79f0bd113fb4d8bf989e8b752684dd45dc0d84a1cb74c7f2dd6c6fee4af13ce172aeea7c5b999d6b29db1c622bfa71378a63bb4a90d99aa5d50abc445cb5fcd2b5244253f0052bab995ad5601472d19b1e2a5131471ccd358c722ff33a64e10c11548f713f9d22b5590b6ec0e2e2d837fd09c6c7375c6ffa1479bf2903531e7acda6a5cd68913d1ca8b56ade481c89b2da8d699f3148c3a79938ab72cf620f825955ed3755fcca8582174c658dc0e25bbc0f3a4bf4246103c4070be05de9d6ccb0b13221023744c52ac88d5caac8cfa00c693a32db704d1e072b7881d813f3a4f22762f21c4063552d453c399ace004e62b8551ac7826311c792087e336aa8b4ca8df7b4f3846565b328002fff5152d24193ffdaf4f7835b461827f191590c064c7ff477c58c1f0aaa0805b0f2472f7559217ac64fb95f25f62bab4652336f1cfb887b32842bbde36777cfbf67cfac16380c87f087f9ae528a566c6a4fa6797f6f33e77479b73e897e1ddcc26e8fb2768b3f26fb5d1cafd136b34018bd9aebb27423a96553e7e915f17311095a7c13499c0ff5d3e291338083e4af996ab6b02360f241c9b0632b1d04aa6bcf266230efe2d887cde4ac0836ef88a61c13fbc2061a4df93b3a13386efc01d5a0da48991515784e83ac7a4f04c3577cb337f119b75959542d06b7c4abb001209f3e563b96182deb2c6298b1e5f3dd17c6fe13a6b96a8df9400ec403d4bc8ca627b8940419134008b7a5e9083db01f49d98da392d3553872159c764928f19f3e52a7fefa3bfb5366fdc793fd81627e8d48fa3e210a4ee57a768ae1eac41eb4fe2889d6c8d0f4f3626e8ffa92e7f41680f93cfd955716d80f82639065e2402cc1fef61d2bc0314517037c6b60f18ef06fd5251e676263585777a4015d35a42c4714c2eeddcf44d7463c36d03abe0e8f9341cebd9fb816168697ee12c696c8c88c8324a8f58186a0d92eaf42fca7df50850dc71009d28dfb16a827f27edb554094128ac90025ef5049f0c3760b024850330333333333333333333e3ad94f5d7ff8fa78d95b224694ee2453b48ca4d49492295f874de69c35fa40d7f91bbdf1619da05a10c030c540c6fee081f83a218b1c7bbf1b9cd3da99f28e7ccf6f8a8524f145346ed6c62b5e7e34927caef9dfe2e7e4e1443f0f138b5768c6e7313c5f4cc9cd5277d045313259fd81ab24a5777cc4c9423996f2eaf4f565f62a2d8afaf41229ec7f012050f615aeae39c33ecc412850edbf1e1216aeeb812e5d4eeba35bbab6652a290b1a3dc6967da0fe2244a96332da23ea8ee092551cef7c17b759e7dcf894431d375780df63e9c1f12e5960913f363441f6d1e51b62d1fed942c1e664714b2ff277fd8b925c5d788a2a78dd8fe41cebbeb31a27c6a3e48713193f3be8862b68efe1a3fadf4308a288c8ce977f4e0e6ec441462eccadb1c248f228b88b27e0a1dff1ee6413aed10051fec44ff754fa7a119a23ccadcb91bb7d9f717a29cd9a38febdcfaec0951b08924127e538328f7fef0f63cad24eb4a10c5acb790b0a14014d27d1e65f2b5ff3c20ca1a35e3fb3da5481ef58782eff8c8c7d7a3f3b0fba118445ebd22f8d0b2ee43d93c768e56ff384c4c7c28e58f346eee1f8c4fbd8782fd781039ac846ff450c879d07fd931a40d350f05d9f0eb71ba32ab120fe5755b09d9db231ff9780ce00ee5f50e3ffcdc21fe20c72a600f6469001431003b147bc67af0839c937572ea50326bcf9afad79c3ca143f94463d08b326df3710ea50afd8eb7a71cca61bbbb9169c3a61f148772ee3b4b91a8edb1f9a041d405071e400058c400e050f8d81ebec6791ea6f56f280f82e771c862e6d1557643b1a5626375c839abc6361475d3698cac49ebbb6243a9c3455ef7f171aefdc8480c600de598793821d4bca4f5e16a28ab6b1e6d9eef6491a7a164da1f11a3f65857643494d25b839d499bc99a6728dbd4a6bb521f74fc35003394c7c97ea81153bf4c75ca50ae931dd738935b7793a1d8e3b20e123aefeae6319437a37c996965be8f188a797feffc34c634f10d435134d857c8bc6028c76c13e2fee7ce1fdc2f94dc256cea1cfb523bf542210fe3868923e94229630c92fe5475ad3a2e14c5a4637b9c3cde84d416ca3de897f43dc970131a8016cae926e6672f730fbd9385e2bd4b1ebbacab67ee5828ee66d8929cd4b626be422922ba0f83c846df1cb442395306093953b7b61e0906508562a7e4f849ad2d3f9f0ac5ead1a94fd75328e71ec72953b591ccb1144aaad1f1cb237bfe781285e20f72d4dee5843c94641803804231e7e1c71f69763c6bfd098b6fb646a61fee84f220a7924e1e3676b24d13caf1e3c1f70ff278541b5c26147e103f0fe57e3df2aa3c03584239e43be441d6f5dfcf28a1a416adf97a2439754c27a198c5e444224bcb3a4828a63a531f6a67f114c923143cf46043f4e8663fac06608442c855f6beffb2933f4528f8c027b2f660a7dc7e2294e724c7ef0d97d69c219487a3923be79566a45d08c57413219f5ee409a10942c9bd835e9b0fe3d5642094bd7e9441eded3b277f504eded63f0c1fa99ead0f0ac1ba8375686f26577b501ec469fcc95f9ac9e34149a5473f5e2fcf5816d941b9d3f738b9a65447c8e9a0381755b1f187e5a65b0e4a2d316a1af1642b3a0e0ae3d943ca66ff0f23dda03c3c7d0fd53f9ed0f031001b943dd60fae2c73680c3da420a316a57d2dcb9518324d3681208316c58fed83febdf54d1d791b5c03038406c140c62c8a21e277eedc993a652f8b62c83f989ceeee93f8e858945ea2863cf0891c8b1c19b028e6a1868913e361a787bf82ac9420a97b18921ef936690c39b37143ae284f4ce9bf1e896a0896b6a2d049b3441f8f5c43989515e5ff30d93b6557969f8c5594471aa31579d0d26b360d19aa285c5c8ff328267cf52735b652517a893c180991b387511b55a840b5c7d9a95eed265ee2fd21a4a7479a31d42e90718a42f4d0243b3f7af736454142ba2de2f635fe381d1d594890518a52f52075266e6ff6b1d5d1910519a428cba874cadfcde9752b6314e5a0f5e38cbff3f9225194bb33f37818a685a21893e4c186cf1e63681614e5517a1e4a0ef1cc3e57199f28e741cedc83bcf1c79b434f14d37ba6aa58663b51c8f2f91eb679487a970d1b6f6c7ca19c285c4806cf7ddfe37c66474787b1e1c517973906199b2866d688b297fccae075c1810768e2f0c88c56698dc891caa2dd52d6635cec27f0a2a9882813a569f18107cd38c9546b10bae105185ed0a0911450c0022e408107e48d17d048c24479a0521e31a3a6dbb56b101a230c1a37fe04477a093e6b8ef3faecc3598625d01e489779f5287baca6ad9d63d2d47d9a6463c8a844f93454867e3ef7d1ec05d7604047c70f6450a2ecaa72379ed374ede7868d3052206312850cd31ec6f8fc65d74397204312a53b718996dc346bae0d5601033612c5bc1ee67bcbb5cc986303068c818e8e8e0e1aa40689820f5aaf87f1eb617f3306b3e0018f28f8c8c7ffb66de487730d422ff81ab53660c0638cc11d321c51b08ce9524e3e4b974646230adfd2ff1bdf4af338c388a2a4861091ee7c1fee4514a3f246cec6b2a7278a288f4a0829f6ef638832118517b38c2139838862e4f138244d3ef210451b917479f9e4d9c7c31076a6a87bb6989b4614934ad118fe32ed690a51c81631a1cb3a6323bb2344793cfedace558b9873eeee0651363f6bb391d0b3759d204abe1bd346f89ece1dbb0b44d907316dcc49b368542e0310e5f7b147675dc8566c64fca158a549ce3e87cb5f79230c065c9e1f8a777a9326c9ba57466030c60d30ca5d1fca2164d66855a99d36b6013158e0df808e0e7f3158e0ef5e90c187e24cdad81052e923dfeca120ad9b3ecec13a45ea903c7005197a28dbdcb67a4745c4e8ae8c3c1422a6bf8de263f534957574e0a170f612595d2a3b6f240f280364dca1d4f9f936f21b2bfae361d42033c8b04369c466e3e73dc3844d461d4ab251d2038de4497f182fc450008141061d0a51333498d9b85ea6905a4083905a607328bb06ed8accdbd0ded4a0f131f0c2860c39143deaafc721f6b4d35983502640461ccaff395ba57748c76b32e050f681468a30d98d29b31830e0804a41c61bca317546b7c73d10ddada3830b32dc507239b9f8bbf7fc71860330b8515890d186425f47ce74930c99390660708306c1e0464541061bcaab1f4397b60fb3445dc61a4abfe9c731468c71227564a8a130596dfe57997d3c691a0a9f52725affae8a2b150da5d3b2fffdb81a253ef60632ce5094b0c95a33cb6c5acf0c6464a9958456b74bc81d12422524a98abf6a103a01185ec0c01f8425067f61376494a13831248dbb2293250d31f80b42aa10904186620fc2d88576981441c6180a5937c38ff4479e21174331ee46ccfbe2a3acc986a13c52f7391f49d8f58f044369767367ab8f2e33e7be50aacdc883f8603e0e6145c00be5bceb38e1a39a90c394d185c24eceaa9647e8b177fc3b3ae80b1af705195c28b9584c780c0fc9637b7720630be54ca1394cf240eec7e368a1643fda70171373b80fcf4279543fbacffe238faa09164a9e3578483a71370fc5088841c6154a15397d3b5eee4d3018430318e818230c313a3a960432ac501e74b6b9cb906819a62ad095ea12294345dcb3c761b286504f8f3ecba04221bebd9c0f263785b2d5e6a6dfce49b691036448e1943c92e42395ec911129277f9e4d3df28b0932a250584bf11ea44a51eb14140ae71ded3d8f36868ffd8482a589a9f8540ffa22087474d4b0c135080d1b2f060c8e07329c5090b47fb3ade3d72e194146130af7a14c7fa0f93d1ee47474240daa71e3d50221a021860c261432d3cfe3d88c796a3296405df9c66e6b88d25bc08812361f86a88b98497a965cbf21fbacb34d5e46120a1ad397867ee58418978104c5c703f38a2cd356972e8917d96b24bf641f7f328e506c8f28db83ee94b3211946284c54478f26eaaa7a888c2210bc54dd43528444889bff20a68fa73d7ab46c08328850909e1c62daae6fcaec8368b841c6108a5bdaf95a3f840cb503400e3284501a2f0f3df08e759d185f8c51838683f1375ef0446078c1350811b340086894404610ca79233e728e92ad152d504b6490018442fab4b1e5c7f23d7a150d327e5038c922dbaae3a3965c171ca04017c406193e28c7a738fd547b0fca19f3b534f4e30ff3070f0a9f5b34e7a48db1a6b7818c1d9407c92b25d49c74c78e0a3274501e6686b3d59148ef830841460e8af1377565eadc90270846185e3441060eca6a371ebac6f2e38ffe8e0e2b2bc8b841613224730e39627db4cbb041593c7cbc581f8fe65b22805a14c553eb67d6a8ef71824000b428886bf0b5cf4b0f9211c02c0adf79e379e871ee28524000b220448fdac53c7d94523d70f58f1fa5e37bac345700b1286ac6fd93cb10b5e78145712248ee3c6e5d00af28ff60a7c6de4e6b62720c027045d1d3685ef8a6b3e95c2bca9dbc6dbd73883fbab1a29479181fa627377a4e096015e515bdccdfc39cc851731a742500552cde21651d19312287898ba753cd79743f501f2a8054945d35dfaea7a2074930888d1b60106a80005051c89a39c73ce7b0e69ac8c48f38a9334e285688db658f34690fd384421efd9ce49409e53cac8db3558d3ece2ea1249afa7e3cfe9ae32aa1e479a0f9269d84628bdefa3035cfe9d94828e885c54489183eeefa08c589973988e73cfa4cb5110ade99a3dbb2adb9ea2214426674360dcdcaa989504edd9f73d51459a51e42c17358ffe4f9381db5108ab61fb5274b960fa30e42c934e5debec4cdcea3b70042517fb7c7e33999598fdee20785fc9db77af09b5ef3bc850fca75961934878f4f7cdea207a51fab4c464bdd3469de8207a54f19673ed212b999b7d84169536ed7c4a41f5ae52d7450b4dea0be9f934b8cbc450eca761de3ca240fb11e6f8183d2f978ace643c910c1e22d6e5094e9f3e990d4b727dec206a591dcb7f3a1a7fe415c8b42455a0dc963f2cca74569ff324aecd1b4943f8b42ca984c3245d6ecb82cca1f69afe7de220f33b128f64798c54d5bf40d8b52494c58cfe3b0f9e67d4579dc3dd2eeb1ff782cf1baa2e4d622293e645b51bef90debe9aadecc654579242ab9aa7b1833e6aea26c9e156e197b7e83ab8ad2861389c932637b6e5351528b703f199bd3daa2a2949f075b72934922b6a72875189b5349d9b8d79aa2ec512273ec709649da529487a1cb72f3a0377b9e14851f9aed576d9258ff28caa699bb5c7d154531f37ac28794d7ed3514e551dd7652b5efb18f575094b386ce6c2a9f7c18d74f1432e4b1ff86e7c1075d3d517eb53cf11e59fe20d74e94b345bf2548771e6d9413e52aef4a8bb0b29bd14d145772e6ccc9e5d3645513456ffb9c33a60c9ec76a264a19acb235e6d1e634514c14928dbe468fd542247a8962eaf8e32a89107246d41265d711f97975c97910ad44b97ed4f7e226254aa929275a52b4e7491425c4bdc436da27288982c64f9eba2546921789929e76a7aa4debca20518c126dd749db6e7f44b9bbae3dcf5566da11a5cc1d398f3c72f2f4d046145e225cfca4d81e861105cf182fe7ff9fda5944316f67ea81c618415d451443f77d28bf29aaa38928dde7c1af69f2db9b20a29c39c74925712ee27888721ea8da56ff4736cb10c54d7b9915617c7c50214a6275a549523df60f4288426ce68c67a6d3f51944d9536b4ca9f1717804514e8f9b21f7e8e5351e88828f6bde23cd873e0e208a21c7cf9c479b24fa3f9447a571d32f420f43e38752274dddee81ab7dba0f458dfef1890f22475d3e14beb3257988c40fd13d94c7b1c6b62778288d1e4a9153c68c6cfbf6e5a1fc39fd30c6f6f1b07d103c94dbdcabb398ceea77284495dadefc778dec50083ee3e73d320b50874284a9ae1ee61fd3310b4087d2bd879ce256f2cb98059843d9c779643d7af5b42b6601e4508ca8384f9f636a6216200eeeb7c75c255fc2a1e0732b3939df46d7f20de59c218f471ee5a2aba51b0addc3189a52f3d4af6c43f1374765f8bca9c64a369432c7ac4996212143b986b2b78b46dd6c9c92520de50da9477fac3f92fd916928c4e73cfe61f2916828be78949e29a9c8cf19caa71131e797d9fc8e19ca29b26cacc994e97f19ca2ed9a44224b2564f86f2d54cfe719c28fac3c750fc1f4ca8a8fb10f37031943bdc99ace686d0993014a53e84f3b8d18f193094d3dc86cebcedeac37ca128fbd5636dc9f6e3bd501e5fd3b0217da83977a1143ffa0e1f6b7eab990b853ca21344ce363fde4231e3537afeb02a666aa19c37441e544489bdb92c14359a54ed7875740f0b45f79832c654127ddc5da19831fd200f2ddb762c2b14663e2653b6457208ab50da1e490ce5962e1a21150a9bbb1e4386d0a107e1148aba9f938764068d8f140a3d1e7ed4096293c28f42a12f42cc223d51b743a11441b5f4230f4b33fd84d2f9c86634626e76d409851813c347397aee6913ca2f9bf4fb249d948409e5d716493e48de128a3df253cf24b3d3234f09c54fcd18e46b7ce0032f090fa66bde3d8e8472cafc48b27aa859d111ca5b91f9ab563a7d8f3342d146937692b8efbd0885e83f9a89ceb12c9d0825cb90b7f93a96e48750c8fa1fe698a7873d580805cfc3de3bb33c1f198462f4f168d3fae8e3a60642e13c22965eb4649d7f50f4c92e611e1f94bd2bb3641edb83424a4f124c273c2866db91debdf0df7107e571f8d1073b0de3313a28cb4e6967440d397350dc9b1834f4b8cfc44161d22c23aabb41318f3f3ac4b402d8a0381973fe61fcd89965b52824b54c192bfddc7368511e79449bfcdb03d76751d4dcf9a57b55e49645f95742e87c493efa3e16e5f1bb0f3c651c16659b4c2bcff92bcad243fdf177f94035774531e6a1d68ffc67836c5a51a8db489aceb4f3675851cc329156d5b3661fbd8a6294e073f6c9ff7cb02a8a19367572de5494f3cf8584cbcd671715e5b01719e2a12ac73d45d97369e7ce3e4c51d29492e3ed8fb5d3598af25872c6cc2eeb6f27294a1bc2dc7e1c5515c15114fda53c85e6d1d45014057bf95164889947c35094352e3d751e8fa34721280aee3d886899ab4f94b7df47e1a1c7fcb5f24451a34edf69a4d9a055278a9d6a3662788fb45671a274b129a61d37fa68aa4d947e378f7d7cb30f462a4d94c4ff63df748c4c5165a21cca32a80f52c6dd1f8589c2f4b8ecc731f84dfca84b143dc7c73e360961d2a32c5150ffc8dfff5195288616f7ecae3fcc831e4589f25564291ff650da9d4459358fc2b3a74e584712059ba0ad515e73552712c560f7e2652a5d9e814461574af3d877f03cfa11e55174aece1c4b33c98e28bee7983cc5664d701b514e3bd269d1038f398c28a6d6af58e99f482ea2fc929f71e5d6faa9228a15523e281fa6c69026a27093197a9c7c7a241144943383c8c7881ec43d0f518cd6e3c14bcfafec8628c6e46793871e2a44f92675e661ceceec81448863d60f1dfc3e1a44715ba27be48f47c84810a5caac13f343f6b41205a2182954526c86b1f5418028b666fbd19948e6f6a03f14d3788c92f4b4d13f7e280f6c7c94216435eed387e29c47c9f1da3cea9d0f05f7f4933fc83d9eddf75054bbab92cb3cad193d1463c5da479387fda33b0f65f7cb7c19351e4a21e32194f548abe63b947b907ce44143c5cb6b87e2869a1ce74742bc5b87928e8f7ab3a22373940ee57c27d952eb1c0aa72b1d1e7b905e65a32717397b1ccae3cafce3f10e8742d674d3321f7de8f00d458d6173e503dd500c7e99329dc6b7bc361465d2375b3e3614e434a60977efc3ead6504c759ded9eaf6a971aca9fce36cbf750bcad34145b3247c95568288449c5a9eb6ecacf50ccf86afb7972deb4190abfddc310a3871f5b7a10a00c45f993eedabfc950968fea32f93ef34a328672b41fa7f558e7441f2986b27b987867911ba759120b8480c61804084379737691e43d90945d81a1b83f6efdfa3c26a63e340404f842d935cc58744e3693e14b2f14c34fce9f771d31485bc6021010a00b85e89a24ff745d75ca82440b8480c60708c085b2c6e7985e8f8749fdfa0012600be5d3ec12d9b424856eb450086eb2d283ecc3ecec230104c842397ae0e907397936d4582866f527bb8faf3f940801ae508e216719b9b9dbe3ebfc632c2a80005628c79452d533a907fdf92a1462f638c9bb641e6fcf54308ffdc8c946760ae591fde4e49174b408a3148a3d29347f63224014ca63cb9bb8d15b67bf07148a9f3113fe9f27943a323dee75484afc38a1b4f9b2877a65e297394d28df7c1efef03eca84f06142e137e4e7a66a8f1c3c4b280f3e78f0a9b08e6a1d2594adfcd647fb838d61fb2494d3bc23471ec48fab3d128a66652a3f0cf154da1fa1d49af2497437423904f558a61a992b2942a12aeb6398d6ce3012a11c33b66fde4e2bdd0da1e45e1321d2da83cc84508eeeff21214e9a863c08e5c921dfd6762ad51f08858f69b2f7487288f207e56effbcbfe6a3d7f9a07425d29b791c82ddd6839244bbcc1dfeb5c7f2a0f0a93566f2fc7e543b2865ec089e75a722fb303a28c6da8f23f2759cf373508ee1aa263f8f3b983828548a7ef4d49618bb4129e4af3fdad30f2326800d8ad63e8aff51e797a4d6a23c52ef1cb5fbf171d4b4286a74f8745667f1b4bfe7a1e82e8b42ccf193ff682c8abfe93ddba3ca65098b62924beb0eb39bccbda23cb0adcc3c76bfe95c511e06f3524f113d97b5a278777fa7373b31664579fcb96f7d3c50d760ade2b689121161625514a5afcaed075f2a8aa37311266497a80f2a4a9be1ea3e5667facd29ca3ef0bc8c12244a32a62857aaf7680c1b5cb45294e4b724e4fa5863b89614c53c88fe9baf07f9ccc78ea2281e4e42f3bc86fe88a290ca53be7b5c19fc0f45397866ea11346430030de51fe61ed8f720e75f7331f80b5234b033ce503899bf1eeb666dd9c68311068d075de086170ba07ae3850a6ca019ca63af79f41d6e4a358a022e4379d879acf163dcaa1f1f350891a190671bed72bf3e48f38d31944a55d5c7e39cdbfc688d220acc104341253356b55baccd5683108b61431f30230c85d1341fafc76393af6e88f1c5e30518d04505bae00005ba688015185ef0176178a6054240a30133c050ec089d55d73bdddab1be5054ebdcce5a3e08c95d0d426498e185f2dfff6838b9f2b30b0e3c80010f9bd1855268446a0ff924ffb93f8677747474d81883460c6cd8282ccce042b96a456be2a742c4dd42d1e3c3f3fcc33eceac8562cae90d1739646e6b5928d5c428f1727d60a1105e27e5665b7b0e992b946a7fe4f923c9e5e9b742d922f80ffb270fd727a60a85dcc3301d9da7eb45a642c13594c6c56f8b993a85c2dc75361ddbfe614e8630430ae589ece39cc925f59f6c841951286698483a371efb39060ae51c3d14bd493d3f9cd47c30e30965e9ff1e7ae9c70d1b77426932fb5f7f903ca93b36a30988f48f7f1cd2a5c20c26143a547d795ee42d4f2fa1a49229e335c3daa35242c1a26bc2b46a57c99f84f278f2b8c3da65f650d241988184e2ce8abc8692dfd41fa1e0c92cbb278e4628c660ff6535d525b12b42a1463fe4a1558660dad620148519442844c6d21ce1e30e7f770825d549e1e2e3d1422849a9678f1e178472b847af8fe741a475805094ea337519b7d19b7f50f2d1dce95db2c7c3d4c307a5f5e4972106f741a8b107a5c9f659a6623f9a341e14354f6ceb49cd1166eca03c7659b379f01de3351d14e6c35ada0ff7473e3007e5b4f107a1d29b193828abe76176fcbf8d8b74c60dcadf83cd6ed5fdf1c8e2193628c8f8f0767d7cd42d6b2dcad1e543fc758f4cf7b4285b79d8faf997e68ecda294b536fd393dfad8a36451aaee649fd52344c9b158143f3c44899cf89239b0287c841ceb98898cd12b8a3d08f6f6a3f95d519adc7bfe12f219f2d856143c871f576d4484f89215c5a0da293754723c9daca2983c443a4c8eaf375b15e5fdfb1ce556634e114f45a9f763ea60aa414571d54ec63772dd5a7b8a420ea127bd7b4398a83145d12367861049dbf2bd5294657dfc23eb8c61f3c748519ee0711bbed15194bb7f4332a75614258f8b975c9e0c45e1f7e6871f26f9f7e780a2543dd81909a173b4f91305ed5011b1c66393ab9e284deeae1e7624ed0859270a33fac3ef281d27ca43cd19f92664897fd526caf35ed61e27dec7f369a21879b09b07d9b383cf9c89720fe2f9c0f67a3cb4d33051ce683d3d0ed7b512a64b943e44ffe037730e659e258a5a3d34b31f7e9cf8b412e5cc310fca37f777b28c12e5cdb192ccb7fa56ce499427246284b3ead1652451d88bd03dbbb5a7c98b44e9eac77df9a3cc9f62834479987b9847c27d1e74c48f28fda84799dbe397485e39a2e439e40fdbb9a38f3fd488e2e5c63c4c23a93149624421fe20788a9be022caae229ae3331edcd38a28df8abd484bf04f1226a2acf931317b76328f7e20a2a09b3b896d24bdd3f51085cfe3718bf5fdcbff61887227530dbf415ea3c414a29c69ccc3dd3fdf638c10e51cae44fdcf73a36f83285ac844f114e5db251144e1879fe30691eb51871f8128e6f1d0a5e6e3c4ecfe0188d27d8c1144b5d2fd7bfca13879de23f74c7e2864895bea39bcdfdba60fe5fac80bc9fedb1e6a7c28bc7f6fee41bf7b28e749f38124e9f55088ffd3d23efeedd7330f850acdc91f52925f9678286f567eba9cbc23abdda190323d49d090639097d8a15857f72176b37528a4ac7bcff6179d1f3a1447eb23897ff470a37328eb5b744ada8f2793e4501ead58aac9ae6c2a390e0569d5f793178bf0e150be0ed3fc531b52481e6f286687aad871d30de50e123eebfbf822cd6f43c9adaf5ee6f30f266c6c28687811778ff21aca614da2bf58deb44cd4501ecfa4d44e8ec1538c6928dc4a780ef71f2955d1501ee9e449fef064c67a9ca11c6b268d0f524766c7cd50d49ccadf26866528cdbf44c8c8e5e7b3c9502e8fb4215debf9c8a36328968418636cca0c31be6228e71c5b227208b1eb84a1a8bbab7162d6a7ba05865267feba8df30be5fb618ed9b3f968eb7e78a174671e3cb57a8af074170a3faa8cd9f63f8e60002e94cd83ef8be5e6718d6ea13c90f9dc90fe499b520b45ed9c63a72482740e66a118b3ff403fbd040bc59a8cd97d3875bb1aba423153fd20f484ec43fbda0ae590c7eac1ad737c94a90ac5facc3f8ea823150a39496adfb839589d53286d78cf34aad12e3d520ae57144dc843ad10051288d26ebcfc37f69ad1e4a3000144a9ec537b4d8d6e60e3ea198112ffcdb53877b89138a4962fcf1f6f0ef3ee54d2884f69c7d70d93aa13c2694079f2122d28fc712caba3fce1e19f4d363fa0d065042319abff4e6d8eb791c330324a1609e7f62164db111b528180009e5cf9a62963e9cb21f798442fe98e6eec3c47ef518a1983f1ee9e890a36d568b50fa0f7f9ebb47293613221437f665c4a9cc6c08c5a041338be58f07fdd3170c2084621e69bda7cc489aa70f42f13b0f7672fcd832b60e84d264f7b1a70d2512f4fb41793fbc7667bc76969819c007c5ee90e2f187f5801ef7208f3d3c53dd3362b965a8b60e1c0cc083a2edaf6c781ed8f45a3b28fdf9b07a72795ffb3a28588f33e879c8b6976e801c94327e1c2fc3bdcffe602a180007a58cbadf9bc8c8c34e95c10037288f2a7a309e394ad37b03d8a0f4e31866be65e366f25a94f3588fa7b1eac1865afb10c316b42884a7daa4c89039a408c9b0c52c8aa193cdc39de69529bfb0852c0a3e31074f1bc36f5e148b428a3597f55c5629c3a230fb9335791e49fc8cbca298357a3893afe947a6baa2f0d29a72ddda3ab5df326cd18a82dbf428b7268a8f7b1c2bca55d2976eea432f6f6b104adf6215258f508dff8c513afbd8421565ffaf9588f393335ec6852d52517e0b0f1b42b6dc1389063a3a9606d116a8285efdcc6f7d66b70ee905b63845217a64ccf1c7e3d1456a6a10c5c216a628fe8f4f537d54932664230b6c518af2ddbf78e7077ff7604707ee16a428e9873cc8ce7f41aeb0c5284a95e699b39f8f6386c1a7a0a3a3a3438c2f6c78f1450b4a4707186118feeee8a02d445194fca41121c485c4842d4251f4790d31a786241f331fb60045d9354e7b1439794ef17ca2d8de1b240fde247c329e28e50f42589679f6f7fb2c0f5b74a23cb8cf93b890e8cd312f780783015d78171ca04017456fd88213e591845efeb8e787952d03ba6080c2608b4d143d6ea3b453e64188f2169a2889cae8cbe4aff41c0bb6c844314dbf6ff3e8337c1c4c14b2ea7c426c8c3bff12e5082144ff71fc791f6e8992a6ac8f276e4e254a19a76a938fbece348712e5e9e08356cfec98f29944b1226726ebbc70718f240aed71bc7de264aa7a2251fe712c2151d690c849d9d831f311854f312a5164c2b6744479230fb273fb43b2d888d28fff407cac991321238af6fa797456f2c9c72da2645d9dff36e3648f29a2bc31840c416fb3feb09388528704ff0adbf0e3eb20a29043de1ed97c6cd5750e51ba2853df609396d23144e95b45368774b9139d4294b3659814331d62a24388624ee7314a89e79f1e6710a5ba8c1337fddd7a2388f250a3d3745af5ad4d208a16c9871fc6c45c348028bb4779aa99b0f9c3fca1a0d5dfc37c23af7ffba13411914962f43469f7a190df87215db74a58cc87e2574bb6eceff14fbb8762f5fa6bf4bff450f4189dc739ec777ff4f350cee975a5cedbd5a38f8752786e965b1f4efc41fe0e0515d90ff9df3d76eded508ebfa9351f0d89d9d7a13c596ca377f050573d1dca39fdc0a5d38f9f43212be26325d70fd79743e90721a63f9f3c8e1d8f4321326b7ab4ba76b181436963f52825c4a989fa0de508971fd38cc7beeb86926cf760fd87399e47db50f43c1df483876757d950ccfdf5d962d4c763c91a4a994b7fe37a8eb1500de5611e47f7f6614df9c034143a7c5de6415949798e86b26e6ad093f1d4bcf9194a1bfd27871acff3949ba1e43631314c8fd95f5e86f2b8c34406a91ed6fa703294d4839f5b748a2d1f3e86924dcc68c8695347470c050f7d3d1e9584a1b0a71e7fee5e24cb6028d74c8f7f50929254fe42799cd17162ea1ff4be5e28868fefa1c7e89b7bbb508ca621c6b4f3b872b9504e3b31475bcd164adf83a09231e2c7e3418c16caaa5b31b935e61e99260be571a648d91bb1500ed6b312fe3d366e57286dba8851d5eb83b859a1d0e231d687cd605b55a1189ff43cd3eb4e0851a13c8e517be345f224c94ca19c2145aeb77fac39325228fa86d79c8fc7dde9878942d95a4232c3bbe5e7a1500e499d07393924f1fc138a3f1e145c8ca19cc725e547fb9db9b40745800b319467be62826d56740fe0220c85992adf541b9b7f18d422700186623e933389e2b649240f0fc3020f1ae3861844e0e20ba5d9289bc792c307e0c20b259754f941424479abba507a9be8a0b6dab9fb73a1d8c318fdbf61b385a2ece7f5e8c3899124d6423922e6ec29559d119f8b2c946b7e9077e6445dbfc5422956d298ba5ae9bc5728a40f7f985c4288154af1362dd945f73f795c54810f1dd3e527b9a911a950ecb008b5f8f1a0f37007238cbd4010b8984215712fd454d3c926a550a4f131bf4f3f374f1117512882798ed109d223a5d2ca800b2894f39b0f75ec7ab09dec2794224bf646bc0fc7bae3c209a51ec784cc75f478d64d286adae5a866c837d311174c4063389316fbc1f81b60f00990035c2ca1f869af5f62855aa8f9635465800b2514f23bc60da2a3933faa06a14c4251d3fc7e903c9660edd720f420420a1748284d92ec63b7fd9dc3cb09707184f2405275f6204d73864f4628959d7cba7dac08e5aa5b69fb198db636110aef39dd26b6e4f9b21e4449e06208051f0fd634756c358f224228acca86bad9930277838b2094e38dee4c4ee4bc68b80042793056d2e31fcdcfc8b8f841e17a7cdca72df2fa838c0b1f1464d235b6673c7f866b101a5cf4a098c42a82f76bccbb310bbea0f12c5001b7e056c0050fc8dab953e4e0e3b4de71b183c207d11f4d5b874e526b101ac3a9b8d04121db57ff785302c30bae61de460e0a1ddfc75dd693de6d538390abc08b1a0c60401718a040178f1a0517382868128d48d1ecfea97cd4175cdc00ef08f932764eab022e6c700f7be4833c36e961b64e2d8821b2270fac4a26da1a8468105a142d57aba2aa7592cbb328e6aafa1b1fc4abc4b42c8aa1bef34f383716a5edc1b69d6c8fc293020e58947d603d96d4dfbfa2182e77c6cf6deba27745614f32245bded2246e4529d3555e8b86a81f11b2a21c3cc87faa9cb94e0d4101c72a4a21e3e3e82b8d31fe8617a98aa2c94a9aa6dd6b101ae36f80f1a928fc307f20f392f1f17fa0a29cc7b132926c9618ebc7298a55695f67ff8661038c300c51d69aa218432523d624224e7d238c30c62845a147cbc7afe7b1f3490a3ffe4dc8c31eaebd7abae00005bab019708ca2d45982640f3cea4fce7a0e5174a1bd3e489123873c6c43514cfa837cd5413655f61a84886c6011720e50d81e7f701a727d77b806a18c04c727be0895ed6349194e7452375870818e0e08509e82c313c6d78931d67ae813378de0e844997f9c9e538a080e4e9444f3a8a57a1863677436706ca218f1193944f9309d47b6814313050fadebe98cbe1d6fb6822313c53c90889fdce6dfc3dca5810313a5fdd23c1e65f2cdd1ba06a1761a36f841361450068e4b14c324f1c1bd0f2e3c8f03060e4b9447a651f2c736d3e1aa4461ef3f3c527bd4204489f2a0ff66a3dde6c4edb00ac4f8e2890326901c9328df8438a5e9ef2e2eac412825514e0959e5d3447b8f5515f018ffc5d710a31847248a597772ee7fc98311060d2a097040a2dcd94f4abe2b7eb42221b54008682080e311e5ac3d1e47ccf277f57df13722e0000d74a1808e0e2c703882f78df6e9da323f5b83d0184fa3c60d2f5c6005058e463cf4611e878f176370e088101c8c287c974475934d2fad56806311677fc55cad07ed4e0d4229f8b7718a20bf0fafcf7c6ae6e30534e0bd18830359ca1c89289ed45b85653eafaeaa0a0d1c8828e4b0f7da55f5129b869281e310c7b2fee1c63ce1c3053c861aa2f479a3879107f7d937df78c1839162e02844a13b429ae786f30f918310e5e14ec63c48997772c207ad0da2b4d1872d1b6378c4aa6b1032fa0287208a2821dd64ac2d89101c700422f9fd719a649bec86071c8028786e8d318e8ea4cc5f911738fe50cecd9abcf96363364b03ae022f58f005871f8a3a3d9ec8d016253369c1bf03b4fac06ce467da889a1317b006b41e95c4877b10374fd67d0a1c7bd8222255b7e4419bfe503f22578659b3a3a383f4506c9998f907b95102471e8a91df939fa1c343793fcfc7923841739e601338ee505893b8ed21551370d8a1eca97a50167692d4a21b5ed8f0a205db05071e70c30b1b5e7880068d8e8e8e0e1afa088e3a94475d293fce72e39f07213a944725af9fe963f3ff861481630e8534490f6192546e0fac4188aa8c131c72286ed4e8d723b7fca06f0d42481d6fde8011061830b8e145c70b3870a3a3a3a3c30603ba60000c4e043a3a3ad0d131818e8e14988e8e13a4075460de3b3ac6781a62940122c1118762eaaf8c9f950c6d3e6a10a2f170287918f75ef58939942aa0619502f3354cbea07474bca1bceee3fafad09c246abae0c0033a3a6ca4208c306ab8a12cdf19751fef3d7eb4a1d8e9b915d1690e3614930f3cdd4bea51778f64071c6b28a46f51eb9bfbfe185283fb8309e521076f8fd5203486173488481a4a1f3b22f5402ea3ec523494ee73d4c9aaee645469dcf81310ea01c7190ab9bd47d637ec8c45ee081c6628de87d75c223f8ed590a30c251f5fc78f849c2538c87048c498cfe33e1f66f9c03186420cd5e622a9f157b52e38f00017b0063a3a1ec5218672d6893037799876e506e3045ed8c81b7084a1984316953c36fdfa61ce113014721ec8f5d8bdc7f72147052a80c11837d00b1e830324081c5f28496d8cc1cbb3c73dfa78a11021fe682c33a74f37db85f2ff67456a7b2240e31f10030e2e94aa07a67998fa225eeb16ca297298e851be7b5b52207068a19c3a36f6c499a6f6a6062118348d2a153483d101297064a17453f137e3790dd241c30221a051030e2c9c3e638c19396cd29c1a843a3a3a3a1e2a048e2b14bf47e16116afbe1ee1b0027554810a4b0ecf90ad353157810a98014963dc1023131c53307d541f6e8c887d6f7048c17c553d085789e8a338a2500e3f9d87eac388033a3a3a3a6cec0f38a060d41a8dc8d7207483055fe80d1654000c07a006389e5058fd71ed0fe7e7c65b27945636863df57f4dfa83a3095b7a889597f5b887113da3e63a73c23c970f6742d13b3dd4acaef98f374b288a484c23e7ea31464ce05042b9e5fcc7a5d783230905c9395dc25c4642c93d4adf4692e9c1e8472878b75bfcfcdff9705d1a4492c06184d25f7d4cefe3914984bc08c5dbb4b219a7255a6a885096d43f1e67ee551c4328f99da4a3a3a3c3061c4228659e3c8c1117d5eac9388240f2d15feffcf807291074f9083eecf1ae68c3c691790f83018a3636b020e0f841613c790acd8f21553c4be0f041214a8e8c99ba6712c4fc31c23043e0e84121b5665cc993c7e3e19e3508181c3c2897c89f88ed4ec303df826501c70eca1236c6b8917153a19a0ecab27ede2ae1472d1dc29183b2988fe7e6d652e24935085147c7fb171c3828071f66ef9bd109d7868d8e8ef731de86171c3728877baefe4ee6d9321c36287bf4758c659f3d083e8d19b530720f2483464e0e9a8e8e8e0e17cca0453166d4a45acf67cca21c57b2320f4b334316c5906133e7b1dcfb96e78b31c23863bc188fea82030f38fc14409b118b524af078c9524955fb0d167cd1850334d085054240e302336051c8f796a145a3e771685fb1e65ce11db51e33f4335c51bece9474b63976f9c919ad28e6982c53a68f7ed083b906a1cbc00c5694f32c6fc3679ff9b8b3c08c55146cef77e646d64da419aa286eda980f4e3f35c60d3176462a8a1edb6512b34ee47474580b18d085b260062a4a912d3464f1ce93ba75743c4808334e411d8f19a618c18c52947c90e37ac2e6fcb5f34430831485b2d38e28773f713fa32875e6e89b2bd16df2a2287bc6dfac316a08497f280aeef5572739e63e8c83a2dc69248f7dd4318e7a3e519c1c7ad7e2534f14cc24cb94c937a31325eff8a3483f6c57f50c274a91b3671eeebf8a9dbd89a2ffd82427f838594bac8982d9e4d09143f628f5cd44b93d5fd3f7fb47cc8b89424c4e541ff8684f3b7a89d2e9ab9948ae8d1b494b146e3d4ee66cdb18425989a2bcaea7cd79cedaa144717f57fa2526a5fe93284cc89ee5cd64a4322889d2978faacc4c8c444192d4f5e730ae1e874449a36df2ec9d218f2f9df1887277de7dd50dd3d49d23ca6de1a166e6b237758d403a33b7a632c688724d653c9bf803f9b42de2521fd967d68c228add3e683ff791c42056228ac932c44f2d36922f22cab29a6772a8a875778882f9b7a96dfec14dca106ae808d18c4294ce87aabf277de5fa630621ca6389f71dd983832875fc40a356d782286c44eee8dc21bd7dd4b3e059b0021a62a06146204a9fae22693ec7387f01518a1fd9e887669970ffa19c3759fafec845f6a17e28c987f4aadb8bc64f1f0aadab937ef4d50c3e94c5757c3c0c79ac194235630f85107f901ad2d61143a587721eaffcb0442767eb090356989187b2fa97aad7fbbfe4ea056f818e8ea5018026ccc00375e48c3b14dd430a491eefeab5af41688cb7d108986187f24067a234fe73f6a8aa4188860d2f3a3ab8a3436928dab041831975286da71f87fd38d3ffe950708f71f2b6dc8338630ea54e92473686b00333e4501e64de45f67814fee67261461c8aa12d73eeb71f6698018752ebc56bf22c5f9bfc31de8b196f288ff3a56575e4f817690d4263bc1bcafd831e55dbe6fcbbe51837c498d186621e47fe1eb9fea7f8d00c3694244949e8be96edfd74c61a8a12b395cbe469a4698b706f30430da597d2ed881033230de528f19af37467ddfc5183582004018b73a8446d65e3a1601c0c8682a150100c08af70e602c314080018301c0dc6a2e1304da4ed03140003423c28402a20201e1e1412101810180a86038150301806838140502014080482c1a03d98a374079063f883088be56ea64d195ee75a23e109abd40730183634d7affbfae06fd0d738e48ddd0762288ca64f354600a79947a50ff02d82d6313bf629edc0e9723f8c0173c23d9f394be835c45d656f22930d69610f3b993f414336026d2e7dccf18163b4cf9be087995322380866cbe8e31007d41e5833a110676809a0454067a83c3ea7980cc9cd23f7c4f1e1c988c00adfae76c91ff3446028bb70500b9b2d417c012efc001c1718f041fe2094c614830dbdf61b5483c20117e2cc989088bba0f8c660c8e07be5199fe32e37ea3b984d646e76ad7da92e51ea9ffed6e266b0a0eadcfaeda552ddab949eed8ae03abca4b4dfd2b58b45fd65eaa6d35933af57c036653e50ce264d448302a07e30f5e811005f1b7f02f115346f0988b211e50e32e2ed96177064609389416439a470b6762248527658b75f986a4654489c1d278143a9030f8ebbc9aaa00641719d8f84b570a40f3be23b121fe96965464e46196d4fbfffef599b930a32cf1e57adf65f9967ebcd9a51123942115cc77eb76b25687672a414bcdbd536b8cea800de20094f75af7823c527afb50a2efdf38d37cf5c1cc11b14d836de678902973d2938cc3543b1145377434d333c502edd676a25b2b325b427bf70279b6ab7e42357c098c9bfc1d9ae769dcc149d0dcf6425596115c64be78727275a7f99002c9b65786433cc5df2dc08668c523e0439f5c2bdd7b3fec82c1c604917930c8e5a0c8affd8cb540406ae9cc8c1d11b483647b60aa31f9ef47515d7989a847745ec4f34b1c97a90115ee7045ae2229ac59902ba847f7328c0761d0a37400d142087a8c3261d8e0a8373d892584daf85c4dbf8808afb5e0cbc6f36e8c24845c4cf920b7a5ff15e776cfb080abdf6f7e64ee93a773543522436bec2c056019a5a14b1a21eb502b09abb5b4d818ee553bf01d46867a2356c2f90fbd7b484acb6dfaef2436ac7d6449655d2b234ed62881960c21f493fc70644d7cc7e6f3a04c8539b9f051c50e5dbb85363e720b8d2d611225059e7a3f3a09e30ec5ff947cfa7819e1631b9ea955dd3f0267f8c578510cdb5e2f7e11591005716a5bf1fb471be8e6e398cb703031474c1ecd4961de383f0eeb98ef9b496f84fc652f0d1382d9bd91a3aec1e5fc0751c9669ea9d8a22f7c09b1a7a2edc842d30dc64d2ce7f267393e15beaa54a935a4939317f6f0a2ad6f439ba28e64cde9e282708d88b6ac8c9466a5a9894fc1fd86808c7ac4123f33b32d4e268ad7e91be0c143b5578d0237f485748a1765c16dcea79c44b53b29a846ce220134ef1813a6ced5e1f8510224b4683ec4c8f59d21c951000f97a6e0e1cc9d045395cf019aa4919cf69fcc1b6a486c81c2547ca3b6ed481dfad7352edb9666c161e7586684145b872112f906425034b9bbab43a2a1d51ba58ca478b19b5fc5023c3627f3ecfa5936b9008ac84541ffab3b0845bd3736c6739020f6592267c230537d5357176630c2429d2dc6d968d6d3a94ad029dcde6ff151b21e2b4173736f9be5e293810e3bdb71d1f1fcb70b7d00a3ebacdd9615967278809f96d3565394fca6d7af29cb7b699da4a4ad440fdbee34755c189a3e54587ba5a3990382db442acdbd6f49bf08c5cb300a0315f87179a11be3a55584ee8cb54861530c0fbfc4d60be6a16aceae355eca6f8899510f5b14002ab253916ebca2724e3c0cfd35f3f5d505d5dc8c4878be47d07c754474d658182d58a3e9aba658ee4e28fa7e978da3c82b53576ce4f7afbd4ebaf9233093095182c54ef4f2411e1b6a1ef520c40904af20aeb5fddc6f72b563da19c04b0b162f45ee6c4601ddd68cd4d22d856909c17a987144324a71572bd467f7fe2123cbab2faa438c4f942d6ff2bc56ea43d4205bca2583e1311e7484d594da3fb00d7935cf6cf29f700741495d1205e8db8513d12aa39862052e2ab8bd84d2e7033ef3219794cc424795bf53896c73a0851b4cf7dea86db0c7124327ef0c263e2f5416fadc3c3a2749d0851c74034e83f482fa3b2128791869d4824c0235f28321b652479c9e88924a7b9b938d908165b1e263f1797f2f2892e8db8413793919026d34cf85482e672c1de43eeb54a2ab1995506c9c3a329e853da830c880cedd16285289e0244911944eafae1649037a2a0888cf6a5da20cfc492d35419dfe38283b21d37c5285033c4ada6717d81c0fa6364db087e4ca5c771232b9316724225529b7bc9ce5caf7e3e9b0cb46782253aea438a31618da3e870aec027b521dd9878a7600955de5845bfa09db7f3d3e1bcd542a89c657ef160771dc4f498784447690b8eed16ef92168304079f91c6c415c5a7c565d8e685627d44c0cc0b34ab04221a991667d5595e8895a9b8cbf3c4d3c276a6f4bba0eb5a7b4b8564b3966d45256490d83eece52bef690a46e9ecb3949044b1a7186a17f102d908492450b84a9bb498d936d40235a1872bdf409fba3aafa348e4d3238c1c66210a1e45a0c95e6de4740a63eb88c71150ab81545146b5d497d6a0289c2b26544ae51c4454ea84822c7682ee432a936ba2229d9cd2cae62d15a8c7f01076557d8cd2b4de7ad2f374deb56100a778a9920795831e5c7e5879a78eb9ad7b18985e40a2539aaf2129f6a8de20993d4dd44ca61bac47b102aaaa47a665d70444f40d85752e28d2a98fa00165463e2a9fedfcf0d25ce57cbea65c1b8611080c34bbb4dd3e500507f5380209e44bf3345b8cd96f2ed058c7e39381f98619886843e8bb4274485cfbf9a30f850d80be71e1ce1612e4888c6333bce39099d51d71aacc03a38468d3ca3dc9138e7f9ec5c8ebaff83ffd22d5f13dd0503a3c4f04a53aff68937731cad65424a2074ac06835193045d043184339e3ffe697ec9d7d949ad78ea5345473f44a84e1a8e255406cb828436d2fb7624ebb745c05d79efaef8c96bdce0b0aa11edd7bfbcb60dd7162667614dc837683ba1d4912619e1a180c0364e7c0d3700e64d7028db77a2133326b129293002a1d02624e32578882545eea5217f39136cdd54edd0445e16cd6f7fe1a112c10fd65ac071999d91e1cd8ed416d4bd30208f4a5da4d4075c642d00476ac07c5263a435606b455879dfc8db691e7c2fa3bf879eb78fa1577d36f159325c3f46d19103b8d21783b372157b09e5bcaa062bd55dccfae4f18efef80c1d79b47c0f04f1176c93a938c0877753568d93e25096e32f8ed6ef7c549a992ffb9f40a9d7319731dfdee1e081467389eb149780f317257e5edf223811b3a7fc03ef552af8a8160a283fc8185a6b9819f699b3ee47caf24623300dacacafb7828f30692d326ce222088757058a37045234d526d3c3e130435fcb1e75eb1dbb25043d970e5f3990c7a50e6d16cbcbb3f8ab34c41d50a3a3b9f6202f577f6b4b788f29efb2d143b780899b89908099e8e85e8fb17d29bb4e674dba7a05c0c9e867b59e2ae4f4368e0d11c21a9f1b628b4bb940435df6852d619aeac93e595259e2c81f007afb2121d224a5ed1ff26e06e46a352604cede73aa067686fe85708917c264ad0b230bc8da0bdfa44a661c608e9770e2cc2791066ee2caa58dc4d6a3730ffe4e73fec36c844a554f7d465e04daa6747633292f9c38688f24bcf0709336f505ccc2b8385405681e806ccfc6a6b69f0f1744ff6195f4232cd1e416be3f7ab8a9aadceb44f0df45d927202290f86fd73c036e18bd4c8a3db003f874848f65dde8e55a85951e999538bc101a88555cc8a2bf20ca93403069129c033909a5ce654af3e24d68923ec2602fa4739973e2c945d22469f39bc3edfdc79de31907784ad8f8530f6a0d3299f1582673df8145ef9f9f4a0305c100084407359a84901b7af044ab123ec7938410e41c7d55a964b426c8bc608b688fcbea15133fa84cc5108a253c52cdf4258512eeaa93a892ecfa016674300e5009374f7c1eed485b340764fbcda1aa4dda436c24554ca3ef39b6c827be3ea96dd5358b681540d833fff9dfa8df39ca85e55292d27b861059115b52b9bf5003a90c4999cc75209c53b78a3fac96b5cb69340dd8d6a187dd5a7169e0b4a473161e145a9deabd220e65c5c7686927fc0304db850521ef76edcceba3d6b7f8e5c63b02503069a4ac0c178b1d3329226316e26e659dc4ab4be6cb54757840b9a0a1fed5db14e43783d00064704d7c0b96c7890350ee46f945abb4c67effc8fb7a0347aa2f7952dafd9a06623a2f4f781cf2427ae89d6b4be6af88c4ac6f9621e4e7d29b631ea0b1f00a7ac74e3ac207b732cf8f97acf913948b73867a964faa92e27fca31c80709e035e4f4528fc833609ce8c408c479b934f3e4190d70d56c304cc8dd4ea22dff78964e255c55c2f1d5c14225d1b770f8eb5692dad24f2ded0780ca1313716b0ae3893657c61ce29766a1241c1ffca93020f9d0f1c3ce471d44b3bd1593a123b285b3c8fecaa974f462e9f785d71816a037651f7e26d6852f227a4d2b25e8d1490b21c3f5024f94d422dfcde2388d957391b8df684ec54accbabe894f5182bd68b21ae559f1fba63ca8f7ef70a644d0143a160690507d6699dd7f258ab687e107a127931e029b54c0d718b68e0c8a333320ef09414e687e7e0ac9f065e005d10a715b269d96e0a2d3d5f9fcd3cfd2a5d16b5c0e0a24f174ed5a665c8fbf1223195e8556365d150151a5ab96d33f2f6e21e42e0ffbb33133c380005ce37c6961a4764545a2fade9cf05abb2d93a9d4f0190e262ef74bf93e4260ff5c4028872784a6e2226250ade72d4051f7806916be941c365ca73856734f2e699b1481d771614bfeea3e5376e16caf3b6698734f78a47fb4dbb8119e80c32c3c9b836ac1e273209e8a9c1491883dff91f9b396249b83b65e1f292eafa1e392a9f40e156aa92f79de4f2cb8371e3a3d5c3b736af122c0491efb0a58301d30f15b19dfdce246cbad171c4986bd4fceef02d7bf17ad91c4c408aad439d8a8cbfcb8697702bf0370b1b58c68e4ae4bc83ecea07d8e4128a25fdb3b058ab478786b99eca95b0fda763036244c08c86105e4487f287eec58ed552e8c91ed4beeb5151445219c6bba4d073bd3701e31d2eef2cd1332da6222448d84aa667097c5904ee388353a454132dc07eb94b00e5a1045a7e81c0eab68360bfe02d476102c26031213d0b5c0705223cdbbf227c27616a524caa59d7fcf3e8b152e6d6acbb3dd7671983a5ecb6128be88f39279866148ab92a1d7832c8787a8844c4a47c5cf6d3e886391e9ab0959f3fec763ed81133839723a309de5ecac3959d72e5003974f41065b28022413a26fd9d898ea1611c74e2ea9b49b72a909ef30a3c119230dc8e7f0389a8ccfd64874039d46d7f0197db01f3ca80ff3fd22884411dd62e8efcff542250a6e5f19ec36de53fd02690613472b6070f0793e380d5623be724f6f81f0f08153821a77f5b4c7e1842405938f6e44f6e43212db70033386206f35f57e82d8183c2bad7701cc240357062a8465b43be4f40a66e7f32c7c3e0b02912e28980a6ff606ea90d3fb0a19a7576f65ea1f71692a20213d518cbb2eeb7191ad49c53e84925eebff462ff1ee4cad46b516fa6e72728b7c51f8f1f4e4e9cd2bf965b96616d305de817a9edbc3fd313b72b04f596acec884f7cde2bf7811ce34bdcd091a4c4f2afd2f06ff45bb853e3e6eb6bc2397d955045ca0e21d30bb6d63c8e5f90bb014aecdd7628b7bf6a24c1b534367422a72594fb14942f08775e6e74f76eea0393c94c1d48e3e659d214306ddcb2020505f467d457a814043c0ac8f07bcd8c8650f76cf6d5291694171468a80440f5954089f828099b825d2ab6a87e4860aa8c0a0329e01d95bd25f6f43d8d7d1202350215024506555894fc540a1261e6b1b635d01c545ba80a283442f59d40a921a33a61e71cc615c6665e6d28b2cd43110214107ba2bea029b988bb9622dbea513ae6d7507dc498cc054391318ac37f2d8ae90bf5d08b8a5111a6da27811240018532075500250f65238062aa84420ef5366aadd4018a39941b40e930433d8092c3511de9b4a1579550f6064ca0e4a0a24061a12443d581aa164383a2987e410140055e503a8e7a8a9500aa1894e60805a400f741cc248ab1d584126828d10214d303a846283021541c33573bbe32cafdd443a939a8c451982f054c7250155e290a001f14fb0d8ac93612550831db55d0507aa030a07ca07a50821aac980e5360b3ee298a090994006abd2865a9d92b4a47d1416064419542dd80a867a1d4afcc3c81b7dc5d5d6c68f0fb50de1ad436947d17eade7a064a651eca1bd438540010a5e3a9a1805651a5a534360a485a5ceaec53ad0cbc355ee0b90f2eb02fa94aa856287ea8b81d0564e85f402ba080c5e99929527264c1e5296ce62a944deacfd69cf83786504b63687013900d119b54c566e6f21a0ba486d3a8f078010e27c801e83e00736ca50aaf8aa3565a42a7f6a1554797dde05f05ffd431a61e85ee031c3d0858dfbac1e475bd42e266bd51ba2e8740d55e2f871e599888b22c8dd7a6468cedf6e5845530bbac49afcd0cd1c43c8c5c1225077f1c9e4f38ae08006a3c5a59a89fa8668baf052f2fc8ac5fe80dc3e7b248f83118b458b035a964e13a321a90bbaa80810e9ec395c5b0ace6a4b495e1805f24a2049ac021a946eacce044854214cb20d7209062fc4632704383e05a7c57bc657da7d7ab8851a672f2b9dacbca759c66aeb1d397742591c099a86723ad3699134344c5497a841ad00154c9ef5ad4b84e24394002675dea280608a7676827da4e105022fb4688ac0d5c2205f4cc34ca787a69f5cbe7415527d5feef71964beaac1fbd11545dfe9cb693835c4aeed9227c0d6b7bd3c466534707136b5bda896c8d63f56c7297edd37cd2fd2c5be8a0bccf72d052ec549cf2bb41658d8749ea17628301c6331ecc9a0c8f31da91859c1bc49f0b5c5292e94ba62414418240b7e971469b4e570adaa3c5522c3664202e87ed8d38e1bf4eeb8d25ec8d669730f8ed699059d670a365fcfc33a80cc56b04b9b06c09ec029c014d3668d386711b36da6541c8299a4acc0a389273be33935273b3598209443e4a75ea90cf427b7439c2e897b9f5e35cfd41aedd44b22140f254a038114ae63a5fe5a04f73c1af738867a33f84cd308912815cca5087fc530199718c6f7cd577f3fa17e7fc7374f14b7b80335a889204278fc22954f8d55a9f7ce2c5777daca7bfa08b1d866578aa93731a103bd5556991079e3e4db71ce6cb8c411d792efbf99cfefaa461753b65596ed58de392a52c1ecfc524a183e064413121c8a058ca0d32fe534de0f0239afe040d18ff2955a763cef375aed530d922410c900a39532ae1a4a61655084a05122ef521d295b74d2f0531e950217c72509f04f25096fac8903b4594658b1310b379a38d9e3b677f4fb64730ac1048264ed0f90ff604d7f90a732cbd75ce8659a320ab5fe8d0ce62d1319378f382ad9bca116f61a31c791e834c68f10dbd6a202c6a844b1d72a842f2b91cd0820b0267e93ec2553feaac5de7a29f73ee1692e90773f60b74f9833dc7055a444eb2afaecb3bcff9afc9c50f3b1cd6b1c1408850490525e34ea249a7499904e253ae7560310252fb1af0949f28b76e5c2a77e24000e7cc4c6836ca2c2f60df28701cba55c42d62343f056666669212291a73606ecaa3533eecac0cc06b953221534eefb95727b8db17e0c39ef4c5138a431c8a3bfa7b05f4e8455cfb20aefb4997605832546d649c86f254a63ce2a4410df59246f634cd01f4e02dda2373da3cfeec5cff229d6f6e3190890f70d61760a98711420153aae499208e03a4525e4ae9822c1a57c371bec4795fe3e43c33132a97aae0d91ee1145f0a17a11dddfb7c6797d6a1d13f63e456fc882791fa2254bb69e73c5fb20f82dfe2fa616ed7fdd061d72f19aa9b83fb45c55204dbe57b175275809700c613c0efd396f06c5b20d4b13c08c971838267cf0b2c084a224c822a7c83ace7275a34a3483ae8480e8aaf7428407d2b595403d6e50d3295ff62703f7d5645b89d43026a27f1fc4f2af63354bccefe2ee8117023938e0c9e06c8cc3e7da3d38b88fbb282b5cad6bab87264e609e555ed26acb820520e25649d8518440c5ad1461b0cb10121b425e406704454c8eed2d29666df7a97e14aea60cb68f0f6544042ea8d2bdd8d5cedcd647a6d44879681666aeb7a5c0198a7b447662f165d55dda631ed7b99994cee42888026ad6bfcfcb4bc98adbd4ead31286b16b25a6d2858d166532800e1b89164d2425050bd413ba9375ef0c5a8ecb9be3651226d16bd325bd638d252667b6d61a1aa61b0ec2f82d48a6309b3032e3cbb59865e45815e3337eb2d520719aad63e742dad4cd35803f575c9d827cfa285e4aaac955d88a0898450f608c5d0a0c4a8d3fee91def6c2c392a0868658db89146f987ec4282b1e7cadf95c029881410939c58db3a23808722702172b389e28eca73dc3c528ebe0c09962d6dea1efa8133dcf0abed8fa1093759f20b72d649697a29d913a5e94949acfa18fd0ff0a89863eb79e85d8fbdf1640f78a8bac79d463d5de56aca13977799514de57831267f204cd956b9ed28c7b32e712e04730ee56128f7f19fcc7378b213dad96dc3b2e38f9fdc3c54d7273aeb748ff22a4c07af9e76ba9659876c06ab4b07f9c870fb02a2a2f0a2dd02b136c7d50c58519ea671e6196e14ed66e5290ea58b4743040416bced023762e89605375af0f617ba89a11b2cb8ed823762e896856eb4e0f617bc89a1dd6061c4ed0a7eb2c7b06ba26aa4acdf0bbd20cb559230b463efd3aa55a349befedf39f1b7524de12084d29723526ea83c286f5687eb040526493d07b3dc9a8fbf59dcb895e80c8d147bc70d68006d6eb13ed2359752febb18a5f2f0f434dfeb02f803ab7f868056dc81ebd09abe31454d9ed8e47cbea48c0828ec24cc3ab2f6313eb1cb7a62e74ed1148d470dd46854e631a81374ea023a483a5a64ac490557a91c4c922b0159c25f5c1a8d348109d54e95893d49a49663a27f5d397542a8d66fb65fcb04e8a14e6489a807da5b205752519a187e259450512deee7b19227bca50a073cf314dc32cf1dd9ebf716a5a34e673012414a24ecaf4bf83b31cd477ad320cb586d3ef55db9a16487c6027a40daf8fb4b4b83791a10e86e5d7a82375a3db68243cbb921d3c1321a14ab0e6512fe86c35f45fe6c90bf2ea54339470bdd9105bc30493cec5a9b36a628ee568fb4c449267cf5baddea92883c0159998d2553a399a928d41da2b10bc89922de2c500ba516d639c8f6a58533cf6e3641a2a7f50991c681481055c2cfbb3c110701bf41b98e6b69c5d04362f602a2f4f749e4baca17d61c409d0b88af50d7fcbf294d791f17047d6b107292711aa03fd859b59a80c17398b79aee84a005aa8c12e626268f5949aad7de6ec337a4159f4961e3a24bbdc135e912ec46ba9d82a767816ed411a2f2557be501615e243dd60de7d46aa74e3136c31e42f56184ebb7d5f2a122f789353c2ad3b478f8aa0afc963006547e0897a6122ab80bf7ee3d5f8921f529acb321c1b0648427285a0df86e10370cab83b1c875de92154a66b080a1f060817137ca672cda32cf54a2242b5c021344ccbff599168c6c256f33e2b15983f618de7a38d33ac7a36e64c1412d1df2465ca9d7985fc833cfcf9743d0691e66bd4e464758dc27467bb55ba6f10392664852aad59abf93c4f74391fcc927f9556490b5d0ff8fe0b3e545a787a80eddcb0bccca29d14e13419ab492845559c70e403c845dca895a9cf491f981f6aa05db181d9300d813baa999e95566b72497b7e8255f21c971a58b584f853ab4addff725d1f929e49640390a50a4c18e377a017a3a84f35990099a0670da44a2ba850783054b5057b4263c7a4abbb6409080e43f77f804bb89a4c8a64d1ad9821032c0f440060f9a5a8e3de24309c586e5ec6270a508eb5f4ededc1e079e958619c686c7d5033c0cd07c1a83b05c3340873f0db17621ad5ed1ae5eb25f0b1a014eb68f1dc7415e4b194129fec3473bccd7e40620257366543346de5a4856afcd148fdc72979d7a27b82168aa2733a80a48ca807301aec8a8cd63cd6500781c56d175ff7b40ba73e4bb290141a9a92a9e7b98143c24850ad1df5cec99a7f854473c6dd898903c575d2603c54b335607a2264f59d2a1fd9f6312576ae7094929a974955ec6a4b2d8d34021c5db0144e3b96d954eeb254d72a3f9071199649d107a7be6d0b19ac0ac49bdebcc86b85ed1125042e17eb1adc232598245d80210c62b727d30cc665751d8cb01cdf2f8ee90ddc14904a34409fd2775f61b64e71d64bd80e969bc453615975f205f18d804d0d67d1d29a0f96f9525a8fc683aa10cfaebc9903130f4d2dbeef621005779ea09640c82f223473207228e71667820d91245a492b01b758295d3a6219356e25fd44e32a4495b99893f9fe8d750872c159a5694d3234b09461b026207e3e59f68f917d09f70b2416a230b9bd9e9410ee0c93b4e53c0430ce84197c04e0e39fe98703c002ec4fb14a8f554e2af2c58cf48741c28c93da4d6c0d9e67059d00758f6a2db5dbaa8dadcd9cb2c80617a138f4d29d6972b0dea59fc14109937005036c23d1e7620a1e1c08b163a2948501d70924311f7216cef3fe55c57fa6f8fe142512d518763c470d23e8c40a33143648192f3c051d1f593b007f240b02e6ad8cac9e7ddae1a28124fb19d58e0b57733c0c83ef1e5b6c7185018867e339216bd2a507a55413a73f98b695385c5499a8ec2924980ae3982e965c00c2dc12493a2e3090b4cf1d84a784cbcda8b441246cf688cad5faf5fc83534c6b583cf6d09f6a449d2326d81ea0227461efdc2b9e4d32d25585dd013a694ed8e78fb0f6da9015a9dee8ba6b8658ffae2b9d7e072f20a4bc21def798f209ae7f8e6afdc01be06c555ed6c4b00e7e2b4cdff0d1480c9b3d2075b57a56196aa43a5690660df7f0a909e0b664eae4da25bf89101ef7e7907caa3e3402b0eb8af7bc517e06b72b36c286ec570cd51725cd99851f79fec241c7be24a6a6843298575591e002c4203905cb0517e4ea61403890a0c7e5f0922a9e66679d8a06dbc8d34c20436680be97b71aa911ce58b8c367c844f1c9abbc6e818bf595ff9d53316ae173fdee1f277b7395fd828b065863b4d30108bf3f7da328bf67042f3a692a41f8bbf5c9298af66df255096da62bf172684a27328edcdeadaf0f4aa8c9a0100992628407b2f256377d99f0d9b93ee6dd3048d16a435046cac028e8584950b3660b26639ff000000000000000000c0d85ab4cda26a6399a4cc64828012d8c3934c29c994927066e28b5fa40d7f9cdd44448037bcf20def0b4c0b750b8959ca27917cf46dc28c2598bdcd438594436d768af330430946ebbca05c727aac20b21d6624c194f629a5aedf57d369c3c30c249862b707d91651a253e508064b2ad953d2b92dd3444e0f338c6030cfb64dcb6511cca953f47447333799d46106110c2ae4b6c34b4528350dc1bc5ae2fc2dc7f64c5336cc108239f34b4f761b9146e9ac614610be169df38a9ce80c2098f3a29d1275a92766fcc020ce9268fd143b52a83731c307a6289e74d241244b2f61172e301d9898d10373d5045dcb3637bbe10c1e9852e74ff88896932cf9c75af698b103f3a4926ce24d77727850304307c69e134f6b27266ce21f3b2307a624d49792394a41181d468f1288193830c86e7d12352a54bc84470ae31d9023c7fd61c60d8ca242b8f423f145eaa9b0021fd0118044ccb081b963aba7d41a5088193530dedf8907176136a241c00b0bd061060d4c3a458be9913dffbb5a6cf10138828c59183e66ce99caa71c16fe584358c8908569633c89cfcf577162b190110be39ffba78d10ff653452070b73a717d1dffffa60dac75a17cfc5eb08e34b504021e315e634a522f45d248f1859a0c3680660800214c891e3bbf0840c5718239a8fa5bba01e614b808c569883a966ebe5b6649eb3c2987ee3c14a04792d59c62a8c9f729fb41c3a271192a50a53ad78bc8b2419a152df43035b202fb84841c84885295598d2d0f2bd1fa3c294ccc243aeeecf50fa29cc22d5f3e2ef9355b64d61c8d75164cd4ea4d273290cf6d9bd84c850134992c2646222cdb8390a93e8d2a15374ddd25a7dac11f3c2025a6ca1c5165a6ca1c5a7408628cce7b95292bb92b53cfdb13a74e4a985c182c70fc80885f9eecdf2d259e5ff1814c6ed18959d74debf532420e31366ff50f7fc33f944b8e800199e302931562746fd87747f8fdf11c60e34199d30aae86d4f2dd17262ce097324db37cb7713c6b7904d5810f229a79a30e49422e77fbd46d271264c236a2ba78778998798307f767a8f6aa18428e9250ca3f7239ad29d5b8f214186250cbf153c29f57b9baf56c29c92c6c40bf750c2d4594154a7904fc274bf766afec492309b694f9f828c77773712c6f15c22f2a8111226b167baae8299822f1e61ce9ef09f97c4e713264718dcb47905ed6ddbf137c218eedf37ef3d23cc65da29e6686711c638a17ab2a28b08aa5684215850a2534a0f761e27c298155b91d3e65bca51445891ecfd3a7a7a08f3a46cdaccf4db9c9e86307ed60ef9a4a81066493ae7b8e2d12c3e2484e9ce432ee7efe7b96e10e62047469f489d962216460abad0d10230c228434118c42fded9ab29107914bfca61820c084370ab0ef1fb5572f4ca1e20e30fe6de7e0bd67f4959c8a21c64f8c16cd52956cc947620a30f4eb624c2c8a7bfecd91364f0c1e8922df858584ed23f7703197b306596959d4e295a2ea90793ce67b85845950f557120230ff724d926d7f54fc901c6041978308659165142de83c70572e4d02fbae8b183d040c61d0caed529627f65ef7a0400549061078376e724113d9ae7b5d4e190dc73549df7a80f64d0c15471e31adacf3c853ab8e0a275389f021e0c1ee9ad0b32e66010a774e98d0dedee9c8fb507e38b33b508c89083499d4a15b1cbac903c71308ccabe2b3985c56d703078748fdc21275cb0fa0d065d5db95a399beaca6e30564ebed47bd12de7de06a396a8135f59276d24d9600e0f7f417b12212990b10673901f5dd394ca5975fa58fba2c1e0801a4caa2f2ddfe65648631accf13c9658bd982c5a2a4e908106839f4cab7d13f312649cc190f2ce4809492b9f8c98c1144bf33b7cfeb8dddf0419653087a4920aef77f1d6c26430a57e5a28bd9ccd988cc12c6ae7c4d27c259f9520430c7fac6d9764720f83417a4eb96488643a6949106480c1f89753784a390704195f30c48c7f9d53f62fae134286178c79db65997a152b74f00e32ba602a9bf5b0b93ff6f273c1243d8eebb8ae5f90b1059387601542bb8592ea71418616cc9b3529d785dcfe8ca4156464c16473228c183d13154cef22051590820c2c18ee520e41a5acf2a35a9a5240c6154cb3a54a8d5c5355e9d2e2021798801665970a19563076921a2179b85815ba8c2a18474cd89f88536a7457c10e2e6c0b2dca3c175fa4800ae63023d296bc89965d195330a5cace2f6b138c4f30902105f3d949937b2af7d7446444c154a2a25a98f2eca2bd8fb51ec80b1dc88b1d89c84006140cf26365c9bbd71584dcf005329e605a537541a91e1d5ff1632d478e1278b1438b2db408038cff38613405b4d8420b2d34308106e4c86127c309e690a85b2324fe77bc3ed67afca726183e56e715fddcfe5b5520830946db52d6b996763d6a0a4818329660fa4a5f113fe29bf6ef63cd8b3b306428c1182616da3ecb7456feb19638031949b01c28908104e3d75b7a38ef2ca7421947b01c328c60ea60fd62b661a6f24846110c9e62677d456269d91f6bc50b194430d89f1e712ae93ed64a00467f9c2c818c2118cdc3deb8a8fc520c32846052b9542d78a6b787f063ed0b1e61f42018061941302489a14505b79caf8b1dcdc5b91c39eac0200308c6cfce2f5a23e7393d2de30726c307a9f78e9e53ba926b3f64f4c094fe5c55abf7224d8803928b20830726f1e147851cc22e2f4464ec408de46995ccb2db43860e0c33ef95d45a12bb5b161939305df69847de0b0be4c8e1050f1c18c4b55ba9a949296ed6e30b1e6030208759c9b88139e5202a7b7bf0632d4bf02500a30b0ae4c821c306061d43275561e51a984284d8f539e7698ffe91e11564d0004b9dd34f94a4b5c07598d7f1458f05b0c0e4c811060b9e093166818318b2b8418c581857ee2c04a5773de57b30886960058d01bb1534181388010b53d448aa653cd8eaa862bcc2d8662f61ee72cec927bbc2fc5f6a459f12931ac468853976ac4bdc83a908b1128318ac30c56dd56e533e27a3b30af3d695795a7992dde70a62a8c21cc24610ad2696537e5261b2d371e1cacafb2a0915a6acd90d11547be3641a3885219bea6826e5ce6b844c61d295229bb0bf94c264e9c2fa449b8a1747a4306598f8182a41ef28cf165a2c8001e84f7f918116bc047ac4188541e87ce9585a252a475810431406f5699469ad314261901b9d73b4b668123d5098acbedfd5e72ba58b7eac7dc2a4a34f5ea9c9da89e1c7f084b1744d3c3d6a2e7cc64e98256efc5dbfaaedca0963680b5defe13d23c6038c307a3cdadb8461b72d72ca784e671d0b76244d186fa2a9991f1db54fcd84e1c3d54ad017c653383306264cd699b7fd25e7f3856cf1d1a31f50ee8bee02f912a6a4bd74870b414b18c5749026a404cb92c34a982ad392c872c143c7da056250c278ca4b47f95c3223a575f0248c639fe721e1532981c1238c1d1688218963799c9cfd419c104991d8452b45ec072f41c278c2be2b8549eb312b1f311e4154b3e4a972902312f917f3ec4e1fb635c2b4feead6493e8c30c951a26e2c84db0af24598e2ec2c859c1fe342ac0863e9f0b9a771524b0913610e594bd472f6787aef425fbc10d1a21fc258aa22d58688756a4e751588610893df27312975fc58cb42184f2595c9a1f55b2b258441a97a88b86aaad4c50661acd169ab5bd496cc571006abd39536c2e3bb2910e6a01ebd54f23420cc69a552ea5c1d14e30fc6fcb550e9c977ed553078e8782f7670e1c50ef280187e308eb61c395e45041524870d88d107935cd39dc773efe94f7dac75819681187c30e834cb10ea524d864707183c74aca0c148db833954897c79de5692b31ecc11e4e2647cce7ec98d910753fd79b98d9b2e25630962e0c1bc9792940a495bd029dec1b82942f74ae874a6527630a494e5f11154b0e8c6a883712ca4086ac2a7400c3a185498aafefd75119ac5988341b5fa752e8a72f7931cccf1c7fde3e2be75f97c62c4c1ec65d9a78394b4a65362c0c16029e9d98b22e6b5245b8c20c61b8c9e7eb246ca75f9b42376d70230c2f0e2f38bee023d861b0c97e9e9b72ea4b62cb5c19cb6be5955631762870da61f59ffbdc9fa2797359864e5492f5a649612a91acc5eb92aa87d3cd5d7320d46b7ef2cfda5bdc004b4f8e8d16a821868d862f5a4d27ff7a9da6289009810e30c26cbcebb9cf258555cf10b31cc808f7ec9f2b82bcacc91030e31ca60103ab446e9bc96b46ca1851617c0c0165af4f8305ab0801e3c1e902347183d787c6831bb0004cc0d000b31c8c0d9449de436c145f6b1c67686186330c9b92ccad4bec6ef2c0653a558a75de7ed47af015fcd6d8b4ed1213c553068779f91995aa254870a868b256fda428ef4f12918db7227c5daa5608c10c4e69404b594a360361d1f64f8f74972a1608ebf11a73e8bfb7dfe04834491b429fa21caed04a3ea4ed0ab702716c13c36d4688241e910e1eb663f7ab0996012692ac55cd1120c6254e5d9902bc19c44d6fccc9d09494930d8ef5ca94c1909468fe1fd61433e8231b463765e8f2042aa18c1104bf69778bd4530e89b704988a7f19228114c29ae3d5472c9f9590ec1ac62f2b6fa83a82904938491ff5e294130aa7712e303c1249f35b39e9d6e9f1ff4263f6b8a38890f8c36fac25f909812c5afd10383b453f19a23a4599007065f3f35eb3cd9d7c80e4c162e3221a8091f1fd481b14d3b56d41125efc9814996ca9fc87ab3a0c58171cdb388e54afbcb0d4c7952650b2a72e3d5d9c07caae1a5db944a515b8d1ad4a0018d599863fe8ee48f61f9e69285e18385d121e9e4294133672516e61cd12d5d271949878549c81e1db28ed6b939bdc29c278dfccf16f924c7150649f245eb6272e7bc5b61f08932613f2dac3069e7d1e7c1c55598d6ccc498954a49e599a56580862acc1223576f89c0e0a103fd8391821e5ebc9d0168a4c21c7d2ba6278b1dc583924003150659b3ee0d29eea19253f459ff5cb3e572a630283fb9a3e4b3f579ce09344a618a9f691b29b4771e91b1408314e6f46ca74e69f74e16d4061aa330c68ca709c26f55cde2912e0d344461b0b8cbdd69afad3b1a0aa38dcd285555d172ca9525d00085e172ac27653ae91306ada0fa82d021a74dd51386ffaaf5d3bc8da04b9d30be899aec1c275f7ae584e92e84947246bb5da99b305c450a59f49acad43561529b14a243a84fb564264c77ef35268cf3396bffebcffff90b041a973085ece1a2e48fcae9b4ed010d4b1892a8fd1082e978e94e258cba1f3d27cb264a982e24e9669584ca298959a0310973d2b9f8222da81022978441d8cb765071ddc3e24818f6446bc8b1142a260409b3f8a9ed52a9d644ec1e6110116c3c443c39c2f4feeaa5127296fa74238c2333e353c87ff96e668429eb7b0ab1b524cd4b8b3069b319f9174399504d11863d29b321de62fbfe89b01c883025c9671752a6f7031a8730ad6f9ea5ffdef0d33184d944bee0d59bdf414f8530855ebfb95f15155d268421eb87199de12147a88330a9553a9d94fc9e097a4118ee8278099f5ac2b72910e9d34fafb714020893faeca0923cf80793507247f5f2df926c7e30857ca91e82569e34b30f86512692b5fec40743ecca0f25d79290f7efc1f45b27b3944e59eab31ecc7db272d46b59499f940793c59f3b510bb1a55b3c98cb437e3dbf43fcc7773077290fd1936407936a09a9b37fee518fd7c198a65dbfe45be860b21139b32247e6608a207727bab6de422a07e3a607f17c66962e8d71306ca9040b614aa96c7938184cb908153d4f6f308ecfb969ff8491a37683c973878a17b27cccf8db60f2114b6ae2829ea02b369856bc4d969a2422a5670d861832aba2feadbd846a308abc206f3ccca8e6960693af47df3a9d2584d4a1c194eda27f240fcf60d2ff393e268498c1a03533173cd794cf570673901eeda49f87761193c16459528836f39126ab6330c76a113909eb49d9148379fe9375a9a00d8339cfd7c78adf81c1142957ca49e6f9059388da25a744e205539c4ead3117c35f235d3098ea671f9d90f369870ba6f4fb9c84a7b87c650b86a03a7fdeb80939aed382b97396f86e42279da165c1d42969f364e92e9d45b1601c952c6e8496f4649d2b183da5907e27b382f125c8b9b4fdebf1cb2a98aca49db776940615cc66699f632bd0988279e2cbefc87f5884dcc71ad2f127e830ceee3e40430a464949ff5aa938167c8c8229d604f9ced0922b5776061a50308f505afbf65428313b470e624f30c46d93efaa7e5940c30906a174a5b3fd49e2c2f3b1d6038cb2021a4d30a95f9dd1d32b16ef31c19c3cdae70fff7b42430c051a4b30d89a881ee28c502a596e020d25183e7324c7b7ee58934c82294bca486fba8304d38b7504f37851abe5110c42e4f59bd0de0826714186e7f8b0d00e17c1e417c95469fdcfb12336041a4430bf9785aa4f499d0a4a3486605e1129477bf4d821a98480fcfe981f21986804c1d823cdb7bcca4f5b0a84248947eb13511eee22031a3f3028d3d69511f23a49c307c64ea95b4ab7de653f1a3d30a685f593663a72b4fb632dbba0c103637d29cfa6c38c0e69265cd0d881b99252a3920abf8b6af9583b13d0d0019f6dcdcfc48424d1c88149bc5286963e7daceda08103534e253dc84d54abf6f909346e608c3511297447a949211e3cc0b8408e1c655f74d163471768d8c05c3ae9b36749f94a723ed69840a306a6ef52117448da0ad0a08161ac54b4e53e0869de2c0c13628794a57a59184daa76e6070931e7f111460a1480bcd8d1801c39cec6302316c898244baa6f28714932cc80455d3a5ca486dd84b90139727cd15de8f8c28c57987f276a9f480abd1ce28a19ad30db257d7e5e5a4c74f4c20c5614ee7266d952ac45f98c1c941479273a6c9cffb176d760648391820ec28c5518b45d10d22ce409a1165598922a0f49ef2d5a3c5ce78619a930479d3c17d22658e90815e61373f1952f749b7f0a73aa99a871424816fd98c2342276ae9e45795179290c1723625252e153520a298c71a2a5b37a76140661aa2ee72589c2b05adf29e977b67e0d8561544f9ccd3dede882c23042dd999bf6b850924f984f3ec7c4cb5174ca7bc22cca3d9a1e932369ef84e9c727c8c5b831b922274c635f79b546259fff36613669a33123b7226ac2201e429e2e6d55ab2d1385fc3146ad96aae46006264caea13ff95472c6250ca747f6781236ef65f958eb512c61cace10f92448b1ecb712462bfbcf371a725a774209530825f374c5f2630d06332661ce1e3eb824f518edb18f354998f64577ce52e9d0495fec580169c18c4818c45c3495ffb68330918fb515bc176f98841990305c50e17288217bc225cb3dc220faade932aa126186234c22f6e8ceeae52148ae11e66c39e84c4eca2b6e469843c7cadcf7686f293284198b30880bfd9679c94e24b122cc11c4cfecfc86d41b08331261d0e7e93623aca91a1b11e6d4d516eb77abf3c18c431872bc0c517e39ec530ef76086218c291f925c3753aaa4850b2e769ca01006d5a6445edfba4e840861ca93afd5a2bd19a24118e784ee15dd3968fea998204c32d5b49e4e4281309b08793a29cd7430031086981666b25876ced0fdc15441ad7aacf29f4832f18339a9d871e353127d5bf6e88361a28993133e62ca543e182de75c4ce5f7b1b607e3ef8d074f429548d2fb5843d383b9f2c74ce642f260329510b72f7ad07f273c98e5cc747d56531676b1c10c3f6eaee99a95c7ec600af7bfa0535ce67ecf31985107530e76e6679f2fb73f1d8c9e5b2b5b39addad973308ba5f2fc612ea71cc9c12425d875de4b6f6f1c8c1a417fd59c88575307c3c1145b239d9a5cc94c4bde40b058f9acf7cb0da612cac2752e849ee87cac79d15c7c31a30de6142a4ab0369dad4abd63061b4cfe271649e8d54e325bc30c35588ed53418764badb24bcfbef942988106c384fc237a7edfb45cce60bab3902a2859cd60d25b965425b99f6b2796c19c44c57099e8a1a4bb3f984106f368e5bd902119832952c67de878aa928e8bc11cfa3b78f8f6d139bc613068cb575322957077597130030c261395b5f4e45c142b7930e30b261d95ca75ab827dda18c81bccf0823958aaf02d5fc2362c5d30e9ed20c25277d4d3c8d1600617f4b7a0435219d6e61616d965263f9bb6ca9830430b59b81c33b060f0fe501a93a386801957b01c059861054392b7a29f2a5c3cb7985105cb2182195430ed9f876c49bdd57a664cc160e2e2cf84778614cc1323a4cbb9d2963ebb30230a26d72f11d45beca4d33a908e1d3a10b730030ac6d8bd609db1214c28bd48c1138ce121f4679b660575bcb7a0bbe02bcc70823989791dd51f146634c15c6722e4fff4d1e1f5c79a0ebb27cc6082d15b30d59b6433bd50bae4a905634bbc7c9393f77387593058af9e9aa45c4b85b16094a81e5b947f8888dc8d2b18fc465d657f940ba2ba6105e368be4b903ca7b3ed1a988092e146154cd16652e66797ac1512c30d2a3cba3105c34e92157ee4c55d52928269c5553d9c720bed57026e44c1dca19dd682475c9f40c17cb2fa4d3ff9ee09ff09e6ea92bb6bcaeb3f779c6050b117e25eaad2bf77130ca225565c76d30af26582e93e2e65e8e4885fd225983e665f0c61c14e3d77430946112a26ac7ec65e7e23090625a266598cff024830e5e0d6362a27cb39d948b881fd5fd0d0d21519c13c233f96f29ca3589016c19cc65e647692b3d26a073788609c0f3992fc5315442c0dc158f722f4d7e3eee9902ef88b2e7aec2045b821049312a52ba7ec394daf0c829fa3c4f7ce030453ec042521a539c971fc8121a51c755b133216f5411274b4e63d664fb8d1039350eac44bfebc153f57851b3c30e72925e4fe69b1eb7e07a6f5935eb1c24b7afee8c05475adddbd6a0e8c9f6e937fed92669528851b38308f5ff4aa15f13f56b9c28d1b18f7b6724ef97526deb7814197b546ecf210e1526a60ca6b51b76d35b9548e0a3768609022162fded797182d0b366661d04ffa34f2a93d9df4b230688c8afac14d62889c58984d9ad97779eb444bc2c2949f6359fcf615a6f6ee90e62d6726325798db7bcbce83a515a6d49d9783b8ec49195bc1062b8c63a62a7bb2f11242c4c62a8c93fccd629e678618b0a10a93ba6f47d98f2e7299d9016ca4c21043a69afc54b932c85061ec7813f78490396e494cb0710a939ff0fe905f4f7c1c99c228baa3e84ade7a95f252186f543a91c224153ca4309cc790f875d245fd9a041ba3f0fe3d4c5093e35e066143148630a24b892092c841b56ab0110a63a5a85b52d359a9c41d3dbcd8a123c5600314c6f62bb19ea4ae5b3c6ae3135be7941e4432910e363c4132d9edfd31eb516eb0d109d38c7ed273f370c1d7d2021b9c304815f1aca47ba9d7db84d93fde55ba10ad272b3634616e0bd1efe23fe6eca89930c53f9177d5eb161fba60b08109733c991cac2ff9bb96b20b1b973075042df52ab7881bb28439048b1fa54c5e09f38c108bb5a4948aa450c21466923f8c50db499a840d49182788482a540a8984f9b4852d393fd9808429921655e9bab2f108b3a4d72c9d42f89c472e3a2c8c1e3c3e880d47984fe3937565c97d5d6a8469f7639f92c9af553d238cd7a54fa594de42fcf422522ad79e04595aed254518723eefcc50b1648c3811e69c9b5b576172ba4ae0c58e2e781c2f7620c006224c7d523c4b920fe1bda72831562fba5c0c61f8cb926d2d6559e7528864831046d13eead42a65f3b10cc2249284560b93467fce0ac24eb52f22a9f6dc22d913d8088421d8fc5f8e1e64ec454018e42f55a9e5d4a3f2fb831ea9c2a5c5d4966c11235fdce9a6a784d53e560b1736fc60f69c6a5b52280f69647d30e8beb55cb9affae783e5d8808d3d98a48b1ecff5d183398564139f5fb1f34acffc244a843d958207f3fc4aaeb7d15e91727730a9dcd2bf9d3fc8f7bc1d0ceb63b93da7201b753089fb14c9e362073db90d3a98b2ff299931e22e7eda9883497ac8795d96de8c2c0736e4602ed3cfb19024713d3db01107635bea7f474a66f20ade0b1d5ef020a6009d810d3898f5c747dc52ab757ede60160963bbc16c9627395df8b8fabc0d2675c965b9267ccad66c30c8455e8bbfabb52aafc164df4157a819f319590d4637f92b51e63bd9a8a4c190d2bce774ffa65b428339afd2e750ee19ccb22275ff3f8e92239ac19cf2d76530f68714762b766a378d0cc6d122a4a78734a3937e0ce6b78f1426fea4bf0889c1104e8ec83e6f87c1a42446f211d30bb11d3098e27a5bde6b284bddbf60aecf9fc45c74da96ee85ae23297517ccde17dde53de8243acd05f305f91cce7ae225adb760780dbfd9f9946262ad05e3ef640b41c52c9f5cb2603e53e1c14d6658c5170bc610a7eae28ed06329bd826947e594d52ead5a4e5ac1e49574f87f49553fc92a98725c2d799fb86a13a960887b79d459ce148ca2653bff554f4ec2938221a84fe122aeff5eb728182bb6ee8b7abcf60c05e3a51b1f117c2379b66c3cc1f4c1425a84eb53b7be134cea7307ebdfb310356b8239fa5e4eecf35c21a98fb5bd2e764c80053698609c8ddcdd71a43696603c11495a49feaefd6817cf85e9e2b9f86b1b4a3075b4b0ae3067a2ed4f82c143deb554bcb494c31ab081044388b37ea25eee6ed5c11dc80fd83882a92b8b865c4ec1eb2f368c604a696bf26ed53cb8601b453899ce4f51d2e2832af0011d29b041844547438fbc5261f102396063088acef15238ddd9b98eb202c687b183e8b02104b4110453e724c2e44fe7f5bd7cac9192021b4060525eab483ae5b87478c1e30213d0a28e50c2c60f2c870d1f5c8e1e5c8e11d8e0817144edaee6a8d7fed30e0c1fbc6492e85e07061de947bfdf87d60de5807872e28310ba8303538ead621a973ead730373d2d5f12a4dda860d4c59932d824839ce07db460dcce6b964c4a91071f6daa0813136b5c55485d463d9599874525992ae1446b5b7b230992c5339cb9ef00ad2581824ede79b20225bb61516e668156a2c4c7f849baf30b7dc8fc833252aa9e90a6385b50f4babb1c89256188457adbe6bc80ab39efc48aa145c4e691506ab0fa6539d8809115385297a8c79876f587952614a9dccc74b59e7d8550d5498944ee2430afea2cac71aa730a40977a36b45e4ac62b93ad43085f9549c99d910bad2dd1b871aa53045fb2e1dbaa25b7b218541ab7bcc88e19ff2d6284c39e80ed97e51ea93e7637b84e1458791270aa3bebea88d2faf4eb9086a84c2902be7e4f838ee253d25d40045efff72422895ce06233f619277baef9336a52a657a353ca16755f610fe3c1f6b2d704173a107821a9d30bac814ef79bf6471c40993d9e6eca75caaf47735366174d9d10a0b31e9ee52978a1a9a306b697dfaab9dab48de502313061df1e6db7b5d763a26cc1243ff3c7a994a42e51286a0bf7b9137add2ee352c618a764a455231c6b4685ea85109f3c87a9d5051bdded12dd4a084e173880b4a3f09b3fcca7a8fc408962309d38c8cd879dc140973524a289d444c903009cb9f65bd2625ade81106cb32b1144d8f8d123962511979fa633c8d30a4521e7311efea4e6784e156f4a7cb98bffe2cc258626f29bb840ab75b1126a99162fc564e84512ea9cba5634418f79204ab2cda3e98ca21ccf616c4c2ff8b8b4e3184f17325cf5516c2e0a92c08d16236924342982fb4c44c1cad4bfe208cdd724ac40e9f209a1cf2c9f4745d20cc3a4166259191a40910a610e744f4af56e30fe6aca5b525494e0d3f98d32e25bbdf101e56cc914387a10a8e6bf4c1a4f6e7d2226ea5f6f0c1647ba63553ee6c6cdf0323d4252d172cfb4bfa50430fe6ab97943445ac8d7c79307b7ce5cebe547227c90053030fa6bb74a3bdadff58abeb428d3b98bc43ca65afc7bb91dac1b8972ef247ce59225b8d3a9827dc6a6aedf9b1460793cf8c0a9d30e244b6640626b07fa831075397d091aa5464c95213bb420d3918645745a5f6f163ad05cd05e282c72981173b4ec083872b7ea2461c1a5131292f2646ca83c7870e2ed08e3b3cd480834977f02f213a2f172cd4788379d5fd929a967442eb1f6b27383cb870cd420d3798d227a44fd232ec83e5630d2db0c547183b38d0830b2e14a0c5165a68b185165b68b185168694bd0a76648d36e021d524a7eac49828a2061b4c7171654b3c879422bf86aca106831cd5174a48d3de1e9471a8910673950ea2633c2dfcb735d050e30c96436b98c1a45410cf26e79eb44a081a6a94c1f42192d8bd99684aff0d46182c305a6ca185165b68b1450d3218d6cac4cbe5a807a53118e3c37d88744962308953e61593626fac290c468f910b1e496030b89ee8f650731ea3ff82c95378781b9d7485dc7bc17c49e5aa2e2564a78fba6048f1a3ce975011540771c1b4218412febf93440ada82b9235d9e944c08190bd282a9624d92b125c2e57fb260bc20d22ec7080b061d3b94768c531dd2e70a46cfcb5146fe29ddf258c16c46208019cc13d4f9f5b9bee7abcb60fe5ce282e85e40003298f5d277aa5276e2c434068377142f1142d2d9fe158321a4e46f751a21dcad6130cb560a92d3c4fe8b166880030400832989a0c39ebfa548a9f2059344cf97534e258017ccb6fae792c2df68a708d005c3a8f70841890861eb2200178cb69f47e76a970e9127c0164ce763222b2b4b8ea813400bc692a6d5e74186ba8e11200b669bec679d9352ab1d2700168cfd13f484bf481d9d22c0158c59d14408b727c7544e002b98929552ea25cf6fa98f0055309a95aa2409130ce4c871c0284e002a98bfc466f326860a954ec1245c4eab5f854a2a3a0248c1581e3a3e3e5dd01eff28982d5b5255fe693ea90f05738a2ab1c48854aa63ff04f3642f114f22f64adc9d60bad6d331b1ba0926154edd6bdb4297d032c19ceac4fca9f31349bd4b30fb66dcda9b9227d4ab04734e8f95d3076912cc5615e3217bf620d48a04834e777139497ab5b41ec16c39a5e4dbde65f6492318b33f9b04cb2982c1c7de4dd208bda313c1e0499248e76924893b04a3dba5899522270453e915cd11263fa9eb8260f4525a2b4c0f045316b32fbfce6969f203a385b29cd583e8dc663e3077e43c6b56b5e17e11a007069167820c71573a7aca0304e08121e4ac6731cb4c683bedc07097ff55a277df545e07c62b51e69747444a12e5c0247e2698aadf53da6a1c98c27fbd883a3d264ebe81c125cb8e5dcee7e8151b18d49e9c7ad0ad095a21400d4c17ed628514355c4c4b001a98eb25699bce95d3db3b0b835a95a8ac9f11ca240b43986c29ff553416263d1eefe7248a9e44616108729bbec25ce6ed69946e5908aa2bccb1b29e2e2dda2d05b5c2942c46bddb98aee8c90aa3b5e9bfa735576148936e734290783a4f54618c5c7d316487a4c2943de9eb90abfb6d425498c2bb8e59e513a752780a83ae8792d5a75397d099c25caae57a2357f034ba529825dd6989e811d7fa486112ca27a9f19046b47ca330785c85493b89c29833b2e2a64296e45b280c17e72d97d4a03048f590617fde1625f609a358470f616e2fc4c81366f70fca52269d30b986eaa4fd9e9253c509939ad3bcd7932da7249b3095297de3f74185cf170e4d98e2b75a8c8b3893cdc291892584cbcf9e1f09e0c08471a45eaa19d32f611e5b9b9caaa2963088df9f133afe87202e1c95308c88363511828612794a98cb94ef555ad2e99b4fc2f8d566490779f2bdd4a507382461ce3bd15b91f9acfdf80047240c23e9a355df6bc9e79030565bf6eaffd258b5308e47987676844eb24efd448a137038c270e9ce2a696c09794f234ca5956484e1430e1a429a8ea7c75e028e45985ed28990cdc2ba381461d2b0dfaa8a9c44d2f163758011c617c5030cc5910873072b49de3142857120a20a216a5578c78a9cbb8ce31086d955d9fc0a914b380c61b4f1532b49272d79928f351c8530a8c929d77b529597ba8f35c54108d36567c93b6911e4a8876310a6b14eb3ec6f1284b1cb54cf8bfc813064d9aa51af89d5610584d947e94edff70fc64a312bb31fccf1792a5858f9558ff4a1d5b230993fa1637b30caa4f029c4d03c80430f26ef9afc39899952cfd501471ecca3739aee24f7db773c98728b9cd4d8c8497be90ee61bdbadff607615437630df89e0a795929765b90ee6ba4f394a5296bf4c850e661327febb3d3b07441e3b1911590ee61cf42f9cd6a49ad4c6c168a52b69d6a9eb25111c7030a9335342fca950d7110d38de605059d77ac5e7c2250f1070b8c134615e3d921eb5c1fcf7153e0751ebb4b0c1e893462cbf7d46d09635183c07f5397209a1f43a6a30a7941c54e68e8e1d3d0d461d33f111de41a5f91280030de6499e173de8b7840b398321ea8c281b2de23083e9c4f3dc75abf70519197094c1f8b9a30931421c643097b2f4ab5b59c7c289630c66ad31d74aff254dce62302949d2d25f9c6a87ea0a38c260ba12f72d5d11762e090c66d5925d9a59fa827184961c17af95ed415e3056fe92fb27b45d3088b55a905722178c7ad9925adbafd65b44c0b10553d0fc3cade6bee5395a30b8e9858f3c79164cea54e98928522c18eda45bf5c7ddcfed154ca6bc424ec71a91adb482e9cd9408c2fb93162556c1202a746a09cf9f906436c04105647dea901a29fe58433bf08b2e7a40600a06952ac41f79e5c79a0e2f7894190e2998fec745649dfccf691d5ef0608b82298ddcc42c2d8282b154e227bb6cf1cadf27983be48f59d009a68dbc924b8b779c9836416d51234e6c683898601ea59a9f6ea6dfb9c2b104a3ff9feefc13d335f6c234804309261f1527f4931265e2e311860e0ee04882e153fdbdebfb871cec8f35b6139c0e230360e859087020c16c723c7ad0f13d4974f008e3ecf4175df0d8e22280e3082665123f64e83c7381c308a6d4e176ee845bbfc576031c4530e7aaba5f24adbae213c16421568cdcd749fdb9421c43306be7fde9db3a1bfdee0c7008c17c26644bfa7f0c3db1c78e201847a49c26a918315f5319e000824987981dbc5b722eb1c3782e1ee5c500c70f4cbadbb94457ac89aef8c068ad1f2dae0991540f0c3ac242a204cb2d42f4b1a6238ce682c000070fcc5b1e3de7087a3bd3d163c70e0cab2af2c1e36555467c010e1de43992e3733207c64e7ff71bb95639a73830dcc5bdd986ae2799ddc010b425895c21e5dae575fcb900870d0c2fea4aa9aa9d6ed1d5c0b87e22e53df92753f23f6c010e1a982ca8a415f2b2bb34b716dc98853123a9c69f2ceb6461ce263cc5dc527391602c4c1bd94ea8aca62682141646cd0b3f7929e779983fd65e614ed94fe34d49907451c10d57985312faf3b1d6635370a315e6941fd4b275d9c8517eacb1c27079eb997d41ce5a8571e5d2253f375561b4f6686272474e943d6ea4c2a05a433d5d56979473880ae3686c5a8f5bca3b22760ac3585d7a50d79ac218fa24279d78d7b9510a73c83a2945d0a2cf5dcf718314f9885c4afb4dae47919564ffffdef5f8e5c70d5120b1b3a51c47999b4291f43ab98a17d3b793c00d509c7257a1e74b84f4135dbcb16bdf1a6595f48439d64ad4b967271921a56f74c2b0da3f22f145d25efa0627cc794dae93f8703afd9b3059b0d867ee992746bda10982c86a71828bde331386f993a1baeae0910eedf8bc0a10ddc084298d8a0ba5991942e76f5cc2242bfbc87813efd1af250c5172fad75379429f2a617871adac9a97b3c77a0053c228a2ffc6d4e8a9556712a6cad02109513989704312a66839a8474c2db93e1729403cba68010b7880718115dc88843995a9aeeb1be9153a9030467a1f6d32694e292f06371e61dc977597649294effbb17677801b8e30e5bea0e6e4884f2aa51f6b3a7aec6072a311c615919d0bb680053cc0f842478f1d8c30ff9e4dbe11137bea224c223644fc2546dcdfc1d8f1050b5e478f1d65456f28c2a06f24e9c596c6a43a11e62bb9a15a36220c425da27d8ada7a29e4c6210c59ab74e7333fda0719c2e02999a760fa2e84f1de44682575ea2edc84307c8b5f1edf7210e654523f8a9654a7341484f1cf4585bf4a8b22db8d4098543c49b1b64440184c94b80d49ca8f351d2d00230cb3b237fe605e9138a225fa57e6bbc50d3fb05756f333146ef4c194f29b5d38f3f9523914dce08329df21b8878478d33305ab831b7ae062d7323452d2130cdc8d3c982ca4d29c5865794c27c10d3c902f6edce1861dacdc79e773441d7dac31b95107736c7a521e8424156da4811b7438ad678f89a4826eccc16cb2b26244f12018617c71430e978318e0461cee061c0c79a229cdb190925b09f570e30de62a359b55e234c20d37743a97b79810511bccddd96fe28b105917d7f145173d2010c60d3698e452d8b89af5973a6fac016fa8016fa4e17288e0061a8c97e32e28131726c8f30ca611363a07aba4a287040237cc6096b7cd486ffeb15b2a833927af68295b4e39749e0c96230437c660d0ff2174430cc6cfa9e5d773a591b8df088339d674a4cdab939255bc0106a397c5a4cbf64f97ec2f18235d5ffe50614fcc5e305a24a57972227d4dba6094717d1991949025632e187b2cf25f0e77313f0d8d87a83470e52259240e8783e150301084f08075012313080018342a8c0523b1905496d5391400044f3c284232301e222816120a05227230180a8442c1301810068402816020101c08b44c8ae703b1a6138147a65e98c3182167433529e0cbd55611c5a0caefd7b61f9aed0737f2af0adb1ca86989c1246d2236e7c247eae75bbec7d985a2e55de26813e3b3b0a5616f11fb0f8eb447f936af785e4caf645db30a0cf0cb011636864805d79d4e9eb09401ab98456fcf9da85a314b0315070c58275fc80425d264c139d344242b8b7ce06672745a13526e7da38da7e49d04acc0edec0ae032fa6f8e944c85c9bb15ba6f1d26e7e6526005d3f48e4ee72b9769b80b12d75a545d440731d789bb25a96ef9bf5be2ee826a5dfc03d3a3f1b089b8afa59668848ed2e80d2a317594524e26a60e508ac704d3612a14ea42852d3f83221185d2cf815b8c90e8163e7968928be3564a422172cf4701050285a48cc16a5651a029a488a86364851429754cf26a58886972840427dd83c471ed435557c049444f1b889a495419a95248b4512b555ccc78c3010c7035210bb43258065d0ae837e6923b4545ed322ec781be56ba64ed8cb05b60e7c29053beeaa6ee61543d17403905adf86d4342a5997590c1855a1c8fd8268e79aa6780e4aa59d41def68ff684882d5a62705087fb65eb7b3ed1b3c16b39cf40299900d3a784a5f845775d11c95701765ea7e7dec12f488b0dd14b26a1d5baa3678e3d1209e9a899ae09904ddff9f589f812817fcf9197f94bfc2dbaa91913050060b7bad92e9bad07235ee2325dd4a02f20c8b98863fed2947c53e06424201ba6d706dccb2e5e54334651f810406d597d2d381c9ee72b49663d16b808363c5263b1c049faf972135d71fad981e6d12ceca709171a314a6276e9a37fcc2b01a6eff544e1282258391140d971bd2542b93af268025729fbe3e8d445577d2b958c846ee0b1fec7323de90fc346ad5289f916766b46bdfa1d1ad355a51b1c5edfc08e9b7512c9c5dced2d0e14ec581bd1642b7a180e050947afa2e3ad2efe445abbcefd5ed4456de4bf174774bc6f8330ae425ac155354d5311e4ac649412c6499b22da84dc6eac3e0388084b98e6b93175ba6e393990000bc545b92335f143459d5533d31e7e872d0fc836670e96c1945494554a0b532cde43f003f0c6f577777aa29e361ec5854f53e0155be1e78dd0c0505ea92046dabd44b947b0650980ec5a11250c07b3c8a2ac57fc5217b94147c50f2bf38dddee1e2bf6c89a10be35f32b0a178cf4ad431f1eb2ebc77f87183361e456b84111fe942cc544cc05eb4c4e7fd9c437e327c2964528bf086692f2686f860a338d4919d095d1d85f3ad74943227ffaaf4a20173ac4795b234700a65963a5a0933ae5a4451a9d78825a32c69301f4bfc0d56837908c656c4ebd2eeb2528ce50a3d4b690cfa60405110f6cc29c27976fd1dc80de9ca7067c76d83070ee41119d418b5733970938f7e6d05115b4364699eacb14e7c44dea6b482eaf20d10b3a478ea2218bb8372460a24881390f1c17692b7c7fed12614da72895c8a4e549c64016009e9bdf8f91acc8364587e41a47f6c475b02020d432a5086bc758499f9e8278435d8803dd8064efeede6e4763867cfca16f57488e34230a40e236589d642af315f406898baf2d58c6f1b3b6e13e3807a6d8af28e52023c6040ce0720df24c0c9fd001f7f338080d73bad5d7548ec6062a8fb3e498f53b452d937e51dbb5200264cd4360336d6b5d4f109fe745950fd82e22473f311748633101d7f4d8d8690c9fd0b0e6e3a76f6a9264b2bd4fd7fdccdf35f02cc3aba4cdd53efc0e1effb27ec8bb8b7454b57eee5eebe5b170c3d7e658bc5a6f1fc69eadf4b468ba82d2cc8a5f2ce85b42334a67083f253fe11dda8185997fb7860394aaf53bec7abde289ab9e779d25ec2d70c14e304579f7dc0e7fcc1b4c06a2b3a8fdb14df22cbe1e192f5857821b11883edb802eca4d93ee8303b5598a35f673c72f781911354cd375ef9a6a208a6127feff66f92627a0e761177c6acb7cf0f126a13ad8c307967040bc94b1ef50957131460b53254940e3e99abe6b68048978e41e2a1bb1ab632ec01653ed7dcabe522b387e605428d65dccad87cb89628ba8ba48c8d748a12dcb4088a0b1b849be3bb53d1068787a63775b5496b28c51cbb241c9762576ec50d331bee81305adb60b2ed6f5dc1b3162e9502f4420388dec61b39f0ddde0704e6dcf030395bee16d7e1c0af089bcf877b9d28161248669aaffaff62c249235cde81dd654047b2986bf0d8d555001b8556022af3edb478e7a57bec0ef52d266031962e4b95c3f1b70371bf22d2f70900af46e1c99ae8770f08a89714bda1a7f4f7585d8d12d324484cbb07959b80c5c276d9f3e6a11aee7a47a7ba6aac43a01e4949db82c71c82ecb384f311387e16b51253145bc646c46d13d984092ec8b1fe1a2ba55b8c6932f873e1d00b30e5d0452fcab0ccb9d039cf32747d864be7cef9cf2ea9d9e2e973ef4611433f3a6f94e254df07f5640bf15c0967f012c21bc9774237db29f8ed59cb66cce64e8cfba8921ebc408442af072aba099463dd16116f1bb493a3bf58a2158bbceec48e4d6a25161821deeac013c565a3c3b2edd58b5788cdba06e6f1c6c240bf1d8848f0237a3e5917166070a15a8e0c29505ca69b005c96073d4673d31b3e3be4979f13358188c4255225cd2abb01082ff6f8ef2c5effaa844fd97eefcfe901b97bd9ee11edac305989afd799f2192e819662fb7932389a06740d564f45cd4a99b315c3b63d9179664ee03b5554ac33edf9b939f8a40b60984317230b3942238220b6f1b1945e41240e60107a7a079756a47b6edae2f6a79b09fadb42eb141ba7c055388cb40b2c763f6df8c0810586fdc2a214eae89ecb43524abd5272fc9e4f6aa5f7c19540d23b4ba77e3fefaf0928cb6f6dd85e554260babfa87b0a328a87fe93e8f4e607f90f0ab636e77a59d4e577d31485fcbdc5e3666150129f0603d9b1a17f115934eae2d920da9366a0ae719335370da4ca240834d2b2d01c87b4f1af849339c74ef9839747b6a4ea09d4dcc2c1022281c6a944997fc088c152de39dff57f66cfa6377c6536ce9bca80b94d1e12329c698d2ad654a125192c3cefcc79544db5d50a8be2a8369044266fdbcfe1701a02b18accda002fc8c7c8312fade3e06854961e95ae080bed68f0e90e7815244f3c8c34f894ea1c70f519f7ced8d0baa91e7ad0f17e09606e7396e2c6f5136718b877e85daafc639d68b74f2355fa097d4990002e628c15e09714a9012d0b7257b1d742343b6b1f824edd65deb84006cd16c19ca98d634eafb3ac11b4df2875f0e18186354a121731a1ebe0ce00c21293247689ed21691e69f1385910a00354a8efa182ede0a30f535573982e5ec9566025369fc9500d6df65394c0d7b6874532f2f85044b8ae354458e7f3043cc2f50d544fe0340f5754bb1c206941bca688de8bc1cd4bb82d4320e873ae1612774d12c261de11483353ed1b6f73ac0365c3e387f2bab6e0c26204af217cc56c89b5bbbe68d9b5551c6c0396f5917c252f5ed8201daef225627af7b22ff586e6a632edfe0802848b271a541d39654aa18f057c5213a60d7ac519452b2d508608e502017f06ceb644e4fb90c76988f84403c1c78323c9819e2abce16cf0261f0864153c24c061f26f929f9b895a84210884afc56983ee65669b1334066c5e3e319b71e128165e559fa78300d402010509c3b38c967f94e6493fdbeed40afc265f23c1e34f3d630ff5b08734796743b10d311aecd3c853cbd9d4fb38f33edc47f51c546d33813528822c4aee3d40e9daf247a6d66764ed3596faca590f5aa2613b64cf9d08796a40bab1a3b8c0181eb18fab18fab17416d8cc2810cd66d345f3f0cd1b068bae148b6d10680e032ebb5fe6426c86e9d21f1b7435e25e3f4a0b9b0b9bd201357a63543763ee3c0826682975752b2148428097dc63aa45270e9c730af0ee00f6556a737d7ddc63472ada18061f58b1481e73ee61f8bc24ead127aa661ab0f394a54badd6cdf97b5298c66865b0cd1e1e0fa9e7f34646121050a9615e06c478ac4dc219aac2ce70f7df748ae9fc18b012da28b8464fca6baf9f3a5ce6dfe5e24917c14423450b02550fc7de218fd651faeddf01268809761157b000858b0c966b265d08e30d61c8b7c2ffed40ea57d294fb24e4728fc40bc545185cd16d6e4f18325c74ba55299ed0e64cd1a54c86bcb7925a71286d70d54878bd6efe0a432c0eceee9a1ad0b3cd9132ec6dd653c709e6cc7bdab52d9fec7ea4c98110cef54e2c90605521900d0e1ca1499966601ac86a4756a9d8df32fbddb9cfcf5c3981481d70b50ef70ae86a243e520d82080181f4a5645d28f509466420504603c233a2b0892448dbadf014866cce4bc19a3c6ca3b13f2412d6116e09481b3ed975697b2c3ce8d60436843a4224c1032189104af09b5047082d0ddbe0af09734bac2acc6ec01191e32ef8db493282ddf8e2579cad3f7a40fc5792d11fee9e657f7a86612423e46f0cf943fc7e309d44587539946033f050d2b81d408b9f18fa1e9c71babe0b7b3980e2a24efa4c49025cc669fe8eb69d7861824c45709b06734b8f372780ed5752c74306787af3d5a8b06404a6f0a2d690b2773f0a4cc746469c52e072fa29f77feeb97284d13b3739e2890293587f5eeee4be03d6f6daac43bdc01bc46176beb3ae7e0dc7bda431a1ba6c1f7cb80cde986f6ef97599a730c2debcffb56b402254167256ecc3452a1c447e52b88c250e2d3ed7a00fdae6acda796c944358dfa10a9529e35fe5a78c258b5abaa7a71db1df34031bff10e54cb8a85143af39146a2282b02654a72ba0532330845d496c546134610e00a2bb1c26d501bc381f62257b1ad5dd8c900d99a4522c848e25110a8d918ab4621d4c6b8ecc46305349d3d08008f934cef1e01d7883eadcb5dc213f9180cb34de47f392d8e4656afefa545a2009ece50fb116772857f6321e7dafbcfa45537093ba50815e9e3866bd69cadaa026ab4ed630daab7ac3eeca7bc43bb590dd91ebee7a6adc30c892bd59d9136962519d20f2a396de9246a3476867d11a23a9dc3c9ec7d6196071fc2b3e90a3628b79c6f24f27244999b12065830fe99a22db154bf93752ffc5dfb03a0200210251c07d2c1f9d6c3592194051438eb04d934100d8ff8e6b868bac5cf2a9e1f0ed411c484d826921d04858083725f825ab5e0a7d0bf6b6819aa216b180ea47e84f09fb068df36a92a32e8e27a74f2d89f6ffcea9d3661df9945faceb3765940a029e7869e9ce4a079c450933a6d15de8a894ce414b662fa7b4ce4da966b6af6e51bb1aacfad4b64e8914d8276452e8c1404e75ee6c8ed5aa20cbb3497c5d1f1762e37ba3c6b6dfe6532eadb3246beab2beecb988309626d4c85b3fba317b3e03d9e5a602da9635a7794e3ffb3805f497729a433ec711653d15355c5d4d89c7a38415473120c58c717f2f88e2378b9c4a65af38d7de2894dffcb516f9c2926245c9a47ee8b55225542d5f0bcfbf7886022dd095833ecf2a98df3e2829f492966bb34fa88a48fa8792ff27f020e8aab9dee7bf85222a3c3b253bb472791a460b82057921df279fa7590832f911a2c86ea2f35ecd6353b6d86ae51d3557ce2fb555291f307f717fab6129b95ad8d572a3cdaa81356c0eec4cf0d2fa2a5cb57857dd6909d1177b9aa81fa74114e03d1d319acbfaaa10c1ab48ffde977e0676fbbc86f6125ac0166ce93ff44f9bb281b897371f06553b8f4b5d50afc022807df02c011326d800dc92f3f33fb5b6aaab9e58fd0aeda620cb6bb9ec83f03d951c95f880b6d6271cc4623d1bbb6e7ae63a3e45bd6bbe46dbe372a403e4a425648e51f8b55a06bb8dd1dd43c22cee68f3c8ac45c88fe5755cd302d457c353da572ee92963e9811fe259dc1dfd34e4fb54524dbd92c9d9a19fc0399cfd2e390cc03f8be5dc49892525e38721974d6b4d3635c6d2b9f68ebc1509fd0b288b680c9a905a240ce50564c70d27e9b9b105417fd88085a85c5835cf940c2fdab2d21881549c208cee29998c7c5ca096d0054a4107198ba5765012f52361119ff068d1bd40e2e42e1276468d282dbe9683ea017d6c7f60616a732c6ff1bb03dcb035a9671361de1876c4e14740b6ab84c8aa6db0a22f4167c636df10a883c759c4b2e200743624eee581915ce22a1594e654e09c20761de568f5414986b6545559f99a27f2e0ee9d0d9a4eefd73fcc2a110046c356cddff9a149060951aa4a49155bd88af92ac17577ab6d6e07cfdae8596298f074b881ee2df16481565a86a2fb1137b20083d8673e6e31a463410d91496b7e64cb390a660c3650e0f8b7ee4b7299915597831ad0d69fd2f6d7569778e5c4b2d6be70b59b24ae42eaaa8949eda0c8907e84d4bf70966c83bd6d6880758f735da9150903631065e02a6b0907a65a3bf82c639802f40cf0523bfe6f3638357e19154568506f725d8fca314f88925e0b1bb26b4c055546b4caea201898048329e7e171922c115992f19ccf829169e82ef67d8b4ca9036af37833ad9f362e6aedd90895c6a9a58633a89ce121bad64fca7a1625f82178edb7b90c10595b238a83fed7eb3f930bc383750c433a916d25e364d8ac70f31c0a5a541472aea6180e09c4f1ecc72f0b1f2497d1be869612adf50b6aa5164f00588f13667083a21c2e706f1b1d66cf44dce41e27937a2bd04bf078a8e3da779a3439d8f7fc0503a67f3f8aa210cfe69b1e03bba42d2e0ad45c713702c42397072e1fb0a13c5d1a9a6286af31c84511e64a0ed5b46124afc8c1a9d15f69f26406cfb9313c4ddfba5bddc916bb2b25d2116f414f7c10f227c3f01150e3102cf3d1726059b4d22f16301ddda1cccb794e89aebb4dfc24724919d628ed14a39618981dbdedde82213e1a686472edc92f2078a6ca972994706d59c4d898d836b497566e2459332ec5e7d381557a2ed61588148e89e8fa31978bbbe3114e8ec1cbc80837acc5e6a443f53fc52580000ebde2ec37075ac26dfadb51bd80fed7f129ab1246e175ac4caf18eaf5b29b485b9ef4da10ac444223980f6f891fed4b176a14639e4bcb258e2d4856208bfab572d6aad9f9d91d58bf0d229174fae0858857e55ebd786dfeeb38d928c84f6f5f4f9a78e4f0b4d7615ea9075fd77b0e9f9cdaebbe57d05ee6f0cadbeb08167ec5683774dcf9c12ecd483af1efdde70cc66be2102d582aee454daf4abdc24daf11b53586aa592fa1bce0f3eac7eb252f7c5ecdf45a57afe3b6212a3cdabf72b757bfcce3bc58f00a6e91749291afe90b3bf2010dafa7f57574cb4a048dd2eb38f3bd20e193d788065cfb856aaff9bccee18b7eb05ebc9ef2c2e055427c2d5e5dfebb1aec05fe3ab63f5dde24dd75fc2e826434ca50711c76a73e102de6e2f2b7d0efef9c4b0b818332912e31cea662af07c6c3753d69d4ed8261a98122e767a0a8741c4f313a7b8ff405f14426624aec0188c9b39d92416f14ce1d72eb84c72808517f2fbcaa12cb06d2386f43641422c8cf8456f7131ce88fa00654595007f943000ac64416ade8b822acc4e5e11a04a12da956045916d982b4c1a3e1578c8f6f738ded63f6812878fbcea1241c86320f1f1ee87b0763457f28542516121103c01529f129e30f666ed10860099fe2051fab34e88cf6b806d66ad43a611085d101ce01467f746a332b64220643b00ae4ebde321e27beb2a0eafe4a31acf8c83fa936f20d898e909a5e4c7c90944ae851abf299b5811b38aafb4ce2738de5e3137257824bd4a7a0ac44d1b78242d4bf46e087a2fdd57e36d343fb2dff57bc7146835f370a197c86e51888dd0ae8c10a9332befc816f385ef20427f73ca38f2a283725863bc9fc87ccfb202d9e08e56a155480e8c862c1b624db0b27988f0a550b20a4180cc2b8da420e84e84650a2cfe0ab89260dc6f87e2ac1e7ba21f41a170c00325a86eaa3f7c7541e6c956982df9a768c4bbda5003f77da720f8d03c9e4028ee51d8a93dbe1153608e8b348d423503e698d014abe3885800525c8838b9f7fd334e95d65088828f4fec1f348b52b34cef762b2a2d29acf739b38d695733e283168c9161456123059b2e566c9a6361a457c9d06f84f2163920237df3a51c3f13a6c261e4dcf610c88fdfcdb96d9aad63e0023c1e8b450fa796532d8c302f610cf684c741e46ccf500b3d996360be14b72cea198cc9a6876a64e823a99c47b3cc9a62b7d539105f1287e5eb04fe75d1189dc93cb68f24e3a10b720faf31649547e4412fc7b920736ae5068dd29d3ea089417b4fa4519aca07e99586957eea93fbcaa626b5a4b75ef34d26b13d522341c680fac77524647e63e26d2d87864d03d0a992b3ec5967c8355a36dd4960152a14fdc91ad03808b5610fcad50b9affa1dc85f25c52121a3bc6cbdb96d9725cb035101f8be4755f4c5c5bc09bd3c89ef3da92bf7dbdf96d5cb184e76c4544f86a4192e5fd965766048b858187a411fab95fe6727537f7b036b995a7291a70ae06846e9f8d09b0e67f72eb5b6c505ec7989fe157161ae107eafd85bb082dc6bbe95a5e28e8ef80dfe42e8b25a3904c2121aac5e578f9f7c43e3558e14932ecb4203b88facd742edf92422612c33d01351b19203c3fc91f28cdeb27a59ff60554874fa4c3cc4bfb2bc02f3737d3c205090980e7c142537022b3e3104257a631232706d4164882aef281a8a32d1e82b6b9b67845fbcce11ec3e5b49c48234cb57da4d0b6ede81057b6732e27f42f1b7abf6e32ce82c4251a9e1b028bc7773629d375985c24deeb6428f0c3f4c84dc41bc5d3f89c46d375189f075359f9cb07044229c5edb5df63076131a4fc476e349449f89ed7c69a05a4e9444b13c9094c0eca724b4d4705c8aeaf172dddfae4bde04c11e777e1499dae15b31b783e3e04b55d883ba7b53b5fca1cb4d67168c5e664a8d95c345d3320799c419122149a973c472864140592c8503e76dfa3d6e0dfb14ac1e028bff6d3e91e9ce5090586eb91f687f14b837bed2a2f46a67923777ffbe4839659bb0183ba62bcd504d604a5d3afbd4a5ddd30c81fa795ba93a9afb076806890b4df817b654a0389398f701c5770b216786f3879622594b4bd817badb4f698979d5a577b70b7f4c891669e41924a99b5fcdb0db66511cd42864387f702e353330dd0bcc2e7238ca9597669ae4fdd06a174190733878eb04b8da7e16e26180f8f60edde467edae7bf21488f4a8c2f05302dc27c79670a7e40d058f11c79ad1b9f5e9dbfd06faaacd1e64d960da69cab1d7befdd64653829222101792dae24c82fb93ee172799de84e8859b16c665aa378083ae28a9070f0e61c268e5484a9aee4e75525e43f32c1331ea1b7cef4c9225a4caf2f70884d9e3b8236b2705aa2cf95ee5bb3482d8b92db87dae7aa905ee97895ed5c4e4ed5b15d904a7526fef39e3e209def4839a0c752d52e5e9a654a0992ce6b6711d477dc986dea8eeff10780952075c9c457ea44fa46ef2cf2ca4e9ebd1407635412a0b5e58d5f7c1614b90094c5ab5cafea7b2b73e074fe1818224f724bd49242da5e409652be10177fb0bd3267d4cc9a7dc15cda467802380a79a2ee74c49421c60c5499ecc3a4ed882e25170db7c2af7d03d40f0cd9d1cc76f4ece250c0c79b9131e6e08a099aa1a09567c10a96980ab1e3e12bf3ac0d23f504f62f99a9d31234597bd5215167482fb5148b3214d0e0b0ba629178220d3e32e8c1c860369d0c0541406dae0ccec3046c5a27300bd1566e1b6386b59948e27aee0519ee89cc9d61926d191eb60dcb9a3b54ae1e68990d5dee477ec506c5745aad3c707592803fa2d0be541af4994afbc78ec0e7cc00ab38f1cf44f32087f29a21adf44ac5e2928d8fb6a2a957709a9706d0b9197a6489a4aa55fdb6dc525978fdc3fa6665e5cc23c8d11b8bcdb2693094e370f9ceb27f071c663e6c8ac057a79cc0b812b5af9c33bf0ecf197be0712bddde1756058f09aaef9eb62d7057bc57357c2d6b88a1eb2e371a0aed48d226e6b7f7b8ff8d5301aa0a5b14c29162a2167ec371e29554633a0ddb975b019406b589701ac45d5c1f122dbe3ef4ba912f0642a0f739d1a61677f07b7b323e9d747a224862ffef45ea9b4b3283f7d1c29cf15d895c4eb06f5a3d63882665ee923b7ba5226f179be0f033f08067fa4270cde2e987c45ea45567e1d9d430314e7c29fa5de2b166a66d60384b28c707d28752ce7f673bf8bfda6a9c218b1c4137c372ae65a6f6c6c9041f71f8445092c81e737676088ed23b51d5cd9f52d53ff0ac58d117971c4adddab1c8e104382cffe90a9747d561fee9d64fc4ce5a18cdd71ba5c303a509a9942c97fb59362313907c7cc0cf56ad007860838b4d07e7c059236343e77a402d617069df6ca7031fd3572638891fd056d9ead8068510062c227cd52a85f28656a16b19b3ee513d8062f219743cd368bbe47de6c85ca47c60808aee3a23d97d40d360834530fd321104cf5873bea2247e018cbc3f88b11d7d2e8b5f15bf1f83f7a8b16278d57c77fd7e9ce30f52ff58d94a82df195d86cc7cf60566e5d7ef290cc2d2f2f9330b1bce42926dbaa3a71538b1ce20d5a37d4c86052db3ae0d3638bda96687d1a4153f744a834b171bbed4296ecca15bd962343a98eec7adcd850a5a6d6daf9b17722b280c96d29f5d78da5bea00a5baf8fb4a17170c5cb5895e01da1e60d03e9995c555a36ad24830d54635e9ce662d4ebe945118d39419eb6d406606a4b073443404be10f649e10e0dd04601e47b6b520a69ea55b041f54610ac6b40303609a708062c66950125b0771a74a5c7e2501314588bb100887e84982ed00948000814268a3d3355255128a43603104c887f0edd8841818e2c9b5b896db10644334ceedacd79ace447602f2a53d76d7b039ee447016431200490914651aba1c364e97146ad92271477db49c02dd61cadc50559cc00298084595326eda12a578534addd4997d472465e09d3db9b7c0c8fddb9e004fa221f06401c311d0c9f899cd049886ad42cf6f03496cb278601cc64bf219c6bf041f468ae351f1f0c19ed8d6be841bb2d30102215905281075d3bef79bd1094f34b1644d17ab789676cb485e3e82e6ba202814e7e55a9dfab547fbf912c2dfe038430d02701caee271de93e428b93ae283aefc4c84e660e482220130b31b33061504dbc787120d961ea3c731dd89e2be256819a95b4c5ed8e3ab7bd0aa78031e3e543602b40821a60855a906376141c349dcf4e1862cd2eb5478a002409685d7f00523b8a9f61a791810b450623c91632fda6e869bb73221ad434da66eaa24d758f648f7ec6333c31d8298d8b58ca4f873a9aacd693de46336e93daab6d36176de6c57a72686864d8d7b6951dc2fec135c29af2982e5ce7110a96aca513cf61c48014ba13550e8548114c109cbb2515dac22886212729e99ae4115487c6e2a5ef2109c12c2b76028610ad06af4b7b0a10ffc5300ba4d3655fbc8bf06a83ab14409f043efc4c45e53e457e1d9d1b5ea9ad8b5d96ec3f988865edbc7c0cae987bb03ec86009acf441f5b1f393e702c231b00d880388a2e785dc376f306ec9015256e6311b93363b6385507f4758c68caee02615549aa6f293b74729ac0804d3a31323cc03a59315500623195ddb9d3385eba0e140e177e00b691da816aee656c9d8e8f42b462473624c86c680f48285a80bec47150aad90378183c49a4bae36c9a348d1a1c11b35a8b27169ed1e0ce80e926f219efdac4100294a38ac54ee080ec5f85ee24b2187bfee080ed274c8490a0413982cebd671cf5efdba50ca0f7029ed85899a68232b8e97947741ab0c9e53444ae66c137d49d2eda70eff8950240f0a737ae510e746825b10cd570598758536ec4324bf105c791e10a2a79bdbb4de91abcce90c392563495983216d89b8e3e4f34ed5fcab0b18043fff8c4f9a93add817d0fabe5c482e685022ac37749092842642faed373b7eee8a43c5b5672f5ec8b45dccc91ef61260d860e2ad24419df809df2dc5705d3b1f3a057e592726f6b7798b19b978f642ce5962fde49b9b9157b4a09734e32c9ecfefddad4e656e432b92af3edf1992ea704e6280d5d4d74a4a8729d3d89bea3e9a2f2514eb8f2aafdcff245af0cabffd5f22960cec9e6ea9c3e174618d6f138f5e8795d5d49a11c11f2b03a551f0459e89909cec48c1df5fdaf540c1b3414e8851564011cf680752770659e416d5e8293ceb2849e6b501967554f05a13bb24cd040c86e112d374afe22a1412a1efd6bdcff19afd0576dfe1808dead64b612649b726469e6c8409dc89e51d602174c8550ed146df64346269d82caffbb558e4fb50c6cc0ba7280468964883433eacb65e04cacf23f884e7b11e19920fcd547e5f6f5909f65b0b1a9d55e5bd86a06c10e5efd184e79cf9cccaa913dd3ce4c00b8df2722a72c0e54286a15caa5fb7f857676a771a42f47a34cac0f819ff8387f0f0f460f0f90799ab66f42e7deb76012e97047b56ca429358b31fc5b2e9e410b2866f4406c857fcabb7035c7c8b7399f52a8cb9afadd5d198e8b19407071bd3ee1ec29788ab4055d87a38ab773f02cffd63ccde9245b87418a52e14e7ec2d7f0162b35c69ab417b543ae8f797dd7c923e23ed299f3caa1c1321d3eb78164ac621471a94438ea39989a2a9bf6d69842c13e4eaa8bb34487b165de9220d5d86d5a0421c6c3c7b491b4758cbeafccaaaa29425d6bea0fb2492a6ef0db69024cad5602b11a06a16ea97697c389444f5e616cf7e3a8a456111274582dd19ec124a96ab2b9b989ab29019629d5c6dd11f1c3919d5f1b77c5e443b1952361de12c0feb1ab98af4d20d2a396512067bdd12303f350182298245d1b74f756589ec3a723538e9f7bf5f44779c0107428440ce8e8a29e5dc55ba964fcb3a2d81449eb1e8ddaf9853c108a97149c719cc6913c149e496e1e32e02876b4351d2367be266646c7feb0be18c6a07680a1d4def315051a597f1f2c056710c1e2a7c6ef8ad7fab347319b6f0022eecd7bdc9818aa49e50eff329b6e8207cda65b5403b5302251993ed54c75345ecdadd061f109aa506525a91e65b1ebc45f1a65bfb9310976159ce07a075f277e672f1f5b1852b61467760fc825a70e15af9c416898ef46a56c843285de9d74d8ad6bd2b26738a1abe7d1236769f04a91872ed6ba91474755091692c4e05d5464cbddb8b31ac6e246e47a9800fd1d88d2f48794332e755ab816785d1c086b41ca90a788b396da986869ae660d35b3faf68924512d22270033321d8f16e1e776d486a8b66cc6a176b5c688f01db437e5205556cf2c9f62fff94bff49e0fe7efa80f982f85585c93790496c4cbc650935a4d0c789a8b706b524b6a28ecbbe0437c51fc219fe5b6d03b3e50ace7a1a600b341ac1f485171969febfa85d7dbf05f78d060ae2e05bfdbed39803e1ed522411c0d4f8911f08e8655cd211df512b028c6d3faa332624b70ba35b81ea9d39492c9edf34f20925f26a94d065802a0ca3262152ad9667e768545fab55fcd86313490c99035414a3e05a094944a425513fb302167451aa22aaad9ae8ef2fd610407f35c211598131c44922cd8158570eaeec10679850b425467b58cba4d9b98bfedc0d2935c82804b3c7bda5eb2b4df9b6d6e643cfb6de743385aff305a756d045d5c80a547c446b45167b0dfc2121b0f10ceecfc3eb3886fc089357caa38c2c6a0b5ddcaa5c112b019dcea7bf30afbfdf01c0a2948a0e465235bcf0cc86be43f20219e5c4e2b2b58393234a5150697a478463aa018f0dd3a81744234de6d88ead159607c1f42e5c5f0df192d965143744f240825c0f5eb6c4e32847d8fdacaa63282390f03ea412da9b18fb7c7c9d921fcdb39c4e77f1aebd24ad3031d570112a1256201a7e179a9125e58ed1877f98fc7c1f04ee8c40a5441234e723e63b1fa8adda92f92b5d250bd9b87b06fa58888562631b60c9ffd8ac9e6b747f93c208bed442e2a822ff4f0a543ec3713b9e989eba1e6c87769a0c23549159a340eb3f9fdcb866233ca3663026c22276c9654a02230904a7020e3944df0a3860b46439330f0f0f0f0f0f0f8f4c16dc5aabad1d6212524a49d268eccbfa172499649249a662e2d325260e10d99b10b21afe226df8ed5202e00aae0a110baba9d3ee1310962dd9673491ecb9e20494a4b9ae0fc15298d26b0c62348120e6e59d4ac4302171ff169bf49cbedc5d21c612d071b2934816234f4e393b88a10494e488924ec5aeeddcc548024af42b977253e13fed0509e8d1f63d1124e608e80f2959dae41965e66304a4499264a7643d4deb4530bcea7b8c1c1150c13eedf4ab458f511f02e2c2e5b495c172ac8de2480383c31002727d3b95a9ee83802a4f12f2e845f1995c184040e5cd7a690b175dd37f800cd699321bbee26dea0394fa34dd25ed4723c5f4001dd27f7bf5bf86cf116f108307a764f2bc24c884183b3067f19a19f52c21860e3e61194c2e4509671262e440cfc81d9ec5c001badb2cded526dedbfb05b26163bff01c316e80cc9af1d593944c7d6603a46ccebd4beada54e735409cb814e2ff12fc258706a852aa5356996fdee566809af124fa5f6943251b4306e8bf14277ae42439a6490262c4007512254b0c5a9f35623a880183e3a59c5227c9fc2b509f46935b56f10a7a720532dfcce72cb26376d256a05258eccf9fac3dd9c773dcc06485b6a06315e84fb119c3a4e4fdea77a88274a4029567a7fadd3169b445053aa566d24f7f216ab44f810e736329effc9e010d6cd105185c2c0e0b74980215e7235a0a649eacf2bd9a14c810b7356f79c41add8c0295fa2f7312fe29bcb2a2409c27715a7524078987023d96947a2fcf3b40812af9ccac367975cb91c399138002cf807a13ef2f3cc7e9f884f5e2c9f446f5c429698d6b999a64881614f802d83960c4c34081f70df614a8161d9d40e7f04bbf917dd35fce09d4a665791348f553b9c726e56c56138830c9ad349347d3f26402251f7d74928b98407fffa60f79e3b673fe12084d9fcdb5a4d72fe396409ecc499d6cecbe73ba1228ab241a1fd5d732a5043a274951d6e5f5ce922681ecfc3b12c335b6d22309c4b8a4ab8ee79d67c54820542f759ac80412a81af7d458a13d029dd38da79abd98945cd011d7d1886304d2adcfcd475d629dda818e4510f3058b1b939624c345872250a6437cb9f95c3a34da9108548c1f635bce4fe69a22021df7e173a38f75ca3a0e8118d91831e7fd35490a8e3443a02f24f1508b338beb7714224be9fa64974aab741002e56977534c9e17bc443b0038a26310e860aaaa27c3e59a3b0471364a47200081b0b49e189ea9351aa942c71ff04ac99b6eac674c38d2cafc50aaa30f28f5baff7bdf74aaf27c406bf898b444cd9622cb7b40795ddc5e6d09399aa7430f289178b57a3af39b3b1d79406ca756fa9c5c5abe2ebcb801c6de687730bae0c2c876e001a57265d0dc398fe94b1174dc01f51f73c897f5a46c420f74d8011db7b4d33f5292c94f5e6861821c75409b1e49d134cfce5d96840e2879362995f6dad4d99a39a07fd4f4e4b8f89a60173ae48088eb69ef3feb6f39a950a1230e882c3fa92f6bb2f071d6d080046adc143ae080523363a9cdc4a724ae0c78b1ee0027c15ac0860d0fc3c340018142c71b9013b264ab4f7527557e42871b10a6dbfb6c249e9ce49dd0d106f4f579fba518af661e1b107217e635a05f83b587976c1a35d580129bf2e671ad52f2c134a03f52bebd0dd1da9a982c74a001d53136c4155339d07106949a588c69b355fc4e6ec02c091d6640bb5eeadf1f71eff8e048eb28032ab899ccdc92930125397c542b67c8def131a03687a8495faeab8b620e1b36c480b6fbaa4eadd11449d8110664b8db86e0154c9f1cb5d8800d1b7f120c2eb408e30bdc4107181031a7ed6a9a208e342f6e1cf902228513f1d4ea4a65b9de2e4eb082b5800d1b7bc8d0e10564cadb8daf771b9bc435747401ed9dbc726dcec94ce5025a4c33a2e6489fd6c25b4057c8fde1f725347468019d2d3ec7ca95912ca0f27ecadc32a929b5eb05169093432ecd3c63c3060570745c01f96b91b2fec7f8243e182b48c494021fb851800e2b2045e572bea81f3ffbaa02ba2b5c4c9b315440a8aca56df7d2f9b6c9310584a7cab28f5b1347ad2d1c0c2d6ed8033aa480eacf71fd4e5eb2c9370ac88da149ce67acec573ba08030abbed3f64baa033a9e7013e87002f25c5672dc2d9bed8617bbc50d4f81165f781b42818e26a0d2bc79f2f839dd670a8eb415b809fc8b1b28f02f8ae53881166084c104d4ba4ef89455bd98ff25202df3a3676dab04b4585e574b7259bd7547129041a35bf23cf9992b3b9080ccab60755172fce6b1e308289da794c54e11536f1a01d5db9646724c124d4f1074140115f6528c4b9099bd8b08a8f09277758995ee932eb6d042032ad02287165b34a16308a8935fa21bcfe31c0af04287104847101016574fd37283236dbf0043059ea314d00104e46b5965b1fc3caafbdf682ef6480d0d34808b0a6ca00235b2a891c50ad8860d30b8f02d56801d3f405dc95db719b38b211d3e4059b74a5cfbdbd54e76f400fd15b26de90b9ad17e1e20529996143e44319d750708d78f6b156fcffa1f1d2077ecbe5fb752c81ae442470ed0146725c3d88a5b7ae8c0017afc33629eefc4f90f0f3a6e80b47eeb0e1b3d2ce6cf0b3574d80021497fd5bec558ddaca306483b57cd8cd7123a6880f47a2b7513f332cbcdd131830e19a0b6c272ba8b7db983e70b1d3140c6cdbf15f27bf48a78070c50de914ce631f52b9077e1769b54eb0ab4bea920b962da9e785a819cf8599a54bd65e49215289df49ec9cda8e93b6615c8a4ec3787e688e42caa027db6314639612a106a95b54ee9e6cf90820a649a981b3b4aaaa42c770a84b57a9aaed2b78c1253a0b4c62a55cdbc29a4ca0c018b5220b2e735f94a6b962d76460a644df4908f991905eaa4b6757b7d7ea40b8c3026f08583f1001f60210a941297db1b63a993c993a30758840239fe16e5545c5ae0c0018616a4182850a62a937e31bd1614788e4fa027aec7ebfc58f1bdd82d6e34179e080b4fa0b2bf95a492f709bae04ea03aa98d697d4a5fcd875960c189e427e15d6ae1d6e28609dcbd482db0d804aaa4e7549353bae2fb71000b4da05bdfd4677bf8ffec2305b0c804f2fb92cc49790a26d09ef1c4df6e1270d1c509ce05b0b804baab4a43dc90434f6d38d212c5c91c9b39e59f900d60510994caea69275b6da7151c692a704aa04acbe54cfaf699f716f36502584c02ed5ec9aadd4e98c6f04902253479c86196796b71c3737cb15e982dc00804b08804529396984e7c36cfdf3818c002128810d73a52b99c6665de8460f108e4ab875f8fba3a0265e92e3b8fa48d63292c1a814a563561473b8c4043ede7a4bd6611e88bae39ca65b564a62290d9a74e53e7ca5c0949042ae7f6b4585a4354b51181d2a75925ad634354eb10c864bb1d4d5f528d94640874e86aec8c499d889a2d04fad245a3fbc6844068c5c768b59ff898dd011683404b3edde99369046132ef1cb3cc542d2da9a86b4a53d955a5e151018b40a023b658af8a27ad4cfd000b402083b8e798f32cf9b6fd419520f6fb0171d915dda36bfa805adb2c1dcf11edd2e30352656208e963a552d5ec01a59432d96839af7ae5e801793256eb5ae6f380fe77f9f83e123c2072ccc9bb3cd624a5b277407faecb182de5376fd00e28912b26db9918dbadac03c2645748b942121d90aee613f25e98d4cde6802a199b4d25a58c1a1a39203336bbbe4bea92598903b23fe40921e5f9d9d770405db2d5fcb944de808a2fffe23ebec94ee906a47dd2b95b3f4f2f756dd873e6a2a7aa8e0d68f91024ada64e219fc81a502d69d4dd4e47ac5cc1420de86ceb1857324b251582451a909acc523cc0020d88fc7b96745e86311d62710674aad89d2d67fa044fe348c32060610664af6a8e9de3a7b8171b40c0a20c08cd497fa249b5903d6160410654b07bf751f1b9ca3a8e34f7572cc68090944debfcf5e93ad908a98b72271c691650c30c25a05345f1320931899978127006126ec611d0298620264cec956e5543031220c401338c80929753f64dddb7cc79cd28023ac55c32a3cbe992a92a0f984104a47ac53025f954733b04e48d092bf5e8a336712120f5620efb95175f0e02ea676b4bc9b281802a9dab7f802e619ed5c95392bad907a84bd9494f9ffa5262ee0152c26b4faa3af100a5f485f8216cac32a5dd014a7e76716b1d93bd393a40a656eaf839a7be0ec91ca022c430337f9df9358303f48e55f2c87a2635536e802e0bdd9c4ccb58d09c0dd036317c58979cbfccd5009d4cac460c33a101322c657d3f345d8467809215238598a3ab7f8ecd9001aa23eafaa9a7263d8b3460460c103349e78ede69dbb3ce8001faf4e67ad5ca79052279cc2969d91457a083a77918dfaf15a8a4a9c2a7ddbc93146305c273ac49a6edb47bac64ac02fd71c2ac68b4d718120d830c5520ac2b3c8b59eb26b11a91910a94464af691830c54a0b34a3e48d2d56b496ac6821c39ee0f324e81d0496995f287f3b0ad2910e94b06958f8d1d649402a169cce5438a3c21e96990410a74bc7a8cabf8e9db1f320a740a1697826d5a14e824273e2c2e69e44a87029dd7b9262739e5e22d28506162a63c256566cf3e81be9cf2894bbb13aea6279061539c69abb87a27d309c4ade9d9c5a4fe33362750da5356e454b4d8849a3e6f445d1b8d2690791d52c4f4ef1a8b6b414626ba34ed2d35dea2410626b6d05c563921580619974089dbda282956c7a43996406a489f7b2a9e7a7be6828c4a20c32ffe45122e9f83ed322881cc62a937d996c8da4110c89804e2da7232f3a42fd6341c695edcc8a1859a29644802719ee99eee155303199140e9a8c87acc13aea25c74e124e0828b0ad8b0110a1990409a595ed953a621778a23ad1221e311a8487999c7ffedda24040f321c818891df7252d854b73702b15935a3ad5e98783a5e90c10894df4f4c155f5f044a6feadad2a9560432ab69af365927d54d04d2828cb77587884069ed3b8b5b55b013a8910521b602ffc271e45807101fc838043a55eab84fc2b27af21520c310a8ad54f66fed7a397c320a81fc14ffd28c3721503b39cb866429bf4a6710a80f1253687e274310e85ecf1326e281408f9ac8217e9824ab242010a71f2666662e904b90f107b4ffbac8ae87099e914dc8f003da62c9e9c52453238b1a353420811a364421a30fa8ccd5a43e49474220830f087dcdb47e211adfd3a502e5720f2e90a107a459facbb5d2ae26dc2fbaa891c516ec811c399c59054a0819794076af77ca296d6dc28c07c4ef854f3e79ad709e3ba06dbfae5dd764d28fb07320c709bcd8428b3dc8b003f262e8e7a69c8b171b06481d50dabdf6f937b35fc32fc8a003f2dcfdc4eec939d34973407c967ffbf8242f4be6a820430e2821ebdf5f99b2456371408ef9dcc6ab6892820c38a04f738c223953e5e406de302f64bc01f927ac644d6ce6758d0142861b9061633ea9dfe5b031e41438c86803b124e85ef89d78610362c673090bc9323d92d6809c1619891a90d7f92b272d993490b56df472c565a0017d1ee3534c62a29ff6cc4f90d40c32ce80d492b9a67db5e4276e0664ccb058fa6475fa79cb807253e922b85688253e6440c9abd4621e3558903106f4e4ba2f915326b69960c12856902106948cf151ae7307510d378044a04616352c02353420811a5d9011062726e129e5c180bcb5f9a97d27d9f717d6cc33dd5f3ef9b2eb0564770aabf9e3963c02868c2e14a2c78c7c7df174deb89008b9e27d24691db385c4fb747fa4b480fed9d3ccf1cf02bab2c5245288992ed28f0564ca12e671274f68fc57408d4a8aad9754df47df0ac85239620c49add27ebe0ac8f19cc72c86f899caa702aa8398098fd31410a6195493e96f928f14505f622ea6ec96528e514058b2606a9132855a1c0a68554b497b4d3f66f32720b38d27f9f0e95b2d77023223bb85f6a59b800e5732b9eee69cf3d74c408477d752fb49cf6ebd8434e6ca9f6b655602ba3ae799ca9c2aa5c4494097cc116c7672ffce4840c5afee95642a4d768f803e37657d1e938c80ea5ca179215c79a5a422a02c36ade7568880dac9e221050bcffc86805a0b79c7938a414f928480dcbce1164b26dba75210104172f224d7a5d292160888cb4a592b8591b9cbfe00b5e33369e3be9bab3e40895366fabf928ea4d31e24928af2396f4c59e9c54ec09817bb45990f64f0009d948eda414e891c39dd01722d4ad21eb395627480fea492b4bacec90142dbdec257ccc1014a46af73b0ec5ba2df009942cfe474cd6427d90061571226fa8594255703d7634eb2b22b69803079973acb9e014aa794aded9fb6272a4306a8cf3a114eb3f8c58f911103749dca1be73cde7ac7c88001e2bdd2259aea552ccd2b90d13a68a6bae4d9f3ae40f5fd7c8f49cf631b6c05b253cc7a7e5981f2edfd7877a349335c05da44f34d6fd3ea471588938db5973b2515e8dfcc1554a0fc35fce59c90a386ef14a89c64ea18c764520a9f299097239fecefed0aea9502f5f79e49a591cf3978a440d86dcaa591548a90ba51a04e2778ae10cb74978802999387f049d43f9d4b42816e8fa6daa28202b59e5ad9c384bcb3f90462b44d48fc9d1876f404caf363f096931e53857402616929fe7eb4104c239c40788aa5569dc226bd6e0221495f3ee7ac219f4513a8fd5495ab64029564d2d45fa653b9669840c412cdea31c49cf15cc26cc4b004d2426c2fa752c7a8047293b2942bd433c98612281945db748c7d0acb24480c49988d13c48844890109b33182188f00238623d063753a694aaf4caf70a4193bc15e8c46e488c10874c9f8ea9e1631e597622c02712af6b351cf227e4711286991ebe269399fafa021462210a6fa316230dda8a31362200295ab25ae9fa54cf9d31688710874bb587aaace97b12d5805379a0bcf713286215011e3c6fd78cc38215d0884c75733adbadd722a430854980a1fe14d3cfc4e06811a0bef16530c16f2bc37620802f1fd73a399b477292005881108948a15f9cf74d6460a6300025dbef7a99d3e72a98df107947752e6a61365bee39a84187e40fa574788a79b16d6ee03c246369bee9ab7f629061fd0aee9a36c4eea6e37ef01fd75e29b31fc3497500f18230fa84cee7f675739784085bf4c22aa871ae30e28f50ff73aedb9f48c1d505acdcc55be8d5107c48fbbcff867cb76870e289d36c3e2edd6458741811873409fca3a999cd6e4a5470e08774befd4c17d34ce187140c998edcd60267f665d2fca99a1c0076e9018704077a6103bdd3ebe5bec4021c61b9059f334e8f56b79755d74183962b801311e2973c9fbd3d13259d4681fc46843ba359ec410468dc1066266148f9c5596192b5576d68088239bf923b9e386a42dbcb110430da8ebd8b2609ea70135ef315afeedc440035ac4e534cd6626b7680923c61990d9cae6c72fe6349e37036a546d27794e1d56628c32a03f621cf7b49f6e512403f273732549d28d3106542c99e54fe7cd3c9d733056a0003056906cd860418e1c4388210654470cf9aeec3c39c5fc204618d05a96d79e2966dc4b8a0106849d249bedf1cd3a215f40b5665fd824c2c7488a17d0daa563f6cdf8b5751750b79755eb62ce4d5a2e20e7366690139a2b58640b08b7d73ad3b137b6c4b580daf83317de736bf8a42c20564d784cfe5b72248905b47efba987cb5740cc7bc7d68a7479216f05e449ff52e984795acd5601b9bde9662e6dd6fb9f0a48f3cdb6b7c13cbdae534026d97689f7a37e724a011543ed2e5face560ca28a0949d07fdd61a0a8870a6357801e4df9c45fc07c3070d10c9c2f4bc9766bfdf6780ae52398247abd958b10cd07ed123e9be6c8f998774e12306281d7bd24e34930d1b366cb4e203064873ef3e797d92dcff57a0c664caa9ec74c9b613ba02799ae5a3a5afcd1523ad4066cb15899374626c9c1544539d924d9ce85905322515a6322ed6a6bb0e173c5481ca8b1d3beb4b926c97173c5281f2f11483a4bc9b126d5420be375437a5a7404578f15c972149cc96a640ab45cb25b2f91178940261f972855c5777c08314280b958d18eeb385904db2038f5120434a21068d8b1b5eec91818728d0597793d2fe9244eeed86175b8491d262e0110af4c4172d951d4e25476ee0010a9487dc8d48b04ec96470a4dd0b3c3e81ec58f29d7eb2f494c35800008bf0f0c495aac4c9ef4bd2d51b5df4319d4029a5e5c4c5366cd8f0401619a891051839c2284127c09d01ed603809be580d787002f91afd42b0bf37815a95dcae2165ccce93269025924c4a963f83068f4ca03ee64e6f8b25695fc50432ae5c2495ff4ba054cc4b11258387259099f3a9b90e4d194ca712e8cba4ec948a986bb3c9c8c18312c8b8eb1bb4ce52d6fa9340b8f5457d9b54b2e696046a34b5ec8ae5f8f1d39140570eb953d67d7f27312410613cd436aa9a4fce3e0225bf3cb443fc4af69fc0740d1e8e405864bfe829cee7d2dc0a3c02366c9c60cb1a81ccff94c3573e34a91c462073a9eae9cda3d1fb45203c43db749213e35754046af6f29f58688ef9d4013c1281988d3f197953bf67dc031108af4ee973788d1a4352023c0e81123fe75d7a6643a04d63e53b612516b39a458daa408d2c6a14056a6451a32650238b1a25811a59d4a808d4b080046ab4c1a310c8d318c3c6b49d2c314208a4f788f8a5c8a7ecde2d780c828d257b5b11c3e60802556ad3fabfc2bc2bc791160894ce9bfeb3c4fa40c20310e85db754a9e35183f87f40ee6cf8e514eb3ac41b9b9af0f0032ac44e31a688587cc73cfa803a593ab9065372b73b69504f253cf880188f49c2a8ad875545031e7b40a60ea6e46ce85d7c490fc80ea6dd91928a4bf0c8032ab226293bff31636ff0806e3d9bf026c93b20a3ecdec6da26ade06107944a25654b7b686adc7540dbdc55bace5b6d09163ce8800adb1ec14e68a6ccfe1c506b6d1d920ecd66adc901992fa345d34b616c2e1307b406d31fe6654dc5be2a78c00111e25bca2b79cb434a8e30fa0609b8d082f7c61687bc019d2cc9ad4b9ed3216b6e78b801219ed26e52db80d8ac2df7174f644f18aa040f36202d9587f34b11663f415a82048f3520ecefa2d5060110040f3520f42fb2c4abcedda41382471a505fb123a77a8e4d4db26103d18072ed10720c17d2d65e9ce071068457947ca5994782d75a040f33a0656b3465ca4f914e43048f32a02acd270b9f72357f2603e26f46d2e89eaeb37d0ce81c3c674c99c5d3748a0125c1f39a3a4f7d6127bc804718d0a6276392b9b4b2c8d6455b0103bab4c765fed28d899f143cbe80ce98fad24cb8785936cce21c37c328787801bda6a247f94d8b96d5bbe4d1058427559f4bce890b08f9b47e9e76675a8f2da0fddacb73de1cde2de6a105b3413cb280fe539bd2c694c3971a4db180887bd95ae4c2340a7ce046171e5740c4f817f32f376a8c251cc945058885a16705a4c5d849c1840a06175a6c510594698896f0f071f145184939e04185b423c6fc16aeae551c69c7c506ce0b1e5340e9d421a9f8c060f702081e5240dae9eff66f8c183f13307936e01105547b85b039438e7b51811a5928c0868d2c7840c16cacc713503a439039f93260837cc1c309c84f79f2c205ddbe3235c1a309c848dd3192ed82e7946602fa3ea793dca795269a4b40cf5f529b37ade9348d123c94808c67c12355f01883aa4940460d936270bbafd72b081e48405b7a0ea7546dfea914103c8e80148b55395c6ccf1023204362f526bda445d3f7048f22a0b4e7e997e8b3f69722027a3c83298b31c117bb857f6116e0310454c64faa2f9ec7031e424079a54d3325f60a780401dd993aa67d9caa111f47da218107109091a36e5707dd1c927ea38b3684051e3f40c4e41f2ce3f5465e8b0a3c7c80caa752a7d2fd7f5a3392028f1e10f4e0c119f3a79c9962928e118f1da0db4238d7f22f994bc691a60374eb4552d9dfe062999cc02307e88d7de59e4b2be7b21278e0005deaae364e967df220215b78dc00b177c165e38884ff8d09b88b13242d3c6c70cc912aca69f83bbfd18a101878d4c08306c88cd1afb22a34e4b4d7bf0023035f38175aec0996a1e03103f4a6301d66ec4e65245dc14306a89d1c96f93e5b98e01103d4258d14d27c9eef3891e00103648a693b96c41cf4ab7f052a5808e1edbd4f73ecae408969b33c31b51548bfb68bed1fb99e2b09335881526afa3176d24c29bf0ae4957e47baa4ab02e9217e6a49e9490522c6b660def31597ea02830b4f012a9017bf69b511237cab76068019cc38053a6d443e85d89db2ff34459a499e678494540a94941c26636cf3800750600b2d6cd8e01b27f0620b2d0c297014a892f4bd253e4fce41cc19a24044539bbd2679d68419a160356e87ad77698f23ad181650a0d3dfa6cc3988c758ce27d0f5a611ff4dfaee9a1684199e4005bbfef8a049dda6088e34678116a486061a802d98d109a4957e78af923f6d132710b12adf8dcdab7cbf099457f5c45fcb5516414da023790cdf20bb5b7629c28c4c203c2385a07fa9297f7dfc300313e8a45d92d296efd2c447da30e3120811ff90c448748b9db480186658029992b58b9eaa24e1546ec410332a81d26b29e724baf621ea0da89105aa91458d051c4aa06c474c9bc7c9719c04da62a69df38b7c327c49a054f690c4c97575267924509995d752768e218f0b09644fb48b51935b795e1f815849224c1c9b4bf2338e404a3cebdc936d32550a18270823877fd108c4eac50e167bc349302961463949cb896ac1e4d883198b4086aff160123c795a4a11c8cf60ff9e3ee3a28b9308747849ce4849e933d51081b2d694498fca04ddec21d0b9b211732fa6f060862190957a26c5fcdb96bb5208d425cd9623860b316f4e089476d332cbb50e02651673e45429f7caac3898210884e75c9fef9c748e25cf0061c28c40a02ee59cd4dd55aa5a122050f13bb85e85fb0f88cb2995ae7a5bb04efa016d2996fd26cd3945dddc60461f50e2916266f9860f28bf9ca599a5f2637a0fa8ae9cfa37aeda6c8ae801a5839f180fa6bffdb23c20dd845a4c62452cfa8e075498ab972c7fba036262d6484abe5b2a9db6034a9e52b5595267bf94ab034a68e48d35216ba8c65ed8b00106af175bcca003b23aaf23a66ccd98436515bc2286c71c730a4b5a4a85b493baec2a6338430e28531eaa199fd3b6968e30230e88b38ffe9717bdbb3a22cc80033a924ef27da34bd8c81961c61bd07665e67312373b7537202ce3e27e2acf4125a50dc8ad8d89d983f85c840c61061b901e7bce22a7760d28dd4b96d457d540d1c10c35a0c2c72bf1179793e8260733d280d2153e52445db7d82fd602663a030da898db6f29abff2295ce90267dd13d67cf31037a83262b4d398ba7cacf2803caaa2eaf89657eec9c920131f13d5ff2698b594f6340c5fbd26f39eabe5d2a06d475258d1426544e6c5e30230ca8a42126bd63f2be8f83011173acbf7cb14b841df30b66c30433bc60364c09667401a59daa744eceafd825171096e3672a2399c01738630ba9e6183dd5a960861690d1f4d4db3a937d98b998918532030b65c6159e0f492979b6714fd9b07130479a6105847c32a52c894f0335b2a8b1811a1690c08c2a18974d7e4aea642a2063e6676d1dd5977c9a01664c011d3fb6a78a937376888291a30b2f0ece9002bae6c2e6d068c193c85d1490a6273fe61c77e2cf32801950683582c689d61a244983194f68f562e993f18bf40c27980d04cc684299c1849bb10435183240764e1d34bc63b7c612400cd05a1dbd35c79789ad374000304047ce49924457ff4cf62b50f9298798c9ff78dd345c81be3399db4a6d1a40a315e82473dff71dafc47656a0ec74baa46fbfde3cbd0ac4f9c47c65ba5329b5aa82a421e6f569904d2ad049e996ceec1115c89698351f37644d89a7406d96fb5459bd1cf5620a84c6674af923a514c849e1938a552ada58470a74dfe49c75f531637a14c8925797628a02994de4789226f6f957344281c829876ce5beb7eb1a50a04e5bccacbdd2f8044adc6be6d3579fefd1f0048d4e205672e9c70689e15298025c5c82062710beb5c92cac25b177dbb04163134604343481923b93899b84c76b4b2313e80b663f3b3bf9f2cd4518ef5f14f3000d4ca044d4d660f79e84eb4fe3128486255073a555e73e26917041a312c8d894c49bd8b725a1e3385f80e1c50a6850026d7a7174837a161f9bc6248e862450335a1ff66224fd542341231284062450e93e4a1ef9ec1bfca2461635b2a851430312a841e311a8982c87e461592ebab861822eba70c00ac0d082bb388173c01128192998eccc67ae26f140a31188f871af2e4d0a124ee6451826e8a28b131429040d46209268d846d68a29acac84a0b108d4bc8fbb5f0a2f8b111c796310341481acbcfcd378defa1db991fa468ea591088425c9a62aefb8885665a081086488f94f9d08a72fd038046acf3a87e9e8e2483b52ee0b571a864055e5bc299c67fefbba1088d431da6bb9a6be6a42a0fde3f4a79493cc6a3a089424711a6ffa230894ecb8cbd3b92ffe9c8140c666c833bea7f52d205016ee4643ff35798ef9033adf7eb8e7929ef3e407b4b6fe7f98ac7261837d40e7e9689b2bc75afd0b1f90739ebb54b659cdf3f68090d34f3287d94c4f891e50297c641b7d2d61e1cf03fa4cb43a9e4c4976523c20a34fcee9e47336527907e4eeefb92693b1033a967ec4edf75c93c33a2055e33b8d7752b1f1a303eae32e84ac129b032278bd5975e4800c6165c36bace2809c9bfb5acff660320f07f4ae6a7865ccd0d2e937a0e34d8a9fea53ac9ab41bd0316431a16e7952ffdb06f49c4e3a9bfabfc976d980f4f5da131fb3c342760d8affaa5c68a8011942de5795136b7a6d1a50a99304af145634a06f3dc538d59de294f40cc8cdf86cd9fdadda3b664098de144592956540ffa4ecafbc2ce9794306540c1bc6bf340674d4e023f21f26ef2a0694bd992961ea64ac1706f4fd694c7dc1432acf8001e11b33afe99bcdb7992f205d52cc8aa9f4e4eca017905a6a5193b6fcc9ed02d2455d44d3be9888720179f2b9be63dc7032dd02b2d7553d97d8933c6a0191c62dc33552a986942c20e646e73a6a050b880bc92fc6c63cfbed5dc1b080861590ae416c5d773d63bb2a204ba3e59ca7d672cb840aa82acd72af1ed135b52920924a92549c8879419702bac2aa7f2da61c3f8e0232787dd75b655369291a504079b9bf463295f7bb12028d27a0626507176d31cbff3b011125a90fcde27f567e1350525d4b9fd8a4f0eb99804a3a9bd389b4a79ffa2520e3c4f4e99e358defad04f4f546135b252701115b9307df90bfb395908052522d43d6927fb13902b22eff934e48697ead1190339bf16a9b3ae8a908c8cd29c7f93897745425c25b9a915224e919024a85bb8a4ba51402226669e849b38e9c648280d21b2eb3893fe13f3140407de99cde298e3f4026153b6396be1f4fd10728d50d31b45382a70b7b808c993aef274ff93f853c40c7aba477af442c13de0e503e316d7ccec7b43dd10132a97dee496e0ed0de16216d6dc76a92e00095b28effe990f3732437406bce394db03793b99b0d1ecb3267d6add500b549c7bdbc3996760f0dd01eee52346680ac74295ca6d30fa94f28d09001ba6d3baf32452e113906c8f4e96b7b217c65f6d0800162536b6edcb5113be12bd0d521eeea2959c2872bd0d14efa648ff11377f2d10a649e606d7a7fdc4a6f1fac40763ee59e7b6b83df6915ae7c52c25234655555f0a10af426bd3d39e12a827a5281cc96c176bc64a4c8175420e352a9702b1b29f362b7b85320738cd1727ec534162576bcd82d0e081fa6407a89cb6efe8e238d045a3c175d18f92805f27e65dde63f6324298e34628448e08314881863eba4ecedc728509967e2955d76b1f545e1df764fb0be4a289077a73dca48ea987e8302b16a9f2edbd64f205ba3bcc5af8b5953da13a8ba1c37b54d66acee4e9c3e58cf9c40e56fcfc628e2d1d2bc09b4adfa9a4e269bb49934814e1a2cfd535226d0d1347abc7e4ce9c5c504329e928ba44f4e3c6d2f91ea7fd5af895a021d52e6142d6c73da5825106febf92224e11d2da5042ae57ae79c6712885c4a53a4783a857f2a09a49b47bf0bb62583e6440211c784e9686ae7c4860432da7d9c45ea94ff4c8f407e2e75692f67eecaa623b4dd0e715dcd46a072b4fc4ca6474afb3102b15511eca3e7acfce422503169d7377939e40f5911e84eca42588b4d2290fe1eb2778c940a1c8c30b6b01b1f884079ad9caa8568d162cc219071ebe5a7f34a7a110d81b61826ff8430160255615153cd350755f5831068c99721dc6e678507815ab9a4f769f17a3514042a27a1b994f6a6fc7720909b257bfac51c2010c9f32c58fefc8178913c6d59c4fc8072fdb9d2b0a7848ae94c101f7d409cc4b011cfa66ee1830fc8e4b1629a5b09a21163fcf0b107946ccde5bec95487cdea019949d685d91caf0f8b0f1f7940a6adfb78c2e3c56e711f78409a584817d944be94bb3ba0e3cbc787ed5dd74dec80ead3ccca150fd12c458b3f8cf8a803d2344fd7d65d250ddf644107c4c597ee76cad82946b6600fd4053ee680caa65b3777c9cc161639a0d4b2b2d66854081f7140aa7ac5d826efeb35e6103ee0804e3bef3a277453244f8e04c2c71b90755d31639af36bd7dd808c1e4ef3b65a41f8680332fbd524599bb6423e362037fd09cd94b2a91a7bc2c71a1067f5123da455ef1454033ab96a94393b0d28d99f7ea936f38106f485ffdb7cc8b1cefb3803d2f5548c295433203d7e630c69cd93858f325c92c562aca9652b0d0d1f644059f2185bd26ec3c6175ee6848f312037a937d5699a43bcc480889293fcca6c497dfcc260528b1b61ac726020a7241a29c552d01882775af0f105d4e98b1a33363bed4b36055d6ce118e0e214e1c30b48f53af353bfaca3297bc347179065132efd671249799a0bc8a42599f23d3bf97bc9a145991b3eb680d8b066d61d331e268c76f8d002aa7f379ed2169f5c93060f1f5940c5dca96a578f9d77dcc1071650f1c253e7144d38f8b802f244edcd834909294fac8010fb96fca764d58f7d838f2a204cde75097dd9b79c0f2aa054bda93995d994caeec714d077926e4d5ab21273f990022af6793291b2aafd79858f2820739852fa9385acd75d7d4001f99a638c668434f3f161c3c713504978fefc5e7eb62e0f3e9c80d48e5e3127e7b368fdd1840f26988d8f25980df3a10424c04712cc071250e27722abc535ad5439f17104d477e5ab0acb2957e728263e8c80828f222093debf1b8db3dab9634ef1410464daf714664ca38e879f0b2daa20e26308e8583ae7b5678480aa3f0fbeb90e02623365f4aed30102dada42c287117f8054ab5c229b66f36be5c307a8589b8f3a97c29dd50042cccccccc4c4f0006f1d103c4c9cde7e62683c5997cf0c0a4215fc948f8f0b103546ab9a576d276731e15f88d0f7ce80025356fe5e9c79c496339409988dbe92f913b2c63a6f08103e4e6cabc574927858f1ba084a7eb0d6af2307cd80069c2d36f10cdd50b1f3540018e54a89491651259240e8783511006310ccb6e0f33130000000c14950643c1603426caf2fc1480044d3628522e2e1e201c2018188a84234128140886c261402814080502c1403830c7043527f200c95a0b6110cde07af5114116445191d35ccb1a8b93477883b6688695f5758d5d6c1b4170496b63b47876db474035faad699b5b8673713f903c918b8bda2bcf1a1a68a354103dee8646b0512cc8ec4fd3d3bfb336cf9cb71055ab678e0b997bbb8284bb2a4d833554c816de851fea8344ac2e0824e308c36f439f80fe71852765a5b1b01e91cf11a58d80475b619408d13e1a766c6959f11ec17f9701f38eb4453ce2053abcfc086292decc42a1fe118ed9afeda29544fb146cca6c2ce3e137bd6f95427a1d9eb12455785629e77232c6705aa1b3625369b4ca3b70aa023baf916955c5eec8bafd308bcca5373ab62e2f86c3a3e796294da9e277bc1e2b0684b9a8bd811ee6f8e01f00319c6e0f29c3212105a8751c4fada2347ed0194ec345ab36f38e82121fc26695a2e8d4ee77d2a5056ca0f3f38907e88a5200c71a26c47f1f2001a460f2481197e1e5d1dd15050bf2e177bb9b10eff913b1dc261e73d9405f631c97fe96b5f69e142562a8b10132afa856290cb9361cedb6af4a6dd9d16aa0801fd7d315a8b497462576f3b20463c4b6e634451e35a55aa9aaec2d42c0895662381fbdaaeedf87081c3e729c68f489025481f65def2eaeeeacecfdc4673eab61e296435ec9748f83303c917bbc481df3afa988764330afa5cc91a3b1883520a344fe64bb4bc7a6494cd9c1c55563f9e7cf54ba4378b49ff5fb068ac88269f1899d72c64e29590a1f3c4951890bba4887314b9c6b77ab18e5c74d5aada872d7193ff835cfced99654ad6a88fe37c3328341a10a33e00b983006d60de8fe06c358584b41e00d14f5c03804fc708013c1ae0146060837c9861e73a6e532211a20031e06d57f8365f734be1dc2809a01ae34d8587a88b42030d8ac98e766ebd9980bf44da455eaad89cf6f3468010dfc19c06340dbc03103040ee0fcdd376f971fd51540dff5569332c871025201470714a15a3e0e96534bf8e445031d06a3df83991321e4c4d520761f2caab9127cdebd044f26b01961aec13283c5d980270bfb9bb096090c237c6807337206bfda7503866280d7f8ae09e5f5113a1c52fc01fe98a13692650e61d0d43c3094183510c720910f8832a19e1136ead78de7175172fbb7d21a2b74b5e1ba0b000be005c02400889a01814b01ba551cc0c702ec12906b00e4028808c0e4a36e12682d00e1d8ed675635002002bc7780c052ba289a24001601460360037036c03e1b70e5ac41987bad806e80350190096861dd9727e99100d80d6028780c48a01e6359a7fe677639082de7ac612d78f080b09029be4dbc2514a2334caca7bee31fe9c1cc9de12d01f4254fc2b91415edb389d77d6ea169e401ad382b849fb16d6af39c2ec9e55c5b0d860f1a7f7261afd60013088058a5367ff0961004f025a736a7ae686f274231266167c1d55546630f76ee8524bc83c3b0cfba4488412b5fbdf3df6e4c00fccb647b431bab5683e77f1cf67a60032fd3e61de4d20a3506e6bed15fd4fa3bb373189821c40938e0725362ac1a481c87cf0d791a33b96d1ae180e5caf1cc38d3b580cc71ffab30772807ef332b9255966798d1b947f83ac6104764d008dadb85300600301baa67c662db60b2c0e0ac92763dc9f062b253ff3f2b5c000f920748d8cb59e8bee55376604607c4e44bcc97fe15f80ca737200b6daafc0e9fef0e43f9b583f71243505277c8a5da02d7ca03b55a8108ae5105736ac6d11826bf1bb855d95f2d6fdfd84c663b5fd3b8a08a6a479db7d6a635fce42a5f4314d32ead2304eba5a9550992821155799a919d7882a77fbb03c6db3c8f0abc9b63a39b5167a33b43df915a3ae66142bae115007491691bc1c14425b9cb211217e1186e5dfa24f5775b0c3588841640816542d2ba3bed940716aba0db96adfd29324115dc3238f50f28a38be79caa02e499476e4a0ad2b4fe34dc9fd38cfc2f40bc5ac7bed40e0c2cdd276e26b2a88786ea03b71e1bd4f7b2318800361d96e579bd3874a4370ef2f19e5cbaaf5711ef82752b6fbc1e885194e5990d7c8c4203a66a75229884d07ef10e85e14f7eb4507ef41c8870311ec98c3bd330f533d38be3b27f17f037e7a71e063cb058ab21f95c88509e756f40356a89ee93f0ff0cb2ea520d023896dfd4c36240e3899cce93f1b9a98161f61980b19a7765aead6ec42c134d7c80df7398865fc563b03b44268c2faedd68942141e91ec3ddb24fff34a072cf66498982ffc31ece485d798b1b33215f88bd012e220a50039dcfa3a39c81e4c2939f4f45e05d82917c0d56cb58660940f6e15252268a2e22e145c72c4424d2e3cb64200d7928d78252ae84be1fcfac7710cfaf66d48f27a14fee37d11462704f2de00c60e9d6fe6ca6c295a3a6bbd36295a63c055030c1cfb17010611e8097106e90d1fc9a18f0578d201a1134c05049d0b5d388245d27512530d94ca6dce1a7f2950f4062803105e2eacc77d20ffd1cb382ec122cdb2c457615a2a676e3ac855ba8de657c736dede6280a3a130694c934acaaaf797e7e797e6ddc321c7d6af4b7919bdf12ca1c18778856f544805ad72d8c516b6e26a4cb1b345bdfbc918fc7dc678dcbc3726f478bef3b3034eca85ed85cfe1ce1d64b60355764cfaa92b429a6e0cd4d8f0ef825aa950b509bcf3731a6178423b6ae3888da6ed0276a0c341ffc80ba284e0216c11d80ec0c399ca5b0e575aba9deb7085c7af4c76dc1c7de76661097a60b47f2ad2c797b3f4f14c496b78bea126ff376972164b84d00fd16f6ba321b9311451e394cfd4589cd55078451606aac247a0e626506118201078534150ce929651003d79ec6aa04b656153931abbf7e881a89e99a6ba910d552a25afc1a512e028575aacadb0e306954ac6c47aaa4575d2b93e1e642b8c61dd12b9f33fddca78c11d71f3f8c8bc433a0c9ff79a842bdef3c7278618b040f9e9258fd3be7b772be913badda8ed6c73a643318b025fce89b66e35e4056e1408a4010cee0da84738bdd74a16bd95e610a838f0f3317b87179441413c0db78da5514b33cb411c4b341cab521f472b821b109a45acd0d5c004efc921b731df759b50bd496195971dd8a06b5a76a9a3d8d16ebc977aaa78d303d01854e0c5451d0d000a6279104ad6f958259304a3d0f6468b103891468f37785a689abb6e4827b6c9f904b91b4bc7e430af5fed513454170308a349421727f02c2eb42832458386706935d01aaf21fc99b724fca52487d967fe216f9f80a215aece0ff054fe97db6c955711f1af4a0a7da68f0755a45ad6bbde1d846741d268542c61a6c6ace0c108a8c99e64d5f63b3b53a4f1cbee3d046237994cf574ec10409f4ba0b22dc3d6b8adc89e10f4b93004793f02f4a1d4dda596d36a180d966649ef18ee44b5bf25d68eaa58ecf814a8244c1380143ac20d8b476c5a94aa2236a34d5ab9fcd7e56482bab80a39de4006412db7636404134338867aa69d917418587655f8a0c63dbc4ebd8b5f64286260cc0bdc2c881ba606f084dd80f6f0f2f912253e0f8f6d3df28b04f42d0028013916cec277fdbb739d09a4101561508a466d7b746f5bb831ccf899c26d1b3560e24c2b69130187ef612250f25908653fe1e0ba4d79e99572089689336af5fa6902dd04143648e346a55b5e847d7c68e82782af8e9d4798074495891a330726f8f6df9c5be71c326c962fd3a628790e24c45f51de9327455eb7189ce68daa60346863d50e100af18a25bd8d2e3ce7decd3bf9fc5a2bd8b5467a1b597784cd68af68917429ca0dc8a655261094a637b798e39d6d7790d49dc82a88352c7b6137191ef0244404f2602c5952a2bed992ef01b094c25720a5c7eb7970d81105a55298b650b6dd8a7807a8de7313398b477b219f25a11c47ab363c99cc9fdd34789780daf9cca65a79f9b7cf113744e334d73058959e4f6a3dd4b85f86193769d24662a48162c69371e51d8d9512e013dfad596c5ae6627e6022796d0ddbc11254d0ea804c64090a6c156c3d0bae38e785f54bab48fc810a21d4aa855d2686a67da48dd8ddaab0437a32277bb72946d8d9a7d3573abc8141693a09a2aa4eeeca3a68cde322ee21d4b8c4563087f185354e515e1f7adc104af9d5022a9f80edefbe1d4788699759773a1846c772e1685c222bab40614e6ae13c372999f350376d05841300c01687902905ea70bc1c8b246b013e186108543312133f552d2121d04ea438b4267f67542cf3c321674651de49ea477a1913087bbc0216ce450cf30c433cb2519a8f18cd36d04e3cd605b0e59507c0b8b711051af5c01b75b032d0461fb3e8caa678fdd73af1951dcc33832930f57b8d86e4d57db18f233b1ca87036bbbf8834a8a45b152fd7c31d24a0189a063c63133d1adea2549e642f98860a244b00a33fe6197bed630ed7847f7b9f924787d0a760723ab69552ab3dc30e6064623b30a5c48eb0575864b1322c8baab9df06c8a2412eef4719dccb6adec5e4b172f76081f71b069e7eeae3d4a5351585b48d0e0978202458a83bf0884293724d6b88944fb22e008204f7ac11d2f80c7611b8a92c418589678645d8cf6ab8166a51eb34754b190ef4eb3b6d8fb25859871786cad29fad5c83c234ae67ee27e6a4454075b47ed8020da811af32ac7406e0cd77f50a1650bb45515a9405d0e2f295c820e86726b87e21a9562c34e39c60090e4a7fbbc9984620d4db31603cf34ec994af65f198cb1a267fed3cdff085984a5c511042ba7b5b7b300f06eb682e473db295ef4dbc15b659f41bccbcca6c8e3d1d7b6afe8a3e30aea5b901367ca15235d210e29664102413a56d98d3a6b02213f7074991aa5b225d85a3920181a8da85a687398ae316590cc9a41a3c7a093727e5d03393171948d4ae0a6fc9f57dc10ef77597501fe59e88cb4289a39d055caf9de7d76e2bf4201e5774236e3b79d98a6be8f0df8f1bf0ab23a0fced081e34411a0d5441d26a7e92122c8762934829e27b4bc11d52ae3cc8148f96d5a651f18d741dc27b20d96d9ac4c08cc5b002e004fa16511485c060164d1dbe37086b42e01b7977fb551cb0e9ea1e60b3351512a88483a5352d9df4465c8b9e5c039bb3c18bf664c41eaab10928393d4ff9790627965c0930148e8819db2d7a4bfb23dc76e3efb5ba70e538fa4149bb002ed44c3b6c3f40bdf44707d38edda9de21da689864ab6718fb1b001244a8f2787e1fb1a7c8a7fbc5179b7be7875d1193f5c0addb59e9242815ea765e7d6bcf065316651fe302831a5f6b0c4e364502d64a87b16d2ae1f66e00ad9af89c7f13b728a406f4df7a7d48bc471d97600200d57a14f13e7dddeae04a9d36d0c73771adda6d1a03184c87d2342840186c568da09c15cdc8eece5cb675fb1ec648f8f5369611ac82bdb30a6e55f7d255a443a9db92eae88a67838e5be0479f39de3c97676c78fbbee08be59ef35e07c9aa9b7046e12a1d04bbf21b8307dac3e1638dea2d52b75470406f293d4016f6471541dedf6b94e169ac1cf050de5d90cf83ba80695e0767d4a7726ac68eb0c4460027a9cf7caaeca5aebc2a884010bf36a0ed38da5c9b42fe45b1e550f08b32addc0d3273fbc9282456d8c471575f56ea3db03c799098fa1db1688a3cdfd771ca68375550b9c67d06fb4936bba54c9f196d1480b9498dbdfa9ea4174c8a0733e48e5ada21990767b56d8d121c22355c1c0131f06429fc40d7a3ad9bd7c843507de306b14050c98c0f283b7b94ecf28ebd5f61fea1893aa4ad90d4a985c73c2d752d52588d5a5ca629c98aecd112b4431be0aed855e99d1a8c70a5f37b081cdf3921f2634e0106626e07b547006875f5eb1d10b094d6cdffe01448adbf8751117db287989a2bc013e07e9d098b7bcc7db7c92d178246541f42920ba0db0aa3a229a789cc92ee671f66e284ebd71ae6f1765428067ab2db2f5596d3b93f070042f28630c610ec44208f4a016b95dd4e830c02ed3a0cf3e3ef9fd1c2badd1f18400e025d03cba3fc7b4c5efa9780d627aed4797b42abd7851b92ac2743a444b7fa723cf235e8320d0646e80426c416c5f3db2531c6651e9c5afdf538a883484683f22406b6a03013a04a84b51c7a92901fd133852ff87076354c2c60bfa7f162318f48dc3b745951171f3c9340868b5ee7818d9270fe92713c2384c8f905fb47dc32b2986c1a2fdd2c49746723640dd1b59373c349b24028062a0835fea65b5e7ee1787e4cc4c8302d14657aea9b5ceabbe92ace59212de96aa406099c800114e4c34d273cd16ad5244878b2a5f7515a097fd9bbb36938c57b74d6f5f17ab8535861351bc47191bc0c16d54cdc1f865621a731a2b506ed8396aa2316c6268edd69efcbe100b3233290cd748a13acd1f5464e7671a051ef465143c0a5691cfc252a8ac52d14d099d5333ee110f97f4287b9305d9604fc4ad9ba34079be8a85686ae48097fcc0145f411f57e7ebe5a666b69c2bddba7d33b666ab685bfd6be1286472a03f283bede08437565b83be7cac8f7c46494faa79a6d30e9c7a71821f05742170bce745edca0f0ddbee8a44650c839169a3facde555b65040d944a9c9b8c48c5bc780b171739591e112ff1ef1a4c73640d54b9de054cc0f7007c916edecc22f654a63b3d5ff70a2b2a49ac5351e1357dd4dfc1bf9a210525cc67606158074e3a7b0314c3b25c4561dc5e4c13a5af6b39c5735424ffabe346b85e1a11d8653d5d15aca462e7ae8a1590431f22ce9e63dbac50bc6b45ab2cd44a16f3524339de170c330837007e10dc190188915bb29398e15accdcd60d8538c1d82426aee87d44132663483be2374b8d282745c1034673ecb8dd63587c276073037273494c8f5813559e02747c4d253e1d8256795991125e4eb3503e67db5eeb4252b622d2af0a9f9913cc989fcc35e5788c073d0af1ba29dc1d1748c50aec929123b6d8c2aa26b91310df4f1f034b048c92a4178080dfc86d730f9e7f533b5e01bdb71313a6e6ffb2e62f19259a07de791ef42c5915acc33a1152d9e7ce43273ab7bdd9aa041801ae7bb1e6f9ba3a11a07661b9b1b652f136ed8ec53a25cdcdb8c889e847c56d75947fcae3f05ca6f959a66dce623e5b663caf493b03d8a60838e00a2f25a67d68a1b8ec477f02471e8cf3895a35e18f7c9308eea0e6ae31c548b72bc4286b4029cbf8544ba14cce9c6171a7a9e814c7be5d4a8479a822926bad190a3376d942bf6c5795abdbae0794bb1e19b14d678b28dc338fbfa7d53ef02e99ce1b31f981c75ea69b45a8c8734d0f2567dbfe6dec86313b48f40b3bbb0b023811ac4f4f2ca3ae892083a23e58d88a42a84c2462ed7ceedb647752718f272ed2d229012ec58fc30f820c06b1d488d6bd8ac23d082151e96b07e0f450bd8ff4d18e3dbb04dd171ae5ed2be379b119ca4f84ab98fdec3d73c41f520d05a8996b8dd10b92d8a86a88db004f67ee614f312d13d8edfceae65d3ef460357a73a76d185d3ae9150e1080bc0358f382f8c3a68adcf1aa4329d14cd638c9ed766d8a3370ac79df98830f82e0479c838e037841d9c37188c36df4d7bd1b0a633ccc09b61186f77688455ad7728f63b5cc013b6af437085339706dcb92975c4dd6987de6d7f120e09f0ae924efbf73a74eedab1b6196c7e05bbe9d303279dcf4758b2246bf565213c879116e32e131bffaa2f73746caaf3504eb3bb09327c655b92ad5e9d7fb0c3ec3f9848db8479206e92b1d321ad0064738d575ab3ad2e7ca6744eda427b543b024d96535c9673743a4708e29fb82edbc96900260e7bcc6c44220a5060b5a8d44f9ebd2914bc691c8d62d58dc6ec987e9644f14055a0676ec8d19addcb5b1930151773cb2d4ea830c0de46e703f42d353d4a70aebdae1a4dcdf968e62f5cc885b68a9975bae0136dd05a35b2bd1a3ff4be82622ff78220deb39f7cc8a632be88faeac1f166f150cf98c4d849dd1e401dcf58d72e2488af9e78e1de571db0be19059cf3b8ee330f3d192e89529a9dceb93359bdb149accd04c1d02d78081ea2626c87628cdc571250ba9fc69b4d3724de28ed0662d4a3e1720294363df84b605d42e9a49df2720966e5a40bd3e5f491ae4131a043eb26d6cbf871e5907f931f37c02524792fc606cac168cc9b207953e8d764789124682acccafe11a8002aca74649e7c15ab6739950de19243bc635578e11ece7c9d13996d80fda97a907635ba0c881dd56de114f191fa4db92b814f54fe23870ece168a5e0cda70e1cf07d227f93bbebc39b30fef1f1c46ac72b271174a64ce82a4cd94fedf9b06f6e28e1306c49d395837a2cb23a2f20c2e88ccc8ac213e9d3d3ce61a8609276c15dae7498a126ec76272c4b07c3f12f35a28164f834d483398f014cf9db080a228d7e8232656730a39aade31e097977bf74c40316791e6ca2566d4a58dfc84bcfc5d7343d90b060258623f1b90dcc1e9e97a3aa2179fc1093f526b9178e1624ff2bb46c8291cfc8181db73a3a785279b7c4107daa9634f7127f5ee106ab31a7fdc80d54217a218cef70dc87efbc50e8ad8dd50507fadf2a79d4d3982ac3f8cc6eb05e7ce2711d733626dd75fc57b722ddc49228bf86ea9a089d60422ed29d641c57d0802165cde28349040b6d09f1b27936e58adcddb5b9ceb81f65c4b1e7e0747fbaa981b68b0884c892d20e93310faac8a0e9fca0699fd2537d019e612ee7ad677d9532568c2345148299ffe71f3e1bd42eed5118e84b3b363b1272537ebf984ca97195bbc08daa4231da36c1b941017c2a94672b0d9b97893814ea76de5105473185b8877f1efbab184183954f2548d73ef2489a8e0112f9b8043dc6568a1854620fcbbcf5ccb72b8309a3767b8faa6113b230583ef07725fb1b1fe959e3f104b25549c86bba48c492b0da99e632bd45c3fe7cd31c22136ca825b6b5acb803d2ff762e3b5763ed68a9b39664f9d4c83f57d486ecb3f61c6ef5823cd6eaabc7a9523f94b17477fa704ecf09bbdb4b563e0ab684fbaf642764d48651a3a1ed065ff84ac11d32486fdb5cc5fe14a0fc000e7fd0ad61171c48b6c33394d7a668999602152eca6d94ca60850a1be970e73ac9a49b0194e2e403cd83ef06951da143e1a0bb175168c6402e9191fc5008bc3935d6c027c4f43ff689462a4286ada31ca7c5e17c7ba6ae1be14a26a3b2511c7e36df32d309001d206162315b0164e3b20bb049097c788f7747dedd8366bb6cb1f0cdd50bf4044ac560663f02cd1de226bc279d1be6d0a1bb7b26441e698732bbd68c13c5432cc6886208e5827b21a6b6524c11663b1abd4c2f3fb2810bf98eda605a3a18590104c8f7f71b11b9fb1ec304b817ff81eef27e4ddf3282f6a822a3da7cbdb81b334c392f06a61c9ae7f2f1224a91375d698d15a26a4c129531144105131acbc1e018ac428ff793b5c8c8d53a29f74c468f6592ebd6759ac6ffd0878ca61d1f60fe486278a3296702a28497ad3211a9dd49eb14ea06faf222a75d88f160de46a67c008c4db6363d8c8ffd4bebcd27d837f827ba92149a5f12b249b088607c9ede3b9491aaacde575c2b456a254e3c04d2c49e55266c5556f4869526f36c019202140b8c92ab1516f76e5e055bb303ab85a8ef4a971d23e36abf1524d6a83c25f21db8f05f080bb712b6edcab9ea51fa59da14dfdf8aa2270f14c9e8fdff48e370929020fcb3d280b06e806c35990f3bc4ed820cd48700962739b03d915f0d51b33896071973058ae61fd560f878ee4e651327786ef200bdadb89a36971a856ff0b19b04ddf81af31081f093f3d43aef4071370a82786258acfe412b5908890a050bbf112a8c9e923105787c751520d407e9628b808464844d5f60a0b4d1c7ca018add301866d89225e027452838b5fadc6948a89a45e403f72d27d26b9339c6ec131e47e90b1715ee378c8079a16d4e87278e3a26c797965718cc00bfe96306d710e63ad3eedf25e9519fe02a434cb73be9ec954fc0b97d102a2250ed5f20022147a55ae18996ef53d3fb3d3dd104054c74c9209a3da757ecbe324e9d18fe36e40993c3c4d73942b155a7a50c31ac3f10ec3402a66fece7f70c348ed40187919df31adba68ff5ff9d1ef15ee95be6a7ceafba0e312378d6deff73c3c2a65415ffce61f2973d51ea9424a7376c9e2223231b62ace5d0e1a71f72970b3ac1a8d42e6face3cc8498e7123cc6757442b886a9fdd93977caecd59bdc0275abc6d90bed5194184a93f25dc4f7e300ad94c95f4260244a71d2d818723f71e56cdd69c53b9d8af42530d1a66ead22ebd2f4fcd2b8af76bf717ee8ae1144f8067d1d3ea8f1e99a65db514cdf3f2b8ed1019bf683eef6dc1dbc0419be24f5ef18d55ca6a422709747c25c58c7e5f57bda40aa8f914d10aa2faa9f00a1a042cd106d3362d90bdcb8cabdeaf1d671b14fb94ad102d361243b0b6aacbcc51371118c4f781c173fb9039f7ae3eb09af69f04d0fce4b76625890b52e1f15782eeae4a27cf69f6ae8f0cd67eb4bc4746ad6386e118f2c8ac373507a6c0d1e9fa23e661d5619a9999b43ff0bdcea7a551e99498f15de4b52c696716ca0bcb05653c62878d348257fda3971b997f6462e84b81e08a1500630da473dd5a616fa5b2aa1193e38d697f0c11bd75d90ff73bc6861547e7c366b3e60e63a86f4d562326d54be4762a047d321c00ca3a936474382d0a811c0f458d9bbfe391f69fea592935a0e6690aff1d11a88969f0240054ec8e7c2e1e14c672bde1bb19190ccf8f8b4f3cc23171525618f8496f2efeadcf63fd06e6b502d75c7f160f56bdea3a51ac7467003a6ace2530abb196ee9608e51d5d84189e76df772346f4a70089fe1f9e398359e04c2f1c65e800f2380730deb55bb55856e2225b5491ffb90278acac4ad5eb01045579114ad1b16ed7c94cfb4ee4f091040e121000345bd35c10abf3d9dd61f0e37422c384ab463b10a78aa1f393ce10e9e6854fd56395546506e9004c874fed9e402733f00f1f7c6079d807fc9cb259d133bce7ea62c8157ccecd3f3c2c1572faece81de8d142fb1007b028cd75a1d1d2c48b6646cda32870cb4c9374426dc5e5b6a019204cda78974c8df801c0a87b2d2b36c9853cef3ff6ddd95ad9e64b9e469fcef5389c9583174b835084283222cfe09ebe11959947e1af528c080fcd5116200568b3d9ca0b0016c8f0cb70862faa4928ecd1ce71d2d8bbc71b9efc42c57dd3c0bfea340c27e4bc096c22e617a1050dd4df8184a4591912865a17cd3c1b6aa88b59566514c4e14fd20cacf7e378cb4d84b0897727fc27988df20464636ceec62477e3d64b59b2dfbfa2ee09986aea297770090b39bd142c168408f8156628acee2e1dd3017609f4afeb170212f27657e5379bf25c7c131256e6d0901182f1be831ac4c2dcc18f8ea45819c720c2cc744e0367234dc798ec5de0688c8f0c62231c191826a07321834ce870d2088b04e202a0248fcbd6531e49854813102fddce2b2c372280674a87a95a39af03a994062549660a40baaba97750e47ebd41e448351bf5708fee87f8c931e5154969426049aabce22af41c38d5cbd8af95939bec753b0a331b21242d615e457eaf2c45b9b5cabc0f1669680c1a648cff8ce4b06387487bf453d030630f31f9c59460bcecfa5895b18eac85e2644a6f7d9af3b1a3009fd9c3c741312104a4b62df399080faa519a6c3fac4440c695f09c4b6550de70bc64cb68e99261d9a9768354816941ab0833df7de9dcdee1c865daa45212e9dcd91fde635fda46d7bebcc33821fab7180cb50a6a1e7e2be9245505b46aee443c7e9d09b13437bc290ae32fe2d55b30f8bf2ddc5efab2c0529a333d8196c4573e3cac222f05f72a3db594cb32ad4a4fdcbf65091f7fd002a5f8e90f01132ea48fc37cc050857268dad04a9eae717a00344eb489e439cfe436f2445c657097f0a0ef01285872ed1967f43431b0e95270a453d99ef07ed618becbec42635451a734db366cbb8610dba4d29a5357b9f2a9629bb3a5eb4c3b09d400062626191488d09d875542fa36e432029f948027c653f5d77d866d5b78fb2a8db0508a59b3326660785e13cee4e089cc2792b6bdb75c1a898a185717b8652d858646071d0e686d5fd0ccd1a14bab5748a08d477bb7c4c933d131c87d88a3f54899e58cca3ca0598476a592837389cde91a030f597332a7e8dbe9fafc305250ce36a97353c8d0ca2245e459bb0c0e547926db00e670a373e2d073dd16a827358bfc517e94abcb863119a32e098dd95c5529f763605913fc805f8fb906bb54f702c3d958106626714730831c06459adae533cb8f598123eab72e7d7185626d2cfc1aa56751283f5113d55a0ac9419477d39d56e2dd299086c29c91b20e65d57284c281199d836c4ae0135cb588ac755469018431740dbb0bf2fb68b852924007546b45783d483558489f35c86ba72c63d5141a172574abb20e8b2f6ca81d6a6a1949369913ce0371127b21e488f03bb504b72949c34693c9e964158a2a07e60a7e16a09bd32aa30df3e4f6e836cf95d6a1c4c7c595d36628297e6cd531e07a16bca9977e2ee0d7117064982240e7daf5ae692549952d9c6bb83d943a06b9e8c2fff25be910baa5e9dbdc8f8789b4513841fa03c60dc0f5147ea9534774d5a92edf18906352091a000f8774e07942dceb83332e05a7a7682e922bfc06538e4a3d4b46021f932c2836d41514ae8405307822200a18885723715adf3b9140d9fd346a3a0ad402488275a2cc95a9fda3534ec5adb566743fffe9e56306ba1a1cc0de003f12d8a02e0bed3bebf8504e6d985ec2c06a46e36a828f80b086c68381f733d5074f44091a40617ee530053b3137b09f41b195d9b46af2ee698805bc59afe290a2993b8adb38f320b15713c94fad23a9443c7c47558295a77e0259906ce7d125c9174bb6e353341944b5b37199722cf5dea7d1c801435a03c96d5eea1cefe1df0b3007d2985a4e28193a02a1621367767844bd21ce41b0e460e41e6e1c562dfd004520a0947324a96b3b71292e511d16d1394293279fe779a8e356de35c235ef9970885da3fc24ef5ca7ae0c93fe69b49fdae7abcab650e6a2d3cf850b3a5d90804adda49cb7367302b9a261d60f81f4c2ff641b73b9b27bc8e6c1b5b8d65a9b9b963e89a24a32db6e38d5af75b8a8c64e570e215d6156ff5b151a88b2344cf0a1f5c76374edb8194daf18fbb932d7ad29d6bd0e77effd0d78d6d125f8b2819212258fb4bd39b695f33f99ac9724fdc96a6aa2d0413495ec2ae4ff2d521f9991671135edda326a6f618fd3e602a3e7053af58b5ce53c348694fe28e02a1736992afa642662871c181a4d32030c3a49309331525bab020bc849b798e63573c403c7202d969261be510770e254e720ba7a7fa170382c2cd2fe6b610310d23827d41f7b212be21ea823b8aa82ce43bce4753aa0c3d636974aa8d14025796d4d239403d340cb68454b2bb67e7c8619f27ac8cb4312506b24fde563874c140c0a330fb5c53b40391e7ce98bc61d293782e5e6870aabcb1dd6fecfec0bb9edb3a499573100ba59d252dbe9d15a8ff6e4bcb62f3b5302282d7d307d55cae7cd8a1bf0cfa8cc56b2b1a70a0172b789fc93ee5c269c4dee9ba76a18c659f2a8c8423ea9441fcd4bd6efea1dea379a53fa5bbb41a7370d883b09d9d44871c48752e00f6c426d1b8e3667b4999951f41dc0c0fe10ec189655589bc90e4518c32203f646c32b9654979c11b5104fac8c53f7d466581c0496d51f21b10ae55bac4d4c5289bb8fb8c3048dc449fa593dd8b2b2adf13aa4dab078128b5ab7206dd8aa15e91134abb870caca622c8f67c0145fe2e4645da5c4e7431ad92126b58fa2e505496326e8ab5c8d111065940e6c42d9f20083c1d2b2283768a3ece03704d58ead0b384d226e908943b9dd0331c12dc4af929bc05e9173c2a322b89da06c8284043852c197ece80df292813702da08c621d0847d528e725708da508ea636478a9b520b37ff9cf8ce40fd08fa10b2bcbb6e0287155750a28c162b5703b05c8ee63161e1d503fec5c222ee83bd307ddaad99563fc41eeaede22cbec37375e5659cd5934486c598e9022d8bffcd4a4c2517bd8d03bc623c9e6bcdcc50c08040c7548a8596612deed5cd347c8cee86a45f08036780d988d24d82be50b0eec4f013a0d4e34f789c26d5a9538008b0e7da3a45daa5c212e44baa9c985612df8a119543697fb918c776d7527739e07bd44353af4b1609c65baf70221f3acc698ae0d22b511215d10b45d80d5a746205896b7c30fa47daac35d0842f0fe7d1dec0084026678e1280f8628b4e19d84380728743de0e3010bd565be2e705e4dbd5487038e1c00c3d351e84e41ea45450506d43e4537b4cc6c8bf7e1b761a254fcb207e009395c9386c1d822dcc64ae566d7d4b3c844358e0f5450a6310a1255c9c5ea262fe85e92dd86140cff0257c1220cedb940f4803ef131f68249759d987a88578c50e8662fa000d6d2947418757b22e6d1917c50c6e865e2cffa2d3ef3ed2dd789a3e01c39db0c173af6947939123cb6c52c96d9466e8288b52b9c141b144f6c7c386a4b12c6d7ad864d31976239f1618b8c9f433312bb1c1625b8651039fe90dce30cbd59a3c357918825766d32f4b42e4220b5003591b58cb46a60b6777f2b96f785fe33b7eff14e5a6b7dad1dd0c427c1356f40c2f0f0265dd11b23182678083365ff4bffced2359d914e8d51ce96a50adcb62a8057e6c80b458b0ec580de0bfc787430ba67b3ccfbf444b8aa1e938892cd04762c4dc584648a6d768f955816085d6fd59d51ac0f34152e4f339660b5abdb92f2fa677fbd5b9089ce5025e4705780d3540b2a4d001fffffffffffffffff10bb6b56f5bc398f6779252121f4011100029a594644a49b7634f2384347be6c30ed701f61dcc6eba0d720d840d29f1c3fa541891c22c3a5782faf78cc268ea747a1df927dec54561ec5cf2257bdecb431b0a5365abea526e41ecb8a0305589bb94b27ec2b0714a38258c77ce583d61cef06d93e453a92dd64e9804f5ebf47327588c9213a6f1946f55abda1fca4d98744be53135299a30fe45f77ca28ebf2865c2289aa1dd56bd64f120260c57a22bb5bda8caf612e6f8f3f8f1c6b38479af4bd40e72e92334ae844990b74ee1bdc294dd39be8ccb0106258c9b6d15aeed4ab4f02761bccf52f2ad490b354ac27839e88f7a3a140953bfff277f9343c24a732a9794921e61baf8ef383eba5b593bc2e87b494ab9432d7db68d3087e7a94aabe6959e32c2544968c7316d2ec2947d3d74aba528c29ca3b3264a459cbe60220c63a1e99ff99e93d821c2dca604dbd75ff1ebea10e6cb0d0b3539e82e693284f9722ccb755408b327219eb4c80c9d0b228449d32eb527d9a33f3e83309ca5093adaf1b7945a1026419b1d08f37e7ab3701ee5aa840161501f6ebd4768a788f20f55e866c50fa63779532d4b4e312fec83a973affb5eca41d73a3e984d1036e2addf457503630fa6bc5bb2e88bfc534fa207938cbded0a25092d11ca83d1bc93f88e2ab94a52e3c16049d61e9543ed4979ef6010a14adb7ab21447b77630c8fc284b36c2fe24d13a9874e9303a3da96cabd3c15c9fa4d06bd2391884a9f91c34dee2369483c92d78e55c627c2aa993011871309e92ebc34419ad3df91f30e0600e66233eccef9aa04fde60b0987752fba7091f4fdc60d0d99270f992e807316983c95490665fc2c64519b1c168793c76f49253a7d1d7604e2bb5bb4c570d59abc194e6c74ddeea34984cd2d7af353667d24583c96ccf4595944ba7dc33984b2ee9c9e49b48dfcd608ea34c38a1e73218549dc969fad1e4c9940ce6b6ed6c82e755e52ac780f2103a6d45e753e1dcf13c100c31982a4d7d36d1b2546d09c3295868b1a482c060be33956a4988bdaff705f3eaea090b7a64cfc80b765217f3bc6aa591e12240c159008c2e184ebfec5d0993ebfc840ba6daed351d6bb1e2996cc16c32722aaa52bce0bd168ca2d465a5fe290b66df0beb3ffbb2249eb06012d9492c09427405730e96b5e469499e74dc0a26134fab8b76defa9c57c194a753660966395dcb54305cf88b67a299b095dd29184446ae8e961229184fac739357b4fc9c44c15c2aa80b2d527d946c42c1ecdadf27e7d93a87e509e6cdd1c9b4c5bb95b0134cd254da9346c71345db045376f2b071255bcc624c3009eb93a3ed971cd30a8c2598aaa4e8e97cae2ba5fcc66e000c259872d74ac679569d98de58eb51c6183672e0f01ebfa3ac026024c1a43f0927c73bcb762909124ca289225edec5dd9424308e6052c25fa85ef7efe0231680610493dcb9564b427e92d7a408e6944ca896989508e6926d948c9374babb09c610ae8626600821b9b47bacd1356a1d184130ff999c62e53c4af2ca830104e3f8f5d88616592273905f18a45ab749f94c5eb5c90620be5832407a613a4078f1783a3955a82465582a7380ec02cb0c4074c1e34072d103105cf027fdf2fb9aca192803051b38018d5b4c01c416061d27e5d4124a0e7e23482dcc2d3a599033c1e3665000a185715f4c559e096416463f49bed457255998363c458fce9fe5e22716c614a9163d86b03029b5f2797341ddd2fd0a73c7113af62b0be20a539274334f8a0926ee09d20ab3f5e76895779a3a1b082b8c278eccf23be13eda9e026415a6710d291b4229f92b5b4054915859e3beccc65080a4c2542ad7a735d992ddad9e004185e9a28a9d897b49e4d8ab09905318d4a8dddbd21e88294c55822cffd373fc0c7a0520a5307bb07b6bf1101b404861524a70d151617a4caf2a001985b9934e3a3a4dbe7c97beb166021051ec000985399e14552bfb2ef23b8f1b3b6cccc00f9a084e200211d4ed18630c840108284cbae327b984d255a647209f30ed5c5ed8bc1c3e209e488e26a629d549766f08a4132649ef356dd72d29317b018413e6143b27d3278f093ea64d18949cad0fa7e468c23c17ffb5529e09f978264c25f7564ad4ed92c4121386edd52b91156497be5cc264525c5cc8cb6e92d459025daaba3157c294ba7dea62682094305f69f1ecb1a4d03909f3003209939f1c36ac4aec943b4512a6ea4b79b94a96ef072361f05f1b4b7eb214b4010412a61059a925483779fff3089310172f5c7bec0873c98f9d3c624b4b6e1b613239cb5992a4e5263610461834ae3b2949e90d208b30081d4b52bac932fa9254d0c3c5d8408d1a39be470f172301518429c935a1df652a3a5762dbf13c102411e6d11e13232688309da78fa3213e84c1cb920af12486306d8eaca42a4c0a61722b15f7e45066a93d21cca1b27a92b3e518f1a74118e4f285f6bc936c464910c6d162493ecf53204c41875b9b782ad9e512208c57a2afe5ac4ba644e80f0613bc3ce754aa673ac80f269d2a7f95de376aa33e98c2db45d4cc9bd705f1611db155f28588f660de4e298ea5ebfaa4213d9854b585690fa1c4d74f1e0c73a763aae9cfe5ebe0c1a446d625a5e3c949a3be832974b4769ab09cbb653b98b3a5ace54ffa5f2b5c0783992a494c2f475b121d4c7225975a84e718a23918dfee7214bf2fad1e9583f1b4ceff9aad71305fcabb65df7192d0493898a2c99d2b5a491e4a9d6f30b928414fb997e85052dc60909e4cf4df4a4e7a963618742c29ce8d929476ded82801c206a38fb610536bebfc700d26ed26cea72a0b213a6a30aaee29fd2ba64cded3606a9551493049dac9ead060dcfc285a529d29f9ab3398ca946c2735b7c4cb8e190c1eacc2a7d2d93ad9cb60ac5ce1dfe494c960ee3db1decb321040c660ca3531aa645f103198d46c97a9a81e4818acba54d5b595556b3fb89a507a4fc74b090308180c6a6ae28c502727db9bca1140be60f4cbf34928f354eb1c102f0800a40b0900e1820d1a205bc8c00340b4c043012059e0810507805c810688154040aa9000102a243a74ec20630a608048a1870e1d3b0e0012051b1f205028902788218667c0090c006902131a00b2041d490e1c3674908219204a789443470e1c645ce0518e0f902480018284109023848018e101204520c20c90212400440836140012041e08000182db50c0c72f06f0e10b037cf482001fbc08c0c72e6c30e0431705f8c8850d037ce0c2f423d3bf7a27c3c72daef0610b83f2ba125f497d899e26630c1e1e48c18eaf85f1f5572e98553e6861902e1ef6c26f3776165763656112fcb284beae7fcdfcb58c8f5898ce4bd0bbb38d1e3a74ec4041d911bcc0860d3e60614ac99424a3972a3e5c1fafb01a1fae30ed9c18a344e59724be5698949cffe2674c12438937d66ce47eb0c21c177aab4ab2e8c72a4c391ef665ffe46bbeaa3067650bd73e93c38c8c078e3152819e93dd5289961c4a5fd4d151294287d13e4e6136d1a5b52a8425778f021fa6308f7eb9eadd15e525e7a314a6708b1f5af90729acc6c7284ad9f2535b62e66c1fa2309fa0eee9ca3c7be75a67f0110a50688dfdf884270e6f3f76395d9da02c373e3aa11f9c281f9b3089ca76d2d3a5114b8ac38726f62313e5031366fdbd934b98aad2aa3b6b084b0b5bc2a0e46feba0274f7d52258c7926a8bcdc594a18748777301d968f4918ab45aee7cbc9f53cfc90842959a50b25bcc73539c7487c44c2945643cfa5782c397a34327089f88084c9b6a39db6f41afa253ec228264ccc4f9555b496eef0e108835659ead01bdab624c9a103470fff688441e911de71c6932741e7c69a8d3a4698ace63d8f2ef5497273112641c9273ce67a5011a6903a5f42c9fbd1f427110695bab25f6ace870f4418eb4f2fc69da90bafaae1e31086933e791a69a1a495b10f1f86305e52cba3c3a80f9f1c38c6d8f13d3ea1f1d8f1098f1ca8056b25f928c47d10c294d35bb812f241e9f8f91884614568f9dc65166fa29f7c08c2981dbf94a83462137c04c294f27234f177ff82995648f800c4b1e0e30fe6123dc77d53fa4fc592878e12dce88183051f7e307af810ef8f2bbb27ed8329971495b32df49a32f1c1147c4ccd08b114474e78f0b107c38997d387e7949f29de581e3978642003f1a1878f3c986491cfaf19b2434fac88e0030fa615b7e826fcff710773ea3fbf15b5d6692e36f4d2871d8c996972bed393c3ca2dc1471dcc71f9246174e67e45863ee8701f7318c2871ccc9f6352d8b6eb093795d131f8888349dc4fbc7ca7d28e9272cae0f10107f3c72875276743073b7adc0a3ede60d20f23bef4fcac3d7963cd868e1e6e309a9c3a3294cee9b88172f8efa8147cb4c1a4a5aef3e5cc7bf86083419a2497b67bcbc3c71a4c2a84b5f5cf9f563d21e2430d06b3f897543cb57eab36b6101f69309e6cda841691e2594283f1921e65e2856c8b9ec1706da21e4b30570b99c130dba1592925298379549e9cac4bc8603e4f9eb404751a8349c7d524494926e8ca9218cc71674f8538416130c7987a875ebb3c29028349ee63c549c2a53249773b09e3b9170cda93305a499ce8dc77c120d497ccac5f5235622e9846bbbe9238fd29d6bc05733e95a3bee4303b226bc1e4d1e4741f72164c523c31d1e629b574160bc6f32ac9d2299566fc2b18df3b6b5cde8b0f4a5630a80eb976825905b395698a124fa582397b0c37d97da760d87b1fdd35c23d4e520a26d1ac5ab5b4c51fa58c82d9f33db6faaf586809055350712a442cfcb9954f3049ffbd4fb56eb24d8a134cf76195df6f4444079b604afda324212dfb24139960aa189693f5dca7d1e1124c2a96b2ca1129c19866e555662705934c82b15294695fd2db9e3a2498bba433f1925f922b7b045366a8b0265ad6aef83082d17e37c793de383ba52218455f8cb7942682495fecb0f0243ca5b90cc12827a7fadf400e1d38787c04b9890c155441e40806a5ccc553a9931354224630c696cef82925558ee779a8800a224530fec792f3f649627f92f304112218c4245144c7faf067619121184d9e3c4b27d5897637d1b1638c31768c3106ee18630c24630c1e384484603c3155d5ab640491201853aceecd336f7345224030c807d31efffc17264f5682b6dfcb512dc8ac10e20b734815393a7f8276aaad17a620c483a699ce1042786152d2c97db17927d427d98539445c49ad22f34ff87561b0f06df94246b93049d2e9ed4961840b9375c8ecc7c687399d5b98e5d5e49475dcdc93c716a6141b9664d10ae9b6d7c2f42194b6dc595a9804211e75e56f845d7c16c6f80eb9e127e779902c4c3257e93d2d9cda1d0bd3c908136669f57f6b58982ce49fe64951dfec57182cea6ae59ccc3354ec0ab36ac9322b697bdea415a6205f747a8c5052fe6585d9d447a534ab1e63afc254ca24e9a14dd80ba6aac2acbf9ebd7a2df97c5261cc6fd1269d2475e7890a739d7d50ff923d2829e514a6b81acd4f41e993e53385e174473df5b9f2abb352984385d0eba2a4d5d8a430a8ae93a4cad36f5e1985b944fe89513d25fd138529ec966827987bcead4242618ea997a4ded15da5e4a03095d5c99f9338c294ca9f309bfd69c9f14b9e309feaac2ea3e17aa6945108e98429c674f6bab3248acaa3460d278470c2245828dd9337b6c4ec37614eb997e49cfed384d1bcb6e4acbc9eeea14c182b4deebd19f5139b61a250b394dbeaebaed5e24d3e39e94fa673d9f24b9844975826bc8409a7fb0e4b18e4098f313a3ab858c4b8c1c3c65905422a61ca6e2a3f57c9e3410951c2b059f962ec9d52a765c8244c1e57743ef9b308254b121b3a7ad8a8410e1c3b6ef04049984d4e52faf46afa9a5b48240cd716b4c8c70a2f93e21048989358133c65cfa9bc4798f3b56a89895a7727bfc32e10e208835d2caf34dfeb31e61ce048bec3868e1e668d30aa8efd09f5c1cce4aca3477920841186b94fd6351e316cf0781e3870d003c7b90341c822cc9e82a5be2094c92771cc0047b231c6efb071031c098d3310a20873ae1ceb703995a6dfd8710305356af4c071b2092189302955d2e7c61a8a51c618c502218830a551b9354abff2f77463cd0f61aa13fb8437cfdd583b65f0600d841882dbaa7615b174af14db9956299d3091ea21f231ca0b420a610a27c54a3649cadbaed8084208618e9e2ea629e973ca40c112420661529d4d4f700bfab45b0461ccedd85e1d5ef9afb44348200c9ebe7df71d456abe80308925459e597d2ad9e47860063830a07208f983c9a46b5ad0b9c7ea8242fc601a75a3334ddefa60ac359572921adae753068f53060accee10c20793cc0fa7e4242539ce0007066ad4a85123a50b708f1c38ca98018eb33d72e098018e63638c3272d41c42f66030a92f8c2c755bd7a51b8b830cb7812378818d1a217a488ea2a3a8d44ac91523c914928746c80759513989736faccd4087187842f080cf767c6f75842009b9835ead9582d699a6897af9a84fa237167de43398818e1090a16304356acc408718b8a30719186207a35e874adbb0ee24092600ce10520793befd9ae5a052d7e484d061d7d8ae2097cd522a73d5dc38513167427e1732075328e9e44aba0425c5936743881c4c4adba850b13c7bb437240e06556fe1543485c0c17c92fa1b137452d9a3cf2d84bcc15cdac36e2749d9e58e8d71833f1e62e0e851467e20c40d262568d3b97f64e367e740481bb24be9d2d6325e3c9cf470a9350f6183292dec8a902f3f9f4543c81a0c269afa7eaad86f9c216a3089de419b987ae12ec72169309c9c7d2ceae91313a3103418ff8236bb0f2fd3150e3983a9bec5ec457bd05aa21b083183312bc545585d52553ba40c86f730ea2e77475cb6c970a56476f672b6316baa5a5727bf87c918ccb9969de47ca37443d56230996b890ff19313de1be30661309c944bb253c543c060cc927d54c7eb902f984d6d9a927349b7e4242f187405351d4c382596490321a40bc63f39a55b6a4585eb2b08215c30e8b89c9effd2ddb5b660ba742ab24adc580be60e5b9f62594e8fe74016cc1d4a6c2741c9ae0f42b060d2bba282be65e70a1e1d845cc19ca4fc10e39d94080fad608e2b2989d68e711921553007b7ec5a4aed49c92c2a9842d794aa36410e9982a9f2677f4fec3549c9de58bb0e918229891e6d942abd3677af7248140ea16b4cd2414bf983102898f3c9ba635f79f26afe04732c95e966ca4fca563ac17c92d039dfeaf620a40986b5efcf7ea3c428130e61824965e4ba9b9b541526cc849025183f9bcab9dd949a10a204b3960ebd57ca3fcae564124292604e51cdc3f57dcb7f4a414208124ce3ebd1d2496916eb7404e38a326567e6fe77c9102318b344d3c96453e60e428a602e25d98dde85f606214430a878d6aad8b735494286e082102198c367beab3a1f120453e88b9ccfb2d5a8110204931277537efe2f7c509af10be3c9e7d49fba5bf2e38319be30e5f592d372a15b61722f0c2766980a4be2acf8c88b439c6d6996a4e48519bb304992785264846d091de9c2d4a63ed4fcf98805612e8cbf72e6a9634dbc5fb830892c0bca4d98b8974fb7308e99e949bb92b9d0b105565651cdb4cb5bbb4fa713dbb6b5a4b5309fc93b42558f9266fb19b4308f36e9b3def2b3309e8ff8fa536ae23d240bd325d7ba5127170bd329119646bd4db0ec616112ad51ad2f772929d12bccf796fd4dc683a789cf7085495e8b96f4cc78a82f67b4c2b89d242bcfd0f954a7cc608529d8891e55526cd71767acc2ec29d3435ac98987384315e660295494dcc8bda09e910a93ea136d278887c70c549824c1a40e259e745adf5318c4052d37b32ae1d6c41426e95c543476548a465298ff2c9520ea5492a7f651183ce89a9ca7989c5e1785c93b283129cd1e0a838ccc4f339f5eff61509852ae9243a87d5736d14f98ac4eeae94d53b5a27ac268528e71cb7ee92fd34e985cebaa2f7e4e98dec5e3ad5e92af6fc2947392c3ca095254aa0993de5ad77f4a7ba566268c97eca43d9522a2530a264c1fda65fd45496fd14b18a4e958b59fa643a7d012c64f296575964f6357c23c631d54a85814ed1f254c9fafdd72bda410694dc254a166edb28c674b9224618ead9454fa1d35302312266fb3fee441a974a20812c692f4c81abd4ab225d3064e40c308331e613abf60d287895b42f7331c61d0bdbd1ef6ab198d30072d79e24d8f85da7906230c1e53b6df947da8f02fa2cdace0ad95dddbe2c3438a30892e93dc3b37bdf349228cdf63b29638c91988305f9be8a52f2bece83fe310c6f35462e5c9e7d93e2581198630cb6e87124b30f19f930a6150aad9218441438ab48fa963a2c2397694d1e377d8c891d8188387e3c0860d1d3d1007610a27f7891adbdfe9f33c70dcf1d010cc1084b92ba778493aed74e21e88932ce7e1a27289154098a4e8d68ecbfa8d7aecd0c1830cff1b3ce30f7a87a925598daba0d6a12ac47e2c133fc7634719e8776c0766f8c1f4d7ba25c71cd393f73e184fdb25a51fe741e5123e18849e204f4bfa8a265bf6608e399a7fbbeb0ebd0cccd083e9faa38e9ccdaccc370fa651253b5aec931b6b5781197830ccbb59987896ec5a740763db7912b5aab3e37bf470326cd4c07fc72936c30e2653829cac77611d4c5aaa3af49e1245ac840e061d84892546e5122f7e73307b3cd5bd9de4e5604eb352e9962f5682280e26b9147c33f3878329765d50279756382d7a8351ace4bcd896d4dc931b4c2594d695dffd2739b5c128eaacab547bd4ed2036984b892997f13f419ae81a4ca20893c48c5129a9cad56012ecb3a4fe782d356f1acc1ff2b6ddc4f770528d06e347d315754b8af60a3a8351dde39307edd47a9bc1249452f24e127e8290953218e60439b6fddaf9322683494bee12eb8432a54d670c266d1d79354a2806b3e927f7d1633989f5c3605cfb9f8fd9c160b81ce55e2f9690e3d12f18b6465aee8dcada227ac1a0e59249dad93b65d505730aed1c27270fea4b8e0ba6dc1dfb77a4098bb3b660b22445cbee6f96e79816cc66ef15fba1679d735948f835cd1b4fb1603e5154da51f55b399818987105638797cee55acdb002eabbf7cc9b510583aed0ddee14f1302a37b6ac47f0021b109841854a4b5249906b924cc11462e394e0a3978229c8557cb6e80ac2fe2898d5cfb2e5dc43c160ea74575490a52df404f3dec5bb7a8e3f6a768261446d98ae606a8249d2a66c7c4b4c30eaa82016b7bef63f4b308959a54e4d6de8b791120c6327c5e6b8e9eb1825c1943ce8d18aee41824952fa743dde7977e74748c538933dec6f04739811f27e42f89d5704737f2569d48cd5a55413c11ca7c2c5b7bc8e121e82e1e388f84ef79e845208e6bdb55125f4fcedc841300972f9cfca9d0104c38d14255d924f8af01726d9fa395f8af72996d417a6adb9ed0b4ad90b737a9bb7e8382f4c727c894bb29fe57a1726afae70327b3e4c5d98c4fae031ffa29dca5c184ed79592565f5fafc48559942426f8cbb996dcc2f0c1a4fb7082e90956b18529799870829ab77c7e2d4cb2e244f729b9ec4f5a184e4af94cff67db509985d9448fae9d7df1f54e16e61ae9268732e17d668b85a9a4db89f0e81ede8585f954b80b93eb29642b305e6132c94dc427b73af9bf2b4cf152cbfefbc7f834b5c2bcb57696c77350525ec16085e9d7e694a44f470760acc23cbaabbdba249352d937004315a639793dea8b5912553518a930a55f73b54f8ddbcfa3c21cb5e36a684b716bfd53187ddf4c7fe8084b3199c2ec25a92525d5a81426a5ad077890ff0c06f9329544d156ba644cc30cc656377962a92a40a30c4635a5446430a73abd6db1944a3c293606b39cae8b7b165d0fd0108329892e87c1744978a5a4c44a4a925437d6c060fe249d7b1a7dbf60bad077528fca4440c30be651c2c356c87756732d0534ba60b8cffd695d4bd226ae3cb860324f69646bfd76b66e0b664b7a743829951262272ca0a105f3c5eddca7fe0dd0c882c97ff36bdb52e32cc382f1f2486f933a49e6ad5dc19c4d52afa1b3da9f7b2b983c7da731213754f41315d0a882c1e3b3c89e92152c7824a0410573fcb67bd70ee2008d2998c6b52aed52895741de011a5230d979dd8953390a463f49f6379dff72927f634ded0434a060b6fa13949d7d885fd546c144e309e63877eeb9aebab186e7021a4e306c5825614a7f9ebf58096834c1a4cbf3a88fda11716226984e88cf2679af29c1d314e080c612cc9f04cf27a593276d49de586b2598e7abf29fd48ced30792436f4669003c70c66a0438cd581c306198646126820e14040e308348cb07756da127b35bb141b72a3a4f1b8fc0ed328020d22183fdf54283d1fa391020ee800033c78780974706ad4f0028d21983dc64b9a93b409a74e3892a4980736b0011e8e831a351e79b2e3c84043080625eecae9e441fa888b46104c69b19552a83cbaa7a20104838956dae6474818f985f1e4d5b8c99dd582a7cf17e693da0439315ddadaf5c21c222abb39232c59ef85115e18945c8249a12af3724a19d985b9728cbfda25db1297115db0e555596e5436363f8b9db49c915c9863cfc4537b27e99f0c1d88c706467061bcd3229fbdee95fe740b734e71334cba6cf18c7ceb3939dbb5e84ad32da9a5e5ec92cb76c9fa4be4470b9390f996c29850b926340b5398bb934f27a9d62a3f2be6e336120ba349e166435e29293ab261b030a824e8efdca9ad7cb4af302825eb569e666ee514208cb8c27492b4a32c750e2695a5468ddf61c37e5b614e7296fdf8fa9f691f5698f3a7c96a31427da6bc0a739da47de3ba5585415879c5dce594efcf0723a9306c89fac9d95fe791d0e70f46506114cfbdd770d3c8290c1e4b3fa8d25d26b4b6a630e76b5c7f509260a268474a61f2a4339457d7da8c7763ed060fbfc1c9830747608414e6f83a2789d9cbfae38f8cc2689e7478bcbefa67c78411519824215aea7f2f5f9a748881821a3578f4d021060fb69150182e9c1e9d93bad2747d041446ad3c29652bebafef239f309f681d4cf956ed69c81356b250ad4e338fb9e8b171eff93af2d409c3a7597213d4b4b1bea30c1fe184f9778476fc5c82986e8023a1069aafcb264c41763e95eef728fb719c1d5f821a239a306bb85e4ecb505e629d09538e92aee54c3a95e39830e7cd8753579ffd737909936cc9730e8d1356cd6309b3a791f9f8609672722b61aa2aeb11fb929f4f901286514b71256cfea50d4dc2d8a64a9ba04bbc50e293446f29a7c65d4a96f34dba7ce2e94a1c45c2243c6aa53ca257ba3dcbc208244ca2bd4ef8ca758d1af808d37e8ae8b816840e4adb23d1c1a3d88823b4d2aab2af720ff154cb2eb1a7cb522561234c72cc2dc92f43e5f0e38d35d5bccf816306394c33c2d416eafcdf469650f3cc34cf6ff0d0f31b3c16610e639de73aa89ce485cb1461bad365728ecbe7e2dddbd8a1c32c11464f6aa2a3e8a03f5c9535461061be6d137db633f59383bfb163e410c6cb497838155b62fe6b1c238630bf8932ab2ccf327146cb315208e399b66e98fdb707e58d35a691020ef89fa0c68d1142984afcc742c9d25e730dc2749230b325ede9fd242b88c6d27b7c7c97c97cade95e2f29dec28130c893c4924a4bda3779da71f6e90061728d17934d059131068e1a3574e018f983fa41fb60354630c207739c6f69ab1cf765fa913d18bc9260ba84d0aeac123d18f4eeba054f1dea679fa5913c189470dfa9b445d9abcdc6d7c0c7c8113c58592e7d5db8cbd632b76cf597f32d8c83913b98f2a9e0881d4c3a87efa4362be891fe481d4ce5e7733a9bd418ad47e860f0cf9671825b4c9304c78dcc2147e4902371b01a70b01af80673b25469fae4511fcd75834949af16d1c11b698339e873b92b49ec92e491049f8304236c3028efdb6df513b573b8650d264996b29ce450ba7b6c158ca8c16073213dd5c9a142ee693075540f0de5299f14e41134183c2dbbc9f092a48cc53d719224c90c469fb124dee5b06eee8d94c19caba5eee4bca33aa7113268f27217edea2eb5a27c66c8107941eabb3cc60e1d1b1863878e840c1da4600c4631213cad89b94f9e1483a94d44e91fdd4818cc5d82ca41ab3d8bb66e040ce6371543cfc36b3246be60f63d1d74962cf28241c7cd4aa924a5b52177c11c429b96eb9179af8d0ba6ef51ed1169da242dd982398a6de753421a8c68c134e7f9d1a1e3a418235930f5986dfa9607a1dbcf1a8c60c1d8ab6a822c152708d56eace1b0d18347193b6cf0c0c13681912b984d9d3a1d3ca7681f4c46ac80bc24855ae74953dac148154c4268787b12253718a18239c8c7d5b39cb64f1b38f81c6a18189982b9e746c75bb2d33aa91b3dbc04e5460f27a3e8a0c7951129f42966c9e52bda76b8d6090fab6e25b3f6f012d4a871a38793712351309f2599e172e627d7c98edf81235030fdeac82e418a55dd36f204939c4c31617e1b718249e5f615253a6e82a9242d6ae3d9a4c9e9c204635ca48f85dc469660d6d02776ceead33a6d440989bd56d6aa4e4d8fcfb9a4d1ff4812cc7f5f9faa4bb828e723c19cae72ccd361612e85473007d18b75f256ecaa366204acc41b932298ccc447abe4e508114ce24556aa094ac99fea2198a45c62a3d3736c181182f9bc823e79ed5464ff2341c0b2adc6d6bbbabc9657302957d6126da2d68a610408e61cde5b74fdfd8539a718536ba9cdc7c222be306de656e8a9981d2ebcb1d60b838e92eca437d975827fbc30e9aa0b5b413b5c4f3dbc1819629c007761b6f4922fd79774297e74f4d0b1838c26438c136004447461544f4b415ecef01b594792c3036639709021c68e24438c1d388217d840915c183fcb6aada3657f93c4c56eefb95f59e794dce2f4d49d2c5f6c8165ef0e953579e6b93baa7efa8ca016c691a5b3c8c5504b35a28531e4a6a792f1248a8c6661d072dba383a8a03ac76561b693ae935e3ba5597d07446261deb730567d7e97d3596a1d808539f33b54f744b572d02b8c799f532f75ce4631cd53414911577461a5f65ef2ddeed1bc4fc58b132a47a41526ed2977a9e7e01e2b2b4c82925e76f7be1a35500f22ab309d76be931f7925414415069d963bc593cbd244482415a6ffdf3951ed458551b49b52495ecb294c265adaaf2839e74fa3290ceb969f52182dc607f1a133294c63e974b8594922cb1c85d9c7a4127ffefa2d37511847c927fdb2240985792fce09254bc88a7c41b15a555aae8e8d8fb3b2bc9d3de2e527eabc9e04f9dfb8800e0ed415443c6192a266dded73f544bb6c41a413c6331dd729372e8870c278f221f66411d21bdc264ca6335eb7440765394713a66fd1e9e6439909a3f78e597d1b68114c98c4ef72278bfd495e1c0e229730855072e2becf2296309698d1bfd9d153d89c746480fb20520963c54e4f9313f34419eb0e2294309d249ecaacbc56c68d830c6711884cc2a8a694a5947cb62f2d0953c917956c5c2e7d2e45c2b49f43cb460811a33d90e0dc2d63debd46b6c47dad53b55f59f9112633b99258a663e7a4898823cc7261cc4618d6e43c9f3d39b9d9758c3049b66527e82551bdccc6de8e3232c0e37be80003511059844105a1e2ff98a4ed3f9f434411e7ac9743ae97fc513d1e2289e8bd4dec2b97678ab5e866af8ad0668208ab718730f6dda52e659efa7c64089324093a9e242b5f08d37c2e5975d23d9af82184b1166d3eab54d4b2c5de3aff93fbe4032283308b0c8bbd64498230688e2ad5a14bce6f2e1208a35dc7f5cdebef0061f2be926f1ea795a3ffc1a43c4776caedf767727e30d92755a29da944fa606cf78e9feb469434713e182ca7bb7cd212d983295deaccbecefa2a6de9c14aaa3e68c854240fa6fa54b94a585b93a48b0783dc0bbe3d5a8adcc1204cd2b814848a53f28902227630ca8a0eff69e5cb7a5407c38f9e2d299d68f2ca721c10a183419909f927492a1b1a6340640ec63f6572d8aad41fe61491835994c58e72fa54f258ca41240e0639666571ed6e3aff6110818339881f25e442dbee787783bbc1bdc11cfab96aa1233d89e906c39c3e99676983d9e67efb332b99ecef79f88bf127c082081bcc9de3959f5b670d06534a4fea09b7a759aac19c93d0295fa87d7055d360d026c8f8bc278506d3055926f5c6adc70b9fc819cc69626db227e66e948898c1a097fc522d28cb393e653099b076caab845d6e9b0c0619db3bf9971d83d994249ba0bec4e7909a188c76da7492c2d322613075eaaf0b1764603085aefa171b1152f7f305a3271d8f97a4aca23f7b21efb075cb769993f44bcdde28f91d04225d30d7d58f678810139d8f41840bc6fc2877828e15d36c16d98261f47f3cb1e4350d225a30a9a953da229205a3be7f2ab922ec820816cc2a265fd4dcd20719ba8279e33b5ee5e458c11c3c9620be4b97b00e4920520553e99e79ff5d2d934354305b9c5d3849124ec1a0e3cca5db3993df573b178848c1f49927e99cfdd2a97447c19ccce3e9a4b38a29f5426177fbb064a665a536172b56a8d0a1741a91c813cc2d5f92189117269638e1d82a3912698239776e7599896e0b6f1b449860f850c279f8a02ddebb4b30e524dc224a30b57ca7b9b3f2245d9124984489cc3861fe723281208204b3a87c3c49ebf524346c582d4c9ba52aa75fecd388dc10062d8c596a4acfe7a68650771dc298856144ae8ea9ed64a19ee92e1db7e337c8e1811a35de10462ccc974328b7fe0d25ab9b03c71943073a53838549656d9b13aa654c52393e84f18af404b951339fe70fc2708539e79444e5e793305a61f527a98435556287c18ac5dd3aacca2b6a57f48e8b23f6f1d13b498a11c62ab492cb84779c2413862a4c52b8d027ea86d2a2fe305261103a4c67dee7fa7e17062acca5a37eadd3a7302829bf9f7f7ca630a5d111ad1a571bc22885b1920a1a9794967c7a93c29c838ec70af993ffa55198f564e5a072a5c3108549f053eaa67f0c2314d7f98650635d020a83b0d4c93ae9a99c583e61924a8d56b39342ec444f98829827615794246ebc303a618ee1b66b324e9c30efed795aeccd0979d984494f27cb79da74504b189aa82b2579f176ab924b0b1b6e5e9ff279f89d9c303261f2924f104a6c35d14a30612c3d1f2eeccea6e52f6196f59c3a7ba6ea8925cc5725947779effea912e6346a3a5fce28611a9325cfb488a7d29984493639e6eca41349983eac9485394992739d44c2fc4199da901db7724e206190fe67e9744cf9cbc923ccf17330a1219f4c701347184b4a7259f0ac31214d1a61123142697e4593469a30c2fcd15d47bd8b300893a3ca4851f7a02ac2a49e6e59c28f865e1261d267ca53362955fa88085372f520e2dd3c68951cc228e31633c647b79518c25c9fe24964575fea0b610cd32aaf3617264e08a35c3a4f5afec72f6910668b153523e27b51240853f276114ba64eac1308e305d1b9ded39f38028439c53b394396707298ff600e97efb33fa255b27ef89334963e182d37abf2727c302549d217f7c47e0f26e9a1abe3e97052d05e0f465339e82489fea92cfb3c182d3d44255d31d4588f07f38d7eb4b0d81d0cde71975bc27e88df0ea6924bbc5ce9fae7fd3a98df93451325db634a74305b29d5494aa9949bd01ccc719414dd27941c4d2407c3897a7551511ccc79f5279524faaa1e3818ec4edcc475c9b29c371854e75ce26cee0673f053c14227e9cdee3698e48e9b172f5c2c6e36984a298bcfb6d31acc59af2fe7453daa9cd460b0ec1346cca7891da73460c2683007b16ebe6af5f5ee198c5e72d2394dc6c76bcd60b0f5b9132d17bdd3321844fcd5e460b3224d3218e7f4a4faf565d39631983a5c4ef29525f758c460fc0d69c22d29392786c1543aca772531d24b0706b3c76b655125eea9a52f985d3ce889a39b7559f282490e21fa74aab6ca922e98a4cd0a73d9c48e2f174cc9635344b65c9e690b86f38adf5615544a495a409de8ee9a05e38792f358aeb44e8205a389e79f9328ba8239e56862c473ac6012fe4f4f89bc0a668f5b4a8ea7a682b1524d271dc7763e5330fbf8db7d8a366d592998c5d3e76ab5a43f6b144c82e7a81f2e4f5092a0603ed1764a12c4b9ad4f307b8ab9eff94e78319d602ebb2d61b293fabd0986af2077d9a4134ea530c17c71622c760c2dc198ee75dead21251845dec549a573873e092649dcca86a5a4173f128ceb412995fd70df1fc1942ae96c6d92a8b5232398d32739950a3a278c22984a12f51e73bb24f1396110c16826893825a98760ee7fbd5f13e4c91f0e4308069deb932dec87d61b46104c4995aa105fc2ddb26100c19c83ca6b4a9a2f2989fec2a46f525f98c652ccfbb8da4ec9d30bb37a299d67f1f4b23cbc3086beb7a811cf2e0ca63e259df13711ebe8c27cf3b77f2bf27a9d5c1845c8a7e4b1d26c775c9862632d89f72d4c9aa5d4cc254b96d2b630c6e7a756570be3554a635b332a68490b73509b73cb35152c380b73d8b13f25559267cbc29c4437555b6e36f3c5c2d49aa74c9475f71d16e6380ba24536e4e415e613439456da5c61b2d6134a66e5ad309bc925654f9253f494b3c26439f4b8dfe5ab3067cf729dfcf29d8e2a8c6ffa2eb786308d4f2a4cf153adfaeea8305e50927ed0f91426b5a5f719379644d914865371e34c2cbba0b3a530c99e9f0fb39e824e496110a224410956ff49a6a330a8f42e39a8957c384561dc4fb2e3eba42fd1120af3fcd596e5972ab1020a73103a8cff5c36252b9f30ed79798ec8d92ab1f684794c88d87d7b889175274ce339547346cd0973c712671a7f41b5ea4d18fc74892c512acd9f68c29ca48552b299e47727c9a6fba72e781e13a6b0dee627fe4b18d4eb7ff014adcd4f9630ef967b5f09250725a812464fbfd159974e1839254cd26fe5c666789d3d0973c97fbd1af1a7544512c6fde0a33efc8c0e1f47c2e049502b2da5d7f6624898d4b30831bdf811c6d1612f869b9635498e30657f8bb932a3e424a711c6b3d613fb7a17c008a3a7b4353bf76fafee028a7ee2a9224c51bb43d6aa324c4a228c224cc92bb1741d2d8830c553ee71eba4d4ee214cb7a6a42edf9c0ba221cc9d3fbad6250f27c34298a39e583a6b4708730a3a84ae12ff94d006614e62dae9a80bc2e0b926d42b5d87bb361026419955f2700208a368c9a8fcff0fa6249ba792fefbc1f895cf3ace59d21fd407d35bfe24a9bf891774f8601eab0eff497c0fe6e8265c8fd0e9b3ed7a30adf77930c6650d53225a45c583498b95c91ff61dbc8bbbb121b68359d6928cd2d6c1a072a786e9199137d2c124c8cab12ee21c0c4a0a152aa893b2574e0e2639e8fc499acbee9cc5c1a4cf47af6437e1663898b6a28b6ab9f40d0679720a2a36ccf62d758339bf8697faa90d26699d2556f468923ab1c124efe718ebfad429b406d3b7aec9cc7d5dfca8c168df7139a995ecc1930693fe8f50a29cfa31391acc66ca665e2de8fe7c06d308153dc99354f291cd60f6ab0aaf7d96c1e429948ea183aad5900ca61d132d8dc9d893e4c660d651d26c2c7ec5e9520ca62aa9cac46e1906e3099dc67292da6aae0483617f65949e756f9e7cc114a2e5a26893174cd7763a6f5f3c613c5d3086eafe8d1613cee7824954889c1c2b95fc6cc19c1e37d304ed6d612d1884e7f8c531490ea767c120a23ea7d152aa6363c1a81fac2cf57c05a38bc6f8996c0573d2501f3d7db554b60a2649848eda1bfb274a2a982bcfc9caa9ae2924aaa5f5119d2a5230ee28dd4e4187ebf6a360728d13144c2acea3a93e3dc1e0a726fdd76775c909c64f932ca9df84f282be6cf56182b194282dff49d4faf8124cfa7a9245df956050d7b8cb5532e3249872b7aae51a09662b194a72ff08e64ee153fbca46306a6be8202c82f1e40fd1415786e88508c6f76c4ae854b27ac32118c56ca4988add93178261ece33cbbc30504c194640bd1ffb9164ebf00209804fbbbd8293c44fbbf30e518174295245f984c459ce538ebb7a75e98f75369fc57a54c132f4ce9a925373a498209edc2a016cda4d27baf1fa40b53afe5938352ab278d72613cad12948d8d3469840b734ed993840a4b95d12d0ceabaaf938a6c610ab26e4fd837a115af854978b01cf2b28975d2c21cef848799182b55cfc2202f8593ed79730fcbc260c2d384a8dbb48fc6c224a8562aa904fd59262cccc1b3ac2c87e938bdc2944ccea5762d5f895c61b291f19a176c8549a52d4b631f2b4ca7be5b595b85294f864e9f6ad293ea5461d8cba573745c0bab2e15464f172ef24f50611eadd35756aa83ee4f81254f694268932950697f72a57f4a613a5339988ff01217278571aef285b38b9d4f3d0a53c9776a772dc9226a51187bf5e462b787ef180a93f290b22f23284c7d26736e4d66aff80993a02eb769b3f02f394f98d4db72fc07b3195d274c829df0d1d44db5799c30c93251720e2a5410d9268c1afaa498deaba6344d183ca59865c2d8bf5a6ac6c74a92324c183b2769825699a4e3b24ba4443db3843969bbb9d1f939d5a412a6f59f199d21f4a91c4a983f8ebeddfc68d9f54998f23baa9f863a21b724cc7994603b72240cf2ebb9ea84eafd1312c6fb16f9905731a4e511a6202cc955faf9dd838e30c5fcf2ecea5079bf4618675f4be52a3f2933c2a0dba7a6ccf35c5a4563112639a892e34937ddd38fd25084313cfbc8932e5c57cd4e84b15e3d87d1dbadcfcf8db56237e0a28108b3a88713672f4a1a8730d667cf1fa62e544f4aa6214ca26cc8acedf053512b83a05108a38f38fde1ada7367f0f14bb01eec061830c1ec56810c2787a4e58dca9136a263406618e93743a313a89204c7ae409ef9d944ed21208c356e80eaddc0eea7a1a80305a5ffae7c8f228bfd3f88329450ff7ef954a9a11bab186f73876f4287e30a570e2096741273987118d3e98f46d5cba5162e9f39b061f8c97e4c89699348d3d2428fd25e8de6634f460b0f1f438ddf38db531340fc6cad92d5eda97dca47724050f66bf7456a9ed4c6ffc1b6b6b7c07c3e93b5945998a0231c4c001821a3568d821e5c081831c650c80461d902d19cf10b5149e5ab72659926d5df2fc9b37f60234e86014592a8c5096f40951cec1a4e42445557eed9cefea91430ec68b3fa33533c684bddc586bc403c718250ea68ad5e176cc643e573898a3491d4adc92f0788329255f8f1e2f3a5b9a1b8c3296e4b838a3c2a7521b4c23aec4cf2ecafc09b1c1ec1eeda32825fa7c7ad760fc6026c9f6278ff094abc1a0a4514f5525efa4b86440230dc6383daa533cae87ba762ba08106e3a798e3f154158d29a8848d84a2e2d1502c140804e250300c46e44c00b31308002840200b4502a1583091a5750f1400035e2c1c3232202224221216181a8945825030100a03024100180c0804438140302c8488b3ee03dcd203e8a28f5b07f9e232179e3d11a1f2ab17633f73e78f264481b280998ce464d71bc2a02e4409d4bffc96c850dbb66d60a5d16eef308fe06d35a0f1e20a6638523d497ca80775664dc7e2a850150ac37af1c46e717c966a6d019c5d1cecbb8617f5a8b271145ffc33cb2c275d7ce25be3675ca3c2d8e83784bcbe4dfb39d1983edf6c87ed3ea096becacc8edea18c807314de358a040532471437999d0451ecbc1c4c5cae88e588fe407c5e4a154a2e6825bcf90eb22d16b6e6b37bda2325c06ed6a696efe9892889f7d075326c3782f26540c7acfc35ee1782e52eca968c15817b30ebc0b3b90ecd1a49eca7060e6d4633380b5f91aa96b8cc03b2de81cf6f909ed795c7384a43ad0720b34bb77e045f729e77d8ee3e9fa8a5f3194cc1db631a7d4b2291ca58d83bf0cb9cc3612333455be477978a7f85d5e8bfc1f14229152522211238911050acf278d55c88991e0fe70119b6023b4c063a499dee47ce3826c1c3e794913cc2ca150aa68c29d493ea8802f7c17afd7be14616899590955aa97f1b7d3fef47ee381ec183e7c3f2ceb45471570ea8866d567746f35b3b18356c4be0a744521765af58105624dae81ecaf6669a6b7cc40fddb13b8887f0584c2ca1165b834e5407f4457857fdff1813342ad0b3c596069c621f974c357bcaac6ddd1be11354777932c01626cb836a4890698a19a24476533cb2ec2e4c9719909783514bf6f29f6dcc2f9e125e641de7e3e80057ddf1d0eb4144c447101ab67f6165d690d2879189524aa58ff6c184aee942f13eb05984776886058cee0919fdb78663b0d3d3edb6c0729b0170826f15c6b0527dcc45e293c26ca224c2a26538279ed286bcc629838a8a222a065179c51ef69ec61b783b6fe86db940efec388d9cd051fa48d9f26592a4d7eebb7662d4468182db5185b38ebb6ee7013dbc0374b8269c20b8b078e80f33b524dc2d9cb2fb62ea803427738483433504be6e6ec1b1309289f470cb229317fb074f4f2de2081b0b49580c522a867658254e19520a8c6031ecb9a64feb730bee162eb250160a9aaf3917392ed30e6055686b68b8a840ea0e72a49c627264f042e445069256c5c4e3ebf7f1622c55ecfb7a580ca11871a6448d97c9b1b5e32282f2257f4297ecad3e5047fcd01d00b20f643ddca95cfbc7616852d8071a6709d2aa42d3a30feb6d2bdbcf887dc533fc94a72fa94e31c776812dc1b0ee214fc0ed56ddcf394542bcba84227b1653f007c59229fe3a264d451a015ab4486ee6b2ae36094045aa4f7ef12cf271305d17b9426111295f4830d6fdf42ab589e75a78c494c21717e0402a64a4b2aa5db30f0b437d8b5d1bf7d3d08a8ac73d408a3759a233ba1d21bb6febfb3adc898bf2861ed9213a846e8252f55ba5702d1bafc47ee00edf01348c08c8a9a43c5fae02a688e647933b1a362fc3c8afc2c6747a8a382eebf1e944378580a8884ef9ccd080457befa7e25eded1fb12a37fef80abe87f5f77f67edfa9cbfd2667581c2ec28ca2ec074881102033e6ed41d28c2adca30bf9853b828784d79a5baa4b3b6fd7513f7e87cfb04065479c4ebf2d64ef087da3ac397f0c5035f806782699d0623286f89621e17145531db8fecf17e9131cf993f90789e77756bd286d22985a239b3625ba6c1a9542085eceec01c80a09f7606cd47fa82506ee8c15eb651a1ecea48fb109cc9f52c3d07ddfe02193917432f7d4a01fdcc442d3e92dcb226560f543277ddf7a1fa1ad987dc8049928fd6f3afd1bc39b418b33eba626b82c8d85e2ba24b3b8181a158d46a190abe35c5d912bb1ebaa808033726a0173a727100fda850b6180cac1d40ce520b53e5a8356d702051dc92ec41b82d6360c87c7171631f551ab882154455b617105cd6c4e9dcde26c5e77d3732f4ea7f4c187b85ee12daf2752c931f8482a2f8da866a659c7316bbf14eb3a49396fb826026673abd0e5b7235f6dabc89b899e879e36cde6de4c3640b9f4f78aa31d6ade7f3b7a05d55a20b11d7b00a2e63f54ee39389b8a2740a1235f4d87666690f3ade8b6f95e7ff1ed6fe67fdbd57f681b0e77dcf9696774a0d331bc859407e4fb80d564643b099c8424016db2d1ea3147a7e50e8c406814f27a820ce4ca361abe86c3015fc53401908f2bf58e9b6c3681ecc18a8abd3be1ea4ba485a2acaa66f7d1db3c5c37a58d7fbd7dce68ba2f0c05ad4e73f6e428215bdf25b46170da7e5db601d21de805c3ab686ff332e0325cd244850f94536df963f2e92b3a56a742d35f84adeb9e1f755661d9c9734c44178b0af471eeb0be144fae44d8a8d3eb4cd364f765d37863656815dd97cd366a4d5b206468b16fa5b18cb19a2febc637d33b0b4d634f56cdb30dd9e723a1119b741addc3951bacf754a1b6d9fc0c52078c2a3a05746a3594c4cb859327ac929558248c58d9630e73efe6c69c6011f074898a5e24a9f4919546aab9210519741fa8c94a02cd1243053220cbc29c56344d838a15cb78f3a5c2b514119bd2a739a316b92c985c778ca2edd6f28eb8c76771255ebd95e578578953ac228b0cc3b86c780c3fece8315170e7f802f7cc8768253df6e6352b581827d2cc50459e73610ffef50ad786c6575b1e507963d401d14fc337e03b4e981dd4a06a14462aa2d0705bc0767ddd6bdc5cb577500dabded29b42f4911d99a93b67255cec397f158b7629ac24c2d273b78758dd719fb90a929b8f8fdff150e648f2b64967b33fd5ce1e5425f0a4c07674d1e96ea430375085fd2ae1dd76c5f90230170e99dbff0bef3e825fbc7e744e679044d17d1b0c3f2a0e71a9abf3dc7a33a930000bae718dcfccc954930e468cb0557894a648b7fb9ec4d44a79a096f8c4018b6e521fcd2534de1d694e26b92802e166c6b919823a1c8980bb6f9c0ca39b2611f38b52f1e9c0a08074ac374e1bab2dce10bc593834a18d48842a1c18863a7a1fa8eafcc7dc21b811f08ef8878c13aeaa3f147b4938db86b90fc4081c5c6f0e69e0bd00d70f2b0011b9d33cb108f56767142dd351e4c4a8a5bb9defd173e4bd3344a2022510090be38c0061419a5282118ab6be1ee14f5f304fc1e90f205632841c9dc71ad30bc789a75aff136caafa2af19d6e8d233a23b1be905060babe73df409a8c02f5567cbe1677f5335bb6abd1c8ac9e7077fd71b32e27520c449fa841d7034eb5af20e0702fd2611a08ae62ea8814e38ab125fafbb8af884a6380f8c3e1d74886872b897f9f6017da5f2e8d48867a859cc35cb0b96260ad466e9d11e48c8a12140b42e91f8c677b13bca8036017288b84cd7e8b72392ae8e958e1d245b00e52fb37f5fe01a1117311e4166d3e28cedbc8ef9400065399c15171fe2217aa86745f6ecf9e13bf3a34b4c739081438c2e6be57ebe89bdb4832895369b25444b78eaf8091c943a402637ed43c4730168a990c240868288c6084f764c66e01be40d00b631b34d695c340ce1d1c506d25fc6808824bf77a428fd510a625f5da579fe67d62dd9700d6a1bed7c78d834f73d272364a5e4a065a4650168c1571c90526ed6932e6abaaeea450b780d53d3f2d482530eb3c67663d2546e913c6e5b263816a9c6351ff00f6b69c469cc329b8144228099eeabee158733edd03b64a879516495500d1ad7b29b3e446a1478a9803799598bdc7c683220e8c4eacc699e0d34dd293b61795e825655c0cf69bca1149831e5092e51f41451dcfbcb84db4abeb02324d1ea8965a61863e86f97562f07f18e231c6856a8a9c37800b6e618d4c8285eb324c8f110bab02001abfe519c8a1b34b57154a461510a8d7def77a5348db9880a28591f094c71bad3d181668ebe64d0a62764b9f74b90c2a92c4e69425a190fed024c9bd02c6742be483aa877429e45994d3cc1109ba7de641ff5a844aabb8f3eede76c2e94dfc0890b3019089feacbf14312a385f954c4cd7cc03638e7ca5ece12ed059fafdaebb67f34608bfe62718152e9ed4e77076a2f7c77a6a086e0bf98d1ad971e0ea18f131e0fdb4343254e0b8942d668296e65e84ac03937bddf6c7e94fa0ad0300d11fe4ebbad3c5e94f7f4044ab7c95e6d7e6869b362934e1e9b7b0177d00e7e8ea252d109fd3cfee3afe8e8cf4fdb3b9aaf2eeb396656b93f9597ac199bfb11b6d09df9b2a28bed4b4d6edb75b3eff67bcb32c1a92dd221a67ec1737a1f5a9523415fc9eb585b1658a195793c52012a8bea663a8a6e1ed20cff4df92f73cdea53f902c98d5adb507e6421a83da63d332546c5d0d5808e650c517d332d06a50a103993e453f745a1d7d1a9ac92d4798e576756e86ab89b69019005cd5d98c632b59fe99a0b539c39e9a870d4b22433bf82f0dd7b0b9e596878e8cfa1de0c0b21ecab2ca8fe66cd29c1fe110c8fd586b01fae00721486ff579c258a6e6cc48afe58f236ef7eac7103f254c7d93c86776dfea36be60a621b9f2ffa3fc7fade072d9137836f2600a619573e0acf93e98d8f233d16853d3b52329d97ea411ce60fa890018176a10167a46390165a8c613ca14fa8412904f8c690b11500b20cd27c557ae796b9b5943a38942e509f49fd5f5a8247433ecc69056cc14c66291e880446da4f276be46af230ba99ab33062ff710a71fa024b85490318473cb22b68446fb6d9450a2031cd26788e3afa598d75ae4101eff88201cd5d4bd99f2325fb09bade88a3ef6e66ee8b228a4ffc2a6b496f4de888f5c1d1c154f2d1d6c7d9b74f42d47e317261ec504bc64192706d8e350660f50d3f9ef05be6481e487208264266d814ee45b24984de97a71e012343b01d3ebd719b8e508497f8419e7068850b5c6e290d093f68443a7f1d132d2de2b6ac22a1572c617a877d2eeaf86bac8f2c9a78ffd497ee18102ae9fe7ce1a6513cca64c8e1e7b0b513dfc5e327bf8e718a1a69910079c8823ad9c740998530aa8d4b0b71b8de11c39aad5f22a44bb16c7f2050593b53ea65bc9218393efd999cd3f0b23170682bed75947a1c5ace9cf359f25967a3234e6df2c0db99bb9b27cddc55ba6fef72fa74c256904d2a92cc1009073179022b34d74956ab0107c7456a4feaee6443547fdc9b635389f05773e7160f128d0570ca11ea4b7e71eac362800b5c3c052b3bc8edafea6588aa1ea574bcc9c03e84401e0c6c063bbc03fa48010f6d9ab54ff5be3f05e714ccdaa8442b97bdefe1e15a1707c500a3ef4ee6c2ccf6c3d7c1101c8f25e52a76a9f42b10c0fd20e11d3c5c45e352da983fa608a8f8322f13a0e19767bb0a66b7e4f018573c5b826f86d44610d51603893a6089e699a612efe76531b01db665f87fb06d557ebe52a2df22e09216ff25b5aa0af6adb801314993b91f5e673cd38316e70ac4866cf58784667c55453e6454cc3bf4012819241b0baef75eff07f451e41ed8642df551f12150e7e05395c5fa64d90eb5c4be6842cfa4e7e930a0ae9f8ac8d63a9a8831b0f65a439d1cafbf840200177b9fa308936fe7c318cb9eb9f7b031befa1f3fe5021e7b9573d26330f442a8c657a3b3524988bc9af2ba256928f3942e7a380259d27bf58ff53a5e5734f75f177dc979a85b62e8c47e289c9c054152d241f1a3a487aa38ea10517350b5cbb3f1a947c636e0040080ff318b98de2ed8eb19f99e33ed892af730486cc8560eeefb67939be6703f016b3e99dc4600a9eed7148ff95523f6cbc79cccd32296a9f0be17ac747d4d2a5d44f580c5b51ab3970583c366867b773755a74dc4655f5d686c6b6b852031acc7b484f59d2c46037fbbccbb8f4b94da61d915cef83d86ecf77c2e8f73ac0d678c9a1a10e2e2c6e2280c5032b30e99d47b1791846a2d9f70e083b6a3722339a674ccd71df3c70d93600748885c99d61ee677ccb0c4815b64246a074213b05a83645abb657a7f94d85a308d2918298d54d1b714538e853889f5db96581787f9908e72cdbb0d34db987ba5ac8a9cd0028bf5cd2dc9038f9b8391acd581cfc36052705f5e1349b0519282a22d5a3740da872de4de31c24c92c98a80d7dfc61679125268f4e9a21048e9c2351a574d37988420a91a67622fd402083fe8e2d8bfe6314bea923cb8215aea1044224d16f64bff21d45e9b6a0bf257b1560c64f0130177917ae8dde160c222be66f0fc80377328a7ea4b93064249a4f945be2d7b6b51cf30cde466910388727b72cfa51bcada7b184529230f8260e271e00ec867be419559ca44940e7d0cdc1eb1734e377264bcd93bfcea222bafbdff3c9d6bd78b097d67314201c037eeb34d974038f76da25b0d1886131ef95bbe098fce8e2462dc60690049b40d57193594aef4cc60e9b60eadfc36e756f91deb70c36bc8ce2907c820135f39730ecede17cf517dc597290d05e8376504368983dff62ab2a283d6bec770b8a526b488c0b40f9cacc35c5b61cb2f871802ead6f9df7675d883d5f9831a586b1d2ddf5475aea6ab8961d07424498f66ee4b33ec0ae52d1977a242a6c9b1574481727948665df7b8777a905b5532ddc01f22062cb049f34d59c0b893ccfa151aa6af5a3a1494ad91f9971f44a7235b8075cb3b212b038f9829bbd8a1e5b2fbd743cc2cea55f1bffbea710926ef972c257b211a42f41fcf70a2f20cb9413dcc47e1638524636b656557ba9ff40f3f9e9d4455304e8733a4c2c2d8ec2b27018aaa92d565491aa61b399ff9c921c2ddee52a23e77830051de7562b62589b88ef59b685909b8ab45229576bbece27c1022d77789e9434ba188041c60af8f5f4f28739454e9499f4c48b54f1bcbc6882fe2c76f640bc10015892116982956a88ed9880891581791437ab84d01ecacd7504f921c205139a904ff9859531d631ad72e8e00d049c3cafcf907c5a801b8a6f81fed4cfc422b5305a9079a4f6b2328742386ee75e10d099766938a8bb071cb2874b64417939d1a06185a2e2dcb705248d2b6fb4b96b968079dbc13b6614249eeeb661052d209cf250c62084115ddc6803ac4d01b31caa5181dd802ef4044e857093874fb2ff581107c86521dfd45243b4ef13ea3688c2cab09b4b30c27098badddd2063fe97245c03c590465dbf0dd799351aa01363d4e9bb7491aaae93401bab2e34c08cf3d9189690c3a5b4931662e09f9da3c9e880b0bc4179b3a54b8c2b532049cd378bd69048e7b35c6cd7eff2ef28c895f7e606fae4e3f9da3374ad4a566c76c0bd0141d6537e09cca16ccc14f4495cf77e0b9ad1abce0175bc50705e0be2d9d2ccd888978602f24c97a015a0014c50d6ce9f8794e828a663ce7e13dfc9c3f0d87390b199f8eb9388fc711a9a3c60ed793a517b9e67c8e5e3f3339ec394f55263dde24c98f9751f3b80784a4286624c9ad26520f2126dc0dd65cd26a0fd2dc5b51cd588dac555fa3699ac904f8f7215149ee5b9ce742008ddbedab1c64b0a1d0eb44353660fccf373b12e1d5188b06d1762e360a96b6356464c4c306c5bdd7113f78863bce7e45b039077688ede62e61f3e25191615536fb6bb67eec3ef0fdca85b65b1c76ce5d8466ff4445c1c94295a2ddb02a056fe8087948b1b6b6aff4f0bd219868491c5cc4f43f114051a0b17c351e436897ef8e564582d60d19d0f14832aa5e224058e3d3b6d9101e4d6a57f682c6ee1a8f9c4d01d654aa0825b415e34ede3a458478bdba250ac8633577d5669facc89686ef6d08decec88c19e2b9a76b41a7b1cf251adb2b44bc56242cede2fcb899f02caf302ac8054b21f78ded673bc9bc4daf4fd3842356aefe330b8012197c56dc622f767f10edb4e9dff629b1115786e41b4649774def35b26e12f54fbb9f21433b072b21d3cae2968c0b1cc09f401f6517f542a67ac8e14f97bef289aafb44b8d5d0bf069b019bb5733daf8f4bd6bc92ddeb101c757bb44f1322648d7988d23489c083082fea2228dccae39eab77b8f4c595be380f470b3540e492398cfa8500cb92af5ad024834a002b36ec83487edd980ff454c19405cd8eceb06fc7f24e81008e441032058aa32be54a038cbcdef6f079f1ed5b40497ce70185779131d26ff5a958b1a494d9fec126f5d17f210885bda757815a92379484b8fa6cf6d9ab1874a19096a92de255846d5d6d9d2b373cb502ef96ef97d10aba64f0230d06df0652e29637ee33f1ae568314db3de5a2e606bcb67653ca5dd0175ff424d6559218a84878a3e0e928223003b731409c5dea9e2e5011a841ce7b43111a0f495efb1d1c94dffd4647c930b3c8e8aebec2e30ad4e92de771235b0533acfc150cc07b54562c7d5bb28d61b6ab16747023686c7892b0cf70b7c3fd82c8cb709b568c0d05af0d37b90d1cd6c0c71ae6b8bb49d82a2dcc822767ba8a88a6dc886d0bcc07aca589508e0b87f0ace7495e60a17dc01154280b9b9c540244196d8f599453111d44610b8d95884856e810bc2b221086de62f06958c32b8ce98c4d66ae26586fbe749ed75859ba3a530147290231d9b0fba5d0828ab54bca7822748d0a1091e24484525246438a12a5a3e6e9e09a023589953fc89199d21b067b77699184dd6208f5dd42a514f67c4ab01f74da54afa94123193bdf3ddbf5245155b1d39a17e2c3654aec0e9f4381f873a8376e81cc982552affe0f6548c121933b3a3350af2057cd394e23a318740611fe58a15a99a76ab95b87b0d11d61765f57b87be80d247d42ae1623804a43d4e61899d2c647062a0c2059c0e27f02216b1d3a168a5394e5d0a0dfd13acbe1c8f2a2b7b7de21c4ae63c77e87a543a7036745c282a21c42cdf4796d9b6b6bb792b2459a4c4e29ac4343212ec0d5b13ed79691277d3f649600ffc198d6899d6008280a22d69184cc6606f0074f14590d1a314246202221942c651b93294f2da5da6384126a9475c0bec51539c81eeda1e17044c9afa3a8d0e1252ecc47be04031ea966d050e07332229140666254c14ede08aa3b212225a09d699c928d649b78855498a9eb06cee8409f3e8a10e6d12eef1c75745bfa564e686112c38d79327040a57240cb15d01a356e403e5d667385759844409a0e3ab5707e57c55368c625854c1da964c1ceaa77e42e5e10d3779034074589d8a6f36ba2f228821068524cbc367129b94c80bf59c777e5df8c3ae614c91624540f7afea097a5c6ec454dc59e89b6828588a391a715e37e34b9d033639e9932ed1c79db6fc5fe5ffd2d0f8498fb0663bb58da08e4221f8cdfc7089fe8311a9921c3075821b24e1b731dc09c7d86ab770fc6c86030471983ea80013c119de10f14c3f225b356c5bbeda3d5eb0e14882453094f0504b88b4bf8d01732e296c5e79b8a9ac1b9090863193789f4d08aea702ea227dcbea9f5c8d539fc35719bee64e75806ac3bff91ffd7d08fd1ba41b4222167b179a2b62af504602e99109fd67205ad95013db344b30de889b84357d1d7d49e3a0e7a38a4157f25dcd26ed4c1d29c67c9f2ad99b564ea9729db56cc2a6a9d32ec2eb8f82f4e3bece196328447df983627c55760dba3815a46969b2d442a67287b16ab145d2bee2bf2aa7a284953eca88ce3ce6b4b63b37fcd3a0ac14a714a59f8ecfb14717a1ccd0363af76368174d5993d06a1002520382f523b2f762534067ceae0a0763f623c283a0cbf0c63515cfeb3ad4f8288bf9bf93831d68e5ac1fec10bc187078cc3adbd291d08c389b785930f0f77f898da5de4d99a77d0449261014d2b32b8b80381e9e05e116ee0906b0d45872a5446bfe6c1d638f259e8c81ccbbd4c584ead2b1da00b46e1a8bb6763150d8aeaa0f898b01ef90cde9618a91a6d927391e35b5430b1df06364570bae87a04b99cf81fa2062144d4010f70793650c51910cc07b00b70be2003bae116316c0baf3c901b789141e613d643215e118021204790d101ea2bbf72090ea612670b1f86f1c490cfa88a2efa84c694d5b52b63523e3e97aaa548fa9ab88be57c8822776a77918db10b63438a906772efd7a2407334dbd2d578e03d43b99c2fd5cddd792ca7c1bff0e5d887d32223fe44aee1ee16633e718ac9da839ac4d278a57d1e7afc7f9069362b7a3a67d8542979e151d2a8b746cd9a872cfc52ec2f3299ac6674cafee362d68d71edf117cfb961e09e378c812bad2a846b819424a72e9bb96cd0d2376399a314886f43baddcc750210842bda6c6143990db43658ec36d31cc3aefaf54de97110b201dd1b6ee6e0c4817e9b19a78f864224bc6b1c6b5abfca05bb304f39963419b9b4b536b2516343d04e3f4e419a212a0021a6d72e07bb7a38bce812a4613b1682655d9f3fcfadd76e9f5b21317a0fe217c069e32b107e72338ad5d795193bb5f068a74a4d905f1790f0aa68102e10073db8f15f19f403864fba4d9c955e6c21a71e2da363941174a77a29c0e3cdf811b12d9566d26b68e304701145545d2f51bef8075c67050a0e2df3d2242d7ae8c874622bbff2cd3807d825697ea3cadb21b15042fe2ab3d8ecbed24bf9eb658c1bc36d927a303a221160049365ffe682ebb6bdd61c4d740cdba625f202dae2bde69d81e37448a86d039bcc4f49c121ec115f9a4fdbf3653dac2979bdd51bdb75577e6954c5c1813c3f7788cf4a854ed24c4755ab722fe0034ad6d973b4a19bba3298f4cae42572c790f5076a0bb0b3c6021940e837a85674a03c57f9ff5c401b511d0bb47f90b2fe536f273d6e9f2f6c0994351d1df63fdc207c801abe4bf008013587a2b97d034dc026bffc4e1a208720043011f9565974b1d7aea8b58a6e203cf17cf16ce96f7bf6b4d905ee9f71a47aa86e799f21d36704e78ddf6a8025db4bb5595601d47ab22e2acbc265fbd801258ebbbcf566d53a484b74321cdb0f92ae562096a65dd071e172850dee92e5201ed3509d15d41a620ace615d96c2239ed9281885ce147453404f016214a245413d33d3a985e89235e1ea66a224fe48ac19c84d8436b382af47c63cf1b861f15cf2b00965c1fd53494b25c54067461c708343e348128417464e6aae67d391d4b51ac355583737c411370329cb4d59e014b0d4ecb1ca3576d98230d385172e16cbe5b52f591c7374a70ef375756bdb500161eecef7b5561f35aeecb72bdb5c744a385719ed6c6a775ba4293101bfe926636b0889c5003f8a734bd6d849cf3cb7169929543dfc0b8ccbe9a5ef4dad0493559324e219eef986f8659c06c99b652edd205b610b85071a63697cb6858774876aa65e78132465288d449e746f08ef91f96dfc3e2669675e2fef5d0f838786877cde4a10c8e874334f09ef869734efae079e07fbe352082988ef780b585b469761cfcebc47bc9e121e6a786722ddd675a5f244f5ab14a28a48d6eaabfac4ba7268ab6e9e3ad72dcbb1cd07be1019e0c15d79839179de06ecf2fd6ba20bc54032fe53dc9f2fdc5d1eab458205079d5b3acf145162e42c2e3d099e5c0958901b7ee4f5eee8b7326632294e91f07a173c1534c3a875a0f62172203bc6be01372143918b2f9631d3cfc204ecde06b0d2d10f42bc2a6cf2ca3b24eb14a3ea9f247689f39250c209b8c290868d4685213767d6dfbc060f45f1675eeaeb9954f6c7b6469e4988dc2d675410026c755c1bee929e3961df120ec32491aed5a1818f0c80a84b941cad5e43e8c2298b879a0074b8c6d014a28e1c4e30b7bcdfb8a54ae5b0d6bedec31df36c1a442b2c69105d34d4e151c90715dc0b96dd9cb102770a1dbcbf38875666f169ef7e8e9589f63be3b440b02fa5323bd8a41a68874f40b9a12b229a1767c969b59c39f42604f4897945edc296208406791a3329f15e8bdd0b5969eafa93647c0aa544c67d6b2668fd8714bbd197888e690feb2d6b4248c83e011c40dd22141ba69499648c1075de3784f026d40a2c1a3db72924ca4707875260de3c99f9e074d09b08114226f137c7da07a5047805245e84ca60052772d0cbfa00239f41f5dbd533e86f5be11035d1f066e0ef021a3397d970be234a4eb79d15c26a12d423fa8bc2be1e882ddf2957652744322c7322a484b93940022a474dfa6c4549be88dfe593e45ccc2efdda7a4c7c19cb187824de34a7f6f054f97ca34c47fb26d9fb25b61a328294c37036bef9debc4dec144f89582635933e293868de4d32d88577925f45acc36e9e34ed6333980486f740a5320c30fa2abd1be01e34d2b77fb86ec7551785a65cebf3cf446cc963c8d52357183749d0b70e1020e25b7f887534f758aef3b0d449c471b1be7d817356a89b67b004c50349e116b8145984bee35b6f21f1d8d7cd3979913ab4e242e3114deadefa30bec33e8c642bc2e1109f1e1cca3e02566d01eb098967daea4fd8cb54c17389f367f65f6729f08afd027b7ffad603089348b2485b9b80b91f8c48919a787ffe714c6572899516441ff6ebd2c7b5c407209cc9a45b9f9062f125e628022747cb0a5f429f4401a197127b0a85797201f58ba29d9e2e260ef691f03bed042e1aebc73ca42a79c6b10d280107321fcae90376ca597b146b6396bb3e3426c8e4e348a5b9b8fa7b269e3d8e3910520890c7212b60ebe585d7eeb72e4e07b3bea0a8a91ce30c5c8dc6a5d0ffcee815b9749fb25282f9d6910ffcc9913d6ebb350c09016dbdac5de16b6093d1e3a1f1ed4e9a69cbfd0037b2a8c0d0fbda209896a71af26566fcfa7ab7ebe6a87f1476e477a2ba3d780586a34014462065d17e696109a897f1ba98994e1d55b1019f409566ca15e179439faab32f4928a39986cd12fb870a8ebb596777fd21088fa3b76761113300955de2c96ac7e4e4b2d21c36bf1e23bd54f375975e677b41a3f7ee024cce88d44ecc2d9458fb2256a41737013486c97ac89c4ed22966bffa6873c11bf68a8109eb0e1070fd2485c1215a0d515cf3c3f80d95773e4d24e59c3f3a1c0b6a547a8d6cd79ea489f33703127418b530d516947a3f8cbb8891d4ee04aa5f81feb0c9bb58250a6176941a9a42919a9fb78ce8dd6202c0ee94a6093e4cef983f7398bc2f63e080ead802e44f007e8e9b9e5a9a136e00395b373563bb79a3ae4083668cf990e44f727fac5ff12f3ce806b7ca26d04f96b9ca2acc8289fcc7eefb946875755c690e6d01362428c6035e3a2907b8200af494e7dccf01fa4ac3d1585c8ae3bdd871371bb3103c464a4f952e8c645abe5071997a5ec149d408e60c7eb30a6c3df830762a1bf7e074e1d66f9173a96b98018552197672f630f3b21234c887c845e887ffbec716962e7064eb7956483a03657e125235e59997f91d2cef85d615289567cdd75c4578902a92a8134281145811dbdb191400a233030d1661ad961f0be9fe50487665cf5b4a979fce241f6370029469fdff0b04c004a122ce91394859df72e37c5f24442cc2588db2aa35052547f7f48e625499db446e57466483f1f703060f90ccf2505de094e5240d67589dc01f497ccb38049d866e05d1f2abca842bf429824139abbcf4ca2b414a2d6e5a9a79fa2f3b07b59a3f0c82f52d4741ff5c596fff52d01181f80335a95b1b19ecdf8cbf0a7b14b6243ac6064b60a94d3012df1836644930c0b7dbd0d037d76c1ced58eec3f755228c6b26ed2e5e19ae538af3f939487501d455ef03e3067e8f285cac61073d8ab7b825124bd715e1bcc323d3f9f133ab55651a4eb19a244a02ddc77bbfdfa7a7b72ed97f488c14bbf5c7c87e95b1f79eff97652f46ba57a46e36403a27b6675d29758fd8eda5b0aaa45d2329dbd66e1fbc5bea5ed24dd4ee2e27b1f982805477dabb0bee7dd4e9adf742fd00f2bd7521c464cd41eb16e2fa0fbc982ed7ba71d2bd4b174a5d447541d5e55217bba7bb1c2bc83d0becfd961777bbd82f6f7da8456e7d55418322748ecf8f1b3ebf4c5161665132137a935bb129ccb5ddbda09a0a8ac50d82401500f91eacab67b07959135299126abeb5227afc351fbf3564389292ec60b2c01dc4c338111f2122939da43c2353469dce016afe827d3340b0a6d0013c0c3c0c3c0c3c0c5ce3f9d6d7dd47f8834c4916bbab810dbd94924c29a5e47608219286c39dfc77d8c97ff7b3049a07a107af07a889dfa194dc1983499da7d73829ee9a748bc17462467b0c11c360de7791134c28a9b3040ca65e3bc183ce170c4aff5f7e6496e105b35d36515e3d47eecb32ba602a4b36524eae1b9d64195c30794a2ae52468cb25842c630b664b9e32e45ebeaca695a10555dce5ad4ebc5930e888d7d69a95acca62c19c46b6f7252588514a573009d3bd0fba9336a9b78249898f9e66c42749a6a50ac6dcb46ce37b9fa32a543029a915b63de56c959f8249b81437ab83c595b8144cb16a3f9d89340a860f4be228614fcaaa2914cc7127f6e4f63cc1a07752b6fca79378529c608e1f9b2266f541ae4d306ddecd9a242dbe5326984bf89bf0e4124cff9f56c2bee5de2c95708e1a5e26c1703d5ac54dcafab31209a613274d4b1ea1defe110c62d6a4ac9e1bc124a74eb25b098fa6274530b8e5d749a92de75d194430ee5c68a9d97d9be8304c419549a7d28852320ac3f436ab31fad484d305c3fcfffbd97385b19321300c9bb2a204d90a15ff17660bf170712a09ca3bbe30784e756fbaed8549c52a77cac9c20bd3076d323deee58cf576615651352ad72879d277ba308952ee51cdcf854169fbe45bb1bb24695c18e5446f97746142296f612e794daeb0598ff9d9c2f4e5e651cddba4a0b25a182c8dbd27212d9530d1c2e0e26dd2c59259984acf899ffb9185317cfca2e96e39c5c2acb99e9e478685b92d47c927fa0a637965cbaf153a9fe90ac36e0995c497ad30dd7bac1e554a4e49638541bd88cc75f524afaa8f55984484579251de7575ef872a0c3642688df2a48f541874449c85b6a01e386a8c913df84085e7313b4ac93ff838c596cea2759b45b5f2db19e9d9b1e3d887294c552945896b9b07541001dcd143077e94c29c8312d7cb6491cd3491c2e895e34f8593ecd6f45118b63c993cba73654bf2a2308a924bd8fbaa43613ebda4af74ce33b1ba186b3d7af0383a022cf880bfdf183e40619223e66cc3e49538a24f184e082508559df427214f187b8499e862d29d0cd547270c323d2e9e283a319667f0c109a3b89c5e91dda93c5ea601bb1ecf035ff0b10953aafe3113dc3a33e40c7c68c27cd23d99ef4773137f268ca21dfdce2b8b0963a9d77ecf4d2f61d0617db684979c3ec696309b4a1d67c3d3a94607aaf0510973eabb9f3a7d3be1442961fa92277c7c2e27613c13596a61458955529230cad5879493327b3f8b44e769da72d9cebae4322f4b4b4b08b7baf4031226cf1ab515d46f070fd938682f051f8f3079e8e5909babcd68d0e8f13760738439e7f4413dd5a7c9a17e34c2302a476793f27f2c39ffc108a3cba99292ecb608a3c9ca3a724fa808838bbe24b654b634727f24c26072659713442cf624f9408449f2939424a75dbffcca133e0e613c49f7b557c9ca7dbafe308459dc3fe5889fb467261f8530c95d92674dfacf27c9a4033c7830840f425c316b2dc95d9a911d43c4c4ec3f06614e5ecab25c4e8ed2fe4310a6bb94f684f8f3d32fe2410e0ecc98c1831c3b76e448f8081f813085ccdebd3f0144ed16c4bbe6ba735e7b0eef92fa834125fd184ff7c30fe624982a1d23bb479b3efa602e539db2846fcb719b0fc61a1f751f26690fe69c5378f193d779e3d783f9d746e958a7c69290f360f0aff8d0ad93fb83121e8cde66267ba970672fba037276b94353b4cbcbaa3567ded7d2c70ee6fa37e9225bffa88339dde5c96da1fca08361cd5392e56ffa9883e9459e4e62c9e1e414a20f39982cd63a57e51995fb3ee2607c9553d27f1ad15bf1030e46d3f251743ebb4b3abcc2c71b8ca6e3579ed07efd2d8ab196cedb301d1f6e30599532418ccc8fbba78f36984a769c0bf5254caba7a1a3ae8b0d7592dc2a85b952b935281e6ea1deee9a315ad1cce476121ec47a500da63e293e972725e8f8224bc35e6b6e1d4cb45c777ca0c18ad77a4ff351ae9d04e9dd39832975f23aadf49a2f7a3318df5cfb3c7a076929fb28c3597e92fd4106b62b9787a55d7dbee7491632ada4fcc7184ce7fa494f4e2b8bfc23c0820fe87f88c19cf2399c8c12fb0883492579dbd39778d4ca0718eee30ba62c62eb524982bcd0a9ea571f5d30eb9f364164fc49cfe1e4830ba6bc6cf2eff94e12d5441f5b3085a53aa566b4f46b8bd6a3078fe5430b1f59604edbde2aad3dee7b5bc47958f0d007163c1d3dd13b65fbb8020f3eacc07a87d0a933b68d8f2a9854e88f1dbe9e4e9bbc073a07820f2a98ee7e848ef5bbcfe9fd9882c98493e3496791fa61f99082c1c3e3c697788ab1c683c74163470e3634137c44c120afb45c5a93ae24d90d701c1c47070f1a3cfe06fe34d2f942577c40c17862f5e39b8ae9fc950e1d633cc1a826acde96ec2e022cf8400422c0810f277049b4bb0946f15cb23aa66a96890f26987425f36309c693bb332e8859535f7d28c154d24952523b91163e92605a3915933e2b8d58d2183a303b63e8c014124ce9c383875ec831e9fa38827133e7fce488f8bdcb87110c5792b0d2397e236bac8f221853d63ee9e7ca49ccf52a68227c10c160ea4c75e94a36f292380cb3a727497c936a4d9a390812108649dc93aa92e44ad983dac631820482614e26c95272aa309d4e1c08120086e15427f13e28694ce8fa0ba345f10a274aee8f0edf00478d1d3d563086047c61333e20815e98bf2eef92cc3a5dd229015e983237632f4face22d27815d18f54aca92dc2ba9ed0a0a12d085b9734ef6dce893f245240866c73e3f49dbd4e99205c98449900f3208268ca1b54a9ca0326302c8254c21d7e9b4ce0f6209f3579e515782afc9ee01a98449095536733a478ab837402861fcf1935e1ecebc4f9f84c962c96ea29348c26472af98f015c44c9b04904898f3aa7c986a88dddb206130fbb334357eb5da3ec214b34e27d14f77eb78761c14142c8038c21484e5567d65b5906719401a616cbd93e4cd4e51948a411861b8ae5c4ab4b02f4a59166192af243e89f46cf13a60005184e1ca549a34ea26c2b85982eceee710f730054010c18758104398a45b8d49712a84c1c3dbe82466fb255511c2389e652a0895aa6132e2206cc60ac2663c48204ca25dce213e6fe79c46b6000410e6709d7210963aff89c7868e1b3578b00940fe6092ab9c76baf921dedfa1e35600e207a376e889e59bc458ebc1e3d868903e98fafdcbda47a4e95740f860f8e86227cf596da685207b30e76052de92ab5c0b80e8c168257b964bf1e725c90d920705c18369d34c4355cedfc1142a88c54eeaa4e8513b98c2a9382bb2b3746a5c0783fdd9bb9e72b5a0840ea653a7c42ac5760ee61b5b3fd1c2fc892608220793665e4af98a37df0c240ea6f62428f9d3a72070309e25a5dcdd6f9037982b9d6ac989d70f1ec503881b4c16848f768f8eef656a83e1b3b5e7acfbb3c11c552d78c8e53d2d37c81a0c7a9fd794874c9baddc0e2e0a206a30cabc8cee9333903498b48f5a0b9d929baf090da615fd63aeeafee9fb194c96e297c9c51233982a4e25af1559190c33eac4923a2a188090c17892bcae7ea374f22f8dc1147a34c52c57c460fcee2f25778a9100240ca664a72cac86ec145206014396e32ee5ca61dddd9e15debf948a79bf7241be604a2755c92589e9cf798178c120f5ab533dbf8592e3205d30adffc87f9b9c923f5c309668e12dd88c1c8068c160deeebbdb59e9ee8164c1a0174e7e4f278e05f38a5c5f103f835ca14af94aaa9615c545e3018815cc7b39895b2a869b9707a40ac62c9325e95696a44a14840a66dfcaf175a49ea09319079063c45c0e37f92449c178fad5425afa4eb77a140c6ab7a458c172caea150a06ad5627e71c64c5b19208204f306bfe081dcd82aa6c41102798e4cc0eea39655b00698239b9ad8ebe946ab104c20483d0d59345991454fef85d00640949a983d8d1deb3470d1b3a78d8015182b1edc4f81cda89b14603470d317ad4e041123ab7abb24aa29995a49eab18bd7e0f1c2f068f3174acdd00040946518f722deadbda1e347aec7811801c817bf30a3edb41c746b7013182d9a72dfd64b507520483f957de6ffdddfd6800218241892f15f46d4b749879a81c646451c6c3c78e1d1486414941f9dd8a3af9938c6098a41c26f366257c6e9e4a90010c5392af39578f8e21e317c63499256e62e2a9c864f8c2ac27cb48d7131ec8e885c964ebb016d5d2f26abc30c59bd0a9206317c653418793fa465bb08c204317327291b8c85b60d1f473d4d2b10c5b5497e3e58eee58462d6c860d64d0c266dc2c907f66a5a6252765c16768c55505b55ceba55672dc119f0f64c4c274d285cbbcb8a57fe61d2c4c49b01b7d2958e73efddd2b4cdea54fe47b92eea33b579c47bce8d1daeb5d2b8c26b886d2aef26acbee5861f2689ffa4ec98773cbdd2a4c72be0b63e94d304908ef5461f0b52c0ff3dade1dbb4b852994d29df2c9b50c547839a858d273ae94720a93a4cd37bdb6c2338561d497a5c967b95218a48b3ca99df4bd44cb91c22427ff545fa54e92b4e18dc270923a1b7917d6466878a230dceb79c9d79518324261da4b25bbc2cf62ace1c88183068f1a6a752890010a739b9dd9759a1496cefb84c9b2f759759e94947ce70993ec07614a8d8af7a7c7eb8449d0b725c2e460fad924831306f3cef6cf0efb25794a19646cc2d83fa23ed805a1e4e63906199a3098244bfcd83975faec66c29816c6e36913b3244957323061f0e8f97da4cf05199730c8cc9137275319963096d85a2778be4d46254c410865394d1cf5bc56062550c6244cb2afad4479ce679a49026544c2245bf0199dd4a2c7fd387082900109930513954c90d31b6fca788479564c3e295450d22425198e68f4cab79358c21c02198d3075cccfc1a3c9397562331ba7468f1d07053c6430c2f8f952e324f1773e1e665503198b307cce8f8afbe5fd7b224311a6f4f30baa92b7651357198930f97dd6492f423c7820c2bc79a7a4d2fe26593e651cc29c36652fad7a2a538a408621cce6dd2987d44ef2d47803198530685b659b5026e6d416830c42184f9225e4cb55086d198fa306198330899dc4e9bc993e5d6a843b4e204310e6dcf92364960261d01da5ddeeb594ca01617cd1f60efff983394c99a0967210155b3f18f49ebab2ed2445b9f4c1242d27af919f746fe583712c49b2bc73690fe6d079424b9abc0c3d982fed24a5719ee6d9979187ad47a8f0bae8e3c158ffa7c64ae4c3c4bf83b9f24aed4a1c97cbde0e2649b671fbd4af3d3aaf83417730b9c296203a186454cedf98ea49257330d8d5c79a24f8a894968349109d56d298781deb240e46318bd1f3991f644ee060d2a19edf3bb394b5c91bcc5952a5d1cc749b33718339beab74beee7ec3a40dc6504a4d6d9a890dc6f30cadb86e31dcb40673d272c254ee9fd8213598c4d63cf991fff1a6c158791e623d87e665d1604ee2044f52ac6c4958ce600c21e635b73a6630c9ce72a27abe0c58b83b1dca4ac86092c327f5dc5adde37420073b7278a06041640ba6b8279fdc0aa5a4cd85a3460e1da505112d1854c6fdcb88bc9cffcf01ca6163033872a0f31b10c982f94a8a236c6b2c1c8a21728514b182cd38225530999ee77c9d6445a860fe0a25bcc4d6a8d25c640a3643440a653444a2d02250681a883cc15c7a67364f74b6f4bc13cca14cfb45b17c138c6edea51dffb7c2e44c30099e3e5cc459b258a32598fde3b248bd3f49892125182e2bd89a54c24930ff6f49a2b27cc7a38b04939d5ca14dbaad54b1720473e72ff1f368c5082679f352cab62ee44c9122182c5da8704a2ee5e98810c194b273e582caf996876190d9127aab953ba4270ce3fc986cf2ab0b86513eb45995cfc9d301c378e9feb12cc54f6af50be34921723c8a21be30c88696d01a612a9f0fe985499d20cda3dce59fe721bc30e7f76c5b92a759fb68c82e8cdf69a5f49a2a61fbbb11a20bcc05cec085f1dbc457df6bb7682b88516797a321b66034aeaaca75c324d5a9a45e10520b937e517fa27c8afe9fee105af02ccc39e87808a197fd229385295a9093737f8a8529eee812faa4ace5e5b03096a72474949f49087905ba025b71ac3099be4bbf6d21b35f5d8571365bd1c592878c1c8410551864e53751e2a36d87d783c7a138708460c7f708c1df60c797006fc7f7a8218390542c2af614a6ec1672fe3c4fdffe1053b41e2b6b6e59612d72b6a6d4e6c571ade306f24048294cb325457bb2b4a7b51052184c36115fb28bf8a978c8284c524a511dbedbc2ce0b8310515829b26573ab6d57c9a208edb14614120ab3f54793521035e2b30f0a73b024c34f7f5813d42e42c82792d552bed34ac2c4139c6505abace8296b4a4a95648e97423a613abd72fd5e3a9c30fe9fbec939c95082ae3761f4fb3c69c238bacf72840525a5d365c2f4ebb1eec755c495141326a52ee578fbad2669530c17845cc2a0f54ec75e983d492a39b384298655c9297a4e9fc446388454c2e439ed7a493acda8514209e3f6e7a90edddbf2f30a21933049a7aa469aa72192309eb427e6c78f45c218a62b4ea510954ea9422051dc8fff12cf863cc294abf4642849b5ff5e218e3049721ae5e5a1db45386adc400c8434c2a02d7d7b9914ca94770c04218cc8a451eed9a428e6852cc2a0c342681d25a5aab290204411a6ac2efbde6592dc9703218930251322377b431e650421883067b1bdaf4cbb47c8216c8621ae1025841025641006a1438dfa5879a7662a3b7ae80811446a97729662ebd5b72d9b2439382c283b7ae8e8414820cca77252bbfb34200c3a97b20bed9272e718f287f3c3cde883cd08e14342bf9d496aa27bf0103d982d35e47cd8f36092749b1851dd351177081e4c42880b424c88915fa7903bd88c3142ec60ac8bf9299ebc3a7a5e0ea983cda083cd9883e12c9c7457bf3b2a9d42e4603e49fcd1613ae828a70f8983c12e5c795552f750512642e090cd9c6858755dc7ac765695f957483f0b4d08216f309da4aa75fa4d3b4cde0dc693648f9523674ac7a47c22a40dc6316db72509e22ad9ce06c328d930490e7dc249572442d660ccb2132a4acadead273518b6fd8396a4c1a09258b723ad53cdbf68302595d327b7efbed8315d849cc1142e865015cc749851cd609275676e943e95548e8594c11cfada44488d9342966430779b8a96dbc71c216330e551269b24c246fb4d623029f1b26b57d0417dec4a0a09833994859c0b57e1fe31184c63f1940e42354e9858c8178ce2bfed56493cc40ba6a0a7f385794f49b894902ed80c1423840b17b20553998dba9226df9aa4102d18ecd4e52f49e942b260bcf9382f23cebf2f1d82059bc15881902b74881538a40a3b839306215430dc9d98b224a54f7296a660d851b39efcffaf522f0573be944cfdaee57e8a47c12476e9240fa1e3e685a070214f30c5cd533aa7dc447b8f134c2ade6db5c99d2698afa4113de93fffce8509a611bba5b458de2db72cc1f81b5e61c1c64c1e550926cfa1d489226712cc2d42a5f35339af464830ffc91dd24d98cb3af10846cf49e996b7a0a2672398ba478976ec658dec428a605026e9b9cf22bdb7af0f8410c1341e94101dcdaff2490dc3309a267ee90a527db4a3c641018f1d9fdc30c18c19be001186820443418061902f1ef49852fa8539bd577cc8adf564e2be30e5eeac5b97e4b70e722fccd56154a99c2f2fccff69964adde9a43add855ab9dd4b66bb46e3cac753d82e1d37f402105d98bbf42d78e5714fd25c145c18adf5849cd2f3d3d2b985395b52debe269d9b0e2d882d0a4f4b226267a9ae5dab15bc5c47cb7f7b28c65a2d8cd7766382522a2ac90f2d4c7fc2bb9ccaceb368998549b41cea24795498165516e6ca224d286d0f241626b1a36f89ea6492f89b10406061d22769f6761c594ab0105f615051f94a340b6567177402882bcc9995930893c7bd52105b613a1dac641394b02de25a02082b4cf258d6b7dbe5a87422aec2bcf9ed779574451d5b415461188f22c7e2ffc65cee5261f0d05942fcd69428a33b5498a3a89c64fbb00e4f61dabbd2d1e94b50f9209e290c42bee56e131ed3a4770a20a5c04ed9ede99f088414c62a31173a9a14764f0964145cd7d6d68ac5b0f6cc0520a230774ae76b9752097ef22c0690509834548507d1a1cb5745048571acfb4c124cfd09b305a1f4facbd24800f184394f978f36f17412b2ea8449ba9f354bfef3efe9150184130615ec747cdf0f9f04e9490164138a50f695f226944300d18409207613389b005e1d04927315fb631910a819ba33ec01a8078f31761420003e4826a08000f0d8f1680ccfb14347022cc0a3868ea38000e4010001000000180100000020000b2800e0c123994100019c1ec767142000a7c7f11c3b661c000003684002763c8d1ca0d383070d1a0b0040001870001fe840823097ac4b3dbac489a81608839b49e2dfa78c00c2a4434fc9fbaa68257be36ffcc12463ff97c3a4f99c0f74a01b7fa3dcf81b3ae2873e2460840f58a387e7b831060d1a0918d98349749384f9d2a2f2a97807357c0c1a347a07357c8cb4c0881e1230920753570e9e4209eadac336c6b8811518c183d1e343d5a9926b3e1be38c86a3d7c1a32d052377e8f13ceca0e306baf1370c305207e3e9ac0efe16da21060f1b74305d49ea4f3c951d6bf4b021068f438346230f1c357ad8a831464263c7dba8a1e3460eb43687df418e1b37fec60146e4803410301207d37d50f2092a9f5472000524888007541001388cbce11cf1fe2a5bbf132c236e30bb86bfcdb68e579e47dab05a6ab1ca94efca9d7567d635d2455a49b505236c30572749d363358cacc1201e1f4289a2c3bce8f0183646d460d84f99e31b4ad7c949979134982a9be071ca46dc6bc6716ca0e03d8709f83d078ec411349ce1b031792bf36cb9addacc6012b2271bea2d5fc7cb4819f26c30420693ecddf3b52449ef90650846c6600e5d4a497b214d85fe88c1384a5ad295aa1b0983499b9445c99d85bde7340f1d3968d4081846bef02741bd4931237a515b1d63ecf9176c1046bc60b61c234c87933df5d20b8c74a160faf1e7511c3cc89183112e94dd963ebba3cc253df15227a963640bc6de3351fc627adc5cd930a205a3aaa9f4cb6955521a8ee3d838874418c9825146769a1c4a45a58e8ab1968663040ba69791f623aadafef423573008695f16cafba225791c1b3818b102a2dadf4407262355309512d7f47d297feb64a2df41a3112a9872f95634fdd28e131861640ac64d93c74c9790171dfca17781991b46a4600a2aef9327794ebda7c45843bf031e5130a68df6f84f62390205e3e5edd8bc1faf68e5187982314ca5fa3e95848b49b5c688134c82bfcbb577eae8afe2c871e3460e843b469a605cf3205f4a30f16e45b5112698fdb3e8cbef906bbef7e0412307aa61630526983123cd4696b083860346946096f33693b374ee0328d87174fc0e14dc07ca2e4692602348b8912398b4a7fe8923f3112398e3aec926c3437bb46a4b8c14c174f22411bf195725468860ceef3c6f8fadeba7a4a307cf65c31086cd308548304c62cdc5dca89c7cd42bc61a8f1abbe3633083c68d317000432f3959bd86e8178b6d7ca5b418ad4c004410f18549eba7e57ca51cd4aa4e10e98549b65231b52dda9c9a7961d63dc992a54fd2c78a623c8e1c3a7af034ea4c20b20be3e92cf7d77be7b04163c7dbb051e3068d352bba3085f2b50d758d112dc945f39e5595f6f62ae722476893f3b38c1417a410b985b9377e4ce5ec12162b22b630cfed555fd04e2d0c67612acb093fe7b2ba1f3a88d0c258d1e4194b92d059239a85313c89126499340c446461120f0f8b5a82da3a11894517bdaab2d632de36cde54d927f49e5d2fd148185c9dcadd4e73b798531c74d9ece3954a6d9091df264c4c97fad30965429afa7dfb39c172b4c522e5346b5f22779afc264f27e5912bf5585a95fe4e71c4628f753920a638fc72e71c7830a73d2492c71d929a730ef5e12d7a54ce7aad214a66b732b3d22f544f7c7331e36369076c6c346a222a530ae78123f6f3bfeb292c2a0ee3ba54f298f90f347611079514da8fb93b3b7a230c9ee9eb45ca884c21c4af02c79446b274105451fd77b5416887cc21c4f754925a5786f29c91386116af12477392d6f75c2bcdeef2d9f545d44488413e6537d2e17a7f7ecb624886cc29c6774b45ecc349170f1762549a9ce44b9548a3a224c7c962df34dd2995fe24e2e274425a59f65b3046a449d4c5125106f25fe729430eb7876aa379dc8240c1f47c8eefa9624ab2f22923028ed67929282c8af1723c155c95dc530717318229030e76422ed742cd5a12a228f307c0eb9b71491e925228eb019228d308992a43713547fd0578411e69294bc282a7c789cf305228b309e24b9c9b26dc2442800a0105184b94dfc3cd3272dc61a8d158824c2144ec73f115709441061330e8133ba8818c25882975c526fc45e8a17224b395c921036089b01071141185d47c538f94a7baabddc4124102641a90c9ddb17632dad68f820a1a11600548800c27c82091f2cdc89c6a2e04c870766cc983163053d6c8c51020eccd8f13bc87134ce74a46202c083c81f4c42e689a337f4a69b49c40fc6ce3aeac493e4e2e8bf0f86df37a5e2576af3a422c20753c9727b1bf59763785210d983794b5a7b5865f591c71835707c2206113d183b2ee9542a8f105bb31b44f260cee193cb6f8d52b31f0f05bbbab54a71d9653ab695169161592f44ee60b0dbeea494f4bca2625b10b183b193d6f3a04674031c356cd4e831c68c194f10a98349b837a55bb69f1b399cc6f71843c78d1c28cd468d1e63241d6cc60d9139d80c1139182d98bab21d5951dd591c88c4c198272e29155bff3af970307db69fd750ab277e90b93798541811c274999b947424e206a3ca4911a1247b17e58bb4c1e8397b3dcae69e89d1da8ab0c1a41e4bb493c4145983e12a2ce969cffba88e1c3bdc4c440d06593b258c0a931f6445240da60ff9a125ee3344d09099ae7ddac9795b4b226730f5429b921b818819b6b20db3cb8ed31af7b04ef3f496eb1363913218bd6a4e12c2162183b1b5d5e45a7fced14b226330c9278fe8effe78e26a1131e00cb58148188cfd5fda835992ecb4040653f69e1f3fddaaa1a32f98cfe46c4a7f8e2623622f98bde2f4f38710e25e6540a40ba6e8b722afe4182a9f73c120dd45aebb88bea8344e26c32259341487830171308ce1e96d0143130800183c1e8ac522e16834d175651f148003602c20383e241e2218120e14208c07027138140885014140280c060603e2401c472a89dcec01c9e810cca69da2b9d67046b9f8945cb63e9bfb6ed5fc139a5c4ca1f1fb3c93efbccf1244dec8d63be7a614a960331ead597ec3b1df13e4818ec67ef5a3390c67b0d919408bcd599837c75d7f8df1b1549f8665d1a006084c583246d1476ee7aebaf1fcd4a9f08009a200eb0ea326632c1a0a3fd7d610c6a4a5143120ecd954a35998786deac7b4ff1456e06759b060a4a9a31cc836f4737d0f8e1b5332b3e81450f7606cdbd62e7faefc1be9787609a52b1ee57ae14a188840f3637d131f0c449ee7a14136eece55b750d4b84a8e9222053cba21e84054d3fa62de06325d4a5cda50677d6af46592523df89efe3c502872884a2099a3f7db0142604502c95d28f99475ed9a4776a2212b3a6f5d6da188881d98725fb18c1a27af256c5076fa91037b35ba7b59c0aa08e0b39c5a0632260fc5a4e8c3f9201fe8e19ada640aaf53e59cb2f5685e1b22fe8f0e987323f05da6188c342304badfa5f739c38548425b06c39136220990024b613388c8ba880fb2189ee125bd6d104bfdb3196ba6ce2b8d2c2ae17f89a6958fe930b24b8abbb0d1299ea02ac6e547c5dc5fca63f65dbe7da8aeb31f7a148328d00de646ad813bc3697d428e620fd39b6e2f6a447f11152b32f42b728f6d6fff59cf6d9b0ed8646ed1217161eb87054347688e5f545e88f3482560b7e17e950c8da929d0e52bba9960c399be1eab12accc0646bb6851b699f5ec5d6375fadb15de28c2fdca61bd8db935a27f4776e9f1c35a79a2f1312ad9ab65213e1e730871fc13032c0fb2553a083c6c800e52983b1e152c7c8cf594f814b1866c2b811518859c33542f4d34a34d2995b42dc435d42566eaf57eb05cfe358ffbcd9070c18063acfc60f0b49336234558435acaf01a4a7e7350c902037935f9ec35de31e32d3718fc76b2e84dadcfbaae80269aba98458cc47803d6d9a9fa5d3d7d030d7ff3d4e1dc53f31b504eb6d2c322a5fa5f94f8b2a3581713ff571ddbf984250106169e5bd52fb06a05ed455b30ecf760b542dfa91dac0cd0607d5254dee84d7631fb210f5ec0a78ed4f80350f6d10d00f03d155113465fa27e1072e06b3e3a139571489cebe28a4ae69e2b5db017b4d54eb058a96192564e9a00ef79532f46dda7a403c43bff5e62ca7e90614f718704e7d96bbd8d21e06480210b940d910ba3bc7bfeab43e5aa9fb0dd521c76350443e912ecc5dd24559f404e8c269a90d216c29e0ac92c5589c665ed9d10e8470784ac8a7707bcb79d68818d3548684ab585231ba49bf775375057d6bb6e50d4bb50aa2cd26e14af12c762cc9aee9bbb211b2833c883e073bd0e465de22e08220781f0a25ad378f25572192df8aaf4785dbf88ba5faaef40385f7d6e148fe259809046a3fc6222df8b51ba47f375c0eac05841dfef8a8ca39a1745e7f600e4d40fc47655f54044cc6bf0581ea37ce8d04cf760b0e0e9f169925b2b8ecd2408a4f71e6c7f0c783f85ee7b42cfad813c82fb2f73af5559d1001dff9f9ddf15321b616626431815c8d43b86006108602e2a63e1bc4bcfda9441e6bdd4e4315d5ca48e557d4ceb8f09ee474f841486582d41aa6b431f3913bc03770678b0cfc20a2748dc156d17c6dc3cdcc26cead6bc3c7c6e66e357a38909441bc30a20673c49f31b28e7af347e755560d7a66995eb1e4f2239f0862c1a6c36bdd84293f9a2088f67d1eb759d84d5d6d0d6d5eab01529e02663d385c29f0cc9047345c88260640fb5581011184b0a1921cda87d0cfa159cf6936c39da0f15192fb8d086ac0374bc7e08a772cb12bc5891e4e8e840e1da3f0b8b600001111b1709e16cdec59dd36441188128765e9f0e87b38420d917e14b9e0c460978208be5e141639123be2f2cdfa58141cb8ddafd177b5650b50618479b33d6319c1306dcb500e98d0b7d34a18277226f65863f93a331d301cd19377d1629c77de5f49d527ed04ee38af554b4e114b0851e2a46e9638caf2d64361bcedc01fe630dccd6076c193170c32d142523bcceaf9d02ad73943282b99f8645c6ea220a088c88ce82dcbd724c7c5a7e08a2ae4f3f9ff0778ee4a1f844f06364323af57caee1f6d9d96376648e146ae23526b89d070099d8add773163c52103a37002057160024270645a4b83b11413d34b71a6f8febd6e3c7c5da8e37f599eae29d2ea0377c7871941bcf3e9fa70887e13c7dcb5f8171b1a4e014ede7b2a2cab93b6705321544c2261d98265f67d81c3e68979bf57711e5b54efd7cfcf4f4582508f3b3c1913f22dfa4ff919758c33dabe28c677458878d853d6e93dbfed471dee6c96967fcd50b19b17d7d6e0598ca553ea0762f47a83b1fe2a96977a231fef7acbe2847525e4a9d12fb1d9624567843686aa2de2d38a0b63a23f455b314b10eb37d7a970ab94f0a86116747386be728546570f146db4c0a61408c0c777ddc3496664ebd08f903e2517044e3575c1a6be8fbe2bbeae78b6262de7054f9b444bfba8a9142e30259700d0787c25ef48e533881fb3e24e4e121ea97b32bf110f744ebfe5a8844c526b82d0a1c33794125484ba9f2ab31580c68af7c2fe3e2b7d81a00a4552a0599e89fc536242993b7bf7691922698ba066d8cae90823e0b7488862a5cefba9988bf0c29d79adeb976544ca60a4da9dc0e89daf777461907f1765bcfe638e5164e1744244fd1658340ba696bd97a255893ed88eb1c997e3625237fbffa24553e5305f2125e1998aebff4f8ccde40f240c9352fa46d160f2cf94df2d1e7b60a9015dea11f2100b91bd34aedadeb1f37dd226857f0267722a9c6a868f5b636ac76476b43d58eae847af19e92f35d8a0e2feb519e9a7a79b13598079b98b9b1ab4a107bbb06d6f8ea58d75b59aa4f15bcb577ec1b56ae663416271349b8a10c9d3bfe3dda214f18542bf20e2f0663e045309c375b311c0166940649e02e79ee02cb33185ad4e7d1290f5c6eb2200805485046912bb1c1e59286a18632f650d578653aa8ba930c5f3daa5998f050959705897902edf90aaf1473db27ac9ed92a7102c8ff4dd816faee9fe11eeed1a1e6ed9ca5d48b7af1ec9b7e2b7361fbdc8b56ad7899718173f87e0c0d427a190307e6a0c02dc3b9da37d0333e7fc8b3b88588b0ea7791a5887c976b97760f68341e086cf6aed7ec910df991eff81f1d728831d4c3bd909288bb40f62ed7314e6f46773788c5f3c2015956fb876e2398a5fec4999d5e156594b05a4b73d8510c5805d15b68bb81f2d68388c65a0f87a869c4ac052224e9e40d3d9027d0506c83250e59e790e183017195da0564c400c6118df0ae6b588903ba72bb3c1398ca1fa1ae6a0941cee26ac00066a53a725d12449b6c2bee46d29e360a43ad1471b9ff27cb63a10157f3d40571150a829baff080220aae4b84e2c619b3f90f5cc1b40995718a39bd5b6f2b1f80718e660ea1339b79e3e85ee28154705520b92091b8056b2c1455aa19aea817cbb5a80041a9f4e9d5020c91fed774cf0cb5493aa48b1dff40cedc4808d4130fbe6e43f585921f975c4090ae97e677aa8da2ea110b584292faaf14295801f64cccee38ed2b28aba6b38c0f48d1edf365319f06ab452dd8ac453a6c7eb0d3878f32c9a2e3a337a2929d06c70eef2662198680d56b0b93b6170d7f0c44e5be595b5293efecfbf9515ce9a6d3a186ba0e88dba781f19ca1041574cc0e2843e40eca14cad55aed844f9ce31f094a2c0ac0996d4d444ce8b774db1a57324f56af339dbe6dd8210f2f313d675a4b4679a74da5ec3b87ee7c221bb811aa58d36e5a0e5b4cbabbe9d2d4debef4a29d843f9c913c15ba48d110c46c1f9d65a424867a759372bd654ae929a95522a94bdc4b492d33e8c214778ec62e33e678a8a677471a52722f1085f6f4f23d47834a5868f854eee77aaf28bada2a0fa06d3a3568078bdbbf970df5af46c567510960da46a7628b03e3d9d28e2d529faae001ed7aef179574b1040bcba9d228625b34d0e1918b1812cd2a2024f85820c127da6cee0ada9b14d054d7c948ac02117424aa2d80f821eecf2abfe48134e2f66098ee8944c70dd0d268b9fd2f908d71564e330fcca1beffde03cb368f32783056be85f168ac13e85297d2655c3cf4369d496d6ad55b1525810327da950a1443abea4055d6534c57f8e1394db3f859397b246efe4ea5afbe2befc0d532c50efa7df28c67d5db5c7a4d14c082967df443da24287b3f215a89b8f2d3b828bef1e2f3e3231eed6f0a9f368371dbc0afa0b74f89fc2145842e9c9014eb4c90d50bf0112cc55e74dea61431152cb58166a721762e29a0c5f6b2b33ad46a89154b81cc957ffb911ea1c70f6d9a3ba4bae69040098a925d43bdf5c349f90554dc1f5c3a04db0c0650906f141109187f22e7b9360218f7b1d81e237494a36c1cb972d68b483b404597e56b0493fc4bc40a7d53e1fe6d811ee4d667c9b134040013897532b2a024c53c50e208fc8fe0ea7b3b3ce3b584a79bebf3e0c6188bacbacb0c794e7f0ebbf1cb4b7e68109a1a6bad1c2430c2d8d7994d68b7d8ec5694c6b2a5abb91c865a1edc9b8a3ff7014f52c3e4ec075419d90b5900f93a8e3fb33424ae8d60f88061c4c3af04b700fb2b708824101b73df0522b3490a2b6389afba0c3fb8143385665d08a039cb29880fa17aaa947ad963ccd794bb7d621ce31091accddd4b9fde02a0e9923120aaa59161340e810b107d523fba4804281213c446d6704b65da4a68f44e0221aa938d91f791ee05980767fba2642058c8e5692c988a241ec5c5945e8aba3414631ebceac953c937d9c1746d2c1e253b24929e02898e970c7ac16062e865182d573e4206c283560dddd846a4ddf917e65d55573d38f4103d9648ac3e2903bb540100b22e6508f942b105aaf978763ed0a49c53e886496a47a017e9b90b54135c57cfb8cbf38913fbbd02ea58b5673194242d30c9f5d6cdf484da32df880d19110078903874fde7ac02b037f22c03dd0b4aecaac413ce77b393e1b996a3119e51eebe8b99ab52d8c203a8fbabb94b20c01c762e93335b5a09c288e0c8ddce496691020037bc80117c57ee3f283b979cc7d94a4a328ad5ee4254669533b9d10fad02ad6dd2667bdca56dc5e250524d82034152f2e736418d9c1295abfc740050256e6c37096381e19f39580ed0df8a3e0fc30a5f2565d08c82cd4204d673f03c964712931bd666c7abd9be0aa2e20457047ba237de67cf493ebd192bd7a8c4c5e4221d0f1c9a25f473848aa670b9fe22218357af253147959d86d68177bd13ba9b4ee560368036d7255140f878cfb39a294cd8ce491052b21bbdc8e29c755866f0ee26708201c787c80f81733a07f967cd8d8c6f320af33152ab3cfff324a43d4921b1072b1753bc7f91ba50eb7d212d10854addb715133dc4e43e375847f835c8f35670e923895f5ef50c6326e9be6ecb3dfcdc720f144eab4ba071341a6d165d4f2dddce83ff540506ba9ff221a71bd9bb176175e7cc28e570cf2192fd23241cdd66e6ff7b847fffd032a0973f5a890f5cfa02d7466f6ebabfd9a215badf1aa5259b4527de2bbda8f10e55ed293876b416b5246cf14afedf7a740e190c046aa4b8074a3b5b3c42223361be50c5d5a468c01fcece46c1dabb8d22fd2ac35901c12aee05e068e9874f7a9273bf92eed294b6b9e07cc580062c1e5a12a84c8748b93da8338d8f2c7e0874174d5aefdfa7ba5238f1f1b907b5eced154c165035b3b57168c6f64206cb3046825ec02cecf3b41865d446105eea31ec75cfe66c9258df9614ec10513cad8919bff2c97a32c6930dc91f5f0ebf5fcc6826796ae86657264106812a655d73b9b91e59d9d3e53f4a4d5ff62e3bb467c7a9580666d15d6f591ed487f76e7081800a536b96d881f412ce872918a286ba5b927b9067d5c9561e80aba5e7085b21e997909309a6819100efadf510fc4792dca13ab5d7e8d5f52ba75e02dc9e2a2c380a7828fd7a78c7016b2351872aea44077a1acf597b75727ed2ad5e2b1ffcae756b24c357f153794b00f0321bf0fafaabb2fe96c0e45ef2c47697a9d260b3aae9709092a2b6e46bf3b8ad54ad41a4377e2cd55eaec4e3c3ccc4729dc98a80e88802c81c7a196c23e5da7767f7c0fa9c8f3cb71a19416717d75e16e2fd69cc5a084f328dca27390e4e51154efd9cb4d13b048cee4eed7afcb4fc10790488cd18e9ed960465ce85417e9b6f28b6d78a2d34cf62f142f5b826f334e8f003d2a6593bb12effe90430210da5870f7bd60ac85be74f18cde7abe81db51dd54bfea0bc748696a99c78cd32478a2e95b432a9a6a5d77ef9f9b10aa57afe7aa6387c80b8c2a6041da48e49c6d46d789b82335f50509395b43f0d00b11409a4a51d6bba96e2d16fe97d4e3648f8fb8491679e64e567767665dc5c496ddd59514a395be84d8719380bb1107950b00634f1e429a183851f13d4f50da0be0a2539e07553bdc601489f896a509540984286cbe026ba9be90b7da04b88c1b4739e56ef95e727317dc7f461ba4698c7d1cde0a9c2420feb42291894fe144a44c1c61364763e96e321e30c55a100a882e96a02af500dcb08b3b94b5f1430c7a5df66fcbc5e743dcd47c8cd9252b7a33d8f6f6b1a00a156d5f8e529910df772c925bed8f58bec9ba1666629b63e7c958584f38f2ba6b11070914d9a78ff30b3e8d097905514078e524214f0005bd188e48a1325fc8486b3f382f7354ff00d6e1eedc90512e5a9d0a29af83a109b30b6e8a8f83797a85228ed6c023330ea0dd1500e18ece90853652894ebbb824e10fc37c561edc650b1fc7416654d49bfda501d2b4c0b6921a4ad6ae424c426b8d68c41cddf1261a0e63ee5f49210cd801c18d1b000cebd56c1455ec44a2a274868a2ee43fb550bf00cd8339a63d7fdfdb6bb6d8a3aa1d9eb68039945d7c0470142149780a3ba721baf5b06808ef8f8de4a36c2928e6989861e8aec3dae89ac3f6a42ce9238189579b1621cbbea1e96a106879779afde1b2dec94c30ba492941b9f16e8ebdb996754d2aacf6fc9b2e5ae9d89d5e4e6f06eca29a74c572f516f823f851580e6d44ef5bb6e88f05a9b74bd1abdcc1047e12a726fd620e54e91ed0f47e952250831ed616575d8305e00c198e386dbeeb74efb941ba134bdc975cadb5c43052d7d567f185b06da8abb62f83eb8d543d6758039c5ded53ee59e766392b214f94c62da6d749b8b9abe4c264748817c19da91de9320cb50427d6a4c86fea0f4344ff74f6ab5148692c54ac739693790a9b9197b8a1849ac028c14ea8968757958a2ed328993d764700a45d0b7adeead1cdf294f0eb545c671ca6c6a4f523103c771e61c21e3bfb21141a84a2be2fb6dab696ccadfe72a8b08c1a02fb954e7e8c36c4ff4a01e8def34776317d142c1654f603e0a1b068e1228307e4f0349a9a03ac3d2b51884f8ecf79092bceedfb7944151ffbd99dd944288de1216878df790e8a54a1495d52a91aa6ea678c57da9bc09fb754ded4c297826e42658442670ddf280abc52aa8a39a26e045ba8fbf024c591b8bbc77321008f9d467ca04453278b054e182d6df8eb431bd968ec2b98be03a8b70d6b45cb0954b1a13153fb3d78581bf7cdf1b6818613e1e0f00cdf37ee500a5ebf11c3940c2dc2103d7ebc159bee0f6dd66d65b369403504f33a67b2ea189b5a3751f1c579b0b43105537c081487e081e514a1a26e059c4d78dd120888099e073901c10a7af31bd7b54c92e083f50c8ae85f7040a57004b0866d927343a47328601524b5e46b206187023826dfed2033f51a5c45f2c3169a3d4e98d01a0b18ca3456c54726957fc60c58ee42e8397e4a5f5ec79d0d9c104f5c647a0604c6241ce799c848cef3803107727584de10aec36f294a5c3dadb840b7d560ba2f618bb77471e31dd4e1af27f6f9bd00e17830b433d10b0875d32b65209d4fb1fa82f4cc2b8bfce56b79ed1d3ce616e934548cce1a4437f79e27dbbc60190a5988ba83855eb1806ab55fee4cd7e515e00bf9d690f8b0a95f5c5eb7fc9b9ed165dcea9c68cb6709c6d9ac179bba6f4c77a6564745d7de458fe3f027a4bc01238f2631646ae5e980fcc520bb3dc9eb3b4cd8f2d23c67b809fef13b28a2553eec9acd3edeeab51b2d6a67b2e5936c517a347bc955e334ccc1a72696c9a017e163cbabd9262f344ecc083e9374099ac5eac4d7540846e34b4494f1dd9b30d2e513021f314b4b45b1a0da9c397a38b4c6fd952f9115cdee5025b4dcacbd0898e1b720cd00f8889958d3bf66d89fc9eec6605a87d4d7ebc09d831191cdac8186b0e29a1e34e21058cb4191d5e6d1e6c6ce85ccd718349150e8939dcd472a93ac1749fc07690788c24e183d2373e913eda95421f06bada6bbe2b89156dcce3048b4cb3a489386fa867d65eec6b0ddbd203e9dc8e1bb9ddccab8e7bcc2708f0599f4f3cd14474094269e23f2e56d551bb73407d8b4bd01b0decc3a3de4beb5a641e2cf50a356dd198d7f9d5343381e241c3bcfee98a98a20287a763e5c50bf080cd6f02cae83ed0c7e850087cd48ab92aa8f757dcc6335880b8a394810bf066182bcb1437b66a65db6c2c45c0e695830e10724624d08c0b09962d739f7cb64ae0df93b1455c59c0bd31a941470cc5f64910ba6f4b1f8990ff93f713f9e139f3db889b423749064cfb337c7e0727984a54e7c8726ec9aaf328c0b1afb1041afac889366e3c583d11f95c7e9b77ae442f47a9cdf057d3d20a7dfb29b1e63a23dacce26109716072c8b4e4a30ded8718d34950a600885a5070907342b6742f49143cf4000cc166ec5c0d46ff2c1b34939364782a243f6814c7c4867fcc87bddb6f111810a0a47fd7d77af01a6acabd7d02ab9f4d480be1fb0c8186c7088523bc5005fc09358e9d984c34dd3396fa2193b7a198bd6dfeeed7c4b9af29e17c40c6861fb23af1a879d97fd453c27f637725177b148e9112e33da34db182fcae7f4d2566b2ed808fbcd7509cae5d7e3b96e630eb1707d78c9ec76ab92314f54b986b2f46547f46767e37073855ec0930c0958fcaa4dde4c689ed0e5b8bf477a32b4de4dfa24971405891abba3cbb309ab81d67b2bd4012732f808ced13a47dae497b9e0d4705d49b144a695420b4d3f9a48a311292e9bc5b1f827b66f27cf872b17d3c478ef4b8a4d20e263d14f90a3b84a246c169f6ba3148e9abf37edaf7e7efbdb33f4502f2a0d1861ac22b7f2102f244a92100d6a9566f655b14de6393bccea6eb657b75c8b915a586379321ecf09a3833ef0f47854c863030a6c62949318312d843e5d4024fb0a8109d536287ca47c2e5eac13741a4a436daf1b9751106419969ff4e8f7ef913f053d6869d6d670e468aafb56326ad58879b23fffb313fc9f0648c2fcb4a8752919cbe81762fbf342cf44f4fec908821e5c1d8f9e650bd9a33e7077a29fc99858bb722", "patch": { + "assets": { + "assets": [ + [ + { + "interior": "Here", + "parents": 1 + }, + "5E4kXkguH9JAVqymJZGkJHi5se2grgR1ZKhhkNUmxqMTSP7g", + true, + 1000000 + ] + ], + "metadata": [ + [ + { + "interior": "Here", + "parents": 1 + }, + [ + 120, + 99, + 68, + 111, + 116 + ], + [ + 68, + 111, + 116 + ], + 10 + ] + ] + }, "balances": { "balances": [ [ diff --git a/parachain/chainspec/gargantua.json b/parachain/chainspec/gargantua.rococo.json similarity index 99% rename from parachain/chainspec/gargantua.json rename to parachain/chainspec/gargantua.rococo.json index 53b39d3aa..835ba6fc6 100644 --- a/parachain/chainspec/gargantua.json +++ b/parachain/chainspec/gargantua.rococo.json @@ -1,5 +1,5 @@ { - "name": "Hyperbridge (Gargantua)", + "name": "Hyperbridge (Gargantua-Rococo)", "id": "gargantua", "chainType": "Live", "bootNodes": [ diff --git a/parachain/chainspec/paseo.raw.json b/parachain/chainspec/paseo.raw.json new file mode 100644 index 000000000..fb264b982 --- /dev/null +++ b/parachain/chainspec/paseo.raw.json @@ -0,0 +1,424 @@ +{ + "name": "Paseo Testnet", + "id": "paseo", + "chainType": "Live", + "bootNodes": [ + "/dns/paseo.bootnode.amforc.com/tcp/30333/wss/p2p/12D3KooWFD81HC9memUwuGMLvhDDEfmXjn6jC4n7zyNs3vToXapS", + "/dns/paseo.bootnode.amforc.com/tcp/30344/p2p/12D3KooWFD81HC9memUwuGMLvhDDEfmXjn6jC4n7zyNs3vToXapS", + "/dns/boot.stake.plus/tcp/43334/wss/p2p/12D3KooWNhgAC3hjZHxaT52EpPFZohkCL1AHFAijqcN8xB9Rwud2", + "/dns/boot.stake.plus/tcp/43333/p2p/12D3KooWNhgAC3hjZHxaT52EpPFZohkCL1AHFAijqcN8xB9Rwud2", + "/dns/boot.metaspan.io/tcp/36017/wss/p2p/12D3KooWSW6nDfM3SS8rUtjMyjdszivK31bu4a1sRngGa2hFETz7", + "/dns/boot.metaspan.io/tcp/36018/p2p/12D3KooWSW6nDfM3SS8rUtjMyjdszivK31bu4a1sRngGa2hFETz7", + "/dns/paseo.bootnodes.polkadotters.com/tcp/30538/p2p/12D3KooWPbbFy4TefEGTRF5eTYhq8LEzc4VAHdNUVCbY4nAnhqPP", + "/dns/paseo.bootnodes.polkadotters.com/tcp/30540/wss/p2p/12D3KooWPbbFy4TefEGTRF5eTYhq8LEzc4VAHdNUVCbY4nAnhqPP", + "/dns/boot-node.helikon.io/tcp/10020/p2p/12D3KooWBetfzZpf6tGihKrqCo5z854Ub4ZNAUUTRT6eYHNh7FYi", + "/dns/boot-node.helikon.io/tcp/10022/wss/p2p/12D3KooWBetfzZpf6tGihKrqCo5z854Ub4ZNAUUTRT6eYHNh7FYi", + "/dns/boot.gatotech.network/tcp/33400/p2p/12D3KooWEvz5Ygv3MhCUNTVQbUTVhzhvf4KKcNoe5M5YbVLPBeeW", + "/dns/boot.gatotech.network/tcp/35400/wss/p2p/12D3KooWEvz5Ygv3MhCUNTVQbUTVhzhvf4KKcNoe5M5YbVLPBeeW", + "/dns/paseo-bootnode.turboflakes.io/tcp/30630/p2p/12D3KooWMjCN2CrnN71hAdehn6M2iYKeGdGbZ1A3SKhf4hxrgG9e", + "/dns/paseo-bootnode.turboflakes.io/tcp/30730/wss/p2p/12D3KooWMjCN2CrnN71hAdehn6M2iYKeGdGbZ1A3SKhf4hxrgG9e", + "/dns/pso16.rotko.net/tcp/33246/p2p/12D3KooWRH8eBMhw8c7bucy6pJfy94q4dKpLkF3pmeGohHmemdRu", + "/dns/pso16.rotko.net/tcp/35246/wss/p2p/12D3KooWRH8eBMhw8c7bucy6pJfy94q4dKpLkF3pmeGohHmemdRu" + ], + "telemetryEndpoints": null, + "protocolId": "pas", + "properties": { + "ss58Format": 42, + "tokenDecimals": 10, + "tokenSymbol": "PAS" + }, + "codeSubstitutes": {}, + "genesis": { + "raw": { + "top": { + "0x0595267586b57744927884f519eb81014e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0900", + "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x0000300000800000080000000000100000c8000005000000050000000200000002000000000000000000000000005000000010000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000000100000b004000000000000000000001027000080b2e60e80c3c9018096980000000000000000000000000005000000140000000400000001000000000006000000640000000200000019000000000000000200000002000000020000000500000002000000", + "0x074b65e262fcd5bd9c785caf7f42e00a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x380325fc2095902f5fe394f244bce38b0dc3d631cbc05f0b64d5620a71bbf2514f0f03f045328f504c13dac9ddd9b1186098aee7c46cb8d55289dbbf2433bab7a2623903a0af06322d100056125fac1df39d161089b07ae279505aae8731c4d110a54ad703aec8e80ea0375f8669d6e55d7abb6a3117678d7bb851a1bd100a01e52a4fed9003d46c454f9b620603feef8c3a2a5d7098205b8566500fda0fa0b456d6ded54538030e901c390fa37d101ff25d70594acd2df67b4493ee77a73684f25d39313536d702f4f4d0eccb899bf2d611b56e0afec7c740efba404f8d0e82a545f988c45316c402182879ec92e811e2a8cc117f3cde1f61d3cba0093134cfb1ed17a4ef74915d4a03e843f200e30bc5b951c73a96d968db1c0cd05e357d910fce159fc59c40e9d6e20203d51bba2124f480e3507eb1764fc3019ac7abae8ee215683a285078bda7f51d029338ece1c6bc6439dc4d16bfe33f28c9f0af31626bb8142849742b7a624f68070333022898140662dfea847e3cbfe5e989845ac6766e83472f8b0c650d85e77bae03586dafcdab3d4647d4dc68732a9cab8aa34c00c5edd04e65d9dd44c2a1fd21e2029a1eb2e31dcaf468dbb516f9b620fdd7c3f090d58a88e02b51b25255b2182dd1", + "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", + "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x380325fc2095902f5fe394f244bce38b0dc3d631cbc05f0b64d5620a71bbf2514f0f03f045328f504c13dac9ddd9b1186098aee7c46cb8d55289dbbf2433bab7a2623903a0af06322d100056125fac1df39d161089b07ae279505aae8731c4d110a54ad703aec8e80ea0375f8669d6e55d7abb6a3117678d7bb851a1bd100a01e52a4fed9003d46c454f9b620603feef8c3a2a5d7098205b8566500fda0fa0b456d6ded54538030e901c390fa37d101ff25d70594acd2df67b4493ee77a73684f25d39313536d702f4f4d0eccb899bf2d611b56e0afec7c740efba404f8d0e82a545f988c45316c402182879ec92e811e2a8cc117f3cde1f61d3cba0093134cfb1ed17a4ef74915d4a03e843f200e30bc5b951c73a96d968db1c0cd05e357d910fce159fc59c40e9d6e20203d51bba2124f480e3507eb1764fc3019ac7abae8ee215683a285078bda7f51d029338ece1c6bc6439dc4d16bfe33f28c9f0af31626bb8142849742b7a624f68070333022898140662dfea847e3cbfe5e989845ac6766e83472f8b0c650d85e77bae03586dafcdab3d4647d4dc68732a9cab8aa34c00c5edd04e65d9dd44c2a1fd21e2029a1eb2e31dcaf468dbb516f9b620fdd7c3f090d58a88e02b51b25255b2182dd1", + "0x08c41974a97dbf15cfbec28365bea2dac713b7f8b14e2815d297585d3581e774": "0x0101000000", + "0x08c41974a97dbf15cfbec28365bea2dad47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", + "0x0f6738a0ee80c8e74cd2c7417c1e25564e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x1405f2411d0af5a7ff397e7c9dc68d196323ae84c43568be0d1394d5d0d522c4": "0x03000000", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x38b07d600e3487e2712dcc3879c7b17c9b29cd2243b45f0d9343c591b89cf82a6501000000000000005440add43e5388a81aef665c9086d386c0be0ce75e4f8a4a3d8168e976ea821f010000000000000074dacbca0cdb5099afef67e622c147614198e669931cebc605629da332632473010000000000000058108e1651614afc6a535c426fc013945e93533faa33819fe4e69423fe323302010000000000000050412bd7d3f1075e8f8e3b682d05ea20b391c287d8c849a0e49a78f568553e690100000000000000c44b3e8efe854419ccd5801a82ada22d39cfccdbcece382304cdfeac81ebe4020100000000000000b2efe7e70daf44b3466c63ccbf4487f42c6a9f6fbb7050b849691e36ce92e3470100000000000000facb2f987caac6c1290a9784b1efdba78343d39aed805addb12945efbe444000010000000000000068a9ec74fa35b3425eaf503dd36294ba8e758e7b8084c4d6bfd547f8c6b5827401000000000000007c8348ec95a0faad6a638ef74864761028c53221bde07e9ff7c81a3f427abf3f0100000000000000ae240842b74e5dd778972e451558134f434c7a1d8a52bc70519f38054e245533010000000000000018bd0f67d77f04f1a92400421813d8927fad109b40a8689254a5f0c8b346857c01000000000000006248d87bd2a640ffe26d6b831735887c24e2076a3a0f3a74f7ae7568c276040801000000000000001ab03b1b3277edfedd24ef3d3359b449b64bd95ed82a04e7f9fbaab7b71dc0150100000000000000", + "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", + "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x38b07d600e3487e2712dcc3879c7b17c9b29cd2243b45f0d9343c591b89cf82a6501000000000000005440add43e5388a81aef665c9086d386c0be0ce75e4f8a4a3d8168e976ea821f010000000000000074dacbca0cdb5099afef67e622c147614198e669931cebc605629da332632473010000000000000058108e1651614afc6a535c426fc013945e93533faa33819fe4e69423fe323302010000000000000050412bd7d3f1075e8f8e3b682d05ea20b391c287d8c849a0e49a78f568553e690100000000000000c44b3e8efe854419ccd5801a82ada22d39cfccdbcece382304cdfeac81ebe4020100000000000000b2efe7e70daf44b3466c63ccbf4487f42c6a9f6fbb7050b849691e36ce92e3470100000000000000facb2f987caac6c1290a9784b1efdba78343d39aed805addb12945efbe444000010000000000000068a9ec74fa35b3425eaf503dd36294ba8e758e7b8084c4d6bfd547f8c6b5827401000000000000007c8348ec95a0faad6a638ef74864761028c53221bde07e9ff7c81a3f427abf3f0100000000000000ae240842b74e5dd778972e451558134f434c7a1d8a52bc70519f38054e245533010000000000000018bd0f67d77f04f1a92400421813d8927fad109b40a8689254a5f0c8b346857c01000000000000006248d87bd2a640ffe26d6b831735887c24e2076a3a0f3a74f7ae7568c276040801000000000000001ab03b1b3277edfedd24ef3d3359b449b64bd95ed82a04e7f9fbaab7b71dc0150100000000000000", + "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", + "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x38f89c97bf5b2c07c05c84eebce4ffc7b28766946c03741fd1a71fdae0942e8768cce3ec06252cf7cdad47fe1265047a9bbddb9059ee4bdc6dec83b67249b4a9342ada042fb4bbfd9b6d8c48293ffc4a7722632c843a67e608554c41d06aabc41392cb05c48fc643f057626c669604675c5ad5a836266f260ae7030c6fdc17a5438c15606f4c121376097ff0e96c2a33ea7b024d812b42fe2c741c8b8cee17e63d729053f28155071474b4686323db5f7a318cb3f088b76660cc8ff5e3e11ec32eaa3955187f755708cd6a8104314b962ff5043e36efa3ec5d84df40c58b44222126e2fc857945d01520797a75388c58e710c9fefedd28387af70880f1682be41e64ffc83f4f86cc595e607a00b977eeb6641e02a4e6e556c24ab163aecd7d146c7aeb767131602e6612e607a9eb8e26b4ce4fa4765593d032bc923ce8acadda42763d070989ead31f265b40cc7a0cd29d47799b766d6a7f084e44c82baedfc01e629f9fd0dd7279c7af7470472d1208a13e33239b484974d47cffce4ad4785644047277f22b9ef92a8b99618f4c86c2412f0e3b08a4f965f842775672043d1e259a86227e204a2d003399c2a3b50c2c869c4380c195a014a02f6d2e7048941237", + "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x38f89c97bf5b2c07c05c84eebce4ffc7b28766946c03741fd1a71fdae0942e8768cce3ec06252cf7cdad47fe1265047a9bbddb9059ee4bdc6dec83b67249b4a9342ada042fb4bbfd9b6d8c48293ffc4a7722632c843a67e608554c41d06aabc41392cb05c48fc643f057626c669604675c5ad5a836266f260ae7030c6fdc17a5438c15606f4c121376097ff0e96c2a33ea7b024d812b42fe2c741c8b8cee17e63d729053f28155071474b4686323db5f7a318cb3f088b76660cc8ff5e3e11ec32eaa3955187f755708cd6a8104314b962ff5043e36efa3ec5d84df40c58b44222126e2fc857945d01520797a75388c58e710c9fefedd28387af70880f1682be41e64ffc83f4f86cc595e607a00b977eeb6641e02a4e6e556c24ab163aecd7d146c7aeb767131602e6612e607a9eb8e26b4ce4fa4765593d032bc923ce8acadda42763d070989ead31f265b40cc7a0cd29d47799b766d6a7f084e44c82baedfc01e629f9fd0dd7279c7af7470472d1208a13e33239b484974d47cffce4ad4785644047277f22b9ef92a8b99618f4c86c2412f0e3b08a4f965f842775672043d1e259a86227e204a2d003399c2a3b50c2c869c4380c195a014a02f6d2e7048941237", + "0x26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96": "0x0000000007def964eb114a412100", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da902d496d20c019d22397accfc42b7635d94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90ffdb9747f7a8bfa200ea2291eea6bdf9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da911fcf3e922de10898cb04273301735e65270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da915fbc5d9b44885a2dce0fbaa3834ba211e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9279effc2672354478fb5e3f7e65726b668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92ffe7c0dd7d3d8d8485c403a33fb7adb6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9350ea875b4c0459b3527d475e9825c99d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da94d176c4abc6d2410c43423c2714b909c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9585bd5ccc1af6cf60c19d791bb091b750efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000": "0x0000000000000000010000000000000000e40b54020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da965bb58c29c9825c1f6727fe8c41650ac82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da96deaa967a94fa09152be01a253511479d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9829f3f4d6d7c991993e0c044ae97410b043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a00c6f5358fa04d76ce7cf995bce2eabe21bb02f2a82cb1113ff10693093377672925b23f047624c0cfa7a24a8609841": "0x000000000000000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ba2db252d1b8c64ec51b04d0f50d7d2b9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9dfc40f350cc4563ad9ddff5ad92944278eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x000000000400000001000000000000000000c16ff28623000000000000000000000000000000000000000000000000000080c6a47e8d0300000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9e6fb488a1496189393ed0a95dcf5577e7e939ef17e229e9a29210d95cb0b607e0030d54899c05f791a62d5c6f4557659": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0xaa183d0014706173656f", + "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2aeddc77fe58c98d50bd37f1b90840f94e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x380edf2a41cb81178704560b02c35f5e01a5a97a568ebc10c025ade18b6ab2fa1d98aab6f52520022d011a6eba2dca1c6327edbbcd753c170dcf0e9118b5f0f25bb414aa148096a92a1831309f758f944725653363ccbaeb21817b7df5784b8d4674bd654c470ed9b94972c1f997593fab7bdd4d6b85e3cf49401265668142584e94848b8cf2cbc9e6fd72db8d80676591b5be4d1ec68972ada48cf6fd01228712a8a03d86e6c0dbe180cadfc7994121f462b28f7a8cb1be7e0e354147624be734bef47a9e4b47ed57461e1d28cac7da327a52ebcd64d74080d31deb3ac7a7645eca3c2703db1633a27eff681d979967988c3a6752c669fd41f1abde10f3b0544660fcc9d094d21fe17cfb7426501f50cb3d75c4c9395a3140e0f255443f660d3b30c40adee5476157ef3c2a26e10cab95ec7d54b62dd220738f5a474d5f86874e06bd8fd81e50cda2bd67bf6893d921d1aae5cb08409ae43e0bff4d54e1830e58d28145a7cde195a4c834276730d30f074b212a150e770931ee9470e853e7d2247c03ca47a3201455f8f89defda4aa909cb1d25dd9ddb7fd62a940606f79b56632cd12c731d91441f0114b08d314cd3f9a9f7fd0240d467fe54adefbee4d90762", + "0x2ecf93be7260df120a495bd3855c0e600c98535b82c72faf3c64974094af4643": "0x01000000000000000e00000063e7f4c4028d97f9e69689cea528e2d0155ea2b202be0a42381c642ace2e4cf4", + "0x2ecf93be7260df120a495bd3855c0e604e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2ecf93be7260df120a495bd3855c0e60c52aa943bf0908860a3eea0fad707cdc": "0x00000000000000000e00000063e7f4c4028d97f9e69689cea528e2d0155ea2b202be0a42381c642ace2e4cf4", + "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x2f85f1e1378cb2d7b83adbaf0b5869c298ef7dc060436e4ed803af07632b89b65153cb1f00942ff401000000": "0xe68919a7ceff5bcca24e5051b9ab34b9c9f9e74a925cde4c49570cfed7bf14180e000000", + "0x2f85f1e1378cb2d7b83adbaf0b5869c298ef7dc060436e4ed803af07632b89b6b4def25cfda6ef3a00000000": "0xe68919a7ceff5bcca24e5051b9ab34b9c9f9e74a925cde4c49570cfed7bf14180e000000", + "0x2f85f1e1378cb2d7b83adbaf0b5869c2ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd0058540d061e1308c819541050e938e9005f822fc197252fa2ed5713e0ba46c46f094c0fe2307326fb057d60bbce8bdfcd175f1feb2bc7604d3068f26910799b2f5ebdfc5148bbff93d098c88f368b8ee8661e889a5a2344ad1142f6de72cbb41dfe175118bdb120c23497929fdc3aea901fbf5f6ec5254f62bd59323b7e76fc0f30180c36cf35e4cfafa724fca1e767a5f2247e3bd43a5ec62ddc3617c3ae39462e821cf3b8db150a63cb17f9629075e3b88be0ec6e85aac4324d45eb2b34294e761194ed5dc9ba317da543ad5095086b2a483a9ebf1e0d13163d251face33b2511d6f11c590cb7bd712be4d16c7cfcf8507e99b5e724e8c2c797dfaf4703ff89ac1bb3f6437c14e300b805fae263731bf4f1f773e356fc9ec166e38be7cb73ec2591317a0538ea782e76128cbd5eac1bb3e28798c16556fc11472adcee845f6b99156ecd0fb7de2f032df7f0f7dc027dd963731bf4711b91be8d0591456f2c88a40e53cd6fa13706041acd5e92a22f7e63b0a4e62fb7b6f327b7b2f3376e6df339f6926c75a34a0145c098b59d9d87028ee8b23edbd12bc05167e7629781db1b189b8b5e762e038b62678f1e95249359f34abece1e3d19b6b3af97649915761d3fc41cb71eade151d36f60b8f5f60c0cb32fb3b60fc90d0c6787f345b2b5af97847e88396e3d59c357cb6f60f8de9e81e1326b7bb8cc0a7fe8ede1322b9cd2dbc3eccbac9087de3e2425a8552aaf96cfc0ed0d0c717a9e8b9d066e67e0f67a34cc961fe221a62015d9f2135c66c5af9744d6c9acf8211ee2211ee2211ee2dde1fae4ebd539d2a23482db0b7c1b03c28b0ebfe6b3b81576cde7afb815b29acf07c2add8fc8f5b1b03c28ae6db708b9bbf0c145d214ef3b98d59be8d01a1456f875ff359dc0abbe6f357dc0a59cde703e1566cfec7ad8d016145f36db8c5cd5f068aae10a7f9eb29e00810accff61077dcdaf37787eb9321bd3a4731c61170bb13bef9dc067ddc027dcbacf06bbefc7a49e4a307c30f30180c8896e7b85b6ec9ef27b7e2f7eb6dcce20fb1043b66f15b5f68d3fcf8f9706b3e67c3ad65d69ebfe2566c3e0eb7e4f95cec56dcdae6af273fc4433cc12b396de5a863bd59b275fcd6b1de2c899f8f9fb528b6ac9359fbf592c41ac68e1fe221de1dae4fdeab7324630cc3ed05be8dc1c674b8f5fee3d6c660b0de6fdcda184c4cef3b6ec5de2f03ad2bb4e9fdee6c7df25e9da31891702be4dbc7af895b6ec5de4f6e6defb9d4722bf67eb9c50fb7de4f6e6defb9d4722bf67eb9c50fb7de4f6ec5de73a9e5d6f67eb9c50fb7de4f6ec5efb9e8258975a34a0145c098b5cde7a18023baaccf3617bb08c65e8fcf71b7ab5200116698b52dcfa3d9f8e6e5e3a59724d68d2a05140163d6365f82cb2c794e76118ccd1e7fbd599759e1d6f243bc5e92c92cf9211ee2211ee2e815e0a8f9eb25891fe2213e8a312281db9df02dcf6dd0c72dd0b7cc0abf968f5f2f497cf460f801068301d1f11c77cbadf8fde4167fbfdec62cf9218e60c72cf9d617dab43c7f3edc5a9eb3e1d6326b2fbfe2566c791c6ec5cb73b15b716b5b7ebdf8211ee2095ec9692b47cdf566c9d6fcadb9de2ce1cff3672d8a1deb64d67e3d25f15c437efc100ff1eec8fae4bd3a471ce30db8dd541db39659e1aae3b9de186c4bdb302b7e71b8dd541db39659e1aae3696f0c066b1b66c52f0ec7edaa14408419666d2fb3f6eb2599ccda0ff1e270cb5cd117bf315852efd7e356e88bdfafa9631216860f4edd83ce41abd13a68327a072da6cbe8a5f6a2c7e82c9a8aaea245d04a7d45b3a09f68271a8a5e419ba051d056b414ad82fed253f408da4b9fa053d04d74145d8266a2b168120c1d61480a4346186ac1d00986a0188a62688a2129869e184a1a126208690836c4652888a12c43450c6d1902620889212286b40c393134041235903c61c805487c80240b243d40f2c41009864680440b245420790112162099029215201933c4c51013434b2081028919244e2079634889a118209102923343251892c1501743490c79602836d4012450401285a12c5e38c10b2678a18a17ac7881042f3cf102140190c20b1d7821891738f0c2085ed8f2c2102f20bd20c40b5c0270e6052d2f30f142065e38e2852502308517b2bc1002a12d2f80c0881823608cc8c0481746b83012331203235b18818191258c28612404464060a48b910f18f180910e1849c2080e8cdcc0081246928cb4c048164658606405465460040b23293042032333307285112b8c90c04815464660a40446bc18a1c2c81446a430128511288c3c61c409234a469a30c284111118d18091238c64c04811468c30328411242129084141e80da129084541880d21324241105282d018a11e080d4148084263082141e8084261087d21048690184246106a430808425d08c940088c9009845820c485d017a19810164572504409459650240945d628f28322658a04a188108a00a108128ab051640845d428924611342217518c226414b141911914b9a248098a3051a489221a28e244101482a280248a201b048d0962232808414a415d044111a44610164132080a139482201f04d12068064160826a105446d00e82a20872220809413a08ca411018414b41610489116482a02f415904b1200809a02858420049517900a4045406680aa0250041f11346eb07401c58150174c40f095400c12a06ab180f183c39e02102cf10789cf003e907179e1ef0d48007053c38e0718327093c25e07901cf183c51e0c182c74c4b07ad25211bf0344128072d295046402101750454191796c0c21a3f63fce8c00525fcc8e2c21178622eb481da82c81b2e3c41c409750d17602e34f1d1c085215c08c20511b82044f5810b4bb8805481e08216224aa8648834a10ac10522883cc185225c30c28524178e28f2c505257e3ef04345902578967852306bd03242cb0700d0004bcb4f976f8c1f2454434841e1a7053f4a081102644388078418d1e241ab8d1c6bc82708f940d0195349c816211a10da819023841421444b3542103041dc087283204a0862031e292062e6071541ba207284202fe081823ac6852d41b8f831c50f2f404c0419230810829011b425480c809a20b20422653e190429838514e48b54526a0341c0d049d221426708f0043a45e820059142903782e800080aac20829c2088143f26e0e1e2c7169e323e4af041c20f08843ec003854f0e7cc4f0012386e1f3850f0e7c6ea093e54710d38a59029f297ca41842021f0e0029021022107183e7083fb4b0b0041694d0eac124830519f820a31261853456f8c1102b2a1b1f1741b4f8baf8624162f5072ba011248b6f065f0d5618c3e2c21a6285355cf8000e332b90b1c2182c2282b4aca0031c4ec0e1068e25e068c20a2c5841052b60b1c209523be811420f1b3d6bf4008195a5e707ab2d5a68f08029728691345a40c287831f23f8d1c68f2a3e227466a012824e0c8428810a03480f524008d9006a0c9d1da890e573e2a7043a63a07290030837425c042e2041478c33f121015103e5858e18214ba496a013068f1428307472a0f3058a0b14193a660849ea59d29141ca8c1e3474702064089d1a0871e21b42870b214a3a6ae4f0018f255065f48891a30729188f171e12a49c90638c8e0d3e2656374829e1a70a211950b1117482225d8474d14123a5861134844cc183c42304cf123c43f06c8027032b9cc163c40a3950010c0f123f849848b49cd032f393c50f172a28a1420882941094041e29a800fb89e2a7091e312a00a113849d2738072fa080c9603478d0688520880c74cef0193a3dd04943e70c1d1ee894a143868e0e749674c0d0f142e7063a617468a0f3021d30421ed081818e163a2ea8661089029129d424fc90c2052e3a42d42054346a11826c51d3f001061124b890258819d5093a5b884881c8997a847a860e103969d428e49c51cfe488a96fe4f0a04a21c70c1d580e1a750a150a393dc8514327091d0ee87840a7034156509f20c484da84ca843a835a4695811441ce167507f104750c1f2da82ea82da85dea07aa076a524522080caa0682b8808e01ae01022107991c43e05923958194065e30e22ae019806f0cbd0146017c0268066402e8469035c02404498347093c4cc821424e16392ff021c60520829ce1c38cda868f307c90f1d1031f3bf021860f1df858f2a1860f367cac71b3e5468b0f20f818828f347c10c1c70f7c8ca1f162b6e18307467c80030a3e5cc0e30394192d245011f858c1b7850f27703081c70644924084093dcce078428f347892702841880b585b70a0c079c247042a984027081e58f058010f2b8a3cb182014f153c3c3064044143f06c2124043c2ce03963c71ab3055c021e2b8034b083044259fca000350321483a2dd0d902e502941642885829b10a010b3d70818c1026503400fa802a08a830281c0829037503d45210255a6c14f900aa8b16115035f844e04211827c40052826098480691d61c7085a53b4d270c1084536d073860e135488828519804140f1a025a615041e18fc8015f1800b43f09941cf98a012b4cc407db1a30a1f6078be1072049e32563af8b050418a4f0539d40032a2550625c6f7448f194538803a83052f78beb48a10c4033c34d089f98801cf0a7c6cd11a426b8d9f255a40a061680d641142a490460ca922c719201200788206073436a0a901cd0c50b11f1c4c333c4e309ff0c1802788ef053c598814a18a09c2021e26e0016285c42a690531448cf06941a48d1578b0eac203e3f1658532563063c5019512aa107c6204694155a30e8105848f1c1081828f327c8ce1e38b0f4ced4145c21783cf8c8f8ccf8bef8c0f8d2f8c55078a8cf9be586d60e5812245f896561f5825f1811157f025a1880f8af480474b1129725890b3822152f0bcc1d3021514aa27544ea894544da89810c225f584202f3c64f068d11ad31202cf09789ef0a382203482c4f084d152a3452648972244f894f840f07529e2a59679210531073eda78a10924357081083d6050628286904283c708423f0842c19fd013868fa4a0275464503040bde0052780422089288244d099941b2b2e90d840a806b209159c10c281540f68085a67f04c1174c52a8c1ba41f227862b09a0190078a74e0e70b214de4c47eae6829c132008b8002934a4308172a3ca142132a28adba102ac20c41cb891f1b08492375868f2c7ec2f08c19c2e2678a1f2b86ae98492f7409ea814ce24acc0cb85086b9985c5a55ac64c0c3c62a8c0a5d540862688bd5172b1b04a9c0c80f8468f0a3082148a06c303520991082042439e03933a484a4053c64864c502489151873073c66e8fce0c7892240f020e167053f60a06200d401214fbc80444e0d82aa081a411011281df0986045831f303c9410d281a0229048114404432f08ca80500764077e66200404487080dac150133a63e6153f2ce091411130b80beac40f0d907c21048a1734304df033022149acc07c8919048329a22444cc0b53acbc102202236adc3c010eb1c2811023ac8cf879c190164243042d41052682489033032430f8d1e2c70b940c7e4280440c242e688901444c91a4202e48a658d5e06749880c90a031e4e587091d200cc160471143219847f478a1e38322301f12f85ce163854f1540ca40e245881a42a210d2864e179405130a730a14080a9b676810f38d1905fa654a8166092286e60bca058dd118b89084173e20848a1c19d02d80940002c18f0c78a2f851e2e9426805422ef8f122d482940e84d0f801c48f144265f8504a8991c3450e0d72c0e4d8a08523f050f1d3c5cf133f2910d2418b8c1f43f08c8047053f30f8d9e227c623841f46acb4f889c18f0b7ebef064f153039e19fc40c1a3c68f087e4ef07383203378c204112148084145085a419011a9314156041d91d345912a5e4812f2414e18540b788a60042674c6678b10117eb0e0e1c10b5f5059a888b03ab303881d30006c00001c08a2250897205b88c4887441840b16c06061898530762cedc8c10e318884217203223658018a15a458218aaa4415415da29aa07ef94cf09de0fbb283cc0e22ec18820a6178005104043c82f834f025ad0066051aac30838f042a7ca102182b7460850face00115622a74a10217428620a4084288507150bfa85e0c616288d290265a00a385a516c200bf00c300c1b801c18d123721103286901d0821a34709134ccf125a88410b5cb4104b4de183a5ce083933048821b016d66821082db041640744c41029c327083e647c84e0f3049f28f840017442a2007c0284c18c02dc6226e1d3850f181f19ec18b3c3c54e173b31d00ab004e0152d1461d5849513401e80678066ec88c18ed88e2d7686d8296287081e3178aee099024f10785cc0b3031e28f0fc8007083c3ae0b9014f1a3f88e0698367093c5e0885119a22688d2032738b900a261bd306431b9861cca529c60c33bb784189223a28e2c5ac628e607a1112420804930373035388893487104a825019d904e903e98664824443fe400a412a410641f64002418a91652412e419d20cd98654433a4192916bc82448366411a41939461a411e41f2400e41a621972089506449880c59027985549220904ec8276408e412720a49858c427a911f9052c82e120aa984f440113124103288d8059fe129b014f80d36023381dd6036f8082c045e0297e12230190e02278189c0436025701b8c84173cc038601d7018fc057bc13760308a84c151700c380601f6c22a602a9805bc82225ff009f8056c02c682afe02a780b4e014fc1246017b0146c05b78047c02828b283175410651081107f108310c1884b4422e210718ca883095cc921aac0872844e4126115f8a189952a0f70000e1250800d09880106041ca0061a6658420025321069e167c80b0100400cc20b828bbd710719134b222b4d26c0644a13221e9830e1a2d4210a111326271f9f1c15e800c5890f13b8c9c162898a9a1055c921869d9c140cc9410114284d728002a589004ec0431105a21041f9b244443b309152c4a488070a3821aa404f8e09d60a14274d8a8874604244b4c38f9c12ac941da2386162812a443e5061e2644a174521eac1024d6a78ce154b94431429519834c9218a1403e4d03d72acd0414a0e443ae4e49060ad5880e889150b102d4900985385152703683067042ee478d9c9a1626972a6582996871ca44c21bac98962abf84001273b449192031327539a68024d5c3872a0f891f344508e13ab831326454456aaf890c38e1ca5b542e484024c9c4ce926537488d2a44a0c3e729a28fa8128ca4e0e1316287252450a0f453e34c9c911c15ab14204a547ce1235394a84608ba2f8202507263b342182822307045ba5871e7a982195d345859c0fac0e445128e0c44a141f98e420e58a131fa810b5723cb0454456987460ad38b162811d888826c0c4c994b6c00e4444ae1c39496c911529509854913285a80a0776072952aa4c6132c5090f56aa1045a980142616207a02e66c60ad10f160a509142b4c7420720265ca9426517cc8c94162ad1015f930c58a131d72e424d51c0d2c5195294c88aa38f1810a5115265676b832452727035b1485a807a2a226455676b832859573c45a212a9272850993285270728c581eac34e181890526c0a4082b5088a24469c2430e4ca6f4508507263a44f141ca04a23821a2288a941c9850e9418721d64a0f4daa3499c2a48a14a495b2038f1c21d64a5114a22b44395c96a8a8890e4e7488d2240720395b9648072939f4c8d1b255a4ec6085c84a96b552e4c394221fa4f0e404d1830f56ac34512107886d52d444072651a438d181a8c88a132b5588a6fcc881ad15a22a52726062812227509c4ca00914274dae34b98f336b658a0f52aa5080890f1f53582b55a41459912243932a4d6a58f990c256c0c994ae42f4a48a1406d000fa786389887c20f2e10036e84044010a34b181051f51d82645527ca0c2c44a14264ea63405a23879d2a42801383ea0b0528a983c61897288d2044a9309309152c4c44a51142752767c98592b3a54695201a22a4c2810c5890e5188a6307132a5ad409122a58628529c143589e2a4072906a83e9cb0569ee440c4430e4d582b455188aa10f110c5c97d30218a931d6e7cb8b13938b112c54995a21f88985800ca94294d985421d2018a131f5c4f729002c585e363096b85870f256c1326383e92b03d306952d4448726454433a87c94b98013284d9c143989e204870f24ec931ca440990013a2221f7220fa8188c6c711b68a1401741b89a04ca04951141f76605294035115273a4471c284c98e19704ca17d21e388287a8fb88dc1601d8fe48ecccbe2658953a2367570361c9c6dd3c1d9b66ddb984e9a6db67c62668e94329572aec44199299dcc534a69c3ccbc316e8cbbbc91ee4e9632ca8d4b296566a6bb9b9cbb94e7d2dd38ee4d5c6daea489579bd9e4ac9392661acb93c652ca9394cc268d4eb9f4a3cb1f4fc99327dd9d3c79eeee049a508e73755667714829e54637ba946e31524a4d1ba554a6b4a5da04b5b92a497160c964aea675734e4955544a2a699492b2a473ca18bb9daa8ed967b7ca65cdc98c9200b310639494258d546ab31bc272638e41987723c0922c519297e54e6d71d089929287e70a524aa6a66566a9c91865a7824077dab873eea472b59573abdbf2d87d00b3a4da7633959adcf1d464c7546adaa63ac99407903959f260964c1d207969ec32a9c98d9b940db8214ac92ba92771ec763491294b962629358d6bb4c9cbccbb5152aaa2ecc93853cc92535288fc4e3b94019399b56e4ff3f49d16703a514fdbe44ee66e519379521959c3c13fd68615b0492997999929534a29cf9e7657ceb9bbcd39b739a3d4b4a9f1b6bb4d29e5f4a494524a1a66d624a56b434d0d955ac709c0a194fea09e4480644f4e8d0fb03f9ec73548a621ca3925ff0c611b96924e969272dc9d9e67e35596d5c6f33c03c49a1a49d7666d3c0f07087a2849a5dc4d63c92c375bdee49c34d249299d9c511a59f20c426847a746299d944a0aeef6581e91ce2092f2ae941a53a65372645e9e3c234f9edb4a161740d2c8949952ca319d94d21825dd6c728aeea4cc9a94332ea13c270e3997f2eedc9697256f6a575bde5d4925a574521c934e9f3929a59c993893b4d3648a67c63b774a6dca5d6d93bc0460254c2365197fa4a6e4c98b8399e6b8d965cea2b632f2025919a39492e2c8c19429cd6edc3565d9eeae2639721677974dcb6c32994c6bda35adc9c4cb2b354dfb989775ac8ed52179994a2a7923f326996764a64b99255d96a8ddb18317c53b98e58e1dbc2c70e48f23c78f25cfb81c254f2965a452d33466c9434aa94d9eda5cd6e69474ae9492512bc3c648a5ec2265d6a4a4b4eb54cc1d65eeb8e378a2db89c66da3943b1983a6ed524a25a592eeae64de9dcbddeef2ee6429e5943c254f2979ae9c92275366661824cb6d37c6dd8e57ca8e478c34d24d8b7105f9ff1b9d52ce69a3699ac633351b4d4ba269da00a63605a031338d52b28cbbbb32ee4ac9947799eed24957ee6e94bcccd44577761c378ecc94a9dc58ca4925f3e4c99ab6946edc297929a573cedd49174597eef25c66deb97432f3dc5d9e9a26792eed96e9b26439996564e6aedb9d93796ea4cbbcbbcc74e9b6514a7729a5bbcc734e6669c351ca96cc1c99797799254b5e39a5a4cc2ca5643a44a5ccd1344a376da3cc2a243d2fe4a8664e007a7226ddb64d45e9ea083522448bc46d53c52d6e5145378d529992945219a35c5e4a996e94d2549026a726e9dca4a4bb94f2524ae9c73393737653ce49b7f3a49452d28d9939e32929dda5dcb1ee42e658b64015293d10f59001e940548548872a5298b45c000091932a452bc41e767f88aaec90831428509ae0dc4ce9a1499115a21e9c14ddc7047cb0d2436485490f527488d2a44a455961b5582ee810a50913a22a4da6f42085c807a5490e52a0ac609252d4440727509a5c616245a7072745517ca85275ec50e4430f221e9814457152650a931cac38e90187c80f1580a8f0a34607284e78c8814911141f9aec40a443cf0f443a4471c2248a93263ce4b0c30e5288b47afc20a502453e9e34c92107a2272d1700f01c4100f8610200a2274da04c800905a238e1c14a131e5ea54991951f35567600408a942a3c9ee4d0640250a048a9b2420b4d88aaf0f041f48449d10f44517cf82822a2c08e1c45569cfc4084934971529443132b519a54296252e4a4871ea4b0545800fce06407a22a53aa8efd69420425879b9afd894234654a132644146852454a91151c00e800200a059c580169f6c78a05889e30c9c1099409f830855545051d88ac5821aa32a507293900710b802a4457a4e44054e5e749cb05004cc981c80a901d0bece0a40ad1159d223f2eb800001d54e84154d4a40a5114220a30696245871c889848299a62812a39e898a0105d2182c2e487263de45c89422451fbc3248a142756aa105d61420129509850208a130a50400a1426453f10edb81285480e49b980579b46d2c8c8c8e884c366a6a3686474b47538ec91917674448d4cd2c3e1281e9952464653e270148f5e47f275344d381cc523a3232323898351343a3a9246464646469ad1d1d1d1e4705823a3a3cdc8c8e848ce2323a323a3a368148f1887353232323aa23818c5c5618d8c38e270148d220e6b64746464b446468c83513c8a381c45a3233ed2240e6b6494e160148fe2913ca238ece270148f8ef868e2b047474712873d3a621c8ee251c4618f220e39643888bb1b7bb0d2640352203595545fd9b268645b86dc6166f4c573d1c3f27171c16030d14b4265c2603b666641d1c8d6d868249241a3f71c81d6b53f452313d60bc3a2d1f1dc6adbb66d196f9b8cdb4659a8f86c8c1c32465ef075534411cfc789466223e1f602df3eec3a7e875ba1101b6e853b1defa3e33b301dffed4e9c010505d71b93a24bdbe0702b81728cf0a50d24b634c18b0eb896d8c0075e6030c517d80c5cfbfd67d1f7718ba58035c7b6a9f2c56f6c29e0766c2e7a4926b3e29935cfd5f0ad7de31a16c98e37dd865b5cc665a7530db3d3e5b90c8ccd9dc06556f462e8d19359a66745b24fe7226f94a80cdce68084381d2f8ff375aca1c6c91835be09dc9014519be6ec1194de52d5f4765375ccda6196bcf6334bab0b2e18c6a61257f69e3b5abfcee68dc3adb73c90157ab8d3a748a3e0f66015163666f16d8c044b7484f5ee4e1861cde78094f89e4818f7c6aa78a363c7b3b724c27a6b18612d93cc2f7865f67e824abede4b303c6a397fa3e4d4b35249f57ecbe8211dee990ee579c1f8c5b20bfbe85179cbcb8ac3acf80803838b67fede8659f12b6e85ace687409acfab70d5f140b8c5c31ea7f95184696eaead9b0ebb0e57cddf1d8e1968a36b982c3aa7370645978602893e82b3975bf321abe97770cebdde7cc2970fbf87d9f95c59d627df9442d3059ff0e7a53703cb86e28d0ebfa636210ed727f294be5bc51ae5a3116e39c390def589f20a4ece2f98e619f8f2092c9a2f9f18a3f932353b09862b74bae9d32b00e5cb4f700ee993fce904fe34473bead1204f97dd3bf9d3e99203e34fa17c7ce62d603b96ad62d99e5d3b9775d25bb275d15bc0e6002ed1b51d0b97e8cab263c9aefd86ed58b61bb66b334a1074142dffcabc27926879497f7aa67aacaa676096edd929687472d1ef0a69cfaad1c995d580643aa5607499c02ba8204949f94ee7a2fd0aeeb0938b7e3ef5ed27b480514ecdbd03959c509f1e0cf134dd43f00914eeddbdcb0e8cc2ddfb908ce0360d181eb52a3e95fa07765faf00b1a6aa0f5f8713068b479d036f38cf092f1aec8d2969e18416bdd31b73a28b1348b4e3c01b94e7799ed671e00d87026f38cffb10534ff3967877424c6bde9253cbaf8780756535cb565f47ae53e5a23dba2815485a57b90f35adaf8c5e3365d588d2677f196dcf2ad25dd991ee3255a3ad22dd452b172424ae2d472e7a7a2d935c7da28023fa1b6e1a7ddbebfb81d61bee943ec67ac3d17aa4d44c695dd9b31965bcf580dba8e5dbd8115d9a635398e9ad3bc2ed4e38a4e7394edde806d7b700ef4636bcf2be5ad5dccbbede0dde5760778ebb194ddfdff0c2e2aa36b0eb9bdd7a3660e1f1ee58bef3f87a36f078575fa87ff4ebddf02919d1f24dbcd1f2927a36d45cf50ef48e02b1d41c75ea3960c7bd67a00d3557d517ea38be2b748e76cff90bb5e35e7dd5bc4381eba201b174dff11c10cb8ed71c0788e5d5bde61a181ef552efe88d3531a6b9f59268a7609453d36ba09253d3e338c745cf01a8e3780ac4827aea2af085baea1ff842fdfb7a0ea8f98e0f310ef0957ace3bf0a8b99fce691d5dcf012fd5bdbf52a7f97a36d47c477d7df772402caf97f7ef3767170d88e5f5ead695025fafdfc7552016f0587e2c3efe32c282739ae3f86bf5578ebf6cfe51cf06d455a7de0ddf6beaebc8953a0ff0155da94a411b50f4aa8ae5bbea9cd6496f01dd77542cde51d7bcacda50732cdd535f812fefa86a8445c7736ee86a961def9eaa462797ea1e6874727dbb42b486439a0a24d4bb6a747275cfae0253ff402fba6288dfbede02befaeaee552ea85f91d52750e8b567577d88b91a0e69eda7ca1e0cf1f21a18853efb908c59765c555fd1552b969bfae2f197ea393781db3b30cb8ee75c07f85a5dc7b9ec08a55e3092b223943a3bedd94cc47ac5e8d8c317aec2afe73cc288304dc49a486a02a6b48492154c9461620c134b5d47c19bad2e3175f6d8a7d6c8f4aea191e9ecb2b9d753b26b7416002db1f9832b609d5debac395447c11bfa0dbca155496737f5d6eb2911524617b0ce5312002d31250b4612ea39f5155d2fb0e67c7f3dc7c7578d70eebd4735c2b942fb771c4474bc0a44ba4bf51b10e9aeee29d028751ce7518dbae35055a3d453f7be037c1db96a2a1754bd820a927e126e14126e2c09a48ea7df8eae158874d76b7bfd8574975177ef35d701be7254a3ae3b8ebf8c688ea322dd85ba4d45baaba61ad154a4bbbaca4555b32071a9deddab595267ce9c39e30a379604ac632df26858313ad61e3e303aa4547c6928bbd43f526a53d71df5f995409fdfbc05a09efa2781b2a48eaa48aa7a45f623d7bce615e0a8b34aeb13ad2ae0c8f5b10bf569f46daf08837d3f6cacded0a3cee52ed4b387533aab37b4daf0c58738747cfc4aa054c5e2bdfbfc168dc4facc73c06130180ce5d9d01d555fa87728af33d271b4f1d7020e7c69f953166b7a52ea258ab2cbde5d7a34c89f923a7a06f0e1eb18c1a2afb573270f8638a47f7abdd3b3f0a8e3f6cca3e1f430f693f8d376e2c7f074fef496645e122a617cac9997844a9278ee9cd6450f86989d8bde4df7ce4b349a28534ae9a5e93b641d07c6e6d68be1f41de7c052cb9f7ee37120d6cb6d5df76e33f180c1f3505d8c3d52a91b1f57f2ddf8e8e1c52f9ed7c3f3c01e28eaf5b8a9072a557373d383c7b8b9a19937cff19bd4d7c5689323cde4dcdc809e4ade78d771ef9c07de58c1ad9bd3735fcd131e3f7d48d77830f0f8e9d45b227f3a47d331773d703caf8a92cec7bbef4a52dfdef9e8de7d35a492f2c01e958a51df3c8261d781b1716e6e3ec43d62b397e4e6d2a3813b3b0eb8dd35e56e4e6fbcafee2db366c7e8c110bf7d48ee00c3d83cbcf30077ec00b7573a40da8559f43940e906b33c100c5fad02c3170d18be5060f88ab40bb7a234d3f451bac163343d977527709bf34ef54689fc93cf6b5f4f86cc0a6e79a7e73ccf3b7b8f20d14d6fac8b3038308603653800db40990d8cf990ee7af79f5e5fef9a7ade8798f33a6f49eccd74d44d47a14ecfa11a753aa5fe755d1525a713f7eda7d3e95b0db90e4c65e009dcfe50a813b89d42a14cde1296f778af462b9845ff83a71fb018fdf5b5c27e1004c175c5ed041ebc227bcc3c1aa89764634778e922ee534fc79a69c12c7af66630f5a98615e0170e462f4977a31f3afe603c97bb5ebfd10b8a24da80b9c0c3241a454802e67ad5c2e5ae7fabe1e49e85f1db43ba448ca0e927509e03c31fdaf4f56660b5e94a4e27503ed3825ba6d3902ed1f42690979845c3ae69fcd2d4093d2fc52f3462d1d4a6e9bf7f9b3e5a71fa8e5ff8e9f46c00ff4bcf86ff55ff0a9ed62759ac57c7481eddf00f37c255cbbd1161d615762dff188e5a7bd1bcac6111b792f055e5ca76f9a2f9ece1a481d5a151d3f0870ef71b4825a7b7af4703e52e50d07207daed87787a4964bdb2550da4975c6ae90cf945dc374b9aff0952c9e9f8ea8c3e0b6546f7a0f496b0ae501a4eb08e9764421ebdb12eba34b744b19352cff3f87e8b46b42f2dcf030cb96fbe2b34a453e7d143f86e3ea4c3d8371fe25da19fe61ec2977d4887dcdba3b7e4e621b7173bd630f65643cf83a148effa6c47fce8c170d41978d411bc790a0c799c716678ea3838383812c707ce39d9e1e07c88bfcf870f1fe762f7813e7c9cbd243e5229140a752e762910858452cbcb887a8fe7e8706c8f21ab5b5d666d3fea086e60181fef3d25dbd0b2c767951ad1738b9c9704f514b8fd81db9c8e2e7af12b2e7a06a0b1ca40cf6d6fd01eefd1a3470fda23e7393ddea3474e8f1e38471d0785e2b818050f308c7d73e9e3a8fb088734cec39bf3330f06f99bd83847ede0c17128d9060ac5a150600fd906a3eacd121def711def11720f1e37351c8aeb4193503d7a703d7a805cd7e33deacd92d5b9afce9dc301abccc6f90d8e4d8645eaebcd103b3bad4743cf8ea7bee3a97329903b0eb87554ea70a0dec3ca51a33431b17ba062af97845b82036ec79b6e401e1f923cc0ed1da03606b3e65760f68559f33a406a0418be4e60f8ea30c3e2b5399e7a8eba9961d67caae2009d7cb2434d4ccf6f66343136a0938f5b1b835b31c3a2e72358033af962675fb8950a6952cf73920cb754aad3e9de921f7d22c3add327c7cc614e672fc9e90c865bf1f3dcf77de76217c1efeb0df1776e773049d985318afe2ebd24df23b8ad02b7bfca6098351f953893299a3e4de0b9a3ce2238c4dcb9254222a97d7a634963901aa83786c4d20696bad51bdb4097a5c6c122298aeed11b4bd2d21a70a3717a631a28a3399a4e3bb71cd7adb7d5f0d5db23187e1d0f824877815d04eb0bbcd1c9b5ecc2b69de33a105c5704e7b32d9ace759dc92403e532f0267efba86f966ccf1ec35663186bf8eaf8a38e5e92218e601177bce6d1d0d3b1de2ce19e3af754a546306b729fe7346fc98fe6bc73dc454f49fcf6e829c91ebdc7ac2eb3622de2ee50e7d64bd5d0a853cfc070ebace33db08a12efdb95d0dcfb726bab611525db5557f27dbb57c3ec347599e5dd5b6ea96a4825b6f7ad86cbacec5f0aec2a15a3ed0d0fdc4681546273dc3d70bb0339eede125673f566c9e9a69faa24c3ac79d34f4b70cbf4791ee1f646cf9bc0a8c4ac798e870e5f761d74d0e18bfd44fbf6bcc6c3c9f764fb7628dbe8792e761c8687932f7e6e356aa00f5f177d9d552a90ee7a31164a5f380173194d325c84a00b17160bbc8e5c3b1762888bcb10d715f1d4086ec936b8157b89de0e6599e6303dcf5ee848323a1c865fd00963143d1fbd5406536314fc42fd3c8f1ec217bbf476b8f5fce4d64d762a90ee02bf3759b5e183c160301778eed8f3cb2f809f8fe02a0a89a7208f05124fbd193c1beac14bcf868367ef00ebd2a99fec898fde01d655eb267be2d73bc0bac0bab2277ed627a779d4838520c1c9ef4e1895b865baaccdc617957a7eb778d363353d82db290e49b92d4fe77607790269873a4d7e77e22cfbb6fd74daa84703ab4ff127b07b066a59f613486b763ad77ddb3c18bc9f2ec1ed1dc87d486edc9e03b73dfa3d0a0c63113773cb6d1741ef26f06689bce9d2744e825a0ce9b94ac547cfadd7d5f0d5dde90391eefabefcc2575f46a92fbb70fa6bd905f9eff2f1eb296175fc23c8bd03f91fb8ae147845772e825e0d67c777e076024d1e0cd9e325783a076e1f92a7edf343d2b4cd6011776cfacc4b429f816111478f869ea6a713ec217c51a9b7a352c7d9105390611324c1a9fd8d168cea8d65404b841d41a6776353cc7950e0e3ded8114bbdff38d6ce60383510e92eadd3b4fad26e24a48c2e602e4ddba6b2edc06a2e7651a9885b2ef9d1f2546c1f625ac3a3a60c26a15d2035abe5ace1abe719dc40a4bbb66e43ba2b7b56c3f9c2565fdb8db42fbbc0e70fc9f946cf73dc31b8dfc075ad47836cfe1053908aec59a9c83367ce9c690d5c7621dc9813687411b712b756d2d0d3b24625ae5434233ea29c1d815be696396ebb23c9c3e3f69c16d1041dcff10824ed8d1911c5342289ce7a63461cd15e6fcc883052ad3756c4133a9ecbba05a3139fa9375644998ee7b46ec118c5b7b122c674b8355ff6c68a30a34fbdb122963a7ee3169f5b2da35372dc0db5ebb367265031a9dde1dbd810647a7b7b7ba77c30180c881d62f9e8256135af50ec7d1148fda36516e339dacd15a2bd9735943eacba68958155a8ec99e617699d9d93de92545389675a7e7d42f9ed5cd6cd15e25e25f43306794d86b143f9790dbc5942cfe7fa649ebe336fc98fa675d7477e322b5e825c6aa3b05ac6cfe9d1b0665a9ec128ac9635ae0f3ff392c8478f0656cbbaebc375d3e22401b7cca5e67727dc58338b5b1b4332b361a247837cf6e825d967e0cd3e8b4f7cf141dc0a7158dce21f01c240d1c53fb736568416cd746b187bc52c3e9f822c66cdbad3716b574474e98d1181d46150f3bdded810663a4802ed7012f692ec308bcf2c66f2bdf936dcda4b707b63bd3a4734ca28b8087cf1cb71510660c0883508f3c520be48e54de56bae38e0518c46c2adc30d68720f7fe54fcf4d109c0f670c1bb3f8dc7a0bc85ec3a3963772492f89fc905cef06ed597d1db95ef2ec921af83a72c58e5b93bf12287b58247bd68e597c5a27b3f8377cdbe16cb6c1c8c5e50a2a489a3eba26286b187b9e82a1ecf90cd43e2427b8ad81ec5acf06e98a1f62096e67e0ba26036d2e36e2a3c90c0306ccd3e370ab48b6dc9a8245b295c4f80916c99e31ee80db73935bdbdc6df492c87391ced3cb4b2f89ac145c66499039d949303ec91147e6c26df86d0c894cd3de181252afaa8d38eb567fe00cf0312bc5c5057ceb11e0a8e7ac310ee0052b05c044a2b1bc7caedbb9d8ed9f6ca562d4fb901fb72eb3f68b3121dae88d09e1c51442a9e5e4b838bd021cf5322b9c7dd491935e12ca5e018e5a76193d38bd1862671fe28d5b3730c4ce9e6dc75330f6ee4c19590ace00313e01bb8d18178605faba9ecda576550a20c20cb3b6b3f3b96ecc92979f34e3cb0ff172eb0606bebccc1e3fb915d23f91e7967cf68d5bdc59d7433cc44731c630dc2ee0e35242cc021ccdcf73a9025031eaf9f9f88d3deb04b86529a53c7f4e29a724e2965b1be3f246cbef7e412e3af171bd312e4974fca2b8dde246cf67400b060673ed61bd9f5c6a722bfb3e4befb95d21d439eea83b0adcf5e96ac825a1c21d0357436eeef11d181a75171b155a316aeef3a7ef0a998e5a1f540db9cb7b3781bb3e5e0dbbcbed0852d1ce9c3933859eefc0f0a8b3af0743ecf921e6c0ed13f864d62bb1b32be1ce2ebd25f35cc3a3e66f738f60183b5e7a3064479d036f9474f462e8beeb133f2487b803a9c433bd1d05de78316837d530b6e927308c7d3a978161ececdea747c37cf6f592741f626e89be8d71d1d2f3d9b9e5b85b2f06ef5c0d677392af6c8d3aaa464fc9ecec1cb71eaa86478d7a075ed9ba3b0786b1b9ef0a7535ec0e45a8777db8731f921c28cfc58e03e5d743552ab2b327c9ee8161b6643e5b30b0209a3b7d1fbd18e299eeeaae4fc8552af14c73a75f4f866daeee02315d9ec06d13189f81db1b1861eb43af81213f03b7d7e30ff1912966417097405b52ff57fb961ccfeec3dfb2e3a80791df3244fcea42be1268cb8efaa2b9e4f12d39e7bedf24d096215b747cc7f72b09b425477de5782af51daaa7c0e7f82b477da976bee3af1cef9efa16595fdbf6afbebe6bf22f595f5b1d22feb5ddc755f7beff24d096537d9dce7c6e477dd56b3aff71d6bee32ffe8efaa2f45f7d9dfefdb5e3dcb7ccf3a82f1b9bd3d497bca9be4c07b9bfc073f525e55fdc6f5ef37defea8bd29fea4bd6578f9ffec97f7f75ffea8bd6fc45df7315fefaae427dd9d81c477de1b8a6dd477dd9f8380e0dc755f84bbb0af5e5c3247dfc65daa943b06aeaabe63870fca606078e7a9dd3e93e7a9c4edcc904e2d89143253f8d4da71c72e370d014483bde76a852bc81da27bf938683a35d8e1d393630a5a2279349729f8643d57d394cdd0e95c61b9f5220c521298e1d72fbb1c2c7710ae4ce824a85d38f1f353b3869eae9f98bdfd363ca91a39ef56d67752bacf0d7e92bac006a5aeaf53ddde93d94c5fa0b3ceb076b4be1f85ebfc20ed557380b7fe5380b3d3d7f71ef51a1e72cfc65a23f7e70e0eb5914c759fce3c78f15fed2be427dfdf8a192674105157afcd5bd87e9f53d3ede4327070beff96bc77b582c9eab505faceba8f09ebf4ed7f9ebab3bafa9e11dafffd1a3c7757cf8f8cd7be8bcc75faaf7d8fee340fe4a1d481c827316fe4a9d85b8731d160ee4af1cd7f96b7b0f0b07a71ea7e7387f81c7897f71c7b90a3737d7f1515f3deaabc7757ee3e3377f75bf897fd1ab70d65fdf5991e7c75fda7fd417cf8fd7fae2b90f1f67fd255fff321d487dadb0c277eaeba6be6e5e53739cfae2c1e337f585f39a9adffc85e337f5c5e3e63cfeeaead0f6c4ef9c059d8ee63dea8b477df1788f77ddeb5fa7d7faa2d179fd8bab53b6279ee62cfc75aa3f6c4f3c0bf5b5421d22f67057a1be4ea7dbd497cd3915cefd65aa3770f575e28e535fa777a6777f81b586ed89c7f90b4795617be259f5f503c779eaabd657bd0ae077ea4be7aff5b544d0f2042fce8860091b407281620891441850404208b688e1da027e6847ddb6271eacafd7e7a8bb3df1397565cfde478f1dc7a9af9bd579d4d7d10b5250842531535401c60b5c3b8e9408c20c24bae0c113c434e1daf197aaaeb6277e477dadeaca1e213564f5fe95aadff6c4eba89becd9e7f84b561eb6273e477de1a84344d716d56dea2bf59a3ac410d716799afa52a19eaaaf2329a8900215529871c3084970c93da34c0aa0404209335d3cc1b5453ef5d75783b6273e555fa8bab227480d837affd2ea90ed89f7ea4af6ec5f5c71d89ef8aebeb83a04cbb525fba9be8eb0408b2398c00d1d942181cb5487b86b4b0e174d50410ccce0028522b8b6f0b5bfb6cada9e78adbeb2bab2c7a786437affa2f5db133feb277bf6fb2369d4c33e67b6c096b44471818f7f6eb1b815ce8f5bf23bdc8a2d6359c6b47cc72dd9b20fc4aeb0eb706bf9e5d67e4756e136227d1bcba2d41b0bc28d0e532dcf42cfa265d1a60d5dcab96a69264df0d2fbeb0a1b6e0ef20d8f7373751eb1661d5fc19a7f1dfc98f4ea7572e03c07bf86916c5cf34bb32c23bf34ef388acf3af5e5bdd683f5f5ddd4d710c79d477dcdd8aabea68efa92af32f65a1b9bd3d4d75c924b3975269d56dfea6bfaa8738cec31fd33f5c0a9af2b6cf0749c4f57299dc6347f934acd386ee2f36feacb3b8f8a83ece1e7e0d7d4d710d9c3d7ea8b0b1097f6aebee61759467e913dfc6547e5325fca569e8e9ad57c7f71ea2f3e4a2635272dc174d457f61c35d2d4d714d9c34ab287c7c81e56923dac84a3f2981d534689da643595e62fd35f48445c273e8dd1d497e9aa1a635f7dc52fa9fa8aa8fa9249b287bbca4bb0f86575008327244dce545f5ab874ae539d7c2422ae595fa61ac7c81efe7cc6a7f5c55be558cca030032780a1021c00119762172048218432a8c8a219710db038c106c4784309d7acb14c19a5b994b434631316934af38b2cf3a58cfc9255da658c541aa3442b4d9249f3212f6967ce4c810765dc4089a4592912c7e211766006109a0863866b5d9273f0811db440882f8ce05a97ac14267b981fcdf8e2430a6ba64bbd3a46e051e41c55701b1197961dd7c2a573cdec5c562e7a792e362ed68284e3d282ba162e412ed3a93b17968b3b971dd7a6694162b9b47009727dd7c265888be65c582ed5b9ac5c5ab4a02a97952b752e9f0b754f0b1796abe65ab86c2e9b6bd1c2e573e5b8162e77adce65e5d2711c5ab8dc35f7275ecbae0bf15ab2683b2a9721ae6c7fe2b9b05c74bf027dec4fbc0eb0c7fec4e70071f6271e07c8637fe26dc09bfd89af0173f6279e0644ed4fbc0af4f627fe0353fb139f026bf6271e05d2ec4fbc077edb427c07e6d89f780ec4b13ff127d0667fe24da08efd89dfc0d5b610af81dafec46760b73ff114e4f6277e82a7fd8997e0b63ff10c9af627de6815e506b86c9ecb74d12191e5a4da663ad1ef3b2aa594ac9d1d5c57b207a7878f9c2967e43132e9f5cdd3bc84b58cc15a1eb6ff7cc75fb8d8b7fa92b018c352f5b55d1bd3923e2bd3f2f3afaebeb80c7f9932e433a1945a6ee7bed3524b8f935a761f2fbd38e915975e1b936a78b112a7e23119adaf58e6f14b6a639d8499621ac326ec8b75434c65b42ff32be37d315de3b963beaf8b7bc84aded7b57d95e8c30ff570bf543daa6e4b5e57575cfd38c954bfadae968c6a5c5add5c597d4c5ad7ac2b7b58a68e229fbee076278c65b66b19fdfe12687e4fc14f705e035f38be812f1d37aa71699f7f5d614377edaf8c7bf657d29ca7a8cfd8e67dfb6b658f1235fdf4d715367c37ed189a3a8d4b3fd51cc75f57d840f39a3127d54f7f6d191cf5a5858b97e33ab4202171e13897e87a5d6183cd71fca5a3be72542ed18543dea64698ec91afa9af3846f6c8d3542ed175aaaf21aa3a45f6c89bea0b07d923ff552ed145eb2b2ec91ef954fd0b55b9449757a3d2abab5ca22babaf1a648f3c576392eca14b33a9a992e9618ccda5ec3b6688b6654e0fe39813fdbab2871b3355a31ad7fcbab48711e6daa40666200557b2277e82973d31da1c45d696b8dd09b5322dbf49a0f00b57e14356c7be2af4d9f727d4a5c974aa583cee7c3a71158ba9eb2a9653eab1ebd84725b616667de4d7b5a5fb0ba90557aa62e150154ba76566323312c8ab5b3caf6666648f7c57b7749df61846abe1b9ba85e3eac6620d57a7bae5f42cdbb79cea66217be4670dbf0e3333a6bac5f42c5bc592259e715d31bfae2da61abfc81e0dd6b1af4a767e14f37909e365633608d359b614bd7891405b7d6d5f2490b75258ca4202755b4c02719f7c0c23814ea68a659545562c973df148cab8e429d8b16f9edb1a462af31dfb60d8f5097d427ea88589918c2f92f1694a999950531213bd70875a182d8c048a5e648ffcb67ddf6ad5a116a6a5ec09df61f402d394b4309ad2aed161b69499c99600d06106cbbc6430fa858aa15f6c3a9c6328d21c73ea7026cd2c9268873226c9c82e32c66564973065580916c60b2b99f112463343222cdc7ac50c09b79651cc17cbf862f3c3e845db8e28a38ce076087165916366ce1e4102e2ca22dfe0b14790a68b8f2075387b04c9a6c71e41c2f1b1479076b49a3da2050900ae2ccce7126df6089286638f20a572ec11241d3af60852ce6a8f20fd70c9faca8ed4826b8f6841f27165916660f25c326f8f20316a8f209d527b0489e6db23483c547b04a9d2ec11a4155c5c5ff4482d647b444b16cd8534c4c5e7225d7b0489bae41124cfb4479070b8e411a41e2e7904490597ac2f79a416e21e41da788f207d728f20ad5c7c04e9ae23482c171fe1fa9a37aa71691a67995657947eb2be905a70c953a4165caf1ad7acaf2c521ad5b8905a7071fd8db238635c152977e72eb3180728051cb9f858e4b7c82a0412179fab11c773f18b9bad0438eafd2bbaacb072d4fb2b6a6c61bfa8fd99f34787477433ea0502b89d820b10520617675cfb0952798232aeadc2168ca4f9d0d4f2c77e3d07fce8a80320a00ccc4f701fbd2537d9570bd2e6da6eba06226d2eed0b86463630ccb5dd0472097269374aa252539ad51ab46fdbf0b9b62cab54524d2b15db51cb2109eb4d0357f6845b53e62420262688345df312b4e173cdef4a59a9a49a8a39c1953dcb1c9b5042ca1996104114c204d012df5c29026ef74c022b3a7684b55c1ab8e7655d303ceaa5125b7e376e808b1fe8c01757b2b067904aec573c8a1c008e5702690fbf4cab2b7be457f64cedd9e5794b72e300d3b3dbb05ddb4eab0da667f57505bda95ef6c82a3664dfeaeb933df2f30858d74af6d04c9e5cebd2d69581eb9a60c86ab025cb27b8d8219453cbcfcb1aced34a4536bd18b6a940baeb0a79e92d31f5ac610d2da5a9b98647a1027a63121c95d87cce4a6c537d126fba0ac6e890abc4f5a12fda9aca9ee97e3a71f491c3ecf42670cf2dd17cf735bae34cbc1e87a625f3dda3b7a4bbe9dceca2178376ce04769fde92edf1b1eefac490abe91c18b2e9cad654e4146061513cca221361c6f09b4a69b40a96e8ec72eb6ec021056166d3f81a6e20238f866471eb26fb90a6af815be1ce0ddc0a5938f0c0ad70b5610a30845b1bc3c24bd39d0ebb0e378c4e878bc672eb1d6e1b40d4159ec61863163766dff8a2ac37f60eb768957d51b68449f333fe462031c993cc2bc0573e460c74f617162c469b11c3c097a6bad5507e1f663064974bb28a0564ceea9278fe8a5bdae9713e9b580a943a03697fdcdaec540a539842af776681ec33309ee9f5600b64190644c7b32c63aa823b92fafee396f7bdcd0ae73b2c6e653fea13e85d038f38ee74f90ebcd16eba97d43305b09e379d5ba2d8826f632818d3d9977ade4341999ee7ce9dba0c9ce7b8a3286f3281948b1de5a8c8e652dc9fdc2cd94ebf6da6eacd70da4ca84d3b673a7ddb74aa306837ddd45d036367118613bde974a261fe549fd087f3568e3abbe6d1f024fbfc56c3ec5d353d8b9da540c95c767f5c5a52e7b2fb933dba8664079e2a95977c0a5c17c77529705d27703b3c6a0d5c62aa4fbccf244de6f31e7297537a4ab86735f4ced51beedbe9d953e2d51bae2ed19e9dbe69db136d06a96da61a7260d8fdc6f4bd315518e8b973f50476dc4dd993d3b91ac60e331ab8baeb53a9c433a64b2ef6c904c68e447ac3235b178d3010bd470d09e296348a4727ee86e038198327c3d210b9149096d3b55c2139ce046e8c99e34e762670c77805981e0d725dccd1e5960438d2406f340cd9320618ea2dd5dab94851a15112cb30d4dbd98b214a533152d2754e6b1d7b04386aa2b773b29b1e0c474a4d0587c88c4285464abb40c2ed994780a318648fd7b6eeb4d530ae8b337527705d26705dec29e167353c8546fde54b67ffc0cb2a6b283d1a2615d94fa456b31ae593f89b25a1059abfbd5e12ce989af9d2458629811bf159b69a96659a96655566670c149532b0cad6746620ad38e066311e818b54d504b7e06caf435da14979ddadd0eeeed230614abe2455b6652f3f7af2ae4fa63ddb9f5648abe1a63d5eabf1a78ef4cbd935eefd8906ae9ed68723acf9bb3ecc4034addf0f2d32175c6ce28be7b88d30f8e6a7d411ac4d2317d92b407706e33bf08917033f3e721b53f06dac045ffac485983e75778e935df462d86efa13e618bcf1d63b83dc9ed6cd5d9fd4e919443d0586fc10063eaa86913d18f8df87e407de2ce1a3ce4755f066c9a9f9a7e6ca637da4769640eb9267307594e6d170eaee3c56288cddddac8f7c5779a03ec411d6ebc5106154a83ec49f0452d599aae1d6d99ff04f0ff95b80a3189c4e43cc4d969e12fee9fb04b53ef2a9f591b09eeb235fdf8401d1de3913e7d5d4777d4c5eea281318cae68ee25e9435ca03aba052dd8738d51de5753781616c0e08574d3ff52e5569f56356566bd36a73146b4a70b1891280a09b284112bd3e2ab091edf5428423cca0144f90526e8c746bf8436f3c423e9c0bc6aa01cff3bceedc3dcff3bcef8ec75a388ee3388ee3be3b9c144c269369bb7693c964327d774c4dd0344dd334ed8b4800b9e831189bbfdefad08d59f4f1886f36a5f7562809af1019d30a25915f22dcc62d9fd6dab994bc94524a29378b6163c6ad37ab04c36dc158c4b7b11268697a5696813164533b53914aa550f7de9d7b2a954aa57ac071dce9a66fd7ce711cc78dc1ed0261bd0563586f7db46e7db4473016f165a7e1d69af66e85f8dabd15dad6cee08e66036ee50ea9d91d1cfdb31a76cb272318c2ad25e53ee5d45c8d72e2900f2536a1698d72e2cf1a9ebe9dfa8a359af6e9dcec38eb535d6651309c9d51e99dc04869a56c3a831c8564e766cc98cf25e18d35d770a8f99ca9a320fdc67a635744d1cb45739dccca321318ce0d0cb596d7c0104ad7f45992594d9112c129d13ecfcd6bf39ae9a6f0a8b38dd3a6a681db13d4ce317f7df6c936c3f6eca61a1eb569e3b618e3fc16638cdf267f8b317e63136fbcf1237fa618bc998f9f67f0667e82320c698f1c7771b207039578a64a513745090e0458200b0606dbce6d60387b5e9a6a152a5b0606eb229ade2e6551d7db4f5f8f862927b00a1524cdeb335f94f5e96195d38bb2254cdaf41c2a483aaecffc069aea2e90e9c1409fd5096e1bd8fb2ab36e9a1b929e93e7a247c108c6c5c973dc516f31e46f1294ac5d72a5f25a4945768cdaa9e068e736666da66b60a84d666d37691a95f846cf67a64b3094bff235940903a2c3ed54b4378038d35736fa649ecf5dab1bd8690fb7ad6a0fb753d9b404014457b99275fc15adad1cb5f621a981d937707bc1908a56a6e9b30ff156c43d6fba51126349f8191843edd919bcc2dbb9e9b7af07039557cf2434945103afed23f824560d94bcd5307eaf5d89ecd0ca51c3b0b33e91f5c99e1f332370455fbc92ecd933d37e4d5fd34fdf054fe067caaec4ceb258bf3ecbc54e7b778acd9d3ea44d8f5e9258c3989d3b759ab6243b5753a6472f32b17deb8a597b538dbdd94d3fd5f0a84ff1a60fc9c87127d3b675bc09d4b205c2a77381300cb363a5f26a7913287981f043021cc5a0e302e113e02806bd0b8467cb53912dbf26308ae053f231b8217dfc06dec44a25b65671c0c060cd4273b1db409fde675b7034a9e729fd8f0ee9f636d10a5519d254ec8f36088fdfad59d5c2c5c7951da9c66504b76c7a1e4ad30fe9d0a6b5648f5dbe301ad1f3e1b2d1f3affd277b98b0040b9a60c1973130982b7be432d8244106a008e20918b8b470f171c523d5b8f65ab8b04b3bd20baef80c447ac1f5bac286f8570db2673e2ebdaeb06148f6cc6bf575850dd9637d5df6cc6775c8ca9e582c3edca56d821036a0c2086654e1831cbce73b08dfba8e3ae0050c9860820b312858826b5dfb70880d87c15cd1086efde8199398a7135c0cc1277b725c9184154d68a1509e7f9a9fd3a8e5e31a3d2b0db379ad46c96a981d8a3c4199a635ca4359c35776098291d4197d68d461bca48772b4446b51168ca4a60f2fd09956a3ec1a4db32801d0126b5a97bc6c21a48c2e6af843cbc7fd74c01053f1da1ba5ce9c39b384cb4405acc7115224a154450525138481154dd9359a0a989032ba805d098096d80fb00523c9b50f2fd034885dc365aab05dc3b50f5f4d6b182f5748b8311294a08b625301cba1c609b20c0106736d7ded8da230e1040f80780306736d1516cec7704a4b1b543e50638a296881c15c33d43497809bdf9db94b35d870c3a2d1f29c9628cf0227b3e46f8842e46d60967c0dccaa41029d7be425b3e42ef1b04b2d2fa17caa70c7b47cf82e031f8d70cbefc8b33819576e8f3df94684b9993501ebda3e2f7bce5f6085e6e5719040a7cbf32081a24b7e8a04f22eff4334a25d9ea3bf991e78334fe0cd3c9da26b823570d7e834fd26eb7e93d51aba4d3677aa3774db4cdb844184d12c384a3f6e6ddf7f85342514e4be5e0cf4f334f272b35b2f49bc2909ade151531b908261ec2bb1c37825f69ce778e3f2449dfe245e5ebea867d881374a768de64ecddd70eb29d1c83457370a09b969e495a88d42e8e504a174327b569ff47edc1ad27b1338a47fb2e9281895bef815b336fb697bf4a86c8db33efb0dfc98b5d7c0afcfd6adb3cebadf7c83a3df9d702be3812fdc62316e699fdfc0708b3fbf85e1d6f6f970f3a2e7b928beb40abdb128909a935108117b9e5270ca37e5b76f60625b01e8b7ba858941b69804da92b8677e6eb1271ffd16db9298351fe5a3f54609c3602d6f0483f5931ae2e82b7389869542ac6985427f23c336dd4ebba8978846b6e7a6d4f3dc9cecb4cc4e03b7a49e5b5234c23dbf25c1ad8d450144cf6f5db8257b9e8b92a3443178c3a7020989cbf4d8148cad8137095897e937fc8d4501eb8d4171a695c8a6974d432322ac10fdfcb62481b8cf6f62245074cd6f632410eaf31b996864fb3c97fd86be025e740570d028f0863ebad8c58137b41e603b97e8e2fee8a2600ddd3730acc0179d7d362739ae9ca8f0a86f6a38fd46fb6cd93707f07ea3d51abc9a65cf98317d3677ec2196dd8159a28bab3759a5923ad354201171999e2575660a2e2ed165ba96ed54b36867ce9ce15eaf497c046110bf95e9d531ca8e286b64b4d1e1d6f15b156b747cc73fd89aad0fc7fae4d90acd31554451c51249324ae7e5334a29373beacd249964d682dbce5628da78b111a0d136dd08b068f9ef5ed89d5b1248bb3c101c1c66d9acd6bbd3f2dace3884c95e12a619cdd6474ac1450e7cf3f271031f9f86db22b40db3621fc5e8829c13a48f51a354a3944e9c3884c9f4138c3d9f559c39c1d893990c2e7e5ba158a3a841db304b7e5b21f97d2413d76725d765d626639442c66d85e8f71c95516e97d96576a95d7ecbe465762925a78138ccca380893824bb3c7ec37f3b1b96f261bd9a956719895d5b9adcfc69ee08ee41c70fcb9420cc6bcfca06d628d40e8e3ac4f8c6738866d2af10c8de05c9f98855bfab942d9f7748522488459f4637a08b3e8d70b719a5e86dd105d87c340a7d31f59a1afcf767a20dcfa98b59d3ea867fb0e036ddcb385371d03d970cf76fad5a243224d7fb342b12967027198b55da631c4df2eefc54baf98b5456ffb8d76a369df981731bd312f67b40db3b66754669b2a0eb3b6ba1a48d7677d36f6c623cad204dc52553c0ca766b99239d2c065e7b2e82539bdf34ecf71200c471d763f695fedfb0e0cb5c773b137e6658c5d1f0f0690ef81da4d606c8edbc0edde76dc1a6edf40de1a9ee3ae034ffd132739ef5bc3ad7fd0120410b0aed275958a95a3363dac4014a470a6adec929724886853ed6ab8dc72b4db40e63eb9acdbc0f3a5b7c4abe10fcd7dbbbaa71e0ca7eea7ed27a7ef562aaf0e659fbe9e92adb9fa643b87dbe312fe762af14c9b3e2487d8046e6fdb19b8e0e4e27c01b717f8e6c355d3efdca227c2ad95172b9a1e674853facf664fe937a6852bfa766bb8a5aa8e593657b8d14c05d291cb508317a459c798a7d7e85ba3bfc0973d486b859b0cdc0a3f1cb8a5fd08b7deda6f18a3b543805bb2b515d31a18d4da975b6087ebc510e3700c6a4bc410b4c6bde2d6c6a8e8c271258a4a3cd3fb714b5ebb0db7e635edda7747ab4fb68cf422a5e4cbe3acd0b67c8f1582815b1427e5630d5ab6605163cb52d2961aa8b1866b65cf961603051cf082cc139cc0856b650f7f59352bb358f1e1d621ab977bc2afa750eab9157df4933f845bfc49f146f36d98d57ca4597edd6eaaac76cca2b5eb8d4d9144cf6ac3acc851e06213df64d6c6afea6b09e42bd3f23612a7e51fc0c52d3e36416f6c0b2e9a9be88d69f144b37a632fc88192a22c653a3cd222ebd0072468d0fb54dce2935df4c6b248ea08a637b6022f1a486f4c056e442f86d317639a0a0ebd8fe1548689a66284eab0e8076aac9ae8b0c84b13dc0f3a2c2ae207b4432b3c50010b2e58ead04a164bbddf60b00983f59ee94dbd973be0a569195462cf7313a4b386317a4be4b9863228d3733e3605c3a39b25b48c9ea7657468e5a8e7294865cf9c39c347cdb44c73d1a5c1069be38e82b48c6630a7a317c39b3fc12b38622de2256ffe12f00983618c219e9154d61b25f1f231c4cb5ac475176d741137ad21ff4a6cf9a396604b106c2ee27a7f44233b81138ab03ead90d0a9f7bb46360a994fadd04a01288b3df1b3865b87d9101763accfbc377b8d0c71918315b23d6bc83534ea2bdc14a8123bde6473fab8aedb58fcf560e0e6c7c0cd1cc7651457fef2d5f4c6805044c7313e50c20719f001d298316e488e3b51374a642f2771cb447ce08330bd311f64d1eb0312b4a937e683273e36164c6f6fd017256002892ec840a28c335c14075720e14510471821082e1a7c7143726580db15279725551bb31eeeb0ea63d60dfdc6a6f046cb1b5a61889d49a2e7831848c6f84305b841072c9a596d4c181a415abc3230180ce6ba62636abcd1e12ea9e145878b4673cbde320a386209500143a0012a608831db4533171c0c47b1e5157084d2d1562a321c66f1571268e3ac2ef7ac54298088a43438353ab0a375b85cf4001688480d2bb57b01b4b9f6dc1e7d1b1333a655bdb132dae8f5c27c382194a0fe67f3312bda302bc665630b1b7cc006660c5103194c0604a14b14699c40074e08c335270f54d0f31db7b49e447aceb962c50f68734520dcc3925ca406dfaa01ebad37a6c6111dae3afc9624156662d0d1ab8034cca441268d35d8d41b4be38cde581a63a4116693698049c305d34c1a58f4c6d288a2c3d89b4608daeb8da571c4a46848010d24a03104347a804619687811ebd0f88246157d52f2d048a2eb8da181943273861bfdf5c6ce58438a30bdb133b2e870f69e61459f7a63673cd191a33963899a3392b0a160646fb8604616d101527c1b33a38dad3766c61abd3133c6e870ebfda2696fcc8c301ddf7dabc58c373a068de0dbd81963747c17e3eb3a805ba0efbdb50ea648ea556ca1570753c03a1e08b7b823918e5b871b106b5958a0550d1268ba76998fb4c2163a7e005c838f358408b742283b6d533b0ec1377b6366a4a0571288c53df1317b53130045187d07b42eca5ad6d668460900d0f29bfc3b49111c7c592fb7b2e6adcdf0926d6c8ee176871bb3466f6ccc181db2172dcff5c6c6d0a0d98ba69224462f3e34eae8842fbab13ef26154da317a633cd0a2c3f8844f1e6881a219d343243248b9da0a999140b18ced916779fa90d5d94321bd2b2444b281918af591d7c008c5b2e4658846a25214222fcf2b149f581ff9dd9e504856c345028bd6f05f7d5ce510be9b254ff8cb45286f46521771cf2bf301e8f596d09e55c28428a287c16045746bfe8683205e62074a104d1436e04050b70433efb43cb3c4c922096b40d991629ad019155c964d6e65d1867132117cd951154a3421082cb00111c29c717d1288a703496ce186185e9ac0c2956de716003a3b4b024d57f621b476cc9a67e2db9eef7667b20886e69c2b431007828ec42c0392d5d5764414c2f7d559ad0583e08b603a666d9c530cab8ff47e6885a6ac4f4c2d9121adfa3c94064405c6e68d66fbbe267c41aa8ebbd3f9c49db62f457342bde589e6f22c1aefc4ad040a5ac2172e98961f00b7ba6d6edb2e0f64bbfc10ee92935082fa74e92da189c2061be8d3a98d316b908100b3e29752ac15d17de9cd8e704f967537300b02ccca768dce5ec4055f18912212b7342fdcd2c0d81c05b7b866db4b44257a83045a6d9d984d4c11305f761924d08b7bb2675df6e84696fd066e75cf0e011cb8d5254332825ba7678f49d96312193ffb8b5bf15d7da3b36e677df8145c318b4df1095f7c78a4b3af186873657ff6ad66d7a89ccfbe3b597d12bfd0703fe79c73f78b4e90a19739f0c54309ea5dc934d8ec5aa869d9b5ec4fb48c6e966559986559f669e0c601c9d627d3b4a865f5f1e1bc4689accf3ecbaed52cab5bcd90f8bc70cb2dde5a2720ef7bce047212be09066606429d9347813bdcd2c0706b69bad6312b7aa00df7c45393f9b29b625866c9ba52eb6cd34e6770e7d65df8f5ace12a76df8e111f713c91c0edb6e6946c84f94995d845cc112ce2163fdccfddf0b3ee7a4a260c1665944270374a8a6687db43edd963a57d7aac8ff54609f7f858c31b25b168367dc83f6aaede28e9ce71efbacddbbca50decc00de4328e7bc6d56596090ccf69db766dab32cc01306bb3ec34639e40684f8e54f20ef7911727144edfb7002bf45a9f687ac8eaddc0c48744e404c24010e09e08b4dacf6d15c47d606cd662415a3d224d4df8584086706bbb96ba345d1b3ac2adedc8f6763a55283b4b70b2480210daf45903b3e253208ae5993a30b67703b74caacbd720af0237d9d36d120808f7c86b219196b18d2fdc303214a0061bc8f4e9a6cbdf7002e335309e879d63b21570360c04847be2379e5b9bfc46277ce1ce0908b74cf452d2cbeda6cb533d7df67aa65385d2f566dace52700bf4799f1dc7b4696f030315b10cdcc3f5a237888178e01ed351a96f00dca22b06ba41f6988064903da61731e3dbcec198a58559a60f71111e985ec405eb797cd3390f8c2a8e4bb4e9b1f9218649a01dee317ddbbef0abcb3b6d52c1a2e0469b1ebde01ac3c630dcbae16f8c81e196155a684338b008982fdc2902e6d31e8df0f16456c6d574bab5e906316e702a668e935e12ceab45b3190766f155e01acdffc2a486a0c02260768a80f9f81d08657df83248a03806f7986eda4c8f4c30991e61dc8a373d6a8948310b6e853b6df26205b7be700b0b6e85455a7ba7373d8ae19677d3e318dcea6e7a1ca34d5d8c15ca2eb5576773e0ec133899e5321d481003adcb04a64d5f718bdef44d02c99bfe49a019c79c4ad0f542e96e3029a57477f7457cf16210b13c05224098b505581f1b3a29a51f0476360065e7ccda775b125f7c18d473a565800b17640d7cb18a7cd16cfaad374a369c1d6ead321b4a50f3a12c989e3feaa33e6a2ed29ecba736c1b458cf9a358361d72b969366e16c1a190966c658ea78f6a2e3105fd8f56a1523912140e239a8e3975d42daa5950c412dcf5abeb06b0eea3965aacb17768d624f7693a3a7cca475365dcb6af3e1c469b37528df31cba667cffe98359bdbcd865bb37bb7a5c32cc0510d67cbca427cf147cda912ecb61d4bf9294f1f9f5039ebc6290c616d5a87524a29b3169a8febd3e17c71d29c5b6b5e763f915356c91a0476b240d9e9f92c725b87c383a03daf7949e6b729a59cc2407cf145b3e70e0eb3966a9aa669332c624e0b6ed66de92efd3efec9f225fdc4a1a7200e4d3f410ee28b9f45b4299db34eb9c53e7bdc6c9fed9f649359f24372ca6da50d77e05b1a2311b838679cbbf16836e8978242f8fe84d6d91b13814607e98d95614573a970c5e7d6c603c76b60b89aefc068f2c0e51e6aaadae9cde94f4cdf7e327dbba96e2cad863c347d56b7860ef75056cdff4e2c9562290ef6c58e33c48e5fca5862074b3bd0d21c173bba24360e1df7c21cdff1158ff36836be27aad3702a107513f8c5abdc68d5bb35c818438ee146cb31da6829b36e3d25a87f57729afbf7cca381e62ad54d60b86a93c994aa04386a4ef57d99f5fdbbea26d5516068f33d01723ca502555fcf00b1737c8855377d3ef366409de62a30e4a155cfbc194cffbe0c64f370b379f8b54dbd21c051dbfc4bfd3b8d95a34e551f72daa6de707f92bacdb9d46d9e4adda6b25235e4816553431e9ae634577d48aac0d0e699ead49321768ed38021cd51b5d9f8682a0d39aeaa4f723c559f74577d886d4028ab56fd03439a0a65d539aaa98650563cc070f6ead25be229e9ea6496574fafaae18ebacc5a7d326bf5cdf0d530b68ed77cbd1974bc4607181a758d0a945d738e7626b0e6d19b21a4b90a87b691b2a33743f89de62ad93a6a88a56b4e4fbd19b86b6e9ae13b4db5a9217d91ec9a87935926138e1a1e754dc5718ae3436c0271a8541554351b5f9154fd04164515c3be9b25b1691e9be65ff5cef54649fcf7f8af86a7fec027dcb773d153726a9aad0c237630a6b9e8cdc07ddb408e0644c56f6480e9eddcb9e5689702c355a76e03863cb48d4d7f5f6ee9f84aa5faf79b550dbffe9ee33ac065568e1a7ead7a0da8fa32d0cd73e4a8e1d6aa1ae2b8cd6b7e032ef7d4d470ebaf86dd531f9229706f0366c7018650564d732536cda7a7849be6d15b124ff3ad86dc69684054f40870440372b307034d0d63d31cf51458f30fb4b90a0c57adba4cfdc9779ba7bedbfcbb4d5d66a99e7a4d557d48d280dc2a30ecae35ea3420f70dcd9fa8fe9da63699ef4689eadf557599f555efa9ea29e146d527dc63d85528abe6eaf6fd3a24c243120a6b28abbe123b1e47c7af38c5846c630d08cc33cb27720a0e8da663628c310ee91a9845c5c418a31766ca340f5acff315ad9ff063dd3a49030e29c639c323de18679669ad6519a5fbf821e6ef8ce71863e448797e829c446a91720007b461d68a594af8429c1f191a800cdc0aa1ac5a7e2651b03bf3c96f18cde7ee03cb7ce1cf0c052e6ada762a5a6b463db32ed9e9cc42074be420a9a5a7647a200aa1976790ce24a2107ef492d0ca1e8842f812dc76c54b3e389915199c493f343d83f21c7734bb30eb888274562a5a4b593b666d31fecc8a59166e7722123e286ba63766c569c3ad048c11a659e88de9c08ae652bca56876f679fea1b7d5da744e1a9254b4de8c5aa39fda331085ecb34f709f816c441432b73292066e739cc4acade927c849e090a4a235a5d97c0652baf121d7ed5b9453e07627bcdcb4ae77a2a20d0e17c32f5c3557ab4c28ddbdc81e58d2344dd31e14b4f37daa237b1b9008f7f06b401af0a4ed2ca97842c149e1e353ba4b1d9332f06949f18ddee42e691915a60ff19e977bc2ad358e4908fa3e551130615704ccc7ddf40fdcb4a845ed282d6af7b477da230a0c5721ab8774ac55669fc0f05d34bfc848e08ec6d0bc686dd36078a27dbb06864b669ed36ab8645a7bf8a11eda780f57bd38340fdfbb4305d25d381eb26a1e02e97d38a4379cfd5181e3aa1ab00898cf74d291c34655736669e7d380b306c4398141ccd2ae0364e51842036e9f584324908dea7c9604c271be0a5c314bfb070e314b7b0a1c00b3b4a3401b98a5dd036f6096f60e8400b3b473200eeba31d07b8718fb6124806eed1cebbd41a0cdca72d8452350a4e1aa66870bb33bf44b37a634b6eb41863f48fde981856740e6062acd19cec681453492ec15d5ad33aab4974e5246669217d16cece1e72cdb44b0f86d8279b673544d13cdcbeaa67af5906aa79769b1a16cd4d02d55c16c936ddfbf71a70b927751a70b9e70b8b6473cf52a6d3371b1faa16cdd6ba83cdc6b7d522d95a77afc6f0247eb6569f74559b61d16c6ee32b921dbffcad61fc42db549ff035255c9fc4d3d62857e9a54703ed582bb7765a434eea2c034f52324bee304bb2ba556b8fdcdab34f1e1a4acf2984ef55873c6854626735caaa677d123fabfcfc102fadd1ef8d851184e62c3ef33c1a62493d9b5ba08f633d1b28ab61d16ced337ee91e462c3a6a9f9a119a764e9a5e122d3624a79784665996d4935b948d884616895b19e0246e694966ac359006ae93ccca485c6b153c723a3dab27d0548318892f0cda3616ebd5da275829277106a290f9a9512ab2292d83e2cf0b778408103091e5a46f7c479815631d29ddb64ddbe8b3ce8e749c603a7e88713ac618671db25bc3eff4ee16adfacca2aca659a6d5f0a8837af787ddbad0a6975959982028bbd43316e10b67470d15fed0cce5488ba737e677b8aee3c255d31a9e866a58d43284d2323d9cb29ddbc08e085f10b33ea0e553cd8e308b33133899a56535360581f404c35587abd5fcbe55c755f8eeeb59b7db704bfbf68d8156dbb6d5b941dfece8cd59a1ac7a0532aa20a3a5fc6c596fe48ffaabf9705504cc17ae1956fc0f122875d4c3cd7bf8759fd54c0d1228258f1ab37964be4eee929979b94b605d375ad6100aab23cc4bb2b2fec0ac08852f2ad123139bc4d0b8a465710a9f04c335c3140c174c371bdf82e93022f107beede1c7ffdc685395da4d6095d99c4623b8bd2d180d08d18599a6b3b9cff33b70b9c74c5c323197c165a6efb7cf3967d1909e6094a0e63ec130a86750cf4730dce9c87d192848f670500c0ae223beeefc30a853e76eb3f970563b3d51447ade9ba7a9bacc9aa7a3400f0c8734ad5566f3393094a1e9a597e454b98eab5076fa95451280e065b6095cd60c1ad3ab73848a530c7785f693ecdabbcec47135dc38300c6aee2f6e4a7345cd716038a43766993653f7ee0aed27f4f340d315bf31d0c660309816577c73e7be699d77fe32503cc2170269be693bea7c22dcdace50823af5ed747e0afc98c57d43811db3b87fe08a7bb87be06416770ada308b7bf4927075fb90dcbe659582b376f30afa1997f0853bf4bc4da99db36f91d20a25c8c80867ac60c98b61f21765c934ad4f66dd6a973103c1f159cc9a4066a6adb6ceeba8683584b2d3d969993599456b58447b7bb655d329b89324fb46c5a8e94625369ddde439e352d4aecf3cce3f66cd1a4209ea24eb456a83380429a1ac3ace56b2021955ec00ca6a367f8ae1b6865f6f77fa30fb66a010bef8ec3c39e9ebea3c0d8b66c7ef65c0452cbef85595e96cb8150e1912c4401f62a0bbf8321460856ae016377f7a914aae25d3928fc3e7f385acd0fc69ee7035a4c3aeb9095691af7265eb3d95f715aef79c04630cd69cec26e8a3b9d94d904773b49be0aab9ac9ba08e1ccd6ddd04713467ea2668d3dca99b604d735c37419ae6ba6e823fcd79dd04873487ea26d83597ea26786aeeeb26686a4ed54d306b8ea69b206daea69be06ccea6c3d14d909bcb61538323878e5aa5e86b21fb58ef969940848114d708b7f339dc1818b1ee76b825048c249a83f0faecf912e4f5d973d264667a45a02934328d0ccde4c586dac2e49de0947a82f33ad0c90d781b11a82f60a95313bea90495ca0734338d9a4e0c9b530d70c43a9ecbe1450b72e0b0a9a1517d2994d77127d3a6033524045c5ca3e3f6898f1f7d9abf5e7c69fee4ae11c0c5ef4e945f336474ecdbc7ba20958d1d591d953e1fc584bb346bc8923564f51823be984edfb69b4e9563646ccad0b0991a55163695bbc4ceadbc2ff59540ac146b662fb287b3903d5e207518cbec524fa42454974ee9a45446f59951fd3046a582915121a990caa892544966be2eb2879f458713298c14c270e1502da95435626a6a4ef31c39eab218078eba32d8d8d0d4a149435353836a9ee5ab79548a4a613892d9e298d3b7a8a218edebdaa28a4b1ad8b12f56ed31cc6743b314c38859da92e5bbaabee6355b54cff2d9542c352a558d64ac1c35c7d6875335fcbc1aae3eae863fd57065aa216bab4a1c5b336674d0022742c04612a0782d11b6641143461a3070bdf8096e4c0113023602d74b8291451044007bc20b5c2f0ec3a50d27106184332e19546490a4a04599a42e133695a6171920c1c5ba41970e27120e929a63ac301268c892040a12238186788c048a359f151b237b964c56c3ad0cade1870333b2677bc80b98ecd9fe82629a2db8dd0967acf746352ed55559d0d864f1c5e65f640fd3dca6a66251d5d985662ac52533a90fa9059a313bae834ccd55aa8a85c771dc2655b764497dcb0ae7aaabcedf0d8ec683c7cdf6954035b5e63c4c5f09b4a3c6af6b55b1a86a2a96efa7c7a4d87d2275de27cc435d9a913d66d84c1996316dbbcc62335d7e319d2ebd9c3e64db988c9463e6e9a598ef5952dcd7b5e5ab2b7bb2cbec1c38bbc4a52e4bcde71ec625321d32accc901bc4d88c04622fb287bfa16ab87d5e0dbf5557cd5433cc55f612615ea298ed5b5a4533cd0fd3252e7551ead2a54c98e632cd4bbb2481be94989ad3acc6d05c870e32aae7c8f12c925f58bee3c0f12cb26249dda6be6cce9f5d24d06b556b903df135e74f2509f4d251e369feca515f386afcf7974d8d4f9d3f4402d55496a419126e2a530dbf2f5c694322ade1b7ea708b97357c875ba38e3c56b1c1ed0ec79929135de18ae9fd0646d78ee9dda50ea598e945f6c036a42f693f6112e84aab2e5f12d2b67d52cc94528af9b22481d62566cc24d33cbd7c19239124d0962cf45bb46b5e4c9c1725cea4d4e55b5e482db84ce7ba2449a02dd9b350ad4aa48a257b566592440a2552f3a5981db391f9caaca41909c425ba2e7bf8524c128f21d325298be673920492cc5d9a3f2966c5493bf842f925aeebabf0eb188b64c89489b12fd14c982c604b3146121346f6f06338bd347f7a91406c050dd460230419b8818b3fbf4820d90128bc4145154f74e1e2cf2c2450e452040fce9839b303177fc624d04f0d40f083335cc0b8f8338c048a2c7802079098b001988bbb343fec22815ed1753a9bceac9d1fb398c2f17f9040a72a83ec61315cfc089340a65a83ec617e449240f586f36352c5a2551cb0d0ca83ece1f386e1924831ebc397629a2fa564c9dfa42bfb3257b78aae9abb903ad76a7be2797be22ca31d49fedcf881ea380a96e329a45e8ae3df529bab685ef33076e9fd72cfe66acbcec91a24d00b751da9d473d4e845ccf71d478d5fc6a82a97e852dda6d6542ed115c9d0ec55601cf381510c189740560d3fc81e79ee546f903df21b913626f1207be4c62e739796c2c487512964356bca0f99f334a8bb37743af72cf2f23268db4df7e2bbba7d12e8c5c59feab792402f53fc565797402f2d3eabb4b2644fbcdc5cc0ed4ec8b178f970cd7c3edca559c3ad21abb7866ba6654ce3cbe8b178470de1de05997e7a1895b46fcf22b1d0670f374c8751a94c876bc64c87514902bd5095257bf8de8b7b9deaca1e53fd640fbfb6bab247ab2bd9c3afac86693ead973d652450993264c88c690ea3d28a690ea312c77a758c4e47cc9305dcee8474a9f991075f48bd741809f44add8b04429d4ff9340b09949d4f6312883e05d2ec95792f0f05a2be9e02a47c5d6183fcfc4b96693e928dcb742190b84e2f308b760fcca26560168d8259b4fada2acd7c7c9b4a730cbdacaf59860b10578f0b81c4f5d5d791155d0891aa2f0b6c7101d2096e80c519d74b08242e547d1909610933ba7811c30157162da84ca8542a7335da584f928e318466684613001a63146030482c188dc843025dd4d4071400109fb0545a9f0ac42408720821438c2186800100001800184dc000a600c2c1d94553a2a299258205e45a745b0e0a532622fffa44a7ca3ce7ba36d808847f4fb94025b5514101edfd170a477ddf9bec2a9ff3b0fb520c84ba0a6e9bded66401f6c18b9d2397e62af84663026c1f3971e67e95202bca8faee684fd786305aa7e964d2a75de25ba76109d00aedebd41023dcf25a542524f8ef8db11074156b3eaaf18e433f3703ecd49e04812a5afd8875919c4c18881dd4dd11675ba62bb8b0576cb434b2d679d9430265fe522365e9741fb8f2b283296ae624a086caeb04516e678deefbc62774bd101702884cb21a23d6bfc2236d491e0716f800a0d8ddf2f1f87b9951b81df69dcc02e18c22c5a8afe2f6d62779aa69b59fafac618d224bbfffbc0760baec0050ddf8b682d452c2fce5d1c374e3a38c4f0fe7b94ea55ff4e3f5a69fe5677b39a40bc2b62adc6ec64f2994ec5bd6a646e78d89b02be14389d75a5d8504a423de9e4bb7f230c5d8534dcb9d4bb26214b4481a62aa2567ef300376766e7092216b97eda8b5c1d94cead18e171eacce317f79ab331bc56bf09855e49b85b458a2d938599e876c0d831ca0d289b69e5094a8d887c839b7df2cb755abdd2218c00a84f9699d528b75d481aebd03ba745b1321357205e85964dcce3f32e129e3306e5f0c46b2cef83ace0094861f777a27ed1205cdb559cc43fc404a260cb709773f47e730857001a8c0772b17e40d17ae373ec51f004da9f3f08ca4dbacf07090e2674d08731c485b6f5fb722feaa48248e6a581b194d8e1413f7d145ef591533b1efeeaf7a9eab9aefa69b615223a60f0b961e90206a0b20a1717db7bcdd458871e5b370da4adf45fe95527cfdce421129217fd7534f00b5047bbe274a617d345f81fe991e51d4c2ff500432c36ce02765cc706d28f1339ca8c2fc26b96a99b7bd50bd6679f15ffdecb87154da3e63878ac8963613baf92d77971ce201ad0f435de65b0cf6887558328e437dbf177acc9a1d894e7b39a5838d1a96e6e4393d77aa7cfc0ca570bfe220a4a8d84daa76b56f760748e6c80a734de07bea4fc44ed10cd97cb83783f4c442f5fb3d2e63cd8f93b03849139c5f40929c5c8f8fa8e8c3599b4fbfee879bbec1dcef2631f7843598056e5523c43c8a20f664c64c66eaabda986a8f6ce67fb2c7ffa6f4ee293266f56096292b981958c46c72fdc31af6a595ce4e75c813736124a5cc9840d877480e3b6d2b6b390b84e90ea6cf12e26740d102f8dc75ddef18b4171a7479d6580e7d9758efe5ae5b1a5c25c6e2eb19c680fb003583232b11c45b406ddfb1e2c28d5294862c8ffdfd336425cb80c348f7e34a012b41879f69cb0cbb8856ae9508019bca9af8e2041b6aa5445dd1d8d4ef9b9aa6b4620ef94c61851d4f9d55e866746257ce17729ee96303ea2bdd9bada05f9ca5bba1e707349ab2a14b4369e7aa7b19528a1aae7b3c46aad879ddb4817bf3468d6d395a96f159a23bbde48b47eb6a1c3aaf6280398e27363bdbe45fff1b96f053d687bde70b5a5bf2e4b643ec27dcd1c6558eaf4f982ddf1e0272cc2e7eb1b0af278e421a6676059b102c0ce9f8a36a88ab855dfaf808a4d5623b87be742ed2450cf6b5f707a644d4f4bc8407efafab476d81fed165a8510b251011097deaaedde8ef827dc37250074950b15920df1a8f28908afc9fea0163895a3761ce54d28385d384627ade7f781d819affbb9e3fc0124810da67fa5677500f5fbc7704c145abbd66a047d306e5af07c25847b3e2ac763897d77cac82b8b645c12364aa54e2baa71939cd679faa3130fdefcaf54e53394118f5763c95d7f5d167f8dbbd01c16aaf5543de4c563da6d769a69930ae1a34056dcf8901072ba252d51225cb1a76de7920c2052d00b07c46c31885ab01e8cfb31897ad8132248444b6444a5b62b69b98dc1bab790717917fbb5566789f062ab8eca12945d48ae1e719dc59ce3871cd6b0a72c64da714889571ca5c3c7e8a9e166978394315b7a3674af2c5483441e4834bb2fdadd570c4e71452d9969d502a1c1a3a5271f6ec07ac4d5b4739332d4098efd5cdbebc9c746136295494278ae60cf07768e725a22444e6d523e96f707feb14d76dcc9201cb66049c2b94e0fdf32a57057faeb2f2895aa9c5473ab22814395df5f31166c603b5e3de54c259891e1b283396f1ab1e140cf0439968e66fb364cf33e8328ea7eb97bcf1cdd13f058d750cd5c6e4149f5bd516927805a5700f995a35a3a3189d1a3a0c4c4f667cc4254cf2e0ddcc044cad15397fed22f81e4f7dc2bc1a9295ad0346ae5fc45c5a5fd9b184ee277fa462d59852bc661e5213d11c74e65d2bfd3627ba4c909a50da87690c499d495dc4fd7341c9c0b8bb3e27d0c3b6e70cbd3095259cbed550dfb406133a988a31bea2cbe5c20104d4b922b33719c36fa8c7164c5c65959d4eee0d69b1da935988c77b95e212df9ee886178d68bfa31e59e3f01c3b87d819a1c1210dd4facd2da5d425c48e3423b7b8bf50d9a87d8aeed26ccd27775812e335829d39080a3eb4dcb6fce58a4510e4e81340049ac22576c42a0562f164c880b9f32f6608424768d4491552cef8c307ee04ce8f81362ea88de1595cc00c8d9540006774816f9d7715d1ed55022d8ae809ce2a18c027b23b33b99957af39a766320af27903dd45244e56f12e4eb10dc0a56181a1bd967577b4a32313b23c1e1a030500a77d390e4c29721ebfeac3fe744a2bb91c6b34b328f010f2e2bc82a20ab75623d8e1d7b14018ea3dc0aad1b55a0235a8b1b1891b4343ff1971f9d6062075489b43c4085a4d1466bc4bd599def928bcfa5882a200549945d52a89cb84e6c0410184efd3a525ecaacc1248499fbe7bac0733fdbeded0628bbdde65a44e0f3d2e40a34fe80ee2091c9845b6e06828f9c86239d3c2207bd9ac2c7be7b49061ad5a47f9954c666505ffd4f1b1c7b27f4981790fea1886f4387096be84adce097ba850e9ad0eadff267fc1295cd43ad1464034aec41594704a559a2493324e33cc0df1b47238a81b698c012bd6e8578f6c20685cc6dc80c8598daa46f8da266b4897015ac9cfb8d33317bf8a564d539f8ea87daaf0bf7df89cb5b145f0f431c949429422e6317e586604505cde881aa913e77ad13017daede493cb069361105d735a49cd85ab782425dca4ccc2c500756ba4c1a17e7d763cbc0dd6c00366c6aff0e0c7aa8d4f51131c7372a6466bf93338c76531fb1535b787da4d3440db369302d4c31ddbf3d556558d5cbd91ab91a409b5d5492972fece24cf02e3c9b4fc154a2b9680f6b31e6c47cebcf41bc539efacf12a86a208eb386aa6b3ee2b2b786b09d88f7a542c15fbd6dc250c13730378cbb1be4e3206e5177fe0d43efa29d8eb407177190951563d5e0d67102548b0e9ad5b730a192eea74905d0e79cadbd3a479f8aab92d2709b1ae4b66bdb5ae27081c0fc858200458bff002db2269fb244e088768bca09eb693068363e2e3d3e2621d571b08c85b05e76dd54004099c979af73b74446c1ce5bf634bc144bcabc3887090722f36eff26dbe869fa016fffed61c2c13018a90695cc406e8f5f249b3cb07aacfa922ee5ce86c205239bcbe2b6616f82509a551f0d2b17832c7548531581f3adba1890312874136b7172c823fd47427d794407105c9441bc37e39002fb8196de88795870147e198fcd99d50e32d660b49b5fce164421c98285b55a21ede77da919df09563048614ef921960f4cd94f4b71d350b164ee2c9ebb5fe0484641fcbb87579a764a2c78a30ad507ed1053d5bf083cf206729a5420199cc0663fde2caaa4217fec92eb740038455cc29703794a3717880899667b02e8f5e82f40df4aa07a898ee484ddecad3ecee20f0fff3999327d85e5e2d91da284ff16f0a4eaa5c92cc48c5363e4dd90d2dc80cffa8577447ca50c70c7e2cac82ef7d0868bc3694476d07079b6ec58c93aa81b14f4c1fe8537997ff652dee6a79321c23f44e7f19f663656bd01accf39e0563f2c0bd16709fe01004c314dff27c85f9ee6de1a2a0778ccb566a0cd10b1c77e0b59ff901a8142d2a2273f1a8d24cd2d39b59b3b4d488b24dca424197569d81def01ac52d83986b9a2d4e028c0d507657be5f4942901483ab9cfa883ff864256bc3e7c452fd0b526ac4870b974982251c111412464622d576c3b2e497fb3e9fa4b4b4fe928d02f73f4e16b839bb091ca092159b6f625081fb2f38b7a89f98725cef1884b29b17fb06546441c5fa3aca4f9eee1858e2fe4974e4b5030d22c729b544817db2c9e287ec556a5e310977e1ee6a001c2f49801203be1ea7af19cdb50d920d4599d8096bd974f1dab3d1869d5a1a2b027dd0506700d07e21062b6c8700fab0b2e81d5242d40064e4c85344ea656b0a08f0843aee614d541d49b4d9eccdb6a2e553443a65c1072325e9f2037cd5f61bd4c352e93688348f5b47fb9a1567703f32ce309dd5267824fd7a402eafb8ff297257889f1b626d7449c0365cb3e9841ec278a52817672b9bc8521f859c74ef003fde958d7810516d1a14fad4d69db290d1d3bde7f394f057998148de17c9b704cf18506c187f6d610e6da0a1ac1aab4c1129c53c3e2bfb40fb493fc564ad38b2192ee7f58ffe3a79b17500571087cdf01b18633460f084b54cc30bbdbec173ed94517ccef4873cebc47aa3d02b99e6e190e2617de04f4aa93ba673474444321a7e6af1d474bad78be47abd5addd8dc5137050d353c123934d0926de88000266f9df0e8f5553b6a5e55970ead7d4c10a9bbd6f7930a95467fce07729b1ead57c07a8a5384f8fb58460295701705845c47646d6a7bf7dfb66ab5f3b1cd349a04c78f653e12b3e4692c5ac18526b9d586f27251f09b0ccb1689406b3f69dc52c372be8f53ef41a3d067d8dde47afd1e3d1d7a977c366f05b23b35684fa60de37479658adf4723896505832a0857973d286ed8ef3f536eac6c5f14a064a9a0772b4e323647687f978237d59aef8cdb8085407ddf3af149a5504d6f7bf663ba802dec1a5235403cf043c8c3d8b93101e88511d88b7480bd94e05217d4ad95adde27ca12eee5efecb42c25d8084585b96ba76117919d7864da9604ef33387f1ed823336fc118b210838f4f8ce4f98e172f48070aca1f277078d6a3558a2e8def2eba321bbb94af7908f62f0027650c893adf7761953cea5c4d34c8cb261c889fd7a8fa45358a2596b64e20c6f930433499b67c3f988521cd65bb29a5d9b380aef2aa0554176b211c4edf28bc403154de89b17e219864c17ccaf098c4cf59270ef9535c1bfe21e059be34ed89bf1c13622eae8c07a3d8514ff7f82373adfccd49c2c5c1a2ac85301e41b12a3c871461476979b278b294e4874ac86e70161b8b8daf838727c93d54660031d3b5686361f4be57955604dbf97c400d1452734755cb22f75542e2e8ee6ccc5fdb307476d8e1d7c9a4e0c1a87d79163cbd233ef349fd984fa682e5507b568de97ebae673721a7c87d8ac61787bd039001483d63c1ee981bf8e837a49e3f3f86a5dfd5cd639def58d81093c0f0f1e5efb0ccf9443754a8fae795f2517be6ce86736097e2e505b76b1d6703cf13d0ff360db06d890c3ea7232bc7394f45f446cf4c9d9c4780ec3ff3d6eb18220576d14353456a30eff2fe189ce334c3357ad2d6c7e652dde9e164661267e96435ab984a9c8d5d72732591d31e97f76029c6f7200e02925e975a95459d7dc901a56a53bb783ce74d140e66fd590e0c4843407826829f2dda521fbb9ab5e9d82f0720a542988435eb2607069a2616da17c4d8b5af302383ebf35593266232d222b40f47a7a2200fff6ef8f2ee3ac3a7e02b7d5dba90e13fde67999d916ffb95d111d10ddd853d8b0bb2d72becaf860a167a9d02ae0a66839e67c67ae097b43de063c1e7c0e838234c3b3004660aa6782df3e93561f4930bff0d810e1fc4675c0313f3a131defe4a844efb55e67f24f2cdcb15b16da0e8d569b8d310b26f89e678a2b82c60c7f5a803e742b77e5a30a5a95d9617042071c18a4e10f0f49ff5586cf6312ced0e58cb139f53b1c43878821d96b18395228adaa2241aed62964f5824012fd83a0044941c56a5eb56752121576d5fff7d8c87c82eb326da356af689d0087cd97d3509a7a16a81cea6af8001cff1dc01b565116f04b97535775dea4c607d2b6e24e594f624416bca0f19dbcc85aebdf0a3344400cd6ccf3751e69c236139abcd570515eba886f5ee3b602b1b6a98352366076c83fc72c13fa1c6ca9ca43abb684def62e785863db795ea95e855e11e9d6eb43c421cc51e807dde4a03e3030019b23664bfadcf4ef308c965a0f5b37f134ff449d10eabf6594e3f04814eea9428319087322c62633d093f72955234d19207b564906afc674beed9b0dff19078b17823bb20dc751b220f96329fe6aac63371c47bebd271a58a758aecd988ab4544392d0aac6bd9bc334891197f55b8fab42b401bcd2034e83c8334c35689ad256cf8ad7d7675024f372797e10a48a8f621d840f83247e8bff480b4bb613d0a391ae8573b3276430500cc1dadddff5d8fc584dd13804599f67f2a5cb1a2055000e8a4411afcdf785c109c3f6e3f9c7505f95232f63b2d7a1a748eeca382cc1a2a549d1393c440d5fd78c76513946297838b9a442c8b529c1baf587b6d21feb031d7cc91e863c8ccf86c61477de99b22870b500412de9a07037822327f37ab80aec8255d3725054796cbb537694d4356d81cf8c074f27caef892eb7a39ebbc5f52f8a4038f237aa90a596de82e2b1a2bd8c56cbe6bc8a926066725ada42b0cd139bd1acfebb46a45389902673297a9aded4c2a28fd3035b67115c9d67ee93834f03baa9d35dec59a73abd88de4fdd9619b0624c7971b7e62d32ab56a93a3698c6d25caa9c3b6538b17a13883cf861ecc74169b0a392991084fd74db5155736ba21454303d76e412a5962075c123fd8b94dafb32e30ebcc358084721a1541944c183b1b4e15e910bf4bb40eb395d3956e042cebd5be1ef91b3b626edcf7a2b11167c2c03af0050829686cd38942234a65fc0ea11db8f4f2bd9b80948b66c80e42d2f09d04f16fa2c49d3e154b125fa90d65216550df6a4f738b0b94c75734d54b2e60a1175efa7fc224244221c15334095f5b5d8909f876f8b31d5e6de6571d4301bd4387b3ecbeb2c495a0638db2e8eba1bf8e5eca4a23410387d46406cfeb07ff9aae02179dee9bd2cd8ec925fc04a21bf5d7c34a2fbee2b640a88c191355a0475153d894d65bd49b6d1a6b012551e51689f81862329cba2c47644a538a2dff90a768e9bf1b5b372cc5609af46a883473a1560189a62c284bf9631f78a52a02c0c8f2ff0334ea73e2ab3594f49a05dab44af17a4715bab152edbd1ba97cc33e404a639e53f9d4af792c2347926fc165543c1438453a982ca0c9b828a051efe27bc0df9d17a1602a39860d8b9b677efd588cf7b28ef71657f4e72507af59fcf84221f9e4131bec7a12b0a1cbd8833dce1874dcfde89200cb534c6ef2974a34306ac8668090f98ae4f37064bd1f919f4929fe882e4b13ecdb0a6e362c63aa100f15bc471f52bea26c820f4cbef3a187cce388354acf5cc243f6ab0a584ac796e4cded40a42d595ac4eeaf44b9b787c108359bbe0ed8adf96ef780c4ffc592ad4547db9263b724dd6aa8859f921cdb4545467ef16528fa8c960c15524046709dbe01d5a2b6915ab51943f9e95bc3ceaa4c51d6fe667d783b55bec041e0ef5944a2eec42f75a4da4e130e2dd9ae71de824e6d16bf87ab092506aab4b6537f6f59f3735e17c80271c173d520b12bc96838430e9d74063ae248d576b66c58d0e5479b210d1a3097f4e75be43977f8bd9b984bdb68edf60e76f5a9664a74fcb2d8bccbba37d7b13f1ea4007cb4a24314a5db55204f4c5b1c2f836ebfdf37af0feda52cbae3e4c4627ba5974489de886c4a44db9bafac964041712011cb28af0e5c5f8d25edcf170c8534e56923ce4e061c3556bebdf5ad0d8458843f55ad1fc19a0f4205ac592ba1be3fffdf6b1be62e745ee044e840a15cd80938369c6c7e5dad9e62639da26e60d206880f44d841fdc2abad2c2b576f4caafc1a6d8e8ccfc70dc005bd861d74a1dd0fd26c2294535114f7518ad18df70cff1d34f313408fb8e20875903bf271cfe99236b8a1e9b75931b8974c483c16eb91069e2d14f8e41fca9da15f6dc15868a0df2079f5197623c7758d7ca361026d7275cbb3a0d8046226d72ba19e63f1690d618046eeaf6e0721a9c20d0c39ede1ae2e45ffa28db7628cd5c665525a1969e85f86dca9a93335d1303e4b1a836b6484e4f20e351568738a109311f9e9b35a4cf1c61d2ef2ce22be58e1627b9330c1baa6d02d4e342ecd95c267b94a1ada8c80c3355b9080760bd49ad58c4806d92000792314f1a265412c50b6d411a292684230b94fd00f16af9c69bc5c7907f1055988b9ec9aaae4c6a5c063c016370ca982732ae4bbac36c96c0df0acf0ac2d9e6ec81cc2c13541ebc7f327b625fc38c4318985dc79502d60a4a6510ae81abb9d82332ae16d7a3b2f9238dd5ae29a5662c8d9b7789548c17b6a81ac47a391517370960e51a9ec7d524dd86b2752648aaaf57c305c7ae6e1e695d0455489ea8e28aa59e1ea6dd423f0e4048d4d3d740ef1f2e7942ffaa3046796c5c5ae3abac74cd75884a75bdd6da6e16c69b50cafe85a5a1688d12fae8ea5d3dc6a762cce599c9fa5ae9d4eb15da26127affabab60e7d1f765fb200333989d36786097f086708e35b2ba837ae8d8d20c7827a51143ad73c0203a005bf5819ac9ff8c18e949876d40791193cfe365441a0e6346ca7f0962bd208c3d16566091fb6af22d0a79ba4f81816bbe3d47498c195dfd0a8f4860bd032d6556379026fa53f71037d29918d20595f3a6826872efbf69fffeffffaff2f96461e27a7e7fa5b50205a06d92cfd66dc0b654fccb16f5b871c06467cec8ed5c359e9a63ea40a67924987b63bc777dc68600f2dbc3933b0076307bac4b5c2e58e2ccde36ceba948c6491030a489fe0b149ef9d303f9f72f9b7d409c959bf602fd6756ac5a34fee2b3541b12c97cd64005de2cb87021bdd88653e68b4564c0bd34f9085e120411f43cd6e6d708d6e238e44dfe24450dfdea6273ccd841bc111cdf390d1dab2ee1c2abd392e04f98491a462b3b56a1697ee050efd4c15759b7ae7a43b365a6051bfb173b739c3ac89b9a8df8c47e65ee8f22d258920981de746e780cb8c60d44890882cf30e4fff9019d11f4e482728f96fbfaf2ad2b320a3a43e02ebd04e1d72301f56f402371f86d5a13fe2f5e20446e5af2d0af6978da1e86deeca4253540d8dd3a31ad99e9cc778005fbd55f3183850c2a2262bf39efd2e6ea6fbc8fff02c7a6a342287f3a320897d332a200551b423063ce7f81c75185165d4ac0de2aa6c1bf5bcd6788d1a9961d385b6112880e4e9e334e9139465bd6ff313c42963797178dc1a25df12cd0fec6cb620ba262d81cb278568ace04ed2d63a022272b1565c33aa14c503e5e061032bb25014684eb652c9befd37920852c385a937552af17c79796c809ad25ca21edeefbeb3caec19be603736fa08b827eba1907199d28838706c42d6b34a9a75e28d97cda5a3cada69f78e3ae1c9866a4d060f84fdfb6719d48f0698e1d2d08160d60a3993698df5eb2e260280b5c31e2f010003255fb72e711152f19694db11ee11e522f2c444c280b651d01fead712fe2e0f49c6c467d843713b5dac5e6bdcdba7e09eb592b287b5163e1e80ccddf78d337960bce5c443953270bdaeaa3c03be5e616a87d2b6e5cf649e35e208d829f07100bb79c8545d53910f32cdf6f514c02c21aec8434c4a00ae43adda04e38ee4af64c89a0015db5a8cfcc8563cbc1fdf7945d23483505994698f90969fa8ec2e0d4852c5779ce720d084dcdbb4704a208dbf9025e886cf17e101de33148af81701a36f0eec0b66fb8929ff9909b9c1205c5d4a888674134068ec013c32158238d782ebbba488f2a39bf7b0566b3744e2a40b7b42d0c63ff3d14b5f70100c5686afaf4ebf4406099e42bcde4821b0623023ff06a78db3b4dbf0cab54a149c1d88d6b71fd20a499834ea207e66e5de6bbba14460a287d9a4e3814a1128e8e72988c81f05fbc3718bf90ccb33bc7d3e56bbced2ae6c1c7ab1ca20d572fb5af1320a74dcaecb797d78d035850d1d83c304b85dba4feb6b2172e5fa5722f05855a2841e745b5dd98511c4e44d82381a1658a0e0687c00206ee75ca97c37175a6e117d6a74258848c2b8b061caadc6906cf4e59c82b0c51fc4f06b296943be900401dface811e24cf35eb5d78d338bb1ca94c6328de0f5b0e1c1936a7152aa8b028b4a1071398f912b7f8b55c3612885b07decd99e05faf3eda82462010234cceb44239ffa22371b0ed8a5afdb416c1f136e8b7f4a18d3c9e000ded99c0873bae3e1d0251f1c301d6b1b0d69dc44ca61dccc19589b093a7901bc918ad44c508adc2426010a029df19aeaa4bdc5168e5a511dc7e08e11f74a1569a27ce4aaf1215eba3401020ca6f88c421246f7d7dcf71fe02a0f53ceecaf492f56b874883e299dd4e0f1f220acbebb95f6e97fa5b588e9338a73772750fa88bf7d0d5337440b87e693f8010c0f735d290b4987d66ad4b62bcd36c570f6a411ddd8e3fb5ed99caf5b42e765bd2373143face32ba12078bfd8aec4e07377b560afb020f4f7d983fbc2a083988ddfa978d34b11e774bca35b07cb7deacfa5eafac3625f90e8c766d50c12f83989302dee826d7a0649f1a2f73148d89f134c2443535cb35ce443200eb473708acaf1c10cf70ec87d816c53d7ee26eb123861d834e33e9713e0e42997f14555ff63aba33744820a5209da942470d46c47d782b693e0efd0c1e8aa1619637bf4f41f3e317e6f148000dff08dd4f1339e937e9688f65659eb16f243a0c3339cd47de46e7961cc92677927028121b37059b16bdb25a72878a8147938d9581b8f0b782d297eeabe20a0b3df0bdfa4455f729ae75c8e7a8edb34d14dfa09d4689ec6f9e0d2dd6cd658c20dc70e69ed2e27127ef8ec7e367b0c20ae618239fdc14f91115658e8d866fda06a15dba1ae7613bed668dba260355d15078cf22dd63490cdb8bfdb803d09fec65011c817c910f9a380c7cb8241e99d066efd42eda93c8636033adf8ec2e4e44ac067b80c9eade933bbe42537d33e71e193a908f2729fbaebb48d740ff23cac85d243ca59add0fe6c97b264a1ad3f44a0528eeea81a4e32c81217287800b893f7a1ddaccc19bdc07093cdd7a327beab932eb1962abe27bcf908d4ee3e4178ca2cfe45f5334f2e909d7ba5fc616c8974e0de790268f1a091f6ee9760660b5697efc305935e45e90a1540838b63b4bb05369f4656ab1ebaa388506a153dad0dec203db50d0fdbd49db126e1a5de5fcabfb894aac824f56e58038ab8a0eef60f0238f93f0ab3de711247aae2e5b1001a54690bfec2667b9dde76070ee80d82e9d471cc53a478c6083a5e5fc91219769ed87bc1afc5a417bb3f7d015136c4f997a0501d0da90e5130d8e00ea651c6dcf31198c3202c9bc61548f89d6d91f1ed300767b5811882108dddb0bfb1eb808e0371aa4c6fd3e19be1e4ddc1c266430b62e7e677ea8d27865313848e36ac68423b966bca5468c9126983e933659e4ad83f332caa278b4d42c05a34b3f26f4046cac49c1b47dedfab970dc013c53f2d59145304d108380764712c038cb05155750df8481e7989cd32c22596f3348672254890ab84634918f63347eb09fc3b39d82050a655090f5ce0bac673b5b529be849784f28e907ecaa5085f86f2e85eb212327f50641185ec13b5f43a035cf832e12896d63f24fac224754426230dd10fd69788c4f1c031b26f6e7a789013439f6d9be14ea8946302b0e0694f5c0ffeba4719ede724cafaf606543b07afd028075a08ac631a3921bbca44a824af5270221c024063f201fe1a8df9ef4769023d96b27f14f8b77e604ae5cd2be65e36b24753f0079277aa84b8a87e995349c1f2372a01b5ebe25b284ee825a0df6d4e4134688c58087f6ad9a7365679925c73dcf9c2457a9b1f363ff962f3fbf53ff5552ded9a1d63da4acd5693a853e6b089c2e487f9d7464ff18fe8af1f0ed5753c916853dfe7ac890b659b5ae5aa4874ab1c2349877b6781208eada1da28f75b6fae1dfd8d5605b67d100de821981a0a1047401eb67de32514974e11a12567e9da9c0ab3154e751ff87972d9677d06c73b21dc696d80fb5e0fde12dfe9ea47d816d18335eed2f041e680120e8848515dca74c69f637331cb9f0db443aa3deb69e981f1064618cdb770889eee9a25beb9e0428b9bb1e0194c62a5845944b01ea08e7ce1026a17f0cdc9ebad2a050b3306b4bb3065004f11ff6399307efeaeef2ea77f612c91c9e6b1392aad4205d0f7666b4b24373e5ca910bda3aec141dcfcf60d514efe01016d2f828c1cc01c3a61487c23673907f71bea8965ebd8d140cde667426707228a94d0171a71002b1dc212de099d6908e8c8878a4d8372fa48685d3aa11d785d931edaa552dd7c3687ee8d2c3965562981aab8c2b81258f207c1c8e459c6c65b4da6b8a6be13991a427f5b826f9993d2d9152c7c91b2e9e9475d52da8c2cbc1d40c2d0ff5c0012ae8db1fb9436c74c92f09fa99ff5c105e727fd20532b8dfe91180935558ea44d26b597a6c7c52ab1cb9bc4d47d9344e205471f4e0d46fadd966b2a3132967cd9cdab071e78feb8ef04471642c2761ad032664c0b53400d2caaa050b75e23b3c6391f1e8b82c78c0cc38d3d6374f613d1fea5ff3a98d46da12ff0aecdb5853249ad77ac54944d39ccc087888d8dde2a099c40350cffd0935ba2e1b49dd0290e57f3d6c79df1eecc77a3517745a8a4fca4c6652996406d700d7d17117d755f96e41925811770376c29c1c36de2894e59ea4c38f3e16234cf144a80ae24e11339de07208bbc02b38236b842b131338430eeab02ff9a6fb79deb51d8ea10a48cf5136a3960c2b46e3cdd1aea4f9d202cb82f138addd254505f741a503a8f221166072ee0a214165d6a99024e0b5aa6c3f3f10aa60caf7368950b5be5e9b9cc8c6a8925c6f8b7f30c8ea37aee239aaa248870af9f0c3d9153c08668aba2448754dc003bfded164a207110d23940fa826aece5b39af807b7a4339a3e2052bbb61cf9c61404c93f7a9d10a539dc1f40de3cafc38bae2ad5dcdb30b40abb61c36ac17409deea5da74676bf00c25c45acb9621219abe297451c325fe43f1418b3d26d52134ab0ba3baefbae8afb3b28bed09457b59651a51484e29c8f2fecb57d1bf2072565455e3f899c2df4d09a05d25c3f89f3c9ce75bfc30b1155332abe234987f882d469c0ff1a2d50d622f4154619e825f4491c876985307ad101c496a63767328cdadfe8f34c300f6fa077f41cba7ab69fc95dacfdbdf7b24b61ce901fd5eabbad1ff051cd3573695cad87dc65eab1712032ae72d74457df78771b114e1a61f84394b287594e7eee59fa49ca2f39823df67ad3d4444727ecf6ef509314969a2f14389c1105a5e1451a0f24b37d08ec8d738f89b50d6787400382a4325e5952911147028ce9cc5990691306b8b9c233727a841ddf9f5c82a3a965310d56f833d8d7963be6f292c41d7122930c30b041c16439620380b848d724356c21253100bb1c3292126196f2e0ae81801c8f9d10970e1669dbcc304b0744d8d12145021b4c1fac23620234063944a1a285f40e03c16b66a39913c8d5421983ad2eca9020a2b6594262c92652d4f9833986a4471b6a485f653328b547d105b4bca6e273d2ab7a3877494f24663982252992b5ce69258f836b0b09ceff610a350cce368d824a0fe4294f542b34aebc24ead0fc18ebb68d632b40d9028eccc2466872dabb6d2ac939552b7c296ef2473d3a9dc3bfda868324d6beab3d29e1892ad36c5ff5940e304e798c7ba554a2f1665d1454ac5368d4598f0984ae368327a277b2d010088e375df15a7b965be9413b63ad8a0dd7c42e1a6e1d107b21c2f39ab5005f380f4a3cd8f33019b26cb11b00bc8cd4ffeb87bbe82b524eb3c6509141f797b3d8c280fa26746c7e4b21071ce75bb170150f4fdaccd10e680b4a23ff1e38b565c2c0789a013cf8ad20bd0e1b4e353bb08893e1124150d1dec00943214c11eeb9c520bd4f66daa3ff7cf714c9080a3ff68846ac382793c474a5c57e359556c5f73e9e44c20fba63a236beff3c368ef8e0bba82161d9f59759490275c54ecffd58bbdb8d8afa833b8892af33ecad8e3b663c028b150d4971ee5e2a15c34ceef6f5dedcfa881ac772e38e5820b1bfa9b733bd0241a8a26bc7634512568326d78d8d81f9fbf3a6cfd302a2a6cd0b730032345db65c9e5f5715ad5a049e4f9809103474327b65b91e40fd3a9013f46be2cd0511af37f1a91ec7f1a2066c546644d77b8c520dac1a800075f4d7dc990262dd19aa7abd07333c5a7c50b62ec15c75e92d62848ebedfe91fec81812d937e0874e30fa0feeffa7cafadcf3a840c33599dde4e27bd065a0208b05dca334c85266a50696927164e058db26035fc37b43208254c537dc9d075049fc9192a7707600e05627ceda09d2797f5d9e7853c4e3c1ff0b1b04dfacf1547be49e80734aeb4e9955296d480592140b4b2625195a903f4a6ff37c21650d8172214a54b87c33436d9ba814cc8a7f92b7e00d6cd9dca21ae2f27bae9f784627f1420c1546739e4ead602e3aa183ffaadb26077c54495b4648c0170c2c933fa605e4b31b8c193ee043fde5001e74ff2ceeadb797d8b99b493c31192dc49b6f3a65bca627ef95ee0e80d2004a1f987809bb8043bb9fa293a8809ba369b03a2bfa2854d1624e48bc50f89ed899b79322fbf652a82335e418445588006a690c8310fd413d249f242a3fabb912d47b80f1275ed897ee6b1549bd6b3009483e983c6f2240197a8133d355fe98d552036e6e332f1878190bd9f0c55960bf9a8461efcf50ab6ab075ea82b306a3a726482ec30717cdba75c34827ea2cfd72738deceead79fe0d8e9090baa34e30412cc56786bf20ed46c45ebc5a677932b926fd01bf1372208b7d9068f5d3df0d36448852ecb1ceadab3ced064a6231587856b47e334400413683873187861652d58ed20adcd3b7bfbc199a64c60aa36119f8811a371d00481874ced6c2e5748c8bf3885f863f748e1deb44534125badf88ea4a6eb7e3155b641f4a5a4d38c0d54eff58739eebf32bce4783c0a9d39e2fd2b708c01ab34496f23c1aaa0c8c8c999d355896a22b84365402ac3ae28b4e4bb897fe72133bea0723a7a102523a3052b0780e6f62551fd3c66b45cf05cf6cb9e707fa4c4426974a6db97c355b9857b9b763383c5164644fb91767fb4a6fa731f5a056e8f9948ef5d91e56fdf6a610daa6e5aab976572004530d5b575c111270f9ccad17bec6a5f6bf4c0ccefe3ce79728115c788578ba521af714a923b841e99d08fd48b3570c217a8fa8c922b6c1ab8c05a754a17022de53d3467c5a75c2da6575e48bc3997415e5c307be9a83e5c2530e5080fe8eef911c25e8adb4735fd043fbda5cc3a45e239f8bee642ece317fcb68e7ef7c2d59df1ccc85c66b3b2b8131c37b441d97e4b7d6163348fc0bd0e72f515ae7c7888ec7d08a4bc87145135f58f47566c0d47e2b33b09c566aac2681028c20f6c735b0d0c442c40c1e1ed25a707ab2936dc52911ba73cc1f042e9c31860de16bade416710e36548ad37ba67df0d265b008802d13351f8a82602b6912625324b2e0744702d84f3f96bd4edc419ef00544e8bd49833db5152203e2314c91aefb701e3affee534af229ce0379f9f510d1602869a13dc218f1a87927439eb149efb53ff67ea6c53d8621fd6270c8f6c1bc00fb611a509bcce134f19498c8f985226f2015593f5e2c73c64da9872a822b2a079dcc6822662452c2ad5407bcd1a6c84381f60e9ea7a36b03da2a969d04732cbcbdf7d396d8b682ed66ce325f03f1f5e66be9449db8e0937c8058e4087b89947df90b0215d842f8ae70ed0426431bee794be4a118ea8a794ffbb3ae40528f9ea0431742898e4e9af8e1c48ea4a12c4acdf174d7245d3b9089b842251e7be0a0134ddff33f42d93820828e7d6f8613a8fe5520762d43f69af7d397c14bc55d1a8ad03d89e8774f895eb074cf3560b7758f261354e8cb6db1c3edf237a89c7ee3a515c50d76a1664ae862cbd45d241f066547ba7f962c2a7d62736481ae7630dc454fc4d950c7732e1be44c15d6001e24ba123c165ea4831d929dc65bb4a912afa333b59c229ad44de6fc7c1075d01851d9189ba22383e00675c1812b59f2b1ad540c6c5aeeb9ae9335fd5ca0b8e58b182bf1d458e11911ddb1f04552943483ec2cdc0b4493abc96b4c0db91fece11f4bf6a42231ce68b918386ae8020ca2f19753edde28905a0192c80ea727033af785dbbce56a71560f79277311daa1df66a9dc47825ca4c5100699f9b4aebb438705752600fcafc1a8c08c0004ec1201e2a48f0df19ff5d839abdc53f131a021762c5550ceddb59c5fc49dba4a363414e3b0f6d83c91c7e86f368d2303ae287c1c6e0c969b8ca7287ece25a0dc84f4bbeeb51f7e1073a534f1db5220c36cafc9f0d32b2f396d6359e6102b5c1f7e460d60108632cace2e802cf14eb10c826d081da150792b349560f4989c6b48ac00db2ad048a093bd122a82422a4b57f3be7249cde9dee199493831f0f888393b5671eae062438390dcdd970ea079b4806d175c1110fdb41cb88f217598dac84f624e01d1a2b1ad6400ee2095dabd5631beeca399115cae986fa5640e8e79803533fb9d3279d8ff8c63a5c99998d1ebf844e209960e6041638371fba1746df7778a1e0e513e6bdf0641680cf5c330b55e96377860d1527efda7697c37611a5be64935f0591933d96fa53b313fa43bfd10800a1f09806dab9f5f4db1448c7233b04e0f29d6cbf4f0de9e713cbcd46405702bdbe442758a934f28259899b5e28a0588eef5843f1f0414be0ce49f46b7594a6e030daa7b2c4fb226c057b8e0db8cd284c497670814c129397a39db7058a8f8e187b7f23548f90d1fc93398993807f69958de7d8c07fc7d6c47709e23c84131d33b03c80dd5e480685e55632a96d1136383ef88c2e44b39286fa1e3320c7223a004f9fcf1088037c51ac1058d6c873cca07bf9e0f29ba09609fac47921d4065a24946157a87c7f56b3416fa34fa1a6a1342a0860d13ccaaff835799cd3414cba1f07daaad66cb9dc6ea7dd9ae932389dbbec13ab7ac612855dbf8579e53e3b8dae13f5811c5865e05e772117ab6e9316f1a8e8e348c5ff74b465af58a8ce23bc35802a1ec64acad61f3132627058e68235062f65278d6dac7159bfa0980db6ba32a7066f9181312e4e0f85ed4c6c0c5c418d43cb0a5b8fd4232121e282d3a5ccff670949ddc03bda198dc608c7c87fe0dcc86dac8cada140244443bdc52322b75210488be01e52b7c530337cccb0f89c53d418d00ee3ab4e34be97ae8df7420abe02096e3b319779a982fd716741ab8ceb31b39a7083d3887f38257ef8b18a9020065fe8f3bdcab0bbabad8a07d643546070c34da088523ec9915427aa1a2f0dedd4930df81d1f3851404c5c8e8fb4f1b7139cf599a5e44a930dda8f4894e926e10be980020bca06de2affe6ad35e836526bb274a1c34d434d24dd5e94272100882363d3ca1b6039c530f8fda7ffaa46ca44887482d609e938d1c186929f0dd2c35d1ff8e0184af21996f8ca4cc3b11a04fa4d0581f8a989dafcd51311c29b7872fa708b37f9c2128f4063e433738dc80850cdfa01ce9a1ec87d211cb484f0ae49a0b8c1249d42201d4b1b3653351b25be4f0bbf941b84ff10c8908c85716e6c8af17296be3a892d1c87b2cda242d469a622f78771b962b09c08042b87a506247c19722b9042585375de00ef3f9f6fbe073be1916cd064384eba032a6abd9a087ce8464d25f67e09399e3051cabf10c869e54dca3e774c28e0e580e0d7697db4fbe61c769b8327d28cd595750695d729c5eb86466964c0e5a51c7d6830cff4a5bb2c0db40d37e9a9825b57d1e5a4e68008bb29b06df4e451c3cb608f07278c948c7d059ffc47f4ddd2212248182f6a0909b70e1cb8e157387bdfce15bb532189015256a0a53acc85269792539438872a5c5e992e3eb92b4ea95e45f99ff665cce546b66f08c4013a9575175a2089fe115c50032db4f7629e038b541e4b8af56955dd047b79abf2db6bf6d441ce208a616e7c8b9e44028f893dbaeab6ee88bf11eb5051889f50b5442472eb6e4a1b484f24c5b7b6a250c399d5c0a82c58e6b7942dc0041ca85685f103ef646591f8e249b6750ab6fb9a3cac145e484215285ebe4b1ea11da0a05235f148d646166cd17a534f419ba10f509a48a51b0066b92006da95be120f753a8a2bb606413c688992d78972a3e31e32aba0cb8e672255c0dca33fa158179cfe29e355c62813542474e683274c38debfa5b4146182544961e17f2ddedd491c49aefc53abf61f6a3483a50dc724a602e57b30d781750c8921b5cb2ed844b9e42afe90bc411da21f3154d3214878fb5616db361e74a0519456c927dc6e28e431485e3dd8895dbf86f7923447791d2368199009005cc515a1a1f0b1b81e956144a28fd647d38369c21b7843ebcfc00d05f9474be87aa63a086b3fbf3f931407711944ed1036a72428635e1d03e5f80b9e4145f5d0a73319205cbd5e431824b0e05a55f75fb11b673068e82c245794d5e96c6378d597b9eb0a8778086b20b06853c23433bc610c0ec51785edcbd7001866ffd70b40a31062b0a706215dd32fa97567052fc956dbc13395b57d7fa0d51b2ed35cb1e45fa701150af8c0da68f83123b957e94de757bfe4bc5a92efe21b195ce41dba784817c1ae2a3a1483a464a86c105c2d9047e8168b226b1646718d0d7599bcbe96c795a5496d45e48e150fc6182a4d819eb72080c9200b76525d65aab2bb4d84809342f274db4ccc00bcce8904017201ffedcba0c62611f072718e184411ac999f246b14c0a97cb6c9f4e4845e822e1d1d1d266743908b0263bc69d839e5a48ce9bc679abe5b85f3c10d7fc05a48a0ba0a462e336b79fb2d043a3cf3f22491d5ffa1889befbd3bd0b6046586f00f95a2b502bb9100a6cd6b4e65600fee17991b625087afc690ac27410a359d8d602f0c8c4899b8c872968944414db7a12e719c36f2e9c5f75615e4599946201aecafa34de5030dc70c7e74f67182eddd0b2d64ce5d7b72557e491350c17a8791e99d96710ef1aa1315d3aae40e68f5a4444c556c0d1cb7f3c446d8f9115ff875b7725eb70f689acd81f32d819849f834e3a30ddc55f292bda2f98293ba01bb6e73bd480e53aefb698d2f76507d33a6ead61dee820d181db9c85610c91a826c01dbe73929a0183bd695ec26883151f6017d776b108e26f32b8c14389eade1f9890861510485412e3a684999dc5c058bc09b4e06eaee0b4a24803047226a9b437761902067304c6032fd5555b621ca3990fc894de5aa3348c67d2843766abec6984d207819f890100a12c23ab34002aec42b1fcab63c252a701cdf08c119e3ff9827dbb6414229860ddb1366d02527de8691df076ec49ccbd0efc6005e48dcc79855c0c6c070d92b79cbbaed10cb5d5b5b1fc2c798908ef54f273bb8ee303a3ae7f45afe80a038c1776be59f7c331d3b0d7deaa45302b0e4f6956f4c4134a83a7267807253d72225f117feedc8c5747b4aa6fb1e3d022c2c357a773178f1462274c1d151d2d3a6b28ee80c381719445ab092779b34a9df97daa8857809dd663eb6e84078a023bf2890087fa9934a904a25e377b7ac4c4966c68dd645fa969f30cdca309bff1bb2c6fcd4977709c843d7da6d49ae7610d24823c381b0f512c42211a434a8256882b34575adc93c6634bdbc3ae20640240ad7e7c19e107f3162e671c7a8d4db51979e7a87dd9bac4dff8a7533cac3ca7ec9121a1de6702640171c1c395acfc64a7491ed81812d53460e4d31cc286f24c841442d82711488bbfe9bae6005213442a0424ff8de878c2098b42407c8cddcc583723d81c0a7e24cb558f38c5b88fa1cf2502ae22dff9c32d86b9c70b88839f73d8ccd63d3bca8ecabb8455cf53dd888f73944bdc361e12b6583d954dd12a14f43d71f654d119e4d3fcc2fee2fbfda27e8a30471d388b656b209ac6eb88aa025e9aa7e9e02cbd83a87ba1793e8e3d6cbc99e08f74794a63e94aae0ad927ffd060ae66e27a1a21b1994e19a15038c566cdd303954711ddc5f6cf609e4bd0d86602f1418120d3f213aa6761032b14d9eb242ba1108b33b65c75653236a77e6271161c3e158fa243085f8d61a26618822be0065c89baaecbbb8d122b206956197251738cffb6258beb53448d969b60f6b7dbe3329dc840bc4c578b87209fa33bd24c1991a2f24be0d191b80158b4bac41264a2cfd9e846fb510e6b37fae82fc9d560fabda67e2b29c9bb2a5c6b44afb3c0d28e0efceb9cdb58ebb24196a40aad70433e4b068cc695467ecc1c43d6637532a55f7b42f784a34792bde57242b4ddb72b801efe2663db5aa011de1cafe4332d37c7ee7f5fa4e526fc3fb6b1cd8e6b5c3cb0c7ac7aa789ea9d4a4d0b45c62ff16ed24695a760108496248beefc5f7d2f0513595f5541e0fc402592c93ea6c9a160e38d5009f43417460254670978d967c55e600640dd3568620306f5800b0265510c358c935d68b3a50805be39aeb44fe74bfd7249065c9331d914c6fc0213be24cd549d7769ed68f8ecdaa5c18b9d42559a1290512163b0b414cfc26d08096d582abb8846a191c7035281df2edfb85899594e29af2e28f269f6034783e939aa91ff560a71ddec47e43f2246191344b596edf24c5b3c96135cee105d1b63fe00d5ca88a3e19e49ef0c21e0e5b1477d966a9d3ab09e26b77c1cc2d79602643b4876a493d86e6fe61211e969755461ef008e1814c222b65ee5a6f64959fc5a5271e9871e5cea808fd05bf931791483a2cc86db3d31ef57505e5d293f73fccaf956204d88050023a37215f9fdf7a723bcc3530002b93a323d7c511593685e806a6a82c41758742f132ec3fe46f9b633844bb99531871516213b80f0cd8faab289a228dc90955464056ffae3fda62d7e78261d323c0d010320f84dc8fbcd82a1d66e77002a3b6b04e8652776febcfd400444fefeee08b11a5f691e2a0f10a99b11596c619a6b8799302c1d20fd27f3613d39b029832dbfa83f6e987606d5efa6ff05437d54088ed5e12eb85d190e6fb7491452136c53b39b8f3494bc111be9caeb9043bafa076b6401ea33beafe05e9373337e20cb60365e4644a4dc8fce41851c58a9027afa91e12bc9bd29cb4825c89990e9ef3e3e3c2a0f8875c921d7450736e449b3a4dcf1c6d85b477d5f90605e96f972aaebc740f57c5368b0326ba63a60330be901db8702c496dd55073b3556b49874b95054af146347fb7b0fcfecc5e560dec0a0dad267f82db0abaa2602cc90107972f25bc44d8336e340f68666aa720a2b3473a032642bc565066ed69e48fbb4f1b7b6b25a9209791d014fdab9f644d4929408271fbd39fd6ea8014ce9f8c73cc0d3eed727b58ebd6aeedaeba1439bcbaa1ba087b76ad83152feea531ef7fc04154d52e7ffb84688b8a32703b49497ba8fd3ca0fd935a40e80b4656e8caab2a661f8bf7f64060ea94eb8a017601b6b65a86fbdcaedf9f88cacf6c5664f6cf3d327ef7970da3a408dde698c9adcbf288c758baa3bec6c56e039ebda448a5a740d702cb51c124484e5fe067c9d84ffd7d74fd2c35a1ef9f85bf1ef0b19e9c4e0b7b56a5b0efeff1b811b8184c906e630cd6e3b0cd0803253dc6df6720cd826bc7968a4fcae01ac728500993a9bf43dfab089b957612a60946ff0a054ce8b8a22574a3a2a3741bc15cee76afb1a7c4d2fb30188f19a5a5c97523980a8b036fb7a73ca9a4135da9010e7687344a5696667371872d9dc7b0f573e83a306b25835acbd6d82fd4655f557350a5926aea9bc9001602bfef78219144125ed36dc718d8f68dfbc221e32826e75ff202b509f05d46223414473a1cef9c62401fa050253d9dc427d080e83f6d1043795b280659e014320041c1009b445757de9ae7d05094c793c065b272812ac2882be5d8ef2b24ec7cf5b0b19ebf457f7cccfcc78cf4717036c0c320f1aaf8329e4a1cc9918f774269529194a7c61d4b98b57817c633689d2dafa74b16e83152a5a4710af737b2a8bb218b88b217057be1b99f665954e916a95aa147f1aca11a7bf2a53981c16209a42e43f74ca03f2cd51a5ec3f096fb91637786edf52030715f8bb05e42ab005737f669343987424198f180c1b1d091f19ccb01e1be2c2f4dd81ff156da744c982db9572d101760b06ce8ec117932187011b2870b698e4741a255065a1a7bef743d7851f25ef7af88b05389afb74e4623af4060f27328c60862dd03f60e2e092e75ac8718b39ae3825d8886970e69b46040951da1ba18df44ab2e9184a5d11505e02b57af3764ad41d8baf6a09b418cbf1469c05a3dd4094628866246fc2acd9d71d11b63429fb630121f97290fcddac3ca5a7759b883a6f688c7738120e4b703000d0e90e6d01369fe4d4df01918d5c7ed70ec13e03403569106defd3e231153223bcd86911c860ac127f8c517a5d5e6ffce32ca921e301d2d93c30eb4ecc70dd42f42603ff65f32fa9d0bab10815d7781f08984d94665375e4afd2da520cffdbf405c6ee79e35054cbe1a3055e5d438d5cf0bb58ed416af6180618e2bf6961976a46ecd6767911180faa2fcff356cb86349b2cfb0678aedea53a41da34d30fc3ef8c6aa9a0b3482fc9dbb365d14e1350ffcb6260f91b6e18bbb4a7fd8d5bd2c1976a3e9d88254290ca81d90430be1dfe007c03982d30ca8231433003cdb5e674d10f0ee6df4c22daa4b8f059094114b940b509960be05ca97decc9959e3b919e28140d0770f62becc7820f6f955a57e6a2b222323eb77a54bf3074c0137e8fc4fdcfe08b02caa60af9c5aebcae6a4646b7d19ec3fb6b7a5e4c01935079c8372e129d66ee4f6e6160e04a940e3076cdc3ac60a1be15c7809ce9e1652829c6356d54ebf0481279d654cf244cdf22ec81295709c27b612b382e6a447b2ce161f648ec7a0333da72c7af7446b199c5b78182b65628a394ce4293b6e4b7decb9502ade7a252ffb378d4a9997044ceae7f16600e2a27e5f4cf317bf782698f5e8ab93b5909407df7724b8503ee1412a0eb6f9d54d1db721192f8d547cb61aa55b0473670133b46b2e07450761850c48d3ab4d40a9d43bf9a9100c3b424a3c5dad9900b02c94506a46b95685bb615a42d7de25c5e80f3ee5d2153cbcf14527fc0c603b60107c7a80adf718eb1cc96405113b8d02f07f16796434e9eec4aa4230f17aee99f3f88ac3171217c1d2c5def9b5e5d7a567c314fc5641cde8265150c2d8c396f836540a9631ebeb65158619a6cde19bc7a0917ee95d623130fb4aaefd70e24a0718c88e75711dc19983d1d00a9a1f8a7429072f2575901a56c195d4ae9afc1a0ac0bab0807938b2432fd4d26630230bbcc105aef1ea5c5965e0e537dc385da2381efe09da1cdfe872b3e57ea74be5f811a55a4369038dcb16a1e87122a60b3a5e8a219a6dc41a66abf6af59e4697bf3f7d924ba11bc8dc03614d14bfe6c70f5763f6a9779444a3f196646c1139f1c4b21a813cc9a80d39e61599850d54c002cfab648c852e85f893799f78d5e420e8f2cb312834dd4c82146dc456cb5d07662934dab65dcb35ebf1ca2b567c4940ee564854f6ea25912706d42094d6a23dad6a150ac1884c810154fc633670fa3852988fd6d563440cae2feb35047ba409286e2af782b69c1159c08d523acca4582e26f29043decbde4876a9c3f0c4ee5847bb9bc80d70171717f3a4bf8d005cff35c7080387ec65ec81a24e0edc11b2306a396e93e6441b15697d910d9c20203a970848a938a2ed07c67fb82dc2c4e37312de59aa691eeb67a5a87f531f74dcb516fb3e12c0063ed69b80da8b07a0c61e89e84ff62d2999f32bfab192b4a21b81ce097ee6f0541ac82a0db6cac0e6f0a5e2c8527fb7455af2a2d94f0e53f553ef4ee635f7cded4c485e0657df83ddb26112fd1499e08d8e1337572f972007b30ce47136430653802b04a1868b24be6f07351e026970b573bfcbe4e706c0071073a40add46ba4db1019dba8c3689ef64d6a401cb2a8099acc084652fb0eca614064bf2e79a1148e4bf7c79ba4f47c047f4a704ebd81b954cc8a17caebefc4d765c7febcd1418fcae664eb5b3840acbd326940cf0c1415bf79aaa02b7840a8dd9e18ab513a1cb48a006b46cd79b3ee72a0b3fac7715a40cae505f226d691e5f4b5e12aafc9440c46afa2ea1e0a9ae73c30f32063d42100130b147954068942d49ddf77b3397ded414bf3a1df622a8e4b0fc77dfb4b16f01f52f91e506b30c93433e0b5af633be49c9f40dbbc35bc7887797a99dfebf252680e2b3050277964f1a93a4ff8d35561f84aee99dd92d4087884d8ad1c6ab936c0ffe7cf4a939f736b42efb8186f97fd09a3dc15c02422ce3450ea4c5c191a9f6c4f856487a396b4b6dbb0d18cb939803fb918a757863b972be452cdb00066593b5b55190e52babc19e490cc40b635c5800798abf3a8c8896bac372face9ae3f40857ea06deca74542ec9afc8de3ae3a38e869704671437a91099995d0591845674ab567a6295a78abd8908ae2577df728ca7fa37e12017a474cf94bc48145ea3e87b24b7609101264fbecefa12dec3a92f63425ae08e70fd92063b04490b2dd1b421af24fefe4dbc6c9e0dbf452bbd94744a81d2c4ed63b18a2fbf9c9ee112e5025f13704959f5587398239b3c11f70ae52780d4de66820a366b14af60e580c75b4791b17a737fb79a008c418a93839abbacb3f2198052a2f2e86bb176136274e37291f48aae218477176a085739a15b92faba87af389986eda11e49600205a7219aaedcbd116d1ab4f4883460f344c3d28749520fde3c55ed5936b8e557cd12e74155af547b7f8101a0efa15e43ab49261055766b4d6e090e6709e41b4d62d72470f69456159b5af0b49b6182388fb8cd4337167da559e5e003b1974b01c8a88824f1c8fa4439c0199489878cbcc12147f38a9b9036bc53702c5c32bb3405a4e246433a279b67278ea2d1294b0402692e3ec064f7b24f2019e461e87d315692f0cd7a80ebb3d74f51757d9afc843dff3f4c8168c3edfa1c8b890d305b70a992cd91eb43e630dd916cf8c1ebfb0f1205740be7a7ae3d79d6ce6e6cc5f239ded7a8d1ae01f0517b10d4d7cfb41f5e10b08d88edfb7379cb8b14784d98ba399e24d8500b1eae6afe3b53fb43413624744a163239e73fce9ad202a3d965386babd0b602286480b07e59da8c0d6bcc71a1b0e0271bb596fa5340ee4758d6be1c2791f9d6d6fe169277f74e0af066a59ce4325365cc90df8c6ab7e8bc9300fcf3b9d33334edc38f224723d79a85867081c4ccea2ce550a5eb973c01bf037a69622970c357ead46b867bce4832d39e8344976b0f2902a3b06bd8cea4981ade0c8bded2e235a641a786557648f0b0c4da389a04c8281a556827949d03987eff4c32ba24ea2fd70bae8476580724035d024a5311b54de73e459528d88f20e70a473a38cd48a8fa96b826bd079a2c5910e3c6292cb937bb9804b59b836bcea6cee87cf35d74216702a3c5a90604d971c939da147fbab620600bf43f6336e6260218bbaf62d320ef1ea360df02a7d7df3b0f8c3e472b2912ea52fce0eda3208dcc5256a6dba43664c23abadce7cf6e906d2550c29700ca43d6b23b36845f148051c1e0adf85a178f3c87d6b9d01cdacd7aa8dea001ea9d1ce24591321ab518883b1e107a7b6d55b6bcec93356dd084e879ff22d55866397751386bd01393237825d30d0ce005c230e87e4fd0fe22a6a89eebd7a10d04d780a5624bb2657b5642155789bfdf0397372433b1c519532db2d2046552a13c574e64234e51e14ea2206122a069a638694d0013db363d50e6c5f0858ceaa9fa5797bce9e2fe96b3b07b30d7fc66fedade73a70717977f06947be0c539404daaaf7bf9fc07b24e7654da4951f24ce57a614c23c19f1b5cfcfc62ecae6a7f7b1db80963e802c7754f1532e53b4338ea1eda9e8975684fc2b7b5ef693c0afe49813b5803ff894acc7ac503fced347624653376263120f57147801c487b7d06b4a489c7cbe8a4d257b80e493c7581e0abdd1502d9665f6f7669a059a27fcef78771b153a3ef2cc2aa3c86d8422f9869962c2bfef8d8c35a9ac14fbf08ebb2bd74a1f0e58efd97aef23a37185f048fce21294de9dee17f1844dc39423e8e80fa46ba88aa9031c4b0dc05ae7810e12acac4399974fbcbc870eee1bb8c9737c5bd820c1d627e8152d1dc7c53f2e4305073246a70e38fd52c5dcd7e888a9ce29b4ea6591308ab30bcd61c905873b6ad781edb7c69fc33679f23cacd96f4d93fb543dff517a83452b78d366973dada30c3ef667f3b77180112a03a47ac61aa7561cbb1377b35f944cecbb70f2adf2090fbf36b355a4ba110ecbe8612680c2c4ce1c3b3d108c927a1295739eed73ad2344854d694aae5e3da8616514189cc45afb38c5c9614163f4d3b49381df57c06b1bd6d3b78f95c596eb5b4592e336d87a76d84b365547463bab704720a8b54bdce188f7a350468f80dae2bb90a4f693c8e59c3a06926611a94e6f7caa5c66de3cd960db34a7d250683e3ffb4210f0906b8a05ec02303377e66c236eb2649ce14e95cbf510a951fed229fb1acc07b2cdc8524da3b2c4da53c51c573d340062cf759aaa10af3eec1950d07f86f839e68fe1f2b7b1c4393dbd848c180ea8906036acf219931c7ab4b9537ded65be86525e3f6a2725e17f4d2ce1aca6388905240387c13b69b51c938800743a3328d6842bcb4ebb7694a5f67ad7a103ef716e18229cf8ef83ed27ff1ae9f5246285de14df42e59e92e19b543e9709a00cfcc068ceb545b0c3fe29c4e940e70e0b7c438e7f33c36d0496feea47897890fbfab388102efc713f78388cbdb800c07b27c7b3a4b250565407866b1ee8c1030d7807f21d00226fed60bb6107c39240c6daf0bda5737b0d050dd313c47d6ab2e418f9a858e2aec06d88c17176de2215065eda699bd94f15305e1aac8c737a89c682dad746e7719f6abab762eea51a7738ebc1b0595438f00065c7c0a6e428f3b42b6d5061e80953cc3ea3aba27849349b4d3c59542d59cd099122bfff13ee2fb9a512ac2e1d43c84cfeb06953960e735177d77ae84b3502645e06debd2c75a51fc6f27f0a060ddb6593a6566730f23ef57ccfe40dc8905d40104542a10ae070cf45a44ba4b20a3849f6bd550d52604359c9baa2720ee237bcdb6d8ad87ed0c53615555f5eaee554485dc77716eb237587d8d1624ddf7487e9f21512e5489a024092d35af1d9101f213dd1f4b8349ebcecf88fa8a51c095384b84cb8f951e445c55e931a169de92491f730ff5d7cade355c54ad03d5153e90575a3b9e18760ed877d247458c8395536316a5265b34e475f9fa0d8a3851eea3acf47b322b92d54c66cf7d1da10bc7d1b1b790e68c45cc1cce1f2c66667c603a40aea4d82b6ec9a8eee4f6ab49982971ae5a0d3d51b037102ec1e65cc9fe2d57efa3adefd13858ad4706f0e057abd0292a901850940faba635b0f4601c3cc47b17808fad9531972cc0098aa4159f7cfb67a240b216fa94d404b40624a77f75426cd7838c14c1c660374317245dcff8748cc5504f2082585bdb41e748fcc890100b5b5295a711f1a43b961a3bc63e59ed222f5586313ce2acc0957845b82464d2c530e18e05c0c80d37c83f014a5d2f52d7b3aeadebd85a392a8c47161d255c207447460724d8a09042f2463bfac902c4bb555a0679344246c2a38c06e4c62b3b184338fa586a91cdcfd195f8406ff99378ce481bd3846dec65a3d8984a2152070511d844e1d620d1a2e213822826a5585bc21d0f750e4236f3933616248930e35f2a7f7b5228c440ca9d14ac90aea63eb03259a4085e7944d571b3cf2dca973a37b3514db73b85fa396db54034c93dc7953708368586bf8c995c86cf867411a200bcf0460f7187d1bf4a433bc5bc3f41f1f84d1fe7790f2dda83d32a6ef038253f81fae9a1e1dd5da916ebb7086592ccbc00fe06046d9bcd6da41a414121c1cf135daeb76f1437adba486f9b559f36c90b30fd2cff0e41215c70cc5272d027e429e7bc70399efb7f638e3e91105462e3325afe56ed24f6f80709e5b7312cbc81b1a848d22325b8041185945e6aa623d0c5291d8cebf4197b5c6df2b8d3578dfcbb1b36e40ed9519107cefc1f59977b1a61484d64468935f94086f47638eccf9b8d1a43ea942caccbaf9ad423ff5630d0ebf8a5af5448895653d1b538032a12724b1e05046be492ecf54c70e1347fcceeb7bdfe9d40ffb5062cb125d42e3c8d11d16110b0b3ad5dd90e94e65526ee708da8a5ea4c6e89b52c6736ff2e83572e2679ca786fe1f47bff89e9e089c73d30102783aa15bac1a0c4f7d197ca09d4a03e29995fb331c4a58bc765bd021f5da7004922f647b01599fdcc1295e792d1a49c133dbf3022f4e44c9c460f20c5064fbb843667e2fe8c41a08f1f0c9946cedcbd0983401f7f0c09ed9c993b130681be3f18725a391377260c923efe3164347226eecc0c027dff614868e44cdc4f1864fafac190d0c899dd993348f4f18321a1cd99b89702402176d8ed08cd393737160602b58efb9ea424064588aeb9dcd3d0acefbccf9d2d1cb897efd089b92a9de53513bea44653dbc598a426124a1d28a60a849adcfd98e0eb8723f90948a50bc8a9ca635611b22a08924f28e82fddac4822b1bf4859f3114bc9a3006eb83edac35a1588056d143f7a2b1f182d75337f044500b34ca75f79a9d80aba43dd49789987b8113cbcb6871f8de7647a4dd6632d4c5431d84fef0d755a907ac06a2f112af8a9e4a81327d9a0fbd68d6045bd21bc680b381392c810224615e9cda5fbcdb9e5187ce45553770611a53ebc66adeb05a889cf2bafa71804bcaf0c98025ea2cc2e1ed4c8581f8b5d6cf7b1bf2da2f12f598af4650f1cf73c658f2b3fb0386b39a5b42ff5c7bbb50fd9fdf307f50f9a6fd33b6e3f7ae1a217b6dd2bf422ed17efa92a6014fb251f69c175cfac92c1779a5b878d1290ac9470412f1c197e74e92ba1075ba5cbd8da2a02aa52ab5fc21742d8b78ff2a0ac98b7aac7f0af54c5ebccd96b43c8b8a6e2e8e9c5aaf8cf1a0b47339a5bf4b1b24891607c0efb4af46289dd51fef4f8aa47a29ff177a5975c89270a0e7d3fe61bdc35b535a44d48873fc88ac5e422bfbaeaf32018bc96254e3acf82c67c3b0e86db87d5c868305eba5480a880b39fdb19377727ffdd30a2891ca8d00af120cce40432170e9be084f244cb31749b6e6c2ee08a23521cb7b3103f489afb54c10e0fddcc6e14abc47652331ba3e3fb99426e8c03c7a1f340e8ff2bf29bac21900dc21882e26243d8cb4522af1ca8297a44a715b50a3c6a8a44be3c0ca08a6e1a2c31c50524ac848e7ceed9cb9663a002e8a8316b85dbc59d6bdacd066e42d88b2c87f2dcf0e46d27f659b3b5d9a1f361eef4b6c6ad71d53d1812024e0c3ef54acab21bcffcf3f254962720e36b709857929ea4ecdb0bc2a3337d7abaac8ec8a0bf3b8a969d59c9f60efe919754387c3ec241921f30fb72909846500975bcd80325a73ae87cf35c298bad1899ec899901cd1c43dccecd122f6cd71d01d34b39f59f683b394d536cb5e63944fac5ecea6f48a6963cc43775fa1553b7990de54181f581e897d6fae6259a1af9c50359a0049543c7e8f80e964e0e674214f35978804ed669d8039de79f6b2430d83e91cc6d30555ae1e8b6413454a7d297964c8f32da9780b27f2610a8583dc79492cf66bcc85dca6567376f429f4c7430c64daa2bad8d3e601738c6f970995b126368eedc6500832f164cdc76febc7c70a9cfe1b22d37a9be0d22eba8e30de33f6759006c4049628df72c479c13c301182c9be1ffc85f8cee92d471f20d15e8e58cba5b887b271c2f74d8702a40d5dec0509cee3b491bc689733310fd38caac13b1d46328656a70d50ea709de4eb143e28000130b69b30c081bf6864766003a2149d3443d6a23059a5858e0933a6e2c7301c0b917e6af1eadbd919595e616726f5e3ce2d2ae38973ba31347227db324df30e3d9de8a69fee0c0a4e7c0d30538ead3398ed480636ddfb1f11cdcee240e9eb522a29c7da30140ebbcfe2a80978f048508506848778112bab9e3beee0bb45d8f9240628d74c0cab9a62afc18b87b1070c6473fd4cf7215c64371b1c51367b7fab733e287e634e7e8417514d61dd433334329da8c9f23908647fb819220b9845c2c9310009953f8bd440869605f4278e1fade0fb337a8f90fa5ca5c385efc069f09eaf672b492a3753d9103f7dfa81522a7138a9462dbe4a8493b1d85b0fa7e6576cbe37daac420624159a8280937b6ffd261db124ebb9db61df40f72be264e9697ecfd51a910e8601a0dc9eecf88b8228870f39a6f3262a4668b4774987fbac3111219cc38d179d9e2dc97ccd7d103cc5b9a82a2aac398041a47cc0134242fa21e7145aba04e312ac1673a17a44aa883625155dfd99c7775f06202c5bbb84db5a5126356c7aab42d88e424b1e10212b3c65c09558a1f7617809938f641f8865923d66db25127875d525ae08018351287aef06d30b8f1716242951b520a41e3c3674d78602599d137b6fe08407cc01679dde82bb8a229035c00c1f251c988bd5e26f52438901c9e95c1935a01845e2d030c21553be875b9389710830df98c21ea60a638e290fd674d208a9e08eccfb5953a69fcc31a4a334a142e3d56d6c47cc7ea08aae7a644484b8e7c7486cdbd54417dae90c8bb0cf056b36dd3dffa75d8c6c04690c2b381a7630254882a787ea7ef3fd6c094ec220f28f5a23777aa0f5b52940610ac604483b65d1d51ff78a03e06d2b265b7f422bddc8dc664dbe8bded1dca79075765a342021dd040f115ddd990b11e8ee06782788dea5f2de027116625947b120af12a513e0a71c7a6ac621c905d42e32ea8394e04f9c124bf325325841750f6b2c8c4eb0d46497e899d24f050bbc32648cc5022487dc70cfa02f314afd400dfa4752608c18eb261fa07950aa06457c50f73f072b122b9b4c435f3700b1d475d740b97ec925267e5268e479ec31962ae50780ca522dd44ffc8c58555f729bbe38b920c4c8f12be398773f06692549a0499c82356739b9097f50c4aa6835f2b312e243ddd3c44a7c7bafe1ee8f2e6d7c3202296288a533254bfa68d920d6148a65e7a24147c5e6dd22cf42a1f5809e764d5c699e83b23bec8d26162be87ad2ada6fd18f8dbfb53edb0b20a1dd16c66f713d5a09e1150a4fbcbd09703a511870916832ae9c7450d43cdd0403978f2a22fc0ae4b1f7f0b024bc1a2465708409398407f1bd3f8162b5de7aa20eff2022c0e653166c52b2f056f41ff0d9139e13666e9df3c0a7eaafd9366d3ac8d0f7a3b9cfe3139c710edb9e3843c153105c0669aab3fe5f416ab2e34b486d833c8d0b1b35d3ce46d9192fde2da681d6c866a23ce9341d9658795909ac9f5cba0e09e90420c9425348bbff2a22a1f3fc967e0b1e7de4fd0accaa1338c49e8dcffdab5504c870a6c224b2d9b0f5fab9c8541c836431100b4b9ddadc856ccf0086cf0b4afff256705bcf5f3d780893e6b5408708247cd1108977fbb03891655c26263182cc3672b47f235ee6326440431e347fd06fa85929c805bd7a867a9425e3d3144b4a48231a8db5a23a2c9a46c185ded954a911b2da6fd78e4e3b10a1f6905ede3bca93c9d5f5359ff6fec822102a2c3c00af0bd936e8a8fe16cee6ac8722b1356aa57b52cc2799ab7f8fbfc3dc8b5a4af253a45a077f857e36fb11540c3a58669cbeb476162ae49c54d67626be844425c540b1e83eacc14235201ab2f70404ef53eaafaa7ffa09c398eb8cb2ec6b408c5d19a74033c2d8187fe3ae1757aa901af08b6c62e36d4c6c600c466342462c14af56ecb965b5e8962933c44f84cf5eb54c7c66c367744d25acda01d3851d5884589cb8862d5f55daede91dbcd2108195f54e6c055d47719acf669a1b4c4ca3c92cbc1e573c93edfeb937350ef4605a02b486b3ba1e7a9e0fb6e01a4bce23c3cb434785793a8861019e06fcb200d07f329125265f5f7290bd654ff08a542fcba2255eb82539114f316f03f21bc938530837e75b631a02d6ead629cdbc20bdabfd24a0e174a4f6244f1a9c271e0284f49a6d970790347d8cb7109d1a846ab50d536fd463a47fb991e094680d6912d612afc50da4e360a3a360f53c559bc2d7e54b41602ec08927aed604e736ba57dfa84c1e898583d4aafe1598d809bec11d8fd83bf41f22dd054f928e1e2429f6bc25a5f90d66ed52c692aa7d130becff018460037a55bfb258200c5a351d575f5c2af1d94a6492bf661e4408bcab4105bead218333e18482f41d74f4c30b0a1c865e9bca379d7b5e66a3574ca74b6aad4657b30c276a74be5ebbeb03116804cae3131a55a089b6ddc86e6b7b6f29a59429c80a8e0a3d0c349f5236be42ec4ea45b6f72123d88e653cac6977527f27a10cd9b9c80dcc79b9c7ebcf426a71e977993d3cc476f728a79e84ea4bfbcc909f4a07c03ca252dfb4fa6f964a29e5c2b736d9689649916cb377722b38fb984e57e6552ccb776403dcc62eda07a931398c9da01759cbb7650dde966b176d041f576271b7d618def2b99da975ebe24fa52e84ba02f615fbabe74c302ded28d30ebabdf68df5b0781a99da9f3e92f677ae593487426319fb5d099c27cd2406702f359565c33e17c92d7996e3355b7b56bcd39829ee65bc5d13763571937425fba715d747a03f4a51bd85f7e03e64b37ac8f7e2346bacc6f9433efb9f1e3e334bf1104e42a6e08f912f51b35bf41e44b342fb1b861f31537a82fd5acc4b4b41442084b365faaf952902ff9f8d2cc97ac932ec2cb45a0de7f83fa12a5f95ca279f2e4f96a5b914f225b3ebd36944fa15a3e898054e43308289f351f5a3e7f7cf2499bf5e4b39ce5b32465f98c91f924ade718fa319f309bcf1c438f3dc7d0bff2d9be3f730cbd98cf90870f9758e4c993e7713e730cfdcd67873cbcf51307f836e708fa9a6f44f402192b7dc1c8d74c4462c2017ee84b05f81c34a146625a9a7d8ea0c7484c4bf673d49ae65bc55130846522d82bd762a2b7cb448b94c3e743a41cb00f9172d40f9172900f22e5b80f22e5903d46ca013e46ca513e520eb1916e769f46b2b9ac388af4a2b6cad855061313130e1c82306f1745d84be6ede448ca62de5ef6943ea3793b4df63e34c701fe8fe308faa5d9abf0f61af940ce94e3be0ac7713fc871d07ea9006ff376a22a830987cfd79c0907ec859c2907f836c7517f88890947f91638130ef1573891e3a8fd927d16de7eab329870c89e29477d16b9ba05a6ed22ea2bccdb45d4894cdc45d46de6ab8ba80f996217511732c32ea25e33c12ea2aec224bb887a90397611752013d645d469e6ac8ba8ff98b22ea2ee63c6ba887a8f597611f5d2ece922ea33d3a78ba8cbcca02ea21e3381ba883a69d2ba88fa68fe741175982964d6ba88ba68aae822eaa149d445d441d3d64545d4afb9a28ba85bd30293451751d76101b55de3ad324e1bf6fefab00a0594bf0eeef8f671a427b880eba2c884e38e641eed251d36fa68631dab5183f4a5d9bfbcc642089df45be471c44450f1349f2678582c9f3674487172d6189d2e00d451c3d70cf325fa95dea7394bbe7a38a7ca5797fafaf59fc0f3c4d66ff0ed7b628627f373bc7c75108c89501dac0fd2b7277d30749babd3dfb717dbc69982d5c1bfde4bb307fd0c9d08f339ee8335acfd91c6b08722cc1ea4ed01e5ba7a26fa38ec9918ba2317b41c01c31263c634d169b0d8c069024c1074aa705d7971c920e483eee85edb82940f3cb02902e4863348be00f1c40d35fc600506ae212497929f1eac966871b7a06fdf0aa22e109f889b5e5b2bef08a9652d0657136fa576d65a6bf319c39a49d6cf18474915c7864b882f5fe09aab07aeac3f7141683101c1355c520f825a537cf081a8e6367e98b2810b8614de5c99e2a5c9105a5b58729e184209130d9bd7191859064f19cff6b3c74f1f3f493f657ecefc2cfd8cf909f3f3e5e7e867e87e827e9e95e63f3ed26834ae6ffa306ce554106c744f8f564f4f4f564ffbf9e33e3efebcee8f597d3f26fdd107867d4c6b835ef998f47b4cfabc2eaaa992d755d21f63a4cb7c2449522693c19199f4c9126c0e068bbd5eaf11e6a48f3018cc4792e41169d287e9425ccde65eaf570983c1e8bfdae6428c310882346c0e5b6babeebd5436d74e69bb520efb515000e4afefd80897c71b81f2783b20af23b46f0744df89eaa0d552c912536163d0826649d27cb8c1ea2a8e103e298ee8806272c5051a8e0c61e60913752c135100f1a045c3ddc66fdf124ec8ea66ec5bcd2a4ff1b958a317f551ac97568582f30229970bb41c9147af3a767b77019babd608e6d5cbda0833e92e346dd8dc0b279a5a361242175dcc268c1eee7a37521206820df10573317498188a2efa68365921813201830ebc9d094e4d4e2f87f9989d5e6e82132cf4b05655ab97d9b503ac65839ad5aae26895a76ea3ba8d04d15f2e86a68d84d05f1efacb86db5cad553657eb15ae609c516c24fa75d73eceac68deb12512605efe748c6632d17cfc4533997e68f48a72a13e9f17cdeaaa3c8af5d4cbacf594723d751f38729efacf6b46565026731bcd4b1fd1631ecb26ecac93602321e63dde934dd8dd9e6b7b7209b503ea369acb5cc7aef431997c448f551763a2c7b20dc8676095d503651b3c4af5d469a60da8a72e33a7987e9c698904985bf771a62512b0bfdc271fa03fca75a6129a42071de625348d3f26d38fc7bcc6bc562ab36d8ee631d3e6e3a4ebd88d3f2613902f31916023013bcc61d904d0b1f72ee624d84880f9cc67d9849dcc1bd0bb998f346643e6346623e63f26fd8ed998e5ae1dd09859da7cbcba8e1dcd3c6b95cdfdf8086436a0774fd8613ed21809a0630732fb613ee60a6573d461d946f397d3b0395aa7b26cb46ce3ead8fd983ea60d9dd5719dca2aaa19bb8e1714ed11363f982146bcf7dedb0498bff7de7befb5f736c1c2dfebe2d55f27b3fede7befbd14dfdbc490bfb2bf4d30f97befbdd68295f6ed5b62cacfbe7d4b80017b3873e64c0688bc1004073748d880c399af5d3b4c0933870918282a2c4c905982cd93e2d107a049e41547dbbc6a6e2dde1a67d0b0b6664bcb84116f9928c2ad3dc25ab5183547fd9a3aeb349fb75afd568deeee8512469478aa815446caeb1f2f5788f065413dc96933df47d6e8ee0800049233bf213b8c59b36bef0edc1ad1ad5673d47f48224f1277d6d49288228939be24e6bc0e0fe814db915ed16fe8a059c9ba78620f4fea30ea98b4b6d62e7ae5939eb4e9411fcd137b08559388f36ef5d56b555fbfda1a5b80fd933acc5cb21484eb230e4db2ae50bebc17f072d05ff9c4d8a99275d1c31808972c69610c843037ed7900101ee8f43b06d6c00ee653c93a761ab38e4da5eb57242b8d99ba91824a1c1d5589e2d1086e21b839b97704374bb7aca567e8a2571fbafe7a99f74979b1f8620efa34df1cf8c14c86502b90f1882824a27a37ccae444e9eb746352b670e10394b9c20e785283966fee7db27878610899c2950725c7892d3e36374667c40433c72c91c3529c568f1f98822a20e981436308512375b45a264f8c126492c8aac0c8db25696466865a9287fda28067ed94a228adb8700d03fa02258a475c6cd9d29769ca1a18bf03286891b869022c51a3642c423974c596b52d2ca078c01f2c44490362edc3941159a24a03cbd918202cfe30f777cf8e10e474dca32f4e6fad06f18866158bec0d568255159d6fc881fc01564b1a8b5d10cf1e52d6ab71a91d788fc56731ea26acd6b44332c9803901934daf741cde7a356abc5d039514db446b717ed9b41a3e6b823b4fca9132b9e62fc213b478d74946251a782fc9226a62ca9d7ce30eb2a8e7a086e7f14a3e2e8093cc230745dc51d857eea62541cd5592332d485473c7dd8631786614892d8bcd14a93acd51cca53a73b2269442abe7d472cf9fbed3b82eacfdb9582ea00a4ca57a76960cecf44d1ecf72ae39ea108d7c3bce8a1115b1e2445b37a29afc3407cfd450b1d966d35c05726dd8a4aa1d7588dd0c5df2ac3ac143ae8275971b1048039ccee9928ca087aadca20a2b51171fe3a7623d47c8b6f5f114c7eb4b52ae3ac8e495acd4338ed933d0ff851956b5909f4eaa2d3b07962279d66259cad91a9f2bc4374089616c148c560f1b83d0ff8c1e5c9daf38028ae8aeb1f2b79abed5e6bf4e2d1da47049e9bf524f3c591f2e72dced39fba0bfe8cf194bed9fab37d1de6a95f5b471b0ff801e70765e471d43fdbb7f5d52df501bc8d2d007c6af38c7e51bd4651f69f942a0cd58c8aabce426936edae55e12db7204762dfd0deb993c5420f60b44e406277d6becc834d8466698d54b0c40c912966861831c48e96ad1011f6fdf37143c5c2d77d48f592f8f0f5b80df1e1e5e9e6a34b8f9b1d727db0f0e1f7cfc7923f75595b468ac954354f6dfd3df97e3d76e80991b236df6c73d47f3d1e7fefbd17ac8160d7df1fbb7befc5d9fa8831362a6b8efafd3d35f1f73a79efcd5197567341dfbf2736fffafe3d65fd59faddb2503ca4c0eea2504c8307c403f6d8f261a9d31d61a781dd460f288f9dc4f8621ceaf0edd86f78ebcf178f1d742e6b71fdae9539c4bf16044110f479aa4317b5878de4f31804bb8b28982b985b3473dd56bdf5211fe1f7af4798cff251070300749c0924b69c28e2de3ab54e175947ba6155e822eb95cecd548d74a9bacc7717f9496fb654f6a9f4794b659334525b07a9d1ef38d3392ae377ac695cff297b1bc3f79f3ebf634ce3a807bfa34c6fd0556497ad366d7b94fde311e7cf1f8f257f865f7f3cda7cfdf1b68c7a57fdb703cf53acb73e5a1fef2f8062fd8d8940c52cdd9e7e89e6a158d483feae77cadab7d3288d74833e3d8dd245ed48375ce8a27617dee6259ae7b11ae9ba15f3631ae9a46f33c5eaa2f6315dd44e756824eaed8d64f392db3cd66bff786dfe14af00c6aea0d7ebb69a43a82f7ae84715f412749ae82b6baec11a98abfe32c59aab2e86f7c723f3ddc3770c841b682b3de2fb8e5da7d8fafe7dfba698f2e36c6c6b34b4c2db6990c01a5d6f22efd1db67582398b77fc01a65e0cdc2db56faccdb2f608db277ccdb7420eff612acd18f3706de3dde8eb346427ef3f613582315de2d62b466deb20b87e12f3cc86c917bb7167e81fb9818e45e0e03c7b9ccccb907a3c8839c34cddcbb20bbe92f3383dc2b0af2172e9a2c720f97816be0a169cbbd6cfacd417345eed940b72651ee65a081e77cc8ecad70d059500762e1440ee6a8173b0bbc347b2c72948b5d4fe62c88dce6a3d923ca5140bb9ee844394ab6735f917b435eba90d91b6d0ee434b36703f2153e337b4039caee7a352f57f8cc61331f7d458e2ac2666f96a306b0eb91ce62cc51446ecb51b45d0fbbcd7fcc9e0b18394a68d77b399117e52871d7b36ef36bf6827294cfae17e4e58b1c45773d205fe12e7214b8ebcd7a1ae428dbae07ba2d97a36ebb9e90978e81c770396ab6ebc59c856790a38e76bdd0891c831c05dbf57e7c85f798bd16dea3a76377418eca60d7bb6ef39ca372bb9e0a2f732f7b94d9ebd1d3b1bbe52802ec7aa5b360e1b0dc03f21ecd7b3fdeeb711f6f91a38c763d9813e5dc03bd87bd77bde7668eaabb5e8faf70377bd56db9c722f746efc1bcf7f25ee8a247d19dcd2d307b345f917b517447947ba5f766de93798ff498db726fc87b42deab792fc8550899389b6baf99366cae5d8579029b6b0f326995cdb5039934536773ed3f660936d7ee63529ecd59d95c7b69cecc239b6b979917b0b9f69849a16cae9d34471366ceb0b9f697f9019b9ba25c6cae1d34dde6dab149c3e6daaf49029b6bb726ad26f5d99c4f8aac3fdb8767ea71d857a25efb5a111583f8bd79563084f6751781331b5d44fbf7ad6b233a6573651b512d3b6ba4ea35ac29df510dd75a5ae67d3a658d48d039eb5c535c535c4bf47b67a373d66bb5b2ec1c9d1ad24516f7154e7952adac2afce60e97ef1f2969a391dae6acfabe72a9e6d4af0f59997588f2a45d55c60daf443df4ea144f95712ac9fcc583f9f8443a0d2ae64052330f9a2a5d85911e17f2ea95aaca383b8f8f0f79f5baa4caf8719b535efb6c665d5271d587cc4a558dd429b34a5528b33e999547f1d02e2b213f7df4b326fa98148b8631a9cf8c99940b69c24c9949ab50ab8aa33c154f415233233e4b685e9d42295dcca7d8f3e338d7bc1fc86d2ea13a05aa6f007bf510e0a8de64bd7a87f914c77c85724d451010edc7a7a79cc964a76915cb94ac581557c3545cf5555cf51266caa5e2aa2f81995ed12d15573d04ea22504aa6e2aad737e5ad5da55bb27695ef2bfb2f5ea253bcbd51747dfba290f3e3b72f8a1f9e5a5519f6adad55431466678446a2be347319056aceaa91dac74ff12ccf9a10f6deac14f3985bf0ba0dc3ac04826e45312b85a1db976725d1dbc26059e9f5723b8e590906734b9259691cddd69a954827ddfa8b1bd563b96a559cfdc94a34573c1567dd3a69d62eb3ce31ebcbac5b558e59e354381557db08519ef5eaaaca962b2e5bbc70f17909e3c30a43062b8b925153652cd1ac24cb54cdd32c3ae5496995b74e9fc48a83aa46e45435a2515523a2aa6a74ab39ebf645c559a780ccad5f20e6d63f10ba7512c0dcfa0948b74e79a08bee934ff1e53df92c7df4329fb55916e10c797859a65a15d76689cc74ce9829172cd3ad57a6722acefa9298299c4ce3549cf5eb215010cc14cf5febd7a45d6f4aea27d5fa1e2a123162bf8efd7c113ae8a19fbad7196374988f7e1ec5ce2499cffc6c9f9f1de6c71beb6fd01c488507b90a6fbf425e136d3ee4366f27573891aff0f692855be02cbc9d66babbe9edb5169ebd85b7135de037bfc0db3d03c7c033f0f69bdfc839ce73379668565aa2796eb868b7d14837a82f29d96ca38ba8dbe8a2eaed2e34307115573d67e2cc5bc555cfc0c4c0bcc0bcb530b369d2589816982b4c229b39640a9935156690096456ff31bbe27accd2ac3e336531d2ac3e9e475fc5ea61751d388add707d755c97cd556f6b52d29760337b1d04a6d98c52a5ea7350a97a21c24a954b8d84b952dd428329d5ab5254aa552aaef6a954ad2aae3259bf52e0b1f9ec3c7984f0f2a752adaab83acb6798270f9e57aa612a4ea942a9b8ea5d3deee3e28f877e6d4f0f2d8ba437cc0a1443f2c2ec0b763d7cf1592f10933031bca08bde57ebb3445829d6b0125162c1f2298af92ccb309f354cbe782b2b2b2b2bcab3a23cca6bad1244b06cb1b588284fddd75a15d65a73d52ba8d3e9743a9d8fde2f11c49788927ae9d56b1556e9b22e8fe5b346d2ae7a73d75c8815a7ac5eabac51d75a556b55ad55b55671c92a52d61d2c779edc597247ea0ed4959d2b3b55769614b1236587d785a7cb89abaead6f5f579b2e345d3874c1d015a56b852e245d43ba9eea74d5915367883a5a75c8d4f1d5b9aa53e5eb2ca9c3fbf6d1e1a21387ce0f74d4d02143070a9d25df3e3a52747a747837843153474a0276e4d869f3edb343c60e183b30d0f142670b145c76f0d8e992402dab95552bc52e56abb5b7d62976a4f576bf36d7dce4043ae833ebf5627722aa57b4eef4725cab5edd07dd39817e4317ad3bc168d7ab3b890e8e8e9d606ebdbdf4995dd1ab3b61077b5e1ebad3e8533a8d3eba53473125f301dbc562a537f980ed64590673a7d7d8631dbcee84bd3ad4d06ee64dfe72a7d143f701db95b9070b596e7a855e4577b27e1d6a681723f398bb5eec4ea18bdee4841dc35e59f42627eba23b857ec55ca3bb26a7106c72c2d7c9d6ecb5831e1ace305e4b80269b430ded6c6ebadee403dcd925164e210f3b9b9b7cc876d6a1827677895edc6396076a6867bda9070b1f307c730f164e310ff21eb3a1dd10cda7948d3de48c8816e453cac69f594f2dc88756ca46a09e1f5a10adf4112ff80354ae08a2f9c8dc89f492687c85d89d40b75156d884bc86bd56cb3d58343989309b90903739c1aed8514ced888682683ee5e84ea4cbbcc9076c67cb3d5808d57213d4d04e456e7282795035d387a3fe2b5beb45600fcd8ee15a31687477b5d21878ff6663796434dc2c386ae5f1783c1c954d962c47544b8ffb425689457a69ccf800cb11406e5ab00411a5058b0f505ab090f98105873f7531fcb0f070ac00e4ea8715863c5169c113450c3bac8499618a3ae11437cb04be049162e6496f0923742764edf8d1238a0f688c807185f44a26834f8ca13bfa804914449e88228919b24c3da9818a891b3543523802c48845770485453324ee8645ca12a8ac52fc60068ddf55d7efeac9851b28b8e4b1e2049a205220656b090b555255581883cdc4e815197c9488472f5851229a79216761e19725c8dfd7dfa317c4daf7ef8a1c2c431e0d58c503f7ea77250e9caba5bcf286f6f85d61c3468adac2ad85a32a6dfe88f28af88af867e5ea31c64e9618e32857ae6aaeaf7011cbbfe28b5d29433ec6186317ac58bdaaaca0cad68d72b4c28d8c719434054b4a0f970915377749d9f3fda342e6cf185709152f7f96974a0b54aafec43d19ad3541b7d5c84e5646d06ead5c9dadbddfda4bc95b3b6807c1dc64a501bd33017431f3c26c853a98dd52a56bad8b40fd8e95b420180504b309b8180851dcf451f69b50136dae6957ea6475dc0a9619a9a71182ea85bed3c0c9fa9192d4b435a077369b0dec0de81dce24cca2e08cd4426312b0d398037a877313cee63a1605c94749bfc966e3c9e6aa779e3c361b0fd0b103bdf3e49981d4426973a2cd75efac503f4b6ada44a034db44b04e9d66255b1428df61b7d570db468928383b5919c175ead83b68a73110a8d9151785e7043a0671d417a166a5364a18e17df536c58a1b692cf3ac5c77b262ab71dd319d234244d14ae943b3840f74d004a1050226c4dcb91345431d39547820151fa2958b04ee46015a3a4f5826b0833d0fc3300c432fab8c30bc4fca30a495157793b8f7e22230ee827eaf5ff0a2406a485617569a2937697678d2d56bc38605345ae06f4a1021ade2250b657f79cbdb4479c12a4a596235e527a50cd4cd64c5a9509ea45873d4a5c420a5ca9fb7ac41ba5a4a4529ad4ea9c541bfe65b716dc3510a2dcc698147edef8bd5860b5cae93a2ebee8b2365cfa9b98e82a7e644ef6af4564f35d77f962088b50f410c9c51c20a95540c2870d99db537222ee92d59e20914aaae8ed85171dd11f653f73174f85a49fdfd6b35f5974e6924653fbd2e5cbd5c8872e1e9cf9acf4df540f983b2038a114ba0f83005250c11285ca4a0344922fbfe4199da32f6edd48de0f6e7ed9b5e1a0b4f08b949dd90c5f78f851f0b587fde667842c38ffa64cb094fae9e9e44818259e0f204872747509841e38327bc232b2471e44aad1084d4950a557cff5610b302973f7538c905729321d2171983c9bc7d9499743733e96eec1803cc9883a6e83393ee640710a919336326cc6766ef6426dd55b36d4e141d3b688a7e4d985f30f46bbe9c344ba21387c561df6b15677d88b7c2556d046d2088fd453512e2b21e63067eeb254cbdbdc1b13c282fde925c555e6c15956dd371de3a88ef2dcadb9f512350568f40598dc4dd5841ad1388df4eb8708c5d473a46073423c873c5449d2d4b84817265860d982d3250698102081f175e3538f1d204eb91d4a98108106c9e5838810a4308993a73c40c91ddfd392133a32ddca75f93a7c7e0fbd7448507bf7f4d8aa0b93d6c6b35b5379cf9a2e2e80834aad1dd65057dff986c3191f367abc9a11cddfc9974eb52bed4fca94bfa528266fe4cd2d1508e37fc594be202e64f5d2d862e7f26e970d8f2a72ee90c963f93745aa6fca94be2a1853f93745baafed4258951f26792ee86237fea92c0a0f06792ce27f5a72e49cd097f26e9d030e1f1a72e294b8a3f937463bafed425a579e2cf245d0d4cfca94b2a83c49f493a1de2fca94b82e1cd9f49ba353ffca94bb2a1873f93745825cefa5397e403993f93743360fda94bf212e6cf24ddcff7a72ec98c973f937461b8fca94bea61cb9f493a32577fea9276a8f26792956189d59f6252159740794a4aaa7066a04f7fbcdd702fa807ad03add5889c7ad0583bbef2ca937cb2a4510f3a871d5f79a529520f3acc8ebf7ee9e3fc4894d6ad63ec6fdddfba49bd1d8c81407f6c5066e7f57ac1eebd972ed11748a9122ebf2546b4b2aaadd6caac14943a1803e1d545203e40ffcd9dc54e61a388e216c5916f86016c3e6b6f71eff0d431eea90a5a54447cc76cbe555c9ef26cdf8c0f6820c0563346c551194e085f00a108c14e7a57c993ad49a87ae86a919eeec8ceb8d926917a6badb5fd2a40f1b1ef9f0a72febcc17aa8b824901dfa01a9cc45a1928845cdb622689cd15e21b620d6e303ebfa23885121bdde134f5ea0909381143d5049a105861f5fa03081cd7181073759acb2802409da8245052fbc28587260e1a219d3e48e1a3b4bc6a8c922048a206ea2f0443d099a6d1962840d5a9290d2c47767083a4594990a026a85263e3f346419d224895f90169a006235866a880a3df450d50408e9881454b44c4981b22601509858f383889824779c10dd4033258716be440184120f5678e3c4af0715dedcd08456c28f1e5a5548f020314502d24091022f081d7c1461c2c4023030bcd0c389154cd191c3011b9e9a227200e286c99226a00e2b728cc852044a0a893c3854f12184922b2778c9418993320f0b6cc63c05e1f1b3220122a898045901c91457123b64a42a8c0d73b26c5d71e0c312274a9ce061ce122a5413e01003d49621904ce130048e8fa8272431ac5982aac98c7493268b192e3c3c4ac48ab05242448a26e20481e4678c982c687e49ece092d268d2701541018e0a461c71c4c9e8e44413659eb4f1610a991756000495d6173b56745218ca008829425841e2491e2592f870b3460e9316de5c19b9208a45ad052b3c6a7867a4927852a6c7112867a058028522f8491220c45cd11066892998946922830f45d060040a112742750b92284f576c9454a1800c528e1841650c11572830215b4b4c0b6d8638a2cc8f2c0cb0e242922d2c4b4429990a8bae5000e24a1169aea4f4d8a27acac22407224c0c51d171a85c4922093148764c21ad2912c788ad3149c608e9090286168638e3048a136084aaaef88268c2862e4e82d4747cc963030c2eb0c1610d9808fcba7c3864c5604607a9262da2c4fe7581238313407ee015d16f58e841cad31c1bf01401c4498e7afdb89945e461e287993b4986ac11418b0d46144125874a4914ed3561aab8a9d383480f282228e3cb8282c277e7085413a7400f364ba2d810a78834318c10a9a3250b112b302730914521d9c10a8fad3339b8e9803703151588bc61e3820fdb093c7a5841959625a23cc94eace07bc383181690e8355961f1a8a00c0f5e0d539288c346070b62c844e941091e6ef8ede893bdd3e408560a6a6c5419b6d63627d416afd8556ff5f6f447e5838feb18e31b365f603f6f8fc3f90596cd55a1c27abaa3f2595babb89aa34ed57bfcfda3e2fd59d3adc18285f6f813d7642b0729a286484115d99dfecee369963344b4e441e18cd4133b03e850a5840f4d1a1e4a762fda2421d2840a1148b4b0a3ba17bf6354f76276749541c2871d98aca049a53b7252a0e0a2f543618528bbf6f6808c97835eebab127c24af171a2c776e3093c50e103ba807c11f92141e74d1c38e3556a2d8c2866b07f26c966a84942329b71bc298f919416344cccfc817235ba0fc49fe8c18c1469e605d45e414815324eb69111c7e45b61481f22bc264fc153152048a4817d753274799acbbc856d1174aea422e94fd230227d4c2fa53f47dff885cfd49f68f88d58fdf3f224c3490c2530a556cede4876febdc5dd43f2370be7f465ae0092dd713e0cf881dcb65a9fc84e07051809a32e225ea6e81b2d9662155a0a60871c1c714214e4e980206b9f3b3ef5f90ad3f7557c66e9fef5f10adae7dff82f8dafcfe05711284d744df3fa938a51a502a8c5495506a498b3afefd03b286c5f70f081721250d42ad4aa1ef1f90210f1b654b34cfdb6a8cf66d3e992c0ab6fe50a0a24a7e3fbc70f9fdd8028191ae500ec1f3ed5350df1947fdee229c9a1e71a88a212850994aeb62addc159efe86a4407f437e50934a29fb07c4eabf7f42a678ea24fdf9fe095182fe8400f11261325b0dd8b7d7ef7ca2e07f80d4d629a0cdb58a2bf20427b95144a0ec8ca81f503507a37840cdc050559e6ab6c80d6fdf3fa820a0d4884f63dfa88d9aebfd0125ea85efd8cdb5da87f1f2dafca2e61b91b2fff682a43d7501e4505af0fd83daf2f7fb0775f567adc280020a74abcab046d5c7e3f18cecdabbad111de98c6a04aba231c205420055794d9efc9d70e5cfd63a61eaff6c39cde543cd9f3de76bd7574ae901ee53a392f6f4698cd2de1ad1aece55dad7c69db5273ea3d6a200410a86a2188254cd0e9452300cc1300485e05b1f854b6234d5c208c09192fa2d12c5b22cc273f18b1a0d1874a10343f1f5124310bb4003861af41badd6124a138a391c088a2980d106a25896b59a7b0c32e20ba7810b2f58064e6023d98d84c1b71bd53870516bce3236d205df3493b1db0625072e84b66232f25619b60551ade2c694d4cf9a6c969bd8da1abf7675d1908f59692231d2c2488942d943e9e8f343762359f0eda2589617f0f04323c52a83aed0008592fa59d28088e8100af51774010ab2ed80d5022bfcba65032282540c85d98c8a9a908eaa2654dbe088032ca121156bb2b2c0af642acecc6188c43cd888808e8003870141bb3a65731b94212271d60a0b7ef274757d97290b58f8d4e1e2fa92070befd9c08e9be5195d2ecdef7083071cb8f8af5315c7811b33cfc460fc66cd9916031bfd9cfde9636e5b96b59a3b0ea7d31d1d7d0c36b905d98d24b37e1ee90080fbd37318f79a3ed3620af02f58db576e6bdd71baa2205adcc86ea4581a2a5f6f45746e179046350f9e0317a25896b59ad9e4020c48aef7194aeaa76390016c4d5611960c70641ff1a7b7cde0abc3f9db0cb89cd862ccbec1030e443f5d88b96b59d66aee385c949c06a4188bd21c20516ae0822cc083615896b55acd8e8b175d006fd14618e73a75c37b505d84b92bae7917559f51cd342f487ca62c22db7ecdcf9777066d0482b9623f8d1ef47383b7fa9aab9dba0529a9c320bb91ba08c60b182e34c8c1c06580c105306e2d606418304c87c1c2821544306c432a846a308260c0800144fb81e1d353ce60c862248c11665f30441821886fa595278311ebf7fd1758c8d4fe44de5da68dbbf8af0abe1d7f7b8d7517dddbf9da9d8d2d40d6ddd59a4ce014d003fd2932e1109ff606d871d41e3b9eb246b773422d7c15f9d8b105fed6306953fbf82e39f1de3e554cc580ba0b339eb2b9ea2e7828dbb1f51a0b21006f7dec0a82180441aa42667377d1f55b6554dd30f6ed84f1befa482b14edf2ed974b6751ba3bf3e72bcb5ffd8aa7f975d545d501c0654da820295619b571d81b4c416877d4634ff3c5bb9192a1597754e6d4573f85fec43d46986773f5f26cad86799f2bf0d6f35b6a6537d3b64678d73e86f85619ed22ec8d5fb10334112104e0411fdbbe603058552103737711a630de14235d214c95a6d5db03260a36128e7a4990a93e689e5746750b92167452c495c420e07bad5d6267f6e2b2cab058845b033b76259ccb2cd246ea5ba3467a0394bfbdf0ea97cb574ac3bd8e95b08b37f7ede98a237bd736168215cb8b7337eec40e8aa0025ce3be12e68075ecbf304b1ebb8e1f2f596335ee873e5e7c7102689ebf99886e501d8cdd24cafa2751bf9f2f6ce6a81f2ed9bf0e62b721dc5c823c46031841bfc6aa572a068bc715428823215eb75a4b8a179b295f4fcd94e2533365f8d44c095e33257e33e57d6aa6b44fcd94f5699992fafdb3e7dbaf99923e35538af776db7befb5e6bdf7de7bf1bdf75e7aefbdf78234dacf91bdf786f74d8b5d54efb5a7ee4d49bded12cdd3481463fcba17062bc10c899778b5bafb14c18bbbbbbb1bb4dd4855c4185f9ccf7bef751b8aa01886a6881dc418bfeecd23c6d8cd7bc33ae3dd61879af5eded2188af3d753bec9055713687106431e166ce1b25a4a8080d51658a246bb0a234f9cd99cdd0c50a4e133bbc3077a648b11aa720e22bc20992264776a00d3dba50190206227468e0fc59f365fd29d688fc66b3217aff0895b783f9081bcd271f473bd1a1c4ddeb35ba689a309304b606f4eee54deddba1407414bc9c83bf3cde08d4d6d9c62bdf6e24ea41ad94cab07e99eae3a81f45f4b16f9ab27f3e5f0d5c3e2e35f06c6c84cadbbd1c7c9950e24ef46ea428a29fd6436b5f3ec3becc36cf13fc0541500947fd9b45ff117d4615f34d42abb529c5ef1f982e20c040f10207a60921bf383eae1e92d84cc30d98df839982e436049822486e435c9fef1f981d0ff4fdfbb2f5a72eabccc5572f8a6595715eeb621947bc59a9661291299ddaaeebf88bf301facb2daead395c5b78babcf8bc84f1792183c5c5de8b310886e215455ba98841300c45f10592a128be5e30d8c885bc24692b2545f205838d2349c6e4c8ae4c662b9569c1c891246331996c4683947991f9665ebe7a5992f9ea3d583ed7c7c756ea53a7aa54353255a5ea920a05a74d1c386db6e4685dd12a5bae68152f5f1d73796a457978e813e5e1a15214ea04368b4cb7a16169add6de8bc10b82b65290566befc5180c6f18da4ac38b41300c45f105bb3098ad14168aaf170c368e64ecc662b6d2186c24c9584c269b95b72c6da5654c369b95654f8fcfcffdf9b195fef8fcd068404041412a6ab756b395d67a461fd29a3f443fa435694e23adc9741f680422ad79bef8ea41b103d0c7b58aab4285ad54857873ade2aa038932db8daf722aaefa0130949aab5e83a0644a5ce53aae82a1545cfd1343f9ea953eae5265742c84157fb1a05419d80b00045623017d754cd5487dc50199366daedbdf17327807322af859bb8a47940318c56e51ac06182f1cf1bc57dfde1edaa96f07dbf1b5f5c269b12afdbdeaa2f6ea9817f270a9bd6bbabbdb5c43b1ec45c51a5af0627cdffe5d53c92ba7bc770dbd724a4abf526bc3cb068b7ebbe876cbe8c6d1683f340b9257ebea5056f3ac91b55a59b6d37c5a7f6bfd2d8b57b2e6d5a1a46eadb52279d79cf725b3d578bdf5a69ff1c6eeeeb3bbbbed69adbd6bfa524b7677378f1fbee0f0e53744f9c507c35b17bfccf065862f535e967ce192c3971878e4f0c5ea4b150e3718b4b6142186245956bf35cc50c49fbafba5840161cd04b1e5912ec611172e56678d441b03551575a5489672aa6867b01242f1e84517e348862bf1fa66a0fa5314cb19a6ac87e6ad0b9b2e6afe749f0d23f5919a21c8dee6db45717e3454796bde4a4199ad06fecbf4f637c39cbf1405be2b8229edf7af8b993fef9da1acdfbf2e64ae6b39716f755d74b0ee3bbc75d1b6af4b982e612c132516c11786c130c63886ac570c5a332ac618638c3116b348c600e7318ea188c7b84ba35d22d84a015c3aec5095c5fb614b972bb04b0c3212c2e47027c9133e50d9da4229a59452fa7a1509c3300c43afc160611728252c555851400569626a77d63e8c41ce87610c4b7c08002e6dd25cb103440f2a3b2d40fc7e4794524a29a5e12b9ff47a29c3b0cfa4106788224bb6e8b0a4e90b798428c3a34c992670e0611782385f1aa82e88b7586981610b113cc4f2fa295aa32d3f44e1b894fd341aad36f4fddbe27bf1fbb785cb9fb429196eb37a2f894372528241aa7eb4b7bf46642d9212dc0ba426e5897b8b7b61d5f4ecf0789404bd3d46c559fba2e6ace32ace3a5255d9358b339293b22bae2bae2bae1ad5b2783cde0e4fa23182558c58d60b58b817aefe6c325a2f3c59c797d29b9194945c219cb16f484acaa3b276cfa8b125fab15ae5650ed26a1d69496954e69e34446c7d8f5ffffba535ba80c7cc1bf4635ed22e9091989467f9d5faf878758bddda0c822f1f1f43b2b48ec4a4ac17b04665024aef2973575ce93df99a3de679fdc74bf3bc6e4f1d3ff3d9cff51f9f398dd59865a599fb789995aef7388ed5b8dee334463b40e936cf6633d367a40135fd8c76c5d91fef07b23d3e3371d4efa1f5e4dacf8d2dd1bf31bbd6b18f24098b810096e609661cf57d1ce72841ded628287bae33efab8be1d66846cdd51e25e58d410d1c27e5cccff6a98183d4a43c75d75a70044dec1663876198eb62d4c7b5eaea88c4a414ddf7f2ea1fa8325e3027fd5e985ff33ecc613111689efbd6145be6336c2c9d17a8b4ea570c4339c91845330218000000a316003030140e0a85a22409f354dc0314000e7fa64c504c184a034910a5288ac120c6186008008410608c21c620e6e63a00d02f0f6628fe4f663dcb2cf2b3af3207de05498e9699d9778001f217d830512723901306cb869636d449e149918a201820ed51f456529aff2f2e9f5290f00dbce8b22352950d0786f903d637abb0fff842641e736cf9c0541f3338872af34e0eff60de850722d4407335f3b33cdb2c3bc778338c67c935eb776c5db453fb35d000016ce95456fdffd5d93cfc502cc194e54c3c99fe462027bb2deb6c7778a1a2828144e7e372dc3f9e89d95337101e8989e5f8e6528ef8772343058c6b631c4939edb9cd82f69e977c16860b601860fdf191bc19150a36e6b4b426b8134e0770d4a105ba131dc63560daf28803f90861c106da250a5eba2e71dbbad49c7045176598534010eff2bcbb7e2457df702f5290735373c666246780b6f847b9c22d1902daba78b0bea6bc1402fcafa03c5685da295fc53f958bc41ac7270f4c4d60a6f6e9b4beebba544a86beffb3212d9b9f4c6a3059f1373356c0a4f9f4cd59275e052eae2dc9efb3e76d8a5760797f62d14a3da3372d66a2406b4a7164b917017353b10122efb7aff10b9e8eae5cd6ee2e7961ba5dedb7bc0de788f3581d8defe947f45f453cfeeaf944a6b18e47f92a2ad001837c08db32e49ce746823214562a69a7f0b47f81388fdd242ec3a448ae6d92acea08f7618387d2568bbaa492a74c02eb2415e8561a311e696ba6bf6147481e8c299032e2531f5c3b5aadb86c2991c16c84f0340724c1dfbf5316ee5115341b5779d02b32126e380551b81ce828efb1d3c17f7fa723ea7bd00f7bf02faaea34d4f703026ee48f9be7ccf34bd8b7323a1363c32fe568341c484011bf76e3ea541c44218de3e015976bde6b5fdf43ca3065df4fbd4363c05dbf722fd706ae7555207a36c4a4719bd54e6b33ca7eb6b7df49b7340381fb77542b9a227787d3f02550b5f92df7af1c03104e024394d619844349b440466ea55649444c65a3251f4183153a3212c2b2f131094da15f565078b64dbe27325f840e2057d7809e7d6b6bad08ccd46c5345bc20acf29c701d59c518d84eaa3715136d9dbcd9346dab9ad850d40f04e176fcb0733acaa1d6ceadbbd2f8dea50e52c0e87a6248d233d7ed859cbd6527e0fa25fa0a90dee602e9315036e4590d0253506e33fafcf88c7a2c52be7f6c56d03159464453939c803663336784822c2b88c3ece3b063edbde959a2bc7e5d527288cbeb04e8b44c156681d07b86d708835e24440dd542a403e84becc903d377534d90988224a114b298919ac8660a14a7e9a47ecd4754193268bcb0185db0b4d7bb998973d5841fa1da9316876de27abeb10b4ebc8e9d5e5f582817bebca353a117d3f7f433ef3898ff47be9fbfc6791225a9484f2a0eab9f30b1e7368114a1bec66952054ae7b885ebad8865c4c50557687351ffd59c74f52e93416129ca9805a6746f1690d7ab6e75db42cc610a0660d7032426e0613e6cc1841cd82ba7ef8871d0131649bda1c5e663dbd3123ba9bbb679b3d192875f6d20136e80d4484f04918217ef409f93668b182693e7e068e35e0d5f9ca84fd10355b85182baa184db53465a53241716625bdf3aa5d5955a8627601cdcc7584d56535d4b7b3501e70db0c27977ce1784bab5b7bed15d5253ea77281642d8277940ae65c8f463a5b9e904a7930904fa08dc6015a304c04ad58b37ec9c972dd1f1be3ebf56d21f38b75a3fc5c2a90bf0a509750bd79a99922757362eb8dc1846e52a112520e30882411ed235874bce2b62e1983b39167073a3b7027f9194e0258ef4d8f97779eaa0c097a1c7de58228203031405a5c1c46ddb021469246244f61b7cc41dfb26731496f25b3803ec342d3f0a76ba8457f61cd7aae1ede0e10d61f071ca11c979c76397b7b644081afc3c2a4ffac03cb071a246728972eac0448b8c5b1ce28398461dafae565f67051cb39a73832f6534d3e20632de4a382cd13959bd7579beec91525bbf980fa2fe8ff20021602ce7c9ee03697a4043b6feab85431300c27d7f3b6122ff8ee83365dd25b08849c70a3eaaa350312286a96a1059e358e38346de5e8b3d12350ded24cd734a53b5a207275b0793efa1acfd86db90f9fc890c57aba3b03bcc8f5c019cc5f6bc584230376448292c4a1578735a7bf7dee671bfd1e6a123134823c14064f41c288ff1c360e40e37f54b09f4974ac0652b81635e07c8bf03d7b0a6af84cf07973085d3ba607509e5c6a9b4f3e329f54796efe99a3e3aa1532dfe72676918f4ad1cb688e2d0b51845db1b242137534104326726cebd6cbb9417d1060eab48f952a6dd64a03fe8ae68366a590cbfd810c062678413f97f7899788ef8235396f46a6e10ca01f7ef7f5d05256a7da26317b3dcb258d4b7651c58d6aca61c35d64f163ba9184d95759f57e398d93158683238bcf93a47bc03b08d485baef1688c2c1ecf65ff80a7b65c83bdd0cc83ce9ab8ff2bbc4aad31a7d5639e96165f13e5ec2b0d67d3465cd421b0495d0705dd8921402d0df71332122c71456e819b597409dab82048e684d97820b7299a5971525731726b751263935db05974c933e2828a2ab0b586ce17545df097abb3205dfd6f7408396a6b368a5ca130538465c97d784853686cedd0fdac5cce05a21a16ec0e65545a7a15ba637821fd415cd0fde1045e455a99587c08f3d0600d1ce919f803a243eab7ee18abb58356f4e6c2f76e3ccf8fb9f0442ee1d0ed3df7972fe2d57e6a0862b5bfbad58fe6f90a6a08c3097182a020e2e45ed1f3cd4b40db5bc0fe5264fa938985945db47a243f7cda9015f61e8684ed6cd4a7009dcf2d50583355406a9700790b2b0e8a6ed4ebe8f168570bfb182da75d732e2b7b95b40c21a603012e4595aed63b0821f79dbbe580c7e7f8b1410c8c2a88cb87e1e2f5d5d79eb730834a98892cb9337b4196123cafe97ace8946b06059833815e6029f964304c923f409b51889debe643db117d7e0d073627ad84ef712fe5e6999f54af81cf193371778730027c419117168acd3c691e0ca6f2b42bf651e8ade93a45485d9f378a4cb70eb7219387f9d9c18e2f4eba14b116e603174e3f50e6f19065a2d09aa86583639e3ef842f7c3e41d8500c35fe38ee6c5bad57dc9ad6ba01dee4b0298fcff38feecaff2432d6503e2c5462d1ac0c9d5e34b7ad5810160474034c4f90c163e68ebfea8731f07c9d682ba832250f8798cafd97733b5edd55e3285fed213f50030824ea5329409b9cfa6c2c070c6cad777bfe1f367c89b1855e32896d3a72f731e380bfb598148e9368a0ccf8b871198b3dbe60842d40b2a6d2a181ab8dd9f1faa76516a0eb0ebd06103319f387dff194dfd91743003241bb99f4706feae2826e5f6030b402b3f757c42f2be352566503cef6a0349d9ed96cbd27b02400c5c750e2f9ca8e4727018aff35136c46f07247ecb0ee432d370743d37ee83e37feee20ccd1103231dcf9c313ccc584736bb99bf34f476be212f218041276838459e39d2f87cdcada9d713791d30e83025d761fb882264ec9ca025821d680e6058679540ac983f705230d84a806dddf70d29a6e729c4b9c2dcb6a9cffaa05a8a5961ff85c47736417390f063ecf80721973261e3bc37dcbd5a172f63de00fc10996fac801518eceed60db19a9c9410c0d9a5b544d701d3480dca6bc4be3fc6dd02e866451d89f38eb5f81fd9a1ba3a3ee8d10c03c5c8b8451a0a6a990150cf5b437733549d1a92f3009bba491ac7b05374426b8310809fbbe3b149cb2167f80370f477c3ca4faaa0691ec79b05630d20ef4e0764a81454729a5592881d59b9f9bff01cb169a3203017f7a27ecc9eba90eb82efcd40a134dd521c33c089e76c3afdf057e410286d976df5d78aad852f07ac016c67ca12576bef27d90d7446b38fb424a8953df2fef9e9ac0c6d91f7622fbf6aedf7af15ef859f6eff430b1b8fb6733a0ea40775faae26c48dc9dfa0c89ee0135f99ee290b10043a23e22453ba0a980f9bad6a6995b3a2945ee110b9b1495843f2c5697c61f463e2788e071269c57a7019b31ef05e368e1dceed0ced29d9b561f1ff82043798f6a09c2a4b3f4d7dd94800ff257007bac758f10bd777697632ec439e20fbc6d89b5a7974472964f3f507dc6ac955e58ebdbc6e4bbf1802348fccb1161584fbf5870b38ba403aa5b3fd04e0d753da47d592bc0585c718b968c54b1955bea62ffea0532364677631106dfd7ec4a763069195830cb15a9c991970f37d9a3c9e5c182300500a44f39834512548d64132f40e6dd53840b25552bd7e8d584c6fe2d10b79dbb8935f2833d03f8bf04cac2429e2b8b7346dd5daccd0be49c07cc602fe1d928b2b83f4e44fb310df47d49cd2d6f5da5859cb3aa92812bfa8d3a20bc592a93b6d94b15ff6636026abc06b8184a80bd860efe8561fe79c0044aa92f4605d85ecb82043f5103f707be2b342597de812f54494d5978fff4ef08a00ca78c6f1dac0cd67a58411fa581049a84f78ecbfd24e8be91f92008d90fa0dde13d736cf2b20b14889401cd539b201303366c0145cdbba0d9fdcc936c970f683eaf96ea7acda96cfbf5c74b83c0b7d78420f52b882cf3076a74d653d2be95dbce127607569052c3e7f2ed168a5ed26d80137f5217197688566387fad3db31519ff325aee39e1377865f097edfa63d62e4ee67401abe0fbd05bae4e867434e3e9fae0d3e65c467401abe0fbd05bae4e867434e3e9fae0d3e65c467401abe0fbd05bae4e83d57f49a2e09e47806674424a613d9010ac4d4cabdc100f59428eed12dd8017de607c81373e13d77f1e31d9b390ac7f4ffdcaa5de600d65bb21a4d2d0dd772f9f0a27b1dfefffc9ace53437a82960d734d33385bd2fa6f905a8bc15064879ae49ec1ee127c04fb0e486bf9c13771129be16c24f5801cad86072f972a515ebade409e425b723929a2ed21223e2c37e031fbc319b79b8de88fb6c25fb5f5ff87c1ca18e5a35018d0bbdef2d928a14de10fd1dfef7e5e0d8fece61e6623264bcfcfd2c9591573b9aa931bdabfc9de3c6a5aa847b7a83de9a81d0b50015bf748bbbda368529882df5d67212b4e230cbc00d357a7a3ecb47c6ba2f30a74ea6031da2b10f68e65e8fdb18829a6282bcc18c39d292a0e3145694da2b004662ab84c5cf58accde0f6cfafce3ef3c67bf1dad7c233a324bf0cb1db4900b6fe4b72449c4e537021adb266f08b1f99b42b7313bbcce2a7c0a440d07aa14fbce95ce84c812161a3a66dba03a5b70790a233d5c7691794298eb24927d51d81d91871d7188ca1f429f64fde5ffd97e99e75f8ae98b769966ffbd89e05fdee1fa59da9d9fb12ec319cb784bc109102d72b6fee325aa48c58079227909055aec4f48e0f435590b427be9f4b0ca14ab114047e789ef900ab7adbe2c7163e9f7048de74e2f11cc95b9f7935c1d681da932702d78d2fab830b4152afe907fefd397330ebde9bc15406e9ba140b16ba3212e663b8154dfb49e73fd7ad98089973240ff37a7ce52d2fba9c0b5cbd4bb634bed5da3d44665300df1cfa0c30cbbb0b566df748bcd724655f8810f4ef0f15ef420f9d6b7c2e17b52c00c3acdd424d099374faa549116440bb2d699217d4c703ed4ef74a407b86a60ea9c9c50da93f68fb6dd9144d35fa40ef546ddda07aa4833215a2e062a9d501baf3831bcde74124c4363964caa29cac6f4ead083b2fa88cc9d0f1866f18fe6f134b059d78335684c8057b4251f6ed23cff0a7499c40dc707b165430e7d41a716f2d799095b36e015d5d9fe825cd5682a19a8c4445a13c1441286315c6760a87f8c1bfa590ce53a41c4fd8fcce51eeafbee8ef6fe32bbe4f0219091e7166d961cd4db631bacd8de6e2ff5c8374e2685bc5731db9b81adfa778239d68286db92c7cfa5bb8b3bde5443d9e64113d79a5a823a843f4fed45398c49c2819774497c0f456c7f4151141be7a5e9b6c8bb9c2d8dea9569373cd5b8af20012ec4babcadd72f7f2f4f29646ea2c728b58b792fd769d5f423bfb5afba62aede71a9d6fa20beed612da3e087124006b00638f1fd4b336b0aa87bc234e580b84cbd8d6d8fba5ff7632a933c38d49d6199650c9b0aa42b022fe10a54388bf561ee9b97e727e1aee0eaecb13481aab3394892a997b4d6b5d8ee3c062507522042bae6c18b931eaa330b823b1023d3364c48d054f279bbe9d933e4e705b21e110e005b68e07e610b7881148d6a76ba42d2ddfceaa681b55a80a6b7f70940b6ec0b25d062dcf142dd7a36c909fed63b684801e142a9af3555b7ce585af98cfafe1c77e4bede7db4d342a15e1739b57fc962164d1b1956010392d1e2a10456ae4e7e48f7ab1599dafce20a9ec01da48499a89e12792613e69dc2727993524a1bef2ab81f012fb3107643d51422c202610a1a1cb023730d56b31a37f8c46b6b6129519b45f7cff5c00616e477d0c377f81d55453773e9757635cb90ce52d80a76c39c9553138d7244387db211f55e868fc79da5d6f6fa80d09f561538b1397257216f71a5183621dbea5e35800b0082199a36d1b831f900ae78b61ccbfb32ffd1e6127a992187b2749a38de088f46886e3dfae6b25fc0397361fb16cb2a23df8f30a2c1b07183c4f2d805149de0b8813e41dd59e60b257c927fe5291b0a4d6c0dcbaf1edbcfa2a5e25fa02e9e36fc4f3a85a0b5a3dd73398854c424eb81f62354ebd15e58c381d499c9e533acd86005413568cfa39440e9327fcb797715e2571c2207f362b16c69cd556240e12a8a37a24e94752764fe693d98337c7567fe9c642197e4a37b231fe00fcc4eba8007ad5a3acf4f72634e5c13e6d9240afe1d725e1d2b9ed79f9fbe3170a77b637e0dc54887db3f2e595a30a1b4d7d661c0a89731a7469fc88bf1def88e7eee9761ade6d199233d4f41f609e6f67b96136a652c448f9dce358cbff35369745e6ce6578bffd92168f2ab91e735d2503cfc7b8e1ef3293e0f09d9d2e4c5588987d868031836d2d63e39e8f16a7248c5ac599c9528686a97cf19069f0da8586a9dd02f6e9374f486e4dddac473b3f3231cb1904c89288f366fd3d101108db469ac5b6f64b653079a7c5cfe9bc4b9e5b9fb4f577488048589313e7b94f0f073f452bc9cc93662cd2d7eeaba488d400bfdb09bc2e499779e2bfb2dc35b77ed272b82af7d8412d93aefaaf40d811a01a5ebde3ee68e3adc55c3fe997b9b2f19d87351005449ef769d2874463be90ca73444d45b61f71299742aa18fbd6be8f586554db3cd14668e0fbe2ed54e40635d59c0b99331bacb0aad34073b7eff0601c87b8daeb87bbbf457bfa432c6f4e5e8f0073196d05e89b760a8d46bc554cb547268e7948e5a00196e6588130f6b940093d5fd9c757afa824541e58057e306049da16956e811ee3cf72033d6a7629088571c77d8c629d29ad47a790a230f6106d08c081c76ea46eb692404a17623ddbf264e051056115015591eefae1795176f62afdffe6581c18886d12b014df7de7dbd1a7f88e1fdfb559a04213ce6869b724a3b313752aa012e91cccc02f4575118a4eec20c37ac2cc6752f874374b1c64bac3d0f6e6069f2d3b2a0ecbec6bf2a6da08cbd48f41a6874ba87ed35bdb2aa7c656b3155c8cf28f1265110a34042c3681d0a5ec5d918912f43e5a5a7e9c1a5a6b1956c7818b3fe59404d60038f498b6fdbf084b4681814a4b57b88c6114b9595699582324a12c4dbbc4ede92fbf28fde15cd54b646d68839f9ddd6aa689bb4e1182c335915175830be7f1bc5a1f5e5452d5360c496e75eed11873c54e740f55d479c5a3241dd74840d31f427945b7a2451d57086e70b7a701cc4382b332eeb1ef3b8a90e5149d310a52128e37c0439602a3511368fd84da029b779e455ae05a3343cc5a7b7fbfc2c5f3e4bb95bf13da8bc432306adfd12d56bd60c749c84f1796f472b5c6d106a119136b3f6742e0c90e7b1e1827c9367195b2bcaa83a1573d11dd4c0097d0de395a901f3892aa830589a8ea827f24cb094c5559afb57f3ea626f7f239c500b10d09a777522ee1ed1f7ccaf6930692abd3a349d50f819df1cc7958f406ae5fb3738ce0390cd763e1f79d4d251b0d851386becbf156508ac3da591b5a9a58c176a518694db4d3c5780f2b98afedb95a87565a37813a19523efb56510838f2c14d9ffb444c07a06211e5cfe7024199e2337a0a6cdc54c42d3a2a666646cb05a0745cd4747225bb60e87e6c6b773eed0591cd3ee82b09309a218f37f2834b6e119e2a55b561c880a251af4b759d7602b420a8662a8257c74adb2937022f1c69bd45ade89c480511389549cdb7d053e14e0afaa5576b5266f939cb607c6374e7fe839ae069cc3c669a8ae589d040c74cffac629f6c55467282e349107ee50678af8b3558e930248b591f9348ad7db9e56f059a4e0639920f80d90004e2860deb94ec34f09d3ba343dadd2f99c5861e654e147624ff9d6d844e444b6656dfb12f14ef52fa429224171b918c8ef2f6011775002b316ee4b9997f330355231ec4f73bed5b502c2743603b108be41f27000f874c79a3d784b819e8351c7fba711f6fbddc54aea1c4f53d063ceb6e21c4966e5cd86f125bc2273aae138f812b9d1f36dcd8b72382404e03c18fa0a400e00a9691a2a66e16a38e8ee063887afbcd4b22623124f3a8aedff1bfbc6527c50dc24f0042963d789e085a6c579107f646958f94e4c74ac76fa56a5969f7b415d157afa3dd653bc1d01f91f142c8157c666caef210f84adfa3dd9bda8cf807741aba9489bae6af0a91efe7c4911df6132b9284f863acc4bb22adfe1a433e6a685b2e6de274c25f97b031b5c15697bca983c24d9a913f6103b907f635b1a98d425c4e81f8cf10acc7814800eb17b408d44ad89e36d9ee144e5f000d62f1bce6dfcfb4ceff98b07cdf4c287f4d0d9cf08a34771c5f9b1d8dfca3804bbf58665370ce801dbf78abac39a19947a45ffbb6dd4ba30df162878d27212970c9281115211996b755f37581177bcec14d4735eeea98f55c3392b4cff31428d6732872717b365ad1b58d94a9fb9745768d10a435755090d5e14e82e08e3c72ce8b29be8b626a1b8b87aabe309f77eb23a76794bfec276ebc8176e6631ad018f1f2faca2712de2bc9ed099ee66ccc622f0f6f51a0919db2ca45aa1a390a78562a3d8d8904d37a45b22afcec0e66db00a95d934d7d2a562e438308892e8b45eafb1e2e6f9648291c3072f3b93d6f8cd2f13479f835057e36b4d9d11ca4273624528c69ae125a8e6630507b4ce2f2fb3d729eb23eeccf86ed201671c6b729424bf2e57b07b9df97cf6215a688ed4bda14424cf3c2048144aca11fb0e59d113e5887e9f271ac949cc6db545d7ba5726d6119ad5409f3db2c0ec4edadc68b6239a576afdeb8cc1a72cd40d971b74e4667e8c6a2b0072f9a90c1581f7f8e2e4b2894a2fa046d9fa83b01c932aa74469133912351be123e01a1f0494e4fad5a390a48c3fd3680e9f5e4f95ea7cd1669ed305020012bb9d18c22bd8a57aba0de504627a981452b1966962486ed70f9544214dd7c7a23c837f44aa3d9ed0f876b75a45bc04af9b803e3bf2e5ef7eb7dbdbacdb079461afcef21db2b2df3350959e04b8e7d8bc24f22797029581ee414cf6d94bb8a1b814fd162d2726bc519e91931b7fc61a2fd5b3226b88aa8f40e6888ee0b7d20736b156a4d44274e33e2df66f02025e35c8b6d109abb67ee256d2f0a5e2ca6304a1f236135a66fedb098c13a04b7b781bced541b00ce90ed63b709fc6639ce69e96181c5d9b0d592fa1d10ed14487b4763684802e9eac833ad59e3c3718afcb0fadb13b5afe657b355032c900e7d8cee78e62e1834d98d59ac63476d7afe1f8d4eeda2ffde00997aa45e0c0f2190be32840203913b6e44c9270a2d54fa00fb980dbc1e5658a53ca289e79b9c09d22b74ec16f5d3337220a867a5a0d01a14f068cb110abf3455b4bf62f464c3c15d1e183e161077ca7c8dcb27f80f209204582ebc22c948ea1a55c92e21fdff9dea713d3688dc42253ba8b06bb24d39e70cfaffda9b1a7a6efebb39f6d09a9fbefbfd01c787e751afb75566deaf26101daffa5061735f7fda381836484cf4853f511172d071ee874594bf113cac49474cbb76d20db4aa5a658a4fac38aaaa142ade4f6a2b0a03e5d6cd0400cb65e3af497761e4caf434c259c509115f4bf26ba7c7096b72af27f5bdec0021fd36a8c4ffaff9a3c74a35bba24c826fe9ad61b60402ef010787c82f8f19903508153e9c142a053601c859a491a3722e362dd9798263a1c4422dfe7186c4cbd1b3a63083ca0075f04bd6317a310f00957701bd1978607f627c6fd5d4beb7b1514956448a602a6e0f576209692753b0c06407613b7cf5df9447ea90665b091ed93741d0ee345662aea3762aa64bc07a64aafdccd96641cf50b2ebb23389dc1c801672ec7c3f6e292eee072750a2d968e40aa20c5bcb93e10d6857b0b17301bb1613d61576e67beabd5aee4258242045ecf4a9afd956b1b97e11f1e6485e0bf5e575f5d5b48884566f7b5236a649e0ecbd5a433c3576d8583e1129f22f6eecd77b2e3c4db57eb59608ddb5e4a507bffdf214a566e8986667a59db08596c4d036d95ed29542c642442e231a7a0a709f557f760e48116d436c6206e396e4df8848e3005faed501f3d0f262d3bcc9802bf03fef9eafc4d6e0352542d473bc87990d21403466978ffd29e800e8479e2886790df18f5d37f60b3c36b747b7312b7c44247ca05968e155c400211662cf3fc7c19dc27f9e15fdd65d19a991c319b4ae4ed7e918c0c6a100c328cadb2627a7944318bf732c4fd410fbd93d8a084d2066148b5a22cd466d0f0815412ac986bc89feebb14c80bb7aa06bc33c82a76e1a76ce00f3bc1b213c14b86ef367f0a92940e0aa61ee18615316faa81205278291bb828dd2933a0681d2fcfee6bad02e612013620cc6b289d7977f387e70ee5834e11de3029dfa50d4df6f0f185e70e69740f2477e5a0ee247ab7164e04e0d59651edd9a68d6e6c9def6e94285dd651d120feaeec55925f93bf0137f77bdd126efc9da4a21415497f87a317a202f7f7f14ba642ba1c0900cffefe7f351087d4d4cd0fe4536620f48a55bb535a7411873cf4d6cf40e24a81a616448127bb69d0d46748c6274420a89ed01013281152e09b8997ec2dacef645edaa6ae8ca360dc7fbf1002e60fc6b944b6d0e24df45ffb975250390ab53a412928a714f40601b53ccf4ba4beeecbbaca0d31f39dd8dbe5fc4d1f078644e3f9d6a7a612868ee1460746b4f69192a18abb1f7403efb1fc9db91d373f2f516335612e91a05bc563f51b8afd11c88b6d22fc668e62bd107abfb1144761b2348cae47c0042803bba41538d1907db12166888414c214a03d9f00679fe527ad525fbc0b7710d18ab696afc4d6ef95bba2af4a57f1f563e5aed0d6b2556cfd5e7157346b69155f7dae9c15cd5a5a89ad5f2b7745bb2aade2d7cfca5d29ba64591efa1bcabf3de860641f7a9727a973f674048a1b8abcb2863883358e096e5a3e602bbde2d2bdb8018c0eaab4720bb6908d7cff3835c98951863d3585d6f88da1447c0a8926a5cd559720a8d4b169755d8722f0d7e5762a21ef3b1d19508a6da712f1b5f38652346f8f730379f1d1406efd209cc55ea1d3e406ecd22beb1214122b0e564d04127df2722aaab0fadb96fc2313a5ed5189fc3eced08c787b5c8d11cc5b193210b615a0872362f17175622347c2e64806c6b20abaedb0df33b11bb71dcac47f28051913ca378612f929709453da5c71095eac0cdfc195566f07078a229babae5c68d56563d5dda4c572485ddba984e48f48a4650f2bb12cfa2d0d64059591981c3a1c7b2652abee88236fdad16d11d62afd1c7a4af1898df4eaba341c81655db7530979df4191f1536a3b9510dfe980a0787365dd1c618b4d89b60a89a4392b1ae1909c0457ee2da23beb94eace459aa024ee5745acecd1485ee23e6c3e6a91a2c9602a979a1b502d3fe369cc2c8dc8a0368a9a1f947de0ccd9bae7b73ce6bc7f34dd943c46d45fa6786ff485c6ea76e90b436ce4e0dcb620b28c8ed6de48fa7421a4b4296c54284b9f9a9c537827211a334ff7503ce126f236405ea0cec6d5f1d333504e656cee795a7a6b7c521834c2badf2af2ec144d7b86c81aa9ea262455d7cbadeab1195618725048cb61b03a9329866eac87a40c557918937326fa353ae4882cb5ad7a2eb81f83d7d992c0301fa97baab9c008b54e8abcdb539e16525d864f0960f133d4cba702f0ff0cd00981105e93ec297d80ed17125fd55f9b7fb16dc99a2515e8d0b47349896f103d238ae7a6e5fd1ec7a3dc43239afc0dd3347c5ca643aad40c5d07e46fa6722cc172a127d2ea60afeb235d7982b9a94509db7899b9a96ce9d66dfa0209b23f892945f598776d116ce2af837851cc595ce1f70bdba864289c44d6d3838baa063c874d5e43b64c77e59cf4b55205713827825b5846fb8cb75e803d5eae7da2f882bed0831180fe0d8380c01dc0df8819d665338ede81a086a0a8f94241682560ce5dc4a0ae044fe037ff188688d182a9b725091828ff9b1fa7993d8dc2551080a1492ccbf434cffe0ca1986012ebd2df789a02d0b2d8ec912171beff3fd73290697f020b2b6e7229d52fbd473939d3170d1012edf1d9ef16e92c6826b4362867c1355d4e94749055673302ac4fc53e8fa368bc5f42e24cf503f6c6734bb0054678f3334fbb4ad60672328601f22689550675f06f512df89aa1d18537e014886fd4f1a5aed69ec39d3010f39475875f8d2c63129928fb272befe097e71fc33738c775fba03fc096cc1c3a8021ddb1e3cb2d5e982b433fb03b99d8786f5b6a0ac3015999250cadfa87c3efdd16b4a55b945faffe7a98af6663c3e50052c4670e514e3ed404e77a333d9c6027d82436b854b113eca247d6e313c1402dbc54820329b881d88b9b32880f68810a6247be716b9ffdee1b9516bb0cf4b6b85f81d80e6898f6e4a61f9ee0db6810a9d8bad70065b699b07bf7600fadb4ddd2dec7721634f8015033cc1dae7c8683a72dd8d331d9debe06a2043efdf6372e272b6bd730bd37c8285a17b11be044affdf5904fd3bb3b8dc358a05bf53bbb3674f28a67c503d5e1c352a3a1a8d210708ecb4e1f3a982687bb92adff297c5092306b2187deb2381a6f5d47f061a91127e12473e3b415da5b5a0a1065cd332bd9904d60ce4e13778b1d096cd1747ee0abd474136e9bc967df0cbdb7c513f1f6c6123111a13eb79071ed03fd960be57b8a403e8eb11a8261cefd89b240663907364d866a1082cf08c7ab5f707f6d82a0fdcad678a7ce7ef174987d50cb80158c2ba2f06d2ddd68c040ce935ef855d33b661269949cc2ea799e47265eb389953d1ebe2e692075a57ecd26f13230d165419f077b3a88cf442494122c9929d1ed4b2aeb42846865977d7b13ef4cc917429f95155b6135e0692afee83000804c6e81d75881e52d9c0c482f165ef7b898373306f4fd4f6608ffc84c148592540065d4d6e3d5edc6a7ca2da8690db0f2921e827713b4ed4ad3e178d0b76db942d1474f366ef04c91b4cf8be26ff565dd66a18abbe31b9582a7c69466dbac961aada20979b3183139e7e43329219eb3575fde2f87d87148dcf188053315188556808f62f286795f0e0174dfb2c214282483111874a90368210fd62e16aad17db3ee0333fc420659e8afec3c0d10a45c212f424a5e47408892b7bf1c58d1831427276a0c9ea3dab34ec1542938c7a2badd253910b2218038ac46a00a23d97004e2a14d91c72af1c9671a2f39e31bb08f6465af25253d968522a5c645a4d121e120b1c057eab4e9dfd0e805d77b3aec96912526bc4677687e516522d353a56a62b768c650f6105b4925de0cfaff9143f17b2e4afb767147b8ba3a45c8469c23af2060bf212dba1a011be12f3eb161ad4180fb85686f55964284ea52a2ff03fb40c81953cf434ac082764f16d2570e3ed71aefcd423f7edc4d76c4615005b6e8f62fa9290cb054624bf58e0206a83b60231e6807e39eb65809f9f0a2e965587f8a61d1cb4043e7ce9458873a02635457daad1ef2cb99cb0c5935492fe90e25cafcd8b60a3116f0d5dae8ee56a02a9b76a9da32c702a60b78ba33809a2b56fad85b90b5966db8b17e7d86c7c3878b8ef450052aaa4c94c144074556a347b0d93c7f59e36b802c4976b04087a75759b55393a92c080c06be5e7ead132b56efa8385ab76a97e818d15275a8fa713a847b152bfb78a9aa149559e051dd417409e8f04c708c1d682b315aef29dfb38fb37ebe48653bf42dd0e55c708b6f415f8e9b43e74b7862fc7f03accd0c499c9e90d60ca24b1a8ded878157ea9d416e0abafd3c31568da53f979ced027e97d4be281958bb2acf534c4e95741b4330e93e86c2f272adb1d46ec9eb4eb2b064cc67cff0aecfab24ac7c9330fcc8abc26156340fd22d31cc8e34d4d68fa5ed306752af2a6c47c4df21e0fd370ae202336f331d9b3da7773699e68ab9bb28fb5d652ea603307625147875eeace403d1a4178b8971e7989a6e375d565eb0b27dfe9125f004e149955966fd4406cc2c50931564120cc8ec20a850d78ce8ffb8bde1d520d17820018e8d788fed8ebe72ac857a489f5fc022564736ceecfb5f9b0a47f2d9fca4c0101ac3bdfeccb3912dd2e3d9f0d4ec4003181029fd92892fc24c0961a8227c19c33ece671533f74e7d805337801b1078604535833f2bd7dc214e9d112a8544c644a786482365d1faee01a0d870357a4aaa92b757c2c2850358d3f34365eea5185de32b4c4fa8f35c7aede0a8e2828b51fd1085e21d8266569cccdd030ac50fe51240a7ab04e0aa4231fa1c0ea6a69dc4de1ac7b654e829117d250074395e0245fc5000f3f6ac2a02610ad9e21cfbde0cbd7aaa0725316cebcd9ee380123bb7e8d3a2bc6606c8fd03133f9af47cbe5b4af5fc1bdf7cfb4f41b9fe1f56fac7882d75dead1d1d60f7d65943f27bcb54fe22514b2654400e45a5009fd43fbcfc9c18be576e485e9fe9878ad6ab0c84147c3f919e2150f56fa10439fe736a48b0129f7a23e56c0eb70434b10e2980998fcf4e921a3f702482af9b3189efb8d740554290df97f12b444ffb7ee3533149197e8b741b82011fa6f73de4a15613de757890003e58d16dab096d4ae19e1d9535ba9bab4a94c6fd42d3a1d840e6c69cccf6d342c10c90ba2bba71566b91f4fcdc1f9c687d3ee922d11f0449ed25027206b215d0d4c8dbc32d255bf93148d3cb6f05da190d22df8cacb3dc1a0473bf33b968bf46f507ba71e76be282f15078159db617d11126b0f002bb268fb617f6fd18a535b5925c1a82b0da5818bf025aa2592ea2af10e29afcde00df0f82eff30566e916469772a27572231571d4574b330434fa1c01dfaa5d737b8719ed9693a5c03196e1f24219982664139bc8898961b80d4e8690a1f9ac52e24a62c9e1b4b096f65c3483dcdb5d9aeac09f1cfb52aea76bdfca0d491dd80e84f37bfb7dfb0464e6cec380b028f50379fd7300df4fa3786a96d564b39659b9b1955bd14eb785716196cf05c6dc93ed5f7712a73a2d14f8fc19a1e28ac475cf9829c3b4bae78e980b71f6d9e2167b1f2fbaa8cb7a507551730298c34caa1850cd9607c45055922ed0354663efd8be50aaa3989d49fbc90b93a31d78466b3d1cc18bfac9a771e9cc9d529df4348f875e86ece6cb21ae772e1d15f62d52316fa7f49ad89817401939582c771a461d888297ed76f78e33eeec23d03e049760023bf747a2010d9fb1a295c4328019093c478662446bafed8895449215e39824a570e11119c02d4bc1cdcc9de08c4951f27392453e0709a52e2e424bfa0b452626f9114830a176652a4ad445d6a776d0629113135050c34a89c35fa0f3d858daa9fbae007ddaa558217f262a633eed0298dae1b054f8f76e162f8fd7f84d98256c9f272052189475e1137253bef54105e5b268492d61fb2abfac306c870df004ef9e40e5b6c8f10716e1be7f0285a399c0c24f3684b44617933afb6615bf7f55ba30c2568d18309c2464b66a372b19053e0577eb502d83c15451bc7e2e5ac4825b7943eabfb5af27b428a35a8ced9414b65e53c10b6d6621949951bce2692323950811262d0632e4ad82391d92eb0da73062efb7a2e092790dc7a3bd2c07174554a279770a1ab819e81401069d60142d2d2ca6ec3623d92d354781e59636bbb0cfd39b5443dc51428b0136faa94530200f62683788f170d16ae765735a1af3373dddeee6e3f42f91528040ac8c7dcd3ffd06147a16d6bf877f01d50066ae04bc11a0251982b49aa31533bed7821f8ac87f0794c0fcb792d4ec086c21e9bd4cf69365f6c5c5acb825d12f3db7c7ef5ef22ff5c448642e8ed6e3faf2a51eacc5c7f788e1750659ac83ae9bc1605b7d3024800286d6d88f66950b0cf6eb9f9de8c63060cf804065fd4b0c76c1c59a7dd16cea365525244148a34688341c42f795ce19fa39ef8488d946caf8209a75b01a86277cd82c0b2b1c8d8bfb821a0622a68b892a16074f0ce0f0d80bb8b0c0cc00673e18bdd807e42767c3cb768e34ba5d283c0b1c53f46299d31af341d3e6b68258dd803e30c5fc24b7fafd0b706fe5c556e48a59dcc7e21711b37fcec6999e1b500a4e9f9b1b7e8bfa6c6cbe2d1a1b36c2525eb672af9f20e1aca8a7021649a4c6e78b4b859123021c570a921a4a9698d21d364ba2eb1b74e298c4458added19a2b1414e1d68d7d8c202d419e5367c25c736e038a9848bac0c94110e6b5cdac3430a5d6b3db1c8d917dba6897c233fcfba7e7bce0059c6239caf5bd34f3b0fa5cab70497d27ee137bfcf44c2799c7507867621b31abd02d4e45529d1e5dcfb3854569c22d4bbe0b678380608c5224b19b55f2a23db995a763886ee2a8abc4444f79401ede8a3dd3fc9fba246de4bd13f01499dbab03e568e3fbfd3d7ab55bb1458a7b9df77a1bccacbf27617d1d3c83531f0c2e9e50438dfc61e5352abecadfb111549c2e46778baf3f38621226ba56a12192cc72aa52a187c1f07c89c4192a5b778e33ac8729632d93350490e30179bf78eb12e8c75e6fac119dfddf827c86f00a4bd1c70fdd3d118929d07b192f10395240400e6d19381fe87a67b59a7143c768669f376fbf7b136e11db8861e904690f009cd8a2bcab93ef3479b0246a5f8b3ca5eebd079d962b29527965c66df3d6e085b69b55f3c25a56ebcbaf7fc97892719be30ef30caf0c4fe7c4dba4a0182c76175329ec66fc0b186e24deb63adae5f3c914c8dc032bab5cff962cc41024f26a7a58bc6202fe0fff9f88c21d576660c53499531744bd522e3ab84f95973abe4e392209f344a660397cc8817ed76bdc79c277374560a5c9c88a87143a3414e66a332d9986b17ad0828e62f6717288ef88e036ef075061e147be73e829ccf4abe3120e4089a6ea46dc15fee2d291e463bb3e035ade4a5057256e6bfc274595da425b3b1946b228f5bbac30fd3019cda9411d5086c967c24331300d7f3beddbb5527433540c2b83d7f834a85d7840362e61641687b06ecc7ffeef6216e7c18c92bf36b347463951265963f00657a8ffdc688306dfca6784699df62d5581dc9cc461027b20d0a4d3e1dc8b8a5bfc5b20351fd2c066a8f4785ace1a6e57a76c1e26bbda1fd9d2a19ab0f313f9027356c942e48b90eb1bdfdadc58b6bfdeaad6bb76bd72ef89c2a0750105a97ae7b358a117a3a397934947519a296b272e271d24a7962fcaf06f35cf8939655c6376a6dce9ed4a7399348b4dc669fdb21a499aeb8550e898322d0729339f831f325944c60945d4efc78764f74837c4ee21a43787cac3922a8b3f0018c2d952dc3c30dbb7499c6cdd1667d5c398798ea55bcd339e20c35ab615791009b15ea92966547c4a5cb1ea2967b097a8af72c2896d8bccb4376f9420fbeb16d854a48b4647a19908f812d5a33ae8499d35c1a1628c06f5130675bfdada9f46dc28491ee9fcf1db17056ce9a1742fda3ab481a038bd4c8242ffc1f7fe05ffe512eb16c0382a997485a8372f5faeed5e2e0ab3501f93d309d1c698105706af0acc9ec8e0a053964fbb62857860f2d7e7c2efd074b60e812baa4662287438a1fe78ff70f65ad3fb4a7cd4bce398e661354946f9379cd0a3d8ae0b88aa3ecd2137d57dd2007474334813bdfb6fe6ab7fb33e029790dff61c8bd6ba338ad0240084fc0b7e5f28c8278f02da342ac7daeab0b7f5e2a17052def621378d635d0647d8a84d6634c68ea7c25435a6067ece4c1c3d84a90e43a5fbd85bcec8a9a4d633d7d9d0ad1bbf2d0f6095051ecc6d28b3a333711ca9121b491986743e693196547abd14dfca34588776f21f198f63f0d1c6c23be0f2bc4ae733dac024c330713cfa39e0855192f00919d0129a95a766485258bfe1e9f276adf26ca9b359ac62d2b328ed60fb34cc6b92450e5d5a0fab559c131f081d6c8cd8315c9a75797e06edeee4c9e0a46e07444401151bf4ecd13e6da91c4553ec2265f2a917b69ffef2f1e641fbfbf018f6a1b8583300359c5e9e90755d3ebff63ce37289cc11738cf26249328887186eba367416141fbb4f11308b849b51e630710328f526d363f6183c20a2f4a67abbe170e343b08961cd9ad8f32be54942a3b0aaaf44bdd4ae5b0b179706f4d3242112436fd7022ba8a50997ccb191aa2a87b09f9ec01e341084a3c50ac81b1a1a583508b5ed344326622a6ec07be86d97b0c75e49788efc6b163cd6c851d9de03e2544401ef05a29416e75649c018b5074758ece25bf659d86110f72692f989763bee194b7f456cbdaf00652e4c089b02c0215b205507ef9c9771a6a5db52cbec5734c60fc4f957496297d663afc4941def1293cb36f29c517cf3be6795d3cf18d15f4676190aca741ca97972c0f22c24a44190bf11ca06bba843aaa9222ea9ee235b696dd28f380f07a0ef945502f9d898c21cc25689b8d6b524acd5e5ab1d4abd05941a3a6ffd217279a1ce48a6581d684924826a3b5d82696fc59b10c37c7d96376e7e37b6dd09db9472c086ea53bcc63681bb7beb931c37f350773a22ce4b6d68c80177ce51f8449aa88e69cef2d5e0bf83a1703ea6b617fcedb70018370a0833029779d0f33ca0221ec69b43a53139ffb865c0e5d6cff2783247446616274ee44989e4cc4be241631efd54aae245feeaec2213cb0f489e6724b8149db159a0918820dec1233149b7f5499b78eb1aeca4bdf1d971f798ba50445add82123267a85a1d6d2923fde7f6cb15e077c42fe2881de0ad6922a78412aeaf04e9e464e4a185e1ada36cabbfe391eee12d4969cca96284500a6c9a9cd7f2e45e6f20439a6a4acf7e97f240b5a686547cb80066e8e5997c5d586069e56a187356430706f0770c0d870a2eb25944351904ad6e2918022199d8243e3c89cdc168ce433d91814ca9c319efbaca316365d6a06dc250d6f9f49103ed158491243a4d0a60d8063c46265a14c061bd70051c97ac6373812b08f7f924797be2b72e1530d1c8e5621d1645489e06cbff39c42abec17181ee3f329124cfa9265887c99e44f06a119be82c9673b56f8a8208fba88de8a0876cc673e04dd825cab732c1f3ab9fd9e8d5a9192c7e28f6b99ecca73af7c9829f2b50b20a4325253f0463e415b7e3ec8c49f7368e308f46869ca416ca3541af0b506b76d64ea8fe0bd329b23838bfb44a66404726d4ac2666da55f2c09c3c8a1680577e80a2ca7fe2fea21c960adae0a4ac02413e4bbef228c3d6e6e69bd673f2979305bc0c554932e224758870671448811def58d9c57679043ae142fd859b824f96de33ffacee2a8f17931455a0b7ff98e50e8fc8e2e124d427460a60a877e441cbc837cff803fc2e5ead135a34af7c6063a16f356b35407ca40e1e4acdf2b0050ea3cb1b7a144c814c72e81b86255b2762e031aa60d5ad39af9aeed75869476735a999e9ad0ddd87cc342f783cee2ab638a54c1fc2d575b4f5fa1811eed27d71426bbb592a5a986c384ea591e6b2f294890081b38890f4e34ffadd19eb69b313f43d8a615860963d8852a21162d10b99fdca8c895eb510608c4b7e7673866e9a5960bc9620471f0708b5c328f2da64b0631322c6d14eec3584bd3162cc3309fd4c1de9964d53b64ab6b7d1e16418e438348466f62845b75c687662fb18ff5cb0d57b0fa7dee88e14c62f629315159a393c0810c7f2867cd25de292e34879818bb1db0538491579f658e887d6598ee6d2d31cf7d78d2707bb052036f1eb6c5a34f56c0b7a263723a5438abe766601fad94a2519e3ebd84c0b4e84df4cab5402edfcf6dc92bde6d123b18da1117622bbc3f4d8edd586709bb26146b740569944591c6b67b14d92712aaca06594faa0f17ee2bd5ba41e75bc062771cdfb85f5d068a9d9cb519c2320d35fe6ff5d392c07d64adbf5cccf499a5d1de7df9df42c8e39efc19d0389b94f4b0c74a87e81adcd4231f295639c518f9b9a08793bbd7634b5c0416fc027cc612e7d96bead6f2700bbde923eb5d4326b2fcfa807512faa44012646872377c16e977fe4c32516a11ec7ac66a77659993a43a871d7a6125c7cc29e4a650872903f0e703afb0f10c04b05a9cf60765eb4a6c0cb6876247c13c9ccd10b10a18d68f16c0584b94568c687cc0cd4ee6c92e7cc661d0e2fcd32f6d6d0f39086023da07ad58baabfd465143549e2f8f0c1a998410182cd21db5c63a77dd34cb9bc2f43c8b63d11f642377af89f2e662d76772ce121b112b8244285feb47d931c845d1ebc5cb6134dfc17e8bf38574c4436364508eb1ca9dcf81e62328ea0c11c24c97f0210e0086fa32f12b8fcab7fd11d44e890bfa8dbae9cbca7f1aec51aae008b2344ebe861ab0ec222388975dd5832be4e6ed03544f1ed43245789777d595dc3015044a09587c57d3425201a0990c0807e13828e350a1b27a22aa452e05eaa1b8d0e4aefb52b8c8a169896666ab22ccc96b967738b18d6557644ab1cf0c5519056f87b8dc7fc009b0e3949b41606fab20fc3b4e67844a7d6b35c782d6c515dafd12967a9dce80a8409c3eecd55036079a4d1795cb414a737cd8be5f4baa7700b7d405e5c488bc133c50326c66478ee288ef1b7d31779684d7861cfbe625dbe690ae06428627cf907209b35abe88e09b556f9dcfb1dbcc5b3439420aade1d0c0ddbb4e60795815a647486464af4a2356690e50406c1aad249f7120e785a631637759fe115f9db290079398d73e40eefd33a0b9d2e169b731516a19a65d35e15f31b4f6761c366ea0f077c2997980beeabab4f9dfc5d0421b79e1777340460990473b9f4084923008ff4932dabfe1838eafb806b6d5b01ce51bd57fa60fb374537e83fa1f597f05c118c67f946454d8d6fab9084e12f93d93900b191f8b34b0c38b34ac9a2b4e417726da23a2f1346fb192b9309a293ef30dd2c278fb85fb1ac5d1251fec9e5eb84fe14a404930d0ea6b473bf3ffb5af1e3ddd32a0230e90fc245c30130b9303d2b96b7c4663473d88073aa8b3dcd5b21a96115042779250274ce4f9f9cc08dddbfda35326130d16bfaa88dfb9aab99cd4f8673ad69ca7cf43eddc9978d06ef16307ef1c2f61334a80c7e9877a33401daac6b89479a0a99d6444de12a9fcb58fde7c702de0682c796a57731a26ecae483b4d890bbc8850bca88aea65bcaa20ef6cb93f8c05f28549022153c488cac41ef27ce575ad1048b543d14b086ffcc2ec798168b662c9e99c917d99128da979e88697f915550d5e142b61a651b1bee501ce9327a7fb0231dc1663fd11554f4521e3f05c2efcdc3d10462e94ec1d688be57f2719e689efad090f4f00a2189c40a6d4bc8296d1b50f1d6815a7e90f1d183fc119e054a8aa82e0f18d8cb30b7efd2f9b2f2d4de2147ae004f9834837066712e4feb4deaf485fb1390b7cb3b2fa703049c391a2b4b4b9165e9d687c211edc94f1899a498c4a9d9a63e86c808bbb99fbc5a66c08ea83945434b464f482a2044d45533b20ae4a3904c82544cb9f226a16ed72c78c7df5d7b1cc8214a840bac78218768fbe0a89520357880b0208d0d9072439960c52bb06d26c7e6b8380e8f28faf38d5ea7794f83858f81c878680096b1f074c3195d9b824122f89fa981b9d826a35db6d01cd22bb29600d51ef231b4c87f43c2d683ac059cc50918a28350310cf65c891310d6f67586540104aacd341c0ed299b52ea12dced2ba63f552b914e9c1878d0d348af31d5d2d38869ee621c327ba93284bf1b1ca2bd62f614f4688576144aa53f3f756de315f563676d80eb36d22b75d233da7cf556fb58c01adeddfa0bbb263be29b4d8a295e4919af0f9567191048cb57920e06011df526bf12a64e8154a4565dee2fe8cf23db4a694972697e9da1c3b5ebfbad712e5bba2e3ca54ccc96ccdc77bd9d57ffaf8d5bfc7eca9579e8ef92f8f7d88282f3ebf30c9c0dca655643589c015369ac5cbcb25a14b19666349dda0e5bf484a777cd48d8901701056d3ae90662914073a26471d0139790d3cc6a86dc59069a92139ad874832bde631b6af2d167060cffe11f4372c27364445527ce3fa04eaecb83007681e56935ca8d9d3f6b8fb9cb206524f187849747ec117e6740937f80f91b6659b0aec951259a28373af2e4c1b76616204d9b845c97496621266071212f7fd4a9b44ccf1cca7938f98e4478289cfc8f66e626aa2b7bdbb54fa94cbdc551938419e28272600a26ef42729623c87c5363294daeff93339e7a3f15cea2e5f11aa4b904de41457812501038e36e3a00a07167ad8106a071e75a8196c65deecb6ccc3257c3b8cbdd65b79af50731b5c145c58416cb91327acd49c96a7814f8d9db8de8c644fe6cff7b3b8afef4e093f6b7dd6eb4c9de5b4ab9035e113812a6131fe857bb7ef388dc0bce9ceb93e39dfee94eb7d3ed743be14e3d77ba668f684e2802fdd3d30254888b833ad1faeff6b1eb290d3a52c8c9716745121e2fd603b7e6c60ab2869e125e0e75ee4ce1e1e24c09592f067bf3a28d881917093e6f56e365e7012960011904d6ce41cec46a8f0591e465e79d79582c6aec393d5305188da746859e3da256ad79b21ca42c08d574329db0630fa84e9cc0aee984dd359d54ddba476037cde1f69d2c88fcb9b7477c8e05d1b6400ac8fde90b30775bf7d8b7ee74de9ab1a9f64e16c429547726de657da2694eddf5504f51e10ea360048a533318d6b4661990aa322d65191064595695c99abc0781e9a71436851ba8f5d6be53ad3fe8533b6fa7aea2a708d6cff936bb3ceaf879e8e938b79e5e9442dd50e3dcad4e7f32c869f1b9ae2c367306304560a2b6602061566f05628fa69b017d79d479ed9abadb3cebb5fa5cd9e3e9ff5b73503a613552710eadad8c936855fa025c77d1aaf4c46825ae398f562189e05ab4416185c2a222ad2e960aeb118fd357a299eaae4c73842bd413d50286df6e924e1fd54ada6cf3a6a9e679172efc567afce7929a3f75d24ae4a32aad50cb0b6b54dad2eab45487a617a6d5e5716258cd2c95a5f679d4e6319b3535cf6b1af13ac3ea04a5694d7aa2ba439c569d7ba45de73cdfb9475ac8c1ab13561973510f4fd7b9bc2ae0ab73ded3badbbd59d5be3a776239c8bdc9029dce874bec0596b802fba8c5d50da3612d6a726e58935eb49ecb4148dcf19489856950f0d42cb573ce7bf83944d3b0a86cb39b2aa6c1f3526e71e53057d027845b08660766312a69080cae1a0d8f679e61b4373d9fe5b4375da3e5b3b565f144d35c9a5375aa6ec73377bc9535dd5cd91ed0dad3ea71bde9405b5a6f7a6bba3b7bbdd9f566ceca43d3dfe0defac0bd652aa4db9818d998d8991918c6bac239b0f015d67ad3d1acc7c9bca6d9d6dedc4288f210651671ce5a9f278ab3d6e789a2e989a6692ea7aaba9caad3ed762c088cd71d6f5d59b6d70372b78a57dc629f6fc53fd374b76a4e308786569308bb4179885d21ecee1304c66d1e9ad8f1670a4f3d78542d90c703c2599f680a946341a4e7ab6bab638f27e69979b76341e45e359d4c732db2c4d5a278050a0d81b4d94d7607a69576bde94b4d5ad33f68734551b45928a4e65254886d85565d9587da4a6b9d85a9934044aab590edb1479ebb851ccd189b67cf349db2a3d84f3f75f11c7ad15c16a372ce49f94d09465513d5eb118805b1f4aae9d4b6c75f50109ad143948976143a9b3061682825222242894e9d3191b9f6b6083ef7b736659cf367d76d107b14ca39e70d50144dd19ac209194f30cf9ce7170499ae9010d0501e1ac2262ad4b6137ca6bb5b20500381198827b0470f6a1e169dbda3ec43434444c3a66311447ea1a2d6c8e8e828ca584442d219eb88888040e3d1431e9a5ec482c01f659a46461b1c3bc843d38f5810f983410aec71e8a3cdc2b4259af2cbcbc4c249b7b710661d3425991939c4d166e1c67dde1456608fc03c743597a2a76b77f78ccd1ed09bf35d4e28020b5ea051903d2e2169338a4d4c34dd748b8c888e82199bee5e4d779b6d47ec00cef628040207d902e0230a2e1285d5741d45d19ac2b642057737bbd875cdb4425b81e501adb147d39d0581dd56686d9376b459a8959494b2921256327dbddd825785162c242529295db8609a4b4ba98524ac942404c4c26190360b93580e942eb047736969099f6793c69031e025f6083414ee10eb635e7e37e7ac3dffe996007f0662628f39da2cdc2b860c4decd1893db64f3807d41e872c88fcbefe897637e9f33776c163e15190890212135305676262728d98988a9898746a2e45999a46782c7c49c825c07f9a4e3ca004e857f3d0ccf2994d40eeb1b1ca04f2359b8023adc20df9279b00a2c742f5b1708f809ee799d1f33c518da6e7899ee7b077b22086804cc081ee85a0ee80de8b1e4b80f3fc0ef1da07e034c200ce87c06be7edb22ef7f608de336fd519c5a69a4b575dcf74fc3956658f2ac61c985e02ec59e717fc693a611f52753e9bf04cad31d6da4d1745ae6606a7e90404638d3106a14108fd888cf1162ffd83e1fc79cc260008bb8ec3f3994d40fb5878f401d07bfaee3766c1ab9a4ed82f3c0f88c29cb83f7fb209307a2c544d27ddaba6d3f3726c02d0df23bc8ad901e85e553111bf6a3a9d2ff893031e900938c83d760ef263a1da53d95e2fedf572bd3597cba1bd1cefcced74cee57239accbe572b95ecf6452df14ee1184f2d0fc17e01139e73b3c6cfacc3cd4a7d01c71f6c13678f8cd93172604c6d19b61569652a6177bf42d2ea01c596d320f3f64aade0afafc42b8e54258d37d90876a0766312a28692884271c5156b8bad65a6bcda2beb225c0ad109887a7b9cb4d104bb3a7bd2ce4f3f97cbd2bedce66d92ca3e5b42015f8d3193f685785db58cc09f7f027ec097dc25618e46e0f592845955e26101858bb3118d81899188516e8c3a2072385e09191fb109b197fe7a488b48b6bcbe79aad0728edc65d5dca2fafa131aa7814f53b27d7e62c3d6865e5e8b9a6cfb89c6367b95caa69b3d4c8e5524abb71d6169756f0c8c88751c5e091511136dbd82c83adcd69e363c4ba4afe5cb31715a5dd3899c4ca7175e4c3e25153539415aec254e6af18d66e8cc4485c85a98e5aa0370df3501f6923ddb640a03b5cb1cf0a724d53da6dba916005228800027d689e1e040aad6ad26f6ca6f672b2e9cd2d84a99379785e81485d0bd1aa76e7248f1f49cd74f2783d374d1ebb735fce640fb04355b4598629a5cd610d732a6732b1b90b7738c1886fd7292093e9e7ebefc7fe4e1d17f7adf003269e1ee484f904f2d668acdde6f24f0fc1032134f0c1c88b7cabc0244cd4be733d0fb591f034b3eebcfa9387e9aa3be7f8d379eece44420cd9d642c8aea96ae14e7acdb22ccbb22ccbb22ccbb22ccbb22ccbb22ccbb22ccbb22ccbb22ccbb26c199028e998a89da7834442afcd74f0774e86484a43fbc0ccbe5c2e97cb255cbbf3d26de7245bdb5a9113f95683c03c648b8880ace72d11a819590741ae6906f3b4407315b2bedb55e8373633831e825cd39380bbf5011e0095ad1090a7a77cb70e87bb35e7d379e0434f1aea7cee0946bccf8335b7aeab4f888489a7bb9ef2c0f4e2070f3ec8439d04d3c9a11c5327b119910b6122eb3cb7cd439648686626d685acab6608a031aa689a424843304848ea6bb7c544d6f5145078662676ab392b8450d33069826bb6c3377acacc4cea8ad3449c1e040e0d0dcfd379bc74c52c8820d681c00c16b01893e9f49d7bed4741e614506bad7db74240de07cd747ecb73206f7bfe33d903f03ae860dd44af739e939ae9f401cd303184f0b57fd06e07695aeddb04db40d881cf8139a9a7804c268d3bacc2ad6aed3ed761b3138c38fa7cc295e540c7c5fd4ee89878fa073d85cd7ec29e10a881420f74f24f3fcf3cd05379295c32b968735696da45cf91a54ecf5779e94556bb2a26b2a8af6e12c835f71ae4ee10ab1e72859f3ff5092e565dfcba9f8bbf87df39507d1502b3d4cef06cebdbc2b3314ca7d377ef593f32a7f2d2814ca99eb31e644e1139eb2beea09398783aeb2ccbb24565cbb242605eea296ca6994e3fbd156ed5e4399070f9a7eb183e3f5d2771070f30f104f29d755cdceb5d01e840e654d16fca8875ed466ece6462fde76a73c87a910b6432b10e74596f590762855b04faac037906f2cc1e807520e19a875ae801ee00e427d05bf70977fe6d9af99c47e4ab603a015d2093493b906b9a44ed446eced4e630e7acbb0a75ed6f6ca69eae33b5ce0aca58858e104d7fbaea66f174ac37e0154de08877b7235ed379b915f2f4b76eb6ee069949473d2adc22d23f5de7bcfc28fa6183475fb04db7d7792e013eae6ccff770174df5c39fabcf47bc2cebad7fc0aeee138ae0f3d547bc3b9eb7cef3d67bee11f69f8f7881dc232c3c520090f7fc0320ef39f69e50842258f841cf7f42118eb0b79a29f5116fcf4538c242137cf0735533a5de7a90500411823ce837e205f211af9bafcf77fba94f68be2dea29eb9aefea9a2fcf1df1eedc112fea6e17917e1676e022bd68b52adc200f732e928ca29eda2033a5befe873c4c3d4f8bfae9a6d999d5ad2214386e03d689c79ce2d6447dad6538535314064b54d91886ad2bc21e567a70527c5a33003b374d0d7e9ba669f2d622391e7e6bd77af57d7a7a9ee7e9a85063605465ecadedd52905b42a7951a1da15438c73a8f4b5445c3b958256618a24a1b57843bd306185ca221c5add3124a2f568c74901b812b9048b56263723a315ca895a74b4b654c0e04aec43446185423301698d2aa30a55589dd482dcf858638d35d6588305e041604a0d79bdbaab9bc513aeee97cec2ea142597b4267da9a8d2ea6e9d17560b46b4d65a2fad403e6a1eae2e981dd35ae4e4c418d6a4a4d65aeb0c1884ae5718e129dce08d5dbd885c54954f3f857b1dc099334e7e36c1f9a759e74fa18833ab23fe09799e290ff866d09bbe375bdef3526c6674cd6e06b42231b935bb515cdaadaac05335a66b769372297ae6741cdadd9ad7ec865d697b11f9cff5793da0e7f9d4df1aa4e6527500bacfaeb6bde9277b0afd08bc4314b56b1c22bf3dce28ea1915669c5da5b376abd93de240ff9987ed9a5d2528be35bb4436ed3e7fbb3d7af4794226385f443ac1839c6b78fcbca13567f3343178a3d49b1c9e67eaf3e803f44d3dffc62f24158af082a8e705add92de268b79a5d282ded56b3eb6669b79adda3ac769fd9257669b79a5d263aed56b30bf5d56ef5c8349db686379de94d2cbf4f73cd9bfbc80353336179a53fe220ebde34d59e879a4e476f2d364da1065eed6ef7081f5cb30ba5d6eef3b31b65a6dd6a769dd2b45bcdaed9e579ae3e0f57795318621d91872e5ef3669bcb82c05f021cf73ce19a5d2729ed56b39b04258987d1a301e4ec4e781ece6b7637faeef34e9df1b9d7c7d9cc4a6b764190faee95d0576253cfae7ea554a8e6e75d58b30bf4d36e35bb1bbb26385f049a5bb4b747fc395cb35bf4a4dd6776f739807d9a239e9743ac26383f04f04473a6dadb235ee561a6e1d205a5240b1884ae57c88044c1348347464540222727f54fe11e017decaa3f94254ddd4c324d8df3f1d9daa407f4d49b4cdab1b87531c7b8cff6c174d22cd0f2d0cc56583b5f0358b0e5a1f9db04337d6757d5b6cdc847851d98ee870df2503bd00c292277da7da618f59dce59b0739f7abaf93a4f8f54a1073b13ecd50981c3f3ad3d85bbf866978e88b15577a7eeb13c20b4d5f972bf20a1094344c022a3a32005a40aee0a2db8c91e93fc435e3fe42fb138abefdc10a698ba0af101a5a0a2e6658a7d7d30c1e858f09d2b224db27003684b44dab5818736d783d0d5eaf9aac47ce4f0a0d58191ad82d12be86093468c6580a83914a29028f85883d0b6a4f9d4315514b6f2a0f8e6a8183c1ac29b400218125650fc54f841939ca226a322203b221f6f464234bd81307c231a028970e88ac8d824f9d4430831649b40129b09494313b6d4d43f0891941682bb05f9ce15810a05fdc87590871a08d6c9f92e4d859e873908ccd1ee24dff9ce933230e8abb30548c21243ebd39debc10d11fc54e801a01b1df07d3e1f5055733a9fa3ec5157f4e97cc610427650dfb92184be6d5ba14fcfb3fd9d70a7aef356e8db24281b646cbe45db2612b47078e70301a9eb8af2805cb3479e88f38180dcf345ac6d7abe7343accfb2ecce55dc41c5c4b4a7037e2a24b4d7dfa9bf7aaf042fc8ecb117627d96e7ae6c014c30248021e1d91e2b5cc1ef3c4db2725a18d2ee356903f599aeaaa3ebef7cafbf3a6fc544e14e1dfd546b2d14a15f5bc0422a3cd3711ee2b54e6bfa6fd14f698ad35c2ec5c00d33f4e9049c22aa6adb3af939d126cfe554b56d814027689aa1985375bb9d4ecda55fced25c2ecda93a9d9a4bb5a4699a53753bdebaf2763a35970ad991a6692e979690a6384d711c8cb3a48891e672692e979a698d934ed2e454dd8ec7dbe9d45c3a254dd39caadbf1d695b7d3a9b9b4469aa63955b7e3ad2b6fa75373e9952b655ac8942672aa6ec7e3ed746a2edd93a638cda9badd4ea7e6527c264dd39caadbf1d695b7d3a9b9940c4e539c53753b1e6fa75373299a3b698ad35c2ec53a9e2c6992a638cda93a9d9a4b7190347d93e672694e5573690e3bc54aa93e7b8a647bb4cf67479154cbdf28169adfe899dfa8197a86a6a16b4ddc7ea36cb9df68db0acef8dcb86a132546dbbbd12a1031ded020b3268e899877a3492024570e2d778e4489f16e34cba8ca8b2873a6b8e082f56e74cb032d6043926895f892e2dda8f2b3bb28a17401848a1a9777a3609f6798443c23ee731f8c7562ac13639de77972719d7df61399a5ccb026794e33bf4facae734cc4151a293ac0d8a851f6eeb32a45e364cc16728e8e2aef3e9321d071b4268176d36e703a6dedb36b329ca990e76f4d95f65b636d5de6a9a88173040f932158efd66692a0d02211e7c58dcbbb75d20340d6cc5021e39aacbd5b2bf7993d2aa0b069c146f96e0dd60093e8c70413f739f70121b3a165ec14d7c1c92462dfd8cfe72266c36e54bf331599df196bccef8ca6bed9339ace5f6470254984bdc96af2ee5cf55c6cc869eba28c11c5cabbb308686b3b966530b0c87877ced282026d3944451d1fefce5b0e4803260f1017795468bd3b2b7f042a8e582569d18602c6bb33d8e33e1b9ffdd4061b7d9c7d04b3036a12b1636933c66b050d275578bc1b2731b88073a27c7246ebeddd42c44f14b7253d62087937d663a7c656122d3d7f72bc1b6781e551f3b2a704197d8ebc1b83bd73bdf9520349d6931eefc64a31bff1589807f3bf3195d56717a17553b77936957d021a087332e3733efbf2d84b131f33246825d5e0c4bd398c5b111d52be9099a97877fbc6214e7e20290b23f6e2cd42fa8461d901870515b3d7a8a7462861c18385932279aca8bc1690418584305d7f926479817f5ad74dab8146bbd9b1c7be0106ebf5d83724dbcd663d7636c926c572eb97df429f73d3c4e7ae7c8e8b90b5cf51c9f2395fd9630ed8a4cf638f52b67bcd20d6ee95cbd7632fdad2ee75ebb1475d59af1e7b949576afc8c78ec147db63c7d0a3dd3cb4c72ebcc1137bec421bede6753d76a19176f3908fbd35d2ee1ddb632f5ad3ee9dd9632f6ad3ee9df2b1177bb47b97f5d895aeb47b57f5188b5a9247db4751f7a4a61ca5a2edd48837e73cf6985377ec11351a21dbad737bec4637daad437becad8b76ebc01e3b062aedd66d3df6968476eb928f5d89acdd2adce3f55333bf839f76e971e5d3339fba0ae453b339699f76f181e4983a0617668f1d438b76abcac7aec444d57aec4a4bdaad261f3b51adcf63272edb9d637becc2b1b3c72ebcd2ee1cd8632fd2c81567b43b0765250725d6eeb44ada634fcd52333fa88eb3573aa24733d2afc77e74d5ee74ebb113b3a4578f9d3886f7fc793ad093cef374f5dcf2c50cc3a39e9332c190f0a9a7ec313d9e462826688f1d4a49bb51b0c70ee407e57aec407dda8d623d76b44a4fb1cb13adc2d143b2cb3ca5b250696f8f1daa4cbbcfe5638f0243f6d8a3ceda7d2acd9c5a8fdd29addda79d769fefe4d66e6df6d8dd1cfaebb1bb38daadb71ebbdba4751a83dd6948bb4fec4e5bedcecac7eecec15e84a6b57aec4567daa425ed3eb12729d1f35a3b50bb27e5a9acbd294ba1aebda855ededeb2d8f6678d44ff6889a53f98d4a1933e47bba6a4e99ef6904d353ec123b919576b3cbc7be59b8c7cec2b17df2544b3683eb85ec92658362e37aec506d5ae09d769fd8816fadeba52d5ad2eef38b94b44926da7d7e528976ab8f01f27bc9372d8cd000673179d434158ef082346796c8b908454480be909c30e72f30d11ca142be2a7e4dcfb9684e7f54c030daa0277de820557ba1265d219322c785451a0506ca24854eba526445063a3008f4c122e94a98170f1349574edd9b615e347e17cd766a3c33ec8a92573f0b81cc26eca6ab7b1d9416ff067aec26909981d9009e99b4b105e126c15be009e0fd0d1f3404a0a80111004f1e9c3a34659001030c46a6a9a1d41207cf9e01ee7021cab36bf001778032c5bcbec2daecabf24b00efbba7bab642c0a0270d9b8a51460f1b34f47e434648c20b189e36486570fe070d1a00c043870c30304e49718892327ac01d36f8565793363bcbd5f51f02e09eeada0a01839e346c2a461935147bbf212324e1050c4f1ba47a01d00000450fc40e4f193861d064cc3085418a89c3306a09cab36fc01d2e6cf0ec5246dc4183871c5a5cdaec40595a01d00000eea9aead1030e849c3a6625491d8fb0d1921092f6078dae0a200f040cc0003e394148728a80d4fc528dca1684c624969b3b7575800f0d0c13dd5b51502063d69d854243ef57e434648c20b189eb2ebeb9001064f46a7a926a90c1c304431410d372c69f0ec1870870b45cffe54c41d88519f1d53593d69b3ffaaac3a6480817baa6b2b040c7ad2b0e9c9a9f71b3242125ec09062607492e21005b541439198f4e4d9578091696df62011301203e3947baa6b2b040c7ad2d0a9a9f71b3242125e109a92e2d01495010ac306260dc3e212d1b30b71870b4f9efdc21077701a6a1179a8279040c4941407f754d7560818f4a4a60cbddf90119230c7212ac3060d45e2139227650fc103c52e6df6210d78804314947baa6b2b040c7a060cbddf9011527689a03668c05064220e9f969c3cbb11ee70a1c9b323e10e4a193e9800f14a9b1d08c204a03668704f756d8580410c4cbddf905176550d45a627a7a62160307b071e6469b31719c0030d45a27baa6b2b04641af67e4346c427a761d35206cffe131a02e20e4cc1cfee6183296df6a30f1b109f9cdc535d5ba1e152efa7736a5ac2d06b858ac6246df66094d1a929837baa6bbb74a1975d0a1930787675873b5c187af65e8b3b2c8510faec494d606d76a46153060c4ceea9ae1776ec9add9d9bb8039367cfb8c3d0d51577b800f4256df60a41671a2eb9a79abe2f79f61477b8a024e4a4cdeeb6424bae8989d92fb81913b32bb9272666a1d0b39fb8839267612e4269b367a1aae49a9868a2295a8dfcf97a165ca1ebba5bc1457229b841f7c835727791bbcd312277c89da05dc8dde6db6b0f727fda7d3a99e3b5f7b4b3eec65baf7dd5ced31a58ec2084152433deca53e7dbeeb611cc44cb09b7c9e6960a3746566d8c750a37eec2cac74d633c338929461bd447ad3e85e7e968c6214c31ecf5e5a12822ddeaf2f0a7a7450fafb556d4d081218c388995e6284c9587b8d894e4c5156064d39f9e0e9b42e8b724608861086c491fe8341d54cd827f7a9a5bf50c117ced28f0755643008bc610422b78114942adf67cba88758bf07acdc3f5b5d0791a1979694d4cdc4329cc9256332908cc435cf490a5b6f1b5632f4609915d688069f33a1b0285069c8a2c2f6eca0841abe395eb52802b55945084845511a3c345cb49091f584aea14c999996e41e03861134be304c6082c3a2948dc11c34126a74e901c972fcaaeb01d53ec64a1657169513b03c4ca15313c725b8c4ab4d83242040d8c4f1bae132e5ca83111454f1dac5c590c3733625e5a902a7ef876e489ab31040d9f248c1c199a5686cdc91732435a14608f1f3b2bc8901c695167454e0b87195e71ca00b91a4b0209230b53478d8f11b43a5459be989c2dc9a2a3849517126ccc117b6202caf20f960f9298a86a41830e95da0677bc689cd07203881bb8b1203194907d9dd9b242c7d4a26cbba186c5151f66ea5c19d1040905c68e2c269c6819d1a46a0912155b5472badaac4c515bc1c72a8d8bb72156865cf9b3b5a5146353252bc04d0c6bcbcd881a31261f1c27aed658e1d155652996dbb2068e103960f60819c164cc59982f6caec66890a1f25aeb2cece1f5c6ac871cac2a291d59632f54a49153c2abcf5ebf3aecb5d6c53ca59a6a3be1cd30213f7e0385d2903c39c295c48894183c58250f56098f558cc7fac6637dc283cde2a182871a1ecbcffa44d39caadbf156b607e43380071e08415595a5f59587bc7ca6ea6eedb5269045638f382d0ff35b1e62b8b13c85dfde5e7fe5298c9699b2a3897d76dd95a7f097569ec25958790a5359e5290f648dcc5306c84cd9bf94595c98ea8a4c2b4b6d65ae2ca5cc62594a97a5789e3da765b6fc96bd54dff96bc87706dbf9ce6344be33d9e77c06f49dd13ee765916f53ec739b91efecf63bf29dfb7cf6252fedd967cf39c4f05512e7ace1d6977667e4db67cf56596a8b483508e62aac9cd36ebc86e6e6816dad0d280a9f76e3b1af3323d998590f6cd96ecc95a58ceae2f26299ec6937a6faec3847115fe124c65a9dacb5db7c6b5a81081178c3af76494cbb430c5f4895bfc109640d829e1d8410b25490670feed86310abd59e3bd61472e4167a1ce9d8a3cf4fbb0a31720b3d8c54f608b492d00ab53d574851518e3db24cda608e05ba42806ea1079037a34d4ad99d2b84c82df42042d9a38e2dd1360d850c0dad5f6d5451c88409ac93d683d11522e4c6d7ca4c396729db0d7ce72c0b3d5abd7cd3c20b74237ed937863f40cfc2fe84f961fba5ab3609187460d0f310b3958193e345989cab38644c6039a184a3e2a14647074ac7c786292b94e461f1c5cd8a341e392a30b13228b0ccf071d312e4762600606af4c829f103cb8f2c6e7c54a890b9519239d9e18604727be1418a04808091518e596d112bc01c1d5d5e36ecf4f19ae3a43767cc18c5429c2b2eecfcf0b224cc065a8444012386c714397d74734e708002743933b64ce993474cd90a33ce11232d94c0d8fab1bc726ad1f065ec2097cba93937ad3e97b32247c6477d0923314c5d8a01047a95b367df0cd3b2ba4286f787a793399904539319d8c2b901972d5a8bc7dc345376a05bce7552277512ec05606e6e6e6e38eb054b33333324b2ebec6acde588ac3387dd50ece6a66be3a6f65bddd2b82b89e5810e861809e7b644332b1a8140cdb6443353e3e13e8f273c77a7db1b9e69aa5abbaf1d83407b2e87e2ac9c737aa6a9a340a0aaa2e6f2cd344d4dd3d4a88f48711a8767e2676bb567f6d9daecf8c46606e7b3b56606fad95a3383fc6cad990106619a692e97cb9d39d46c7b5b84cfeea75d2a6bf19b53c498e4e1faa2dd182c4c88159d36480f863c2dd09bacb69776a3fdc2a2dd1e1664ecb79a21471b1684ecb7faabc9e735f14b2371dbc7492412d9e3c518638c3146c34b074b5d2d30de6c7529b3d02a9c6c3116f26473830b418fa966681ff2392c1a1dafeb893cd7e292166bacb13e7750d43ee56130531d6bcdfcd13498442249a8a58eb3305632758cc4c8104c93cd7413c27d6a9a996340635b1caabbfd6082b929ccb1c714ab7d969ed254398b994cd981cab64b536d01b1da645e53d95ab10f7a2a6b994c39539978cd64ca0e446bcd80c6b6b887409d70035b55b8dbcf685aebb3a74966644903a695a53497ca1ed18caa5a5a60bc51fbada9307ba6ae838ddaefbca6638125cced771653a19071f33b6be5d8236a8524a2222ccdef4c759ecbd4ce89b536bff1da67cfda51d600233e4575175018cf4cc2261846eabc6ae3a42e04d5b37fc8797687537d9b6c40b4d66c9b6343e3a3a703816d0b06b6cb7ac1128934978f8ec8423f9ceedafd35063be3a89eaa69eaa9eb5c751172aecb7ebe92c8d77342144d3361d44c336134a7407866d246978fe320df0483c3652edf046bcb7a9d3433d060a6135e407eb5327769b7aac419bee439d3857cb117f5d40829d85780d45319dcc8b205867cf18817e317f7ac78c99244be5d7aca24036286ccca8cac826212844fd78b3d636533cc86f35263c76ed8f15617567a404f69a566c2ae7ceca1058db1173b08217cd0531aa999b08f3d76a39ec24a33532735524f99afd9a2ca53a88559882e5df0cca4ad9147baecd81d70ba168e201c61849e67e1799e193d8b9ae9ddc09e500b4510a1c89107da1760be1a887507a47034e0e8d0318644be2300093f68a6b4272481e9cf060bb3f0147a7b3a906f172277d97711157a00260c41339dc2118a7c80baf611902f1c01156236d8738a855988939a293d5da7cecb4059d9518f40765478a473d4cd3702d88184473ae191024e47dd01a7a3c2118a7c805dfb08d94f77801ee1fd9095780c2b7b6ebe63471fb08e3a2a14a1c98b88da9315235e56847e07b0ac10a369a6d4311b46c3277498d042b2e349ab35d1d8c484e1b942919a294de1f230f50cb45afc1bc31d29e0f4ec0ed01e50b1ee0839a99952df79f9c882d3c68544be996b2b2b79f4818797750f2feb3b677deabc9e9bbb3453ea0fa735dfb14f3d8369a6d477eeca600e30ef5c818302f9a2ac5b91304e9e2491c897c7ba457667bbaabb00405cdefca07339dfe9783b9d4e98d3d0f29075cdd76473c27cb601acf5d4773efbd4b39b9e1281153715627dcada58bca908a658b1b31ce25582c49b6a305ac47c41165153f6a69ed9f4d4882bb3336331962471e2e5d5c8158d977a707afe23f5338b56e7aa9ba6699aa689d903e49eedb1e918638c716641e43ea7b11efbd639e7ac5910e9e7fc88b2c0a66badf5c982403f07f7d8cff3445910e7e7d823ca023b8aa62c08fdb96da2a5391644fe9cf3d435c71e5116edea3c5779bad57577c20d823f95a9ab9f9e4a10d8abde83eca80bc9cecb790842359dcc73d56c4ee75217820a4da190537814c7df99c59845323197cbfbb498799f3b7bf4a96f6ef039a144e9448bccbbdb575531afaa612bc1caca0e9f207d5e550b9857bd027b548dbe75b3c8b78ec41e5b35789405caa35a5864f1f1a853608fa8bf0dc173a7cb94386752d2304ff4c28a903d60618c6079d329596c7cea41f698fa117bcc2dc11ee8078a077223f60894e5e47beaf7c07ccf7dd8ebf950f1bda05e3eebf57c02bdb59e8f3bdff3f5f2979ee3a49e52df9e63ac2c657e0fed159148a4899eab7aca449b8125eec41f206a60de5e1b384a966b548c69827c77fbbd3278762cb9b30409901e1e2641aeac9589238145cfcd9ef7cc1c8fa2a8b73eaa3cea45ec11056acdf4da5b38afc37a70bdce0a7bed40f6a83d4dd3d45327628fa985cf65d5f89c0fb1c7dc04f6d833c79ee5a1e55917628fecdaafab975fddf594faaeab3765a9d4572f6a230faa5f3dac0e4296d2befa04cc35b65f9d043c9efcbabab971d5af8e93abe3ab15e7c059bf36e972560687ebaa04dbbb1a695164cd09581a20ef6ec15637b709f72b46fe1ac603c6abaa07b14775c40c307ed888093344cfdabbdb47d12e8fc68051e64d0a9a2661d05ef4ca9a47fdc71ed1a2cfc1f99cfbd8634ed5a3c3ca8d071821a7d96b192bd494e420014b9adbab9d4cca6b6fa5923edd01f6a903b1c7b4c71ed72df6782e5db68f7b7a07dbf841ef5c9d50d743e621d60959b83cc42e15d7de31de31c6fd36b2704616cec8c2198d4afa18b9fc366ef96d2cfb6d341a8dcb0c2471d165cc971f5761de6d6c3206cdd5112a5c92bcdbb82487d80e2d232f4860bddb78012f67cca4ade1b2e5c6bb8d137041470b8e14b73950de6d2c22c3890a275a64a0bddb6866cacc14cef27b6a39c536b59c82fbec53c8a9a9a9a9a9a9a92a5255a4b0fc9662c7a4d83129764c4a6a899514155697949494d4528749d411f799039bc581cde2c06671e0c08103599e62bd582f0e1c5e7020fbcd018b8396df1cc64694b0268d913125d09480f66e0e40f0c8b142430d161d5adecd21f9e78819202a98a8197b3707a5dad9128ec98f353defe6c0b688625b44adf91dc526a3dc3e47c17df6286454cef23b2a63f91d95c77e474545452db9fa1dc516d596b4b241c7445b111639de1d55658466c72d88893b3aaabc3b2a096587891f59ac7419797754d61bb82e7660c0c9e2f2eea82d1c65695bb29c68b2e6dd51ca3d6e2eb660787d817b77d41aa835506bbfa1d8a0d8a0d8a0a0a0a0faf4813afbec504b74405df90d65e5375495df50634df894f0e1b5b5e6c9bba17a79a8f09825c58455bd1b6a859e3b39943ad0e859f36ea82c5646520b8796650b2aef86da22010f9c1336555890bc1b4a7925c7878f3d2d5ca8bd1baa6c43d90635bf37986d30db60b601eeb36f18b241ecf7062abf3784fddeb061c3862587222adac0b42cfd1c79f786aa2d6dacd4d49accc91af2ee0d490b98b8b3a5c6c8599e1fefde9055420c956411146a3cdebd616b6dc5d50e1b5e7e2cdfbd61ce1d175556dec0d1f1ee0d2b1093b80289fbac61ddd2b06e6958b73468d0a0812c4fad5feb97060d256898f25b03d86f0d527e6b18ebd204cd94235762c478b7861e5baa9c8179e9ea7ab786e408f22c51c459ab62f6e3dd1ab23a50c34d5a1b347edadadead616bc50db12329809c71f26e0dca3765255879c930637bb7063f453fc5b1dfc515595c91c515592c168b64796abd5aaf8ac527c528bf8b507e17bf7e17c730d861832d39c3099f16ef2e569d58a621221686c657dabb8bc9f6091f367ee4b03823e6ddc5acfca38e161a5866d0e4797771ab4617136e41d04ca4787771c411382e4b5270ad2821cbbb8b604c2298b8cf4434221a118d482412dbda88679f9db8840af1c96fa293dfc426bf89639fc17cc9621624cc1334ef2656ed21e1860a2a1540acde4d4c52f95263e72ccc16ac77132ff0756487d51c2079dcbc9b3800146f66bcbec43da1f36ee29b316fccd87a542961c7bb89459e8a3c59f9fdc4eb7ae2753df1ba9e9e9e9ec8f2144f8c27f6f4b464ec49f9fb89c9efa725bf9fc6dcde28c981c3c81be5bb9faa3858d3838e551bdc9bd7bb9f922576f850210547189f773fbd6c4c7839e1a1054894773f1dc08513a4da9d196adedefdb4858d46f28d9d253262bcfb8967c324f26cc47d06fbedc4cbe1d4f6bc1c4e6f9fdda9cbd06f272aac2e2727a7a5139b1f93e827ee73130fd9c44336f1904d4d6d9a94fc6e6af2faddd4d4d44445d56645cf9f363ed8bcbba9ca03578b1779500069d3f6eea62490b41245b2909133e6dd4d4a3b4a963d5a78f940f2eea63526714ddce70c3bb60c3bb60c3bb60c1996bc6548f23b4309bf3320f99d2143860c567c6cb418c246824bf2dd19d8d8f073450c450d14efce00e58a4e9a145f5e5829f2ee0c59187c2d6133068a98225befceb09580b715253801334386cbbb332885cc6833c3f2058c8a7767002bc350860100bf31986130c3608601eeb36360420203060c183060c0a0c4242a89fbcca46452322999e03e3b13932453d76fa623bf998cfc666262625a5ac1b9d3c4879d3f6aef66328183c5902f5a65cc20dfcd5425cccd1909aa2246e8bc9b8958b6359694422287897733996e7c669c25bdf0f06af16ea6186e5f5fe2caa290e07a3713d84ec770a76398c1efe12e6bb8cb1aeeb286c3ab21d570381c0e97bb1326717722eef3d2ae6a6957b5b4ab5a5aaab154e4f7d2d2d2d2d2d2920232c2e2e0a9837687eddd4b5560b26eb40842840cc5bb9792714c629cb8cf17dc2eb85d70bb00f7d92f30f17181ebf70522bf2f90f0fbc2d867bf6076e142da85b55f2691209532c628bfde7da1ca4c0d1424eeb0513363e7dd17925bb4e2d468ab8387cfbb2f643db92ae3032b2bc9d6bb2f6c6da06dc50e356282fc81f3ee0bba38ca3a7161ec8cdd78f705304a6094a67e2ba129a129a129c17d7625264294a8b0ba9494949496504c2294b8cf49604960496049495e9f9386fc4e4adafa9d949494b4a461c2cbc48e323375de9d54b5470a1b3e38565ccd797752f2f3579d396a5daa78517977d286137ad66c59058181e2dd49402c00b1c0e1b7852d0b5b16b62cc07d760b4cc02c08f96d21c86f0b407e5bb060c1c252049858193a606af448bedb4255da18db962d30c844b1f16e0bc927634adc108223c78a3cefb69005656d0c4d97d80eb2775bd8fa123882d0f852e3c5bb2d2811804589999610e51c23efb600a66b21d4b51046fd16ea92425d52a84b0ae13ebbb04ca8f55b88d525140a85cb11379ea4a9f19ab2a68b89770be1f82023b2162606981cef1626ef98c43b719f5d3817ce8573e13ebbcb04cdfdf1dbc572b38fdfaeebbacbb2b2a49698382a59deed5691019b9104a245898977bb491467fa2ca9111763cfbb5d655b92ac2536a0cc38f16e174ccdd57cc36feff3ea5a6e7b75cddf3ebb3359e354585dee6859ca7c4ffbece6f6a5b3a94a2aa84a2aec0aaab282aaaca02a2b54a850812c4fa966aa59850a4ceef07e57e8f1bb42d6ef0a3c7e5760c01a267046ba945e24bcbb8201a49c81b1870c0d3a6cde5d818b9693b63437616aefae904565060d9a8e1f634ade5d814415ade5913d26d2b4bcbbc20f2b355c34d0fc20a27c7705b50592da026923a949a424929a4442424222cb53aad6463afbec4848a0df483b7e23e9f88d94e337d298903a29e4d4a87273e2dd4855cb352a4e9c6023c7eddd48c93b61ca12fa20a77c7937d288ae3137d494fd21f3d5f56ea4173fc82cd9b1670c9b9b77238da0ec08133e6152ca28df8db4c624ae89fb4c818d021b05360a142850e893eb43e1ecb3534052c0f19bc28ddf146cfca6306707d8d90aaa1443b4de4da12a831a2c303360a0b921f26e0a2d701343e6cb189b3c5dde4d418d989a373b5c288152f66e0a28dabca1b193a74b0e907753d8000b09144468ac0951f36e0a504c2294b8cfc11c58300716cc810583c1e0d95930a8c2e87710eb77b0c6ef208ddfc1b6b2146368725e14117b77b0ea8e8a651cd59430b57707934f040a181c3a30eef87977300b0f17b41650ca66c8787770cbacc2a64a18395fec907877500964b365c9e3c90d3159de1dcccd3089b919719f8f72584739aca31cd6d1d1d111599eca71e5b88e8e943fd8df4779c6efa37cf5fb28cbf87de4228a9d256653e67821f1eea3ad3870662eb8cc4c59f2eea364708c891c36c4800511f3eea3ac0d48d4dec468f225c7eadd475b31d6d67e5475a18d79f791f22a0755123f6124c8de7d14c724c689fb6ce466e466e4666464b4f6d98dc8f2548e2a476564d46514e3b7118cdf46c9df466344ceb0d4d24c904979b75195084e2489f3670e9a182cef364a6270828d4d58094b5cb8bddb284beb0d0aae3c7fa85ebcdbe845580f1e59d4d4497bb791f2023ec698114266c713b2771b9599c4b2b8cf45a9599119dc17a515ed22b6b6cf5e94965654a42c7af1bbc8c5efa216bf8bc66898a5415251c951e2f6eea22a0274894341024e9d296ade5d941ca1420c16166971b06e58bdbb28eb4fda893a5ec4bc64bdbba8c893b82376e6bce500f2ee22351751e2ca6c4499e2f5eea21488494c81c47d066e01b7805b402010f8f5050482a1bf8156bf812c7e0357fc068ea500881c18666d905adcde0dacfabca38433234fc8aec87937d00cdbf1828d96b7256bf6bc1b78c5c55595236b26a4c47837300e181e267aead0a991e6dd40250b2a3d5ec9333ba0bc1be8c724fa89fb4c9422895224518a2422222222cb53e9557a4544a4ac42a4e23751d56fa214bf89d2deeae820fb91d6f56ea2aa2a1245ce3c9901e4c8bb89929fd3b8e08c51e58081e7dd44599fa9d6ecb03376660a8c77136d7d7e83a6051925494ebc9b48f919c98c25666d64baf8bc9bc88d497413f779086d1b6afbb6a1b7cf3e543684e2f7d089df4354bf87c63efb90d9d050dad01a9d2524d27461f3c647cfbb87f6121d2548f8919c23e3dd433f2a2cb4f21c712b8184770f1129e2a2ac4e1a9a9f2aef1e5a81111b7d84e8d9b365f5ee213e6ec6789918f34325ebdd436028940928940945bf27a0601350b00928d88409132690e529140d459b30417936219bf83d2197f83d2193f83de16843c5933c6247aacade3d21051a3f4e58b85993e5cabb27246fa4d811a60a991695774f48337685c5978c2b3d72bc7b029aac2142e82c8b5c9d79f70405a81053640a9bb0af32ef9e30c324ce88fb2c846209a15842289690909010599e42b9b6d0d967174296f9ec4219f95b28eeb7d09fdf4264525ec0b833a6c34f9b770b554d51f9402ba3452dabccbb859247154ed2b4e29ce13af16e21245a676f5cb0b8a0b9f16ea1addd1d3841eac8b9520295770b29bdec8003054a1c1d2cef1602434f04f9f913719f83d0aaa01d04f7d983907e7e07f5f91dc4e777505050d052a9f63b882da8adcbb28a932b3f926d38de1d84c1922b78e2b2dc19e3e4dd4120e8326749458d09d7977707b939f2e6cd969c2b5669de1df40124708e587ded90f2f6ee202c33e47cede0f1860bdabb83cc984433719f7fe7f2f73b97bfdfef4796a7ceb7f3edf753d2f9edf9fdd3f3fb07f7fb7767ed2b081f2f5d5633defd83000940622cd798ddc8f1eedf08ac272cceb8bde1a952f3ee5f1293225f56c07003a27cf70f03a41de59fad2fb418effe69e15ab2a6c6441c1a5ceffe2931894ae23efb943ea54fe9f3f97c64643e9f728f2fcf6f1f9edfbe3bbf7d639fbdaaacd1da4182489e77fb4e40a70d123a7a528cf178b72f4bd89cb73e507c3c897bb72f8b429a3831b6a0d07245e4ddbead26557ece44994135e6dd3e73cada1b1a6edcd4f048f36edfd9c2249e2de23eb767b26dcf64dbb62d599e3ab54eadb65dd1befd6eedfc6eebfc6ec7248085042467705c7e66bcbbad223249d145d985230bd5bbdb640867c4c879f3c20a9533ef6ed98021b388294de0f9f1ee76ab03111c493a5fc2aa687977bbe683471adb9eb8175adedd6a200db4813450dbf7017afbec40318080808080808096406c6526b12cee73cfac67d633ebf57a3d36b6ded967ef69f5e8fceeb9fdeecdf9dd1bfb1431b8c8f4b9ba62f5eede8b124aa873c5cacd32f9ee9e0d2c7e9428911104489b77f7b2726481b186e32d0856d8bb7bc82a1438e2c250f9f3e2dd3de51e374d76a801c391f6ee1e10930824ee33bbc56eb15b2c9bc6ae7d76962c4fe9afcc845d7fb1679f9de562e5fc66e3fc66db7eb3639f7dd850d2d002e3aaebdd6cd5672e2c2bbce8c9c1f6e3dd6cb20538d8c68018f10292e2dd6cd6671663b2a898b4483e79379b876a4814384f867089f16e9645d7971a619adcf0827c37ab5b9844dd22eed7bdb2fdbac27df6b5499215ceeff5cdefd5cdef755d572956c4906c0943333bf1eeb52a4a143145be909044acc4bbd7e4e7ae3d389225ecc191e4dd6bd602667cc5b982a4aa079e77af5bca3c5957e62851d2c4eaddabf28d15b3b12835c40079f7aac724ea89fbec9bd7a74f66c2be796ddf87f7f6d9794e7854583c1e8fb7e4b199318966e23eef96bbe56eb9db89eda8d87eef76bbdd6e99254689064d4e172037debdcb425ad1852d2d8db20bdcbb775b4a4ca292b8d76d1d9b5297953a9d4e474676f6d975481d559bdf3a2c36bf756b7eebc61eecca8a85962b2ee0bc5b579585c8d7da95126469dead4b7e56c1a50d45dc902c2fdead03c18d961f3564e840e2e7dd3a07f020434369620f9a12deadf32165c68a226162dcd0f16e1d58d66112b38eb8cf2adc6757c976bf552aacaecfaababc93f37327ce7fe7fac0e5e0727070b9b4b5cf9e23cb53d92a3361dfb9b3b2b42cf563969aa566709f3d5d4bcfcc8024dfe04923e184c8bb735b9fddd69475b4c84811f2ee5cd6daef5c57eef73b970bf3699f74edd334287150503f60e846e1fe09d90e3f35486cc5887b775aa5b45c3384c4993044c4de9da2658921c18a4c942f26de9dda3112864c8f903327c2bc3bdd42011991396b685a56dade9d2a392831a3081824da9a14ef4ec1d4fc4ec7d2fc4ed53e24deaddba07ceb370df7a79fc8377f9e547f9e55565739fef4334bc89fa7d69fe7d6c9f5a7d79f5f7ffa09d6d6e6cf53eccf73ec24fbf33c43fbd34daf4742724c027b446253f2c1603018247a30e8c6ad0fae411c4107214b69f0a04f208814743318f4a08d3b5780488141624a7087561a9b3a24d4e013448283e406a9cdef28b62d8fe42792ab6e863cd29bab477ae3e79190e04c7924c743d82392f17c0d1aa6b065d96afb2db4fc1d7ca29f44221b374f6c03e6896c823cd1b110f6480cc21e8339c0fccf7fbf9f2735652929ff79511b61fc6fe887f5fbf9047e1d7ebfdfef47bca2f0fbfd7e3f0dfefb59f8fd7ebfdfeff7fbe968f316dc826320ecd182060d1a346870acc51e3550d021e42938fec11e29a8442291e8c3e93bac7d07c73dd8630724242424242424242424c759ec11492a87899772cc833d4a05836a7e5489d5592ea7a40583fac6078316f852a3b3c44a8c1d3f6f30ee838e77b0c7a00ef6f8c3a1e37d3e6de37deef3249f476529f37d6e14f23e9f0fcbe72064a9a0fb7c02bed3e7731244f1215de5d07a9fe32d31ef0bf2f91c8f6529a2fb1c93f9cede9786d462461a1f6ae0b0a8c1c5c99012249655d0d4787d5f57f88c91b9d146c2279547cd4419931c5dbcf87c3e9f9b3e2776792291e840a2e31cec918884e4aa124730180c0683c16030e8f8067b0cea1f8e1bfffb85e1a8f13fc736d8e30f8b3dfaa0b04e3c94e31aec114a7572a0933b7952767272d5c9e1de69acf83fc734d8e3cfe79bf23ec733d8a3ef8a3d3a199bdc04fb26c732d8639315af7727bcebbaeb49ae17dd2b45de756bb80e42964272d727e0fe5cd775d7c49c1324e08ed80013e39a91f18227c518d79531ee94d9ff7eaeb678fee738067bfc019190683c92ab4856b03c926318ec11290ca829eaf4b94ae27dde52799f037de8b3827cdfd7fb1c27d9a3cf189cf141578362ca0f3a7ec11e83ee823dba67c17ff2334b5198a1e59f1cc8e39f8cfc93e316ecf1c9fdeadddde7ee6faebe941183c682cccdeb674dac70a9696952e7dded8c1fef6e9a799f9f3ec756ecd1c7823d3a13993acfe478057b64dac244c6a3eeeea817b5f1cea3a89b2084e084ba4982268f9a6f5549ac271475bca5e3d11daa63a0a86333241475bc4483280c649672a97c28ea190b7542d1a0a3e80f454df8e8a166cb09103938de1047c0f859834384eb883966c259a1c2468c093c6d666f18182dd420b7d0507b37567ee8b1024cab4509384f5053ec4916da924a5814258aa2fefbfd7ebfdfeff7fbfd7ebfdfefe758057bfc0575f2b7f183242ce3a04902c5cb8d77b71fe483e64d588f2c7d9ed479f7f0836dde2469d322636122187cf1c1a0922d4be5972548dcdede60d071157b0c8251a1221646c517e68bf2f97c667adee7f3f9be50bdcfe7f30f675adee71da4789f7b80e57d8e53b047df97d589286464b8ba5e9cda05524a191638deb69ef4795d3785bceb18057b74d747427215c523597924c727d82352fbc4a5ea9f1c53b1c7270d5bc4dec9b109f6e8b4e5eadd7109f6e82a09f68866b3a2d1187ce36e7ae3efa8371a036034ba0a43cc1bbd05a678a37b0cb237faf0c51bbd28a3cc1bdd680cbbba7aa39b35dee818c91e8d4918df7adbe2dbb66d97ad1b5ba7164eeb206429a3b73e015fdb3a09dad6aa75bd757cd5b66d180c15dff65a6ca255dfd6b1599632bf0db6adabadb7ad970e2d566a98f028d31239d2a556030957d5bad9626552cd850ffa08f6180c4b6abdc075731bdf75dddcc3775dd7755dd747608faecfe7f3f97c3e9fcfe7f3f97c3e9f8bc01e7d409a0509da50014911c50c1e2f3f2d3ec080bda11225460594ac9db9e9dacae2c668d42bde68c4aa9325e52a47923e715ea3d15dc01e8d577eaffffbb9b983ffe3d2f43fffb9fae77f3f07baa8f23ff718ff0b7ba116d6e2c8ffbc054516b0c776c9cd37bfe42b608f4b450716dd87c522162f5f041655148bc5b65874b5380114784ca0c1c17903576c83c22b0f15b32865452c2dbe8825ebdbd655c01e5b742ccca39e02f688a2803d164d37f795d2f0782517c11e95ca64f934adfa344d5d4fd334e4a7bd34459aa6c1343563e6d35eaa51a4be2b639a2eb57cbaa63f4fd3629a3a5eaaf874283df11999a9d236dd3999010b295db880a541f9f3a64a4f82f001e2c64b9e3da90a301746c274ac9dbd306a7ca9922cd345459a162547d61b332ac4de6dc22d2551335206450f3457efc6c854c8981a39697cc01832e7dd98edd31e40be14f101c625f66eecf669dbfe0e367d1bb52cf36debaa1a8e6fd5c87cebdefab0f562eb27608f6daa4da0e80944dd51ff80ba3a6529e65137c1162af33ba8562c9e49f24507a279f14577346fbe6806cf17bd04ecb138443595e9e709d80917407ce8e19282c9132d5e574dc448f95d79439219533623cccdef67e27fee74fe77268c89305a5c606f30de9f1938ff7312b0c7dffa46a319ab37ba59c21b7d04ecd148a44bb0f94b1a8ef7b9ea4b73f13e17017bf495f1f2410f017b0caa6e1921ef7a08f6e882803da619cb5fb8e6cf0b7db347a19a14afaabac4abaafa73555513f62aab6a12aaea211455d54950e55527155725b3547b954305e3e7d5a0aa91aacf5515557117128964a16ae00758da18166a6c8479d52c7073b2d4b021117353a5a498f11137e5480e1f6a9f3a3666bcb519a35255d5e8a50459d698376486a84cd610794282102e3578de8d95afa2c124b1280f554c2aa87966c6e4513f5157d58079d4dbaf471dd8c5cfa3ee5ec01ef5e1dad5a35efc62e551379e553dea1fd6d01ef50e743cea1eac593eea1f608f28da8aa7f87c6644dee753c3e57dee01f6e8d3e0f71a80df42c19d14f6bb29ea530f6a983f9f7afbf5a903c5f0f9d41dedeb531f92f874ca182a9f92a1fad4c9a7de01f69802c5e130338282c61b197ca8acb87144c58934ed081d2e5068d9914c9695b5bf6fff7ceb4ee4db13a059a1d24406922f4bde764a181bdf3a07d8635b5473f545df007b2cfed258f99f6b803dfed40cb04715832aaec7c031c01e318803e3b5f6f35a1f19e720739fdf208410d453dcb84c3ebf31c6147ce31c386bab4e98a2df986bcfe3319d6a241279423b5edea981f520331592ef6c95b1f6e41caf9168cfca2cd5baf6fc55c17716cb6625f259667bedd92dc36529f3dd77eea3abe4bcd6567a2b4bf95cbbe6f2adbd5ebba95d83e9d1a1c5e07e6bb4d7ae97594ae8daf59a05dfba4dbbbd760d87e2b5ee93e7c43ab3f6a9756ebdf6b36b8f9c138ff6d32c4b29b9f6f3ec82ef334dfbc9c6270fd2efb3edce6f145995a596ac86bed12b14ebb5a35960a8d6db6f54f9da51b02cc5e4da51310cbe5132d4ecb5a3687e7ebc46d3ecfc46dd5e3b0a9722b394f9197ca754dad36492f4aa8e6e72eda95776f29d7e694fc7ac52b2d7e9f2b5a76c59eae7dad3b627dfe95b0ee9274745477b2e2bb795a5cc27face7175bdf69c126927f7e5f63b67f6da736859aae8da73691a7ce7d6726caf3de74602c8ebdcdb9cdf6ad56b57932ad606df6a8eacd7ae6e916023faad72c9f9ad82bd76752c4b41b976952ccab77aa6a2bd76756902c76b752d8e761d525795a5cce7e05b67957ced3a2c5d8eb6dfbaaed7ae53662929d7aefb9af2ad13d38dbd769d19d5db6bdd199cdf3ab6d7ae73cb5246d7ae7bc3c0b7aecfeb1db2cac584df3babd75bb4efb6765d19f8de79bdde295ffb0e0c8599d73bb137bf7768af7db7cc521d5cfb6ecd83ef5ddbceedb5efe0525c11fabdebe3e6372f89950500df3cadadd7ceebb2f19ae7f59aed374f3b0f4d03dfbcb4d75a8f0e145b42f8608933e5d54cb2a2f01823c184d5bb5b2a624ab47113848e1822ef36d9f0b0a3f6440a999b8d779ba6951b6060b8f8c95286e6dd269c9196da8d3148382a66bc1b1b60085b9a263c944ab377e3ae2b35155d6968e0e053e2dd784b959f382c207ae2eebc1bb3bdae1164481f27684594bc792ba3e5a54e6aacd75e3bb0b419437691f26e3df63a4d91316bc01c5111e6dddaec75559f3229967825f3bcfb44be0ef183aa4b8c136b5b62e833509a6c9992a4488b779f76e2fab859bb82c46dcebb4fb0d75b636eb4889b530289779f6e4954e0d972d6674e5c9c779f70232852c2d24e16b82247de8d6ea526be662873a0d5817b37daa5a48dcd2c4d151a1e6ade8d2e5f6310a38d0e9d332c9466de8db2bd365156c4080b257edabc3bc57a6d9665cbca1f2e593cde9d66bd4ecd5ea768af1370434d091f52ae3c81f3ee5cd56b1b3de2f498c5e9d1f3ee5c7284b2b7125925a81841f1ee1cd86b23ca3657702ce15202f9aaf598c1640dc98d3f64de9d837bed315abc91f9596ba37ab78a7c4d45cc941676dabc797bb7daf5fa4b169d1f79be94bd5b55565892c46a471435b6b477ab6cafe39ac41992a78e8cab33ef56dd5e57b9b2634e96e59e34efd665bdce52a5c41a38246dcedeaddb7a0d825615b03eca12c8b4bd5b87f6fa05132743ae9cb8f0f26eddf2b59b7b977ced3b2c13e4593333a35366cfbb77634f6061aaaa2455acc1f2ee9d590466e821010d173c70babc9b877cad33e1e6678d95951927efe655bdae9396640b7945c69977f394af8dd4a8a3a44a0e153eefe681a528f31af899a534780dfc02ec5103f504008a390f000f813d0240c5e03d68bd07b7007bf4a076e8d0a143188a1fdfc12bc01e3b38007eaf9f0195cfc0d52e9fc109179f8153803d66d056c000033f317015cc63e02d0661542c1e039f007bc420c8d8e6b7d1c9c6123025b4b84832e3dded1bcbc8a8a9c127489994770fdf28268f1c3034780881d2e5ddc5371ad9bcd11dce1b159034c1a2889d2c6e5d5ee39f37ba04d8a371cacf2c05f55353ca9ff208b0c7a9b67d2929074ab92a156682eba51c02ec516a7d0e7e72082b01e639c43d0707813d72689f3ecac947f903d863940a05050555e4a1dc01ec110ae937849148f11bbc01ec7183aa4183da6bd0a0210c19e335f807ec5103b0582c168bc562b1587406b0c72291482412e3823cd117c01e894f4ffef4f4f487ec9f5c01ecf109a8fbadf96dfc5f89226d6be43829f1eb61768686972d4ac83079f7f07f6a304ef4c0fab106e7ddc5fffdd6fef787caff866ed069c3c26dc7932aefef8f94ffb907ecf1e7e434f54e4edec679a725efe409608f4ec0a6a6a6263f48bec911c01e9bc83e431f319fc10fc01e33a84b8fc1c6637003b0470c5b4e097ce06459e531f3eef69998d43c93ab7a4a045a9890807351a4edc4cbd467c6337901d823930f877cbefc70cf0f9d00ec71d82e2d2d2d2df900d8e3d2853d3cfe8277c01e2fa84a4a4a4a7b68bc9283608f4aaee593f43cf924e7803d2661b120e62dc09dbd853c7ede821fd9a305a1502814fa06ec51e80abd1b7cd775d5f5d675a09bc7c6bb2e00f6e8bacfe7f3f97c3e9fcfe72f7bf4b97b78776ff16c79c713e3dd9f3d3ab0ca57b8a3e42bf807f65841cdb569da766c992306093b597ade3dfcd64d3d05a5e6070c1f6b5aa4a1b56d7bc7c8b76deb01608fed9ae5b7d02321b96ac7ed91bc7d2b7b243b341ec935608f48c025f58caa0e5f5555b5ce9c5755d501c01e55a92e177e277d4a86ce904fbd4de9a0f9b44e971b974fdd037b4c87bbacf636c17283c4923353bec0a8e4c811850b1bda5b5619143c546eac968fba57298195294d4e98585375e445dda23cea1dd8236aeef529380557cd3c852973924fc133608f145ab4dfeb07a37e0b7dd0cfa0ab6f1f9443f6c138383ee818b0c760f08fdaeefc911bd9e3d1147bd46c46635c6fe452ecd1482d72605151515191ab45ed988e2f82f3e886479d037b44b5d65a7b147bd4ce1e8b8c402b0ff40dec11a80a3d5146f3444ee44944445ed4533889442255bc44aeeaa90e596eea2c6ba85953f112695952d1d2244b169b77b74fe466094fe463ba54f8ddf4dbc3339530529143c59d15565efbd0c66b2fb250bef60f562a5ebb06f6a8c7720e839ef96da235800d9989342b4cb8d29ca199f32626264f1d36ef36c73420068f0c2b3442dcd478b76996663355781ef50f55708fe2205c32b8d8a0eae1f6a2556e8f7a913da24b227b24f2fdd0d0d0d0d0d0508d203f94e6513f517f628f288d32afdd893d6a6f628f431afc841b577e8267608f136c50bd90900385843c290b09b9d1869917f22024e4131012bab1e4858484841c5f09090909090909e5f900bccf31b0479f0e4551144551398fa2a833b1471400dfba99f5ad0fd9639b9a73f6f08bafb576bff13acc868cd7bea43279d52fb04755556321c30d182e1a7dc4741a148fad297cc27ce401f2a6585e9fba127b4c3d893d0aa57d909b5c1fe416d863d08e329f734f6a2aea9c1baf7cae9723937310f494fae63c8436977312707d2e2897c7e454cfe57cb99ce3ad2c654e29d3f1b91c5acef11826fbe5d03e77a4cc8a0c102625743979737ac020011245d9a5c49bf35c87ad3827bc547cd92acb8d808b131a62d6cc70e1c8958591c94203cf94322cefc65d9f9b42d6450915321849726e8efdcfcf9f0bd9a61da854289b89a37916635231c86600800273170030281c0e8a666194045914e30714001666a65a60561b08c469940331638c21861103000000000046461b0220aaed11c9557d1adeab008fc3230558a7a4264c52638115267ff94379473bd865f49c0f6976ac4eb694c7408077ac2ec38d8356af4b5499c5de89d6e9885e320458ea9010ca51b79f439e442d39881526d8a8a45b03a202b927ed25934db68358e7b6e585775113b7a76d40d5a1ebbd88111c226fcea58435b183911804b450ec404054ef77ac76b53a4ae27f442b933d95f57dec830328128d993ae997b1314926fab47417b3507d7941211642c8cdb21f87bdf9b825cbb8d7030d9551d956f9723c5e10c2969073f383f12ae64200d226271a138c435dc02d9c4cd0f58732071c13f1b3486e776291599d71d545cc021a7e2584d24ca3c60b814dd268a084801abc2fbac9136db0c66676a67038c37421bc72053566811a31a0c1afd21871b1fcdb985ffefdd7204ecd821f9b534fbda8d79d422e46e1a4c88e942ec7cc974878f7f2f98500269d50b023d0f471aadd00935249d27ed3260acef98362f68058fae17160241621c5baa04c6199f3218e33ba2b76ad5e5374a4b1766b36040201d0f2cc989f27b4579b07d7f70e08010ce04a7845bc11180c4a0eb1f131deed03c90fee1198d2f3179ab88163aa0502982330135c7204be17f3fc73e30394bb7562a7da9aa1fde770bc2b45e2e73bd056c0e080b804761b01940240bbffbe21788006ab2a9f74504dffbfe46c4239b2585f5760161c4ae71d9ec637c4bf36694a08ac7ee8e9129abe06c21514538f3b82bb4f3878992ae1e24e5c471db1cc2edf9c993bdce6488cac5b92918fef94ca7986855e8323e2e4c183d6f676a928df1b813d35f6729e9ae5a1fe1a36edde2bd6cbcebf5b0bd95469b83c09d92a5c8634baf15a8ebcbb1d2342c331249e70f8584f20ea459dd84125e83d21265e0e468d0f514e79e9e056d763947b1fa21c75609350a017785c7f5389ccecd3110bb637d8e7bb69576411233177644b859a97419e645d867ebf13d1cc4bfc54d16c81f635aa276a09572946de08af912fb76af9c940f086077caf0096e5e026acdb9c50fd9504c292d811bffe6fdb45ccbc96db4d584cce9c7b17331a792d297438c044636742a7723e7cfeb0591b473c6db8a630ac5ff95ccf364bcadb78528603d46e59d542a077e0dbf483cd69b1e8261502c845107e55e8d5c872a4b551ba8589698b805aba57c1bd5008bd13f78f43fd432f5cafb021859489057593183cd8d9e8bc3c306f0c35662312925cb0ceb44305072b0be7ac8db6b261154268a3338ac2662e2d95446770126e436777347571a710fe1987afd6d89deb436e7d04a186b23b2fd24637436431b491b515d90a816e33eb04d64be007243bc209ff012f1a0bb9830e4360fd1be2e311ba47463335a5730382adb522dc8df38ac4dde8962e6e1ab7859eb203fea233956dac77d8df2a09aa7ab184fff3554f611d69cdaa98012a1c26b13202bb627a11d8152ed204606e13a2d48f2e9d7b3eaa2da05b4b0a5ca0f5a5ee15f46a36c8fd5d4a2e6988511f160d50b31d0881766125f4e550594e2a0e4ad7a0e66b49db982bed80300058caff381c6086b7bce60135508037d567ca87b30154de23b55ec714cccaa4602af577fe3905800bddbb74208888fc0c0569114bc51977bc9b60c6c992457bad9c280a6d4ebc8ba14453d97c66b6629d0ba917cce8f045e5aa65f109502a91f1a4a9cf68d656ca9528c5b4448f7d17793c9d078c21fa21567175ef0f8cdcc8f1acf7cc2547488be12b70ff645d9f5321e4b32865a05169497150b73eba763a0df89c1e5aac82948bb741a360c97bd5a1034a39fc276fdc25c0807edcec56b32f4f81c8ec82c5a3812115de8d3387269abcf81be9cddf3fbd2475a43f3025625244fafd85d577ed18b6d2cb42249bd7965de60efe7ad4c77ec85a50079b6cb1cb7e5644154b28e6964ae5fc1f4c618cb332823bbe6bbccfab6f800fb50f867752b8324b72e819a8d4e675025c864faace2a0b0adc45b0c697df0b3ab6d28ce1faf1dc9805e476d2f9acd5431e4141fc5a5905a58c1649b35803b8984aa9070c697d638acd865a97610275ac57d1c4c5feb602fd085dd2e9cc57d1e32cff3c5c015ca958563c7fc3c53dda808bf0bdbc2ed47865e6d8463abc392c40b62cff8b738dc978f58161b028ce172b06bd24cd40901ac80ec4212fedd031fb1a80f010891a27cb30349ec1641ddf04067a62e06ab3a21d78cc364f1bc2a69c3a9f009968949c30fa6ac06714919fac86014f260bf1fdd28e3e6d09f981f9b3a61b3f12f9c34b905d9434237860a857d35ba985f6fb6bafff05b19899e34192aa3202b4cac692add4c488f14c1cf26cc9c58480f2a4dbf125e2537e8c98b05ee6b8a37881ba4d2d7976e10185211e7596c0ea87df736364fd38b8e89d7945859a91ecef9ead1981b50b359d743db1e51072104071302aab3aa6a6f9530b609dea9541cb1e53fe07bf42a7650e654eda5f11db55e891bb580e31e891e469f3a182633c06954a60aa8cefd85aff8156aee406e4137077f38509c96f608337e2a45d5084c589a839eb881f5b277ecca7ee9986c6085b357a23d07cff492702c8c9d1685cb8fb7d50b7d152199b548da2fd3475dbbce8d2140c73d41cd66816933a75f65664d21f6086f031de4fe5a70632c18fc6fcc5a7f9e09e600b072a6598c1d9ac22707323389a8d6b2143cd4cd00114de82904c18c9cea36bd52daee9a09a3858c16a545199f3e3bfc5392b87cd9ee1aa4587ec81d6dd240985068a0c6b9b5318ccd2a8316d3b08eb2dd0f85cb2b9f9510aa9b0cba8ba4566ff9a9e8950e9ee1d5b223f849979205dcb7c32dc469d8fa8737538574be9a648d1e60e41f7e77b5a02d28f160b97eec5c623d1d009cfdc82a91e8a8f66ef336d9c2fca84887a4b8d790d44b4343e52070f4279f82c48e84fea5ddc1618bf8d4971e189ac45d8cc6aa09a3b6410ed0fd54378ec14182b179fc4070048c9d3a6c022dc3d99bdceec148b83421353f40e909320b250fa00c567728d507700e0510b4daa1f325ce96f44bf77d1f332a721db8f51b358a5e51c7fd623ef3ce1ff89711dcf034902fe948c8eab202091f596c6444d77926e6b302cdddfd223097d9ea83502faf1a863de7c075efead3092db949d104ee633b5fab0021d05152e8161a0a5f40ffd47b66c8d70d2944a4e1867e3128c9d58f0a027750394a251c0d273a27d279bef8db0d9c9408967126a00774c0cb5bf905edc88f2998018108b688a52a722e37542717ec26a4a5f17fa3bba68f2a3e8b6be86bf8b58599f38b54e8e453a99c7b7b062d29f424b27893819c047294b196b3d4842c06cf6617b1498b48eeadefa58049f2d0430155bf22542f9aeeaa3e4ce8995d185c8b46b2a5693963c664ea98127d79aea5bf72e4e7779f1583442ef9bd3b901cac0e6965f8e0e35d02817503af74137581e4df7e157f6cfaff6f86c72712a9ddc8fc0e47d06e9bc85119ca963a37863e0882c32a7c7c5b29b54516f5c8447b490f8c2419ca13e6f329f742f853b802e0b7a2d3d3e6882be60a6fc161fcce9fde0fad4c581296805d69f7ada3e08a2f4fdf3fd855e5718dd08935d25b39e871ef5a7a097e1e6c6d2cbd1a2f9bf0dde18ac71a39c5494a6e86dece599fb5be2386205edf527ca7806811416fa19165aeeed14ff569f7a75613373ad34f9f45aa935d24ffddf39f86d92c608be41df6ee3b695db40b3579d88bd5c741eb4779bf7da2ea60ba450d8cc931a162ca5e9a87aa587254a5fc4b392252130c14407366209c65d0918879e086574abf0777dc04a0bdad365966a0011d87acc4280b3e57b9aef02f8f835f074018e9045882a7192139920764a58e5003a11fac16af287c1f0d6d0e38eba3885034fe1e676c57be1f71e8742c077630c098177cf66185c4226068a96e8b64bef8f07d7f81adf4d115f4deafb710060481e2a397ee0fb2a82649da69a820dd154b9fb182f0dcd4d9b811e53191317328bbfc50c0ea0162cd272743221be3009bfef7e76e588c6f58053d3443b55c375e391a280af63c3694044ae91fcc6fd20b5637361c6b5fc759cc2112d3ca118fdae049c8dfea75bd7103c705618d868ad1d04ad6607d1740b36580b2063d9820ed0651ddfc309714cc16b6c1cdfdae7f72063b767477863ce0a931fcfd236309f708fe7759034135c58fb7c0163f411dec380c506dd9652c181b65a0e42c5665c10cf8b4f3d50051714cccc46d637d514c3038ebfb4e543af61dff41c743b12e1144d1865664a8f89d5807e2c7bef4c64bf3aea8b6143f56e793ae6f11a0e1b472c3c278443f731402d65585d450953490a97878c1c02cc4e3afbea16b5d89ddcf0e63b5209a6086dc20624149317c3020f8f2f475c1d6b4e8d88fa681af6a8940acbf73d91d85b70d189e7abf1a5c7821c3407a2a5d4da5b4f9815a425eceda52d23510d081ee826fad14bd639e1b77a0f45658a8e640f4879a38bcce71c5fc664cb837d9c4c2ebdba479ef90ffbdd33a71de2ccb35387de76fa586f8b8a6379ed86dc116724274e026ac292d83e8e47e9773bd4b7e42619c900f5659c98922d041a7247c90732ba2724715abcbd80695964cab26b681ea91516df9fc823e227917f9b95c403ab15906a25284e1471c7adee8920fbfe06770c14f093733f3f8206d3983cc885724c084d514ff38453403120d18b9ef25a9207f29bc9727451f9bec1a838949eb2058f722f643416833515200b96a2bf7b87f57cec5e2c1ef4e10783a90e5886c0b9a2ab4404621d1e0c5e424ca488d705304a5d11692ff10f39936a71aba390aa7474e1e7f47c67744eb4356f65696a96cfa14a97e45e846309e9f0450c7004d5e6b2bb9b3c59dd3bbf5df08288818c0f9c55dd05063702e71e03c9d60964ae1820558d020830a664a1aa99271ec6d46e70dfa9781399d14aaa1c6d772752f65723e216a2e605e523f9473f3a92f304daa1e2f10e78e91457f167bdeb2be15c386f9dd3930bbc4e923850ce3d49c577a0e7b8f5c0831416607d93ed1c0d3c4a417e010de9e08823bead6943e2b4bb311c983cd737857044665f2dbf38389aff0f713665244b43c82be774bbc450a5da28f82601772378f0ca922d4480112e61d998dece437efcb38d9328610183c688410abea5e4dccc574db467c6741f62fcd8d37d0da2d6482c80c94a029d2822c5232535906511182b566e46a7874c8a55443f46e09dc36e1d59cd3cc35f61278907f430eb3fb2097a31306c637a5805495abc4f4c71245a368b3def961e1c70304a88530635e83bf276ae2024b5b3268b52c826a5710fe16f087ac69b3d44cccc8ab98595943156a7a86c8188ca5e5716c47b8d42c2868aa0103e2e10755b06450ec7e56e79ea9e11dc25c078df8a8b071f92faa292590012329d13794daf84249a2b553a462ea27ed1311122f8cd977d19943e92d9956c64ace13e67891b830042542a50e981f9ba6d3ad6862d514609bf21e3e5445f343c688b40b15e001d1588a7b3a92dc8348d196b5b7d79f561123bd130279dc9ab4fcb3493e597ad7528919e915a59a840eb600cf0818eb7d36ae55f9066f015f027e20799f081573ba2a8532740d11a7c6ad0bddb0dfc22b90db046a7173ba223a01cff8ee832f828e938eeb6629be25684ce8ef0fe82c0535bba2380c3c1f3736d41cc56b14df69cb04cd97737d17eb813d2f32dd5bdd57942aa90436e54a9191c25d8d27bbabcd6d2ec873ffbf67bf16b79d3e3f57d026fc1e0fb2850a14355585cfe67899b3991466bb68c1fc723c10b205f50323dfa86132e5955cbb183b54c582d2117d98551a05c3bf91feedf69411f9bad53c348c51b5fc0c7896b4d76701a0356b910b3958f6867896dec68a5483de32abeaf4630b43c6b05f49caed7bb4b308fb72399905aa478ce1a1338dc1e6e6fb80d12f1386d9904f4c39ad36686006aa25a01617edcb598794ac15dbaea2f12eb809560c1ba4bb382db68ae2bea91cc28283771c6c81ed4f86a42d9c7549466f571de7f2c6faea2b702608ad8308175ac2ed4de24e3893e612c8566cdb4fb99423206dfd303f83212df12df15004d1a3ac04be53fc92c96f592942754092ea2e9576a0c349c1c1481e341b16ad2bc4525ef4029dcf9b444a3e9283ba4ea0ca4196e3b396afd4391ecf221286c56fa6da07f6411c48dcd6ca9b37d9d2c5c59ec6502de29cc5a661806f4cfe0dfb4197b21b7ddada80de407ad6106181c61734136e75de6bc718eadd425685eb22d77234e1f5914ee5acac9d607f0325726818d2289e2c87bc1a368993af2c0b3909349c8cb96d5ba613cfaf9adab44551a4671a0d94ca426f539525e3314e58cc570bf7fbd3ae20c29a10fb1fa1ab3e52a5a2e475c1e3ac558ddca62ca40689f1941ee64a02478a17387ec47e8ea1c249a84f4f727fbc9534a7903e213e25cc489f138c49d6edff297116dc5d5927c9bf3e7f3b1fee180b5062762ee25fac08b3cb2a88e7e0ec36de7674e757f4f33eef5d38a6490ef61c354e86a143566cb41b09ccaebba22304690d50cf0d2b2dc943d750ac86e631209e005943c16907ca4ced6a6ff3c5e481e8a2e97b3177c48160b89989615f325abf4f1387b0de0cbbc0225d76eaa1d70d2b2a8a175592300fb0856101eed9673f7c0cc5d771613970ef203620f4b82577292419673e897ea31cbab1c721825bef367fe80490208c6c0931359f10ce9b6daa3e68ead12946262396bda0414c453e71621438d2c120b92427038f60aa74a53fa2e0bba59efabad83345ac8516cae55c2aeceb4c2aea7afadc86356eb5dda22c1e7970d6097bbe3feba034d934e985eb9a48b2109fab92b314d978e4c68f6d08796479f40821152dcf9bb7c7f5ad0db8c81dfbed7509eb04136c3c62914696a12e311c592572564f856e7629445a3cd773c91f857855d52688a3045ec7e53c2d0c4ecf4a4c4f8ccb9024017860e3e8e15f8934b4a93fa8c4a96bf081ca684d285f254ff4fb3bb337162d26aa5fbd7372fa01a0839a3d052332f15e7412c56651d9e91b897c124af94bb8803319d71e3bbcd711051de0ba36249ce892b2ac30caf7248076e5c67f18cc976942149fa8f7151196229be224b2a8ff32988271855dcb8a892c89b694428980de8a6c95609268ec4c03d6a10bd46943fc940433bdd67886219d1578aa9587e7c1d3710558cf252d8900b923dca7fc215c1ba006c3a98eddc5ba46240b374a1b6cf8a7129cddda826707388fea06e0642652f399325f49f0f4613e4c7e032c28e55e7c339386ad82c2abaaa007c2b19ba7b8516db3011e5340fca5666c7add659d2910af25349c51dbd6d322f1faa3be927b1057df640527af940c4362fd46d6d2452eaea02dce8e89ee925657234565acdbc236e032be56012b422204930f184d1f3c78251bed095b66014b1d40c56efe8816c78a3dc185ce5ddae8490c1093c9c4e6596d7f0fcd03045c430479047c1b849409e7677195f84d1041ccb821f7472db7edcb0509e1b6a1a7e138239c69230add20bd19f2f2b2069dcf8a07ea63bd85265b391b819d9bd55c4eb4aad4d587395802c6f5a5ad6e2a044500aadf6d59908a302aef926d9e0bce28c10f1c52087359d79fbe6cfd4cda070eff0e796650616f5f886a3160243b5bb0655ccf21e241e6aae9234f024f8f0923852672880b096ba468d194fc68853ab6b9157b74b5b4c528612b9cb8365d25fb5008ca963c8c1a09d953777e07d46b870456b6c8e3960933e75882de6485547024dadcfbe6ad0b9ec94f9df90b59e72276ec2a89576a2b822ef65d2a1e08a6e32ebe0a4c6b6082e0cd0014b1de9ac9e7b83874903b41436f33f15e31f592c0cd53e05ca364b35443975d8ef55ed84d04df5469823a81dc2bf64b681ca50df1f543c109ee2ed5d89c43d03067e2b949c802820a3e4f41e9c597f341a7d1c723085c0b144b84e1089000e2d2405c430421bfaaae8338f5ab49a7be6829df9d0405478b484bc7f916b0914342c2d039ed86690e2d55316e921e88f97723a582a0ec809be9bf47627e1af6723da952eb513afa1a27c4c44576aa12e50293a12255a72d54037797d87a4c6c0f008ea349e5034207ba4d9a0d79d243894eb4f30866ee8a39fee985a686e0db3a7327a91eba588bbc45767d59bbda81f8a8738d16ac024142fae4ea6c9612fe0b1ac0de951e19799d42478ac8dcc787abe05854a43320e2b2bb67fefd6553f33c87712322d7d2276efc313da859d134766790d6d832c398ff764d6db617a28d07e1b58e8a4f8b073cf331aa87e2cb01aaee4e4bef5f47791e08f0b118735059a7f453f2fb9679eb6bdf1d7e380a4f4d67bd44f20a368257beacb6a8e420aa2c01f080b133e124680ed7885a0ff0619b140a7a98320e4e4b5b8f62f292441eec41a6e9a41940fe57c518444a14e131162879c9ba27e250adf8c81c61c2a4bb888cc1f6e1e0363e91e035d761bd104b4ac64860663a4654938cfd53fb8513c5270393eca75b08d2b985e9a6bd06b71d9433dc9b5f531d099356026c05ab20a84fb7b6fc4d84d8a45df89f62a3198d70d8ac9d0452b2d91df5ba7b68d18ae429f3dba08f3aa8d00f8563578fe01380b00f08366a601c24cce7aa5dca2b49829a21b65cce9156789e41dd735ef99f4fa1f149eefb32f9e94c9987aac5fe442c708fc0c152e56d8a51f56cc44009aad093a36dcb44b092fb98b68a52bd9fc778d821003cad0c3f55770495b78aa2ca7f605cf5b77c39f1d12f1e36033445c00c081dfabba904a9cceaa3616249cc5876ebe660eab27f1f51864018d8ba41f3411a324c168c739848ad475a4637fb5464fac78f8496bb0a9402bf7ec4c5342312bd9922b2550df3826b7648cb480cbe21ea763fc3d48bdc3ce9963c308e037d8e4660dd95433e94ffb5b017a974aa246f217afe19f241b7f001ee7692d8e1e99b648cb8c7c3ed9a7106094c03db9298217213883bad9928f1eaa7d58e44d6df4e06bd521f1db4324df63c33c7ab8a8ac00add8d3ab1940594189f142391e51d0cf169324e000e3c93ec20dfa637f135dc63967f44268ad5655a37ff9ad9811b4373ed81c4899ff09f8319209caf2be0d10b36c8403e5305bd3d6aca075ea511f3ac2d68c2d91693ae81a12586e9e3b5075ea5f5c9c6b8917459f6703c774fc7620165776d7708505d46e1577cec9a6935963895b7637907fdb5f1b29abd952803e59ae9cd3761d402f759492f425df8d28d0db700016b99f22284ac81b3b3234ed0fd2d626501e7bf552e11f71bd43e0e38964c4c0801cc7616cc4c1a093c49bcda61bf7713a25be6bc17c299b22fb12b8a28c5c85b6b9cc88cf605921252e9c815c85a47ccee784679573b245da23c0f9e982ad417aed7f023d8c05251988f239d44b108598df12022cd8de8efb8dd824731697e0af87fd8fc3d2c9c3252526cc41230d9a70583c630d02fcf239109c795c02728525d4ab6d63339d605877f4990e1d657a6a9ca9fa62bc17d6421f59b1b8f2842f00aa7e99ba608a8b02e7c7710f9d2823b25a7a5d5c7e3eb0defdddaf87ebdb8d2f9fe01239041eb43ab99491020a0fcb60da7ac902c7cb58e43b8ed6075c07c1f2281ccd6bd074c2b733ffb73678d45b779b94adb93d7f7750e28cfbd20abe5e8d71691369367e72f4718b04353698582d1d612a091d3fa53da3f12a24aca13312dbe46e1612cdeff3d51d3ef48549dc425655e22a5a3bbf4b1c843ecaa6277c8e648ec2cf88726a0f98bd293e0c6add597bcd79aee9cf57a9758fe39d8727bb3ba4d807d091a25c0ae47584f3ab48e1c05157d0712f8b424e23d5067910371dd29c683b10e948e9c776f1e1dc0e0518a91001a30a0c80d5895492360786b138bbd2bc0169a9aa884989837cc8e6fc4ccc946851405def2851a4dc11fd7fdcf455086ea84a97ebe0dd467f260ecad51da8b5de3f149a7b5defe8aaa1822553dc25bd85d754c3017b04e2ec06687511a0fccf4242ad872e1d2078545ff97a78ae5440bdf36c0eb481f11cfc843f51d30d664f69727ef530e246e036a224e7277c54d32b2f7b01e61b74f24deaff65437d12fe3c7ce57241c1a6e458f0effb72d7a697363b256831fc2ee0aa11dca8b0b6d6e08d2cce5c44766d8cb1890a7174d82b1e2dcd9ac2d31df0e0d928b6f062ae2e693ed2a6ba8f20210304fb615fa5b12de22951a5e6b94ff2521760b85f31a65d863689720572f26b94fc2f4d78a88567df6eb6e0bec6b76d72ca35660bbe17dfe2502cacf6358b5debea86cc2f4c5aa8d650d3ef919d8ec24557e1b65cede2c4798d08552238dae89bc7cb494f08b7121d7dac0ab159ed6605a433f9d176084f9c364bef6960086b9c647e121485381e9feb4c77636059e4e07e835ee0a25d9610225a4b5c403575207408e4c65cc6ea6eb43dd319c76a80e7d639a3aed75a596cd49b9ea4d3e85e85ecb115876601f5503c48eed6937fd63e2d4b0f1c2a7762911e238cb96d2c5624bed1c78a3ac4d313df2ee46f9ce4bf0954851e4e41f193531b1e67937131b0c0a7daf115dcb5c1cf9de10af1edbe905afd94dc63c31beeaaa00796dee01393f8f0b977f3a8e83fd8e2131a705d5c6d53ca8542605b93221e291ab46dd3fed7c7e500ee4651aad014965b0127176dcf6471e08cea59f0dfc72465a28fdce6f8112f8632c20a7b7ef6f28ded4a0fb458649e90b8852414b0341de418011a289d345425c5b4da2f77ea5bf2cc2395f242edca700b212550ac5051c429876ccd5a8834b1ccbc6b50ca2774b33b063a6df9eb7e48149626c4edaf85b8474012f4903a6ce4a0379004f256fab66decc9637e52dc53512b5831f382751fccb0f4016771753cfe8a14b0609821016369acd263a9ae3f05dc3ac447b65cc1f914dc0d8bb724deab16666b6c6b329c956de5c4ab6bc4d0c646ad24b2c0f4d43d399c59529c88c8673cc77286558ff2e3371c37a2c5251f7a592bf350fa1a3d05a71baa86df1275a22718567fd05683199635719980e44d27932a3cd255cb535cf45ab36d9e09e24d3a22e2fb946097d91f052dc6e717346372ff0fa7cb590ac1a0d8c45bc1de6731c4110b1be8ca7e52b99f38271b99da0074f6607ee9ef9010fd2a60be785f595e38e59f0d88722543c2a410819b5168c96dd9785c11906f518b253c600a112447d436b4a82de12d7e2dd9fee34647955e482d664b7366d76e692c97aff602eaa50bea40c75b5d3e9eb93f7570f0d75112872cca092b46852185c73a8f3f121b56b6d1042bc67ff06ea6bb9c874bbf725ab6de1580863f05201ab48a0055f7616596423e66cb4319d323334fa6b56352090fd1dff001c45939a280a875fe65f45c0d0c4b2b0e099f4b6bc73d1791c161b7de5fa9c8cede97c837b9caeb318d404a0fbc8606e0d29fdb9b7819dac810aeea4317feb87066561d526812a05f59162871818b1af1db96453a22cdb7786e82dc98627fa0dbe41137abf012ee78436fa3d9a478aa00577c71a719380a13262d4e9d177d5efdb8bb952abf55346068a791bfe7793a839c08ff879ade277085d31db1db1b2cf93d72c35447c91318e110fb0d2d030ee339d60dc7f8107100aa40e47ccb8fe33160cc71ef38802e6c1e2c7984b41ded5ba4bb49523acc7ec3dba1a2956e5a3425fc4670d0007f6f25abd680592326089adfe0dc4f8a56a2a294dd519e4a17a68f141125944f0a041610236d81120cf81e47a5e3398c64096230b49ef19fd8d894d7065a68ed1855224cf540f5e3689955686db3d507cebe413554212dabbfd0517d4a6920605708a0b483af84261c7436388f63553c3f261c73ff6d1400f318d3203dda378b01ecd9b3c367eab7dc75da75342305af508a0665de0e1ff420859252bf9dbd6cd8177e6ffdd7864e215e3de7ef847890c1186be03161d8c63cfb02e9da888a6032bfffb14adce3bcc4cdcc632a22522cde4d98704008347c1e6750a829199212aea8b78689ec803e9291528302b708305fb3d790d9d852c8cc5e25a114e9c7e4a48224a6b0506a3ec08233fda0969ac9e64f75ed9495a50ef71e92c0104db383a12bb6fc3bc8b6c5275081c664c96eb83e33a112e9c09c7a972b747790449bf8e9494a910e56e6653422637dd339aee8b01114d8f9083f7f4b63a0552ff5998b0b4d40176a411326421a21c7a807095dd1dca12b1cb2ff44cd45bdc67266eb2782e0d26768eec38cb4d303cad38ff48e388e0ee3cf7a0fbd43efd03bf4827a7f6c9934f0cc92c9cc9769e6cb24f36792f933cddc7f66eeff676c9a919b6c11cc8550f2a21d4895e61df66a3ba1515a9b6e620d44a50dbb44ae20739ff075ecf4434a12806ad338e006176d273c550a66688cd096c21a6cac494b52f0a37a7e47c99ec5b76d7be04ac9a2dd0b2a897376f750305706815a08bbf31c11cb5f8afbcf72898a93e1ed2bbcec2962d5e6fa22258bde9aa4238ddc4562983ec8cbe2ab7a50339d8184d09137ce67076e913f45a31124b10357113095b7c460a5a1575837e348ef9362ab5e5bc83fd09764f2017f33da2f1d17d9e8e58dc669d09b3ebeca276e97502ae6f085bedab9306ea2ecd4cb0627552ff71d8c86bc30d04d618ea47e665cb8c4d0677a0d8c07ae96c9eba995e84ebdcd57f90440b2a4b4c54729b050874b6236c8c290df153b8790e1150f8cb938eb885de75e8a4c3423882e5a87df0a024b35abeeefe0e0aac5e8bacc29f5dcdea8f99c959c6e55a7ff2492a352313e5dc314debd485441c2219c3398cb27d53c78c9db093b0e36a21de32cd2115c17709bed8ce9b14b1ecb8684cf29533bbf901775ba5062a811a81cc054392590bf3bc6ef06f56794f9a46ad035084706e3db436e9a4319b11ff3ce3e3a0de45fb45c62b6169c89a2b711a79c5b3a6c0b8ee02ccdd5484df38ee090712f8390a033b5c622ecfa1f5e89dea9b40b03f4508bd37f8fd9e0486b3bc6c0dc4609cb3f17130d56767612190f9dc5ad740da851012212d08613f2239380dad0d55e458944a3ea4b5e161a245f71d83cd5f223d382535dff81644a11c117da4e6916953fec4ccc8c292294e93b51ba166412075fb6293df585c753c9f4fae18510c1041c0155614e5cca6ea673e364c2b4671fe8b3749be23e6ec339f9b579198b8c9e348b8caf8020686676803a0f73252ba23e14db12473d53976623953ae5c8dd18aa89d1614d8a5d39b9f4ef0c9b5e1896e04a58d25df73f5f25619dd0dff3d69cbb4b83647bde837f5195514b9dd42486028ac8807cd005e9cb1e4ad9f2498317a2acbf14e63563ff4d31521e6a2fa7c0b3836f2fd60624e6162954124523a3e9a97bf856df747079e00595fa88f14679a16462c960a1684c1a25634064347ba7aeb7f2156ebc0b4f4e9c425548c28c6e853ab0363fe23042d6f540637f2f17ac90fbd675efd5c09a926490f909499d45ebf4fbe817f53e63c638d1527cf04142c442e1d5dd5c5e0cb9b77274739b9827fa6520b438693ff2fc6a441f64821bb1ed444ace94a932ebe81e0e63897d2d2f91969280263ea207847af03adf85121c4075de74d60866ae467d9cb194b8307ebb20c1bbaf0b62950f40ce8070f375d62832f16f01c709ef8d29bfc3f8efee9affc1b9feb4a4ef323ac05b2771fddeb61f3d40d264453b64c5e27d4679f0100a8b0a38d0819f27c471a03d819abe7d2f0d86523d644b858b1b61eba899ab6506ce2678a4cae056ef3c7adbdfa72bc39a671dd63ed376468b63ab2653388d19794b6928bc4ce7c55cb3503d67c26b0b06593705d86254eac1a8ce892c8a56363a71ed4137d823230a13e64e13e015753f80d64de27f8717648e7742e9c046f426c1e477778c6d40e691eb70bc88eeb7168e44123f74ca238791eae40dc3ccd88691146d0864e57241847d4f5967936aae19202c752594886d2c501f43ab92a0336cf6e3a1cb2b72c381c650c12fcb65a5ea899bc0d2a7b1c3b41465a57908a4f06071d0677499a55e59f0a66b3ca0e37cf13136a9afc6c1805cba610ff10bf1e50b29c9386b4b11a5bb8e92260cd2b1defec783893e7fa59af4d325c1523dad75b4193461c500afff8238c60d76d52e93a6e34d94341e41b7fbd1c84628dde500c969e682ce428c99c3d4ac674375eee73e780eda124ee6b1f246a0ab6f1456f5ae075ca7de0a27717d3ff46b35a3c8b922bb866d79fbb0424796044b2586800f5d2bec6b3e7ab859eb46881cb6574470798c0a1dc616247644b597f14a1c3fb68a20755e57689360a3ae732742e48789d8cab27fea48c99c0c565b655c3d7e92be7bda3c12fdf1af302bd20cf779de2fe369399e47ef46aa89dd98902d0ce6282c585e7e81557218371abaeb038c3d8c841131acea719a819498155cd740795642c4a33fdeca6d3dcf4220639846eca18a214d2e31a5c6a34f5130529d19b1481481ca323c68e8f8b3eea3b05487f25065da5cdd84d8e873320db517a35eaa3337ec53bbfa3a7802360d653714e3fa721dc97595b7de1dc97feebf2c02e842b776e2ea9581b72076f87add3671e00f2bd6af8c348c2b5be1dd64a4de0b23ebc7c494636cd49148fde0cbc0ec11db419166ec43fd903fb8f3a578ba0941886ad9ad7eabdc4a92d63d1aea547d02d9796c44649f0b5fbb9758483fb4c2f043b12446cfc065c1f43071455c7e6d434aa6578a4f2ca618b096aa2f86f5d3f068336bcd5f8ce8651e28c89dbe147f0b1c1fb0faa003fe873734a027ee86cf873b5375245b9f42ee790279ad0bc7e152d0848fd3669bafdedee9c3f2a5cdb838aa0c357ba787dda554ec8e20342cd4fa19608a4864b2e949c3aab9ab0ad617d71bef6c5554ccfc03b38cb69a2bf7d605d95c46a4558fe6510d44db28a8cca0f5fc6f21f4099b5d38ed84935a74cf009b3c49a35bc91247cfed0c9cc4648f7d29658900fb36ef846fecd46f178bb95a64834e6d84f7a5785cf741263c13a016ebf49afbc90d0dd586643590c795190e2212707c785fa417144dbc9fa510174845d1c5eff259fca49f7eb7ac3bb774ee8357155dc35f067ae31feb51fda0f6363ef2cd922d016addceb1185d4bc138e92dc99a2f25a9f2cc04e990096a15317655c0cb7b4d8a167ccabd598e243f306d66161fd4baed11d47031cd6b4634342c9bca1150953ce702dadd083f115e809f84a6fba02c8ada3683493909a79b4209da91bb12cb441aaf14c366f8e2f6628b81b1b4e44a824311a7b87722323c723be5d874e13ba47a70e5568dabba48c81f4e67e3b4290e9461b809e9c4cb980f484757ddf454efa86a97d96f379967911e6a904115266c28da27fd471afc2941ecbf440f89975ed38eeb81a43f6874d52b63973a19f8dc0709e13468c819bc46c7ae45906c49dc4a8cbfad2a663395a0f71abd4c3a289c239d1f4643c7c28d6b34be4df8df18aa7d63b358c931328a4e338bbaa99434ea05d29db25853a69c5b1160b9c03ffebfa484290312d747c932ed129f6b39e83b9661015c742266ebfa61fab639cc4ddcc80ba8eec34db93c07d99e58388ac81036970324c22e31e20fc2dedbee00a7d7ca00b7ce7105482e01eeea6ec60ff3ce5883f1311871254f3a91304eb5ffb621363b9ac55af773cb59e14ef54ec0ee82927ba1df5c242cd7453012b03a9b60b915e36ec319ec83f65caea46d7001156c6c7f86eeb271653544c43658bdbdcae623c02faf8c788a1051b7ee0c30a3e21ee2cd1465be31d491c68d8a30a6f62196347be4acb356d8ecae73967136c1b258d275a01f954508ad58c5cd741a6b1c896c1334468e7dbcfaef757c3ea314a81c818026a084d1a2b76b9f5e2346f3ff11911788f83c71b98e59db85c3c3b62da6742d72f13fc4f9c1339ec745540f16cea6416a2ab45f37ceb971a607f6e22f87a18c1479f2063d1cd8c63ab7c1e0bf98e68b59356f42c5c4b4ba4bc41722cee69a4c66756f4f2df6c915c6c24c50472385d13515660c3eee88fb162039eec0445741c423ac616b0364fb942374ee7b866fa7edc4ad31b91a25e51e0e8b08dd36f456e807a9dd7ca0ca3f23398f14b4e979eecbec72d73ecbe3fc5157abb1c3ab514ed4b8ecd4b708e62bd4020028976ef425fbabdd8d2bee63b36b319d4437753a952b684e0f129c09acb1238e9ccfcfa2acb575d4be3d78bfda28c25d408a0deef4bd3491ef476c1a6a70b4cdb1ef5f941c3e6301ec95243eee3122c0e5b9007d86d503cdf4e693b2555e9b6e40d1b3cbd3f0291b402a482fcfb0a8a2d421f213b3e5e436bedce40cb1afed6cebde59e30803c84d35a08f1c70b3817d147de168089c0b8bc02184271d990c580f781c0a8f41580462272a13dbc623435f9eec665a7814502c0809bf0ab29f9607af6be7cecb9496506ef3101064e46b0c527f06c4d86583732b0649523b172ab2069f6e696bfc3de24b0ab2627eb67aae9d8f4462653dc943974154f7fc646c836efcefd9413a7d655195930de3604fab02a2eca1bfc45c9a6e48c97b8b8de289525c2326e8c3d0a483e5b15487f2da2e2b99f62fa752f7b6ad3e4bf3bb4e63346a2b4d4e6ac773a15352b803d9196f72332a1ea9cd4a98b4b26ecc56ec998b3a9b1a79f79ed1cb9a4e2ac6f780b41e6cabe870dc0ace0ef71358078a58dafe7fd8e851159de221c0ff02fcd6f65b85c10345c18d30970478d9d55faab1bdd569d1855077d7e94a7f37550ebe3fac23afbcb63177455bb56f57022dc148d2607ab64ee116bd45857f17ca94d08bfa27572e0433aa8704d99813ce07bb681f02ec350d5c254d01ec989d9f095dd7f8821a245421c82448738a7f10aa5d374d1a081c1d13f48686212aae66a767fb83165f278258ac6782813eb18980138ca3f0e2fe3bfd43b997c21bde9369bd53ac8dcad7c18498a9d7c024ad5d760c59d164a3d07a6df33df891b12b24d1d52716ffe3909057a7e734a62e1326268c38d96a4b162d16e9078b4298376f13819471d421b8ea9283ae96923966db1ca226e0353d4f4100ef9eb907a65f8ded0a353de0c157b105e248c26dd818e2196e05192cfb309ea58e7a8098333f93ca9eeb392543cd215f8c12a49619461d83b4e29c9194dc41a8e47622d045b67bb7d5d5d5cbf425cfd2d55c03fe607470321c19ddd21c11b0783bc38316c0f7bc11fd6f7307b671d04cf2b5a3f517079d28c6eff84742439c629f4f42e575cfb7a267fc2f9d16ad903029205aa06ee2fcce0f768a2017cede35e944416351e2e9e14850510cb473a1ba1619015404daccdce24a3404bdd2441ac8f5e1c0b8c1846bdecd682356531b72ea24a6c20430f28301060834d79ce098f1a150e5ae2c28c7f819db1db5c1e555f6c67fa7da3922e45c10b1b1d52ec700be3a4fc6503ec9d2b96814281ca4c4c79dbb88910613f324593d7f365447885a51687e2462ba4dac516d646d188d0936ae12cb8453c176228d239bdf152c223ca54a87231aec3e7311114d7bb0ebd6f501fb61afa1e52fa1d322312112f1b904b1d732bbaf77b8137d95953dbbf4e844e8e1d05b1cd34a297557a48692a855236edfd75eae9ef9bd8af414c1eb1d2e6f79aebaa6ac7144728eeb8f84a4deab89f4e76a21c52e29a972d9d9ea7852891570facd3fc33bf0ff28fdde5f61d50788c2b1e429e95b3efa2cbe1ea98f2ff692d82fb299bc08cfbe1ef2301da15f3d241a156945c676a8a71bf1436c0b090d143717b627186934b995e6ffdf6db86937a79a5a5557eb5ebb455e9930aa2e76b8050814803d349df5734957249448f12109110a88958a5e4dc5677525ec0340ee75e7a210c4d9a277efa725f07f6b70c0a0323354849193f85dfa39f930e3947395ea7fa042a3f97050730181d00631a753d3b26d73a4dc066f0d78ff9a2701ba36cffd7edd3cc50b80f3ec558fbb1dd2811320d384425b12ede53ad42a6b11d3bfc33d1ab589e65a34cf365626df5c5083158b802980305f731266b5292ac8989f06be43910f1a40978e2e0b28996e39be5ac602d55bf0c12f754e346881e680b63e528f31e836ba016af1e23e482b849c3c39993a9b039961bc675483184b5525e3f0f10d3cedf7e3cbc09b2fc26500d9050061597f73ca553711667ec9df5c4abb519c5605e0d896061743e0d6c0b9eceb8cf52fa833e35a9d52363425e30eaad62f5a81e1bebfffb8bc648e144302a60d4553a81124e7e003b8f63d0430a8472c86279d8eea8fe9b80fb00567e153ad6e8a6b623b85218340e8033802e766a87b53d0a52001133d4350eeb91d3041efc1d4dab7f09427605545f68bb48238783da2a7c0ed752cea01f94d558b47dc51010215a158c934b95359ec1da07c18ea002c8fad2903562202a82a78ac6579d9f54007b9fb82d6161753b4a70ce162a1142b0238385ae957f6bc0482f9a72efac0b7268b82e6f2c7aa019a847c3c5e21d3656a5e82853c420f7ec58b14f3f7f254650b30721da0f4c70b58674fad814a98a089ba7372f575ee77cacb618e1795a19bdf537a8ffd6ccc047da690167f841161890ae8a44232d767eccf538d8949e253ac26d8f2dd03712e62be88a117667401975bc29e03e5cab2fb9f42c5eac607723acfc644426ea09ed67a71e505457ada4cc4ec315c2fa880b5bef5a18cceb33d5197204ccd50a819d2ad5a746c1dd1c30cfa2cf66b34864836cf48b303564521a8be50091a0b15a198bb237118ba199e230b6d1056d2a1f2f4aa5b3940b68d18be643cc5cce552a6afef9a9e5c06f1f6fba97d93323b567e6a44058c8738839748d0fbcf338fa85c0d378cddf31b9093e07e5c43a46f830138f8398a93dfbfdcf49fd136726b1271884f5ca13983db6815313e6de49928608ab23967558ee2129914e037b7f42202b8ffa03b72b0abb3ca9755d177da097706c6631143f6e00dd82d7f4e3bb633c7c824269e0b2ded6f4d46f521b828ed3b0a10ac31ad26aba789743e9f2b8174b2299c3992b2225acba2424e3ff5d79a4d9f8590992911425a2c7b6c7df8f050bdab7c233a5a79f212e8c4da866cad637e6c341276750725f4a38fb80b9c3dbca2c0769467c036204c9d326167a3f354e388e29ad847e5fddb338c5d7bc9473873aad5aa1b2a1b6f49ab723600fbf0a8944ea1cda3de29f21acc4c109667fda338deb46a8f885b5fe6de90f02d9f1c5c44414807618fba68ff3da1603a0b025360558aa0566a9d03e0241b0a993f904dcc3aaca145670a03ac42ba5e70e423eae93940156393d5e3f4459101d1303464f9d28d05704fb4d0bcfa4b95ee90cd50186ad0fba0a767e04b4a4da214997200829ff7758c93e28fd9b71518a4a64f98104dc21dbd887b6c04565647dc5a6cad0b6587ce117a1e105edbd1aaeeb7ff091ba02bbd4e11040a5505bbd319235ff5056ed74e2b4543ca1ad7f9b94578cfdc8163b8f8322833971a56118d22c29ae796d354167a9a2263632a607b367de66324730deb3cb0af01316909f0dc7fe9c8c2ce78dd4de75370b392469acd17acfa462f5b887e4dedd24ce787e35c50bd6ca51d303836e5a39d9f470897ea19998b9e6b8a1d320807038f65598f45e329c3e2b719b14c62545d7072be81bec79f232631b5d7944d7699ce7d12fa6f93676e5e609a9c0926d37f638d0b891e3ff884fc0b72fb70e4a5865db8f8c3abbf238cb0e0bff6e5b84e0449c957a484ad3899e419558cf162ea76da74de927e6f4aec994bffabb1c5d43a249c91c19acd7071defaa3b45df9e6e6a4e26084cc8331cfeefe06dd7c8bc4f5f75c443350d7c5a2b5ca0877c5ba74489583888e5a3289d064bf61fe134444a08990f19d954ad072309ed1a0b6172b28cbea90960a75cc48892cf895ae5548e056a19ebb3d0fd53180e941eb4f3cdf087030de653a930b04551acdb9785d431748f7f62bbfc43adf982a55d51f4ae57cffadbf1249a545db35550f73033248ae6763d7151f8c510ba45daf0921f56e35e7367eff6278f0a80b59b5be4f1f1cffdcab5bb39d15e9a34110b884a978305bd80a4889fcbed67303e6f4d4b51a04ae15d7a901252e429d4f4830b39675773bb85d9a29ba0b9d79240c4b2590bf6d1d12b3fc4394f94d1f29eb47fb2bcfde00256f75da6f82d876d51c7713ad6357cf4815037f6bdf78e476893f076eb60a1eec66c833de97c0096a1f456633100555a789f17bb38e7ecf0b3cce2b480004faf23a18283d3a19b8ccf4ffd4011f0b9919038f618f1b1859b78ec6db4a3075fa0d9f84da750aaee3498584cecdc3da5fd6e6df52a7866630a4137f28ecb4c136f3885462acdd0a517fa3f30126a6dbbc28c3fc7f92b375dfe3c5bd0525d285656012aab798d00050236d476f571d5a6a2f74e6dbb37606a936dec68c87ebde78bc015d89bc9cd1e0f496319002c3a76d5f56250cc23b9514fe225747739a0e76cb628d71daf5019f1b1dad99df682e04b0819f3cdeb5217a8ebdb51e302b8a78b6cf1ba8f7a5523fdb276d45db631fa941af7e49bfe31e74b25501dd8045eeb901c84c59d106fdef78616d8774ee0623aa4e69a78702b903d9dbf00dacee17d244dc22c90102f61a8715722bcfcd64e3303956b50b4ddc8f756c0a4511d8cb206a331dabc82d6810e81a7c2d75ccd6f51414050fab644dca41fc50a1d7be7d33f4b4ceefa882b21cb6e6a62268acb2082f7c3cd5c6de7357fce74acf07bff79fd8f9d88e267ca3257ae06493afd7ab8bb5238422dc4d55fb64791f547f17407fb1e190703abcab819f12da3ef1a8924295763fb08432011bba42a983be6518bf266ba7ed2ac55b443c968161301b160c93d1a962bc84ca4ad98b7e3031320f84979586cdef9546808df05a5096f8e3072fa8a7ec53697488bb638c70f823ab7cf7c89742f65941cfcf07cb8d657cae622e744e1bbe16930d0f732e2a7ef26fda0acc668146e0d6bd5c4c7365772be7e850f8b63fe7c8e627d5c43bd1230b471f3337f97200b6fa4ef239a237762276867eb01fd04ffada2ed19acbffd6275892875e3ee87d74d826cc31656b84d83b53f1037135d33eb28849feda35ba86a3c05ec1899ae20b2e5cc6a6e9636a11f22bcd2a0135482130d9fa2e648b6a93e4e7b0d0eea204db28c432cdd11d0370eec50ad6799ed83241719aa8b2adb4e29d861dcf041b814a92fdb91885bc316c679a5f4271cf1dab3456085e95e8add95d3224cb689744b1cfd8c6ae9a3784d400c199ffc125a3863ea659e705aea822ccf914a6d305daa9d613077b9f17128c1f277771c86e5d41c526e0bf07d8312906ae0d3c8245537dc61f1c9c5972d9e66d5ef964537b88580fe445ef641b497371b6c589f5ce2b33c3c1b7bea9f8a136b17f231763c4cc5b433a00ac7f01e40dd14d78c5838c293941d2fcb98b69b6691bc46d9c628ff7047626bf472019a63ed4611ddfc4d94c7a2045cb43688375f548fcb9c86dc44e5a4edf7f058bb7b5c31120ee99d79e58ffe8fcc2e413d035fc9508feb3811f9b33d7c24d07022131fcdd0f3b90af9eea506f2388eec402e02ea5e69318bd8cfe28cd6a7d514e3c93c187302086375b203a430df22b6f139e66bd9620ee056881fdddbf7a01ebee2f9cdeb8c84223d463d46209ad264a44daf757d2eb3496d0ce8a1adaba4aed5ce0d8ad282daec30c28ded196f0c6be9e787f33bd1899d165f6809c71e3f19673b33461bd018524014f79de637ec6f1cd0a1798fe3e25b4bbdc3a08cebd12ebe31ff43ab9f01d64141a6bfc30159470f37a576184ed5e9b65612a799d0a5cc63ff8bf48d035c78226b70ea3a85b2769cd72ff96106e5da42f73abc159c0d6eff79659e7dde1267f6a4555fa22f3b3c562a0a538951d26cfac031a487dc8804f90e370561638b8fce47309d067bec80236ca2aae4b1a02380e3757a31b49057488e4528d6e34788f8caf7116d45ade38bac93039bd484ab10cc6d680cd111138543960feec38e2876e3e20efb3e7d63f4f44bdd269241780e608df3a06b392c81416c45e8f16c9b7c389920fbe9044b5e505172a45884a203f7d812064d191bb20bd78d98ff7615b99817a79457f7fb6ef5f2621b72cfe546aecc8fd2a0b8802e4d110e2a5852d60ef15a64f6443e1882ad3c721d93be1c8f6b400bd47dcc57f27350205aa9f4e689f2b1e33c66ed481f472e033c48860f52a15b145ffcf0027cda9848472a8543c15580c6f912dcdaf977e27a2c2bdc013fd25a7c3eeef874b0e0df4706c0b0cc3be4927dfb7ed3dc25e795eeb0d87bcb7dd620c264ed45c09b8b569d26b38c2d3bbaca1d7506a161fadda2dac7ef8c4d3ae1a2ca1bdeecc1f105b019f3a8b2c380408ce6f4a1f6eab5b290a17375b40bff549713cb6333bb873226759c16c67b98f66e4883b8586f3101e22eeb21401fe13c2cc657a553051ff7c741bb4eb73cd0f5dafcb732d062f0f3f6973a98fa895ddf983f3a726cb1763ed2975d3b58bc83bac937f96032c73f4904b16a395989a036c8ccb44570beac0863828ee35dbb7b83c433d111ac8da7e3eea41d960fc5fd826247bad5fbf241313e643891f4bc9883e3ec309964ccfd12c221bd4dd530ec333e401087392a2eb04ba93a675e25b5ba82bb3dec875b6e3439d146c51f4df859c47092b905cf05cfa474fa598fb163d66e360954adf3147ca1340d3ba412f34ae9e8a0c495fcd31386989b2c35b40e72026b149c04f267473648d39728b49ed54dda17bda716106f9fa949257e824d6558a52bc4f6a8cc987698c1ee9dff02cc9356d5c1f66a37b0a05fe535ed30557a8b9ca304386ca606e887b53b792b7347a26f69407f51ef9fddc6ec8452ac7316762e78ded474849c5e265ecb8890414da9132aa58c3196f24d81d770feae1d8d02d74e368af7783f79409e79a05998f598fad93eec867181601aee4025504ca776eff79489eeba834f590b53b11cf9cf241b8443e351b51eff901dae346d90dec496c1c5bb4201f32090815b61184b510e2bc0e07aa8baa8f0cd222436ff4aff7792c0c96a62ab658dc41d399b804c65a403954aab10025112bc1997534f3c3a3ebe6a3b673949a7237c8981b5872ef00f5f5366c7c6a05e97fae62487531e06d2245ff8d221f8e229052a4ac36c22f4e14a53a917308c31d7076d2a849bd6fd486c1d1fdb574f42748606da2492b4703617d5d9d7653222e525d81b4b5dbaaf812b05121535fd83d4ed0b1a8f11ba3ff22eaf4e93be37faa8d560ecfbff2af973770279f6ad8c2e97f5dd83833141b9b07f22fa657eacb365b94329b73522639d98bda31b514ab174994bf906bb7aa79e0b6e3ba45fc2ba1bc1029255a04ec87d18094e28f2e119d89add3c8df9f3d92e1118470e7049d08ac573d84be47e07d13ce9cfa091755110e434d83a2c61a3637e52ffe9ebd53e6e609760e211eb0c8be42f57f572f795004fe1b75ec11dcb09633377aa77420aa05435aae574c9cddecc08470f22d25e447c25b77e93409723157cdb35239a825ccbeea699e3b7f7c40a4c61b5175f819f99a8ac0b82140b9d4c9508898d3197c54720d8ce097f2f8850d81d28424819c0c3bee386dee91e24acc61b261f91c54566bcbd63f833d0786539dcf4e51c1c6042eaba0fe51681ada03247e61ca2614abf2cd74c2d38cce4dd0b78d162fb40029e033b8b8fd33cd8a7a6816558745c7630baa4c255982dfd20052ea05006cbe74c3d018000ae0597f567679d8665905842f307664a83862b39d6bdd9a51b906f71d9bae9c06650e9b52d688ab8101d9703077632017dc702e737a7c2fa9bf012dba320e73c34b9cba13fbf8078292b2882fee0014b84b0c0a3aa04b88f8cc7e7016b1217798c35c8bff9422c423d703b996d13ab934d74b6816f09d71a168f860ae7114905a98bef343cbd46fdb4b8698e1ad1d76ecd19cd658c7fac99586fe4ccbbc7d1cc36f606878d1be673dcd70a460830cd949b9a5ac9143697cd987659133305b0963c36dda85d726e4c1e5e8dca64044aa1d6da3eb0e0dacca948f6c52322e6704a1c00ff8baa6e9b63a4984a2d5be1468fd26c2aaa6c0b0913e131b02e8c56ff2fff94c5c4236f9bb725b347841fe6d71d97be95d5d9072dac89ae92e68cd1e3602ba9d109dc40cb9667c682f547b026dc8c720f365ba6eaa1d4f5f5d271c5b4d50b3b7a344dafceed8a68783f6fe6e564e04699cb44ad607cf80fd8215125bfe511070919a07111f20e69094c508686104e380c12766c1acc924202d253e7348bd9896425c96deb25343f826e2fa7f666f2ebaa9169759f76d0d7d7b82eddb865257a747fa479cefd8619c7d6d2c4dca9827509832574c11c6ff347384af967c4bd522a2b7a7ff06b081022c51886d3a732a2056550b99d8167256c285a48bfb8ac90ba22b96ea08f87a7b147c4ab2b5db9767ac8e57a88a222e29c0e8bc1a81914b978eaa9cf77148e66b8ca0e8ae671f057a25ca3c01568558d279cbd9602725a354e5338a5999fa3f57abca0900530bf1ecf59efceb7763838286440e02e930ddde321d812fe97969ed38de228dc6865241764afe740ca0b59fc5b1e09c3101e132b80ca66621d3df6982d6f0e364375002fe945ae6f886d98e20da9fa7003795d70efa0ace45606a56846861b6c2ce66868f533875db4a2c8bd99a7db3b7fcc1d1a6ab9269ff4815279f3ba0072ee595d4ae9a7827e22b32f72fa47adc4b21631d7008e853d01bbc338b36e080d7223ca09c40dfa5d6e216db0c230328d215fed59da0f574bb53707b12c769940994210f36cba7e4e16589616956a7388bd840b2db541c54fc5609a9905dca554966d4ef9a931fd400cd2c3bf9a02ff85da6e20cea059f95935fc402cdd6ac7e6bb96d54e3666167c18906f101cd6cbb81d0d647402271378d20de5adc0d20a0b5e918c3b028967fcceda928555850c8c5282d44dd0eaf853786b678ca0a9c15a66ce55ad86763f7f82bfc4dc011795e1393e388f87038880f9fe7e78cdf4ffe5cdf2d16fa2dc27d17fa30e2fee973b7046d11f0d602ecbe8a71516481f6c56bf92653ae50682cedc3b8d001849f17f5923b3aeeb0aa5ec81ace7224bbe204137319e897a429849347ef17ed3320d2d0fba33b2d0f326dcda1d3f80f5e151f6a5687453fc6457a06cf0a716618dda400cda78cc7f0932664756d02a444509ad83d4844adca85b787d7e7aa7b48ee05dc894e163ebef76b82d4a0ec177137d412b7b38b2974d74847c467c431d94f7e9f04f9c47e0b1480df63a3045a8c7560d0d2152b0a820acf4700e8ca884526b51540dc5f9ac21722e5e76d0e50a35e603d66ef6a5507a8d06a077e50051f7fa417fcd527ae91e69ea45f8b85fddd941ec049a597b54932f7eafb6281d472b9802230d47f1a4ead80372f68875e60005bd967062b44f6164fb3d6a201a33594ce037243005533946894678f0969e5223fe7f07147c2e249d58e39671ac56bc553a0a3ba3530e7311afe3e0da38fa4735c118a0ed8ec1a0b8186c4128dd9f26440fbedb1412e976ad51e55915bf4056c9f642c85942c7d1942c38c31175b86adbdb0b3213754ee015089dd53573597e5958cbbc4e60b60647174bd11ce6620fe9f51bac81d193daed36145e3b034930e02771a19a0c4434a088f3338796b25e3cb389a104b07a4c0f3d096f3476bd198407ed08ace09a645f30eee1ac53bfefb3f388f0ae00a54f2008087b95b6e4f176a8edb8c49623293b010196c4ffc4c7ef8cb0e9de83c7d4401b8649992bcc1b89eaf82c86eda14517bf7a5a1585f603f1f4681026c0b3260ce95fb88daf287ccea9a36394acc10b3984dc9a78f789d79355b65121df43a87646e806afb54cb642930e8b1c784c39a12a0ae7c417ab17decbe4cecb019f457a86cb896a5d062685bf112e01da507880620d60b81df79c053ed4e656c4c52e13d0beaccf2f30b44f91f447d9c395370cb1e6b9fa11e27424b0a66c4bc51841b0ff2024eeb093177a01816226662e85699d74c7200469e15d533a23d390754515715f603902cce8265fe4970c33cf8b25ccfc5b95d4b17eb778c355bd07d32b3386786f336b03bc2cecea2609559c0ba38d2d3ff7d79046bfb3c4f10f55844691c49fa4175c57df3b49b4a37d329e8642c52c8c19871c8deba48db52f8caff1b3a06cfc027f72045a13b85db6d1858c6b10cfc59a0d9fe9a8579f81a379d01d214c80a2770fd4185c4f22bfdfb64a709cc6a41cb639f3a91a3b3eddde0b5b0bffd59991fd5d34d1f11099c9aee4e60731b89ce799a1551651d4ae222469eb8459f13495ce90d652342222b78427e4c562488e328c437bffc65053a1bdd01eaaeafda8fc395dca9435cdbc6dbfb17ff391b2e304687ed336aeb09f0af4c5e2682a57ee75b8039f4d6e79b4b0c39bd04df84723a92d37941742e20f8083fcfc77939be849ff1a37c9c3fe14978323e0af9e62225f3f7453fbd7ec25590091ef055fda0d578ea3205482f253112fd07425621905b9f9469d69515e4c868296e41b8166d921850b79d4c2c52e83c34ef3dd3cb62805b93bb6ed5fca37b0deb0a624237804c12f4ee5a31512858a2b6ad958a01e216cb35b8f651ccbee816aacd558589076e8b7bd047ff1a6efcf00c6018220989036e9b7b5259752057dbd60bc5007123a871cb43c930c0e51cc9987810976382315c31511327bb016f2d7d5231406e810f41d52856945da800d159985f85dd069043080ef992a5341be64a51859a1afe21ed41c6b7497e9a367b75be6a725c11df1f2051fbb6f0d4a3fbebc46f633c75232ca0e117f5f6f3cd6b0e1fa9febb37b182a7fdf22068f7ad0f32889b95e06b48f8b7e7f5f6e0b04147a64cf3ebcc227df5b9883feed8960dec068c4e259fb1fda3ef81fc0813a26c188d3e495ce5394f073bd1a5d0822031491d7ea87c15321a4386cc2615e90616194092b82e63057c0104972b7641702a7eff811277b8f74da2449d323336b0400eb7812fadf98654fb63add759ca35937e4a541c6019f14a3ddfd429183759e40b180a75d007f22ae09bb8a638055343712ce5bc244fefe616c2a1ebe3527319e6d320cf73e7858638c678f249136896cf663a1557ce1fa82a06a51c7c252efe7721815d554e5b1982d1d39a66046283757cee56cb045725b49ae4a584dad68791041e4f10115fb5c8775bef0af5159496a1695541b5f645ccb43e93b160bff3215ffbac485e8bb11d028e373af25186707c684a2dff8d00dfc6ce3166905f5940979180a38c98cda9d4147aede7d82b83c89df1ca0be5351596990fb602b657b20416c5f3a016a5ea21ab4cda265738ac357f1244e5755f1bddf75552e858ee1beff11714b2bb98701b80d28c3f3177f346ff4dfb47c6116c3c5f7a87489fd3d3c14dc88bb622998cc6498d1d2b2d1fd7fbfd4c198a7927ae775c6923f2d382787aaabb1816402a697c4c49e303e5e37a742d3000893482f263091e93f55550eac408bd26759f0790ef3094cf7693d1bd143c21245ac802e98f597c9873279655db9565daed00e69973d41c796122965ea717b61249bc4dad0c011d34f4131a1f2b3dfcb4100ebe7a93c60548251a1e286bfc00f9bb130c7ee526080b50251b1d55d2e881f2395d02d45514bec96eacac4c8a64532163501302cae4c68e959edf45b76dfcaa7df1d537765049c30384bf3ac1f42f3683b080efb892c6c74a1a61fee027dd188acb990a08d90f52b6d04f68f048e9f92cbd4c0d85316513ba89e78fd2eb067e03416d9f7d2babf375a8acf181e7990e73f07f298802b0eee048a5fd13f809cc68022a05ae745630cc249e03330468f56fa1ddf1259837991668d6e5f97785bdfb627b2ecd7fd70fcdbc332ee493aa38ab8a30490b183eba4e35046755c42bd110f40d7266339020aea480d1da4f891fb160eafa2db2b79432a594640adb06d50677072dae3fd389e07abdbd36747d130b5c4f36c1f5654f0aae2f42747d5ad4c5f566d00aae87b22faecfb383713d92bd0b5c2f16e37a39dc5a703d94a38d1d8e777ddd2ebade88d1f54eec645cff7cceb8fe093bf45f9b0bae871b4261a233721aec30b8fe2e7f68695c8fe7a347d7cfcdc8d5b8fe6de79ad4bbcf2114263a23f775eab56f31703d5b7f6d3e77ea1b76555e10d6f2203dfb9c9ee6bd37f1e5a7abfff5dbc881f08617086824f71ac98d21ac0099daa555a66ca4d65aeb9c73d659679d39d02f6bce55ce55cef7de5be7af89daf4e3fddf3a07faa94fa77822bb24165d3efe699db1d8ede69ca6693af30a917ec678e8a7a9cf0de0481559e1857b8ee41e5961efdff106ee71b000123ec61b3ce8e92f70e867bf81431844fbb3071ae50febdccf9ec589414cf8d90b87bc0799eb4820152211ed8d733662239b8f3963228be460ff75d32ab79f77aa91da2c0076ef9ceed4a835d5d71d8348fdde2a8c5a21074a53ed4be065554e361a39d04ed32b15e45218989d5d56dfccb021b1c7c9491285bcf98a3184646faee09ec856abc597d518427a87c2ec0aa91279f10502dcab5e3586b08bb2903c2d6366d9217971176521719044cea08f08d741c9ead674b1aeeff1db7a732ef4902ba0a044057b7d215790f611bfbea9015a0242b62ef14de6ae13e358d8220658fd852166df0a5d19bcab8f975ecf9f1a4190a1e260a2bf5b82eb777038d1a185cc100537c649079d0c4f1cbcbdb82c7c195cb9c0edf0d3e1cc424b11a7c6d4157e42e5a4cc32ba8e92485eace942d251f53c91bc38b33de419b94a61aca01285e445163664bb36c582cc90bcf8a2876c59774bc1624242f222cc0eb2fdfd58de125f8e4b49149217db22c8d6bb58df8480f9d49c3c902bc8435548ee43903036865c415009921b71e6001761b6ea542861768716634a646b74b1be7949bd9eea53f244663826232fa931ad8187ac6166809a71659eba8c0c0c2ed6370448cab547328d8b91d8f7340021a8267ac4984b2257003c1b42ea78410076fb2987b36512d91e5d991944a6feee8f818b41a9779d833cb28a71aab5d6e9fbc1d0c8e6232641fa63e27a93cecf39bf198ad537331aba271261f211ab9919d8213714c9f281fbd663dffed8969fba00714dea81be4ddd0f0402811adc28be007df6f9bbc517a00ffa8d64d1d9bb3e457aa06f62f0ae4cf09ce871820a32bd6bc223e9a987935b1732f5363840a06f5b230b90d5fe57dc3e074770e307c7144765bffa7711db68b0e592e178d225e5f4ac5da06209da911b932a2782451c5d937ab76853f4006f48bd0650baff695b524f0b28d024676a48100cf151914591bab144a649d69438a488d11921d32b393a92927cce6a0421dbccedd83617d7e27bfcab36fe8a5e9358bdea3dd06c91fbf5f8b7d6b99880125f1b3f387eee35ff38a835b0d1871f2fa9ecfebb7b166bb1c73369dac1c5506bad3108ecb377c11fdc7ccc427ccc43114503e00dd90b9907c0c7ec626308bc8106adbffe67aebfdf0fdcaf436010c05d45ddbedd5eafec0fe8dfe36f8d694eaed91e08737c71d4633aa30672cdf6db5883d4df740928dd2910f73bd57eb73a3822fd18d0376eaed97ec8c274a206cd3ba4bc84ce9b459b6e20a3f6695104c577f8b99a163568d16f5e989fb3cf2c51fa8b93375dea695af4d463a59fa61e0683c039fbb7ff14df9c6049b706858c098909327b22bec155cc7c9ec8284a319502993dc6370a8806cd152599c49ec8ec597c630266d19a143ca70e0f64ce416d1ec65a07db352023b1aef12087201f53bd37c6183bf5ec658eba703ccb1271ecbc12da9f9fb5b1c3891ef310f46f96ed9d65896c67bb678947622be7fcfb47591c36fa59cffab4e9b3d1bf89ecde29ce670190fc2c0bd04f7d9a020720b88739a41e07a9acf84825969234b97043db295ac2454a15424f50aad0a890597b58ca34352662d829d5a3c712a69426c8377d267d8d4484f1141f4260496b70744e1a1084891d123bb81452382a994cbe40e6d5f8d8638c86c6b4842485244a847cfdc7744a3d407445763a9a486c63021c32c8c0c0a0f0889006d037b82ded6ecfe90614a92f244e3bd156e40991125f091f203faece945544f690d8a7391fc0f91ef885808210e40f9ac6c7471f7b0fb0d1c7be639fcaad40c964120bfb17dbbbdb0ff387a0df9e987dd73e6af8db8307623a7f3b319804ffe2320ca4f8dbed6fff62393a0bfc8bf3f66458a53913fc9bea08fd6d34e3ef250afe4d9ba088fe4da9b64f95cdbf53a68b7f5327d8df15b64fa36d7f07f78e4a269345c837a5fb3bcd4bd2f87bebf418fd9b8586947fefa60c75c1bf992a1369b17306a3f16f2edb3e47c9805b2ed3fd9df3debcf7b7d749a4bf75cedf5ae7d53d35fed542db6ba4185d7ae96fdd04f577067bb7db09a6c1bfba0cfab7d7d11b7f0bb796fb3bf998b6d90d5babcb123f2384e53976110a7409b2d39c6756e49c73aee0d28529059ff6cb09f541c8df680810a71c8b3738d5d4fc8dec2fa7586780c283900c49facbf2230eff720b769583969cd31403591cf6afbe8048ecbfff8f0e9a1ad558fe41c8bf0311a8040dc6df0ef7d0655f38f1b7fcebfdbd60509ce11b33b1f3b7adebba41966030e8b6c05f905d555ef33b74007eecf597c1b8033ff0bf2040ffec5f4864a2fad5dfea9d62bc7556598838e786b87d10f2cf7e4290040b933925bf75d95f04e91511fc6cc45d980966e4c2feb682de5cfddd2f1d7eb129f3d35f560219c9a6e90765d62aff6d8af7d67be7546bdc5936defac5bfe1ad8f80ff0ff0b3f85b969711f0ffc1f1f361fa31fc0b3fcbfcacc138e33f56fe565ddd5cdcfff8db9f9b8b361f6fe8f07191dfb66e2ecefcd66d81c01fbbba2ae7dc6d61c15b6faafdd20721b37c6c7ca9f92c5659b6f04dff8c8e85980b605e2e547099215290e94263d16348310dcbcb0168b2f11dc12f91d39636e090970bb607b8d7fbc74babb7174cca54fcf7f8cc693be47535ddc5ed99b2ea57555d55954db9067eef09c20f35fede4c7b0539ef26298ce8ae520e3f4d27a06fb6d1461f3db1ab2ccbfbb681423ffb6d50f434e7654e4ef8411c8dc2c0cb514f932618fe344db7cf46af895d6b9f72a87992e6d4488b673af89973ce7ff6af0be71cd7e41bad8d1edc68ffe26c4fec2ccbaebdab4422f77e1f8f78cf0317ab9e46a55963b5420c8275530c82e5479bcecf5bb6fd45f8d8eb2d3837c520f857ddfee57aeadb3558805f041442e1c79ea79e25480283087eb9ded246f835614800a67ea842876a30f56eea23a418c4faf19b15918eaebb2048e69038d8008c27057502c7d363b90489fbda7bdb79effd87d30c5485db2cc34e7fb7db161c0677fdd5500cf0faab819a403078d2df0d6d5ec5e0534d821f6f89596540d15f2cd75cca60a3bf5bd93c6ad15fad1462c24a7f798a268ca2081f2f9b28aa60cff251c959f36e74277decdb8bfeeabdcf5cd3d9ce1aeac74b2674afb14e09cd171958e981019854fa89b9f407f0f192cbedbf4820014eb49c27766aa5aa1ab9b3d58085918ad8d6df6d618ee5aebf6c06b822517f3771aebfecc74776c518ab18638c31d619638c719a3d5b3b0210d8bfa37eea5b0d74fabb53e3547ff7c720145fb01fc10b369260f9d8afbffd20b0ff8584fed888dd6f41ae3b002337926b1628fd657786b7fe6e0e827af6fa261be59a6ca4a3fdb1457f5d239c937f1b65547496070b90ff7aa52ff9b39128a7f2755df79aae352caf0a7efe396a9f68d5d234e56a4a33ce384d35f62f5adfa45c33fba7de00543ff5387d2ef5acd164329944eac04b1b62fff5b0647e0ca67331023b6ac508ec443fa436820548af609c66af7fee92c9d1dfb6938fb7dec7dbcac75edf74a8bbe48f2076466498ef4eea47d18f281d71298822113a8b6212a995301acbb2b29b2ba2e3844cdd3a60dfee125a543e57ce1b575d6d2282aa7ef8403d71f83051597295fd385908b97441213b6bdbc3bb824cbdd6421f0319a1a0f988bd0b507f37d8c77e26a9cb40e91d90f4772b3ff6c29cfe6ae5c75e835c7f798a8fbd87b7fe6eaa8f7d06293dea63bf9bdafabb8d3ef6febffd7b7d83f7e084c4b9452da5b140a6fea86f42a8533225ebab2c4d0959626789f2e7c69a8b2b360b00b9b165649582eb0532f51694f477037dec35cc75ec65eafabb733ece79a8ecdafb994ef440e7a22eeabd7cc4792789665dc6adbf9aee635505b085eb0364871a112454666c35f654a9ce9554a1ee52dda595b9b81bfb69d241939e92cabd3d1a6a1d0b208ece2eb146a054b0be4e0177949d957395fa6af71362db7e4c4531829092fd27c4c275f7c8cc49dde93f29608ece6601933ae7e250facff9f6abeb1b8833e95c49d5a104faf8215991d8a675a7a5a13ab567eddaeab4fe00c698fa1d01f27062d77ecebe42ad4bfa3ab5ea7496690398d6237cbcc432fb4df9b56895542220d5d24be957c483871b7c2362c5045089ab070f1d74a25f3f5e7aed78dae52e81dd1cabbafd6f57d7f78399df81d1c38facaa0a30abf39ff54b88e9e3c88a139814968f2c57860f2ef5c987332bee848f3c1c7d03f1bddeca688d3a57628574976a05a26c7fc25c145650aed6db8f97567a6c544ad8acfe4bb6f50a3bc0283d68c3adb3516bd8d56f46e74aa1ce36815a7d0d637ffa5ab622e96adaead57f4a78aea0a8517aff787945a56d7696c5cad3d9a5150b0baafdd1d7a9df92ca4a5dd1593936acaf1f2fb1ec5aa9fefb78892505a8a3efe40f4767ffdb5b2afdf75fac647774f5e3e50f18ffed9f55f9d61f8c342e965d7cff3d7ee098b2cdc7f9245ecd47f147a07ec9cbb2abebf7c29e3fd733f15256216deb7abaa1470bbade8e8ec5f5635be8fa28b4bbdead0d6470604f1aa95053cb5bfeba62326d55b5f055555555762b8598c879ba4a2372e2e24a8ea5233c24cf153e655f1d73c223c29ecd31b709b6d4f388202892b687b3e922d9b6aa95d6227e9e4ca1a490450ff1da11e492953f162e7e4a751dfaeb1ad5b597f35527a91222de6b9a0d51ebb1c4c6095cb60364c59415a4675d9218560f9e1c2a253c787c7c0da564930a0d233cda30af918418239251450b8fcbf973922494dcc1c3680b8cc4909caa925d690b7e74cc886a7a2b92e25382e22b8fac876f2fc78aafea2f4c62f9cc31c683e8ed6e6c0a5757934eb8c7ae40f9188a1aadd0445c9a634cca829a46564af8d041778346598c2a492467ee25837ac8504fc9247888ea6a386f40796d6d3931825326b19155e5cad9b48690223705698a532ba5341c3123a9aa6a8acd5c55c522904411bf0a1b7f5d7df7d2572c9af2afccb8236f483f5288a879691075a5141d02c3cb62a2a56061a65d65e862c2e0b1eb5aba7ac539fb39e79c8b50b1e7b21bada719e5042487847c89ff4452d5d1f13994831f764bbc1c4796d468b65055555555d589c46ece1cd2f40680165d3a38e79c73ce7908194e97e503c239e751fae4104786ac381f6e1fce394fa1e3b22a9c5a058f11ef31b222cae7dee59c0f87c3fd83e1852f07900e95d692a0b6383a232e3c2b396c435a290b9aba5a78354531d98b3bca18a231a5b4d493e39363f5f97175555555555555114aa2ece69ae1e4e9abdeed790da94d00337097978ee657b355cf4e459f216b0ce8af2eb992a0ba226a25f99c37935a9f73dff39bd5eeb2ca6ac96e7d5dd7352ad760e494ab5c83ffcb762b438055e4dcbc8c997c57d86595156b8a82f3486596374de268006183eaac81e0450fa0b13214534cae1f99e55f99cba5bfae5f51ecf814aacff9ce1a4388e305454721e76062e1560100414d1637d2bcd29804c0a90f8fca468c154026fcfcd5bb5b3c4c1138e79c730cd4889166250c2c4c6b03a72c1e153e685e5fc89ea0600f8d16ad446b39e7bcf905c49eb59c7d4ba2e333b60605fd7a52327d9e9c3ca1d4d85c3e4012be16c2133681ac2ebfbc4909b5cdf0d1f32a8183a9432fab8e0d2a88abc7aee591026ad109470c3da35b3b537850986ae8205f6291dd57d5222a5f2d56f57d2d1541029484d44170082bb908f888d2f10971f2e502f912bfd69a569b85cfd7849edc9c4f2c21231ac8052a2aae8a7c15f938510157d199dd93b1233a905c3dfa5c9d85471c191af6755dd7755d4b31e7c6c664c9c98c11594d781481564187348f20f5e6734ff8834b858ee61aa2e166b5ce91b4882b251794ca3a4588908985f4390f72ce57960b3fe79cf311543abfdf5a6497624b954bea08e79cb39d757b92260cb7cf391ffaddc3fed6097f5dd7750d51d5c4395bc43c3e96885e3083902ff107116309a2c6723169d38b4665fd406a7d83c9cf5a0f0ebd173c902f310a5d320a5f16989c9025a190a9962bb5073121412868a539d0d556b537b4f343a985138a243eccce52e40809922014b4d20203a102cecad1dd971e5e0917615128526cd1274c419c44087265820ff68e056bef868a3c262234b439235f2f54e080c252a2975676acba6ae5d94bbeb220168ea825b135253423a0bab3a58d3126cca5be255996cac5c2ab6b2abf9ddcdda5b1154941ba3253a737e3ac89ab68acd9f3424c4f4169585e31c16aa9a3d70ed357ed7252533a5634c5270849919c0847509aaacc50265bf4384a45404199507d2d53c78e8e8a1b6107c4acf2f3d5267346cfd1b7259859cb619941f267dfa61e5c76d2ac370002015e7d9d8109bd35d0d03b91e8fdf168638383c37a08b27907e19210c9c38fd1c11b32a071d5c605aaae1cc09cced5c373cd1f32f8d8973db313fbdb6054fa01357429609bc1a5aecd1f308099612ba0708335598dcd470cbc822c478ec10b16210d9d9c5ccb052d61c79039c4f5960baaf1d9126186edc0c3cc0cccf0d73b91e8fdf168638383b36d8c224890112af3114cc2d058a5f835b4a0e8c63f8b37bcc8b06082172af10623132858184af82cde50934721062b3bb0f170d43003e3c644f58d360a951efecb6af82f3bf35f16e6bfecf0bfacfb5f560b63a25a1813d5c298a816c644b530266a63f3f30641882e1780f5142e1560d4a050a152d770b052e1e5c52d1aed5fa84c396cb0e4a5c2c77e2b7b5883b94078f5d97c6cbb2086481ce219bc618394180addb5b1b14f85745fb4c0c3e4e3062445e3b06583d2887d8598688c5b162af58d3676ed5f0b463ffbd782d0cf167a54ff5ac8f939c6bf31793fc7d0099d2c2b540a9542256785ca97152a5f9cff0a95acae71512283f387081f7b3528d4822f54ce68cd5c68c9c7a70b9d3dcee01b16ebe21906617789430f739cb1d1e0a1039605d2530e58c062b6501913152a6784ca9ff3070e8e34182eccd0c8188b9ec6024d0c0d0dcd0534343034341368541a0b86126822b474210d4bd0a561571abe696858bc217b9a20fe38c862103883649a3f00b52e2c760627de3c68b965486b73411be2a188f3c968a34f0dc0c5ae830a3938cecd010642c70b426838c85d301699b139c2b041186b2c82c5bc0ced0b3890b130357abbc2065a2e5d0591431f850dda580b3cb00ddd7aea256cd8738b4bbbe55c1f53af8dd9983d0ef968ca3a345ad5da10584e9ce492203d494b50a20811538594ad2d39573c6b7a6c616cba6f5dd7755df594ba06b31b376310116a362faac90cbc2e27998da4b6271e54583672f0924d3c167fb5a2b73434ca51be7833ca5b10ef070645c91c6e4a36a4d5ba21d1cc993566371b95f64eec4322e744f5d9d2442e4719b122bc9c1e500ee92cb574b08010d9012472f583af2aa9e307c78e94aec2b99044da15129fe65ac63361148f5647e936c51a23eba8be32a12939e79c7b71ce3906241617f28b0b802a68e077e4b4cb5795428153ea523ad519e9d9925992e2fb7962f2a449f3d1c0f024774188c98b49c857e51c60a72407457464a52fc31b19d4d294269f1395a3f5a84918e20e4965459848aebf169330a1a3769900fa6aabaaaaaa8eb062c76e5555d5561c31eb510666a5fcbaab9b32b28516036e6bcadb0eb9e2109f996ab906bbd1fd4830f388bea5eb9ddff317c147a975b04910331532964cdd95a8f2993284c9d68c2515abf7d6755db78442d6301fba75dd54a99d9be4a77f743366b06956c45d57b424a111b9156a0763421d7659f9d14ba56875d947f753d323960c31c0079228a3a2a11d566a06585cd591f1e89194a3a53c81847832fbb0ebfca47efe2ae684ca6a3fcf7770a0e46226df089e456df0a2a3c1236585d21021695c4894a5c885d65752db1226407414eeda907811a5b560a4507012bc8eae2ca4772e3f4efd0b8a8a0892eb2774ac423f5bcb2899d6755d63ece91acc027f1540f2646c4d2bc60e2b1b08c264c95c185a5edc0d21d58c5e84bc1b55a8f4709ca81353a263a4026d48df1eb4452bab256f840a1745a07665307040493a5740b102857536f78bd21a6f35abc039e77a8b734e5c9f0ce51a8cf4a4a913b5d4a2d035a1b1e24a4e9c06aad47eb49892452cf45d920e61638808468b9efa82ba2d77185901079d6ad2493d7774884e008fa21a0ad152d02f55855d2b0f904ea6aaaaaa467f3f16362b39224ba743e77e7aebd0ee00492ca21cac2234641cc08a330c480aaea792a88e8bbf6abbcea13689264fee0ec958bb9c446118f668556f31a9467b739f73ce39e7219e20fd7e6a5d8bb44b1679d188cba1b4421504f912bf5af6d724123b1e70625d65c83a352bf75adbd2900acb27bdf3356489e47e4774c11954d8a191bb534582dee2d941b175cbef26137e552c1bf3ec4eb6c2cd820fa70dc4ea274c47af242f995ca35555b5695dd775ddee66dd2969694b533774ec9031f5465454c3a70c4a3b39ca3b4a167c411aab6e9ec8fba551cdbb1fba870f0ee116e57048c0ac3d34caaedafa33528b49e79a2ca8ea63432ddac674f2fad292cc8006d9d0ad552a8a17909113cf3c253aad6c9a58fe38e711deb20836e8baaeeb5af64d409901d1e36164eec7f53472050a2a055da6d22497d08152650a89cfd29914852a623f4f369660cb287433a36a314c68e0353bb5c5534e18d56c016da36c3c3726d175d5a50c767585b5e8b9b4078d0d78ae5af0883e25e72d1d98817579c56863526a3732aa2044694355b4dc2a46e61a896a9b5c96888d1e329e7cae98a0827c899fab458c15779f7bd7c934c4b682a7e9461cdf493134fa49434093ab05205c534878910512668134ec3555c08e98181224ce0af225fe3bde6421c753438f2d67c86c091c1d930cbb2a9e24455ea44559477a7c62e84c81295151f444d06feb2a952fc068d2a9881aca8dd71f52544a43d9124f4ea6b0a51c3c33921c4063aac80e8ed9c64246f2c794b103e3c64492fba92272aeb8cee22c51214c20ad3472189928c2c4bb71a285f0c4515491b32a2baec85b0cdd66021ae1869c067a0926d12339e7b254f657bff52fafeb5aa53ec9017f57cc9d1b3d6b1e50fab09a5cb4704271a00d8d4d2809f484a9e3f3d389a1a4074ed5c96189cac261f34f4caaaaaa3c3b538e4ca0b0cbe103f729d17252b239b7aaa235ba94c35ec249c76a0998912410d195ce24f2534287d511ac1e41ceb7156c48cfa825689126460f484bdb1b7bce4d9960aab15d6b9948a80f8f2e08b46a860a5ef8480b7ad1e42468089a508e42120a4cc5e9c1d5f0da49f204e36a4ccfca8d3a3eb51c620a2b254bef6b68d446799ec4817326e3685a8138541e50555535441fbb79ebe502c593ab98a7270b2d26fc8a00fd70b88e8435c3645c794282a82448663479d4fa984da6d993d5696c67dd7ea6a36b301faeab50c310664884c9c70d4d723e8449bec4786a8dc3451285dd13d8724995c4886965e588099cdc5aa5860548f41b7001508ce4780a515a3d594a325376f53cb15a8611b156a22cdabaa5e6b4e40ee088d2978625e3ccaa04d0195971369c9a74ccb827130ec85fa1ebbaaeee1913352df183ae07c555901d38a910e0008a33e265a4f404c9741a02c452e2ea33a91440aaaaaaaa17dc006cd090e961a28fabe9a96345280a05a6ba68482df17a426126a28993ab2d2eab7457744a358ab38d4bbd6ef0f9d42c15117d72ce5b968c2d79229bab73022d11c447550b2a4a446e43f4913d44a8aaaa1a426988ca57552e9d265f557559700d8ab1380312a1808263c9cb0595285328ae10617b63a103b9ae6b27fbe0a5e4a32637a5cf24073ef2a09c6e705154205fe25ff1038271058656d0d6d99214521b31a1dcfafaf12605047481246f506761513f448a4cf56611ae1b5da48f6baf62ed1131f68c3ef79b7331bf7952b1ad1d78673df0f87e6ca802f684892f965da8846c776639aa0cb248200020800083170000280c0c88235118a6599ad91e14800e43a85260542610c96381401486310c02311000010000200040210cc3801c8a74ee099c04023e740ba02d7477029d8106b027b3d2c49c1a08ef0c828d294f402640101423ce81da13b2e24dd0f7ac279f7660aeb7cc62cf4c1769484e3f435b0317489b959c4f3a65ac74feca770db9ec1e40de4e1e7c8ba1e05148dec5263105e540600e8316ffdbec659f3c04cc4b4184c3687e1b9100646f638608dffc4ac0e98196bc21c97ca1c8035de0907dcfcdf0ce192e3f0e439324e7f1ec54bfe88e76b5c4e99cb850793cb6ac3c719d9f48d0c78b405a4a56ca4d772927ca75f26a8ce2455ef3e2edf74591c87a19f05902ff5404be8cb991c51b5d281644e9f86769b1599123d504ba3daf8b3a153fb37763f60cba5a0a24cdebd29890040af1571a92737404b3a36eac8ef82921e49c4ef4df427004c48d643b5af78680de0e68f7008a0e0052a3029b7688c9258422c6392238bdfa8c4e9091dbb938600c10a647b40695a011e0bd9431b8e967cd7c0a256583583b37576d08ed9203e316c929784b213ae0d528382400b9970035576535095fd01caf711fd8403610288ab5994f5591de604a9dd8ef491892b83bf31964c91302ef064ef0d4269fe954e4903f27f8e3f070369223803ab40ff5429e156b953d2fce96b85c1352d2b1d550cf1b4a4398d29a60413f1593f5ba2febd8dfc8badbc517df90adc3f5a0c6dbb448f1d3d50ce15c41db4a15f11e38115e5534b636e93b211aedec2fd83030a153cf2f7fa9273bdc97118142074252115828fc65c5287e1d2bf97105ccf2e23667dbd23b9067913b89314dd35a77b2074cd38c57ec99f183a17d4d75ffb9436a4b3aea963a478a3b32bd08da87c66422c75ddc24331e38170232ba4c9a09e028e4e93063e033cb095b64742901131771798eb7ce16f25d7b57389b54428b1981e0b516787854f284357e4b0351609b34d0717f84a3a1e22a393308cfbec2d337f032095c3c9a99ddaca693bbb3c8295e127af5dfeefc43cca13a6ca28628a50ee5b20da45fe90a1020d8670bd750782d46a08135e98e3851863f898bf16d1ed7afdfb0b2b27126a5dc4dbe9c75a6704b449df76918cbce615fec354b342f9480cd10fd108c21be0f3df42f7d49069bc594e2ddc66ce37538539ec783af3f6543627683154fb445041cc03b987525eb7885539696e6e8306f0593c5e262d98d465d0576639617518225d34406d1d29624528ee3f99388592c58e1042035a0c4390c5f1c49ce04395f5612511d0271d6167fd7f92ff1c6cd4445705264a38c7bfb13eb58a79fc455a5cca6ab3ef207821f9014b58ee3e39716e76c4342b86e956a1dc3165e54dd5e982628bf6ed4859d579ee387032255588717465a0757dd46769e959415c0e9c9aa3350b06ea1c70a63a021e0f4a47a22319cda3b0505884e4b2a763846bd0c429be5199ff92bc0d5a78be9c9b599fe045897e6e53a145d65e989418c3378be13ddf909c3b40a40c041f80b79a53d32f2c8137b98bd4e48b3dd74004a086b6c7432e8d04d6e2a885f2fad0b02a070a680b8abf52d9daee51dacd9bc6970fb1719a2df53d7b4437970e65c95253afeb82e568ce7b1e761ff4fe4bd3b7a5f14e58c629ab3a22479a0714d05904101489eba24a0398d116c8a6d7bf7de68931014a42038c804114aa97ac3840edd9ea3448a389ef29bbadbe0d6895e3ad7c982838eac638620f8cdf41bec9ba2e2668c0ef72022ca1da33914fb5817eb8780794e3b069bdd289f10370fd63b90c38ad752ee6e1cda39b4b39320cbc5fd7e8636b3c292ed435dba68ca0567727701251d33f2bfeadc843737a7b1b339b7d75f58729297099a334b3697f41762dd3816ae5cc817affab829c6df686394fa6fe7fee0fc085d9828f8ce9dd0560c0cfeeb4ce0a7dca1919016b4a6178829b8f3d7658b1d3c33832b07fe001f5e147ff2441ff9f79ef53140b1c2c039d9fe091c33809c4d962481a2253c1b00f2f32b8d94130852c4aaa1156a2c93d21ffc6e5e3c77df90688d75ec2f320331f0b044b65c9901d419c7c7f73baafa180d6fbf9225c2a506e6a230919a5be9576e809afc03adc15d833976c70b713c21f51ddaaa659c53df6d842a84855ae61f2c7038937557cdc49f83cecea08ae288d0cae750a00c22832f7be3974b971c4814f570ea006f370227dc550d60d2ed35c4b8bf361b1f9411a53696ab70b7449f13721e2bbd3fe5f0f66caf628dfd28d1103be3e227608c7f378c2b0da0e66f8b5d8e8543bd31aac3f34c20eb6c6283644f9cc64a97392b5aaf77146882811c6944c8f1bc98d96108ce719a551236a24f30d7c8aec3dc6d503ccf322fff67a64d86432995c15e6ed6c8031b59a1d689ac9a0416cd1d51274a2742de84428e6465880fc3d0c91fe79157b7ba54f99c852adffd15ac30d08a4fbd98b3cfe4c57d5e43ddc8b00fbf1d1fd3ba13b3065e55d948da094018f2a509e9b68b86eddbe206940b4a93d96cb005913882491ea0c69510b78332e8d44fb304e3c7fd7686d340a1fcdf0c145fc4c0cea3f3239a660ab8405c83506bf5637bbcf7ea80cef058968c6ca4cea422f2a3df95e2b76c546e120a1b95f67a28c9ec3a4d0afd363ae28b86451d3a13383407ac0c647b48f4a855c3b53e3f8607e9614ca87288cc78a9ee4406b0e47f5bd05864fc33d94279221a753ca209d000f8d924d40b67f02346540c821631a1b9ec38f654bb35594ab0339bcf2a77508be235ec77a6eacd25629b36c94c377417b46530973d362f47b9ef6303c5a91430442c52fc6fc533fb52479a7c1ecbabbc334bee909b4ff901463c794bf4f689d1374424cf0562de6cb05994c655ce41117a519461a26050f24cc40596118d35e94fe12e81cba4afa000d8bfa26aeb8b07792b8ae14278294121c742809930969aac872aa977b2aa2092d4861e737a20cffd5a6338e79db4a949ea615cd4292c3226e9b4ffa8c086d2df4d4c43892c6826baa890c697fab37a0ed853e45bbcbd046bf94546b1f906a40eb3a8b5bf1f9453ac0fab3799d39c7c830859e7361fef2cc0e678b6c6b94a9ae50b67ae59695f0517ac55b60a2e5f1662a58603b0cb23fdb06df44dfde859e6b7556aef7732d2cece5ea31e0941409afc2509005774fcbbe08ad888c89c50fab922566651e4ab2b07664b7bfb1f057cba0049b419b6b4ea8e7cafebb8943393de443685924cc72425389a7e6a86bf5af3727521f8465c0c5d065ac4694a5ca1fc4dc06d999d1d14a72c97faa5e353ced3a00eafc7cd40be28e4cb2bd600c38a7568280a811b4ffade3d6c87dac54d9e7144c080e01e4dc3a066cc368052b1423be208bffe3bc701a12338eef7dc496f051f8a90aa413e1121d26f81165b62e8ab066bc8260d9ce5aa9938c190dae2c2f9f31d70665a20c60dfb41bb85254360f84a09d20f3f1c2e86fa34bf46c30c2c9b8d1bea8df76ec37744e9c230382988b6207e8962f22bbd84d25cf898017c51620c97c516f225cb54d0a13b9c610b70ec101747d5907546d9a2a2f46a12d8b411c77e43cc8c162540cfe91a6397b68fab1116b7c7c173314c3cd8af051fe6d5f1f3e0cb2cb6b91f4730417df311013a600646b35b322210d3f7e262ff9b635dfc587bf7ea17c839f66cd05164a2ea3bbf1c809ad3000c63fb3bc35b8ae4310372f18e07d05d4deef8c807fc59408635cc6322b2b911f72a76d4574968c20f5ac3e2729150e889739435497dfe004e5282a1344bbd0e47119fb671200b6ee08978ae7c0b1e3a0ef728d383f6a441ad5a64b3adfe60e22639defd82a8e6c57d87ff16429eddcce5fb0b4c263d179c4728166bf83ce7244e23a76a28c2bd98cb1bde56c001c5bc4ac32f3065ee1364f6511b69f0fd7d7982e0fd69139ac429d46b1a86fed3bdf6c403de2c41674656e9b8f694e77d92a503cc86c36f5bd9298bbff1c08a9ff49801643449a8f27dc87879fa96298f4556568463621aa1e829e7968e1417552f5f79e0bbc191480eb1ed1126ab5209b56b7c2f8a3de6e5c5938c7584a0f35477a1ed498d38bc377d20211d159209d861fc971a63c5f53342ce81eef79462ccdd12d802cd956cd1df881ef86493a82776585b8ea160a68e94171f79c13898fd843aa48c73ed4448e285a30e67866982c7fd2cc6e2130d2ae12dac7b1282c06f538bae2553ef4c4844dad9bc73f2374cb6e876c191804aec326e7f487ce59e9d90ac00b8cea24945dd05a83a89eb66ff25ceb483ea340db81d988337c45ff0206480d95b2e1c79d9d533acbcd0cac6073490f6373b5b5dba6406da5f4e04bd41fb10106a2f81973ff4b2a0bf4f9639e1c72ea02cde605bc5ef5fd7f6355b5aac77bfd7b4f7b6c2d3a443bd5c99d88b04e2a23d5cfaea32fda8ea7cd54ce4ce32d95f010ccb47fbc0dfbcdf51ece489d1214d767a2251c481f0f1955263b44032be5448b1dda3d70a923762a64422b54d2ddd3004aec9986cdb28697ebf0a7c504e692eff9792932a30b9f319e4f413a98d508f233e55c93d7d1179aa91081098a41e66c4da0cfd878516b1ade6cf41641eb4e75d0c3f3147153376180081588ccc7bb11b44e7f0b9ff99de76a9ab2d7211fde321a7c6d332165334d3c83f8d8876c63e7aac7e71ea299ad58a3569cdc31b72f0a30abe2ed31a5997b5b4369bac38d18823e0f121d91bfb1fb1d5c4a05c377971f333e207c6475bcc22ed2609435df72303e9a323c97d5683883bf4caddb32105afb2d111459dc602ad2e26e32e3269bd8cc01b2a33c972da6d14f497e303859c4e9775bf9e07f20da772f449fd8080cd1e4b1c87a416eba517d01beb062b0c8c02d35124724525f0774acb3e0086079fd922afee1ec3355187725d4ae9122506dcb8efe4cae810fe1d9015f1e26101fefda08c9d9cea1dce89f87349eef6a92841ecdc5d6054a7522a24d667ef96ddaafdad2461e39e9326c912ce6fd35198fee79e30e97efd4ceb455409b135bd0934e173a056ebc8515a623d8b149819758725c2e5e474fffcba471737f1c616d0f4be1d4c6fce5f4405cd4bb327bf9073282b0f515156c050eb81a43f59318e98aa3a9d13b681d4742e7f0e3dfdaaff0e8262c731b4ef3daaa34342d45c83d2cd4478a11315538cbecbf01dcb2348a69941f5a76597164efbdfcfbb7188d7c1a01e60ce453258918b2419ed295ec09c0dc8886d00c9057651c284314e26beb8dfadad2e15b5973b9b4a97f6866fdc6fb46930cd3c82cd6403429ce9758d12d2ebf780ab872a0e3f86fe49d3f26c7a21dbb17b2b8b5b6575d09538d33fa146a93faf3bfcabae8d6304bf67d23fbc3cf6ed2fa0ccd826be035e352b3e71241290e6f2e894b8519cabb38e35c2f110a2f2e3f5647c62c476bb78f935034751cf6e96acea5e2e6d914482bf6c7c27d66e3c7c0cb527edb8d476280ec1725fbca6187339104240a535901e0b7a5e95b2fd901923ceb19cb7e381b43aefcebfe0c3add476a00aebcc447b1b84ace25321d85f688e0ff50dd6b40dc2fa77ff281ecf52cb35735204a643a970e2babb69c19e0ea92a4b0427660ec632e46d3a24515cbfa87784b69b846f4e0be4ebbc11c9b3e49bc99a4e8b94ee48e859817797c695e82cde551c3901789a1b6c0cead10621c73ad2869d9568710ab109856113ac2e74b63a00cb1c31bb6614c52ba9652876c98a6e60385bb1cb5e4663477093a6c5e6777d9631a5381c6a9da5f528566277dd3a2f1d40402cadd2f7444d87047477a6ddf8a37034914f7899c832e861383813ab7053caa06bdeeed2873e7a5ae87d1625bc0f49eb24ebb6e776eb3c07f3196ea4f1495163a3bd702716e87bad465fa02477ce4000e92f16343ab18402daf8dbda70ad1aeafc05bc185b8af7089fa4e04e296ab93000acef50e6c52c2a25af13b5aa2414a9c8da4e5da0346825ef9dfc24b15fd6f9da04dfbab52daca8f681d0730df784d6b3ed0eb3b281626c966a8d9ca09667dfb5dd172bea0fd872fde9131d896277e24e81728d2c551e328c99728038bee1400af2114b9eef0134cd67a081b3c81295c763b5a87069db37cefa83893c86a4eced2c8b3b464351828e1562f5cd19f26f9099c7bacb415fc4245260abd7a83758a37208e305d20b6baabae7b1bfdd3d918db915185cc066f68ef3f037d790c61f2716487637f8e1bc465b7bdef133c191dbe6cfad55da8d0467e4268ddb5775a5015ba65556b6d2a03a7b1366f52da5a4ecdecfd7e11c5ea72a4f4c1c69359bb25bd0f2efc97bb4f77c87189bde59697965c62567f726d68b3bfca034abbeaf2f544e36f8051c41a1509e0c8ae69bcd01410266065b36a4b1462324b976a170010351175351cae0438877ce207e518b96d752c5d9aa81c20114b232a642c804653a9b14149574dd5742c5e2631fb987334404fa842044ac91130ce12dbd39377311e2964f32798d44155188c2720d480107643d7c0f41055008d228fc149426b8a4fbc414825c4cced3799c49c036b136236f9c67ad8cfbab537c4528b236ddabf457e54698cc81208f4ea0aeba1a4af172e0ed918c98ac045be0cd7cc2a1058b65c782ac117ab63db596e400948ce63f604ed2667805430fc00b5877a0f671ab3ad98149e2af8c8e173a31eebb7d7248a24e1895f0f689e8bd04a959e0ff11b0355c0460a6ede5b344f98d0610cb44a89ac1dbfa02aad4486fb371d2926b84d99afeee58f0a5e36ee104ec1374c0056e0f5709408dad78a613f336158e54c0685b875d8caefdf9e2409eb49dd742c7047402e5d74b2152be20007b9a80489fd2370306214825ce6b96c0127cb744eb7184dea121091de869c35f2f2600eacdaf20af049ef5cb7ae1f4b467023b9cdefb520b09fae1bd1009df78a272ca58ca6419303a803806650c57a79a998ee9cd50d6820bfa3047cc8c83b77414fcd865a8f2782c94ceb6d6c68f5449e4835f9ea7450221dd03263bdd266dd7b76362e0ebb0e8c894a89fe82eb259ba0bbbd0fce9fd8b3817353f938a9bcbf4b3f22bb3b64a4d7fe18d63ab9e41f20a0449d5441545a623c6f093222de8d455c60b70e39de811e9e90ba0b9e00b385abbd6b1ee597208d0eeb94b44c1061eceb528260ece507d41ebe087f08ec8a935ac443651bfef5deab2044d09f9bf74de4ca273abd7149198550fbbe5563ce471fc86fb7c13ebfc08e30ec454915aa777bb27907786ec86300316febc93fa07c86e64f21a78042cdcb2941bd85af3df1cc9d4eb0daef49f006347904925318621dc021a7f570d92abc99926db61cd434d00186b888f1263fc1f84e693587063363210b37550e0db9b72af461822a2ba80daadff3525148afeb5f1d1ae30c6b710ce90603284ad4433d65c47fe469431461a838dda6197688beda6155231bebc8d08b7f38d334dbb14ec44364142c54e06697680efefc177c12af44e6c775af32c200e68e0cfa14b0871e7ad7a121f45041e8fa63a198550175ada68521a640cbfe6cc0d1f5940ba262dca7ba188806705b9d9eded26905f1f62053b24a9b2b50d3c2f910806f9b2380c5d70a2c99b5a2c1a41805f788f9499f6c9412b88e9be32eb0ed0aa22e8080bdb45945ca22c5369b36a0acfd64cf33f4c2e54ea4a5dde32c5b9cdb3f2fe9a3f6f3b04be7587670ec6bed52740a15943c885b9cd2701db582af88560a7853861615221108793d878315fd49d00c47afbebc453807a316e5aff08417f3ba6141911fe323567036c37488296006d0ff943199c92e42fd7423845a6bffb80adf92a7856d490038e516e9c992933dd7fb80bdc4249725e40f16422fd38d4f9374adb927918166b21c74913eca3c74118e662160e8347da56b9fd6fe99dac63a96a0a01ae6a1e381a73bb124869710279ba323503676bcc1251e1e6703ec9e85c3635beb7bcdc045ee51c0e001181ae700d668647b6772ca0fc950bde1b962190cc935143a145fd755054bc1231edd493643126580b08a2fb2b781cdb8b9b954e31d1ce1c7ddf6c30b665a4685f187f814055395df50122db27e4ecc482f40bf1a58f5a8d5cdcbaca3be12b637b71e41037ad6a6ca7edbfca626d742e8891ad6d1c3c2c7e9a2c98349921753e78288e20def0576a1888ffd59fc6c4e57364c43020bb373d0445fe14d9322e23a1de58080f9632ceb57d1e0beda4898317d5db2d6641dc9af10da1e78c2751ba5b51b0aa7ee1496dc41fa1a268a481980aa251bde11cd56fa14ff24ced58ddbe33e54674333b69a4b2e23c9db94018dd14a61d055c4b683c155337ee6fc380db507178b5febed59a05be00c3ffd0148b69e2d69d8c99dd9acdafa878c2cd000370d09efceefab9f075ede159485d3536658ada15ad3ad11ee57f01c96709ee02b26accd699faa321889d175a6741a58020bd8a9cb7a63ed6ae125965ffc97057efad0e551107f492356cb8ab212e7d3084b295525c3a8692ce943171eba2855e50b981e9cb30ce8ab22b072f62df474aff1a5b44e928fea3cfddbc292dc91a996867a23a6e3cff947668978535062b33701771aa87aca7bb1b6e7280b90822f361366ceae45c504d8d30e2198193b01f5ebea5abd19d7d79c4dfc1b7369fcb14f1ae05f5ac14b0cbb3d8dd5add0f506bf0bd0d60bde5ab470a871c717046500a45f4fc885017434a2c42708306e6b7d14e92af65a11e257da280bb41fd154793c903b392a3ce12a9853c02c3b5cad3019d32d71093197da5b6653bb7dba90d9e27f62ff4ff58c790dbe8f8e8e68c90b260c670a2bc01b19cab53f94a91f0556d832f5a7454c5cd5d1e401feece89ea046c5fc2b20865c1b6a32d9000a286db83bf8ca4a35189f2b3c2af2b31aa24fe5d71f3506817ee551475c9cabe668fde3e28e1c91d910ea08163a3276bf5591fe294f9a36206d8ed6a123378bf7228a79c05b1448b286856025f091183f41507208abaebac280e6edf828429a1fe7e5a889c1930481571678b82e15ba1554f71a25151591aa8a0578f06e732a7f20982598c06cfd2958252b9025174ac986cfaf35c193c74dc3ba523cd0e72a4d36def94af62d42da754996a823ebd6aa22bbf47927c2a6e60a98144eb23797c0073d9e9ea5ac1ddc2d0a2838b8912e82242e77450a8b79aba01394dc4126e948bc808aff7c07c081ff28bf821fd19a660db88e2ac754b755dece8cd67330c6e0a1d634f2445d3f4b078ad614d960796ea12ccbf8d752a89e9777bfbeaab41fade4fa759601712182c4d10a2a9031ea36a57ac146b2272cba79857ab8a0e032ef2c0d52a8633304ce5905dacdf0a18bfea83e781e6ee1a1328103aeaa2645dd8a4016283cb1227bc5fc958ea68a874e90089218de4db70f60931d8a2c46c79f5bf04d217a766cef59f59c29f8c3ec3527cc80c71a2ea7f2c133e297d5b440fce28d7fe66393f9e0611a32203e194a8cfb2b19c16fbc024e58f9b8971a26b36074ab85c1053b686756eda4cae85874b9df112160f640571cc8341fc96c3c501c9fb1c280ffb0fa3ec36286916aedf61b3dae4b459a978e510127898157b3c86d209fa6d12f73c88ec06f07c8391c2f1879263d09c7ec6b2caec6f04edce1edd409e0dc594e730ac6776da81d4b054abc94b5beea8d751336caa5b636ab8e40d31176b2f2f85012efc47e20baeffca04c62decc2698e1dac14f3e0a58d7456e3d2db393efb2f6ae286c0bbe089cccbd0c7499d6a49345e7cdae5f466423a497c3c3d7212c68603d5213fd255be703fac3119d031f7bcb70eaa3278c7a3cec8e4cdff640d0a5212feb5d175a7aca6c3042e71ed4d0d219e6570a901226c1b0a3bc25de01886cfa482cf470879557fd06700c1f3d4e90b0f8984eea3d9127d6f9e7d5f783068d7108296329b04914a537eb6f428c8b599e19387f919c79f0f8e01661eed53fa799f75dc99bfe64d5908b689bb3daa03bdc5f1dab4b9baf80d0d22ede36b4be93e1e724d56cb0a185045484bd0a351d80e4e400c40195d287a5bc368b1eea1622f43836d4029f31ca23ce27567b4d82605da006220026456352a1304663036517514eff8d336a3530f25bd5a3a532ad61c32ba8639eaa93e6eaef8973ef3b20583c9dec9bbbe4cac2379095b36c79d55f964f7c1a2928e9982fb5dfd21d5ddc649e55d79323889609ce3ab9892269de9a0c922782c7b13d032f406202b124b2d0a1bd694169f1971725787a658713f1d5d0c4d52df66a5f0901af0603f49013c4b1cf69e4c8db9c06cfc0664b3bd01812d76f10a98f0c144525b11784c9cf9a0cd243606fbc68ef5f5a285da380460d8f4787bcd9cd82df8f539cc574356c4b1ebefda246e3425d58b29872ba4c9ba1a0b602c16d63a75cb84a88605a05f5cf3a9b21119596031a4e24bc7e33021295ba6c022222f31a0d48646c3cddf27be23a9c89c994d03021d0016372dd6998b260a636ba4ac6eb1ef2fd6329da4ddef69ab42c3c5de12f2a5a35c801dceaa38ac8a18065c49f7dafd29bc1e2d49441c54f4fc0258249c250eed3acee1958b8abeee64573738e96d0b7b69c2a7c0fcc89bb69538277c9ec76c7c723c7cf1c90075f3578a25e20bfc4c27593ce4687554189806accbfe8669dcaafa871072ac84d3918dfee84b878a79aef7ee9210c565d62ad48a0e4dafae0136abbdf4a48b083d82e9ab4245e1136eb026cc1e9e784dad0933340b75ee4579fe94432fd659107acae17337454e1488ef103defd2eb4ca4e6ff9d6165eba53d3c48415fe2c6a2d5d507fa53beded45dc65585a74ef4b6451a051d8cad7d865192064d289743083a224bff64702fcc323ad716257328b172861b9ec86e1eaa20f212e31def9be0e79757ed75609add853775890b62b3f89f8ac55a7b254462e26bd293b00549f7c5c4fb360cad29da9d2ba39b6bef041bcb224cb923638f7a9bcb0048225382bdda6d4fa8fd0238e6ba2a7561d273b12aa770d5b930c7e7ea549524bcc899af2aa243232df7608e712ff6ec7121645272618d67bf99ab7f26f2459e1e017fa96c46c4669ddbe6153e72d56d4f6a4bfa81b7b20954f9f1fcdfd588e5bc75ecd35c70398ddc5fa0352041d48dba7580d711fcc9024cd1d9db7a8dc997ab2a054fab250fbdc115bafb5f43a10beb16657dd69efec0d760a3dc82656bc361aaacbfb7c5325bd078eb09d7bacbbba8f472dff24999f73ef32d5f8f61b67ef0fd000bc525f38d22f2571a7780bb7c37d5781d65204a8757e9b6ec05f95aecc5abc9beaf948af45909a9a3858be4e5e67f198b995a03cce8163f55708856ffa4f64cb19f698d1adcd7b315831bc9ba17bd7a4ca5801b982e679b905026b4dda98fcf8f657a44e5fff7ad33b6a985d6c96a6f0c25aea32200ea1722eb116cda658a1f5a3e325b4fc65c08984b886f5d822d60b3bb17dfe97309842c97c6d5f388ee7f8c9b2768a997855c73bfc1b3f570447a9536339fd2ee17946e6bef6d430989a04125232a5ff3b7ffc648953122a1d64d7c0964263e26845c36080b7b8a5c8bc9ef1ed30b0d2992100e34530c690459381c67dd0504a2abded4c39703796568179fed1d35f8e1ec067a61a7f58ec0c69d172795fc2259fba7da4509503a0fc83b07f96c7b8b564b5d9505a152eef1ccb9f1e9ac56a4e2935306cdce0d0e18ea00fe86b952f5cf262111cf2412b5e430a27fc63722544f32147dfdc8b4c1144db3d82fe6abf7384bdd829599c3db011690420ea4d947b602593907a0761cb886c3f4b232790aaa274d18205f9a4a2ebe7ebea660715320a126d1a78244ec9c8b486b9d73209bd863fefa91ea32b85a9650ba3347ef040bedc277e6bc5a63fcea24df3d6c96fbe613da1ad6cf77765d162cda83a989820b18a39435ac11190a04fbf683294fe06fe7b450daa622d8180e67e7d7ee09f52d2754e2866f091488560b7b404eefa9b32da9f23b3e7d151b22a01832363623100f7d043f2a0ac418d84dc0a7cd450622ddca11f9bfba739309b1ca97c935badd37fa7c1de84ab752dcdda39a37cef2c8c9c625b1481ba7d5666526ffbaf08344cc43a26273b4a92bd1392af9bc42cd14efd58dc91d6cc6f5514dff15c5a2a93bbe59cd003a4bb0c267b8a11e1ed8561f16cf1f94057296f811501c6707e690afa07b61a3201210a7afcd0db04777338635c84679e262169563dc14bcfc4b7205731e98287b1d0053df4a54a1b94c3e5abc5adb881a61e8296aaed357feeab82a44ac596f521b06e8fb52425528672e08e9bd9cc1aa8f534106335b15687b853fc15cad6cfe6271379f952f41059773330e8b1884439ea519ea0323007bcde51d36b70b94c910f1705277d2acd16ec81cf3717d247d842a48929df91ddf3c925ec5fcd57555d0af1c22e787dffc7ff6f0235c4ec496e9d4c859d88911bf8c1322f5c29aa3ce851d3ad7d850437c16fd65747e2fed6285aa68519b9bd3d070e3dc48ebb4bbd11faf191bac8501789088f27541bb7958d004775f5f6e4b2f507082915b0812fb71a8342f5332daf767033a75d3e10a7c8939c77266757c8f22fb33903658e03833f5cd51fac21b51ba1429d32a4d1f1aaa9d28d54c3ad5b5172e06b150312d3a8efb5b228877a30f7f76a965f28f39ba8f1472a14c4d0b9a6fbd0bc4226c7f864da90e51ef1a285bb0de66b30bdee34e89021b905ab48d26590fa6fa532215779c5a45710596e9f09feae82796c505ecc3c30b6f8fdfbc73ee568c01d201a2a2384ac2a35fb32c5696f97ae08cbf5e77a0fa1a5dafab6950649990555e33159e25a5739ea086b324d39eec76f24ad4c6068c684feebc15e2791df19521b02cdd59408e59e8a35956d063a295bbb200c448d6371ec41777a80cda9874dd4c74e9dd01dda875a53789f78733852936c33f689be47692b805b8698241fea8c4d00abb14150a212a2b687a4c0ad46a8efc4880a54fbb8480a9f06dd6dbb01cefdabe1e508b1e3b898451225c49819cbce815c42451f83e503784e83d678ab777214661d26a279927acfc9988d2e18fd95d1aee8c573d417ae262a20f2327ca127968489ee581818e493f93903d7c7112af476c1d48f673359deb96288b0642d841f8ae88406b2a2e05b8de44733fe56125e26cdeb9550e2f5089b64a7be809032684304d85c6aa6bd0a19511cac79a0a5d96ce006c0c044f16dff59fc8e19f5cf559f0248d031c0b5e47a499a41fc8ce33b131b78500cb9358ba7b5de3af38955ec3cea2836887ed673732ac16f007d13568d9e9332e75b0913185a6f4ad48d0aa4814b60df013eae193509cd60fa783426785b4255e98d7e928cd8b41e189fd5f2c4bb8cc7b497ec286ebb8f7832274086bdeea8d66990ae9de9cee2b3e0769ff8762ff32796bc96b2fcd41a2f5a49068684fd530bb0a08b428b11c4e3addabdfd5b258a04bfe51eb2336a9f3030ae47714bcac26c20480d97915a705673c46de58ce8783a6a4c38510d6bab4957e434ec350ecc1763710e8be460351c4049bfe876e9a9408515f8347c8e39351f5575e00e13ed4f893925c65064fe260710066dc1bf020f74597a1e2de87648896db04bb969a5a9fcfbaa9b62cf8879bc56c9a30d96ba7950fc940ec9914260291eac414a0d5b8b5176a7ae2efaf7be17f065649ef6823c8a6cd5233515bb4c474d3ec4add7cd42c22870f5537a190a660328b13bd83f93ebc9f379b25c3f743a5cfd557930d45e03f8f426833a85c36cd5e2cd37dbab582d08b8b8f28648310b4b47c084128f4e2f30168b27485813f69798482ceb9e08c2a62511a88cecd8aeecc1b06115b2d1293d609319e511a99ec607fa256a2c9206114075d82b3f10a2ba4c0dbbb24c95a415e986c383b5a608f15494222a8550e5656fd36c2fdc69822469e154bc4a565d5c39a3f3868b89f0cda1172982e1784144651a7439ae32a3ba980def3d86d57452f112484a6c860cfc147de5d2932923792fc19bd464b0ae89021d9b8c9c1b95381e8d2f35c8ec5a53c82c60573f93f64cf51957f029f3d99ff94f7393a1225e482082ea1cfeef3aae9938a23ded96953eee4f3868c33f06ff8813c495158a6b5385c9999e06a9d391ca392bd20e1e88d689a634491a7151956064cd7cee4bf9ecefe6f8f5648ae7cec2278ae76ad6a1492fc222e0077412459d18d6533f9281970cc220b150ca0e6547ac85cdc133296c35e624d114a8f1f44d9ff47905e1164aa6fb54b2827dc9d40b18b84d0b4dd9a56cd6bd0f012f462a9f76e78f16a29840db216d268314088496a4f4890885423c88224d47cccfc7e43a7317a5b2abae7d603bdffe232fbfbfef23c24d6a9143203628537a75123e908011a53239e1942189434342882eaa8165e753cbfee86c63208d7eae1003a2ac323154dd735ac83391fe2aed361bfe591227ce8629cdf2b0722df0b00afe8df8ad7098e31438dd3e7b9a6169302a3e728b62273abb8d202d690f8cb2900d9e59f85588ed4294e1e32e98479f14138be9b61ded19e57ceca597e67735619dc0550e6fef43d2b9354f99ab88c0a6ff93daa29731247a9474b08ac7be663f74b7725fc352a7ed757e8c9d1f867fdc248aa3952eddc547318ed2d6449587ffadd8bb2fa42d7875ddcd3750f120f0cd43e0d6a85472a7504083a310b2f6e9c65af60d66bcb7ab17ab2edacda3a2ed8c405b30c8591845baf43f01ffb10f9f7bd745c3ed8aa7ee140232bdbe48fc4af335413d93e649b14963c532de96c03e1a79dad415ca8907eefcefa7ab15740104b78b538ec5bb2243b7ed26b9889f08e535492d1aaf5aa7b2a90baca078fcb84557a539edf5e54c7141e0312736237c151653897ee481fce1f548e5e580879377abecc18c882697a5775c0e914b55e9f7b9e6f75b46dca64070d75e83a31a83e11b5bef63a0fd59e81b56cc80038ffa18747ce862cc3e532953196d233642f0f296f0574d83b4b4ae39404321df1f47325e84f7444ce86b222dd1da34c1b2a6fe83e48508f58a3f5e14675be470a2deb4db01553c84688bd904b4e74ed59b33f8bfa9ca6c267080286c306720f3c1f3e92288b3faaf171af1701b323e28565e26df74a42301a8be568dc0d0166a47704fd78f6d5eb64b85a0655d6f1cdfed809f56ff91496fe3d19fba1195f1d05d2e15d09af310f5c849c9f4c06c2d42c84c9f0f3f08ee073007bf370b13e1b432f3884e55a254c980b06f0ffc1545414b907c3ba80c1adc2305dc4d13ee8c51c509807630e695a02bac5093d13d69757fb99f8dd7c48ef108d550f6e757c6bf67b28be7f518c1b201334712a85aec3471e08fbca221372186c7945f0561d1a32f6e3d34b5dd4e79f9e9d52607d24b6b0833589c7c2087178b226224642908c4691b3da4efeb56b16c586154e5a1a95ea1958c0da2ad59a77349eafbd1c317e280a43f35eb07186eb86024c31ddcd162e364f373b8cfa0136538fc436149166b8bd504805dd7967840063871072f8f258301e4f3cd6fd3b8c9588fee3fbb91c008d27c536c9cb7052cd26fdf018274452e490d7149446fe9a58ccdf39d49cc2a16756370bda5cd3d9c3e0228c2e17c948dc5f49b3d81f1ffdc159985c45d7debc7970f1a00fb20073ce364333167dcce5f3a8c2ee5a1d7e94e69798d47851a7e5b197c32ad35be097168be7b946fe03d30b3990abf889c101e17055d8c6374809bf16b45a0f7678729dcc5ee905004cfd4d860c9a954d4f20a53a8959f8b3c44866b858e6c5881386b94a53ef33b432ce82955a355ea0b36b329ae2e731ed6cd5f9cd74973fe4bcc76fe94a542d006e0ffc993bf76c49ca199ab855e2c450e9b5a88090645fb5cb5ee130a3e82ff523266ea88267a8249a933f025f010b0780ea7f4bbae8ac62fa6eb94455879b3436674c2a0dc69962c71de2f0e5c742ec903d73d15e312880cd03da7890b7c68c2e6395011c48c70e07fa2193230d3a565f663f18caa574625fe8a7e3a584133e04cfd1dbf49b4a1dfe6666f3348e0172d852f97c66583b1ab8fdf9a38f1297eb0d393ba52bfa0107f7f58a59524acb4cb240f4d3f5c8393946e94e0402e2c4b92593b2fbaa0a427cb56b56d10af30d6f094eed88f727ea13249d0465711664810a60e01a5e7d62a6d7baa0e465e157a7d82f46c650ab85ea5b11242dad7a674e871aaaa0983530700a6356b7fa636404109292e6db063900df1d2d308de276ce8516db2c8602305c587f8f89678127e7f8be4e01f8a1b09217b958d9d6b6035a25bc5579d090d4c62516f0b66f39888909b325b9213c3dd113b917617c5aa81f0d68e47251dbfcc0021bbbb910686861063e9469d3ec11ea5cd27fe82750129a30c2cf74e48e96f3313ba9a95a9374be37a95edaff2c4ba3fb7ebf1022f734f5b5f4830b292a748ca41266e9ab0e90cb4ea4c0fee740bb44b9f27772115cd7398b3e10c52bd8c392ff15f5677ad1ded937d9be5d4118323a9b7549498c585ed84c7979db0d4657235afd23b412754c3f4d1b15c50a7ef978318dd64945db8a194b73115fa7e6df7866954600b279d588b771e0dc68358a03bc5460130211ee2ed69c92f23e9c3e0488e3d11dc52d5ecb23687a8a6cca36e9b3503c1266bf8d42189a2f9c84dc14078544f86873ed86c3c0d31cb233cfa80e6a54ec32399d33fbfb7b9aceb7bf0ddc94bf80556dccd23b423ea33d62e31a429879699de2c61eb4074b3332207653a9a8804329e150890987fe373fd0e01b2de141483fdf1a1e3e11bf0147e7a87fa0df77035fa8eddc524d3a451ea013345a02a055c406ad1a324634cf1486218218bd4b3c4886f49c15a8402e1c1a5a0a2a6f67d46c9ce42317c6f3f1ea7c08b552862a149d9d5917ca64ff13c66e85704fe6de7e07932fe6d4fa6d58c8cfcb00c52b9cea4c73334730420e05001d7e4ccccec47dcb10baf928765d17ab1c4a806a0450cc3b194cd391c739bc4bc0f19782f47f29622cd9f95b2da1e3ad8a0052bf4f0013cc3cb99eb21716007abb27327ac665889f3eb124692c802c64e9f10f293d9c620fe01e4af983183dbd55817d2cdf7ec5137dcc115939b3ccac642f0a0af5b4f41e02e3b4c419196464da4142b1193f057d59d13750742d1436be8053882651abe9d8ba68f3149330c0482e743dcb23972de8644a83d736cc15f99f8da99f2379d8648f2b53c719610178479f0bf0c5829e67e22350d153bd7b1c1e6e6cfb6d4a5b81cf3cf7492ddb9ab11ad0ed3aa8b6adc4bebc7608eb3cb79f4c03cc36012ac6602d546010a9e9e73900081921e3ffa53201989880240a83e913ca1520fcbb611a191018a10010fe6fdb4040a40cde4efc41b22b6db85186bf68179d6e8752f887e4c1741f87a6ea27b4c9a6a5399fe786b69449eeed16bb02ca02c102dd0ac43e19cad8ec2c84c645a1870eec8cf6303a1083ddc09509c1b94a99db9b32aa43dcc5c163508fe958120799fbffeff4ca2036f06dc419fe908233498ef1586fdb9c7327eb3f39feff4f6245b8a66f9c73cd763ceecb0fd5b5edb787ecbd7739aba3c3d721f1e5165f7b1761dd5e03645459708c2d57cf2aafb4caab4b85eb6c39c42cdac004526cb76d9ebbd1db916bf6aecbcd1ecb4fc922b1f42d2746ca21ac24675eb2ca1c12265a615c5e30b9c85b0877a9e33669e306f4ad3fe79c732d65105b9386ea8e3e5c3fb032c8f3b8b2138020dfe8de7bef1fdb6b13291226e53d1d0ad31eaa6a6134e2342c8714bddd73f7ef8099af0861f7250966ed71def1ff0f04bedd649c35d5e8e4e008811e19f16c108ded2022e79c97dd80315039a35fa127e0af8594a69ac95368269479ea64a4db846b7b18690fe31130ba9c467db84c8d21c5cd18584fd410262b7138c46067101b4d3dfa74fe5984907db933173b3e23a611933555935adb1ba92710ca9fe7746d49f853b54adbd8263ef07f7e95438642e9f0b89f1a75e9ff316b650f261f31da023f5051b26f18f2b9245a7174220a7f4abbe4f8ff3f223d92a1fab21225529631a73334556a16553581c26cc6a9c6db24ff7c3be28476816b350ecd7059512602d712ca8aee11699232f46ab8edcbfeff7f97b76ff3f6857ea8e9ffff8f857268f0dcedbd77edd10c62a3754bf557a7627979948bf053b7280cecc54f082a414c35c1b29619bbc48ce51c4b002b4e55071373185106b18d842169dd9887109fa3e98e73ce39a777103a161344554336030dca9345b80c1b9b41b4e3bbc769b6cd8d9919a3222388cbbb13e56524a55d6a614c01258b7049ebc6bcb69b1ebadcccd63a50d57e775d0e216689db1d17a1414e6bbab802d69c680731b187cc14033119003cefd5439785fb769fdc35b757881d4b7bdb7bef3da4b8fd97b97137f4de67310d02325b6606df6e26fea3fedd01e630ff7e02873c85b3c78d7ab8e3bf9b9ae8facf4310bfb6e69dbc8a1d7bef3d3b83d87aef58c994df1dd93b27ebf36df39a0878d487563e549a456840be8d4f9d8c7bef5d0c4a06b18959d1ba11c084a25f51d3a8b037ab41f245d3c422b48d244e5b9a003e4203db09f0d5789dc8c8de7bef50539b29ec889dda2316d39a8fea8b2f9518261d6db530f1ba136bd79d5db862d5f99493e7979f9517740cebf312ad951e108027ab864c926525280684b5074326c191738e3678cc938b050ca5ac284b48d88576672bec2df1ac31383b05ceab08956b35c0aa3e9717469f1d1f4277fca3c6e96a0d4f88905036b1f7843153c29d15e61496d2ecc5d6d50f698b6cc7374c9c150014d90ef3290a9545a521b9ebcb27d3891331c0fd32361ca48c5dde7e78d472d2ba3c5fdf162e3125358e8c50c5330e54a7148eedb26dd8bfd6563612407ceb8170467e323bfc8067189aaaa185c74a5a48cd2cbc20665031a5d4955552bb74768b4c0405f667a1e26114d9126e1b53b42b8a880a4a43c760a6901595d2ba596162c3db2c25b2bbde37c400e7743d8654ddf49a89b819d8ff3fd8f676fbfff898e48a19e09c734e026b7bbbd5b0e09e852d558f5c5be38e57b73adba79427211ca6a5bd92a4ceb30f0aa1f12834b4b17d9a6ca93009e37d9faae8f2d8c3e34c5c63f9ffdf849d416c34ff4de227bb9535d4945c4e665a0cd611ab066b46f70575cce7c016763022e75bade01514ab157a8145b9d07a368f532654aead625b0983f43e80627cc5bf7c414e602b54ca70172b065153ce958a8d828673ce7d7a223e401deeffff6b5aaae685ac71e2fac698923afd7e4968bf1fefa75ad0ddefa00d4c83da04c3d0b07d999e55777d58c27559b39a32b9bc9d325bd93483804ca8c05793a0aaa26b0a9f13c1b59f7d62c48c89183ee215f68584a798cc928f876c660c66a3c8f5128e11c55a124e540821a18bd9114c8f0e2f5cc9434657c60c1c95d763d93a02be110bfdffff0067101b3d74d3c1d351d5e2c805cb128a198322ad52e33e19317572c8af19d3c06d6ed79bae434e96ba5967c7246400516002b14133195e972951c95fa5d810c3ca6ab1120dd93037ceffff9f00630cec598442339a1ad282b1e29712a55a3ed22db794bbdd76cd7228887c6989c27281a9c9f21aac7ad815541c8a028b12db4a9e69950601d9c939e755d9db4dd6729d386bd12a22cedab0b98e30232f2c49eb6afaffff49e862cc831c61053e777c4c3e2ad73e62b0052c33265634dfa9aa0b788aaa50907c952cf78dadd9b19447ca809cf3ad98012e5895d70b48a5528267870b2b48050a74db1c6d59c8ace58e4fb372f8ffffff8767101bdd3fc7c3144096c65664c75c25d4a648b52e1dae947afe79928cdd7fee2c443c837b39feff85353df59afd8fc5b19a92e6cfaa1931deb65c69447befbd932d9f47d6d4e59a20e4162386cb598b73edd4d1da4b3245d4c98385d3a43ed14adc48ede4d39d73cebb5a64109b31a9e3c3a293e89af6be819754ada3699aa6b91c7665629242caa2c1f4fc14457f9e485ecc5c5df5ea55b763d7e8bec606586fcd8aab24d85480d6040a78689d91c6e352e78e6f9aae02acab37f1f725e2909fbdd97bdf39b9a6f73322626e06295f309c911f624b4f4e463b62f74f4b5da5b0fc4b9072369580cda445b5e677e924054544eab055fca8348a385ed99573126f0357dfa49ea41419a813e03e49015123a160c9d9aa2ad1b4914fb34c2e698ea7ab6d04092aedbd07771d00b294183516a592e9c609a8c6d7e3ee9c18410d6b2899dc9ef9a02faf51f6850c3c2bf9008148624316651b77dcf85ebfe69a03ec3af7a8ebad8bec2ebbcd2eb47bd4bd76b174efbd772f052ac239acc63786ea6a4739add8a7c79504388a852899bd840b2410bc4086e9dc1aa893e7e66e6645a2c81ac686507a3e1e27a4ee620015487e6a30365c9dcb9d44d23378dbc07ac789b1c99a39063d535690667f325a4889cb4d1403151dedf8c7e6263439498dbe5fca359907eac66946486d6a0f7d301cca3f1e50b25a572b8b5636e243a3ac820cca6bdc2a3962a5a39b16d5b0e1bffed8311e5f40dc83b33db66ac61cac9f55b59ed2c692552a74f94cf4d0444956783b4c670b6de4703ee122205c3316116efbffd756b14c0e6a29a2652b77756ac051aa649520d9b9f628739e5cd0823c36f416838c802aa55d79aaa1a9b2e2f42b533712925c67dd24199e951df47151194f55c7a0bce22ace39e7f4ae8ac3ce5e7d4111aa85f4ff9fade9ffff3fe1b0d9889f6b2b4e06588ac150dcfcffbfac6914a654890c16d78e782b7cd8852d77d895530f56f14c39c3db405fd6c4950d6d6812819c73ce390f7981d2bb82a8710acda854f185016fc0a4d5625adc9cf00b116aff6485676f4701c21def92531a48e2b2114bef61562e6e0da085227befdc2662d48c6aeafd0049a95c6d4970005391cbd912571a0c6ffb346baccbb319af700827b0693b5098b52523a8519480fd9c91b82d18284e843a69e1133fc3ef0ae32bcd9835b1c3fb2504db199440d8fcff9760f7ffff5ffdffffdf374321e218ca6138b7f49fdb5b7ac300ddd2a19ab24123d20c954bb26030480310ba6d4942a22e69a8d6d5d4241fde7be75b9cc80f392f6531a1d8762ad6dd787a9de687dd12e7a39b7d2f21b8ced68308b7a3b46137e32dd2ffd3ffff5c2adc1c45af9245d48428fc43031bd3dee781856f761b85a1d104b35770dd9cd3f9ffffff08145bd32b33b83ac5a636f4927191c8bc6a5ec8b2524a757550bc78704ec0790538cb0f04c3fca3eef9e63f6e9ea5e49aeebd6efa62e8103b1fc0326b7140b32682c7e683e27c6a1c34cfa917369a345b74578a26bd37450553b44d45dfbdc39c6d337f8a82d83a5539b96f9501760e876d03608e76ddd3c652eff1776fef018d21a8d48f767d3300c403b318080400c44018c9034d11e50314800315b488ac843438303c3c240e06c36040101006080001200008060340814020082687c88a81d9004b7892e68b6ff32ca233a401574e9cbdb25ac87aac7a9c21a03282d12944e83a9fc24a51229be433fce0d89646b189f012a5a2f16c622ced673669784eec24c0b1b6bde025317cf510454dcaaae98b684312a9dd408b9448143ca452b3c0d2f4c66ce153d40b5b1c328c1544349f36478e889c4f550b351d0b1d0506b1a2a0a23b5bf079f7294e80ab1375bff77fead98d6fbbd32785fb34c1c88cb1d7832b8586bced0411dd7c0cca60a1c6e007e8a5a22e5a6326973b47854815fd6a5de5202ffc56c363f431f6ab1ce4895a02312848138f9362e39ccda71b15bee048c3a8130b3c73c5d84656ebec0431ad06dc409fca8aba16e5ce3c68dd0466ff8d747c1c2f243b9b423401a6e5290728d174f7d1a1bebd90a06fe82816f2dd31a5be458573851e407c60da24a33a3921cfd8d621fd7efb74b1fbfb2f6a2f092f0b2229e14831a9d21d242f8b4805b17e2767a9de813c8d1c4910c5692f9fe23a189f24a22a913bd8837d59ba9f8f9b97e5b955bf9c9734442ea94c84a79b9045b8d82da8a0dd2d820905a278f718bf2c3f0a985df55480699d0401a021b34ba93e84f7c06ab3faba66f71835b81cf6b2b30ccb6183712b44998c9f6b4233a114c2cc7acc9d4150d413abf13900808a8ad5b86a946040ad26a9974db9c26500a338fd221a9f1e2243a35ea4a56645642638ce0e4721f55c5e648e3e05289f5844c926364a16dca6ac4b1900e253e5cdb1c854c4dca11bbc85bcc20b82f9bb3a3778714cacbedd8dc8420d747e034b44f60f2a72e61079bf7e1da036530929299839dc8dff3f4f84b572fb991bf5dc2a5b146bdfc4d8523e418256ca1ee5f1862950e6c896a609e2f9a36f31b9448433e0fe43e83a20b709f0d8e37a57de666a4c73a3419a0319e6499ddcd5590c2bfa8bc7ee611046539002dc5ef79911baa20a8e2770fd54897d4413bba0112bba4cf35a652fb31c8594d8f068df5c64bea435cabee2dd01ce1cc825e2a1c1ca1a2bca4073db489e81231fd43fe4449f74fc1974b8806dca4c153541741bc2edaa5081fd46d1a1431950d2011d54cef26693fbac08ecb4d310f14e09f73cbd26adb9f28d5172ddec7614d23cd22da423a8ad1eb1aaa62c21bc1528eff46bb4fd396a3d3f53e70922844c025322d57d3b4a14859812c9651148e2d2b0133df606ee2f3ed7c48046816aef724632035e48f3f25823ff1068664881129da7009641796fe6edc395bb75289c2643ea60e2d501fd66b91198b8b14771e2cd93e5e493c4f8a7fa00299259edaf1c1062a37d234d00d2f5a6164610175eed87d9b5e157b306b8da8badc48f10032805e6970bc654692380a23719e4d2acaebed1fb8c9b0cb236d4a8365ad56072d74ab6baa84183d17455ebe50dbf2e111fab084ddb7968cd8a5a0699070748f4372493366f2b3aeab52aa514c04807fd32cd11294c3e42c43b03640ad413bd0aa6a21bf8a3a6feb2cbe05458a57aae6eaaa26c962aaf62d273122f5a18a2ef8be1988174de4ddf22c6bbe7919ee1a07b3361a4f2c64b22d972659b2d30750de21e2f47870b818a0db48d6b892fb7aa8db9b17019b72ae2f9869558c1ab69f1fa868d44a5c227e4e3a07cd8c191c85f5a264c9c41694f4b36a69ef0264e818c62e5c5ce4bdcc27b2e60e67aff0d17d17649fa2a7af302ac8f15afc9cc14009ee9a649ea5b81e2b8fe2410c8fbd71c03102491ad601e17b02b658e19e1ec11e0a822d1aca9d5d3fdbf94c5bb0e4f92b8132208fbada6b6ace7bb449f1aea33989aece1f28e521df3fd4a44f4595fc34dd82e17f54f27c7b291aa8f82b4bc9fec76db016ce9a6e4869b5a566c900c45953ac70e8b87791e413632cd8762fa5adda1862f78c35c8a3d33936845825454be6a77fafb61a922ac44f0b4eac4333962705fa1932ab3e6929b3659d95c127582d703fe67218d371981cf59b6f162c18ba2be9fe18797081de33e5e9cea3cc7c4f600f9b9710174368fbd3762d3bcf5596c10cf45ffa128887041c16273274a8745bb6fe8a9e6cc44fa70091629e3104ac06a3ea93d52833e358594ee14b4b82ee07d5f4cf963c5bb397c655e132c3ac6c30f792e999962bdc10c684862d560f43eae627b43d9245645a77fd48c98256d0cac7ee83d5e2a2b1d10653763c9f6c82cb807845ceb8bb9d4ac4f5753d2a6ed4111b1bf1dc871403868fc66e13041f2324114e33c8b5913a109b2872ca18a6c17018bbebf6bdf94b3cd73ee83c2427ac3adcedd417bcda125b429465ca2e63b8a81e8f97ec8bd84327768883e1187ff9dfcb55e04c66333407868cd9ced33b215ca31af490eec94634c8e5b8ebdbba5f573fc5fb5727334938cf78850c60a2c3312f7b9a9ddb0cd75c836d077a5b172890ca787a88dbdaee82e60b0c332ae8333df9259ff8819a61990ac8e716f5c2804d814815b7667b8ed87173e77fca0e1748907e272ba3236f21fd1c093ce7b9e351c4054bffc1c90ffbce9a85dd6062af5c75c67cff1a77d9a1db7ccb8aa048463a75c7b89469a4c62cbd82c3c4752d0b1b1826955801c56d2459996982720df1b1d75eb9d267753d23ede4789f04b2b9af258021a1ad2184ca83755186364fdaf9b2ebbcb52d40b4d10608be2327c2a34a6e04e862f7ac2ac6944e9b9e66d42e1564a4d615179f5d04adae7d27760b8cbf23b9b65648e162aa3b76db3cb72f9d9ead24c42dd61763f86f399e5413d4405a2c82c6383e823f1cc4f5f2c9cff3e3c51dec51a9da30adbfe5c19b208d0700ca87b2ec40377493826d42d858e274d3886136e9195636ab26b822e2015ed57c25a791ec35fb66d588ebb6c3df99693065e1e8430929ad402fe22ef6643f1d1890f628d152d7a3e0c655ca6a6e1e28e6adaefe6601e7a373dc2624ed5d9441d7d4a4a6a891dec10177150413c33e21739b4d75458134df60d1c453064988d065dd5fc4fb83cb0f59d3d024f33c01cb50b26980963212aec4a9208b0103e0c6630f81aae9937a8a6dda8a2a18cdb3b04913fa97f0f9358c0719ff577650a563026120629ebc5b679239b8e6bffebd45cea0ff9a0cf7edb56366e5e52eebec1e4e3c3456d4a91bbb617d5fd21f71354b409f9e00a0954249793522e7742f168b73bc0ad4a346eaf573086a56de51369c51f2b090d466d5cc0ad8d40c0487e8743238ed29830e4f30581a863a2e0843d160d04ed0c5fe7d5540879d1ce333a6d509dd9b944d6cad4e4f7557323642287a78a27f621ac3a105f4e8f052743923345f6281e41400a5240b6340a8724e1af63824044501854d62c560d6f842d03c630cebf84633c63f451d8fc3d1c7bb8db5d033c93e2863a22792c800116dc1efa1449d6e952f18a0ccd9c2e62b21dc2c70d03379d00f0cfd64f37eaf765ddec429d031dc5cb0272043a9b9b872f76d8b226028d069520495a64e08aa87a922a86bc299df72e7befe7eb6165217e2d3ff1da59fd13e16005889234a480ba3a83cf241b49a219a308bf7a790100e6a4eb72a41b779aad4699bea290f5e6e4a1f60f270f4feb4c8f54b353b807bc551a99600b28e648c7f41c8167afc60b2bcc99b5337f5f538dea09f239c2a25257a0a9410371bdb522f57d7882e91ee74ad01d6d1d0a13d552c7d111ce38878bd86156c674592d5c14aecf1cc6a99af9064ee5c448a49242fc27047e3ae0998518ea66c6ecb25827f3e3d7befdc64b016c1f1f4488cf1c93515513a78c7cf0c23139cb482da0b9f8ae47cdc188801f031fd857eac932da7dcd7715cbb562493554a7282c711cfc3a6de89994c58ec948222d1d9bfae130f4df8c0ae96509099db8e881aa3489d392fe1578acf5e7d7cebf6f5263d85203fd072a352e8cb2fe8995b56e65598b54eb20d55a25e699f86d0cb3313d04105c54208020ed87e2d8c35240913628f8b206046924def1c11683c69b5ac7203871a9c6602a9da37f7790365cbcf13bb5c583277a23ac39a849bdef6b1b9499842b2d116e8348e38b961d2ed4fb3871cf4292b8a43d3da9df6a6293ab8cb46f24e05f988ea42aff9aa350b27e9b978b04fb173f8a44cef6c1749fb26a3a18e98d27e1c1b798db7926e643dbdd8e31f7e74bb3296e8a435cb81d1a036cca8d04eeb0d62af2426e64543586409037a53888af18f69b50e0d41ae959b9d2f098fcfb5a6502454112890d078baa5d68bb4a8b8227d0f6aa32f6245725380722065413f7318089c8c7f5ca16d0a4dffec0a88b65e203cc72940d2ad5e7c016b6061ee0731e10e34d27cd85e31f4784ffd6450b839fca3cc5a79b1c29ebcb0427655c074a7912d30b153959a311a1ed3f1d71d321d781ba911c865c7fae6427b5e38b0b70204538d439f22476080aa8c0a5c1e4b7e73fa085ccbc639294ec49123e529592d8b291a09022f003f7c85d9185e407ea848fc87501aa13ca4261d832f4052c4f9fe3d9296adc931660964580978fcc17e8c7f492de27c668ec7e9192f11eb47fe239be02a7e185ad48a30254954e0203c39a06028ffae69a0065c8109cb04d90dbf94564917efd4f249c687d37f321bb8e89cf04727c33580ff74c394e6616e7ae9890c918dea8e7c250b2c85ef70d443f24cc630bb4b9061a8fbf2a19cb89911ad099d6ed4555926ed648b5d117592b2246ac6b0833b14840b763b6d2e49ec5641cbd58f6e63de7dbcd55fa49322df99798b66811dbd3f39b80089bdc4f7ed898c120300cd65b098cc361b4a28f8595ed45e88cc0b882b4601848dfca70fa7c7d9249d689a7177b3fe20a00cabe1c2ceef3c2b0261b30d620b79adc79dcfa48866bd521890f83cc1a5a0cb0d4319bdfe854bb12efa800cced284419099dff07840a2e6e584f11c1ffc6220a59bb9dc3e1a2b4ebd9de3e922c2e7147776f1af89929c9a88fdf896fae040063b1f3c6c3e4702e31b32e64b078282084e6ccfce4d904299089c532db8c7740119a459aed7870e9f5f3f2558c8e5c0b80b47838cf848ece8971347e651193a7d446c4b879deedfdf6ec08f25677a304724ae3e3d5c6ff94af6e562bb2dc4eb2ad6e1028d3442d93aaceb4a523061a8751c49f81f06caa1986a78d50039adf280218213d2850bc6f363d21c0cbfb70cd4db61ae90a7ea263e3694ed65b92d977c7355be5f4064c82ce2f42f103aded94785ee716bc3eca69b86ce396f045465bb5783019ef9dd325e18bb61271b0517368ad976953199a9cce42fe5e220761d0046eb2e7f877b9515250ebb8c7d558d929dc3c60ca0fa4d58cc4cbf58d785beb2780c97622b0040d565fea91fb14e70e380740219360c0680779f25a8fc139c298425dc96ebc3336476818252df5a72648f4ca153c40ce2ba749ecb0a2bef726250149327e6439f221b69a32ba1c33b24281c6f4413766da06907243a4df10ec811700aa5fb2bbed239a13557555f9ee168950821658bf84502d1a9c6d7c597b2d510bd35c7a2eb2b2cd19461ee13a176fb133400b4dfc6bb13d4443886c0222081f168048d3e3a3a2fd2da4374bf2c63a550725227c0409ff68451562a289aa812fbc310969460486254d68649c08f40befe4faff6c22c18464ed5d20b84534da15ad70be6c810b6dee0afbedd72ca9589c6c5f1074a3809b6f828f5ee50f5f89a8a14014c44d91b186d097c6f6db83d2884b07ebf6615b60ce4a7da53c2aa173867c3f01fcadb3698db343681b765f58fbd2e7d635270a6431cb893c7fdc01b824c38586090ac14da51ae45548979b92494190604b6a2a60d2ca31985c6c7fe39791a04fae0205ed93582369ba480b9c030ca53fd38e53b02dbd5438cca5b221578f949921a2adf3f0401c4ef34cca520c2925cf1fb52e22e737f426ce5488c4cc4d88671485455d03ddca93e0d947598a29e34af95b1ffa59909ab00819292c4222e2ef84726d815e410a50bfc2af8ec196a026c1012b16397a74498df975c013d956550f45c6d481f311db6140b0173b4b24ad46638f4c381871c7cbaa179b8b161baecc81774a8e726660e57977cf1d9889dae0ee14a772add93c4bf4188c76f88c5c6d0244602831308ccb708dcd177c5064c1e758126dc211484ce6bc7d66464b1c51afbfacb297ec8b4819fa768db583a72c32d678bd5c71fbcf191325fde71ba728c795634695ee646a7a366270d0aece502c23c9fee9b3412487d0b6ad7791a9819a2ce6da9233a20b44919346f7de9a0326a41e2b44ab6b53006b3deaae56db9d5126dd428f42e23f4429c3a17cadc115216761e240b0eb1eaa8200e93e7e8d4aae4e2cb92776c27f07b541b4fb8be97baf4f770e9e28b298ff02540d74aacb5bcbf4310094996e864bd69d919f86c90f9b39a3aac584b3202474846769378b85918b2d3c9b963c75197cfd9c94a4899d2ab54c61b58102c0455d02ae14de2df6a4b16157b3ef040355fc2176f86c2568a96b406696f308e8ac4b81e9d247b3f1d02a5df64dcbae3fbae5c022aac8892290dde1813ab4f74f196ff5f242243690f05d0c09223f03491c0bf391339f695e23981140fb157a4b7a4de2db870e3038f87b8e3da61ce1877c4aad8b52d8b031cd628909eaaca0a575ba97011f8d2e8581b5f626ad5a333da22a3d56c7a4985e7bc4748c548f2c6e70823f617c6400b9329a87df522a1eb71f6a3542e3cb71b233af4d3cf2749702a7ff40d64b21ba55b2850af5a649f67f6df8c93efa433092b421f2cedf4afd141dd21a445ac9ce2244d5e31303b556c1a02e646b0812f0db173ba4824865c695fd67b478c73c0acd5689ec03ac538448b36856e077b848740d72bf8edacb3d73d79fec4839d1998bf656e923ab70088318af0aec1672a5baece9738e830df0f7d8b2294dc7780234916b76992386d8e65e1e8be7314b8f2efde416b322241b59a3bbea4e8ba3da242c7df30aa876a5163029e0f227122723897344b1912e6dd3072c07ed0e624e23cf83f478ff02d81632b1c4ccceec7d05d0dd8d9fd3782cd9c599aaee6664ac4d2b2c9155a5c4280f518e7427b7b9b99e4b1deaab88ff4ea48658ee24f3bea8ec01683ca8e78456901ab1c746fea953cf46e1442b553359d21f97bce1e4de7efe00ab363751c7480ed133c67b43303f8d10e0c744f3758e345ad9e81a7339df68124a9e183242420372e30841d64687745b4934e1df6260a9184d2ebbe2561940da2c08c16cec52024a7937e5372d996a4729095c01f2fc0c02a10328bfbeb2c2150e44fc8bd8f683778704ddcd0481bd5dd33b745b0bea50cd07510483671b2c6a7b1cb2f8d6e201609d4879fc305b7c9bd869fc80b190c7df345c767907e6bc165bbe38473b8cc326d32d0df37172b50dcdff74377cd7d462e8e36b520dd00d9fd7303f3bf398e422318ae80635c98461488b727080cb42376a55270e61285e7cbc1a6e458b9e3bd4198b30f124a939113216c53d7765b298b70563c9de88b37adc6c24f1a186b5f1acde3dc673bd27e644689961226b0c2148a94404b2cf4d9dcd9db2dc26d15273dab6969a16d5acb99b019d56e90b1d3c0f6597cf4c39ee39ac71bb62eada7d56093636bc0a2f4eed30d8d6b5e33f37b93a7ff29fec7c0f66257ab170011f5f4913b5818dcafaa85da21ff1c3e4bc0e9c0282619e662007b26af72dc8faee68b64574fab6b57094d540896b51ce1193adbe85688938a36f56b48b2e49f496481668051e391635981dfdee04c39320262e0e76186783e5e4cd8771cad996a20e2f529fdcc94886820d4397bdf72ec43e28a842472385c0e3ebec541b7a716d3f2d66b760872ec9278814620360ad8211b7c43ea1ca6e480c8e62000d9252667d05e0ca53e3a8e05832025849e193b3194dbca864f66828fac6d182151a40a4cab1a25ae48c327f3795d115c001c3175856ef1260b9c8f7d24927f72ddceca2190b4b055a2c11390bb4ce8a34a91b6e63e364dbe65e6331d810edecba1ce1047cfd3ba5a05f18a7e40ff0296627b64cfddb1550e76857fe675f97e738a0d3cdb27c746c08a8342885c0bcf324126465bab36dd92e8341c091b4c5371e0341a3d98e561e47a4bce390c7130f0bd812687042874551f1593a4604c31d1311c093f19b59c4e7f4a49b010a163652c73492ebc02f30b5969bc3948e9120061d3ee4e69cb3a2e3895f0052820449408019de71f33b9000d2604398859d7db099ce0a8f96d44065af280ee09a0e8a49d9956bef3f49b9b1675cd77611806d655400a3b9f46c0fd75a00efe2f1cf5498067d550a2c88b716e96700f504bf6ed8494317fe28af0daab259e4cf13a30605c8d1dd04b2c1019d8461c4fa537f1d1e5c65d77f30d9be688d11375dd9a552fbf32b51a485248b84e28ad4723488c5ad945be417721d1531294cc4d7cc17de8db8c344f522b7d0fe3cb15ffb9f988a908724a39b35277394355c70ba937bd116e39e89932e352763135b427145a20ab2f0d882a0e5f349c70e99428a5e2c00ba48730c23b08e80404b145e696e41796262c1b3afb05372df764eb110df660c8ad1a3a54f9338eea2aac89c7cfca7a635842c9c7c692be25e0ebf56dbf8df28cd90a4b84a866a183ba5c556c07b4c623a6613b47274866ae12d62023d472dee8158907a47199f1391c1dd7ccff60281ecd88b5e8eb8e8234b2e4cae2c52d2ebdddbfd14bb5293903c63b5541f6c864ba5214b52ba97555980d4430cac5b4c4672a28e8cb0baaaf8766187b0a92b04029df9c076ad25b338e0a80f18a9792f1713b8e81d75e7f85a60faf267837baa2c61a981bcad46dd2f3d85893f57133130089f64c1437e398357a6a01436b74712a2e0843b9af0636a41901b02177045019ebb954fa5bb4848e1ad4db26c15fa84b2de35c454d279ada346aea4dacf10c3809a4d5a1124b09f762e235c6868aa500e2b35f5fe7d4aab3df3ec343907c659a10c22cb743830d9137fde32842102674991424187d59b2eff88d175e4d9d9136e48f5583ea5f0584917e30f4bbaef97b98e5601996589b74e49a687d90acd469a198f136f4b511e79bb292fde23aeb86b98f4cbe404776b5760894c8e61e112d22bbd9c901958306829af23ccba61090509489f9f74fcbd24d5d35b988cd3ffae2663fb7a2d8c8754ba491850fe46432eeac7600b254e93e26591a0217d95c8ab08f923c91e8e1b614fde1cadd45e1fa98fe1e4fcde0a321721ff55ff36556a1ca017a5c67e464bac34f1ad414968f847eda2f793d6d4c8e0a60558a2854acd31d9da0063824210bea28ce0ab7492a86feed13d6f56eca94814c6cac92d1d2ef25422703eb715d9db18ac7d4274906b0fa1d5f96888422118bb78d48a3585857ea51631122620d74290d969040980a42b11a5e75378ca1cbd88b3a71237583a6486488d6791246526638a904cedc548bd90f3f9cdc38be18fa617b5797bd6ad3291f92676f74dc098d39d15b74b823f3ddbe86c9d567ee1b52cdc45d48a9369c2a2eeb933046c30e705c872c3921b11685021aff86fa4ac98b0e8f12e1eea081edc51e6a53c345c9b3e4045c00ea3361ab0058031996935e20ba25627338f69c5cd3438a291e9901a4cc2ff939942fa8fece8d2bdcafdd537cbb5e9250fa85c31b5c0e48bd0fd34d28091d1082e59d89392438910b85e1ceda1c867c5930a48e832abd31c8af87738b1cc55af8df9ee173595d2b69ed76e26ea7c75e528886f6aed2403d86017e6cc023babd01eb30eff338a4e237ad03aba699e400aa9eb55d1411d93f270c2d2070c974e50c8509b398835c74a6235379c3849cc5cbfb89039922847c72c721068d6ce2c9500580a4320d181910912ae0b7a1fa36121ad21359c2101daa37c2552704c6d751430a4432c81e1274c3608672689c4270a4214e175bf05579c84f441749b403b290023511bd8b5640185c594a80d964c3c363c5e5a74507693df5c4f943cd2b928927bc69d65fe76cb94a4dc7b074e024a02330227482cb09f251ccd97a67a5d8ec3bdf756669116d6f1f4f5de7193b064e91967a020ff934926b2a498a8532cae495128792ec2944aa329238aa89e82feffff3fac816c2d18562a1db2520a8a555d13992630ab2ae755960de42d2d06c8c9f2a553e870e038dddf83a4ee0a3d04cd683ab1431842ebe7bde05a931315224a3145d0a1a10371dcc212a1f41b728246e1e69593fc9ab430a5c85db128b312ab45151c17665b28304678b440f4090e0e2fcb4c818409fa21dc2d8ebf3c259ac00805c388a5cb057577af2263d8ddddf3cbe10cf9c6bca6b4cc38a794a823600f1f19e4c1cca0bca9b0aa93ca2554e27f2669dac8eeee4b310cf55b825270ffbd1bdc9029dc9470eba1b8d9f6de9b4ccfcb52845b4ef1d697c6677c1105a84a6103418007aa3da4fbff0fb451666baec0476a802377772b3686bd497724a13856429cfa43c2ee6dc20abf7b3bc0d386c0db7300518c0372de9168b1c22759d86982b030db116b910d4a8e492dc471098308e343c7c61789bd3714442713fa8975181e82fbbd83d9a36ab916e2de7ddc61b519f28dc5d6504c8c3a09c66870879d8c80110fbc344249c8ffff7797d1ad5b181b9886355d0b0b0be3bab300c5cad972a41a4bca3211674509a34a30b2341d81b022fd6000756375aa613a99666d7164adb80015f38157800779672b7b73307bd7d68595151e1a3107e9830fac9f5cb4ec5efb0e62bcd970dd81e94445b3c5b0102f5e9473c0360ff74db8af5eed9012987413d0ffff7fa26c1151a8c153da58105d1ccc882912d5a9b0a7251214cbc6e96d8b55aab923b9e3dc5c360b160444231f4cd010b451e7d4b013c0e24a7125e38461624477edfdea90872ab0d2816de3650124f982ba37fdf86bc528695a9e8cdaf5c94caa7a9dbd58d1bd68ae9d973ad0dd3d1ac35238cf41c1b4bbb751322c8509511f6e8c8ce7ff0350d541c9431ce4645e9525d521d58a7856c6ba3e584be8a815e84300502812e55541f4b2b7935c865821da9c4595e85c04b15c4d477ecf67436f15fdffaf80fa7c667a0db956c2ddb57223500434c0ab6440e6859816cecd8f870f8ccb4c510b1b21ad950374e6d566f35789dea6f28150dd5270e362ca921247edb0e2e1408f5d1d53da55d26a242ba9d391130532f394cd27e7d616d2c48954a2c179d5916039fa32b40a1d9b20905ad5a605e7a7aeadcb59d5c633d3d61494cccaf8d058754b2804dc17cb7f1f559d943b1dca46a3bb09ef53aefaebeeee7145df48dc5188b73bfcb64c33bbca8d0e6d04e8ab1c64081cccf3fcfffffffd5fcab648f46d506aea9639f5fd8640a4c6debf3723b59709a975223ad1fc5ca4285331f86eb062ff7f811a22d587a611c4ed221212934f5f73753bf5a4cb5228ff3a83e8594d8c5e15f3274cc58a4a686af584d664f53339a226bd198f592b7c9c80645ac4489d6ab04d153494c90cfa70f7feff7d1b88c09703dc21cc160d6114dd2697facd7adc1cb3b5edaa92745dabbea8d02702284585372b934caf2861324040c714a314ea14a6aa69d8d11995261b333b9c115df52f0a6ad587788f4bf223d4ed8f5047ce3e563907ea826be5d0eeee2561c8185e0ac394c3268cbfbb7b490d3686d95c76ec882750acaa4e684cc9cc990478c6b51752371ec6f074d99b464472a4158579efed91e2e2e592e3150804eebd7716f98ab4ca91ec12a923e7a510a2bc1ff2d2b743b8f7f0e568aaba06667702b33e1a74a14a6a422d6a50d020a1931c1dad00c114dd8f1816bac4a4c9bcc405fbcd4c4107ecc2dbe1ff5feaf3810dbfd64ef470efbdb77e5e91b668eb483841b7315298855af1fbd5105f4b87f0840f08dcdbd7625f9fc6a4e6294602c9650dcfa8fd3a5aab47b83916bdb968063d561454ea0c1b1c518d27a2f2764098b8a804f554c94dc5103b52d052571acc2e06a87ccdfcfba6ba84eeea1a5e72303b435f36503acaab3717d91d63cb887bd4438be5a87b0b77bf90db600e4acbe6507fd518e2eefe5ad257a4ad5e9f440bfbef83e3bdf7dedea4b69544fa90e584a6f7c9ac3b2789272c1f1dc6e1568da7ffff5fa7353384d22664d7c15a98de4b51cd0b9906cbf1f93cdf78614785cb079298f7964060cb5bf3fffff215699bce6788f446cb6465fcd537bb9796827b67bcd720d01de8127df90de18ce689864dc76a0409475b62331f52ec14f184889515f417480d345b59aa46993d652c025f777726640c67ff8d687d657dae12f8ee0ddcfed36f03758f83ec1270d57e90af938ec6026960d79c59ea8e1667b1b684e9e8fe5a41bea310354d59314069332649a5f2e6c9a84dda53651366c10b76515ca1d4b901d8ffff95a0af481b9556af254ad8dd80317677f7bdb770a76cbc2d3fbbb8f305aa6691160ebaa930ccfe4d1c40eeae3db21f978cfb11eab6e8c179f722d9e2166d04b9fac90c10380c6f11263afeffdaba23328e6d963bc09c24cba8307682e33473cb03b35085a54375c4bca9c91982936c1fdabaf74be67c39d4d5218b2be43a987150a40a81e512a7b4a3b26878ad26a47bb2bea51790d798a18cc40d4c1596aa6204bd9b131c1dae3c2a9d96f31efff7da976072a8a747a716352b981db9f770ef8cdf684407264129fcdcdd4540635844d69da6eb48aa4bce9984e7a537745606b6c774ae8db8160163eb152f7a593774aa33eb893b8b4bd9208d57ca13cb94d3224bbbc624878eeca6655c1a5ea331ddeb34e8ee4077f766166961f796a88203f12b465da6224e7f99834aafc7a55bbe8937e381ee06b9e6feffffb7c39582e6b71ac365174b24c1168570fbec292ac82eca6d4f6fd39430c22c9d00a1ab3c4cdf9138f451dd51dddc16332532d1b702a2c6c2975b6595fb90ee49b44657ad160d6331c7281e4b1c2a5e54622c9541a11b58763d2c2a467366672f86a87ee6fccd29dbd234fc3b958927ae1a5e479de1cab1dcc130e74dcaace1cf2cd2920193be0960925834435e8e109db585782eb86bcb5f100e06774c8f6c497f5dd70d6dd692e77ee68a60610cbbbbbbbb270518b2c21093b1b04b4c057492b7cbb468c8dd9dae18fffeffbf18ccedd43309ffff3f9cf793579477d421d47b19be47c1517777777f3ba38f807a089fbf35a7c206cb523c9b52c731ae1aaf180f78d434b1144dddf900a126cbe335364555d92b827bb366ad30987316f47479008ff24d2eddab6ee3ec58edd370f303c615ec8f044f269bab5499d74b8c96a8c41038450291ec08a31808040d0451248ef348d0391400020eb478bc78302c383c342c200a87816020300c1480c10000000c068383813020440e9556223b03e123c2daa70b1357dea207bfe8115cf0e05991b2004ddef243c08ad2566aa0e788c1f03c23a59aac2edca5a0dc78b97d6331b10a4e8970aab7ed65fc71db12d4ad783a1177eb172f2f3a1e190ec404a9e64dd93443ddb31370aa378502ec08da93a43309ee4e829b753b90d439241ad13ccd7139a4c6fe50796352db5ef47c17f262d26b3ec7f588fbfbf51e869224184b2496a014ef86b5209e3b56e844b1f74b7910ad4f1881d15469959588e43458aa58b3d5a40d3d7557d32767c070f751af6188e7c7505a1f0cd48c1dabad8fe2ab776ea515de522483434491468eca381bccda871885913f280f3cadf518ed0d23d0759197a9b213542b6eede1a8c3b6000d569758c848370bf64812bb5908203149205cfdb95fd98535dd86f18c19d779674397868b8c5aeccd78f6ba70eda73293a95e689430af3b447a0276a9fe124ee6b83f44cee75490fe5f425a194e196a6a580d2d4b654105649481a81f5843b6e656e719b8f018774c50d3476cd5672a0a1bf56b75f3d68867d69f989368f483fa26caaa4189ed9c7396e4070e8568c513b5785ccf0f1c0c14816c9099fbe10bc9767acb0e530b89728f4b2c2270d8078786042bf03a759dfe20fa311a2b6eb001f63ea618e47262f84a75b71cbb471fa8ecd0982bb8452f3c2b90139dfd51bdf0f18e3232c4be073c6a5693f3364a1d332abf5a902d0ba3e070302592c6326c7ac60baa671b169f9db2dac29f60131ca109d58e4ea2013e3b335ecc9acbeb084a938cc5230e33075b9229bd699948cb85c7f4821710868fa1e42d6744dd743e32e9c97f2dcabb4e02f663853045019284c9e160fbae6fad8c8b3e8c97b432ebe34e5652e659ed8f907d4fd623306edb507890245a46acce424cdc8f32bfd768c84ebc23a8e6c692465e69fefd74c170e5ee35f2f8d433a00870ba6ca2818312c604c6824b3e48004cd96b18d1b6a359c8d793559a3829e032a2c59d55e25a8514531c9cf9d69202c682a9d591126f1e5106f80a77fbd9c0fe9c89e5dabeec70e587f2a5e41f90918b92c831d0b22e56675ffecd713ec4a0061d16ed84bd00906e2368b219b2eee5bfa990b8f4f81565122e566811f1d747f3d00c20a6fc2d08786e70c1a71388069453738439f125461db5321bb2216448fc29c9e7fd284956171c3e408b4007a9bb9a4ed9c8084df003c028a9115c1b39ad79411364bd8c053e82db0de4c522491bf9eb6e92f32a8295e7d0cde0d24db5c734c16e6c8e42180ef4da844a72d4ab717fd90f820dfc305349f94a5fd2e7223d303f7ed023fc8f562082c6c3af042b628935add9d3e4b938dd2c11468cc0adc423cbf05b253d6e70f6b1771157785f929e2682873114a1bb6b52e3b810c360026f310b5db744dd3c16367d4015448bfc216db1375bc4e283171d082c90a64664042d5dcd5e442489820c0cce1065771d573e6f135cb23f5ff43f769803285488385edeff25319fce93b4e6b28e78ebc630370079ef10a68e498b236efe1f11843e4e4310b91c16a73b9a7b6d0479fe11eb11b2b420ccadaf5302359542fc6c62cd248bf34c936a0d6ea3c952638b63227f4facb8ef2ebb23fbc5a1158eb5944932992382f0129a9af435459d296f2b484c915956eb8f5497a3f765bbf3c1a64fe97bf93dafab974a82978ac5f0464a14c6dd3e2302fcf4bd79b985172bcfb94d0fc50f05adf5c66cead0127c2c2287e3ee063ae23b36900afffb9b2c46207d2916ef72ded728f6bd68e04f2ace81c518d6f44cbeebe4319840d3724a258fcfd398b056c85a420b617b252eb00bc55525e650aaa7c361ee6729f9cb0b992c096f62916b838ce1c7272c4ac6913aa9d32140cfc4999626f5ce2116c1a4898881619635013afb274d1ea535be1484e60e9648515282960bdee6d648cbac63f6ba05ba8b372e95329f8c5884c6103546528c4f1eb45e62048d1845684c4b7aa0b259c6fc53a619ecc11fe1003d2204a38c79f71e08aecb0c18b886fdc3d4420f02741d6cc7db41475eb5e67aa8dde1444c2301e60d14d7e0c04ca524010a582e9351e416a19315fa79f3c20b71e96a02094989ed832caad3be3382e6b5071a2f344359cdc0e65e6b3ce991407d099d1070dd1b5ad2c755e0a0bcac5a1c18eb5f2af84c5d39959e057c997a4d1a18f490155d55f2a55f793e64c30e1f88842db2d5fb32f3f6fc282d80b405fff9a1428961dbb302c940f774d6f03431f575fc8dfb5876c4840dfb46e4f5627bc3f9b8ee9ff1a06f814d00d1c4ef757850e40519d68e5639022ed609f024059be167b5e909fb978099c7f2613f8883e7a02cd466fbc443dc9ab4fb3bc7982644f6660e960895fc505274f579ad05b8b9107c2a10c6c11ee824aeea0629bd244ffc77bed7367ef435534c5c578923db279d0878be2493f9398839df092123df615ab25d6ac34a3efff966e9ec0e498a0dc71899594f7ab9613d8449ee63120fd38d0b25a7496fa5fa9334b3e418e581150eb0c74c1cdb918b782a04b34cbf9c54bf8866f84f01e9f427ff319c52944b6f3455d8501bdc3cc52cda05cea0255ce2c0c74e4000e4ed402aba001220bf3ae1adbe9d086ff6aa6698441e593789170bfb5990a2116a1a4ec732f7bb89a9f3304c086e4ef70953830870dce8da135fa79121d19e4cb100a601723f0b0e5d88fa5752b5133fed1006440fbb87fea2d33d8403fcd8512a863120dde812edc6eb1afa50fc4e941581a9d9fb323e77557baef5ecb7142a87ad8073c7c23e52240e256389303870ebd9e7a21a2faf44004927b9c898f8d063fa1e14b72b3fd081fd076ace5b665abeb5a0b1df67071f3ba4dd1877ade381015e8570fba5088a99ca75ba85239af944fe27e844608565b81093d41828d448ba2c3d768f85aa2cd31d1b30a26f22884770e47fb2c44067c28c4b6c1be924be2cce91bf6294df2aa7a2c8979969a69b7c8f24347b783dc8bb62a7a1ceaa980b485254506fb6357f3b59eaa6519466b3bd240e0b367ce4eaa0897f7464f9b60c084c6b43b43bb0dd3a190d5a72d95481855784c730ce63ee508344b4395b5759eeec4811a24b05ba535ba6f0b44389f1a93b8d95a6ee87a7fa479aa74e37557d6d60bbcfcc516e003039922ad670d58a9e6d2306c20ac8567f0cf863dd0dcd0981b98658724e72b51e6e21204c6ba91f77dc6b8f30adb4969adef72583dc85aeba0c25546df9e36be311ad5f474300cf3a1426d183f8bdc45662408571747818552c1710bd695f20506c18a312616fb6c7a2b6746fbf52b9b6eaf6199c277c934118e820c8317d0a1ac3d17891b360364ee7a8b4349e80713876ead37276449e9c8e30bbe4c5a8844ab83957e42ca7b9a2290c4d697c61b4be4e8ac47befaba086f6551e371cf2b6bdb02cd267c544e67b9a35bde49d3cdc4208e78e06ce07ce543d31adbf44247b3743269c8ffefb392b40509d768588051474d13803bf907382ca91aae5fe6b55b2960f4b49c820899494e8163fca3fb7531186991c47943a55fdc34c5612f9da7fc3f338c7777dcb503541219c78c9ba3e3fc840205e8447bd1ed10feccd2334d4ab5e901ee5631c24fc7f37264ff92c87239018fb30a47e26f70aeefda49bba9ba951faee6020b65cd297dcbc209dde1e908180279d38d962a4d3382a4d58afef8dc8dcacc597bc7d2227da090a6df5481c5d2d1b01cd9ba4c54647c41254e469a31ebd96f99c1e78296c2f6df4f19951571a070c2dbdd1377f67e863b178cff157cf0e03beefaa4ce04628a515d35bc631e36f54f4a0482cf3f3fa13f905c1f585f2bc4d2a8c37a660e3f3707e389480b456d3759ce253e9708946e44a0ea62a89c9469ad999f1f5cd48feb6be225e73dd4c12c8347e3548a095573bf961f5f3054b6c5818417fb21d337451cab517a20665aa7795d0537d07ec738dc8e97e7ce38af1b3cd7f524af8b2c8a62b2703e2c2a2b562190f368b5d68d4f60780e628496c219f6bbdea6ef71f1125350c4356c70fde225a73817e8e99a10d3d190b6abebeb5068cbcc3682cfdff96416dab13305641c5a0377960ed32a836b1500029c7368a5149e741b5b19683e5798aa0306ecf251a6394d5459d97a3e8601b4580d74c3755e0d3231718a99c6c4c5cab58d1b7bd50765726e0937e6355db47b487aa7076e4994e00c30f94bc33108f03b0e85d619fa6909a18f273f172ec2f22b0eacb50444b4163e629b988fe236a38ea11135a525c3802736dfc24890e68774a80014f7795bde717ca12b07c0d382278f858f64fd384fe652db83a5809004a6b5ecaca0ec85a26143fa3f24ea6af618fce73dfb62dee545ef25bc087c40fb5c337633df50b006b2c91921b8c411e4fd4b6be920f94c6c86ab331271bd6316dee1f8bad07e4c1aab89fa666724191d8611fbe27ba5aadc7398533a8c8e587d20596fca24043222ce4a9b1c68a91164ea433e8c9f690300c7b769935b0310439d67ba44e52e0fa8f15f69861a717ad7c50071762f67db6abe82cc2efb3a9da702609070922d13c309022faf3f2e4e601aeb38c2e34e86f3da2c682646421e167a0f990a27e67c7799c103338457fac27f8eb5171c574ab3d3989c3514b1b885f10c221acb742e7cba15a005432383653675501d4e5c0f05b2b78dc94e06d911d791c3597a4878f1f2466bd36144e5e3188cc3ec3c9570f81a8b962c73e94e6a764ecb0323e4c090e09612de265e9b9e395d86fbc824cb25576f46f444a1033be12e9594cfc76c132a82ec6e98ceb821e611291bb3dd645b367449d29bfa85dee45389881a02efb454e8c9869b0c5ce49512b24ac3f73a6a612104d4193950ca81c46d46553bc043697c59665b185ec23be33e72f1b6820f6e1d895e0289cf2c7771136c122021c51b59ce9431a35c074a23026edff523d82c9bb19c5544e9c77ac13741adc452a5b7b23e0d4b6171faf60ca252b1ecf5d728ffa7e707bc78d4760175fc270b07dd41b88e237a10ca041e299d4879072596f7c3a78e1c12688085e66b93e2d3cc89619c99b28a65a46933d0e62e9fe422b70530a67086bfd4451f6a898212296b666ccecd5500f4106daa05e3e7c1f4ca40dac84c8c5fb65a3116803a651a2b761113e24608411a33e221681464a6b72225aca4876de70cad5f671588a0e32a87b1195c9d9af7cdb5346394616aab76b201e5b33402660ad77a6e00f20392aa46500d12933bcd96df3448b7fec3d08004b231d2ea70ae863340e2140829176564ad2ea98054236e6c8acca6e1500014903b137ccd06e3e8a710fbf9abebb274bc69daac9a39b32faa2ee64e5733bc04df589e286b84bc8d1b87a1274d60e132390080ba37dcb0b8f1f67654b345429d84b136055310a565a2a6af2daab7b4a3bdd6264232a969ccaf63b7b7e2d61c70e166b7acc79fa4c380cc8dd2f97abd212ed20262a849652fc6519493791998cb3941ad710ca8c584279966e508c3dc210ca55e7d052eb07ed9856e49b403a2641708f2b3863565c514a98bb9af7902171c55a405772ee57dbccddc7c22e99cc940f8308a178c055718db6adca7dd24eec6875e42417a4190d914d119555941270da2bd320c1a54c090bb23269396b4af4c2c3183330c5b51469840126444952b7f873532769a116ce7ddda9d47356167235e6834ef76a8a509b5612b951eb98dce0107db6414ac723c383fe8c6d9633afde69af1c639d2c6f257061d92b0f0e820b78e8b70fd01f3b561e3536e776e4abc26ef97690366724996c113a24858aae813a2a130bd44fbebe8f9819dd0c1245c872d682096a4cdb644dbcea80aa29d8586bfd494c7cc6aa0d97c16d681faba15cb5d7c12a7feb82e236fc8ffcb335928cbff6ec9e9170e3a239f95478430fe52fe3bb3d8248b1a74432274f3e667447e9e234ae1e014863c5a21f6cf4e6cace9aff2f36aec04b407b1214943147fe0631a93c58d7329c7f145862eeb663bab852019a4e67979c0aaa63eed49178549c3c21b45c306bc215b000b977255f8a422e1b1e01316a4249bfa844267133f6a2d296285f1f1666c93a45edec20bb76a944516b5785b1543e49083a84570606b258bd36b7f1d1da64fda5a456538d69920c9078775422822898db91a42c7b8aeb0eb9232257871472796ff42cbd10bd25410929841e43a26bb8c6e977c54b6c41c2ce025269c3ed734d6505e1e1761820bb0859f1117d29718216a26d3ead6add9b5bc25024b5f63dfc10baca5ada81598b100343b3caa751a24879216646069b5e742b1692292c3e8de194ca6deccbc1581abe04003d916bae9376d1df6f81757ae077fb11a866fc60b9e80a0f3d6589de3efda9606636f893b39beb0d0e5dd615aef66db70d91ca71c2c219c2886e6838c0c80cdb46d4df12bd481af94a7ec0d3c2294cc80a4778263fde87ce7baac11fc37ae724d6344f7e55148f35c3414654de8e06e80c29ff94eb821177347932ea528bad86f0157c3c1e9fb6e1da16be60425abba56e730bfa2504a62c42001272d80f10e158851c416cc8695121014a71eb6c1313758549da66121071193c9d8431c00929726f82d846ca4e0c4f7608bd39e38e65fb2ff379a36307b7cce32c9e2ec61ab10782e53228ef99f9c520a5b016cff2c0701083455c977b8057557507cd4fd508a077ec0651f5dd527548e2939be298e6233bfb26376c89a96e6f22a8ea659c682347a0c96edc9244a2249a3c341be432346a66f68f93dcc3e3cb8f408780f11d6b8b5e9866ce75770bac55a49f4fbbe6106c76679409f273890655ec021735f93ea7c525b924924470d2a380b0ac35e8b02823271a863f97b38fd1068b6a8cd67e6655c8cfdb4b5e55bc5755c39a482af539c64814363a1b0804e0c77ea50206a3b1ad62960232bec88a22f24e83a116c05f04dd6dc0aaf554980244e92392e9abf9f76620215cd42c8f2430a4879a539f3ca08b7fae4debc3fbe51e5fe9cefb25373e785072b0d86da235cb28e161c2eed08deaea9c7a7576b11d6731113ceab7be9aacc82efaeeb0c0a71b334c8c2360a0cb99b0e4266c7edcc8c361ac529562e89be663820500e3ce64bce23cc3bd425f13b0507759a439631d011d6cc21eceb002c7e148db683e692b90d0651c89ca6fd153836a0604656a8dc0084eb3ac39742d7c121c39b373ab569bcabbcbb2a7511045c8504188e31f1fc20b72090e8e8b73d2afa4f49a2c7118d6650ab6c3b104c5d9b0975c04e1e774e61eba0cff4ca81370e99bba06adc66e81dac3862e66fe4be49282805dc655be0cc71b9f828723bf0c9c656297ad67ffc75084b9c1192e7d086dbbf9eea58f1f513409734909009091c97843223ae655a0b72132c5f7bcd136024a12e1bb8974de4b0160ea4a6f6cf5bd5bbf8f713089cbb082d1041b9d0aa836636938ff239debd63173ffc0d89f6b2520b175456b3a71130c704e6155e00962ef8bcc39c729576120945970ca367056e64595534e0c821d84c5ed7e3bfd26b4d3461b5ebc8cfe7fc3db5e164c0baf26d86eb5fd9b8dcb4d4f25b3b968478f03af5392f801af3723a608762ea7482b09d3a56552beb117c52aaef5b944f6383e5650af8ee68ba0a4f934ba1113c22fecb2769220576e05bffc5131ddc9e854c699eae93eb6208451fdb82713783a72eac079aea6977b035961f3641c07386646f98bfadc789822138beaf44531fdef08ab2a55cf5d03258e0853f7c4c49e260026fb95a41ed4c5a2f85fc7679eb46312132d6aab80b6163e141f6a2b48b319ba83d08aaf8888ff874e87e9691f18760ebf156e403a031a425978603e046d829c12c06b445c6499bec40f0f88c859b334d0db2686230790f8d94bb080f417583e51172a77aee6cc33e2ff002c6d0422e4fdbd62c22a32ff7da4087026154d884dbbceadad2603df4197e74c912921db3f4d90277ab4783ce71108c0671167e5c93eab4be09030802a336db68dd5c26fcb183d157fd8d5c0ed2d14388b8ac2872482ef5ecc7cb36105a1cc645109837d91872b0b8ce364dece481888fd1b7213f702ccbc17e91497e8ae268679ccd640d5b509bf1a030c9128802c66da888b7a46b1708e605591909321386185b2184361a60fea2ed267491289dae241a5216559cd5eba06085b5cb61f684a231bd1bf8ff352892224b93224a104f16fc221e9fb2c2ed5fd9938349bb5a2e929a47f3614033d5a392e331653cb253343c652eca24bf503822ead70e33e6ffcbccbc608dcdca64bdc0d025031959b2cd132cf049d672b2fbef33117522fbd938b482af261f52c5e72ce54f4fbfb2d6b2669ac223109f4bca1c2ba614eab7c080a57635dfc64bab893d1cfc3ac94b7597f1bcae2859f82a8b632b10aea13b787089a1995c635a015d0186cfa10f1369f7a7feed0228a4d208aa23171877d24b77ffb440bfc87995c631b461bcb1f9bc42228c00d0c40fcac7db415cefb58152c20ab941a765eec0302444b526da15121e6ccbf526d64ad5d88af0ea7c299ff98d9139df7371cc1ceda08b6c125c851b494b2aed0d28f8c1ed0a432c1c24d2a60481196eb8fc6df315828fa7bb3089d0359aff30a28012b83c44dc5ade7010a501fe8b3b81b8d079099a71070b594693ae2f8dd6cb41c19a0d1154dbeff1468f22d84e7a55d94528bf6089cfaa447667e3f4e3634ffb45c39a4d54793273b36d4ae76cde828207e3a3677b0b6d68a6cb7d95aefc2ed8d426772d4d96ba346896c343ee4dea8e87d8972d6877bf6c3c08f018eb0bd9b02e729500efb742915aead894974820d0c5d32e3f18fab0846f4f91f9e938a76b0e80621772c6ac849eeb7d0078c932f03f0142256433c1a53d213dba6354f7e749aef9119337ab0bd279d39814fdd2a2505e2a4ddd75955e419132534930ce026fbbf88c25d9bc68f200a45fe7f4c1a314e6d9276574f552badc3164cd8004a4b8aed5f36993f15b3ebe4d12ca36f3c31acb9b6fe1674db82708bf3363400a1d16010e8068f4bd0337dec292d383ff7e481e9e34859bcb144ca6c39c974ba0921061d88312120e125321fe7643740d3e2a1a665e8d461db94a28e1a05e67a6e73424c50102e034d0de3be44d7fc09cf991426a8ff3942e408193f367b63833e15aa98f5ce0aeadf7557d6da4989d42f42260870a3c546aa35346bc4e53b30e0e7187e491fc9288b8df562cdd01e2022f8453e6e5dcbdeb8d0791378f3af4bcc2b7759815e95c4b6fca31733ee7283d6d8202dbc3abd05ab5fa0782f45ec962b0ced590d2822504ecf18f232a36c1d86ae97a46b345f935269dc7671097d4e42e3b145db93ffd2ae132e447c6383f97978a5ca6e13b00f25ae1326fd00ab536215427dc5c5aa4902b80f8512841df5630394543acbadc8ee1547e9261949db0ef008dbb145f442da081518cbceab58fbfbe5ab2281a340bc43657cc42b2947d8940495c86f06a290e3dec6393e41fd0ae6c99f052d4a5df0e4bc8686d419ca198e62e5d9dded41dcf345560a6f0d3f081192683c46d0dbd88e9eea0642136a15757985133286fe988d4435966be4b82b17ee90ff08549b48d815e9dc01f4d4024a023e61594056daa4030568cf1d9112804cf091fa34b5b068932f27d255b900e20fc1b61beb49f6349b1e72e3030f1719bc40d73374cf46a2b9a10cb4f42a523587f6dbe20529d77037d0b25c2dca989da7d14a42b6dc7b4b99529252ca7606ea05b00548d8739e758ffe80aa29de92ed0a698c89998df163308a8db00669a828e5142aa7971646e1a4a8ed88c9223de5782b5b96a8c73cc8eb8a320f6be6f3975c7835d633134199ad0a42f7dc39e79ce3f80e8bd70379b19960a187897da3e1afb012116afd8bc01c1f85091346dae0f2b913d2e353799f91a2b17caef4b060969991cbf6f3f4613999190bbeae2a503aaef05b93add18e13632c343635bded220f086c9633f65b6db9324c42fa104bd863f9f9e99042dbcb1a0601a158864f288639bc335e0df479602a34027b7c007d1a4208a14fa9041f9813ac57d8a48520509803ec7951a638813d3ee450a27ba173e012363c2147609830b6067f1efc49e457ae067f7eb6865461c2d88b64c912cb95fd2b77af41516b3c9865bd4a22365fd6dc1c0636a9aeeb753fe7ee76efd9df8da48ccc2ad4f4f1e554ab9ef1e5b37523a16496d6cd7bd87a30db8a848d750c41f999ef63c26ea8076e0c2616fe6b3ce0f318d4d5e0ac1be219a8a0897443b6c1a12c3e329699e57c35193fcbec65315be1066d440603323e4343ed5b427f96405852938ff4e1e6934563393439380439a564ee6766e6e6414eca5f5e115c47e6265472c18f38ebdfd8f5321adef68d57666666669679999466c7ccfdae2f924c73c91a51359c5dbfbfb9172692edbe42fbbb351a7f0af30c4c586b3de2b325845a89c921ee65eec9d9b11a2159f7e824cb353ef8a4c976d98e3b63bb5db7a43105db31b627db6a6c6c281b528e1cf6da58af570f1b305683b372d21999238a208419e93a0c212925a5b731c1b61f2ca914725221d8f8d7b1cb92a12d5752e3017ff4822b62b7ad9c94bf4c61fc3044fb225483217f422517fc1d762489ed775d32327d71cd431af8ed959152970b3c1a2090063e9c2cf032f8330a755006d431f62deb7ea600dbf840207d2e620979ebb535065c249952a90d391719e363e1df7cd1c1ba6f3ad63548e3e69c57ec2f59498832146a40c7106b858541dddf2aa8b907e4c5e0ac1bc7e0d30bbbf16aa4bfb89e16dc60bbfb4b8c8f0ffd8ef432c8ddff6e1cc6ffb02349acb347dc25d3d72523c3af26c9f4fdb3deab3199fe7b5992cccba010b75fbe7b8ed27e413bbab50025aeeb64167a68597fbf1c7ed61018c284096303bf93aa9fabec49141e004aaf9348f7ac9756f592a87a7faa40b2de52df0644a368ec5e7688e4e6e8f800b65d570c1cc0ea3018d0cdd6a4578234f0bdde9cce6037ff9bea933596667e401bcbb6a181600fd5c8c6f2fc5bb29c597e12fdc6f2b95e230d083241f99b15848eeab52995f8ad7a33fe59ef57157aed2b56891214d65ae65fc109ad1b6676b66be397c1d9ac2337d3cbf0ac2130b075aa5e24b6df75e51fe84bec87261f03ad127834f001016842dd0381dd806617525cc038843cae186840965f26643d8fc2423d8e04194190c1240464ec40869306c6086ad0030e5da000e8084c04fe616e5c8064163b58022125d18bd4fd32064f081fd865441df1857ac26405a74513e10b04ba6289185da4cc408a1fa4502268b2a1620a25784045075f5cc1627012767aa62980785d8ee86e4f810b0971e7e0eeee3b474876bfa1bbfb67ca257ab096c841774b1a3b0d27fb544fbe8c62acbe7d28c2105e125c05a5a57b727777c99e8319d3093de9ee6e1d749964d00117f4044da028610b21aed8210b332c1268e1431155c4a8010f1cc67309bc988e80af0750670aea490320a2602c4480450e4d2fea63c4cea275627abe70a482070731880098285828e14a0aa6a8428c2abc38420a9c0822038c18b8149f254c469c800026d8c1871b489d1bc824ae274c0508312a09a63d11aa557ac240020e54ec7006efe0c99719214f84d982090f3e2461081e42777777379992cf78c2518085055488f0ae544834594118b1db251943287046e8c2c104e0b0e47a620306602295ca9b881d22fc528d485480464ec8bdbb1b0848d324cf1451c830234a16504411ad38c3860376a8006db1224c9428f88b6e17d48472720d35092239f1815edc508c311e0169da45db083176cc8b4af468e131c6b804d234e7eea28c2ecef04204a48b32e10535acb0a87725c61843f0b18c2d95114a10c6155ec0507152f2928326549084162652f0206710f325c618c798f2689a12318c7185c40d325551e76283fe9080255fcc20020ebe5801451548dc2084df20e5d241145caa0ced4c414116f622c618b5e0e91b2d80a04488f9a131ced643131b53254690439fd2d34e069e206f3e3a30c1142e3ce862045660f0138130450f152a50bc6009260083bbe8eeee36e5c7ddfa6fb9f6b384b9f010750a53c0dd554ad9ddddddcdcc2ca8e0e24b4eca7d6551a3a3d1b0161d37be571a00175096936160e73c23265a507e968fc91d59f84f07d6f00ea4812f9989c6037eef3031f10eeff08eb39799783a4c60139684714c2cf3b0c0c7012cbb607987e5bfd0f2cfb4d99a0ff92f3cc0f5f8d962f300f7027c34f069bc6d8ba46750e81ccb206e91341ef0cfb0f0278c02455e06bd4aa0f180a51004715103cbe97e6cec7b1bfbdee5bbaf66d53de52789aad44e5f9aa5aa1481408eef51d6463d16a3ba2e67f6e7cfbd3266ddc8382d118ba23b24d0f932684d7f595153b3ec2e928c9c5eb44193517a932c851acb29ce67d21664993967ceeb5a0011d886e655c4a4d705200da4b982c2e616545151658716e47ca014cc5d45776c010cea8953d5f3673b5ecd649692f2bfc0a3c97618b19961014243948750fb8d26938094f2b9114bbabbbb9b999999a96867b6b18c820a5a37ddddd463eab1bbbbbbbb9b7dfa79faaa557176733777bb47ef89a393005a37efab6639b981221331324602a78e20e865cb7cdd81dc657e05dee3788080f09e09831ed25104e57f172ee1570616949fe51b824b465e3496af8c2714c408f895d1434d22bf6392fda954d3d432ff6669c0764f1b702d73ff80edb6fd1537f744536d8d87747666eb30b8ff7baf36c02db2a822e5373619c20cd658dfdf24ac29d9f42895a6ca31fe0a73315818d668fa270d89d4020df46215108259fe8a6368e951bed611927236a0b6c53514b2ceb9243ad625d1c1ba2349ba61f2b1d77b4d497b2027bd177d19b45e1d989927a86b0560ae81ed7572521622e3ba785eccdfdddd8cd9d0b17de26e4b085bc76c78b15e25925fd6cebae1fee9b9716666253d96954cb1fc38467e05bc9a2290063e84b09a3efc210d8482ca592403b086b690a4246a88662539344464d402dab648a0e6e9e2121e6666ee2e979c94b95dc9c21c9b99f95f6466666666eeeeee1e4034cf10f1780750b316099778d690185f3eeb86618396eb0d4e369f16b3924d8e03814a797d562ad9d8c4d0a84104d65cb5068944a3d6699ae2bb295ee923b75c45afc99033d9cccc8e1df2e9f3d1333baecc643bb067fdc0420d4833d90e49faa26a336fbeeabdf71e5f231710d8d527ebdae533e9c8f6c8de8c0527575f72527e97e51e2a08d9bae7b70485dfd57e41a17b10c710f8fc5c711872a9d7c8b7fbec7bf79a1b7f63b225ad2227e9e272c94999a77d11543ca79224acc727ec254df2c7c6b885c618493fb329026b622ab5b119954aa22cb3fe27895451da2e10ebefd3594360b01e9b93ee5dc6cf7cdbfa63f7039627bd7e444f8e28c28fe5ca135f0b61f6bc2bf51a7940de3cd63d087aac03c194f75a07db6f5e2f83eeeaaf91cf95f480b8e0d745620de5d1c06f9e2d949ba75db1b779ba5818bf79b8799aa7791e94c805d56407eafe524d2c8ccd33e9f580200e39ecf0039a3d4c989ef925ac8939fdc48449ec590d8831c44a8234f04b2260399d5bc2ef71b1a143f90871292a289f1faa098a8ad20e1d289fb6c51338503e3674d8411dc9133edd01114803ab499660f35b82128132ba642ff2b6959e2aa258ffdb562cfc16ba7b2c33618509cbcd3d961a1202c7e96fb4f1afdbf8b76d7c6e3fac8fb0fda01fdfb51fa38fffda0fd1c718b111e61a8f7e11f61a8f7e0be3c6a37f6215d64fb96d1e37daf6ee697b8a1c3311ca6c322a5ebfeeb7d9d125cb2c8e218c836348bf3f89ab8c652fa46cd079bbf742dd7b6deeb9da2fa8fbc6ae9fab39611c176666666666e6eed6c14333932c123a87b534b611093b07a2e7709368894634a6923ee6d3e8041543ebfd6c546f26a256bd3693086c94d60bc4fa4ff54a29296dad46fe636f45ac4becbe7b741e39bfc192c62dca89aae60c364dccd07eda4ffb693fed676a3169636943030a144e6c96b013efab9110ef1be4aecd61ef9bfdf75c85ce3da123bb27aa9a16911cf767c9cccccc369679d0cc3a15104f25192bdd0d05b74c172e9ab9bb703c724a495b9776c5892b5d2ea08b74e58ae361d2584eca2d45c78e9cecdd3d432e27aa02b2e30839bbbbbb7bd03b5098411939d8c134702cde9c67440cf0bbbb1b7ab7373fb8850ff898beecb90af9212491de7bd2be27851f14ede57c159bfd5776a52f931632cb4983b8eff9bbce775c2f08216ce6e607c1cc18089c80e7ddc7fa167e3ff7f365d773f5a2ee65ab91ef9abdd31a32b2ee1f5b3771c224d620bd5cbd976d35852ce89312c257711e08f7c386d1debcb96e6fefcb6e09de5cab934ec7f14aa3c705287197394cd5a463f362db7cc89faefb5da52f6bcd820de89d9649a4bf72a075bf8037065565c0c25613bf2bc571ad71bb7fecc57b8637ec5858df37ec5666e66feb86ffb9f658c44a1c063123ed8b755b6efcedee97b5fbc2b5756f491b540512009e475600eb10605dbdfdd44b4cbed72f3ffe9d9e7ac9f21f0eeb5af3d13f6192e3bfcad175cd62dbbbf2b2f6a31dfafe0109c16facb91eef7141ed75df5ef6d8ba7f38eef9658f051b482c66acfc4a3e1faede29b68ae34ca8acee63956fdd7beec9971969571e0d84b21999cba6bbbb999979c70f3a2bc306d6888890d223e0c2c420aa2d349a36401069e3a8bd5dbeb6f24bda3bebf83d57f80e0a61f82369ccf78db6dd76dbf90d473f44dfffda0febfb49fdc48b4cb167ddb08bfc2dffe95ff95393bf8ccc0169bd73b4f5b80a33337337172ce7735e989999594eba855e2c67bbf023c4cccc2c677777fba0594ea0eeee66660e02cbf90333f3b39c4098b4b1e4e25c73ce39d78d3b4adadc84107657503d2c5bc7f2573aa450156c8f9df3760f43587eeef125ad63450f16d2252bd8aeecd378c04701073a84bdb459078b1721d0a17a9ea0735eb2d136311bdf1d9b59904824ac02d8a4971bc16c87608809cc7205426376f7be5d1521f81bbfbffbe68fcddf6c377333d7799164dce342ce6454352d51cf8a12593f64006828034343436644eae48ff8fedc7c341f7356b16478363e63d637563db46ea6af22864306db53e34159f5da609b8d3df1062cbf831f68d7b6b96ad79e487a4f2c5e56a0a308dadfdddd73c4c5f4d95872bf32da097e7a3d7ed7ddd33e53a1f40494e5642c26aa9a33b890849cf4875e2ca70b3582b404c18515382092c452aa2845275a2a954a2ca70332c33d3ec2ec830a6335c43f32f9e4ee2e7bbc24ef07a1eeee6666662f8de5135353dddddd56b25053777777b793d2df795b49810c000f94257377773777773777777777b733bbbbb396eeaede91b9c1781302c3c02b90cccc3cdf647e5f2cf3401a58e10f6cc205f248c84372c8635fd0b31a0063a0ea1b8234f07958417a609a68897243132adddddd72522ef4623979c71035d498999959ce2d266d2cbb2483c81200b6df7bedc7f434c618e5aca8f67732b09dfe5943a46dd9eecd4c03283dae59c80959fe796d31e92564619003e3c0f8c0304ea8fb0b8360100c82611c98492f27c4503881e284dae705ddefb9bbbbfb1d49c28dbb4652a1a44703ff7a01cbd956d89b64794563497a6198999999bbbbbbbbab682f424d46395136fe2cbbbbb334960ce6e57b4b24b38a32c6e891a3fb835154cdb9eeeeeeeeeeeeeeee66669f6eddc8772dad85bd230b7a7a8f11632dd424a5fc67b5c6839da5fb3f2b880ee912daa047961e59584ee61f2b1cc85d26874f3098e11231b22381ce9004ddcc3cfb5d4bf3d0dddddd2d279d825e2c2763e00054a094040066099631b3edee9eeda0a2da5dbac7ae0c952099a9ffd1f797a474d9484622f6b6b0d6deedae243e4602ca14ef4142e66ff0619f192b58cee746504103586fc13a8d75cc7a0ad663ac4fad86481614fe45f5d21a55bd998d9fea2d9df05ceb093636366a6b34b7d468b562a726e4cb6870fcd49ba618fb45d9ac581f0935c10403cd8a8ef5bc898a7d6666878c5389bba710f128ad1f2496d580480472a006ca66b21d4a30bb5fb91c78afcdc7002dd0448abd4dbbe2840dacf12ab2e8a415a5a8dba902793db248a005fd19cf72f23811eeef9d75436af759abda45acbba95eb6cdde39bab99211e444b53b3333cf04f10c8442b66099c63256cda9d5d01f4e849c5a0f7ba985d6eb0c8d077c1f415017d3b713e8bb6ae37abdceb28288bc7d047a3eac1ba7ac9b5855a3776cf41426820f637c20298afa988592188ef54968707c29df291a35a216f702f54e23cab7e255a3de67adbf2290f577ce558b72f2ad778f42944f551cd6c31fb9bf3ba4dc7aa1112802595690eb7d5ed07ff4707455b152315e237f389ae412d96e2dac59e9eed05d0992183f66f18fb18bbd23d127b1d0521f7f9e8fd1c38f593c6eb1771481bc277a1781461fb58ca818eb8d4076f4145571fc451f5b14b6ff4eed478d8ff51a19895e747346ee6f89461fb3b81efe6e05113df523cc9df03530fa2860369e06367a91086bf187a3702ce61d8da930ca7af735c6596ec8f431e6632a0ef9a377e70327b63f6a712f60d60b1dbdff84d68d5ef4d787ecfc1ed5eb78b2a3bfce07b69f62b2f118fd09588334231ba2a825be55a316d7e3276a8111889ab066a35bd9013b7d0567d4028d5c230dc8883f252bcef4f1a9970c881456e5cb7cc84e1fb1698a51cbe3a1cfc61730f66dc332441096882fb6641b16228eb0433cb102b00d4b14285decb439fec732145b00dbb04c09c3629992c556d6fd8ee5aa3d1fd4a2be7d35e1cff97ac9137a4f64d150596759416e3c7c9e9a9d7476a675f37ea07533d522d0468dcfaa0abbf1a4136c7c8d8f79eee1f4ac03a70702a79c87e18c2699afa68975a6af1e94a97e7a20efb91c5fd5fbece87354de81f0afab1527fee8497fe5097fa90d068cea745fc5317a5804d2f4f70a9fc23f0ad88b70fc45830142dcbf770f7faa1e08b45ee8f40effc6b482e4f857e5805f4485bfd2e2f8f66a7060f5bffe0af5cab7029ca8a9e6f8a934bdcfb1820a5584424d41fec4b623b7a3db01f7defbaa55eda6c94dcf3a4c0cc55eff9c8773e393d8875d685da5f37ce8e05e700f2f3fb1d727208f2d1aeeb337deedd80b9fadfe4e53bdbc63bdc6e47eaa38ef6ffc346b4c35268710362137fedd9c86d875f606db88bd77160d6ddf8f6ee8e07ab88f56901b5fbd63ef65b0f90e73eb6f60cde2c0ee63cdeabcac3f857a25a95e8942bdf4847aa9a85e928d7a4957bd5fa3de2ca6de8cd24855d439e762c5a17e7a473d6d817be1ba7bf08dde1b559ceae34fef5f41e71cf5137d87d18a437efcfafd45604dad7d5b1000fe7efd4b62e12f9df9ae4ee767aa6c166a83b53638bdb375d5c76abdd0eb3f3f5a41dce354a3778b8669dd3b9deadbd53baa42d6bfabca5f875be05e68767ef30ec6cd4e58bb95b70396fa8ae7344d0ca86ae51e7ca2fb014bfd845154956c25e6b805ae8777c5713c2a3c15a218c1c57bfd9e115b8c08c288277600b661a1f2e5bdf7a2f7a27ed17bd11375fc07ada82d1994587b5bbdeca2f62217895cd45ee4a2f6221cb6ee0efda1a81e81f3afe8db379148d43deb15bdc8fafe9bd376f48ee32fbd8657d2a5fb5f3ebd1c5551a53c06a358836d67bd4aa86b8a9e8401123e3600b6614142075b8ddaf3317dc5cc38d71f7e12f667aef8ab23d05e675dd47fe18e7df2813ce8e4a7afaaf9b1aa6255dde92786437db30ebbd0c6b72e5b37fd8c3f2f7c62eff439efa6aa47a0ad6e128b339ffa2bed1dbdcb69e76abc73f5beea6f4ebbbfb01a188534ee69383789eecb71b4e63c5b517f4735e7d9e85e54af55739e9d554eff9ec2a013d763aab15e776f93b092d18b3b5482a8f4d86ac44060c3dee73ceb2a874d51c266b66199a203151eabc3362c4580b155bbb46129e28b25806d588a9862ab56f1bcae5e254892bcef0b02ebbe6b831662384790d8fe661b76211421d0f2bb23d0769b6acebb70c75a51fe55effcea658cf16b60edaaf16d6014d244d15b396ff4570dac411a1a58830d62ed65a36ad587592f74d6fe5751ef4160c5a1ea757d73daba7f93fc9bf31e17d6897b21561cf7fefd5eeba4615aaed73dacd089ebf1ea95a4958c9efb5041eed2e213db2fad2c68b316161487bfeda5d33a713da2cb9f813bf6e63c1ba47980362c5280480d8b941febec834e5c8f7e67c50a75b027c4962b7402ed0c2a1ced71c8e0acab479c75f6d991d5ea03aa3673a96b3f468dc77b3743d59a8ff70c5f90aab51af85a6bef5e92e726f0de7b0f42c8950ae62e0d039d73a8146d5aa872a788060000080083160000180808844282f19024a931e37d14000d6a8a465c4830140c23922409521845318c32c6104000208610631052101d07f36a525cda76f6833a87e4ff3e405b5ca6ff8147162a2ae847b235868e6c6b3c1e80bd0d9551084c2dfc1cadb00faa9cbc93a82e8d640c66d260e544d97e88ba32fee1282b491ed31a7046de09a098fa83c3d12b752b570acdced491e333bba026762e6b2d7cc199d0f835432041aab2dddb6363fa72796451bdebb1a5b6dd99421f5c81c9636cb3b2ef44df5ca0652487ff57872bcdae7df5cdebf645e8e456c4bde46234b1e3098df2a7b80b88b5013bd1e1de6c4e50ec8b913c809b53d2ce29be28072133f8d08c4f9381335253108b05f15a8ce01b5c53210b41334c2be26b4e194f268c7694b1b04e986496e801b1a53d705ed47eda370ee10c71a7fe1234089ea5c849768a1fed418288c2f352a4bd4c52710b2b97625d8195b0732fd8dbb166f82a700867f721b89b14d988d9c5c5c5a07a15abffe51b5153ff64fd98f5183e04bfdf77ac527b3497e25ec2eaff51f851c07f52f42124e4546358f5f2fb62aca0133a0028ce3cebd5f063b21d5b9377d62ea89f1d8a01a5e8b66cf205fb605cf4323b3247a157d3eeff2b698bb8f7da9fd1748d56ee0d435042eb1089e57f57030d9ed5d86551c1b2e1dd7bc1d3cc5966748f4d4cfe51fcb078adae8b757d0d8c5a32a547454467a1b45443bb7216172eceb8645e7d6f7d51c438553cc978cc33b6468a5240e9fb55cee34a6153e8c689eed18ecff4298cbc7073644fc32febb0fbdeafa4cf9883b5c1d4c01022561aefab1057dce53a1b69d97d8393e86a48e6fc444562a4deb8e14ddb078f08964e5ffd37629c75c25dd98838d50f075ab48cf2bcfcb5e5cc7380e0d818f132b1471fff63b8c86373cf3a74851801d82c0f2f8a9bb7268d18b5645861edf1425a3758b934bbc483ed352c89fff1426f117be779b1c8cd30e863912b36b0ee17ca5d483198eca501289f0438649ca5a12431aed0a1e8abc1a4c72b997c2b3cb2ef7336459568d36d77c7fd8036713dbcaddd545657c227b23730011fc3c5b2d8e094fbf3931b086aca6901670218a0884968dcf3fd3d70bf4e6a481de3a57cd411ba3b08693f42f169a2104da1a807e1714aadfe6f295c9adbb118a7fbd294f7d0de8fb6d771af8e04753dd1d5f375539a41ec4d0729044912f432caab7a5ee893024806b72dd43bd7e14b40aebc2b1906d2e0e14ee06a6156690062be4733c6ef525e632f8030435f2b0a49bc91e46a8100448a180a3166a708d664f5b0a6e824b2c351e5d8e70f07ff9e0fcb9667d41647d92bf3d528eabc4ef69b80a1b855bfa367fb765e50985d29d6a9f640c50a7e3b0d503c9aacbeac4e17cc85c5659821ccdafd12de63abf43397b70dfce2595f1dec2854a1ff1651ecf8bada494025434ac41922ea61584c37d134951cc715f96b56b8f8693abb8976080701043ba38f5a1094ea8b9771b1b9bc0496db7d6fdb16464bfbba1c80c6ad1db4e263d6a8d60c6fe1169a3dd716df6654ab6c194315148984b25f9358211c9676ec116f873d0a2c153502dc2a162d1e0f0482a796db49ef52d8069d6970a1b543c9bcf8cbf90dc20b6a3f3307a98ed7058a1e9ac1820be1821171e0c6fcd0772362aa8a8276f9d6b3da1901bb9328918202511b8fd59f51a7b6a7f38bc6b02fa3c69c3a8fea3eef508c7a5eb86e343a4c463d9042eaaccc493a872648bc18ec398e5614ad811f0db7e87cb574548787b29c6743045900694e24c117884bfa6fddd5de2e0378fa7d88d028a87be7e228ecf6b2a39aa5c12e911020589db15f8be64db95b71bf0c4756775b239b787ecba9a8371518442569b505e63227f5db5eb0cd2916573ddcd7de0afd6902ad3ae8aad4dc33350eca218be0a4a30bed231e88011a2c3e0f35c53276818983c688d2a8ba498f3c1d11b93a237ff16d955edc002526428031d2f689c4e22cb8533c929dbeee9f5b88101c6331f2cb986b24ced3444dc88a24677661af615482a63d6917951b1c08c0ac9120fa09b32e161ba8eaed15c7e3d4b3521b02476805a23df89bb8b703cf47f0e5d0a8a417f76c41191ec6f8a340a2e4df51084aebe051df8d9d4bb5f44e2eb3518e7c2030ede6c2ecc3a0da05eb38b467f22d1f9b381a237c37243b7b1dc0759f317588e823e994e5151a7c0768fbe8870ff0ba8e0fe6961ddbaf1f118332fb5a9de6e5671f87c24cc1bc73dacbc0bab5b6a1dc2bda45759de22e5d10cd6fa78e2ded304e2a288387ed3b51c95178cc0a06fde85150036640200007c581cfcc9eb68f704155bfc832a3b462e94076370f2799d75a8c917700194dc5b184644aa8f091c417e7d0771758b685621f7e516596840e8b836e8453e8f8c376d660c0bdd0d2706085750a2229e966b3f36ea71afe0f6eaf2b50a6564b9397e4cd32a8ded66d89a17b9e601fe43568b1faee63f128281c49c6b3caaaab67b276173d058e578ccbfb3384b9597123aeea4592d85e3fb83b7d5b54f614a89d279fbeee00ab515c144b08e29337cf51f3e275641363bb1c4738919945332bfaf2ed61a03186876713f02ada1df41d798ab793bd2541b52d41a009862b53767ead53e6eee18535c65d01d1422f6509a599a72ac7ed80c94dbbd73930859e187aa9c1a4403a338064758b76241388eb7619c352fa0ce999c0d62db27fe2961c306c1422f17eaf7166e91355e2aab9e68fe25d04bfc9591db373fc12e55ed99dbd6c433dc7c170db92f65c8ed2c540438f26b6a77b7f7a049b63366d78af1bff0f418f1105bdae699ae84c2254af9d81671595f23bf62a54eff2b40075df837807c8f428705332427c5cad915d60e03c1b9f0d57f6a5ade305add67c02116bcc39be75e09fa0a8fdee7a050901c1bdc18b5c188236a3fad2656926754e89ae2d4077f54faadd29b25eca800052d284a8b314e652c4fb0fc130c7c8c8603edc9d5790aceb3f64ccab86772401a019b7de4524e654aa8289d77a9faa0e2a0873b4d1bb6d4bb2b152b6e963f24e0700fa62743fcda5a5742ec6407ec4614a292bce57b02a4608ecb483ec38d243d99e095872297af9e19a9046da6ef416c6d4ce7ab494e18eec3b8f9360e1bd4062a343dfda09445323dd4cea18b92f462b38fb3f039b8a6494e040c83cbf6229be1d58148c641ae960f18969dfa0dd463e8f44716af7642d7d72b1f3423aee8faeb671e61d49e57c084e3035b3ecb05be6077cd748b4eb0273c0b04140d10ee120ea5ee235f21c01f84b89a1a18baead5d875f149d70484f01257dc522cc7172d185341dc5205c9150efd1154f529166b8a2b5363a8ee430cf8bc509116a26d0a1171d157488e6d58a43e3101a948f37469414839154473bd45c251b1e7f6b7b64534aa41f34a01d11e36f7c9531a11445511cb41481ab85bd6e9ca83cd0aeb5502aa2ca0c80b4adc38a4ebff4d33d827824b84a58c606f62dd38aeee14bf1f452449a6e3d8ef3f321f141af4c26332964d95daa64d2c82ca8ff919aae5527ab394ddfbd455806614a91c37727f0f35a34880d8e0c11c54a6e72bdfb68b975fe241cc40a704c4dfbe11784d0812837666a8fcca22e63e9068e9034f7651a7fcbac79782e3ed79ac6e0715e4fbc1dbc67e81c94e6522692dfedbd3dd3ba712e5aa7501957891354df1bb7a045ec0463dccc23f8086bf46b08f12fe18b9b5b042b2989bf4a37e5c73a25ff4e59e91a66a665573506196329ae472bc9cc032dcb2eaab4d1994a8308520c535fcd2a345285bb25c184fc6aed6824b1a0bee446b92ad25f44c055c38f74e486c32f83bca7c809710575fd882517cf70c09c9ff99b017e50a2670c84e068fda2b5bb93e89875a53411e2254d940d074ee1ea507cd6ec02fc0e073bbaa4fc32f4e8eb25bd5bf394b671d8aa74094c505e686bbfaf9bd0f13ccaffd1c1e7c8cb08ebcdde8663882675c9a9c2434b48fe43914c702f800ae8cb50fe13f107ec9901bb23b3182e8842fda6b972b8ae095e89bec34b68d7a0588a98e26f2b2cbd536449e9af0debec463133e1f1f90d800758a32618a339b081bf973ec0e908aaa2633ec07092d9baf9875fcd019aaf7052e79ae491d25ad053dc1a959ba65e2b928d30e5c6207d0cfd496eb76297a6b216d4980d119d6ce31306015006521ba7a108b068811db4c1de0f1bee778780a3b80a270e8e28cfdf2c8c827ff9a2b6f52b9ebab5a8be4af5c45460da3cba7e25002123cfb522631a8dc828b39790f0019d7169d90a1cf1caa7b853a0e880337172bb00598977e1a13180e7f418336b5cb7eae541e8cf1b7540d7686139a439793c57400703fa3fb3238bd7302b6e4b52d55e3f0416edc6faa116f2beb75d17aa7e694fdeddbd7e3c16ea6385f50d08894783faae27826e84e076e43c858d8643740dab7f70f00bbd608d8aae40121e81e34840f40067a244b4d2712848d039275771790f17fb2330e80522c1a1ab40ee43762c4c2ba387da1ea2146dcfe5e091902af75988bc1907596c8b59363b848cbd999f7ffc7a7d98bdb46e87d54467c6615f1078e4a2b78a151c420d727c7e6579c2fecfd9990e04c106c60dac3cfde03a27036d0d1858715fc6ea581c75c53ed7105d4a6ff260d88f21a03b4a9ed3361549ec19d0cccb93e87a04ad0fb188a35b3ba25d8b700b4861a6af32f6f7bf2015d5fdb506eb9484aef16f08a1f3bc881ed03122968fa130dc73ac4fd123457307e84c94346c5c6e18947c14924a1a6e5ef303bfee0634445e08d90acb6de5e5f5412284f568653e46fad9449c64fcd295a166fbda95d7eb408653ae6ee44b1ade89a0279bbef752eb7fd47d2568a19c2ebdeaf4c0fa8f6b76edbee727df7818a4a743a7649d8ffb7b9fa33fd3de70499c9da35250315bac60c9a298e76069b9c2e928b2d875e6122400323df30533f432077ce8db4e502b560c1e46b36a7604a180817918294a9c7515915326a77be53932edeedb8157cf08b53b60c5f8d27701e6fa53eb3d98e4c17640db818d0606e5a2725a7f56b19428151f6c9a51b8531e9088f38329973c6e6dc3a8115ea8860ce2e6523403e6335985de31dfc63957c57743372f0de9826906f1c94dbc3d9642d8e06cecebc6436622a50fdb5bde07c00025f03b98f00aaa16e8f153839caced58e9a28bdb6271cbe0c2ae33454b7992c8ac11f88bb91959077d6f3bfa863fcbe86ca6467585024322802b461aa671adc8e159f88c0d622b12a40a0c2d540abb620e7dc5fd8b11405af21ae7d065d1ae8f8f7ac64d9d3bc28a96174d34db59709d6f17b260d0e0a0ea2259cb9a8f91f396caefaaa1c12337b30a66c7b30fdacde1a3e2f859e2c452b8e860935a2da7bebd0323074ffda3a0a28a270e760d9312a0a0e6e19bef5681ae3cec3d24e33641896e08283e6eb707d2bd33f128cefd6730020cc68f9e47b405f2a282df012bd10fcbc67066d5ec9076d9b507371f63f52395cc6577c4cfeeac4c8adddfcb6c10bffa85989a2de370c9ecf2f8a1228d750da8fd45b1666c0311ec948245154b5185d6e8d8f18c68cbecaec76613e670db01854518e7476f1505cd128d5b44d811c5613a80c16ad1af20fdb098e94466b47e414f0fa7d486a7d183cc49b53e66e9a06dc7d2098ab08506626a19c027f076fe4cf5bab14556b56011ff18ffbf0489cae60323a49ae2ff2a4a5672f2f2c04d72e7a45ec30fc9523cbac4e57459668e870f9a91d0c3e6fced15f5e9dcd843a4d32cf0790497df230c05ff39b1ffe8662cdd9376644d3a18c272c13682d06af5b4e6922b9e97fe16a39efd120fc285da3602a7cc2d4cad7e186c829ad945452c859b9940a805fd6d63d8e592508e35c14a55f3dc10fd44659488f972ba50ca4d4fd99a1b55bff427c8c9fdc8c805f9048b15fe79c79054e54de102f1808a8e0c2139ac649b38505acecb79903d1b327573d2ec021f1f7c4e78c4dd8174315e9a8d00ef90ce45a8b014a5899a782b7be3857f07cd7fb6994a3987c0d452fb63a3d42b71dfbbbebbe394b90dd8ddba65c3f0b00a2ae8ab4a9ede564f69ee85c300e68b92d3313d5af261be446292850446af2ad9f2418ffb6ba3a268fccb564efec9bf416b74d0f49a42a355b200567bb0e7af7b0341a888813fd30a44d183a7b5afb869652de574777a52147fe3254592f4b5424f9015992612ab933a447964a71a897c1677a0d5c030d10481b210ddf1f5790f88fdea3fe1b1c964d8642d90ac67ffd613075b0511bfa65ad0ac8572578e706aab1d0a85802de6f2bd181d55d91abeaa54e6009f1129f2123f530111ebc4f0cfee23bc5d1e9b85ca335a024687db174893d47a3ab5cbc63ba63de460983b0c72a09e937d8603ec2034827caeb01ada8bf68e0fb7552b5c1f4966fba2c4c7aa4016fb50ac7eae5a59453d7296e75e9054ae38f3755110c338d109434d86c36dc8dfea4029488ebd06b6ee7a7cf40a53b06fd785ee7109059a31ace039ccf5e440b7b52a5695f006c8c95c5362788e62adbb8f105205ad8703ab3debe163f4a8a61902be91354a625124cffcb22ca090593f5e08c937c1ecc4e1bdb78f5504cc4f934bb7b78195ef0aa07c19287e8435a56bfcc115f78692e4bc790275fbdee1c8ab3ec7b98861b6700a0591899ece597fad9b871cc252dea684d7a6801b81d1100c091e2330a9e2b0d460dbc0cc612cd519c0ed87ee541e29a5c3ddb142903909d36c172d85268fcbaf1468fd27db30b882ddfb06a50d75c1e351ac13282a97d2b8d258f28cd7d1c0a202a1716578c1516b25050eba36d163f6a3590f01533856e5a66fe4a208571d2dc2c774711be4557608746e56a105571409ec112c0f13608010d7ba789695e795196959968c8cfeac8efff2625bc3a17ca33b0811511aaf213ae513a2a554496b9918a76c13d9dcf93fbc30ad034e4073138e84870fe6cc5372e485cf9e7c8c5c0ef114e28b0959e206df908cb2f69166ca623a540092220e9354a886e2cb0440208abf8c4be2791cc491fd8785c622832daa6cb207c6f520d05dc82c1a92ad18af803c1530e3bb0d65488e2f2ab3b9a33868a82e949bbe378a939ccd7f16289127b5a81c29ff88cda2d91b8f923f8c908042faccdbf3efd7f13adbe18e505b945d2d23a6b0bc23a63020c920d5ce36e6609190151a7c901ff7f8ad3ed744ebb8118a353378b959f025cf7abab48e81f83c2971b97d418672df9ba9f0b6c8d8d34fd285f8d256d22ac660e0081639c1133ea7e7d3d76ddbe8c36ef3684165b4db8674b7698a376a20795401e2e141f884712a7102fa553545c73bba36991a7afe5012d858d6a7fcee55c7068161de500f384f6330abf0de7adcf927ea3bf090978e55045eb9e5bc1fe394ec0af31788c1f210d880a94abf08dbf30de99aff1e6d10f2153cda92741af7cd0c569a2c1d7c7556b42496c5a543751dcfa8c2f8d801436380769fd453b084882ed318562347717072c68e0434dd84e42776d8424bb3a83a49831c26b0f65a32d13f1030ce083f557447735f572825476ab04d48bc55ead286d3279521079879d2e5f29d8196c0a97014fad16ee4940fe71afb19f11e01a8df3ea2265fe42dbfdda51c7d08e48c0bcefd3f42405f8e087875e40738c1a6ce6b95648a120e03b21cd5944d019e1032d915cb838a58c7ae0e41d6201c1593d8be5fcd1a07d043b763b0493d22108f758c8540d2f7a3d04cd151fc51b281a3a1cf57a7080947f10773351ca0aa6818a48a40cb1d9db4c20e0413b10c4a7bc3b31f218d5ee0c4e8764c7ed3d0623f8e6542d0d92b4c27e67e043d0a143c8b0fdc1260b6b9f4631c39ad48eec35318ba0781321cc449bbef00db253054e397e62961c03b03a619a8c27a4147219e0c19b359f1ed06457f20e7e57e1e881bc47a289163ae63053d1aa1f624bc094238b96dfe4a6a36ebef02cc51a4412480b81718d48466d44c1d284166bbe35803581a449696b1db2eb05ac1adb83a41e1d4c475b7b2e9e4600d366166568cfe21072d2c9ea363555395913ddb9c2f63aa5e2321aaf71db0db4afc5c71402cd29d4ff7ac5d959848ea858090a0b72c70702a37727d6573d6960c928ed0135146f6c1da3b1aa7bde82235db7125d4114efd6dff72ef9b560940cf2f6711666a8614ef573572ab3c90d2d7ff761156bbaa6cb1820f03baa2bfdbb9d33ab69c8d3eb7a50c862b88d1de38ecda5c06de0e75cc40adbc9d47140fff4c6b7594c2aa7a89a4e207fa4c1eaa7b2934d68ecbf17d17bd0cb51bea793ae65af27a97c01b5a45ef8cd7e0160b56dc6a7f7b9d5b29b72d06c54eb0fababa570fd7f41aa60174f6d6350239240216488dc756124b6f2ae1e0729e3aa9726943b286b6a6331763865a54e11c48ccf85a26002070a90b4f506c16851cb76a30cc969a4088c1d2a63378a1f7155b2d2cadd1b559780e70a3f4fa1a170d828edbd6661db80e17524eb5d253cb800dbbcc021b1ad225c30a6ccce4e2ae72cb3088b686741f0dc3d673131336d45d172c161722b0a3dd0aa912bf8cb009ba09ea1a81087f25a796db497c6d6ba2d91de941c2b9992d07f274a36d5c40fa2f0e0e69d34520ebe13d27b2a17d9de424493e4edc8a2e4767a78a4e227c0c99679b0f9d63926f6090732ac2c7edddb4ca8d3f5b41d9489884cf79d059ee24001c5860810da49194d8879c047bd606c3c7f70813c9333f3a618c74cee5078e250586b6933da4377f0b51704ae16762ddf52592dbca0f62ff6b80a03b0ffebd7a39472af8af96feeb628e56f2a6ab2bf71f9c750a6b96b49f410d043d9da4d596ea6ac0592f076a5c5181d7443c39ef045476f74d07960593883107f036c09f10383b98b3cb00fff8bd0b6ef8343d3581dcc45f56b1ea1e54f5aef1073995a02a69de1820e06494bcc9f9554ba5a469b3fa1c00b77b0839ac08cf52c3de4a4ef9844bdd7a342d27854cb20d67b03041c7f79fc649b0f5a81c083ff586cac7237e3ebe035f5a9103ef10bfa09e81ff832b80a4479056154e8cc9b06493cec914cdb66833028fff31de86b834545fef14271e3d30c489cc83218381c5d672fa4714a8b1e380e947d1cd64814238ec862a870bd8de5223979bba0c74e485d9d11a3752fc5b9e1fe207b41eccc46acd9f97cb0561896df97217ec8bf8d750a38e7f1ab0057a5c62eaf2e1eb4103d90608ff34945ed7a6e941516d277e278bfaff87f41646ec0cabb95257980cded5ebbb8cfe734da1cd8bfa5999c43352248933eb67368d690655091c746ea757305f6c764e01f5b6788661c58400ef3597952438547f91576800f023289fe0985e874c7900356b7984d26f21e11e11f47352d564c806d75cde7beab408554de0f29b9acea0dd9cb71609c986d3807e87eaacfcb4ede9e7d737e24b6e03c1b0f754e041f5629500f40e5cddc836c4af7383540c7d29eae388b721b15d490e72cf9464c90cb353f3eea0f8fb8c1bb52affdff3e06f10dacd014a78c8fac9cb862899edf663514e8106f001fd3ef92a58c6c09564c15a07e3e0cfc896659f04656014760d787547446bc56ba2930145b1779611fe55588ca1414db3c828936004fc4884788685694b6e745b89bb499f8e4042b7f9d5827a547614efbbabcb51bbc26008fadd7507d3a35ad6bec76b246796795a0715ecd445207c29233d25fce3aa8f51bd706fb728180980d8f017028b2e8b1cad70c5d1f1782e3605cd88476736e168a04e1be77268116d10e7b2f53c1157bbe4b7829ef86f21f916942e98fce7d12f7afbc80fb515d7acaf775cba1bddb5c4e951e9bd8a8e9afcb618a379e19ae92359088cb7236955cd20cab06c41f8cc46d79fb0fb3371b1daf7a70f9785921d31b11e50331eb2444afa7740e0211c22c67fb48421eb5a319f301a152825eb06a0ad218d460c27bdd93a7776297afe638cd49200244cd10faca433ead78af044a6047e2f6ee9c876b25a041b84f5c0e288fadc99417fbf536af3394bd6f325d6d9901b16dde08d732efe5e174b018729fdcbab7253fb7fbe09b0090f6c9f8739a21e0f42b4a5af8a11c52306c8304657bd7312a4cdfc46eb2ab0f5f6bf761556bbfda86837fc3bb999ab89f10a8be58dbcc8e794d37ca91a8008093c4efc05f8fe491cdbfd7a1b62dcfddbaecc291661a4576f1cf4e97d700c1161e9ab2e310a570bdee4ddeca2954a58ee905bfeb8a90fe1f6b639e1bbff8cdacb0f8155a1b9fca187e44416df75f94879f8f27e9d9a308d2d06f08a41cb15ec96ca623ab094c2e9531802d101c4d48f63033f347ca3656c0129bb3ea60850dfa9e411ad362284f75225f881794bb663beb9bfa4b980019963dee1d6efa6fdf1cd86f136d80dea0c9d0a939518a330c60461e590186c57b51fde283d30f9b42b1b14146d11eba2846f6d3fe13e32585260f10ad3ef77dbe51d947696f3721df4f52f34b930defe50347d6f16f8131445a92091389aaf760e1811d94e43617c298fccf263580dd5de2ca5cfdf2f52a2b6330626e63afaaa8bd1a38cfc5070678e6e4a8dcf776de8ae6c9e7a053b5710ba205c37a1d1209d492868048541da5b7d6b5595720bf7147106931a4b8e818215010976bf6f52c3a65e83e1258601b9dc19692188537683066c410b2243a0ccbea0953b7866df2341fdc2edb6028d14d1fcc29270a1f5ac2f15ea40c20f33013681f75f05a5bf86c902570c2a2acba15de8875fcd397a0c7011cf5ebae802fbc59f278b7f27b96e5126af88c5914806d579075b4f61a2315ef495d46c496379e4486e07686554bac8c5efcf7eafaeb32d09efa08ac83adf7fdac520ff349e235f2de6ed6d3650f6390e74de79130a562fa53ef23e771d3b3249ab51cad6832c45a04ec50f362dc00ae353d4722e06d8f86b258b7b0f8c48a523f60185eea692386209d523e64c50a2bd6389c00a695d37c94fbea37c194e8c646e65c87721ca64ab01209b0404df438f2b535b972e4b2bee3233e4800db3f690a5af630861578a96ade9ff28e5e0379348bf1b78e7963cf9badc6082215c9b90ea2c4dd65e7c146cc0020990102b4df4c28e2e903a87c94573914e4c1542624b08b9850c24f4fa04dba9921a48876592800db17bfc93328636ba95934e96545b528a099dbd90d98aad25b7d55d0027cb12c3fd860514096bd3fd10924eb9ebc76c5a0d89a0c3a59573a74a9358d311f3fc18e794220762e197edf43f5b55a08502945e22bb64a04677abab6742ec045c7eef5d9f023f79b0ed73dc6a3eb3c9ee994fd582f0c0e2cda8af7780901bf89460109c957527d60321bd690a7aa6866b6a7d17a74f2737fd4b3e4b9be6593278b6087d8c5991dc35f0430d49ca006534c2de610eccec78a00f0dfea3121cc91fc8833bad69e9ea11bca6e281e4b00fb28f3e386cf9e4ca9bc324d5976d732d068662525f1a59d467ad62401a65a9d6033bf29d6fb57f67b19003a03f815f95ba582890589ea5c2603b13d5610857a66031fd12c2c16f405e5c22e16f669d98827ee5df5bd474f5ccaf70f0abc1aeb55b1b5cbb231a0ba8f4662b6d622d30de2eb3919d6e8a542276444b674b14da542d9f0ca5fda484c1d65479a001317a0667d130d74ad35f1a6994d96ee4f6521b408b858d7faa33479272b9a7bfe952da009e55fb246f4ccc91a290f824e4007d71906885e7767c918983dc9121a8c7fa31df3fe7134f4c574769aa92a228a161c47f52977cf7d43a0f4b8418c20b2057dad18f7e73a6006e45f95ee8f0668294a9ac8b71d51a1f2d8763bb89029996c0baf47e1df20e67034bb1358088ab0b2af0e816229fd51d36f64bd11f2810d8182b7c59137329efeffdf268cf93bf5c7563a0227a1fd2a141e332a78d58d18a71ef8308dfb8e04a14d4c768602f50171e2631bc000bd3fc0dd56c5b7c879e0c4c0c14d7b928417dc87e0be4aa34a4461f0294cbb70d9e75a26c8bbabfe9cb745522c7355f0672b9067c8789f66048b88e13e5d833869e07c18f837057228c1f121dd22ef7f9cee33c6d52ddf13133c82ef89fbe658706d071f612cfeac7993de28053d9aedb529d1c54342374be4506fb4a9f1b7d3af71425206860023a3a6e3f280aba3fec42b5ab10831205d0246c1cf0ebf039d4d1aee40c6802ba34f558627d6af9ff5bbca31014e0b48183f1ac40feb5fcd63b6e6ef70ca8c4ec4ab6a7d28432237fdca6e426b5a787eb9069dd98440bec27d06f0cde99ead295ed872659e3fe3db8b3a8fc425fc557b112b11552728481c52603aed4929d2b1706144d0028b73d0cd98183c09b6e31b027aba0f1c6a593a4e4d46ade17b664c0d826094cefbe99276ec92ff721524ae689a933ac4014a2fb89c4f92f3f633d4e5bf4238a7bea76622778a97638d08009020152c0e290819d42118310030090b1f8c8eac8476f445f72c09b82043eec9b81b4faa8d838c06ab9c4e7578513f7c203781edccb25d8948dcc5d5165c9ee90cf4b0c6a8238f4efd5711392a97fa1125aee05909f80c5ed94c251052c816334e58a5cdbf67d8118f49c15bfb00803a0694cde08d29931797dcfa09d4cbcc393011af2c37ce134bbe8daef2096d19a8002f86e823720fb200b69af40735f588b42c85d2cecd4dbacd25a124f166f142d94cb2a600b9202c1686e8c28e57884d268209f185d9134ab9a1afce693dbc58585abf5d6435c98b4c4a172ae313dc3f5dd606a927ce3091f08530b0da68c5f1b8de90c0c5fe1c27fec2722a5d546511b394232e74046a0500b31aa438ba4f23cb48df590d388c2ab0e2d1fbedbad31d29d5e77a832f6bb222dee79fbe81e8c95c3ea6f917f0429e611dd89aa4c0735673bb68b264fdf180f2f0bdf50100956d3d071c4f0ebd9d68157ade97eb697244020570248b2c48f0ef9077715302f8014f85c8614b8fb3a5edc56d1aaf05064e69b43eab7138241103cd529800e9909c12ffc1fa82af7bd764964d2376acc8eb4b3e32ce0c35d714aa28c09535c527aea7581514cb2120719af385e7654061b365c796df8e714d4b8b8d79c9db5e2701478f4fad6580d5843ca7429d652e753d0c1344fb19e5b422bf7adfebf626a9c65e800ad1e6548284b096c692ed1144c5d88c663143a320dfb59856559a9384b2fcfac1b73dcf580082cbbe7917c5b935ded98d45404c4a0c6ee93f470fc2a2bb9c6248e0509771798cdd023b1ed2bfe02dfa31ad1e70881f3c7209404f6d4245f2f39dd71c95b9a11e659e4d7bd6984021b21c950a8f4890cf689dfcad99257750be0b9fbb6a127d001493cb959c7ecd80f54e37484f0da000bb3cda89f59bc80968339b3015fb23413abe72b6747c87d86c98d9a995b438796d1e0ba4992bfd887397032c81ebb3eb4fa977ac3bd06f60586e1c8ffba0e933835603f91d326264ecd35c0a1f591a0743b88e08be2944e8231139f0ef65b962a50a59138453be4a73e945b53cf63140f4918fe81f15bdf352446d9628f81ec80a66755f45df32e2ae8684f190762ca45f2b9b001570f6854696d8b9955775003fd619c3698a3fc30418e0271868c4d34456aabe2bbad348f3ca38009687130149990e3477c27c97c93dae522f911f6a674cf7de3f8bb635b7d2b76b0a78537e86a03aae1705ffcfdccc562b2ff9fc47a7962ca24a328dee7c49076a34fc36bb7348bed581a94bf29896d018a39979905590a69cc57bdc8ea2d3dbb027670f35237267aab63e664fd09945b4353985c7731177eb5cf7357296c3e10e6f2120cfd9307ae06344c53fb8d1209a91c81a60fc591c4bf211d23c80f6cb22099a92ec438cb41f36bbdb0b1a8001576f66aee22a0e69ad535001456eff2d07f846bdccb5158dede05067eba8505bddc7cff614b321398e7f1570e9f27bb65594de3bc238596893d962b7e1d5dc9ff3d47833bd8d8a274c82243e089817176f177737788c61dd6be2c774b2d3beded655f6e9a91dfed754e44cd285c8a0a2722abfd3908440742a04d79ebbeb09271dc9c30be8c55819d972d0c1a4a60d424e1836229241adc7ab572149ac2e5a01417c68168f66b5d254dc9bdc44c75504b0cfdc8c6d188fb8f70b4b0b32a8c54f13a7a5cb30404c84f5e67ed80b615d9fbd27c7e4b0d55ee08d5556ae0cb8502030fb101a7eb7280a5b263c2d94806ed0414b823f2de1ae964a52633303909240520befa1336433b46a24c82b249f5f657785225fed5c35a8b17bde8fa07d6bef2b1c2945aeffcbe25c6516ae10353f8fe54b1289d1634146a856623b894616873fefc5a0a42b167d1148eee22acc72927cd98d2278eda90a8e57f62e407b47d3f2866f2c57e93a9682f575c2924803470eeb19a36f71bd9d6caeb174b9bfd31afba3343adf594f9145b5dd00448820924ecbe6a6cd90a78bdc26776aeb90a7669416725d00593ec32e5d12fec7e6003939543f870ea04efd4ce321eb2bf65b1a5e4c19090c00e3d24c5d4ce3262df2d6668bd69177a0d6764ddaf371c6fdfd1ffc914890e2b62eca127b5d57c45bf323012c544e6886a40bf425c04b344f9146711ce120d7859f6d3e7bf95ac2c0a269ac69a7b0fb7f81aed86cf0d154d43690fa8b56a5a322b0041bf7f5b62fb239c4279f211fb54a868f3e7c825b383bfe660b4fcd73fea5428913133853fe98363006651a1f3f7d1b1ae30ee909f8c3e71b26add2174f164046257f19c3cd1011b60135dd615e39712ebaefccc04254ce28c7ac189d493ccd4c708554b9fd1c04885abdbf29f6c101ea21f44f3594082fdd2af92707611c01a32f443b07fe90552143124364482fdb696311198c20286d3c843eda4e55109f81cde1f4b87ba51e1d53b19f0a84081d2743c364c1044b7f175116f825d9ec4d0ecae0b58f3f255c439d0358415150b5c0c250b8f641433454dd9b801255512a1b550b5fb24cd38f430b6c58709759209003025236ee189a4cab30ccfd93f9d1616717505e6cc9ede3a4605f3426c426b07a38924dc526b56b38923fc4c74a4a0b6708c9d5d6be24d46430cd3e5a0350266b4fdb5947939c48bdf495f1b7f09f315d1040e2f0b7e974c027267cb40b8d97b7a9b36948424c01fec371b081e82b4fc2510c1c78c70167a6cde6fe5edb12ac03ec2825bcab0165680ec59136270e26b7f4b91c5f88b45dfaf97fc54d23b6bd615969acb7483eee8464afc294f24815301eaae2b10d035268379d61051ea874201c9d9c513a7c9651bd72d8851e68fe2b17941eacd8ce7bc56ccda8554f546c56d2bf6bc84bea7c338322d2dc316eba31e1e92ffbe8be45491f51e08dded902d9489ca8ada5f49086493d5b92484b1384682f69982bf14976eaa953c884c39498c7bf43bea8fbcdc77841a487948c56d7a90cbea9914b701a5b36db9cde1d5593ff6ceb3606da2c05ff6d6973f545c911796f2c8944cd5b34a9fbbdb411d40d1944f8e01ad03e31291de9f2324c7896b064fc143f7e1e4611216d3416a28708d9091891dcf1001f76754416944b532ef29e6df27aecdd6e517f1884286afa80f3f23d8618801acf14987152a1238583ac0c48b2fc974703c7a4267e815bf7479c635b54c66be3b4d0a2912ac4f961107e062d41f31ac1b6530b907bbd7da073b011c93702575e0916bd3d6219fa7645dbe442e8e47b00b55c6bb1c63c5e9427c2cfede5987237138030316f884840c05be7cc558624051009af289e0ecaa5f7ec70b925d80296b05112d71b124669eb27252cbc2ce2a1fedb8b7ea6b966c9a5399dfc44afb646f4cca1862d6f2eafa9b2d4ece360275b7fa38296f6156aceb2341ef33cef30ec6f0ccf260e7d2ccd5c22066611a2b74bb11298094f8825ed71c8cabcbeebee0b52cabb821de6259736e977b4200e6ddafb6be61653375bd0ef6c52267186e62a65d2952887db5728ccf0ff98d2a9fd05742164ed1278ad4daacde6e4e1d9dfdf68fefac97dcf6322fa2dd34b6ceaeceb4180454434d775dbd54f3fa0737ed0ec846194938a01f1edfe282b66d05a019cd293f1f685df5c851258fedeae110bf0d11ee0750fd38466501536bbd7a07184b77d508f81d9383fa1b37d190e7937887aadc603a4432186c5f389b700d548a519b9c39fc3ad97b2e9482f987359a54360bb15e70ed0b7c39b464d5e4a453dcf3f2524710e85339a72404b4880c448ee7fb5ebcecca579ec0920fc3f82480c95712038c23a87961b86fc4659df9ffea56f473089ece0fd572449c045c6e9244a56e6a4ebee5915767b1e41d78e10ea52d67d44177e7957b50d344cbe0302a1c754c348bf5eb8f2ae0ba731cc0a56c7b3d361b017d0f730a841a4d4542eb317c2f690b5e39e5bc2c6ca02b177b0db58d3834c0a8321537eefad0777ffebec418bdb78bc06d0633b1bd7fc01f9eb7d14392a0f144ac4f43cbd8b5dc50dafbc7081fae504813150fdc98b474d5ffc727f3ea8f61b3b0dfee6739b07d3270a0edd59e8ae523c42a92f1032ebbd481017549db0b26976a2d0e55174f8707bf9b71e23d7815c4af21a8aea08bf516365c7e28fb4ce2c34166470a0b7512a2e053c5fa043dfb7eeb3c0fbdcce71a561d3c36996c170f6ad9fa0be23cd1ed24252da3891119f5d85200d5edb2bf208c95d454b48575278c3241b25a04cdee9b16451c585d5c3492510799821e25e1d6730eef477192c5dd9b382c914080050e0ca0ce9043b742e61a7b7960874571e5fd0fb82ac8cb4aebe992e6c33c30250888bcdc0fce2c8ca9f096ff188f12d77dd290ab044242f03e4a0df9cbc5972e2539ccd60395faa26300ecce36a6dc8d7fb86326a57322b99fe28fbe20e566d1eba2af5a162809a2ec6b18521d9291b68e48c59575b9b617aff88e5b239462e0c0e4b6133085e4317dcfe231b1917d462b9a4412d427869e1617f69848d3b1c34ab35df6ea2eb0af028ec9c0936ca0de6be0e6c1021cab7a764ae64ecc48b52b0d5460d707b8fec7fccc05600e3b4b0a8689e8b73bf61c300b062d3aa232e0839aa49be154363c34470b5c90d5c58c711447d8d4f726b401146e39e06ea3eb27021634058e450648f98ef730f2e4fc89340718a7a4d2b4a25149755429f8cd7e9593cd47b78870359ce6a6608578d927b5e5c10734be9165ec4457d11d19719eca517fdd7795490effdd5891d35221390f649adf71741b37751422ecbe4ed1696bd2900535f08783953b9bf0c16e6d4813c2bae02543b105888686f8a48c81f8625c61d07b783126262fde875f00ea00245e13561ef031d41f12440ebeebb0e4fb4f560a03074701d490ef3d5b662c639edef8375ea5269e328c3e9f4c0928aef10f8139a792aac67ce1817d6e26ab00371101884d75e4f60146f1ab45a9500a2e470ec6ae39c01ac441c52040b1414999b555477617fd9d01c92b2a48d2a479ccfe38e27d0ac191c1c07c326a09c0c05bf0dbf6b1898ce37f0472c45b6f8232d03c4cb2838dcdc4d6e413d3b6780528cfb0ddcb18d9789bdfed9e79fd2c3059bb82967be020e566c68f80acf212396da752e0599230e4de788249eee0f098696881e887dcc9bd8acf9fcb1cb90fb361e839b84ea38b793263e797a2051732dde839658438d6f326a9c86e9ab13209775415fef87de7d3e95b9ec5cc14aa3638a249031411380251feb66526664fa35c06e212dd3ff0c007a5d1655589ec010459a86d33d4517df62604b025b9e1d4e3bac73a74251ae617bc23f4bb482f79c65c355e220fa45f4b737ad5584c44f1f4f347d75000b738e631474f079d98f904b1f3fc44f5ebd1e7242e095402ad59348b5b6e4a818f222a7aa91b312155dd8f4c369f874137ed0e26331d3b064918ba427d3a4f6b5a7805e76f395b1f8fe6ed0c9b7e895c251bfdf98fe024a1941ae6664adc18a7e15be210d4898eade7c6162c5016ac51e31f93f2c3c660fcfca0c351ee88221237589def032be44b25489830aefc2107c7e57e81af3fd4c42fc064fc0d1bacc4fdbf9ebdad5afd80b35ba97e67e370f60d83b73e6453834fced0fdbaf26f497c9eb9c5f202e0840de55ddaaea95070d8753cf3f71c13d76a7f21d609234319579d97d9d37b9683ff5f147fd5e1aa96bb4a00c64f8f909b246c3bbc1427ce5633bb9c676b37d212673b5e94da0790c3e379a031bed2bccc8dc4fcdc33fad9ab7308034394df9dbc860db70ae5a909dbd858f5b3ca58617620f6d46823783903068574bce3859c3f5ecde8c856b0ac16e1125ca25feeffcb8ce75196489363c6fa810019ddac7a22a3cb74af4ada7b070998d1a1b2142b47c220315974b21bc0b698c5fcbf792b6351762638be3e631ec2079dc29689d1c590f0e37fd2606c69a216c96376aa6074e376a63911f723115f657186f330ff1f2bbd3002a288a7192dd698bf1d7f63c0d02cfb67dffd2b764ce387a5be7633314ba9b97dc5aa53c28f83e81341f1bfbb1a49de69225f0b5339e1775494b5c62072d0116a4f495de4cb77d256740fb60f69a8338776958b9b1b1d3a8c4f842632c25e063bc826012f73d7acee438d42f9d8b26823e5e9a043bea0380a186de162ef8cf4774d46a9987f9e18c5c31fe204fbbee3f89338c555c89cfcd2e074224c00f4de4fcbeeab83297565b4410b6907974fd08a4ca440fd8e639263d60faf48b793c82fce79d78f6b4294d7cc1c6cd817facfa1b0957ecd84baa2211d6d067bf80772ff5ee0918def767e0e81a603f65f79c340f39d2846aaef8e004a9425d16aef38d1790b3a1bce27ecd0c59dab8118caaadcfcb12ec1fe222dca5f967bf164ae70134f1a73e35fc14226af4599b72f028d6a105c02e8c6bc27311581dc5668cf6e8de3d9ee0431385458450396aae22de8e16cff61cca3d9282aba7af182a9c60134e7653dbaa5cc00e387e82c6dc0a560601cfa921851fd11d4fb58495dfc2b9c1e9f5dd4f618aa274ebb113f4239e1bc55ba616910ba45b9a90a3dddaf686f874b1d29dc4398bbf860da27e8c2d92bbb505ac70bcbba7038fdee22733e925f4bc04187dc9020151ce20a9b849e981804b0c41ec9d0295adeafe159ccf52147aac1f8c508bcf278b14ae74cf3a2bdca28d38dd904b14acfeca6df13867f0c5267ae008f2dbc2346b63108c4222c2828c923f3fb98efeb487025a2fd9f6d10b7e47ede102c12041565d5ad8497c19c4467f9ceba4ed1c28d562bd353c3a63e702ecb94e2dc2f3a952ea5306f346dd00f21e3c488a567e7af2d01aa6c25e4bace1088ab416bdd2d3c30ec34c4c1bac4346f31ec0327bc2873a68cfbcc2edecea080f57b8491fc3e9213a0b692dc065f18f593e0519c9cda90bbae747db901b7c600f954da873fdae73391e3528ed4473fceafc557e5e8080a51d43f1d63c862aa0b9f322f4f1f100238c157d3fad8a5ca0046a3359f7ecafb1751e5af381c106f42298452fe9b8a07e34bba11fa2f8658c45f14a4ef7f5f3b9c33a236c7d4592a82a85fe4f6940f08fe19454b4026cf79d34ced981ca3a3d297dc95e599492e27b7eda4460f26d6a98c9536fbbe3c8b9d1f3f6221d2d39f2e573a83640de541df1ed3a0ca6557bd4b591541058a409d2fd80ce2078a9b1f261c68ce16342596cb66407881087d53ff3e39e27b5cbed175f2da66114e5cf4c7b507cc23d14a7c6945076dea6e78eb16cde15652099c572b903f45d1197735057978ee58d45b566b4cf94c42b21c97ab94c9f2afc56238f9ac9b4cc82027b6c58a39e5593dc829351bb04a508614072d727229ae15cd1813497270822b834f6a6eeb3286e6edc250f382600c69751cbc7b6b4194bda9afcba18a752aa70407fc26fc6a803b92f380f0baa4f0479f244f044e68b96d882b7cf9b9ab01f35d2b5f227b1907ce3e0d422dbb1ca5eff2ce16325bc348a18ccad2699a1557b79b5479d40c876fffee443cec9551012bd18abfed611d47e4e1428df0179a933ff275e625a76911312ca07f0ba9723c3561916a7f108d7356366f3e9469fa95859a94dd58f649620a7749533697a0e32e0d39ba182b4630295c190269e3a6972dfd9c04b92878a73a5c8580c6fcddde569b8b122f7b45c968eda2729f0fc878744490876e76922e284b1b4d30b83d0d017688cba93e06c0513d203577aac687b4d05ce454b6e7a5db41251680865a75fcf6ea4ae54270fff9481f052ade9ff2b20ec22bef9f363c4d0e1b54fa4e8defc3537b3b8844ea37195222bdd0dda06389b477f5ac815cbf9af74ac44ab40b38604e55fd40ab41c4094869ed5f2dfafc2e398402b2e48519732d01e46f15391f947d8601960d1ba4a2c85bc9429be9d96c8e79aa0e5e1d685fcb7c20571a505e5ac49ec63d75c1b628eb53489cf188e293db78d160d3538626c2aad4cb8596366bd36d9bf84753f138ac50d0d2dd09e850bebed26d97fec199850f847356cfa4d1b5e7117b8b4eb33027c621cccd68ceb94b92e12203c9b99591b71fa12bbe87541aec143e56c763dc3aa65503552e70b83f0c01b77406f536914a48610c0d62d182c045637486ab9c884d3db11646b7601112892d3a04c04bbc33b755d6b6faba642d8c5f11a680c7be8ced62d8534d18e83e97c998f9f0e8aad6dfcf4a9a2320d4149d6f5892bad5d4361cc2b0f442666a06766ea7646a6dcb234ddf0d5a4a620d6749be239cc26e6a198d9caf873b9ca46c95f66cd8c032c10e71caeae035581964d7754f160fcdcca0166f439f9877b7b99095c19054e8349a8d46cf20b3ab92b36286e34b9520065c3ad670abeed8784c262b37a5d809282abe4cca798c5d4d4bb45aa7a95079f4c771f0c0546cbe86b63b39a333b38a2942654ab03c9134385bd83412ce3455a311aa41dcea6fb6341fcfc29b53f4bae30d4fcaa085a254a0d007770be24cca00eb702d28fa0545cd8214cbd7c328c4bc6360b6b293954fd9dea9517fa61be42a3bd61330d5cd20ae716f21392f3cc2f2733e1aa59b3d5403afc04c26ecbb43e89442282540508f0c92770def2056ff8b8c873863f525bcfb21324f6c31787756a891583fadb0f52581b454fc20603dc3c91e74a9903cffa48b50441e209a9ae399eb997ace63a0952e140978f6ce0621f75e9a190f6bac6c05d5a79a272bd273bc27f178cf1a958f572f3cf929e2debeb5ba7d65fa6d05950210dd1f33a21b3b59c41c8a69ee42343e31998af52ed399528a2d911edf1cf3c93745818c398f5ea4d825c42c24cc87e2a3d147b7f12750a8d6673938f1e3061700f019c68872b8836409e97df44f4784e6a4e71d3c222505c64692b1718fab92eace095038516b7bf326a17266ad5dd85e5910d11c485a7011f344ac838942c5074cf33de88981930a22a70f0b817c40bce24f133569851c54034fc8fafaafa2ee96cf47e736c6af5ad883c1fe2856e2238d05f9ac6c88c16e4bd2af9a2c2cdef2011133dfa0c224c62e854df310ab939e8ba4dfc0c84def387d043e65fe1058c53e3d5752227cfe460dd2b228d4ee226f1f8f84423121fee033162c2da585a819dbda929f0226c532c4fbc391a6e19a18a1cb609374aa794bb1fbb741c8b64aed42d5cd8948b6c712aa13d10fdfe34aac230d53c1c054dfed1c8526aef10ea93de0a8b7d2e8c32e02e571db7b8b3490168a60b89e67091aa6775788d5b6babce36478c522f15bee6e69de2dc9abbbd369e47f02718241124a6193eec11385093e5eea094b2049f015c9b837583d413b922dc43892b9818f2307c1e700c7f203f9b1c05f775979890e958d7c7503037ac91e2df6cc776bfa27de419a8ff61e064cb235cbe4976822fee08db83100380ed9b4daed97184f1ee484852c68ff07b3d327e261183eb158c82315903f2516d5b1ca19798d4c4bbb3cf37038e85c68645d3fc18e9858a9fb0739f2496cd7cac4b4a50e2d8dbe8144370cdee3c4cae6996373410d26e5f503ad2b4a3498799eb91a256045086cd2d15db9008b08d5f3146d5cd1235b5e595e7a1435e7fafaa17ac2f18830426f3822c83a201c500408b25e024e1e98f10f20486b89a6f861c2e4d26c3b6fd488caa2ac8620a3bcb44c21cbbe72a14067b74603454a2d5d184449b35b20fa31bdb1dd240dd2bb7b522584db49b943096a6440e4fe63d23abbeffbe08ab278d376f30054744c55fd7a75aa2e132346249506ed15c2e6d2e2fd35b9b1e844dcbd11472cb2470b5644ef7290295a4090d358653d70d8e1e50b569b05f13b1b67378ca21fe2419bb8ab7f78bbae92b5ab56722f332d888031776e94fd8b0115876288669021a23bb9cc0ac118652f1117c60e0b04ca59b8514c32f3194788d0ddc4feedc5ea0715e6f85bd663a56e681904a976398b8369cd8052baa1caa8b2ed5dd8933ac15cc6a010252614ffc5c3f155a6966c22fedccfa83ff9891e16bf0edbde97148dbc1002891220e63c7f1f994574fefb20108fe46fcde97d7365e631f1f8037aecbef1288571acb04d67b336057ddb9a4971dc3e28ebbf7d2e59c95355f07f8831887174d8b0445b835533de205285f0082fe8054c200e8acb6645806f3d8c0b46ac93e37459a974654d2e19171d7efd6185ae4ba459678fc025ec8d3f26d884ac32ce8cfa5f2aee3e107306d9abc502664c3878924ca720decdca8ff531ac0b8dbee3107844e5ee0dae52dd243e21900b0db14157bdf01730f28208ccd4bb68304cd052c030a53c97a5bbedc69c857cf213f1677e74aa0c0e727ce57a2c959521b104fb3300c801e75902caa34f0ee3293c9bde3a49c407f85cdf1c59a2827364d7d6ea56609cb9842f8451f4b44d2acc1d2523f4201b0a81ee1dd91d63caaa59be02cd30c6951148f4003cccaca01369e52a8559b137cffdb6cc3428d9db8c8a9de9cd34205858f9335b847cdecf36708f4a991d41b0b33a825eccb0e2dd6b6adb43a4948a68751860fc0973eca05b6824e07a9aef0f6f184566ff532316b399f0caa21808ba50383f28098026e20f57149722c03055cfead293c94a93fd55774004a9cd32f795fbb2590fd749d9ecca7c2c5c27d2465d2114023d899a39bd0ef10d9e28d2e31612c7ca599e5bc56370e109f9279e32ccceb5c002177c11c9c545a4ef667ae411b3a44e7db4f26372a8ddcc7098d30b3b41c5eef0c9d8855bf9529a58230d64553dc28d772e9410d5d711d4c2d0683e04629a2198b24d43a8055f819202838ea1834d8be1f259e5cccfc90d548a3e39e39083bcb158189a9a23c9fd463586e2a4778e9d319c98c6e88d462eb797fe32a6244d402f204c459e751a2f241af609c3621dc34059065fef41159d2d1e58682641a450e1209a72fc990df9c9d874367f2e4d9d211527515282ec23b306b29148a0486fbdd92607e2d6bed4676871aeb9a37f29fe55838fafdb95c7960add5c1c57936d3e2761a056ae92bf2ef076191d160d9da16d9b683d3e851c4cdc5806c23cc6ba89455f3fe5fd0d229f3d8ad7cd0a571cf40a5285ef51820c56cb86a23ff5c2dd85f5e0f6c7279199805bcb9d59c007983f2ff929139507d42ad5bdf7dcbb938fe6bdd18828e98de5c67686cfdb204f4d3762101f3b939f6ce2a0e0fe507ec583931823885d42b0969eaca1409eddd9a37f34bcd742098171bbabc998e2150b6b89bfc390b4839ad2ed4772d314b5679347ce93cc6f31ce6631714ad41045a95e48f0c002cb1bf3db8c6d487964d93cbc016ea2048fc55179ec031f8f83eca2bb42a2c287d99078fecb9ecdcb001f5dd40d1bb355c8c29304a73e8d7a9e73cfc980e8f8f4d09d9ea930f87fd153c8054e883f24634af512fd97d4e11f9494f744f4c33c52edb604682036f117ff9160334e624ebbfd019744cddee1dd440708c7c8e6126d2211cd668c79e68d4d27707a9f33b2e92272061ee2d23fbd2de3ca407bcf941d454bb712434c5cfe037af10a895a801615251dc336f09eaeffb4f0b08228e0b4134705dce0a6b58445a34df8bfb045ca637248d771504b8192450097d3e628ce85bce37c0cf8fb5103276f55c17f62baf2c10837330f2dfae2ffd65a2384ecbdc9de9b6c22a524010f0852088e084de3ae711ff728dbbcce735eaf73349b495558a3a11ff7f876894559caa698dee6e52b288b745eafbfa855d19e3245a6eca42142e752364505d58d97b482b2168a14be2e85d3a3607b9fb0f768e6269ab2264db31a25306c1dd96bc9deab30cea365897c3c8723b4ae0cd47c5e6213f00c03bb854df0641aa3c43490ca9516f0b361c0cfd0f50c6430a2e6847019e43be552bf2094175c0821a493fa75f83a2fda2c140855e18c5afab93eff264b19f237af919af966f9c4b2265cf5dd0aa12accbc0199dc2c6c59ad83ba286a32370c7e9f58482349e6f7391f4b8de610cebf47eaccefd6b75254f2d467ca9acd3487d4a569189acb3f4bc246de30914fd8e71d6c73a8d1702aec433dcae4e470260dc55ff391e5dbbdfa44fb52f95edf8c879f8f93433fd4f70ffe7db1ebef96e61f6c7e049b17c1a22e99f7cc8de6da5b6718ebcd6259dd22231527fc5613ab2a2c5f8c147c177754d0cd319c4c889cee7372873fd83a77d3da9a5f67dabd0266458c8ce3e60a1b79e4798cbd7cd7eb425597e85ed1a7b604b5310088e712675a8256e6ad914cac6e586666e6f8eadcccccccfc806adf74e9a784c863605e01435132ee23558f6c4c0c17d90e806b666666e67e88721d801868bb3939462c51028bb21857c0f057c0ac80d920788429e615309b8267b65926db186a3ff2be013eaf53d6af0d867723f1dad9dfdfc800d8fbbd1c4b6c0ccc9a7005006c9e629b6398e6c7ae93c0400e03667d04f6711158e71f8c73c626f991911557c8bad3107e314c513ca9578a233c877cb190bdd8bd5adaf3201f9d3d275a96a2016c0dee216aba8c9410b329dcc6acc9f4f9151bb3329219c2e884004e45ca10728c00b0a844a3ec11c28eed1d55bb4ceef1710a42c6110f323e40465280cd2b0a767222a5e593766113eb781904db7cc2aa3bcc723c3527625a3d9f4fb49280ce390e7514e21c04090939bb6fff0302211fb4324f520642dd344d137c7f2299a6a999de807d421e5fbd6b7ea21dcc7bd03ad7afe22d6cca090199713c0e7d2202235484d6cb43a7571f692ab27d0f5f8389c4a69b531160fed464fc8ba9e7fd6453c5d83b604808166510c6951619c0610f5a1fb25a4d7c9ee2419b821f7b46b5cee2d776c96af5934d115fedd2da2e59f5fe56e86868baf5e58f490445b6a08dac4f8ca164150cb140d6dd2b8cafa241b0cd3f30cd3b58bc8545d9c4ac28025dd27ef52b89ac92488ab37904fa040e5dd2ce21e1a968f55caeba38bbbb5b55bbfbe8644d38af6845c938f4f370e813245dd2eef15c1749fb49757d625975dd7a45c9e23758140d60afa91eba6075926e1410ab28d5c99a4c8f8f4e62bb38aa4a13c4324843af3760d93ec618e3de80a16427213bc2040c776671802ad777cbdb90b37bc344336cb88d711e691ea364e6bec44233ea30cb90377768487e76f6c6a6e0f7079410a4034217c7bea2c896f6b976641f865015fecc3f4208bfae99abe7d339988c13022e7ef3bd5141aa878684c087d8823f83447acbb99d91534ab7d2225a1bbb8310476268637f989a399cc3c5b13736858baff37d5a97df4d2b281bc97a70deef1b18c0f972aaa47272d6c69a40cefb937b07b30e1babcee1605176ad3cf56be5ee0d48eb0d5266f1fc7996f3716f48d97583bc418232376fcd4b5036ed8d49f7c69a4cdf1bce2d8e2a9a506252b637da4a673f3e00f2f71886e43cce392fcd9368ddead2a5d7a28c61b089264d1a1a8d62f5181f8d2b2ddea57d975eb491a47d94e07e34786bf3b7a19533788691eddfa355a525abbe7d4fa22178ebefeddbc7ba74f7defb4a2dc60623935e817c2308563793f6b58348af4912bd300d06f21e6ad2a315036fd2302184ef9d5df00e8f79c8aabbb4efb9e01d36c5bbc4ae451a5ae9e34fba6baebdc5b746db5ba735e941ebddcd1aaac73b6cff81cd7730cd37d875c642de98e70f7357d1ec82493812fbc04759ac96b35b715e6c8a6d4bdd23a41ad210f527c5e67c310efdc06feece2f36c5bba3d6dde73dd8e62158d4259b77775d83494c72d1aad2aee217efd5e7a461c63665f0f5897efc039ee49e94c147f9c59a385eb9b8f3811d9a1d97a24d3155a6499abe6362e6697a556577777ad235df487dda14dbf81a5a1fcf69d269da214992248364a9044bf9e951a6a1bddc14d69f54d9ec493a49d3a6d8e59ddeb4fbf64dd3f46953eceebea95a0b08b8bd838e914919c3c42ae4f1129be08e111d16f268e423c2c5c8b15d5c4307ef46c4503b91f6380fad9cb56704ad2adc2cf3c1d1f40747d32cddf1d355f4897749fbc8474474aec2f0293e44ce1ae039c228e29b9183300c74448423a008faa12334f60eba3b324cc3689750886398f88611bb05867c3b867bed8e914d97878e42da5485655c48480ce910da2c0d23e44e0493f760d5179be6434218e620f45d1e66966916669669967676af2c9359f06e722a9ac5d166619866e918149cdac88adc40b648062593b2ea9d922aca7ece1ae437ca5edb3d8a9c34eca421928f71626656e1090bc5c8629e367f6cd1d0f468bd9dff9ac6a2953346c9de86aa7055e1484fd6e47d7af4134f5d6a5f5a19f0a57835975e5132ea1293b306f9a52189d5cda89f540d55e14c7329a959437b4843ebc2d6f6f24d1a28992c4ed3eeb7adb478efa047bb4a57e1104fad51076d8a760ac59b6868cf0d25ab2a279b82fa7b7c959f93c6d09eff5e2555a16aa42acc72f791e9c99a80d6a4ddcd1ae4df256c7f61d42d6cbe61d255b4c4f66453540cb1cff4288b74abaca29fe9d4a54b2cca4e3645bbf4912a65d42726693c9fb4c7533fd914118592496dcaa6934d51975b03daf749ee0d738e6653a3276b22596bf9a0f372c89edb913d763ad8041002efbd5e12ad9eec6dae397f70fed1c12226e1d0ca321bcd6555521f8662bf599aa5595e38ec6248af77575abcf7b5f1a4d76d7a6d5a1c59bff73af5418955149ccb47eb0d32bb5e69bec1a4aba21c2ce2928a56b44a93ca9044eb0d0ddbfb7b63533cf7c94d928627104430d234b198a41e908a60a6b7e51e69056555251d6d4923a4deaf14a4292929296d05124a14a3685a69214520a9b3698a5e26944699a669faa31e2fb1884922ad5246d12a4d34d4f4e4e484e34a3ade88f7b2a98a968481c42bcf7453524a8aa274c8ddc7795848c423e5bb1443e2619e3d2c428d78221f31972f45e48499e645a849844a28a0e647e4f2ee2ae429ea3d271ff246848c903c425252d2aa225192fa444d54d3112a2dcb9a22225894cd29298aa25cc8a328e9a81712e271f2ee5194a37aa27aa27aa2288aa26ea2266aa2284a4e11f7ee30be07b3de180c9730125fcc556e9aa6698a2fca4743f1948c4e4a4e4e475114255d3c75d10ffcbcc7735dd4dd47dea45913dcad93c06078f47d929fe424279526a1e0d62518120aa4aa6590c2a60c5214453da9d21c85c5484928983c3cd243253b0633d386ddce757777bb6676aeefdc748eeb88b7e3f6c4c89abae866dd6619d1f413efba1d64ee118e5d8fa0aebbbbbbbb439e81ac596a18dddd6037d80df2f6430edf215f3963f327acadaab7b5d69a6546ddda6e6bf2d674d339e7e6ce0846643d308801b621b227af237bd9a68abb38b2218268ebd225edbdb4497047dc938686bb282289119f91190212a3831072e88a0ea193f03424ddf77c710c31341dd976bf5fe1b157778c5686e918e4aff7a36ba45b0f24a45be23088d08878403addef86dd0d4f2286770cd093595766d59759b700704aab871ea3f52ad19f6278e59778659818282f8d41c532ecc7a011510286470d004ae96234c636449bb2abbbe179078d0821129263de4103028973d3f1a6239bdeecb9b4ba6fb7edb6dd56d2509fc4f73552953677ee6498f72e0690784312e7eeee5f2468ebc10e48dc1d8b67125894599b03092c6a2f4c02031d41eb1341af8c8ed0eac99a8786d04a92813e5e50649b8d3bbf6e3c926e5a0f9a87c898caf3eb6cd9f46cbe587574433fef120588e49b439fd8972e6947016a92cc73bdacf5c0bdee2d49b3265c8eaab42cb4328a5a0f36856c3d5893e9d1e36977abada3eda5f520c6a6a39a2b69eb01b6580e627c40bc1ef8c5aab60508183b60e7c0259099d9e361e629468e5c1e8dd7039b8871d210a9b42f1cec82ed226fe48e7f2edcf1234af18ef247bc0a7e34ba690f19f76643bf1cd91836c366d80c9b61336c86bd3424cf79c7eeeeee0770f8f1f3f17d0003facc1b5f0ff5c959433c4f08d8107948bc5e11bca6a2a8a04a525f3d10320c1b1d356b880f393821e0d2671712148611f036348cb4624004ad286805f547682511a1f51e5a3dcdb0aa1e101f1fccbc2b2de2737933e2b311ba2418e3737933f6f900fbf59055157e34faf590c56f3651a545860c193264c89021ff7af40071eda84d471637f1bdebf2787e12920a82af28e27556995a7e5cf4d17833d6a4391dac7a73b0f9ab462fd10bbc983e1798cc7214b4266a3d1acdcc557b99a25ceb11abd6c2f489685f3c2d170c76810205084442f27b3cd7d5fe688cc8d7f692393a4dd57b1e496b7bc9a6dbf068bc428102048a1106e6d3737934aaeaf5302347d1892823a4e0a3f19245005811b125b6d0d299899b4abeaa3cf3fefa84c81fadf241f978864dc816f8e49bdc841042159e58e88a3810cacf29218786acc93c7627cf64921bce57f84e474eebd72b94927eaec3bb3faa82a19cb3f3e0f7bd7ebc0369d684ebd58f0921adf0e38356d8999007acaa16cbb2a09430f22c2385806f4af9f7dce1596653bc43eee1e47ccc434a5a792673737ed23adf79adde91af15959772c267b1cc9a3c0e569d319037167209f33cccc16c22f681affb6b63ed37afbb791bfa81bf345894318fcf8b664db8a4ec229eebee219ad93c26651e6be25e9d619847f59d34543392c7a638f7abfc94b210e51e157958cc4981067e767c5c46663e2d6da487d3c07523331f191f1736e1dad5a683e6ae7bfbe38373ce7d5a3685036976eee3926decee8f0c07d2b48ef4e8761f978f4bd6d7388da6379b35e16a9043b89acf8e766e64e6d3e23e3eb4732333fd4f4b7f66b88f4b6b5ee3c7259b3eef2eef689d9cc6715cbb911efc6971b2baa64ad906d38cccfc20a95f9571e0701f191d3fff9131d2837f683a64ed1f198c83718cf4c8a48338b27a03e3f8c8f8c81899f9c8f8b88cf4c828f891b126138ddc0b8d96cbb5ec0c75e72877d5889961131445a34861974461f5caa87594a3dc791d5551ee517f9d2f573454bd5357c11cf766e51c5d577dde3d60561dcaf3fcc93947bdd7f9c4bf30396bb8be3474617533e6cef5b136dc75e82e29b9a5aa2a5e21424f923bf5a05edd99798aa275672877bd53afd35114f5aa9acf5da738987c631f973010775d9a578da6aa621ec7769a2f5669e8c75515c87551573937e320a4163a8b3922e0c854f20b431b420eccd68090575ac0ad0143f119c8e05c9890afe39e8fcd71c6edf9787817a7a39f08b235984338cc811b07391cce2104a19c39a7ebde1a3041b084706bc0cc4866991890d7386583448979da9811466e8d98bda683cc713ec65d8bc9296fd97031315b6363a494591b319ced7881332d8c4c92348f110b286513289b68caa680d3c4024e2936b009d8139c24c8dddd2acc58c845b39b99d3136ea6e99a1755c1f01c5a3987af9c7fbcf63f6087ef5e3994a6ac09fc04a769fa3e6201bbfb2d420e07ab9bc5a76c8aadfdce445598f38ffe47d3cef410a7a7a76c8a89560cbc494384c18e7982109e058c7a64b55d050b49699ae2596c8ae9319269b02398acaa70caa6e8b71829b46ed10a6fb1bbe05b9413e4c68ec59a4cf00ddb6fb0f80bb33eb1ea13d6022f41348e1c2f3f348e1c2f41e4681c393cd8e6d025240878dd4d752380a4bb9b860878badb43a32e897abb5f72bce478c9f192e325c7077f0c21ba96ad076946bb300f992449b463c8f8fd34d10632894cbfae4f22467ce4ef9ff779e72244bcf31198a7f3771158e71f2c8a46b00ead2a4d048ba29237ddd3b907c47378a96520af2acd499732101a7a076149a16b99ebd0d03b08031e05597a5592a3cd32f5547daad27777ab1d642c13817454340bc3348c8e21758c666118e99b437bdeb04150b8371665f57aafcf9e0b2ee9bf47146ce28174dab60ec8bb8a76b7e1d4a3ae7e7db37f5c1b05c075d125fdbe28f5501730f41ecf75b9809feebe2edebb2e4f7d4651ccc0247d817dcd02c21f4a9066260424e9e8dc98adb1305b636376a6656b6c8cb4353666675a36666b48ef715ee10a4d6f59bf472692453eb0c18e96c95e598fe4eeb057337630eb1cec7a8c6224a55983fcbcc320a783ed54c0e3dcc23a57d11e0e167507036570f36b730ea6e9682a40d2b90870af9bbe2e8187d8fbe5711076f5824aca47730523a07a47ef257a639a84458e53902c796acf05ef10a7e31d56ca85352a39636549ca5955e417fc825ff00bc993163e2d5d4d1aea7d5a28d7de9a57296935d2432ef58f8c8f8c8f8c8f8c17a7c365cbb699a4a464bb545252d4ac34575f4b7187396cf1c64dcd9234724aeacdd22ccd62044d6b6f8626724dd3ae71d3d368de0ccdb3319f86be477dbe4f6a6a36b3331fe5a676c99c8d4676e7ccd950d7b84fedbd1b8d55c9ce7ca498c31bd6f0c5164ffa2ee9a3f1683c1a8f069cc1c2f06c578c0b7349077f5d516ae24c9322e7f17a5591e226ceb51135f01bb3311bb331d31522080402bd440974721223287a89668ca038e725ad28d5c9c949d6ba202549622125295dcef6565ab0887a8428179db3dcad95d75570dc285f2d9857d0379a6fac6fce9187b5a25313af9d935699929292b226bcc2d94907936cad85aabb14b96e979ca921754af387d56ba585fcdaa03458283e8a9ee65d43ed8c7f9beb92b2646b5e67c8e4ad4716651415e5c84b4eeafd88ed8d35a1e0a3b54ff0d6da14a9f7f1da31565a304cc3b03496d530dca5b92aa763b410908de54236b47a3eb6635d1b0d5561cbbd599aa5599aa559fe7a900f3ab7d2626decc06afb03c8ebe2581c7b63a545b436e2dab0362fdb4cb73aaf3364d637b48232eb92d450107a636fec8dbdd138eb9c60b9e01d98074bb2a44641078361f00b7e5159960bde8179a8b0d0a4288a7a355d15ecbe4a2e5a43b3d968f805bfe017fc825f3820348c9e21350f9ad72c16c3340ceba2a85bd665715e5fb669699d0f9090ea21201f1d4bb39ccaa23497d52ccdd22ccdd22c1990562e764f883aedd9e8ec9bd1793dbc1e1e8dabb3ef74ae8f4ee7b95c7f33aee7c3d509b90afeb8426ab3a616f26a518bd6f632d21664d7932d49b6a06ca7b790eb55f4de87e4c9a4952a2893f6b2e8a3f1683c1a8fc6a311bd503934f99c73eed3e21e1bf5e919c8dcc6d8eeb0fa99110f5f3f2e1f19779d9516d63f2dd5bd8385aa78c5e8de89ef38ab73157c55d5e307e79683af6d7aeb58b73e6249f0d56a1f5485b30ead1858a91c7ab9f891b1266eca482b056987493e32a6266dd61981aaa494124a591d442359514e4ed6445e5a2b2daa83e4a3abaaac8364754dd7452b4a2635933c591319a9e9e4e4e4da4908d64a0b163dac0852947516562413c1443029299b9516967516d686aa2ceb14457d63559546f30afa47e775f30f4b433bad4a4949494959e9ac8b61031db27d91453ea8811059ed7ff87f8cd54a8be994349d122254e15b04294a9a5c0fcafd7a92dc98c74855d5c2549c285b8ba2389c692bce55b0b59fd5add7cd2b5855b4aa7040fe515daf95c4b92caa524d8f818f76be316bc26def74cc6e76ce39762b2d9cfbf8c0cccc9f19ce398692efce705e7146aeced31ae911619242d791ce0aeda268b389369b68b399369bcd4a8bcd66e3e222b7d9dcb986d1d266b3e9189bcd66a2dee69be9b539df402755960b712097fbb05ca772d6ab0e6773bd83455109cb58d36d18be90a80886df4a0bea2ca847453da8179da2288aa21e45bd57b9a9f7defb837456af904638271a23f54a4aca2929292973dd8b76dd2b2d26e8e07bd14a8b686decc045ce39c95d6a895a1c0e4228a977fd72af34bf5e1de5a83527ad8e35f492a6db447a83cc28ba373af262d7857f9aeedce42637b9c9496e7a8fdefbdbbddddbbda35f45bf2f61a1f62873fffbd22fb514457777ee6fe71cf5a81f92f8f4f7e38bc4f9d85ca0ccd1aae9589c8fcd554d08b2b99c7320ee9d8dbbe6729a5fbfdb74403c23227e182e803f007f0c7f891f003ffd69254155a6c34047d08ac28d50115a493c21b4de75369a8b56f5728dea48123c9dc0efb5f7de7b2e7887c73cbcc73b708cf7de7bef8f9a9ad7786d3493dc4cd754d2252d8aaa7406695de1179dc92e093c679b73aeb498738598937bcc3ae7cecc39e3946faf5c7dbef86855e9e9d7545d98452385ad8d37d18de9c8c90e09cc5253d1b53d8a2250048a4030828f32d810468710be400842012b840c217c87f15052af32d2bad2aa949d9c74e454035723731f9791994fcbc787f79e3544e6dca3fc9239ec7d8a6f29bdfb1f191f191f191f19ae46db42b7eb7dec9e565a3c97a8a347d973d1ebe151d7dd2f9b8fc81d9037adf2ee83d68b3bcca1d5a3a1f55c3187702c1bba6903221aa2ed888278b446333f76cea3e804fdc7a3e804004a5ce4517422867f1e452702f011ef241e002c8a4a62c0a2a8a404f60e002c8a4a2886615154722c8a4a1ead2ad3495018684531825610e8434568fd432808ad9e0fdaa1f5e2d08bf6b99a91721da25a7b91f6d178341e0d1838428161b00bde817958d7ce39f96769a8cbcd4777cd34fd72b1a4aafc45aa2265ed0c1fe517fc825f486e4c68cded4c738e9d5b219a9be99da175b264755db4aa486b63cab8362489633666637ac5e206334daff624bdd730daa563c4f75ec8eb03f978f5c843c969fea8e43d4443eb0b4cd22dddd20e3dd9b66992a4f648147c550c2eee9631b8f82dbd26751462c4120a0a8a949d804e669c74504e50665c4f5e3fc4a844057164830d0d24710a8b12222a1774522e175cfc2a65d293120f7e517486e118866b4cebf223f30b17bc03bf2061926eaa6a01bfe0170ca305173f925efb418c4ad4e6f2c226963deee3f271a1ed6e1a99f9b47c640051e5f591213f326070f123e9b5b6ad87189568925a8843b74c2b3c31bf761851d49f631889bd4ba433263d562cb8a437cb12602f5d327fdbd666f7885970496f471b2236ef71688b639aa47349a3fb6c6fd85893a5a0869d49ba049734777ea2450572c821871c10e08123606f2c01305a573269ca405d69342e6ed7f4901023d536203dceb4a34f76c151cd2d09aeba2e2e374483f2d46e7b33d6c46d738f46af93680b26c9617568c126a4b83a4492eb82e4dcf3c179605d7041073631c4b52e1a0cb83cac0b9b888fc69ac0d78383aec7bad81d36c6a3f166b4f85c5c4407752c1094f4ba3059b7695df47bd7e5f1fc24241534b9c8685054885189ea5e64a4238b2e42561a5838a304576d30b2e0e23c6c3b3f2d23331f1994816012253010ac0436216122a9551a8832a97d6674e09a0e044c16ae8dd15a1a0fcda5cd683db009f991f171a90e08198c16a3f1f091f1699123330d061059c368ad32101f19233ddc0e58044952e2728d465295438b10c655a3976c5ae10ab9371390ba1e772fd8b65d45af8562612866b06688aa1c2ea9b5105cd32bca0c56b836539180053820021458d1316aa404150960130b04ca5956bbaea9d23c50878867ed8c7bb1858df0c515ae908b77909a3162f37061d664b786c43c52c406aee9d116a416d363039494f00a949431338d6a2f21430c8c935ba3c92649d59336666dbcc01cc4a884ec5c273cfd28e985853f5c1d115c1574097185a8b7ac82320862132ecea022010ba80ee9daa0e8de982548649832445e8832a9ed0f20b8a6d7123208712d0845450216b0381ad580004299616facc9ae0d17cd1932da286e9072c715247c3b7c61a5cc0e55b8422fe551540a8b94aaaa3850555f905a6b1cb826d75e55515570ed55d553d6e4d197f2288baa4a717f92a650efd0d1870309db08b4b012451b0115ae108471ca865d52d09a2ca427dda8899a1cd5282d480d45d3e19a5c8b1405a9e05aa4a8933589b49d80d644a2a44d511b3d91b20743c4b34b3e7ac7131960772e8da4e6c2524b2b96abbe679461e10abdb7ac3ea3ce261caca8f741282828ac728f264579075e3a318f88ce14c1265a244d5c90a689634c2eaef6ed889858b836ab25486400a1b00969be695d79d633bc840cfc6287375d482f5628452b95aca93d29e8906159e4031ac0d4f0a145d1b328f26cb730c9d2a5d23cc2b5547a6c42468ea612a24c72fbea03d7f4cdea252712aea5e2fb2f4112e94a77bf331fcd481bc69a4812045a6681fec21724a9c226767549bbc4fe9e44214f4b7839793979397939b1765f4eac5b8fe65a56cb4b8f5ea401e6f42a65271236814c4852925e2c0974a22208e9c4b2ac130b6c26dd77c21c664d8d08d28e0602ebd8aca79e3e725d7a577ed3260fa30134ad28599d7f7c8f957adfc2a247da688b5ae593e9278e86dac99a48d494eeda49afc3a48671b6b386f7e913b60d93a2014c1357350319759f307815fd9e8b06f072f272f272f272f27252adbc91ad588b56955ef1152bda8a15323156440dc6f99c3ad28a152b56ac58d1de3587914c3641687d6a958e91d6a944d2780c3e823434ef260dedad6d8e924f522b22a3163e36095f612fd86c3a99fb355f705d05b73901cd39ef4983bbc65d45c7495ad874179d9cd8744a029a732e6c1329cc7de74435924ba83b78ea13ab9d8c3af5893d26a1bec124438e0e3290c17b345f70dd6134444cb222287871c94ed6dc207613420aa27bf0ccd46f3fbd4fb44a779fd1a757a0ecd4f9b0f2a747d8235a418eaa701645547ebebe4fd7955c4a55389b769a5a94b1987ab6364dedd324b5d63a4ab1a1a7d6d19be48c7f7cd8f49def8ad8be3d62fb87b5b7af06977d625885cd9e0a707f190dcfb5a052775dd9683649ee04c24be38234440bc141c8cc3c78cd6c5e1f888c3a7fff7807c1a2a8e471b00d959a936888a2926bd7a5c30b46c83c669887c433dbc2332d140ae6c132cc83675a9807cb300f9e69611ecc03459fc0215228ae78450688b2f678ae85d4151960b3fe290edd8f8ffa849cdfeb51d4e0540075771caccf47f04e63555301d4271cfa443f3944a43dbd47452f7a4c69b2feb63033f30cf3d8ccb4b4b4b4b496d65a6b992c3a5a7474668b8e96161d5884009610ab2448d860110220f61ecf6bb0c725cea9689e0a781a8cf30a03f9857d9070b08f974847b4a38379cec1460e8285fc031389cd730d36f20a0bf985892c0246443c214cc2c11e97c07f601e2e8120d8e62a1804abfe815dd76c1e0805c50c4cb2d76017f62ed95b2d2d2d2c7325f28c11a53684244407c13d5686499c35b7be5fa736d13b07d3bc4fa7aa45f7d461559168083e421a726f59a41bf322b8321b333549461e11d2eb90dc50014f27ab3774245a424646464646c63d42402606739489212313039361aa326420cd1057bfca9035f32f13c1586c25e1a4b5d640281bc99c804e50da49039da09cb4d61c15a4934b7a50b2ce3b9955a455aa41d2ea2a3a9a559aef11eebcbc8a9ed87b282727d0876885ba39ec0e6cc2440cf76e591d9a45a3d16834dbe16c56c5e4d63596d168341acd898f7fd00f904fb4be2e5910caa19b6f0e0f5225b2386ba87eddc2368b1eaca21c38932bd12eb39643bbe29bf50bab5ec3a6ac5b58844924328050f6d76ed8ea41ac424a8b6026c992a248b2a2261966214a4d082988eec1999336a33654f2edeeb5baa3358299f6f1b95b8f4ed11af1427e5ccaa291a22148cfafd599abaa3d1aaa2e2b4953aa943591a87bca9a383751555555d5231611cca6442c526ca852aa884594624355a52840debd611ddfeb92ae01dbac61138d98c4bd5f70d1884b2605bc68bbabf80953d1f249114cca353df05e2382b4a381c03a7e681c3fbc745ae7e55d8f11c38ec8f4918a29a4233a9d0e841d08691475206c1dd8ddb9ee2e2a7540dea9ae815c029168e7903a47bfe4782f395e72bce478c9f19243922f5995bebb2bfba583f054951c8de387c69123ac38a8e4ec198a6aa968400000000033160000400c0a060363d14494043983071480147a9e50685298c7142589410a19840821040c1010000100121200000db1da1b6931cf903fc47be11cf835387576b7ac08ffeee476bd26af6401ed9f15bc28a363a326ca55347ce4bf19c54351c88dd2cbcdfcb1adfc022a5e35bf64fcb1998a91447fb9bc3c943705b2c06a15cc963626b6325392fc1b62409129c8f4a37ef507dd4086cb28876bc38e875f653ef9b39c3febefdc876815249d5e4f52bb64d4517bc9afdd006a6330c02b136548463291d4951f9126ce87a2662fac01f0fc812a370b94268685396f934703239b70d785d4ca92dbc6f2320e909e3447ff3eeed5ca276ee4ad780d8a447751815527468cb0edfe99ab51a14c68cd5a843600a1c5841970109a9d45843c3206ab4d7e3fe61a1429e731945940d99249294407e1e6d25c1a7e8551e5a1c00705107a36b1a87d14af5d1be2e1cc0210d55c1b446c83e61476edacd7291d609b2f90162f47967465d36b399f77d5219f88c17ee28d07d1fecc578e1ca8729550bc8d1a15272fb26405669e321927ac869d77e16443897755427f5c5a6c0a8461517bb06d0ced04dfb456c5cdeb7c3518bf01b39cc1d26ba5b00e4391843de8d8019f0546ddfb1572194d6310e0fb7ad988cac250ba7cd384f612ef67a40fb21c1c659f39587dee1732a735f28f89dc4274bec86097d90af6f8c3930c0ad9382378b4d273c34d370c7ce3a77198bc268bf3cc053293c0e4a98cb89799f42724d6adeb0651b7273b8d3de36e163d282b1e56987a8331d2b4067059088b1c60004eddec21f5f1eb586a9dc1da8cb06d37b4e686d69bcdeb1e49ff685efccfd64ba74c9a1e2b5ddeec4844ed499667ba016cbdd2dc31558edbe681a577c28066546560a3983b77aad7ef7f9f47b75ec6195377a73e7e6168f63601a5f83c44f81f946f770b663875683fe5f4682025ce60f61159c5cd1c5b891069fc5361375d8d2606d357be57c062ea4cacc3986c98f939dbf1030c2ea0bcd6a7a94548e2b90be6a26725b1b90110ccc49cc6cc4fdc6dee4a2f98f6bca912937412e5f2606858eee0d44ef21fd0b6a885fdab10db6ec3ffc27f4b5afad5e25bfa924fe1d1eeb25ad6fd3785666d12626d93d6f3ef2ae12abc9bb2c9a0036b7731ca82b7c93e4e0489273c1a69fffcb41a2bbb9769bc9ecbf96c3d1b96e76db1982cf7a6df66efa6c4ed9a4049b1930d1fd307e74729f621711e7b0e44e329a77318a1f77cbea58361b6e2740eaecc1c419bfd5ba474aa6bf0a354d32e53c8b94083b0a2e23be2c0ac5b7686269730bedeed8123474aed9a732c87af4230fab334a7747618b3fd3803e8c72a827a93e803617f5353a83df5be1f14e6d7756b1f3a40f4fe0f283ca3fc61a5e468ba54fcaccf29a4a4364bd3417a813bf869cdb61b627a448378b4e517f0b2a12e461b6912067928433c51d60ee8f58728c6e241b99e634bae4c87cc946fb8e5dd9db83cb14878a889236e2ecb4cd78d669ee25fa3583774ed41239805c4b3f683793a0af6d44f6dff93d9f38f9009192cecca2fa680c6362aa92a9502e1a2f22ece5806f2026093c2e5640102ec0a1a3cca301307130497a3cd3ec8207861efa00739d99474a72613014fc23c199d44411426cb1d839273f023dc5c52bfc84ffa94f800146a11c4172683270df33cba893d842a6e3f5c76ac309fee12eb5778d59133985ddc7ceccac7738e6a5885f19647c8834b382d98292cc0d220efd235b0c9e5eed18448a71ad4387a39c5330a8b4b60fabe7ee5bf571dc58f7e834c409525ce4f42667da7c27221a762cf92a24297a361b9a1c08984916838e2b90ae59912e0328bd177f85cc6c0105fa358b5cc3c3ec7c7ca4cf5594470de845c2a0bda887bf06b102ab4d4546bad86e73ea22a8ad22bffec041e056ab617c9d38c9b9ba05f25711c0113483b8499465f30afd72d24562e5f06ff0c18076db2e1625fd1dcb10c47150ded4e39c172dd361629b7fb8eca0b11d6ff5f753a012b07c06140bb8a494fba4189c3b5554bee81c706bc071d086eb3a708003e46027566d7a510c4a32d350a32c38d2f46aa1d0d2f1bc643b728d2625b8e8dbf60560289cce997c8ce84195fde66df9c44e86bf465662a5e14dc459dc4bfe52e5e35a71acb79068789269c5d9a6bd569b9e2fa954bbfda3b7e92a3c0a0888860d87e82ab987299250a6ed9f803c918914ee886524999c89e62111445b8d7faab19c590f20924bb086bcc8fc13925662c0885885f90b4e01d46d27e9b9728930040804427acdc74a4a000565c9b193cd6016b1c729c20253a5604fa73414a179d42a910790d78f302bd44c1c0cb72dc1dd8735cdafcc34ed50086570360f1d14a8e1a859fff88a7a67277153464311d8a2e75c261d5dfae5a72f5c5ad1a1d43f59606ed283536914ecf2db04056886f6e4bd3408392849fb84901059003a3b4459ba2c28939b05730cc5f4436058318e6172691532d400f6b62feaf20f6a76d4f2f3845f8210b41a24c9ab3a482590bc51a84a846114b3c18152967b7270101bbbf62f1971d416f15e3ac9d585c195d5087ed86ac123629cfbc3ca195da92d4994a981dc975b6d16e641b2f571d5b54e4c1a6173eacab89b6092256cb950aaed94828a0c12ec871fde102cf8e24691eb3b8d0ca0eee9928a4a15c1367c289b0c113d447a10e2ee0e174d840631d8f7e397af6e3474cd373ea18c56549b6b02339a2ff69a0a75ec7d4d6ace58921fb64d6edf0cdcedc22e1b83b591c4b07921c0a8fa5461b164ad7fc22b7a5ae0544a41ce377521e928572437ca884d9b81cf2b3ff2f30666aa34d8a5950ed879546469101a2802699c83c203327e98a64aaed438903521d9fd124d025592c9f489c1b5e4c747e2443adfe1250764ee434648c0229ac589924c9f210d2464df0499c20c2834095e9163e1108858b7d31591892b7099f16914ecc032871a3032640934c2eba4a3edc7cc1dc220ab421e3ad17b432ed53cbd0e2fdbac8dbaa3e7a2cf272c99c8e07143c01fe0701551001935d972a825781d8785c1d1346a9aad4bcb500d13ba40c456624b6c004107b369808193e73f39c78c46dd03938e0059787ba87e86b6d564c748e68c2f56f14343c6280b8f1f0f27ac36be9810d3f0d58457020c8dfef9eb903865bec315982a9d5b46f6b8e4925da7a352aa46743e069e32d3c411bd5047814482e8fde00644d8d760ed233383ae1917581a52b07dc8a6580d3209abcedb4f17c283a1624acba2be17705ff70708b9529187591b4a322bbc550a84255a1221dae3a5b04d1b96638a8ce029b034b28b178fef4e96d81b1fbbd76f382d6e44afb3d61183f5ffb4234462a1f8cebcd048ae1440d04cdb6839b90fe044a95adb1cec8cf40c57e6bd84988c2eacec3d2704744f756958a6d09ad633787d7c0ff13f3848b33feea64d5008f18df8d9390dc066319800e12aa7bd3e7ba36dc7551d27f98f6245b9c9ed67278d90083ca3f84a37c100bc90261720e2137a575eddcae26cc9d63d26c31b75235e251eadd563e185f179270e2c18d9a0e8a8a79b03f30f52d51dc338456cd42609998c83eb81ee6476438ff07be23f18e6254cf8ce2a6c5cccf15f0822815983d2ba8f2224715e930ce1a20afb895a5f6b02f1a792c4e93e2bff8c1630255bd8792d24e16b35470c5980919a716af5ad41678280d5dc21345bd0a12d072f99022275f5d0aecc225e592a7be5269d3bc4545fac58c2c61aafa205a0feb619aba5f6885dae185ec3929bce58376b47e323d290e2fd4a16bb5b6fa341986ae029465dd54a1b9a6da4435c59f6dba278f1c8318c7aa3dab486e8bde7e6d5aa62aba853d1cfce5769103ff4bed30b55017e65fc350b60f9180091a9b0422cabc2b89d1e77ad433a05f82dd98e331327455878ba59b60c0fc29df10b2b9024beb82fe4c47769ba127d6477dc5f0e8e7580da6a7d61419224b441f12ecc69a907371e27f55df27a1e81a6f077fdb99ae83221c297ba593c5e6c175e98359ca45c18fa911d3c898a14bbd217c094512a437616ee7c77711cab3b778609bdedd1b4bfca9f4d6e33d9a4b01e05e9826289872ea41f9ddf3d6aa5be24a94e0cb1b4a2efcb9b298fbcd9f1b249ddde7507897253fc4607f593d0fb20ebe865f04a4b417a9b7609480e6e2582fba781871718ef5fccd0d5b18811f2b8746f55080ad0e246a06c8a9ac496bcf994da5369d84ceb95cb9c6bad4dc07d33d2126a90e47b8c015fc0dcce634985574f7c7078ac611c52343ecc1657b53a4449e2c8c3bc55153d0b320f2730214b20a3e7531d4a965dc101eb0ee38142c69af2ac49db06938061b9a8707df3d95123c3645b126a170452a013ae318a164a835b904248d66a1d856048807d598c67f4046736356df1632c45421fa8907b2205a9173f6b684427325ca9aba322b8e45700d98c1465fe81aa5d22834cd799c463f9c2cb7f11ec7035aa591d2b01d0ed9bb4741a1508fcdd3e649cfbb94cc6a4603231dd2cd87552aff2e8ed4ff0554948be6e9bf892c5afad1f81144e0192d50de89ef12172f3dad380d4c36643769470c167b20110d0490ddfcb68b37ad2e0cc7be9ea015b2ab10cdfde5f918568704cf6420c3be754030a82e44e9cd779b5143ce2b7b97df0ef24a39dacdbbe5db7e2875c0a63f4a0e9246c19b5e2a0bc1e6768d902f5ac759b94b8bc628aa2fd7a0e27f91e7e28a3f57472c42568174ed3aea5466ba0d141aafbd08fb97f33d1c1bd6b078906206371e73945e973074b2ec2e704d9636e939e86f59d4786d70b95d3aa7a717601a646954c6fa29bccbaf461c871374295fa69b0fc6481dc209fc97e95c3123d8efbc529411260adc03e0795102dcc59d4c42a968fc44cecf7b10b7d4b6108e859658964e79c271d4e80d8c44d085fe2b412ebd911effa28dfc176a3480f946030c1a1130db3060e8a5cbd6ccb77dc180a599aec5c42fb9e79ff8f55f96aa54d10fbf64301c9785bfe05cca19cf6777d5cc024f66a4e0ae9ebffbfee8ac50b0e26286f757f2cd690f8bccdd9dbf1a521152cc37844cbdaa379e2eeb9219d5bd12aedf7de2f1628f7817ddf5e5ebf7652c45ca59c35c1523ef77b56c5a63316364c4cee28639c0855f32e25af5b01726e83062019fd603bea6dc99461ef15fbf0042c2a20fcafb254dac172d63c07af42277d31de8a50580c0a9477252910b4fc2dd04a4f40d1a97d7ca346097c75e63cb9e22110b482ce3532d7f065fe78c6b0d9f3aedc819a82ce65ac62c305d66f884908de6b50be2bb6c4529a7a7e1c60c29872d564b1f4bb973e00512f7b5187d604e74f5fd2172cd3b614995e3ab85131f7d4a730b5ccda2aceda7616dd062fef87526df3efff82233a8034702f07a86206dc521052016d236353802e0f5110bb16d345cc04aa921731c7d4302c098b30568419a273fd769a2d2c3b2e00eb671605c735ceaba0609f9e2920c37a366d4c2913673d03ecdc010ada0f9fa9210625d90bbe4d6bf514c50eec9c764287f1d6cb51c125ee247720402991129e918ee5df442e6ed64bb0480977a6a481fbcb865eb8b22066406ee7993fc4b9cb55c88e597d64358dce73541d5c60598c7ebc0f66deb1adbcaaffe3413001a5b8cd927140646e0305940e87a98a96195ae6a0cf2d2f1cdffef1a5c5853e4472731e67e129078b778fa65a362a443369bec1e28286e1c1497a69159243b5c8431079357e5eef6529c85009648ee58bb520caab9a10ff5977df54d995ca6fbdf9c98525781428c597510856bc8a7f4854634d97064a8ab2635e1996ec44258963c6a2d061bed92d12d0a75e8b705e8a45686a377212fc1d0d81f4c0568e3076326f02cde46b1197130a175395c4af1ded2685c9227043a3742132ef9edd7a893f7eaea605048b086f37e296080984a44de5c391766cca99e37cb05be387647c007ac8cb2d8b78a5083b947aaab72986680c42b41a5fa4fe9aeb04d37cfd9cfd216f005e2aeeba6a5a5b72acb98cd66293f03ab5effc98f70d5a114348f58499d4e99fd4485e2d20df0204e0a85ab63366f5a2026bcf5fe6a0bad5e00ac2b49aed0350c9900faf24452c6fab8034e71a54a430614428b080f70528346456c4d3e22663907e95c2f8dd76f1038bcfa802fd109d202d1aade0e3ab940f488830c97e17524d568c782c0956259a7b84ead1d1c6698b67fc001b1b721409fe8c35ed5b21f8d9cb71ed728f68ef883bb7f225aef60a343aa106c73acc476722a20e371b85c4ee4b360ba5731a559108a58f2d1cd2c51d7f9e493708981fc2bf29fb70518c63c133dabd53630dc7695d4fe5e13ce216789f2055cb33e43a335a6e624ca2de3c8700ea9463922eab08590c281c517d9e73e37cedf497776e0dfc8b2374decca073d9f5da7bbad3c8b45a6b21b65b79b35a8d15c7b06c961e822639200c2925dfdb168b5813bc251f22e6ee530eb95cd10a295ce5c9cfedc1f2e2c718f3b45d82b97cf9db3e9751817977466ba131e37112964c00f6cda91ff4cad0cf45a813d412c2d39c128380683a40f2761dfdf5fadc4e17e47f876bdbffd1a92764051bf0d32c0f4f1f635eaf3caf0d2e81ccc26780b9e57443b8914360ba4c9700d7788b67d8c346ac2940e3413162cf431837799e80f2a61d141c2fc41beced29b0f3dfa8337e18e7a74b89f809ba6336df23a650a539cd9c41f8269461a3633c1bb15a8d9d05775aec94441586b7ab41e34d51cd809ee39547ace9e502a2d298e79583d984bcbc871fb9a15e797bdf081ee3ffca60e816d07f52478df161781dfa57db579425c161dda48f37a824b9c841b1eed767f0f72d81c8b5155a68c26abddd9a3eb59deb68aef2564120887b70a276d0abca538efdf01bd10b2df9359b47c8188f4743b35264202fab56348ddfb6e53023d254120fa423bac7b932233e04d81987ecd36240f8b13a51ba5a5cf90ca1da5d2db859b72b5851a69d5cfc796b5f3128a35dc5eeb4f7cdaffdcaa2a67753cc62a724499c7f30bdb5998531235a2f28fb7e82aca7cf2f6f66963663a0f0bb3aa6967da43284be65bb67b459355d505361b56f5de41c00d6bc2c0e1e50f2e69670c6c2510b0b78fb2de505d14552718de048154e25f15ca5d601d4e5709152f21442aea85d9f9ecce541070319701486a5b6de6d0b68fc019f4dacc341944d01881f35dfbb5db15d5d536407cdd48a00a08f6722fee9da62ca7d5eb1f79c062e37e6043ebb0d574a2157687047865819842d0d54b9755ae819d94f21a74d49a11cbf1fa7f46c7e4a240790f0838fa277ee526300a42bd639211c5c897e27d3dd62f0810419ff91d736c7705543aa6970b5906a00f0528c331ecac3d65132252e5cfb738d22fd61abe59fdecb47f2625f71c0a7a4e8f2a35ba319710dc1bbc91e45b3cae514b1d35e92474ba5d00cbf58ac81b316c92c046a737ab77ba3ae5f427f5f99875a840600f3a251889c06c69b35dd93c0748abf2d840221e175b59575e24a0502379a81d1993f2385c22cac6ad0352c5a7b4569fbc8f24e33068b2069ca51260bc83841394c7c70377419c695a2ea57830fa920697fe773af9386104b5867e9fe77dc031d23d324f5f103f8918cc0870c65745e92450363c9441d1358a09e980a3406b492e8b56034ea45fbda1d2a39d662d89f30571482774596511a76a216c787d110b0818357eba85301346025a85bc7510f7db4326f8147dd948b7990e1c4d0f417a6773cac38759b84ba54571363b141db3f00ef6391e817846440e79bf8b6a345e785ee7c1c970c7faa7a83f169aaae45778fa236f0910ff93a9ab30b450b06b17c4be38edf28ed54beb2dd8b400f4d7149ed2491f086bc73bf4ca10b2ddbc54e0bb7a7da0f31ac09ef3918709c175e124808a3999ae3068595913533fc596adc97de00fb0fc60127713d3a753a259385247cbb4a8d2f3e9e6337e04743302cdc05c3ff120ba03b172d83bad44bf9d0c43e2d14fa5a4dbe26bf3edb7567b46439cd5af8941ca941c9f00a78bcf12fa5ab04a7155f7362bb1d7d70881aa6c49d6a84fd9d7bed25cf12b675a580188b96d7f4148c032769bafcf4488e9a22aee8cb2b223aaecb817e44fcc186499da0b442d045c74977a0182d657194a57d0b79022689d5c4032cef9c47233adf373a370598b61083019a09061e14381e7b5de3675e5951c2284b91f1d536c01a96b80d681bfe1c7342cf8aa13c58f7ee588261cc62d72ba03608d4a6c09017ce6178f4d71cabe992f1720ca6ad41ee7e1a471fec179d122fe70ffb2ae91b7122f7fd03a19eaf171852a7f2f01df6aec0cd211715f88ee26c417bd4f755bcdeb6bb8af7f11e21d23cf1412cc40fdc5249fb91718c328fd791f021a569ef2a0b4360acf1cb30477152e6e8960e73215062a5469d683e17d5c9dd428e7617b9f2b286d873a30aefa9616cd6a50eb45923b145d2dc181656dddf352848363793099ae70b7d148f076f75c876e663d67aec832da9acf9cc4e6ff47042b61f25341ea74cf75e05d6f6fe1b2c57714a9ebc86bb83785c384ba7f6ffa5ad508bd56d661077b46b122abee5efc7d17928b7d8c9f438d6348344fa852fc7c6ebeae4ecf73f21ceeace43f09bded1111ab9310ea9d110c7aac70c95693cbd679cccf2f415fa98a68d0b977d788049a2acd1b32492184c7307c59bd4ceb7938e29e7f2228d807cffe217e8f8425042bb7b8fd1d39c1d104835810ee85d9d002691ba31b315d7dbda83c2488e9998caebb5a8214d5686eb343db95293110d5a403316c62a68805c4b110a7a0f58cfefa6795f55139d461eed8380395a36a9a81b5bca5745838ad69c8a773c5dc9bbe52cf4f41d968357383b1011eb6c8dc9206c453698d6eee7df569dd3062ed606c41201d3c9cd5fafac35c041c6dba1639f679ada6a6050387bf92da6283f65a6b492ad7352d0d6e60c07e82d965416bc58bc7fb9c28b32c53c142aeb741583ad852539fc8ca7dcb6aab73d58048aa53799b4e7347ab61b99437722dd893b3ab8537192d0b48e1a6ea5ce035161fbae233b09ab3d7709a692144b7afc5c086b75c710890652102ea8103c36832e3af03f1a3675ed4f468492037845fe500071d6c78854ce9e5035cf0908d42af389a7279857025223b5129734086d9fa073e819f579612be1088baa747ad6a04482593c80d7b9c94fb329b6b584a22124b0b8f4c8f1754d2b62787c9d45b2802e99503ece3524a8e6c937ec76378eeb205aef19180759a8ca585e650cbcad607ecd1e2852e64c944555872de4aa72ecdcf75e070ad5036d5869c2dd6e69d3a49d1abea0ad63e0da33874de31e7be95287e8445ca7d1f21662b2b521284aaea96060b7dffb2c53d4b48169ec0ad79ae4ab61903c4b52ca4c9e5b780fdc11436f720199391c2a152609634fddad933ba2e5d9a5cb2b9c74df4bb3d24614c10bedf6054156908f7ce0a1734fbe00f94669951cedd5f840e9e35115584c20f83b5c32564db895c83cec66dba0e755ddf7a879263f8217269f8d9b6dc7a5eb9e036e4aeaf81376c352c9d856b0bd0c5da5e16f240c5397997d0f91c03a11e58117ecc94183a38bd9c499d58963f1ab53ab527f205f30b5a470e9071a60c26fc104025d13332bce4fa8612fa0c08a5ca40c59a974a74b6cf415cdd1ef4d8ad139d6a698140381a0773843e1ee27100ee834271691c36f6e5fbd533154a520ddfcff167b6814c80cdba2a4d5c8046605504caa6e68f58fe91331c6da7f049c47fe801a059685b37a7538468e141101b320aca9b15574e3cb40c0c4f63186251d7b357c14b3939ecee0e8b06093368e31ac552c4beb14926cc567df061d557efffbc3d23fb9252ac00d98eb3e859f0ca224b49332b42e8ad5f48ed5e310018deb12e138838782634b0fc921322584eab99d2b0f64e812cc434af76ee9183d7ae3b2277bd1c3c8e40e38eb47153666be33b598cf20a631cbf7d4a33cae5df5ad6663932200ad1ef8810274f2f74158630f448c0f2784b9ed7d4dbc9246b781d75431ea1d5b24b9d4f06c705e26ac1564fec6a56dbdd40971d2ac5bcb312d1e7df8afc194644949f963aadb5179e486bae8bec3d3cd9e7f34eb9265ba15ba2d418d127d10f5bf6932d9dd772127c402861284d219b9a02b5604c5a63d229ed490d86cb65284701284d66da7ce01061ce67e57c776ace4eae8ce73b12d28c8cb3fe8c68b93760a9f0ddcc57576150cb9f1be5500aa1ff19e29d507c00d304cc259f8f78ca64e2d2a3a6affad81ae29f5e02a4a75b63452a6986e01f6008e8bcd2425c572da25d6c9de12654d30925c0211cce093df0e3306b306cfdee61b9b6563457dc5f544e8a4313ff58442117d00f965f4caa82632ff86ecb928b91b573b826a911268bef3e737767a7481fab72c8847e0c91990a1be7f9026d23a8648d4b292ff5d91fbc31b16447092b4cbdc11869da3331c873b4162775b7bbf8a364dec86255a0898a939af086951ec2de9179b13fb1d9be0c61a2c27f443c80bdc5932ac03d8e54f63a32251a1feb1ec64926eefee9c00047723f0405248aa58a009480bd4fe0789d28fd2c20f73ed4cbabd2cedf5bd6a01b5d872ecd8ee3af1c63aa598aab739ac6aef0a472fc30db39c414fa2dff521daaa0a0f16ce0791eeeb11c2691c14613f13c0ca4180ca0e36a6a241c6bbbe6aebd2969cc32b67a761b52387151423981010abd9a5cd265b48a891ef8d669b78365aa825b50ef0e939e701b2480eb5cdce5d3f6a0dcc5b40b850db4a85734abdd0a9c84638e01c9abbb63ff533bc2c1795616ee0a794693855013eb5267093c36e1a8bb6de3fad2f23a9a4293348659ff86d3485c371d42514626ed59909cd260175163186752c5c96065ff548d6872f9ffd3938d5920a0f9f62478ee723664e3e991c8214584d5497ec0680e9a1054c7202dd8a91af6639130b17b8287509d6b2b67a4d58a99e06ca0f8477d7a58369728625b20a2d9b34c75e2325199e5a1c95832279ac6afaa0b26fdda0a29c844e387a124e0bed0ff36ca615e4c943b08dac0b6d81b052e61c2689410f71d1a73aa3a0d98b497f3ed46398ab9e50f117f6c14186930c421faa6c36e027e783b7eda66e846c1c1bee85bf4bbecec6edde2252172e9eec97e1a0b4778979e17bd7cf3bd7ebd22c7cf6f141bebc51966ca6b614356e2fb14f68344ae0b2c0a6b63567476ae568ca02352381a4215cceb990014507c8d8fdb72395c10c2241fbea96ee2217e1c84d02ec5b9ddc3152516ee5e8d5db8f8912d878d80be9dd40996af48fce439c096b3f8a98243e3fc5a4dc5e3de5e395c07dc97f1aac471e035d8e2bfe15050b82d429cfb94ba3159fab44c6ab47da0a85250d7c744106e30173eb1999f7c0aa744e1be5c48bf9a7382252131af09378e7b30fa0dc931b038640ec914560898d67672be58016b46744c26f40665f62e3df19d8e06c678596e003970d8ef27d4ccad6606c604fa35ecc1307b6636dbb9e2e0bb2655a2e6853da0405b46b34c8dd896efbfa8232fb76ca72e9f81019cd43b90f17258c83b2647cff6edc9482c2bc70f8f06f2b5f85ada409645c2004e4467e860bcb94d9515ad6ec6bdc5805e64fb61d370c78d8521810c4beeace647044caaa1029895bc081fbf144429cd43511a617168e6c284f59637c3e5a4f5a54026c7b41fc033ccc4a5eb3f5e755bc53c78a242485470f89a75d3886e3f3084e2fac63687d909301750909e50ce1d032517ff3cf74394c0745fb55b9eacaea755b49ce3d7ffbb5006e772e44c515634ed070b3d17b12ed00bc804250795e366acff3eaca9fd10253d85a7e42d910a04aa4a9f6e4b444ae9ad38e8aa55c7c98cd28a62d77d6c2f8e11e68256145969a64064afba6907db245101e8697c7ea13ddf006ba009a0317ad1f13b9a8b8e093295b36c4c60b63f69201bc9f80b0dee545dd1424b7b5c6b9e86083d9944eb657fb52d3f31b9cd685fd0dc7b1569d32363972af0fa79f9eb594703db03666a0df809543a49cbafff6ecca44f7c4b060b0b0e26e82a14450e01fdf93721f4426f6f0112b8c6f142a8e2b36ce592b71722872b97f087e6cd032de86d7d37ad077239ab59cc4fc1fab31b1707b3475dae35a549257f9ffca6c91803436d1578ea785983009fb0ed6a260a78a369808e7d9443ea72db6064ad3d81dc570c439a75053eca6c2818f64de745bd038118e9f8ad1d9c121d6b9692ec03c357664a032601f14977cd42fdf80b1ad8acaa4c2fef26abdcdfce576767b43392acc642596ac0d703a36f703bce422a882f09530e5fabe2fab72e532ef80b191d9544c2ba5945c7e64bfef8380d8443a19134da2ec89c6ae51d0a3958137b6d373281bf2f32295307b6910cca3cd1a5017e41c3aaf4c86755dfbdaa48c63bdfe69c9cc5c19f4f2ffa2ca9a13e0bdbf65915d7dc51f9915df6cbaa72f5b7ac449d7631252862e91acc5bdd8e2c06a45add2858dd1ffaf624fc6dd02a309d596aee95761ae64656e98223cdc0a058aed3088c39825e494cf737f1b08f64eb123768dc17677965a736bf361b6db278bb5b94670f5b80ae3d92b718fb3257f07746ec6b973a5b9ac9145aa4865755890c7341e800c2bef8f1e94018eac82ecf5714797b646ac8d641daab482d364b1d96ec139d535fbafe990274e5c0906d33fe54891fc8dbb44ff5c0a70d115368b53bbb8bd97ca1526e082e4ff9fb2ebd9c69453fac817ad70a4e6d6fe3695678bba6b33bcd554e122530a042b391a5aaa8b7d842fd5cf6c85a3a48b8079ea9f921872464c996acf9291a799a62506181441d713e408fc49afa6cf72a5bea0bbeb9eb092994f6f2b7b61258c81d96b3a88e3c40159c42fdaafe69f74a1270464f13b9895f265ea42135da7d756f5a0192c29fe74a98f30f14e80a86f84bde46224561f4c6376010a0921e57ba5ae7bd5cc91f91e90255533da8b6ce3e53c0f6b61d4f8e97b29f10f32940890ab7eba61b8d8e5e9750c7ac36c947e5a273d44911cca3855801e7aa0587fd597e32fd84d509a7263cd8b877eab153a602ee62862bb0bfe81df77db6c25b1af86906910bcaefd65e5910a14f04694e004afb59283cacf30e35b8502fa462c6332bf3b8eacca80600a2f5c6f9816f267960f456a5cab919703c4a90e7fb79fb246cbb2d306a94705fa00caf84fe8f9027d24656a9ab0f5f9a8d4964c463a0af65943ad80b8da53136f2ba348a1e889df41c6192d228c1f7dd862d0cd2a88314ffbb0b4883176391d5db90df09755b1a78ee44e57cd62778b075977a671130c4c442f075c55d3d4661056262633fa54aef6e3211cddddd7f3c05d1dd7ecb42eb713723133807f5f0ccd79c24e2a83f2c61c42e6887d4ede88567403e3fde8731127c1c40114013f38e7471b56192a7351237a6cb9a8f5bed52c507d1dec36719f7610f6cece89b34b29b29f469a8bc064aed9028b4edbaf02cd3f67e8df868b0128c721e38a1b878f6c111a2fbd5c6eb20860ccac7d72f6e4522f76c5b03d5f83a46813febad77e7fd3a03f24791edef1224963674b91729ef6fa7a65f234048f206f0f5efbd71e447881bb6ccfe1a153f2cbfee84d7c0e48bd015f95d2a8faf1f31fe37e185c6ba7ea31488f8cc2c5339f144c02c5c022462aca0aae16111cf4ab7bc363f25a16829483a562f48d811320305c2a702bd85d25e0ed2ca9e55adf352f9c45bc1eec570d7ab822484329406b8cd544ba7f6164b817e25f476c54206218db376b3d2a59bf7ca72bfb6223900c96ed8f764596fba8e3b03ded4f924626b7a8612765af59ecaad4d60e18766a408d48b8750e0012f6f5a9b552063dd685012b59fe8d470a059b4755db3f25634f0a438082a947cb09b1ca8005ef53bfb2c673ff9c91bccb6071c4d96b1aee2b2f8fcb05e6223520844b0f92114109b492f0f798345417a3ba0108b57da5f5025de22c44c2bd53e8fa66e8776e99aae07ab72fddf0aed78381e39dd60b3d5bc140022629c4150e5f2c9bd4f5e0ff5d308a36b6bf91809741b0b246f9784768b071ae995f18f5524645ce2e3388b61d7f457f1ea0fbb74b829aca1c82f47e2c1b746477f3752e24a1ec4d3fec588af7437cbc54e4f15d30e55df5344fc100bd01c72e47b383c16e097bcb6974ca55f163dac2fca4689e64d06002e64c3b85ca910541237653b1681805065f43c77ec9d58fdc3e328057a4e098a932877650c890c6537aa2d8ae022dfc7075232a87fb999dfca52d325340f62a9f6825cf2f57634eb1f2484b10d72f200cfae32bf77c95d2940048b5f89dbf461c5b0ab32b936dc8e76c354cb8bff1bb089dd4cb71fc78a25afd5c9b8194ba7cfd68af8251276571fab9a2a214409fbf8c4f9f62a87e9925e049594af8c21e92509189156c2628074bd2d516c83bd4c4329754cd0487cdf6ed75498e7bdbedc859a730a7f7f132646d50e024c7ce42491062123ab455145f3900626a70c65e9f71e78104c5177332a35d4abc3d3ca7dbb9c09967e326be7bf06889699c3f08f2cc57f313398a37072d7b775f3f907158cd7cf26e81020d1b79d8931741a107853033d403217af97f8643a4472b41e4124d7d2dd66e9257952e44c62b97a6a0a41018fc15bebe7eb92c6253f3d10249e4e8762d80598af47692f0408d88142698d222e0b7ea34fb48c73e554814f7f9c305f996d5cc9d74b3a5c7d221f468a5f6b427b9cd618792a25f97e520e6c2d9ff1ce8c6028991b3cf79ed0daaf5880af5a54ce2b5180b596cb2cb56703e5b373c704b8f813a66db036a332e2da00d2fe3965a789789704436f755ee31a2f7245368a0bee5a17a62a02b325cc0b1ae6119998d9a3fdb2804e401333484e4b67c64758bdcb45c67a1111226e1959b538b30b3e0a87a12d72e35d59f0893901dc1826385fdc6ba7b628137397a6a9304c74784252a6b688a83c70841333358e07454d202f735bef6d4ceb38b744aa22a1ae634dd144bb1d448d325aa4260ea681735afc3ca06d71ea5d44c9ed22f3dcfd797fff7441fb8a2bf7740d2a5b6dc4c7f31a5f0d12cf13095cba14982e2cdddfd3f2a76b98816ca788465737183214acb6ea27dcb421ae7fe3bcee22c953cde01c3f3bb3f2e6033c7fd4eb766c9248758cbe7446d78d7e73a10f144f84c6611104e4401f4414f9c2857da3acad1be29c1d53ff1c1532d70f60401f0c0be24f0ab2790dc11e4ddc24b34add8a1c1e4435f90db714d19fa5a09aae39b1ce2572d09e836e3f5461383abb633e12b9d2ef7b41688c59065e8503409531f40d1796593b6285dfc8eb796c680427881a3d1f3e708efba17a82072f08e100029d60020c1959abf46fec4d1e09e81266c34bf2c7a868e188b43e06cd1d00ba7b0445830c5a7157084772bd1d78a6f288d50770585704e608884f81084a1314006c7065e25d5115e19b2aa477f93c7c3556741b841365718e0fdf95a9e359d1815586752d249d50de19d180262c0586532741a2a5b23157cf22ec71f6434f390cc0bd9b964d5c4d4f771cfabba4835700121850592177247c56f333d78eb708a9ee8ef1db354817688a2d390f8174d9b25c900ed96c4bad95ad289899722f83f0c67524c93728eb379dda7975af1556017c247e5aad3200ed05abdb845cdb14b5c8d8a3209ac3abacf3b876c4330fcad27f6e38047284c8d36e442e887a87bc6e043cb40bfab7e74585fb28096dd12c42b09eb6f9aedb0656e75d33f5adaae573fe2df8af5b8ee3f9aa74358729ac1ef63b31217e589b53f3fd86c6e8280ca412ae09278de009871e1241406138638e82558efcc1aa810a86489bb6a459d46e00e8b47c182b42d536489f049499daab56448c33c9454c05a9bde55a23da8b2b27c01a900588b311db1f700106c6f33d05e8eaf5ca2af61efc0270ccb94882fbeacfdfce810ea082adedadc1468baac0b6bb1a08108ba165bc4f71707edd2448e3bf2c011fdcfa770dfc9851a347f8367394d507ba466f6b64562178af752408f4081c3a998c9c8f810caaba2cba021783b75df7237ad0bb4abb161403e741e6259ca8c83d6106b0f007ad5818999b45377e258539507504c0f8454a97748e950b6fba1e08626aa0d79286d44831da1d0c7c12cca8ce0dfe0fd426922c3df06a6d6aef202480f38aee00a8a8eaf49d5cf199a59b5cd3f9e30e23e806c22bbfc339c64e1f2790eb708f49720d0af75c330751384268f5b6e712ba0ee2a4288beef7aab2469336714dd765193976ae746218e6fc2b75a3f413b2468a60238c6929a5e9b1fe24813f95b8f03de93c79a522d4d9261830ca04cb7e35317044af356e6940161decf98494cd3d82a23cd4113e7c98b8cb6c9ed36c24546c1eadac466c83010cca630e1fda2b81446e70ea1effb5c114c93e88151203f4bb4e4c2e895dd47310c80b93c7d8db44d9d41860072c71219e7651bbf5d3f5cf6ca4d9c871de7e50431f87fb2380690704fd11ddefa4ce3044a57ab90e9bfd7426c61195644ff724004b871ea141c721a6ee154744cfcc36c85774c32196df919d473c7e6ae145ca47f29c38519553efc5386ed7139d30d2765a2d691b5e7e932ee224d24d1abf58ec8154682e1a245a3adb6fb24ab5c453385a4e3a63d46a2ed7eb923a86df782c74e3716f87812da472c91e04852b7f7002ada2cfa32c61561112ab25b45918a7c6c161ed42dc5625ff670e765e643267aa1e886971a9bf70c18df3c73bc1cf864321685047cbb565659a208c7a349398edb48dc8844d9f5088fb1d0a60a51e1d9596980b9fdb1ff807c03ec024c387bbf8d8c86d4ff4f51dce3507172c8b1c4244e16340560465bc75062ad451ee64ec290abb8919c0e257c886e8500b0d3042eb4bf07b45bcd25d5d79691469522728064267fb81d18eeebc05e5a0df6712cd2c6881f9f23ca4ef946af89882cd13daa03f30e669e1bb2d48289bc3796271efc21dec004c2984b3e3deb33a0b4a3bb574b7d300f7bd89b6d01c72e7d2d3b391f0c9209bc6ed207eb8fb03323d9777f1b4228e95d9572670ce165e71363d040bcea587ed209270461dc84439a8f8d6225f1eedaf5222f5e4d4342aae9993f1aa64e6c30dce482aa7582278cfb66b4eb071f258f163371561a1693b0866fd0a6bd1a87699bdeb4b3787d7fc76fb09b6608fde1886d0a35488b0866f224f6f1a694d48b3d2281f42700f1d847070f1186bc846c1e737d99d51b3a38778b9f417e2823f1702806fbb555899912ed4e5a0ca8147efe442f4dac3832683da8d87230e33e095f21d6265894f002272419cdd48d6c9809b48bdab975f0a93382c230d244cce03181b63590d6cb61785ecd01b5b3487db762865583ea813c696a0ef9718e79c7c0caaa6488a45a2ac8032c179d105fbe85606ddf96e8861a48f57866b6ac0ee0b04729811c33220a6a4e25f28209a2e29ab4aeb30172de98395774f1556ac756b86348dcd37f86915b4bc7ced33bcb30b56066ef96e6f4bd650775617a210074fce1adb1b480bfcfa40b680a2ce011676e4f34c15c16d205affc2115b4a1e58ab201264870a5fea983eababbe62e5818b757e1c7c03b3e71ac8d702ea4a24f4952b485f8f6bf21be08e3a3ce0ab90daa8bca833cf1eaf140880c6543daebb9fca75efba097f7cc69e12480f2f02b195a438f412ad4a64ce71f623c5c7fd4bef74793e3c43c7768101dfcbc81eebbddb6da996b69332edf90b2c20c1a8486145951f07e3572d1d749e93c3df877168d646ba15e596dc0b0a5b3b29052cfe8bc97130370f225706c6e634f56d78f48aa84be647ffb24a8884e7ef32f5e4362b2a12a173507a6c0d8e7a5d13a654ed687836489320109aa34fb96b7895f7cfd36845c1d4d740d7f7e3d97e383f6d1662ceb9fc3040d9657dc39ec6ba8e5865bc4902ec3ea1ded22f605687fda7c41a9d32c64d34c739fe709ff85b4c6c29209199951d6938d3accda101d5b98ef332a495f532ea1f948cfac70b35a97c6a9de484ca9f88753bbb6330ce796402b7963c2a0e19d89265961644fac5c4657a9c5a2f57f1bb797caf7fb8a93cbf7c36fabd577281f04aca21bb4fa03f3fb44b6df8f0d073835c4b9c00e783e61b27d983d1c0e3d98b69f0ccb3435403a4672fa9815626259326b14e2196b9be3c9f065c5e541bfc5baf006694fdbc4471707e5cf9563e8811c800f0fe1826b0edb1dffd7eac5c01d223446aaa790dfc1de8fa379035e60a7a4d3f0eafb19cf858ae34fbfa7c6c177a45bdd92df8b8aa1365c1602a810c60592ec3ca42cede09233a03bb118ed1dc8ada103b7c11ce0f5bc52d965a67cdbf566e8e48bfc5d5309ffa6c2b445d401fde66abcc420e08b80842014a027348ec764003d4d5a571f92859aa2d3cd92c24852ec8d30268466950ee32de8676981d1cd7f10306381c17facf004a75e3c8f990af28d3c93949e026bd5d0e106a5e22d300c300d6ba3341fce88aba86545339c439533635d23d7f366bb3c30dedd3c5a9f0cf582af0dd58ae02d42020efbc573e56566b5082dc896301f0865891a696e940a5290ca8ae72a64ef7b2f68e0579afb751e86b8081081d6572704ca4547c142950c4b799671e9406b26aa120593df506b429097b17bd14f69d4237c239106aa023271626005749a69420b8c1e4d1a64af4586598243e364acf86a96f2dc482727ec959787ef8709c37f67fe7047a27f03f821ce91c4ae6f8a9e976eda6481d3d334a65f214b12565f4e44b4dd9ca99e61c592ee194b5bdccbea48990d4a3e6b1812c7f4db00c7d220d7488276622a16c4bb8959d211efae018b3b150145347b0076c2bc2d440aee2643401e32175e1ac0d46e03c180288a30cf18d084c5ea95568eab186fd3076156fcfcda8c61d95a6fd5fa5158c4f468c4bdd8a0cdf3f5dadd98fd4cf56d990882ac2659adc70eea0a515b8352e55cbc216cfd3f2f3d07ed9d3961a8d2514c12d8424da5f64ec041ecfa86314066f4cb822b84038bb6e9c1e8e981cc9c32d80201f60b395fd2adfb9a4e7c865729f8aa2e945982d83d76699ac55674f7a45de18a48f7f79f02c95d05ed06a880df3aafef0096336ec9a4023fc518486b068ef272345e24b35a85bf250ebfb159a51a66c975b6cf99f146b54480cbb642ccb54be44fda05c0db63a35f5d1da873dd522cbdeaf0e8110cfd342fe6a04f76d9b94ca8e12525f52fafca091fb3baabe52364f19f4d8238de9aa34453cd16c97b9e6a85e295b0df0bdde411765423e54f4923462bc4b91cf6d5e746d19cd23fc15d63fd5becf50072c54214f43817e6e4d957f054cac0e9c24b93b665820ac208c3fd388df7ec19510e4884fe23f319ee2265aacd350ee937c72b738741737cc06ccc86eedbd1c77ea9679f9342a259a07934a5e0053225f32400cc6bc542b21965957e4edd091a5a2d3275be4da9cd22b0794ef65f2ab0fb34fec7a42f5da64f2540a3f0baf66f29fbdda4293ffe0bbdd6999689edc50911d3dac3c03950230fbf34d84d98e9e8f00b849bf9f7f9a78cba53988f3cfa3c97ffe0dafb10ff114d6a7e53f9fe64b370a7d690e4c5ff90eb69f72332aeb73e0018dbf32d7ec1e453867fa810dd089d743714388d1cdbf555dd6a7be07461baa16fb81914dd4a7a629c65fcc69623701afa5151ced1eb80420a903921115c9111adcac37c4d8940052bb647f4228481cadd93b6b7f226c9008a1a0139403b5a84a4c89076782c4468b19dd9fc87d9bf411fb3562d5429d18e0fc3a46a58629ed7870008e8a277d306fe67528c16dc4111aeb0f67130652e430cd5c9a035fa86f94a5a7c8b4e6401f1cfe55acc9219bcf9be5a485521116897f5cf538d06983ac1ca10008b0c457824952aad8e46e923e1b183d83890eaa5fe593930de4f9219cb9a84997d39e04ae69a126436918823a273b8b4293eaf1e7cc31ec558e252c7bae682db0a0e0a8d4aed7f591e90937a22dc916850669e32686883f18b0ebe11dd21a988200ca1d3bd2f2d4d805e35e61534ecb9338cc45df7fe7f1a7872d1400121f4405505bf9f1ba2deccae23f2015de635718b8ec8d9af27e676178fce24d6343f8020903380c11db623b88179a723e3df799ce186e592f7ab0154b063e27533a2ffce79a4d3bb7f044956152a0277ee2deacbd5786c55cc0cafa4e0c21b6b3ae23cc57b30a6ad04a9c78f733d4236c846ea0e5d34be3798a345fb23ed6ce9c41509f1fb2c130fe383cd424d21289cdb16f7543b0fddfbf68e4f619f70b6db8d77d89c83e547503d00ec32d0b5f74a2f127cf14280451e6c2f3d50330ef64c18ab92e5d4dc3a05dea43d2a172b1a6d369f9249f0dc34b890eefe7a89e50de7c1337e7dab467d0c7c4e7eb519234bdc7c39e30c573e0c2fc9e2497ed1e4c5a608f571d9b49d02f223e75b0614a352e3e8500821c15e2a8169d75aa17f7d49e3dcf5c6cd99ed7dbe311efb4f823baf60c463f6541d0c1cb0cc3992ed7b35cb3bd9b8eea10efb54baab041c39c95f533198792ff53f161f970d9e7d763272c9768f3ea7dc3fdaf6700b93ca58d107ac1224e2d71982e6a7d4f3bff62055321b123cb052d433e0ed0682e3d6935688a344f6e987156fe23d46968f26e32fd3164afbe1747852442f85e41358fc41f07651d6b8dd4714adc6ba495ca2a8086c375ea30ffa28c0a4cf8fd0c70b8affbc42e88d82f8a9eb559644b097c876cf11f01b472b9dca501f4dc945f82806ac739b8df1a3ade6ad9bfe9258e92fcc5aad4899ae86b495646f40259a0a1c890968fc9ec0442fe42b466297790252475725727b13587f50ed0d85c28641f235aa690641b15e9aff757eeaeec12eca4bf33e753fb84e3046dde71ee355074ee7bcbf3c8a9bd6af28d6f446b80b7abb929e4b800a261f399beb1eb5a1cbd44767a2914798755fd611f5afc6667d0b9a20b6b7739bd46dbcadc42719b5a72861a5a041f50584eb392151473dad296466827eb8d00f970c7185c426b5bcf52033fecf822b0dad49b93b04baa7fe58514108c2c0fdf49880dc0200e584061337111a2b37e70cb6981605a2ed8e898c4ebc2455832df02ae46c161c74086feb8faa3f87010b6f696fc375b88b6b72c63da9edcd2aee19d29c70ca5a4bab65d7343c6ad3c6be93ba709cf8a45bc393b5801e12a188e23bc74f71cc7dd25414758ef11791771781f8f3b08f20a84d32d76d6e9035626f2b2fe85ca921f9b489eb1e3b72df0133c002dea815fd4ba796172967230242c8c6ea20575b3c31de623cd6a279a8905ea59cbf00314298a72623f4c4ab7cb9119dfd96dff7f8545e75f6aa99e835022a6c01706a8a306e6b18776d5963de4bd0c61785b84cc160bea3562c2e0360960bad3689d5981db4c93de2cddead492351a3aa84ff36dac7583580527e9de4b58d89bd8664b5a7247a0c44ed38cef910576e4a10c1abe656755221cde6565d20a819d6067a1cc81b4c8762c70d2646039005f96bea7e60988d99f96a7e771a0eb411b9cc5c4037bce68d08c476f8fcb5d67c71124854b27742304a5177e9ecb39851fc845a956572b7ab20e141888e60e8a9051bb5af1fb8ac8a855a1509b9b84edc3ca8a3147d67ec02e6c42aab232a9156a78ab16f50999e079246c2aea5f63e31ece0438eb2f86ad7d62d8ce13ef3c9bbe56ecda1f151a56427e93baf301beb005450451ac890f5547f80de79a715d514ac155ccc2822869c8f5aa1bc40948551143745907b6f508090100b041d5ba2385be169dfdc9e1714cf5247cb76c506e7ff9a4c5feb6f88b8c1f8de44feb61d495871cc08d821219127d1164e3846c56f7fb89fe37952f3729ba436612eb3d43378662a05a3e7c65dc1cbc44acb179e667a99c850b94e65779db71f2c2b64649408d686b50b8e0d85700db58d1e8a7711638aa3f9e12a89dc61408dc52f128c09bf390a7b47c42423b3a839a23be96e606c959f6b849dcb95324612fa29dae4227b259131cca219bc82e8a6f83bd1270293e5591dbc1ca8e727350f51d361bfa9bcdde56792c1812a62f0eab2dd069cfbe9e480a02cbc52806b08e4d216ea057eca2cd43ea0e99838a982f65030a81b4610a2687bb66f959d5382646228089231892973019ac82e42de86d414879004f5f2382f2cbbf922341f41f1e28ac565bc455c9ac9603df8b93b670b0506576f4e5aea5f499d8b0ac7da7c46cea32b2383042e4290d1f6e7d900502f960188dbedde27027a0d2a88332c2b8451ef2545f003aa03c3f865b28703509fd6f5da87fb022d2db44cfa5bf2132a8fbed6588259607ddea8d401d667fa0ff16a8969fa16b527c796921935e11ab9cdc276c417762a655b66a1a24915089733a5db389b41adeb15549cb13ed77446cc81433fc56dc7b8d7215841981a8304434423e2b09855c11db6d85c0ee20ab8939ecafcbfcfd617d64236ebe561efd5ef17c91b10b72a06952a9ec717dc88c488b5426477f32e2a7b13321f49df60d61a016c42691f6815adce1bd0f3b42f3f71ce07cae44bc143fcafbf13656a9f299e358fe82df016496877e3bcd459de7b87815e9f88d5f7c09acf6cfe8ac973fae0530e45dee997a80af2fd0418bd9fab6e0279c16cfa4e0faa9db0bbd585f58a6042ffc700f9a77c8e0c3520f5e6c073bb426a195e67721be4dc61ace8ced95d7be69d4bd59f445788b4012c2aa77e3c76c1878b6624b40ea7ca969ca0570d5f528798182a2c5543025d91a5f91865556561898358e7b3b567242d5718f4a4b836afb11ea1b05981d463015f96e293e846038cec21a893b2e0535b18473627161e53c67378614ba7e0c16a2d434840c2a1db315d94100b552253249cfa9d944899004160db803aa86c92bc07670fd0f82f6ef2f855ebd9eb287042758827c8390a8739091dc50c28f401c686435ba6324294feca9249e75f2f86c09e77c12daf6c9d0cb8c625108408794d8230a2d7ed032694b4536c4c0954603d1f22a8af9232277573d12f29898aec7584c8c7dd574b7e6c5f32556c56db57f5f54ebda419ec1d00e4b38de54403e71cd560754ceb93a98f7f0f8e1e355f9798e7f5c75627b0f4342a660584255e7175061d637dc185e0520559d8ba899311c521dfa0cd338e50bf32ec50015b9fe7aaaf26fdfe03c20442e77de90398dbf8a9152990968cc23ab344012bdae77346a6ddd4c2c4342c3f759ee8b22910dcfb713a9f978d7a8a8896dee51464762cba19456ecd68e42cf0e3f9edb34be38d098e1c6ae79a90cda1cc35df06ca4a777b4f99d88fb062a7d29079f803a241ea39e86d67d7847e21b4eb2f28e04f075fdf8c60f4ac20dcb69770911f17a27ee66089f5b9ce5848b28139cd60ace09a77a5e1345542a4b08b8c9f8af41354c806155e7c49e98255733f24f0c039b24a4af454984788548e74d8c45850aa5d3ab8c4681f3f3e1f074032580f9164288f160c069a356276e74e122aa4bdc9a5a353480582c02485a86fee9852802d02c4e3f9a92620b65ec9d6c88225276642cf6501dd69bd898ddec94671976d740b448cb9a68184de73d71eeac2ff1d2c2bd03a3513199738095f404a5de21a9314ab2b5b56def8ffad7136c56e6e0ade750cb7019ca7c38f8e12024c179599d01497d6b683a1ea029b381cb905033b3b741a6536bfacd648e91956139d4fc3c3e162d75b087de5111936ecc2721efb2e1018b577fbf6d340793efff042f45e564aa71415dcc43dd8eea0a603f9549372b77ea3f37e8bae26ee8cd1b03a8111e7eee398553df187740d7800e2387eabd03bd56d422d1cc5640a854d2d09c33c5b41484d1f92c00974c79c871c74b26e98d944df014215ee8b0c368d7fcbc6eb1b38e97e46cb715d12ec6320e021c95c2d11a51ad287c2f5335027138b18c635c1d05815585bbd900a95134321588bb6334912f3c61a079bcbdd57876fbe74b98577cb89ac88764586d4f27aad7286cb061d95c358048e37d54cfe004dd7872551003dfb87bc498db894834cf6f984bcc2c1c3c10a5fb833339be96e880ae009ba05160a4715cb58bb690333a4107ccf11f1d169bb3518c523e8704634ee4d97b8e54376b5d9430029ca07b81bf2fd41d0afe6883461ac54117ee313bec9a588c2c76c168f6b125183088f880f91cf212f87b52634a0a8a4f4df997657d283e1356c8953a6e14326d5568a5b7beb61aaae162c335165b84fd43da6286a558c33082df6d6473209e5bec819141e17a16a7ede2f5a16931c74189f0937b164ead88f6c5a23153184a26605eeea3b522b1a2612bd867b90582577844b518ad65d3fe7737094ae6ccdbac1312b920139c7d2f8ab687643ddc2f1c1e40363e0eb613273a4548318ae8d46b08d06ddc5014a3f6344dd608d724135d8a473b806114e7c7927568358473dab37d3a01711a6d2af82cc7f4cf4bed760c16500bd56201cf6b956d773f586b28be21f1e3cbdff8847efcbb587f1d5dfd62e6ed8ada613cd0a6b9bb1d3d77fefc81de6030c6e7fac164815a6f46535dc3d35ea8f52c88d7fb124c4d6028327576b976c186c725762fe3da8ff3c5b4edca130546b6b90205265641b514b7c8720cb3d393a799a41b7a7df37178dae1e5583c3ed9dd419823a1c3b015e7d969dfa87e90dd06f8a00e343bcd969a3250780e8ed2d0cb11cfc5d079fe169aefe60bbb1c258a33aa77dcab34070e49c5a3b6ba5d793703b2be43971a9b5ef1d21f0bf18c48a4104838d1e009a9803c2e84a9a7c6f3cf9efe86c773b5e60681b6f430552ec87c1fd5ab34ce44e3bb23cdeac0c44b0fb0155aa649f50f604c10f924d4b4b99230af81aef428c125ec0f593ab73415b1e1ea9e080501f21eda37715a05231e15b94f3a75ec9e7d9103d23fc5889bac737b1fc8e25ddf475ac05fd388d189846a14eaf18b3eb7f64a98dc0e47305b2660c91763e290e43f9487e4c2a6916348c2b1ea16ea2665d411938e399b63ac8b7f98f7ac2047928096d8f47af9dd0808b7564f161a33bed9672b09739294508e9805673fcbb3075cc48ce410b9588f1cb181b047fbfbb94f6704853dc6ea969d495333ce9e549b297c900b8248027def361ddb84f318b5484a2713cc4c2ef3aeb792c7c0274e69e8b42b68d8a479fd0433931702bf5493f35d20482b6a950822dccaaa0bdce7d44dc9bcb501e1c87885642bb69de76abd57978c7fae1ce09792103ebd972739700ef805c29f45b92ccbf22f42a9a260d96398825e70c0c2a9798acbf548e6333438a0c4220696058ab0329d9498a019f79544ab79d46a1aff90f8ab7da8d1230bcf1d01c844e63459f2a14244b531bd37987b87d065a3fdefffba6cf010cc5cd5daf91211a03df5f0d58f3c8e47e34ad9b34d0ae2598c3583cf0aced862bb3a6bb022337f6503049b38ac1d8805eb75d5fd2f81439b00c4a6078d2829313306ecbeafd4e34c5a0cb4c0a33c64da91845883a36fa0c3da5b9909585f84ead6c60390789f9e160b09a469091fde228f07cb7ba48a59d4e1e6b202c6868b0a8998bf021e0e433cb2209c9a325c012b9545cfab8da300b51d771f35360d06b0efc8e41baa5c9931a4f1ae7710177516a491f566dc7f6ea6197740547968c56ffa4dc65b4fa594b8cdc8a39b72216a33ed41c0c6011976808f3e52a59ecb0e49aeb220a6f70094a4b80738fa0005cdc47ba6fe53cffa942c03be48884014a480361cdf9bab9dd21e948c600208a59e1a98796af00c22b12461afc11bac615f70f87b3909773b87938eb6e650ed8b553436acb8e39552aad97ce25e97e937f6fcf60f1217425556031c875e4333c9a79279aa67f246fd9afeb9b1bbd2af95dd18be074bc008feaf1ffa298bfd7280889819769f20a8fb19a65f096042a0ad2f7c7cbded4eadc018b67328d1a994e16e8fe56e651806e586ae5b6956eaf646205b2b798370387ce4b6af691490f287992ad4b65f6fe03d09c087a8e0d4e74aa324b5bd45992315b018376eef09a8805836a53491542b2dd96635c56441a70ef476ee0d598e550925353a565459ede45ea52698dce3dbb4344b24509dc9c6f9317c8317b2b7aa41e33ef3c4ba05d278dd41726278e4dd0c5c0aeac6490efe4454954904871d508b27869545ae56fffe3ac1d6c201b2b40c48de0465fffad239ea660f40d0c3fbcd732399c28840d3da4e0ebd65d8f3f1560cffbe65eabb539dc19aa9743dbafb1aade030fc5a39ef220c439194d8f42b9be8be8f3a241b8db5d9509b579911b34f7110d8d33cf98598fbd09cb3341cd9cc3a6647ba8185929d7dcd34321af605eb8eda08ceb006550c30b9f6aefceae20d61c27622c3dedb861b3ecc50119b34bc50f8bfb3c178a0c2b91df8bca15f269e8562f1388d0d4384c5e03af3f011ec666e540af879f11080a9cb540500e7472a639464d9b14ec360f6b7542c700da44ffdd20d07a62e107123031fb56cc3edcd0da6bdeaa4e5342bda43b1d9b032db54b0b6ed68eb6c4f75986bbf7e5bd6183a65c49233ea6f76a5ffa68fdc9181dbf558ba158a9c74bf9555be17b47085dd4c8424db1fcf060c0c6b3211eb993015a635bbe1a40690ca4a216c0df8641c76e62a093644309222942edcabc3b4b9b6558d29d23d8f7b260b0435d31dc7efbf9585316119f8b2bf7410ddd37aeaffa137628786f492572748221b102de55610a09d194191948f32beed9ef51e28e0e8428d558b7ff630e604ae34501150609b3fc26b3d8fb9567d447dfb4ad5aab6c3f949c898591db5f95b7cb41e6565a53273d054a8ac6fb57724740b9090c37da165c7047b1e57b67f4c04e708198cd7ab052b5107f95ad8572b4934459dc58d589393a2a600af0c810ef03dcaaf15dbc7cd32685c01c2105430611cb92466291caba299b3acb998589342f1de55ab04ebce3ac9b88ed6ef1e22c3e373b50a19babb773c6eb0d0abe4c00a974f8ebeb8c8256121a9703ed659ffc759c8bd1423d6460881f84156095e3672db55e58052622951ac52cf24c141fda3e45c9b2f71e0afe8951bba2ba0b74fd6f135efbe28c9114594afb84a678d10dc33c45ad3c8f112ec3ab791df744d0f79a64cc3b05b38ce84053b35873bb73546f6691f0a72d2748c3ecef9118247f88ee8f7e868c7195c1bb14190bcd96cecabcea97c9dacec40212ee0a6505a4fbb62bd2ad6e24017a863b40ef3d5404bf189880d74ca42aef662769403ceb83bb409cb4f08b7234828b93dfb19cce424b7a8e0528fe6f65e8a4f74f78665a11fd57c4d9e4f13f38bae878a1887aa43fc41b190ce9a7822520747abe2531666e9d40d85b8efb3191d9d10c375f729c619a331e4caa851a197b860efdbc64db3048f58d796d97e82389e40f3b8a8d4367196e3d4e8a614075e87afdae2738c13dc35e807efd3b2a27b2106158828765cb50fed8eb3f49deb0d22dea1298f69a8733299976dfb8804226c794551d72cdd5af8bd4b93d3dc2e85079d4729a01763ca2e5a3b291f7c87810e0e57f32e4f0afd7338f130d45cfbc2f8c670674f79f30e7689d798e3d80a44254aebc81372bd4794c67a0ae6cda1c808b2e8deaf5dbfe1c18ba77cf0d111a86b0e4eb5d0599376f94adcd64a0e9c6218f87b750f8628813813c82eaf4aaf9b826ec39f0b4d34435a1aafa73c343376fc66234df4e4d7e8dd9e9b132498e36384d2d87ae08894027be94521de3b174f99fa98728377c49a5e201134470481fd411b72b5ce56533c43e005840d4300d8305715b27497195c23020ae989445360b88a2f135758df50793faf77edbc2aa35b007e2536eea3699f593787e9a740cf72b24fd0cb37a1d10220c7227e96df98a325ae2a65d705ab449682c1520e516326a88349caa752bac30d81892fe490833294df5b22692952bae30c3110a5832f7792ed010f39b90ca85a86cabc316ef5844ab3f06311a8d17dfbb340650c26b89124c90c5ff85a612e265b0f570224ed07daa685156ae5f782fc81f18221360cbe47dcd2b221ad969fa16756dc953aaed0d51742b30f6d3e8a5d13edcea43182f926f97cc5465d6ece253381011d75f476c4feeac01a6eb39b1cb4c75b505539d3947a2d2074c8ee08365f49e29faa7eb6c3435235c7383753ba320efc81a3bd8f29f17b824ec40cf11ad090e66f700d2eb21b6ee947f6206fc038e89bd20d871fcc7909d9a93d7fec29bd82bcc5f75a806fb849deaab841fe8beee9a6907850c0e18656aed070d34e98e6dcd432966259a4684eb46a7f90e70f457eba8a04521c3862629e8e46896e920c658e721a2e8beca34c8820c391fbb764b980811b553c6f8fb90a1927151bd4e0b63bf970c2751834e9f415411d8845291c3ec6f4fd643bc4c164105a2826269c07c4a86b5872d51d4294202ebad99ef7fb7b61ac2e8a4d6801107f0e249570e698556277c9b732f1faa90af9d913e539525728f8a919ea6a6efca00cb1ad9a7bf819052d8a730fd6609d63c3ab44633145ca2a86eeef57ac0ffa96b4e1a7e154ddd80c2a2fd0e9276160c0b0156c28345a462b30b27c169cca40f52f67f1b6f704fbce0bac49a910c30acd6762dd0254e960109d47ce79eedb45f9317bb8420b86efff6d85ef82e66f1dc7e62afe91461fd9cc3a300624307c5894e2dccd1d7c6be045f94df96b23ce022f60ece3311d022f4f405fee02af5baaf7a536ff67299d151696eca5d7d1b55d6f01090ee691b7c33c1f36bf12948e5f64fc7f3a5925b26f2b802dc6dc48d4a62b9f85ade5ca1808d320bb95703b845480a6bc13e46f48b15429e9bc97540e96d68d8594a3f03740d9386e0ced4a346370ea7409ff0ab1233b38e677daaa31c16c573176c2e0c57a1e1bb522d8d80e00b6fd82790b608885720e1937d0c3d275c235b48c50ad2ddc8c70a753212b49d1bedc487f86993185e0d00b85dc5920a62ec9d8591e7c9b770ac9d540aaff0cd83156c9f448cde38efe9e5ee6b356c485622f1c2058e8bf1bbb7f6c30ce29fb1d608c833d883ac017e764d5f5072dcc53ffcc338e90c2cb5769e5510bd99b16a99a6725b43644aa37324cf60df7ff07fa3e90feed231369d7c9c7b4a74eae3cbc2e269aad4c5198f6a1de7cf9b3267467e3526454bf95dfeffda0298c97d3a28852f9b04fa74554957aea3200a84363ae645b3f5a28f17f1993fb007df79cecdfb0a1319255ebccd5115e9b4ab85fce317e912f9cc4d618aa558ec3d4d26cb9003ed008a99feda309629af55440a26d320701589c3ab4c9ccd9fa01d763c21c1cccc25a5e7aaac806a2ffb5091b0549796075148ac7edfc9588cdec24dba4b93daf6b2919119fd74a0def7f1693b58157f4ebdec4035d6e28172772af1d19a18f9cb8cad148c223fe9749519dc78c9d1f03bbad70c8a97fe79d8cc888fc898a9ceb0e5527bb8a2311d06cd4afa51f6c16efa3cb1386a150355e7178964dc3238d21fe9bb2df2f8034308b85e549fb741c74496fefb4d936a3ff6e161eff437676f8e39ad449311edc5310c9cbe66e63ad804d201a4fb20a5c74b3f4933c29a30adb127c46d6f0f8bf3ed7b17a0a0a67111c3e1d5f4fd495ee85e1d201d257519dd721727ed424623f1fff1e0835b910657d30c778feae630eecd1250b31838a329d5d476d9227cf92c4979668f351799792616d904620058f579cb9f81391adda937600f4a58c8cfae428a4e22d076d0f467f8d22df75800767d240f063868a1a0f02f9550a76ede5fa3d874108626ac07e3f6e87bf0b616f99a9fee2765b50bd4c069e477db200de6fdde3c9e6d88c4a3a738c880bc3b448d3445f3a797dcf0f7f28251186da79018d9c70c62d8b102a3d9281bd578d4d398e18ac4857be3307ed37592837a21491649fe500732ee5c720c513e0f30a8ed0d11c4501009fa74cc14c5aa9de24c9522b20ac139e004b176576cc5ebe8153cfc1a215cd6920415822e97cd7e36609ccb795e98547d458eb19f5dfe7429cc698993de36d030eaceeff63ec1be8af7b415bde80106c968e0095cb57f61be53374b770b63696fa376de105977a411fa39f450b02c78967ed4e4de52e4919d64d188458cda89c3a7adac8f3870b394138656497fcc52d88356ee3735324ef6afca03d405ed87162fabaeea47e5dea5a8b4075888a6c89da771af5bb8f53cc8fa8f5e7e8551757fedf58777d6f7bff89fffea055a0d27d6f8d341e314a9b48b832e2516dc069a6e57672bd110a0dc1648b7cd42dc710ce1a82dc0a6704e93edc6d5df686aa2bb14f011d6f22d94c6fab38800eed191cafb554afe73769fcd14bdfad2f907fca4a80dc6d1412612f083003a670c16376e183cac597b774b05fa4182e6c4f489afe77ad0c6b599d852d9f22feaf4e5e91eb8d452dc5956b7fc5b1874dd15659fae186debf29ce5d1a204125aea3d806e48053f8b3807048e36ceee745883549953f06411d3c363578d1bbbff77027e31fd74a3df182b31392334ba8f2d3248818d8d1e55272a63194850e30a6ac44adc3c83874033e52782227e9f516cb53e2ab5b47816ffa5d7c7cf001ef6a150ee43ed03d17c5e489a9e8bd9ea088074d07ea197b648835fa8f8fbe6c03375a0ac9506f4c920e91bcdbe96c312b94bca04856a1e72a289d1261a5647a18ef91dcd7de532a3172ad468941ec2a7170812fab196547f10c8e3923b4fc13658903600c57fa59ace928f6cd9a5e1ab4c342699739a087e79874ab29d16aca42cba088a0233cb264551416a0b2f3019a75c525840a8f0511a060932679801e34e646938af8ae2d99162517e301bceed4c31b1475ac1f2aaa84843c3fa69d58d1ae7f3806594020d6b5ceba95219dd4c3448c4dce336d561fa5d10c097d1ab0bf43eac41365dcf3e460ad1b3e5131a61270fc2154ea455c94806f2b7e64ea1d8bc4b772c82434ef0a4f4341ca1131926824fdbffa90d634b096d02c2e8a959a5c8675dde1b08426ef988d3a6a495d3cfff33913bab086cdd0b152b96b6cca79559e9a59a936f69933acfef18bd016d7a8030c0800c8c6f6841f7c3040a16e42b19db86c854e41cd844527ad2a1256cafbd7fca4fbae8aeffd3b4050bd568bc38c45cf7a3ee903c2356a71f4156329074399c28a1cdf6652beccd40ad19016091c64ccbba18be77644ddf3fe2992a49365f78dce2b0e9de3cc393e454dccc4a4b6ec4ec5942f2f3001249fd8f68e8ac966be8453d804dc994f347b23598a76dbc9ac43f372376220497bb0d9e8ce3d8ce4e5aadf27e121ab693e581c3a34269b25a3ae2155346c5ec4e4f901b4090b2379b0491be512238dfe0505475ea7250023fd6ee73a11a236684721646f86367bc1cd91a8bf1aa1ecd5d919dae8348a285873d6841d3b297fd95c0f8139ee38577399f07829d77660b0f7d2a037604c38d271617974e4066540a382ead132105f0d50c69e7e4c16746ed2cf0f570dca216fdd7e9b1edcfddf432ba3cec537392df37f0dd464189974efa5bd74fd77848725b0ca992e6886ce6a718e1ed00c040050c9eca061c09996a066151b541b2fcdf63ecee7ee06748a6e4c190c5d2ee038dfcd7ecd08d93732f4879a33c322830bdbc8255d5d22643b61205c95e29cfc18d90a270c6774b51c1a68b64c52f5d39adb85c277805d97ad3ca94f3aa14f9b71357e2f459eb1359cf2d6b0cc2f0ecbc041dd9efdeeea63850ef7ff77d7b08dfee9205fcc0f67f1e159ad114d83dcaa4b922ae4f661be14f51360339432fa2c0bbf80d47e3ebf4756408971c0c1d6076189e8f3f3ede59075a50d9d1089b1e1eff662694eaa492756a71005a883c3363d4c594c13a8669593373fe011745028758f5e4795b5bde3c7a90487d4b6e1d860be6ab62e32c90b4a6814cd55dc73c2c29557dd2f06c954715c1128f1333bf9dc7dfa3dae02a4cc6872f19c2d21a6a1c62bff49fe195f6a369e17292289bdfe4372e82da2efbb6169d64b844cf2954a2ee9661beb8129a5a7a43133e8c03eb04c12e17999ab4308a4db67787c464550d4fe2e4dba0c0cd6db66270a62ef9230eff0dcc66299c11abe69d8fe3a50e29749a1f992bf3f7e8e9e25559b1597d2ba5dc32167e000c905ecc6671b561b241beb9bb003b57dd00cdd41c724776b70e57b995dd5bc7c26d1040e9ad221ac096cb6e75b414f72e4f6cab26d0d695cd7862bfb0d976a097f5f1009a12b0d6944d5a4f33c6b472c90087baa37b2502aaf8dd26f5405722e546ae01f2d12278c54b6bfe8ae2392953e61fd39faea2adef2cb7c3de965adeeebd9c83db8061adc851e706186c8f7767be31ed4147f910993ce7efa51fc164209b4306ed7b2722f30292abe3fd2c86540f6ed78d8168586510dc14088c7eac6b9bb5a863736b112f55dff93116812a4477a4b33526606e58d68c1e232c79a540175b8f021905a1616030008fda52ef258a7a3efdcb5fa014f66481b4afaf445c4f588c28eb62fef15c4c92e00b0807abe92edf500b99613d34664808f1efd162845b00a2357bec38a28aecefab7c7614423fefedbe6f125788c2421c1074b1ef6a680b9edab258f8a17503a4c40364d3bf40820d4746a3704f0615180f9e49d77dc37f8807b83dd1121f095300f0463d2e55d680fd49cc390ba09f667a0b1e3c4b5456f157972012ccec0db1705dc46e9d2da009261fedb9a173864dee2b63f009c253c25fa4038affedd379a16bc5e0e4c020e66e6d1b849a0ee3bcdc58426146b025ac21cc98648eb19983792fbbf6a6420cefc0b32f065d763c05ace59d13e6fd02f09c2becd2d78ea1f919650e90155719190377755148bd81ca1f8806d7b71b51afbd388a881b4a1913b873f2db80ae5ca065a76ce55d045a61ce15bd4a438a210fc29707318ac4cd2c27c3074f0a3dd237fc1573d03c65e08d7cc510e47eebe326501ce9bc7153250baf15eb5d9fc6ee4e6ac816af919ba262cde569c950214e76c82742082704f8741a45ef2a42097d0c0de681e9d57b86212e5751045c87522551f7361169418efc47a807c1238611c9f530000210b2ac7e68786355ab34c390681dfed5f7edae65e11b0a08a84784c51ea26379dd8e7516c1961d530049a20300373266cc04048ea964699170f18a2c424e50daa7079d30b0c6455e8671f201cc4ef60ccf5a193d61d8015a2d58b536d1b417f0439eae7601277dfc8f75116754949fc439d6fb2640d4813cc8922a314230aadac86c2c8181e72f5e5bce4ef04de320d35b59457060324de8000862aa6dcb9e59a86f7488b010953abaf7133cef51eb55cd054dea86615fcb1e65d76b0393343263fb4264d2693d6ddeff27659c9b6c7123cf61efeac10f4665eecb9ec1918a20c1d055a175ce015e2a58621be766d0756ccfd080943909ec5d87b748dd37e8f26560c642c3fed849929cb2a1dac6ba1a0feefbd6cce3e51fb5cc3ab352d8efb5466fd4591038ebd238dd7b7bea6116ada4d7a3f40abefbd6e7f7816f898195189797343edf92c1ce3fb2e1ee3de904919f191cd66fda77b0d7a37bebdf3ca88f871d90058cbb8cf047f8011669de472c64e786f196265281bd2e71426c4ce531ccd4e1e206d787cbf424df1d3bb76f118fe862fca54f7b9f7e77c1313955b6bf922c79e5985e0b33487f8ad5b2881fba4452a25764064d5ab6c6bdd9d9d3c761213dc231c79d70afef8dd6aa86b502b3cfd10693dd595acfdece9b1dad5c386a6c3b38d5cf55e6ffd1853680c8d046ad69bc55620103b4a0702359eda575e176e9f6709e78c135b30b4e2883dcd189c9d2fe0b9ede1fa6afcf521a19531eab28aed581093d93647ca3764780f4c79ca08e451839c6a34ab7b691f160ef6ba4942b6dc7bcb2da59449ca380caf0c4f0c0d5e2da956a72eb7482e5af5cc35dbee9b90cfdcc2e24f7c81e1a1c76b4d34c5557c8d4312260bf9ac8bf2c153c97cfb64ac412bb960d728cfa4a16bf8ae67fbacccef249706ad5f4f6e69d0bae6859d63471226770ee443b9e5ed9406ed0b1068f0ba6bc66cd08dc555fc139e80211491c47f0206505c4520afd39907c4afa7f9e645d1fefa149bf90b0d4e69d03a0b29671068d06e5e0caca752657bedebc0f63714f2617da15df2657d4a11fb519149170d178bdcecdb3c95f493c717e7a150d84f1f0d27c7d9e38b06ce3b5fc0e6f9a301e59b779bd360e39cc7577c71d8bb4f25bdf39e170f76d4c739ca5de01ce5d2519b771f0fca37e7b171ce7b5e3dafd8f18839d755d27b5ed853c92f0617b0e79b6a21be4e9e3f1e9e987b5e361ecf17176c1cf5f17c09bba07c01520d27ae80bd501f0ce5a8af061ab0e7e9d8bf3857f77a984bb8ce2ae3f4dd47a373ec9dd7f3c25ecfcba5178228d39330ecddc7c3336586b99a1e430bf165a5850e7b286171a9933226816241b17e893d94731cf5e41702f9d435cf4a3f7594278bba185c40f9e9e3e139f9e9934353129d501e4a94ce44c996afd8c90f27e6dccc331575b9d54f45bf2874cad15d22cfe999f530cbb28cc812d4299125eecd6d836a6ba594d26a29b5153f51049d5448d22f4ce13ca39db95b1267b6e2f48d119c734e6be328a2592c16ab084a299d55055c2cc2554f291d2549892e2973d59e3262b198e4c88a2e168eae3cbd196468b01d2365da60337dbb949ed43a6b66b67a1f2562442a9573dca1e7ecaef25dc95570be22252949a196f330955d6b3d1c5bc4b1e224b2c4c6598f11e765902238aea41f79e9ddb2737a159cafdf7dcfcec8134eb08fdeb149bb3c217e74b0e2574e05f1092ee1925b91cc1472fc4f57a15d60ec3c1bd7ee95b2e699aba84732512c7d2453f4c4d7ee89e62afa917929e62b67b1ec76b2d83de9bfe192c35804c618c19d1d493904c1d8c4faf4556c527dba91e89a4afe7ad8e45d609427dcef6aedd9678106dbaf37a81373a65bef63cef4eabd62ce7470ba081057d3e3163fbd4c1c459a091dd99f5e716df03407afb86a39e33c853d37888b21faf5582464bdfcebd4d2eeae5570f4b878ad6bf1a3a5b3c198736223478faec612d7566d460790e520577e59fb11470a60e06588312c388342153368e2287683d10daf36c11b15f6dd9def96ad3e9221d3c5134f918c7c246374c39f969041cc645cf098881366b54d534c50d021839453f9c84732465ea230c1876014edb1488f5a6b8c35463a298d39e2e8c5673eadcb9f5d141f6fbf50049f519f5cbd3de69c37b3746adaa6695e7c75eee288a9c7da757a2aedaa3295ed5a29ad5405653a9d1e9d4ee7accd029d597b8247f79899adb3efd5ee7512e7784aa72d720a45f0f4cbe0681abb7bae6c2dac94b46f7738333bfb5eed5e54fcdb2d948c3d3d4eda73564ae7a45305e59bce399d91d218959c4211484d561bb40cad4feaa92c9d9e6ad36e2629f5a27d2a67f418bde716ea5546da196756da9e1751214afad453d9aed6869e6ad3ae6c6badd796cf49e7384cd570715e99f46a890972640f97fc7423b72360be4e62e4f8b18b277942c35059e67efa49294737418ddc2e3d36d97e3ab7033c02d636ee97d5e4305037a920293276b8b1830d9bdc2ddc753bb4bd193dbc9d93a8e6a95b354f274ee724fb54516cf624bad1371d0bd633df2e3e8512f8ccb9585b4eea9dc29e243ea36e2beda480cddc2ea7a7eada2de5cd2c9db3e79c737e9785adca4945c4b5568f2d7b7a19f5785599749595aea2b2c6e94d3ca58c229db2305d7a6ca7d265678018aff75c3995accf8be5898c9c41d9faa35ee684faeca73dc2777bec6fc69fde1d6d6b9db6a79a6de7a435f6f4acf0b4152f5a9ca3d3e8338aa6336d7c4a5d7606b853eb58984f58df9fd7cbc2fca8262d15dce98b7b9f4432de8e99d6a3fd3c5231404f95120cc7717d3b0fcb0c6280bd5fb16b407c751f0dd8e3eb155f9d979aabe95a3421354598f93446e6322cbb273cd4afac2dc4ce05ec3629c3ce69586a639c8c70bf50ca6b1d0bd5ad632f94f2d7b90d53b72afa7642d158f88b73966556ce38382d09e36cdd4efe22c78faf76e9dd2b668e73ed76b22ca31927559aaa3357ddcc5ae1792adfd24cd228d5a9731dc6de9776ce53b5f7c060f1c5cdce4924238ef9ccbb7332c26f99f5ac7bc2aa747b833b25652a6f14ed6ff52cf3ec37024e8590537d4005ead60b103f30030886bcfda8707e4f65e4ea5236bfce79a1e655b6e79c935d94ec492ca30921ccac10cb68428832cf6ddb6b9b5b16ae77d36e3a6dedc6f9e6a938bb499ee734155555d5556576e33cf95b2633b799ebf4cd5cfae44229f68b2cdc6e65b1e53c850af84c665cb8ca99a06a1f023bf648dd524f3e3733b719956d3d49a9ab2e95d28b99b432e35bfa7515e85912027f47748ee90e95d54d80234b0f2ff690e81c5311c2b84598a69761be6d306090e809c34c1b58d0308aa580bdbb02f45020c6980276e23f603f100c79ea3406d36391cad33d595335d871eed6c9b13d792a8b4f217decd50b3bd73aec2a0ebb6ac3aed2f0e9ab159eb727ebd8da479dc2c854b0532a377621e6b922eb787da95ec3f68a525b10e2353d762ffc30534613429829a389a017ea94740223e348c6c7e0df51c14e9d43fdc971a6ddcea97a2aa9d513cf9fb017721e6e1e5aaf9e8a536d2aabb94a6af5e4c9af9dfcd8759f0a0af6eb18bbf58bb73fd52f94f29dfc10fb46c53a75f93d9bb471709b73b85b9c6f1bb785163e1cd530c7d5df7c763b1be7859d73aa6e5accf39d4f8f8b1e520f4faa5645159dae3a4ddb795678de5a99d7332b5f769cd72e0aca9dc498d339e7a1be50869c57b79cd37047eb9c70de8e372af75345c99cba5baf93350d773fd38f5dacaeaaef5ea8796855dae764fbe8aafb39d954d9e7647b95fd9c6c217d9d29ab5b5141a94ee5f75cd934a0756ca08b34b420c3670c184478600ea135ca98a2680a19b841c787b18887337438020526282222871dd62c051104c5134a3485b1e80da7830cccc477d7e143a5638d1d5f4c6aea018d177c01050eb017a02022882ac42cf102a63aae9ce00862089d23051556901733fdac5112871b5bbe6cd14112610861b18231ac38e328a9891ec422560fe4f830164dc102209a804881183578854c84a0c3cc17305003cc165ebca4df8f9d7c434abf52b248d04ec0299c71584b983428e1c84116a20794c584b504378b0539a698e3092c583831a6670bd10c9ad62893c31b4d3449b13559d1230e8cc122381947d6122628744b5e8c83f347325a78f161ea430c068e68c5098ab0388104130db0e880e6a80a2e5600461725b6203383684ae1064a3c71c49a1d90f0e2d5832586268e2622bcc08e5ed253d2a3f42b3d5585bc22a55fe929232a86d10e8cdee8410a3396c2a84087184c213d4abf6e248139c28833d0e8208bf902328d86f640288d0e55a441861a46f8d00507242272b8d2841839309a56488f577aaa93aa986d503746c8010837d6a891861a59f4b0800746a851820ea216f0a093820a0d4a37e0f8763acd7cfff8b64276b78c356831744cd15da463b3b44023fb8b325d7cfbd562ccfbf848c6065e6857f418d22f655ac096164c916608a51e76b8c01452c8e0cc173f24bda0bf901eaff4140fc8b4c0c31847cce1461354ecd0460a311042820932603ac43040d9d0c670c30d1fbc70b1820b5a82971ea5dfb803a39f1f6cc00108c6032358193556ac81454c163e6b3c2009130c41041d68ac01224b8fd26f155d80a0838b3137f8f9c9d274090a175e9ac8c227082176f08a1e3380a2d54ecfbcbbb36806893276a083a12c68de7855b96105455a9811a444183fd8204b799072385029a4322a603f5bcabb334fc3b6f1dd73e8bbbbbbbbafecf6c8c537f74d833ac2f8eeeece6ec6f22057629d145458a15bb20893ef322c9928d4e8b44ea73c4526066b5ef5914c1465de7e2413c5984f2ac39da0c8d163b6f342831202ce43fe74a4ab209d259d89741007593afe9ec423337eea25c51195c5efceb9f8a954887ffd49fcfbf57c9649eab5877e12e8a95292894c8280dbd432b560ae3b95dab414cc4899ae22d914c2d1a2458b162d5a84b6b64953ba253d7e335ca106b32bd4605669ad538eee0fbfd47b64d4534ddda74be5b3e7864f99e2ecf83c9e3cf6173289947a7bf5bcbe5c2412ead2250b570989847e12d63e3f5d1e4dd7945ecde9f25e4d07f285b12995fac2b8d4633a8ff9dd7ca9d317fa077ac8ba9f4ba0155c2570ae122bb8386b678a529c9254da362ac14831e4904c92626c6017298652175b69edfa6536a765175b1b7186eb6196413a95732b6f46cd552c92df8e183395a76ef3f517defc65d4b703c2b7e3c4f293f85646b19f4e8ff9e6389c3232fdb04bcfd395b51ed690c1184d00c9c1f492fec27445a31ad471821fa22b7840c58b0b3092484a020d3264b0a507054234a9a1c1115f986e7849e7a8f5f627f60be9670f490251d4c783f2fcf1648f47414f3d297bf145bdf6ccbe70d2c828cfae33c34c5fa8d9f2d4da1047a9f5d88452b75f343a22f645624eec6ea7dfec12c4569474ea3418e9a45ec1cb6292722a29fde2edfe6eed6d882cda5c238eabcd35ac0002f5918c153e6c2469379e89455c1a5ab7866626751453836ed6773c325ad21a8d8e111c49698c90ee12178b843f927e3a041a9cb5be50450330743b28e7783a7af24950e2dd8a45b0d329db525fbe10a7b5763bd9162d68e9c9cd98603e945ed8fd7170ba90b86421f96427759a9f309fec3a0d648d0ca48e0d26a5b6466b6a7066e992c32c68c6a62b894797d1e5d04f07e2d153d15241ba75728f2a8fceb557796807e2d1873d434f453aca69ed197a94a3aa0c51da97a9bc6ca903aca7729d7ea1f4b00aeb35bfda1776f5aa0cf23b10931ee5d50b973cebc39ed85b91df01d6a3be50cad78f8a74cd4329afa19cf552fa75edbb59ec7e5950d6e30a0aa40b1339bc423fb464290024b215ca30bfcb8fbf90b8f4a90489b771e9d5b779318245a63070881c5ed8756db1c53c0d164299108e72b8c5c22c4c4861af01a51f43c8ef49fcea2e3f55fdae50835e1a9c242891fd7fa42067433f82c886a8caa7f6851b989fce79192a93430dc605c8123954b9a47d42e9f4855dd810fbd8656c658edf0099d30669f8e884f6a365d180342d5a90b6a5c1b9c309a32b84d228fd5083d12db60935788532237ab3d04c7919a2f2ea5529f241be0d48e56d3f5ae4cf6d7cfbc0dd2913ea1a1287cdea1ff8100f7b39aea4c719648b4dd517b2c02de6110422d3069d5417e24ebb9d0f847c55e2d1bb676afc03ff3226232dc8dfa7e26c3c53f3020724896c8fc840cec8d4a53402030f332ef77b125faae4a735d56f8335f803881c6eb11f0d662687599812ea08a9979f99fcb2a031d93f7a21441b434c52f810c41a6c5c01630634b89245186abca6f7b08117b06661504e9f876b1f9789c9c4047989633457558a3498892113e667511600334c4b1bd28fd560b189f4e99a0dda0df284ab65e91bd7e92c4c51833353235bca98bcaca957537e991a2f4b23e64ce7e2102143ee10a7a793e7443e108a00c0b334621335b1c9e9a7733d98c8e1f643c59841cc8626493ea4cf24892cbb871199ba01a8e3f430410ef37b2a484df9705fe621f22624bf2df6136a30a6ed4788991c6e3f4d5f2505d29a7ca69a42a82278ec76565e2b087a1b503d528fd46fcb72e4db7e402ffecabb47d74c83d35b4864f0a6e9d574d0d3981a9c2ee9cbf8f5bb6bac68f279113e1a9d71e2b9c66a94d21485210233e4e5c88c918646436a503ba36dd182342d1a909645fbe982c4b9d8b5108bae0c200986e4db6273158489ac39f2d3372eb1c998d8e403393e42f0e1c363f4e160b551c00e3f0dc60777f8903526946b30d027e8391fe8216830d035a66eb54faff55e4ffba9f5d6fb693e0d4e0db67169359137210d06248d4caf9aacdbb94a6990d0983922023314e61af9eed2656af0c70fdb505193fc8d8b90976e5127dac2748b7e97c90be7cb207f8bc59ce935899833ddc81459f584aaa0f4873d2a2731474c51984bd4e0bc601a1c1202264be7a4a73deda27460be2a8a74eaf20bc17ceaf17310d78b616713da912e8250ae397cc5e173fcbafc362e5b0c05997acdf96ed10d1344a6df057387ec1b29ca424cd4ab12958c4491a5c37e6eb14d75bf2d264489e80f19f4106eb76878ffc71502f23357d37f08cdd57420ce5d6f2bfad9b274cb884fdf80bab5ca39e222f874b99d20d7d9edac7c7656768cb813f937478423ee447e8eebb42a8af4117c848fca57afdec625c7db848e88708dacbc2d0ceadb62d247296b3f9f066b7047960c7e217ecd43f8c223af79a8c136a406a703c0dbb834381d046ff3e26d431b9806a713f136a206a77fdee6799b9806a7bbb71935387d88b71d09f1b63342c0e4fe3053f3c117cbed455cc32acdf17d556664f4d3815c18ce8717261443fd1e5e789f8774cdb3a26e85c9c474cb5351af1ed33ceaab52e4b924e9dd8da7a2be29fd0e4f453f27fd5b4c8369405a9006d37e342f0b924f3f744fe24d869a29cc90aafb87d5ed3a5d6ba54d60692a25614912bf41d392c45351b93424a74b094b4a29599e4a52cf85258ec4b94befad26c0681b3eb7d22cd6e0cd8c342d9422f17848f0251f3857499cf5f128f1241feb4b5642a45a00126739eba3810447f28149bc251e3d2126d9d02246846e853408088b166a5a7eba9452762f207196c76e014b3e3af4d1a0b9f228516cae2609dea6c48b7395054dd716bb468832259aabd58449a5b99a1a6c22792acee5739e3d15e7f17109b0edcc6f48a725f9c25f241e5e968739898729252490e0c55e29f19278acd8ab29471aac1ebaf0557e457d52a9c19ebfae2cf216f3e45252b7ac926d9aae243e3dfb99aea8c443bb84c4c30cf61910eca3128f1acdd5f4241e3df22812cf88975cf4f7362d015a2368f322251dfa49345d5f86a64b83cdd5346a707a51130cd6ad3033f2e956f5a194d2cca85be11d7a170883c16c5882c15ed3ef50b78a60b02701895e2f1acc434cb4f43325a7f4d343cc35fd749a4493daa50446992aac6601f3d36358b5fc54439baa4f0dd260dd0a31914fb7ea950a94c32d4695681a255fe41c0431a44412b138a21a441c91830e40ace162044d43951a4c52c2c59431b4f802c98927704064c21a686039c2044068b8206ac1c5193b24f150c70db4c42b7af0218e1c52e0458c8bd774eaa55baaf82834383f8916262b1bbc800131268b1338b14501451731639cf18312d0d24f12160b766613035bd260d34542bd61ba90f8f40b9b2e257ec3879489064d170febe361790d9a0acaac61f4fa723d894fa7b1e952f2f120f97890b81227e15321896724065989f7a50ed52f8c627e8b19d1816b3c43833c0d522aa5f6cdf049989aab25b196d0eb55f3ac4825b99492414192c8fda12bf1e44b76d7b758b724de62dd524191b77ffafda634e8bdd0e0a41489a77201c916eb12a623f19e170a8d1c6e3196a77281e5493cc9c793c459def3da62dd4ae2f1e02e6480b8e255438f1e72c0f48a5d42d8699278b28b0d329843e8a5339178f1c5f2e24b7a1a6870b2bcf842423f18380a9b2e9ad4ab7961ddf269577c252971230d20242fde48438c1444a8408e13fca4f1821b7ee8e2d5f373c4450e673c61822b4dcc90868e1bd830e38727aebca6f7e022cba60fb7981a2f5b6cbaa450afa60f5db911659cd2cfa5a69934cfb40b174d9f683ad6ada02906cb6bfa34d347d345c5f8027b2975d274ddd7f4e9a5c1b44b13030683c1c2b44ba6595a82bd310419b0d7f409d442334bb7d4b42bbe846233c8a888680e31fd5c337d7efa168b2f5d091a9ed1152596f0d20333c0f46059430d9fa3352710428828460a30571869f146181c72e0c0e18730aa9001134bbca6534f8a0b0d4edf86a66f44d3b7581b398c4d5bac69ba3623e26afa123017fc9c1b143fbd69bae20bf6d3405b8c2e4d170758f082344d148105961d5ed369d374ad90450fca3405e1c68f0c5ed369d274aa349dab5b6c8bb5cbc8d2f44d084cb722fde99b191ec07e86db999fb8c8875bece766f433dc8e7ece57b821fdf44a93ba155e21aad4ad5083fd52b7c20eeaa06ec9a506d3744b760b06fc214dc2f9904a4a95a62be5b109bff023e9484b1e7e5a4aaeaff4109cc816ef745f74d612ac751c87bdda9b6912a8814e4c99d3a2bd20e37b3333324ece524b83411268892c53d50a2e1609e912d0c7403feca1a11eeaa31e6a1708404dd462221935621da68dfa4c2375520cd6b476a5a442d3c57a62882c3028811534587a692a4dbb4e8dba25d42e000cb5d3a130dd3a436368ea501a653ea460be5164a870e385d218fa909a0159f215d2a46fd7aea4b16e8553e9b974abdaf02d5551faa53fe99753e9de9c5329f71e9a4a2df46b1acd55fba90e494474d116c4557bd315c8557b3b5d816cb140bab6eb2185410e1f765dfbe635981873861a6ca7238753e97b2a754b4d3883c4338da669fe24bee63d7fbdea85f8eb0caf94c9a899e3a7f4c4f08638930234ffe3e3991414dd4091e5091b6c471a597e5d542ea0eaa8a38e3a5ed3759a873a0d374ca79f6a01d5a9d38f06eaf5fba2baffa25f9e2be9b29332bf3b572fa925fb87398ba32f6d30c1030e57dcf06a07a7abc7cb14368062091b8c41dae2d54127f082cb1a659c51e225821d04f1c311195000ad79b5b364770e5c3c3232a2e9e527c3b48928fce0305f5fe417f65ccfb1c9132eba329097d6a38c2e949f3cd4320f6d3e7e29c4953d7d666e04c378e685e99244c495751bca2da1dce2c4d20c62d3181816f2066fb794602972094cafc25c31d94ceacc4b342f3dac60882a50afb25c2d79cb4b2e2f6198ae8eb03b8f905e1ebd741a4487664c88e8e52b898c97f22553a9d71cfa5738895ebaa43f2f815efa646a977cc9352f612fbd12b52bbec0800153b5b42b4a2984c1e98a2f59372cb89934d3203518d11c7577d3331fcd34185d32d1222ac6cc51d114038648c8cb161a036a30522d47dd1dbbbbbbbd5a91df718506a3ebf834487f9ad67c9c430f66aa6930cea59e2a2d8fa4b7ce65de49294bef9c93a9286577dab4ec5e89ba281bd4457d594bc949e1acd05c5997351a0093966b8a0f6fc30a1989b14836c9e6b40011867cb0a305154e0f1e37794b9a2e0660d70b4b9aa6ab014a5c0e60014dd70346d8d22e08ac20345d1110e29200ca052db33ab04b3f52f71a05010225052ffaf9f9f9f9f93132d2604b9c9a6c6340ff09bfb0a401668ede3a18cbe10e336f8b1ab43bc4287100eb013e02047c8508ec18d24502ce7599808348641f539cd368b773e39c8683add174f188f5359aae9ba36b748daed135ba46466ffdfe4cd70ea5fb737feecffdb93ff7e7e7ad14eb5607b175c34444ead68d508336c90a4d178fa299f4f2f022c0c37c002bf4d699b43ca61d03f8f01a3c8aa6eb001f8fa246c0d7af2fbc79073d6e72b5c1998ff3e1a5bca6e6e7a48d7d0a6b7817be4cc614dbf970cdf3e1239fc123c6834bbb26f0c55e9d2e66c2d205719dee8adea67e781d11100f33290d3161c26281a07b2a9583f490c2c50fc575fae668ba70d35c59ef84582c10744fdd20bd85f2e1a51248c0e334ee632744f38408f130131043bcd8e0fd3ef076c0de7a0b3e6f5de5c506c3eea713e1c34b396cdae33562ceb6134704b8155cf3565821bf01019c7dec46709d1e61842b0fc04d6f9debecc78ee53acd7558f3581ebb1d162c3be0a404cd898794e2c2110faf4c506072a3c20a46dacd0d8fac75d549a148bbc959db01dbe123c5eb32ee8b291648a2e011f0050820b196b01ab0a40b1e12061996f24c054969a08a52f622fe828691784898f48161d7fa399bcd8b6fe784bbd5cec0a3752e5feba2f8f8ee0b45f0786a5d330ed7690bb00971beb3e1a668ba30d39ab71ede18bd75db39a18fca321e52fe64e93c9315673bd9e97463b7736383eaee3de5939f9cbb38778bf322b55ef40dbddee9c4692e9fd3ba9c73c631d33c73dbed64f79e344f75d2b44c3b69a7d377d24e278ece586b9f18e061a65ed9fecec34c9b8d17376072183992c182e9a3512ccdc7e7bc7eda65526a9a952925aa3b6d9e159e5741916e65ba76513bdc7bb3c3bebbfe363a882e2dc9a6a95bd7ef186fd1781bdab4f1d6b310b1b5c11accd2aeed27c7ba15c5ad672edd5ac1ad67a1e962805bcfd633986e05c0ad67a26ea1e0d673986e9de0d67351b79ab8f52ca65b26b8f56cd4ad216e3d9be99613b79e8fba5500b79ecf740b8a5bcf48dd52805bcf68ba85e3d67352b74470eb394db78cb8f5acd42d1e6e3dabe9d6086e3d2f752bc7ad67a66ef570ebb9a95b2cb79ed7740b895b1f6eddc6a75b4adcbacd4fb792b8759b2c3640dd5ae2d66db4748b04b76e13d4ad1f6edd664bb75a6edd26d6ad12dcba0d976e0171eb3642dd62e2d66dbc74cbe5d66d86ba15c4addb80e9d600dcba0d51b704e0d66dc2d814d988b131ea9610b76e63a65b29b8759ba36e11c0addb9c894d566edde606f10415dcba0d0e62eb895bcf41b1c90eb79e61dd02dd7af6e9d68e5bcf3fdd3ad2daae44d07a98b7bc96b7be0529bdf55352b712e0d64f69bae5825b3fc5a68b1b3a0575eb03b77edad2ad772648ac23d068a868e84434741a1a127aeb5dd274714b46d38585d0744bc7ad7748ddc2ce020af1929f60a9a6bca4f46177f4d6f152b7f27461a2d90d75cb006ebd03d3ad03b8f58ea85b2cb8f52e4cb7a4b8f5aea85b0870eb9d986eb5d0398b09c87230e539b57442234b4fc526a1ec3ccd7144c0f10fc8ecf5c72e868ec7083cfc03f2513d583dfc0332cbaa4839719e655996659914e74e0638c093feecd787121ffe0119bb187652fe01f9f8470bfc0184c9ca9fc407e23acdc56ea789ab027044156400ef4fe2c76ec7052b4e3ccbb29bcc9fc4d8edecb877b743c45b73bca3715eb839b7c5d738ce6f76efb65d6d43656210010367c3381c2782173f7622b84e779e13fa1e650547793b3c7878ec7646701b6fa7470f8fdd0ecba578ec7610e09cb7e3c3a5548949bfb914d4f685fd9b77ce79a12c7a0ecc735c447a8edba478d7420baed39b15f92db460008fddce015ca77d2871eceda4dc63b7b3c4416fe787732d5f793b409cdb61e2dc9113bcbb9d267ec48bffde4e100f80eb343700e712e0ddedb8e04e766e5e0e229177bc1d21ce09f1d8eda4e01c0f5c00280af03a588fcf5d48c00e180c0683c176c08838e703ef50e252f8a6c8f3bc05af13d3a07504785d5183d6a5785d9806adb3e075440d5a3f80d7813180d70d1d11b93922727344e4e688c8cd11919b2322cefdc00cf0ba15bc2e4b83d6a378dd0f130070eb374220b8f59ba1225ec48de0a00f717ede7ab805bd756e68ba76c0e6cafabd39a752ee20c862ed80bde586de3ab7345d3b9426169aae9ba2b943895bdaa1c42ded50e2967628714b3b94b8a51d4adcd20d167aebdb951b261e134dd7cdd15cc1ba75231441ebd6b79fe9ba196a2d69ba78c46e4e397873f41613dd0cbdf57b734a4b0281c3b8008ebb1d284ec48bb27bc271274ca338615fead68d5bc74cdd7ab975dcd4ad935be750f8c6068c2728ee0607719dbee97654cef9c03df0102f7fe01ff887c76e27a5e254d887c7ee7e4efaf307d8c693ff01965d0f4779f26df0ea773218fe09e976709c0b01731f5e79788d98635d050fb32191587fc22346c46d2ae56126c223f6f623c2a3082fc51ca510564694e9d58e134ffe7bf28f78f2579e7cd0938f51f23727de0d7192e73062141b1ae23abde344c09d5cc64a048d0660119c82a7390144c0428464348e60215e3c624414425ca73910f00b37d56ee7c606871c7ce3c59cfa914c1754dc7cf09ebb27fd1f3cd0089d0b3e709dd67154f7a41f67c9e190a03e1a197104f601789a0b00090e12440b0b07616991431095178de000789aa3708287d734f13a98d7f934683fbcf493939099420e95916e47fbb21c2178f259ddaab3223f04e744c04c3ccd5d4a301020b90908093b3e1a19f103e4086e799a974002fef1c3e7c7122323603f72f0124f731296e054ca86540945a8498d8095789a272901fbf081a6857db4e0f0d1c2d9ebce7d744ffaf3d77998e90b97518c8dccc22c4f73242edca347173d98dc8f646e00eb91048fe0699ec304f3e0816402e6e14513b28f648ed6f0709de64cc03b3cfa448ef88fee09fd1d5f078b39d68f787829074de847a322da78224e280958044f73231e6e6a8271703ebc64e345ceb813308e179f8827ff644696aed3dc0958f3b218d97e348aa979221ececd89c71431c73ac8238b71e15658f3788869904751ccb15eafc8b8c9431e456f7dd539e9c74b98a941eb26c8917d098733627383b604754ee21c4ebee79cdb3ccd35cdb76e475b610f6d1cdba03ad035075720f7a9a0701a8742a15cfab471f9d38643390a9583f36b3bdaf524909528e732ceb911f0e669ce69db46679c93fbb2f82baf1ff4fab1d71f82179f02c00be783f0859d0d6fbd88170325e22dbdf5cf0bbba2b7ee796167f4d6dd1be2f50bf1e27fe0f507f1e2abbcf840bcf8b18717bf7f0714cd37e9dcc9b7546c723a75ce79fd98f3ce65b7d36d7e551ba77956e6f3fce68536aeb24175270ebbe6d835d79edbb20acae69a6b7743a1b0c78e05cdb1ebf4e661bf19b2d2732a3649c51c1c1c9d566e5e4e9357d3501e761e9e3cdc9c73e9a950dd69cba4d60377de6907391a1511fb900718b47312e5f84d07775ed7fc7ea1945ebc9ea671dc178ae0b7eb996b1ffd78703d525aeaf005a7886638611adcbcd42ca3db903d218738611e45d4adae3a7c3b6a48e9db5160ba25bf5161be1d270c188cda21f7b05e2855d55e8a3de43c547598abf6d24bbdfadd503be44a838c2bd037ddb634b587156813dabc6c431b182d9db9fceea2f8f8ec0b4560b72c0df606f46d5a42d426f48d42e990dbc32dcbb787a8a16fdfb26c409b9676e5867d6ff9768aa325f60cc528db63b7f7bc2a0af8ed2d8768908bf227472314acf9688402352fc247231dd2fc4d7aff681454f4dccca44f6e62bf2a28d46386abe717d72c73eab81e207e3be9d84159bd94609476fb8159b858c42828f6361f8d82b23c277167d6ab7399a779cd2147e7248eaeaa4e5d551dfccc6dfda2809fe94c2f7329dd3af8f4a36bb8a270c8d56328ab8720033d1f5f7650eea5623f95f5ea5465bf28e05707bf7e6083311609e5d0cb09460cb18b3448acc0082213d8200b971258a1822e6de04046092aae2852b3b0987467403f4e5cb921290d2f4cfc840182074f98c00b2d5a9ca14676861bad5a82254c5000f2918c165bb4e0e1816068d0e808498632ac5be2f4c9d23d15140a83c1b0f868e6630745c2607fc5112b7eca2c8b17191d2155a121a22d5ee5bb9265ad48494a52faca182d4b1eb1d9adb5d60cdf9b69b5fa90a48f9e752745acd382896c0ecef842c59ce1023a7900f3edb4c374517714636c0eb208e37b4716519ce13854f44a51a7ce4326f1d334edb331327d8c696c98658c6b3cede981d3e2694f0b7ee62461017b20c415a53909f809c2037e7a04c3fa94043f5dd29f1ec37033906ccce83166769b51070f7925856e491556c842a847163ebccd473259c0d0483a9bce59bdaffe546acd497a98924adddbb3d2eed94f701d593863a6657b6da6b6518371ce8bd44773ce39abfd12c5a452da3a6f967977aee49cb251e0f86b29a753fa517c69c5b3d3542963adb54a4a294d7537f8b160f6d79eb5571ccf1aec0eab809d71c0b9c3911966ba94525a6b9b075c8c2594c1328b34d618e7cf8c69add44bdd3461b7dbe9c984098b0582dd03a0f48752a323a4a44c68a8bba8b3ac6b96654a46f2288946876920ae2cd06043e08adcdd32ce53a4e16f7ae028c69194a398d654663db670a5e1e421de0cd30ca76badf5cb33e3746bd669bbd2254f6f984de7ec76e8a4f35e2abf3b69537ab34a7d6a6165a419b5b6d2ccdacc567abbe532e644ea74465aadacb5ab6c154c195053e8cc1abdd4fc22d8aaa0d8fa55c1b3082ebaf28e974fa76d239c54e304411206270641f2210e52def121ce7bc76030d80faf7982b83243444412cd9820aee2eff81a3f9c20f40b32abc4100789474ea968d974c545c69ff5a67c66b1a595524c69cfeb34a59489a462f3b1ab36762a0bba108b5ef7f3b992b98da034a3d7d6fbdd23567a2d12579ae6deb3e9165cb76d3aa3adb5566bad4bbfd37677ada8cb4d3a27fdb20696e6fcc25a5f48fa486d5561aea267de0c0d46d78278f91a87e9f4a61fd2a792468cbb453bced3749da6b2e2eba2bd923e35ede5773735d9b1e9697e3dc5d4d8444a9a533127bab59987d6663d1fd2d983569a691aeca40671183166ced82d5cbcd09a65599665a9d4bd2864d99af6e92cad8566dd68d2a861f221613eba986be6cc47efceb22d718df49159a8ec8e34ab99cd325b977c741a64ce944d0f95d6196348e367a404b96b77cf2ffcc254df2cbba9eda66d69a5edd9a75a4a2995a19b055e69189d46b79e6b74ff2f080ece4fc7b552cf7f4b0dfb696d2991489c18e7a45efea6f58ba1c7cb507fce9e2fa8d6668c837132c6c1c138631c8c536666367af6e1dca0f530c6186908627266b3cc33cbfa6bd31eadac3293d2d66ce2b6dabd338bf5d35aa3f87ead699bf751ad6a56d3b2fa31cd4be974bae2110c06f3e1155b521a942e43cc913e6db2228a32a66f85e72f7d1cfb5501ff0bcd34bab744871cd210aac8b87ea12ad259269323c09129f6b075e9619659cfac53c93e9c06a9758a735be1d568e6797a997c51b75eef871b5c82ade70627cecc387a094839c45d1539c46f371ce73cbcb7fabd1f4ec655f0636b8b7c54156930fa1115141bd20f65c0a1def3b58b4b37f770f330a5dbe6746edbb67da1f661cfa8a535bae86bd28e437e9657de0fd3d487f4335ba374cdf9c5336836457eb4d65ab194d265a8b8521d709c27514239c619299d9f9c7376e1ba5cb7de025ed785d8182594a97352b69cb3ce8f31c7528f42d0c8d9cd19dfdccaf7e757c7ddbab9c6a01b93434ce91453c6cf868f5e5190716aa52eabb40ddf4a747e58ca0fa7c19e6d6b566fa532469b1b67ce8943299d4e854edcad5a67d3302a9df299d75abfb849a933334f86fab2bea4d3059d14e3c4534a4a29a5544ada30fc516a60aeda979462d39284c5a52897967e989ae4921b59f6eace7035a0a4a494a4032efacb4c8232294a59ab9452ca1865edf0db7962cad14309e4dd8a2f7c07a5d65b6fbdf58b111604173d19eac7482fa5f3de54ca87f8b044872ca991121c993670b75b32ce8c02e72ad2e90ddecf67ed56419329634c399125cd6a66b3cc566a468ca9318e0518b240f8424a69cb3aedd82476bb9c5e3799ddb2e79c937ac7e3834a2b75d9d309fdfe32a9ede003476393fa418c5ea32b82105d278f391fc312360f03c07918c7600f23169d87f1061fbdf8e827afc3e0f5c2509e385dee5cf44f023f7f7632e6549f14cb8e05af1d144ba3a4f494d5b9432516d9ae5966b4318bb15614a898b984b21a8c4eab9dd99c5fadd72dcd94b6aacbae421a8d317e617bf79d3326344454ad56b5feb90d94a3df8fce3953a939bf5073fa454dd3b448354dd39294969ae69c3395a2b118a3cb59358dd27b959672fda6fce8446d91cde563df2e93baa5ce238e1863ec21f821eb1bcba2798dbee5918cc1a65ca121a21fa0a01c97523a0d9b11e9c82815d440dd5c421a4e1edb87863532cd965884bf507241f3934a9faf6bb64431618a7c8540d6c9ec081d1d9d6e49d796b9d53c6e9e05a6b020969a79aeda897461cd55bbf5ba8044ba64e93a5dd433c82ee3ab697ba43dbbc418bf9ed6e56d0f73a594c65863ad2d1b6bf59942aba98e95b4886b189e8a0c1453b13edd0af57086cfbe10fcf87befbdf7b35281d88c91a3c7ee5a91d6fbba157a8e84d967857a68a54f9742ddfaf4ec7eec5a882ff9c5b80aed67a57e5da4f758399be0c2ed0b6fecbcc3e95628037d2ad8e3dfd377e574aa7e1bb4f8b3a279c89dfc7a3d9d4e1f96ec1df759d11c86cfbe2e28cfa84f8753d7755dd7755d773a9d4ea7d3e9e4359cbaaeebbaaeebaad3ee743a9d4ea753d7755dad5e6f6dd1902ebfbba5ec9eddb34a99654ea775dc6037cfe334d85a72c8faf6cd711a6c4781355d77aedabbdb639742019143563b4bd64a83d0a86599a69a4eb5ec88c69a5e9110a41e16f93088cba52ab314ec23cf22cad2290070c8451a948dd3411a0a2e4f17fd4218be37a79aadb5d65a6bdd3eceb50f06549e2e5b6badb5d69a655996655956c3193ec412e34a7a6c1d7cbcb0d450b32ccb28a58e039317752c3cd3adb5d65a6be987857af6ddb98ad65a5b6b751c98bcea87a5bae54a2821e4f9507ac7488274eac59824ecf9f08b318974d93d91df5ee3ab86882434079633696e40c79717cf97f63c57d17b640db7372f38ea5ea87de195dd8e148ee7c3c845dcd8797a5ed8b9eedb60fda8c8407ffbac84607e9711e0d849c1df951ed8eb0a4f0d754801060fde90638e3a5ed8b1f4bcf087a5f3f859096178fbe12ed83baf06092b8a01fdf8dc60c3eb4aace3f5f3e3853f1db063a9014bcf8b73cce485bd06fce5b99ace711ce7281f72fb7461a921470a3296a0010fb43802e9c5b94fcf8f8f8fcf0f9317f61ff085dde727f5c2fe735fd82b11ae3e30d80b7b10b017fe6ae8e982831be26022052bb0c1062f9f4b85101d5c5e3e3e38dcd71554130c967a5dc9d6c0602fce7d70005f57261db017e7383079711f962245e4408b9f2f597cd8e2f5a56fb28831262905539421e635b9f8d4c0e708336bc6387a4d1444b1050f6240d1850eaf944d818f7c135d3ab248d5ad25e5ee231933b025717c777777dfa08c3f9229a3c6b7cef8f679b5639c6e7d61952259b3954e9d14545841e654e63e922903c68720124958a42d7c7a90e50d159c404889962b5e008b030e2038b8c091a948420755dda1e22acbe4a0a84c99bff948a60c9126c4419975d0f1566697301f9deb80182058f3ed610864d02da554720a7b843431d14c16df552c7dbb93c88619b18c30df0e46115fc851860c221a2fdf5d7c116b00c53716597c7b175e7c1187956804b3e16598517062f085096098b043add9298432c68888450d90d40064e3db3f31862801ae01044b0d6c503024893805cc8697a171bebfd0036728eb14c220854d10ad2fbe65f78453f3eddd39b95ccced1482e0281be3db67e7c49ee0fb491d621215c06ab937f87e32b9503a29a5744e4ae9a4b206a7f0e713df0540157d37f9febe67ca2c0917503be43012f6f2c99411fa48e68a18928f64ac58fa0aa65bddcdaf82a9b5123558adc815a85b6105f312f69212f63aadd341d3c59a49d2a99ad824be7c8553493a3dd32efa6a2e625e7a0cdbcc4b8f619f79e9316c342fc356f392e9e7254543d3c8353edd59b4bcdcf23294a1540aa823a8840c7765490c32a5660680000008002315002020100c09c582e178344d04c5e20714800e7a984a74529989a44910c4384a19638c31c000000110019a196d132af7690120ee74a835c5af9be19f9ab647821b03d6d8c93d81b6b8d0a8cd4c6d06fbb4a2119cfa6c52f9e3813a1271ef9647d05724ca87f16151dbd7b7c4223a63696629984669c69f38f53d083e156d27c07cf1ba6b95d53be78e79bee2b2fbba80362f430d4e537a93c49ff6ce71cdf2536ddd8d394465f905d88135bc4899a30b62666d361b0df7d8b20c7d9d7e604d99835e21fef701cf4592a79c7a7550aa12ecaf725b5b1990148dbf1cd14390033ad09bfbfbd3845c951a6de8939708953ba52750998ae77c3363dbf1f2a8e9b66abc81b66fc3f89c35b100a504cdaf22490b2fd49351382b9d2a5367e802e0c204041202076b0d740aa0a2427b25af83b6616c3e0f5ed9fe3831f54627a60243204bbe87c0b96b56764e66d2f5bb34fa6f199040c28764f7f35fb2836d16bfe4d90d8aa8682b59a6fb6ec007d3ec2a81d310fd79fa72f3705c7873489e78e4feb410b23e32c4dd5fa10089d3aef07e9bfbdf0af5d2cfcb3d3156276e003b36d60ffc1790ec48f603a3027b4fc10dab4a76ce11c6196c33d258730f982c59f912161f982796517da77221cd58bdc4959def13f8238f2d17af2d758491137dc458c6b324471f094a206f0d69d77c890248013431e872a448c9fce8daa3f103a58925a134a39f51046fe4c9809b1834512982b978f672d4002d18ca576fb014df75328b1c05a223ec62997637942820fd612f9c846968ffe8b9970c908da5a001d724df66ee82f6ae9c349d888dba18850782f2765aa6b694decb1444d696d17ac1f1778b0463bc48c0dc70d48a7179c8452401994164ff82c706441e495ca8f72df575626788b30e498145e43d762eaa2b9d8e24a90176dd16053c79ebd0e64eda77f59cd6f8b7e415d8fd4411c73da76d92def7dd538f09a508dbd347eb7a36da4ba1283f9eca17db05bfda0ca83f5174ec83a1478df6911c362d5a111468a3630229dcca4d6439c8d08649723aaf82c8c5ef77bb7737ec56615eaff9d081144bbad34f46f1a510131f9dd6dd54ade4098d53914e03868f61e4e657a8df940c9dcc7aa1097d2e492afe783402047f3fcd7bb37120492503a0eede32aa9a231809318e137624638a56f4c3d8486df41840852b7ce6d135e143d6d03a4841c8debd347441dcc0c3a01c62f3f41a110ccac370cefc95c89580f1868c07aa9d59ea58e15b456db3e37bdf3929415e405f0a0e26ceda283044a413c53c2f6d8c33de84e25ba8a0b4658d3d7a0cab6f8d82b20983404bd71a76ce813686217ba15196a01c82b9a517a1d1ebc6151fff856ed13595e67117d2bc05afd12a8724f18b7ee874f61bf95741cbfc8f22bdeafed76f2d672521cf64932d487c223badf4e917dad47c5d0844b767d9f6a2628a55577938f18928038828a4a28609adb24ab8a320780015226a798eafb9a769d6bdd287cfac5e0cdbc431e8d116cacc8d3011759d48a46802d84c16fa4570ec5c55e47c61d600f1a7521b5288dd70aece09ef11532042cc9de3fe71af8403dc4381aa0e1c3ce178a9e760d3f9b5ae0f9c6d267593cd9c87ea02414d9c62d09f0b20a073c9cfbc6fe0529743d3f40ccb5421d78e80b49242f4d8cd1698f520e7066ed94a4dad0e44e998afba4542eca6586511c070b32ea39b8f82c55128fc020dfb36d0887fe60a796c88f39c0eaa8ae0124c4dd2255239b84d6922ea65ac4f0f1daa3554d73b4954cf6706f789c5d7aca6a3d2e3ad26432e829ff14176ffeb3913eac1784025a7033c49d027485b7c0e6a83f8a493286164037c23f3e35913c36db6ca084c8430692f9f950eb9930cf0e66096cdc1cdfd68d999b6dd11bf18191dbca081647486c6c41d74ef55c0086abe80e3cf7af17dcd01c8c48a04d2c77117dd4ae09358099789c9a319b24d816e4a55cc9de288879e492d11870b4679b7c71710953c23fbf628dce27a4d67f851ad6ab9273149f52f78f90f4892f9a72958fb1432fc4400e62f589f21e8547cdde573a5273921281a46f2fe2cc9e132445f6553f0daaef0508d4595feb40256447cfca5ca7f608ba108acb9ae03d39face9da4c84bf32fdefbc3fe47e63ba65ce96f839c3b25f55102f805d039a9389d3cf117061cb2bc9fe5678226b5f70a0183cf10f0eef96de4b81b74ed21f46d359b9acd31780b8c9a9f879abd7d2e67569a48a7f1c36443518dc02cc5e05920082a2a8df06c9cc5610abc080fe1dbcd110ac256824b67358ce09a130734c831bdb4ee9815b9b4881d8bb29b06666bdf9c5cb0a999354841eec7d1cdb09777560b07cfee03435c606041af95363db905b029c620a2e1e0720edabb218b9eb3773494605217ca8ec544ab0ed64a9d7d5fbf161f1ab0bad61ff1409b8686439e4d678a866dcf5c95e6520087ca106873465e682d1d45527122dd0c2ee1116b23e1e7b7d60c5a9a7605f5815fb1879a0e1dcbc61327008fb634d82c80a3fcedec5aa513384e66cbc0fdd1bfc804acf24c1852037e66fc080ea22481ad1708272fd01962ff051d6557fc3d2f1a6226d133410c5a903a03f6ec4ee542b27054b4bd2b041a98d81c09b6f0017b0651e328ba7333a32de00de561cfce4eb75e407699ce0aee926f6758bf491b3580ba16dc4bab64fdf641d2a18e68e3aea0d5068f1177c159fdc0ad58f2d0330f133a1793c1c100cd4b1589f172d2d1827b2144d26fa79e8a7a2d33de7702a11427efb04cc60d309743dc7882f1d26049d73fe9b57b39f5dfc9bd503804ce207e29948c464bc469853cdbb5d5aee8991657bee88bce4d3773b33d0faf8c576af72908e1e80b50dc1261c86bb731815f4eb1db39c57850f3f243ee525da8dd5804920ec4efdb35453b01db8b5477c61377a59dfdfc49e377c4590dd024190ac6ffe24727c677023f7f507990843ad5a936440c2874db33c4f90b084806ed1904896bb6b384795ff54fbb186767cb4073b5be25b6c9305902a8d8fc1f90e4a1f29782af8df46815621c486686b8caf86791bf76b036fc484ad0f3f3fff31b9303775e2b6465d9471084a295fe4058d7fd0937fb02ac775e58f28b44fb2af86670bc6447a392d6527492b83ca34affffac9f49a4949c673354605f5beab7b13fb30cae04e4d4c67f80bd0b8b6396d03cb4243cad90a5d76ec6ed8f3e0401fd1bb16140c7bff5d1843047e0d0fb727c8b15f48b768f356abd6767d3a958148198ed40917290359595d8ae6ad1b73eb444fd36f92156f7735f29bb337efae7103b209e690fad4c51ae294ac66032d014498ec7fba5684219b6e4b1df0bb6db8785dbbedec9b3193c8d12baeae4f06e720dae026e61b6d5b68cf282021b50f8685e0a3228f2e6a63c0ad0cbc7bcd705704af91c88393246aa81896955f8e431bf45b2aadd7d40dc188d942c1e7734dcaebcc34e922b1d13edd3d674bcb6f27db6efafbcb088f9b374f329702a38de9a5d68379e9b2c1dd964e7f932604acf72de1cc1bd0b8d5c29d6b7853cd380bf6d4727cf94643f9a44bbd2137b747ca42b71c255ce0f2f483f4506d4c76a5539b905dc8fde9cc5a3a2d40c3e4418013bc935f36a24a50ea45c626d2ee3c399986d10420eae5a5de6c92af31f2366242c9d8e2fb1c600912477390722dd556183be27327492b5befd4744d5a0d8bb5a9aa3466e8c32a418f6aae1bdcbb01a8caae310743c2773badb0ce818808af43da320c1fe1aab66304dd0e2298cc2c43a0070ccb04eb265db263a195f18af9dc2f87411972c4de59d871db004d6c234e0674683a7592ec67c564b04909f6c4bae702dfa7d656ed4ace9b3a0795785f9c45a311c9853020b82d909bdca360d4541f634fe55ec01e0282c11f971c4ff69603370f8f84c2118adbde8ca943595eb69ea300d1388bfd485979623a3846189d8f41447190e5007f86d2f3f9cd9ca7da0ceef708def0bcd75763ae857b560934d3aae1a3d5e5d25546eb4691431961e61fbc670727cc04db429a1cf320e8a2ed92f6caefe2e3b4c8a09be85dd7720d472cb8f935f6b3ccb1e1665efd1333c635a1c56ea545513348ceb295bdeb66288dfccb26c4d714266d9fc883bdf888f22d8bea17c3a5c74106d8a413645827e313463ddc29742216f2d2276dd41eeb6dde40b38353d8ff78216e11acd9c3e290d54bc13034a5e39c9c08fa7669f369b4e39c80d985bc02770bea5f1167ef7da95cc0c175c49a1b6a912c3df508f7ab7c931a4df52570b7bb2dd3abb79b3bcc3a44709459e9cf8fe2129ffc21cfa19216b1a33deb94be114bc67f34011ca99dadcb0c1cf411f10b647003557b382ee99ce1f3b2cc19fba595a24f33bca5e12bdb78bb361f1e1a9607b6acf2d71a1f10b6205211b9724ae51a1b07889606b18e4dd312f3cf6b58c26482286915bfc9041c6f94d7ccfc019134a0644c5c6df12a7728e8c85c24df6aa038f9efa566201f891d0554c78963d3ae0e674145f47d19ca1f9f42ad0ebd529873fd38b240b295400ed2c49b4d22d3a589cf8fbb841aa7caeb0b9c0fd74e30f398d15205d31deaf11f0fbc62fdd326d22da8837c0d8eda902ab2c84b8b75f8bbe9cfca0d5766d534c422158d35a2ebbe16fc49f690289f467a478aba93258b5354d5754b4dbc9b54bee2034b6a0e9f2b24f1ca016d018403415c8c6bb5ba0dcab708fa588a86247e63545fac311529fdd6dbdf769a6fef1426ea94b7d9d8e153c3f0371358b364b4141a7dec54303badd439d3112cfb9bc067adabff78974b4cd78a6176f42415b338c1e7a8513bded7ad95fdd612352dcf06e8b54dabe7fbcab8c1801728c6641f132f1a3f102c936d80b2c488d45b8212a2d20f2f74e3672251b0fbc9d464edf4452692aaa47b1d227ad14823d7a936feb014b9cbc3ef6225467039b4b82f52895ab09734393003a266bf137eb7989c83091f4d9978cc9228fdc959dbee22e3ae038280c960b20887067d3bb6d6dda33ba56e455ccceb4fbf62dd7b0f7bd3bdf5c2739e94e79754b0cb8b68282a30b2ed11b60fd1cb00f2f92b4001a96f170498089cf61e090abc3313325253c3bbd7a71a672d2ddf28493d2d923cea6018c5fb31e756852e285f0e99249ad138e66d23fe102b0296b46eb315a4c5bb3ed4defddcbfcd1b1b2716f525141fe4e405aff7ce31dc60a3aa489bbdb337ae54bc2657b6ca74134cde0277efd6a5278e26cf53fa0227f05840b48070eb8ada4c6e6bb2f0ad5c5f04a8689df889b81517f35668b9fe339bc0bd7db90e8a4b7de8f832d79506fb98a1499b80bbc3613f444920ee2b5125147f0418d2c6c81e5d58322726b39aeba30a3eebe2b13e5b7b741b84926db838402f68998e06e91de091fb037cd66cca79fdf28e70d186b7b04204559a065ea74ac227565cac8d94519649a1f3e794719ec2e5a35687f2c3c28d1b825e9fcbe7c7476b61da07c3c08bc735f4ca199f3f88327bc53a1276eb8ab9902a8cfd166c2e650872b619b70f14b87aaf13efb09c8300127e92178fe41f54a94c24b61fd4ba8aa6889022575d117853126fb0c0918e7223a677652a7b3822159f45924b4209b5d7e52e8448e8bbfafc3485d50e2b4faaafd4d7a44920ac55474bd2043c9dacbbf817dac2ccc008c8c9ca9a07b1ef57afc3a19678d2ac74572e6fc46a5d6c769a3f36a7af78a039d0020ab4e63a0b137d7b3099fec9135247d4424e316afef94f40fc6c331d0a3cafe121c50034d2584028d24dea06e7ab8f4f9fba1f855548b6838f11080832aa540311b90ee97a3204eae1f6c8edae815ef312091a8e3126d88e6bc7d449102a6ece9283800d8310dc789d99282b9e63df4167371d23d27c0089de42a3a398bb44442277aef469420d1fa4b22912247edca2994a0efc8fe4a285e61daa0088a24855ffd75cd38a46e265490d3e2a1fad8fd597a291b8d3dafa7c30f72ef6bdc9e6d64beae386a713bb5f8686dfb9956c5052f04b17990b70ade29c60d88da320915c5d2cb0879765258b5ec304f84cfadd3892da0e8eac99997163964d7c55e9b83a793415638b7391002441b7baaf3a5fa59e188b72856f481e73fb400e50c73e8b5abbcf984932cd4a2bbaed26b24465f9020c3188274fe2afdea5c6dcbd5d351c1e7ccab740e963a3e51e9515b0b55cedb81308ddd46c26245a978a9fc3912f02632526c022e3e4ffcd1ece6fd6d4b1d5207e11fb73b3e428ed7fcdcaba102ed7322f214d6a83da6ca50089546ac1f5effd806b79c542529c93de198298bff596fe3a722bc435f950f3ebcc110e561dadc97ed9a486b18a138d38a848d65256f5fba945b63456b706634a76e9286006829eb4cb11067d0826686b3fab5795d27b102f3faee22c1d169c172dd2f5f85cd75f8041f6a92555941ed226d38be3864297320f9239f77d31fccba73d0c27b870e1660fbebb85c7e47b66cde7a5a5a66937b8bd671c7f362e88973cf62596031a5ff30677202ca1bd00038b97ae1b77d15d22c1851257937c256f41c87f633806c2b9153df6464320987ae2786055320d224f5855741aa3c4cacbc6eb8c15b0a108dd3848ebec19197d3e576c6c78238fa0a3919493f9246ae7e54c43c81024211884c098625ada13addbbb381792a8352c1b4073c8cf0492e1cefaf136999ff7dbfd3d58a6c1ae3bd83c0d2aea164cba0f6ea3161dc97283fde0123967f3f8205d727b2d908b148a3f043b0842b3aab7250c4c90f33726da76180c10114e1030efba4fd58a10adb92e68265e9c13ed1f5e842af22b3ee2efc4f5e0a990f260248169b70a2b99c4d883c8e7c122177a3b85bfb4e7a703f68eb5c77230b38207b826bb9e9bb11047088db8e2d588ebf093c51c82d82783d008c5cb11dc309e7f6e394f3bc98ec192e394f23769ad60e1bf1370dc0787c3692d9080b63ae4bdc36350b64c6738b5a6d53278a928a619cdc9aa8a2e2a465b8dedc2605188a616a6596a537c02c31486348889869f90000e0457bb66c2715fefe69a057681708f4060296fcae9de18c9fd10b1cfd2dc5d16e8fbf3a98718e51070136d283a847aeea6ca7a30c70772cab0407062f1b6480ced76d58eeed07d038c1d72a4b57eea93ec11e47d1b78c46796cfdae727a688e9808f1d32fa10b93934f0e18c54c874956d0f9985b05493069e8145377567e429db321a933cda4df80b80e6c66bf72ff21c3b57da471004e49866c5a195ba8336a239919616f9259dbefeee94a16ffc078b5c6e37764d6c2cd659bc67e2568f36190585bedbc4170acdd50ae05d5a44a0be9dd801b8a2854960839e67da4c8e665ec69e17f9ed54b5b762d03881bb25ee483ff5e0723436a516a65092a18c928b26267e5c86f91807bbb7cf13bdb92b3e47b2ffb424da660644770e6527ed7386752328b29aca840016a929bcc1e2b1b2675ba001627f61863b99a7452d3f83383143807c85375026b93e52ca050c3bdc151f944ff874c400aeba31c43cfc851fe1f3c0d72fb65409b5b95e4619d9fc95fe1c17191fa86411b38b1b246465435499f36d67b415674aebd38d6d41554662ea6fcd88d9f96838df0dc68208af894c8117f46607ca25aa07ecb9be2f208f2e21a3bcad2fbe0fcc11694f89c8c0393722db074b8ec0db63c6719f6f2ab788b2a82288492742ceb883d4f1d425ccfd61d9917d6b3b62d3aab62fb78cd96c8b1a6d2e5a9bf4059196e4941186b7b4674e335139b95c6497ffd885d7eb52b7596d44088a86a066a013b958108a251b98bd636ad100a0cf04540b398d8731a24d2a7629b35e91deb6bd09127214d47806d1695221db08583c55abb7dbeb84a8804cc1b8c606884fba5dcb783e9461e6c49581a24d263070e4ee29c2129da460fe876614748aa9963193cc04c29551825253fcb710b8079c802431eda07ec559a4b9071a5362838c0bc7c2c350430322c4877dfab0a2a1b0462684b4040f5ea1d3fa1aab374927ca5b74d8e9a287ec700d7e2f3a610fc2b83b3dc3e8a090390b25de9ee9633b16c146b11b1129a20801fc78892f2462b3809166c4b38470b320450b7fd7b178e5c83da2d6ac8cb84b34fc2b3c40c858f842b2bb9efdbc8ca2c250b290b5c222a3d47f056d8297f44e1949205685c238c6a984240c7d18b2a8731bc0200a0f46ecf4fba91f499cfff2fd83a82ed2d83b66148e2bb2cbbaf0bbebecf15f85810af2c53f9a37265d60cb11984132b8c9352925f24bf51e7134eb1d39df76dc10fd0c661502cbe42e90f56ec22d68f796a0771caf230a306f1d27712647d0478b156ce46509354663d4cca6aa4659acae27b2a2a78e45de4ca732fd7177f4749dd3e45e2d435dc29100357ed8a07db50a7d8501441b8808558dd29165ca95c8ef7805a8951241f0d5a898f4c6400093ba8e34e5724f515d58aa83a21a8019dac09c94f24254b483ae71445a8e6f8f886cf04383ab3058419217eebc495fc21f5e101f994f512b7c36cdf91b3ee4e7f7877efc5bb3ba610172f419344390f850d87eceab5e14b67bac4542619b30084198d724e589d2d12685aff460a7d3dd08232bf227544aa536021f0bef6e8cb584c1b0b0e35f45f3ff117fe5d00e6ad1cb487f0fe289615e262bb74eb64d1d2f6081e15e4e6b875c2bf8af94f2a68a20e238959fe052eaf8ef5eb98bf607010abcc757b32ef3811fde6fe207f918e88ef397af786ed769b0cb24e94eff0a0e73c97a3540a886b9ea896ec190f5e2f605db1615408ed911b6ad7353919cb3dd99838d4ef22bc4ae30d3aa5bf6bf0a9ad2219fe8ab3b085f29ea23696e27d42f92102007554ac752de923a302822e932b915960e9a6c1403bae166596e724aafedcce84fcfa06ad1f94da719815fab4cc516ad7131fc75508f403ef0d78cb8875c640c433180d6cb43ec011e0fe5bbfcc87ddc6763c067c5664dc773478ab976247eb2a3e0d55bd1da4c1a424927b860f93ff5e66aa4e194bb65c676418e2929280aed8b4a811c8cd1090ebdb6012fc406c0486683434dde646660f5e4b20852c54ba9e7a3dff1e2c499c05b8201219a0dc2e104a63b998a87abbae24b6b76da59a4da5fb2c1c6f62f585f67bf6810f54b245c4db5ab912a494e95205414451bbd5f3f901fe9887529f126618173b04b962227fca7163a09b5401c545eed4b408ae5af042ef8f0c083447c4d7475bfef383a558c212aaeb2a6e816653236bef7f6516e22fbf9a788b89e979544e0ef1b42ddb773c1819e592ba7c06297e22de4a9d9c03fc5d8f52924175fd752b0b726e4d4dc063d371c879759c35e66cdcab8dd38dbc61f83bdadd49a6b563087f38c79260684e5966453fec96d84782fba5829a4b3be0e69ea5b0a1a282be5042268e923b6963d03d6f70bd04e8c08493d7ef03762997adea07a1680f4155c2870ef58600a1c314841f28ba9590f345a15c0b0de396b9630a6426d65ba63920d8d9b774bba71b7445d987d3ab2369e767e8d3a9eb013568358e403834065abd2956de49a18ff0d42200144aef7ca9f59f3bf84eaf7c20f3818d1faac373c99bc9588946df384595109522a2f14b61b65ce12063062b5fa1789237fb10ba4212d0c365ecc227a7c744715d77073ba8438938f6209421a80a1e72580f93fdf6ea55b8ce91111665c65c3f20cb3df35c29511508592360e0cdfba0de6d40967a6e92931841eb65ffcd53e471042251fdba03222f77fbe46030db11434e287b4483a1fa1aff58bc46d79381d59964fa48120720f453eedb3ff7df18aa8ced48fc7087a092f0481df97093a637e978b3eef81d165cbbdd4fbb6aaf48ce45d6f9b2402349d66084ad9063b7372c6f33819c51329f55a13a4b1898776a697d090a4ce4b37e6a62500ddd2c0b103aaf48cf4a15675319f91fe748fda8bb10456278b0d4f6b03ff351b31b6bfbf68adda1ad090057744acc58c2cded3a9c86ca3e4300f590c6f4f373e047278e3c8a2fd195d51a4d6884af682ee289ab2a37dd5df5ae758ca418fdc10d78891798fcf982c75ca8400cc49175bf32eb95e354667a70ae588a4bce6f06c711a01f9495d6319e3e4ecfeb94cdd88b228ad70b79260ac971a6eb571e5c6061fac598090a9b5af2952ce8dc21f7403c10487045c33a55fde73fcdb5a55567addc5281fda44d9b2d819fdffe692cc576a17f83309376d4a79a60499e7771d28588f90b70ce9e2ccceab27110385707fd3a637dab289b593a8ba147480ad7d8ac0664db15f4d68e99d26457fbb31e512ca84a70cf9322c7f0026e12bc3b43e7c36440c22f5bc895153bc6aae9ea360465885af52bbdf92a3c83986867f8e66537a2240bfaf665fae04ef1cc49b70660f5197290dde1ed33255caceb0194905c829566907cd21e6360bf2d681ef45fadc7b4535f65ea3c563b4a726b76e911a87e4576a8a21e2d562b660d6a4e7ed6e5d11238f8e050148df5b4b0760967f3a8911e69183213b87b82eddfd97c14855d8cac0e186a36f83461f6ec09e7d556966e54344b679f92cd8d64e304989e3739ddd13a36468e0cb1493cbb8aabebeef8d070420d5c318542210b35abfce11a119d6add007a778fc998c7cd06ea0e1098ad7cc0ecfb79df8d1e1fc356f17d433e31a886f809f7258a779dda564be03fd9c0f5480dbe3e43719a31ee4bb2f7a775a4fdef485b7e54524d539dada14fffbea9cae32e0237ef987185b6afdc027be89729da8034a4132f31201883360526fb645c68e1ad04ed15da738889832bc4983da197ff7b1e351b503fa61a319eeb348d8bce23478dacd82a1c78673412517de7c6dbecea802430c52fac4ba3a6ccbb755b3258788da50cf139c22abc413448abcaf0977bba9ba3649fa0bd5ac8beb76853dc30b5197a0b5b1943757f8514095eaad7b1ea65af98b4c93c039a69bf44c801ca72d45a1563dc0edffaa956abf126b25432002574334272e4332e637b2cf9e2b150fec429639ee52328de55b6a206b85eeef673ee497e71972b5370326a166a0792d3c7c294a801a8533f89cc5ed0bc9401465c0790c6d9ed358398fec184242339a9d2e6b5f5c15e86bca0c4a482bf894a174d8445abbbd14bd62c1b3eef0ca51a0001536a5c9a596181810c39c4ee0a2e1236d1ed57b809d02370a904fed10bf7dcb63a4dd5701433c9a6ba7ddce5386087feb1931833c23b1fe5146c7a9d1be6ddca03593be8ade5e7747395f8063996feb66cf369e3a1431f77b2442ce82ca6d6edebe0173f67109c73e044118b93e77faa95fa89bee0d16e5000ec26e65e255c454a107e44f950943947aa455d2d48c6fd1e17df870eba241ffca0559e4497d82448b31783aed47b8f5f5581ea45ec75f4cc80905230bcec9b973f3081a5f60e815b328c9327163c380183eb2ed921827e11deac5588655ca22307207a2817cae4bbfdb24f4dbce02a2374e641bcdcc00a2a0aa3521b170a582f510bfa3a949b265ea67c321b276a4e71cc33c5f24e6797ee665fab51e6783a0de5fbba61984bae89a57931abb558b990daaa48d8e5e1f5f7f22fc3ca5492551b3361b31cce1e931e61d9cd755402ae62b5618308b343ad2ee81e305a87d1f255c1fb502d2222f2920853cc54530de502e33a084cb4dc66f4eac7f7eeeeff81efa57c196aa6c514c5d9bb10034e09fa9e4853292ff718724c7c7e43bce5116e0c7d27be3640407e9152a5790ce9dfa90a7de80b26851bae693c91bda9a93189953167543b802d3aead4f771b83d72e902ebb117c04570a47f07033b1726d92cb7625b017513e32312d03e9cf2d211a0e8c0e1e5169f92303c1191cd9872b698ab010229f3f944a97de7f66ff3ebe00da58c5152866d2e46730136fc9896399ae3b48a4d00bdc2f289dcf070d42987658ba4b34b1eb2dbb474aef0098a8a98a7d5e35d0aefa1a6033406627201c0112bc1d49562953de61e06bd6b4b6312e00d6b831863ced0035b6170e081c4c5bcfd76059d76f9a61945aba429ec60cb8101bddaf2b301e449ef452e43e15e2a5ed93667027cf683be5d181811ab9bdf8a20e55203a1ca404de2ac8596d845100c2db1d07ddb955e8c5be5acccfb8bdb0ae6fa73d3669ee7a4877e88cb2bad19446d7c1623574cdde4281cc35fb24a1560558e6009c17a60cb1cddb2c70a167021b8e45a9ec57e8c93a8a7116f58f02f7e4c7c02e8dcd1d7f1bcff997943ea2ab5ec447747ac271632bc1ef16e84797bde38f6ad08faabba60d61057fcf4273ae7dec10457cc47c40eb07e62d0176efce8822914b654f43691300ed12d42d1339d59eb9bf3e0dd620db388482cba7469fc02f016eca6e5d294d4cb5304499f2340ccad60509ceda35aafc66ec2466fa4ff3ff66ef2144b1e0119d73e8e2f18e6dbd74f4eb54548ddc00e545ff20e34204319bfbdd8a497a1925d7f2da10f6da8cfb63d7919f364d24ba5ae6bfbed356ed3eba081f815e57a0bde9991d8df466839b8dfada5822d1102b7c6e17f08f57a677db14894ef3585d8aeb0a2201647228eae687d7240a891faaad596aab5cc4ba1f352e9022e87d17f14001f0c8dd9bde3957d451192323bfe110733e3fd4bc59364817dbd23480eab0ff2d5d485cacb2535e4e110f96134e1136a54df0196c866413ebcf544ae065a4eeb2e1cffcff5f7d18794a2cf4d2c3de22458f3461a9af3dd6e0b4a0da85af499caa9812d45570ec307e6d3c4b0b4b82ae35a28a42a30dfa7342c3c5a6e8770c328f296ee085394925b968d1441c6b8489652921fae941037a5ce843ad351f25db8512ff2d0939696722f35906392af997dec2e67df027e0c9c20189021de533a2d5a65abb80c0ae86e8dc6c258f34030150c273dc4e28a986e93e9907934a1006abfe0409f930de4fa480535403504adc14fdf08989aa0a65ed7e464978f15a3292d7a0a4e3dc392cebd7a83214511a3921916e8ca29c754c01d174ddc5d24faf236007527b1a1657e5aed19a6030ee42f936dcaa54e78652df7256a5f0503a01a6e8306872aa8f4adc8048a2f8c1feb25eea77a29feb6f3d036320711d470bcfc0b522265c2b0e27f4912e53b357ccec905feb266c1478dc7467d85ac233312a917e9586108ae7db9686e60b1179547191e17e9e5b2565e96c3613dcef67b18cbeb734506436c52761ea586a816306de4895c1d72d1fd6a08d31ea50fcb05d4d28924d66beac6727ee8fd5b69fbba12294e87e82296224919e2c2aab48364bc4458e9c32a2a2baa318e0c1fe909dd33f074aae47d55b5820f42a408c6da1d08ecb5929b634d9cb19a3cd4663c1870a56cf4efb86f764e753ee9c97eea38db806b6996aeb8bc375bf8f9dfffdb55b041ea254ca94b771cdbb88ad9b23c3604d0e67c455a9c7b9e6c856a0d71290f008736b428e5ec90bd2efe8aadd5dc035bb49b6166197c8a81f66e66834f1d45cf757d626ab116b075442472c1cd1e4985e4d7b474e5f39a87b2bbf2fa99344f562adc9ea126d0b6b53ee6c92d6a214e33fe483d7a772190e4fcfed5de7058fcbb778b536f2c1dc7150ce7380fc590284f20f5c0529489552d0636e210cf7024bd0563101f9b8e43ca31c1654b53ab0123384d0647302ed108bdc14988a5805d513c6cd2be02b9949fac87064655e6e2d5a907a8b4cf5a013e69e4a324e12d275c96dc8fff666d5ccea35e6519b0790a64dfe7ff07395172b724a04bdb6b1b75f85c3229bf28b7a69044ba08493158131f42b96f2c0c3c63c6218ba52d0408aad955fba0a05afb0ae5140735002050ce28b3a830c2634a3b819e5bcd3d699f13ccec6118f0be5f4a8e04462a46cc1a4b2d284b4bc3b3dc2957e7eacc9ece4328060750b818fb0ee09072a94114731f3c5238a2b96fb5f9c4f78b9139cb21f89216fb5ae556f19d3b32818c3b46f561cc932e75fb30aa314245de5a8cf51bf2ede6f10bc6c0a165717337904dca8fe5d38e865491b2ebe4987735879711d929b83afbfef9154954840364bfc88eb7cdee9da3fe618825e2038af73bcaa3c6d6531842d0508a1e8317ff7003b6a07eedfcc014c50778c0997d06795dfb2a3d19eae0d34c2ebabb707b47722b43a9d15e164efda5e19eb20b441275b9fa5c79b3774419f4f7051a0baf8fada50e224baf6219dd2784276cefced07983838c30b31b2215de615c2b1e41dd8a575f0c4587f4addec0c1127775159303403c2e328415494055a38c860c25bb49f5173924a229a37facd6a813b9b271a96f0388a773654e8822471e4846d02571e10070cc9bf1a3aa32c8f92d318ade89688b0d380002bdbc7dff1dd7dd61c547493388e215a51076233b6946cd235b8ad40d0da77adc288332cac6d8f7816d5f1b00782efed00e973710fcac08ee99b0f90e10e7bd55cf02574538947be99f0d4d084a72d00ad1c99237c59155851d90dc62cd82daedfb261354334610d546f9ab1e83370900f6e8054241f6026d47224372dc60e544e0ef81ad94afef1ab86712d0cf524141a38c109500657b1dfdfc4a2b1c424409870b58817bd7f850cdd68948144142ea037cd37b080aa474d5fe2c268f5bfdeb580335c87725a367ecc5610192c88fd42e36aa56ee091ed6305c6c5dfd1848b0a52a2a051d644e706f644880d3df89e265e080a4f8cf3dbf64ea4790f84238ca73581e8ee206fdb6ee8361d44590a76e67d10cafb6cb0807df95b27d7ed8bd79b23ab56ad5c0d5196a45eaa5487d20e59fe3895afc05f8c78be87c40a68022b5c155f4643d51f67a54095370d12e5522deb08b426d900e91c9b408a529017411c6ed3d62f2d26614ea2077e0584f6e761a92d8ef3b56eac0850686d83912d5d60c4bd0bcdbbbd425656419060c4106a0fc145ac74071bcbde85f0a6ba08fe161abf6906a06c6afc1614e06bf952302b9457077dc9c1033e76780266d3f5788b805404277e585588ea20cec846a99c9fb20fb82329dcdee0c57778cd3b3cebee5f407762682c5c867eb9885b4a0ad441eb48043feb3cc1c04bfde32ec0096525306cef688fc37511c1b16a8bd1df78a8da68467913779aa0f8d9ee0452b06dcb62c8d25e7624262f9b40bdbb4c04e6ed5730a526c060b881dca532088dfba3b43aa12216193cb9afd58a964ab646ecee9998342420ff8886d893c02f648560fe6758e57ee6cf9024117d859ba3e9d7766bbdcc4385347ec0d607d3623a15a1d1739454b4469349daa11b993f8f922f12e3b1b70d14f6e0f974896d5a83aa00e5b8cf48eb6b7b3a961ce71768c711558aa0152e7a405925d625b44146582c2615a739a3546fbeb3128b034ace74127901b2eb69f335a9ae21eea5d660e89c105bc43e172c5b4b741178fde63fce44a78004c29e106fba7dee054fcc8d556e3809227e381633928d1ffb12ceee68c4e0aa403618bd2ac25932dd1c9921ddc6dc16211c558560beede0fb900ab122c2bf65067b4a19923858b3e6c32f64f70c402b2c421eb60b5c02a048114b4005dc28278fdf5db38ab2066debd4ffafcfe59cccdd24f9d5d59ef0e17efd7de66afc62c070c2d2aab84df66311f1a01fddd47a27d9b043fd86bba4ab8787ac6d8dca13399c36f36aa8b7f551d9cd752b81e8df5ca42c42c7becc0198dd97f71868859c7b1fd4a908e3f95c43bc24358077cfca76ba724dafb765f8ba350ad872d6bb81f3712d70324b51a92ca7457f9185aabd35d0c9cd0561516972afc7317c34cbe865eb011dd81c002e8aa4bb6701e4e8888c9d4e1b303d03703874f5406fe1f924e8dbf39dc1de98329f8450e1fa552671b9dbb8e216139f4c3502881dcf352eaf38b014f458c8a7dedf05f9e371bc0d9a280863023d8234805e211df73e70faf1faa6aaa081a7783f7a782fb4e8a55cd7f6951f17ea456471a15a934e765896e0d1707d35c84747c094129ee2109c420e2288c90d19052b4090147462bc845219f9e8194f9da2820cc51f6ca9218ea9a2026b2538b0803c16665f48a8c23c55ba8a43178e2f22deacaf6334199caa8f72c83ead47f7bd9c85efb2873db88e1bec855ac3b1dcccb8fddec90091ee8464cda2dc392c352751290fa830b5a033bd6da14dc894227889591bcaca45ffeef989f5657d1b76721a7372328105b9eec537ab5be8a6d11ea66ac8eb20786e3ee34bf530a33e0152662bdeb1264c5b967d8e05117752797f1f1f5a02518d074a53fd726dedd6346bf8a502d8abe64a2c34c752884cf203c3769b136b356e831530923e9f668879b8dc91887fa614ec4eb15f0eb578739a762da68e17a9bd58c663fdad82b5452566a821aca8d4d64f82ddd98cb62a14068558c7e4426eb973d728d8e89300313bd3b57f87eda94bc7ade937c7f8aa1882927f73fc1d4f1edcca1ea3970903c46162114ce772c2ee4f51c81311d8018138869af3313bf3f9defb11dee59d993dfdb4d2c42f029170425ce101a53c9730c98d83bcb37f261b48e836462fde36a6fd40901db6aafed91c9eed1e347294b80e92a19356397cf56417f2065a9451b4d87d5b1eaf0bf33dd36bfa828ea5a8bcf4d8c6fcec7bfdb2e7c2722ba57cb1f536bcf46c9548ee4621886cab0327148ce22336ad7b9389558c47d16b479128687cc1f1449192a516625c2ba2f884a58a296cdb252a24c7acf62665dc22d5b5d2e10f1f76a7fcfb697c7dcd02012d2b526002a1af26fcb972e70e51103719830fa9e6e41832cfc1d3461dd9d7a720dfee77905448d4d0ce45fe70bbaae09334f855e859c7f5c5b07bc75ea2c12ce11c7f8de0c8729e99fb813d0f7aa98402f23921a31f06e8890f03ec13fa6f09f85e53b0076130abf08f5796fc6468f60ec343ea9044c99f023aeed78e1be38d9d8cbd2286dbe6ce7e59e0f6bcea60af2d3888af0ebc5306adad12b868af7208917e1a2110e891a3fa9d80957423f2845440b908d4bf9db3a49b7d60d78092c5bcddd88d3e2ba58cbd1993fc116360c52a6b97d3527c4365e81a7c94adb92680c3fcab470908b951ab76435726cab7c37eab48e72259f3c2b91a77100756af2b57730454f6c704da5f3350503567d3b8f2a17f1c4b45be8499802fbf06e9c2e442efae4bafc000546290705edb09708047504687de1467c0240e64b7bf24a050e775d062a969bae4ae57c3644e1804ddba60d7afa59e16a4d998054f5b55d167d274a66a95f6fac44f09f6502a1d1ec1139489f98ce1b853b4a705c49b4dfdd8a38e485560412bc87c69ec48a47f59651408d96692df9043b6aff030a39e9b3bdb8708a234d80f698afe0d7fda71531311ff32b533b107d84dca8b1181d3348d1af006337cb49fac0786646b51389bdaf8ba2d8dfc4ebca4dcc7546136b907e034c8076060c30d4db4ee6c3fc663507ffebb939f7a3be06bf7da45bd9cc514c87ca13660c9c59edee3101fa6cfeed58208e23069eab1f64654311b786e58116e9fe9c8f5c42698bdc6dfd8d4dac751018b2ec418df31a109338c1c8fd0f7b8efb125c59c42889a8793b0fbc678101f8db89c753a04caf3370b014f2de400237309c542abfa3412ad89035c1c1bbc687d4f22b38fd2daf44d07b469b1d3502818f4919e675bcf501b71120e807c9a9e2f540a486f8140c7cd15a4c68b7524fbaa92c84912a1878e87a32824dec1e9af3e1c8f70df6058629bf10d9a47be50ca3fe588a02c5c84f06a21048c4e23e0415250a0be221b7e23cd2b0635640639b6970b8d2bc02062b040cd3273c8604f37c203745f8ceef81afd24effd90daacf954013350e504f29a66a0831463e28fe684cf17c38501fabdb8df1f0d8548028d0ddfcd2617d1703ac2d73da00ebdc1c843d18ac355b286702ceaa13a795449cef25373bc4770d100951129390a58ff558d12b31e74a7c66ee07ff9545aa5b9be6706489b03e18b337914da1f91b4c570931755dd0be6411878bdbd8fac7357864d6bddac8832d2056ad5b53eed93d0ae048ddd2b664544617ad267f8c04795fbc1ebdb0e3929a8912e53c216445b00884f21d891bd194d2d22251ac7ef11a6d9376607840682f9a3fd9e6c990b78af8fbca90329d6ef999dc8a1d092487701f553ebbbd2b2423c478e11e0879eb26b82a01fb3eb2735a16fad00484fd0aa25b1386309ef3d73cad932890f445740261a2fb65a6bcfdf2b3f12c571726f2e573f5637deb9a2f14a23f0cbeb53c261f54fc6fcbefadce97ceb29095cc08648b4bbcd2578a9a65b692eca395a48a50395d5fa9167eedb48f7d7b31ea4b183e87e1958b8eac9af05347c4c6b67a73303f15956ad07fab6537f98153a2accddce3270d2c6fbf4db2de80661cac088a708bbf80a39b0297d0eccdf920a7d5cf4ac1fed2a894c49dde6a02377e183c382a61010f3cd96307c0c7ab5b6b70850fb07682da3be1f6201f4b223367ec0b6b46a48d2d98cd425c615515c1e8a114d00e96af0225f214f2786b2a524a49767b0bcb5aacef0d1e296b6e90869e5c89dc949e913c7d5058dc971e78d10cd681522a880cec6a41b28574322b9c9e2a714ae20159c0d57ddd8c4c0c74580fea153c2b085dd264da72755d3c33186bcb2bee2af021ee3957a85c23f77f7b862f278c05699757f739c05ecd78d5739b58c37e61b2c915087924a563d352db8f25a5c4c85700565508363e97ec3c25e152693df70d7979a32a2bb09def87bc9406821d8e53893405f24cfcacbd296b60414463213660dbb201314f439c5501acef7c0e72307d08cfbda5388e9ad1c6818169ff2e0bdf1133c2cc59e7c2f112acab35daed1a22f103ff3c4a49b0a1a2b7fa0544983588d9df3518aef363a6e7791b717c69f679c5d7008e6436f0864f9210f78f4155c0308712a41df17498a96a45a64f172189acb840c606a91ac09b51791b617a60df676523f699fd56ba0fdae09273ee6fdd0a21e32b57f2164a2c547f8b9c612fd1314548d143c3516b074b57919c025a037389b0c949ba970e7d6042ca8266b8993df4132abc031cadd2ee6a6f5a11b703d074172581e2ba3b2e72448ac8044e3106dc17b90d134e0995348935c922535307c581012dc7beb8ad0193d640d5211af1a52d19b26fd7b072116a1013b8758e1793566a409dfb7cce9acf0e92065274ee90db7e7499f67226141822a31673eff2803138e357c33ed93a7bbc1959655ccfe3e2914352a993415c6b86ea76ce9650afdf411911ba6b757364c91225f52a75326f29bab8491aaeed06f6d7b2b380981aed75bbf416183c40cb10cdd518f7338fc0094f77f26a515c155949c7a80e8fca0f62db6e328317c02c78f9b87de0d75ac0bd1d6644161613c1014c96f8881d3999a8faad6ac1598a145ecb96cf3bbe125f54c617a3e32971f098bd8309aba2ada623632828435c1b86a745b08ef787daf349c54262b6d0747b5517cbcd962c9d9fb6cebd485eff458807496368f16507e4e714b2bb1d35ee831ff255c99d23c770aa62869ff003517632fa552cec3105ea04a7b0c01919cb73554739e8ec18ee444e6d639c4723b121b42ccdff9118edf520a26c6cffa10e25dc11ba0550302ebad8eff1218df35b3cf1c10d4fa2e45f0840c32949b49654c94b921d36a4159cb1727b68613d0a73eb18cbea3c13d6863c96583943d94386d5221219943ad6ab8a95c846fbc3c2363e0d3fe14101232d236963b54247a8619806a3fbd1b12e5390cf40bb45c32892811a0f88b617ea52c16a445056a21a1d0d1131c01080d09afed6870779a8d152c0ed0629552e4be780f7612b451b05c8177b6534ac99709f541b081168a9a94db448ced9c8e823b03e77410be720683f3ac40ff39920914f12b80341091d41ad53956d9e4b69d39837c11394f66a7fdc65e31bc184d18d06c958259cc5455390c80fde3b9a7bb743c40458556d6db5695ec26b7d351dc1761965c7433113ea5b3b7b1007ad8a341d41bf223e95ada871e28030d8870d83e8a0a8eb3b9e491bfb6bce3c0cdc78a23bd4c7c7138765cc2ff3c00335184fca90568f975d432c0058db419816ee5d6caf4d7f71ccab01aa5f2b5320bef6c66acd525dd0b0a0f9230f755788bad30d77b13bf2871b26535c02a88130323d469b12ea9b7f9fcc3e4a47d03e19bba35078f37c57004fff591bdf86f6d7b990f5dde86d16eaf89380e0fc75fd50cc5ffa140200b42cdb20204e32bd0894653ed5438c2b9db023359f1b3b84227c660e3d12321f74e23c45d0860f9a33352340455ad70354c638197ce0e2b07b9b348ad190e7ef670fb1cf11c2aaaf73b573b180db98e65949e6009f6d944c8e623005d168e4c34d5b00b6cfe48d4840896862e9dda1fff7236fcf9c207936539b9834a0c602a1d19148faa4a42d6d7e7ccd20805ac611803d2b3de0d6ed03176be670f75e88ffcdde348714d803ec1e8d93395f9a3837d18b26cd40cf813e96d9d670c210ed67d617382423f0a60dcf7eb0bd0ff7814527bb25a905c16c4a097d37c01c81fb16ab4e586eb82350217eb9aeb7056102d8755643148e0f7d46a291004c7df1f466f68dc45eafdbcbead8c680c99309be6a380045101ae0c0fe8759454e77cb930b5c3950ae85daa46c0f022c21493740c89b68505b781eee929862d916025a137ecfc8ae438c035aab9f9a84af1de8c3a8f0c55334d156f250b9d3944c62b39b4df81b0c4f7671c7a4149cc512cc9a0972975d936ae5f7f9566a0156661230d80a4e296e1737af851eeb7d495aef218ab755bbf7a41225265b0ce6ed20b4632f391f8e42e1ad0ac93f107426452d9344e0ba8d4970a1d5631aece246e35851027673577818b6284c905ba159507f0a14eb8d3570051fbdf00cb6383214561cef8c928e8582b27dd8b059a750df9e568740cc5a9caa77b249b00a5ef0eeda6134507b1a9f19c6fe2709a5d49c5a5a484e549f1c2e1bf166cca16437112dea3696936f4490c6b6bd9a7d6b1f53b6c1bb6a52328113e2a86681678b5ad640d3452dc4d2232fd10e7d27235e876634d13528817a21cbf84aca3d91634276a31b1aa01c467141ed38562c47f516cdc6bdccfbeea2bd0fc8886911163575ab7a5ea555b8878c9a4c6f91639c0cc94764a3200990cc5614f77d165c09b21150ecf1b0d819b534ec0d25522bed28cb2d5618cf8220887d7ea420a90f906843d1068391eb3c5982666b03a236300dc604ce9618ad774a54ab55d17355d05bb3123c460c261f390b864f8f3ab0f206e8afa40615e5904f0d4719c0e9a628f8cb83fde4690b751e609939a519c17cee0f8c39939305f5e83ac9d220385a9ac4e72ecf9fc50696250d625481218c5f55130769c83d85c3dc83e0ac0b445ee7bb589238696dc2fc2a12f41dac991dc1b0693001ec0250e2a192aba0a93e0d1e77bcde246a915bff1bfbefc05a511fab98d425055073c3b8b337211d83564b8fbb93351ea3dfe77f70d67426070611f470965d9f3c21ba1255de19e07c3b90ff04f34aa5468ed81573eee83ef05b6e45461783df38691a17ad01ea8703050a007b89e350d920bc796702ad234965c6cd3f04e01ef5872a1cb3a070964ebc4f9fd810c80cfe2b1414aa63c21f0ce4dfa5a36a195cbb3497db7ba6cd162463601b170a3a103259114871224fc078f746941ab0b5060d155e9946684a95ccba37d4f9e9a8c8dd3a8ea8f08b4928bfc0ebac520ec199e5193cf524a533b6acfc83b38400af369c815d3831a941f38b8a86480999b97159df94cc4a8e3579a0a3603d78513c919d6df2d059167597a24633a00214a115fad22b16a03cb5780bacbd4023960c431fadd214ad3d63152a76ac98315147ae924775087c7332f85564a2dd6c4a0c9b8e5a4ea04b5f68271634900eed27170e78496eb2d2ccaf22148200de507de429bf94fa9cef36485a11c8f9e33ef447b309447b1d889c5836e06127a688e6575688e47778a5ee38e1664725ac2d243d0d4f2015e2d31b6f2e9c7a442f73f887e9f7ccfc19ffb1b10df047815a791ad1caf6a957cc892a397e63b9f1ec2427167f2370a7b51d877eb3e18b9481a6fa7278c348bd88bc99f5f07303cbcba09d06a8ccfcedb94c23e5632d63d683a9d72e973684828efceb0fc9040fb7568eb1aea4719d93feed0b02b54652efa696ef98d8560135e5c5324cf641da60e06f1b2e29bd04f97bb4810eab6d2a8c2a0d0664ec5e81e6e95000fe4e894d805fccf811503e6097d5169360cd9b3d8f266d77fc04cf7bc35a355534b1c543331c0d9d99704fdbcf8b7c17440a60f7842a5f62a731aca2dd8682d2ebecc492ff74fd040f09261e6c69eaea70a01cde5b53fce31a9bf2a7380e80713be8989b7bd0c69c3089b68218b570b026191948b6e5cba7feffe0707f8e4723542771dd54c2509a1f0ee916f2b43a52e06faa0edc396a17bc7a0981526f5c58e9a03221ace1ae4e302a33c47e33d72658a96e2591d0c63c10ec0879ff0b2545e446ccfc7e460398b672c077f9c60b5e937f3d0eab5ec8b9114a7f740614f40c59089d19b17e400f2ff59120c17c335be6ce36ce6d701142b8786cba3e5745ac796aa167eaa1ac9e855678c9f856a41e440b9b2fdc671c53c382e3edea8afd10bc5d7c4b679c2f0267e47447a60709f26d53eabc2d9c7413b2ac4795d92660f3edc8db2587814ebf653f337621b71d48a438a1a52f16083fa9446351b2445cae8f949085edcd8304d90a628ea2b17372823d75fa57554d68d3737abae054a55f13d79191f6f25973dd4c092d9dfdf6cacf932879804c50a373db106c09138778db4d70455fd3c7fc5a5032d8105cb40b0cb2bdb5cdfb18b36d0a026ed81d5963d5b7e1ce820c6845c128d7862835d123370867ffc444eae70d695ddb3b5db7ba4ae1463868cd922818098401ddfa7c4537c6bc5d3c5aefd8a8c569c85a3eea46548f71723c1efe67f517a007bfd3da97f04e3c04def39cfc20f781d7c8d0305a322c2820b4af80d13047f9af446dc5e6dd4503edd4c76b09a310f6ac3f281aa3f089237603f2bf13265fcb1f9f2a93e1f7ce57782bada895ebb5ab77edabcf047229910fa9460d6a7a3656df94dafe927496a84429b4da25d03a52f733cb16f962c0bf5536257113dba2621f962bb661f23415ec5cf22031d0dd8cc6498853425bcfb1545d3e3b6a7076a15fd4a4495aa94fdd94219f152ad12ab3546b355fd2469535c41547a4c05998892120ade3c5bba7ea2ec26473cc948d0117a372b0f6bc59a58ad8713413b5c7fd86b909551422537f53de655c9941f4fc800e3fd9f9b062ac3f5677758362623b7e2778b83a9e59182f9c23a5473320f638d2bb320ff329b1d1b828897753a8540c035c9bbfc001fc322c6324f98c2792f620e3f0315a20c7c11e58346b810527c706eb6057b38ba4d419ca2473cb42b69f80242f3092c2f84392e9bdba2c017176ad5206ab0a9990a58e0d02c6e5ea50edc02c1994721e626f4e06cd03f8f2db59f3cba2f40e1e95df322aaef720535fbf51362862556d3cf4cc3d0e2690d8892da54e52a37ac5aefb91c76eacfec7b69354d92bbb51249a111ca58dbd1600a0ce5f9fd86efc7e3766ec221a03fa36e2cb6de37ea4d076b225151e36f7a9536553a1b6428d43361591175b572eef8de9eae8d927f806e5465acd0e168898dba18199909a91c96b23613eb79d96c90371be42dd74bb36f06831c53975f8967831ceb1654641d1e293dc49b6c8b0e679dcee7ee52c1b644944e4f087dec8c5c5cd27997dbf37f7643940454c81847b5ad193572166434727c6aceeb3dca2a001898c691f0065774597567ee2b39bb8686fdd2887c627614cb5ce9df2e7f43f1bad50de049bb5d290df9544a956c290769a5ad94ac1ef1db1ee0714bec59c3ad99f8295952e30a61db3508cbe8d2a7292e7186cdeee52c9d2996bea163290dc11614bfa216d58ca3ce6853f1772f378caae8565cc14b7f7e3221808f8316417a1c84010fe113814acaa516651944fddea5221742ba0816eec085d41ad4b1e9fbfd671f83bcc47a9b78a19a9749cc22d7e4bf6e619a0d5e040614fdf752743480ab25a13bee50011ee1e035462a19223ef3c521276323e1efff70a9f37acc69c1ec18e1ba74e63e8ac56f1a2c5f6cc2287add9c11ef4f7e0c35247d46428c3b23b3211fd8df7154a8d1d09bd050bf6e85722c2217e84e9d75940cce86b4d6d62511ae6b2a9af7e752cb04113979bdf2003f6cb575eb9cdcd4d2e6b5c98768cd2aa2321dbb7b508dac3f1a9af362211298e54108ca5dbc7447388cc268a1010d2cbae40640fb937d65557927fcba4ce2388376d95b93ff7d988d34c69531c1ddc969af4227e0187a142b0817851ecb4a9decf7a69b04fcf9f5a7ed40a0e738c2b45a196dc678a60923cc20f444a10f77715632c74373c5c7c0566948802dbad78995ae372bb9909efb615cad2e1ef140f2c1a15afb616a17db3e64ef07f06776cab33b57362f2853102d758c2d25d051bc990470edf97c8869cb2886e860cc73596130e1905e82168088e54f1450e65a125abe5a7afd6489296711c9c3e35b7a0831a23dde5c787e2c101b9e66bc734c71d1551eff6c298f151c91a23ee4c78838e48012ea19c5627ca4adb5ef0b98307f0436677eb1d0ebd96fbd15ec7989144ebdd4d258221d8ebb8edddeac278a62954034386529c8e2f80d752a30c53e1e63d120ef23b079cc519b3e02916a50a37e1292618b47ac7b0e81983a9f200aa7773ac502ef48598e41fd8bb0982a2bf7907c903ad765aa752f2dbbad340c0ed2f2612495586698066b7211b95314dc6adba2f3fe6e48c829d19658a83ed2cca0abfe5881fcb352c2d5a4020b888b4a9e18fbdb449c2f40b32356e6fcd4c92ef744f3bc0f95cfdab2a54e454f63a41100ae67f753b39843252cd8ff221e9980942a75d966946a2b7a268ddf69153abdcd0ae66082bffb5399cb666b7535c67d4c2809530a39b51b1d7a761cefc9ba19200061de2bb429da1b1d7fce6f1b0b4cf2aae421137f3a79791aa41fa93c70f75ec8c327779c394cce6c0493c65590b3ab55ea40b7963006139a8404e3a3c47ec7ea41d274705647d198024fb1c874e650e67e77194f2a537aea28d96d1d5f4eafd7677d6f4ab031380773be4842d550445050784c1d910a8a45ca5e3ec817ea6beedceaa14ca0cfd923370e297114cb1054b2a82352f412c9ad5e8ecc59f846797f5bd6a16dec1eaf39cae3470dfbc371191852396875c2d33b8f143d8ae1778985012fd66973313d08cd319f2f8233029cf4b5dc1b6088d705ecc45f0a0879763108032ca54a99f7e9b6eb56158b924fca7414adf9dd00d91015c789d5c29f35e00d6ead7efa074a74fc0333fcc0c2bf4f3ba3d60afcc0a2b2d755472813dd4af55d5337c417132d75d7616657dca7efa7913f1d89c141f797a4e31300c647acf9a0446864a5f868a67fa87a90f2b73237adccf6f544a7b9308af27960173efadc1df4dc134199bfc7bb359fc37d4397ebae6404d8b272c6af0f9bc9459b5a2b0dae9bc93db1b330d57dcbf421f28402dfa08e0a456c64672f9e713fdfd46905e4faa09877b1863043136626327a5e742cc0b29093919f9159b5a383d2d8c515055b75563bd49b281ce9ac8675ea8a36e07a542903ad1e4239083ce369f778ffe63a0357c455449c397e135025874f6c099aada8d754363af018779f072f9b23b1dda55579e5d16efdceab115f03c054b34e588c6376d53048763f96b21e24c1515c8cb0a72c09637c85ac805b06287881050aea752e527594c75788707907af7a8b9c3925c888a08773c00c832a96df730c69c771420cd54dbc83e7fbb1069ba86ca625e279df695c3ea214f9ae1a8dd8414b8e9e42692df84fb5c3aa4de428c9a60e9f8efc38c27af1cd39e3284c3ac70f07701c66789bad3b075173c3ba994451c83e3761d8d6936f48e7c2aa6f05609a060525ac94bd73158793efbadd086e8e98c0808dffca1422537c70688c84525590021ec60876239673354931f60b5a8eae939821f69b9289c3fca093edcf7fd55b060e57b2b02cdef3e0236d5a2fde2f6cbd104a148c449d292b99cc1afbcb70f77c2524b97ed5a304db10a1eddfe935048e8449fdb2210bf87dd69bf5a63a0eb53d533062bfccfba79dfce0f222b6a1ceffc617fef2880334f1f3241a09223ee3012e32b1f6ffcef1ad568ece0fce3569f6cf9696d1078d01a3bedc4bf7420243b703faeb87528160e5462b17075db83f53bacead30442bd2fb149b77ff816e4fd3e96674c085e5d790f160371aa1be38cab229d7a10822e15e32d2c476e2e8e832507876ba2f4e0436b4bc9e79b5896deace208f21239b7e67dc653ebda0d107ad8f0a3132e0753411e1a073c030da578a1447cc8ec212447c5d8256c405b2f1755d6103c175b6469bbd0bd32d0dd7c7e17c24216cb752c337bd9a13b67ba181009a72d5d20651b121769d457e470e751a572575c4a5297f9d60cad0b4f408e6c1487e2ddc1f31aa24729fd68a7cdfb9ad269d1caf818a6b11023b7adbfe05e225f468d58ee4600c11ea40fa1220818396de33d24bbde5d09a340c8e1c276230a74cde00e218c81335fe25fc6aec38bc0a27a539196226527ae8530be67cfeeb8c365c7f5c2685005ee3a95208e0e25aa6ec15358a4cbc7ec17d337b1a893f30e9c85286eff545e9c40afe815abaa788e4c3fd11dd917fecbd69813b2a00d991ef52883f17f79161e5617f346868a67a9e53a7dc8eb5df303b22d1b149f1af2aee0344228e46628787d2cbaf699499907c5eda0019664a133cd27b9268e41ffb94cabec9e1fea5a3d603f968a6573783fc6564ea4528db127670e01717212443b50da4e37b5de4511acc403ca60282ef5636b816436cb607d4f2dda2688b0f9dc2cebd3521c206936ba8e69e3732151e5d331bbbf75d029f8a9113da7cbff4988ddc29292afbcc3fcd3c733c480bae4b0432aca9923a295df83f14941570ce9d579b083f0c0b6cb98c7a3d0da7e012e9d7cba9d333cd794c82c04716794a43a4ffb11efb93283a85e903cc9a8f6f547313b56922b5e0613b4a480a0e4ef27bf2432844fd058504b424ffea5fa7f4bc10b9ab909d14edbb999981c3b71e854295745979465e068a06af28fe6c21fbf6bc35b5f6473b076e5e203a57b3fd6be2ef0dd22d9697146a4aad422c9f6d6134852ad8464f32331f8db8dc0dce839f93648f6e7621e775064cc7adf394033b78751388d7d1739cc13accb3f87b03a8b15ced82bbd6339485f20a6b8a3eb629ebc32a96341e52643cb456a41308c8691df54e358b41f1becc6b4c1c94d979253b382ac2a32f3529539acdbc950694b01039446228995b9db4d888221ef6847e05714fe892a99595eba13f599fa2bd26fe7709e15cc51f3c5460cb3ea68a01fa4be64cc627f04c520384dcc7f3d489544231e8e1b93ea12d537ef1acd010ed3fa880f6bcd0cba26e5b44ba6d8644a718a48d914a6b5984754a6a4782723cbde442e37f563a7f48ea0e96acba7aa4a880010f01c258488f6faeda1ea47f0cd196d619e2432f1241b82b77b6839b81c6518092e41e1a8ae0e403843d02151c3ba5c80085931a93786704cad33942350b1d0670109ec03bd5551cc9767ecff7dc055716965db6cbfbd0fc10d094241b98680ba2c305271b0a27bc0569dbf733ac98a20d9e7e42835bc4da05603b3aa5dcffdbea0ccf0eadcfd7abf0e0cf42795f5d2f6c2546f0a2c12141fe19775cdb1c8b758d59cb764e011f3d0e365610fef3b3effa7755c34b854905e1b1c6d98389138ea56e2244d779eea56b124030edcebbd197ebdf145a4f4bd819630236cfd5a0b2e7779770a981d2076040329b23291379630683dbda37b4c88df4393ef27dbadd1affdf0ce7ec9a088c49799c3080b200429570430e4cc358bb22b0aa96549e5b37d1fdad1af4b473c673ae30dba5d83da653212bd82c24fae307c5147a15817498b2cbf5ccc8501c329df3728142032c8240687f471ce4f5b0a7652402bcd363c27302c0f0e71e34300cd0d3c3f7c52086cbef27305919cecd3a8e63604bde1683dc8366ae0800a90c9334edf58d44d5fca73aefa22222434d0e54b42322d0ff4b7cb349633fca6bf657f5d447ad8d88e2f69625bfbfcbdadfdd16a9f84bba1fb1f2eeee378bf75f823793ed1524003ec4981571149e14f0002c9540b82315617416d3d3c753ffcbf16d1201c6dd4e2aee044f56de03ad5a1a323a16f98207703b620d7a2e833dc71b2a3e8d85966c69fb00d5c2ea9f85970ee7360bc2f72141d3bc375478deac24f500779006e7e9b68493b2fe7ccc8c1f68503f11c0901a75f0b535282a8924ad306f1029740e205c80f9a061a21d572216702abe1d10105d1704adad3d96b09722182c25952b48a963c6bdb522da53030008409d644607eac373c126a3cc0868500b41d2c5136fb147ee86e9e18504f803b3df5bd74944b527c581c003eaebff36bdb9e029e4b78aeaba9830a486a4c23464f5de075f504aa749444902e62be651a8c8c70ee5d53e0a24181c7b9f8740863d0018c0212a8c034e4e538706be532bf0988013a4390a076ae87662af24a649a94a4099086cba361288bffa6a5196f2dd2150a0f8c15da5cc36cd8a4b68482785cacace7330f1bf310f4e2a5c09daad65e3c9e8a8a07d80702724aa59fdf66583b4546374bd533b714dfa5d325d24b18af6a09516686cf9a24585ba5334c7b0c894290e6b998a55065a701e32eeff77a477c5c39f9d9d18284b3cd7d0431e068006ba39c21faadcb0a6c1979bfb65839d4fc33730e8694259161b9f520d094032204c61766bce3edc00948d5a06c21e6c4d1ce55660dc630f2bf27aee3468404222d9744a9ba8b915b1c16505fe704135e1b661e6b45f4706f68049a798cf6972dc068671b6d68d9a11ee5e6a2b2da6a2d8195710413544c74abab9b2d47ea0db00ed566262cbefecc40bdf40fdf81c874f933c3b5147d088611c8518e97daeb8d5e98cee6e2da9147befcfdb6d5da8696f34e86e2e425ccdf3b25445bc808ae796f34693bdf98ae2fc55dd92c9adb4994785ddf52001d0f781ad170b33fd871a286c261d77eb1f1f5f9eb4ecd80a4d7e6b2621c16e9c1e0d1f888f0ae37be9c15fb8c1f7e25f1b5707119b0c715c50814145cc3f0a5cf85b98d59d79cbc6b3621d7db2735af2d6b7912722aaabe5c5abff19eac601261663d4f1d461d5a09aa3c069e3985e07870de7f13812e885bb062857219d3196b12ead18921612ac9d729da6f3944bc847b82a92e645e4be94c0c73191de9fe0730d835a68487fae920ea71172263ec0f299c5ecc67dc45575c681d871a0c1d6c59ceae77bb0c9812fd33e9060eb7639934a9e3c8be70590c24e853d73a0aaf9cc8cc2cbab38374859f807dd50509b01b0317f75185aa08ca6b86df69e2dfbc46e0a76483698d650ef3c3d2ea2e6c6d69cda49a2e07d84e5e0f3e4828ff5d2d4b3ed42039e554f702649ab0dca9c223d8c35df2b4e89fcf27cc67e6ee598ffee9f2341e99cc07433eee4db3e56a44c639baef00a6a84850ecf0aa783ffce73d0ce7c06c061299f929d02151e9f8d63d26bbf2c7f542165ef19e876e37f0d8d1f167c531c95e5c9285847b5d0b3894d75d6a378859b9f2596139b824ad6d5add27ff539969c92a3d24fdc1481113d7627a90f9c6bd2591703c0ecd1f15ab631e5a53b15848ea0b3d087584e3551a4ea58d0b08eff90df50fa6ca5560762fed23130aea97fea5be9885c00d2e7a1dd34e0ccc882f75d85d8a664556e56269b18365ad5e6091450fd3e43aadcd4c0d8af4e459c01f47badf539a0699777e7ab802e31788bb3b08ab97c8450f05a50f977969a276dc31c63ba0eb91fe3558327225967f0293f05054bc0ab1c4c92669941e372c0d5662697433351ffcdf2d1317476aedc296a72aa496645c5cb08eaf81e05cee8aa3f4df8b1a6cb0023fb35f77b4d9a6cf2e72221585c11b027b27b87a0bcae4ba87337f5a5604d0b4d5cbff6c5a1db325ed3fb143eae6ce194954a64e3c0f33adc2848cc3c4e212031bb95526dfb1422f5257b49c95c5f93cf923aef5e0cf09aab1487f9ce742139f99601efeb696112a7417f301c390cfa82be550aba7727f303a93bab1d73f2341a920fc89721aad8e9fad099ae10afd624ac55141a58d5d8011157b5ba92ad56807a4b93d88c9af9230ecaef20734cfb67214bf2181fdbb2406f46c4f159fe2d6bb1a1912bec2a6f2ddd6858ada309b65ee30ff7757e5459d35862a5ccea086320c1fa80fed0a1ca75f5eb57f299d449bfcd3067f4a9655f25db0f35f10040ca00e73338006f1842ec1c26cd279866f0f64aaadc8f30b3abe01a585e8202ba2c5f0a14b8c410b36c6273026f8429ffe97a53e7ef3c3fda92c42bc698e09089d97d8e35dbb5095883c7ff0cb55bdc83b14e54f40628f9eb06ea94d21d2c8b686a3ac031967c845e4eceedf7fa2fb40a8e4fcf48c98bc40440f239494ccb3859ead4685e6802819812fbc2c99d5e1689d09fe77d08c8c1990b39e1cad52685dabbb5c5aad63d3386cab88fd6b90bb7bac587c4fabb1f6719db715a8776e48d36a58f07041cf2e024384dc3e9e8dc2f8a3c306d955a9897fd7c11e68dfb3d85b823dd074cc627f239cd31e6a17c7c1b74be7eaf265d718e35baf5dd4069d2049083b396828c6cbb830f7167da17be2528b4f45612aae4d55fa1d1107807647a658d4896d6159237d6a4276569509c4ef3b525d03b5e46ccc3b639db21314860f5c7206e37a840f98802284892209ce430ccef53b2c56143172bfaf0b1a68e808908585ea5d53c25c2072e27e1bf64b145cc46bcb4e43a43184bf8dfd98c443f8539c932024da3f704d874d0a872b81cfd70009be24367598a659a33fe58963af77af1b47bbe4e8de703dcab2a8e968c15eacb08d08c2d860d32f3b7174b418062c8a8f6e5ca4fe2367a175f21051733fad91ea7c19b1f324db54b5dec80b3e7b23eb84ab71088177dfc4ecf5730e78f8406c928d0085ffe06e8447cfdd832cd1078f0d19b8f608344c789908fe2c2ad5bb609b0af29b87f8713004bbc07d090f25fa6ba75cdcf490712520dd9ec99f6d7ae79b1a4ab54e69fb61003c8a58dae8ed3366c841e1dd0a08fdfe47423538e1a32c62d4d5f03da59b6a11d7f6dbacf956e9b50792ce6fae8ff9204a26bcab53d87d36fab885031d8df8ebbd8107e4cfa1cc3a4e615bea2a2e6d0ec503c326480620847e10edd83883a4e16b064e2e2dda1d420d37dca596f989fe058e7a9a16c49dfe4ab02c109b2f1f6c36926c178dd728d87a41be66de0e1c0c1095e90aec3e802a0cbdee2d59b0207409493c1a96694ec15d359ac8e2e032859d4319e41553758286368dc06153fc5380f9c95731e9669bee586e0a2a415cd5496ea211593216aaa70d8a0942a968668e08319335cf4512a430e4c75c185cb294787f81088ef350e00b407dbf77415d493b2e1a2ed429a68596523c186152ed276fb92f010b9f4e788c82401954a9040ac74f989172095c3a8836a1d93be7f2f0c367dac2753d47bd1ea63289b2a528e3b8bdc80a277ee4f6d58c4c8a99de4521761e6c97478edb0ae8db06295231b3c37375fb471c565a301f1ca77083a69b4755ce67282fe639aef7db2e7edbf1293a4f2f8578b289c0bf931c37954d826ecc7e1df63fadd8a6f25851739963f120cb28890c0cbc56086285f8368c8b646bdbd4ba4ccd6ffa0d13394c2451f4e04181ba2be68da784bcb2d50a2353001438ca235407d6a9201e1a9887be296d44d26363d70eb7643ed4f7920f956e6950e869401210c2789b9eb3353f4e2f67e1069ce516a2cda111bc9b3ea9b60af809d932c5622103ede20f634ed0dd6db3be47f38856277a74c457da030357313f218e1ee4becb38747b3d1fa4135520280a7e5df2b34d43695179a485820116559b8209c953eaa7d07b9136e597d5ced59be0d83d6afed47eca031c157f220d6febceca633a7973ec322752988fb6db084bf36e0a025f9aef5d24beaeda03cb9954299450f3e7e1d04592f1957f5740ce940ddeeadbf114ec54ff569baabb2d12169fb8a852315c68f0d7f40f983534c623ac3ce0bb9262d40e4ad120f61b122f686e2851c10d59c59a2bd485ff1dd872b172bd736f974861b3e842ea994792b05a3b70240f56efda2e686774f4640a694630ba149a5d8b5daa3eeafe985ed999faa9880315ef5ba15b90880596bd7395b1a9d7f3e1f428f6feef9ff605e9abf69e48d452b1c18a1b73d0b8cf0cc6b2cf267f9fc7fb0d7e4110a6c8f656a68d1b713b40d8606f5057029b6cecf9949df2991e800450a02ee229700fd93adf38ea44c793cd2929247b2f92e2f4d0136f930313d521b6fa3185a6b2e12cdab53d6eda9febde50a1ebe92278b8a0326cf9efaa2047bbbc72e14438c3af0377b2cbd5b36e9da69624e8a146f8add316a467f1079d83a3d44ac0868cfe1375bcb588fa46658c28bd81569173dc46c7e28a9ef1ab6dd00c521e83a029823e779f14ef818d6b45ae6adf3cf04401d5a8c52345fa29cb8b1706d3c14c81598e9db1f2dfc90cd237673a9e02e59a3211150e25b5bad75a1f30b17637f6e38b23de6af1158ee2e3a317c67090cad7f3313c3aa2c1516dfa556573a2e04c64598809ea67bb54050a21ea6440e31c6cd028facd78147a2d7fb01fe05dda560dad74b1128aaacc875b1a9d37e3811e53401459ce997b10888e551c8cb88a1d04919d645d1dc6433a7cd18847bf551ab68679f5542957993bf2ab8bca4313b19d8a4860b54b2b93e68274d79fdebb9d9e32e35bae079eaaafeb05425a5071ad77c47cca4fd9ca4d4c72f0c6ca4f2765d452c930a230e40aa97a42a2acb8492c02226417715209034bb4092dafb1f206502adf63c02f08df51f83083f131befad2138b60469f3ad3510e2864bd5643a2427bc3f783c844ddbacebd73427430c00251b5c9ead75239454626d7db4addbf0e136acb28201aaf3f8731448ad59c262576c82659e8676a5107bab09cf0da6b0a536280387546f6a0526132e0db582286f9a83076322608f4d8bec94546b203fc0581f94379dcdeb42a9384eef8708861c503285024a728b132ecf7b6ae47cd1e866322c42f1e08b037a49c30a8bfc1f7af4ed87aef77ca050825d36c3391d4794dab2179271b3975ce6098c54069c74fa35814246a943e13024e84b1a1b68e1f422b109cab7b29af34b189be4b0be2649052d701ed7440d32a9e59b339eeb8ac2ec4cbfcc1a2564af823d17cc482af8d7097382459cd14678cbc9c2d51fba31d8d57983c6161949d5d66ed439389813a9d6ad1aea06a2ca7d1d637f5db0e22b825324ccc59dece9c5d752e1257a6634ba8ff0de94dc7df0f05be5ec3bf940d458c3ad56dcfa1110fd2d508c651d9db6d45aaaa7662a292258cfb277d40ca46cb44cf93e10a07ee2d66babe552365762b0b419213679ca101a7b0824d9890423878b5f8c94b65a8e3dbf7e755ae092f7e4b74bae28221197a333c937a203856f15c8037d61730f3519d856a339d001dc311d08fdc83a8f0fb170df6e5951c8061b74594ad238d2161b3ccd71df512c19b493c9c71e66d2e1412e55486b6fabd6a5c9577b352851a4f363230e0547e6c4d59597af8167349cd8e05dab48146b3334609c70dd6debaaf53cfa3cd5232de0003dcc53ce31e12a8ea74366d8c16f1326c886ac69664386d1d0868c64561bb2e22be481127e3a14c6569ea92a1f32af52be0217d52f4661b8465f0841cdd16e611b5482f2d6d2f7e4d00caa1b0168a501db551084af4b9f372c10b741f4a2cc7b52a5636fcbf134a6d1fc2984a0881e536fc2cf90bfa576001a398f7037f1c522721b6444c206b4f74e24732b8018ca4982065591046ad21b61738263c837bd4f307e27a82c04f1f9c941c47151ac8267a8023dfc452cc92e8e61f5034b5ccb5c310a402b910bcc16b9515bf0cc423c482ca8985d7d82f582bd192d64c8c3f36c61ec98d1400dd1d8f2004e25f2a56690bb30324445fcd41e03e6d2bded16b5e90476c66df8bcad67945827d89165513ccfe637a2f2f6ec5f6689f39b3d4517459f4b2ea114267dcbaf8e78a622101ae0a88a939f19dadd7a4807d32c3210df383a25bebaa2583e957792a2e4fcda564e86b7ed3979a808f2bb0f28694f478def40346988dbbfaeedf94439305c3e8e9642b2b6bbefc4e63b58805783ad9b580555f6cc5fc87c31c83caa7adc63a79c9253064dae4b2c3264b13be455ba3adc91352f32b2554d4418f94689ab9ffa3397536cc50f284e80833ccc6b0b1329ef2ad0384bf3e7e1fbaf3dfcfddb157f745b4e0a9357803e7ebae1cb932b8c1dedeaae5d460317f03da0a9389fac945ead1d36e691b5e689870d615bc3224e35e601f7abd7a9b34319995bc8a4f1cacb7bf0843bbc395eb751697a96b34478831b45e3ba6c70e747940d397170d4885850371ee779119ebca1f777d66d8acce3da7d9c700c62de872b3dbd11084b6b0fd3f28701d9e85969fa743c2577fc55486793455b8f83b3200cf38bd5f767ab931bcd3f2bf62c9207e214c5fa31ef4f712f53cc057e84d3bcbae733fa635a47cf593e56237fe9843faa980af2c6df976daa3f6c731f761f985203597cee09b7ce86b0ec42a98d2a01d41e935a9469c257e80a318bac2edfeaa1fe314905f4a8030ad10a925820d03a4e070f470cf6441978ce0061291d62cd0b043060d28d7c9ef31c7c60edb7977f581038dbfa6954361b179d4f83602e40bbee081b180254438fac6147c6685a1eec214f2e64bd1385dea390b6f7de5bca2da54c52065a0910091809dafffae7057ba0a3152978d2f17316502c63dc31022cf4fcf9f3044b628440cf3356f204bd5525ccf49c7fc14043cfc74a2c8561869e33ce982043cf3792421217607057de4d2ede82a787ddf18e2f58a5439f3aaae36f1948e185f9fa3e86f94abdc35a2b772eb4ff9eaf70ee7890241208888118d6bfe1b5370cc33338443776905f4869613114f249eed7df5156b5b87fa1eb09e2a4a82df7983059b1f624f940954739af899e2f2593c874fdf6e004c58a08bac061cd125794c01c808828485b867802c10be0d0a2cc60a71e39a5a69a7a45133c441a4429a3b360d8a0fd7f9c56bf6a3af304573569e9862d87a6898cde5166b96842c38d26186c4d5edc702f873b8ca3e35213154d4be81d6a317a01a9eb47262db1addb053205f6af4b38cfba735927d35b6dd56ab5a17eadb022307d49209ac6dd739cc194220345db1813c66a1923c6d620368c024ec88438020a24941003b45b5f860842fbff17233070822a6040c41059408183ac878e4b5ee2f0420649d232d39b9ce9086f67d25ffc15c500f98f6f97e9ed21c192a04ee5cbbcc888c98f1c698c5f29e34a4f30df914f65e62bbafca23133e6f4c4c43446ba7b931b35791193c7664e57c62895c1227f32bda21b311dcd8c64b248e9e94a19a431464d723b9374a632364a17599fd0f6376fbfed87ac967f2938249fb4cc5bfacfdcd9d1522f49f1e5de7ce08e59f4f72ad5c7ef5adf0153f050d3f11beff87d6b4e928d78a8ed683b9280107f77b071f4dc9f9e5fe36bf533e75e0e30e6915739c69d379282bb76b4f634fa483d59b00220acd0f3e9cef71c8031eecc25f827f729d950b4678fa0fe533dce4f90be056f1eb29a67be0a1cb29a6e19a6fe84b81f926b74f733c78fdf446d03de14f84d621607e3a1fc2dc3d4f767f6314356df21abefa76ea064fef609cd9761ea1b99bc286bba8c316dced8620415359841e5061b8517322eb6a0220d1a65d8acb10110a110372842aac19a2f40c052b003154c4ba801476cca86456c08560d811735a67b09b3c38e5b354b6d7704972d0cb6d171c98b1448e0948e4b5e96d01b6b7aad911492ecc0c20b117a877426bbf152f1d5bab2b5c3be674f65bd0c6183a75af2705679b8059ea23916e0abe392971cf4f628d0ed8109f154dea6e3929798de2c59181a23adb5d2e9458f8773b624a5d3526badf5c6b09032a3153f2d2b0fc368697475338bc5fa11b23c2f58c5c298b6c6e86274554dbb744a3136d9762d32ed2ea34ed4893ac9e6ebde1966726ad27e2fbeff6188449d9034a4f9baf70a56d21ec3a2fdb5d87c59ab55a7f9b2b656d97cd93bab48f36535a71516ac64eb953b069759694fd7e93a5da7eb74efdd2ed26f17090929cae2dcf20ef71683ddd88ddd98939393934c2693215d24a4b7b1f9da6e2ca61f48cbfbd26d8b79e8aeb8c95254743e72884c2c10b3e80da58a26318bf66de72091399ff634e7734e9f5e355da766fda6afb69a553b58f5138beda6af05b52119d7acd1feba067937bd5ae5cc9a5fff4ed3a6e7fd646e4f42fbdf2f683e12775342bbfd905489744589ce26a731655c36639251cb53acc86842b1f2fb40cf6ccdfb7bce2f0b2cefbdf7d6392916d98ca922d54b29a573de8f1ede2b2fecde278fcddbe434a68c53199d51264ae9f7b8f75e2a69934d518c59b66b8379acc0df09493861dbaecfa6ddf952bbfe99da6e322975310e4606587e1ae9cdd975f2fb1e77d118a2502f3dfc7ddd36a5f7f1fbd4cbcce4fbef53a8efb70fe565cafaab9970c4ff0f6f63f31f186103b2fe8d00a38bacbd71de6315f7def7cde9cdf73c4f6219f1dce93c6efbb48f0ec69d5c8cbb521f7f686792fe05f4260fdd994ae04c5a496f67aa3680b153805609b44bd8272c162bb35aeccc72f190c943b75fc034d92b6396b0e14a1057b4ffc6244517598f557152eab436d1669cf3c9c74e937ac803db46bf20ef7ba6acf6765e6ae3e2b7501f5f7edfa7c01f1e3aea0b3dec68b4823b9697c5748f9187fb1f8fdcf6940be232f510b4825ffbae604d6a59e5a115fcf383223018fa4e14acace3e107456047b915d345d64639a181b793f1f7320ec69dc464307a3b19ed5f67dacc070e954b65f2d0ebcc43ff50092cdfc9b84b8bbbb4ffa277f53217a987d3e23bfe5c98be34817112f31c9970a6399987fea933b0fccdc990b4bf87345f28997745bba7a4dd9f93cd172a76f1eac3964cfb7bb1f9fa9c9cbc2227cfc8e948fb774ef3f5c9e68eff1da3fda37f27f3bf33cca4fd3ba4f9faee15ac8445fb7bb2d87c795e93c774a4dd48bbd715c91c2543c5260cd66a85e1ff44c5262a365131fa439d9c9c9c6432990c090909e98b7db12ff6c5b47f03de73f29c3ca7e939698f15e584bf4c5adfddbe7f434117356d8d61f71b1187fa328d3c5dc701bdbd0cbb8edbb64c2b783d1f45fe74a4e34f305525c678efbdf78787f12fbdf56af7e66d6d0fd5d5a1de1ad6743aade6394a9f30f22891e608944cd39433d33891a68d1b3520d0e166166046044f2f400204559238401b4a3138c81c2131454d951b354c50c9824b136d5861a3045bce6862cc0c62d006136fa49122a5258d16a8fac3ea572aa59553c705cdd30d4ac8d65041c59738c6a0c2ca137144d902884bc4aafa0045972b96e0a1862fac8040031770c18229045fc2a0a1e2d184d1be54a7a8c01b812d63c2b18ac3871b9b3360c0f183ea0d1bb8c301850d1c59c0218607471a374c9d84c30a4aa281061642e440022baed0208a119b128233669c40093364a05283538d5677d5ea02c6c700a30b1b2b27d419ae32c325470c66b07d2146cc8c0b18333801105078c1218d356f446941980d099bda039a0f785f6e1c2af080ce35d674c1c28a33639af0024a15613851023262d4d00414606e1c62b82a258e373ce96e8da49064f5ab1b1d564ea915442d2d1eba2395193d30219ecaf3424b14676eb089801b656851461955886164c21561a401c6165600610232506cac2a0f0ec576a6053a54cb8f91948e4b5d54f0c4024d62a0f40194d22942162c7fb7f40fd64f6bad55516aa7101ded4b4b3f7e4ab817541d4e357b39cf7aa8b75f90951d71e5e18bfa68a5e88176fc8f8351bf6491cb1377a96268f3f1a34d0c5ad56159e18f568fbf767c7c181ae0ae1c1fff01eebaf9f831b84bf5f19bb80be7e35b400806b1aa090ee8610ba8c0eb3db901a94d0674ea6568833fdae054ea05df417d81bdfb791e0bb0aabeb081307c411608ac4375802f7c3c60d6fc8fe1fd7861b0f7de7d2f0c1ebe065f70c17b4154f9b64537bd68a5e881b88f8feb476b7fbbf6a3be4f9caad081ae915ba95a80e7df7fe215e0148286d90cf407da2d8ac270427ba006060d5a98d14afe2e79bbc26ba01525790609a4e42b6865499ec181943c05adac906798404a66de7e45c74f9241f040d14df0bc7d091d3de6a1db4051c14160818d008eb31dc0c889a46ba703699b9ac6e5ed7f5fe6edef6fb7b9e948026f07e32e035d8b87977b47e32ed7f51d8cbf3a592de3ae222cd4c88bde3e4657544c0b35cce8ed66b45043a6f78c4d1b749d5174dd12c7137552d1f52f3741c9715ccc3ef3b0fa875ef0762ebad61c24fe928bbbb4afef5fbcc95df6ef77f153019c010a90e759fb9eb3f2650f24e1245cdf7bff9ff94402f265b6e2fdcff4c024cb7150f4e6b87750d3f2b79550b483da6f2093a10cd821abad7d3d6dcc5d5ee4477ea5e6fa29f0c61d7f1488e38e073a185d1fa41a0caebfaa1febdffa3a96f044a2375ecaeeb060c85261cf53e968698385458c7f29e512a64b0890c082044c18e0065684f8c01645557801aa24404117346cf980374bcbd8d272e98c10da4d034519377429cd174f5e687f8a552afa29f898277cd0c19a1f288185b84b3e8c15fa8b02fd78a3072bf4d21b66dc484f45b3ca1535cdb981194fc5351d89da498c74e8c990d5fe5286a93d6ffa50a674d2f9778e81c0df122633cf9f40600ac5e50addc7958e50709c519942ebe838a382a4af87573aab4b3f29c170e80250344bfe0f2dc19f1fb549ef04736e8c3feb103a7e747bed3b2731c6af31339179c8e6cdfdcc4372cd548132994f33d5f170d3d7b28e06640a6c9f32a1afcdd79e097d4bb92dcf3c64f5cabaf64ce84b7f979321abe7123af3ede105d8e59c32473ed552c6d471c04117589a80066f8a753cbc3947d5f287f9bf7fb8e58997c5d331c650b2e2f8183b392b65b98bdb3e7aef2d8129dd401ac3aedbba958e6aaee08da5285780b1850e67d020c011465da678230b188c918226b4287a5423cc701d1724f0b84801126ab248810eab6ef52b379a564e9c957ba7b8d14523811b4b493abcc29f8e4b6eb040ef906905115c451e475a451fa7de6a157d9c6eaa95906b51cb2f484aa1f9f32f93f9dacdd1ce396bfd822aadde25338537eba41b26f098b4263cac6af5c0a2745b0d2a38214595347ec892c31917a4a011031dbe8461021a82f88e5855a41e99755c72a3c8cc13140048026f4b291d97be60f15106c7f7745cfab2441c68663ddc60d6c31a65cc7a689acd7ac07265d64395590f51663dd83093626626458d9994a69994d94c8a1533292b9849499ae9c0349372058592728a60524aa92a877ed59bfef198d7744ee43bb1177ba81afa11863aee1a62f1fc8c5c48e1a42b381423cff65ac83337d6f2d659591bedb7d72cddb4fa3f5e87e8365073b2fd93a9b7cca4fed5b4cec7aa7bad0c536b79d73c64b50a5c3efd4ede8f9167ebec094470fa9e408c3c92462da5bce04a65b19cc0508c3c3c9e877ea3b5916f2398538bd095081dbf9aeb0874ad72b504ab08741dc282f59dc87f327590cc43566726f46f7d19661eb2324c33548cfcfdc3d90f487adf4d312b94cd7c50f22be7474d295d22bf66a7fb48d4324c2d9f06aafa61068dcf6babef4ae9cff92ca4ccc0f2672ba506963f5bb0b0f5e1eaf1ea524a351f3bec4969e4ae08cdb80d1ec5dd5d8c3badd3dddd9f05adfdb7247d4787216807c1a97b6de2d3571d88a2e9bb7f6a0d37e33e72c0f23d07899cf16e51722aba0a4a0d8e3c5349042fefe3bf4fef65f5fec7b5098a00059eda7373ce79bf9343f293461b28a95c0f05d8bb964aa3cf04586584b1a4e23b958dcfeb988b6920a5b660ad1ed8184b460b24289346068b0f1309a992294208171a818c9289f2832cc248a88823c76bb42184101157ba355baab0b618d1d2d4a3c197d62081f6a77e2fa5d2094d9750a3e91b71d7d5f45348e2c20b346a4a29a519fb441986472ff4fe1144fb5facc692f65f19a1fddf9764c0a44614eddea2f2dec614cf35a63b6da9717efddafda9d31be3a512cf977c98874e427a3c9c9f52ea49925ecd2adff157c92b6230d148e948430d182be44c97e30b8a859a996a02b1b53c89fdae745c22830a324ce0441759db46e90334b88cbb3a982ffbd3cdb85359e960d58c8baf74669e4f391f470a2c1f4709cbc7c982e577c0fefd0e24d5ef80f6db772004a6ba0321b0ebf864c4745c1aa3cc4bc7a531a2d0b2cc7cc9d92cf2cc2f81091c3d3c42fab0f52367393487e69c0178cfbd0bde734f9fcb3324d1ec02f75d9e81cb39b4fb193cefb9870274bd19674869cea829010c8c6000259604126a38f104155888019a506ee8218d152c29cd5c60051010142c81822cbc60e28b2320960f587bfbd5eb4008ace958020a300b120d2c5f7e3903d07e7b17b4df720efd0854b30bf66fcea13906200b3895f1d87c2f9a2fcbcc974ff32da88135c0f26d94a6774a9dfc8b29fd5062d54d4bc7ef71a655e386610bfe600fe74b16aa22d0cf7d99ec47f6137de22cd3b30496bf7770aaea86ca48e79c6428bd59aad2c05286dad3ac812aacbad93ee59d2fe3ef39b34499663267adb55aa1239dd1eb2229ad9abd1bd7a540d3760eb07d4854da1ed9db513de9474d9b5fd0dc26cd94bafec008efa3c2deab7d484094d761c18407e2c41dfa1d48b55a2bce7c1c3dbf43a5eec65933342502362777330c6400a8676a73540d5229faf8f8f8f8449f0b024e7cdd596d2e09276469daa2e3efc0228fff8f9ba0c455a99aa8886887c520f175dfb33cf21d8f5768bff2e88322bc285f51ee6c498403e44b1ec91dfff87208f99245534a1268bfeed193b07c58962aec872466b99452242f57cf145b9cde3974fc707a7cc9a3994d60016c5aed6103702013a200b105b03c9af248d54453242a0d14a3165ee818c3c8a229ad42d397300d5667d462e4a1124a964a9aa3b848737dacc1dbd34b5d7000400d38fe9547a6981a036c755c1a438935c6954b63bc38cc1abd574f17a76ec7d91b2dff5e57b560647ea85fca4c7bc1d0278d29caf4e2e43b515f2f637c27ea8a6f4be6175f0f7b31a3ad79958c640be619f6c5e8de2dccd1d17df7ed15f405cbdc89fabe7f41374769e37ff50d63642d07b21e7bf7e255d57109cc18bd5fe65191d9195f2ddf99b1e02ecd3b2ddfa7e0d043d984a56d6679d8748591969b9a2b74b820c09e8e4b56a8d1f2b51f30a7e39215663817584183788f80719a3b516b17d4f11df9958ae003f678f1155c68aae3121820f45ed129a4ebf88f1e774530465588f223488bdc888c2eb24ee001ffffff4a156ffdaddbde73e4781c7048ea1c9d0d7a7a4ca22963a69b6378f880f7535dc1f953f7c0721c070c0ae7998e668e929b5ffdeaa6de804e82c21b473dcedf645645e526f9c5c39aa38732bc5f4339d25df45105ded3e8042938e7b5aa71e6ebe7cefc09c2cdaf6e7e957384a8bec931f2e4448df3db8f74ba1b5007549d20027c73138493551ee264549338a6fa6801a6bfa79151cecf9f54dc75f3f3e7d1ea77bc24d20cfd2595e6cec4517ad60d381d8babfea6db015224d46fa9e45f908ef76f2868c70b49bdcae1c1c10b499df33fee47ee8a3bc01f0fe74b247984bb76fc7c79c55d3a7ebe944fb88b839f3c1e498e0a9989c6c1015921073c563b401828a4e6d714c7ab389287f371b21fbd2a6fefc70b2cf047ab0726043492c23db259cb3f3ca4a0d7827da8e32e241d55bac8eaee7cd990443ff5d13506933acc7514d45e769a77bd97e0d4184c427d77352d9f7027bf2393071c787ba2bfafe0f6b65401f554a39f0af62df800b0011fd8c4d3d7fb54a81986fb50f44d1534c72095c8345a03370251300713bede97c0ad0bf5860cdedf8d3c1e0c30ad4a5ef0507ad3eb07bac8da93e620b19a3ed51f084a40039629aaf00014c3f5a3ded6d071f601244d6591bb6addb2280619658646d7298ba4a7699e4a180b8e1ef67848bfe521fdcdb23a917e4825177d7074ccf1ef893e724be4a95fdf845886ae61e85abdd0f5f7102d6791a7fe0d1b78fe963369c35dc21d8ba63f5ff6c46c0aea51fc15231997b359e6883155a8e86a83ae9b34732fb7619aea38e56cce970748b1588c0630ee1a23cdb82b7641a3a4ab129aa9a4d4869c7d485e3421456fe9a4ebc7275d6bfd29e9c4e2ae3d9ba692bb6297345874fdf984bbea11ba96602a514aff88d4d4a38f0e2c9a72a015ef5347e0ddf30077755f1fe62fefeb1bf11e77b9ecd78f61bebe2c8be64e0583ea49f5a4ee45619c8bbaedef5fddb9379bdc1567344cd1f5271877e9d060cef6dd472d8beadf5b6f6880f76cd25506e66c59c8b5742a1e826ee461fd00ac81bfcaeacf59fda9547f62a93f9b6c7d7965be2417dfa9ffe582c1524cf4c13aca592b094c269495d2af4691be53ea4c1759db22598dd6fbf51b0ada3e1fe32ea959ff7263e8cd7a5cf643c9db4f74e2cb956607522ff43aafe3b87c2b4553634ff489a2f9429f3c747f57525262516991b218f18497b89143582d8a7270340b2d5040a1d8e80eab5fc5dc28630bd31630378b2daa10749cc5bad01ce8388b4131b749a54ffc7bc1c8e3946e795e77a7ddbc52834127bd48a54f39371d796830fac8fc91c7dfa9ffff4fea72a23ef2f8ffabd1d6604dc7598c09ef8722f46e69ad068c759cc57a680d71bbeb7998c6872b7be264f08395c936317ad05aa0745b774b6dc15a3db02aaed83551f84085b260d15ad78ad16cc15a3d30596ceec4bb468a104256c4d4bc118450154d6ac218c198c7debd8e6fbcd436af1a2e523c4fa805314f65eda6398f8e4b5918c9a81b343e718526a50bac40410b9a3569b8a89182468a20ff1ae20be2a0d2258e33347d5aa4b51041d3bf35d03446e1c841d3a7946228b2d878b23366b47f3cf384f68f568bcedf63eef2e934bab6ff8dae3dc3d1b54d70a95eab13a2eca36b83208216d64ea801f043fbb7a26bfb3cecb5f4f83cccb57df29e0fcb7bfe9632ff9fe08ff6d87c2df9105ebe477117de2a1494e419e46f1692a3d0c20af9778f2b390a2fdfaf380a2ba050f4402be4192890926c83924ff2217ce843c763d8635abe94492d72e6ae0f5ebee4e22ed6cb974cd269abc0df2b9dcdf2e077f8a3072644c2f032012f5f78e9c2cb974af3c5c223e0f7aa003236808f3dcce7e5b3e0ae204fe4e55bc05d455ec86fd50a85df3a3fbf59fa7708f4fb8791df3d41bf6142bf85e81d65f27bf9362fffdd85f33c5eaeb48e96bf593b7e6899f31ba6e52b01fd8a9b107f09e857e64ef491b73f113d0cf376a50fe70d45e37790c8c2c02020911d02120189ac068b8044360824b2134c401640de45be43923791670d09f233a58714817dd2cc7bfa804416f649fe30e414f2eefe834c748fe44de439050cf9f2f67957807f12accbdb7b4e01dc0f51401724ef21ef09f02e135d2eefee5909f83e894be5ed4d4fc0fc2447e59dc27f09f8a42eef23cf2580fba4cecb1bf533f5eef3309801880cf9203e79077998cf27c104f0453211d6792379229908b33ee9831f92b7f73e9f1424efef612f044440ee2921b7a089bc109bbc857c909ebc4bf820dd82f64979c82709c95b080a20911df24941fe851c80bc733c98892e097917f9ed00fa266f143ec801827cd2901c79dffc7680edf5017210c95b7f1003dcdcede6b01112c400423e29c84dde01f81c06f8a42d6f125e33c0f6499a4dde395e88cd0741e1871029216fd5e74c7483eecd2715d14f0485bc89fc10143e69882aef9ebf09cabb842f923f097c9db7ea51f8242279dffc90ff010b905b5feb7f26ba403e294847de45fe2713793879ff3c91155a79ff03c944b8e60d6485fa492dbdc20f104864f527117917f208ef4126ba3c79ebf89b89aeb64280bbda9137d0132100914fd223e4bdfa4b804fd291f7fd2002ecf8241d45f20e7a222daceebd3a707ef22ef2445af8f92422abbc47781d2d7cd2cd9be76b0bf9061b922a4ede3afe07e78900bd2ef2dfca441748deabebc127ed0802cabbc8eb4ce4017d92febc5bef4126c2abbc81fc8e4c84ff933cf8a0bc570ff44945f2def1fa8d8003c83ebe470f235fa4878fbc7b3ca59fe443c92719c9db88104864833ea9c8b390c3bc55b04b2c0fa12fb2a4880a7987f03613619d14e66dbf83251d7c52cee7ad63798470edcde191893c2399c833f249453e84bcc3cfc9445827d9bc4378ba42bec17e127d0ef2e6e08d7c128fbc797c914f12ca5be8833291cdb93dae8f9c4ce40965224fe89382fe47de3fde4726c23aa947de3ebe834c84b51525f9861e9fd441924ede3a2ff4493979e77cd0ff4c0180007824e0cea7008af04740105e083ce183c0d71b015d5f0434e181c0135e83afff015d4f0434e151004ff821e0eb8580ae0f029af03ee009393e0c7c65573621f78000f812c09d0f0028c2930082f02d10000f04dcf91140119e0704e17f8000f001ee84a0085574fc1040108e747c16d8e33f003bf80cf67810ece01fec91a3871e801de4e8a14e0e073c563b74e0a86e72d86090d32950db214b9933342a5d96ba7cc08ba227a1168accc430ea18433a02a327ea2e2e41f00e5f98b59a60087ff8a72083dcf717800c2237eea5fcdd81d4e1fd46bdbedf5af7f7b7d32f877787dea1dea1f7d5e0d4b2f280eb4b163cf4aa69da6f22dabfd3fe6a6f25775fdeb71c98c443e76e76f25277dae42a275fa3ded59685bf3f3cbcf287879ec4437fed65b7ef6b6ae09b37145bb7965b39d461ab82add043ffc1b90da36b79f8fec2b3fe76ca1381f84f10480cfd7109dadfb7088368ff1179fcf10df0fca8fc6e7a32d721ba0a0ea1a4770fed2f1fcfef6a8d41734eedce39a7f676ce59516474b4e1ab2925053b2977cdd9ee9cd372dd47ede39cd35aab596ba596e766023318072145baf8d849765ff86ccea64841675396a853aaac749c4da9c1b533d6a84c9440e24b2fd16510ff18444cdf97413497415c172007311248d45ded60a503a5e3c7ad59fa9ba678c0daac71c71d47fbeea1a7bf056504e24fc1198178de364620f76304b2fd2b137ffafae631b06727afedd7a1e84776d6f6a99321b9e6c9d54344f4cd32f2d49f9e0b008ac6c04a3f5955d79ebee61e18b5f701cd0ac27116022d9a7eedba6d69c61148fbd24518a6af69339e1087064a55d4a4a649a9792250d23ba5fd13e2416bb0e2b17dc41ac4870442dd453b6c03bce3171d9d32e0ae1d9f6670575542fb8c0a17e9cf8274b564e8ef32dc01d0fef7028940fc7d35821c413b0923e0323886df23686fc00368e024a5fcd6e8226bd3396b8d1295c6044f98018eb32e8c26b5e27d57ad37411c06c7252a9ef47c79efbfa22ee058aca332d289b2d23d9e0398405d3603472d5f9313533aeba4b5fe9cdbb553abb5524a41406da269bb9012b381dddd316766153da62c9d5e2af53f6e41141916ce9fba362814ca5a6b8352a07dff52788d2e05da8e76ddbd369fc7711b8e9d97023119de87b76fc9177e413865e3c57e29ef46c725309474fc82b0f7e1c7e9eef7e1df42858aeefc46c72d3fa8b9d11d8742d95cacc2dc8d8d4d8edf3ec74d0ecff3beaff33c2f8767f3e1bfdb97a3fbc08802b7a731185339529f4aa5501eca4bfdf6a99b9b8e4b7deaefea0b4a712b2f258b1cf0a0f352ada192525ecf5d3dbcc763738fdd3078febef183d03cd4e76d1c65904ef3d9ba8fd65a8bfa716a93427d9cb49112f51d977a0e0cba8f028fc4d57cbdd0d474af7d1428356a0dcebd14eab34b32305f120b96272c4f118c08447b1b508a1143ed259615c6a9df574b7c032cfff36c9a6653939681a6f8a4b5dfbeaf434d1d9798ae78754b8c8abe6fa78e5b6253b4d5374b270f35d90406bf86bd14eab3f9ed6db00d0a65ad27c9d0da63707b4bb6e7de7edfc671dc97fa0b1e89da3e0a04b95fcd170cb6b2f63bce43a1c8489d0265e79ed4b0f99247b7fb302410ed3950dbb204431ec926f9b45acda6c883ddc058e414d1476a2fe5a80fe5752350d25bae991eb481bded6d0fd4db03bfb8e35ee419e3c92034d69a759115252ae57d1eb7a1502914ca7ea7799fdc40d41af3deaef352286f43f2dd0d7aa9516c78183c75f442a98c9677069afb0be67c1f75a7dd975abbdb6bdf922e771f4a0d6c0646e9b8c485167d41d75f775316c44e58ead805162efaa274ec020b15287d7328e43a856decf5eec5db17646d529f427ddef6d806775de779b7ebba1bef82aeefedeefd4e755da740ba6ddb16b47d41db831645c6756797b878d2516f0fe89bdf438d7506ef95f63ad1476aed579ae7d92a4e7a0391dc5b9487fa3c4e4a19676bc71029cf438ad1c0f4e9c471aad1a1a9adad740ecda07354e85e9b60f53934b5cd41625f7b5b6de5b8aeeb3acaf91744238f9c3ee7b4765a6ba7967317f3aaf667fd6cf5d01f23484069e953bd4dcf46fbc71fdfe675ac9adadf638c3400a8f97d3ce2a7020f5d9f1e69929f905b1da998e950c7a529b2e80eeff85b4e9c3446ee77fded2798d371d5b75ca796df91184714a3e3c08e7b50e52e07631463f336ef3bea7160fdaebed77df71d8969f4f673fb2e4ee979526e997a2a0f23f71e146de379673b9bcf334a0c8edfd195ce4a731d5575bffd37d5f6fe1a13cfaa0ec7a35f90e713d6609c9b4212ed138a6740b169c30336646ccac03a389810989667a8dc50d9e0660365f80945329a83f2947b0fe8f8843ce7a850df7ffbf838df92fabec3a3607dbdb7cd52ab81a80d0589ed6a575e79af9420500ecccaa446ad510f274a0dccc1142947528a78e0e22b3d67cf8a872b7abe4e122d3d3dac2a8a2d776d184c88bb260f4557424a2925a329fdc8a261f0fde18f9fd0ae0381f8e0096ce0e841d383e018c1a8a71ca3f38f2c3c06de57e3f8d38a9eb32854f44c62035dd4d75ddb3d28ca67326394f2e76c4212a6db810cd5b4961951b5b2963a69d2d2353bb9ba8933e9ebe1964863a434461a69a431464a694881f183564df3136fe2e5e829f06ebc31c6e8495974851ec6a714ece2c47463e8f07cc54802a8e51849d8914b6a0abe9f63ffeb9c7326dd9c637fd2777777f707010cc8ff8619b8228c8042881054b10512d00c34e3b92329a594524a3ddf101d6b9aa6699aa6cd1d39e79c73c28066be21face84e21ea8ce05d1e9ac9ac4f88a3ab31b9a7440d271a68391de445cabd4eaf810d37136a58c7ddd017c8f323f7c279402fb0dade0faabe979185d7417074a4de508eda3bbefe8f7f4a3f7fba8e739a59e97f7b7a1e82ba3e6985c24ae75f77589cf9737f7f3e9139abe4b6e9683961cbe68fadef77d20121fcdfdedfed24fe83ecd51e1ef7779fbd7edeebb7d7fdeef3a9049131fcd650af868eeb9ec84fb2757c7c833ffdec8b3fddd40f9bb9ee962173d07a96bafcdf9f96f8deaaf8c962147ca7370ea4f064dbb13e9a465f0b4ff7c943f8e69d732502f556cd04329a92516d352c10d640a4c3fe608008af687a29f487d5993e2e0051b61a4133c3e6cb57492e833b57b5e8668424287c524ab34e0bbc84156e9131b0c51460a96e9adc381e401c7990e4a7aaf3c79a5025dd4917a6963a643472f53a2c8a1a31765de50e9b8044695c8d2c1c405a068fa51d3fe21b937fed6c202e88287f203b0464cbe17c9974f01a142a8142dd784414b15aa1901000240015315000020100c0704e270503424cbd2921e14000d789e486c569e89a34910a3280842c418640c01c010000c18333343b40eaca079ea411373a8415f7a3158055e81c354fe32567f3b997988169e0b612d73fb3b113bf5c122e364fe9743ed6869712f133c18b206823d7a961684d70f9af15f6352d16855c7ff404a7f6921179e806cd671a4c4972cac046321dcafc5b6538a0c3c97f03abc9540d84dafee2866aeeffcf2f159b74fbb4e3b47d19e304d68762a2b94a3415013303cd9c4465387e715bcc4e330bd514014ceb02a80c48c35acdced215636be8ac880cb0ef25963253f0d6bd9b95e6386050438a80eeb426d0775acd1fc8a71002360d1be1a1865a9a5d953ae243df2bf537f3dde6a7cd91993c7a2cc203cf68bd0b50cff10492b61a02df9d5e8e3af1ea9ab1a9d57a6a404347ab0b83e8a3f4a6d255817814e8ba8f1716fad58e0d5dce9174a1b0eb6175b4cdc2138b69918ce3db1d40033487861c215547c9ea5721aa4e39f681666abe3b875376b62b73c0e0607dac702b360e2e1f6d992e67906582360714b0209572c0b91a8f64aa5ae7069cbb5f119ec5d31ad498c93477fe80dceabec21893a24e192fda31b53aa5e2808334d983001c97f25b1a0adad898555b4e2fe8b5e53423276ac10ce2e06787324c55ff7533281c67d7f0111b2f3f596fb5ceb4eb1e326e1ee2f4345073800bb1cc63a8450558c1e46417865bc92d9aadc7e453a4f6895380466be0ef71656f611efb69647032cf4fe2d467f002d6824369cebdbb72ae5cd929486d752c73c417d7890d6682518127a38abe43176a3902b5f8849b1e21555c756c8c443e4b28ac7ae042362677e841d459a3de3506a854b3b211b0ea8bc728f22b65b55f44140c252c0d3bb6e9e4f6d97ae2301fdf8ae81646ed40356ef9ae54c6c9f0dd8530b5ad14c6e7a388a31c8e1f2f1ecf1fb68e7bc5e1a1dc67f162af5c5f5dda8629ec4abb37bde1dc43d18608c29b91edee03d195204f88c5b21fae113da21ec3e6423f6313823073cdc4686eb92d542c5730c8d7a8e8da72808200870641f9b706662ca4d0d5bf3649bfd52e8b51c2b669dc96511c66cc25b1535128d730ef694132d47261fcd35f2aa7a8172c2e937c84bed2c6f639235bc673c0193e0f8fc2e6fbb3b5ff9fa5a84c966bc237932abbd5fc10429b51985037c54237189a71cbe77bfb9e4b1a7d3670c96e5666288786f204ad76e2dfdd1aa393ce047f47c40134c479765a9fa66c867c0d3dd62411ad34b521ad6f511a9c6ae84d64260fd78a718f1937fe9d19b184cafecdf9bb30b8f80c52c432f63427fb97fdefe17310953f4f0055321a9229992de80c6445385d31ef7f3012504a8125b2ff83ebe37beca00a25d5a64ccecfd97ce621d05a25a62eab2e92f01bcbb6be972302eb3bfd71b44ff4698e94ba8030b5505735be55a70959bdbb59600c793ba996ca2d7e294fdb426a2ce41dcf7ab36aee388d2dc6857e904c0a0bd2ad313a90daae5a545763e4dcbe4703c996a06285992e712a6b1f2ba0853af30942350705222f5757a8fa19149209832f6c9e7bd23e73a06499404f7e861af9b72f99770d12c30b839a6306a08ddcc1ae6181a039fb3fd4333f768e3a221a2c565a58fd35afe72142b561fd09dfd232f33b7e842b9dba04c534091b742dd95bb2a576bfe55a4665018f8b198ce6f2431dc35ffb8555522c6a84fa3092169671a0a88328a979394302fca1541a5e760e7fd46b839236e59b207d1b6644284a4312171c9e2c2d524ba38d0ad6baacb4939d05b3b6e060b5d17ebd611daba431b0f4377f126fe76fe1c8eea6a9f7db18a805e2985b409538bfe26c94ac7c850f93f90eecfb6b4cfe0fa6b25d31c838a8a75e2c27fc2700a753ddfe57c76c2cff1fff10329d7ac26280443d67fb0adbfbdefe3f40e3f7ebaee1238a21aa60b7e1494e98a3cc6b0f45b8287eda556d2389db39a51fd2d5ddc830954821c88822b7aaf82ff6ce923c9c0367e40ec4e57387f3936f3f888cfe1b778a3e70fef45a3607be1a801a1e361290c15e9e3a90a7a1c5cc4e84e78b7004da6b8cbcdd89fbdb6e3c2179458003fc5ca2c701f387a173ca5edaed9c0402126ab16796d4b7c22f985ddc1aacec113af10a0fcbec5dc0c610f2b66f4517d3bbdc6598a4cb3ef90917d95f124ac5c6e32144a6fee24fad77211eec626af2b32bc83a7d72bad75286be15dfa4bcfead4fc12becd1e51316fc2bc2c5d4a49af69f42d24e1680ee12e0546a01fc22dd4a3c2b6f9ca4721a17783f446a6d71ac68c2204635482ceba36e95e83b3c11693c2af7f499e9be762817c1f9b08dd065cb2c8dc3618a5ff81ea7f7adb4cf7b9ac54917b8d3201b41e3ed181d9457428c9c16cdb61307dca0e34b7388610bf92d5bad65a1827f840350fdf9a391a32d0ff28f69c04e5dc1bde6e1d799c37fef297f2440ee6093c3382b0a9b38d24f83fc8d0162708b712f9593eb9963e142d784e3ee6c397fb5029b2935022dc3bf53ad74881e7881cf357f7648da321325311e4cd52ad7a40b1dff98e0acda01e450040446fc875314c74d7f502c06d6935f616070e4b96b1bb53e67633bbad763a6b950232de14746ca55684c724cfd5b9d1677075645881f5c344b8f1d4101d5e81c830876218c38af6c17c91fc3ce64964ad588a88e158e541e1387306c99fedceb0d4734221b8caa90a19968740db4deb8b6d6853f123a28dddea9c16c434d0477a0b3f789c3b6b1a1eba64fdac4812488ba88ea2730e1b4b0d62f9405618ead415066c188807809fd21cbe55a2c6a46e37595803e2fd5e4db387c04cd8c77d5053569b8bb374380eb9043a633d632f88158d7216c6e9df7165285e4790f6dab0578a8af8d736e42ec354f0a435535252cbd95dff79220a144925ea8a103ee40b0c8bf84f723dc9acb0859770a3763710aba80695fa2a33255433efaa0a02ded7f5153c7c5e24eaa947622fd18901bb819c5506ee9f7200631ddbdc38e0e83dfed239b8143904721892d49cfb104ed392d141977a073c02e53c19e3cd4b83ee32272eca79d9a1a763c925328e05e7d5914c08883e5625eee4607c567bb336ca26953345f3077a86326271226167843b2055f10cfbc7cc71725b9be7752d6851721ad7ed0523ec5af9c2bfbd848b06884c5442147716dc63cf30096ebc1007108449f4c6988452b087db4a60c81aea93efd6d11eaeee81ea2bb94ec0214e46f150f39199a4f5f28c6abf14198defa338e7b36d29578254d603fa3c9fe289c54fe61e0a833f73d322709b7f30e6871246799c31d39d733e4e108dd3a10a2db989f34684aca9ea90fd9caf51da571c4c528aae66241e0129d3acd15e9da4e164bc378b0f6415b091bd4b17064cc6e91a787aea7fb947e83c75a5fa9b3ae1b34f3abb3ff9592714d134d769aef68050a44a88b2b6521691b9ebef47823b29801654208562299d8295134a017b26210ae481627ace698744ca6e664510260c8b0aac63ccf3f85863ce1f3466131e581446b191fddb4a1052fc08f824298deb67f07e768c2bb7e9b2ad1459ba95a646ef1c64e321982eae620b55fec80c46322eb786546cc5d0653a9f32901abd9cd9adb10dae342cf772a0849d73cb475488991ac5736a2bc669edc4dc8c9440e91a86a4ff52e670655af8efffe8b7405180019f2227508f5b188283a21c778f6f757f5738028ae51adb643da9d5cffd94439e07fcedb0a3b385475fef4764eecd820d68932660fdd6cce3a203e7af54e616938e3b0f6c9a9b62a5081146f0b0cf2ffe952adf3330c608398ec1f0e13e8b5ad890e3c265183a58d8b99daf4324692179ff0f1f3117d8c91a62259d5d67ebc34a5badb33659f1960d472733399da66320447b7f7bd200d12e09e05d409418053f5d91d00d8ea8f9f4674d2d4362a8a45a4c40c31798c2d4097220e3c68226062f145c7f16de80748ffbde87fb8cac7b90208f69181be632ec856ab1d77d06ca0fded02f2d3e9a7288d3dc6e3c6ecb2a6e993b972c193892a83c281a951b3940be08e2609df2290f8a227fabebe47de3415b07887cf6a0c16e3bf0048f8795ed14fa534256be747aa6e2b33247564c8b01f7aedd0dfa4b1f76733f25eb5293f72c40978831e93fe15476dcc8157538828c9e63d76b623f3fdff3c19c793ff1fe86806ec662ab907729b03ce48a8bf44187c905ca59737e8f188fe73acb40c3279123dcc7bc3e3417192710ec71f1a0a79a33c2b037d0ae58622397fc398ba539a5a2125d21884ef3ec4373a95bb1241df5ebf89bb85a8e4091a5766ce9a8d0aa2d4295909f58a2fc9e0cfed8feedaea896534f22c430abf0e0d8c83c5d9e58127aa9aa4b803a22c729049ca98f94f84dc0266a4db194976659ea9985cbdcab1e9313f00784bfea99281c41d5e0874c326d76e30f41dc7f11d72983bbb5a5083618cf036137cdf30c4fdbfd1db0c03407b86188407e7c12b62feadf018bb8fc4b186a91309648ee97604f483f528d4900ad31c59751d3caf4e6aa070715eca56cdc5ec5728e405d2f8529c9354c0c3177232d64e174a43ab9d4b9e1045a5fca2baaf4ab535f5a5b0c077cd5c950b20d07ca8d916a98c296274a2c46cc6dc51d93985acae89a24682c5f2858e4c052bf7c9f2c5f6133e3dff6c51e499686f1092859e474345093482d4611b1cce760dfad2e93c2d186563e1ca6b57d06dc7927161918cc86a8942460700daf1319d1585011792b703b125067f598ade0ce686db2a31855612ae02073d891aa313b97ee34e5d842e05b70e545f600691c87fc864b04c8703f5e5d18ed78f25b85399c505a3ff119588e615f63ebb19ca80df2917cd24e1c88ba3b4dfdc4056fc1d995880ef807a9e2f8b1a39f39d5dce2ea46a5868bb8dd88bfb01aa2b41572b30ff05059b367e8cb37172502edf6b42a8d6c650bb0272ddd16e62f17a8f506080c30247c672461e15e710d1919d9a171e692e1ae67416d2ab0af03e2fdbc9e630030164bb3322dfd39adf5e254e69104fc0a88f7bdbc9cfc926659def2f9d65ca2ec3e47a1312ec03f6148d8515d32f22ec7743fc652f77e006a116c2a5d0981226fddc6f82caa94a301fd35349a8b6c4e6254508da5f20d08de3a883fd100bcbd85607e662e8e63311308ee288950d751e091457652d1307432e81d6e843b02197bf72483e27127b019371b344650dc67b30744035bbccaadbfe11a2da1eadc147c8d42d63fa3becfee78e43ba69a8fbca6437acadb90fb15bf09c6f6deebb2926f2162892091a60ed10d05f9853175027db03e234bb6372a421c24a83b4983d27da6559e8a3604ae5e9c92a7b23b76edcac62e65b2829e0981021e35376af9e09a8ff62966576cc49fea9282185747e538b53f069b4f8d2db3a49aecf95818ad4d02083766680c734aa6071b4fc0d1f971ff3f038da21d415919d41bdd4a1d0659bf515846f11099687aba822f52970fc53e407ff333b5e1ede3a5ec99a548138ae028e0d050be137577b97621018a7a53f0122b9c7ea47a045c04c946327fad53a660d416e913c62bf7bc58ec93f6bdaeb0f068f20200f751dc3812ca003afd185ecce5260a64d7b438704f72e25d2cf2f54858a70b4d1e0eada3480944c772cb25bcd449dcc1a941320f4ab1557e7cd47cb60f9016d49f47529fbe06874e9e6b84d8286804f1dceda9ce718539c09cb654009c70ab09352e15e54532081fdbaba52510c7edfd4915bb61f52cad058320734d24c9534024f6da2beb53c7132ab05204f1aea45ca5f1bade3870f5f950d40f26ebb868d88489f4e340aac51be09423e5de01dea2aa4b1fae23ec0d91ba032352fb179112d6530d22edfa1e8b29cfc46721b3956296f489532f626ace3d138c3dba10f9f6aa2efd2d0766b0c6e59a49a285d9c03217edad4f07ca229f43ea38009228e2c5e3340766990e7de0b22b927eacc100b1e6305a2a34035aaeb286001e2b52500a6e9b8bc24a8a9faa1b8f4946c67e1c3342a9eb08d912fdd9dfec9221a744860553eaa661f25759361fec2210878f2c429969357068328fc918eced434e64cb1cd7ec56bf06d753a369340147eb90647ca9aa4498525da14daa649635ac31ac8f883dbc6611b2e99d1176259b1327d4b6f4e2845a31e52caf2eccc0cb82b5b1d8994203ee28a77116d46e5abd585a47e4dc0a45efd7d070f4754e81a16a66fcd84b1c19e6e6720e8474f7e85b4013932bf0d849e67f13415ef28ed4e7b337957cdfdac8d8dc4c70d0e16fc6800e24a7359f47517f06a8811263264c722b4ccff38c0ea58cb6eec2f1a057552655ef9d01574252a48d33e2d8e8173a2868b2a5e9a7dc8cd469478e30652263b27d0570d91a37d21f06ac3ade92f64efca46daad3e26c4e978316bf23727687257bf49732719408ae446f45f738176e3097908b96f37f779da0e54f4c52483e4276ada9abdb965883ea2acb53edb061efdcd1e5b1f35a07bcdb843d5cf5c61e3dc646c2201927bda56492f0db2e4d0d720d1633691f8b0b1acd1e810963fc954a6fba5e98e7c2e7e1839f75434cf25a5ed46b0e6b70797a0b371c2388663b27061fa2fce8c60c0aed457d668d907707d776193483cff2e143cbb4dceccd85b573ef16e1c4af47abd9e84669e1b7a113cee4191198edd3dba1da8a661539c037eead686a051f2e9310a7bde4eb6170c06165b5304c85dba59d75f8da23736c475239f6c9ae4a2859d8b5afd0909f207b732ec62b9878b62732a8c1e2699ed3c016eb65511fb0abd5bfe6b55d3071f30433d1850e101bc5bf37d8acd90421bfa5d5d74e0b80a1603fc0d30770dd1c5e077e206c93d8af83b351ce878ae241c39cb70f2ac25ac70559fd7cb690e093d67c782ab40ab0f02fc4b67aa406871b95d5175f43ca0c1ed827d9eacdffa715c8053607ec6c42d82bac1d23eff30f39ae21f1074001d3620bc1f8951794f3541c308d6b0bfd8ad841427b9385e6d60da97177ec8ba81320bdf463c2e8a8fa43818b913d7a3132a6c2a116574cff87d7363f935e1fd397157a3f38d06c5725bd20f54cd4375743445997132a22271b083af3da3d500110085d92550dfcc7aa5a2f561573baeb49229c4c16f194e4d52a9516f04041eff082af02a077fad4776091490b9864e0c8be244ebb54fd5de61acda4964a1b0a981b430565346a500df23c133c7a3e25f510b22afcca279dd1ea62d2221377a6c0f3a227b877ebd71da10920df4734d1a8022c6ba266f3e34631e5ac8c24ca3338e706f646f24b3614e5113a1c51595182087d2c905d8e70c5f21ccecb649a5b46965e5557fe42dfe5b2dc3f090ece67d5bc63cc2b3d9408ee5e1ebbe2930d196d65e708e333e9ad06dcbdd1c4889a36b8225b4df7f20223393e26a2b7be90d00e26e078f6692478798fed0c0e400e751c32a56d0a602b948162c165f6f63e5f6fc61b19c41225c8ee1829ca954c2158d3e23c69b2f8b0697863bd898f23e336431f2fdead1473fe0c4c64804619b614a4cd447b9ea41611a7a217fae260457ca33822f0973e60853834d300d238ce205aac40d87cc97570a1a25490644c21201384240a4b8fac43f0a21cd930a11b1886616315fb81df6f0f127709c83acbe4266fe30ed0b7ae1d11b9bdca33e634fabaa4fe34491a5583bb72144e05fd06561cd05cdd3223f95bde352b1d8b37519db577536a4a2eb9722c7b305df63f69213e57c19c413f814cac103f94b970c509ce81de1f55a29edb529dd91c14a83c0d57f683acf620ab6820f5c1a450fc387d5c27d47bf5bc066aba5ab2723d9d6cbde1a713deb0778967e48896ca2333ccba1f026a1a69c09d7ff0db5604be753d2375a4e77d0fe5f7bd2cae027d341beccb9439333eb04314d6b4218708ebddb8ffce4e5121a4055716ad0595b0231cbf7f0081fecb53d99a1ceb9e5201134b43ccd4bfc9fbe88230319fa0d8f65bce32961efe8b910f414042220df178cf1ff27144b6736080d513982a774c5b3b644f28e8a4d06a1831b7aac18c5ff06b04f87a4c68181eb83a164cce65b2649867d9619d15deecdf9eba6dbd9e6794fcd7c18ae69f3a1e57738da40379a56d77ec4856c284294cb677e1c55f988a20d236e2de787d5e5a03d05b2003327ca0116314299dc66c798bc4c817d84b13c65cd6a98c4f67966ab97ae1bcaf136de59cbc9f4a8b63607cb268d29df134e2d7891fa94a65521b6095b26adca8a89281d265b83ec51ccdb0d2149b71a868c587121815538f4a16fb4a58856ffb2260bf0b81611f9fe6427cbbca665dfac3eb4031dce115a0297c69b621814758b5ce0d3495b6f5bdeafa8a9cae189d66831b8c2b4d285e176b0bc02f8184f7ebb9280dea8b64dc1a6edfad3e7a0e930fd6634a1eff84264bd47c1e050d0e7c6ab7a145253e29bf9f42878f0f7186d2ac2e9d919403c85c71411c13db3e9c2a03d34190385a1a636c85f5183f31d9a2455a7ce725cd931c7ea2df366194123f09e3f6b445b320582b2925f5f3c77d9ad941aa63dc8defae621d68729ad9f0d3446d70feccf7baeef73972f39f5ee81519eb089915985d08ea60a166f9aa972c5bea2baea722f4468e85c725b3c20631748adcc1b678fd824cc586e9255173476a642664adff449fdde1516f5c0a8691c4f2d27c695fb262e51b7699d9bd38073bb3e54bb3b7b300bfb15cb4d3ef387ca69b9fea6631f0e0bb4823b5897737eb15f9a799976023cb70cc5cc1419396fad7e6f618bad3fd9d216e8e3c8db18fffb2264c4a7404f1d7d0d1fe3e3b315951972825dbda6e97e26900c9910e2d23c5bcd4f22490e8b7d90444bfd73e9d0f470806a123e947d36553b11b7a2963dbbedaafcce3ed019211760553aa3f06b29e25435afa89f5263233b76b019edfa964a041bffa487cfd1438dfbc92daae2ba88e8a3ec7a413d7422b8240d0819bc3f31f69bbd8715baca7629ff8afb1abc24362c5b50cce633d6ac193ba0de3cd649fc1f981a760b1893b135dd756e9ba404c5d179560f004e27c9c2011ae3c7f08370a55028c43a83ba9057a57de5a5348d326f27d9cd67d40904d3e40f85d9923422049e1b114834464a5411427575d94735912e458099f419b945f8cbd6d0bf827b978f4c2d25f31a42334b92a5ab0e544f0787351120361070a3b1077216381a1a3ce5cd3f8357326fa1322773d81b31696f98b3ed700c5df1f72cb4ec094e4522c65e54b5907023455d6615d67c1b106fdf4946d28e926f031c9cbde98db1e17cab70bffdefdf67f56f6295b45942ab9990ea7439df2d9c181051747c03d4ae6481751f7324e2614a0eed3a7225aaf4db4eced89b453c06e6603075774aee161003fd2b361edc64c566f1159079b09cb426c895f3d685d0400c240f40ba8ad7c95287ac3b8bea0743fd6183d8ca087206f1209a204d574182f9281dfd8a78660f14988f23f85c8bc208bc9480ec46105c06fa1eb27bc6331ac7951aa94aef9ba5adab7e5aecc6e02ec01c54a84f8884072867a8c27ca76b52b18df1b3a1e7fe91430c303b29d75ae9fc07395c3c50d879d286bb585151e3d52676039b2ec1ab1cce3f8900fa89b78ad51f99eeb9cd45c1f9ea625886654a167f7d5b57e14b6bb685186f40438b6a1382def289e9fd2e877033ccc6982233c7087f1471c29046dd26a5f8db2e9ee07fd8bd0668346b003f98bbe9b8d0e2d3f3452d060e9ed77d2b22d1e719d36acbc817675f16cbe8afc3a5f617a9314fdbb504ccac592e671b2f72284078753cda99cd560d55846b89952bb48a969d2d614695dc704d9109f56c6aafdd62eda573e269f713eebdd544f0f015b60e07893b7fa634758fa57c088aa34f4224cc408ffb28fb1ede1dcbba7ba88e740ca186a2d541d11f0f69c27a73536c8c1bf404da8dc875a2e0469166bf25971fbe0aa63aa2781aa37bc0ac26eeee0ba7f7aa88efeaf22b533b0fb59025cdefd2f3d94cf87e7061e90542967f594eb455c14d24350062d6a7a720bb353790227b710d9442d9e2f40da77ad47d844b10f7da5cded178569ceedbd6346197c942ca7c3d6f8f3fc71499bd883980af57edf8381e37a876065d278006b4e4016ba821dc012ced5d88904605a2867a51d82bde3683f91df1135a9ab33e536fd6c8b1208cfd7dc2a86da952849a0bc5b1470af143b60f9dd905ec114263e4086fd5be5df3c5acc49e978b40307725d289242ff52410fca6cbaee4b02eb9b90b50909a84fbdb63661a0e057ad8fa5472a7d08082609d47c285d0986efc639601925379525faab53243550c2d6a5c780f10ccf66354062c7988aa07c092eb7528fa9404cf8fa542cab18fcd4800388219006c29679d2c7f202e581e44acefe237e68c2b5b7157cff28a56bec38035457a09c635bf3896030b27ecb66cc4973de2a93113f56ab71e3afb815d12cc095e777fee1d30aba518fe4f5485186d623d128ac1f2d3e50abd9e178d2f233c9648dfba742c674739522ce5c68822e012cf419c7e73ae2e69b0549915cfe5b478849c2e24057f71f11e5b50e56606ee50fc7ea0a40c8c140c9dc3efb250d2b25615057d9dcb4bed7ec33a3a88dbc013d8433e231735103e9adb319826b6a36c943a2773ece080ec2a0de6618c3cae96d0fc80a9a7ec09e6a3a2bae7718a3d7ebce40ae448590763d13464ec5fb63fe95881fe655cfba41f8b6c8d41dd1a8070d068548555167b8cc80062cba75416e7e6bda10d8ce21dad4d4961cf24110266ddb630a4905e4835bd2b0c049031b92d96acdd7b68fd9576d67f662b60b0399e9d28f1abf07e7d6e801aaaf3f86b2ce5c8290ab14a8af5016032b831ffd3a8c40611b51ef3bc1e02dd4e1f4f240104bf94ee2889307a1fb3f30ce6f36dc4ce9a712630d6a012cd9b835b644d8dbab899f48e1b083e124173ebabe2df4258db5a2a70b3c63d439430224a30ee9073cef827b474b0e08aa7b402098e402414110d1e9585c9ae047f9697bafd00f584d6e0fd899167e5a2951e782d1946f94fc6ce6d01f572581161b08d8c53f6d8a6f2716446baec573d3a4871dd2e5f0632189f8ec73988c7617fa2cac9a80b617fa042c4c4c6abb606b5011b43118a36b9f4aa36ec555849027939d15175ab5082ab118edf1e485a1f671f3aa64ac3b695e82d2137936137d844fc1deb58aecb54f55485bd1417e39ac68a518fa610e99ae440f9099806bd0e21990e1f7b5accbafc76920d0684ce16bdd336665060b7662c929734f706b2a7742cc92499056de43c40ae7d2a64fb5a8d086c72ee43ad4b5d16670d92906de02c0aef00be57cb2f1d99622c3adc41e7c5f33c76813093db2e55e04231d4129adac69b36ccfaad26c49764c854e37833eb5304edd7e37545b30c101777c8e93f4ddc00480b563a4f466e6e2ce3170a46d3dad4e916ac80f1b1aac22b58ec1c8e28f3d20c3cdc173aacea127ff085c942e283c7dba50d56175d5e3eb2acc04fb73cadc500a33e85ff510baa5cf6521596f8036d133e9635788b94dca11b398263ab0f348d1f32a9eab8a38f5b894d537d1d1d917377582bdb1102177a5615f2fc4963bd700f80d533179be02a5b691e8888dcc8d37e8e588336a3fc989bfe892492af2a92e901a093402a2092c21bb919de6d103c1ecf6e109ac5c4ac7a8e66b4a3054db091d41b1ecd4119dc9f40f0d7d00343343035e72b44b100c54878d519abf57ca9154bbdfdaa037921e9eb8e7a8f8512482609dd0ae5a99050017652697a77529e53c334a71f040921bf293600375ecbe547a13c29088e4d4bbd5c53731732801b7298036e30ec4ac7211b36c7f36323cf0ba201f6d4ac50c837e6299bbbaa384f17e3b469fbed4e2425ccc4c7dbed85943256f9d30106d6c99389894aacbb87e184ed9ae612a38f24b6fc8574444ad897b3e98718ed54e5245dd2b14dfb49dc772a73a3e4477a74bc15efd4e88c46608cdfea157c318975b08b499a3c2ec4bb2afb6e2acc09e454b5abdbbf3274c3d8e22d3e5a880bca0cc1975965461bdd513e7d179536408197c10b9be6b4c7cb3fb39c6821bef344b31fec7bb42dfe78bde77e36256f2a14cc744809a6875dd8998e6db09510036c362c2c24e277d1acf0ab72d328158a6f34b9bdbb8a500184cd4614deeac719dccf416838a75dbffa29ee45bd05c505569d8d96cb1c74f866c96da4b0f344c2d71f251104c684cf930b7101a6b10ff6776cfacc49bddde43edb65607d971257bb36d00a67e4cbfe756fbc10c08ffc07cbfb51c56132fb0862b94c37cf1fb4282e36453d1d4ee38a0b94cdab63e0bb9a08956b8cf03da543ad9f866a59b590053a53af404ee35a26683a8811792b5d76df945fec8690100aca8d2d0015b618f9e6c17849fae1b13fa2b7dd1ddf101f3ca6127e647c2bfde3d96121dba7936e031c01c70e64b8cb0c2b04fb4503ff0fb0c58cc0f6579fc5129368156a6bc534624c5d07e4eb20a4ac1e15c468c0eafd8d544d55bd20483b36096c8be5bfb62b03c07e1d5f98ae384a29f60af25893ff80b8814c573ad61ea9f6b8f557294713f0fb22143554280ed3a3b34d4f5d84474939b7d2c9f7cf205c4ef228cd34a68768c3b5017dff75560a52b948d85be50d4978db3323269617e53554e369ebac14441a683f059f055744b6e6170171fbdec7755f7705c79fd7ede47f67a9da7d4c6dffad7ec4f64b83192273203479e42b3bb004c91c19df282f5c57944a3a5cd2722699ca258a156c84a58acbf890ac0fec296328a1d65e18f92229a2ded082312eb29d1dbada4af3f07d66e7670f679d2a2d71a45968611b3d2ee4a530c76ed29d3c5bbb42199fc83824d11ed71f89c38a8e699ca745684628aa2f1980d547d20fb4beaadea7fd83ade331aada570d9201cdf8ff4ccbb7b2cb518fff63b69ea76b957d9bcccae01cf6f64fc403ad6fe91e9b8a766ead699a21694f077cab4e231424be8022c6ba1b2ff52fdee1452ddf9cf9a4fb42483895dc8fbefbf6db171bb9bf4eb0270eabc66b1262495209736bcc67be467896dbc27e95712d9f3f209695271cf6166e3c8b03a6a6ec3e84265098769f1b1bc5c23d67a4b3d34d781ec71f60fd599531c520269cdf52401ebb17499cf9d965af15c4636b260ff6c120b0ba951f82e0b25c94a8088fe014418044b8c8992c757bfb20406d43be1f6707e6bea83a7883cddc26628d136989b63922f3cb25916ec701ab671eb1e91f708bc9f28e2806c8085f4c9c82428f8859900fd55e5af851f9a8a12753942f3f13a07d704f4c5bf0da5ba5a0e523d6c046233762632605fceb6a320c9839714d0a1c950dd31f39dcb8f71d1bdc1041a100ec28a38563492f69399c26fe632b03fd381b7aa2830b6c1210b24d0ad34154b22082b82696a025ef2a14a8784b9cb050d62b1c4bb44e7ae09cd029b7822f792449a2cab0ad0eb80a91ccc70245545de9e2ceba97c50102264833de3498694d931e6628ff6edfdc900f89740aa6c919f8bfa439fd21bdbe73165433673a6616a4d6b40b56688d0e3a0c6e0d4f4070a9337c99b6506e1e46242bb5171fdb6f310415a5bf466f480ea6cc8bb7b220308a472c999b829285afaf33e0ce46d073bd9e3ea117c5e07a70ec21ed7611ef58769c298cb6c2df9b23282b427fcb91fc62fe82e97cf3d7846e5abe50f3c30beed49de6a66c45e42c013168e2743b85d99184f982a2677c699f99f8f9d2704b1324c1b2308cc5b288f86672b1b67c8dfd969ac24c64efd82600158c6b50a4fbeba067f29270155aa2c03fff3e8ddbaa72bd5dc9dbdf634ad63a0ac04daf04dba889a2ff327eeff1d4f697b2a86942736522c03b3238aeedef5f42c6f32010d4d412644c36a8257fa3750322729fd01b6c79a25560443d349934bfe7f44da4a0576929464bb5e356f7f16d113001b9b90ffd61574d0a643197a36d7467afd8a20ac223d0db41dcc1e8991d6f0c969207b593ac3749f89ee61f07a7752fad7962a1a26d622d501cfaf6f29db67244294643cdf47a190d4198279aa348a07c07a1683022c5948488e957244752264b46a813ad6daea984d13ff12948dadb173b2cc3a34012a03d0aa321e420cb1cd8f030e4308583411b885dd73b10ba4e03910db10198f94191d2dd1919c5e9128a800cf050fd8d82db0b3d8d7f7911db4445b3654867a3ab0d0bb2126ba3235e5c1d3a73c32794a999d2c90131c2ef344a23e52ff8ebd7165e2c62214a127fff6d28dcd52c214a33934062114ab12cd7d2a7fa2ff983e900cd626e9f9f15f0127307b02205e4614f9bb7c3bba2b2989e452b53277b1d0b86ee62038cd4c83eaf1f6d1c4ced27dd351db6e0c808c8af606b44c54c6368a627ca0263a700a3dedf47b499d2a99b20d88521039e2ee0eed524eceed01d66814b20cd43612cfe6a388fe223af18c0c28d253ab7cbc109e39acd70ae146145863af286137aa820853277cbc056c75bba48b8fcd64f901027d799d0d52c833c66388acb9e65b2dfa8956599119c064fe85fbd9cf651dd0bd3a5827c5d2f88fa54eec05a2b93f2ce6d547b8c21e916fd7f6512c8eb63b907c37fb9c288e13e604df58aca8628f47b1783c1ea85b8a6887a651810130bd8ed65c1b53bd705e9bd6b72ea7d55938e78fc5d215b9a7d1c9b3237876e4a8551953e636c4e8e94e92d39c2834142eb927a186305977217f157c750fbbbb8fe054d3146d99f883e8695874916cc3b41139ef74fe2e11be3ee34cc9ec7eefb1d19ab4c0e6741e3ad4a0d642e12679b48f907de26af3d160f0c925dbcbca36f8c62425f7bd7ddd549d2b7745582eb00e9c60ec2e5c1b6d44457c6a0e340934f4c90a26df0c179933dfacfe0e8c94aa1cdd7e220324d24bc7439e078efb5b1d529cb6c2d48756e52243bf11d1401c782a1b4d3c100872b32088285c751d8e31588a6b0e48dc91b46efb78324418ed83fc543db089616b6a701d2cfb16c8626997c1662f9c745c1816300822183475551921547609e0d07ad1273886d8b34160a031e628426b1b8cdd96a0349baa81b728e80302d985519847901409e47c6f4470509cdecbd93e3a1bb491ae52685bd0a482a26cf441d4546a7203854c74c5af04e9fbdcb81bed3370b1425bfd5d8addc2b72fda93f08b6681540d71b3265715f88c6a588a12ba0f9681de65fa550007715ce561582271248088c25d1b1428908c61ee7c46118e9524a4a5649c38faf27622ab018812940b57de913bb9c88e070cc3ed39cd7dbd873f6a5b8d39edfaea46033d2538947c9307c0270d4ba493d830cd84112d05a38c1dcf2e231b9d0ac427bb27b16dddf0065b48db0079df21f72559bd0a7379cc6224f35510c1129eebca4e5874e2702323a8a1686f304ec843017de5b44fc6413385847f7b9f162473cd17446583333abb9b946b9779aea95c250fa5dd78174af9c3b8fdb4d18412e09ea4fd29959d16e4e8f240d541d2de6df3153d91abb55af8c8251c212ccc882cb8928096b85fbf4a7412a1d8af7cdf9701e677a28a68ad138313453544ae1335fb34cc9e89a0d9bcf800fd62eb49283127be0c9bd059ad64985f337260d54530576d41131565ce9e8db98f666f5e46553c2b2104ed52901194da3866b3019c968d664a0b8ad064e51614a8089e15759bc81541a6a347216e2a36814260fa66bbf731c4f79521af134d15f01a8e45327eedf90f27f8758969f94a573ead6dbfd69e4906c8309248ba802577c5ab5726ddfce1620ef52230f2b5693b54d28d237f9046f57420dadb5f111f37aced30c4b4d52808af318afa7d29d4de2b0784803760659202c8b378b59efaf5385434199b82fa7609248f7873c51b573ddd96f1b87488fa0cc24ebf2e65dc53a3650ece109045aa9edb601f2b0fbec20bdfd2df163834b11030d2f9e91cb4569485f18be27bab2085f17ab70afea8af990b63118a5483b8614986c0e149502ed955fb858e49407f2681caf6291ad107173e18678b668a3bae97f1e52aab8a6919aaf532c6ae88109114338914c083692a0a71561dbd1414a7cbea0a3f17c7e797f7c215197a3e6d6abf5eb240a2e0565eef22256b13b9b5db65eefce834388e7ff9dca30bbde1880e390d533be1a3044a9d74db52ceaff674841a3be82882c48c6ce3b95c7a5181caabef92b3ef482c1d03ecc70b852a550e621b2bfcee9100485701e9df4b901cb8c0114e0a2d50ea52272fbb2c2694be36d59634aae07ec42afa2acb26624787251d315b8d1aeb5c16662a1629bdae25bbac9cb943eeb27f84bad5636f9bca3aadf8401bf97afedb26315632c9640dae2ca2c88ef20839b8bd7c83efa31a749988ea897842c35ba66a1c4d40a551d652dc900ecefdfe749d033ec45727c9fe52d083403140dc507e7ef8482f1fbbe791004f435edb045d627f86de1bc4474ec18a331b7f18c76554e724fa10ff20a47a3495898be773f4bcdbd5ab44e50bcbaa4aeff036a048a3057936e14f96040656221dab8dddc468b4fb1c2a5689a7fed6466e01ed1f273c92b08d9d8c5efd84a11c5f7d51da960e5466d9abe1ec4988962abd9e5140c966574d7030ab8f68f832a18836c5da52589a493dccd0ac38b77fd806ebf0858db00d891640c4ff201da001147d67ab1cbe8d7a7b9ec8f5f8b66ab857bb7e13d4fb758fef4af9ee804255bafdf7a687b582e278c2061f320a17d4abdb89708169bfd9ad1a45c432fcefa0610e8eccfaab288d2c9153530471e7c350eba6a0c0f807d85deb847df09704b000ee855a52bdb09365999cfdd5631e4c7c329324e29b98c0fc7cb2f45b666b1322789f024a0913a4a98f646c5da44740c8e6d7859701f47a2582c77011fc424c2d5a1a615e2887e4f8792452910143a7eb43dea250436e1d533140da7297a291913135db96a81e7544c7c6ef6ae18cf92c301db82f6fdc52cb19ea77128e237ed22365fceaed0a7256c33c6d4389b51c1158b73bce170cd561876319854e170d4b376e9c5b8c4c2def56c1d8753d053d1ede3a8546c58158c8b47b117c7e02dd151322dcf9d5b2825cb20ebc729d2fdd680152f91d451441775da9174bc8e45924237a28a3426547e028ccf6f7abe9a8c674af3a2b60ea89c77f4e5b7046d567e1a2ce19fe09759b6aa2f0bb4737a6cb1af6a478a9206402bb42ae9907a053bca24c340c26a846143968af0a6085048304d63391ab8c38b18eaf60e5c8690713d0e88f7f32822819fe08242609afb159031d0eee7bc61be5354e3a962f44df86ec5c3374eb336cd8427c831db65084792ba95aab226531d0856f2447f54e1db354ce46f168a69c598d797701a45ee476dc55949c372600ee40cb7634ab61da140b010e61743c81ebcb8bef82d4867110d545f43c584de29c19e53c87f477f22ee2c02b10def93b5bfdc76d3f869c2967ff304f1ca7079184fbe1bf765643e6833e4f2c6e04d8fe2c2c59194e2f18543a8c90aaf3f8a0c747e905b79b7a8f70912b905a5a68c1eff23e8f219bd949d81e67bcf0e1582e5a80ecdcf278c6c878127d7b1cf14fc90fb4a3ed817e1c7b45a6ba452b0d2cf3dc9b6919a4ba206027823abe65887bf5606b814d49848e28f4470322844535be84eebec4803c8c92c49d562858ad9c410330d8fcec67df637c75fbe6efc5625022c008275dbe62e3c6552f33c6b05038451486b1989ac2467c4f13b8261b1dde81c36674dbd5220bdadf24cf619f3601bfc3951d869d505dab7006edd41909ac3996ecbccbf1a0248c8da4d140fd1103ab88732624470b0977d6353b2814e09b97c4020054215dc73ab4d90c9fcec30bfee714e0a7a5e365108deeb9792e09ce8d5fe763495ae979d3140e974003d8f26118f9796a42c4e3da94fe9cd7db82b484f640d315dc1fc21013e9bc3ac2715de4a077d689b73b4236fff681b73d05c25cc1aac5b99bcfa0dd5acc5a4188d91a114e6c01d29628528528ba803b148bfda183df75be8fa81a7bed21d6b6bd9bb9576f4e3de1c423acc4f043e0c4adace62689c0624be3c93d40dd3336c7eb799739a46f1205a954d2dc7589b5b8d3b54559cdeec2d55e70a003f6c0cf02a65452a51162a055e08e87d444cda692e2cc26ef29a94f49fd622a690f3a1b0110cacde6383d76280cb00940a942a76ba10bcb53da2696ee7f0bcbf1ace8a03c743725c2ec7e8e7ed34e926514485ffd4248dce08fa9fb8cf3a4e200d1097b20e1d73c5f817042653f00f39eca6b0eaa4bd69ab7804d59ee0e9a9f76598a010adfc910411b05cc9b8196a1b142433bd6b164a91566ecf1b087eeb6ebd0236b6bf57f3f9d250cbd118888e763c276c3368b040fe9f3fb0f60dc178b36a7f624dc0ff00cdaec6a165563b0278d497d508f94fd697a0ae6f35b7388d30de2d2149967427e123a82804d1d78f6172e7abe0756835893b935c6e81943aaac79a3c800731eb22658096b3d8be5bb8bc987deb3cb24b99609a30766ecc524eeeca67c28a5f95767a8062ee660005fad0f973714cd1cb0f261b62ab7b8f08bd93e05cbdfeba2f2f268d9f14a850335fbad7929b80212cc079867286004039b5d64c066bcf1af5909f46b76d05c2bcf21aa14bc2e034c55e096fb36c101228659ee8c656474ed2516393de250ccb55821ec72759eaaee5e50a0d5c459e653118c07c6728e9cecabb9360b5ffbb0b66dc2fc235925656ec6bfab6a87137ccd4ff36d0ef7bc8880171bb935d22959b9de72da8eea9473c6734cbf236734ec9d3dddf204387186fc0c5b816a423676c8b578c248e492045de3a687508d894c8f4421c75677e9337f94766d7bb26063c6bff59890666afdfc8cfb82b58ba241dd15b6e0b685517984a5ce762c439cde5c2327636385b27ec203039b084f5a30ab0f9512a2f0442639d1f5a258b0225bc3937fc34e32bba3338b270b0539c3341213f3b195bf4ea8bf12e45e77882ef16b1e9983b7051231bb4569a06e9f3528a231b46e59b966ed961262030105c5dad3724e6f4afc030d05867399c6448a1c9c7de5abffbb942c9b4ddaddec2e8f341aa1c539baab28e2e960973db409c1275ed80341266c038096e1bd2c34d34d620c0d4e2e9246ac066ace3a29f684d293bb396009cc0700af0b2cd6068705512bf2d4b80d76264b0e514dd388e5c04f726bccff16157ec35364a093297ec7e56e3dc55d86cda3e44cbc54ee9ff3a8b94b20753678f47f2817f9f0f1578d52cae6850387138774ed190c313ca90acf60d260e2f710fcca03c568ea2ee3560d741500c7ba9ba66c68b171ecfb24ebf98b0e6c845cc22eb4c0805445bb1b8a1895f4f7b8c37086a55c34749edadbcf0d472b57a037dcbe0717b2e99c246a4bcaf4bee1eaab70c72109fcbe9cc67bcda582bd1f5d65583c32b3da4751bc1c3f04d6eb278837b3d066f5d80f4d3866172e4d7993f6a45ee15b55d116b034fa83daaeb57352d52a8e1f43776a060d10b6359b70b691137178fd89ee9e7582d9c44c583540aa82832d09cc096e00949f8e1ce35edbdf95331604d64110d61f46dc9f52c841a07b10e33dc67dd9a25faef39c9eeb701c39cae38f9ccd84ec7d2d897794a6e172907e64b287e0b7cef9a57ac4deda862cc215213acd21d0dd7259ee634232869506b0db9bea7345de9eb90b280b53cc23d57cf3eabe0432d5062253c9db53e11d5317187c86f725f4478368e2f41d4dd54c3e72135e86f33914a1ab23cdd57396ed553028350a3950add4bc30019754b47250744c6e6962453d06865cd854cceaa9ca7eb26709dd24a4e2a118f9680da6f1a7fc4c920a348cdbc43a21161f256dda7fa0fbff9e27f56f806403823a8de2bdcd6a77d08e74f3c1843fe11c9d958ca25d9521ac4ad461b3b3be22106973d0d439f0aae4e3800908d279395dc1ad9008b138962dacce90572cdcc41ccdbd96a5b5de3382ddaf951c7720f34d1e3b792d9054ac1d0da4df0158a3e5b3aaa277d4e3de52de7319778d72471d1b379a83e514e5b7ebc01d349d70029955f958a303506605a5d7d6bcdfd0389a6425db9beccafae4ae7eac5e27ff5756d9158d6b72b828081efb41dc7a71477a8cef2454c133ab2bc469a039d47159a941ef1573ebcb7f04666c0f734cd01b21f2ec9d4e4cce8e02c58c1a6e07f608a76dd11dd7803b3fa6bf3ed0c9402f32d8120c3f6646ceb454293b484a51d5deaacf79722f7a7eedb8cf9ee8264d4f97241261ec3ccf4a7e64fa070afee7dd2663b567455084c13d58be4e7cdeceb658ab5eb7e4575e4e5434e83d098afc293fcad89f2cc6a1ba53c441e48f940cb6211e8604915b5e6d869a41462418a7b2869314fb16f2cd2405291d45845f9fa9666070ca79a6c377418d4a36ed8cd23ba5aa5602c7d1fb7e060d8608200ddb1ee1a1d0b4748a9cc684ccb2450dbdf3c50c1946f4286184d8bb99c6b2e6f6df21ca4aaa4369d48fc1cc58cb7a997d1703f29a1e9a3a4c77e9999d84ef63f12eec118427e0ee572489cc7a851af96b540591fa3548b6a64cd2761df07f870bd60c51e3249cf327be22938778df74498fc9ea5ab39d3a997cd78ae13ae3976e52d63aafb04c0b89f556222d8f38f938ca856e0e23aca78ec01fa148cd0bd91702301679634b2a0fb64a64eabe2437fbc4aba08e8c9d2f839f4b10372b911aba1840bab2d7afdc6f80852b450948f234d0f80c0d62876caf69e730dfa8a46b49c94a92db439642f2aa9209bb82194b39a11b57750da38215f2eb48a7598ae9e0d5bf690865d8b692bc109b07e5104c7a98ae8982d5c8a6e887790ab2ba67201175c3524cf500b5a2d906b7d8a4085497773516ab50a0000df7838f81a6c9814dac5859efd087f0c94bd2c8791e7056641caf72eab597a600fb4eb15c3f85a679b8e370227633873ba1f1b96b040aaa3730ae1e3e76cd46ea3415e03b8c23b7c124bed0116f3e6a16364a051d5553b9bede0726b5b352177c71a59b99f7090dff2850a2eb5263d292b7c96683bf0e244231ac42e6c1dc61729c4f4c2be8647f8fd0a455cdf63d6a00276f002434b110d1218bac2f310ebedac12d9a12e6310dc21b2ed4e6ad60104fcc517091274e952c9ea83858fbd48cce056b22450d347da1cb4c80ec50869abf3a892b4a2344c209e374fbfa7e6e217f6ae43cd05c2cc1351751d8bd92a6b43d8975acb7e323d6a791638e6dd32f864d1b46bf5ea48207c6b1c981e5b1e9d2c1ffa9b1d90c21d57af296537ea2fb2aa096da8fd09772982b25d0967abb1feda34d09c504cba510876f50377e12cadb574ba501447b701a0dcf944455612984dc5c26142a439daa2ee43f70528c55e1c3462f428491280e34d7859ff103f3fd43a5110ad5b5c4f6e732c4929500a4e0204e4e387a095bfb506e616be9502eadd3811f9ab3547284a778f9d630d58324cebeb2128a945fab89f5b88203175ad0bf6e193d1827402c0ba48560b24405f42581132a5e499b2411d8dc17a151275520d0a28a61c5d86abd2ceb0eb70377e953c340d616c183cec0e944624a06b3759e86550c6717fb10dc5dbca1188e4689edd35ba6e17c97fe6a6a496ec8b810d186f8cbec7ffeab18f58fa161e62ca4e1ebc5b8c73e611bc625f95c51af0c88ae3bb5a037c907ea0c4160ead7cbb0e56e741637ea934940f46637686e18aa9afeb06c145f608cdfdf164329ad1f3109e0bcf0cda9a8c1565068d2c3a16e6607a6e9120b88a656b3759599a0a267e658d55470315ec2656e9063d554c84248440e751fe3f070a139f433953d9bef24e11f5753c8765d8c2a08ea4677c75dcab8a5bd12554de8f3c6cc1c1efb96d00f5c3bb09816854b4f648ff2192e05ea2c4a2bae4615efcb12ed67b93493d11a21f4ea9db8b287730e1284f8763a61fd8ad34e711e1c7776283ee49acc11049680308b237dd4d54e7267025a34e42aeaeebabe8b3957eb796de2808a9cc37cdcd6846b7aaf2e4d035697da175c28cb3039e5c6c19c86e93996bee421a2a67d0d6a767b90ae1eacf0905d5e6c8e7c7131732425d080aaa5a10a00480b0d75517c6ad1588938c6aa2d229ac377dfb1074b0c596100b59c3195e55e49f9c833518df9a533269f2b2eb4d3d88fec5b36802828088b650ce4a8d4410626b6d2e96b4a3e7e0ccaa1fd11966a975df49d9ccb11be1d695277051c1f54c14dbf7dd2fcdbbb60d26fde9609b78862e1d9dbb577a2d6931bc6a213492f9b4a0130946b4901396a58cdcd633930c9f88ac1cc7855c86ee235ade11bd9c5fbaa05b2cbd12a1d5dd3fed496793b325bf2fa48118f032e98ca7d3548fc90f3544635d5766c4657be37a2bc41d3e6817257f1ecc1823ab8b9e22808756434788cb186c5c3b64abc2fc197211c97460894f3aeec1eef0cc1054290359d98a001637a3f2cdc25cf7ac5f05fae5a11878bf4f4717b3bebdecacd925e95857764de181f95108d52dcf7ae3c8309669020734eb2c372ef21df6ec68eed31db6f8a351ab7f95c84398dc7f8b3626c4f004cb3a1d4e2b254e4a807ef0610ec8b099c8a27545e57146022206291df2210474339ad58a0101532d1757d16a8a7ded9760370a7b2888fce5f70d94a44da477a07d86556568277e01d1c24a458ff563418b6a5faf59d7c9e62f9b245c167beb5a2a8a16626aec453124a09f9e6ce0993ced93d08f7757394198938a00cb7c3299e75c46880820e23351e3395109644e1304c46c5d661ad105e2954cb7462ea00ddc76a9101dd748cbf3590ad4e6aff51545c4b6eea9e6e684cf3021ad42eb265a620fcd593aeab2988614827774b37c89b24ee5f97e5a103029cb7ebd4b94a085c138b20a031e1f08dc6581ccea4db9750d24751d092a00881a5b4caf770c5181c4110fbe4c5240841794c8c0cef2493e4b9bbe4be35d8f64ca4fc9bb839204ee44b7058035eb6584742dc47bf36b9de1625e4cf170147c768ff73ed0e26026865cee0675a9a7b70353000df263df23a08f1273db4b31df8a95e459bdc1481b181930b2c0243aeb0dbab931048f9166b82f4f2c0264b5a40bc6312c5a7fd4ad75aff1cb25568f62bddcb2aea60bcaf42a67856266e7d4725ef9ffa9463cf8578ef9d4baec3c4431d1d9fe82733a580a479068351c4af2966d4066d3d6b03a8cb5350073f96ed1a3f2a16468195018cdfd4b2b8e07cefbcadc6d7c52c9a44f69df2e7b985b423073bb02f051534923a081940b1b3ebc025c3671ac1a5f9227773e4878cf8d20b0d028a94ad0595e42d57235e19af81ef512855fb6d3409502ec25ba0ac302985daee5592dfe953c32da885ae07e0d0ec7efb4329279a4b25a244999085b8eb4409c8ef6fa552211de46f17edf326fef5344b28022a8c2110390bd9519fec17430271df681dc811dd118f48a8134c22bcc6effe49e1965a39465c8641641b2df61966352f2e3e74f883955d078ef65e2a908d350c3a7ebc7d4124fb79deeaf9784dcf27a2276c84a11789724f76a66f956a89239b9017bc71683ca2a593b6028bbab3c37bf2e11cbc5d5b32a084e16e6035ae6739eb74f365d9abaab9b98ddb4ea8c24976ed6df7e635929ded8ea2d82af3f8a36258820771f4592ce10e1e6cb9a44223c06a99cac9a4307ceb9a3cef5806da1fb9c575f5ca751f3dfb30f7aa445710bc3f22abff51e66ce1ac5ba6a981055bb542066af9a3618317dcb2776da3f4911d41bdedde3658d68791fd1d4a9801d04a81f644b8991bdbf0f9955c861f2b6c58b1e9fb39c6e35b318165722436ac9c68be56240b474e26b9ff8cfcdfefa48be864e23c0adb7782916757cd05881ab73f1f650df36018901838073806e07c708420334467f04710eda98ecc16d0eb027ec2ddacb4c1a5477ccb907f0b2c719bcdc6323b180e9eb2e39bbf19d2fef8167a00306800a652a3b01080369c2546d79e06fe028e4b97b45149d3c18153b649d43df9cfc74b4200c4f5ecdce2596e9c25c53885966cf637fbd2c1f19870b22ccc443a1f0efc7188748ec61092a8c8db62779ff70b24277ade38676e8a3a5c30859a293d4a5be2fd9363970b35268a232c3dc6992bd55b7ad5f4390bdde56516e1355ef179fe15da6162b98c4a6a6aedf5ac8c44d0902cf203332c704af1fb3ee41be46820227fe015831c3d22e484fcf6d38bfa9575e36412b84d4d82a8cdc4209f8a1a0f1c401ac47d83a65a1fe6b0bd8752491c61a2726918d8b02ce0dc053cb396b3c7e4dfa8c9b2b99827f0289a7fc0ad44c49045a7910b7b3e03df6e420ecf9544cb034da3a3cbf7008280a65fcdcefd04a632e80b93b4fe35a429e5ad791f5373e43af9beaf011a588175cf409d91be14b369409476dc604df51d2585839eba3832fc98f663929e0100d59edf24c1acec5ad046ec80946fdd1617d768822f2c8a655c678e338a761f85f29dd5ae340793e9f8d003ff9fa2f5cba2072aef710820a7baea8e0a7560030c701e12510982c7cf0590c6380607542953a9b1d4856c26cd7224e4f9c19c0ebd227aefb02ee66db545841b9e46a3607b912229c791b9a41ae17ec073d5c592188fc82af09aae5d7d3e487714a85ccf6ae4daa405aa60301161171ac209521b2aa123a4e59feb3f23abc461fd0ef02a10da412c76b7998e8cec5e8abd08a07071bc44eec0c53c68aae23b7c289c180ac9c697ca9f9135cc5887f0f9ba8893145467d7aec832bbc741fb02c5589014c38a4feebb769d8c5730e5268845242802d77594bb2bb6557ba362b6eef648137d51b40214ed5d5ead733c99c0bf6f0c7b312c02d0d62ce79e88dacb8a8cbd5e64de26c6325dcdb0ca42f71c17bf41d70a7f0cd33267b49ca7a48bc40bff81f6a2985e6587af0b86f9640348fd21d157a7a10f1fb8a6b7542bd03b719c8ecf4f57ba35507065ef9bb1d707729b3b0a46d782d391f47156603d7f08aa3cf3883d09b4e311881fad1e06ce3a150ccfc47227395ff80214378d681bf2c1511b4f7a01a9f5c2fd7389ab1caff10ae424507b75e7e95a83b07b0b4b93fa051e48ce8312507a47d3d62f3ff8612dbaa529682cac115af1874a193533ad22a60f3126ee6c17e4a505d26f07fef7f1acd6815360ab38f4f7a374b95afc09ba80aed58617476b0a535b845c13f298105216edb737d870c6a7f37ff0c9f13701251924c10272663d0283978d00634da9ebbd4acc1d8a20bd1a324ea623ae25afa2d52406833c67e9734910cb0bf3882ecbdfc86c81ce47c0366fc3ede48c88114ba6c76fc439c5485aecae365c9de62d77d61fd40116e0112636e540c90c031822035c47e104613caa34285c90e3d0b14652e390ecd38e1a94af82ddc07d13f4c860a44385953bebe51643806a16ace5d43b3d72e24f6c126fe9031136ccb3017831892067a53e0e88e8c6bdae0da06a06f13c59b4704a85628973a9b16522cf884647100278f678b9d0679fececcd576d61391f04bf78839e6042859271837e2e4455825cf1b9c105ac8d43d3d165bbf239e0107dec7fd6e9ecd20ad1557d3452a85568d2968fa3491a4030f0ef90eb8a34e17c4df69fca9a7060795cffcf5a5cfc5b4617c4bd79514eadff1871aa8474e266953fb53817bcee77682514852facb589019906b8e870bbc62b8c350a4d46ed550614a43625b02c40ebb14066ed30cca9f651fbeac760338821bb7a977b7c54f97a9e32b57d2ad0feac00b707e298fda3e6650149fd65119b33036dc718ceaf23566aff6904c3551d3fc193bbf4082c9314c8429c023ca19e2043867529a1f2e98e9b244e150b8568e1ae45f6cf5b144325b72a6861111ab3903e37879e060f5f67f88b5c4484dd162fc2a05182370ad0d094463fedf3f51702e2cf9a2379cf8f1103357098b3e984e92c42f813a9acb5f2140076c84314c5b383783bc17553417cee2a700456a0b66770c501ab4a63427cb7e99f296c09a8322fd1a7d7cc7fa34df50ff034f549ba5372e6ea76408f542b354eb0f0e2689f24f96bbdeff96d8508244b41d0fa6a62446dd2b7e1ec75a22371a6167ca6b66c3b5890eccbbeb255b4c554660b897b1a98686db84fd271baac2a14ccfefff541c66819a3a4686889cef325221f99c7ea59e7c36b92018716702fe2f909c98617acc3c18e9b8106120c652985e00acc36fa946d8703b0f4aba35ce2caa56709c09257efc925eaed6cc9c283ac3c712369bd338cc58ba08fb328bb46b67e74e0878dfe5ac82cd9e54cc30306c7258925aa7f5237d3d729b303d4afa799d717c22a09d9d1efe2cb78273d276f91d8cfba78d38fcb4ebf8d52c20811188daf8ff1c79a576190da947d736e0d6160e87102db4c8aa016ccff392b0df52ab645a15f6cc210465286bd4a5f9029b50cbb686f79fa5545ea7f3d18e61e594a5aa56203d99cbe86c57edaa20fae69af552d8a67b6fff4accfcf1dad99b0203808677a682406c5331e4ed916862856151023b93acbcc8867cf333e5ce8f2a52b1cb0e380e646b1cff78f5447cd003b0a0f01fc334d0523a82e40b543eae08a1a8a1ac836f9b53a9d3caef151cb6b35dcad4c686cc994bc641c237f09cb04e33d276b79a5c982e3726438c43b6c4b857161afd452f7853556bacaecdbec355f10f570286dcc730876798d59f138cd05920f680b5feed60757d50e25b435edc80ef485836ff6337037d09540a3757af938f12f140e086eb42041331465ac59be6fe5e5b2367d396f692270d0996c193296b87b268ae5623f28f6c79b4045afd9e8d54d5cd3496a529dc8f05f33f1e4858099b2e854e24a4311341cc10f5d190f2149f265a7891a3f2725096d8363504383677a5036ea8d2f31da5952a4dbb29b8923d76cd830c4fad417fd25b4de8ac12c6bc6d85320f1040501a5535eb772706c6dd6d631dc867caac94fbb9343aa1492df7bb237680d9880bdb01d99b128b8e449a73baa4cfc1b45f0ce75517aebdb31358eb0c6e778c94639f9102670878548e6fabafc29932ca5f928455ec5d7bf467dc45d5762464538e1ab27aff825a4ffa07df6716e2c0a320d5e5448d95a35c43b2b5d7ccd1192d8a1835605b8a1e3306e83b2c115a155e3842d23fe74830f928acb1e98b61cefcdcb783a1120553b675050d11750cfadd13bf5b601ea0f71f84a542d7d6b337502acddd7b4a33b05bf6724fec9af92a5ebf56d89291d99622b071394bc05c9d1ea4a0c61eff09441ae2a43ccbf4382dc9f8166529abf7c91d5e756252c541ea699fe1e0bd70b3bb938c9ad2ee86d50256b6effa9e221c75736b8c86772eb0fdc67d48dcddeb8ccd6bfd0d210bc2d9dd7552b8c75b30b201dcf5d60ba4ffe920cd4385087c91f1733df89339ae313f91847123919b36f45b4c1b817f789112940397852096ebcbe45f801a0c7b0bd718413e4fd2e200525658c5bf49b1404530cf3037efdbd43b70343f6585ac80e0d9bf12c26d4250852d21e3d27db342164dab1c90967b7f584d34c464fe9e2e911da123ad11386a4210246e189a4010c46af321488a1bdbc78d8484ab7bc7e03d5849fc726790482df13ba7b7222cba280ce2b5fd2068f2eb4e6933012ee4d6b3902153b874acb0a46def82344c360dfc72a5a1e0fb09b6c252c397353bc08fb6f3ad1ce43f323c9f25f69dfcdf4f00c06a64fbe38e94fe2ad6a32c0166d0830c59e40ac178dd863667c8d593da4c804d9c7e8d37d21126681becbe56de1cc15013a1e502b0c63deb08278cc38daf1dd1bf70078e2d3e59bef461cf21f3fc84a6effd4a1cdfc5fd9b6866bafe0f48afa90a1b09388cc169ca6e5ffdc050f195c812b03780ba101734003c409e992857be0c9cbcbc2ae575480e6d9ad334e847f6641ada5506fdeb9e225e10ee23fcdc572e6864e0161eef8f5248a29a801af8729639813b12f8a6d04785532144c3daac17eae820476c6100e9ea60eea31b373fd5e894f01b80defc24b6c45a37b9b81eb9aa918ac1b0f83266909a21bf6713ab982e6583c8362e2e853dbb5c7d2d8242f48ec6041f84f97614f0173424090fd0b24ba3a1acb49bac01b3627fa6dcc0c30c5e012ad424d8e6e07eed847cb99cb0f23652e350d105f7716a59450668c1893046e847b403f19d98ff5346207d13843ab27bcfa331c5acc6e174f52e960e664067779bbcaa8b47699336bb514d72f048dc04ab132b536bbe181fea7cb7cdc30e8c4c377b17c8baaaa85ffcc9ccb9d7792e7d06e3ddc484a0230dcbb5c4f89bf212b4eb721e694f17b8f6b43c5b81f815b6036e6d36b8487e30232e5e77f580f989d9988b8843ffb9fb8aab71e98829c26d2808b38993ed66802858636f4e13af5615367ea0c7312003a1af03e093780bf5f511e5719df5bb319cb5debee0278272c1460b069c115bf1b7c1412af8c5dd9d02bcecddf5d68c0401282ef71ca056f23d79c9dc354770194ac709a4a3346cdbb5e3dee121c6b95016a5a2ebdaadc7afd0f519b04027133b3ed3a258425cffd3d93b8f965c610b182a89a87efc04a2360f3e8e915d088442bfbd88977db16612eee5400f3ac543c28460813d2b3f98c7ccfd9565f7c11d29f10151916523039766eebcc19f3f59f5be411027183a1aa9431a4e0f88f8054a198355f1becc27b02ad6b599bb6ee66776b81807368edb64e3038f68da68b4ead5cf2e565fda4b13b91003af528f62ac10c34ee57bb803133ce04a3091a02c3c84cc0e0b915d1127207e29f1cf1634bde55452b2088311bca41c306f53eb608b919ca510ac3b1a909dbb8b3fff5745556e51750579b30ce90eabee6497ff402d641d2e40becc2856bd2b9937528f235c275ef147520c670e400d069243d91fd589d732d0405dc9554ead18b49ba7ec944f87629c486e0616c681e028a03efb2ba762a76eef2d4e67d17abf15bbd03d6fa25cd2a9b13bda55fb4cff8d69cd6b32d82067f19da5d3641072bf83c18da031c3cc0778f8e2aee0970a77f2cf7e0ce5721f25a44479db6e820baf11c384a35760fcba5f25d791d49e94073a75a610e431904b88f00f50882fbd8bf06e51277be9873063430890486d48c39f9c1d02de6538908bada4d5ae7e56eca04740b2ae4c84cbfbe2b4b668c1a01341f024a80ed4a5b505a15a50d39c504355366f199948ea23885f50c9668723cbbd251e5cc8584ceabe00a25cf6c362eab2e6e0d5a55b67b608062089c64c6423555970abadf88a838f5ae51c30362b14516510ffd2a43fb4d6493c84d24b2bb7bd30e6c049e04c20436b896f92f68728c8854234452915a0ccd45ce9f9c5dd49ff3ab7ddbe489b49339d11b8a7632a159c96d2feaa28ae8f3c117bee15a1c976ec0cf5bd0b5175b283f396b179a26c827e55ba4bc8e9759f12c344d90fc3a5e46f42a9a46c7cba8c8e2d3eedbac3eed66363c6d7eaca075bd9d411909cb6af8e793b2822261c876dbbaec0e5e37281ff31af06450321264996fcf176915da3d1a9f0c03226fce880d3740173bedcd1d790e7b3080f0b497a14883a31124c1cc2343086f0fa39c7f0fc6f75e7c8f44720d39ab38f8ae6d031b6622cc88bcc5fd36ba698683cb788c4e678cd5cd56774824820ce373e9c13a27df424dff06f431af445f6882dc7711deab6f408f1f8e94f4589e0dc209cdef49096b9554d62a2b29abf516a5d37dcb04441cd0b25e4a6b2ba6d75f5f7dd259ab6a5e4bab29a7b6de927252907503ca488f4593228c7a624c69bdf0521a4bd8b510466c5575ce29e7b4b2d6789abd41c818669713190a49028f5d3976684d2ed4d8477dbd3531c125ecf311872da6af6c060989ac3f27528b01bfc235d02d7392874bd75b78cbac463643939ef6dec4b0f94f7bb4caff7c26a552425861098adeabf4edc99d5aca39a1db1fed6635eb8510c20927fe146c5515d229259d77ce89b17d6bbf82e6db0987c8d9db8cfd5e7e2f4e7043b5ee70777fdbc35a6b2da85a90b515044ac282acb5d6da7fb8e292ad1ea4dd067d6a0581fe56f75a7bef5b9d92b10b5b6b2f080402555012950402a8aa2a0afaeac7a65f6d37841e3e76f5b4c2409fefc56f2fabaaeeb5aa7b2d7661cbaadee4abafac1bd238e0be6f62dd6befc5185fd7c51883beaa2a7a2f06b29f4fce39672266548c70910b95301deefe26183204f58319d8f8c18d0f144693ef1588101922c48f2142a8605b1f29ac87517d777deebdaecf65bd756ce5e7fa5c178cb884c37e0d6ee380df82f8635e65dfd2fe2caeb2dc44f64f72c4de5b21c1c8c6ae52ccc397e2d2fbbe17ab187e9886cfad744e8284276cac3d7fc52e092aecd85512537862576f73a5f6f9bb360c6cadfa80b04a4f2e2e55d775522bb56acd6e7faadb9662fa57576f7d573b3fb6db17cd2eed36e643c56e1dc24614c51345f15f78957e3276fe96dc84def54de87128a4571ecb7ceb184a0565b3a7b5314fce0fc5256bafe352fe7cdec60bf1e76d57e4083451fb36c11f89ddbf8e987cd529d8bbcada6b551ffcf9bb9d10546a63176b0dbb54e7cfa88c69b6db0951a2091b6f25d96e57c40850d8f42d7633fe9cccbb5d11233cb1e9db4b0317c8e482f087d65b41d704c34c40f7deebb2f7de14f7047f7ed614f7edcf473bebdeb729a5d785d116f0b02841bef7b15c2f5c38841551e728cdce519d726d55297598629c5280e9bed2af9afea42e535da5acc17921046fad9faba7150eb8b34ec9f8da6955d7d7bfbe7eb53eae3ead324f76db2971d3c416d1f0767e9a7c8a12f3223600caf5d7d7e7725d55b6e5d835bb9664f75357f7dd475caab47533916b71ef78b6abaa3cadd729753a5aab55bdf5ae9ace55576bb5eadbea2c2bab545e45d8dc05e84cd80b6b856e9f28b203ae6bfcaae357f2e54b2d0add87f960f9928c6449deeecd56522a2584904629212542b33717fb59e83f5dfa7b8ca116d83c9989218490cab7733a3a350f4f7b3e03596e4096f723e937b8014f06673b6024b8015f38e02cef7dd84f04fbbdf42032920db896b7c3147ae4b4d99b13512bfb4e7830ca272c5eecf7db8a9c85eb6eac5bd97c465f4a64b4ec36abea134af8f213e528bfbed4a59861ad22d7f45a92614662df08be40c059de27d9ef371214b6b3c27eff00d7f2fe866b91414672e369ef311fb20d1b5ee460287c3884676f2e8afd1ed2e7ea7b2fc405218ed8f3dfdbbe3f6b0128c90e9758829043ae11216f23a723041222a89f7b95952c060c13b27b98cde9b28799e8e1743038b89cadc3db381c8a1d71d0a16ef939ccfdf684710cbe6f1c2e8a2876cc82c84113e5d304f1d7a1c177ef2285dd1d88cdb1ddcc2c003f3e8f80a5d13192d1f1321ff0286482a4d050778e9d63bb8f6e01d67daef8723055e790811c3b071c34c776b814c56e61e30abb425f46a41a310320c001eec3fa06c8c2e369b092318f3aeac283d3f88ea78968763fcef7de93fe64b6c392bccd4851c004f93e0dba6d460c84fecfb3f8b419a416c4b7e3f178a6bbe10d39ecf05c248cd5e501b7d7a326d63ccdc7a301dfba94d5d65a6bad94c65adf5a6badb556167b3c0d42b13914faf1781a7cf854bf9e07059c793b3e2fc89b4301c57371f16843737e64a763e231edecba9d8e0965ca79808ee96402b29d8ea9663b13101b6fa763a2d98e8047dfb3ec2fa967af5691e83d0743add9082c243f67d91ad430fcc576f0dfcc8c3f25acbf00a4909fc3253f226f2a2a2ba4183566bcb84c10eb48f0c58180663b1d1d40f6cb763a3fa4b6755cb2f15c66c418f1448ffdbe864391f63bc9c5e5580109978385d47e5fe321b17fbf8fe160e0b6f2785e129450a2081326ba5d11267450224e3dae18a37b8c1e9fe83d27d3f7ec629f33c619618c32468ff2212e418ff4cedf28a55f69e51801a3bd8576b2dba34d33774397cf1963ac2a95d1b2ac65552fbb8aa841581d358561a12cdf39d4761cc83231f881d66893a025c0019e4b7e571fe793c1878ee338f46db6917ae83b7d8aeaa13487441a8d34ed5f34034d94866674e6ed4b3f17b6dc1d6bfab6d22d2a8128facef1475cc2d8e7c2f1c82681a0f69c3990657ead398b44ff9a361a45257bfec47e9340e890a7cd0f69aa93536bce22d1bfa68d46dbccd9f37186049ce48817f6491561222c58b2e963222c70c2c634a33bf00ca5b1ae0a9770cdf8ad09f6b9b0090863ec628cf1a4a04bcfc7f446af7e17c6d87d17068152a0a05cdc8299bd552ac09ad24b48ddba4d10c294e505f8ee8b4a26866fa312ecb6c30ec82173a38d430ae35c22c24a90e16f195a5978d6a9b4a8d9ba2aece2dd5b2f819ed2bf35484fa381827c7f239dc87a6b0d3567faf97c3e1ff328a59f9c93cceaa2689761a13225ca5b2b89b522ed322e740bed3029887a234aa16b5c92c5d4a1bd4ba43090f67dc17741185ba26757fd40263530c9e40221210454df0a973e353ef6b9db8c629a5d4e647a820f5d6267577f3056d6bc18e05ae6a35caa53bc057ad0bb5d99bcc9bb6d750a0dcf6dbb628926ec7a23ba4179abe29ec4d18c94894b01ae09d96fee09a1dfbc07ed37ffc0ca6f0e8293dfdc0530fce630d8307ef39bdfdc072e7e7320fce6426eb88ea37678760072c2c9a9f11ddb4d355e53e3364a70526e8627efeccc9e9a9ad90359660d64c93a86cffae1e03c9c87f37620cb7c3d9065c29a9d9db7e35e53536b6a7626dc812c13f64096f9383b383b383b3bbae618b4db5105cea5fe5481d366cddb812f15b553513bf35f0f7ca1a9d4eb49bd9ed4eba9812f1485aa41d5a06a70e00b3d9d704e38279c3d1feec017ba03e1cece9e0f7be0cb4c411f0e26fffc87d333610fecd95906172fe4b6706ec73168dff461475454ce343b81018676216d85a660b8e0452d8626c3c7bcb8610ee593b7d5fc95af2a19429614a9884e422193d7d5044e9b9fe913ecf9a819ecc943d260229f585a8d5826263aa7f8ac2d3d813c6d3e48cfd7b3e669f3353d61d0d3859e2fb40ea2ad3d0cad8368c3f815ad8368af3ca67510edff4ceb20dad9575a07d106d9d8ecd8449b1e9c8bf6f3e78c8361897586c0b9c0f8f973878389e167ac354f209ccbcacf9f2607f3e2e74f153897ece74f1738977f39236d204b8d8381e1e74f1b07a35fb463338b702ea09fd2c1b8f8297920cb7c51ce39def36a6af6ac3adb7b5f126aad24d626b13789c549ec95c4cecb42fba6299f21732e4345fba6945294542a95aaae088542a154dc0b97688b98035f280a9583ca41e5ecf9a719f8424dd206becc13cf89e7c43333434d33534e69939a2f73e0cb44491ef8324f2edac0179a722cf35139a81c54ce16e52c796acd34355f9e5268df2643a87c4a906233b3a2d2024abc8248d36460d1301ca0a05818876f160fe3619cc40063c58aabf236c5e4a668dfa1172ba7d3e904c3052917c6e13be5adcaa5ba9a5668df263064ba9a9ee69ee8b79c0190b9c7830613d955f28ab72c2ed5ff573f0b16208cc337cadb16976ad05b5cb20ffab800b56811c2387c8bdea6b82ab4ef79822f1525caf994d5d3a5ba456da1b315f20c79ab50a4f6fcaac773d9ea129ae7b2553daa9af9d58e0ac55ce22eb504aecd9f9504ae9ac0b5cc6fa1abc9b5f915957f8a72ce6fb38ae6699347a966158a6a860ad9e7bb50c1387cab785be9556be05ae6db4a753da29e50906b8f141ed5948287ad9f900986d94a5d0a8be1b6187571be054948aa413a39c93e781ac9d3886b99a1b72737d7fa1597aaadbf8d422626b5d66ca29e36ff444ff434ff8230df16f4b6630cbba1266aa2266adaf33f5695822ff5345333b5ffd2156bd326a289ed36095ccb49881a2406f534c49e4fb37adaf33fb8f29842de26aaf2d8f3276a1a91a26b73f6561151bd781008c2ba95ad3a79f59bfb0112560001d86e63d1121b55db39293c1dc8421a59d936d2b47fd1c8079741e95b4f25fc410a3bf2401f7c06e9c365bc278d469af6af13757c90d4f2c8035f68cd5487ea501daa4391b817a94375e08b0402a50f9f4122e132de8bb690abb01f75628bb204a2b39f44626fd2875cf2c312f6469558b287e06414c1e9b89619509d132852a9b6a23287b2a45a0ccdb2e40fd7e2b8247fb89657dfe29b1dfd299dd24cda3cedbd0e7ca1447096f74650024dc2e3da396da349ecf7124891fdfe5122b88cf74ee420a149a043844087407564903749757ee0cff5246cf656d12063eeeed5491309d54a77762d32d4bc4aeb0f36ba751d8eea631e0ef6e9c7bcb90b283e303d762def4550679761882cbaa1d0cbd95b4889ec60721332dcae084e137b3e7cd485f115803304c6874b49885b49aeb62b8283da95ac605555959cd7c6c39e598d8ece3985b0ef3d0d8c60c7856f071fb529ff7e942564f7f006fe25172d58a8a4ac4011a9487112320161f973e16badaad229237c37f063de7b306382cd7492557d5b225186d57b3bf8c0a384488f144da4522929638b91f6953e199dbb6c2d52b8ab34e67db6d50de1abf41d8b9307e38a9311b37f1a8c99b6e98721aeac38edff35389d8200072719b3f25eb06b847348355aa5f896045f6cd8802f375c8b83f5524bbf3a5e3de95fdac948eddb7232766aefe1b675f3f9aabdc78e97b91ed3343a5ee6fa07dd4d19d7d43893efa00ec6a5696f4e032b454fca9aa59c9287685da758f92996fc944a4af7397dc619e743e8526aef61ef68c6c8aa2eab0a7eaa164373298358c10b2c106e32597ce5909cbdf9f5b14fcfe07a9f81282050a8f836274b581b2f94a3a2b382723c970dcf657e7cf9bc7b6ae303389628851a7c01fdfbd7b411696343de8b9b4059356272264c4d60b566a953eae44738ce63813b066089377328432861bd55feca57559da2593fda7120cbfb4bbf93dbc059de9b88e040dc06aebdbf2107fb3d911d42d88f07560d4e27223ff6e654a0369e0b8cf6b1f801424a2db450baffa63e4cb6aae857d423a5558a252774a7d42975890d20afe0811c4b3a50d50a4935ab2aca5955b172277820c713f13db0290db54e1e3ab0e97b759f6bcbb1825d1f42f798122b8fd1b2248455156315530ae02fdf2b5adfab62b6d19945602b0c22b2c826db53c69d9c5a2bbf567c7f817b166e06b77119efddbbaf6af98ee7bb4b49a65fbd755195363e83077132de7b90fdbcb20ebe256e63fd2a1dffdec7a513023cfa281ccdc0de5639630650611faf24a90609b3277e43023b6e7d34d243e79452da702859ab472d86267d56afe3651ce7d128ddca55e002f2e9ac247ed737a0bf380a99d2f8d661f9b69dff6cf419a729803fc631cb4d64cb5e0cfb98274b9685a120bfd84e2705355bea7ce488dbf6e4620dd23441b0fcf288c396d7c0b5f8e9942da812f2b17e22311d3f6bc779daa341ae70cc2e2732b5212f596fb1102342767cabe2c4dac16347c65b498e6f3107310cc3b047df618f3a2771894bd563782bc951668ea3c2e9a36076071e52a4c97b98fc3d951ce35f5c8a37e4f0b4f7aeb32caee304f8c78f568cd5db5535010a5c17684efaf46d8a1bebc3ca666fde8308ed73f8de8c260ee445fdb6ad3456af799a0fafa966742097e2527d3a758a4fe94ee9cf38a7fb74777fea3e8f78da734933fff1b49891f8e9693b2fc99bfff01fcf055af7d621a7bd790f54541ccc8b70bb008a8074a5e460e65f98c6d602512f9c0d29df8fa08df73b5ccaa1523484c88f4a3921a4da4f4f7b514e29b5185a554157f1055ccb2b5da05654cae955cd625681a7bd1d3630e960bf1fd83c41b1768fc6e63bb08115f06470e6181037c01737c206ae6dae83192fc2b53c07e244de9c920a5c007fae3c626faec48a8359713070db97f281cae6de19aec7bfc18f8bf51b0cdbc5707f733e00fde68080fde68498fce690fc6f0194d3a8240d5a286a0a158d0400401100e3154000200c0c08c4c170482810865d6f0714800f6d8c4a6c409b0a64c22487811004419031c6180308018018008c4186868a373ceb889ab62e7f4f3c07477f6c2aeeb7cc32c893a3036b6c62352f04bca0129a77ef0cabf71f802d43394a46efbe749a06bc366826e0d686f21a2b406e1d3ccab70c3c151127c916cf3b8d4825ca1bb11fae046b392cf563366a5db455117661bac5b6ac3ddd3dbaa744009e24489406c87c29e2229b1283235c40cdbf00d95df90ed7001157b4011121876bfabc3ad98811cbb04d5bb0065327b485d198a4e5a9b24185871c0f8e930ae5a2097228a321e8c082d6436a0d0bfdfa0e041b1a9bce2e31462c78e425bfe1e8bd545aa1144f1db7159ff8983626d49337a1a090b2813bad3483e8002fcf8ce3b4e833705d26778b037caa71058d0e33118419c4fd922cf84dfa1163cbc9ad25ce4a15f6780033b133f4f598c2067db1f9358004f6a8e88f09b2627092807604c9e7fc7fc67b5d3be0b696a4d9d708ffef83bda27b3df82a9f60fd03c83a7cb24fabea80e999ce1502998adf61969f98fa9459011cc4a9e24c66cd572f4da29975db435cc4a94422e732b3c0b12ae69ee21d98e5e50ecc14082ff08c3328410ca6f2ed42d7c1dcd650dd25c2dc64e40de4605d86681afaa6fa0bed45f1ed026b274ab37a169c80a1a1049e50f189e75dea84ba4487e2f31a21e07bc0e19281957bcb20d71117ab83c644eea086d73e3f4e754a04f037c5c425a20a4158405e43660eb97e3d5c0149f24554e2b379c70a88a4ff0370a9f5b9e4b1529ec921b0551f503a485a0db694e2ac3d20fe91bb6239be4fb544204ed92f204dc0997b80b4e569a689cef3a963931a7f4efd3ea0d9d83a019314f9011081135c9348bfcf6d907a7b05a2b37cfed4074d5ae5ddb3e1f49c4a0ccb2bdff94bf1c40c1a82b6841f53ff7f4eb138b8a07054ae1b9d829f1db0329764bec06c334e1b5f6dfb9a9446877912a220cf18a8ee39eddeab0fbd1c37547dadaf80fe88652ec950e42aa20d7a72c4e70b65295c9e86f8fed0f0a20534203608a21fe93ffbd436e35b150e431ced0ba822272813d595b30dcf3bd3e9f6ed4381c6149421bf37dd148cace07d2c66a5a82cd51eb5ecd07216a4d85187bb23be0c6926cabe8f80caffd7a7af5af062e93b237901e02b60fb756c5addbe3bea6d8c1e2e95d5f1a1e08ef0824fc40e140d13e78c4a7329ac513e017adc30904607ea2dc5ad315f11daa130e4faaa7fee644c59a19ca17151a913a49d9fe7de933822722d90848c38bab2475bb50941c661c08f6d0bbf73831697b0636339951060e22625d483ea343ce33868322d16ce53d9d596e100c661b8a51923d8236aa45f2688d8d4ec98a8b7d8689caaf837f8781e36fa7387c79099991bf66138d5ee4018a73b6ec84280ebb08f8d6a5f17eca4d1b1f08ce44368e829bde845eac8bdc7497bcb20af037bea923a621aedb60d95c19deae399e99cd6c1dd64997d661c0706b43b1433dbc4cd0cdbff3c2173ae084b7b010bc7118aa108b039dd5b61b695779873c0b8e5319b8ed65c36a00637f123246314e5cedff23659eb47dc9684c868164733f1f96e84d211a88a66d6c7d5ac6db0972be4cf9384dc20b43e738a3e769d0764304be9db95861325240ffe5a01e73c0416d8b53580cd977fd010ea93c427776f1a71fe86c7f9db27d6ba38e30b449c376a3814a5cc0a9f72d1d322f8c9a1439cc418b2d34ada2ea969ff29fd3ec6a84556caa597862a43a5b47439d1b15745715baed5a4708aa1dd5f62532ecf8e22f05bbaac09279982720ca2252fd4d3777ae479ce1da694fe75fb8f98c07a8c3528566869df9b9e5f8c6197d42293a3c305b1da24ba1ab842516b480016070d0c2296024bf3c60b52fc377766c088959cf70db764a2bef9cab5ebd663ab646cc73c8d18cfa647029ad8a7bb51439f039f50efbe1db43533f01f9fe09bf60e90fdcb795e7f3e9bb1743c023d47e9f4afe8c8f12a0cbb5a2c556f3f09dba8370d18c83db9eebcd8b881de6acd0c1c6c3453a7cac00c3526b138e9683351f00d87c1f71ec4b967c181686348bc346138dad3f27edb4d1bd2f267748e6acc96514c5a61743e926e1e933a62bc438ff37dec10bd15c15c6f0d92238c3b3ddf412474c4f1042b6b55e6a0e111f58a8ee214bd96ebcd93f191b5b0fb4ab3a2fd0e813e28a1e94ae822131f2dd48ff6b017579a49405d9d2d4309f845e161714b681b1c37b507cb1332bf3113588fa8f71999fa8b903fb3aedaf66dc0d845f27114eada909106ace09a6b1579704ba14f3c326d9f2e33a0277b2c9ed0755db45635fba783c1c9d432356bf11bd80136c0ae7ed67e1f95f0c4530179ab126305c3957b51b16fa70afe4786c066465f59ff707396e508aeb5b30493036b031f7f125ac0f9658b86e0019cf34078e109192a2a43f3bc64e00db846f7f41651f1a582273625c643f6f292d0a70091c0b923f81ffa14cf83d3187e52bc5419cf8922b2fb1fd72363eebb7486aba1f1fd9b2f7a7d3f96ee746df7486f4b73bce5664083b7df7bd396cd44989559293f2a0734cc3d77804613c828180efbac6f0e69b2adf797fe64710043ce58535fba064bd5c980a5f2c7a750b155149322c6eb361d2957486aa1e94b7044d5510898881ad0228519ba8b808057b38f9e2aa09af7e3d82140ff7de5a56f3379c91a62b5c3e53512a1d3ca26e2aabc21dcee7c2b68935e993b2500784ab651afccdc1ef90f31b3a7c400058e5bf36be02d07f250dcf102bc52fa921377338c048420e4416e40a7f83a7373a2f2ec0205bef7d0b663ececdcd9ae78db71f886757c41f482152d0fb1ce383961c435e035101b998782a7fb2b310463894b02315f1dcce191795f026986d08ff9d415d2dea7223dcedfc0a27dbeabdb9310fb8bb11f9788b43b5c187889705c826a34d8be826b99c1f0ad1b05c155fa63d4d853185abfa69f7907f0979954a83d2d589d73f8980379058cc71be7c2ebbc5f6a183eb5565646e0453dd386a6bcb74ccbfa7b052355b9077e1ed2b58f156fb455691b3693923fe31f365b932b2d847449a3d89c0f589a16eb476cc9de8c09311fc40f988ac8c6d7a87aa8319d41734106a6921bb207363fd9f77057f39052e9f0846ba34e5d37a455e836fa964c1894aa3043ca2041b2f71523648b7283c7ad32a1ca1d010630db6d975063bfbafcae09261544cd3bcb0a4314cce609f42060c052c2141e1d6ac7b1da40549fbf893d07ef27a3285b355e2e1c78cfb8cfc1fbf368538e0d73b567a0e9f1323f244178dcfe53c46a906ed029758c18a6bc5343829c7b354af4cdc9c212e76cb19f871a3432a06f4d47e3406ad98299b60a238ccca64829a9aa0a66d0fd834112a00c0bfdd4efab4c10112121832f79cbf614886e9ff5df8435598dfadb3c551ab4122cb80f250ec86b7517b445fc5b4945eae6ba08a64545370a6e25ee7aa4c51c19c68340ab610cfaca404b4f5b4aa0a032e46d641f36a6233eb0df827c1b9d78904b482096cd9c747ea3a03a1e1ec89613b572fb8ef406704971250f932b8a89d32fe8834f89c22a31745a177ff0eab68eb8154f77a23f4d8f492b5194685237f3e8824cdb901ccb0ca719e40d849ab0bca44c9a8aedbea6b0d480fa23e5d0e8101cd7b06cac46c3e47899dcb8c5d48ea10a9716ec876b848b53615aedbb78caac651c5c80713b9597ec14911516a5701741f2f3a541a8e6799e13f931c159a382fcc914fd5b3160f31ff247d4989a20b8517f0ba342744c17cb4f567e68138e736d0462a1979cb8744398e2f5d81b1a28555847e2661a030e4afe5691480f364ff3992abf4bfcc3fde743c11e35a4cb241f721257437ccd0f05d151bc1becffb0e372723d358448a4ab4eddedd598048aa5893143a122b00a28a6deca0de8023bba1ec1184fd846448ade72335bd62e80f4ffd6f28cc1cb3740fb5a199238ddc09ee424d6b10f4fa9a2f5ab923c927f9c3b3b2b32ffc45418c04b41c5733c61e67b3549697bf3591c67a73e03c6361045427f4acb495433e06889880086e4baf9b44f54b6775a574f68b3ab9189091da6ce59843b416c636e15ce52eedc79afa5778723158ab00447b2d9011bab3a4ceb2e156420c85b7cca6a804640b318f8ca5bedc2ea9959de2710bb67f37dd36078e7be747ff41cd143273818c4d9004b6e15a8d8f513e2621a8729177eb58dd03bcfe7eeb346cc3f20c9cf762df8afcc32afcbfd38aeac00d6bac789f9745d7a12b79bc2cd0986cc6e5a2e8db8a9b143b2898fcced2b83e3c5ca4fad55098207553c0b1f6cce25b0d102fb3ab1b1d339062b090b36a46b22aa1082902057474d86f398c9e49cbff79037a39d398b2d290db17b27911bd880e047eeb49c6f3bddce26510e50a76647b4ce67b897082fb8964ad672455198e9e0ff9a147e29fb1aa88c825e88c40d3a5646d49dae200a24f9e1c37523349d592e7ed226dd8cce74b31a4420d410af150471a475ccb1e244b3767e0d28d0b1f5db56ef34847ba9bb1b035cd6b607e518dfac5fc84160369bfab727af3b19d3a2055959f4271b11f464570441f28c09907862ff087556d78e49758c0fa663c008f9707dfb250c00c3c8c47c77fd920885b1b3638a036e6700e4db1320de0f5aab859c5cbf18b4b77d90c7c53c31760b7c142ef9f1c08768f3768c3520cb8659b7c82734881a73d7e2db4ecd6f611e21196d6098fee9584065e8a3dacd81a0a95ba39553f2ba99aa5e111ab7975a30a066d2203a08076863ec77e65792f2dbcb713185a718bde649c107d178d777d3d78230eb6fcdb205a56cc0b4ea91f86d4361790d13ee3ee647cbe113f23f6083c20cbc6df6a2a464a4b868e469f313d1b4793874903ccb86ae5e593cc6744f5f6920b20f71d6834997eb1d9cc2c89c11444bec61de0c7dc710cefe6909369de4a8a0e43d578d08e7b628c84ddeaf99884b682ed9607d6ea5267e92f1c4273af73ebf119c3cc4d4f010de64180962566c1663ef7c322eb567da0f96e1ed12f243110e1f90bddd08c0d8750e45d37613718171b7e7061730f66c10b64798e1055422065e3a33b791e7d624e5432d21601fc81f61791f027bc0fd10a0a4ac6b3a8809d196261188039169cf35eaaab489284d7cd1ecb14cc19806345c308f532022dc237ad8a7b3bc126f06fb25f2b99348e6aec6183a2c97ceefaa6496d971fff5f2b1940939bf46b06a2cc455e255f9c48ecffeaa87c67480d42541db3c4fcb47136e9c179263c5d0980be2283993c928a05a495c44cc6449338592b5741f6f3c9344156ff1c791d55d766c4724d807e591cb6da38d1cb70366dc4733c91231fbe08a134dd97b36b706d204d45e3252930d636f0789a5148a1679f80a8dbc4f08d926c58964c7e5385c0ac95b63c9196ef1b1c65724aa7bf9e983012a64ee8816cd2f4ab27e5926f392bdf145eac6b5f9d1a8751647f927ea7b2bcb79bd3071b71c13347eb1c09ad8693d6c865dd88fe8cee09d6dd88b7ce38ff246f870049b7c5b5af8c8251b62370088fd8f208d15f9e090ed8e2e822fe037087709c320d8003ffabfed9fa68c2cec12302df112af47fa053844034d811add844d2f7c6614cca61e303173b59eb96dadc3db381bd824464569a69398fe99537bb57f4320fcb6e00747c2c752860fc251701398d37b3e9e8b2918f06583f6bb7bf43d9644706bbb794d40c675b1d6e73e6bd347fd4489ff9c844154c8a63748e0db0b177aededf5629e7b7a6b984ddb319eb83f852c1328ff80bba0fbfa40ce2ecd0d10f80c0c3f31484386b08fe0893d1ffe7dfde3440ea44df8caf88f99fc802349caaa7863b7f11031042a930c0cc11f244de108c559033e0c8cfc4ec7a3af8209f305cb2144ab66316f8e8595659002040b2fd6eb629b051d86645666ccac6866f2bebaefd86a096b3edad27012bda6ebc5d62a6afbfd6540ada5e235721510e34825a8f72d67e23836cf36f505c011f3b5747e1ffb4ed4846d230ec82ec6ba274a11e7180ae1ac3f0173efabb17b86105c52f05ae0e2470208b9ccf444e0e952791956e3ee33ebf1032fd13bf7fba73b0cf57a7757f1f84133f004d229bfdc63b81996839f5b302492eda84056a01a8649f81400d0070e618dd062ca6e15e15b425c2ed0f6b7c16a1c35e8f45f529b0b65695c7a781131d86357924f45ad0ba70c89f5bf9c9de118258d112775b87601a33294b007a28dc4d10f217ce233a90230f72ee3661766054eb2b4e891a13f1e211bea653749d67e4e1e916cabbb19f21961c2c8b77aae9172b0df7e2c96e59cbc70579e442cef270b281a34ea4dcc4d7a6e6dfe7f694c447b6c777e8fddae9f45da0ee07068835c4bba751e8dff57e3c399c13d7f7099fb3f1f6c9f49ee71f6df7279381f9c48822e72d8a11e3930fbc05a27e1c2a9aa952853e5ce6cc520bd4bc1071e821274803a3ff7e04823ba2bd4ef97c4119ced7a551522f3cf6ebe918bea12d05f80763e16e18e15b1812f2348637dd3e6cbb5551d8e43ab12507967561afa534d5093263f612ee03c1ca0ccdca97331b45bfa78135669d4f56efb6d6c5d1f0a2b28437888225c2f2e8d3f320aae8f1715cb7d8957cf8a6f0ccbe7accea70b08f4f3b86a23ccbbd29cbb34086fdbabd0b1c5159a515972c3ed1b33f8557e21a89bc15a9cf05f4a86b47892d7ef40316ed426cde968e788caed2171098f8eccd818b7fffff4644ba0005dcecf0c1c0b19eeac201b42283ba00b1b0e11cbc58b1d462b0f82c92098ae6b1c0025bd567c878eb6d627b7c0182002149e173561d0fd346103366ed8d2442f8229a16f9978876537c37588efb28a4f35bc355a5241bdc69c0699caea0a793227b41548c91d697a505cc29cc258fe06e79713483a94b7579e9606607faac010654efa8b2638f65af4a0af25c43d556e61eccb60f4b775d5e6f2836d6c4e23d33919cdb31270d50792c2de48a4e49cd60c376031e6d3214935f1654e2d48bdc3c05a1f19fbe7656cd4538a944a6651c5f03944de7034f76d96046119e5afcc09373ad7bff9c5bea1e7413c26cb86db3113c048f40f3383c695020950a7394d8276c917157e14db269b110bca63b2a53f16d46efc227ea41706b1115b9766058cdc8fcda5907b1ecc03cd85fc15ad95c357d33cd4a6c9ba7da08d37c280e2d73831e9d75b233cff7071e6e17dbb8a6999029f861aae3bad64edc143a553f8a93e2521d547faa2e1a3a4ec0050dbd03129b27e8216e2170f92acab6f40d55e578916230449616379ff48e93ba2097755bb7ecb55168d02df29ead7dc46400c48673598654c4c2ddffc8be8017b83a264cef84a9e36eb874dd59ccd28ccbe4d8382a8840add548c9ed8464c2a78a82d1d8de07fd504282bf02539faf085d487ea7668085aea8e97342809c3c7dc3d974b4d1eff23cccefa5d06d13eed781079a79581273f7d4b7ac3936cf5e6c66cf005586924c86b43f6f25c7e947a13e154625a11051ad6a0df5f87275cc406b502a5a73d7042258c72f1a105136e51c99d9c2d99a2370298263188f1724406d380a6c12dcb1454785cd67cb5804f07d407f0b66e46f99145eaf37ef114600df27abf703f0ddf2249190f1240b81c48bd7bc7f1da8c82368d810d70e3d5ff3778e21b4711ee3fa5403b214235a663cbb43d0d4581f06b8137aa2029433a3a2483101a708d5922c10b7941755fc67073d64c7f0ad49a4fb42af9242d05196651cd0c8020ec54c40a19330400a199bf867665a14e8bf3c903fe1c672920dcd3c08bb512ac50fe6b0174bf0ff0abe4e3201ac707c619f344d652db3104f3206ab99d6f9cb3808b840651e233381ba9915a7e560f09cdbbc2ec153453ecae8ddd478c2f3166db0facfe5c5511a5956445e756046504bad261c07571cc2e221f50660f84c15193000dd4ce367953668d453aa385921966293a14dc63e0d5a7be42fa549df57f7680c1d110ca435c558b48702dbc83ba44096ead39b5c2f2b77df54d29f88e214b1b3eadbe3dad7cff04af8d0ec031ce0e24bee0132f8e31c1c2d3bc86801180d474c45a4acadfd8e828b17ce6ccb95d8590cfc2b5cca6abc290b2b895776ecae31d9f082a440380a8589dbf21c53498c97ca4409cd8a780a1460244aec8d4215a42a8db6242a80af43b9944db18b5074f11ac54da65824a8f4d16a59605e5c90e1e4ce393fec98dc6ee49f214d638c6147c7c181803fe1c4382526bd6582734d264434176f0fbbd67d22f5f76b74300794ee4fbb0b506f0439aa65bf83b4d0abea59f338d22f809658ab12af9587e4a765e34692f79234c64223806e0e95ef42e149eb15de4ba434cef498b8dd3babe925120fb4f1812a27342c9f76d192885a29bfd164230eca0ec6c04b4dbd6d43857d6a0255b5009201abaf38c09e2b6cb05c4c0ad4a87f53587fac32f19a66ef9841e42d195ed08ca0d931c4c563ecfbf5ba0396a35123b4f29f6c6bcf92deb17813b6011dbc21567eccfba2a53c5e378bd42f33149d69dfaaee0384377726aa0bd87f266dd41b5c9322db62842d30780021855e9638255d979579c765efc104254a9bbf04d1a8a2d1249aca311e20aaef558e5dc6ecdf249988e94a8c8a15827f012151d940a2f1723f16fc6394cca2f420fb27c004a10d129c659e82910058b8ca75cf65863df217665e00ee3052af4effed34ce36a3638d7b7d45b1c1c0a8063f0bdd196194589957147fdcaf41e19b704e88bbca560e6c0a2c3c51148c184a49ac0d87a1229be9bf5801bd57aee47289e78751391f40b74689b9b8e7064d2c4bc337d43f316a9069d5ae65d35041f3d4918845a048c4226182d38dbe05d9c0db78a6772e9cfbcc4b946f578acdbcaaeac0c8bf89e8e355f68c9230610be001b5ebb082eb6e1890e350d45d5868c047a52a6bd338bdec1a41b0f30da0f29087730e8dc2b35c17436d4c97660bbb41481f6aaf0845be71b1603a702c1a7fcb2706ec3a5bd2cb7ad85b7eb7eb39f280d2e7fc1ca497e03a0b63cc9f81a6aea6569128bdc2969a99db0d06a5900ef05b5ec459ef5f3b3d9b5395f219c051fe28b09a86ea992341c7e7d0ce58938ab091ee37b2dc331029b5567bc4ad1e9d139ba1b43ee93fa011650a0a0363d2c6cd0a989bb2056f44bb5de4ead30875a6eec662ec85fb93020d82cdc135a00775769fe8e0e6365234a9c7e37a1df9891a7d838802dffb3c4bcef6e6167ce93e4280ae49cc9bef5983d9bffa43037ebca40b072ffa50810a7814e473b2b6f63d151736a9f9b63f856109e74fd254b863361db2b279437b7c9f5be594f3458eeb9bc3308b66b98f8539cc3a801bc88cc54863eee84a847b046dcfb5ddfb04f76c206eac0ab0cf071e01e9d049433fa23f4c5667d2cae9304763d52063eab41df92b04618a48e957b291a72d21e793eb282a32c32f416242c606ff3046d1a3603ab3c5db715fdb138f1172936e7970a240e4562c1ba186ebf677f35b0214b1b96ef5d7a0f940b38efe025b7bce767c89fa45e05f04b80fa594b2817a7c4dc636fb709cf59b1ab8e1b6068264b5019b21dc76a4c34d0d28be8ec949c5d7824e46f7812ea852a9463618b380c4262949c689afd35dbc5d48949a3a6d72dc98d258181e2347a4822d93b2ce23c944c99ce26a8ec2d23ca25590717809ce943fd4d8a164e19d739492782b6f80a31bccd0bbe3f88b22cf108c5922ee1ee087c057c55725088fe3e73fb6fb152d3581100c14f32614554c69a6a47cc326c11c902149ead27c98dbdadf14ee513345a00849b93181c9a7a7bc4178dab5a97607d962f8cbb0b8b848b270e53b84cd3f1ade4f13daf224361464988de08430cbf16bcf48f0428deb12d31fadd5a3a80904c874a910e4a302550e2b22cb4dd8439f7998470a58b07d758b56c6f25122521f32433370c74b5fd402844279ea1149a65aa5e4cfd8c55048a4b91cbbede05e60aad7fb5a2e069def983afc61467b55e15051c237a1e41b207a618eeecb8f26c248449c56fbbcc871811975aaac57554645eea191b82df5991b5441c4c4234ba4e6a4604fb682b127b49ed46228ff78dc8035c3a71ba87c7947947780630dcd5b59641e3ba4a67803d1191463dd7346f518a077a8c290b9c7821b49233f83ec48f5fe1816c31d839c32bd37ca906945c443c0b358647f9abb779a8d0439eadc95f8cf2e1ee772671c814f0714e9c04ddae173fc7326e9797c42c93eb0f7b7603b6688fabad86680770a4ddd154de100f8dd7d005a361f64f590e671e1e1e6c1a5eb06778970c0da71acbae2c32960f4850fc361027a2a1683fd8c0342682aaf7354af709717b97411089268a0224285ad14eb60b3e2575ebaae0e6b39eef47cf0867c2f3bb1f288a417e722c102a6ee69bdc612cc34ae50444546a1feb8d4312feb81f5170067da4c0a6602e0ca1d3a32a91ca9e4247403242a14718e19b9531410a961f52ea04283ef1312f7116ef3769c5622ee205917b74e963dc75ef34db98db726b3d0c292a50388083174ef261c8ad0ce7ce702fa8f9cc6596b810df4c5e7c198c867312ebedbb4c07c22a4e8f565607328c20fc8b00533e2af267e93cc0d8d6de3a639961d2a7d0a0f5201a3dd578378c0985a6dd73228bc2ee09d46a2dca9def2bdfb12d414488deecc65e9c27eab1da3f8254c31c1004091d900ec3057c3153765c1c43590247cebda1c4717b009343e32da4c89c134f8153ab3df8ed10f030acc4d56e961532a8470b55400cf20068bbaaf5632c4114245aca0ce203a9b416e427575c0b6c8183c4209846c486f63d3f7900090443afb6dbfd5355c48764fd07176e7f0d8dce8636f03fa03ab04ac0a054bc26850497c4b601e1d889ad76bbd27630a914a4c43f7742fefc2f0ad5cb1e93caf1cd324d2a17135cfe360b57411036b6f6c9054951680941a90d95c070caa52ea64556e8324bfda4970c5de48604acbd1f3c73b6975002e3fb757847cc4507d8888df3eb24755bd64ca9c755be3dfce99bb8f7ef5c1cd5af786a163ca146be3b154ce807e77db1e43fb09da87653f11fc5dca7974807a819bd7bd6d45f5caf602b84f82a7b233a3b5739040e3d5cfb5090914661db9a96eb4d584c9bf2f570e1098abd7cc142b679d8790be0277d4d2c9b26bcc4f30ed516750e180cb6279b919b75cf56122a74dfc98a6b1de782ec3856baae08452ba7d23cba17937fd58b7d40039346f83927ed802150757c245e5f25ac167f7ea239c06896c7ab5b11121b06c4c4d32803094d4d5ca4ed57a5684c3119e5ee7ffa48c2c4734274cc116344d90edaf5a3c07fd48d808c1a61f9650429121796b049e735e16385375597df28fc4c54726137af58d2ad9bc403669ef0d55bca87952f13821f71f5853b8ea2d984b76b6d9d4610e8571e40a66493daf581e78c7c21c4e6bb1755cfc51bb1f6345b4833c10d127aaa897b8ed7ca349e79821074ba88700ab49ccc59c76d38d4845af4d5d4ca084c58146535846e96ed071d208c8871161ec4089abd1f27ab48fadb2df76683d79b564822a2b04d162b39de19dafef42a12475d43ca72c42821c10712dc788643d73bcee71175191d01eac2551dc0f52b489278ad8de395be3f6b9d78e68ada487e6b14a1ee143528d44edc57eb881b79c2a7691bfaac26f6825630449058b52571b8a599eaa9ac34b1ac412f8d351423856a89f723ade9dab383c1de5bf93a7f2508cd1d9adece7cde64ef179d759ceb4a5301d7e22e06c205ec89f945dbc5d0b9aee8cc48344a43dcbe2386a6ad65fb01d9f6c964ddacde71356fcb745412a58b2c5f2253607fc53bca00727906b17a3771f879cbc6db2e150e08620aa4d02b5723a3dcb213da62c55da46226a1128373ae7b391ade590b2486cc308bbeae73593e6e63d6d6dad535126aaa1d268838b44f2cb2780c4b2f54ed6db7c1c9457d0da34c2059cb2e2729586c1fbeedb34c234eb7559614aa215c2a63cda0fc99bc275d39590dc6e8c2670554e49c861166c9b99361a0d358456569f8efa10ff52a72c229e5ceffd4c51577bd1b30f994c9c3023c2c2fb620389e7ae1264c758cdb0573a7d8200526e37381e016092314a88f6ec188220d380c32577e1ac499f945f8194097212d800c060328194ec6ed66ebf27f910af889ac4d6fe492b6cafe95305c430d85d29c38c1f65f7ee8941673f39981cf6a27455780a811045e7ce44a029f8c93bbd5b2cd26975995df3382ed2717c993ca1c7854a703fd74d937b0b38028740bb54e273690c9f90311147aad506f3b9d182ef3270563139422246ef70daba1d93358ac50f4aca492adc11e09abd0a48be88e249e946b54c3919636be54241229b08e18917a33868f42f405c7c5e10c7fbe00837ea73ce3705f94b0189d9d280f580838c14746e28a0d350210dfda3f7eda8d395099798df9c38b5df9554a5174bbbf3ae036a01c2c892fe5d59f1f72da94f8f5b717b8fd4b3c98c1ab5869421f7a573f2bf145e6ccdff0465770d236ea52e2bf671b6d59f2668231567a037bd425bfe8003fee661efef2a41c247891688a43071be4ca0c44388a8eecd78eacb8eaba49bca04e05dd0f41df8e7393612033588ae338d13e4f80536b0559236b7606db3022e552f5d4afe27f24cd4103a1849f3f3fdc81ea90ee012a218c9ff49d72a3691cc4bcd1f8e1dfae4770b9b0a25eeead38cf3b7261a9af44b89c6f7b11b8d9a5ee08c50c8cc940dce6dca0b56f0091ea60c091a88e8bbe4bbab21221a8f1981f1641ee216cd361e7ddd8f60bd5a2e503a3d0086d583bd76177d0d4a3404b35e6604793b71a2ba924e543782d64e6853455e1be6253ae9caa71490f98e96bc9e8b1bab77460602a3067fa907c182d6d54104881f5c68b203b2f2082301863169bc1b60f88e945a721a255803d4ecd13411af58c45f377c0b7da53e578ee1f9c6a2af820da589d15eeab56ed20f3a4acfb43547ea8f0fb5acfbb01cefdc417e0dfdbe91839786a760b0035065e4a31c730ecf766f455bbf666ec2a083fd8b10c3500856306ad916d64cb365cf8c1dcdf70fcf4e3f887ffdbccb15e6d45b02c22de847ae2b69878c31c7cb8cffcd8f44852bf397bd00859a83e47e8bd440247a72a7484e02fe9f1494fe2cf1ca021c3c4e01f7f1da4e11e014a22bc849194dee1a8bf64f9f41bfba24cd7926be60253096d699f9829c858a1c886b12925e649607b2758d9af60a412083498b4ffb0b3a751228a10c0ff48d3413653751d1eab6e4f51030c4796e404ddbf6c227432359a4f8b58506d239f8f843955429e82ce6d69fe123ffbd7e9996a598c2358e1b503e0051fd024ee86ce78bcdc84f80f0d82b8b96cdf44968662095f7091579d0a99710c10e5e42d1e3d51f031b343504f6e8bab35273c7c2425ae8b596a899238e062fcc1d993508f4ad5a87a6c439ffe836b7bb1bebc797c91a3ffbc06c30e8f5caa221bcf866731f3aa1d6f96ef8b070c358d69e308c6d0b8525f418b7ecc60c36d06396b07d7c205919cb33084cf95931d222ed7aca250a6c768a7cb0324de10b2a0c44908f4d7412d1882b4ed00695b1d36ce56c52b301377f967f29aef7690af7c6be74402d670f96cd37fb526cc9656340007db472f8d8478c388250c5bdf9f7ec3665d23eab78acbe8b9c812d18b4243866ba0286d6012288f1f7885a43791d206874648aaa78189c16ff07148341e12c7fe6a962736835090b849569b1019a0a7d569d978f304a1d0909b2359eb15fb91cf27932d2bc8da820db5da6f374b0c2d349584a3857bb90671a6fd01f0d77f673442493b54651e53f5c0470559cd7764b827dbe8f2c0776356262986c46ce2756a58e646e71e9736ef344803f304d026807d412c583026e4a7cddfa33f6a58dcd527f130502726d2add09f53ec20bfc4afed58f4af89ec685182ce7b581dd6500d36ab8817d066e81ff87e205382c6337a67254aa45efb9a626317144735f8ae110f493446d1353265e8699c821c73bfcbf41a6d2dbcbfb3c5bb9fe9c1ecb745e20be2a9c074159f43f1ff10edf9b98c5ae58abf1bc87b6f9d1e0130774dc484231d68dc8135246e11111e1541da664c9b0e92c2d7095b9a0e6830ce630416792dc87fee6f8e125771dd2b4998fa1c773eed2cc0ffa15798eb0ef59fedd8a51efa85188d22b22ecd9c5503c51dd7913d4424d2bf82d9037ae83962be5a6c588155796366e0f07f085221e57134fd591c6ffd7234c07493adcadb793e5470197c0d167ce0757664040374f65e34298716ec78c71042654260239bb2152562e21e70fe917397db20c65c23944989d8aacc9812a168b457cd40cfe718b7e45fa6984f277ab739e8c241a2c698228a8f1f2b73c1ab111267be65cbb10fa2dcd073594896c96239e26041610e1559d8ea070944073099580d9de4e18ed705928d5a1e49db585f04acac3c75b8540fe93ce46d8065fb4d92562a8cfef54c4652a44f988149e82452351645f245e610758e00664d1856ccf10af5baaae296ee6e68c8ecdcb8a56a2102fc18fa8a5d77144381925084c8065bddf1df12667d5dd8ff157c61c722117179d748cc341228c96b94a85cf280742e398707d34a812cf093171e25900e6d57881cd90b20b080e09161581c35c4bf57f5deaf3d02867f296809a211c76d9142d43dd297eb33012e59741a3386f7dea106162dcc5d8a641534e6ecce5f98ae889d1c4fa5db53883862342f40cb207a3a7701f9956ad16d2490c91ab1fb45024e12de63e9a9b96105d49ee109aa9f6de0aa006fd12909203b8396ca3eab13aaa6416c3d24fa77dee93126ced603220eb08ec83ab9bf5f05b1f4f177084a86085a8fa109f381af96f5d45371ec77d5a113b63b9165c9b123da4309c8565115b5ae002f61ec9e7e1f6698204a8204d74d90ed26c7be4544bd766150f061f816adca1ef95b158ee1ac3ea372c62be6993db0c5a33d104741308c09e3c33c5ba4e958f7878f3790ab435b3016e4f66a64b2f54c2552c05b22e848ec4341e078b4c3c473e6cbd587e28adbd5565cf4bdd57dcb3356f0660c958c61a330baf02a193733afc4c50862bc8ada4cce5dcfc23d8274421006593f8b308ae64323f6a3acb9f8ab229b1ae64dc24c5c0805dd46a8c7eee3534db20e780e7bcd1d00c570399038b0c933c04f0360242bd5f7057b4da878b6913eb417139275e8267a013e1568ea21ccba77f7003de3b6aba80a49b98a63961b2831a81624103ce20b6b985bed2875424abc416c0c9f0ef06c85222bfe478eadd6f1fbc6c4f23a824861108f589b9765b26500e87db1e4fd7137c794d76f86c14201b194da9cc73cfb1ccd2c9775ddfd5299560134a191cc0fb2603a13d1aa350b2c11e90d3c49b6015e40bde0e0cd296efe443bf097efe1204080aef5fc675e89b0447a647f113086d92c368e1763eaebff1a0d26e346f1f5900f25b8425ba3fdadb1c3bbb252bae8694742c014dd4e7bedb09dfb748a6611a1181b3890a1f11ff1524491c928d5c02fa6e9bd17c34c80e1b0043d13d02f869f74956884bebbe4031a7dd362dfe4448a64de96c8c7844961cfae80f1e52b3e1d930da057763a1eb46b3421fb35e4f09d4958fc111ffd368bfa63e10d59761ee94272dd1878075020b017ec52d5b017ec351a303e2a167d15d486348f72c2d1087683e7d7e52402cd8b046a43d0532e7f9f9ae5503daaa70fd9758e6b8b0147d17bebb8014f880f1dd6f41560c422a327bd10636edc096da433247d26117f0599e86b020962d2c35fcac47c374bc5a0ae06300cc610b2db265013d932bf194cf64a0cbde1a7a9653d5f985395d16b96db8f1cb5b3b6cbb3d9f335f5ebfa2170a057c6476903c3953312a8499e65e6bf55e7c2a75e9ded541bdcf19653ce9935a7a9f9972e55f11d3e71eba664cf8d9bc3f768295293f7e7143ef2eb24e6656eaaf53ad2484407fe974a3356d3382b0d68aaddb437b23338573425e3c94dca8b47c242ba9dd402c22f712c08c54674feece5dea7421a498e9ec4937f54d60ac7126efac65b7284bd297549dadd1839123e474c29d4424b1052cad4baaa4cbaa2971fbda19d3d18b5eb6c23cd93a9cfab399d0ab039dae39c3f7f299602a93b25d9230c2eee7aa39d91a76bf80a572e661f3b87be529ded59fb32483ee97c6edccf44918c477ccebd5e31dd72f308f211b6e21685b0a1ea560a1391ed2127b3c4f63583c17c1eddbc3cda3451a48002fa0cb2e32a3f30d58309afd375d298548b30da6801250cdb82bc926c69b6994b50e50f1054191efb1843a54e32df24ce9d7afa2fc4bd6ff015fc671677b4fe77f4113b5a988f870eb6650401050a847bb7efe4330a2ec7e5973aeaa632d21b11474921a2bd4f836a6f474607a3fcdbc20bde9fe6c509d28f8ad21f73b1e0a9ef6dd6643ddc84bdcc0c3017163892f91eaa7d37217a02f040a27e0e594436b541b516cfa434566e1075d988016b958ccacb70adcd6514babcefd5880e4aa20c291dbdf6f603b247995f524b66aae22d467b7793cd504ca1415fd04428d9e3f6d001522b0d9b761815e393fcda1463693999622e8ac9002370f2155d472f617612524b8b3929c0dd21b551c777719f6c7c9fd241ac91ed2906f29f825fa45874a8801b524ee428960d59225b5599a2c725bce4810a8ea28b41fbb66d13eb7a32420648091d41d14f4d62d90da44324973dbeee1e1abebb4f0d00a10d3af309fdd3fe4e4847f68cdb4644ec86e10f7f2dc64a7ee4445856752a1c43d6daac15a7fb130246a827261606381b43c81bf2a7a389bf837839527f9922ef5f39899b6e907618b780a6277d4bee5b3e0e8b1ec62b1761e2cf6814f6385ec53ebc915e34e40f8d5ac4d1a1a58766361fb37220fc24a4f1a1a5c9f75a4de6a39e56925ebd7f3da6a38300d9b313dad5ade83dd2ae6ec02adf835e85483b5224f66b7c25efac203b062d115e2eaa70abb4e2a0f991dbe1dc7a91880c08a243c699eebb47c7fcb8846f00ef031a2c99d0e87b90737675c4ebc9e27560bf3819602f619d06cf693ff24fa92639298ecf537f51032a8053a1611a651e2af074ddd8fab9f0191f64cce9409ae808033414da46da62389fc708bf15f0a066e8390379d2e21786328695587c2899f1858bce7781adcd77940a19091944850474404a1415940f3d8108f8face2ef22b42bbc7b7a9b46415f888e2aac114d4d79fa317a5e6020bb4004944312191279ffd935ff5a86aeae40ef191e91176bae7993fa10e0dc6898585a71024f0c9168f80d9ae940bc54ec89163a5ce02f19491860bbbd8843769a8bde3861190487da85f41f8abf5625bfea049c4207d553ae114a575f97341ba9b7be28658ce7c1351b238588cf82c70b4e1fd1742c3c9d0684130619c81e93ba34f34b42763dcb1957765c3e03369bb8764c2a6ae64ab9f472b6e66636f1240c3307963acf819dc91173cce1c45350ebc21e2e8aec2550edace2102f6f9ba8dc5a4a240538c0badce0514581aa308d6d4aabd4400662f29e3740bf4db90f81559722ec0588ae7b8c7968851df89bcc0569ec6e3e7ada8c1b734929e7fe0467711513636a9fe9567516712ccf17a7c9fe2216d35b2f69ddc879e9ededab83706402c5acd1d190323fa3cd2dff3a889d5b0f02d9b950a801954bb02ea5bc2795820d855693af915f34d0ed387460acb8585a001dc3f6488f7934dae9c26dfb2d230f044011e3590fbe29f0d4030fafaed3adcfefe9b2ea64d4dd702237cf98d548267b313fa7b79befc65eb6fabb68d9a88d052237bef2d03d9075d07ce0739c8da97ca4003b9848a4ca2d2d9ae03dfada440d4095cf9f695d40a0882281408822b9eb59d65016bf66e675592265e5e969bd7dd9ae5077edf497bcd1fb8d28228f9258190d1b80213985045169678e890052074ab7377cb325d71c5115660748422c4d082229aeee04150fe17085281cee65b5d4686cefb420b983a218a2546cbfb4353c7e57d59248da6cecb1be61df3de797feadcf765125307bf67de34ef9af72593a933e32dbe5b6f1aefcb28a6cecd7b86b78d37ce9b863700de97574c9d1ade97594c9d9cf78df765d3d4015f17f2be8bee0079bf9b936e59e8af7b773bffb4629e764f330057e65316008cf25c99438d2743551baecc286b83b6857655b09e2bb3cad663539900aecc294e009b4a1bc09559d50d80c3472bf6862bf38a7743c7a201cbe6736566f97cbc185cbe32c700f3b705d88d57e6d57d38e53482de17274fbb2d1e01aecc2d21014e2edfcf95d905f513d214c17a775732b35470a05250a8f470e5f8ba400f2a29095c390a092281d40beac3b192f96525876a0bedc2a8e8b832c3b0e85861f1b41b9302ba32c7c4006281812286a7dd1d150e57e69d55a7f274eea728e3f293c13244b06a82ccea2c05b832dfa5002d37c6876325f365e5e0821201cbd32e5e055d99f14b106b85c44ccb876325f30c8c0e2fd8091a17035c9969620c0053f3eeae64ae39408c8cd7dd8ef12670e508e49eae902620f315cdf8876325f38cbbe3d7d3ae18c3e3ca2c621e177bda6dc9ec70656ecdec80691c0157661a340898f1b4ebe3423e6868b6e86209b9bb2da45d9bfbe9983901d8e6460a6abceef615125023c3d3eecd4c8f2bf3cd8c1e325a42ccf0b43b038d02aecc33880a98f1d540f4b46ba3660157661bad0588610f5a9e76716430e0ca8c4383012d1723d0f0b44bc38c065c9969a8d1001a6117353ced0240e4e1ca0c001b1e6ad878daada1e5802b730d370eb00187b8f1b49b43e30157e69c191e7073246ed480c095f9860d086c61c3d32e68f3e188c00b8ed76911b0d11444c6f1baaba3b34c37c3c675de079e42944a4ab5c21263d5e2c27a818991f9c53334353266882d1a356c6e6a8037fa26bb173dc81d8fa75d1fb742174ac013f0083cf7145e2091fb83801743e4fe1eb0fa42eecf016117b93f1e5c8c90fb6b40d883dc1f03be1ae4fe16d0ca3d851584c8fd29000443eeaf87ea07b93f04b4c820f7b7c36a88dc1f8f2e8a727f3b322eb690fb439a400b16b9bf036027727f06582191fbd3610a5c8820f7179455c10a790c597e05b83645159a90fb9381c93d45157098c93d45155600c492a2638b2ae48ea50a096c0105520f5b1481a3850c3fde17045045615c0d21b368e083734f4185a31b68b818408c2a04b0f2440f8b1236b854724fd18424773c0178e7f2b0ac73e50821bcebf2af950d99f5accdf96f7cfb8d9c1b356a0c40f36ee822703b43e0767ec0edec80db9987dbb901b733036ee705dcce0ab89d7bdcce09b8330bdd9911703bef703bf3b89d77dcce13b83d1ee07636c0edacc3ed1c743be7703b17e076c6e17606ba9d75dcce396e6709dc1e71dcce3fb733016ee7f176ceb7b3cfed7cc3ed3c80db5900b773cfed6cc3edcc733b07e07696b99d7bb83dbaaecc6dbac9c8d840a41eb45be33b57bb8c8bd4c3757a38906b9424c302af80052a7021d72889a3c08350e0473efef8eb1a256d13f80526f0231f25402383f7462b47ac6106006464140868a8c1a1b1313303beb91905820edb3c8761a82193c330d088c92810b460c497192c242007af8c7bd725039161810adc9e376a5a68563984321303b3dc957cfca2ca3ddc54ee4f4646e6864025774d513121cce905e4380afc38ea045fee9af6709fb9bd07bca2ad6c0212b83d6f70f865e3b1badc3575e172d7b4e553dcf21796c1c6d058b2154c55535465a264e885148b5727fc0282f09593b31c57f3c88c35c9af1b346bed66b5cc23e26122400912452f2bd58b76d50b0e54ab17d54afc0dc29777d58b17365181054d5f2815e5d70da167c3a963431b53582fb4deaa562c031b765d3a220aadd73c950ebc50e5852f3ae69257ad49342dc114e508a52d3425c9af9e82cb86143b905f301d910455e8a9848859bba7228217aabcf02b1d84afbaf254d5326d4ad08e28c2344dd3340da394524a69d530ad0bd6064644d142925a6ba55c300226842b180981054cb5663f59599b82480b986358f3e9ba688b1e3544f812b97e911e779f49e9edb1cb9c615cb515b514cadbaf4e8d522cf4407ff68952ee6cb5dc69d826b1ec5bb5db0776dc96dd6edccd9e5d1a3e9cbea14749114a10048360973a60cfb06f57669be6e91c85239ad82cd3589acd3aace3366b33db988661dfbfef62c7ada4ac5995a0e536cd76588759387c9fd5b4d76aadb4dca65969b59417a7c6acb5d6269124bf4e799b5996d9ce6131e6819c1da0d267dd6d1bc35e2ffaac6a745a6b3bbfb2fe9c147fde8766f75583d4776eb93151fb2a115e47fb90bd36e885fc76e9e757bf5dedf4aba2a8bdfb4c2ff3e6372390b85c3838a2f8af5661a8dd20d434f1db618edefbe321470f9fb69c085f9e0fe53e10254a7e35175e56aa7622801b99de644a6b9aa679b4d3534caf9a224e13423a5f54ab7b206bf827297c7997c915bf7a08769cb2ced9248a1d2c8f86d2240a5580818820340561ec6e5926b216624ba660d282cada3405d315b9d64f8796b38f4767a10927241d4142055c308dddad7a6a73866db5b3cb1457aaa4eba9c3a24d710e62a6a75894d2a60586248aa4248922050539070f294760db462b0e54c4719d865ebd86bd0e7b7debc86efbd617c9b2fb2a92e5acab41341d341ca4e2202c1cb063580cb64e62143c358f3d9d40b07940f0fb9ae7fb3caf793cafeb9aa7eb38ae79386edb9a67dbac6d1e6b9bc7f2685a96354f966158f36058df64afd5d2e6f94e3f9bc7e36e7968df503a9b677a77f64dd63754f60d9df22a52b7cdc33fb464efd672c71e84db2c6abbe5501c26e28561188661185a7b4ff73524d377f70544a638c8066edbb66d28d4c6a15028d4c66dddf5b31f460ac3300cc3303c9d408628140a8542a1c2300ce9e9cd5e43f23deccba1293ecd18473a9a2048d83d9dfebe63180dafd2615372f8ced29cd139b97bde766c37fbef2584e8f61235c9fde59053b2ddba13a91bfea1256f14079b89d46720883df620f6b4ab5d67ffce62229b15a13c4ae5a22ef6cea7a2dc7d13e21786e93bdafdd4bd9bdea78328d7bb64281de661efbacd039966465d862963ea411c69a31044630a376d514a84665957bbe1a039eab977dcbd0c10657a6b33fc438ba559ea767b766b5f94a6408c1482944aa552a9542a952a954aa552a9d48fb8c6d43d90c2216d49954aa552a9543fe21a555b28a4993e29a57c7f409dbb6d5edcbd1751931c4437c83c0b872dd30bd1f20f94285f21dc2ea764fae1e0b2036853a64c09030e1b7e59a4d4e78774f431853dd04c63120b875cb352177090e5ed174b594a89012d6727caf3c301cc19ce302b87ecf4990e3fc85c2f44cb19c59e54992a35e830d94c197c678e3b91ed2f2032f8dd12e9291949e52ff0dc3bf0725b7c180672e7301083dc7610bc2fece07d2886023111fa1d7ac43e1c20f6d309c33cfc7d860f77a07010a80f118d28ec5d9f751241fcda91c1dbd3e927ac9b64300891edafef3fd08cc401d43b733b50a80b4134a2b010a9871813a1f788c829b98a2364d91afe95a8a754f051cb88c221405d88300cc3300cc3108542a15028d48fb846d43d80c2216dcd300cc3300c7fc4358638b422a43b73ce09ce2e041289e769ed042f6864fc256691026d0303da4676159817944c0ceb7d1f3f9ae754f3196fbd3f334a629af66d1b0c14a47b9fa9ddbf139384afe6e2bb2e67ddef3017e9fee5b6ae511258e3628d1ff948e333ae5152872f03ffc8c799c75ca4a38fadd75ca3242b9e46fc918f33b8fc5b44fb75c145b61c8601fc766d9601d6a071d40964fcb7fb76b52c030fa12d998bd47a87676ecf1b1a0632775acffe63eaa09ebd75c3c8ae17b0560b0fa12df10ecd56f6194675c8143d1c4269392194d6d2dc651c076edbcb8ad3ecbd45b40f6584d06a9ff5f1c5c4645f77edeb0f07f6e19039b86d208eee1a9885bb1d467e38640e8231a8cb097a27103caa2b456029a50cb4427bb285c115f95657e64f7e38b695a45e4b91212db7593899571ecc07838552d6aebcc75d560b6bf5ce5d8643e6daed8ce2503131f7993666d3de8591e587343305164f727f4858a3026ac3c28aac21dd18ef322e9c82cab72258ee33b3eeb86ddb4299235a40cffb50dfb61dad3e73e5d81243951833ef420f5f39ce90814ab5e0772a0f2573b7c75c20a6988560d478dc8c4605d4bd72acb940d056769afb0d41c1cab7bddc77a92e86b75d8f25e6cb21738c772aef7489f44df6956f48df646f3921860cfbc409e66e7fb940a8a8e021458c1072b755b619de8605135965bbacb3b05c99592df8cb2133cb3b176fbbe1637c3886ac1471a1f972c8bcf2aeb9cd7620056256b01d42db0532c51f7d937d061684406457195224f5a332a0209617cf637d3beb85e5e23263b90bd2742d33cfdc1ef1ed31465d79c9a21e53f7e565151438593e3bf367571f8e15c86d2b9f0f161f2ef6fb34cb6d9b64610253eedc31645350c343425ca4b5c80ef02133837d608df7bd00497e49137444acc9f384a6138a27b39a651acdc2dbd88783b336b01f13942a9050a4431561a8dde994e258b815efe48228f965a3080b2c8ed00226412d40aa2e40d28442f5e4cd06a0c58ce3388e8322a90465b697524d7616ab9b05b7efd2d971d672d6a2ec59271668cffa6cb769dbf65dfb770b1434c5ec9b0f11aa8042c18fe3388ee3be5d8e66d409fc3ebbc5269bd80b5eeb4e53e84f07cdb53b8137f74d96bd450a952b47d505a2adeca9bb83b6b2cbcf870856e59d4a154d647b69965f6e2a888842d6be1c5d85dca1b66f7ef2035f4419e8cb31732bb178f6524ef45027f00bbdefa35de7626956b93d56edfbe8ecba8f66ca945f3d053be7e6cdcb85942714089e4ea8d3c9cb49a7d76831eb70f5826a9d7ebdf6524e02f8002d41f16e7891587e6239015aa7032d663a4000751d90380062eac82624132368eebe4bb39d3adbbf0fecc0203ad873ff30fae1f8386e0575fa40ee6167b10fc767b5bac2711cd77520e6bccfda6db3a8d307721cc7711cc7711ccb954a662b7b27514b082bf6811225e5776d9779dfb5ef2facb9cb6ab40e0fe2d459c014b3c6b1d76ecdd7bb3577dfd540d409a45d065a478ea0874c1d7934c54c22914846d034a79e758ba967aa67aa7f2b5836e99b4c264141c1ae5c0a3ee4a175241148a60fba2393d0bb724944eb782167cf8600312ff540f0d34e5b58395db9c4143d2c9348254b487d57fbe77da90c4ab90b4a2c1ee1bd0b85f7be87e043fcf0de5f218b87f7ef49dc87c27b58e83b8887bc7f38f4c29c85b0476efc0ebeb2b89fb6ea89c6f0b238ec8350780f0f85b45589c6f7080621a78c491c9e7d63bfb02a6daf3b7035a161895692fb6ac92f54e6b473df7a671edd364f77ae489683cc572be5b09100042979fbdcbefd5524eb70a284f2892872fda69dbc1bbefbf71eb9ee7b8ff01f3662c4e3be83b8694bbe47162739cce2111e7c8ff020369264c4881ee0432c91d0563d884f5bf33d4eaac94f2589701e8576151e1dd117cea703cc128cbea98f59124e3a2f97eba7039dd247383b6835b959d23a8370b9c3ac1cba6bd7d1e12c73f835ff83b69dbbdb278e0d2b3d31451d5a964ffaa67e5e2ccfa3a227e88e1deba5927cd23c5aae97452f5984c4089924d7375d62462122ccf0d014ab58af72040645d20285ec2708e827a8d63a2bad35abb36dc8548cc0cb2d850e5a905fed248a13356caab5d65ae79c73ce39e704aad507a8e27c4ca19de2ccf9c97985d55a252596dc4b544041a909e342a74416842f9a9c14810a3c50a29282706a35cb5eb3ac52ade7a747abb5d65a6bd5324ce585248ac014250b2665f80cabf5263683052a6900235c4d71aae457731576a6396032ad27caf5062884f206a6509e8a393d3d3f3d3e383f3d3f3d343fb37f7a7c7a7c7a7ee8ecf9712109e72715214dd602480b2d1c30757a7a7a8a10444f0fb60295dc4b54206972e28326273e403f3e4073ce39e794724a2a65954a3f800861526aca09cac9f15152b25628bd5a290b29817e82e69c73ce29817e82e8fc09f2c9f911f404c8b5e3c9132054247d3138d24433715c52bae47b6cea33978feb72d219d2d965d7c7d5e3922e9f29a974f9c81cd1f52ce4a4227cb932b5f1c9a2c7e6278b2c286d572af752116890ab93298b706acfcffccfbc41f3af76320f34451af467aff5b3d65a6bad73ce5ae79c13c814e9a30c993aaf76520488a1a9f39258c815e1abda44e16207e5e2c7121542a832c0e9f9f9097202e40afa0972621314f403e404e827a8d29f209f1c573f79b515289df9d556a880b4a1a58d79fa974d7605ed88e2fa71e2a408443809c5905fed249b828d6bc7a762977fd58abdfe27e7f23e1748ca4c66a7545249e5059a22bdac3407995c7d1a87ac3e40b807e3f850fa3175800861529a732afd4c1d20fa201aa5fa748bbe69f7967b890a2872c54f3c9103da447772666be6d44083509e4ec144965b0a2854802101401898f44113ac9837602288237c10050998204a41156068220a4af8c209162cb0718515b658f204282c5002510e6030022bb6d0228825444939618913453041c1020dc626e4a00627d081133c504209511421b0020eb0e8a288055890d244144b2862a2044c4f2021ca8747e048810c4bc0200462a841113c04c1648215dce003433861ce9b01397db0215f64956de81b99cd39b10f35007d2367005a949f5f569fcd895557dfc849a79497a73b338270c4122a5c30061e1c511c84010517bc78d2832d8cf20a5e30297af282112021490eba60833208f1052ea68cf24d23595091ace45e22c20c686e29769082fcca691aa2698818b99786c0045718a5525969cd04c02aad35579c6bc52af5a918f66cc55c3f53aca712fbd0cb79a0a983ad807c7e5aa9522a7d8070cf14a9085be90710215387a9befa7418bec225224021531ca50b2a71a8d8fd61fa6063bec82aeff40d2542a748c9724a2642a74cc912fba0bd88cd37fa66beabf846e38065792bb3ced8fd61ce2abb8239324b5cbb33965f39d9956d5c53942fec14e760d85f39193bc5b0105b6118ee8942f660393d1447ac79f615425347e6746b7ee6d89c55eea51f4891297e85399ad44430bdba6d9d56b55f0b67cb72cfde53a74eb15ed6532d5b4fdb9e5d95eb69bdf6752fdf7a82a4bf421fed54bb210d4d94d21d7a349a97679a477434808115f54d7fce9f66b0408bfa664e1d30b936e99b29a70930d9042b6a1e9a84fcaa4d34911be72ec2da04264b5c69d842286172ee22a4472b7932cd682194af4db0a22f388079016b324469f082cabee18850b4993bae1c2861bd2a87e10d4d84af9c1d9b2932412795147c11e59cbe99a7776699336d9041615ba2598145a7a4c40aadc31fa0a025254b5db8baccbda48449ee722f2949227bb9979444915f22d3096cb05841a701254e29d3d7d08253cafda61b60ca9a64faab206b92fb9f0e702a865f5e2c8e4f11be6cb0204153b6993aaf1a353e5f46104e99676e9af981ae693a53791dfd7274ed0a2dd5688a529ad26c778c5ea94352eddfc524b6344555941ee05295f2a1da272f65633f6a400aeb31074cd15a6b5f856461ca455b99901f407ecc1d397e394420cbff002244c33ea07e3d4bece3c79190a9f3924640a6cee9d987482317ddf9d1adec7605bf6c9872e54c8a1ca01220822753eccc852a53ad6cf7b6abf272164e31cb56b00aa7f0eb2ab7b73b9683fb77f9e9a057b964e5803a3deab4dafb0af3abb978d58c7aaab99a7f4969b3bc968348edf57a59a6ddfa225816ca300944f342f57828a9b1d03cc543f443f3444d3ad6c86acce2518fbdc79c98d546e62b66f57baceff166791c7997fce545daeacfcbd444f8036e099c4eb84196e5b87ab6c98439953042f684252594a0441319cbbda40413295a5c51832dbed0021464e0852e884ee00525902085214409c210c67e03e93134a1a088221d0c118512c6453642092ee8c20790306232f6db02f26d8940c5d048c822f7d848c8f28d3384bb1dbbd9b1eef56ab7692a541802a6a3332625ae2eed18ce9962cdd18e69b856ad6a5a4f4eadaeaa6119566badb5d65a5f6bc52a56979454e045a70412ec5c6677ba2b3f1c56d629626f0d958010486c73e19c29f6c85b4cb3d6f64c11bbbd3918e6c26ca665d87b300cc3300cc3b00ccbb02b744db365d8e9d06c61ef23681909f034fa761d28b6a1bec1ded57045f89a46598ace349a3a47c78832ed1e7ed9305cad7e511c6a1e3063efa617b3249cb9ebaabd8ef983ccda3fe93df319d237d87de88e1db1030d691e2d63b7985d1d2763328cbec1de7d9b4753c430179969cf82641fca241269238a103332c21ec3b095b5525e8904cbb24b4c66364332772496467892608ad85bca6b1681cd226611d28679ec5484466019966559964924ddc28e61198665f8157e6050fa01648a4aabb92486dd5e3f934c2553e784ba977159b530c9e2e5af69c4ed7115b324c41eb324cc668e4fef4386780657aa7224c3905296d09e8862e2207515251ce4fab9a4752492d94cb25192ea473edebcd2bc7e2ed13c2b97f1eabdb2c82635f8e6af79b444ae46349159a8344d0952e90b02f879d76e912cabde498fe6d278cdb5f9cc6d1ddf1a5fb9da279277913066cdcf9c68545da41997317321fc199a63ecc9a8b98c138d98358f4f341e7d9c81c5e30b891f9ab9f88985661c1fe321fc192752a930d28cd7d49c68a4a1719a0bd138cde7696c5e83876a6ef3219ad338d1882f6b7e86138d33ade30bb58e3f8ff150d2c442353e031ec2aff1a199b74e348af7e61a1d7d9c712953946153e3d2b0ad5bbf72b52cde19771611c1642e41d284eec8a6244bd8ac65d5ed2c9bc8f052589240054b23a5d028579a9ad70fa9a19939fecbe69acbd22ed25c96867d10a279cd6bf0d08a0687e63de2bf441aed3dcefcb50a8f67be7fe6c61cdffbfe40eddaa62df95f991b766b3e861ee6764f5ca728956418539422a314dda9648af52e5736512497b36e53ee22c5f87671cb3dfad8f2550b6e7af43106964c4c96b496c1dbf9b3b91b5d6e8f1d43c37309a515516aaa0821fb084152ca9f29ae40993adc549a3a53cbaa161d2d1e01861b597a6cb93dc2dc1eb5517e3ac01cd437558b5912da9cbacb7bb4fce5a9bb9ce526bdfbc42c1c6612963251ee1eb4a35e86512f9beae593fa956bb47a8cabae11eb2c87b946aaaf787289d55d9d7593b6b3dc231f61be7255f7e823cc3b23a638b398629d5ae079c514ebbf7bd781227cc9a62b5a473671a2c5fa9984eea85e2f9fd01dfcfab9d43ce1eb67135a59c0d7cf24a60eea5532d15613ddb9af32af471f557fcd25725d527a22ff749f2cbb1aac085fb2285f36350f1199a9d03c2ab78b64f9243f918e8eb4824f1769e63567b92bef41f315961b89390d7e12f81e2ca7390d36b27296f7588359f3aaf778f47106d35cf51e3457cddc48ea34ef3173d555d848cb67de63374f278c34f3bbf21e317ecc7bdcaf60232bbf8fc1469284567e6f24e6f83dca5cd6bc8cf7f8cb9a98c5e3af790f99cbc0465a2ef31a6c2449a8e5323792fadf23cd3dfa4873d5353af291e6471f67661220cbbd32d8fe366999e6cedc9984b6eaa5134d9ea03bb38964a23b5309df1eefedf1b74799db234a934c4cb99e45e61a88083f2c9960a984be5e1ed19d98d7cba296942cba96b6ea636ed3d45b58f362cc654dec8390ea2b5fc1432b158eea3db6fc25aa70927d8fd62869ca03a13baad7fba03ba9d70fa9d9bee5ca26da7a22a14c236612534c72535746a1adfa953b8b68ab1ea6fee5ce26b455afba4deb596ed316eb32c9f52eb7692bc60d62c80a4f1dadd35d5fa968b16a99bbdde36a64b93daedc1e55b7c76db4782ef54db5d9c7259b5c2aa2d34481a19fd1f6714db16708217cb9b087452af6bd7b07dfc33b887b7c07ff1d9c180747dac01d47dca8fc0e30bfdd8543e422ec2504a129f7129cc8a2ab6f6903c3afd99f4256f22281d8355bf47473d9ccdd9636aafde69a224d0ab567363d33c32e1f17e683613eaebe3dae79978fec76f934c699e2ccc2aee67401c10679d6fb794d5c0b3a7a6bedc67def4b8efba6b5567bc67df3b1c336b17868cf2ea461234915c3421c16b191ba35cdceeb3aef1a0eedf6ec46be6befedd985b667f8bb867fba63443bf7fe777de896dd5e28bb15b5732b1c6c2449de883ddd31629f5dc83ec3120b6dd770485bb3db6edbcb92d80721fb6d685a8b93e47bcca2d4a9858122c91588293e31451c6d73bdfc42f368afefa695604ca529ce287d534f8da658ef33e911a64553ac3a50d0a28cc9a2790446f380b99e8649c8cadfc1cfbf6811dd69307610852aac308621ba1065ac57698194a9c3bdd6cfa34ea42d7910b3b4a10fb3344d231a59f2e189c6efb224e81df4b40b36f8cf7effb076ef4423a761ed43a2878742a229c1ee1bf9cdaeebfe099e8e3a0985ffc20f7be7b010f8fdbb3e68ab1e7577dcd3e9df392ce43dc443a87ba71f8b07087add245614f8f9fe0e5ee83bf8590f0fe1d056fd879bb666f7d39dd3673deafa049872a8a46b1a277b20640ad10082001040005316002018100e068322a1400e4589acce0e1480137f9a4a5e3c9709e3418e433108a230631021801800003006c0d0c8ccd44a002c65dd041ea83b2308c735f364618eb383e89ce1e02d893be5d87992424f33ec1546d066acc7fdc730d63f792b07f19e486d8f8975b7da02038610a81a703bbbb4b4d09a41550ca7b0f45d61668531d8bd72f1185b83291795d18171c4feacb5519f8307d99d8d003b1a63a47f180f481928379017936a5dd81dddca24755933f9f7cc0084083255281776248218ec974ffbbc99f69bd0b24260dc94ae21e62309a1332ac2a8756b0e2d8957cfc7fb4e0b6e3bd4baa95a77ddec4395a552afb66f7b1d6ce6ba3ae6a93e476eefee046ee93b516f4971ef5bb0eed8e4100f3a2a9469f30b0c0711ff8a482586d9192b6b3101cdc50c8ec2920c2ac8fb7eef6f2a5940491e0fefc1cbf2d753ff08516e6a7b81f112b39980a83a5f10481418d5cdcfef5e34ce826fabba8bfdccbbe20e79d3f1c8a8ae0db05b74b69976ddea87349214b4cdf0887f45342d79998b234b2dec0cc8210d9996d4b6d10fa62502a580c8e7148b259afc9f099669ec19d7d506d137e44a987d455af236bf1bbfec23667169b994bb0b254a228f66422b95ed16658e23ddbf65747592ec2b61895e8ddbaa110410459f827995c8950e025c04175d1ec8ad316ee9b164f9006c81924c91834bc99bd554f0fd5a432d8c76e8ee3091ce99ca0348f15586ecf377c4670c01dec36ca0e8cc0d786db1d34243a1fe854239ad8f5a5d3b32ce656ff466aeac9640081e7b2fb22ba06f3492be069cd984f3e501a26db07f156c8630fe8d9366b6b6debc38add52eee4c3f172765eaeeae385a860b92959483c69beef86170b13402f15219df76f6bc8c8326bd1e6d9fb65a82e05f25e97c2a9691da5408bfa53299f4ba1999765e4e2e3cb339679f2f16587d014a1959249ae3e462072b7148f3ea1b6591de41ee8ebdd282c9ead76c0d6af053ae0a314be355ed18314133fd2af0b9bd4a94fb54b2e9dc7939db1ac95b4fb5106db533859c8699ff9e10dae3d199590877f451dc69411bbbed3b957d8e16f0025d54c1c66b6a36ca200c3c8799ee46c7e337a1101f5e007c49ea6b5d4ccef4d2c51c62bf47e40d00f1be94db968259363f1f7ad6def77808f11a64a888a60c288cf18701aefd8d014e69c8752843a5227b154d27ab9a3a1b70733474562dacc8f76af56b9b15d25f05df375a6d01646adb497dc18c55fe5b5c5f4b4825d1bc0a5b461b7d2a2e2e539cd10d277fe32f3cc81c9fb9e9d77a49d870fa666a1a1c11b43ea520475b3b092a37269c1bfef91159d97c9838e50cf38a56489e7035d48104445702eece41d12e30408be05528da907933717341ccca5af76955d67a67f4077ad30d5250bd5e9583b68b46ec106700ddd5190f8106c5631347a001a02500d225d1db5c4a71f1ad35f8ad939f06d4e6080bd9a8d2bfd92bee95b6e6f20a9299f29dae41256df1544835d85fe6a131c85aae022dd5ccb7a25d026dd393d1a89124a92ba51b560346520a29253fb2c0c224258b1d747a0cc741933ef0d02b3624139907ab89b90baadc0b609364b8ca7c55d7ec80f590948cbb4fe8cccbed92a25ad4f74f520e805b50912847bd324dc882610b25fe772e15e293427e967eac6a27cef7f1f62de1ed22499941e072a50900f6d43dfd210e5c1c91f63593e7c37ecbc03b6b7faeee63ff87d39d44c4c61df86fdde6a71fb2b8e36b150ddfd3d31873fc10e3845c6b4a08c606a8c248a08a67bc3b1995c284665793929aa9ac17deb02a071cbaed4996f12856913475b29072856e168c9dd56f20d2bbcfba1441089afc097deda5e16d4f2cb029338872099b77a099daa446909fbab09f61f9ad0555fc987a7424e669810d633f07ebbf3eaedf83dd92b36588b442786176e45a04ecec797739d0e6e0798c1f825a3d56b2983b590e42d31da286e17ee71324427199f4fe41f938236634ebb96b394398001204a998546eb5eefe6f825a4d5828999c1196889542bc9c30bf1cf224bf5f8a1fc4768f7d6214843d189b918c6e0f7840c5866ef3eadae8317c60afa1fcd82afccee472b2747a2dc4adb666ba92e490c2d50a05823feb90d2e2491c12646bd6579c91162582070123a811078c262839a8603285e2f9d0871218175d13d19c108c9168c6613202f2f52e50545ccfa416c8e27f717b087edcd84ddedca25e4a92e451a1b856f72d15bcf1b0e76a4404017b0fcfbbae4d844e77093b0f807803bd9435bb1346b429e761417f9b21dd4bf916ebebe788684a75190d8ded16b1f6b7ba456455fae21dfc1d355be2ef69db9c3101d9b1a5c29979bb9c7f7e8de125fea325c66ce689555ce6f936f04ed3cc699fd32c432939e4209bc3f3347512c1a7ebcd87e3ef5249fbcd8edcac926425e6a845386f5424ac6426d5b047a62945e4a17a72271fb0f7215e43613840c254a73b974ef3c205eee795ff454085907167e711e8a6dda2fbb9a1b0d6ea24748d8ea0e6c987e730288c81c21f511c0977b4ae550db7915bbf252a7b0de300bc602afc7d5c7a2494dbc39c64486a64a412efedcb37c8f703acf3eb848d5ca42bc13feeb302e5029047bc7a2ba426479c1e1a6fc65fcdf90b8deb9cc199cbdbd98f4c95b861fde76b99eedd482ea3b407acb3dac9c4ca027771729c12ff14699ea8f827dd504bf99e592981916c39b10c7755130f0c5dff71c7420e1a0160d39b7da0b90db76d19315640b40945d4ceb0ecfa8733cf2b18a4d81f20df4bda6411f8cec0c5ef891149aff4327f52dd0d2b44c77932119a38482683cbe195db621e75eca548db2315fc8761643819127b238c5e95957471d9f692e715abf7e66ab77346f1de3c2b28a2224a22695911c1ac251f099519c42ecd6e87136d19d9cc377b0c0a38c3c8d736bd6ebd16f509c4c5e1d6fc12a75ff8a1534a0a717425f53a7161b4700651981349cdfb4383e475bc393e9eedf705b2b5608c261ffeecdd70681b91e146cd890e3d55307e4f48f6fe5de0167cdb49bb87f1a4768838a71a6943e79994f3e6b68f9752194e19c0910e2bd74bbc134abb556a90e12b2abcf962db5f9bca26aaee0233858b52363465525eee825da2dcaaf1ae96b39e6f58d3274f351221e966ec2015ae0cce0341e68efe50037385ce872451ced3bf05dcc647121b5abbb982c51886213acbd1ed18cd8a7b5e64f4246c2e2e63ccaa8a2dcb7e096bf540431547dce602887f3b060d762638e968ab5f294a191e847b16403d7f8abe42e22380f205b1f42aa690dac486aef47090c4ea2e34e82751d970115f7c98e420ac404b2cac3809317f79524286acb16ab6882a7ea00dbfc5b757b98661b20ba6a764636221937d16097eb4907178f532254b19b0df7e981aaa2c364975b579182aaf425f418e9c6a3f9fcb00d7b80186ab3238a61b020cb9937e2a68953007d4a5f249a4fac27669c1742d6ab54c6aadd248462109f7cfd2b6c91f47e9c7dfa04fd644cfd00e0f72cf51440106e3838235d017e33210270c58c6727c1ea419cd7b593aafe7fc224b60d92ce6dbefd4467c14b46445606c6d350d03db69f2ecb133e5e0e75e675249ed783c09bf0f7ec7114c36b6d5010418d07b4c61561078403d05d1172354dbcb54709c2ca970bced56a429def50a3579668743ff8a657509d4d2772a3d2dca74a6f2c090869a09769cf34d6cc9b1f42a2bce795fca00070a600b29d711253f362ac9b491b8bb14c3935851914f9276060fdff20ed1bbe6677655c1e8c25df96149df6cbfa427d108a9cbefa1e0650d56d431d1dcea367df3de3a46e688208054645fa264ffbd5ce4f1e93d324147aeb597e3600988115a6fafdefd3041976ff62248e814edc07e61256251f1a59203abd2f47ca9a305b0a6fbddeb062ed1b48f1f2d688c8782cf6da61065dee82f132fa143f0e499d9825468f0e27aa70c08aefec8fb6eb481166e7de376d16a507820d06545dc62655af9fc2db498522f6a07a33e3200bde0eb94d48ac74b582e5c76891241775aa1b80375d3490ae526ac7fe0d03d4428a6c07f4764507ce14b8da1f00f7763afe0b3f61600eec22b9e75c175efc2d7a9a27401b36faa4026a289014819a61dd847531f95f53d8fd856b4a206db52ec134ad8c7a1872a6dbcde2d8d67631b5ab94331d63f036191402274763449b8b4dd5037d142d838d6207aabbf68546bb9b4d9b42e96311e06627ea809343f6790f6bb2afe5544142b149efb0f1821dc546fca108af61ac02f205206813d6adb1265c6270a78ddfa19fcbf55a84875adb7be3ae07874dc49b386b2fb9c859e6420492709346dc90bc161fa1c5e04aefb4410501427cdfe9f1c1cf530af46cfa7c50d4303bf3f60e57c51efc207dda0dd690f71d30533e8299a1f3fa8d2d9c82eef3b8cb4c9ae130fc21a436b0ecbb02355f16bc250ece3f0d8199f5b5ae1226ac71223c2fb7d24edc80d108027757068e4fc5e4e9c62220ecd0d2365feaafd47568bac33d742a161da93749bb3cc0b8e0dbc6a97876c3412f7774469a3d0067cd91a04c5d935f4f63606b738f854a61ce6308e9f6f0ab4cfb91cff06af9062889b12e8481705c4b1309036e88064188a9235571760d3d9100a2e7496290d2de215909a59d915c80a52d37bb6f5ddb3d206e7bb42d07673559ddd5a8e02c5f955bd035e4eea3d6b6e61b8a9376d3db6d6218d4e8a0c9df1498c0a0bfbf26171c4cfa01de43143549f4865b05aa479ca3a2537390dd465d8fe6a4507c57e08f6ec09dda52460097b008d94e0e5604d48f1ad4a8803d4ff81ab2e560efb95d95c3a5e717bed480591c335a4fbc01e68027c25bc1b80cfe2956e3ccbb8053862e647e8eca6e9048799449bcb356d9538f1e3808d0e4a9d7df6e55a2c6d573e7c68e95968b01e4ff93b100b96745b344610a1d3f1a33e0ea402ff2484a8e42ec66f014502343b4ecd7ea91309dce5d36d1cf00954e3b21218884cefb38e165f8792cf589c8c9eacc9eec721e5f4423506a02f99ea9f3382f2c57799cef7d715270e568276a0f968b6b82b1871acd05a4ef5f4a94598811083bb26b1c7766f08530c496e90635dd045d9b46083636e9d714033bae491840638e5a9f814bb82a807d403daf6939c810d350845e2dd7d3dcdac3a8881af1b9b55e6eb3bbfb941be4fef7b02488a4f21c40179eabcdafcb9d60dcb1492385970f03a03cdf2761a94618e81c633188c6d2c33f88ee94087d874d005c41d3f969747767b0d214c05cf96ab141c2f8fa6e6440f1e0b0c1e4652bde956f88bebc699ded1bc98c03ca9e259b5baf92d96a82557880863928e9292b8c564f586296094396c2f1696c92cf317e9a6171bed72d258eb9a447d636ecd532580693ab721513a37e6ef3a13322e32c88166cbddd36623095f85ff2baa6dc22b3028211b112069323a29a011fada08194fb2bd78fa5be631afc50b8ab33df24796d3a778ce1e9ec99651c515ba2714c16d61b79a2d7cecbf7a7fa4b8ddd243fcad7bbec56ef897308ad3054459ab906adaddcf3696746a52851ace3081c3b136cb7ed7e54708b867a1f72d32b87507a70e1010a4039305b3a196b74a5a079a13af8c7fc2fe48f848fc0464a045c982ea50fcd0248b85087419d6f14bcffbe02c5815612fcd2cf1e586312c33681b2f18576e6b7a28015daf6d5acfa8e44775c97464a633c779f28f9e0fc135d0d15ba63bfa65f1b72f526a690c87d9a1ba47c9f905255b6a022c4268a0ff887979aa2279516d6b7d03a30796d2c89b1d9e8df9b914417932b170499566cb98f3353ea723ebe69b8453e94b802980e2ad5dfe543b24b11d8515e441991b28aa02f6c87ebc52d520709e8cde6ac8b5b5dc70f44a9a9b969488f45a8d3459e4aee655c6cd96a5c023453b24a15e73e85455d1681a6d2ebef04149a6e65000592ef8f06c3f0f1b8a3be05f12653348b44a49f925cb44825bc318e3c9076e544347747899eb2aa23ee7a58b191ad73f03a9e3f25f61190d1746c658d59acd44dc6ef32926f4902290589ca18867c15c217df504d750028638aac618fc8e629571908804f7eba38bf53b5ff21f8d5f1743cfae96127a4d8d249c54811827671d0e00121b11d199b328c53c822169b80d2a3b490579063dab849c70b28b50d8a53cb9185ad547828fcf146e27ec1b3e999f39c8134d67287f930b37f976080379d5c88f3c1bf84465b569013472f600d8ffa9c3dd69923d192fcfd1053e59e7b590cf08a3256f01e4e5e9070fdb329f5b6618c53841e4ce87b15120b1cea3eb7c67668f74e5c96a04d44c5b74b9f9edc434b8dc1d714ba6d358e7ff48a950c1332123e5b2e846571a2faa6d42c3a8edd9609897a04e88d4a19640b746c155e77a332996a08888008b06ad988870fca59fc1802247b25c09b20ffc0fdbce4b13fb548a6c14a68a590be0bc606eecaeeb7bd3cf989fe8d38a5d769b40e8b1ce201c23f17f057c01ea6cb747e2c655d2ae7fe891403d71a68124da323785c4a2a321f9db972200dc5890dfc566b4e83455635abe4f13823f71c80e45dd091aad9341dd899e959c74b9f6d3d3263c251ff92827b6ee24c14ebee653331368d961f0af052183b1354910b7d31ffb76d2897569cab6921599fbc54bc980bb3c7f8420fa4541726621b144660611df8b828e8ced6540c487b0275699e37054c52b3f12be37ee2a825b36f5627c0aa99958a63b7073c49d5da1e0572127c3abd97003e8864465a051fdabb8c38254751bed478073192bde038597b32582874d5aa5935831e1e8a2b561586ca61da547e9f1f35194a7414ad90d34bba681d5e671e1c066fa034a8957d40398b99759657fe67a53c2370fe86cd23448c81a98dc1192a7ea06a9483d9681de3f5a43a10e68307a0b77588fc140aef301c59babf091e21708db785fed0d99363ff69dd4aad16e4494d5696a2eab7910ec70546f75e548990bd769f725339b81e2eb408a0b166601a4f302e25e82db5a831070484e8e9b35df61587561439f8949feb5809ada43b0bf5622052d8068be5cdd20fe0e052f08dc2a37f6a25701ee978364547223b95a87594ba341913162ec5682f874153f43ee93bcdfd5dff376323944de596b6c67cb2c01675c53f2cdf89529af70fa52e171f80b34c7b138f210ff262feebed9a356b55bed9f83d5ce8ad2478345ca8b761bb392d02765f82494406d4d2060ed066072c04f55cac673935c500c49c49bb1ae4423fd9425df2f36105474b7a4c862cfad34246cd299987cab93e61767a2510636ba9e4f59d249bc0dac773f37b04fc14f244e0bd4f30cf314ebbf8e5768ed92c1c7b9e2e42288446e3791bdf2c1fc031a0e3e4ed5b3001fb2211c0f02c399087878eb0c4bbc52bf770034684c002c58caaf75af70564a8b7988299cff2eee35607647fe4d1f087dccd82b2b003f3b38c20ebd11f8f4be5691c9282a2e4a762385a3482b33195d35de78f42bd8c9b2851c5f05e67f305053454f762758727de1cb3f610540efda703328e0013139fb55a01d2912b2bac3ec85b9edddebccc5e5c81d1244ca3d0a0f303988efc28d5a045069ada140ef6065fce485c3a57b2a7ef624b91493ce65b77bb83f1df79e6922541ff6931fb8dccc8c52778b73e2c556829caa5ef396a273670ec86ecf0141aa49eb2eba6338cf56ce53bbc59cdc81dccea8d1236d39696bf8cd781484a7e325cb39b60f4fd81734a3680621aec0f3ec25c337bb34a31ed516c7fc437edd92ae9c2d67ae9cf25fc99f251d7450d7c0d283e9828427d0bdfafa64a8d2bf094907253b64132b77a4e9cda3dadf089e70675da35bff0757578f3349b748d6fb8b61b36ee3e662ab98cbd12792d623f444d9a2e04aad858288b8fdb6527b26e55a2483bfe7fbb0b37f62a83699eedf5703dfac6d0821d878878c2efff78ca4f35aa23a3d5f39ef3ba80fffe756d1b784b667e2a2d72312f5f885a1027b45316902844a45dee201dcdf64285658baa847a25751f3bbb465de7c817064369e36629a9e0203d2bf92e937c05487357c07e5de84dfd50140f3c97e1ab891d33016a6d3ab675f30283498ec5be96e3b73d408c25de19d136b95736b565980081f0b94309f0913707e2339f0148be8634f7dfbb4bdeebb3a08dd88adb915bd26eccde393ef53a758f45424fa172656ca40445f4598fa52f22ad76259dc60b84ae6ddeeee3a3a391e588f8fa7977d702b9dc6e84377b38de729c81a52703db177b5233795fe4047c6cbf0e472641f5a3af955a4362c44226fee3a94b34d9865d1a06d68f0962216d4551759bdc2a3727a50451e87e81fb624cc2792ba6adf222f07cad9e327a549fd03986a069aa16b10cb6cf2d635a137259460f17730f1b8d495c9af34dfc0c00841fd1fc12179a8c3788782ef19b2b0a08dd84b673dabc8d887d9dc0bf1f812a9d979884ae836640ebbf5bf286142555d31ef225cbd0f7ee8007575022a707f6d5e509367d62f1ea34d92a65075dbfb3368705d09d34c9063b9519afa331f02c00ebd6ceda9ed1c92ec490988d26508fc13153f3a9084a593c55ca5135032cebed1beabd130572bb286d33538a0d748dc0a44ed023cf5cb8798f33353f670e72dd6f415c830fadedfd91418180ce0fb931996901cfbfc409192ffd888e78ba20e3efdf681e4399bf5d86fc0fd34be9e06a478f7dc4d3afa58e1ad463bccde5603e992ac5e08161679645f060038188514b73419d8893d31265a3ed0d2499fb5328902b6c2406562a43dc552ec020854e3843303c7299fd70c543b9eedf779452bd89ec89f38e9dfe41fc2b47b1e1108e32a002556523f083362491e47324087422c0c0ae3b90e81d2f683e0e08197117ea7dd5ec9e90e2a1504c9771867f8fdfbaf222162d38ba60ee7f282458cdad3f56e8f9c482629167e64bb4113e970a8568fd1122911d4960c3d08d91216420f72a0348942c986a7c4d24b35f053a53457708854bb95cd10348c5a529a2d53df38dd440a08d57b52c2e67de1aef2d231c0d1fe9bc0d0143b88540a3d3251283e59f3298815d2e1588a90335568a50f85cb51e5c95856702a609fbd417aa311db7b5e50b0d8c8387f4828af2f7d7c92670629e808989a1db3ea050626536b4efa83572dc5c21bdf57fd58a509f845b3193fc9a7756b0816c9ca0422cd58d4050eaee09260f66d46923ebaf037433da44d6a5566ab849fb7c225157bd487aabab056c972cdf787b0c6f6707bc74e66d7e60c0140f7f2b164fb3269bd7b798337a1343c533f0231ae3a105e587b65541831456bc95b5710798ba23f069a25ac08ba7a998312262a70ccccdbe0bb3076ca7d6ac58571aa182e6228769102d8aa1bc2814718130a62648c68bf8a1bf308fa8664fc490eca53742cad34fd8b017b8d0920821ffc94cafae3493158046113810c058058d117c8ccd918d0bd180416fb7f3836ab92282de3f9014847bc53c35e08ace2973d45ed5f219cb8297d2922540090593b3f1165365a47a61505a939e88da5e8ede378ad366fc5906ea395fb72edbdb5315c543f820002ec4016d45fbe48dd6e0f954b408ce48d432799041878b9c0cc0b84f2882c2a720d502b0bedb8310b0bbb8c4c5111f93a299cd433c74945232ca5fc6d666146429cd938487cb6f662d037c8fce78d229be7a0b7de41b2c87e69922614934fbe2841e837691d1198cac4be85e47a27f514746f4387087d9be411b32493a1046e876a57db8a9f4ba7bf2a21b321943a07a000eca90d5ad6e4bd905d428690648596499ac91174e24ced6f4e03948a9a0cf20dea612e664e9c6c7300d4cc680951f3af1adf087b1f0badd715c674e33b90cb48d57565a3626aa905992b7de543d1fbc2d700d519f00374cb9f24f9bc465fbc2f125e4a143f1b5462b934ba3b4eb4c71897eb57990bc4348936069f643bb993c495eb4464e9ce4d307d80b43c3544b6863f384adab62b5a0ce23fe7316934b42e39c7028a469bf09cbe4942ebeecc0e70f8783e85b062681dae7656622e8a415530a57edcbc90610cb8ba51f6c00925972e75087362a78243382a90ceb91ac0defb19bcf033f7404d08cde7638d749877c0dc6e8123c8256953c5b93a083ac074664a3aef32cffc780b154f638b3e4522b05c36e5e3894f20e9b4a8f42f1d95640501cc6a6d18b02f88fb422fdcca874792b3e990289b870c9acdc359a6cd835a531ec32e9ca9a07d6ea8244ba30e32c41978fd11709be308d18efbe258290d1bd1bec064569bd43c233e22f3e7c652c4e38adefa9ef6c3462fea67d40aa19d7c381416d7efc6c68810c291143a4ff17f98c2a88bb64fc881921a3aa982f2048b4adf6bf689114680240665c0b44d9cec6ff97c8f2dfff50cede76026ebd3fde72e46dee52ef645fee00bd00aa239bb6586b6641d44376190b6df1d4e8d324f6bb427e4a7d1a07ac90ded3e4f9d5e4656ee8972560f8c3cd59abdc5d089686dc5124ff3eb58119320642bf7eb3858fdb8906fe222f8190f8c0c1a3605f8892c60e454d79624e7bc0dffcda84b20a3fe0ee56936f2deca16e7bcd081bf3c9e8cd35f54ac4b754d3dd2c8d521fe49611340115b42a3665a4e8d246c4d937918cce40298712df09077432fac8a6b747c89798b0e3fea5efc368f46b43d83413b019c62cb8319c8b4f56d7a0bf3ffa7cebd6202b1da2ca6bdc296a1dcd758f841ce58a04d76049362542e4d21b83093823adb341df7c13ea334cb0177c591a81fb0b0219bc108bfcdf3163fb14834f19c597151f1fc749e17dbe2a2ba38232cce656c4dabc50505c6c1ce8ecbc772eaccb8491f80054bce0ec627de084c7c1d8eed2e027d60b715c567ea37a064a1a219d2af8f55fe6a7664cedc11c25ca8c13690f6d4a62593163cc25de10b3b32a5150e0ee0c628b07649a820eab595003a58ba4ec0c1f73aa4278c79fff99839a59e96e7e6d2f6bb9be2ba2d72075693a99a59555b488778777f5855c8268d4f783155b31224054bef0b3f1c0bcedd00a2caeff16995915465b3d22ce318c367e1ec185ea7faca9ca9326a95999fd967a98a53dc60b8f3be27e2128a947abc3fe1b1b29eae227c18f70c6394290678531a26b0e7328e5292dc471906fba4e2bbbad6e9d831efb5e91968084822334e0e28c63cbd007d66846c72cb6b1d70d4d3e9e69ee70acc37cf0829c5f22f08060145b81c811dad918d3ed001eade417ffbc88f3a9695c068736b6425fdfbcce410e4482c3450945ff9923e5af661ddd249cebfc76426d95e2cc22e3453f14d88954172c731a8347db10cf08f077d81a5a0301224c09f060945b223172c61be93a7a8f503c1ebab3085260e37cf7ab574f821b058b03cd90372bdff837e9b016d9040a037ca1a0d3b51c9a4683e09bb28682b2e2acaf865e413c570aa5d70bef9358f7ee455418111cda2bf3ce15f4037420942d6c0fea3ee610149e426a43c421356430d280d190b6fcf101e1af650aa84ce49d108b6e31a7160bf43f680853460904aff046c9712c642646055e85dbc2ee9099f48db546a600e8cfea1d8f95e3f15c35652f41e261aafd41053abe55f96a2ff901aaa2f733be85eff895ac15c8dbe23f08abad1e3d2b1c535c4d9edc06956ba63aff0533d1f6347927738837d70a83c713b82fd9749ff990d0e72dbbb2f0817bf6dd5019a6daea339ab585aa4b666965f4ca29d416d685278d1d653edf9cf38d2be134c4d5eb3692c1caa167c3f3a591084ac4d352f1c602ec2351b6184953b255b9049ce7bc6bdd44355e042ab8952d503896c0011a3f61012a7b83fbfcc2dc597db5c60b5c3702dca0a4f5d52ab6474e559adf0e1cdd6f74cffc4ff4808432b8868f40c7bb0319b6e622da1d67ddcfee8f88a5c250ce6595eb9aa15e46d8af82c0a7d12ccb4961f71683aad2a1ab1aa5a09e6a3710b0a555870acb2c251cd292bd2ecb35b46e10515996d0783fabb82db59ed2fc45a5f69820087e5d9b2c1d39644121735ebc166ebb09ff7719eec1827a6bf518d62930965c4a66274b79c59624b14d54049a2e5a21c07c777ee968c2d298f0f2dabc43657bf0f4125b610d52e3e5e503156f2875789ed8ee4035b832c9203f78681445895853bf7ba3a506f8605081148d4b0fe803d87ffd669f877cff51036da7273d1ad6df22ea8d13a4408bc20098b7615eeeb968688aa7922f3921367d2288a47db71f694666f361ff40023931d40ab835eaefe46fef5180c9ce155ce39e4aada4115ce7ed23591706b159887b040d60228c0ef718be24af9417ab8a91df82a15083196f93f3a0a9da0159abd7e6b7c56479c9ba0bef692465fdce925124da45e67fe5d19a2860b23478b9b476de912089fceb0b5d39f9c68d85c15fb1b36829801be101156eaef7b2eb1f9ec48ed078475cb0ab92852a0e1f70fd2da22959d571ef4094ed29c319a2833aa1101bd03292d827d62ac80288c2777b9ec3341ed1f001f9c0901aed5ade0629834bfa060d2536c1d84c77ec49fb6517925a8aac57e793cd3b30412e3f38715907d5644ca1a7d617e702a5ff7082a6ac3970938d02c5c3b141ac92a2aee7a7abb4197be4264193042ce5c541391223af08adedcd08463d6b5f39b1065b0dd167d24b62128c966f5fb74b01709d647893bf128116c20a2c077da435317a0359d4127a730c1e93e14ebe5cb9076be301c6ab90cdd6c0a91c8124e385868333884c160734a63944a9e6dc64b7fe2eb71fced92dc9c990809bb052756a66af59248c75a61b28c85bc7e90e78457135a53336271188030d150a239e67e74b3be160a901a73dc564d6ad6146459acbc05e6a13bac9a577347e35fbd484ba3d49805b4e4a1e67b2c897159cd484fefaafd1d136d8e4c9d1ef2c5f0178e9e4ba2e54f0f801cef0a8659ed8c4a269ac3180db58b949249cc523340283ab083458cea6a050ff2c8bd7b5a16507e2fc0d8ed868bb0d8417aea05f65899c92881b3f22a8714e9f317d0aafc01f7d0147c76452c6240fb55de87f147997f64d32809edef7a24eb9b5017d941d8f57216c4d7449800672b2f63fd7f6f2d8aaab0edac40e05a3ce7e2bd6bef3d6cf5c12a6c32c067cd20e7457d884bee1fc63615bf7653c12d1387ae02763146d0a953f71c7bc0bee12ff9f308ae1aa101cbb1a36016ac927811c8be7a7a93ae6866a426d0942ae66a99c023db1b806d424866ad91881bfe29f016701f536f3b2955fc35be3dde5a9e2f0fdb3402cdd7795b0fd09bd2e5b13f24c9674173dd77fc86dc233ff0e97de3e603d2192db3dbc577e03363111c1ea3c08b5147ac37da7ab8d33f3401abc72a77bed5cd48f95322290c4038bac2ecf1afa143b918aa294324d9396e2cb89d13df16474cbb40a23b8eeac420f9e1e23ebe9ba4ca083dc3427099b266a77cac8d21497b5b81a0495aedaab8708c0dde96a0b9ca2dd539320ee96d7fedaba23acc805f12db1fad9083906fb8e2cd0a081bed71fa9d285fcb8d599c5e82a9554fd366936f1036042fab798d2bb2decaf863b8d23672d6802b31da34e502796d153a183b40bededf2de388c844ac415236e01100a98608f0cda0aebecfd68b33841716105b120729df3d0109fefd8ef4d26311b1df4f63fb37927bd0dd191494400c4cc56d18d475a1f201a4e1f6a6c80b0c411cc172e3005732305fc460d333d680d1ea43416aa56d8c13c8edd613af0caa9946fdbec410361ca699faca9a1768ab65ed021d905cdd8f284a1dafba0095e32a100946fcba3903699c1f3b1010e327726aa5971af683ee49b089bee4c5a6a0f786ab52bd8a3b29d559e78a82463af18ada2ac1a29d1fe1d670d476d1473c4404e31bf412eab96340730d2be7392c29ac557050d011ae9976b3e17fad18bcbea0bfdaf36062a36af88e56114f5108cebef2ff71b47f0cde528428cd170237b95d52f3649417eda00d198a9ab376ca406bf8e1802ccdd2f6d799bea21a5161cdc4c0fa880d16fa274eaec35593e780396438d62633a909f91396900b16d4a1610fad1cde0ad2794ee9e2b724e933144cb3e746d0be377e3689e15b0cf22a5cd3b1f102b44946483987bf022c60b61858f08dced8887d28f05569caefe1457e673a77685710c75d0a05ed8073933d8808d61fce4dfb609a08b3c9935a8799c746379e352c07481f3e7aacf401a06d5edb84b6f0660b0da68baf5c0e38942ec217da7e46881bad5ba5caae2aac0555f3b17365b21cfa0315a89d858d8f1b426b2bfb8303d7c18b8f97dd20160916114ed8c5fb36af1b19b9b8f50980a1ff270ac8a15e2f5856afe94845a27243a9be93b471c4f4e4aa1eec402c7e26afc7de69328db10cd9d618e2aeee6336ebedb49bee284cb3a4a91fd248f03b4145f8b667ea705c0f0ddaa0d1af8c2c2ced6a2cfcb77b595b675c5f5b1bbeab2dcda0ef69d20bc4e34e30d367bb6cc4b6456ee23b22fb54fb664b49458589c83d730e2af1f9350ec119c04029152aa698953d4abc94e2b3c2c47899aec4d17e77c86f0a3f8089b675dd60a13f963feb0a4e9a946e3e4fedeff365d3e478c9449fdfc5eb72a5dc936ebca4cdb85b5ec6c0217bb9ed4f21ea778933b573a52e8f7ba97805bb205f632677b75ca19c95256b67149a72e113492f533f721eda144ec1b2be49fd97e79aa12c7706ccb4f74ac6c99667088352a5f98350dfc48d623506bacd18367a2ab973d06e586c7d5eabe61540c9091f1c591cb689da4dc723f75db4e8a9207c83d7f8e05c487b02689a1fc867197a0d1d38ea1ec5f277033961f3658962aa51401b3b2790d2be9d117879431097bec3efd6df76cf06928b000834528a6dbe574e532bb80c8eab0db8e04a8cb9ca3f81dde363d7f20613c7983bd5b6e06c105ae6e2f535624a1f89bfce4312ccf1334e4798e15f0aee3752b9a052bb4e72ab5ce629db24b82fb7da0c7f085606936f01aec1c103bcc7c4043ebb606e55c5d874867b32beded14f55b25fd6b6a9057d16d1e5a02f349962ab256499bd09bab584a4037d6fda634c16add62758c95b9db7d851d8aa4d4ade0bd8760bec1c94e017f49e46e5b8a363c7ae71a9a3ccbf30b6f0542cf8029e94566f42817eb3a0bf06db76c7da1a5c62af838ecf67b6fc6232a378f61856d65bf8aa0acbd6750eacc0044d14b85c831b1b4367a05448790b96cf98f4478398782e1fde71837c881a047e0e872c5e57b3b337c5204e42ef3d2cdafca83de825caa66981b1df67c1b7191524fd0b0d5159a0608baaf5cc5c9b938439cdc8e20d3607b3005f677b01d74023e5aa25df19034eb4d914095ee1a468db53e23dcee53b53ee136425c9332c7cfeef3781078d03fed60596cb77664e4cb7c6279a7fd137fab0406887efeccc08d419825620c30d0d1e0d30c58f8ccfd0c42e6712a82ee6d3dc1cd83162b7769f6a3c9e2161e83901df99befcc576aa2a6e0e17c4ef6fde84d5bc27f03e8f0ca905e09937c95cfd21bc6ed7e43af57c93d08371f8f3f402970414ae23e9cd5d33c5598a6104daf9fa3c262225e4a68bbd30c652560d1a4c5255e3ee9cf5f3095005ceb76c9aaa76ca83652bc4adf0bfe1e64804e11626e1ad83e43e6643546c4f9a95a5ea3c05b029c2f8d9585a86b51dccfb66285a28f06acf295191b4da83beaa53b43221ecc30cc60bd1553aece2e8fca800d01844387c9b98853229eb329a175eb2e6076962f058ca597a85a934e941ca824a7aac76c718163e76c86970a6a938956ac028c270c9dea4088b5a6fb2c65ec14651e330797276e760f009dcc0ffd116982130f566470d44996db7b03dae756d4f341c3c12fea3893aa724ba3d7671758540c8e85082d4c00886fe482ad065d42b1b9560f59e1552eb3b2b800a1c211cc8b9d197a8668d398db495807f5b28db4afcafa29c91be82f269e43167cb1d987c93be826a758ef807387f73e4d279d4de01d87002427d7dea254c1574baa7a2841c99d1ba370112c75ecf29be4edf44627de91265d5237abc86c3585328af84b0211d642efc2c6db71db8addcfba4dd665831de3fa975edb36a28bcf4f73b9b6f1951c2845421aac15e779b1f3be5c60d3391e36c8e827efd5d1c6858caeb93b0f1d14db4262934d14068b31250c3ba83379ff38e29f1834bd458f8639dd8fb3f192503a858689b614d824f647b370d7ef1cc54061ff07d850422a4e5c76854c5dfeb0c9dc1a84415f609085af95d25e905ad9a4cfdd435ae6cde60e67bfcda5eca213be2c327a2dea209eda6b6b64ba99ebd9d85b1accdfa2545f88dcc673ee2fe16dd32a32a4c6f534194b8f24f3dc47f74cf29fa6245cd73ca3d6e9962bb889bcff371209f8a1f3068af50ca672e2e2ba354aeb74ec7415739d16d23ec4f9cf7231ea751e0b583a39edf92f447b3fd90cbf2ff6a3fbb1996bfc71968ecc8bda32559406dfaaa3ac03ad425efa67cfd884007a34723d272ae08af7ec4cbcc94de0064eb6737340be22c3af54bdd3dfd5f8affdbbd94c7add21dd89ab90d3d8fb6a054de0fdfaa844adef5917594c3df70ba36b1e1684751fc97e1ea2a4affe2bdba832b09c0eb90db33a1361e58b390f167fc31a79d46e0ca41348b7dfe23c00bfd8c51af14b12b2cbaabd28f6233e7c2d62a0a48470f746ded6875b18b5f74c33517843d964408a6209d9d1f9af302cc01531a963d29b24cffd7b94937a4255084bc740cc58bee5043832e36152ce41b8ced19a4e08312cdeff31b3d1ab088036ef5a1edcb7187cc6c554c04042cc1588cdd43c6aa77d16b285d8e55b86c6c09bf020d1061cb951a479f2758189a2ba1b3ac30f1332dcdf411bd94630af229c03596fcbbbcdca34514474ddd33a68e3dedbe35a58d95f82a24cd0a5e0fd140ea49f56a2b34fdd50face58aae05d8e2d98088a5b3c934bca3edae61aa93856d4962df7467483793d0f3bd517a2084ad383e3e31faa23861dea44d1a8ab4d6cf56f791721e19cce53a5ded0e272d354dc8d0ca6a17b47414a9dfaebe5c57ced0c60a9d27a9c2962ebfc7c958e3adb3a355c843c401df74fd683061d6aa402f7b5db008d917cac217142f588583aff9cd76b957ff322c839154930c471ad0c907357163cc5641033457ea7e08f90bc6e44e5958fc539be9ab1339ff3f381db7d037e224a601c61c1a41325bf04b1ab0099dd15e224de0cc584ac081c611f333353d68af554ebb394c7322a4875977958f779e709e01ba22f675d2a7a7c8fbe1fb9b5398cee09b3e2a19e55052334ec048df70dbcef2e4a3dbb318388ec47e560bad15b8c1871380e12a74fd73d9e4fd687de7061a4ccd181f7477ce2d052196b72d3008afa94e3114115d01331501e715b9f15726cc42071368649e8751c122303da9a2ca7a8f6f262508adda9647d5275b5c0b11e22e16da65f48fd3859e5029706cdffdb7ca110b8f82727afd3e6b7e579ac39a5fab3c9a838ee61ddb206336be51320fa018b2b9d248b5a0d7417b41e43d3bb4e18a5581f9de36891b45e696d897763efc6b6f12f0fc26b9b66cf0cc9a9f9b12b9bcea97bdd920e02362fc7840549b99052ec9367f5b955d578583e37f414edaaa0493b6635b1491ebed388b1dab61aaebb9235d4c5439a23e7cc4d5dd2a4ad02784c50ccff74fee83fced5710f83e5569dfc905cfecada97ea1acd41fb2818252921e43dc751f99a0c8d0d8fa8638be4cdb2108e812eac6362af6f2f0af4b48f9f29c01161a1f96bd9e52168baf475aff4972794e41e0991b8b1bc974575c6e607661c607983f445e3b93b22fc4479ebb0d17c1385b987a80e86b0e1e64e0eb16d8e07db89f34aac4d7a2c122bea1662bbbab82f5333add2fb1847a41b9e944a0669038d1c136d72461d4d8fe02d9e7930170cfa64ccd22d6c3c465fa419649215069da16fc25ce18a78ff47fd2ab8ecb47baebc96122bd7da2a64826f9319037f566955f2b8b586d363312aeb129464fa2d4f729410da20f5cf64fbd68cf54d3458060e3e0f4d5c88446e0d605756b10975d585fa3b8d8c5fa1af9b80d680914a1e86b24c435e8705a59da6d11259fb17742a60aa3c4520b7e65b7d13e52e2fcdcf7bb8288f528e1cdb4f1265fda6d5dae6bb67d6f6a71c36e6e4b725465c4571a725cf082d5a8b9e07952f4c34d43529322faaa623ad76b673d7b23bd78b7de2547d1175c9359fe2f68786ad351a39d1e78807bbd05d1fb82d3d487ccc57548e2a9520f20034a5d0c408afd21f7fc1c3dfce8a393ed11a38129837bad0c99340a24e744ae27deffe76620b4954192605b2a5f218020eebfdae55ad9198a4fe91fe08e7aaf06b74bca749a5528c568966cd13e092ba2dbe1c02d21464d12f4318c17192884ac2277bfaa5db5b91b60c17ceca47af58e1acd01ba9263518f1f78ac7b3de8f6b2033d095dbde378f30ea86571f6b0958453fbabc95d4b941bd66035813bb9107f23853ab7a73a16c64ec85f2e9aa81bf47e4c53c9c8ceeca4458c45aeb9264f46cec4f47ca7a36d07d871c0115a784a2101f4a338d54d4cee20cbd78a07a7cec348f802bd0b05b3b873e0a08e79f55e873cc3ad1ef47b45253e454568b08428338abcac7dcb19a1c2d62f4988426a64bf82f2830ef428b3308c6a13e96361f369b391eaab083e25cb8304af3ee1d039abf49e748f00a582c29e46804a5aad60421da2c8e9ad21b5c5d6a8caa988f9b050096a24241b6d8eacb41c916563ecae0581693a7662016b929e087b8ddf9d067ad05c0361330c424e0bae5625a42335ff5e417f5537d99a3b0db616d23e657fb6bf842896c3731562364c6849891eed795510875a4b08905a333996475d4d35e89539909d1c49402f1c74febac3055183c59c2d1459e98a8c320e82c0488f496d7536237fcc31d913395bc49fdb0718c0fb00c688a777ae222e4deb7b30f60ecabb2ee6ac41e6113cab25205b186ee94d7568c4b2d17480e1b94a7c0ad9d2774df1543306540e6e00134a42f83f711b283e8661da0ced3038fc2cb9297a25b3ff083c0f4ea2a8276ffb5d6a33dba50573d7d2cc9061cd1fddf895c9f7ade25516667099cdeaafce4827b00f81776c68c2d9f9a57c2e38fca382255b78e116f56142778222aae5efc11ad026963aae8380736688c19a98c0d2f80af9a58682649094e6a12b13fdde99ac447df5e2b3851eea35142fece8f192c3fb226f6d0e0b79874eed9c125a002a34cd8bfbe33261284d3ba119cb34f99b0058a4d28bbab4f3b21d85d0687ee8ad65c3348d28c3413b8264e9f0d31106069fd63511c90682cc75e5d3b6b0a43602f2c6c499796e54e6b0e54417a6a5014ba38e848b9c68be11a323efa403b82a1a652222e63dbf37bd0c889ff8384d05476042a4ed217cb0121f1367df956e509cd93dc76f693dec52abb4680e8dd82089ea47cecf3cbf0c2b4e2a9ff2008dd0ebe706074f69d0d0ef7b1b9046a6c059902385931bc62d30f2e1d42657ac4509d8f568a93431520f773103e86d909a4bf109a11f34f45cc335b82bbed95a81d038c916b745dd76c6712bb78a1601ddb8108cee60f7215de7d1a09caaa8c319005cf8b155988b1d68fbeb0d4f3a63b1eda07b63b07c37aefbe58fdce13e933178958d6b54c43ca0e477c5b5f037a0fefa10dfacb8c3b1342defdb04596c86d027bd457ee61395ce9963039ede4633d158796f64dd3e4751d8acfe38e1323ea8f61661b66d84621920afe1b055d0aeae63f6e96d4b49705e986b74a20b1e8d5db0adbcf3103df7a9bba87bd954848eb0317a1bddcf1b87364555e1c5235b7e26c02812feab65b0de35e2586fa2044561b62a9be3c35713bb1647e0c6ab194527460b5986f56d024ea83fc1729ee2eae0b6aa7337e35c74000159b2e73e100ca0d12bdd04a80998b8142e6146179d49cd1054ba0a2a41fa2abbb0aa73f72f6e36225221f81c4a727ff90a173468b2c236d5049493f5bf5d313a63b292a66721d12007ed8b2951cd0322d1425c2aa3aafa3f09ab0c1b68176aea8a92e615e43463275a88d94033c85b07f9c81d5e7dcee5a0f2cf76199be3405d79de8fc316f54c35ffee6868e221989a9268bee91537487b3fed06e04ea66c90858e7660036f5a3d070a60a1b19d62af2647c6e57594d2e42aaee152234528a87ed620cefd225b1e1d8f1a70642b3814609b14c7da4a132803f76532ec57992843fe7a90662259ef7733e5298de50d64e2698292d8a38515ae08cf2f237fc1f520c4ba20630841a2b2a3f0b8319786375eacaeb60723373e007487c2a3fa422e04c472ee2830480cccca2342f5936851cfe7ca4004a4e5c7d154a5232875610611a813c4a98ce9b698cb50bc2721f08680863d6935b8bc45962b2268f0204ce4c058364797b0a70f60b716d011e4abe7ef60d65cd49d49a77724f279715a0530ac621106aa63d425b3f3936462df70ba25b0dc6ebe4f0d0bce762c70cb2dd84a3111ddbafb631422d7898a097d768c5cdd7c6b4235cef0d6d119fae78300df0c0c03aa1d566a5a4058555107f92bb2e84a0782b915db14579374935010c6388b820e7d29bc8b1e7dc1fc761f3ef00c4431ad76d790bdf2e2e276c2b89875c61be0af819a1e80f691472a8342094f5960a4ddbc8e81e83f05c4ee12cab6a54c29a572067c06a206dc8bb8ee392e94a9dda1666ad350559906fd5d9ef29f28e6efd47f9af5d4cf3d330e0fc6611d28540b90cdaaf8db2c0ba8facb5bd5fde577d2b24143b6594583ee8c3211819a3407ca5ceb1656e5c0cdbf16085b28aa9696abd592e26ab95aef72b55a5a2d2d57cbb502ba5a525c525aad95f3e53308dc8ff2dbddddb8bb312e689793bc32899eb147e886b6eba541f798184364603162620c69896132994c31626486c8c4c4888901e3d2fe1ebf6dd4187222454cafbc86c95931434ca621439ae342e736d480969c20c2f6c4e5a0fbbea830febeeb832d0a663f5cdafe4b4b830de3bbff028381c174183f97af058389d99f93d25d5a7de955d83368b4a5a5a05bdff9dadf5f51046d29d181b613a0e5a0e84e2dbaf22f0b07a2697aabe2bf8209aaa2c4051fe0dfd8a8503e770b143fd0094ab7af73be41b05591fd4c83ad8afc46b5b8d096859483e23a3bbd9a1fe7772f12c97775c772683327b64820a2a3b62c7ede0431685ff2c47da717dd7b0f23f4a2af4654f32386fb7dd584befb4edc475f35dc683f57c44783f241fc758e2c07f4cc3719176b594efbc869103f37620162c93932e69e06a5ac5761f7e0a357e16c9d5e85b287ee216753f267e7744e4e08d5eda4e4d2389238a2266ac512946bb9c5a6488874c78e1dce6e726766c93b5625eea8718aaaa257a7c511ab2108474c36a3c9765cfec5a54dcaa66d907d9d1486a0f2675a95f8279ea92695b02105493cb16212abf1651efb917da47f6a1f71f5022aef2ccb2e0ba932cf35792a7ea76c81c2644bf3d967a0c11935e4f09adb7ce6b4fe390379cd83862334f41957e33b2da2f04045dfbdf771f633fbd9d4be16f49913a97148e5a8c043149ea8fe71dd51281a9ef2024dc5f82832e6469ecf96a59d87d3bce6ce233441a0191a85f3c7dd791a8c338f1ffda656a3e3681e9e6ab5bf69c6de3b734610efc8ea9e471ad51eea33678d7e6e08f47da459a3cf797c38bad06f58f13b12ef88748efaadc607452ef492771a8272fd69c1c3594ea3a0190fe751e3f3a80557fdf3d9aac42f91cd6a7c92110b1cb8b62dca3080eaf19964c422ae8a7f17e2b8a148e2e78f77e4c73aecc324c6f589743528254d7e943722456eee3e357a649a9434dab22cb12c8602132142631a6c59ba4ad04bff9808ca0fa884f1a0ef0403fa53ccb3c4600839b3d80bf4d9f811f6b0e117e8611020088fd7081c8063f60a010182f07881be1a93a7e4f4942440101e2f9115441fe829e9001cb3d77a0af4cdf9e23e1cb86e2485372af7c15c5a9ad6c23edd9c0d1c1423df3a15a5ef4459e59d5eadcea98512ea4e51a38bb8801a472e40b75589a85542ad61597353feaa65e15f623764408d38a0079de6697e31df7d367ecc2fa6fbee3bcddf17eddefb4ef39baff835dc28f7205b83b1082ae43e343f0c3de8e35b08c53db7d08386f4c43929e550a8876f0d16693072219028c4b7663188fb984883311609238e4dc5979978a0a8a02fa4dd4fc0fbd653df04683c155ff4ada7dc7d25497e2a14550e28385c8b5ed0dc9d121908dd8fdfc21c3946ffb8c2bcf139b6377fcb323333f3333f3323c153fb0ba9addbbd110b5b75556e830d687cb6f1e2a49371d039e90c9dd3a393f20d8e8e5eede8da9c71d6f4de9b11474c2e88c8956a55be7cdbc7b51fd2a07c122228db7a551b52a476d7296a1cb920d58ead8afc13113454c38ea9962596f8a0cec5b8d39e6e981ffad017e5d79083fe801ec47d1d6b50da3c274583a0dad6400fb26930860271b3592cc3128f2cf154f9618956e597783625a5113b6838423bc75912a5fd4bef3ba42f7d8ca7f932de8b5e66f45d09758a4ff2fb22a14ef14bbfaf0e2506742b85c1419f747a21fad2c3107da9fb1afa9de28bde7bd1c3e89ee4ab217da7f89de6f742f4dec7743ffa47f981aea75887a724dbc8121e505617a8948f8418c0a076f5975308b1038a1e3528420b3e2ff93b82c04a83f24fa6aaa26355368efcd621bf63f2db46be775e53b94fb52af297a0fca5a03428bf240794524df6c805a61fd425865f26c64caffa6bf54ab732a25b95f82a76a08c8a953bd7b274ad020843c7cf7334e87d1cb120b5f4aa8504041a82f4e3d3f48ae4e3db009765324ad68ee3baef74c3e8e5bb18bdfc1bd5462dfd8e986bfa8d7a102a9ca9f45d4e51de93a0485fab41ff462e7655f6e5a845d7ee73ad4a7c46795d41848a40dc216e7e2e0dc6c8450e55a3c1f82f31ca28638c31461028c61863f497a86a30ae14ae58e39517296031d670893246f985747938e60541da5104ad2526df8d57e90ba7fcc239e917523abfd0a46ab025042a9700d686851caba4394da10f26b180830551c45edc772a42b9861e04b648951face45bf7890a55fc025dcaac90d1485f6030307352fa0e7b81890e833981cd6266b0239a409b49d47069319226b1a05b16ada1726576f7f89cfcf8bfacee638c3554b9af16a1f6e5f2d03a13d46b382bb82df7d9fc7cc63d4b191e37e99ca1b3d9ccc51c4bf6a14163c486bfd7323067b3399bf346d58ab139ee5d4efadd8821e86e27ba65556e5295391ff3f81e98a021f360752c168bd55ebe02c955e8bd565beeac49e9f6d6fe876f6aff04e1e02adbd476516fc9dad2d1d272b572b8dadba78bbbd5e2f296ab7734d8396ab77ac8f1d1b5e6c8d114bbbd5b2dd917840879e9fcbb1313942b9f98a0f2c315f282f203253dc9777bb2d2d2b2663cd4fd084557c59f04a5f2947b9f6b554aeb05545d1f0fc00a287044e662b7db6d865236b98dc3c8d4f866c65994dee82d8891ae413a9aa30d3dd024800409c20654567b51b1daf0f3d26354ac23a7e108e59b04d4c681e3acd2f3ccddeb4e4428a9d2a04455002fa0b1a4464195a657d185fc4c0d9e34c834ab52517e404bbe9a1ffb35f449bef4d59cbcc96f831ec9c7d06f9de4db2fe6e49bae2e79216006943678a3556537c15a324985be4451de0bd37f073a8bbebff7f68b684253f7853e17beefdf4fafc196683618c62f3688faedbe55bd8f280cf8632014fa4b0f6542851db811fa1ec5972889fa2868fcd06320f4fb1808c55104422ffa4cfdbd3f2667cd10cd0b28e839978d705fd234d8b1065b7e4bcc643299686cfc48771a8eb9fcc48c308e7d9a6e6f5a901354effd918d9a440774561d74c3363fd0f9b347e94bd4858623d49f7bc0ac651d1855ddab3fab6059bc3729117210aa3303c1a41ab20d9d41f55fce41e94b3e34b9b4cbb2f0fbb35816a360531e0ad57079f843f901adf95163f2251f7fa0353f624a7ff235256ff235a53ff9f827fe18932ff998932ff1f7c2e44b1e86c967e3474cc9977e3d05e3e4537d36a4133f8660137b957c9465f0a308b1d7be7ec4ef04d53f3c40e537c036804bb00af0e792138f6d4a5019002b06e28b9e3f0423103f7ef75da77a8272157df8282eabe27f5a0195b56b66e98d2250802a7ab6f137996217a50bd2f3f3f70dd28700c9f3bb2079fe505685fe8d136c2bbf8badfcd51efaf4037f43f44fd32bd2b7cbe27de0cb387f2f42f5287d87ea51f2efac928f6ddce69d155ffea0cd113a1ff432f4dcc7360d32ceb373df9c94721fe3b00ddf30c736cd628f363978649cc5369bf25ff724865023dbd05909122c159be25f9495f8940a28bd9af1c4c9dda896a5794e934945e55e81292a15bdea979f424f50c0e92050fc628352862726cfe48386b1ca0fbdb9208732a84f0c6bd4b6e19e3b8b8473f2292d138a6aa565c6136b2024e69c3070829260089cf91d776c240f510879ab52bea36057209b0689b45c96cee166c771c88ee4b4143cda888e2e329b47f0a043de70bc5b0e39aa4daf463cecce911c1d38b319ce461c6779453c233a3c297878477270c86e767066de0d6723fb5015e0cac9a7a85a2d4c823373f4b856bbfb85ba0912b93a358ad1fe96fa81aefd1c6dd47ed912f878410982da2f2510bd76ff1ab35bd2ddbf5d99ad064128130d39a0e14a48d3d2d22c128e0b4c8c19b421b722467ca400adb4ba39d9158a2099555992834a1b892375b8e4f12d0836285fa6f4989e9af547a61bd01004439a1a7fc61eb9b32ca0972f8f884e703855ca77217605da6950be04cd3cb5b32c364438902a7b746e3e40b51d9ea3234551e587f2889c1a8e681cce68b62af21935c22162473c75a757a32316942fbfc7878d3680ca7d249f55915f830f6800153473d62847a7e4efa0f550f361ab72a47303d25365ad86a2994f0b192a7f231a9ca022546955b8a4f24b0dd4e69e6ea005f5937bab59d4c7f52223c3a7653c9e6cd644911a6e6d36859f1a2e1123eb53e57beceeee26017be52f4966de211fde56a8cbbed59d9959f2102768e61218507e67b9ebf2fd02a855d877c178b652eeee7ea174b9ccfc5d5cbb1edd05f3964fe5cecece0e5658bb77777bd7963958af4eeccecea327bbc05e6affe7a6065bac8ca0fb735166a7dcf48386a6ea02a8d139dde4041a9a5a856fe566f56459fc5710a15b435ebfcbcecf05dbd9bacc981f9a18e0ef1932994ca650a8bbdd05db8fc647bbbbbbbb27df6c0fdfdc5477cd4ca639eb68d07974f7f6c6f11107473cf58b3ef453f4d1f0947fe87b4ff977dfcf8d39faf930ba0ffd7aaa6d8cbe53524ab9c33bd179c7e78793a34637e8298973526a32fd833ca30e9007ea5bdb9a487fd7fec29adadf44eda6d71f8c111f40117ba9745e21d18f8eed4707068717fa3c29dbf6d9746c3f3a3622fdc3a2e8fdf2ef18eba08819c85e215531c42b345596a5a18bf4384b04d336ae8ee6a3f040bd1f3dff388bf43efd678bb8cbe929ffc93edce3a9fecef3f8c7597b22828ab8f3189b3992fc1d99ec40bb6156c57f6b4788d86eb69b73cec1dc6c446c362237db2d66fbb9f52aec211efa109db6d96a355bcd660335f5318d405dc029321a74d088458d067dae66fdcd0a3dc74967bdb4fc5ca1f73ac57b84ded51ef23ed4de871e86f721cff3be137de7496f5f3b92b4c1d30a68d730451ee008b41f8492316359e6fb5f60571e58d0bf86284423fad48834687c686868d4f0a1518386064d911a5b84c6c616a1e1e3d3e990040f537662fe7accdf17c85b60ecf2b23cad1793c9647a6917d88bcb8b0bacbf5d7878bc976787129c68b3d96c211b0db1ba8f7fe76e53dd2405547e08a771402f23fad1cb784f3a750875ea2f39cdd30c7d353f62e887be86e4bb87117a9337f96ae8877e5f3e24dfbd0cfdd0e9c5e84b1ec6e84bbe9a1f31a1277d4df79dfa472ffad1c3207de9ab097da7fe4ea0efc5e8451fe33de94d5040e553131b2a3f9ca1ef3e641f12aa6b253ca0ac2eb0adabcdff04a6f4ad7b647c9cce1c91acf2ec4484ad3a086aebf490aeb5ad6b2d6b9b732a55dbbad643bac6c5aeb5ad777c48aff8bbb629ffb95deb5a09d75e918eb198c335a609c9a121d316c522a89ce3d150670dbd877c0bb927649f7effa571d6e8fda4f687a1124aed0f0350736ab15aa36fe85ab34d54cf5915ff8e080a1ac5741f23fa913c0141630d3947a693594f8144df0c4f71557e29f0c1f1635a8d99c63187db1a8d8534e8342ed63c76a4358b5946635aaf8008990d01e20364377e4c8b813ac4c4a92e2d8814dd8d1bb87a0d396801ead2788e509b6dc081967d3d55c38d4a29db69ce30b0179a6486c1b08bc3c4f8f4b8bbbbb36034dad2624b9f968b0bb602a39452988b5d2e306f17ac65013ad09056531025ea7e396ab8b3a8c388279034319d2069e247d0fa81081d422411c40f52e038ae9b5684175020842042f4048104422841841140685c7fd692339abedbf4b329fcdf1c2185eeee96b31f44756941d082b3bbbb33373337eb08d90891820e777bb77bbbbb77777785a0b9a0d5faa1882882e082266e20057fb0bd511a8cdf52ada87ca5d551d5f22f05a657fc31d8fd552a55123ea8a40e1e1dac9c7cbf2a7a7bfb8845af9c749f3cf32cf13f7327d0847023052472b013eb55820722ddcedcfbb55cddea4d71b598f7a3b75cdcaadcc2ccdd6af104a1455237884e13356cfd70abeeeedc7152f5cbda9714c91df2bb3fc9eff462f4dd57d38dbe93ac19bdf779bf2f7f1a343333481e0d9a991923148a8c76ef3dcb422c5b16d1fbb30fcb72c94a3fb32afe1e8a63a18f715ccea2c08d09d5c3bddd6891071777cc70ce39e7bcbd8706fd7907d75cbc36c3b7ee26461300803e19484f325a77932fa133944c9f0ca86df0e433416d83255f0050eb43bfd6f444f30b7f7b22003ab444175bb865556aa8614b334bcfd5356234ee7f59a7f925bfafd3fc4e2f48bef430e8977c35254fbff4d5d49454cbb295e34a95633962c195a0685a96854403c507ca95e4c404ed1ab6d4d824184f45ce7b128aa2485071f4a9568537dc2bd4580aad80224a3925b74c10a8063337ca1941dcce28e3d3e855ac7103e351761d6a41c74372afe86d1fe162f2a7c120e87c297fe4112ed6abf8827bc9174ba186a1464dd1c845d77ea9036551d7d9f48abf3003b2a7f2a3e48fa75cbe767403e334c8bff5847f9ef8f32815e87c297d4202901ff7464ee48ffcf1b813e99dc8b0cb413b1d61974347f5ef72fc38cbf3e4cfcf0b86b8a9a1d7f108e5e852525264cccc2877e3e68cb3e6e7f294ff9c9e02e32cd1fbda5c292929393af50175693d72c414ae614a4aaf28b00af0af61aa15581567c908f7c68d5a906afc66ba177d4de8e7d7742f7a29faee6be687be46f4ddcb17f3430f43d4f17c18a19f9f8d1f31f3450fa37bd1fc4c9ef2ef219e108357878279c910eae682b970f97accffd6dd73c1606c333aa0dc4d25839b99714b99e19a3123e3362363c6cc0c77ce91c1393332e072d6cc4d0855b6d7c3a22c890e0557f653b5548bd2f26da9561a6cd54a6b57d5da1a4a8c4c0cd5eeae6aa685ea5f485542c4aa730c9d1e253067fd9c347f1a53eaad8a77f7b2845810589ab79e07b32ca0ca3caa87ace3257d1249a8f4277fe3e5df6a9d4adf6902257ff231262fc3975e86cfc68fd21753f2279f8d9247f46081d95f858fb8d3f965ce8d73e7c690e39c5b7f62094b80c10da0312114052d488b58571881f6efeff3f42008ffe8ecbf82896e71b97477b75a72880d31a04d114488219c0ec02477f765462fc23c1004412fce18a717bd18bd49631231b6125fd0820d39463e3f9630041138b1d88a1e4ab117d47cc115554bc5324a299da5bb3b0341f973fca0e64ff8200733234fe0cc15466294eeae069bf3158e7294a31ce5382eb6cb05165db0789b7116a514891800b1439c02072b92d048ec90851fa2c5e5e2ad96d4814e1226f8cfa13b53392723b3777b777b93c0bdba2b8e70840f32c7bad8da5e9a0df6e0be87fc960699bfe52cee9b9de297dff69c3d9598824cc28de77edc8d2bbe40bd6166f4e28b078220e8c519e3f4a21713e3f4e83ee8ac18410985b8e38821ac2c41fabe226d77c9e8f2f66e978b373b3b3b278393931545281898883cd8590c34ca96f21b2699d991a04be341edaf3fba6005102c8a52b9ae680245a9fefbbfab5d30be7b7b7ba3fcaf1137d58310410d3f881e31c6821ef0ca4aab65a585b6b2b2049e952b4361552d2d57cb39c535e79cddea96b1dbdb536a7fcbd662734def6eef6e1a10d55b5330dbb0039dedc0ae524d5513343e3333333333d3b450bd85f883e00b09896389442231fb832a6701e01d87ee6bccfa120121b1e6e467f81a19def4a697e16b66f893af31bd0c2f4f7e868f91e14d273fc3c338f9190230c3034086377da7f8fb02c00c9fc90b3b702304abc99b7cc7b5a4d4a4a4c4c444e4795f52a2a865e1e15083569ef466bafd4d01abe21f512aab007f0fa542a5ac8abf0ca813948b50e091104c016fb7db8c0a142244c8cced769b959a0485cec77dbf1510743f3ed713ff8dca1f2a2e8b951be2b7cd0b4f58c1ce11729c607bf5cb38cb460c083728f464e1043a2c14559801e147144d38e10baf0310a1044cfc20d18348175efd3cea01fa9aae9002dd6fe96ad92b3098abbbc505737971cd66feed2c64832e4a998cbfcaa1b521dcc845376a21bba1a672a8294341c83c1cf75cbd61a9108be1a080f8354c957fb02ad1b98f7d5830fefce6deb90f87f93566651f5625be73737e2c3b414056ee656519ebd41b3c18212748167258810940dcb81162930228ec00082e94e0e5322346e8600b498ce106af48811ccca004b49b4c0a9c570c55ee452c3b1121fad0cb88bef54f8686a7e2b38e37e964198d31d2e9cde9d149673de2c57884a7c6e723bde2c9f29b1debbac0370901ee438f001cb26bab57cb32bf189f55a0c829ae3927bb38e98a1edd5d2ed13dba3ba703f7a568848d486ea765ad23931cc7011e031b5916ee8965b50f46506c4446431555eea7a96d306779274e7eacfedd87be43c996cd68b21da6394bf4dcd732d1271275229148f4d588befba8f75d37db71236ca4e2c051d658bbed5d8ea4b0a6caae339fd691edc88cecb876643a3299ce8e6c877380f42a74f7ef1e5ad6b296b5ac65251f507b4ef0edb8a5bb68214b70c3c9691e4105b11aee1154507b686863da4a66318f754fdfbac8caef9c65e9387b9822e7711cc86311e4b5ac45a1d08b3eec5bdfda6f7c87e7901e8dbb8b5ab605ba9e8279ca1f45167d34e81e731cd7e1b11fa8cc53fedfed06f2d8b2748ec7fa4336259ceaa1eb60e1ce9138a788e3f098db78ec6693939393e3361e731c1ef358afb8e831b7e969d0df63319bdb380e9bdfd83c16cbc9f1588ec73c36a35168204080d86a436ab521dd92810001c238a827bda2cb22ab7f8d994d35a7f99c9486be292b8f4c76a0dbe08a2a9d71a41c81986ab55a2d728c9102a9ce3f2cc5890a29a460297ac55ea3b150103a9ceaf2ff1fe51fa64e4f52fd632c0b57ff191901d0a1a28e6b44916a8c3146067de7916ef52571088002da35fc9f2316a467d4c6186344ad93808652472879a851e2ac4afcf842bee8cbd10bf922798aeae9550cbd27039a39c59fa7f8c9c4007df731bc4f865ddd6f078a31039299911112e374c136d8806270323336d0cc8c4c0c9b4c8c1999199b4c8c1919cccc32369b8de2d01e243e0820c18e5c7415fdac4b81931a326d131609bbc4748246517d8aea23166984daef0b67b8c8a81ab2762fbb6f8a6ce081b6b4386e398e736f71de52a95c2e31c618497ca6cefb542fa9cbe21d4e79a5e108a9faf36c59222f517d91507d9b50dd3b76733af8f4b8692e7a8c31c69728528d28ae3c63204c00f1e79d15ccc75dc5e77eae37472cb85768fa741c8a6b8fe2fb88050e1df7a7aee39d66710e35e7ea4bcb81109ef5a821f354f76838f8410db986031dfedc533d6423d53b11c71cc7712199180dfebe6c402537838134e891771af4998cd90e90086416b91d9e6540f28e7c199daba8b46d1815b5546a46000000400043150000280c08064302b17044a06b6a520f14800e7c9c40664a99caa3419643398e72c61863080000000000c0080c0dc0021c90f1e8fee07974591ee883225ee799f6579c7b8f4cdd3b26b935214ff30cebdbd31096a56a1aa7349eac75beaee90146392ff22aebaa3fb1d195164bf88860526aa4538d73c3e63873c6d43e7f12288a3237a1deb9106b0751a21bcbd23d8d87a81b3f2094232001ebc36d346e4a4e9c77334c3748a862a4e81d71c3e7981acfe211d620acf10ea9a9eccb93009a9e9b8b494500a128c366fac18cf497e64e1c983eae22553197621edcb45437d14af7c09b8ea869c0f63a0c0fb35f98b9f5d4f994fbd7f1cf54abd8b108e02f6da714b7be8fb7a74c298c3089c295ad24516212ae91811311d2962245d3803855d56de92ca55a9045ca0990953229b98c0b90823959e4e8512709eb0d762edea7fccb36870d4bb8f8bb82227a8900eb859ab02fbac8c39ac52cea57a805e2c1d6f85ac1d579705649a229141d600b8714e056114968937e1b5335855f43373d883e01390c0cad7b67cf49b9eee7e6cf43017253fce404b22fcc4e4714139424a29097d6db32bcd6739b05a14592b58cc53f56f4e8e259c3a8218b6984b39e813e441972c5b2403ba12c58c7001c9d78b55a9f4090bfcfed6fbc11e023b839fd9622fc8b5985ad396b846e71890acff747859f71ebf20f10592bcf81863c04322f76add098960a5d987e4a165afa31727cd0d23ba617f55699cf01af4bd8f72e15de2aed42b8bb3a464295a5ab0a9659e184f2ba07c8a8820093b0e64a55c25da4d59c84b02a6feaf245c5a67c812735ff179ea41c31a1bc8b3dd3f5d2fdff9a8f9c9239b37f3c0bb32401f04071baf142a03cabf31c97c625d79734c0f682a6294bf45c18b2d40dc478b876d452f55b8e1197929dda8323e66c6f6ecd2181a9adb09b5fb4999a7664c4a1be44300ba51d39a12bc0f862bc7e9288edf3f4cf39f5faa56ef6bd1b47de47e707ea0d3a04aad543444862c18beea801fd19befeb571e64ae0a3695e0ebb8f33f5975493fa35e49ed5bb1726f5890c96e5a25b4aee7115d10a832a36a331e1f961a10bfd7260986cf2d65fa96d21478bbb8c20c74979e300950c3d880c4afb9b214b9e1994bbd09934d01ffcb6c86adc53637058d346bfb1322528647d91ebc32088bbc57e53d28a650af6403b19f5cbd8dc93b637da5317dbecbf3b6d0e657f4063f794726826185a13050c95ed3945be82303b39a304380aef8176751172b05197b633ecf06e49490e82185a2e2101e4a3a97911185366c67ea1388147afbe82db0792a7a9d59416f772532a4dff91ee3715001f3343aba8ea618fda22024fd81002941c5f2fcfd350a64e3a703c8ebe5d435414b8ec405826a13baff13b27e630ee1cca1ec243e59a7f0e617370851348b46f88e4c85e0c82812091443a61727794ec719b1dd01485dbcc39a6d63bc33b17af7a3482bd745bcfa890e4328d6140d01d49398c5cbe41e74ec261789f7a913cd1a0f539e0f2668971006e8d06f8a63a132c965e1e12cf5d0b287faec8ff7a018ee6a2f8185cc6c653a19bc4454bd09ecce347c722aaf54b44feb4afabb8eba769d2fb2bcdff49e65d5400929a7b5b9ca2216edb7c04fd1b6218a948378bd47dcbf8ac447a986720a7916bf120438a57a360db1978318b75eb71dbd94439c8246dad54ad19be49e84bacc038617a21a175a86392e42332e1bd98f7da43ce607ac58801e29fcbddefa926041179abb5343271f5dd9bb590db070e870aef63832b971ddcbef8b82ede2dc74c1afc502e78cb043848560d70abd35af4669e00a4d207c0d69555a714be21c0416e63d2e00876c760611846b0b067085da947e7bf4b9cb3e700134611a8c7f95d5cfe8c019ce36f265a23fa4b18162b9ba37c33ecf9215b91432334c1c5879446144a7b6a6860d2738784423e7eec5b340ba7802ef7d52b57f73f6951a3015dc442dee060770840244805a2764bceafd0c3bb8b78a95882d8287b90fcba423192af9612f52b8731e9ebb2653e7829a067bc0bfa6235194936f36c85d565f81a6a4d15889af37e70c1995b74372c57d881ec7188283068f763cebfbb7744cb5eb87c8c22bc6056e310d4d4b39f5f368a42a0dfb4ff983a793cd6b56147c9dada78a235f7e0e773611ae56ed3dda247a8f1c3932e9497fd3cb4b68e41e1a3b070025a214479da89da37e2f9f762762cbcd8904d6a4dc6c994e7d2a362b1bb2270a1d29f5190d9ab67b06d51f45962bb2da5f1e411b70caa7cc727cbd1c74ff7dc079987d20e07552c75c0878d63a0c32336c313df77f70a48c4b7ad30920a196d4731d368ac6732121be1d58860b650ca905a886245f905e71fbe03e58312f31cb48b235be8fa570b4ef1863e094738419b10e660ec7c0ac6dd508f5a6317a475a5a7a082ede93938377b4f6a4f21e559b01c074243dd802ce9eac4c514438d627b78836068f2c7c61f4bfd82e6c89e19636ba7653463ce79e6f9c645947a71ccde1424666a314ef1fd28157fe9a437c58399e514e7643cf5b2cd8b0647d6e5fdb241756d3c75c2de27eef9300d8385eac217b8e0f1a10b76847dc0560af83f53381962a3fa4996a3294c30d43ddb887da330137b940dcb14bcb1d2145e73e771f101620b9d1eaf2982a918727c1444c555bc7c850e0118bcd0496d1d011df771c2bc65592b5277abaef71cb768d1aee8486a538bcc7146e8c1cce9364d13d58c860514eb7e041e9dd1496b3929daedefea8bb950231387d5eda9cf8d38c916751d7d2ff7d608051728ffc0df8b8801ed507edb02304d5b746d032f69fbfb2cf73b18ea8c6f8b21aecd7a341b76c423d88ab25b596d2a47d4749f155b834d07b7533c039608314c79b9e2edabf1f21432945190c1e0d381123485baf7614a5e97363b9da925a408f0109591c7ece4e721c3331b08891c03caa6bfe5aac7b88b684ce7dc010ba56f647a19f6f3acf8ffbc164b9208a0f0550371ad286a08bc5e93c4ce3fc910927a6820851a09993e480596297132493058c56ebd8f0066298e2d545a5cbe9bdd86371ec1f08337f79047f8c46010acc50769268a7c93d2ce158360465a1c026115aed6a939b0caee1c6f33d6cecfbd0d545a1aa23ba10d2329a4f8d7eb32875f2f19458af25eadc548b3cd170d62035ee17ee30bec2b31dec48a8604de49cccd56fc29cd99e20dcc6620361fc08008c957aaeb27bf9a7f957ca8557bf936329dbae16c52b661c0f1321cdb2b3bc4c4d553d26b7e1390908a9be35e7d248de215eb44ff1a1993c1f7af1b638ff320d4877895e8419bd0e516f383297c4a17147d3a641ce89798738c7b1a75ce5f819cb73ae4ce87022a58d2a6e845843c03e4b49d1512cd5faf8db14ea7137c1521989694fee10e76f070fa9a55186093226045e70ec84064e4eaabc1785272c2a220b34bff4d4babef354b4bf23f8ce4ff87f55d9f53e14621f1d5319309a460257d89d680a5625fa9d4de003b74d6353b05b5d3dd869a8a9dce1f129831c98275d32f170a89d7e43d5fb815b492b0984fd92877b231c5d342ecb37a3df31714d63f187e2ba7f0519729c038ede486528e08c4876d0928cc09e9e60a0b08ae23e3a316575aa56e35f6b2e0ba0e242305f222a834416a8bae459f3cb30607cd6da56d3b8d86a4455f14454d7a5306380892756d142feb31bd934ce097a39485bfc1d6ff64d6c9951d9b16e7b9ce38ded2b9c94de697e69c119940410256b00d1caebaab90eb47fa979035e3c151e15f4b00c91e91eb979f8c06563e1ffcd6a5f4b84af9105f092648ffc6fd0e5acba03408826af7ae784659e1b7c288fac7f2fcdeb809882c5b57e9e58a58792bb421d9db27e95d35631a9f0df826922489f27060df65f74ac80dd62f78dd0f7def8943c12a526af1d23e09e6d44745ae618b4467c749c6673c85dd04ce543455e0c193462248350fa9b669ae16314a3b4f21e0988beb86dc787340d9e4fd0c51dc2c0c5522562e735fbd033d5d917f7bfd371804425a8cf789dea45002fd2c21bb6160a4d0cca9f36d5780dbf29b97555f398c6c730a59de9e0aae89c7e805fd939d0a58ce3935c7dc9c9ed763d570d3dfe42fb679c603011be00c5795343e350b554b061a2034c86cb86edf7ba76d400e460037f2f1653325efb4b2d01b8212dade81b1a2acd3241455efd6691375a91f2efafc527ffe7eab659d861e22f3e614bee6f4338550552fadbfd2939f9610c4430667f721bdfb3a91074b13d1bcbde9a53172eb8e24cf155e643ba3dc04491e42cbca31ddaee51e2454f7313e965b3b60d9e40c574651989765f2e480240ccf9d18e28975a75a0b456e54c13ab16d78f67ae97e519551c5d30d23cb13e92031e37a5530289b610ec811ae9748dea94581cf50022d38d501388915bed35a588dad6e424c4346e19c15d655ccc0e5104d9424815aa0191d75ac1c42c3ab415e884991fa750d61fe836f94dd92d4f83294f41e5874faae3a46fa4df4be90930cf9d10c1685bb3a20cefaf575b18a15e20fa73388d1c22317a99fe3db20f7e508160b369fa0f1f70581823ef13a5f84f15991279d6a591033bb586fa06e8365b94ab9d08942d6e454cefe5d2470d3a07a6f2d19a0aa8e495a8d29ebb4d20b0728af596721011c7cb2d94697bd8e2f09de010ab6021b5802a182a7e8b647e7615c0664f5795ada322b56bac7af01717a47a74b62acf5a0dfb1945e3d68a08445fd04b8c0caac26fc32e518d93d65a6a18315120bccc62b965931ab11cdbeca02135a329c08425e4027411ae65960cee98554a53fe5c1541e8dccd47eeab5f902d54960313bf0c99140e76a0ee668616a1534ff9df555246c10762ec1ccf828dc202ddbae41b248e97a028718bd4ed0e72b3cf9356bb4f7899d0916e3470affd5e924d6b346e4fe88fb512631f4545654263d91cce8677d26b2f54f923a5db8f2093a521da1a108fa569f79e173601128c2646576d835395cee8620cda02a4e2019d38f202e7da348350e5481fd3c3ea3d72bfa18fd37851e07d72980e64de8678a715b38ebe9b747bd236e1019ce3e860b3a2a18375137ff17f921067c4b45225606261ba0e6ce37c6f144e3b306886ce5506f0d2074b029aa1601d08e3f66efb240a56e02ac8484f3d7763ee9047a749ab3ceb6c9033226e392bd01574a0c51cb92cfdedb0f205b46df13f5086c29d8eb623482373f497408f9f35522dd72997e2ecf930cbfab184d49adf211fe5c6496e23a8b0bf12974d231e2015a52d9bf038878a8c22bdac75e71d2c302de5f04e141a6b095dc16264261145ea27a07f6975dc197d17e48d2a6386867679600257a83ce1e50c63d572cb8ef8295e21a0046c45991c9ec13e1bde69a89ad0e584778d7c9825fcf25f1f7bf0d1425607903ab9585bb806bec74e41b790057579ef6067177ce910532364978884f9aecd5aba3035fad31ddc6de8a0304c2f814428128a880a4cf8362a3351b4c48935df994f99cdfc0b476203398c09b7e6c765c3b5852b6bd4660f3ae7f460049be6c8835b962d09972813efdef2c9df450851f57889b5f94d1380dab47a2092d7b3609c386451900f28a376fea555e622292d17d1e4f7ee6c909a7a8c5b2452b165fb634602d0d26fea17516b2c19868d3e12f6f6a98e980e49147d67912bc749858d5745440b899794d178103052c92715f65c3e70459523d118df43f1d3560f511f81e25747bbc5ebca841a479f9826de86285ddf1707e058c8ecc63bed6ba30bf9182f9998399abb5c4ea45b3d2ab3417092df78dc93ff9a574a62fc59056cda0164616870ed6afd2bf2b384e390a7e0f222bef784fa2082e1b4751ac9ba5fb1291db08f2c4052b029ee4fe77d300817571cd067e968c81621f8dbabf4c2a0c7a6a99a71cc74ae64673041891b7ca384cb0aed28c4bb34e69e0c109fb34f2509b371569282b1c1a3812e009c2f33ae5c7aabce350381f15adb4e91e18eb786d1f7fe86f2c5bf059c1fc96930f99b8822fd493c37dfff636474f6ee04e1f63c858614a4332dbfb8522761d0106799ba457570983611bb213cfe71f520428f443cbc750838ae8c5af6ccd41f15ef07fda4591feb7a2bb772a335b627fc5ea94cd674cae8afc06d2c420fefaf9ea5b5dc8902f9370c4f62d90442413473e07e792a0ff6639bb292092a5db3dfb4de2f1050bab78865c9899b3ebc38b8f526aa7460d55765287b72cc8139b3c67ee595a004c769f073575c52eb61236b6c9a3df5149348ca97425011c2db014c7fa91be3e588f801a8900edd4c9f1f8b0c903774f86ff6d29c42d7d37c2edad7bf8ce0827b4fc9c154ce43439ddf95f235b220ef500f345a234c158602732aabc611d396b4dce134b731ec90bdb33bbd17de45724998ae91872ca7311be87b9f33839639ca73626f44c86e4c5bd048b03935ea58a6d6d78a83bf5195d888d77e79e1ef9dbf2ccf89d650135defc71799c324aaa9d84d34c87811478ff157ec001e5070c174ca1aeb58b526bc116df0a27772d810348e8f18f080adce23e6c5c624ad4c37a3b8259f112481ae8bdb92a12c344753ff06cc7087d0e859488b19f060df93260e96ef0103ab392510171e77187d1ab450064e262d9482d5619fd003006a5d874545425c2720206a970b92715fc33a13ad33257e5303eb85a89c62adb16da62ce15ef5a7bbbf122eb76be6a81e0c568df064062310a14db2d2872ccf8380d53fa32d3ca11baf15678d9aa2c4d30717a12dfe811437e315d6490b58219a2dd1e9e07367b46757d9992d7d3ae8c00586a8a188e98a366c242bd3673e2fdb75bd7b636622b8e608b77d09f1407782446696b1529a8b5966adee225d26611ce5fd4ee4527adbcc58f79930ce17ac5f68bf5e6d229f8594177f85954eb520dc9a1c2ab23e1eac89af85a1bdd836f1367e78ea065d22d2c246f5b2abc90f00f326c38a642048928840e6651e1ac2d7cfd3bf1a12a616de8ccd24ab632878df21811454f964c0abb3b321b37326c32f3378ee05ce23af6a19a4ef76324c4b26d6c8c59e9e63e6886896a45dbb8346094fb19a21012e7ec7f115ce8f522b32529cc52517e0ef5f1eda8a9f0f8b83aaed64d4c100484756e0a9785ee5cba47d23574ce6dbcfff9f4e78a7b0d8a4cf45222a3c9b4236a057db11930650634f3f7516a2a1b7f7c81985f6c7357032a38dbc19e3778d1c0e42a84831e48e763e7146e1ef7d188fd29fa01043d52003fb14d5e0acee4c1881cc495c5dfdd85bda79d4f993c4e5a662cb352990adb151761c26e76ed1c7117260b4d77dd607d95ad1f0112d6688d07f2417f015afafd6666e3382b4524c464f0dcc3b35d368d0b86f1027b139b7ae6e2182d84d80d15d7e12cec3bbd8ff3569791efb1ee31c366e5886232ae3e3b907e131cfb60d0b6e23470f67140ca406431194c8526cbcf3ca1b8c14d790f26636bc8c16117fa40b17d732c1d0ccc70e5c29214ede0995e43e61eb9579ab034f135c09a62c3219b6d8db0b1893cb7c8428a117e51f839c6f3a1e3b02de240ca387a556754023c6fad64e920acc285989ff92caa73592fce5ff296d9664a29743680de770d46c9d0d6237b7549d329a938986c9ed5c71d1f9126cea5a3908802c69b676863b9fcc64a72f30882adaf35001e7e379b5d3d7293a0df64529eb16a4ec1fdfbb9d5cf07ff0dfb1943903001d4b4232f623d500f7a9bb7e4a4b73d856c3ceb9a17a2acdf78b564062d6b5b8d9531d1bc68c220f3e56c46a2168fb70be437daebaca75109f277f1de69e39fc3ba0bcbe2d3bc9cbeafa88003db8d870144e049ec05b40679382a1fc206d6d6686806464ccb917d219f131bf63008237ba481692c90129a055e925c62bb932e9cb60b7c5a6542e1e62de9d2c4190e9da70bb112edbb737d6a644be00f1ec90476c2b2a239d0dd66dac72dd29fd607154b06039b59f5598cc4b9f7f175d0f34d6af9a58a0dc00e542aece3870c0b72c05e7e144df84839e7f0077a566f6d05b48f39eb63615ff245114d3f980a2590f3dc0810754a92412dfc8d99a2ef59eadc85c6e59d8ad3b3a498dc2c974392f072a4489d5a03c13f4e1f03f17887aec9200974cafe05d91a1cb3f2aa4cc8af4e22b13f9b233eafdb82c31c33fa34971e8ec0b94355197db40ed217bd1c77419c1bdb772e5a104764f4f63ef011c484ac0792f0fb9399dc48efc9f84ec242c290b8a188bbd66aa0c9407967bdf0660e360dcae56fc88a4d835dc21b5f8c548c80a222b66d518a10e9694368e01f8ae65b7d611afb2d4dd0c1b1af0cb9624031146b7d4694564ccee23104aea52c03727a2821ef78ac153e9914330aaa49887b11be2b74c3c80525dfb3292ba8152ca77e933971698b0ab42f118500eb5c9484cd45722c4cb52d32839fab815a9e4c2465b002c8ee76faaa221a838f5e07c88768f80bfa4f00bae766053c43480682ee1835414721ab6c7bb113e3f58f3d7d779ffceac9c52860f0399bee76aa5f373b52487c97caa98153418fdbdfbf29d80db47789c5caf85a1404d91e8b17ac6fdfa754b3594ab693a9d9ffdb735d59aa2a7907cf2c4eced31cc7d35ba27627e58d4a9e69a01dd5c8ad292dd4d6f84aef7922aad97b4d1771d80fe710b806fb2f957fb2b33f7cf02f109550e6729d5048f318991cae3aa1c5e045fd48a1197b780c87d5a0d94e1fcb15604a74fc31011e1c643da09ed356708f44fbbe4d138c31e03e0796c3b13c77e7b3cbb9aac86eff3eab58b2f203ad6ebb405432abe84a6c075a36018ba0b75d58a3ceb41ffbcc99c191dd575525f2195a6f38c95224560898101d7fbea8cd0ebf844d03d19c49139893c6df14419c3c10a4983511b5c12dee3f5abd0e9527fc8d4f45bb526016624c160ac63861b7123b5965d08b2c4143634307d639eb0d23b093875f1284e0f51e8c8636681492d3e11b6598038cfc2da167e4e8afd61b379127772b71b7714b97a78dcd34fe7d6a107ec05efd3f2d8ee531354780ee2a72afbcf1cb0c93872ccc6b160751e43c2ed4c0e110dd2059352b3ee04b7a57f16a4b7ea86676f5211aeddbb387b018d80c60a17d26d9ed067efe108033e7d0fbc3e0a13ee3deaed2fa9be486043a37431d7e2073e2d8e256ee5ea9bcbcf495a5aecb371faa94f40b96beb7f648fc9245fa7dc3aa7d4100960a25b9b040e2c4224c89e08f5883c41130f3a8de52447e1846470db03b1508bb43ce1862e4ef835f17e3aa87aad222aa01a624cc271af1f8e1171d7414ced8afe5be04a40967b6539ebcc2bd9c10b37fd109a57cc44823dd99529a4affdb545e73c6d2f3f423f123e8533d894e52c27c4738f6c0c845cf4c19ecc15b6f9fabb851e7ed5b83f5ee54b06406d926557c721970dfb0146768df6a083fd7f57e152f887eb3941ec873c14cd6536c09209de6a1241d3783c7af9215f05e811f751c50651b7baef491cf6a73d6a5cd870778f945288d467ff8fd2af42ee0da397fcab7a9ae01909e846cb9545b7a89386b90063878a66ad786a5a9838903e03c359fd7139b4fde5393935a11193a379fa08cbd4b06d44aa3348e769e3456758df8ff24a6f07914a734787f3ab8c7abdc4bdf24dddc58925ed72a322573cac38468718faf90e435ef1107b2eb44355dc31bbbb67a75439ba963202e31c88b76a95d47714210b1e0c9281c9a4afb104e584cae58fa9a5417c83fa23ce084311ff2a540938a10d31711e1289182c20e58448dc97f87499c4184b8fd72e16cf95628bab0998cb938c234f1e55c506cb5e966ee897302dc7b7229629a3ead39c540f4fc103d7b45a2b3f5d4634ddc730277ca6404eeb5da7925769d6e3d36c2e8b972257ae5a48d5b32ad027ee7656f11e8632b9d1d1f378faf5d3aa5e236bcb96c25b0ea400f9d12046a95b67b50a5e0e63dc85d2c234e6fdb147a1e3eaf8bfa5427fdcbfdad59303e4b3560768a3639d91a7f7df901ab13a2c9dfeacfbb34ad953bd144a851a9b45b38e54d1c308ca75bc5afd3a31579c4d945598b8635725397d7d92f2f208a566f1d4ba092aa5eff9635041a31184f1084c010498126fa6a66943ce64f24e603e95663684e3b4df87d0772793a6300d10f7672a0d1f0c386243bc495722d9005401c89fda6711f824437c786b345d8149818ee3fe63df89f50dcd943cb750058dd8ac75378f49b6ef76f6f9acfa36263a0bb529f1f2b76d029216e219b0d8328b14acaad2da8daf8664a8eb63796d6191173fb5f06f51670c6a4614b91aca0cc0fce69078cea471da2c4cb0f04140888426834202d56c4c51e57d94170408629e6db1876027804c2f9de2b6114b1970fe84a1a7459624230b077ccc063f188f6d798d7afb9b9f5ca0e37ba54b8d9bdca9e5ca93d21493301daccdde07d1327073f6acab331593dd29353d8301a076a7a7f6515044590455a50686ac28a9b916faa266dffb2f7d326a0c09621cb22cefa13f9b91e051167b847b1d07d6e7753537a02814b995f3dc69c88b3fb1bb0395d7a6930cebdce54af6f310cbe3b4933579354ff0883c32dbcf9e9c174ec9aa907214e8ff7a61f8549886f32f2edc1546ade10c0317a5019e34d98e3ff247c917f67c1d148ccdfb6246370fab64dc677581485a2f9d2bbc53b73b484e865a1c8914eba1a5ae58a0167cf840e809d12bddc610685b453edd83236b4fab33ebc046ae8ca9475b2162a393ab2b15fa271462f2151cd1a65d8c462ed5114832cd10499301b86e138f7e6ff59f7d786224de16537b3ea87c50cbd6a0f74c1890a503bf82fae9d28d905e8a3580070ddc548e973baee6e244b433e40616b38ed93cb2bfefe65e2e354346c502b47640769022633d38ac59e49b7088df7d62d715ad538c6f6ebd0a32cf2903d04a3ca01fca37d77c9325136f0aca385df6e4f043a3ce0b9c5f1158b38b95ba9556e2482f28d76d3b20e908f948eb915b605eb57ccb6a65f311b5144ff400c767c477c761ca876c6398ac51489b177f0e5f5140f732607e55bf832e93dc7474867964dc788d85d3506342ea9a9cc0abf8476042e17754450ed80af37969a7c390b4bc5cb84a629eba4ce661f7d3b07590f34a85d146d363e717e80cf3740bbbf88483eea031a81da28d2384b152a55b3230b8b44b60bb90cf392157cb3552a999fd1c3ce04252639e831ce98a64cece0233f75c7e80e8f5b09f786c2219c3d997cf34713223f808ba1b84fce73f2b37eb396497872bce81c7ce47dc353700cb4f0b8babc3d758485b9bb96aeb0f094c262392550e52d269c18a9c54355864a9c7f39275f9cd37bbe04f3f7c511ac7b08e81b24ac236404468888e799e3d3efaa301798380a21e60a7eb1822082ba0a3d522781cdc39fb6ab0f3c8167b48a4f146bd187d5cf79bc025d09cab4f5732eafbb9bc235664829b6aed467a7608b1345bd600b9553cc2bfc5f6dc057a56fb0bf60540f3f4e5157fc5b269863399de0ab0073c914d24acbdec43e49bbcf829933593c07e7c475d486965defb71198973a46875a414e643de4b47d76d0922748c5c66d71e7a5c390205aef2a9346e5cf3a32db01a3816a462fe35896cc86ba92869a3a4529461410dc0efa8306e9c421029d63d703a565f1fd42a02dc26959961715d2adac1bad478a10445639d92e8e67e778868ea9b931076827bb3f6f984926b439ba695b6180a59d6584d45dc025692f24c0915af498ef213e6295bad86095a72249c2ef3ac8afa8a1c5b4da62f8f3abc1013da360b06e9085578d758251a4032d461ea717b8b27fadf3410fbf5a8b7834c656805cd3d1cab0b0f72fb37176381927cbfb006571323b5afff363437d62fb8f56477ab7942fe5b4284a048c7d8b42faed9f834c20cbc2dfc794dc10026f7e6b5a551578a5ba310eadfc8dce52eca544e7e76c4b2a4f00d21e42ef516efb0d14a3c6ace7ecc52257444390550daeff823058291a9116b3494c2a03065fb32cac431946e8d1e2ff86258c44a5dae9354eb3503ab8b1882d19c50432b6c7faf466850bc23daef631d9e249afec64767a67c556a6918f17271fe01432444d560a65b07446c1af7cae3c4ee23707ec07fa238bb8e4ec46b69c2e8eb1b205077b2c449e4bd5a340ae6a2ba8ba9e44e72f1c64d38b846ef074cea723326b8ed75ff0a09c9882b725cd3e6e0a8ee265e2fe77de86f9ce8e3268869a00b50e021d2701639a24d64d55bbf45d40088e1a5a8138264a4b7cd0abb773c75cf09e26ccd79682535edcb345669391c58a8ccf34bc37054cfd6a27ca15725023efb3c369bd93262dff7e3438b7158a365c68da10f45bde9c929ae4a60a8c25abc4231f5820858406eaa3f75da66fc58bd2802062bc828ac2b6d8e49cc02c65012c7c449e3d505b14136f624bc83e761f0637b7f429dc97622a48cb91b6ae91b6a485179b9633333ed505e4709ef13f9978991cc6b11318eca9813b750a9c2eade76fdb3d9bacca1b0bbf38ce40ed9ed6a32026271d36afbae4d31fd42856e2437d848ffb85e2f2958b311d6f08cfa56c368cd0d37317cadc65a4601053468f80f00c5e574f66394770cc542c6c38ba53e9945ac4f7ff47f0be05dbf2bdfe1e3ba91ed002b2aa6cdeb86d7eab910fd32d891cb3389d2b4ef7a30ba956ab3fc6fc9bf874a1a916d68987c206a31ee626487c8363be5e08f7b53654eae4421a0695dbd8a5740bb028952f6bc37aef7212154f52ef866e2f13a6057a8f8870c3609a00a4c1fe261be988d6e3d3dc8e1d14051c111af9c1f8c4783e87c85d0f45e146a3a81a0d50145ea87cd0be49748b82c5731097ef17eeddd0e900572cee64a2b1e5976583a2ead3814336326052c460f5f1e617e5e3926cded1548b6d76376f226102e4f1befcf860269d3e3217cb7a9cd5d2176bd84b98e0deadefdcab62c58448ae183784b703bb67012691e526cd1f28d2e8b7ac2eec8816872185a735031b5433fe7d93bae4a00132c561f687c60e311bbfac831e9157281b411bb567e78a38db08294b2bcd6b9645a779e06db5fd361d06978f0c8623e56c5de3a9ffab652774134c0ba6e0675478fbf78e482efddee7c9dc5ba02ac4efb0c49735cc0781af6b9343173cf07745dc591a213fd10b3eaf179be30d023b89c1638b5880064b510922e7300dbb947fd6e90802dfd65194dcbef30bd62a90a9e3c95f86ba13509d5858f8fa12145cca8c6c8429c20b502a29690936c34b1b522071a1bde25c6ce7f563799efeb0623705676d31e54989e6396c0f63984f04b548ddbdb6e62c7df17b8c01fab4b51fc330b756bd8bf9e0e2780090df621f0034a5986ba8ae48ff53069c766febc5a2d80c04567e42b2a37f98439286b02e43e4c43b6823d0997fb0f941376af0157e3e659c1bc364bdaa26f38af055cfde83d20aa3653963fe116108e028f983217198f670f832111196c25884cc5cb153de0d4307e354a4aa0c5cd5460e7075e1971193a63e03e92f8e718905fd93a2c557ba7506eaa91b0d50cb0379708c85a944dc910ef3099a600c08f5ec04a3804bf3092cc0a6176a96612d83de621fbf06b8175861fe81121e41b8bd11c81312f3a720ccd17926ee463d8328d8a9bd131cf22c441090cac99aa101770a93403c4a7aee939fce5cbf9580ba3ca11517259367b1b75a675b8b284c15404b5118473551a89de3bd775b34d8748073878bbc70f47fb07d45f5dedb9833dcaa323b34a8b90436c0392b1e83821f6f13265b86b435e495376683be1f1e357772e4c4935471d5fb5539b39ea38129f095307d679ca6d593105c4ffca1cc532381172ad40756202cffc86405079c452b46c75099b01a4b6711e75edfbd2f3004de3b73668e801057b07c58e24ac347c30db4e59b9d2fffcb84c85a2bb6020f9894c9ec6fa450ce401c0247e1de475f8e91208a86f878239ee948c253cb586aaf9a70b15ab8bc503b40c07c887d9cbf4a8b4373f50e7a85433baf4cba34e439e8d57aba48a3062d1a9fab4ad6d583b10049a0efe2614a858c34b23f233b61b21a62f09d91019cde5a0f9b38fda0689afc7144c54c7e2ec683e27e6008fb4631e202f9e3a02e513568c15500e292014a41c3c48107ad6396e80ac9207323142710cece4a57efb103c2431712c352ea5bf26954769eb61d109a0b48a36d7b1179c57845442923d0f53886845545b03692437cb5b1046b5e0c2b782405ca801ab9ac9d3c879ba5c4a28ce072bc7b29ac22f5e470f6f186fc3af4b1144391fd15b29b9564e4026d01dbd66eec5d241d0b512b4b6feadc25a938f1f37d2b0278f30bc2a4b6ba60d21d6e794c553f736e2a292378490e2e344e38dc7849dfedc1fc41a1658053c795d922e22e8b4c267cbb4f68d4da7baf878c3a404162a6188feb1a4c38bbbf3be855e41e28f9f4745e94c9fc6f8f4f3305d745cf9c06bf8eb6a8c796e8fe98c49f6cd3fd7154cd0a83af3a072b0d9731e78f630761cdd921446145a2b2b0952c90930eb80e2a538f7b9519fed2327c829731067878fd11f6a507f0f1310094a1d13cbfc33007b50c4f357e0daf584227fa366c0024d5be72598f1bcec8fa89f4eacede7e6c6d1a8c157065088ca27c72f197be5e5bec5289989c7465088fa634e2a42b814c52cbf019f7a7998ca31347d42e3e308d06fe8cc5cb958b2def8092ad13febc73b4d62e28d338d4320805be494f927b18037c0c488d587cbb259e852e9d880ce01fa3b0f4797c50be65a07378c5f4ab97897b97a5bf47e71b2d467a68c456dbd4c5caee3c2776d7da4968a1e26db8f7bbd4bd1b5622110fc4e32d9d974a12f91a52c373278e5b1dc68a6dfad218a17c23ad922cfb7f157df28924797e439726b8695482195ce211057a9dd966a48b5fb88b785f400233799f48e1097c76ad773f1e6e118708f3663528a0b7304e11bce009021a806d2fd3f11afa2da6dd167c834b55da3136fc83ccb858eb93ec46a5c2a5183ee0770bc02a4a316d18a05d9c1c2a9e00ff6d00937f54f2a6346255eaae9123a8ab33442558606b17d54656a125da03dd539b8e042301d5150ef32b4df0e99d70b781d697469cc3c878500d8192fb07125750928432d121b02ed2409247553492a74ac7c906ebcb971ee4870fcdfe84497e8fe34c16942c7de52f9e890d8c5e8004aaff43a0496b87b29e95f893aea82542f055fa015238c48bdaeba5453c0c18d9da4b34570a17a0dd9f2e9075f90dbf551a8d98b764e86699542e94b4de2580c7edd29d801164138eeea66f5c82c804b4996b0402892b1701c1abd23d207a345fe11c2a431055b4c2f9c3e69dc64745fc00940ec40e68db90d56e2f1447124a907b5cf5e99ea2cd6aa079904962201a6275961601c5fbd22712d265097fd072f216acd4456947cb15e2a2383477a68391e79f3368208ecb9bf1f1dc2d36dc6316a190dc7e4437861f9449f737de6d7c5caa6a68e5e813179564e1d97beaa94cada7de34d595378e5747940c52120e323e5149c1a5310dcb9e19023b5c2e51b9c35667705bdeaf688029d4a9843797d09bd97277bd7e483fca6d2b0002f71f2c114e6c1b7ab8b544bf8f1479e013bfd762f942013e933955a4ff7a6689bd2b07aef097a77724a3a537a1c23e7ddea4942ad47f9b4474682a2a83685ea095b71a552df8b6b899021aa7921e89484687809f434441d6d8ddb3b159f55707e6259dd621fd38b7a3b0321be76970a281e293e39ee8746c1e56e0c393fb6cba15de64c76e97fa77f68ee47a321456deafb4ae25ea6c1344825d6e5aa2b8553707ca32729c02afa0b432263ee72ea3d8c86c6b596cff4d081db8b85d238262d298404a440bcbf296814c072ded228a1dc762853152c1b7bb83c01a83407c2ce122dfa9f6d2916f0f2bcbfdf1ca5eecb9e8565d10ca096f0fd1d2595d8af1d9befef31ccd0567dc1f8a20141fde7b84124a42d6e6bf83e02b53f9556ec3c086231733ee9edc462e0b412dd42b73658ed290721b4910b9a0764b90fc7b4c584e0a3d3e50319d531e0702b1c5ea7ab0bbb6bad806328c9394048b9468461c24c78f6d562453aef6e121a47e0a416b637d966f57fc42ce0c1be6e9aff70ed7661c0b2b8ac5fe846765b81f9289e58c2b6170b09d6675f19d01db87ff1eb0be4b5c6bde49fe118b6dc13f6e766e72466cf9ce94eef3315b46bc6bfcdf4c59bfbe3da455b901ee00879f13428ba34fb5968a7823af38e7fec2a9925c0c09c96cd6532c211dc9eb0ad455474223bcf2e2dfac8817937003a9eddacab5a215b1f457c9b4ce1370d0b6afca5c1a14eb35fe5ccf399af6921819f304bf35f04dbb65e1a5504e42b6ab38e912852fbcfe92d8097a248cdc67e90629456a9563cd342486f1dd48e52be159bde34ce3a623770c19fcebae6027058e3ad610f11cd1ba04bc919b190b2d7ebd2af4bd64d2306faf0715b918766e6d798f74a9650a035fc0bc9fa892f528650d7df0a47c985906a17b773d20bdee9c69288a1e69389f66a93f74ec1ef8e2269e386556a2c7fba7b5e70f78ca2c18f15a709043ab7f418f5193b4ce6676379b2a59b241606cc57e9bd0c49e68156f04af8a80e5fa32162b3c73f6340eec9d7d54b5c54c54722bce84ce4de6fa1375fc5dbbb988dc7cf31beebbe29d7249cf23ee160d4f526c844295119fc053e6943425c956d30f9ab80e916f641fc4ebbaad676ff829fceb0660fe47feaa4c2d0e8b38bbb99134dabc296ce19c5da630b5afe58969f791a87ef38420518fa8e2223ecd18d0d2cf5374a0becf646b899e60f4e49b78366692130cd5cfecc1dc8870c933bd0b37d8ab4ae7fe6cb2c0414a9d44a41cbd9b347d67197c3467bdc8da351ba0ef19c7d315e732197f0e8e78491b53121fb0d6c4f1407b05c7e9b9b6fbc47c2bbe1d8803048de943c9e45d1514131387a847cfe6d915aa1e098c58891e28dff4eff314f7ec516485bc6b7111be681a085a929817299a8f2dc735fdc18eef7de0befd43096aa504f3b919c47180b9158901bf4a2d91ecc87bfb6f42897141570f4d014908c326beaad8f919b192eb72f1f87ec8c7cf0231932c24a1a94b8012521db5adf04eff27269fa19939c6be411dc23e50513b8fae7b7da464e81b8385b52080fec931fee04c010f489a5de4dd1f329c8a1f4a1dbb0ca41fee8d77f95855fd73040e42692f189378ec816595debb0a10986abeb056cadc819d531e72d51397aee59579fc9e3f0df13760e4c073d93d818d1ddac1cb90b769fa9157586bc249cd0935930132a3faf91daabbb2a8d01181f32ef073e732c6fcfc3020933a86f4082b964beab248c7883644b45263fa61b618a57e2775745812715b1fdd15e6932ad02b2c0a90302482ca2c38ebf15f06de22013918b159198bb2c9311bd22930fe6510f2c3a173c35673b0bf1f06d8ecf6a873f05c5b860b85b55069da36b1206e750ef5a7c06b4d399f871ae70be66b7fc2508dab98c631e66ed37582f35e4eed2ab6242cee46203f35a17171ba09817efe88693dc15980f0e38eaa48332bd0b2eea763b3d5349c58835b826ca37c22ef0084e0d7161eba50a1fe19bf87157fb803cb81c7f8bffe53115e40f4fc19daa81ea10ae58d73672f6052f2191881f41e3f82dce1a2ae1871c32f909a6e7c8cf4e53bce22e38ba5b9b123c56d3737b853497799f60eceefec083cca118a27554c04736acc157f8eff18c41345f956e16bb5b07779952a32fcece1ac76cc90def49afef160b026cbcd34b4f57b9914ecafa8c2b9494395861b164dc27dab3e892526f3305f8f9ecae458cc75179dbb7134006c21f1a829f758624d27bdf96d88342e6500306d26b004c2cc9467e29eddaee7804618927037605bffac69cda460690318e1683cfec2e5a44b3158c539fdc79fc64c23f696bb3bc9a81282f76a70d4da94804cb2b623b19630e61f5317a6d975f2cf9429bcb6d3074c68a9f32cb1588aa46181ba56833dd8b5ff792d428e8cada61fd1796ff407b7d7cb870a37b881a4309867f03dcb1f89523b75e5b6a1374d168a042943b74f6438e0d220b0dae13073914002e049b984b70250cf8a2aed9c9432cee6d520038da9e7d9c74a18d8615a8e72dfd8b54c32645a6acb09c2a02f6768b2f56fc175ad0fc6e41d082514acc334f8fad1a3092a22478f780d3fc3cbc9974407c8cfe65554624abaa02dbe23b3e80295154257ebe0efa91090714bd120464c9d52efffa3421192804e510c2373267d7f7338661bfc125adcc77dfd66f09092f82f43010d88d89fb9ebec18c021aa3bf9688ead928ec17c78132256bb88ca3ff7a2547c1964e73af730cb69ee116937e3a211bd72c91f2c57d8b864fa1aaba099a90368a64d92567a5c35cfaf06e4b9b81812c95a4973cff165cd4f2dfce100dc0ad3f3625532aab05cb29899968cccdd5dcb4782d2d8e3b20295abaaab3776336e8c476a54bf4a32534a118bb25c55b26db6b9b08cde401960cb4b28ae9c0b3da2bc75418e95072332096a0f8a94f146db2121132c82d842c3a1290fceb500d8548218e9875cc98864e261a9f1143812302386030a6f8b6ea8487669f455d0dedd3aab153c169d3b35fdc861dee24cb993e6bff13adcec278db4a390717b997d4db6bb2ddfbc33595989c9f44f49013e49eb093c03100000f47e90901ecb1fc64ab2c9e20f812ccea1f6f3c709729a0a67c3ee061d62e27f4a73a0ec6e624ac1f466b851e3c9b049fbb7c13827f036563d4e991362486581e96f03485209a1d4f2611c77be257a4f8a527d278dde663e8aac5889f919a2d8ed342fca86ace62e41f72f3be6196ce18eb7046682fbfb6e50dda64b916ff71f45a60e498cccc4e63945b5a27a429dadd1ddc9b8494ae9822cda57b8c7996a22a2b7d0f7bcfe3c324706597b087023cf705ab9e38fab9e30c6f3c40f802c421d3a5e2a0a995a40bea71704aec7cf485cbab745b426c1d6056c4299acb50ae409275cc6b368273a38e0fd859f6d54f616bdabab70ec60181ed4634c12065c3d234aaf93b20b03fac204f19998de12bdb52cc00b2bba006572c23889e518f7764c3ad8f97c37647c295f77776fba74745571bfaed8f738385b790d2fba634a30c2b8501cb9869288cd072bfc6a042824b72af9fdb0bb5b9e6f8e62fb4607362665c91680815880300b9f6033043ae76427d878cc994699ddf000e433d069366193673d2d029ed6ef2df3248df53865abbaa76d19ff4b0eb05df444d58f79a89f69b288961463f05aa23932c8782682a02677c9811c04d1419fd475ccde64cb120510ce3310ccacdf6e589da10bea368f02709988015f432e489b802845474b4140cfe4c521fda86ba7f55119162ac1cd46909a65bb9a3890f189438a5fbd5690d6f7d02763b5969c2c52f20591d066b216ca16459be1438f2c87d6b4d7c27198105373d7bff656427742374e9555f59bd5e59853e067ce05ebdb503834e2e61ee4d7bfbdd597ec466c343fb4b75791fb2735d5cae446e27d9509e049e2ddb30a04581d6e4fe01602bebce9aea7d0284e58e714dead15396da25d0d042527c0d1a3445b67f8170848046c7adda93846b866670280a24523933014baf83b5d827d03d40189e3c21ec30a8cd02caa84e108cbc1e6aa18ab53f43fc03cf9c20867482652d2be6004d30305adb7c2b66d949830bbbc762f2692254d0bc754fd477c1fd1c41cb3b87985364b8f401d761fd8e2377069468f19861d91b9ba8c19d8513dccb936e84fad23e84fe5efc7ddb5ac517d0d53bf6d0e3d123855dd2221d6ea0192d33e0c9163c012b03dd174dfbdc691100f7e150f548ed892633ce4337e6dcf8a7fb906e7ed1cdc03c96e8004d784cfbb1bedce2ea08f4de9bee27dc56a1353c72d9cfd2ac513a708c93b1e458cad2971c7e4f545b99f6c6dcd38243a14829940d264eabeeb1481b61625e25b087ecd136513aaab326e82c9edc45fc3c70dc670feb69f5b56fd979bebfc4c27ff8da39c0eec7c8c0aea74ce47944abe3d8a3502a7479c448f30ec87e2c954a3fc5ca9abc2da005fd68518019732cf8e6cced8520a5486b0b98db262886d29e2da08d8937594a565b05016f31b66961972b6a73bc82a0a8ff6e45953ee701000421da47fcd4139e39381bc9edb5152d3ad4384d411a7477fb4101f14ef0b9a5485e7c34b9965faca824c99298a04fff132b885660d76d6affb474ba33c9eea8d9a89068fdb29549e2d401994af6e97e1a47f1c66ff2bac848d642597a02b3dd757107091061bdb2562b3ccca0fd5adad56dee5e74587c553fd35432aad4ddadb4cd554f29ab10980f201e4f2133018dcbd72c86c15711e20077ba25d349d233b18bdb0d8cac531eef12dfa851fcae46bfc54124e17833cf3923048e9e385e53c5fde45cf1b8a04b2530676cb62abc745f17e4b10cc3110c8ea049604ead62be6b98b8ef7dc5931ee391e4cc2b14e616d85d9284a5755348bbbf1e68b8899864ef07ef7957a8af1b1573c607e2a957b0a969b89be352d6848042bd33e7409803af668474164b7b7fd46dd8b6e385d1bebd92cf2d537ee9b4f6d322bde67d4e01c9f34fadb3947da22610e2524045ef245a56a3805271f18779f700d6089020c3cbd027a6119f6853b5c95c58ad0d552802f86509598499b328cad70d4422c414e41db30dc49841e8d0012e0def2ad4233471be412845077bcb522592f249056258ee43c147bec5e56424413dc4f5ea133b16c474c8c6b699db1d3c8134adcd24f6e518854689a5138f71c1732a2696c8ffb09e87ba24aec05a4f149d37b0348bf71d377ddcefff8b3170f1c693e2954ea65d875ae1abcf0c415069e6a508ae78b0dc6aefa5c4100724d49f5bea4039b0a98cffc926cba78df361bd19fb95e650393645279a713d89c604513bce14ce24c08b06570a9e98731174dc2bc52e791faed47fcb9b3c529f07d06e8e3d687aff4120dc0f637b8fab4bde341b58e4dfc70c0b8f634cd22f4b600607a199d1ce1e06ad6771208be15810b75a39dc02ce93e9b6ecc9b3ba00eabb2a60a6de8828d0e758a02a02210d56f9957a5ed573cfd246efe1c2d1e868b5838747c33195758590645fb4a1f6ed056db9d1f2be3f3309113eb667cf571365553f243a5812d47a58396356b69c9f2ea8e7058fd1d926a990ff37d9cc486fc1d8fafe2865c6f0e018da7d8677c6fe87d14fa434b1b59f246e0f289641212f6ee0527913828186c00e1582c52438e447c1457fe5ac8b166ceee0070c58d786c1111410213d5b4858afc5a496c78b8e8bb91566a1ac4029c3a2087709c9178df19da41a958cc003334396d527b9d85bd4721e2bf396209353b2fca04ba124b886b0c70f3eef2ae441479ac1c821ab16f30d4f0f3752341d61f196dc2e4b5d94478fe7bf0cc95ed1b7f5d3281518c1088d42aecb4eba2801c80622fac520f4a556c353b107ab2a27a581f1c2194cd9b0f405dc689b55be4d46f79e82e85d5aa812b11f5d09e4e3a215fbb560f6de903da5ed4436c6ca76800194c0340ba0fdaff4eea81c332a093481f9beb338eeef970ce600bedb83ce11f39f9204ac9a9ee9ef3fa926a3d67d32bde059fd9d120308601d405e9eadb5167fc0bc42e4d10f3ce99f5fa84a0463d5412e7f44c57b63c95b08d2149daf056f3953f02969bfc2bc80dad0bb1d3604dabc03fe5c655ca52ef552939f07df4e1f097824aee755bd1f2f08e67565eba22f12b0fd9d71a5c7aa82b2cb671d0ae6c535303e2cfc9d58b5f1aa144789b295c8ee212f1129a6537f84a8e7ce5400a25e221698c2e06ae4d934ea08b3a1a2dccb5e517b8432e25bfc2f5a5b377ad9397f4d91a4250279da3ac19ed6fb26cdbdbcb635144abe11cb6635fbaaff39bff9b0a818d5e1c98584c6343ea5090e49af7a49a730931b9fa644796195bb013ec8d9a99bbf5384784b91b4a6f65355797a27f7b8856eb8e1855f3c1807a4a9528c0f48f49986b1fc31c01f68f5e4ee268234efa30c2bf7191fe49b8cc80c9c936b4aa04f75b654e1d1ba549f63e6874daa948449cb443e4369cf2eb566495448fa52d3da8468eb0a2974fa99b9345d327bc39dec6fd25450dc24efdc1389246410173735ca780829b2fe88ce06ffc04f423ad607fee7870bc303b64ec0fa828b6cf3d1829903c7382c83b5e04878c34d215db34a83ab2b4619bbdad94313fce97bb62a1864324710515ba2f1a792bf06154d68eae99b0ecc66b1ff55f68ab241381580bc19a73ca1cded0354e42220edec584152b12b098c82128a428ee7885e68f6d66ff73c834971523b6793be2b86cd60ff3a66cea0284d8b972b32db9888887ae444fc396a55cbc259c9cc380c37641fad6dcd9f14310d1d265d37d08eb176e36518b5fbadf63960e2abd901cead710ae5e680e253dce0ce0833475eac3bf67ee2c84e07f5c9972e05a4a82d278d3e288362778e9a730120d19c6180136201b5a83eba1ab4566e96f2e6e18a15ab8e7f443ccee43d462e9f1a9ab190ce9668c5f45f70b2543aaaf00f88a9c61aac89d1519fb4d22a4937909e070da6278a24e23c4e36a12aba73ae110f0273a289b6cef5d380762dac269694964488eed71386e7fae4301ded599bb2f45b828ee40a2245c652f2a7c96d51ef93da0aa48b47180236e30b2d4606e7f155345d8a211a62cd4d275188171adeee6c6bcfeccb092cb8a597cfece96a1d4ec07ce12424887804bf1fd56a285a474384caa322a7c1a7a54bff48a7920a8b179d14022dc8f395971920ca2c35b40b65204d83867f7b38c8a0e842dd16b39743dfd2752657bb08b0af965fff00442b120cd81d3f4d5d2e6d9a14cb8b29c97226188d10332bea092a4174ac7bc2e75fabf87b4be1ad22a2fc76608c1c1fe8d7875822930c407fda01e1bbd1e1022e4c9fbc229c0375d238b08e883854bcf3a64e5c868365dd67199852d579d64816144c83cc5a35a9b91c55b1c634fa4d1a05fa826f4e63440d90dbfe733b41922bcbbd892e999076149b73bc1401388671dd5a2b194f12f9b259f4c27913191c3fbf483f26d26cd20bb40e4f10f120dcb0bf1613a29d665242d314fd71d64252be28681d9752545748ba7806f8459bf04445f1259204d7cd7cc724b1f029c5ea135f3b7dd7f7dfa4cc66fe843bb6216b5163534252d3fdb2ef0a290754d545eb68b69a373cc950aac6617845b7c3892c0d7e6bc2bc09192c4ab2a646f3700edc4dff31921e76e74ef58448a2e3d0826d63b8af95db75704664f97f6a54486df5d8a971724757aa3fcaf3a38aaea79e02a6e2ab28288ccab5c7950cc315e396408dbf1cc338c95faa86620394876d0210f06c70a5d7593087632908c4bae40d80e889f20e7584545394223834ae253327aa8b157f39fd403d2271eba3cf1d9869af49ff7c888d638d09af319e07d698d27c6447563a01c5ca55b61b256d1f54f523a2f7d443397de84dcd3e97d678e95787874a682bca9bbbf127d2df4716e892ceff2656201315c3393b7aac4c9580184d542c7f1ae4802503d8d41ed44009c9585b99eedd18a4b5a8050d4bf9f6f19f00e718949bd53105f651e51b6831b40c92319fb2b8283825c3ae215be1bdcb0500424247e0cc65ae34b677eee7d79e2b640fc14bb731936c6dd34f7fcdc6b0d02ddc3cd7f57aedfcccd58ac9201305b9a0a02e3117e7338cd2d4fd63f1089cbe5b364211a9ae5e236f137fa4fbe5562e22c05a41158a98b7bda158c0785a9499de69cb6518e305d1833c8f07d5bf9f2c845d89f2e167a0aa40ce474b5053647516e2c7c353990fc6611d882b4bb4eaec189e8d2a4473d73bcf588054105c59d67f5a61249efc49ac92831c1531cee0b4ba1e957e036a3e24dd5d54b50188ffa8c214f8f093291b89207a24e8ad72421f85e1bd50811a758c4489a29388ed4f136a65f0ec1f9c1a0a6f7f0e9c4974d0575fb3a70a6f5d6254cba74e92e486edd9c7738db622a6975c3fc0ffd48baafe90e814fd622adf7894500344e046cb7fe5806904a7b0632d4e84be99e826e5272be06213c6cd8dd88ac0cb2587275f6c29da42706850190bd29ffba32ceab097768dd72cc3bda0541dd221cee1609b9ea160525cbc189b220ec8d9b22d2b20b2ab745f4692601758efc6f2b30b99d376f47825b3c7f5b1c5fff064222f0856c9d27d29669d70c1d0b706522982a9b42a7532984b6481e02f204e80db79921e72f4728460c7ac79e5acdeaf2f4e9239760d602a299aa3b592aa97615da8b82a59c2c06232dd12dd7b45a7e03f685f22f17cffd2099a0600eca92967d4a0c6bc81404b1118b1f7abacc5794197ed61ff830cb6864a216d313525c1bbf18526d2de58e3c024bbb501b7804198f168be6ec2094ee02325f9b00179725c4c3f3ad4a0e34dc0fa2f417a4060c26553358114e764c95a78c818559e2481693982a9829d7b5891d7992450b41aa6e7a57d05298571b6e812fe4d5d85a3d10a18437e68517015666d399c576ab8563455ebee5b2339009620a5808b6ea290da2b28b437aaf084e0fb8eb2f289eed640690f2b1867d4d3dff2dcfb0d8676e0134d3ef49a4e2e524582db88cb440f53877cdbb36752e2cd3adf0c3126f889e21f50e0ddedba1550d7df95e2ab5ac55ce1389e9fea99fe5176a587e736603a540fc1d4f8d6b9ea582c7917062454a3febf650412a95149db2d5ba10d4bb475041f3c4f4e3ff684b0c14b1cb51c50b2ac459cc08a788afc17325f79e3aeea46839fbc44809c877e3058acc81bf2b831d164b94d3fc3ef00d8ef76af870f3ebe1d14b0fcd5ffb32e4ef370c499827c76082cb174c3033f3734b5605990b1477e1d9f99ee9e7ce2ba9e906f55736a216904860f3fd2025b01b133bc51d835d0042fec47a0e5e89830d20dc1efeac4fc09eb86bb46828ff809e7d4dbdd8d8d809ab2381290dc6b50a6ddb1dffcc43e00b026401e871c801bbb39278d8e457525f88866d5f50e60a05781ee25f09fbb26a8b75e27ff1d37dcf6fe24191d3c780ff2d5f1b7ee8295f9ba1e0aab96f064c1df0967d43c570622f39a092d256613f69ecac4f0cffa453aec8e0964684c5a369cfd0a3495b1389791a81583e9702abf1082d701b242267f4bee335de714c8b7c1ae3f3f29c6fbf29effb4827ff69d92eee3afd207896125f35527073e11bb8e08390b4469b763aefe12f1b7590bd0ea22191d7d51173764fa8f14e6274f58e13506a0741a6dd8d61e49b40a9ba83795615dd95ade32c80d12158df6964c76eb8e37e2ec52f29f178179c333017ce4f69c06d469a728383c7fbe1b6cdf9d4bd40f0956edb7d0e16c4955686bd60f1c0ff77aaec3c725292797f9d37a4eb0047021c5de3593cc64c761f10d56d12d4c7156077d159e837abfe058b14fbc36c5aba46e8685182633da287167aa288a852e2f2768e9e6e6bc06ac01f1cd382d1298451bf2a539d7c4da6a9881c69bf3a99680ae77f31ffde16ddf74f11481465b0bba76c2d43a5f2fdf329f7a81d076e10c2bad04ffd60a72b5958a0d17074c4c5bf31d02b651bae51d14d18aca473019acc3c2650709c51d2017e29d1b6921804d4f73200ded029d99aaa0528da31ab5a116ecff63735ab51f14e7e2404cf1b7bee886100e1e5657ce7a771aeef51009dd6175bdcc6842f321952901ff6166d42884c5ba693023f0217023abdd44ca14cdca31a19a974dc38803a30db888adcca20a807918f2b908f930f08897af820f271a21e3e7efc273ab55a58ab496c69d775dde944a433cdebaf72afebdeb59df777a889f252a8cbaeeb5ee0598245de7bccc8865f5ebea2f905cdeb603167cbf33ccfb34eca53792a9597f2bc94ca53755caa5b711ce779adab89106575f10ee4aebfa2628c11a654abd4aa634dd55c01cd1b1963645d08152c8c55c27583116f3bba68316adacd0d3c7133d0a433a5539ff2a7979aa913cae35428146a5e50bcf5fdf6c897ef9043c518e3f5bd0ae87ac59bab39638cbef226432ec5c2f30e44a53c957752459597f2bc946aefa938cfeb54abcef33ccfb341490806de81a694a7f254aabc949752fdf25410a23cae9b1e8487107a9e0ae1d9614a92eb0679c995abfb5c2eb6596a59ee569b6db6d92ab5ab5aedf52bb5ba7677777777cbd0414d6be32c76dfaf5fa6582cb35a35b071c067242b58d0b0945c1f58f196244934d52b4df09830250a105a6248c2c41dd51d75959d3b0e85ea4e4143184025140ac54a824245d9218466faf4aaaaaabf4eb1b1a9a2c9bd7e696aa31db2dec4f5708021355cb09c6212ed74f289559a38394175ce4583e5c449eb0c6fe179a10a0a2bb851813a20c38e2c5c98b2101e4278588447090b09033e578152c29627a8805103d6b02cf502e42548c88b096904237d695d3a21840233c5e01ce73293fef91624233119770c61324913156cc88dfec45593884586081e2253da9022e6ac84346848af1a9252caa12021a520a1a1a021a032b42025290f9576ca9c4b9860f105163360d76969751d193bc428729465092fb03461247bb264c507c5a19742851a8410424d91ba703c00ad82a67451814704cdfb4278ecc2300c5b6c775b443e7a2c292d0d5999e23b4c0285a5b76fdb77c17495c76cdbb6c9246ddba4847c94979931fbf7ff9b8a09737201611761be635b03651de6270c7629e6f1e9677f2f3722dafaf0f881f23c364618e79c930af82dbcad8327d82345dbad0807827f973812c0ef52877c0ac2672e1f8e04f02b0af2ad0fefa8b4fdfbff1d4614b6ed1c6f69b5a4759c6a75dd932b05205de9c284866ddb1393cee9b86f759dd4af0c834abbbbcb7128e0a0d530b9ecb2275f6c6c3efbb76ddb66ad5116adc8f499ceb06ddbb6fd833f6bf10149cc10b6c4eefbbeafa3d23ef23aeaa35d47e542d8799d4f5ef420e430130cb8a299d6a839618a858b9d3a6e72d885619e1cc4b0bd969b8be2b8a5a9d42d794a4b124a6e9d384d9266f91dbaaeb561b87cfa1de3a22cfb28cb3a2a919094945a2d28509a6813b5c13e2ac43af621b28eca252b29e793923e97cf98fdfbfffd39670c930edaf80186a88bd0d22ac9832716d7994efe15479aca035cb06d779d942c69dbb66dbb859934da08e3c492521321989ca0464a82972f5d3e5f31cb944386ffff7f0d725d23b661415369ae887669a9b66ddb4ba9fecb79f550b344337d96119ed4b66ddb595e13452f086d92a020dd3384dab66ddbb6b568b66ddb3afcaa2aaf57fdf5ff557f40abd55a86c64867315b0f18b7cc86a80dec62615f5aaa693737520e3dd1ea6cb0a839b191524a4ba57fce29e5e9c4713ebc03e7bc96148c3a09c83a40de81495c109050124a28c618858082928082848084bc99529a4049495aa02439290b04f3f9cd09460b13982cea15370f31d2a5af68fef00e3c5d7f35053ea61f6882e2f365adebf56dd5566cedbfd8ffe7acbc6a72d02e69f90dbbe63c02872e74ded8ae90d2b68989a2454e4e01f6b921c03d36f07469f2399931fbf7ff5b8c19018e6834101cb0503e4b018e6834dafa01530e785d7a5d00e048f07d2bb2e0ffeef76bca4113418e6f8bb5a942530552502bd90a18d1f4feedff121efe3fd4abeddfff6f2946b48883c532f8ccc1e7ef230245d8b68d25e90182bb7ffbb67d39ad00297d30810f34b56ddbb60ddd08a086eb0677f9d4cba72d0d2208f2e910a5d0f51337201efcdc5d0eb7c0185a11aa5bdbdb0264681deaf26dfbc64898e94a98292634cd99fa6f33d05acd667fdba2f81d7e0c9694ea936499b668391be857841394491edff5e14c78d28cc777f3ffa7e1216896b7824791d979dd5ad7ebdbaa554005aed0541a2a5c5deb7a7d5b555555f50ac2f47863f6efff373cbce968618f11da25b4aade6a55952a67acf00a151ac2efbf48944e1d37cfddf397cd4ddf1c77ecb76fdb8f21ac5cc9fdfe7dffffbf5c37b9c9cdfff2dfff0398f1edade03963cb299ebeefeeaee5ee97c49a27046c41a4c7098460d8323bf6dbb7ed5ff9d7c63b31eab84c1c3c6da8dda3b80ed519f5c4b3b8ee818f5766dbf67e77776ddb46038123e662befdfbfffd8502456cdbb66df714b160a24863f6effff7ff1fbad02344969a1d6402449653b8de5dddffff7ff9c4b74d45c6ecf874a4a05a7de3990d4766dbf1e9d0f16d0ee71d95d9b1072ba020f855900dd28a05c40a12621d6a3370a60b29a52a4d9216e129ca296d9a07fc1835ade8e601db11812d9e38fa316b66523555c76cc3545555215408a1c20dc156abaaac91a215715fd4bed130a1c33a970c442adf91f8fedf7049b82f53abda6adb9ac6ec9c8607260c07b0470bf88ca4258c4f39cd60d0b8e1ac0cf213e5b30d67b72022be1a359044f30f0e2981f02094c91899c92885646236990d88cc80384affc848b9d98683c9191c6cc3b9204a192994c94c629b5094325266030200122df0e0c60f488408f98932c88f7f62369c5ded4072041e75004fd75ed7d1d5e83a7264747421ff890c5d46f898e9c278845d100321cd214f27296f4e10c26d8756ad6a21ab23064556095555f5590c361345a24a942059a35476ed36a7a6d1e856248b668e8c9cf78967dd68f246cefbf8878544817f667e66d4e8105e5ac96d24b66d2646488c8e1cc960db323933a7490665bcf8cae818b56dc7c82b47030fae817e5b638416b36dd47270449a08e2860376f7d9d8f1d8a05d62d9b11fc9a2688ee3f837d7b0e6544293a499f5d9b66ddb36a1e5845cef7777d70abc20bce4552f6d4971d0b06848608800470ad062dbde42b07df81fc24308e75c4283039519ee2a1a942a55555555b55aefc11f4a10420855c110c19386a7503201e462fbf7ff3b82d1658d36d3c9e97c2a3b2611e7c28952bf1c1def7847e58561d8628bedb5dbe55a923a4f68453335bd0c82e778474a89a4fb56cad3cadded8ced6a6b23e5fe0b29a1eddfff6feb605a2d0acd644b850a55b3394d39280595097b6cdbb66d4b99d921261b9b8e0b079169a8544e1e758a0600488204331808201008825018c90239d133b107140012455a3852422c342a8d04e44069281a4d411c07510c00210060200618a510724caa3d3b743183769bb60ceeb26d0534b614e6ca17022556e12c87d9abb9a859603f2c4621fd23cdda98cf2b80e0061b73904f2263353836308114d1efd6cdda80f3651cd9aebae0b26375be7fdbbdc7f78c105f917fe8209398c5609d4b273cad4b2ced0aa1fc6fa55748813f872f731939ff76850a762ecab0e0a436cffa1925ee152b521347224774edcf18fbfdabb9f2e7bdbde26728a0168329a5d6af17e96337b1294293f39b456b01d4d281e9b3b8cebd03690b3e6eb93f8fa60195aa2707d881f255387860a9799bfc93650945f25c3adee06393046580c56dc46035365336b49d68f37a8d3e7a56b8311367500494a149a925bd1566d8c0bfad1d69d9c950d8d913b9a4e9b77a781f2a99b4ef35d640c7c8af5c002ddad0bce233ba1a67213ba3622c080147a10cc0c28eaa81ac207bc59ece3a8a80806527b6a750075e65dbc37aa67a25e178dc0211ae40a5ea6aebf8445d53c9fbe961318fb601d831953db8a44104a24ddba21b63dcd2f5f54d7f6800168e744511b8d8f8bdbe2403a157ffee18801cee1ddcf578d3850d7fbe5a0fe8979c25a14fca4635289cca689472d2fe4b0a773467f283600e9924f18c49c1734fcc3683ad723279393d133b2ef01b343599048cdf09fc78da121babf6757a202dfcde9185c1e09806a5d2e782ca3463483f12b43913abcdbf4d82f977917886deb650f50732bd2599e0a5094f449d4a08eab119ca5f3af50b43a90a7b0d535b22709bd693a2db2dccf0011b5d37b2fac0ff1ad644d8d0d2a27b45023f8f28898ee5203a514c629aee94a235c48e81b33c09f17501881ac3cf40ba5ab0a83141b33fb4a237d6ac5f21d5076ccab886c68fd144786fe270356f1c36c4a040be477c27554ee5f7b26cca82baae92f204324419b0b1a909dfdab97591b2ec4f269039111b98f5f57009243175c2a311d2168086f70f132428a72ee0c7a141cc727c236771b14557bd211c800475c8454160cecee0e278311bbb42f2b78971c11158ca0496b433660972bd85ba5080b0983c53cc5239662128c83e48d88d40ce6e139ecd943357fa0743114e7e25321b67d2c23875b4dc5df2a1aee952f35297401614154376d9fc8042a62b47dd86460348b40e00aa9fb058a2bf06a31b27accaab32149789a91e77cbbef41a7b11eb8f3eec4321903764133ab2bc782d43182e2eb5773248ce420498bb7ba003d6069bb820e553d93029ac9bae1ccaf4ed218b8eadd0a34308248b85b88b64cd93d55f65faf8d4ed9369d5a7dfdc7ab1b7935701588d6df8d7c63038dbe138a5acc77ac430e041eecc236118bb20abd6de11a466ce36186cb4a352a65fa33a88bcbe056a371e7a0a9a6a284ab28ab0a402d5fdb08670cd17a5c9d94fbea404755db5c4b49fd78d6b554fdb03b4bdbe0cb494aad3f7d29da7e7cca9713d1de2997c499628ba59b6c29fd20dc2a9e53011b9218e30eac35543d811e65866abb37e178af99a8b5e2b650b4f2b9d9dcccdbf20ada11a7084420d4745418b0285d38dab5abf884affc7893e2415a1dd0424d3499b50f32c47e3a3b03f65a9124311cd74d0defc293d36f70f7b93d4032ca8def9539ced1a33d9ae1c608df450c7b781dfeb698fb275e0fbae56af03bb394d791bef25d7d93f15669a06caca4aca109d1ebba42375da71dc41e1d7214b290093bb6cd49de04582c43a8d7df9d8cabd9964dd8d6f74fb32e5e9487e31c1a5f8531576a7a38330980ff4ea9b5dd330982b094655f67c4cb582b79bd3163350983886c072feedec4f1230575588732ae1602a5179c6cf117713a008f3200fa6bfd35e6b2ccd958edb28e02f7ce1868394cf95808b8fc18e85427afa9920c0cfa41330ed4c7e78fda9d8511e772cf72ca96158ae3d3b28dd2a64d0fc10ebffceb4730d969c425ae140b25a467d865eb2b10c99cb6b998fae8f7930227584332ef1dc085d0f64c63e8ae6f34321f9e1006c264fd877fca626be00032f5ecc40f8505e5e8cdf740badebd5117033a075f6bf0b9994ab21024c1e251b37cbaf31da0c8f05cbc46783a70aff1fdbee7f483c24b973acedc9ddbb7681d71c8fa9326085b4855988375114b292d34263ba087e96e22e4c3d994504212c2d50400ae6e9ab6c3edd115d4232255c881722b911ccc422fa1b0416b148415702a1beb3c4a7e7b6a938cfdf2d869420cc91947d847ce3d5656f6c458bfb74cc77ca247fb10174531dc431c81a2ee112f3e7af059b6103e8dbb73ad494c6cc50ae6fc35bd43163ae8e8b7e9efa9d2f4d1597fc22152d87250645d99843589eda17fb60b4ef935e8cf9e0406dbb7cb31198a41234868a7f7b28816d7783d52ecbb30d041032f3451c8d8ec1976c02d08fc3c958e05ef6c5ad4e9206ab15dc81bb8ec76712f69d3e7b25bc7abc9eecd8ff7f2646985cd1d7327119ae6c6a35fac5bc892ad3c0cb1bc1c6f9a11b3ff9f3fb2fe92ca16dd803aa9c477cc8fbef0e04fbab11133cec3bf71500786d7777e04e61ca4335635afe12d3f2611df379e11fb203a930f3466abd27056a88a5e8b442ac3eaf2044e243118d7a7192919a930c4c294522c90c097659ac5e324e05d5a173a02a2347bfa8befa4419aec6780c7919fdff1d255644ca80cc1c0ee4b569595ba56ccf4ee4fcac6dea1c7cc4567ce7c028607ff81b1df21516a7c83adbc30c03c6c941fb4cd598bd9b88c6442f3dfbbe277116476a60eecb5d0d593cf18edf9bedce6fc91a99c42fbe6e4c58c7afeeef01b41addaa2f569ae1b35aa4d110d2ab04688ac9eaa941dd84dac451c122cbeee5c1a4901714e20c40fcacb0fc34bd8601e5d7ab5f061e8a7833a43eb71198c61e759e2d85eea2b35a79e9257046a8cb47dfb4926c985a2451bdbc6d0f574cb79712685fea63d5393cae17e5ef054e1901876fafb1d444fad7071a369c0a3a6008f96556f50c4c35ecb29de3f0b93ed25e36aad52733f20d64266c11b7e278c4dc4b197b7ddf91c9d476ba9c48b74664e8175f9cca64e59e784b661544f9f5f2bcd8244c44c15b9061988b01f01d81f48ef7523ac4a6c2e6081b03aaa6ad3252e6af69c7b50dfc3da48934ff4b3602051b45b84cf0b66c4d07f93f96db354500470a8584a56f6354c9cb02bb9f1bdd0a2486779e60a576723971e8cfa5ba8b2ff0ea51a454210a1bc73173b130e8442a22939d18ef5595bfc3d7676cd6541f7d0e2ab82342153ac428c80230d2ccd83781acacba99954c63a72b517733b014058dc404321abe93c976e8b98be8c175931d65791cab8109dffaed6963ba3c1b751d51caac761cb660396c7c08b0dc6c30df4dbb60b516045c0ac6ad4de50c57e521b0f5157f44e30e6bf9df49161f1670bd3bd415c260176a3b2a2bf72242b9d5ac06fceffddae16ba49b0237155fcf6d8185143252afc50f8d08de8df4e44b770e6e14894631611b899f039fb8c7907584b06527456c1e69160ff517f85d847d61bab35830900f98568db6593e10f2474f060f034a411942a93441b9221e8bb3a3a5f3c5530bc56191816a47a8865b67a2d3caf5ca611d0f2d271e1cb23ed10b760feeef7960f530b83c2995f9ce870c4bbf8ad980190893f3b163efa746dc5f84e7281153f8667db8d881044d609c901d1ac02b1bb353cdbeecfc2bec312a0cd0940f52b4274ff97d83824cc4340dc26ad01200a90a8cb1b74f70c9f5e3febd05da3440b45484b87e9b48fef10504a44d43a441d4e5b7c848ae48966cd7a81d5325e3bd3c4bf0dbe5b64060cb0c4161054b67dab965e0978067479ae7aeae6b7c5dcabdcc6dddb554a158dda0d6de51e7aac45e8cc171e314067183b5b5956da4c6056983ba3d4824c503d52fb304b30de9eee2a1de79883c8e6132a8989318f538968fb6855bec8e1a85c109b087c43d1bc0699ae5760ee8ce7cf9a3356955c3efee02d4412d0b4929044cf09c41eb407b7c878a527afc37baed98cd04815e314439e587656f19b7903ecc7d813892c05f38b8b820030f785d66449a6ead43401d2961a2b13a4252e1858a58f907ed9a6001b6c9c325f4753dfdb966f4e4edf304ca61605993993b83a2652d9d36914fa763a01d11ea53d4d519b74bbc8f50b3034091558b0cf3724f1b5d5188643177ad6667231c4faacff0e2ac54e4591ac6e9df68820fd575d316f72a7e7a2231eea589c0c5db733171f65f0067a68387d42cab69e63750ee62104c4be27c6b8d297921710990d3ca9dee5239ce6e2351f1210d88c6caef9c9b38582422d70c73b342f30c8aeb94d4325c80344789e837ea337811f131e4cd9a0b3880becf6b1a5df2ac188fc29a04934dec44223aa4c8289a5bd7e051f012112009a128f19d7ec48a6e881ba4a65bc95a19ab647cc8a246be503d7b5b0896f4def0140825fcbb792e6c6a3706d8bc173f6a5c7bc901d002313ca9712a901c1f746261ce549594e6292f87231366da1cf29381a6feaa5d30a7d13ce7c06a65ea790511aa82a617646c99bb0e073489ce6dd6331f14e250b03943b4effdd840c867a32d28ac851ff4c997173608d0f0215169a7a902917081a83175b3d55000421db8f40d75e078d0303cca5a7783673e8450693647f6f213d540a741811b7580ff2188e615645d96fd6f20cf315e4035eeaf8e15afe0557dfba0c1275012b3c993b26456e0134def41f02c42af7e63634d7fd0c4022e030b34bd6c2eba47e1910d451c3e00699b794b05ba1c93f46e174d2371b201f9f99a4ac20b79934391a751c577e531d0c40fdb6292b442fd9d90fabba974242479900a4e7c9feb27aee6df095608d70ea286cffa02f7d902eeb3e401381d13f2f5b55be11a6baacf1aed75c1b47e2e94c7454c290bbdcbef35a977f3a299005a2ed6e292d5f7aeea0ff2f79a8abb7ad4d6d13e72abbcec3ad9f0690369cda670bb43a353c847cdae36a494614e4d6c8023f05362365835207fecfb51b53a47464ccdd2aae0b0aa106ecf33c370ff111ca1710f3b3293c33ce83a9dc8d7f38b549334ebefa4877dc97f7cee578092c1b4faca8932338495805f177b4f1d2c40cf61cd4c5e7e3f5e06d4ec444bdfaec351a98a4ca21ac4194695710eebe0fcb6291aaaeae00d1768186be6f34815047c2e3b9abae599194c6621fe48f25bd2c9d7e5366ebe0360d547543fb96c2680c9fa07d3470efc9b6dcfe2c29c2f4cd78cd846615654e6180cbebb1864f1f60113cf934cde3f2e2551da8214fb664d2900e845e28e9d67fa49f98417674b6527b96959d9c4ba5631c471454b21d598686b2d0407d2927590b27ec88beb57e96065133517e2cd6300f63495ab509070d41dcef79d8a97329a469bfc25cdd2aeee30e24ee4dcff53238717309036bfb869c933a1fd93cb49cf4dcf0e1e464db639ef6ba38ffcc157887d1f2beda59896d79b81e86bdb76b86ae7dae3b12a910b875ba10eef53360988110cbaf0319d0fb03ef2e578143d6c29974b797b4605475020033e46abbd89aaa22d232f65aac96240a6aabdc829bcee4e8167ba70207cd7017645580e06b23391c9b12d3917a8996cd020576e013930038a046a155cd7196e981adcb81d9e623224fd850e6a8339494db256a51740f360966f4c4712981827c7b50780ad356d6df0ee1a1a87eb92c601d1e1090aaa82a0b70bc22fefdd92a80175a47cf7310688a1447ca212ebe508496d854a8886a0d3e518dab2ef7331ec191c29873d5ea9bb36afe05df3705c329b9341c8098a186b9d619c0827104a21084d72b9a4126e51d3c3fd273c127c06366e770f47a4a8fdb9b19b38ca4762ebca8970c819d1f8f3437e4adf64774081db8b3c1e9ebc1ef26b60cd48ba1e56c6eb9055ff03e8751a8701bc6a43e7733eac5a2cffe3824dbf37726178496da00c5235fa1ae27201037aac3548552263e73b342f6eb34a709d5e1f6e1c8f3afbd1e84c4acfced9349978029f677704340bd60a6cdfa7053715c5879d0896af55b36f364f7e244be3359e766d13ba5bebfe9b6ffd9cc12f9a0d6d0c42b851ab735170b97f9ddc1f68acde38c6a542b19ee711d7de94aa003ad27cf7d8b3af9644109b8fda4c21dba6f595ff53ef494bb973780481aa12ade54defcdee97e55c094eb0c9d80d526bb52bf2bf06345091d730ee7aeaeeae7e1e543bd6524081466347b08ea98bd7cf9a26b0989358f520be685e2e93df711ee9a75183bd7b596b0ddf85956197efc9c04122fc80374fc9abb8f96f734feb1c9e05c73c1612127646ee8c6fe4e6c799e2a695161353f8195222675d9896c9dd00d09e738da2a085caa856d5aa52cf047dc38f4f0c95dcd721931ec4e56d98b02c6e1940e78d050596f603ab22c0ce19d015c55cf1a6a9b3c7848cf17b63bd8c1f4bfb438af47d15a3f35785acdc0d771c0bc7ee28b1d6df80040962253ffb3e7a4669b63b2b6f2f7c4a26b13a4dfb30fee23dca204449022227fd81099e3bc70a489809301cce27015e6c33a9dc5678a1f393bdf9f2933db396ee68cf38b3d5714cd39c45b37dac783f14dff0f2bc54adcc546d617bb631aba6b787743e1007c561476cc4e9f735d4af50c031edc5078bc498eae92cd40449145158b9eef94d6ff93eb299ebdb35877341f67ba002c458b5b129466b6382691f55c181f927ba57e910707355210e546c01e8fa93510bc523787b34b65ac0a63a406b1b2feeef7880721c5fcecacbcee3574ea1eab81e10a87cfe1639b156cf40c9815cd71eb0abdfe7739151d960d7b398ca821931a582641ef074bbe961cc7ad07da493b57be7619736b2904c8054c44739090e72ee34be5116277e24d00a86087adadae8449394c4d743b459f38de05cebf0c0c9db6d1925c30bbf95a9d09225560d9c31cb8524f014522abdd64ff6b6c226542e597f8767fc2b266a4d13f4965d920b75b7bbe29b23a5f17268e5149a202c8800f1baa96feeaf186d0ab4390e4bbc97e5c6ac3a4fffe587dca6f56aaa6928db30e8675b03e238872693bf3899ba6da8ca1967df35968e0f2373e19c39b6fb8d0c946fa9fbd172db13f4f90ee9d68850fc8797e7a582931ab4c5ec628d285dc06457bdea10318110e88200445eb794d81374fdf79060c97400770468fc283ca4ed7d3b891281015ba2c3a45ce76463c9cd83324367ac70e36a52ef4ed6ec2d7aa14a5e317ca3b00d99dd6914afe0eb956414937f093549f18598f21560a75c23a7178ae6c4ece7954399ace62ff51b22933c10228d9b32da1a2352283953c731577f1d384d53d9f92b3e85229d33356baa62b813e37f509d1127959c605b0dc4eaa121dc243052144151b6e6225abee6c8be9d277546daf3bc8a8dd7ca442fff8ef355e2a6e7a1fb78124b4e4d0e9ea35a5dfc4824a633eaa405bb13044875c912730e6887e647433cc82459f41b03281fcc627b640d73aa04ba5b46e15892fbde12217fbe835df90ff3a32be3355e993207f82c1c114cd0bc978a161529c5043137787d4b7da193ff87b6eba2b55e1e32e31423e936af5519e7f07a5ffd77ad31cc8b10411ce0bf92a54cc2652e9f410a35a18aa299babefc14613a3f107fbca52c6a76c8be54c4e25b9d7069fca4a7bbd2fea6a01d1cb0ed2f8461559d164c5b9b5ad733fc0a7dbe6778d8a2ebac5eee54ab23f7f0db36b614a3adca4372c08e4c68d9a1ec7b5602572558c9b9de9bd96f0552c5bdfdb8103c83cabaa467e433dfccd83d053ce6ff42d818a4eec2cd89bd57fd4913fe9fc83fdd1b6f90ca244f5062a556e3f37da13b6d396edfe28a1a1722127beb7e10b229649b7ae6b6d7e502e86633882709f09e2d4250efbe4fb42a03e765dccd06094ae7003762e9620c4113d8725522a86847254bac28913d397a8f1f03e2572b0a3dce8703a2ef3b5be8beb930c4266070226b2f83fcdda6b0ba5b31b062f8d7178f12140aacf24c297e51d20f4ad8d08b62164c76a96f3b0a2c3089b057d6820769ff68505acf3a6d0514a16ad91bd43e5a11c312c04e1e11ca2a7494ffc5dd3754afeab1035b2809ede17d0fc4c35296ef70377a91283a17371e4c9c308cc9f130236c8fa647085f14ad0a96016a1fb6cc211b3ca3885cb83f791170767c39e48b5a3ee6f308aceb90a1b4b338140e81e258083a098c1a13352361ddb735191a72cc05ce6dd42eec4589e176dd5330fc140e750b4fe1ebc5b5a7b355e91a519b90865d3aad1fbb34db8c410011122195205e92e58858c8670c4bd75cc9865e756c53163ac70d5863b85dc85c6e9a2385714f7635add098d3a80203fa047d0d5b0f360ca89da93a2f42c8a46585c5eca73e145364327649c97f20bb3d5fe40fec7bdb0be5223b535e1284da0794665663027f7f6400a270b9e0e5d52311b02f8aaa941efd44f7d119d9183cdd0231e27a6cc1dd0879facfae89e45ffa70b64615438aaa8085c2e8d2afe9d6f775fa3ea4d5c6c4accbbd326cd038072b15244d8f2b41ffa025306b675a88d473df8c020a2636a490c58590558aa2358fb03cd53afdc9df51ad5c9fb51e39d4d6dbc25dcc4b46e0a67f3beee0816a078db00c20f64c04eb2a88088b83e4a376b9b693a2633297d309b63d230d464bd35f07897a746917d36598c2b8e8de1df4999209ed2a3a9937b38b24ba52d9a24598b248f55e2e5b4d9bb69dc44a704cb6a92ef5e0399e90528c377e45ff6fa5ec0837414ee335437e12f84cdf879a90686feafbbcebda632d85ef11b5a4505fd6e21333f9bcf9dfb55a4a30d5bf3d9540578b569bc7c077737faaaf622990a21c1c5589f8d5e574ac1188705d10c75841b3e9a8beb8227c68f27b454ea4b3385b780699b68a40f445f89a83a228f5161875ea1e709c24087f541894e8f70e5996ec38ad7ba9407b6633a9978042731cfb9bad3b4b3f4d2812a7ef205b74c3556e6d2e5f5ece6916c9de230c5cb5706ddef4de0d7d18c7ce71f198f8d070482e89c77c82ef50a20e0db637f91a2249cd707e18bb4ef7630a61441f4ae05788d773eb7d55099e07000783dcc6663ceaa24a16a4c0ebfd9995702e45d9504d885ff599848a731a91eb1c4728bb824e6f15201d1b21351b2cbdac2eecae29acb5e04b7da20bbc6d6fb0a61112b742452c17846ed0961ecff2d0507b724a0860fc5d11a1866a5c1a2a2c5372304c7c2d161b14bec99cea6cf4ecae8340ca26611439b6e6cd4d340f70b67fdd78b30af2b87dc080faee824f9e3735aca389ddab03238a51693dcb26198a6281a6ef3d8350052ed549509b4cb8ef11fc776fe0cb2c78dc7683c321f233ef5a53c65a54eafae4133c020b181195dafc7b9a790c2cca1b9c6482a0d9d5cababab85c184490c11504b8221f3e4b55f9aaf062b3315a8cc6642983b4898f64b523166dd766e5fa1309a0ba4d5b1ba4b1c259a52bd8c6eb2bf9854ce6937106b3848d8d776bbd60ffb1801d97576c71fdd5901fb5af0f48bc97755052f498d30aa03bc46e0c8e81c582c8c1dc93209cfe067372472af83fd74d42731eed17ceb0e9ae7de0cba8698eea619416b32b44a1dcda5c0f36ae46fec7704027f08532bc4da5fa9ce003ae93867be82fa5b7fe3869b6bee779ad6ec8507f6ac6488926de9010ed72f9329e1573cf42eb720ce2c55502be1ba15c8510d863e2cdf1b95c111002cfaed922424b99b67e1b8f3fa215580b9b6a85724bf6045924af3e7a1ebd18f233439886ce60d44a2732f95f67a1919aa1751b37378eb64485cfbf6214f70374d88480d3ae7ae39d0560f31fd23e0de2512c2c468114b7403077fad700f59f7a9d932b4cd1a3468bd8bf97741ce528f2310a426f9f344ac9dba51132163d4065a29082e68a822241110ec7053eacbed56cc8a85c885efda8e316a0e31cebd767a1150b6bbdcc8ff400750c9bada2066eb1fd9753b61aa3eeaed879b6c1b99627678042146395dfb022c55fc072f7eb27bf607a69acf4d58f3c09eceeab4ce05a9d799f3725b8f3a5b7425a208b4256bdfa64ca3cf16c7c09eea0ab3c7af9db178b1d6ba879dbd624b1a796ceab66f98e632208a80d5decd66f7b7e234ec85b842d496a23285707ebb6cffcd0ab479555e1298b72432aad10d708ff5ad575a9917b0e251ce5dbad4f9b31e43e953911d747e20cea7455a5dff4beb57b8a1a3f63a7256f62fe7b777c34c19a985a25e2837eb3984449e79beb013a41e4aee965223c925e59b6357df5d8dbce34f012dfe75f87fffd8648bda66e01fca9983cd0f38971dd9b79eda3c253732d8b786e5e094c7da47f57e2b72b3cd3c93140877ddbc99e7837c3959d9bdc2595f0b77062802c071c317953a17e293d72fdf925d5cd442592d8cb7412390c428df0bfb3693ad6ae6ce7bcf69c0d56798e20cf8e95df8be95165baea88c73c62811d41f4ea19dbd16f74729a428b465c255ddc56d03e543d5af4923925041222df388bd882139c47fa5ed4736f0eee2b74c5e7986995e809caafd761d7c39302b215024dd66f7ec060a78e4f77ecfad22eddc54c6a16753a37f3550d920c140c2c4ef42d4a5cce8a1889f4ad9d30925d6791731d4f36d87719944981028c6cde5a0876c316b85d3c7f1daa223ee6c0ad5d8dc60f203a7a3dd35ca52cf3efb6c37751db6f37854436aedea3aabbaedf4949aee82b7984d354a5d7f9b0daa37cd62be4f9431cc75be154a1d4a538b780e28a5549a32ffab9eb4ebf008a331c4f917c16f95d7efac6e633e4b993c0b8607888ca43801d6cfacddcb11bbdf33419243011299021426844cdcb4bbe936655dd342e12eb339c0b508053bd875b36fe494a7f09cad5c9183000478d4bf5639c0b0b04c04c1b003903f993be019e86384999c7a7f9f203a6e31db6cadadf4acf80c3a20e400d7fa596cb6dda90447fe8d721405f8adb5ebbe80da39124a137ef10844ac2e488cd1f6f9a1616b10f08c444ab513f6a6f85c9c23e68ef6ce3efe9078d7830e1a3caafe73b54c17e5aa0a6778c420fc9b26ca3aa6106bdf6eadcdb3e7fb53fa2d7c66a6c60b2fa0b93dcabe532620fc137dbf97438f70c68e4923640b5d647244464e613f30bac374e9fa7fd9a996c10849887da6f952f7b4a09d0861265eed0e6646764d1fdddb532151f105b89b1eb160751465ba8e65a920a5393fb91fbcfa3da53c10fb4460e14c9cb0c08da1bb40298c6dda9521572f0e1d1e1c1e2b05e99a4e0425c72624e538553e20c8ec66bf2f06ab84aceb84875f8b7a13020e144fe4c1f95e09c7240a8191551fc17ca49873709760cf8bc18ad6bf613cf2260f14c60f262b917969ad08267ddc0eebab180538e79257d33a79a48746ecad0799c327af213187e4d189779ca117470d2d7a3b7163936bcf6e6c3e8ce6377ed696b017fbb548d8c464f760aceb231afc54fcbbdf77577294e66b1a82e9722942f677c0c39a3c974509925b183752b7f74c824c48d52b6c26ab11e6bac3cf4407086e703fb84efce4d13b26a64c2fe015c664f77845573b7cd91f3d4deec393d224005d56f47b9b428e09deff4fc842a30bf60bf8e2d16d9ccc72791f42576b025f0ff568eed1c40857e8ef4d55a1e669ce8ba0ad7674774c15e59e802e197ce7f1f0a9402838cda76888b6de83cb2ff6aa43354e50a38dea12ae84593e6e28fe388b495eda62d21850902dae53bfe3b666c57d9dd75399fa64ba3e22233c05bd85dccb6cce610f3e52c2cd8826199f00f6e7ea9e6c4dbc13d8d49eb3b0aefecc094c94fcbd2e554ba41f2143efaaf7f2bb33f3cfbaea76ca696312122e46a80d8f2a42c09e89454aeacbdf30cbb1e5ea4d0eac1a8d8a8cd1cc5d71012f7c0b2c0ef974a71cf15b6675bc62302bf8f4e6671ef019e5fbce26a5c73cfff307f40e1a7980cc4abf3de5aec3cc86100252934cca592620a87f3cb2c7531dd2adb42a5c6ca5062d5c8505167baf4bc1194068f8a12c6f0a60c4831fae4208a2c3e8f0c5b847bd6d94196a613d6101cf9502231cd05dbbfab5812185cdc37abd51407c26a766ace8c46dbc43d287ab0f178e208dd3975853bea23223bf742c49388d42cfff2e7177d28e260cf8378cbad06a75c68e9df0ea6479333f35bb397820ac12047e9394382e89644c51433c921b4bf48e4528dc47f175658402bc3b26c0a553a5a615d6f25970af7debf14b717831479e399a25d88280a2bc9db5693cd1ce74332357af2c2237c6ec71557990cf984b3c76971cfa9919beaaece107140e912c54272fb710e9b81c7e37efd27d4099f15d1ac28d3b69325e40cba3d4a3a19ded3fd2e31dee35fa2c87517f118b8f587fbac4f772092c641183dc1e6d2296de8f9a8736af014ff4bddb1527172af22e564eaeb113534302a9b7c0ea3672d8bbf53f12ad4eb8a4153b7e289ca91a66298d10209dbb47dae92718079103eb5cce02eb53e208b4d3902cefc9f2780f5e85cdd00754dadeaf9df18275c8703a602ef68827b521063381087213eb3b63a77906db67ca0fa797376650e9fa1e66f7802d7529a154de8ba28d7100cdc427b01830401640c63176486803b593a7ca2e95d98cd9b8c3a7f50800de9cf10e1303765e971cab953737ee9457766dc8c98e694fdce30bdf0abec527c21813a065e0fe5f2ad4ff4030bb1a6ef485921cfbac8f109ef58b2d284e97c9872e0606c5319e78a0c8eb2f675b19172b604cfe52f70ddf3a3aa323d1f0438b6475ba88559ad0f26db4f83c318728331d2c0d0f095ec078a498d5e082a34a008e7a47ff515d4d7e88f4270dfb66bf45d013ea6019e1f29ada4893d213aba1fb48c863c5be505e1ab19e29a81bfb9eebe281ac778b41d53019964cf0c8f735a6fc634caf8ce4940dd767ac860a14915b4a4ead0a9d5777742bc2588d92c1a4b0cdfb9bd12e1faf9c3068be90fe3ad020233901a1bbc29f952773838560f78c5dcc6eff2d914aca5cdf0d336444ec1cca5656dad7e2833326098041b28becfa9a6b3c9c9e99191630e885b68cef7dc003db52a670831e20f106e8090a6c942eb6b30eaaeb9ad0f2212d2d4c5fb53f05a1df46968303b8acf55a92b4bb33d4cec275d9ded49f53d76e813dde1d13d861372a85316a2c8f5c791a8a0eb2e04e044a4b35265c7a09a7f3266c05813f8d4162490d1d47c55d3a708120d36001572fabd8c2040043de8de891e086787ed11d7e3118432b81248501c611d2f91c63967a0ff48f96d765449f43c41dc70c2eda1e03796c04aa47b1dd7c64905bd036124b73a1a01942f034a2816705a20cec24a079d0e0e5889797419f8857ce0caafe084fe7efef64f02aeb1a0fcb1bbfb9785e5cc2173fd6bea4a6868dc4970b01b3991e4630360a1a68aa26781203857e92328f8b2732fbfc2892e5a9384ecbd09917b6f99524a017606c6069f07301ab087ed0b3d8c46c71c06fb5dd8af9922ab4648fb2c0c464545a689f0b6e73cee7b37f76eebf6411d2deebd754792adf73850476b2bf2afcc3db3bec592d2ffb503ed64dd386e999979b9df4dcc31eb5e72b3e3e4b6bcedca5d76264f8ad7e2b28cf7babbdb84ca7d3310ae1c87f35c50c7bcf541ff481abf5e823a80d0fa7ddff77d6394202b2716bd1e7ca06e105e0fbefe0b9d66d8fc8d38ca7af3deac7d5a149a821eb984b8c7d98ad439e158cbd97e07f79bc838af818cae55192152570dc41bdc01ce03794e4fe388b38ed1b709698b2042c7663c6fa1bc234884116684b379a8283bd6e2eb15b6de157eebfb40d60ec1016bd6aca9df4356a18ec140e77793e3faa863fe43ce718f21a1a1203ed4c3879b99c160b01b1572daa5a66da0db2d116159a8382e95081d5be25f5187c728c57106b50f6f36e2bc7931c88af66e906f06acfe2c8ddf95f002b8f274c1c2dd19e1ee06ea60673292f1bdc10f073fe3c759c1dfe620dc209c35cfab47a4c609c75ac529ea5e46b8cf20ce7b2cea046de57ec7564eac57b5da85a390da79ce6b50ab5d38a4a96a10226d354774258ee3e277137ec76c1e66f36df3b2b109b7a76108641da72b1c259871c768a7fa6f22344f7f10ebe78f3b25c214833a26d475b0eeb8eb1e369bb339e7d2d2d2d24e69d0e0557bad321fe9139c68121284d5faa2edd71be2faeffb8ffce77b90e82988ffb87ec68ed683398b92415d19f7ca674b73893a42e0f731336f9be46dacd55d21495c24240297f6dbdbdbdb3b7e902b9811d1d155ced1ffff1191d11591d111d1118d2b222b23ab23242ba2abffabbfba6a6af567b5becdbdbf90ff74ef2f9d26cf28deebdedeebeeee2ed4834aa8c790d090081d731ad5ddbdddbdfdfd3bce7b73e2511775ea15cda9fcbf8d5f7120a11b55e576524a29e5a6c43a956ce2254c78093731efaee4f52e2ec5853ee552de45caa7a438eaf0e8ca75abbeb436fa39b19f78894f6dbc2ec5719ce4bc4bc7fab940718182e202d53e7e2309da715f4f61bed257bafb4a3ff5d6577ab7aff4e852cea5a7b47371a9daef5cfae98979093bb804a8b31fea2c8b65ebd741e9b3715f7a72cbb1c96df36df3ddb027078e179879977777993f6e4de16f3b96cbd97706008202712c5227974b8c798cfb421dcec7d61bc12ac76df5852e1708be5cf45f0f12515104855cffbd055e50d5ffdbda2190bdfa00ac8e44d508567d3a4febbfb025c63a26c17069b2f691f102b8f77751d631e9524a96df8345dcb7604644232f77e0bd371ac1aa7f91ffe621b77307fedcc1b666cd237f630be6e8a494524a29e54c4a8ee38d67409c434ac9cc2ca54b295d82e1eec8d9aea71bb57778f5df9ddee716c0b5fbdd9ded8dcaeda2cc9dfd061054b2dcb93d3467b3d96ce5dcf9a3632c472661c666aaa4ff8edcf9bb33da34d55e1b26364c5d68b3c48689894df75db7dc87a92b72d5d77eb67af06b34ae13bb8fdb3eb146db7e47095de7e96c986c98fa6d96b44fd77e1b26edc33d94f378d0e07fcfedf7180079691d03deaf8d5e9b250c6645aeea585bcd5f1b26ab662bae623055555673bbadb2b26152c554bbbbd4fee72aae62ae6271a45572da34b18e903110bd632bf752284804111aa0f4b4d980c93eeb9352e729b57989eb00d4d0a11fdcdcdc1d827d399f96fce8ad92b40db776770f394fe380c201f918faf1a3bd7d0ef5d00fdf6d877eac94de54f287aaaaaab68a2e7933786b02ba4b4421b50498244b44b1c493845aaf4381a5b5742cc04bce2354c4799a4a0f5108159d0974db0bd98488cf494bebbed3d9664645384989938894ba93b6efcda527291d2529b54f7f23b50f735292f75c62ee095bff35eb6b75c3d66f61eb39dc9698c35b16b78502b87f76ace7fc5100cd975efed6221dd67ad0628eb5d1d3c2fe30c08789238ea8e35a8d33080630604e3a6f4441f7d9a348d81f44cb85c8d7776eef4a4d79b7b856f388d971bbbbbb1b14192ccb56e8a945fc2c1652d75638bba05c59217011cb4d8787fff63bfc37f14be0ba7d8be5e489b2f6d39eee39668e7997777799d959dd7d315708e7dd7b55dde7362d74dbe64686762fb9d9719213e3ecb22ad589f540cd12c511c963dc0e94fbc989cde3ef5372322b590fc7a26cb63377776eb9979739e6ee2198a8edde1d7925d5e6bc59adefffd13e45435e0ffe102a3d5eaf44e442eb01abbeb8a9d1ec0d2f5147c8f53a3dc0e787f5ae580436570fc76710f6bfd043d6ef58ab9b8f1f2404394fbf2b5c5f5a2bdcba81e1d2380c8184f56cdae250f71c9d1db7df064d7cb0e14c165b48e0e9f06f875f980026ba28740143112c44b658d17ea491210a244e50c1428ab6bbbf3b2b16c946e06dfdf96744421d5f013150231288c410c8fa5550f0a32cca62ef14e6d36538509721e054ff8fe61dc3f232ffa9c1b0c4952f2be06206633cd1e1b483982564b0c882865653a18a2f4fb0e041064fd4508226222f3c3922451854b419e5a7088d245ad338819600261a441762b6e080e50c184cd0988b344c38a104102b64c181c64ff9616728fdb9aa5123e66ddf7ae0aa2da41631ebbdfe9e7edf16bad5f1ab2d2b8f0c02f7db3196c8485db79caed20cfd3acafc67042838810aa8a622a0b8d0fa480bb8d0c10827507ca8422380132f0051e5042c663852c322832d686090064a6a0b5ab7b02db1de262c42c5c56158cf51fd7ddf5b3575233f75cb49df7fdffff8be0fcd4ec16654169b7317e8fbdfef0b53e78ffe048a5dd09738caea4f234bf94f6c7958cf2c66fd93047538d9bcc7415201a66a807a7dfc7ddf074ae0eb3854c16729a6627e96ea1fd7127701c3cf55e0547e36c3cf67180d3fab797ddff77d3bbe020942bfd7a1f4f59ea57f8a482b1ac8742153f9fda97f6066fc0a97f689ea9f22ae27a929aaf62940e57726da67a768a8a2f27b9583e177ab7e7ddff741d19daa21aa82ff1564a9b5c1ef74f3389628283a293ded46e4a9e6e167d5fe1677e1a98eb1c8524bf83d2f64fde7f1671336d1bef06babd562ed0f50982a4f5078028a48175aeb61fb53c3a2e5892b544e38796181d6faddd6cf6db5586a4a3e5556aa1c35fad3d26b8bb73b5c1b88104e87e33677777777afdc26a5949243e81a0a0f067bd9a572a1f8046842c7492985edc872d088f5cca2a4a6e6d756f8b382ca2fa14770c94356094a406ee309bc4ad9dcebbdb1ec96524a29d5c8624b3ce9aa8eb09a43b7d0f1cbc9c9a111eb01fa1ab31c75939aeaf2514f3ab2b31ef4ce7ad073c2601f4257c55d1b1c182d98923aae733f41959dc81b73d93d1776389a50e57bb79d2f27a5d34f203afc41e0da75864edc3327d203284924a49414f6b3a9e3caa9a0fdc736362908b10a44486d1a474971773717326da9b8ddca92e4a8e6cc82facb2072673b5277777372e5dc29a463dd494a3f545463ae6c6826b01e4c0007116e9aedcc646e1b9a202ba7f49d1cc599c9fcdcfd83a0e91fda37b6aae3a4b02db3937c93ce56a2575757bd396feedefdb3997298ba99e655fbdc52904bce5445d5239bc9a44b297b65cbf6ee656e666ea6f22ec6e872d8a0389396dd76767777e666e66626306a7b671f0005f1524aa95ca00f82a40771d36eee6eee4f06e62a66287a7aa89a28a52abb6c25c7706f5fdf755f77f75d1f327777676e666e9641c6d42d5f61dadddd999b999bc5f897deddcccdcccd4a5d0e5b0e1b949c9c28e666e6e628ff6226c70c6856038837de80663ccb0104d4fc838804a3a195ddddcd4ae29b8cf5b43337b73333333373f3f7ccdc67de2ceb61667ee666e666217677767c7e999b999ba19ab9a7999bff6689282c6f000ba827a530d8733f1537594a4a4a3a41842112a42c555e30959939acc011abd0dd7d3b1c6b9595462f9ccecccccc5eb8340a7b1a2f6d99e536039ab5ec6eef5eb940ebfcdcc44fed33c5dddd9bf9caecefe99939b8e1856ebf1c333333333333d32a951b0c0598e1967f179662f1144b318b99ac074d888efce7fb21b8c0b4502a95a5384b49b94230fcc239596a3d70d120436db8c5023d10f4c0f97d727aa0f716a0a2055e22fdef87bcde0543c3521cc4feb013555cc553e4aad70ff99efe10d7bfdee63dc926943af37bbcde254e80d2773d2854c4c81b112a62848a6fe4e5a22b240a127356622e43688151a92e859754ff25d63318a3b19fc53a62f91fb9b39ce52c3f2232ba22323a6239d191134919491d214931d1552c7615bbba32d3d566db9cf18de2a66fc7519ad6eac9c7faae8be2908feead1a5a1bfdcb8469a8aa4989a9a9a9a949a98ababbbbbb2b24a9c8900f1264b1a029dfb068f367f0c6dbc25148dd18673f676b759b7227168bc5aa96ccaaa9e289a2ac6f89e34769b38f2ae67e4355357c0cfda88afd686a6a6afa31e4a36ac8c78fa11fb2aa213a54d5d454d5545515f56406a7e22691f3152ecb1533504657b25c11b50fd7c9f302dafa11666333250ad1150765cc983ce3f5325e49aa06dfde0fec6703193fceea72fd06212c9c394fff109521ca9b1ba9c1cdb66d9bfb2671723c1cd2547342a4ade2c88e754c36a3fbcd689853c7bde2244cc4f302da12c79c3ac258221b9d214222c7eeaecf7aebadb72322a32b22a3a38de808e88ae8a80a8634447475c5af5c5df12baa9c76f5e01dd7c3711c3767cc0705fe31ffe997f5ca8de5ca1613ee9a767b3d90dfb4eeee0470de0e0e30a107c3190830d8149b2abe48b2aecc49be6c1f9fbc62c454af3fde9f3d62a93ff091a4f657c1576ea8e39734039719a254b0d2967d3622b5dddd7f47573faa4872c78aa9fccbe2ec41c5c5759e6f9e5e2c7e36f00517637e50a3c44c0e34116490020c9e9c5c184384d6dd09e12d6884bfe4c26f19946119ea5cf77d044f32b7cfbdb75dd7dd89e37e095cabfe5be8bf4ef3739a879f73243fed580f3925f0f085081b64a0449627de8a0c284c31b28408121affc73aea0af0882da4d3e34046163a7eed35b46d3ca1f259efcded37bcd0af1068e2c80a585600420b18224823a587291da86471c56374023fd1041a95222307a3055392d12691821924d5297ec00324af45ad47f2cacf7a8f7545b9b65aecbd7b21ccdfdfb13f45afde6cfd0c29d2563b9146c76037b2f4cf723a27e784102011f58220d094b1020a9a16a0b4900393941453b4feef8fcd1cbc0d8810657444924febb675635ffefdd83edd87790e9efc1cf187068df6019db675031441c7a7f265fc33fe8fb511bb321668095e8bbc56e76ddb37df6bb55ce1f69ef75f0886e128a4ee17b63644eafaad19ce1008af59b3664d1d6b3b1dc3d1847e182cb268ea210c2d5b90d0d806344d5e70e5e58a16a0a0f1efe46d89fbf847e0d1cbe258a08ec971dc823f591c377fe4388e9b1cab9bb3637120f8afdf401d2f8f2b70a47a0fba7a74ccfb97f7ae1f5f2fef5fe2f8d5f5bcfb7abdc4d1f5e07b2e7e90ff63ef85da07fcef5de02734f48922748cff8c0f24fe39619b6fe1c8bfa20e6ce44aa363fc3ffca7264586a51f5e4015059927b415e3258a20c8a4a08b2d41d0f885865e4c7df076677bfe20fe23dfdb429dfded972643eee55b60fe268a4358defe707025d603a48495a5de238e5279876c3f5f864358dfc9e71e03db4f2a3db69fa2cefe76e110f99ca8b3535362a254198105c90c34580c473811c55496a81a36c949de720b6f777eb2a0bf6458e92888d1a46f01f92e69cfdfefd109a30fdb96a580fe02a1448b105da6f8f2250bad5df01286852d56d8220634b4fe9d1cd2b5c1b28bc7bf3bbbcb01c93d776d34a089d7d33ef29b71fbd7d33e630ed9e21c620c949835582001838d160c41e405342f8471268c8ef1bb4f9ffdb0feed9f34785e2d567999fbf34f4a969b4b87476571bc409d5478511d7b4971cb6ddb36261cd74d281db08d4b8df23c5007ec0375c068c7c23147060d74a4513aa4ead60c10857654ddb1355597353b6e73b9d8b5325c634d87c78c6a535b1c3950abeafeb6ed6fe08e29ab368f95a3a3037774386e97ba3fbdf975c88271abd5dacdb5dcc148ebb2be1b26ca0277b0f65bddddddb52cbcd4f23e0ffcc0d981dc06822028416f061700aeb104d5c558cf00ced0b1a767264ed5fd761850314945ea6a05161fa05861460c1a922e5005981f946c40e108171afff24f0f8a97b5254fb43843268c24aa2fec059429767082a48b134dde4b4b2dcbd392192c6a564822a586e40a27a92d62c084164c30e1f18eae085042796e800a628a181958e9729454a5062952383c01066f1391ed7fe5d8fe6cdc921953a5091d9a7ce142191d4d5990542951418c20ba703acf3eb785b15026b4dc0d03f7961c6cebe742202600e169002eecc50644f0c3f8772af175abbc3efc5ceb6cc8957a3713c6a16652e69f302b74a4d5a351a37d3a07b6f3de0642d0ad11896246490a5f9cc810d1419a224ab64461815314099e92445d7183164c98a868d2e187309ea4989cf4f69649c117464ca1e0490d5d9ea460050baa389284122b767b9c2a5d1d21f960dd2a501b4183126084704a228ca9143ce143154638a912a6055778bb138018c48821c45598316ad4d440eb2d549254493ac207275a3fed87d552f0c518576bb48872a18b23be70a2a4431659ce3cc10fe35ffe6924db38e92648d92c003228a022713765b438524493224ba664d4d3121ec43c4963c57700013f8c7f8d02a0258c142a294d588185c65310d14107196e1023860f788f04172829446145ca1315377021a50b162c5439020a8d7ff927087a7bc5f840d5a62c59e2062d5fbc508184c62f043106922bae4c4186c64f74b1a4872d569044191a077420a287215cd04313332378dd401ff0d48255172546a831c2a40523a42873050e52a468698a8c918598334f10e1c50601c6952d479ac8600505bc827eeed25dc3c59d5814dd8979b7387906cc56fb3ce55cf6596aca3e6799edee9252dddd5d3064ea7e10333533e128fb41fc6769483dba59a7dbe7fb20f863fcf4841a961fbc3c89210517525c416315d668e1c40718be709ab2544b42010a199ac4acc0c8921d226298a1082d509e589841c50853154d46b48c792985c1a40417279eecc74a388a326286c9551229581ce550068a1454584a03f52f3069a18b28b640edd06450a024c91054656e48a28b24351c69c2821ec2c812e64bd31543249d01631f26822f42f0b0f4e504235fca487169b282253088a85014802c505145a001e2c9548d19b84085252e3481839a08745133450ba817c028e322d2650b31495ee02109c9db9d1b52e853d8cecf80b73bdd228d3acf972d49a89c547171a40c8dc348618111399051d3021affc754b03e6441424a150d2ee49006cb155140d952658c9125bb33fd0067c600428c92169840e28126b808838553920d6368cc636dcb115f5459192106aa0c6d9fa47ce143176028a939523bf2c58814667488a2660a087c214673b382b739e79ccf2cba5027ee079c92a8c9e2b6fd722a7fcf4fe37bfffd3c4f6c85e3c60a61a10ef7b272393424751d763bc9fdb6cfedae381a75dceeee6eb76d5be77289305fd1fbc0b592f56cdf77ad70e6748c5920277e40b62b8ecbbd64715dd775ddfc6eeb58531c856a2716ed17c9e7b871c551268ebb2f7138912bbf9617dd73674ef798b3c3fecdf9b27f766e658923eb65f040a728c59f322350fb6c536edb16823feb77f8d7ea9cf2b9ef6ab5b995a253eb5b22ac73b834deb6beca45f337ecde2bda9145832b771d0b74a4b0f6e11c1a53dc7eacd52eecc465fe183fe587455dada0440b2f62e800c50c3440260a891a94c240620cd7b1621caca1deb736f8773d0e8ca0523fb27938f042f74129b21ea8d78614747c56a8d3fdac21ee58b975415f62bb2d38d5c6c1843907b908f44154f7412c96330deee06954ff01721abc80c951fe63d79146e54dfcb5116b1e5e40b81dccdaaa31b9899db8e2071deb9f951381b06c6278b11a3bfe3dd6aa8f22a8cd108a582c166b6eb5eacfb933bb151878e26824abadefede9f75a40b87adf216f6fc7de09fa39727c3ccef13f719be7f33acf6bbdb3def33ccf33a1cef7c271639a0f84eb94eb846a200aa613d24c09838688da0c2c5cb1548507335167683c0417303b80015565cc0f566871a40a19682073048b9d408045d07f193dc810f6638b300f8b7a47fff61ef6cb20374e375228ffd651264324affddb07997256242fea9723b408ebd8263ee730a6b1b34edbc1b1c28e0c2251377421051a158cd927beec30a6ca1a29860043e397cd2467b5edf7e8d80e756cbfc7898ecbc450057969bb3a1368dac837ce00ed07edcbf667564c54a1a1d3cfb57f96a6d3e20d2ff667fbb117a868480fc012f9fec926fb407f7660bccca596048929c67c21c30a338c41e3c00b0c2a38a1050a0c5068fcb2a82bc87891821037d0f809258c40c19234505a20a1f1376f5b3c6e652c507e0eb61b08fcdb6fdcf672ebba35ddfc1dd299dbbe0bb76d73626db2eec4d1e4fb63dd4df41052eb21a4b6925ba2dbcbbaedcbae464ceee060429f99e592c7624fc7589664ec798e2b92dfcf8d30cad2c89652226dd2fbe5f6344bffe1e62bde7f826401f5c316458e58c1131aa350c4911c7870c116595841e3a7b01bbcddd9b6ffba3ecebf6d329c2f9bedff7e2c0787d2bae0440a1469b834c9c2a5823552699cc68c1185b6fffbb16d2d56e07e7580424340419e8321703be35e5c1407f6047d5e8bee7bae3008e883200ed4b11b080205f1ecb69f9fc85a66392b1c69e8a1bf0cb75f50023a3c44252a340414d48de1bdc422718bf8a558b4bd73918b5fc7645b282bf1605668cf2cc707e2a42c67f375b8dfbab1bef55ef87d32de1bb9e6fcfcdac7f594fecdd3df7a238e37efddc8e081be7ec11df4666c7923787f234e2aee8da820d90cc92b9511ee84b1cfc1019148aa5f77cacb14551cb9de6cf0a3f3b0dffee1e05daf136ef3b87e9b07268eb3e2fc06e1368f4bd4e161f32e7194f1fb337e411034b879ef46748523ad2efa74a76335e88f3b35d631c6619c671c9b1f6f5ec6dbfc5617cebb705ec6cf9811da841a843a2180bf0ffe3e0ef8f4bdfe70c21a3838e288e4b21d282f28819b1b1d1e383feebb1ee7b7d2d75397b81dcb11c76fa76bb86edef52008e2e0e0fc0eef71be566938ca4a5f37378f436f429b5f706b756d5c4f5dff0ac7a3eaea1e0ce7b7c29182f040eeb1c211492e272e8e16d0070a92cd26ac41229ec7157122d2c6ed76ee2292ac45dcbb3fc771727fecdf8ab697dbcbe7c4227f1edbff2616f5fbfbfb161b07b3425f06e4bd42da31df699fad3de04bfcb6822028e6746c0321e83873e6e751013e17debcbe7d3c195c28cef7b76470a1e0f7b7fef3e9e6013ece4d48c3d9b1d74b1cc16f89db311b719c558e00bef75e2a17e654cf1b5f620876b45ec73e0dc7a34adfe33e2e348013753d0d912475895bc4a247bfdfc2223a02158b582cd2e1f15b59dc8e7defbd0e4fdcca5578e158abde37a8c3a3ef51512784d6d3dfd17afab50a86a3aca07c815cab1c3215dcc1f76028c3f1a87eac6f85932580ba853b758452951df316d0af32ff993b950db39c6c5d8d36fdc748cd488d266b349d0970df7d0fce5f480ff99b28a4a1bcdf80887e6eb6473989be2c8aca0a4890ea3f9ad055174711d4ba6e72ca6240b777b1c8fff37fcff9b21591eb3372d5f1ef97bf5289929084152f447a28e2c51ada4e91840bcc34e1248c1c54a05dc089195018430542a4608596e5cb093a8c41c60b2824fedcef906d08951edbcb1fd23d063ab131b089e2d2a89a072f3d90a99dfc8d7b3f43b9f27b7b91fceebb0fe1bd7b2e44f2dac91a1d63b9d301276bb8585305c50a62a0c4b0a58c0d2e88c1520cb2c98e86db3fdcf981b6079dbfa8848ef7a31a2a44368380200123150000180c080503029168401c85a2b47d140010818c426c48164aa46116a3414a39030c01048008008800c8400dd20e70b7cac5c7e5b16ac6b9267016a00a732f52813eefd2ef8b07dc574cb4c391fa7652eb888e1dccee86410de60448850f8985175dd12e9b92d863c5d74038a3537bdc79bbdc00175d456b5c962c5c740fc256a98a8c15a78e5a0a6665e438152e18b110b22dfe9f7bdcc36c5e191552ba22a4f8e30abc8ccc2b929aa3a52e93c5221815b61968575457534155ce6b6986c7e24d483580e06dba886dae928b07cb85c73e17c351cb68c6bff58ab1b177fb2da9041292fee536f41b52e9192b80bd4ba93669322afb5f086f60bdc512aa568180445959940cbeac1d75f984b415832cb4a318b1a36a1b8950aa385262d5133d247f0978febc704a15d5e750a876941850159381d1d3efef4ad6a0d9b3aada1e61c42c6262b6a54c00bfd406bced2630a009b344d20ff4d1b76a5d7abd7c66746458c9da96985dc445f7c5705f19f2c8360586ad890bc0dc93caeb6ca77f42a1ac90502452da5d4a38acc5f32f344dabdd573a257235856139fc90c093ff93e04756c587d817c2fbf52ed2e082360f78336c6379cea95c1338d2e152cef68c081ca9a836cc405fd2dfb2eac3698ed46e448ba232c1aeb372fbb0945f2f3d672f768c49f90715b2abc4a69c621321689bfe6e368c200d6ce8aa0155ffa746137b99a6c356064c46b6d27a7bdf077bd86497bfaaca51adbcbca73713174fdaf03ffe8b164966916c5996cc68e5e5de61fc10237467f7276f4ad2aa7712a703253398c8d8bea52beac0a95ff9f6aab53e49b749453681a2b26f4831510b7104d376c1ce986383287d53ce7228877e5b20365516e53c1ddd56d9ee6e1b9c515276befaaad007a4395968d79b4f8b50cf2ad7c5d522cc45296baf521ec46059c7de6e47bc6fa10cc761e4495df9ae38a6ace7ce312455cdbce62abffc65433b4a28bdd87947bed0a59c53dd9851efdd1e1d2a334af18597d06e1359d32cdd11e5a3c2575f21344b824e0b11fc6cfa45f30a4625a79fd92f7afffba66267c2be148448f11ed9bd0d5095aa7d4f7984e6b306e603a7a6f8048a2ca83152e2eb403418384b089d62889bac320a9401efc6be5f7c693db4687f320ebc3eb40d0bcf5c56c0aca02ca19170e760af31d1d7458db45f22cd77d1d362d4fe459cacaa0a574cb71a82d982ef0174cfe9a43b0b8771947ac4614b9b79d41fb74b50a99fe86189269943ba98cc225de0cd912eca26df426ee1983e10f6cd831a22533f28f9f8249ae60e1cdc843f9252fd484ad406555ada5160c010acd2bba7d030dd784755ca7cf23eda3d704b70e438626cbfbad6b0d216fb5b3da91730bcd37b5d5509c6f209857ef1e3c65cb6e89596efa05633fb585646c731607a6ab107eca266df8e41e27fd113756d124f9984c973ce19247b35c204390d149b5f23b5731e5ae0352a8d466934d519ebe5fd2bdda131d8f7372dc352b6d2bd86d8ca154a2e065a63ca08b72c03a90bb83405ecf71d7b39b78a2b42f92741feec1aa467b597985e28fae05aa84ce1da125d0975a6fc941aa8a9edc4db05c9845655d79e5fbb5fb2ad13086d5d4d412d896e92daf3d735032223365175e7d369fef150c72482f1396ed8231eee73b0d1886d50c8ac8374d9c98e260d85268ab2fe0c5c30ad85d60591f44fbe1232f95308eef0e3882bb8b2926073bffafabc1ac482eb9ab5c44df81a1fd5c16fa649150dfb6e25e00c22d026e284aa7e0d847a4f5db78c0140819539403ce8045b472b61f50557cec9746fdda4b4bf67f09fb61b1f6de43955f3fe58217135a06022dea638442694237e270d3c35f2289f34db282f8a020faafb761e9c10e3717956677eb5ebc5c0d2aca1d100257a471d8ea3c3d2a4164433dc20086eabe5b7aaa751a032c0eacd0167555489c6ca510b8626d40a9a2c143f026de9fa1d71371dfb2ee113894558d828173e6e6fa117cde76fc845a887ea0305f9fe523fda27790da90daafaa911b0d43628bf0381963f446b2a09f21cf819c8c62b79784e4ccea26500c73617f3a2c585f3b52af09a28ae9b21ed24614c2c2093a0b31953cf8c06ab51c6d338bb70313e00a61597d9014f837e464f75efbae1a2167a58cf9f6a92eea369d46483d6fff3f547c611154a7efa8fd4c26a036524175692f533ce980a95b28bc6318d81311de5c116d7d590be9e3337ee3cd2715de86f8426c20b3abe31d5fb47935f2c1dd57a47ff197c0c88fb87340193d564997ebf892bde409615084d87bb88114daed9081e124f70bd316ad41782856e0de16a24296570d33fd016bfd23924cc1a31ffbc8c1f0cadd586ed1ae3e1b8cd7ea1b7bdceca7b886cc8f87fd4f8a9b79ea5d8098e6c5e8f8cae319d92c7ef6e5d9372ce86110f3c63e8a744f1059ab6354eb55cf9456aa01ced2e36303872b00eaa6559472f4f2a6412bb98b75561be11da102114990c1c59356de57ebb9966b22bdbd63ec618d816270de5dbc089a66a859ebf6a65fdac6460f70fc1c6dbdb3cebbc74b42eac7462f6b5ac79769db233923471134404189578cd762e53228d37c11f54e3a51eaf9ed584c7d0fab13e8362e60347544ade70ad32410597e6ad4cef6f9b2d6b9495b6bc51c5bc7d16c0755f0ecef11b5e5a83ae20f39a42f2c61457f8b66037b8695c74b1cb1061b454aa5d0c3f71d1e3d24524a06aad67afd4f1011ef831e7152a1a9342c20ce652fbc1d182d1dca6f6d120af82f115fafdaedad776abcc8e9ae7fdb3fe47778f838ff225166aeeb7b5cdece2b383542a4745e7d9985431270123aba27416bf0c68f4b017e5958cc9597f991f914307bae7624339e87d54d5052634743cee9475694a8b8230fca6b2ac5498c75cd07cf6d7a5e54c3ef528c4687c78dfcce05d0d64abeb4e7aa0b9d60e0c5af20c3b3fdd8be7a73d8cfba11259a6e8748d0333764c0fac2a8e1a7135abd16a4a8b652d10e52c52017fbe5727f86ed8c329f76458943dbc5c6fff8e85e008befc058ce8ebbd56774dd1b8368d11eb05b0b5f70ca0495117b9d34467812b92ba20edda4558ce6b06c94af168c816ae2554c426fe1b7aaa53a7b771a687d2da74351f76a2b712ca6a0065d6c6cbb0674b0b53628877da827c23bb3b48339123d715efc8b062262f76fa70d6d4744ddc82b7d50b3d527b4399d6bbe98689ea7133e2857dd6e97e80e6ab9ad27715e6a9f579d7ecbc848a5b4182d7a2f5aaba71bab1a914846c2ff1a831418b21a9a8e786a8d7e81fef410aeafef6769cde4e9b11b89a68c19c09dc25a1c4a98eb57ecae9addcc2313bcfa9f0dcbb5aef84780074ff76ae6e19a2a79eb75294463ade551610897dac7046a4e36905ae49d9f6d27160becafc1a957a2e2969121b5e4db194003dcbacae428ee4f1cea94768c566e2404ccd188e85f7c9037f71ad0590da8fb0839bbc6c385e77e930cbac9f0ecc026b6db8eb0860fd6ee07f18be63b9001f8e884f1448cded68309de0c507a631bdfa4875b305937b77524dce4b59dbaf827146f0f5b826fe07244a3f9df9e468e531b075c81cd95052d602a958911978c45dfb5d44455bbe02cd1507d49bbf280402e1539cd5ab958f3f006c6115a548d2ad9bc07431d2b518829531afa589f2bb05562e261250ac3432ff0b31db06fe40d4a7172b4383d17ab44f096a5bb6c5523ec5901e2af79a441bba5d4d78a3738c6ba447d60954e00c93ccda65199630675c03100f62ef9c3aa4fb75efff123c0d8194712d8e916d4b1b5367655180661b20770017ccb7658d65054fc6ca689663f19b6bb49ff363e0824db998db9407ecbd8280a710e6dc2efdb4d349dce54c7f36b0425f9b2d3e785e881e6b5007ac28ff51285646b1fa8d53beda19f562cb9a831f1ab567c9e683dec90551e0d0d512039705ab70f7951a15a388bcd552dd94c884ed3ac60bfab60231c6db1dca227d67a2d65624f4db647c2d871dcc6aff4c7a1d9bd71da2d48033dd614912f1a045acf97c6e667414ae7284d7ce5ba9e86965ba83cb25895638c8a56cf823c0581bcbaabea49b7ec5996e2ac9815c8e1a0cc7a8c03f554ec9b28c35697a8036cff7e24b874a973c7970fcc7cf2c0380c9f2be9e5c42a0934945eab2f4479d438c8cf2545b165afa1289943c05a2944d30e65100323ff7f2f355e25fdd2415c0b9a2a13a5e43f83d3302b0fde4d2de851d89e04daa38f4e3b8bc45cb486d1093ea4553bb1d1a7a839bb65dcd7490144120126a4f30f9cb3b270c8ec7aef71630a7138f856cfedf19780983ba585a8e813faa331c91e0adca3a68107d09383b8029684102dd96cae36adbe33af974a0872534088418f979bdecfabec46500ce62d10e50b16da148cf0d4d91220e78b77a5b3ba4e33eec261a8f4a009a1719e468bb4ae27b7ae758d8aa18c8eeb64d379191c50141b16aee47d5b6b7073da95ccda5532e2b6ca5c22c150da580b5a552ab2f7192213c531362e1c57ca6830754f95aea5343456e1f0d629360744917462057bf25b13ff1c404867941de5413dc8d1ec74bb6d152037dbeb07f7a3e0c6e1661edf102a8dbbc1fa28eac2c832f2539831485857be5ced2f6b768cb4e35c70a2553f934c084cedcfec1b396a8fa6d616a0e7360360e4bfdf7f814dc3cf99ebec478a180503098b9c2f6c9117bdff0431f29677db0377b13397b765565044f60da13883f59b15c37f856bd166e8bec06112e2fac46f6c81f89a666fe8835ecee5746950eabfff856c1f98b67ae7d76d0325c637c77f4aeb5078505c5be4e9035c725f64997187c3705e17058a9d4cb2b3f2a759d1e2920a1c6f1e15d052d1c40c25dff5b27198ea7948950f14e648634c7b714c26d0c4dd057091caaab282c1329b63f49d92dcd855ef60fdb4f90321feda8fa9969f5e709e1aabcbc1f898593f64334bb04bc712c55093f749d5df0f5028d0513704cb8091d5b70ff676384108decbf64824792299e97a71915438b889bfa0ed85ba558d9f8142f3dcd0b2506486ba83c8a7c288d2e49b63194ef7ee77f35efc44412c4ce451f29ef0f50c94b95ab1f62a2b4fa35a629a29e070d21b2f4812a7f6db8a1465731e62ccb589eb803b3df9b15f29d684e5cedcb48bec4701c320b776036bbcdbc02b22687bad9585995c396327c62c59968127d6d8b6ea01cb690ad9121842c105cb2747d016fb3c8af87369678bafc0411cdd6af9174153078417ca9ea4ca0fc8d59545d41cec6ccdda3a3a74578c63c192423e8543785c845f1184078685f09888889d7ef351ac70688e539f24bd570202d7fc48851b64e87844959f72b533188211ab6c4478b4a83f8e61c60e1d136f6631acd51c8734dccd221eea809bb3dace0aa92621aef8e459b76d2f2956c63719a60490bae9702f5be136b45e7a42e978cbad7d803a50d53ab66f030bf0903700eaf1c58ed2c7ef6912b0d12ff1b426a8a603dadd78518cd6ffed315171f2bcc054c7cd32f991fd1d8b4973ed1dbcb71992048a51d805c3a32415517c1e1f1c74b0ef3c15772850419ad3ed1f47c28cff7b3800d5799ae91468fa8905b4f4324a78f1a588eb182f3256b80cb92bffb8b8cdd3ade8df81dee1704f56096c765f9dad9c4e0bf5bd37524d71e12d3da133a93fee2064813a05429acc4324390eca194725c3a5e9fe16b3a0c4254c50a74b624c82bc6c944d5d2a13731041ab7e35115910c94658820fe6ab31c25973a6503cedda15710cec55506843213fd3e1f28b3342806dc42415401abd064dd01f6641b62473d60a91c846c39f42333d1560d662a84886a8655a34283ecd6018f106b5219590db645e4c682d694d87c5cf941ff6302cba872506715379c5ce4861dba3767ea247bc6d634ef416d65550c6cc0d90378706d7861a9b73829d7b1574665ef7600a757d2172aecaafc51ef78dddad6e5da2071b32b5f40396eba9ece6700e301d0d01641221746e8f334c6f253f8fc8c0b688cd7c5f73279d7cd22e05264ed424e443f0ceb1f4112fc8db91078ca37194b6224cbb849e38081d58bd221340e06d5912df301ebf093e3057b594477ae9751c4c61358bf526e3fa6126b95549f2d757cba9e257ff83fd9452ad0ae5d05ba2674881443d29bc5ded2070c60e6586e6bc2a7dc5ad437bcc191434eee60e93ad4251f5bafe090c3a1178e1f4f6b4b1368f331ec6cec8e7b6519f57c0f0a585f2e5ddb703fff10bc98a460f8853d08d2f8329cb845d8b9ee58e80f075d6009f9a1f7556522b4049878f52b7ebecaa1c74c1e199d46c91cd98c0f2733c2d6d30cc5713830f70017b77ebc3b078b2b1e53e98f1f157402301b9795d06085f7f77c876bc4316180f6a7189f4611669726b008ee84f197b5c71e7837e62e776e0d86e8999d0f8d3f97ecf91b9712d13a74d90a60eb713ea60a60743f600e2aca1172d0b2910e7091aa494e7ade4fdd6e62eea62576882a702be0b7812873381f9a7359d143bc91dc6ef1e95e89941e2356f1ccfc71c7d67a0b8609d9a247cbb4c1173debfe734b331ee66b5e8095f588dcc7494b61e8f5cfa47bf630cf2ecbc12e12cae4b944b25168214dc248912fde1b204b07c1d54cbfe01d303f5aa4c321cfeb98301334d1e5bedf12cb628f2fdcde27a6778d33f2709c66605bd070343ec047fef84018580692fd814b0c6765760e09f230303ee88996cfa8700a5dc61993e84d554272c676648355b946f3e3c6221213f65d54de6580bbe1163633ed82e20d845a8f90de17084bf1025141e4c0361a41ff0c9b7d463c6610738f2a9d8327dbfee74f2517da95309bf30f184b8e96ef7b835a6d9385d5c7176263a8c7a791d024d3817ac53578ece2d99ca449cad90696231d918d23822eb8310004e28d61eb2186168be09122f981ba491ae97536a7990e4a2c68ad9c9569144fbed18e41ff4fd625e298a4450dbbee6f342b6e9629d442c3214560fabb931cdc51e00f3ecd6ec8326b025439597d0ef4fa15f113af074d81496d96295ce9c6edcc251aeca9ed4e2077be0d215e2cf1370783f8c6edaf0652ff0efc9b7dbeb7e1312a780a35323f76478b676b626fa6f3302aba5222adacf41820f7f01c44e98d42a40ee12b52b475106948c14da5db3b3d591316b1963a4f1e75b00f8e28419263d7de38ca248cca1ee95d8b4775b459029589201a1bbe72402ea84ca1728b623732af6fe01fa0711abde6a650f912d5b0a871bb5f9376b74650937897c944bbc5e6b161ebd869c053a0043e81c755a9b317ddf2b9cb608b67aed16dfc508aa4e9d45e9f97d38c881d82e581534e6ddc6468f3220d75e10e7cfd0f428ca5f0a79ccc7229eac404dc3982eace869197e7540be81743bfc37881555c81e6a11591196a83e2c122d7d197dd0779a9775c45d15d79118c921171f27d4e35aa3333845a31149ca0eca5d11f2a22327863d922e53b3c20cd233fd18f558ca8b25304c4aa801728568d582fb511d6002c418878127010516c7eadc3b49d4e984a9b48557966ef8ef2046af07a7c725c431561812e02912cd09595d9eb11f827fcc0000ca1677fade4f04d8e98c3dc380c3cf32a86394cbed4b94618f6397062e9ef05878183046370fc757967dbc93593024095e2f25c933b0bed52be69cad5080bc2b194415dabd1ae60c5acb1878991f43c5b102c778e7ccb11b9bce5027c319f8851b8e5d7475d7c6ac90a29db7aa19c3efc13114296e3681e9d5a7f1f105caf2cd83ab360f0425520b729212f8c87d70d1c319662e3e74029f21671c6ec55794afbd1a7572cd07b1f7475ade1e927bc0cf402b9b3c09e6ad8b67677891a4533e136ed5303cef7c4a2b82ef00504215d66b1eded2b7365cd81a81a4cf3a7664222a7d51124000b781354d2c9c125c6a919c4ffbc6f0886d3e177327fdcaf59a1c8ecc9b6487f3c0612637b1db608552b169e36b171c09637dcf9729bfd1dc5608806d60a5fed581ef53967d759eaf4289e1779b1b2c111c41d2329dffb52ac6edc516f3af40a935c9fdaf121d8e3d283f6408927c6077ead2b261bb86547122ae558caf4be9575e2d28b35c4114bf8ebc3f9b9f90932f629a095a5989c00e65c3982cbeb1a9337802f4c5844e2990579fcee5224f506f7f02e042a9381a197da2a5799b54dc185d8e882c7a99ec919d0fb4a8b0ed999beba5860c2b335ed909b17b8fcea3fa0bc2278a30c1d96a04bda0d447d198e1a2fc10dd80d327f271564a3382a927bffd2ffae149a5a487dcf38ed3801568382db9867ee564d759abd61d774e77dc2bdd0b25599ec6332a52e53514ef62d304bbf7739d1e66d35f7bd62f444266e98ea5d42819b2d1701f32f138a1a8284c0841d7394d13fcfbd09702aac414c3b396935f8390ce1ed84c357f1820e9f3d7038c5ee8ab2f8367546bb5fc72e0574f43166a16237bda7d322e93fdcb76f995421cb90f8be3459849279e417b68b84bcb2ff2cad267f8dc55c53aae47f4fe0129de12b4e7aad63635d1413d4a121e2a73a2b00674a79a98145be392b625473c7aae2035340c6be23c8f2124e4919bc3c089d924e871fc2754a9abb505f982ff5c974e8a40993c0715f8f8393bfded8bd306640af082a495bef6d0a95e547fbe72ec21a09c60b7df5f1e20c19870337df580474c415b1859964a41d7e607f665c3a68f48a30f530aa06f60a0b32134770b7d95a98def19780656b97df90ee93e837455fb8d530e10632d0ec881a0a4ba143268e8161031a48adbede191824e0fc1676c45e3cd89f04d43b90b21594ec23315fce42d459077bcac9410b8b0a87e4f3399e0294d971a4f67102865f78575ead19425d0780d8651325028fdcc4ee812c9215f8b04868a0d79098d6f6bdb8990a7dec3e2d2416f86dd2b187aff013822effa1f577a041996946002895ffdb07eed1004f8ef247135d33e80794cf1763106c160b3e7411e023bd97ba12ae982c703868dea717ed0281ac8fba7a515fa9e8106450f41bda049d04779be995dfc9057425834bd71b8d15f7afcb47151b569fba9d5ead7f41003097b61ad7742590e4edb6a29f7aaa90f59f6bbdadfa4b74a9bcfcf19082eff6b209f8c7d28cd0a6ccaac2a8ac6915a382421365b642b4ccb53cb04838d8a2d8dfc20c573a56d14cdabfef4820515b830a6616cd29fdb65a711db1ee6710ed441b7cfd0987810d68f3760020fe7e009139ff19240b63c1515f84eeed439cdce057e077ec797a6673c4de376a70a61fe144a3188999f17812a803fdc009f544d7d8a43592bf643eddab61f9a586bca94102e146006b79b8f831856a1c46ddce831faa86210228ef717fdcf8e0693802a9c6eb49977018cb46e4b87cd33f7b740caa5811239b2e5087f20cb649ad30a909218b59d5d9b119e03515269f60ecba28fffef959959f40407b6a8d5a39c2e6875b80d00d85969ada0992ec76f459719e29e4f35e8a83d31409bd811fc9ececd13ee0a31e14535c3b2234d0743b3a331561f8d08a36e45ae81a804be4d75930df7373090744d6952f817146b7ba3a070c9f73baefc6c1d2110ef300529d771c9effff0b1b3b9b7390c1fde8c415d958469dd8d691aaa708dab674d960c88242e23ae9a5884449cb474c54d821ffbd8beba00614d9dfc1e05d2e40d3778b358eb05624ce8adc33a2235ce324503dc74d6bda9bc1ae5b0419639de6e69e86d1d076cd97be88c119e6eca22b4194a25b9c9602002a0d51013b4e64807ef2b90b3d80e84936888fdaeb28a07e8430a6fb97af3b10ea27456ab43c2321d5eb4668129ea7633ff827c4afab6b687e83e82cb361df559588fdecba713ba0a928b2806488641f5eaaa10bfc2ba139bdad94be64a837de738c3839ab14b0a906b67c95741a9ca1d9235d674edfe1d82f150ac0c775e38f53559a6ffdd4375865e47f8933a3fafa58b9e5726388507e21a52a85943e93e68c299d28cc484f07949ee2e06f7b38a8f976100ed65b3290825c1cd041415451dcf26178e3b51acc0bc147ad7a03e4b721bb1e2f47e5943a6ae25a5301c29f494d4ee3d691d0f7673db6235f58c85555f42cece7ed95a926e28c93b6e2524b851c515a11e432f1c4e30d223687a3ff3ef64c46222c5eb20f2a51dfcbc654ec7d7e7a24fd20ce8312429cc10e1fb05ad0fc319ef9afc48b63067c09d8974f0f0ac177088fbcf75092dc222370f2fad0f5fa94504eb69701fd91a0cd43ade34118931daa0da13ba5c05de9ae61165af698cae050011cfe0ef6dd31386d02258963d9e05dca44a765d66990b9f4020f1e63cc6e6b198c0c25f41e43bf99d9ec9e8b7e7353bda953b11de734c6938014d8aa9b9b43f581b2fb7508287f73551d0181a70313526b454a483fa5b1c4d89801b58c791821dfc5e61e6a9494f0fa4e5201b5f5dcd4fce114340ef2c4c31c655c3568d5a4d5560765d5c4c734f81d0f69c744683bb22f9043b12a14a7177dfddb4523f5aa189d43840e9ab39662e35eb6231728cc828374cb6506dcc01497347d7c792c4d17d8337b44661541b03054d002f91d35ae90d04cfbd56aacc9090ca19d597b97da773b9c114baf24ae96c8357b1edbe2a9f4b2a2d6fd0e105887ef6e04557a791ee4fc8dbef76de1a21e3f0d4079b195a33c1210734f04dcfb8d0977a4f02bb5fbc117d4f34a5ae03cc9fc6268aae26946ad51d38401a3c2c45c44219feacfacaea3372860968ec46efae4af8018e7b2417c59d79f62e37bdf2f234ba82b36c6ee974844eac9b3fe0a6c33c7294af51856a6e8b7d7589085dbf345714fcc70bff94300b2c90859270f58c6514f4c51bb630843a978aa7f311b4d007873099675fad1fc02d4d936b4fc5b8716e445ed42fddfe1202326e8809dd553d7945f10c26051660128a6b40be6b032efa012fba4b342eb384156ca83166105b17cab6d617965363321672a46593988864ac6a942d68a04e85a2aa71e8f4a0795609842868dfb97e21282d013445a27580df6e4514a419a8503d68cf466b00998d9abef06f6e742555d88eddb624e4dac7ddd15b8f2d7dd2ff20672d7c00c6956789bf07165d5a76981418775a1da5260b1f5c0be3a2da01a1aa942809beac2c06a7696bc10fb4f438002896b11660d2bff4882b92249bc88d9e012b2c726c972346b79374c79be54fb1da94d1f06f62989a2f22b6fd81f33c9e1877c49adc9f81056dbdc5793fb0a902caf055ea01004d3f563a122dedb44cba1de9577023da1d55456e8ca4a109b063739e9e2eb3ae16859f2b5ca95076c957dc356c94d87d82a4960ec07b6456785a55ca0faef5484be05d88a4a2446f4463c019030f1c2b9836bbc91954e1394cf405a423719600e197d62fc17da0732ee978f577257a0279c4be37e4d098a3c6f4f0bda14244935d709d2670aad028939d70c47fbba12ab0616b42b9d065274270fa225d8dcc671fcf08e80bdb0b548e4cda1f245f59df8d07ba5bb6b38e01a5e2b627b0437f0700cdb89d50b20bc2f3390d1b92dcf0c6bd7dbf2607f28840391d2a306b71bd42ea89b779baccfb93810fbfd7f19585722c613abfce35b4e3b557dee7b5f93c98cfbb6826b183cfa44fbd101bf0d8a563896355b652eff81e7aa2a811ee8de30fed9411b44b887f05a3e91633c29e29dc1cb9bf203c1a2372cef8baabbb98903ddc3c1c25a25c44ea1c2e6fe982ea1a324f0f22256200f5272823198f2ea1cf7378513ef16ac5a2f4ea7b28be02736c1820063071bbe8a109d5b98cf9d81b55ca83d4b45e7cfb194c5af2102103d1ac7113cea1fc6fc47906385d168f1abc346dba98c6d77bd12fbb151991c643ff235508abb4be8c74b91d3fc9f8692dddd72c30114d61e8273353ecaed08383a70dde745b14cf48ba29817b029f4e51cc8ca3aafdbe807a20319c4ee61d05805f6e14e09f1a1d765419f13d4a6a75093e7da94e364f124d534502c0893410b5852779c1c8163c1e2488c0529c7b6cdbdccdb490512f23436d1d8577ba1cb81ab47eb22fc46a69dabf3ae795e1fe4ef344c9bbb4fab17d8d730e59fbb31cb70eb2005ad64b79efb703f69d71a67d1cb63583f101d13aa1b4ac20849a44c663595dcd6877841a40e839705b5cb041c65cecf5222f543b9dbedd4568791535a5a6eccf7c245c706b42e7d2a3dc0396a739a45e870443c9ce0c6abaa52a960ce1598254ead37c6493d30abade5d9425ff810738443e9b5e623d3076ed4cde42ebb96f0af75626b87de20af1d8f59dd2176d4a8a5a752d0c5b4c17754bd7c8df0ff14f57a0c956ec3a54a20517e11ebbc6787d8cc00cf0fed904b25400cb35ef52535af4165fcb61d8aac8567ebdb8e26cc0c376bcf7ce9e1de7ddab3009251d966cf886f192dd229c39c8c669d781a41dea7123f93dae416a24d5bde950ac44d79ca171b5166754edbb9775cae3a605cbe5c4c6479b99fccc5dbe265065c94e1356dfc97f96c718dd584bb433b78a4ee5bfd53e072baeedca7a7b7e858739aef7d5eb0a758f0c5351628ae11235c7023cc5e30567f454bfa35390ea3386833d6a6814f05bb4f02259751ae01252eba0b41b7f6f5ddac1266ef6a4c947e73766506d8ceaf34edeff75353800b071f1afe84aa90f2c2328076e763b5199ed6d44c10e5fc03e094995122257f9f5206d08f81e06b0072358b882dfe958b59aed0582ebbc793cd95983843eda693c7fe37e4037acf3d8544f02c9743f36796e97191d86f0f6b2fdc627311bfb85b62922c6ea815e59a14fcc151fe03f4724e96758902f47670703a651885590b8fe616fbd355a5cd306beaf183214f6170255a1921713541eb436b11514531640d1920bfcee682d6fdc1d681a72e83d2d203b787b16c209cc10ef7ed7663af9315536e0859b0816cd0f9be2f0940f2a5d57bacf7d75505316332aae896f826a10646c6eaad36e6af7f70e548d1fd4944dd6fa77d9c618e6396ed23f59de5bb2805120a0f87907335b5e58674e56e50dd7a7d6688160e2177498f2cf189388566b9ddfc2ec31ea84b612a00e24ddb2c3761e8e216ee72657e6525f88cdfd0b284e9f9b05ae832f8fb4532861b486229d84908dfef4664499692a720517f21b2a91f0f6501442f7224849a9603960f0969f7645267056dcd1ce74172a6b60999bda6cb22383e65ab2ab22b804c1833a89147229b879754094f09d7dd3a88581b4e6d26505627f3356391db00b73ab49ea7722fb8800203f497c1fe9e4211eaaaa0bf5ed88943328ea4a4ecb08ffa77c708016407e8f185283d4b2751dade4d08b6b9943786abb2d1e801d4a0fa851d74c0b87719cf6dc3602e20d2b469776a33fabbdb1368c431596bf8a08ad0c4926c1407bb6146d7cbc908f2099dc9d40d009f982f81a04bc781facd793265a92e8bf95313cc39dd438302621b0a2436ca1ee9cab2d4e36bd8520a13bf0fab1698b29ca1fa0dc031274c9ffb3e1f8302668dac477cc59850ae1828d2be1afd13fda4432c353fc6e189d02bec1d948cba98a391025f9523e269c837ab48ae97c356ac809c41e6400615d778918152da96745cde8d81940817918378a7006653c0bca82d948c0218434aee5f9716da8ff8c3e290681473dc6059c1a485b5b3d08a7a87076aba8365d6ed068e29a761d1380a26695a7b8706994e79e20b32e2f5d1a0fcf71fa2a7d29f3a4a7d27f509d47bb63a8e8eb3f57c69e00f4c47941b17d4483accec9c0fbcb9bee1c860cff582af199587c7b6053dea41799a19e82a4beaf00612b09320a66660776a861613d120a7079b3315737c94dd6b99216dd2c8cc42cd7d3008a2a27ecb0bf2c36c6724e4e0b29a89d1d6c228771c132a94b1bc30e8d585533871d3cba38c1b31639969e584455b5e746409b99b251919ff52380f62939a55d272fee34079ee7fa42fe6bf1313b31853dc0d56747a0b35bd2376880f36a710441b9d0ee1f51b119ca78556b1dbd0c3e1c86be2bf464577d0ecb8294405e9fca377eac589c89b874611415a8a97052b1a2dd0caa360cb2f818ed9749b8469c0d3a78e0d963fea781b8462e51f88de4cd79017268a8e1f63b650e6e262c34727a767a036a995b7adbacaafbf671371b7487c6c09904b52541daad10e43c9a973242dd5205120a07dc509d72d254a42728b0a6621e364c22abb1af64711677e9c51a8b999a4cf4a90419c8a0e5381f9b25be886aa7cdd325313006cb28b78b5fcb879119ccefe5ec75ea80da6f20403d17850fbc2c42e1183b008ad7a39a792c7c852d911f88560b254e0b377bf0eff5c2ab29e567fba6ce5bb2430ba68b23bc63879d649c67677fd866939e6812e8fb96a23a6e293a9f070836b7264f6e0fd746326af849fad800067eb378aadb8a0ad800f8224e7267a5043e6d931126a2de27be6421830d06c4fdf70cd6b6dca018f2b8310b5279d2bff58e320827205bf93abadce2544ef0821accec66667cf30b7470ad23f1aa8b6636cac137d67dd08ebf4175ae4bd05bbd688046975391017b89e8a94fc60a061306621f44d564e8b673330d7a5e0855d77d2e09022e02896b50f99229d3a7a35ea381ee38d5378631383c2e9cc8d95409f21ea287d79c4302aa3ae77320267b20b4e089689c9f1696d45a4b679b4109794ad177421e6da072a6d23ff3cdd93516294ad236ea04af1be64ac7f48354e75827d633ca65be5542d5429c99d66f3f734ce123f03d4f9c62d98de0ce4fd46c0b965e2438f741f59b982f76f84343b0b739be82e9a58c06e89041e179918e811585ba8a34fd63a77850bebb1007d8c713bb183322e066bce3d2a2d2ba06712148fe9452bf040b3c8e03af212ad075e78763131410ed85b5f2e76e5c769165207e1ad9fb4781c10074ec2184446b93f49fcced99593f6cc27cf598d538331c9cba4c76a8117079e90469863e01bc2ca667acc313b46dc8b5acce21d1befa5cf91b86d8b5082ca0017e90c491f0da0c9a3a26b8fdd30e6190a5838e15d0c50788a618100157652a4f11ca0ea48089356a7dfe6044d9ed6b241372a13c0686aa74101134c04c7d4414c9c985d5228f5782d4f871b6605633f0d66486496672eb886d88bc521dc27f66551b70ffd77e0b0a531c36fe532a593840e82d0b71418b31aab8841a7a7e17250af9a908c36923e65ecf10b4734852994b2fc71be0f3d42e5d854de57e8c0b9cfc0ccbf53db059b51df6b6a61fb8b7f5e23a9f91c3340ef66e3f51f8584b16fd526796837da741e7799138d573cc52d4c2e8629dc056ec6dee9301e6422b5f20b45c6cd90dc690b7f13f793799e603aea3a8d05d743ee9a510db0740aaf8cf4b93f10a9606199c175ab1352cb5ed258477c541e8b76fc3d8743706960d12ef6a7dad04ab03cd217bfdd3358072a017465c0fbbd3af26a7abef5befe511056d3ad97e99290e9497e919982615a4f7695f4df53cd02e975395a37a2fae0e2a0bea78458904961dab2b52a8dd2e3f3f9bf9b9ba403ef0a1629d1c1758a0e8061411a71e42e0c5725550b07bafbec1e4b0ffd2eea64de54070e3b9f854de9f5c3b51eb1e050327100c84005117c0a2f3eabfb58e35636a89b4a653075273dc967e031d4db9fb6ef81345825e5a3b399928343d061b5a1981b577cc13af025057d81aa79eb1eadbaf58c3c7323caae34c8fdcf8d6c70260aac18c84d31cf99b9700b755ff945e42bf6af31fd61fa0d727a30552c19d0dbcace52172bc01ccb3074bc79d622656ecdc61dd5958fe7dc366bd06ce46e374a959d9370401b524608b7c8b9fe726c03e07102b72cfd1c8e9e4e34cd405dee8a873364131c80d908b9b5df3c31512786cbd922c31d6d56982b1670415e4a20bbbf755452b62e507f822aa41b5fcebc8272563d3df22dcfd54629d8e2c13b9237fde6e785d84d9d2a2bdcf137459aa6f978706892a3eb59fb4769bf7048c6880382d8134a9edf4367cd8024525f64c69302c7c792609521983cc38dba57b4abe3d01e111f80fa641ab2b9ce20a1cd667b7ed00a4ebc1cc2b2c91866d77e38a4631cd8fe3611e28e015865a71a150acb2c2acc17bc2742f146f8b9714e1629a1e7943997211998f00e7a17fd8593ab901bd01707f68e64326abd67a63d263917b4c62f507c470628afbb66e0f1d4a735b6ef5bea2495c12f6590c8e660a351f80223694405036e4508f88e9301f69d524c9acf6a998513d57b470201fe03dfe2f2279525cab36e5522e44d2fc1cf5eeb8147be1924d6b03ab41a2c97e83bc4415cea546253c62579cfaf0961b80b1be285f92ffbc99027e77054eccb291b8a86b4b28be20436b5fe4be7dcee85a2885784ec68379edeebdf11403220454361228241b2ae957f5fa120c1a2e2f51eff88249a27ac72ed712b7fda64aab4080351b1c19bbbdd1e471bbe6b44767625bce519292bd1f4384b6bb31afeed7fa5161f2fdc47457854aaf1c06b2db1343abb0639dea8cabf6a4c97fc6067b8615fc5eeb765102d03242f412ff0f29d79154888050e7622fc234ecefaf1da232d75b1060f94479ecd7d26d2068aa895a027429d904a82f68252619d4d42ff4f5b4c14b5ef414bc13b5aff3870f8caf723af789d44e1a237250efa0c81fbde9b7459ac58004048bc79abfe86c05b95a2aad4f38a56f7babea0fa02592959b15ce1563a9377f5e61e8ee27a889ba13f63d0d115d34ea13f414d5c6bab253bfdff039eae43292ea240cdb08655b30e78fdc59e868de700ba9461a96076074868880afde3762c91d5ebac59c7f9f73df366cbfc7e2ed43b0521e71fd76e488eac76ad3ca2d5b67cd09adc42f298ab91faed878b4536ab9b5b2265e5fb5a1ba04f4aec3108c09086e50e97fe53eb9a4e73830dd930c26e734816ddbb004570e3293d958131421adaf0672182a90af76130849dcbee5ed4819db49883605fae220057953543c3258530fa85ec6ecf3bbf4352c94055837288ba2d3a650aa560fde30385cfc1bc8501e6990f2d0694ff4605b81acd11542f4fa911d0d629d41a8e0883ef46bcde64409ceaf45be9ab9b1767b8f928bb09f16684dbb57e7f30c76f6257209e577b00fd20f4ef08ca76009e9793c8321c4f45ea407bf0949445b8e73442ca1ef9ab4ad70a81a5c5b2d9e29475d9a7a9b8653f98910ffe8e62d2937f948eb34065f4d7bf7c0a2286d22bc219926d86fb9ee7fa88af7286f803bc90136fd1bc99776f550d501be79400816999e1e3f159ebe022f63f4ad8f8066b073c297e4de78f0d1440488dde5d387dfb3b053042f40d5e2f3c603f733d71296c98d793b9bb479ede71f4816d497e3ba75a4e52560ea5d174dd4b2d9e0229d0caecceace270f22a4335a62dcd3fbeb46137952e8af2fa9b801e2024c31332ec61fcba79e88a2919f8a10650fec1066ddc951e15736d3488a500960769361b3a990c50559f75bbf4dfc4c21379dd6df7e6409919c128aab0185230841627ba188175d3a668d4c2d131b5b2688f06f9621bcab650dcc350066b2b12a9c39f9d8a724ccb320959a0ec978c43c303d91924328c031d67cb3800b03bcee78adb2d01fe180f82593830679c7194f77877cb93033a7821cbf098eae16a01afff29fc2cd7e6326216bed6ed8d76d0278f3f5e78d87d091fa320c9e2f5e10d0c3ffa053993351231cb5a05f795d63e998645c219eca142a7b8bcafec5e7372774d5f8192680305fb4e847f07522ba1bed2a5407409008fad1165b8654b562b41d9e9958a49aa9ac393a6ff74fda4ae1a0b2f07ff662283e1814532a7b87654eea9cefb08b0a01a1ffa09c3f2e190eb235583fa3af816b1a43d1ae1323783ee68588e23323faab1a1e374a9620d2886f3c1d2dace6aee833e8c389f102db71a7c01d86f85f2fd478b0b3fa5996580c632940889c2daab7d051bcece605288e0616c9f0e4fad067e7da55874936bfa5c2bf22602980074ee13a4d3827b3809060fb61a838dbd11b92d1864a6a4bac180d42729c83319a38f716a404241c88802818679bccad1ef2ba024e69e0b5e7dfea0227aa2e068446347fa017c000a3047a71b0dac3ae263b9a7aa6f68b240c84e2ba74d8551813e9820c023fcb4fd8469fd3c91467803724b451d621b919e4a9c1673b5b15e243a63bc9954f64bc3157c9eb8e36cf9b6add7bef3b77332bdab69295138ce68c6ec0a277fb0405d5053c608ba8f81d84f3f43c382b4d71dd4966cbeb0bde3fdc5b9f26486c0e287cc15e6a546c9c612fb4a11c511f34a42dd162b14483a5299bedc465969e4cfdeb2fdae3604e181878d8cf19dfcc6bfb5d32a7b83572d630b45a1e3732fc89d8fd4176ad3d0d34e3db4f330afce9a536289af8151aa2ad6e4cfa4efc62d65f3edcbb031856604d753cae2dadb5ff0d8c313510ae4ea2532cd31b0502a03c2f5d430c91dcef8379cd0af46223e50773b28de32cf08eda958577204a517c829b10ca6643f0a07e225aa5ee4774bdbe8a6ccff95eadfb4c3e27e47a39b2ab7e277616b2e4a92ac0ff165bb6d211d3950d94160595ad65b41c15fbc7bda859511eff2edcbe737ee15900510ac3be64d2ef92856f7c5033776ab9109501421ba255d3854309cb95640daae4da8c8f9762ec5f7f0809aa7faabda4e9d4b86cdfe6ddc4e6c94c9d6b1b85d41f6ca208b71c08704a70c2629ad90c2eb3f207859bec92947ff592f8778d711c346441969c294ba477022d6a4ac9d981183bd2e4a8f01166185b410ff70ae1443464c415613bbe70748197798e21dde6d13e549de481630dc0cb50fec79c1a6eb28aa85ac21a8a842ccb3fa204226b28f89d2d8e9b788a91ef9d842062441e78affb52068214278ad4cd4a9c01d5b1f687dd958c7453bc46d3cc49dec2c0b75e403d75a3d0c1bd3413e687ce1d3e4823ea24d62cc94a419fec122c2d2821e103dcfbc94e42add44e1d905003c0281d7b459ad2384657d2d59e34be1fb6568d203d079778a5cd38ece6fe5fea3f8c0072943b37b638f4c203a2a702e67ff80085d604da00769ca6d029e3cca1dfb09370be3f596efae809c83603cabad359b05f9a1217703de523a75f05fa0490e99220037d90150c1aa78037a9f8da89a74ecba363b8b9c77977066eca2d62b30cb63a83dede5af33d0bd21af7b617af21f6db5e04ac545a3d40168ca63fd3ab5c26e9f02f2ed48898b79348341be501f9c317202dc3d2385319e240dabdf9726a99fa501a1a42312d496b89b0c287562eb7f16eb128b11449f6e83a41e3c07f67437aae25d0871502a0be477abbd34651d7ce76ab7089f7591706c5e215230751bf01bcc36294bf899131d55ed94aab32da5ae1fa41c2b3ca2df5babbe227c62ab48ec8aace8255f1a6616d16cf0ca988f8cd2a53b713cdd73177ba693f15253395d64979e8fa91901fb2cd72b7a534e6fabc1e08cb048f3c789a46e2f6578442a5067cdbc85f7d692f7b8e293a6f88773ef44fd267befc30956c686c60382093687e12b2b15e5b408bc5a389ca7be42a775f46003ddc737d1a266410bd8d0c8e9792dff60c2b5e36e6ee2b315a8405a72ec74be332bce234420cb3a3bae8389affba5be1f93ef9b45668acea1cb6bd12a02e99685625a27e60435ac6cfe6a19afd0f473fb5d9b015face7c11e29f6ddfaaecda8e7db92b7c32dd988af0c1f6c2791b094b3ffb4a289f1e84d2acf685af24ad2a0cb123465c180886ecfa1cf00fe330fbf952c28b176dfdd63e0f21c89a4366bd2fbf10208ff0b2b11f4f2afb4092c54b48a083ba1d0999c9e0baf176de4ca06f07910ba08fce73a13eea8ba653f331636993eeef516e1bd2d69f45c201bbc8f46aa70421e1099d7218b09f7aa7fba1c04af17d1aba5a4b6b19a633c3b547edd0b7151b60a886180edda3757b59db336b9c1ef3c50745b53eb454221dbb49612cc2e5c9df8098ad9e559e966f081a0581b5cd30735e6976dacedaea2d42ba7c8b4d4dced584b6b14b7e457aa453edab51472adf693c0310675b4d52106e0283cfa090d3096d63b52d124133a7e1ff80b442ac64745f6a96270d31b15deef859d126e5c5a22091f0104737edcb6b25dc4354c19400d44b7494108dafcde3d743af8875fae8227ce9161fd5d0e3987054be149c69fe648879bb137c157ca4ca180cdd0b641c0e67aae99fb461b530456e2dc64ef81ef95e29d148a7d7f4dceead5ce1c320e7855a152a1452541a80e5c2ac758d1d6a1d6532be6aca5b642fc15e210c79a9aa5f5c238bb514a3d40b0843da12cc728c89b74b5cee1fa41473d430ff09cbeec2d378014ad5f326741f1a3c1698531b0cf04c8757b45a2022dd9d03d72e494aa702e5cc4184c91b49b4e9cec8cab394531a5d45033a5726442882326c8c75da0aaaa061b4dc1e7ecb5d32a011f19dd260d8b34607163343f53e67705893931c4837465efdf48cc195d60a703a45b88798406d1f4c9d8226751f5e7167a262b1b819cc1bbb3e129dab0fae5c21a9a91c39c71aa52b695955fffaf53fad3e5d9f981b8274b7c951be57c6afc2efaf052a9e52051057f9977840fb1c9963f23a207106cff1b6b0bd01fe910d873703d517d0bf7a0df7d321b1fd046750d1bb39861fe1467186f4596119559fa57c651ffc718c6e063b3434857c0f2ed482cc35a5c1108480efe74bceab60e2550d90906cb53c38ba6178dd6383931d61f4caf440c66ba118f6bb8ce6e1e1982bf2ac85e0aefdfd4756d2de89e87946675d4a5e539072a93a0eddd0b4086a75651e4472e994a31e5cb4179e714ed31547e9007c3dcfddc775bb945978c6b16000d261242f46533d2c50a091c3436a84bcffa683037ba10750ad2d9c65b551fb8d093391e27f84d249af23cea278efb55802342f880365d44484d7d9a1fc8261bd2400de81843d8bda241856cd2952b644acc4c064e64132a7a4ade7571029d3dd39513187451d7c6857d784a0f407bff64abe9041ac81b28756c15ad9b4710ccf57760bafbba11910e52544aa763b530376fdac83733393a9c3c9dde4c4d3839166f36a5bcdea627eaa06b4d4029d1cf5f102598ab6165d41336a1e796dc905d18a2175b89768724ed962f8810a38cd8a9ffd4bac092e2053f69f42357438ef04f85a94196c195e461996fde2a9d00b8347adb3cc97efb27feda1ab28d7178119cdf47c78f863946368f9f0b0f221b378b100bd833a6863eec267763eccb79f65b804cc2395e693c0dff4c41908250299d676731cc554b1bffdefd07a93e30aad0e6827339c210a51202348bd0388afea15fbf62c82a7cd9594617d501e5c0b398861b2d8811da950d7b8521570e4afd4287d2071cbdcfb5caa98e1d892c0a12220535a5f61142f9c1ccb71c525e378bd9ad60d68e90c302d69b42baae3a42271866dc990cb3a0a1488f1d76c3cbffd40e67a20b406704bb34ec9413f124d80037906af94ec16992aff9ea68bc8f1a19a878bfa03f511f9b39423d1d898f858277bb0e1c5517da404ce02f28b9088b9f7e6ca525012bee2baedcb3d802e10fc240361856092a1c49ba0e86ec9d06549ed17b26bb81e8b55939c3408aa8bad846542fb2bd1420093541e99f317a405ba5c109da80c3ae22e2e603552b88223a68a6be7e2f290389a78d66b19d57539ac960c5ee4f27d88afa5a5664bde325ebacbdcb32a20e22cbf30f45148f9b08567e8456f9b3b5668bceba53e45fc9d8e17989de90a976e70a7dde904d6951a7107478dcf2870315bc906344b0962e33f971f119b895aecec8673bc3d0e06d9fc0cd2aee106bbe61a62050a87f1bc4b596eb18b2a50dc2b6b0fd038401bc236ab864e250cbf137d4960ac3e8a6064908939f632b916aabac854a3a0fdf44bb390b96ead9c1d9d204d71fbb8279e523297d07c26ee5f5bfe02f4e229b2c5f08fe8035b6bd12b10a9d2b83e3841007d8b8528aa8e95c6844464ca9f482a6ee00438b509bd3b762a3444279dcde278f4c4e30edec3acb28f8e8a70c6524e1f8f8114b3066958b2d3ede32599f01599340d8c38dc7880f0f81795fc46bb241ff11edbc25bd13ff3cf0da4dcd3e9ec0f1b2e9e1c3ddbfd54e48b7dc11c910377230e6d1438d79f1852c840c7d6a546b3b968eed1b24ffea6f235409f34bbe0dd30e9d62fb9e112820898d288d2addf7c66b47b2659b753316744a215384abed31f08b54b4560d6fb4716be4c331f69f81e55521eb3541df8fa1e5344c90f88e1cbc14106d0a0115930aeb97743821a2be361898a02d8a2904cd52349e5ca2762f537582beb4138231e380bd1e0b2886b7e14581fa5bbab094195e1ddfa87d089cbf558da5494e9e6f07f17af2073593a5cd5f7e827842301a90a5b45dd81dcd1302d926b57347eed2169a3105b995e8f47c9b96181e1b1ebc5b612eea9106155c1b64b09517370d2d9c1ff854869f243f59d678194c0e1500e7087690de76117e947acc999fb4bc91d080a1989f20a78a2383e86e8ad3a7ffee8bfc7ad1118d76796aecc96651b90b045c2c312767a3ba681a63e7a8bedc9f7dd6b2fdfe037ad0b56cb8fcad7cad08eab61a5380b6dcbb56905264707949a6ac10db63fce3d7fba9ce85135c19a017138bf7c90744979c36ebbba72cd7a00237005c919e9a2439b7cf38bdcbf06db4e32793d950b30f45d91fbc796f7c5cb13258d60033cf1b93b643a800c551c57e65e4eb8a059a8ec17f96e15dc637510b0ea4af6cb372920c5776639508f319896d644d316f15a1991a07ae33051031e1438eef593e7b32c4e558d269f0355616407b72b30f9e4fa81250a10cf23d57c20880736345f72a357c191cae15ddc88fa05c70254eae07690830b1d9029393fb2d4e91450260cdb9527000d15879f023758a4dcc294db0a4928878f7c062f7d934de64a9ef568c86f5940cf977e61b53b2a38448a690fd41484626b4e3a34d4284f519cfb3200a82908c54b8b36bb13d80cf4d22b2488fe75484828162ac59a51b198fadc3d5894fe10883f06c8304a32e9b4e39511a65a1caa597ddba78c6110f3ca20c697e8d184122e0d983fbf8bfde2c701f6074cf9b18bdc2d8b6481aeea117e19b8a1ca3423e7aceaceb6d007c3bd7d54968ab990cf25c38b74a194c1b833d014b5165d4b524b30051b9698f51dfe014b27913002b0e207c1cefad5b2638456f0a23c0fc5f25147869b4ec6e3012d9b28d995bbca00e555ea82d198cdccf1c30dc2adb413651366ec5da661ed30b48e0aaa7835379523c0645bd96458eedf255b3b703ab85851e8fccad70add31e431b80087047b85de7e982d8bfb00b249d0fffade98b9315e0883d913b234595ae1696426a869406a0589a34ffe525115da3eff13fe1c586e3924a5dbdbf18b8075bc5b775753a8ef79dcf815524547e52e39529b212079dfbb5eb8592bb7174771cfc3ddca07fca9076ef149a7872511bee599f3028eb08bfbd7668b762030ef45fc21ea73a1bbe55cf8578e0085176c987fd99befc4ec42674fdb3b5ec12f12fd553663740d95a7b0099b228e129b56fee2708048b4c6ada085ad3eff5567502877966bc75620b2fb5c27cf60b56add8d9127b1b0b05f6220c3d749f3671a0fc431eb534423189b3530cc43fd1d10843ac925d8e1128d93328b35f60b5e5cca21fe15ce21f98ec4423e4b9081454fb20d897964ec2fdc5df7787412d75d156f130e56af9580a5e6d5a18dba0abde020bcb5a64cf767022ed865162379976e68bff59dd97711383e38e1c197ffacbbd50e5af407bb921628815d654a377388b58e8990b418a52d94e17036a55f6759545ec8677e10c5bcb7d9af8cb1d4481ec5599205ba8b0ed720be0d965bfedbe6be864ad3ce306248bc1e872c938a158b42c2a65ee666f2c1c405abe2709005156dd707d7a9f5d3a1ac319602eb989b9330a8dc7ef8b5b3ce1bd068ae7e850bef3dbd886544e4ef88258a54d2f1926e1dbdfd60fb10df356092c13f47efeae4139f72b4fc48d306f4708d61c695034c3e15d2683c9fac20b12268d699fdc313099819e35c00ce78933923e674018ce26cc4cc50c52cf0909b38069c08a02aa55e30068d1c0af4b63d069e1320f658a9e7d06fa6fc4e9cb3d9f3a6483c726e0de7c9949ca991e0501c528519ac2be422eaeb7767272d5c4f29c9caeeacfa163a5c774bef65d798ec2af9600d33a31271f7d3a9b4e435ce995184da4b4b0c7e9c1d636fbb610f6e3720637cf8d83430a6d9c11becdb9e01bc681ad5219cfa8eacf46dc1d8cec9ba6ad58f7642610117ec5bf62d5ad6ed1240af0380dc09a93ab7078cae8921f86f5fc01bc9ddc6ae48340c3705f556dc414fab792e0dc5d9df7ac614bf01843e8b20bf68f0b88bc5705ab0d8c5bd9925b71730fa9e3aab241232825ed8c1c52aa5ef6ccaa46cd324fb22e788f8fbc732e0d6cc389a82468204cc867ce9e816a8494d26ac329ad77475519c2ea1ba95acea301c107eb4eb0d7f78217e3ae409e27ccfc88551982de028a601989a9b470fe7181fe4223ba6037260f2fc2ed2f34659a2f5a7b39816e2da3b942c08a8f07c14f85c8a251f09daef01290def624ab9e44a3145d824d4df9a451ea6188715d18bc26618eff3f0f7b0e402cb4635023b01a9724ce5592823c250fcd0aa627721105a1b72d1460b9b25105419abe527ab8b18f5cc9642ead1d3d8b47084d5942b0aba48a030b0531ca537b056caa7e8693d5bdd88a4a2338c02522c16f1bf3be07688df98f5a58562c180d8bd66c2cb4b8b06ce96c8fb92c4122390cb158a5928cfe79ff07e49b91b4bb3a24d09485eb4c7c15c06d94d104ba04179ebd13a3b9385e1710eaa4139e95a0d96a978f9acebbb7953ca4290e07ec08d7b3f08956393d6a29776bd7d07ba4e2d0076e517feba13af3ac9440961ccfb515d64cab4a527cba88b668682d468a5ec612e4c8d76f91a8b6f159244d9dc61a9e3260610c107df1b214f178b77f102740ce050f391ecd24252f371bd5167d6ee1f6b8053130c06d6660d1520f52582c8f2f498a35d1259c5fde573b5f2f64107237940b3edd45950683e022fec38bf210c309d2ff2de25bf1c9e4ab9243f383d82c175b1f49dcd9dd381ca36fb1b14ae078b61347c0502f716702fc4f42e2f8a077c38bd6481978fa8e6bcfd41182e08a8936a1766066e21ccf1ff3893156461be608ce85931bd80fdd1b8200895d5c90400f792f5131d3e8116ad4fc3efc77c8e23457190c3dcc6b53293fffb5b7a794f08de6c0608515667bcc08d481704577aae225034912e9f3b10c047f309a43d7bf8d2f218ef92aece286dbcec82d23e3767a959635038d74188ca9416fbe41c46457c88f87633cdf1375c505101e6a78e075cbd40e170e4d958e0a44bd8e579baef1a9da61dfead9059012d6b9da7ceca8baa4e00adeb1448f3e602e76f8e920893443227e2f2edeed5971163ef0a68a7f6e9fa7fb61e1229f32c341ba6213704ae4f67e7e719e4b9042c50d8d9046735f4db92058328206d2d3737f1bd9602aae85a4afc561a404a95789371bd8571579c0948b09db8283de6d368750b1333979dcf6cfbfe1545c338846b6a51c762e7f2d9a5d7a7bb2416045a9449983f1436f69fa4cc85fb19229cd273ebb645682404780b0090630ca1bc0fe976d5eb09f729394401c2282f5650d058e5cbb0fc6fad1ec8cfc5eb0bd26b25e16df12ea4be23ff7007500b63eb1e0272bba354a5a794286e0e97650c7d9577b9233196e61fbdfb27496f89f0e69745fc2addd12003798e0e0b9377ca19f0ed45a371001bb25201a0ba46993e1ef792b1307cac970c8ea0b6fa51fa611855961bd5d11ca1d8743df4b19fd82ec2e886900b4ad639c2e43b8fecdd0916a25781ed387affd998b95e8fd228129137163786e20346f942462cd9174c4ab6500104c73da75199892eecfd1ced5fc8aa195f8f23258d6cfc465042b3ce75ec423a49ad0562fcc86f2f5bc7a96371ab1ac3a77636c72f75acbdc6bb487e9b9c20ed5353b3d41e1d01e6de48c36046eb0efc907e2fedd4416fc7d5b7608da81c80c332c5e95c070a7c73d118b67e4fb8d30b0d555a96b07babb9f5b838d2b5654a834634afea92d278dd029abe8e13b58c16bb7327e07484e4bd969862dfe2a3666287a9e65998b7bf775b47dc2cd7f105dd0eadedc7c4dc8d20e6d358755b5e7aa38c812f56899dee7d8fc18538b44d83b2aeb968d332c40f7928a1233b5eb2152625a6e02f51ae39b9887d2128a6e668ec99888876e51206d7be608762b0d97ddacb59366d085eedccc38eec938ad44b84286dd479e6675c56c34a11133ef11116f23666800ca9bec9514bcf65851054f7c0c32d6e5ce0ab95873cf35f9dba1d1d26de085cc4ae31b6df5fb99ca45e2e4fb3c5c983b6b524572d3fc406d47d2e67b47a7c55bf41c11fddee634cb88df09cf317e26621aa2699108b6c26a55b7584b98bd19f143db1d7900886e303d56cad45a4db04ce459c58d261c88880104b0de021b60c60b6f18dfa554b0b146d866507815e43434614f935402a8129d0f3534dbf5026942f7711417e28ae5b262d66f101e15425f4f5c53848b9dc32e8a7253426b975ef4ca8fcbe37338981babb66d628180240d249e68d512912097c68bc761d820bd6e65a43c6125d08feef85f4186da636b8c5c410b78c3e09d25a18856c8d2e0d65a0c2c4c03ea63de8456200a693a1d6f4f3550a4a3ab45f9ece5db33d8fb680cf6db769deab9587e43b89582bdba62305cb792d97b8e80800355315cf575d7ebb64518ddcf954e52d52ef46ac7ac9af6dd438f80b3b4192242f6de5b4a99a40cfa075008c108404a68332047ae4be2e7856b6d87dfa63f0ec498c822e1f7f97ce799fa3cf8f1155924fc1df0bd1211f9044979c70ce63469e04b6b1210eb9c4b7ce69c4decf26ff9ff1fdcfd547ba45f57c1d69ff36370808d4bd5b1bdce7383d697f2898dffda265fbac09e01d8da7f8f1eb975df61bfce632d92bec612092a67ce315263afc08d4471eef69aeac818a1daab35ead28ca028b3dc9b2275525f5a844c912d7b05de59bb433e6591ecdf0db4ef9be5395045d63acbedacb56b5c01284baffddd1dbed9e36ab41deb0ca0487f4953e97d4cc21edd5d6a5b3b34eebda8ae3ccd5d4fcae3e9f95cb0f03bcfe5a9e39dbd10427ffa9475729e67d927200bb463978f1a013b7c60ed93b04e3e6f9f8412be34b44e16de5e78fbf3f62f9775027afbb74be86d76a96b74a68bbcc725f6e9ba5d0ffe187ebd4d2cd3705bb21adbfecde14c97787dd8bf33ecd3e5e2ba34b67d139cc984b92bd4807dba56566d46b081609f4a5c0f71964a1353133eb26a143c89703db8fb9494de5c0a6e5ba7da6eef9b5010d28dc8a7aee97adf30a8ab03a9f7ed7661a6fb668fdcef5bd7f60078fd5cf85d3822d79410a2b6d0e331e15acd7df6497b4694e0e9a9ab0bd730cf3c9b44686adaa9f7cd22f98dbb700ef4393ff2bb4675611b8be4bffa7d0b32f4f89714950efd2e9c1ff99b9c14fff5b68d37f4487d98b2696312e180b4e1c2e50b08d90e1368b08061cd7952e462a4c7ca2bd57134b45c1e82b3748f8ccf7cd172634d8b355235a0a48cd9f2a1044a728913b12f263a2a700a702c82a6f37d91259b37c497ece931c7a70dd1a7cd0ec6af3967b3cc399fe745f326cd871a568c1b55618abc819a8a92726683cb13241c15d6f38ccb71ed4603231492295eb6a00d1993854bd23e1679e166fbff038a6fe25e7ce108e3fdf08a44f190659da435f210e29606cc8e9514b24829a610922205102f2e2699a4860b4b0b2bcf3819343c7a2ec993c6c60aaf236d7344c25cada1c1a2ce1b0a395d9acc974eb3c1666595538c8c16d3b671e37ffade8761db23112f44902c76f68388b05b8454a892808fa446283f7fced9be098bb34dee8cd9d458990d40d521ab36a07c531dc11111ce377f04e897df007304e79b7604aa0ee1b7c1b2fc11a73a84d5a460d3904da69f0445c34ef1c794141c583918b0e2c71d326d7c78f570a00812fc4df01fc1ff02fe3abbe733b4e747ea8f3e1e7a10be3b512c7faba3d8e59db3cbf2efdb2edbf67a93bb544bf38136ef85d41568af1fa4fad4f5f4f9d2d49e679aaebedde3f36d1f1f1f9fd5b72ffcfc9aee0b172e00010161f8d5b781327c1666611652d7f34c539f0a026bfc197eeb672faed6b85a6372b549a1cf6fbdc26291275b638edafea66fe026f77aa2b8772a899bdc3aad739d6e4898a56ea4fa57cf4210b801caec59ef320fef4a9eee5d0bd43d10f4d6aff597e5bb99bde84b6eaa3953ed326569de20435242cce4451f52bd38f462d89c276c66aec4702483e8092cbad0e824f15223e86fcf6490f78456bab876def668458b0147f25b9ece4748e8278880d004232698608209845c4808cd0ec40074c1f720fc16910cbdef8d3448f0f7af962f7d08fb3e2eb449d7bcefffd6ffdfef01f01dfcab0fc2ffd5df590ba4d64cae6dffdb1f007e83ba9e7bc3ef3c06b27846e68d07795c239eb5759d95a142adda9a7bef0bfddd3ceb3e5608b5426a07be85ee7d14e08a473433163ccf110d7985507bbe596b6dcae3e9f1763a146a73f80a82d0a0a00acea320f3fa380f879eded1dfe1a3dffb1d879fdd1c903a704042e280d48103070e1c3870f8590b44dff68e5410f216528378b8c29edfa5bc2b74e07d134cf852875f9b8456a0b57604873f52d75348eda0aebe8da21cd4f5ace08f844448ba6f79475f41051fa4aebe0dc277a845ff56a0aebe9d1ea96bba5321753d777a3fbdc5bf197e8e5ee879d01fe250c15f355f4a1d38c441edc03707d428140a515c2359dcb8baaea84dddb1a32fa5fb4a16e3be98c983f73954808ef0a5db665fad26cdbe288abe0777a312ec2335888707e1423f2507dea17be0dd212abc52be84fe915210fa41e81ffd1a1414f408403f03412f941474040ca2206882a01141ea7af4f677475608b542473fbb712f8415ca2024a4167bdea26f1f68d728f809ee8607817f6f7b1e00407d0dbfe141f86ec34fc317fdaed12f3b50c3ff7e1950ffdf7b20a8ff7f7b08f8b7ea0ab555f4effefffdecbe3df577ce537f42aaaa4115fadf61de3f083792e0fe86df8aaa25f07ef56aa957c8865fdeeacfee9fdd451a7e7917a943ef0b22fa5d1f434241bf0a0909fd7a8b4241bf110e1452d7df414240424242ea1af4bedf05fdae90df2d16d1a0103ef4d15e01a036fa4c172ddee25def70f7d7c2dfe209a4fedcd3826a1de8f317bf053f291e2415afdd7387bcbdde61cafb0d57f444cf94778bf76fd7150287e44971c62e280ebc503b0a94e88cbaae343e5d972ea2ba2ecc84aabbd497eec6495952bbad52a8ada7b6f9c6b80ddc564d4a97bdcb3c0b56e9aa8b5bc3469116e9be4e48d100ab6f877b1c94696188db0bc18158bafa6ecf034cb448f785db7cec01fda7ea4191967b50948f24f4d07f41d0d775615dd7b985ecebba1c78df2bfdfbabae6bdfd75a982948ab0a9027288c8c4d09ded75d988902c413be6899b2150349f0be2e6a213d46b3b8735c96f93dff32b02bcbcf0050953484b3b44055d2fbfa774d75bd3d03e83fdf96b683852bcbb22cc3c01139f02621e9c083efe9206028fd19e87de95f26ed9c73068640b0bfb38a2185f4960fc27b97a7ae4d4940f4d43f9ecf77cb1b8c73ff83fb494df9843b5d600f39e77cbe2e9fa735739975ce59c629e745d4e59c73be0f04125924ff0e6fe44cee44d6c9cbed70f595c30e15952ee115189752cf304b221543ed8ab8541604cefd02a8b84026ad68ed98cb70650d303034c9cd0e1dad373bb0eed81f7326e5100c418285c894284c989c56605b6911e2188e3164577c80f11549f31bf98ca67e9a84a0648a1531868d619a920658d68fee82230c941b5c6b4eb2c0e1a2829a15ce8c39520566a3a473ac8186a402e72c8e0ee31c0bc816766638d131943344c336e30d1311266cac9c49ad10e639d272bb85eb419e0922c7828a161a2754b1e5d0f85642e9786104489537534bb458b04a579dd6c681833d48b66c1ca3cb80acb4188af18b56523ad2925ed87e2f58a7aba8206ac86094b541a1820ce3d90f54d559933750b89445bd8d7d01dc5049f912d5560687f19d184626161099f3866ac8962f2419117398020c2770626f725b2c60fcf05941ce2b899d2a29607dc56d9fdb0e67915cbf083aa8551327126006b59ae223ada09b434cbc1a02586866cebc99f34ab32595b146cad6a66d47d6989c565b30e79cb34eff8608331e91b3a548f10d2e5f1853407979c1b1250173a638259873ce39c4080ecce0ce0870be8d9f643552ea980f2c3728d61012a74c9c2d54b67421c58c0665642cc2bec2c84df9945ca4364e595c01e478a3ca1014650b2f3b0c6c4549f1c6880c3a39c2e40c5590d1c21246c6d4f1c204a4cea4a474419372270c123165d28827541953b29002669ec61365c22f618ac4e902b3facef4937c6d1183c71b22374e182b574881a2edf18a8c1833516669b29290bd173ac8ceb478ed8071aad83963f0821627ca97953039c19c73ce5a2ce32c29392e2c65b4acac15e0ec7852272ab8fa4a296793627556006ceaeb881a1634ac385d4d440ad507f9d4d934262965aa525fdd22148478895971720c3bc944ed9c7308881ce370c11882f9ea60f437b3b836ed730831b3664a853227a8c16c658a371590226405982e3749d81045a52b6fbfbba56dda783c7f1a4ca9e40b264a17dd522ec7f01327689964d3dac0d952bcaaa2d675264b14517efc0465f05003244e05acb160ce39e70e160945bafef8f6c718bbf06d3037c9554f7e2099cfd96c5a94a80b62d7e7388d9b9d9f001ff812cea73b14be3e76af06c62f5b389eb06989719ef8c57ca149731a2a589aac708c01e5c7cf9259bafedc34e7c981ad06167df3bd3f6bde4dedfbe69a48abbc9ffbeb4fd254bae6bca6f8ed38d0f5fdbb81ee43ed134b99ee3e60bcdf418b4e3fc67fefbf8d526b63adf5d66f55124359b55a5b67dc5875a3d28bb2d65a4973e661ad15e3e160bb8cc7302fcd8efb76f665adcd6fadb5d65a6badb5f8ed3b12eb2954cb5a1369edb51a6e973f5b5cfedde5afc98ff0557213c2cfc6ef4718e824e5b9f5b21db6faef25da5aa8927be56d1f1ab24ef6c879d9813c3fb1b32fd93fa313662deb24bcd822eb581476e9ce092962273a763626cf6f1fabbb4ceac8730a790aedcf44de3aa7140a216fc429ada25a6fe52dda2e649b6a1bbe11cd38d38e16ba96554de499d4feaadde6ac13ce484bd34a4b4b4b4b1bee58efdc852bd27053a0bfef52be24bc76eebdf7de7befbdf7de8be1afd0dfa1bf70d77783ae4fdd0cf7bd8565ba6b336eecdb75bb6ed755bb6af74db8f7357045b820d8a76b753d34318d48ed930897ca8ffccf332d52d794485d7d6bbab7b5d65a6baded49793c3d9f0b3f16848630bcd9f3a0dc434270f7c96104c1395506d5a730784073185e63fb7bd61a5000c0dcca870e74a29a90ed5d6a16dcca874e74185c3e6ee543273a0c21733cb7f2a1131d46dccead7ce8448721a4c96558247feb5416c9834820c17b404bed4bf0f3a17f8f2a752aab55e4e99ac538d5586b3fb2bfe23b474f39d0be7b0abb0be272d63f346efb69ceaa9f70f736605ccb3a69f8f3aa53d6a97cffdce5eebee6eeeeeeeeeeeeeeae93bda1fbfb77d91142cc2a8fd122f95f00577ad1f67f236e777777771f1ab76b959774a0ff0634e9f5ef1996479d316720199135af3950926b82ab6f6725585fc813c298a489135c9376ce397f3e3dfffb5229dcf9cece5f613be74f31d307ce68115e3161b2c5cd003a946051c58093634b30e79cb3968ecb8255ba46045db34e1ab28a8ddfb1ae05142d29921b0f2d6a3ec834c95a018a140cc02c4329722eacde7035c1d293c93c31f2dc4d55e39cf5e75f0927cc07e1a6699aa6a9ad887e6aa4ebcf8f8e91db34f9b241152f852246b92a4970d45081c95c062a6c564c117e0df101c682b7302ba927708831ec2c89db4121890b82e62b07171b50d25762e7245242142e5e459c34f131a44e12373e16cd0d181629fc4042a69836c4180915171d7147ac1c31c674363edb98b7f18fcc56968db82e2c2e8218638cdd5dcac82c5d5dcaa57cca996e5ad0dfdeb40dc2e1fcef9c2f25b19a33f18c97ed8e31a522ae5b900b8aff1d3a930dba1f8d4d76a4b48b01e8107b826507961460a669ea39db04dbe61320471c1972c2315da438d0ad593ecea6697eb0cd026cb33471ceefc062ba85875b6cf5f8d9f84fde65ba46a1504815b43899218896b129727265c839147894503bbe20e162c3cc9db81c2651cc47d69a2c3bd804d7749b3f82699a72b689246b9b3cdbaca282551c92264474c8099aa6699a9f4dd334cd131de85d002521a9deb82c8903765aa83946c1b2c143cb99e9413129b3238a9c1634295246461484a5ab9111f0931e3d1dcc91a16ee31fd4fc715baaeb6983d889e47d3194176f48a215194582237ca0e318316efc04f025a08d8d71d8b498231775054c10630f67a90739e8deb563b32e42bd972cbd578403adba92d0d65a6bad75fdb784eb2a093e5be9ca5383f88978a97067f4f970917db2d6437eff214a9a92ba5b4b74550d2c124682b100887829132fe23cf6fd9584f3d8ee5452f75bc4480c6216e4187fc199f4bec5d62b83135277777777771f3bb7cd42c449db8f2dbc6d16246774db1e8d30f92a66235988689dbe64ed953e4d3478fe2c3efa597c14b4bd10169f28a1dcafdcce62a6e0f96bd2b6492276f957ffdb775f897fa7f9f6546d26c1aa3708854f64bf5ebe4c3da6b9ba341526fa7defa3b275a2208b3b6292c1b1d2494d1a50a9a2c282cb8d0e30a3c3ca8f386eeec4c151a6c0f9bd19c9c0c238891293ca6817a7b95b53c45878a08e822b34b8ac15665c65955f53903e16582553309ec9e195257fdd0c8c74a46a1cd95c542d29a14c2172c15641c1666c455714b0325d599e928307fb1931695832d820d940115611b2bd99b90263bd9e4ca1f1430a1c154db654a85d5160869a28308a7356b2dc84a52726582773bb2eca8d9a12e55da7bb1bff62e72ccb49e4fb51e291ae3cf7eb1050c1432a2e0c132c686ce9e44c2c851bbee1906306a78d7f6045a7ced61a5b10336557ae937e6087962a517260e25411ed0e1aa8a9cfc8635a6c758624e5dca40df1c0480e35566e70518d9d4d983c41a990081946f1aa82834630276b0ce3921c6181268203fd4564a5abcf976c4e3a9b1e3b5f63c125858218323fcc96e438430b4aec8c4959a203cbf04a052bd2353d9bdcca93ec86142fc06ea040a1460d990a3518441764567429b9949cbde8313403a284c5dc1a152c182672ce9044905ca1f142859fd959a37503adadbff7e3d9bdcddb1af62edb7c3de36cf2f0fcac037b28dbd65a0bc832a51508f7b9779ac784df621545666ba9c89923e279fff16ca535076ab6ad937af888f4abc4ad7f552a6efd4a43252b25a22fa1af5f29872ff1be676bcdc3f3dacd81facd817ad7b583b233eec6eeda5e5395a8e640fde80f5dfba16cbd0ef0eea9122053fd44fa3fccf830b44ee73781edf26d58b5a5222ba32bbc5f8d90bbf745595bff6a8462f78c84bb57f4a6b67bab04c8ddb3b1f5af121c776f2801d86ef7feb44f13c8d8bdcf5d1e766faf3c73bb87dcbd07125a270cbbf74052bb0734b57b2f81d13ae5dd7b251a96c9e747faf56e73404c5714892251356d3ede10b7b5966e6deb74c9adfbb56788dcbad719ad13efb8756fadd31008fb96bff624b7aec8d6f96ef4ccd83ab7b6ad7bef85d001097b15087f4844faa96ae2067b1e2aa85fa9a8244469a844fc61eb51874e076afd4ac3fb64e54b44c3ad5f89789f2690b1f507e2d67b6d3a6ebd0a00b937286efd1750a5bf83b6e2f038c30685478aa07ed40d3341fdf082ec827421a60290a07e14a91f5d1b3a8f7d81c6063ef62a802b5b5f70dbfad70fc5adbfc8ca978e8e0e2cb261978ea858305694e52b7a3ba2f2e1e8e84b1f9ac094869a078505631dc828b2d741d146551ee19794f7631a5aa4a28daaf799864d46eb54b4f57310965edefd1bdb6d6b104ea43873f67a74eca068fbee57a4384d468b84fe6ac1d8d6cff3531a3a50bff73c00da1f8616493f075ad21503b81503380ce0ac9305a09d8191832c6906c60d9cc323b44efe46f67a744491bec4f31a888722d7bcb557a5610732faeb4006dab677faacd3cfd6ff59fb2eb8ad1be2b6fe5337b5fd2fd0b0541786ba164e6e6cfde5a35c7b551a22b736cbae554fad4ac3bd811610d5ce73c6e5eb371a0a416ffc431d6057873a006ebcdd5abf99c76e0e5de990d3068ba4d4933b6da492bc316d5b59d5962a38608eac389edec6b3944bb19c764ca1b7948f614015b86171244ece1492305b47263c5ba7878f355165beb8789059a82ea10a51418e5829b3460e8d2340a2e074b12ab58e45761d9888a922b2266e0d051e951b6788a4a0030d94343f822057a8da96c4d88a43e19823ad4d4a95b63847be9cac2240eefc6b36ee4ca444c38f5c956eb8d010831b52ec2a911c59f45040ea8eb0eaec0d5c9731364166499e309d24064b1595112c35407079c44ccd96592bd3a6c59b2e36362323a516e96ab4dd48073deb8cbc70a7081c206bd8cc61193133eb79211246eb8bd7132c2268723cc93a6de0ba8055b515310b9b33a3a1359c7332b5269873ce59e79cdfac4b775dace8cb961d6fc48808f1824b2266545a59c7e49419526ee0c6d2d51aafc294d1b15036c6a7cb6494792983d860a9c271870d6deb1c92d683ba818c11258e8835034d09861aa43532c94245650e07181642cabc746d6186a898525206488d744db974389776e4b61bbedcb183a6cd6c0bae8d75b932204044927857665d5fde905153074e19a42c47dc0b3a5d6441aa98d508e69c73d6528049227e002942260b96266580944da154544d6688c9f106c50c599c0b2ee642cdc71829b22546d27e90ad918a71e58d155c922c453df668c0b8b10109620687e5e38a768b43e64b0a3314925867e7f62223ac9d59612385c6160b7b02d91417725f900c7db85961692c07b5dc7d8a8b12272d880b2662650f32283c0ac08226ca17911658aec26c5085afaa3239d4de72f020db2a8fb4c048a25d09b3c845e0021649c9ea02d6c91dbfc071642b764a3b4a9ccc2ec850a019637301034e74c4a9985206c7c4164d0bc7b314451c452e532ad0d676816c83c0a3e7aa312b122ce5b1b3f2966339c3cd9dbd48cbe103e92467cc56ee188bf253a56247199d3228bc84cad2d58e89f0e1a31ea90deae4bdf86b0c493a3636448fe53063337ce998d027c582d45a6badb5d65a8f59d24f005fd2b0f5a7fa815a6bfde98fe7ece3a566feb384fb19acd0e36addf861a30952c68f3358a70e312f960c052130846b7351327ebea4ab6fbbcf22292149579fbd5a63e04cd152539124498643cc5886a31e73922dc280a9e0f5363f114301488958a241fada92a5460b285574648901412d1006470b878db9b2a9eb2e2686c5d3629e1493b10b8b1b5aca9ae7640b2c4a49173a67658eb77389d78a3637729c41c172b12435276cbda82aa230c6a5c411c6a6d545c441e58c591c32df91710a782dac0c83ff05cc585119434af1888115b6c4e7490daa2c73595d5d5658d2372a4c4b97613b7caed6b0d5597bdb7242bc01c3020f39315d82a851f380d02a0b0f38584e48814b62180ba82859dae6b418d2c5ce132816732ad4e0e6e6cca84a1b701940e021650487d98c23584e5793b1e5316ee75b64ced8c180850917ec2c66c2ff6b5a423406fd47d42688d1cc7c990afaef022541acb6462413f45f063a8226ee8f1f3fea044fa05758fc80044ff464a52f1853c113570d931e557a6382277e849870925194113ce151c8be6804f1fbcf040f9de0090ac004b19a4b9eff4c10ad099ef8911134e1264a284426c3a0891317c6540f34c1acf23c00f74f5caa38301541574f0fc0fd9de9c6095cd07f1ada04af18211b31e8bfa215823b54c7b3426d0f52354418f49f86a9e0097c3decf24e7ba32ccea5d096d9d7665de5302635beeff7718b70630b1b4305dd480e6ab5a5fe213aa0d3e9be84126bf925987bf73ebc75aa75a0ee6dcf003b95c867b1d0af0f08dcab6f63219614fdfb740acb379fe7c0a635e97a85a5ce58602bb658a77c73f8b5ba5bc49f1f381083497f97bf10cad7ea90ddf9022be1c698e908c517210d322b3596e0bf42fc774a6f7d6267f50216c9ff26d1b89dc54cc124f07d9998afb2551ee62b8c71d63ae78c71d0cc4e4ff9aa87fb438c0f535ad649c3872921bbb92677b7edc9ed6ff55197e9316dd46549daa88ffae846b796706fbb636ef26ad9ab75db4eb875c25869af3983c8399b468c01c64918600c02638cf10e449d9d8934d34c34f368a6a5d6c9cda3893491593b5752c220090325254b42e84d0f610d1185dc4e5fb2426e43451cbbd3f7dfdbfd4ae8f3cc1957e1a1273d89ad4e64a8d3cb333b7b9fee937e7b3d64de79a2399f6b09d7e5f5f0bb1efc7af0d7af73ceba2ccbf75ff90e74cf596ea78531c658ebb73dfc74753de8dfd3d3d081ee9f31c6daf594752a9f9e303eb3fb2d51e81e0c5929061ae99aba181fdbc5e4d8febba4dbb6c7e4da5e39d8fe766cdb63d26adf1e08250c1efb3e10b8ff6d06eefbbd1082d0cc28d9f76f8f77be3f30f5954ca9cfbe5b0bdc2edaf6a805b9773d3ec0d4e76aea4b21b5bc6def8429e2240a0531a499e0f561c7c9141a65aec4a811bc9fdef75d773f628c31d65a6b5d426f2bc281f68fb6a4173fc669979d0811f803cca47bfb9f04c26238672281041edc451f552f0946a3f15a0953cbc367a6404abd01487a9f047bd574a0c2203d1c770aa19ca55992529306676906472c7e792d81c2864c16d9714b982a1f69d47ef891ed17b63daa55a949a51e3c79193dadcfe77cde0f03a8b42c932fe1bf976780f37939e79cf308f4ed900f03a8d61c688fee9fab897d9e2a91aadef5c71aa1e4dd110fdc7d5d9766d38a74b5c702e07f9cfa8eeb276d1109c04c66d04f147d133d81deedbb92964322e8a0ee7daf7707d1a9264e0475af9ea5a6080e54cf5237833a55054bd774631e55d759eed881a8d2f084832a1a8a5a6d831c07549ae0e8284b5a30b4359df179d393c5c74d6adf9a52644c197b98d1b22565bcb2e1c5a5c40757591914d50d322e78b419526709932c2b31266a6538b290956338eb09d79db413904a56a880c54acd97569c189b768c830667cec60daeacaf1b295820b760594992460c5f8cd9cc563032040d2d6ecc15a8e1952e3fd08c4c79890bcb6ff28bb335498997fa988c9a34d8a67ddaf729b04a575ed35e49346dfdf87fb670600d3906c16233125c7d48beae92a80d21c32308b671fe71e07d5e586a7753921fdda7a00afbb6650cb514582d6ae33ff1b957f763163adb4826f4b6d7123e4414721bc2d2a1a4a4b48284d62acb9c9f884f564fc3a7ab27e2131187feb2ccb92c4becdc1fff92ae878bc1f570df04100ebc2056a89db399f1fbd26716493e82042260253082037d04205a7b25a1a73e0c3f507d98fa10e3c3f0c3508ad63affce7c74f76b7e9daacb59f72ba1b7f9ba6cb5de69adcd37558dadb495f3f4256d9ad7d4da44511445d1f3bc497ddb4ecdc468ccdb4ae88dfef9fe3aab33cfb73d54ddd9377f596713131da8b369dedb2bf3cae3a545b93939533dd697fc72e9df5a229be6a9b53eb5763704e0cfd9df4dc88eb3cebd9ba3f8b64eabaef6cbf267ad7dd35afba5fa3bb3f56da5abefb1ea81ddf687ece79f6fd560fb6387db3dfee5ab95cb526b5d9ee763476fdb79a2f887cbfcde0b917399b37efd3bacb5ce658b240a58051021c28fd7910a38bbddcef6cac7bff24cce6d73d8f6a8b664e39ebfc5f857969ff5f07ac0183f93cd7f96bd1037ffcdbc6c5ebd0657e2ec3b92ae497b63bf1934c8192c92ff051a11f5d6990c19ac93f564d6d8eade8bad1c57f90f0f3d89abfe6737b659dfbc06eede22f75eab111118a102463bffadbad84a0749d7a4db66bbcf81f9e805dcc5fe2b5409e676b6fd84cddeb69cf36dcbfa8eb91eac4d5e0f778403af6ebb6d59dfb82b5493bf6f48d28e07e4d99196247ef68831f729b76da6af744dda61b6bf068a49d7240ddce23bbbb3b9e12e819d0a94a0fdf43e01f18fefdd77d7813258a48b811ca8d7c1ddd8f38f45ba3e35da64ca46a150e823e8d8c8df9a1fe4ac6dd6596b6db56bad33564b0861687b60b70f9d32ac17c21f3bc63e80c2524bf742941763a7802d5d7d3b235f5a49e88cdb37d09f43d89d69ea8c3ece9c4b2d27765bff24cd63678d560cb7f19de2f986a4aed3e9743a1ed32d9a40eff06aa9e8799ea5d6ba9d4ea7d3e9743e2129516b4be129075e2cb43b30a6c252f85ae5c070e771678d76bab76fc2697928ba966f5ed2b939309fe7799eda546f7247da76dd920ee48993e227e14bfe4e72ce39a7256dfc249248249148e27277f726242e893bdc9ac41d92b1b1b33bcbb3bfacf496655996abd65a6b9df6ca377ff8b3f9e5af03fbe6979f7ff6f50f3f5ecd6ca6088186a32d3681c45adb069d6fa854ae341631e80cb26800000000a3150000180c08068462b150305023350f3f14800b68903c6c502a134863b1480e23218a82180842180618620842c428e51c232b00d2f69bda36e9e97ff6aa83ef1534edbd7ea56fcff4133fbe27404419cf8bf8e5edef787fe7a78feaf14ed4a25be9dfa51044a9279cfe19240b24f5d4dec95babe6980d56cbb18e46f7922846003927f9dd388836ffa46e5f59b22f019b01d801fc8aa65e39b522097b95f318ed3c7d205725e5a351bd15024ddab68ba475d1513044e9a6ebd55dfd86c085ec5a8ee5548515957a97d12be50233930ecd6ad592cea4c37a7027a2408f012599f7704c6b04ce309512a08816f638e3f007fc9118006b48f6104352f5bfc82945a19cbb8f5d1f3de297f7639076785b2053abbf5ba4fbbd5a1d5e5ba185f89f9ba3b873f11b9e2c9f7c34aa3311fb10f6b334bf2fd59447a337f601f20bf16fb045cbfffa6ed80851b1e70797537a616abfe016c3ba2d5c053c0c1fa1411c470de0404515f212415dc275c6847cc1b8b81bb133b25e1cb2940580be013a8e566c23940c5638a7e2307da34ace83e8bc97127f90656bc9ecaf946b856f2ababc75b177bb7e8976412e02845b5790257e4d5de1b732a84e829141e195fc0ca64b9b6f2a6998133e90298cb2a634f62ab2a432c26188ba4962dd0c8b3631b313e01130aa13d66b0618d98447411530f22e242a23880aae1b9249944f26b84d16608284216df64eda96eee26a064c3166ed845cfcedeba69c6fb77383b2e65fd6c87a89e700e0ff658ad8fdec1a9c3d9235d5ac50d539aa103f0afcb160910050d95500b837550820df01fe604673e5cb2ce7e297cb03a445a30113e0cd7831d769207eac47c5b5bf9ad121d4b263efbd241d6998fd3c5a3741cbb177efc0229ed038486102e42e26dbe3946c9dc6a41b815883a5040e100ea8e46a5d90f2d9280aa5de6bab5eb0713c17221709bb9688669faa42347088b97f95c554696055216067157b84757e7103a37d1d1e98a6ef7785272dc7721ac654a6be96979d26c92c42b170551152263f087f82303df4ab6bfe63c16008b20ff2b7251d64f2cc94e277265b5bbe623ffd9ce7cde5db88963398aaab15748769bd3e7daa178899a72a91da03fdc522e1133a905987b62cfc1c53356b35284ff9334ab314f401c2202f02b8e2a606278076760abc2b32efd2d440e6318cd3d52ed858421ce3674542591405d5704b80686786491ecf9a1ea7bd780bb1abde746e3fe6b904ca3e56604f7eb68371a17c05e40349ae700566b22b3326bbf404438a30ff66b4151b44641aa3bb5248893027a447b64294141caa4d1a7e4f99f4187539c275dc1968bc33f49134ccfa325520bc81ce040de9e5150d02fccdc603fb7d26e4b107b980ec2a79e14d69421898db8f69f0c7cc928ae9e958748ab0e59099a6b7695e71fc9805c6ac81224247d3fb5a25cb58ccbc670eb5e15fabbfd5cf8e261868c2141872970c73f5dba57ebd48f884268259d6fbaaa9567e72fa9fa1384be2f7043b5f87ac7e41f688e60e36979a9774a9d90a8236f09ecdca20776886f8df4da5ca1d11a5af9230794a77d7be06c368549f4b4e58e28b7ec94f1820a2da872cb0278887bb1e42ca61363554cf23a69e0c5591ec0c8ad040ab27f0a4026e9d6c7d5cea7c2d508aac5f460a48d370d1d71fc260a330046b0238680baff0321d9787fa832c50b350fb6eb7d35727a6069ea62330209055adc5ee9d4316cc260df81e5c082d6fad794053edf7d04bb532134f4cf389e5e0906b3146e9ecde89d8d071ff258c44bb72087ca74e6317bef249690509f8807c5b40829592d16d8b29778b8d86f7907f6d4b1e317e121b3e8a714261f59dab011958919d88c3a31e1a86c94b339c5dbacfd4081b60d58e5b9d6aa7a9ad937c5759755af9c931067b622abc0bba016e86c8088dae14ee54dd76fd38b57876ab102a502fc87917d2f5e331eec59964c3791dae1a4e8c5b05951b9b5fe6cf393aeb8c0e70dcfb39d6515070ef5d9dd299372538445c558e80dbf27fa172fdb86b0c57c9869cbd22a4bc15f079dd8024e26c90c229bfcb6b3a4f4b82489ad34e8a43417ec714c5d39445bcb43a725fdb0021e7501bc94155aaf177ad490059c1794e17cdaeef798e902feea89100c39f4c977a8333e1c861675b373ecd135c4992168fdbd51bda4e4d17bf03837ba9ba3a26c7385f674e740b602e79fc2e22f3f5c85b8973ebd8d94bbda7f51f552b658b7f7a31fbb68149c77451c127bc3fdf3ca5ccecfc07576c48f105f9116e824ba4e300d39197c8d009c1d9386e85903f6ec2010805ab997c05272748101e7042e923592725c7228609a33bb213bef9163d4c5e0eb64590d1433b09aa8a9073f921b265bf8a53a2112a36a0250f421d10ae80fe7fd714f33829620038b51c2f16b21241f402ae106dd676302978141818f894c81f4239e0e8c0b038ba5e9f8b95908d4386208c0001547279fa39cc7f654dcaadcd21fe2c69aa9fa3a28b299f23d6ced0afd38d70ad699aead0c361bdbabbfefa1371b6fed32ea051b199b0a7f22e4363d0777e58f5c2d8ff5781ee04ae50e486b15870712de8db36e6ce854a1015c461ece0d8508955bd399e6c441ed6a36016b3710a2fa42bc944f4bbc015c0669e54b4f6c1e57c669e5f1f0901ea14a66656923021e3ecb30ceba4eea20ac5f95616c70e9046b9785f97363b6d7546a4ec459ba5a78f2e07c66cef9e6b2e064f084e019bb00adcb7e43b6928fe6213825e413224a1f31deea484de7a0cccc11f98589e66723df2a345084f014175b045795c25bbec6c3d68a76d9f31bd4fdf9e569762a3e1da9c150ae15ef4eefe29354261177a643de3fb761c7dcb60dbc809f66d9f43a4e2e44c4f4589af5291f584a29bd8db276b51f291fe405112881a159746f8e03901c709fea6499c5dc619295b8e96cbaa180f40b06ec06d8c21638724997aa1fd74c9f1571da51771a0e881285979d55f9e952daaf24ad6033c4f8ac6154dffaec4608b0e3b7226af5cc223feb6a34096c6fffe2cd7fa56eae7934637397347ea22452ec83b3098c7c71e1a98085a689d220a6257e652df1ea95bb0304e9c3a6ec8e80b21f70d0d0fd9131afbb552f0ced40eb37e257c5427fa94912596b100a847a58167e6d18b2aac9fd1388ba7d42eee645badb6d9aa09a0dcc5c956008d8a62bbf5543f6ff1599fbfe2d7cc8b03a3c6be9d68578174f72dd8cf4f66ec078cedd1eb99c5d0798fc71921113f50ae0c4434970698bc52c89e493ae516253181f9c23efec9835d450d717b2ac8be48f49a98c8da3ee7ea48c9b518ab93492053b88c273b0611fd59decd7aa961381edee7cc481c4b9cdea78ecf5d4332c8cd2bcf1544be7ce008de97a87b37db6f08928fafcc8f693e0ceccc61ca68f3fac7e0d2436941b9d3e0fc6c3a3607fdf255cb4b55bba38e43e7545051a0a9e8cd2800339bd747a02c23bcb5ea51cf2c0ba7e19dc50bb3998c7e5d9b11df4f30bd884ff0d7ccb3e7e9cde62d44976abee45a3453c4df47e5e3198536b5b98928c48bccccc259c532fc7342959ad3306174c6ac904b444279de4a5a59a99b7595a4d36d7363c41a2ec4feaae4cc3aa2e6a5665ca0d7e3c4ccc0df2fbd74cb61e901281fcbda60d5e326b69565b32af5afcf6c02974574d0d6ee8c15aba6cd5480c7ccba9a36aff3c31d5b2c28a8944001c40f8da464593c9e0dcd29e394def83993db81de0607ac82752b62daf02b8064439d32ee202884b5081b3de35c50fcd72e70d6d9d86daf46b0192c9bc677cb7a1f322e82d4c1a4135bccd2ee4abd7d7acc5587632aa541c9f142f186e91738d3420aa11283409e347dddd671015daf7d2e187c528e1d980fd3a611f2e0f2e503fdae16abde6df9527b440e373de5b2578c1abdac08c8b81bb6280d7bead2514c7d3caa0d598bbd82da1c7e74102bcc09cd69f944527a30f09b3ab52697a5118cb45db67a897f9fc90afd741ae58c97cca1a06a33eb6aa4b0e2bac05dd7cfe103d215dbfb40a83d11e0ac30a64643eaa000b8476eda0c2dacb1340682ef425b64c12ea9c2998cff586940985518b4fbd9899ec1aabf2e6bd966bbe312b43eb3b5eaae0140bad8b4264a324798259e28ac6599bdd6ac84fe30751dafb53143ff924e14f546788650ab90772846497a650f5e4433f98994e6c2be785eb03f409cc7b80efe5cbce3e3e7935d68f98d8efa689f18eb6ef9453e8516dc5667fbcc07c8c4a58249edca72cb6a2b35b4406206853d2cf8f081d3a9f3a04a5be70e36eee75a0cc179e0341ecadc26984f3eaaec908209268d6c01e81684581030b99b649caecf7c8c71ea62362361081f7e6dc424902b40d9df681c1cf6a0de32aa2347b44301b7f9df5dc07d89c5253444f4a60b98cb2c4a701f010295df27b15214ef975dc851861f4b8389e697e3366a1cf8f05517d67741b923db57ef4f45623f359a359a9b4592a4a0422bdd15673c857225ad41190566b1536a57ad4bb21b4d7b287615a04fedfc85a4a70ece7cec8616d76e9b9a185a5cae0c17081e5d24647601533949f6de5e99ede6839db96017ff20b2b1bed0af5bad5d32348a22c03be8a6f561b5e12ca4d200b57fe4a5ffe866561be26d3ca54c983a48823e2fd90539cbf9310bcafb29631843ec9c0fe9226f19e51bc1b6961ff922412f1acf5812e717d301283707d11a4360b983c5fe0faa73c9ada6ef7b4d8d63bb9fecf81558974b75657928612c6b6d6e0d82737cc55475fc66b1a9550e7a384e9c041423b07de743b0ff94304c45f77e6a91b6bc25e6590ddd4e311747505d73dffe9eb131878a5e568928633a03c240cf0f49fdf6e4258505a24337f650f367a9e8d17fae567fd436ebe3afbc893f0a1086c45c4d48f8588380178d060ef4ee8cabf70aee0e1a2830cae8dffe8fbff830a1831287dffe60a68161c394846ccd499806d8ddf79681f527660655027fdbba9cf01cbf18c6b2ade0e4e88070a465130e72d901d279196787c6e5d68a15286a71bf16586fd8ffe1abcf8f37295c484a77d531548aace9f7541200424dbbe50aeb39e56f819f099d53f17f10a0034c849502f0dda532b4d47c974d2684aed50aeaf2906fa45839d8b8e7c19c27227bcd7456ea5aa636956c5306394408b2e83ffed42a1e63f1265064eb6d740f243f5bc5bf988c23ca2e3eef078ddeb7b17580e74f58ff035275278e05de501e55a03dd67c9dc4b2778ded8296fc14445913a8e35232dec0d5dc48ef9b1dbb537630c9ab05cd90f0d569c25ca5faa9d3fff1d36d9a1a1a755255fee582c2c9df0d4000c1ea813489204d5087fa04ba94607faf297a14ab01e0408851046a94dd9cabe1e5ccf0ed56e749aa4b4517cb67e0defd92f8bcfa897c3835ea8891acfa6320c110fd0b773109f851258518aa96023249719ce01ba2ba1e27f30fe4e655897e2f151306eac37a576c776e011b727d6844cbe9a59820cd044c365c3d7d28040639c869cb77a1d8cd1bc1f9f03e60d317591ff1348677c356fcf5b131663bcd1fe9303bbdad57fcfad84460f3836e35635e2f965b8c6353afcda6128857f5d604ad7b17689cdc74800f819e95a3949f9bfa86849035d72fa3a6ae2b31e9996a4ebfb813d795fcdb42eefca08fc9f9489133514f9a9940ccb9b0d336ec8b98481a21f7d6dfaf1ac45d60eb8fc666353f8c7d5e0c11b00c57f3bbe03bf8902b5ff9e5e64643cdc994cf0eade6375cb31df1ea5ff2ec4bd33e0f4c2cf759cb911f75bf601ec968872e4bdc3f0675cf432b66540d841814eec6e47d638dc89156a9c20afeecb74dfde02f1bc0cdc4e277c74e239055faeb4aa59430c4d709371fc07ee09bfb5c65afa97dc1fa48431426efa2a1b648741df92a87f550e2380f671e89030ef2b9212ccb63bb4380416f1a22f449d12c8232035fb4c03d98fdbc77b285beb6d400b1417d4ca6e9754c92f948d00f61f34ed562f38bdacf438a9c9a4bea63e786290e1841cea579991a9a40c146ef7a2e35487afcb8f8159af90128d75399c271ec6e4c01b55a215cff61b6db91e1496ddbd4da786d2b1b1ec11888e929c52241d394927a122bf20832d9933a62a64f057480e77160d882095ebb334c81ac4fc669ebc96080e77d4efed75e83f2bceb26de1aaa08136b5a5ebd36b26b1622a843377e930c25823fcf065a925d5f11606797105657f9ffe906fb08d58daf6843943755b4e5d60bcceb648ed04d2d9b15be30b7312dc0d3d4d433a9328cbb7552cf8b451f7f50ad4b657c71c47fa704b4b5382621fc6fa0611decaa8e88a64a173e65aca640f60b12032a068808dc7c4b83d009dd7bbe8a0dd8360b819e8f39446c215a580ff1ecbdaa4d0179a0f31cc3e16db203e9e33e8a10353e2142929372ac40320d2b284bdf501ee9c6d294c6845a8b0133f83230c30a50c465256aec27187481c5ab8a1166b746b82c413b83f400dcba44c0733cf9c3acd3946e37a6936c9ac1d9ca4985d7ab6b108220587f19ab7519fbcdba85b459aac42ee355aa62f25b7f4f1ed92ca3bfb48176a9ff5b49df9b8c570683d2366bd3021850844eeecd95f1507c6dd58ec6bd37330bad04efb52a7defaefe4a6b0949d534e7090b334e732ec510ed7d9b7f00b8a86153e4a9298bffe6a5e320abd21084eb01222230e86514b1d8ea4a7c93ebab263c483549e0f63992d2a72604be87379769ea9744493136fd23251b1cd81dbf2a0f3ea51700862a5271af583b2935b30b0ede4b2dd442b68d1065594b2f62183218e6436a94abdf4b0f2b4401121468ff3af6e7ed92377f0edbef340432ae11c63fc11ae266551e2f3615a7c7688a13a7b445fa74e79cdf8b31f6725d200b7dc66980a1c445c6823e2b5c2aa5b535919ba916ca10e1e27fb863955eefbf7a7340d2c7bc7262fb811d7f71646eb656684bcc8e3c87fcffd9661e7a887a8f5f9f1b1328ffc36d9f9f8255774663387f4e6902419a4a1ab3e5f50012b007d8cd4be38d6695c2224ceefe73f6b2121a1c1a5518c39de93360b4c0812d553601cef05a89c64c2b4deb24b0d27f96464f7e31e4074302f95b4a5c2b9c0e485c6bda7d018c93a426fb0e36b81d91c21cfc7b51a42c12098e8ebb802279447c02f66faef14ae0caea5293da252e2f287780fa612b8f6698964f89b88015fc264ad5bed91ecaacd579d039b207c35622ea4de467f4049da37118057e05100406ad9a6bc0e24820434edc94301e245f229211faf5db5356588bc310171090a17a9911e1aa5a20e2110467c36abce85f7ec96aa850abe9f0638fe9ea19d5429beaf250154a546b90ee98e1a9e99d6835618ce0e05e16447438817562ecbde555d3fa0509dff55e6baab98e29c9bb8324aa588fb421145cb2c84482f46e893f8b23825f089c9ec2f382d986e1c4ceb10102325c6191e416541b724d3d7f39de4603e0d0f8830490968341dc3b6d065fbb20bea814c8c7cb152517a0c213e78d26ca967a61a6287d53cc67eb8e7cce51f2a5c794ed5a750243a06d1723e3d11ba2ed6093f3b623d4322464a54be29f7255bd7c2052f5bf6b12c9817e6a48b9c254409d95fd8c653f23a69898ed89a4fa0161beb18a6481bee7fd8c9fa121000303d5e30c76a0503bd8593411cc8ed6ed0881ace465bf30af430c9710c35b3dc790c68ba49031a0c6bcc51ba97d7bfa5f3440fe39b2b2fbff8709d798cce4a9e79ad515bcde669e92c90ba2a06621195d520b16d87177044a32ed703d66b11f1b8b37a84b8505026a49365e40b0bc68c5a4cce0e2ae407f51a4de4d28e8f76bb6ef68497d9c621d2558976b004d66f8e4a5f0d2480ce74b71d14719a5133f553e0aa3e29851143f298412251db983e3a8756063594193472595ee2dcf6d0b8c2a55c7184074fdf070c911ce420245c7f98514fc94ed4794a766827375b8a0c43cc798301ccf982780ad17410e1605cd677e52f23576988317ead5f71327ca7da549b99ef61e83ce1d6029135a38b6ebd3f91ef73617e2f2978a9c75e8b0c530e42e519e9d2791ed4622e8adcb80d17ddb6b94cf870cd27aa80458a86acb944cf00a7a84414814912a58f5d485e4cfc1883ea798352267ff639cb3636b2e4aa2be6c8c63663ae4621c7e3d884b312e6dded3755573aac3c397dd40128c3ace7fd8c1658ef67e7825cd0aec802a471d4cd49463127cea865020737e0a5496bd010648c05c29415964869be13b01e0e15fb5516e0b86bb130a31f5a44762833c705d2b3244e9398741252ac9673e9da982307c4ac45bdefeafc6d544ccf7bec4063f886b44e8fa7069253db855bb1d1d935507c625357118a0e73690533073585686b995da2ae8844d30ce14032a3fff2cd09fadb82d07039207d1554e894099d4caa81d0f49eede612b89665d0854dbf21d08c2243e30b0a2acec7a904722c59c19176f97b55c6fbbfee33c34c298d11a56c341e6d99031c00ff826d1f7029968db2beaa0f17279a65d70b57d991e0d28ea9754b2a7cf79b78bd2c817be699636adbc72163cffd17b48a81a5ef65c55150527fc412c6f6ebf3b60d3970810f3e2f49adf626d0dcd985fd6f283ec28659c55738dbd3eb7ed3ada002cc232fad04855bf8fe6595b71421fc5df6917884f4296f083f0e7401e3c6897ee45fa877d383309013378dcb9f41ed1e5e4b792f5b0cbf2734f753e543b52710b406ede855f4a55e8330fd0d3ab562d71b9da4a104f07aff30423dbc4a23a6dc9aee33b97b84e73c2bfa585e3b5ee154e516a20f78a2d1fe64a7b5c95573033c0206065d5298957aa3931c3ec89f65b651296158f95e2a0ae60aab5f2d410f44943312ebd8b75cab82d1aaf961ca670b48bf82907cbccf909f83279c7fa8de25792fde8222cb0f4b2fc306f77939cdc96375217a543a811581a6d87b9f89f0950abc29d84974f70c2f96fc22962d3927e447a4a30e53a25a53a9c74a2aa8b5aeb585d8ae1daacdfd9299d99c30b224111df1a2280a11417319bc27876db2a26a88b0e3e0c52c88ca66143f4db7933dd1d7a63ecfe705f15ad26c8cd936d3d7e5bed5bf88e7756ecaea205347a877cc2e5c8f255a3578f45315f9b74785859ac74f8f6e49ef692b3ecd49f30d790e3edbbbd206207234b1e35d297323119357608d94315a6894f2cc3460c82908412796fb2b0d071201593a96ba01c07a5c7ea21d11510c9c954df28ee8b3409c019cd5e56ed094b79cfd4051cee78a7a90f3518a7e5785391852797e27bc5c358a4e109dc464f9fe3b712d929df990c4c93b8289ca9c27950355428f3706801f3e43a41d2e0787653fbfd5a7d7cf8d88992694802a522d0ca5cfaf99efa405c93748de63723833c6b18e92c83f7eb3eb87c08b60048f1bd959e611ea75ea18cf2941c995c33927efeac4aa08fca284f7bdcee8c0b6b7f25a7baca1909d56eae6a1b5a135793adb1dd11fcb8f9cf728ac3124722d102673e79ed7eeb43871fa14bcefd00d95252e7fcc4b357c781d643efae1e9a655510a1bf26d1f103dbbb28306e82e9b517dbe21d24da95e048801a180d5dccddc4e7fb31ad0525926da69de554b49901f47605066b8beb16bccc7dc83ac3cc75a12bc8de55df017e9993cc309d9268599132c8cb2c8aa7f3b4936edb2b0c873b5655cdb56d2195efca381d5379c596f6c7509f8c6d2786f7787eb86fc64a23cbd78ec14aacaa056ca3af4782dd533b955afde331b36906bec0984b008c121055993b65a31c5ce4972022d67546d21759c2edb20471f5c79f0b0bbbb3a7be0c48fce7a9edb838fad3697fe1a7ff5a8c45917e6c1bfca202030fa6cdd5844d9c1cae2d699b22eb81b71afb3f20db2498a0751fa4d123e6a30f9192041debbffb427c210d9cb90d290b354a71b19e306ad6f1b1d25837db2f55ea714271a14ae420213bb00b20c9ec04a2281856c6926a236b50971df014a6e9823fd183f817dae50578adae19d0cf7ba66f8e5d5728aad8816d79173640140c35bb636ead955106d81f9b7dd8f8239aedf1524205371f4e34a3f7d391ab14e1dfe7c8c03f7d28f1437c749ad8146f9f899f19445c86e458160fe29c57ad32327ca8d77343168ab8e03aea68bacd803056a7cafcdd4296bd8c5d8c329baaf852502ec5d206a1d6d5207af6c54427f907fbc0b12cce82adb00e278e313abcf4092e4c03b06c8ce93a169cf10a753668407c47e0bc7b83949a52b991ea115fedb74a0984a918b96a9712bc9bd124781db705d3c18d9046cb9924cf9258a8464ce9c77346d763f01f36022685dc386d3bd85757433640c88537ba003ea02453a0f1683fbfee47079ff366835f480789584b01378ef9f07bc7f5e382cf107af825fe9452eb18bdf0fc2dc0b027ef00d9b49bc6e5712c60a2ba74b669a917744a894298c8f9d3f79c59929ac297a22f8719e0b32cede5e8b46e5e6d0a803b497fb7e22e2ec5a1ae74370ca7dde14eda18450b5c7d157cdf03fa0688fdaa6750c3d9eef2d048a39cd98fc6b8e8268b510058cd0800b3f0f158c959dcd68e1d0c53bfedfef9e1d2e487550bdad2191ab4bf424a21b551be3ac5b868d899f58360aea70120ba374007e32f680944aa52049c4e65ade61f1c4584673acbc12bd0494f7e7f7709e03414c66da54d7cc3efb529ba7965f6c4da75554918595f03eba481e0b72865ba3d52d72230cb67b5590c0dbf0ea2060dd351c5ad3bd7d431c971434f1df7a132a4e284f1b52e2565eeff67de9faa7d93c56792ac2b69da92311ff9c76238c868e39df5d1ff61c94ca0e5d64e8fd6f19ed1d9a502a5e64865b18feda86791b6093003f07759b81c4ae371554464175f2be47b9a90760a1bf69736f5ad6d5f433380d56e630a9e46e113fb9b1dd1ba651cb41d3ac969f9f167399712be667dc404f296f2ac4843e3efe03bf4627c74f9ebb8bb1b656168c20bfabe5838771a4822272f68cd5b989fccd26af896c2d5aef0e447522ebc63e63f43c2d950ac83246d6bdc50ddd9a9aa06cf6054b4d11d1c9aba49859d5566d57b9eab81cfc6adedad6e19397c1c7fcaf4087e77d320b632d1c1d43af31bad522a0e6accee80ec35b531f2d7664cd48a2210108cb894d80aae626dc063ec40b45df8eb166f490b3f0293557cd94decddda0b44c92a872370c65c9331ef388b54b47403db17ee30a0b6f97681398e76790dfb2d4d1f6d256b34ee4ee7b6f4094c411cbdc70d18c8df25a1cec1fc4372535df2a69d555c43c32cff64dff5dc2d00b6b84922aeccbe979a1bb22661ec88a93facbc237fd35c1d13795cd5d3ebba6a5a8ca8c9d6f8f62b3e5faae76aa4211242f20f424d8eae014a11215263de1bd14e04d46f1e862e5e48ba355c843082f002c7820e6ebd834a0f33cf627872599eb081914b0ec26b666b7dface2ad41f8824ee36328b1002460ecbf6f4d5affe08b849b48307746913c67e058a655a9aa5b848089d3dcb9e9b644acd038dad392fe89acc480379b1bdc6ae154869b3b4ea47ea5648eed70a86355101928f9292478ff34fd06b33762e2a6de651d6794271f142eba5c8c16e6feb411df35e64de23bd251ca009d0c6bcee8e750388a3603d4743c3c998a11891ddfce1b1974c9a8aae280b1b2a96cc98d471c8a53b83e5370095d1c5ec73e456e427d695646e2754ef807834ede1f16921549e2675b43ebe5919c24b3088c0887ba89fe0f19c8ec4e416de2384cf7c57be610edcded406cc6d337070bbd746c7654095bc04ada2d7679940e439bffd9dc0edba590ed68fcf06ee328baaed9852d19820211f9b278422216672204bfcde7539bb9f31698b959a79854adc2737cb553924f900820bedb22c604f71a02193dc821bc4bb8e00b381757d4520a4247fff15944b16c6e2fb5fa100b7e879566423ca6d55dc272c0e218644d78fe443d4be92b8d765275000366949fa5ec6b682052739274f16e19700d3fef394edcd0a2e3dc506761f68e6439cc9176c62eebabfec879f64557561dba00d6c8b4c163971842aa0e7f5003498a8043a26bd29a4e87661525f5318d80f08e97afc6ca239f2d484f3faea2ed10dd744f07c51354082cedfc2c1f99c8480a940bde7f883c9e053d2986962d6c5aae7e8dded4ba0a52aa5926c54356202020d4f97ed7bfbcbadd84606ff46039dcd8781d5da741926e4439bcaf54a5f3d35816affeca86d8645744e573d30b863bbead3ac28f7a927c87a6b5dff7a0d723d601ed37551fadc30db9d27318a51cd1992ce02e26982cb77153181d7029992aab6139a15ffc3eec640a972a24502f07d931311b3589daca8ddaca8ca53ff8150ad99cc80df1de4fe594e0c76921b1c11e543b96ca7d107e2a5061b76fcef96f47c4a726acbe81ff262357078b0a634fc8b6f62802140f90b44f5be0336cf67a1a20e4db9583b9a41bac7071135005f6cb851be4d2ce173b0669d710802f43780939119ff6dfc469296c7dec8a4f827077f12bd724847d2c366f6d50f3583be400fa514a83f35ab4edd5c239565ddfb9a877e87bac002306d5771a2ea9df8d0a5ab4a1bca523185db467641c8c0fd2f4be1b1c0425a2d8c80963f514f17950c6541fcd9b78c0aa4a9955ae701d6ac16fa665f6571f36a98ceb8390da545c8846121cfa0360348e5c4fced1556e501a41c651dc1fbc7090d5e98ed1fe2fb4e74833c1a9d1c10eec9318c133d293fe44f9d83ff7eebdabc8426fa1e23889594aff6ede906046342078f2b07638c382507515e008ff02dd7afc1d3d53434cf9454030308af7ef48d152bd14032a16f5d3f4d2fc2cd3a5d0a16a902b7fe767926ebe97372b1b93c97acaaa10f4de1c9a4fdc47dab741dd740017bc223c9b1168a809369b129720241741d27edb8de20b4bc07f3102d62cee1ffc664a10d29a50fe4b70b80a34a9f5611cfb013e6eab85fd9ce6fe6bd7f39d2cf8f016f121a993e5ed9072fc9ba7dd66395cf720be830587ab4ba63686b3d29241821729c277a8b2345aac068c11ae7f611c9b4c87f21d9508b9cf6ce3fd3879aef59e3eeeba222c1a5594c0b5174b536d144e67c507f3ce978bc8c4ef000494ca69ab72af3541b68310da348bf09e3f3edd60c81978e9d52a91546d6b49c2c58dac7a204456cea9c64d26049e0af81f6eb2448b5b8e90e455efa434ee71056f0394adc8c1e470e677f56cd4959d4d9e9aa84e0d88e15182d744b6f64662ed6c4e4a7cdde0f1392ef5c9ddb7c0f4a69298d69e1c7cde1d4b744d4ef299ab990c2eb1b1a7ff93e16fbb146941012173f03f988d4fe3481d6022a410131f798ac94448f86280c6e284f14cce178afa1dc5d089d739e64f11077125b496128434345bc195a7e64b2ad17621f32c9f397365fdb274d5a33ff56aa51f9fa24eae98074263adc8d9608bf4498f97ab7fb83198fe298cf8e7fc64367c93b51899f30cfa86c2d415ed8b3e9f41a3af31ff649667656f0ba3ba1248f6406866d669a4cc6cf390a8c937eb255a546f37e5a7318ffd36963ee64e7fdaa2fb999ecf0142b3d5975856e54177ad9c9b042208ff0fb9075cc24374d5b732444ecf8e96b3505d8f6301a4237a08f260819d0ac4afdbb97e873d5f42b4e5284dd71758a642792722592d63634c663cbc23c9688cdc37a13a26af9500cc24627dc06c7959a13fd847fdcdb3890d967399061224ea19a3203304b52d16ba0ae932c30183a089ef350fda86733f958b24f3bb4b847126006b70cf1dfd000a0ef743d3bdec348b5d6f92646511b62b0e5068b8739f7d01b278d080b7b421b064e84343f1e67ae23a2c0fd179271740cebde4464ed0f420d664e99c984dcc47f89f1d55e74fc44746da0ec77703ad06dfc08016a92bc7f228892ff87152731fad85200b2bea75cd3d1f5b1dd420bda641c2f305e0dc0be25b1013d2c9e328f9e0b08064dec0215410c6b52db1553a5ad99c330f41ddb2a3e9d09e533ce1c90da1422c636da61c8e77abc7905f51c77cb5101745a052f6a97b7fb5913346ab7245eae4f3242fed9d61735bc26f5318e7b04dab2640c56af74ccbefdc4c2240580a6a959b25e8b1d74a770e6d1ee0ec941efe0d595c3fd26cb61e55dfde2ab9d86ef190e36b5e7dc7476c22a4d0c342891ffe74678cf1b8f3dd808d1acc42a54e76ccc2233a54b2cbd0b6636621dad79360058fe92f593324442301cbd062a46b036769af911e44371f7d8cf8e168d14021699c7fcb68153c18267a0b144cebd5ac0db96281897dd262e0e4d9d40f891d1fcabf1da1a5ece7b9070c224681b3b99c539ca2aca60d1f55ba8d8d2d1528c83a64bed8a592bd51f6b76391367324686b4eddea1661d070f9546cd69d1af8ee764b5fdd58dc5c4dce097d440b70b0b02f6b5591bfc138785b914ab8cc8235229fba7ac292e27db40b03f9c249ea2d5ecf3201d09364b4b6f55549c93dab4edbcf509fd5a9ad4e1592e9972b3448ea88a6945336559566220bb11828a785e982e80b8a61946c39acb91a9d6454dc37925ebb047e53ffe354b34ba6220b3df753b81fa0af558b3587915d993848b0256cf0a90f64e614a8088122fb59497a39002f463da93dcbb769b4b0720df287d7db3e22f2910b3bb29359e62b8df7f93827a6532833bc5e5c859b403df66531422028976299aa4b71a797dd8edb31bcc599a8e369ff530f4ac7769e24d7e452147cd55835f52155d8fd4fb75620baa3e04a3a049011141fa9e75af926ecca48d6913a152a309926f6a3a06c4778a849c9afddb9223f446ffa161718bf0237126a0ba4be80dac1c93b1a25f1c7b88e99517924457e04aa7c0a59386ab53a13f63e1feacb6edcd41e2b22d54b39dd3f584f57e33bb7ba7bc42aaf0017dbc0567315c86ac28ffe6e798c91b0c6bd8ee9820884432d927dfc2acd87ba20c39322aaff8b11aef8054e4b9eb89d5078a0da13e52c271d31b10d077e3c5ae0a2845754d654b4c8ed6f0168649972f119be129e36d22008319d36b8b081c80a3941dfe08cc876a40bb29f2658006ca1bc70734e04db3aedbdfa3b86a12e4bba870e9a3dc4ae8b7caadebb69b442f8e183e9c19fd35b5bd04e77d8a1a0d8a38b3a20ec2162fd530a8811b15abfbe8363d24bbaa31359c5e251d261a0bf0714cfa3c6039f9aa33059506f11d60b7420e3aa0faa5db2bed6ae00bc17934e95e0d2ae08fe2fddb990bc9d2bd687f558027ac5898e74fc2afb2c204ad1b01345d74fa2a7d0a84343b5bc8555668fea312ed57b8cd3f376e06cbb372df601836bd7c2636d2435432390c5b308ee17613fb5784518025506711449e7c69c72c7e2b46ddf2b35505492d4c007f1ebc0730313ddf08da9e5a18bfa936046530f5a701a16ed068a52c4a6ab23695c5b9a1a2f5118515bfa45c7a93c1646695d4970ed04fb0999f1cda7d7d923790c0e2a0702a8f87d39a5eda9eba61a4dce03aacf8f9b16c1eea53a58bcb9c8a6da0d1b0506d938999badc73f04f6104bc8a70e29cb7811d125608b8f867ed264730ac1ffa4a5798075088092348a08ee948ae1a84b68aa66700f7e4be528dad6b5d912dbc2ca33411b23ef921901e640c75fa12ac4093be2fe4acc254736fa7dbbee92ac9244a01e258f127c8a61d92e2abe4032bf9e292ca76b0f0cb854aa52045b756f442253c03547fc9b2908fe205c344b3009a7495777d365544751fd753c6e7967e16bb4e77fbebb22e403a709d6a348f46a7c2227793a15ea648a3f1b15e1623af0911d8d9f093d3694db00e1cd4a573df5933e27d22f9bb450be8dfe5ae209448eea4186b4b15e91e4dca8d5f25c01a991f086bf2c7c393e3283895445487bccb51b42f83a4c65dcc3a01e50258e3084506faf29b75ac5370ce1c7ed114cff5f69f705961d671c1516261931c6c8afd804b594d242ab1ace0d260582926ad954e45ecb9299fdce92b3df8d40f85cc8c46e2dc0a0a7a29324615075cc01e1d479d60721ec50f217f46e62e15066cba26fcccae93209b5328557a3b8de006dbe7f7f75b530437d86f7ca7c46a247879972b624448698931211c6354117c82cc29251c828017e803382955229243f0a6b5659bca27fdee10a9314e96aaa29efd945ca220d7801e245baf26b234b08b90eebfe66db1378cca05f1221564273f03262375499a9107566bb7f3970d2f2a295067910b8168fb0bb6bd382ee92ffed8065a0d25ba4a6218be9b0a1e362fbea3390c9bb301d66dda3ca33bc0f585e3f6ae1ea09c69378774e0cf4625448a2c08805ff13b2543da75237133d28d0dd53d8a15582bae7542a8c2b7717801bbec88fda388521ad87a61f5ccc8e8fd550865eaa0323c5eaeeb63ee7950e70bd541f97b6dd3f7bbf64e33da629bbf9a4fbe0a32fa5048d12ae9336b3a5a7c302e72408c80eed5d26984ab1dbcc5f90f4e474d2e1f284b9302cdcb377ddb1037497e617bcaba838d9ca96e2970286a2a0f67f58e36f638e03c21fb8f93769cd5cad40d7fd41e2b2ecd64f2a3044f74ae41e3ca0f2cbcb2396f64b1c7dc5e76e2e60b9f8e8d891a2f2b1ceb54b83218989d695effb604cb46a85f1e74125fa3f909fb3e428708c508f60a7f6259391dcfba1cb84bf04cf93c4021402df6e9679194476a6206e0c3e115728fba5ff681ba79e7078113b27313802367b01dd40a69fb334e0898183369c110a38ce50610619646d8a66a51936fa09a3b21115ba041214dff0dc7831940e4aa80f0cd71b6fe2703d75d72d314471661d5de5425039d72c194fc6f847824a031616b4464eec74a624526dbb48439e07e68356c4137fe66414f2c767f6a7824bddb5860e0f6299271b35d5d8ad5f005f3d4fa18919fac4b2adb5e682de0365268345304b2b35eded08c8f31643dca6028b200a5290a2bbede788caaae4c8d84e94d6e81ae23263614188b503c3fc6b1d795b332c14b7c63c218c7dd174b35d6ca3abab323b6e69f7c7d0449d0e554ba00b515b8b8f1c557a3f1721b814ea5e2523f7afdf0b31b6d882bf049d6196d3045ba66255f427a79a3c64546df59854b1fe87d88a8481752b70f847db5da9e125c31a2acfe584d5df41e2b3db2cc9e88a8e4dc1b741eccb872d502e6f238ddd3c19da158628e3a92a222bd66e948259408a4f0b548f87c05393b6b6ddf75b7c82e07838862425c52daa026fe5656cc13cfa7f7c5922df6c9e896d3a4c15e9fed1ecbe39e5b3c607f19dc8eb5170bfaa3ed63714b894a39f372660881f1a195e1b3c8e47e8e41b1d4072429313aa0c8d0900539fe830018161e66cdc79eb74eb6d740a52ab230f71cc0fe1a80be1ac6d27de6e214a2554cb5900efd9fc7b2e576801b0df2c32e014d9307940b551cd988f3fb348e309a70d504e4d49d568347bac6e20e15caad55d037b067c8b5e029d587de825ccd8dce8b96ee9e8d82c7a1dc77ba277a75d93c3c551da74dbac62110d3c151d873bdd926299e56a6b5c06622f2390143e2eb28496227f796551edae14e45b7d07755c7f6ae0f9fa735646ead498d424a46bc89c16814f765a3327ccd2416266aea9a305f9d8c9292a8fd26c9e23a6214a373eb82549a4de269e5fdf0fea2b4cc9bd884b57e68c3d655893fe36b5a57125906145ab940428859e1d275acc38ad2982ebbc93ad7ca571473aff5295bb063cf90f120551423dda82a84a2dc0eb0f10f45b1b58754d53769685f14e538a3e8bc50ae8f92f92e4a2c24f485ad5c7250b9a1cd856dbf57c72ccc4ff145d9cb69f8b5a46c4c7549d0b509f69b847a7d6002f1db9985025d13b26d6340550da09c8bf3e9086eb5b87092e9047923f6b0b44b2b3e24a61f81f1ad3084c3d2bf6658bac443c09c37e31102227ed2bb35a14175818ba73fe90886d21efd49d7cbce2e9dc3ad460abe63c3b6863fa1c0f8ac231c65c6b916e886505490bc39cf33836f3c4f6d9120c93c8da2cb30c3c704acb4106f7d14d306a585d449ec32340c6277dbe5f04d08d0032e073568725e210690963b114c7c5f846157d0a4b3e7f7afc6769f34c1cab04bac40b98a941b9cfe8ede51e7712f06026ea38758196a702107cad2d58fb2c5218f7e7bac0cc16807ac817ca1bfaa86845c12656e2899ca9726fee4efde3a3f875a5947943497da40316465046afa8318430e06500c4f6cf830b46b858521324d133d931e29325c4d132f0f8a618774affb9f752986b155ed2296c999869119b73516eabe1a3b91396ef89d50810e3a27c27b9566833e1717ec08ee8c745812c5ed4f42d519c563a9a8f152a00c9581b788ca3897a8048831628255fab1ae079e9525b594d2ad5f3edefeec8fe8a6684751d7e8244d007ec4d9bb69bb48c2b09a19b2ca28cb15524f57598427f83f8147bf547d871a8f3590f8f9bce7e76708729dfad14e03344fccb0ceb694bda3e010ff86a7a5d01f6637944444452ecd9e7029702fd97141cc4af01c648236987f72a3f29bdee8172b0ab8cba548b104aa3f7dde2253df8e0b8e0293300b8cd0f2c0710a0f99e9172f9f6f0065ad8a8c83633bdfc0f0cebe9e4c8a45778a719624131ee3a6994f71f6fa0ee8a0c7671af1c89773a859d008f5bf1c0a19ea30f55351101e60575fb1c3c9a60756f1a7582bbe3fb82a27b0805add050d2e6056978e72ff0a396f20b253f8558aadb0561bac25118de01e09e96ddf68d05b8fbb884ad24e42070da39539e44225209112096d395bd3bc9cba647f30910c2e3150065adbcebb97164dc219fc23e099e4944134e029477469c29d32e85fa2c523fe5d32f9afbffb0c16c13bfe845e8314c94fd5a76a1f7d9985d09774051f2945fb1f47b5848c26a2f416841ad79bdd821166b8ee63a106859741f60b162fdd12722ffcdd7e089ec182fff838d7d6132b7baee8255c847ee79822c7a43b7bc0cd5edde3dd7ae0263a327416162d448712743618f8ebf0b034cd59b213e71d26d01b2fbd5901d3bff513e09b9d003a9f00b180d9086f043ab79d419d5e9eeea753dca1c4640c5112ca7e955c4c3ce0cc9096a9b1c41893922d60e826fd4aac3ba5a7b49b212a8186914136f98e4c0d3fdfad389745d884c4e0d8452a509f2a39254c683da7718a4b31972283fe22571f8c0b7d857b43f050b7da0d96d72658c2245769d48272b4e3b05d199f67bda37daea8d1af79f1e8d27617db01836b6441c28168342ace009a7b2c190219523b15e1b951d6bdc930a8726605a8528793e36ba6ec3b04ac9c068a37b3cea9e465137bbd1c7ff23b07ff92832a64b37ebd6c4ebc87595f3acb9d21ffdee8ac5ec83d4befc042de62cf37d3e9e1215dbefb95bff57175007b4566ebccf0d4b3011fa4578f0ace77143611c857721a84f6e1ac6697c8c97a2162ab142f4478d7c4988e1f24bedf8e4ba4e62c68d7f6814f96768642ffd9aa5465bfcfd890c48d3cdde8dc9ba215fed86e52adf9fd540fc5aa624e998b8f67a09fd8e77247b26c84bc2e31bb613201c13c0b2de9ef55bdce787ad1a42335b08ccc4bef58935ec6d978bde83395014a2b0359225ea3cbe1e7f325e53519d76474c181d2e505c64c8293d38c105c2d08660462c7ba9f4d518188b9ee105d5a602ab68eda64354022d264b8dadd649927c676703309013bc58056282951c700eb3da1f73de6fea824cae9100fe2a059f2d3c912f0a31f8f3068c372bc9b2fe94c1f05cc6bf834769af7622f0dfb8543d3e0b01da2a7393ede3eab65f5dcb1c2d7b5e4de0eb4735869f7029485d8c7c93fe78ba16f080c40e48f81f781c043609ff4448cac8260df5bebec17a5de992570de7d2bb14fbcf07e8bcd4e48bdc66f03cbf8138ec314b04ebe069d950d34154418347b3706bd45f642d290f02aa430635c8e3b91c8e3c200e4a38536d6d6236446b7f51346f27df28ecbb2937e647482f91e07db04fa3735797413e97b732b4e3d69ece834be42a681922ed406c5f67b5950e2e40b3237b09a827b6af0d4ce51dbbaa4671b3d586ab0f1f4635dd4bbb0bd61966d1bdb9eb25e36a9413f7df3990047c81b3736e049cde12e79dcdc9dacc14b38ef6832a2f8cf9a82b3b66b9f9800fcc95fd3b5e047a09979c76a0cb691dfe9c4dd4bb0cc0f6846bf54f9b666252874bce69fcb99ad7d7a1b8018e18757f91b5be7d50986bbf452b938e119a4189b665c1ecc759afe06e46846550b07add9440e698357188857796734a15838c7430123193ac2374707c3b1b7b61992022c333a4de4b3ca0182195a48da7d57a08a4e6f1524a015723c34b8f07ed21c7e18a547d230083fdcffb0d09a054fe441d475331f1d9e068070db0cd5c6b54b20d81c823bb33ce19477b2d19650f30a1782770ff33c5cd448265da07e0a8c8a007bd5a4f2a227188d382ff1b467346d780634cf0c3087ad0c9f5b14627e044071a41c71aa150d82586fd7e62caf30da62058c1dcff576096f890023a3c7d4716b3eddc368f941b30d6c2fed0719f452e3a09a5134ed0c087f6c4222ebddd115ce668847f107c4d42b1b0e3b22ff60bb86e1d3bd3d13b07771b8d3f7a33dc5459dfd4d77293a66ac3a1248e4a87a19872816b36ecc7a5a6e63630b43f2fc1dab3cffa2ea858de67985214f213644b40728007666851882145803ed21defb3126c5c0de5492deccd2b34be44f1a3a0d0fd04f67c6435bb41d33e8622f4439a088331c91bcc456886cf5d1a544b7bfca7cca52927d43c0f72599e41bcccaf7702bdff63102f6085ca12571e658e51b57cc078df03c67fdf03ec67c5609baf4bc7ce5a27542620bfc650d4d9492bc5b485d533d87f70a9dd174127c94f4eedb1ddb3df7ed5ac5cf6f528ebbddda04102628c7d6004163befd5f9211063c5c1813af98549f8cb475ac18e32aa62417862d385735af4bd843f435ee739317e5c0adffad88e5fa787418dd33ca4b545e75b75cfceb30bf11545381504ef651150e606e00ec210fe0227b45fc4669aee42f51f5a011c28602c5208adc5109587bda4966b19b97d64f91a76b08a366b8d357d9bb44a115862ea810ce4bf5282230842fde044d1879550b8ac0cfb5dca4627947b6d2c0415a56d01d6534834ff923fb7a04d949d358d463a5f0cec78c9f44ad870e92293a707619bc43176e4448facbc47a65b54d4c7eceb97319e0574ffcfc79ff811a41db9669bf2d63b2627bd5cdae254ec317409f9773382c3706725bb2a489daac5cf10a00180a661ebc02dd337f85a9810316c0075c173d0d50bf81b6c3d5ff0a1159077c5a56a50a2c1ec88581c1cb7d3b5591fd6ccb4f5455480bc59dd58a5d3e1df557a910934775307b6f9f0c785b062f774659470dd1ce2d059b87337d26d4a78811193b974296ed8b031f05e3a819fd8d0f7836b84a02f1986d2805f918e56a9119df0b6cc0b0c75c1322beee6d0ceb5a15115f080c29ddbbf027b49702d7b35a2971f87d75b4cac10ddb8da0687b5ea9bd68326c30f901264453ce8bd241c7dbf4f8967fd25f58b9d94037e67b5d09bbe6b64367b99d9ce7298d1e532f03b4301f89ba095c452439b24aa8baf0dcfd3478c6a2d30b6cbb3ce6db65db5fc487fb1d47e951db5617506e092abf06734d244f4266a52472adc07f0de2e58581493cfd5f5854c33ffccfda601a1a9ce10b3d8605e0303fb4448715820eeb24d999f2ceb82dbbf5bf0c57be6f2a00f20597e38f715b7762126b630d4a747b2b55d778d6b34e956d4e9dca1252bc3e5cdb17635c67381b7329ee1c22e2f98599a86531f2d0339ddac19cdd024eb63a4c37a5fe403099245bf3473f4167430b4163943f4b93bef6082e4f2a1906b06e778f383a7d4da702b1c1871db52d3e6c389decc373963a53153dd4bdbae5c4bf2f5e87883669840662d10134477ec1ae32c9a45d00cf7c34bd2c258016a1d4b8c647e0024cc4ec018e115d975f95da706149f7ad3d4549fc0f5c275fc9e7afe6ff39bac0489693a1bd4a57ba7e566d557f8496cc895b4efe234261fe1f519a5c8904543f4db6657b6af538295ba6bf761d600dc409fcbfc12f2f7ed5e83ce21a15512228068fb8454539fc10d80956049649b4a4a34ebe39f15c49200556640798bb1725cc355c61a4e19b47880e4080eac53658046b457278c2a50fc844118ec355c3794cb9134ae19aa2846168847707bbc8049f23ec269d79389d62c19356d93790c090e873090d145350b3725f30474298b8e13df8cce75fe736fdd9ff597e525083d5f10e89ff03fc7b0500abfb8ec40e717972385081b869d1f6503f23883c4e4e81b799648349dbb5936093c8e91970269fbef7c25a06a4c65992cc62f0b6f6b37539dfa193d41f069f55d24b959a8171032f11d4e80c524c171f72baf8428116075e8b0ecfdf19941f4968e339a73c51e6bdb5d8a1769753e04fb990bdea69bac48f99dd06b86413b811c89bd9fae304f57bb2524819e38911f20706ebe9609bb5db4903547edda05802816b72adf97052991fd02ee8a52c2af5833bdc90635bf6cbc473016461bcfbd8d23c5ea91f7c845094d2caed964dd81fa84c0365bf45cd1a4fb310d2baf92d7de3fb6ad67b3d0ac76841fc2657e75c2220520672c7fdd7b07c283cd8c6b4ce4efff751ffb616749a5c572bd77b956e0cfc37f38d3ffb8bbe3b845981af0431b5d62aa84f2b156d01912f465c538624fc401d7dea24f4d82538b8f17b6cce1642d8c9a409f81b526080035e0cc5a9a0e633f5610620f30183d80e9bcff9119e003a6954340dffede51cd032d5ee06769832fc4493af0e97d4361b1ff60fe962701d57e3495ed0e57ba453e3a08b2623c7bac66832cf0ad8ce9a56e359b547ca35d74098ac89541219aa447d368b3136a572cb7bb1a425a3d0e245b5319be360cf88bba0db18249f8be1c1e8cb62a523dfb8c49b5e6f883af47b0d72f540d61cfcd8ccc96667ae1f91c474cef8236a389a9d100d48ccc95ee0b823645f0c5c2456a98b34e351da828f7dc51d535695f4c5a8f201ff3c7796e968257806b2307d35c1b0235ca8c52c55ba3de6b0ba58668fef800999484f7516c7e1c41c69644e3acb772445510e96f9a21ad8d593179c5d3cbbb3c779ca5552c29ab3aa510a9fa295135e880749a391ca36c8d9875031f76db684ccb21601ffbeb8fc4b64d94681f912a09d0080ae50c3a8a08cdc99ceda4d5f5ff431a203fb80c3a0742da698bd663a4b9f757622d3eb6d0b66e3487fc0cb3479f12d1932cc62c7c2ed9cac3339cf1e56152b07513241d7207f8562c7d7ae33758f3185cf870b62232c763a93ec7e14d2e8314a611d947c04df369932ccc4869fb341d452dcd1f618e75b4b5251875ac9a70b19b7e31b6459eee263f81651d9c782cee8215268190da4e59b970d89c56205188266e37f099f9b6d427b78cab992c1d50f78c3eaef8566fca228e6c16a7fbbdce2b8e3c12449153b49db843ae5ea8bd45ff5e4eb876f492a0e15f6a0787b49f170c4717cb92988e42bece588e4ac24485f63e0b3e67acab7b7a1bc5ceb863d3267d05d0606430b280179c580ef468cd002d54c08d189a6c3e74019a299b7b30f81df90fc132fe5051bf1cc1704769dd980d4739e0d09243ee576771d7c90b10fbb26d004076a6d80535e90bc7ba484a7564c08acbf0eaabe6b9d85441f8146c0ee927116c33417f03f480c68d9cb500764ed62a1078d44109b59cc43596e1224a3bfe105223214a381a810c6c7bf5ebeb1b8d1ef008dd71dddc84f416a539d3f0f56c26c91598e3ed1d00d47db09cf0dd9ca4f1d2767864b4e72956d357e485cd0a6ea6923d928adad258cb8fca79c4e63415c6942ac2721a6de4811f7eb6c45990820ff7b9a3f4b1d0118f5d30ea73545ad2c7f8e97cd93fcd8e8572ce9c65371472b2d85ed9eb930b59eae0dd5d6ded3daf8909c759b73714bdddec987dcb9a181c354449503c165a8605db25c519a6a07b19c4f4be80fccc9b96fd00b1442d5493b925725d0e406380f5a61f47a4cc33bf77081a8536d635f6ed380827c292b9ef20fb2e486473709eb975f11522920759692bd42b35cd17a08278c076cf5646664de9a01650d225bdd8ac1a44103b40fe1ee82f5ad01c14919694ab60320512ad2a909995282e18486b031539f50e6081655e634be7e5506351396351448389cc8e8b32dec3dd40c8a6f67d2a710fa9b24bbe6e211790a6ffb60e8c41aa1fb8404e520af1d7f40bc2e0e374c6c98d959c1458357f3ff8d4fb7fcc1cf5cbb4bb0299706d1b3205320a1c2a283207b8776a11b900c16535375bc6e28cddb475f89afd25dd3c159ccfce8593b6fdb3989f5615f60a3054d8cbf863fbba8307ca1aabb7f469baff061141a6be60798c764be691b076d33dd6e3f6e2bb26d5373d4be3196f4bf12cb4104edfdd5b7e166c599c30b56c2322fbbb66c21e9161d143353aae68654d5605f87ba886d1ad7d39e9c48564cc98f4fe86854f81bbb232b996a332048e1fa3b6e6aafb4b740396ca46bfa38f675d6cda008b1d9e23f50031ecdf8e9d427887f8e419798931beb3df7a771963a5511c52f6f439e91048cb9345cc3a47cde3959aa837f98f022f78eaa726d1089b8026fcf2e42b267be6246af8d721fb986618693a15fcd0d4270a91b738f8e540f22221d622778bf20a99184cf6ddf264702c19d46fea7ad6225a18ff6c169344046ef932b062459fa9419a70af58ad979565759a6fe59dc63864ddc5d811b9e93b18c2c7f8549dfc0ba8c18a0ffc093386b8589743c223416473cbb3be5d16b90c8a9f170d1848df34b650747e5802227089052a02e11dbee52bcf723999e1ddc2a4ed7762d42321de8e067d3055e836877e1e8b768b58be8d0f1f6113f5fe434c4f12d39989f37b456a1f71fda15e6f6768b128c8ef4e6d548ccdaba6733ff6f97ad3b4677abd77684a0377c6fce86de6f08289dbd8475768ec2ec0e9ff5782f03ee945ae40f71e4f1ff03838f980cc6ea091e13a7905c269e8bdd7341725ad0ad9cdffa57564f235e391610b6f4c0b85cd3042ae39f17a6ddb2c34991461c56f98900db119e474710ddd7e1bd4cd7f4bf51503849f939c203d5c4926a8a49a9b27db98ff0af7cfc08251470c8e1cfca16490ef644cfcf3ac63bb3ba27ebeb2e9adfb48b24b3bcd0846f302762ef3212f33f59afe1dabae57a3925317237fe34b501526e451d5b8838cebd1b98b9919cacf9782288a1c3c9ed9c015237244bc855e9b9acf9d8dc9dcab85aed56dd71d3e15be15f12f3ebfb3878638a75e422411834fa08ca6a66e6aec30bccd0bf8e13bfa25303134b16cdc0c04ad579f8d7420728131efb0ac977aee8a4e8a2a79d68281f7d38dc4d13a37a8e1f60ca03b68cf98bcfa6d2e693b349ee2e735385cc0f57e9c0ed023aa8bdd9b4fc12671dfcb50484e8abef81f8f16d1a8c8b5c22ae6e3de1f84e4fca2299995a8d4df7b1d584745d7c48b6a8e153be6c533add27a3231e30fd33e3e6b9c0d52e07320a3085fd89c1f63c031014fc5394e83a08f3bc708f917d780b2ce929f8863a88d1f3f31118ea734bcb166944b7a5541dda35e256fca538b3869d6812819bd8001c3e7e01b0b79181b3d2afd45ecb6707921a0187e407574b7cf6e4ba8875bfc4d5a70b113b7a2143c3fb1afca6c92a5c8e522fbf389f0d0b4aff2c8c0536ee8481a59dc981e78706a2cd1e0831ab5ea239c109fe1f33800d13819e18d6650b494f503831f2b5c6157cc8d5546199b3e6ce12c31771928b550245f4da6f021e905273a3b5ddda9989ba9ce6cd4a45dc904e2965ee6c153412ec0a8923ecc66c320cd9b545af167ed88970e644222a2b13e185c9d4b3ee8cb1fd7430576ab1e1b85c6bee88fb2383d26e0d98d9a7e11faf90593594553d6e3189c6c2bc2d914f83dfa78254425542c421d622fcbae093f537d92c988a95098d41a99eddb7a1d32c987e208dfe7b00b43a400ab217e25ae8045776e34b7dbce26b514ecaf8f257680ae2198e20c72850ad6c28465204fcb80e257ff57beae6f33634afebb99b17fee3f062c240fe35bdbaca5a69bcf6e2465291becb26f0c14184df1ac6e5a26f8a2933b080eb4ea55b6043c820289803d0d304419944ed030afb369c5920ccc29a0e7ffb4b1139f89f88ec9015ac404149f11fcdc0f3a9f715ffaa9b8ef6436d01283ab8013b9f0ebe3e786f60f8c522375dc0782bf7bbf858388392bfc74db7a4f0cc8e75df010a55711f21d1dade7bcbbda59449caef099e098a09b4030e4c0dba0318f4b86fc7204d98a8a334b88b27e7fcf482cc0e4ca1cebbd187d6f05dd218847ccf351ec63eb6f6b1f9f868d094a9631ea45cbdc2a60f99ba6ac6e143a65ee6eaa9403fc8fca1ca966ad68ab38015db26d7e4e9f5e74d56040b2e93bf9f37190c209a376d7cc8556fa8b09d13e73750d8ded46240c00b543ede3cb57218b67ac828f22550b794bb9fb63744bc17328d9f36376a389a1b3452307982f3116c6c68bf4879aa36b438a4a21b281b420196f4751ea447757c85508f1eec1e2d589bcea34bad0b203841db6d6951e5c4920bcbdb5dd7757325572d8ffbd54b6cc5d2fbda5388e58cff66538e72524010b6a6290eab2ae378c96dc0e943bbf62c6a8ed39991814f47036d3f0f7cd692364893765695ada760adb5d6ca39b6ad300ca997214e5f8e56967f477076d13167fee868e0ab5358ce06bed209bbdc07bc492bb5b76fade40fb93a668dd124d2ab607bc8b4d6a69535eb9480211fa1e6a7cd4d106038a0210e9abc610989c9e64676c3d41413028430d9da4031210089ca471b1b277a0eb1ad8d12ef082826ebfcb4b5a1e16b927b7edad88461858d14900f3651d84e3a8d7c4fccc588b73f6d6c66f8d255cb015b8c2d959a27784a7d2af5a118727e9a0026c89a25585fce34dc12ed6d6c5a784a9d3cc55ef0a4d336abb4bce7b68306f056f676fc6e0d920e7332d03efcdbfadbf3b7f4c148fe7a2643eaafbb94fc752fa38bbf3eb178320054318babedcbd6d73a46ed6bd50b63b86c548c0795fa238f7665d06cb17d0b8531a52521b3ad1d31b46cd1f196030fc2b0f2f689b76994dea6694a93464d1362d02086156fbd67c5c33e65c17911411146121855bedd463e6a920317525096988c589961986c01c3182688a8e185d8ed0825e0e4a1de6330a27ca3f9f2edae158fce4aa4c135ecc4724547105513aa32689cde9e41f3d677563c2cd995cc770fdf13aabbbb69e02b0515938a2acca4c04c1829c0724687b73ecde0f0d65b2b1e96ac5f0c91c30c9a5b33a8135f86ad76fcc59b6fcf65b07c91c4b7ebac78b45f11e389165964b092056725cb96334852b0c316313b395b11523890e5928c512703854c18df9e6382312978ebd67ac64eb4702693c986e0d8b2e782d98107f38a0562b24cb93085c50bd21499314cc68811d3f4d6592b1eb64609c4ccdeba5dad78586c8414182ac539d65ec30b32be5a314874e1b236b76894174abedd6b77f5936fffa0ad10a5c9643222b1f6136e2b1ef5cb568f8f01bed431afbcc5e203f0d6711ef2d6ba2fbd75b28b29de3a500dd306262acc0e6f6d6150f0d63b2a3b801c174e7cbf517261092d573871a22156e6b77506293e80d800362e7a00f3ed35efb8c965a883dedebea54294d0f2611a5b44f10903de72053be7f82a613a763c1a8d60f600ee5806f9b27d051ef782d7762000998e9d84e97805fb1ea04f9da49e5d4d06ac3e7de8ca01ed75ce497dc6daa7ef9852e4a345b2c2a66fa05434ddc774a02128236c5e4d389f31ec835267c188ae4828f1bb44921c1287ba2d206eaafdc0df0e44fd46c5a697f969fb6943c192072910100a967e9ef969cb82c983363ca10af9a830ea18d3fa260461e1040cac40a85f347fa8ef4033ab42139830ea6398d0d0c8784a29a54d27cc1f4a9dce28d35293b32682b00084f38e930ac202f5133030c28cddd188c62875a9202c9c8001eca56ac0467d0a0540aa7d09362ac68d4634f62a811b41e7dcf86a52c50220d57eae8070def5c4d93991f40adb31c5891b4054698a4d2abe42a04d5e40dc8e23f0a377c01d5f408c6c54ccfa516c4abb09d7ed68f4f2185961b6dd84a10aebeef6221ff50a70fa800250d30dfafc7c66db00af1246f0ba4e634674c626ce952a226a8c40e28490d83ce2c1882190a2c02287375562d3295d89784e994ea98b06b63061d387fcf4223f8fcc2a34674cf367beaee3d7f5797b36bd99a67773b3919a68d974ffd07fb82a6c86e26b041ac33ba6642f6a5a2bc7711cc79529b440914e55d8f44fa45415369dce3c912655580aad150935864758552e5b06820d624809ac3cd7897f53687d259bf46972c6fc89ec3f9b4e99a653194d22c1c6a8acc26ca0b22a6892b400c40c653029e36b0853c585162da4886ada4a4a1732493fcbf8d965cc0c25d82a62af12ae57afe30838bfe3ab89f5195b01b9ce8d46afeca2362a3663affe41dd04273750fa41dd04ea453e80c41d53f20fea26502ff2e13293ab0eeef9bdedd44f4deb262826496d1dd4454c0ac58cb2438b132aa7a9258e28812186202d84ccc8281903cd2c877a636fcfdbed8a474b7962d3443ab6d3fc41937d727152a6cc1151415491431762da1cb181091cbe0c0115e52283fd5e7f62339a5061d729926ebaa49d7494bf48bae99276d2519a664c3b4de49d1d32155590da18e74c674da5a672cce415f0bfda8fbec71e69ec3afd32df42456db014a40a512e1376dd8a317fefbd146afedc59bf89a24b155074a1854decf6586209544d4d981faccc98a4907ede7edab450c288c630b043432e291447a3b0f320efc540855ddf39229714ea557d7e57e713329b164d7f6d5a3885321b172c487f6b779380fd8563af1f9e7ba3118de50d947009cc341559b3c6898b270ac870860c97304eb520305085f028b351b157092378b96218ef98e23a4a42cc932fcc243931839879051432a020328312b42f5624812aecfa8e29a405c090d1a1062eca04f14206a4b8b2660b106eb08cb9de891ed41168b9c28b530b5b940123769d4e55a10b2081c35412a726c86013bb4ea1aed3a8eb265cbf6067bbae76d57e3982ca5a6b81582d45e2072d72423b332acaa68326940dc9426571f313ca56e6465125ca9734cd771ceda64d1b165afe3a5dbade4b2e9d3dfa20b9d47a94ec0891a91117905a782cb035b9a783286d89e06a92d28795917bdaada5e0b4755656b533dabb4b9fef3105f24370d6f1fef4a15c378dd642369c5a8b1569eaec8a215fb693d5153d7cd94f56b0f9b2afacbe6cdb2cdb4b5b0ad690ce0e3c405e276f1d36832e1093b47e671566b91a6ab1e99dd84db35a2fd6d25a9aa4750a579ab45a92c84db38dad858aa50bc796adb75fa6be4f79bc4f55c8424d226ab34286b747319bbf022fb2f5a2be6dc919387b6ba57269a55e69a595565a69a595565a6975ab855ccad42fa55e69a595565a69a595565a69f58ed24a2b6d06f40a07700ae54ee2645f8117b93da90a35adad8b09d35afc30f9caaadf79a994f3cedaaf54ad46fd2269a1d934eace28d49dd1a73ba34e4d43482da53ba34b570bb994dbed0fa82a04649d4c4d49494545d96cb5a156aba7c7a7b4b496551895aab0f6a929aa1e6dd9b4a7499c8c13038b824b2dd6e2c441860f34aa588b946a0c07554011156bf1c524e6519e20a24d911809b292186eb1c748ac8a465489101c9c8891c06373b390614d9418663112d0d0218667ac8a46193c6d998a91c04b32b17013aba2514745c1a485180974c2c4f0ecb86bb175fc257d7be50b13c8622d7ab045ec8892a0bb8bd49e8ca4a7636c9cd27cdd690acbec407d5c7af8ea447cd9a3044d0f6dfe54bfa26da9f6d4546f40cd9fea1b5075778756855e691a56fdc5a609c949e9e9eb52edab23b17de5a1417d75fba26ab2f28839f387e32ebd33731bf8bef49b7dcfb0cd9f06a3020cc54d06a52c5fb2f7f326839030640303e9d3cae10c73191db6c2f0e74d29055ffad4aa28ed31cdf20029272a4e4db208c309342e484106111fd0d4f0a60c236a704fd42f5e130886016b191c55d840dcbe2b4074b9941652a4ef6e3a4ba28a6f77137c7b5114df7ec215df4e6561682011ab336abe582b5dae008b7073bb7946cd19ecf597a20f7c24a093784d383f6f4ab3c73f6f4a49989c445dfff486a21d746353510dac5b6f2926511d1b8cf9631d29770e4eda818e0c8c5ce9ad5d27b91bcb29055561d6738ba9c886aa426d73a67a97f5c6cac4db2aea30936d94266dd7d5da75e375ba4f38aa72799d5ac8761095b57e9deeb55da7fb842f188be7bdf7de3be7b5a30dc725f2f40040c973d4d1443b2b8c6c7b249728ad9aceb324bf9e3a493dbb7c641904544f1dbb7a6e4ab2a7e18b004e1f1c45e4e9e0ce955c9b44fd9c774e39f10584c315463bf105a4738fce55ce6cb2c7578fb9a549f72ae19b5ee25f61d52da250c7570844df4ef4ed28dcded2446645a2afe2dcc284e95b0c42f4d33ff1554238820f8baf12b8199b2b1340efc61790cef38e1b4df83ee7c617100e3b178eed5461d45def409f17eb620280a1d650d43b8a7ad7dad652b72d199eaca41de08495d6a4a8065626111d9b8bf9d3de4438b5c93cbd342c357fb6a022e27bccb7535cabb0663d0e37b9bcb41a6ec297869fe60fe7458d6bd8463ba8de8ecb9844504ca1fe62c2aa680775eca9f10302ca20031c385eaf19335a4a079a5cbdc44d4ecb4ddfdeca21e79f5b9c74f91277ad72decef425f9b88673ae71639555d8cf985ce237df493d3acc789d16e01cca9fd36e6badadd576df0f07193b52447571818b1921ded88022250725901051a2862f3b5772d95ffacb24ea7f0101c1f1052474d0c1d18885e347e30b08e82b5f8d462b07a9e388fd34cb25d0c415461d0794acc37154651d62ae30eaa0083341aeea3438c25035550b1540298818d5d30661fe4fe5fbafea56961cf9b902e17e019482f896fab2bf7c91e5fe52c4162e5c94b2343942060b381c0993030d424ca1c5a8030d51c7b1267b1502ea14c0a1a17e2ed34984bd558031babf0f8b5fb93a817aa8cabef66c204223c2649d9e7a8bca909aa4159c9e83989629b48aea87472a6b92264da82160867cf1af2906272f4364ff8d25d03711a92f2d139128bb24871779de862cf9d232292d3df5f996a983e62de9e9a95b241d44b34b5a68f230c9a5556a0310c92aac90dfea307fa8db2378e99394946ed8b2770582e75f5df1e038da752050bcfaa95cbd498c572090abeaa0adee7935002d7bdf58e676abd4413dd2a4a50ec2a3cba7059e2539741f59fe3e1ea41ead819af428b4770e7e636954f51fce5b1e1f726999aad0caa914c839967d478d5063abb1a32a2872582c5d65957aea9f98424df250f4608526670c526f999e3a759ad441b718a29e52cbd441f5732c7e58fc92be41ff7a889f7dce8baa1d833439cb70c6945c1ec98e5e074f0f795aa7b059618079a230c309740803056cbe300181335f348961e2a48b2ebe3863848c10244d4c64a4a727a2928af082456cfa340098a7d09cba21298a2ca40c518a21832a4c58c1c5ac4c952936b22c31051a318c5cd962819b35557811449a2732e601c03c8bc03ca7bbe6f439f1fc1b48a976dc2d960db96c91d513e0f2f1a3d54f4bd00ee6778d88eb9dbbf097ae0a8e650ae4473db716ea49a072d656d6e6385c811ff5f6dcfcd0973eded2eb2288e088162f9adeced7c0d0dbeb24c5648b985a0000055255d4ca43fb841647a0a5ace432dfdbd47a9fecc18b6bb95aa762e7dc01debc61f3d8cb233c7ae03ef5403f1d51b05e6f1f51abf5b45c3d3a38f0dbd372eda885b75cfa1f00e3307fc9dd5e7c147d4081da7d586bb313398aefb00553ca611ba9d0621cb20d2d8e809413b9ccd6f3fb1d2dfe9c86b3a97b8e02d7f5e0466cab1038b368b9cce50af53dfffc3ff7404f0bddb217e4d61329f53ea72b1edf58afed61c7b142014435d8616be50009b035459edf8222b76cd9628c318d1772254dd8e036062a561d08d7d96a5d9129934ca9ab8500798ce41e0f481fa010891b0c696e309479fa27f014c9a525eb0d02bc3836abe7d94e2877ed1dfdae1367ac1b5763b2ab0a85de6a2e746eb55a3908edab951fbd27862bb1ecc250fc1cf4a23efa6e85fe6ff46c9374d5d129ee9e40a431dc41378b2eba9a74b1a0b87868c8399e1dfbe79d6f364cfdbc2d95f902fcbc2d397997e77849821e3ab52b1e20cef812013b8e83801dc78fde134ba3f79c25aefce83d7185fed548b9a01a805e412faaa1689bfcc610fc7193dfe8238d92a953ceace6868033366badac21f2bc5ce77d843dec796e048e1e38aefc288647ccf2a398e7b30ab11c08e8acd168886ffc4620a0b39c351a81e351cc0bc559419086a018760b63aeeb3a0e7b1e65003931b6b8c72649ce894dc019febc5fac6c7e4965162997f9c3495455a05f65654df3ed354dad92512ba36e386861d16582214edd90cec9bf7ede64b75ffdbcc9a87801821c38c9d44bfa2f22ac8a02b069cf6943e7a777dcb5239d44768573c5096b9c6fafaf21eef3a759dff5415bab1a106c9b26fb3439451a0fd24b45f1c17959d5bb667b6bd33b2fcbbe42e8923a68ad9d1546af7bf68eb8c226753599265b5bc7b906042f11b0bbbb5e2f6abb33d65b1fc499f58e19a4e012c9d45d44ea1160ad5583202cc5f124e3789229b66a32755793d4aaa9b5d66aeb9c3f15066bb9ea9db5d6a78e41340082eb30c6def77918880e7bd85b92a92fa11db73a733def068238b4ab5df1e8b0e77d383838383820d8dd79ce89f3d5964c07c0943c6d48c76e1a34582c9c9c73727466b45a3468ececd4a8e1e25c2ed775b97466b45a04e1aad5e4eceeee6edad5ba5c5c721d694c4aa3eb462312b05a3834728dae5123d3c8d9d199c1c35379789a6787c7468d1a2e170f8f0d1baf574f8f8d232cb0c0e5e2e1b161e3f5eae9b971a3027751aca2288a3caf1b53b4312758e3e5ea693ac5320ca758ce3274e29e5508f6f1fcc93c5a20d01b2b117a2ab8114ed102718a2d529167883cdd330f71ec918ee3e458e5118eaf78547babdfee7e6f52145720d01f71b47c702e58f1e021f75831c00083c600038a010e1f9f0b2ec000030000802461301f9ff0020c2806175c70c1aa477ddc2406380058f198244952cb2a8fdeeac8a03320613932d0f113000d6030b771448e1b15e4c86181e7c89143b49123074f8e1c3910f0049c3e6537d563ceb9ea7342614067073e968a85157c024a28556295dc6b6f951f943851a244c90f4abc900b9076b597ebb0f781d97b8ae2643b88d29ca9439fe85393e410d608671582d599c119e1ac58a84262ada84ca6449398e8aa099d5127b46946ebae1084aa4523b4368526fde9538555e004fa54b9d14ff09d59e3031f50d3ca97f4a9898f264510306146d5982eaa0368a84b2ad2a7096b9ff469feb40f4fbf5a611cf6ac70136ff2603594c4655746ee19265f027d5d78c8210c1e96b00d3cb8e041c91e1b1d3288a66bca393f6f3b48755576884a92c19fb71db65c2b72f7f3b683137709679e1da6c8b003c6c9b543132334a26aec704391d6174d3b3b1099c145158d3274b8806a4d19c931f38587193033b21534642f643a5b9470c8d072aacc5864aa32122356535138487e500ac3d458488ec8008ea9ad9008b9e11b330bab62f0cad0c02f64c065aabe2a96ba2fa83c1da248e26878892297c798aa8e08cba38b280e08df74c081a9020d01713024a65661938d0e5e4c7571248c4c8a225349196797fb04c1d4420e37844866f8a0b2fd796b81880e2d94200d1bcf4cc63f6fb2344964ba3799fb799381c9f1f386a4830cdb4c3fd3263698db427de8c81a0f7a66021c17b63ca9820a9a11555ac43e31d4acd12266e9a685ca7220f29ddb0e2200eea6ac055f86f8cb11a44c935062662af3bcad8e99baf8ea9389962718247670e2c5912a605035fd5147af54a635294678ada724565d0e31be9db34864796b2d0dbaf6891b0e4ebedde205d850440f3330863c01e648072e45543de1c54c0b266254cb116f306daa42ae3a96f85d549e522b6463d4863718f99ee27683986f6fa32444603123c614267a8895407f5402284c9c481195248d1431eb449b2a8c42612d0740e4d2f5d4862a1b5ffb9ac210739cb7ac58027d99c2f7e4791e7ec2584a14294f2ad815ec6d9380f943adcb8531e71dc7715d11c7dd3b663cb1d892e8eecef3075b970b634a622c86b8c3d8e5c263d8e4ed2a57dd76d71f4d7626ad65e1337eef3bccd7aa30b71c3d1b10637a2fe62847db67938dc50df2d4a7c8f3445ec1da2d6c6da7d57a75b9aeb52bdcc775cec979d789a11583a3fc3def9bdefc3c07c1e779dff8dee8d7ef987b2fcf13fb1a81c66685e1eb9605f5d15e2194f46fcedff115c2ebfad101b0c8657ef1ad78002c72b64edf73ed909b73dc643ff7b9b5e1fd3e90e33eeea3d6fa5c71debd4e29a597f3aeabb6e370bd9e42ebef1820772fa594de79c5ae78cc2fa7014a4c2cec7db5fe24bb56ad17f54f215a5368bd4bd934e074ea2cccc98685eeb6b68ecd8325cf7176e5fc35028d814e82377ab649908566aab0aeaa304a65733611965c52aa3473a6d0c2d55961e4f6924e551a9e3af54a25f593ce3a2e67720f793afd79abe10bf8c5f54d864cf51c5bafe23ae6d872e7ab3ab2c64cd724eadcce4934bfdd7610eb4bb6dcb59575e7cf12997a6941e0f9cee7aaa8b995083c970148e09c44b98b5c7fde6ab8f2f4f5f356c30f4f6f46da3c9d44f4a7f28d9fb71a863c75d04edb3aac72856f4702169169fcbc19990a9b6e46aef8c2c8383f6f46a0f812e8399b9126b82319ffbc199992c5885308469a3a2336b860ab2a6c3ebe191162e44b54191c6660923ec8e2a98897d9075f6638bb3e29c21872eba7adcb097ca8613039fc69eb12054ceaf203909bccfdb475a1dd3519ffb47561eac2051408ded6a16300b64cb9cbd93b76d3f9a50169577bb9ee76d872433a3de9bd5c7fb5d1cd9a0745385f347f9432f6a2cc793769b3ee5874e924b245f6032957648b662d6872459368aec6507fb092187c00fe08e357f8ac3ffa1b08d6db6edb2da8a48e9f6a32755c0730459e60141014490cbe7ce9f070f90adffb79391a05ed7a391c2ee7e4ac42cf177b393a2c0f8360f819e5f0e4501d5bf18c165edd7beff57eb0d6c85aeb27f88c704ea256888d66a536ccad496367de11a8d67a2779af570faf4210c15bafb61bc91b827d9006a79382aef676d803c3152be7e8cc6871393a198705b6685cf05bb13e70b56285e02a041aa1fd39a708eef8941c08b9b5e08a87b53dfa819e64ea259038497bc103ec775d2520d6c01d74bd0fd049895a1d040484b1cf0e14bf495a67a9f089dc24ade35508f63f0f80dea4cdf2c63b7fac736f43f0d5297939ced2f20d24d5e39f4075a8d6fad28326bd61d469d862f53b6ab8af970dbef4f99b82bf6eef9d1df177a6c4df2234fc2577bc156ae9a00187afd5290ec0522e7d92f516c994eaed09a82b7938d7384245cfd731bed67a9be1881b0d31bc94255fbb7c75d5315febd7f925c6b14bc34a6e35e532db5a6bad53cf29a0b35e8680e9abdb9ea1459e5e5ada385e6ce87f3e055b4c64cfa9635c2f96efa6ac03fcbeeff3a20eaa53dfae03482a5faf07d04f77555c5723dc18e89ef83deebaaeeb3aaeefd48ebf23074dced022d7f9d362604bbb30c41dc518638c31c63e5b52e48e661d878e3d8c31c61893d83db143d2248e558b31c618638c31b621c61863c718638cb167b177d829c68e31c6187b517352185f7c1dfb2d3389e863171edf368fd53c2eaf99c71f0631873bdce10e77b8eb3a6adf7a8e3dec55d0ab18638cdbd2ae2bae5804ef55fde8abe747ef618c1d638cb1cf954e984cbda871a8c30eedbb16027d724e5403912bd3b08ef538d87061a61037ab30309388ce999aef9c93eaa0dcd4e63b8ee93b2f3933ef2d297247eb40e79c3a24524e524e524e52ddec85fde83b9ad821a1617550a4312cd2073ba62ac44d7533927477b9a46295841a03474e6ac6986c43742173b3ce3b9cbbd9779cd4fc996ab2f31639304eb4036e8ba941e75d17f3a7f33a969c11df2935d9cd9aec92e64fc74935d93927726048b831aeaac23a2f6a28b924af540795e1649844d6bb0be6bb3bf5ddf5fb54712ddb2e140876d851a0cc9feea9619d73454c0d3a9fe5517fb5b80a618c39ceb92823e7347f3aaf6048ae5f724edf757b1ffdabe3a4bef3ce39aaceb9aace39a9ceb9a9cea74f37a2b04303afbc2a1892bbe3bcc4f9673786b38c43da5b07977830bd0d95265152380b973a68f244c9ed208da95c825358defa16aa29de7a0956bd05b378eb65287bf0cafcb1427275100467f3c7963d5c5215ba9cac0a716e5df44255a13b5561d6f385d2f2654f395585423a96b88e535c8c1bc3a40ab351d93a277bebe0ac83acdb57ed2a81d30714c9e490c729f7bd4e238020061b5718b5549a9cd6e23c35393d478c4cb3b5384d15268034158c1ab6468ddab4c6a481591df8866a727ad300dc5001ed30e4192297df0c841bcf39c679c2a182d3548540c771faf9cd683fdd46c7686c257a1396b301cfc18ae74f38c93b59c0f61abdb538b349d4792d594d7c75560b4d91af1e8269a19dd56c124975d0ddb129d556484f014a3a4c2d206c058724394043401c0c5555d86ca24d0e4f4d7c5122d54492a9267ad0a1879359132f20e91144546d8a87592d8b921e4c6a352190f47822abd1d003081a1354497a08c1c48417244e4c3cf9e1072626663cf46892b484191f7a34412d21450f2292968092a4c710b52578b0a1c70f511690f1995962081a2c5730b18291a812442dd7f879ab5203b843ce3f6f55844c41050dc84576fdbc51b1020c93777edea89800f6f326a40440736ac80534b33502e420c242c7942f572421e596c419258e7cbb2bd1e5db492a4fbe9d0544c42cc3a7a80ca608e1d1b9bb6d7737162abe6b7c7777dbaeb466f252a85a6bf5a15a5d5f6badf556ebde8a87a5378b071554504e305192445923fb763fc2f6ed24100ddf3ea4c3b7174939f3ed3e64f8f61f48487dbb0948b8795ae2dbf154186043b1e1e7db718662e5db3b9719b0c70818bedb7136e2886f774121f2ed9c47d1f2ddf3dddd5dfb5a2fa8db5a3d3e3a3870eaa20826be3dbb9c041a9a028b299e54f17d23028ad30cdf5e5d59a868c289986f2b86c84f6ea0c20b21664c641922848c7aa6c9962db60083e444ac3bd60e81eee6f22dc5f6ddddddb5db2e4181401d423cd1e0dbf14d882cbedde544866f274cdf3b687c9e76d4291b30ac6095d42485f2d2dde83ab1a1a29c9a6c6d914bdb64422593cba64175108ef338f59ad4412ea75e953aa88653afb30eda71ead5cbf662c3cb7e6aa15e6a18f5eab9a3b0e92f9fbf9c7aee4ad3653aa586cd1b5eda3975dcda3aa82d15ebc546b135abc542d928fb45e7c68d1b376e2c9165707ec397540025b7acca396fd5903ba90a59a60af5d371ecebb88d1cef115f3a3e7f86bfc4dcf3f9aba7e7250446d14269eddbd6506ba27ccfebfbbeefebe1b9a5916e72699b9c74d08d717ce1f87c9673ce8d2f1cb78fe3158c2fec368a6d7212456c21db70f1153afdd03bf115fafc9583363cdc71def9c7b9df70cee7c4d3e7c60ddb5485ba671ccbdcb429af690ce0fcba0df125c24b041bceb90d9f8fbd3cc51d2796aee7388ee344ec9fc80112ccef460ad524f52bb6272aefa449eaf474c90c5a9e5f36ed8e1b2c61aa2dc04c619104161bde1c1d51c4cb9b29aa195c78a1913ac8c668937844faa549eaae1a228da24e43a4524db644ebd4a4689b66e8e4ecb065d13ac16189d649004956a275b24da0689d8469a27e65c8b752d95af5d37150e54c6697a5fa89e3a8025a011617b64048b4806343288268b3c157e7ac0842c9971eb27738b3f8b2d5748287358d01c495af6e5d6148254cadb5d69a66e08c5475f10515628eb450012b7c8061cd0b61242113731f55080aca542b57a11e1c40e8e8a01ec7e2cbf0bbf58316dfed38e9bb4917df9d1820cd62cbb4049972c09f03f97bece100fb0f54beb44e6523f9a70ea25c144fdd3a75d0bcfde0e4a9db281dd4964a8d7350fc5ae5e53c6793789e73ca83a3ff812429688640419b3350130b1750506dda2c29a18109893775906d2591973c5d8239cec5f992a55698bce472e55ca92a8c7ac7d4a4a565c91c12b7b419497269975e7883256c31b57df7dc73cf7de765d33a913e155500c6e4924ecdf879fb41cb736e83eaa967a6550c2f64fca5fdd9654a565d10c3e64beb54855ed46d53157a753e63d9b5815276d22b5515b2454c18f529b5aa0999bd3da5aa423356ab6449d57730e97eeaee26ff2abeb0d36ccddaac937d1a81c63ca72b8ec3188f25779b9aa46ead9397911b49cf3c20cfa9d353b7316fb43658279d2ba0b5d65a2027c5d43acec338bbfcfaf5f943eb12e844d6f97963f284cff8d34685915a657fc84e239ed28692c96436c4a8630ad69e027ce953ea809a57707c39bdd0a83ed3cc3a4bba84842ee1a1ca572a6a48c2c357f72468be3a497bf2d5815af8ea43455cbeba0fa9af372527d4f0d531d0f4b587325f9d851dbe3a952529f93a6f3ea8f9db122d4c96d04aef121d237a906244c89212c862659e630081e6c815538ac8a214e39098c2aab576d84161fe1a5544919cd0da1c05524f5345357f5c9cc861f1871b55108b9cf86af7fc286634e2d167e5381e3f5c3c5fb21df3fca977c63a2bb618eba80a7392a9d7cacd86aa10c9625d299637618d97ea4a35c8e17e7a2ce60ac3ce89779657e227be383f8ad55a85610fc51737fe40727a18f6a318fe516138f43c6cf7da71518561ffbed108a8c2b0371af568e41586cbeae43e63d8df8b1cfbb0c78d27348931506118fb8e25d95faada2a764f64a1c2308b8cfc02e27963afb50e7a9130634898265518f6d7ebc7e724ccd83796f079936fa44c1586bd5ea11dd0c76e67d5a93e592b846c01159b315a0417225c28d354d2a46bab305c9d1e4f6e46bb636381e69c33db19446bd580cabdd67b1b020f54e6cffc1078883261b6b2013b077b462711920e6aaf0e04f4dd532b0890d4b1d3247be20e917c456fd64526ac03c1731d4d768f9dcec4fed50972d9b39ec9963aa60e2a3b29a98356de792b7550e81d8d6a59077d47b1ee7581e0788e5fcf198d86b823909c1c37b28ee347b1ce7d96e49ecd1f1f213247bbf3ea0b4a9e0124432ed341ed9dd3a91cef9c4a51aacebb889129d413369b442c2722dab123478e71b4614347e7fbebe5c7ead9fce97c2536ad6715d67928760e8a9de3889de74ce99cd2a80efa1ce72794bcf3f339b8923d24589783875cd2272135f9ebfc13a95293484d76ae817923237b6f7cb97a5ce0cf263b7f79939d774eeba69e351394fc7d093963d5778ee32504a9b0ce338e7f7e4215cade395dbd46c8711cf7dcc8fa3796de0804c7f368541d673ca1c23a27754c22cfbb185e85fb2adc177b69fe7478ec2f72775032fe699d049a8412336272a0c02f6aadb596b5d64a6b596bf5a1b83b8b2d67efad96abb5eb5cab75d55abd6abf4c8476b59ebd1f8729f6728e934eb69debbaae92ee6eb177bdcf7e6005c3feaa0bc8dded6857acc9fa3e967b0d24c2416afb030a369d2358dbc75a7beff5796e7cae0ba968829f569e3e948f0f7048451c3f3e7d0ad4e4f49256b7966c4781bb0e02ce73ac4c667dfeab8e3f7ea88e14f470e7794f14cfd25a6bdbed74ebd65afba5b5d6da6bedad160710d65a6bf1dbd9852f25ec64a3575e3164ea969614480710a4d31010955acb82bad5bae5c6177f7e0351afada3ac1cc78de4cc2126cf2d4d66efeaa0b98589ecdb7bb6d0927ec67e7c3e1f48cb62603bcec162128e7dee89482f0cc5be117b128e81a3d77d62d250cc7350447a01c73c4f1a8a7d380cc32b965d8ed3cacf267e7e69bd7ef0bdd7711e08769cce0cb1b438de8e5927b43a1e86f2f101d80a3dc79d7b22de0919d07d07709e738b0237e2ce41803ddb6e058476ab971d7fe0b11b872a8cfb5b7d9aac628d708ae57d1e3ccb23a0db3948559490552e8e13254a94fca084d2a2daa8144d96a5412b95b2190000080315003028100c088522814024ce54552c1f14000c7a98407852990b846912c328c818638c318010620c010680d010d94428106a4a255c887fb0cf0ebb545c860ad3a8aa843968fa20f1c07730e5307ae4c04f208fee18cb16180ab9287cbcdf58368678dc43e092447eaed8450afddc60d9ae429f5825d5c02589fcfcb12b209d4f3da258e9fa248c5ca1e8cf12eb6d81965c97448ae4f513eac9fd837b04daf30a2e0974dbc548562469e446e390fab418ce0aa6e4e1553b57c4f6aa696926836b6d05ba2a33eb6c617115c6026c29bb15ff0e979a982d7e90c9f70af49303c2586a564ef49c551cfa9fe68dafc222f1b76181cff814823d4c30516847349e3dae3255344535835ebae7b68af8d41b277808e440ff283af4ef2455d34415bbfbcc453fe8f69d50e21c255577038dd0bef298b7816359a68e2f486a03e8fa97070bdc93e4fabc1fa5ae26cfa9b4605ce446bd51d58d9439484a8029b1a2cdf7a23574d7b9f09a194cd8fd14de73357d9a3abc9bbd46026a184474d88f156467b4b4cbb4d2224259e1388fb1f12b151a14d200aa1caacddec06b719ed16bf8a2f75bf8e0b386a27ae21cb13ceec03365bc6a4a9fab2ebb64e9473c069bca99472ce7057d7631d517e61191c6a3362ae0cf42b32a327f188025f22b5e716d11397b16e2bfa5798db03c2405ae5afabd44a732ed2849e42ead75e5579ff675edfe7abdbc80c8190919972d1b52ab098451968cd5fa6812f19a9596dc2f2c420853140a8b942203eed13bfb58399636335d215c79aa020c2d8efb35596918a2367aeb896ee71f492bf491d5ec67ba1ff0a6758883e41cf7be05ccc2eeb1a7e185b395127d1996c1cbeff998f0a1c0fa5617d9782cf1de44cda76c7e75bc586f650f2638e10ac9aa5a2b026328cd0f7729b0b84e356a644688d01b3ab8fbc3201bacd876aee39cf1c23211bcfd7e06677cd1bd35f038b11ed42144254fed530378b117c14d05a65b070f15a8c0872bdbd1b8d8a0412fb4fcf6d75d855c92b1d51f72110d854e16e426d05a7bfd878dc8ceced32ffd39c4aca5bad1774880213f695bd0aa8a2f2f9ce8e2e0500ded7e1d0580de6d619a8fd25102550876156951909e3c2e40c4f072d3a2842dac57bcb833e36e87d1bd95e2544df25c25b2e0ea02b38abe31fa0933758d2ec5959c0136b658ea36ee29498b7d266976f92e7d0c00636e2835672f36b2bbb190a2fac46be3289d22fcd4b251a5218845eb8f9388e69c9a20c439de733711c3587d194884902e5ad0af330e52132c7df40548fd36e294cece5932a939daebbee47f2ac3d26cc925182afa87de7385813daa1a5047cf070726ab44e009263b42c11cf98bf443e7e418574b65d1c4e77cedfa31fd3bd706149c4d951559aba57b591a3cda9de7e8205e89c31ca4a3b3c4952e844b43a8e0f3f7f8bf1700efb599e150a786cdba8e72ced6d3e7816e5a614536c0a1eec344cfe6d6000a8a313c7beed013a2f8d7209a1d0dd5d1b98f5c9fd8943ed5bf602533cdee82c44408d1e8ec5bc2ea3084ef613e9f743aa6bb2bfbfd1acb3f5493b8b308b22ec721392a83ed725186a06c66f3b451dd3558a8c81016e18275a4405883f432b5726b32d20af3f43e93915f9220c81ba258ddf7c5eaa38a7ba26a549cc643f6034674d7b3323693d265a83a885a6f784b5eb801ebd8db6f4cce00c8281af8f81a5f6f2f0984b15fb695053bd6d8a205e3b02c138fee08db5035f1627302d60962008252daa3274bba62890f0be715705d9da047d9471a3375a005930e7a303425e608bd6557dc41270295a06882fb0eb2a03c68b658ac4a3bda0814c1f54d85e59b84b6e2e08874e126a54ce0cc887405f13da70aa9e4895ab8be435a5d83a39695dde913c5ea226304b591f75d1b00fd1380e3585fc6d201e072e724ea1cd4c1c6435d9c7a86e02b13c0f08ec1141e277b3cb4b4cb50f832c2c439e975f408f33afa9afde3d528ef3ab631859997ca145220de0c3ed0060c4afd6c97ce9f491ffe3adeed84b99fdc4ed02773c55265a36a09536ae808d6f55053211357bc01bd3887bb215617f9dd6eb0cfd96ec8f6e216abdd10308a9664fd54d6d0f29c6bbeb34bc24074f72494a9cdb3620be99d176d073ddf79c78202058b11303a8743573c365ca5af9bd0c85e4ecfe19dab1aca1d11ef8cc7c43bc79de29de5f51406c51b5daf096c26264e7f32a311bcd00cbc6183b25a8c2de26059438ad2d09e0f4399279877525d37d5b6009f66c16b6804c2e2db79c4e8dd2052d48a4b2a4b5646a44ac5179d045f3f7572dd0b7641d7626e18c4ada231762935923b64759287f892aa5895066d6b63045547c531b0b923268f6d9847c78166c4a6cb8f529ea6804ed1cd960207072d850a13424eb0845526573cca80cbb68e18d0175ccbf3ff8cc980f857b4ac754ff9f200e081526538991d42c42adeb26cb71aa8ba76d1de9288412c6b99d48e305ddfce5af619d60a074b19697dfd50dccb86f245032c01257a31ffe4088a84611f2ef6063a5f5a9b4b5720b8910ab7de49a0989f46dd4396c95101db1401175b8ae5658551b9f295a1f8ad298fcaef33f4e63ead7e1c6232baf748be38632bc32379af2393910ed96aef68e7eb62de52f8d67ba086388dbbbabe5c385827604b3b81e9845f396365c28c75aa6bfac805826fae06ee67fd87e356607db2f90e5eb562997fb0c24a63913a6d8b32f2dc1ce135640d024e2a5aad6d96191f1110f9cc3fc6cfa832b2f3a44a206bb8e14dd8a03065e5e444c673c3ba8eeccb9e6a712ed8c0a105690f344077dddc4dc55f7bb09360d13fe63e833c995b588e756e0121099e0703bd1b3038d3e0d7507bdd2bb86541d9bedbf33f773be7a18f12a6030d5a07a2fbd9d923df4ccdfc740e5cc27341f539803a8ed52a93278ca02f98a3420b825adeaaa6e1935c1685690c2c5bbc88076fa66813d970e4512f10f3b7dc4f3f0e76c2dcafc8d5c20de3ec9a3e118dc76192c0350b4a600f1f8fd5116ef14ddc52fd38db8c6b744bf3bcc9533a6f76064497e960c715f1c841edec7b15d82f641e1dc4ea3a0771a1d4023fd016aac9f189a5ca8829d15eb4f2529fb59784b31b8cca083a249ae1e4a304d41570cd47852a375f1e4185d08d9a6f392ba1922fa9a78a330fd44fd2b53b25c0c1918fd85268da0011b74239650694d3e401770bde933349642206bc41ae7ed5501549d6af20887f301b3c9d9bf0f978f0da9bfe4b0329a4f4a6164eaa1ec7d2f340ef50cd5b0c56057f89d1f38092c8c40bb848d3722ca1dc4414bf21932872906824161ef65019a30c2ddbe1236cce7c9541c409508efb9bf1131b065643314212e9595a04c0f720e603c3153e6df4ae8dfbb1c0f7e61edcafdbd7def87547118eb414fb341ceb68ea6572b907c9f8753400454e4bec2a4a89a72dd70825eedc4062f3a990187785189b291c24de61c4a52894268c0a286a166851ea96cf602c6697e72c3a42d0413a459e2bf90d7bfd35a8654fc87c724eb17f5a8331e02c92c45ced17092deb6a757d1b7e172ad71ffb87c62a5f2193099900369c2e78db59c1b870a8f818d16600091a66b0e28d612bc32b2d710a23b8d744df730a8e5038acaa235b9b74678e7ae364d7202c2acc8d2cf7da5f0af7aa498d2bd04c618e621683a3c3a9be0893414e94c9e065326979776fb81f36e0c3af613951e8225c34e2011fd3c411d4c3b4ce9776579b1a9788a24b095a5712548246d7a0c13a722e0a4a80efab9e0d5d23560c43e7c3c1869cc14217c555c10603ba826b026dd8cc66faa70828b5318371213e878b4f49cb291641251a7083f2d855690852c8b8c905ea85dd1514e31bcf12848135c36e69a111dd3f6fd8f776678563ceb71367a8bbfde26685ba1ce83177ea59dc76b535c82a1e93d4e7dd2f576945b5224fa4f22912d79eb94189c628b71cd96169890734507ac7e865eb0392374d2eaff0070dadf123cec2dcef5334c9c16eb9fc161f53f92a2bebe2ff27749c06e27da799aa9a18061ff02ea69e1c0ead2cded3f700467ce2e49894eaf995112668d988ebceb20435101faf5329be16def2516afdbfc3b0f9a1d7cb393b1a1067aec5585b00a070ed91084bda79ec10812d7dba19a924761c08b3d748422dc961d53268f4bd887a17bc6f9fd572836bc2c54b58e4eae4b1b0feb996a0ed1f7691e1a0ebfd5c9139ccaf7f185033d382715b0dd66f5240c3a751da1dcfbe12da78be81c00b86f0b89f73f2f5dc9a04c25f830553eb8e0954e6aada2dc1b8ad7cab2e157d71b46171eb3b664657519c67dd2196aff766caab64fc788e580606b93ebc5832ef29076d78223f9ba48e0b519e4187f3a4ac124b5c4b7631a9238f7731901799e7e56dcf1317e48cd826307ae254b3d9aafce3ec7e6b3b13f75e110e302a43a6ed8b9992ef1844f34e5c42d7df322dd7af62c439fea08592753218b22a2b5173bac46956aacdfa14efea3f14bb8df39bd1a814ceef2d3bf4cd0f5b05b672f39f90212a2780e754eb6cac5eeddbf46f21bdb75f46c1905ebea3c3084c5fe41802dbe1897bbcc17c1113fe4e351be7069b19074c8da9943768530259f8c21e2f31c23fdc3c09a5d380654a7c00a5624976f62309efe2e1903188b2a30cc19f9a8c7803ca4cd2314b89435022f750701bb4dc010d4189645af599b9980a80c87f4a83fe230c98b5d6c4ba02a92ed6dbd51abea17c0f8dba0b78fbb11befc3d0b18b2dff8b995d7ea498cf398e1c002a80d148977b0612e4a0cf76671404a05ff0bbf1dacb2453eebec041662b2671d3dd19d15220633149699a0dc78ad5c78594d3d5638eab996734f358060099eac2890d8daad07e92a96599548da104bade2f92a62efab17c4d802ecec47a50d74f056d3fc7e48ed4b217c878624df6ba54985829ef36ecfe2811296d8c29dc806193b52cdbd6e675d4cc6fcff5f1f62e244dc70767e1fea5559c57ea569b4fc168f051e0ff7856beb4c4dce5ffa8ec33b10312d4e14c1b57120768336719e4d9376e055cba2405dc9909d2c2fede9749bbe4c6cd551c622533cdc47afd68761451cffd612521ae5668e56c7cd326efd367499667899b4202c5e0d48859a9a8d358cdb7bb6140427f1443e4c60beaa5e58ba1e6c67e6546ebd7ea9191710f4c8ed47eadde5f954cebf83a2dd8942d0573823c2a2f8c364741cb848eeb6876d6c787a5ef3fbe849a5d4f1647e8f1de6e5e4359382ccec07d1a98799a6e4aacc8bad91d9ecc60a6f0b543139c74dc8e272495118bffdb6371dd6c256859b092b282609ebbdeb18ae3044e593a9fd2d29b278c8569536999f6f0e8d6c45c46433d906daa315d7d30be1692d0a2f81ae0d18cd8d7937adc8c4d62a35eb32a665564f73f3b99bd803f88ba497ea4e1354194eac2241617b82de3c7d948898e106bfef06b91410db91162806291c080f215c99d4ba5007f5c6d4d9d6ccf2bc16cc465607b51acdd096b8abfe654df22568daf7e29486c8aa80eae8c6e13b809b6df11311f4cfdd282640ad37baea58fcafbd106e20990b2497888892d34f6808382f11b465bc013b025d16f7f6e65942c80bc8e98d744bfe9e547fa996038dc5aced740b0b6c7004550c494f104779c1c116e59688724231acce1d5bb87042847faa62deac005ecaa153e815c263946bf6a22c41c98d4ed0e34b0f731b08557cd315d8950d62f933da82c95a46fb67bd95d43723ed792c21c0fc09b584d05a2f629dc8a54bd279af7057ad5e3bef80d86ce24091431b9a51707d639509632958ec9368dd93ffc562e00dc9a0f30e0246041f85311d28848fd41c162f3b93ec8c1f473b42991c8e117b87cc259725422a7e84eef33bce0f213ded72ee3e8df65723f163f277f52f4afe03c7773149058d73600d2b279c9f0a1b5866a70ae7f1740f363e5567aec7ca74d83f85ac3216cfadd6b73f4e53533354148831dbdf724be86d1bb2c8c49d59d8d4036b7f61c6ff42578220ac589abf7876bd32025d0e2ac0bfd2406c8ec8c5a81a9d13fcc296d7b1d55ccc5b671eaa9f4eff66b0ed6049055c736f5ffed5e0800b1e7728a96fa2d7db19885972a43d8ee17280d6d531308640f2ea35a66e66895494ff719f03b676a5d406ad3017d177c253c576cd16784a475e7f84e74fddd17414758195a1e75e21c0ff0ff0f1c41bb83f1b0ebacc36ddcc1725353a062a1efb093d862ef035a6d56f2f489280f86932dc81dfd4670c35612eb263c97351f1b8a9b50be7b293f8adf07e3c4549b8fcba031d9060b966c52d6ef19f126509e587f808d6bdf208f2444cf0553605097420a70f3def96992806eebf3e4bd063d5c4ff88aa58be2be3598dbb20fb88a4b7650aeec982a6dde9554d08542522989a450c4ae002047d78ceb4ffcdb10b930ad76746b0d105838e44bfc167fcc757285d29b0d41af7b117705c5bc0ac18f79a0cc03081616df43d80ddefbcddca7a29fc0f382c6988cb9f91e28821044f456ddb18755f3b6946a7f5b485ed6e01f4365983c3c8331d3970be5897b52f8c56490c4a3f313013e71338f9b82d56e58246b69dc8a1e76b36d4387769ce01f5bce79c5e3991c4550051dafbc81773cfec5f17a5b10b6a2e467cd51ab72954bffc76194bc896a40449a6dd018d0e7b94ac835233a3f222b9ae0827140e66ccdd723b19b0d0c1a69885549d2543a424e017c63227121fc5fc82bcf42451f0828fb44a59e25fdd4164779b76d41b997ebb4c4f526b84a34b7bf36aaba28be9cf529dde84fc85a6e0c8251830ae74b903579368182263d446a1cab81e33a45c585651b90d6e77c5526679ff4adba319535d53327b667fc272f2d5442100357da7d6ebf2a3623f059b0812abd98b4d3c713085e6bab22759ac683af9789b8cef20dc7d0ae9d457dde0c667b6e093570899c1b58498e8924751074b7002f2c04f8aa6974c427f2af4f2b6c5ef2aaaaf7d2f04cfa1b6cce7f8f834d7a694a6c3be7372171f18fb973778ec37c2673613adec0811a74fdfd78bd683c81148b1728d6e040a6b909921d36a2420a45402d62fe372bc2eda5527a5e661115d93f8f88527fe6f0ca5a2eba062c1d5d1aff6f001cb05493dafbca39ad28ab50f96442645d424afa3e6ca88af0e5ae403351ab36fa1c1d4413810b491479bd2d28d4e5cd31ac3b1ecb9c6269704af944c8e198f26b336d9108b7edd904c26fca24a908f16f068308dd884261835805ddea978e68adb3850b3c66e5cab0fb422ff3035dbb12ffa1b88480aeae302fecb7d2f92847389a90cf1f6b27af76aa09ebe627ed56633273b9feb945ab049c8004214658834c0e6dfbdb15b55242b7822da763083025fe30bf92709873df1139e1d4579206539ac0a9a9b9eb9905688346f18804c57aa5773ca4ebefe8a996e9a0a6bbe84c83d013e4fbd2d1109a30bf9000fcca8a258a707c7ab56c24698fedb5a12e0cea2db19ac57f9af9e3f5eb2e269a5d5a813913b922a3426312cee950bff0b8a0109e7f3656f315c3711581f0bd2723888e55a9ba6a0c599c184bf89af7685270e72b3ab38b8ce5508a85d4f78fca8558c4718ede1e6e797648dbeca36c68f6824d5c0a01430201bbd570dbeade7a3ed7c61f1ce384aa39997369aa1d769338b88e05fdd0fca7f87598b85141eaf38eb76607d9635c79b0432eb45ed969b5042e5c4e325c7543e7ee24ff5498c40a1f8b43a9baa87c9a9c67667c731b8958f606a98dd6c2b687c980f3341a74cb85de1711ae954e2cbf26bacb09b7e6270e0ee1d183107e55c436a689f62f6f5c8987c944d0ae53b7ec722e93c4aeb3ca0c7c504ba7c9947c2ccb3a5a5819983281d0ec5626f3b854bb94fdeee735915a3b6d36cc4d27a78e9e896926e8b29396397d22b78e7726e699a8d38e5a36664daf76076a264c4d21b74e9e894926e8b0d36562d2446aecb0b93037a59c3addb99805d3cd62ed28815ed2c4dce469d1590a5e2922dfa74d9d4805797754679a269157ac82e97af9b9f638332813ebd5adeac45864963a27eca43bfbd99c2674104be95f1bc7b985c1942297171cfd37757b13b30bd846a186fe146e11d96f86689e41731ea129ec05f28ca8fefaf02b422b41c7b63ff212d4e8f035d715d0c067ae18a74584eb641840dc0786553319404d7165b00423f939adc327a2d3a10249237b7c446e45db03cc0b43d486eb4494c908f7114151163655185ba17f446e652e44d21968f5d02b6142ce2b3e0a29a2a3c926cf65d0190123737ca396a22f30e2bfc7e1ba8c8cc4eda0962e6c9550b0219d14d52ce07a6f583d71e72cdf5ac84c37a205ec55d4ec27d62257786844bea5ce5a2a5ae1b94dfba998a9474fe838e547aefcd2098d03437c8ffc9dfdd2f64fda2495cd86a060e9b17fc3ccee8ade3e52e8c0557811eaef249fa9e8e0d8bed2511eacbcdad200e9cd71bf05f195f7514d8cc2114b53f02d570928f841e2592ee460c5280f4631ab7fd689854eebe8c38cc452421e6466ece862671b2d1e6f5119858adb634993f9186239934897845bcd08ecf4030e771c411a9d22a74119a27c032bfbe0fb0158ec5fec85e6ada58fca550f042b4427238728309ce25280e840b2ee27a478b215ff297d30403d9bc3fbc883a5a17342b1eb1439b2f7f45fde105660a77a7a577b6b579d97aace681b06f6538882823022b2e0cf822855ff5aa2d806e3f3342d118e3a8bc96b65728ef655605fdba1428e8638dd63839c9d08940fb4daeee52c2833773aac613c1a9cf1642f663d6898ba258ae45a0764b8aa91db971da8fff79fe80517698cffb11d90b18b00a70de10585f5d604dcca4eb000db4f8d5f06ad0c4545bb099e154d452ebc9f59e9396c2a3b0d074a67f03d8fc18ab21aa4722f58e0dc10d34f3390639cfe0df26cda27acfddf772e6df4fc241386148437efc4d9623767565d93280ec3d946043e4e8807a8dc207a6c913a323780521163117274a0ba22556f213b183f1d71170734d1456425d1521b4c0ed8a447bdbfa82c5eaa98c188c8c07b7886adaea4dedb1d217c3305e5984d2a5c11846d6faedf58094302cc593011ed9d7b9952f57758d5d778dea0b90bef10084bd16c6a363aefbe0b669bade302c24f8e1d1a367a34d13f00fb7f8a0ab1c67891a8ad359470ac3760350eea386d5e7360ca5023f72d703c3329595664e6fbae6ece273bee67e50e2257e691f82b69d71f67366130e9c41a664440cbcb5e444b59e9c553f8fd5c72ad2bb7145a37237cd9a48e576cb589f8e240d61cef0a303562c493ef0b3a3fb1daf1af2b43b5dfbc545b40ac3423a967df43907ac66c59508bcbae8cb199505200becfb88360105fdb449f2d651c0e6a165f6f53bf9b6001aec9e323550b87c9d31beee459e72ccd09c2f134188d90c5cd1bf41bc66fcc721050990818dfade288b62ff14faee854abe3dd997d9e8836f23cf4b79837e42cfa78613ec29d5c19e9dda41bfa8ff609fd3da1bf999bc511cf6e6eaa2c70dc0d20a3c254c7438cc80bba4e81ca45be86e2922f5758704068913c31c9648b9e3d11ba2e78ad06aa9af6478974ce4b83ad3c1e9195c70a16387d7759c39bc6869b9385ca0cdb8aeb0c8ee509f3c71a2996a7911fac45aa5892cb0de5aeb3d937e4b55724ae29cc3b654f163deb9cd6c3724794506e644bd6ff223a0985f1e25427ef586393de000141d5d4b293192b2338d52f23ee2b9c5067eb5de4f2977a078b9d712e6a210625c8809755bf13462bd0a7a69b812d42ebc50913619c22af86a5e94fb5e00a5491a63e8e2183706b30fc68939ddd123caf387ccd53a758300b4de2ec89fc97a91abf44aba456dd7309be74594d5bb6004bc82272f8dc2219c522039e822e4fe54bc1fe89588b4fae7825aeed4dfd790aa73bc2ef0e90562571c6f9b351d8f17784894692c0e812634f4381fd143f800bf71d45570474de61549bda0f2e22e792d8a3779807fe7f1aaad9ec22310ca23805b45dcf62f43ca8f0cbb3d539daca4d8539deefd97e22ca93296dc9d4d9ff268fb43395216192a8eb8716bf82f0a24686561600e5df760f6a967218a9b4129be9a2775896a20a312dc59cb69d9d0b2048939ad3214692990cf41ffb4d0ee0b61d00b71980592403a0cc647201aee8b12a18d96eff421373432a35b9d820555dcd2a60f8ab1ec4ce8039b5e8f5f0c9ee9bb8eced84e260c02f1fedf6920e51431a30ace0f911a09c04e5fd2fb567eaf9014dde998bd4666e6b08fbd406667a7fe852a3b4218ee7524ac5889ae18bc5d8fe219c554f826a117222617fbc5e81c2663643a0381a58510847e75adb7e4b95a2acde6bacb72793af71ec60022b68a68f062fe42a834451c97b5351548088a2b7c8cb9ac40455321977d4a2c1720bddeaa32f05bb07828755acd6f75aca2fce53704a8d12ef6c171d8f9fab2b09fefb2f6c868f3999f199a3dcb55350bb6400a6e2b9f744a944479f8a6783f6bda75553c6d50a104780180e4826bfd1ed3e52abf172dd10bd4b0d90b90771f331f0904c682a41cb06625c721156b9f3746b56ccb01d78bf62a0e92b696ea0f4e0f9344aa8535aeebcb9dc23f9884bbc01e9b9c2a1e01e1ff2cd2628a21f3cdeaae31feec357d78d00127e2b275b74856dfdf22debad18a625d8599aa5fd8578584d4388722f3a16fcbff1f432037acf75600fca25e2df587032ce9246c85cbaf0c976a5605db108463339275ada0be1aa98c8e59c57d513b3e22903a0664b33d58298546353d9ea058b4bdf4a24d8f152986703727fcf4c9e6ff17108c3af1eb4bdd6309f13afc2035331b242d01c22ceecb33c7d323875271b945cb29aa037231aac0c563c162f57685d894c4be16502bcd99605f54c86eb0c20c9c2ff2a3802797f811e38e4baf451c58ba106a1235118f31ea60ccf0c8a2513a0d52596969b5195ddc574dd13b91e88a3883902491c850a1f5121f5b5858c93379563fdcea0fe4826b73ae8bd69a3c37af0029034df87ff1155b5960967d1b4c53ea6c51c9db23b1a70dbd3d18e6910aa80b26867e5328129b0bfc0ef86d9815ce756c0a6f766f6296fb1ec6c730411b6c74076ff6cb7ef416814f49aff67fd956efe8ba4a65f4222dd4d4588e91a6b61ebfc83870b801b5cbb6cb65c57606c8352dfba89865dd82b6a11afce1c1f6353324919766163a90f6137d71521dd6000c28854069c4cd8b6302e438abb0dcfed13d2781e45c2b411c00a5905b939273d291c2b2f3389b9571f0f54ebebb0349e32032c4737a7c9bbf23d5c43e802c272dcca9c1e382396fd682b77916dc2d2c8aa6d9a941e769b60981ecba0a76ae15c6fa56e01abd322e0abe1d894593decef5f23a61cca2d8d80570b18a5dbbdabd663cd726649d9dee089cf52e0b563838e61b588dddce8553b6a473ce1279476fc18f9fa680c583dc4c3407c14ee3bcd27de1ec5c7b4ec093c24b36ed0495e281554f0a2934c3e301f3f7fcb841960949fa88fd5449f228d303831f6d6dcfd9d94ae035adc03ecc726a2cc12b2376696728f50a5cebe99cd15fea6323800a0613b1f186494dee0d1d4dbdb0e464896de94ca58a6e44d6fdf503a3c5b0c83ea67448a80098ce35809b4efe4436bc64c15c5cc1565100610e8750442265dba381b38a29af159bb5f3bd4a2a268c01881a921daa84181796f7cd2531e46b802969534274dbd134ae91a0f13358d43b97a3c3e7a3c59a07dc2f60f6d72bef582dc602f932bed13d5fe00d9d52763550cb9c474336b53fc287517e81aa8d1a10c9f91f5a53dfd947a89bbec837a811eee62ac7c89206a8edc4721ffb4049f5d03469781050372610f1a337709799bd6fdc5f5c015e86ddcc7fc618f2cb222dc7fab5fd4225417b5d797eb2b891f143909870282f2e8613122aab2ed1bd36c0a17742eebf4e0734fab6b09f93f5b06438b8dc74e24b0581cb9a78ab19bb068a8e5c7d4fa7937dde898f586db2bd425e001aa91058c3d5cd49d3db05867df997655d8176e37286b0247eed9855f39d8ebd26a0463f5694afd68ca8f955a409fa22c96f8c3b77184d9b6eb09ed204b6d59eb5762d48bad9dde94b89875983af96cebfb2041f0ccac300c78146ead2d462ceda09c235187c4be385f6bf716f1762d60bbd4e81a625f7611b5e2a7a7abfca0ad36e61c17158ee47d7198201cd49dbebe1419653d21709ec01dda4a69ea78780c56c8ca6c24e10993bd04a0d258e42ecb0a280b83d8b74e315130aba6a4a064cca4dfe373612c15e4befac27472324a2ab2ea59152162182b17f627ceef0a84dd13ce2fa11b8c0996858d50bb048b28156290654eabf39fa2af7eaada34180755914f20c6d5f0fda33909cf19e177fb54ff32803ea1bf6e928181b884f7395ebec20943ef1da1be1824079da31f82ce92109a201b674de763845cce53bd52706ac1bc3b08df0abf7eb2b5ed1c6689b587bc59db0e827cf64fee229afbbbe13600373a424b42f84eb405590f5a009f1ff59eff78347aaa43db7139093bb58329327d29c073f27630a3d32010e558201654dc2be09009286a4f0c1efa46727f9e33bc8e1e298d3873c3fa6bb3d44824dae5b18bce37de0a4e17dfa2767aaf182079712005702470817efd0f8baa75ba5debdc40d940dc0c99dfbae0e8da094e4b02fea6245cd7027140df3ff0c0b40196a2a0f429d27eeb5eb6c5fd00a2a2e28f22fdce21daa63e61f6392a5c2a285c53a2d28c2d1d6ebb89d8330be4b82dcce9f5abacadb320b6c0d18060d39d68a59b12cf74a9c99f62d8034700c91de30dfc5b73f0c526f70d09e259bf705302db20eb9c57e6b9823ca14de5898bcd7d08d77246670cf2860719669243d2e170d411567b9e8e99e60540152fc280eb8488def9733a7da4226ae1f0e74976f8381b47c49c9bda764f3fc077a138bdbb648a1d6785a28c75debb9e5384636ab330babe919b058e0d05eceb707b860bd116954ef7275dca6406935690dc6557e4501b485d3e09aed589cc15c18b8e1d6067e288af2d8c0e230f6431e1d0dd43f544e0de39cd221f0cd8d247c52de9768c266f2fcc8587c7d12beadad04a4fa58298462d85355a12d6c775f1187b88960609789e40da5fb00956cefb3fb3d0de3b720f9de840837184a0248249579eb6d9c0b387ca3772b6544a96e799129a8c0602421707c856439fd3bb15de65cfcaf161b6445059a6323593bec418a15166aa95d74e29930aa9322463a88fe533b524614517ba14b7da9ed89b76f832232d5f189a4d18563eb1f63182f6b463ccbc35f12c01849ff1865d78f3a2f1532f84bea41637e826c4ab223c7a60b9ef4efcce2435899581d17c4f699b85dbe845f10f97c06923ff5d19e5fc7b6d2e1a1e7f60ed35f81b175a351045473a201636f1c2396c534f884d62b33bdbe28c77646d44d6944e894a49cf07bfcca12fc09b2af606c7cc4f095737d0fbfaf3261ec89a6d64954ee0cb4f2fd739514fd4858da06cbd2ea665027e143412702a5799fe4c20b524ceb45a2154c8309b92a719286dd016f3510e8c470a8fef2fceceb615b3b44fac133ece4fa3a5b8e8b13e1b65984c1b0f432d5b456ab05fa13da06814c1654e904d9c3c32da8acbc712d18bbd2852c5e310c8debb7ab8619a117b55665454e50cd7f5a43331ffd10ef317538abe9a54f3bd44287bc550adfda80f368254b7ec50ab9a234103ad1c5f461857ecc04fc4428c18c35fb5306f39f74018391c8ef12230f8ba20926e9d6db8699da12f8d477f00a4e265b1dcc5ad60e8fb8d519bd6345996c3ddb15d4cf8db07f8f7e3c198135a5518b76c58d4d56bc5bc41a0c926505242d51ca75b2f9b102429bd32e0e91d8f886daf9caafcd9121d1d46a141b6d195a13e1830ba027e22851efce464e77e4350e4da9cc7be0e08f5548fd42c58ef566b8c6a352264ee359a53719e98bec0b2397f60c855e676b58a27dd8d44f4060960fa2fc1544d0784ec5447871681b011e530a44f148a312a41964a0981de7794b9eef78d8fe2ebc90676d1309e85e51c14dcc331743be931c955bd9c14e7fd92df93d3b839e623060de8bd056ed1db03e2fdab36b7415443fa70e6909492c6c0ceaa9325df2e464fa9821805761e7652313b2ba748b5550ee03c80e8ae96f0a6989ab7a49271efa6c0e5f7c44b0c9b3154d2447c55aa4114da4bcc4a2ebf1b2be40ecc4c1de5ea22a1504b24beef086661043441443e4244417bd33aef415c22f2914ccb1905d729b4280e1e7e14eeb278f29cddb68d9f094dfec97d1dc1f327dee87a7f9f4c698d5e91def675a7243ee0f33bb79bbb9d637d4ec5d8c1a72588643ea8e469ccbd6f047bde415fd9f1ff63cb473544ece9ad910b97e793a89e1ef1dae04e7de97b72de7cce341d6229875b00dda95b9a5f7ab8131872478f3322137c7393a3cd6f27b4a3c7cd3c1227a36b435b33033b10f45bed505b54686572cd335612394ca863f9107a593b2ad1efe64394af5eed725ae00b50b45da4ce328ca2ff3ff1a1435a7f17e15bb17c59b6c5521153912300214355504456a0f0481671d745cc79ebfbe2ac3553d66444786202db8106d4d1129cb2861d87aef057ddb1758195f3a82d1bdc061e4c9e8cc5c8d0d63201bceb5dd0f151f018d9c8d2daaf20b11be6f27a8ef7e36cce28c1a60723015a65f07eb716b2fadec22589b5fce71c208175cd65b1eee8479418a5265ec33508eb88e85869490fa9e28fee1975ee5274ab61035494f593e246dbcfa4cfb4aa742a1751f8408a487df19b68d5e07971d312d7783539564911fad73ee47a81e0533efd3d23be0e1ba494829757206d1dc5726f4e443c935ee39991b7b144933fe8543a62f201bfec2df0a1816048f16481a409b05a9b1244901ec84e4fd7fddd53ad2b8851b0616212e7343b17d56d9adc4400c8b2b53d2305e28418ee48d79eff3398e7861ddfb245b40ce34f3bf4ed9c619dfa03ddcf2e74819b71c3b47714c7cf371fc3322fe314dbd8811a722b8e51f1150bdbe172c067327485869fef4814fcb5543e0ac46343fd730002f23b2853233a39d417b35dfdec6ff8148f38d5b35adb736f326118021ac351123a171b06c7379618bbe0f23ea02a34b1a1c8041f31d0b759ba2dc659fd7b0cd5103126562fb5c5856174325d2c7b57c192d1b047e5769648e0948bb9420f68c2a8201c1f064ff6875be55238e402ef08a7c808203ab2aa1bb24dcfb53469ea61abebf8738604d0689b1bcccd98ff42fcaae8b773193015b9c305dc9c8d6ae6ebee154a8a2ed593aa803baa41275a28e787c52e842c49331ca0c10331a478d2a849c3e740b3e5663c6c7ce995ab07865c324a123aaa247d1e435e357c5ce702c6cf37a3edde0e1e92088f5f054c926f47b4c5b3c2a29198aead413922196db265787c6ffdafcc359b0d95dd902b4632b5929f93103edb60906c6e5cd782c841e42a20f441328cafd62d41dd483c83549881dde36d96c7eea9b5152d559d52406768e5c2f758ff9a19b8e32fe0de90cee25246917157fd3e2f863b3109221b0550a6b59e30f9e46d3846702f2c359725cf64b5f9c973531abf692134eb7eeff0020c699d6891316d2be60f0d1a44838342eff6e7f7060f54684f2854472247c97a5308cc3e6d416a1083b16214d93894172c6a2b95339791ed30e7b41ad6d33dd40e1b964f6fbc2a2c439a686f986847e771cd09a46feca3de94e1b39ed2d3f535473fa97b97abb2c56fe2f77d27083dc1142d66c9ecb0ea28c80eea9bdf266736393983590fba2e5354e0d2e2f4b540de0c12fb8d2fffa259791e21023c2988726116b4c9748063a204d91958e3d2c33334a477aa2cbf1b7e27c2dd295d551f127e37b8e765cec48a2b615f0952aa99f8ebc859c68bd32aa19640285c3d9e56015b9b36dc1deb484b28e886afd7a40108f75742451e75c862e92ff213501445f19d15d4802f242a4b9de70f048f504f79d0b6df5ca5899b7bdef16d2f1fae8dd2a5e24418e75d7d0e1517e34eba985c2e03e7649da7f38dabd442f9b94ba06093340428e7f02c6d95ee2ecc503fae5bce11f91281e7c1bacfd9f1500b6688a1bcbf918a73bb10b04add32738971ca65d344dc32229677c2d8958e9d9b79cae63f270e607a1a560e8963efcf5a8dd7cc1f3a28a85d7aa3fb1ac4b5f163348abcd3432cf554d1ef65f085911a9b05d2b1498f2ce1a1ac91f11cb513b4fc5f98c3eb353d627682a0a4a5101061fe39f30861df3b1addcb07299afa13b565e598a1da1ba522794895a841038268b645e2e0c2433560fb2d12af7e69be03e7fe5117cb94888a7d269de1bf03afd688bd0fc99c2f03638bd5f548ec671f4ea185614213f121f3c1e30135e6d8a5967c56ad41b67519e3604de5aa10878b8774de3de2a14bf4c51d10112434128c7b68471338895006474ebdcd4b99604977aaf7cd54742bafc32e1ec5269605a149a0d6461d454949ea1b632d44d5446e12417a16c08b2c2a8a42d447c71a1b9b32d2a10892e4e35024f301cca654fe75e6dde06e71eb3b1a32add011da1fb11f576de5d9a5b3f95dcda833e98a72a03f2947acb9568ffa190d429d233be1ad125a13eba89d619d418fc8440a79648ac6fd0cc63b997e4a0d27ef35e72149ddd8e02f8e518f95733081566da0bfffbbcf91ae0d28c611fc3b7e1981a73b9c8f232843240d2e5b665d8bae85e19d95d615ddda8e8a1e5d4bcfe0a625b4dfce24590be7771a9961e3205260c9ee48346d31f6a0353f5c5b984565d9f4fa73d6cf15b9a2e438d1cbe880155dd4ab20281713a972028fbd2cadb37abc3bbdc9ec01aff65991dc8a2d8fd8d49a04632c4be5a50f50a823671232e7008503fb4dc0377813000e8f74695381e54d154da5b891b48d135b3d5b61a0d106605dd0e21fa405a0ff208bf84eae2d6bf4132bf4445473a9473a3091ff86d3c1ba734c4b7890eec7d134c4a83e87f818a457b88b8da374ad110d1ec80236fec0c087d5e9a8a2fbc4221ec8f898314626387ff65837fe2727dd37f1b1f755951c66fda0207600698d467546f4071741e809d67542d3edba8c238911a73f64590f1e1e4e4dc642093cff7568fad0df9128544c2ccb9653ffc64011ced45ed855b0ae2852e3d3181c1c1e2cb58d2cd7af7d4f00a993b7587eff48500be3af179e7844e969e123aab3a32b5799b48f99c0ca6a7510dfce9e0679ebeedfc164bd1a56024564c14f81c81855bd519b42cf04e11255802780cb6258d87248ee3ee5c5f197218cd07b7af7618afcbba080acafadf492c70fad2e682d7f23135fae38ab6ead387d2ac8f7fbf1e5e71ad6b5fbd4f272a2af1e7378e25a99a2f343baf4637ac9333aed06b470b998ba9c8adf7904c6e71745700bcae8031ff18ef0c53c830235927eaa3a6bdf07b86166e8f5c01f8ff2cc7eb88efb50f28d7313b8be0931cfb940a0c5515635b55346882233ddd254bbac7000aee373c3b773ca50fb68c8dc4294f1741fa3f2bfa6e4beaf803f7b4550e5938f17c25538bbca0f21bc885995146a5564ba560d050e7b6bb1bb40d1fbc549328b47016938de00148792d6f48be26d2f8801e53533c338e0ce93be3427c6213a4507bd01bb9203ad6c2d97662e65bdeb76a89f1a0598c4880af365f50d53a651bf2c531fe009ff6f480aad76f4d58abb8f022c1676b5da7825e908136d288fbc0c954197f2cdb268b414a9bc1f34082b7af971b5999291149cd6318be0af50950a9dd35ba7f85c63430e227d0222c84301480be87fdbc57c247f62e3b5ce21e3ccc5f8d5d32e205d46ce81cd275cc9e4f082bd132954f0c94591fa280e26fbd0beb73ef6ff37aae5acad41efa4c643ff790e0b56d05c277011acccfe0839270c015bf9cf80f946863afda32688243a206c4f698e5c88f428afcad7ec9f60ad17ef711f6d61fd048c25eead90fcef1f4789c4bc4863eb97e0bb9833cadd9ea2ffcc5a45a49b760f4803a6a0e0107ac9a7cf23370a0658832db0ddb914f339a1caeb9cd516bcd75462d2d96ecaae431547affdf04dfccf003f6c784e87ae6ee31884ecc99d6ea332fe4488f72659e0db23868ba8e1901ac37f88b10cbb1fb5b51767a402e40950dc387c9f701dadc89d3505ebc70a994ff1fe5c1e7be076f884239b7883235d87c9778655190aed1a4c14e8b939bcd5890ffd44e2ab0ed8c9cc01dca669448f6588eb790696ad3e397ea6426e8aead32d7da32e54ab572531fbd7f39fd48617ada910f1c7122d21f9c952acbb51387c13c2f522b629968261be8497136feed2973feda54b5e1fb9a571378147b824ec7451c999d3f2ac582553e0492d9fcad5a12591bf6c40e40e843023a982d63faaa91a5e5553cc05ef9b517732df5179e7810c10eeba1269fcb2acd55f78c8d703491f5e2342ccc1b58e42a775a7bee40a706423243304b45794eb5ccf550f4cfdf06bdd5e1e41f98e8911f81adbdd68b3569831a30dfdd072851775f0f7031e14f89ed083f8a8334c2c6fb34b17f6f9b7c6c67835a12e5aa890c4e6826993d067428a8f60ef8ad030739b7fd865d023f21415f3a741c8b42cf3ee80670df9b3f00c3b6d83e86f48d0af8f43ef249b38674a024e7a5f74733be4d2c62a6c43204c0ade1ba9a5fa5b3ff3975ab7c4823a74d8c7ad3c2d08bd19391b520316d15c456a76a9285bb3c867a481a0aec898b4735f3b70dc550aee9cca19fa94269c9b898667ec22ba47a850993257b4a94bc5ec3d895dddbb44e2c74a167d6ba707d7af18ffd264c15589bb31751400a2da30d92239001b7b651616324b37ab99c16a4c00060481bc16e290e6f967854712e5c69c28640d7f0d8c5b5184b4a04f9cc2071a9014e9829a9116b63a389888fe582ccbc706f2280119ebe199a0242126bc056ff78c0e6807ebec489b86a5afb8347bd4442ecbe4efedeabdd2766b4d5295796f9bb5799988beab20e8015d3912460d7465a512a812e47effc090efb6a22b09b10d20b2123b256921dcc0a0f9932ace570d138bb5295e583fc35ed817e99f20af681d73d379f56a1a01489e53bcd3b1bcc63d43d152f0b8605448585a63650bdd5a3852a2972b29fda1271fdbe22323b05508bb3f6d5c272c1815385c8e94a0b1a0f2f69aebb44c1e60c854877200de81d079c0527dff955503b51af4c19ade9bc8f006efda7cc5e3ccd7b4b1c6a305ba08db9f0bcadbef3df2cf0506dade03e719cfdf317e5652c05e9e2b4cf78512a557e71f4684a450a21e41078218e081ec618a74a48018f784eaa873935c95a512bde959f22ef4f11e97afec5fcb40c3bd621a503f6918d17095b10ef285411acacaae7284a5a3b69fdd18a77758549f0a1c63a1f2c63372eeb7124868fb4df1922f65ef3d2b43f411bac190518f3b7010cc901dc114ffc94f92995411d731ae758a48e6649a06a8aa6692ad9289bc659715b56dc024a1c613f2f853b20580dd722c07391fc9adb72a7229345b5e754bf2cb03545b654ab908e28ed8b72eaf69d9c9418e99dbac1bcef06c1558536fb92a52cd139578ba4b1b141c8870f5c8cf212a1abb8329090292fba60abbc4cd85b5a5d412556daa84d74090dfdefd26bb056eb3a4084e57c6dbf4dae0610b1be1e0a79831e700be0d58ae96b6c27645b8aab24fe3caab30a03b6af17267c9970b3c2b1fa16a1b3b6d0485467c6e6b75755658dc9805302c4d9c8438a8418d7fd0f18e1c21c51885101cd549f6d61d410368ab68a005db029d3e70159d0b4f4b0f258b083e5d0e0486184f58be182d8832cf145d14fd842b697034e5b2c12709dcd22514faa9b014aca4246557ebfa73c02c92102b67d96bdd3a986bd5df291661487123ed12054f5a2c3c7064a116e2b8c907edfa4981ac4286a1dbae2d504273e51d3c41205baad4ba98217364701e085bdfeb59325ab68bbb5fd6173a6b80b4114ad63d188f04a1069089c12c092c6dea5abd028d266c8ddd9cb59d32679ddb5024de70b10a772a4c32e789013a766af3b8fa7e7b62af719641a3ca52c16872a8372319ae0cfdf01f521b184c0ba1c35f9710531d7b610c27db4bf710c469a5191121236dd4a5e39c4d584abbeb947ec263510cad32808aef67cb904e77eae7652ce5fa65f6c5bd30450677c20c5b7d181e16a044ed7a712f4b82a1c44363ab587a049ac7a6aaddb37b51baa89b5347b7403050fa90f3ef211415157bec92a385209c8a3a5b28ab7331c1266cbe00dc1b24c68df04d4a6d95c2c080ef4ec2a5f24207b6e55e8b4dbbb8b40c61d9d9b63b16603fdf49bdf564e27866340cf30af5b3626369612250c37b51f0037fd72cd12dbd7f9d106e91f16af44df18e767e25b9c8d23aceefc8355a96740abd36c644dfb3faa0983cc5d3ec52bbe629301af5dfd15390514c0e5eff2080daaa22dbb6b04bef24105819eaef5280ca9de7d88488d9f7394e92073f0203a002771268c666735c1956525dc1a12b7c50751167a5ec9cc6a4cf25a5060ca579822ccec1259518a67821ae35ede1ace053427c1302e0cb5f4dd13171561d0296290d91712d857f1902aa84e311ad5070e806245e217c5fd5a1aa95cfa42f58accaba5a48c61440ba3daecf44afb2b15522b41314d82a4a1dc860213d6fa05bb00096808795b9ac55ce7188f8514001f6d0d6431d88160b7daa963fc4a1be434613ad1d6ed1ea484b1a2c6aa38a72b24b0165042d4f12b881577eb91f5a34818f09f8f7fc225902e058e5cf89906f844cb44a84e26dac457d74410210623693c1dc9dd5d6dfae01b41f9789705940b37f27531aac89b7a014bbac4b4e1b48f0af99a2dc513dae6d13549754fdb9334fe10669330fc78669b9597823f04354c4b366c0eb93658292f88d034fbac561b9547f9e8b5915a08c95dfd3edec9d598be98288f6ac92cc2554c3a3059c547a5d095e4792c28e045c8e91da716501e4a28aa1e124ba03439f6af9f31a096a88aa63a7630468f8ba05191ee9aafb5449eb4be19091fbfbf5a5dc42ff62c203fd8b5387caccdea246b2fccaf97fe51c232984013681ec0108f5bd00463e1b21ab052fd9d5dcb1759e44be8b280c283a76811a08ab146ea5561a76f9cec0cc369715ed86598e3da81e772d70d2cae6880428256082d67342e1653eb4a95d352ae2f7240f97738eff9747c2822ef19a40f4f0922118d9d9b8689f6d20d104b2034a968efa0fc9a58a00d0d421b008e0ac3737c4a07c1ad0c138135013030c17fc4390fbb2cffb9b8dd2de25ecdb89c24d5b94c39b2f16164b145e6583aa76616b79b085b6effc249ab7f7126cef4c06f841f982a2113c2e370bb024d39a90587c52e7b9c8bec24ce8c2a3cda14e556c3ed16c9f1219b225a27e45e19ffc098c12142104e38accd84d0273bec6a74ce111777245e35871aafdca1be13941a86b9e45349e0ea1580ccbfdb3f3bbd9e68e7712c063b6a4e79ca7fdff420610e1fc8e854625026d4cfb23f2621bf54bba2219ba31d0fec9ef41712042c39d62bfe42c95e0ce25fefa69ea5ebf4dddcfef837f7bc0e4dc850cbfdaaad3b45c121ca4edf7cb82bc98e056b0d0d1822200d252e88384d11ea307c62b6b30c54d5180cefcf9732775d59ded3dab09f8ec81825002e15416abce455078453d08d7753901c185cdf8eaf6f8d7466d0beaf83424c7a79bd28b78633b458175564715b1126c5af8b2eb6fe99d60067cbb03298b66562ee06e82a8f8798a2ee662a72df7cde0bb94dd408fd90443097321ee49a6f8920be8a884843ac702abb8c690a85ba4a891b80a4a463036e15f50ade8a47be6019f438c083b5e631cd67c150b784580a02bcba9d442569da632db2a1a02176bd2d42102f15243eb57f5ef2dcd4d15641836ca8751f159e5e3f8befa49340cc27e66c7d53053c005d70df3317e5760a0a195f823d4163a984503493b64327300edc29abd3037e63656a9a7e70834c8cc92fabe1b3e0a9f908210181c448e3824cc649043941bdaa3de1c595ab14587f587899fc8d008216df2c10e979759322dd7f5c14220e97d4f2e5bf3c54955ac8517aa80d340acbb8318f82714681d68e17cb51d2e08548638a5c84ed4388d582a196e93a7fe9bfd1d23bc7f9a752407508cc485b1febdfe487c5856e7170f41b36c817f6c922fc7dbc0b5aa03192eba184a01a159acf7fe2affdbbe1c0c183d536ed1485bfeb8d14f1cfd81c139b7a3f6d5821944da9ac9d62664cec9d8486be8d7794480b4def418694d65f0d1a85176eb19ff0cc1b3a5f4695a7b54e34ab8da7e2b3422b35b19d5b074868e601e14b0ced83093a15cd1d1d7290c8bc0d8b8c52360b715592e34f403f5236e9ccc219ef9a85ceb6637e8aa889e024aa60f9f853c963ff396f20475bde40f3eb82d7b9561cc1a899920705903943828a1373131837d2fed5dcab43e26fa89531f8c3fec33d0618769ccd556f027432bdf375e037df1e709ce3fdcadb905434333601d4e77153f19dfa8018f9dc13a28f033b0f938b4cf4cf10b21e5a92d8bca7b1d73aa6aeb8e7919cb7af258a8c0d7a0a9127b4af4c350b2619d79bebf28b0101448d74fc179edbe2c9ea21d318b436e789f4e658c16a03e52a53accf60b7c8913fd8211fdbc3164c4811c80e1677a18784be18ac962dcc79c3aa2db9bea074c243d4c5d7724d4cbc5e44587e7ea772394aa01140a2191be695aa05e0d6cccc15a3ee1def279fe2fd3d5ef7dca774ffd112e4a1abb315e5b3cfedf32073b9c78e63ad400014429064bd274272fd91c675526ae1b46839e5b3425805e3a61921e6c8fa90de46229f03414b8607204f679751bab5a7e944a7aadf0bc5d35f9546daa029af1cc4135e1e60a0149bdad4527a8d0e97524f430f6e287212abb69f952ba15807811db36313ab00e7d28960b6fade2c417ee1fb8022cf381a358057ee010fa205e095a9f06e26dac320e2b83321a2ae228e979f5b72a0c533d352c5ca83daf3ac9a2cf494fe2c602a6dce0bbba40c23e98abc2e7d3ac628b9302877349a129a440bc18754e0517b80bc52208d09c85075dff8c2e34eadf60701b58d7670c793b35db5b26ea3ca0b5d6bc3443ade064571c33f472b48dcba79f634ff2d9a78c937a7f3eece0c9c44418e826b6d4f793485cd79ba51198b886070d7ac7b6f3290251a5912baf62b426d5a4f323b3213969b77bcfe7bda87dfb878f88bc16dea05e7253fa4a4c1e14a759d2680353cbba0e8e50be696e4018e203b998138400b70f909395742af9911c248e309a03149fd932f6c6f0f2d6ae16eca2f23802a45ff429e7e922f0dc4ea3db9f2f73ddd975507334b46670cb02d3eace0cf93542e3afd40f8969867705e681f6968ef314c2d6e389300abd6ff82e0310e1c993dce44ffe5ec3ca1b0b5447fa71853d60e7a56e033f44a150cac479e57b2482fc274b0a05544b582297c2a527a75e42b4543168e75ad96cb6b824d9a19cf22d1468c61b72b049e2df8178bd3e833799974fdae30bbcc9a7d5ea2558d8d5cb815f3b04e4f35e0b6591a889a2c494a1122846ea9692836d0eeacd25a905b0d68afcb7d444eff1cfb81bd7782a8c20611ab7a4e41ce1b9f30d2390cffb21d75eee24e6f8bcee82412e52f61b21fc569b7f3a17dbb97b4c5daa59f3590d34f1597ced42a41c24b90ddcab646dd1ad759c650571225ad89d69d763870dba1307ad75058721a0a871ecb04cddd0105b96abbd4e53440258351871a41cc9254ba79ac81d436b0af77b468038629808a963f5582dab8ef55d1c60c78ad3223646f2be49eae40c196e6e64adca43dfb16a3ffdbb659663d34c4651c51c335990a5a78d1bd9df15d90053ecdd1d8346d1bb00225f3cc531d4181bc8362f0f8be2b2935259fae58dd972665ceeab8dd3ac6153b41e21ad1f2e22a84fafbe3ec9efb593ceaa959b13039acfc33c38438953a67b78647c75824cedd84a346c53734caec92bc81c304d063aa16abd99b47bd1b394a0e5f64b321cdecd663c70b7572f0e0f5dcf3cebbf927ddc4cbb10abbad8033db244e0fa26a36c3e8665181b63361df2c23cb473fdcec0df7e0baeb0c46e426220a2b638b9e4a1633628c0dacfa641172ed80db384751ce3d0aa8064f840d64a4d16cf185066fe07c46e56d992db667272f69ce5a9f253ddcbc51aabf20296247e9d6f7778584de4a94d3d1971d4f0499545bc7d770f5ed6109e3851a74b56551c1cc5e66f4391355a7c46894acd00aed1449d4a44e60b7ce737034e819ea5e3a2d00318340a0f21600e7a0da0800382186e204e311623d81b99c9cf0f67e3fc107c79d758355fbc0f79240f451fb1e3b2c7b89a4ee7106766ce45184dd1f468d81ea69f5742c7ebe69931e99f2f79ea461108df091fd2c5ff942b0efff41177eee511fe9b146b30e4ad64385400a4e8e34f70075fcdb411459fdf2f61f6bda7d88ab057c974febcafdfda88793b14d53f0b7da900d70fa83a58d430580b6d35e8fb9966ee09d2ecc0f4df50bdd55dd406389674c2c8979a17527a70746ae185669ef224cd3aa17adbd576741634f185e695ad4933d6f8019b937bcc00d1126a5148482b646c3be54feef6565b929b8338eb54358027476b643c29236033a00676740b3debbbaa14dcdb40f75267e24dba38cca4650e9522e96cd146388ecec6f0e9cade0ca26abf4e943f0acfe4700ee38c0c292cedac00a84c4d78da0a1cb5da92b9ce09983b9bc83eac518dd7e29f23968e0b2afd924ebfa8774fdce314634fb830692443eee4b2e727474e4e65008e0b12b4d1f307ff135d8f31df277c6796e85f3bc4057dab665588f94d94c01c3d2278ce0fe31c7226c2e06fd5ea4edb008b897938a3b8a70313e16c215de2638857468c76d4804b4e3aadd00b8755f826b5a3aac350a7fbc8138e0673e0e76cde780ee05a4b837a16b4071b0870d83ec197721af033c7007ba2a48f89ed981dadfbda795a6a8d736e2aac4804070a42cf1e6bd6eb303053a5e0f0a8e276d45902252d5cd4dae7c5dbf39e9221249de65ddfa247a4aa1f69c167b4a3f141d6f6fa73fc19b08a3480956bac18790c35cad0e8e92e4fb72a405a8342ebd079eb6a7edd87dd4754f7be06cff00c182aaddd26611f12282be58fab716f759f8eb410bdb88c68edaec07460a58ede0a3aeaca53454c13a6850c938eec2faa02a5704428a00c3a1671e5d7d42d0e4f6b2e67e36b931574988d9e432c908b1861c8c86a79d86eaf5b7cff15c4abe0cf670d30b7272b112cf3f964ad4b07830d8a1dca0aff227d05053412c371b435ba7af31c2126476579a5d141b5f23a79e36a0207f2e5995292da2921433737b74426b1cd1ad37f142de1e48475075049acd98cdc9df8c3dce187d501c0e7fb22d57656cc33c6858538a156dbf24ceda25ae0b6af456bd7d964bccd1dcd9e5b7ad70b0f4adc02e378c2202f435ed3a3f7da6a3c5b12f8245bf6f0ff634fe0f1956cf00941fd94825a9305441168b7d1f1f1d30e0d1e0b76e0d6a7fb400b89138e8aa8304440090f590b63400e2bde94289e8f8e8a5828a1123f8340db955632ef7bdf4c3dbad4a3380096026c897c3b15fc67e58320f307e518bdc70f29371399c6e441c71b65b074257139ce2b6983f0bd1007a9c74545fdae44eb3fc24a41301f75d48eb3912feb3cc9d033f11e2749fcae8e91e3ed05e7fb0d9669fd23a01569ab54b884edc07fb88a03a0ec1580f2712590929eb7789eda91c49b57e64d3e54fbd778c74a371657e38cf4aeffe579c7e32b31b04d4fa7e994a0eed280df53033ef8d21d60b8517d40ba09097afd3057146a9a7108d1d5494f96b387a6a76bc1944b23f2773df55c07916c3f4710892a2a0ebf0ce4719bcc373d31a0e068013552b0f7075b6eff5980bba3ac25d2c5f98d12948bf63be280cf14dc01d58d22885c2b8abc51cae97c064bcf84350b52dbabfd6471048f54307114f2c98d33230446726b8850aff7ce2b0b41447c757d196f20ca0d3a9139fcc2e2d536c8f8c5101226c288dcfe4b5108e8611f06e2165d1b512e02746426ca8d66c87fd2dc44a1d96ddec9c4c4a2d6ac790ea77c1ed6ea2f481c37b70d6d27bd7fa298e0a8e73343183f85a416e0ee44d9675ec6c1283db0447527a9383ca2629a05498ff913899569edfee763ebcc5b2ac8def28665e63a936176cb1876e640e58d66a312aff98b6af460f91cd739eafa53e825c87720814d9c8d0eabeef12feafd29e6f12a28c43f39f5632890790924871da6f0b2603a7ecb6d49e01865a7e6e37a639be29bf4a428f46aea3934bb82f6aa0d2f4524aa8b5d1f5111bd4fc2f6a34dd494e7a19cac0bbb6beada9be9cff25c92036b9c865cc252c72c2c68fe2a340fd0b3bd02408babd7f2e043496c4c1e157bbf1c7bb0f904c5759fe8b1e34bd65a24dd6c53a2c0fe2114dac0a6598195292c0ce49249a108611c052205c417100612a6d418224723222617267cc752288880a406872a7b019009369a20a2959f842008bc6e7701fc5b81365384ac018ee8990918ec208adf14f0430816555437ffb809bc2d337f6d5657e586fabb953603fcd0b507f57c94bd14ea7fde7966994258ed4a84d20a5102ef51a39afcb7bfa0bc2143db8e2f7913b2b21a2b1c985c63522b16786ce2f03651f35d79087349025683f6f4b9eff3a170902994176ea1eee284d124ec7e0a710d51342bdd1c181a56a0cbdd165f9c3eb2572c83425b343f701207b68b883de259c869ccc601d0e73ef56d76f7496ee073410690c23b6ed325694c1eb437e90424af4586a84a87be4910fe0eed07c4794b50b0ed3927d68d74501b2d1162a6483416bcb14f6f85d393647633d0f3c6c8ea1c5f17376cebd1e762076c97bd43d66e1bf9d212705a5149854232202a3d9a38bd1d3952e9e2400be1d96f7cedb2af84b2f2a9e971daaf63a38b96865cfe04a75296ffa7a6a5d8aaebdb0dc550145b93814459964264c83eb58aa3a58b676ecc2e38bb3e30f02c15dce879363fa86d8faf69b52af83ab70a4ae4a31d3abdaadaeb0f9da450121d19fdf3509027f47e01d33a66ea1f970bedea7294113228a907cef206068fa48a6e00f89f795cd1f1879114b1137effb28788799073198b4179ec84db5880870bc5d36da34fd8e7420821ba73da895a8136a017b35235ee5253afe3b1b638819cc67965bab711d7d2e70a5bc0e45bf0d4ba96b6e7d42a99407f2a4215edd164ae38e2358902c6eb0572b69be44d855f168e19d84a56eb7706fc5a1bfd3a6f340dc40c3d00450b36a8e21174343e58252de017884f1ea8406e45ed71c5216a65a5f2393a9615b1529fbab84f8d794cea865d3998a8aeafe06929eaee487ac2ed2f6944f066fbffa186a328cb8a26f146a2fb10144cb7965ad010116d0b09520148c1da454d9119474165715187f467f0832b8443147d52a4ec45b27596cf67a596c79c121760b866ab989a6a873aea307136a3f6dfcc61e0eb120299373711a5e1f9bab6573a4c7c4ef0b39372642ef768b2d8280c52c68ad0a5b6a0c386c86852ec5f749a12c53b516b107b61d69e5551048ac9b921113d10b7200fa1ee3afdaa8fe750639b60ee2b62c37483dd90f0486ff0856c38493c281cc08a28de2ecd58b09f3b30a91e402173bddbc955523a499927e3a73af96d2a20ba95fc53cd8d40ddb060ea055e04319de4200f323339f14127c687d003cfc1747686bfd39452a1ffea23bfe53341ae754e5bd9d8a1828b2ea146377b0952b2b89ac54aeb3b9da4d29bba3f8e6704aa67c365cc1f1339bfad5edf819eccba82cb7bec6ffcc21f695de61f2160d9c0d9b98f44dde66811dcf51b4cd8fc52c7e27a54d3043aa43ddf784dd0cbdeb873fb053518371ef0221a0d7c97501640ade7c0382aa6f9a4c18af7870368be120d719f65adcf6447f06ff04b2bbb167e8402b2cf5666705b2555cb2943a346b72865f32583700fe72057facbd092f6625363e0e4faa0fde8fe7769bbefa8767f59a142973ce1b610ae2f227884cd2f5e289a07d93019d71789d681b175afcff7f2100fc92e6b953a06adc826a9a893dc2c50521fd73c4f0a65a81298918b1287e73e2aa69ced155ab1269f352867465402ea8c36361358598d03011768b6825f32909eb25327b1f542974e28aed5c5699cd00bdf4bf8c1897afc217f335eb9e46deb5a5445dddb645a1f4c05ae338588c693b6ae74094aab9b0dbb1c75fbaff94be9b214164343384ab6246dac508158a906c8768961a6478465134e05708c8bc9353a1599d4c6952314fd011b35f1750a6a3f0eb849754cc133443d478026f8e1708d9a07d64d6aeb2248cd93ba4e21451f8aeb13488e9736593ba074cd11c27060e51959b5dcdbed415a8b28ee08355587b1ee80d7918df41081c62a754b379000dc610d8d79552e4136586e56e6abf6a0e5f8afed73fdfc1d4d57f58073c051a871daeadc140e70a44dab8f7a0278ada4235331b849c229d94573d5d44e521fe6a712c25bca8ef25baaba6271672f51278ee5756aaddc8716b0a3ac8d7577863851356a9c5b5762c077fab9a7705a1d3bf8c5c742c28360be5d1488efe441b04f48cce67cf44bfa556a1cb15da43cb06a54a1fd15ad464446edca21a3eb280845a642493b4e0841406c1725229438ffe89f1e42293047e27709b916dd16b6d4928c2ef2f960bf411074f1cbead8a65023985ff11eb840760848427bca7b12d4f4c2bb9ff57abaa7e901d46899b57ccfc86fc0b7eda3bd2aa253025c276c41007f081e962faa032319e7ff5c1d45af7b1942f0258fa09587c14e41a5bacf8247d93cc2c93f8bd7c36ba89aa080f088e8d8de75fe183ae603603a183841f8e7a3f28901c1911b1a2ea885f140e4afc1957290a38118aa1188faa7733ac22a40b21f89e3e5b8e2fd263af3eef8a605695014effc9001a6f0de07462052a601b920c0272b7414928626a2bffd7bfec1415eca889d820b7f4f882a0d688fa894720a61fbb51daa8f05127eefad29f8cb55edd1abd14f3c1d1e44577e9b5ca149c3908fa81a3331e7e734e2b770b8bfe1b23401695fdaddc1686ee6672d2ebf43e2742ed03af0a280945de2880a13b3307a2f34603dea01fa530000901a6f29dd3d5793f7d9b14118a9422a855cbe972c9b726adc0d754c0f8259c04922cd771c2d0c6d6ffcca65ffc67ff61dcdaef19fd1c519e323e493a586b22838c20d0ade18d66201a1ca1b34f966770b893b113b45a3578f7f037aaa859d65d1528a4a4a44563b1348f5a015220eaa319936f7601ba1750c09d348292cf3ef8448c20acdb25345ec970d3ef3d7caaff6f30b7c522022f4a848019a9fa16375ce5f0996139579cd984bc38fc541e889d70f7a2f7ecc52314e00f40461c4db3e49b9fa34af3e5568ea067df5e80268016a8f7b27e9e11dcdcf629d027b48fa04ea579c2c246f5f5e4801e0d4a8ab87ce45d6a539797fd87c889293cdb6050e1dfa8a8ca66e5ac38bc73af490febba73f392000777485f67afc9fedec3bd94f1353b5b665510de716e19e27c25964c2a938320956d54c4fab34628b7d42f9fbef8a344d7ccb2cd3e35855e8d2d5aeabffd1e1ddaa19d97796816a9d07c655b555e09696161c7adcffa7afb90bd213d793930984fc83ce5f6ddf9b6c2f7345546a42f4e225b0fa9f3b7ba54fa523a9ac7733dea907649310b5b21ffd258dfafef57f30b3a84ab9ec4654ffda0fd5d1a2b92ececa265335863d402b8cb153634d726341d3b31a2dc1db7e5538cce76031da5af8f01244db702084a7ca68777353c9fc47dc1b5680d1de0365e7b2af7fa43caa4cf8d50225da7a2d9288528581327774e4d49633fb1fb9b5d5b543f0d7e154f00c48050ceb7cbccfacdcf617c63a38f5202dfd11d7b7b27f6234e14bdf92e746fecf3bc5ea437db2a4a612216f09854065b11868fa3b82f691c5709de3e8d7c1225c313d7f1847b3c2abbc2768a08b93443619d3ef88f96c54e0dc53d8382bd84899cfd2ebbd32b95a42b434d2af43b0bdb7cf8c5655b5f9658c1535cb62ce6dd061749ca5055a6b24436687b7b04929d85f06f8af70d25b309ba0e3f608883ea538c41079d61fdae854b26c8a167c99b56bae587b22efefe7bf456478c0a90c4deba949bceb38671d8e77d071f64acfddb870842fd9daa043c120d41d7a91a67953584c0eb0a980e3f8a2e0bbe74fe8c5ae1a09a50acc1473c990d4513b9657203c0635a77bad0c91fbee9c07a56d64c4da129c2fa105110c422c75925fc31c66516f023e71df978db5d7db1328a2ef257aa1920b3a676f7f725ca4fcac5d9214276bb767e1c5fd690e907591711e0ee8fbec8e28ac87e8d877c5a72fa57b7403f8c38276c02d1b4a0e6d73b0e9c2ccc4f5712255b601bcdb1a69f5ebd9f9ba01438f1e2658faffd3cf1f1782c256bc207aa236ef07e09669865078534464536f02d932ea2b9f17b35aaa6912348d74e65614b1a6c70f62203d6ff04e6444070592ed5b78fa0a39f4a4a064a26cf8554f6ea585b5f9756d012e4701746aa7d76a01eeea6b8a30cd37783251d5d35f7016acb7bc138ae77f63a1f1e09357fae0e4ecd05f0b14604e84622bde5cf710f425f22caabc29420c2b1b9e0f4fae5aba3211c0bcf04840fb9f1047c1eb8093810809b521cc69daf9f02c1229258aa410e774b038b52ba88962b6e6bc77c1cee02da87268e88c046c664e210e103db4f59d7cac68cd562ab1462a379f4a076961fcd16d1cccfbaddb58165c6be1790dc29b14c414f3466c5b8b2a58cbad63125b838a4319e077493134b931aef34e2ea66f61247a0705be162f342f893d95b9aba95ffa3e2d6ca582b6eb939972f55997c4c946e5617fb46f92a6605272667fa28559343f9ce21d195920421904c138a6c904e006d52372d69ed4c1ba67ac0278cfb4d936412529c76a9802d86099de8824ae6288282178ff6afe37327c06669c71ca0c91cecdf9b5a3931abad1667c6575cc276c04ab4eccea7f7396d63e1fe5b77616329e406ff6863153823eeed606ad9389aeb73143bacef9175a00ce7e39fc2b5d0ad6125fd95f2584a2c74618b3660489e759956e5af7669853dc3ac6a28429a44aee246f2fd2f78b5cd3514fa257ca9d9c9a11fb75e34c56cfc7714707add3f881eb31dee8f22da9b847cbddaf691892bfb6debed9b75962b92d336e0389dd4ecf2325d4fa035adb2a935920d032930ec46212175c0749db10bd930a96f85e5e0f981f3e1f3085191e325ea7b301be97c42f7a4b11cdcd29ef05e07250805073aaee09c74707f04725166ea4a9630aabadd9b733f0bdc4828f24217b6fb2e5de52ca9464380918093a099af676be8f74b396bee526a77255d79df7ffd6ae5ee2341996653b557778a5a5043a744f94be3892a85c90e4a1b103f7c45257c5c82a29a99810626b013706103d682d58b263d490a43e31b54de5409f28d2ce60fae2c8084f9c7018c189a217e030421353ad296bc410839a86143190a82206241b0d628861090c6af00003152650c8000312150f3ae5800ddab728a8f62a3105e629099ba72a620881fd6910c696d717e44a3c2b601c19c17082fdc13072c0feaebf77ac312ab158b2c1ab355f90e7f882687fd144059e0fda24289a2fc8a98f075d7c91039e7fc12c4ee0f9335fd07c777757e207ec17bbbbbbcb7c414e3d9054b224f1620a3cbfe5d44117319c6f747a40b1f284e5ca1357ae60ffc78204f61fbdb801fbe7c48062be206fc2abbcae4ca1f2822faa1c5539a28ba2a62ebe80c11330e8c20a1254a460f50202152578fefd82e616f04a942d9690b2c51b5c7481fd59f74e0dc134ebc10c365450c414614a8724533cb57184946ccea97191c464ce39e7ea0b9ad96bdd603104167160ff9bc515ec0f3a2161ff9701fb8f5a8091c3056c4da9827d8b2b8ab8a20deca04c19292081110b8cce285ae30a2b5af0030b66479c685b90c0eb971e3aa740c1f32fc805cfbf57c6a81629a4b076b8b9d56ad933df5e2b96b082060c4af104fb6f56a42019b17bd114033b850537a8a86aca89a54988a62398aac0f3e7fb20441c6d38c5d186ab10731928e102ec8f80d8e469b562fd2790d0026d80e7d3f96d8568bda2485501c4184711d4c51c6c5cf932545c39fddba9383a4cca2b1f94728ba7d76b528a375677e2ea6fcb7ec70122b8fb0bb22d76df3d2bfcb19df4cfa70609d335a0d5fb73e210eec2ece1ee57abe7bcff1ec887f0170e71ec89eda47570df85d906730f34554a98e2fe5a4927d6838b7d8b60ebfa187365d5da16ad5ba0ef43b876325037a6c8ed8f99e1b6d014e5094b2c58364529829ba8e882a927f3c3b53237dc6f31b930dfff36e3f7df9797b2961debaf749e8f01447ef8d8268c00e710cc6957b259620babb005be42f9c3c7165fe2f4c764b95942750671cb28dc2f37bf30310df2a3051194dc87d274e85c32a2ccb7be250ac93ccd0f7d63c8845aa22b85d6ca06208021a3f9219a1f92c92266fefe26e66043860a7a67c41f0ea30fe4620b39deb82d13ba6644999f81f921592b74a5d0fa988f11855e68c8845a0f233671bdcc884d642f70bc84f6869e1bd73fc70d36995068c7490f32901111e18836a26434df0a853e1f644462cc90d1884da6f57e25668b5731456e67a3c485f998db6af98faff532392f39aefb99504ad8b63d953bacdf582fa1f45126cc09250a2d1c6ecea11a270e716dbb415862ceecb2fede3027f6c3c797d0568dfbedef775ba8ca89e5e8c47ca4f73731b7e02375c1dd7e04e9fee56f98a910defe4504f29ee1b3c255f8859f7d2f1ce278aac22139b11682f88e0cd2c20f1fe98ba0040ad307a24f02fd1cfa31fa31218cd4cabf1674620e36ae8e0cb59fa1d60d998d6b684b706cc5cd07c09a3876b93fc4b18c99baad229934ae7c192657ead0499b4e7a4f50ce2a6bfd82b6eea9b5dddec77c31fb7f407bc588d1c2944ab976deeac43fa0add5faabfe95a63dc5dd071f7ccbcad7b39aae86dc4bdfb1bf7a6a57331fdb68f52bb1ce7cc70a739ab8ac9f79f9f96089d29b0933f5617fc8488cfb7d6b56594f5a4c6eeea49f57eb98aff2e06dc29fdf4fbe23fefc86923efd2f25005eca57f772be9ce06cbdf41d98673db9b9937e8260cf3c6fbe5703be9c5f1697f5abcf2d64baa43a780b7e370c73e3f0c530b35efc97ca46cc8e55ef81981d8b611876966e3e88bbef40cc2000440ec4e9b2a0982f8d98ef8c9841993cbe8879c45dafd8501267b6ac8fbefac24c716e51e918649f61f6c1265a4f5a624a529a89eeadd1491bafb25fa374524f08ed9cce7a3eb4a759081e42a71c1beb9860c51b31c7c41c1f1df790383506885b5f2c817e8b417ceca7172cdf46895ba42826b34f8395152942c3cbead39023d37efb2232741cb226f369b0324b1fe4ee0c3783f4675e200375f305250e7d1be690304a801c62ba23832045c81f60fa302e7bae6212873e9ddfee6474d2a69345dd4248d8acde8bcbedb05455ea0dc5d2d2142b50547081e294e5298a8b149e4f5dab4a4c949e58dc33899b1b57252bd2e78adc017d7442f2bc2b39b93c0b3d923873723fdf97a63b75cb09dbc41f13c672dabccf558c59ba2f6edcece1f94a4b4a3ece239a4495e8114552fafa5d59f07cbf22c7f9ee848449279e263c5d0a3c3f8f78b6e85624cefcdbea25ee8b96c1e1ca97d9e1ca972fd374e577364a5cfa9aadd4ad1297a88bba67d2ed386172c268b8c20c577e1e8f9c8d4eb5b444cef9203871db874eda647a84eb77b27b71b934a86a1486ee092c9ba058c18d8f9c0aa41c5d687ab8f5ddc895d4235c5b02b911d78b7c1cebb7c0b8d98deafcda4748ae247d24ae2d246e6e6922b559e2dadfeaefa0e1b6ec84892e94c072c22d1feb97c072c2fe391356819cc3d2c8c59829de0b1c37b7b62940dcec452c96af1493e5662f52c4bd48c3f21bc9c7fae2722b2d617e2b99583e88ab918f9512d11935a244b48808ce21906d579ae846b81a71b98d9b1ed91fbafe996509db99f334d3914c7a724467505880b32bc1734524c311383b12142457c27342c19309cf77d9d3bfa01c145cd708d282b0e4f6d3f470b3cf90f88e1be1e94b73ce1f2ff8b7d57d34df91e6bbd17c1ab6aab8d9c620dd6c59188ac499dfe10ac700f1bdf4b4a74edae4b62da99b6387bb0a85fa061b2029c958dfc9cfc12c42520b0f5c1cc958437c9c9fff27d32463e46609f5d482ba56f010874dd985e8a3ee6ea9f8018a3f11887d6d041bbbd3f3fcfdf7fd270e117272ed67d9e5051fb9979f099e485dfaf8c3a90d9287d01f3e0e1112e2638c969ba515895558210556b8f2b0e5e32a945792a08892c9ef82596ece4961eab8e8e35d2edac89ce0bebed0fa7ab6fa753ae99cd4ab47676b7775a57dd2aa6d965375dea77dabea75aa158b5615372deb4e6aefcb7c698f839994568e5a6fdb569e67b574926b6bfd4edfa667dddddda7d74a35cf52ec3edddddd77a6e65313e974ebeeeeeeee4da9ba33303a15777de7a3f5eb00f6ca51eb59ab39557195eb2a0296e73bdcd701ecdff5819c0341270295ec5422e5b4d070e56f5fdc1a2c9b5eb0450f97a60596883b33846acb0b8c9278c10c4b6e0c964d53aca1b1e0b6b06c9a020c0a86b533534ca124e649660a27d803fd04d7231fa5704fa9dabafe54a5ea547daa51f5e9bf3e9d418968d1949a539b931597f49086b23f27f623e7ad9626a59473ce6c3f88f6dbcf1226d6826c6f35cdf3a4940aa05f4d682c02b15f29f6f7a762ab05be5661a6ddfba77a0ff36dead68589e5e7ff805c06d99e03930342787b2efc4c105bd60a5f4f5cd932944082d4d7347103f5299d49c1cd8fc719275a746d40943e46f9286160b82a2c664e20b9bce73b79a83fe923c52ad1fac8899e8f9c9855ef59cf7256256eaf0a7d7b0fb9df8238778edbace52cc75465c969f577798b221021c13a45f742b6774a55e106ec7328d4b6a0777da3a1c46d05e7c0b2a98b14f6cf8aade4e3fc4d9c51136a3e31dd77229168be17cd6fa9f93d355bcab6d47cc2f3a5e6d47c9a5194080a44e2fa4bdad54e4a1fc71df73d170ea1d8ebc22c04e74f94cf8540ba211477df710fa4ff13817022105709dd7362277e12e30d6af3feef8770988570f7b6b96e6863220bc155f49744f84b4bdde8a44d9e52d5dd7fbce0d0d10ce2f8414a065548a144e6370d282ea482b881890964fe4e24e54a50293529a59452d6de4c6805501e4cf7f1fb8fee5aecb8f542955d9bd2ad583675394387db62adea5ef076f102e7d1a9e6a0c57cc1104b9a8accc462cb1b559a6801850f6ac4105eb1822850da408242a20c55942c335069571a77c1827d005836155103abb06ceae284655c8a1581657e0289379ce0b04618455099e2e4040aaa1cddf084ec5a6101910a44e2e61bdc3dfebdc82f19f0d0850cca685a03ca0c7c98011bd8f39d2560f0c27ad9dce8a481843d8d26d43082fd4735a0b07f8ed413d85fa28105f677376ea6394e39767ab0cc3dcc30d28519639c3144d3196c7039c2050a9737b07f7b1e5417505c71a5a80434500200368ab0a031c31860ec209bfd3048220616082eb8f9e6c679a8acf5bad1d952e4c5162d5150444d29238832a6b053c704fde123a533236a667736121fe957d105828ee43337a28f29cda11fa3fff447fa8a72bd9ffdbf384d2268d55699484e5799efd835845b58ee7c457945b92dbbbbdbb7551ec23f5eb0bbe8fa04d7b16ca2410db85faea81799b9912d44d85fbabbfb949d83d645b70098e8b8f8e8523e7ad4749a30ff7e8180911b346e9653d469f2b84c5403bbc0e585198be5e48ce3bf9cb24b97c9e98942b184fd9b29c7c8dd7ece1348f0d1bb2ebf0ffaf2971c2999de487cf49ed51cf14d25a55271ef33df719e7eb24444440483f477248efd5d8913f6258ea4e2e609be93b9969a301f4fa8e2cef721a5b50c91b562067fc4aceffae8e81671bdcf3d43e23b8eadd84818b07a6b99f07176b7a53cf6d2b760b859b6de5562b63053cc604b8cb1164614bba7205eca2c608a80133671489d0fe44c6143f1d1bf4e5cf2c27e27145a8a68d66ecceed2535ec48b1a8af7d2e411e2dd4cd2ccd2554105145468e2fa48e166268b9b737a96e323502ce76c6f6f66de92a1c6c8cd2d65edbdaa2589f346124b4eb47092c9e2bae1239154971c3adc5e7298bfb5bdd456248e7f4c979b6f96bc89c0721ddf21ee8d8f73b6a4d4b7d58637f1e6c677a4cae7093c54865fca89bca8a5fc7b2ae6069716f9e84b325b644d0eaec444fbea4ca40f0a2a0091d0627ab97d6b87ab34ad28717ebda25c7fe1d7119542a489f642449ad0efb8ff4ce8d7c49cedaba2cffcc8917ce646349c71723325ea50154ad7744fa17b4f14bab6135d0e90b297d1d0b2eeb39532a19675e20c969b7dd6df81213ca7d84f46ec4e67fed4c89f12f9d3a2a31b5e51eec42c4c581437cb252019125c97c4e210de81e4beff0bfe2cf8fff06f61b98e3bf786f0949e7baf28f735d7fc1e52710fd7147570cc47e741060afe2af80391708132b0bb3f0b12c7bd27275c4c14242959c7c529064ed4b1f62f384f9b21a57d1361ad890c2358d3344dd3261d1aa13d0dc9174fa46476c2b4afc9e1d2d780a6f6c2b460100d489ffada0bf19dd790192a7e08f9d60d6e4bcbeda680422079dec280b56b03d674c0dac710e1305a6e7e61edb5a58d8bb7842bf79d90eabd97ef855d3461f5bbb08926ac3aa1e03bb9a51b2a541b212e6c3496983a92cd4c71fd97206d4abc5b824bfffd0bd23cad3e0d55f0b152147880516d086ee10b0c62490b24990cd1b5b66aaf7958c813973a15c13d90a350dfda9bafdbe41f472bd4371c0d4124abc1a1716e226d6bf958bfbbbbfb0b8249c3668beb9f6dda884ba7fa5de43b8ee485731369978bd2491a0aad5ec8fbee55a1d0f7aaef565fb4ba5c896bb0441c4cb22f943299248c9081724121d57f52f37f93354644297182b868594ef3486b8ad9138a79996f8542332f24b9d0608b1559ebbb99b091de28c34876c47d6d14c786b81dd6f19dd6f7affe763356dcdc6a8d71b5cf2dbc69af7a4dccdec3fcf62d983a13fe3081a348860437bfb6ed7720b91bd0f6246c9fb37d6cfb971b37671a21db3ef6225e31dffb891904652865ad50ca3cba7d67095d263896d886398887e94f1965794ecd10aa595c6144920cd3ed9779e236086454316a25b9937a7ec4c9dd63407de54e67a3d1dd2d65b56b97be9a620c94db3f77e8a44df70611540ba95a4bdcdc4e0e83dce9263912499f9ef47574acbd1704dba999382d4894643169dc4e25e3e4e6d6a40d87544b35412561fa459852da7445a9d6b391f84e23d1aacc39e713283b14c9bc0a289e5892cd64715b4937cb284c9f529129bab98b90b44562c31f326ae6889bdb8936154c7bb410207bb4986e0c113eb4105605988ab993682389433fe68ddc464e64b4b8b935bf454fe9e656abca9d475e0a984870988bd2159ca7951cb52044a88ba0a860e7827313893e352a24c41871f338c6f01643c4ed16746638014dcfaccd6aee558a198b81a0b5e214e3f66f729bdaa4da9c734e5ae79c73cea694ceea5bdb39a737e79c533ecb0d5aaba6695563c15b686f6a4635b491a390c9b37a51f585de883515f0f672d46c56c0dbb79cdbb77d69674b9cfab8d3344dab745220f3a9a67d37e714bd6f55aba7fded392bebcefbe2491551455067df96ae7dd2faa37f489f8e85167e3ce1582c27671cff41f0dac891be90c9d3b3d95401d797237db902eed96cf69a46297dcdb66cf9633e8feae5ff50852d8789d7da1f5e55799ef63fa44f77e98f2d047d6c0551b17eabb9f27e481f57899e83c4b1bc1fd2a7eba4151a214c5df915cb26244ae4e6ee1bb574d649e974ad4ba076d50dd13e69dd6a4f3d9856ac6d7b56b80abfd0a1fc69eea00af30bd3bf79b98d7fe29530afff3d5d7dd6c1540c7f22d1348d0489bdf721b1277a9b2acc8f552afb9caa622b86d99fb4da4435082a7d67d3b4ed73b4dc4c31a5dd77f46fad9ee7bd0f7f4f1cc25ad885b971c7bd6a48c5d5ba512a5dfdaed2705a6bdfc7b4da10d61c8a05283afa43ddfc21bc8551d75f9b3bb40e7fc22e5ba90c373a292a2aaa9fbaa39e3a2a0a0f608fd1240c2b9e8c8c8cdaa8710d949b299d12c7dfb3f961546105165a186d5edfba72f338aa71411f7d6ce3e6f1ce29f5c6c80556822836b01cb180e096d302397a77fae85a4617b83bb52074b979c4de63b4d267250611a61e8552ad87793e61f72e431a6f603e615fc22e85b3d011de404b61959889cc302702a10fa4be96a9985b0abf70c77dd775620ed252b87beac3e654b9ddfbe7a325829e1433fdeaf1d8f99eefd0365a82c0e4563147915bdffb828a3009a97f419ad74ffa583f6db32a8f864c8290248eaaf3be1678bf4f5382673daa46128786f7ce240e7dc1689af612f38d3494f98242a5279386a669e83ba6629600963eca78312d1a4fe6036540106cc5c080e0cb05419005ae3e10044140eabacec5dbed3e370d57d14a9caa537368d5b4ad568d6a967a9bb7b55a177cbad65a0fe9f5023f8a9b46787e279b5ccffa38e95c652078669bc37ade77bf567d109cb817fc9597a3c9ed2ccb86354e1f2f7c5f5e606aad55d3aa56b53ae2189898971bc35a7d5e4c4c4c4c8e9596c401189df42e47910b76d2a54030d43748e1ec7948dcb62e708025176760c1c5194434f160460749d8572f57d0a44b1632221d84162f8290b1fe0b8542b0414664662663d11a5e0fdc6029e5607f2004e85071bf5f7df7de6f3c8e2e3859525abf277754df1dde29d7e952f111c97e419525e5a33fc792c29b164a0915c1128b5e76c51e2e8b2dc5bafec6d747d625f2bf45fe2c297fd6940bf3810469e1296e802a11056e11c8fc8f25c543c9cd2ca90e9236d893cece4b6fe63b948adae7c891e3b53074b97ebeab046d7e0be96aaffe829e030e5e402e33c5d55e7e0b682c86ff7960f372f2f47cfd0f8178f012d3305b243e56a3ea12c3dc58f47ac22aab0973e39aaef2abc9c0954d3820c11cfc374093f5f0f89e509b4dd8cc36df6e7a4b7cec90fabffbb0f35eecbeefa847b3c4471a241f9de2ec587d08ab17c006e3688e244e68599f61660da8322fc71237d794d00f7b98986fb2363bc2b0f7bf09bb29b0b071e7747323764eb08ec98d9a255fe35f33c577fefd6b9ca40fec6f3eb3b08af598e60520e6a7d9687e87982fa6d9baa909f357bd7f23b076ecd8f106f81e3b441464f0f9d8ffbc8ee84a41e77bdee58a00cff7e83c90775393076686d34ddd889985736780b0000f0b6b8a248e3fcc6cfafdccc2196606338b8505789f30f606086b60e10afb8839a262618e028439a69edc5c73348bc2fed5c9cd51c4c74714ea21c2a4d0f3b18f89423f224c8fe842c13542c3de6d584a92799126a66443329d4c3385bd2794fe0e82f7d61cbdbc7c070b1d77edc1c2c63547d3da996b8e60a16714ba604f4436d404263a40ca62cfe363bea35e4fe8d47760a2d613b6cc9b4d9e29f3f78ca40f4ca4b3ce95662471bce7a7ac471422228b89da4c2774c1be0726ba10019e8f7d0408f03d1ffb1dd84b99d0eb892cf63da290abebe9115d1d1589e3dfd323ba601f135b459c00fe3a5238c3d04cc1c4165158e4ca7c8699ade0cebcfc8276cce47cb67846c7cc003e837806fcdc019ef98e8af4c179ff8ec9776edebf9be23c3eefdf2df19d10debf43f21d01bc7f77247d60e367f0c784f97ff0d9f1f752fe7491d6e1ff3d8fb0489b4d9e9e0f01f6a9c0f33f2f3ff9a5b0f33fa2908bc70bbd9ec87e5eca765e7eae9b8fbd503b91c1248b89ae1d381f7b21d81638acc862afc3236c1c0b3b8e2225d94fd84484efda1321dcf13c428963a190a4410f7044c988783390fd884d767cb7230ce1bb96de7305db1116a0c812069a3c950a09ab7f05ae9f23665b05d7d751bfc0f5070085eb838f53df27ac4f1c56ffa6be00c21a425861619d499caac46145faa7ea2075d4f7ca04ae3f8a1964826b5400c4ca03aeff8198dd46cc16d7aeb107626eecc1d39e07f2fa3de2ffebfb630007ffa2fc46e82004f2df18685289c3f0261cc21d841900af13baeac75ee7774257155dd08982451832219d271243828aac09fd9edf791e15dc5c730480af39f29d0c0b0300e1983362c18168f39238268cab7d7e4580e77bdebf0810e063ef5f0a3bdf230ab9154f643bef5f0a3a1f1385a4942620aa90e93cd0ac19c260983b0877c24e0b198d36ebaae43a6b85d9c67830da8cc3d99bd5d8e0cd72855275f0b459ee98e41a2daa910d73d5016798990b75d61cd5244d1e0c4cf1031cb32c69bc5103997f8dd2e4f1c00c2827888cd020e58accbfe668f2c829359488824a0c6e48c30532ff1aa4c913022ccc4041142d5a445de9b490f1ec8452d6b5b73301118ee0424a4600d1ea84525675b8d9c2ba211ede01101d929b5fddc4cd3635adc39559d89094850d47b89bb832e69249778d8e5553c4ed9f41c1cd39d84e3be382dba3cbc9c989494a424ecce783af077b68f5c1d79863336dc6a26beb9ceeb286b044b1ff0a4bb043d12736a4e01980c05932b1c1046749c58a7caa74da60a178be0f8aa78d8d0391901323b20222712518c61582e76b21902114bb4ae8ef9f435cece1a3fc29c67c04c3b8ed53f4f1f29d1c9d988ff2fbe682d22eddc02a018890fa2e1380489ca5cbbfb194924926f948646f8b12d1a22935a7a4947c2792ef4595467171239b60a1dd022b58a059b842b6522bb59366a25b899ed1f992ea2b134afe648653e5488ab835445ceea7b8050c94600160b9c5164cb3b18c16df489e6c49792c1d21752db22045104c829111b37c9907721ff4472a7e17dec984d2c7980bf5f2f761606062c27c710c7ea12f61ebe52787b06cdda7f763c22c84af7d98b0aa24cce71bec3b3916e81f09b3e5b67efe0b7df9243384652865440bb48e97965c82f412c2c0c084ac971f9d491c0f7d899111937b7f267d247e79f91be6217cdfbfa0eb32617ebf8ff92d524a5f6062e4108e09db49eb7861fd0d59ac59e8488e543dc586367f23021137c9958e906060b8eea1bb9f9113fbd1c2105d9ae93c34a2cf1ce63f23d21913e20c16373fce74867d47da16133540e11e2c998a889c70bf277d4a98af79f6a2f9c4c77e2042e6bb4cd0dec5bdc456137303d17e729ef52221dabb4c70201b56f231d682a0e87487d289001fad0541d12758a526664b31085a1bb6ffc8b7d31b0399b2d6d112678a58bebb67c7f27bce39e79c73ce39a5c491cfcad2b54f5a35aa6d53d69e1d58c2b0fc50f2bce4e4f4264ce5152c1f4b1ea07f51cca0682bd7b2fee9077d2e8f10b07cab0245076a1d2ed6a3db6fed573aa95daa73d4f15836f51481802ad0d63749e966a9bd4824295fd2c76f20c23d9b3c2f876dbfbdf04bfaacf0f6364adcd5b366db03396bfbd5f6ad2337e7ccea17e498f36eefe65e12677bd70e5773f17073cfb20b6f9fa554fdcd5240a2d03ff2017247f5db4b40cacf69cb8db374f25ed2879312c6799ef779dee77deddecb0f05570a53b6fa295b89424464abf744ed0502372cf92871cf1a0eec899e7463b05cd242021cd69995382ee9337ffb4eaae1afa5234b9271d588d580bb87cfaaa89254fdf484fb73431571236e3404ee7725aee44f1c4a7626dc6f3baaa5fce8fbbe9735c0dff7fdd58109fe1edc2106fcbdf7057dfe8417262092795ed7c25df7b4eb6634e06e660577393c81bb577d411df705a92e1786ed81b7233ed8c7f40a2b05d0816b353204ae46d6c0550a0e52683002d1e40a22197d2be75d9a6fe7df2ff094420220f0bcc1073c9fa796d1444ad175c25f7b625ca5a533d2e82c314829d2428a0d4460b7d771e8a4cd7ce9ffe9913f614c5a3145112c7ffc2b79a4cc913a72677b26099309a8c149c224c618c8431a52293544592f8f17f4356a9892020a14073636d287c3f25d3bdc89a5cd2871320858fee7c8f1923929756c0f9330faf2833a9fdd540173f30bf2dea98a523afe7c2075f4081cee441b89d3af0ab930c8c8612bca2b30b5314338c5518392144b6660ea62446e6f5540df77efdae5ea67ed67bdab1924c7a974c2167f5ecc819c0837647d36499181084a0a26fc8a4e8a3929a5f4007336a507a8417476d610cfef3929a5b4e7fc0ea4f4f9a4f43a95949c757777dfb44a3d1f65fb4c77efbbfabc8e568d9b2e8ce0788a2cdc2db258da665b5cadf04afac8954fbfc42d7edf57bb764a254ebbb77cbb5a751d35c10dd6a8437cbd841127049d6bf4b8584a0c4ad6c0fed655584a8961079c034b2930b4b144b734c670cb4721a602dc2f2b604491130e35d8125582a6389060d9148794155836c5b104ffa6e1dcc274c98a28a0e0290e71ec0110e717888888f01010b356520bee7c549f3f2c5d706188c52ed4df24ce9ccf85744e4cb710678b359cedcfb5b871b6138b4e3a0f77b91c58c70a86bca6fd37b1316d5336a60d8bcd89ce26ad4b5d70ad4c354a8552976a94caa403954b40404a452fd2c72afa6ce647dc48d1119ff98c09d8a426aa412daeebc8650297514d94cb04aea319d01935a248e88c26a1463fd8238b64912c1176893db24448d81b72681e1df1c8e1318fe6d193a9b4b4e4e35c5a9a50cc275369423197e6925492f23b20b7b4da8e29293961423a51b2ad55d153d433eb31d253d473a46746839fd98fd10f929fd94f921fa39a195cef756345eaa317f12827c3a19c0c8ff228992457a607efde2963aa48cd1997fae876041da8ef63fdb6d977ef569ea554455fdbea043c714c47a5038555685c4e07dbd7ece64da3e82837ea3156abca71ef514adf7eb92bb54f3f1f34a9c7a0e0eb2b0b267c019aabfad9f76c8fe175523ff54f9411ee42cf72e9286aed10ef31fa87b355ab3d46eb481a630aa91f236c7f98b0fd49d2fdb75269bf127357edb9ef7e663f493455948a0b149eb92679dfe51f25f8c708d79f24dcfc9fd90f12a35a7f983077c6b53f460ce8923cfc49d23aea7707a9493f491afbfc49f233fb49f263e4b566c45e4ed4b48751bd7cb6bffa9ef53caaa59f0ffbde77d282af7f118233f7f737204c1f687257cc12ca5d8559276f39d2bf7aa167cdb81d100f1efd935b157e3f4719501f685a1d5c5f93a19336597584e777b1336c7b96b0c548dbc7809e23ada331eb57abbf5f43abbd676f7bcbd5209f26e6ae3d475a07f7b43bb205b9ca4885e4862a25af428267ad1ff734cc3d487a6698fb8d76f37b8a7a8c70dcf72ce12e2ce3aa7a663eaabc086f6f27cfcb7362aef673905a84b9d7eac3843264408739b1e7c8f6b3937a8eb48e7e20ef29ea39d23fb26786fd55476774d226ffcb114ed830b9a0adae148456475896649a6843570a55a8434356c55b995c6ae924c05311566435ecd090790f33e963ceef292c168ba6bd6f5ad544397dba947b31b7d7de7b0b5bd6ed39d1d484c9747871e5e79ec22d61f5053ba5987492e7d6226c71287a2187eeef0f4c7912a40ff79e63ceb3facda5b7f781a0776f9757c0aa970ae8800a61958a7bc9d9489cfa1fe0fa5225e50a585239859ec0df25951aeae4a4554e3a6b9d5aad4995cea426f8a3e1e176104b7a3f55e3ca6f15b488b013899a9c445a984ea9260a854c98908ffdc20e1257be13612087c10bf4d93da597f8cb3b3969ad9ab66dd6725c93de5a85d4759ef77d5f5077f792debabb59fdacfb051519c1dd0261c96d10cbeeaea6852dad5fa65fa667667aa6bee3daad968ccc8cf705753432343434ad18181a9a974b4343c3a2597d343434ad5abaa16b4cabe851f5a9d6ae7508fddbaadc77773767fb35fa1bf02e18888b56f448d0b27b57ac7f9a46bffa2f5c2971f3060501249cb0bdcd54f934a2ab8992473ed28e42e24c6702679f8227d30a6ef628963c0a6bdfbb56777feb4e6741b0fa5dea58fbab246e9e2d1d55d81dfdee7dd0efc421ac0aed7343b8436981266dc772465763a5a629d570a9897299a07f5a7bcd8c6ddb680d174bb3a66926681d2360da5c479aeb680ea1d9fe6931ecf3d0f0b226f55fa5125d266caf7a1fdbab44d93ab2c52afa2acb59516b1db3ffe994ee70743f436b7fd57d278232b8b576b5ab2478d5a39ed735f6669067a4ddbc6c9cc7de1eabaf955559210d2f6be26ddbf67d9fb51dd7bd8a136992d6a139614dabce24795ce3b0145fb0cca1cd6d73296b3dcff37eeec0026541471fcba752a461dcecfeb8bebfa669fddcfbe8e7ea6687301de255874ee98e86b669dd6fe10dce1bcdd9229facd534ed7df86ba2c6fdb069f5becc5fb5aefbdb691ce7cf7157e344326ea678dbb696efac7e7b6a552a158bc57a1ffe2c11ea398e7bfb792ce0fe389b43819848e4a67a95083edd0c62cac2b436a367a8b46d7585450b15a201000000006314002020140c8884229148242293a54df614800c8096407456980a644912a42888318610830c210401008c01404343430400aee422c25c1b409928e20eb26c467c0e4ca6384123f21e09cd806d82881b4866fd25a7fed23b9acb61b290098e018edfb5bb9e21cd89d7ac1df6bd3347ae61c535983411fec740e701ce8e3fb0cfa34e2b99204ac9a302c38dd8a259c5e964b56bdfb10125041e50fabeea92cb5638f112d6e3873caeaba44b0e20b41cd7ef3330bfc28c4fa9cd75cf28fc109b8af91b5cb5907c933d9978380b3b4887e7d2728d18e87772fb6530beab6a59d51a72f8d93591281cb80ce7fc0a04dacf3a727aafc3f0399edb85b204f5c549a310d11a1c9b5dd6e7c60e4d358cad0d4a5f5a3cd33fda48c25def7975aeecebaf42ab3e8d50893749ea7ffe0b6cc64e05019fadf336e93d7cbbcee33491f23c0c47ed758366db341aac0d641b4fb8ba15db828c9412bbda9a1cf476b9ce011151c04ba06f966686a4a6ebe61f2b2940bba816e0b097b35df63cd01b5643b928bf454e46a412eeb093caef3b0b66afcc3c5643cea24a06056b9fcdfa2e200206261a8c55cef1fd4a8083e73ecb08876a1b0e590d302d5a8055cca152aa29dbcea115a317475ebd858c22c0f8e0101d20063efd3b15bf4189c1d696647d9dc16b69e31ee078410370651cdfd79bd7eaba7f00e486eb46568d16c967f040c54f215c588c8b9141876e9b2161733610158167465636dffc128422d80b4d1ad0baf3e46974ab82c18954d0b278e48754ad93f5606e8c3df45fbf7e732995d52053e372620a9fb041067f5b490c2905ed1766eaccc06f07868c18663c104ef83dd33a60e59aa4673b1d18a572c508d0aa2fb983a8db685abb247cbedcac8c08d53bd2187d30fef67432bd233578fc9645ff8651428ac1ef08711adec4267c74c76b42c9a28e40bb44c4ca21145826192e130cbacd09015225b02f4dff4fa4def57f6a3ae14a1498beaf29cd5c58ba9ddda438c7e0a8b18b6e23f43bf8be5fac35a57db64802cdf2cc494353b67b446a2d2af8b9dead45b252671aa86feccff95a8d56a6fd35b1915c9163a8c9851cb712e8b01bff87e93019fe2bcbb3aa243c6195e46bbe92dc8208896d3229ef1bc1a7369c056c73b272cc95544a8d001ccc0ff817a96916e667ebb3b1f5cbdd8e06a90b81c6a022225a07e826f3425aadbd8a36436f78e96077010642e9cf226d2db07f5a48d42c895d4669c2c494603b60f6115fd290434849859b3d1056181cb7778d112c23fc04aef0e956f05ed8f565773d2294992e504c1bc53209c0d928843211838d22a03a85041b11196ed8675977bfd12d56a5e538d96882458d6a4bae466d354830b3b634e47dce4a20d15c55154b21ea646ff767a085cdff7cf92086f4c8e943fe67d4974b10ba6c28d49a3fc88d11aa48dd3ac3654ef6a51b5834629eb151865858997f3074d67b7795c2b78f7fcba31abaf0893225bad87539905d63908c9d79f3520ca655b4cd85a4715ac94542c407c3315295104458f2ba05c4f8d4d08e4429def6b97f83ef2844abf2a67d29744dbce9f04dcd950e150ebfeb325ddb6606dcc98f16203f30687c5fa05936aab142fedd9e42dffcf696505a4a8c76e24652903024fc2ce065ba9d7560f0984a920434378dd8d28e783bf809d85ddf2633d67d914eca9218ed7d2b580f3b714536074b1481e0743c42bfd2dc6741380e01d697c2b5415bf2578114c3bbe1d544b0a7d0911cad4ccf1ab60f2d3892632851816d678f036f7e57967a52b43c4934ded092c80ef12fe14513f0458894230aca858b3c194b35f23fa1ba520523f0a49d6816553c27ccd25537c2586d8cb8eaeb1cd68320f5db5528fd1b055d11e892134d331ca5c985967ad7cbc70b5b5567516d119206b66638cd70be91a4875b7af422ae1add03662c3d9d6c849ece67f94a56b8300a3d882df4f45899ea7566a67a6216a74df40ec019040830582e17cd7275a5668c2871e0936baff0d52fa4e8e69f58d9a75deea2116157237ddf1d7365d682a056db73cd62550d54290b809d1525597a9fb037fbfd4cd1b80f1956a692acd31f89d0ec09e158ca6aa665ecf4c968b47e85221a705932383c4a37869b088b4fea63ae5ad8deb1097823e019b55b9d4daa4beb1e6514c12575db7c674fb4dd2afe1a472dc3c002fa6c2540c0eb92b8d91cf00bfc5869260cadc32373791e8902814afc644cd34ed76df5f8b1b644fee5e142e4d6bfbc0fe5f265a52f3aaf0b7c5fb0dc41775bd0e958503c2f151743dc6f82c4fdc409e6ed5fe69d519c434461d0bf58010665ca1f9dd567c9819cfba2b90e40932dec918212672edbd42d1112db18c64021298cd19a7c92f55a569b3b32478087576e2b630f48311f526cb00b5a91cfa94e7546672a84806c030c3da0e07d1d82dc5c9861ea6f9b1c59caaab286728b20a831034988d6702d03c6f17c8d2870fc0ad1df150dc470232a558bdc887a744a94919be00153ef2d02f02834a7446f198e42e201e921bbb00252fedbe01347ef0b2cb68248b713642484827323a85fe07739d929ecc90094de9b45de055d651e4f97c4caa2e2468dd42da3a803a24e4ff3573aa4f050f6043f551d4265647bd0d8b1e9481375274c1464a1ea1d3fe4b13ec3a574fe9df3b53fb48980cc2ebcc06956fed453d3fb16d743fd4da5082e1afaeb3e817422912ed3bba69834bc1539217d583b874ff4c8d1eff11133568ebddbadc7ad813a9ae5978064bcdf79f4ce3a971666696d907754148d3fd07c6dad2fb831f2f8ce83ae009b00ffe8763fbf180823d755784853e96450dfaa90518b1b6fff2053c4d3e987786e25cfc962a941ecaca1e8ca51e65ee51037cf8b31e3c4514581a3f2065b3d174aa4d9952551d83aa06c220adbbca35ae8039840bfb0044ab0ba205e1f4c15b107343242f34adb20bb7662a1aef18fd68975e9e62310082c51c093c34465412a7f73ead062e09b90f3a6e08a0e8e980cea89a662ab1571400caf84b803b1028eaf2ce6eae6fcac5cfd624cec951b634f8d3d997a2eabefddcd302c7e3995f76fee067faf772534f42f199161e940aadf538cecb8eddfa562feb9d7fcc3ad3b0848943c2414bb7896d9c44d6828c1e07131f229093924dc94785a1e6a6ad4950642c23dd6510e9751ea8703dad3b5a9c9f84b7cf50093acf6cced5a7ae14ecb4d61f2df8ff48003f171d62eddbb3f8dc27de10f5a13388f23ff4880f7b55ecf0ea045b79be4c886a9e070afbc84b2bbcc63d8b821079578561ad2180ada681d20603b1caa2bfc11d4bd68e05b40b363fcb86e5ab7913fcd82d94952c7d6a6892d806ea8ad1bfa2059b55f26521635fa55eeb034a9e2e915c4e64e9f07826570d51d6aebc25f2377ea937a705042fe0565018f7e98624fa6b2c71e958cd3f587a2b74b64056288f8492a2426cd04e093ca272cb7743b7760b71cc17ecb1b7092bdb604278725e47cf74776b05928854b1615cd5586c668acc1aa4bc4b50e3608c6e73768f81f7d9571a9135c18646c2ffc514cc139bbb90f72d73aeae6ef34c252bcca1b1cff21ac1866e7daf216636f489eb34150c73579b6270a8dfdbf5abba30dd237a85bd71aa448d7a0acf0e7d7d398d14d5314f169c6e5062ceb6987180f30883590d8c9741ec84eea12fa4ff6640d791d999a948d6ef5beec0a82415d8689c55e0933f5004c327ab367527dda88912b607c5a15eff1a7bd4b854ecce72f51db5452de780e4b978344dc2b381c44ff774a80454710d161431e74c3d6d7702e850e167c0debb2e45bf9f7fb7d163fbd895dc86771af436641f81b981bfabf82c5d960736d798b9c7983f6e8d910d86ded5d11aa409f503313cb0db36ef6f32925aa9171c5740b9804b53d9eff0ce06571de0c3f4b5b8fdc8c88688daf418731bbf6335183e399d655f4217c994669ad17e52a76f2c586492c12e51baa4b3b3fe6bc4e90963305e3c9a989db7762d0fc0fa47f51e85ee0f752b1e2cc3970b5477aea6e236661567a1dd698c456b4bd78cac06f6fe2b6f32cf2eb1ffa02f420094950fabbc3b4a69383f49fe2172d5287d4031f99a9e38c805c40ee340ae710be2a85634dd7683dbe9c15d82204e46ecf5d9d490c6d1e182ca6377ed318b693798ac8d81d7a1d3bb8a83980e658f059776dc90aee5b725cc80668fda78c249db8a8c0841b3bf12005f9dfa3598bd9dc81ce940459e25187078bdf572154986990022df610ef65daa4c63b967c0f43e0ceaf00d2df3631215830e39a020cea26936834524a697d39a942d8948fd8940cd9b4403d6d7e7c736dd50e4ea9bf357d2e849cfbb77ed13c956aed8ba06a4d32e8ce4e03a14443d0010cf8fb1ed113b29da6bd1f6b5e533692db9d789085ed0f148305232a9831d89899b16fa2af2046f8b03ca4547aff8ebbd528083941383c979986cbadae1776afcf08a15ac6042845f5606dbbb695dbfca71ab2707c0ed69372c87cb3e41a94a1c90dfc8675bbc544c4df9ff119a6499d0b9904f4f42fa8ab957b855d4594cd4e5d0a6ad61bcae75da6926238e1b8ec604b7a7cd2d180830bd0cb19ad4b1512cecb9aad4c572f1353b22cbdd14947be4a5c33a0a8ca9858eab510520fc0dc34d12438bc542bf1acacd5ea413832a1940d3a03a8e6bfecec3c509d5d99caab6f51b4ae2d274bc1371ac6de195dfb49c82a44088f01ef443c060b270f5090c59b1f4010c7c002b89b10818b1a06a6842824797aa02db251def55a77b253fb3e4726d80726ed7f7c731dfd28de177b51a2da2ad053c6bac834b5a0d0a77faf3ace420908064b81473e4dcb245d9ce5cdff85528101d5507c00634b9e16c9bc75378c34e87e4adf8645d93f469a6a23894c6d733b4217db0e9df422e12275acf9ee458f468244af767a94eafad59aba631e4cac2b075c7571ed58d456c4489ec37a9890ae283eb948e1a3b89d5862be3f4e8c862aa99cddef698b82c33c15417ae0a255a1ceb96330b392799802d8a46e7c8b261ee042e3ad724e164788d76040acd0603da03294e2508071c3e530fcb8b58da6753788aec434c12d3419ad3ff8f8c0e170968b1ba7138b5cc1545845839b332e50871575ce10bf160e0f41fdbbc0384eb43928e557d38707c0c13d6b7a6c099905a8acfc2b0e89b642e805554a922460cfba5f068ca9e023d75fd5a85c3388ae01c747417386102a2e7af995c6f57076f9a5f9bb44b4c6cb3e151bd707c867ad32a9fa8402496625b0ed9228d4bd25c12cd1b7b1791139b069858b4af5d9cdd123f08f104372830946c62d6c5a005e66a71c8ca03f4eec93b5490d9a4a1c182a4216024b3b6c727e3ed8dc95811074b93ecfd9b974ccdcf468057b21fd6408aeaba20377614c9b51db9e9f8cc89e9d0f436b332ae5f26db18d9cf42f5159ff5945416a5e2417958d6163b5271a96f80ef40236be2ab7db8e437a2d2ac96ab5ac70bf393edc568d822b927b42486289edc42d159d5fca889949060c3d7efa6e0c400dad4466a2741bd18d90ad59a96f062dc3e79c0a39dfe53ad5d984bb41aabba11bac60942c21f34519942f3398ce1e7aa20283ac9858c0521b0fd663d13819fa3375f57187899b0167b0689ffe8a5c361a55344e0f2e1bc05c3bb22d6af9b8eba2981502fe6699debb8da6cccc85e825ec7402ecd86df099debaaff7fa142046869cf2d1152dd1efdac35e1b001a0518bb88567e1ca99d428e288a57e0b5a6b841fafff2ad2c108fa2fc2523dd871aa26c94c98e16524120fca53badf3e8b00e968a4cb587200bf61283ffadcfa5ff56ee806088458029716b83942e042aad8227ddd662b456cb15b00cf1cbda8ef12a5eb17cc7fa6f9246c4ba2a04bf2fc249c179b025898d31b98011443ecaa253e1cf1a7d0e0d55ff67e3d1ae2227235c541fdc5fb31a46df1b8c46b521cbb95f6f5d0ba830a81b18ab2610a8ee82499512540f17a40b22386f581cbe0bf23e611c72c78aad9f3abf7d85c019d4bb62c868bf2806a99ba86ea292ecfd3c6cfde936a26f9fb950f90f5288764957696109423796ce9963d9ab4e19802bb65d48cdd56152e5f643f380c4894aff50895998446461dd5301e1d7f5e6f58bb334401878284220a76f03daa3171ca1ddf8db8290cbf05ba75b3b3041283382c86471e6c5182c0dc7b9465cce2e561e91999a7c51b72c5304ed27f8a1640d0d5c8d9d9ed983bd7790559c1e42db2b2619e78b9d76a3de1e13296d5de8519f53518902b672424412815e61fd93b6ca60bd698c20016c22df33fdf9c31c3c52e5a662206e13056b9e3a4183fd5d4976946aa3a3cb6657ab094217ea73550b60d192d47ed7cd074fc21b6bd422e3abcfc3962dcc5d3d646dada5dd159813f73574754881af605dbe640ae465338528e8666020eddd7bf68ff618ae46df250c4f3e95614a7b031b61ce2a08821c461a786cdceb411bbc8d04a8f07ec238175fbac1eaa1afd6fabb9a3f1002f44aaf1b124da9732abc350a639f4b99388f98f44e5a2696c7040cf5b7d506c19016c77c52c97c7a3c20fbc95b37f7336ceeb3674255157c051b3b2d8914ec9f6d149f2f6fe733b2b3eff5bbb7ae9d546f4719689d2f878a812a465c02f0141735506285c2157f1be28365e64e16bb71548a903e6da6529df38d3ad94ef406a251b8493df64327cd325aa5726ea516347ec64fb68f216393c283f37c87150fb657197202e92137395a4b09e8cbda36b43bcc692b979879d2e3b8e42c96844299792da3ab1fcfc37bde9c39f6dc171f4a33e65a1983f428c670535d15f77ac26f7fbfe829330826ed5bbcda628a4c19dd179d128e144e91e1bf86748723666f33d06a59ed409f2440f29ed62394d3bd0826cf724f3f411a8e0843387904aac233643eb07e2fcbc5374f7fa3f242a69d1b861e4c4eeef8d3bc11ceb00d62eceb32a20aae06662fc05a56d85926e842b2b0e289b03661725bf5325679685df8e452780458fa1939b48ab338a43fed970976b0366ecdd566c6b7dff6ebbc0209b8e6a8026ade51a46604a35556b0242887b5adec84049ff69675593c3b7a9f9ea57f4543bc50dce5f8eecdc7f8ca263b4f513193111cb95d4eda3e43e63c63a63e018d9dde38d1e0b839aec759e98b6fd0aa665ca5b4e9b31314f3a86f5a4939d6bd237f7c71fc4df9187e7ea9136f81d6349f7e8811ecf9364b1cc32d6d1dce58d580dcffed40912f6e77f6d38edf1966062515fdbc90e90e0d589cae75202c7f71df37eda04a1ebdfa75db33b06730d5f2d15ac19082d50745f0af0e379fad9f45e50de691fe3c97ddf2921897fcecdafdafe0f28376e8e7ac0898abb3b4025896b504a87e758fbba6e94e088e825aeb08569cc191b3c76ff25168f9ce5064c4c7d4b4262a2c25a6dc483a910316781e43d102a9b46c89c3e45570f11fe32cb44bfdccee25e729092819a5db246a6983e2693391236edc243fa36c41f09ac49f17e54779e5e6c59fba3ca25fbaf76deef123278e164c2a2e512181de16ec1e13df15cad237c8050bb325080019f6bf9503fef2c349447b0a219740b9dd0dfd59ec9cc703ebe1766c30e7c5b9c5f698684202a4f810c175c8a82a8315e4b943032488f1c271d4e38b991b26593e4213819ba9b6a8a94fd910191dadbc9909dd208840a8f86748dbc38525a045b34feb36119da90c53867c842a125a75315f7f72cf03caef6a8403a3ac80f7b13435028280989b1b27bcad96a69fc0ac1ad7144e6c933636ee03cd3c2406e18084ba14f35100b8b93f764ced4421dd39b19e8537adb5b92b4bcdc12ec2510a0175414b949dd184ecf8f5a51bea43e01ad83642eca4450700fa2ae5439389dd2087a879e6437e211429cb8d793ba0c7a8343f66271b962ddc50df45a5f4abafb0a4e422bcf343dab330db7cc8956b3339c573108a3dc22084931bd78f30c499bfb4cb83a08b634831b82bf1c289f0a6353516839e5699a11785dcd86432ad2eb5583b1844c1394ae606f037f63962b6fa4fc111bfc2fcc1a4addf1b160143758a482826b368f0a170676b5d6af0e99e9abdee8127156fc8ae5127d4635ce9aad329a073ad3415dd3ad5cfbe3f78ba0fc466a8e65e1e0ced4191f5efe946bdd44690803352a126fe0517bf702fc8fb27be6929ba301b743df3a248dce1ba2a7ecb0e3f28dac4790a9930a856b5088117658161be4be3faf0c3717e5364ab5e985c65360c50b3e0e5faea08977cb9e0ef5edaa9e0e6a66395fed0aa99c1c1282ec66695e26edc6b1ba3e5541c3fe8be6564bd99a2194d8294b9e47c1c8de121e466b93eb01f7e95bed99b92ed747ffb574914d383ac2dd9fdb35baa30c80dfcb109b841855a592e904926d42505f2b32d0bcb2b197ef12be832202f3a252e4ba7a00062c876b0e8a04d248d392c7519cab561646b742a2b4d82a441c59471facef7b7c9646baef74c462645f3f3b9a2a75c0f4c337205baaa817411190715325bc2d487c70721d1cca2ae134521bd37aa4d798bba709594a653b0e520907838ce9b1e92dcf5f46a965fc34d14816fc2b030f2107c41014928710974e5626d9f6750a1e3ca7e187c99018424f2085f012bcf7cc8407146af5b71c924709513a1a39f5db4c52d034386f5b88ebeec20660f507275003791a873f0bc1930c9969a71fec72c5126d315220e185cb8c0a98d4f122f3098b863b3dea7c210735e182ca33c3b904320a831521f490bd039520ba8af33cd7723b1fc87eac7f388f9db5765d446d479611e9ca6fb8071215708a1045cd8da5aa543084f2d151b0fa174aa9227005f32028306a813fce3642c56a29c53cd81a14acd56bfb72a744e471784c7cf6feb345f98c4d7d4c328ddab567f041d92a739be86a59a10c308777d229b4761224579f0f9f07fd64ec6cdef699e7454adcf10c6c75e2073b49404ba2b599b40f45460adc241144876d5009a7a49617acd5e7537852622ce2d245bdfa6a4243f4a69722852c764ea56204b2484c0c0b74dc2eaeac48c848b2271d90ddacbfb335379fbd9cbebe8cde3ecc51f46249a1b4a8f28bb73535d9aed296a4d3f7a56d712f9566d8eef059b3116e2f9a7ff71c81890a776f38769b5241103a93f1738d0b036516bd2d8a9c23b702e4c8765400a516ee70b01b1db4c04eba50ab336d5abef645a6e1a6fb1c402ef812358c3b2ab86c4981b140046337f47b12c51438da2292b7e8e80a22db7528eb425191c9e3f47c1b245d51334962d66a7c1a3d49c9afa955b2f983f00c3f8abb975d8981b85473c7b70ea2cc9bf639176d5a8faa700226f5039a806ba157a71c6a21cd1af0d2fd40c4f03c3a3404f98b1d66b1f7f68dcedae8912ef4961e13a0a596484fc30331e2b48c77d22c5fe401f30c4316d412f6dfed24d31ab1210c6bf62ddbfdafa516c17b51cc8fa9f6949fc53f7a87ada6432210334038243b8a43d5128ef6cf12c84fcf483cd2497ccd6da4551eff76c3e3a5b2980286cf94523d43cc294adce323eaac5b73819125449fda5a315c002b0f528a4f714f0daa2d217d6024654ebde0c37bbeee862e24220cd43e3040fe850614c216a43db89a13daa22bc2daea7e4abfd96568dafdf958568e2bb636ab03157debb5a2ba74820a8ead9736c2b2edcda111922103505063e746963aff20235dc77d513b4422ad97bb8a373cb93dc3b8ad720fb70897bff6a518cc3a05bedbcedd82db38f7fb61e7636f6aa549f4ec7bea03a6ff8e42c862af9cdd34246a9e46bc2ae4cb75f1c6845c4b014358927bafe774add24f5e307b85dc649ddb78d37804abd3f39463bd6b66717e44050fa24cb7d2794deeef228ada03cf70d3c6bfc0d2175550ee119c021fc1d70c79a5fcd675cc19d1a2a9e509809c884099c780a0c354c13b581816727c9f45f2e9f4613f33c62f2e1dd3971f7e30e7cec9a730afed221dfbf73d4b6b02bf6bf40150cb5730ed31541bba4a8bc782c3f567ce0d094882eb2d6b1f7cc62bc71e47b70751e25c01dcb8ab49a0616967bc702b18e31c3bdfea34a9d3a3085b8dfd7bff0f141d7f1bf0160fd6248d94168c7aa45faab5d9108af951b764daab5cfed09719b05e8559dc2b0bd2f915c94fd8de1f9be9daffebd1df301dbb1c67601ed83e2df9b15d33549dd4907d7c86187735b3d20823e787558e14e66f5fd4da8c327155bc181c57227c6a60b3d2169994ce20925e003ee08e2afcdf41285ea8c75a12973093f65d4a9cc62027917bde4b4deb5bcb1363fe016251a4730039ee42302a5416bf3e532d3ac3e3d39bea68a513feabe57f3d61741a45ae02437941b33331ff400646acdf7cc1584fe709a3eaec3761af5d8b9772384f7a5b4f1b24f25b5f60d8a7677f0650a28aaf15ab90387f12e1e12e5c7b44fa5c97bab3224a5320e2c9f2f57f45b3b5527c9710f742e2eb62abc9beac2623227052ee8d459adfd83a6dd2d7c19405359ad6aef4be51335229d7c49b1ad27b5ae751a105451ed0d06f0e74ffe6459907bd29df06a433b86d2f235d4b36c1dbc2ae3f8b8adc1b91e4dba5038106397575f086093f8a06d50ab3b17c563f791e9d8ca79bb3415b5a9ec4cd082ef87735dc5a9681ac20055bb03e6347a1e33ff0116872a83da120114ce9851eff87b038ef558e1bc35cede5c7ae5c48d00bf5a66dece425a0c8229d3296dc57b7adccdcf8672b936a02c07a8e5fdc7ba1e864bb9aebf215cf825a1b5864c8688f0461eb4b412a192c475209ef984f2a9112db1457501d6d78739db2d59464eed9d1c1752963d7d46da2047d243bd7da79906a1d7c9178e6320eecfb4909940ad4f25c54d398b69f004e018dfb95a8a57d34245d9312990da20ba377e4631840280de6e8514c23f5b12d2e0b721a7e6750cd11da8f4a4a1654aa27f7ad5538fdc4d2198d63a8552cd7355e4ba8076fbf4e70d0b865ef3bf86f3c598fa2544dd51a2e390b676dee7eb106cde76634c3e6429411c60ae414c8df480fad4d951808e6a8415119187f4d551a9230c9ef9bf8be08199c6c8d143e0bdeebfe81199966607e7ea44e15632b06857188dfce1b5faa4abaac8962d54db08bca769d49b0b016a9036595ea2127dcfb24abf8b5a2dcdfbd42780a9aed3b8b24dc850427079d493aa4a18a21a7b177c58b41e1592dea920c1f7d94ef5e596ad5229f9f8ef63baae55b8b309d58d00eebc9e33819b990d9cc66a7a05cbb93df6b584952db14489b28300ee6306c633b78313ba23feb4d5efff64f61090ffbea52c957d132bc21b35d0c06b290c7478b3359f5eb30687d2b9f4942bc4c029876ee70e418b5ee639bc2aa1439b28adcc0429b794e851c62a7d7a89deb2dec1d18b07b245544c6f4ef7da660a880120b71c2efcdddf48381b793b2a4cfd757efb0d2505de7812420fed223180aac2eb3a11dbb8b77329f392a78aefa4e462b4207ab417d76d19fa52b8969a2641105139371cc99cbb095776237fae3b5a5bd45ff4e8733dbb350a5ce12d09cce8ce5866e7021e40a1f19ac2c62a18265ab52a4018ad825f0850aa5b419ce3048b1c017fe22b0409557c2908692b49819a56ed92947f0c714a000ed6ce05ed055a54170649f4e89cb8db4f7d40a8be6c9805bc5bc43c0c53462ad3d16ecbba7f8b71334e667eb37b5fc3e425ef157e80d0bffe5adcd0f9a40304e703a1c5322d1b26f78a6c973322d93fdd9f15f4569680ebe64b350ef44065ebf5a5bee72e695f4d666c9409a9f76653fada14c18213b94b43d5126b47d8597b3071f1fb81cadad7339f50556fab0e5e96043417adea35e2c36df8ded1ccde8596ef0c3f2841aa0eee481da7e4f506bd1338790b8bb6b7c8cb63c461804ad72ceea2e753670e6172e96990c8def287183e7ede12f904133ce74389e9cceb8032b31add1c0b1b0c81523d3a4103ba9c551f67877597ea9c72680383a158fe3f46dfbf53c468f1d2ab480e74b685d1a75f725a01c71bdb7b85d5e0935979e5f0aaf37d46aed0d6c60ca92275c7588f2e5f5d85b5c44e291417945fce417d641ab04adb30afb3186d3e39372e56caf2dac77443ec2eee7854ee226ade8c564c9f38b5371d035f4772ed7b6483adabb008afa78cb7b14a27857e2fb2f7deba0c45d36f9063c2ccc83eeb7eb2d3fd9ea678993142b1bae166b457179d99f9526744cd663746aa949975200ff8550c825b3be630c91dcc7aba7b7bc23ddedbe6ba2d8ced831e2f697377e315bd7a1cb20d484a33ae78016196570f51c728e73e5b958d76b2ce32bb1bc6a42c406f71f777ecb03212de2c6fe107f5ab56ec65e1c067331292f29a6bd37013ab47b9c1e08a68bdca526a2f6aa91a88ab4bbed003675564ceb2645bf7122885006760a60ad29efae8b15df6afaff56cc289996b2bcb8916c4874594215b9ff6363332ce1aa7a41dbb08403893d472644d095a0b8c07042b1a985b265a6709727432c9aee8646052d896119356666ae01de1a3fdbfb56dd31bb761b3a496503313fa5349ef7690feb4706a374a706a200aab6aa9b3250b482799f4f61cb30b7a93f969c5581ede95a75fb7c03bdea398e8a1d3d7f158d46fa82a6261188c5ef45ffc86c9aa92699423d72f037168632f21984cd2cabd2cc3b7d73513653e672ec6bfa756a4369db82ae083a1cb0be5338f0d77ef1f9a2fba5b6c5d2daf2c70dd686ab97bb9692c22071944ef011a9c1809869dc625d463d3afcce057a9d81ac53904549a9a0f81e2083b59c79767ec759aa1806729cab141e0f956c90aa31af875e608502ac8d30e1f0a3a2ff5c1ee736e9016557fa52b2de80774c41a6806c33ed42e2206712fc1ab5c5cfc1ec15ece64796cdec08d0a4930ba79f3884b195588a3f6fe5fe9f3832a1b7af239389136f9a4f13b7e4a39ae151e806ecb88d0789a56087b1b57918673c0042867d8e165c14e771525022744272dabbb0b690a54cf75a5866b1b99aff5b9171cee724000267e8fd5641baca9b165be0e0ec89be773148de447e396c457926fecc0d268097017c6309d21fb2d9ba4c51a223871e051d67b5027efbfc1b6072cc49b2aff51bf45ee43790c13d4b3200e4b4c63e567ab068a97f8c2e104e60aad32cc26765e6736c1bcc5dbfa4c7b7d06dd3df1f0b2273a17d1c2ed4efe319af4c1c75b3e9db9fa091f16916adee9dc904b7d098442f04f6903be6f57c0ff02b64f2dc64fde3847867f67b926a49e216b0b8a7f95dd06889afeceafb764ec59893afafebfd29a729bb316342132edda6b82acc900931afd7ca5961a71d8f257fd2146cd008be2cbe058f0eb8c0ed7412d5717129d5ab894f36ce8d88f5ad98d88f38801776ece2f5409b6e6a60080714d758246adac7616fa07442e474759af259b90e6130c8d74173f51b38b7acf4d7304dd4a73b5ceb962ba1c0eeefafd8004d16944b764ebed35a661736bfcf126391696ded0ddc1cbaceee7341b3ac93a92ca0e0389a9133383eba74b48ff92f661efa6009e1ad7f577d85a364ebe7dafb4ace97eb81f40a0b550fae8e7d8bf2f82db0f5718ecaf267d2fdfae7bff409de286136e5984b6ed9bddf1dd90c82bc51b60fc677c4452406cd17c22136c6bbfb988b124f59a8ed28b2afea11fb1019d989a803ba6933ae28b46291e31ed4497c26e75446c536ad57e8010b931056c3db399fe1629bfa70ef5ce9798e41a096dd92266bc322c03024a8e7fe08730ea24731447a8bd6fdaba5860534e1a5a653db0fb267cf727ec22727489c6f0f928cbc293d9eba86f9494a0e75c3513fa3417a2b1e73cc517b4c8795660b849d2affe8c5dd6643bee971f460e06597392ee3d7a3f55cfc0f0bb47549026ff7e7d2d71277f1c37febcc8a970f6bf97e575c59187fa440131fa061922660248c870adfdb904cac8087fc31555c23e0e2b28cb5dda57f664d9bcee46ae9cdbaf4f6720dd332a973e3dc4b4bc24ec00a2dd2a104112f8cdab0c4751bf6db2d04074f3bc172a45bc672769d6734814beb915069308133d3d54e197c0c3beb90d63eecd7f07de539d63c038a12c2fda6d190fe1b366b35c755584ceb151943debdacad43cfb8b7aede5fbd6df0944cc3de024459dc12ab7d8f725d9652d64155ea037b32c516a1150a92ba052c780cae29d00b38a3f14ca4a9d5fe5dc13c8310b7ac7b5d43d6e5922eae8545e663157aba0a7a3967965c4620207d9ec45ec5866bf85c4d5b327692435dd744519b1249d3e6cf478705f009edd59b0725110ff521c35c0a274059e64b3183fe2dbf596a9e08c92404852448920e351a0772a0f9d6ba74d9cf80dd0b3042f2bdb267463afb99b28e48695ef3f6519d63559950b9784cd299c671252ab59af537158baff82d7bd37498d82818d71e20d95e851dc4f639460c85160ac8d2adae230f4dccc3d1ee79e197d0a56cd2216d1b7bb8f0869e02bd2ee6770ef5d4653227795f6291421174e83ee423635ba6f80f4da4cd8f940580688807cfc7c08199ec62af11d52e0743b2bb07aafa493b36c7ce06efc63812abf34ceb58cca7a356fd977895a3701ac29e3456a970b47c133f147d3d24cfbf44082563aa93bb200d61e1d64baa996a5d44f0699a4771962028e1f48ac572ceb8728184eb501e26295c1602e05509b28583913a8595361a165f83d6c30e3f24ea5bd533ac28b9aeeb49443291409b772dfdc9489ae4ebb91be91d7775c2531eda23dd1a2b16c0a3768f692ea8ce0eeca52381266fb0611124e5f995cc1cdd3f6d28c627d4db13e7d4dafdb8cae1c72c18427e317e17fe5f9cc82f8cd2c7639c288344d8cddfd44e5558636f806edbf028b0adef454ce98cad30c6137af05be0b26eea1984ee84547aca7cc72ef5ee810d90ed4fb7f20e5fe439f96b4643d2ddd22f4dc2315e2bbeca7c45273f0b2b88977d8f521814b6af96199f1be19d6f24c55730953202de688361c21a1be0281e358fcc696bda63d5bac35404fac77acfb5ac9caf2a5d4dfd8e17ed5649243177792fdb129061c9bc0bb9ffd63f8cdf76d007f482cefa996b42dcfab15ad84d2fe4ab3048a044948eaaa3c23769982df4596016a9414a30379b3a4721a6963167184573d1c63a629137ed4137d81cfe34666f6e8a0430ce1401e5481a5b1c135ef99dd37a739196c45fae34ac4d52b8065a9d2206543db42ddeaec865650bc8706b1eba88685209b8177241691c9861d87d5fd98fe4222a9212379d247bd6963779b0d76fa983a5cdd26a077fd60ac2e930b8a6b651cd7028fa5e543cece6b7673fc2d26b2bab24381489522f9a5d0871b8226c91a6ea944ea13992e41b1ce7194fcd41b60ed84cc73f0b1028c9ccd41cf7a6198a8eda1a8932b6f86436fee8a1b3302cb29625f1d4733ad61b47422f2110e56ba29396309b73f8b8b57303cd740dbe149178ae6fc773d355de3c96f594f027f93608f751b2e6b9d0b9b4926738b93dbfd9ade89bc4752c02227939a8ed400f8d6a5547dc2adeedc65638689da9ec4c7d474237da31da7f4d3d5215af72e68bd44437a96aa3dca961004bc3c5aa73c6b37cea15f9878e4294442db40a33315cae36aabe4033672fe140dc5606212e01830c69f5f9420c7ce2695673e362fa6d0dfff07082bb13c660f8c89b90f9ff5866ca1cac1e05ddbefd3cdb9a45d24660949156a8ccc11296981325f33081e9dc904b891f9615542430b1d4a8ed5c48c8ace2ecb400f7778d3201093fbdf95c4a0b69e68b5355632c599d14c38def030e9da40e300859f391a2b243a6decff44b7d4f4c5f919d539d9aefb8d99e546e5b5de2f8a3890f36574d8370977a7068bd05559001ec588d2454d9e5ae3313813db28ce4dd862e61d48f6c22592b460111b9dc22d1b2065894e216d2b1a4ad7f9b0218dbefd9e92dc1da75644e2f371822c4366604ad21dbde36d00273c6e822667d3718489974a4b612f731fa42d1b65955e936bb709bb518250ce3bc9e1904c3ff28fbe4ec73c6388645c3ccc9021bbc7625356033a63305d99ff977ecaefef92c7fbc3f8ddf9ce41c79aba760c8ac6c80768705730024491c455de47537910ef656a4f42ee0948424b4d4b85777a46beb431bfb50b884e81743fcda2020d5cec1d8386718eaf2fc6e13bf07b3604d8920250e8f007bf5c0d5cbdd60e37647d110747578bd82ea60debf69acc45e19482d1fc3554d4b28b9d038d49ba255f2adb8311f0960d2afda5a51644442b4e40aa1e41b69e6c7dcc5179b0f95826153a6ca9486bd128aad58b0a336568773eaeb86a2bd692ca20e62cd5e038c39f3c94a3c9801288a1a88dd18834250f6d15c9435c1c79e84edffe718de1f35667d6f2a3ae7f8a4b92d8ea5bd6ab04b8050c9f96beec53e651b8a7b93c6488b9cf54a042da39288c16cd509b0a432ea019b5e86f000f254526f8b0b5cfd81baab0557f1d3e9cd23b66a632f6d7469a468b7b706d54e07b6de02dc7ee18e8bd010581db5fe1f704ef8f096e472ad6eb6ded8ca5cfec652469d5b3ceb6a0cb082f8047fe02c4f07130be996a5ae60ff6c26907e953133483d3add1ff4b225db144c1399a04f92c3f6a898e7c7419d635a49b9ed30360d9e28331780c7bce7d4e144c5514cb0c3d585388c49bab4dd60c004e6c356d189f7e4c050128bc1f68ba4dc7c38cdc448fff26dd1a5fde07a2e944895c691d93ad751cb3791ea7f2a765ed4aa0a80a86cc0ad60ac8f991206527ed17744d3455179be059593a08763bc60d897d52601e8749648c5ccf154c9ce391fd0d471d14dada550208a7a13c7b494c1be566e9ecd80e2712b299b8ec4fbf8f3d9051266fed96ce7daa366b8018ed4a4ba912be0a4a836e97c5331eb903875a6c0769430ee39a64e41f86978df19fd6db13d5d2a4b2315c2760daa13af07352597978e644984326de9a1c9cea04b1ee64723de5f04cc04bc64f9e9c8f68ca2cc0ed0f9fb183bb24f3a52bf287b9fd15abce51e10b41a63044a7a96957b5233689fcf7fd81d134f799272b7721acfa8ce57b4124c2ba32fb6fac6b4ed6e8640cb28c7cb983cb0cf914c6439decdd0089e3f2ac97cf3d8b3031cec86ab8fd2ccf2d88a7cee8c0e4439ff04c46784be4150842405f53208cd8566db055e3414c39707ae11d11eaf7937aa40835bc5440d71826f6d6a8901e122b307452c94525d009aa8e34a5a2d6726b39f1383970d20545b3959638a33cd9898677cc55f51e90ab63da394f67420942aac0c90309e28870d286770927707582295f4328a24ebed40758d469cbf79449524862cd6e882ad193330e91f1fc4d3b55893a67deb7038d2617b389d5d01178946ccc02d0303c2428028150837a573ea31bae26d1b4ccc0f493d427f819ee9a27914fc2af7e1327d90bf8f55fb62784123778c7e217abeb49b5d7c9855013476c801277f1b940192910d03acde165dde32d5566d05d23a27c29bc470cacf6a624a3b053d1376541630ca3d26eb83d69e586e52f1c36e3c77288d503ceed7683d3c03426574e7d6fa6ab93176cb4583ef3fb7ee8b78d2ff003dfe8657e66cca04dd07c47732727c2a8d9e86a0e97d17d96b1d500631462391992257f5a338231d8b53d2cb8b60ac28eec36e09e4d118431d6560d4ff682878cbce4136304b90389c70732078f16ea0f2fd0a5b95f565d6316834f5a804a846233f4e050ca770cfb73c7e2804ad15c882440dca6726d567b0560111d47b16e9a55e56274d0d3d83150ca198263c5eec61b6b0b74632f6594faa551ea6da3d4eb11a88d03289dec191b23a24693e8dc5e001813a1fd839eaa00dbad5f63f6da85c911606eed051a21b09c1f5aa01ca12e3498cc9276842a090e1dbc3658be82093d029cf22849edb709734d7db1c3a335d9d31012b732644a4c9e8be9cc761865f870e2c783b0ce64d81f967b5c81aa742f75cefd9aa1d4f49eec1725f31227178d28d7185ff74c7c68d125d908b50844d1f661bd09f01339c01f6c7c4b7b6777cc4b34e0f3c0c131fb1ba7185807aafbef88e5ca30065b937ff51a12cd70d840401cd6f8cab4b4da2894e2f3c565d83b969a7978fe1ffc340774eff05c8234da9fbaa15d74840f0c5b186d6dafca047f579b72c86541a1e5ea8addbfc87270df54c0f846ae655d1f3374a75f03e32d60390bd61b4b5db276f31ce9cfcdffb989943f9e2c50d896ad37e8e65b47d5cd2c1fa2b8ea33a0e53223f97b93ed240601f243b18245ca9a612ed240e778fd746b1bd5f27122954c880106c68501289f13412c21fbdcaec8b67d46be201949d9e7d5ee716d1fc54e63dc32c40e2f980202ba52c458a0658b8a79244ed32d88738bd652e588b88b71b2189481e45f1bd89b0160872706092373208ecd8dbda5863d6dfbcd8a779c592d94618d6d19b6059d0257c6156301a17b658e1db3f9ec11a7b436d4059e1e7bf6ffa0c4edc58fdaab92da6d1ab2534edad60459f8abe3fb40866c327109cd30ed0c4d96c2e4b89a91cff62a1e6d9d7d95d0b41b205c02552a166d90d5a5f398818388fe0d19f0b49f19c5f1080fb22020de7236d1a7175e7f498aab30bd917af5b797f4c3952fe777153c6eccf15bfea8bb3e61956b18d2c8afd529071aa5948322845506dfd53553c8d8919950bdd8eac5a7c3a6bb82404566825b031d78441980c0eef0456c5d3f94a3876bcbc9b3083c7f4f510fbd9cbc1429ae5e8090b24fc688e022c42630873b17c3a05028c6e651bef0250676619d0f4f215e9aa28171a194e41729de1d980b9c5ba441f6828615728955f1a25b5f68a1f835dd58e65a8c7427aa85361b96b39d9e29d1f2f27fe30a820e59f90ab5827215dc4eb43a3f9686ec064cb73917a807bf656bada45812abb657a124a3f2747305a03ea86ef6fea4878885557de88a12139ad50cac4c021953aa55bc2514b000735dcb1745162a8fa94b4c849ba76728b34ce6a2aa72d5fd5195fa2e62613f03df02d2356068751636617dd0fe2118e32052a6313e821d36b79c0b0dc33bd5048a27a1645e6530f6dfe1c8fb74fa4ed2e8288cd50b02aa518b1895c4be43c415d8e226ebb0d3bbd21614d74df1891cd0c803e3c98330fe3f630202081e58279f139fd9c24bde714f84a7804ce3433894eaa3ca9064aa876f853025672c5836a82756556e143dd921508bd012efaf2c2f7d80d5505e830dd535d8eae2f6314fc961d294395035b9e8c07e095d7a208437a53d919079607900f1471be98a0109a4b4299267ba204de47f1aaa9729dd0b59fa1c28118c7c1d73b6ce368624df781d44435eb681e673690a8c0ec88745403e768c801aeb55a2b5f36790ce318548afc4131c03c8aa78d027060018e3fa7e0857db8342ffd1fe4ce84d01a46923d845dec3888cc1e1f1fa0f41548b637ac6575ae2201d2329baa1ea6a12874116a7f3789b91a5d9fbb33e15ad7e8cc38904ffb936442a4dbc4a787202b1fb2a6e1b5dbaafdc8837687f839089c4a00e1c86b97a3f1efa4c84deed87be85473da9e2b6922f1cdca59a6905088eb492aee2b5246fabe8df73078138640e3433b07bed3ed6fefb616a45355009df14d561dcf25c7797e6dd5a214722523428a54cc0924c766458b4f10b2fe9704d1d01ad4892162d4b190edcce66125e964b062306a451fee02dea0b0b3c84a0dd6a96f632bc7c84482cbc3cef598c62bcc0fbe0a497e5344a45627f177ef6e03f74539d8abd2dde11be08296b5ac9217040b20dc2b5c747b789353b695c5feebc25b351e4c7738cca4612bbfa9b94e8c4839d5d445c6cb210e46f7d447e13335667812add207737e42a93d729f0607884910279696f4e0c1a3e8e72943c1a0a62e8239543a9710892d1b6debad168a91406479bd84613ba414a73f43cb8be1c7b381e75f67404ee2a29eecadd95e8bd1373e8c5ec037f74e413ea16afaa197daca028aa2190f959543091cd346dab85aba379a58c7461aa9926fa2ce062909d48ab1185a5fac3e850811acb981cf6902e278ecb0568a8771a7725658a19bf5185adb46ff2c4941e1397c65ea126502ec45e59449e526eca96586f9dbc5c2f998a40e54cda1584d9f9a47c6d3b023a8adb019ee77298df9e86e8d1f8e19b69e5f4cfd0d662deb057662275fdf147b57d7d66658d2fd2102e3eaf3106ecae7c4acaa93f2a09bd6054e7a42c03f95b37d48be90e571f383553125e4c00525dfc130795d02b1a640e02eae025ed952e3a39883f3f3507499856c13e45c5d73d1a4d7390d7b8ae1ee1b82aecafe446f0a71abddca9f188cad6ca24bf1f6c598a38185f21e63e632a11ea2dd5181c76246d75c68788748f2848115d9220452cdf5b78fa873960586d32b1dbd380b89c0a2361dbac06b46dbf8350f19958dad72db492a0157453c2700a34ba5f71359e880ee34a347c2d3919f7802fde0331850fc87a7c40d7970fb013bf931b788531334d5921cd15dc6a15364da84684dcebbf5f77d3b30aaf460a737aaea3c6a03cfc96c23be01105abea4d8b195a00ca5957e93de26d65006bed80071646dc92399c45f107a701cdd63be1b791420054f18ae27079eab21595ee6fbce7d15a322b7823fa1d49a36a3b8e6a0a8402b614091b24bfd49e595b08169a84197d59a1b4a52f5aa2f4f62e07eafbb0ce727db23ed86335c035e1bf402735534d5159f39ee3048a4065bb3c2d9ad72b01db78a52fed5162244ae10e642cbc8dbae10da7dbf47b49c77781941db7a1569b0e8f2f831cda4c35228080d6cfa588760b9a599632ea579992a3a228ef485c96a5e82252ab38f0205bd526c1af1342d73f491db7d79fe1e8b4609ec7fc61820230b175b01893e04b1456d97d6420261e10bf59c60ddc8bc5b52e61480663592c7b35c66c4ff8c0f84e289a301be70e4938d85891393ba12710d823014c911e134ebba88bc42febe7b01c42d1288354e33e60d29d20bdd45b81f6dcfbe0a15dc57a0736fe4f898219ac5f042a30a9be4001863e79e741360f9408e17373b759b37cd2259b0e90ef23680f069a1fc45fc0b83d100a756d241f444aaa2ce751f8139cc7f96713996aa7a4cd091c16bbf09742725bb78ea190c12b188f0d85a4dd1cd8ea91f07a79e4f412ea2729b0b1e2d3b4cf16b0b95899499eba2333e3f20543b546844d58782e0811bcc62ffd31310afd184dc223b698fe37017b8f9695c14ef710710dfcd948d62cf47ee878508af643ec0d111af5c3fc8fe5de6c2c6d62a9cc55b67bb5a728180fc0b4d45380a480074a27879e5531d2b38e1ad3509bb9acae8e21355f93147ae979281a5b940e41e641b27d79d7c63e5c1a88de36dca4bc1316ea1a52c4139efaa8dd2cd93ee1d33bc84b33a72ddd88384eceef5a154cc445221d509bc0f507cea22a77be90818b2f4ed0c437f2c8972fba1dc56b2e9c2371546b2e453cb17e8336c5a0e9ff5f945646b83aeeac41e527209332c884e94f651b1494c101b827dff1c1961ae2429e045e28a3c3c72e44c3ae2732eb2b6ec8270192b5f48b51b12c8561f37dd2ed3437075302a8865c82903f38ef3dfff9e69db5d43707a5402495147bd43e36f1893c3e904c8f8611a3e6909ae71bbee8b8da57104eae2cdde453e97803d54926982abbd664a8018b4b71541a7b47d33257657e262e1adde9632e1ae2bc02cda831d081fd128b72a2c073e5c34778e2a830cc7d515adceab2331bd440ad5b6e6348fcb64e377c4895ecd1a58a28f435e99caf809002e336f5e91f5ea9bebbade3491a9ebea2161ef9873bc2fc9d9171248003dc832f0cb538c28c5d5e45fcb43a4c566b610a1742b0b558e5545fe61e4da34bc49033876c5d1a0678a47204bd1f1c7df98ace9830252ceae23c8754998c2e921aa80f727dff3651b1914adb4826869230662998ea3ec3886e1e27280128c0b752e214e9abca1f801e694f4aa2bfc447421f04ea965715423291f85a114f3d9e6c54e112be13e84e07181c87259ef427215d18932aa0051fc9fe4e393a5d5c3a7129f42ad73e7a922692e2c408f8d07bcd25e43a498a85c43cb26a8f8c682954638365b1e98257fef9a31d76011c7681d296808667f104379a61938c12a5b4147976ddd721578dec961ff6d13135ffe97941e26b3b934b853127aa46c931f6d16520a2bb8a2ec0a2080c7c2598c154a694f727d3d8da49a44daf78b70b46db05e2089d8b93589c2f8edee8605599f0448c6c58731c243c9db33b52cca9448521be3c3cbe0d1ee736db881b390eb6a0e98403e9a1e2fb86b43e6a9cfe957582662beddb9e8dd3b9957776e632199523a58c4a602da3faad1897be8da9ce4cb346a4e08c5e4c7884c947f0f2ef0ae453d1356d9dd1634812223c6aa0ce04d9be5686b0d0c7f95867489a5e2a7f1c46780ea07b92531db73afe93268658a4a4d83adb71b4936c490242c938dddd25d31927ab8031b85d4db02acfe644e1f1407e5ded7a84d419d3aef2ddada878d43edaa86f35e07266655f9f17c9c92c4f34e44060b5a16ad16c57abf238c944c9939b3fc9004274e33b031ebb8b853230720da5ab7206ef1a966fd1fb26bcda339bca3b193fc419c925a9ab417dea124578343db4dcfd62125552b66ee9212150c956913752ce0b8c442b7edc0ec616fe4ebfb0bf7fec41cd5855d466edfc94d5315287e4f947a64ab3ac42e2cb305a872af516fb32c8150815b4ec0c6237d9d43e129412365732dc86f41020bff4b60a5eda911ba91346e47bf96aad9221f54fa7e92ff467f5756a98e6a87e4dc2504414dc51e55899f0e6b4510e747193fd2a259137a9a5a28d8927c1c92c27d8b723d5cd7bb2bac9afc487b1fc5c1f2a82c79c062a5c0b64ef0fcc36a05be9df004b148f12ab9a1ef65a7e133954a1beaad6c5371ebbf14e5bb6e7f3ffcc783ea1b01d22d3acfcaedd70edef3314794943446a9f0729112306021d01e88aa8c67ce008145f9c9ce22248d79df4f7fd5bbed62c398aca0a93941c241e91434f1f1f26422025dc965b550ce2078011b1e36a113b4e1e2b44cdec0d5af558637cb76086dda1e89e8c8882a7d061b4e562e605dfaf8286643c460dad8fa855d73f91e01d33ae4405c8ae20b993b7d66238abfc5664454988e0fd5f21e3f414494447533dd8a012ece713b3a7cd7c0e3decf35919ee2941912b3df93c92e971e14366649427b7683e21122d31c2797cecb18e39b74a1f29a3572e93c73c625db802b03451f5d52b4debc90b5295eb2a31650a67fbdab8d27d97e13183e201d3a8e141f69309344c66a0dc003c7fbbaa4ec6fd721098edb3e63206f074edc801eb23e1b799e5e6c242c782060660063622ad49b509d089cfbfa923da2df5dd632e465f91539df4e2c5d1f0d5a210d13091312f642790b355b3b7fb1aaa866cda9b9e019f60a30bc9f3b8677a18c103e676bcdda0b5ee2453955aa5120bed97e8fafba11351cccf1999c1810a9cdb91be032e486ec4dba1ec0a60a77ad63d3cd0099302a966a345c6fdd2af3231bbc06f8e44deb7d14c5e9daa2e701a8e2201384570b740377d1e60fa7919f5871de87c850de6a6c5f2ba74f9b3b3662c876fd7600a24878458acaa3cbd53ee9f6a90beef21c0f20095f349ff192c1c9fb54ad566e08648e029354536e68931ac1bd4ecdf6f907a870ffe3d4fd0ce9a8608d06c0481fd63af169df45e6253469ff237c551c7b057e9c16cb05b52de7f2c9267d1126b7b834b086e390e08e9ee2f72311fa86378ad34ef223006093db18efcbd94b445ec0ec0f2ebdffce8d82bf17b3010a89bc1c3607cac5dc831bf99bd409e03cf4615664dd6c7d6f663ce6b21671065d5507ffc6396ca6e78e5cca1a75cafe1d483dd5d78c36ab28413a7fbc97cbec1921f5086a2fe1672d3a8794df6b9ed50031b561bb219e652801f645b2b39a35aac3f0b99a99bb5b8c3830f7799a2ba93c83bcdd2e0584fb8e2c650b78b40e3aa1a478503c044a8fb13ff231a39166591ba09431170f46d058b7b245549427a8049a90a3945817d32f73b26c34a70d25e40b9dd65116317f89549c8e5d0bbc0a078f05d853925aec2523785b328ea93701c3c6e2f7603cc62d0880180c7518a86c0d4459f0ee9d14df19ef1189ac07a430205d9eab7710b799bf6b2ebbfc593e007f9348d1bb2bf496a11bd3bde1053d1f83479c77f599cacd37ee8d06a8b4d9d98a9ff8083c02f6446d50d67854b1bced55ae8517458f17c160e71465ddeaa0bdb3c1c0dbcc4d1187b2786f5ada2f3e1290f120b236fa99d3413e523e07667d9724e503e59decd38e0f0f2208edd2e0a6cb46037ae0f608848fc9e4e026095e80056682a1b4941b70b8fa2e2de689b31aa331af99a02ea6f4a961ddd9d8f4ba04a1c109e353b6e366f7c8206bcf2d2edde14a3b7a553efc74cbdeb4493828c08d860b8c0203d7a5f0ac375d7723b0fbb1b97d4405ce2d1e1a9deb70fa4bc0e4a52b9243f9af69d9b03436f0536997d436a4cc9f8fe04ccbaf3494a8e5836ffabcd35df5983aa9cd0e82a1674751c095fa0b1eadf3fff8972e2f26dfce3779f5f28a8f1d736e26242c0839c87303f89e10c4dca456f4db1c4411aec5d6f77a07013b8c94c50b716b6ee346364d19d42fb2c2fcf0d74db3af0bab81b69c40453bb2bb4346463792e7f8beb0caf2b53e692fb3cc2443e10c45d031fe7bcba3e7b9ab9547a730d4f15fd957f8ffeb2ad49ff2ab787d328e9da40a370ded07245cb9d60d9388b8349527d40a23edb7991d0524cc9bcd95ace7fd91d23055974af3ab98eb98743f3ec23a5b748d6d7434346ea80c2478763d060c3df89043c901162b384fdcc699caa4ad95e82f2e7533cdfa78b1d13be18d42cf4399922ac91d53e4ead67e36218038c6031592a817f568fd13ef0f3f17ebdb933797c79478ae7f75ae371ceadcb9cfdbff8de4b06dcb866f8b8ed2bc5f4324909ef2cbe6883db806eac29ba2c97139ea72591d8bbf83a54e11dd46535785d32c3c2a7fd18086c6db8cb06793d3ae79b5bd79f617c5580847ed3b403ee97c2abd8e1c531ead760651095afb9f633a42521b7170fd4e3153a8a4a289aee06b9b8fad26058845315f5a550aa29843c9af698e084f7f3a2f341b9d05738a15893a87a80bd5702be85749fbc493912e242532740865e6b5e9636c979f66549f4e76e1c48ffec6e2d46ab2a4e7e1f9e11fbf54375f34f4a23f731ca0e950890e5a44e0997e029899f9f7a782ff7d41f075c5f965d1f419830fa3876ba15e9131bde0954ba108490190b5876d78eac45d8a605481f9267592554afc5a42df4c0b823c1d4300c2b38b99045d80d89b455d887fa1c737e10e30e40365521c5a51ea9dc61a222eb7c22e2ce0191458642f0989b5e72761928afc169fae55dafd4a41cbe4463e438b6058ff668c9b76d3fc5bad449faa756af57b817892ef631a29818771b7cc79687a91a19108e00ce916c195386c0862749190ab7808e23093215b640863f79328581180b6f5264a86d02283c922043f508f09c9290616110e81ce03cffb7b5156af6c56d5b03f4cd49eaa2a48956e8d46af19cc7486ccefad04eaf22cdf58550d02c4e7bd5cc856c413f667ebacf5b1e79535480ef0c6537c2474f7a9a8d8ca1f0ce40d9649c0c499a14b23382a5df2e9564073992f73a632fb97c933a761f56b057fa4503bb9146a7a34369bdb8495614f44c0fd8dc075341e10cbced916d530405db3ef8d43499364ea36b1767ab25bfbeb1e6d3eda65b2355e3a4d9e09d3eb9c2ddedd72aa154ef00cb3d5602b3060668a468f30059b01ab1e5a4ba96cf937ec927ec9ea678da72142331f820b3d2d2c01789eaccf9d6b49b0d8fdc29ddf4d6b795fe1c2e05fc710c6378312fb422692a0723b71001314ffccb20f89105755a6ca91e6365dde2ae21186bf0973a2c745e016684859f0cfffd9ea4f0713d456919a658fe0737fcc17ee47b386c5f29da1c0ba94496b5d86f63261bb80d755fdffd19fec7ce550356813aaeb56999f989b74d82a29c257e2a169fdd2014ab53ea4e04c4b3542acf2ce0ed8185d5275dcda4eaf82c91a613570ead10d18e9ec78b078e9501dd011b22b8b528200c57095b2915d80865adbf2ae6dc2482993def0f1d596960e7e06ef535eabf34f0ef2dd18c08eedade7aa5d284c94f9af90b60695e7917acf1a79286baddcd5d396ce35cd8fe52c6a12ba7609ad77f9a4ae5871a74fa4a878becd33586b492af82a09ebb561cf2458c257ac1001ae25379ea8ab0fe7c639ab216040393dcc64efdc04e7a7fbc31db518cce84db20369585d46b1655a95b8f1750a98217417ac2c63ca6bcb84a56f55b58d84536b59e387d2e18c96df18339aa59f65c94b43ef67d9d8b72613a181fd8e096f0506d434679cf2eaac9758297cefb58355db95c484c2c16b8c98192ca39db549bd6f60b7a19848cc1326c34c72de374b43bc034c3dbfdc9e6c5471ebf7668d657aff301395416e326e510c14e8abc6f4a8ac12380a17ca1e0b54aa972fafebdd79ae8337a813630006138e6f57f07693ed179bb1478f61555e80cfa8b82a8cf25c78b89ec5529fa7d1df547b32bc647e4b936c821ad50412adaa015949933cab5224a7c128125050bd2b78afce7756a2908f5a627b5302a25ebad2611c817828f21161c41ad80ca669b6410ef983926e5ef9b7729786169a07327929054122ce05acef4fdf6c1aad90a307c0abbbf45967856987e7ecabf7016129297b10006c245fc2cee18b1c0afbc1af1426218df677bc51aa98e5b514850f4ed0c1a0a2288726c08211dc6169a6ae27f7c65aa10470630a0d44f828282fd1b9da4f80b8df22a664b70036534e0e3c934aca71dde5ac130c7e685fc752775ac05b0eb2b82ce7e1260a4c84cd16f4e26c0ffa15bf093bfd15b9b54d330cba17a78f7d64d89b6fd86df26ea086477bc04326b5e0013b8cf7ea8ec731ebd32056fbbe76d52eb05d4afa9cd8417c9fcd3ab1d1b18d7977128c10155d0d44c4f9ab3f6f7ad732976b363d54355732417d7c1a09b4239a1313756c22b668267e46febb93719125c453c253f2503c525733e45f9f7dbf3c7ec7039541452ae04f1bbc0d5734d8746853dc8eabf7979f0fa0c8c7edc1462ba0ca35e5db90f15073c5e5cbb82a260158a54a7a9dce719bf51d7a900489ee970ab546fbdfecee29a04f645daba667cbacb9e72e1b0b724d2467c900d92453e43a804da9530c6a3398ba3a3f021caffbb21637e5070ed270fad5c3e548c30203f878545be7a638e37c7261c90e790f4c2a657abb11d533e082d63131970636c66ed04efe0f539a4fb53f7663f6ab61f1e9740b7372f56651f749148fcf9dea59c113cc0cfc02147b1463e4442244bebf82267b1a8fbfa79305cd21a9ab40633e261cb6711944880543f82e18878e11a6313232249fc1e84d56110c3e1f8cfeeed4731754e03f73c1d41c4f4034b2c865be2ef21967653aab2d4ef7920cf2301b01b4d43f4dcfa157f6e85915303bae4a8c3ef47bba44e6297440d5cf2d94dcf25ca6190aa1b5c9c9703692d4127397d110bea856bcf3430b6579d21626b0bdba52c1d224570365a22e5846aa8e45549629593c9d27ab91279af1a6c22ba1ab61653366b5c51cefc06784b24b9e922552599a74a5e8bb22a11f89b924f7ea90b27ac3599e42472b62731203b50c539dbd8ce0133d96569ee84d9ff887b56852e6e2ab6b8f682f9cd1ed9cb582b9446f62ee765cb3878f6e86dd5107f225ee0463bed900ae57293365f83f2f09eebbe54a44364c5f1203ef3eab19882fffd8e82ee8a5606a9258c0b82350e350d81d3ec9215a79b920aa7f6a31773aed191cb7d789802cc17db4373e029c2c42c1630f47eefceb6ad5c821420f2b65b47ce6bdef77688cf07b721c4d6a323c0c6f5e86bed55a6521efd25c241e6ea5dc6943703c69998efdbfa06fdb039a08c824d7f0361f874c671003c986c1d374f04bd830ad753d54b3e5a87f502cde3fc2c9e14b9465faa30a74b19413b44cfafa35efd7adc95a7f4ba1edad324984a00ceda21b7e3786219c8e1887e9ca51e1f22b25e687a61028e4930fa5e8d07af39807a68ff9fff246c5e470525ea967bd228a23448ffd94279a7904d07e18c899109a1c3939962fa3a2a2679e82054c5cbf28d19be861179cd3f5d1a8bf33299a6cf1c54a74b53b17ac314e57aa250789f24a7535744a2c156d8743f0a2bd6947d9a64f1fda6b92470a46806eded6a35a7509f4949df79b737c93ddaa199a5d7d1659767fcb8743342aacb8f57fef73de58418be820a4b16861014a438e770de85ae000c14498ab2cc7e0e0282f73f33a36d8d87f73e2b3a9960e628ff5a953e47cc9470f3033b858d2d4688fa83cb0f903a076a99ec46fecdf6b072a3f6e4b81c66adc255c7c5bdaa2ff992abaa9c6ee964d441b7c38639bfc971c2a11b4611ccaa186bfda4772caf9ca60e804b1ea491e7405f62ab1bc25ebd83b462eea1f76a695617f84da648c90f4c6f69dc4427efe1a12b10f1f6e70affdc70aacc1c809c4c8c050af9123b2f6ca3d3b187164384fbb72b2f4d911d3268c74d98c547124207893f54a39f4cb64181133f04bdc185da4d3247ec66bd6d6838b03704ea86d6beb3e7ddd1c43dd6de18bb7e69da7c3209c20e7cbdc9d05dbaa6ce7487b43f4089f32f0a0925b6120f10f4ba818a899c079135476bbf4955350a5dbb33d262491cde7e4e7f2e1b4a6d2af1ff39a1b7584a91fca0deab246afd411da56cf30dc1776622b5d207aee1e8e863d957f11981ef1694625c47294d7c7031d06eaedf4d56c697483c822c00824316a5d631a72491657c9d8e6161555ba53646e99413a2a34d3356fc391207be6b206e02a0fa0989789fe7c3c4caa65b98895e2f70e18a7ef3e92d42e91736465a10279c874ec4e6ce66941629921ffa64f2115312661e4e4c9c24811aa0933ca1570b2670823bbd68c3280b8a7aaf3fa8cc927495e9f9cc07e21058dcf590ff8362bb216a31c212f026083a9aeb61f9fa82b21c34b77a9fd409fe44d4bf134c6e721c5b038c9a5e4c2c1051d38bb5cfe8286a053739c78d98e2a71036441b79aeecc8185382eb79201b3186f05e81ffb5b07d3678cb8d039fe8ee07e01c1bf1e3b4dd6a6154543d6829ae7551142df8b6ad96660294a3259bd8787bc59042798d99ea84bba863590cf635df7416225ee8ebaaec3ab546c074261508817074b90cc64afbf7f58960f723729ab6ccf28df458d9a6ef7fbd41d32a361cd63a45c3e4d3e50267fdf830277308c36801e25ce42fb911f098af53e7b640ea42a0e67d9b36389531ea644ae57071260442027e1ba6fce909b1a7542348acc07240ae31e7f51951e12b410f1fc692fa463694ee1d9d28a0fbc7e849c0915c79cb61dd6a994b1f578e1cfbd72958480ff629ae15cb1846148c29d42000ccbc9331ce58571220f553b4ecf598e218f93bbe9499c50f539eb9a2fd69e14536ebe3ab672a2cd52abdd182a444e31bf00290eb380d632c995b77ce1b9d36953371f34ac2cf6b8e190fdf7c122bc8e4381114fe7508946d408d529a2296293726a90b572771b70ce9d3d5eb715132fe4829807db98e5a4d3bd7b62900f7b0efc56d2de7fcc36281927a182f2df492b66b6c93af8bbfb5275aea97ff9842309369d2f05bb10c8c31f16d02b7defa38d8e4f0b284c5da31f2d020bc8dfcf232528b383a41a6c3c94c88aee81419e1fc87be4dca58b411395a78d95ca9e25311a5cb0ba727bd5361149d058d70044050821b927f41484354aa7f54486596ab417889d948bb278cd5a2f39b2a9f1e876a012c4ce4718eae9ff6d57485a44fabe08c6c8f9293f5a863ffc990ac1ee55854c86cf3911fc4620456e31ec2892ae7fb154b3abcc57c5e7e4631f4f4b4aa801ed8b78cd73e43486556c18e6592b5adbe1cbb939aab698883421d638b2526752aa10ee724a80ae04fb21e1316a03aa3f5c09dc61aae6fc7919b156012081d0951ba23f549c0c092fea4cc52c73d05db53214e3f083c59dc76b2e8d7c9a2f6543dc0c704eb076b26308c66aff75ab799ee2e5910f4d941e5ab638a231927d90df446db478ba68a9f41a005a7bbcdd26699a903e16d8159c870b7f695b5f4f6ebb8ce3e8b3902080ea6c0d6f72b908ca8e60a3aaedbb897eda80b45f8fe7916d3ead00612e46fbf6232eb36814d0445b960f115b627b1640eb42ecaa201360ef60b2c5c0426cf30a5871d1a11ab0b3516fb48e7d97c71e4b549ab361fdc18477c1b2b080580814303f638a2eae917d54530aa5f2c295103ba488ad898e778002318f34426223c99dd65179d6e4b8d43221404c2f11a08ec3c0d4b36fc491e74aa40f93b362a82bb81cdb71bd622a95083c12537cbdbfa972c1e3947ffefa7d0680ce882d44a8811b47c5d8624f472829a25d18a8d3d1adc4aa7047bb2691c3eb6eb0e0b1dd5ead171dbf3f423562888dd0f66be52ec055514e4c745b06d0f37358052e1abef712f4a26bcc7a8b0b895220d14faa8ae7a35042daef35d910fbf74bedfd47c0e51cd76840ea24b9770646865e0e4c3c415cd7541cd123ea765e6f5c98a40997f8a4ada5b36f9a8f705642f71c8518483f43c0fd2052ff5d7036d412b2cdefc02b3b6bd99778cdcd62228f2ec8a746b7ce18dd52d09000bc99cae49b85a9e3515a45a4a04d1d72deea9077b70709d9918885b291091fc4c51cc30e29f63f382d3a1ddc34d7e5c1f11128d1f2c5c8406809d63411e3126175e522f08c3e7465da6579290ed584e8af1f89f6fff8106e70e84847b09fa22a359965846afc0e94df61182e2bb8361b1d22740e8ae4560541a5a6744af97bf8bcd29d24961a8c59af70b5d2cf072c074cc0ff37d43a09163bf28a94cd4ad81d671821d4467cc34ed69742a1e255ee63281cd9b34f11d9a679a82595f8ccdd895d80fad4f538c18d36ee7eba11cbb80f5098a1dec42eb3dd885d6494486920351499e0afc5a1dc2cc6a5b160ed4be1827633d8336244680291c84b182c1824860b00acace00b3455f717bc95b01ce12cb5578fde310717c6b029325eb20cb94e13f5d64991c39fe6ad890248611e52feb74c979a201f202d927b0bbc0defc74e69ee18e950844e312a7a52839430bcdd0891607a1a7c0d3f6d6b9d01c6087f6f6406ddca4122b0c6618e10d552301ab75f3be8490d5ab4787234a66d2042116487cb3e025290405e4e4c994f28b6e082aecdb0eb015862e49d343d45bd7d48d6507a2dc06ad5984093d46410cbdae2923982c2a4bdd489516b23daa8e77c509ae8ffd785f10349bacfcf8ad60d6358f503ad980506fa045334e7e72a5b5124f9804b45952040b562d1471f07c007f7110a1cfa104c2b6fcbf53913376c538884731926f46f8d46319767d3f9110f1e4021790c317166a1f9d8b8ad0524711d210b3f8ff3de3750edca8cfc560c0da978d05e7132483d755ab8792bd9bdc019e194f3061d5e9f77143d2f4ac3aca93f0432958439da2d155937d261ba5e9e8ec85e4a9816ccc15a0181226b5607b00ab8f73f6df0442a66ff98650dd633c88cc2eb935acab12c4b63b7ddfe6cb2d29c73f027b3dda52c8b6155dcead499d4912a56773d1425a781b0725fd2d37148f6292f50fef0be74156a51f0dcc738babc3dc131a46ec33464404386b5c8302c5c62e15e0522dabf4d1c034f13e15803b0a3e6ed083876bf84c35f63898cc7deb988b878394eec03456230abbc66eccc680cc7c3adac8ffd84d61b5279fdea0b7bf9c0ec6d87d87ce496d4c12de7be0948d0ac59aed02af5d03f7a1df9dfaf99587160b7f07d9765f6cfa51905bb0d190cf5e0ccb007ca646fddf3a9945da5b211d9a15d7b7c1987d709a09f5ff02698bcbc81cddf1e8b25bccb0576f4f6c55c1068eac460ae6ff3294635a68d78e78b458fed54049fec6ae5a22e508ad9365f268fc3c518f6e0ee62ba7d5a89ade4eb2872899ac0e61854fc6874b650712a0eeef1c03c07efbc28d37e794c022900edc4e2242683c416dd61bc484eba0e7bd9e4f2990baf692b3042227cc146318d43918df95b75785cda6dc4a400e14969be52a42e72fc39de61f3f985d5ef89f26ca3a2da8e1c2164719ecc3786939901eb74c5dc49c41256a23931f0cda3c286f073e97f36f0acb318fb6c34e23e947115007229472f1828d47982b16c7a5e8cf4a6bdaac8562f17399405ec7bbdcf4a7ff0dcd4f07e6eb3e9b99cd49aadcec877b56c7063f23c36c5dd69f083a9b66bf866b8fa89166e1252bb92707581907e25be8402919becf3463e901c6b97773ab1a08f52c0dc1a0a7efce4c27291889490d8f7d477f808d3d5ef09d374d94569ef0aacf6cf091098e2ae693f99f2b131c5029006ae9ef630827a06071b4716fe2fda213079478b6f2a40f0def79320152d6d86e5aea6b7fed30cac9b3a45d61bc19001aefb92bf63a93a6d7d53426515884ab75ebaea4a37131d744cc17f309309f785a02d4f0f192c0d19f69b80447f840cb5e0e44e515d81c9528187dda1510746f1bcea23ee1f5739fcf4282026c811aabc47612b5b4d646bfc8d715c476eae62b671ff2c58f93fb4c289b04edcce9b1b32352b4cb2bb5ab54afff6be133e2190cc6afbd3ab8e6f77e8c335b57273da05bf64fbb6d0c8b4d2090893773c0ef3c5c034a4cfa765a3016daa80309f7fefdae7bb055ba7f3f47ba44b63af77f502ea15665c62c51694d0500c7624cdb0ac1b20cd867f318e6e75de71b635e8de37676ea238b1a1abdbf43ecfa8f32f77393b9266d1e1f3fc492bdf7de524a296592293d072e079307b9698ccef9cad40aa98550968f6bb48d83352c5883004de0f8ed2629b023dc146337741605881814ab294bec0b2cfb0b11d963ede545d9b75bc69a57f36a88f404df89021799d6a919ff2b1c651b3ac0a4183c35730cca02dbf880c387c1e264044ca5b3001a6981adc8ee57b2bfc362dc14ef699d2f1ae50179aab58eebfb1def5f3ef416fe1bb2372104ee40f9815ff43ba17f0149f1f38f1b2e227a542911b8237a0c9222488a01e65ffe070c0825be0ddee387011bb4e1fb17520cdee3ffe13d065b9e5ec05893bfb291c396dd8e2ba905908d1cc69e924f91b9498ac7dce40e7353ad6d5cfe21898a5f74f11b7013484f70f41e2c701857abd6895fb44d91222b4f8118d9e3ca4a6d476cd2a8d27f185f0dde8b3dd65a6dadd6bd56ffaaf732e5813b42525e9dd16b2f30ce7193914cb7c7c9a078f18bdf1ff546a421b0d7f0c13403ec600d0f81717c00b4604011311e1e6891422523cac474c97e2fc6a3d1bfc9d4b2d7cd8dc9e492e404cbf87996bc7dca24eaca3b6553769f82169c60388a60f85d89f4e3236549755e89f4e3eb2027528848ed7c2029bef7dd0bf9ae486d3f24d5518fe4043748e71cfdd7c30729823178eafbefbd47810baef1138299e54aaee4cd8dc9e4b31196abecb227bbf4f16e8747d39fde0087324bf62c2515e09922703865a329f315fc290b648ed399d404cf1c9a60b2c8248a87057bca3acf1e70caa6b8299cb2d9e338b239a5dbbe1ef33f080c995bb0c421060ea7ac25a32dd994394e96517daeaeb7284b9ebbe9cd792f06b6b85a4432ecb0e367477661070358681c1a77c4b62277e4a65186eced7bc170cbd137ee5e4eca7b6ff732d5b5785c54ca8e1d2a6bc5abc0b0443b69fd5074ef0d6eab02cb422db7dd18c1d073a5338c9e3d87377757999393234fafee99235173da0057598f29397ab7951d726166b084050e73b2b390e3afa319d03834e6d09e1c1de4d44a6d8fa68dc6b9ef1f5d124393e4f8a14fdf2ef7dd9cde9cde9cf37b99fab612e591d236323ac54d31476e45d423d6d608c83c1f86d8f493436a8c46a80fa6b9ab20c9c26ec19ebb0a922baa2099a2b391bb0a122332931c9a66496cf2de2b3d2677cea88289f1daa8e2d1800b4323c87b791e7ee7fd8e53fc24e3014fd0db89aa163089e29312225b10ab2205f34ffce4df4dd9cb3b11987ff918e57bd307c70df7251a2214f92f7307dca997c791b7ef5efceb21fa2159966e104c7f8a80660cca25dc4754da521b18dffbae24839b9c03232cbeb8e06d6ee10c38fc659825262f5f99bcbc7c0179f460c9fe29d4701855dd7be738d11557339b94601cb9be377db2bc91d2fb62fdbe1e3832fdee899b62a9e3138c599e0ce190588ee11024194b23592461d8defef6f631ac076fd6bed7849f37969c9265147d2c6df6ebb16d943e7def43a570061cf9035f00792801875d0381087c012fef5fc38ee38433340d7503cc7d17462fb27fe4894bdce49fc21538ec9f97529cf9498a8f0b8830252895c9cb6fa517304ef1530090e0f046de8c84c03c242af2a41084c3280b5b369b531c87f648e138db7f815ff7fd08fbac1a3392e00d0c67c871589620e9da18c9b264073aec80a787942ba1a2074c088308294029ff28a39982c3f8f28f3d282236d58018e316638c31366d8b607cd920c16194bde4d706d8b8008751166535005ce942d03dc7656e8c2e27ad934a8f76bacb51b4b9ab34c79f2418e20fc9325b2c59273331a74471cc39e73b0e4d0ce59cf34682352e2d9d73ce9177bbbbe577774ff9a416b6900694b2939e3f27a3c805778bd7eda4d5be8ded25f62987934aa74e7b544a1dee31e67829a50cbbbbdbba94f367947286b1c214399cb4941c7e32a9bd75b3b74eaac506ae30e55a5b5f745a8cc3f3bc6ffbbe2f7467ddec7dd559e766afc7754d29a5b36ef6be2e9d777610b173cc69839cf3be6ae7a0df35789b683d41cd723e4c8c9c3535e67dc5cc8f91326e639b6afdf893d6ef795f95caad52a9c536e7bcf3a3bddb9db4ca174752d29dcb49abbd1bf7f5a0cf598fbb37372af4e4708cc3a675bc80a375ece33a71482e832bc4f076f3c2cdcd6667c53836306c2010e3f03cefdbbeef0bdd502824aa691d69abece6c6f7edcdf04a5d69464bc12bf244221c3dea98d7f4fd232cf3795be7d87e4e6badb5965ee9f2fb85d0584159e584818991356c8c171323657cd6b0218e94d2992738e9b437524646867b594dc3f4cbd4efdf5a078e392e0d2c70fc8e1bc1288b6094e54712c8975e6409c6b6d9b69742b27dd96db3fd967b88fde1267f207e8a3a22d039fc8124d0361c049ae0f8dcacd588810ff672574102041798cb5d05c991cb83b7dc5590ac381d7097bb4a0f63541ff097bb4a0f352099942bbb5c151d544cd08c30a2c4c7499197121d5808c20583150b3288f1b062c1355bad726041c92a76f188e6aed2032b871fda625b6e555e77cb84136890c39b1a0427b02c0e628c9105be61fca02509b8cb4d450c2d6ea888f183160071371fb0979b8a1851d822e02d371531967001a6b9a9889184037a5859bb552764725379c20cf2cc5dc5054be47024f33f9856cbfef2c399a0ec4f03032cc3048c672b7f23368224cafb07402dbb0d57f6678013f845830b318da3c90177b13b1402bf091c5618154564b3eb9e87c724ea0349dc0f4985401207fa2082679806f3507e841effce0e941f2ffffd0e941fa2870177448fc11d0c86c09d96a79d0be2d9157d68fabe53f8c351e83b85411ff224f2c94c5e98e1b0ca2c886761956d205d65cbb1726822816d0e2391a7200986fb348850f1f0ee96a69b28489a611ad0cca7abc8e18c1225539fd6a913966305a3cb0341e0012238c4b31ce99478967d36fb3b64f3d010baae096f72dc56b5e3d18d2e787e389a738e7a7ce7dfd7435ab035ba71226326c30a8bc5922f5b9b25518da71437511adfe6b2fc842feb22699d769c52f6bfad248db241f2e42f7360595a9044592d6c2d071b6465a14ca5e0f0b264fea244e0f8a1bf2eebb25a27d2238d1ac593ff4d620aa29bb800dbecb008de234847f065657f5b6f08e004d36f5bef779decf2b8c925e5b22e4bc6aca32263c2137d737e736a11795b6a5990e045169157040e2bcba7b61c456b2e47d1203fbda02bebe5a8aaca12754c9022a11e691cdac5ac2ca0ca9a4059806240b11ec464b13963b1586ce290e7e343639e4763b14ff4bd44b1582cf689704c147a79997ac11f6df1b896bc44b2cf4540885ee7ee34667870a446709a6791fdbbd7dcee064e3ff9cf58cce1a47403d3a685414043a362eb477d43b728f530c6bc8a2a7208620e636c1459ad58eb24e98e41746c921d0c3939e7ac776b9b188bb1dbd3754d68ed767dd536be5ac156b0150cbb0c870e5bf96ad53a455a27be731c0c8cc3425f7994b681b58dbfafb655f6cd9be80be25602123c3b2ce18baf71be0c847fc8fe9e2477f1ebd14dc80e7b997429250c6667db6cb2260ff2f290a7573b0f594c124b3b4aef25c168b210b2c72064ff1e2d7f79ec058b32727f30f80d99febf9c732e99ac8ba5eb9ab073754af244852497fd43996fcc510ac9a863c61cfe977a1ef53c29dac63f447d2896ec33ea88ef60778e90f620fb532b9e494e3085f9e9097db9c96bd039fc99cc5ae992b68982435aa34b821c4567ae7214f5f15318adc37b7f5a6b9d95a328cd4f1e487bd039be681c4aa54dfe6e6b1e487ba664ff484b38e0b0b6eead50b27f786a55576dc9d34b2601cede87312dda2512dc5c1d3bbe33f43d0fa7318ec6fab349016e398efc2a1382f9b1f3484e7004e91237d51a2a79aab66aabb666f2a51fcee4f07a200db14b0e95a04ca053a2da0a9566aaf3d8d467e803f1cb14067784a44460cb53acb4457996d02044952be8c9d4ed5c9e8b6ea032cac47dbd676b7c29df4d2e33c3e1e714ee2a32909269ddeedd6e0b170c672e6d381c42236bc133b44f0e3fe0fdf6a252034a107053fcafe4e3c1d00379c8213b5104ff04db1c7ab9034d3b39b4cf8122f00cc3f3c39fa176d30686d3beac4f30c531060e3fffcbb6264b7aa260ed200bd8c3e383253e8009007bc14484c1226cce396788b16b2df94a543cd291e512c5ec12f5f1e45f5393e329bc81f9e867e3423051701861eeb2b463bf7778efcfc307ca03232b8cec5fbdb73d73560d6781cd8594031c36500c3625186130304c8047a153681cfa08987fbb39bb299b73d2168f0b06c39c7f58d4bce8afb941a174ede6a9deb95cb608ba9212d23db35510a9ef77280f3fa484d0f841eafbfeff4a39be827f4729e5b81554b82815dac65f052df00b3d366470ae953232054e66768d32b4bd731cc7711cc771dcb5b1e785daa57516b1e4b9736f7aad5a1500c50e043c812d9018631c8d9018624a952754b8c4d898d9b0722fc6a3115699b0ea656a1d77acba17e3d1e81fdb97610296a9ba5a2b0909d21038e468d931171c62152692046e49bbe50cd110bb641941d882d9bf09c494fd58ea7217bf0788b8b8c9ed631566e11656e195fdf838c85885575f0c326541ac8a3102abbad648a9b42f53d6b6b00aab6ccc3a2b4259e51e0fa52f37359601008cc3007df24f0096c9883492e048bb06d804b79be4cd121d5881658ada14489acacb8bbbd7788dd7b84ba26a6abce646eb44240820a26212e2c95f47c71c210c0c97c3a825aca9b552afc6889a2d77d4abb9c9ad43f38c11b87d64d4c2c2a1bbdc6ffd584b31b2e4290412208d7a8030d9004846b058ebc8f7f6f1256de3ae9c4929fdeabdee72d70b8dc3d275dda53b55bd3259cb64375f0c9eb29901bead3ec5a7206cb66c1e4082584a2dbd31524aefcbd4a591c7a501951f7bab9cd48a946c7d20255b9006cb258bc03309868fc9160c517053b0b3caa7d6dabf17ac74da79c150d2c85d60097e40beccfd00cfe12de19b6dfe807ce9a62f0c65c73563e0d0da4983185a4c16aee9f2e9ba9e6bce2953c8fef3d53a5ff69f4f1c27e2e8804397655acc966564c6a66bbebcd6413914ecfe04860390437f1201fb71e5268f443c7e192849f6164dce8d2282434e6afbd54d71bd835bc0ea5251c0ca94da3eec1eec9099aed284cd7881a5576bafb5d73e0fb7d66e2f53db666fdbb4785cae181ae7444d4867d9638c52461965680ab8c5ea0267c115060cc95d2b2527f36bef95ee5e655382787155b68bf7b81597b9cc652efb524edb789ffc7ba8134a7da4038b85c5a2755a7e927e94524a297599cb6e9499c9587975ef0d812338e7e380495bf64838e0ce336509124086438ebe7fa8266aa27168cc45b2d6994f9568937f289a92fda913a12fc27a84ba94689cee98e3d0207a5ef96f9b982638318910f51cc90ec604b58d3f03aec0e1f7489704e7ecff5f660646ccc28b2a57b090e477952b61e4ae72254b6e09b610b9fc92a3e8b1f264b665266507332b2f77e18a9eb451376a664d8dd609fde444fa618ecd398ef3f9f89828a35aa5a452d29c99edc96ed3f7ab5b5b6bbd60e9b6cdcca183754444498368175a9327a735896a5af320a29c5a8e44d12ffae44db8550553040ebb5548578e2341079f8211a38e0892e05225346a64b3aa2ac84ec80e8246511a061a95237f64e81db49f1c2d8274abeb5de4442183807e56124569ad5b4590d6b69c9c514eac31568992e147f64fffcce0e8825544b8647f5aa34134b410f3d35ae79ea23589eaeec5b4d6adba55b7ea56d9493ebe1f921292a235afe44cbe4a59485a3c355aeb60212b2e25597e3f6ec0911be4608727331bec9092dff2af942d7bd428c1d29b66d13da303a61fc1766fcd5c2aeb7944c016c4a3d1bfc914defcff9cde9cf6fbf3617978582535b21a265e534e191b05f30d03de1995c8ae6c110ffd382af2b82ab40abaa12cd9b5f06cc9212a8daa301f867cb287ae20c9317263e2f2aa19fce4aa504f9e69cda86656aba8a333c292a80f47a20f3ff4a1e99b51792a2bf0b4aa19b0199544d1947f4131877f9df9c77af06ce4137eb4ecefbd1439f4b4783337793ede8f476b9b2c406e3a228796c7aedac66d913ef957207ba402654fc18056a5b22ab72b1818181870a6070e27e0d68c2abb4a5523c3feb1a08b5ec4185f1e6ff7918d9403ecd9e3129e6ddbb60d6582eda6071c76d0f7f1efbbf44a343e60d2f643f206ce2cd9c01a6a84c09d5b9e24d841b42b3f24c9fe3b2bc0f27321b298601ba0c4cfb3f7a177f06385c06e1fd412b08fd740b38bde73c088c44ffe219efb2d79e2136f90d41c601981ce92637868495202c7fff85d25b0ccfeb124f30dd99ddbb66edbba7bb7ed7edb7697b058b56f8a16ed092c4f004d175642a3057905a179b41fe099438f526a6df7352a034dcb2f281e316ee172c12056e00cf4001e2cb8f003e9756e5f4a29ef9cb369415c56f8006146162870e15c8e638051ad7506408de49022e1428a2453249c8b7b15c1e1e55cb246090e39176d39e7e25c33bce8bae676bc6f77c0be03f6ef1ca50d1538942a1c6b6d0862fc1ead5a27fef6f2a58ffc719cd9d336520a2c59ca0c20933819a0749a517a912a227e922f5552155525180e5d4b8f6bf1da160f7254bbf7384e15a2881343c8f28796fd474ac0db73cf813648c9c30f9004f6211f887c1ef25f903be038630a9649d4a66ad9b24b49c0e1c87de52c378244d25e52d5257b772a55cec35b890621f93e0dd15a6badb5d64e4f4aaedb46dc6f922ee1728320486edb77dbb66d9b94dbec400ea4ad6dce6d4e54c93f927c8051f569d847e5340a95bd398ebee4699b735bd23e4044b2eee4cb0e58e143163700197179c1a50a2b74b08205136eb0722943edb500fb01a3053ab07e6022c8185a544065084e7228522b07ae5c8905a18758159869095ab2588293245d10c1da39db41105114d1042798e4200564f645cf154a68222528e58f47f70e40268513ba50828b275452fe9364892f546005079e6ddb46577e602d01450f530891f2278ac0250c16912955ec90f2c723514886da4d5c177aeffb3ccfe35e4fdc24fbbe28220b0f58557e666eb06ef090fdbb17cd7788c3518679c13460cb1910cbd30cd85de1029645123533ebee9733b30e0c7f66662998230c4c676a3333c72165ff199fa82366ff991fc7a14914fe0a86a61ccecc2418dec870661667b0e0ae71a56d10e08345ff7d38338b3839b0a8c3db81844c92d611a5883978645c32add6b93e0022ce423289aa41f2e4219a44e10fc542b150ac445304d7a090128d82016d0d92600d8a6090fc7a70241e606f147eff0fc5240a83333ae8933f3dd1506c060a39339b91d236fe3546e017588e8fc1298e78e508ce605b52b2bf6dd99628c797128698239ca18368ae250f9c81954439865b8ee3cc14114d334864ff7087911cca2cc9322e191e99961451874c121920a214af1c866a1d92c9937f68e6a11e4f613014932757e53014e3810c7ffc2a305318637066264f0e846766d9dfa59418cfcc666637582187d981c543f692a750e012ba3ea7ecdbcb8c2e658f5f0bd5da3a67a5a54ec592e7990f9610a4e4f0e60891f56f02aa02d452dbfb8c18e0b83d123f37d072811d19b114f71b5805074b72aae040851d5ba9fde569248122f860d1c40b09134a8628f10418b87a8083289a20d25fd3170ab060852a41113688c2e3a2010d944839ac5523e20a26c4c821e57f2351fdc5117c48820b1030c8a1966a40911911ae2574b1c511523eef9cd7c692676b37f0e6c60b9195394319fb8f6496c0b76ef1ebe6e45ea6b8edda8ab1e807114d94050a5c70f804485929bbe56bde3b4ba71bf94ac0f6def82fa25571bd92d9ec1567121589109911f948a46dc2f8722721812b2b5f22ad13494360e786b01f4622443016c73e3815f44efa0c712f53a357cf775b7757f214ed91a8d188f68c68cf88f68c46a3d1d679930399785b4ba646dcacfbe95e2aafcb9128af8b2f7cca893c9073ce7ba7947b848645c343adf5e57526513535b39ad956aba9d26a609589ca8f909bca185872ac3d8e1356268e13565996394e53e132c5715e4f1cc75fd9b1c8a197c32a933132691db73838e0b0ce6473c659673f5635ab3e5187df6057b5d6708ae05aab5b1c67562b97eca0040225904f9de580635eb97003bc8104df60619f93df2a5d90fd7d148151b28b4e02c1e45002d5c82e1a55af0001ddc001bb116de36f0120bd83935a6cc145fbd4993cb98f042b2d827506f3f3e5b086db2ebe75566915a8ceaa0fa5b4ceea8c86f53225465595357aa25010891285704480113ba6571a1e8d5e60800276b4ceb6835433a37574e798604893d4e0deab91c3d1684e17bc73617edf37e7d7719b6c0a8d16648bb2c844500d3e673745333fe09694f825af2b47e6c4992d709863adad350bc63c1188053ac86734f2d8e209a2b3d2597fde6dbb96c75543a7c2e19d9be469ce1a1b26b8ddf42d6bbd773665c24fb775ed096822a703735480e2c3518c3196bcebba8e7b8d5af0327bb1e22c16cbc462fd777172397cfaf5f8deb276e40b6460858b9410a9830d5250480f0073e80e059454e8af96b3bc0533ddbb6854f42fbc0972e5efa1238d22cdb8476992637e2381b1fb91a8b1b75aa7b64ef7fe1ea5513126631a83314fa28968852533b3c1d8f08b5f9ef529e4d0592990ecff90f134ff63f4314fa344f3334a311f49a4df91f91a323ea6347a99d20e941f313f03eecc7cccefc83ccd5f89b201ca8f9827bd0d34a00d507eccf8d1db40e3657c8db72106b461c68f9ef4118c41c6d33c10194f03ee40f941fa98dfa1f1354020a38f0177663c89a644e3634a335e4a1a33420fe490fea824a3d4f244533fa6d4a908248160700a3fc2581481640e90bc21fbdb985cc5f22c8b9b68fee326c7e2ac92cbe4c95fa6e4475288f24da4b39c0504c46a9d2eba811a28da18ad8d79998a017784a4626c4c696b9b96b39cf532e386bc38cd1318c360b0d78c31681e9e39a7b5132651d3f18c47b44e18918a1b342a27f41db287be82ec611c638404bc45bee2fb30ea207b1f462878aac0e1080544721ea74429b0fc548f5a688a602012951331b8816164c5558eaaecdd411f185e0f8ca70e8ce104ef08e6feb5b0453b8329889b5c861ae0308707954a29a54b0a0c560bf96008b4aaa25d62087ac88f4fca8094946ea06db604c90193e88724da5c40d5a12805f4c97fdbc21da4ec240aeef05cba82c3a6d198529e8254156562cb1656dc1cf7e2dc1b1fa068e9c195430ec6480d59c28a105c7001820ac02092f26fffeb7ffb6edbbdf7b64dcb4d3c42749287ea75b2966e24ca036536461965ade3ee9d9451b6e326d8116e72e130d268d82cd1e2389116b3d0dc80b7681d241865f961e422cb5a470a1d518bf844eb4422c4fe6078c9b20363163f398d86123874200f729c30c2f216c701d2e23835c7a130898a341a2cc67680c39b189afb9335f9eb01862ea594b2dba6d2dab57685a13e4d0a702cd1e45a9289304cc0e14d053cb0a53c5520d2684037ad533f47d976d3ddc892c8e291cefe059239449ac768add3c4a572f3956ac170f4b9b0d5ca551b5badad6f3f6b294bb6786834160c96ee87e613937244b758b52d33f40b5dd336b755918bac42860c79b1cbe5baaed7cd8dc9f43f1a614caae159fa1a6621c93c5a078646dd20fae4df24bbc3a84ba26e6e4cd7e532c514059fa0810c9c480941a10860a43e2a9c90922693cb715eadd3a45141e4c9ff46c149646f22fbcb20c1e175455587df86eebd173dfe0a881ef3f0eb6a1bf7ba0f9b865ff440bcef3eaabc5254853e3e06af2bac2a520d4730bc526ecc85e42ba3140c5f4a2925f8811a8a954a4e7292fb80fdd835140eb960289f860aabdfc592addeeeee5d23cc4d6e2b18cb32155712d57de81ddca16050418518aac86acd2ca1520c0eb07f2094f8a94e9ab2602f77048904a149da28779dcb55876c0e0386d7bc10b58dd1466e8b92b3f6f6b5d6dacbc35dca6bbb678c44a3156480c39ee518cdb0f8749ee32687aca78bd147edc5881635a9020d879e0c4f1453136d4829e59c1d3bca392795e2f29c00c382e141fa4ca29aa652a98448fdf8152b683e63838771dffdf65cc94717e5cf7ce62687b9cc7b645813dd64adb5763683d9ac04e1ff5fa23cefbdf76450fa42ce9b22283f49e93f115d177ba56d197ee1ca645890c7152cabd6d6dbc2aa25c42e1dd4411d54430dd2a54b972e5dfe67598344794abaf491474aa9055a0ba01b206de36f0304ee1fe57e82bbfb5b8cf5c438cbd131c127e0484e0a7262ac602016a0bf6d2f2fa4488a209408aa6e5c8135f0701821bc5a4ba5a4f276500daa0ecb9c4d2b2dd305d3afe993ffbd18cb1a5a12705893e5bcdbb710fba3a147f72dc41c7d071c76adbefcb026d36a1ee43407a2d1dce4b5a88a2b10d4403323050e6b5ee07cfc00e2a6201bf00018d64ca95e9c31ce393db045a3cdd90d820d7e7a884421a5462422f48540cf85d67129a594b6a99594058760a8c0918806be3d03ada33b47a4df3ab5678b2b9f28a8a44dd725b5758a4600000248b3140000200c0a8603229158482e9645393d14800c718046745c3816c883490ec4280832c4180089010400408000293335b40100d688641f47bcd21826546ccab075a1a8e40fc70265770515f872359336cdd01c4069ec4512aa6d6c9d8a2fe940a17ecef8b88f24e73888aa5a24f84882a84692489607e5a92705158de306af000358f94eef8037ac760cdab4ea0b9303d82c68f994a4ce9026c3534814d8bcd0632394651a9c15e4773e0e76d863a1f6fa40427bd0feb955288e2f4129ced8f99e55c654e8cea9c3398e9b7175b3f08741a35947f3319cb03ced39d26209ed2a5373b90fb47f46eb79c4f82b89c48813c0534200edbb5ba0e354d505de83213eb90dd4381dfeca8a305a3185f5ae37a595780d4f5976c372c2a5e85c33f717a3e530ed7ef514a9b609c56f270f4cb9c909b6630b6a148c5b17a8e9989a410fd3072bf135e8919a5490a075acb95b41803674ce6c29f1097ea3299df8217baf260d87221483947083f36f59bb5f56072ad780b5ce0286bc067481e51777e485f89d3b9885231b70b51eb28b43e9f1d73460707f2375cb40432d07381b5e500b9004ab20e41c4bbd71c3b5f0948eb01c487d173e0d3590c167b31d09612f3a41ce37bada04dd82a7cf26359fa1b354931b378e347efd7770f0464f03d0f36a14a64951b529c4af6b7dad80d7db2fe51db636beafdb62f23bc9dc58e542ed9601f626f9cab44b23e7004178f7ed87652e4840a779c03b41e4e5862d89de647cace1fc23993553b173047092be24b4b4c3b88072c01923c3c540fa1108566432f9d0b540843de44a893d818027dbe44deb39f69164761e45529b4c327cdb905b3e711aafcd5b6d2298110b73002d6cb15fc5b40a766eb8c3c2a1ec811faf3127fe9d8a4e7e7cda067b28d7f8d28cc78167a5f84ef4b913112abddee2184b99a5cf4cbcff73290ce1206fc2b399af441e77e709dcc439584153b32ea0f24b655b7c579958836853d8ea4bb5728a60842b7a9044de041169f0e11d0c81669841f9302cc31473090855cc9a0a94d149aff24f0dc1be3ce582e1e8bb0c2fb02499bf19a7a48ca794f4195fa1923f36e90f817fe442c45e5cf8b14a4b69618358cb6688c960d0a18f7a9d088c968e059208b570dbb8cc56f4d6d1894a712ad1d54a6f1ba29f99e7aa63d28a2cdb754d180815996955d1add38e291f516c7980c60bba490c015d1e52af1082a356b92f228264128bf33698b00251ded7fa4b78cbfb1bf0007ca1339b82e0812655b7ba5a01c7f14d8033570ac20f25ec59e6bd8f41390d5c918321796590de27a2f72ce0ba2183c06ac310c80a4d2c1363b3c69783c741299b4b2a32e6b3d27f77a7e9879a9aefebe08e445f4b6fd3c326e342f8b4e7436afc39e60a2502416567f3f0d922cd12afbca64fce52e2eedbef851746e24cd2d92367bd2018a3f8eb4177caf23a3685ecca07179b0e2779baa8d05f6a0026a9e19395732ae811b3eae3df3086d3662e90ff19a58c44114850a6f2b7917e91ff5c763244d983af00750dd93c582de5161a933ad14f44cb54c73f8934d3bfab484625573e191d85c2a78a7d3a7cc991ead503853329dc6c60777db4ff2176019f95f01bb1865994cf0ebbc889c5ef2a079db676b1d857e736bb810ef929ad607ba33c48539d9f9b4915b9d5d4e7b424c2549afae460f37938e8245189d8881f4a1b7e3f7ab34efe09f94e403fa02139b6dafdb5a03d3e19535a8d6afa4f588e45b780acf615fde77a73c4e93a9fd2fe6fb802bbec759cca4859609bd035c15556deeb8c60d9e7600b3b9903d0693be27d5356d1a11bc9d1468d559c843fbd53e00c04033c253ea97d2bb6473a50685a3e91a8145347e0e5a6368ac60b1a1abbb278108d6d2453b84496235b07ab788a64bcefd24071189b312019618b18711b93e0a9064c327c2af049ddb845282695ba6344e612744af88e12d2b520fb388e0c44f26066fa81b8a410077849baa3836b7165a248090819069fa37f0eb0df6bf39fc94d311a8fe35c40e9943d108c39b1f8d90e753219ef567662e5c138164d935c5740b81b15a15e8d0f934cfc7bb347b39cd40f4305603d10e143b023009ce32eeb8779a68b7c28795a4422af7c2ade61d02c48777f8908876b6af88d36beef580d523978b34ad114a205846595704d75112cf03cc91267038ba05b0323208fcc83481834bccc8320e69e62d27e6381c5c9b5230c6188f2ca811ca1e262edf937485928ecd556bec2f6e2aa213298efb33ae2b93f64166bf2ca8612882308bcec3a56702292353c471bb9aecd489361f250816446782e3e344a5fdc39b38b58cf54405eb0e40f814714de57c124bfaa5b22c81ebb0110b084469d0f374b8f7c84d3f3c4cc7375c143a98a0ad931278f6b984233b517539d15bf992e21068f8b94488aa924030161355afde2b2f778181ac49652a4a49ce191d188708efb3435d71215a95995e51eaff4ee420071a8ec4b3fff48e95617483f45a921a6718e9a83d5b0084e14a403141f92f86244ae54b064eb2fdfacacacf5a7227c9522446ccf6b13969c0344e4b208d322cdb0d8fbbcb64af2ba80f430f64708a344e342a9bb7b884a81618fcc60dde9b2514943659de373f426c75ec4d337a9b68a1ce57bd3d1381b835774a0ad92d061d12531a4a90f19229f1443bdd01a03e923e85decaccec5bead33dcfd6b8b3a0a09cebd5ade4fb1f5ea80d68916617df67f94ad1a9e6f8fde251208f4e788e3c82c184b88d08a75fd1ed2580708fc4581d7be87e2ff9fc66436be4573a51301a14234c05c6a827f05d010d43b506215e6b8e2f472c35a58792489892602a16782380b268b45fc9f71d4ed213bf295e3e1660f6bbda389614f4d72ddbf1aaf7a3b2ed65b53498e575d2cb17db6d3f04a445e597beb4c5663c3ed2b2ab18173ce831d7f9995f4616239f8b113a61d13cab45b6b6e6f042ba0efdb4dd315f49f072260e0aa6b46717b3984594e181409d48e06ead633a2cba1800ab734c1208a798fb2c853d5266e6d02c621e62f58bebe25470d68feee9b7bbd89a29fd465713042c223061fc736acc6d329886a6e06e4c9f556033f17220821bdf3597ac639c83a6162d5225ab6402e71ecac874221040269c0bce25666786d29801576a52cd3bab5c19006b716d166ce9cf92e30740d82d49b0d8aea731738553b97afaa97ef39fb14ba08824eec8b3d88e9f21b39ad3780c875c3ff654b64d60fbf87431a80db87fff918b60bfa709080cd22c771df7a985d96b2e5025c04699e8959d91d5fdee18241bcc7d548d8699452f74e8314b062ec8ca50fbdc77b6b9c47ec642461587aacc2c912dca872cd4ccd1c7a91cccc5be0c8c9826c9dac57545685b7922e8bc33d590ca145234b45a6522d3f60e369c0295508a84e5e09dfd169cc56dbaad13ce5d09c80628c78ddeeb964111178e9920b8975612ddb44dc8b9bef9e4f7abb357e66ddcf7336c963390c189ab5ccddc86a8612cc97bf1acb91745c3b41976e8268751ad627f33947ba0ac2d1c08c77d65f72a28ec45c82615bd5f9aa339937aad951ce0c0903d4e0e94a0022f3c24536c49041036603e2316f2e80635eaf6edc8d7a5853b8b8a121180cd97acb32ce297425f7a3823a39ffb52c8ec5120a6f8f1bad907491fcabdcac761b99340d167351636888c5967f2ac38235cddee24923e1b8f1b08e4b58102f4dc2dee028c10390c92f6c022fe130d7d78d500dfce71ca001506167a0f48f0b8a21502c3b0038933bac40ac41fe2b90e8ed15944e7ec1adf1e50250368882bec25c835b0ee69675f7837786774ae0790c0f36f08326112fdc5dc4e77e252310d776de7f6f1f7b039b644b9f2e30bb4159cf2bab1418e05800eea487f146611611527d285f0b1bc11585d4c90625bfbc9f85ecbf05fbf50cd069bfd319202bedd47e5fae40abf2b3d8d52eb9e5935e5419fff92b7afa98de79a3b8adf422c05764d4f3682799caa088b820de2457742812656994556fe6131c50b4c7743cc30d0c0ab657314f0aa65e1ce1cb27707cce9e6411860b3a6393bdfcac561736c1e201d300b3c734972e7fc037afde6ce4358b793e91d58782900a258172f22b058cc4b2d0aa4b68688d7449477435b6603e2b57003a210688024c2bd3d85847c5b70b6a7835a6117787c75cfe2d74a4fde455dcccab22c0985f3c63432ca8c5559c975c336512dd2d209683c2707cd0cf16b726306accc60ef6fde709b265806b53435f894e224a8855c970c32b011c97605fbc24a21cab18f0263c6b14de5a0ae5262211021072d4c956e1fcf3745ec577f6a94367c2e51c49a4ba49b5ffc266d1c28f2522602aaa6197ccd41f637c356038f5ab036ce4525107d5bdb5dd39b7851e7ec21a804fe359120f958aec48d8b7bce57f145c33975b7c45471c9a4c3844f6acd9a8aacac254d6367ad6827dd29bc8fce414fe40d193df5171046ce82f8ac06cf62e489c99685410efa245e8cbeeed9021441e6fc322fa77559f567d01b3957f436764c75ca6f5334b151860421c6c5c23ebc1c6ecbe0aedd1c9fcc692c0e3b26107e654c49b983c1dae1c358a83b48d346e22dd9626c44d659da1bb5d30ded39d2f4adff0c4417073c9c2701096302ca5d87a0928caa05fbed61e3770a3ea5f8771b19e09c90d27211ddd494cb89474de065412fb280487665e911c85a014766239b96d104429d9e269cb163ed1ea6a6bf6e049cecf20f0cf3318fa1fdc34136ad1d7edf41f1246ed512c29c476a6bc5b4e57e32a160d13e16191c7455dcae89be16327750939918bb4889c297a71d74202b59ddf4107cc08088898db44471757681c1b811aa9b10d1c31677c5f799681ba26449f77a8b62c9ac04f7234d3e9fd12f341ab7ee46ba2aae34ba28c0888a30016f00870d63c6dd866560d5f2b48f1b99477daa210573e64a16334c7edba8fd4ed8c8acfaf056250e0578f51d049f206909e128fb3bc6d6d64d33711dfea90a717fe79c8d80e1e5fe97802f50e9745c3bf6d04b5252bbcc2bf72672bbec909cf52f8a008003136f07cc273f51fb55a0a870f4be318aa72bb18ede2ef44f68cd4b876f8d63ea0d8baed012c0972396a6862c87b04a9982b7d5e3bf48e10f4dc0a8d6fc07ece1c690a0f66c23b6fcbba495845654bbcee635dc96b41c66028c327c290575de131145b240b4ab7557dd3a54590f3b9343cc3ce84009873188908fa4b43caf240d2f3d204c155fc10021ef72265e613607bf8507b529c13b14dd7fd52f2e5853cf27a314384030bec71985069820b5216355ec061a3aa884a85ca454dfbf55c925d61840bda63e294314910085d677c14f933d922397e999d98c6315224ad8ee47a16ad0cfebff0bd74706299187546e9c4aec563123c5d69e357e7a9671b38d2c654f428b6a6a148b0e93c285759b1dacb88e5972b4d0a9a635bde211de3ebe444eb0a2763e7c8d19ccdbce9a7577a4b53fc1be40433ec23d481da24c6d3369ab34be671ab7f86ffb246b6810abaf6d6872729199b1213f21fdba4854c4fffb38507124851437f82b2d58f7a4d1ad0412621e5377d420ad070d853d823508beef3b1ea9f4730ceff30da57dacdfc3c4c3030fc5a9b9983da21f48890a9cc9b21866a482763fbb0bcdeae7ae3bbba26a5259ca6c08870ebc4f3d71721dba03ee07995f3fc6c6e4e06636de8e79866fb8af308a7f1b445396894354f23c34690878f52ca5c41bcdcddddc81a7f57651f2c161c8964484b37a26de3354ccbc02d0e0960714fdd3064f9626cce14dd8a23cb03f76e9d729cdc2d164c93e4c8631de5b008ea536b96e465e0a721a22e8528daaa2f1f3da0b353425f59f8c779a09781da84539eb642bf446e9fc27043366a73fa9b1f0586ba991283c0d43f36d8510445cef97438fa26c2f606954f231e63d93ecb06648e3eade6108a4834b13c047a1d5b8367f268d7db14381f9ac55aadfa95ef728d4292b7ce17ed3140ffe1132177e59cde7d05f67bc3750ecfcd85bf22509de4fe6fd346ee2d3cfa99d196a2c768e6e9a62f13c225ebe0aefffe26bb3e6f06ab0eade9a1fbbd6688aebfde0cb7f3b48b094431c03a75fdce5f4cd5dc61c76b963dce72fc16ba82cf69659d30302a32705450d7e4c3710a0e756c816bdec780dbb56e747cece6f9ab7bfbf4cde77dba4eca72cd4ab94c2cf278ff05454a900317799f23d0e97dcb2a26f6bc21aee204b23977db649a4d6730a9e720bbe103491126ee72868893262ac452d236c1cd53af46d267faafd5811d2a004a4f51e3e2203d5998921c59badaa7e865dfb6f50e8ff5e613a6f1eb000b06a7b0e282afb0136315fb54284dbe72d4c0091f3e239c49451a9884afc2d7b792480e9478b075bf21f76654f752918c01d9a5b9255bffaee98264f22eb7d15b91e2262e5ceb941bbba6ecc76e8d580a04a1434a95827ad2e00dba321d7829b6b42be123213a4c651e3484b5a701b29d84110cd20512a9de8e0e6516b192f9302f460b6e609d1fed27b90d20ec8c3412a2d1534fcbc41a0c764626472ef9468b8ccee473c11571a3feeb54d43665dff34433e375d6337e605b9762d5200025d4e5afbe76108d361167d5f830320ca325d8c89de0e101e588a4f21dbdf35a61afacaf2c8fe0f020b131f4fb28a88697d52679800c64f34761e5cc3b03c30fe0da15b12379cff15dc7a602a912e1952a1dc154299c53258294a0cb824fcb494be923522db6849990998b220c8832997feb10aa0da6cca0bdf369db6d0c674e8c7bb90a89411cb2217ff8fc6e44c13e31941762d6cb1e58c80e549ccfe3662569e2b729b58235abc658747bd9cdb6cc5cf27e21871ad63f4917f75b7d050265c54904a17cf4b337c06ea40f1767d3168246f131b0dfdd88a79cddfe09cbb1ee7ed428fea281b8d9c7ea2016d988ca008b273e3882a8bafaaa3c8843304f315021a2d423c386bd4144efb823862325774fc60426c10633f78f7aff77b278258838431fe020583a823d13465aef2cfb3aec561e4e2c21364cad9639a316eccfbc75f3d46f8a7b0613d367eede409c9cf4ad06f1d20e5a757f827527db092d255b3811ea240feb85e63abb86264325d34a7786a613cc13335ba40e8b86934e95f78a4f949fbdcdfdae182f225ab3c5787e45f7d1b46c347dc866bf237061d5c105816612e5ea3ed07840ff11368c28ee80b340b17429aef3ca64e647245a97c889cf51f60519449fc617cea311fb92e5cd64a6bff03d70785bb6efca340c6f15d912b93f2a5c960a7a5362cef8464569277bb1134efd42fa67e0e0c4e3e36272f79879e520a7663b03e1758ce4d1938bd17003af7725fe2b21315d242a543fa2d29232b5383ca260e78e5714cc4c43837ddd35e71175c9cecfe38c037d74e4cff607ddc1e4362f879a5069c2ab147e8888c4c8c25318bd76b24d1b5839b484c1a4b446d08ff3290292029e56f114a4a6f00cc5bca94ce4b162e8051bc71d37c8e6f67516b5f19214deac66d24402e59e33619a8cbece4b81651ebf2feda1e2ff9df438d93c0a41945120c536de9bce40b186c9c59af855ea8c7f1860f86f627cf6e8ac5d702ef34653bd30edb2f4017dfb3f0aa5e3983729652b159ba9c406d9cf5a1194047bbf62a795b9ce36bf68d336f005b6c9343c7947c1f31b7bbf3db979b1dac18a2a833e84ed431265fbe4ce7e94894257b5363d90a08afe8237ead1656c7fe28e7756f2812db4f39598f66a5a6842247fe00e14262c72194106f9f4714bb4f0367b9e9a06e99521921866e126c10498ba6a0992be6c42539b5bab5d462273b96aebf0c424d8bd839f8346e677c9597d2f15b5f342e9a3e371d4e4a27b559ba69a1ad12e797c52a8d06a79a89ce3c45ec3218b75679bb16ce1a201478cac04038839d4d9a18fa3996deef98a0eca2f042c9fc6c3eb18ae752aca0c7a57d7a9a849f4528e73d95e0979ee8eede93d6885aa5fca332392df00983d1a3c34281a005bb229246dc776b6d0cf5be9bdca415a16a48b4ff5e32520f4bc08c045e0777ad675f4cabc32b279181dc196330d570f8d534bc2cb242cb9c4ced58947dc957125b93de256f88b15103262fbcf71968aed0b29d7a684090fdb68382c1d4ee37ce8f0fbcf1e46d56c9948f287452477e2744d002522008147643465d08f55f8f0b835ff173d51a73bdbd8fdd9398a4b38151b566ade04a4ad25ad3e407579fd6372cd1d52c6368389c9671aff9ad7b459b8c3c226ceb36a0d313f04eda0e303452fd70667f3c31991fd10f0f0cb139e59c7c33d222209ee5583e920844e0b093177f642cc38c1fc8622f7ccc86d37b41e1ad9c73778f393220cca5371eb690116c6a995bbe65711b0c278f0a20497cfebd34719a903d64947b7edfe717b04b92d88f98fbf97ae58c35760ff88faa918cb922e3d2f64d3db176f9cbfba579fde38df7cf5aa6675c8e039e0b51d01a5f0d508649e2d3c01f7e4fa61ea049f70a053a6891ce88281a5b9ca3c5d0e2aa8d6dae142cdd121dfbfed072dd0ad92354c162c7d95634ea3f24081c9723124dbc9b40278a475117503c88c9297045e76d5b374b4cf3e8d2449c6e5bfb136ccf60723ebaac162c1f60583239e48ce08af76b34fd0979906f3cb4c645a8b042392fb7986003d1dfdc331252ed3f7b8e27bd5944e4c1a0093d7a84b8c8e600c8fb7381d009d06374770a930d55c7fc38b4a7138f9153dc801458c26fe0c30e91ba400839484f73f53ce391401fb44a880e6a8a681d0d225040307da4fd27bcaa72d47d9edbed3bf5e66332e8e411b104df2ca0de895eef674a8c05125e8e51ac6c8c485881a6ec0180a78ed0aa8d16fe1014de8ca714c52d424cba4c0b3b279845e10c0867d14cd742ee89ac125b078ece78c6dc62f3f8fe16688d5ef77a20e33fdc21a5effb6fd181798ffb285d20b19af70091507e23dbbce4bb92339fad8ec89743539576603da2bfc84be05097b18b7517d45b5e9ac027a1e12ddb4bba17639762ecc91998fb088418184fd875752e1dbe33416c73d003fe75723a4b64e069d46d57e9f46b4a81ec7c4c8ed19f017bad320407306f74e78177fee8a78490ca4c66cbe598d28fd75821ac341ef9a0b20413a787d2dc9abcf103370894ad864ca610ec3f3fd312ed91435f6999416430db1f24201416e26c9c1568b62daade78588856e3ce2fe3de78e3a6931539e3a894b91849d3b819f821f230f0a6a72972775adaa36818fa040129549ed502448e3e5fd2b644d8041e7fefa2ef3e769102f5cbe20fe84605d452a970c19fb9f161c349b4caed4db91944308c1eb84e31ed9e59fd9df479b91fb1b100ff6ab71a978ca5597fbe29f41377ec4098b5e6d9fbe753badb0ddadc6251722c4a56c761175ce582a2beb707c14986cb61abd1752f5339dcd3b32be5eb4bd4498f124439a77e333093168c64a26981d7da72ed46ad6c60b3ccd190d9db5f264e315630e2c0f1b11e811f31d442564139b1479e8d7eec48c70902b5784f423d59e03fcd963606549bbb7d2bd065550dadfa28565326bb01bbded3c44db465232c525be3210eec93ae4864dd36ca24e837c89e12bf0441ff828574358dcef536c7bf8f0f77529abc90deced0a46310e1507b80fd22e0d46ae25f8773a66361d036f3a686ef4d1b79f246746306707776e6f30a19151670a206c7b1dd99bc074f55310e4b25ef963a711bfc546ca5c8d949ca93c045cac4eaeb8fb619a8360e91bd5550462dd5621e3af1871af40250f93055aa3b064fe56c9ae25324e4128dbd30d1bd24b4ad1efd2e90bc53ba90dbe0e894e77026af546ed5d7de087f0fcf39710ca9c51ff8990a9567532ecc905622abf75e2a44494b7d788d3614ba0360da9a7313fb06c9202d5f36a2697bb628c1dc280d0a5f90125a9dc6ef7b1dc954b05691e33e020fd643bf8332bbafd4f602eaf68815ec7acb37728627d339c478346cc7bd53d9ad1cc487e27ccf11c24a6ba398219ae5ed3bf7da3c8f68c0040184b46f8ba20b41277e0592c37037075202b37bdaa3ca0886f3688c0c89e7e14c77253bd5c7ba380283a43e51d6184615120196527c9cfaba4b97c5f789bb5f143d19a15ca97e253b98ab70a2f616d7cf84692a73396e8762a3360c291a087f254d6015b48b225973123caeaac90f22161a8f006d43207c03c2b1e8f3361c4d6457004296c1cf89a474d7a271dd856b28beb449b040331aaa8e337ddc922716e7c51ea177015d56bc6d2ae3cac952b025464acc398cb0701ceb4d5e4f1a5a0a0f4ef51686034ed49ced0270b66865c9742f8d30e3154a1817e2f30b6e9266e6f39db00e0955e8e282db33a3ce3681d908f52734a9df924234020fd87faa8ef81789649400e16e82a993e7d983fe4397e4f0e8207f64a3fd4bb12cb11f9451a884b7ac548450ab0c34c6c859a64392c0e4728b48f4c8626fd307e3005c4c28f4d80e518bb17f64f4e4fdce48804299b066a5eb12dd15c959ac93f8983c6bec5d07116d642469edf16d401ada8ad015604ef8520966551edc4108e1f91c3115632edf254213e732c31f992e01b4b2f55d4f3c3f8d92cb1298bef25861038b1a7fd117aad5686df02c88b6a46bf51e23f42bc66d58300bb13dcc934cc04182cb20f505b737c1c2d0fb73df0c795a1d9260bf88739937405d5ed460e051da10ad722a98fb9821f6022c5d8b94f49f46e5eec0c8e82e9ee244e35fdd957d9eba441efa6e978cfaeb7e51f350bf15c4cb1aa57eeddfebb46bb5e156496f681b273312f20e7754bb5bc9e5d1caa74da630515461673a834ae574ce96f7615462651be17e026788d1f9129dc4711dccd849fd107b24835c5d6ca1c67154ea6f7e5137e3a8ce2a7e1deec25e6f82dab9a84970536f2b54fec906eb8d408362f5e0674c3dc2c7b7abd993e032fbcf3d096f9cfbb0e3a2844065aa1ad76071f5d04dcbb7fc983917871ec58e5632e01fcb6b4a3049d2d51d89fec00eccf177841d90b72e9e0fd9efb8dc7147df70419d9fbb0002518714144add4950a9040532ab222fcf903c0e70f2f7e7f91a55d0d6c99f441077561c67dedc5d27c5404cdc439c4da3b4544a042a04c91c145914b2ddba8861c25ac3027639af181edb7a5e96cbdba507392f439134ba936ea1f77173244126aa0586aaa8d6e05ad1551a769c7f9ec09e6f8687eb4a469f6675ead15d8a1df2ce8b44d43b5d4dc6c3abcf061b1c68e1368794b39d396f2e26d731092062a1e01830771e46d4b718a72bcb18aa6bab13689438db2f49fc95f90c1e4c6c63b17c01237b660b9405f241ef2a03dba96318b4e9608b0fd78b2c9955f2cf61b69594739e39e8dc904daa6264453bdbc2864728c3b7cf705fae7aff4eae31be7e2f6a8c52bc25218b533a0ac58f3d175baef3c23fd88acc030a3e20f91f8b2a7f85a1bd620540e40261ab5e2f4337a2e9c30e1a861876cf0c14e1c110b0b5ecddbe4d38552e90800cd65a9eda4c0f3aed860866c6a59dce7753372108d88ee75e99f4c70bcc1a746bd82cddd6d74fe985d78aaea4a01c1824847ec7bd49ae93e89e35b618ffd89371bc3585cc97f3fc90a69a4237efc4c2d44bd5d08c12291a7867374b129e340fa79e6f7a94cabeca2aa98e16a7bdfdaa251b337b9acca3dbb375c2f6a41088288e8b26d56beca5c309bb4ce9e95c8952995f996688f6cbc037535d80249b3b3b73afe245d71351bcbec1360dd0b524ca9941023f82037ce005d1fd098bc4b03a26bdbf4d0bc0a00761d9e220b033bd40023e29656bc2f828e4546d94c105321967479c7b41203cbd07a5fbb67f06c4b160a5a1b4835e0f96c6ee72d8bddf8ba459e630d0eaa3994c035537a35f41ce20b1e099053c1c24ae6480115e5f9397996a3d5f6325c0300c1cfc7f633427a01c1d8f0db0f0d614096c168af85bac6ff6f5aa68cb83009225139c1a199d62fe6fb19a06d016c7b030f3e60e3f0ccf5d947a133d1d731a7c1f63735b22c67085744dfc9223d5e705eac1df42346e2ecc495ee249572c821e3de0bab4f551ca7e92297e7eac6ea4f9e6820a82122d053d7ff068ac6e88254ca4db6f68b088fbe30dc843a45bddd3e5732a4d4288efed41422a347fcf4e8576818ef1c91001cdcd0bc4c03ea47061f7411c39c169b8f239e129457b7a095ab0daef12f791264a8ef44cafe967633b9eb1f6618e0a22fc725fba4addbffe71032bd333ba130e89d19b95a2a2efaba7d5797897f5507f13f0c421843017095829e8407170621dcc85d4927fd5041f69c0e0832896c6f08b41a14b1fcc199b37729115026d41426b2aac2a9045d4eebd3aadb9cee94c86d44ad4466afc881060d9e0d91c02ca953f52564c94b81070c10bb94cc4825a672ed7bf4ce899e850f37d6ed82e03f2645d01c04897ded0e271b2f72426d474b90b5f150c57158d162699c33020146f0e4604514ddef7daa0d28918c80d301889c4d70a979a15c51612283b8de293ef5283bbdc1a311d92f5beadb7b302a4aab1bfdda8e8ac8370337dde7c7ba17cd224cedd7e63107b3777bf704b94974ee710c4701d107bfc503496e0ed125ef8f81440cdc0f16786ed165a7b9baf59f5e3a0295e4403e1cfa620ccb23329bb764cc7efe4578bb0157f568792b876f7080b1a0e792b2b34904807a453c7c61d2bd6f117da1a2c7545bf9ffeddeba528289e1ec21c2c991c9b81def7cdd69130d44c092874022a67614a0774cca98b671b1fe5b6430654c03cf54110ca75efbf08ca75ffabd6831120bbc2dfd46b74e8b0e4276a4d8a12753734bd29c027d038211aa1ca8f96907ab33131da0bee071f8b07b8e68d7f41dabc615ab8362da4b77078c65a3e41386bade378936706a0b0cad2d9560de02030ae6f01a5a715b60b00628de7314a0ec3841c83d5ca4b550aa85bd1eca8011498c0ff4b87871a60872b07e521484bc34335546c23a529e6c8f1c2f274c9a9847bff3a8059271248a39a0cd8a0e6f6fd409b8bee15489dcf02c126bd1622545b1389efca129fef2525f201d3b33e3d86b51513608d08e9d2897ed685296eb71697ce8bd18a4eb1da98f94e03417d4d815f3e0d83f6eb35aa7976aa9a08945cfaa21cca2f20184a434bdd1999405d83a6d9254f915cd6e47be0f587259342678d29987966501b3f3e89951fbcb2d83a90d90cbfd54daf3840b29c791e1833300c6402d5bc44db09620e750bb5eaf64320a768c3701904a1a09eb0a9ca34e8eca3d455314097895a86967e8b3b701a859843b4404f76900ba411bba07f33a2b8798bc15b0340c4dd3086bcef9189abe8891e338c462a1673e940880ba2dddf9daa3851bb85262b4c06efef9aee82198592f24dcd25111f07512b05d27ba4f8822e3ce4d1fffabe84f75fc5de1756e7a0ccd0146f42c824925a47343ff86e8ca65c793725f18adf1d7226852ed156702715bdb6470ace08869a07a9c085a605139af7f98012bb94f2d0d5f27ce0436ba8e3dd3205d711b3140e38434e8649e28f0e8c38831f20813ab5309ebb50a6e1b45b6807a0753697881180c189dd15751974f0b581f631e15e7bf38427305ba7002fb79fe912298e4129203c047d2b7033f8def1158a77b355d87245f8fcea097252cdfe7eeffbb84d58e4785cc4fcbada26ecb44bcc5d51b626a9b0094a37aa4ce32ff2c5f2ad5d56764670cf40894db010360d32b898912a4d541a71c42b6903a8d370b17e7ca12913a3f9a06ff930681d54b718213fde900c5f871071f92e4b96f6a9fe76f9f6630e56c01086e3e0e3d1365f65f9fc99287cb855092a8e061af0719106ca03dc0232e491803a89f2ac1c8d0f40308bfd125e70099754b5f0685b8461987913c4ec9d1844eff61c7c2a96e0aa4143998dcd132d0adb0a3a440e60a1ad40e44efffb01601fbcdeb532cb48d71d66e0706d064820c4b2218567863272a3268dbeb3888143d94ee6ffc5ad648456205bce5aee57ca39dae8fd48003423380a83b2508658281534596e045c08900a7676c42c6a556b08338b8a9511225de887410f61b0b49e3c6d6a987d92ecdeb04160f6a1aff25b62cdf2fd9fe91579d65e36d19b3fcd3b641a907b20e7026c686a0a71776f0e105dc13e927e2396d725422b3a29b6e21147246194befcdabf90dddc51acbfbcc889bf02f53fc434bc0820b8511211fe5c5d8d1b2afc82bae611dc830a09526baccdaa7b0d274cce381ae1f4f245d356b596e74719d7aded4473105a34b9353483be76db5bd2897b091d20d98cc9d9c227fda2b0862fd23d2db863ad6011980e89ce7aaa0395dd4643a7bc600e054db8f9ea98c6529210b9097731cd8843c1166dc4bf4470e625150718b38eba91dd4e335d095658dc13a7480186b8760c98ed78d6037f8383abb8b2c39fde64cb2d2318ffc8c8c8c9257043056cd9865381f8c59594843dcd916021c9740787636e0275c015278044e92e5f3fa4ae2e710d66a382461ccbbb817faadc2e706c3be9117fe2602a7f840723b9f419ca809e71157ef7e0a7136b5f8308a07c4663f59f64bf075fe0f5ba60b861733820aaed563ef935a4d1c3cb473ba3243553c7bc588a6b3cc6a3275186b39a24b1c9fd3723ff9b5a0b20b208e99b915888579cef5eead5e4da33f1b26e826fddd5adcad7128352b1697fe3df7097b3dd5992b4e6552d9a979091fe84b7f2bdb2331db362afdebce4985fa14470ea29f00df639d19f8372dc0d3b298c7512b1677815e2096a5d05d4df9672bb13b96dda81e2033f2a9d14eb8820e88610bda15b2a9e1d1be360939b0747ca10ceb725d46bc83c04c523103ddccbd04d81b9e68829d04d70851a2f83c2f2dac16e04f29b0254d93bfd93bd79be4922075a1c338bb16e2d326353f0fb90915da7adcd8238abff15b9657706b6a110ce66f0b41c41eb140716f279764813bea80c11b56908c8f2d05f274a26b1e5a9a2c16ee130a832a7cfe4d7fb56a522e905a25c18f2c4e46f3d259fd8758d71d8f81c771ca906381a00873fad7126e9fa51e6bebe22b6c6a59f0e040323e3f7858b40e2a587dffbe3b944d50beabde1f77977126c37e42952a3929442941d82dda8050a03541ab980e516c55382556ed0157c462112a74a0d52d184a2f3a3ad21c29ddc2ddf4e1fa088d60a10ea4a912d52065457dd4e9aa3bc0eaee8f9c59b52bb1e75b37f0d16d7b993c0d26a1c4b3198c3d94dbb91a3cfb672f5c830796161422422900103afe34379d159b35c1efc11e6ed54a122b0278bbe532a5a4ed269dfbbd2b8fd489047066417775e521210bb260dd2c2c6fba9f11762ecc0c3e7c0f80f8aa9418b0f1b9bcbbb4e0289b57a606cc10cc23b46c1bf1783513ad73c2d97e809bac4d00e341b296df1405b2a84b9bf09885e0b5277c40e8ecb3f20ab23dd240b60a641b893f298466c8513ca7a7f7e17e4a63096ca28604c55febffe6324473a9788a1475723b0172ff81ab0ad220d4714749ac844e4383e177525156338736881d83fa76a56263ce655dce8408beb78f63d2832f80a1c5c5c2f00db5dd03745ae10604037e5bc3b23586ee8553636599e743d28a33ac8ecc03a071af5cfb35de8aed732134395bfa6264d97a2fd418b15f139a955baa38b42fca0c27ce158b19feb308995d2610d752aa603e582b8d80cd65545eb90e69813694edc5c96c6e0698bd57169fc0508772628e31d1f73451d2112df135e093f8e46439d6bdf5421080c1424e7963353ea1d6dd882ca51179b6a05064b5b51681d5d349bb27eb4571d12aba2257594bd8f0a9d894f08d344b8d2a24a4a69c2a6b716074381d4c715a18969f819b0627f3626d0e330db9165b952e6fd644107a7fd8d422b75f7df9ed67f5035485ca617c482d514fedfe72da520ccce30651851412baf11f83c6670e9935d1f4d2f563a3896a6bac0c5171206dc4a15c66801c8e546fe11f56009cda2d2b4553947c082800af5ca23a7f6c162777511be088a4921c003da18bcc3c5977e44caab915a9a1009351d7b9ad43fa58b6dd17153952ad4d14911d248e9e6a383d2cf2c3cd584d188edd097b8ab5f985709e79864965f7f28e7033354e11e851829fb69c06d460ad2b0618b30cbb2893c1915ac3fc5210ce91ae004f0628f18307559037272453bf4a86b7e698e6a7cabbf2fd47d111253ef061182b5b7a598de0303c6a6a56a750ac56b03558688ef65495a6652fc3839a65139cc71c8c428f279cb5109181f3b888483d76c944ffd18640a5a748cd601e36831344ded045791c6457e5be7b0175f4b94d21e2b93100da21e43c5f9c807e98ca7555d6cecadcd5d7511f0fc30e60b4029fb416f8ce3aa69095ec1ca996ab0f432e8bd6c988c078953fa19c2e9b30d5d942e6518d7779d5e42929bbf4cbb985b923086928fb2577d1ac2aed47834770e4286632edf825c7f1a4995f84abdfec43c1a16c7b2370a62e33871e018a1dfe91c2410bdf28419ad05c8e0cef4a1ec91cc19c53fcc2bedc5e8fc5eb196c5d5a83c14b0f3163553499510150f7c73f0778646f046a6507774c32b70e5c921c448aa24f8188940bc7bbc3111590b9200aa969ffbffb67e81f61c2037e25b4b55ff2927af8e21ff380382ad309881afdf57a02575a240ad3116af3ce7af927f256d51552831356e650f93ffe177f4dfa6790f2ebde9fd60634942c606c78a233696d33fe481ec1e688051d45e6c708ea24ee2a30fdb3a70ff3eb6e7da9ba1110f07b9ad929f22904ba8b6157bf476be0e6012afc6edeccc80f0111b5099d123431a39637be9478300f62f1a3652262d588e610753a9b386d5073114f2c75a03609ef1d77c8c6b428081cd39ddd3385329b358179237d13ab2f2f76a4b4d05a7cd9c5d39774cac0e35e36badd0baac2a011a18e18e473da38c7c21980185e39432ac11d930beda0068fdacb35f06fee7d8c239bff62552c3923c02f2f029cbd682b7e8341f772efe0c12056eefa017fabfecefffd942ad144ccf51f753a99995dbeab1fef220bd34340fd83e6f1f7e696d2166ec24440d9561b18a91f76d4fdc0329aad13e685267c4066b153f3c02255f0d0a5803d3d6133440246a56f092b9a9831b25b213bd426cbe20353616b6a8cb3ec4351cf176613365c29d74fba8ff53129a81113ced1ac7a9e1f2ce08a163837194c70fb4487d8a6f27f22bd2ef43ce7dd56d2316ff719b2ad6c30f928cc1343e53eff34db527a41b1c8e64e99cfedd9e9b56476fd2bc8f924c2bd80fb860cb43d12fc7f961e5058a792aa3eb4be472c23c23cefd8bd8bce633321d9ec9c9dbb3bf151e3d4528da096ddce403ffe32d4c9d71d6b465feef1e2e1d75da70359513f16c95480cb64e3fa15f8f91278fda44e9e60f8c5242a84e4cb13144480955a28c8c69472aa71aef9a502f8f6d8d27ba928fc1ccf7f7bfc0405b233aa337620fc4f6760de018510e5bd58208b59f846c0a6418d05ca47f17e9cd609ff63efc2305065d7bbc4c31e5000aca1c915398b211f2e260adbb80a231184d94508a0e97404bc228f38ba2a5bf6788519912b06eddfe5ee325a800ab2cbffe338f4107d663f5b4c2f02036c6a782c7389f91b199cb5a28ea28dbe121cd022ac2cfb7b2a8dca633220cc7b5964c91f6e25b82373da1431a1091489f6e6f372f200211c86c4c5c5c29d7e2bc017379ea7d2c49170f30b466f7dbef2c7bac77af5f099a518c4eea7b204746c14dfdd7a288e92a7e13b63e2677038470c45de6b3015f725e3eaffbf8e1a0061c59f15b720b180fccc817784f58370dd0d8916359dd9868f8523c9372318a1bc7cc5d1a63a60d1c7108a0933d901ec4a8acffe79a5cd1cf8334846f9f9b2284a815e9be0200ebec58ec0104422810f33a23121e5344a603d87c5012d40c1e59243431d57c6583e39d6e0536ee92c4e3e7c289755ab13c84271efe74fb5358d1cf6202cb1ca6ff206fe0002c8445d9dc1e2b306543776a61a70fc3936d72ecc69ae4310122f94a939b3512f427f1774f5c90445c15aad436e7d5096e99e674418ed6e98b7e0885b4a7318c88523821e5fe8a22348420cc3167f0a7c3689fb7fb889a602eeba42fb19db0e28302cd086389b2052f769e8a76dd417029bd976711097c686cd587982259b9db509a1bcae272c806f7349abc70746934ee5328f25583860948afb098641ab6328d7a63d4bb40508c63af89228c06a69d8018bdc9f00d4b256cd26b06de55ac39ce6a82384fb410bc3a3bb151c82baa607703eba5394b97b82954284df5a3294e9e7e5287dc7096b510a009332f8899001508c3160166ac5e41cffc1a0d10144f24e92beae5178bbcb75e4184c0ae90e0176d544abb14afac751caa5d2588d97719f9b1e694e245957a404321cf18b4c8dc9b66083ab3408b8fa07480c25e75d5e0c5bd4429bf17740978b3bea30100dcff1fdb0e173a1ce5155045699ff08119ff6349c69177c5067b4422aee0932d85b0ae60422bb8ea9e423d5f8245bb304a79648571a5c5e2011a2092f7298e6845e311dc6590377bc562b7b82adb7ee2e4047304f27b7a723af3a0e90fe8d5f039fb2b731ac0f4c3c457f370954e620e994c7f8cbf5262e7eccca5de199ba3817912f4aa7ae1e067981e7c4ad81f2cb3a644e367a43278b09e923106efab35b9af5811697a5eb4799a58e2c064448c6a8435d23fc65e49831f3cb8159431cc55be89201cf51b7459f44cc25a1cca1319ad75786db0caaac92ca2cc9b647fb0f0b3058e946763ed7aa2822f6463f11433ce16b5158940ed1bc65f98dea47dd75b63119d4b2ea7d4df67cc160b304a44d079bd8e45612aef6c435292b32ca15dfaebe06173e67c7b41e4829fe63ac05c11732172fda5bde6960e0d9a3fc9845fcf8d405cb7b1d37a928f0329a7ea1d70333973eda8b5572da2bde8172324c62eb553580b0c75f2341aa83d672831fa3ccad0b2f9b513681cc72ff75f8f5f4d8777590f51f6fc0c76badd80c664e35d0f64fc3f6c461bf0dedc9d802f2eb73513c38dae582bd716872e9d5f2866cdecf628adb30c3e7432ec36be6c70fdb4df2b5c7a954d001e913dfa7382abc451837bbc2680185b6a76920de227f2be8d5ce5ccabdfc57aff50084010655c64a8c6d94ab199bb45b9e13fb33970fe6dbfd2cf34f3da8713cf2663f4b7796e0a02558106f4321a39d5ddfe42c9ac5fceb909ea33f870169700057704e005ea59ee7c3f3987ca74c85dba3ef9f78a6e752df0d9b0c5b26ece3fc2c1303ecf01021a1fedb5c25f9b6e0ee810675c625dfdb5304977deb26d401cdd0a15211235f0946aa8e3ea1fb8296b98a1a1aa62d2460598d96f87a4bbd29707497b0d4a3ce891e6f3ef5b5f5d627c1bf37106c3ba0e4fbef9ac93bd4a1d1263ad37e5e6b341ab92daba0c840741567a1e8aaecb3a30961e2aa6ff24a375f33215190840837d6f1a879a71ccaa187954e6f4965673890e1a49b7b3a5148a36447eebf8dbd302b1f5e54869676ac174af1f17967b4374010347e31fd9a0b33de35f2906ac3e9af21656b3363ed7e07d7589f166e3f7922c9acd47bcc603f9eb6b0f7217d9df23dd59451f49b6de9b18536baa3ecb2cea8eab09e589be833b308390f09d4959445aad5971793aa7b721060cd47f40b2384cef1226ac8b6354f5804a0c77c946c41684199cc05afec6c9b3d6258c0a893cb83863fb7f5e848bae93baa31b2af8af538b25e2a74270e1f1ed9def763ac8b6ceb6702c8f7653e3a8296885f6864ef8b575e7c028cd14eba96146e85fd4523c8dfe8ee3705c3bd858e454b2f9f2a7360b628a0375a094614c4a0871433db1ffca5de7965b16c9af62e0e089891309a664edd81316d815cdc145df9e80457b3ea205cd656c2b244b4e000e45207f8b2c702b33213624862e92ff447df3563b4b8b3e6085a0bc5c1eb461d005583f9adb486e648c155e74ad9bd7d525af5995ea01b9476a0188471c9b59d101aaabeec00ce5ac54c861d5dcaa1cac7f300bdb964f89dfe49846073089fbe91b50c6194a98640406817be8f55261f7654e230dc9d3f4ed626ac32542c7b8316f5d488d3f4f14558df9987e1cf8663b6f2e2ec2180fa1404bc2895f04a10bb43a10808532aee42c45bb885b03ea6b5011d9d766c0891f4059322d50d660b4daa89d49d3f4abc87e6d6712084f2e38bc412d70c1a4bed0bc618d1b667afda510a89e741af9026d2140f852ebc4830fc455331a92f1b728077138007c298c6c9c94af079835f96b1c8ac4118ed597e7e8610c63e59cf01b919d98ce0f60134171221706d1733ec449a24ce58e63cd4604857710415ff19ddf0292d8d635fe2c6f7e3ee51d48939c76cfb79658623a2d56c7682556661d1e411f4d9e16b0e396e79011c5881423fd5c673611344d3e13e2576e765ff0ef8eba1027fa33a63043b2ec6f7c655646d386b27a59201a908fa361644994b2778c56e196b2dc80816dcadaf1f26d1f6cf6a3c2ea9731332e3fda0fb55c47227bbe97d551697c2a8596b9bc15d8df54e3e3393986743d2b64f4426a6eec3bdaff83e5c8e57739d401bf2dedce296c4ba089d4f83034e3fc97a198ae62c1c83724f4cac58b5fe1e57607b218a6d51d8e980dc30d4b06bb94a8ce4a309fd995c423137453016777dda588844c7daec20d600b2f0bb4783f8a58ff37845c0e0da958f53812f5a19431dc80ada2fa244febbb93e0a0317f904b9917d594f16d4832cf1d36ae72edc70a7177e68c8d45be1448fa0aac7d53284da693d9546448fb9fc8d86539a9b43191679b6aa9e3425d5f366a17ae63cf5246e699a15013913174013e657d2bfa64e0194c94371e21e499d0e7a17491513bd255cdae6a4b3aaf9c503aecb099f76e47906128c1ae286539aa1e383f520759fe8b507c69a2817fb803fdc5308fd38d17fde3e4aadd2d02394e54deeb434e981e981708180894af274006efc79baa0f1eb988303623af8b6c7c3529eee506e2f60c34339e29edd83551f78d3f8a94a6f3f6cf7702c4bf7150ca45dc2769e8359f7e54a87e75ff5e7ecfc6937f02b1352912bb3a75b07646089a01cb1ada9bff4a8a7cbce50495365746914938de43ce40df78d6c9a8ea7b6c56cf68ea0f107666d7977d97f58e7b49ea0d8510fb01c53f2e0883a45c7f1bb48b5227233859fc342b562d0c9e017e4171f4f990cb84ae8183ba071b9be6155c540f409c4652d31764896be1fc60173a1506912a16ed55f2053677529761a6552fc3fd2750645ee9f9c1cbc07d1ff2ad47c9d76cb411e52950c8b3e48b5bbcfdd45a4b4c3603c86cbcf4777f092d8456cd24781ee7b76141a7a5f9816c8e471502502766331709ca89453d9d7c647c7c25870b79d86a850a356daa341c95569d7a7829e9d841954b5a2933302f5a1aec5b1e505c735e29deb228a41e7139f80bd9a5a06904a0a2150e411dd8f7b277cc25f26724ab15bb2e1695695f0466760569463856f9b5581dfdc3cac46a1a680c2224bcd9679ab3fc26e41ed5f9a9ec00f1c38a754b6975b58a4671cb17b31cde36469232be39e716d8e516292584415a8169dfe1a139d7c7b443b4c19e953275f71d0808b21da44b14c997c8c26dda8234693139a34237c036c41030abbd380664b9015c23c13052146963c1ec209aaf3df54ccacadbeb536e73bd272ead969ef53c1c0669f8f97b41ddc030d23af660ba9cdf40fba3ff4fee588541dcab63fe4528f3cd9c7cdbf0cb171103ea92516159a11a426f2c35f5ba9e0e6e7b95e7bbf0e80d69833468b062b8696a380cd96fe9e825d1abdbe04adf7aa49d03b6ed4b3134e494d0022a48b205ec3bfbe80e0167d4f28b3a9af1b7ca5fe5daef1343edee89e1419a5a15d6842b0d0e8f5bbe0280e6eb420028bf80bc396012361aa18283882dba30e3d31e0dbc2f3aee7cbc63619657beb2d6f606a1205ff069f5944ee075684ee78e6fa239158ec93e574c00303901efbb89014b66cf755b717dc97304eccbf61fdcf849146750169b326aa342c078c52c5fca30c8cab8642918a453c0b3131f072f57cf030044830e1cb05f3e1754127aec31155be62dba239dd8acfd218eed046b6c7e8b730eff745cd9a91f6f3efd798c9a017a3302819153d394711b740da18950ae6deafe6d5271269e6485e7dcd5ff8b0e9c0bbc6452f868e7bc36d157123c6bc30a92d79a4541190fbb1f2f3a93e936070131e06d78f6f9630a63968809dc0bc0f8a63394438148da2c3cff385f1c3146f13672414d0888d6cd6e78fd384cd366b88233c1ab551917df64a43f9d533d7a7431b7d0e2c6b2ce18a25e7cf9fed4a4db79f4977923832bb222f6261ee4b37b733bef30f18f58d64c2989aeaf32c618baafc0f3fa5e6cf9a69f4676dd5dffb1035a48a34cc824cea29265c89b320025bf5e90dd1f8623497815d48faf5410beef9419856f9b4de99db63748b438294f331d26d7ac4cdd2e70fd5ddbd6b6b77bddc89bd61a7347cb74f8d06205ac7f8a43ade1f7b506cdf095355bf0e0368b83f82182bc2220100737ad1d1748f83df27e35f6c0a5500641b28c0ce953ac0972ed45652a12a7fd4d6577247126a56f1ec00a11874ed580f3c0b43b8b87dfb6a53e94a018765e685e2fe4b95525dbe9c121a006cd1295c063550ae9015383ab0b9e59dfb170b6768f89c4bbcd372ae866cda6646bd66e86fdd0045fb98dba0762eb8c7a687a550ed8167430e8cce6f3c1338e00d841ae449b1e6728372b525c43729750c83c404b6adf61bde2cecf2ecee863d0936ad0a3df61a322c1fd840a5e2761234033f2d8ae01c40b64d6122cdec28a864958e007522326c14c4a96c203485a2bf9ca347ac7386f015a20ffbfb87a7c30114b813e339a6c275cc0a01d7d771c00bcc69ea178754ff90b19522de6574af3d9575134d6baf34e7ac4a4cbbe4b88a9a39a1c90df37c4ad75734fccccd5c865926a87ae2f98a0133a02a716d8be849e741e37d81373fd846d47962468a515af689928cac866d96278ce189aaf40dd95d768d82340477a339d2516445daa8c30de2796bde548cf212ea06cb53abe29ccbb817cd18147e10b99b2e39a489193f2c7096ce7cd6a4c2600b5f6597ed28e4d61328c8478a9ac8a40dc84fd491547dc72f83189b7a9a50d8c88ec172a5a19afc195de790c7846b517fdd99e9c2ef160411b3a27c9b32ea893ff2fc78a53e105e1a7599e8ccb0cd2a4ba7bd1e8429f812f1c7392b8d79431a1f3127f78aebc1daa8951b6f3c9247a9f6023055520b301ded9f8b3dec31bc389451f35032f0ed274ff5543709dda4eb2170c567f6514bd278ef8ce12d1a3fa7b410167184e76f033f3fe118e771de2327570fde39936a28db0b8740bdb1a00d20765ff65c5cba1ce13a410bde982a33aa186d99036fd8af60964c29d81beb4650fb946087b032b6e636c0917f76365dcb7ca92942934da4ad7574468801f0d21c93cdbf78648e6be8bc9347217b78dbb0277192bf9bf88de1a2e6aa6146aed44ec6c1e5b51f65b413e39bcc26be9deb02dfb68538d3b72c615bdd5a1124e5be0d5404bfb790b35532cde77997568e43b434907034dcf67df178ebe672f7fde44c0436fdfc1aa6849466273a1907d269204abb82a7b740d9904434fe39ab255f34322a07a7aceeb7767a5987b7ca812c62b0ca7be231db6d2fc7733b531435da5c40f268f81053226cd18c2c07b500e6573d48682b83b2d231e67db5d8bb8d62c788e63b4c4a86bbfc55b19293852603a4c301a9dc134acb8dc5e848251b894ca7bdcd62a13c548a591a8c7411d26f46ea1ebfbe9d2b13302e66187be23dbbc52b9d9639f216bb3223110d7c8b25a2a769e9a2ad7813e269e19cf82cd69980af979617b9cd9c23e21912903da137f1c7cfbb4524b071efba69ac2e5a5474da937b514bd6c73c130743f751f06081fd67e16d3fadfe25c6479d222edfedbc10c0d727e5ea4128c57c8dabc11fe0efddab0fc1ae3422c33fad0a01cb1a49bab454fd4ec40d00942a34e5f2175b4252ead4c724cb4b5b4f15dbfd17f263ee229fcc6e007dc196af3f101126d512c3387f87541c37ef67b6353c4b319d890ea7e08eec8ba299ad0ad118c21ff772890836514916e006a0cb68eb236bd7222eb89b0f96d5a87d17c19e5483d94dc43abce1f87315256cba2a398df75df6a79c1c54a02c0a7c15dec7122c70cb6733c532e02495f7842aa858898dee72a8aa8f2730b8ad915c6552bec0b189e3d10a2355739eca4d52f0916b96cafad63c2ba29d0d65bc14654a8264f22c9aabe88216fc1cb85826e540a5170dd723e1e58a52cbd8217a7a1fc76f0f09b6b51f384561d142c66cac9729f0678b6657dba4c69286a768ad74bbf46ee6164e6e28df6efd445cb4897a02bec7b71a415007903d799a87cce321cf1df2a4328de371af7b233351c6f64410d170ba38391cf3afd6339b79d55154f7c9a0461a0e5938b60cb75ce8c96c35e0ba677f8a50114c4e3d1b75250e199827d9a7e874420582ec0d07b708f5b9d67483f1d7c3be26371a02c4ce7d52957e1a888d33dabd77692da05f86dd1c6ef1072f96e43ee3683d4240412836a9b1b132c27ec07611ff8edf033f97b9e237b0f7a33d50847ffff02fd2319b58d1cefe511d3b890d56070195cc67b9928520f9619fe6f0ca2ea9ef2b4df61123265741e527ee29f7801196fd7030acaa53ca291e5c1e02ef5a0f3ae6b0f88dc4e89383f8251895f9711160dd19a21e89a7547ccfb0fec334917389ca69c9f716518771ae2e5491ca47c75015c3360012fa8390594e584214a9f81560b070e11ef643a075c14fd77444174dc27f442e2e208a755c9ed85bc43f3dc008d22ab88ed9063e4e6d90448ba513b95858561470455b4892ef31b9a5770e96559685f65c288aa8f2cc7674e064a81c8ca08f0f7198f3d6be0092d8e084471411c85dc3c9c1b21e64bbea575e846230ea321b09e5c7da89e22b48366359d1df800136c9ceabce4f0371ba1b25f1672d1835787762a81212c2f9abf5a7542bf3dd8519a9d905c05edbe77d7a7ac3d4c4fcd74a0c68cc86ff4fce05beb02b918784b23332ef3605adbb6171cd1f0ee005cc0e59ea8098a5badc84837428606df50d994b3e5621b24a19c1dfd21783d74654f4f1bc310d358f1d3e13beadec64e3c22f42ecc8f766defc315a463102186d835021ad20e7a4b376913999d594099575ee1ce9ff33583522ee319f535507d629edb32f4865d5ab397e820c61e4c6cb144a0fa7e88c49d09416193a18dcd07979574559608432237e5ccb0a3cc598509e8277bc414d76a324aea7535042ec64389b6ed1140c2ebe5fac75dd2188e23e8fe8ad90f5fabd0f62de721e602e716f1be5f4696b8d67b1852e505b1a72c4ec58348b6c7817a1c66c61f36b18104768a31344412a3c4fadfb0a6a3ee6e56eef23f2fc799676c57c5fc018bc4caa5fe2502a3b489800d049dbe21b41da7047eba7156c3626d873c08d4318d2d164ba0c80bc81d3243c5c87daa071e2a2abda153462bd4c7c605d8d4966204e26e470783af856c10bb4d02032fc9db8f1ea53f4f8a8c97093318cd7ac864693774926430855344841f604e8e1c54cfa76bb702c06c8c5b1312e1a926e4affb3237a6de238d1c391251be8c4f79cfc89e9872ab213c83314e7ef7131bb707747a663a08bad44690442f495cd14fc307e51ff4a75f60b850032905a55267705fa23c3081d67031f710dde288553655248308d519dc6b4504390dd89b17f073d8041cc529c7965dfdd347ef8f4155e749f9f8210eae7413516a1100a85fdba766011a045aef4a2f1f3875c9c89e09af7acca042a2239f50c0934a42951842f5979fb76e07eab1c201a10eb47275b0843042d9f331a276fd7e085a08450a25f284eb4a4160f6e4852ecddc57785004cd2122767eceaf9f83862f2716934b5861d9d1f8492ba7edb0a05a996e8cf95fb7c06537524f1795cd61c642bfd9d03fc2c4eadbbd7ab136a34b1a7e6dde2913adfbdcc63b5e154def1c694ac40f7ca196cacc22ca23b18eef385ccbd4ee0de28bd1ac78abb450c6a0390fbee387db63746bc178718a4cf60cce4640c706db6173616bcd83c848b226270173e224172284980ab5925f76027cd6682fd266e3d2bcd6a2bb57753572afd7c8c8da92d94662f852ccf7fd667dc23b84197a61b4b087d7f50413ab0323e173297f449e0eb76a0ad406f497b57bd0d6a9af93602ba51910dfbdcf8cf71406ffca6087aa97fcfd4e15875e59095439bd3a02b5fb1fa7a4510515d9f93d4ce3280c72d7420c51d8ff1ac021a29f0af1b75c4061a8ee95b2d090b4ef6bd579d12f9b495335d1c15f42c77f6930cd68f348356560c14ad603f696d1672772ed8fd984b439107bae355f7ac8d9e3b20b80e872393aa088a3ef2d045118a0a2210a07301c12229d76e686434f6c87673632ae931680c8240e5964543f5f7db7586d75a7f78e8a208456c405842ac667be2bd4ae27e7f70904f09edba3d936f311ac4ffbb6ba1b0943a6eb8a46320ae66cd5cc62c627393e59210ac8cb739a4298732f90ee20bd9a9bad00bf14d68c96f565ca62b18832d13d08801ba6d95da52e56d1336bdc39c87e128d84a1df0325b035f086997048b2fec79dd271edce0c07033c17e4059a86f1c054c5e0bc33265026f9b9a2e8d4a6321feea8332e0a8c0455c12b3e4cc21883086ab86db9a311dc2520deca68994482ff12e1faead46569926cd2a9bff1631833dd53c49bb7a0a8cd8ccb81a57fceb2ddb3763b7ba8992247d1795751aa219d200c641b3ab350e03b5f1e5a044816073cc4bbe8b79fddfe3207fdd0acccb24eff3b0c4771a34c480bcdc4d87e3b2baced9b89f59083293918fc14d75c049368486e9e035193c5a3b90b339e8b9a33f87a1c48f7f642bd5934d1c49889e9aa55bd46f09f1540cc68d9981e17f076610cec0dcd1770714271c09bd720454aceda4d51a3ea1042a0fe91cea0851d36ec888b7c33a40e1a7e18d356a4953aa3ab5ae6a23246701a42a41792a01e442bd9c44aa328089d48b02c9230f924ed47d30efb5aa5adebda889234c955895714820b1ebcd5dc29674f58ccc74614fafde12708c0e04bf9919c69413fb4e9062a8e69caac937c09e5c4345e6f53167c4ace8f56d0485c0451a7d9bbc5255f5fdd005ce5bf062fa967ff305dd287ef56cc966055dc840d19eb11046c65b8b5ef9ed8d625933f0d619b38cf5b2791800f26c81b0d9df414691b4bf286e3c7fc8078d598e790f8ede22a35a66966847ba728dc5e1633c340da7f4bb5f76910f1201c39084d01ddca78c1c86415874c675dde890bed30782d811882ff5574a9f2feab062179bbefe0cdc9d562e85086f54d5161ee320e54d82b418a605479e33129cd4efefe8ee3045968a812f6ec30b8e58df3b3aae725d5f6df1bdb47092c56a5bedc83cbd38c5895d824d2bf19696d07d274ad573653077c3d7ad3d62f8331e79f7dfbaafd55af420fb73180cbdcadf898b1e786fad8d87cb67e304ff5c2d6fe549f4656b6c2b5ffb5b6e784592dbbc166260b330c1ebf51b0d6e164838e8b5385c73b54b4d96577123a4b177ff9cc3205223f33f46cc601b18a0ab69d0130647d29745682a9637336ecd9a6eec8d98afea7163ddb0aa4a8e70cf3b949523e0c5bce5a79cdf65898996f3289ef9d299077e8512446c30bb4c698b52037ce2013f6146861473f600b759db576940c9fed516e8fce7abb76a14e2033e91f51792014b2845cc5ec80734a134319b421a9084d2c696a189753270f8503c522c8985267329d2d61505f9343e372ccc7c316f820f446913f423969fd79949da5020f51a7f69311ebcf43b8667dc53b738e6e5e0a2d53512646386a6549c152ef4fc1f0e858645f75823a0428374d7b15a460c8678b2c71ffe92b7878556cc68cff2722d94712515a77cb3e1cf6e41d2e3102d96d7da0937411bc01c4d7798270dfc9eb7aa4077fc6f3f578235a52d0c8ae86ad1ce0457ce600a2cc303ba92c6865a2094aa710e392e36aa27a35b8535dc60d64c5f6d820d5d21de671df986511ae59f7ac0d7a5067d29afe88c290614608c113031003a3037bd7c45014cce4d1d05a1b881705dcda730408e3a3bb32ada5e7a6969932449a44c52065d085008600854242dd16665b2ad7513a5661652b25f51b5bb6f9fb427efeddba7b127f0edd7e079ed4d113dd9d2e2fd96a43fd113752772f53352fdeee04169ad9c2851519b8ad2010b91590d3a43604268c907a5d68cbbff6ecfd3a2bf6d1f8ab3eb09b038a356282b272c4f0ed893254b16d64a898a4938f341e1b880899224fb068c01319132c44db5a9a88ae4f311826d81868d0e58eae995eaa90391d995ee8504175c69e20a911a74641c115256c3902a99874b2b0869541922e4b5692f21331407bbf09032049399928f188d8868005fc8e08b98120ff2e5b6d4ea62c1177002b264c9b2b5bc60b7dfb61a1a8fa00c344b962c59f6762fae1ed511a28871450c1e23d56849cc3bbd983de5e024bf02430e14c6be97c310b5da545c711def69b138e926cc3ebbe3a4bf8ecc8a9baeb869c74d58dca48df6ca2ce6a4d5b9285412ade5e0a614ea0f363e20a84c10badba0a921dcccc1c3f637018b36f38ed7728436b995c9ad3c19191acb69e3260de5a68b24a5ddbc4a1842c7193aef38e9c59c0c439b79c7f476dc54b9959b38272c282d37716310baa3b8dc84e3a61c5c4567fbef6881c65a0ce1b2a76eb43127f9df3163978db9de8b9920ec8e17e5a47b310ae3df838f5d28147659b1e2a48b119af2409b9e59bd98e98a366d2c897631429b7575a34d2f66639eac965ecc8b7da9eddf8d954fc93e42d31d9bb3d6a2bcf3dae8421afafece7699cc49ab59cd967cb8697b2d265ad90db4f63a0fc4b5d1ba8c74d2673b3199b5e2a66d1c957cd8989bb28e9b46756677ae8d9be88e619163712bcec90f5605bef779a5592d9b63613b2e4934b74d7ac5c5085d352d89aedba4572e0865fb6b9a7635ae251aa1efc8b19cdcc270ac295272abef4665a4f43cb1133fd4a87ef846cad4a8d63aee78324bf2ce9b6def5ea0f16296e4f8d50585718c5d6f7ab1f29bd026b7c25eec888ead38969bb61abaee6cd38bf9832f37d519a8b2a7eab224fb3939d69a5eccf462d6a5086ddff462db77c61d68ed5d92e86d9bf4ca101a0b56a0fb2cb44973681879a0fdb91678e0561ca03049c4bc993d89608e1cccc0850221dc10a3f4f776ecc9e4011249d4c0066fe49ca04405a9dba6610de3b18bc554e2cafe278a41055f00c97ef740e9577f38ca5a8cb18dc1f400d521a27d0788501d229a1d3d407576fd3a6e76a3e20d2138098349185112b022c9ffbca2afba57a512498a4479c5b2a306be007ef4d317dc1f48efa5f77aff85f5d3b7de5037485219af244a6ab904a1f1a66068d359a7aa43ed48290c3ed5952539f71ecb4b4b624a2c90a417653673e0bfe580fd7e654f9ec395379a222c75b584369dc9f6af58ee2a673f2d16b1ce2cc98a932b0ab3c41231b6bf5932eb2a25a5a2ea15a229b6bff51759faf4504838d71e1d86a11e434dc564e584e52494d66a157a888d1354272cf1c0ae07664ff77a601e0fcc53a56a9ae6b7b6b86d5e1a1e6a79df7a6214c66d79470f0c0a4d9df4c03cb0ed1e9807a64ab9acd8fe22d35631ef2cd6921369a9f78d96d2ee9fe90e26b47b93fcdb6b9beac0c916b4d65bebbd177bac8054a025b1582c168bc556d66563f6148b51200ea4e45c7534452e8e867014074fcafc464aef7e55ac1450a4ccca2c521c3c291d84211673073f27b5bd75e33197792ba6c568e9263834feeec1372b6c8b022042770f3e11eda44944b4eb681ad915e6e448b44d97ed72a41347d8b31f101a4633e8f77c0540e2efe0419b9f013fc9dc14862158419058127720d1660984459bde02c5f1194798c6a347cf08be094ab38234e168e38d23fccdd0bdf743c0ffbcee034203b763deb2a77a73d3d2f541b1e67c75e63794e4bf737323476d79ccc3f0588cc2b4cad04850771cea36e9ce8d0e14c6653ef318ddd19139e9b11c1dc4b155592676659dd896c766b87a93b97167672708088259b5a38abbcbb57297cb55efe85e979f5238b7a96ea742c6b9dd75c5b2966c1748a54a0db6596137bbee4820054aaa8812f8216632fd8dedef944a1533b6f9bd609bee45add5df98d2022d62b6bf47a4e50d6d56d78fa0365e8711d0535569ffaa1f8e6c2e37c3f5ae1b0ae32a252895d1685d82d62748d87634bb5d2ddeb65a3f25249c596470c2f6df70a80c68fb6f399b147a7256ab0b2b602249a224ff182b5808a9d0e6e6dafe9bcb5979c378c31bc61bc659b39b6b739d98ca28350ac2ebbc5164abe8e5d512e8c99b8292fc8ab6d54b7b658c5d227bc24e70140c45e4bdbc9707ab3fc6f0aab8e97e16fd8ee6de0bd402e18072ea8fedfd415340a91bd56ab3b6ff67c79e40e7f6ffc0ec498b59927f8e69d96776f371d993d7b2a427e80f51fd40f9b43e2c2ac3bd7e6d1741f1a1b67f0b63e8510cf8bf26e7c66fe4a3729286e3a46bfbf65e1e39843635252d7ba2b695a3b15c49ecfaa609dbb59b5dcd123e424f78094a65b8c72ecff8c42beae5003f0c7673235e893e68ef4565bc7013de1e1b69de4b8444952c4e9401a5892ca5bf27b32702dc208a39c65083871b304a7fef654f1bd051b1808d23676c1144e9efc1ec898231440eb8c051c112265a94fe5a8c097aea46acc5f218c3a7bda3d7a2a589cfd39e34978b361104eadac31f8515e82528c9f113dba770e12b5c78a5d266e9b5f25ea96d47efe5bd46a9ec202a6a4d81bedb6ffd5099fbf5397adabe7ea5270795fc63fcdf9fa4d9349086267b1ec61853984a35df8a8899718a443179d476bc30d45ab91b5815312db4d0428774e941e36d7edff28ff17f7fd2771de96b71bebcbcb83bc6be7a797979799142db6dbebcf0a0fed8b8a0a6fbe0c75630eb940d26d12d4d36953dd172856dd2170fe06a8f10b0a15a80a6fef8464a234029404df7a910c08d3fd338b60f411403bd8d2c977fcdf1af2ccf5f5eb48b5fc00f7f0213081f880bb127f0c35104da68b3b2b0766dc743f7eab878154422b718bf9031ce5150a141f1685086d0a608caf6d7726e2872eefa9e28456c7fce3b627b485092b7528213bdecc4d190cec7911e72ca4eec62a3215c17b324501c8d9d6c549f1ba925914c2fe5bd37763ba377763bafb5ec9bdd13daf4581eab0015855d47bbe22fd11fdad70fd153a7e90ffc2e4aa2db013cc8a1245a7b685acb49fe39772ead55df268f2c279d654f5dce2cd6c52107bd420f93b4fdbb9d2bbc14cc743bde89c510e4110df7c2dafeee25164390f7256bc98d2c8fa55f9f163a6df8884224c21b683f4b0184d53def9d1151273920a45a4ac998b2512ef6bd97e3369cdf5a6bdd5aeba23040664e9e965ab07683dd77a43758b0de5a6fce4c7cbc61844e59e44611a5e4bee50640802ce0003309d8f18536e96b48deb6bce16dc31b2712c9cca0329ffd36fd8fca6c4f4d107c33dcf4a73cf1fa27795019cfc4dabeb8a57e0b95a94f3e8f142885a12e50f300228cb3159f886d3ae50936f61547f6bb1dda95f3bab03e58ffb3a28e6b69f97147979616af32d4d1e503756c71320cfdbbe41fe3fffea43f0f50119a8ee2a9b58bb77bb77a6bbd1ecfdbd273f36ca89688b43de5ac75cebf901a3880b74965d66b0e804519acb2a6080a66a0caef8b80c6e8a27c52ed68adc8a8ccddf53c6367ccc6dc05d3ba6e94ed5084d430432dbfcf62deb5e5a63afaf69de77941bc0d77af891dae2a1c2a5371404fb887982aa68aa962aa188509d1409bf5b4e769efbddf4d2c16522da1e23297e9bdf4de5a39ee81389745d287d830d765babd5a6bf54626dd8b860bc3b3c10b7eb0445984e620086e0851e64c5d266cff05bca0838dbd07db5df05aadde915b6a8f053829c449f5c7a63d5c0ad801a4051a012204d41ff7ad365a1127aa3000714dbba93d5c40687004385ce54b3e8f86c2388d7dcd5e3454c6dd9dc69e5e9ce4ef03d484f6cf34987b0f87d4af570a6bbe6d9be7511b549c6f59c4665e38f102c76459d689d96c369bcdce3aabb3599dd559e53ecf03f1ea02035d35f0058c93a3e05cf2e185a1e78521f670e879a1e781337819f2df56f49d31f6bc307c2f0cc3300c4593484bde4adbfbaec64a3ebcf0f3f13cd0b3578f40c49899050861809343f2fd883438a9fa1b9b6a6d33a6be2cc93fcca2e568cf870f7e87e4f37ee34aec8cbe927c61458a1459a881064d430d22a268410517aa98874020d0bd20516b694f087e4e58515c38b399657dbc04d8533959df142c387bd32946a0c1aeff794e4508d736331521a0d8f5fd3d6a8e60dba7db24c1b6634ac7b4192ad54a654fa21b6d52570af507960195a142657638d1fe3554c66eb7410710c862b0d7dd210e7ac17d6f4cc99b41c984464dd55a6b8c0bf4473d6b8f3306ee895dbf9ef5c74bede1ef2ff58701680fff1fe2b751e0aa5478c04979a1b9769881ca939a62042cb6595b3bdcb8595f1566c267e0d8363f55adb5d67ada930f254aaa510cd5099d7da9c95b46b6261ad9140ca26d4d61bcdd4212aaaaaa2bf0c508baaa54b1300c1d35d0da533084a3b5dff096f3b66dfa1a1162859cb033fbb9afb416894852a3c1ee59a94492ffb3d968a66b0c909acac40a30d2286b8a7c33e0a2a4ee826959dbbfa60835e33584f249f745c82da20042f9047fcc5319b7a1ded39e409f6fb4eaaeb03d79fe3e0f213e3f1bedec85e522d96eb35dfbc44c3f7168124b871ef4356cab430d5d1f87c49a2743c2f06b42e158e3f9cfd784afdfb3d566fb9cf785c41ad05803fad038029f9635a11f81348cee587e3548edbe04d554558950a84cb551d0132e8292fc9f3c89228a6dd6949d45d9664df90becccce280c4e4261b0dc53b4334bba36a2dd62a34b60c307a808a8e9ce2a0f5f0c0d0dda7dc1a2fdadb5b310ebf34f6ce5df7fef9f100ae39ab6c2a3a0424cfdeebd77c3410058017062369b9d36cff26c664fd9da3ccb337c3a19d3a94261fc5d2d0a93294c389b85b3cd8513859af90caf50191aee8472d053080bd7406d0f5d307b0aafa024fff015ae2125b65d65495174a8da6e7228fb26870a6754a6e2d3490f83404f7825473de2f9015ba1308ea2302120b419cec2999b4cbc0aaf5cd97193b925f19c6e32316a6371531237edf841fb9f30459bf8bcb2fdb1159c634f6ed01f9e22680fb7273c8633ed2a6c13e7e49c399488436dffea492284c6361466b6fd3114b2550f98708208a2d9ca8c15ae12f3c744e06caf3fa60082e220a8a96a5d88b408d9603b46d9aab5288c47a99a56efbdf86d8965b35900581a07002e005811ae6a78da534b4bd812d6162a1a6fb3a5254412a2ea0f70fb87aa30654f9e0f37d2caf6ffcea03f6a94da43e7937d312aa3d52abe343621e809c72c69436d29963d793625b66f4898db4967a0bff73c9539424ffacded87ed9b101f2a414f7ac4b1cf88654b6c1f71f8c4f611c75169adb46e7f6ffe11156f3bd8240c471bfd3ee4327c0adee0c2ce6134442bc1a7bb0958f70ec5f07d2895e07f926c336425240be984a2d41fa133680f0fa551ab506d33747dc4f007ea82bf16431465c1ff8a618ac2f87bc4906549de8219a6805216cc3008336ced5088551c4acc4224647b2bbd310cb7330e6d86e1199e007071de4db153839b4da7d400056ead860708a592b72ab924f1b5b0fd63c0510712da3e599a694c8c5c232bceeffcbed39ebeef3b3fed3b3f1495f1b6ff87c44df6cf6ff5b176cc49e766dc6c937db4525a29b5df91effcce20741d4dad85face6df69da318c61175d2ef38aafff9ed10fab7f99da9effc509a8895609425712bd8fe38b3fb79617830d30b63fb9bdecc9b7957bc2a1ecc9b79617ce7959db11dff404f363ec494dba372995174266f323759218a30f111a87d5a927f9a4c93691ac61efeeec5e0bd39df798e5c3b4ea587d8a6546cbcf0b129159b253bdbed73d6fa867aa0f1d337c1842f34fecc715c10fc96764fc15a3b77b99e4952bdb5b722b65b8dd9d80791187749e1d5a73cf0ae1b869a65d38f560fa98795c28041ec6e7132a31942eff9212dfff996ffbc595b2940a14522b52900a1452b73f21bc951f588a35afff3f9d058a3e33f5fd3f29e375282c411f8a137526a71043ee88d949e0eb164da9918fa7b4f8708c4923c8523b48e6f79ed39eebbaedb64c0bf7d10fcdb1bd9396f36d7907bcbdd244e7ee31dcda01ff443f483748cfaed3804f4a1b1a665a40fc47a445a7e8638a9bf9146f484362f4cb673abc474ae952b6ecaa3b6372d89938ef136ebc971f6b41df921a6dd1ddb322c8ed42354663b426176a8a76d874af26d88213614541420d1f823428fb4ed4c21058eb233bb130395aa0a29c26d5ed576a2a1abe751b9d43fa3dfb7ea79d38fd8fe266ca716b7d3b39ddb55c5dce426f3c22eec56d9cecd663b2f4c55b771abdbb9a5b69beddc50b04f2da39e5ac60d6549fe177661a18703247ae3a3af0ff4b809609b8ef28c04d8a6a3f6e6449bb555b1686d36a0266c0535692d2a5b0df6444b7a636facdd72ce51ce7307e83c80d05aaf740b9571d75a7b13daec725aa4d0de4265428fdca43dd5721b3d338f8c043934b5a49725e57864e7b99b6c5f456e3bd800fb1e9d6d3b188367b390443f5922693e4216ab392edb930628c93f032a6dd223509c225bf6800504a1325013c6a161e0e0e7b8e79efbba5db507ce02b637622a279bb8573363c32d14a605b7ac1045932db464e2a425c998f6c45f8c311c78d3948056b8f695aa6a4d65fc5e8e033dd1cfddc736d8158a2a83ed6665a23a412d8c067bd29fb51eab2726537bba80159d2a1586abb3aaaaaa8a8a4422914ae5a15e5cac8408c9c9114265424dd384f4a09de82a0e20087dc2a653ac78b22f38032d6d9a684bf27741479396e4a61ec80b5092675b45545fbb6f456d67bc6d993661a8a3452171f22452dad5a6c649234839a033b449abdc7d010c5035dcd070f06d522cdb4fb771d23de5249222f554af1015b1ab0aaa0ff5aa5494844ed583c60b70b2c2baee6b9d614ca3f0a414c7d54a53273f1d317ddfc35fce3953197a02804bbe6fe6aeeb4c980511c3ed6d18e311f4d22d4f34c5a1277a1b412f6d9676c94df72975a92312d18c08f4018d9f7f46ac6d5cfe406b631466db7ea030fe2944a1753e0f4a5281a83f9cb1eb7b4559b161031aa0a3a951b1896480ca743a0c5000f8fe1b7cef41eaf278acb5568711740db516b18dfbbde0e7752e9c1885d191398942b13a2cffef5e7815d721439bffff78db70ce1a0a0f569280e1e40b2c31396b2d12fd97ec6a9bf4e5af4b8373d65a24fa27c91291524c3d82a4885859aa6d90512a69b3e670855e513dbd42721c07d68ab74b0e74eeb6a721d1c2aff94a3126a84057999329b8a9497ec70f3b54a0cdaad2426baf430bade995c62187baf36882c0deb0edfcdeafb0840e81dd9fc7517e70d4c1c93c76633dbdcedb267d79b57a09cd7d850125f9f3e0010000e8d0016e935ed1deacaa92102a43376703079c8c71e3e421692485d11e30f20065e062e046adb29084ac29e30af66cdbb6791e887b94a854211ee6f06d7e9aa67d0350c11cd1d8ba987871914aadf40b95714f79f57b7192b3a5d46690d217d0365f464e7409db7cd9a69f7eba8dcc4a95f9b98329596c2721fb0f9ea03f429077367154a676e7f7b58b2aa55e11abacd153758afc668502bf8be67d2b6e6f5eccbd46b1ec5a6fb0d40b2e07dff91b6065a05ed40ed8d134e2648f23fb1b88a770fec61137e2c6511e5b9e835da2dfd0d40eb4495db782201f50cfdb86f1d675f5a39050b41c6bcc8090b7ad04400a2f9b586375d0022b9a288b6c53881145b97d166b5880a22c52db28b747010b7589d6e612e0d0d4c9928d43bbd050182f4355b4d9f2623d376849b5040186ac973d81a3b39ce4af3deaacd965e202412f0aa84c67841c1116da0650885ea093a0f912b1fd2d1bf5545752a8fd0195c154a6fe0eb60842109da1c5b05d581b7b06819e3c1fbee972bc114a65f8a66779bd6054460c2ab3bdff2d82960495b9277fcd414f3eb363d4938ba0684e5e4c44446820e84ce321a3a1d9a85708db7d664f3567ad45a2fbb2a7ba5abd56afd5cb59f6547372b6ba2b0ac5e19a7fb5d59c6cefb328adb6566b64c4d29ac6c244e46ca995266005b7eca52da1ad3af1e5b3993d77c0034a461a75343f99d7755e8771f714a4f17c6213f03b51634344e5327c8f6853833d612028c95f6b83927c6584178892d044601e5073a08680d2a468532ac95f5b8292fcd1108db1832b4453e43cb1fd6b0ece36afce7d85da7863de6bc4210885002dc38e13b532280c7e2ff4aa9759bcf4864db03d69665052fd3844405803d4a8a0305a159554df594049f5c1106da1651185e8c9ae30d8f5beeeab25e5b94beac5c5cccccccccccccc0cb5e00bde68064ff89ebd335535035a4a2da8c5ac33b7838bc807adc5f790bfe3d42691fa3214e08e772452c7d103a30f275f2801a1cdd2c889d6b1cd990a82b08806a030feb40063c40ce1e1062d8822832653e880fe6007702c59c3060ed715578e0b278b38b459555b09fabd495d9e42c2896e735e213be28cd96c36bb51d50f1f8f2afa518563a5e078df8e260934f6f47a7ddfbd1f08ba5cfe0ac7c042efc52921bf087bdf077eded77dddd77de0e78d4dc04ec9e7b5c03b3327e2c61dedef08c8f75e2cc41731333acf136bb93dd15b9dcbfc9d37f3f35398227cc7ddcb2951fd6337ac68292da5a5b49496eab6a9b13c6a5570a2474a2fa5f7daab8213ad891acba6b4950fda6e0e1f00457af00cd63e27699f0a4fb4de428535b4a9a5546e32bb2d947c122de5a69b6e0beae415b393ee935084be6f764decdb5a810a6d6a292db53da5a5b24eb8ad05b1d8d2a6c8b7a6699aa63d7ee1c065c5799ea73ddd7bdef39ee7e9f7c8bde789a232dff61a73e3e43d535081488894016284dc5c81831cdc98f3bca95a6b5572cf7bba5605f03c2f2e36bd9e08be584b57e2a41669c989b4bcb582ff89dd73defb502ab9ff3c21a80bfe57f46ebc4ffde479f3db38f88743b873c89aa6bd4290b71deb0a79fba7e2deb796e68d7bcfebecf5bacf8513fbcf44b8aabbe4f35a14e61bbdd5f2688bcaf8e76a5a0b4608ddc2acfb590a2ab75aad1cd35bd65a267f556b783c2b6a9f2b71dbffa5e5561d3b6f4e9a77fb9b83efd1e6520057cc939f4de9b7f19a66bbcf6d7c209715dbdf5bcd9c1bde729e3967662c7e8bb9d79e87103a3ff737e78dd69df5eb3689b59fc1172c97b7915a92595755654926d4196c7f1a7b1e41dbf33c41aeeb1b0fa8dfeb59a2497e8e4a153f08430e1808e18bb213429322aa280308296b94fe346bdcbd4b745a5f38f162c6c5c5c5c5c5c5c5c58a0e6dd3c5a58439749d43868f1cdabeaeeb3d1d375a7bfc399f2d2a1d245404dd62459b1a4c83d913d65a0c6b30bc82d1e0d39280d0f84d7cbaa149de2423d1f8bdbb39df9cbb9710219aeb4d727f23104bc2288caa2004b4b27b2fe5a6246ecabfc63649bbbe49c227ca9eb8d17c52f475b316a370b5265e8d55094aaabfc4ae8f4f7c7a6f78d4f370303a1af209fd67d4de48f9f95a6bf54a9bda534be8037afab90b1f6653026c6af6d8a68b052559a0a6eb72524361d3bf5850d346497f0e567f686358ed187230b19620d1875c823e24d6781471cccad0db80bee543e2bdadcbba4e9c5c5d308aedff49b1fdbd4b83227e441584f289593d5067bb03f6efb7885709ea823f48b4f1e14b4a5b302f0cb6bf0fa5925216ccdb64fb6f378a76a7a0a4ff121e7ea25f9eece65c57f664f6c4c138984cc6c1381807f3ed9eccd2ead62e9179324fe626dbfdb64d4f963d99b64d4f86bbaf035fa0bf814cd89df8ed2cd2294b76b60a4f68bbbd973f2b7a61ad32999b4eb0021a0d09e9f888a3219f96ffd899ddb1241de268c88ed7f13b463b1be5d7f13bbe451c0d21e15b9e84d1ee8ca3fc3bc67b634924cfe30c5e821e345e1de34d695468d393ed5c973773934c832f6490e8e575d99397939373bc9ceb12fde3680ffb5e4ea84387d6610ea8e5c3176fd9d9b2cb14a665a49634e360a69f9f7dd232b4bd1639f3db401c82d00d015abe27e250c50fd44c2275b6b52fadcd1d17829fe862907b71ee7551181373d7c571a359c79b735dd765eb174c6ced3d5e170addb2b365170ac10d7567e76077b639770884c1b9f17ea0f28ad97e1fd14b6b4b99cce326ec407b2c0a7b3389ec694bf957e846db374b3125181b6dd988c3ff5ffc7d743a94d0f8fda9a5d494bf86907077ef3a777b6dd8bdf679f77aeeddeb390903cd80c062b1582cd64ae4d68a4a3197654f22114bc412b1442c114bc4e2b2e8e911b878e19435454229382575178a9054b492289f6c229188e5a61695a93432f04dfacadc0602813a90a8811e1c6bc0078d23fcb4ac01fd085f8d96a00d021a6da867122a53043d695fb0e88c45672c3a63d1194bf3e2655dac6c71b6ffc662bd686a7dd5577d5d8c354d0341160be4b94707206badb5d6da5289245dfabaacab5eecca2e9b75028c50a206654d1102a8008e12fc2234e78c1394611ead2b0788b52e97cba5c3b92996dff60a6aa5b0605fd6a5f2549e6afbeecb7f6d8eeae2fbfdfd3e7f90efe66ac355b929af48ceda5099da033d696ab868cc45632e1a73c5b64bd3a18175e5d75e188738f8000ed00cd8ad06ebb22f0bb32e9b03040495b85c2708e511800046308145112cf8c1143908a37437c8d8218a2fd26041a62559cc8cf36a9ad644df3763684c4c4c0c1ad9071a5a2412514ba9a51cd7e56ec32ba83d70129fb77ddef6799f77efbd1709ac6db012444a62e1debb6dee39e7d699f39773ce2f5d8666063dfd095a19f484ed5a1927686550193f81c2f88b5de8aa83d5f97d1f57da5b94162a6ca7f9e7fd847958a2a845bfa9efce72a2a241088bc5c3c9501bfaadd7755ee7759dd76db8736e0665cc801002855c2097f775dac579e33016b712d087dea4302d5cdc35537bb8f77df7da25efba84051a132a635302ff1170dc4e0844030c36ca605f1404f5408320f8e007043f20b6c1281004416f4bd0db9366c54915bc824593e97433f5877606ed9163d3d8f54d04c05ebbbef6ef084f90488922a54a973349fed76a4f5ee62c837d424417595e6cb23d052ba0c7f349fd22b64a1b49cef289f6d788d883ae77db31e4231f103274def6debb713f884422d1b52227a55b6b1511a108a150a94492ffee34c4d0702fd8cec301ed181a58ce99e3a6ac5c1e572ad5d02ca8108306654d11179a6095e017f914e1086518a3c44df786ca68355549fe358b52375553ac1c77c11facd5e524fe2ee7a69ed074d7f1f367c780f74608dab49ed7dd4e86edb90fb2e5a0ed8e7b23f86b755167cddc34c3970423b4379a550b2fbea0271cc54db16e8a7553ac9b62dd544da536b86517a4a196c4715fff820fa8adea0580227553e00cb5aca92488a0a623a8697bd790f017ec54ce9b0db36ddb6eeaa642af100e4e489d10c4e7e379795e1576af73f9b561f9654fb8f4c83c2f0fcc33dbeef545615a7ed0b60530b4e969797fcf03a3329ae78a13676cb7b25de511c3b3b3412d80615bc45a7a60f644c4a4af17f8e1a71e378dea8f2fa61f1c4dd1379a7f3d2f8fadaf577de5df3ea7f6f0dacaa89cca3759955799b5ed9cdb9fc69eb6284ef2c7c95a682f44555e87dcac94b62b2d168571b2da54300ab363495ec5a0f5555b9fb1be3caf0afb7c3e9fd1f38239b5e979bd5eaf94c70a591076b87658b1adea59830e292d89b69df6542a91b18f89b6d39e59b8674216ba060ea4a0a46ab19655a45bac3b85261ab59db58abe6a2aed8a9b049044d7bda14c4755a15e6cd35174e352b5ee10a1038ab6b9aced5f738d983d29a32c12aa42555277e1bee904bac2380c33a1409bdbb99daeed486363f336fa53182257d8b6a136246eaa3b4e7a6d55d2a66ab9b4711bb7d38ef7841a68f3c278ac40d3ed1947f643eff9cf38b263a299a8a46d562641ea10890000000400b314002028100c85c2e180583c269a77353e14800c738a48745a3695c7b32447621c8490318438430080800080cc08cd38000a8b4525eaeb47e8f032129f8262d28602a1b1d6e8d68c5d56aa8de1a39cedd5a79988ee64d8591aeeb0cdc4147ef14ec4a68dc9f8af72a004680f2a2e8aab5aa6772736adee8506497ae966b6703627ad85ce7f5a8d575d1ef8acc33176e7d5d762b2c778f9cc43e03b42fcf6253df08b319c5ab8529b57b97960968d772b173a6b49209c12bcc94e42907b624e295d2fe93941c8e5569d022731f74a106cd57229713a763c73b59ec2da2408aa214b329eb0e0764fa1cba1b1dcee5cbfa06c412c25a273db4ce972030676995368a210d27ba79d6f2aee3258d47d99755c8394cab454a2682da31f2bad7510c11f134b8099612b549918fbcdc4a71173a4e517dc533325580d18722626c6725d7be107e15d9405a711339fdd60d15cb55e41aca131423a6fa7620085ac586feadb908960c50cb6dea0f178a29f9a22013ed6627262d719a941b105f5cd43637efb08d23686c0639b806afb5f80c8cca9d2b397097035f25281c0b50716159c50224a8c775d309db3c63242876474e86ee73f8151048b8221761c8b54558b0476d1622964aa86c5d058b30b23840f86882392a5f06090f8810de482604350746cf22c824d257f7141dcff94190503c01a38156f61067388eb28674a68952da4f1c1c8b33da925a8069010d80acef82baa0e085fb20d53ac17dc03b8c09cf01b56920b477518b687184159a4fa423e22cb393b0ac0d288ab5c55d357bb5c6a30fe2aa37678d0970b3b08548c6aa74efce3f24a4bc42ca64051e96b1e78a6f9972d6dc65deb11e06bc84725333cb3ca717bca6c04f4e2a68be6e07bbd77314b4772d5754c81f0aaa26da5f332b9b2595a590b2275e7c2c004396b2780bc58420545bd1932375ab5f6ae6ea45999e4268e05d55287e1e6c5d00163fc6ebfc3350712979aeeadac5a50f9decfaa4c8df88929bab2001c12cb378c567dbe4b672be54f3bbedc20f357208ca534e8b1fec52debdec085c6d84fbf907b5a26ea2eb6a7108e819547024048dd545e65d7eba73d7d4b00fe30018adb4ea75b48a5585fb1f22953a07955aa709f2d8ff1468c9463a2ff80d728ffcd76cfce577cd4f8c4462eee1ae8e7c2dcdd59ec90014c1c215a3c2d51e91aebb2ae0957fb88dfa2a000804339df7f744d2952bb5d7ed40f9c005cfeb14c3787e9449c8555eb86203de32f12dac1a2d4ce29a026a54ba9d866e484c4257adbd79ddd21c2a9c161e793b40cccb6db3d2fdcbbdefe337ea26a26e4ef6cacde8d63183c12dba0114d64b3b0135f453732aa7d6f2e3aa21e3cb7a69358c0f319f4ed2c6dc0cca99c8fa8b6ad9d8820cffeb4abf0ce824606618c2aaeaa7649b8552501a219718c62bbf41613134659b022f09306eb0cae28dba061dbd09b753828e1166f52c9b27ce060b06a9901116fd9e647c46bbcbdc5787b833397885914a9d10145297f5633cbaf87026f92b664afa5127a191d2c2d2d091a71677801ac6aa301f5c7567c096aa597f1312e83ffc18be44ae3ec0cac0c7e133f4f3eef9f5df07970713222c945c7d43153f130eba49a79d90456b975b66f98d6158bacfc0c8edd3e6383400d2e1eb669104e5552945c93136d4f04cfc9289dba0ee1d949e4a2d49f1950015be8dda18338780c24ce4bd3ebda1c1155630385a454df2ad695bf6301ea14132b10629d911acd42775fff6368a1a0e685207b116a91524e6514b272498d5f43a195b932772d1c02983d2688199ef76de83da4fca5828699f5ce373f983ee57b841c3458ffa7d65fe6b64f2bd2542c8594aebc80f8bc853d0f487f27b48c2b8b8f07b4c081c1920478febf4523a8bfeace61e3ea8e66747e2f82048405702dafa3354dcc7f359bfd8b73cca41c4eb7447880c5cb482456668cadd77c90c8af77fbb4c49f8eaaf354860b71b26bbb67f0918798dae66afcd34d60bfb707b65261251a339e6dea829d1bfbfc86289b0057f59680f5231ac7487d1d9f105892fd4c3ad05ce99541f4f43d859b66c05dbd2288a743a325c072160087eda2419bccc43d97d7484861e95dc03f952a686c086202b8be0db8bb3d706fbeb323e995007bc1eed01e09639f978afd1072e19db8e930e0cb07a2a13e08d4d9e702400cb2b10cf0dc83acec01de2feabab5a0c23725a8785807d28a8dce74a8886f20961c6df241c090787f0af50289698aec7e850d6bc22f7cdb1e045d89ad9f39413b5811a0519e2e165f5afd92b0f5932c6cba1c0cfc708b40ab4e3914c92fa8059db5081381a34e854b1220c14d80067ba7eda8f4264d1cd3efb92c7a020c513976c93fc7c7702f608a7580a9d6596098fd17acfccda529b7e2295ca9b8bed23ac751c588a59e2849ae69e5537ee30ff7a1643ac6f4972492d74da0c178cce36157110a57c065b2c03944fafdf3bbd9bb9e0ae8b0cdde4b1b664e2aca6f0c74049aaffd612cdcfd17121af82fb1151261e99e7bcfa171f4f3bdaaba77cc768055ce9e50f6aa94064a59fc25fbf1388316b9ecd6262281e8da9840cc4a5af8a5b70dc46710a0c4f291d8a157a06181ebc3ec9df61d9bf35600fdf34250f46e33e73924bff6b3c44eb0f47b4bd83133d9fbf8b90ae112e262a4c8cc45fc8179ede1b9f33edf9c8b4d96ade11839992fea9066f9012be3f744d624ce78a3c71a7922f0ad3af6f2369dd4fc5629d06b63a390dc3d11145a543e34fe6e659f58063d93e8b04c0de63b2782800e27825292d517ed9a08acda092c153fd395022b2de8261ef7cfa6818a780ca6543e24945a219741112806de9222052db63be6447fa345b339462ffe8296c5a8d084a0b4fd1ca6cfd3892b72d069d3ede803bb88265a4e360834efd52aa518608b7c51f019b4b04e440ea8d94e8ba7876a9e2041006a97fa51500c58bfa2cdd1e370f0e5dc49cd8870ac2685e61f99220630acd9626737d6f6ae6cccf7880d84f4886b24ac00123c707cc9077bbc4296247cded7fbf4dab0d217ad0a5ce12d5f47a90152090c93f810fc53585c6cf9059f236f5c21074e72e7543b444608a2308b7decf6f54e65f4a47561fff5c0efb58976e113bd7be8aef436871b1f2b8d99beb6b588c01b24218453a2e8eac59ce85d3ab9595c61f099cb2c819a0eecaaaf8785fc05d612a897533c02a6a4fa9a3ae34d313e8d26fefceeea4e52c6f66782d5c1f866e7b4a90bcd98eab6c077479dc789db3aa862077fad4151c72f9230db7bb32413296877940a84d759b45b6c510265b195a5f426da87707c26bfe47214e9faae25e8db70aefd1dfac0eba3d3420d3be62924fd4f00002182b41a2e031e4fe901c66dd93e3c253e03a7460384beae8129ca5c8ffba7e1a87ab48fa71c2bbd61cb1622984b518f72e3331245f9f178216cf77037cbbdd7f47255f2448993bfc03ef50a0d541d49a76ddff7b3591d6ede8f96f7b75cfddd72ffce7f0e3b109e84897c5c6e134dd00524af49e14fca82d32669ff0176c6537bd81ea4df573c1830e7c4861bbd28f41fd89e66d318a2b03dfaf8029989f0d7b0d6bd86fc05db1389eeb1bdec390c686f29be49f764d9a15ee3a2891621dfb03dd29cadbcd81e66638d21333c99a8cf801a8dd33a1a5b07c40811f9cc92edf173d61db2087bc449655bd8647b7c59d59d320b1684a12e02656b29998c97a6f0ea3162e9a001035a12a3f288dc4240fc5777b56af541a8ed969a76f792f089e8408d3d73c1d996c3555cd6fc5847139508f3188df179efbd139e4770dbb3687df87759301d3032b23a589b5d697f76696a4a43b5028491721621a18379b89e37db9fcb62ab4699073558730994c0b994601e664c2f7154028184956bbb09127b8b464c803205f2c4c6ada9095f0c31ffcb79d47cceab82bfa4c44d68ed5a987490a34fd5b94258e0885189b74d73b2a5830dc7e71c709a00f8ff09ae543db9704a735e303c5a50392bc6e1b3314a148a312a94e15f681dd10ded96f7a5310ccf66ddd510b8c19b1ae93ac00504f361fcfa478250ae28e5c7983a8ad38ac8203b28204db16f4078605603cb17d3213cd404f274f1c8fed346d851c6202349e2f496910429c96cafdae5c78655988ba004c2b052003de9ddf40e58419ec0f9674f3474de01c17d27f1c10d4972127f644e130b078961d782f9ba9ba416f1a24e557279a417767ac112a0e65d7b1bc9d38fd12113641bee88d1aa7931be1fb8e4929a69d5083fd347de14ed56064776e5e1dcfb5f44642d90a1bf7c0aa3df60a99ecb943a3d42bc23cf6341d7b695e4953027e47ccd3395b0e88049ae8f16c1506391a59b64f19c28d021be8488d3240992724b752711c45250f480b1b89abf0162904f8418cc439fd63692ccba73ec37ab8bc0427f867b628040afefd705ffc6cc30c17300c6c2bceacc2b972b83fa31ea5554abc238d416fbb7ff672c9aeba59ce04861a1756d4521521d41f4a2a3749a5414a6cefb19495947da748e23e921ddde5f477119297b09b000c3c5d24c72a6da932cb3ac93c64643174a7cb21eaa1a533c1cce791d62d3da741a0ba96c5451dd096bb7700e1ea99f79b335988bcd1ba88fc2b554e805596ea68c8806238370589ef991ee3bdee04697f10788899bd5a36322471433f5111f013bc5a83a056734ff81c6d26628a1e8ae9c4f03d7d2b35391e436d38ba639901f38bc2961d6029a6c1aafa628f8c3975ea647d856c60bf90030e02304158ef4f6da275379c474a0120932c9a1c3a49864c91f885224e7901eb565b877d9ec48bad0dbcab5c8d6c11491c8540fed4f2fa70c6d9f00a20a8a074814edb1cc7426f0edb4847c528ebc953bd2e4e06ca7c5fa9fb5ceef6f00632946d75c86cf4b89575244146e657087535a6c15cd9d1e5d86cc2561f0d021f982d8a74472c3a2ba4949934e4243eef53cfbf3bc2314261f63a94b091f21bd20ba9e2a020e92f63a7a58f5bdfc8835c64dd6d8715714a6561cd884ec6d1dd1aedf81fe819380126456899dcd8578c8a1b5ff7813c8a48ecf4266135caefd255ce95c3abeb59c6e6c5508169646b09747521ce8f24fdff328ffc68f9b56db1c7b818b87a3e3b40ca50a09eebc136f391ba85c939f507079f8da52381494e1f978090560254447ab5408ede163597fa208c4b1fbbc73b14e920b2ecc7df6c11f959948a7b280feacaee5fe7ee8b93e9019b1c875a1effa6a29212a62151b36d924b6b3a923691d55f26903f3f6488470bbeeaa87f5aa928cf355ac116f9de752ac3e28744624fbe2b814faae3460319023465b33016379d63b957196655816ba21775e9ce088d7b589a2ea1f1005180e7ceed609a744a34fa820eee916fbf16573a997d8ca2b2bbec6990296f1ba036e3fa53bff763f31a7d4910f20b8f0b558e78092693193198a9d3d49ca4106d834a3c24a05320254b87ed1e85d3cfd025efd948c4c1a9ff210ff21b83efd8af846afdb8aac168084a05571aa9c156a19cf7005988642c7bd7bcec260fb75ca8be00c41bcbcc4185a928a85e06422b61ef8d153f8783fcfa23112244e1008771dea0198e3b03ad939f4cb0b5c56a85ec8e29a0b0ee1cdbd29e0b35271e7a122a01f840fde62f8fc6a5080b15e8ef6ba2786643bdd99fb8be2878fc35251b017613047b1d2273b0473a453897ac52f964ae8e693485cff825be993c662649851429a982f33f680a9dadd48ca2783e21b10a7ae67b284868702ed75dd1da50c3a6dbb0714bcfd83d3a3e752b100c031701ef0e1e78f2bb24fbebf344676ccbfd4eb2a8b74080f29157cb831c01a498b476dbf2c7d9087da7d2556ed5e9357628271e30b30517a3caf77d6f4da3b2189b05c24dd8704e13f1f84077c42f8de3f446eeb12b469971882ec92da2e386f4512c37b74cd822e6138abc261c809306bc684e7867cbb2ca8cec0706efa1ccef811e3ee5c19c6881336d2c6af1d42611b456d4d5af83d725f03869200b36094cc249e39eae82a30c09df4021a7ac5054100dd6a39940294d54c822f0f6784087bc528d9d89a6f8bbd68cba51a22ace54cb860ac15275bd86e5e3bb83e3c01abd20d0e9bf89534e2925aa5efad3710e320f9f8ba700b133d3b091cb86c34cd80b1b2a2a0088f1153a28d9368d4aa870110667f20fcd04d9871ee0b0ba68676f326b8b656ebf834a0949848a73acff723a2aaf086525dbc21fb9c0ac018d5edda965d332c7e7ab1d6da50541e2095402a99dc94aa321605a79b9a7f56f67557aeac4fe89ddf102d91f9120dcea59565975c32668439f166b66f99a5b137f949198678cb3a8066d0726774793a8d5d336b45e919f91739e7ab66cf802b43e638ccb6c29e0055f2c4b5c04cc82a97b8b9fc7e0abeb53517708ff009803e7f6c3e0f441e68d20afd2d93c198db9c09a9d9ba7302727517bceaa43ad32d24eb0214dfa099ae751bee13f2cedb893382938aaad6529f0d882e672ca8b967d233a1a6964c24720aefe6d4e3e11bc8020bb044e66e45e2adbc0189400558230df19ea983d3557de422e467918a698142439bccc9945a358640c807eec9d7c118c57231e35050c304c6ef74fdfea1b4de5f0ffb11c6f0cdc106acb374d9ce23a3e8d87518d3e51c8f22d1f72fe8d3c6098fbb151cd8dee0816990a57d3eee4b31e93ae7de71ed91d5223ac2cada623454c369fdad3eb87c1a3cf1db7f78a5c18170a656f4042ea5ddb1292366bbfe86d4e55e03ce6bdad59bcab0e6eb346be8315d2829780488ba7b396ab87c0344de50657fb2d01966c32dbf2864f22ded43aab6b75907e7fec0102211e2207f5e1a2abb9aa7eb07d9e73cb173fdc7414c47ebe1bb8f43e88f849b72a18c8f008eeb6fd286dbc56a462a630e3bb91e686151579a8359c55287b68cc6e5c3c388f8f8719db4c38890df3022b444dbecd96930860463357cb1704db5a96df5685b5d06775edd7080fe92dafc0aefdd464244f051d5884433133025ecd16cc49f5f2f15ba3f21df7c0d45df5cd6cb6a957c58f84a29dc7b16e62bffae958d511e39dc13885e5c0c76a92f2e7a943520372495bdbfb4444c380fb0270f879f61cf754d0a0e8405ac72055c8e8683c49c60fd36207e0b7bb262c831f2e678e21c623ec7e0997dcba3826e6f9183521c8a9ecf925fc52a3502e49667ca7e26f883ca22f080f889a5160db9dbef2000f381992f43ebc6a78646ba416f5669c98fb55c4089b586e34c8005ab2fb8dea7006133e5bebe8ab6db1dd23d2cf61f7a61bf0491e3d7dd3a38b7435c2ead79eda483d2e5b63e0e6ecef724f3f18e2b25dd31d1b3348592ac4763e00a628feddef4898004af2f93fd622ac1c2f0b01c6a638d50a391920d7122c42aeb290256b0241fd94755e151cb65af5002041626c2bf205d83ac52e1e1b435de33a63185ac57e151f5e5bb38edeb53cc9f931e7f0a003e49b8f04072b41d365c7f7d4732a332331f6031da484c8053f6f665c133fb7295769a39795508e0f11ea0baa2b7a60a959443c9b3c9a2283ed90a8251b79ee2cd836b7b7ee3740662cd13c0c25c560d0a28693bd8de717f06be8fa333640eac6c438265f3a02f2452945236fac092693b645526c354faf4359dc7a478dd5fd3d27f327e57fb2efae7aff4f83896f3c1261d812e9ae7349794b5835caae21baf0bb5cd53b40a0d2f2da4222467e2e31438c2aed97277ecec529fbb487b5da5d106eecab0ab856d29336b2c1fb1d4b48003cb245c1548c129be12b4a71b689c7a315c9c32a10ff5e6679d0a5b8018dde18b217e72f0475b5135a11062352e8842bbd5d12e0ec66176c7f4ffcc8c6e6c10551a1e1c9d3d3d2d3b3ca7a30cdb0b876da1cf2c924f17a60b6328bbfbf2a543c04046871f87aadc0f540190a9a42f117d4124087812267ea6abe3217a9dc9490ca1c957fdbce3a7c01ed1810db43e00d779c26046e0b43f816045d4d4aef0a8852b22d1323d8022114ae89d0ae51ef461af8aa304b79d56aa45cd77ef72dfbe000886caa001288e4930899d89ec9f83cc88a6869e7e7ca220f19af792ea7104b8690e8c2aea7cf8c860cd2f5acce672e1e208889dc172975cc575a9d3724fc2d92075bbf6337ef14be43ca648f7523da2544a4861776fcd0c4aa715786aaae79c467bd97785080fc817fcc586c7a27482973d54014a93ef3da843470fb0347bc9e8cdede180545ea9671a393006529736a24bad61446e8ff9a1474b65476c04f5947ae94a8d43cf861fbcaa894f9d3ec51f95d6151a1044bc1f8aeb090c593d0b7e57399d4956ac977b019fe077d291b78806d3d4a67df8b7fcdbcf25a4b040b56cff6c65e6ff4acf4cb081e78863ac0573218bff8625b3b4fef5e714fc8e6e7b7700153130e27c6a6a3581744c5de88538bb408b3ebaa2974913d2d4278475b394248179b0ac78831d90ec3792b2139de4d69b3844bb61e3103268ff6e308591d1ee5eeb122e672993a1f3c3d18a639c831b33a3d17ec804bac91589df0b545fde721e04261120ff8e9953845635d38fc6cda562d36dca09f412be04c337f792fd5dc2fbdc90d5e03af88fab2cc325598d4bb80e1099d8be1a507478935268f51b2be2fc8cfea130a72d0cdceacb7db274587d9070606e896fde04263180caa01f4cdcdaf5c5303c8d06f5eb6d525588aff6d8a39acb135f59b79ea8e1c5946e190a5382e4c544dbe066881b5e57cf225be4b9e182f87c34b34b88c535ad483e981f8dfaf98dcd3ddfcd33e20d7c4f8cd78c6b9bf7fb5efb663c88b6a8e25767407eeb56c5859c284de0c67e507022e2f6688c7886bc0649772bdcda1a2953f396d57528c78015ed3c246408947b348ea49ccb8326be6380a8395fa7220ad1f24c9dbcc1708e3d4c3b7ef36c6eff074feec4eb45317adcd0f94db203820aab3402d7bbab4001741e2419d87166b7308016bb05e968c783822e549ea739c0d8bdec0629e8a6180ec50514326b8e1c53872cf034ad11f9136d474c4a231218b88f7fd1ca29a3942558ca859b53b311ba1f60f36ddf0607042d8115819de7509889c85a55636b2e93742b4d6f35e9b58e5ade70ff195c8c86ba4110127627567ca80fdd452a54e2b3ba809e929e9aeadbc1c5cce766fd48b7a04f70b36417e80baf317a1906698975506155d484bca9d2b5b168006fdf53e4fc18f4ba4b073045b25765311a90b84d35d0fd6e7a744937ff7b5d661e754faaa261b98d85811bde5c1c5ee4d3147d6e66b6af4a3074e87c2408c6bfdd89c78a7181832bb5da0762814b2e93a35382692bcd7118d625c955f57a604e20857ae03f3e3fbf3a9b214c825528cf743240023c89820ba7d67bd5d8a44f86bf06d522deccb3bcdcde75ff915bfb5f669436f5c47365b99fd24a106fb1ba6ac4ff6541b1ae0a0f30d22699eaaaacdadb534986b87bf6180502d61b469d6f45b4c93789782e062e0b10528a92874e5915c657955f28d21274cc5e7ee840e75532743d6f2aadd27b795f0e3d22055a53460aa358e8a340389f56c68f5418c147d5ea8612dbe89cbf88a85ab66a88cdc750bc6b4daefc30114e594bb5781ad23aec4bb0c23edef2a7235498ae6dc2434361a1a791cee111c161808b40bba571b791716719b15bdc449373d6f4733221efc0f45dd7f733534146d98c00f5fa1264ec69a349212ec5e37d7fdf4097af98b7b5726b8515f9c466efad9df2a060904e00db2c8975abdcedcc4c3da9014795753615d79b62de1534b448cbd0b98af27d043e619f103b4c22769526d9af2b70e29514eb1eb9a13300961f7bbf7be07e50b0a16d5eeccb7b9dfc5601d8917e63513e07e18b278a1673c07c819a04b886177cb73f9fa76b15eec6de26e8b383044c5dc257972ec1f03a4943d54d2968da7ac10aba300c6fd7c87541152b5fc365abbe4521cb69766639ffa131090f2e1716f65bdfdc1a2cabb38d0df3739f5f34454638562d3a4352173806f055449aa426b4435bdc28dc62ddb0a7da28948944b1ea2f0ada05d94e92f5d868a290a416c397c82ed5315133e764b7cffc5693322630a854a3fac7816150e7993f49b0ad81f27be568f043e2a11c54f04b1194775e8a31d148368f19375ed564ca3e8b5b33e8860ff30bf12d4b575fdfd2cadb0e2acb096ecf50a41814bb0967eb0fe2905c3ffab6223a2aeee537d7339fea1db1ee5e45ff5d2c4f5bcadbe0a0ed5e58da223c5335cb6a113f62c72f60b5503d0a56a418d7e24a6fec4befee67c9ab6364e16808a7dc679d2b862a5c26e86c74482ca18f89c6458355a649bb3a90886e3b0ab79b354c13a2a51684de8559433dff6e53a234d9e0095827eb10049a8125a477cf8fc0c1070eb1491bf3bf8b787881c104bc19030975afca95e9567475498c003c6c09efde7128aeb2985567c9ccc52bccc6ed26425e704deec189ab1185fd52a125dda2f7475a584cfc57186544107715d27fb89b69514a218230fb5a87fd8747538cb0fd4cfc92682d90247bba4faed5ec872c90ef1f8cbaa950047b8b6d53a3e762fad4d75564d464ef0a2e684e43d63e7fdc0309431b6881771fcc032b30438c92a41fe4112be8923ec9080b270fd93ec0483e805137fa5f849111eae65f94d60f68cfc89cf006cd2033213747d0739641229063a4e9cb01ec47b88492f3469f66e11de40da0c2045bc6ff952e4ebfc130a186ec5b539f4e33a00ea4819ca5a9ae2027ec7a734e3ae9823a541750ee7d909a4c48ceff62844f12798c621478bd353fe04ac48a013acf20eeea8bd1b3c3f15ef59ba7563a5150c553652c7bd1e06571f72d8f9639cb1c6465052709aeb8213966dffe83d5fb4e4b978ed8b4d1b3aedb82c1e9db89cf2e8bf8092da318d85d97a7c58270b20fc4a2de71f9982501fc48599db76a52eb92935e392bfdfad1355e018647bb4b41a527a74c52e1895feb704069b61210697806f32fecdef802205a50a79601c9e8232dff0052d2d61ceb6775de81aaaaf015e04ced6ed1c97e8b1ae53cd716835c9d1f424a8dc6e03268f8b026e472b561ad500d02cd0cedc571eaa3ef1f040ff4becc0a554ed464aa283566d6293925303723fbe7b266799f9a2139f6a5f86a39368f3c2e126ed1d19ceee3c9c2f27dca5215a3a5758b5a5417241030f1537502aa426651adfe8d4f00f6867865e41c4c39367e4a242c2a254030bb03ead777eddbbd393472fe972e736761e8f8ae2b891a239359fca35b83302555289aca9a6b59c2544a3dfc896c98438464d7c123e503d50dd13b952badc182a59d085ec2af9c257dd8cbe8725aeab26a0712716989c5fd4ee5aeadc606a192085f263ae14f50bbb83c5c1d5689bf812f2c986e011085016f8ad71cae6a5c57efdbb47398b8a14207da32606979e898e1c96f6fc593760491e4a091019bf576b7ed07bd411ec641e4d3caf259bee758d144644f3e6e9a943da71402e3c6176f5ff7cc0b02974a84d9cbcc645009461f49c35424f115fa125d5e29403ce9be9441dd37343f05c6d8a8f56cbe59fcaedb96f3306e97491fa69291acdd5a80d016220010566a1ac1b59da677af3cbf33362ef681d259694614f842efc15065e6a50d93aaba93c1fb3eaa406c27132327707790070cf8a1405cedd80d5178c325f2f9061f4bd9dc501e42a1f43d92f1ff1d41eebcc18f26885e288a035fb0d8ebebaf32127caa264499f0bd22ba565033068d8654fb0030b28949dd0181be9e05ee28a9efe351ac06ddd854e0fd4a3c63730f99bb234f0a721004a9c443512fbcac416aeb704a96c70648bc54da1ea91e6022255b9a848979e27582844bc96fefc239e1ff72869ccf0adc1979e2797f82a495df90c078b49048fd73af50409f1c94657f36280b6dde3dbf442dcfbaed2749ccf82a624c4bc450405d6fff7e747e1fcffdac69cc3630bb258e9ec3a61574fef4128cfc848c11c7f852221cf91b344736890722d5ac2dd591861c020e2e951ae71b91538a6283e43cf0b0eeff658b4a7c8954b8436dabefdcd2cb6758aa485cc7eb9fb941e6fcb0a6273f23a4ea95b355c0ab035ff5e54230bd35ddbe9d6e074637ce90535871219a8c21062c6fe8827527011c02275794042e7dbc1f31d3e2494877c5f48f2aa6e42044d3272307519ead9acc7957ba030d2da91229d80dbfef18c77eddbe133e4b4fa54883df2167ca20d67d87951be187d96a8979f39d6f8e3b4c82ba1afb3dd308b4a8f75c5944732992908879bb84d98a108058903989b73cdf8ffdfcaad7ef2231cdfb5e46f7f53491c5373339fbd48bff4459f51545b70d1f4f486b5894bb9b8255fe609e2473009d70de4fa3276acb8fa28234bd3ec00e886127d3c9973ae11435d30e1b0bb0451eeca81a28f41333b84614e980af898533249b9aa75534129dc92c6736d5159e9ebfba6e5202e9b15315ddf09822eb4f229fec984d6b4b17aebdd31e789256fe4c7e1d8ad664f390879ba17501f0152863763df641544c7c74c09950c89ac08a02e837f28d69e7b147822f500a3b5d3e0cddc673e039f8754577e62336943aaf49380316923fbd7880837fa5a7fd3a2a41f83f2658e0998061dfca634ac3eef0e839a64df2e5fff05c41b1c43e8d022a5c142e48352e65a3d919d50cde624446043a89d714e2b1b6b472a423e9505e9de0edaa82e002c800c93b618b7fb91be4e9e95839855f0deb34e863f2e3772bcb01b96dbab0609955db9c1bfd9773b891cb154fa338f55316d7c1e4b358f071dc0123678930234fd289c8bcb4b97e2ffa53c1427388ac297025258b756aa53a103ab1dce7344c649c421b90c24693c06f97f224cca6a7007ad7a7241a4f242b766561f05b7112e31cc7b085e35db0135d40a13f1666ab114dd7cf807963c5d0cb3dcda3701208e6c0b4c309fabedc28b458e45d9329e678bfc8910c98b78a699a6a60dcb024743afc1737c8c0742cb9d737ea1a8ac4ba95d972a97bc855f6c95316f77c1be3bff036a50e1408ffc2cff7fc172aac49e13c9cc3e62cdd50330eaad62e72ca63fdd0bdf04956c9762f70b6c4ebe09cb4a036fce190c93844778e0232dde4ba061e97ad60e5d9d48cf14a936a42f5d90a82f44c80e451a60766691034a781d4d86fa0e90501a40c0065a1e793379f876d2575051da6da9c3fafd551309fdaf2bb851ecba63ae0b774c4b0c5079b7be7ae46fd7eae4b3e53a9534aeeb14da95c7b7ed54bc2715d811b3547952a41641c17788c54519519b86a86ab1c8ac8081822b75bdfdc6e99075e33b7e0b799faf2b0a6798324f2c202f69f40862593b66a6eaf6a46c2b9b879b509b4398f12e156bdcf138b2666c5cebd973f21249e5684c974489ce803d56b592babf0f46d031e1ff65ea02b33f10b035959aea39c588774a28743f8410deaab34e799e34b1d380ef43e221ab40513a246d9ef060a2c8a8ee733147f9291288e2a507a03a2767416d37e992ac8730d315b005609ca90395d11a44edf0bfe378001a6932655c7b0cedf47b166f456d462ad46523df05346a098a617c5519fd93ce8a02ac7aee9d2318f72793623d579f6d9f4542e6ff84e674f0c78d1192a784fef960161b7442ffcfb523a7acbb5ee5e9023bddcc8be8d7ac308a96516892cfef267be4fe8675deb5f48e7b0f25cb048088d61cbe7cc2bee32dce5deff28b1bbc52ad481bd4f07314853dad43f6090f53d9f5fcdb355f3a3093c51909cd617aa4558ea67cd2a59e83861892a6b7ddf0ca24cd9f3280ce56d65e509fdb25d7d7892cc423131f18e9f42e79b09d026eb946e34411020a129f3e51836f9dccdf9f15b21636cfb620f2b5422944d24fb589d498377c528b05e88d1f17922c69ff54e3dd1ae8787ddd5fa01fd52d8fcb3827bd529092c58c2c7ed0c28bc56fee8a7e97856dcc65d25ecef8e4881574b5dea26040cfb2490ec1990068882ad608c935c2e1e94bb481830af925c4f99a74880a8762a125f9285be843c4ebf84999513cfe0d9c7491c741e0069f613cfa10a23cf8db69e66f8ae46aee89795cd8b566f4073b2b37f52bca4579e00da3b42d03c71ebb0462e4756608e18d1d38c1d42e67e490c07532b9923f55d33ed87dbc2513421915d5907f18ddef17671c140ddf11a596791ccbd74c96bbd03f9ed597434f728274ef06bed38129e176b4a9825b9bb5c03e14f5176922f58ef8f84a3a6b575ade0a3b67a9de098f9a41bb93b3d4a1cb9088c81a7c811e8f409550bf329e418b5d5cfaa2ff001347e839b3e0bb9ea30c687999e36f3b7cc54e6ec2de021e78a1833d1cfb46619817a5ebe5483058adceb47ecb89d2a30a98fdd4ba5dc47ce290ac3335ee4371f3858a16c02653463c6642ea7752f9cbee4dcd4d1a6381cc957c3b10c5bc53e4506b8e474befd02e514830ef8c4b1975f64c413f514406a98f42d991505e12b567b4401f5d944d434fcc0d1cbe3c53a8d958214667c6104619d330ee8e1c1a8c10379f120d2cb1cab07e060e0361a48c66f5a794c141a3ca92c9afb255eb1d4e301047892fabcb8c60e051f3c240bbde9965bb9fb360078126581e0a9e98d77e5090421bea07b82477a22ba6b30eec3917ea049636e1149eb2223679a5a8a2dbfd7aced3064609b46b37b0db25898b361738f44886c486ec392feb5c6263c32344f6e6e008c3212cb99ea88bb703850f04e02870c00129291e84a37812cd8c0f0311a03b6e2d67230632b7a0db409a20b187c1212b7af95e6f6cc2df0bb64c4e2f8460400ebdd6e461d22c08cadd35378402355a291a8a55c1ab9e67deb50c541ea32348b626f7b29dd89390140b324e39b5d61891326c871688f51456eb677c86736a40e75a442cccd9b70033f224dd43c6162cd217960e350a43cc443f53221e50b4d3e6e5db1326da4f2b9a9e5ef89240fe3b9a1fe2d71249c5ed36bfa5746c4a3677c725533dff358363305ebc45c89682f68bb4ebb38765cb80dcad025daa8073c5a8232e50998de9a87b24b8d0e297bcde9625b3b023cc098b8ac3d7c30505272e1ee9c06db6864dc804dec00b39ea1b65c48dbb76ebcfe64d8be30be11eb5c67d25bddf07fced703ee5fa60f7568b2972b8172d629fb2bbc50d323156e9483f2f55cb2af2965a6403221d45c4c7452c372f437e046069a309593b3ed9de10ccce36ab6bd33d019b77e5d17c9f632bf4390a4db51f043c62ab0cae15bdd7ccf345cc8c6cc4ad4c225a02fe35be338bc8332460909cfbeb0f731d6ca873d04765f51ee11c0f1c6d09d1d166aa1312bd900ae4e58a9acc81f8c3618d1c73e6299887fd1753589f23e2ad6b987ab1e85d0cb5bf9fad4c71efc6f2056552beef494cee7cc8a8391bf35087e1f19a7a318c27508836f4ed57cc144e5ce7c5e1765bc0b5734dbe5b25ea3003308b863df36349445cc07b6d955d0b03db123b597183d8e429c463c2191af5974c2a327a383d59324df32502c0ae674eb489bb0f85ffa27cd03c51d0771f0292662a78c37ba782571c37dede63935bd87357d29a23f72882180f2765cadf7e650ef9ee7462ecf427e5de3578304406c846ea1450a9449e9017a5c2f8881a487fb9f50a741b092c88400d3f909a026b70920bd253d54bd6a13ddb6725c9c0a49c9d0c0eabd2a3bae4d48726dd5f78d2d4f8da4ae343f976a20c57690612579a84bdf244c70ece9605a050869ef88250e96e0d1b651447ed0b05ace5311aa4d9ea16e6051cce3910448aaa176c28b323bc84aeb7ee12d4103ed260713a13d6fe4f099d5d7c75fc8edd33989844f826f0c96cbcbd908cfcf4e50afbb4dc0ffa8965a87bd41ac97bd3370194e871f7c25e61d1cbadbfafc6ea9af8993af84bb11bb07c8c53a904661d759b00b6c2c35e42301a8c9e7266fb6bed8e449d6cf9e96809f7ee0a1d1248a37f7dc5f5a1c22f0292ba9cb5813618d2233ba60edcde041aa5740e9143177e7a80b294f3fb8ce2365b1fba46f7db5e0e0716f175a26834bbab9e65b081c932409fa31b7655adbc59a8761f23fd461b85298b597af60e55c8f8a74c5f6239460e65679959a46458f9a1d0eceafd9217a9059f8d02156621dad1675b5ca6a89334dd0eb00bba5a3a918ed0c99c83dc9eb28642a71406dbf1bd951ff0a5c68493997f705691318e361be28db8ef1760f4495573e046bfdacb177d8bba57080ce71fadbd56fa83a3548f48e369fbf0957f9cfeaefac252150146db31109b3bec386ce0ef85e923b6d0b65fe622b1fbe7888133665cd4f6f745b2d1e7937df6440117cc6bf4c92b59fb7fb186fa2bfe96e0bc08e02b8d553576d1e29740d81321af4ad1d19503cbac5e9a303239e0c96fa0e6d41bb94d86a88006f13a7abbb5b76aad09296c90fd33ca1814c9d50a76c4713656edf25f6a495167cb4e9f0289336cb6b696df2d78677f6f26c91010321efeb0b5e77e73bc6d449667f03a47bbc9b35ba8c190fb2f958f4305967999be859216354a1c47eefc73390c72921a708529514621c0b647381cb090b015b3a6953188a342bec16b22364e1724e4176dc95137ad43717b19cfd161e4b22d0842ae3239dd5232b24ded9fd0d1d84acdced0c7b41d5625552959611e5a930b637f0b1108a52ee1d920a87ddec2fc180d55adfe8146b5a22d9d60a2ec8a9de2fe8c1412e2cef3dd6602cf1da9ec5dd190ebff6efb0c2753bd6260191dde8b04cedb932ace8856c6ce1123da802f424b840953a420c89f71bc37f8f213a1b41f6570ba84ff344565667ab499bde75592c8f377934ff6df4a2c4d3685465475f5d19bbb0bf8c907c2b05a68b3aadf6722794b10844fc6d1a3d9398a04872fbbe9e8a9c2457bedf0793e8b9a6bd6210296676f48e289d88ee88b8a875692088bf8bbd5d20497c0dfdf3577bf93ed6b933293db90ceba7d59da45abcc97319ab5dd53e8d9355746edb5ef391678c900dd62eb77429144cf7ba788d81c98a476428b12273535689448dd8daa6589d04e196da8a60b931b8d2b61efe1a637d884a96ba67b716627fa09bafeae308b5aa700e4eb86a1aeb8b72f07c9035546aa6e5e6a7cd39a67c0a907d02459c2f2d3139f0d606cc41b77b52b51b09e375086a05a2b1fc92219c6d6f22d56193900d4524c96a15eb341b7a7a5f2a8c97a71761a62cdc8197c59a77743fad27e339aff9371dd02afa7497ccdaec03cb9dd2324f3195e0f5b7355d60731b4095efce2a854074b0b6136bcca0fbdd5d8d3afb86c34c402b73981be51f0a522ba9060032869228256e6689a70ded1644079dd165f6d43f516c3d58e20b91acea86af7ed4bc538c154f7875b2ecae03b9db0392119b2c5430d409239d4c130dfc4fa713b2a6ffc0cf33aca05767c062c67768428ee18206d1512f8fc5de4c426130defc0a3fd080be2caae2a9af6c471a0053a40d254abed0ba8c5d64397500a6b4aabc4ce534eea950c09f25ba4668e95f9760a0c3bb402ca5a7aa0b3ed10b7e62f97082722102652b3c2db324519b03c016fb6e6835d29ef813d1e1e19f855b72344b61afe04ed05ebfdc467bba2aadcb9d60cef71575e621fe984517acf85c480471fdd1b55a30be90248aa488c2785ea1ee7fe22a083e24ddff4c80d48341253600375f72f80e966001a3579fef16d33b667abe86547a59df6febfeb5566c7fb950a7db46abd26480c2fbcea41fe30e64a19ea97576684c9411acab0d11dea17be570630179aa4a510338f62d82d8d6d31b881c61fbda0e6ca8414a21b53f905618d47e63131cbf234e2a2a51fbfb3d7cc51baeaf81330a3b67ed6ff86fad2cf3cadb27aada5bfbb3bdb75092bc6eed0f31fea677f236d08319085c7e8d01d332b45c50eb8d8e64b0c3608277e86dc4abb5836025174081ad7c5b1f1b3ba352ff8d09a991defe931adb7b0d6063742c848c80f4bc91611094e268cc7649be95a223b6856edc05e30d3b8389930be65189a22d189191b338a24e4c11ac84a1b6304ed18c6953f8054c2b5e26dd0f68684d062b06ae7e1c5bd00c1b5a2b28066f187bfa0d1b7b2a42fb467d0047c4e889326a846f8e96333a22a6074afe04100ec5dd700c0df2128aa0e4bd7df719241d794a138f6d9cebb7cd959703451488e8e0cd07b02be9e000c4b484f9a29b0b18c7c79fdc6a9c3e0154ee9717344b7a00752f41cc80505d193dcb5d6a61b12b7dedddc3bb4eb7c0a79988f4ae33577da0ad11b8a33db4ad19516d2690beb015b3a0515e336ee552a800b605e0ea451ff382a57ee1c6964f93fe58bb9332b4423f48045cbf6cbd544408465177ea8068caab8014d4e531bbf19235c5a6d6d25c6371db453ca5a4816ed725dec9012b678d37be1b273ea55a5eec141fb4d0453d106a3e8d2767541ad1e6c697c3eb205571f37ceac7e1b90d399a8c9567091dc463dc232f74e752d71e1fe3c9ee22c084beec6c9c0141c07cbd3eef41da0e4981be88c6d230d8e380a450324e20bb052b8801a783a241e34494ecf2fc66a203c7ba4db2aaa15e708511975c9271f994f78e98c86c498548724eb21bd9e601c00a56ba45c51e0c4a554cf47a7c8a19440e07ab89706f9f5c0b8e0d30a4ab4100b80dc1d8e5c04615ed96d582c769a0e1b88c3ff3e7caac4e9d377489c24644e371d5176f6007085acab6f575710fff0dcf09bed0b0bc31546f073d56d102d3345ab7f89cc0f232ebd80a279ce3ef02cc94133d428a2cee016efb30fbafefe0552e7eda8e46f7f0f24c4e387e10ee0fa43d7818e870b600365596798013071bc4a5802e06aa87240ef6c19731edb252f6d812533f81322c08f13bca256ced7c968c6e63f7456a4b4879b642fe6fceb8bbbfde65e0c8358ed70c7ef5f3a3a540b34c75012e8eeedc4cc7b412d8f2424c1815fdf2386ba4013240845b08970ca06e0b61e2de1096375dba9b8e4f0ac8ecc199354fe37cd269d8dc038fb43b737c4712bc930b30505d05a7efc57efe2a3dbebb712eb66a5458413ac2714a7c0f261360bda749ac4a3f305332cb75961c3ee7f5c0cc0e99e9fd42c5470e5959fd9e287db6c95cd2ced1db06ac3de71b5899b7225c506cf17c51403a6652580143e63b08813a1e84ee9cbf590c69226589006528124980a50c4ec2362004d9aad05cfff3bade72004ff900ee1b49c0dd6bc52b90d08798274b0ec144df2d01dfc488772fd701a9ae9011d7fd7ad5f538358c1a2d452b473fcc8172023d3f8ba347c48f90ed2637231b6650dd77514ee031f0943a3c90add59907adcae2182dcbf2518d5f1bbd41818238a864cf9c70d0d63c3ddd86222cf410ac5fc9b3d3a3694ba032f649f8527ac823253c2193928788c21c31a6a3195bf1448eca1c54f7725c04670034117868aed0a87cc1a806803f15dc9b1b0be3a8f21672299b514bf559f8f282c27dda1d5498f3a39823f0ac8b9632bbf163944a4155701d1e2b61013999cac463c0faa74c2360ca9df26ec8a02b1a117bba02e41306c52cae6e90b5a561fe4d7d66c221c94442a2d3117f2a4d73994cb374348edc18d6d66b91b2415f3018175499ba6a2041102158964b5e529c103af0f6a189a7d169c92bbb08b4006c6d86593280df41d893030c1ade3f3511a55f996c00a1478030ea60593cb17bcb417b589d18776f49c660f1ee3cd94dffc2d4c3a8381a272cac82940091e5efb083e4b942b90c430d966cb0f05a746522b5827becf98b724b2b0fecaa72a042af4692ddc1a884b5ec80e1c3fd14c5f34929c98694e3ef3943552907d90e8c47913d89ab0914f9f2c2e5c059c410d40c3a30f170b969e1752bc5c2b6a8646014e45c85806a56c3c09c30f3386069917c69410009c957267f7f498e5cd88e4a5cbd4a2464ca3f8717f4c2db1ea3abc3609b6c4773ba65f0c4c7c77df42b4a35e66179b52fd97a13f5fa01c65f29a317820c6b183a9ec2558021bd7d4d8403ff8239b7791bee6e2c9051454d11fc2c6532cd973cfb0c60cc23c0f1801520aeed6bd94f109a72be6afc9225e656cedbc27492662503c71451c63fe71100eaddb63f4fe69be4e55b2dd661c1c1d7810e1d6a33ef60ca8ed8d10a0bce5ae0e685a6c216b962aac687815128ed6d353b511da6d722dc9bed419ccfeafea861248b46f83dd5fc6e4ffd5d24e1f99f0fdf19ab339d2bed9b9fde07929de34f096c3a8857e95fb14cacaed37b2aa986febf6d964769a3633b37cd661404576cf772639e1c5517ad0da147c5b83c371a1bb129344735feb8fee4a0e48e7246943551aeb21c85fc6237c255eb7928d3e1b282ce77898494bd62caff71c098d08112680fd2f5c41a6e455c541e2436d56f613221b2b1c023a7f88ea7ef335a5507e260b7a4ee1e1debd9f1fadb1fc194fc16360b4b808cd28aa53b5a78b314b53c051c0e9ad92ecdc8bf48ad8f61db13d27bf395c4809d7274b5fd987fada5ede07fa875f63729feb1168cb76caa687c2a3771bda6143af57da4dfe3205b205bd2dd04b977960d03117ae20ac2e6b93dd94a819c6ef19a41f257102bcbde036257d05ee450884f6929a0c8db55621d4513214a4d7f2c19dfec70cfa27fdfd7dbfffbafced8d8a61a25b1ff9314327bbd37afab976d3e7ed9cb908fee2c33f21d21166bf95f39afc7a7a6fbf30b04abcb8065d8f8f5f643d5e80cd0a581b6ff5b3e82e8d4c4b6f7d8a065f81eb23ae69078e4c46c40524c5c12fa1e0c5bb9c01b4806c3d9854898a5fa93067823a088d9813f4de91492826b557d2405f53fe4859963f76864131f3dca2af917215eac07cf82224eec45ff4e03ace03879952d921129521156459230d6d58222570e066aa62929dc3739da080d45be41694ae8522c5e043b365062e5efe3da39d8e0bdbed3108e533e629af25846989dfa0a8b5ae4cd012cdf1c2f8d56ec2bd52603370f146c7a591ff98cca777acb7ceb8d47e0c40645bed63b1f97bfbe7b86d35056b38fa00b0207d4f2849521c3879b7935ec887f5a3d23ecccdd721d95532a3e80f924e40ee36f98bce7f3fd052449cf81f29e6bc2990a5e9c38901d69a456ab45e4a0e0382e6d3ee83ba4188103a33b62cb014560a7be500b347143ba965b670ce60aab16aab3a319ca5e0278927355b224d315238e56b742c5e7b7194733663e298d0798f896d1ac7c15f53df53e47e374ebaa2be94aca9b81ea9b1034db84889310ffde8003f697244a518073d875fc77b4fdedb48cc3654e66f9ca48bc155a52d632d4c94c14b1383ed5a781db47818582e984ee3b725813d5bbc609ad217fe7493b1fc8a0090deb67d9b67da0ffffa6fc031399e2be29035eb721f9298004c4c05efcfc3d04b1f79abb23aaa05bcec24250d03c470c74e20923801e10215deeb93e0cc819c6a698cd04f92a84cb70561457681816ab64b8a0d1b94ee43ada447fa1fad3380565d40f553090be8e130c38530479435d5c21e71623a18fb1f6dfb603c1cee8942bc212c8f155622d4a513380ae526ace371c74bc639599c86e1fb69514056b548c2bfd01472be1b32f8d55145746137ec212cf35b5dd86b733185ed392020e408701db55e259fe459c6cfdb1785dcff245010cc8282b6a95ec61387df5ac4389aa06976aad34e80f46f84d359e5299dea960291d3d2cf5fa8ced9ff6d178d8a1fedd5b3855dcb3d7c76efc88ea2ab503af5cedaf3040ea8f230b97c14496f7fbe5a1336597b154d367ab063028b17ff52b020512e1b920f3041c72d8947006c914633f506f14cd231b60a24428844a420c3e92d233e63d98924b4933a31d253348c3be477d8cb1ddeb35a829e25444c86c5a086135b3e16b8bfb17c6404858f899f1ce1d067634b78e4e12160e8189788a0f9bdedcceb965ab52a88fdcd087634eef8893b910c48daa02b50e655aad6429d34536c6d843b9f43c972880f381916aac7331750558d1371d0978514519a25f5a7e3a9c203ef1ec3f75fcb45bf69ab30f06e6f250c1858769bc0c1c5b7888eeaa69e98a3c742f97d6ad90da4b96832fe3a1c764285fd755f0f73c465b6d489d62b26fd1516c2db65ef292128f85350b70857be437e1d9fc85501f19ddd1a3671a107244672575042f52c34fda088a779a641da7fa9c801a2948d2bcb7f6dabc88063e9f34792c227b6c405403464df0b706091599c20dde2bdbc730c745aad03409486c9df099da4cc11c3176e89f8b880d7fb22244f40e5c24c6763964bc399180b7b6d7c2e419f021fd4cea3930245b9f6773ecf78e647b102efa5c2a6220db6a66b823781a7e4d8f4f6dc56c0161fb3a579c1fce6d9bfd4ef4434ee6cdcd30a3ba097e468f5ac5a7f0102864e31aa8a98d1153c4f892fb39909b55510940c43dcc98828f2bd097caaa7b8f9cbcc70c88917041e64ee753a70b00909346764d88ae5932f9ef41af0a4a91af00ed60a61963c2503feb4b298e33680b7f752fd6b2989fcbb0fe4cd655e8e9a6043e1645cce28598d454d058f6b1719e434755ed730a1f5af865ccec639db24243b5bb0e0cc86338386519a7f2abe5b958004126f903b3cc3adfc18a0c5c326f4c9908d13fdc46e448b1f230aa889e9e54ef7cec56f271b9746b53c96b1ed2258a96db84958986c83ab80f25833113851abfbdd3aa4982f82069a010718dcb7e9c6a02432759e17bb76dd19ade07866e3fe7be251531357950ada085840391731bc7338c3340912cb441ee128c6eba3e2ec444f8499698692e626f5b3ebbaba3a123b8e065806ebc388153a5693fde82a823ba5a9ac802342cbc8c2a38ccfd64749750b0b4f560f4418b0234c8d63ed0ba121085311c0191f88b668f79f63b644323429e7f1b67112e52d1918452b04c41acf1a88973142dd24da4d767275c78551d5c4fdf07e8d10eac582f618b7a15b899cb02debd005df96ce5a379f895b3792b204b9d51dd34121cb0d410263aa3f86d8d0e470c6e9d473a75bad3dd8901d939781b72e7378094e1544572bdc50b7547cbed1b73b4ad10a5dcaa860501a74d5082e019bf78c8be41b8d3ec38dc8b23fb0b5870ff8c7e925e0ac8d10f8a782e5a7ce72fe99c2e2011df1365c51ec1bcad618cab67ccdc72ec6c81cd830a3f8856c7eac5a15be7ed1c1a41b2e89498a5f13a38d108c28c75ee5125670c39f2db485c8f168090e40872319437e09e423d7b2508b38506b5613f2112cff75c2d18e019f297189134853879051291dd96bdcaf29da9eb6791e55b05018e415e03d0cc3da1b83784cac16b75f69fe0d913c37ceea456710d668e23b616e3aea022f4d9359f4bd592ae83de73297116ef4f8f447af911f9ef201010a21a178c1fb956cf9e548b23d6d1e5e1f1482840d0bec8ecdec88f8342b483c566881395a5e8f357664e85a9766f6a1f92dae615d009f0b6bf92d1c584c8dbfbf08fc08db87f2bfdb7798bc2d1722b1e21701154b109f705175f245f52ac467de4d43f59309dd457582f0120f9d1b5c5e65b2cb6dc0e20a52bf9b043e9073c2030adaae3c64ff00ffb5ac16d2ea0332eab40ac9b19ffbe68b2fe816ec9bb6b0a89fb3f93364ee03354f8e6d1ae4acf9e0cc7b2e22d10a8243bae41d3fbcee19b4e7ca87f5a730b1d8f393e158b7cfb3ff6ca28ee70fb8ce0ffdb0d388c60fc9dcb1e8d8a96bf139231e95945f1d2bd94a498eed689894d9c293c88cc5f8044a16c0c7cb334624143beea6f74924eb8664c4bd49769a415564fc4c2cb3849604895099f12fdfea6156264e8fca1bd4fdb8ebb5de7bc990225cd7a269b9dd8ea299cb70abe2c93bc90b355b3c99b60a40364064ba4e6d9383e6780a07ad0a4ba123b01673ace8f4ab4dabdd85ec6caa2977e8087f626b59258edeba40937a00f43280acdb9fe28a2ae53361f41856a01628584e02cad10ac745fce64506398a7b4241035168c6d7918e4883c7a47c8b0f0ea48f0fe6ae1a74ebee8069516f40c66772952e2dee3807c07528b49544a5a0aac4166bbd48257d29b9c6151da45501e852bc0289946bf49b4bc0c5ff15092aa806096539133ed3e05fb763a1968334cb8d52de7de04d17b33c26147860822b033aefa7df99d18d9b1ad61d30b6d2dfd27eab4c20c5cde4c583320d562dc0c37e29a74d6dc2d2143829e5803adf99c410e0202eb38f82831339d6cbee8046c9ad0d4668ffc368f2f417c30db18e2507a937c014024eb930d82f74f8abe096fb84b2724abf59dd9632e4c6ce056790876120af347f03d6dc2ade35dd573e7e6f301e849990f80071abf5ce9e5d0a0d17338be01c581cf37cb758d6cf525b5dfe18382f48ea7fad37825abd0cbb61cef9374901945f48ac2087b13d6fd8b2702a528a3f64e69a9bb83abd9f162d1c2dabcfee73dab21668e8dde52bd2d376a6b8c8083db605d703814033722d3203cc4956250f1b09fd1f7f2dfd3b2627b2ddba7af8c61d6f3f71f7be3abd5e7082127ad300ef1750e382bd8ba25458671cf4314306420a7ff204aca42dffec34cb1e0d9c27cac6168d664ca651bbd68125ccbb19a86ab58c641130cbb967d33888959adc594fb00fb27d1044cb0b0a16477e36892223374ffe480697e50a47311e0888e0a5048b6b65e68788740d3168d7e5600400aceab072058e69f5d318d965cb2dbe84b24d660197ad2d94926dd5053a00908c655031876d5988dcc5b025c40390f2072bfe0d7ccc520290943b23e045c51a2a5201782d46901d1962f0829732b2978c5670d79d1280a7f5cee7756b45fbd7c55ab581f13902e6e2df1f9280b1eab4edbcf7e09ec2fe0476cad96437921374ff352554f8ec6a41f7d63548497cba38d4fdce8c25df524abe8c521203259eb51fc6b5b55356dc4115ebe09aa962fe78a699c005525cf33137b3d4409e85be537f67c13ef82697f1bfabfee76da875b47b3db89cce289cb791f6287f30807b54e4e83f642910d4f67aaa0b188069f7b6d781414ce6529a2fd7144fcb7e43769a7f2e67bb8f5ebea63ffb1413424c9c9e23971b177e6bc74e4260099611809a291aa797fbe2e34d125f5c1d51d934cf1d8f5f9e92bac338abc48181d8ff1983857b3ac2a50fe24d2997c0e096e8244e34a9692393d6d068650ab4ba3bd37a39f6b6c0c215f39353f82c70269202abec1a19164deeb2f03d4f0fa9d10abb01b8921d3e76f5c0a7d7e915fa3b9d8afad555ac0c94d7c7b4c094aa55cd1c633d869b5fdfe0f7cbb40d214d47c881865b4626088d2816fb9e838d60515dc88d09f299d83784735ca8338f1997eef4a0a0db1c081323080f6d3f99baa3564a56b2e701b64a0ee5bf8a7579eaf30a670a11fc79df565025608807f721282440179e282c21d5c40f05a3f89939655c25e387e179f7fcefe94c996c34c1ae5b4d435a6ad59000dfa508291a8a7b6a4e5032ecbd6a391ff5411ec93d09f0b6bedc40e97c4d53c16b682764e6a7aab058ae55cc9f5de1c1188e291abc7b61ce7246b758e4a8b00b0dc94ca1e6e685220b8202e00dc8bd42d995855a4d1a3c9a55e7ecc89aca9994c68a2650caf7fe19d0f50749879b95de07f15a3fd3b4f380f4be2abf5ce8f5e00aaaffbd312b770ac2c0a4445ea7e5bf509c8b70f9eb3778582c769866637c5e64cec57fa4444c06327415560e7356d86c4fba446f5c23b645d3671a5c65e27158c6cd8eaf23e7da6de8af49b0760b0c41540cd271d68c761861beb5f05a022a3e28cdedd6c7166d296b4c9eb224b5c67ad1ef5290f75467bcc62b72f51113b0d74f9ed7eb2270d476faeeb492352b1bafceed3a3820a82e1ab0b6863ab34401b5cc21c69fb8fcf70db0813356042be382b3c41328b0fc3eb23fb4051f9401b0452ffe439dcbecd929058d1e6bd5e74c86f50ac0cf1a6eddf3098fef1d09f95d755abe75e83595c11f18143db2fb265aa4681f4707027c671a04ead6c016cfef1a3a98841b6ff48f4de90383a2aa2b2bb077f95bb300dc08ac725c7b4bccf7045ab535f98884350920cf84ec6d54aaee5005aea38cdef9c268af504549695f9484e65c89931cb47e2dd54fd21f948f4da250ea66e6a45eddaa64b84586467dbb5b2b6dbcd7e5bbf8b30f0fbb308f6c62c5d7ab9672a00e4c84ef292087a83de48ad29048353ada8449e7e3e80b4ba7186737b8e8d379b13944a1ee80fc27147ab509d2e79a455bf7fe6132fae14cff4af994a53a8dc93608a24b608edb8a5561047cef37643486c1d4bdbc495ef58175013146f893cdf94b756446e0a7906aa09c8330a09853f71be04c8cde8f6e715673ad18492222aba28c65a10a4e862b8fc998d37663e9522eb07211d2ee7807ab8f4fd89cc182fa98b0c6fb87e35da6b6af8dc9899c32e9417d332473a85c526a790be20189c2760e76ab79a6bb199a088fb82406415eac19f9bd9cdce712d4eeb6f8e2b0cdf9b44b817672729b4edabbaff34bc020fd03579effd6225b88b6323e43b8b22978cdba79169bf008ba0140a16c3eab599ca5358a678821731053fc5b9d7c45a38bdc6959ae270dd8dc09f2d28299131cbb347d37f38dd3507eaad2d7e8079c4cc89120736f5181d16a1c9066735164db6044b6882de0ff4070486dbcc3f9fdc3ce70fef4551b9f2205036beb8b1dfe3a7031cd94fdda66417410269687303fff3e8ca12ce50ae31bbcfaac92f391c157953471d537a0fab81280c61290e4130184d8e612ee609ea477ecdd055b80c9136d9de5da9e04153b5a5c044969c9610e5ee84bd48f735994f1b51a7366a5d3a649337337f14ef5d6779887e4f4909531673ee038b479832c22b145100b14e8710364bb6a15b5e0f55ba3f13b70fc19b572ccd89328d8f0f7477c327cd4a8dbcb784929be789bf425f8afbc2b89b44982d71301f39151dc7101bde94b13526f439fcfae20709a3d49624e81cc16ed487921fb6ec0228473aae5af9bdf2a997da9d705bb57bb3483f50386123dc809c33b5b5589a5af02f6c53ae3b5f5deec43a1a5385fb9409f26a69f65cecee7c790810b6da4066c9da9a33ed40f1dba7951b1a6bff9cb6bf5bb19227bfb727022f65a0046366385f278c88b30efb514bb6c2d4064b5e7df8124a1de99d8d94951fa4781c377892c7e0cb596e2af1fec729f713e6171970373a0fe8b2a07cc15a95e70fbcfa8a924a05889709be1743dbc89d445997b71af710fef22f122141aaa5c4fc9cdd219f74bd6cab9ed95eee4e68afb19765c67235100fb59cb6faa7e71d1595158b3f06d166dab9167b519f7dcd18c75ff4b123308040a9e71bf128a55a4b6dadaac9bd1765a705e404c0bb25a7ad42df4488adedd9c2102264c9d1fb3e99e54428a89816b90deb51fc42aae52328dfbbb0a3a23232af757f3fa981a43d3de05d0c0d3b367e7476c422979cedb0948143e61327fbdae48baeeddf9817c440231ccf7f94b5113c783a9a6100e120ade1474b286b25233dccac40e96763493e6abc38fd1b199bf21ed191655fae7e881c5d01b96e1439dd2eed9eb44d78d908b4534750840d7e0552a775fd9d3cda3603b1e46e1b863c9c257b3b1cd6491390e5a2bbe9e488e18f83556d01f658e1f359c6849ea1a9b2c21bae829243392fa52e4c355c0d9065a978e49d521e93869efae57d11972c26195798a9f1e96abc7a87ca3482a78d9a9d328bb51ef9fb24004d2844904de246916810db876d3757baea0774be0905a13726235135195461a13af57b7b9ff6b2f85ce18aa9a37eb27a54a20039f931f7c3c4ca928119e5c21efbe0ace3d19216a8706e1d6d180ae169a3c24e4ed1d3fc2236e207aef5bf611cfc79910d482451a83b5c4c74c8ddc8cde3299c37d089ab0cd86ccaa4fa214d15102245b5e81e202044358dc06b2344b7bac05ba3588d14635353e59c6a7c4be1209b282405a62c0dbf36053a4883ad704f2db3ed103782dc4cddc0da565de13c490fa190ecfddf623854fe84e668e9fb757345b448b2db6eec6d337a0689005063dc89754c1c937f88fa3fd2db0f1836efabb297bb66b48bdfb74f59710ab34599e151632fd4d1ef68243c488c27c49b42ecf346f33b7d05f6d79633d3264add091a1ff9cf8e5313581b582353b5737730a2652ee49a83609052d4a36ca30a70f4cd457049dc13a677ec7ceb03fcc93d2a0cd480a247c5967d9b3a22be882ef0a2d2c5efb1b061a51e3850ed127c442bb93e3e9e4baafa2298a70049f41b668b93ff5e711dd21f7f4f9c24d6db84fdf29e6dd22822a3881f68c1dcb00da4b64433183997accf134a66b2c63b04e9e52cf576a8fe9109644d4cab14ed0d60812058503a09953b25773579355e17f03e7a5708f2e0b968c980f033cd3c828987468f84d8a09046a74fe3d6c8e5449837c47917b9d3419bed6de4290841aea7bbdfb70718e6131914e7e62e5ab065f78968c44a06162595321c1ae3692642ef7acb2030b52d6571a7d3f8f0399ac2f13cd4018ac9c780b93b1e8fd24493ed16948847c92c681e34a0bd34ed41baedcd00b35ccad2efe797bb1eb2df05fb3a8a8a746c4a6d38b3209407d1c0a19bed56d1d1d3b93bc8fcb88c6f4a3ecfa43dc7c6686ccac0a585531f42af400feb2542b989bdf276bf27f0efd69e5773385661e6046efeb0e671f581a994ca74a7053b003845990e4dafac24d31ced919b28184b247a4c17f89cf798433596b81b380c9d52fa5cade950909461672d1488a733bf64c1114c65914dd1d60b28ef9536dd78482b9837a31fab3e3a0543897c7632cdf5ba266c70a7859a314e2d76729b33705f9b63bd581531d493c8d9bfe63caa589d5953c1cfb197ef4f648bf228fe70111921330aed6abc7ce0955a0eed505735b3abf2361d3c18905c80a28e8ea256b65e0157d0e35431c312266739b56bf501192c73d54bf3979836562ff2c0d230882996a5b2bc037d4c0b13846b13f68a003a5968491275ac270e048f9de9c614fff66d3b27cbc7b373880cc8dfaaee65d0fcc4e0856460cbd316763e78cb5eb26c48d341d8e66b9cbfac30297690fd1602f61c6d887b0e0d047c0e6558a295dc6217d82d131c9cf100abc7ed6a5f773471e2b0e44886c533d2468d3636c0729745f463735a9674352c01d8610c34c905b1a9bc2377e65c0a7f7379e5559a5227849a82472dabd997aa1799ca10e60dc0a334ced2700e22688456171c92c83def194293ec651eb5ca7fe504b842155cc0a4c96a4701f694c2bf31913e61797058068cd89bfcd92b01c3247f9e6e14c855ac390be838dc13552b2d7ff664e457595cd5c375d0a951d1fbbd56c3aaab317e8b89e8acebec4a047b8e002bebbe514b3b35c99c105b75cef2a1f0cb7ec64327c5321ad8a27e65b116d8482a0f28efc41e0c1184cb24cae00548e4c2b390c8854ec0495665dbdb3165abb1c98ce30e018be0f70bab4efaa590070a17e3116873518eecf0e565fd2543f9c4f7602a038d4484323cac5e2c985b1d2fe0369b228d454b1e48c1402b93cd5276e20449d4930634edc43883aa5418af20cb0bc4c1a9a3021f9a160ca6f95ecb23c95e28ecc962e134a845c7c015d919d2f1be249cf35615943a64c0eb841da8c7bc97456fe125e5383988a3b1613aee4a0c0fecc379ed2ab36bec83d5bf506b42b764c263208c1d190e64cec73dcadcab74363d3e55594546d3c4ce80349e650559a95a4ac872a8ae1d7d4b941cc0bcd8e3911ed3c463aee6e08915914562274850e762d14e839c15a24d0f22584dd7065a471b09fc012a5f88db1a8fc64154fcf6f2c0a5a21e28d336fb94cd4430037fa515522e3ab880208ebf3c28ca5abf1111d674ad3acf741e18dd0155f7b6dd151f20389b6692881bd7f651d6db1e47a91a801e01af2a4bd7e607a3815e19f7d3913c3f13967a7a94f0d8d6771a42fa3927145192111969ea8eb0a08e5cf81acf09d3c748c85201c2423ad4ac5761a885b221d3dc3d3c268548d318012f5062e0c7f2fe9bba66416a6e8b54d89443b2d5b19d8da814a3c317594fe90bc32a90503447d97e2bcdc249b54ff24f3f9c22db59823146098e402ef5e25eee64d7bd7e1ea190515ec222cfa22686160ee37c052d79fb5db7a7c73ceca70ba7c57b9ff9df2f916cdb27326e8b4d830260e4143b3b2464f96aa5697c4c22ce78b685f7eedb6e35d5c61645f993891846192c855baf1f27a17d1654cab6f0cdf5a92c42e94717057d590aadcce33d70adce701b4a85a8855a9ea43d9ab13ac64ac0f02ac2be9d2454ef3e0c0b388a0505eb5bece0340f6b5f99462c20098315c4c4f0b359ce20142dfd0a8f52a4b28d6385f6408bec024fda35c3e6222c1c21119029e689b8b120eaf31cd5db975e214287b1c0d77d6b14d87dcccb2add383ba2ef9c9db10cd1c7e6205c424d183d06e8d0815e708ecee1a0a57a883a2f11c59b2fa46f07006b2eac16c0424cc7ed99259a3f02a49d217e1c2923a3dfdb49974964979427210f63cb5c187742201feec3c552e02f3ba753ac5657eace354f08725688e2cd6fe08a29f9cff35ce91d77b9a6569f4c57ba99178b90e78639e809fa9ffb8468e2dc8781b2ee9783e79b2e90e69fddb1d26041926d9b6bf701230477f00555c85febb3204aebf09154ae221683bdfeca112f270f15f8a446179591f61f37e0ae23b9f6cf0d80d9ae3b30755ffb73e384593215b874570f1bb53fe6fe5de38255ec08aa23aa025a91045e8f0dffc70498e7427882a1b268a2598cc5239322ca469c44008b39cff9dbfe04ea4c05f4071eb34d6acea10c0543f953dceb5ee6b3bd5fa71f4efa256859e3f414f6c98455e43a8ef8f5689096043acd19b0c32aae369fee88a203eaa869d72578a3b26a21c910234493ea5d1f8fa6e90bb374e7b85634201aae0451d462caa17009f1509a057ae60c772601f82ff5d3c02e54da05a93ec09a6b2889bc38f543503ac9e173212121dcf3484d0ad4e40b2d1a5ba290806aff3653e2ad27aa47aa3df12d5432915994349f69bcbb6a9d608f35bbba38fee8af081763bf22ca45d4130c32a8c80aea4405f43f4f59e03437fd2a8770a122ad00e0eb49e31500a71d507e98711475c02216e5e37076acdc216a98746e7ca6eb12d1f19e741124efa4aa501601e8811a94636b1313df1166cae179fd12fe69e62182f80b3c14dd0beb731589ed532341a1cb8a355931aa65ac9c3e13dc9e34111716f19c0e69d2867216d9841b5ead5e1fa742721d437c26cda8aef364e7295e4a9a6123424ee6527fe166a14aa8dca3c9c4f95b3998b3a49b99f66d50109f9b244e9762f2084f4d7bf24ecdef7e1f1b726a72376a3f4ef58c8e745683065e1d0bab5f401ef311b701ec01a40a031adbe9615d3052325207693177d5b624c9ace738100869c0fb925a8154d2415847acecd17903a6bf52e4750042c726cc718e0e2062568b8261b8000431c68c55373ee4daad9f7b800f7ed4ec2bf7c3609355473d1146c41742f6de7b4b29a59449cafe05f305270639a8340885be1cb9408efa1de6a1d0d3061da7ff7d356d40fe6c0dd0ffbe096b4b2a4d5637b6a4e233dbdea21d8fef29e8258cc159c4431ef99d20af98f98b40316f600667de7298b7bcd53295423f5f15dcc077eaac9049ac51c4f6229e9a2a17f3df1d12162d5831dc21ba106e59a5940b9029c7419efc7968c27dbc05f3425c5ebf909787f9d2a6526663082d04ca7c21fa5d5e08ccbf3c0d7d14f4bb3c0a30fff2f3a3a1e003f4bbfc0ffd2e3f41297bfe7c584acc4387e119107d71ceb2f63179eb89a43057744b859dc5dc58582fd4f12d4ad9b843e948473ae66dcbd85bde1a432ed31384a0a0209f1a445395ee9c99c29131a23dc109933645489b69c43cf9a4229b49c4cc946ca0c51974e3c3437762a65288800ca7dfc0add8ae65cf94646248b32664ce1812ff264514c9cb4b398269b144a2697106ed4993277f39693287d2f89aa201d280b4293361d2c67720233003141d8c1993c34c2e63f298c97f3c947968c5431f439efc47a0b8c180627e018334e838bcf3e04da68fbf66103b68266d1c260763489b221c09ac06186cd2640934de7f4a215333a5492bd16a5e2cd1006bc09aa7aa1a30c80baa9aaf090a9ae12226a8608932aa9973ce49452460f9711b6943751ccfbfb3829e3d9f3f481fa794967449843174f568c4a0c5525e0dd99352dc2a958e90499860a92bede05bf1a9b5d5e4db6b80f4b0ce971874ce94f6b844585cc1f223d45732d9f662032d4e99cca9ee2670b1c1d85b66add49bbf6503eddaaee99715912991363d5a9459382031a0017963b388712dd689c5dce3388f721ce5a4cddb23e48df92824643256e71e12188fc3a10b1072f154f5a1a72ecbcd96ed412c164041aa202effc2dc8115245041b1dfd1a8d828151666144392523f1acd6fe887ba8ee675b4afa36dde0e41de8ccdd5fc7d9bb7812190a1697e5343e6e8efe55f5e462f2490028d9ef42f2f1ff3421ad16adf8db450e8be5eb017ecbe3e98480413c144b04ff4e27d7da2cba6e39b97bd50f7dfeb3857f3766f94cfebeeebc2eeebbe6e14bbf9dc683496cc1814887a91e334489b94d7e03c9ef378d6da90f3d8f083edfd5f96b0bd9b209ef28b36f945110f0feb82dea23cb5569a81b00ef4cec98f923fa948801b5b26b19d8b9a1c3af286bffc1979034486feb28815096405bf991f273be9494ba50815bb8b616959db7e721cdbc7221ed38929a259b095048c319e3be7eee3dea3a6997fcb5f75481b7fcf76974eb04706757474cc58066243760059a27df8a7e0afe3df83524aef9c79db728f0bc86783680485eea93d94ba7b16b97f18678c33c6b86464c4f2ffffffffbe49d838303cd053357f7e3031e8698bac6aadf4e3412b0dd5061380f853405dcdd2134eec8964826e02d2a4933aa5b487d548da389e9bcbf71d76ab451ece37685f1f7af21a4de9510a0e03c9300d327565dfd7bf62e000d5f0aac4830c87fb9ee8b58579e9401718f0fa70a0185a89a1950b124c424fbfbb1ec537c4bd8e4f183607ba6c2013176aea76c6b7b6c5509036856af414020ac942317ae2f1a1a99012f2e4a1267ca4f09123121b26045093da2843b2fd03432b7a9a9d7b47843edb98d960428b482ccf33476344d388a2bccc80c91c496ac91cd84c6d460c00403562356435acf80d0b2de4ddbd7f8d5908a3cc018038828550850d5b14d5b8b2fd6b4ca9f103801dfc94ed3fa30879639d48d95a8ad8fe241c644a34c43cf91bc1c316254162915e222144af0124a1c5118cf59a8144dec08c33583227c35c3123c9f6d73265fbcfc4640e7e124be66c30bff9a48c62211313d17726263c5925eabad81649ff3d016a5a9ccf855e8776a610a80217dbde9f20ab888191cf03dde9b7a308cfd6aa24004500a1a5044253239afbb8efb0273289a2f8c9452f0fa3789e120d8a60a2d708266d569a348291449fc44d10915a304e0433c25c216f44302da2d70c3923c90c2472660a894562491b237a1bc144afbf18ac3312abc492363436066762d2867b85469963ed10db9f7b0d795997b471273ee2db2186bcb4b1609d8d308616492c126b3b894562d998b940e16eadb5d65a6badb5b6565babb5dbb66d395b6badcd39676badb536677cb72c3f8ee3b80f4c2114147a19457cf4d07196ed7886b1cbc4d2bf6bce36b6bd9aaec53db8273f7e0a6410e3d975e1d90dc2b3fbf3310ffd6bbd413485310bcf6bba5692e0191e710dcf30cdd6fc660b9ed91abee2788667d6e65c63b3990ccb7ae88bd5f4c939833e6849730d45f5e005cd5bde72ce79c31bde72ce79c3db26b72de76c6dce395bf9edc8afe33a743e3e340da487f55e4cf1f7d01dcfdb199368fadeef009939f22a476e09c81c1fc815b82ffbcf51ec90f2de7b71a514bf9d98524a29a6b6ab9fad4f4da14d29a5f4dea79b10d2851d2072bcae0ecacb0fda7efd5a4b25d4113a983bd06829f8d41468aa565aa58966d0a2a4956416dfb2c2913974023429692e84a1c552a954aab5a6e0f2813bfdd28f74a075400c4e3048109af9ef81414220cdfcecee9de9e26ecb79cb5bce5bee9494b20c3a29e93451fa939a686cf8a0e9cf9f94deeb5e9db3fac81a0aebe3b1acb56ea7bc11ebd3d8979b624b4a62021bec20032a98d04082f1c5e803145b58118413242c5858800297163c3c146822082b341d6a28830995e37c587fa83bfdfa97d27dbf821b53da938db058a49452a2e82ae71c0b513024d0f36bad3c644c676475def44c72d3792fc6b6f3bcd649e7a4f35a2c6995ec2a273ad3e7b6a462c4caa65275719db3ce59e7acf98f48593d8e27a694730420d49c006aa2899f52ad0664e59e47299d3470a05802f2e47fe5ca2569a1c5c7e00f3d830652a3a1f284165b528102884d3f1e19a4a13f69b0e7cf9e26bb61946851d680c899813d79a004902db4f8b424f1bd78ce5903b245f1f1b0562aa33355b69af0bdff8ffbffcf6d195ffba2278997e8235a26874077cd9c755a5c6bad359760022dca9aed3e8072006abe9a1b35d4877ef14057e98eabb43113119820cc273e383825fbc4da27ee3686d0f8f3e328a1c7e8881671688d310e8e748c29258d44a31baae3f0123c87e1ec8b9cff51ee212a0cc3102655f4c90b7b52c671dfbcbe0099e303efc92b3cf4e499a6ea0620aa0852bd20c74802883054a11a542fcc2354a117650c25e5072dcaf1c9cb9524690599aa907ed1a3f0bd07cafb9487ae3cec5ea4ab94c77efb76ccce4433f5bb88fe0514e2bde88790efb54abf54694d4f795cd9508116e90aa44556df7bbf022af2bdb783d29cb5f6189d6daf43c5e9a2b4dd7dde0972502255f3cb201d9d68d193d028574899397ca544741ffaedb073529887f495c47b5253e53f33859e3f1e26113d0905668b9e4efbc5891627d09432611efa4fd0e399401efef9a22f0adbc1007d8d51404aefdda8f7022433e546d1b79463321c59ad562b9aca7995577995b3ae9141d32de69c39849ba919c32aafb81a19b4ad91417b8d0c7a6e31c73ccfcb5e9639730e59e5551e418d3cf9d7e001d4ae0d6b0e19c0165aaca9bfdd1a9489013a53470925acaad062cdf6afa12182cd8b384a983313666a0e2941e1b2c44ace80262f207736566bc5c3597c2fbe5d776ff75dee72db6ab5857ee9208056f019ad4084c673d393e338d26884da416270d0dc8f8ed0a2049a337c45aa62402ecca009346ba56d2249a2082c5c2b9518ce201dd1a2044a85a181ece06278f406fea03d590f99d30179f22f955c5caaab0b5102bd0469b9800d747f6934a0c2f6dcd39cb0bdf71e28c2b0377b4227ebf69886084d1bc081b20049f2d6715cc76d1bc76d1ff729f1d1afd00fa37184c55aeb53adcb65b758ad7dd19a4df34b8a43206389556259608fb050b6ffc8099adfd4df68aa64a97065d0baec68a9a8956e96e6a187e1bfcb25f7065ad748077c5fb268d1ba682a5b57c9ba00b0ab8c8816adcbe5728d5b13742502b5e8c125fa47f4faa74a7c2f77cffde67ddfffbf95ae564f140a856a0d5998140f633f320fadccae3c2e238a6e35827971d1a2900b34350261727ed1daa554d2ff4141a62474a6a75a08f2101a906c19ffbcc1e1e4fcdef7795dd77df7e4e582e7dc0a0e20a5960818395151385bb246852ba8e0a15b93aa9ae60e1f0254754194163d7f8649063ddfa250a82c6ccc22b1f24c44bc1d3676a034da6ab55aad56cb5b396bfd7fbff396b7bce52d1a96c23044914005ac2654415e2081890aac50e97f219c72031c5450b81771b6931ea85e1805db9736d29364b66e243d0c0c284ed20b49e63d1289f4544592f9b67f1d8f3149d5e8c524765b9b58b05fc8e712d1752393548d6246a351cce8a96a341a9146a398a7aa18d2e8c567940079b17d7e120504a50525934152a677576b9d4cbcff613f53d625d383a1e78b25397e53648e1ef3fbf9645f4ce6783f56216d9c03c5cfcaf6ff64dfcf179b39be29f2867f319054681b83630d8ff4540bd568aa93d8d66ea8e6daa21dc7d48de2960a4b454dcd16433520d22603f2e46ffd01aeeac01d3cca9176128ff4e48fc731040a1a6bf85e7c2fa5f776e34802f2010e0e0e0ec5c1c1995bb43d1907c4c1c1b9257baf9d73562ca67071d921f48d3535b3a646e6d0a7518346103aefc83e4fb0f0efb30e74186544013a0f4df9f098c3a8bf324bb7e60b640caac89729da85271e72df6d5b7e3c5af070050fbddbd3c76ff0f8c453dee327ff2ae40f0a753a994c33332e2e40de7a814d29278c8a88d0e21cb7cc1cdc344dd133e3fb359546107aca79637b1d474d9f3ec7d115eac2677eadb556d408a8191e5c8cb3873d5fc6bd1763db79b59248ab4e87871eeb21d61200162af13729072de78dfa9d87f2c675de17023f14ca0bc3ee9f2b9542336b6dd6343308245c40aa09a56502984afc91142d8642339ad2e1a1d9bc6149704287ae8466215a141a7f68160a856837a8a3748b210c1b08045c95411c9add9c730643169c6d175528e59d046bb7e0db037ab7a0f7dcd1c34390011e8e9ac854f140992fc918128320222af93920843d41396fdc9b7368169a91c6ef08574d065b66b09af1e1e383a6729ecd5c32d95e6fe00f3ff9e723f4cc59e684baaebb0f98e5d9f6ed60c17e0b795f1286d09b0f1284d0e25cedd47ef878693082d0fb954e9a25206ff85f5314dbf7a40ffa50428baf80ffdf388e9b5c4f192f2f8f628e6043801bdbbfcb1eb47910e741b57a90932173241d22533b9486ed056bbbb459803cd1641361141e85cc91d34433bd1663801bf1bda048c19d39863cf90fc934202905fd0a2eec00c939db7a6f2b28e8e5e58da0bbb702992ea3a3444f5034db342788667bbe6886c53780131a86189600618c2858f440441720f8c1902a5a7c51a489162a989a174f64f16305184838913501230748acb89841e5ffff8fb10e500a6c9db981961bb43d1ed24ae79ca552ac3561bed033063deb159fd2aa542a95acb52514d8160e8d26a104fa53e3143b3c21810f230d06188801c492297cd0e28a142a7f148ebdd7a25062f4f0e941dd6949da03e0d870c864329963eb1f8f4c832fb6b29752b6006973a54dc807ba6644a98f6de17c6fbef9de7cf185c97a70394c19b1a0668840571b61a5a6528d0fb6cd676e31cc7675b7c94d2838d080a50ab281f885cf07d5f6307034aaa88270a0a4a703d8ed4610ae595a0dd770ed074d770a999eeaf740c1d2ac145d6c167cb3e05bb434ac45da34b145b4959accc12f716d33d9be7aa1453cbbe2ab15b6e226f0bc6a0375e8f4a05fc674b6d123a265f28723b827f327c8d987cea7ae3a0eac5c2d4d12a2e8104ab6a2068083d78a71758cb10b2ff9a188124564560090b30f8ae6075d6529b77aa66ff1937b1637c91c5ec515d2c65f0c61cb79cc4f3f6de5f4f922ca7b9186f7620d13bc973b44f323f41f13d14b9d1ef424c5f60ff1649508f4414fde9ba62a44f3c39305b954ac5851bd808d5041b9efe974208e8f403840c040903973038d596aee592e25428b3e6e1103614b2b3944d9d43d8be8351fa5cd148ddf6ef1b36c1a41e86aaded712919c7ec1225b1d1c2dcf469e6772f55a1ef1e859010d18b40219d88b33d4702e40ce374261a1fded3d0a0d0cd9587413cf42f12c231d1e4ff5eaa3c134d06691ed07de851f8defbc01e29d0938352f5e244fb8b389b6f2c10494a25a52924be58a2882c4a54e0854a0334e0c0e48a2f9e3c91c1bf9bdf8ebc7978244fec8828b60d0f77f8e0e1e111b30f1d7a7aa23dcb9e3225b14c810410141c60314209d5fc924c491d70b14a62072d56662d5091b660420921ca606141453597206309d0163aac7e604435bffebda00ed78239ef3522c3923982673e9b4d9c03eec13dbf6d1b49e650fc6e1a51e137409826731c3f0ab57150e6295d174dd1d0ad7b14b8f74021a010285748fe4daa28e8628416f10ccffce65af17089ce8fbf9b14c457f02c3f7e29dea0ebe2233341d05512d1433acf6f5ee8ec5cb684fe0bfdf75c6811b585f8a3424f33ff07cd045108819fb5b6561e26940bb4f81ffae83c10ec329e93e68df6b8a46c4f6c0ca16b6a027093318e49b72de38dab95e36ae57a5c526a6ae408c67167671c7fe5795e08b5710664ea817c3f93572cfdd6bd9bb77d14e9de7b0fecc0d72147f976d480df76e3b82de79c77b830b64933b7238010420fdaa2076d33d4799f94d7274d3a9073e137f029a2b8d7e26da3dbf6dcf6f4f3ba8d524a73deb82de76d0b6171eda044d39cb52e95fe293de2a3c37f7e3a1d728f9868717e2efb3c57fe14e8c989d84ef2ec61ae6032a1cd15abb5e2b1d6ea68815e3dcd8fa7a120d8fdd318c19224ae95aa03834011a99199aafb0d8c36930e14f2f4e42b6a64a6fadefb509b0b10a5a3d6fa1171ed40bf445fd2cf2394a1631a091f6fe579dea42981b65bf4be19cc1c72de9041e6f830a7915982816ec1f609c45ce91bb6ebb0fd4751e898afec1654c48062a5cad967685d3d1efecb16bd9a37feebadf55a6b75ac9ba14e5a27a594667d8dbcac5c823063b1582c16f3c9f93f0c51a8d116bfc6621e933127aa699fde7b572699f229d29538d9d8cc17fa825336a578e8311c9c982bf682b97c4e1031b1a50344b3fcb2eaa4c0af20b67fe7b3b2d582a33a0a4797c743bf366cffd14c195ab4612cb4313bb3341bb3b219830ec310bf5c70001800a106d50b9309263590b5e98396555849b6e8c92aac21db96558e046d59e5486dcba7ed6fcb2a47aafc9616880168cb2a318c3270065a561902dbe2c3a06595213ebb0a11d6965588acb46c5965050320ee5a04e48563fcc993bffc648d08bbae8c903953c4b4e69c739a6297e6def9f2940c6394948a1878642dcbeb4ab8c5f9c2c137e27ca242165bf40a9044f682d13d9f07dd33a439cb50d6644dd6646d2a8142fb4b050f81bc60356a555630d8aee56e1867bce1edf6b8b4888771dcd919474a69ceab5a79bc2ca14539fa0d0678644eaa8479f2fff112c612e8bcc55a018bef74f79d1b5e41c438d1b685b344d3afb44afbf22bc220e5c00ee1d9eb2c8cc26074aa808a625ffe0270629fd80ca93e2e3117247cf5cea3e716b5afb6fc982bd9aece59572b97d8125b24d1b242460d7ab22c91c2d481426fd2a6053ad393e76da394629dbcc4eaa083cc99ff03319e98610558585554d2891eac50a20452c08acc308974368ba4b5a0c9055ab43dbeabb5b5d6190d80bca03e967a54baf73a0e8344c73e11e8b1ce03fdc74f6ead9452d6ea811ef3f07e3c421ba55ecc43ffe942daf807200b2dce18bed34a173247ee9c3aff5d34b8866c8ea5e6af55885d41912b556babadd552ebe204c7076b2da594d65a5d3838d24847730e496fdeb8b921053e2a6b6dce261c334701e40d7f12a48d7ba82b5a943f285de512d66aad35a554ca8f0e12199abe0ab200c202592fea07a05429a5292b853cf9db2a6a15b43423a2a5ddcf826586b62863b1274cbe33761aa2db4681b6e4bcb9b5ba46cc4e4d4df4533a46107ab8a8aee427313b8cd7e78e4a28d582f22cde0836db081c37e347cfa77969fae208dbb970d5fc66cc32d2dac41863172782137d5db435572ed77585d7e63c8e738bdffc589339d46ef1b045533b1e4d7d9f5de21d293862960848b4dd027e22dc405fcc40b7464f435c9adf88d46fc43bbbb37be5baae92ebc2e2ce78467a1a434b95dde2e11d6750d1a2ddb2459041cfa735a092fed287359eed348875472bf474595ad342591e7aee759d54d117a1061d02290bdce23713b4218186e18e3f6891b6a8de27fcf3c5f2d045a0e175658bb4f6b252fce4ff43afb4a8c83223c88bdc3175ab00ba63132dca51033b37d78e5f70de08dbb6b9ee78c718d74c136b4ba539a70f70e0c08103070e1c38240d0e4fe2ef38644e48e6e030e3c19bd8f0a079c86db3022d4a19c6987e0e981fb3d2d424b3a7c9cb64e8ef04fb230f75573f9a0774e04461d4bff79449996c0a216b72678d3583b3a44d4d269b4a34b15d0a59ce39739bb4f16a10f323701472e93a4a7a21913e7b5e1763a2f15e867bd2c3a0eae676d92f2d65eabee4c95fe79c7fc4bc0c1844e6639e33fd188dbe9321c998687e945ee64b2005a2d95ee64b3ff3a49f0169509d0ea8648e97f5b45433120040100003150000180c088542c17050402698ce7b7714800b62723e74663c950764a1248a711805310c8348c600430030c410a39431aa0e20ebd607bd3235d551718c8aa92791d51b3be54e6dcab6564a94dce821a7fd53f80f076c7b64e10cf5019dd0de5573a176599c504a9dfeb5e62ca62e5f482ce307270933d5a21da101be627c56a7097015b953d3b49e8b140a4b2f20fce815ac2a70b1768bdcc4fc3e2853787c02fc7d0c86095c0e08877db08fe49f514f3aaec8fe9527b0b7fd8039db8c7adc4f075130ba2498ebc974c84c419a375a9fb8dfd9cf810c8dd635acfcba116e4e5737d3dd91b5e0ee93d7f1287e8d0199fee1f4bc3c0dc859b7ea4f7b40a118874aca4affb8b1082405d538f8f8e3118c9c4dc4a8a68564bb1445f0e877fd462829de885fb331b978d4011e56004a6fb6ff83f62814f70f77c5c04b50c5b54b7b2c5022962ab0aab4b2e6436bf7a2c0c250216fe5fa7f6bfb7bec15a934d021c11fe504aff1ca980e2c48208c5f8f88682879ecd26c3c9e28812444950071b1a334f32b9d4af095ed5c48f10131906dfeee4c30263a8ef9c803021367974c2ab3a7c89ac385d0a15182e7f1845ae7b05616251f6c4c1a2c32f2b032bacfaebb303a880e585badb46e0a5e8588211c46e4960a9569266f637fce04de89f95b574408d220c455718753177579f7e7531dd11a32a9f21879d99fb3e883f0c878108375246f11b79282210defef477cd7f68faf62b44f35623175db00766b193962464925bed1b3b671e386fddbf61eb64fcd921c57dfefb3ec213539f080fd8bcf2478841cb2b608035a07c6093b04e3d348330c6a2f6062f70c368621fbf78fc5257b00dc5463dfca2ac217f7708614cc68f671f6fa42cb4fe73057baa550cea9fd025ac4445c2430f623a487584376a99a181bb3b0c0225700a982f82eb30942e048f5c21a33511819add08b0fc284c89de26c4c813a293250888b8cb62f72f79049a85dbbc1136d83a7b26f10ed02d20045702de0228540c7af483db3a66b96b70462d93e94b59d6515444258d55a91b5b68145febf38d648e5388b16bef71fd0087d9f48091ef50cbef7c46cd3b3a275df9d29e52706b03bbf86ef3e88f734918bf5f6e4566bf81ec28fe4e8337f2ccc23b0a6d89052f4fff70f67aaa70d961f3f2e80f4b750160dabff91b840e6fcb0df681f77b37c1c32f8ceaadedde4481f85d3ccf80d54d137ad73935c232d5bef58b9d394d2bc874ec81925b0fdc000b2e1ada860988523eedddc00212c38281f60621662cc65aadaa735ce838b98e5181f5c391b54e3dbc2e562d24b498d428237469aba32eb847636938424a4404bb5b792f6eadfad80caa812710ade98b86019c7383966d8d3e47e2673d28c660aa09176c1acf454e2f38752b98907e3570709f4bb08058eeb56bfcc811f182e8dac7cda147e41330df2971509024ccbcf7f720505757436bca927bf17c5c4c4e89a34b0b052101fc96289fc1919ba1364f29aad3ff318caca9b79bd3137a602136b91d974f5546f728bd28ffbef288ea384ee50368d9e978a32eb651cb45f6504e21454ba75c548c65af592d8e19b1c44535000d52ba2929c344c70701c26410b44c84cb683f9c245cf8a2c58a110e83d2c8f4084d52216f58420b76b915851feab3772352e3aee768a20d199c1ecba30527810f1dc9a6fba7484646b4d553872bc34c39da78550f7d02a4f29b14ec12e52c1c5d147664bd990698cde7300b939ab862c663dee5d280d5b55f7b87912a992e3aa2548394a97a76104af37ab5f79348375d55c6773e3ae4b137b4ab6df723af12231b6f4c12635c4e7116e630be909de6fe7291d1db0c9583ea06275f5909af14200ea3c3d0e50b8b6646967355aeb2c01a491216bb99622d52c6ae1fdfc606043c0aeee245130df87ba135f8a82f3101e77cda6801c39d77325cdd9034ba5d01a5688461700d61631b2047c913539a92b7bcc243997d52c04baa49b70e84f2d85d9bda04879c441e995fef27eada4cfd8ab6dbb18fbb94869e55e621fe0b50134de830b11519c864d028492b785d75c0727373be8a8cc3722cbf4fe11f8a25b69dfdd82c42d9f80a2359ba2725aad1ce8e67805f8e5139efedcd78c3cd3150dcf1f0d9dc020b3a27367002f87569fff25521a7afff2594765716420856e1e4807fc9be1fdb6cb3ba666d1fc6c4240de60dbffe4cf342c6a2e289e0002c45d6abce4e44d01c0e2f621025ba97ec0505e4c9c876056f66254517d32d15f73955d69492ee1b19b893905add9dcc1bdfa72f114d3fe1931f812ef302199099f04dc4ae97b0298f8bb29b94ef8588e29f7dbc424305d1d9ba51e4bd1d3facd03a05d71d02576a463d86f71843bc517e8e4b820ec393ee44c51f5b17f4aa9116ac356180665945f84108fbf7aceeeff3c8ed342041c0995d06418015b83328c8d8b051edaed4d14d9750c02e44bc833ad6f2f307e7545fde814218c97ece6d6d2c6fcbd5a6d29f09db828cbd138128f655db813a3572de2663c6bfaccdcbb506a81899815e8563d2282a4468ec7f7a57d669b527f84bdd08902c60f390c31e671be7202ff5c808bba44f562e011d77bb83799e0c249501ecc54ee11e2897a96351ee994f54da41c51595d081d3f08ec53b962578d3fa355e722a0f233d1f383f9d6f227bc3d29623615fcc95c4d29f0e9aed8fc14dc7e00cc88fe4f63fec7e5d438ef18c77225dc1176f068bc9611a4cc703a1252e79a0b961f80cac8d000a99734c48ade9f4f82ac7b53047ee78da5f4f1a1828b7175dd7f27d7a71866143393c2f594b20ef443d7527378057de297279589a96e7b342e46c74de6a926092a1098cc022321e9f64a902800d66a1d50e19b333ab0df76f80acc828c3ca2a0f641449f959548c08c6aa81d6f4ff4fd28707a3cb8deeeccdb837b957dc9b4a6b73c7eb012ec1073d6220a5c9e829605d79f1e4046d8e58b08cbf2995198657a409202616a824c9d9c7dd900758bbd11e000e615ec3935d26b363b4eb814de83769c9acf8e5759eb75639532055315c73fdd47ccd241a5ccf3a712d350717b52b2a76869621e6f9532955c1e0a3b8ea44cd5a3ccc49b0ed7ce4e36381d92d113653664a86eab7ce2c19d97312dc5e88402f1a64699fde244d076b15512724e9d6e212b903225ba2ab1e06a2b9af1c9f623f4d86fe619ee03c893e3448311f6a601df9ebf3c90de6c663bdeda79e1093df0748162417d416645e20e4782844555e1e222af083478eca10809699b4c62e3226ff1ed8e642efd05af8df5884c34e63471898e2a04de251d2933e74734b9c47a66da294f3c92cb8b38d40367619a891ae8c0c07f1537815af3c0294238f0719f2d1f9eaf40d9e91f1b7122f645b0163826bfe31defc41d55412a3ed99753678560af0903cdf7c573c98caeb8d03d2425bb36b67295a6f359003bc635df091277d086fb123e4cc5da0037af61a95039c8ebc8ab653b3f3f5cb19b02984dc3549590971ffb09cf85a6e6e61144b550375cf74058325fe7492bc161b50932176f9f1aeab5c3c3763ccc2249e86ed3509e1c23ff5d1f1318ddd8e1f951a7acac710e9ae4bc2542833f376560c299a23d686bdc5d46809b1e3d161faeb1dd8170d1497cc4cd790ab63f1c77aa8af94dbc178133760726a7ec12d80ed42aecf0dcba234c878636ada9d910ad00992e98c7de892ef1d9a1a61afedcd4fe1a5ac6813fb86860040e41b809a4a6ac27a1b2375e1b1902a12a9f90396b26ad1c0602f1efb10ca28ef200d5a6cc6a5f1c46abd07a46fa32194ecef2af3ccc4e9c34b6cbd4b6b7caddc52632a40626f9e1eeaa4b6f3566dc60c28d0a51e7ef14d7b842584750a1336835345849845aebb13502bce76e90d255f007375cdcfef003fa4bff59757f89f9381c2d97518dbd440773f53b58d1ae6f08873cac8638a0f35c177cb124dcfa94d28d344dbdbe2d0134bc6da537db839f2220a9110575d734d2c3d2d76f9ee3fd7d13cee580c3164e1ddad4213a8bf746caa350ef31918a7c20a4906076e7221570591d1c5b40ac12d0a34792e61fb6c97c17074317d3b2f67cee3cecb69fa71fe87aca961c96359b00a6e8933cba4c0c42315ac6c857973a3cc79f7720ed68c0b19afcf5012b56b0bac5cfe6d197da2bf26fdfe385412cee4f1439c58da44dda452a757ee88b45aea1347e483864610efc352cd36baa6864f98a857470be1c09d7c8a217ea76aa0d92b351ac0d6c1bb5b22d38177e728543f8d170807b6ad0ebc9a8212f30460179d2fdbea56ba86647a48cf38c18feb5806959c8234611ef6e16b14b03af73659f6ccd02e29818f672d722090cfb944ef65891ca00fe0b2f4adff2ae227471ac727d139895c3622bf89a805a79f2a1ad6c83158ba0ca680d500116c80b32944b658c2c24d1903330e85c2e68a81235a99e83c34f075ddcbdbf262d89ea76dc642442ae62f639006fd86260121efa9628da89a04c9cd77955b259cea8041f5a73097151e82492d425d89362a7ee4a7d520ef2da71283df44faa5bbcd54198f5398f23c33ad461a484734f2910d6fbc1de9e3bc2d496970265770f46232b303abe4950e921789a8108ce67f260643046fee6e7429a9177b8adebc064ecd5cd46c2c3cfb7ad0e24b87da4566980b0ee4e828ba85bc6f7bd0870394a05b12f64d01ebbe3fd8b1e4100d60fb91eab520f829da82506e03d9b25164c910288541581e76c43e017f80163e55f39a6c60a32fbf8053862b5860706c9d6bbb426b34d3fbb9ffa64fe79a5f80da6b84dc707f9d525277e297913170237d5d42de2805b2c65f3a21c4a92b3341811eff7eb0c9f7321a4d5b21e6706c55c7e0407f4f103bcc37a34dc326a2027d6f7b5605765e138365310b00be8781a566aa93e3def246300502b9eb93c5dd9ccd572344c8bc8052d1c00cfa8de02b56e45fce2a10f8f39f12e302fdc93881d6fc766fc342551f737c9ac546ab6dbe9958040854531e165c153b9154d2a7ea827fc0fc33215de9af328069f891173d07173749a30aab5f31e2533a98248f0e0a1b99f5af29edb3eb70bd44186e5f53ea2d78a51fe611dd64e91eb17117439b8360d33f7f5005b8df42ed13097e1aad34adcb02f66c22d199018758cfd447eed3414bbdf68eaa96c0cd5520085a49e525160f98abf81d0edee5299f3dc6ac0a6d492bd9761ff7ba86145179eb869c80004f582d4df9d29ba41bd4d9b7dd3c7dbb098d6c5527faa3ce14621627da5f140b196876b65f6e1c6391866ef62dcdca14f10975bcec823bfa5e9c9c247efd2a22fa5a31b04f569e318b6ce64f7c134eb63fff8eaa4c153e30857c5973e49b21e3c883592c8afaecebd62cb85f065053e16d64c3cf97271bef7a9157038f4c669d7c7d794245f49b8adf82c4da7b21bda4ceeed1189561cf19b3ca6b9a3c60cd84d6560610eec72036120f7adc1b84986bb16a6003a265f9f25813c3af63fe0cc7cb48f29c6168b7e26a0b172a4235593e893879a90a8c567b5676569b414be3d8da9ec1c108228ad50779d0e233704a9e1135a40e563b280906726126b216ec3e8bda48a2b622eb69cbd01db3b742be3b49c05ec6d775a94eb5952488b08539773d44c7985bbc41eeedcef77c9b842a5e6eaa6c8175c8569926cb75b4a03502e82bcdadc387fe8c43d6884f3ead40d218fcaf4fb7bbfc8f5b8db261f327b521d365b6166eb0e2e55d0cdad3681f32a942c2e1bfc0d22e46f19c23783a2bcee008855c94cfa13fe543ccdf21cc0fe10450b20fb3ff079c1214ead10746c73fc1e10b345dd051348e3a2ca5c1507181b7a0c2db5e97d813bd6b6c3a178a6b0a51a9bdcd24b1772366c1f10544bd0da28c15f50bd6d09ce0171b72022cb8bb5af78a3c7e9b1b074135e1bb4e5e2b67fd0f01eb7500d0b9eb4486219e3033d66741319fe0bd4484e54f845a8155c7e8f1c87bda8cfa958c8d39ba4a4de062c3a17f4375c07801b682de69d8286acbc91ac943dd1edefa53466e6050dcbf50a1622de008614707086078b6d7d7927c798892fba63cedf29f27a9801e578433e1da7705295baae73673330d3af02d8bd37f678305bdfecb53747bf545b165165b92b42c5669c3ee3b4301e795c73722aa8f95c2012ec285d32ea34ee1e934fe76bd9a0112b56c36cd8d0a7a08485fa4cc8f6c2dbb495472150b5d154be1882fb25cc32e8adeb96a5c8a39098dab6aa613eb89d839afc9ad739ad6e92e897d5607445362288c2a1af27ef21b87debea04aac61c862ea3a7dfd6867d0669bf4d42b04363bb6313db7548e99f693cd9061e9fa55edbc96115148c57d3331819e2368c0eae571a4c0f82de830f6f60172ee9ffdd8b0b344a1693c5e8da02d755b581e43897598755aba64c48b49eb1984bdca17eaf94ee430236f636ae764811dc3aed210a782b20b3b91f4366d9eb648256c342a205c1e9ffad9e2d1e64cf7dbbfb1e76cf385c2c3fc095919979fb89317ab23d60da4f2468e141a0a1bff7de8a0e1571dcb401ca63a7c7b267c795942b6e8b38c88e37fe10f33c94cc5ac055df7ca5aaaf82f68a80ddc0378c49d12c088847baa8827413a1a245d5ea8d712a4a5258c54a38384441cd230302e3805ad928a9664f4c5bf527426560f2009a6b21ec914daa411e33a86397987a199dd07952e5f283f57726984e0e30e524a38bf4a6b5787835016677a185b673efe12b6c658e6f045409392356b118835450c72bd8729cffd9ac257cbfc5a584f1b44a1565e43bd7df63483da1dd2f2e482834bc38fad800be39ff127048af019812ffb853e5cab853f680d18f5a2833f92df0b4b95217b97c659a2c030b1429acafc793bbb884376c17d22f23409f0f08cf609f0b7bb232aa0466233c16a14fa5aaa8765b8b73188f51bb6a519e87d0cc06822e760c0c21552a95c85e22d8f7ec0bec1f11b93cf2c1e61c6f1a2396761383d8188ef0e8f66a1ac3ab6fb0e4400652e2e56630bc4c0df68df2929c8502dae36492705075f3181611a071dc9b58b37cf1806f0bd0ce7892f7da028c0c8c274b6f969a63bd654e7daa59bd5a1c21dad54262a013941b311ef0823eee6f1fce7f2e2e24a2dda5d7058a7c5ebc6c735c0c6354806329774411617227f683267bbf96741853cf6d4e5112520b30becd88c74c5e1f9420191a7f5f1d99f28f07e58803f0ad2a816fc9c4e4c155bdb74dcc6a93de49d47e7273d83b994720ac55f11cdc1e211118f9645d259dfd9e0ede232492d233ce49710da6d392708e8105a1a53065658a92ab8a21e4468638b5861932054aa35130307e05579eb392b8907e1b9b7c8122598067e61fd96e04964672be3c3bea0dc3e25a8233f757b8b1af88562362fd103b47d77e47824a05469ecf7057b1a68e6ccbc16d1a9563cd419988e4b0a8b4a1e6fe61e82cf6120b13966159b1017e61e19d2f81be5bc9bddfd12fa10078e0412a676356c57252fa0bc4583c458aec0e199a1ccd452cc7d294dea9dcb0c8d50cad4aeea71b7e0757856df4206b2fd80a956e73cb5e45679fad8be5541b16298f9723f16718e8b27473395cf253add944e5401ee3c02af10abf3615399e8674672117b3559e20805e95535ae1ee1ca6b9b45894035352e4f92fd9637afd907b868c4e48fa9ea87c2357cfd1dce2256f348605b41409a4bb2a0c0c744d8e04b18b4fbbc9a973c11d7ebc9c3478b4101459cc5f88f728cd4f4468bb189f5b41a4935248a9b54d96ff7b88c2a63ce119f6e54b6ccfcfc52ea121b5565df062c30a44dab26be53e2bbb89c4cbf67e6341e013b5ac8c268d626a2895bb87af4a45db5d143daf45019e7bb9bab3915ec79af5d48261bc6b2f07154048e51da648108c464b2973c031dd1efa4b17126a11959f65348ae60ffa57aaf9885520cc53ec5cd45bd24a4fcd9559cc7124ebddbae4c4a47ca895569bab687f2ce08e963f76d0a2bb8a290e681a9941b5d95da0546d50a220ac5c58330497fba3e055c92ac5e9ea47ba6fe2588620184a60c64586565f2656df23990cb2aa6905e416d6f03264f53630606c96f843d1be4bc16c70caa95e01f17bd609bd7c1c7134072ae9c9bb98c2f480afdf8704d4287a5578eb83fc54a75e4c9bd02072127df62f7a4abda593dab59a68201c9c62e7ca55c71583c6eac5f387a6798ef9ef4ffe20ed0fdbe9db2969e1238aa73c6572e5a041286db9b76a0840c06e0c9daecf7121ec0a7133564fc03978751ae4395fb536ad7a48a8dcad775c8931b7b514fe6d37b5877b04a2ad9b3bda5c65194b4f550abd733c0f03e7dacb3957702c3f135470ee7bf55398747d31f55ae875b8bcf00c885b23d92f090cc17d7bd65afe77e8a41a6832a824e41233cab1d1119165a00fc5494556d5ed03b80fe9ad0ffbef2ea0b830a430f9f8664c60c995401ae684e18f9851c7444566bc5b88e5b34dd4e581aff5cf93f4a11bcc9fa43ba0a4bbd111bb9624a582373b23cefb1a0507b779a4088afc2a630fbb9361161303c74a75af79b541ac8ec0ea6b88ff14aede1277ec8fdb44b26380b209b42e200da83d7da344ddda3f7388561df297138a0f6714c6f5e13d858f6313bfa7f9ce9ab111eefb31e6a776668f45eca2dfcaaec43df9aa9f003036a6fbf8aa54fa5d6b52d13d75d01d9bb8ea144c29cbacb304392177ec9231a0fddd5c66ea173decd092c6525a486f5ba6a219b7bf79f497d3deaca34c3d20d6c83e050dd829c01a66469f469822efd349d7fcbc4f920bb1683083dd8519d02da3135bd56134f49f07b9ea5f0bd04dbd065955fe9bbb329b971a4008089c523ee7bc5e7c7bbba9ee3c159d90156655ed1f69c8fe3f06430dfab5bac2216e2a9b091be77e89ffad8b7e1274c2eafeb8d78a4e05c75806a5df8918912af742ac66856092a41d398234506afedbfd92cbbd282ee1acc85ae53226c68a8498c894c479e4ec9d010b80124257636cf34caf56a16b5af5bceb3b7c6e189637c24f709847cb5dde39eb26287e590d0cb4a19f6ed4490502654a6179d1f24bf6f30d1c7b1a67d149cddaede626d1876a93b2d43988944615626eb4934181844bde9ea671970fd9f16df6d9d2ec7c4b0ec1e27c6acb830824f2b43bb8aaa416ce43142dce440eae2fe176a2aaf5e49ad2fd948a686471879614ddf4eef62e841d3bd030517d9db15532f0c4bd7257f88a81c18da23c17781d528a8cbbe1a40472195235fe950c8a1a3b65aa1b1ec8229565bacf9504b3ef32c69cfec62bed0712b9085919754c8d65535552a1a002c5eb8f180efcbb5051d855312e40f2eed3cdd68176629bd39aeb823b034f07d08004e8c482316f0be7dea02c5134dfc6779831026a0d324820a360c6b89bb4fd9bc8e2c70d4fe4bc9176a2e9f70508b91a6cbfd018697608c403334e3b8a05bd3cb0bdca30de368c07e79d9501804d9f996e3ecf9c78291980ab3808553c798da3ad71e0697eb0c9d6cbeaf3aa33f7c539ed989fd4a8e02e7229141849ee3015cfaf765961b16ca7ac7d73735dbd171bea3f94a601e375f5c1fd681436a2e76b065eba1fb22d655e484dd145d73337ca35f0fc2540bae22bad92d0dce064b1f9b268c72883819254d16c6ee533af5561d7b133e878d05a6d4ff9427d8d2033a65ab1472da760cb5e2fbf761a56470ca9e491aa955716cc59376947e1d3e177a3b422d1081c66fbfe0a09a2600e33f4d43af7b1e9fdf2174e2a681b374d2b94fbc7731999f06ca9a055bbabf71f5085279ae7e273dd343e3c2fc3979b19f9dbdd6ba5d5b1dc002b97007a7f63255a44afc920787053643bed61c86fc21c3d7ea9a215c23e9407001766204723f17a614137e6ac4c49efac158a9b6937a8b3b8349c96814c7cd3a423faa141127a4959493d9c4ac0afdbf36728d25546256f9ad12a9c86cf57f4cfb5419a699a84677e2d289102eb0eacc75272b47cbf61ff02f7aae149ac02eee6e486b90b2c913f7df049744f36ee9633495168325b0e38d2b14b69205d98dd70016bce1436cc1aacd2fd3a245c508718246d4df4d63223fed6b5c204554442d84282d50e7d3cf5d75bb55a09c73c03581c95b3e036faf30d1116a8693fcda75c77db6f49102e09acf88eb764da48fa67ecf4b3fa2c0aa5bb42da05375f7c3724eb718c330c8373743ccea1a5e27490d90f8b0c98203984e9055cb449c7398d3a4fcd95049413b4812762517e0e7f7a248e9bb62be08a45d4839d98b6429e8e05ed80db08bf80f4cf178b3cd01ec5f385aef04b3cfd8f3a651aa97551a5c68b5f22646cda147cb05491924084490d65aa62a8d40f35356a510258223431035b84639098d08ab7a32d1a64f3d3f52092c72a6bef56f3d77ef9f974a6fe2bbcb9074f7eb85f48a400d2f5f4990c440ac84dbc9d2014ff760de64e7c537d1db240e99dd1e8850eafd7147a3d0228379b92154b4626faa607c7aa83b57d89f2bf39a1b5379a49525b3e3f88f2afe5dd5e52e2fa340302ed00329d58d807262587da641b9d586dae10f1dadb6da2f45c5b29b2377c0f74f3482b1de578deace421fafdc45aea21b0fde70aaa371cb9206406d78316699c549048848a47136d36ef17bd47ba3cd2b7470b1c231d4183d61bb8f5a1fd203e38fa84a152265616809425a54b335495063a809e33284068535af81dc9ceb19afae83359442079cf5bbbcb74ac6680516451b0ed8f891a8dc1724fa5b7f950915592278385d4e5cb828f92920ba0097e7938034a2b3caee57c16e6d6bfcbc1a87209e03967e440fa185ee85fdde4a083354f164c427edd2274279f80e150f9b370401a960478c8381ff13bf157f10bc94f62815ca70c7c0ffd59e39ac7bb7ca572464396e186338ce88e8907f2792320585fd68afd45a8d8fea29aed3b9c81c1ffdecd6339ebdd2e159d4d727f3130fb68ec8bee94c70ecfe53813e60f591a9ae2ac2fee5aff1cb84824ce10778d903cc3de37725f36afcf9eccfba08701334310159ae0442ed416dfd51be8613bec3e8fcfe2912be7bffee29a0942418612d7f50675c2d24f30a14ae9c0eacd62a3911994ef8dd32cbfedd04de9e26b2b733025a4dd937fa2989ac36878bf5b4a72c150998393392390b1502e1a29a8ec8f5ff0c6366805bad9e3c0d97c80064eb2d5b955dee05a956605e0173d094fc591515398c146d42ad0f29f2647ba7873247cb4ba50316339c02a4a30325962e447ad2a512cd0473a367a79de61f4ec0a152c4b50b429a6f4f2aed888b04010330bf2511011fa451a25bd6c731cd2841d801175a5e8de3caa24f50cc43ddc862f83d33fcce8d4008ee055d2c3357562e4e1cf6ab38506d7232c66a293a1f4025f8e9a615856548824c69436bba9d79c14859f96f7d2c2d26b7aeef8efb4db4c55f2fd89ea498fe0aa9c10a61a1282ba54c10ccb46c144a714aeecd69e1f9ebec041e4e18fccce4bf02b4089fc67864fc18ee108231cb855aa524683d04e7c73b069427cf258fe7acd5196c32d2a6f66dd55151c3bd80b0549c0fdd462710b7abc45d141cc910782c10c855f590136ecacf1530fd635a70ae6943376f461a4fc2c786346d8a96f7a4ed1fc49515fb8ad65be388bc81f75d1bc07dfaec0c041d0def06bbce1a22d1f1df40b6680f0dc9c0e064c69b78b8ea2445362b4caabfa4ab12bbca983b8d83ecae9f5b76d5df3b21685b75df3efad88fd29d094daf9e63d237819353e0b2054e86bc1be658df7ab5099f2bbd607e7071e9c328f09ba43c8ff942b352ec013fb82961a465fc43025629e6f0154ea8025a8f9281b5e561dfa9b9873e517cb1153ac49e820eeed498036f71f35380e80162230085e427aecce36614951d6d8d56267acad80d6965d9f82c9932137e88d5cf7f6f67b0e197246172f91f4909a43f136e28fd49d942961ca30009c1a20e8abd753bdad12908454c4bde0efef65b12dc4e368b856e742c4b2979ea021f12d1d2e4cfe44d8822352f9367113ffe25fd6601e8b06b4985bae07bb69ce2c1b49eba02106f26408f1cc4a4164df582fd48a555d5245cf2a7fe5724577b6806bed037dfd6ed2750f06aed9d784e5a62c5390862f8847dd4eaf728f1bddaaf549dc8309b392c4eef8331d0e814642e73d22fc35c117cef534077d2b9477447f11e6ea6f8960f47196d07246f5e478623e3945d48e7853f688570fb016d4bb954094dd0982720c455b174a66303d41afce39ca28d5aba0e3e96d256e9f28baed12d9d16a47cdd9eb8787eeb95cd4c22d7b4fe9a6d3331d645304fc8038034b53585d2216617366d8275fd9aa7279012f45beb92812624430779cda7b7a0f333fa915045c2acf254de1f4906b17932716956ee6c032e47b61125edac4aff728789f439e58c08a2639645382799615d3ce2a66e5cd2a0d157e60d7d5260b6d992a69b3ff3d416f3fcc1a07199013431e092374dac69eaffea68c714137c1f802ae1dfcd2dd8a461b25b4fd409c2c49bad85f15792e5a012822dfe3e97ac41717f19ec810ea44d13195ed3fa393a9598483108a3a9fd1d59d16829ce669aac768ecfbb3e2097a4bb6fc869c5f02045d2b84f746a44cbd6a9180692e5575d0608ae6155e8736fad000a0dedaae147b8322d4ffe60e9e3f101daa7eb53b27fb03c0bd6571e53d06456797821e7e9cf3ee0f74e11d7ea0403fbc5c2a81a24f274f20be08143f356079a5234ec5f3e574785a1f0a1b20bd498e3546dfa2a30fc114cab7f92d1b68182c06f4cb05b7135e1e4d22e65d02c0b7f4413947f9330d5ae711edc7103213599e3fd86b8d9564fe63de4d0e5aa33b83a58806ce247c45ebdc43482435221f4b19e6eb94ef6a75e01a0ead12368b609a79c5da8c5bcd36988c5d461b8c93532888ba705e257d80c72aa8a7346c5a4a3a70eeae2f5144183d35dd6cf1b98560da315c26da50b40b1733aa005df964563af47af1a339fba68b08c2a79c6b3fe72e24ae3701111216b9109bd69602092b26509eb4e11671ee128b2c8d7a110f452303f6f8bed62ed2fbaeeb4702765ad25303f8223ace36fda70f87ec45719ee6fb14ebf6bf9546e4302a044500b24322999f2a1ef94141b1baa50aae07a02d66a4f3eb3bb5d63d771c205ffb6516e46e7380db0eb4ae4936101d538add84d5e71cf47dd097a9b7389cff9fa7302dc8b9637c8948a0c27e02f9dc08e8c3279c2dd5c6772af2e564c3c6359aea30cc4b4f870920d9e8cd0ec82544fef86eef5eda043aa1454c1d95bf5523af4c83c3540a44cde031cba846a7f039a7a568e546dd4a3b765a5eeacbfc2c8825ab437033c0c7224114db24a101180806442094a0a972aaba04b01f5220d154f5e0072222f2f0475fe228b2d6122c516443af8634ba505c9b87882efc79ca4644d7180fa08b78f6d2ea5d1dffd507f3074cefbe7c2b9f1209d436db68ed711a1c228ec4c47865adb8e91d12c85569518bc95db2a93fa548d49ea8aeada5be1ef5db2bf26ee41a9ce020a506c14d4ac54270217389c8150924efa1a621b278712074897e2fbfd427f9e24f9740640dc4591e490117fe0812a38c9c212ab3295d17cb0a22d2b1940c3915049225090e62beb7f0653a6b4c254bc1bdbdbc9e3bcc2c67395f444c72f1134ff75e7820ec5de3383a84822067a9b17428ae30dc2964854b2208e842c68f0bb5f35b88c2420bcd72f5b126fed5e54fb31445c6b4ea2854ca49864fb887cb932ca296a7b828be4a4918093709272e44166027eee670dfa2e24b9dd197f5da311b7ae1e0e44fb0548a19fa98504f53a3040a7526bc2211cc6c99ca4f176105d5e938efac5a561bda53e6132e2fea8bf854d858c54c43c1bfb3c89b3233e123b33a80982f3b1a5d028f868b122675d2ad163c180afdf34a5ace7c870c8c3071aee4271914792fc1798a6b53d4242da40e82e22170a326abe8ea05a4d55085466d052d2f35d0ffc8dc1af14a998ecb8a015dda554c9cfad2a4c821d2a6b888821a7011e9491e56af4e7e7167b1a2df1e016f46439386aae0cc36192b3dbf2ca953c07c99e89b7546f77ffd128f0247775f28f69667a86438e85e438780bfb08512a08c417165641fd2a06602b850518325d00425e5c6216ee448e0c9786d258424a9979ef6119046aa2ff3d2deffe899f616b1112485a5784f595932c4dd4989a327d55f712b2f98dc4ea2da8e3298946baa8356873a22d57e282003fbbfa556a4d96e4c2c46814e1a58833aed0939acffdc9017bf8434e3b1d01055de9845be3c13417fa9e4619c4c96e6b8d1a262756c1a54dd9a43d5e7a46a2064e144e192354939bf50607deae599356c6af7154b619ce06e525c57b7a9f2d21f9d018e300b5b5fba2eb31bfbb04a32114a83a27fe58219ddabd79046903006166090124dc13c7ec4e1e2a69e70f81002b1e03462bbd73f79d231199ebdf3d9dedf3c236494043fa87023c6506f6e42f5a714f7768c5baf6ef2937513871554ea05f19106bc34b0bf4b03c21f3737fa36dc88c1a66df506252fcd4dd61e4d4f182e5e76bd20fa3bfb2ef8e75c206905a8ad874f4b6e4bf40e9fbb41b785572e308193404e20b764f72699032fd9d06930d4fc49d2b6510bbefee9cf056ef290c835bde607910d8c216e11386f67d26314487c22660487355233c6c42e0213c5c45ce6e8679be87a7ea4e6ee0cc343b1603de47ee0b7c24a11e63129bf82d5fc8c30afbc41341002b687cbf854e45135698723626f6a6d8b6c36159e07a90051fca4d8aa3bf7fc4fd79df284c23cc478893b57a89e74aec937b00bad88d9b10525db93edd330152392e1e1fdb1aa83841b9c212b3754e87b38e8b4b8bbdd93200f854011f4e8ce8a2e2acc44009ad4172df784ea0c6cc298f24ad52df0230ee46cf984581cc8b1b365e90709f193b2e5797b0ee67676f3e09c8cc4ce163c5e4a8b0984215236b490d0440e0c140cc72fb652555f7a360ec882f8f0b7687daae36b1fb2f6fc4911e1bee4af5fb291660b640af442342053a1148bc7eba71bd6f0709b7f6db17392f5a0fe6df1f15470b21f761f13394b6484f9ce0fa2b948cd7da4e3b0605a8ab60b388bee517f2899d513d596dfad290a7c20d49cd43149ab14c70ab7fae7b8096d2934919b9a23a073ecb61a074e51332edc3cdb6371c3a0effa9463380ba486e113ccfe40a52fee338b123ce4f4a906bfd041704ff987306da8021479e2ececa9e2a132182f5b269d1cd4103ef1c40375583d2967a5918cf7036fa61cc04035da83327210d6bfdce687e3c020e8842c81287ba0666943404f73955f09fba46032fece186a2b8bea3e09ad5e3bb37ae59f940dd66bf4de5ef7f48aa98b8ec48ea62407ad87be29d45df0af873888fac2821bb47a2cd6d58bf4909a3a3974959af21fe1691a0ec011db276a979e7a0d224358788e559d5be6496596ad2df7efff83ff00b13c973e1b10e150cce6c1075fce00687a66b2923a012e8a550a7bc155b6820466a415dbff6fa964134406045b170ba4651bab35635c1db4777c05ca49b67224446a7046a43190c2347e3d7122544b68299e1caf638d509749d1686614ae6c80b37f8032aef12f6ee584fb8c25bdb3d6da6fec0e86b38c0b4450e57f6e6f9fe7baadd658ea168b78b3c14ad897bd9a2d561a02125f4a6f8b99d9352f4fd39ef6a8ba4e79695cb557e74f9de05c2a02a40489e18c0770ab38e56539be8a3f58cd0eb3e75bf71547661ab7c31d8ab4890d0efa0db58552a183ad3393f375f294134f735cd6f02d4a294a9f9eb8a4dd9ae2e368d689a69aadea891a1061f19370d0e4e34f4c59587e5db33767b46708f9e6359b4f4375f4bfa6830b49754c4833630d98a5d93d2b76f515176584bce76ad3a02bdbfff06e1813d881d7bab54c9ff04783841d480527fca1bb9336e407f4e6c7629406226dc426ada32f2071a6de80e7aa7fd45f926d24512dd930c1f83297324cacbcba139738cc9fb7ad030eabbf1c658298e3bfe3b83c3e1e30a94c3086fb4ecc83f954f0690102670e268489f7b8bb1acf0c04cda7ba025d0bbbcff294f72fbe9ea72b4ec6cc8ca3eed92a9f1eb438de1462758e046d60e79abb3038eac89b919bd20aa3c600d430f03335f8add1fb9ec0fa6a348fde3197c7464a17e8956eb3c647085af686c950d91e3852cda94c30d532a0a1d607e8e2df5e393bfec5203f457d0ed3faf7ac80b150ade4b0d9a071dbbe6e5b4008902112f0ad4f5660562f7cf259af996a984812825f89017d44373ee7e2bc92a614e102b170f5bbf23344b28f7fb1c4b53de845466d74852dca9ca0eb434935682c788916c8d84cf5197fa148b50fecc360089ec9c5b3d799eb0fdf459ad723b4b09b26102986797850fd6e5c5ff134f86a8da02be7024841c1d3e90ad3f9cf57db77375e2660e4888c554bcc287359202b7c092cbd0b7756d0aef29ab35ac0733106b3d9833bbe9d609a177a21e0e919acc2d954277a0b5d610868720a4787dc08808aa389da7818cf3337c629eab05059cf2798c557230bcdb1aee62d3d7787533e4bd30d2816adf984aa5a9ed9ec3676f5231c5ab31cce14a74fbf40fb28e1855cea16096d489c2276bab8af3e41e6589f354d88b1fff617fb4abd2e890516662a56d0e99539be48a3926d3e131ced9e8a5e69ab9b520a0a643e6c89e4bb5c7ea8157f2636637b996d7b128328c880d5964906d8076f1372c86faf3736e67884cc67dfa42ab0cd65ab343229744fe807b3d8ccae5d7b5fee044b4b2acbe613c17dfbf7edc7c2ae6200cb275d2d8786a91cbe3d27e1c9a3704a474bde95d8adcfd8bd22a59c21cc453fea6a7456af6c2cfc7f28574da7b99f81d9a0e259f4d65a147ecdf7e891c0fe282a2581bf4ca909c9740e6704f8921c9f19b4e236384eb7d5ea26e44d70738956c58c11c6042b9b108d25188978b12dcc816fd0d3ec3459e2d846721f226da00085c2508fcd0ebdd38c01a3befc08c261511c0179d47ef70fdf60cf169cde401ad3d6b30ac7d4feddd46aa54d0912683e417e29a9eeab31604264c9708aedfe53964609454e57080eaaf5646f8c0ce31c1815747ea2bf752d2ac1c7353f351d80d1d843dad213eded5a0114163c08ea0fe95826dd69811b02462dab1d37d9b134d8e61a8b4fcb679cb2a65f634459238c71f5b86b401f32ce4ab4f81a372328984cb48b677c380657d3d3a92515d8a2af0b3bb98bb57e8ad9af79fab0055cd98965767ce1d639bb624f89b4c9bc0b62517248df93ff9a782dc31a40aa133618693386aeb84461e5dc2d2361eebdf764ffbf9ce0dfd9bacb81cffc7fed089f96ef323d3a718ae876926052eb9e9cda42cef5451eae41d216a1f1d91bc6391a76928986f711cc3280b68afe1f4392bdd8a1a0db7b33ae3622346e6530739fb2499cb24daad5e4d871ef148df5215706f8709e489b1c1759e100dd2a0c275959e7509b024b0716d6fe5f33fb5d4ea687945f837feee7d7e688c2ab35c10bff7dd9d34ed1e14fad98694c8daf1456213c48ff9f16f5de12d0883478c783159f82128a839279f3c0809b98e12be76a54cb0c96c0d5189adccabd075c14c8d045d43a454fcaf60707703c8d4b7ebe5f84e8ac1029df4a2aa966bcf7112b2253d1316db8322450b352ba3f78e164bf16b94f9fdb598a0b01d5eff52d05d54df53c90bf6c720de73c50455a03d62d65326c62832dfb6e6a1434be9e32aca355b605245837d0a8e5f63781e7b3f75debd8cc5905a90d4f4b59f8a7439bc071b5d5aceaf9bc625797d76aec43fe67fabc95a5e7080d5d58d998317f68ff5800c14b766d3376c2a22520ee727a8ad8143dba789399fc494d1dcaca6f1af047092231ee5095dc6b1d528677cccf0fac6fddcd7e7b09505ca129608b01feb98125bdd7d31136283a76ada0bc6f06bb5f1b8ad1971610b41cc625d0f636138435f399a1f49d75378dfe0ca7b29101443476b872c48181fbc918c632470ef9531781a932a0a28770dd6f4140b3bbe6beef3f35558a6128976d16ad2bc474ec508e26d6976ecc59c1fbf3f45f456e2a1bb7701c8342397c34a9b9da4bfb740eb0bf318b9e57f6a9b5a5ecc059306adf4640de7fc94c237b77bd67a02d47904fe45ded690f99531154a68cb2f13b180e0d134f99ffd2d5a182c16938a4ba0f78f67c937ec722087b52ced58a37c0b803f42a9a9d0f8a922336166ab61096a2f73fdba32d369dd764f6ae798f76bfae663bb06a52ce0cb83c3137e87c1a5b3ea70ed5a4ef804daffe90283ee3622217b965cb0895cb6f8b0d38fedb8004f84a04140f59c3967aa563003f05f7a983f8c860b27a8781e5f19658ec125c6087937bf25e72ef32549a6843828b94f68c7068a084ab2fa8ddcf7792ed25a97ae64f71a1b999f66a8b81b7e6c4e8579e1d9f7a72c066800977a6059a210c684d1e3a1e368e8e83ccf8dc434c70637758c46288c9bed244e09e62531a50b227d7f2637049dbd6b26296d5c88ed5ed86007723c25c11e4b206bf9bbb1978d1dd5807d9acbb698611f66478ff28312f03246e270ec40898a26ef9ddb828c9de127f374a50044880c1b6960eca6c2de6c416b339e329ec63f022c0b5d629e8ba71acf77e7b716cacb6d691c97407934555ed8bc21b4be8f5cb90c9678837a7fff06a458380f1069a877d9aaa800d287c879199c3507274ed694e34aaf803b1d65b22bf43166dc37fa7e021c56b66399f675cd4442eb04af3d551dab581cddb768cec944f0087f94c996b06c2a8d32815389dbf532ccd50a5206a3cce97eb86c8ce8ed2104c4654ab1db3b3b2b8c688e1129594b169d195f0279e38540fe92dd203d5e919268045ebd5301940cdf8a0bb3e3dd9fbc7d45628ef6dfa7b1fb370513ca588cd10f2483e66f33a2f3fa25eae63e8e97b70bce0db2efaa5ded6857841e7965b4fc221dd8ecd2d6b3fe0625ba0cb8ff45119fc8bc7997ebbae51be2fbd61de4d2deaacc4ed868e5d29943afe2cae6ead5aabb3211efcd5261e7336b6f50e5c8ee09f6a5fd312c108429c151da96ebb4d4bcc8f7125e8565709666372c85b26e59a085c87558357a1c80344faa06c4b081631416dc64e1f219ce7dc588fb653c1ae4bb20da2ace4826cd120990058903ae0bd6ca84de534ab96eb2cbab2498fc11bc1cda4d31968a325c9c56e444ba20e171be37d5374b300d17e4b09f9cda8aff3651e43451d9b69e44aaaba50d47f21c225437040fc76988c4b69c3cf051b44678aa5d3300ee2c8084a3b0c47a6fbfdac8ed808f7d7494c55c241d3fbf945e79cdec1c1313b1a69e4c088dafe9540dfcfda9184ec8eedbc892e3b89b2401e3d54008d6887239a9626f886c95f3f8436769e1329ecac033b24e1a1936f28c37f3e7dc538c19268b761e60df6439c6d7a6eebffc0572d992e46e1febb82126149c15416ca1a11904366109102f293e2e65e7f0579de10f9940f0d8a3014e2d5713ad12270d5ee6b9317c6373e561d27eae04deea4bf3654f82dd3725f6764acf42bb7e0ebc30eec7c9007377f970f22d113b14cd58ea92f452603cafaff8e4c69a319137d6fa331ff8b238f9065a10ea35da0ea4bf3037c8372dec0252964dd6029bdc339ceb5805f3d08dd529cd68e5641c203187188f73e14585b9864de54718c3d5a7a3d7bf11e9c7714e463a444bec9d3c37879acbf953fa74162201b4cf128dadbb23e35907cc30b77217af6f2cccf1c5bc61573328cc314a3583dae9d994c23d7e06345572cb86bbacc0e1896f662a108dc19f7eaae4605603df340e01db59418d91a52a9a882b4aa6ba84d50d15cc46363ddd1ec1968818289dd03314b517c65a56efcb906858c2c565176d5a266d09403fde40d7ba8dbc221f0dc8890ca247dd53705e8d6973f580ab4abcbe5407fa5f891a99d05a9fd4480653e9beab2ff5c581f1c76d26115dc7c52699bede9a84f0e6afb897175313ede3c4753a6bff6a21fcd44c7eba37ee9235a7722bad4ef86790fb53a4950386deb399d9bb3b1376a0d94fd40bc2df0c8f8abc446f78bcf2f85655cdd64fa7d4d195572a61db5fbad944c4ecc48b57014e167afd4dd9703d2d0c152d5714e818fbb97e69400d3bb1853515575cf6bb88ea954a903125f41e27b393cd531bb21e76e4cad82744935ee46990c328ea9173e816d5034e32414eca8231cc2cfea3ebdbb01562c982d52265cfdd764dde54884a42817a58ce683f0cacc1410c2523121ca28f20df29477b33aa00556af5d4ebaa4db8a98edf82aac26f7d45fe78f641c25c49c8eae831e22d5cdeee0e8c852351c92dac8453072863a9ae280b005a1020e9b9d547d1077d0d69683868ed8af520499f291f1c9174b7b6ecc69e9ef594b24825e499684b247fad9e1b7a3a7d221bc399da37825c95c41956f7784030ee13db9e1ae02c8b752151504de7906234c74bc184c913e700ba922bbf3d28d8ee234d2455ac1eaa270d14001368e558229916c0e0eea8e41f6adeb81c7af267d63736507f090521dd2565f68542aa86d0f3d84f045a178f83e4a52f11cbbdca8376a43e48ccca8f4a154decf1c425fcb9ce5bb1e16afe09c5871bfe3ce72099e86495143f8abe4e7b333cc191f13cb17675aac42eaa0a9f06b49f056f5f15c3d419b3d57f68b81b53132a9cf4475bcc145e3a403910f1e5d27ee3aa34567c2e86cd3a3fe60fd6a6cdf74bf7b58ac0ca6ea34b53a801fb11a400e3d4539ba7c7ae808e3dbce0a180fa644336e79d262690b404fc537f170eb2742d4291aa9d7cf8d549fa7da8cb0dc9b922570da1f7e3fc6763688810ebb203d675b9cd0cb570d5abc930c4f5299ce294732ef213820666e327349432d8084feeb9cf37541dfe09728b9d641a2de0def843ea87b5be8be64ebb99f75db72b1126f38d452f85898e0e4f79dfa58897891064ad2d4811401482998295c4da114bb95b1b08baa72cca35888e6950c16d8140d13da9c5da8d1158b1005dfd043b6513855371a13a2aeb02bc6ebe50e0ccc2797a3e51c5d227ab135c78753dcfcec24ebfd8a6a0b0f8ab104e3c1f107523b064a2e566704a741874738d5bb2dd292354e208ef20792f71bda3ec05bd6c64de40255aaa89e3644eb85bd2e1b30f035ed1042a3085d25ec2fad5f256e11167a31385b4a70ea1203cc4b5562b8eeafb4cb87dbb0d13574aad2eee5dc8965c29559b38ce53cae58949054502d2384084fdea675e56f73ec6209a993715603866062f5dec4903ceb38c5127633d9aee5d4e6caa0f1e8c7de72583316428fae38592618f2727199a36aaea3c2f3b0139316cb86c64af7ac226600ff63d71b8767f811d2bc86ea498a389a3a41422a0e75550e12c47dff341c3d23431a5c56a188cf3cbb9110411bf4442a04e0619f0cec11d6410b6d13e1b33163422b80e10a651e772688da8af68576f73a9e0ad3e14e537b1e1f0f5dfd84f8c03d9a75aa8932107fefee5a6f8e422a1790627b81b2fb3c03d3e9849c793359e408e09bdd0360fa3f55812f801b0d35fe839de120e0b76576818f5514b4aad745865369e49b3c8d2d212a211ada4ff96f98bc74475d4f408912d412c5906341e4a0111fd7bafa648b3f097ef7dda6d7151deaa0136cd335de7e49183cd283aa330eeb09cd01757ffd28781290c5f92d9132fa73bf42d7ae09ba32b30431a5d00afd85775b4228102c90d5d71d08509e370b37eb879bde7dee30d1863a1df493339c3f41f11a6d0a775afda29bdab2683b39a1c4c4b4fc3cbbbfac7aaf9ed601fd7c408a0d9f018b9e9e5c7b2b6f61e9b0bcf91d5aca4e0df3ac6f869a46a5537743b050c7eecf43c13d6342ebcf2fd69070ddbd0a94a5abb7ae9794850bd7b35ff822c3d9d15a146d66c27b5c996c36b4ab3363f67c43c9850813be3a3c4337fbb7e51c2259830eb14bf758c66bcf81ac2df8ae6dc86165845f6176f782e8c9aef91e1eecb01235f025442210318bbadc05a2b47b8146e012f7753fdcd9f20920f6e86a740c6d2b6bb960107b4301970db1756bee7c36dbc9f90f01d29a88ebcb33f520afd390a0503d2d3c3c92808ff9cef03d3fdeeae84a08a2b94f33564470b3a5e334635692b621ef170b3a1c105656e6fdb128ba70977c699b38e09cda2b7a348737bcb2fdcf733b083da653be2c34802650c647f909638a45654517d7b20ac2e8e914214d438f100828bd34017975721157d9ebffa545e18d474c5b52a33ec758c4d2661a46e99174064522cb242f65682ea9162c4c933cb8faab73ae869ccb2c92bf6882a1698a04245ba59a449fff117831bae4ea280fd39c458ac8f3452dc288ccaecd4a5c04fdf375c4ac0e828460838c7ce416e08741660bdb20773a481170b138e2e3eb1c8c02117cdedc5b96b64d80f77631ab1b5962e5f02cfcf9a4fd72066079a4a0cc6419bf115b1ca3a5a6f674da7ead0eba9a49e22d5ba537bd52090e47e529e2d66318b120d9ab158f3735839be1c58b5eda40a078b8545617fe254172cbbeedb117b5e757738e0e62f2a022e8fa3b97010ea1272782371b9f86fe4791736bb642b55e9d4ddb96fbd16c23a37532acf2af85c6302bec0d72ef8c2433067b6bbeb7bc83112fb4914c194f119780074e568f7048366fab700addb8b72d9364998cd7c735103a540ae543387a791653c81f598b287e302ebe204bf4aaf4dd6d76bd485ab822ac5e46abe2ea8006640284ae648e939fe8aac161fb360524fe827093644de162808d9fd14f72fd522f0ada81f694a798b4c57242de1e4df4c85036815bd78c0f58882faf4041837614faaf270f20971bcca4d652024b6a15586218803d18e15391d921113087e452eb079642214df6992922db3729dbdd5234255e9be0e11a99ea04f66dfb25159a12895ed1549c70d48cc8aa9ea4290ff7dd552049c67b81b0f28ac6df1a375cdfd411c6e834a146cf6279c80af7920cd22e5c3c1bfe55500294b2fe71f275c5732d37fe5b95b2faaccd1b4519b0785338886631bd45c28978175daf953cb8bc6008013f536f330c66524392afabb6438b6cbb1d2ee6bfc84e87a50882c483bec8d0546720f10bf8d0a030a2e9bd53a851b167582b1f2e3e5248f13975300dfa2873402dd56fece6e82746b78bafcc364145c871953510f36bf4a2f250ccf96da2f297dad300637a2687cb929a6bb00c6d7fdee7e9d93725babb9752c38ecc69de9d02722f131314ade9b7ca86b838e4feafcdb052440b61e5a524d636b37511a38b0213d783289835ecc4e1f86d6524e5c893ec0904cc7f59915b2e45670cb29c11f675fd0983f894ecfbee05df59943259f160f2036dc5d10ae4225b896181b110af612bc2463fc2b1c77d9763c56cda92fae19990ff8c6168a8f6d4cb03413a4a286c6518ea34c44e672385f845c3689843e229ee2141e4e62fc69cc084c55fba55a7434e0c01cc163aab7ed0ced3ee1b9882a75fa61faa6b8400b65bea8104300775344c08874b919405598aad29e7a63f8db532402a99e1cbf73f58009303fbcf6c4dc4094be7d8eaa2e45a7385343fcd37d4a16d09605cf4c733730ad1e17be26120149b8780ac058d9ffd452a91737d033029cd17237fd42985edabc89097857e9c1a22daf8b53a7c639c280912e0651f766cb0bfe424026b78fd9631431eb5b2bf142356e7f9af199d512c7372fccb793d7abf747eafb287d2b73c45f8fa5919d5be9f0e8f7437a9f5e7c24a443da67b49c180c3a1bfcd772e15c300281d33dddb252e0ca61ea6362fbdde01158dbcd41c7d2a1f07f0f7a4d1ac42bd83af7c30d16cef0679a847019934a7899a2c3e44081150dfa66cb7829772a51d22e1f0e2895f2b7811d4f6d97a83d60814f7467c09cf20cfe18a5c5ce83626b571c0d501a1145fc1f0c4d587755f424976423df5881f7a840112c1e17e70aca484b4cd3b8140af7b48bf9c088299340b0edf2c5dd2d2d2f891c636c12807b56c5a1868b3869b46684c1f61232549357c471496d09bd809549146fae886287f61039c973862bdaac4b0d3292c585e2a0a267acf757220ec4f069bcc95088a070a74812398b476f99ce514d42fb377391055e2f5f9562513a645e81ea234965cb1549bef3b1c006d815649e0759c8d17268ec20e4760a54c0281259f05a834308425a77726ed5e94bd877ad517121269a0ebddf51b4e4481600f6c4edce636b22dcc1ca201520b5192c26897269b2d35ca837856a93da56f40585fcbe5d147bdc1730ca10b7aea24b7aa42791eefdcd81f4b61c58281d21590ad9347a60836623b784cb13f82838142cee91e630b487912ea717fa84c9012467dc5ac7b9389f7ef467e9c9f5c4d18f60298c3b9a5017523989c3dbed73cb0b74402cd92e98cea67556f52cf4403dedb412a45acaa1159b33a52f38b646b2364112769110eabf2705056ab6d24d2d6eb41584ce73569c83971335b65554178ab4e5f2d2ce1e91901126314312debcec1bc826f7bff39caa18e65af03227217cf69ce01e5941e64db04212712d18fc7cbb8eec7c98905271042d1a50618b1b2cdc44cc581a40c6c2b77a0f6cfbef19a1fe81a75a2ee2a890123240acbe06f527505a3f7003602fd6d77014d8759b2eea6edaeb451772075e0bb7b3704915216a68423fc35b208ba8cade1e54f579bb33182ce357e6cae01dd2ad886794fc8d9ac6321361d62e320468ed70dbc502c3934b4ba06cf7ee8c1227e690ea69922cb32c2d71aec1a13f91c1b6c237307c84dbb3d98ee108c8565a225114ca87e5dd101d7d090991a0eba9fcdc107a9e4a9d89a01d8c8d2c43dab804d02e21f74abc90345a729bf98278b0d2e347eb712129af33907d9fdfa44cdf4063c9c58c96b12e99c37aba1b6fdb016e45062eb40739b8e1f12194e2f3317813481e6ab3bd8eb4d230ecdb22a9ab3a53bdcebeda612c05bebb53d6702879d93ded5cc6fba1b59a0c755cc830d969b8c9abb821ab6f4349e6911deb577670f8a8b063b589746092bddceebc79e94bccc548ad8b8cb4c76b08f1074b1c5ae1f97c9a06be85be71251460ef758cba438c0d01db0467e505e9adfaf7f9d7e18d7123fc96c001011689a8f2c0389c15f573134db0ecc36509e832afc99578148019b872c1568420c77c301846431abac7ca217e009356d79a31383476bd43c53b20e9f9a2cc0640782988470e64073699871401e65233d50c703d7469a7fb0c220cdcc2586ec6a6107b7d127fef1b8bf6a65e4cf225cca96330d712d13950964840bbb5687cf4a2bec9027e04c929bc8e01a19b8e53f4e0c43fc6a761193b42e780467bbc2fa9ca0365a696ec2db3bc41697c722b817075a2a073ca567b503c33d728d2e9a557549b31a2069f98e3027e332573e0a8d0a38aa6d0d0f1d6b3d5435ccdaba2f88cccc5866fcad3396fa85895270aeade9d7c8842d603e1660102ef1c6cfb9690d01b6604c96285ec2ddae5896b0cf10fb9426fc13c8842cbd7c73adb130df7b60294e4af7395b08539bca9b92995043b3905582af7e44d9858757950f1941c1bda5dce6eed838f6c65ee6a16280a95380fcbb726e3eb6141112247b7fec17e45d1b5bceeeb9e843222fede24a209b9aeeba2590beb884220538c06ee61a263ce277a024f2a27f68053f4980ff49ef93e76cc3aaa75ca35983a780a3f5346ac772b606f071d20a4aeb9456e9f1570058a0b430acd1b3796d71ebd6422da3221e15bdf508e2fc20069fcb120ae2511dd44161c5f917961106e76a2e4a48613d80c6c0c45862838388c7c95d224a88a863fc0bfecbe768c98bfa45fabc814ad80a79a92f6de4b51c99c6ca47710f24c05b10bc841b4eee2193a0df2fefcb54559b6cb9e0d44a6c5c7e9e3e9bb82935a1e2a09be458ad04c1fa83473fbbb66ed9a6c832de9cea211b6a0281b45d1ac0d89b67a02624ac83e17f1cc2baef319a36fbe6f82e3147c2ba4678fc503d2c25570ce43cc72d87851f436f33e212f199dafce14f473ffabecd10e549a587d8667cf472644dc421b540c0198268744b88abb06acea4e2815152f407557c79bfc3675584c3c15e70727d069d5191abba359af0438bdca519cee58f9cafeb83497fb2568ea58f1137d0637f68acae3e79a4ccac94924f76834e8c260e54b5836705f328e298c0aebef05c99dff94dfe8d38a318c709365e05a324f5bb7eab9e3efb41787e52c2c536095f32c3592737570ae4538c41f88a4d1a6398e54b6a090f7d88723299d2e5716a54db126b42a97bc6da366dc75d90a5c88097394c01b95c3e013cad048a70c3b05b30d2a29a0e4a3aafa070053e978671bcec4694b50d395beae8fa1cf56dd4990cdf3a2c24b84081e259e5c92cd1f63a5b61a208100c83e8f5999f9a2be1b6bcf2f15a1cac82aac5dff7668165a01a2b624837b2db9adc524a99a40cd90aae0a0e0ba947bdf7305f65ed5969e552aaefbe9c424bc951f955ca21223af9fd2ec55b91b40e7998dec764f2bc0f870eb14a8a4a8aca0a8b8d254c6c7aa231a74f578babc5dbe5367d89ee3dd91dcbd321cbef273fbecb0d971beee297c794d99e7ed91f0fb43a964807d7a60c8737d7799de7811ecba328708858e3bd256289388b0d5f51f114ec28698d7828cfd33befb3463a246289bc69624164459459202024dfaeb23a58c9ea746ca6f8743e73783a36411c3abcc14b293b5d0a11b993722425a8f39c2224738c7cbbd449214a014a198a9f6dac59f59f92620d8bcb0d67b95a5acebde77d5527e6988e83a7facc9d9feec34f9fbe52017ef9c1e1a2004fee02f25fbe2c7f5833bac46eb8ecb8dc68b9787cd68c4a412e976769a4c55b2e108c1de2a58ff5ddf013cb0a5652ca293bb14393cb7c4c6fa6a4245171a292d4a1dbb48f29933fadf2c40393727854967454a0ecacf47ca358983f41acd4e14e87ed799d5b1eab83e30867aba3633b5367f293cabbee744d9ee77376d3519e2d915bb799f633a156e85426533fea2ac557fbbd8ed58832abd3af769d1dbe3d013e3847a5efc1d91259a28e998ed492142df1bc35addb9cb4109ffccd42513265bbf46d13049c2d914dd232aca4b4e47ee7320646b9c933567aac447309037b3e2751c7e209cc79bcd461bb47fb7693ceb7a3527652b0528afaacf1dcf4cdf7fa4d9e0bd157b7691c620db5ee7dd964f2cf334b8a184e221d4e1c306e1d8729fb40ac341d54b2d6b1d2bbd2e3f860fca2c01873786ed3263fb9cdf438afa8152cf803f58264410b58f0dcfd0a461e224b34e46a0040a12ebdfbd1b3f7113712ad37274a9d4f8d8706a7a5a3531a349d269efa09c8b3a5552855a92e75cc76772335714105e24cb63692ed496dcaeaad22d120c6aa0eba5a3d9938ab837a43aa4a9e57e4c32fbba65e7f2b2fbbeaf5d76af9b51ab45e77bb6c10487f0d42cc41bdbb9dc9ebcf7bd99dbcfe545e769dd7dfeae5774249b0f3bcfe4e2f3b94273feabd1453a90a25e6a08e7ad9de21a52da99221e55eca55a99453ea26d870bdcd17f5d477eb90f660f9fdfa57aca96608c0fa906b9e12e1a9e713bede62505ebd9d804e3777a94a393c3f46806c50bd591ddb637d2c506d09d4b1ec3141401ed3b1c64caa9529741e39d3c97ab516c4b2e34c276b2b779b520f4f26ea1700724fdec9fb5631078b2ca1bda797dba15aea9582243c95340dcb7597568fde716e3f12c2e740bc62b938eeb2ac779d1058d7c32b97c778d34d6eafdb56f50ceba4b436e9828cf2953ee92a659ee9ed87faac4ecb57cf058d18a57bacb6564b931fbf7d3ad63fd2635e7d94d99c7e51cfde2a529f3687463b8179753f9a85d90177763ea9b70ae5ab4afdea01674bd38935d56927f4f568be80c0883b4f6d9d0f1dcfd3cec7f3698aa77e1a8a35ed94baa5756c67ca5ad5518e33931e51ee813d529ea7409c99b4491d7b42a58c38f0a2460eb511295dca97920598bf4146f1a47a6b599cd5a5a7965693ba821163758c930433c5010e80de04669a0fddfb2eea1b83baa5d524e9d4724dfe16bdfc56df99acf8ee6484d0cb6fe5bbce935f4b7a091ffb1be61ab49f1e991481e4239322cef8ce83810f0c76505e75f282235fc11b6e3e032c0f247586ca072f3fef3bcce453bccaa4a7d6b2be7ace3b150f052fbfd3772b9eb4de456f1553a976263d50bcfc506f755015f46c4e8749a0dc00d4003506786a004b5bb5c41afb019708660b82a74e5bbea5e5ed1029f687a72d4f693107f5ef088c3ba4a8cfab9656ab9f863a5aad5e3f8fabdee238eb3ab23a3d16c812b1462ccdfad8204a2dd153e76c1dea18a5d48a2193d44fba8757b757b4a87d7b2a45c5a3af3aa60a512cbc48782cbe512c842f83e85bfa993e88ba54441d1e29522de9b01e4155a19390cf49a8fa4c59dda93bd5a7f3ac1ae26c4fc77275e9dc4ef5fe5c77beabd79d8e4df9a61bf37c36a59d0d10b8f314b72b36210f1cfd4c21c59a14c79e1a4a01576c9de72a3463f02a96219fe30eea50ace9cac34b1e6238f13724f4edb20ad529aad037d29b9c76e0e853ee82c69c472aefe4877da6a478c7771102ceaaa18e495751a98c101de9581255916a49c724a8226a954f754465e44bf95449544528d5100d778e7295c953df8f3af49ea3bed6c9e37bf64fa6bb62b93a540da986ba257a4d55b450afb6eb3833ea35c9a5739cc9afdf586ba2f48806ea3ea8f3a03e43f8913a1733042cd63020e6a04edd04ea61147dd182a73978ead9004fbf23b0cc0a700e5f565aacb1f1d4eb51ac894fad447ae9d25bb536eb4629ad4fb7d879ea91d2a35a0fadd55440b500b241a9ce53af0da34e7da663568ca7617cf6621002547dd015599f145927095f3f9395b238318ef2cd9ad3fec41c2288397a091b857de2dbb3cb0fd6a104adcf4b542a8a35479608cbd3615b9f23d40dbf7341035beba3fa30120e3c4474332a7545f808095bcf5d510f58c75a0838c360a816605ec5f202675863a4eaf3e5f927306319442638e902f27357945955461ed6e411d6c4265b12bfcf0f91a06fafd6c7fa589fefa2a2149a6906247c742a533059f96a8f2916d7df8f15083c5dae684270bd81eaa8e85b75b44a00133c3dd7a25b51ac599994620d8bea68be3a76328a61c74e451d76f55621d19391eac84f456006a5eda9fd766b8476d1c5981a59df56ca6ef8b439c1284b6052c6ce472640e0f9027c64424693cf928784efe867faa194c69843b2f0fae94d847317e59b665abf3432050b465982f58c59087f823664008a0682d0c435503ec021502e2e4438bea56e72ebf9c7046042c0d4fb7f9c6a4f1d023470f1ed51666bd12289321e7daa59a3ef04f8e0dcdd5e39ddede790c927e8a3c30efcd161bce990490d885c024a1b21e0e9d9d66252ac59c51a966ff7b1e25ef22861f952e72fe7f30354ab79b435905842b29484c774440dc90f12a24e1a2d4122062f28c1d04c0713183d44b3222d05e00091d16f4779b4ecc433c37ce9373d4839d4a6c5672f55c4185f0491cf118a6ca48ec92cf3d2656ea26e2293de841e4c830f1e33c8eeb6d1d0b23a7e2d81adc3fa255d4a09837d6d9b2b34d2007e80a58c33d912ff8c22c55977a7f0987551cef828a10a0c9bd1d131f983970e4377cb70c6105668b102152831213b61c81746d0e0a1490f473776ace5316e42cf110dd27d48e731038d89b9d203a66dad9c1cc782d13ada298acd66b3c56c5346ad4b152970aed4549dc41aae08ad2463819e6b0f72fdc1d313aad361f3f9e968a61c84f1e2ae876f73dc1d82b3f3521a6b11cca63ed57aa25f159a7306fd00f5e907e3956b0401cce69cf109d00f93aa0408547c9644c6f8510284a094943b3f35982c31c03bf2a7431d9ce50ef501abb1485815ed88aff67b31b6110467b9e3f31d5b790257cf247cbbe5388ebb3e3f384a9cd169f211fec69858628d990e750b20bf9452da4d3dd337bf15ee10154b68575d6f0d4c135df5812e6c00d960628437a974f4e05c6db7da620de7240d0c25de27d27305e3dbab17310509ead0a1c38644b5504fb713948e99bc9f7c52c7b84fbedb4ed53665b556abd96ab65aabb55aabb593ad87785d8f8fcd6603c814d42d431973d898c336c7dd304c43e8cee963ca6e775212f53b512bc80ea0c344fdeaf0919414c618c650ae0485aff00c137cc4b85c93e326c755221f506a4a42a95bad9d8a33834b43e77e80e7fae0c3dd648c4c7e7574faf6b852bac59b924c21f572ca68543e3f06cea9db8d8686c5a29ead592223d4778d52094d393b35c4e41125839c996e9926d3b04eefe4b30b8953d2b971b71ba5b439a536799b4c263095bacd396b85194a0921e4b9e79ef7018ef2c0ce7f788f4281b94fa7d3e974728b3aa94c28e7509ee23a581a18e59ce7d50250600d9cb3ea1723d3e18e8f470fd081b0e7d9236a0157d5aa1e5bd35d9debfac98154571af8fabdf282524806a9e4af3a6672e92c170acc27b78e02f3c94d2e512c9cbce34c40ea731e7f4a2129dd65410954001e240a6704a1054c00b1032a8066b22646104f4c7044e4036acca4571a0fa5d348f77008b747d4b90cc1249081735cf252ca1e40e84f67e2a5c75a8ac0b565c396057fc4b7417e8c4b2fa5b72881b34b107611c2adeaf25d4680bd6574263df4aeccb9e99076820de292a43b5d8c716102b7a6cb5fc9e82cae8a605e8732fc61e58958f30316800b3c2a5796c0b99ffc93d87d9357745d6c8e75432d6769647528047b1dae7c045d10a1c1120d96ac6ee044064d64a05464bbeefa0de738b3ce2425cf743bdd9abc47e726976e026f8a9cc01b13d89227bfe93a3739ce4c7a9d4b9fd347c3d9306573f29853fecca09f92abb5e996675249a9e469198b2da8fe7479e428c94f8f530afd9444b5a29f4ea3e431bdc79c3b60b043261faad71eab8b7c5a3aab6536805e051b85e98835d9d48621c68d14888c8e7a8ce9a49437c004e12b89e2b4f58309c217944af3153d9c2fe972a96531de9cde79c9eae99f9754f6bcf46e201e6c6c48e6ababd0b1a82409edeb92aee598af49743ec3901c7dd681bfc836ee5805c257fad15ba01f25184f29318420a943d80fb85667cd70cabc1944273b55094db0741a1b10ef6dcf73cea9246f20d3f8e9d27f649024e214a434b765cf204738b74c519070517780b98f4a90d46c54d801036661efa31224463e8747b196050b7e08c30749ca98e286880f33a8e248075fec24e13da162c9906992c4104b98008c309c08019116216041953be4f01b86848a1d284172826fbfdd352548964022240d7a4513eacd273fdd156be277372bc678a334416cfd80e9929e07d22f7ba82fbd9652d6a674d68f764879f8d59c93fb8cf3d187599b7e656573deaa633dbbfbfa9c1c67e76571d65eea93ae565efcecbd9c35be355f0ae2bc4703e9cde913eceb9efca427636c59eff76a8b036f68a15da05fc11bb20e3fddbe7c9bc61d84ce75c41c52a6f8e0b06530fdd20ea78f00059e9ebd5ca9b55e1b08cbaa76ce39adcb0e25a53d813081971e3f182470fce17a69abad3f5c2f5d9ad1b9e43c82b7434c690bcd571cfae898a3b70e6d4926a48f3eaddf28bb6ec1cc7195e3bc82b5f98a7ebf883bc68193bb9cc33edf8f5a3c077b7a068e9e579646a3d1a0cce6e461e950a5e851d63ef3159d7ab4699d2eba949c4b2b4d2e4fd28f7ca6b50e5d46e02c6b3fa3e9569fb6466c03ce9336693f387a9e343ab1e822a55e673a8c968215d661750ec4b5ead03d47b0f32c4de35187f32cb1632d60a62d2d3c3a64b180f9c70d971bd2da8fc20c81ab5327a1086759c653bfc1c2625b5afce62526bd75f716b0078cbff80b78d3d26225ce9d3277e9d23bff70662fdfcbe75f44add04213b2ee0d25087e20ece7bbf6fc8bb397d802667cc3596eb41783e2a42e4117afac2fcba1fca3fa912518347172c5128a6281f3956561b9e12c2c6e33652c0e63c3c55b2d073dcedcb3bf74b5c016035efc7319dc4130071877ffc01c8af48071f71c70f88bc7d90bcc06f87d36f365dd3fd87c5987f960f3c5e22f9fcd34cfc272d9e22c2d2c2c5f75d697f15b1bd6e2fc44b1bc637d15b5028b7fcb8bcb0d67913e2abee2feb5acea06d8b2200bb2860458e53430fe3975697b71ea92baa4ee381cf40c2b02bf148f287a3bb4200eebd65f3e0df4dff068d3281650dee22c5f8bdff8f2cddf68f9327d16972cf076c8d2b5907216ab05cc3842dfe2d6fa6571e944be931e8bb758dc1d67f6e22e37401e39381cc65b2c608b012feedee3c51dbc2972c36f70802d16c799b9dc001dbc81015b2c208f1c1f29345fd45f1c67f602b280354e60d03f8f71bf29d2c31d87df14e9f1e2ee37457a8ce02f1ee70b06bc29d203c663c09b191c077853a4070e87016f7c80fe02deec982fea2380493e9e6391e798e4710603b21c84cd17cbe3ec05f4f962798e4a0c88b31cf09338cff296ef47447ac9627dd5593e93df387917512c60be7916d84b7ff1ee45eacc17c5fe63601c0ee31fceec8a23dfb587e3c399c17c3833ffe44ce28001e37cbd7c7136adc959bece575f966f035cfdca97a593a7aef26579047ff9beea4b7de075d497bf7cf31d088255de5afa4608bcf77a6b7762a13a975364d6e84aa572aaf26ef5f97ce51f342f3da216703b44b9c43dd8555454babbdf44c34befef935256b06337e1942f7baf026d7ae5b90af4d487571d6801993f813554e7bc5e535f6f99cf3d668316907909d670fd8231a1d721f51715587af5ead9955961c7ae530ad20e61b8ed52173980a3122b6edf450fe0a8e4086d4aafa78c5e0fec2a0caa1c3b066f30ca4b812d06ace4e08132e4a002a6c4190573b43dcecbd3a922c905705126e726ca5ae1f00c5cc1fc23223d0563f37054d3278240512b620c23762006921a0b8488a090628c2044927cb0417c760c9d9a24694815cb5062051353ca4725562079eea3122b8ec498574cf1e9311d4b016193d216645e767e0259f759a1b7773bebbbf1b17c36beae3f5687d46146707bc6f45b39ce2c656515fec953c07c7dbe4ebed211e9309c8e0202ceb14806cd39a3f4f1b13d75980c4be995929eae6ce0305fb52d640af229751bdfea8b71e58bb1e82f0e53c606159f0e43cb6c388baf348b8d6fc77cadc0d9a8dcb5cfd451ed1295f24ea6a4a4a4a4b84bea285739c6790aa4be0aac5bc81250b00e512850a6c31dd3947fc0e2bd5f8e4b56ff24ff9091999147b84f5af44cf4c053679a51a27cc7b227bf5fa743478752a660bd7a94329bf9fa017ef52f70f53c43b3820559334a94990ab4a1c6098c72cf559ee245522957798f94abc09b22359592c27196721c25ca2cce543278ae027dbeaedb7494286f3365edf182d34fdf0fd8d3eb204c103d20790ab3d65ab799d77fc0de9a6aa8ef9e3ce538b3ee3a0a6c9dc0937be04d911378e3f9cd7594e3cc6ca689fa9df4bd057447f8bdd54375ddf5529ddfebb09087b37080be73d529eb70fbce55dc8d1cba26b0e5c2f56e8795d6e460eade7d19766d66077bceef674da7fbc1886886bebb3a7f5df575b7f3ccfadb5dbf9d5f577d9df4fbfdc904847e5fec44bf778a6fed9b3c4720e31c799b71927819c4e4363d5b2e608f0b3ca344f9bc9ace72750cc7f465f04dfe030472ddf465a9f3f7ad75f2368bb72613f51a6f98547ef747547bfd808c93d21863a4534a4a9974d25afbc5a65ec3c0d461c079ea281728e84d193b25ab6c1b1839324a628424a9ecce6e856225c1322a3e5809911e3ec77c4b29654c8e897987b5561a5aa6b2f90032697a7e2a2d154d1a6966502c2aa9edfca48931464943236d38bf2e43bb047390de7ec11c8af490de397026d86c314a601edc0c53d68aa0758ecbc15e8fb3f899be70bee6b44de73e9bf99a289a0ea7bb9c6d991881912d8ef454c943a3d186cca4db948eeb7285e901abf88adb9830aa2fd7c3712b475c0071aa5896b92ac0304fdfc10459b98acbb0721550061b2e69f3c52347c5573ca25a0c507116efa1e22c2ebf1c722822411a549c058cf375af09ccd7e4281083f3a640f91d98f1d753d2143a20928216d8f85a66ab2fce246a458527d6d868da292dd36d994016fa4d2d4bb9f9f811652932c706cf9baebcdfbeeafe887215602ee5ab5f754a6faaf66a43df9ec360de173ecdca601c06f47fbde752c0c0803c260a15ac8f1e92e7753e915a269b36259a53f4d4e3ce533a979e52da534a799ebaf7c520e4e78bc18726b658cc0ae1e9bdf70ad10ba81cc87d15ef8074ce9deebdf7769e5fceb3a1431c688ecb08dc49419eec3c4f305a4021cf6508ee514ff5d631937b2ea174ccbae752492e75ac730fcc55a84506034e21d90bd8492da25e72d5725c8a9eb680473d1348082ab88af07ce8339e4d4ef79ba19364803de73c1baeeb9c3ca53db83a4d6cd7790bf4bbeb9d5fcfa977ded7b25133709e4815fc1a3cb0c579e79e9fc01607be209168b4e79c02381ae940f9eb9d0467134ae5d0199509dc7975ef400dc8cfa7ebf5e321b94e5df7bace73ae7a9e9fbcebbaaeeb3cce4f9e73d7797438c30268a0e1ebf1eb0f1f8d7a68f2f49172b475f2a9910f3f4fa7f79ee7790bf4bd4eea58eb85ce3df7c01aae77e00c1d52a72e98fcbac96fe702dee490d40324662e37375a60940417b31b188f28195afed27d5d44f568f1229ddfd60b26effc012d7fe9fcf479eefa8a74ce7d8d62e17ad749940b2617ae5f9728173cbfde59d40c32b4b8cb7bb4fcc523ea012dee026f5c5c873e22891fcc5c6ed31a9857becb7773038b1344b1cd60401d547a20c6cce52fdf8de7c5ec46070ac5cc05163179903a2b62bde56b6d81a99b3e1c3aa4ce83074f651329bea84f1d44598bd309460bd849f3824927209473bcd2e1afeca4be9df4f42710096be00944f3e48733719d73ef3d367127ce4fa7dad42f28511ef6ebdd07d6c0f975aeebc0ec79fe21f327e764f7755dc511face6dfa640199af60eef11d5883e779eef1553a9865debb1763164be8c20081f3443add7b6ff49ccbf4f344ca15fc21f3d7397002c94e80b314ea72bc75d7e5b506ce13a86329a73e835ae6e2b163f4652d38c7c55b52a7947b2bf92b4f29d279cb17c467455cac16bfacaee5b258ce9970be39ee5ef73aaff703527f82730893dbcc667db1c31b5e4d36dd62c32578dd66def8327d16b06dac3ce52e5f4ecb0ab480ccaf8035a43cc555be0b48e7fc54bd937b9e075a40e62f58c3c92f386dd349ca1773027c3de5294a533865f2940ab79623709e48b349a5913c53c60304ff497ee79ebb2cc19de78994c3894487b8e06f488b9b3e2924691dcb710163dfe897c267805842cc413df5d9744869a66c36e997ac05012da014ea17f53c9f3c75126ef807751a26d0b119e4a3337941dde9c45170da93df7befbd5647cb728a9c3c88cf8adc1308cb323dbe73981d1c3b8c1dde6f8252e8fb21f326500ee500f3e8d1086871ea3340405605f69cf389d4b15c63f074024da12e70cb37937a3ae9907a4369f1ebf422a0059c4dfa756ba589d42195b4db24620375202a7f28094a387bd46792938ee51f348f349b746c4787b68e5d50053a919e529a89481a0ac1d23b1ccff33c10ccd7399726fb6d397b64a30de003893fbaadd6d276b52c0040ae6387170317ca054b62f4123a6590185d8cc934d65b6fa5392693775de7b17a2e23701775b87c1dd42fcee56739eab64a9a8d0af7729ecb75e1bc3b9d6ebdf5ba4d535f5529e5aa5beee22d3758408f20487324389528cd05b8813af68269e8af73de412d9b368f071687711e6ef80bcbdd7968711c1e7970f1cf7968b9cb6ddae6298e111c67e6eea0f77007bd3a88c347006f46701c7e03ba3e07bd87cb47f0cf417ff95ad5631c6706f3b52ad862008cbf78f597178f016f5ad5f17c7137ad0a5ea0478c03c01b10673977be38071d00e0cd0d001c00609c2fce637066308e33f3381b610430ce4010e6fb70e4971d88fdfbe1c0b83e9c59445dced621e73041e00972be023ba8438ef3950fd5403044601e4aa3391d3b798a7776e53a5df9fc32f8179c6e3357a0ca57befc037cea534505cfd5caa2565899b3da58d958f95cb9cd5c7d9eaf7c32afe22a608adbcc94cfe4f8537da9af7bdcd41db8f35c873994d621e77408b879a68cd2fac571d26509a6ceb9fcfa5e8ea643e5ad3ba77552ae23707c5973faa97ea7438efbba04cee1739c7cd221572fa551de94963ae4501ffdbad29479fda2ceb94ca2ce717ea5b73e59fbe27cb548677d71be6ec4f9aa511e8ca36a98d8f506297b5a0bdee830b30ce0661664f9c8c3e7ab8f563d40797dcbb02da41f8d820031a9439f65be55464176f09926465b8c75298d65d8e4fc7e4cd007904859328c83db205301ce3288170d67162ba4e12648dd06e1e900a4a8c227670925487082d904f20117459624497a810aa6df3827d0bdb54f0b49f07b80dbe767e26b2a0dd18e084da529ebbc9daabc33a5519e0bd0cf4d448dfc6d4e97608641f5797cc517f55c46e017268c07eac31eab566ee8bb87aa12587ae686bcd6d9edf2766d361c1943a0c962e218d143133288a01c1931c2250a2fd41041101143a4600b5b0bbc2dc8f8c286859204044584706504d199a66e4293c59dd1c6c51c91623ccae1f936ca39a26d321f8d7670f2f8a3d10e4c4e48c418639c9f0a88a6a3e8624b5a777cf5fe32cd3715c0d3d753991c19f6349fa7d34f664ae9f4894365379192b375d2eaddb04c1853065e75d878842666123aa2d319bff8735a1db1a676281db0199a8e4dc7f42508336101a9cfe3eb3aeaa33cbcee641a62f2f90d617957e095734dad388221a1e2080ec91430484d284e78d105120b7ec862073857404146115ca421c60f0a2c1a2968d064714d9e3d230741ac21c50c867e08426896c3ef3098a0608b275bc8008bda2cc3525002ef68071beb63582e67b9fc8ca218c4c00659202d1d8133451557b4a00a1aeca084892e38272a4a021c2b5a4002237888b400028d9803244c20460dcac841171f9022050130a3730c4d11809ee5218a882eac8d745a6a4bb2965e8ed28e72d5a957b0063acfc0713a994e2f7732791df8c1626867dec2f0d4bb90c2789c3e1c5fd64d9fa5818bb2a6c4a475175d17e3ed58a6f68bd3ed9c94eaf00dce213d95064433c22089153915091485a2bb78a28b28beddf359d3647177c0e0003282e8e0054d82708312cc322ec210f6f6383b22e0e2a70647d4d01941f75149117ae09ab83e2a591ae306934ed2faa86449682ef9ac3e2a59ca8952088e4ad480825d3e2a51030731560009e9ac9689d66be708ed31363bb84f850ee5910fd366470b2a803b7080ef47256a143d974590182e402c7688e182aad031f9ed4ad4b8a259cefaa8440d24be7e54a246cf67d810643e59fda22bb0564234705efd8a83df2bb1267678fde4b565d775de42fcce71fe661aec69fae9c3f93987689b373fd0c926702bfae9bd6f45301a0d01848f46434001422aba011314ca38ba01cd064d1050a7cbea3c3aac0e4b034f9735481fa2e333138f1d2d43e01d33d0e8e8b07ef261e041c3043ad696da7458dd4e6be91d1aa3c7d239e79c6ed3611938a6baab63acbfad7b7dec00526badb5c6a5cb755b90857609c2c22f308d8e5a1d8535b0053390969ebde7e1a6441a9a6930a12195451c1cc174ec50428439eb8d084284aa2333a4f81c6b6940f91c97bcfc53a9923fcbf81cd34294527e0330f2d3e104ea704eda7c4db7e9962103e7f0e76c3a2c8c350178f93dc0942ef958b323e6901e3387a680a9a48e0e27cd844da129243bcedb8412639c13a8c3391304eb700255a1ca537d826093086c0acd29f4d32bcc66078cc68bdb4f289634f13322a163466fd84c944921e20b96bd0e36fdde0c06d147253d203d013e2a01c3873fd5ae7e35e9667d9c15939e34a5599faa549f5428a99a948b96fca44af549bf66d25caa499446693589b37149dc118734974c9fecf9e9b0c3e971926765099c6b524df2e9d7f4599bacd993474e6f5510ae8e7b5aa60a7da8c3698dfcb4c99e7ecd68ab493c1dcee93cd487d2a80e0d733e913c2630df3b39b02681b70e674a0c3f0c4dafd33deea6e2a28b31ae2c3fe5285ff954be942f461a1e0566ce81d44f79ea93284e86850cb46740c328b0f0e8db65666831eac30638df7bef2da3eb1cafa4e74170f67a3c2f3e7f38778ee4bc3d7bbd63c50fe792a7773aecde894ce0ecac1896eb26050b36c35a812b26cec88aa201a689208c089c59b22a7d8521d5d5af66c160713543e7172b108a018c144243580c0d19112262a466029ce950fb0011e908e1949f9a1115d46e4e88906e3c984ce087116699719329c03419bdac33b014c2354a816793a443082cc1b504f8032788418307273f78d7c1c232e1bd3cdf2ea58c5f7c0cc84781089cab9252c7a257ef9b93b9259f29cba94a0860e9ec54a5ba6473ac4bd40aab0e33ab2ef5ab9598c0b977a8ce4c5a1ad569409c55a5dc3ba6bc81f88a77f60ecfeaf258185c14f8d0e2550367576d892a88c4099b2a174081b317c4c8112f42ed04459c07f159115a2d06ef8d36f37af29b325c342b3a3ae10520c039d68608d2b14d800a24b963028f0c22610832fff0de358f626e8a0886e80d5c3e4d199946c70e2a7ebe1d062654d25813c1160ba7975508e7583491fa863bb8bd291891073de21449df4ebd98b05d32ea50c107dc43b08ed6118600e799191a5b0f4c31ae298c7cbb87924746596b489d2613765c77099c5d352764aecc50d1b7c368661a8576f0079c2f0a9d23beface64628e367dfb094e603f41099cef1f0581d2cb92c2c9b7bb622e653965d14b592e168bb2288ba2006796ecc6970c7d862583635e3706527c670a4483a29114404d443e81330592350f4b66864787881013c59295cc142708c1f9fa60bd8893389d9bdc178f628cfac4a83a5b15bc21877a82162166d19e6449f483c8d2b7dba0647b1652bfa20267b984a846d4592e398a4e56b23370f63c6c23c24be2612772e4db63642cf6dcf33cc6555ae0ec55e0ec1e23d333adc389e45cca2a82b337f3d325c1988a83cc5bbf710bdc4e82109cbd34702865b49ee74d5f0a62021f1b7ed4925427408002cdcc10387b302238c312009b2981916fc72e5c0185126cc707305b1138944c749e71549ab488c4809882fc8925b4c7964b7c7b1e002ac4f7b27e82a211143a42df493f917c963f9289280be38bba07663984464af14d53f08dc50038798398cff30c311ffd2378c3cd4f2965fc9aba7c3abfaead0e8464e88d36d84c9d78b2e89d537ae52ad04fcf61e8670e4664edf9ca594b3d2c02675a80251cd64ed3ee616d92000fb38634f976574c0d7b2cf7564ac062b1d27019020a2d2f6859633504e8db5949c8d0fb44135939ea7845595ae08ca98f004528e38401e725e8910067fc981a3d2134e373b5c0656419c44b9a5d5996872d0dcc9394dbc1f9c690e78b95134491a3dde4a75d2265a7bac90e9b300bfc1252b3699af6eea2cf0620383af522d7237d6b28414b2c670b3bc42bea784531ad74d222e04cbf1e9135947eb57bde6ae572c5c4c8c8cccca024d8b71b9e353a0b5252eb2cc89f3d478ae2b7ea7009dc9e2967bb5f9490afb70ad2f97696cf89427b01b4c0f9c29800e79594a00e749080c9f4e9e191cd070db66f9fc0132c057084a5872c1a6030c9ea155626f0e049a027a2784810180110be74061a78c099c20ce119a6cc756b2166c966a542134eb0276792c0d98399024f1a73543a832682ac4f223fbdc6395f681c2292862d880267fa8e032023dc9cb45a9f93ba9521120c530467fa3e91c8143351f4ed2b97fd300b09ec853c18b284ad56c677c76a4b1049b284b33799991829ab65cdcab2699a59ebb06807b708e16c8b2612f1d5dec41114738aef8cbfe9d349f345002f70bef86f32a0de97906342eff6ed98156b30fc52d2d60baab70113e14ac00c8d2bacc90b002a70d846ac2819af5822a07dbb2b064700fc803d8cf1259d7a2fc1d5e71b9a102a8456e9a7e8db63649a26bd355b131c6225bef3355ff3058022a0ff4ca2cba99eec69147e80c0d9ab4138378fd4699f9e1e1e267e787a7a7e7a7c8048003484aed24829250aed0420024f100a3cc20f9e09a70cf30c0db67dfbca05055ef5abbd5d982584f3cc0ccd6caa4484a2845011ea417c763dc6b4941cc7711cc7494981dc340aedaa17e04c5b9ec099d282e87282f8f46914801a8576500767dc42023c654a5dc189a78f0d9a40d3e767067d7b370023b89b76eba48cfbd63730b7d24f1a2d4f9f7acb41039c6d9067877c304a42e7db2f0ee2b3fa794d6780fb46a3d1809821e142e2474aefca992370be66dca4cf2c560a4cb0f418eae8d09c7cb74ea3d05ed3853423851a900067499b4d04080e73c618638c52c6e9d52b0884b68c00e70825d208453a5919f9d064ad94dacc3a25edc3e1064887ede4caa4ebc99b139d9cc598962670963a4b9fbdef20bebd958c8e903d1e6b0498e65f4b3a50173b80a3d1113b7149343222c9cb1585c9486983427b4c0ecef7852286fa1589708d55e4472152bfe20b45d8fa65d3310801ea982925861014755d0c427e6627bd6e62fbf831f860eb5864a253f4f1533108f9e958eb049576b28a25a210824c167d860e1a2c98d18c28702002ea4dda1a2a1032a39f4c16b3ae224089a423b3ce62f18310b38ef3748461c60766ddf56000e5895977bd8864872b9a9855fac57c114f0760c10e7698d12fe68bee16a3a763ab550096c0392669cf9e0a71464727835934d650d54393911039dfb567b231ab558738dfc7a11d0ad1c92670fc485d2c21381a8500cae75514e2a18b1e6324907ca263364fc7f264e2a54b9f3d1db343f014ec0a677c66088afc30c41b8500e8b30c8ce6a58e8f73f6fda5a629c51cb26df3755fca6e9df98a2efdc61adb3cedf39108dd05daabd3be3fcf9359daf7d7f2bc3fb6775dd7755dcd3f56363352aebbf7defc63c5c5d8f909753dc618633cf94549153570eea321232400e12c87961c69590c02110e863c61021fb2f86216cb30d2c58e114a5cf1248c5996495ec6d8349942e7d2bbd6495a26a12c894b1a045226a9902fe9a7938a8a8b0b080a4000279cf0b969349fe5d0cba6c9215982fc8670efb42ce5d24320706e9d3e7dadf3c53645bf3f5aeec42c7d7222573ffad9d0210e1dde504bc49eb3e5a3cb185b4e2f210a2ca7aca293fe2f65a2c0511aa06354d801c38e29f34eb1430fbc37a4a1f387fd6cf8804cd9bd76de6779057d9c7005962a47e01c06499de9324a389cf14edb958707bd1763162b4687d944f7648d26647928e951865e155846d9612a05eebc7569c5cfa75c48b11c67967a800d67f11e379c750394600f1b2bb761897c44ad2017703d45b5e22ac718a752296f217eca71dea6a4f8ca8a0ace4b1595a7a8dc66e28f76684aa5be4fc211b23f22129e27cf4d5726a52f149d44920406d2e8071e263b3821f2d173c0e42308a45f7a0c832841104c9c3e1a055144103b4ba827b5c9e9c81a01510382880342e802210253ca472320764e42968c8408e1a57b9d173f2321647842bc403579e9de54a283b1819025498c7cbe443e1a09f9f9ecbd91909eef3e1a09f1618ac07bce2808a28f46412479e971842efa8d1b481b59f42a8a39026a44f53e1a0df1c34bef6cf7d14808ce4808345eae7c3412c2f6d23b939110472d174e1c781e3a181960e9d1730918ede43cf7d18888a18f4644007d74fbd18888249ee5a3111139df804e3681551f8d840892f1a95d5773c6cc09baab89f0f4e4e8a86081775a366f4bb126526ff1b95125990e512b5039e78c3748fa03c443959672d80053a73add4b5289e65328d6dca66c3ae9179d3ed8a713aad321dde9900798ea7c431141ac699d2993ddb5f7722e1aa5d11e22ce4ed9bce9dc564c80a353aaf3d17053afca9f2d43e02c956a8d712551edb6656d75aa4379e80f1532723bf2947a54fa4c89d0214a446b4fddd656ea589e4e6ed427143a6f2dc8ef08e5b3cc71d2b1a8c40c1e5e004f3d4bda53181138cfc8cac0d9f5140535a4924ec71a6ca1d5de390dc6eed941210ddc394a4b1dabf488a58c941876843a8cff7af9b33567af78628cf107dac718638c31cece2e57ec24a531d1a78b312779a21d06a88aa8444d3576492c95a281000000000314002020100a064442c1703c20d3335df80114000b8aa64e78549809a4248831858c2180103040000040000004b37103ee0050510152ab06c334aa23d61a64546111202742d4ca06e3cfaac7a90344a8f04212d80820e20f4ee00126ae7d959e5b2c0de2c4a99fcfc2af6d2bc199a74a112ceba66362a4c6692c2b464700285e1b5d2c5caa73e1fc2b447c31b8025c30e11d78ce88e77b68876188c5100625c7b37dc2f8ef21c7b3d7efe63ce4144600e2c0b128f45960a10407781735813125f7025d69533fd841f2141cdcf403707a14ecaa26f3673b7ca4a6f1738fdce599ff8b605585e5d5bbf431e98375945d3a542a263c214840501aa76284d45218498c0bbc25d9db88a4c4e42e7370c88cb609ab9e6425353864c51d250e9f711dd3909008baae98d7747ad8a04073f0770f6d39c05b8359b9e6c009b0808199b5a985fe988c654613e662fab8053de07659379d31e6c20a8f5995c9da06e6ce0449decb1e5cb54d17c5c6a5be6da08cd6f42a841a772ac762bd011b71b5f2c0603d4bf2489691e9613efe665c634c2afc9c7f3e1fbdff9471c6d2947208ec35e9bf1823b90e219e0dd02c9a9d4832958a43d9be00395ef5fd04966a95bf49ea63fad357b79f70bf321723e288f375997f529275131e00e5641c4a8a9de59b9c1a758231767b99146eae5daa0980e58b3e391cb6800a733d64413222feee04385e70245bae7cf54816d1faa02de8dd4d5896f9403a9f37b3dfcaa95402b7035ee707782a509db6e11c7ee08d83174bb352bab9a11683b6bbb8aebe31e80aab5367a98126c254ae02a270cf934ca401ec686f36048802fdae075a3ccf348506364c44b653ff0f5f4546796b62006f312f2d7ee830e8721bea310344b6652d41ca221d55ea873cdfcacb83c81d3d064d6c4ddb0101414105aacb80321737ed9033c41d1f1fe8cf78cd50e3c0ec886d0d7861c992a081d7e6e44dfad88d61f5c350675e09d56695a11ba3730ee49567a11fc720c6af0273dd7f3d67cea5397c254e1dc4eeb130906ee318b18320f86497313056909acec7cbec1a65d69c9e5e184db9108108281efa1b2d7a2d2ee12b9e56ceaf387a72b0d45d2df7a8b08c01f9cb92f5668101ca2852ba657ad9c2adad6e93601f029592caa243d8823776602c36c391773654c78148246ccd12f73f9bda6a597cf2780602082520f7b5b7ac401aa68714b0c69862d6f16fd67a92610eee9520c9829aa9f69e94ec0c1563c849e6d68d42530a068e62fb8a6326406183055f5dded58f34f077e81171fad04315da01065b5c7ce11ae9988b11d760593cef453239f68651b203ff84ce05062cee38463a0438ce4b93c6752aba5b9c0c023e42cce57014ced8c187d6d670de8edde4a00ae52ca037d4a8edb868a01b26bcc6fcd7c8306db2e9036e938ce735c7327bb934c1ce4b8595c441ede18bf79cb7881dcb074ff53b8319538201accefed1ab546aa3073084d3c7a227da1a396297438cc3365cc338e3bf5213699c109569d419ff32fc462ea1c311fd4bd645d45e4a5f3973e447f242c0767439b8c4684132471bd6cd64cb5696d4e590b356d8e2a08c6449362b68d4441fdf3da16c093cfc225f724b13d4158d570980de17060bbf7cad3f8c67437b47ccc0e72802ccaf54326c048a442092f5628b768933c6d18605b1f6d273e112ff9a9c73be1de17e188fe293965a0a245568b9a01b4b76c0c0fa5427591ab9526e5dc1d62f2cf9c0ca205359f1b1768092db1eb9d3588c76d1080b46064721661790c5d09428a0eca93b977b7b145fe4889eaf4031117ac0b453f97a8114a5da362f1025fb04d1cd3503c491d1c6be2baa44617d60c729dee4cfed16f131d669f5dcf5bbc4d00c652961e3db9a8ceba2b399869fd52f159ae6a4a1047338cc02b153feb0904d14a73571ac440580d03097c2702982a04028420bc91037b26891d1084cb7539653767994e457bcae6e0ea63a00c65acc52628557b223384a6c4b2034c3bb17878f65e0d187df755e2b6460ce0ccc2e00cccecd938911a8516e994e8c3b0920bb24c7e2ffca4c6075ffc904db334e92f3482902010bbd6201fd48503c558ac4bb12d0e9d2538534124655ecb5b6e8a72c7df1bd7f87fbe98873035415235cc78805fb255c6d28fbca8f0f5b40080f1e9a127c855b34f9aa6fc46b2a6e697988bdf0ce7428d7a6bb9966df413cce8facea4a444000f7696c23e694213f082544587069820387238f2c894804beb80b7e908713bd85bdcd89aa5e91202e167b8eb94adc07c1eea8910e16051ca767e823c44eedf40eabafab2cf84b137ccf5af3538a3958ecd5463e4ee1417ee285ff7175cdb4532cc83625c734bffd7bb3be61e3f285efab380eaac44d0f49a331d0641bcd72bb3e87dc444717de83c2109a5af02c712bf80abc1a2086ad3418a9dd0979098163102caf714fadf2711b271cab8f375368715fcedc1a9d079934f2007d2fa51de76e577ee5b8cf05a8be1f325856dd0dd339d471e32f7472eec9cd84eb2d52ccde5f7cc7b2e033bec4a3ae5c96dde8cee2eef8090ed2e24b3f71e45d2908e3a1056d92d6329bb354cca141eb09c1796a336246b7c0e73fb1f29328267246dd18b2c5f75011d25e5ed878d847b7b3305cc593cdf880c6fb49dc17013c1b36890e9c0d94ba0e80d1c2a92ea9f6603bac5f690ca49eb9e58473c0e76f8d06ca4d8d25b311e3b6ff5ab519a796058ee7571795f7d8e1a54130fb45b72b3cd18bc1562b56d2814ad3af199a129a4e4dd90a337c3f341ad1041f60220acc8c89e17ca2863d2f6c39c4183883a8335881b0308b09fdab82fcf72190173b211eeeb19091f2c45c5a6ac3c68e7593ebf2b54dffd25c4d30a38d31466eb081417f577e31d4586e7f51c5d09a5c76d9c7516b95a077ea4642e113a68935ee7e033dd886609219db905d7ac9cecaef18260ad6acb097e18c89833c4c1250d6262bd868240ee9187afbefc3d0040210c233181857fd9095989b0405472839ab7b8cc19c55615a7f43167b1f8c4ec31957964f958ba4e1a1eb520d891e1875f408f45e551b148a3d580ab017be918a9d6d17250de757c37613ca89d487aa5d1b9b766d6b15e776caae3fd9f997a67532ef9fa13db9782450388d4f83d609c72f2d30c4ed8da171dd920b66b44a1998c7e2d2970c2e3706e447e1dfd20b2017ae68dfa0e55a52f8e857322258e918cc08df4465f61c36e439bfb974f9ba97018a9f10aa0b28475524b6f23e4a293579df6cb49294863ee02f480aca2e94c19caec88c582db19d02f1530bb042659a4c55094496527cee65650e01b35838aab7f9661220c06ca8eb47c7b442e53cc74b79ebbdcecc23a39128f46485365d984bb5b5c3787cf5f850be7255aff7eeeac9f8f486618ea1161394aa4cc05d65f4203c0fc4a96f69e29270a612ee863c4cb5e9311e975433fe6323c87001d15d960caf02f091a49f3e92ae46ea07761e501acf07abd378431fcbb1d59a1557ed3a8d5bba8b12bc973a466871a4f276b889577f64198d924c48db0d8cc9228727cfbccd64067035c66b98af946cf6f70157bbca51038b0b3a1bac9a08cc4e28e791420ecdec0c1f9eecb1f6d838addc70a46c50c9d776bcab2003254338e31cc43a71ff4f0ef3ab47c64560829bff6561ca4ba26764eb1134ae41aa8cae0d43098522c22d8aa26daa3de11546bce548cece909984ae6091cbea58a942207a6c1115093e023e15f9a7b751844c08c63ea5c156235161b9981b3f269864441002772b2c0aee031803484531f8730ab97a9e0208e4464b7df5a719a8a494da4797af23092b30aad71b47b0113ec2d5e259cc66bcd3df2d0478db57d4325c85aace7bb6c7eec74a2f3c0813efcc425e04460b2f18a20e44d2f3512b2159c750364463763335648ffd7151a2cdbcb203ac46a7b3037fdbe2dc6d47cf62a83fc0fa83eb0804d0a05f2e15467ff1a7d509004b78825e573106ef4bfb3af903b1965bb0f1f596898d22217e2465893ac3be1c1bcdae629fcdf952750368a32dcdeabda2675a3f4c4a8502464b33514cffe2ac59ddc1e97cada82f4ee2da428b51390916be4ea29aceafc2940626e9b7e4955a0deec73ed1db44e36d4fbce1fc4b69c99355e79a9a18f9e8f058db6498f84193e9617dfb1f552b2e78c75256000eb1c4c678e3d8848eb658483a652eb1c76a0f73554ba2d6ac637023d56b3dfadae89204bfb5b52945b5d4571e0c08e06db55700cbe9e8f2e8d175d8e915c821e56d2252411583cc4830491e6955733804abb6514739529b653dc673916416f2d4c468d31831e1236b78d53c5c69fa2c52809784892984983ef5e864fb0f3c09359a8380d80bb7b881efe345a42b6a0896cc84c1ce435ab9da8aea5c67eb78bbd3fb19884c10011cfe723fa460b342c13e9a588a43d7fb4858cb45be62253bb128d773bc1da5a379bc701258f54998781b3aec931e989b0dc7ad654f0e65c179d560928a845f8678134d7b5180c90a2a977bf49e7bd5f4380bfe294d177ccc8bc1c737bb2a81571b9da00fb5f239f4738b9cf21cd7df2664a89c17e933905784afe36d9d2f118266dd3594ecd272917a1850fab9f98bdaca79a58889a4907dd26f854b036bbb6e9e390bd091778b398a46de5e56cf23c1f432c0c7302fb9f8350b1afe567fc755ac097649b63695be4692298252f80b5066ea769c4b4dc1b1bf44527fca7181206b89a64239fc1ec9d61d3d9f921c1e63c8e5c14d77ead88d5e692d8403edb2794c836017e9cbda4b58678c7462451392072e63adeb2f0f62ac3c5d7f8ec695299871e1eabb6157d5d2c784260332d2e43a25333a309ef325e83e58ca0b887dd38e7c99056f20afb85a88d2a3c44c225fe14ed11f3984caf237a2b6438131715e4605454345426984b1a973da1e067c807fcb0289715af2c2216d9b9e954017a5c44318a518e9fa1ab14ae7eb4b850ecf55ed0bfed1ad3011222340e6335c22459e1c275bc3d7ba9d481b23920cc854812872c176b3c4e802884c8787ac493eeac6b13ac65770cf3b3dce24e20bbc1cc9465daaf5662a61420f5ceb9aa552bad3f5c5ecfa1b90f1ae163a043532f09577a1b9dfa26301a225382b0fdf62ba372c30fd94396e072b0d8658e66859cb1c11ef884a6ebdbc8b252e9b2d8a93582b52e5c3a0cc42cfb1a27f3971d257750b955793f3fb1dc4183fd789b8b98f2b3db5806dc3738cfec46e1a60a7d046aab4ee6d18089213a3ac84b7b38073d490d44e9e50bb16da1db4801e9f86de6700eecee467a40e69d5977ab238a4c5e02c643d5ef99821d3059e4fef732e78ff704f0b78ac2ee9b8e91e7d01c3e7278f0788366b82e479cab3444c365053937605e15a1a3a8fe424ce16466d1de658630229131f91ffc2418691c636071ac3be53bc5ed47a26578b313c5c45b9e0ca4a2ed4069dc0b6791041cd9e33ad45cfb400dcb8a8daaa32952a7eb9781b75f8d5f3b7b23274ffc1b040d77f469aadcd4a3122ab14554e2f97cee01aa3f057e23d65b92a96135e9a86e2430e8d25236de6b62cd50530d472c983735ed2423bafa68b5e93ade1e940fe34e149c9a3163201f5203a696192a9dd5c02864e8e446099c1f80a77020c29eb971be91c6ead19cb56c4b820f8ddb653418531df01d473b52e81141600e820702fe04e775daa18eed528e96aa7ce3ccff2c8869d33d9a6d5e946bfb90a1054bc738e247a987b74e6edde584a314e4fd3e53a8b781c1b530f70c954b668647c45dca929783dde731169104f2b27652d050a09ece1c355bff97d541a14492bb318c4498d0a8398e2dcf0590dff460b9dd1c99952bcabbab0b6f472f045bbf578b599552af5d0c981a72f5d0eb76c640ae5f1f6b9920377c0705d66e629dbc95deb6fcecc10df296f8c0bf807ed6370c403dc18bcb9bc7def68c02d7b9bd45ce79cd250b5a52c782a58238dd8b6ebc502bf6fe30cad61e0c53f8a9625ff34dab8def1f4f73e0f4db2affdb8e201901df9201a174a9ec27282c6702ed58477d88036d0b13dc4f482e7708f7e1ddc47527ee1757de3966291e5fde9d8e5600ffc825d8b40e9e6a8873b4cb3a24214be02edf12dc2b5a7fd8f7a096f99ac2e75b09604fb4c79714efaa28e2c4755883caaa182353154626f11528ddddcf1e948e643a754c8a7b24ef3fa3c95497e9fe4130009c3f50e8214a554656647747b93855879e7472d4c1b220af5d4b1babea26b2db3819f7fa5fe5843bb6796f75b3b854d5021e737b5da6a9125908836a8cf9e48987cb502d47230cf9385ca6f2a53eb13f8081024c605a0482c7f324bd9842ebbfd58d2d1c3595e393caa1673dc72a801392a43751f8494c3b5f0608bc61e209afb6c2d5430cbf37e0558c2789ed2b5daa481f02ea09403facaab28255dc5177bde700d5b061aa18e5cdb3db53938742b531a933f187b366cc0779b100d8a88b31b92b48bacf02c33fef02af021829eccca2512b8a4eee502943a6c9f8f1e2bd3ce0c22d24b3b1a03e957072c109e8f4fae7ae602e1408454f159256e0ffca1734d3c381c01c149742b59505f221234ee667d0d7032f8612370e02a019ba30e7c05666425e1053dab3a442dbbef54797f44855968db2cfec550bb78f656ec342f0965f04f43a889457424d50c3209fbc491851837a8070648b4999c7e7b47677d10c37ed2c5a368fe2fea7deb7aebe712b3b3a7b2eb4ce23cba1d28c9e5e0a35892bd05455bb63e0cd0ac3863dc3625bb944460ddcf6cff6312af02ba738e9d234ee32256ed904b3372dd1be6814cc9880cbe24bb06ae6f3923f86097688557e8b8ec44f371275abea94b8a24fc353f243a402ad6219f29784f9b5e73063e441579143941fb28940cdf34df8b65f656a1b5d5a4b19350b1685b9897595f6a44116e617beb2fb8ed51af594508bdda9bc5c0b396073460124bfc01837ec7d3f992439b8202caf4741ec692fb1b48361300b8d8878b49effeee0e5841162ac3978c71af18ec29690751da2c81ac0c359e28c6c47101cbe743d95fd735e332e9cebb849c5f0fca6c8a5b2febc401e4972f23ae3bcc94b489e562f7d7da62711d240c80d0594bdb77c13570386e329c03731c4c633f9a7a5758dfe49350b3b4cb5a930250f49700d470a36db27a0900f745b126c73c445e8bb82eb88dfd89f4ca959718138096c04494304601d28807fbc47c9930d6bd0143a541f1161312a8c70338272dc20523011bbc6df74d3f9448f0134fca516ebc466076322c3c48ad9f1763f0a729e52f1e9a4dcf02a6e0da28de962193168bb5a2da89d9daebb4fc6f2bd590008b34685f2b79c1fa2112680f6079b92c0d81bda8f136d4d68f0346cf594c4fa916e2077cd63c6b43ae37d3fc7715028340896535ec42ffed9c6e7ee02765e6f48ec3a55250564df0194cb089e6cc49ffa38735618bc5d219cc07be041b3493d95f0af0a8f860cc3360538861a5f04ba46ea1cacb8c14f5c9af6036c4458bf58a6701f3b59e04911996b81e49f71d37a27b8cf00316ff9a47458cb2bc45e133871a15aa91a0e61cd3214d650ef4c39614f48d72d2e479f08b3ceb4756920d54103490b09b57650c680db320009961528ac23b9043da40bb283c2d110bda4f9c0e85abcf6abae02e1872036616055d511273b3710174af3bafae5144787c642583b506c1f5c171484e02cdd2e23779274e770ae4cace91ec3f0468cde38676ce1d8f94a1982bedb5f9afd02415bbf0efa5f1daae01ed8b4436de4a5a2479f7a7c63d171b9075bcfa241877882383879d07d58cafdae8f3193e4b45ce0e7dcd098f0cb46950ca25d6d7b959a312b66e1010e895d1e43d7380951a96dc866aff51f03958ede9795a42d3b672491c91107c6bf38b65301913911042be013c89018b498d2b8008b53a81b1dab98ce75cde7ba199072defe5fbf8dc0035524d6121888cb54d8ac4aeb9fbc7a23a45da08fe1870cf284d60382cbc3f85ed8d3cd4bc5e8da013611fa3b06624eea6e9a4b472e012b6f5f7e045b0e4319ab1d3ba17d497bf1111622c49a5e6e1a511b0604b83981d1efca746df8df15a39d67f32fda5d0b9f17a4f4a933d793ae81f42c2137c7893831b02f3993e2f54c94db7ec75842606a9aa289e1dacc8809dbe40b4379ccc5109f895251fdaa7f8e64baba8265dcf9090710ef063d6883024f8e8c597af5dd2ad58dbef63c84dfdb54aabacf77f52129b90c98a6be76b7bb76607c18f38c29952c9e5b6ae2e6f3b59c7265103ad299ef7d280ab3b116db06078bfa3b4fc83088c155113f220abd8278ab24a0b6a412809d48d9d80bcea6c1f4e16a66f98b6ff0cf056d99bd63f66fbb41e524e4f92e22dbf96cc17185333027c728046c5748f40da6a6e64c8fdb8df1234ce8658c28cd6e2cc0a5ba4bbd836e292a8eff93e834d79e1b9855b3d764f292f7c54ee80f4e3eabe06359eda7370398e5155d0050c71ecf27049aa36715b30c1b7a43d0175c7b6421724b2b083435e189a3127e92b5882b71339a7ef047947e287b6c3058083365ab9f0620a053b77604051f825f80669b3baa2b3218ba59208702583bea93f18a790287ddca2e7fbe82d086281700abd6914e4df5796f38bbd5a1216fb789dd94a55e9412280583ced63f477f4f7709ce4019e9dad6868aceb02a1601459e93f656b15178756cda9d782a6eeb379fdcbbd4b31eb1314c839a051a6f8179acad58feb33c3488a60da715b7263479f46a14254616cc2732ee28f926e4c5f561928d9817e49f834a71577d21601b0e2263178ff4b067c1df21ceeb28d60bb24ca61f9defb9081000c8acafbd0ecc7300e32dbf7e8c52662639e486f3c4854c04ece8cb4a0ef26fb97b8c53215de44f63f8360e61ec23450fb099870d098bf9bf177d225aa82b42182adabb53d2f880c9b03a21498c56c2af0ecc964d3468fc5f14d4356793c3c44dd43a83429e58ea51e5b62674b4486525a0e2cddef739483e5159c9220efa9b0749a13892105d895ae709c026727a828b0eaee1f6b66f182908024270406000c7bb9840c0396e1852576418cbbe3e40161d29a541804301b29ff444a858d9c3168c9d320629e166c20b5ad50365c45200f03103ac12d62f884817084c2995f136d6bdba131417aab20e4a68ae8314ae72b61108d89a3e821f14c15941cbbcd939c7a53646c7bfaab4ad6cefcfe8da4efefffec02b52c2385cad634f8b11608cdca510c2e47d737fa785ee927cf8f07750dd325219fb4411002fb082e8760bd4879489a3a2d8135fb7686ab0b8a96a633d29d7951a6015810123a82115f061c0010e504e46f99435b809a55534582aa019773519dda85db9843151f9bce7631b94662e433d726bbae06c6e1f60bb7f3c436a3fa43811a5da0a925ffca6487ce748d4402a8b42aedab7877f40d5fd45cc00abb18db97ea372acd307545cca183ecbe7a9297e765c29bc119749a0499f9c3a5dade010dbc06e3b4892ec8ffa2761be6c8074fb804da63de3f9e9914feebfbb06ba629c87a193a6df4beda7097d23f379f5be6dade792b79e61a5f4fc5004df95c07c2cdca3fed2f7f26bad6dec8051fa5e499aa69947fcb02e90f23b0ebbeeed329713a3dffd4725e7b540375b031c2f2839d05bde442a004ed7cac8d93d89c160f2035c3d06af0567b2158e5fa0df20b4ea5b1ec196443ac6ecf852512f8665c311009c3f428ba520a2b16a18bf5a1076f49bc8b3604b9e7debee2b1697936b0ae0142824f8475c8e99b062c9ef3e1d6351b738444966b4840f8fe78c03f94442e4f24494ce0eb6d8c49c2f56b53d4ac82c734a2d5eb3a325216feef5b5c9f4c44b0d168b32f0d691d8a82bb2d98f5313df9619ecad8238eedfe7aa206256fa36b952cdaaed548bece4c0a7d6fff029c5b165c4074d0486aa739336b6583cd0ba62c20917e19ef7d118936195bca71bd37c32ca12ec861a4626a31e8bf86c87a40857697f4778ef4855dec802f44414f9019ffbbdc18733d4999f0ae561f26f5debcaa14ac5211b5c661f1f233c29aae603e0df3862fc5af0cd30991593f4ec39416f4b09083ca0745c07064c9acb924cb716bcbdd31aeb1714d1839b42c37693f830f09bb23e0d415ac2fd796dacaa276b4272bd7cd52c15de93563046c0b02a39e982d03d74065d17de7f2dfa7bee4d6da88b032ae958369a12595bcbc8a5aa3ddb93de9209f1bb60dc0bdbddaab98ea6610d6c05c891ad5582e9b94dcdb3552f031b0ae69fc48c4c574715ffe6e890a8d623e1222d45b2ac03240f98fdde005e25a38f43c99fe21140facfe2ba817b42777eeb51295c1a8eec5dc16d070f61b62b58ca2a4904152deb76e9937465d596232a2948a9ee36b919571125e4520a16274e11c5f2d5947593eb52804c3b5c801d6c698b85beb33f24e0f1c5c201723d0c7415c8c0f3c98a0d89711f089e6c6377dd7e3f90bc101078a46565d46d1e394cafae32ad1b20275a44aa0e7225ef7574f0f2ae4004eb5d89217b7ec7b17414febf6e4748ae328324d77a5488973592e538fa62067d8586df9d487dedbfc781ac65ff5952134cd730946d7183901a26bf21a828be2384e2b0c1dc8565b6a30a1cec0abda730c0a3c26bbc037560c786772d7bbf17941e15e67fb31fa9290be891f8677f6411bd6b224bd57061263ef083856c9cbc1d310ca43458daf4ed2a85d807ac4003e55ed4f49d6d0136c985132e8da9a099398bd51c860db1b9d06357c16f577efa798f00426d81bbabeef053988721568a9eaa95afb31acad7a8de06c5f10d90697ee1e364293639243447c669f9be4f4b2a83be33b1620ad1a551e34c7baf85b0cff3107c77b6a8d6239171dfa8fce0a878bd139a1419d5705f7160b18733bd8c49a015e827dbb531140fcaa12a94cca75009693007edfb9d1c2b152449c0dc8529bca6421e58b2e31e7064453cdd7de8e7d959c701406c0cd03f8a9dccc21e5e5e39f5d9c06ad90240a44b2d9ff30749c829c20d9cd8d20999333fe2cb4620f8664a4c5fe1007df659d3787752778103dbe45e812fc2939266a8f70a63fbe188307ec79b2ac9fe8373054a4098229249597cda0cd5f31044fe176d25b575a1948990ff6c21b6204f520fd7d504083c39ddc319f60a6d40c09eb18257418271107998925120e988b395a036f42f8b7e729661b8cfdf0fff811903cdfe118aa73af7a2a219c1d1ec131c041ceefd93dc82be0eb230311cc70032e71bdaebb5375cb463b35c1f0bf29e72aadbb829223d50e103c07392c1d10d3c607fbd0db7e95472abc8e03a5dc9956861ca3237c3dd75fa3ecc644a6865652f63224915fbee0e08aa8eb09dabe0eb3cdc5768127fd2f2a15924e7767bd5f7b2aa822a6f59bbb07547fe728fe9e94cbce232b18685e1789df02fcd1d7107be82f6f5e7f12ef17a74e058f1f00aed4e3cb7ec68354ea579200859831b8dbd269a56246804cf9d6fecbb6b611e8660bb2d58331abe646fa4b10fa7b89f1dc5c5951c77f9a7b4a058e146e63e29f47a63d92f69da1c773ed518f297cf6e95fd000ff73481e74e5fd3dc55562beff884cff13705ccb825b77cf748c6958b3e75d00c3336ab4dacedd0244372e50c0c454d38a94f9491b615b89205632f78ef76fe212aed33ba4c692aed1f980fc57b2ef7fca402e1cc0ef75a49cd9df92c3af916865d31dd7051696c94f7292293ca65ca73f9a6a1f14e5664f8e9f44e829c879709880f74f268f19d9276e36fac9a2d823aca9ca62d259704cac128172856fb23886681fb460812c457e388596020114e66aee282f0dbcc6d25fbdc6838253ee8ca3cb54b9d36628f3d41eb6af9629f5ed27dcb513b2d22dc0b52b00c254c3d39c19aedb5b14586bbc54ea825b035c5923069cbf059aae93563779e4bed2ba0ddce3a2452b075cfd99b441ffaf83f46b7841369d99439c711aec3efd64a0181b30fb88486982104b13846525fc87132cd201f4e4948f3e5f86c2982f0312d1ed7c99b71c12af5da2be0bd614f347d1f28662c20e5948388bed461378ad1602a88fca31469175bea8b608dfa3b31b6110c6576188c8751f9600f72073f8c40716390bc14d0be344b8ac1971b7e1f698155a21e48afcf5f817608e74143471987a4a3b3a9f45cb59545214e2bcfcc56a8fc89ba02f8b8c009beb8a04ba392340c8d1734db982fef3b3f887c3b85fb85b848c33e16127fbf015a897225198bd01b744d59a9598837f90e0447f103e1b83f62b7a2c95fa9a7379fc29ff94c2aca436cb796cc038b490aedadbd6e4a7a003e817819708cb378e7913b1533f5744ab22796a6f95c6864a49dc12c260dc1956014335f51ea84024296d80217ad083789170877e04e2071b12ff2c5e13605041acfba96253c463e6b427df16eda6fe2bcb161af2ed99c72909e6437153a4a633304583f10f9609e62669a7f2c8f84abf164f1f97234b526299453dccd1930f6e532ab3f636ec48e1d75163ed1b16a89ff83a8e112fe9c7e64019cc8279aaeb0cc496558b1cb95d5b4b74c5b767338cc58c76e537c7fb607be9d27d73086290843ed4751caf00162a08c342c327fabc44448cf7a81e20ed6b08292baceed0d728165c6a299e01caba5ed54a3963a49990a0e0950d0fafac2e10a4085615dc07108220c75eb60cf001fc00285ed75d804415f50f20439f0c2dfdd6dcecdea95d0a8a8618d802562f616a48e82f761ef0e96a7042cace0f08fdc6f9a27c4ac58d7678fa537ea60060839a6af0c45e57c1c41339a89e19f63ab52b15eea97d4a7a15f2edd37001bf8feff3449b662849d4441897882855b2764734483196990d9ef5e3ef7589e6a94e00a8811871d90b1b784d5bca59663cd0477486476b8ead193501c5062b761c4bb57079d16756bc8866ac1ae1b6c1c358d885bb80f3aa84672eb43a68aec5e1b003ed7925cd2d201cf3acc1501ac099245df859d3de19ece73de2bf6c38e09e4fdf6aec516134919012c575e88a3cb5cd1f47d59d0b33802b2f4769de57dc5424a8120807ac76cf625759dc0a83485994724bb81c1e4f0d92043cc4fd803752975cbf14cd70133e08996741d5757b3ba99f9bed4d77ea58e91da5c28aed608c60358024c465a9ad04046e27199c22e402494ee13658873d350fb23956422d5d812f04dcd98f3e9b8d2bc4c69cdf2112ca9cdcc95d5eac7bcb240c975d8a5a650fc1b0480314b5471495429b68728fa1bd71fa2ab9ddc65c53ee81a34914952878167eaed24f455c81730d4f41ebef9b3614f19b160c9b1bfb95ab6bb00cf461d786ac24e31153d4da49715d814e66eab10035ad257701704314b305f745ac4725a086efca6cbc14c08d25de4084228109ce68e402d5c9a896a708b98839e5a0d12561c1e1603e068f54deadbd6082d179437a22824f458ed212a5ca93714d21a763b537cce97130eff27b89174d9ef18b9284c795a9cb8b33d0840cbfcd92cd34a370ba967089acda6f2b2656e3a6dd4e8ef91ce8f62fdaa58a108f62d7abf4a7aee4b7f04b6f5d6ba9da347ec125066f19d20d3b42dc11e1bf549bc5ef6b363bcc573e91c4fd0582b0a181b7e4dd4fde85d716765592a66deb055d4a8e05608f36e67a1f1acf64e2034dc07a9f7c0a146c0768c421d47d1ed69a3210929e7ec61b990d770bda57af71b1ae98f8dcebdabe235096476014263d05b5aa113069e784097b4d5031c828f39840fc38f0d7a69b51109e0f8c441c7e33ac675aabd62c7e23a662cf55c15bec234356ef6bdaf64a854e75393e97b08fd6ad8f9ba57f79282396a229a1ec68fa906f0b5a6f49c182a94f081d02392cccc1ec755a4d103342caff80fa1898ec62a0171c0790e84ef5f39af825a0db528bdf97d4b2540a5eab0cc9c67002830db4f8c18456d1d79823a56a93f988b9ee943eb3941c889551e63888f4c264a9af31194f72e579b4e66b7cce12f0137b81be33e5b16bafcab0d1f635bda31e4867192aec1dccf6f17dbc2dcf282054e145cfeb5e93949dda5a98222a849dc0563328c3f6ca36a9801094b8e88633dc1eb7527f8178fe08b1c08de287bcf16c8a56906f40c13cb2a73248ade48879ee77c3099823db9a8ad4030ffe9612463b1e9e0a8e53e9b8d905d2b3c8be8ab321aea62e327a7310e24491e6773c66aa92262a940b2fa1bb2c626be2b05346a15d73a32c8947fc1e71c5870bc7a48364b99417b5594641727e5eca9880eb3c568ae4d9c437d1e36fb90b0e4cbb44035b8a602240eca9223661df00508dec3212e0e9f0a529b70cc1041c454d5252e1893edf46af65d7a647baf089ef73e3b6244e1cde6c9eb156086c26de767b123e75b40ceebabc1ba81d287782027c69e5a807e7840c0d692200d236b72061be52ccf89838fbf2eb5dcd7082ca0a130765d9d114727950346c1e0bf198d290b5db1d5132fcb9dc596891bbabdeb0ba45528a529dbcb4f66909179b11742e9feb6cc03208a35a767f02711cb5a02ef1bff0366223d155a65b9a03da55d9dd92b5e56dd242a4e9346c4158a98dcbe55ae41a524177e241ecb402e226d9447b36320ebc1072660f90932f0536e0e75c11bec8340b59c16e6f68a9265a41ac018d0f75b896cc45b883257bfebb5661ac85ee4db40a5aa1258e209540bf4d24bf68a9d80bb64d0d9a6f5a15235f81196e38c11cbc0d90fb3e8053a13a90b3438285eee6bbd741271ca1b733215e941b1d46b9e9cb9b308f1d867a254ac35e6e84cee3cb8d12404c12bbab5de6ceb924c3967ca420b31818ff29539b0c6181818037cb7557844758895337e5da12aab8f21b690c352a9de50e2fbccf5be993b4c05a3a700655926e33139ba042f06003c981c189a56325bb76af9324b469bcb309db3539b5c37f67e7aabe3644bd152f0137199967fdd7c2bc2285b0e60a3913a923e530e267e142c2f6724b4336b7baf2a9217f4417d588296fbe981a565fc9d591cf85fa728cc4d0fecc9c537bc3d5d8799548be41718feb39e28f21aecf3063b7e3dd562bf4aeaf5336651da86a7b02ed4b760c6033fae903045dd6bb7621d3963f3843d6584c24a4c6afac14454362949a3a05d137f91129e3d12cbb6d61dd3e491486c2234b2d8e9d0ffb99d9420fe88a8344fb6ac71df9e8660e0ae8fe3efb9c4ec3d1076b988bd9cd57bf03ec6973dfe987b0e21a1ef1433c00d17c6b1dbaffb1213ed87e49b2ee04e6d9aa9e55b8ff12b09d24ada6168b550cc38641829bee8f0da276688e82a91742af49d39123b65c08d7d29206b0c907d41d8557cb06fc5056f7a2e149ada448818e29e95a69be5a79753d3e1c310c700b69e95f4f9e0f107d4f742e742b69a8a3b7bf3cc5611646ef8cd74ea514a30ce08d980c88747609bc8bdd5663e1f6992444daf2ce3a435a5476955352ebcc843f8b677510cd9f8fe7c86b2bbe5daea3fe845b5b5ca0fc80e0e857559f9b4a7acf740bad3f73c0c19def9a165793fd44898e040406a800a58cab0d09469452e655b417759b3c746abb48461384ac95b41973c41a034620bc004dc4ddc8bb60278baf7e0374cb893a2deb86c1479674ffc41e33b8d2775fb637ca6bdaf22a807a33b9a0084a45bb631494c8ccb3e9b9d641812f35e1c1411623b02f639f4dc94cc3adb094a99f7175fac687d1a8f2b1c54f27a46ca8fcef8a88b997a84253bea8144c5552b7a43eb4905b15650f06d4ed12a8ab8fa2264c9ec840e1c4a8481b24de699da72e160ae9157cecc5fbb5e8f6ae6d17ae8488649bf6fa8114f0ce9604bff4dcd5d8b33d984d1d87dba02b09396a561177c278061f9092e857789a2b00282b8265c105cc463bfa67d2fe7cec0a5867bc6bf18dfe99a64aeb0cd41f784a96497244cb3339960a61d0f5065f8632b90b7dae69bae6268cc299d4fa3e3414150c5d39a9e9b8b0087a8af49801beae2e92f69b4504b339bc25850cc521bc2f8700fbba9d7935c6a515f8ef27d9f6d6028a55f08bf1b736c4c40610bb9b149b63533c27ab8cf2d821c6dd33bad3d0460458ad6ca024e2b06b458cc23e5cf041e46c4dcf9954caf885f1b9e7111f94b9a8873318837c53321d54fa5395e0f8d4e8fbd11a5701e370e486cec7477c69f68148ea40aec6aa1e09aa3083b09fdac2967129f02f92f582ba2696a958c42ee394caf0139945dfc083d4ca900ab58442095bc30dd483b926c9337192e1c09bd0e8e386389e896e803b5df5c64f662a4a43d251ac83d578b92c1a863b5b3d23e2f6b705b8bcf05de701e9f1c6f9e021211965f654226fcd5cadcbb393a28edfae34252c74ca4e4be46181116e2f9f53b4ff77f1cc108c0d6919fda26743573b0f82f1671a2ca0fb960ccd64ddc15c152b8232527f6b60311afe55cc130b01c31b85f30b585f69410c9b17e77c08ac005f16873cf3ae6d00706da08da07525eba672e8b6860e58488860148ffdca0112cdd9519db09f83a3935044d8216cc55c3d1603bed2f14735413e5a43438937e9ecfe1833bf28eb4d20979308826593f12eca48ad6a0271a821bd2dc21735330daf9a9be4a5a57606413755f0d1f8e9b11e9b7fe47ef0c252f83d5ad0c7f05434c582ff5d90ef192d8148632e437bece15a40546829b4b11aad6de0a2ea67b61405a2d88242c357bad8ca2cc388ce18acdb974ef3b4bdc17f3e9e76d55b2095661f13c2b94387663c0af76e8f45e79451d865e6dc8ec8ef0a3ce8441a46bad96628d2b60d614cb5523bc2fed4d111ab1a1d41ac7fe45d3412591458733a3c7d23b65cbd1fedcd0bb40d6b4a02ba891c71a147143d50028fabb05bf1d906bb5980daccc401eadb35915221660647c3ae8fa23928d7758b7ec530aed51462ee49bb8ee672dc25e78ee2a08474bd8621cf28d022abd4ba9fdc137d0fb14d867c9eae2f2fbb554eeccc9685dae37b5e93d73ff667b14f09b4b435b2aa294162a3078c8d7097d4153bb1dc17cfa65e575af652b341f11e2d6fd954d03745937c35a7f363e650990a447a15f39619f257a5ccb9a19160edb73540f58f4b06461bf96ea3e28d49c38549adfb74682d60c1fdcde7c05e363bc0d6a5458c96ec62b4e90ef8460483f33725c047c35eaadb0849461880238bd6bb12587d0fab39ee58e51eb0eeff26342354afe03079a6091de7b3896e8e0f42bb10798af7a2d388d581a98a5bc42c35fe986d971da53ef0be7a81128a97c9615d0b1b99403a6109b1c0b12fb356bdcaac5cc30152ad4ff1739e56d8c508171abc20eae9c17dbf36d72bda3c945439beded8c631beee7193077006c6d339e35d09c407619d796daec5cea3b1d1af56174befa69a123af057550a1f488c0c9bae4dce3726ab727e83a174cfc5fdc0b3456cc06f3eebdeba42526676a14aeeb1807be8f25e91b906157d7d01dda5be09f893dc066a554f865cbdb16bf37f420bfccbb6db6274a82383c6cc0c2663bd200108c7344862f4690e92d7c8f00aecd31d8c46172a1e64af0e72fe9f3185a57a71e814ad5f0f0d33f7db151018ff3cf7144c6ca1b5654757449ea57d9c165b0386105717498d620839c39f85b1d01228153bbf43bfe1b51ba9718f0108fe1c0a09aa23f9c3d83326a65d280bc6843c6dc4a3aff32e86443923dee6e21340fee839a99425694bf86d3f27490e877f87981767acb3c407200097ac2108093e6069b0c65fc1c8a4622d8f3553ab77213a68b8a65a53b2ddccd69111dfba6c35ad64f6bccc50c664f65cf77bb85edaee120162497022348d864873679d7c6991f3ae7d445e467dbd9dcb45927c7dbe358b5c31449ecfe0d217f7913e83497fe781e4d22554577eb1ad0b4162bbb27f8a32cc61b50d4822e493bb0749448100c30102a10e50ad2c2b443654187f34322280292a444e6a4f5e38a8809d0f470cf721e29b46be30e59018c863b9e33826395679098ac5285882fcd6b6e90d0e3b1cf3b47cab42aaf44111c25885dcf068e4311efc18606a885415c9befd0ce3144f427825a8937a257d529819a237434fd7b7593e567778962b9a195e0b489f86417d63e2987306850dc0b81511acb5b605d5831861dd6685b79b09fcd3286e7a4124989648dec074f41cdefc3b6e6ba2037b3956ba12766682f2663696e53680b2ad68ef66a182d721e95d4055372b9b6f0cb20a5e0a93a9fdc03e8ea9d90c36e5c1de148378cc8441a175f7fa2b132c8739abd90976904982db0164cbb92ad3d2a8311ef7d7a02df5096383aa043cfdadfa0decbefd8b1aa7be45cb49a9b43228dd31f45018d17bdbaa7baee1d7fb6a403536d288a72aa4a277ccc6c24cc44ec1ee699e7ed54bf465bcbf458b6b5abdcf988adbbe7e7c0781b7e277908ff99487d74ddad48ad6b0f1fa8b4084ae851ef522b40ddff9c43f01b1d2a7247ef8706f58e397a444afa382ffd05cfa4a6c3d3d3e089d9e9430b8666ea02c5e458deb0c974441e73008e08f45f678334fde926d4bfa5c3e981e392949b415e67eeed162ec6e9c23a1767f33f74b7518a1868f7988f142417575a151096074d80a48b25014be6e60344fac207ef408a087a7f76c08de33b718128de5a81cdd11a3428eec14926c49d82c32a9198c5d237e62ef6ab5ff73d6e746cb6e5dd22873f7e6cfdd19a9c3175975da1abd0f50319c20b78fc1134084460c4aea6e687913fe590d1af85329a8a8c48aecfbe909287b1c46efe93b820c2da46d2d77c6c39ef309a2248c219771cf8a138e448ec2a5efcb89f01044d6bf12da439636671931b1cd53eab02d753ce8604850a5999f4bd05547d5cb57e1081290865be4854ad50098b2c8214c04a39b7ef77d64fd9c83ceca301058494a1722bda91dbcb1ef063588686c82c4de671fb2e2b093e40ec616f5e640423f96bd3fab2b15f9dbee2000294b473e099de8447d0eb5309ea2af755c6023379bf91c3151593bfecd2c0cb34a8a97754f398b8b0a4bbd231c0bf30bbffa1b0c908dcf5a4696a517d7f144fd8ef82ec784225466c9b15f57c69449cb13652fe15378ac979f895e06751ab406b440662ef70db2132facc6ffbe80542c9059bbac35650ebd7b222d98effb024a8f0eaa81f52dbe2a46282a76159e1c2bcf1a6cdf3511bf8967aabab2e6ceba80b5cf16aae7f813c02d7b6890bd403533c24ab3841425c05bd644f4372934c403d37ce0cabc570eebd8c4db011860c4212206ba48589d8dcb418827efa7f311d2076566114f665f5cbc00fa1085af326100154a905e6fc322015ebb4d4e0529c7a703834e7eb6485dbb687dbe2249e701a27bcf42b49d7e92ec7e7cac3c53d4f82e89ddd5273f96d4ae5264923e4c91c049e46d16dde1ff21466b22012f1359b3d69000d99dab16ba700c752888dd6d8db2304ea5aa4994a52aaed08e5a6682f390e6154ad1bcba83d5688e90f8d41da8a872d9c077a97247a435b358773246143daa68098731c5d8137714b22e2454a9e8c27bf21a4680e65f1474134a99c1242c5b66e81dcfd3d2f451213f6b0897d09ee24f6b4d5bb0913467002d682a11170fb622f36b00406181636404ef7748afbfed6e0e3433125871840ab13386f79c6f3080600cd35bb9468eceddc7d8862506245c511ec4951a96193b4714357307cd78b18c99d4663fb0747c57cf23cff60c8149f56544503002668dbc16f59f2d7d01928626f95b92a35ad016c0a075cba16a5ef86e24ca79f634d3a9e41159c39747a101be661771895b37f7bb58b171488000035e427f5b24bbf7dfbb69d13685029e18a0ba5222d2994a44521865221ca64cc482e3911c8f2fb71184964c22cb39d80e638253fee90ecc7a0ba82215e32f395ed11b2dd140f393e53040ceac2a926feb8311a00f26777ec2df32f3670e486c421167a83381934a6d17848171a72f3feff6c20b339bf3764e2cbe20d2a801b3da4aae68e4994523288bd17f29113b1f26ea448002e71e267b94b2739583a05d7fc32e4c33d1121d2e10d2dd344af1e97602dd85f7215cc3132602c5540eb16d8738bf8b3bc80ebe629f16a887ffab31b03d06a7d0c05d876aed78e7a344c7058f51034e099ee11ad5c3ac1fba0e2300978701e420143426046c26309d6905509ccd0eb99257c728ab8aa077ec3656ac00b6707252557dd9fb5b4684d6cffe08fd1c3c7f5df976125d71fef7918826dc7f94daac9dac60841e078217407afaed550acf9acd21a8621087b5686134d04bffb6ee1a3979dd1fd0080b2c0c4d84af73d03f23d1538c82d064627e329d4b3b33c1763b2a8cc4bd944d4ae0921cdf0245382bd5d3b1c3b18bac82cb3c12fb9980eab3b4c4c928597dd39ad744586c2330d7daa3a51eece85c80a38db0c4d47f71d1d24474b33909a6d13d33944ee01303536e3d3e0580077c71d72ee432b3170355bd10808b4ede9999bd2871f99e38bb5c818a2a2959442d12cd031984288b41aa1474d06ea129a55a5dace3b6319195f370d31d9a3099e123e2be5b4ba7e123863f99615a26b9b128f7511dc4f8591c8db1142bf5bbc325848201de112bfadd85365c70ce7d2c96ecd8334c2c6efd6e3543fd153434e9815a138c1243d61432069b95d1372611802edee333960c0ad5e301285d1a02c19cf4255aa48f20ccbf0b7386f0221761e3463f442ce99a6d9ea3ded47bb8e9d246b5bf0a86eb161b233ebbe35414cc6cc56f6f912b47027e02caef7cc296df0dd66c0c3c83ba075149a27840610100fbb6e45273e6b6fef9a5f5158bca3a796b7c2d1ca67d021db0d13f13f5e07825aa682520db76db087efdf9ffb36f05686f3da6cf9ad6fd4689fcabe50ca238777b19f973219e5870eaad83824cbd7ef103ce2f584341e7f7838402d5d572cef013f2a6af1b4b52cca8d062d4d87509d2dec2857ce2653b5847a3eab69aa0d0daa24783982f44934cd93c1d56a2746f95859f493ca11f0e3f2cfa36e72315c7f1cfb46d40bd5ed9075b87814f1ba4da58936c95be06dcb2f1c3d547431da185f6d9615057215424b1b562642d47248563259222613ff2bf6da4d1e1dd2073dd0fd4834c4d6eba97da2f30115dbf022107afece16ca59efeded5fc8e981159c98c4f4ca87c1b04358e4c50d9469b2ebf56e15d2d2fc31c34213dfc4e2c26b516c3daa0a4f9ad8e5a5c8b4a9e951e35d3ed9c93cbe743c8ab1a773c80e5ce7142a20a88a3fcb4789d6ef10bce4071263b815777f61adca04903c39c886cdd3cf7c536c81ba01b9e39e2eea62d6c85ad44233fe821c5d9839a321bdbb0c6da9b40308e7dbb65ad02d9a64c29df75d5e9dd2c75615da99d7f6a41564d1c41d4a6ee973c68dfb255659b500f4c6b31961e60c4be5903cfedfaf316045eea71061fb05685456e8edaf4ae6bdce5e2bfd276d6096229136e53f3d003c89aa71150557b39b1d0607851f268a42e83a700117b927966166688129284d107f9a8c54911232e573ede366ad571171ba30952a23cc2c6aa86fa167c8c7917cd6e9441a50b3efce0c3badf71bf17460bf019b4e658efd9da783b58b0fa85213adb7f294795bf6fe87614a6e59656c061ab81525528b223f063c15866c1639126c0ce60424401591fa2718e3bbd620b8ec0c1a3506cdcd800a017dd9f5631cca001103f42a98ded3ff7b635544983da1cc032b8b2ff8aeae8f950aed424472c6922a141b004033ae6a66e80d3a560f3b25ca02c4395f739ee76b65d5f5dc1bd76f449fd6d31a71cd8d27500fe35496e7c90d543d1641a5bac190cea8933429f83d10d86c8b297ee817a4f625667ad0a4df32ae5f7d7e42f0fc388ac1c83a7a55ab5377a34e74335305145308f017baa3f01e0d7da9f2a3c4c645194612a7939ffc06d4e6b633204dfece4b7feff7a3302d7067d57f0dc2f1c92d22f7371f21387146649d900e79430e61201ea26f16190e7b23a084cda3ef38710568716e1828c30bc6ab5497a0fed01fc18f9673bca9c423ec9d12662062c835eb1d295a61b86b0699bb7696158a55077e55edba4606bbad29cb3dad7d61ac94c7b4b8d68218c25766c0162021720a8711dad58e3137ec5c787e71e39824a626e6b5bc45b44767752935bfaffb5ff2041c77d7350daaea85dc0d5b3e559a1f595be77cf275035c57050cd282c2289ac3ecd780e13c9634237d14452ff5980f1c8cd59129ec947b7bcfc14c833a69404a4fefb810c3c90d49cf4d7a20fb057912857511917c0076d9b114921823166dcb73cbdc6a9793162531fe61d22b95a7f51d7bcf4c16ce15c57c0c080974d1273551ea4b3a20f32627fb02630eb71ad75c0caa82a952eadfb7432025c3e1eaa235baf75936ab341448a3639a22e1d7478307b7609befc96bff395b134ed46e84c444311e7e59b21b858e73c6a189187eb0c587732c1dfd1424b07a64825a2e849ec95f052602e40d3db65a74bac04d965d9dbe1a7d69b9a713596d0b9109589d303cfd13734c518cb136cf0b745780824c063abe94da2030f8318648862b5e8ed633947c9c413f6494473566420ebc0b2851f8ca80d4849867d36ab36921bca6577421e43f5bcbfe9426a4584baee3e862df16efddc897c74923d583534587178b592c1d5808c9a340fa8f6455a0de05d79901244ba71234e5a8c54bb55978e16760702e67090975c35c281c1f91af2226f13ac16c8551672e342c68841dc1ad687073233d4c43c57706b0b21375371cc4d1c070d0564babe6b5fca49ff301fc9e834b0aada02c5e56244e30ce6bb97d0f999036ab8cae735cba4b7cfbfe695c454ca258ce2168121d214fd00a51e7c2ea987c6b50d8337f9505710b001a12c7af0da7537d692e74e93f984b364b26771cd2c5f586a43b03951c7a3c074a9b113b38f3b1c09cf367a9f0945eb4e641a8c1a7c3d91d2bbaa0a3088a6badf5b3f71e4c768408a3073dc809c123e01d1c325669c57ee0d35485e395ee628e60c60b5a4549c7729c7e7ffde6cd19dff46669b3c3e99be0282ab2b1126c352a98c262e608190926434e8ee7fedaa0507d6e72bc2314c5e5743591693ce3f4c128c19887e0ad31fb8b653771b2b54abd47e03d135baf6db7feecce315f493cce2f0c2364b90612c2e1123230b26caf1a1e76a20bf05b775b001329be18ebf5341db6e1fec7ded1911594c16711c6edc8822b9927e9cfeb10e16b64bf250e255e82404010108c5e79c0e9208a22c85886b9eb653cb14a3db395401e0be09ed8e63051b761c0127d8f741379f0add898ebc84370fd77c1ecf153a20a1055f3c353f558116e9d464869e05398a5362741780eea0a2e25330a2c97836a46adede1015a60a3450d62a5493db240d0e9074ceb3d61a08017981db12c3268eed50dd489e3ed72b49cd2ff8915689f1a4c43c5a12544eb17b03681696a7280c39f19b4f67d111000fd343fc8c63c290b694f3c1fbe9b54aaccc1043dd86910a603464d4573ceb4b1f3ce15146e0c2b3baa9cd910b42f56204286cd931b834d2b43373a29b6fa5eb80d092b32f53983ea42e744c3adec58303a2e79b29954c1ea11c17be2c3c2b4577fca347e2e3ae94860b77d092767a0d7ac56a40d88552ac658d19ed00f31bc1c1b9905530746242587a3a9fd8015f48312294e9494d88fa27620a22f81bc294197384804db688b3c1bff37854eabb9110808715006ad7a9c8e4aae3cbb66f10dc454800692265c7f449d6312be4222b5e3e2628b6deb2f68131b3145b81c6b95434d698715eb1226459cac362b2af7445f630f2a93ec480cc3b81bfa24bc6f177c2e60174f4a74d8c445e5151b4499a03d40171277243d06dbc5d1d064c4e327d158cec2c5cc2880d3e4389849ac5663b94ca976b991d68fb600651e62534aee4244a8044d87015611e28ae08211b144fa8662ecc0ae7d05e42302492884c645b76bacc07d3f141b56d9782b6d0d47ce7865cdd603c305bbbea7fcafcec2efbc4c0a8a8145cc0a2aea91a8717ca74b0e789c3e6347100126175a3b3962cca3ab08c7d3e13c051ed3f77bc39e0eb6781b7c0468c020274f56052787cad6b00b6309838122e651aa6082fa78f5f468ad81c27cc1fba672b8b5e51da18de77271fd3f276a31a2735d61b50d978684df9b33ab023e83b36c35223761199c003113ea1e456369640814952ea99c279c9373721cb49491741a612bdd113225c66c05fad8d01e00902bb56690da46344ced576d81e5322509537fea6c36048a7a0c2447ef63679f23ba7b8233bb02e00489150a6f3b3dbecba976c05479ea8b949d4865a1910f978bf82e3da0c2486a14a3aa69d8d86188783e7bcfb26c621f07f35cf1480e540cf0f63a1a2c56db2fff45bd8511588b4aece27319d97b0e429e5aa5d3ee7fe13d5c2ff69d54289805a1612a30c35e6ac093c1237e25bb5627296d052acb2c9e1ceb04c2562dbbdb544dc79ccb13249ea9dd6652117e67bc88c530e0241a293e0577cf91975c0cd3159366eea876346c3c730482448f43c9c085ba5ee3e4487a0e3481ef8acef9ecf26c21074c2669619c975dac97033d0e8f41156e2dc136c7111a653b210f7aaec3a00eb8d4f768e595c087163366704bf9da2d901c2e59d011d7247362edba989a0c0fee103ee00a9a7979d5de433565c2977d641ef2b53c8679bfa79ad2f7e93910137945c7dacb1691d3a504ebe826d6568cd18dbd4b09a4393aa5eef59da91aa777518664094a302d7def6d91eae00068861a6a4e0dadb30cccc2b6921121fc8c4af60febc7dd2c6e435ec19c446a6deef9c5000a2464c6ce96c0ee46dc9c7cdb05464e2ce575a19496753ecd83987b3c93f51919962b3195e33585c8c4df5389ce16b26a0c210fb9cc004569f456689c09d28daba2bf045168269b2d9da4cbe6f6a47573b14130adac730623ea4d19b05080c5f665e8173a1a310cdcba25fc66e7b84c7082611a2848bde9a8285162b82033fa96ccc8dadf3413feb59a44d235a4594eb0d26675684592f6f2028c9f2ba5e66810aad6c25ec8408cd7a2a981e215d525938d5aeb6b5b3b390e2faa109d16935e9cc44e818494830eda4f2aadc7819cc94b2afc2745ca9b3e105e4e8ac29e8ff1aaa16be53bbbc1e94d0ce4b68c388b88adba45ebcddf65d30ab90a7d89151d400772300446a21523aac9cf318f7ad6553d49cc61e494ffbaa46bdc42a249386ced8b53d2fc537222340333fb5e16b23defe96b0aa20110602acfb6b42e1886d89c33e8d33818c7028f41ed034d356dbe8f77db12c2ba6d55b6f2fb0ec2ad868e61e1a9abea62e7e9ed55923a5420baecbee8be368087c1cc8714b93e1124c5666d63952dca5f4657f249baddc6af4f5b8e740979505c15a236815524c0e973b553146ce727bcdfe149d499459e8869021ecaa96c09d0767cc2142792e8ef683885b39139424cee3205fe62bc6f0aa2c4c73a0ec3fe6b6df201a4b743af57ddfe377fd59268a14b1f7799f126adfc03095638fefe06716c10b5258e67bef3d268070d14916d1d7c66e7eed9cd7d7a64edbec588494aac36b1eab42e2c3bcfaa6e09174e4f87307b38e9db98fbecabb42db94bf635f1832de016132fec5c5f40fef4e56d4bea65ccb7c04ebc47404c6cd995ef6a54adb43e4af6793c798513c10c490cfbe88c68e0c4f127e9263cd1a92ccf2693313a061c908ed68b503527c96c0d94bbc689fc60f12a529f3f672616891b5dcc6f489033a571b8e88f589c6383f546adca452bbfd3d3527a4fdf14fed1c175169559964f8ac27aa2257fa5644f32e72175cde91fd69fc6132aeb8a14b831ba2da7deaf159442509f34ac8b84422a2c122176238c235549e07103d30537197c5bd55d928f52ca147aac94c7eec846cf6985239310c6a5c17200d2422f6b724858ad113c50adfacb1c6709d05229ca8ae630c4a585729919ff50c7362ad0620e94e1996f04ea2713a6761fef95c83d4b7cbf7c4d26a4721e10715c8423366befc4f01a2349da7a1fec9215640023e1519a57b988c60fe4c11dce5e99f12922385b5743ad71d14123b469f7409e0fe8f957942412ab48e4a9c1d6f381861083afc932b710ff069cff1e470a96abc4d2271a9b23ff22a585c4abf20a824574d2eedfb5fa1c3a56e3cc826fd7cf0f9f9094a74a083ebeda3b95641e78b72428a89fc7785043afddc3421a690066d27452ff9aeff9e4ca57d56509acd34a9160ac70c1156a2682b30e6904100ac1365e107bed84b6c0d7feb747822ca2fcf3efcc48f43972ae5c2261d01a24e62301b37069e3afa387c0384643eef2fe0b9e239b4ab44c68869e30ed057bf7859c08b8b9ff420a0a6d6b2f1996b18ac003da9d0cf18acdd44a5e6f08c2579a124a1fef977fb2efbf435ca65fbf069abf4691649eeb72f02d7c12976a1daeaf00f0b30d0c5dc084fb4553d8b28056db895b51dce5194d1d676c7dc46566b4152ad6d5c513ccf8fe19277da874d71e58cae2a3fe25a3218e478744bdb2fd7cbd4334fe8f29667ff9a61eec9456eb24b0fc25d808b22e7f6d6849d9adacc4d6c8fbc89dbaf02c06a61f783e8eadb1ea39eba30e5040dac0ec555e13ed8dfe590c008c0745a83b7b32d9a46f9773bdbe2a95fb96a8d5d2edea94015512393708f7b99f04ac04c31c4c2a4f51aa51ac3844930d3766cd8079ad56d7de2fcf61a2b1c84594b6b91c58bd37380d2e4abbfd10c82cfc6731811eb93e253d26d86db58fb9eec2ff3675e951321b7ac64d428f5985d6421b6d3618d159e379893543bd88946de334823e3af6f525c4972dd56f1f4b658c04ca5b7b3108eb379742d2c52a342362124968efb18e627671b6114e9de5c89a3584190a9a547612c8bb2ef7a8424757d1abd2bb3fb70a537d44b1cb1e666475e93f6b443677fe669351e8830fc56622092e0460e9c7b0345e45513abed7763655d44dbe0da934233a353b438eb70aa291739753fec79b17b7af67a5b2e978f6d42aaaab0d794bdf8338c6dd82bd2440a4a07b9a7e5cd4657c34130149c428664607c8eac8560b2faf9ae910c8aec63a623d93d9266a7dafb11d5067c0f40f2976a8582afa64924fb6e3b5e38baf2b80c496f4e3e9f7d8258fd1fa4d817ac9910835181b7b31afc0af2233d1db89a80b13cf28be3c6db99f65e7469e3fa7a5c451682f6fb7e74e5a0f7a4e8e2a63b477bf9d7f9c1a8eece86fed094c97a443a418d8b93ce92db44a6ddb71101a9effafd61f1e4a5ecb6b76b76388cb58d782c268256737396cd41c7f5981938282ba7eba85888307134284465c8dd257a9294e188e36a635c7bf9d08c10d26355f368084edb0111d6337755943ac840ae3a1f64b465b69e87891ce9c340ca183960fac0f3fd697e5ae11f28746c60f5f96622bad9f2547491087b6ea2186f75d66070d519ab8fc92f30ce1560fa3ce69c77d32f20ddffbc1121dffa66506037f688edf92431ab869689610a99239491bfcee6822f1bdb50be68d3a92d94b62683f371069700c9339a9f243c28c41e70e6a2d2bbb9cc2f96b52e889429189086eca5539f072669870c7c7f1831217df0105c59d558aa8c805e216bd97a978f67fd225931e7af767f4d922edb2e2ff0a651ab8eb2028675473cb13be984f8908f35511717c9e8d1e0bfb5861afbf94ffb06c94ae3e179a87ac2c56b6cb248d7045dcaf1fef53908051193d597c25d72fca44255029c166a51a2d3e772f6d5cd0e08225c3fe6569d01ef7c00c93fb9867e21f7d5341501a297247a44517fcffc8ef3ec27fff0cbd1423dcaadbe8d80549712271e7d668cfa11f694184bd0dfea86834a37fc0247b37a07f83982e884baa6627d2535068b5798b49fcc2462bed110590b26a4ca37e8a6a5438c8b6b0694b6e49b564778af8402aeedc72f554282223cd98ad21ea5261d33f78a20ef408a9310e6500ed6116c0ed32c8aa558becc934466061589791203e17651d9c0d0556e948b98b95664149306ee82e3662a5758bc79a6948f8ad90d0bdb843cd2f1f211cd426147478ef968b628cfeca24c483b9baec9069261d2aa5fe35443d67318af3d4135ad6781d2f94558eb5ed60ed21e0c52ad871871301f1daa6c4968b00b5d3ce97002287de9a1d10f9104a20a0f82f0c54f6268c70a0dc0716f73fbc75b5c9162671dc2a4052099ed2278fc9b147837089afc35f2efa973321b712f973494c1d6629995a8cd475c42f3b4034a57432c1b21a372b83a58602fb132c3edc154df331e580972a88923dcb73604123331855d4b669569739b6726609ed87e666f48f5e171359e60b8531621f6f76ef349023bfbe57b96b2a0a334c5af08469bb750bbf56424ba53e9fa006b2a212c0cb58b4f3abcb9c5c345ddfafd92f1a9d4242d3ed849eb0347fd64b2ea68b13bbb3e7bd98eaf03e0f539b2a5cd2aff144a53d39beb3004bfd54dd92a4ef71edd02e1f92e496f21435b9afe2406b058f79fd95626c16a9d483edfe2030233767ba2911fb73bdd535995af3f65088f73967d3896c7f23d31d518a292a2a0918a24fea0260d455aa5108ccb8ce48f28d7198d255eb33ac5be87cede16f3f1fc0aaaecb7dfc14ca53cb8a1826e0bf5d2dcd9c397e98cdf8711a8b78155a09995fdfd909248b779fa92874b15bad5824eaf650535afa1f72c127bb87489958834a4111bde5548004fb2b2c907a89858db4fbdf5504474baf96b3f81cb1da6facfd2673e74ac735cce461215dfd358372661f306d89f90a6018fad487662ac08a48cbd52ce3e726804092bab24accfce86e0065cddff1789c532cdfc535ee8b486ef845dfd8598e68c08086125888189334e60b64c5acdf117abcefb7f48626eb797faa96194221d98886b8a2948308d0ae6e4fc6926791a32194335d7e99f782595088c3fd2ac255d7ba820fa7f97361b63736c6ec9092e58ec815c756ccd4ad9cdf271213ef314fe2139b8c2ab8ab301a88f83d649fd6d5317d48f0fd6c13833ec0063b9a3d2122c1c0c73927e4e9b82e616ea41cd275ef6edc513ac495034c6453a9136b2a64167fa7e1208c5b79f085405698d84b31eaa2e9f35f2ae700ac2fe0c60d866eeec321ec709636fbfac26e11faa83c830fca5f8516938b7a198afa14dcc4cb1320f27a97cd2864c494241942d35ae298a5070b12094e51db52088fd06df52138b691f4125d7696189f306778d5f69eb378d888f76c76378c0ba211c98816826732584b4e36ccd712b54948a2c9d0a6923e4a3dd6d939bfdd15a29d576028e002ea5b2f5da4718a2a1b6c936871bede6f97c01f6f882aa959b00b322c9be72b4119f283043a31d11682af482eba698d382b92dda710bfddb41d3e5a0a5a6110d58ea595f03c46f604985645c7fb00c7a0e268cedb855e2a83c44bcc1de0445a82888d5fa07ca27cdc529b8a522e5d0869edb4f8f0f0bc5bc66b18e785c9b805085ac4866579c3d353ef3aef1c493b17d194c4c93c11971091f84eb2cf5e12b5edc3933738321043cdad85e25e559c628d18c884f015a4e31e83371aec50d68a52e82d8f7ffd5a30597805ed201fd2a268d231af0360cfe7ee77b8ebc801e8f3d9069088cc620740d39a9ec66c3d55de44ba3311f0c0c3d997f836e650adaeaad4c0d636222d9af3ac383b39841043044ae7a6ebc21ac4727fc58806776d48ea6115462ffcc47aa27d9f7615923ffbfbf266bd7e348454859bd16abe15f360d8f1baa9954447b9f72d3a342b2bdcf052044ae1e5ca403c011a1bb2164a1115e02afc985ed3d48596723fb5a905fc7394864f02b88341d5980da87865c7f415407dd24cead9fdb014799b763653b404e2b4719ad164426e7523473deaae54481c7183c25ca6852fe34897033d11afeda232f86d8dfce04cc22b0803b64fac10ae0cc2d49fa13651dc972101d11a52f732375a7c4d73ff8cd88e7e85546fc9720819ab37bf0379bdb37eeb433b8b5962f6e73d8a355b766944d2b7d1c9c4b444b17f3f6d80001949d5dda926244af2a41de1930a02375476c37954211ff04a3f91dcb362ba78f5d001cead8ed8f75e7666b723d91cf90d8cd470ca123fd776b80410c4f309f6c110df84ee160ecba8dad3b7557e9edb303475af673d0275df206ce474e7823abafde1540a16655fc0cd0211728ecc972ab0d242fb0717763d291d58b647fb5aad98d9f9a95037c128954f54eea2bdf81ae066f8538216edd0d78d2c218e924dfc631cce150f3ce0d9aa4634abb68c2d4be2554e80025f300fa03d9581e6b0df005bd6d5d8e010981f4ebde5e8053f3ef0c326278c777a9c3f5dcfbe3edf76c8bd7a6bb05d9f2ae10f46eb7e2311100135927db154942055d90b8739a5df17314956243afa91112a01d7283a2942cc394db810973806efadbb63d6b9003e91ccad622ee6d41a91ad659445fc3f44bba9b5f48646ec48782b14936d02f02cbb3397f70ee2d9dc0bdc23be46bbdcee4ec0f3c064fbc5940b197315e7b11376e9fbf5922c1d6b927afa24e61e6e4b59d5868644612bfd231a8d673089050996e1839aa9c7a1ca9f0f01295c7dec2cab7654ff4243bd6575d22aacf0517ca09c5748c85273a99db50232e370f8a3163508e267ab5866ad6452f85a8487c235c08aeb7e5c72d92d57b70ada96d249046a14634a1ff27e1741a1c96a7a932890b544f115fd355527dc7caf3111dfa478bff6630637a73790ac382596002ceb8fa0c6188f4f011527be1d880410b0751c94bb00f577c16eeff0f5738939610c7ed38fa77078e879480d2a8f6715212161cca47675deaae401c75132766f1edd2709fa7fcb8be1284e40a4996ff4d13d9eba4fe3b3a4fde1b48f5477c4f0124617a835e53f9ff27e646039029ff77afd80fcd81851c97d4561a06a0e021775943338c7766847598f329a6a0f45c42c6ef99621c5af1e96ffe70d40f3a0b80a5e083faf7e04fd4f0b08f568acebde7b0572b891635e0cd1ee98b53ba15f24c5edf152aaab9700eae722896f5703b20e011a4f2738ccf969d4f5694d762b925a8b93a1d57a8a91c41419bd23c62d9a28c48b3ff13746079354f17d6815fec59bd07099116240335a79d0ba74f6f7c1998326b2225188c849f3af89ade934f763ee2e9ca6bbddc81c3a1510840df3b24d1624d6354ed10318418e4c1d12420a91c76c68bdf46baf1ee459618524ab4de9a41296e791e49915248a4bc9c2454f8223be9a11743c36276b25cf4faac3d74d2171f63e4dcae9d48098e24c9904ce446b64b4339225f523537526700f85b66e391e04a8756333586cf419be957ac7e5ec6e16669427189ca21ca34fcf70cdc7c2a8f31c94a6e05b60673f0ca6395cad71185936e064dfa746a037a7c567407ce27128d35a87c36acdf996373ce02a04fe71b19e7d45e88d1f4450b8d25d98021029ecf0dfc41dc352dd5377ce488ea2721b4a66cf1ec55189d50a972667f0ee4cb3504a7711a0cb5d4c4908780bb341dfb767b002e6ec7ac289e10dde285c59a054e82916229d798134f058808f5f9c6116e895a676c30d5c41731874bf0c93c1201af554aee52231471e887cfdc18f317dfb908fd2cade1cc5e81cacaa0a457fdd8968a42b30b9d934434bcc61db27c386fe8bc7c00ea36c56965b9f96c0dee97879a67ea3e73a216b2f568cc8ac7732b03141376fb6cea78e03eba834939cc38aa3a0c84bffe6739716b79589e0f6122284b96baeb02452b5b76c8ffe4200943a10297755e8595a68facb63959a281d9f44d16f4cbfcbfbb70218544205d49c29e0df3e302621b9fdd8efcb1a741fd46d30dc6de233d602577b616b49b709ecdb3954cdf9032a59346b0239320d58ffa20d2e013d6b0ef4f8a41264e6af851ee7f46fe5b62ec9f2df684edc0555d8cc01113896231748e61541992158f735af641ef7296d6979229444e4c0815d5358a94826281944f0659a688264da578b18003f7ca2ddcf9f47c4a89e61f117146545901ee419aa9e1c78427b9fc35c5dccf93b28def3d268f609dae10fc4ea57ff91a81c0ce6480fdc2e612e4109d7977ee33d763a7767f937f2c79d80cc00ddf2f3df077315c876af8a29e6f103ab791a18914d2cf60970c2968c184d38a998ab1dc9c091ec95c5a71ff89884efc42f85f6c8558e5bd3b67d008f4cb3fde01953b2652fe16b682205d700d249e6859655e742b620354631aa6ea5c9d88d6f6728a55a41e8ebbb997b9d6b622dcacf0a7665c285978107fbece7af277881b73e82b0e90beb2a28c445b789ae742181a06aef6051e28f4cfe5d05c79a88e6d310cc019ef3d227b126bd8f6765e7de0de30da94f91dfdac3917a2e3fa2a19d13b6a9da74a7e9dcee3ed4b7daa794e0eb91f126ee9433081430ccc898d31067a4080f0ca7fcb6f598514d6a94718318fa46577eaa0f45a605f14231173840a3919e4e1d3f7cc6812d6d6596b702738f76d75bab6084a2faeb1ed8630d41071ccc705dac06150d7c262a6705ebdf71e5a5b8abc76ea2d53330d345220e19994da782c2cef5444a08a409236ad95e14a08b39ff1333b9a26feca38d76f953e480e87f7f7bc2c93323863dd2ea6169109824cbb3b009128f2df133940beea3c061a6648b2944d9f30a6cb5a81bb212260aeb59435aac706f3ff96dae0ebeb125a0261b0a123e412a44897c469b840a55ac51b4603147315ec1957e3563c679073d6edab1cb98de8fc254c9204c8dc18e618eab0ad37c4faba786296acf91e4babbda2df8cf3bc8d1ec547b0ebbacd1e49584630683391c714466ff7574a4900f5f9d51b4f8006347733de1596b7b6df8ac885ba64858e8d9412699abd7487cec8a41d83b2df2e8e81e40f1fd436625baaeeb50cbd8f1fa265e87e3c489cc0b66b8216cf38128eade0a9e00bf7c68bfff3b712bf832085420bd5c122a1fc175a06253948f72171221aa2dffcc2b58f28a50df2e55840441b211e50abee33ffed238a682328a7f6cd4012a51ea050f5b242591a466d70974762f0fc101747cd0987949848e30ea59d93570f3221491084c127682d18cf98c4b8e3f110eb1f51057505728ceae23ab5040abab6ad51eb68a14c4dc2326a1c5a575459f436baa1265a90d9c00a58d322b99c519359b764f3db6358fa8c8a9b310bcb2bc8ff8f959fa6e3748a931e6dd7294ec5db657528ab0a999503855e1e20b98302a654261e0bc1dd2407a9695b278c19234a3cba31fe60ec8c4474cdfd0a0707e3a95d0ad1d128157cfc1c1ffbea222f52cd0f34b4fde233a175a3cd82aac86083cc140510fb1e1c8f01bb21cb57c01e18ac8f00530eb871f52b55ae7649d64e5fff0f88926e740d0c993d1540a2bfb4e8c9758b4ef6cdf7567811970b4e94faaef192000200b49888c862fc9d65bad7c6c0f8d87be27f50b4be119042ed4784a4317845436190388670b22a93c645fc0657d2f350ea1c239a2a90443f74ef3550904e785cb362855850c9969bc34c858224bebc1bffe5242f04ec11ebfd534bc5f88c316c591004f1875f2bc596889ef0942c06d852537a9570ead758f490ca779c5988463902df32a49454cc655ea44d586b321a1251b42e1a02816808b58edc664ced8187b5876a73217108fa93c4357a00f689542be9bfe050e5ddb10e5e40669b90f7b5c8c86a0ef56f0cadd6374040906d7048b6012145b3bc6419a02f30ea8ece23e602c03b1daa205fec288fcbd07e88dbb8be62293ada3189e2a807cc3ebe94e2ec9d3818a8d4976016738815d960e783a10d00ff426b815b541ce0b2b34400c4c501471cdc8eeea03662ac4a7b9f5a6a32ba6a21580c258e1c5b76778970a2c897b767e31073b9fb804a268e9f18a3f23d1a8c91fc606991c664b14206c74acc62c7cbc5375d9a0c59fb9e42f1c4455fca840e2f653f0cfa45ae86931b4e3fcbb387e74e2548143033ee232f28717167a03ceaaec66557faf5eb19205770738e286a51f2b76a90aedbbbef373c06b09cb3a6f7689af6661a824153ee5a8ce3b067d6bde74de6a9d5e9474ef6ef39adf409ea131dd2681a7abbc493a400ca1c41530ced1e398ea860cd337ccdfc357ab9fa53f29f0bf1abbaf02e6158d9cddf7e211dcc4179e5f1ef000567bad7fed739d7c074384173f3d69dfd14be459d8f00ee81d1009d568f10e0702eb1009faccebabd0def3077dffd13ffc61af309aa88734d869767b867632668e8a14cf8c9acba869bacf9a37b5c822b685df296d8cd49f16f252f3eb06a758f882ef5d599e84d2d23e8025367afc4dd6075e6f59dbd1120defa08088f618051ce1756100ddd5e71622b27b3aac1789dc1bd4963b3b54596cef50f64795346f39448c5a47bbf8bfbe0c01c33b31ca57aa8bdf3b98505f5eaead16c0927f23bf99b983a3d84212da3d3e8571967849b95636df66103e9f0a7c6056def0d952c2d53a302f41ab2ce398176e8f0837a3d3351f8c3f218e7da70db13b34611077651bdaa666f426f767413d67f64cf675950af654987ae977f8198c131c67b56ac155c0e34d24818464092c39eeb9356a0b6a5f1864fe07582d3d0f46972f9a0ec46cfff0f11db38cb3f3ea594fdc50ba944ffdb0daee7477414e7588490be668d7f229fcb6fd50ece42fe3733e3f1f7f59c2e7e5101f3f60f8e2a750da42efb978b083f1551321e91877adddd203004f4397c8c3c5f4e97935f40e8fd9c63b5364d589d3cbff9c97ebad6b8af2f19de8d46978f817fa3860dc069805e1ad075f56274db8817641c0d6f3c045a877bcd037a0b9ff61f593c6fa2214e97c2dcf5ec292b215b9faef226a0962e4d4ae7e9bd026de1e034786dfee8b444773c74c94fcf4955561355472ee184871bb0d42dc7e962384375b913b6a8655c41397ff87e46f49b1a4c518d739749ab5d3f641085cfd85a2515073cc30c7ee354a980b7010f04acf742226d45cbcbf52cd785fb69f199e9c5bf243e151efc081b3dc57d58d9dc2722940c771586f0640cb3ef9e20ec5ffadcdd9fb7700a99787c5a08e00de42de32a821562a733dc6fa8bafb8021ad91030fa5bcabcc6b526fbcd50bb9641e0ce6b5aa15cd5c0a9a1424903e7dbed9ea411769a1a338981c2c6f7784dafc972acd76e3a1170bb058b989cca2ca66d9d2a074c606ea56522771e84070438bdba07749a4559cc04bd3b6a9262167a6ea67eb3e61a855c61c4a66d76814ba91747b24cd87199770b8a027c08f777df95c432ed4a556b7e99ed9101c287df42651e99371968a58eda98b75853af3d2970f0c31c0ace6eff6890a5433b5c928744b0adb1feb2bd0246fcb330f26727112c63cb88494a83622835a6f0921a087bc7c163df72b7c270a86f5b059bb43c8ef3f391744c64131e2d3cde0fa4b95c89cf8d91114c117801cfb835c2b9b066ceb7b3efff04943f17d17f7a0055991ebfcc6cb4960451adc70cd6d8199b4dce6c5d2d4c00921c4ef7f56def575acd0ae18627423ed4d2ee8711767ac17159a05c010dc32a429ffa67665aeb3592e63e1d519239471dc678af4ef3b926c30489b3bcfb7df57d061cd75c6ee72399fdca263404ff1feefd9ecad79521ef88397f7dcc2810a2ecedb1d6daad80614c53a80aee3aa9251027e7690dac000b9b8af8705823bbe5cc754c6df5e93dee6f3a0f4934c99be72e64eecc623d8b4a38b5812896e521e6076a59b0ec755a16ecb4b47371c2b247e5160e37afedc2d5450df0a649d8fd76205c45bec967ebdd4df13e3fa89600e6d16bd503e44eca8a1aab90e2981bd846d4a684a5b21a92d4f0fbd2e22bd9a63c336f9148f26568b77d71db85115255be86688ed72fc074d7eff109f0e8fb46132b916ac0aa2da24e372a959676dc6393b5dcac6f12dc0933c637eb223af65b6bb1393f149a78f904396477a76007bb43a16eb655194a48ef810e5961edec68978f5524fdf79367679bde5607fd4090c365fda7a64526fbdaf9ecdb3816f793b871edcf2cc656c72c2b76f7c1e05dbab30071b2dd2f2c9827239625cc4da1ce4e32c474b3ce900e1a4ad99fbde4e1266f0650cac1dffb0f81d83cbb4c7c997232a489089e2d81aa9de5ef42b7d5b04526e9f33d1a242d663714bab14464a8457756144c2d7e4f94ae0c7c2ecdf41a2ba949d756fad1710b0b341497f924133a6a75abf19bcb09430c38df327968b4a96617c2c88aef61b06d4342d1d4088f1a931644fa1e3da6ad3529e5fd332684c8ebc8093c7ac4a88d04666418bc03fd305a54a15fce8eb2bfab80b24c840453a409e419a2dec1b808a82c74d701e155229792a7d3cdae09f7fa766b63b140403f3c674a0bf84c8de726ac6613b4453e53159ecce2e7bdde49ae9b2a441954320364a252da4e8b87a1b1c7c1b3f886fa94dcf119fad71f4ba1af2cdd85fd68adcc9eab6bc3e12689383749ed611ecf2ba2821ed58657eb7b76d85ebd84b3aeaeaaddd31eb59f28d06d86662b8cacf759693f7ffc3eb36721a6fcc3d02e4f301b2a12c6f85f205b57e1e6d80aa5e2c9471157d5d4864b70057c1b134f301fd300fa1ab09f7e8e2056f240564a72276e08c8aad82068c3c670d97aaa626cf16ac1296efa217423580200eb643f972df16d382d217ef0452428823a965e2ab22653faffa73c9c25a5671ed8da07d4c3f7b1d69608c946a17d0049ba97af303da6b82d581a8b0ca62a8157287eededd1e63829209499d20959da9d9d0072926d0e42c3fa41d4250db4ed50241323bbe78d15b20460b998f136e07ad676c8f9b48b76c924c48f199ffbfdc836a1248418c49a38158940a49523ed52b9d02cca6110a42663f1ab9877e54b25c9e0145a0be81c7e65010489501de75b8ff76454ac3daecaa2176662e3023678bc47916db0c6b8a6d510223543e77246a87fb67f6645d9f625435039eedf9352ec56187cee28fb37ad07590de40a67616201d82da5a24dbffd31d051e9e2a960c44b6a406a0cb753718b412f0dee75fb6a3ff8d09ca56fc2c0095726eddff1c610265cf8058d20ae7f517495a0190302a27280b1192d96c133cc064bb797ea5eaec7fe9ceeb3f861e87610a0e0d9030662423d2359e5aa8fa3340808392961ce28f922d3dce0212066619665d462461a885fc6a04b2575a905cdc45a55f8a3cd31957229eb152bcab7675867d4eafd2fce0f1c6ff7e8a3c20c9db430362c0f8c788b7cf93f0d890a608013f4588e55ad39a3dfe07e75f3830f71dcaa4012bfa2d19fc1388dc008b47766718a5c17a8681a02cf52a918706190cd7fb0f5af7db3644021dfd0d74d8f2eddd6f21f250f375969b97e2e93a4530d22c82519aaa3860e914b0571b22cf35ff6622a506565a1a7991f64311724d6971652f92d4a570a90bb4db8011825b77d441984829ddbb6c9e378b4aa26808de7c0f7e2265d7b334ac7b30371a0d7bc7e0c72b94cc9c491f264f2675b38c59010d36a2ca7125a99e6e9ef31cc682900e4ebcaae3172a8119cba582e2962dc58b9b2cd9afa2af651284ef3803be0a0ee45f36cec000016ea3ff19e43c4a0ef8045f20f54abd40905b5d24400ae7f18fb3c2d5e3fd4557394d12f68b1379aeca5faffab70e12ee103c99c71dd40bee6deea798c9d7ddbddb5bc7835dfe3ce56a12415bdcdb43d500412b053b4acf23901cc264cfe3a0e5a569c7744666600de1632c4060b5a8015439b3cc42f87f683846025ce26d3d3b4c9ee597affb28705bd8c34ef0fd3893a65f255d807afcfc1efb14794072dfd3d111b1d3fda6638220f56763cb3b39d6139deee05b6e4b7190a730cc500ac365bc749ffe48abd7cdbb6b0f3c03208f5a37d33d29ca0facdbf5070c7307055e7bfc804152eb8622d286d2fe49de4e73f48ba5f5c6d6b5279d52e5c459cc934c2bc3445682bf5ca03c9bc0a7a85634d801798acb4708cf747d7b5bbe8f660e8fcafa4d10ac723f52993a0b060a9a5aaa1d168dce390e7fe54812ef87d7ce451be865ccaed774db9f48b26ae3e30d10b255f9cc2c10b2f979e12f6a0882682e1260d91044245df4c91ccdf2341d19c84bb73768a2130eef084520af779906ab9aa9594088f2ebda13f63ed0f4ee6fb1166174877d1f94c8b5f30af25ad8849c676d584789b04625cd272056bc63021a9429555f3010baa20e1bdf5bd0abfcfdc9e5f1d65cc0ab06e8d24e259fe54a60cdec343aa26c349795f33733b74af14506910f850b5481b8a66339000c4041c16a0a616b74e8a2b27b34a853b7fb166b06584b07d79b01e95c40ac6cb2f79652262965720529051e0516e7ba524b3b6773605ca99db549e9681cb1c954527f9e4ab229f313a1a705c73f7e62b80b2e420f0c2777cfd19d161d734ca33bd40797dd452ba54b9d2d1dac7f0bae7a9be74b80c0f0984f45df2686c3c4b84258022486c370fa3630ae106a0a250001eb8971c1e8b0dfeaec68ed1097db5698d2d9564a67716aad3029add3bad44eedbd374c8b05af61d740edb2f2f175cb3f0b989e92cd81d131ba63399167b66e49775842becf0689805d51a3c25c2490d6eb685b4ed22941523a6af3295dca45aa7aea466c939e9952f24c8b43a3c400a83ff7743647ebdee6b9f54ccbf50a078c60c6613a8d920315ad7badd3f5afe1223b60ebe4e51738d9ba6591c3827feb5a1bbb772e96425a43ea59b73c1461d03221ba734d24d62a25254d99727b525732583188bfc99153535333c526738d29c90cb7d81d52012db9204158d8995b9ef14cc95784afd4d4541d39ba73317e614805b49841821cd964ae79220b3e5611f62f073daf47aef9a0483c746bd3f1745eb0c95c3be9cecde11d6d56d2ca4ed25cb7d53a96e9590f7b050c75f2513adbe407cf2b8b266479461bbdc1c64938879794bc2742d8cf0a0a4c88a802556b8748550666b4d30a9140ce42aa58832944f7406aadf507cbca0f9abb41b8c6c355aada26738d56cb65aed56a5e4d68e32c8e577b9b5aade6d562b55afbca9ae7aab11a116cf2abb18fe80bcd150dffb192d8648619599ce7469fb95fb06f8a4d662253890eef6c7933ec4587f4f8de845d170f8b872dcb309b9e4264cdc4686dc226318ee48f69a213427615a56c3a31755284fe09f1a2ef85625f9fcb5b97a9da702252c02e08a4190e46a5e8a73ce0091055bcf0c410342c3521c9ba6b84082dcc408512a830c20635f8e921c7229ed84a1f624448e992a728123ea938d8103631ab34e9410552f4b0d4a5e99a1e0b3718498189932351bae02db80b1d62064744984cb8e0882894f4c04005382891c31250a030816152bc2596e8a40e144c90b083104d1c2142861d1c9078c10443284c51225344114438a460490d2d5c129c4a47546981141a8c48c2a566fc5e30faa5e2192ad8b0bf53245d50276b7a0d7423e83563cdff9bcfc58a0b66b05539f221871e3a050c2314d9d1a0430f50ff7fce4fe89fbb8e84feba5d84fa029a60e2031334784283ea84962a8a308102292b30a9095f3802c0f90c742e549609ac0ac6eafb966c12e3c220d8e700d1afd97abdbfb272c5183c5ee57436cb60c9d3dfb777385a5e471cce8673f1b7d161e9d3599ccf1fab08c431ed2cce9ded5052f5d2f19cc481ab3ade85837660790084c8e1d6f6d416c9b9f8c426314e67730a53a40831174c419bc98aae57239b2259c975f2ebd40a52af3158d9a157fe8030a4362affd5bfa5316badb5d65a6badb5d25af9f68e74525b6b6d487728afb5566b5b70eb72eb72eb72eb72e372e372e372e372e372e372db02c56dcbd26d8b79db82bb6d39a2b5460d9b4363def020208868d6a04f286e4ad2d788dc5341fcea1725bcff3c3b9e7e3d2e1b921146e28d594681c156399511d6a27ac38af06749bd5cb4a335b25f8036f9cab9dcf21e8ceeebf5a95422e5a107a01723d8ce6c122bb331d885edfbf3b940d62dd731dffdea79615fccfe5c58ecc2ec8fa517ef44509363afaae5964677be070fa1729d55e520e6403e8e39e80a2184cf2542cfb7df854f3c85e7c23bdc73eade02f5b3a9491275fd497f3669816ea7aeabfbf34f12eb4ebca46199a809ad3e1d690f5b67754b3c46bb6ef98edb9ea5a6d82b20f8c76af523f306d09eeca26f93b90cd965cfb7b11c48d5517b58abb3b9b779bdcd48b4496ae3d941ebcf6e11b31e888c6a2fd7d67fd8307e36f9321c846318089736548e774a36f9b2981d650cc8b6207ef6349bc3721c289bfc3a0c23f6cb5840b338e4cb5e6866042352d280efb97125fc8be1b269a73de18ca15a2dbfa8da4772ec987fdfded46b71140fcc33e7791e8b2f30a27c9eb7a8ebf320861dd3e90d28d6c9efe365486b485bb2a8a0573a79eacf635cd8a756ab85d49f9f401afa73f0ab46faf3cfd3d29f7b9922f5e7f9d2e8cf4fd4c6f31828bb721bb64862d7a5bae31dbb7c4e2717596d2d2415b2802eb2ce9e8021092b648535a18285daae8b87ff77ef585da23f87c9a12ef5e736f6dcf27e5de40773b2654a8a1420ce4ea5f070eb2f3a95c24351165a9699c692744f8b4391a834f5caef0ecb945ef965aae00da04d3b7d71b2b9d73aa19e9f38863d06fabbabfc9e9587281c448c426c7a5b629e6e903061d3db9227e02703884d6f4b683d7b34a4c06d7a5b1294b3aa06fb9ea3941dcf1cef98666cb06d4ed8f4a6644acf3c5fc08e90b50d099be4000e435ab99755fcc4c1d6ebab9f06ed50adcb744f3b569ee5ec14298bae77d02952965abfb9cfb9b7c9ecf547d7abe77d9b92dc26e91fa72df2846ad5ee22afd722c19feec14c70aeb033a2f38a98576c598e9cc05d2aba0f1cca28a57b44e850cfd3f15a96d3d62984fef42fcae739b52b1c60a45ca253242d40bda24eae6b2368d74eab903649a73c946991c24ef5bb63416593b6bc3b6aa3f2992b9bb452dc9d15297ae516f7d5969fa3a94de5dfb77725ef0e85a2deb7679feea3140429583b9d28a794f290d2bb7bad354fa552f4ee765cb7486ac26664b55513d6c9bbeb95674d6d49fa7ba9fa8249486b564e564d487021c90c36fc5e01f3516ab4554b4c0b383fb0f13cb9a1600537a8c416f0e0461b1a5408952aab603a9c1d66b23818e7175a482d0e06ec08dd02b4a656cb4aab330babb5d64a820e5973b823db4977544763802ecc453510e28804c1e1ceddf943a4b2497cda78aa082cab0413e37bf189a9c06295d80f9cea9ee789f179be4e7ce2338a4d628c0b67a82239639c63f948f6e1d3196532c7f090cfa1b4c8e8c9ad9a407e3407c45110219fe3e178541dd846bf87c5662c168bd55806bed8901576ed53e2e1b0a8c7b0cc3e89c562b1582c9663b15cc32673ac88a8eb320ce80a19de624884563e6e2743d031c72e3ca5571ee25e5ec8b99e508d54181122d4062b86cac566c5a6cff9478e0133a072c49379a88d950d4cfcc4da9ca735ea571cb2d96a3897cbe55cee737ad88688359009199db5cf76e4e172a66ec79497708f8725032446f8c9c73aa2a481349c44a51e3c974311891f1aeaccc972b30a3b4f199115139bccb973979ba572b95ccee572b95c2e97cbb9ece26962933977c6cef33c754c9dcc39521b754b918e40d22dcf495969a756405e7a323f7da007bbb0ed15835168b338a40e9f581c9273bdeaa281cca3dd77c2807ae5f9c7e6506b12e5b250467214d4adc89a313799694a46b6239cd92b3782b1ca4d661a3fa21d99baddc538080d0245ac00d7a3c7d2a675ab6328135657beb27e50c158edef3b619fc07b307f2ce36b8f1f0ebbea783cbec6ef5eb18a4d62d3b4384a56e35c3b5851857854c524c81933e8cef36b574ae85e64cdc468bd128248378ee37831d6c13a01e8c8d2ed8847289bc43a98d6e1b03c45b1724227e9ceaab802fb442c7c5c7e38540f8bf3c2294740d5ade094d75d65b2322b544ffac136d0a7da5c35f2d7a8b35fff03bdcd73f235f2076d0de7421750f8fc3ddac945aa5c24d71ae752b8960c2cacfd1e592751b5fecf5f5aa8540b55a475a8965ed2bbb779eed13e479f6ff39cf67291e38be4a38a6feda2f5d28ea8229c1d7f8a1d13d0c240e51b068375ba6593295d4a6771327f174a2995b3e39f6c4415e5f1d60c26db5a2e030c7fd1c286e11bb7a70432a81e39740e94cf9723e3e41f39cf22c6276eca3f41281eab9e5d1996c122b06647ef63a07cfe2606eaf59ac95806e583513a3a38364754e5e8082046072cb262074bb0ac5a499bda1400e6b43bb165faad7688ea34c58eb957d77f533f8ffad730dfa19330287f5ceda93d65273d18ce45074fa5533905ace1dbbf630a306691bffaaf027157871520add6dabb81765169e9cef31cf0a79c95b37256ceca59390361a50e2c7113dba73f7defbdf7f7977be9342bb136345a75e5a25b24fb7439086deb9745f433ac628da49362a5e5940771600cb481486c8e260271d906e2b20dc4651b88cb3610d72dc72e3d0371bb04631a3742dddd52faffff2a3bdab0d26b4d54df58976578c9e6e026a69fa64e6946d22da533bc9bd158e7a1ea78a7fb21e4236cdd29cd3627ff7c397e397e498e5f8e5f7e795d19f6e5e3168f21bf11f063ecb8453baa4c0869cde3df3f18732f63ee65cc69cf183fb5d60948433ec20eeaa488f9d3f2135493ad3dba93790e9894a4a4b4b4c4946dd67381b19a512e7a5a51b7fc69f949b6c5d8926cd00625fca7d6fc18ddc99c72ab649b96fe8769895a269207754a69b0e49c33de9f8ace70bd26a85fce9452ea1540ec98bfde9fa379a79c522e5a1c4f87b815a39f5a958e1783e0513e70ffd7cd073c3becb8ead895e306b17f9eab870d3b07b136965b202fd83549b695de9ba2ab4e5b23e7e6b512d21a129c89ab992ebb72f19be1b22ba72f3c17dea775a03c04f5cc96939e690af54c155acf5081d23353a4f4ccf9a267a4d87a268a152674529567609d478b8e77345842183d03458cd8e2bbb4859e6172a1679e78a1679c50e99926360c3db3db756557a2d812ede5d7f5339ad92cc711bb72f2599ad21db1531eb2c4950c0cd50b172d626058acd8628a521bcf2938fb70105933315ab3b4e85393c521efc5b62a0a59960baa8e673db9e21098063967f34a1699844cd3cca6699aa6699a665e05b1496c9ee697b379258b409bc4e6cce25c9bc979e7bb5049b758e9eb64085a3859a5c0cca970fbe86d9fd212535365e1feebc3aa8efa24fc09369961b60cb31df11cbe2e534461b7dbed7641769fa3f3dabd7638bc7bbdcd2a072bc43ba1f37aad7ed824debd8262d7f372edb26280c522f988c7d35fa0f37add609378477edf6ee784d2c621f98b8ff8089733754736982658fc21c5e757bc59ee42c1c6744377563caa8e14ccb66e3a1d9ff3ca420fe5b935e46dbed6a0d1fed8f18378d80f54835052361913532980830bb7247070e186444f76ad7e642e424fb5b5b440b1af6da4366a6d61776d376c435acaf212435a8205a4259ccc45401239feb038de0afd6f192022e43fa6ff8c6edb1fe98ef55184a21e707bca6f16bec7f377f9ffff7ffdfcb5b063389975dc23e0c1135bc810db29af595d7e826d5f5f9551059511b4e003132756e811e248175914508860d0a16e8087edcf0ff0fd43d0dfb5e291559dc7f258fed2e1232c8865c325da5527c3324de74f6059513c8b0526a3cb5201b398c82c2426231cca3e27c3322cc332cccbb1ac425e0128c37086e936a983ffc378a7460daed961933a3849f67919834d211623599651213c5996cb321d3bb2926c32cb4a8b437edfb6ba23db2ff90b03169b38cd1d66c22109fac14ddd28d7c864cc78418c89e961935936eac870d6c1185794f1f560b884b486c4ac1dea0b4216e3978d0e6a442c46b16f181fbd8468331c5e22db6cd4464d3a64457b7ed6f33c89101942e4737ad8a88d9a94e7864dd6d0c1dff759242a8c554460aca8f83efc19d9243d797037cf42a11b10aeef1bd051af5c87383b299d7c85327042338b92a24801063424e087235424a15284922d25d071934373769c68276fc6aac5a8082615826628390052c10d8caab060090a27546179484615156f6e743ee041da0181b423ea2f9d22ed76e8df29d2ae68dfa4f0b33833313ae5d4feaaab72dc2076caf5b8756e5e7093e4b338abcfe2cce0b7f5de2b850b2ed010d26a3f876c579e6388fa2b1f7702fd9ff2da439cbd4f25034ff62b3d7da85dd8955f8dbaa997fafff4d24b2fbdf4d2a717638c6fb5ffa997d326c16e01ca575c16f79f5e7ae9a5975efad4d6fd36947280c4a6515200d4a310d5be2833a04e2dace7546b0bece25f581586a1532f2b605abcb0aa2a63573a869e71e96f9199467f8bbc35fa5be403c0dae84bfe0d2dc698999999998921ae2effa72ddaa22ddaa22dcae94dbec9f181cc6539470e3de39f8e74a4231de948675096b8a23c090e38a04183060d1a1c88ab1a5ac7c68d1b5a001dbcf4a5aaaddae64befe0f0806ad5566dd38300c8c0e02aaed2dde8db0a73bc8faa0ac9cbc97cffb6f0df6e53a405fac5f833c7b8ba5ef4ebca759aa36f8bccd1d1d1d1d1c981a1a2345a40d03c18e34e29a5547f18db3e001040000104100620ae64bade81f2e9d104d028eea369b4eccaff2ff0a5edf81f7fb8437bad15edf15c403af6f5e3e55e0bfcd0473fe7b1600b68f7787c87cb03df65f880e7711914900b83c140a95040a8adc7737d6f737bf4f0e1c30049ecca6f6800940fe596e2fed4007c8792165af87fddbdf7debff765c2ae9c7699fef8628c29e5f7f2fbf6de7b2f79efbdf75e3e81beb3a2b406194a378cefaaee0b4a73c62ebc0f645e829cff3d92524a294d0df56d3362d8b457fe351c4a7c303435e09c5984a7153ad47736eb1ba553a8fdfdff63dad354a95496752aeb14078aa60699de9dd264a121a52c4098db9f6686a7fce9cdf705a7aa8b69b2eccafffefdf25ecdc2ae3435e8dfa10c0cbb9221454e7eb4fe8b29970dc22afa8a6e9158218b04088b647fdf6ccb0d3720212252e19c5b1b7fb6e70a114458885ab0028b93224360c6e284c910967b2f2e3274f50cc4c50c612901cf86b00441a404516c6868686868e865c51a203ed5db10d157912125980cc540098fd39c2f93a159f6fef38727f0cb1e11d8a274bcf7fab85d86907f210fc3560f8f874cc7ae1f2f1232ad56e67aad1b1d3bbe2ccf074c3e183ab54622bc033f82311157e19fc93f131ee32970127014781037c247c04f508203fd0f711378095c04fc8717c1f8bf0ac6ff55fe1fe3ff2a355adab1c88245600d2caf8659fbf7e2ff8b71be65b65f065129d1850a860c2b869e9131736f93dbbd8dce8e3a1e5adc913de2bca5b24facade5a2716154abd1d4506c6da929dd89910116c9006bdd721932c012cc8149604ed300106a7c82252db4b3590f8f2d5df4979cd2aebcd542f96825170d0dca472bd5cc60019616c8c26268982ef54f529292d2d212cbca5822cac668c6154de7298a2b1936bb32ed762b0d5bc9d8d8704083460d0eea924e2733d2c0a7064bdb64cf5ccde1c7377bdad39ef6b4273eb26755b2e357f3a50c69686dd240f968a51adab46103e5a395b44e9b375eca1adafc94bea58fa94ec1e153f51dd5c0a70d7cea56add5f23bfaceef667392929494969698b4895d2fe5d7a317a86a0b6ddcc027ac8b86dde8e0050ac96444b3aa84f6c2812486437be07da5492acc8300e4c83122dda19d4b40480686ac2ab56143d03dd07c841b7c3fd4264841203f5e72f44fa9cd529ba5364b6d96da2c35ac5ca17cb2ebdaa687d9539ba6c5f91cb0082c230096416ef40dcae7e21cf87eb76fca97844f7ce2f3fc8ef295414097cea8344dd9e62c64a30120200843160000200c0a850443c1589ae689e0e20314000d5c7a3c7254401c4783f14810e32808832088218418600030c61043185286b200bcf080c3a348d7876db866f6a26794e6ef248cea1d83a763c637ec943c36d68f0b39ebea55b918891650f9c3225906efab33c0e64f440dc7426f6e9d7126712937f6a1bf3f450f7d390acb105af172d3ad4e87d9b9a2388069995cd65978cdd5f0038ec7a6a88fb9aa379639c482a6c9f84db5bb991e417416776e16f0656da0fe626d0726153959a14816423bc979f8c5f060f21d0b4e1e397dd7c4383e6d686126fbeae6952489d050f8846f4e9e2d1261060b9ceb362b6a3ec027e47ec777d6db6b9b127f642a4c63b06175d2f782681322effa4a8a8a6f6044f133b85384a78be12ad50702fda2244670dedfa227d847c62e2c7b1afa0fde99a92df50feca93714c85edfd76acd7f34383b5c417fd087835b36e3c8e965e8550b3993e04461353a015f086a19a495f909ab742875b119d0c4a2fbda75b70ab607c0ad8c6e5fb8392e5f0ebdc005de02ed24ff6fcd20c997b8f6c6d7db1e430a5779f863d0c28e35a8f4cfda14ee368769053a2b5825a55b2db2d098237c808c0deed3326138fc21a9cef8aa72ad5f0ab446863fcdc2e2d35bd34f48075a2b45865145eaf84e9a21f15193e5755b24b519d2fbffa95e51a80019c946fc84d272c1482d221fe40663b2205feb86ab6ca6f1438bd2a6042181d17a806b13e27a9dbcbe9ee9a3e1aff829fe5fc6ce48973ee00700d57068d41e84c160fd46fc05168306816561adc4452673c011093fe32acdfa243db0e4272d120c1b4b3f83504df40825e786eec4f13dd0be0d5ecda3e5e233d1eb3318f07ba4a8022b42f315c3d2a6d0667215d52927eb4d770932b3912142194a6e3a3fe5325eff06575a673157633491f2d49a737288c49c1c205792ee1a24a1dcba011429682ef18e2ac93f8d6a445ee0b01f10f58c825dd6ca0387bf4748208b49e8210a353e1e63f30478d9b47b3085f6d50135cb902c22b5acb91d62e1cee1d8e698b2c6194a453976ff23b31c6cffefe04b7316a6eac62672fcc05590aa246f98f5ce98085956b3b02abbcd8fd26f818da0f33eb5e0c26b4d739ce0cf4714c2e17b816e7a6c5352da7126c9fae82b21043e2702f1f3448116b0a2264f595320db095ff032e72bb884a0265f375ddb5194c09e2bedf78fe98611ef60c5943c71ee658406540c315271e2d4c60f1652386a69cb9678cbcb227831c8c7c6eb30fdad87e477e5192392f90a078f73bc7cc4aa23798e5c9911240e01b995ba0a749f7d0984a9463209a6a9c8a3c63fc516638baa5fc221bd194ca915e86dc1bad2fc2a7891d22e6ed90e84903f595501586914bc7df38a91224b44888b404889bb49f2ea0a6bed066f725c968254acc2d97812b670acff0a1545d25121250fb2105020f84a3793996a62691a200d1df95bdece1cc764fc20ab3b2c5c4a716886e3e4300b86d628b4151a0013944c99c2b36a4ee63e08112e51a3904f132fd3b7e3a54cca77c168a297c6e9435e9e1d6871497179086592fa15cabdbadf60e62ca2ebe7d6c2e7fd9b56d407e71dc0aaf5d0455f3a31406b0584a63c3758cd0f354cb4ca58d7530bf3a28a9b52567f03e61e1b8984e89cbea6722e61b8de3d94d646684a442839a4dbab3c753d41e18f8e0facdc3a140b528eb648931c481d8980bd7a5a7b11046265370814837210353736fc46ac950747a3ff2d987aaf97fed71b791800fd82a04e6dccd5f12a1921367b3cf07496cabe7fa3b0d3e880d5077123fc6850c5482cfb922937e33175b72236fc3f1225555057e5f961344692f637e867b8f6ddf723a3e03472cf475d518eb58d46395b80f8cc62e1d61cd0da3ab79782fcb1edc0cf4db20db6bafc205cc8db0b13ac87360b9b61d0bf684151d9bd67de3ccf595306b2cc012ccdd444e169e191d3c3f9582a8bb17a0a68e171a3e3a414113bcab73c90039d36853e97b7fc9dac6faaff01fab3af7aa6d5989d34b4b6e2f8dcba433a11ee55170343d8817ba51d659e17cad5e1fef210495d559eaa64b2b651763759cfa6694705b817ab987185cb6e0cf024b229140c71dac1d7505efdf30a26aae4bc76eaca5da74e95a83c2de77032179d7697e54581e2a4c8810e566f07ee876be73237f32780efa1d0295bf16bc037a53ba0c7c853d5e85856027efec56927c659d8e2914a34f5f524985f2fdf49b4223439fca239facc0c81e0cda34ed2cb8695a7ab855f2460b68665d1163b259beddf852a4caeeb3808bfe8a7242f0c3ac6809c2a196182e6e377a7324230ab932f5553f1a0d3fed1c88688bcd156a0415ce8c8823b4a2f28b9411ba8d147f71430c1115bcf5845cba6156d88c9460e58f8b70b0806233e29a6c934c3047d5af46065055fce000d83033d4a7913c08bd6192c2064ce92de9675052dd4555a4828f236867597a9a888afecfe02a2e4560b696a2a74a947f5990cca3ad239bcd8384f6799cf80eb96b2c63cd1b372c6f1d17e633b6ae4778698bd040ad9e92a70ee08a0ea58209ccc39d9d9cede3037f1e63a58c9ff2914f33c5f14ce79bcb83dd90bbc0e5358757c1a0808078b9dddf23724bf39f877983ea03b95a57081d3e8751374de01eedbb87b072627070bd329931af602355e62b2f68a5514a1dd8d653e52ea713cdcc31d372a9a91f088b8f01314af0d6642343f8a9d05ac479d81bf27c14f1deb5ba9a9c99fa2a5f2ec7dfdaadafdb17a614934280e7c821a9169e5a60674062b443123b556ebbc7639f49bda8182409060a97101fd43e60f5e64877641a562f7883d322b809e2040025f91f1c999b45b9f2bd1258cf6156bf60b1f690f14533f96a9340c2c2c3ac30c3cb7ad602cfe012a428f4ea0993ff6682c3a2f3ab8cf36ee559b90f63a2c675baa47eb8d83ea691d4bbfc63d31ab67a46f385a46b5a0923197614e0ed0b6b6b92d64ae4f4843346767e61958ba0ad38c3611ffaa6f4ed21496ffa968d3ea1e4c6fe4a2ad98edfe3c5f84b6926e9bfb3cdc5fdb75a8da3a20c2d3182b647ce204e185ce291a7a08c28308d9de83f5f643e854b0f624da1993bb89472bcb84e1915620fdfab79266c70670daed2208386be883848a1cbe7e54ee585331d25aec45106a60c4add2ea3ecdf9252d4ad1ec5a61f42206f14f13ce6cbce5e370ac132b90e4757cbd9ed617db8b797158d1a0b5e476c694813fb4897d0f44a91a992e22c94d0fb97332b3002b7f4b249d48d6bfe1fd529d26ee25daad2c97a31d84cc822514a8a013b29e81dd3e36c4991cf21777d2ef38d426a178b654b849e4712930354d1dd12c0b3ca78d49c346bd09a7659528ae399eaf3537e0de931019d1647b0f12ed2c6307fc8390852c48cb1cd1e5efef4c40534b41448bca1ae5bf4cde71ce6803cfc02605548d6656410e5a182e1af9b955c35018fb4fbc115d7e5fa19620a21eb4d596e043b3ba7ac346b1acdd211c0c059b86d6ef80ef11559c0d1b3dd983af460dc9a3214ed45d2084551fd0dcd2c4efcc3912c0c6b3cb3658cbc1fce893a3e5625a8925c4658ffe46570e9618a95efea9fd47b76462415c04c1c3ebea66d163a1b89c508b02bee2aff6945c17cf7a9b6f3ceeb0ac277754fffe7c3b73994e19cb537168486fe3e5adfe3b2d3c212a70a4783da36c23c15068765d9e6846302be811e2bb8fb11600e45c54dd5a14e8e42b9a220a1b0d386cdc7a0b60d3ca1deef8eb32012f00bbf09bdff825606b1da6e995f43fb9cfa439b9a86f29c9be8fd50c6692f899082418d4e952bb4cd717a5c2bd9051e48674cb04c6814497468a9cfe568d3430c6781cda719d720da97d5c5211b48288bee2ff63caf7465eaf16780eb42ad96d70d5f5ee568352bab429baa2f7c6e89d6d9dec2ea726edd0952e7adab1b09d39b9f1e213e79a46cb6974523af05a116fb413d98acb1b3bdd583011ca6944e61718962ea982d7de624ab114eae4e3b13584f38f3a4636ee13de1bf898751837bb2a6e958b0eb4383369e99bf1c15c5371dfd90ca549f4fdd6cdae19d53099fb9b11cf532e0f62d2a6a1641319250695712dd124d9ca9618c672fbff0a60168d0bac4d915a9343dea37b632c90ecfc60ed55af7fa9be33f3c17ab562410e9deab7aea4fda0674080f3177155584f4af7842f9b98e4f7c815a2c8b75017109f08525f71221d1b03a79f37a96547483cc2f1c8b999cb5f4053c708181c194a3fd5c009495c3b16c5c65cfbcf8be71ec55b18a0df2833ee28d40f01b9ca4ca06fbf6fb95f68ea17b22b09891af7fb09ffc4bf0d4e5d8e817e5ee8666d8ed0207b2dfd83e3dce647c3a8447a07ddef6137e8c4a58f5505b02a7146bad60f9ae35e4727935271527d88c4a69acaf1fa9d6d96328c7072993e6d51fe052a0d2b91c31228f26f8c4926fdfd5814d5e2571b7a88f30bc5291b2a5443f4acdd325b8e8fdaebae0bc10eaae791606e6762e691f7c89c5ead19077e163dbf251b4f97894c842a97cc11168dfa6826cde37e89978763a841817c97a89d104fba6613f6057fa94928c58fc0ad60292c425061ccbfaed88e92ff7db1588612918c3a0fe6e3f672331f6506128b358c5225e8c97c34c3457bc4bc68500e0f56b367802ab40b5daa5e4674eef0a689df0c609ff6da39b4c53e9e54a628c046c338016ea22c38b62b3d953ee3138afd1c2b0220024512d1e45fc4c634580dc0bb960ce3c6fcea1c9a39ca97a1280402902f9d231c46036a79c4e60dde8385b0e75151f75d13132e38e975b9cd86367e30021d2910ba589198128e59018f88b024c19c010ca660dd3280d54358c718c05217d60d0358ad1069a1645f40f809e8940ba86599e2ef3ca8d4ef7507dcff8a9e1acd5827cafa1c1a826973a91dde5d8ca69be2e6724d55b0880e869d80374d601f98c0d745b1e10931d527d1cc6424f0cf74c5891f010c7e62fc38461b2cd372efb790f51007b0fd8021b52b41f1c023579af7b651eb67c899ad6f183840dc8216df717d896982102aeda7be0baed70d848324ce63bd92abca2ef024b67951df39e117026d4a8a9e887131b02e2e83ee0a64ef14f288bb063e3efde72c49f2ad6ae3d28c1d4c0649eca88ee686ce56380c24b809690a573f8b0882396677653081bf2214e2771d5b31ca10f09869d84e36ee7b519859cdf4adb5f860292c78dce3e45da269b4209480b1e945569978b566ca861b7d3fb9b574a1562cd00669ef1467076e3f8bc344da1407ccdd570d8d8fe5c9e00d4c582e1b50485df4b08b165025b7b54e3db41f7d3d62b3e248f2820117db23bf97a6d45ea2fd9bf736f9dbfc28a0c1c25c5db3dd9cbb9df965d75ee912d03468b049ae9cd8f5dcd3d422a36792ccd3099285312b5fcadd3a246a69d91232ac6a12572bbe7fcdc465bbcc5d3545436ea9e8b8002b7aad3316d5871d2f291ec80be0a67e5e4a681443714a3e14cd5076a59018468e48072a6c84165614919ab651addedc4b946035004b24871fc0b62b0d930d02b789856f42325d5855681c2efd568ed1cb21fe02f55f4379f78e49e02656a43d0ec9aed01486af0b460b7b02b805f77c4980fa58d27185507627c771a687ba137d18a4617bc8fdeb5ed501a3662baa64203dcd785e68a4894686f34ec754cbc869024a96734af951ba0715db1281a93872ad39e2393b08dd96fcc1408d07c9880c11a6c6dca5514fa585efa84c13a8e04e272c9c5932cbaea0018304e8d5e15dbb136bb85df35a41110186f303d78cc780a48499f981ce5c5aa13fbcb0c381c3a6d86953af47c555aefbef33bf85016cc9b09f07976f2ae4200472ac360d4acb7c565cfa91d180be99358b86ca51035573de782b9e810a84ac541d475705a0d68ec677d14c8e2120392069195971460f4ed1fd438cdc74d8a02499b3b035c59818062e85d690315bc0d9c304f48a8ffa2871952f628ecde5d1222be8c05fa9ac735a62d6319c6b716927864343c42d1fdce1b687ff1bd08f5f5f4edf150c05fe82953f8491607dae024aa8af6b1567d95eee63168b6b1e0e89f7427195788dfd90c8ea2d29aa31a249b7ef461da7290b657e73b33e416edb17b2fe7bddff9e13272140a1f7ca5510e224c3f94547567ec66f41ebe0df198ad23a2decaa7d1ae52923d05504d05cd985a7abab18fe8d75db8fdf64a55c9a68f367af7844e121f33c08c97807cae070723bcab10ce3539971dcb62201c0af114d6fe22e722640227b393b88cd469a51d9daa3f1b63b465e4dda1d1cf81a4327b97a9c3a114a18897a4afb466fe3f7680445f4cea7eb465845cc0c848c1f3d1b690b4cfdd42031585c5e976b2fba7b93d63eb34369c44b764131efa3412628d25601f052c3e5f084cd287fe6a52d0d16186a9b81f58b92cc02b88d0d73372897e15894781e36a9320ae27651adcd7d6beec5cc257f5109be5fba8dec9bcdae340802d45c01cf2f0c6d3098cd03848b270b826d0583bcf7730e7c622eba1a663f9f783c053d7f5f49a51b5e3ea185f2cac929f0f1d499011180520fe6982f96ddd443a0b4d5fc3d118eb36217866955b3e42a625349167e8db8b20a84615f27fc1d008030ce9eda68375810c4db3dcd0c1add10e48d1971841bf2414d2071fa743b31940cc34caedc32be528e533f6eaf151454812f5a398312d08f425209000fc23117a6717409d93461c6f69f9d90cc2ad43ad6beece31ca6236f2608e0db45ec388c19b343689bccc8fd32a6ebdfc9fa9c83e0bf6117178fe3351442865d4fe92594c3c1ebb60bf490c3508608a551bda22cac694c245e77d2ea1d8da8595f3d8884883dab45fdc0a50bf0893605310bf4872610dcd88d21e1f1717b3dc7005da1e939182e50fdfc874f21df0f5cc184c02496ecca431481010c164aeaac62b652eaf3c02a28ee640e3acdeaa16b6c6ee6c65595ea15a5aa3f02b1adb4478060684c365ddd861533d0d527bb3144365890dc3695235236049dd47d43a394b9a762bb2af0a19c249f50a75a42e551601573f0b96eb3f131c472f3024e2c4c917426af892c08882c82550022e73a0dd0b256c8af8401ea6f129b0086f8c38a1191817c8980e7ff314a4dc3775b2da7f168a18484d9d6708d5314b7431733f989085183a7e2b8c9d778b8c2eed8143295161b182258f976277476abac09c35770983683fa576267277a7dcc1990bdb86055e3b26ded5ab95b50c5f582e9f32d803d781f2079af5ff9be5adc6fbb6717c55562ea8e6e9cdb6b10f30f51e320afbd3bb3ae2e8988af3cfc2ba10a989817320e8dd0158e5898ac782f3f9640fdbf6e0454fa4efaa1d884650068bb01c002f943112301a575a1a91088e897989a069ae7a3066401cec0e89d835b40bff34931dd9aa5dc73dff33ed0d46e90e2923586a23844302a3dea333911854535cbb8fc8794be1d6838d171ef24fde35ca2baa1e710c476faa9e425033b3b357da12c7d451388ee46fcdb80c4414f26c24b70ff77f1f052aa6868bf97b503e5c364db2881dca2292caea2bc1e638de6f890b4926187dce4ce293f67087dd8232d1b8d522375146e3f5c25e4a8315ecdcc04d8fbd952fc5740aa1249033e89b7bc5dc15318993dee5a32e42a6532c1c6feeaaa642fb36e1d139aadc8073f5ac7ff2da11fe166dec95e2c5751def14dd1641464736d52c828fd137abbeeea155e43f534ffbea46bbf211564c8d70a5a87b4972040683e838efe101959dda41519253e1326f743e03afd56181e2198573025717685a290403ae800060d30b7b4e97021d6e7b5f66e77b7b4facd27be27dfb094f6aaa28074a7acac22d9aa5ef5651c818d797a41eaf47e545432011ae42131ec7b308a520d46f0622c53386abd2c515176729a61b722f7e6657de0798b00cf28d27fc2ac0583a0747cdb1e4efb2ee341aba3cc3a6e0e71870c9e1ca7535251cb99015df6871059f684435041a47045cfe8f6b699989d734e71175695c3a4048543174483e16a83b41b434c4e0262bd0579eba24a6fbeea3d0ab490b797b7c6e4e545379ebaf4ee621b578cad064b590aabb79ce22d2b68e8c2f75feef32a773fc5a220fe66478d3aa5deeb59716281de5390a39e7dea169bc91f296e934bc2624e1bc3bacf4bddadfb11544f41dc5eed26b61d7e5ff2d1714fc4af81c1a7b20065cfd81926ef1479719711669ad92d0f810c07dcd1c6709708a659d915965cf6c91c43d9a0618c9d63c05fd172ca8afb53eddf14d754d5c3e186e8c8e58a72d49d9a5aa4566435848261f4f2acef5ced9fa185668250fd31321cbdad7d45081f7ada37d6f1a2d2e9a8150afba07c5ba569819ec1e4419359eb9db10737ed6bdacf1e6618c4bee8e107a2ca0aa7d990942d2d207177112c4597616648c4f1291b6b5709d65bbc0bd922f4f0162fadc1f8ddf830214c255d6849a00f00dbb9ca3f82759dc77efae4e90dd040d75ab095a8eda050a07c98c0f3775428d686c83047578b2cbf94e4534f946e629eb87c5f749e41767409a5bd99d4e6eacd68d020c7a980b97bab13535fa8d2416fe6879a445f0baaa10ae95990e816509fd4fbe22c988af92ea5e2637cd19b7a19314e0a31e41307c4d028b33a27d1abd6442539e6843f6bc88ee5fb50fe3333d5066fa08068817093c7229f4dd12326234f92dcb6bc17eef79da276ceaa6d72ed1acac3dcb5f45faf6e2c713e893dd1ef87537bc19945bc22ca8f5525295e5e3fd04463fe0bd4cf13bc12cb7839a26b74c07d814c14bbc84eab315c09651a9607379a732818034c80ceffb3fd8e2e8be4eb3e6a3136aa0b1a889865faf2ed089c6c4f49ea302f4cc7f96b4fbfbde3dbc2963eb48eb1790670555f404fc9c290ae7aebc0fa01214754ac1db8e7caca7e6e510e8ce73a03beb95e689a548f12dff351238610eafccf355c091b07c929d082b5fb57ff49c2be674c34d2fd9d72ab0caf0c0055a023e6613082056e84c0dcab0dfdfa25719b499e15e4ebf747938c286aee8c5d4ffbbbfc0ab1c7b5541075545a368f289197481f086b00b40bcb20c2b2e398b14157c9b65652c31c3f85af9baba4f6b54410615c5c95142318a8736e01342c095e2be0b997fa2ca674842ccc013371d45403b09657ed14bc45e17e74cf25aa16a66b838564798391efc42cf29c1b72ea88d2b3b4d5c280a30ba8250e86de255b7b29c8996ab67c56e9c0066de216a5e086206533b3df17ef16ee0432d0fbabd48c5609a6b761b18a27ae4ec061367a370ceae5dff11b159a6cffe83efae41f1b0e4a8b3226a69d35b208866ec564f0105d9186743278c74178424e57e435cbc0931fddf70f00d47ec67c9150cb3046ee2fb15cba64d575d09fe71551f9a540f13c3cd0ca5fa8978faf650ba5e7ad2ea23320c6739da8687a6919a7331732e199e8bae0c932a4dc6b9d0036620c0e83fcd9c373c209f7e9ab3fb65f5cb66a0aba028100fe28f70a3300eacc7de46821ecc03da9b5889b179e5a01f885887bb4cce1d2bffd125fc70f0de79b2a3e9431f693b4977d394be415536c4eec417804f3ea40245e7d4d1ead55309c7803dc1820680f4e1b0e44736caa2d08b5f240ab84be2ded11f6aef8a53c9ed5992513b851e3ea2817043ac02a2aabb62a40541e126e1b2558151189c63f46ff9e735766c89442299daefebbc0c4f388f24550498a370ad14ed2ebe9d5af5594c6563ad40dcd5c92a5f806da52265d59a2279dc7b43393e756c0d472c108f9cf775edfce70dcec2b9a39bf98e69e4b066cd54e0edc35fc60c2703093b271e894b2882281faeae34112a3040ab5dc5c815cd17f4eb3de17f57f1c04b3e980f9482408dd5c6478685c8fac22514dac70ce58afc3bd27d7f18882eeed6f15c1c7b8519630468bc35f8ac3ecbff587db5048e42717bea2124340d4043845b5d85c03c2241117ded9a54cea2415a9f3a04330a8f3b61d1bdfa6c70c04a533ce4bf444914ce8618cfbe13fe05ec9ed13de4725b2892a9b672a1dc19d5d48fb9c1402675b1fd740b25e2dc19f147e1b93291253d6e36d9dd63018eaf62df462cc168ab2142ae1db8155e8761a1b6fa827b854e40af44efd52342047d74cdb48a3d1f4b52b983107806ae25f533282f4ea83cc22d0c34cb9575fa97ca73e29e758779c195ab3458ced87829e8bd1cb0ab1254900988fe6fe1c21dc03d393f3ff615a2baa0a53e83b15d8f54f97a10ba9589366c53bcad4a0152d62bf3895c0a42b022a01c71cbe83c6436c086c1a0a080605f5d87c71b40c4c817e064d96dc7339ee302d7e50640a9129806b6037657523c18351cb040d1267644feab24b8aa4e9c91b0057ea248103aebfb6f195d928f963eaaae2587362b6905c00b95d7b398e7f564c46651c023feaa6d7bffa9ad29c260cc2ae3ba97162ea5ffcee3c92ba3dedc087309a98f4964591ecc4c9b00e709b165f50f887846dddcb9d77dbacd610f11f40b800df282d746b46f48f2f61fba194cc4226c8166e0ae23d391b942038ad420a808b8d83a83544af89907cf381c6853b7e569832dfd048b6f2799c5a927a548a297afb363131daa53e9c7340ef43951f9fe9cacc1e4c2d56a8538bb81bbb3ccb383a3b9a1a787d9d8ace31af5e26e70783453546ead4be58bde577e472ee5f342076487a1f924df20f76dc3baa13b8fdfcf3187dc76841d2f9e88e3525503de569ebaf4dba27c060026aa4c2d85fe90d01d4679c07a02e10e045a4fdf883c592ae094f08bb8e95f26f7052be60a3fe15b5a492f03feebeff3edfcbc676288bc17cc049aec25611d9925b92a479f54c21dcb96a728ee436c6f052e2022fa78f4deb310a340986e90be3d1f0a6400ab14bdc131be914e2f90dbbb5408b2ec28eee610dcaac02255bb4f55c5df372e109d8e1720322593c45998b2166a76624706b3e8febca634d50f041c99d2234deb8be3a175169c732c6c063e99a0cf420e11a7df152e7d8fa31b3eda9d484b9a83184efba7553e092475afd771905ddafce6f43d2c21636358018c437d2d6106b646f7603a8477c1f44c77d1121637d41b5ffff13c4951e84d1d37a22500218986a17bf2cb5792871d42fe25af593063546e3546ac573de0ba1b7932eb14a521bbc81cc4e50ebd3269aaaa8d037659862d08c6523d8c208a153de1c44d30481b0505694c8e793e37101c9dc19f54cc4f5f4e9891cb113ac3045b99b5231b28a973729d2e80357467991b02622989ed63f3eeae89b2fa6d7a5eb47e679a7198cc8a28d5f4e921bc6b95e3ee58e1648201812c50a0802558f183ae7729cbdd4a0d5d60018786f3b935ac1a647213a3704345a539cc1487a7a6f4a3bea06531e171d7285c1c8003b3b68f26722e686e7e42df2668367b7500a705027c07e36b6d599e4a5b0b4f3dd54587cd40541031d25dc098b362cddbc8f9916e69646af2b22c2286eaa09fcdac4a6879b76f30be8e43e34ed444ae3664e606d7179acdb23f12d8fd20d77acb623f3f046126358b2bbf051119693b4a95e21dc8cb4d9fcc31368c519088f0a1e77ae89418ccf9f848f01dc6dd4285e0fb1050fa607da20802294cb54dfbcc70f2b5e448315591bb2fee855d5269195e941870765a106817ff325edfb3f483ced20bfec8926427d56805d7c93c5dc212de9c6b75304519520610c9b0ecc8a3c7ba7dbd003f6933626c3b9a2408da7b5c608c645dee3575043529d33d0fbba04eb7b41aef96e0da0b84d4cf6a18c3574581b46e4141aa462599d8c3c08ba8cfd38061ab68d57c84669e5c2923f08874e94c49a468c0170606695ccfcf47b27aebf1131d2eaa60685478e1a9a65957685bfb10f271569f3fa7a3cd584a7a1892ad6705a786f59dcf3a2f755c0a0986b2f29da81413677b51c5b68e127b5f86f51bafe4570890301e994c4cfe197ec5988d21208a75658c5f4c881b0a326310deaadd2efeb4acf3a64266903c054e2eb49dfe81fd9fcc95a6aa6ede5e4bf79a35c7220c78bc50158b96251ff46439315a280df215b5562d8c3c625726e6b507cfd26cf7b4180824758516e7f7ba3ebebf41aeaf0fa78304ab9831efef809f284ca2b2f4ce62e9125332198cb834b21e7f554608f530f3b539f555b37523a9fa7e3fd58f9577c0da3b847864f906d4d7affd3eb09d36482093bb78692d107a34ab364a372815532017208e549dcf82bdca812e405dc817c3e65558131c6f5b2ac68a6923c57be2ceb1877c270b0ed3a93bfec1c2afc569adb86034d9d2d98e364442640dfacd03e8cb0afd310af177d77614db45ed073658ea3a3ba19de4bbb4009baa8f61df86fd8d38e8b1b8fabfdc80d2a1a08d9cdef185ca35b6f5375fd07593357621b54010d0d0e54c0465b3e5018bd133172d9ca97e09cf3b3c2f42f9b494a4fdef461fbfe653068aa44d312b1ea0f26998e1e29d4e4ff1b1e30a814f0a2a15fd3e377c10f317bbc316cdcd41c028053a08d9f786a8a77315637ab0cbf54aac9241e488b7fa2951505258426860e64259401082636db4b6cda76bc23fb281a45b56d21b6a817626b0e6689ae1e9280752403ef9375dae2e39d04189ca24b78e2fca09caa474123ddc334ce045fbee6b2b05e19af7d25f70676fb22fce14e9fe754790ed1483c4e6a3240826ba23e206d32206340600946aef7c1071109ccabfa549b7431721db42f7e4532acc22dbc230d9c1b26240c7f6da57354141628edb1089a339b287954cd1f280caf0c5aacfb57cfd667ae6110cb8a623e07781f32cbb26c6b4007444830621ebbec4a950a2f2fae1ea418250c68614ec56526979a81bc80189e615d0aacaca2cb9fd5d74439b4a0210ba05cbc8726568b31d2eac008ece7634cbea298c69f5d6f042257b6ec6b8d018eed9876cf22e923fda3eccc313a7bfda08c82a06261377667dc2452914a04b37246a3cf1405a20c936109597886d6b03a7ccf723580a06217dc8093cb194e5e2ad5cf3e97f964021ae3c84fd1b7e911b224b04cdf4c0dfd2e41bc403f37949ff9757732e016ce7bb58ecc1ac992fa24606b4c5e10b475f495aeaceb8f7fcb7ccd01b2095df7b31e4690a3955a5a116e634b407dff34228732b070af1eb3acc53de94300031af1bbecfdaa84348d3402465bc6e7fe5ea3753cb8b23efd30fb849a9b0309fe1800816210a0bbb9c161da0d04dd6300e2e9a4080ba3700d84b4d0964aa1627addc007ade4b1f826fd1dc2c0528da0be062a26f3cb0e04fac27b2051d712dbcf22ebf0bf78006398d7cde5e3973533e6fa5c43d20b69f6f0d42b268c703ae535e407d71967eb6e929e7be04e72d831fcd436a2ce97ddb9299b9ca9975faa96747f8a772aa0973625d68fc91ed68ca165c4895bdd0f00afd118d9632dc57fb3550006444c20f86ea2135c45c92fd0b52c7c3311bf4b11f2eb6beee378919ada384eeff0dfed63b966b091735643244f45488074b2a9eed8be7d0f6658c8d158f2ee010da8b9f97dd6fd69dc2e82838df10ee2d72f449bf5d58f2f6c670444ab4fc08207f6338bc6fe23a30fea1c4871209161206473b008b84c256df44d6baea0823eb5b313ca80d279dbab5d91b652a0b2abe56019aa2cbc8f836b0f2d73baacd6d37eb2074ae9f1fe33a6bae7cd5ef0e4aad58f8670dba3a621b4b913376b7ac68f7e8b430e7149002d29ef521002bd6dc193cd00ecde3125d4b2365c763067b7c4c4dad30050ababcb7f3668fd2d2968fc069aa0071d29a888ab92ab2f1269526f60c1d7daca4ed2b705383022505220d65bd570b156eec26a1380f5b84c1e7e168864438229f0ab3ad5da0ecfffe72e274b6c4937417dbdd7820558404cea8de4ea6f1ba08867584d0c924a9722c73829eb406328858e56ad7d3ca2488f8452df88d7b80aea22a52f6f9e607ca9ac500125aa3acbe0487c6ff988a58943272ee31026b9bec8307a986f176139eadb8e449d1c0ee231d4ec9d239ff5ed192fabc4e36095a6f5b4267aee36ce98f8e02ac4ffe963b93241d8c3d52f00715809c4421a992ca2076e87462b5a2bd03f3062c2ad3674f79555aeb16633e6954d647e2db5668835125702b4a0ec7987c8541a512ded1e13566bbe1b29e4a01cbe6b83bd68572588ba22a8cf5a656a1679168ec01d694b6db18014d292a95806020234137f4e00f4ca3b06a7f75fd905dae5b9be25279f0a89c32a3c5c4a2e5b9199174692eefc10ab5231041363c17f83aa9aae8fcef7a87673025722294ed4310e72bab51fb7f8547597c9eb65ab9d68bdfff4b8899f226efb753b80c262715c18ad34b1a5d6a77aaec1ab9c523d15b96659f4ef108ad860435d80ec11c57381d8178f3b8443d9b55c1b10af7dba12be9eb21f32e54a60a2e81d0970c3e27bd23d4489872141da7cd068a80a5061272a58f94e066ae0b5895e9a1d7cda616025ce00e1f89b6a19451b6750332af182a7d04128dba1189aa7e95f338ac94d0802a201abd17b7412d6fb1aaa8d21459f53da8d41be488c764f39a1395ae03580c0ef03a54bd276fcf0fcb8cce9d2f99bbee1b46de60e04957252fdff54e1dcf71bb7052d797b7dce4eb75aa0c0fd067019a06308222333bdbb88d547339b7922636ea236e6d5a375415742c33a3ab58400d06c15d3fedc75ef7946672b0b8288c4fcca8edc00ee4bde260fba186bf1d34efb6bb1eccf17c80664f3cf38f4bde0e1cb9300583cc1aa9880c79fae2ea5ebbb6f73cba464c9b62acf385e1da80f8b49eef19c6a7b4807533a94a47c6fbd2924dd6ebd1a7736a98b8cbd209a662e0124da9c07777e0379ef8421cf10aa70ed9ad54fcf8f8f6f202453ca53fc30429089372fe56560a502d85f8b762550027c2512e8b024e35f682ae62db5ca47c9fb38653369bd9adb756667273cb63183c1681e5ef5d8ad88d0091d2e6bcf2a2ef5c6a2b00d623970e769bdf147d7fb3b4db51271df1baf2bbfb093b10d878b139deca873aba98fe19c88499b140ddb9d8e70d49c41b1f198a1f5f772930a32e7dc93376b1c2b4891e02faa0cda10aa561dfcf56fecc06ba2ae5085b7588e3945179707c66e9082605024e68bf9fef1c0431b18be6b65a53a636464f62318ee1fce256b545e374c4bc71ddb1d07066ffd3f501b934ea07686f1dd707d24d0d71f07363ec8bcde2e5214d8b3c2a7cbb2f14dfc98d82f7df30baf8e935ab7f1adcafa25aaf726923ba2ab78262b3dd0d34adf7844975e3d89f3f634e0c66497adb27906dafbec61371ba0211cc184655083c10b3e2722b2e2b268d30f1165fc7a31fd9f5de6feed7c06e7bea0703f95a903a2dea63daab366e6c70d649f14f36755022f033af95c70c01d947cd305147d0785cc8552a17d35a750cf872f5be86a5554af0390f50f31e99eac3bfa8d2abd7ab94556d221ccd2ec95d568d6fd20197a309bb32123eaed30910a56eedd5b83034ddbef2b02cec1bcb8a8e914c22012e3626eca5b472822e5949cd16791220b07897a48a7997b07dee474938011fe2c4575a8c5c6dc6634eaa9333a381d24c1ed34f688913380e7a6efdfcb226caa2664ba3c90f20cffcb2943d5a2bf40d42a49151eac1747b8d08274a58f93ef4d1097abce380d1072e455b31e96c827664d62221e3f6f5d825c83c9dcf491e60b1d78c519770bc7a43b20ce74baacb9ef70b576878b8bfe4407e075f1a041a03cc82fa114fd11b56873776c3d685bc961e9ed03ba4d4399696ad9251f95815162f42bb50f9c31017094d38c520cd78ebc10c051935380f7217e43508f968c5e0faae871ff75439b385455de3e6ce212d89964c77797895570ca790941f8d22041ba6d54894140737f2c2e3296cdb14815232840233e509cce401fca0ff78440da93dcd9374284430a504c65cd7ed8e64827c2661820c9103f0ab021f67e1bcd305401f62d0fd55d44c4886365f86a0e5fad49794ec4e9a08d8b61c12787cd2de3ddab6b8483b0cc537eb1ae05d5b7e044764053d6505d5e6eee82446fd3c161e1f15772ffceba092e241a0f7a93cfd0412a91751422b08f2ea198cc645146884ba2804d3e5941aabc82ba9b879831178c8640913491d2c0251ddd5a3fed3daffa6778328a98cee0d55133cf9cca66f2a53638f23da16f7c8f330cd499b2821bc377f20ff73c45693f364b0e215ba46d8d85280acb767db73b12a793449bf38be994003428a7286d9b91e40b84c9fe83274c66413e2c8ed3cb2fe826fc8731c68ada09c217fd61a49b962d54292c246fc11ebe7c821e46c764ffa9b53bff79e7ad1b3d20e3bf1d447e5b7024985ab7557771b47c8e518512fe86a28e671b8bb7d2312d54adf0c8213a6d2f6d3e1ca6099a5100bd610c2ce93f5bcf4884e3216026a428f8787acfedfb0c9f4f401acda72df8ccf64d088bb4df4413dd365619a107fed82df0b4ab7efb502ed5a3296452bfb9f2f6fb153766ed8cf42b15e741925c01441721b6a3e9d875738f58bb68013b47a7bb614c80860311fed3e58efd02a0362ab0e938676db6aad819f78338d2130f8d7012e8b5c5d9a53e843c7179c20d7b796a02aee8c448c93832583c55318b00487e7e2dd52c108eb5ca88722450b4360ba58de5bc369c11833aa22ecac51c3b21ec942387ea008ec02eed9b2c945b078262bb741b43471e8e6578b0b81a87a20ca1c9a520ecbbf9e77a9adf5bde8a123910fd80608890c301b7d4aa9e5b0a6120437e3e9e3024ba6a92bfb67451f6969578e639b8df8239a533af34e4cf5f7963412f8651507c231f46ec15a619aec92bd7063892ad9f2f902d34f0e93f8af976660d65ee0f5eb40ce94804bc7cb23b061e6df10a6e872034e33e3db4c4f5c60948aa2f248d388df7096ee98b82f2b12d8e2be1d7ecbe8e8ee5b8c899b29df04dcdc6042241388bd75427cba62de0e45808f58ca858a50d8fb623c2e4d53d93e8b932e2acb2d96ba10a632c5e85387d4d6b3f3ce16bc69a84e5fb11e26bc27581d379c534f9f260118ef9c41b73372ffb342cfadc6e65ea6041249a8835fe086b6cf0b0626ad710f437477f1a98623e81c1b6d54dfe3d78a3f954f1e350b38037b65c31ea13491666765b9748c0d7c402eca5ab4bf807af0f21533f5b8ffbfb3cebc4283f7ff63e943b91238f5d104e68af485ac2b237cd20fd092660f4912f795588fa561f7fa12936aaea07c810615088259321f542dc3e2846e211eafd7e141950703868689165323fe512de69ffcbd56804836b7cd706a0d6930e4d2b046c430a934618ec8b83b387363e241102b6c2cdb42707ed6a9a05d1d2ea544b540d89981774fd38591945c28b5afbe896d0e027d307bf6c67c5a97a260b7550a7b431a04e43c12f056df9d37b655b52352c93d0f88b6950936e9d89dbcca6a6628599942e3cdbdd2e31634e42772b9904b9c3c1902133f63556ca40869e07ea6cc34d5aa0c70973266190efbb702861660242523599aaa819b50aa820af018557f62092ff08b2e41244df95694fcefa67a8e4272c52a8936f067523ae14d72b88ba7710980a1f819f9a90b3426663f10d830eb6b5ccc60537d6d47350cfb6a3f5e1d20a843645fabbb033b39117e591f0cb5013f7092ac3336bd78fd3d72f72476811a4374834451561d62132b04e9137ee33222bbba93b238f399c4f064101cecc20ba21da38f5d8e4302d16421d2e574019ab61f4a22cad43c44d9e977d39f0f1c6af59aeb0e98d10962bc10c0d6d8caaf2745a43e7b4e41d938cbfba3e94f4e444eadb0758ae6acbc3f73148f8c9f37b44c42dd089368b326e5d375872e2e75291c1271d2cda4231e62220feb1187cd2a05154f027ce082bb19a734f22d161ec6b6f34be8deb83cbac3b41f4c8b6f5cee37c98b22503cf2f1908cc9b9f3565a9742fc32ac98e44d3087f6c7f729dbf19c9f96aa116111df2836b7663211743487d270129e17f4723ea2ba3972e006ec5b5010299855433fd8a8990cf9ef01ae8b3991ae32b357471ebf6b6bc142e548222bbaceb532a9116018467fda32e4c04f7fe75f536ccd634d8bd0250687da97eca9ebc8d44359dcb299e367d5901cbe25e9d3ef81b7a1c9c130feb324e34ed9c5ca328e3458be6aa6443c70accbbc85b7ad19356e71269df1ec94ea8fb0b401271feb29f217c7c98f63a012819427046b0fbd3255a30843e8cc9f3eddd9da5e9966b6c4c594070e49c2e9ba685abab044c61866e1513b42b677812964433631556e3a63e00cf037104009e6e68219ff10abe0678f6a65134be557a605b381be83d4367d280e00b579a2a0982286bb2e2cd32950d2376ee90e2fb793cb1f2cc541b2f8ba2f4eb3b225eefe27f4f378e76688132248fca6db21f50a4f3c6b22d43886e090828f77be192ed7e77ba2871b284d3e843fc9761ea5347fd79805362ddd592d186a4bf84d27dd0732789f421cc9e7da8bf3ec6a61b1c27d0404e4d205e241b177b85349f7e7e70d55c05e621b92daf98aa6b11dde1139c3dc01636266a5d317e1c07ede9216be2401d53d6ed70e015ede263187c6975c7f32e96615370ab382b64114993078bf5163a45bca6a0edc095278346ddc067255751ec2435b052ed190d01912698bae45721098a72d64db830b4567eef158bedb4aaddcf9b411628daa40166f033bf600628d9926e8b7b59c1c63d27ec2b99c11b7d097ba7c6a2cba050ab403e987b474105f5ffb7ca734bc90e2fb871b0fc73f60a722cd9a05c162922281375146c4ed864ae8b3ff9a896892c3cbcd06f99919e9440691be191df467d3ae89c7f686537961ba101a6cb5017e0bb1e8e3d36c089bfae85f85f26cceb7ad01bd8f5e48c5d6f0b6e3abc5eb3fd2fcffb9d6504f62f97ce326b93ec51a5b0d1014c11eb0980cf965d0431d6f70cd8e669d39d885b56ea31f223a95ce721d2b7e6d089f457b31142bf811c99bb7b3b7d3585a12ceda1f62ff19fe6894d26d4044cee443217fea3923d1951e330101eef901fd346d0f94363630b86d57821a243abe293b8954821361bf805c1be4138fbfe295d4712c11777386c3a2d47450c4419c88dd34a74990cbc6590d24763d4ada8bfe25c44856ccad9e96d7680bea043151d935b1c2b2e30579d69c6026e43cc067aaf6aea5d72008650cccf68b101a0ab12301c50b2d9df7d9b6cfb4d521a3295eccf1794e8bd7dce5c269d457976fa87c02ae6a9c3eecc851c88ab4bc75978937683e9a1735917e0b8c5b6ae1e463f94ec3266350b2b57c9b228aa2206f58b12f11371d11e067561695776ea951b54b467e3bb55e12b72c092abc36467197ee0b640d4ebbc873bb2c7004820935914176913b82ac0a18d892a0105dfe0196de2749b52f63e7643b1d38af662b49979b9bbb9f33d6874d987bf083bc3e8740b974334e70502b4c88350074f6dc6a883a6d7e8638b2582636beae4adf7f2b601fde96aa02ddc875807406456ec33874ad3b2a5d66250d05bcfb172ffbc015f49c2973035794fb5679c6ca8ca86b7344e2e1065085a9ab18e00ff26830998d4f84bb447c0c63581cdd838af510a7b90a0522af6231469f670295d5f3b80f03cae2d5db9b8e65154e4910584ca0e6fea84f5b945acaaae242183d2d9d794690333828c30bb056ded4a5afe43192174158dba27df9aaca985878285579220d4a6ed25d1094d81d45a66d0128b3d31749391f55d923640ad893fe99d67708b94f2e8c46fbab3d54d0a109d25017e961d73e078ee61213e3d291dec5ca8b3bf0e8bc2bda0ae9f69fe2f9e1128856a7f60b89e321b1a5efb324d524880cf68c8b1f77989f7a5e747f7a67542cd67a2d6460bcb2641148a2b07265684046632829d7ce05a750d1802f6929b6b1c94f703ae48e0c53a81a1644c6f5eaa9629c10af02d19db01ae1199047133012ebf03cc6a02caab89585f40902a5207bb9a143c715b05450c86029288cf7a9644eb1a04a66f7d169cc0a8188849c07bb10fcc71187f8f2427d8fa9e9c2e0da8bd437f80e68755db626b25a0a3ea214a1a812feb6378157b43365bc01e3023908ff62e217b4b299394324c055f059a05318fc90f7aad4e5752ce0b6c772169eb85a42d10873641602fcb2abd6c4c7eba6d82e0d855ddd72688cbae6e36dd517a361575d80471d1151b9d304a2f9b2038d6f4a244890265dbd226084d8ee2a83bafbc0c8ce2f052a912b266fe4cc43eab8d8499ed250db22b52798e68db56d2dcaa1a902ad315af44fa12905de5b154926077c9ab21db89114122b3abf087223b7f69665777e72fd12cebb6f297481e8dceae4e19980cccae4612521be4a136f27f4f777e1a2776e5c5b0f3d3ecec2afcfc3461b8ec4a8473e36557e0e7bfa163579e0972b8252b59c20a75ab902934ba9d5f2457b8fb24dd56c893c4b3493f3bf72021c933d24f9025f13869e6acaf957f65e72cda9209ed1c23d176cea4d7cef943d8cee7e923cf994db2e55fa1ad3861326493786de715243bff89a4add9ce7f82e513cfceb19d4f3f3bbf77bfdaf2fc5c485b8e12a81beba80dccc502704b06e631d94612f95b9ee57b58339f32b09d1fe370ce59f8f3e31a8fc98f496ff4bcd2cbb25e5c25189e9d25204b5bb2cf507409c9a0945e3b0bc96cfb2c11d9b924db799fa5d9ce25daceef559b6719c8ae3c1878663b9b609f5968671ececa1ff5986c005900b2a000cdfb8fccdfe71288f93140f45e09e44d2045a0ab88a4ad4f8511cd694bdb1504fce950eb9eae8b74d65afb23d8b4d01536268403c50ae1dc2c68edf5ea9560db6f6443ca7f2086610ea04a0aad417b9fdffffbfa34057cf1bf3fd955f8dfab3c154fc09f227a91bce4175af3fb14925e7be369d032be1202afe4747e27d4cbc8630fd1d3edc3ba5aa30d81d7d712bd47e2bc50d31295f95f5f6b547adf88c479e16b79ffaa6989de71f6c24f34f2bf1863f0ba7f6158ad5f9c4d1f4a34f20a789fbff7c8fc39fc921238e1a7b78400cedf5b20d3af6671a4658f5cd2fd89264aa9a63793e37bb97cd5d81937ef67f2035342cffbf28bf93df2f3f2e75c9e3ce65e8cb1c99edece5b534a7510b73aa59452bfa15e3c638816ed1943f4b7670cd1de9e3144e71943349e3144df3d6388f67dc38c21da6e00c0a0ebcf18a2ebae1fa54e3ddfdb81ece25b2fb571b1c954325dfddd7b6fa6949ef4efbd97d2ef746fadb5decfabbdd52fad18e31b28a5743c80689f40b6972c2e0025b0836e1b449fab7bd88578425c8827c48578423c21fed62fcede271a858e4742ea50a5e2c84b8bb357eb90f7d570298eea8dc07bef176a930aa6163d1a81380fc118e7d11088b1077afaddcb5f73595fd6ac2049f4215dab5b7a6f0a2e2bb58173285651a403bba2c79e7ff98a3ed20128a8e0fb237df4703b83dd1f39428e1278849e083533d4b807e69c73ce39b3108119745844d6d72d2b8e129cba5bc022af388eb3c35182231a8d4853f4fff3b7d6118a522fd75385eda65dfdfa7ba27c5d449eb46feb3aa0a8e386b9eef04fe6679db2e22851b9657ebf8f7d86141f5114ef0a3a6c00df3f879f77f7251bf023e6fb9225f0a8f9e8f1895033420e9266e6e2944ff46d6fe78d3788434c62d237f88598b4db2355105388e92ada209922eaf0544629f8da156857a308380b2cabcbc6d8ff9cb5e987e483a7d3575dd4461d8d3c0fb53f93e9f595678581e089fe176a134843188a2be8f0deefe3117df347e5595fa2f2acadafbca4579cfa1275e0b2d6c0b9c45bd66f57979812d3f54529d5f5ae1a13a7f06c00e64021588860cc4b9a3c81d377d3234d9878a109124274c045d4a4c90ee1abc99026250862fa8a34e9c0e7850ea1d0b4ae810809ed1205165a3412852ef99049a0431cb2145dc43ea02e4670a48b970746a73fa1fea54937f896d0a52b3e1bf48b11ac85fe363dc245114db85801e882901c06173b5074cba6477450f647854e8bfde1a0c54d8fe892e41881470901214e1ca7484185402565831e73ff7925b50112aa033477cf95683a93ae8b910b7d66ddcb74b29a2d7544a843715c1b2d630efeb34bce395759aef5a6f3accb355799c7a03c701a71c098a67381115dd45995555911facc3a994ec88e0d7b6ce8f303916d6b3498d0e61647106d2a99c83a840b3fb656893401d1023d2cbd89e505dc2a7d0bf78696e9594820e5e925e9ebdfec95bfd9fa6fb6cadfec94bfd9e2dfecf06ffe668bfec6fb9b9dff66e3bfd9f76fb6e9310ab4bf890ced8dfa2452d7106de088147d3a3c25bd2fc52c2c267246164ff0b44a246df9cd8ac52f8c52d4140d76fc8146035d9da7bcd8dd9a9a1af48977b0f3ffee304a097de2ddd368205bedc632c633bb000ce089f9f84724fac4bbefb1ab539f3435bb9a99ccd31755bf8e38b7300e737fb9a78a5dfc692e613616f4afecf324a0d7aa63d6741ddae94a599d6c7fd516c96811d446fd15188a29a21f8fa9225a05a13efd2aea9b356b925d3f87d5e44c0aeeadefd50bb3ab4b82b55ba5c79af5b5f6d1a528a6528a78ac198a6af56bedbe6e485e976f415d09f52ba8db1c89df3cc98fb3dc0634a6082b76fdfa225a0dc17115841a457fb1ebcfae656562cb9befabb269118f8867fb5fd87650969ffc8faed6fd7ffeb4a9bbbb5b7777ffb16b3468dc682cf7d2ff34fd197a493d06054be3fef7699de36dd0a60d5fe33317d340038d6babdf9e19947ee0c13e29a594babbbbdf0e709949ef3f9528c62805a2c251844979513969979516d67d8f712f994c251652cb8a8b3ea9bca4c08863880253a31822d5f71e994bdcc195e11ed80f424a71544a679829d69a6460d619f603f7e0cad0da636830e9a0dc94a4aa510c3015a2c4310546e5459f565c482d25966f9f9f5d99362db5905c564efa4505266544852930868a3e8965f807a639e3030f64745092af8a9132533e6ac37eb45a6c00d9ce0f520f6aad0e83dbc1a714c3b77acd1683210bcdb0cf8c440626032bc19ad9bda463cd5c82edfcb2e60ecf56edf4a85ed654e9b8ab5ed6cc2ad88669626fc4f0b1d6c66a8feb2a19238c1b3b3160559fbfe9ab6c255b2a9156ba1bb1124906a6b28d400695cdaa6cb6c4534bb19d75b88f4b5ddea504f2d1c8415b1252343aaf2eb99d1f248d24128dceb2686834bb1b383760377a78b8e143a3bb7163e706cfce3fb34f1add8d9f9d9fe45599b3f48ad9d5f9f292d9b12b0f0527d867484f199f18b0157c768ec1b3f378020b0662d43c263fcbd31626c7135a3060a32d01c4a0f19f1e3c91a3fdfb2edcb45e1e93a37d9777e1a6857fcbc046191e67e187791ff861de3ecccb8f2590fb2f2f8fffa675f298fc9646975f060a346db9d076fe1b63b6f33fd167e915c6f69967cfa384fc20c9854b92eb66f4e152aeec6e5aa498c7644c92784840ee244b92824824216b8e2c4922d148d28c0444a259d37e064195d24be5a965916e1e93ffd36fc9d2ca4eb7b223b99c45da952497c7e4bf6965d2cd9af97528981d90b825dd76fe1e92ce59e3e727ed9c05f3f94b2ebb327d7ed2cdaeaaeac763f28b0f43853e55403bbf25551ea9aa59333f38961e864667cdfcaa9f14abfad93918da4abc90ec1c38d92bb67aced66a67744e98d4ea3647c3c4ae3c1976feeb2c9aefa3d191606e1a9bb96f404bfa79b7b5d6ad4d90975dbd563b3641767cd0fef489203a9b8a3b6c82c06c82ec9c34b9cfbeae68bfd034b69d3f35a3d1edd09735e9b97536150fe045896213c46513c4b54198dfd804d1b126dd364176484fde40832339fa18ef8f7fd38221471f308f1f97405c1ee66f5af4e57139e33ef0df1288cbe3d2f498fc3470d0e6ce7f240a111d977c794cbaf8b8ff520229f1bc8b3ef0bb94404ab0f797c7e42745a05b5866c79a2d1a9d5d4de0667b29d363cdec42caf0784cfe17522645461778ea871ba56666067564c685737337e47abcdc9254ce057d804ee08fb32cf6da6ca63693ab999931c1ccc5714b230d31129263ffa811bcc7aca9c6e26224bc3755833e71edfee09a9b585ceec5429fb876bebfbfbfbfffae6123a924fac4b5215cf3b1313586793c66a41b05e1ed704fadb5e66aeb3163daac69333de605dfa7f5e9f46f9a33333516f7e5b46e67ee1a3366c2602316faf445e1b8053e398a5deefe7848f8d4984dc89026786019466d74a1cdccc426daf8bf16b26bd7f75c2c3b23809254940dac12a19750acc75155d080846841b53beed083ff3fffcca6599661afd7e797c78020e7ac027dfe2bf67abd6640fe45ec13c38073b89c3f671960affcd2d1e70701d568766591d8f32df5fb4276154413b5fc302ea9387dd2da08b656ab793c78d46a351eb51a8a96637233be3f0e25d77397e0940c326a0b1fefa37ddb8bf93eef83813e692d6804cfe3418d7cdf11faa4b53b941bc162962a888c60bc8cd3cce1f7beefa32daf9ea38650ddb63c154358635b7b63a0dda162ddbab8c3affb1577dc7bb1b803678c31cee28e9c73ce3bbced0faa943bfac36dea3087599a4e5763e58e1611e08970f6be941d5ede78cd2e8c62fb81d094d225f4d27bebad746b213e10fabe6317b5714b039080521b4e7180dbcbd5463cdfa5511c2cf6c3987535ca140202f3e058088208629f1f048ea5ad62b8c73e8d8964506339e7c172b91acb2da9af4cab9f041352cc20071e8478bd6ed8e1000c5d2e5701203c15a82e6b533ce8b3c692a4e0af14d8f249953ca047f55c2e9773393793c5908213abe0f2d4180c32d414c05eaffada395763390c8315af2530dc050f56a1e2fabda61949c07be2a07b468b918a9aba613c138001fcbf119aa6a686efdf98ada6b3167853a111ec6ca5cf72b1f1f001b4ebd32bc301937d86479e80a01ec14192aa6bc5f72b0edaf5f384d8f6474275195e68fb57c5b61540758e9b31bd725c006dbdc7d43fddb4469b9b96f737ad176acb1bbfd3aedea22daf1c7d78fffd570249a144c163eadfb4acad7e81cbe518c14b3a3fe20593333ced697d5eea5f1ebb3aa9931db3abfa2cd8d55823428f0636cf754fc163eae7b0b6f2f01eb565eb9f34b7ab1db32d52bf5ad64a8ce25cdc0976a52c9c94d80d8cb03e76458fdc00c7ae5e767d0b24b333cbf256fdecb68651c71ed6ac66ae6e2f04d6656196c7baeccb5a6b6dceaa405f955144571ea0975d7999ffb3af2534c5f1cfba5e2519b4f73c5eadabda95bfb76f79aeecfa03840de8933ad1a9cf420528a5a7ae6e6d0a28388b5a1b69088a89592c168bc97eb0a0053fb118b53103bb05e83f62b916a3c55037e893defe76fb31f3e376a3b7194522f7d4101c671c179c8134b006da7e4c3142a14f7aabfd7cb313ed67326ea507903e7d5d43a040680ce102acd582080912d544cb49205704300c99b55a2071d12269eb490f41b096254718f80baab061d6b2248d0f2d30b09801d7b2648c1cb4ca293290c4ad654954182df0da4a3d51ca79b33b90d500cbb52c995ad26ac1d62a7ea0a684be2f8f3a14f92e0a8618ad07a3a498b95e19658587ca803e33ae07087b23112700620a21b66d82076a24075a040d4350b12b18553481628b25f015476c1c9d9d9e30463d4c70a29623c728440b75db7eb8dbf645d70f14743bd125be2c2bfc4fc481e310383ea11714c715751ee2ec9424e26b5b7176d2db496f27bdbd6eb7db8d07a6824a6228e3e4990fedfa4c684e6a383bba22447c7a362cc3340e87cbb88cc3651cca8995271f29550b7bf2eb76f9052b618cb30223a1cf8cc3617c2fce8aef7be1dbfd408105639c15d8a5779fc6b58830d18d5b964fea8a540f339c450d5161155663a0eb0401010e1020a91ac0ecea0c8bec844784b56dabacce9c55c4b2446f3f04b2acd1db0f8fa021d42c0b7c1b92208c488f9662028f59fcb8e5f1090b7e664e7a957d403e5f65a254074632d417f6e947353d81281ad8023df4e0a27d18638cf10c139b1863ec79175fb3868065bc140efa3431be33a69b9fa69940470411395c0e87bbd574301ad0608783cd66475447f4a967dfd027c383199f0c0f66a04ca6b166fa3413263bdd4ea7cbd9643fc40ff113fb89c578f24b16628c31c6175f4cc3a1e75d7c710d8f883e290d9fae084a1659ece8171bf26837e79c2bc618df1a3c88904b021880a6468d5413354835a69a278c99ffc44972e05a0eda6da99e6bd7b74f6a4ce879817ba007bad96e365b4df6397c0e3bdd4ea7cbdde8379473ce39e79cddfdf33f9d4ea71c7f729d5caeaf3ca13ea0cfec028914b9d7dc97c83ea92de7d9ddb183a211514491c3e570b81bedd34b7e87df61a7dbe974b99b6b89256eb69bcd569be99a682287cbe170b71afd74432a9c0aa7da42b5854e25a412cae17238dc8da6b37d101f448d56a3d166315b1135e5c44ae129125c54101e7739e7d3cba8bffca180f868417ca82b44b6911370a44198d289231329291f95510b9df3e757e2bfafb682720129e56572d3a74eecf35e5cc3355c136dd03456c11283962f5c521938217941ed00a36464821a9ba4503f317c50a55e8f620199828295634ad40f1d8c41326cf00095830fc63066a09e30472f6250379951063484a811e69c615e83868c8d041cf919fc0c9450e28978225c5860714522914854452291e8ea1a149c75b21a2cb5c7a490645708bed5c1e0277a146a08a292ec805a71d220695bae65da7edfbb8b441fcda140715e28f3981b1a893da17a429f7a171b1afaf4129be7ec9e73ce3e9373ce39bb995d007f3a4da1cf995a0d77775c33e333265b123415121592996c2693fdc068b697bd2cd7322dd3f22cc73e6d5be2841337dbcd66abc9622fc40b9179322cc3f24b175341a1826297832951b2d3ed74badc8d0926b00ddb6a33fa61dc900a062a18d00f36a4830ea2bb3bc63639368c437777cfe5eeb94e3ea72cdb27b5d1bab3dddd3def5e9cafe7b94773824459e801d7f96d93aa06fa3c611dd69d26d3a75d4b32146ddf26272827284768834ede6bbb51176d7284ec2a476875b3c9b1d9e4dceed327726c9b8a3b6c72909434ac95a66b699323941354ebdbe404d955cd09cab1e520b126ddb5dae4d8ac996393834428a7669353cb09ca09caa165974d4ecd9a7557499b9c206bd2bd332c0fe1cc202424c660c40813426a35951d74dfafa10dad3f8eedd6fe576aadb5d69af6a54e6da595524a29b5b4de276192195ef0022d72405f30fb012816e78d7fe301a2ec5c9ed94687898d0e135a2dcda58d0e136bd2ad33e4fe363a4376e53a435b47a7e3c49a74bb7b9edbe8d8e8ec3cb4d171c24427e7363a399d219d219c356d7472d6f4d24667c89a74c772908b31d6a5185ab37e186a8f3cf9a0bd7ab266d51f0e3d6c84b64f2bb61897a0f751c73557ba6badda0bd8fe3648c5fc3d68057e9397d5e57939cbeccb7e00c3b647fab0a63f0f6be2bf240b16cb9c35defc74e5497f42cbb33ce9692b7b8f3f87fb398f3019ae9424ff1cce1a61d1dfcdd236b7619c688cf18f5ef477f4e5b5a6e8a9a8c3a4365c54020f6bfaa7e8a047f565a6bc1705687b8f4fa6fc609541b7388abff237a637a1e557de478bf8404adf22963e564e16eeae2f970f26faa4484c2f4f5a0bff86b37d9ffa5b9ccd22b747201580f4fe22d802f8d7d802b0bc7b25c5af678dedfa555421fdca9fc0f22da45f61f9962d56fd54dc71b32f0b77ebd2665141a8a1187e0e2bc3aec227a1e06c90821e5e16d2449248ffb72cda727114c51acb2ae94af8e1001c26ae735541c43e298ee6b68bf99e262ae4dad934b6631fb1870bd463806cef47f8475f4713fe845f006de1b860021260c080822739fc30d422b900820f458021144507224ad0cafabc3ffa50c462693f504118bd479e9508088e6ec213ca8e98c34bcb1bcfbbac1a1be35fc5efc50b6b6992323206975da8e4acd92b52c9cc8c0000000053160020200c0a878442a124c8d2409bdb03140010648442624c361ac782912489511004510cc0300060000380310019439132c407151766a0bd1a507a78ba24b1ef75afd4550f328e8ea21b544ada45587c1a8df7afba5a1ade1ae76c9adaee32c2354ef53cbe6494cc4f6290bfc0c3b8e3f445ef1093793757f4f87dd7d626cc980706064007f5befae2a5e18451721af138a19076b86a17a48f57e0d9c40173aba6b7aa8b81b3ce9bea96724772734a7561de30f6ad2a285d3ca1e1deebe01b74d7c47a6000fa02068f318927899d8a7f4a33a7d7800c88a7a9278442a4d2cb8f52df6a441bbf4504ee7353ac0b48dd278268fb0fd3acd823d8ba3552e959eb3f08a03df349aa0b7ba3a4ecaa0b01461d1beb92a52fc764f2788013a59c5e6ea9c45d653160a86b73eefa270d626eb04bc304a196cc763b82e28dc8da6043611930de438f4aab3255582e372f0afcac40e71718f974b147a89404c35457005d7c41ca8856c478d68aa67caa1f4023e8e9b339adec689cb7ebbf75e94bffe046b703ec53cb411363b9f047fbe8f1ceed31739010aa05b38f2e1d617b5031f7e90897d0a01350a7fa33b1922d2d39800e3b3769b3b1d801754cff9852d7fe5d3303986ef3d4cf4b7bb9997adf449409c08eb0568f51f374b93e63ecc8c6e01968df87950eaa239fc7736d91b02f14f76090a14c0bb9a65cf2e106c954d6ee2521d9cd76af6c0c34757b5d1a15057532a0886deec76c5d7e12f4ab88b9319e653d5ae9f1a13da886e8d17c839822e631497533454aa6eb455dc0737c4eb3f0033a2761d46c149ad7259410a6fa703058bd896e9291d49a5552faf105bde2f4aaf80d834c5e846146cfd797af3ea21386cec7981657a521c3544db810ae6754eb2901097c3449492fb64ae4d0bd63e0b8ecc3435f768710d31c77e4ee5f89a56fa2c60b5894271d71f1c2f35e73a7070974490c4bc9151a530b55c9518002c0cb0fe4b48437eea66a1d208cfba57cc069e7464bee8af0a182e5e9c4bbd932686df89054aa0000dac7c839c690e17d2c72022e338b7aaf430ac00d8cb3a69654de904bbe70a02cda3b6aa5c46189553daf6aa771c8b8371901380fa5e635925eeee1f1ec52f45e4ad4708cca4187735467d5c6ba9584fb1ed264c20173ab1076d585c0a1ee0d74a84e7a27b10ad3071b7dd5f554fa1ba74cbda4b9e77adcdfe635e9d697b76a8dbde9a7e5f4da377b6fab079628d15ec5aa1d8f8abb71c8c86be3c12111d41c5e1a95709cca7138b36693eea3501c088a53530d4ad3acc135b44d8b3934403ab286c268d60457acf47369d830ed3bc9c24e98bae6f0a4e401c44ce054b136f4f36341fcbbd48dbd08ccdee11a63c3b8c0bcb107429bcf0e6c888d360dae5168b67487268445d154b86e8dcf1517ed438b2a1174e0042c4633d5630f1766a80543535f6332cd0da666f327684686936de1539910c5f224a17e0dea0c928746262e71f888965a013a4811d5dad8a5eca2b222196084412306f1c79bb889c1ca74122cecd5ebd8f581ab6e6bb928c9d120244abb1db722ac382b2ab12d2368cd1326b13794acb7f17b004d31d736729db2a6d57a9b1047362a5d8f26d7d2d4b4badb08e1889aa00461b150827cf5826b3c1db886d8fe230635473194c6c5ef34667bb439b52b341bdeabf1e3609ae2564b93e3b4355add5d136ad14d562a1766f40e0ea643d23e92f03f7024bede7804412c5b89fa63a52f380e6cb0ed93f1fc78af51e75b7bb0987a6722a9ecafa1d4fa2d7d6b058bf4adb7bd7b97527afd895f1b253d415b4b18a1670de3b1d7139c0a7324e4e58d881a5d873d1b5b9951853d506a4a9038f1f7109b36e638ebe54901583fb3e4fc63eaf4d0340090c90919e795b768c7c47cf1c8988436e65904d171065a20196fa74b0e71b6018f8c3298e319268b2c9e376217774520f725d9f92bd63407ea9cb287a7a6cc14ae0691ec4d7694d20fbf83b6da1ae90574d274668c6c1f167f6f3fd4aea762fc13b1e219f53df5eaa7e1883807985726d32d80248bba211eaa758c5fc06d0dd5e5320b8a56e237706d7889e3f26cdcbc4c139e9b5fcd762dd560cd101a7e4f917ef0359497477690e4890a79ea0eaebbcb66a72c9009e44f620774fee5e0b2e2af3f6d326f424f2855517f94e7554f20ec854a2653376c1c7cad67a3633ad3705e88a094cb0ebe11597819da7fe0e6d58b6fc834cf429063bab198c6f23eaa26ce1039553a442bbdff4135beaad75bac9df39be694ed20c6e2bbe802337282c5713b5115efaa8a1dc0eedf8536a7ef8bf666ba0a7a39d0a169c57bb0e0172498301bc6aedeb05d5e9361d2796492e0574d25620f134e32a95b7f5dea1ad3f928d4d42e624c3ef42cdac9f0254e82ce0fe1dc52ed340305bd97523500a7721dceacdcacbbaf6f85d10a25fa8b18a0f9f60e4ab5412ec16afb4da3a5427b4797689ca735a73ab06e29f4ae722d60d66133dd421ada99e6ed60cda3387cbd0523518f96541ffc93aca6cfc683bc5af61af4f1f4b4de36d30d2ddc451db3a903eb964aedaad702469d37d3457ad721d1c4767fae4c695825400ee831479767fd2ac00f89d5cda0a7356ca180a14f8f5f00ba2e12d48ff9290d058169ec6d715abd86f0f2ed8082e6c2ad8979711ceb00163050655f791237f4685e38dda60fa84de87a8b40b6348199ea83cc304568eb11b1023d30f78543696182e3c7cdeb21554cf7e80133f03d6ed597a0f054c0afab8d34cfba362c75ef604bac4a36b7c836c7936eea087ce5d71cb67814e97ef72ac1e968910eff91515b83c77cf88727c9a5e034c9a9beaa39ad249400cb7ca4955beb792359330292dc9da27f36f4a4425317d3a2576624db503cefae55ad129f7300fcc4067424a1bf7954cf5f78ed39685c6627aa129bbf25fbd4bc297bfc20f1df146e8f415a998090deefe43afef7b18d54c156e9888d5b335d9a3495d3a6f13284493291c9c341cca1f34fcaad318a1a0cc0337f324fc1e88286295040eae7d0a17cd6d81bbfd7b968c24d104049e6a0c8b233b7a92d685db3e31dc311d5da41c81a01688cdf31067377075df45fe955563162dcb8a30e1c021d20585b1f3ae875ec4f65215c2dba68988397b7cb5fe51e60e9442501d677ca3c41d8f6d2485e09f726473b48db83a5c5fd991050a6f96807931706436137ba810fbb137882947627e172b0550af3dc057221a4ad8ba65db9a688af68509954131f392d852d8607534cc0e4d23bd8f8f9c7d5ec8a8a1c36661dd11093307ae90cd788d89209d22b021d06b38e35430cca42085d4546cde9e610d304a93688dd14a42393b817eff06f49c9bd6014daf255c4047008964a161530a43b8ddf142bf34ca735e08d7eb1d0cbd5c44e03f75240bc1594b665a1bb6ba9aeffe53b1f3ee28a9085b9e26b13dd8199eac284a32bfeeab5e4f3361ea3f67865d13d1473bf771a84e6dadfc3dca4f32d6c1cabb917c3a0eefc11781898754463c44826b8aa0484dd5400fc8d385079f5afbd9c6c1b9c9e302a1077434744ca98fa6670eee238e136ae64ffc007feba28263c47e95e535697a4f9343600c06e526c43c0926deda280c6b3bc0078bedd7a9215bf30ff0120c998f7d4cfa0899353e0496c1da6e3335963ebc660f23217234568752f2089d16420b485e525af88915d18075835ea017cc4b3357a04432bb6f131486d15571a46989ea28ee4bc802c946b3f0e09d937d342391dc1777375139e4d5819b487507df694d19ebc12565c7d07b914b14cf7afb99b5988a7dd0b4a0ce13b0319f48cdbfae55b31f47fd18a324e84d29e142e2c904e5dfb89127ab48332d59f50a6650eddc27dfa028aab5aaa1f3abd968b7b622dec6dc1811dc05074556f9017783ee8f6d1082941a07e9b1cdea1b7fde178d420f90cda12cc599f33e01996c36b2e41486207666b802328f424004d9e2712ea0da7f8a3d4c5ad31fd2d85756a7cc7d19add1234834580240814dcc419b4e871d169001800a8f0e2442610cc8c309eb215f51f2ff090c09c44c75cc955947c4f864704da90935432e0a6808044d3c9e9440f0f54bf4a5a71b3ebc9b091fb256c7c402eb6363385559935599c250ec62081530fb71f8e203a96fbe6503d887b701e7d3f2d1cb630cc0448719cd3cfa4abb5875c033720d5dc7e9e40833eae3978b227d838c1278b4725038f422f3c246b9e7bc8a402aae697bc2b0418f6a528c8c8a3a8eae38dca8124cce99910bc6b12122e3c4c05b4ba1e506d05698e3318ad661fbbad2fd489a4894e4393e097d913dbcdc044086dd51978acf63230286a213583fcb1002cbe7800d845029ab20dc9d7d707e17fdf3a10a337a98edf2830e9ea608119223967ff6a71919da3452130b5c2ae46258152a2e28b8fa61640fa7b6d3b04fd943e4705d2c7ba092d310791ce04fcc303b23551e106f2ae360faca308369f4ad56348869e4cb58b23f6c9ad723ce77efc6a1f4bc5a7b2c5d663d87ad367c5e513411e67c61a9165e612accca7b3895b6ddc37f49221ec4d73573284b82f7c386bd737030590f94098b3a35acf39f730f43e21e0defcd0d7895c2c81de9dd2e96cc4890e5eb3728553813b11f6cf4a6d25b59c43d1a2fae33a23ad6076b2029ad9f02e2f58d0c477481abdbfbf60a2bdb73ac2aac3920d624899a7b5214fd3c940969b54f46583342240a51fa908c76114c537040cf340201572367357cda10f7cbf178b850687bf23c2b2508acc0a4739aa07fe93c4edcf3ab136b7d1fb9f0583bb69c353c4fd57fbe2ca80a9a33e8a8976a9022b79e08dcd8239fd089826388d80d2e542a35bdba874e8618819b558ec2a83be682454cc795a2806d8c010738106c192924ccf352623798b0eda9115a0c33736c5d5655a30adc7f9fddc452c56ed576f0e727b8fd84ec2aeb482b07c0479c4bb89c32a8e42b9f63db211a8acf5bfcbe25efc07963be0f2e01f085bfeedfa2e8fba1c89e7ee590a7f4a778c884a73ac05d05e42515742e084ea1e270aaa2a1fb4a3b8b0094a5a46604ed863166411bbb3ce08e909dc6bec72411d2e1540130b74fad735d2c1f7b76a30b7c026aa17fc993d550a0e75cd14688d325d3bdb16456ae49b6cfdfa5781929b0d6ebfa7787c7f4eb659894ef5a3711857a27bc19ead01d7604e74b2ba82057253d8c6bbd33efd9154b42f8431fffabade9891342e8b8e85c2a3adb1df83eecd46215e99aece6a48f7cec2b0547c76520cca666974177d09ca54083144e0747af5db462f4785f71b9d45e4db5b57a350ea2beaf6db199735f3751a73c246f6e137565953c468a16a638d1a49207a0c6fd3246cdd1657bc8546b8e19e4c0dd2f152ffc78ccc3846a5a303a76925ffccd09ff143796f46577a68a89c15e433133e9dae2e6906c54a621aa178a235492247bc0bce38413f309a7480223f36023a23ac6ab8c345333fa904ec1caa3648f4720524db3a2e993fff49129cacd2f5694b2b0775c9da4d4b04c32d500a379828b280b90d6a302bf5e70ad0c96f9858a9bb0d3accfe295d6d721da54d319a6b89942ce7a1bad609ad92df50c0a8544bf9bd0b265bb859e6627a096f1cd347f036102a650866c581e843e9982f998af9ecc72769a1917e8f882feea796e142bda35623b4c24fd6fe4f40f38826b938fd4951cd4aedf89520ba214d4ee6293e5d688c40b52756e7d95eb670d15cfe4a7886b84af11f3e489ea7e6b7abae8c9bb10a967dcbbf91b631407a5353880d41888851d94f24537439ae4facf3b8ff11ca961e4376a92511b0553d55cfb52459822123815d9fefce80c8f4ece0d7e7dd4d0954a006e7ba95a7118a3c4cdae1e9fab9904bd8f16ed2795d063145eddee521626f210749e3f89f3cae85033d54c09507afa0b8e7c23b274bd98fd5fd9b92dfe6a21eac761a4f1f65b7f44164aae6112613564164337b958e59e5bf6c2a4e21c0682d025ee20892cf9140560e25c8ab226c6c5a60cb3c155abc4ad745e01827e4e7b7e66daeef0e0f9de4c9ec529f73fac67e077cc35c0da0c477d1b9ae3068608e09c2caecfe809ee7dcff248551a77dbcf041e4b32c2cf34388a5a6ae075b4326f9706b44658c9dedc4d50db5dd45f70b77dee5d7682940c0ffec054e56f74a9d1d48c3eedcecfe1ed4e55209a4cfef61486522abe798fbc96c7844c8dbd95e52b45a5ef8dd8d8de525893f1042e72f970a95895b5ab0fcae0a4198a2ad02f0dd2dd7a046064c60992109ae215cdccb1b45893523c90061597990f0c584682953a19b03fa59835f086a88d6322b669625841ce2729625fc091fae3cc5519bf55d87cc49164cb9240a2a87606a649c2bf4a95241ced6e160ebb939227ae25915798c3de46f7c61c0c59126fc3890518d5d58dd4a7b4303627227cbfa61d92dd232f13121ce968555fc8e0ec3ea53ab8ae5c718abfbd7e1f444c10c38e1632cbfa3484f7ab8d1bac840cd659301201b4a9ae82acc3e9848492b1092e606a98f910a94d10d7017bf12a84851eb3a4bb58a5f726275d2aba6547bfc9dbc4ebc92082f9c4432940d56ffb5b8f8c6873a7b4aed19b895a4c687245712d010aa5ee4d6a948409c000d1c5bfac1b83f5e4b80cc44287ca9abcc1ceda603fd4a02ae61212b2af64473ac3d522f7b628c7bec8b12fba44e40ef04d5f32881d62f13c76038c951cd2983ffa8908e54305674f35b05f077b8dcbf91cafbeffd7bf6bd2e3719b6bf43d142c0c3eb3a9098b369b0cb0f7911d49b163c32f344d9384bc8cd3518507fbf548dee7f590678b06e297e9d494ec61b9f0caa5831a57d0c473178207a186612efb34ba880704e82c156fc90f5d50800dc58ff40e8c83f3b4855f221d2fd606574ea082df31d135de8372f49281491f7f41cfd6db577cb9964680483309637a8985f6f77c798e2796d435d2dfb7de1a3d1abfc1dd9f6a456660c48a86018c84132873f67c0087ee43003080a74da97c6f1cf8f29307daa10594c7607e18f890cd1b51cad24b3fd87240b78f998b33a238b4a1be6d9301e2cf3cc6eb5757bc16af1a1a57b9d755e51e29d7ff09d743b951f427f8c3b2efb4bc61f18bc04ee1a83a818027515a092e92879680a83292d9cfe8ed956b26c0b596d824034703e687f02adf76d79712bdd2044e1c91d466a543bdb2041ff6359fc3246424d6f7f00a78bcc7fd15066ec202f140d20cf4a744a5dc57c8db1251bad43e44a1f3c0bdb64969ece4c7c085f7d2b4fc472136a1d305e1591e0033d4e2edf442fca8365e90f9e5f11e1e6bbe54780ba17bc5e171bb501040addc459b4eb9ec5f21509f9d00c1f1ade7e86ca2e2f0411ca25e8db0c42ccdd4f16aa47c4225943c9f0fa2cce07a1e2f8a4823abeb2e533b74bfea0bf0bc4b8589260c79062bd4d6966dc3bc054b126e96fd0b59947b6217d811bda0c4f4bc8a527f2e8fe8168bd63e913847d0cd9eb81a5fb8ddb833dba77f133cd32d92038486cbbfff9e4993ac61c8bc30d60b45067c3ac7ded4c37f72254ee69c07803394f219b9bc0577b573a77bb71d8158a3a34dcdd62168dc1ea5fca809ba9a8f0bfb3a02f0f539e572efc995a0cedfb554a16d5d4ca13cc4b86a3d1a8d1cce234ca6c6ef54935ee20b6d0f5adcbc79e16c60594f23c2283df098acf7ff5f1ada25660fc316f7166a0347e8abcbcc2810f2c65452132104555140b3e3c80ab5850b6f5d5bc059d636a0b5c8aa1939421f5eaceea7943658c807a0dae66d85553af2ac61f55b91efdd09b779c80956eb8719c101975ce3e7263e086bd11741da27894bc2252039e50939dc842d35920bbf92fcb75ceada9650591302abfe4543b93e984d5541786954b03ee67c033016c0149080f80403289b3ecfcf7f1f47670d84a7c01cc40d97b6725cd885d32735cbafa9a68b32ba7418bd9105e1cd586b4570b3c99709e339ac862c7358904ec6cb6463dbc227c654e66936d1927f9282598088c632463d88ae1a723e6bdd506284081b5455cb199e1c556caaf0520391c2ab456a0ef6c3622d31aa299a7a68dc996137608a4e10107a83dd929b8d2036720abb120c79e007cac666a99917f7c9bc7175e77b411e77597ee1f8f8433ec979c402888a4a955b17fbd2a619a2db5a55d6308ac5d3d5b9db28e1c525cba61b7ebd27a09c4aae0d559d6d5c26fafc0d505bef202fce81bacf21939c9c4dc70742a687ca305def397eaa90e7c26ce017e2bbcc30f249e5cda855e3945a339619f503250347b9a420c244f8c6eddb865d445f47ab16a31b669bc8d342029d0f524d4f6776854cfb3094ce7ac0439c11ff89ed96cee71894ff71e9fa7a2ead17e68c11379ff8f81369afaef9d8caf268128ff92777d21832822ccb3e68ebb47a2527b956d9ef8ee837e78cf70c359397b257c7973e1f95327ce7cab2d0e7fa9361895ea8c22453490b3c76c3ef58f93eac1c34af3b1fce73f6091f90fd30ae63c6d1fcc087c4ab3d93b2801e673a369624671587295a6382268312ad1ec8ad46a79e1cd20f7e231096232b6a1fa5ef5749995e470087792b2d2e4c3ce8a896f6c299b5e955b4f1e7e2a8d1793b5ba12a4b70f1bc0cf0263e3549581bff44e1d465ce724e26c0cf985c05ec56f34797bac586e1572e2d3f971b51e09ad46c3f6c81cfd70f28a667ab2b1dce12e036d9ba5502686fc061c70c5d55a3fde15f6b2007cc386884742df27697d4027ccdbd8b5dc26962803aaacebb5bf1786a93674c864c0a802be7b580e3c99dbb83412b74003be39ce9655570b7d34d5ae0943d9c9135c9c27a8859e80a7bff6d58567a75f1194d7c29622b6d7897bdff72da9758965b7ae95af74e3b9171d76a14c223ff29a05f7ea821f6466bd98391e9a7303a3b2dfbb42b06f5630804ff4a4df61054e1d8bcce2eab23eeb501474739bd0c983554010dbb8b0c8253a732fb17b7b7bddbb0c7a248ac92ffe7b6bbf69c701dd696e27d9c4b9c7190cf13b69ffe57f1394bf2aa918bbe0081e2fde566d7941d20419a9750abe42de7f8f9975e62aa4055bed98a24321085849586becbacb4a08f2f38c409269ef307e7ac97d99cee43aa1692b5e5217ad122ca15bbc0f8179bb6b28b0a1c36b843f6a110fa4b6cca5f21d449ec4744bbebf543a4aa91a1684815e629db98fc140075590b65454e06f6a83317d14f0a6380b3be392887e4af815f68ab348d9493237ed54166230c3aacb4d5073afffa620cc2cc65712b429b8ae9588062c7cb3e946fe5c13793443163c1e1cd8007a0141bc0e112786164bc4a599632461f3dfa972d6befe36aae8ff40023b0608d05a92aeb1a2fd145bd0366c1d403cede68559aa86fc0e8c32afe8cc9a9a1af7860be6eea2aacdfbe6c36356eac3e13bdd2a8f6ad38e67d1e579b0d03e8a4e54781c5f4ab8dd9ad7af6753b08f7a30a7ab53f364dc51824853ff2cae44a3cfaee0990a5aa8adfd6bcb8edc50520ca901cbc4d359fddf5eefcf93b7b32a68767c550fdc7c8992e86d1723c3a42b34f1710dac4953362bd07d6f3d5f0965c55b0bae53ed2f9ffdc2747368519d90145c457436a0b50c42fad71c103c13a1afcec81d0151ae0a582e3d11eb803e6def3ec07a6000d6c6afea786a2530b7490af757d8f19b8dcb0a56beb1a708812253e4983a1bda9b83461493eabf845e56e3373ea10a57ddae5d75e9529a8f57fa658b568158ffac501d2a67cb0f53d1b605312b91c986afed84b5d150a2440fdfbac91fcd60781b9e0a9b3476a50584983e5c958e2a6299c5301f04bb57f9fa48dd3cb6001d2efe452ffbdf47c9011a4c5c77811f5bfec4acd15db404dab6279cf9443b82e47ad32de31c7d324d2228e0ca43405a5ccb8a1fcdc3011f0e3f20ade5e8fbfb0ce0d8c4d62ed9446aa16513ba14bcf2db6165aaf919d4d0054b9eb4c5c82d049ae1c738bc3d38beb63baca3927e25319f883a2d77faa6451bcec1868251b1b60019d0a6b253c02338a49016fed9df05b0b8043fd707a59733db7f890c69e68fa439039447d4648c80e67c4dd5d8e97672750142a4f3e2c0846dc2f4baba20b0ffb4272e04770b1ad7a24c35fd1db3366abe5b9fa3197057a86bea278a531c1732b324d5047c7cdc8a47f517a0b8b48d9d57da702137c5fa358332232800bd4b5abad435a7fec438fc36d08a71d173bf9576935b53f4a3ec7e194d3aa88a1a06a0bc915fc894d76300b09f00065068bcb54d62472352d991b9294109b8d59bd966b338b34be412d2b80d93b1d062db7a856d6b725b05b2452e1e1ae643a1135b298806f04269fc4ca26bda9c87c203a9e775eb5d7ddd3a0ad487ee30b42993511ac4bd32cb7edf62051cf65e95f45bfb24644225d66e908f23c27e32fcb84c8c70db58280270ac22622d6b39f993935ae33b9dd8a9f21ee765293149b816d78ab56e11323f593b94a6464a05b25b7da80e9f609f223904857abb2d74c1956088780a5c7b6ebd0423b1ffc5cc3bf472b382c03fae767795c283be78d807f7ca777b70fd9e5333f7b5ff39ef83e2480856be53d2530d3931e5c4d86b246c7e45dd76bb212613a5c3012279dfbbda691fc50d9acf4b9e0d48bd7f65be63b5a6724c46124e2c7eddaed0ab6b9a5199d714d32168f3020ccdfb59aeb449bec696788c7681b3621ca3817486c9b80150b1c6d2c2e26ce51a98f17338df26c64178124a7fbd08d1218d68d65b9c846916a0bb11ea4b8a9efa102fe40c966f745d44a89dd690bf72b58e7cd4f91bca81555338dd463678c89d31dbeac0db0508f872e671709b89d98fce5816195a8198b5077236f50e21b925bb96832189a1ce3ad5699d475bb73dc1386157251478809870d340c14d3e45febe1490aecc2d71526e5c2bf168f34d44367285d18974d54b3ad46cd6a1d2790f8ea0166012bc9687f990578a1b5f16532d73821281746c4c0a0c06628bb12851fc70d74b7ff737fe4906b3679a64ec44b7f30078b5be78d849e883c8b7f404086e31f81bf98200c9bbcc762cf7474b0f2be93f1eff10d11aa02e94031c3287c9e6acc1ca389b1f3085123a6473f40ff185905e51e6391b4970d21e8111b28695d623a0a3522d0ff3088a2d8debe5150cfa7a995322695203b1f2ac018a210716650e1c8a6b64f2305480e39c06ee2657f9e7020d424249a0227480c07bdb7027d1241d04832a0fd53bd8e1fbe06f84445c4f6be13ce564ec4bde41fbd9cccfb108c0cdddfbfbaea0a224e3ad2b25b5a1417ba0bf275af16abd3e218b72f1145ed558f02291f3282ea2e41d2c53e0853ef7094879edea105d17b63dbcb76f1aab0406ce285b93d4b11dbd4493dc37ebaa59c87ccc30f3a7733d86d929a5fa058cbb38b8c25bedb2a80ade9f20376990e274c0ef5411208bbca6810e923f677d1c68520792d444ecaac95df7b8952b33285bc859b8de1039400404db644e043c86f90c19479d8c6161e782dd1739460d4b76f624685a3670d0891dbf6f8bd3a656e4f52400f7b01b147a8536433f9faffee935c33e919b05d17e1128ef37607d9acae33f9d8524145eda3a0d59ae5a20bb85a6cdbfd8f10bec9da7f14d84776f974a1be30e2c52d0b4cd4ee538846e2f22143b0ab820b3de22f4f6ccc7691a5a729d67a41f6b3b005513c65f5b83f166e8d81a7250666ee781209536d6f1c43cbda864afe098070a84ae56288a6a29e30f436b5a24d9f3c6e2ef9d1d0103eab371b365877226953073f7943cae8ef76aa0d2de8522634159d6aa4de2238b29cbb4baf913f9f2b0f0237012aabccc72f98c9c68c043cf58f338393af406e683456ea2dcc3738126aaa05f6fb8c2334825c9e350be024d6fd6f7ad271e4c89d5652384b6df5191bb3fbd91e681f788c0d304840d20ef0be2c7e17390f6feb34d730785542507f722fffdda367b0a6b303ddd7d73592aa6b6aaf14e1d2eedc654b06ed992280254ade84df76b553708fd27bdca700639d16b87bf4ff7a54063a7322b1dd919cf528802b61438b771298e9035137dc59380f8e828d68652298d75822e76b375028d6971611b627c3a8332d90601f7c7bc4107fa0747251365a62f6aa099eba421b636bc6de2eceb926c2a9bb29ae8e1f334db2f6d0a1adbd8195e82cfb177176119ef43df257e743467dc6a431f12a12f2e6461b9120d34dd1acb273c59a6903a6f1471ff5c7efdabaa324762f655b5ca91ea259e865afda97028fbdc0109fd25d9576ccd7357472dd58ae275eef01b306b8a1eafa0b01c958de9ee06f44e8d0096c7703677b90b672610e54a5d1dc085265aa06a9a86010b34dca3ef925420521c10443cc4443b82ab598439c2ba714bf808d3eb3cb6370089d4edeec0a8ee042e9dfb8a5677291bb9d430753b386c1297c6cc16c1674a90bf7b77dd41fa49237554a523442286e5df89955c39a733e11cf6add6310ad5d11b536fd38826317f8d1147e7d761ae7ad634b82f6478a4eaec042b718304175fefe118b8f7e61ecc1277eda64030be00ce20b8abc360da007cc6a7b993da71ede9262c5f49461e464b1117cd17d6aa3e88f7b0c86c27705c0c396af60ed3f938342005cddf0033c12d7612350e06bacdf307b527567d5b6cc46bdc533b0e19b8d2c44147f50fcfde8806ebdda4376fe52c353634946ba08a522f7248095800b5d621663f986828094e696c2f46f8a936c62f925a1145f68048708dc582cbe712af887d79683f946e345191ab746ca49b761fc894c9b52e74801b333eb7b4e115969618181ebd20fe8a355d2bcd804735e6fb107c050cd2b4b5a3123798094693839a6241ae80369a6b5c7d65c0593905eb075a315ee44117439ded624937283cf5afd8caad20cd61df2f9bc5473b7e70e089d0960d1818950495273c9cd888f3227cc22a50e16127b0eed5a1c74fe18453fd0351e1b880d9bef34b8ae9f0385e369083ad83bfc2ce7b0d212d2c37bfa00122c6dcbd83b4e7a3a8d872f8beb748cfe9c69aeb8d6c381d0925117adcf16d39c247bd7e43892d78af980fd4821d65a2fdf7e65ce2397a8c331cc575bd58eed1d14c9c914086d460be161079b6e194562a6b7b9f168a7f1c4ff083d991909ccea248d8e0520e7fa09d7cbee24858a55bc33c760a44f5010d8fc3d00ca7627cb110fd43679962c7e48e5fc7642a91c79894ce50eea1a7a6c529a94195e3f2b8afad2acc935dde1ad8a337ec2f7f668522520e05d4a432a10c837d0db98493c3414058761e0b2b696fd7265f01d96384361fc1731d43e608559a9b578c555da003a6f367f8d804eb8d982020e9f3986b7fa267135a5dfb72110646f1aef6a9e2cb51fb9cd1f4a9a852c435143efe89f4acaaf2f68987b43cd8b062eab665696aef9360cea1036bed788d56a337f1a7582dd34b9737c00033a636ee016e8496aedc139ab763c70418bcc8a97d3f6d0e9e43923f782cf169603c8b4036418a5b0ec03da6dc7455b0c74d2525e1b3cb038b73b7e1142182823256edb3dfe1eec52d750958b2381f116ec95d93eded692b31f764bfb3f729e09ea554269dd418225dd0edcc67675e8a431ae73109b6b010f07a9116436907769b4bd769605486c095c43c32f18b3a48b5b4a15071be2b0e5b8cd04702c9f5f2a541c3cd508bbe6022f5a0a058299867241b007c8059afd1dc8873f81ae1a7b9534b886bb1a3a8c1f62bb4c8b96d6744d5ee8c835d8f35a949e22e44a8b8a728a69948a28f32662611e28308b8813ae74c205085c594bd3a4c44fb90147c3a96b19c2dda1b43d3224b243e4e22fbc0aaf0055438eccc5fcf0279b8509a2033a0d9e664411d984dabc2a017c711219b26821737342f8be46b3b77f2fdaa75df14856d753be6e0b95c0ea928da1a868ab791bba9f6ffd5a32f8638f23f4eb4e1c2c54a6cbc993ac96eab4bf4ccf66cbdf1c2051395dee8769540f29764664999b3f166c51f587cbf70201c5f7ae4b03ece704acbb938bf5da4418283348bcaa6bdb67b5e373a41e1224a36de9e2a79172b4b7accf6bc9ef1c28289966c746355f2dc5796fa3cfafed6bd9622a79cc8177896e6f46927eb3c8ed473c76382507d1943ecbf475e3869018bee4465281cc533a2429547053a04ab82bfe9c9508007dd8d6149b67d0f287ce0cc48dfac771535a82c5ee22a0c0422140443c671541447c5715414c71e617129b7120b6471ce1242f6ce3f79b77026d980691cafa0bfd9168b6dbdde97bf61f0e96e90c3247e449c102c069901803b13b8ef3f0ada4f06ab9deac0a792017ef7cdc27cb1ab707e0e2d7283eceb08f2f67c6f082787ab500a0a8c5da05ab62cfca06c2ea0e4f06f913db33f3111488e676cdfe8c71c3aa0b3efe37e78394bf1b6918b8bfe9d7a35d09adceee3b3d613e004706b5609b9069f1ddfa240e9db8163c7d1bdb9a0a313bf2bed0dc99f1bb5f3df37d15abdc806f37f259097d989c064c37236c829f40feb0eb8d71d00cae5f6ca7240cc48a709d80f8d1146ac899251b89602d8df06050e566292950d415bd47f31e431e8741854dfb9db95d3be9f31849978263b2733125028beb38d1f2a8cc5b89f398bb9ed7a14045ead8d1b8ce36c497a5d3067708f2caef9b8b51f2a3993026aa104d46408bfcc0cfd9b41e4806072b7c8db23aaf006e22fc9e87a98649c53470df6de4864f41cf62f5d399899ad6f7480a489fcfb1f1a2f0468b8d43363d9464ae5a0a2e8dd41f4eee1864aeee5fad99469d898c4d562a13b5c1c0fa96afe267b66e60444800cb58d4ec581e5637f8cec7b8ef92340d5bbef65f6786e6586652d81d2a84bfc57ae02fa28d73fb213b9802862e1e24a6e43032085aa061a0118c3c89570693634d59a5d81bc8eae533b3f3523b35a6ff2a827180f97c7e0f48020c8eca925c6c3ddadea689e21d7d5391a15aa4355374c9444914d4f3e6843f109437d79d58d86e5c1916b90734c5ebf39d711fe1ab915d16da418976b828bb6f41f81f594798e3b895c28ac96fe6f8a44579cb14684bbef1eb978518e0c237ca6dabd2f97d93f4edc2744be33ce3aa3c2f88043d5368688facc82660109ea7a938b0b29f8982c03b1559e7143517f1d5114ed1a08dca3f8dd7a985f8c405d30312de416fa136ca21a9a7a1e6f45e2412c88e831c4e586ca126bd734e2b342c413eecfb6107504df82b243db86b03154b26a9fa93a30025c3807ad1d169eafeed6a2ba3927651dbe8de72253e9e3780e650613d0bca56c2eaab8d55d45065d8d74668dca2bbff28f469dde16b46510b570a7c32b5741520c351c9a917cc1fc025e4d1b36ae1ac90823107f666f43127ee399db4740ec8b01afe58e44b965caa190bf3c2b58d17fe9fd475e8848aa51bf56200b260702e7533687c6cb43ed477d0aaf8c59014bf5df6e0378d4aa31b36343c5aa7489bce9ab8f65232893543829ec51bb9cb0978e8c91698e468e97d550ed226efb2be4c8c5512df6a380fc50b1d14c796785d03840ed887b7fb5acc6366967c3eaab901c49fb98c616a4958deb658786f43e795ed6d9e7c23879990fa51d48ef72a8f8e125f340de2e0a80155109280973a54d15abc6603515ea702dc5be5893f63b15edd644c1ac160e64954dd29ca9e8b4886b061d8a581d694cfea916298aa18e9b369fe9e0e21e1b147131368fa817bcf307d5b30c8a65ce1df244fad50fd1e07a2f7c444a2758686bba1b4743bdebe436eb4255e5089f7a832cb98a60370dd58ccf5fc4885501185c4c00a50262df5169b7d47a241fe5f6c6add3dd54ea3d5ff40c8fb060b6950c3a1a071fb8b9801aec3e8ceb23b097b6b4bda01589b7623f4095db591f374eb92a9fa7e5e0a218065aceb39ab6ab5d065460c5318c5d3529e9f9daea6a84aea8e1a3bd6468ea842383932720f5d37914d08b5e80fd366af677f8fcc69ee522f0e768f9ad0864cd3d0b8a9ec66ed66d01efdcb1d695743101e0dd3bb1e8d15e0d11353e95070b8c0d2d36a93b99fea38cedc4c65ab888435c69b8e0a74d1decc5950f2b76101a42179b6a47794fb50d1675ee6d83523be606d41a47ad37d3699198cd415de7e5e359e86ca55648a47689375b3323ec31969d57cefd7bfd06c4bd70ad6e06fbd475abd222aef32b3fbea0577ac420a9f1c2cde1c97594b4d13492e84c911d573287d1f0885accded3b4967a7b4da5b78cb75430e39cd36010d519d0ceee7923356f3edb1cd3e8d95362a110e4f2cabe2d84a0b054d8188b4d080ab718905fbc1eb4d37f19accfcf375b654ef83b2581952ec86d9df5d5eaf7dd30efb5550da32e44e981de29f83139966e91101e4c1e19210a5539491148369982c3b24b63f996a92453a978e6e3cbc22c95b80c45fb625f5dae5305cae8b93e044f74622ee72e6ce3b1358d6d135686a96b993dcd5d762ef498ce608358c0a6220d9e0b8b496fb4c87485afe6105e75b172712ec2580334083da918ddf14d4777019d6a1c73e18724f7d042c477bfec1b98e6a3631b81c98c01a39418ae7c87856dd44076acbdbe04867cd981d1ad3525bbde49e72b2e1dca07cf95f3a5979c6198e7c91040ec60e3c7db219625c1540cf112cd3976e7c332780a8d590577a92c4c33ae84e50986f50ce115e3413902499a18e41195738e1f6ebc8aa7b68a6f53dcb78e9591ffeb90b86d8e502c90b0b0a7c69a1c51b211851a4296e5e1bc0699ff452f7ed2ff5872474d4a241cc97adfcdb4810f1ff0fdd088c0484780c549a08dd131e7560dc715aaa0c8d364cab31f04bc1f0352efd9667cffe101eeabf8755e63dbe1ac240abd5bf447d96a17ecce8ed48357d3b2e69af7794fbb284061bbfc00e6037b134821b93cda26d9e53bab59375e28e3cc9058aead2b62777333a56ab2233cd6cf99da16a215dc89a446af23d128a0bc5ce07e5dd2e5c99063a40d955ff0224577e240a949ba73fcf6854e887f46a5f5ca6757ffd826c6ff3a8734551298febb0adfa7886426d1389d83b2b4bb38aba7c79382f3a6977cd2d4af3c15e8550d64723902281ee7e8bf0335c29518bffad54064330ee24b3c5f17f1b38ba95fb043254e8ece2270f5a14e6d98aa9ef428c4e153ed402b1f7e26eb70eced661f8ea406c729c41367de0c05600206c095d3f6cbfbf72aac050bf1c1a0a7de220955ceb6fa4a59c7d0f1e664a2f024625e256aa88f338905793dfef6b34bf99c1f1106d9d9b759f23c7e863b70471f64b16a963c912b83a4d759a863b2cbd3e5506ae34e82c1524508115e17bd9c25270b621912e039a2a1c6af21341f1a1372ec7495572f01b84d34147e3b809ec0e9485ed692893989461a093cf49c7876eefc10fe159fd50ae8b96a7e21d0318758a9dd2cb3ba305444cf493936747f890c5f043f502ab964788c122e61ba5a510562319177b87310513902b1ffa4b3e356a5319c5727cc02c3e610fdff5d87f35ac29ede364021a3cb0718345033dbe405e6570fcf4ac1ea785b48b8bf1eee78821c85dbd1b035a5bfef19b53dae894775e40ea6d322acb368e91be6d49a0a8362e7c766258b455872d41318ab979212d07b2a617043ebb8c27003344947e1f7c3690ee123550822e94c284941acdc87a40e0201590ad5c59f150ce7e4d346113513a882197f4ec058a07e2ac97dc47b62ed27a79bc10c5fece222efc858eedf7a6e894361fba6627fcb2273715ae4fdd260ef7e9f02f2c7402519422813ade3c764bd25a522d93df478b4037434d388c53b2228a6c5a56b4f23978f55a71b0d37b79083f9be8f6edc6a7bd0eb1400551150459c172804d03409d629dd0096e9405a4e18fc6d81d2f5249bdc55f72d51443a38872b27e0678dff67d509289b03be668e42182043435c60c4d89948e1d4006642332670192a8886b91c91913c5b5206b69169a17e8d02863c422d5cfe29a950bb424a5d2558937c0464f25735300f2482cfb776af8d9c0e3e701de5018197d2ad70a1bed091cb73bd84a543ef764b3e494f5696a84af8cd0fed7bdb16abc56f1cea401f2ab0b0f82ff82041826bc8640a19d5c13b35218227642ab02cce25bfbe40bbe8dbbfbabfa865a6f39bae7d833b5d266b27004427cdea9b59fc6c37397ee2907facf64f7d5e8cfde026b57aad66356ee2bc5003e9661258be3074ea63666515023d8916e199a3bdbb3aeeaa7d8ae021b312e31f20a6bf133105eb30f98e265e16519482bbea319c8adfb1a41b795914d83c007b0c252a9d7a6e0c67d8bf128042568f46def4a199e58077f0462af84f0b462882f71308695e24476681dca1428e46e5e44faea6c3b03ea0838aae3c39116d16374c8a297649f2ac8b75647f626cae2bafac8be2730c3135cc795ec72a500c14864fd999b4a6ff08e537be2ac8c6250df8a69c7f1713e1bd45967abe42147299ca514540bd3b13561df26cac3f8e0bf7ed07f1b29d23f2ea500d3aafbfe6996c08bec7d6a1353497be43e13358a35d780cb0bd10a5eca74dfe29627ea0fa8213626f217e102a451df549225910c0d463967beef760e1b9d657cddf02c265774fd7441913c616bb84a7ddb751f9daa2ec531581c453e4160cd626de136de02f6e9792ec950863ef2ebf75c7c5189738f870490b16c672251c819edcbaf3811709878d4029182d30ad94ef7ffae71058332689b9d2435805ecc532d60860fb4f45b5b301f784d9f8f761bd644b2e7b289cd37753828cf200cb19d6a02e867fd4871f3bd2501d3fa62730b190cf66a9fc9fc8c84d847f64b135827ee02d989b0ab301f058d954b65717fb44ba337b43f8e6c827a2b74667bc54e739f5dc40bb90d26e195591aaee6456d9c523357dc0224f4752e9f021f5084602a00e1a4dc56f5b6d07a3e46cab6fd213954100b4371cf019df217fc8c2ff3858f5b646e0271a8c3bfcc7174b97dd346b63e47ec276487f4ceaad1e0e22581643da00ca3f45842d1f773b35ccce2a8bb8fe337a7710685cb2e87dac9302f2e20d3f6b3e8c0104bfc65f12595940a88c0e9c34a8d93361bc39edb91ee62da1b8dd5a32cc32245c847a8d19681422a0cae410d6f9d930f6c77a54cc1265763a6752f90b2fea7964eea19ed557f3ac25c83bcea5c8582abe05236fa0dd1fc359f976937b2b8970eaab08236282d30414508d0fad6580a0e45806a0a259403bb6afc1206dc4b04d40a2d86d24a54f17a179924c9fd03d3bf3ca09946b79d3b8a0193748d26b97454204aae9b556f104052600259b21a8141b08dc76748be1e695b1d99f4be90298fb39aa934f033c2d894dcf2f05f095fa84c7c58f6cfd135accc172ea010a7923dc4502cadf65f019ed39e03970c957e50b2e6efb627bbb5724ef86321eb25d0d6de7dc138c94882e3fe3bc060b5fde221532c6cf4679ce55c9ad7085785efb17e07c7b30a07caccacddae073755d0255361da690196753e13bc4f5bf4a11a2446c85405b75380d350ec66ad1893d4fcf001e57571da8594d66e6f5b2e0896d397f9e44c2a81442cd7a5b0be046801cdb3c13517441a267f86cde7a2387fae6ade2303c47fc9f810df23c5481975ab267ac3d1eb42e1eb762962d51bc28d424c8a691319c7862874d19ef0fd0b8fe8775e160cf80ef23015bece2503431a10dad9df89897facef26b29821f55170bd6feb804e08fe56130f83852371d2e89cfb69e8e6365ddf42ce9d69ea15aa06124e0d0f039b714226b1d526df07aa8826fdf9b3dd24a5462094c092c81e4fe0a501afae3061c8b24421dda61d03f386851cc6f068d6fecc3e513d8161f7d3407cf3510071f4b6f2f91ab733616ecc1b52b8c8558e2ceeb1109f47a3c7a2579b34533b8f9f957aaf472b69eee61bc7c45f983b66102311b6c0b5fa537264648b10ae43f57ea5d37d823dbe246dc5361efcaa7666a51aed1f159c918c44704ba29e7a659200eb39a0e9503864496ce0781081397a373e5081f626bb48b486970138a5cb96c1f63b32061d04ae55502e38aaf28700e3ea2bb58f8bf5e46225c181c73a808d409b8d5ccce8ebd74442385a7cc32db765b937b4b29934c01a10a0c0a280a14648fd209b2d88a24129226cd8a24994eb5f26e56aba094af564be84f7087f7ad7c6e63befda70d95fdc9f2853e4fa100a278a7b37029a42286e880343313a479234d3d4d2d25234d2da51afb1355c12b3a4f3f26214a424b32e4fa89fab979f97669f92cdf437440d817986d893bfa3cf93c81f1816a1737bb9f2c3e3eceadf2f179fa49d2496a25f1ce17306154610729aa9c4e5290229b5510e72a0a4a70ca9de0cc87a0cb365b5d6b625a2272597115b98c5c472a2c903c1bd5539b2ddb6cf53cf580e909e3f3949412737315b98c7a6a638709c729f41335f6d47ec9c7501d6f8fafc72ae8f31e419ee37c1688033597c4847d986d9502af0c0100ed068019cc067b8262413d7df9b1fd64f951fad1f2b3d462ff84f931e387a95bed62a6cf1312da10d0076afa3ccd964f94cfcd670c122155f893d4d99a45cd537da07ba0abc9b5e4d2e252720db9a6b8885c565a045d4edfae2d2e23571617524fadc7d6f3a5078cab480051dc4183a09da017068aa9c9a9e605cc17a25b9219adc54e02658a2afca52457dc91b724cdb6240911b20a52f90ae454cae8b2034d063bcacfb993dbf543f0a1a266eb8977dae6a57684949445a9c52020cd653fbe17835fcb8ae927ea47cc981f3db59e5a8f971edb2f7d14c7acb73f53bf5c463db5fe02064c989e5a4fcd0b5d45aadbcc0df60566e37a535f06aba0ea6210d7c1877a30ffa4a485a9a9c577fa32e4c526190a7f6e49662d761221285ff84b5780d428950f987e0169177733c19902af841e04fc899aad0e7fc624110af236fcd1e18eb5168240403b5b504f35fe09363741c9cda0fc945cc97f0bca9f01e55f50fe7cca3f412e0794bc2383f8b3666b82dce3a55bdd539382abdece37419cf78c7c13f4f115bc127a2a0c7f8077b62688c157f00a10a7a19dad09f6782f4810204080ac827a883071b9ea3db616bba716e4f3c43bed44be5c1797e2b894d7f34db0e6bd23df04797c0abc32c48508f10a5e11d2f10cfc074873d910129c609104a5f679eaa991b0345bbdf4b67f1a02fec0c1adf620e04f1ddc6ad7c192420a4d6e13d64f7f41946149a1c97d1c6f623fc749589a2f126addaa83633ebcfd870e8eb15ec0310c38d6c3db7fe6e0d88db7ffc8c1311edefe1307c76a3866e3ed3f70706c87b7ffbcc1311c373896238663f4870d8ed5584a0680e642a18f495ef8f624b3fe09bdddcb00ac1624fa0f466692f2ed243059f976a6222dbc6400529b27df5e13c3b7f390e1db6fa07c7b8f28df8ec10cdfcea2e1db7d0c65004e252ef04e7b0ea8e405de69c70195c0c044cb408913de694f814a580095b4a04488773200a5cc07c8bc83017885c623039d055ea1c164a0f7b8096dc00ed8dfe1356007eeef701e600758bf23bc02864a6842cc740333e5f0ed4aa4f007cdc9d0780620cb3cf90d0195e8802ccb00ec644168422533986dbe1eea8928dbd7bee9999ee8ad7cd11b75e01f91e0043fe18504a5763d163e4ff3f5484f68f179e227b2f83cfd44f5d45644dc91998e848055a93f900e04649a55f08a8e539d9084da6c7d19b7a17e84dd848030a8d96a0702c2a266ab3d047f40f0076ab660361bd48f833f35f0c709fc69fa296ab17d06fc31fa39fa419a837fbe7c7bff70c162cfd74f961fa6ef1f2d473e4f41409f271fa8a5f9f209d3adf611f3ed372b1058df853f29209e24899e9aea67cc4f1b1c83e2d7601f12967ea248f0d22f20de4e42ad5dd6078355900d7d9e5a6cf725eef8e3f3f4ed3f51edb2defe23e6e7d6ae94b7fb1cf9d838b6f2761fa47e3dd34f14ccf61305b3fd44c16c3f5130db4f14ccf61365fb769b1508363f6d683e68ac5508fdd5395045390a5e1bda11d1a7b2b2a44395259b5590759bd512faa92536ef85bf74c51def4fd4b7ab409b59cd2a84fe94736097aa6e67b31f6b4feddb53602522a156a5bc74a9456d8229d83741eb01e09b60f71cf8f9784574848460a53d6e7c66cb199b1a1e3b6864727ea8b478c2e909c0c0f365bb5085ce55e1e55c15dad99a1a1471a55757819ca7c0ce2938aa964a4879374b5039375d05d6003451502d51ef40967195d9d9ba5236f30e8fd205ec7ca5aedce0697704e8a909ed62a716ac3c759e35a40d9eae969c5ad8f223333da59752ea5c97d32e4adde919d6ca6fd072deeddd2aa8475801056b69980329470bfcb47969431a16650875dc3162e0678729d80ef45bf7b8e77c1b5ede913e6660a4611e35f073862c29c350f5f1d6280e8dd910abbdc5f9bab3d5c4a45f3b861cd004ea26290c08494b29a5ad1cc29d7df551e7439cea36b4ddec39ea6fc6bdb3e7a7b36a0357bb6a6bed38db2db99043f22ecb6d4f6f97ccfc35c82d82cc3e7d82dd056d174bda5d1a86e05f736f0f4c2b651e9a84e7c9cbc3239da77926cfeb088f163a5f4891a5f369789c07c64d3c3c1ce31a55a2411669060db05c85c04f6fce59dd73c9852fc40790fb66b5926ed18388940b6b518e28e83c92233c9cc0ab62891f794965c4e59e9d5840e2c74bad122623743f3c9301048d898da7a727bec81ed006185c6c4e78314518320afc00450b1f6420a3045ff4a492f410d022c61a4a4059411b2ff067271686be7b7662e1c98fe20cdde1153d13abdc0e4739e6ad3bb9cce1061ede6ab10438ab9e773cfb78762163aeb422776089c57583f8294df0b3a68a2b9d73e9234b127936988ccf954fa9346d187a1e2861f335a594cd5a8b537a11f4b09942d7de84f552069456baa50373508577a653a973c3fd42155632a19d53be0a949e02e5cb70b7cc9519995012cd965c9a26ccc9ea887898718958dc9a6eedbd4dd64843e8d9ccc94b8b4369786b511eeb80b42bdde39d1c1edc835d36265f5e0f9befd6a4bc67a7fdf3f90b56e621a1b1649e8bd22715c224075d43259283f69828f340968935d2e7c88dca84235ec864a66a98e3c5952f884334615680e50b6b4ca625dc0a04349ec6927dee8126cc1613d9923e27480ec698e241e01679b5c4b6a4a9548a53a9a992a1de01fb743a0abce3c5956398f00b20c0ae06b06b8628d4114401f6e8156fc69a2f2fd4408b4d81d9e2396748c55ce929323cd6e9d909b325bd136652ce66b33eeaa429ad04a58f5a4b85323485e8861ca6bc74066aafd3da13a4b35872850029b3ee715fc5a91d27a594525629a33a8e69ed925366527a9d93d10fae0f5eb64ba66e0dc13ef209e640baf42e8263320ade91e1f81d7528977847bace0d37e59e972517663399aaa12cb10c4b75e93ab20868ca9ec9312dde5a42cdd6944db3257d494a6f6943b954335bfa25991e3c3129f9fc63e60f97b6d82dfb6f34ea8e130a8abb4dcfd249935ba60b5520814cde66cb8c5b38ca97344c4d16ae71050d74fe5e5cee398bf96ad9ddc2c2820b16e339801af989ef313700d29b99b7f8b6d1e25697365fae742efc40130d00756ee7eba1381043e4a20b61b016bc20c4c212627630da420a07a0c0ca0db53a8ec6c4c0a3163a5469c289349a6048c24b5c9801650e315ce8a2040c08e30b972da20883082004f004d2196e08c1041c5bc8180c2a9ce078411d373c49b1c21139ac11154417562441e1288028820d26a12f9ab4ec50c336431162aee0c18827187218fa820a1a35c470f905eb22071f7c6062a826a403061b54dce0a40553f420632627d0486ac110548870412ec941460f4852d6a821c98d052968019824232f6250410d31e270828b172f7eb8ec47547901c905221664982531724245e54c32f18d0517be9dfa0bdf0e0483130bb49f3991672727603ccdb393932edf84020232a1cdb25af2853309f4de4b7d1ea87a5e7193b50df5d677c07047d85b13768029c8b76e82756bbfd0ba97e29fb7f992dcaad55a3a649578c77245ddb26e6d5bdb379a903b0ab9a216ada7a81b47ed4ab9f5281573ad12b7ac5b96f599242e57649d33e290a44fbb457aeb32be0239a316adcf80f6572157c43be013775ab74af60b473b5e2506f3aa2055e82248f93d8084f1587e98dba4be05b8d1ffb2152918f3d439a74e9de3b82dce1f475c0982f4ce53a00553ee71e028bbe7952d807c1b3ed41d61855705d9b13a0752bfe2b5151f2e3b7d76dae18ae77914d88187236a3bbc9094b4830c518eb85911930312332b5050926a569ea0b03cbe99d4fcbe5bc3e2811d69918b185862904644592bc408e2c7efab4981a24ecdfdbeaf26070a9da55a4532b3770e926df058879360da55571ce5264b35be7d5cc934641a73ce5a7f31a3985b8e215f57b6da79877cf5ccc53e824c306026981fdb49cf7468d95c447a2d1349744054a9e327143fdd3b4115db4f223f5db50a9adfa7c1176e28d581858d2cc0908d37044384b102441114242064edeaee6e2dbe8d18e37bc777777777ce4f9d4bc5879fce8afa5925053f9da938113fea8da81ea86041152a327085051eacb05121860e5d1048889914f6e32787d561cbb773af263ec890d4850f34081149244c3065453f6a3fd9b282080ba216be4f8b14493f6a3f1705924319dfdedf37e714e304d19c73d2f9394c11844a9917fc90e3d2679ba32b5b00527145c2406b286ec3823b368d48d3ba879e7eec1826d84f7887c6e38d3b761dce744aa4dd7eb338c499449a9cda4bdbf8d52c1a8cf64f336a467547d1a1ea8565117ed9b0a774177ad0463f7d8cfdfc21c7ed1d59b414dee92063d8ef871cb73ed33c95df5e5a9c9663f425269975b697a62d2549fbd03a4c30eeb4f65e7ea2468063d8c230a3c5761f735cefa9e5530c4fdd75e785a7f9fac6ef8d3bb27870aaf36f5043b13dc8326b97b328260b823f5aa6d6b27274eca555f7985f945bd5adbdf4eb933bea7c757183c93f9d4a59571c8d0262b0f9f850d72d077e191c37c20a3ccd1cc771b23d204925ed7898f5ad2e0b36348a2b6b79e41a3f9de5d06c49a516672893b2c8a4db62538b1d0fcfd090fd7924c303b45333b5387de469a5a3d99aee8198db473f7d839b5c835b330e25274bfda4e96714eff0fc9176cdba0ae228c77194b955d09139eef8edc8709dd6666bba8caad566cba89651dd93731982485c6eb1bae4e418a19ffedce5094bce233626271e4d8020a73399d361d3e91465d73337172e7bf7ec84831c9f110e6ad8271ccaf094b8ab67271c6c38d47040b2b6c3018827146989c381488659c451b53c36b4008aa8511c64a0491e18cf1118d26db6d8e230439acd165b24d515b686cb3d7379d29252c19531a223e38908389e7ef872eb3397a71d903c6ef728576b77734d290d2b9dd6721ccf2ac49c7336cbc54adde7a44e27dbebeeee4178b236538e0eafbbbb69f79cdc4e99b982312b576dc7a52c08d652163bda558ed53f2b3787a8568a4799d6ae4c7987e3ac4bced659b969b9d592fee93a39cf75a65c322b15eaf40fe6a0c79cef20394757b2ad5c5ddaa2c1ecb27bcf4e37e8308230430bca5f22feec9c1bed779cb596c50a298b5043ca230ae257e1cdaef96a3d79caccb086637c6fea861670e0a02c8f3da3f2c0788ec084a23acba305b5d77e97e3e1b14e304c010c71545310a5a3681250e415a32b48f6da94d3942319581c8e164cb758004761bac53fda3bc294227b59a32fadb8505dc1250c2394b839cf5cc2a8c10530ea18c186288eb3cd6c6f9eb99481c3d367271b86f891b544a97896bbbbbbbb656e4080f8ee3680fc906249e160011c2c984f4c3d2069ede9a38c2bdde352c0632db5541eb10b2f9db64be665d3ca0a211b6e640b4fa3942e59cefec79a1f73bed3f96e83efb6f8ce69e7b6f30bc47752d4f8ae0626beb3e1858ee748c6d93a6403ed41431a4f6bf6227df7f5d8f2d5e46061c3467e642719de80e2f4d32f0b0a0b7eba4759e2a78b33c4f0d379dac54e3378f1d36145fc74a0e944c3d2d79698e393b3d96c469332dac10abe6590228d3b93b87455a78a6fa713cb0baa9fce6404fe6abe5b13931cc450e5dbbb004870b1861b5d68d9a10b91981d84a26c41e3020936d272b4d239426b1774f0dd2570810a1b5892a0e2c60a3e9ce1060d528af062892519ab03a209a7fad57cb766a68927537c3b6d97cef757b342f2a40ff72bc8ac1621b58b296a0906da8fd5680906a31f6bd20bb71fab969f75a9368dd5a9d67e7a95b222c162a5b2122102d2d96c55af44b5878f2c236905e469c2ca125ad4a2d10cd31d2b51256ad7386fb568be8a78fd562991887bbe0128ce16750d6ea18cf37c892191301c2dad4e89e68b978a263de2d8ad5decf4c293af3ec7b48bc757a7b3f95a415665acf00329b73a5057a26e55af4dfbead5a85d335eab8b33549f017b1271d9447229031f65d3286ba3b4d5f8289f78ec70f970d9a3b4228d747c9448afbe319830427c6431a18f3c06f4510abd741f2594191fb9a902f111f653babc2f6de27c892d97f3368784a3cd201c6f0fbf0947964d387a4d388ae1c8b3231c61932af56dbe2ad16c4ddfe134e16869aeeb84369970b45d385e2e1c5942c2d1c37014c170e4f170844d6a2be2d3e96dbe8a8441c29175812815f11fe1c8d2c073c2f13a4e386d1b5cab01eb160979b66e3fdd479649a963104e5a7bea3dc29145fd261c9dba4d388ad46bc291873a8f7084fd386f3bc2d1d2844a371c59d35ba008ce78b14d284f5d261c614223cf18518c8779eaaa4a94aa443624eac29105a3b69f4e0494b7d9a2b3a9d3352e704d450961d878879f5d2584e185457ee71ac7c1c40e462821c30d60bcc826bf604d3516e74aae56b4c5d45d2de1c17d42a6f3789ea4d96c5684ac84304ec02dfec9c43fbd57d3ab061abca41cbd4053dcf17e09612cc122fb94108613cc01ffa521f05227bd84b1c49219eaf6298784d7eecd20c09b097aa8eb09b01304ca94524a5b5a99e9ec314f2ee4e9d1fb5ecd7003a6830d29a1b448e4873b72348e46c7b773503828ddeaa1a7c1684a9fce983bc290b48b9d5c80fa76a0179210a6c31d391a8d630c73a4bb5ae23df34e055334dc9273a664a8cf4f328701cda79ea5b473051271ac470efc944f6b58674336cf9339ab208fada5b4560ea49ded3e09526b6d4a824841aa2395e77ddf8a995982942733b304d967d867d8bd994f829786e7e4e979343bc41a25769b55d0cd8dbce15153632399886a8d31bc196f86ca9a642d9e70b8d23d29657fedcd49295d055df76aadaba019f738ae53492965ea4b7deea93e99b30af27815b472ef0b026fb82b1999947b333333771574efcc95595d1a9a7befbdf2bd1428dfeb40f99e07caf72c28dfbba07c4fe69b596dc04bc1531ddf845dbecc4a04d673d3b3cfa3f96a28a5f912e2ec937d12cda2f9029d7b8e29cf3ea5b0ab6f43b30ed3af399bb3293469f3e59eb3b7adfb4bbb661a4c434d225ba9f3062f8425e52fb8ec47cd710ee27ddd3703cab7df0cc81c97e2b7b9093a52a5f240b62647c3ada9a2ded404452ce601086280015b1a5e15087e717d74406977a7522e59902f9611989ef2ea408a5854660c3f398e9fbcc64f36e353e8388eabd2bb18c3051501f22be726f4ab278a85a6f3e43193a3d3bfe9f748cb4f4ba9b5264c13240064c723e52aa803de9975f4e0a77354fc984a8527d8ac71533eb2eda74400eff0f0cec7ee9ae18e6c9b73958094ab5c054a2a9eae20f378250268011ae284385d58423b145794bec97cea1d904d5f41d9f4d4674bba5c69f1dae9e3b0704739a58adbb927bf1a35eec87a8e712e9de5120810168b4e6f9a02174a33bc93a3dcf2d2050f32142f9d6513ef7c71473945690a0e3bff24b252245d5298992b90b22cd6bd4ab3d54a526e792999146935f84ae38eb0974ef305fb40312ac031e935582af787970dc4052fa5523fe11d295df2fc240b068d72ba12e68d3c3b5d41819319a7aa902f29e980628d71bba04350225a348f381607738c3aeb89cb44188ef326c3d4bb66a04038d550a9dc078eb1209dfc205f9308aac3d720690c1e78108bcde66d36cedb10bcd3de93b6c65585923667f247861a19aa729d074452078e51a7c06c4924a424423e31995466b85b3826fba88fe6d11117a655708c7a3b758174cd30c6b85e502de6bccdd9c48277daa78f73d63e87f8764642124d209d7caa61d3e64b9cad76d6e570bc14e018131c6b4276d1c51863b8c0053f3214474581f3c63b7dc43bed524ade60a95b32731f716c7efb16de69f7e6adce1b53226a34671469dee810b5428be811ad724e5abbe614ea39e513c7e606641d4e57a67c1701c3b8d27b65c20e0e977d07872b7d9500955b9f340bdb051de39b4251225a345bb7f9a243f08c835bed4fb09840e2dbc378f2edc4824089666b8b4dd465a751377380d2f28ef520c62dafb7704c8aa258857cd9d97281744936a4d8ce1a238bef37def851deb0c022eaba66b852cee4ec1663d6963b02e0e5ad83d88dcefbe215cc664d3443eaa72937272188f8b187da9ba5931050bee56c7291673b5bbcc31e95eac2b957c205ea2baa2b296f96e0a5dcf3156474e52a57f90a32ea6c53a0c8aa3215c879389af0b7650dca7721ae8fb0ba346bd37ca99cf35aab5e6cf385453ae7558963501cbb796e62b132ceab05dcd92a61e532a10a2a5f852578fe852aa46c8b1cd06c715c7fdc079cf3ea009c33e75e0a14c262bba65bdcad1c9690d522c7d525dee160cfd52518927659e71c4849579738c6cf711c076b91f334eead4f5c944acaed9e9d82d8d225881f2c0cb73e3b05c1a4061514bc605b020625420c1561b4f4c3d151105468576c414489124452104ea05c19329ae305a3a81e6ab400cc161d1177c7331730513cc1054c12528031ea7cb8ab672e6072e8a146f7ec70054e760f2ce5e4f913876e907a5c738a06033955950c97ecb5a6267310034d0e6c529f2795744a2a29d7ab12c3a3935a2b25183e50ca75573baea31da574d290da5a194cd341e7ec593fd936dc6aafdea1cee4a96f44352164d9b8e317ebe18618ac68c1ad4989159c10e2045778684389282e5ca1a2ca9d615a108061228b142ea670c30cd9c8d3b2ad81444443125120c9a833992f6aa75321a6902215c494499f462bf86aa24ce0313347c32d91b572dc9492f3c9f1ea00aa1e2e916c59259a2f1e6dfe3d0ec6d44bd0e6fb4e2c15b416a4b21a5ade9134b4aa90676bcab8e6bcd464713fd040136ce14ad92465825809c7fae79d0e34ed741b2dae75e9365fae741da22b67eaf8f9ec40ed294b737b82fc629fac4b33bdb854f69c32573cefd5025ae6b90a94b314a8c20756200542e8c1c5049a338e87540a2ecdb39391146b839391134e0988353a2c8060c1b5f6bb355c445951399aa982864f872499256cf074b8ad801862065595a38f071952569e3c9aed61a60202075ab743510a88166ce07838b269dc5095ba1fbed440955819e2782c172544514d485152c556040d4a76b0fd50654809955a0f5b0f13743c2dd7dd759dc70417328cceb8f7990b195356400614a5316e3d6cde9c73cec9712e274542e98485f408a5b48636d353a84ac3492533f39c734e50ceb9011a27d99356aeb32995b72395b2dec71213c601fc922c2f486a729674300045168b2539c62c16cb729572b5e32aed581468e9e3f1baac940428d0aeceef91d7c161f55c0d847c5b2725fc92338eabd4b94abb4a674b4b4b2b1e32337276c26cb5d3b05cce582c564f168b3579b058ac1b38bc310523cfa16ca794d2eef64e811bf2324c01a79bd4a73d52f7ba1b47fa946008d2670ef72934e9f9a540bf497dfb1e9dc3fb5acc69c7f1163548a31dfcd6cb265574aed3ebc6595741ed0c8eb4bb676a154453df9c93520a9b1ffdba950d9adee0d85f8363fd76ef7e0d8e9caa9b2a494929a5947295e3bc725cc7d916f9c894e29c737a900fb4b8d23b184fc74472c09f1023725a64ff408bdb1bb871a5f39c94ce1f57f8192269917d25474faeb32aef93a157a552a928e77529c9a24da5c2f1039d55a9c0a4869fcecadd93a1f12c47ebb74a7568a83c4ee5ad40f95dea6dcaf3bed5a74ae5b058f672dc0e8ed62ea5f2d0b8415ce8438c2bdd5a9756655daa38975c2a64ab84abe180ce11fc0c61fe746fc78e5510c763d20904c4834e24ba674faeb32aafce6cf0f5f38ed4a7a98e997e9ececa5de52213e9c33c4760488094f088e25c75ea047f95ca4bd91cbb62b19a04dd2a840669973a92f99ac9d940fa4ce7efac4a9c016540200dcef05495c554ca69751653de7929a7e12882b72c5b4615a642262d56da4df3d57fca83c72a88035a52d262af94b848dac575920c92a5accb738bac786af820851a3cb3d9ac851fa2c8481fb2781f06f33fd67cdde2eb1de354748545c4a5e8824b3abfc1153ffdf210f5b387a49f3d8cd9218e96dd2a68bb9cbd82dcc1947b9f9d76607ae9d2c5cbf2c1ab4e57225880ebf8d0c726f5bb5db6a4e2b1ced823eaada72aafe812feeb2b8f3d1fbd53d639b672f60dfac57146ddb240f08ee57c600eac733bfb136f7d6cd9a6b74c70cb7eee813466cab20234642a9060660575cc0b66deba7d01f30d1c85532e7cc1760b961b178d323ecfce96f5e96fc5bc0599ee68dfbe75eb06fbf05b0b470d6b759d246e17725ec314f102d1ccba7449c4a5682663590bb38e3a64a98fc3bc751b10a704ee832ab21bb7be82ac03714ab071ceb950059c1a767e13569b500576c30b3a8e642a90404608d51649322c2a5f41e6cd8fe7ab55f0d9c26549a602093e346458689c041d1541c8b0a83ea8221b5942c6dcb79e2a4a19b54bc6b9653d055fb6786bbbbc4dcd88e6b54f162aeaed0d081eb922462e09ce89b7be43cb1dadd2a5b3ab55520501b56b8dcbc3c709456fc832b9ba82b3c339b72e64ccd562c5b44bc6addb28abd4aef0addb13f08b2b9a2deb52fc114eb51491bdcd54d2dbd451d1dbd4d07b36357b6b9fde32d45b1aef58e78ae68b7bc22deb473c27e5adef0811d0322bf355cb1d2bd45b9b83cd816392885fb0a27bc41496f4d6ef54f2289440daea4737a173bbb45a00e75669b6ecbc793f8eb8fdab760fa4ddd12a19c0f30d50dfe1293fd2a2f50637b0849fa745eb21782118c5954ec3a8b73ea1783ecfeefdcc550278b65a7395801c9f0f75a973394b68ed2a2bd75aebcc9101ea2b39615d22ce24495e409c7352c02f2061cf8f1ea8b188524e0f54912b7e15a402d362f74085350ca1716ce6db716a75be3c9b746bbda1587c755ae318f5ea3a5fed7c01f1ea77be82fcf0ea3e84e61579b3cff1f1fb21b4f9fa111619422b3284c2888a28cd9711a87b7f3cbd48247d7f4246a03cc9ab03d070c79ba69b9a8f1bc76e3278f2ed19ac96fcf81afe788fd6ae9d6ff7a0f42bc7bdd9951ce75509e20ef7365f39fec4d79c1cffe12cf403f472c08f365b35f46e2dfad072475518d5d3dffc294cbbfc4b8b62da5543b7b578c40db224aaa0bee78b93b17fec017d40df33c71d69929e7867da7020f8495470fd29039a37a65bc18f548c21be897828f792e73f9c2fb20fa756ab0f362ee73edcb8952669cca541a2396ad7749aa490a349928902f06e4bee8d772aaf44a51ea86eb55f1f6c5ccf7db87155292b65eac6a95bed375e6ebe7838b5f0a609881036145605a78311f9708f769432c1a007aac8d2574469ae96885f1dc7a6f4e571c2343d0e98a51a10a776e5725efd87371716db6d9ce72bc775d3d462a5fe03cc096b5a6c362ecb7db8714723505f71bcfec871db0d979ba61ed3c70cefadb101c7f95d9882fcd1bb598a23716eb39c2938b5b0068e35cd178c882689c8d01d87c088be1d66054634644abb461452b42150860c8ddead5697fcf26eeccdc12faf28c6407dd3e4b90dead6ee63dad53d81f1a85a8b62bcb4d86196f0571f4128a0956f50c84790f6059c6213e23c8144e00c1cf26e351c6b8edd7c6d7ab71a9c1acb47ef46abdf38adfe23c76d55882a8b89db03474c8b5dab210ba756dd71c071be8f300589410fd48823e6db3befd6ae1a2fb676d1b88b87b7e33cb5ab265cc20fa65d50eda2f1769c30ede2111a0913d5ae1d210e4d6804ca4854e38869d7c5a9e18cf191e7c325fc2b1f738472683950bec33bf41de2ac42236272a67c8f98b007ca5385630f948e27b98c0f36eee86e5c7ad3d4adf6be69a249ba695aad085044c90854bbc6224adf6e04ea8d44d16431025544895be47aa086d0e20871bef4cb6db3d53860bedd471a5786a337e5a7fb50e3d670f46843681c0379a7076a723d50df411fdfa3179fbd0339ae378a1e084b24131902911f4088100942848848c44551048988a1105127031c5114451f434451148910c969c96c40d6f13821ecbc7d198e2378ea46a08c44b58babfd58e346c4340742b6d1081418ef667b2366b0cb8b838d8461973786c5761a7a372877bc69aa7d7b919b26907744f87ed40115a65f3add8289f9f611564134599cdcd1278d12013430e24effe1409cfae8dd727c86238fdbe6b4d526db1f2dfd00e7abd6aced29071447e8c0030300b97147ef46fbe94062eee8365bbba83fada47fb0128103716a38359c5abb3819baa8019e18ca6d0d8015019ac8ff885a9c374d2d22f1eca404f5f56992da35de34d1247d3b8d52bbc68fe89594bebfce089aa49b261c9b37145b4dc7a9cd970e8e4d0649007e9200bd6ce6d2084049d00e1078d42c6112c20044188100363705e8c15a61f0e5fc00c223e3bcd3ce79378ef36efd0a4011137d46616cdfde6d09313f7e454749dfce55db97767558be554b0a88426b578d3203dfb89200aaa7ae8028b3283350fc0a8ef2a908aaa7449e168556c15aa340793ae78c0225ca942843d2a308458145f9682934f3665876d0a495ebb06049a554df4a4666862fcd8e8f87d8b36bbee661f3754d8d8d8db4e1513363736373737353c363c7cd0dcdbdb9b999b99159dddcdc7c461e7b17274753ba3819fa274f4f6ccf5d9e34757982825f3d77798244019a7dbc48f7a95de3b5c2f7cb45ea17379445a95f4274888b6fbf4b4cfd12929925218753bb6aad766ded62a72496befd82b17cadb4cba85da34ae916b5ababf2edf7a85d1dd2b7f37ccd4041cd40cd40d131aa94ea139512c7d8bbe7237e944f78a77a07a6206bd2cfda69124ca5a4aaa994987a5429a99c545e5830f472f58175484ab1c1362e7f77e158937cb431a7cf94acb476d10a65a85dde142bb588d6292dca0a4555692d8c40b3ab491b00810708f2a98f95f64a1cb379e92a1ac77815c2fcf103444fe98c77643855432ae8e2444c172750cf5d9cd89edd3e777162c573cf5d9c34bd2480c7591f6d50eab4eb3aa9722e65bf7e798aaa4e2d7a21c7d4620a6c5f4156fd4e6f2f617a872a60a1ae42fb2ce15361fa175ebe1c5ae99686e3f71fb7d42227c71dc55fe29c278fc831ee39aece9ee35c268edb50965b9a2dce71700e303d012c9b21cfd6f42b33e46ab3c5491ff99c7ce6668b736bb3b6dafa95539f6a987ae3848ca87150661219b6e7388ee3869e73dbd5cb39d7e5f0d479582a42c73967cdd7e4a22c1c4c38a958548aa7dc534aa9c400cb98cb85725de71cd7759c4f9f1ebf3af7b0ebbace612eaa244b9972550a044885380890322f88c3e15c3e174aa32c3c3017797cb664eb2629114f5880e2ad03b5edb8ae03a773e088c2a350f35586ec4115301753291a094aab454de658226e109ae2a7bbae60b9e08e36057a53c41d91bc64630b14272fb9fc0c470a64873b5a7be70b0bbb6c9ab4b40e716c4a25aa4a554bbb3c975e97daf5b9f4ca54cb6065b9d54a5729ec8344722045edf2d2eb162fbd7ef132fc326e1d4240955134a46cd933a83219010918d8171e01f04e3b058ae1727cbb1d68b258e057d9799213038593189c6dd511b145194534c051c5172a3c4852fae189c8a90d27b87041860b1b329853f4c0c4048682a1b4b4832915452d8b3a90905c08c34516968b2ebe33e804c38a55470493e08517b72b6a6624e144c654544b32b261718615d9c8f36d83125e48b1e1080d29b215a84ca1a38d3027b0994007d9c8a3a4c921a4a112d83004d214a41e9c9090be8b583eb2eeb313d2ec53cf4e45c0f14f5fd3c7d3698b9f5c627f2e59f14e4797dc25f327c771cc71542533fde39d06f2e4f6eb34922b31fbecbd89437af9b1868e6fa75d04102c21225420dadb3bcc88469edc1106932f1f432648a0e8db67444c01fb6a5c58c0c38f5c234269e427869222cf06a2943a60d043dd9adab1fe6bcfa15b5d86287c3f9d82f4756c0d9eaca9e12693529ff6520a345bde45ba9c4de94664b8302623f4ab88db7e8408d41de52c47882571a8d3a7614d7bb07400e926480792ce04470496523aa5945740bc233d0842c7ca1de56ce90026003151a3aa916ae266674e3ce9288878f8582cd6111ecf6159254c4660b9489f9d8600038833664c501162020b1e7208e1054d5db4b810454d8c265a40a3a0d55033a33ad611181229bff86a72e6b3d3105d7c583c7ea69edc52451674522a93fa254651228e92609264d3104d3fea48dbcb465935f081cb426ad25e8d386a881fa5d0d147492b2b34b1a5f6c20f6fe8c055c4811486972e63c6b041d60c70c20b31509c1145136264cd2f58811b4f5cd0a20e3590640d85d251bb52b20bf91a806c75acbe5adc6a19f3000431c0e0479954c310425126d524c79c74eef99049a91038c62c9578a7bb6e4e0bcc1087f35982f4e91d903f65d3cf1d605cbef325bd5d0c4fda38c6b4d5d79ef2ee880be9a2e82cd69115c38c708d9792c62e59d24e982f29876c4997cd824d85360c895ed2c1592080775c33dc13641c1cab2e9b8a74495a4fa7520ec9420c61d7f0f20466676797b4763515294a97341c9b0709e5280ede911df05cd999e171a52fa8d44d9476412c151509008020006314000030100c8784428148241c8d6479f80114800a779a4e7e609d0ac42488511432c61843083000180020002040333302008b518c381fb575648b30703b5ee744a59546db74d9d1680bf733f87f1e3601945cdb4176ee8fc3c1864378a8caab7e439351cd30e563e42dc5d7bc721c30c2e5d886c7497f712f49edd65e27620c715b961c7804cc881349cabc486d51bdaf249f885d7455360a1a15d24fc665a2a620cae0dcbad7ff05b14376fc9305e27f8c20536ab8f5f0763351106c2bef84155da180b3275d54432032003c97dc740085d3442b41d4fa79d7741c8ac104efca4f3f75288badf45322d3c37166d91e0eb0ed6099814a2d7f29b181ce2f0deb1e28bf3fb4fbfcbea345497ef50cc43ab4629ec02d9a1034100f8d23258b796aef7b8db7c49364ef9d23385ae0eaeaabb8330da8650ecb996038b202c2b09c80dfa2f4daecb695bc483b1f9a7e70bb00ffe87ea278cbf085ce807fca3bfbe28d9eeda4ba126029a659d9a83a4a10a6ca33062e2ea31132cf1f420659498932488a3ae3c7680ce447139240437fa8b0952025524b8df2a28565eb3d2fd6a79d4c9fe0d06211796624b54b3e27eb67cb1acee8d247ed87404919d320a9b37666aa0d5411a7d52c408e6a1721314a1d5b7e9c7c120356f48c2dd307547f13b80c65c73428eaa1b2fbc36d70707c803fe4c1471bd9bcd6d46327b314bc34d5012c7af524d755789b82c40ebe2c43cf65a699a82be7491b3284bb190e30205dd890b39631aa5c64245648fea1070d753de74d3e6c60c072b71e813259dff4676b05a50db9d510bffccead67337ffa3f973994edcf03497af8f10fa36147441c313f2fdd9dd0189c5be3874bd9fc4f8058ff468c0424d33c681622bbf9a624ffdd28526e7a97150178087f2e6a3ae17e2fec2c13752e0e18cd903ff0d8b674fc33b51eb90e4820e3b12299ca22428238187bf7f018d929b635c7168d76be516da95d045b94a7a0fbd8bb65f1011a318e8a42561960226dd76a307476cab967ea18d8b832f0f3eb0bf55d2d28680f88c5c8e66cf20ac78b10f042cff1abd4add7cc7de0f80ec48eceb222c4f68aea21b9043303400a421fdf27a6993728edff5e5a2d0ddc144350787878f49817ccc8cb089f60b34a9f75e82781d69b3088033578f09ac3b0e9a86ee99d2bf5d312591549afbdb78a6ddabdea1fc3673cb1dcedc753896b92b7e31c2a07f04c4ad06754af0d4997173e57bbd1884cb64849bc892b91dad602e3d8e69fa630de71222e9095bd8139eccc84edb0691ba2a8598f9a5701b5ddfc0164c1e869a33a6d62edb4cfeb4f5bdea05f1c8343bb95381fb4171dccc61134a32a5a6d3378d0cc7c8f520815ddf6b8ef9580c90f11eb0c0d41ec0af7f22564d55dc88a7841ea70202ee44ab9f36ecc3a71fc98e1ba4e7b36353a04cd03baa13c74edc977ee33b6545ffa903112be92018d3f8f6a84bc59cc238241f297d1600deff980f65902ff87b23f128240e20f09338918c82a0d138136443d12472ea1c06b831015f7ab0830bb082948709d9c972acdba99888b73546fc48c3b8d7b4c7be3d0520efdc74fd5512076777e40010512c797a362f2772612a077e7b7a0b21873c59c32ffcb09a6ab5df8e3751889178dc47b6aefb98a20023e861f4cc52095797a67104310a2ead57bbac1f66c217620a8b0f924ae8f3b4eb2a8b798015e67a5bd0bf020427638113eaafb85e64805e8146765503f12ef0813714ed1feac8c97cc4a1602c41e8c9a296d8b32bb5ab738302dd1c6d96a3999701c76b8e508f042d0be3206a00283e924d3bcf29d7518811961aadf2143d400478159783fa6d7ecc721aa341b4ddebbcc91d02d98b3d68085f7e26d1a316053ad4a722d51d02ab360df4eff4905a38aedf6645bb427efa48a3afb8d93640c59967d8c103d9ba4733087c83287e1fabceaa0a1813f3feff3fb11042dc2aa1978b3e3dc6f6827fa1c1814b9a9eff829f9eeaad94c471c58427130b39d47e50c93e5f30edb68fa9c64058ad1076c079dcb9dc3568f946c3a06ffa50cc7942e394f91b316106f9b5b1fd89668a4312897b96d3016aa906fffcc68d37deaa321a2d090e5b4913b924b0b1d2b87c2c7380f299d4ea7b1efd85398dfad9a5e68e8daea39a22cf1838742fa55dccdca22d613d8f07b2e11e9a16cab5089da8c8a6650f33e3df1316659350cd836464a89d4acf6f4a090302ae1bcfe0a07b1cd75241d77e0e0ba29bc05987d0b4f7b1bc38f857722e1151d5cc601f99a9b98b976e8cbf37e88a7ba933d14eff275faea39984cedb248691f10a30cc08086435f306fb013a07902514a48cd42e2cc4a8f5ea4c9a6fc26a224500c0ff4a7aa0687659b3121e0d52ad403cc7e07d44f4a1c9bd3967d64da8d49d0d48c814ceb42c9ee902ba614e4c7dacad87fbc033388aea1ba93e81e543adfd55689d8493db581b6e42c7fcab4af7d512e940dd74bbf31f49ccfe89bb430f39c918867be391871f7c0d5e8198cdd1156207c40038f0d918547ff130820a2d30df0807cc193b40a9b5301bb6e3dd01a66c0532e383c2f108092e113667414f1c861b0fe490c7f8c1b4d888961dadd61c961190974e65bdc609071d042741045b4d5a40fd9fa3cb3ffca31f77822b4cef9d748fcf6e39f01c7c44069d14d7d29140d3811dba7250c7ecbfdb1e40c96849867093412c35120e6f706e2551b92ade4efb6d7b56558fbca57aebe7954542178793951d8634222c39684cb75a765caf4f7bf358a4ae676177565705b23c1e3dbf975ab208dbaaaee2827d79af1803572e3f095e52a701f82eca6a8d2ebf9a15c641e353280b217bcb2e6a182300e8d61e276c5a984f25fac986652576ca6d1b76d0b47f525737474baa3bad06fd40dd0db8b4190c76a7eeaf9d9012d299e35923d8635f57ffe46513df484b70797b44e04b191908432b4bc3ae6b1a9f670350965ba230a85080b5ccc8132d0c2205cd1c719238d9c724fdffbd9993883b2a98257d2f6057ff44fecb1f5184159fd28276f6365c0ede7bcfecf14f7f21d7d9b669f6a3ed3d02115a234e847cfbf5668f77dbf061df4d31788e6cc7855acd4218ecbdc3ea7451c27aa8450c6311041f4ee8a9996aa600d5fc9b268273953458fd24a78d63d845bd5b4fed17663aea245554a7cf2b70f0f5009e561ffda93e8356d4337e2fadfc74ca1733c587f8052a77b88c1879a915a8ac8ed394aa8337c9c5499f622906f7a243eead027c01f3397d436c1f7e09fc84419fa04f803db49aae79db8722a2a1e8044321bcc86441d24a6b135dc271229e37a2ce57e823ed331d9180530765c547e0bb005be0a1d524410eb3b5201ff638fdf74ae59f458ebfe0cc6032148294befef8310e53e2f65508ae2ecad1ad9aa2efcd0acd9b94065c704408847a6d9d7968c94703b56d01a8d80b97404cc5b01872032af06846e6e1dc00bc59c45060e2f3a62826ddb64edd1046ed46acd91a8d527a6541e8b04d00ed315da39e9fdebc4c3b721190168b0dfd95f669a78b9e6d863a4d5311d2c8944399fd968605f66f670a732c471309e0d57c697818e7b499b086257a2b736859f8a170a9540d632ab5bfe4fb2e081667d8213bafc2048decf45ff073d157b0905179b700d7ba80d47cc91e938b4ecc1b44c1f8473cd5057e6be8bc401ecd28f50cc3037cbf02c697a82b9da0a3a41b9c8afcd657b88863499dab8e032cfca1b687d1cbe31d3693bb669a90920f0f8a5280f34e25a38141b493e9821e421406a531a45126ce79a8721f1d64b348d1843e3e44ebe25bdaa3e7674aed49d9b6edb77cd3bd233fff2768a878770f1685e406264d865e4183db5d6f356485df6c6a4b8e67e91653dc0d614f76b6a5cd7eab0b3cf32ae6629f406e40ba179a4e0610845becca99385e1b02c55ac1ee93edd17a4a2eec2ee89b0f2c89e6c30191e82ae6a34edc5b82029902688bb6eac2743111d6ac4d9989148ac8160709c13b0deffea8146094ccdac916f2982b3cb46e8b6f23402f8924b69287e96a1ff62a4bf8ed959413130f5fc82d61966372b1218cd2ff048fec3074cab143bfa63d4c7c39e624979c21a3fe029fd5401f6cdee3bc08c0791ccbc0eb555cab49921f68d635efbc208a50a2588a4e58d553671f80f49bdeda49c006f34f06f5cd7aca013e5dd9a65daa84bdf6ae631c1ca5f212f8dedd6cf5a55ae5043ff57f613d1de01515331aa3e4a120e4efcfc13eb2cc4aef5daa5d8145b22d257c204351aa6deacc6fa743fd7bac597320f84238371cc46b3394c405fafaa13d9d6998d9fbf143c24406a8e7ba6ab8e4791f8b3188951fc4428bae2bbddf31ff7845bbd9cf0fa387e8e5f2e84482ce1dd105315571e1957a0aa2f971d064939053d8521c7cc99034006052c4b1b612ce330b6d6b5a794bd367fe147575403eaaed52dc3043deadba8bb9e3050faa93297f1d7194f65d6e1e70e03f7276e6e236b232743fff06670aa4cd42384f0830160e56b14d08583f09e8cc4a3b3bce508c005c0729809246becf504c45edd9d8ffc631b8ab76fcc2430b7c582661fd3431bf8fa4aeff2088d8c781da06acd79683418012813b873b8f84af120fae40da5ce65de42c7bf55750feb9062c119a0503cebe79273be5d027bce0f774099343d200b31de35b3dfa732802d91dbca4710747911288003f4db093e0956c556633b32eb16c5d4fe55a8551cd80a2e3af64a72a17394b2a05f61e02be9a5e1b2a29e303dbcd3b36a550674c1aceb18a193257a610235a547f292e13510491029855f343d79713cd3f34e756ce49984860fdff86bf8d47082da31cd30bee9442482ee689ff1ec39c7fa0adc12a5a3a21454a994825a4aa520c5d2dae3a5e2e6fe90e1d2b39168cc9a53e042962304f903af9515678058985f91baa35198429543693495a53eec5bbb102cd3647b1e2da1cf13ca4de52b6392dad2634c59a616b204f8fe4a7198e01cd4ea6b7eeb32af60e1905556e9aed64680f94dcd62f876b721e5beef7544c8cc6ca4223c6f8239ff319108110a2e3e37adcdea025f7f18292d553a62caa96fbd132e0981c7213b630288528fb316167d1dfff83c3d46aa14029458cbaf8dc5873a159fdc8e5af95e358af66b376689549b7c1363bc3357eecced98bb3cf6214bcc610379ec7850728a640e898348060906c4086623b6d066e09d27d78680d366d0b98e10a2a3a97ab9de36c9b8b6de5f409ef0820fe4b5cd117c915fffdced54912e87eba972c58ac39ed79568854cc93b40200e1ec204b9fb46fe2451d904ac03155ece641d0f94eb99f93700ced0c12e5d20e349e3136c2e6e7f00e2f2996d28eca52dbb2b9308a3b483ee7b0b26a744083de9896c64460dd2feaca3c3af0c620409730d2727412113724036c7629493b04b8987d1208efad90669879a6161a5e2e09be0b8e3664f4ca899679ea8e814f7e335db756eff0ec5813fa3971a83062f2567918afbf43d2b19755dc1d02832649a84678ffd9eb6b1433a77b1d62fd0fa55b360d64c9f55aa990021468884723b55e66b39f83e6cb7575ca88e41108addfbc1f55f5daae97d3ed267d7649d61e3a75d152c18ad152781a39a1acaaf7d02bda7b950f7bf2856650fd9ff5e180f5552496984650ace359010c982a163bfed4a8914badada2efe7d7cdf652dfcca1c1e1d41d35a96df65b3afa80ba3877d0bf4a1375117ca9220e63ee003c8ada11d06e823d0a34b089a6c64b5a7e609502b2af0c05b97597d2b6354c3eb0d26b24253f20963269ce41d5ebde401ff2898520158bf403228881dc1bb54d5e8f95e7b2332486b9a137a8e3d2d83a80217a1c495ec36718aa68ab8a657b928e254f7937aa6ffe95452ca59e4d40ded5023bb19c1709f804fd2a0305580faa4aafae769e2d090156bbfcbec546a1b306b3739d5f175ce3eaa13deb1c8620a6c27d2858f7122e778ab6ea01ed4438a2b22090ec64c53f769539c98fa5d11411aaee7e18f3f1829e722534c16410c6fb7ae74e7de1b1e58422c0780f803446b150570e4eb107ff8320194523ada88eca58df744a0b9780ab8c24582cfca2479ad06118de95a0d6dfbb92a9fadc649dce95df7cd0f13b097f9db0267160efe0eb5e6cc5a38dc6ccea865549b3969a3f6ad987243fe14f47363d09be341bad273ec32f2453128642d8561a5f958c4b9a9d32c1e4c6825395127f7eb209e593669765c6e335e0da1503b9c8114cead60dd90fa0a652539dbf8ee8d5aacd24b0e77c6c5e9daef4eab470f954665576fad550c0e6b560658719f80d5ecb462dcbc2a92ca68be4df11324187eafc09d35b2d10ece461e613482b8f7064ec22de224d5bc1933741f6b76bfac3bd9b3c27cf7f325a4d1a4e8e3118edc34724a8eb0420505ed289fc5b4890791b42d50e4cfc39323c8f1d736271e2eafe555c63f538ec4995fd59c6cb1ebb5f4ab9f09ae0fd0ecd7ade199d0cae90190428dddda1bbf62dfbdb41d63cfcc5916d98eb18fc59ce571395b69f76fc42859bb5c020ad89cdcac7acb3b9f05a9fa72564f26d500d8db411cef1a91c5f4db81b8f2469ef4c177a55cdc25b912d5b54bab8755d59c2b11cc5d82791a022c6503cfa493821e41cd4c234f6c25609ed8ece51cd9bdbcf89ac5b14763a971299654f1bc773ab05363cadc5a33b8050f17535988456f87e40b5e23b39dedf3c7338a1e803830fb00a59a992a1dbfebfc77bf6cd07eb1472bfd0b3ba59839cdaac31030ffb254c3ac9b2190cd841259c335a3a2d7e1a0475d37f51feb634cf783d8d3be463c6e83d6b564438227959c1740bcb80ecabd6a4c56d4fc2f3be7be16d4889a9792f8793e7f6e758385a253b1a04da51204fc7dc22feb5853de589cc6c76345218418ba6f66900f173facc88673e2ff196e8bbec1269c1e216e5ee25a64c9ecb8588bd6a7f8b7b1d8ae17f33ed2f9d92379517cbd523a7c8d23d87a689f7543bd6f467eb0435071a4c4e33a48520cd82da8aa1a3d7f837982bc4a5479bacf90980b75d1b88cf5d0c4f4956264c9869f2b7d0d3c35f04c561dcea846f56dae809a5c82185fbcdb33c40204a222613e7e59bccc1b992a73e7e327d524c00f43824fe704bb9e99ada040b00ec1b5f30d0ae1cf5d5a75349ecd79ee02c6425045dcad1ec999470422152b8b9d99cde31300e7514172ab45752b2a81ef0e16259ea7cd56282e11dc7e5487c9f14d37c4c776a00fd0097afcaf7af67bb184e6f18dc9a2ed25541ebfee4d79a4e2d7252dafe153cd9754637ccda7e565c7c30fd41bf4847bb43ccc858a9a98c0f78f4fdbaa9c5adc4700217c7465119c039b85f1185f58b434d072667c13a63843b8d2d9aa20044dba5d7cfd6f2e0fe5f51c7c8830763333fc6673e069b38d55a45b62d5162e2a1f04ad1012759ff3b0d8067d4f0feee6ac478171f9addc89995902aea1105b26f8cde8dfa1d1ac8074e01c5c9a44b1efc89144a005b0b2751473b75584202b6ee1ec15dcfd1664fbfed5ca77e2373200811fe9b04361f8931bbd1d8627a6f69f7ef92aea74d6642c8cf6c9b25aaca935aaff6ef55a26d849f6cffed046224cfae279cdc9cb7f9e350a30e65160c1ec58f720e6b412e6521533bca98f25b9884c038705879d274d3a6adbdffe8f244764c356b5650a2afa37257ef448c686568ed15a1d69c726a95894eb7a3369df32176102d06f3c419ac6635e7becddcf0f98c6b614483cd505ecdd225907a781374469b0a8b463510f5226ae5538de21fa2e09874a22084509f6994bd920dc51d4015d903f37c1663cee521c021204741f09b7ccc41c3225100465f7590a73c9d0a53ec527b366097c1afa20c511fbc99189b5d8f95eb65fc7a93658a098a5d984b3f5a460437219d65632b1d59aea4968945c0a52ceec277fb7f96398dc700efd9adad510f48d5434011308fd39fab81bae86130c874b56b09f95a98f65accc344441e9b06db7782f5658d0e40fe9bafbdee7d7537dca463734fd2c89e91d59f33b69ac4248450882562b9a21dece4d4be001c12e6b981e1cccd36d23d1023d9c090c65d9557c1d3d4ca618ee390caae0c6adfa737dd02691b1654369895bb13719c10a473ed2144b1ef8094e0b7e012a895754246e61d48721e38035e38ffaf33d2faab470d961c2a8469a89817d2417e7cedf6d37f32f078fb89c4f02bdf621952cef3a0a160ba8579d8cb6d48dd6f703411ad0f398141c5578f1f6e31b51a37486b9040357aa69366a2c0401d527e4e3a704d825129ffa7dc1e5ed35d7cd4965d79672605202da169eb538279185a42b7e77c322fbd558abf5a5e15af4dc602ce605063165643d1af191c97d5fd1cb55c8c0c71f34030d92df76c0a1f065388396a9628675ab8671e6aa7af8f9079cd5d34b5bca18bd514ceba8304c31112ca021da5a74a2d8a33815f54c6b16960a27bb288cbce20072be0b2aa1caf32d3c9ba139734baf1d8a16b89399af1f1bc27ade37581d19dda85e4d1d03c144a35420e6adf0fe0a524d8ae74b65b3e9818c3be37d780e11e78c11bffb93ed29bd56de3f22eb2d916ce39c54a5d1c15a2d0eb18c36966248a559dea227a5d13530b836a887729d3ed77628203303562088a0f38f08b103cdf5b32f6de0dd188f3455e2ccd02fd446199e46edbadf56bdb94c22f052cdafc8426b406afc09832f4b0da9990adc5249ae3961129f1339c583940e11c38e46d70a34fd74d6996b30ff541d240b01efaf2520fec7410409dc53cca0ef8519eccc7ad71d62af948ae96676b215576e242ee753fc0037f7ab69056edc60e08b255a0775275c6fef5fd3ac9edb4145cb19417d265d7887e3361bb3f70e9c938bfc4f752e09be832ef5da349742f90cfd8a6fabf66ab4ff9808a143c57baa2bc1164044015903142eb427f0b61ce29e489fc5ca0583b3f77f184954b8160d5e3af6ed867f1ee8e8ff7d9c2e09eb61884c21a95b5b9009908a4ee8b43a99fd5fd099124d434ed189563ccd14cedf91542f3000d31f4057905daf5c7cb67e8d6db9b76b83e02eb09023e706bc96071232d16fa9f99867df2810cd6e79c7acbaccb7f39a5f2b984947d751a6607a8f606420500026470794da57d035622ed5fa6bb5df52b082451da24947a9cf2f1ae61f875c149854d77c60449542093d4f45cd3e1901a6269046f29b8c20233024f5fd368424a0b1d1f47d103cfe136cc08f0e765961a6ca79efb1c713b905c4b62fc2f6bd9969e432c75d33544e70b29b5b3e5b1be2a88b19bf55645a930c426f6b3c8af60e876fb3a4eca64067090ebbef8e8a2d76d511a0f20163ebde43f5ff80a5111442fd7a2fad3979c062ac8e88e33936cdafcdf6b972abf9e37233c3b425e2f58590cff84e12d68bfa923278026e3c872fe345fb63c3527f58ca43508b8a58da0302a0ad2a9b544af999cb4cb7e832d450fc227341df53b52df19d81dbb6db6c3e40d9134a99012ba0d7c0248c43761e8bf2117e8bde4050e6cc8686493698546b9b4f0dff7bec57a0e078b69b6de87318cc45c3f0994c75a7e93e336944f1283e5bf01059a4d5a013cf9beee9af4570deec3caded706e836289d0a6135262593ffed843c629831acfdedd2843d87baeb183297ab14c281f91cc2826d4ddb0aa6c536beaca7b8f03a9fe41889644778e866a471c3fb6598ae6e5ba3b9ec49920989fea34e79e414d4f4bbe2c6717b280fe67ec7515b037a5fe4058e2a8ca658a71bb3990c577496f77d74ae3a3c32d5c28c2b6de4a66cbf1e000afdb65b5fbf162626c5d0745611d7852762ab70adfb1994b64c3f463c3b09c2cbe9a5f6310c0e5ed9b3856b1bd6944ae860417a5dbd6c32402dbc2ede1f800e81728dd2e54f167b57f8f8dcc42448f2798e39528c1e13431680a733704ba5e12b21fc8e5699abf863054ce46c19c0ef6b2066f54ece4fad39f4ef07fa8a5ef2900fff2483a5e5a869469881679bc46781bfe0bc7473a0ee7bd3b0c6d8c8a9f279f1a387396cae5715a2c0b9bf2327f3eb4f88a5b95cf077109c25fcb3360cb18be5870abaf2404a3610bbfdc99cba86ffb3a1bf8e790d0edf98c4261614fdc035c1c7292692dc26c1b690d874f4fd07d7395a8598481b5019ccc3b4e67e95ce8a61fdbbb710ea6f559f3f61810b61a8fa1578bcb5568a0f6c6dd4879208452afd222e9a15b78ddb334ee552d1acff70596f6de43508199e9b0dbcfb8f39b1ad056279aa8e24ece7730039b391702bc877ae05d531e621bf9d5975bc9f3de0a679f72984046691be6e87c713f227baf7ea7ba3c50c312d7980d62028b878426610a077dc16155dbc808715d5b95fff773231fd1ed3427865c99b2708a4a75d89914ae17a714cf84dc4250cfad303068741d2b023d38a36bb6f478a91b9d568675321119f984d913607aa1d5c8be3efa6e4b52635c222f93167e9750f7cff6c83879da80755de54cd5234e78967371559ed37fefcf55fd2e27c63fe7cbef4fe00949e48b275ceb293e0673113e3f666703727afda784cc641bc9b201eb3dee5ec32fe7ccf51fa32d5cbb0089c47341f9a61ece4167ff0b3e6708ab357fdd0ef990821cf71fb5db3916f945b29311de050d740df004e02d8f2a344320bda11ec1b2bbbd4c9554b6463b2bb687d212decf1d1b4a1f5ae9f6abd1b5543451cd4d3db9e7141ff80765025050a9d69d93f75f0468502b00ae9217620628e80ec5f15b4bb0fd61e27f47c10e28c878dbfe7ac1bf16ed4eba8d203233ba14ce744261be1b143d3489386bc4869346dfa06404baa7de5e1d1a5fd26cf45dec6e72534a3582c061ff9b56c8aa31bbb76e7452efe5a6c3874a2d24f9d103adb259dede370ebc2cbcb9fff9a67086184d88a1cb98bc08cedb19144d5fa6110101e605022e1939557ad4059f03665471b3c02d36837162a6c7a94e128037a3a60cda490b47f92f8eb5953c616c11357475d2c505d1610637f5a9f95413de165d8bd3bca2ac8d5db03274e9da1417b89c674be7d5e68c4ac52a0c2e5ff16dc08ebeba8847be84e29578451af9128a7220a80a37b4ef950d7e45b7234a465470232d3252d94d5499110a6e365f2712459fa84a2b3a4a4dcfc62ff853b1b64a8eef8aea9a815854a358204b74cb641884ffe5350315752e23ae0331006279c76b6277178908d4834bd64a31643d77238a4acd72917023bd96156c15be8439594c7855c5cca958c324417356134cdd43bc2b03e766800e0dee2a17fc40654778fb2fab0de10cdcb56f3c733b8eb4d8b59b338dac4971c8648ef0efb3277331539ccfce9c35a8fc546e20816a8dc7aa35a4ab3596cf371c80dc5c5ccc817f51183d43e22908c1fec301e62e01e6a93dcfca6a52b2426599e61b3c035e00c70d147220500a2a3b9f4ed359d622561160d30cf22c060bfb519be2b1f73ae62685d26f0ddd927ff1074fe2278d44b70239da95b569d085b20a5ec6baddc4efe39eb73c98952fa842927aa53a61a5c590bacfd248de306ffd67df6d4a64aa853c8a262b5707d8e21f2e0a021c5894cf6c46fdf3a93341447376e21e05a45509d34ff3fecca8b23832c3c7202bf7f7a4910fd7ee561ec3933f1ca07a86966a12f207547c0a8b48e2ffd49b00a6926e0432f25f26e0820d14ebdd66a779b310e51ce4f8356af93b7f279deb3b10bfd904435d724c6a8360b0375b0ce4c8337fe7892eeb6977d979929b535cbfe099490c9631cd16d13cf4d72d42380aa404ceaed6f19e995ac1186265d45c350513c8c98bfb79d016b119178d95a5751b0abd87f2aa2a6b47b7c560350695eb5bc998f5cc16259b2b76c49754ea164ea3350628d7ab053aa15634de1d5852aad60209bf9ff1452da49f6231453c8d567b7256a71f52ac28e225bbd4bb5aebcbf0fd6a2191f1b1914fd24e2d888f1e385f5122c3b40554fd565759be3d356ca67b252404c673e3786dd2c403b88f75e1cf6900ccc23d66cd30361ffe8f70521fe93569b64c710896aa6ef22ca3158e9d08c7928c33846741b869c6f30d087110bdb873ba59776aa4cba60c1198bf8da3a272aed5aa4763d4f683d3b54cb7141f38afce25e696f119e5dd15d9ea1cc8741c544203ca02a041fe33444a64d53cf6ebcacd253a9851859c2465488bc180a700acfb82ba821b5700a9c0e4f794a00948f39c17a239ba7d3f2fbc26954fa1b26047625e867c83e5a5f0e95dd0bd0837a544618dc348d77499c23696e08a1cdd02c8a240104bbc0c25589a93809d9a1125687f8a04c615c1c0a1c3ebf5b6a61313aa116d52e466ce6cc1170b5fc3bcda137c3246d2e393b85817f81e2aef085040d30912f3a548eac31a979ad6e108ffef54e2882669ac71638d9c045e7870d976729c3ab0b0790926f15679a19d26bb8c121f1f911cc900543e6c1851d4b4aeb63047ad8c86b09c51945db01269e5e3d8c1a13093b2ea8afecdf9e6722eb64f81457f67dbd4170330280d9aa1a0a1f37e500b4555b88ed83b3c13ecabed3f48120e35a3ef3244e23fd4cc2a31cd51d1f15dd4dfd41d38941ab80335dbe2798ab1e4d24762e7ad383c9464a5a674d6dfecf6b8c390eb4b92f1a85409dee788d4c72c1152d3c0bc8f8328aacd9aaa6d6ddfd201c283004366a0f2df7799419a1ae4732df08ec6329fa63b5a021ba2fb5c682099e0258a88e4e40b2e4563515ae10546e94c2502335575f1324068c5fdcf97f2aa6184451ca2a053b2fc60cef117e6d8fce906db061cedca027f024e1c815d7ac07d44fb125a28a735700dd4b5abe1985b1475c821b64ea0cc4755e3446373a21ad1d23c2eb202baa7dc2241fc23c3610514322c8f6a5186d227622725323f0008a5dd699849295f4be6484fc9be7e7834d9649be5e9560a344cec6912def95be64299aaa85eb1c4ffdd4b4d4f1f6af021335afd6129ad5e5bd35da1be8c74d3935e857dbe09cfdeb7b15725aaa6be55f56ace7a8bc7eac44a5006784600d68d8a34c14e04561a1739818a68d86b4444081a71d869588708964d95a17f0b6daccc08a08460bd311521781103dbc64498a013001b8d230482dee2c4eb7f1a95b311eceb44bce3e1d9140e6e599d9756422aba21f553da12fae86e4a2a964a6bd9a194053eef89f964d12022aea9e902ea08e9df13638649c749c5d9828fa64b9b56f3fd08ffaf386bb82e95f092aab42ab333d28c205a3040498ca6be240743e6a0aba4e514bc6b1c98a71ca5df880a1e68b500138c6df8983b1cee74d85c5f045897aa54bcba23bb47c97337ea301440e1feba9f351bef845fd184d3a1bb6db19dfd82bfaeca220225be5e80d129174cfa30aad0eb3be76b9f86de448403ccd50a369dc2f872fd75435bac3c7e67e35981f5a59406c94fafc2087fa44fd8ff0f02a2b78be44a699d08e7671bd19fbaa6edcf344fe41a17462334c2c71c1c150caad9566398fa3bc0d807dd51995ac21ae81d0e410445e0ee588e008f59e3dc7cea095b3fcf2c515df224db5b454d755f4dffd09ecb954adf120acfdd1103cf741c0efc7820c6d67d60c5bcb36f108c5e34b6c7d4a650d57c7d1f9570ef8cc302ab91a037333ef05e7b34193f60d443672c3c14d223d2fad42f646520700451430dc803aaba04c53bc199200b58840765ec4e38e6f19e9e179f67e1f2512d603a3329a6ddc391633b5510f61d36c8a440825dd9110458d50e0ca12192ef24b099dcaedacb90ae5cf30701157e781a1df0240b9acb74f922017d0d9e818664bcafd88761aed9a853bee41c03fca0508080ad895ade5b01ceb27caba8aab3ccfed95d2cf525c0d241c73f8192ec02d2e3fb474ea35e0b3f3e45d47885e58f92af559c779c70f90c77bc3a3652e2419537ec854b8f6515d447af0ad6be9fe5d344e82d1ab23b551dff7cb20cc013331d1b10aaf736e6970a18ca62e291979f7a40d7e04e777d1424f1f4c2068864103aa141f709438ca9c58e57f130e00bb97dcc12e72bab3c64e48723d2605c839b089b8fd5b330a38c9fd9016ee0f9280512bb2b8c19113334199f927f26962fe52bc39e1bed518f785adf0cce1e3587db15d32363dd281125db9b507756be3f67ccd0e95133e3e362dd52cc7961b2ce69de0a415876a23cdceda53583518852eba74958e9a6a3d14a4b12068f85bc619f27f32ca9c5d17fd9e6f0006357c430ec559a81deb1e177a16601e3efe9e8473cf0fb5688f868412275f4bd99c0fd927ff639780ebac27f75b04dbffa731892f6db2e0d905cee153c9178ecfb2ebf7154ed0380ed1b4580e6c424dd1d34eb2c5dd19e4d1bdd65b228376d08ea35e43f9152c840003b46c02848301ed9df2e340a8185a2400436c8e2e226a6a0e5cf128404f51cc141fe59b2938530d415c8cbec91e151b7020705b6a7e6029ec15b328ec62160eb2008ce202a7f1dc1a6e2bc05b4786cc461e959722ee86a9f07113c2dc109e128deaa69eada03b7f077ea028c59bc4533e8e43ddb1a1d6213d2384c62c26b253b351038764e5afecfdbcfc90c961ceeda12cefe2524f8d1a46aca15e4d5016aae6ab2eb4eab74b1266dbb95b791728c65b97cb794f2cf1fb8af53eabe027431813370c8617e0e7bdec37b5d6aad66ed02eb1f10572910561561252a85df1bdfc259d23d46e09fee0635d7b6ecd1d8111169cc126734e042cee72353f9b782b6d4695e2226d43d3ad1ab630b6aa73aa1a7d03d2c2ee7ca3e3f3a86c971f436cb3655dda71738a1a10b350d6778bc8dcf4662f3906f7ae8a7c7074465dc70797b09d74ac479a7a2e812ef2bb029adfc370473d31388a55e7d9b1a23297a5c2714c47c00497bf08c564f60e633ebba7143ba2f1071f2215bc0b8ff67da776443d6324203e50b9ccb87d683b0afb06da05be1f23994d531d3f1110bbf635809e7b5ffe2e46633d7708f0338dda6e40be80979c1d3d713c2f21ebfa0f8dbea85111476407bc13172338690be177d16a03b04d97433a3674d2d784140046352b11056cba60def56fba7bab5aa7d41fad2f1c6ebb4c3fdab040b920dbb15427bf779e2b5e85f2f2fab036d41a6117bcd258a9e7be6ebf29bfdf064f39404cf2117883234cb8dec315dc53fdb801f1309b7889725d2734514b72301970cd9a663c158f79a9a2ba2b9e0d13feeb7ca25982c1f0d768845cce4d71768e67b6f2b0a77c24e0fbbf4706b94bdaf020ee1173277ee5184a430aa9237d7b4b905677a8fe86edb77a1c40be06e8145fa2191df7609d060d0960c886ea97510beec072c321e6629b2c77bdfe80ecfce0d2aa2edc6bd66a6f1b794c4634aca61e3dcfdc7ab8bcd76d3b00fd0102b9604ec045b96bd81575b491056aaf2368d80e1797f60e8ed4be81cb0ced8e5b32f2302f5b6939e02e83099a6536510336c3b8c6f0248824972b8335322741e8642c7c9b1c245c7813afdf517e081d73802d5660f5c35c2073a1318a6800d19d65c222b544fe1a3acb06a21c2462372ca9c1f14d6627d690a81167b167770766f0cead1b2814b71cef3a0b555f391f611d8db3a72d80b03c75dc5a9e912f0067395f88cf39f7672dbf6f02ec125846274e674d15f5171edb0a1dbeb224422b55ad0297fbffdb453408cf3eb058a04a85d6e64bbf9114b1b5f027931d063e3c049f214770d9a42fbb9211651f98f5dccf06aba7f4a31c93ee92c5ecfe9988b203896ada622fc5e4680fa4b4537cd99da23cc0a837da0431c4e809aa9e4c1c22ef301a3a32258f62018eb6249d5ba1052c89500eec777472d8fcd90148001d3b40985ce3ec3d43712aacf6b1ea1a458a5553d1f1ebdc1f76c6a80c87b00b766ecd25593f8a8f10dfcfd0688874efccb4ab83738e25ba8f7aa769c1b700365341c70b0ee067ac22d4cb58cb3dde6ab0b670db88567cd765b7a1cac309cd3341f8d97d10df3b07503058704fa2b050c11a2edd0eeb71cd187b0bea5cc00015e3f870497906d49bf4b114054b546e08c5b782360119d30f68fad369d18072c2747d597426aa20efc1495259121c312a2134cb22386146a0249e37ce94bcffd2b3fa1b89a32872a450c6deff2b284eb15e789d6e5568df3a5937858a6a5df30ed6edb774f2faadc77dc321f499c76b7e80a056b914fefb64fdd419adf8949057eacd4a54b2e4ea7a7c2f44a480bb04415cdf10d7943e446fb873f598404d0b2ed35c88b1b95ccbd1b7e9c20eab4321a5c958884989359675f5bbd9ae0e6f71e6d9d9a4507ae0ab24e8aa450346e0522ac5e1516c742f25c066ae83229479731f8133b814258d935f2dfb57c7f95a8b644c1000bf372adc559530437c868aa721d50431ad03923ce10db9a09bb2f92ccbdbd0e47cf18aa7c6fc933defb97ec69e273258c314c56dfb1de01be3a41f16b2710a5a717f10fb4bbcb9fdffda3241b3ec6fee00fc125f6f96204ab52a7073a48748111e6c12447dfe790af89ed0fa5b6c458d9a187d56fb1ef72fa5a2cd425efe7ee771e3763d4d7681b4144ab0bff10b970d900eed35df413a9e182552f778561f1654a55c2562ee11132c471f588c26172fdef763ff6d1e25953f3c132e8dc0551af6fc3cf452dc62fc2eec3a49538c9eb4f4a304c1eccf7917164598ffde51bc1a227a64a4e43d5464be455a32173a0431aeff0064646ed02c5abb6a5fffbe024d71f3840909ad6bc26a4e8c120cf267882315804bf52b322b88925d0b4dbc9c20af6c17e90cddccdb4a99449ba08888ad1b74a8504582566984a7e9172b322c6e5e11a1e0fe9ffcdddd34a8313e7d55d608909355a5059b423747809a837ffb9688e950cc4935922c0c37a95d4eda52e998d7ff1f651a1c40fa66f10061fd730847f2fbcc85e70722a07ca26d25577c28c48c9154f52c78b49c4911b4f650218e08f6f5f67627270e103d4c7d41b1098b4d0b8d2456d05177a54b00c48537392163c313242f659e1612032b8d8d4649785b19bc301eff18632327a6ab83a34f452f3782d2286eeb88e95e4a14e452c6a404716a3c1001e3bfc2d7d6d7e8c86fcbced271f617f813e266ac4c4d2fe2200af4088b2ff2aa712e4fa58ca0092a37ef9363414563be783c60250f59a06876ce22d4e48b5aa4562d55ecd697089bdbbe292fc2ea9a02cc5b20bfceda679172e06fe7f6dc5dba4c48435cf36411ae48c8514d25870bd847d1a105142ac6747f5f4af371d80960cb6017318ecf0428723e717e1c37f3abba461d510a8aa28b6beeccc2be818b039236990eb7032a6e06aa238f1c9085cf19a5732534acc7a0d6f5917a898be430120b1371b7a1980f7eff251b29401d8fdcaed811965d2fe4080235638fcde074405616150762d79504b8628e4bb14e813de9a29d2291749b9c88c5ea71b47aabdfa53f112d4111278a88b25291975c389fe0a1f3e15d53a2171ae12086e25487a3e20f23e35f2f73711720f523141328580f675b00959643f1c007f0e1fbabd415d6ee16a329e5bc66b8878111445dae6b03e18cbf9de750929738ee065c1e57c582f6d58f29819e18648479b5bc63bc1c5697ad31ef7823a30f3c8caf716f7d431a59086bc174aefaf6ae92841f97f4ca01864174ec3a4e9916241a761c04ef06090fdea1d24b193a2bcd3dc1fad5d3d567fb944a66b40f5175930c591c4665c8c2851543cee6eebcdc0f298b67ecf15d965ac709f376e3cd866b203a2b8d3bcffa505a54384ae1d25b4cac916b8083739b3f67bb39269e431064b003c2f00295cfff35171a7e37a5426a9a623ac4cbeda97a0dc83572a6de8cc2a8e702b4fc07d0c6f71266260035be97e8bc52c51bd25e180afdb2be4b6a2845347c8529627338587be76a07d71573ae689c396c70120d290148a7e2133edb133fdeb69ddd94e7aed71dc7d1014081a7fd597b2e24770b62f178e4c17b624d222863335c8677d95e99a7753a17599880e778797c0a918867319705a7a55391871f04f8fcdc6896e19a5d504ed06e21e496daa8273c80cfb64b3b97f3400f6117ff92931d0989f3d245f47d7317f9c1596121ccb66d068d3f3bbd68056ed2684f2369f705806453c58aca2bbeeff0cb01d5672739e0884d03332f14628650b33d9baba59ceea93de55d09c44082a96622e52865bab581f761cd06ef79d9b07f7f1ac88f3d6922fff02b8f7acabdcae6863c39b18bb26fd4bd76f6dd2e2b8d3c6f076fc3cab5d0eeaefad4ca34a10c9eda4d04865b7a24a46567093f93b914087b68acdbdb0d7d4bf0923267dc8d90fff83a0f0de507888a077acb371c964d6070e8d6a72f78026b5531dcf2d61752da83596f683042e898f98d3e8d10c8d7b14c41b3656ff90e5fc88f0c560a9d2a21c290839a0bc5c0c0c76f0fb429b5f945474a1a4cc93cb90e29cdeb68b05b29ec09f695976af2ffdc9a5789fcdbc32d34f41db47557f6028279af185e44c8540e71e8a554e1cdf7e2f1d7046993e4f9940b6d106049e97ae68ad832b186dfcde54e0f183ecf0dff2409851674b3a78c4c583985f911382442f209c58df0e8717d541fcc58341772ad8c9ca46fc7ca58c407d217f2646bb7a340f4c62763387eb6853eea19ca865b4cc23e52ea1d3db602971129247f1c9f6b11b0fd4962caf30c78209142ce1b4baed82d38161b75ddd99b1da093dee5a2a057f145ab4f53198ead5912676dc86a1d049536e85e11bec0d635da4a90d9b376a722cfb08a5d89e6fd094377526838d6761b8a548007b7eff8d80dd2e476965091f970afcfe6b013edd983a7c4559320d8f4c202d721adeeacd9c8d30b8bc5d890c68e059a8cb08900695563f1ad9b2be836c28a2776f31dd1e41f12559e2853fd431a9791216533662db178c83a97761e3e43676bc0ebd0085935fddcd0d2d040f6eae94ff54fb2237466a6cca6831f48eb2ec4e301b4004691b0378a043c5d317356675afdea72fc118fb935c96ad3628890edf39a0abca831a6d5c2bc608626cc33fe93b6b9eb41d074d4c5e58da5fb7884e091f0ebdee4919a28192ff7b791f8e12ede62771f46cb43fb1fdba9be67d6136c539c4576c17703432969334ae42ece264d054a52000e8a856a63029be45750a83b25b56a800cc3414552a34bd4c251835bae6f8bc52825c4066f7c56e7f63a67cb5f908de97bf7615f0d0f202795f1fc474b43be08868c154ca2d283a5d16eec70cdd4f26b796b0514db3c30a6d81013e62ab456da1c14404034213a25bd53f41b8bcef94c958962f18ac1b11f8d3db4f63e45de81b1cfb50fb296753098cd5c1ec97c923d407cdc300e7ce0f8c0ae00582b7c3e84ae979c31ba1bc308c014e23b633ead6e2d09ac7ef294257d247a6d53791a2146311f44244401fe217115d517a72695ff0a970ec62cce029ebc9898190ee04f777f6874e1d623522153e3b8e5778aec72b55ea5dcb22afcf3d08e164e8c6b69eb0101e4e73d2a8d14d238ce65f03d0088ef9bb59e28afbae5f144ae231fe3a81f833fa70e252ef9c79ddd22bb41ce073e4b72b10004cdab0f4af623988c9a616e0827c25233b00bfb113ac468efbdbb0216b1c3c63996f76061fd5d5d47ba2448875f033fbfd255a2ed43cc50ee9c66ce51a42d3e1a1c19ba0d780f5ef581f214d7f4112e98cae546d6478690a625fcdebdf0501945a6b2cb9591dbd46869b9ea93f8d04699fe8eb9c8e98b0aaac832722ff1e50628b813707176e3171cd54306213a469433071bc500e8d2a4d0e1db813186a8a0fe505b91031cbd04fb10e47cf1259f096a341614aa8dcaeaeb6b2ef901c19a9179e48b2329c84d00bf37d8cf9f3cc5c09c9074314b3a5373d846a095e26c8d6d707a826626442997d3ae7e4db10995517c7ccff02019ad9e772763306157cc55b34701bde2b3aa62b9a4503cf26576c8376eb5d1da0a10f9c3fd9f9ef955fbf8abe46a02e6c25d1eb38b2814a57345cb8193a30378ce3f7191156b163edcb9669f887ad270a4518e909a774e51b8dbea046c439ff2b94077deed438335340ff22e94dbece15a216d39167a2cc508f2be081c00167426341c2bd43f8f3abd8276ec6479ce1d60865f048b6cc46e58bf466454d48a6cfe02e1998c683aa069f520a9db44c3bee54baa2c38537e253209e5a31869230cd9905b59fef48674bee95b16506f856ba4fc38dd23898e0b9384f6d25c54af5b05babc9665e7e0efc05e4227496d3367e9134da3ecffeb400bfa469230bf8d49afcdfd5329a7c7824ec19cec22b8a642dbc12a425c92d2c395f5036a3df9e4154f8261a02f5f70de4932a27c8823562195921c97bf0e31fcba2d00694e92545b6ac7c3c166ccd6c80b6e5b1ee47b7fe0241f70c625c9872f79aaf8687adf3a1b46489d3c1c0cd1e8841a54a8133dcdd03a600165d6ef53e9ab66855c2ef3171c1c1bb3e1f127d3f082247a7adff52c9f11ec93ffa7745c6c7137677860a82cf2468fe0a1bcda4a7a5ac4b69b28a85597038f8ac6b70eab1c8b01179e9eab1e0f65e838124dfba2f4ce421f65821e2aaf2105aed22f37c17c4c231bfaa57b857ac9918d48cd7619213052ae5446a0c30ec40418a02672d228d1248c7f9d44f08e6a863e9388f811d6a6c4eb34f7b9a32d65e608e135fd43ea13a51404d838a5c544bae9713ac9d2c0f65de2b924a1ff5d9a0ca548629c8a6c2266f9bcb6a0660d8aff8a75e96f11ea6045ce21f6be7f37865e00b94a422f21f3493aefc485e187c3d463d68e4c18675008a9edaa04120234b857c92d62e872fae61704ae4c3f3bc6a977a638e903173e1bc81cb9ac36f3ff70d5f8d3021470a6f8177960b1a53e4122f274c34647635f22d0a38efb9ea25fed7b81389dfe5b8868a0b90eadcdaf307d049613eb52b0e70bf03a27752b9a2fca3a3cc24c580d389cbf314ccc29558188f15bcd0e3f869da86693741535363a94c029373a8d2600c1740d5017cd0698d3c56ecfb4ae0aaf18e9c57fa0ddc30eafbe51a9bae206f495010b4aeac0082bb582c0f2513e66e3003c13dfb6e306691960d9c3b374395df6f4c52ed7951f70eab39ddf89618e9065480004500ac0d1171087cafc438c57d752298c0510c9ead219f85fbff7b3a874e0967b73346299926008dcfb3ccdd366a263f8daeaaeb252a358767397465f5891a28d6f29315590753375e669da4b7b3ed37dd4aad83e982c17b017e1f02643c01c1e054175512f0a500297fbb87fb135ab93b15500e43e9e85e3b29e3afbf463287ead63cbfe0f3e2d1e00f3750287e7d296b0681a51e6e1fa739b8f1797c141ddfe0505067d193084a4f326b7edf1a0384f90ee8af420cbecad1b3ce01f59ba381970166ff37d14a605bcfa68041ef04259f6ba8bc2129e093f7f165e66e1a1160ecd0b949b8cdea54c41cc100176ef5ea0321a3898010c54806787be889d545f89b8eaa3c040413f04e32ea3478061eecda786a65e55af79d613d2b59eb88f0044abf279ddb91161ce6f289f9948b2ce8772bb89c97bb1effa559eb82895777ca26f5f097d6caff039c317a2357592f469210a999d229d63f7eae16e233b2737ed100725ea58dae03cf8a4a54d6879c2af78a98f757a8eea8e464b46a2f7662aee33438509235fcbef9ecacb44fb9f77a2003d785539d7ddbc6edb2f07062d1115ccf470f9ce5ebf6250ebc9e06a327eb875ecbbf2cba3ff9c4464f655b451acdfd7dd706834dd61e7aad2576294d4be9cb89f6a34942b2cc6a01cc326fb159c44de5db37680b1664a152c3d2187ee17641806a9e6aed01cd1d70094354511cb8608bf25c3db5a3e971081cf95392195f49c7a0d19e7d5737a062c015de57c7eea22b2de46e79ea9a3857b6949449ffc851b50fcfaa9265e26ac89a61f0c16197e7fcd0f48d7e62af70e0f5e98907acce959e8e7030f5955e9abe495b3fdff77dc579cace5d65350df78a8d48d9782ccc959c92c4eecbea38a3776f2b806efb1106372a51bf49dfb88754a51212b99f5aa41cc798f7a1954afedf53176950e0702cfa08c8d786ed7d59db6508731b3e04e8b040a52926736857ffd4d1749565c39388f9ec534a3b677c4176aabff5cb7ab1bc4cb4fc7b94a90b11bccef63125d4734d48d846dbcbe91265bf749dafae9413fbd355f0c7460545fdf4f703e867252cc924633df9387a378dffc635c995d6c2d1307390a627d3427d76fb4ae1d4fe5b650fe3a1bd1b6c104ddb5316048d837e1094ccb507054a278f81b050d6bc39433443dd7644e36f3a47bbc3d9c898db1f2ddc7e4638ee982eadc90f2fe695c0a6c72f3a409d15c0c6155cee4995f6505ec1b196f0f981e721c5c79b75e3ffc6568f6eecff7639d860c3d4a494645a52848688549747cea90e80fc9324fc0bcbd077ab101151043b63163020848a1c562deeab235cde257ac2fa7912ad78e6cad8ac395413c9a6defe22ab802b1b738269b4186dac3eea9af1b0b45efe34f4d4a7ea18295f330df5975146761169af332d19ecec237929ab539a3a9507364021a307d884e266963b47a3e9cba5ce203dc616debdba5c032b9903cd61bd40a3f3f0bc477ee30a8ce09644381c4f0ce393c3407034144e5898b4563bbe9a2c0f3da73165776f1a1c9965bcc9c937ef3b5edc9a41c9240dded42e9904ea551a367d995de82caeff834b4e37be69dd2609ef05f6a17aa114a8c61702285f711c61cb3ce209307fdaae621ae429de4f5b53801048fb783a1a6a66d7b69de9bb5b3a6379bd5b19349571a5407f2dcc50dbb0734446f401c19af29e04b1c6eebc4cdf436a0b48ca4fc15c19a1e69fb2dfb783955e39ebcd06dfc178d97a8cd06613baa89330062bcfcfeb4e9786d9297fe14b23bdce39e3d60614ac2462e9ff4c4b90777a9f7286df16ad7b3677a5b01b26b1f07897a4e69f98899407bf7edc5685f353749797a0f88ce71c6f3aa0549db74950d77c6c4468cde5b0e9752e06ebd8ce7fd14541b4dfe5da0a9464554aa902e01dbb59cfb7780685a79ada3f59c6af7b267f77c393119361254ff49f37005f9d698887f52dda5a5e09b812848e57e4519d4a92393a73116b8e9bd2e3add004a30c17cd2d20baf24ebb5587f056f37a32d8825a9d5c40f44e3cf83adece53b04e134b00b51ce4665f41ad832de85cf37c5b560d2748d0d7d60c7e54f0fc2e918da1cafef4cd93a0601ecdd30390f9a598870144a524fd3c8e4c72b0d1734e2ff603635879a9c24aff68575f401f2993d89a75b94f77a948d835ab73c89b3ff8a7dc022c888a8da34dd1b0db6958c43ea6cd810c2d71d610f6250a13fc125f09b3b7f410ef80670235611555c8a1a61b62bce732573a20f8a54d7e63714451cdcb973fd4fe2fd994b0f10506588c98ed9dd3d0e5bafe1b5ff04114f9cef3e79bb4516513076e25ab780245344c1236030714bfed5e619c9e9890bf1c49e45e6972aecc285db6505d75eb7188d0fd50727acbf42e4d64c6c5969c1e2637f782c37d365780d8590ef73baed92192b887aff27e13c91cc30106fbd5fe46a1d285e1429645ed77e369f0027ead80f8ebe28e0369dd89360e49b4788d3f9488d973ea33a37ece84226ca61b72b73440f8f0e3a3072e32ec4bfacd76a9604b4e827a4020c2d5170303e8fec3f4e467ebb9f5a0862ebc240044cda85bfc20975a5dbbe2c7809a966186912d05ef1a6036c8c8ab3c373e39aaf6c76c76eb3e0dcb1897c625e8a305e5718c18d40461cc51f98ed9f1f929c3e358842b4b951b50396baf710c128959afe77b2f4215a231504bad5c17577ac59213847acb075ab7ec046824f9f4f080f0545621df8bc252d9e11c870ce15847bf1ae4a69aed9da89d7eedf472397365a778f5fdc2b03a87ab5faaf5c117bde0bd7501502631ed1d268aa81822aa9f1ea6bfdba6788329279d6be06b03b704a1c4ab73077149db4643c85391f3bf153b40a49003942aa98e37483b960bcbdbde3c49a0cb1cf9678c68eadcd71176331f83a03d48eea90752ffc7139ab2d9b0579fc67d158d2a680c68a5c4877ce7cf759e949f1e248c2fb755222117c682a33ca6304db30b91c1cd8abb91d9159df83705e22db6ab1186f7bc2f70832daecaf6910ca5a5958f4dcae4da5c672e0d35c8e7cc95d3d7446cb86c8a941b266710671aed0aa5cd00e5412ffaee559ba32b5cde89e8a7a95f32867b9e533dd04cfcbff4d56c21c277669ff9de73fd0b41c144f3f8bbe4a097d838634c4e6bc321f74cb2079ed48df74a2c0f598ead37b2389f4673404dc9e8fcb5965053bec58ed4d23e0171e577699ba5ed7254eba8d129c6734923e7ef46db96509164b348243058b6fcf490d86836092bad6da5647066185c16f77c28d5234205b76ff9e4c44829202991c6381eba973db24d03d45a26748395fe0852c63071d283912ea79647674b1e9add586900a865838495ec735e4210b29d4609b63c13d65632eb1f6417f728fd6f712f9a82c977731d25f992680a861db4a0a0b8bd9542e1adb906126612598d0ae736fe79e6889a7d8754a87088d2af2df5dcd356561ae114e0a974e657fcc69449ced3d4577964c50b50f9510a25e1b26142875d937c48768647f4ca5d0e899876f47981377ae451f8fff17fba3e817524a9c58233c70f7bd8f19a60afca05633cc9c176819d6a91324eebaeef93be8b0fb4ec7456bb2f0f2fd3bd96de054876f7182d8b98c40b97d3c13605c2fb68db7d468d42dfb5876c8183e61dc59fb44efe9e01c147abbd67843da6568f5030128b28c39c68e45174751c3d438f62e078667656d749699adaf1760e1fd670e1207d51a298508398e2161ee1023fb8b4dd12001fde3a217da2758416f1674012f1aab8affd7c7742a128771190df8c045fde00e9ae270adcd91408b299447dd01f9a92fe5d47da24daddd859c0ce2faf24fa10af842edf854bbc91b2b2d733f663bfb037492b9ec2c6e229cc8d734513bad64d5bc45c91dc17966de21d73245d9389b18ce9f1f0c06f3bf02ca4d2317d259ba16fcb474091f092e297f074f6ea0bcf9370e70713f0c5709522e83d6feea4f02c98315eeefbf8c91017ac5e790e6cf6c9ba89e518630c2fd8ac3a2b5a67106f267b21c7f7b0b5efd6dda7432c10fba9c71484308e8054ce1894e125897b1bb3f82166104405fca7d313172f92332f242887e023fcf9209adbee5bf7d47425825e4fb4792de6ca5bf227887ce331cdd8432d83d5f74e9b7ee1fd9eff8aa2f1a6c8ed657d827688675cf1eaa58618784ac438fa8d819b271865539d5cca37a4bc42b66d8b1e2810d270c0b9b4c6d02bbdf6f1ff0804216da50cdf5b7747fcb61308db3bef45b8794db62063124cf1468075697d79df7b3fe7d4cc63d4943280c17b7e092648f67565bfe264267aeb04841501ff612b32fb2d17bfa97ca05f6a70a4207c9a3237a6ccd223b5a27ea3688484a80bcd15491127f40f64fb899a8e8ae2caa31ccfe70f110dae72f30ac851ada9b53169be19432dad8f2c4d7ac43b9b2455fa1b6f51604b0fb03317e95321a8bc0248837756ff4a6741af7eab7c18332ddc33cebdda78629f818f0a9a57916f01a4fead34352ba9849c7c2c8cfc4b5902a17b7d69c8bd060951f8791a4fac223b9dc8f892c9895afd65ae0e14857deeb2e97161acb30aa5e5a5f4dd6564c95525477c426c99350b7bbd0c7122744063cfd042858e645065b0f65bc3e66e82e9121ab8f1012a13184400e1513bd028a08a96a4ad5790232452dc2fc2dddef73139f35e7ebdcbebee799274da9e98826c2d7c18cc8a94f0455fd090a014e3750f29f34a99cc3c96a9d38b4901ce5a9b0befa216a89e1736fb101fa1fbd28a18a68e07e4ad362c8161a405e7c764a2056fb6577664422caa9266441ac66d35083a0c358113e8568b417eb27fcdcffb174705a2fa7531cb3586f9aa218e31ccde59c9fa547034de7d8a195a0fcfd7b26c5c78049444d13ef1bea4f9d9d02c28d133857081864ef7e7385b9d4e527be93217f82f2b4702b9f7101d1d4e9d6311ad8eb0c3275217e126d138e33d145beb5dff8d7e36afc0b27e967e1ab36162e25e885533e3ea024fc648b89e21a230b62991399f7fdd1b388c86145b406be8e0d5c654a2db42ff3c5b7ad38e9610720667890297f3ccc8a9af8516734629c90a5642bfe94194be048e9408f487ea1b12865bec082a02e3cebd5627e4c6e2a1da1571f653e04805f2ff7959b6231b4177c35797ab4dcd14e9d27c8f8540bbfd31193725e56ad0cf36d71b7d52f63af17e95f331d6aee734723a9ca4d846df093537de4bb08e6fbf67ee8bc6e4090f595c8ac11c795a7190dc04d6aa88b281fa7da78fe254f682232d33d5f6bb002a5badfa76b8ccacb26cfd25ebf325c4134b1a213a94147c70f1f770cb697d75578a5f61eedcfca91285ce79775463964497a02a623a499ac0a58bdb9e1f69d93b1d03a230a1f9080f6cd5a1d19a768b43088b9681efdfe5d117078a233157ba54146c046d73226f89260c635f2e9290ae431154c914fe74f833ea4145f3f1fbbf9b512ee387bd41d086eaabfef892250a9a9876a4542c144e27d87d4d7e2fb859c08d3e9790765f9c11df0a5df63f2a0463d8a8e435a6600a329baeaab9dad680c6cedabcde889b1a21ee8f8e1848bf74e52e01bd0872574d9967bf1274ee175febd389184557fb1b537a9818e2a3005f630fd4b84cd9d0bdfa1c04a945d5bffaa0d6109cac9bb3823ae369d863291694e92e4f49c871d833e7194734a71f3d9ad3f27baa85aca9e4823b5a9e6dd6608a7be77effbf05c148e7b5b010c290e96d83a508b428240c25c95e598c31f78606d091e17584b28b80a290382cf5846cf131f3229ffee2d7c56ec8ecb9c360566dbac1d6d51b113634c3035aaac64e6e3c4908e7a8166739a8c72c36562dd4a69a1754208c74c9f4d2f2e58c868433104d80973dff93124944502b5d88b89a8a2383536744f506dc39734325f062d623849f0509c08995ca24be3dfb8da5a9b20bedb97187fd3687fe2c7e047805ba4a07574e3f16b1023417d048f1748b8af5f227b21ae50dc83a178b5bd14d4b89c937f38a601880ab6bfa8985efe2dffa1c6db3129642876050a65deea0ea565b931ea02a226db02b535ba087a381557298dcabae61eec6184235e765a06c6d09e4afdc0dac69be58e0beacb637b0b5f505b061b0d50cba8b1fe2b0bc38649effe16f575efc55534a4470d405f41fe84e93bc808d8bc5e787a5723d6b0e6a587a6a204cbb46fcad7291485a1786dbdbf9c10612a0aa7fca1cd221f210faf4d921129e5b56b2474675b9e6e083f4ec6ac6e6c15cbd70689a047ac58c289933381f74dba862453b7e87126465a8d8e15563505e26166eeabf9c8621d4900efb96943753521c8947e97e389c65d6f2f5a398e710bbd030403f0a4887c805ac2b599476d332a33cf1ba1c15aca6b45b269087a85a9e479faad8fb04ab48c703cf7810db853005af30502ab3e1817bf140acda5067cadfc3f8eb66041f774eab31959d06c3e9507a05caa0e9fed4f0c08823e5afcc1175ede85aab90f3c3d7c8ec78d885d717c59677cace1bca655714287cbc7edd6ca8cf564d14bcc47fd1cb50e1924ad4e197db515c3de42226bd0931c4def10d1003fcb226c41e8338dd124be28736e500fc510d2d70184ead50f122f4d3abece29ea3726de9ae50d5889d4f4f06cbc10dd4e30b38693528677ad16b185159c2c7b682490211136c1fd0b36671268e18caf2803e0f6f91a8155e96100b57feaa816b78d427b4815765441d0af7152227bf2348ded07f744a8921e1268343c790c49f31707f098a8416d5ec5bc8ac1fb0b742f1a3db0263757456879e23aedbf88d7bf50d41a3839a829af1b7c01c989bd898ba4b1bba05309f3e9e2c40df701712bd6ccbd4df9672f1d088b88f306b1777fd3344b22366e2c4023ae20fc5a351f925d4e988c9d0a35fc9f2000dacb064a6e917aabb8bc15a285eaba2279295059dbf7f518f1f6d59008a2c09eed1751eafcc8e67f11190b01b8b26e852e2287feef8fc5f826bae828b8a0696207e56410c78f7a7d981712296113edeb03d44226467d98f18277f4650963df60681b72b064e200bf99bc526da604b94bf86dedbce8a1a556e8622469a2d00950f17f2b2c652d872ed5aed2981eefcf2941147bdfd078feab8f70f8922a7d376a424ee3b5e7aa9efa94d74791cdf6d98f3a8d45aa3c6c2e3a88429358aa3ece1cdb3c5a113c7a5486308cdcd07258dafb00ae835a7ace6f902f7ba71637d2ca5d0be8c1d6b5f3bf928eccf9ea7ce0df4b27004033a1578a3a98146a55773a438ce7e35ff638ebe6fd55c986012b84d295043fe0f3cfc3a6f80db9a2dd9440109fe09e0e29e7a63461c2ffeec7ff4de6c8eae5a9b1336ddc1fd4495015966aa47e904a03e032778fbe13cd478a901d5b2267e480741c7453e5b37b2e9ac234ccc93c0d5f5c85c266747328e61e06d14250a0fdf9e1014031e8a22782d0581ed4a5d52c487366e6bddbd6d8004d040c9d66f52787b4894c3e804ef658949bfe9838203cbd137319703fc8f16ef74958a525a586c78f438fa36e5ecdb802d64ba186503b59dbdeffd5ca2b2430f4f87c1100488e5811fa0f86c31d7b40a5ae476235ca74a6c518532c0903a1f4a8840347dfef721c4bdb3f7307aee0df66b1c895796a0a533fca1abfe289dd500b7176af94b6ff826e46770de9ae967fed5b6a059936f2f52211c11e50bba834370e7f7105715357a86254b75d5a253a92ee55fede016c9f817d8d001e78d6594cac5f6cee303aa8c8cbbf2f4320f59318b6ee78b71603465a03d9dc9e95897940482496f63777c8e4c19a9c34bc416e41f8df00ffe374504545c15c2aa0df20c78d918d0e6feeb4cdcddc1e5d851dea0fd28ca9cc8b35fa16ef0ab36e2c100d5075b505602488bec048c9baaef2d0c79862a1fe8beff0586eb2ba9796825839a877667a12cc065a6512fe8764599b7816cf024228dfa82beaf07b21520eab1fe3aa3b7aed69bc728f972572a6af4aa42bfddcab243a24045f99a6468d5395d4415b85fb08731c1bc24111fd3a82c66ec0d36541a154e22bb69e87f72a5463dfe2d9975af030162520b0528acb0bd68047a20cd30f5f0a0ad6ba2b760755234c16b44fc9e1124fe029a69008a1c76243e20ec04fa70278dc50fcc6f19323462af2f9301f49cc57fe21ee48747983c73bc8608b2906ff9bd1ade4d7c340b572be512744939f0ac6ed71af2ba26e7e41a1cca2bb253816943dbca1eef436d6035454108d62fa41e2649f24bda9fa77cf939ea63de88ac44ed14b1935d8c4122cb12713ac53e1c22a48b5c86e60c526dad177067be6ba6a6251e7c36f39dc0b4be8fce1e6f6ce884eaeb1fd75b6a2a472164d0714e1d685aac03ad264db767856511728fd519543fd3bfce2e7345f489488a155b0609df03f2d6b6d279eb590423b4d6129897bcc3e7a69b925df95816cbcf2e309ffc73736d4a0500ef1355fdfe1f17cb20ffca8dc5614dd46a079ada661e087b9e7e057b6b7843daae14dc94cd029bd0e8f79f3819338bf78bb848324071e7f0c14aedb33a47d17ec905572474456a83de1c4ba8b08d4ee62a15a19e2704bc5fd1270235286f10881f1ac596e6340376e47998c481187860a9f1c2136cb62a4ee819dd538736ff63b7707d689d847080289f13cc94db86d9146247e40d8c2718c769097d0d1ea5c2597222c49d5b5d635ae872f5ecce559cb3a95fe350080e8b15ac73224114b327cfea6206d203d3cf1fce8b38afb81a966636de92e5dac4644f8f80152784b0196457be93c3695e371789d55fbef341918ce95b17c2c32cace05da6b5fae1d2b21278411e392253870c1612617b88f79086c7f29da4d55ad678fe8aacbf9cf3cc9ef68643d901be0339085a44ce808198415a8666f2ae9de242761ffc1bb08684cf0a7346ed74bb575fc309f2ef548bb822c2f92c0672515b80faeba8472c8b0ef2b213b6da1a13180caf34fa52b6552562e53cd2da016467f059bcc9012fb640a32f72c6affbef380fe78e51cc3a630ce5c6dd188886951b198862822653346795bbc22baa9e1f961765cf21879eed082ea85834bd91cdc0f114ff061a5f292e8e95ffe33b46f9f84bd92c2442e36807bad35d17cf40b18678faf867ff63319b7259efa8f35e16a313fcef963aff8f91aae8587394c63547cc433c51fa7334a0b359e170ce13071b2bce6e9aee4d7d657f73b458b0d14f349e4d2104cf20346883b614acdd80e7f203303c61b06f910405fe7b8d51401bb325c2f5dedabb31901e3c9f7f1cf3a866d11f55a10f76459177ae751b6feebe3e2dbba6158ce43d885e62eb85ab9cb2230c6b62d78b7ebeda5612c5b35099a307db7444f1629446210ed8c9bfee46bde04842f845b707799962fa4d4ccd024e56d3024ae2ec5cc43c256b4d695de3a5186eea953d8e9b2488f9f292cf21794831d7bb2e9c4542a7b70f1eb11dc16f3e1b27b5de74b0eb5a1d249df21f6c560a60e900b92884c47863cb0af07ee640d5b6fd85e69e23d0b64f2230686c3d03dabaaab2721eb39c300c2636bbeb0c7eee01ed1aa06394e358c410c6dd5a176165182c804e87f20c7393a8d653bddf7de529b66c85c16de74cab905a013d2282c2ff801edfe01d4dc64600af587ac32c92b38b8c07f6f6f65f3e0de1a1bf1abdf42841a0a07288ecf1a13a74b2da6e71585cb7388a337effb1d87f6b81cf310b7cba9aa85434096247db94a63128f6dcb35758079136c6fda1c44a8401a6cd35b4c821104126b504ea351d10e215ee7dc8df8a300cef9e0e401fef306a815148d8b61286407f48db7e89b53b3340b5f89974f392a446a5323df58c8305887e4b9ebfd19e026cd51a69a2eac6ab15913d19e71032c7d6dc2ead3e648b302f388a104bdde9ba22384c2794bacc534469a3191fc244c1306c87368d8dee453cbf798916b84d490207cd761073f447da5dacf9e22e24c98215b49e7a5a8e9932460be451ced725b8205ea662f1b690903c67f21d6c8faff97ea2e0180e113968e3b1216042512a271437dc4f2882de49643cf149be2bc759305899968862979d4b3336461c185f9bddffb765d3a9a82eb4aae07d4549d2383a3418d288757a587afdbb7c268aa914b91337553896c944ea0a2af3e6ed483ec66bd6d74a37868bbee605cd4a678412a40fb2487d04c452f95002c12c2a0d0563334655e4acba32e61d619538652cc92b7f91c46eddfc2911a3242b77d408af90407a94896b7de3d594b57b465c194f58ff49429a9309d5229cba6184ae95cdb28cc268d173222a64f2dcb3be88d42e241ebded9f885a89d066e6eb84b6f30007d0e312949a5ce24afb08810a1a687722c58e247c6d0789bc896941ae648be9f1f8f05d116f18d4a909036e0d90a448621e99ef2a527caf4b129cdccc883fae651a6f0a9a75c2c513426425215b191297a5e27f6b95367b5fb027c27be96fee784490c640b810e41219c80551ff93978e902dfd4d1be43236e4627c57fca38420bd8a4cb4138cb509b114641a8a81d085c1da6199a5ae4b88eb14649c9d402c2d12a3242b58404b400be1f5f5f59603fce1590dc53ff6535a10eca8509eddfcd04bd3cbb556d07cb143ad3afed916852db13b51c7c38d53929da7156331100f6f18a283c61b66d70945c995077d792d858eaf74d1f9c549676a64ba956799c83777dd5ea04d1be42edb4fc1891e33384fd1a7148cd159b0b9e369dce4c3aacf020bfd5e5fb5d4ea34541220bc5eda3d2a2112f69756e6f84cbbcb7678bfa55b5bc9e77d1b5a739375b3cf01a486f3d76e31fc143e605462dcf61345635406e7f21449cf4d38e0c2018803432181286dc34fe0f3e28380529a9f6b08a9532bbcdf61aee5b9a78e9908100a6981d2132d4927e90063d1e718537bd638ab864562c8c800b426df9f68104846df033e8dcc0c2380d70450065f7a3f2bcb8c9d2e489061ba34999dcbb44bcd993082519fef9d83ee3988fe53a8a2e489069195de37095d19abc7498ac379f561273c865cc773d81e9181d49318d07003fb4a4234ab807c1a11d6174b3588c0651216aa0d4e5ae69b405160b2260630b4958c55dbdd48bea813e79c24c4b1002a0820c58b674844e22f911ce7005bf586466dd70c3544b76620d528927552fd99d94b23ba3bc86c5c03d69c2ba902df9edd76f495304891a1d161cd2f001eecc4de919ce68683894552423cfab90f112873ea3d4590b708732c62bacb10468a54bb20fb43493a6dd229bdb2829cd1a17a1e146493104599c1367bdc301e58b0267922d474fd2c471f566b28c7c37e3191b17f6c6d46ba376cb48c4daab96aa2cffd552eb7435b78dc6a710e70afed632959f5c38f5f970b1612421bdc73f57e1457db186cbfaf36d060ca7b066ebcda5db06ea550b6affdef73edadf1eeca7e1706e8010815e3163c81880cc9d4d822962d67a295f539608c50e8ee900a2781596ac2a241d9bfced15c8803c0c01839360ca82854a78eef62f6b02c2d4d668ec25ced2558ac9e098a669d4f74b389eed8c51205ea13a83a947d77314d13e2d967acd710c489ad6518ad65ef286c797b6fb056b7e804116f1c1fb604f86f01132ac24846d304ba8a192a127c2f1685e288568ee3d89af90c51b176ca7a59be4605f245029b2173876c1fe03cfa260650d2d7f55bb8320d0df0697c778ecb66572e3e6a823b236f5050239f41e04369acc03f6f97eb1fb9b32f0e72814167c109bd95cc6fe5f6d3b3cd30a83fbc2bb16976ec526e5c56a9f7c2d148feac11d4d5d144abb1fe45c6db5249329809961618f4c030fd453593e0f9aaae8c9cf7e9824f39698891c2a78179aa8777c102ce7cad13d35ee2a2ae14bc066ddf5ca6c0db7ab02d69e4bda61ab9ca750a8232e3e8b6deb936d153587101251df99f3daf26a88c1a0b373b7355400c59761375b5224cd2fb983f38cf5805e6c732f85875c33be88c1e1a335762b4a1a066cc7c98b857a6b9a810b7849bb41834e1cd0644f1ea47558b066f8cf141e5bb7abd518941420d9d47ea821f7d960552586ab13ec64c0f2b4c760fdd6eaca17959049e8868b5af29d7b30001b039f2aa3309f60af28b2649cf78e04d6802756106783049b31b962f6129a9b81f4e66985401c93ac92a0e5a3a2035e532cebfa5beb057a563b821fc4e84041551bc9520ffa326af11e2385eeb8015020d3dd76384f426defed15084455795b822cee4733c7a88a217087cf42829dba38bb6d1b1dcf7947dd4d9dd2860362041d4a35ed7f53786094886dc7814b3c7a10d4770e2531c79986006490eb5299ba99aa90530a92d6fe7eeba4f7a129d3c7ef546a08260e1e7aba282d4fe0a7285efb7f54b965ce168cc62f398cef8f638e147eb1fe329fec986102d0eb32ce414c6f78b1c13f9435d7ec72eea79ca9854d0f47f5e5c199c69a9daeb1d1ba052556233732d486a050aa047a6e9d0454f424df48957f3719fea6a77c4277a5ec8fd9aa6b6dde678a34d7dd86d42e3e82994c37b298783abf8da15eca2350c80b63ec3614801389d1e17f8480f63906ff8a4ec091f92f715e24e54d1b2df793e29dd7d5609f794ef4f897d7e1eaec50b469d02bf50246c09c077a91f4b4c16fb9cc417a9cd8e4eeddffe40095c11b0b8b3a92f87d657bad5c9e8ddfbaf11490cf0eea2ef251629551abc752217dcd20fbd3c8b88d7682f9a2b0feef04fc9798ce23596542e39872819fe0f8277073c47db9b682625b5c3ecb2cd350f82b317ee756481e0191e107a7b155fd0fd767811547ee2482f3e27767a5f3237670e61c884111052a1ae74a460ea8e9f7406fa9b9194bbb3c8e261d3cb0d87ae1ec1e6bb025efaf4df6ec027a5b6da24bd35ba3e1541a0f7cd592601a4d109cb6d32423537e632008a73b08f2e9c25d6ad282976c15e896318ac59a0923d28daf1217588854ed86882c7835e2178d8423b8499b85be95f38bf5cfbbfdac3e345880d4c14b47e808680188d72d9933c4cf5a236f0b285d6f694c51ac6a0540158828280637b60259691f3028005e9dba410701fb9af08e222240b44e80a39813410316094f437802ae9ff9e41d418c1b8f86d8c0386b17668f8bbbac866565cae278eb10bbd07e61ff88a51f0464ca113af95123b3ce90fff8951cfb429578d3eb727d2c30a919d1b7acf27a98109d81264c9e00aedff9e275d009fba6ea4a756b7aba5d90ab4b2202c801e57f48c6403e007ed5bb269ca23741f16803d23980edd92c343773e47b6de2348e2b0fa79d23c2179862ff338ff57ebf109496134d12fce1d0260b2d129d52da40f55f21b96510a5fdfee264bae0190be6fd34ccfcccb357caf04ba9897ba5a20d2aa9a0eb1f0b0566d2d5601cf9f3ff79f1720583e2c8f8662124bf063e69916b5ce71d016b5202793ccd4a68b47e7cc85308540000749d758d36d00b6d1080e2d7a982046e5cf7d1e366d5d60da505bb2bb6db9b794322519bc0b5b0ba90b40dd923fda2b250840c4a42c09b164a349b102889a14287e76a6c8a43401ba4949e267678b996ce78a26294a86d8c942465b03881d2c966ecca0bb9d3485d1c48de9c2dbe1da2d6493153dd41d2937eb99e07e4527155c0a851b41930a3e2a9a84ac0b9a96749dc735cecb296a1481a684bd9289c6048d8c972af2469342054b7bf064baa562898a15dc1c40a060c9ac99be7b2a4f34a857f144eda5ed2bdff22eaaa2a2089b82cb3e4a5394e05bca143df876150c60e0b529648fc35eda840fb3252c1cad3184c403176f5f22f1900510252b50620225414a643f82df4a707876d087332ad759cf07a6298e363c0ab4e75c82cd9aa89dd9df897e6205ba5724e2561f5b8c9ef3ce8d5a6afdba4374529f74526a9d8e364fa97f4e9d06e9ef649fe3a290f2dc588184d4b80d1c9e039a2f954fb738e76e057ace7ae2119fe7dc863662f286f30e5b6c41dccec7165ba384e47820ee18b6d848582a21247aaec5136ef2861b0095dbf94843f49c8f25143de734445207e639a729923afd9cfb92d491e1688eefc251f51485ee0c21b459383893bd39cad5c059520bc8c9a1b3721874472b64c8a94f6f694a0817f1d9618721a1bc610fe58df5504384801635845d288f3ddfa186dcbb004fc58013f5a87f60832008822c6d0b450db1a2957c3ab554e744296ee07b2a733a38c9f97d3e33847b1dc7d99bd7716847699a456d58cda2a816f796d0678b3a2a54cdd6add1e1563f39f7853370a770c513b533071074a9ff927b61548ed3ae1c20d2f6940ba95b7943290585561c77fbc53c30a96c70a80389f2d4a5d1d3b1c75318d7cd5a7b0a0ad1aa51bbba163cf52a025a133f562adf11fd589586d420c4861076296ea5f665903755488ee7f8642341f5cf4e708254526e3a69d7926afa0a3a3be956f54a3f75e54df5b14e13dcd183f2d551ee41f18ada057a752f4abb3ecebde9abd3eaf40a17d121cfab53a27659af4ea1b4ab739c5bd152114e11abe6b4d453910e89455cea4c6514e82b0dfa8a866c55af59beeaf4f0d56f38872059d553e10c8264556fa9aee21ff3c629cc3150e14caa0e56ffc259a559d5695dd4518aa6cafaadcce4432cafba0db989b1348bc9a659b59b6335abba337d759755f740f688f07116b51c78ca51087c907c88bd4492317dbf449201415685529513744e14286f98a538723f03d883295d4adc769e05013d77cb9e3695cbce602c711ce7c5650e75801eefa9b82242fd472aae888c948a3380dff354521619cd1c002c3064dc3b3b0552a727ed44d099b2b3145741bac10099f96748e50d3768821294a20ed033d61f574474ac881c992292f933806f6708260a5edc9132d8f4a9b3d4a9fdab9590ae279250d291a758be1e3ef4f0c1d2396ba6b83c5d822e3bab6688cbd58334a57409b0668a39e7945d4c950bb5a1387b38404fe5953d421f09f7ab22d655f85929a59f9cd5f3449e24302bce2e6a15a96d166bb6a8733ed28f4efa53047db6a4f770025229ab78e4feb8a21ebe94f2e107e905c81be9349436737613e193f255e9a5dee24db1a0c5651c1d2c9b66499fde2ce949baa77b62a1e374e972ba54c01465900218018569170555dc3072a499dd50661075808109225d061a707e2c3203ce0a2f6538aaf0b2c74bc93544c2fd9c775c59162a6a67f653a7744e59a4f315be9ffaac4f9bfaf81c579d210b4fc3713aa5655cebdd89697c2979d3a9027c15e5b659d27b98e915ebd1130deb7b34b4f993f57e40c398b79e5865ab7ad5400cfd8f84f95f09fd9f09a0174a58cb84d92c59ac162a527953bd76cc226d82e5d3b9f4be095a13fe9b25fc4749789bf7420e05322e03e0bf4efccf86ff79a711fefb6afe0373fc87a2f9af2535f3dfc5f19f8beabf171b32ffc174a10e34d80ec4b08c8dff6ebcfca772f90fc7fd6f26f5df8a06f55f0ef0bf9aefbf1140fb7968ff13bbff00c0fd6753ff23a104d086126602d8ffb558ac962972b5c57ea2bc74d44ba49f273f27b84838c490624d2f916237e94a2f9162472f9d7b8914bbe24f2f91622fa8434688b845c4b5d391ac143cc106c5129f98d8e03abf9932ee78818ed01f6f4cfe49a84f4137d628215f1033ee780a623f059d8498d854b6a4f95ab9c0237e49432fa7e880c9f35f990de8ded4ad5d724a0e62df9eb2d2ae3953b724ee5d4269ca365fa7d96cb507a592886a41f8f6d451bb02f0ed21d3eddcfa780aa2af7b7f96b8ea0924aba9734d48579d35ab9d3a47945a82521f321f41f8007a095d95ba35ab845b54fbf114e5443bd59a053796baf1b3fbc82967cbf301f4239206bd513b608bd7706c098328ddea9f7be3079a9ea25ca268cfd370862a7bd489e84fee85230d7ffa79f6ef939d824e3329c794946f61fa14edbb4508b63f41d6134871bcf9f625be478ef9b878cabf5478639ce7793540443f29db89c9cce714f431579aa2d2ae8e09176fbfd75f78f19b7a118b9efd857b43caef4774830dff662b175efcfa8b5f9733e562435cb9e0e22977f1948fa7a0d3900d678084d9b0e14d6c881768b69a7ff0f37cc9beb1efe51b0a53b714530e22268aee29ca89369e8268a5b19bac5d63aa768388ee0502ef12267ebc42361cbfd9b3a76e29a6540de7afa73c15aab853d029a85f269c664eda254f4646a7a3ef53d0f7e9e809a51f4f51c613ed543bd9be9dab74fcd8a79d6572e425e367bbe2ca45bc21e9d9af084b89ab1752377cb6d9624f891fed12ad78d083d17c39e5f6d30393670b20f1f0040f27e8ee25120f4293879f9797483b1081da00a3b6247131e876a8c222ed1085b7031327ee25d20e4b7c3b240122ed008442f2c182e423860e2e172e545cb1364027605080e46304924f0f374035542721e0f06e33322f9174e862a5c314cf21920e2bc8a18350cdd11ab69897483af430022a0d4fbd44ca810c31a6060000b7b0c1f112298726542f91720841094839fc98605f22e5e0f3ec9d10394c8ec59534f8c1f29f5cd956549a15a671a78faa5ab3648e384f6a1846a100c5ad8eb3e3e64a3b6ecd6a195bcc4b47418a3b6b3a5b13b2703a108528ee748b7229ee17b33365dc2044a09e27f368dcd1937ce9dbe9e71f6aa7b24f54156d747c206a07c65708a881b3bc0df75d1c85c3c5651cf495834e6ff88c735ebf180fd2b3863031de282197551f96af8989d0062704c2d271c369eddae1aa44dc91feac72b6a452d75e171eb716794c1b343034df42f00096dc71c70d86479033cdd7d7245d3bc8903790ae1db766b5d7f9ca01c67690d1b4e3c689636de2a938d65a259237341750a8e5850a62fcf421849fed63bd818489711819991b39dcb881daa98e03b5e339825c99b4284abb5649cd725bb3a8ec70c7afc957b6fae50043236e4dcdc73b4430945d11b523532b6a5647a1d5788d8fe0352e6134a1d3388dc8b37a81c673780ef18655159bb8d3485828f6c0ea374208c6400fbfa60673842e44b3458463ab1638f6557429eaaf51e256e7719bade67173168bc7cd431e4ccd42fb083c9a7ac478dc5a67dc1d37149adc91845b0ea711c1188dd7885fd38e5b4d6dfa11e69bfee542d4ad76a1b9147912e85323ded86ef51a722cc56212d5028ea73ef6ecd45042a35aa8fd3d44c01f799e8a2b1752b01a3ffdc8dfa446e4f1006c07d36c354a015e0772a89d1a988c223c12eafc1caa85160b762805d41f6f78ce3f0fb42805f48f1d78ea5ecf5311f45043bcd3773a9d4e1fd73226798e08f76392df61a559206a88cb0a3b82b04a5ad976a0b1b2edc8b2b23511499dd395a9f1e8b10690cb0fe52cd08fde836381e31a9fa0974c6db6642e4b9e631b1678dc503b3cac34abdd85887dc68c9be367cab82e505ca2b818cd947147f0c7952d478d1f990b5050514e4e8e0f283e5043e8bb10c99bf61d396e163b7618c1e3b6b2edb89d7830b5eb84df71e37165655bb251af3247cdea55154ae323a3d4ac4a65a834ab65929a15448dda8ca74cedd3a132351e4d3c9878dca608c69ad51ec48ceb52e4f3faf99a98ee88f3399cc6c76fb6b2ad92bea69a99322ef51933ee077e90a62b7f0049dcd19364a8c8d496ea4da726e92cdda64f2c265bbafdf8f12387cff9354da09f0efefca414fc59f2354dda57237eb4d99a353e828f20f2c8d91abfa69f5e23f6c0a8387eb59f9e23046353e640503bb53ef1a466f992a32029004384e4b843f2260001f65e95ca9dc5c2c1e99c6f2579237de502093c49180b2f5e007be26e8293e03d309b70e5828db39c25f29420d2e0f28f766667583ebde5322e4ff0187fa1e0302edddae64b874bb74956a95f372edd5669d78b4bb7b7f9dae1d2c5a5db2bfd4ac1a55b2cedba2edd8bcd178e4bf764de4fbf5470e9de9276b5b8742f68be5670e9decc63d22f1e2edd73e211cd570f97ee157951fac5824bf78cbc9a67f3a8f4ebe5d23da576590f0120860000404813e38e012086d2bb8a0c4371d5027fe843f843e91e7a288e2eae88cc5126c67b1ec67bde86f7fc4bec47687542eb23cc09656c0471b435e278a55d89e39d1147150e717416cecb84154bb362424e16724b426ed62ce92f21e7a459d25d42ae28e48c42ce16724a21770bb92b61173b859d17764161c7a459d25f6127d42de9aeb0039a2de92c849d4fb7a4f708b9a6d992ce23e4ac744bfa0a21b7a442c851e996749c90abcd96f414422e4ab7a4ef0839a2d9927e13724cba255d47c805cd96741442eea75bd24f08b9b05ee9967456586fb325a78f76f6d25269d7d84b6f67fde241148bc57070d22f9f2a7be9164abb8afae593a20101ca4bb7346b24ddd6da75d42e79f403a6976e6d36a95f1326ddb373a967ed5ab1ac59524a6f57b7c44b6fa6765d6957f704cbe424226a96749aa03bda9e9f52ba9dd958d968835e3adb9909218f8d2031966cb02437d2a80246829710f28035180f0f15f664c52e9f04f1c98ac57aab569ad52dbdf4e6a10367b162205ee22c346326edce4eda05a55f122699a6c212069a61650aeb2dac569a259d870fd77fb4b397d22d91745b24ddcee6d08d259b6605f149f768c055ec154dc59c2f9194ec80d24ec2461435e093365e3800132cd9c428b77dfec75fd0b66072616e835e38002d884882d9f06b827d62948b1a3279cebab4d455be5d76cfca33f014e10269e58182623218c429ae18457cc165d490c9a114c048208089f0113f2611e339141146e239ef5008609f3570961a384b92af5e032794d060365c8500c6853270c7b158bfe40e6c5cb50862c2434cc45cd52193ba22a038f1a3a4f2b12420d74a45a3020a8ac9aab812c27df52aba0d8f243c2613572db08b37465c765b4b13df2a9c33e1d25de187a525f0eb51e5caa327464f8c4ede67a3c675273894b823d398496b882b8f9c14fd74db9170c5d010576fc6b8f2e8c9cf931f4ac6a52e8f9c30fd7494d3e9d2579f4bd84c010e500b8bc0608ba9208c0cee8c339398a2cb932409b60ac39533ca013c045bcdd74a5c5167d88cc8c3b0199f0955f3fe5c9610112ef59199f053f99f0c282353652a088220f8e1f4c091ec24c504bf937ecd783b177d0ce555322ad50d99be4d5dab6ec8342d7d83f1ed174bcbc8c8c88c48b805d0813ce8f2290e521098dc7e7a60010ef206409401032d7c482376052440b36c49b4dab3ed0b79a8594ea8cbead2002528d78b4f717cf1396d0b659acca7bc59ea5c87b161c36128c501c625bb4aa57215fbe4c9939d3ffef863ff18649041b07265675a930c93cc4d46e6c68d1bb48e795185a34bb9f4238f3cf26ce947a6c18833340e6f836dd8105fc20ef0342ba88c3bb2cfc8414640ccdeb5783b07499d21f2f98756bc0294e95f480392197e9e77c86eca53620c237be74e85985ae2c4e10c8dc39fc2b17178b6f6de3943e3f01fe8331cad4f2c89a622987eb8713a2ce540535223c24645908483fbc01a82b9fb6ae0f9d3e9e421a97ff2503e3b69d65019d79fc98e1e6e0c566e0d5768d2d3840438b0810850b04609964820044c5c590ac20c8638818c01102fb5cb0a12bc8444d183444b55fcc84943cd44273369d7500ced5a19a1802d8956b372d957a184cd8412a66a1594fcb237b79892e28e94b2f5da619123d4bd3a5b9b163d8ba422740214d8a0a90a170c414889357c92d8210536d0e2b3d96ec0d8041288fc3c36e7b6ab7f54f211ea421595e611faa3b4b1ec9622a3fd51da8ab80043bb58cc91556c9ac51d8e2ccf47b72ea7ca7a4d5939cd92dec3e78b36dba7f747a72b604121a0a48c2742a0240c2b4c4029c20a7eb81d3103202b174805ec9f6490ad348b995c76f93d3f4ad740cf374761669e4bf366639f494c1dc43f658d160588090b17fcc84253d4c0e1471e3ac222e84786c2453f696c549bd987f4f38fea2cebe3a7cfd1a2e0833b32104399aaa31ee2c8d2d1b0e946e6f4186808228fae70f2f2e88a297e3a015cdec64f2fc064a6729374d919887f54ef17fb3011fc82716bfae9f4f23233238a279c2069413885397dc642eda23e819e82764e16a5cd1212df11e9eda18dc55e86aba719dd24dd768ef10f9a51bf90c823f6d3e9e5656646144f3881711807878611046ad7a438cc62db17b4564ad33db83c71980892564ea4e92aca6e8d9686a600a27422f24705640aedd3e58f34536a3fd250a680bc6977a571e7d1335f7b8511480419ad1124248b1a8e35ba19317172707ae4684113a245ed1a515952a3194929424890901a13c8195d9a9753b0b0c086e36cbf5e4ec1b245930d0375c30546b3d016c10a2c576c3da44e1b0151bde42b5b278e1512b9278feb6c273b9690fe4edeb4b3e0c4651fbb97ac5aa7d34bc34f9f20929fb47680290f6511f41af7c80a2b3f761063e986b822b4867cf16d3216a9c3de8cc6cf0edffedde66c46e3db3f21d3a588e38c4bbdb2d84143b8541c9174f755491b13e2556fbda3cc313ccff06c257731587e4fc480ea5994a173e698c5917d9c41f59e739e385a6bad373a11d58f453c1103aa1f63782acac0eef918c37be20c2ad0db31026d1f559e739c2855b26fd660430d32cb4b97547e48f7229ff048daf9670bf5bb45fb4cc327bb99c526d24f4d272c39dc4ee5cdf495d2ad3ed299ffe25620b073fe1b5503bfe735fc3e47ead4e93ee4ab8a215bd359ac30c4e1e27190bc996e0308b77dac5b481d1beed7f847f5e9758ad439ea17e873ce4ae5a7abe60b146bad265eefbcd66a35d5f472e6abdeeaadde6e95e9a74b7913ae8a9c722609cfdc1f9d5d7b3b38cb19246682aef41134c027bf94e79d3c3f799f943afc7521ac0b6d4fd44e0d9ce5bb29694b9de069a5740489af8a4cef812581754ec386d9d006fb5dd88921c33ad1c2aad864e5c284519f302af224814db1a74bd23dadc8a46be4d2d8b4e04e8761beacbd37c9936412eb8bc028b9238d7d0983bc19e2b2772f25772d630f0cecb7ab7cd2667cb1bde7dfc46996c79a2dcf69e8b3e57d2ba5dbf9c73368be6e609ecf99ece9a47d9c50a2bce73345dc2ad42e947ba07b3e99b4eb73cf49bb4eeef924923af23d8771e28ed25664bea464cf6998afe99eb5f7769e37ddc56fa07efd86e92ecece0569cfa5f30c92375e8bdf709dfa0d2e3e9da9bb70fdc5a9b7882eb8d8f0c9b6667954dee379e2c28bdb10795ec43b5b9e7b4f5c78e17902fa8bf8e4b4d42ccf41efc2fa12d5022b35cbf313ea25ea34839ae535d37b1ef37cca3c6f26cfbbc9732e4485e017b2986790d2055fde50c25c42099b45b3e5f90d574af7e4fcb3f67dd0f4dcda7b552a77d60c7a8f8be6db00c2ad2e6d3c518617dbc908a5db399c0fd96a02b4c762b12730ce83b4abfa91a4c2398c1397f3ca39ce7c4df738ce47d67339f286a3e2aa7309ebc42673a574fb2508b7a698be4a27372b9db3e76cc9296be9a49c19dc934e4b6b4f59294739dac9abea2aa54b7cd3b2a4b49bb3ab9474ce39e7b474ce39e7eccead7c714ec520b3259db356ce39e714294dfaf8f45e27b99f21ad9ccefb78b9bea3dd7e7aafa3dc77684f56367b4450caf381dc92a2f44ae6b88a83d3230785c3f3a1bc3450ea469ce3ea1057873c1411fa1e191ff7a495f3c09377929fbdac0a820fec644b6d49d1d4ad41e6cbba6c97afcb72d93838383d725038382a481665a1859fa16c51ef401411aac25305dce7fc9e5c5c503bd55fc091a6734927e75d930b13aa28a59e16358cdbbd3caaa20aa46b5f1e5521c507c5055f1e55c1021754c1e45e6bc10b230225282d665a0ca56e1543f8006251d452050f3f7cb5194a0a16252759b7e45b0f768a5bdc597b044eafcda1d6fab55d510349e79cf40b07874be26c1d5027fbcec9b7774cae7c940ecab777b376d574419dcfb777b11260c9c12d714735317e8cbeddc9b4cd9a2cd6b4e89b367d5326a2a1afb7bac4cdb820ce6756a3fab344850a4da66f9f55661137c4011581fbf9a661aa4a494c3ed6a3ef995af4ed7506060e558d7d5bb98561821b3e52255bbb646adf3e522861b4d3a076c18c1408cbb7cf26267c9c56be7d2eb5ebc567d2a47db1868b8f138ad20fdf36394f0091b67f40956f1a5af07d45b684856661dcf8919d7c3ba91d35956f4e62c2553e1fb079a046aa9ba8a85da836b24dd15498fa4a63910d7dfb387f7e851fe79535d93483292668da41e90627e802f62384ada93603201df45027c971027d8f0a9238030c28b418a3960556e334a89d1a9ac357a89d1c545a4e8ac59ec667503b34145c5159395ddd72f8d5ea46c4afc270c1af1c076a67e51ed1cfb80ab53383a3e971f80dd40e0e95cba0765437a8f81b1e83dab951d36882c9c8380c6a47e68a1f0306101fe336503b313030187f41edc05c2cdec61750bc0d7741edd8b02f7e513b2f38dd72b1810b172e2e24bc8b8b5f1f9cf12eaeaa82f42eee5f08bd8b4b19bc8ba7503b2eac1d4bee28b1b89706f706e002f9b1c75f974afe3a6d978fbf77c98abf5e04fdf542087f8f7ac082bf3ec0e1afb7a0766e4eca51a89d548bcb167c8b83a89d16947fa81d9405611e1c691e74daae9b07c11dace04157f140870775508407fd84da019dfee7a753167fda39dd9a2a66ef7987daf128b53a58f256cadb5b513b9d52d053cf01197cc4cf49bb2bfa1aaea181e7e0a870708a7c98b9740926a2c4a04e72c78f344f9d52b74e3cf59b832970a0b443fd061183303f7ea4b1d1d123a9881c4944375072031c90e0dbbf9c2c35b51f75d020043938a2c1951a1071540320d860ca370e13321c0c148bc57ca09452974775f0230ccd833fdae8c081ac41007e944634198cf1edaa2eb2f8769fc1ecdb593370f2ed3954a828c940055dbb4209941a6c01c60e52469083e88927b448220d2564a8e405a3a8e9f610e28e2e039f123a5577510f74f2093fc23ce5f194fac581ad491a36e0020a8dad553268dc91ba0d4c0c90beb9e042e85b65801b1223b035894959e28812475c2102880ba618ac5994ad700289ee6ea9d3473180c1534b290b822ae59fe04a070a476a7cbbcaf6ed8e4486eddb250e4c199ffcc0656f95ac4c8e6adf055042a68410d7780bf812a89f1ae9ef10e6de7e9e1c63c078927031d8f5242ac09ea09c874e61410d6eb02430473b803d697724dcd7d8388e6327a1f5c47efa749e47f94c350a154a9844a18c748b7da9fe6783194fc162413b81548b73ff004243b3d8a768648618422c965a88d641940ab0a4a221800b682a20fc43023205f609c81be66eefa779760ab48b3d15caa316287d0ced72ff8fc1499baf6062662766283133731b69177b100a4cc19ad387cc9f2821fc3d9a85d32c66d903a40e09cfce321fd83bf9178487903f1ec00c45ea8c5cc4b784ec2806e21f19c7e40dbf78493f807f300eec44263113697b1de40dff27a4ca1ba681bd03ec4662105f706932694091f2c60647e56a77d7e6222662286c9b2d9ac553a649b642beacbff094a7e2a4cd1675eacddd9304a0a269ebc9362baa95052795698bf2e3ac629999278d326a487d8e226fa88b34b8cd3463b59acd96943459dce2b2e3a03e6df3b500d9a24e5b9c494ffdabab5adb8688526aa5a9e929a594ce504abdf69c3419d0a4b56b751f867d28c79ef2929b44ab519f73ce22f3e5943abb8a663281617c3c69ed2c75aea2fcba962cee031c5318538ec254aa2954f7ba4c8562cb09bf420250e10b38234640b6aa9f4e44ee1379f9596154e4e24ee77ae58fd09f35512e6a67825fedd0f824c78923128ee3388eab5cd36e66912709ac26e16e223a9de9d2b6fc90a2b5f7aa544e6752ae3caf63ea5738b33e16c80a11c18893592656f6bce439e899879eddab9393b56bf49a80da15d4aef1e4f33edccf13324ee899e98ad8c3aded9adf577d7c0ee83374819e9d135667b2b17bd1d86c55f983fe48396d36896f93c97ff8870e8eb5f8f38cd33af84777a28ee79367c38ea98f54918b3b764c74a85b4c4b204f206f78564104a00e4bbf28d06ca16186fc41853805a6765de99a96dab542397f3d859e9f1c155e3a9b2d8e8ab752e95757a444ab52b362bbf2dc25b17b430f86de9257a559ddd26c7167a58a9c387312472bebc2aea9bb226f3a2cddb2a2d75979066a21fec1f9700aecdc5c399f672a94fa19a6beb95addd66abdbbd231713e2d22162bfc638a9d193205761f34e40dfbc8f120764c5b5ccfc7934fd3b39f7cda253bfd784dedc2d2ae239d23b1a718d31c4172555812f3420e089902bb0d39a090fbe19670419c50b338213859b3788526aeb3db9895754c5dd3e9c6111ffb578015d092246576427465b674615e702990460c3e8c481d1b462420a518529490f1fc35536e170145f1526a944ab79416202bdda464eb66a0a96a6aa2b3900ed16894679a486794ce26ed59088e9f744667740929e9ac9d0e499d2e92375152229dd15913a944462d40a4820757e6f43175ab461c6ac8e7f3a5381ef93ec2cf40f3957220e940b439345f29d148f751ea471e62252c4052cc39a7d4e9170f4d289ec643f3454bb0042582e2d91b2504c7b74867f2865dac420da59f6217358b3de512f50285a53a8cf98e42722d5207e5ec7dd42f3ab32707dd480a355f1d4557514d254a44e5d93b514a299f28e58eb5d6aea37655a319561acc4b548b358a91f9eaa2ae89b46b4402ec6c44eaac7458b9239de1f8fbcd4db17b552a77d6d746c8a533a018b9de84e35b6ca29a2ceec8b416e794b3b352bffaa85bf39512bb688aa34a1c6f0f1d3a88ae55dd1651a4e28e4094465035fab1a32c1d9d51063731db19bb317879840653d14c1ea971f4dcdf519ebdbb66cae5b8a276a4caa5013f444d4c673ce3389e4c9a25b53083e965f8f2144544fa48a51667e4f032accf280448d690cdcba334869e51280548ef161fd02cf61a86f4b713a1dfedb24318e40d3ba594555087508536ad543450544444fd92621419b54bcaa3294bf8979e6fcf2e67cfda3532ed87dac52b960ecaa48be2479045ab111535cd574bc320755a5c09e1dc864712dec55db5f3113ff2113f7d9512795868066b11613d709a4544ab1109cd60ec41dac5473c6f01e5a5adda7808e1b3fda29667d8e36d288fa630f9ea759ded746a5eeac09158c0d0220a18e860c8033a4aa45d77332a4c428fb8c1500e86497298c104067a906631019ac50ee40342443f4cc1848a2647c098032418ea410553a668620918337b8d15770442009c2646fb643a183ee9fcb361ce27830148ce1066418058b1484d15362c1dedea2923826b5d2689eba9429a5311a68f4058456e9e73115dd18fe07b27ffc2cebd93b86a61bee743e67beed95015bbd3e57f4fbc3c3a22fafed17f0402839132849e9f1d880bcc323edce9591fd26f1130550790a8163ca2b722b30e34ae8cd175184a781b4a1a17b4b7e298e4adcf39e79c6ebb2566e28bef4456b3d88688570c16da4bc2d8e9f41b87a1c50a07d2acae11bae395f5b832a9c38ec330489dfa752584eb6fa78053b73a42989b8491183e697bf1132218e4cf6fe71142510f1f7a74f4236df226afc8a6d8947c34ea18af6ca5a269560e1b89a1080c0768d7ca6d8cc4500406a903a793c1d24b9731ba3712dcc6a57f9452fe611342acde40696b2fadeda54d7ae9947b1231c588dab5b2d58a84e247f02b163b3323a275912b4abb5ab44c8824936649918b7b032218dc6024780fec7a4d9a2de9d683f48fb0d650f2e4724279d0bfa176d12174c60677fa0ca687cbceb59670ac4b2f1d158ef5080d8fd01f12db89d84335585c96f7248e57e589edb2b24a1366c8beaf41464d917dc86835188d0f301bef819970040e110efde1b2ebab678e98a0b46727131b4f76d168eda241586242e5a5cbd1b2357ae9d966d2ae713a79e97205c303ba226452d36f1f42bf390b138cb846664bba0d1177d5fec37b60ab16570ed0711fee428eff10799eb4e7788b2ee8b80ff721f2e8780f6cc987fff0b163b37691f0d2adec588c65612cca04ddd96c49b7012cf3b28a27641006a770a04073c987443501aa8904a1a06812c98322098a2fb80a28cce8bc18cff8803a01b5445c5469f60aa48e0a97032fc6281282b44ae40b114ca893289c60298c5050a0381dbdd480edad638a020d49636c7da86cd992ce895554c5bc94c10c963c8be3fddbcb2aa430e247ff8e5508820090621004e3b1518c8660497c28018410409d1558b104d3220b1741302e8a74b8c1b0c4e08c2558873850609ddcc1113cb8c13aa4f121059f942e4a67ff6879849f4ae9b3a5944e45ca3c7bb096ebb84ae7b4e14cdb4958e79d8475a15fd6b7e7d65ff06ce793569f4ece16e75205f74a67c7b36b77f7cea50e4efde193364faa4bffbe1a3ee9bc864788d0efba9025ab82a0fe3c72f2ea1f47c4fbc9b2c579e51ab5b35a00e89fbfe02f9c3e8c5b836cf25cdebe07d6036bb7a7d0e7e437f4f95cced603e1d6209b1ec9942a74f30b25ec14da70a25ae0f1b6a59413d5e28936f4a92dc771734ecb71f3642dd755af539e4c7fc23ed932e57c56e7421f4e85f62961954e2adad033cb9c9653686f94b5764e3b7520ca233e395f4fe84743fe279cd3f0c8c78544ead3d005962d8f03deb7c3207b5243cecb8064fe74d6f7c0ac531491cec591abdbd0c73a0f4f6ac879245305aea74349c331c9886ac146d79629dad0dff9cc92a5a3b47b427b9a0e4169486560a73f82dd0c7d4e521b5a03f3d95be8ef5644e6773ebf73ce2702384e61649681bdabe2103fc24f19cb5319aab338d66f7188d409d168018bf4ebe9f38f58a9431b011ca7d0f4a3201fe11f394eead01ff29b2915abbc69afb55d934e2ab264d5dace36b44ca136536a4353dad350502a44459f22c29a2805f0c8fa3324422d8b473ac911a1dff927398a2ba9100dfdf41b26aa85ea53a4cca184f44cef50be9ded9c28a902aa4f47c0c81d4f1c6495a75fadb82a18fed1b19f16f54501267d40bf80746b3aab5b4c439c664d2041d806a72888055924e1822eaea896b8a3cd4ff9853c4de36c51851faa28510ce8207386297b18fec1ff5f7cd2e653b5cbb905e1b35f15123fb6162da039fa9635544f69c3a838ce30653f6b70e5d7265205202ebf2c6c2eb1a045c62465cfa21cef8bf3e0b0272e3ee27c4c4ce7323eaa3ec63f86f5313a3e06c6677cccf918496b8939fa989898182b8fe3468c4bfe91f218717459f94bd864756bb2729aa6679f59c1303d4b988d2acffe727b76172b77291544d1b3b7c49e1de5f3ec60d0b37f42cf7e9a3dbbc764e8d971c884b8e1356c526b72c355611049cf2ec39ded654209e36a4741d09ebd659fa4eb89692e069fe41ffc83e573884482d823616e011c4ad8a40e1b22ebaa487b0f2c090cf64db0869c68e50deca373d2d9c28956c2a8d864fa84cd9e49ba1b053c38725082192c092705f183046c7a873cdd0e60496056009b229308b034c1b62841900cc6c3570c61060c6049629ec064b33082ecc410c6a0c13a5c553182713a1bb290048c474a51c389125892ef0651c06cb3f06ebd1379748e502308968453c304b04e0a11866ab0245d0dce8075a26c167a602b172c0b49c0ac68c5d50b9d7bded9d50bb6734fb49ea46259c35efb206a87a3576e15693a950d67175a912767c91342b0249d14b0ce7b60cd6a16a67b9d22d8839b8e2b450ff35dbb82f1c92124256cede291f5c1a884516e211f8c0be56c75e0dbb977a60c48e6afa648a45d039f0c8d647e8b2b22dea20df36590cd923839b776b2a351a96c5bcf9eacb5765a18ef5e0fa4e049ea506fce3b799ee78122b537fd4f4fa75927451199222dc1c9632b032a69542aae61eef591ce7f9dbcbbd5e0b4943a379f7e953ad2ab92ce9652b2d7c3c82fdbf648fabd6ffbf46f7a336cf68f63b17fb66493171ac6a29cadf6e25b29f1ee6e969205194813a8eeb4b32574db3b1858df8939dd6acfc9c949e24497d09c3ddb324d27509245106c50de345869f8a53ccff321b2869d0c4723d6b9e93535f9258a6df0cd2ad39bdef4e6c9e769ce53cf13cac7fba7132af47a69fae9743a8d343fbd0045fa4503e87382e275024c7082d46bade2e7ec39ed3cb7968a2050bd22e8819eaa747047d5d34061980e8a2390a43bde977d7bd0de1bf652bf823aa791edc2abe5255bc44b0095f4500690cf89e07b3d3bd07bde32178e3e72de8527ff3c48f7fca96ddf7990693b09d4c52673489ef32f65802f253df7fc74623eb1683d4983e63c9d4e3e4486dc29b461e7941ec12950e7c2b1959e36aa793e2133fa1194e2adac05cf7e816fd29e7378cb56056121d0c9cb88d2284789a588ac49dae3348e9e69c931e268659e6d88a3eaf9451cfdd9451c59cf37258e393d6be19a7655cefa5c8a4b333667f3e5a2ad228d18fa4a1ced8c385ec7218aae0a672eaaa4f352cfa4df10472b8e37461c55d261c4d16d8823eb451c715caef494385bc4594dd834fe79e9a038e6f88c38585857dc8aa3aa6b5a4d75e5cc1172d36c49544f1a4d83b3a08ff3393b9fdcaa76d1cc4e1ce90ccdb5767d4a89007183643606ca745ba2485de55cb670584d0401c9624544433c4bb2d568f2559d631a2eacc9d9d3cd459f7cd938fcf41936c3be992b57baecbe507655cddd1305a203d4826c966a30f831e7698badca8fd2a8369354a452d3b02c70e551164a3f9d8a2312fa7532285a2bf3823bead061d3604c135a66edbd23d39666cc331396507fbbb345fed1849f53ca9453024d2a9fb481d1e2b6ab6fca7e608b901180b1f47dc3afa82153861863e9142269b0599ea7c2d15b2cdf68419a6f53769bcd21293e889283a774064e868a8882868664440c54d4358e0d2db58c16d404c4746b4a62baddf85603b205258d3da3599beac4b75bbbdaaf53e71b4a295750f9c254d8e21f056f88029da2860c6104607871274a8810037043d8a10a18dffe41662a1c99360486a30c4f2192f644292b118a3f293eb6c22806394c390a41d87405165c6451cb814970fbe5d11a3e9c452d070120c57e62b12c66bc952299dd91b403075618c54009e88ef46733c126f8388b5a0e3b6e00341365b22865a1f2f2288bd18ff4b3c0e0b99747598a5e8b2dba60fe2173f2124926241b42f6d34396670727f07113179481aa0633f0c9ea02360be63b8232460bd2cf0fd20f6820fde0031b4cf9810aa41fa020fdc004e90724907ef0415272e5680d19d2cfede5142f925efef4e0655e22fd1cc5b8b86c6b6a77c539fbc8ec3c7e82a6d3e4cc17ab5b2b3431e784992c9bf3e7688da0771962bc2f7b90bd44e2a1e9a5df78c8c173043e6953b9ce7aa70f44b5a4ae0b3b8cc388e38bb3b82202e3ec2c8e361cc6639c07f462c6884fda25b530a14b78433642b19f3cdb711cc5a5271adf8a572c828e12794011e529e7f944d05bbc07f6f9f51e9864b2b33583e5d2349a6012f664ecf1956b0969e0d8fc5afc890ba827ab057c0efa93aefbc41cd6e7a3ea1347d6d7451040a0c560125680d9a2ae23bb9daf3c97309e2772b64ee2ca138bf8d0305b54882c5960a0c8f3891c9b2d1d145c0993556012d6a3c407b5a51a173315962431e7035315ea2ca34e03f50e28c142d281322ecf382bbeafe605352f98f4c5d59bb2b325bd86d37954fd9c5f3384edeed6690780bc912c6f6c144b1cc74d8e72955bd55afb25cf49a728847fcef95f0d226fda69a5d5b39fe385416ccfeab35269d9aa58f3053a4e90db5f18e45a00481df6d5db7839654b1d2a049574f9e5b36f07710bebc4d172a2e46ea16290ae05fa53e4a48e1764896bd4093a5bab156557abcfc9d54a75d8d89871696c542450b528c005c4515bd44f2175e1d93329d8ac5b73c4ad36055ec775371a3f68d2831fccec123f08c2c1f98192205a5a6aad38e99684d22d6b254ab7e48f770c2b44b059dc96974756c8e83a8f03c28a0e829059e9e287242b4641dcac3c116465760491151f9010e2031b19690821048c2232c210e2c58d8c192c899131c5114464b04008213da8916144088454591a238d248ac6581281902f646324755d87746dbc3c12630d31d0f0acdc1c2f8fc4c04197c65dbd3c12838acf8b9b7a792406918e9753ac8cc1716af6491b9ca9f2a99ab2ade470323333b3b5ac21b822d53f0b82ffc56526aed5a60da90aa894add4954d2c15a21101000000009314002028140e878442a1502c1e0983a67b14000d849e487e56190b942488510a194300018000200400460006464c1300888517a3e66db21ec41b12d1b522b31ccc48973e666ae4411df104f1540d4a45ddd62aadaaad099a605449556d95a32af669d2512d70a04ac7de8ecd48275668daf4ea404931aab268587520bed8cbba162b292f95ad772c633d495951b4b54755ecc91cacb84f938e6a08a76a8aa76a532ecab610b5c140946bb75273d24b7c231d18e5647e94c281aae228798fa8642d187628a23e2ddfaa698f1436b6ca4d4ae9d88c7b2ab9011c9ab7c746d2842165a564eb0ecb784f88836a9a9252a9523bae514fe0b08c7e823e60a605cb0d723304880e2f1aecfb409402b8763d793349f5187ddbf390151054b17f57a647baf31003f89e9720bcc8a162fcc53ca44c0bb8b050fccc9dc0ef666fe11ed00f2a051200deb32994f73bbe9455380dad85af97d3e09f00fbd6aee9e3d0ea0848684c99ab71a7598513f395dfbe2f73b288d0362f4855579eb965e710b86cb744be0a1e88d631de9c78d92521907c2739bc3cc9b0d197707e2cdd6c68953579590a816825230ad587f7158243e14db61d4ff132cac32476e734b78621c6862dbf8b0c2262ab718766c4e23ec9f1293c520069d9576226bb92b24500c3e8ac6582b445caa26139df6998286d102c2a7264357dc5df9130c3d0d982780b2cb89de192be91c5df18c65bd39d0e6c8af160fb000eb2e7371289cf161f864ea8977037058063acbfa2f624f641ac7cd5e599203660a449a3d0358fc21526a768a31402bb384dc51090ccdfc77db5bac80902d68a7d8f05414c207a027d5b1ff0dcd4a57e4550c3617c9996b5639a3ab414ea0c0910054a6e6373a7b77afb9745921dcd784790401ff8c841be48a58b136bb2a41c6956b40a258b6628cd8c30bc701ed45baf74267e7e515ca5d67b28e7604d147da84b7dafe3976f06065f98b242cc6a29a53836b4e763753b6783269ffbe9dcbee847b36a009b02a676990dcf93876a4c99cfebba9f6c71598810f1a648cbc483c48c442dc4d6427b8c6d112a831a9ac1bb90f1d66f2a842d8f0996aa24798af4318fbe35857d39b1694bc65662d828a23f29e9b40e1e67d48b869f5082267542cb55b014c7786894cca042f9600b5d9d8fe5a7ddf9b89abd72d480aecef6fb9d19e9cbe2f7adffd261e9143cf600f137117bccefef1f8545f28d19130f01a056cbee1428b3bf86b82412a8e0a50d339fa302ad8c846df9a3910ae21e9ed46ddb20242f060e23257c355d860dfa926007d187da0647f65a7b446016344203c352b20848dd165711aeabc78470c8bc3874d56912b001cf6d166271237768ce49f59d5a1394069388cb191d2d1f6cead1d9e8e49c951aaa5e68eab198d19970ce5dde9036a80102dc7f1226735bba63cee01a1acd84099c87b58d19fc04d9e98de96af2b5f405b82f2b4e49fc9b05351e9c72fa95e6ff6d45d7bf0a3e582ff60aa4a25709c8ebca78b760a21c28ce72192bc3a26461a52d1f112de3ead163fca7a1b8eae4b8062456b40f32cb7fdbcbc9300fd80746a4ac30e39f3f57fa2d7318195e5bec37daf2f1cb8c9a3036fd5183766b231f4103c2b0efa20ed0b8f7e91687982ca4fffddadc2abc5a012897673f229a4d2fe3635df3b9930dc81791d79a6353481619f245e0c5d87fcc19d6b49b56ca65d9c3f793554bc7e3d39aaba8baf708fc7083cb74be4a1feaa74ed14fe604d3d975dd9b8528f892b3514798e54a0d15878c4a0a4f98840ca649131a77c415976232d0ed6939fd342dddb83ce940467d32d1bae117f9d032371adaaf5fe3136ad41de9a7ef69c4cf40839e961a9a1c20b7ec80bb7265bef11bbb4246d725c1ea27d4ab9e6cc2ccf8219d2a380bd7205808393f1ecde0b7b69e4531e91c3ac74871d236a45b658fb942ea6bcc2b144b46a62c8c04cf07fa16595695ef997c314ad8165539f00235930fd4eac972e8d9111f65d96654b649a4ea9d3a80cc8ccac07447339e85d0368b8239020939361b67dbaa8b8b8945a0d8300d8dec0848c5277593e09ba733638e16dd8e9fe1c648dd980a323788895b6358091929e45fa6b4a091b27dfe98639dd201308ded299ff83cacc45ca32c2f40fb0864df653867e730f6913901edb30d979228885eaa174fad6f6ae785993606acf7008d5e9840e2b63fdeed90b6bc6244f206c3bd5b8dc6a219616a23ba5ba86bfb96b5f92687c6404add9ed413885cedba61a1c2292e6397ba582ea393d88b42449c3092dacf7293180a8d8cdc35619e45f18741d8bd40d76e215417e24f532b6c7517ef2cb944d2c297836a4bedf5c7297254207dd560aafc07486a33d864941da2a228462b05efe0251da0439ba712a3cbdb91f217213dc19f461f04ed2843ea41f0ea7f6e41688eeb528343f1ace2db11d094dff3e08861b22ca8b88843d79af0f9870e6230727d92a451546fd97599166ca560b77a0e8c0c7d05a1de3004d8053770b9efc3904ab606005e07610f7d0c3f27343f4b71baa7a6b860592515ee85d7ea262960d0ec568890a0ca4094f54ced73ea73386475d2dfab8c60d37d257c54505ab3c89b0068283eae1b2248c401684b2fb931cec5ad90528754c1d51079d1538954b9128c56490a35ff7d3094ad88c0a0d1eed21f25e911740baefe18ee0f245a185aabff10d5a39ca49cf91bbad27dc4f054204f4ad8cb87de799fef1553f997456670172f2c2b1ec72092509b930b91c3b5097c75ef44851831f434a4ca6d0c10b48fc178282ee30faa5e765b13e073cf191f9542909433401365c6ec3ef996b2749fb7bac5a61a0828d15f020e22f266b860e015630ce0000c0448ec83b756135c305b81901fa9d64eb16ac927b3af19d3a554fe4e0ddbc862e40ff739b8a44ddcb6cd3b2744ad2572bbdd5e5d6987281ea64bbc0b1334500af3e6037880e7ceeccd6267d1206394314d224e4290b3eeafbf2fad7c578e827b72d9be48743c2ddb72b33ea2eb686ea369200b57d84ad53369098de484e3b5a6ca18d6d60ab7d8b97077c45728d816c211bdb1936ed19bb8b96bbfedb9670c9fc6902c026dc61790a280b7d145134f30ad90be2129a9e365f6636358d7793ca1f0105a3f136920adb9fbc6fd09a95795d19a7b083aabeacbd5812ea5a98baf110a90fc94425ecacbe4ffe18dcc2f044fb01bd02feb8036e52910e0fbfe5fc82bcbd72babd90284936b4687b2aca12dcb8a02bfbcc2a24b056c5ab8c65b4f3103dd85c2b7c89ba53e13d713e832099b5e8dc78dea6fdbd57508ef8d32874fb7b4848d6e83ad496159e33143bfd09df877b48cc8e97e389760f3d53e50b74b1004f18a190b691186351c1cdfcb40568e1f0ad05671e9fbb632761cff1a3df281d5b057fd822de56a80abf6c9b4ab2fc2d8600a9a5fc7f7e406581f13fe401e14eb4f80e6086dd703d62ad68bd3b41603acf3beaee98f2f7de55972a65d5be1dce18aa53b04b7d2a0a7c0e8bacc5d68be11955d12e6c1a4123706b370fa8ff659192ad7c817253034b99db8ac123129e17f5ff8af652b7e180ee53a532cab5d6547f84c928c2efc8c16afe9a10b3605de247603f81a06486e21e359fc29b8179f6243a237c42f1ba8d6c3ccbf1fbdd92c0db4a065e639b5fdeb19ae56ed0fe66ba7b4900b97336a767936a8d880f6366cd3645bd3e572bfeb2c861ec4b1c94fde4da41888be0e3e17b70c4c0ddf50298c4744bc9fb0f2de4091c060e1018501c4470afb7a027a6c96012d9c2da20a989fe9839e7b1e831711d00b4bdbd5fedac2239bba70d6027d66a1fc264a14228ef4e3646093434aa91e1b812f0e492b195d8c410d428bc81db328cc1d8f971e2838406dc33cf9aed5a03652cd66284728b66dfc5c0cf6c5e59d660d00228fc1fc5c6ecd4d0396540ca0f0cf4ec57f44554274b89873418485d01a1cbe605de1039d28d01caffc43c575a5d556ab5143fce22d1b526a272800daeed621df2fe76725b73eb8c5c3135b045526bf84cab024fc8bffccdd51193b5bf0dd0a1fdeb1f9df53e7204d7c72abfb44079fd0d8bda0b2d3fea91f41939fdf19f0ab15d3cd416c0c7d756a68ab01afeb5b0bb7840ea4aabaec99aabc444bab0a65750676229a19bba05188accbbce6923ce372d421909902a7542339354aa8fdd104a880b2a60963460aa6771e9f4931fb6aa128e9e295de8aecbf0f359d0d5dba0790e377cac700236299ee396bef6b280a95dc2378842b099c180834237b823ae50eed35eeffb52f206a50ce9ebd62478c72c7e904b7e1a6123991c1c4d9cc07b580924774e958768767bb131cc02827bca6ae60d1d578d6d4c9c5d27b7cc3c8aa0190de5939d145b82e6fdb65a013494d6b5da9ce3af4c15932a141623ab7cb1a6ce846d852730d8b307bb3d9116c22df16d3006345880d8d249d823dae98aae5c20fda7f19830510163c18a30ef56c5f5101fb9f097022004024e624f598b50e48b500dc09484918cc44dc21f84e367d96d0d87632edf7490c221680cbff0db74f1283fed42cca94a8375d940c227261085429aff708a04b59247095fe91ded7ad5b601ead6cf3c151e7b96bbeddeed96e1be4b114dd4a1b5324c35b940ca267992d1aa8b2fadefa714e4f5f2d5b28227d8bc10215e60d59dc8e5ade6f2b1ddfe5f5609c7684f979c6aaca2ed1cbf4f01ec29cd3600509c97ebf5269ba05c6404188cb3e07deb9cbe574ab782a9201acf306dd68463d2fcc6aa2758d72ba9c29d39845b9ddb4569c4b804b2a0881a7947b6a0adcf425ce244ab08e41d53a9ed47f68ff61e806c0391fd35d15872f0574fef71030f40c2b312c6161f451a1420a11e42d8433906a4da6a02356c75de7e6296095c519cf317b89b99bdaf99d734971e12e18725c9266cab5c86fd05be0954aa8a38d247d03161954e31f81d645b85a9e94f527d34c43b0665e7bbe9f5cf2173a81f2d0628e429f080a96c9210a6700ec548aa9f4547c31f59bec4aa30afa4decbb856ad1839a29440f67809fa2c1160f0a780b37ee17144ebfb2fc5fd5cfb5a0e64e90551f5a7036b8426872d34d089c521ff84c7284276ee01b1dc0d4f306c2c65fe020c11af1a67a372828c98d375cca15c2373480aa59288f11c099816a1c8b94738370982c6c47a6ef30a2f1179fe0369a48c35c227d97b12b61225e74396a4945c60cf9f55bf241d1c0d4ae965e0974bf68c0044634ec220cd79e0fc1a8052ee00a0361f3babcbfef0b420a15d408d9606a8bcd37adb6db1742ff0cdcbf09441b8aff167a9c0570211ad7a6001f12fe8aba55772bb89962c0403cea22ca928a0f3253a45ae78160854d59df5b4d35cad9ffe6ef1894040f6a1900b583a9e82afcc34738c70349bba2ac2372ac61e0f7574c947548c7c39cdc6818d03badf6cc7bc961766eaef1addba5b0f360892166c9787d3c453f0f22549e35d96a5572a0baf046fa31229f0acbae46f5b27bc60157fc889f5fecb13a6a36e258af987ff01651b5bc245b76bd3800dc7fc5af21dbd1e8034651edeee084d15158cff786f715153c0d04a5c3f2b291254c1d40254557742f06bc3ebe57edb90d1c34d5e238580c55521e7ef7775b7b90c15dcb741b30d40c519e10583cc7aab1415ab10b11842e0b0f5cea1dae18ec130a144198f1f333f652e5b7d1843f74d469ecea158f972dd7bea4265ff1eedb57b43cf42b166f6171293a2c350d8bd684ceee1d36540c441cb00fdf606086667460e00b00c01f7a5ab332f0e1d0fc0e2e48d509dafa3995b6f5f39d95ad9f05b06ffd5c89cd656cf7bcd2f2db65523aa8dced179f938d6fbee0c57b1c77936805032db863231ea62261e1b3280866ba8db3fe16632ce783a86788cb96eaaefcc35c5dee4b25886732f839876990700c279ce0384b7385bfa287187a8b572c90290a8083e12d741738b0baa42e0b05eea64d1a7fbb88f58497179bab9c2b034500a7bd2c03fdd0cb8a57141b3339fafee71a32c21c4d2b1c4e72fbcb9c0bf9fdcc6f4ffd55264b717f26c0206478a1e99f2be997c9e5058e6097d89152d4a0552725d941cbfc9b1d6804287de0069a2e603f624bf18ab24c332324754d0dc71e4ab0c36d8f5c884d060fb79b4050952525e8160347c43008da15812975ac4108f4a72c6f0bd109aadd5071541230e4515584e40fb0ada325106bdae71e97fbd1161badedc6c6251b720503ff8bd0469fdc00a2c1570336becb4e762205f40c040c77d894fa83ac9bcd7ab292cf75ab08ad7223baf2ee69069d06c00cd932d7a43d63eab42ccdb58517913de44991c5258a9ee6f6af360087d521d62f4fb7a2b2ed7081c04b538c86153a3a5e56b711fd7f223bd12c1b34f845828d6f83957706d61314765faf1e6bc891b22483cf74def2281ca4fdd442d04722e721d3ca3c967bbd5b351ec7c837c9ea29323dc208a127d5180db016623fca41801cd8a25363abe954b2ff9d3a9261f23a664acfcfb60ac1e57fd1f59702c0c0b797fa6ed6d4742b245cc2c52924432b42f6960caeb74da1b5494e6def334fbead4dcd2ea996bd0c3896fa39d4e29c7cb9431058c337cb6ea72cb63963edc14e05f275f61dad01e31d79175efb82e9f75e03814013adf85ea508b03b41663e41604f57890732a63f487fa26648a5015b97e6606628aa17467f4c487c75357ee39dc423bf5d1d373217c590832c900cd250f2f89e15390e391813ad124789acba20f938f29938cb061f9c1eaa665cdae754d4cb7d049d0367e62291b0635f41451d7564140fb550b5fdfdcac4ca576f6892984c61b7ef47d0b81c07f2c96ce02d574de790919834f332a981cf3efed305652c6fb37066b2fb24bef9d8393d4b7a5d87a9b1d15090c587319dfb5d736b5665c60e389c1c57da02c0682f599bf67734eb27cea41ec22c2a6a7f1ca9ee0a21d201688b3b8bfd4144393ca866ea5260a8d5f43f759a5b9e6063218b0bf287e1a6ddf92213fce3264e25e87913a18a0b302c5c9f98b26a8944b4578d24942592d60d56a784a70d29868bf98fd46c07c3020f8372128372fde49483af402c1ccdf1de3643ead44661915171ea340602a1206976a2402c70fd930467110815274899215ea54081d368b884ccfdcb7dc09f0241fa7206c5eed39f067789ddd88a9044bf0d8956268c2558bec64cd60544ac46016a8c337a1de4239f9b0dc322a4c7d16333dca6774efe96549b01844230908f7f2dda7b8eb2980fd5cc10f00ee1227442a6b39193d2ffa906459b8a7c31b8aa546e307b15261308ac7ee46b545b42f632507519d4216eaad7c76c9c2cb47b55a9266d12c184d6311128c7f9812ee3420f07d86f57d50fa2b50d918030afcd9a1092c0faa6d89f63e1341c2c60cd553806be9c9929ff436ecf00365a9e46e9546afc375b58bdd34130c4d8fd7bfea6b2ed17be4e9d9209c5bbb2451e80153551edfb118247477833c18b821195962d883a76a737a0a292514bd786af41a17f6c4a35b0008c81999fb9f19a7c934686fbab7a432fc5c54474d783f06b1235cd4e24a8f81b707807d117867dd638dbf816809afb9b02890b5bc202d0d1a900c4c2633b30caa7e2e673dce091e0819358b4e0194903187984bb379d7bc0083eb6673b1caa99470a1120c146579304e7d17822ac84aeda8a17f46bfb950a1e713c39c056f201113bd8ac3ef0ac0f04cb119f8206b0e18ee5ed7daf2bfffffc0375aca9d29dd781e3e314eafe3fe4af0324f3c1e9377204e83949eefe2dd790c8304b8617066a08b84bcb703611412e9e828e32034ed593471411e25eae904a70f0857a16a8ed8be04320354b11aed154fa96bf4178e9ba1bb00110dafa27a6820df1351a4110e001e6d624334447e00527461ee56d80260517d1ba67fdfb83345a0b3f83e343a69a0b4b459a9a89ae65fa73670a6d21b0c9240440b587794b9ee8f146f2ae299aa8a81b4cdb61e102e4dda834f18880eea3fd1958010a027a7367d99d5b8978da9f1f93d400be2453998e02d78bd11d284fe35e78fede45bf95263c59706bc12c1d8acdde9f5ae8e537b3e550e74c1986b0607437e33c58308adf98452f19936088241b2da1f414ace17f502eda427b63e526f76c95d8652948416c900cb637d14b8f0fa34216576bbda3a5914b7178c8db41cbbfc78f14e7fbc24466fffbeb1dd082706034ccd5a764722d3188fa390f21f9a036e8a33a18d70ff89df4ae92a1546633a41095706be76ecbb14a245542b9569fd311f6b28e28da10fe586d984769c2aa6241ae4d1e108c8d9e51d611b636704995e833ac14b0508af0ad0e04e3ba3b42e13aed6ce968a066d991b212cd43295620becb94849e425bf451fd0d042a72dd1b3999292c65d166f48c5246250e5253a9cf4d471d968e6c356b0e7a3a4986ecfd99cab3eb9702a37b8d4ebdcb98e96a48270987cffae022b2cbc15ce8e4806382d979288df70227399a4b75e3867bc065414575a801c04c53815a1c8de1aa5848ae3a11a35d2f1e59c0597a72ccf7426779b4b13a9c60a715e092420f12c0cf153a0dd38d059cc6782aee46010229cc75cbb42f39111498d56f55a343e425971de9f0be4151c935541f29238a6e45af38a2580e76e30d6a2af33191b1e6e0314dd78f1d64da036860e0f7b25871d041afa9442195bfa0118b374db946865814b46ea2805dc5585587e0008641a351ad5c2be528827ca242f07e70b4314d206f68b8cb22e5c9cdba8a6d945e9537d9ddbaad811608dcc4c079050a4a243402255e4a8cb93cedce066634211086d3f0891eb1e5c92cc0a3109b4b7881dc1178fd484b7611be78d71fb38dcfb60bb46fa8858e6501299c5af399d595dfa9b8f451b52797bb23dbfa01b5f89c3c2f594fa6a8333a8ef31303baf77e7cdfb147f3f35b371e8e31fcb9a944c793908e4aa428bb52f636d72ecb6cec3e308a829215d427ae9678529688042fb619411a86d9b9852d1abec15363b533f2f3f15e9e67a12a06dd1a3f779ddab6167064834edb20b14b152dd050494ac17349377c5fe96f6358752f24652673265b009be0dc059635195834bdf412e102fb5db7d87721082350a76ba2e648ce80e31213789eab5fa6eef9dd7117133e9cbeb7fb591560dc604d1cae8248e5b3ca4b0a4b23c080cb342233a7cf40bc7cd828fc3137c471fc8419d07d14a052acad07a3fc5dd9dd394843847680c461f26614a4749d50ecd3c715ebde4afe039b04241b02b5181d8844f647ee7e58b2a9aaaf775972012f295f619df3db7d6664454d099392b3692cab5bfc9c0064080836e6f33984080cf5df470dfc0defb62eceeb54e97117405d918aa8975390d24811254c19c467bea6b79b01e560a5be067b8a41ba2bc2c1e367ccae68c0e2cdd9751ac284258d3227e016ea2d37aee07a3dba031c473ac4375608b4843f88ca8c447b2330b5b4c277a8d5f7432468b447420951860f496b76b4834b3debaa44eb7ef15ec2a850b49d54771c13d465e3812d1b15c531e6a218eb6745c4f83d54a2fd51bd503a62a10b5a87883ab09ba240ba8617c13cc9cd6fa164c3dbc82b5c031fba4bdc8e10306504563dd438a233829a395c57a8ef185b4f90ff1cc9cf5d76c7e079a9457786f8fccc6c70c5cdecf19fc470369246e3906439a1a5568958be75774cbe05684bdb9663c4554cd1402788c6c499c05241e0ac53267c0f529c3ee879a8d038c9066fcfca39d79b8be2d1054b07dd20e2491213181890a8a978343a04a7179b840a73c438d03fc407b472e6aeaca2bbf117c210c6e69d986134d8661f91861f0b03bf6aa4bc42d4a3be7506fc592ce5449e189410b0cb8bbed792a123fee2ae564c9177cb43a31cb1e4d6b7efe00b1834acb934106c8bb8c726c324ac9d5b19e0fb2105d035054872c375bfee6416330e833e421625be409f2d2077846307d2ea6c341088f03dfa6d2cb9226ef2566d8bcfe8e86054ef801da316b5fc985ee2d419027a906eb6a707717522ba7ad19046c3e7ebbfadb94a1d9d7f442fe9d419023d085f27f7dffcb0ac78240e37aa0fb1a867107f6f9995e17e3774240363fd209851d5e1fb4e5709a8939baf08d915a71754777a00d51f03b58014141c7146830fdd4f453fcc44820c2660c7afe3fb2037f6778c237087611b297a7da48562bcda60fa26f8b4e73604ae4e5a62f023336679f390c2b24d82adade5592ba2c09ae9edd36070131de1e9d83302fc4cbd252a9a4a656d406ff7a0d0a410d3116bef93d96ec19cc10f6677fc6e6333555d755067b52ad88c9441e52989c7777ce3cae6ad476f3f874ab8c972d3fca5f04da2e3fd093ddab0d2416ca601452100b2fab147e7a8ca0504231310e906aa76b5faa15567fdd070ac89739d5035188bc31cccb99e40c36e7093596879dd2743d302cdd30ac6254dab8119d733291ad260d94e90cc584eb3c4e448eef0d1ba8308b1e0650b474bab78d82a35b569450da5b840c7649ab15ae46969d7f0b8fdc2b101270642548d12d14ba38a97eca4f6c626c94882ba535893382fc227894b9c3460959267c8c93d0f5380093f3f2682dbdf8fc78ae9d1f4a9e899c8d74251238a3aeba8a31422eb17cdf62bcbf15b4c1a97fb1a2fc1ce806908fdf2af665a06e92f3d03ca39d06dd7618f1c04eb9672cc66a82abf92f06652f5e4eadedfeb077eb2e01e602a847d14f6eb1089bb221d3e7e323beb308696e05b24f339087c1499bbb1b1325098e0e691328ad7e223c6af25f89048f98b1d037da05f8456b6151f002f22527b3bdd89777c914e92cb23a80b06f18586ebfc2546228625ab19757133c034b8ea4d38be00c40fc1a95bc861d373e8c5f582a1f42aff06c021e1f910c92015f735d35f4a0012e7a0586da9479a634e50bad026c9ccf3a55adc28ed1d6f4dbdc7ea038f5122cec152bffb921f0ed8498af31b60ae385bf9cd2ab615e2f9e65a5797a7f5593a0fcb31ffd9a315f5f0a9c6968213a189b2748fcb9893e663cad5e6db633bdc2db566ff1e47d6d9673a4cbd1145c3725a66561c8b0c24258af92422e62e96b51088258fe0afb46c9e8e3a1089028bec11e8997f7f1b5ddea01ee8d537b5b46f718110203494d42b38a6e4a226f013483a0b886b628f516dd43e307b1e156bf0dc9788c78226fec67b5c3a1684ee639908efeaaae5d4a8586ab3cabc7f84e6b3e261294dce739327a723a20e0fe4b97eef28a7d46f5b7e8c0e97e9b45b8d9b51611f2146e251b7e2c3bba652e7538724c048838670f6a88123cf4f0812982b36525d8630fccd62fdbc189eb4c405941b652f769c012daf38c8c917920db4f527b0d16069aee1232e3c486660fe6f2fc82a558d63830da08da6a0aa194848840e3a1ad99416f6a9108a1c6ab55e1c1aebe63b5d7d8acc9a65119fed6d17676650b46c8b85ee09d18c67440dd4a5db38405e861918fb4801fd140e313234c47ad0f94c0130f1f2083b0264ff4a692fa37cc78269a6c723692e3a8eb0890fc76e70efc230334d935fec8494cd1a3ef246f80abc0b242ea80c6aab0422102263337bf3867bbfc3f11584628096f4ae02fefc7fd93210e6d41db38700679a1d73744cf1302d719653bb38185fb397f95d4104d860ebd7175b4051a7c6ce30674e23040f22c4d8368734e053aa6692e1d2c482676a58447d6e7c305d3e9d6fc00fb8931450dd1a66541e082d5e8e69e85a65e02aef1b7c60119be4672b9b192cdc38ee0b6b94d59a6116017706ca236fe8fab8522741d0e993e816ba850b92735451d27fc7cc007bdd1a3f0440b87ab75314f248cfa754d37603e1ff4c408852696cfc7a6eb834f8c42e4deaad3f50e6cd6d796ac640df5cd64f341153b3c54ca0d7de309f895f15ef5f8f762b9f11802bdca2d2b4744bb6a480a0bb2cbc1e178a50c6e7978d83f85587daba99609946d5f8bf4b0a0c4c39cef70b699035c28ff390eecf89a3442dc9a35a83d91deef9193b8b10cd385694b18f31b4c0a261473d741d83c2b9341927facbfbc8c36503de0f0f79e00b77764ff497e498438b71521096ba2931bd1c3e559ff6c6ef809f0901446dc5223317f3f703134f2c43ee9e0feae99b020f17e9074bf2b7da823ec42696bad8ecf04df413456a48a02a8190dd0272e81e3583501279ed5f14192b543b3396c44fe8957bde111dc0b651e425d3e9b52b0789bc13ea02a50e4f2342de4079e1a019c27b3a12f0ce538dec61e303b4602bb8386e4cbb590060e55ed059c2e1d68ddc19c9d86d62d2c1d002f13444672177e95cecaa496cd617bbd87ca8ff46773d80ce4e8a2bfa8d252bba051c3eab99bb26e78ce88776282a6173fe3fa8a6d74df3350fc1ffc06430a2fbc900e4851027c1a248bcc09ebb61bcf6938e26b533a75a9abb32110b09f3e984c42d5c5e3cb67ef4b0aae60e670bb30270b039f6f22b6c714dd0e223910895a8713662f2a07e1e7f213fbd7f49100e33e0793d9e283568ed88a245cc3912c2e1318ab90d2daec3843d7f71593003bc96641f7f9b29ef122dfcc51659d3bdf267349b1e4e285ff604c26e250b56de5d5be481bbc04d35d5be3516711ae6139ed61b88c204cc90695590dd04cb8c4b806df3ce24bdd08ac345ae1d11490e60c234bc27e23349fb42123bc849260a279333c53b9ae6ed4b7f06249a4010edd1437028aa2794f36af787a48d969a9a9bacd7ac8d75e8130a81811c183504f14aca65a08717e9d516779a523cda9b34d99bd75c153c5cf1ca14a918fd699d55ec4fc2e566a4df8c2449f113f53ba1f55747bf1866732d375a903d82564230cb0aac0ca99d7da6ac3aa094f5969062a712393fa8d3ec51d1133992905aeacc447eca6cc8819c7c0939022cab076679cfc2db66efe0fc865a43350f61e9f8c2d28fec9e59eb9d1b00c9774b7e03608f45e5de9890e5749590144f482ff5af6871bc516a810033841c1b85f938e4cb70a9ceb66105fa2a247f250fce5d53f1652c60bebeae4e6b7c202d88764ad2d9dad4d072015e82b4ad3ea90d28b9b0e327f97fd1f133853a075ae2f93801b5d6e2431e81a7d524a2ed09c94bd31f51c8467070d268c2a090f3a067806d4bf2d0a9a5cca65b7a52da9d2c1005ad9cb857a2f3557a1d03467ce2c0adc0ab4d3145beb5fb302055724ac2e5ab5cee9e326624ad7383c127e1aef1bda4a2e70af8cb3b97bc6a3049b274e4989214169b115269c598dee13ca44c460faebf69b63adafb644cbf33ac42256af3cfe3f95f3a24950c770399ae411dac24f9d3b49a592b4b7e120df7e6e4c6ec434d36a2de53b92ab2df48af7c3396f3e987a8a933b4ccd846aa05024f3f1a5a101deef61d135e97a4895d88edea0cde5e19669a02c98cb33e2dcd33784638b5fc3e23de1bdda2c340fc149ec7aa906473e7ed729027673ee5eb03acae8f9be3f6c1cbd9bb5fd3289e33b2fed69f358421b7b90194234654a2d291e628c3664860908493d829c08c1694190bd25df66d4597989d776dad0a1d90b4bd4f771a2dc965b74a7981966306dab42a7a00a73bf0d23e20ada99fcedaa54502189056b72d9574206650295ad7ea22d3adf8217468c99dc54818a0b0f546d8185a2c1a45c561addfca143c4db91dab623623903d8688c68a9448cd13ebc236b72681332fd50e1a4b38ae3341fd06e72281e58a968fc71278f4d237f715049a1887198b6b308abd62879c170469426b4d8f76ca204114189e7a08e3fda4df8a501c017358c937a1c156dc22c56ad41ced06397818f3e84e1777b8f8a589154535c639617ab3672ee936ec46a1fcd5020df466c95654c46ee491a454384c37eb3db8167cb229223090b95ac726d24d722cbf37122fbc38f902c7592d1081cabc099a5aa8e283d3b7cc37f2cda7444af66bcf709d16c83981e62bc63105ae35275082b2002019980b8d50381d002c42ecad38dba01b812faa2ec31cf3ec4799502d0d163d0710e163da30342ad86a436063b1f306f35777e3210f65f55a829786668450b3488be945d79bc5d520b2432b710e21798b8a833d24c76bc4d20b96562ba5aff4c64a411202bb736ad760a04aeee7a32af02fdb9dfb77a2e365db308646070a3e6424ae8520f20a376e1e89a4712a882f8be27e0aee02cfd1b0f77a1054e5f2cb25f5cc4526a12c48c55bdaa85d35125ad74896ab9a33898e559c4fe6d74c6e796e9dcb91cc4595dcbc9ef99fec445aff59462210e9762f479aff3a75e69a59d9430a4c389cbd59d503cf05be9cecae19643ca0aeeff2d688a8c0865710196f3c78031ff49fa927e65ec4db4520dbf5ef35995c993f76e09cb27ca02527262de86eed76a0cdbced5a49e3ad0ab79913c74455602bc3aa120b664d21c9a6f1d3e8420edaaedb0ff5fe9887b580a0759d2102dd493baba07b00bc3b2a7e1020b96b8b56e607d8ecd7d3c7a1a1fe7277a4378e74d237e9947e6a3aad8a5b0ebf16cd654443e9b02402c2de539e8f02205723ebf935f9f39d3494cee7bbb562be7b27a1c0e8b2d9a48ee819a03ba307a98be93207cc262b0f99593606c058adb819b675fa6b32fb00948904703da94158bcc6ac3850bf45db51a77a7842949221dd83854ea07efb91afdb18ca5d74694cc7e32da6ce5498b8cba295a4e06d3350b0b1214d9bdc3aa244486782375855fbe6ea4c7bbf583003fcb7444f39ee95cfb6db7ae793daee383542074c720c6ae7b421edc076718b03b48811c1f5ae65640ac5a171fac34778472213462e7ca2a2873aa5d621a0d0c835bf69481d2fdc0ac72e898d78b607c19882fd4a7d91632c2c9c7e0d3586a9e26f9ea63d9fee2a8342f09562d9863793853d93eab0bf734aef65d98b2e67d004e530cacb5740a9daed3d098620fb4f00076af249f500e042e6c26c5b0be5ec7c52800b0994ac1171cc02092a57a66a27949c729300c33e08f70b384274bb5dee00718610ecef8b49adc871e469e491cf1da0494881bc5f02dfed1f97ed21ee460b2a73639bdfd9840b2a7cac693dc21645a4be4149db17b97f4ef2aea10965beb6f896925536c0e4a22b050aaaab1085ec502d3331eca72d5d37592480c20c369af86fcd2c79374fc48407028fdff8376dfa426d43336227e101d731582344e2e3d182d01b57eb215c94923223e23226b4644b2d4aa6daf632cfc045b01a72397766dee1d4f4a81d37486f87ee67c24b76735df0fc772c81a7f005ca2f766f8ca2d4f01d46f73f5da05323032f4391448bf4f666d2e6fcef96fe694c910fcd826ee7b8eed24c86b5b49df3fedc74f113a2870b80d9f66cd6edbe1a073777e030ca94fcbafb9b32562c851aee4d80c32bd1e46f5493430d8f5e45994a517c120e354b54c742e35e5b00a5a56b96458155250921551b5f21124cf84a35920c702288043a276cce5962d0c8f12f672ef6696cf6baafbdee75c57c104a5208ba36cda031a104e1f6e9c427da06d270bb3257c8f8523b2bcaa85e789d15b5bcdbd464cf2ae02773c2513f9c5025bb918e82e9cb70375841ef67821e3d0824d2f5639e6c155ab433d5f40359c8de59ca9be8f60ef68857418a2690411b654565520ef75a6813aa98222ad05335a6fa6f19c8e1510e3cde81a47e2846b92e01ebc81688007c519b98c15c9c40953ad3557cb8f64d0c173f06e20fea6e2a72fa9f84c25e5cacff66ad51713388e2c4624485a7b01b20c6f336ee4e7ad30604fc252a018a71720e7ad6dfd16a831a9941541301f1ed4414eb26272facc8b335a99b0a96742330281e5662c85620e0b0df719a3c3945ec96423170dc473727f7dffbd2ad005e5a54bc81718e5a7b909b6063c22f6dce54b25bb3893c58c29c4f9b05152274c0b42b426a4255d1f5b8b3e821b0c55796ba0ba50303d390c6eb3bf0c175560af43321e6fb767c764217507423a619fb4af33884c7a363460893c36b5c47b0c1ac6ffa99892158c198018640ae4dc960231dffd42888acba5ce7174d3fdda9e663bfd8b667f2798386a6b8af8bec937d29f6c85cce48b719c278ff48ee2b1dba232f307b53ea116b4620cd934d3e6807042f0b04ecc9396f5336fded6e7759c757ca84c8d360281723ebd15c64a79c8f656a56c85792d75213cad1f2bc9c13bccdc8e065bd2d762241f3252f8b56f126a94bf395a3a7c4226f756b6a4ecec291a3f08474ddfcb1385750be617b06d572c4c59052a96f5a117fb3f52470aca6edc7d1c8510fd0b022f1458c21c04a125bcf619c1e0b1daebe5d7295992741b5ec080e2b9add449d72684d5f411c558a96d92fd18c403f22878905c20677d1c41723da8df53a5c71a558964519937f1d053c903a4143d112dc7f5732da330d957d7bbcc2bd293c2a293ffbe5cac05cebef82fa6ac0597b0d36e16022fbb918bcd2ffed4607156d09ed04000ebf9460025bffd50a97db7da978a34783a3d8ae5fa2ed1490b190216eb1ed2498efb26295ae4cc83f6d63374c3358062a16ad1fc33c3ca3bd5a40ac7ba9ddd55a654b30f64583ca42c364af005be5ae3bd8b04e928aefa10709b62fa2076b7abb47c48094a2d8f7be6889f46a857c79b44a489aeb6ba7fb142e37b08637ac907b3280aee05d6c25c4e780dc5b40a9c4c1f2b944b21e58ec0cfff2090acb6c679d6684e1713a14463b366c23c9818c633d1fe51d196a8f4810f10884b9d653c77042ba5cf9c6f595eccaac5d33826b558f308bacd0851837b9f71ee0691f0e5677b26d833b5eba10a8f6bcf559a7fdcb2bfb6313bd00c8cfe8c2656eb7ccf7d5a0c4c6e9f1aa89ab3a33070a048dc90778a4b2521132b77a112d4f87971f7c40fce8126bc76b70382a1ef67221a4574f1ddad2b793bb5ffce2ddfade910c9dc47ed66f029c1253eb47aef2f113914da6b19fb901d431ce9fed465be3648991857e76cf090d4907302cd10749bda8486f0464dfd33f99ba35121d73c6e4408b57441fbe1b602b4a81a6fbefe2c057a609bf42e5d2ef2d43b64cef1dd21dcbedc0732c93ada3aef2e4af8e342c5bb4a6d4aaee59772c31c9388aa5963eed2170a53dbc2737d1ad0b38e178159488e82350801082424a2638a1e250920906363b4da4269a7ec4128cd237c58fd79c413b301f3fde8385da3589a82bdc488f7bdf2f0263fe8041df7ad1a03feee4779180282d8013a3225eefc26b377c4188d85e63420a7c4c4ace67ef6ec0445449325704fdcda06d20239371f6033a103a3c014bdcc49773d291411789adc58c4033ae258071f185f4e75b5daee81c0d125dc6ac2364eb77ccd17ea23bbb71c0338729d6a75d02b5e60d53db4063b0eca65e8957adc991612cc6756221e3cc42dd12bfa6872a6708b7ea90e30034bc5c89b209b40c83d3421a49607c49506ac4d544c5f86b02c628d082e66c694c6a59f8610b7b82c68e7efa2a1fea6a5edf84ce827ddfccafc092c4944b4b06759675b05c60661425e2ef429b155d1fcc0a5fb1429654436a225948e906ecff1c0d1355595ddb2d0d43aa134c04021bdd82e8a88efa2921cac91fe94672df20415e0914277024b40d066df069134f261ede1987eb0b5f1a83e9cd0b60da3c163ec00d1ed476519186df5814042b0a3a12e9e00ec67e816380b56966a8125989959c6e83c971534859eb825f2a8cb23d9b3b0e21f6f66c68e892557c39fa8257d64f2865ae8d06e8f93969fc452c014a1d83060e41013258b0b4c4c86a9c8225dc2dd38150bf99988545ed0d551cb1b695a5a5eaa36d8d9759ea5a47d178574d5e81f775a247c4b20df1be6801421a59059a89303631965a7ce33212faa904d8d5712a9efb2bbbf401a4ea6c32724df0c12684e66efecd6762aa430f5cb6ccd00d348f3119fe6ebf2c97f9b7d6ff697bb895499903cd20b1e428bc05f2ff363c98fc076f5b49e55e0a7d04f3e946b308092c1abf5ebc597b62e2058140b0496101cff2a2e69a185b24101f0f6a203b64af517bbab6ca0dadb72283758e696b3f0431780ad37d848e5ec427206e57b803953ee12d451f3e4c93f2b3cb4cecdd6a09b5023f972be84191d20940ca70a0053aca81de7019ded1fc8dad376ebb08a5f010320a9c898cd461f9a275b7f9a49e85ec800a192e2f74695e0428673115a65fa5d951167dc3e5800cf760c938b17f486dd4fe3a88bb055c8b57cfc51f384056d3d490ab284e39d3272b8f8637290d91455a3bebf6f4f3393535313b1c65c01f2f6ecde6e0b60c4f14459f2e1e4831df14027e30facccfb32ea769d7ebbb58b59d814df3809423bf302ca992a70ef63c591ee6c3f3a1776cc57e5f0faaf01b250f1cc76c38f2561ccd211a490c4ef4af2b0920a624454aedddebc5525e3ade80a02e2c20bc670ec93c7f15159ac3e620ed208f594be6b78d0679cdf55310e1a28b6d0be19684d2a4c2a86fe717abdfbf877fe231cb05f011f010f282a90f540edce257a803965c2b1bc9852bbe49999f4e127aa1eec7776ae9528285b0483d2c1a90606ac02dfdfe05efad27542fd432495078e5d2adc1275fdf74c53fd1ced6c8457f3bfff77af026d5136389c9d36c0ef5e4c0936b30bba4997bf1f0d489a2de9b8fd13672a1c36e2d042578fb8d37a888ff0cb5a143717851b632e41623d4afae28f7bc5f8d7adb1e6bb2f53ce596592ebcedf55981fc50811d28ab7c3fb9aed84983a103fa657b7d3bc6e3641649b8b55178350e603092b81b4da44a8c9421a89f8fcc2987a9a09ab312852e30af136749ab6fac2da7293a0be3fbdd4dc2b8b99290471526b6d5620d31fe3e4d0d3df4b8f71b18704cf2c849d573f1d1acfd1fc0ebdea8784f4b3e830d6e46d46f7bacb46ba51c9e93b0e6c1b789a05b9b8affd4ad96d907a5fd5481e31ae950d8b7e05e2504f3e5125e701a22dfc2f795bbac83fba7db93434f5c9508f6405cd4a250910d532cc5a3039173feae3c47ad8d87aebc186387aa096b4694a3ca337e57be1bee6d0a383096d50fb2501288fa454512c126866588ae341dcadb421af8c47cacf2b8cd1f09dcca94aab27615b586509f3ecc562949c163de07309d72423b58b4e85719039ca949947ef28db32e67e848dd6061d04abb86ed9a8f60bed69e2e9c209b8a386bcbdf1973b103aebf868b6318503dec4ef6b3b05d369a3ce94a0938fe3605e809f56f5ab37625821aa189e0125604d05247310db3d407afc36eff936fc6f440f54bea23f4625e2da5a127c98ff492e09c00131071d24be5e2e1d1bd9ded495bd8650126932055b33cf45e21888a74c3789a565f91664cbab6af344510c1875f816ad9f11f6414b8fecad6c534e1acafd7d40a249b686aff933fe9e6d7c7ba705f2638567c023825bdddf277f3b52c3cd2f2dd79a82faa504eb09d6640578078dea329725855bd49bac4873ac65be2dff8a865381a20959909ef158918225bc37933828cd11b75342aa058d3d193fbb0649ec3b80ef9a06c279cedcb09e323abab68eebfeeb484cbfd9714f96020c6839b9d7de028bd90aa2b6557b5cadfb250c54f9ab44a799286ec82cf371051ac2c6aaca0d9f82d4fa778532418827f895527be2ed3a271952b2bc3cda45c4253d1e5e987e0e989331579e15517c91a1d430d4a8084bf24a6fd0d7193cb48692f919893d51f74e27ca86bb1d148ddf80151a745a4d1df077d626671ff5a26c08433b910110098484df5b4ca36f23c81f5a762c35d9e726a848c8421252ae31c18cd4ddcbbff70920a79d594f4caf806aa8717c69403afad9ad3a40c395e086bc2d46c3a59ae2cc2830901ca75db62cfc5049fd48807e1c7ed8d18d920263941bf9971bbf1bc5b20948e1c55f175d38cdcf14c4f04d4eee8e093fc8f984ce00cf53ca1e596c7d8fe80dfbf1d38d105c0c1043c987d6ac4d46d44a4af0488278702023e72547c2b1625c448c5adc4ac395697715fdd1f5bfc145135afe8f1c17d2a319b2f8052d563e4100d169c5651083bb2e4439eabd3e5185149a85fabe370afcdbfcb38c289e84a8ea0e37c43bdf00a775ec10a77e3ea2a6e3a95e7c14b7e924ba2c1f6bd5b7d8c13c4543a2dd9e58168b9ef0f10669d778e3be2ed48e0933a3a0f9f0202b3361b3ef7dc5d10301bca670190ad3e16d09c78efefc884a42ea1d99b32656e271ed50122ede7ac1c00202da01a51544c7809966e32c6e147859c9be82080ca9d0a00277ca6ad78c7a31d84435f34623725fbbab9e3b95002c48e891dcae1a9f582714b23b46aa704078a7e6d1c3f94a03465bbd198f96c9a536ef6c8930cbb2c9bddc4da4027bd918d0c471367f615f9912513b5981a4a0617869091c2cfe635e76e18ad0c3e8f6f2546b2a26be637b9402a953786985f008d70e359fd977c2e0c88d950fba85e37a1926e458d40b6f7e4e4856aaf1ca4f4cd3fba2972dc7918197afbb9ef01db2446cc8e957bd8ca61bc63caa95056b542982e012987cabde8b6d7ad01304272946c2a768a96c440b39ac00d7a6f20d3958f3e6c9f91b03633b6f3489b2bef9751939af7367446017b0e7ab278ae6c94df5e763af4a3776f1fbdf3e52134d54606567fa054dbe5459ac84820f55f9703f64980daca11a1d697f09f69fff790d215d2e624a1d460f465a27fce65cd1c4319dc1a2a82ab1226a0cff3e61fff88415550fd3827f8d9338309d1783ec4cea0266d9be8b21736568289bf4f90be914d0502dcaf0214a403c4cfd159055120ceb8b37a2ab33c0e8abee4d4897518990d5637b1675c18c21ac9bb57c561e5eb32dbf16667a1036cba855308e3ae53ec4dafbc63aa93de44000708f728ce42e8e769e11ad1d28104f30939f97fe628c33fbc00ad626f5301403b0eadaa3be5ae8c2db0e500752d5fbdd80cd2c26dc983d7b92bb5681d3fdce474a3d48abb98e2fc6a7a07532f704905402b73e24643f68fbd95557fc127cf68f5f3d281736302a3f7a3579b41fe52eda066f05daa1d06420182cd7b64e454472e7df90b786060cb1e504e98f0f36d6e1a01b5f9a78b92ed2ce0610fcc0dbd8d0dda1a4b6bdd32594a18288d6a9f41ce7ad1e44de19d32636f38fc5fcf0320a0c15eb004e105ba8faa25a4735ea29ba23ca05cd8d856dcbc84153cee318c8b4800e9f9a6b39ccd3aa6e1ae6c08948c4af9a410910685c6f24889c3f18ab96a03b418f93a4fe4cab3087c27260a7ca779fdf33ca5583a017d4eb85eb8089e512dce1440eb38cbe5df2c8bc4546d98864fcf4ce3da92e65331723bfb036a08623f037ddb0e485ace2c46abe7eb4964091d2350c23a3a7a370f2bbfd8d67f8910c5175bcabeaf05103dd7d14b97bdfdbc863331e0ed5a9bca5d28ada8f62163cd3a4807613d89cc27c934b6708f9b6683f6454bb8954ef6459771c9638461dbc6746fc3dca5cce18d8e48e77ac1bcb164a9911cb649cd5fb19e101b5a8e09bbd6ac3f08fd97c3e513c4a36686abbff4fc8d81a7a084042067b88055fa00f85cf34003d5744563b96c9ec367744afffd57edd032da8eebd47b029610038408c078ec1a7f4047209b47584f8d68d99613f0ed6ea9ba455e804e83873560456b45b9709dbe1e1c9e1620e96c75845da3d622787f87fc3948ccbe224d937ddaad216c15d778d73c2f87c0a97c07e05089fc1f81941fe0d70664ce465cba8e705222a5b1dd41af0ce44bfabc793559e14ba47b638a21ede9585ad8269a003bf7d5496e040f36ea8165267a5cef36686e8bca9318a6d28f468edc45b4cb8f00be37a5749cac14758926a289f54bedbe12321e2017add6dca76e44f1805c0e5d7ba2284e53d6ac771126d3ac8cff4f79a63027200d88e6ac1c0d6ad3de2b1e287b91d667127bbefcb891aee97b0e0ae07b3d8e4f700fea72673f1029de7700d9815a57dc09795a38f85c840a2ec0848817406c66f143a88436d9455ab3baf296a0d2f1f7c66a0be153beda2000dfcfaa5801408f8573a6edf971faabda66bca9adc70441acc7d4331f51292cf9e124f52470ce3f90546e2090c119f5ab39350522679bd148a646019f9a1af6c74eec41e0ce45f5caf505612c5217360f7fe330fea411c39f79068b206da524c69c8c240bda24d79a4e812927c6db00b4777e0ff956f746ac816ada50420943ead5d1792c4ee4d0f56ced0dd80b025dd39296f6902d51f4258f0ea8f3dfdb82d7bd3a3f73caa536a0db2fd931bdbc4d42b2f4a16b3801efa3c6fb11b04ff2477633428ddd407b69097d931a6565468d32dc6ed6017f8511956330c748ee5af14469c6fb5ca298f4224e88b9f46470b696735b7ae90ead5ee3c2b968756faa9a9daf59d35fba14f6d4cbeed8a8934572d137e7dd90b13504a8a5d37373080b814b6e961adf0e88fb235af26335fd40b0f293480eeb87e86868f8dd28c7dc35038e3cfa3ebd2fc672c919781782272018465c70ea8501f82efe316a80961e088c81a5c786af218b31f34e53efdccfa3933c1a11f92c66d9f9ab4f56c29e8c4e287450f8b34bcfa9cbe00c218d58b8eac4fe5b69cac1d951e3a7e1a7b8f39e1f0dd37b9721969f11deadbb9db7e366af43aba223062ff6f4e0e4deafd3d023c565e621f81edfbe4fbe4afe32df17767ad0a73519748fedfb5e3d287fef5b640340838060e404dbfb8731bd3a813be976976fb97de4d6a8f406ef0373012d44e8079af112a1bbad98abc5e9ad276459e6cf63e631442acecccf7ce457eaa09f6116d02195d2ba271d11478cb7411ccedcdbd9917320c0375d49b9b2dd80c75c9a8c5b369e3b8dde6b536d109b2dd0a4afb980d567673c33be1d33db4b96e74496fd41b0c09c117bb428a53b363e45bfa0cf951e5b8a72eb18334a79b986b7105260dc56a6bde6e16d103980af9a2ce625a82ce9dc7455f0d5031a7a1cf75a281131748746be22892c444d504630e6012f4139c29f07a578fc367cb507a6a48e5c9fb9d221d83a8962690b137881dd01fe6fd3237cfca919df6bc256e46dad066e69885f9f6e50fa906d4fc10536cd89fdecb7a8d299cdf7294104d18603bf984b0b847201e2e077994b2cf0b02332276cd09746193efa1aa0bcbbed985b184866d8c09b11e558df43c6483c72ac0e046b3b1c4952f823e9dc3150ef0e3740e9c5127f4282a82c577d38029a282af680f89cc98119200119a11ac5317ebafcd82ef579f7a73974f42f92060dc4099ac8d862c3cfe45a8bdfa867ac49ab7c30645031d995007783ed9e05b41778ce5954395a01bec72a4039d018fef619725b7085d9ba3f2d7971eff2f9d79c8da6be5fb9fce1f258f71ffbb3fe88b7da546aff675ead04e50e227f3130a4cb79b039a4a4abeb65f0949e2cfc7ce44c28194c1e81504481f00b0be0ba11b8c1affe06716123d4fe547f448f749425e9df80a98d83d5a93f33c501dbcf7f5a57dde1afb9d3305e3f442ef33ecb5391c8eb075f1b5c229a951b119e62786f58ea828df7fc74d6444d6d14a733b2aba1b27cfc1999ae54b5d26776ae2010b39dac00fdd90ed2b0089fb3da687f3b43061bda79386e648dfb5ed4e9e19cafe3a6ac3b339e80a20004a38ad34a1d8856f6fa1c9e1a3c2aec1b64827630c949bbf3b58202e673cd76e7c6b73be345d42f4faa48046431e2bfb399d59dcfa2b11c131f951eda8846571cd622802b60c54ada49654e4cb098ed72f1903bfe04486e2616bbfe96bc6adb05dbec54e61489f748ee6509f0e500b0b9c100ce8ed3c1f6e0f9c08c387983aaddcd65b480f4dc8a61bfa7079dd09ceccd68dbdf80cfe74dc3f4c49533a120781d6f50700832e0f20289b5e536b564f991c78e04c6fba920b5402c4b782913975b945212e88f67265827a44fa34d5e4b1a31046fadda5161b2ae6d1166c81fc5c4f7305b4c54d42267e36bcf392f50a4866d631974899221e0d15f0f0da3bb4b67bf396b2c0d335773c34260dcd0582f60f25cdd8f612b2d4014191b2c46e871f0a2511fc7bb54e3ae236b07dba9bea249a6fa848f33adc147ebfaca03aa208162fad2f7445fe1bbcec61638107aef4b909b80cffea4f1fc2fed3df13f36cb285e5207daf93c18262df658aedc19b8a1541f7b06d0c02e67e1c935ee3c3b38fbb310d770b77387fb845fcdbc15999b99afcb6cced866322f90e1443158a90e2014312f1bc3d76b2ae6ca69d40e575a76e6a3b8a34d19ff6d0daf4220e38e251a9d1efa0c2ee9f98a6cf853d02e2cfd20988e0693d1fcae65aa162ac7ed3c8fd20ec9ec41df5b0a3f5d11f2963bd563f284eefd50fb6fb6ef77313eb03cc8ad4242e4ba805a83d6712c266fbb55b37a63a9b6e6042fb423659c6a1b2fca03cceed44867ac958ac013ce5156cf02e2f7b479548b0a2656a668d8d2e7b5639d722a0b9c918391123bf777dce8a3630218fd4852905e83c40e51d511f534ffe6877756096e506a7e58eef718b41b43ba8928ed3aca4531f7e19db8a5512fcadaa573e0a86c7b2587245b7bfbd684447d2425693656a8ec02ed3fa040a73d84d07fcdfef78334d62053c3bd4bf7c068df9fb4840d72b20e8875012f0c8d7e1aa8759bfdafbcef27a1ba9ee5e84e0926922eafe31e4465699f1dbc8ad3db34e026dc345aed708d99793a873d43c4c641f924c5e01510143efbc10448e3394e7b53b194a8d7ba10c3342f6aeca1566662e392e4deaadc760dd7ff7aa2f821354cbbec8887bbe5ea4f80178413f24aecfcae532dd851a0f5d18c5be586089eb851cd866797b9a950b156d403a92a7cebaa266f27a1cb83dc7a5ee9207b9a6bbc4cb0fa3f08299993c7e6b8210f49e9a9dadcffb2c6e798072bc7bcd431cef280faa25101b2ae7452aa8d5b321fc043d22a1c24e45ed55730cc61171941f0686e56686cb3048259bfb214d2b0065c497e555f4b70289192275334fb07f665020d72df0315187025103149f59fa3e693cf310a40575437a47a2b1be8e1807ff30fa6ec034ece84b37042838ec7e01702ac42a191ab45d6c8bae238ccb65cbeac0ff81073aed7eb65daebb60f31b90fc19e3ff7ab03aef8204835b3f89b2781b7a7e56e10c55e8f40b04071d7e825882f19827f1cec72e3fa145b1d55591d608ace3687d7f9a0ff14f03c210d1e23bd1e7b475c1a0da74baa6774c67a46ccd6576972e6638bd6df17508dfd5dee54fcff26d20c2ee402cc4edac2c00d61d5fe255a1444f398c2428908d386a0309207e788757b88a0cb1f9a967980f8d0a770743aaf99875e4136830292c454deba4bede22360b3e33088249a3a9214a0f00a513bcf3d92b42e367de85da578fea53026aef2da181b17abf4fd014805dd99a3598339994f974382c621f1efd3cc1052d4a29ae1677ca41de1fb7427718a9e1faa2734c9a128fca39730ded316b5919be13d30eef11e0ad1945716b2d12ebe240efe85a1d21284c3f268250ca8290a6f86d8d8258d9d49c0fe73985cf3533a49fdae2073cee9aaebe5524e5359a0a8b108ef06be12437a6e351f2f0adf953e26e308872c136de58337543cfadcfafed3ea27682b1e8d81d7e1bbcc240e3b303f1967eece32a097f2ef8be1fa25c81b9ab52368930f003809a0ff87d5d13748deac501937e5a3cfbf0023a43b0221ca4213a0fce302dde1dfbbec63554a2fb5f8c7c134effe875a6d2ef74d76831d2d5f3e06cedf9141fa6bda867c64bae24e7cda7642bbfbde96244e6068807c581395ba0d8b5173900f9bbe1541eb5769f1c005c73cf1bf5704e4595943b629662b52b138bceeb17ac2b680e9617eb427d0943d5dd739e7113f34e57ac0d8edfcc30fb08b982681239d64581b8bd3fec88ee0b1e8916de43a0091d0d8a263434b3f2f5a5d66163d144516db906de01f0b2f30b2e08d75971adcf85cf4f14cb4e8b2a6ba064b43acd1bd252e9e082ad45fde6ad3b52269945c370f76c9b41ca1ae862c030c54640a141857c3733c45bc71bc5d311535efbea29d0deb556b48e7c9ac3232ec7aee209269becbbd44906842319ea1c7a3cb5d077aa6b997aaf4648f1a7e2ab60d6f6497ba728b24cc2fe17ea2bfac8b1c256b09f95957b82301f4ddbffc10c903233edf5e3f1bdc7d97f1d8c834b4ce8fa1a5ebe96da5a5daa0320a0b8c8dad5a4a67701f12582f58373c42a87c24a430f7f1b6dce0420e5a059617495a11eea1178aa2b3061d392b1c3bd61461d0ed564271379a054789a01e7df97b794b159d5d77183363740b7e8884bfcac70cf0dab04c00111ebc04490b1560bbeb0769361008f566ea81ba03c7642d2700cc5fc63210eb1143e0b0c0b9cea37a25cfd7cd7aa35a61b9f76241d44e9f2a54c38ee7804d0d69014c3caeb123b0a53f1a12120bc34f674c82646703f08540fa3dc44017e319816de8bc242b03a3e433273ffbbcc9473542fbe793f789e9ccddb173e4d7e9f14adee199100b310014996d1f3dfb14915bc2a6e64a60b29be9d07b602d50d6807f02ffe8598aa216931f9fba2a685c92e8ff296558edb07ae48e1aa563c1a305815fd30014c3deeba825e44bb5bfc3ee8f4fe3ca7a70008461388f847f3d1fe4e7f18a5d3af9f94383c9bae07073698c2755e0acaa13f6b7ffb1b12b3fe59bf87848b1251f9e0e1f7bac863c615c9c2cef147c4972b1a658a4d4bb8bb1c843317928862b4576aea7de2f8dee9846dc16d08c19829c249e88810ca4a5fd8f1926008ff5fbfb609bd3f8358ec510976cea954d71d3ead794291632fce19f029761812e43c27ac8c99681d777d51e2874b9c5f428858d37155cd14aacc5875b475317a0f8c3d9dc3c5edccd26b48398587c1e292d191b18d193afd0912feab205597cdb553b58d1ce6e04620d74d62962869325c1a8f0bb35946dc692758b0f5fbeff84a10841e071bfe2f1aed3c5cc183404fdd78346496b97ae11502eae63c48dff6890688f2eec9f89c2b209296c8bf8ff282d6ba71a0290c58b427ff6f201ad90879b8055446366adb94384e4098fa12ec8ecdb795c509395ca701ac85a685600c1b6e8c7f2cc484afebb6efc0f354ed5126ff6db6f0954ee15e0b7c03188ea4313e07f5aeb8c9892ef3f1304512288872c0969a7c4bc5703240e472e8861cc1d2cd8e6399804dfc9ff7dc98f88e199e20b709771a803cd4338b1480c2a573f2092bcf65c8b993c2d98600d80f155616ea0e6be1a010572ad2e39a2c971d72fb326dbf7cfbdc60fe64fa3ff01f8da1e0270131be924363cf1cd1f22d8e26ce98f2300a6b440b74f5cd3edc5b5ab40eb52a5c9e1183a02cbd27dcbbd8436d6db18c4536144b7fefe45644f1837dcc6ac9ba5916117386d07be0f21c4fbb96afc99d8bc4419cad98811d9f916169ac39db16d635cc9866ded4d5c41d8df193251cc03f99e268c9f2adc354fb07002c4b76595e8a3c5586709331fa9eb5a1c5b910697f57741c0d255af2914c0e2430a47225071bc7c549bb4f536e0641f4e29d61b3c1e34c86929f7d7ac10b5973b8e00af1472288504e572effa8f6b9c415a7cecbf4695a1d6a416297c7043ae770ddeb3338fd5f13a25c538ca67f9c6e5aa34511b553ab9098a11474118ce7a6c984dec83b24ee98c62e38750f56879b0ece76fc0a9b75af982f492424a9bddee20e006a266257fe3629caccdd0d120e5222b2e9fe2da715f42a5edf0370e1d657087d4f8a127dccf32b867c124f208120563f0dd09514062b6f3d87f2188e74e9b670e4f158bcdace9c39e08edf9bb7aead1c55658ccdb1093fd3df4ad1da635af6b47caae356bdf6980ccfb0420f5b862ec4aecd91c530ed08b02bd6c7ff07f9e9eb91308ff357aceb9ddf56170e3fc196322dd326fd21ff41865678214a177288dc5c91dda6c083a7270f389aa7fe8d571d5d99c483146e5f4580015524aa9eb4f547fd414aabc077bbf6fead77fda191c5483ad2d3469612e713e3e175149c205384b3f5498b4f73a7c529aa061791514294a153cacf59ee3d1e8c0baba839eb080d556c7ba90d6e0dbebdfd65ca78eced8d65bd092055d44d1ba07ee1c59d512e9bb597293723bcf884ec2b703cffab5461231be0aa455f1f98b8523814827edd379437ae8049130e036ef6f80fbbf0ddb3320bb1428fd1c5949293e86286e2f8734d7f7a64ea4f91bce2d9d5191e29e3b26190c63e59541cddbd630552387d6bbe5c7daacb46136eb0c97c20023d5491a8fcb93ac198e326960c555c869895f03d5d2fd6b1d22d8cefdfc6a64bc1c52e5d9b970596979a47954436a580855dcf0f576489ca36bb90ebef30ee97d0c9240fafe8196741c2399c663e88d62135c8a5477e45ceea14837d3d77e68a9a124386bb0585242c692301cae40f01adc2c2a84068647178a3298536b93c8b38e4b3d47752e5a66b4c0d3dda75fe997a279c74eff449134b382b47a3f3bd0e709abc6121cb0f75369f938100187d36cc60f3385d7a70ddbec011a3533d9f2146fe2def40cb5ae675a88fd67dab40628871b36229d3356576b664666fa0892437d6450c988e99e70b1aacb5c7e92aa2945743e9f8e032d6a6c8fea8c2a823e0fcfa83c3b3fad3fc610a2b81cc6342002dd7aa6aa7c6e255caa37c065a55cef9009052650eb0d5649bd9b6b15b5bcfd5fe8115e09ac28580934a0c0570a0570b2f1082ce46af4ac0418c7ed74183ce2fb3a0cac9c0d3e8cf8cc74618c59a8a30596376d8771bf2ddcc0a093e29e973ef3b37a7568fdb355a44fd329eb12729888819f52e9a6af62cbb25a76e11de4379d1857e6ad6878df538b121220582361969f4c64485817bb583c524d5fa70a9487a2fe8db58dbcc9a1593ebd6ff99848759c79c343009d95dc69573b58635862e839492590a4c222df1f8cd22bc854cc1cb3b66598bf636c16e83b7547c19892881c140c05146af28eeee4e79d45511ff9c56dd509243944bcdb2cb3e7a83c14921d3a28a9fbb8c8acc0f500ad7ad35e4121afebf7939a0778169268de0ad3bbfe75335bc36b1d9d684e30dfd26b10f41589c18c3d0805c9ecf77e8a66520672d28ac62dc0cc2b2b8b6f09c690e62d0b91e2107137fbc8ffb8115d813c4ec337dd568ac9baccde9efa7ce3b6cc749fdd2f24a80daafcc2827bd04077bc2da04787c02e6e8e662d38217ef345e056269d8f17aba22166c61f5133431708c3728c79c9d898f874e03c5246926419cc0a5245f9c3203b041ab5dfc4381ca369e7d04fbe310081a3d280ba028f7301190b1f044cbc3eb83157aebd88d9b43f00f51cec55ab46a73482a8f14dce80ed39af80b38d8f06ff60ec6bca4f02f8521e759246c20048742a2ec6032f8a13286e5dc469c0e7360e1a133dc3272c79d8783e2356df2b8bbba0664a94b6d2fb5d501deefecb181d4251d9515041bf564657f857df4ca2714babf30917b223fca1dbcf3ce933f3858662777677147b1369970968e698d24243847110f6732a9002340244ea0b96cb7e11e8270478d8b8322f17082d6d3e92b7ebeafb20333fce77da822c67ad7f707fb0d0092c6090e7671df12089ab4cea7e57c735fbd170eb1390f45958e98da02e55d93f62edb00f2e19a1dd1c48ceef44f330330856099cdfd44a869d18fc1412768a7d2c79ecfefa02c0660f1f3c104e40e6df3bdccd7a830a09e11b1d7cc621a09874a6e9a12103e20c5af88467bd408c510c32b4a813de8dd2cb08c5f7205b9ec90fe0e37e212cc43eab7298d7f828170d300fd448df92e3c86d471221095612b0e8942be580c23889781fda641390d32ab7829f65f3107af6971b5a064a7adc58cf42be9266ee21ff009c85ef15ce07b1496542e2b49b0236a740b091082f21c29645e5bf2616d983b033b2b76114f54dd0aa920c9d68dadd0dac336900f95569a8b064069cc5f4b25c4204cc5afbd9b1fab7269d346e415170a69a5721216e5dfc8b0656c6bfae9d18047f4790b72de1b3f91e4b99353c08d9a90674457729d3c3c83bc6bdea64dbd8d023569fe30b7970af04e5613b9004b6b1592f5d7b6fdee7244d1648ad60e1cade6182cdcae3a7b2a0dfc5ae9d815a61e75f6cb69723061c0f519e8bc065288bd9aa27e065266cc9e98b930906a022e24b14fa35ae5ebf22254acb4faf4e795d02e39b51c0017bfab684abb33c719409112277d10f522e31174dfd5b06c97aea490212667c8f39407508988b0b78fe6accbe2a2f055eee893e182f40b3f7d525914652342948331f2e53a0bcbad8b77f89528ff8c1119a22df98699819ed1c7ddedd04ac2c2e95a7502625a0f31b8405b58ae690b8f2a752ae149e32f00c34ebac6a3df2c0f96409c39d6e47c641c8e942b288708f7ac4c516c69a96af2c5d4e650f8dcf1fdf060b2bb0ef1295128d5a6eb5494dbf78096058d147086386c6a81bc275d9f286032576e5c312d151af62fd8e69b1fb4bc76aa699b5e14142eff64c2fb3f9e3decd86eaf4eb9593bc651c37c7f678b2033dbe1efffbbe430cbfc21f089b946c66aa0e5cce9d1b4f2c4eaf94685418d8577ad37c2dbf9d85aa855d077de7f94fe573f82f0cc2651b2971e342cce9a178b3b4fdbed3c6e42ddda70908688115d4f9ea70253e03d1e239ba7fe49273fc3edeba73972327dc01705576b1a3d3b8c9edaef97146d9118d196e408a96f934965e4266cc2805b4f77557576567946ac12ec0ce5debff9889ac8f1d6d90bfb80a15f9fb1fbab9eb302cec9d96a2ac566b1a46ad57f9c465cc498898b6ebb259089e7ad1a14aaf422f388fa0e6d4a6db3c27b0aebfbffd87ee75291d768bb32b20708c9b5f019e4f8d27170027c7e48325a05110b312ca9274b664c84b1a343e7ff8c83003ac3f8437ed3f0b515958efdbf02e54b8ac3844d41dd44fae1bfcc186a84589271cf91c707dd8fadcec6531e0f5d75ee69d63c324ff0342117d5bb10d0595250412b175cc0618999dfa86ce31b401ea184c064c67c66832058e186cec39c253e3e686889fe9bf0a863e131fbf6529e08869cb7abdbd8999c9df98b0616b8afe3fd8e714afc8fcf2bd941f6e7a1b82afeae204f6364e68bb8ffb13299e218e2e8ad6b18c64ad0c9a9799c870006cf757a4240ca4568c71d1ae9ad5415e21deef6c3504e8e8aaa9dc68d744471a789d939a5eb8a3bc0d8d3dc3ca087b0d30309772caf87b29233a60f24e9bccea5b9eff34367f14514fc0b3f78fba98f3c8a3b13725cb8b05ef8074d9a7e557153d8885e3fbc26f402c71ceaa4dd42b54790ba983f4d8478f784628191bcb12ecf45c391065c53959e6da1159a2457065c101e3071e1df8453c63c639c4c0edcb116889f249c2156c9179091b9bc26a5dcb1c71cf3946f15f175048fd41d7a756c85122a912cc7594636c1fd7b9adeb0b94009f3520e9a6142ebeb1160825e85112c82e210d4a834826b7b4db25fa26cda3dcd79c5163bcbfc1efc044f1fc8b6b40a313fbcf45200bd25013e1a654cf764aeceba1d9a2c01a79a6de5af84c2e55370eb2e15a87a392a17e0ba983ebd0faff136a77d99b723ecb935b4efb787e66ac65fc0b2beaba2368df891e4c3a4b7c2fe8f7ec6a608ca638f089f95c26d6f60561e1a3b245453be3a58761e85114ed8e725c18d0c8ed535c6e5c1af26008892248d0ccb7b0c7806ad6b0478486ef8a996072650b9647fd466ccdd725a714a447874ffa57b338e72f49ff8be1a3a004d9fcea039cb6ac3130b0562f36bab64c7847a664319ff9ab6e89f70e31deebd887af11d40cd31553ccb3e1a4173137f9230e50ce873f6c9c2edf71c145814b71d6e60659ac0ff5da601015e5eb838d8893289d1b7516e559187b12d580d13ebe8066d047a21553cd95c73cc8e8df004ef43e0f6db1eaf2ca7cb0ad2d03d38fe7783f09874ce2beb5de7a425bc4a2c23cc334f5562fa8c009b0e2808051e43f76af0451458b199c2d43441023f9f8cd1a2d337c184719162e5a80ee1e469e14f06e2f86b242c76c64f199f61a4b407be136a436d4330fc13abf363d92f98fa86a4cb28b16fcde6ee35b5c38911b45565f8cfa0981dd3b2b3d7821b739f49a96e52c1daa4b63639b1eff5fd4a4b6ac70f0e8219e43fce7c005fe3254c77d509963f9f2886209135710f192595ff03445c95d1f4f634ff80536d286098e55ebdec72692337d8078ca536db91b9cc0f5761c17e2530b5a46b4b612fd89ce25400f0c6c509f72b09678193a879e8b9d8c58c3e7f3b83fb911562486c6753ad828eb740342a5fddcd92f49ace9874c800ea72bd7f66c9dfb826eb120bdba72c9fead5fa0adec9b33fd5298eff041d208b94c5ed40645f1546f02d594ec3a7ce4c6495f85f180fe5eb8cf6a023c8384d2a358aafd126e6fd84d14a89bda0d228177df42fcd0c2dd01e1edd2b280b2aa243d9dbc48d543a436d487e34a53e3790e7fac9882e7e15f77435485efa65f35807b8260cb5a8f733a233d2d70aedb4ed05c23a19e265a492ec2d06612be05209b761cb0d30bfef4b8c31e1cbada752039f9c361baf751cb817e51020288c198841ee4922f0c1e57802fd7fec2e0813b64ee5096e92e06f6f21a250c687020b4d9b215a6f337a23a29705d2e0e9787bf20ec44feec3527aa9f69de989b454b51069da8391ff4deff6c1fdf6634a57d1148a3a7a9778adeac3c4a5fb036b9a4dbf507f45ec7ff40ae0380e848dd7b11e07ddcdc0bdcd6cd9dd67336e78332b75f0067802bf03dc10889221b025cb33186b6feacf88ea9e6f4e732d4661499994909fd8b2a591edd6424c077d894dac721917c81c6683bef68929c09787622b9323073d2127217d5a47c22a6c6b02d45e12512af6c195defd6d440397f6e4ed3fbad7af57dee253d330039c2f2c7d124d2838a39f3a9e5d5265b4f77ca61c969a2b144df534d5512e15411b3e15eb8ef0b32ddea1dc4914ab2ea3ad8e9e299b9b700a8f3bd422da95fd130bf5d7cb3141c042ab601b8a448d22bf96265564a25443a996da06221a2af6bb20c3bce71615c9f1cd6373ca12a2249c7da59cba2e6bf453e6c0083f6231f41c06b9bcb0c3a08c9285b898b2801ae6b90854dfe9be302768f520153e75f881833a8c4fd5fd627d5a46308d37634da261fc639ed6d34825a039988d6ca3eb5028471e346b5cf1daea53dd0a235f8600f88f11dc5f73e406b7811ec23b2fdbe52b8197ea05831f73b7d6b2b3a26668e25084ced3603497c2dd835ceb88b4b30e84ee6d3e0bad096ec0587523b002f9e8f18fc9341fb4b32a7a40f81262b54ded7d0d52c25227928c4579ae2d92edb470ecaabe94cd0e4e76933ad8cd817392c646c9ab45edd24d96fadec1c883727746a9098ef420336131712f579536b5c6ba76d2ca0ae4d2c60a936e99705f2d1e90403f0f8a23c653e0cb3835c6460f036bc028bec530e6d8f2808e3e01a8f2ec0d4296b65bd9c98b5246dfe9a2d74b990e9a49fc47e3c31553e809512f2c3d5e1a9decbc377338c71494793eb6d4cecce6c54d162dd9a00f2edee6a02149965724b3a11c2b5ece31b1e91b10047ab03e1cf16ff005ecb2278a05ed7464d07234f22ab7baec21349188eadc92888816fc6ef1206c10819d192faace854c0a59dde79e7481d2723955c5909b2924038f24ed1b55bfd2d6ddb6e256ffad58ddff825949506f9935316108b221d6ebd457d8a91842055f30909396cfa1844f921e15d2aa7c8c1e0a658e1a667d6d3f23a6f2b74643e93b48ceb65160511703e9773e4fdc8751650bbfdb6aea7433dd89979aaed059ad78e0701612433d78eb2bfda370a5580f731f883a4a9a8994dd5b7cccb81ca6bd19f3e01ac851949c58a1b36bc4399892c7b9d8ce1b818f93f00840e05a11e02df15e8f7e0f6be6ba9eddb5c286a70d66773762dc65a32c1812a2e263e7282b3770105704022494973bd562b2594e8902edca5b424cdd79aeb1d49f447c057f3f2743d5a646493b1e5ba20a3255ef6016173e0e0c502519a562045b24ab535f6ba81f25496c45857f8c182b1e3714c718bb5f605ad24d21da803b09fa38d610c9d85d40470fb6d6dcd1601d190d830c6db9cbddc656aa221c66c1b4680a29c9eac8c23c98cc84211078c3e9a035c8a752681ae4534a87d3ce2c1139a1d514026950e9cf3f2c93212f463c5348afd51811c2098042c4cab49b8c039a8be850381692806ed7eeaa71f12efa0d0c743ac95ed43fc1ba21ba58538d1be5a69b55a33b90e2b0ef273eec0db0cb5523833c9ea3bde3ac495ea8dfefb842075048b65a4a27f815c3c7e61a984556e2c981d394724702f5210ce51e716c55d8dd5cb2c1e4838f4385cd1c62c1e7abe9f96cde42b562c7d13fa635575778a47e73784d1c98284695d5dcd908ee7256f7baeff26d8a1383f482afab04d46d7bbec479aac53b8c479a82cf617ce856653b4080dbe118fdc03da6e1eb6089943e8bc80b145b1e7f06fc56436266bd6e9802098b51e155138aacdba834b24d104c46dd1964f7b11b73ba51a3b7b6087c01dfc677ff3d2052f9cdaec41929347519a7db8d2590f800fd2354c0db458958e81521cceae5539d8c02d189e226e9718020c04eb25bead0b8fa4cb4bcc2b3b4852c3545a34bea388ad347159c3f38beccd4912313ebbeaecd8e27cbfeefaa3a012e4196161cc33e646d78bff0ee66147322f118719e888e234b0092bfb5e18c8a9e8f2d8f33eb44d08337b51c33ce9cceac0ed6664d0452be07cdecc846d38f5fb95c2106d5dbb41439959b1b0604e6c8b65f700ef2ec29ad8237a76b3004ce0bc064e40e71cf7bb62b4636099f556380e61051d9a7971e5b075a68d1b41f7b84721d78ae6ec462fe7896b3fe7d1caea38450fddc568d4b81a142e565fa409dce678fde3ceb13e4bf91654746e250d4c619cfd64e77b78c94c1a1bfebf29111cefb43056c991d7b3a62bca56b3a9cad42f48184f961b6b30c24cb50f5f821877687e09167e193b41262853c31419890ac53cab3cc43258ad8b8b624508efcec98b1a90f7b2edf53600b75d1741df381286c02ac66e71c37bcc75bd4c521b1e707a1232e1191ed4eacfb354b2dcba9bff6a67c7bfdb211715493819577b9fb34d77671dab4aba43290987a22951134ad9f0583ecd760498bc562110a5310ae83c977bdd0a50c8fe2e36c7be290fc3db2ed2700955b56574010248ee32bfea6b43209f6ec684f0b9cab24cde060bc70740ae610335dd29ff06aae0a9fd98b9eddc89f2482190d47c637906e6f7237414f7106f4be4476a6e707c0c1875963e71a087554deffb12357141904ee97c4f0886eb1f872012e5668bc11fd515a2ccaddf0b402c74a8d372b9cbadc1c6b220f14e80e7149e985773bab2824d6111e8e65873c8cbc961916b6004a574388557ef48b6604ac67d72ba9628acc5530a726d75d6293b913fe7fb0238da293dbfd241081cea28e937b04d237071307bf19ee33ec1bf5e91ad1c3dd68d5d5e83e1088f4199e296f69453325a2d88c3b023e11636346b627ab02fb3a014e6dee0a9c9401ec289f10170ed995930912b553e7ce99262578953a23383e174bde227f63ae9ec2973de5883a230a4886c89b2fd32b8327a5a9f764b442ab50951c9f48867a4d3bac6100a85096c80b080403e2df351a6c656dc88d9315522d10f5cb8f22ef865f6534b114172e9560e2f8888b8e6bb81295cd686f8fd55c41299873ea825a6ef7e491825b1e58a8f356e87dc10a6d4046a8d0d7f1a304950198d45109ac199201e9a5be78ac3651f132870304d52960c0b5c349cc1438d4e234c40bcf830956e731e8c5b3bbd3cee5456010949bb103e3030dffa55b5c8009fb8878f2b0d6803305fb899b7b644343e23026cbeefe63f440ad3640f3b9439dfc5141a3dbfc0913e917828421779bd9c58a59920c400de019725af3cc8bc91339e79bf376cfb04cc31a4bb5bd51476fc0c921caf6f35dc5115a4a31a4e047a921c730122e14cc85905948491f6673301897baaf52f36e21a9b6cb9b71f505a792db74930fa51226a465af3b708cd12482c9eb163721c63909fe97c0d2dd56a684a4a390f5282f52d630c6aed1723294ea45e30bc866beea4acce1a9f9277a45070106c43934cb4f5243e8051c89e4eed61353f0f9a0c04bc8caf4c78058b04d1f700d81ad8de1764167f608494c0c18978e4e0cd9c05ba2d8709d80a9ba3645a7e4720688cb7928063fb5e2c0d692a0e54d8850398262c4357b625fede9d63732dfdebe9867e4ba097de97af15f49544065177b1dfa682a71a387675baf505fb2fc1ce94275d2b14dfbdedbd849e065f9c02ca1832376a8ed2f42c06789f3d6f6ba868db29703b15a9db5534184b0484119fd390b6bf95af105dfe87f69f70a1e8bf072a6683bb755bb934bfd81f8cbbea1dab971f50224200388f8dc402e22eacb625cc05f5bd8e635022e0a092899d7844b4bb4b21a026932113001c6492d812470aef2c6d5d7a547b020538d2b69147e1319a527ba26ce8d80e40e71317ca5b830ee0b9202fb90ec8537bb5581561b3c9650ca347da253e793ac66e0c9b150f43a2f149201cf85a3bd681f43cee746db3df7da8dc2edbcb3f9327ff62d6f1bb6d3e1a90e5b8c6236b0a603961d8a2016292a0caf1fca81740f2b7f75452f30a0a81b8dca9cc0ae44add3ec14cd998ade906b16b77f38b63d3a67835744c919ddbe20f42cf605a9e817c9dca01391d4ab187c56e848f97b4939593038aa784863984bd2c777c33b173247dfe5467ee2f2a95fb87f5f44ccad546d065f020c89cbaca5d5e4b333f1571fc5633cd8f52bee1722422c7544253b818b6cc074551c900370fc19f43cf585327f6be536a641262eb75fec04a17b0c58047c313e5dc08d939cd83b4b6399c6eb8dad15b057079c7a06775906d949f91687c2b575b7d6f5f218abc1663ff1a51ccbab6de95c4187dd2938ec22cfe7d8225a15a7403990d66a269a6af507d472ce03e9e6b18a54431448de3d04cc71c14bd8cd9409fbf510ff78790cb03e9f533f50dbfe1dcabe4b4c483c8cf132b44778cf49f26b664158dca9c568aa7e2292256982fa69414fc420beacacc292a95591db1c9d5435dde4b7dc96ff7fcb5d7f22a50d8f46a378389734016461e61ece058534d2222e5b489b2c28ec80d7b7e18b3582990e82884258001a136b1d22e091a4f0ee7a9d15569c207fd51e6e20e3907a62b47efcf8e3b4cffbfb1832ec485fcf44a16e559163e1d23617cbbeb10a45e5edc48ae4f543d9090b1834c34abd5228fad07ab9fff2d116fd7c17d9046a1a60a0cd1bfde28c936990372f08212e781b49d9039f9174be1f973a32c4e120691e795f168b92e4b7e272cc602ea38327a5a304c61b53989c58f799d0c0e0faf22e45190a5b49dc6a1d625e0652686cb5c0c7d9c03b5d82330b2e32d4030be6a6cafa44d152c14180847054e84820065cda496c8d3230d60753513a37db5cb35d182d7dfa3df429b4899a40c96070f082e0766880f619a20b83b44081d82ec521bbf08538488a2f0ad4942ba2d094edbfaba451419f1095fc48fbff0e7496e44647433baf1a410e41dfe72e009c2fded10ff6311ada828c4873fbf5d28264f4a3d09ca932c192457ba2158f619766d2ce6362673c4b74fd16963f149d49da29438b5f117850041100443585b33c3aeda9be1cf6d22d3c66f9ae8c60fe24a59c7934e10ae2fcb93424fb28fe25bce958f638fdf9f1cca932678db3fe1237cbb608fc9c7753a3cf6b94992097978fc7789277df8228cf1d0e3d9e357806ba2ff128febd82c7b759473f836e6f213be8db69c26513b3505f96944ed9ce1718733d6cca876cecaa2da59d676daac9dbafcda59ce529c6f5fd3ec97a6b6d257ba3781a9d3e4f04deb75e3d7524cad6a0ea69e721bfe20534b7530b54e4399fac96df87f4ced24337593dbf00b99da83a999dc86ff832966b94ddcc247f8c52a3fc2e88c4bfc3d5de9341bbf9b8d7f668aab29528130452233dce336fc3433e4721bfe12a638858ff01f99f853e05bd8254af9a0de69d6c46437cdb41b84a9f79069f7ccb707d36e21bb3b98770799777330ef2e4ddf31d33750d626cd708f26d09119e8fe31ed0c3fb4d0fd322d99749730c71ccee270b9a7a727371b5b8cab7439863fb761dfa009fe19fe46aed1376e85e69835fac62d15cac72fa2f826569111230e96982d3438ac22091b1a8ac03065061a70f8c35fc8e5014a09224939c3b7f0e747f8b59e85bf1b54096e4b6648917d863f99275912a5c0476859c5b00273c52ac67ae604ac7dda954ad799137a57db68f420449b3b3cdea8a0048512c294b0e629ea4dca02f8d65a8b8ba094a7bdea00df4e24d064aa593fb29f575b3b4120da5e3b95ce99056b2278086ea32a5b74a0828507ac328983044af889d055f3c0c19a076ebb698bfb1ddc57719fc5fd1a95d27e05534afb368c806fe0a38052d2f011cd6b1848954342ca1a08ee0d1b8323e56310a41c8a535a54cb8034237a235a0bfd7673e028ee35fe8ce66b7c6dfe9821bc5e1f804db3b516afdace75eead91816cff01e850144d8750d2c8f64f4163d684a96cffdbd0d00d70ddfe493d14457164a7d7d5f617801351107285ed8f82545114a58104cff60f0094d7151ab63f062f1445d11c16cdb4fd2f88d1056cdafe48562f1cdbdf026dc6836efb57f09ba365fb9ff0a128aa036666fb9be8a128dae3452c6bfb0320cd5868d8fe2574288ada70c234b6ff518aa2288f1ea338046cb2fd49fc5014753a02d3b2fd29f0a128ea430a7966fb8fe8a128eab4c2e86c7fa31545511cbc91ea86ed5fa4a228fa84054bb77f0d47d62ab34c6d7f131cad6cffffa128daa344511e706259aeb6bf883c435f59e26cff1079455154aa041059f46cff09f28c084c4b8fed4f9467aa5eb2fd693e14456f0cedb4162cdb1f04eea128da34b4825ac46cffa11b435ed66cff998ea7b5fd3f0ca511b5e8d9fe1e7056217cb1fd857e288aa6705e33b6bfcc87a2e88efb82d863fb77f01e9ed792ed1fe42b8aa24fe516aaedcfc15514456fcc68e82d69b67ff92347d09638db3f964a6da961fb035dd584ed0fb3114504b2fdc91445d11c577e906cfff1a2b32a8d65fbffd810c56cff178eab1facedaff39aa0d585ed2fded8d230b67f68e327e6d8fe20d2ac069aaf0e45d11b434c1acbf6f71444d34bccf6bf6509c24c4e79774dbbed46e2fc659e34b4fd6d88429bed240566b89600eef726617c44bf264b19d66f6f4ee38ee83ff18b38bfccf0c50e88e03bebefb02d8c838ca2fa55782dff00438c2f2d3ff8e287262d83b55c0a47c2b6fc38f0459b9be1c01f33688622f8187c9cd338f0fd5a180776b598e906a54548ab33bb295da34e061a4b9fa830fe9ec040a5098b3e277252244ba8dc00a34eb842c5e995b4a2a9933e548290413add939dd1e703a582e4e521d501b16243840a94d72f0bdd32870a16ad75590b10181a5d40f287d26083ba67a562f5c2ab88b2598afdd85c31e3c10234fc758999033b01f6bea440eb972c54f6c0c254468e181a4646972a2f622156305d020a0343499514d603d11e9e3a799caa38e110652306e8c7a64f951ea3aaf3526508a851a63bbd3031821c014ac330515d6290428af8f9c884c91293638da960aaf4783981678035d461e191b2a30a160cd4812a0c3d4daa6895413d7506fa65489518c65bf5c34be2c0a670488113933d71c10efab260d2b5ce0b258088fd7abd5f183a3b22b00fbadfae6b6d72b5534bf487b5b6c0b4db6912650a63c390307cb0c2d8d074ebac59e784d97979a1546dc870f991e152c50bfa998172c5646a97a6c34ffd81e942060c971760baec762a843d1878903d3959705ededb89a99923315e3d334676bd3aebee0591c36ae60a941a6787e7f5e343bb4cf5ace8d8f5293fac5ab0d61f3d1a3aab6c563e3982449c5042af471a29fde3f106caca92133d2d2e5144d4ce0d98cfce932b3fa1ee0894962a71ede1325aeec07465806429f38425a54aeea57360f8e64059b9fa218166dd9a1c6ba4585913d4e325a93164caca16a8fa96a82c5cb1f21383502b335396cc287132e3a467650698cf55335050335e5e693b49ae63b2b8fc3746ebce3a264e94315a28939ea94e18b542d342cfaaf7646506aa297bce78286521b5afaf5c7844d6ec13c5be4496ecd3ae1ef669abb0cb66f7cbbb44b54ee9426f58272a419038144b05cb073eecc33eec3369341ad1041384082142c49bd934b15f33e8a6faa9d4cda65eddb6bbaeebbaaee99aa6699a5eabdec5f26dadebbaae6b9aa6698a732ae24db3562b2a321a91478cc07e4770f000df40dd96fd71e5df6fbda9cd36cbf7e94e5d755dd775cd6b51adc8c868c4080a282061cb361bf66b2b91748a729d597d2fff3cb0d9fe67b39fde2a7f33cb75739f7f6208e65fce3f9c7f4646d79f02290a966c7f125324c86bdac86b1ea925728912d86f090d44d3e0e562e31a18dbb60d8a1aafb807f6c6daa94bb007ea6cfb04c1de098e00da165b6c61af2b298091def324a197068e40c94159da20b6e53dd97a6266df10dbf29e4411b12def89136d5b9eca07948a6dcb535fd822b6e5a96372a862d944dbf25421e26c5b9e3ac3890b591719da96e7a4b72dcfc9bacfcc73126417008e7e916af610d54f93243bc4b6bc264d3c263c2677b69a4c32f942db96c74409886d794c7000c1c8f1270644d30068e307dab8769620850bdad1da27ea80ad956ec3f82db6165b5992f537d6262d21b36dbc1f3f285da2d07064007d602ce53022d5e6cc963a3aa440d9b1945b53aae0e68d53112d310c19b5eeff083d7c68fdb8a1c48ace004d49f6fdec379c91d48f2ccec893dbecf6d7a5079a40c98a22841783066e8332328ce1e211430e8b4cca2e75b9bd0c31339526c90e1a5e7025520b303860efb80fbc616a4e0a679ec849b284c8951b76e840b1a460858a0f900d6e6aecf4204923058b9b13b25ee843278f962724b9861ba844e9d284478e9d3e67c8e0e8aa91a686902b3edea5810e35bc3d2c1ce1d28252931974f6f4518247891e2e180d5461a0cc4026059e8e061a1e18363488e4bcf4e1f3eab3cb13030d4c685670f244043b17ec3411f2232523f2b9a5a00aa131a6851c5242392d36ec18b32463863c2417942a43ba84474756983725b0a0ba51edd8a0c347cf807d31745c6c6c39b9c1e65962ead36381c7025428833ef2940a89015da304e1012506a82d60b4cc8c31480088d49a1c8e1856cec4e498e0a3890d1e43f4cc10dba324830d9023768abcd0d5b4802168b46e5465edd070613d575db2b4682c6561010912f5898d3d4650d0a3fbc00b797649d85ce9a304e7d9412faec4a981c99e364d38fbd603229e385578c0ac2908794203777e0aa51c1553d7993a582618c1dd47ba7c2c990dd8c1eabe5954d0d3654b1b2653948a34ad3193828e1a5dcae0eecfac2c98771b8c2c210c43ca8f4b6c4832b325204c7240c048532e8981c5d07234c64081ba602921974c0012c375471767eb49d52f0344563729d488e3630d53950f5551258c784986790c8d557dfaccc6a52cb07149499078e7c58e25ad5a172d3bc4bb44063a9ba185c38baa9810a1d19ba431724688151bd8cc888acd5081f295185113ccd05304036d46ee45130fe29d18363a7479628278474618a318738648fc82f1ab41aba969852b15d8c127090b6564a063e6051ad997177382dc05183366a38c26b4ab3563ce496d4619a31a1f988608c978f2f005069f204ca62a0618302e6876d89249c145f3f2dc3096d896cc102c9bc3b6648624d9e7cc470014f4c2438ce825470d286a48de14144819d1876d7978aaf478219d947ac4b1618a173a63d4e0107f2a5a90f1650f9b3e3c2021d663df7240bcb34fdb46c0551e1b51b4a8f8ace0ecec2ba74a579e1e2dd0b0410b97012976d8a07af8b8f025012fbc98b1848f9116e47c09abc008d9f24d5941862e4c706729c2b04d6429c3030cd31c1b7170f6ed06c0f007b0558e17b6e2c84be92b94767f3ef252fab6bc24b91daec8be45b8fb8619add119bbe2873510b5197400e8efde5a25fe51b5277e1e016cca717c0b5b8180144ad8933013015825d0f823698e3f5ed8eb0d833d90693788da0c647b7c306733f03dfe6bac6dadd2f6c087991ef60802a9f604f817f4294f10dd3fe8388ed864cdda13632dfc1faeadfff51ae86dddf6faf031ad01fac3308cc1c1375c06b14170806ded090b7b80c55d742c350fc9d6ceb6766a18075a07d65a80293eca6f410ddf6cddb6e6842a4cb67047a6d695002f9cb0bc8821f3bb34e8aca0832125630ae7e6afc18da1a8496c7a972d79b85e24360b30038c16eefe6ea02137926e4ed003874d17564f0d56a6702494088223496cda352a6851716e165de14618894d17fe864f0a707024fc8841a1a9e80a4742072c1cae8930d851c31523b1f9fa71152609ce4dcba50d6e04140e9b2e2e9c150a8a23012351c281c46628f5dbe1c38d412436c315507831851b33f60bb31d3c842a0d45509c9bd60b131c097e71960bc2b8d0c3e5cf79c482c385cb4a2f255c4c09d7e1957042af84fb806b340ef087f89570fa95704ab8f2957041af8493bd12cec32be19470f63f98764e69ceca2d5907f3a1a4406a52c64c141db4c047fe25d694ef7fd50f40e4287fcc1142d895b95b8194f2d6aa004086f2bc4f4c3b250c6536af0e1f4d3129ef9320a4741dac61b44627896efc2fdd7e49ed44aa3abf8d715676e3b62eec42884e695fa84d695f05b6a63f688ae0b529a5ecca909c1265cab0967d19cb6d2088944ee519feb83c4936c33f757eb036fee9e199d5deb3f1e752944bcafbb21f5fce9344b81498cbe1dbd1e307d3b02abc0ad3846196dfdc9da96b8f8a90ca6fb7cecdba6ea4fc76d384507ebb577e84577c0b618fdf0060e2f183597e3bf1f841377eabe0f1835d218a6f163c7ef009df901e3bf9ed82c71f36f90d83c70faaf8168047f1f82d9843da27982b013e9529ac50982df011fe00981ee023fc189897ca8ff05f60de2abf3bd302f3aaf8087f05e66df223fc274c00c0bc527e84bf8429e2adca153fddddee3aed2e14baf167aeac991bcf585ffb1f58c093ec078000dbbbbccd003f03ec9e71b0274216af84bb9f9ed6fa364d8b612d9f22601aae41c07160cd621d762dc368afe374dbc74e595d51aeb015f9b10529bd76ca664430d8858140340dc2edefdb6b2705f68e6adbddb6b595244992ec6d24bd750fe73420a841321cc3525fadb50581f4b5800213caf363ba768290413795d4ed4a52b65f10942f52afc86e1bb53886e09847ec770cc10f0d11bd1a4a0f53e5198bf576ecb7af88ab7d5fc49527f9fbdc16cbaaa1b4e7dd9ab600bc633e7cbbb1ad55c676185429ef054eb15f8996b9d82fc625a2978994f8c8aeb877bf3db2af758994e50d12d2c66a810f9a3133c8a0d2c0d91e94122e19603c695205c93e0b6c1fc97e0a2eb41b25be37042b2eed46e93f922190019a946ca0df5b25b82d17291f9b167e7e70db17ef25c7b7e2b5f80133a258ac4614012520ea0b3d3cbe3051c302cefa51f9319343ed24776c8ba675b169fa479b1108e4c6f80510559e331c9e220099d9dac211b49ee11951074898b9b54af2c77f3df976bffc453ef9fa4752fc2b661c92b56b6d200edfc5d79f10dfc3c79a7cbd6a44e1e3d7abf0d9ebb0d681fbafad55deabc13547e09704e0b53617efe90245affbe3d349d8e2e7fb27f467d88ad75f2dbb1be420811a2452ecfed820be8b567ccf2fae00b75b0c14be0adf59b4f662a0b06641705b23fc63b4462af0b3904929ef9f4adbbacf6a4b1a3f0b1327520d9f642c4989c465e3478154c40763fc4829fc5ef0c568952eb616dbd8bdf7c6624018871cfc31ce3309d77d862b26e87838a979b3a3078e17aa00b9a2068f1a3d53422c613ee244cac53a25a6284d2b9ae7776587528c2c53388a3c95c9c2b2810268e30ba8d199bf915a612a47560a2500915a75dbff81ac329c92e099928294295a098ffc630c677431a1cf6882e64226460cb75104ec62230968b43d9cb1596802478bcc13115e0bb813694a1130c976725bde14de141b7540f0158afaf57abdb4183ab8ae29af2dc59081c245668aefba0840149e1f8e840f3edc385ae1481871638d4978b7d5faf5faf9f9f1e7e7e7e7e70441b65f9fb7ce4fc334fc79e35a1653fe3ecbf7b7b9bb97315f4b34bbb2f28ef75ebff6defc17ffbdf7cb59c6eac881df6c15282b94ddbe9f813abc2853971745b7efadb32fad85c54779c4663647f3f15108024f79e67d5b6ca4a5f2e98310cd7f963821aad2be85dda92025a57d1042374afbf649739c990cf04f7a51826f2ff9f7de8bdf92a1f92020ed35d42e6a2ec6276b2ec87fd54e25dd6eb1c3578141e062fb5bd21d04a41dd69099466b74ea1819e310d44126948584b05f21215208f47d00b366e0d610b867fb83007fb44ca361bf34d0973e39413da552ba300dadc2aaf02ab40ad7304dd8739b876bc815ee09bb42aef027328968f813a7442971893825ea4429a22aea442c318de846c4127b6296e8137b8e3348dec72f6cd2cbda7aa8cd208d1ba47bed3a82ea0e5cadc01e964ea7d3e97461aaa538e8f3f97c2995ae2aafb6a77103dbb9a696333083a1b8aeebbaea344dd3f405fa7ca00ff4891849180c0828162b39640e1cb05f0eb20da2600e4c9f401d38a5b14adf6ceb7f36ae704d41354dd334dd812b6805f6402c1206145bd7755dcb344dd3f4833ac86442421e3c7c98e5d90cfb9d75e8652cdfd68f4ba7d3e974baf0b782e8baaeeb0ae6c0147c0275e05407994ea7d3e9843cacebbaaefee66c0804081a8d88688210394408ec3744368376d64d657567cb563f2e54d485bfdcfbfd32d6d68f6b08844ea7d3e968e12ffc4d104284887fd3ac15e5a222ecb788c3fe61ae9ccb4f62afd7eb893d1d3e72dbcf74659eca6adee5355b8510a1d3e9743ab3565464643462040524320912d82f09525b95bd1996d8c33f9bed7f362b4b8db94a74ef59eed3fca4355ad3aa188a3d50ec6523239dd34cba49e734aa9d74aa51b7f9c7364e718a6f1a4db1d5c63d8c857d784ba3f8a6cb99aa51add56c026d15f886d3355dd3355d29c0a9104c42bf80607b029cda13fe384db5ef4472bda7343e91f2befdd8bd37ebc61fa2b77dfb620866fbd87f484f54adb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6ba3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2ac8d8a8a8a8ab2362a2a2acadaa8a8286ba3a2a2301e329a6e23b7b5a0ad9d2ef6bd42466b445e9cc150cca288fd8a98c46028ea577ebdb0df574886faf533929924b15ff287fc216140b1329725f65b92402587a00eb22c9361bfb21fd79e2eae1fc804a2bf0e289387dc87593a948786b0df217427856aa756ad2adec259b80edec27bf00ffbd22727a8a7544a979a21c8b7caafb63fb6ca39a7d9fe60ee85390cb1df30af455be5e81a28c4388ee38feb7cca555fddeab75af5b07c5845bd87a2288a3a966fcb7fcef552555555551445511415c18103070e23643f7db94a7496fb74b5ea61f9d6755dd7354dd3344db14f555555557d4af5ddea561afb54555555f5853c146d95233aacd7eaf62e966f6b5dd7754dd3344dd39f8fcb51cf79fa24a6699aa629f6611f0eaf5f0987ff03fffb1cf8d75c30b1350eeeeb9a8bd75f17f7dd5f0987bf45072a5858539b17f8cac7dfa203152c1c88665f84bb69e073a0efa6d92f0193fc25f0d75f0226618d03f1ef9740bfffcba4d91a0dac41c05f3f07febac6c17df14b20d690b0518e12098c1ac58b3fe79c7588712d877fe69c33066dedfc804490d25a9c33061d6b51e3238c31b6d662077d3c328ef6832d82ef0e5a533441986dfbe0db1a0e9f06eeec38fc138777abc0e40ef39f38e70f901bfcf1c424789e25185ed80a2b92d83cc18db17e91d83c1d481bc139875a7b2e8086adc09fdf5e117f075e04c31063ac01aea1a82121bd604e4a133631a5d1ff98452210c439bf2c2c35bedd1ce23084ad087f4212d4b157eefdd0b0550548f1396fe036ff0ca240ca6058a53461b38121884269f41f8a9948a6f508aef7558002aaf68f167764b739ae01e08492c7679f796b9b010d1b5b4055de325a8333f0f0fc542961dbf278592393f2675b1eaf0d8f5726eb04f4882a63dbf278eb0b8aa7f2a644f1155a5df2784cfb9cd1d1b3b2e46a0275e8448de4c20d1d5c6b74f0c85909e239d2e4709323ab9c09f9e194e554877795ded8b1dbb1fa91dda72e1d7095e38d9183020d63d4ec13e98718a41a25b92d6f8c96a63151e68c81a252ea6d79639cfa8c9191a60cb7e58d411d20864bb62d8f08179e1835cf78de7dfd4ffc77e6e669c9ec7a5b84fb72335b7c947f0caf9933de2376775cc65a6b6f17987736d31a63c7a05b6bed4df251de17d98461a85f76367474c100b67d33e39cc18c6f6a45f2c60bb54730eccd83d9db8e4a1ddbf5adb17d035cdb6003249b4d458a221bf895bdf22d00686f308a64381ba2dd9d6b17bdfaf151b88b8ae88ba2afaed1bd76e66d6fe6701dcc203b0e63f0b567a6bb2fc9190451d81321ae2181b593dc20e8a0e313049206bee79208348d4edbe70fc19d419d1466ed201886b59901bac85194e90fdf1fc4d63ac9b7b5d9ab70d1eab3745b58b30e82423bd794b6d661dbb7f49efddbe5b7991fdd77a6ed7eba6e5391beb3a7ab3ffe64647bd3c672742edf26f00b5028f2d07a867e6d11fd8cab3282acc0656948956ac59560b0c0864d0d17ee4ce9e36ecd9cc101e7e7c2963d5170e7552d60420d3eca700913478753b262260d8fce12a7a52ddc79b74e34318149d695b58522b8f3fef689ad9f1b28415680410ccebbb459b22225eac75b42669f469b7cfb65934f5afd361946cb26c5d0b011a08413f9cdab8c36cfea84fda3994acbc548ba4faf029366bffe46428e9a279c7e6b57e8f20b1e9df428f8854adba48ca2e88b1f8ae2b657f9d1fdeba50bc5c67f4d283d1dc7e8f2de5ed661a9512a3b802c0db6225f2f6d367e109a0993d95010f6628567e39fc1566099ccfd3ec1d225743fa0a93a61e3f720a24a4d1fae283c1d6694a4b4ac676a7052a78707a763a867dc662074d57409b3f1cb602bf06ce3244f55b45c69e3a34a8a2b6d159123544c9cb4783cd160c1b431c618638c3bc05660cf77441a3303b0575b9cb6f3b6acb0fdcbd9bab4fd7f5db3fd6d281cd9fe489687828fc785ca765e971256b84c5605cdcf4d2ab316391b7f0cb602739527791f0c8a7d121921609f28b6535929a9e06cffd9142f8b9bed5a8e6c4f8162a9a1002bdc430c58e0ac702b51e14d1a33172c423050860e93a7262a3876b8d27a890105831e1c3a750ec842631e6094c058e0db0cac152129cf99c5ea604694f36bd88a7c7b1be317a98878579250b0fd43bd77494a524696b2db6bb3f16799ec0784c79b3736943182e294d29c992954a913346170fe98053ebaaf616caf5264fbb8dddd3d694c79ce66332bbb8db14c76c54cc6a48c2c65b7828dadd0d06bca939c11f176bd0c9ec8686faeb4bcddba2d6fa7ee73bcb3ef9bd896b763f2cfe36fdfd956e9d3b292e8076bdfa7599126da6f616f63ce1e5dd2de7eb0b4146b91b4aa776ebbafd533e579811b365edab8460b7b3f5dfb7631fd98798f7674f27c57d5201925fea98140eefcdbf36a55b5fe60e19bb6e24361df0ff3db170bdf2cceb7b57f7e5ab5273028a2c729bfdd26eaa852a5f124cbab02a533dae738b5efd81bb148dc39fa9aa652d569e763fd6105a477b13ce97436fbfe3d41a67d825bf6fd7b8a7bb693ed44bfb8ba2b85cae80ac53eafce4dd65d3ab1cfdbb5cb2fffc5f5836a156bdf17b9342a72895c2297c8a5519dd3a9c8a5755777d5bbbbba3b056e41425281b4923f9ea1bac31db85a6d90c9934ef009cc813930772d2e7dd2812a9b23b087d55ad0292d0ef6167b607be304603fd6682d7016d60256a3f9cf6d176bdfb43c1d4befccd3755b876f7a372bd5b7e9f0cde2a6d4ddaa557c74417005ad808420c2ef87cde003bee29536820bcbe5e3033fda45996cd676d3666dd429d7941b3ad2464612de0e15a6ec9d2a223ea87435e9d9e169ead4e449b4fbe436a87b5f6badeff8fb37fab7d28b247266c48931c38b2c383b7543093e186cf4aec01870f7ed335e30564b7c42f01fc1df830f3cf0a45ba359b779f62fea2a3df8c06680b10e4d6aa2eabe28f998c0b3dd843d724f8005f6f63704d88cc5d8ddd4b4dd84d35da7f870e75181f2983bb6265e6cdf12c2081e0499a8a8946c76672d0c91b211000000002317002028100c0744921c85712892d6f814000a58923e64583695c8a3d15010c2280aa3200a611884100300320629a58c328901af7673563030c2f6b076330d324136a376ba9b9304684af80ce0f103a650f70f95e22564701e2664850f830cb688415634633fd57b2eee3515ec04789af8ccfdd3804ec1b0d4cf0d6ab81bb4d058930027f2c593c422857224cd21e9b7f9b3ea989b2ded11b102e6893169e9cc544da87b485ecaa1513937be55046e12ab36a1acca56ba782d4c4cb8e1655b630711a43308ff1c84fab41bb597163235b29eefca09c712028961555003151cf3ca4c90bc591b6ee9c40b4a3824f61d61c921fc85ec5b45a42c3547d36ad9de822bd57af288e2d62273da847b2bcfc455c4e7e4cd5e4b0c4dcca61ddd2c081e3bec9a328928f1119a0d339bf8000d960a58889eca166b360242c18532e263d0acddc801b433a0c6b238d9dcbf35850e16280e0bafa2d34bba69552560d10412e4d1dafa1049c80631c751615c21bd10d0cb08e6e8bc1095326abe0df23431c94f8a87e45faef0a33a7d9cd519975d3ffccaf666a8113f249e889dfd3c36bafd3ea16abac94bc79dd0576062206190edfa2a404a58cf3ca9a601bc0102b250076983d23dc4a34508ae39f6e38c63c3651ebe1f205c9c7581e8ffb142a39712a7d826a06120d25116be90fcdb22d69da1a4f6eb1d5c966b74f24350867059aa168d1d2cfb5d91b1872a926107a3fa258df44b17e71c035b8cfa05f837c774a1707a835c3ac7b1445866e8d4a594ffb83f341f611630171e50b2cc01dd686cba916514678c5e6560eab089590fda0903b96c8436c9a004c0856646650a935e3a477186803f155cbb052f2a827d9cd337d3ad58d2611736325d151b9fb188156c2ea49ddb027afb69c9ff283c4e6fd168607c385e36a5bb79b919e612573b6418b450f7540f90efb0b2aaddf444c562f00c2cfc0843f68c905603fdef5a8ec062f3cdb2457dc0fa6807dc06de588f986dc0573bf943c53c3e4686ad62fc8b06b857f05f2754df1d211d8384cf25e13a5c279343f583ed275946c8570feed57c789c2ca2484e306642c5749541e0edce16799d1a6b4c8581573dfa98d0a8961a9d57e6e6e1387fad4a81ed1848ac4a3c105e31f686f03adae7a3dac2ad2298aab7823fa073806be845bb93c9e4ec0257c0beb96dc5d54036922cd5bb9fafa0f70a40ee6b4bfb61f94a699ead97e783c8a4a62ee09a932c7410fc5ad880ca902949260bd9bd800855d04bb632499393b35d12b03f15d0418dd5326287abd2dd238c763dda5d714fe19984ca996284a5691065abee69940f504c4d119ba3433aad9ddd2cc887f54c3ed17525d3403c46b8b1e79d991dc38e80ad1586aaab48351102fec2bac620424638cd3ceb30bec919651a6f2d10c86cba92994f0ced44fa71d5c9a1130b642e8136733b604819614e7372f8b8a3ead549bfbee38f83ede79757e3d15805f08228117ad3953f18d71dd6bd68e4c0e14be6b483d1043a1bd49c31c07c33fb1f2f225f083fbf154bd8f4d7ba60452042ff6bf00a62c4944c341c122c4d4d4388b6619b4a5e1c3f04f30ec82a9dcb63194eca31255c563022988b42174109316d07a6e68f219caafd07e56b1ed11ddba1f234d3a29b31bae08f9c371e013cfd2dce73e41a7fc79b552703f17790ba1cfc8f3c67890ca4914fce5bee283c66e73ebe14e5bbe879470c0a0ccccf77e8ed0586ae41b97b487d009c4437ccb80da946f5cc879f1e80625233f39fe1724b5df828b606864df9c6334220bcac5bbf931df973409d026dc05ae24fac144cb5c342c114768603a4d85b566bc796f36927ccdd846f3544dd050142c098c1ab40b1d6eba265b9890458d9ef40975253870d6c0300f8b8355a05e448b0ff79bb1958b099e982b50a4ba1e5e910956fa9015e882497abf2e43eac1ec588efe2c6d64c915eb132899086cb0339619e8ad0e821bae267e79a284eefc3e70b7aff3b41f07d16bc8149f1340cd72da77ce93952e35f4665003e97c08682f87b42536e729e28b7af1d7b70c9e05d583dd82cd4b02a6407f8f4b0ca22e2dc18fc42799c189e7e52f912e12fa9d0aea620e8023c900a833186250a6fa82615252bf0e24cea1c7345b4da26f863c269fd174bf3f95c1185ab0182e87b26ef6d8d7cef79f043f1c9047aee35ec41208361db52b709e696ad768f90a7112286563121d007f01278d18b88502011373c66f4537aea02077576ebdab3f11039f099343c2f7ff764df96bced34937675e7a713f640464654464e077ed3d91b3bce01f0b309fea23bb04dad7d3c3297aba80c12c5f30329ab8d4d152122413a7ba70087a88d890fd286f298f8a00060cb27ae859448bce52aa0681435e2abd5329d508c11ed075537744d2b21d527f310e43e40cf8794701eeac7d94467eabb3e7ff7009ab418571852d60a54aac8460791c96d94d98126a9a44457751a883d305c00cffcfc44443e4f2a9b7b5e85c827be0b5cb69dc11e4535a1dd6242166c5f290b63e6846320951bca5a270e9bc9d7b2e6b918bcd3945b3651cfe6f7c802b78e8e74bcb984f11314d31d56b2a00395510b880df99fd51a7d986218ef16ccb8033d7ad6301582f822c74b92492e990ade9ee78209d619e2a140948464f3c82a1e1774004b1ce11a20f83fb14663c7ae70e66ba7749a02d8a424956f3a5d99094d770ec41801fc113690f21eb03ab6a04898b87c517d5c08fbb6fc9acc145274ff4ac530b2f4d3c2aace493c87ab860ae1a0458f8a2f3ec562ce83114970f6212c08da54976f018e62b28107410bb312f3e2b48b444e32bcd591246708fea89cb5fdfb4d6a76ee7fd58dd3047a4021da8e40d1a27d86ce5f8096a3d49033ccfcb627efb896106c2249879e6375bf051d0f264f9bd3f5239eea72641a928f2aea770bc6a574e7155c30510dfd9129b2ff174e330fdda1b193117bd5366dfbcb600b8c664e810bbd2e58cdac90d63389c5af93f3d6e452dde42af0167b19f82316e3a5a7bffeeb724de2cdd3ff2341ae45c7f57e35edd2e695fd5b735ae8a19ad9aee1c06567b2320f926b0b463e4cc953ba1e2c0f23592080e66a387254e499e750a32c0200a84f354c33dcf777b114ae8a35de93eed8e378aba20c535d5fe4507ea73339169074f84c4270c7eae51d3ac8f42371aeeb4ac66e4022514520d1937770b21fa63bb01306504793936ee50441d8afd0f572dfd1a6bf5c95fd8fad8c7b19304e37dda57f3e8c0716207f3ee548e0ab714cfe6dec63c35f013d15672f93b5d94aaaf389dd7605e958eb09c76dcd4fc0fee8679c4fe35eef478fcdeb0003cd5f03339fcf7b69daab971da7aaf3da894058077d4922a6f9246d4efea9879bcfee9084075e60bb59a761900043b65187cc9bc561f8120c00437d4afc882598895a2c0835ac29ae007c51a5b79bf2cbdcb316052db5fef39e179ece3f6533298f8ba41fa5981b5fa4e986c5419443181ad7c2c3362043210f29877c74efdf571b86c5a17c97cf6c62195bb6687cf0098a9b3d66333f7403c0ce3f71e8c3c7c537dc54f3280c586b1b4151c875261bea7a46db9bcd8eedcd5037ec140a327d79926afb8819125117f0fbd011745fb9a1d719b800bcff3bd52ed4d9155c668ec132a12f3613ec843a6d19de06c64d55570fc68764640df1323b4337186063f46c4d91aa8a4295f5b73af841e66ee5d585555400f78076e76cf3c0a3f57aecb93aef4a5f27c4b2522ddae410725e0dadbfb01f8c362b50a809816f5d7084f0f1e0363aeeaa0cbf423e9ec3a8d2a34bfd07a9ce289f9e948719a04e8131aca29f61e9bbe75852a1ffe8515cb569f06971af2942d4682dcfd90481a4ecb5d51ef55d4a8338364cf8a53b9820d848da0da9498b6888dd270e7f6dcd16c8a601d3110b198e82e1a08527241e2289bf706c21d6ff693b9d0542960c6a85a3ea2deda488c44ea0b2a0620acdceb3ee0529dbbfcd5ba8e74e6ae139e9ee27ca9ec99d317aef6330ab33fd3d2bb9cbd1b354bd41dd3f593d09534fb1be5ff9987fe37c78946f8520d00f5c0fe87fdcbb6d11c6a751c4f75a8f9ea824fbdd6b69d6024ab19dd889911fe4be2a7d8e361ca8655140b01cfddfcdedae423fcd6c843086b61b020f2f0f662127f40d1526c3b39c8cc17ae9002466e1e13766bb029f1560abddd7f92575d697d85ab91ecb34c64ed6a09d987017d66827484c52c619e2b62674f67a511d80c1ab9179faa0d9dcb1cbaebe3127c4aee7e1562a5915c1e8189855adfaed7ce4f93649cf0e4a7a2e92cb942289c4b4481ea04751ca9a21848b15267dcacec11a9bf960afd30c53d808e3039d7e114807b5803fb36c059562362f614fefc6a97ddd87522d87198c20cd3c0ab98df8b69291de94e8c7b8d8f164fa0d5ae5d27ed12e530fde7517f319b4ec7344496f4edac324f63cc4e5b88f689c038cbe3622938d6fc1c6875824fac87b51d961f1a0e2162b01e98c1671b4af027e4cf09b82d6c412087e681acc5e20c42279191e39a024126c1a32cfabf82d58b3dcc3726fca5864dbe2ce05b9c57f2b14ac192ae22ab47f240abb6297dd02c34486e4f1ae3f18ba6194359ed925b316684806e6f4a4c89c5d5bafe2618251650eaeaa74d3d9ba6d5dd95461691dea287b33ff75f2953150061281e514374823b40fdfbb9efb019915bc011f98ccd4b00b1ab34610bf07f8b67ae38b92671d0fe7705d3e1244e4030f5d97b379a5600f4d6d5966c53752cd51f83b0633cb508fe9595afa33070244dba4e656c1624bd57430b0c07ff281c484bf2f544d25583d40b0f065a78158228c8e5c63c8b89e91f3311e62b9e796abffa9a8c5aa0dd2485570ab4852941d3b301fa312ec400a20a3a0a1c6ca86be27afaec883e4c620f47c9a9b667e1d839776790ebef81b8226687f4b81d10c84bc44ba941e839c30c8752f65f948468c2263897c5f716ef60d31aea0694cb152b518f1f38d9e363eb4370c54cec1bfef3abdc29cf8f5dc1daa30a3e1783879cc4b9dd39c58e6a2a788868dfb829220a1e1699fd5bcb1fe10b43fbedcbdd2a2ef9adedf498300392bd354c6ef1b587aacd4501808e308dfd9b0e50487f92537aa1269f056d4370f4181c8cfa5f98bd0ff3b1bc56b3eaa0543201dd4d03d630a5aa02f7fa6121268f8296d326a34c330e841c65fea35a0f1d49c27950e78453c13cbb563afb8ac287d2dc5978c4a8b471143f9f2fc99eb60eb39f220542f1a2b4b3b0a807893d86ab35276efecfd96df727375239909272e1d352c15416ba8c1b4a143192fb57104d2bd4fb05b311971b9cbbf3cf9d50e1106628e5b007f3832b7ba300891d9de5ca1968b9c7f9db39bd4ff2b51d054436cf4b89e5d2b1f4aed7ce2f10998c4cab03c51b42a3d716521230f1100f0d914b42014ef796669b73c486a04d98247cca0817ac5dae5b64c93172f6c2b9c2ef6de962fab4873e2b641a714d4a7ee7bfa0558eee87718d5f27bf794559957304022c0992940d84a7aba99b898f023aae30ab0b1538a4d95d2a2dedf1ecc621ffd8ab90be424fc2d121da63cea8a74c0ac927a5df4d36a38e054381095a0f10bdeb95a4b36a267ccd2e06b184dbcfffd2b2611e085ab33167089175ddac06f37c1d871cd460ed6b9683869efdd1482a95cb2bb6668304052c64ff9bf7ba5d102cb6ff09ba82df828120bbd28221089d0137b582e3771f62e8b8cc978f7dfc54368c15d661475530ded50008d1456ea26317b93f0b49aa653a6e5d58c282bd9ce0dc16a596d02966c5856149f8a65de45f381a0172fc13c1959fcb532934c5625463e4e457f9ee4a9faa6f5046c3a802dac71b2fb550ab665547bd9549fce3a498d324f232d1a76564700c97deff80fc669b165c1a00526ef5b593b970ed661c0f687ceb93a9a683421ea1cff828d004cbffb457aab8583e71022a19256011298cce5323430024391c0e415465fbfb13110612880f895327b611c6bf6bc06997e88aefe730e8152086bc0ced2045ee9f78ddaafba496977e2837a1394f126ae162248c3580e6fdfa6ca24968f319df4c111cb5f0c3a01cff0ae8928e6b7dee4a500a1f66fdc8b2d196eda6e3e6f310bbcecd142ad019100ea14abda0cac0fb4acec566026d77beb77c61b20875974540cd112d87e1a034cc69f4a1f4ba8ba6f5ccebb53579daeaa6438968fe82418a15ca20d527516600d77eca800faa6aeeb72e09aeb44407a3f969297e7a9117c8bea70e75655cb49fb77b3295cefbb124c62184e1d2e109c0013d2112877d4c9a5c376a9344fa2a0f83562018830e1c2a3404eb3b4604afa8c6493898d0d96a812b198304072368e89378198ac4d3ef7d2f31a157b6a04039e34f8009cc19f2dc9ffc04493774a83e10b3c1ff8a26a86b02f419f4fb3e0003cced74475d6064db2904a196000b044e118f8a6c07b5a273e51918f375c54920498e5282598e3a7189cf4b4807c46e407110535d8a54398d62bca35cc1cc66930a1eaaa6883bcb27b0511f65d757bc73b50fe9344624ef1bd0e7419beee6f08951e6d82b52407d74a38cad30db912bfd7c5942f5cc697e04edec337b86def3ec42b22bac75e2c1e4557a1cac08b2001d40e40404daa3a7b30f153f7dd0bec58e01ae5a7851f2894bb4845280cff70c77cb52009cff5aba04375160e1811838267de297f934f819ac4442585fe1ee9a4e16f4a62d99ca2fda924048e662bb7023a67bcdefb03d038c64c5f918e2e3f9e2bed73224142d4a8623dbdd1f2c38ea9a8341e4a227702d3ffc818277c8a3aa91f12c1c5197d8204886fe557402303adc0c70460cb2a0178fc9e31230d54e8251cad2398529f683b999a5ca8bee1ccfc4a1ce2c10ae65ebc39cf1d913ef1011ac3222815da8a055dab5688467d1b9c50ccc57a8ebabe2f8d45b644e6befda3356a2a324dd68d052640a840a425d32c5981e143923cd03429faebdbcc399e1ffd7d329e81508715786ac21213364dfd4a44aff97cfc11dd69689609ac8d52a92ba13c143cfe7b51bcfad78a48efbeabf5f94316fb9df37a326ad38ee155a048bad30b880bc1519abdbccfcab72ea6cc6e4d1f0d75b4d8572abe7bb4da8cd8378530774bae6c6bb5c30c9158caf56feee6772e9ed5223aaed4a0372782a4353e5780c32ce5e29cbfff652a4402e0ce88060f0815b8628161c04303c3f2046e4d9f1d30079178dce7f46cbf710e12ed3f39cfd4cfb45143bb5121390d1483b5546edb5200248a0295d0c243750c68e9bd4dd52a86a833d30013ae1c20338c452d3a990228824c1f4d288bdb8f0fb403ee493a2502d2ac749e1997355e6c670bd89fc4f66a3c5b033687e3ff0511965d4e27c0695d4d710487b9e586af0a6ee35c6f689e4ac01457a1fb59dba8c293ad7d953d1456be27d5704dd73e84ddd2620c655cefffd2cab87d106952fe9362fae2788842fad2c9c7c9f31e4bec230635ebe355de17963306bbd7fd810a7c343f89972e00586912c8c4efb5175ffeb2a48c4e677e9b84d9a73efbab812a23d1c4ba7c7c036ffe48a4140f22554bb52cf8959669c1f0c6c1c01ff10c77c6028e2f0e0eac58865842ca6f89c12342d934b626067c39ed828f689dfa6d6e5b8723a66b312d695d35c4803ceafcd8dcf6100de6f61523085aaae9c325694aa26a431d2bbc6943beca5eb819df0746fc10d40e514352e020e0477b6811304a2fa6b530b8a7206f1896bed0bf6013528a4c684a9ae63064a2c0d6ea8c9f2d90fbe311fa738a05ee280417e826856a5d5a846372d90ad1deb2c408413d7016ff341fdc4f0bdfc07f3dff6cb5fe11d146aeefabab18a57f464f92120ee0625f0fb6d5008c7c413efd1ff30fcad20e42c8a191c2dfcfa77e82876bac4a973c2edccbaaa99a9da6feb97935b4fe7d8a37fad1d19ba1505bc73fefcf6940ebc97f17535ec4cd7811e6131010dcfd905b18795389856451dd46c02ef80ed0e603ac612c59a6103161c69b1af31165ef717358f280b9bfcba5953923230f466bfcf265a2f28728ec515d547bc0c0676d23423623e119a24ba561c20927320bd0c780913754e772af2c51f63b575bd4d92c3c935a930e195bedc4d2d182e7e178ad2a8fbf4698c71e0c593d8a6d97f7540439fb2ddb9374fddfd677a3abd47c2bfc3b9788c01ed046e9990cde562c2c2c320331858054ca04f9406c1083819783bba9dac78e1d9903b62abcb3bfcb79be2da018c0240ad5871dc3943877025bbc80b01ebb25c5eccb29c8bedc5b6e2966dd9c513f25c72ced22c4f7a5e5fa803a5a8a956782665c13882217cbf6f453012ce4c5bc74a81d4371716267dcb8c7741d421816794109f7ca45e7ff0f20e2a1246fe7f14dd1b62cf9c138afe5440e79da1e06023c87f4c090f17d436d9c4059722cb0be64969d820fdbe9ba9bc26af21f4da3cae9fa4adf00704f0a439d5985d83b33400eac2cd77a6b0726a13e34daa58180e127a76c5b315702408d76b4cb2c469be91d4fe83a705d627003163422810e205c213a40ae22cb9e7382d29153a74bd8bd5eeaf01f0d0b7a1aaef274f85b95b46e6e20fc85993b6d29e689fd34815253e9d9fcbfaf37c3880f12139fc408f68765703c595788ba2cc72a2c6a112dfbb819f2060dd2e419de3b681fbe6c78e622cd9e8f1581309b7e4bda2806ac10558ddf6e1966cd6e6c201ea0940ccd9781981030fabbc3c0db137f83b78aab2274827db274fbc26a944bd2e427bb88d476af9541e1bb0ad0c71dbd4b9af7057bce609df0bbae1b30d040674115f713aeb02fa01b286f075909dc3d0b1992e8b884fa0cf1814164ad593ee6dd03f58141f65e658fee0b973518440da9efc3f7a55d23128993b9fe081c3c9a8d6160270c66bc4df56876669e301953e253eb9f86d8e5c7974c2d60b7e2b0e2fdccda253d1858f942ce06c079225a828c11058751ff0a9d158b0a786c996264884e702b11ec56ff67bcfd4607af19684f3ce3cda6c69ebaf94f1403a5cb61b00dd508b9152bdf3d4f830efc2d02b6500106caee61eb580bef25a64420e5c82f52f42de075a4bd9d2d2cfd8065c4fc058199791ebd85323cb1b0d1a3fbd2fc7b902b1ab449c788063f25fa3dfa1dece2aadb517e61f00c3c444e675591456e992abef43593be8342d6f6166b6e84ba2b57af398c6fe3d5cbe353e5cbd7e4d1227a3c085d96832a4c9dc01159106553282aa3998a2aacaf425ecc4363fd56269850f1e55891e94caefc71582fe869fa5e78ad19266f1257a8368f6505296f52f9aa120d2ad51d41145778d0f880612988cca37f75f2014197104750ea8f352e1af45ea11b686b20d788fd55e1fb63332f00d8cf8dfe031eaff5e825aa94a5796d744e8d221ca8e62801340c7da12073bbcd0e94a1c4f3876799e73ee3e01e5c05374046a9e72f1e645f1dc6b93d03fb907ef83ee99307cfd96f5d336e5f57f5648cb2f361424808e80043ef26ac06323fb459f25001b0d96e1c4ebcb12171a0127ea4171a96b375e0d1e13a17f1a41cda2bf78197c59d1a2e8d951a7998a579db9221b1e88fa80d467a3a3fe0fc85fb90a3a784f5b53ce0e09fbb91e1693799ee8ce72d2707ee30c9ecd33e57951ee3d41cd9ca7e84d77ecee58e4b0372062ab7d99f3cfddb6ef196548e067c082bd408940201ff47a89d4438411f21aa1a2e8aef2b519a0c2a8bac3a66d02289399d62a7d2ca6090090be58a4f6cf4c32c29c25e63cd917b188cd5c720780c889def9fd2c1527eda0540b6393c75feb68929285248f10afbc16b62cd0ccf68a907e6e4eb18c089e5ccd91afa7224d4d4f15e63ca4baa20c2da07483b50d867a6116809a347201043ed76ba111beebd4311509131ceddc41dcbec5132d32b1a5deda77eea81182697efe7bc4cc5ae8bb9e23ace1cc750b5b31a4feda7265ba5ce6cb354f64d29cf05457de7ab3066cee831914838d27f59cb5382c10db495a1fbe3bd628e61ce5090efe5418d9208ff587feda431c68c76fc7c94518d172d60e182ff3a8008f472171695c405f081e9e89ee56d993ac6010f4d83bad0a0b18a13eb891040a29cee8007e0e147ce3082f96637f1b8bcca0a2845b92a805047bc7d6154f87ba16a067794dc0339773506c060f566ae79a3a21c867e320ddd109a8e6e88d2d82e24ed7e194c0741fcb568d13009e569b7fe0ace5d7600a14d936bb0c99fe09fdadab7b8a2046e58504ba728d50f7ad0e098255d95fa57881f84d3ed697de94b82014cbf603c4dfd1cf4ff00d74ebd9a17606639389f526b42a91551a0a80ab71f7f5d6392941900650a68c7f145dc05499efd9c9e269a40d3bb34998b03240040185ef1961224fe3e68e448cd41030ddc1e9372af9b1f79fb86161ed1cf5c7e8b1e59ee33a028a91f64d0e0f125850321dcb22472e4010c3586e554a4bc0a22b33cc11d8fc3bd18012dc95d3a10b4a2ec4818cf29c12f80347b3036605af69f692bd5e02ca3c5b73858850aa45b116731d199fed789bf61cc4f6cf3084f6e93d438cd36bbbb83ed56dfedcd46280dd297dfc9e68dd9430791d03d1e7e13052639d1527dd10a9ce0551c9125a0f39855546ac7ec38ec1e9835d2b8d99ddb3cf3baeeddc1467cc796241051002a314bbb5d6c436b56a13a521a9f9081a9b6e74aa5095c12599509d24b40a00486d21edf1cb6850ba6db8aa68a7a1c76010e5b54a77fbe7da47a54b48f394bea256ba18619d665d3805c1abd6dfba9e9cd574b506f47193b064727469970519c2ba947fd8a5e5725005e3917e9bf0ffc53282af5071830088f154503edae76122defffb4954ca7ed10302335a5aac1ab423aaf6d1d143f56c7987b50dae589c18246a012345ee9769ba7477c0c623588a96aeb3f85b239bbc8af6b7a2f5e9751a826a74b480b11337bf47107b3e0a4e6a87710ef21d0153064c954f3f09eb408cbc490fb158050cfd9ca08a3c1e28ec310fe399c67abf4e67a27dad57b38f2d48995d241e0060112313e8213126d6ecd36980568d59a6870c7bfcc43a3781e164ee6d8b0628401dfa942aca5601aa179c55a761665b9b728c2817827e114bd239136a4573d666cf3292821449be2598c1e352dc3bc1dedffc7d2deebf2291dfb24ce0c199fc97831d99acbc3105de8644045870fdd5c1ae88362b3213c646a701bf83a193d47e5a73ee3c9ccd76b4f3b25981c7f475049b1c1a388a7ddf3a8f32f1a48007baeaa0d8eab14a7db0ed75144dbecca7d4c154931bb9552758c79657f355507d70d9d46a30e57b5ba7e5a322547b137b159e0f555a329fb00caaf994fc860ddfda1ff3927ad62734ec19853fdaf54d1a67c274689f03c5d293172573a7578af717c7748dd1699879471b73470664e47f65970d1fc929de22c2a1a7fb81e284b5035d9346dd1ca9b611f6a816ca440dc052450d32cfc8194aa2b365767c0408ed765bcc97994147bca2fea7ffbb5097cd7b7b8de5fdfa4c328d680fd583482a76103b81b241b2ede57cf652ea4010ca34452fdac7cf39d66ed37b70c2f9174b191eca4b87c584e352086d21f012d4238c9ac51ab6a2c7695609e93054b603b388b18278bf01e7f827b8e9a77d3b3734796f86d052b587a43b919fa32cdd36806c40bd6589adad364401a4aab394d147c9e918bc69e684e13019933e26a82ea6505958b09baaf26a85c4fd0bd9ca07b558792cb0c2dd7097a2e3394b84e507add03f6547a534b74bcca1029572dd1d838e39da1a2fbab5634aeca8a94da1a9e6a5fa51189ad3322255f633476675e052dd2af9aa2712a53afc37b8fa5af6e45e2938c5ca771bf0221d2cb138b66eac6b21e5c37409a8305f5b3927a3727e3e7d0347713aac4e037eb24f4744c64cf49bf2b25561bbf939c291d316a1d75ddc42214b2db6dc70723948ecd1e24ad75fb7a56e3005888447d3734b355ab6c245e3a22453c744e9ef33404c4f580b9772b6dc955610810e901b8db355ce13f58840a811e20ebdd821d98fb2556851e152a04bac0ef77eba0692e9fe930e4e21c4241443fb8906e22a89fafb7edb76d7797e4fd2fa5da8929f6105be93afe9e72e92d3759a3c8858d5532072e577aeedcec684ff8c8992245e1fd147875df2c39b1038e3a91d1c09a2690b5b1d11542daadd141ad00aa30aa45c772db4f2926fcceb51926f57da9a96e442246780e94df8acc58c472418b81830497bc146e26aa4e238ff34f63b7a65087045d79ebb7ae51dd241d71688794fbdf7a5e29050c86c247a26407ac3455d05923d6b28392e2f6013df021f3f7c4539fb212818490c87f1abf586f8c17bae4856156ff8b7a331c50e379f91f9e91ad7e0203fe990ea008b1f7a880d5ae632424e4a0eef815c8fda7c34bde802f388da249ef85a93acd604a313e0c273b5efd812d4ea4a0052fb17c8a51a38c8c31feaee1de217e543ccd1bd29438f51430c797480bfd11fca5a69a2c485675422d3ce91428820a680176bafcc811478f948e9800a1048809bd0f96043e8d2f5b000d585b6875284f6d5947c0715d4116640ffb6d39a8aeb371bbe3d823e73702059f0cf7c345c89bfc41cc2aee52395fa9462191c92b55487ccbb9bafaa22ff3f35843043abacfc5e2c4468c32c2c6245782e55d5f134365227eb6f3966363569ae4f56abaf75ee43a486706788935676ca364ecbd19d2c4bca38eeab95f19222015b65c947217028412833169ed7e4e316c02aef6b2bbbc3c06d00461d1dd1eab5865be7f7eafcc555204e62b53f09ccdc8d6311c4b7fd8c78e20b4c4dbd2828c405e47ee1874a32676ef91a2762b0477079c6ed19e71f4fa657d39329273581a6ced37c29d623d696d6b22df092a0604dc06c740f1f94f44c664fea7c7a6d4bb102094644033ee4f5513af3dbfd5308f52104445ac480e54e807567111857eb903deb178d2d8334a7cd3088d235f95d1c401911e568ffacc42d6394fa368ddb8b11ee656ce69c8f1a4667c5efe8b32e4d334359c128d022eec02afa6a86b0eb84a0ae941da6735c03dff562daeae2cbf13f58e32a7bbcf7ea885d2581c25d32c2fe620c45d093c1a06d839303fc96b8cfecafb391cddf049518e9e72ade8b8dae4258295bdfcab04f7b6e4ef8bc5cdd51834d08c5121ae4135195aeb7bef916a8fa6114685001c6711b0b3517d3a8781879c3283d1aa7c2a63796d4290fc8fd597b11aef808ced42b1d5d32df872a64e1b6f236bed8f8f21980b932180d413bf83db6de4c888f8e2a27b12fd61994d5c9072799de8f94433293f4f39c30e73ddb00970cb0e81d26885c9d3218026ea42a1de2a199646936c801ac384e9d07c479a80264be6320f192d054e5ed40a24f93fbdc393609fba626b7d4415c62b8110dfc84bf48faae20f12743593cd54c85be78684d72fa307193491b06d356b22f839e2207089931f87edeb7eb8b8fcc7f9ae5ae001aa05ec84a166b62b662e04be89b9c52632ce593ae69f70c2109e0f84e77cab5f8302290db7a1ce809f0c3f12a323c27afb46ad158c74d26436034c8e829af52c378d4b5630f2b23062152a582f3e898c841d8e3b381d3dc7e4fda8f6fe60f154228c58734c033206130ba61bf18e70a1f61e7e96f0e62eb460528955d8764d8c5ab5f9dd1e8d1ac603b1d8f470caf88ac75fe24de98a37e538271cdd6ffdf131ef75bb8029b61795c94dd64334b7c0b08cf4dbd7158011e06cd91401e7be9b9d965a31dc618533ec13b064d13a254bb374ff9883f07a2e4b3300949d532bc4fb5a81149c70a5a557c2387d754e9f2c13ea088b4f8bf333c11011da1876681f55719f083eada573b8a4bd7dc739530e35d87fa764a2541b77a2cd847190a8981e258ce704249490088c19b3d02024c26e6f75c38f08dd2af2f8e00089a6e773386e77a34cac3c26fd117399fa23781b2585dfa3bcaa490807995c44e2710ce33dc89bf2b0fe52d070a2b23b3c92a81b91568da9b41bbd981b75ad8162d7f95c06070ca090da316204088550740b623d8f500d15bb251d7b50dfb3b96c71338199c1034a831a850d3f960c0cbbdf64b476d7354dda7b0313b22f91884d8783a08fd112c400bed11a3fb1cda4243ce15ac2b53a5e8e369766dbf01746dd2c6e71c0fe0e69b66b887775ac1673bb3799dbcbb2b3ad75d64b41bb12e916151c578398316ae62c83c61f950ea8af429b10eabbdda51f7701b63a9bda236a1a92a5f9024d703238fec44945c570d0a4c2256b69e7f56cd677de42c83ef80957087c14b2c1aa79ab6097493525312a36784f798d35cd952bd40368e00de1d638371a434e13dca8e7f7ecc07c74448d1278877114e20c9cb256ce4cd13bc6a51e7760dba88b383d01bcc3b80a71dae50175cf981304b7345f708a1d6f7538258385bb5985693979461411f854e02f47f3ad1025e00de3d638572bf6c82428555c4facc9698548632114d3b63f489bd10f6e4816de5375433ce9cf1a2b5006edd76b5719431e5a0db600a8e81f2f21cd1acf9ffda8e830c4be512de9808f07431fb311318a124b62b4df1e088e7356424235e1850b1d26d2f7309f78c487bb16ed8bca196fac3a5c8c348d4dbde31715aee0e14d2cbf9077dca22f1d219333bb2034b6a1b28861102134abbed21c907e806be77f3a81f57b0811f393665affb5e3477cb1f0a10e161a4bf5d209fb1768cfc4f6febcb81f848d4ac21666de8f6fc044d6982a7db008b7f984a94c9bf120175132e5f04d0048605ae58f4d4b587a4b8cd866638481217ca9153cdec5238dbc81e23d7891d7a7c886abed97798cbfbbbae9c83831a699447fa4c91a693180d7e93ed27afe47ef48152c1f1233a23ec8c39e654868b0d76e5e7519b9955a4a8e1493bd4d6da81211e67de8956024e8e00f7653a5a00add733b92990fc6b5d32749a8738bb574c079b406d12b7918d8747b06a1d83c4eec982b86f1cdfb4457a06bad03aa862fb412a8b79eb42fcf41236d10aa4ad192097b4d28d8e470621782f62c2115dffd1d6338f0235b1b308cc00a22c5d613a61772878f2bc1869286248ba8df22b0ba63a05de07a15c58e669c05327ddc9b9867bf285e566b892903cf2ad17a3bfe5e5406b70a29e0fd71ffd2e0634a199321a6430fab5cb75920145de877c844f98121d611888505b42429814062fde62fd38d78ed42a7dd1a94c0acefdaf1c61b36ba175d3a4719e4cff36a45b967c2948cf317c9986b07ff593e1c8627654407261ec1c0e513459af8bf472c5982397b6138a384bb48d35a6b79a5c9149423a9eaf295af9b9dcdae64a125cecf58613fabf4d87239a494cb062d5c6753b74e8d80aea527f4c67f2fe5f23f632a72cc1d8b2bc4002dd260c704454fa843539b90d01b635303e10753d8747b38a8c32a06a24313a1a9ac6c03f065ff5bc13ad2d1a6cf553dfe33c4351d1555f8ce65a933c50aeb881644d0e402e62f37345839afd1d3d4f97afa2d6f61ff7e490affe2581655e91db5195f8aefd3dfffe6612596ca9d9a11dfa383ca86351984759cda113744a0be47974e43943288f113df55a6c13ffc7549543373ecc54fa9e297685431f5bb608da3652ed86944fdbe8ddf43af646b87590335a535ff46aceb5460920ff197b572e91cb715b76103fcafa11961a79f562ca282050c9ec6ee3c801163308432bf1b1d8a5159ec3f341b8d3f41b582fa36d0d839201550f2219f2f6943e74486571051894e6454bf69938699d1da53500f59ea79f66eefe6162d99a1e8a7285eb36f44de423c959a2b717104a8238641dc0cfd06e55f5f8a6912129d40b0d774a63370f9a1827c1d146245b5a45d2b35d7a238c4a7636d492c71252102338b9508e3ad036aea28a61f9860a02eee51424567372eea4698da23a6c5b29c76688c6339cabf8843b4abe73ff7a1ad4d51880ef263d1bb5d5ac0c0fff78dd3961c5043d11163190aea13c68b98df2ca127707c374e3fef59d7ac36b74359146a68326f55d4017b9e82f9b105ea11479089450c8d94a99efb10733ff5ade1f62b3ca2c7336b4171db68e55cdf8115714df69ea6c6b9da505959734b51af822b2b2a8680d11480899280c4db13b290dc08fa9818c2a7df854096a0bb23acd0b7599ec9acfab0c5bf19b851d4b291c58776cd1aab3d2e4b652c71c47e30254c85b43e72f214307743c3b7337d9ad2c1ba6c17219c00d4d50e564c2c7b31c7eed6b58ede1f4b691ec27a2d63f998ac83f54aca1b9381a7e35a709a5c601213736e5ed4242664140d03d21252c066c862979751091f54be60563fb87c50261bb02b41ae5ca937f2b71904bac695e11ccf149231a66eeed7afd56bee1304c2c4c0868db8e08435aace174bd95d68ba6d6b961dd61a042d74fe604002dbd601eb874ea1ada0efc9a71f0bbdce6673f4d0d479325cf725f695d173cdb3175908821d46c95d69721241416219ea45f479c9a079a10ef7caaafce6b0e5550c367cc369b05084d27c40c585f85fcad256784aef4674a95f2ae65eeacc780ca88d5c59b93a1b9007c040a407e621e1f03326f54d87dd6c94e7936b93d6c83497a22b64921635917ff09b38d666a58db4b4fc0125de676a86c190992fd0472ba28a1c40c04c167ee33a723cc49d288b5a1e73a4c9accc11b7b49604e65b2b1ea7974899225134c5271662bc588f5041cca2e81605d4e3f68ba4d85822cd8b68468875d71c4c432ae674db8305cb3c448b487f7225f5c105ad8d41938852f09d45dae89fafe235c41af68d94440be6bd52baa3dad7baf4f5af48cd65dbd1091d03591a322adbe6534284107a01850c1b2290cb9b2c979a518e55bb9cbc0bb5815cc62db729e84244e8d23574dd85e8d245d1352e6bb142476054e8382a2e48c5341c6bc51799019cb8dc080094e6784bc53a4c05d1541ca31e4204890e6b30cf706c0bade5c96bfbd616082550a493f1f94598cf5545c68caa3652680782a716b4189782d66ec9a5287e35c76c8caa460cee9c82cbfb0865e34313c6d2f937220dd57e6312876842a3ad17187460b8390a2752853a92fe262414cf677a7324ce63d7b983d7e847eca33a720b8512edd6f20b5fdc196aa01ab049e7fa6673a8bdedd0732c2d754f1a9d2bcd4271068dff5f0c9497c25531bbf3b5e758f9db509bbdfd0874e376e1e8f60e21c9c6d4d4397d2e2001a2fb84d59915591cca9be99b7e7920ba5ff9fc9c3201c8f0a775cd91040452fbb8d92bf74ef469b9ab361e00197427b35ef8e6035641b8bea77f5abc77649469598e4deb3458537a28876c9c6dd369fb81878cae2436771f8dfdecc7f7e23ebeb2a360692f860dfbd17f1466c3d14fa99879537d334aaf622b6a7a82daf0c37aef36bdeca4ff0a5335d53883baa45f2be7d342a373eb61a0b3d84b9297a9cac643884c398bd0c7ea645ce097de589057a88c0be8c08f49bf5c1c7554a43f5189d60ed49c12030fb7e4a3563621d453c2791ed3137add191c6a72b091c1323ff3d8d899f09ec5d9fb15bc2964c7e8f76de93fcd7eabfe71fc9fb85f81ef25ed534faf06a78d609569ee0f026cfe5fc7208238b6e3cd197ba217c4da3ed2f5407af1923d172292c456c640b10819a3e3286e923cafbd2b8d1072bef183e4b8cc42781c1ae12ffe83f87f2d7ac636db6e51412136caae4563ea5eb47261f55b6b1c58cef7b1744718c699d1acc0be61ecda18e47298b988495b785ffefdcaacdaad207b6833ef67e18bc28c32b5b3767295e2827bc2ef713fd8bdced73e4ba29881770054ae909fb993db56b63af88ebf520b085b2507aa4dd4c87c5b9f26f0ee281317dba6ad4ffad83aa2b345b1a3057b16be3bdecacecff0c396358c4c96bd240c08bd77aec748bcf33decd8b3ff675f5ced2b7fda4996bb4079774781a4ca0cb75b3353786e2dec9fb4b2a10e2448d9f16263ff32be0acdb18a7dc0206ebbd0a7a2fbbca4d21dbe05acbdc9299436639faf57ad728b566159643df0e4b8886831e33833f1bca9437c2a2e82950a1fee0eb38040ee5c832a26af03b3da1433c02453688cfa0f977e3c599ae2c674258e4da33755bebf83d693188acd1b863798906ea159702166217000661ae0d336b1842a0522ba08ca7e8532c5b598b511b2b6ccba89a88cb405dd9e4f0e550e7e17aee3839643397861635a91a5cd22ee3584f041887921605fdeca9501cd513381603b2846d5114e93c3d550f85b50bb36e6161933c34b73f5c65aed297a7bc5208dcb016597961ce99a54fcfac136ae81644990eb764435bb5dfe8a76bbc831cf2d9863b5dd2eaa7d364cda888c22b20be3c90c17a3d08b2790f12802b7e0b7a25c3ce8450a4c254597d0061176728bb3822b39faeb0c4799116f7bce0c090ec195549a7777154aed2b4df3415158d9b54cb6bbfea441c9b900b0675385d177d2aae6e49e597189400a94a07ce6c4a9ef54bec2d0a4ade5b07db344e28f61937bd3eb44417f27532e24b0fdb41a519a7e1c5eb1681b99f065bd2dae9edbc8c7d71d6e6f11521b0ec3e10f9b35b1adfd70c5149ddd5fa37abc412f91225fe50c61ffcaa857cd105351962c14fae245b9942fc512f1c4c1cec3805dffea236f4e3c81d0e5bcfb4b5e848bc52450b5099a6478837fbe09a0ca8d274570b930fe44177404e9357b22804017dc7e1a60ef0cf3a418cb4fc04f3850d0fdf546e87454be49e46dcacd043147f0af891fb59813d3bab327f448967213ffc8191c37f826125fe890889c106772c88cc4b71b42676f64f83776e26509e5048bf99ee0438334e504bd3313134ce8d14d034422ea2ae5a6c18885481db6eef8f36308281284bf1a43276f9c1f16914fb249f4d2e51363a1f78b049b10f02ec1df4668ea0341f74c851b114cce8db46f392418c405e0913d7c05269e20e54bb1e381001293012f06fc6b04a0ccb2e9066909620edc3f719f32a8823ff45184ce14eadadb47222572c246e1a5203dd1bda51374cf00917a4f3a03ff8143445faef439a57c0dc25e82092d86f7dd827b90ad010c303aa4bb0428572c843807c7eb7f5b3084984328be651519135620cbaf1054587c3bde8539d82feb9f045707f17eaf062c23097ac437e4334237b43456ddf19268a8de0e9596ebe6e71f06e818c87fd5e6944caf8891ad4aefa1d6fc0fa8991c4c8471accbbce8fed271a4e3103a5bf355f694216708d55b5a4a1af0a2a605f34dbe1cc0a29f862f3c98223c7a5ea4db5d9358f2ebfb0327fd53a0d06693a7fcd3b1d1a78ff18f60dc4e26f2b0f8199ac6482039bbbe4f2c8598a4fea455fa94faf3689c72f8a634ec4c3e435e6a8d8b1f98d8eaf514b5c8cf0b159e4daf401a238812034d644786aa54199d770a0b7d4f355d318b516a0a7336b03a2f5e0d8f4b3b3d20a287da98bca3add289f9b0635c657d01a9866f6ae6414470e1a92bc247bfa6964d38d0bb5d60858e55347c67a76cfb7e3f5c02b3b87d3ba427592ac51c85b5240dbd0f92b2cf4273ab6c8ff1edf3cd0d23ceafb9ebc1307186977eef8b31b4649f284e0d51b53863d145c0d1d020abf49cef4f49b43ec8620c51da0c0452c00b31987861ef32f41c4e8d6287246fe2f5b4d2f57f3e51ea6724b6f89d7c7329792c0755b8a1980951219472ab4d8fcf12f140905f39250aba0ef101c6714054bf5510cceb9cae00fbdb5f24168eea8c2667e16739ceb0fd996aa88ac2f17aad8152e6b402d699b8162250fc4c0838bc612ce609daa01247629081c1326357f1713cd2d9e45b3c92a293d5d0ab740251fdad5a173f837bb7eb435e44ea7213ecacff8d14513d08f37aa8afd6009aaae0c85da92f6ace9f641b94294a4d0bc6b1aa46c0f373126474bd2d03d8e7b9b7fd601380c87e351d368fd4882146fd06489d2dd18cfa663d28886f7f49141dbd55f9ecef64a05488d7cfe1c899ce44d42fad4ccb2e12ebbf2f526d109d1e77f2fef74339ffb261d36729396df661b25cf44304a7bfc81e9892c224e189c069da45365c9966abe8b00228699aebe74446aeeff77e81105723887940de3990a23f383c58e2784d68f8871c90d43a2e03f77030083e9a6e0f0470c4186c103a31cd427be5b80a8316386c59d8001b88e40a69fd3b6bdd1e639481512ec1a10e3f2289fce648ca26e210689f1f48420887cd99fd0cdd022bfd0f9e4419dc1a8590357d80a444c832e099b3e2b3d10e20bba8d9324847b34c80d50478675354dabe433ba8b298c31ffe8059f25c6aac6acdea9e11f54371d73d21817f6c699afd3b4fa0f473476c30648434e39d8159b1518fc8ce9dc3572c2aa1651f786e4e8efe81eba7f44077fb113b9cf9bacb9c4dc0620f745b9c10069cfe00f9b7feba58fc806dae02c819243e58f9f165a4865248708318b6fb0103225c806b1088aada03eca72ec04d4a55ff8d08bc2360dbcc1f367860572d72ea3fc682a546acab578bffc0b031cbef15b7beea751062806a1b0007b078369dc95dfbb0d5632cfe0386c9588ae160fafc9200397f8801577d50e8f17d54087110dfbfce3522e5733fa53ef96f29821a7fb81f6ca0e8a8cdfe61fd1cd7071cea0af841d3a326526bc6399cce161111007a1c346c0eb006676300b00dff8e7fc004977038de93392aeb31ba25c2e132898fa5028d7a8bf183272a2dd670a69a7f05e987269077c0919b640b730c7f464485db111b1ad2a2c4f9f4834174b5ec61717f88ca2613ab6bd0c546d390a7c1657dc493c05816eac8abdea7d3b600fb0c44d5db23f652557673c706805744a7d6ec4f63161e279c3772bf24153f8f8e3b0e5b8674bc56bb9f1f1ca31c127c4695c5160245180fb810e4691b82a1e2452c7249d03c3ffca4740557730c10bf7af8d0811e9088c19531175c77fcf331b56ce0136ad9f2e93828711433b375bad54a1aa2d36aba2ece0c1942b50bf62133716b2557b88f8580f93ef6dbcac187906179df65a28be3964d175a5c6a038a0c5f975a309a514d8b016d064300769c1dd6eadad48fc022cc4eec8d78213a8913a35d076a8e55e231bb025954413456dd7f3bf55500240c7d4b1b1f6985a519b0f6a8567f2348ced5268e942c486970a89999dd84104288442eadecde01fd080609950937abeb665f9fa94bcb7c20d389828621ece18b165c418229e47441480ac21914808113831a2a5ac082245213f8118330b4d045133e80410a1e4278f8e2155199f6d73eedbab22b8c2d8fa8fa55cdf6da2e7efdcb09da90bbbe74e407721f5d0ea19dfb10a18f38fdd991feacb6a16bd742fadfdcb557bd7292dce5a95efbe823fad1ad56699a5ec5711c37bf5d24da718118615adc43d7a6847176cf5afe302c147a0cc73dc4697a4489e07070d76442d7f40af7c170a1430ec3b44a7b48cbcc6b3b0405969ae430113b2342b2c81a2a596ec56eb324626b58b6d7225781ee9a9e495500ffbbdc55da39efdaaf568564400f7d2615b91de4de81e30215463b17d2acf9cd6eec1aa6bf1ca36b8f195d0b9d2562690f1da6aead693be4a91ec705e4a9fe831189b48f42fa13953f2bcada478f099da459a2873ed2ac1c9548afe89789aa995d79c95de5aea2e7f469d76ffa7657ed2a7a4d755378a2bee2f29357449bb9645783784dbb3e5355b3aedb5ffd51ab3f96a6afdbc764d959f6fa933de41d13158fe5fa883d568d699878135590c056b372e659f6d7af66dd67d7aaab3f69afc2f4278fe97aec31f51876d6f6fa18ecdc39cdd28e65d7b46dab988d3d7695d5dfbcfd754cabaefd7595bd0e53f5577ff3baaeecfaa40e221569604abb88c427c8537cb4d189369225b4e3e30db4916d18e3b1cf6cf92426325bec4bb6240950c40627da44abe14449bd8a37d166a2e205b1192ab925685045a3924552ba65f9935bfea4fe72d0cfc768c7340bbbf6a95939ac797a98d2585ab8fece96ed75cb6a55410253483fc4f6c1503d4fe79c496521282495a88a9232de50efe352510166e55c4cbb7cc5aea2ffecb1d363bf5a35f5777d1e3bbd4afb7cad1a16b55a230e95880d3756d22e935dd378a22a961d729ab65a856959e9e7a1cfe505940a68fdc0a9f9966dfd5849c9d7e0d48944d156cd4a6afe074ec9d38f8ca01126f417a9e1f084a00d28eaf121e2e168df481e74fc6efac4225ce018215d66d3b95c725026f9964d8e73e9a19cc383e89ff7511689dedd13fdf344e700a4413b107f08b1e9352de2e0049182a78a9f27e0ec08e9f12162eb11223f5efcd45a2b91d9128144204422102211480452b3208ed87f372e1175608033834d230e4eed519f3de2206b76e4ec23f75d0de3895e334cabc57dbe057a2acb3c8448d907d375a39b324c59cd84bea475b4489d26d13a84b4cb489f4e5a26a75e2674a965e443d4feca9312b08c38dc1daa67cd77efae9aef5eb54a3ef4171939ec9b64f121fb753a7335ed03107467af5fc59d459b7db0877b6babb8edcbf4e17adc32b3e4499f9995a392fac348fabb971f9df561fab357a9beab3fab73cc931e233ffa3cc99e04479bc808a21c431994234ff49928daed10d978e64a90135483b025e7fa8f9b9aad1a97942ca5e42925634beb874b0abfe6a6beaf2e05d4dc14fe8adb107f05ba51e392c25f89a884b087135f84a1c1a1b1a174d6d3c79aedf431c86c29991e6d4c1e79aaa0e901cdcbf92e4b8e9b9cf4bec1140576540072016661d35873044e143e52d0dc34114467e72222595678c7e7093e12efcc961f248a9ede9d4d7f8034e8b53ab22b8220479b284444d1cbdcfaf1148c065875f100ab38824d69686e8f7b4d671a664e790dccec0b679856cbe4de5ba56fd7220db4d17197b93b96e3771df89ffeeebfc3940ed0b97f8fe1fe7567cd738fe9fefdd32c994b6eca2437c9a497b2e89a6749177df42d7b87a37bf683e1b8ee5b86292d9a324c5d386a8926d12e240d676b0427aa25d2a7892a751a94bfebde610ae7eef831dc3d8d7577783f1f0e883bf6c8133d8e28449ee853d8e35221286870912b3d2968970f791f40dc5d0f44695b784578c3759b27a4b16d780fbb1cba2d5554708f5dc73d3693d2813dd39fa557ddd3f922352c85ddeb2a410ee64ed4055590c0ac1c7b16bdb2dd90c371ab55f39ad5222344bb23477fafa2bffab3aaf9cfeaecf72cedd863eeb76f9a956959feaec35486294cc389baf2d7a1caa57d803ed7116c7655c03cac5f611589d2b1669e66ac59998f40ea6b6c429eead4b5d6479c18049f7bccbcd42cf9794eb37254f2933523876f34127d2291d9c2d2c2587f59dcdf5fa406e791ce9ebc3e56d26bc9eb65cd6c31798d45768d3fbbcaadca24e449de7c3025391e70eece65d363e4605a43cce30f21cffd84e4a46b23fee07104b1250221a26a68afe214a13845a69182c49802c35b2302d81299107d6a7c208deae3e37a0e3d2e7a411ff75fe603d36a954ef256c9498f3fb13e16992df2f59108b47177add527e5079e112736016d68af8f31802df10710555f4f845deb6bad4ff981657dfcaea3fba7e3915dafc3f4f83351f52128f00783b943eecbb466e56467cd63cd92e772cce3abe6f133ad92e7bee551e825d9bb468285ee65d049b93b04bdfb07833177528629b86f869b84c38e349c2891ded10a6938eb5b200d270aebfa96a775b43aadc344d5737a038166aac44f6857db3ea35d855dfb752dfba66564667efae356cf430b02fbf6988c95a3d29e6d6765c752d8cd3075e5ad1eab3dd4efa887a9d7512f7b15f6f95d67dd5ffab33ac73c76d53cf6ebac9c4babe6b15ffdc2c2f4ac31a57204969146caeb0acde4a5c36b3ce467e655dde7a596297dea2fca98bcbb7816d1a18f3df451873eeed06b7085e1102c7e36bc62c321589c606b736369c54e7ff79f0a665e83a68f9284d8893da3d34723b345741a7d480f414167cee101a65adf4d9719a634b975f9bb964d8f1c8e2fc74caa3b0f33a94ecbcca4647254a677ffaeaac0157c764090eab44c05aee0b34393325de698d262c9490eb9ef7ea6470ebbdfbd42240b4cc2155358416dc43ff4d80bc97235f1c363b6c424289549248135805e6483e3e3bf4b0a8263a809389ef3813d871ed87380f1293f30dd3e28f5f15d0df3995e8f6598568bf492b74627b9f665949bf2c94df27c294b9d4d1f7d429b3eeec85f22b1c8aad41de5aaee285a26e75e66befbd52aed275a467eb9bb296b37c93055ca30a5559822c93045ca3035ca3025fa606c49f64e92b79332fe2873cf72e8a20cbacd3cc054ab85efbdc57d7bcd8fa901a706460823a5c1b45a43689856cba3ef748bd32f1345dfdaf4ca278a86a030a9c800c7797910cd68a64a4f06f650fe3e26de6a16f6f8ab59392a162cfd830157f6c89ed922e3f5d24716992dfaf5f267b6a8bc7ed2cc16001ce52b4964258dec5a67cdaef30879aad306e5a6cbd84e4e4c47315d468ea9efb329329ef218fd4fb3bceba7e8b3f0656c875c4797d08181a4c10c340d07d2a8d247f64e7f5cccf20892883cd5cf2c911051f554366157d90369d4879a60add6fec58bb0e7c1b3546e80f1bdc7d74beeba66b798a3143db27f9c8641390f3085f2981e30ad1aaef24d7f39f0655c8777fd3b5bbedb707bcd725f0e1008140ad97038be1ca57f5795fe69991ced32f8a56b5a25ba0d5ac6bb08e732c9f900c87f0d39c655f2c9351919a65262fc24a75ce7eff0fb60504c00c83055438629950c5332324ce90c53598e1bbb595f4b9a181a4e542b45c3598fa2eb5b273afe7c3a1699a87a938e3eb67e2779abd502bd74d25badd0452f39c824479cd9227a15e5d344d5fa924c92759448a7513eed2aed419fc7d93bbd0aa43f7b91a73f2bc2077d166b49e4b3a2c7e08b342b7450484b9096462e3e79ba864c6630693204af4b75dd76d063bc779ad5ddf3406779df36d0268a911781360e04d29f060281fefd45721f7602da4a26d1c80473c7720e96f7790d7fa2832287237be4342b0706f434a4646652a09fe498fa3236cadc478fd91ed2aceedb479a956198adc7f4a78940f71f76eec3be5dbeea1e302d93979ee9ef5ec73c771df2dbb1fc5d9d83fb54618d0b715db77d3022502c21218d44a10e84618acbf35b96ef30137ca0afc78f22bdfac0161de615e4599d562b2b971d22799ee7d1733c88b20ff0d5835b48f415de21d157a51d0a1d8a34097a791577bd0633a53948159322a61883401844f1e1af5fbf9aa6359aeb218410c2cf4dcaa393e4f992bc45af99de835c8ed13d910733be97f143f82310a69ec484e4601feae9b50f6cf87b5aadec95cbbe5663d7b497d53ef000b30fd7a98ddbbd3ed4fb70d9bc8a0d8874be4c0cee4b8aa4606214fa459a357a8c8b468f7196e89f3005125d3f6674199a158395a38af1d159bfe831e6173d26c6473a87e87fcce831628c51089b2a048918c43ef2c17544bc39890a1cf202c3386769c3e86b73cec79b29e393e413e5b3e4337f9666ca344dd284134e2dc334525121b9ca4b2a24979172141d392cc6a8cd39e79c73460d9b734e0cc3b039e79c7062775e64a391c009678c3a07b8af0634fd22454f796b7494431e515ed12ea3910cad72191f9d54b40cfd6997815da43f6d0504dd7487b9b91831d15f2696b76da351affe6197f1d145595ff418191aced1b5168948f9e4397f7f363d462eb9969261ca848792946c72942c32b9e82f72d7fcc1944a24393bd19fd661a2e65b2d936e99e8926e956897899af324ba3451f32f920427bca8051856ac560d0d34387b8278a210a861f6574a0e07f6afd668235b486ca6988773ce3967d5b01ec932a7c0c49e3fc15560cf416e8cdbc1005bfebb6a8fd006be76096d80b6afe6d64ea18dd0b9afaeadd5ad7d6545a14c210deca02cb187bdc3b06fb3046960a37cb3a801f537cb470dc4b525bc9be678a8324333589acca05d2a39d83bc8fb256febbeba6b1b777ca857405cdb3be89a97b79521e0d0577487becdad37706d1f40f77e857e890eb5e61d5e5f9d6c0f6fef269085cad36c29ddf37e674bc9bd6b35e7303aad59ee92fcd5cb979c247f557f39e6491e235ff27992d1719e7b947bc430369ed464c31ca49732498ea5f922bd0c3acca08be0412765d87d77ce6ebf0eca387f5f8fb829dc5e865b24058eef329725a491b3bae131bbe1ef05319617156aad2cc0dfdd46f0e30f776de3324cf5609fecdc63b46f9a6371cff417214e109b1b2db3c10962730306fe2c366ff2187993666597379167699fa7263726719fd87bb79a8ecd8de93b3c3d263615e53423299de2f85861432446ded3ac2d661edfe61cf3589ec57d5ecb79ccf6ec383e4ccb26cf7470d7e251724c45eec3748bf491cd4d133a5314116213448a1d9e1e6ba4a708164566cf6c9101a3078c9e4d2f65c0b87587111f1fa6ad8d0dd6a3fe9a9c0798328169b5483eba297ff7a6c39449d66ef298ec26cdda9edd44b372549bfeee4d2e9f9dc5e9edf32a13fd61ff6e76f94d7f98a6f4dfd55ff6188dd33e3bd049b287334c55d0b68d3e182dee5286a97a897428b964bad4e5124c69f25bebb6a2cd44a128c80a8f7a9efe2e8c4b3ca251c76d9a9761f1070c9d2339602af41c1ef0475e06bdcbd8f3401efee8d2f82a9b9668e6674bc4f13cd975f9629e1e9d1d1bd10690063d8d3788a14cea48eeb3dd357a9d461b40143dc57468747462122df2d4de808e0fb9cf6a180f26a45bd9b97961cfdedace25117190355a26e7baccbc87b58c7cf717a9cdd05cc3be65e75632cc44f5305134af600e67e7d863ad831b7428e7419af57d7e2c944b5dc4880f11e953c4880f91b8bda6b391b2d332292797b288111f223fc9fbbc88119f4ffb268948fd6171c738287ff629ffdee5cf6a904e1f9bbfd3133139a59735206aa294a39452508c83a6fc4d37c1a68c71311f0cf32182c50f18201bd9f231e2c5114983d908aa01d9808e00d9c418639c628a1a3ac51437480c52ff61d2c7c77e3925b3bacba36456ca517e925927ffbee59879d0b59c631ef42cc7c877a792fb300d33e535bd557293a76494cc9a07fd24e7a8bacb7f9905f221026dcc4d2935792f65d14b323e974927c923d143aff98301812e12fd48ef10b57cb0d6a1830be702c219cd60126406dbc1d7cfc7d44ffd89b27f911603da046652f432c0e80177f080363af8058c50043ba6e2796438f04894c2888e91a8c92812318e943008c66922e2c0523c845f41985affc56079eee021875801bd88345408b26fa684251f6c29afdf4c07315171478e35f147023045b5119d3b33e50583fe7a4c3cd42cf8c8822ff8e637f597831e5e75a86572a656c547fd4d9978aabf39939a977799f29fd205945215235cf4743f48f5b7838fd8c4a61a088a8550610246c78b0e25253081b357a5bdb2e3e9e5293899b0d9f1271127b5823f7b477a47b0a308f66adb2dd719a0c303246a6ea95fe429dee50a8c37e462110f48b7230db7638b3f681b7210b8178880dc5403816dc839609eea68c5954158a80302914715855029361975e4099e07dabcaeab5e578d39ee79884d786dce3b3fe7fcea538bf19a578c33ce38e3cc74aed0a0ce8e9f74ce9803bcba70f68503bfba6ee484775e37b3e54ac5396178a4d261811e240b961d7ec70f3c240b7778208290912ca143d1e1e89074485272f81d3ede489693c347987218e3f0318864f9613ed4878f52481693437a883a0cc0a1000e1fe163159285c6e1000e6f385c397cb442b2d8704880c3ebf00018c952faa9060314e0abef03d470992d2d2c04c82af074ba0df92a1658c927efe1865c3ab9c000f2a8b48346c63fcc38d970e2b16bb84004e064c32908d4c986930d353c1e0099d6a0a2a10c93be509c4c261d4cf24a8d07e83c630526e7133ccd50b5e4124499ce924f3af0f5089e4ca61d9b3e7231348627d3e88794bc611e28f96e409c646a0ae2cb109e4c26872613bd92d9f9a414802470fc6a740178ba8ceceb8624f7004fd7435824912d004fd74145704659073c5dc756347180ac430d8fdb8112096280ec0251d70b90214475b0676647946b70dc0ed84587505ed96a3c009467682b30389fb2192a2fab60271d7b1e53b100974fee7bd872c99e5c60544b3bb28c2f6c458696b0d64a51852ea0903101df212930828604c6806087c075e706f8ea5c1ce01be4fe604c090d0b5c57a0832b0aaa15be00e40c5f686161c0160d591270688b6d092cb4600ad91070b6042e8ca00101df0d8778810acd0a6c371ce2851d2fe8542f6c5ea02902e38211cd0b20b727db8209ac163e18154850bb7073b918820a2e2347ac0e4a9045901364f1c3040ab4b8292205467686705144178e4c14bc5b1c49c32644109a2c30de7088133f603881856cc7092858c10921645738214555021e6d38c4099c5aaface172037e0b9f1990200c4d9b2351688224969eecb84d96b44c62d74af939b50e3e5ad64bd2295de68c134a49ea02f0850655a29c74442fd145e75543d582ecc517f3eccb44e11e2c832fd067432299c669dbb6711ad7659d8779f85e746290bde80485aaf480e088e9bc42a2eba25334a223d2bce8249148d8035b3ee14b97aefaa293845412afbdf6bae8bce82c2195e0b5d7e27fb6bcfc90075e23752f90467c2942630c5abcb6c41ffccc867a15773cbd284c8d13a695ce73801e44696864961b523df509cb1929af09ee95a718e5ac9f7a35e79c53df8982aff994ce4b860e8ebf6106d0fa402a2785d75e10b5d7bee6a6327d2bbcc7728d4bea3ecbad1a9714762dd3260685b66cb45dcb7138e6b96e4e128610c28b864a23ecce39e9a4934e92c92ca1d742223013057fd5a02748634e3a29a574d249a1d64a5b10fbb6fe66dbc3b499a6ade780ad56577d228934afaeebc22bbda7a95e96d4c4a5975e6aeb15845e5baf2794d0346dbbe8b5f57ae2463ae98df2ce39e913975e6aeb15845e5baf27ea652fad970d72d57ad927e8add713975e6aeb15845e5baf27c42027a5d5621896d9da838e0c07378a1ac096ec52f3883bd892c7f683553f9aa66d17de188f8d3dda6f5c3cc5b1d45a7ac3715c375f5c5c5cee553d09035f43b6449b169b1b425602d83f25bb2f8a4304126f90f53c62cde9bf805c561eb1e6d291e727d6781e87e3dee372907b1e6fdae1caa58d3617c48147bc411ecac0cab82351118798036f90efa901a421af3d758c02d290bf2148147883d0c6b5f7466cce2b455bb81b0830dc828a0ca312d5cab997ff8153d967f61f38857d1e4b96280a1dce6c66fa93d1e42f32fb9cf35a2c71205209ee4846318acee59049cec9b073397b29478ee38e71190e1ff59f3c4c652088d59c57bc2e79c928638c71ce39a7bdee9cf49fcce47c9cc7e6bc337297d4305867f395354992b95fa9fa2269a690c3e171c7dd41879c0ee1eca2839661c43f9c0f280f96371007a1c883ab842bb63428dc215be4205342e489316a71c5d64eb5671c0eedeeec188723c3b430c1c67e391c98e5705c3a846db308c2b6af1c0e7b69cb5e6dfb4ac0beb210c20811f6758a894441c65ecd8037f6dd82cf9e5c90c19e5c48c39e5d78c29eb30b65d802cd9e375b8b581898e796e167d3d3df2ba0b029bdbd4418a2852836a5af578b2d0b3918c0a643b2a005ec046d9934315399117fec558d1b14422c36a547c426aab057310a241cd9f4f417977e5a41c3a67779d101e60a23d8f43a7ae8c1a6dfc143c8a60fe20a26d02ca1e60a21b0f98173052e8214e1d16981648143b0b0854d630f8cc058075b5e62dc050faec0a92ea6130056d86c27c06fe5645a87b78bff03a7bad3d36e643a363936390bdf14510ea96853fc93c77447d12c93773f31797796e998461a69a4a6e3c798bcc3373da6bbc9480c380b1caf792f7925a0efa1d2c80a1b222739076594f141b94b49f19ef2508a7794929c8120705e756408c3a6d7b4b861dba66d1a26310cc32266354fcbd10848831e3b4167c3824d1f69a4596643210fbff456f7924c5b41f989cbb5a71c45c35a49cbf20a880d4b39b778c4339cbf0cafeec6220dce464e7e50b09fe86f7bca51dea5a0e86f3bcabb9f60c7fadbf497e3e4f83128dd4ff05f6606c6c65d04e6c6f42a6e4cf758007673455270a49b40d74a19a644201c0a792f49959090462210f6608aa39824e1d0eb7d037703a51db513ad1f5e1e49143d2e51c9d2c2f16ee2bed9b9c1e1787a7c4c37f1e4db4b27bde4418860715324e397f2e8337dcb9ce771f76ef2b89f944c3d687cc0346c0acdb06996591e3f2b08c2821b186cfa78739359537d96615a2d929bbc457ae9dadc628e43401a47fc6815b1e95b90c6a5a67fd761d2ac1cecac79ef9f8613a583d32cf9ed7167a2e86f963b04058ef46eee26577137e17eb56af49296911ffd457ae7f27693ccbd9447f3de55f3de31ad92df3eb7a685ae711dc7719eb77dc48d442110f6f4cb44ad6cfada7dace44c20e5a73cebfbbc82e8ecd0d868343435104339e950ae14ce2bd901451d9e2a687a24e904a650cee5ee11638cbba7e498f232cb74d2419995a3329d74d67792ef924eb26bb2d68a558c8b1d2e767ee022b358479365d7300d8382a281995d7bc0b44a2f39c975c893aea57c2685923facbb0abf3bf64ecbe4605ac53d45cb98cefde433294dc3342d33e9ec44205147cb30bc438fa7902c571318673fd1329ffeb0cf9370efb48c497f98feaece314f72953ce9f2a473afb65e23510854c25ec7d14c54ab8888cefa151e49543d9e2d5407314bb5255b5e2f235be8e7a314b2656a1b5f4f73ebc74a8abe06d36af3ddd7e69d1e3f66ded378c23044d9845877bd6402b471335bbc974680a7106608ed95ec8959d062d7fa8ca58541959326524a1819524594524252d2a4919452824026071d0564722d6e3a839e9243976172955246b9289b5ce5cb6c441b7420b6c41be8c0233af088b558a6a30ea4512fb2c1f241401bf7f51c802df208d8912b7dc07cc71ee201a664fccb2dfd94cb4b181414130d532a99e4883351f528d96a5ddf2a794abd8cdc4ab949343d25b74807dd24b74a1e9246648ff4813688d45a034370c20a32a4eca77dc81e54a279459eec71765999e1054ec14c94fd953faa754859d8631f77ec238e7d0c02533557bf7d88ebdca5d7bcdcc344d977358c601e6716d91a0a4e9482c73e566167cdb6d65a6bed9c35f66a62db4e479eec5f643c62db93bac0f341cc964e7ff4dd61ca9ec76cf1b6778fd9de7167d56f8fe1debdd3acebdc11b225e2d847ab57775b7bcdc405ceac5691277aef6e233ed8f173da5c5283c2a7833bd58ba43fcc820d7ec0e026270c653822d4853078010d477040e40b8ab91da64ade45fef2272f34eedffdb43494fe9e52ba7df7f0d65a5930640a57f448c13383548d3636d188fa0f0a6c836111ecfa036ddcc363950551f55206d2a83f1102ee997508ac02da98bbd62dec5aaf80c2aebf7250bfa8bf185e59236eac25ab63bca054bcf79b96c9b95ab5ddd332dcb7cb74f11ad7e5bd05f7ee2bc8e59954976752f0de7f52eac896183e71270aa94e08419023110b2af66ae39cd0a2c25ec59d5aabccaea5912c2b08463d2259a0135a6048967b825d2f97bf7b972e7f57fb5071ef7cf000539fa8fa1e3cc094f64ecbc8946652f32b977998d2beb980616a3b4c5119c9029d20441176ed3257df8a417010e004b6893bb385c7d2d89a7ac43b7e9195eb323d97bdfc4581b35ac190a7fa2c4b9c6311590369d4d723d006ac5fc096eed58260d7ac1ed9b5d31ad3abbb8a3d31c3590fb7d4b12ac520c01698aab7de4caf30a657a57aefb5bfd75a9c4b8a6ea0419528f0a783bb0f4695a5f616b0decab4764c944419c1ab4805153c910a385de00eb06a8a21a59452d0246d18ab30bb30efc518c693665202bc2a9524cb6afb499cf341cc9b6b66dec893bcae1eab6fa378a7fcbcd1202cf263c5968fd0c6b58dfcf4ecc8e1d8467e4ab023b441b7911f20ec086dcc6de42767c78be3018a41072df0c21842800521782105212a421b711bf9b19795d65a68e9b471eb62165f6c47a21045036881092360b085125841848a9e22499c000462c0f9a204dacd486621026708021a7630c4901c1021899d1f1c0143128828030e8e50911d81849ac184084bd0e2094610210934e820878b18bce00948804113864ec8111a6e1ee164c3215d80610b9f96991364f153861a1b248290020610f9c20812d00081e78713231fd8706d90b0090311459860051262d0050c74963085163610528622b432aca0bb26a0c2dd465b174a48c3cb90051c4f6ad470b9f1824b9864c3215d54015f44e8204fb5c6084738a20233f84021f3e20c341883144ac800c81448ba88718bd00b88c20a5fc8a2082668c10512941082186460c50c7c308531e888c630045309565fb8c119b6c00152869d511521a9051b9418e20a42dc5ce1838417359e172ab8740464a0c29409e17384204f20020d3b2a3facf8c11658104184119061089010322081ba403e800384128461070a5afc80573043088cc88289224ce1092facb079a185c925c11524631043954e10e2851226362226386e1303184a861083266217432200361cd285135d2441e2026b74cefb22471b0ee9a266afee6e02c38b361cf28531ecd5bd9bc462db34d21e854038c6df792d5efb15ddf2c6d8295b9b1b9651b646372c9fec6f6b75c3b2696b76c3b2c9d6ee86e5d2d6b00dcb255bcb362c936c4ddbb04cdadab66179b4356ec372686bdd8665d0d6bc0dcb786b78c3b2b735d086e56e6ba10dcbdcd6441b96b7ad8d362c6b5b236d58ceb646b26119db5ac986e5bbb5d28665bb35930dcb756ba60dcbd7d6be0dcb746b271b96e7d650362ccbada56c31505262fcfa686f79bfaa7be420daf497dee19b7a2052134c196f9a1197b6937a096f9853671b62d1ca11d553b443d8db67e2965ed775ab1f6315ae1b5c8bf72a07bc7bf0d8d7f7b5784f4a5f5536d53fa86c284f33b20630ea8ce58942781523e0d5b6e9489e288d7a244ff487f873422fba7fa0515401d2882ca0f252fa604f39e79c73ce39a7ea003e38fe00463840153038825774d3fb65d8e3ceabefae3efbb8b1bddadf75926d63bfc82cb2007e0179e44987ac29e9e015dd13428d336c9bf717b660bf7a456f75cd2b950db7bb577425936113b25c17a5f033218841b3e54ebcc7235bbc88061c39af4706f8e260f8d5f57a0eb0bd4b0a18deeba15e8f64815b4eaabd1e48c3ebd9f2d0eb8136600c1a1a650b54281658dea0248b70c365e29c489f15214ef20b2f3766e0526322b1dd2033547e521a9d8e8cb09ca2c68c93ca4f4678bb7402b92ff84969843715225081d2cb524aaf8b527b5da5aff858122cc184baddadd6aa4411945e96527a5d94daebc2a393252a17b28cd62ccb28cdb24ae94f2e45a4a818638cb1e7799ee779b5eb3a25b6c8325ab32ca334cb2aa5b874aa46b28cd62ccb28cdb24ae96985c716e1397969fbe874c2275c3af1d42d507a594ae975516aafeb86102a8accd82bdbe844c5c505bb6017979f5c6c50bf0a75b7ab5ded6ad7711cc7711c57b7ad564b2bdd6ab5b4564b6ba5d4da4a2ba5d6da4aa9666b96654af020cb68cdb28cd22cab94964e5494e0398247e5625c2a9dd2cb524aaf8b527b5d2a2a2ab874a2b2048f1155dbb8ce2b618c31c69ee7799ee7d9aeeb3c23945e96527a5d94daebbaca8c257a3063c68c3be3ce285d6586fd4196d19a6519a55956293dcda861b930da7075b3af32edab6dfbaae356a1aeebbaaee3388ee338ce6edbb60417371d6419ad5996519a659552979e2b0297192f3c3c3c3c3ca7151e7b4584424affe9b4b2e2c2002157c81572855c2157c88a10971b50c81502a597a5945e17a5f6ba566adc58e202f1d1630281adb5945a4bb39be95aaba5b5d65a2dadb4da4aa9b5b6526a6dadf88a820655e0def0c6defa81b3b77e3c158219c68f95544e8cb4d6bac57be966376bed76e9adb6daedd6de4b6fb576d3348dd2aabd564a2fb51aa555cbacbd97de6aadb5d9a5d766b53ed65a6bacb5566b312a638d1b4a194b5c8c042aa76d748267cbca0a5ec12b5f99b6881bb854fa4fa79515972ca335cb324ab3ac527ae3c68d7be3deb8374e2b7b7563a5c60d1394b68f4e272b2a3368d421a2e47b760f863d11f6ac6c17d843f3e3e4625cca325ab32ca334cb2aa52727f7045f57b5af7a757d758265b4522ca3b5625846abb5b6d26aadb595521b6b1671c6af6a5c8c4ba5c7c802e5e94e54bc945e9cbd8fafb15a38e5ad1c8e1a11257f2ffe5ed588a7d5699fb81c66ecaa571487fb95dcf630e280ddea55fdaac6bdd9a5f7b2d7cd7eefbdf45ed6de0c421af7d16e40ee206936d53d6618616c7af9817d3dfac01ca08511c65ec9507a2a33af28e1bc34ce17f922a1d5022c62059127c8934f153d4278e02f94c22548133849404a730068703c0582de06488d3cb5e4a9ae946864e0e705048f1f765ca0070bd0a9439ee0495800218410420821dc21c61b643c7184943622102c179d3ee40642ca7803c481521a81905b4a4a6984f106f8c905ed4a16083d88e52f4ae927d451473d2509a494524a29a594524a29a5bc4e3a5401c0e1039f16a8042b5bc98a542aa5660600000008006316003020100c074402b12ccbb33453dc0314801277944c6a549c4aa324495214648c01c61040080100000308102846201b0050b7b852d72d16177ccbcfa856c15a7ebe85802eb1b02341cf1e049cf7f3672e4be7c9b0bd6964c41612f4b2287008832d7b10a111cfd06f9ea0f52d3a4a881fd4141bbcbfacdd972747f6cb88a5b6c94312fe119987fac4954f087dc82213fe4f5ab7745c5cface1b1ca0b5859f8c8a006c5cbb0cee25c59a71c35f1e43ed0cadce7cadc3a5ccd398718b857cd21e717c73ea1a88ff4a8622bea4b4cb1ab99e5497d2467eb9f219b7c091b9610d788749fd63b9b8a2e717a9b1396e25612c80968fbed8dab93d3c333233dae7e65d223a888d30edc2e86ed380d319cc1e512e82221b70bdb08b343d380a3758d10ac63da7852b0c8c63828ee864416e96fe8b1cfd1e0d0029858f2795107b54f4574bbd70df3bd6e1ecf6865555495b3d3dc4694a04920b0da3443239046790a4c6d5f6fbbb256a5c2c9a8714dca363dbb343326116196daa5711eaab1adae2fe2f4e8baeb3d949ae14b520e58e1514cfa0c256b7a45144c6df748c099e54c8fd3f1b2c2d8be5e9d36dba4f39ec1af2ce261e38bccf6dfa71ad3145b4a1db464bb36a8a9ce2dae10f3da954adab68fac30478a2aab7eaec988edfb7717e901459f70fd64a331447fb6d5085f325b821ed7bd4dc9d2ddfec0b0f9752e9e5ed7d1f995e99639c6769f3513270d8df9275be234634a068736063fed4d514d86abed2715991cfbee53268ef6715c7ad7081ee33c652370becbbe7cb257ab21dbffd50a4900cc757839fb608f8db99d54eb9c62d8a4ebea53fc283489adc1ec857176d13cfd87a10618abac8797dccd5cce09124bf5459ccb3874840747139152298637adacac766de6b374a1b6ad6e31086ea7040254e84dbf8bc65b4f43c1ed17434c8f036bbe928e4be9450406ffa74d965841b56519296d3be92b0c300d6395170eadafb3038d3c834a29b787f46a7be16750ff002502642c09db0fb019710820056f3be0806dd70c76b0d5f69a8624e25a96097f5370e7dcb4a3b6f32e829c38737d3524d6cd374650f5523c0ca06a0f1a6465be77e65f8dd2513f1db100b7a2384e1db683f234d48948057533d2b70e1e43900c52660781d6cfa4ac2f730b030bbd35fc457ca312fe4d71b7a6df2083d4fad4e4b4e40e355f74b0fe8e6cf911d18446430a543202f1506f9d745585ce61b9dd8b0d3826dd4b8482d438353b2c51d700d49104d099f1c79c96c026cc71482d75e5694a5d55d6f8656f10c8f9523a1d75196617ef8e3fd3b36ceb3cbc88bbd3d7853db93e80d1d8e4273ceae154f6994a73dcab374aeb1e4083ee8094e64a252d95ab77183b9a07d1013c269abdbe1c559dc58febd61858e1797d1611d79e1aa5c2e3cce1f88936ae906ca5ee7ee219dcd3b81cee22ede8a56cca33c84aa3acdf25bebb049a4ae80c1e02ee7d108cc0ee125dcdd2338a4d2a6acdbc43fc460b2bfe5fe695452edc56b8d0abb9cf2fd61aa8029c5cbd36fd2612f663e45f742862f1034b7703a8e30c856f362d5332f0865d837a9b15054e61ccd4d83a4b5fc481b0167ecfdf5565e8ed3458b5038824a643d10c8136d2e9b04f019b7be0dad3904aa91df9a2771f36d79c2c80720df310fd8a3d644e4f149a5a040f882c782001de590cea0cdfbd966c24aa7e52494278fc8b474571ed2c612101ea3355e70ad3c1c8fe43f4498f69cd9d021f29c2abd1bb503f55b79c53f62704496b7b58e31b5bcdf15df302eec6ab2ce30a7ed5d39692200790cb068da0dce889855f168796e469662456d512dd326d3cf528fa850955828717904ee467ec8df6f8d5ac5b80bc8aa472bc9851740bc67ae7f1826fb8314a0cbe952b93eee394d095bf2b7e87f60d472a10880eacdc91655719b8f724e89b6149edc772e1d2624e040f8f6b5bbee5195a9911b2811d17d8b51fa21e6bf17b44190eaadf2a4a6033d8243e2669a0401ce2bc80ce6ea55de4dc0e07cd3e3e0823cd6d25b58b63ea1eefafc7945d335fb424ab283591d0cfe735604162bc9d211a7a39079af1296043ac1bdf9cc4c4752dc14203bc496a55b92114d00c7e39d2c5e440989667fb7205c3dfbf2963780d589947a7156983151973014ab66abd25569ce83f8206aa4f385626611fa4174470ae6a434a650cbd8c555c680be0fe160f0d7e1dfb64098c406bb130c9ede8c95c9e02ecbffc2715e56206d5c305046c2a43adaa5b258002c5906d3a97a380f61d2b631d0c59b4f70152e506e636daece96079386beb66a588b70daa24bb6952fc41e88e02315a198265d62040f392e6a1023a98cf396b2cbb09fe0bb51615cf4c5043a6a9827d3d6d10e347411a2810b44f8dd7fb4b372362216af60cca3d149d476d969015372f6822eb7cc4b260a59f392d95fe8a9a0c523cfac8cd5028dbc6bfc4d2c28d84b62f2e1c52f59e2936e9c503f497694dcbd04ffaf9d6850cc2b34ab286a5e691f233a24f6c4097eab88123d11ab904c101c9cda5372cad2d2587510dc30dec82f1045814780b70a2e3993cb9e9426c86ead45d740ec1e505188947a695054bc5227c8e9c88db6d40932617c906126f66c74b26152a8f414e0ba13df14af5122c5499964e88cbbc37e6478c10799e6d48f4d40f1ad9faebe170704bcdba79ec0e0268c83fc5b9cb86212eae97aa14005c808a11260c817358089cfdc63d7032a5b87cbfdc2325111ac31b5bc6fe41bfa478b3c2993c9c7e71f51a5a8c878422f85a58b4482a07811b2d7bfa0f26fd9949719e85313d23548e5a2806dd4b12aebc00be1bbdddfdf0f9eda963f97d0cd4035036c15816dec3e77fe8bd679af4e020eee550cae59325509205247ddecf70226ce1c146efecd700f354f996aeff0701f11005259a1ef83ec38a8ad069da0ccf4eb0209911f694977101c8d08bb883ccd5f4f44e1efc83eee81bbd53af1b718d0d450ffee29bbcbfb7a34be6d9c850e52be61e1ebf002e422fd85d840fb6163c8e1ec1e4ff0ce5c14a08e16363e0e0d9ccd5131ef3490a8f7587ba978824fb0fd0f7d9151f99b23496155bcd65860ce7dd7dcfe62283879b5cd585abf65d0849964e90874f02853ef295c7a30c7c2314a06aa591f49899da98b190b71474355d53c33fce1cd83e5f595ef928f4b8ff204f3ef6eba78b17e23024d984465ef2481980183f04ddaa73c105537a2f3ba39e5506532141b7d5bc025bee691cc45a9b87f469fba82543354c895dcbb372eb91b3a4d0f83a886b1605b61293621fa7d19291a255806b6ebbc24ba681f5ff9d28120411621791ef2350a36ccc8e013ebe6b9f31e872b605e8e4e03ba1e21fc76b8373764bd4829fe60071beff0282006116bfcf5daa6bc8d0106db4ff38944d924c9cf93b2100b21ceaf2023c7724397a36bc8a41affdbb802b94ece0668c412eef9c183daa15aa4c67657c19814c0e00c5bd622d2563a195188b09410421c95459488cc86430a2f46d451241ae6f69deac8b64ea811182d4900504b9cdea7c9f49cc601d396452274648b19433de94eb3bf04a52437b25458608930397b8fa6c94cea80dfb0941987ab4060cb2a9d5bc8505556943e2a51680bab128f0d8d2a2ad2be8a50aefe7b657f86c95566530abe8c37640decedb79c4263e53abb2fb9a614c3df6892148ff6ac84135a684b1b63184746894c1a1f215ea0474b187e4c296a61b706739733fc80ac093b2cca1f5aa4e9104791988a7cc6e993370eae80ba85af50b732434f55eedee8e4e0c0bc9fd4833238cc4cf01d92bea433aff78cf20e03379516cd1cca4472cd79b9ce0cd64a43231128cf69809ac06d3a85a10c5364d0df063909c5c056504f67b8edc23d45a44484cf08235363af02a201cdb66df592c5b248a5b3b391aa0c103f862c04671a434c230a36748d15e4ee333aab7ee8fd1dd4095fdc1a9fe698c3b548a788f5e7998e475afc90dab515ff6dc43a7ade910292d23cbeb931ba134fa90b64ecb4f7da6d5d969946f4be1cbfa79f2690cfdc4ecbad2a0e63753d9d0116511a9a36fe21eb04b7745e3e1a365d2afd7df4abda62012a3adce91ddd2454b51b32b233174f6b2fef3496e4fd60937ada2a6321951ed7a93fd1073e8d1b2f36f0c32ec6ea2de80807f2d23e1624160f612b2db7c823f3733ebe1f4d30dbd4e53d9fa9338f6d306eed71981556a5d31a41a3af9ba4edc25b1a52a00a8c63e3f58a4ad3c835decbd7c05b4bc13b012d13808f6f843d4df99a0150e82f6bd54c1761058d91a8697e37a61e70ea2e4d46e1e6282d04fe09dcaa94b1e7e5d65467e6a761a50374b8fa00f70714755e5082e132a906ef117b62389c1afaca726878b25a855d7af1effaaa7d0de5d1ea324b9cc7b0b97446735c43a5a94d534a406b90d534cfd71968e0d8bf7fbe0da013be04049df76e1ff61c330871b1d2452e83caafab43f1d04a4fca113a0b17ff1495ae2502e08950009e91a5e1089ca2a75f6e68987c569a811ed3144ca4639f177c74c38c618e570c8802208d4eae27cbdf4d4bd95207850e5b10ed579fb27214a6f62edf353b0e52e9b277f2fbb3c6b6d7bc1dfa78e127076e18269ec2002e6c52b637c662de88f79b73aafaa0984fd5314fd81a5b65f3a7b032f4775646ff6e2b830fe21d50c4fb81e32966664ab0d73512c940b5abaca0addd3edba0b4601c5304710bb881f63f69c741a83c464ca074713bae89218807952ee712ca9fdc6315b73a997829421c276b0a0d6628206c1aa0a12871b880e2a60aa7c9771c80301ac7cdbb377b46b6cebc39c1a378d27f39c702d18dfe317b2ea76ab033b60806f39367de12004aacba460ff7faed70dc96e7d0b03fa8020dbec7655639407c7460b661c6e92c482df2474f1f6f1074c11fbdfa1893d56aeaeae5b7af1a5eb20941910f9d026a30fff075ee6c429181697d40ac0a7cd1e3f0bdf561cf0606100354b2808b67fe72ed156d5b9917cf683686767220ee324b0ed305f81db51403e153d66fe6b484c3caaa87d7eb792f9c7bb0c8f8986b39f8386a677392abcd7525e103d3ebf121a0987c1c81311f4da4b85ee11c100d9415f47ad0fa9c3850cca2c4807cd889ee83b9abd8900b2c6c58a4d6e4681259834e93d5ff08674bf9291bf94a96a1ec6e7c7e43ae0139c918c4aa6a411989801b7198c0a0f3fef6c19e73061013f45213ca08123637455787dcf189fa91de7a0176317fd66e7bf4bbcdb0dfb736aecad21cd07814fde5624d81f7a79d6602ae8b2947138897ed048b04dfc108dc5919126ff72da714e5a1c4b4d3b05bf1fbd0635b57025ba7cdd9fdb0b2356218f43a60e7a4310be511237885f04e1de503f95ffc97573ae19ab1421348565c4da4cd9d63db1c689d8cc18a74fab59a0cc5a8ce0afa6262f771df288d294920fc74c1b6c5cceb5808040206bff9ab42d656c3945ef735e1880745dfc65ca3baf552b7730468005e37227c881a4b9f94b1c9ca709e536f58d654ecff336dc011cd89b5b94d07ad8f83edb9c6beeea9ba2410034374094925c67310812f0f2bc02370c1247b57e6dc2b7edd2b2b67b957729273861f487c7d001d164967f07eb93132abfe7ae6fe2ec16341c2adf3d27f0a045228962c5f4364192203b79b245c91da88b01a76c873d2bb43d10d1a7eeeabd86f4e28aacad56ae22419288870955c05025384c2585a99d10a5dcf24247a416ebd4d08e32abf19409113238563aac693f44b7b0d114430b31d1a495ac1b33d336ce60dc702045ed277c38d637089879886b7e2d10f5d5a564d2ff3f0c8d5105e3cdc23118a44d538fe32274a9c0586a0c82c81ea5e7ad76e766ed03ee1a53c56795f9aca30d43542462ed4620f951a165dfa11266ea93a3d96cd1818017ee69ef44ddb9e959c7b0705de269d5abfada1dd324effa2ab1b923d51ac9f75eae2a6a3d24b0b0bbffe3d012e82ed36e14cb2d12d0f92fad567038bf3e213189a4b6064322b21007eba61d632c76b06202cf823ba8d07c280345d0ed8b47b0444279c2c32e0ac40df5dad54e1fb0b546f9ac17d76637a73066b494e80b9eb89e3353a03cd8767b4bdcd1e370f3214d214ea8822aea093857dcb50e39c1b3f55807aee18820ba897d4696e0500519f7f4563a3b9e71e10eea54aaa23fab48faf22d5643ca1c9f58a3deaf31beb33af26acc45a1d3daae05abbaf8d1b289ec445fb27bc2371f123f7b6269441263c9b10003f1d106399e33403a66089faa79b4d43b1dce4fbbfdce34238db88c963be6707f71cd98b8ac373320770150fa91e6226863c00c972026650cf8310f4c526257cb7e0ce3f10a4dc7b6cdd6921c5ac5e0ba35d5aadbfef3c001346d8329658f9d086277afb18398846276069d1455a1a971a25634700da92b9f53cb99e0fafb84822e0fa2280fdc7c6d306febe80552a853d947e50ddd678306ea68e23ea754e235ef129b714a8ac8fd3451976085eac15a1ccd364286156be90ac86aa7623c56641404ce4b512d78dae2337b25dac83c9f7146957a7b5ea72f60e6ec8a13dbc7c57fc03dd94dbb901b38353339c33fe15d1e9d0be03e4988681eee433471797e3842cbd3c3c972392e90cccadf9b96e0d013a8227754ecef510f9ff77850e8826b5c4162c25f6b73f3e381914b185a63db7bc1314e53f27e7894e4e19c0f89936b0cd778b1ed5234c8e8827c6321bf35489c5fa7bf4c861e83f0d0b7f10e067d7ded8d922a5461fbb8f0eda43a8a1865a34a150924c478201d513d5b0588ba15f8f85539b3df889231f42c72bc24082669938080ad221fc51cc59a681881fe694f8c07be2dbbbf4f1d50c5eccfb1ef9ee4cd4f8abe862c07340ad49f3dab86c04e301426919ea8eccf78519355a183e46f8dff68a0b1d42d2533878877c4d3077643238617c8a6c836290ce36c4949b03fa4e5889d3d05373565afdf77b9394af52386e3d024546a7b14c85f48a14865e0462923ea509d183d6a06fe52b4d0e40e57ed33f07836862dbfe738eafbb625597e923d034c11a9395a0c8047163430ec44be8c87a77af9f7a42fcdb893d730a58ff6605ab1d449894d13762bfbd1c74bdb1f72feb34d3b477147010e0dda67a6ec75ffc5c20f76286e553addafd7d8c0f73994b9fcff0a16453f056e6c1ca5c659a626db5078420dbed190c92684985d0b174a80a553efe92a181273071cc06709c23dddfcddaac2721adaaa3fe221944470064c7ee6d37ca4abf19108b6ed3dcee7805226ba3cc7ed8b74abd6371ddd466d2843924d80d4364b575233c12731a4472afbe3b0675a32c13d7a97ab832fc5184db35c9597c3d9ad255215ff493dc0723692632bfbf78aba2c96b15c1859ba587a27e9c54409338a2436bba9f131594054f0963b88e98a28ea889320110c4d7398d44a6618dc93b1bda8b48ab35cdfe014d4eab9bd4559456575420bb97609eca4b88347848fab34a161a27bc3c031e7a0f75a05b381e1d7a2d8fe8ff67a0a3cf20c32bb307e26dd4881de0912ef24c39d05028dccfd09c3c0319909c415aebcf1bc64aa415fe6911cdaa409f5e1dfe9268e3f9e1a3c6db9db661d298ec3ff258fcda44bb751a90e5690723e83a8274888d424d7e9fe66b6e6ef7558f1553bbc4a2e1d25086465f6d2ce9a17b09d47342ce5c06b8f5b11b0d405adcba565ae5f8be0ddd0f25499e9c06fba34eebd3a7f40f72812011391814aefa023053a2fcb0c1b1545743b1ee85a61195da35429b949d72590b2b4a817e53a3408f667d966cfce1047785e61bed858788e2287cdc1ed8be1f934ac2af88c52bf4a332915fe4e87f62f456ce84c6620308283e22fda0c7a54db219c00b33128bc288cf8f476ab6acaafc2598321389ad6bd9345ad13209ea9c1ca60fc47eaa46d8bea5e773fd248008ce5e0e8023fea4555379515ea4441de46b970600a8a2053fa2e54fbe188e9e198e938ba359f9284a3c1892c514b078f886b72537fc6a08b066b412880dcb13271c80e8a99bcd334e3d912a737198394ab662e98e1c85ee6e725a0e80d5dbfb5a07c58c08fd2b2fb93251b824424295eb621d63a7517416b41739aaa0338718d7c348d3a7f444f226f121e0e510c48e8265c7516ae18be42518d0789d87251caa2b885e00bbc9235c719f778cbe806b20bf61be44353fe1b0c840d440d4deeda23966910e236ec0dd4b8ed5f9f559844a6bb0a0be492aac6901fa27a9d2b416a45f1154a61a16d467095ee92d1a1644d8339e8110f8c5087648c6ab8fb748fb1c2385c39b84fdeb144703a5ff984b71dafa3ad012b80f26893621b6384ce4368b9a101aa38b2e4e6c16878377eeea41e7fcc824b559340aaf238e0e2e03412319b93a66963a57242a9cee5d8fa8428ad89d657ee9353c01d79098dd7a84283c58105573498a85feb194a5121975f2357be6c88bbb2c9738d487008d67fc387b39b378cc058944e1d7503090e18349f027e60fe8b5b1b9997b018e6cc1f18a8f5602f1d4f4a9c02c8bff57fede1d2720dba9d1c3fd8d3b5c1cdaae47ffa7fbc707088a5e22a748aa05c64a82995080fe7d16d90f90719d880e7781f9fc57378cbb0eb74e75541caea003f78fdd7102d25e1fc8cfcf78bbc39672556eaff0a059cb12c86213a3d12f7ee8b937e0b2c328d8705fb3be73f5e0a690a29857b00c467630dafefd6f8b7bbb8d9472ef3e9911cd2bdca0c6fca3f33ec46b0da293623b06b43f2411708f1afbc8885eab26389d6807037a1363cfb154902b9d9503b758a36810599ad81e329592d9757292d1b09ce6140499ee208d070357fb8c8a1ded74d9796118681e490d288627065a8724039acd5303dd73c94e0e282c86186fd7239cf65e1ba34383861b255d8b4d5be0d5b2a27fa5407be942c9ac50a9fa2a2411ed749502da1f0c146e415e8d86f89795320ef24a350a3adf83e017259c35a260316ab8792218683e9774ba9fc2c688e9767af0de90c5dc63c11dc4060aa7eb050dd1b13c5a61b2280aec65cc941354c5565080bc71c75b1d3f5225573c76195e8778dd8485e7af210c612c18a8696d350d844fb81f0eed8978f4b04124b18d8596c4954e9dd994f490f2c86846cd2d6ef1b04d55bb17f9576401de5c1ac68ced9b197eacf88cc77a709cdc014a39064c370304199ae3c026f63aa2a5416f9a23b4517407c1850ad9a2242cec0ea8cdd4b32179cecc60526677689ac72be21d9095a1888d7359d2899a98029da5f25abed78d370dca24a1c32b2fa30b4dd37a5b25c28eb4386e26126b65e76a8c28b54363cae90e703878d2c8d134980cb8d8511f82020714a7ca4bb8c3f4680fbb2054f46b9302253f50848450b97fab682db48dc60571cc1978eab65b18a6c642d45f21252ea9c7f96d06c2db32cceb31621fd41d2a32ca0f5a33a48157c963501dba54eb331a67df940a15be7b4f283be5812a60a47e43c3211c4d91232343e125caea5136f80eacb30abbe899382b96a1c06a9a7988774b4b2af892c458f111310fef1a88a4c2ddddd583de6795f665826fbf77c20a74277d14ba90bdeb450742a76ffb04adf837a43b70ba376f4e167f63226b48538b68a9cb4d7ba799ca44ca33283e3d0a28f6cbd8ea691ba7d630d62d03657c0d286d47dbb8cb0241167af49d89762c78712d0668f96a51a43a46828c9bec1eb6faee4ec250e1136884ec85d3ddea12c25524290c94a222af68ef1d29dee19954147c62937b13911b67c5844c25e7dde4a81473ec9c424ca3ac24849d3c2a09001930a5e38838b54b363ae2e85f2175a73a618fec399104a81cb2ce43212808fcaa66c3352fa971a73d18bc458d02c784b48399c0c706b875285091369b7cb72b2dd34b29379ac7df70c069628e042fe5427ec4a69ce248e88d00537d17a22313bf8281b52b42d33d76fa5918da989367b06082169b1a0515e890cf7d95e5e6df1cdbce7e6810997218ea75ebd22e121c40b12e3314f5b8c9b2cf603099e5a7f4d2dd303b6228fe76b1f39cb866081b4c008829fb6464d314e49cc3f9e0dc82b7bb71e5982e7103f6797cc99457087941abe703fd597a8d28de0beb28d63fa5a39001800d0c1e0382df853734a658c2a48d02177e82f10f93c47f2aeb41338075d529f93d7eea5420d7b00215bed716a9cb242c90e7167fcd7ce0890ad46dc37d0ad8fdac14a2d5941d3fd9f5f49f194efb005d390f2d98f93095c42e71e1c6f78186c48a02e660b617b4de049f0bef68ec58de91f567b86c2749d07a438e776c46e07364ba2ef7b86d4568860900db054defc3e78a37d4f87b20ff8690144fd5f3e1d91d2aee2a1f5802dca4eaa067af74f7eeea8211be87d6d5e0f3542df45e961c21880347963322b4178bb0963dc7120a2a6985705ddfc473b248ca17e43c7d19c7308d77fcb4d07e41ce934fdf9058fa4809d908725f1c2f3487565a291acceabcedd91003d93d3e5f28a6047a0a11922dbfd0900a8a2fa1129209f571197e8e24570029df4a01fa764f8ba01b01f5f152a29025b90fae0295c2e736b5efa5fc6d680b979818ea948407ec26be939cfc8edd596ca2df7c5c8e5648bb9b8e606f21655fb95a5f73d4924fccd54fde6e9fc82a3a7892e5b613462247d27514a1b0adf2e9ae7903265d88659707a9c44a788af13afa90c8af8229214e5a846a1560d208739725cbe61975620e23e29dbcaaa8393ff4f5ed4a6fcbfe2c555b9d26a6e14e6b7f49058532a8212548237805f464a71227a7b246532b49b5cddc4b384b6081954f6ddbb3c4a6ce21a6d7b9b45696919104dc20cefa9ea303275aebe6fe4280916f177b34197499a06bea35c194e11b0d44e5b9a39b06a710fcd9b3ed9d8ce4ce8a7556cc29786f5a34e8c10f0ea9b0b645b0204916c5fe0214d3dbaf500e6dc3027e92a99d90775dd92d644551294f56d203eb720f79eb559e16aa152f228133506c4b117c8dd749018ff8c60b90e0017f33aa436401e88f37c327e99f18f23da94f4b5ff952eadaf9317fd109367b2b4a0839c18c78018b20091b6cda5a92749e8a95c457b7e7d2916b161c9fb1b1b615dda027a621e054137d34a967a4599bf0b0724cc4be1634e7d84c9e12a202336462db2b28ea3936d694d6263c63322add833e0c0af5493e33030d14f177f3606b5f9516a20d6ee81e514cb2fe167d26d41112a3c9c066ee24c941062abd3433dee00dea29df0fe7a1802ad618656c1bd620d846206b5c39fbb416a009ebfe5cc1c0827106bb8bd84bbf9361ece1be6646d5e6d611af53c5ead1c36ab39294b21e7c6fa997f90a61178540200cd6e8d90b8a0bc12bdf1b6a836d2f88310c90bc2f7020c952f9280d0823a6652791241b81b80d44b289b8732fd348ff8e7802f41d40a61fb54ccb0477a469905fb4a7b648fb7d34164e99e3a99a97758a68a6ffab18e2f035c6a8673c509e443c5a936cb69367503cbbee25a40440b6328fc3e59e6225a8573568b4d5c887c59b421e8490eabc94b296af4a57ae49255a113ab9c8a3862c8c1b8099d0494bead9243b6e68f73c01563a42053d8bd156b79b64b10c0c99803c224d5dd3dc44111312d2b0ce7d7b02d6536b4a2a754b13f85ea60092c49f77cf61dbf575c6d249207b16c40653b4c9356a82e5c83f280c25a6a94db17fd58a0ddeab41c3dd9d3acd0e6b0d12efea746f428548c363fc5c1350b377e0b3beb2356b71260dc09d510d67d7f3d8cb4780dddcaad5024a3813e3ba064d4db33ae9cc44e87d64d72cebe0595753f0afb50f95647fe89a6b1c188e2ffe55ed6752322482062735217f1a89a8f63775c14495225b6793078b689ca4c1eb8fdf774510fff6ae73b0b5d015477b2a3d3117b09d8a1065d34ba2f29a80c28a901e945e0e0200c4d2c1a8e77adc1b01fa30ad0511b0c9dcb9a8be73b7d6d48c29d92ffeb37861a33f21a0a918f30753cb4b345b1ed6973959dc221a62ef1351cdd614b341927b156123ee3592bd97307d210b43b3705819435656d50b05cb0775eae1811466d5969c45456a746d108906f6d284302d5f0545fdb4d2db695f9ec36869f460df2e5a16d71a3424539a1c0ad05c723bec9e79077876878fd7772cc71b39e4cfa88ed33aa1cd4fe4f4fc2aeebd61c0bc8a0ed08c7eeeeb3add9c29ab60cab2a082da1e03514d66c91fc552f8d3e3a6435f859dee669e05c493cb606b442b77d0789d7f017f6ccb4028a1a5399cf9b364075df598517db7c00aae86cce9ebea1b98c6e22785cc05cf3ba0a9f173d90be48aaab52ba39fb0c2e99c4875bb8e3de09a6e4de7750cbbcb4882f25b333cb30ce2eb77971f920c2dd5ce287cfb0d87ed24aeff2f939b21a391080a0b8bac2be0097a38f88f644c1e8c8336ea6856ee682c7e91cd0aa37b1d497834aa5f08fcb13ded80ba92aac9c2908b37c28e6854446b80201b7f2d345ba02cae439fc1299889fbbc36007ce4a5197da56e31b231dd83a018d17de98b376bad8c4fc11b03fd0b1d46042449d4c300f25a7025a1f16f57f8e8eabf9a2cfe45dadb4d01ea02922be7255e81aa43d841f2cf78a98c6640069fb277ba7356a7a0484826f8f06c203983f441c72f1b2266cdb23f0b8ae1bafc17822f6f8d8b49d6d3c79173a4666f81b6795cf08c0dcf5c2cbf86dc0c35418e1d89d28bab89570387015951c980f75e1dbc7ecd9bc3bcfd5d5a8b6829bd40d0c56662ede50176a1008f207aa6d5e635073193aa5e3f711807986c079769157ce4f9b414bc372d3a94f8ecdb905e1d7fc4d6cf0087f39870304157e500b45a10c2c558af2c1ac24db5b0c4a38aa6cf4687cafe8dc00c7ea27ee2f9b51bd04605612234cff7521d68a3b4aea721a6075ca3c527998218e04414ca1338d810498836054d712d542ca80e803887828de80da8871fa41ce4e88da259229a68a5916986b242d7f0d8a22822b3d744b42a8c19b68c1528f1054517b9552b42f5fd4fc0bee98144a7c2af66cde7979acd6339285cddcfa44ec52de3d60a39bedc2f983b0466f6f7df732b38943c9ac966a1e3f5eb332eca2a3a3e1725158826fb5f2bb1f10c7beec06b02aa2aa41eede949828535ab8feafed71b48342e9b8765564b41b96b7f2682df90cbe60fb7e572361102834892fb6ffd1d32308137c8361ae67a37d562c193942e1bc66dc6496940a62739c76138656a13344aab3ebc3b7725868f0bd2fa4f86d3bfb6cc08d47ed39f6af9b804454f79f72fb1960eceeb032767113b77ccc4400a2bd1acbfbedb7c9eced1c564a5ccc5ea24f649690f0656cb0a63a8f81ca2618335acd7cd8fa20ea11b49dcc5350fab6e201ffda2343e11e82a4bc085aa30f4df112b962963fef6cde1bf71c7cebd6d487c84f23d15854db0017ac4e4eedc43c50d8313e5b150021fd10df19d14c2bd1199a0486f7c8057499139438dd905d40cd73d85787c591db77159c45dac3175e21de763183de2016ac0aab4498596b0b06131f81b47a3613f0cd9488731df9f8c313a6a5e37fd76bc7d13e0bd0ac93df335432be0bc6e70e19781a082ff5be3c22a5a6625594cbcb9ac65fda84afbec1d8fde25968446b6ecf6b86010cda390d2919c053edf82e594477bbe79547911082e6b6f85821fd1421ad0986dc7738d8656fc0376860d1a9c42b4ddf7d232f2dbe96dbf515ba971f7d41a538fba46e24dda489e0fcea5338f73d61bb07ca8bbadae77ed2687e672852c6245f6ed771fe78dd8382eee84fa9717fb6444bd6a7852658e62a84d327976173c0c9f8782da56121ace03b6e3f5039bb0b56cb1759af688ac0c8aff1982abfe31ac403c1fefa0789c2991fd81d3de958936f2885652063c282791a1dd7cdc367a611de5dab895ed17736510c2d9da22b6d408bf1b57f12ee33c35da73ed341b3562aa9635a699438558e33d24aa3ae2138ad05252c5a434250f1f3a25f2bb93804e621202b0f443d38ba7edcd4ee523aad4300768bc44e81299802f0b9bf6eaad0d50a84900352e604b4f131178663ea7dc06873b9159d8708277c4b71feb9e9b7c4af1886a8beaf42191c799b2df4c155a16f259220369e56c79423816887c5b3cd070ccb4eef9e4f5a67a04c833436012195c830665f14cc626c3eaa5c6b9229e34e04cea8613c9dc8f075a97fa70d5c8f02f3bc333edca3fc10c7c5c6ea57c0961cce55868010c7ec03cdff29950af9243c47b6cc34a3a0ff2d295f4dd251d101f6dcb7497860e4404767e62e97cbb2426449ace2f0b2d33bd4a7fb7c0aaa615c7bb8561baed4ce10f8c382951db1ea75066c23a2c32b2e23c1b8cba0773eb029e0164f04dc306dfd605514879db322bbd1701156dfae9b10936ed01b59f236485fd932c4772db79de0e8ad10923bae9b704fcba9555d30a7812151a61adc8a9114cd26df665db09adcd4f7dc73edae10ff70015f6e27685fe60b6f13b5b2a6963757b83530140791c93b81b41f593633d2d608af5dc449f27692d3276192a9c652b252116b4fded9a2f4b79739aa96176a0069f22195066560a8d6d4cd55a93012373c8f7855c94f1acc057b952e03906960a876a3025b0154ae460de9c1bcd6c4e096cf86f6e32b0aaa146113fe10680bd7c070e2fa5031294a6b82a93c4db2fb53b7cd58bdb1b5d547115bc827d0647155ebd4ed4d1aa6916cb0121241f5b65122e36cd260b97f947a4a9a615bac3fc11ab88e122cebda67715d69cf3f8ba81b7ff3a800c96392692d310f91a322f908fa17f499e21ed23012ac0684c1b487b595a5d9e230daa49255cbdcc1da23e4cdd1e6df4bb57db00e99a24e28024a0c56c252d221010f2572d01ed9024b706c20544a9f58a0176a10a92a2fe179d3b5a6a0bb3f7e587ee420ec7c7c47b4df448aac1ec50ed7d54ecf341f1d52a4611312130a5da7d8c73ee028f2b0c9ffc2671877f7bd053f84201648c33b8ec85044fdcbeec08b47528072547065297a10c854176c4be04c70c6015ce82d55c9f66e880cdac5f50a4c2fcfb5666bf020c0c6ae59232c2562c05427465af3dc0927c05e0f107b9568a73db521accb012ae8e6d75be02763b361f42c5187eba614a70e364d8977267efd50a48642249021fe208b4df35dcf3a93a4550df09001a801f3f1dea62ce78083b9fc9f185f10ba6cfbdf2c9f9505680413eb5ef4ce63314b9c7a9735004a842603575920bf681303f2cc17b717cd766f7bd90726fda5d8752b50760f26b5b7530bdda43372f0d88eda9009af635800dddcf22b1578dc92b61ba8f80dac1b6edc337d125c0b813617dd856f30f31cd0840f299c490248bc0cf6b5bc0382d5881dec6928a41014b2d133b06c6638cc9a2d6eda4204ada02b63e0e5daddb70fe6ab4e5ac7d4a5cdb88e0b6f526e2c605aa7a09a784a992a90465c8fc8f2895b2b6e75840e2a1f1e19241cf4933442abc96f1ae6549c8a920d25682ced4a2f5f3f52f8614562a0485881203ea0fa428037dfcec2cc9ca5b861adf7853d8daa279d2329547f9d60c66bcd02aff3fa559705c6ee1daefa3582e5a0120151d3f75e4c0b4c5b9835c8a8031abc1a6de4e7975dc4c5903bc27297e739a64b25d4b5fe2eb126d18421dd8c4e301d18349f4ef6b8ff59806985079219176f185713c146ee0323af22ec506a0ac23880ea55c5519b495701e6481ae8c0ecd9ae7ad1a9b219cc61594556a406939a26e4a0cbce6df87d51b7d7df434d9cd6d023785705c7059c9cf84df60686a3e2b57f542b53c8349e382350b31f209b16cac9db278b1222d4b45b9f2ed9444483c90c461561783d9e480f95bf14b243e858572d02c13e9b8124832628a4e74350de0e1d88ea1da1e159358119e21aabab0ada80eecd4e6d850353267ab736caa8243551a580e5536550494a588c2d9e5e22215c148cab5f77bcef7f07ca23c3306d353c6784f094a6e28be1d4a495181d766347348c5052b92dc54c824095e1d89372c27ba1b185acc4d13973a9b0b37c81070ff7132598f40dadf6a80b679de6221a6f34a891bf395220c7d6b19e83a8927bc6f7cc51a28f02676b7b774d645384c4cf1d805000d9907cb1ceb02e843433707a86698f1d0430f8a1089ca82693b9b130d134f0cd778fb8b614ec634d281a66ad44b26e6d7b0f4af362828daa2daa43183a92070b49f18c48be047e53268ec851c7819904f30f2941340e59e67bf191a53c25cbdcdca56867d3c8d3acdebebd2940dcd6588b7273689019c696065c43567d90fc4fcb4c7172a8c50989074238e2ca7a6eb41610e29f0e0e49101cf39798dd89050315760b5e9b3872c1f48162f5bcf224f26eb978a5d23f9c07bc5a331308d1312b7fbc2434ac27cb3da76d1a3121626e7cd5a89fd4aaf6028cecb1aac29ea88c1e6fb00e1166551e3e537e160da039dea8d59bd4ec5847f5898176d28189811d289ae154fd655f1e1a2d3199bf9f2338cdafa8b9117abe48a3b7aa2fb9c2b4411ef334e2904085d30c67cb3d4a91b226d27566fb70761eeb67bcb3e9093a787ec9340d1ff88d0b48d1e8fa773923e623c2329ff4353d342d806a6779c722d933309b7af8f39f12c20ef0ca5c99edc7828777d031d511284eb63db00878a5b44f830a9fdbf377daa85fb369bed4e04de7455755d16a9eab2ab09e9ec8a85e6c214ea72359581b459103c16b77106e29febcf36317ea55ddc419572e62c4eddae1d537764adf8ecddbae0d72748614496e599f5022a71c12185014a461ca2ef0bf1613d4c8a484f9021e5d65a4bb1d2ad925c8e2b79adae5d30b6d810b51030d4dbaf1879e2bfe0e994ee2a4634eb7ba7cf8a917960863b9546ca2d292e8e3dc55afad1d1a8d6e9c644dd2149ba4f5f4ce772b28be474b23cd679312f99075f1175b4449bfed0fcd316bdd2a46ae7175357c422ecdfbbf28eb3fc24355e8251df72c725ae1574a3005c558dcb8d4aef1c84e9bcca9a2459122644e5951254adc68c63401563546ccf0d57e1b7bd17ade4f0a762b1484340055d48a2897b0d7241206d4e36aab645bbefdaa2c749b1076ba8b999a5600b86dad35ca209f33c5fa056058c40b1e3e2ef92a3a5b3286e845161452f45e9958a1282c4b86504fdaa08e5afa2b9126b9ae228995cc9b34f1f5ac5242e6a93f708931627531b3f3b99f63aec31a297d633660cbaaaa9d8c52746b25cb5a59009a96dd05d57811094d010fa78d72bc756735d189de8949bb7aa92902cd10427c03694838048aa6d95194a6488d85c05c0ffa01d0cf415956a6b91d6be4f341a4b81cf4dc31408c96f39e8bc3030f366096b61c0c092a4cc64026793c10a8ad33de854a2e08e0c49ec6d406a8441b69016d257a55dab12c951447e97db10dccdaf15c2ecc5e4b3a3ff058209822de356c91e287ea140fdca172419cbfe1a62bdb7d76c71ed00f6c5d46ef6e9775452752e847c1e74c697803d1c657cbb5a3ef9d61ce357707b91a4367eeca369dad96cba23370c4020a47c1b31837d117080aa1a7f7982d1e4ded0d2fac318dd9964b663c045bba76bfcd3d3a30436e1860193330a3689711ad8b118fd6b05d19162ce233fb307b5f0eb532ac480963e7046e2fdbeb721b0f59b3dfefb6ab4976bc06aa842f05762cd0994aac83438c98b2705ba4a437184a05935c0abb7a87de8dda06afcc7777fbc8f149c2f8a22f0e304a3bd73152c68f57de1af080757be4ec8a537d259879fb62d5145e65baafb0f1456c4880f5ac2812ed04164e09ead69b21f417e2be057ae91f1a1209ccfec2d0605a61db35131c580d9f8aa67f20b63b8531730d649934d65071bc58a1f682f1181c133c18cdffe758a17121e04da159f00603082a54249302930b8398cc693f06a067ef58adaba4334601d0d604e072586fc3313217bcb1bd32cf67fa07f622a135c5b1dc3b77506d10730001c2a7050bb28c38534173ccd310fbff1ecb963937fcca6ec5108cdc0e041ce76b4c0637d363eea7bd51ccf2449359598962bec8a422366aadeca0d9d0c15de42baff5e218de2de89a3ae3ab492f06a00b2b2b5e79fbe0c97ecf1d9ed7d05bd47669c82ccf8640327a82da323f596b48c7a02936c149a6b28140f95fa872d2bb7b847ba3c6eaea96ecc1f1b3afeefed9b67bd03379eaeef62338e032d55b00001b79b276fef90a5422bfe74d41915618d29a9f2e7ebc38c6aa79852a4d1e9e22b5ac1dbeb536b84cd0a7af9174714120bb7dcb4c51fe8b9893e3f50438eaf72043ec4da1e9fea120c15e5674206aad0d0668fe6dd5ff05473f06f4d1b36163bc2b56eed10429179903a7bdb81a5a7a3b5e80d6ed31a8fbce6b1bf778e2a0f9b98536a20990f4bbe9a4cb266de4c668a0f15e375431511f0b017cc151e440b039a77ae09c9c9c07741c78821b14404c06f12ec1016322b4b9b2b89f74297a614954608a3812032f95f179bf7ab0a08bbe1f4a23d885b6e7ca6471a8bd5bd381107a16650b4292c0c5d3a75f8db5f16da411843c2297f5b4318d0479baecf2d46fe9eeb6bfe7a35fd078fcc8c4550fe2e0e6487e9d5337bc5b8ed98c6b70ae596ea7d825e3fc3255bcbf26f7eeab742a66586b9c98c631d1be17e7599ba3d4557be9d1f1082f543632320c25ce93f4d6f0cf45da113488f1695416d9da844a64183bbc92827d88f45e5fb3d8f2b0070114be92278fb1464d6dc6e4112c0aca78c1e644115390415e717ef5826b5b6bed04e031753b98341d31d90113d2c8845309192208d34f61d98d883cd0be120f9e1617a611bf59b7440e0fdd628649469486c6d6dd92ea4f359e058413abe22ddb786632bb0ce6c64b2d8cb6dabf41c90831f820e90d173a000e6613b29b87573be08c1b7106b1e606558a308f3058c26d4604841f424c19b12f28031fe9b9572578e9951f5824ca5f209b13ccc425b537949e288cc556e7e0867009bca2d4fe41099d9b84f2f0fb72acbf934ba43965e48d11a6be396b313cd623802cb3c063062902e78188a88f1a826cf88458ebf2366f14fce55e29f6c65c33957e4b0b1d61df7af63f961ddcb6f3c03b06c428e2cb3bd3d0c07bd9314428edf3b9b00c91a64907dea7fd55028597ad1fc29d689a8f850d77e1471f0467e40bbdde529e9658f799147da6e7cb1d9e2e64263c57f4c1388d05068cea2a02316e776ecbbb02ece56f8b4539a45a0258bc9150e80d7e278b3bcb997ca2d8eff8f3852e2ab35462fe893ca4485dcb6e009d7edeca2ed0dd4655ebf496311f14be011988404e220f584b8cf88a493ea0e86a88c9b4dc636d67ef0f0df6e018d33fea8138c330f2ecf5a76a1a8daad65f654a04d62763071ad23766dac24ce70c46cb5d37f40a773045653b073b191b746f039555b2a91482a7d4bf44074cd051533a84a350921908fd61668f14e54d51838e6f8feee8ca560646c47e5c44fb408d0489aafaafbc06826ff1d37bc2f0d1a15f0cdbf2636b946c43f5d1a7826e756e46dd608f4b8714c223a94d0f305de34809bd3df540bf4eedc08720b97565ab2f4d41ca60cb19a1b21049db4578659f782802e0296995e609cf7fa347bf4118e368e9d85d9eb78acc5ec018b8057b1bc458544f5ecfb1adcd2432bcff35fad4e281cd6b4e5136b8a2178f88ee3a08389e3e07e7eda314dfcd1c1ec0016d332ecdf32eee6bce52efbe5078988441e40c0e148d00071e9f1fcb1f69ec1f185ec88e9158c38e49d67824b73834f820de70522901a2da668b9a51b3797a5c6a957eb78eccead487513f0581061923c2344af9eb78cd0930b898dcb6dfc2e6c22b19852f91678ee43bacda41daa0f72843bc3dfd448ae60185320055ab45511fb200373608ad970579689b34dc521f87ef664abe0242d8a9928c7a1dded451d110819ffb3d0a562bb14fbcfbf81f3df763a27caa87cbc4ab2aa007def6c023983219ef5169fdbd3fab9bcffdf0379b9ee4bb3029a9195454a18095d6049a071cea4fad3436209d59f524bc1cba881673535f00e55034fbf1a98eb27bd9916d0d5ff3d072993437de463c94a05b9f8d791a2df807210fd9e8f0c62a2a9528d4b6196c59052dd53cd89685a601caa5c5718e27741a0b63e2185ae93fb978ecfac0d70b5b27831c66269011f9d0889000810d5fffc30f90c219d0aee31e50c1d71706f7c801f7a1640903762299b6750cc00f44f53dcce7b55bcfae793ad18e758cb2c851a57b6b4d47bb433b935658de90d8ec4a5b4c88a4c9064e825356e64d82281d08045f6982448ba94d9c5be9d48a1a264642e0390da4c220605737f3ea9c71923a5c5eef13ef71baea0d742748267d40e95adc8f1ca65485713e59b2f12597a26e45591636ec7a32099f7c3687cd2844d5ede44f4e0a9809e16c6bc9c74f6fdb960655916491a900e7feb87716b4aa5c7a86723bc3f4f35a9fe8624cd9514b9ec3b63abb354e4068b368383c1febe80ea1c50d069aaabd3b7b935ef569542e14054db77baf3eff82da02af6041167fe3029b6f8a8ff22846d2b472a9c545e317304d65c2632ac66345b3dbfeff0a86ef8049ab4caced584a6010747904a6c09ce37cbef590187f5d941c9e0673ce4251fd58556109dc386cd528ceead6276acf025c148acfd69807cd991cd07f2b9b3dc28b6e6194a7b0bf00b2756d5445f8a9324fe31394334a2c8dbee834a7faca54c5c68e9df4668a97b326f4309ff79e9a646cf6405983cda08108d00c10056084ce11602bd4e45c7511a43a0a363b2af34f44e6b3199028a62bb1f061da705ce4c8ace6e302f2b58f02c7a1e5888b91dd4668af5a1bac79030980b3fd38f933ffbea14a5f48dfd48a28745a763295a0c8eb67dce8acd28791576522609ed80c1073340d4db19c862e0ea2433c484188dede6242cab41ac63d596d25150c9383c0198cf16e8050f7a6bfe4353bb8c6c1d48464cbfa3963aa9ec46686024ae661c03855bda041e14d1aeefa624da4c917d650a64a9c094a3ac18038efc2acb71a0c6f3ebddcaf66b16a64ab121e322e412185de21ec3b2bc94b73167d6912f02fbc5ccd1d6c0692a9ed119b1cb1640887d0e16c85a18daa7cf7ba197fd201ce738aea4ea07bce80d44542092d154c6e6b2a1b972fc81950a62653e4f978b03f48a41814e59955f13c05e523fc50a0a9f9aec5120f99d88f7e1152e9dfda32c0663d5db7602c0035e7500554904d76885c18d35094dd2e56d7fc8d218e8b4a533e87e6a0e5c3c0ccf7044862e263ef03fca0180da65a531052e0e6687c61b050f3c7ac60c3e423e48a836cdbcbf33122421f9ec3522801ee33c3db8ed81632c1589497ae2cc8826346489d0b616a67197cb8bc8e72911b815643939d983aab88263ea71add156f58a1bdc7b2cdae7583535f22fe9c1a32aefdf5c6bd4d13c66843d5e2657b54ab22ae83684f49ddccdb73730b194de1a792018d1110ea1463d6ff31e15f4be92f5dec9887e27df76964e26f4212b476409644ee42ee7b5ca1c816e64d2042963afe941d37d01f38ad32d793b40da07c2194d64f722e10232695cac3618c0ab93499aa70b9b806f89d7cf694a1b0e240c962804c7d2a43ada48c0fc32303a3d5027d465178fd883896f60721ea2aa53b85550ceec32596557ca5586098a68e6cceca82d2cc0025d5d3ae556dcf78bc7771898ff37484eace81fecade578bd3f97479ce9e247d855bd21cada939705258babaca90ec1ab6db44c818352826ba70a1d2a0a791456aa552cd0e0636c35e38251b8cdf27d1b2951b6aa14a500c5ab2def521283bdfa184a25024b2379248ee087ad96617da9cbcecccf46956670981589bfbe912e6d412625f30e51247410a25f50370a6e83a0859a21fbd555b2aed5fce5cb76dcbdafa7272152be07c927a6c20dfab9cad2e3b69cd4856285d2269ca4c58ae719801cda64a6ecf55c9d430de08f2481d72b079294cbc9f360c912be3cbcb41c2d1e18c857c3da10ecc5bc897575e421bfbdf1b26eb68e06f0696f1cc980446a4b48f2f9769e3223619822431abe91d69fa5d9dd4453598c64aaf9f7a1ab89f0dc3fc8dd915f25968dc7a1d9943ae81a48044ac91d65118b25d040e32d8ee3f36ba1a4ccb483a3d2e94d49451deed197e895dfeb57c6806ba309225601b2eb7cb7186ab9536bfe1c6fa21c4824fcf21165a90779681cb9fb9c35a33cc868c4c4dbd138017d2f01a75182440cd96d23b138b2df98358b2da14dda1166c16f6fb5256d6d67f58eb27cbae19782236fdabd2e17a05da4152b66f873345537c9a0853c0a3295c49e7bbb9ef482845a0e540e65322f01e22179823125ec9653d02c0566009466f8721137910ec8a30b65f1276eb88d724a14f7d9f2fdeede0e6ddf5bfc5f105046ba8129139ab6dc6d39f15bb7aecf5dca63e2451d2a9e43a804921f984d95057a98c0428888dce06b97db6a30db2ef2ab2378a46b92c33e0f383840318298182ad131ee607a375254451efcaaf6e62d78753ed608b17f0196ad6cc77c2b0277f6bec4736a61589be6bdd0ecddb30bb5e3a3343c0a51c27035bb4c7c76443960dad1e2bfbaa7b1a3b12455e2afebed921ae7eb98e84f8975a82eb9c71cda61b268757f1d0a97e98e4af67554ab7e1fb7c6e0485e965c0d2cb8557675a71b4dc8ec496486e223ee20404a0918a84f84f02af5e0aa9bc8e5d6b2826432361a455d3295dc94faaa01b224e5321d56db3dcb0a69934911a693426daf0aa0e110224592c6303d6c6ca6105d84a81bae16dad5e9f3f6efdf10501686f5dabea414ab2e6329901971374f785a370a85086433d0658d3a9be1b98ed7027b9354bf59a2fe4f0746023b4d8a5d8604a6c4576f64cc504519b59d8671ac9b0303e19b7f01fb955946b2a4f36ed0e19e6dcb07310a0e0127a93f3fa56f1967239efa2ebb5b29bb97fc38e29827f3ba9a2b43834868377f84a06261271349b441d8b226ac06fc5a34b809f66ee87a61c80a9a2030d2bfd21a8604b3b38e518cd1503b2e67b5581840be9f4d732a907291a069133d436e3e7d318444a4a858dc3306e5ef6737ec00eddf75e2b9ab4bc4b0409011f04a9bcbd78d81ee8a38bbc6447fe6be96cf8b83519e550f7309f0b11351fde20d89835a6e0ee4a8cf335cb9006a7a3409a2e419e66da1ba3b1fd2114429926682eef8f93bd9fc261b57f9f10311b067c6c227d7e4c34e96d57de0693dca3e3b9e9b5d8dc91c9f65c628794f32dd8a525f624fc87672d3690f76b5b67b601bc47e37e1bdb609e7c6f292383c613d0aa06160e4aab9415e01f00500680660cf0370e4e30e8222393938d37733f78a3af139eac64131bd14227218f6c0602018ef0946ca43d8cd940cd0040f53c7c3c1f585b15929ec7437c6d3540bb3abd98fc081d15fb1f3c953fa3f4da0cc422f8bc6a670c28f7da3a89241e9eab9fc6121f674e9a5509c7557239a556d77d1282580b8941fe13d5ee4dc031e19fca686d6b70a372303c6f52be0f34ad422b3baf680c499ab541a0be6efb9e58a3aa32a7411e23a1704ed660603baffdf23911658f3540efc86ef5626c2d96824acb403822da22b98ca25ecc945f338820c4c7a1d7782aeadb0542a6241c65ae4973905b9fa314cdd0e8b61ca9465d7c850c97bdd8b0d6f0b95bb125ccb6a9b18494ed928e394472f122f6840c68d999f5a3f9a91afdeac3912a5a9d0340f9d7b71e32b84fabe9ff061ba48c37b3eed9da06942636a93879dc4707b7a11cc2b01393565498db5b76c4be95dc766074112e321825b8887729d6c5079fd44cb98d641f559fc690659a106a04d6ae2330914023f7b1a964d85254597d94ef3dd8ed34a9a6e0e8c16667845eb676ea1ea1a48348d0c04dac6905048d9e78ff2c6d268a02751fcec5c044d193078d9ad8fa92008d59e94375a0096f7eac56768fac893d33f2e67e229addf7cd623f585f4dfce1fe3453e3c82e338c9519d09fafa7b0b5f6bd2b3a812f1796ae64c1fe3217668fed517806feb024fc236eff7be4e1fb5989709d48692ec9f4b87208dc281e42a259814cf4ac165ebbb0e5fc2502bfb2e7c5b1d1fc1d322f177cc7e35c03c64abe17c3fefe001cdb2d3ce6d3663816c1989e261fd80d7ec228a4f5d58e8500207804432af6ea5cef9b51865ec10a6a1c9450ed3c0695ce3b898f4dda269b045a648f70da7b5d131bea52ba56e9fdbcc1ca08aa597bb8be007a829dca37534e2ea8a6f05ffccc4aa5f085339cce19ca84c83044c31cf9b4f937c0affbbc43435fdf249255a0521f825b6e254518651853bdf7e533a2853fb8aac56446d2020ae53d74a0397e353e385b20b4b5b88f80f7559c978a9fdcd2fcffb20ed9ba2262a165598406448b4c3c9cae9b9dfa998ae39effd010c8a9b938e93d02ea060c9148def39178d6f4b5bb57c8a49d578199d7252d12b49f810b4cded8446d3a7e04feece6df158b85e235bd6701de546eecb0f977cc3235422aa323580772b726fd152e9821689acebe36d674f5eb9b3e3d4e55946b88a656bda7c3e9b00a1ff5136d2b7c58ce718e37774f6676b2aeadbe7435adfddb6ab245e2a354b72202df042f42dbc6062d4b485c8ffe442705bcba0fc4f356dcd9262bec35521e3f8a786c02a2d4b4d2ed080a6d544dc9c11a5ed624d0c5ad429cf7663b208103648be80a8d6cc57d6ac49a47da571e9659db3663251f553502edd8d3febbbc16ca136e9b522236af76480c69e825e0e478a508f8a4678f4a714c3db5ef659f5527dde35264d4672e1bd4980e83e00ba90fc4431029981a900f26fec3a858fa51c3c0845b41c75e898a7d93b807d32b33cd6c43afe8896aed9fcba580f369001c5fd18edb6996c24fc046fcaba41fee550ebe138b9714dfca582df4429a16f1823b610472aa0e3b9f1a6e267eaff4829415bc64a44a8851f4f94229370d91541e2459181438d282cae8bc05c673391da5f65383129373c3e0a740909e01ce06deb1ef60575ca5c56b1e65eb87d2224fbbc2bbb0fcef23db256e41349cbb76cec109319f3730f84979f0cf56640ede63318189f7bee37f86f5c8117d2c6770c2fe3e307a4e297028e61537b9c461a1e69d988999d4609d3d2c112969c4a080b51821f70693c4c2dae1efbba4ca75c2f262a2388a539d935f428c140271fcce8b91e3b65fdb95223a88fbc19f0d8ba132036355b84e8606151e6d6db8283cf660638d27c717c47d91a6e89853d7a64c034b4d9b7a105fa1d2b76dfb5f105b5d5d187f1c0108f535311b63234fc1773441fd2302de80e3d26897f32bfcdf475ef3721d9cb84bdaf69e3036c454f69a5039b5f60dff1509801eee1d79e7e65e902b51d4af929b1a8226a65268b2bed89d3f15d67b8077534c8bae525eef1b0603e7826c4d410d36e2dd1786535a011e39646301d225badc608b664849e4a0b90529d8b3e7d0649a2041a04404ba05eda44c4d65c5794e9a325ce1abe4976e252943b07222cabeed2e89b0d1d7ec61eb81d6742d8f27243d94ac68194678fbbf19596378f1bb20ad709615310c5f832920f18c5baed66005370eb9db5e78ef1a05ae0d63867b41e32785ed06eb70968c71edb502d67382fba37d0c94c65eae00defa5e058c18ffc09723ff8a0d820ed748633ba775cfacb2767343feb2667ab10af87352fc7adcf9cdfd8324b0bac725f378d09a76cad319bc796a7efd6b9d7609f95170c6c872934456f5b9754c5775d9996dd8d29d60705e33c089dd4e23d884ae4691ffc60fe02d10c1b064726434982ca0543926b53fbfe9aec864cb7e20c8b684dd01d01a44a03ca73fe805d30d2a14907796c6ca63bbc8cd8787e73623b39bb8a55e76cd01aec6d8a0df55b5e6defe2463fa2bd11730f1960047e37cf0004c00554310c5064f9f892bac47d9b50083e8c139a712c946b9c824e7e23846c49c8de7b6fb9a594494a19f1079a07bb07474fdcdd1d0c9a46bc1553352a8063c79c73ce59a9271d211db9bb1760ce2f0004340d3aceaf41795cc74ad814a0da00b286ab48a6652525d804a652a593f22065fa3c41327d9e1f3fe5943e27206752e693ce294b51e080a34d1e16326d36497d7f7fda70d97d8c73be9efde9512c3176dfa146257b24a9dab787533008d458fc6e8b7dbb7db7bf0f765d28312d53ed2b51284979ca72b77d7f729954743681aecbfb3909ca639348993d89c562518c75cc84d5e337c0eaf1e7a03d51c885da7f4c1172979dbf13693776fe1ff79e257e5fc595684529bee8a8331defc39c64daecb1efcf1e469ab4c44ff44429c5b9ff1e214da5fbb9a4492e367cd67377a8765c765d35c8dbcb9820d3de868ef7612e1b64f963aefa282885480c37c03e25701013e4895801629c1045051ca0aca006578228e1a143e988172931c032a44b1021ab2033f4e0a40d6c1912e5064868e02109246c82f0c85b3e2582c88087205dae131ac82e5b72a85ac205253d4e20ad1ce1430d3cbcd8b0c49624b8c9a64e58888f2b04bc547aa660ee450f0c9b233eb82adc75d9c2ec8089212fc05eb26f09c5440cfba3504cfcd871f382faedbce88131a39860c18b11e785f95eecf4c0f85e9f0e9070ca39e7dc0383f274424334e610322f47fa3b7404a7ce3153f8b265532a8a31fd31e71212c6249760d397935222314f9b605c4fa33ac2a751116c4a7df81129a31fa369f8a569d8a569b9a56939d434983ef2c595a48cfe126ecad48f1c813dad554a597d31235629b32f234a29936f2b90292823ef5add1f8f9b25ae3c2b47cb7160fbf701ebd9043817249074ec4e4f39f7e57cf4d9c4788e7b36f986b3ed0336d6538ef6a5fd80f51705b578b0a63c6b86b9ad13cc0eb6b06acb11dc5497904a10255ccf14fc13e3841a7042fc00999ed038890109292160f06283130f07555b74106181123e9c785244c0319c608b110f4a5f9408220739708152132f0801922088201d711e904ac0c2416ee0c2911ed4a6a850e5052924c10088244b4ac4900548121b10265454171420c609b01f97c0a6701121f0a065881f3f8069824101498e68a28b951198e0079620b88a820b84e181071e4e6a27c8c107238c40c245cad4122f39d8283318e9f3b17201d0602acb0d9270c10da8108009090ba4e880840492231d0d2006d23305ff1420c609ac2da174d003f703f93418423ebf6ffbf92fd8d6021e98051d40a91f4c074e28b725940e9636edc6aad0b402257def3b4fe697ddb37ec6f759b37411d310f8df17adbe7b099403082432423222a96a3d8e9294786878cca9f5de7b318e8d1b385c56e5538caf4fa38e366ee018777cd67dfd9e3a7add7fbfca9d88aba55689cf7e67b9b7cf81df6922efc127fa62f7fd0e71dffdfd4e13315d3dd4bd6b22fadd13b97dcf1377361299fbeebdffdef3c41c409f9803c83332dab3de5a8dfa12a872eaf3c4d8fd7759bd3a0343de7f19a8ab4f1311e51c40f469bff2aff7ce1a0fce27fec4705915725935a25fbddab8c17d27b463e5ef89f43b31c3a6d4ad12e2df7ec67dab8becdfdfee176d967e900484b6b7d6be7dacf15b31e662ccf1cfb08f39bce99dab7f28b54f0160ddff0325cf7c5781377176f6597eeec39fe17d7eeec3e762f5b9ab87f07b9a88fba1ef39d67f5ff550077e27bd9dd773baae9ed33b2e931e8c734d348f7c66c8fef4bd773dd3508bc9563dc4bd4b135909c47d7deead048a558efba297b62d4dc4445bb2fad5b7dea577ec6aafc41a085c5ff4e3d24cf55bbf7ada8e11ad9516b2402bcfcbcf7d9137a328ebcc7a3dc41181fa2736893e3df510d7e9d735720061f186cb2c4e90bcca41e9a6c45fc83939936a528d37377494374eb178f2e6a7cdfd1c40d67efd21fbf5af26aaf3c7730ee5f1df3beeee4495bced7136f6591113fe22faae97f35b2fdffb2a7db6d29b1e7abd83de0c73c270f5397426ad54bdf83981c6125472f6bd2f8ddc7b3f5c6d36f7fffe8dd2be7713a2814126e037d19b54d9bbdfd6390872dcfff80465fc97fffb1abe01ec879f63af445addab07455adee0cebf89a128a904b71f9ac51c7b1351a09ba5670da608df93fd3d28d26eecef7ffc13b9f7c44e4b7d4347faae1fa2efd2580fcd6fdddc8fde1fbc980c1ddbf4e938c28f9f740ec1b0cff3dfa9fd03ccd8b6d9122c2187fdfa06b03af61ae1470d7f1bfe4234fc7ecc044c81edb18ec16c360090a46ad810a2116bca28b67caf21b125d4125cf6dc34288f0c48dbbf004b48d9fe423db6bb749a73c230c104147b88f2b88e9940816ddf00f5adceb1251854a5acda7eb0a476854179e68ed51f336c45983cb6d8f561d2c7dbf56dfea6ce03f85b19fef67328cf68b36553ae49807f0e1d47d0047ffb06f0b73a9663ffc85febe7fab0ca92f2c18b35e5903a91276f62d3a757f43d278166e75337fc71f8d7f0b7119bef719eee34909c52d29a269f53d2398bbae7de01de63a621eff17f6211f53af9f3cba80343a635a4ce74ff26539c4d35772852c7959852a24ace60ee79d318701a9612cf39ebcf598f3aa3aefb191cf79d2e6292b1263906a54938e85fb9227da49d57e4e5c418f952fd24e79c73d6153c79930388137300c59ae418be7d0ce3184210b081c2c59b14e5994fd3cad3fd182eabe1b2fb3494e49d012c8921e433fbf7696ca9a0d00ea11df4a7fdfa463de8782f0ea5797f569133efef9544ecfb31ee3760dbb66d566d4c9ebca1f9d1dede93a1d9f2ab8325cc3d44c7f9fd0a20f761fd0a9640f72cf242d0903a730e2175e6f6585306b7b4bf7a07d85f79598c09d930fc986b8975acda9f9175ccad8ed519adcf3a07b34f4ea449027e2969c0d744c2400974d77b45b9b92a69545cb1a6c06baa15a56a7be6dea9e7df38fdc66e75eba9411b7e6efbb97d2bc2e47147fab0b6ff0bb7e04847d745444c45dbd3c69810feaa67fcd0aa3d16151ddd63254179ac7dbfd7be674509b2a82c8b95041d9dd565fbd3152adea1e3887d0018688eac2d05d23bfab41d310710b54ed6ceff893154a302b5ce4be544a954eaf439cc510e73ee948a26713f2a5225972d51284dd4e927861095eadeb3a0d00efcdc7b9ed889b126f947ead4cfc0acedb037be5c3d93a44ea54ed489b2a0d22abb4eeab4ab10bbfe8f02aabc57ee1b8a3f95568aa7287d92fdeb7f18851a95657dfcd51c3c79233f943349c3a7e24d19720aa86cf9513a50d952d33ee0e37a159dd7a8173a3ae569b1fd3d49faacb6d3f7977ee452aecf11f3fe9ee44a32dee4ee44f343f969fe3e4df8e113d5d03ceb67c8bcf734cff2275a4547aff9d8d35a56709a5a565a507236659032ff96152732d8de02627b8d8ee9d8acf9a1ef6b50fcf7530f8135138c2960e6697e68e669e6cc5f3d047b194d44f343aea7c9ef0a61dffdd0eabbd54fed4a2ef37ffdf49921c7bcccd3bccd330dc5be733d24f5c774f79d8ecdefdebb9f41f39deebe088526621ab2f99af79a9a9a8fbd8ddef19897f91ab106029b2fea6c3453ec6b9eb663444cd7682197f96f246834cdd7fc0c9aafd1aca799d1794fc3e9a18ea8d3314cf343ddd3b81eeba1ee699e461375ba3535234a97e104c9f43771d6fc47f891fd5dc997fcc8938c4ca397e82e0f45ffec4bdb5dc99ffca9e830481dff9695fa2d2b74a6d3d4ca32d54aa2f5c55db5ed2d2bdb5b5db6b7aa5a5e5a615c3bb6ffacd461a055d4cb0c36edabb5568741faf891eb06cf3e11736a8aa07b230c642461784fe5637b1018b42964fbd114fdc85d893ecd8fb6bfeb68a379064fded0ead4a6f948ac317d8fcba8cb153e91f6a8261a3511511e33cca3f588b1f9dc8cd573daa58bba5a8dce6a8c90949a504fb2e44d5096241035b2e99c45dcafba075d1fbe03b85fcd2f4c439ca6ab07c52297962e0bdf863f047ee8499b3eb8d2447ee432d7e7ef9e69c80b67a83b4d1443dbd0397b1f7e1111d3f79f2ef2bc9a7341024983e0fba2904aaa4d69d3e8d34c3119fedbc7be4ba259c7e6e7cfba88a9e8cb61f719b33ee7ec7dd64baffc2fcd6d1fb7c20992a1d01fe147764fa2ef353772895e73a426ea44a5445af5894b474b2e19b25ec2d1e904cbf3cb486915751a22d7a98dae9278f286866b5c90b997358ce73c3c326d9bda3be82c87ca6a393c21c8952a25d1d17bb63b9efa82c324d3a8528ff7542b349c653b978dbb6c7fdab8bd26b17d3bdafef54bd5ae606cfd52b535a2e317a9e3f868cb155e3c79c3c323d797952704d99fa7853ca76eea44d2b4ed7b9ea71428b9ca67b2c5b63fbfccd5db9f50c25ffdfcfc96ea90330964e7b3de67b11b7ed6e3b334d1eab37ed6d350d39acbaccf0cae0fff0bf3d067ffd3a1265a816068c11b8a39bb3c5ab383f2c8236ac45a6ab42d45da96266d4b95b6b5dbb53fb3d45853ee36adce952816b9be157e7e07ac9ef53fd425320dad74fe965814eafc141c5addcad244b426abaa56aecf9a88e9e66b3fb7b4cd4f934ef7e6fcaf7fe9a256eb5b1a04af2f9a3597bee1324b9353df7a5d0effbdef6ae98d44a8635dacd3454c45d2c31939873fb14e872151a787f2eba9e4323b8fb67d0a0aed583deb718264b7cf59fb23fcc8b4669f1ad99f55f6e717fb2e4e9628c59528fd864d1bcd603ccf16b14d6c13fb84675a2376ca36b154ac94cd62b9d82e3609e5a1d922d68811775b44fa7894c2b8d3be1106ba6f9fc6d9a781f669ac2d616c3aa9bcea4bcdc8a7f674dd90ad6cda0b864381225216a48e43a1339d2677b2b2c5bb20d9b44f861da873d9d4a79cca9df2d0280b9bbe4d8287d029cac213c5f85223e6aca34fa7e814f73fc0301e6c99e6e0b2d83418966ad360381497d126506c553725a6c605f96f8dbb35796b4bb7766b94a785d124a107e5994d746cf299d7ee5dda57e6ddc377194de4efd2b78613822c5ea3f088faf47b74771805e97bbfca23cf2de4b746c7fb384c32cd971c8acf60e1d3fc0cd7c33e7c9aa7b9536cb27ed343f95d9ae8f5e10fbd3e9cf9d74f3dd48ac9b1f9357f41999f2fb3fa1a4d24f32bed44361ffa54d8046aa27be4d767860cfeea5d1f7ba6a19a0f639a08df3084ed3b653efc221b4dc434147b99bf355fa38b646464bee663ba4702d1c6d5cb883510c4be28464c33c5646c3f7fd331efbb9fbae6659ed663448d962e93d1345ce6d2b1f9322f8142ed7a999fe17a195dc43404fbf08b687c46114c3b94ef8966bc2a363f3d14c668a70adff543e1bb5e3ad4614bfb962ce210a7d13dba7f93eedfda35ba8fefafc4e934a5a4cffcfbdaf3c8ef53c1aa7e4c5adad7c35c1d4e9bbe1787864c9f766bfbaef028068a362d874b4aa6ff43639c369aa3e6f31c651e21794ed1b1c59ef36f86645a569a3743f2ec52038304e689ca229c7af0e58bd3dc2169b86cbe0d97dd10c972c7eadf9740dcd5454c43f7b72fc2f72ad1717e4c08e37b5f4ed170598c6271fb6e7b4edb70d9fccd35100da9339588e041123d7842938c24a1e3c4e1b2599b4d52677e7eca4fb98a9c8d3eec08d143c49eef49ed200b0f92a6a453475f94dca967a5bc44792494172b7b7e6ea23c126a070135b02055430a45b24b89148e5862b2e5fe6032659b92ef96504ca43069ea51719010251c95bb2da19828e9b8e4ba251493126c1b779b14e1b4f9c0f33265ad28a59452f073cf3b4e6ff92f9ad0f0a61ba594527aa985e13c564a29a5947e86ed381d29754a69c594d270f57352aff6e6bbb136bcc21cf8551b18ac72dd07001ea1e7c9aa9c61a30d4a4727ae7ad9ca0fe4b86a2357812b9a9c02f3c90170b1e5eb1f624bf90490331bd286d49992a58c3ed6b42f810a604a9e3efbd1ef4edacbefda4637a58f5cb1b2b4f137c33a56be6e022775e84b5df31c7e362ae59161abd671276f69852ec73d5bcaf5a23039fbf9eaaf3066ee6c1b9e43f9e3326a838e756683ca0695a492f9e47be1cac6db903ef2288595fa6d8c65fbf7dc31a131d78d005247b41b476fd1e645fb32102b61ee3ac61430817eb8eef3be29660067f99a8b504fce0be300dddd5ff84829cdb4522d646fb84cfeea9b624cc6fc1cfb35bf29e2ede5af565bc36f8a31a11d6eaff54d9102b67e07ecc7e0dd02ef6ed9bc3d57abe572ea19113325add35b02b052c33967ad355fc99a7867ac2b2cc1ee0ba364ef5ba1a54e1825cfa751097cdde77d22a8e03f10f6ca9f96fa4347f940ec50f73cafddf7b9bbfb5c7d12b4b6d65aab05c120f912afa472f097cdfd138189151198dc8c6de82d10883cbf05922c678cbbbb0a2492d6ea3ccc49296dccddfc695b30d79d2075e4bf18f3adf327c745c8ddadb59616336bad55dc16b7aab5f6f3eca5f96745cff58aa9e162385bd271daa0a029c214e00224d0acb5d65c5f14f50a02481d281b05bab5d491df64a340f7943a52f46ee894beb27929d151226d14e88f6734d251caa7719bbc7bc69be9b6cb8032668d8d4dcc0b478affac48b3f7edb52f30665d60cc6a21ac6f586bed4b29e5cbdab9715ac4bcf066ad7d9adb6a6d753a41f84000a58b4f82d66200b6ed7b399fcca92fada640dd64b68fc13a323b365caaad76bbd8f592b11cb8ad06b66fdc9d23c70101ace055ebb53596e5bcf5d6ed5b1bed02dbda6dab77c9ba63ae6eada7f75e8fc0b6e2b6d5a7bbbbb86f0440192217545938c0ca804131785b711d68ad15e7b6d25e0a767373d75eaf75a5a99d522665e10576adb745af7e4f0556c67b297652e77a607b90e670b01fd82eae76e96edbc54bb66e7749c97671b5dbc54b77db2e5eb275bb4b4aaac55bb5d756bcdd25161fa63c568e96db960372b41fa8d5568bb7abc456bcdda5566b5b0b6ca73e95881004ae3fabbd1be636ee0359396cb95e3232311f95feb2b5562cf1588966ad152669a472863d7d1a0590c3eb9bb57e9667a18be16e85a294355f2ccf582c66c3b2190a9d2c6c5aebac3febbcb5566cbb34c9d8a09873a2909a00301246582167730977b905ab29809cd357aeef5c5a5a5abaf7deeb0fbb3418e31923a327a327fa846bccc0a69cfe56060cc2313e6b7df8c79f9d183e8ba1db7b5086eb9538f79c7352e9be5a69297556bf5aad366edbb66ddbb66db3735f6badb5d65a5ba51c2b51adda25d20914f37251a059f30d9f92ba0452f11e93cb54b19352674ad18793a2b3f9349fc61a6654a8008356af825b81714060888602e40f5bbe90f4e166535a11b67c1d49c2ace519ad41c462b1582b70c7b7d4e919cede59333292a9411423b465498c4f8341f6f576b3dd905f969696e4548d29027da31d783e71793a81cee67c923af62ed59824cc2a4b4baf2dcb8e49c2aca2b9ece859b2e332fa37373738f786d69f46528e1c37ab3c4d282d16b5b20083eab36851710df376ed52283e85e199a54a974d7f5be2b2e95f4d9b4d30703dc9f746d997734b9c53469e40b5569974b1a796a188a50b9919991184680195e796504c58d8928e43b2eba9db2164f292e5e3195c24919126c63d08d1a2e24493541608abc2e66cfb625bdbc2da97349965d324976db1d817866cfb420eb6b530b8b02d0c466c1b751465dbff41daf663d8281f51b67d1a944746fd7061aadbd5a35ca061bbe31c76da1d1ec36033cf3c4716961e47b400c4cea6d9b4c0346ba14b8f146cfa319ff37ec203af38e32f7bad2f5900b3ebbbc0a08a43c0420d5a78470f22c0e2021692f26c05fa191d09b3699ea940a38c5608a27866946978bf78b020f3f001869998706dfa314ec0197f99f60a010ebb7e0ec10f561862d7ff603ae020c67321b582931ddd13aa151702961d275081885d1f671b98c038e32f6f610ca254904a8107bbfecd394401ab6ab51a0f2b847ea143470ca27484d9512968d954884dbfeaf004a594524a5bec1a55bb61d71aa54b9e998b969b153fc8e1891f4f50fd00c8a62f696c784d6d0cfa9275da6793e0f7dc5a6b659032cc3de73248196e01bbd32481eaa0f85784b14a94a7c5c66f97b6ff34cd3ad9a78d9fa747de9e664f60956af611594a6db97944609d2c15ab6481ac1525c78ee3243be84a74c4f8719ab2d59e44c795689794ac121df1e3f0c8da2a491dfc38469936a12855cd2f3b680f07227da03c3d7242b1489fb9f17b12e5d91e67fc94093983399b492efb210693c73e7eaa65f2740f6bc155d8f8a5f4c14662e3977366c4c64f80d8f8a90ae40c87cb70903c29903cf5f1d31b260913698a801f3ff5217be061e327780886511a5a5cf274dd8f79225ff1c348987e4c0864b140cdca1208a66317fc192bd6832b6fa563f7257e8bdf8e74c49fc51d97e1678916bfc56f95f0db25fc57fc89e132fca08873bc649a55daf867d27d72ef4cc2ef4d5be988c3035f94a696b278a9d8da1b303589c740e48dfe0f9deab29d0682a42de356f9573babf6a6734c6e9a63030049a6430635203c5c098243b7430a96502902073fa87074f9410a3a38e2070a5498f4dd35cd5e77f729ca5d2b75da76566a05450a59be4743edc9a64654260fcdbdec1ef43dbaa46a29ccf479546b13e5a1b3c9c4a956abe9482265c9964d2995a1d569d34aa54ef74279becc1a5292582b58826fabe993f5293a52eb3de848add740aa6f267100dc858ed47ae1b6044d985fb573c1f4cb26b7d0915a9ac56e093a95ea5b82de14802559095682f7c820cf2f49f64caacd5a6dcf1db856db4432e89e5ee848e791bc61c2e402cb40ad474874c6fdac7beacdbe19385b3ded5b759959a6154ea42245ca93274d9a24b1498c3cd53074c6cdba99677758fa95be3da23cf72d129d65283e0b775e2098daf5e52d31a4329628a90cf430d4dfeb222995d1a497ed55d3f0acaa47b24705a8e692d24c7a7aeae58826d19ad7a88c3e1d22d3af4bf4eb514da26f7343ce40dd28543cf3f6ae87374ab729372641f245bc2537a5bb6f2b69b7577bb74d63ceb75a7d7a1cd7514fa4812b560e5baef015c6c8ccd0d4c46c50a450f152a4e915f50687458b51e602841c1d1bc28ed38b39020d8003a0ee58116eb8a8a150b7fceb13c2aeb8f2e8b8bbbb7b0e0742e7c26bf1e180372bcd12f387eeeeee9ec285e265131393a19981c16668646a62622f1b178a560a968ad5832f44a0bd15dc0dc6d958dc1676ac327741dddd3d47e680e0424707c8d4f11caf2054eba212d5bb8dd9bd489563adb256d97937deb7e20335b81257ac67651595a8e630450b4525aa2d974dbe91af9437dfc8af981a199a19d80c6c06462343531353137bc56c5c36285a28528429546415cf7a71e538380e37de0d4e87c38263d102b718b75176652eac0b102a08399ea34375429828a24c9d493dc72b08d5bab0f36e637881f0fed537d48511c982eb70e6f46ebc6fc5076a7025ae586f3f505959450e53842d14f603b5e5b291b17d69794a990d2f905f31353132343233b019d80c8c4686a626a626f68ad9b86c50b450a40853a8c82a9ef5e24a831fd62b3efc5501d4b0e2c6bbc1e97058702c5ae016e336caaecc857501420521c77374a84e0833049d10724070a1a3a375c4d7d1d1d1d111c00ab602a41c55c406df2b3f01c3f79560c4e97b7d2f9b9bba03244138b999128412132d4dd8a06506b74a0b0bb8232d357446b424f5a0a5e604105d361be49b2da18070da840061025c25b3d8120a08a39b822c534064714ba82c2bc060728b2da1b22449f901ccd6e3072e4c7e9872e4871ab6177ef8d1d5208f5b4261c1c15582e54a0eb0dc50856508a743ae79a24322db14d11d5db944e4145b42f9e064073e8ce03ae1430fef87ac43031ca0a648452992635b424929112165e445c928b684ba828409ae5cd97145074fc7952558aef8087245077e22aa6a47541047d9664ba8a825b28a2da1a28cec04604ba82d4b705d2a062b0a6090a9fe55fc4d9d5d5d0996199ad8ee79089117dcb0c4892d2500a2e52d6fc0820f2e406a3b38550172774cc4061f5655cbb74545121d49824852c40c5190d46053da23e3834cabf36d28cf44d214802d8522525c5653b26cf93026f233112b32aa482d5751d9f2c122643a4869428407134d43866849591a82c4854c9b4986e8900f3b22dc526522253d119259331c6df9f257d8407eac071a27a39022375dc26cf93430f8917513545bfe8d969915c430e19c5cc093b5cab014856ddb36154a90b4b32554103df44c4f055810e08b2359b428319141870c2fc840457ba234d53a5f3637392f6e2aa546b26c3a82116c4a47d0834d49f0c3a6479a8cf4b029b82b6ec8b4d7deef33fc7afbf3ef532be299e911191764daceb62f187476636fc87bc7be858d42e4faf6472132fdf9c2fbb3d65afb3d443c99bd39a50f9dd2c74ee973a7f4e1b69cd2a79b734a1f3da50fce9620ecea62d7975253fa8c5b4ee9a3624eb0be578b4cd9f33d19d9963f7f53d996514474d8f33d9a164cf67cfa15a9c56e6c58142192b78c2252b5a7b7a2ddd834c7566cf94ea408d0e69bd2e7b7149becf972b565141112d012644478ec09db322ac80af674265e60d0a68a01057b4a1f9b297d5040d920b5ab28f7107b4a9f9a297d629b6a48d49ee00e926202267bbe87438384c5101dafb78c0ad2c4cc117bbe8a39a54f8c4cb86554d2961d6efadeacb2278a155b4609b1818b6f4ed696514933ccb9616050d2933d7f0cc224a78562cba824a33dbf7a9595c6ac6818d854276ff92e213db0886d19154308ac2d7f3ad9730518b4a96280c19e3151428cf67cdff9a68c902221c86c19150469cff700f04de9f36df933e0a6caf465540c5df6fc9c9b2da38268d9d3b3d57a1733ef8b82d65a6b676856341436fd9b6f4a1f39df00e0a60fa6d31186884c530497428e89c23b64153660a50cdb320a49881726c76c19859402c725bf72f0bd90bd226e11416c5319ece1db91bf1d381e3287438725734d3c221927e1808c6048be5b4601110244deb68c027284002046f7626a84331e71167fb0030615478cde892580a468f2a4c2892e2ea0504ae184102dd898400985132d8821a684cac6892620354aa0c49cf841021a25463561c00c81d920e53438cc10249899c10916a605493248aa66c2341112c3f44586865961c9ebcb25588aa1e283309bb673839609b6bcb004099948b9f00e0b7c649cf197912cb57c708217584e8c42bc5383d10a67fc651248e51d9c8407b8d3b3f3a2c7090c419ab640f940851e3524f1c0054a2995810acb5085731338e81174640bc63b426c8cffa3330984f1c330c68f337e1afeb0ce34d4a84c1ae1a3241a947edcc14f3eb620a6250e053e6e90d216bc836978c1eef4ecbce849e2254998ed684865d283091295c94dc3b989da519093263039f81154822f60b8fc08b2a10646aa475053ad5291012dd4e8e8b453c54a93289bb6637f906b68a2898f2dca13dd0a79b5444724b768606d905f30e076e41c6505d9e6e00dc1a46baae1085e227f5b42d50064299ec5a874ac18ab8ad6292a0000001000b315002028140c0844029150108789aeba07148010719e3e705e99c9a34190a2288a6118638c2104100400318610470cdd46026df88771fd61ac7e604c7f18a31f8cbdfe09bbb12cb252aabc2150e1559cbeeabd05b0e33f7d2f4da79f8bc01796e461c5c52a51db29c0da3316f8732f43b7be04fb8d302868e8fa0d9397c1013e2277108e27d0945c3e0fa13f79dec76bd3bc672850015ec5e011016dbfda3725527b8a3ac97ee738a368def429800caded0d271bca861d5780a3860be1ffce07d2d525778274b95ca57b0eb5c0936ff06ad6446d5fd2e71564e2135d6fb2cf36cd000b84882f851c0043debcbf52b1afd3917eb937b43257f11d1684e9ca9544184a71e8e2d880f1014c1e905f4ca1c350aa02436249c88f116319257bbbab7baf949a97fddee402f4700c62ca2e38e7d847c2fb0d336246c1132fe0d4f340d80d8b892c6b92c5b6696e611a88bdfb4f718c0732ce528cf213995957c2a9b9219448ae8100767a821fc7f816e8517e5701ba80b87f60bc132f63aa389b0b0d47395e8cd0245a26a852f5d128270535a71cbd1c271b525d6c794d74a659274a56a8d85cf82d7b38d8a475b33dc95578c42072e8936475d75608839eeb71db6b4d1522a67ed5467682116746286723393815ab5470afc850e2b101bf9a16333a8aed6af3dde058656386afd44fc222c489ed330f1c24c46d868bc978f1b3dd4b6c03e327ca303d2f3b8933b88883bf9f639d97f04eba16eb9e1d982cdca4cb4a32ee11ab1be31eeeb9c6b43a1efd40c5a593726dc85157b91ac0a1ff7318eb25dbca0c0ae82677da3165a0d803e939a0ba9f06cda1c53aefd88e20e6afd03f2b686ff2cf5e83b6eea78bb7acf565b178feb3eba9817c1692397555caeccd3781b54a405a8e0308ad94635a79d14716372b54962d0958fa976833a4e426ef247f0ac97a5420d60919f9cee5ce3b98acae3b660868a0c386dcfc00c5ba3a5b1446dd287f4b0006a29746ae2aa591be2a694427771d31055be7326d22d4f8e20fd1d156b63b2b79aa31eb016834c10e021aa4f66c34c13873c12dc6e4f9f35af1333d1bc9281f41e2b0873740b62554652d90543a9dc98506896157e70a79b2ba39dc446041e5505115b140835d82a39e57b2e3d7ad886985bff3b29f114c80f3fda8d5b00f749111333a97be208aa4c7f63a4646e123daa3a6b071d0a0ca527fc0147d544d496e9da19b375f55b5a3ce060cf49d933b1ce3ed44c5fcfa7639fa18a3b33b2b387411edbc0a133c033d576521442f73c748ae035a420b66457ffaad8345ecaf5c1cb95914fee88e4ae5ef025d92eee970a1b26e8819e9b5ccdbedb0bf418dc3076d964ec19be258a7ce413c64bbd649c16b28bfcb3fcba3a6ed641033c971a461389a28d65386844ee7d0c487e489fad850342b5414a816d12009f3b7bc54d27d98cfac434b8c8d0fd65a624d9e8ed40a651fb5b7bc14de5905e3a48b81014b02f42e4a6aca4299dee96aa057a893ef2d1de7f8d2ac70abed835f1459a484ebfb8a35b41a655957cd367dd2126d5cee32a41a243bdb774f7beca9378f447f7cb952909a12c2df1458c97c001ec6dd174416f2bee6e58ea9c420ae0a78a2a2ff6fb6c6f15ea6c2ea88ed951f52babf2cb490816079a459be08df0f5a8c8933278d6f4c70e0585e4e7c37987248550a5cbb1cb8bba47057a970af520d47df688aaf04ccb284d7bf49ab2554871c5ed4f9073d24051b2925bc1c4e382c289558cf091c60a1107a0cc2070e5e832658d8a8a35e6dbf8294bd0e01253b7cfe990d234e106153999475c5594b82bb9482732905c7520ace52129ca5149c4b398fbba2c96a7a68a725073db10194131363966d5eb30dd9b3d744debdf380f99ae102deda26aef585f22a4b11742d17d7522acead1cdcad3c385b2938b772706fa5e06c25c1d94ac1b995837b5b194fe88ea9c7c903aa9434004842b62438176dd5a98ca08be30bbd2c7b66584b86b0978cb02e19615932c25a3284b5648475d9ccf60af434fb9af5d31e9c15b71c20010e28d0035b029effdb0dc24ac735e08fb3a54edc9ab04e7a4999df33dbfdc705090d04609f89f3187e07c65a6edfe65f4e9d21e1bff02558bb35f5f9035c104ae89d0d529364f2ffc37441950e6f8454eaed53363371d69536781f99e39364e6766bd7f2a95a129c6647701e0a2ad24ae7c4955f4eab7fe378e11fc84b3d9025309a231f25e449ed4ec492de8d0fb0e02886f6d295ff709cf6a330ed8f20691f87d37a0c6f9a0b0e2d848cef9b614cf1af2ce0b4e45d69b1a2651e83a702306c1149091a81f1ea5b4a8539454cca549bbac1c0c8f68d53314fde369a2ce702d95f01f09a614cb95f7c720697b6e7fb19ceff639cbcc7737e17e7fc1d26e7fb784eeff139dd89737e1fcbf97e0c3b19ec879f202122603a83bc8182c1d905b37329a7724dbaf8112cada310da8fa0691d09d17a044aeb6898f64750a3e54d0aa1d6db9ee2f8d41adbc912e58882bd6699c67159d34048c488f8fb847315c65ba6c1c989a4268c81c8d95f21672ec4fbb256844b6e7a5139d6c832f66c2b462f217ab806d6f0e979f6ddcd89dcc1b6452179b140e8859507d85a1e59fac7e760a62d012b2d30056c27e00c6e5ad65ed976cda83f685d6ee73e7a947a314bb9c571d7b002cdc8953247aaec6c136023a0e950e68becb849cea106c555dbc4ce61bfbfec0fb330de5168b0317e16be952e79d2d182215ab6f923b00151fa8bf6410d09e1484151d96da4f6ba6c580e097f1f3e68f2995475370c340fe2240c62b76836c71345abe7d19b1fb28d1ed26cc84abc784944f14248d105a8d29570a50b908a0ba16ad740151784942e81ab5d0829daa58557a044321d1e5cc442301672cf7c49a263bfa6bda2ebb10cc57f950c8797ac91fb2afc90ed40282e802a5c01515d0052b804a27201ace00244e90298c25ef1238aba543870811d0f051d5863edede2311388eec9418ac738d665f9fd2ad06fe9641c3f0e200947cb53b7ec5da82b15dc3a068b3b1a5ae115d599c3010d2de98759a19f21394a2c3106345093074a40282672232e7883c15dfc145bfbf1c56125134c620b91c2161c964ad4010d962103c012ac80d74d27c5738b8443952ec61578ff25619e38c7a8bc25a6ff9e2f1c958b8031bfbef08cc1b0081ef88d405bd316e719a475260153f8f4cbabf5bbf4166ebd5772523901dfb9c3f4e14ee5912ea5420f5c3c0c999647bd2039f9247685c202dec2424546085d3c94b7c22dbf4c712adbe7d498b9a7147b198f84d2b55402ff74489b94d08f6356582541c0b0d042e8f24f2b56a40eb2a025eab9b0829cff9cce40c242db26a1a51114646641454b3c88263cfc4d14a284a3dd7263321622f31e5edca1c0d14005cc6230b405dd8b06f9cef525bfb300012cbe7ce7477eb0dff5e4b51c8ce11a1395e4f03fb4044af91fe1b6871bdaae4c750db0151a5f451a2f035198c2b8ced243a5049b400fc9fe4d28667f126ba19326080936d1a8ed7cd777121a32457cc3d393c1beb2b9b1840e4ed208d6e561639054016974eddab1f0142f366a5887bea6e0c0aa4b125dc113abbc4fce9e11617b58fbf69cf8fac3d8f37df2c58ccf1589b410fab00d29df9948f228bd78e19e7ce205b47e73636d9178a4e949984c541b41d54e2a5a3d77ce648957091832654514027896c351d3575ba2b44dd77d88698625f8b3a5d5b6cdb812ec62a95e59c64dd64afad6bd63859b5ed5d0695863f9a52d559939ce6a942b4946ee9b940a093bb9f61aa683847cfdc859568f04ec6c013edb0c28e8dfccfb52da18deb9f4ba85d79849b607890c337f7dfecdfc60ece4637d6843631740bf6aa98d496ea6d291cc7cff8615743319cc59d3fd67886377dca2322c9dff8bfa8fc8b093bedf6740045a8eca13d2b4d8a0c8faae9262de56b311a2a65790c6e80d9de7a0a3e336cc32ed78c5ec8fa3c23f29f4064dce2180510c29e2113f364cfc322414716b3e80c8fc96f1cd5b9b18b2933bbf0d38c180c63f884b1037298ac107168acffa9dda73a56e39c06d0fd3c4af576592a5fa1eb8555b98b42baa739efd3c0638afadf08e3dd43b429afccd89794503b33089b037b2947122d966b30575b84fb481cf4290155d63540a9db5fd052a56d6c4aad41df0209e940dc949d91b2a81a43e2f6ef2f1614bbd578250ea2a566f1f9081bd6211c438a031c6a5c412ada0b166b013f37f6cb0afad3ea8f75fd8a040180ae1465cf1bb808c41284af3b83f6048bf6b3114d3c332369bd4736053b52500cfecb6b3bb035684409375bd842d2bdd140d1bc4269d384f7659cf522be606c3df5b9eeafb459e47dcdc24eb514771ffcc7aa21b1baf8df5c5489b0824bbaf1542482d11c8f2de3e22121f0121583e4a1643938995c17ded1d09667bbf09407d01345425a2c0b526d69247dc7527e6fa2ab84836af7639762cc8f769312f6b8187573d6e2749019312c3dcdc97f980b3a9a1ead348076d7050a07431a51880a65fcafb9025b64243db061d355b246a299c3cf5804b8e421370bb7f68efae0b0dea1353b695eab51cba0ad13c30a8af46ca68b462ebed2e5b57b6981404c103043b669badeabde968392411b20d431bf7107b7aeed99bb66235b48b02aa9312048826ccc57bd02233ade4b59e8863095e18a949839af0e26a99b5bbe7590dcb6372bd70013942ea73675720eba019e79f34a43d4017d2d75f6bf05fcbbefbad7c6227fe555865afbecafd3825746ead7e57803abfbc05d8d8233e2c6254bcaf3783c8f91e724e5e63c8699cfa46b1353e9552b9a19a8abad68451635c7429e36ae37fc0bab548bf042734db86274afe57b451e4e9fc7253066902f326b7b33bdd4fafea46dd521df14b14cd3926fa5f258eb552f57b61bec2dfca18084bb5ea7d893c50e3e95341358618177d4ef9809a96f101b02263e87146134cff2d6169d61cf623311fd84e39516de29dfab9f7b8c868f4c429d8cd7c920888cde890b1fcb633a959d131b39ef3841feeae88dcbd8b477d9a20be87393646a454ff037ce7355223cdf933ce5892f2241a8ac15f0e56b4f7ec472e03d8f0e104855d01bdc17bc775dc69ecc5dadb7ea4df8af7041d5343212a4010893034bc307864acaebdbb3ade2e34874fcf0e7b1a84c8f2e959ea4a5d012de92f88d978e96e14d5e7be78e1be7f9f5a92c48d7b4b8020105ef82a4e7742c31a250df8532b8943b30bfdfcb6f462e36a3247fc0feeddee1a25b38cdc41fb8cb98fdd8ea6f417d78c5b5112ed2265764b7469c4a260aae450a8da1758153815454d05a52a4785a86d8154c519116a5830551dd13e524557e33452e337e6db8ef322ac561c356e363a9bedc3754084da0b4255ce09512b8880ce6d1fd586af33490ef5a7e02030d030fbf2e93a651b762c8a5a83a98263217cad5b22f2a4cc85a3747c0f131745e210e66ccf01d1566b0d44fc491a84c929dc06242c8ac4fc155328df60c3325d87aaf916b399f26ae985b70445f74f0183952bd8cc87a6cff81fdbc154523421c2bd58b3f0ca991583614e0b308cc2cf983be05d4bfcf21be15327850e79504226847df2f40340ed44cead255616991f39857de1415fefe76bfd0d5d62154517646cffc5a24dafc1b7259e5bb3ff0b7d69189e02f331d8f2afd6bf9d93927a2d06878ee891320c9fd1f31d4e485c1e6253c0c9d797648aa98fb339accf0d921cb723ae9278495bb4227923adb062ce22dd69aea9121af03f7b722b1bdbeda912ceaa1251d14de2d1637d93f9872ec99300009e54422ede668a201bc72315be25317a56f7666bef150bdfba5a660b90970d305f9de40af0497f29b28d4ad3bf308c77cd4028a2730c49386180c1d4fa0b439b02403e2cfa0b4385b08a96dac080bcf4c32707e6e9d776841fa591777dcf0671e09a07b7656c0c7093d3d71123cb4bded2b86050764291cf10d08a2b5ad13c829099b039603ae7861c0df47d1ef36558a65631dd94e405ae14d79e709e216eca51d604fd5823475823739a4bf492b96c0d899da86670bf6b032372662c54fb1c64becf98281b500044c839bfe684a253f741a19d3f34cdf95febdc11d5608485217817c8e6ff49a3bf9f7da122ac797ec66d64b03ef0d1ae298941ddada80c9159b2f75972b28d6f0a78ebc2b23cdcb43ae9431a173ebb54d377d2cf61011d518763f5df8413574ac07b9b5c3e946bcd8f7dc20d841985063bd3497309d744a781367a0238b68cc3cfcd386a20c98aeacf0168066f5352851108310552de8936fe1458c49409d706f378253920c72d05ef48a4f08c1856852520ecb11733a01c90cb045258756ea449335d5184077ae11b3c457737b1c5146c631c8508d2c799d4b12bd011c3d565779dead622aee0abec64aafe786c79b4b8e1a973e455edc12b6201ac101be75655d7b86404a2c523e4b1844073e05d21266caa3fa413b4ad60926be891ad2828612154ca891117355ce130ffc83b475df58b5de0f0b460224301fde38a4b2ca5e2ac8addef0704c12fe0fe55fec272d042e95dac413cd28860dcb860b982d4b67e1372a01b65be33f814a6cb14ac3102ee0c6e7a510c4e059ca04867ed04d448f5e1c602ab127575ee246051295c2c69c502164235db02c8824da54cc2f15623091675d134a62a9a41a7fe7150941aa196892986caf4d1a37719ce3ad69532ec04f7a4337c81f77d1e60315a0b3f446e3fb4ef9941d508828bdd1ad053785c9655e08dc269ffce3eb09913e18b6d8048c66d02ed61611bdcd2a8be4654c6e6e8e5f45fa8e0a15d08ed8712feff7184068224ba5d32f723c2275ff072428eebcfeaf7fe9cd936ea1105bbbbe5d83e0f8f948cdc84a8a2282d6215dcb2720a5113404e024b94571a7cb4cce0485afdfc2ccdca000b36f2fd1ba29fb4407fe44b6365cf4c092f292ab9385a06add3fef9d86985851adff20a6da815f40098a1740b805f54305b9a482b4dc48966bd496e39de51198d0c37be5546ae2914ae33f6cf3c0e18e8b0f82051d4f1c979a259e82c49b3548d39bb1b29da993ec062a7082025a27bcf2150251872bd5ac3db38747b66ca6710d5134249fc795a68554e24aab4f2647782b27eb954b8cf8cef0618840817c09aa3a3010c2854ca9769a922d6eafa7df67fb8b64d26d98d4d2464aece2ffa5b6c9d138df5a1644c2114ccc8173b18c7959db44278a4d49cfbcec06a5e1ca991e83a5cf03874c5e9898574edd507f3aa5c28410186bf8a64749c740f46a1cf4df2486f316179267c1dcdbaa9b8dd3ac0aebde226f4740cd4e29e9b7705218ccc3ff8467db45403de8ce6d2339823c2909a2e849fb50ffa4802c96a5d4ae609961146e89d18641fc62327637c4853073a6745a6f566af9714623e5a699f799affc947ea3dc8558cbd72b678419c6a08e58390df6e1202616c4af12679d6f02cef39001434b6813e1153b6a39bb1005bae9ebcc95eb730b4fc9512255df9fd077bb155ae041662ad6261cea5cf2729b935ef45d209587f6d8eb2991159468293c3c76d494ef18a61e6a7805789b2525286f30b48499df75377bc609fa986b5cbce2a70d7f7e775e5c67fc16cbb480719120abb55e2442ec6f48ad0b31060902ce6e3784b96d1f7404293ee961c9a045be6ae3461c1136a16b5a192c797a7dc51b2ccb6c0a7f0912511099ae29943c6f4af77441c79d30612f680e9e7eb17f4b3b0d605943099015dde5f29765c22a8db5c04a0c4764e055cdbe3afde7fadb380e930677bfd9fffaf28701ed459e4fd3da2c78fb5b87786041167822eb0584952c3d37578d0d34896292b17982899f974cecfe469ba931b28f81962272ff05b2f54e932f7d65026ec3dc5ed4ddea8f8d9844fe91d8d85c0b1c025dda6802a6d345ebe3abd96a3e9b50ad9b3893ef603d9a86f41152b8c870addd544d85f84f5b464fce4050d385d1980371ee9f2e3ef63d46b12484a82b2e03e17d9fd2f2a8abf77904480a21e78141812f8bdf7bce2a6cdbf90251d77b60420809c4ad058d1258ad6fc1ea0083f69a25698320004dde378f8207f34524d1c61d65f61781f6069edb599c9830b45bf15a2d288d1b8c325af0c3d6b4abc8d13e95eeadb3478e1e318cd94b1a6a91629f6986cca2e3e77c6bc1ae722d51c28d23fc2b0635675f01f11c0960e6c3f4b10c85fd11a9d33d22c8e01cea8758319dc49813ab7d3e632fd2f10e168383295e13fe1a62e0da4e0ddbe3d0538488e1f148cf73a42eaf681c64e52c1b53024f93c080682ee26b8d4adf623bfc2568f9d7d5af2d2d4b9d84a9e566647832bd2d0e1cd16c96313680bc410c5c09f82a708ba55b1d5c7b34b9e37f212033faa2c6a8c5ffddb87256927bab1495c8433c234c7ce58a19dd5b44447222dd3e7190779ec217f24121f70ea60f4e4f1f5c6bc71cc2813c9f6c9debe9c94af0cc2dc8f153508f9bac1c9e8365a7902c5e1c72ee542de1354ad52f29b1b0134ac8e45a41e86c1d7e30c3a1f19abfc0f34b8f7ab5be311bcc3b55ffcb0586f1cdf4b3afbcfa7fd2bc56a5a99410380f919f421d7a86aff1bd1bcddcc312bda4e557f3dd4d7e97f710fc28b382848bd33e47007f16b1ac1b1d316ca866c43fdfc70a386b6f1d34f0733d5ce9ccb8eae7da26c7e6f4833c40d059c9c727db0bde4a3b3ba6ddd3e45c0aa75d983ea3b050aef3501bc90651b4fff32708b42e29eb5a70e842ac53e3350947f0d69d709cee0a6bd49c875de2f64ab6512126b9f7c764516394504d189566da312d6a6580d563816faf874f69616596954b7cd392355e33a5d6bdd3f12a423853953de1c68a3533af3ab154447b71de53e5801dc5ab4cbe4ffd9dbe19175f941dd5965fce6a77dfbb61619611bfa81df2a0d1e0272306f644668356c80b0c853493a6d2ffbed526a4395e328fc0b93afa7122a3377356688507600a4ebcd107023a01409747d342d70cb60d0609cacf9de288390bc913bd4cc183bbc02ef310cc12d26043c34e85bce529498fbd26452ada6b096f68900f921eae6c30837cd526b1450b9fce84ee4c1ff43051f742bea1e499be3d231129c87a8f67158f0e1fdbe7be401123cbffef94c7daee296099489f3ed21aabbf9f760b538bdcd48a795fe61924bfa5dd71a34f1d88fdca33b63e4af7ed7b5d9cd6095dded2b7e873133433333f8d8bc3ec13c10e1f361f56d88b52d7a0de6e9681b4d0a873daf85fb6875915215f24c5c3fbe84cd87ab6bea1d0fae7f5318c210eef4ff656d869a1d22185f7078b185465cd2c026add78de0e474c5432a0cbb4409aa0202c9bb03ffa03c7082927267eb5c71a38b71421b2dbf54d0cb956fa65df890e82d52bc4f41f43ad136f76e12ec85274915889d0da1138ee6f7eeecfa4c4295e5161431d9d6f82bae75c2715f23f195ddf79242ba46a0c50e889a913855cd5c9153e90246ce6e2fc1f5114f215261750f24543241899aa948657839e149e16e42d3d435e2137eee17225a2089a72a695b1ab709d4a4593e93cd278297e51940787dfc7fbcd580a6d746ce2eeeac4f8885925eae3fe03a6889dce585991300b1fe63b1e4f7f17db2ad97bd10d545a10cb70a5e22239ad6d4b818dc21c5d830cf7623502b1ef500bcaee606b256931af849c7a6ee4d40a38d0942ee72305c41ee61f01bbf24ac0cfb35ec3655d8d6c2be26bd0b703820c0eab42c11bd31f30c31bfe2f2ddf6d5785c7c0f94e39585f2f5752a4ba03b62229aff68b3ace0019be2bb4188ab8249fdd0be080efe10e4266a4ab5923f2e92ece497e02eca228c922f44d4661f363fca9104985045e3832251a3b21dfd2702b97223a3eae2ff55cb31f02f738d63828736fb23138923ef1675b2c488b8ba5914aa04dde4e1abae93d28f1f66170743170f88238ab11ebc0cc0448868e9a0ab391c2f97cc6d997ef4e83e99312e5e7ac5e43634384df8ac2bbae24b987207c1d4fff8083ed30c4a1adac46d40717a7c4e1704671b719a31bdeb6ea6a98c3f9c8f719d3668da11ae8b3eae88010bd2225cfb6360fd4725bd84d780cb678cd9f8b9cc0b361c1758a546bc3613de34617f500b0f93ddc75b59813b126ab1780558c2c443af116a54a651d8d0c157c10df318ec2485f6544dc1a1ee9ced48214fe293351e79e789274d4471b26b40c80cc69c2e1b2c09c33ed7ca6bc78db5ef391a76a547772c0f3e0ae8d575089e2559e24b17c34bdf08ed35092ac4b483b176c60cd64e7a3a92b8df9e00f0b76f0baeda0519f5e3ab6398d403befbb3d2e0129222d1d456c3ffecfcd54bef23b770e82c5b7639a3813dc2fcd6f800c51e7894cae39e5da87b62d16ad8bdb91873ed3eea0b0465f239906ab6abf7477324051272c611e666e7f669c7a689975010d5f431222c874b7bdc905930b4448cfbc40707cf33c83b912ff1cb4144a778b431c270c19f3dacb193ad71e960c26c20180441b3302fbacaa8a18725d23b28b42cb09506981a2aacd53c6d7d092004c1e12ebbf9ed96906494cd5f19f0a811394f7215ce9f7f1e2a7198c4d8ce3a20c3278f2fdf3a7158c0fef771bf601ec38c26196de6686999e0477a4cab49b87cd4ae1444febee2af3250369f177b22efb02724617315d81ce104f36a6206f3bb9c64e8714b04ea0061fd94c452c8a6c031c8453f93a09d4cc91b9202c12d0f88f04d276ef45a107aa6e8e5a6d880b1778ae69cfa2eca31179c1be84dc8f65171edfe2d5172e6ada67b76ca56f56a5a5a764bbb418455a6c266f151b13a52f38bf72b31102697814b7a3fe18dce388934930dd74861c73c210f25f890b40854b34dbde4b74675375af1c20c42918197144226d9c8e39b1348048cbd5822007b25f1b90b2af1421dd4264abfbe90ebbe58d6b77252446bd609b27a5d2c918ba5742a68320020f496f2b666ad49e384d04eecb6d92c220720d73d1e0fa8ca1a18be4cc221db4b0f38fe3b4c1dd100459a378ad5b23011ad94c19063184ff085e7547800d1c6a74b611e0aae8b3dcf0b2d80da503124f954e5fbc2bc27e4240002e1c42f760711c42094cb0083dfb05286960ede5fe071a72dcf71d64d1138bae6126c2858e7e449c4d13c6090a7e6ffb402747473630823798364788a2575682b660d942bff8e8613bd532a1fb0820b3399059eac423e40b847c18aeb0b858ebd07595a9149cc62a3249b97585b646175c603d906f40f1f424d167574aa6b6c2fffa84b35a4081711d8823bb1388b7c3c815f60d1455ce80d91307e88c8d69a9e1da55ff15a0a31979591ecd8225883f3eadcded9895d6123f899a55529abba553d5325caf0fbdeadb02982d29e219217e13d9dace60f1e65f0fa451866b16df3780c3e5159a2b095935cce1c9d18b25f21aea83638b7beee78a0eebf13a76b546c4dac83dd5276f7759b3089bf3b0ac37b8a9ede129e0e508b9612628a2483f4902e3aef27a4e8f21d586c1be009f0854e0100dbecd704ed9b9c2a447c1bbeedaf4a7c2ba84a4459d39f2228b0a022b688de7709dc1ea5c17f91b25a6d220442348198c5d779208efc0138695143f93589deea370e57790b06824ee954276ca676abfab2d547909de81149321becb213e3cd4e9dd8b4a0903e50c4e8ee1997af48c02789ef8b16e2b55525d6962f95b206a15e03c91f0d8c57aa9cc1426121eee97b69004098988174ba1af6dab07a903a41d22af3944fe55cd72f2028939f162c4546280725e559e91e003e362c3659b97d91dc72508b06146cd930f5d2328daaf3d616544d350350bc82ff574e00b7b667af248702e4a668dce413ca64a5dfd74b4d056f609609c73b5bee156641624316f0c923c0928bd027bb3f0a1b7ba101675b5f1cabaaa462037ef9f4a68a0cc06b70baad6afec034af021061862e0f0d920baffefed9ee60379f34128021e811460a7a5fe5f02ec744bfda93f21c613958c237ea387aebd9f52a52e0459c11cbad2d512ca8e2d58854a96cf22d76600d5775deb5aa550a16d79c6dbc1b25f96c5238869c0a09a444eb7833ec182d94730babf742da93dacbc34f638a38263c279e05bd9c65c0e87bf665ab47b3b3e852544db661fd3b0005e5fcb0869936d1cc7827c7ea8605f93100944c544baef0f14e6db637543208e292034bf34e4929799c44e3c443806c2b0ec1c73b506af764c9129fee94010102458f9300e3f1a157f0a6fc01658e1467fe407917b9d8938c162a653fdd8d6d4d170bf01551f363eeef7be1cde6f7374a2a40deda5bede6b50227a25e4dee27f0c206419b17a2aa26f3ca880185203dc652898707db2d57f5b33400133d1a691cac16d24f73999500072077e5e23cd9f7a20c308685b872b4f579205bb3e65b53b710c6ad7b32d4e587d40aca4bf7b99c4228c003eee6e0695be3a6f728e3f06c3cfcda10034be0573081d14076fe8ce22d5931f45792095effce4080a26753446fc7626e33617a053a8f9746b05d08a628677e7140357c1d67eb9ef25f26674a5c47e320130eb6b091c7f61f527d28cd36aae9f0e6dd559457a15d5bb9de86abaf770795c4b79af052c820e11880a00c44d40c4d29f1a9ac2b8af48ad9705d9f44c7ac03d72983573b327c4ada67f534e8dc7b9d652816294413d6597978823aae03fad16b23275e919817da92a4b5494b52557c41a78e47d1c716c8fae02c8f6b39d382667a563a5cf195f58a6964ca8407ce3e0634d70bb0c1a348d77f3fe178c8cb09c54eade6b3c2e71a9686e85557f8dfcc28706e802b8a32cafb39429ab5f7452aa9d4b3dec02dced931e00f2f453c71a27cfd88d2fda413cc32ddfee79a97fbea48e8de559b6baef3c47ae2ca6eea68ae5b4411e070c24f10c875f86c0fe0cdd36bc5933610de558953ca25365281b74f07a2bf321086b1cd0d45f1e9019be01b7671e34f3d40a820d70f4ad70216dd3cec6c1796262d00199c4ce449f71acfc8c52f950e1760c1ebc2f51e71211b004d31f77c7d76ced806c5b763cd3b7516603cfa7b60639c174cf2811316084a2ea7311bf3113d0c819741e8eed154a54a0d32c1485a1c98ea172147ac59d426c68e87f829327ec231ce1c3a11a12c080d34500f530764f33602f71d4b8ac734a4e1c0365207dfaa17f1a41cc5d7ce81b700f43e2afbe761d2439c99daf624e32770892b07c6503ab9c868b79c8e8e9ddd997c895005591d41a7c28aba2c493494d6866d4ee2041667febc9a4fbb532e4d957a14bc246d34e22ebfc354c6ddbd1e3e61e6114772cec872573c938c661caf49272fc96992a291e46c7a032c8f0d5600a8d8a798a531b466380b1ce7a9c4510d9d0bdfe40c73cac73cdf2cbe9cb65de87d569a7a82b971bef6ef031eb45d129f0018d1480641b4e91ddc5da99e30e420a4a018963600b8ae2f849e7e2247bafcb04a41aad1d23b627d8ffe29848446905f76c9f118757ba9a907f16c26088f3c7a41b5d3f6393ed37cbc43bee52bcb3717592e6ec4f4eb199c8ab1439e3654e49d240909f6ae5700fbc8c81d03e28a8c749e11c8a41e291fdec562549942d8d531c902a4cf1e116efa6c3ad6b86643046cd890c6679a05faf5517a934843a1f43d72c4a23815ae6cff4182a4247452fbd29b0e17da5009b6606086b593b084e60e1e07621c3d828d27a311f9202ebe69eeb06ea90da4d372a216cd60b041d8cd4ed438903c05042192ec809444fcc3d2d09ba411a18f35eee0b4f22fa985bd98f63a9e16d43318fd78c6bb7d88553696316f5a28226186a8b864d14e9e3c9a4198b2cfb11e80c241cc7a15835f13d2ae7e3d3dfd29ac887fe3945e57c3c8c2d46be4cf45bf6c41f6eef18f19963ce5661142bb0d982d0bc57c808bc61ac42f7892cc47a4504df4034277191381f8fd47824218bd97b49de4c44bc221ba900bf1f4b8f90b958b442b3b62c83bcbb77addcf84876f71025d989918d4242e37f5a6d0473fe7fed92bb62b28dc11a741e43f4413665da01d0cb4d9fc51bbe3223eab33dfe9254f9e7efa564ce6aca7eb44a5a9610ce8efbc82871c64982889434be3530dd6d84d5fd3bd37648f61f795c232cbc1ed0338abf4be12e17d878c555f1b3114783b2b0c148b1658dbb7ef2623cd8023f0544827f3e84be4d69621c0acdf87e06d27620dba0c7866a03233e0db6aa5a38860931e03a442246a98f4893bc0ce8c8a93bcea5d0e7994d1b9081dd695ffc4b4b4bbfefa324595cee0215d19480338c2bc02286a92eded390cd4df76b1caca405351525dbfcad4c8866fe7b9b9cc79ef585d74765acf4fa83bdc332adcd1d8db53f011ecf6e3a5863dccba6ec0c6d1032a49e3f65afc35fb867c15efad46397b309c0de591856f86e1f812c3bb9b61bce2ebe7f178ee9f83310e97bc84783b186e49e616447b6518874d2b6008c3109e84d20294572ffc92baf0fea87e17d5c45b1ba8d4bb44e1412c55a5daac2f23c4e60eb88aaf1d4881edbd4bd23dc36bef69b92d3706b8fffb1864b3a0eb01d4f826efbf7783a5974b2c80f3cf2c06667808bdfbd4382fe34d1d215728840c3fe843f19a9a10e4b59bd42ed0e6c86694403734e1ac8209856a2c7124c59f06909d659ee309fee37c1d64a1bc2404325df63fe507d872770a3482164a29c5941202b89d3e4eb15dd0c2e5f886909710903e7278aae89bbe39c988051420417439e6ef9d9b29cf721ac3abce4b005ca2a7cd3f129e9b17de5cc9191fcffb60165d6f1e81c82ac9d69044a3fe5f4ae2d15e0a74c3935f0f289de8d940bb9439b8350534f2d4b06382b2b01a1d118571eac4ceb883874db316141213f157973be466bfa0ad709d00ec9e0210a2bc01754e93434eca855f3b8b5ee661b33e256f837e8815016211423b0cd080b22f2f7a6c170c14ed47d85a58fa5bb365d0cab255abd8e2eae31881e0f0d6a9eae2409da22865e2357b957da8d0274cf59a35b984e821a9a3636b601cec1a43d267837644c5b97eb2b036a9df9036d2698b494c6cef6494fc30006337c30e61d8423fa40eacb01c10eafe872df6bc17fdc66244698c90598930d11d4a42017710865125e3e62fecb0f02929149f31a982ec6f4425656b6cff89a4eb0228505bec77c5a866bf100786dd8b6c0e4e3851771ef59d45b8990fbb5c0e5a80c1e9caf0aa1375aa3bcb648217ec36f01b2612f4fdcb06b74e8ccba2004217d582a997ad2749d367514085cc12e2f2a98fd14c49652a275c355b5db1ed77f6ec848c1270380ed0bd1e547793078841b408063bd1ddf450e32d4413d23bfad47eb1e0e3629603bb570f600ac60bc84a882709be053781f0f918b08f6925e0d3bc4d578c0daf619c3c4d2b19e46afddf088a808b4017aa7be2800fa8a5775334eeaccbf09440e0b7eef82e4b160cfe1add551d0d48b8f1186a11b11791cf0343ee67b79f0ca01514003ad3b1c9187c4a20afc8515978afce26e731fe3b7b646ffc92b987f30bfa19d3d80132b13a409b900e00c554d0891043768b20bab5095b07166010621a9f8ad088fc28e66e152ffadbc7f3b41448bd8d5ee6ddc6bbb1af7e0b38c4d570c23583792f96312d59631fa008a947a6296bdbb43f2364487cda71578aa420ab19ee3681208d5a9448f02d531f5d6548ec65cb08e08fc549d1dafc7badf96b66fe08fa3c08516b7a597fa4c21d35dbc5aa5ebae44293c5dc97c93cd51d4894818728872d3faf07b8b5028765506aed73965857de83703f3733779aac41af9d540b8a5ec399eedb370a3fada9ac21232915f60ec600ebf181177ed9ba0e9bb2f63785b29f894dd13022aa58fe6af2470ffe6d10afd80742936ba8ceb69025481eccbe25810cab301011da2ed095d104e3e8256bd3769c3f33daa04c1eae7e881fd049585223d2a04948aa896cd0fe9198b42d934ba2a33c6a677632a7b76dae85cde84d0904e85cfe293e7bc048e23657b6d10b2cc3e4c7e5e51f20835d081f1a280ae86e220ca9f48d42b297bba456c423981150f1d0bf12732b1968d2191a9cb2b81af03032e3cc50a6c8c055b27e4d8233293aef733a98d0bd7f15ab6bac6cc106f17ef9f8c0166f4392b484b76b590a8192e6870b28d975ca441bff050183219717015a547232825fd7723cef8b33f069955d28a92043ea8b22301a2429c81d91c442a01764b0306b92e43f546439fd4c2979cbdc2e5ac76afb0c75b18be57b321bc1c9c5ef763be258057784ef80f170eff9fdb84b70add0573633eb877b1999a052b4a377bc4a1b061eb6b1d4ae48fd8833c387a4994237c79b9124cf135fa85fad28c4429c201ff75ef2ddc5163c6d2bdde14552f2db0d08a8aecf7049f2ee3fdf04806e4ca6a1dc6f2dcd128f234c1c0194a7437fa640291498dc45a687d3ceb5206a9df39b91f9f1ad85cf29faeae669bcb0fe19623b3043229792f469d31b96798c467e32be76db2b60600f7e737a60c658a24455924db0a845f2aa448dda116bd2dbb3018e7632f3d9024dc51f126225ea9ed079e9bc0a74d51f1709052084d81608695b1bd401c43e7300c8d03e256336534749d5a08e981aab841a88ee39fc35ddbd8bcc8c2a4ca2e594de81dc168bd2a6db2eddd018808e5a37d8463b0b4047a1698e25cb558503ad2cf3e6f344c95ae19fa1d615709164453d7100c39fd3e64058940fe414816fa9a3389968ac16d244a67740bd32219993a2e4c0cd9221f43748ef5d6af3afcea8add791e382bf5834659e67f0d4ae89e3418ea270727b4df5fabc9d85b5c58bdc7fee0801c33caed5949dbdbc469e0b6d90a191bed22fd4a4f8c76eed69becf91ef53c828f58d5db22d69b82403ffd0130d097cd0e93ebc4c89668fc73f3c9d45bcb6968a66e1d400004588bf39e2b2b79b9613d67d89380a3773edc4ed1a5431ba7e4ff994d3b5f186ecbc73834749025a3c084f9a81291bc6ac89671e5ca374b09a8b2e987ba2c92b09bc8e32ccdd6d575df9471bfe18aef822ace9d57c1aa45b8603dc3a6b6a19963e8001faace675109f97ef29fab7e831396586098cd194b32fa56fa0de927a0ca8e2a51c8aa1e80bba3e391a0a516738c18d050cf9cc63e26f4b03ddc8e6165f903a3ba43fec22e3cb71b66e7ebdc75045c663133a3f4f0d85d05bbabd87d68dcbb62897121e6431faf747d2bbc341a98732f9fca8cf4abae1c8ad3863e27828b9daf4003a13d704d07a5c4803d34b48b078530de502f16e50c65a979fa5d1ae38bc2d2f7b07885409afd302aa185ef98202e9fab102a258ec1ebcf8a6db3dea579ca2ab5214e7803af7af64c7bf89332ef8041a2c9f973cdcdda215df3521a5d17e69b64661ea805fe2f12e3be5ca970c1a7cdc30f5b2f063601667c5c8ee343bc0e0ff683675881c6154bd0190ecc61f99c2ff23c5669b4bb2246f7a1372bd6f848b0aec2044180b9a57955ea3cc619f423544c80a32c3e3477e0712d9cc163c3296818ebe447da0280d65a706b327dec589031b396c58c312d9320b753054839ce6a375ba6e3fe31fc79f1e7c31583cc1fb32ad5c28f43de328af321131868861da1307f395d7ade9b9688e79a835f2e58c42525f42e1dd861f222e92189529bb946c575d888d369b1222d8674fe74242461e7ae36db492330e03e08610fd9d4129744842f7c4844ccc8773dbe414decb178fbe43b2bd7190931befddd3cb69d95edc889b2d593f501cc55bd97fe542727c1812461c873adb21b1c706eb9a7b5f2f0a69cb6eec50490d1d368edc8bb6ba2d7586fcca4f5a6a1eb3abb18775b9fe9d4de2e63db7aea2b63b86d95446f77be0b9934d7325d6f88e516bb48a9b8cd4250ea63f8c3af8d315453fdb7eefed59b4f1bde267fd216ca5ad18db6ffe5b0342b20aea568fe55ad098e822933817c52d5917a9876a1e600a4619503988ec47b5ce1abc575d4ebec3762a4a9c1b335cf24831935313a9b02cc1dcb3421e48360ce06c46c666c2f9c1a7d03744e4d24e4dcbba35bb9f9beeba61c5a9412da4e7699144c5f4200e35244cf70a2b1441cb2070b965b031bbc04572fe85524c38a5b723cd43e39a93b87fbdd57561a2f3591be6adefe1e11a4ce0a21517e646d51286ae128f5cb2fab8bbd2572a8a97dfba8fdee241fd889bde1e32a6bc9b887c57b41b0cae7f9e5303e0d1c25e36cd669b5cce6aae4d5001235d1b80dc631a5cdb0649573fb842950b42bc8e113677b94059ed169aa99bd82d86c6719af285d71dad110a4003697b0c876cb36b499228a12ea66abb5d7cdc506dc7eff1476a425c3c806a8dc5ba68532ea8038219747600eb2a816d0ee0f37ad9f4ecf27085e8250c0a5cfdbb8613b71215b1f9c36ca949d3526d398e57b20ded2e77bca9b58fa21897c5b9186378b9a7daf90275bed0028b17427c9e84bddb684091743094add181b7e1d37958b0efd40edbae350a66b23d78dbab1e8bba7b9048eb79999f9d7d03b332fd3811cedfbfe2b4af95a3f4b6e997fc403e65d5d524e403eeb7f422b15c5d2f9c9bbeef1153a076eafdf2800f6157fba54b4bbe568c9e1900cdb128d74e993fe2a65ae5e311426083815233d25b1eb4af21f3d40d16576bc2782ca545306b820dec7d6109c8e73f5867f4be31f38226250d5242de88ad54824299971341efb5790a083d56c04c23bd8738649f1abceaac563ef09e1ea64d780c9cd782abd4f95d2184dd2ff159735f96a27f26c15d089ec4f07f38611eeec5cc922c434dc888e6573942aa221382fd2080ca6e89afe1a2090e00c17dbf69c40673619db38cd20c6bc7c9b6f9d4e96f9f3fd8247fc74ceffb5b180867f667173f5e2859b3a830072fb3430fb06e1800dacb9d98790cb81abe8536ae3a10b3bdbfec1d5f8d7149095a9572f90f2fa7aedae02d9231ae0ee40a649192f190261016f386b8f4c878136bc6d5f6d631f4924c88cc3f1543c3c4ab9bc3f6b646fff4a803b4e2ba04265a12cf6745288fde4441a2c8f740d715efb775039d9ff5b7465708bf1d39a2b24d0bb0cf021ab78ef6f00eae1f635bbef5d4013074d1a8a1af632e7e24db923d8bfdcdcd579e6665b08ace019241c9c06cd6f4dc4466ed6d124a88eb440c923139953a4f9adc3ea4347bafe7c181f7df3d696d81e99ebc873c949c48a922aa4e359ee092b84d82a4b1848fe019c13ac630a79725027fa1f4eeaefedde826e3b6fedd9b7fbe8beed1f7e560fe4486d7c4bb19669e0dca7d31117a1b2a1f1b428c0daaccc84aa16b8f19754a7bac74dc0df9eaf7a9763ef6dea9d86093c627166f2b4fd2939fde81f51342b7b3990b5a1666d58dee542aadae4e5baf12874a4e4499f5475efae89164ab73775cd133560bb9718700a1973bad5704856ec3a1bfe41cd218e90345e68020fa2a561a1c23b7905a00c7dcc1d471da9a3cd360aad7b12f465dcdcef4ee8512873b3e7b68688487737b02c3368be84a6a8e2643dc0503051142f980273a19dad9c9f940a2734887db7d74384a182db8924c125e7fce19e6197d9803b724aed1e99154c7776b6cf95ba571d20fc5e670c2d7ce6c0cc4742ac8e25e6b2fa89664c72aafcfa6a2810b2dddbaa4d83d119cd9fd53f5e5851eccc78eed86dc52aca0072a615077d393d6c89f147758885f62de071f476872f3da343a5bfd5a772e4c29eed726285b00ffdf19a310f23016b6e0c5922fc7c4ceeaf579072946af901cdd41ea3d8df4af3689dae90f0660a224e5e46503dbe8d02c3953bc0456977d20e7769c656be321472090431d4a67cad40f0c2a1a17b68436cb407b5c58ca94c4c35f3de5a9037685be801c6e4b82aea79c12f2d401f94c3b4eb8ae9ec447315307b6aac08909aaf1d243a55117ac1ac8b6da80d5174a317bb272155177709c6460b086f5c9e3d5a5468b410c423aca339d4037481382d8518fd6ed50b7e4f44b11ddd9df716e7d1583a3c1781ba372cad7bce9f94994960af770836452d2b92dc7ebca87cd679f9f3a05f81a62fcce4d908bf01a95d0e0e5e7a397b72c70f4c904a37bae3ebc140e8c0666057a53e88e52e584c800f29e4cff349e3f2c2bd38baefccc788c4dc28b0f8179155d70f1a78bd268d979f120ed660102b42981e9d7832fe5b7039d13c7b7f1d43040135837249c4b7637918eb2e9154d0f6b7bc40483cfb90f99b14a3357d63994de7d8e223ff6386247d8738c6ff4e39ae760285867820016cf5faf778eaad2f6cb81d1f34769824c6b26fee2620bd3e4af145f1080f6d642ae201c7ab6d4cd3222aa48f61210594b0e4a42d759a9abab4f290708416bc62e2d40748e73bf40b48f2af8d15a6a7116c8b50c3b349abc94f76f71d6db5d1e43c912af8cba16f9957ab581b055adec250652454d9c5e710e53110964582958df19adff42b63250b354e80741ca0a85bbf15e648aa130aeebfafdbea76d3c431c7bbaf82bd4d341e76e9ea1fdb32664b7c017c5c14fdbf53d50f10f3a61527ec4f1bbcbfcd674e667bdf386c6f7c29ba436584c186187ca7f6c79ce1fa5fdce207123892fb99972b4c2cbe2020d501b6a1f4de73a542b87a25933d3d2a39d8216e63dbae2dc99311121c198456e8b8b904a4d38d072c73e631ab326e510ceaa3748e7f286380412d9be74978f822b35e5f38255543f0d620f82a1759f97c6a6927e4e43da9dd81417c1337dfbfb0a4b266cbe8c5ea0b43efd63b476d20abf141f5b604f6ef27d353b2cbc8e909a7df2f185bf993392cf785f93cb4d1662214dc7c668f952bdf1a1494be9540e2c767209936fdde5975f58d85606aca68950431a6f7d85f272ee7e508ea35cd2a474348fa0457e199cbc972b2e381d315e3ef7efd8b41a3055f9f46ce0abaf0b3c108b17b1a8fca50b9a131e6fcf5bffc9da113f1d5658d3eee0baa7013ee0be477c7ce9a51d124ba176541127fd8c27121c6dd357b8f0c61cdee1594d22dcae3d789e8c35298edcb615b4232169848cf9ce8c040d5fcd810c9df34cf1bbdfed497353840ef7ce43c128acf9a08b1fbd9bd4679b01eb16ae5bf931f4b9b9a53f37dbb96da1f2411f0dd4f13b4b370f3b650514b15850930de0c206329488c888879809709cbb67d3da86030ecca41a8fc3abeb6fdbc49bd37f8475e49885ad530eeb0c24b2404408696bccb11d05045c7b6ac36a08ae42f6a613c54837bf092fb8cbcbbeae85ec4abbbbddfd40021d5bbe99217bfa9770d2e93ba5e8996298cf6d843274dbf9428fd72feaffa3b20dded6ec92bd8e59f80adc1646cf5146033865f4eb85792d6a91c1b35d3e3e2b1f7ba96ff6c53884359b6236d566420f73a6e6f1f2c6e04c2f5c4916df95ed51d77479859d8809160a5016e43892933c4ba2545819d84a802d0aa220f498b496b600e83a9244663e3b382e9e1d8360240cba91b1dad464a04bfff04b1563f47a891aae3e5db1721358ba22b97d81e1482b3b423f1792b65b83440e472e9a246d48fdeb7b56705cb90f6a20a0cb5eccce4b872ab8452bba6a80ca514201deed30c10e9f4efed9a5bf735e9e6f771ec3ed220cc994d4e494a9347a8661ccc8900acf3f10cd6a1ca26b3304a544b7c7285379fe0d9b0077320a20bea8f21642eafa4fe5559ba62cea54c4a247734209aee7b8b41a6582a237cc30158df83c5486ca82fc881a644b110f0f04a4038b7184e951146efd3d0223fa306e526de35c9284236bf3231bbd229ac512c850ed995f7de7cc8241aff537b846d448e84941d0bd0c796a65a64bf20b4392b279ed74ce9af8bdef26c8194347732e470073f011a27f32e429fbe00ea237c41b85f89b2b839df12b3d575fd45c1501ce68452be791dfd481a40a976f8a05052c108e1e8ed2fc1489b993ca0e4b633304961c3b84d0f4a2223ecf68785d5f789eb8c532a0c52f6df0b651b96e3528c29b469a245bc4c0be280910a562487e63562afe344c5809dc3660b7d5e34767d185cfb16a53b9eb63f9d8229fe73bdcc6a3929161167aaf89e58fc2e5702b45bad99cd7e88a1d755bbac79cffb3f063520c577dc9a1fed3c201ca767d66a196cf31e4fe4fc33ce04d9a32224dff0c3f5afc732c5417e54c796b4126db25a4d5356d68a939d9ff9e37f446e98e638c147bf9c2fa3d859697ecbc29e1ee600355a3ef6dda8e809e8f94fd07717216a4063def1802192e6d36ffeb523ee155cede0932f5c833b5b82064a0eaeb828fb48c3ba6916f6d23e68b441819b8f4dbcd40df0e346cd0076c1b9a2ffdb930454759905babf1f751f6cf9575deb87e01e515754ffae70601ea631573fb0a468c5e93b94b7ff7669e326e65ab25e357f22c2962696d25731cf9ab7c594733d917fff69ebf921656062f936a38f8883061077732936e916c26423473df05cb0684c87ec86b3edb42b27cfd877c4a409f34949bb7b7cba110f8d02b9c16ba2e5e47fd2c88bca29f7a5757510496810f746df0fec32734ea13f33a170cea6254a51159b05381b46a46678d0bd0910d84a2242f72600122c5c24a9f6e7430a95bd20b060b2e62cc287d47bb4e7772808eacc084e069140fc5e83d2a837ee30755830cf2e8ed0f1cdfe212b17cf705df210f046d7e1e1a54b8e9b14e5e4e05266a1d4564916d6641a49c540cc275c98358f2e2e6ab41f41b66abce76188f91c62cbacb1584236d82642c6bc07a85409a8f16b006af7aa8e06534322b618e2ac364c671cc5b779e3292ae6ea33f045706c361b440914e0f57e7c52aa6fafcae330d27a4511e2b4656cc282b003f0e33af05aca2f97374361bc121bc702f2acc530bb8e8e67fd1f50ed595eb273c2606fc46613f930b6047d7250eab41f17a36b30f2c3e8c67af2ae731d4fe623b3215161203a3afb03dcb86111fcf56bb2d659d1be0b567ebd06f45837f2542537ccd6f4cf7c4a67cae921c4a98335b641e8ff9016e2edf18b57298a294ddeeda4f1bfd8802102c90c54374c9f0d264272e6073551a71b9cc00216199bf29785a812558a6e6c269884be63faef05c04fd03949053e361d6c4c2ff40d36c544f2402fe5497585c8edeef4906969d61dd18a350523ca6eb96fa9916fff58449c0e8c53e20d46279d7c01c16f04fc806d89c9a67c14cf7a7d45874daf751c985047dc59b9b1dd9e0e7c1dd8a6bcb9ca2eeb940f86c9b78334911075e88c979c9d813d0f692d73eed0df839271a4954de6b5cebd83c150979fb1adbe15320003be166bdd6a02adb12849bce088bd7da5c775bbf5a66c062a0271fe7de56dace701578542390b393667f45e904d6bb1eaf241aef406557b6cb8bfac573b8efeba817265b67a0dc8d284ecd0693c56dc683380243296fdc041b41949185a1426f2949e674e482098135a2cd508d3c722ee25c8193dde180c1b8a8d5af962a1c7cbb08862de930632f028fd02e3c0d20ddf204779d6d2574dd5d8d15e23760b1a89bf276137b8827b5728b51d72fa40c6ed81f2bc9640b916a5e6a85457d4829a95e1517bae6b856936260d77c4d53309fb0c75439d37aa4dcbef85440b5d16f922043a7d9b8227f8762acbbed62c0d8df79a313571bb5c900458b9adf39ea455aea26fcd704af5242a243e45e17578c0b455f168d53bd3ac47ba33b3adf08f6eee7a69166316596d999a6959cc2d7d00ed080916a6458c943947edc8d839e323d7f2ed49c2473147db8840fa0b806a26c8d00751361edb4579f9e5a0924b978b37276d1e16109d5ce5890758063fc3c557b69f695eb7d432af97383fa5238d8a28294a0dfdc48a52aa01a4a6c483562641ed4d4a0813ec9355ce2e86113afd9a0443548e9599ca9d82bfc44019ae9d0e9118990fc6ac9a3ff0a8a77856c867b00f2f5499cb60c1f79c4f6bb4cdf59a396490baf0838cac36ed4b657de97bc69363bc064a9458512c5a563446ef82100958a3f29243a7a183f3ef74b25e6831ed51d3ccda91d881e17cd6a11076554eb5271d98b0a4a211eb13ce67d3f0a7e82f148c1d68be812021608cecb1b21c1622c74fdf54dd9560cbacd4254f0842beacbccdcaa9ca5d4bf4944d0b0f829da84e438a06096f19d10bc985e4fd79e2f82afaf05b2850d902cedeb8587e94cabef3408eb816bc29330b810ad200d73419fbd34b890393ac34e8a5b8169d34c251ff9b176e09002757b847c061e35ee2bf3644cf3e235c0da0f20068c644c9cf218c76e563ef3da6eab0bc5b37b417f95b6611f877b21072dc9cb51d26c836287195095d659492c0b87a01013b3762ce768764191c7de3ba43e84695833566ee7c1ea4b2854cd9477c3eb0abdcd6f55f8ec6bb844d228672ecdc5f36476e00621a168fc6ffa6296368ec4a46e934d69ba19d8428f162d9cccf977d00baed34921c318e5e4f4f3fceccf879ae0bc026b8520ad12476569e60bdd4806dcc68f47b61e89dccdffc5f6c1c782f729fdaf08565f7618b3a3dc2123eaf8f07d011e14aa6fee3e91e9af56091319fd4a7785d9c1a345011a7545b0491cc8af3588b7fa16c4c4193fd1f14116aab208a395784655d9a522a58f622f9cc2aa89221672660428409593a6215b305d641d9118506f94e516b6b267ea13c6f4dee2fb2186b3c8586a2704e429a35a950097f2856074ac0ea46bf85b9effe982b976203433d74405787d541d8360209c9f205bd7d015f00537fd3413a7b4a4f50b012b4166a2c6491a03c04c4c660d49faa9218abd1ac2c56770c67c8c682f64ab4404f8cc1295f6ee2aff2374e69e3696458dbf99f96aa875c3dbe4955ff55a1db25c2f27f1bfc3a312bb5e286b941c32c22e7558d333dc914da107cdb074d84c1be861dcae173c37d18d668fcc46f70aaf7ad0438859893798f35a5553dd9098aa1b66577583475a75131723e3733d9617366e33659aad3c65990427234a9c542381f7c947168b0e8c455fc470cd37ee3f90caa3ad7b4597f7114780c369d2e3989bb0a8b582cf10af6b572d16df405637c91316c1064b8b35002f42bb8bf9363c3b7ddfc6ee64693b9bdaf24f89fb98a4e8321fd906e0c970771af922bdfc9958065da479d7c221f9bdbd3a66c4e9ce6be55d5ad9567c4eef2e12a6cc22d9162cc6409bbaa559c8e56a2b6ae3bc2165eb243b5a66e235db286e2af9c5ba4cafdece48d46c1b8a0c1612017c4c04ec9481a61a60a4e589918f14317d4d83def2c2903cd8e1491d7f091468970210872bdfa0927467f6970dd84537144363fb5922709cb95de0b613110e9573e4aa5b119d308e36720356c605b8abec27ccd87045f5540208489d95984b2104d7d84d28accc5a74bb0ce62d1a017f7eb77ef2f4efe3b8e51a66325fcef5c1a75baecc618761b11a32ad41c63714f23712258187a607efd529801a7014b97024d57a015f3a8501deb017b929411b419af2f8605196c1d48556db2f66f79ea6f455b7a24551f83660621d50feddab72653c4805c29b6881ba9186df1be52099d59914b3a2511d828afd53bf4b83f1f837574bbcbcbb236396460531c7dbfa80607dd6446e75c560db6838d97f33b8ec92c01c981faf6b109b38ee38e2977a70473ae3b85ff370d0b9bb19f388906725e8ccb4b96c8f8ba7cd42998d96c0173dac32fb5780cfc2cdd602c5d452d80d630afb57a6ede7121eef080a4d234321d2e3def2a8a83b9075b9802ed6392c443b923829517c8054d342744fff3532726f4ed349a111059021e081bb01079f4e74695592b7047b23035d6c86da5f093c7a8e615b1bfff089ee4b3b68ca1d39a6ee540f87f0f443dc4cd372dded616360bd6c4a091713a4fd1f3acda800f0475abe2c034a1191bdfee56e7639cf2e19edf252473fdf86bc5a597de0b081c125eeeaa11def2839452d8112811e3db2dd33154a6ad1f966e9d3755aa9d8d1cf2d225526f4ff708cb2f88b45747c618be60780c51980236db887f4ebe6af21f3672ef98f6c817c7a2688284ec79e76032212806e0f4f40721800edafee1bc63687ece56be3e4b9d647380124bc2d56c2b67580f96dd14a951900f44f019e3aaaf5fb58f16417945b316bfb5441ffb11b3c9493607f17d3561ea5ca665a1f471b5a6e23bea17e5e9f89e19d3b4a74fcffaf3d89f6b091e36a0b09998706601215009ee89da70dd486f785fd07d37340a4c997d072f0196793fe4bf85942ace5dbb5f06a47b7de18bd6a9304d1aeaa092bd0db722558d678f7141b75126a70ccc68afc0640f4fb922ffa59c5f761c42312552f334500b3855740a91e420fe22e22fa4ebbe9813e8a45be37246e099e62891de04f9286d274722c993ae899bb85fd2ba593dc0dba65420b3be21071f53742b9bd26126374b437511f655e05276bc03ddf07f0f5e67ba3bbce5b61bebaf22baa65f9d298386f3ad40b0093851456b8dc303ae9e17443056a7527389cb8bbfbf4e973cee93fe79cee5fddeb0da89e6e9072c3d10d3b54a0dc8082932e35a324376cb9e1614ea8dc70c3c98f4f315245796e48e2c9941d484d6e207292d4748070a890ba0391c60fcd1051751260c01890c3188421b86108108481087e84608720621002b61fbe60187baa276eaaf52b54c817e2a07e918a50188b8e321844858da70c7a83d9254052ba14a3e29379b03c93cee96f607c57e5eaf421c4a6af1322f54400e221f64402d7458f2d61bd5a1b31f01c6ae0de424369a5d69d6ab45dfa5f6655a7a6237ebf524731ac1792d5a5a9208c89bef1fd7a2aa223a81a5fa0a9e8630d0654c8854055700452911b9fabf90aa56216e7c156a8b071076b2a0663c3181833f9c6f8e5a9d8a353e157a3627bb18d91d21250bf928a138963e7eb46851ee760820a6b2f8eae98ecc7417c4985a0c278a98206ca15be948a60fceee257a508b31d5e007f24cdc50ec0d7a9008c35182b386c3007153696c19c8ac0d85fe22e1ddcba03daceea9656204a6a940e3d7545ea3345046f03ff95efa2b7a6a78d9cd363897591e115ea33a7a83e9e407958e0b870fc97dea2146d5b31aa5bc60c47faad9c23eedb924763dd01459cbc8a236942e19784ecbdf7967b4b29539201d608530b80086dbb0946d8b690e9ff6bdb51af3e9da255f56d1deda724c5a56f2b28a349d99d6dd1bead7db932c6d390e91f84c6c0fbfa129037baaf3f019984bfce7eb44a14d85ff1589c9266df13a9689f02d1fe4cb4df89f933edc6efbdee616fffdb380b000a7038c66f25a65dd77500fb0e17e9b7dfd47f394f7ceb5bdc2a268a9e0800d1df38ad3e05a2c7716bedb72776feac1414264ce8149d6292ebd3294fc2af34fbfaf48a27b9b0a257b48a6ea161289a5c1fd3295a855275b8c3f11804ec2f42b3fd21b06c718b7f8b8b74ee4bf40dd5514c46984af4691e5591cb034f6a3c7a5fd7243e91cef83d9cd9dc913ebd11451a85450ad581552a9df2a3fa32945cee8d1e4647a57aaa725f6b9dd5a87e66739bfaef37d128a7d527d2994239adcaaeb9be11ef67a25ff951adca2c7e743b2d55bf133bea49ac63e7093c3c82d3ea7f8c7ff1453f82114f924931be7e43d95082c7e12fd22a94ca6995863d427d7b670c4ca79c56dfe861fc48a790d81fc1935cd4b003d9dbdfc21eb21fc1935c7c7d23fd246ff490bdedbe48e70e8f43a2cc138832c3108d8a5e88d2692e6422751afd162296d94b208e771347caa27e4c1c41227194d55f218ac00d895724d2198639705a7d105e78b435ac607d1e536986a51fd1afd2a577bdeb7b4d3ecd8ae114fcf06d214ca5160f7e2dc49647f32510e7b310e9d0755afdfb444fb9dfb29c4bf45836f4c9a167eecb58b77193793d27f6bfc41ddcb78ef935e420d4416793f1a419fef68e64fbd86bdb9ec8ed7d75218766f3b6b12823a9994fe5edab9ddf526d25528c8888e8efcf0ec227c2453ac7f0c87dd3c771f48f54b6d6dbc4b45610c1361cfb421194348f0267d733c82c170de9cc7d119afb87c072ff1676107ee3229db99794d3362098fbedbfaed3e18eb470fbda54ea2b3fdafe65b2bb3519a76d2f83caad39edebd3d19fae905162f1db7b14134f82e2553c298e2771b236d7d16c3fda98da92b72a0fa80cc525499b4fc74ab6a18a53854371c969369c36bdece68ef48ba03079fb4683f5658b49defefbc0c9417914ae396d620ac8ae74baeca7b9f148c2f42779e38a27cd0f01847d30d8b7d8b8e6b4c61458218e6d416e68e82596973c996edbb68570652b7e7b1c338685c5c344113a8ffe94b77f89443a8758034e0b6103b7f1667981a9c40253a013a907f33d0be613dcf9fe935f83dff85906f12499bf1f6183ef7df86af9fbecf77250fe0871e0945be4b0bcc4c9f24f96585db4f2d7a1a54ea3d469cd8d36723f0d992cb631dbabacf669b6587effbde48662585dbeaf1978d2787178d26be049fedff390b2a944e5513f68639fd1e7b2fcbdcbfeb66fbd1fe51b1ef2c6ccdf73e049f3bfafa332eebfefe5ecc34dfd84c5054d7e91251617aa5c65ffd6c1e7be324cb8d469dd2d8f1c4b0d5da6a47089f34d302b9665943543b2832e252483faca24cba8ec4fff78d654eab83aaeacacacac8e9007c56342c783b2d311f29e8c6476e8c8b29cd6548ba2b9b4e39a47feded3bdb22ad5714d25aae547fefd4e3b2ea71d97d3aee3a27d28213a88fed9f179f6d98a8979884bb1f4fef926cfab3cbe8c2577fc3cb58ec8dc91765cd993bc4dd6d240de7079c3e50daf72256f78d496ac41f2864fc91b2e6f7896dae02857324ef399d36853b5bb943573daec0600240d51d6f0972fa3854be733f8f74a06a94a5529a32a15ab5255ca8f7ce64a5266f0d8bf863bbe842a59d62981491e3b2e245ae156678c87bcb9873b52293a5d767d51115509cafe5528cd93bdca8b6cc4ad50f268f3b4711af5a48dce3a736cb416679b7087cd14cf2ba7f9cb70e1da3eb67a9ef75be4395e79345fd2a6eca69f69d350d056e59b2f3b7b63e02fbf31f0fc0014fa740d3963c07865b9b91316217c3c40286f3f1639e3eededdeddeee2e80d7e854d5b5d121e3ccc9d28d20f9068b8b54b61fea904df8c9dbd350873c024dde9e082b7aa838e28cccb345de915865a49c39f2ce08f44cb18098193d0520a2004bb8d7b8810e3148395835b0684de4ed319f1834d09878a1046bc8851822601a227178429289788f58763c76800eb7711bb771b5d718c29aa11692f4e48d863bbe3f3a6c1079fb4f6e9bf71a3d90c515a1638bb2a34ed131c9e40d4ade1460ebe4ad863be6156b396b2d6739ce5a8ee3acb59c6dacd7981530c728007695b7b7e10637f2f64db353a9ca23ff3086a4216bc81a8e474eca1ad6bf36cdb2c5487aae63113e735f75589087c8ae2af2f6be63c49913a1c896ed13f12108a0519f730538650fc83211d9068e2928db3c25c933a62bb16aa093e9d7d9c83dfdfa2fb29fcb39c517fbcbdcd986753e2916f590f9ab60a55ca593fa9c734ab1a93f4ed1f673dbbebbbf226b41a425d996dba8addbb66dfef43ff0a71e3642dfbfc3462693af63b82f2d74b0b4c041a3c58b16aa2c57626991ca02857f1ba02c7d32105859e8c8e142e8fb24d6f149b720864ffa273bce9baa2b504f5a79d0909982324850569c2d5551507db4aed05499e21a4427ab86f4c7bf3b64ca8ab3a58a42f5d1ba4233ab700da29365b5c59978d4569f36574dd5550871d19191c2f59aa44193217f763339b67124c3c995f555b4010930299f94948a5621c465874e18ab293599fcd97ad3e68a53f913a13c76c88469282d2528888cc363f6c948e1caae673ea9544709549675a0aa2ac8b24e12429e345dcc9e4620d71583b29003a70e6bb28a6334261d4b2ac3277df4a143a84deeba6957599336af647f6448b979f2d85aaea524c5059de636bbc85d736bd5ae161dda1ad282b29434c6f6933be89e6a7912f7be256fc81eddd3b7df51b14867cb613b0595f96444ddae95ba981aa44e232448be8cbe912715d19f4eb7a66236e276c834dbb387f3377144ca5da7fee4fe427794511953ee48f352924b9ba9df1b3f1e9768f2c690ceb4269b19c9e742a66e3aabb7dce8d34cf148820addc9367325561734b9fbcf1fccfee8a2db721eb6edb211b77b1b32711dd740e40dcf96035269490a4abe62225b6bed8f8d6473b1450d38cd620ad021d069f6abfda5d18ed6b970c7e7aefb4ffa10e8342edb0fe249f3392ce0db8fb9b54ff31ab646d9e259b648d97e536d855c64f983145502ed8981caa097e1caab26dae4ab27b676d05c5ef808f7dd4fb148e2a21017c9cff1e10fecd33f427191c435a779bf348fbc59965bf43df771103832c75af6b8f770935c427e7d08484a6553371e5010bae5536c44d237d2fdf29d72f4055afe3cfc6b4b548a4351c8b2960e4296822c312164c972561422daef82885f57abb8d695ba1322660e37d12e5289d428ac2d52b92964969bc0c9bda5dfd5b82ef75fdf7650a473632a649637dc44bf6230856f04837857d95fba5883e20af1ae32c54d1337392e01479c29f3f92e93320d7c8238684cff7e8a63adbd5726fba7d16ab53ccaf2d2129305490770438386a4617f8a967adf874799ccc3b56239b936639829a64e03714f9047e6b9000b0bc329c80d8292467f96b78453c53ca95f0cbaddf24d9825ea5435c22c4d3a5999e60fe6a38dec7decfbeeeeeed9753b7f9fd8d9136d6419ea186532bfe085cae1d6e2f15e99ec7fd63a2b874c3488a4e15f834b06d5052544147a610d1e297eb404c240171af04891f3c211503ff4fc98f2834515c70d181fac004d61ed6025490b3b5c3d01998008ae8620f3860956abe9b1c40b5661a43841288c0b7aae7ed872441a3e7fc84c6d519102072a5f8014e0ce0d50a41043460f15253e1813f582941b1bacfcf131850d9f32649ee03a639320420a90150b770a5155a9a3449ead14903ccdb17e2aa045cc9c255c02714539616b4a1b1fa65a18a26a2b4a146eea84e91a225015201c9441a3c218282c2a6c4122b6040e9f3f48e24481460615424ff0305941891b7b44075896606305c9172778f081844b8e9f207a78810918ac1147599e206307871562c06206aa091efce031e289e610a5844a203d73921402b2ad3026cb843550e030031e1dfa386df141abcc1d364a06d10162066acf1327a04972854c1148fa30890283952692fc6843c49c21968062cd98273e4f9e7670c3041aae27c6b0405327cf160e53434cd9b334f524a84ba11d8c00e4a30f57151c2e3f044103212d164b04f1441515345f7cf8138750117c00ede08225424e0b5b2c389146cb0c0e40aa2042cc953957dc2cd1a3c78b172d37c839c3268b1240560ca2028a9a2f4c2ca96104554870c0c18b0c54dcf9b18547892a4e7208040550e3304412384ac8704159d90324a985386a9edce0820e29e471ead2044e116b9c9c60e5e40509da03c4923d46b0c1c3831049aab2689132e5cd943d2ce0d08298292e280cc1a70c0c4294f1b2041c1a2f6cb9ba93c3132af2dc9162cc15ac24453821052109a2ace2e83102100d4bec3c290305104c5460a2901c0000daa1891333fc7043109d46831eb0a8a92384151c02ddb983e50a950d43684d9955fec8c044ea0f15415c7400b227062dae30625ef0418819a63081a1d00d83d450d143cd0b280cd252c84f1b3b630476ea58c10288871f7c10926242171a2850a460a18e9d2d40d080a7093d44c00122076581e2091f700044678d07d1c2891b2c535c05d1054e92209e88400452505ca0e80e40b2a2283923454f145498002167073e7ff698e943e7481a2e4ad0407581d367db0148122552cee880670a2a0a081f777e70c1872b774a68f3ea61047874a022850f95fd4109354738b9926213c6078d1c4a7052051a289e18e383d6962e1eace080e40a9f0ba4a801cc1a2d506cfa64bdb1128513564a602551c6043349f460f1c305500e76ce076f0a29496347092b5e7e5459196444971050484cc18240932d490ca2420c201b7e6c4d00e9401329516c4913050629e4dcb062068e1070e068b1b1e1470f422c7992650910535871a4e628c1e70d1933492401e41aa1254f9a3a4d34f1c56d0f42b6207142541329292cf848428a4025cc0067061efcf49a21366ce2f82113c70c0cb3850ee84c61a7cb0c43ac00050f439e50014686334f30a9c2879e4048fc00c40a55bcf0050eb843154dc4f8c12225a7490f63da6831c20a0a9437960a8a0f431471821e263a2b3f74c69099a1ca9e1d02253922051d6840814b9516664013c889a0428508593745c41046100c6b4e789203a4cc1155d21402d3650a2f3ac0d8a2849d412c8871610bd5f2044316159b364ab46101072758b85089e903050a1c252be4d0458d09960d0382e81267890e697af0f2c3c91a3f82d0c08082191c68144f688591218624f2e09903e40a134ff6fc8064892d390052c3870b9541223882eac70b80a892dc50c54bd50a388cf98245cbcf191124e902f269217184931bb268b1e10a8322e6b079f264cb8d161f51459450e8496b054153d644000917b8d2ccd9b3e7ce0f0a5600c24e9c1e8478b262d578e0843e80888052e64f1d1f0e3813a689541518ca98a12b845a604c382206139ad840039a142143a127c0b059429dd0c04cd50c3518f18402950f1ac270818288264db26cb06924d7115dfc747121cf1428a7335855ccc961071bf6e84193c60f9e126a28a14fa142406aa012870a0d48f830a162cf18604d0d3524c9d2c29c273f68dc9902a6cd99398578307381416500b500c49a1bc0f8c8f3c3698998285200c2cf923c56fa4a0bd4551b3c264c8d800a2e13cecc41a38296327d6c19273356528298d2d503143976ae5069814fd50e56b42c19a63c764ae8634505191f477698e233821f96ecd065c7d8c822c41077a874f1f285859f1952981233a544d4f6c30f1ab034f1439504cf9d1b762cc18a228b55550a537cbc680250559799276e5010e3264e1829fc7839b325cc8fd89a2853534831a1cd9b30370a2d6ed858d990c64e04deb890248e134468e962c140c0c99715906811420a8f949baa4150f89026ca1e6b8304a8f0738508395fe6c0e045f8d032c5091263fc6c71a933bb80fc58820c0a35d4d9f342962f5ac63cf1b0c21a255b757e64c00426a25062c21159aab0da9202a50741583f3889f263e4a2439620608072c58b17a727aa29e4acd9720288259c6698e2ce141b84887a628dedd26304666488028d151425ace429b4f507082583f070696a33e50ed6184037f4f9c1c19695142290507206cd96a4a8ad13c6f499a2cb071f47523cb53015a609992c5b039e4154628c10c286207c98539c528062a50d9f13b0743863b5404049951e3e4d9e6c699343befc81e404892f3bac7026cd106eb35cd0b5060c1059c2d0b0c5876f71fa656ea8e8e2421362a202b1a1c2b7640f4de40153f5b4c3133d406c95d3131ffa305104d70b56ae36212678226a08404af8e86141f609428d9c3b5151a0a8e227853c2a10c1248a931228979312aa3c5370bdb0e5294b833a348c9181d09219465084152e7bcaa8d1e3678dc592a1a8e20915549c0064056ad0d31077e444c9c14f12a9278824415cd97235680559e8cc9592262290418a13c69ce9210c943242acc9d1364b382de47e695db6992d4c4b0355972b3d4be450c64a8ed62346047ce658b9d2849a6944e62587257290f0cac1a36ae0ca418200a4a8012207fd291a9173729020dde4a0984b51bf53eea9a40527545630d22cfc119483045a0c5b5410270a513f60d1ca61444ea1872b07095486b6d24a3c2f381194638a9f9c1c2e7626c19ddafde93671471b18dc515e81c083029e64b16c1894fd35a875d26d9a77ddd0f8ca0e9347fe9211e5f270da0b870634d4d0266fef7fc5026c5d19321de970631b0f77ac65cfc09324560d7464db8ff2a7e859bed12c6ff8869e7146df7fdbb60d8f14bf0ccd7d7943047995e50d118ad85c9fc8963d6f737ee7ad070272c543645757a698058ee3c4a128977baf2092ecd8f5d497b9fef6453a6f75f44cc2551374b20c37702aca76c2a359b9cebe9948c29dfd27c3c91d25d74ce4e23979df851c3865af65683f99e7dccf822378df775354dcd1df510ec7a453553e501f09a5547e549f92c9f5311e65b25ba95ccfe3b4fa6ee7b79fafa4d4f2087feda0f0e34e1cc188f81f905f7f842ad5df22b928e47a6b1545d840cc1ea6390d3f8bffa4d8795847dbc7df33a7e1ff2608b683f85bf4c4a7118c38adbe8c17eef7db8f6e0763698740a77ddb7f2cecd0751a935cc5173196d9b3103b53265276acbd5726fba7d166f893bd95bd7d1add6637d9b66d2eeb2b7baf0cc41fad86fb39ec4f32dc51728d30dfdad943de4dd1dd4703413c09c46367f061433f247ab50cfef7df276ac089db19fc51f631c2e583f0afb4b6f3bc877df88effbef07bf89d66556d632b50070ed700909f4aafd7ebf52f4cc2fd2338702d8479e4ff7d3e02f6e18ff20a73e98761398f42ecc13cca4a64317d2f311443a85eaba059f1386bfc1c062bfedc2ab99abdf0d8f9d5c25a5ad18f4bd9b2b0af812bb5d1e3f0a4ee6dec8b6077e85b88721ead780944398f88a4f0eb6bbda084dbf9f5e32c87cf0213e18b61586a8976d8793f7a955b7baf4cf6e1b49d9db848d2272d2dadd748a92c265ea7c9385bad7529d7d720897b1cf5ca936ad3ab2688973e3c2ed53c3cd6bc8a96477975559543fe17725829864b9d8b4b4acab9a4bca5de69be62ccdd7c8bac430f581265855744b9dc5bf1e98e5e953917bfb5f8f1661758666d0b2ce53b97ffc98e8d301609661260e94731874571a5f4bdf7d25dbae7d5b297818747ae467b5991ad73d7f2494fda6a8e7ecb7d34547afd18cb9fd1fd7136f42392d28a1f6de42f83fc7d78e47e5b213a4c0c45ee277d4e9419734e9e3b0edfacfed1f92e0e2161ecdcb27da0dddba1cd8238e610eddafde779d498db3df7f641df823df8a1383ae5f05e5cc443e6fb3b64beef943f11f69e385e207b7f45ef61a253f6442235bfb01fd13540eab45aa1b8dd8f1e15259365f728a7f9138d9a822697e8110d713b1c935a49a5ba15e6a43fbdef6fafe3da58ea3fe706b247d77425a7edaebd886f0ce28426d7a72edb6cb24da6956ea2cc467c3fe7f46f9a0990591baddfd71f96326b8eedec7fb3d60fc4d26916c7ecec0c31b7fe273ff949a9f5a2dfe1f75f7b0ffb1ddec3de29879b08cb135ba06b50ee3fb17b4fb493291e83f820e9b457531aac6c22e26067ad37fbf60dbfe58c85db5b0fbb5d5bfbb57d4917c716148a94d26fa23fa78ccaeedefb3bd554ea3744efed5155a34779149158bbda55eea859e0b9dedba9147b222ef644ff418cc3bdf55ab9ca1c3888e45c0ff7687b0e5dd92eee83f2f6e10c3177fbe9715bd8893f6788b9549499464119ee702a7663101f94e7dbfadf7b6253fdefbf2a8ede831e2edaa07bef7774ef61e9343cd62fd2d97b6efbba754c15834d937cd6939a5e6423ee18c4a92ad39fdc48390e8f41a49d3c5f8a4df367c576b287dc4fa810f2749a7b11df900b967bdb74d28dce6d36413729f1b83d7761d67250b54d4a9aacb9180cdcbb6bbcf5a48ddbbecae72cd78944680fa23fdaaf23ed05d05aab04fb096bb9e7383ccaaf1fa3d25c868fb31cf7dbe3704fb498c3544a79fd846f48caedb73df108e6cddd3d46c473f7ac3f7deb2d0898299eee4bc85a291ec14c93c0918a31799d366b4c56514e2b8edbd7ca49aea5c441c05cf13c615239a94884663ae79cd8029a01e683dda66ea574972e5dba9475932de54bd952ca96f26798913230dcacca38eda56c7987a46c39f4c427fd82317baf3af08233acee0c3030f290eea2595f1a779fd3a7cf9196b53edb0d360ddf27284bdfcae334a995256d466452fa37469b7e4f4ac14b9b522e5fcff8723998f145c6986294b39df7812153f80a776cd96d1efb8f7d8174522b61b02be78cc562b198b7bd4cb11d5cb69286bb5f29e58c1aee18d9bde1bafb0bcb6df5850712b57b4fca244a4a12d93e0422b10dcb68ed8e69b46634b56a36e810239fc9ee1962ae3f8ee96db3b2570a32ed9891ad04125c26990b17769632b021ed30151519196d3060c0a830e8f48621c1d768c46bf1c95cd0240df92e42a64f83fa2ed62eb7c8bb48d29a837b272174f12206337223a396f5c5bd4543e2782798604e30814fd0b66826338ad918f455b4019dd9c808068c092688c5b8ffa2286bb3d9f4ee60c098608225a618e18ece36fcfe6bc0c4c369f2c57087630c0b99624ef311b2f7e7d1b243064d9886d252820605c9e28134eb7697349a50c7422699d364c8983264c890e12d5f1fc07270efe5b133160e1bf9400e3b8fc25c163124f816226e21c347b215250dbca371d8a373110066a20c97d1322a0514c898e1337ac60cb9fd873a628831dac769f265844c33684737007646431a6715cc0a2aa8c02ba8a02b9043af1104b490e9e8280001a8a0021b4c483468582047a77c0406a02b90f3359230c3861b8000843a8eb60a645e2e8d96fe1a9db245a21132596081054d41705ee01774b52064aa218350998bf3ab388484ecedddb2be400003b041801a3566d87025375fa3532eda60667f9ac7ceded808466d8218b5da8bb55a0d17d56a2f6ab51a9dde4847722b408aeadedd534afa0a12cbd4b19b4f89195f261e6fb7cfd872251e29c83467b8c19625b692067d49652dd7bad1cd52902ad3e7406e86196b2d68ab64732ad39f616606183a030c9df1e54a496978c3d86695e5cf2873afec6780b9163683d1661916ee30cad269f70e0d4929a59492564a444444b45517af20db4f11af48f2f99cd35f86b47b8823e5c9a90589e05d6579572010c76a459569906ad55ea674aa75dbb80ff43e2969bea1bde19ceeeeee33884fca1b2da534c097b7e7f0e7e1a9b5d62af308d6bf75abb18a4167b3b9d7ae5db70737dfb6bf314fdaf0b87ddbb96d1b6d4a2f2ccfbf9dc3c6c44e7272939bdc52add8c869dd9c5740dbac55722ff1489b626cfb7944a7b518c49c384a0a802cd7a862ebb4d8fc2b42cd4168b93ec573cd000071db8f1cc771b4e380b5d6da740174e62ddb721c96b567edaedd74d6f02f74526ae7ec3ae70653fa56b7ca5469a594c6e04e48cefb9967485f0e5a5ae96cfa331441f1135dd29034ea775cfd8db3b3865aeb956fe973a2e5ba9bebc6d4ebd30e9ed68ac109e713c19fb2f4fe93a2cc9efd0fbab7cf6123f32df746ac94de739e671b49dca5a974a4fbf9ded7784ca5cee171f9a0fbf947b8b70fe222f9f5a7878ba4fd0feacf9776b2f79ff745df5b205389fbf910e8bac9bdccf1793fbd0bb4aee7799ef733f4807b39bd67f8afef6cbf3fd23df7470281c6a80984c13bb4e23524def0b65488fff5fe17d6ed75d716c360d8c8d8dfa3bbba7253102ce41b07e9c77204c7ebfe8b4bff7dbd1e067b7577e3ae013a17c553eda8ccc521bb669687915cf1388d02197d83604198b563998a4cfda3ec925b1c0702070292052946a2d1cadcf9a3eca2b9db3263c68c41da9aebf0e8ddcdd5b7d636c889e06675c1a7a3a55d966a366cd4963af728351a1252ad7347e24f5b85618b24fbf5f145fef3baf78f84e05ed84b1cbbec1d95c1efc1b1d9234872c5e60cdf7c328a6222ab946a2833da549d1fa36faae96f9f62aaacb65ada7c0bcab77ccbb7b67c6b4269280ee5491c877fd2be97f2538e5a9af3e9eceeeea53cf258ca8d9be8b71d97b2834b1b763b78eed856dbb416d3a6e7c99e27bbe75bde37a73dc97ee53aecc9c0db792d0a0173f77352da793d12c9b47a1d2d75ae644a339d42c04c71d7530d7dc29c53e6f078c1d3edbce9a03f369cce556c24998a1a4cc9c39c933e8d0dc782df95dfc0c9fec6cc9c33b3e812341b4b195011a99b76d259e5e1bd91d24a593f7737991ad4ace4300f8e7be2f1e6cd1b9f4feba45f6ba5df37d6613b9147fe2e582bd91f4bf6ef2692c6976be4a549f6b7de569e0e7bf640098ac5b051104792b9a756b12962b2179b27b955532cecc47db3656565490f43df78527d2b83ca8e846249da96623971c70dcbda7baf40bb657992bde3cd82b612b8b2cdb448cdf5a5e5b619ea902512922339924bae3877b4ff3dec250c8fd65e0a3e8ed93d288e5d9199ebc76c0adf864e0e75d03cd626ecf5c223cd0d1365f8f77bcb819df79fb755599f8432585aca9f67032983cdc973cfd29eb78228367495723f012406069035fcbb7b297b1f3e8b18d10a518622c80478717cb097372260eb6bc330fc9a27751fbe0d79c37ef853e97e18b61628d6e651dbad3bb971db36c58371b6e22d391b71e7963cc68e68b8e3f6dfab7aaf508c195d71b4d9e796ccf5903103135979a35dc57986595221b5dc44bfda5aaed5e616a2915824ca7954f495963b7bd1bdc057240e793f369104ef50ae3cef5bcb95e41b2ba90435ad547025a8f0494dd584e262911d2b8d569e4a33873f91f80015aa880f40218f96278d4d25b5b22c13565076bb0414ef77ccec1579dfe2650ef7701103642df09116dfe25dbcf8232e5e868bbc9739642f73782f645a2da8b97aab85f8a29c33ab6bf445ff493989621288a3f744efa10eef593c0b31482d7ba3d4d29a47ae75a575e55744af721a11762aa7798d1beed8542bdcdca1d7b1e287acd3bc1fc22d65f4fe9e7881a9f4e28bdeef0b8fb2915684632abdc072bac0e157cb1edebee977e275da53ccc2432821b5dc248e4bb97ef49b8577e8c7ae336c68e815fe0c757886d9cefb9738fe0c0f72f582ccf2d6030475b4d491ca5448ede57388eedef3de726fffb3816e67ee476abb18d7d65aeea837bcc4bd5547ff6c8364e5d5a0f0ca5c219b559a3b7a595e96bc61b4595de0add9ac1a172109baa38ca2ab2ce3c9287b5992869755748564d5b5d92c735f414f0ac11f3d69e8c71192ee8f46727b20371e3d7b9b82dceffdb0a5dcff9a91dbdf54f967c3ed794e50f2168a433a7b58c82c8f4e64f2e6a18eed5f864cf763fa682352fef018e6f1de0a32b5529643a21c7e32c9fbf03999d48fd435fcc3f00994480e233b9245c0ac3bafed4b5b67526cdc4864cbe15379956161f8afefee70488c225b86e111476e02c31f41f0e977e2d8e328af8e5cb8fe1f2c0cdd7dc2f0083ecd2fd1fb501c6d64975979fbdb63032325ce55ae3677a2cc5d64cb153bbd9a1a8134a3d1903c772454464652eae200bf8a46806e67faa31155dae6cf0e294f3103f9602cd759375c6ba502d249143714a791d99a525b524ef3a33537d66bc66e2e50ec7dc665a5bb7b924b510aebea7a5db18154b3519d3cf72816b8b1c04d4b650a86f6b39ead59db515b0b6b5fade907824fa53c8b47bad11e8da5751a47ab924f86e04aac3468f207b39e54c473d3fc6d6bb2d66e155baeababab6bc3dbf7c4e086edbcd845db4ee893b3914645a98bab6cf3f6f8fbba0ba06e67cf7b1c4e9b933abaecdf752ec621242fc85c21de556e3acae18edb95bc51cbee5ded80917bf392ed8f43486a35ca8d5b58894fee08a3855586a1a5a396b72b4963dcae44e83cb6b0cafe34aaaea8ec5a366c8c4e55b9e9fba6eeb7aa5cffcb60c58f76e85b29f6df18d821d94a17c0f9f5e17fa168a386848da50b785a9d966cfcf0d83d4cb420e85dd083bd67adb417f42a1ebfefec7f1d1ea51d1b9e14beff52cb0eff1b83efc397ad14865138baeffbbe8f1385483b6ec741f17b1a32d9eedc4f53a9a9ac1d32bbbaf287b10cbd0c8b2030bbba720ce19f477ee3caedbce2873ef6443fca8a18b00202434f8471cca3ba627675e5a69aff345aad46c569bd6468ab4cfb8ad2d7ebfb1c8f9dc3b7ddb5d735a41c3ef81f28d2246ee7d06b53c903afab5df928d8e10e91c34df5e1db98ea8ad3bcb7b8d7618278efdf523dd5fd9c084277673d68b13e8e19fadb59068d32083a083e7525d883a0d554f2e05eafbfeeafc5979e074eeb5e864c1feef0571d5588d4aa4af4ab61e3de124256cfc073c75a761b4b41a41dd954f287892f82f081d3ea8730edb493f3c0697d153a18686a55a96e3c725f6156065efba240b619260ee9fcc242c03c02c9163771df545f0f9b5f9f93b5ca727777e57e138774575757151b80792422372c04ec460e8fa015bd0b907c30f05f8413f67a187ee191935c3914472af55c7b5a79cb6343a9228fce82c5e1538a052a95dd6914ec875ba32a133f40d4e7b8987a6739710473a555eae5168a4f2e5d0b82b6f1c7d9ef3b710802babaaac8dd2c8f14e066b97153a8e37b6fab56ac6598b882e8c7ae5fca1b314c64ed0a7c63c4c8234d1c67f99347dffbe7638cec9ff7768737241a51e2940304437f2404436f42e718c246ec5bf05b0c431cf660a1a58e9610c4451bf477df58c82c377d58d664b175da9d9b0cb49fcd84d0a853e70dc81d04bb8e28c6428216b215405cb890892d44094416626c840eec80f4d50a7c85af5e922be4e2e292325c97eaec3d6c7b6de1066edfe66d019ff2a8e46d15353d0a15c34800008000b314002020100a8705239150349ae49046fb14000e898e407250198963498e032908a48c21841004082100008088682410085491f700f761f90214093768167e13d7818a9dce5728a1d0eea4d33d539e5af3f86fe2ab72ea3ea375bcc69718044e9cb57d12c6d6e9f74e5e5244c01cfdcbeafa4d056ee2042f659d394784a1b9eb1dfcc436901199a54d0bafe1d64c75e3c4d27e61ed97e44933596a8e2f68d7e304435c2c6ccad7c9895eb97c39f1d334ee21e86c89fb21058dc40e21673627c65201fcbc1a804dbb430e914ebd8ee3a057f78b78eda648f4037e988bfb933885e94511b1a1ed9f0e54835767bbfd7a9a8e66eba1f873d9aaa5c001d23eb2be19073e2a9ead1559020c939937f440dee58016153a9cb62e027552f645a2185cd1172ca1e2d6f77e1f5b3525211fee1ca97e10bf96df8494565a65c7e255367bbaec84623cd04c93d97a8d034d3e7267dbd89fb8dd96f1bedbe70334d50c560dce1077ca6291c647eb6c9f676577ed75420dc5efa1e68f51d3e951535add249b0406d2198d62bbda087e933ec7f0a8040f9c3fd62dbfe875e04792dad429505b4b0c66c1b1910f6275f58dbd520e1b34e7f93d0bcd6292b53a63312795a2c1b511deed9a6cdf91667d258fa661d3f75589d3681c0e568f89ac07f20afa2568835c4e0d20deab2eccad939953a08646eff54435c7360fd627de3cbe411fb889ad59e02cdf0841176a847f5b122f6f1b10cc8f800b049dcf5235c78614cc0c96515410fc10eaac550f7b5506d936720a308d018f76ef56a83b8b01f293f723ec5e8b28250c7a7cf4a680fd028136540f934ca25d817b36aaeef023386b5a8c06d1c2848068e6e4462e5294c41123e1f1bb94c92ff0eb208efa8e230dfb2fde398061907f4f9c3dbbdabedaaed0eeff8c2b4ee8b4e5f296a882528587eab9e262573ebb39932564bb0622385a96b7b8727bf9182bc70be69f2b95250e02be993bd26f21d5818d175b8fcc2d4c37b9cde1a9088f9437093766c7a7b0fd65a19410533b8cd637564870767d7fd210d6e67e4ee7042ef2fd27e069f2b0cbe4c35ce2e087c8807811c717fed1907ee3c9f5fdc73fa2368c3a8b7a12c4310abed7c7b5248eb7a3b1aa2a99d6815201ca2a9dc5d0f2d5ffb03fb152ab64469200c32bb292d3ef23603d42d005b0e97c24b6e214f622bee59839d21dd1ba216c33d7112d6eaa1fdf0e250457b89cf6d69825d452f76f90df22f00ebf353e9ba39b83cf4df4dccad8d0b9fb133512f00f306758c6f2e21d627b75ac7b79a484d088643794f9e19e70b796574b81de1d37c63578a2bb1cc5fd3de87a369e6c4b39c9dabce7132398d3f1d95a78b6d4b42abf33c46482971931eb27472d40312d7e182c991e30e79ef29eb5af6b7dc6a7a0588e2694ab3682aaa6f4d6eae1c5fc4901737313cc31e681d7980c6829b7d2068807ac1f759c7c4e06317afe21c83db0ed9b950975671236b4b19b0b279dc57da8a4d802d2de57a64c3f0e896d6a2bde56080a466c917546812097bd82c8e5fee073c010066790a50781d7fa511b503e2c483b91a5b17b084eac487450dc4a98eff57fd8079ac07c9a706dc1c6b85039fce975c632755c4915f66607b9a1cb8de64c937f3b0f920f3b80806aacc63c1affd5384e452a0024cc35fddc5aa6894767aaa192c9ec063466a8083fe8a0b2bd9abe2f8460d33b3b828205337f1bf32f0c14c7fddffb1a85ad0e01a514fcd7f660f1387826a86276dd8e82685ec7705c5414dee0d3ad18d8b0c0dd98cadea144c4810b5285566b156c9896eb5089317bee137fb480896dc325bd2c8438335a087d1d961e8bfd6822bba8ab53b33a70dc2e216346db75d27522c85017d92d55ec21575954f0249a98a9f60bbd347233a74976ae6ad7bb1d5123363e4a292558f4b3f4b0260318d2c1e49006af73dced302fe9443ec8704b6597cdddc8e622bbeed3c17fe7f5a41105e01c5c1caa018ea4c81ab2323ad58e56e50c576559800ee394f56cec5162461d519d9ffbc5304ed942b4aca55d624f98cfe9864ac3598ea8ffea72b9e3e40784dd09f1501c0ef86e17b9c222a3cf2b69805d6966dcbe7eddffdb321e2ff3f6272dfdf99076ee571c60f12f4eba0fc9776ffe1ef94f6ef43ba11755f89a8739f01e04ca7fc1873a5d4340f5ca448821a267f229b9801fe11a1896e4f05684371c31884fdc111768f03f1766f29b2560309f2bc6d03c05535de86e16a035017886f3094c493cc3b39446087cfd13515da6283021d1cf52e4a6d56c283d7b7a34ad90cf42f16aec102403a0bb4329179541a3431de3849cd505eef0ce4fd95d1fc037b5655bee76460d19add5567a050746906efb399c48d86e605db91c4d6b7ad90d3bef8a8af32e0ff9314074c705f9ecfe12e15c3101a63514dd694d4f393fad5e3774b1fe40f7b5c4b8410b2d706448df69448475afc979e7629573c62165f83761e1a28a70820d9a7a250ad91f7e7a6905280d3969a49f32358e5dacc8848073d4bd9cb96431d2d9e6ed9fa492525a17c6782558c8caafce5ea37242e75a56aa98ed3c64442742f269a67c7a233f70393cbce01678cd31cd4e1aa9ce12669a083073025e40d05b0f7f1bf08047d2581f877000cf70e6b51da920ab287f30ff836611bcf651a05ba1c9622c9775371c617347b4e18591fedadb1874e4fca5c0020780d595465767625ea4b3325c5c7066a6b63a802ce0e64dc3cb9692e0f0a380ed1ec76d05f407e074f55fff3b21dddcf3642ba0480feb6542a84a3f0cdef047705fe4ad4ba3c584bfe2afe358baa8bfaccfb3b5ee12c93990e7d17a703dbcdd7ea6f4327e58789aafccc7b866ecb560efff93d1a35398e44c70fdc19f0258f08fa953f34beaa3fd7800ed522a998dc5cad3e38925b24f8c4d5902a32bdf372634b2a0b4e884bd1b501decbd0602c0053243410224790fcfc68477cfd59b4149630bc5ca81544dd2580cf9f61a24a4bd929691acade8f06a59535760a8305238a22a4bbb61a5d8570cb6d1af46608c4c0a00b898aab8f4a0f633b538bb47a6576a99ee7fbc77f898f27b3c80e0aee6ac93e3f2e8335bdfb3cf0142a7c02f19d654d8043bb8718b6e1f6ad926ad8d893af93afb6856a33359dee20a7b65459fb2b6f1e12beb0dc76b437a09a23d0004944e8a00147bb14b3704606477e80a1fb50e80fc416e24a58023ef3ca0347741aee562bb22d268ed6fc01ad1bb61b0af07cc487d551bbf0d069006080e1f47881a379308978b7be4afe51dcdf5874ea15417fcb60a94f15c8ee0144f60041f42c77a34f91819bfa9505ad3f936785d7382a090aeda2154fe2b4197ff4f1384ce0f577d625032ee4c7f48d0016a86ba67af1be268e2e3864c36c7051abee1e225df0684afd3aa09e211a3ca05c7d5a755f4d43a226d80a5705fb565675657ee802ab524d3b7a476caa1f9183e1d0ca90c2722ae673e4d9d809055f21ab01017528e1fefe519a375abe522d25be294043b7ed2c6add163bf29c6261701fceef8f9ad5baa3ff13ce0aea3447422937c04c416ed68db7f6cc7811aa6f8560e070ac44a6fea506c612197db0e4f8f561d498e330665bfa23ec649ba810e494d38a6287e814cf9dcffd1575a440516c78528fd0d5fd28a6de3501db3b2daefac84d0147f1dd0f39166631bc3d177a682f06a35acc9aed7b0da55c72a0dd7700b9c8c1e96b3814a65f284812c3178937f4cbb781f93c4e2b9879ab1e2970be648f063cedb2961d2be34d4ff89d2e5a77049e00417123cde92f0cf26cde02857def5534e69f32cbd4f7428d44982bf2404740172d6bfc1cf997914569a1d9a3040ebe24ff2cac31b38e82be1e704151532ab15e913b0e8e5fa18724237f0b0f5762d7f62af081c2b189c0c073b9197e29448eb0b3d953e04fa456b8a5308369a6a833c3d83a72ef260d457bddae69a25275ed5c3070b01a5547a61f215028ed2981ac97c975e45dff23e8d9091380fa1bdae333949fe1b51dfcd909b6ac8730033646c32f05df8e8dd65a7243c5e689b0e9b7b02e6d206dda03921c6034c2f07d4155b996bfdb8355064738cb41607b69216e76bb4e5727c1af2c97f1b29297d1d104466678c5560c6ad0d523d2042a7450287e8fcabebe6cd10993600a545cd08f2a9ae3376f39113706ffbd4aaf510786415da0211d196f140333da3fe9a767e3ff4f04f6587a67908e6887a6fadc461eb82aded5174db3ea510418cb1876b28fbac36b497365a3723b1483bd9cd670d2c452d37553bb3cd90b5bdbe0a7b6a0d2e89de948829c15a1cb6838f9e0fd5a0517d4102d0b0baafa86aec5903b5fe6f94d68aa28a549cb48debfff13102a57379c90e84bc8b6697ebc81dcc762a9bf343839071900e9be8cc8358ffb6212b315a8f878d0e573064afd99b613ae8e2aa7b2d1e84abb72b92770504529fca68a903d664fc9f09d05b34d78374b1080df9e5d837f3d97c932d50edf759b1d8fdc331a444d4dc00d7e2c122079a604424ef8832a748663f113d5e3a3f10e2365956e11024c04d8efa89ab4709dbff258121b48cce784c3546f664611d62441acc8d287afb0047c7f189260b574ccf7c10c62a3dd564d111083feb094d47bf5433a09ae04dab51471a65846f59a18c590792f6dd7bd23efa20b5e5da47e872752f8770c851e215ce04db9713573d65a2af1335f4acd03e2548c2877c4ce371a1a7d9a1cb306212179c5b8f08a03d88585550d31f1355ebb1a688e6d33207a3b0de5e25224055cf27916aef30fe8b8e4227298e5ea91b90a42b0faef525656a4f9a04cb089678e413151a306d663297b6c72fc811fff594267fb22fd5558c0d53438f29c0ebd8e1e1c87d932deebab111b3fdc6f25d9629f4025dac5df29d3c6b195e0d94508256dc030059d110367ca1ae6fb306f5d17709eda5aacf31a7299ae5749f1baae8b8c26c8f9659d0ffab876ae685759451257ed64300d5c3ceb6519f3d66476d9e606483b0e32d5afe8ec35cbe68084d8c4509abeb7267441555797c7abe464a33b6f0114bd181e292e02d84df8b29c53a74a0baa12ce017c56b529bbd02dec998cca69d72fb69302395c5f56937dc109f0ea83243a2f110e661a9c4ff4890a9f215a8f34095ae8ccf38858b050587fe7aa152d9ccde1df032b0e22df410afe2b8698ccbf77c6f70190117b1e08abb7206667ef6ebc4a9c3d3d3618873ac098085d78cbb530f62645c0233a27d869abd5d51c2f189e5999c7615aa50acbf3d257526e9ddc59c16a4206cafe831e8aedc7abbc194966c9ada9b21b26e6360835e82dfa04f2ce444382fd22a51121c3fa73749a28488ed32229d8cf9c488578a3c63b24a108848c8da66899fb489d334d9ca52e48a5ff2a03837a59a600a21e4919b82e9d42244eb998d21ff952d47042e1817eb56527558f07eae6e6e29bf2afdc4caef9cf20995333f1775c8e544ef0080f640f4cc231b134a3828d0918d782ad714a3c94a388c242980a61a928f5c63a37d61b966fa9ade68b8252b9d15413b61adc35012f620e7cd7f01ea120809a1eac411bfbfeafea6cc95f373bc65bc67e8699906dd61fac5ee6663f6a39a73111326ade8dfea851fd1cee18ae0da7124687ad19a6864bacee40b0f2a407c646838ab4a7e13bcea756ff622e15971989120b0fa58a08cf1e22c3db7f2aa5ef531ad75ead1fb3030600a7ea44de0a986094b20b1d52e26943f9f6b9e3058efde50c6cdf21474025cdb0546a0d461f7438c23f93a81df08dd5a26ef67c73032218e6a62314bb8aa07e68497021ea00d471562ae3403e2a9b6ff14227e0b9f670a4cf5e7c5cef89b1c26c65686afbf97a81142343cdb688f880b748a516d4dfb214a1be9ae189d4b630cfa262d991b2a4b2a88aa5e36a2572711014ee66d0b511ea8f2f7602042fdf6c9244e89c9ea184dbc3ab6409d44af6ef338d65662cb5d5a85789f36f63d0c89708bddf035372dff0fed3c6b4af07815407b940a963005b7bf91e1dd2b94acdde3586407f2f5b37cf25da46fdd0ccb09adc516175cd1a788a7cd1ffe21a4837618cff70062d4ef2a6901c8a1bc0396c32543f4bacb7d840c8c863152573d8c2a81e9ffef116f2c4e7eac2159f6df32dfbec26df446a6423c321ed99e312c216f6734223a6173ba87306810d4b8bc4255cde6b4c9fcf79460fd439082f26243d4650b850504db98b88ecea56b6537b8a9c59eb4045d2587e594505c3ceb7cddf9f0ab2953b7b2123e1ef95f063b17c20c17258df2480b9d45ca9e11effc90328cb6060966a009e821544c6fca709ec799cf4a4fedaf1697ef0133bdb63ca9d2ef66abc1f2ca6f581ce2eb37e26632d0a7c68edef824b95527b87d7dd2513ba9ee7b8d93b0885ffa42620fe3d2888db85c59837b3861ca49c8173b03ba74a6064b5d70dda7b09bb8872ed11e0b9cb089bdece9c35bc5fa409fdcbe09c2bb029d652791b3b70eb45d1d354554f8afee7564f79f582b0084593682385a7cc423ec74a985a1bc9a9bd61be9f40eccc8d906de825288e374b64e79889432fbe4b50792939d9b4bc57114463483d6c983d80549ad38567263bfda8ebb83cfb310278bf762864c5b42c43e172c9f7227a6a07a60656be4a43aec7da5f56876a4d82c81a4e0cc3a3b74abae5f9b265288ab263fba603d3cc8cac23d198f58dd3ed162627c5b402d2e48a61602f23644f2ba62407ff02854008769e876efab4637fb0b5af4a64553b65c21cccafa32256b741e75a1c5045fda71c919299ef25d7c3d48ff5d69b9b76ad658b6e717907b8619bf8bd5bc881e71ea94216161730651fd4c4ffb842ffa18411b80952a2a1115541c372e1968028b94eb6e95b11269c6b03f9fc9df1e5423bde64769a0d45974fc08c373e59529e8ccf4c1c762def1cbd770623ede0e099e963709d563779254230895190a2a2639e00332090d8ab65e3a80d3618d159eb499e6ea0e07d88d13b01d9aca73054ab70975ebef54ef74eca5e918845bbe4be1dcca54d86a3aca2e748eb4c5eb9d5e6d93176f66f188308e41d94832c686604dd02c5e77cd295bb09567f132e486f62496ef2e9e299801a34ddaeaf9f159e800e6fcb707c3532f04c28cc99cdfa95578547ae5923086e8040b2cc103987256583f2b4c33eae8d1a166db842282e9f2f3b6514edb0a520bad9c1d6a9824a091e946d8ae4547b8c4d0f6e1a6eecff43acd47f8053349c396f1e8da336cb9df7e80649499d495729163f92760786816d064cc36bcbec36a3b80aeaed13312166e1a06c52335102cf26b17c114d1b15075da72b7b40cd87edbe62040e4ad16318c999f36584d363456989754aa8db5a09f2c2f0ff98c75f8c9f89789b662f000e00efc554569557fc0a354f0d97c9c1518ea4b51f718d40b177b3e28fc22969246297acbae5e52ec00780ad57343399ed9d30cac5ee9486010c93366e9625c18e5063a6c94ebd5e1e7ff3a8cc7c085f010505f6e1d31c184b26967c0a6ffdbfd634bd7b2301d7a089e26fa4049f0a6571c9174dade29a7e8a515c5ca06e2b96a61c5fc186c7b7218d907db8a37af7162e44808c06af56289c1c6d81ae8b4d7aa26644f0e59647ce709a8ab06b185354b1f477ec4bf6edafff109be2bbd29b3262b52e68cd03440c37a8fb3b89eee9344ed59d88013cac98ed45517ee42f75f911a4467c29285e5d70049efd5c9e831cae33dda29d9cbe508c5e559e16d156589523d3c23bf04aae72db7967541a42b921471fed7b55d6b97febfcf09a024885f771523f7e494e6a0ed677e8b976e92dda987b9f016c44b543e93f5ea9f57770a0f9badad6e2345e6ba89a68a3b14e6ecda5499a60d0c8ad95c92481b552c3a835177e99fc5f32c33174420be706453096333fe4f410148f5cf0f93471612f987240789a3804fdb89e19d072df2ca3e6673909dab79f46837aa2b9ef32d4fb5008f1a9f71738f4bfd0ca01cf11ed2984629c64d2b8400fb48e06c13c3814faf471988b85f5ad0679c35415527d5f9947374b413bd4ef8c1ecf89359e2f8f33a8f070ef06efd284b82423e185fd86cf41d34f2d1353fba6470dd437a129b6286d9fd6770e2ab96e81f17c2afac05d1334253a919b5c017cbce7ae2ff89584bd2d06c3c5ce497090fca027a540148e8ca3ba672c407455ebe69e4f87824b9d64b6b87086bf1dd120d0828d261ba8dfc3159550180c9bc3101dee34f6c4ebdd61647fc9fedcacde1c1d4087488470845fd5f2988407ee119e2e0f2a72d681c91e4671c0367c62bc250e8d756fe3c5d08eb591ac0f2cd0a199d8dbd278d136b18b6b9ec38a34c64a848c9ecfc7a89ab33bb51533d36b1672b5b1cbcdee282bd979b7f854800e94364e3957f6b26626490c9c78086ef827ef70efa71ed00ac779a9e909799d3a8d52e41c8c8151ec311265395dbc01c10f9095ca47b00f4788f9664911b1a0402f02866afc8aadd3f53c63108a6574e840d03e8b779865501b307f941aeec64834382f2256810e6b30ee27e6ab8d31e89420e0447f002fa3c38531e0e4fa3f3c37e4a20046d8d71ac7988fee083360e8369188193ffa2d84b521bb872f942d2052b2437e7fa2bae000b9c52a2b5b3a7d867ef0eb38b15b0afc4391adfbc11885604d12e768c687d3585ea0e82dcf5eb691536d1408250fcd9766b98b1ecef1808b4263d9e4034af70a7ea5197220020c87c7c283bf209572dc768e424b957ae78e3ecfe47b6f21129c0d15e440b3f9938ff9590705a8c5d0ee0a8278f63cd0c6e4650e88eddeeef984358df0d891a882b08cbc5c6fba1556b416d2b7aaa365ed59478bc815d7a3baf244291e2a6222e28fa98a5c7e2ad2c2b9cbced97170384750ae3376c9c2168dce6fe9f169f59da91e2bee3eb3ccc1d9c9a678572bef7461ea48f3ab404d44a3de90217490a7cbf645ef31da0205fd6d81ec11d9b9809bf009280d4a05ba4e6f761109a8396eb0af5e2118e581eecf22bd8d9bd9e828cd5e3cd309458478f6c01760e22176282a140b8de08dacb7f1fee6e15603cd58d64309441f6956ff0ac23b5802701427700d50336f5c26f020ab6028a80c081c7af9f67816162775cdcce6be27e939d452da3d2b08eff76a0e276c54c52d55a3c002ca8e9fa7cc0f8414880d763302b650848ea980296c759d26b72161e7376ed41e24c71be16dbe939781e32276e8a6e6ad4e38605986733bc06fd614bcdae384bcc8560861c2f65cebc746ad0ee289e87d6b097f4929f080dc8c2ec4fd9954c8fe6fd7a3e9715d04539b812629b762f1c6c30e734672671801d2c900e85a7b013bd30df6d47dbed424fd2a5942a12003e60d6d20c34ed5af7d34f6a7ed1488d14edff0e822a0ef48dd6638115cb2d18efe3e19857af7136cd50dca3763c1d5afd6dc283ecee67bf290f7580a64bbbda94afe5a59be9c8f847abb39a50963d2e3b128ac72b9edb90602ea0af22c579cc86b84ebbe19107932d8267b4c41f8c9a38a8ac59525e4ff406e31f55b86f791c0ffdb29817f695970d7d25cf749b190bcc0760479ac4b502aeac97649529bbfdd8d1843715080ed6158433fe94f9fea7e7cd7f50968d32e8eeaede9a42c53c63f55818446c7cc68899dd6e9db53b3c7118c39c493500a758decc3831b6a93ef72ad8cbd1183b79e4478c3349295fcfca42aef5ab4f606196790089325b605d2191b4b819a7641dde6b4ab483025c15f91c5f7436c3036dc30ecde2968f47b905a5f62f7f18115f4c795835510b6caf16eedd8eb672e2264f4bb5c31f15648fe31f8146b811488be9599090083bcd08d4d54b88b34e169cc82c8706078c62b42b166c556a9c6d90c89f316d22ad501fba7f97c7456aa3f7451b83790b2dbcc09bc7054b06aec00f720f96fcc87d61f51a3a65e04315d07471e0df43379412c291caf5aa42e50fc3b71e5e8ebc24cb00a009b29714621293383d54822ee9438186eb8024d56d54195dfe3a3daa81678f4bf9cbd71c523e2cb303c24c25aee6f7626a275ee1897b099ac9e35fd2626efbd493b00c23ff73ec7188acbca8dfbb96809a5ff182abe1e0dfdff91422091acbafaa7c9a164d28c3696741c0d67ea06176e66a35b920a7f001b5f984c8c893a44a22479e8d279bb40eb6e432b30d050425d8494eef3327499824cfee3d204c6ce6603cfc99bbdc2578d79bdc66a38c7f076c77e1bd9dee578077ad433d2a54d49d80784b3bc7293cb1303154a0a90de16b331930d866094ed1c9944cc14ca0d82a7ac9dd4bbab962d8f07c499bc75764a6a5c46f8319c2f5920e60dea7daf427614d5cf330bcfd0e3c235bcfaa537252646675c4f5087e7a722b58f8fbe12c8a8fe97083e83762fdadc9f4d72fb976aa5850f0151fec19e2cb0454ca83cd5cd51be218517478c39364301879aa1f8c811e4d5cddbf1d5ee5af1dafd24dac2fb11465d54c53e4bc524f0cff7e82368d154ff9d6f4a56a25794b5be543a1906732bf3f4b7aec544e1f203fa064ce626768ac71af7cda1da859530021cf81386d5532a871e84caea62dc222d93a39102f0f281018a3b3f8c1918884129d2f2c12ba747a4c98f96502bfa1c65a6d68f9afa61afb2aa7aebc9a2afcc6c5e2e5f563cb22748693044d5390c521a4cf25f7fa48f595e3c7b7a715d73c5a9ff9de56581c9ec3e5988a5680b8adb1b5a0d54c506c0a50c8a282ad3bc3d6f7ce2c11781030650a629ba8f631587f4d4845a0f59e6db227989d0dab4a210311e93e75223df5d2b898cb38b55800953f357a79912fb107b55f08051a38dfbcf52f04b7c4645d3ef76af2e9d06bc45127559354fc40b9b074c1be53bab35dc6f4df4e6b6641aab0f46cfc2cb747df329728c487c5c65027aa8ddc95bf3512059177030b941ffb4b1a211efcbc4de8ec10d04b5ef959fac8204e01c7b39dd559505b7967439e2d5fae2f8b31566809315a1db10b37b7a7e51abbfc524336d0b98330386425a8b8322933d8868e1a1526a50fb56ec67899cc8be0d5a19405d613199437ec3ea70287f592615b4e4b101c12afb4c99801fd3a0cd52f9e96f7d7f278c4b5c66d9c12bf6db33c1b270ccd93b650bf22d010a18b587d4419c28861348ef7ba825a369bd3157dd0e2dad35858cf16a735741f39b4fed40422d7d8add44c09b02d9c32eba184905bfa0ce646c24ce2515d933550b162f332d77a05033c5715934141fdf158f82195510252929ba421625faaa788c797c0fab1247bc732b8edbb2d7cc407629b81a11ba37f4bcbe34ccbf230fd614000b5d4f5203f8f1fedb214417f14b3ff83b5d9201caf8f3ace516b27e5762473b7ae0c1a9beb8c027bf217fa94fb118053ba840ca63950e69f4b1153410f636367f33a7f04bcde80ff075b1999f2c301d325eb4600a566540d4a4a8852a23605cd6a7972cb085cc35be069ec54bdced3b991231e988b23945b40c7d91c0da7f50110d8828a2d07669b3e63dcb256b508534dc1d5fab67fc0010215f820e8924f4e0f9e4ace6e5b75a8f21d6bd9dce41693900fcc0727e672718f5b024e5a136a4151bb272e2aea66010495690858ba9941806c99b8a216ebf1f5c81db9e240e4ca6284c4947fbe839ab0414f7dbdc8ede15b1cb45cc7015d812aac631e8676e4a018319c071f74453e2077c5c67ccd292d612f85254a2b639b5f6507210a335fb289575ecf57b6071b1d3f00d4bc60354be0d1983a8629a440577ad036752f1a53e10e7e6ccad4e6291c0138a59105b92ab8188e056c65b84870cee00e96a7ce005b11999181d7533536ccbce4b42526d9243dc49f1abc9c16b78ad45219e2a070088d3f0d219538dab5d448b2053e123ed29a676a2f5c3b9843e556782764a4c491766b57061e3e0dc05aed42c893582cda50e472463b9b519cf56e6bfb6ee9ffa8febb1a72c28840adea8bd100b902fe89bcc4608d25276eb836438013b2d485a181d2cbd1f6a11a3d46caecb6b6cbc9f59bc01f5931cf27807d6795cb360b72a7b4d50e9fcfe1374b48d2542b9d75da3c23f922412c3cc18993ef464c6a1672296f6e3adc54cbf8dc93d28d9c0873b6c252950d2989c54b2c02ee67b4de7c2a730dabde33a63ffbeba0813585ba65c7fac9346cae59e05c6ccf8b7cbdf3949434cf2d982fcce3c7546d464b2a79eeb3f0a2c76efbe67b7ba50d616aa19eafb1e25285a802f16f8162df1849ce78f8499437f29ebbfaa7d06a74d615d691fe5f0b888c22334715be2dfc8781ad934284c63ab1e472d94ac547bb397e0417c661cc0986cb63861313f8f4aa80bf8403548689aa07bee6c93b2e199d984380e3633b6a2d5d1b5c1a6ebcfecb567ae67c746c3a50d8c357ff7dc03bca9561c34a5aec0a4f16346f0f39beda949d1ff2a418b7b9ad8cc14078d44802c0e6f943c5834a6a981d34c231bc443b6e8a5141a299c576a15a3a9cce5819f2281aa3822c8d222029b7a0689be2212a9e526563df318d316a7deb884f7e6a5775262fa718045533091d087abea6120c13e149290e635b70fb972622bb5993514d7eded16f9ca3c578f6b445d55c5c82ebd2126ad8e525a7ce5e099c77a907089ac79ef9996e44366bb6802c7ac6fb556e2cb4724cefa0b91530fe08f24b6f038905a3e5fc4b4f265557bfbdfa600930f1ca00fbc1307671dc8dfb609f903b480ec969411d47dbc521bd701e421646fe85f8eec16d5893262cc87d3f66b0e61b0eb2884e58a7975934753f055c035e81c9a954f17f1b85e624c65f7130dbf894d7955adb39e35ce08888a71120436a9cfb1a7226c7df5c5f26048dd8d4eb324eb2efbb0dce30cad2da6bac9d28751552d919d3907c2bd47aa98356e938ce8310102a115f3e3ce37095a187afd09af84a332535e4202e64d69c0bee6a9a5577d508b2d1d467754dcbcbdfc6eeae2ae996931a211394afff6b2ec607a40d44ded114cc1f96e1b97c649493d6a7ddc29f4046193332733d0285bab0fd5a5439e170f0ee51730460685e452a147915474e64ef8fa069cd78b58d43f5c22d076a62f23e62ba0fa67c43d2c1f567f2207fcee48ec0a485feedbeeeedbdf0fe3624ef06cb7f148e89e400b48e526b1cb56b49e5c32e26af394c0692b4941d82dafda91de2bd19743c65beecf53d223c9d37a26ac61f03b79f9dc853fca55fc75d8080d1bce884b36c6143291147626973678f3a746f32fa7cfe6537180a842046af96f920acff2876f3b386e99405b5389f140c0429441e0085c771de2deb727f5730c764643beae9b1d7a6256089ec96c1cf2f915d68c9c5d624c6657315050c609497d17240e5b25280f5e85c06feeb25a9d665a5c0d33f69006337c9717fe9e5d875f0b96dac989b5d0a4274a28bbdad37c613b97565562faada5c32ee9cdc55a841d332369eccd096bc856095f537961cf65a998937b5285ca109ff624bcb6c19c700d7a4ef2fd6818f3d9350ac1d402a1d929084ebe6c122546f6358bfdad958bf07ae2dafaf57a4d291b148b6fcf5ffc112a0a86a3681e53a01d44fbd7702c98ebeaa646618bf02a6dd1979a3155962cb152c56970888b296d7f895319c65838afe8a3596b0f13c31f6823242e24ac58dfa65dab72a162c0c3223d6b9261bb35cdab4e5ef8db69fec8af91c44f17e36a98575f39692e18c19d0d2f50c8d53c78e43e27b4f802bdb0638f1fd500323e2c7193a7c939a506327839c8571bccf6b8fa495b68534e524e95d2273e323cdc2c373a7aa563b307b545dde933f109414708f518dc97d74e4585b788bdd925b22105efc44a671306f5babfc6c8d5a806b871f70c37b7e90ea91fd92ffd2dea308be57eeea689a417064e9b332c37b502da8b890e453a3c3abf533c4211cc4c7492c756d42082cb2f051808a7e3299b6b4907648e62bfed19b66c95733af37956be3b7c86238062c51c300b7691c144e45e00c1a20164483f9221191ce06c490da3a3aa329ce8d91293d591f34af02560391d7179d8857e936ebb479b7b80ab635754800a09545e739a20e47857e8d06deeb162fa9e64ad6748e14db8846730a6390af0ef0267e3001c1e8d1995efc85cafb011d37d363bdec1f404cca8d3a1cb9d5ffc7a702a0124ce4f4cd68af25dc31025cfa11d59c789f2a790c5712a9c7335a45d1ef3ac59ba0b2888c6dfedf6106b477b444d02c002658418e12b9883a500e898ba5b12b055e799c5cb07930c60350572e47231b5aed39c757c7ff7696ed7e42790b72663540aeed29a0e44428321b5691bc78c84a25adfa1f724d4625326d36135cbe7a97e4257b9ecf51ad3878060313900506e6b7a4a74e2fe9a0086082c32ce73089a7d15fcffbccadfd7608bfeef0f1a0d36a7bf6d777da13b90027fb6d267794318786b44b2648128d50bc802f40d9c1a20d372cf4169fb3ba0999abce971ff0006487a33d764365f203d7c1f1e16e4bbfdef6de58569237e2cd55369d0c65146057963f060c2b9dc98061550b635462baeec6ee049d8fa131cd3a41c3258750dc1ab90b4f7f98bf6ae3ea435a3bd90faf71caa33980402b1a6e3095160a8da776fa27c8f6751935fcaf65adfdad94b60cd550fdc4c64af2ef64f1458ee2cf843961101768215dd06e5bbf8bc68b5cf67b6b3c4bf315875e9ceb3bfaa327e73bf01801dc1a09e9ee29776d914e558d0167a8a24ac0e82d36dff92689b18b532c2fb7f647adea2eb071eb9cdab9dcf42ee1f8f4f113f2a77692c6ba104ae36508fec7776ee1b5d4e1d978c4113718f302c54b654274595f3a761cb942f616160d3ad4512958062168ef5da7dd2599ecec0f113479d1bdefec2daf72737214933037cca3d2b709727b4d9e82d10a5db066b152340dc367f94f188955976e243cf913792d46823ef43629152be0793446bba58eb29871a6c06710d6eabceec43eed628fdba0dacf2787382711847c1ff0358fbb220eb7af6bba75d88e1c926507a3435623968178867064a7e53e5a43012771d80913e89dcfe28367c294685b9184156f201b143de9f7ae76fdfe061d9cd33cb195535e5ed2a1c9ad7643256b92391cb8d3a9ab26d5d7024b1843917011be53bb0627feee642228b8c3e8b04906da7b5f5d8b040cd570dc9494a8401f10e469ab7914bb08ecd2f6e46c10116021fd2751e74d178c32f141c6d70c8278fd2ef1f97efb464ea219008eae4d9dd40b0d311d2c47e8c2a05ffc503c1fad9661f468ce826c94ecec9d17d9240c80b0582471e1ea020dd54757c025fe32a934b92651411e8d8af5d69c07aaace65b031655e06ff1ba57e7a0f4e58448e67051ebe298091adf1c3bd01da657649c407b6a91f692d05eaa00d5f3cac5b759b75303def943898c18c8dd1877928ab1a90cd9222bdb4310072bb08f27157e05bd19ada79dc41940755ac93af66239442680d275b0378dd8d410243d9d2274d618933ed2f973648850d53ba5d79c584072b62b6c27d382a6d855a0cc5d385ae0cacf387ae7ae682abe3fe49c0e05000853c866b7e716687ed0b0e48fc5d1ecbc1dd3547aa590418317ef079de6e68c03e4d70e4a069f068ad0ff585b31cc38913505519f0dfd4ee16a17e7dbdf0cf01b43cecfa8c883cb34bad37c29bcb4893619474600027822f4ff7d4ffe45039c059850bb7b72add58493a3be0fcb81002c83b28c9cdf9c03a54d9630ab534d443ec1108dd5e3543dad8f86db82837c4b7a5d2db331065468147ecfe8a0c5da88462d5ceaabd78a921f600d7a954e9c263274de8b157264eb5d383933bc1844045e86fc6bdb6ff6113eea6b43e04026546fab68f335ea60191baff11fa89bc7da90c490ce24ee9a4a9164f3a6af0b2705c0b19be6274f1d3e6ecd06fcdebdb09c8cd68e305dd21d89946ee88ac1c8e14a37c27ba9fb3ec03c2fdfef7938f3d2c3832e72adf8855a3ea42a33df4e9941d35eb5131af12bb81311f265eeff13ee02919dd10eb8110249da88f509b9373b77055dc06fccf17e2951126b773f78f3e26f4015ffc76970ff015078c265a56bb06aa775f0c9f0b755dad3d9218b0220b1894dfea970b1d2b828be79acf1263a3afd40e0b5a813b0cba1a8551161740d2161bacbe060023426c830215c5f2e6a8af60553b4d9c20050d7a64178ba7e50bf01dcb569615119ce7476eb44880f97947c92a4c9df9a32281f83398801fcec38413e366b30f28fa18a822845df53fb26bc94b1e737891032eab80be396e28aa3020e955920a346230a828eb998a269c724da8f01f5e8fede998294b79e40b7634cbb50ee8f2c5acca67942096ac1ed9a952282339832df40380b82b209a0365e9029a8d8aa19502eea67c0fe9f68bd49abd989cf68f827d32e97f6f6ca99e53d9727c3285a0aa91bc1e7f6b384afbd761131e88c45ac229c4507f06117f6c9f32f8122d1ac3d413356bb337e0e1e7f07e03acb26666601f7a4fad84acf80a61c94988052d83ea476dabb2aa9ba1c3605389d8a1c8a2a6c94694f6cc90a95d05a066a69e806566490a947666bd408205e75691135dc34fb5224c1ac62152483d9cc73881e3d8288c9c2cbe4549a6eda812926fb14cfca3302b6ef1e6a590bb62b76618aec3f1d464e1cfac3d874b839035cdbcebe295655d6d558b8506d30cc7c42868729524401ebf72e6c076a818f7996ec128bf49292c9ecec836da684355aa391579d52ee0319e25b52263807d29e4d4cb16e9f5a589c4a014128955af57861163531004b7db5f1cadc17023c5e18e2cec35287b338a5374767079124f01c62ae1e8b9c06e1efc8455269d698404292ebe3beee2b3cc4b3411fc15230c42775483118ec079635b511b180ffe2c40b352dbf3bc278ed4b28609960d7ad5b0e9769321a08545705e9dbec0fa1dfccb844beab512da1211a6bf2d1e8c650b2be80d47d3453abc1e27715fa89a94b146bfa0305040ebab0362c24d2dab13089b42913614b90e64126809bcfbe12841231cd99ecba8ded0c1fd530a066828c1e23db058e61d84c104890795116089ae61b325351fa722022076a82a0ee28aa2648c045bfae8ec90558102021c34e5330ef928c024868336bd33652da7f0ebb531a804bf31aca043c6e23e5b8487d2feade901e44f56f5b18e7a641f32e17372bc243e06e2f6d2fd6a2444853ecb6cdb9f5d72b7135219f12e1732580670a9626563c10b8194f49868b92f1256dab3221a251ccd28104c053ffabb4669eba230d687debabf39cd67b79a6b5a69c4706cc513b7d4bbfa6e4a0e1bfb8fb67aa56c2cfa62ba24d565c01097eaa3133cdec3cefa7706d0adb173d0eb9523c2b81d35ebabb6d7b2d71b92fe40c980a249fe26a427e512747da3f59a610d3e9181ab113b9d8e24751ed81b00ae2db8a2156030dda4835468f04ad16f635da57fb3687e9f1e9518e5ed5bcfea78daa1b46889f74d593c49c69b92284c4d09a939f8c88b62f556f457257cfdbde1cd78608d13f9a3cd1c59f5d9b62b41b6bff4fb3230184ac40a84f4901ddb78d3dd378ba6940b39bbbfba7013027dfa126ea0a6d28c124ce7cc268deb82557c38948469e19e4a1fb00cb41c35215e4d8907e0f54588f61bc6f01b208347d84ee1e54f0c77ba0ce2a32c12b25a5ba91f693a05edbd8b2de0e62b38d81fefa1d09ca590981eb2714489b035c05c5a6468e8d036b6410a74882ab75fb71cb337137968c58c396a90a51a8690b661e33d3088bfa4a49b120b2c55ef8c8d2386c0d241230ee250bdcce8446b04049de18e4eb47b3b88f7cda48733d9f19c92b2b0a07a5512a83430d0340a389298ce6ccb07b6d27ac413cc4cf0e412f311241db342896532ada2c9b6bf43c86c75e891b45bdb5bbcf1433382a73a82fd89f91e1824339ac3e7eb39e0dc053bdabd6cc1c56f46cae3bbb9d197feb88e10ace164dafbd736e73a4137069bf34e27e28dfcd9b0507975b7a76339a110f11365393611740eb879990b5823ca52576c70b459548a2ba21debb02f7e781bf70853983db0d8ae3f5f8ca050f61b08c0d335ecf807e09178ee5306d13f7f355bbdab4656aa8edfce0a232b0f1d8507ae27438e79f02d2d532fc318667257409e15101cc3141ee3409ac9795646bb7ca1ab62c30160344260cc9469664ad163aa8f8f0b0b1c3926c6d3a6caf482f9b2f46292ce56558c0d1dc1a7dd012c25e460df25edeb868a9fca193173441328613fca8667a579fa607f4622fa43f1cf5ba489992f3b0788ae01259098b1df06a97c8371079e0578f2c12b3ec1297ef63f6376a844074b3ec5b0520df743a85a8239d82f9a72ed6388a7b869c87f210478f4daca50939e2d463732fbc58d36dac4ba5e371f5c7941a6f925961f56a2b3c3a0c5d3c6d7d7964573435b5d3b15fb5805aac2f508e598ffdb33bc7d09cd8bf291dc52c217c82ea969036a517c723ed8182cea8c902cd7ffb8b3d7611c9ae500224c7e7cba10ceea11aed55e3641493c4598282eb96a0e00c3a4c9c90262b0a6e1b1f02250e04ea34a69bfcb65bdf49aa3fb4f58196f330a099731e30d01d32f62441651b019c0894a2157db531b86e2dc512eb3af1c4d97590e944326c9326722364a60e3ea9fd41724843782e2a861b06b927bd5f81257adfc576cd1b18c3ff05a26b35c85e83028cf92d0c38b30b23ce04e37c666a1cf9d93763b1649bedb8a7e5b1b3235536a19c51ffec5f7fbbe26d080334ee076a68f591664f108800cfde21ed3c76708ebbdb7f8c76300a2c3bb6bd7f3f94f36a1856c5ccd4fdb1d6ade76750a15b5246d2aaa8d5c20f828fa75c49db11c64fa90230909d640211c1d4a028e67b9bc12bb9be765114abcea1999f1348a50eded358df3866ec187d380ce8a395cee20300a12585d40c33126c5a1099414f2948b03557545002d4953144801b04d72f49e8186dd5af27e72b71d85014cb7400a28846f17f4dd7e1b516cc69b450342f8425b49b4b659d89762e637fdcd40352a36159886d28e920dff4bf9c84646afb1213fc7f7c78d7ce5ce9789157ef251d52b66958c90029f165abe30903106652bccfb8a3298a74fd81b567ec120469acbf6226eb0e3874891115302a0d946449cad8de9ec4714c97f23fc493586cd489a9780b7bc3637777ceedb5e83977bd7b32ee83028b4e96063b353f5e7690aa6843edfaa5221cd970b27cdca50cd535bbca7b367a1ab196ebd432804b058f83d4be357fb57f403023ff8d2dc7ca8766166b44bcec418d7a91e5134bf351de6110a43d4abbf0ccd9c59b84dc51532defef252b87c3b9e34c90b85f05ab34233123704aad1c442c40692e67e014fc41ec637813d2556c574a1b6d798af94d84511ce1630f6f680c31e3c37737f15cc1f2959097f169aa63ef04a110cf689b8746c6abce0aaefffaf83378ce6700931108d5c620cca16064cc81480641895e14d054a0076a855430f676affe0815453ed688b83a52744a1fd2e158f964f4cdc12e056a11d2aab52e0e5010a3d60b1924898f08bedd80121d2190494ff61008c44f7630c0a6acab3e1f23ba2eb14315c3b803d6fe02ecd609ab568b5e6bb9a887728dfe85e4a4f44ee32b4f8e74df3ee74f4e740ce41553f1be02c46d401d74603787a4c877ba460705ac98044f0b6bb1e46c9f6ff2c04d285867de31c3a86c0a3e80be12a228a0f5389b2396ae679b0154742f558f6c477505de9f4b4f52153c219942c076b8533b218c882f16c7b0e49c23e1700e6c2a5daea865ccd0b0e051642d49148831c1c2475257f8970db1f55776cfd9dc95cb0d925e327773dfb0ea0fdc61cd3e62304c8b4768814bb08ea63e52ae2d3ef97648dd224f01356b522a0296d8ec075bf7f6504cf2879c2d464af2a893843be09baa746db35982e60cf06dea25d30e6c7f2c2f645609899235e899a6029f87148232aba441fbadc1902beac337e88a659c4ca5c1d841f79221c5d8a2493b42a7c667876faf6bd4d551f2c06275d262db1ac9941c57ddda795932830eb6a58d8c54878bb16d4f35b07908c9944dff3593c310d01aa4261a054474f8ec75f33d504ada1d939bb6ae21c2476fc80c458dd2ea8743b7a72ecdf3a3214b12997431e17ef23096fd1a983e0175189c48f61eb335b104d80635352e5cae800af523c8250d4f846c26e04186c31dc1e052cda859a1c7137c3c3fbdd2ffc261ac526168fe373b1576fa7c0ceb5fe2a820f2d86a55c03671cd8ac9e1ce390c5612bff898e738f40456a850f93e5b9bbe0e9ec33cb0522a186a2468a6a23c4911659563c02ad6a8b59fb9ae618042920aa25a9f14166c02196b5fb8811b144b275b77683b2cf12b9d338a4f1c247f1b12f16496a9804ec182220a5a911e29257fb08894c4a65e12ee00db94f4be780208b64aa20416dd1d37f456651d3ce494a38e3e8e5e7f1e5bfd4874dc8e2705cb26cd20def0c13798013ac94056e604d781b2487a8786e13f1222100fed94a0506eabeea0ce080a484fcf370fb4b0a812db87e836ec0ec00ee36841630f10a81b8fb383d1a7588a5c93318335f9ada3057b66b035e11f36b4ffb3add14227db11e1458eb6b4d17955228c2df836a99c684644354754736a3b4bb2df092b95cc594687e7439ab5260a95f8aceb899c3441a1622a1e9eee609b5fc10a4932471b7ccb1b64c841c2324bb44c2bd802f6a8aacabd012f3fe91d0d32a02ded28c46a14c5a73a2118b828b25db5cbfe38d72d07c0653f33c54ab880ab26747bba3b8d98a02518542f2741785fb1a37327c33d1425054a295a86a4f93fd4c8b76180d0fc63668bfe8c34c52f3e4f232a25d0642be3cf62ad9edc12040fd0ffa904a7dccaccfef349e31ffc1f038383e3ffbe42b2175879907bed15ad76c8f662feb88a663b8894c3adc5cc2bf794e68ebfd0692eb5ee479f877d97cb0dd8f3520381170859a946f7535da5eaef45e286b17cd279bd23ff664f041da320c26100b25fa0eafdcfabdf38830884f29dfc41767f887bbcb4b14ad5a4165f29c06a28b810c650af2887d4c957dc766dab6ebb0890c68ad2686c666f691769d0c1d882baddadb14fa380c7c928f6d34084c3dc865954d1c8d134f40ba82c22160cb60bc37487e31ad9264dd00209844fc017ded4435e231024ef721acefa2353a69774ca5de6d8ba7e602342bf308f9c85ad97324423bae282c42a5f8286aa658a8cc1daf07ff63103cb11186e39c8e3392403b5022955d91e7b37f34bfe0a3f838253433760a13a2f38ac6d2a944d6f6fbd7c6f044dc4aef63a05138745cc712b07db79da40ce669067a9cdfedc47f1f8c09c29d6e5948445b25b0057eea8b01e8a6ad76b2991396fd0fac9c1ca5e904d883b361d0519286ba5f92009684f1c7e8a44fa98229609e02ee450f667a2f76489c25145237171d0f0bdaf78a1738385685f408a403fd37c8af086ddb08e1332490e2c06bb338c6d5516b4e13515cc787058ac70589dccd3cbfbcf57e761563c94f90dc7b8b1986995b8cf9ad07bf2457487dbbb55cc58cf5d72d3581e3277c860a7d27d3e61b1e7a3a5028d68ddbe951d062ccd8f5f57568b3d2f73b1dd903489e96aa7bdca1de6d9049a416bea60743f1fb12b7eb9125e6fdfd871f7e1f2ea85811dc523a8f5c6f50a13f8bea7481bda00734068f67a7375c5160e245600072b051a5b7cafd0e6a6b2462de1b1842bc890cd1f9bc8080ea0f8a6ed25c07b2808e3c71101c2cf57c8c903203c9b5ed03b572674793f61122a9872a250707d12954cbb0966438a7684ac789ba2e99ca4b58521574d90190815ec9f36e1901633b6992e175bd9505b1a98e513924a8e4cf2e5dd1ddbc89d5edc1673840f49e19f4053b440849c3e075c13c3cf608acb3cd3e3fc0efd5e66b274b6e0c55b9da1c998488906a4db2c8a1030e7af75ccaa557fb2de9c2453b43346621960fddfc11acdc5fd85835b8238db37eea2c0d6c7ce95df772e0c1d1a01caa4a26802fe2bbf91647f8830cc069a1d1483ea01e2f6f83540f168ca78bb1836fdc94d96269a0135dc748ea89f3c4a8232b2d498a0025e58d378bd2b8575cd7ca830a9d958d3991b4079a14ad93faaec8828c787a2fefbbdbb16c925e0bf17ac8152302af94bf711c34bf483fd88fe87873e9f5fb09ab25704807566c8ae80b187d8119ca42d02b0a946884534bbca8897b1d54358cdd301ebd1beae3c1a452d334e72086bef051e0433a0c85d6504c3dae0e031a918ee0ac10dffd6dab3f903ab7100cf70f41997c7b9ac03670f0d8c327f6172b7290b43569eff185090d35f926b1893d9b8b294f341e589c4d985af0884fc0782d4c82558d5dc3bfeeaba352f24eee7edda4a1717eccf396857672f154df328819b501c28faf33e342ee4859760fbf16c2c9b298b9f63c7e2b6b335310c38d974072f31a0504d372b9ffc1e672ceffeb49cdbde72eb455cad35383842d5e78190c6064eee1a7b22105b078a0431f64f2d1ae75724b32da7ae762f4c2fb172f86c3a511f85d427847f928c178e06f176dadeb3ec33bf25c3a498065249a70cd060f2e885e9ba1dc27d3ac1af197dad3ab279edbe2b46a39f4297a694cad66db4c6911baaf406ec3b3588dcf2ee2bbe8c2f84eea89b0a659c46a2594bdca58aabea1969e29882bb7c4b2b401de32f5e047b9c9bb0ddeb4e4ebc95b342569ca6790ed0f9a688a5471c46c7513b24a951ef6fe01ca8784d967a01acea5f79d4f2d56035cba70ba2656fe3c75cea1132569f3ccb04bac0e7ef48c195c6002914da7efe3a65db98b9b1941d9253b3263f234eb199d77415d2fc44f5007009b781fa1058cb882fa8294f423cab658a805b459023eae196acd49dcab43c1d96d68e45f224499ddc1daa2cb303eeb786da4cc6e804d0c1aa8aadd11da881b41da00fe9f750c2dc2a8c96c072394459d9afb9fe2db5b09cd1594ad6ae008abf13fd662927642be29771aa801c82ef654d62c00afbbd5de967e6ca9ee419c825a461270e5807a4c12b31b80af5bc9d7d4b9412c108c6a6fa18286d8ddbdf6b8a91c1fa662c8f5387452bade18b4bcd162915c295f8c0bba6af163066d9384bfa8c65025165d5cef60f51f5f7730e90f1a46407da5ea39fcf78ff67b6bc8386716445a69a15c7608070c7187f57e945622e636cecf6a4d1916f0eac7aed16e7caa1e6a98f08e90ad7bb4776a2ed25d1593f566a2190fc2658262a0b815453d7649aa7d8b34a0c884ed693bddd946148173ebcd66be6442671adbd456c2c1b68bbb0ee3d5d620be5d38ab3d2fac6928a930275ed1b60314d0420a526711bcb3848a846ca4d744bcbe7bad3dc5ae1a7df4539779058905e3158c3ac6906f4f62599b979932741851b1c68f387e096e541f99a8bf18aef7a85683cfc7b83acf5a798a2daa4b0c400e579c2bbcf569ac453f8ecca0ffc88c7c8bd3a723e4e98fc25fb8d7a5fe10be4c1224dede725d44ec13c993fa96b34a9605f6cbecc5653dc8143f7d3fcc03c1a83242ca71ccce5de83e463a7c51a2280402bf410a92389b0ec48332ab244ea38656648a6b1bd43424e1b820150299574166b8ae53ea58212362105d8e1528047909d4d9680d011048d0251040e759b87d7d5ec2f073afe2fc82037cadec538bd50efc127597d3f3ac43dfeade0256630c7bd612382eeb702306acff4ffa25cbb072062113414c2f4c9ef5626fb7068af1032d02afd007d1ee01d59d6fe1c4a7f4022ab466f5b84d172b30f94b3ff47ff2669efe5583573c1ab59afbfc1000d94337b9163e5d5908c8b14b943aaf7d8c505dfafdc1b93152f6059c012ecec83837b47bea694870f8ffad767f8ee3989222378be82f0218f3876bbe0ae836fe2cc4091dee109391acfaea46a61c05d96535935e5bc35beca27a5788a5f588b522ec952d4e072293273fe171e1d9150a5a8ea8ed5aa4504f08a75f265d90c8812d5b721ae9aa7a597902b496909ab3c9dc3cd27db55adc269717cab23e2bc610bba8011b59ca3ed8a99c94117dc8dbecd3d28953eee33a5efc06bbd419ccd53fe90d0ee09ab0051e7beae39096815dbc45d72c4fd216a2928b0a49158c461ce47278da81e011571d85db24fc25f155b45b384318982913ddcccd0218c39d54a1eef171183b50fb0c477962e72a0adeaeed186f4530fdb2fe22160db0079d802b4d835111463ac3957ff16a8943985876fe036058661227a9fad69440e5f11fd47bff44dc80a7f132201adee560bf923fb86f13736d144f3d2d3dd5e9915520a0dfd453da2c51ff0d13132624f03a743526554bd0bdedd48258f29d904a262b66275141a0ff03ca3c5674dd90477a5b291796e953e9448815b7b40f122b3323932db73e908b2ff0ef2679655b85fc43e5cd69c0551b8ae29f851a8450e86fa42b7ec4ec9783cc91f850d15cf18d5b5421899d12699dfa7be6156adf6b1769738ac3b6a8bd6b4f7100a6ec9280462290b48472cba3e6189136d7d62afc15e92f5a9ffdea41578f7724e80eb891863a4a45cb1a37b53aeb518c6017cda9b546bc585dad01d34dd0b931d90bfecdbf5001dd276ae1afbe6d1bf519e1195f28088e25c7d37dcbfef778050154ee2cd3c5d828e9803fc4d6bc0e7fae79231141796f43b25c86e0b027cec4952844faf0b009d77428c34bc40c683c443428421bff4fb0a349293e4b8375c418ec42daa850ff11e3c5b8fab05583c9edd53dfa2a7087651bfcf675f4a2dfc422b23870fba6c694509f3d6baef5b7e7d2ee1f18fb2417494da50fb34e5ce329e340b391588004488259ea5ae6f89c07b9279d281348ff8c4ca112c608165043aa1e18f0a7b932be77668f7ebb922634f242950221845a90e1d5f690046887b717b62ea43f5d1008052917888007e68739f4ab47e2671e2003e7d90f1587d7987a6f9c064475044fafbae7965119e7131767bc59988b709052b0f62fd4ad4ff76a7b5c2e1041b789afb9c116f7033cb36f9257ced4ce4e2181f9ac48eadaa694b5a5f6e8c2e3a05a7370bfc644a65d4c49138cd8c9492b0c0a067d516c79773410faa7354bc15d24acf1a18f4e59f07730ced5bfa8b1f58715e29fdac20b341af796a5f64d08ed527ccb640084af3e397d49011448cff960dd5be91910c12dee1f6493607827a69dbcc206d4c9d9297e633b813c6ba032349e99d84948b32fec41ccf20be0d5c0be56c7bdff859c252803027f4f18db81c52b60a0f1693fbe9e23efcf0dbdddcefb8cc405ce7b2880695e905302f726d8e91e94b711e2eddefad0605a9f146620e46a20d52285161f307829c5390146f04bd3572228b33a01b9f2b3879176eed2d9c58d5c470704e8e4864a3b08fc7a8f60e1348414140549123c3133e3467df0d558bcf5a5b884b16ee71e6f693bf60425e726d4819764deff9b628a63d05b0341e7fbc22a64d82ee98db6ecbd085302a8b1d63443a2c290246938eea2cd54dae5f219eb614901043f7db806e87eaf26c102e0c3d90ef73ab192edeef6b14dd0705bff5fa8ddc577321f816450c9a07aac3b2675b81af878e640bd4968817e8f82b25d8486c671feceeaced885322550de0dfa801fcc727cceac73d296dec602ddfab1ac15ff5a75687408fe710286e88ed27f82ebc90bb9fc0fd2b0b3e992f11b1a6665e4d05497a6e539e25b3ab670ac5ec317b0e2da203124120f960c434ffa87321fff19a2d24e76ea75a5ed2e4de819f450d5d3a481897be35d492b1f0549b55128a237814a29cf3c851c0630562d111e424b65f6a6982825665d147a91ce45531aa11e49b77c3a0c579b27da9fc7ff0ddd9620cbef56028eed380e5250a1864f89bbb07376590a2e0bd9e6453ce00b6d42b7ac2e66e115bafbb5cfbb0511374aa1a9a127ff23039ed60d89195cb05eaa44695e19de40378f97d5383bb9920cac9b1ce0f181ce5ef5d49d14024aeb8c56c54db593f3ba0b86751b56dab1784d83eea7bc660a2f0c939f6bd4733b1bb86b8c7f3cc836437e5424f01cd370416255c88cb2ed46f5de8f44747e04d94f2a077be2a321d0388d1a7da44c957f45d35862de7c48f1569e8358ff313b0b42b27fd7f62a9cd09d92603cc924f740c58518fb3f4f9aefc8ee1bd83019ebd4d46429dae9474b528c2c94aecd8943ada6fe5342a98eeab23a0d459c0a47c3181b905be8973a445c77c2b386028a42131d2002b2457999278ec182482a52b72b4e9658a31e7b82274872f4c238afa2a4c66c6528389c0077878dc396e10c9c5e61c835dbd7e739c0090e5c9274bff7d7f5260fe27c53b3986552d64868bfd96a5af039c5378186d0d4ae86553101225b9c38e630d53ba30ac6b5215d5ef8e459a0b53723c3cedc8d290719f4b1ae10b7c8b9dac72472cb1b129702a0d1418e31cb103241177e11438ab9e6d061078db1abcc045f4cd51c0d1040ad3533fb7899edf6ae20afc160e8254188221c937b6166ed94f1e796f3620801e6bde8abac57516efaaa0495c4440bfcc81b05e4040e5158ea95bcbeb90dacca9b4c9b2ca7899fb40d67f09750acb8b39c7ae2ecc0daa3a78e89fac4fff9d779ee538a3a6f03da04193153e904a41e838c03cd60299d3d9a297fe1baa03dccc4ea5d6c3a9f6c395be653056623183ede22e3755a1c3a706c9966e3b3ea596246c6c3fd4f35f0f343a2480697aa3f6f0b79ae605370754ae28a850dccb359c36970cea0d8ef2fccff5d29986c6f8095fc68d055c3e8fcc517a4d6c0a46962e8b0a9d47525ea951e4b10a4ad7d269a5b22c0af7fc037a1d968448b71c5b77671e32872317606618f380b3a7a3f8c2cfb3ee7848e354a09750adee11a23703c138567fce766a74879a716cc520302532c4e60882d04a02bc3336c03868c97dcccf6a9c915859894b6b5083b8d1465625b074a92d27a89c8c9a5e4cc0d4fdfd23f8c6a6b2be8fc08c6148711db919d7bd0d20294214f4f93f826e7f06bf5ec209ba134afa25e0a8fc5067bba35f31b3e31057a2dabf0c47d43b1157d6a13339d40059df9bbfba48c61be010674183918d6433f7a7389cef21984aef684a90724791b0c4d9a4f0d428fc3a753920971adc5188885113c689388be4d315fc4c55182407cecd3446264a5499efc17e542e18526091cc9e792497f932cb8f6f664ee3bf81ae2b0c6d44d58201d0d099db14ee2506207fe0c4900dce8a01323b29877cf862e92b408cbc1b3d91430fd28470c26c70e59309c1e9f90d5ce5aba7c061db49b208440e6a02b7b1edb523d573cf6175c039b85964db9ea2e0eebd74bbd9089c9d926a5b1538c31fb998c4ef318147d4b7c4ef482bfa97c1e46c5bd7e4a41d866719a7e10ddfd0defe6f14bbfa62cc69e0f001e008e952cb00aaef3a87f3ab2526a135dad3e8b583b606c800e4ee6b63c5e0c1e616cbf834a86331259dab09a589d23c7438f4762e4b2d2045d087443cfa8a84038a9afbd80550f2fcce72a8d446a4e77101854284ba997411675440c623daa1ce27e9f04fda0eaf0fcd28c724685bf7cda67ad8ededa7fb3ae6c5d610a1e7cd488f8d06f06786d2d5dbd44a48f95b75f9d8472035f0d94b00f5f2674720eaf1719f406ae0638f80eae1ef0e81d4e1d3be02938169ee0bc01f411d3b4d3e950388b97f3c40c23902f057b880659d4c625481d5cb07928cc7e3d1ac713b608f404046e405e805b5bbc0f5f0b18fc024c36681a30376083432d50c71318755bd2521678cf60f4d04c21bf4a90c78e4772c2bf469b4e7965f3b2278e3a5f1f2729ba5d6124e69ecd94b512bfd8428463774d4e21b8e19002283ce5db0e79abce1ba8c07204e4a3c8f04092f759f89897e2bdf8622d95ea993137d0c0fbae868761edcc4d546ab7b48b32104da4a50db0c6b5bbc7107a1b616d256c30065bca850d8b608b16de93507c2ee1e82a180d38fee36606cf68b93ea0ffee6cb542ab0de5d5608363bcbc6857ec7ac09a40ed2db34b1b4752cd33afa1535e80862266afdf26a2da00096f3fc2099d2bb570e80b3e79e05f7d9970c1836d8526a18b42ee62744dc9fa6f3af91c8400f156018302f669d851cc1ff5f6adae0178a2d60882c4fe1989e2052a640df69820ef6cf9c7be0f8eef67409d9f31c8e262b4defa187394ee99095681594e95b04e823d208f85cbe3d6ca5e887a3e14a4cb7ad7ca4a70a5c972e6e0f8bf7630a76c41fca7c7bd0f57a8fe8d08016b16a06538229bb8fd7b4d33911761e2a1624454297d5cf2b8f6ab617f06c12b98f67b8a045f338a9f419b08b0045a52ff426b2c4edf32a2359397d5e1a99e53b48f84272132d93ff30785c457a850a480b6bd0d32fc3cb085746533f27d9b2c49d8689a6e624ed7b7d115f3dfbb444da13ebad3770024d1e0816d2bd0d3d0b18b76676b940bd95a8e3aec1c8f752c59b53efc317cc41394e0ebbb3126d5ecadacb4eb6e308841669485d988ec8c5a357ad8eaaff722a0e5af468b911568f0dc982f0540b34464778472998a09c12a80b4318261a445f66e0ea23a16dceac3fac37efed2919f91aae0d5f07f664085f5f635a875e115140daa1a6191c7c8b35eb88ced2cc3e717d1865831dc93b3fe796d55686cc2cd1ade82f8281269cbc0d1254146fe2e14160de452d7c155de910a1c9d96026fe0060ef3b4dba77520ab59b0422eabfc3ed1fe740647e87e6e0417321c303fb1886d664a4405d1c260ff29255b26824a51003610d68e00ea96670982aa22e00ffc45b76f39d390f2a800802c21caa1b36c52202bed826b3e23c7be8c8ff042557140fb73d82a6bedf06f54531c08a38e804e88e45cf01237a45c3f10ae991318880ea458fc2cccae5fc669b0f3c3dfed5e79c8878a14efffce582afb2c488828db70c3c2729930a11e5f93b0e4d459b7f7bb07cf16cb93830e0df89776b803973253597ea3058f2a56443bfbb15dcd50807004acd4a1579a372e459f91efde0c4d1b482bed8f29874aab0289ff84590a295851c2a18adc25e3e0743d2b6ae59f640313f4b9e59f618fc59e30f50cf8f00dc20ecbf04a0eb929c1f88cd82005e440bd43d058174c501f100c9261b294016dc51c78b14fefd421663559b772b10db32762866b9a0143eec5e055197299e22310cb45269f68c360b22b368d2733ed1a173b4f17e8fd02d7b15565462219f90a4dba08a399631fb60bb60af58415122877ed199e8511803095f79f3a8433d33b917d2e981628530ef90e96ca2e0c893a6a07776a7a163bb6e652e8c6a42cdce43cdbb5c70b813b9891e8ae315c35d2895388af0fdfb222a3c6359eaa513faa2aac7d5b29f356bcef85288d5181db0a79addd81ba8f96da9d6af59f8c5b33fa2d9f3232f72ac7084f27b09919ddab3332cecfdebd5d662deb4a03d8aa8f4a60073b453365b597516d3bdc10319516bf27d32db215aa3024fa403e1169035fc447372ec1b57ba4687c096ea7954675c95d404d840802f371f2476f02f408373ed6374087c3b047afa36945930d81da5034547c684f9f8c9a995816ad70acc8e3535e10ce19418ca874817958fe5439a81c23941b0bac81edc3c41004378ace987a3c882ab29d84854f50f7cc10e8b21ff926be2d0e1ac91922f09d97bef2da59452a62403fd08bf083e0942f5796b4aa9a3a0aa619cdb6730817dcdd5e8cd04d819655f69b1cc50d3d12e999999995f9741e95146869e9a42faa6b3724ee965c846ce912adec78f240f1d48dfd087453f4c810ffd0253425884a4e8a19f8a8038f2b0050fbd7828a5941a0ff8c5cb47242525451c78c1b3c3238c686490007ba82c16d2c4e7b86eeef9a1f3cc7ec824b0d1a2b25818c58a3be83f41df057d0ff4ea19a53473be42acf4c1db0149cb298d157b7c0456282dac3adca8d77e53de6a7bcb4ba51b9d7fa9f4b260532517fa1296b85aad56ab8db48aee249fed872d4f94565e481fc373e1421763b55aad562bba4455926535bc86892712a9e42698cd0af952c6c5904c8b9d56cb2bd25243ddf1e18668f169e88e4269d1526bd09a36611b9dbfe590643592935657b029920b3d09d28cce6975e0e54f372c10ce3aebac33e6a1d74a9da7c79f37355de8833407fd358cbcf6f4702410840b8daec651103e98670326de23730a4a62d45149b132bb1d9df3b2badb7f6e44a2bcb656081f8e4fabda6b68553bcde9bdac7b44a8ee11559de65452a4172cb33cbe1b514bac75fa841b65e9cc506af17072ec484426554a58aeb93e410821bc9913327b5914831e8439e3789f37309438a27b6064b6566be7ed9c571e04e204b1aabd7dca66261be01a4a58e6a199042a44577490e5dd892327b07cd7400c8b9d11e958dd2c17fa09bd6640e817407d66272fba8c7998a3841a4f046abe3ce88dff3e6b9cb8c3be447dbfdcdab28ef17616152c3f8c31529e71a2feda7ae20dd067dde253598e6d96cf5bce7e693d4a5f2bd37917106fb4f103597c744c76b7a7a6437f0b98b72b111f7d0742df5070f9f7ef79a45e7331361120eaefd91499de1eb505f4023aa122f1dfb349554fd50b7fe8d71f7a43aa07f7313e1b762ec22e30ea554afa66f49fd24ba93d3365962d2bb367feac140f6f920252faf285741f54617e6d9957f80566bc617c7fb8b32d7ee5c16e6caeb7023cb1506a8c6dffca50d5d210a5946e693c11be94f5651871ea34d478a263de96f3d6454a2fcd2d8f9dcd1a1fe348f1805fbe5c995f9bb6fdd02f5fbe78817fb9757fe0e49fdad64f3dbb71ab0580627fe0972f3236fbe53af0a20ec4d5ba66166bd77f718dcbd975e0253de82394fd71da59840f1b45d8b071d448a03c196ffc2ae34d1173bca91fd11f144c856e7fdb11b69b237c45df7dab15b1ba65d552146c97653f4f9cbddb3ec51827f4d9ed32468ed10a4692e82c573a4b67814882f09d9a29b7131664c53fefad834fbebdd403eb039f30a31e73845d7c1ff8e4dfadcd3d8ecd59645d2041940489d8d11f12578c20e20829da0f47645220a1354142fb0012d916249080c40db6c876a05119ca62a0313982e3e4c1326a57c8a6d09ac8a2683e1cf194f090d0c11e4fb1ef0a9196a75e136f268f866d7d60a3f74ca7de4d7fb0a3b76ba75edf6aa75e2f4fe7d9dd2abf60422fc617e1f50163eeee6e5ec1ca0111a8077befbd07018c1b729378a8ba75701f9f0d8c35efd6486e12741db0b3c4a07fcfa66f4a47fd1795603f9a7b523e8a153cfd5bbc0ebb9d4fcd476fc8fdded6cecc5770ef31f30f00706e61f3f8298f2f6bcc3d799cd1d237345ca4bc1d1ec9fa0675234386c77077bfde420bbe05c06bdcdbb91258196f2dcdc978c959c64f2edc4ee85d70669f310306ef0c1083773370dea954de6d3278274300dec1bcf4ce7ae91dff0ca7719b8d9f8a9dc6f69e4a00db7b2a1936d5c6ce6dec31ccf0ec3018e01900ae035dd85298c6430380ebf3a0f85467291de9c0874fdd2c5e66e83b3954b3ad9a93f117361bcdc9f8dd5e0bdb824be7165af0a7f1b470659c06d59c8c6301d890c0e041f80e0c170afb0ce9db866d3436796b666c9dfd19b505efb294bb70bb191ec3e5d6d997a9540b72866fee33626c1728bebbbb8ceb340d8d4be9820b00f016dc85db4947f98c198e518da785ac851900d85e73333ce53a906693e11a0f2a757db297e1dbc523e3d6e6645ca7515bfc185b7c1927aa452fd3462fb3e4655cc6498df2327208e2e43c958c6fc931c1c8b8354215591997b1642c4bc62d193faa32323e232323e358142743d99297f14c46e6c9c8b8e63297fd24a19bb64e1a75b2e8dbedd675cd25a7a57373a95a8f3e7a0244ac475e689b04a753830da7676424436626064a062ac68c4cd12926276b0213292875ec226dc75f2bdd24fcda32a3dbfbf9b219f615f57a171191471f8016db5d445c89a8544964f99cd5512d90439767ded5e85209c4215de9644a4b27d809c7e475757a5ad0474679c844ff5e805ab087634f1e5fbb9dd06b4ea36f601c2563462ae6c6e4a692474f6d59abaccf38bd7519d651d63ae969799277f1491e838467cf8640a97876ec49412f67b76c9ebd3e95939c743be9321ee3c667c3aed327d781339bc9652779624ed7e7697993f5a8f5b0b868328337c5986e6dce3a8de6acbdd24b1bc9bb9ca78e6d1df7d4afad433dedfcc84c4b1f38dbd367cf167b5c37d796b3bf9bd7c23a0f6b3e843ee3d2f69ae3b62eabb177e3c2489abdb28ddf92f835ec2a61d7bb61bd1b98979ce45956d27cdc7f6c7bcfe67a36efd9c4674d07f509afcf496a3d0a90022b4d88b34ab527c8d90e2bb71f1a1c6763390dfca97936b239f8ae3871f472fbc1696ba3d9fcd9407fda47a6415198e9964ba7cede4deaf2889746fcd3a22ce225933a37b982972af8a7d149c47220f83cd6fda1df63b9757ba4d78faed3ed95d61def7fe84f2f027fde4ede1f5a047e6c82bbbbb9f987e415c25ed9c8e91bcde496c7daadbe544f3233ceb72b79e631b6994d663b6db0e424d78176d3bc94ad5e8b9a966382d9607da059faf2e54ba963153472cfbda4f9abe6af9babb3d985ddae66a3691553bfdcb228cd5e0b8b39f5ebc23094f4d82e7db86fce1a36e98e35c3312f1bb90650fc8e09f8f2e50b13ee1bd8d95f379e7db4a21579607703e1fc9039c63527395b1ebd6e1206c6544dd5544d25af1acc46728d47bb40f249ce91f86324bbccf9aef107ecd5607276cd01a9b4deb368d8c0b8c9352f79392eec866a95086c6cee543fb38f68c8b32ce368798c7d332fd9cd39abdff74fb0d3dfd3f8f159a33df8cb972ff302750ff8e5cb972fcfcd0ea37840c910d40794f8a08682704218713f561e88e2b3d279444740530315d83c40e4b3054521b6349010ffc011200cd8e0890fedc5c4352cd73082651c3c836bc0d40f8de21a46404d417483005abdb6016660a3773927ea1dd7a0d2a4fa93b789e53911858238f54604548fb709757a1f070c30039885d481935ccc497eeec06e6daed6e99c246b6d3a8661da8dccbb6a7186553ae5914a2754c2b5e5638c2d5cbe9f8d31468731cbf30a0b35834a1a4b63e9eeee2eea1b2b7d63d438995fde58fa86faf5ae6b4b27ad601b79c09f91a8b9588ae2e3163f8629f6cae2d27271d11797e6daa378e99db4a232517d5d52dba5588e617435e54227ad74cb4adbed12ab3f2efa65593ca365bd28aabb3fce728b5df459425cfe001e0d65590362f4ccfee8f272abe918391eead2de84cd9aeb25b161107238dc5e15ba44ef72ecd0379d8def14bc3afa618ec611400d7d0324160db5f0ed43da7da08c3672a2ef881f69340e8d74d286044af4207c8794016dfca48da6699036648cb78b3c7c65fa1a6f426a0f0f63760305b8c6c62e3709708de850e341011e846035cbfcd4374dac6b1ead6b9dd2d19f3966a9d7e68624ea762bd5a8dd505f3a16372112dbf8ad90846a18f6f8415275afe16ce4b48a63246daf6d5c1bcd71ffe56273bc0d2c7b737d03c4cf239dfdf22262d0217307d498e6c5c60f352d73ebaa1702750f186f84551ae53b7c04fad804f38e878f414de2ed284a0a281ace628c357fa1681090c45fdfd44600e6966571adea586fcd127bb2343621e396f117efe596e672905e6fb7c390197e805b8a077773c617f6f2a7a530a9c925720bf64586a5bebc7609167b798729b15867bf3b3b041fbb9d4d812cfacbda28133e2c318f9befc656885392291eb083ce4fbe5cb26428c9f717167a433b0455ed244a0a1ed796c9b74f991faf5df26cb058e81da6a4d6c01955b04c842921cadaaaa9234427666666ceb6e474998590e89fc6d3a1ee95d2fde5a539723e2ca58ed41d9a6b471dc9257c80e46bfe5d99228c6fe9c3bf16f6c15ee2d9408f81c2769d648987de496a65e9bdc9e0a1d3d9f27d213ae2e8231791514983514925cbcca45aabf5c62eeb9636d24629bd8f560a19661a51b6590821845c7b4a1a548f1cb7ea1bcbe2da391addd9b081f1f06ef40ff169ae25d09c909ad5e785394873ed4127eb9de5c17a598a9e9de32cab524a8f2ff49c03e55637941335a09afbc1421bd8cec6f79c2ef472c3a4dc80faad4b00ae31bd4a1b7d13bde1edb8671d44efba28bc3c879f1ccfa6739aeb326d6ace1e69645b0e3f369e4daf9e8d2635b9a53429a5a65dce51c6dbfd50abfa8bdcc52cc777e63a9dc373e817ec2e07e8977643fc1ff831db72b04723879ff76cbad55f573a7bc749785d324a282fbeaa3b945e044222115e69dd538c1003414683136cc77134563672fab2e617970eabee4e2f662754664fb5ae5eeab0fa1e78aa1008588cb7db210ef9c8458c11c63829d163357314c42979ada7a7b29cb4595ae6f3b45ab5af9642440b63a42fce5a835ea4300b139bd745ba48f572d29d53d2984d76926b7cb9d571ab9945d1780d95934e3a9fe4d3147c3adcb28661587ee622f6895407b2ffb846e75c699a9b7ef96535e328629f083b907dc6c1d6b906ece7bb6ac2428ff4665a5e673f70e2e8b108618c50b0fcb3a5e487e506fa03aa007b8e392677488d873a73c7eeb37a1d56dfc377c673617d564fbdf359753e2b4d87e5d5a7c643a3ebd093f90aae36193016e6312698cdedc6d7f61e3b7a391ddbaa55371d56f7915a7680e8eb4b4b6ba55ffc98ab269675638c3027ae886a0d1b581f70562259524622c1c06cf10ab17ac966505e1ba5902b8c85c9604830303a6d49b262985f8eb1b5d67748b72ef45989b475414ff24cf3a791849e4400ae8179b675f1a95f9be575eb3ca32d68a287b05a3c58165d3d8107585f16dab59487ee99a50ea471503fe66c2972c651eddb519a838e4a8165ef38890e6c1fb0d2ab610e8a5dd0f700f5cf1ba2cfdb6540e83d6a3c56fc193b20cafe9e2d8c728a87e51763f4b230aaf1483adff4d9d5140fa7737af5e9357ae481291e74def9d99cb2aaf9abdaa08fb7bbba60714ac09a2ebc352deeb3cca2b62a6994452de7e8c2d72b73102950432f62d574489f5a4d73d375203bb3ad692e42d85c3efa23428d291f6c67b35aad45a12037e31776d5c51a57cf393f3a6badb5f04a1963ca879a835ac2dba21f2bbd2eed3eafcb84475d6d2d93b7c4eaedf2c7852f5fbc3cec8480f8db75785dbe87bd99c05e0dd6d1896dd4314d5a3e2d9fcd1abcbaad63886d9977d4b11ff83d1cd92fbf2a46338a39bd1d86f9d3608feb7b4ccba7c7ad56fab3359ecac3833a9d92533d64cf7b8c66ac65f4098fdba9037a085752c86c0c29b0d43b145bb57a76c5eb29b02ba82443c9c076281d1416a7ead9d78ac262e660e66b838f1a749a6b14caddb2965b164a06965d566ef6a47848ff796b220d16b6a390c56ad4d9a30ae1500c22389252a2a1a9a1f1c2b22a952bb8e87611a1943a466f4ff5fa985b971781179bae557f5fb942cb67bddd35a9452dafd5b24818e64fab96e5438858d78665d1c8216d397a6658d1e0bc5a955e6e6d296a5d56b5e8e5f5a957cbbadd4569dcf2ecf2eaecd4a5771c766d29ac5e7cd58d48add5af7a5d8af9758bc0bf3cd60c0a4b3bcb7f28e74560e4a744b07b5d3e9d2757873e6fac570eecd76a6fc76feb5bd73a56ae103206b759d9eb57be3fb408dc615da7df6b1bc786710853852cc72684d077c820933f8d859e09c035aa471d685d9d2615f9a1cf45a4ffd0677fda02a417818f751a80d9ed32874e37223ff4996fc72387b0438716eca90f7d08913ef2f2fec05bd31ca4e17ab667d33ee4c7699a6be8ae79878a3225194e1821116676c9b7677a7d49dd23f422f0e1ede6fda14f5dde22d0c6275d4b31ca73bd4ec3dad28a168451b243787facb7a6eb34dc76bc2f12ef0ffd2943126c874211f9e1e17b80a006e0d7dbfdd08fceac82c2c270b6040a9d32d56175fc984fcdf3750cdb7aaa63ce5b4f75ed1549766deb01e2d7e13d633e25bf0e352f6f4ff41a312d11db3a9882febe487f0f8d57cdeacd63ac49c75c46b7960ad6cd914ac5606b3c50c6ac9f7f78b6cfd36fd2e1b3f979cf46e2bc1dced8e1f6b408c563855a58fe1adbcc9b21fab59db84674de6c735cddba19cf9b3517a1e0d8f524630486710c4f2c5fe6582a4d1aaa45c6596336743a1d597a3a1dd59a552734345a3219b0b09dd5faaa2858f6ec3ddb6d512e0316258e2d4c9b981942860c19be7eec3a6884209fba48e24a144faca755cde9d6fe4ad0b148b7ce8544b8c1941c6e422f61aefb2209487299571baa5dee9e5a547a0c94783896df9a459f37c557a7b9e8d0239016ec3302d23fba1a9ad38dd7baab8f37d6396b626c08022927a8b951e2db08aa623be11a918bef4e158993f8432bf13136e6c403b1f33fad0765243df0c6479e4df40144b1535ad15ede0d69d437d487b82ce142096791650a22fc1d1fe13e0271da49aba2d76a6d971e4e965def6278e78277317cacf111e76302a6f8a85deb4646ecd788eb6285a33f8e11883e5dc0bc4d8c641e04f320287cb3ec0e7976acfaa07e5eac5a61606fa7877c797b8816c1b3893e274e012ccd47b7e1e4638e5682e4bb2cbb4214dff947205c61ca2a674a16c192bee93a09117d53b97cfce2bb2cf24e9dbf23be14c1bb31ffc80094b0fcb41d306681ddd0a303fc540fe8d429e7f0f39e8df5e2d6e510270f6c1af434d2ed073e9d597339fcbc3ab7947c9b54c1a9b90729ece853ca22f0630a30fed9b996b90d82ed5e91aa06d6068853d32ae815c29aa21ae883005aec8f6b4373d04d4358e87d83c16bba35776077ce1b9dad6da30f422b9e7cb9334ca619f674727b5f73333144a03cc665646464c89021c385de64f299ad8b3fe328940c136a8b11e3a84de86d8c189f89711d28b3c5e64c7edaec6b6e46fc8e864c4b1860af26c6c75df1317a8fa78a0edd06888301208ea870faee6db18e8187935d56c2aae8288d54a9a0d987858ff7b10a888f9f3961fdb508d1816f0392cf2b7838ab167c9c45eaa3e0b112c681793cc147e712bc1bd2a30fe3c02ebf1ad3651c009ee28d3b4459e9ab8f9bfe6a3f479102f66afcd17808a5b4621882ec7c6ade3a8c4b0f027164b8742110e7edc0780c970ed437302e3dc6b6b221c3b4cdb8c9636262502894ef788f72a18fb175fe31fcb475f54f3eb375fc336eb74e480cb76636197f9a157abb01c997b9f009ae61f2d3d6359637b90e8cd96273f6bee6ecd56919dbdbb15ef2d738a4cc3accad34dedee94cdab4ad43bd3f76d5534b20b05713a4566b51287fafe39e049a73769415de3b95005caac02008597ad004086014edb4e7401ca10e1c018a2caa18b184125eb0d3ee5c4d3341cac69ca9a0d8e75837cce08b3188216c62a5c84912488e1c65a1326509115cb6185979e22409922c8e88a83059d2858b156f4583bbeb1b5979e22422c9e288880a5cd2858b1546519ef4105ab2888268c84b978745f5c4f2553d813658c2082324ad9ecd738ce7834d250907d8f4e773e36f4c05c54ec7981bc298e2218336cce7567bc29f30e218c235e6543db130559c2089b75f7dda308471d4700d681fc7d6308e1ab84687aaff1836a9ebe1edf5296d3b3407bb06c6f15e8dcba1a5dd78bbdaf50760898dfe44f87d523dec53b77fa9c01ee3b01e4ef5e79771487fa8ad4215df788da7e2b877a39f0d7be737f0318ee6faa6e34fbf2ffd710dea5c4347cf6a88150d1a1cb75ac9a39a2c3b9d6868dc6b6a7080bd392dbe18e38c352671892be7782f8ad98d04f66aba6af4d1bd183d01fe5df152c4b7f6c3a3b90e7ed2d37e78aaebe0bf5ca7a193beb1cef5cd29c65f6518933fbf00c5f2ac3764f3706aa5c11ec08914ffea141f291688538fb42a7aad16552996228853ab51c5528fa2d728760a4704a3d76a2d0ae5ce71ab15e7c42410c706a88a5e95402dd1eb96e8b00846471d25c1f29c043a81388cea121d2681385c0455d1ab12bba46e19d2d19f6345ada56ffaa37751e358446dc4c5ca4730a210c330e2bb3e02c38aef2d1fbb4441f45d7b39f2d1ea97bea35f46242c8c631e9d37a2d89b9c424552692e66692c6d853dfeb415cfa68d78fbd9da4a7346b4ad741185b1dcaf8efa84263649c93065c2e466391129a5cb48192aed2c738bc0afaed35b173981384d459d420b14129c7cec217ca4599a8b1abc140b018840b17c74194c626e5b793671c84ad3963d9b1943567a578fc8279b4ca23929abac9249cca25531c6245a153d72918b9c951863f42755ca472a1f9d93409c88c409c48159c0285a159d098a888f71082f282e960b2756aa1545593e72d15bd9daa8ad889e6d9da58f9a8b1049ab3a8b5645a7322465c993249c098a080b87d0f2ed0505a3c31bbb28c608dbc9291f637c37ea7b471d2dcbf21dd2ad2bf4fc1d14e4b9b72af4f052806bd098f7c56ae21957d0a8e1381a3466f3518ea7313bd1d4d0b091936323478ed99da469688a48203967cc4e994663b5aaa139d9b0218566333c32990b58f9638cb05d73692e9ad55d9a6b7fffbcbd34d7f53617194c6c577ba64b49855f97ec2dcbe22e976318b317e612c5bef72e759f2c760eb05743dda6188079e611b85c738c31ecc23c73202ed75c28c58092678e038c6b9e6240c9330702e39abf177aa8ede02f37956200c9330762720d0892670e84a9244b37c538986e4a9248971b29992eace418c92f17da79da0f24a51b040548c949de8067c49226e9bea6c172cd332d03e2cd3be940b1dba1b9e740d1da7ab85573cf6b4b2add5c8402a47a57ac6e1d05aa6275d25c8c31d6682533338cd397b783891e63ecd8b18da090c39d9333856433179aa727a9038d0f8d90645662ce9a1a771d381f2e0ac9662bd89c6c5d580e49cbb0ab557d3beaf31699dff39c1d687ef7408564b710446e04f3624ece0981aa76e729cd71ed766327f6fd3fc83c44801c58a672594a732614d88ea57cc79864eef57945884d037c36cfe60d400a22fc3f300b475e7a10be4343f5f7b67ae9111dfca91edfc39107aa4220a92d07e87b457d0262ed2a454f5b8a5e8f71ea3137080a8de1311e3483c16c296a32b98c0331b98c5397b94150e80502e3a81b14c3613c6806e3cc870c4551193486d34b46a373f35183146bc3db92a22eb433b3a5e8250264c6631069c0dbf9297903de8e8cc7b841414f68670758a9bf1dd47d3b311ccedcd48f189e2add06bc1dde99f1140ebc33e3bc3373573b32423b257fcdfd8037d6d037959a766ae89bfad06d80ee0336b1b72f23cc245bc74af8518b52f7a9378bdb12eaab91313ad6ddb7ebad5b75abd748248be29e0455a4db699e79cc666acd310dbbbaafcbaa4daf0e94f2631bbdc70ed47a650ffe534b1abad8eef4d1461aba58769d3e62c1a3a149fdc035dae376718d769411023530300c352714f3ed1ef702db57078421861862e048ea843ed290a1656049ea8462e0349ec88cca2c43b8951e13db570601d0b0190053ce33199890a25101a00595ca0557a954db0c954a860a156346a56a620bc78f31ca88a37144c95b68a68a82854f37aec90b494c8e9571c87fde44ec4209fce7278bc92b440a734bec1efa1907f36b028e10b600e34c9f976fd8bbb7c5f7ed1a9ab08ce341a38b05d873ac998b8c119eb032587a4a73dcc34fa2ce57b4bbbb6f0f907cc83dcf6146fdcd1bdb653fa87adf545a8a14db7114b62b884ad2423c1c16e2a9d895a084273c610a5388b2e224cf86ad7d37780630cf07cffeee0e9ebddb9e71c0bc847d4c3484b5bf1a1fa727d8e7f4dde09ecdc361176678ceeffd8c12214c89e1d9b0c75461bb181e7c0d638c8e9e61dbc0ee83fd07109c3c07a9918175e13d08c47126aea0e2045700a1e58b1df6defa87281818bb8fe6deeba8b6b0a729a72eac9ba0609f5779cecfddebd2bd29d827b043e0e1d4a76a97374ee1be2276c263f9eec524c176f5ebbb5161647c63d1a1b8e8d98485c7b3692560f1dd41b0a10afbde632b3e30c45bfee1988ef08084955c098214a3243a030215df71122044f96628a46fbad2bb62a4e5db815c11c291ef9a85ef5e16a526d65710c7e67811a4c2446fcbe39824d81f46b0df6bce798becc24a51152060520508963c7b169f5f10ecd574f0e8290c2fb0a59b9a5ebad64b8e83f5d235624473eb38c090ae4395a6f90aaa34d7dc86bee9c9fc72cdeb90cf1edfe95bcff4cb2fc7665f28ede775350b92dce438941c5e23d04b6eba46a01889912102fb9abbdc74991c8776ef8b83c9dbfb1a816e4a5ddea61b04e5ea1b044d759a4ca67bc11be34048de315ef2989bba4cd331b8913c662bb9a92174230e7f3ca326ac1c5e1d931b3102af1093778f68cb0eef080a7d4df76d6914c790097402a560130e01e79cf3baafb946d29ce6d956da529897fced903648721cba9dd46e24c6a1bf9d9ea26d1da53929cdd1f7efed5492e36072375d12e93acf982d35a7974e6eba41253f79500ce6abe827d28db9316ee26ba4745333c681408fb9a9e9262f797b8cc94b0e24c6491bf498ad9db4ad4c393728084a03de0e12235080c47869c68dc45c3e0255d44b1ec34f97a34015f5287ef218ef384a13625c5672040a33b7747908aa2895b9ed04aaa81b31b991d26522ef78a80931978da08ad29c151bfd203592e6a893b6ae152a699c47c55164f2d45f07a3e0a32a4c6816850a2db40a2bdfd54c79fa1d249ad42b363b7894440b932d48ba4b9423433049dfa4f8a839ead4ab172c34162fdf3517617cd75cc0f8aee6aff01d44f2d46720c23a7538049d40257447fc0995b48a3aa5d49b7a3bc148dbdb814afac622a23ac704da1d45df644eab536f2ba48d77da8ae72d5045bd359e1f0f522dcd51bf91847d4ff252c75a9e7adfd404d25ebaa9497220252791bc7481984c770555acedc06ec773c34a5bea72d3752f2fdd2028d7055272d30d7a410faa48294b731845df748de5a953cb824ae01226d46112d049e34491421d4ee91bfad4211548d437458dc33bd42ded6a2c3289ebbaae1e9857cf1c7bd8cc9e765da9f1f464fe7e6e5de635cb5cf339273631ec769957efb2b75cdb7a7e82befafb8c479c3fd0aa1a76bb218fe2cf7c504ff3d3aaec50c5cdc4a95378441b004c8c705605783835580f4786caec69652327c6082da4d002091158384204494a5083226c9162092d17135e78ed92440a09305b0a83060d9d2123c18327654778045389a9e8fd587d365d359e212b0326b480354a1624bd02db92194d2937a081155d5890840a2e44c0326484225cb10112531031f18212133580410eb164890d86380211484084f7c587151461480840107951c21639aa1598c062664e481a0c2173828923488d09d70f55ae1d500182c833c8d981fd2113c177ce0eae900a42b085102c400108888ae88007bc6c39c1921bd8e0053440010f6860844d16ae585902f6ef8a9522501b6cf16d79fd89478e94e081a8f347ad478c6875fc28f8dd0f3bc24c8317a6c8b213bd1b30cabe797d43ca62239d3246a24ae50dd2899452ca558c11461821841042b9411f51588e34c618e323f2e1c307f4e1c3c70f207d6379ce3f95b455ead46083456dc49793a3b9b6913dd1d5e58f87f6c97823d12aca7bf739e74f080cba0bb0594a1125acdfdd92e4ef867cb1f931b324b57ca1c83c832c4868232787e9df952a5b261845931e31c2d24246ce0e888034cb12bcd00162bd1b2baa3cc740047b0d8ac651342e84022bd4e08a111578f0e50920bc280a628a2278c0050ae60c8a1040ad021111306707308011c4142054590108a26084072b28c2962eaa1802141ecc2089a44e74cde774dcaaca15f5df952a4258a2e31ee8e30518342abe17a2aca2b8bb0041800579373a08f420417c04f115c4d1fc91fc51b7a8755f9554def89a90fc052448db9056b56746b0d0b9873fbc5973a8cc36b1ab261c0a052dac2d395083a269ae0a2411e5a89f54a852f41007e54f78a0668a1b00c1355334111341d44c11af545182f4ef4a1526553ef0ddcaa84b74b7cfe6bd9b39638c312a018b2f2cf1c2121542086137e423d80ec489d05647a17ae7419c3725a9468d1adc8c45014e4c7064850455bc0021c4c4045592108526d0c005514ca008242680f283228880821d2d8ea67084267ae0c5162c9064e1094ce072041f5061e7496185284d0851c40a64f0c3ce5352050a9c34a7e52d298a9e7b4cf3fabcf9aff0adedb8527c79ac7d780cfef058ccdef6aef40088c76626b76ebef4018a2db2fcf328df0dccdf9d2f3df66445e2678e6d5bfc4fe933c7668685c71e3361df1529b0c08657bcae4b5ed7bcae8bafebbaae3a83d40925f198bfed5d91228cbf36a1ef1ec93bcb9b44ea213def2c2f691d75cd4924cd061dac94b1a6c372eb06ed76cf2db7341eec09610930b0afd88c175d7aec919de53d96438f9a0f211dfc7b343a6d019643f8fc6aef60065a3e8fefbd87f144028f0f5982b8c10da06072831d54a5c2151848e1c3151e28c150173bcf1f8fe028c2e8532808de20283870007a5012de81d7480fd07be02e6af083233bd73d025dbad00e756b7be189659415db59b97150c56e5385edbc8ba08ad9a592ceb1b19ac962bb9609c376abe7c6e2d9990a2644cfcf9e03c933511f75c327300c63be9d94c2dddd5b47f3b14a3927a5d5b22ede302ccb348dc45b29898c376b3798cc741125c1638a394da122e53433c333b29f6ff70019999999878a81c4cef75d1ec0b0ba7543ea86c5a7d55aaf85ce1bec79cfa68379e8437ea06cda74f6969a2d7b76774ba7321a61afa66218a682c2529fee987cb0d66ad9886158ac447ee837f7eddccae88d37ae621058a43506e13b9933ea5a7e51778dc70c3d561fa55b1a8fac959f7f66adf5587dd578668c31de0cd1b1a629a8d46df6843dcb189a1101000000f313002020100a07c4218150402899ac99ee0314000d8ca844805617c95110a41442c620620c008001000010082401434069a07181ddaa605845e6819cea16a03192feedd8da33a2f85ec096ff4eb857c6335b853511c8881d44a9f6851cd81795e48cb89f421c878c4cafe034aaeef8f7de8c04e14b8a67e566390bd17bbd82d1dbf2aa7c8593c280c3e9a25e7539973103fd8e73b4259d19ac375be65b643b624a4dcdf3958a3291a2890e98f3184e864c76aedc107d9498f117f87c694b97527417f443403909acafebb6bf9870f95641fba05fa0aade626eddb4121ad3052bde5b6987bc7338f5364bac6674c1c3ef0cc05fcbba71e391ed99ef642d013f486bb04b732b1e1524b76efdb57f6699f22499076a13117db52c0da8e996962ef3eedd1043220579ff3249926c05d602eb836a389f0c56ced3fdfa25860f1423d1399d8f2777551ebd5c741e975bf080335b7661d8d34dba54b38e1716afbac2043c5d204c350093a1e9a33ab1b508bc36398e6688329d1a2d0834625b6ba9022295a5751b4ca0533bcc82600ae73989cefeb9a9c0c1a2fdb840853a45d385bacf9b9b03d4b74caac1b4a24a5a3ce71d338a11824fd9718c0a947ad323f5c6aa468683a2cf561da32adda36ba77bfccf4a7b9e83e3759c95eff81c8a79f50afdca2e3ffa9d9593cae85b4b467b5bd3d9ab6ebb393eb515aeb62a9fb0c0a9e85f0c77e8aabe740db5eba83c6fb28119d7a2153870565baa88207a7c40d1879bae6115e73053b9da083ee9b9fbb64d63523c0f816858e9f0edc9fcd16c7983b79b7219495eedc709404c0bb935026254a8c97e87612eb3af8e8e38b0e28171c65aefcd02d609bad27c9ef07ceacb715d078d1f6a549cd34c8fb7cfe2c8f886effab97f3115a4efa7301775e80b4911b95092b065e06b4f83be008e85bd0c9ba0fa4203d8c8c4f658f54b4f9443f2ce731bb8ed98a1326366067d61330dfea54719617f59eccf17be275207e0d50bfeb8967cdb0113375b10a282bd48c65ee252e8cf9710ec64b4f37ed96191598d513b06bd67feb991d7526ac46bd27891344d78b6fa162466e2c2da7f607bf8aca9d27bc7e1f9b38b751858928e56f323f38cdc5cd64ac9838d6619606f03557e9e25e7818387e422188fdd427f1710cf0e4f481c6b6a65efc94045b43f97e4e06c90c3312fd3f81e1afc5db3c42c360f8ea029705482bd4c05358b8511dff7cbae267dfc02c35fdb2b2e00aaa711a6940e83bfdf4f014d8cb5f9d2b76eb2f87f23ed98726ac126976853135cfaa52a9fa67562c7acb61b08821c0ec668ed49002d7e1bd1d941ad07fcd0f32485647d15bfde6b8422d7880c562691123ed1a711ccc571b13e3837cfbd61ef4c17d68188a599e0c474faea0c8cff9c4440538a0653b36e4fc3905130303e0290342318f11e44d39112efad0d936dc29da78c305e16403cf11d34ab9e182f101737b2c336abe1a25214b25bbf886cb8813e1f96066f341dd59e58cf5b4359729d49ff18acaf32ef14b1ff5b3b45150c9532a2e82a61c0aedaacd78a4c3ba9c393658aea6043af0350f4db50f560acc0e37b7cee01ae7a556965b72ea4cab58f0b003ff8810acef7f8403a0e3d0ac46e6a2fc376e523b684e63cc9020f59654562dc46144498d1297d974e6ae1336bcbdf7f92a4b31ee76e3db836e9212ba531df1af2efbb441872e7a25e0c486ad7ff0ef5a06ea0c9e35c19c1a88016c15a0c4943ba0fa06a65eecc179de5418e90e49ad5d80ca0a04929e460eb7a4454b2b75cc1cc6a21f4ba59afe5fc862645e8708dcde1f663901f0239527775be0f995754234852caa94b4504329cf932c67ae1bba032e0973782bac183a0dea6524ce31b6ed4819c6854bcefdb691e0d585bef9da158abb568d0ef0773f9b63d1c8267636fa018105fe51927b2c0b9defe48b2c20e94486b61bce54606924c4a2ab50fbd4f24f4d4dbed9c89c0319f857fb360af91379962c3fdb9e480f499cf031a5ee73a367b0362249bfb9869c496f2ef7d1fd84186bcf385c9ee1bbef43cc6f53843cca0023488ad320725b6110f5f07ed4e373a2a67c34a6b464dd80d06ae6487e040a3ef1950b77926386c1438239aa2154d9206056fe19828f5d3d4ba6ec8e2a838cc172587282f86b1ea407e8392c8cf952087c4df00d3bba500837273b7947d5e5db1f5feb0a738378de4e02a85a1e929d9d17d8b9f24a90c6b90d378ce0a7b2ad5479d9725f2ad76f26d059486c7f6414e7647b2f9cf4ab36f532b6efd69975bf6a203ee0fa388c2ec5b817838b5fc87e5b17cbfb93f41cf338876a9d3e9b4d61ed736aa41a7d1752886b11efb4e816dce009dae67c89cca46127171d8890586b8092873f2a49a280ba480e429633bb68041f3d7ed105e05287df723b7d03e14682bde148273e15e920d71a4c36c37db19094eea3501e8c29dcca9b6c256b0578a9a40bd3a9522330d6e02dce6d68a4ca152281831b140c9a0b2902d80318a52933cf925402a1251e56cb27e00458190ed324d01ec1868f89f8cae4ba9c59ec1b550b45bdb84df031ee2e65d1048c498401bf35e2f32fd0ae489e145ae1d8259400bc293df405e30bcfd713e447f4057c31c95e03c267d1274fd158e19f36a6d08aeb4ed6256aaf08a62c447489b9f4430705f3fb042254b219333338ee540087fc67d463dd0c7428c1c49b66285c2e815746040dac727eb246d978a0382bc1f7595cb015cb889a4c72bd94694ba86d87707b22c63018040c6c6b9a2912a4407e410ac263d2559b3fb375cddff5aa5ff805096ee46af0da1f9332921468a78543935bb2d9272b7fe0afc345de616f6a889d2a34d1c212df0c83e38df4f545990add338f876d9f7138dcc5372d9b7d12d58de0fc83c204928f1d0fbfdce7a694a573a0b369dd474dd2c9575e449b0768fa116551139333bd4e70c5c5af481884d69942a0a7765786fb5b20f4ab67da89576c2a0dae6f15ec976661754f00c8f007b59b533b5393f83b6ed68119f73ef88a38ff955b8bec61b898da2bfff5785d3b22eae4bb9dd77694be9d5cd8dd822675ef0485d53e356874451bbc687cfb41a19727445bd6a34d79f3c62490b399aa942ee176d400969e006b5f40b043d35157dbd3f015c37878b51bc067a0b019642f5460d4137c180afd7f11520363cd8864a338456be197881fdc05fdb91e7bd10aa40bcbb940734f974a482030c33a27b614811a0b0ed99ec3e9305d834f2bf3fdf3308d0f435b4c958ab67cd144c6e63f7cfed7e5bdb531268376bd72f24f932f86df28aecb0e11bc49a84e17702ae65fe89964edc4f9ffca3f56680ddf07c7bee34b36198c75cc91ae0602b8bb3f66ae68d3a6e248f5eafaff4becd12dc26e683426fb52008df86bd395e89aa673b27d2e08c7df8dd068a9126051dffe19eef7c9f135329a012fc69d13cdf57b04b3c1b0b44173b01f78f80ca4b8b502401e3be6dca0eb19b1428b22204feaae01efd2326d6c66c1ff3ff1e2c550eb81a17cb9f57388a819912cc56f592dc12c16d493286fe48006e7085a58a0256a517a9456a7402dd5eac6ee88cf94bc352f5830ae7f9e2ec54ae76587a47aa0c4683f74d51dd2114c484ea3bc349e1cab3eb10f237208a527912e90fa46696d32b6f7c99ed8fe83a71ce2559bf7e497cd21c74bd0a69cad30a00c453e7da529857f734cbe95f8807247383d8f79de41ca22b90872a3a138a6cd8d5d9d5351e47b6ecf114553757e798e9caba95a676a1c3f0e17d63ebeddf0616bdaf8b59cff7be3d30fd6c5a69e4d296de302f6e320717168d49ce7c24d3e0517d62856f6be0c6f03d945685604d97c1efc24ced30188f9c1c6a1ff5cb5372804a9758681c248080107cf02850c1406baa10df50baa401fd4317c0ddc012fc6d407cc639e003e2c49bcc98a79cf21e8a16ac3ba75352c79e246a0f231991c7fce15d516b6f0190e1021a47be18b9597ec1240643a909191d35bc29251bcb3412004bdb48f64464a1edd90bda20d4f8e49d6ded39f1002ff7d19557b1a985c0b255c5409101ec06b5eb171ded7b7eb32c445fcd5033bf9cd671f062eb77634ff2f273f71e9dd1b0eaa00fb15ce0c4e1a50c9216d510acde21f998fc5320047195f973d3fefcbb938e37b4ec137b346b9a17262965b4357fba9796c1ae18941f04baf7309d22fa408f7eaec37c0de569c093ae120d0da707265dc318efb2a21e773e88c4a0640932ea12f1210182cc8e1f892a5800781af1ccc47d025d8fef0c79683dfc517a42bd4dc5158c017e696b41cfea6a8cfb22807f8402eb4d2746a26fad9bcab37c4d22bacb94a55eab4f73e9dfe3a3d714acbc633ff7deb794b8ab087cda76bcd1994e72370d28b47e6fab8b1c09298f2aece6320895c2be8df0846fd5869812ba80a1fb5fa57b218561ac2d99024e5001623a2197a9245bfe0ab1d9225cec7f5a3f3fd99dcc828feda8ccc7d4cfbddd328983e85aeb9e2bb50049fbedd6748776fef3f97afe4cf567db6f495b1c2af5f32b551148dc1b8375a09487e363e955666aee3a24ee7c6fa4a8e79744a5bf5270c1ffb93dd8321c5effc1b1dd42830932293df7a62b78dde1323e33c2005ba4317a745c46ec8ed2b16329fda6fad6a9282fd05762bfba899b4bdf20d9e7eefd52eccecf338b04d0105e70c817f2b0bc19780176507b380ad50c957e40144469a9c3c677eb3299a47b32c15a5a7505c2327dff359de8120ac8a839ef503a2fa8d3aa2376335e9c864446bb0206354866294d8648d262b65d1e2a0349f0c5dbb94827ae55c1e4170174a3d68300ad070d11bdd6b97b2d68bacc92ac3acd4bff68aa579b633202f535a40b3e47015fa9cdd89fb073daa558045d6c863140184992abd8ee0075b8bd59c256b4fe987a74e8566d4bbc287a5fade9f016ae8e749ecc52ce328a5209b3985a31bbe7a5ad90dee945890a19197928e73f22c661416d6d7504ee452d834efd58392566e49afc654a4c9d90d5864e8d6b3ccaea8316b92779a8d9b2dd0a490347914a695e1c2ae6bca1b3cc040f136ab88435b9eb5c655d49bf5aee5e522e8adb078b5b73611d0904d5318845d5e7ca68eb1d041faf5cf32995f85c34b7afec63cd0f6e9667ff57c266df458edb797a65925f39ba04c90399e3cd7882c258e02e6e3cefe26660df0e871d83809f58f31e7316846a6ea290a26729a359bbc8471b8a28eb618a5e78c23fd5343e6ccb12fb2ed9f12edd37f2b3a41f8942e68db6d266a2bc47be0972fdad3025d688c9503fd731c238c301a4d568ec3564504a08bf3eba6ba144ec1832c906f05f1ecf3c50e95676edf58292048ac6b999dab5f57ca9485203c099cb3e306cd76e6e36ee68f269a0679f069f6f2b11e324e95baa97fb27d4219876ce4f91e8c78349ff10347b4df906fc54e8915385a83b94266464a49d355f49359f4236fbb839d7733243816e0d520c3ce98f6f869e2c48a070df2a9fd0c2bc1ee9e55f714629f841b2a5bd8f9154f1d0edf37ca240e3206bfcf13bfb21b0bdf421709379424ce28248a99440ab5113d07bc5d68f130c0bae1c28702b6b8cfb8a1db1be63b5060c915a00415370100f27853fe3b40759a2e3815bb1555c4f16f797f601954cdc9b5a23a6249e09436b8015278ea18844b3180356e3965364ac78c02ff1aef5a934225549bf9e480336018c65d2ebf11eba1c272e44d6c292d293f54c21ac26f4ac0694445bcea8dc82b66971bbdfb876fd17818c16aeb9108900661d92db56b1261b714f4e87135052dbe634500a9b081dea546f4b87459ee3192aae9d883358732c7bd1d7dce6a30ff75760a032f1ce19381833321fabd03b790150af646a63b58998bc977382ee785fcc37f54724ef35464725686e28fd6292ae03c16878d6dbe59970709893a87037a629e8d48d87521d2cdd05427568668b47963d0c81b61b16134ca97cd33c1af3094289f27ca165328cc52bd1b62f51b79489321251b749c80ae25f9ef2a37122030e80e615c5be49aef16d634148c70cd21b0af801999b5f730adf45de4d99e74790f780d4d573547a341573e1ecdf5034fa1bf42433dc579a1a2f4f96f9f9f2bcc85dd0f9e2bf8928ea1fad4cb28c2548ba8d6bc933673c8760c671528a0b4fc8631e316226a35884f90981739c9c3ad155665975e60f5bce89ba7f99a925fe174175969ab9ab405787e7a8c1a3a3ae4f8138ded8b59733f5f24c5097d5f65a0c583655e0053835d74e3f6d11bc9f5b076a1c917c8932617a82975776b00f12653b266e09ea4e33d1c3bc8fca9d98197a39d8f76a539d1a6690ec2a96332648ccaa4e087e8f83d398516bf1632c4a95e9f88a883d26a0146e87dbdb73986cc270b7cc095ab6f3a5970c1b1c9a768425d256bd986fdace1d1468d04bfa1f76584e8add83aae5706419c8d972bea479b5c048defeedb8beef8c4c509d5dd19d69c58a7a4feaaa367d81213faf4c6dd51ab56e3defa2b8a7b8c6653a1758d2eb75855f9449677e2dbf792146e28529ce71d971f86f182dc55aa8f3f0be101fb096e395f131e8c3433e39fb2afa0dadb76ac00ab69b52ca8f48dbe266f42ab810f0c912522606e950dcce720bd4474fb4a86fc67a51718b71b8bd013a3de30fcab54343dcda2c3ff654ed91b1d71786cdd134ea462847d1973e38cf1011525615f0e1188f6a29787ec72e4c53aa2bd4525ba65157d5b7ce502f31506bf87eebd76d1e0daeb18601c6fdf07503a89429e20392421fbe41b5ff4d5c0219297f19efc02735db80a33bb40acc809fc5a7e2c111c5c4f6f87ba9c9acdb37e19e9aeb4774b10e2a868e42f698904820e04b3faadf60d50475afa953074ddac83158012cdbc32d619e43abbd65bdcdb855817e0f6666847850eff53c1cf3002a1888a47dedfec62ae8449fe427fb82cf71ecb4c253eb7efe640c6f550728fc08dfe43cdeea2822d5443818f8052a928f1e9b32c89416305d46c555fa0cf9314934810992d107b92a3e838323fba778cc35c258c8b725643ace13684fd600d97815ac0528dadc2227e028c5d3044ee21867963a01d54a2b0be3bb79588c47f73a02a3036f20490cf69ee0dc070c9e48739b6466a29c7912819a3d525845755d11f452239eb286ca2dbbe34a60941f612161b9f4c14d4b1b8e999bf3be8246dd67b63bbd8236e42444bd0a755fb534eafe3bf294334591ddbc05f2a30bca7f176ee28710b4b50161837d8fb8fef56fc98ce0f40b447e3abf6a412b7b06e19f518472ab680bac55235048150dbd5b9a1d2f4285670fafd4b1cb10358d8c2cf7543e47c824bc38bce8ecf75e3f34ee71a7e98611cd857afd84e1e5fd7d50ab93e58e845dd6952c45ec22f08a81b32d983b0f77810cc97508b0f3d71e8b6516dab849050561f8bb17f8b0b38754b87f88731f9ec6cc7571cf0a8a226da242112dd6ecc3b73f90417274d3bce7733ee5c75d14f417823860ba541b73a2c9312d77c6bb8fa9c62d9f95ceb632b80fae69554d013d92c87b77415ec017418f96be4ce2630316c98d785682f110189cd8043212ebccde76f8ae15f2ec4fe50010a122204bbe5592b0173ce33d148374f652ef1685cb9169e38a8428acf1bec29a413a022dcadd3143506482ec711596891c3e121c2189101725e24b678c7c5ef590639b9728cc842c3313ca2059b281025b91e35be373ba5671d756e41ab6c1097edefd1c74d114cd0219642618ebfecfacedec080f24ad006a252a22c7e874a714cbfec831486026654bc2d2a90576bfb892b445e591ec2e012d9d2e607a56728c70b0039521540d97495f78b43452cf9ebb5c56116490354f2ed4ca6ccb91b353d6c7001c728c6d3cce1ebfac2b9fad34f159422bbe61ac502c5cc35d17dea923be059f4154ade5f6d232651c0fcbb875a8145aa3c9e4c7b916e93b91c8b535ae22fbe338ff2e79691e497e00152c62ab018ab1193b257ba55a344d7526cdc7e6a1ad15ecd44f534f18bc6e0b404a5f573b78458b7a3ad5a3bb8c043c4a40d4eb16ccf0fe6838f4849eedff30d36c85d3c3813c0edd3cbe780483f53bdd8c18ddfc76729aeb95a5f803b670dfdb4590d2b448197c78ba484e0983791b622eb5b43d439c13d0f9ef19972c684240f08b78c8c4969ec0f2b79eed5912d3272051090e3801b68ad3598e185a9fa077dfcb5f26a17809ef31708c23d40bdf1f8ffd6f8bd24c8b2d2fd420678b53c82c91513df4bbfe241fdccafee49c18b2fc84fd0716c4fe63e54a12dee29fe063cf6303bc3be6f4e057f0b577c1ba1e547a32a39390a43d3e05c9c63d3b68c983f145a0974c41f6a0bffcbd7fb2e44863a152c77c780624042d3fc1d0a336bf764c203e841ff442e52de2b70b9b16fd77f73719c8fd5884ba46912eefbaa113edfe61c41ca63b47e9fbe2249c689dd10a9f62fedf7d92692dcd8f738e498e001aa96a953d5baf3e6d1a8a5ec097ec3b299a2b7be4d3f3d478751fc106ea7c8db9490b76bb41625204846d88fc3edafe10b1c00b356c81c206a91a7344bf917f0e782f233afa808a3d2eb87660321b663efe500ae365fa0623c793ea2a0ea458405ceb58eb30334fcab5dee4701373295e54335c3b5611e3598b6492d0af2f362c37ddca4214fee8c71f6081e5538b7cdaffd3131e30a69a1937491584c95924289af962128447f1c7cb4540ef4df062c2f145209f70e42eed257e79eb23d481629fc2c75d2440072628bcc471e3bbf2f4c3e26d2eec492db6000c26ffe29d22c60ef8022a4c97254047738e850780f7c2d2059fe61195f4bf64b4a8325d4f87a9e9ba1d5731a2ed2d7e5fa67e93fa30342f063685e582c6f3ca04b0679db90b392b5491a98483de1a303458ece0a99f437ecf9f8de3bb9b52599e41b77e7612814ad918031ec417fe79007f9fd0c3a9fb32bc1a9fc0de61d50f89eb84b8393ee0b5319713b4961238fdc771b197c0eb0ddf71420375451f1a33a3164a846c869d3a91ff5b3f35a44f2428b6306e430de39896193f1b5ed77cf3d35a7d7bafac435d91f4400c6b9e9dae36424cb31a987391da5bc032986f14b241145db44adfe12f23ad4ddd58b7a7e4f5ee6135b66eb87d15b584fe560b4cb3e14ba756cf3c7e8482bb95bb6a199905211f153f9ec4778030d1cb5d98443a84e32455a7e6a9ec8b96c5c41120ec85434ec43237bab5e396565659799ab9d2c9d75d2506c5c42264c244258f63e663cc51418d1decfe7673c51957aa4dcb5062f0bbc9785109bb6e9689d6f70f6efe43d22b5da8a552b000043d7be2266cfd7b9d87b4adaeae6e914ec24d72b8606e1c0da2093b8bc691d4a199a1655108a35c74107ba5ae8eb635da1bbac7c7fbc73ce1dfe6b4224327e6e9d1babcd5645f93eaebe2409bf1cc24c9d93142443a9238672c7fdd983e0b99478b8309b1486834400c627ac8ab1b9e798264bbab6d35908dbc94ce3e9050e54d1fd34be9df3b90af803b8b63fc8481df7e52ecae23e57ba99e15e16297a76a53d16db29c14c828be8efad653486576b25d03a225d51944689514eb89e08ce850d1247e2a6341095608818eb07c85e854d67df01f8a3abb85189ca1a6c03d631339dadc4e77cfa7fee3025c129bc177b86c62862a7ecb0061f2390fdf6decb12a0ef5c9f88f885bffc311ffcd8a2ce736d32b103670ebd4d9b2458fc93907443259ab56f1151ab1b3c4bb8fa08613c261787aa350f76f4212fc5aa62a70735258758fce7281d99cac02ba274f8854bf4ee3374c564a72cb76adfc604014047d72a431f2eb8eb0ceef180e6023f7035e22077ceb4f17ce90615c2fda6e0b97c583016aeb496aa1324e5c22ca8d4c4a5d7e898b9fec50945239dd06c4ffa49576d5aa0fc05bd389b9cb052e67178234e81bb6cdc1e24b7f5090b93f59927fb21c2af8d3ece9a2c24757d3152568f2480b330014f3d9db562dd0cd6776bb17c673732583f5a296db2a6b02f37a6b9815c56da514086f8fe07375e666469ce58d8daf3573c0492552dd12169b96d11c0a59f633356e410e32b58c8d468897075082f3e1fb0c38d5d164b0927682bc3ea58c627a4e739d2d1c34388913fa7948a371e7661b1d5e043e2c79a2bb3eec0bdc284fc0df1380b039f6c974d0ab6863a0abd5b7197fc4d63126f26fb12b30c81ade249cc639120e85b41e0f90dbf59d94d1b52019986d010dd0e17a1ec7ce2f1602201463838887d0b2792c33a42b073d158a23418b205becf6aeba74a39eb59a49ef0181ad2800af3890c5a37d9a196ccbc13544e8a6be0b71212a1208338879a440c967d0deab59b60ca65686847da49f1bfdba5fd26cb79d368517f80a86a130750f3718c2a5e89dc321e05ad551ca1aae983e7ab69890bc6ea53eeaf701065bd856079e69deedd565a70ca517e210edd06ca0fe3ef8089f728d849d81791e29c6d134534751a5dacf39b3059b56537426b841907c6d0f5cd9c6de66ead80b90d10107dd8ac92ee758e0cfb955b8906af89ce145e44f13382a63d24093cc55a28c9b5df16530df551e7be8b1503c3f57e9c9a9677c0be683ed6782b100e89907e27804adf6e1581ce4565a48d58acafe300390a4e962d296f67a3e48a750430fe99b11af3ab13dab5f493e087b25d63a9b9bd97cf813c50e4ca590ce1af616f0a8917edaa8565021b12a23763de3ef88e8e8ededdef64aa4cb261b255c8341bb302dfc6740ea301cd50988c456ac6c42741663ed99364579ff0712966c7ac76e3f4d360a2013c757423f8e5bae00ecf67f32d2fa2f8a0e8e9e0b08501c8021d22c66acf2f4e7358163e937dbbe482c1cfb8f0efa68f41445ceb436c54522025900f4ad8f8885eac18a6c104802de686731053676595b1d030f1a42b93d097b5e74b598069c25a55cb1db2c1cac8bb9574182bf85d8454402a14a79dba2e3b7202a654057de04b46b5de30247ff10ab9ba3eb7f7f29d0f8c5e4405a07285ff55d5a05429cb7e76e0ceae49a851b0b2741644f0623a04ec8fcaec192bd8d393c67ead04ef4882af26aca111275c6ed0ca68147431fb5733ec01d940c0e240b13503c15a98550e65417880e9f69531100f999dd852d3845a61672316ee7cef8e734835b75b2e7a4a59f3d9e7f333d85b730563a5f39a1182f6ffaee1f4f5c20d912528023d65a03ff2273ff8308ddfa2dae32b41311f7f3df9109dbdfa9886c67f177dc5caa40815aff77bbdeea6c62da66432bcce4405e862b7ed393502aaa1e956f33acd4a9c509c6886378a94e248f2bf6076b360a25f11037c8d3fc133e151f2c916c408bff552a82c1876f6472e7007398895043eaf6375ad3f9e54240a3006482868375b2d4e8ad8f4c43b8c25b484ae3cc2d859dd542c11ed136d6c3bc41c57a61ee2dd81733564f1147203e013763bdaa5c3606ce110a0a459013f5242ca49cf92199a863904cab66c459647b531211e3e7eee6ff6393ee3dcc9477274de0cf2e7e1e616cf8ebb0650556dc5f8afb5b117f2bee2fc5fdad88bf15f7b7e2fe56dc5f8af85b717f2be2fe1aea0862099977355c2481da55608958fe1270570dcf4c20c5c92dda22986a2622a2c85f3409cde49c4f23d6afc4fa957969e6ceed9422fe56cc5f8af85be405b96682d225044edcaf68e836a98ccb6676cd654440594546539aa3fa7b40ea633d58e3a7f4489ece0ce2836fa615fc1bcf8412166441359a18e09bd910a0a1be1a96b7504a8f2e6cc3ca2d65b381e79b53d5aedaac6e337191438eb9949af361a39cd1077fd41680d5a9c5e31eb9f6cbd4d481c7edcd77ec44fec13861c3acc4d1d411abf63fa99a1dd5aed4fc624f5c7c95c8e80dbb3ad6a19a8a3bec45c7284d0d1eb8db20fb60e1882660c3967f9ecc75d15be044e379fb70dcd9cac5323f6da112e8f3e95b72d1fe3cf709fb9b4cfecbfc4e9bb9f153b08988fe99f452d7bd797ac1ff43b5178550fa9468befce9edf156d6c8ad273db04afe272a441ecce10f639dfe2cebec8553849d821d745d91d416d057d1733483bea0ccd9299006b9afe1a99ef99abcbef94b911dd7b3292b6814ce70ecdd09df7d5d4481fe55c8a330970abaf29140822628819a84cd28ea32b1c3a6fd042ffbb6ce090575f78ee2069977fe2cd097164487eb904ad0da1ce603f1d0806d7e2e6f2f0fa82f5290b3a47c989f696672ef1ae2b06b4f0d70959680691497263ba81c5e5052305cc5d4951f24a69e029ef15de80ce17cb0c928ca9359a17b65de31bb6ac54ac46cb937454ba5c0ac11ac0499d3b5cda97637e28c342872ab0eb56802c40bec20629ef9515559964463615d2901ad9b51dfc65b6fb6f406039fb52025217031199b7113330facb5e9556c4f1c71413bf71033faa5553981a10f04541aa48e027e69d019aec3b889b94675fe8bd27585dfddad2fad3766ff936f7710b6adf60319321a0bb73d344c039549a175a97df554fd9a949eb4316e8b94b10eefa53dbdd3a5010f2d0f88ac0591799390e41a5fc303aaacc81dfcdb687fffacc6e7318449d5b21c9d5a9e2a2864eed1d7dfab1b6a4d8e753284025a4c4a7575db4d4bd9781d00dadb3c00956c76eaa9eea42051dbfbb22c5c30fd710118020854ec07b9e7cb0b1379209973d444371f9599c61789992e83aa71daf5b46e0a3cfeb32103d043c235786385adc23d46514eb8c871ca05a65c125d142c58037cf6dc3f49be7919393b2032bdc4f6835572932543895f6d6b650915d70cf564d8114626a09590c1529398af190170ecac465b5f64368ccc9a304b35ffe72579ebe339824675acd89e5948625429c98e322dd66f920312c7af25f92f3bb7af78aeee55814cbfd066d8187082bd3ff2751357a78959a8460f2e54ac5d7ffc16db23ca0c4e3509511191e5e38474b45885e882cbc4019324e7855db185cd920c6e34558f29fb54b0f80aa81499fadd0ce92c330b949d8cdd601c590131f30d731c18df8fb3a3a18f0162f360f4c7991fbc3e7bd08f228bb037354ded3e8fedd4ea07df07e07d1a2c5390e0746d089a016c0477c2f31679b656c5cc2e236b15dc94ee15b4e3afb15d93f7b5125eb0545afc985745556283ea0d375ddc0d544f49387851a2bf2785bdc207094452a511ac6d6275c7f5f178c122a282487296ef62b51dbaf5b549e4c70c778bbcfd4442f7e12e96a0076787360defcd2f9cd7df92fde035c1007b1b5e82832bd045a009f29bdbd3bb244d7aaa4dee06e95f607e3fd9294e01122f44c987efdc80ab93af42c97992ebf70727ef0944424292177df336e72501545d81122280fafa2c07361a823d6dd19f30767f2dbd7b29444af7449cbf0172850a3a435b701102b68ce360d00aa93aa322fcbd807672ce993c76c9cb7af6cb537c2cec5af0456ac5f3294d3d1b74aa4d37efd01a537ae4a2cc140c2437caf33efc55db29e2ec17da8e937e9540b30ca94f19efc571bcc16394118ff5eef1b699198f9551aef55d040a3982ff78cf66a2b2e83ec57b03a38b8bac9c7887104e1cfb6b671ab9adaed7eb18f5a2aa38acaa462cf740508371cc03cbd2666edff59ec87643948d98e1787a79a2714db1f0377ed690be8ad76c47b3b93030c1177046af53d5ca9b0b9e964f5424b7b6209cc2b9acb9b1bdea117abe50798dd564f2e4747849a1c8a22fc6e55386c92737dd4f5151d93222d0e72ce16743e486424e5eb002e17df25344ee5a55c8ad153cbd131f4341a6ecada8156a9f85d01d6956dbbba76c14560c994f000bfd61297827d93a07ada88c05c5093bc582ec894c2af52fb772463c8a13a1d1cb60abcd604bbe89e00a2b57c275448cdf0d754e532e95ca13032f2667cb2b8489e5ab994a71670b5de3e16cf85f8ee62221f648fbf74e637a320dca9c32eb3b2f738a09d49c0c80c1e76c8ee17844d00d953d3c8d32b5a8a2b5500c847db50468c2c666cdcffee8ac621d3c81d1a1cceda7d003ef5e97815c4475af988452084413afea70fa634fdead5500c2b77b160491d928d871fdb334f5e75f61983a6c71a6c4e16b56c06c9dbc00e22373d0441f3322b05c6853348d8234bfb73781b262959a16172dfdc3682b1d0867882aca92834d6d74bc81040469249aecb634cb941b639c2e7ef4c32d971b14936482a2f0e3070201ab8990207b2eba5b00574420e874f45ab01636188d219ec7467d7b137b3d2b77af386e28039de2dbe54a4f0b076329c23f28bf8d3a6eafa2c53650cd628fb3c710b725034c4537f8d3c7798b18cad633f8018f5dbd664e7539629ffcfa456791816b36a4a89ab471d3258e89f93e4a02fd8a8afc3631db5da18ad17ff945d03c35d80827cf887a29c34200399382acc08a4b223d824a20a2b668c3ea63e02ea526608d4462a4c9195bcbfc8ac21c46959f0d64a8327b4cc56fe15b15bc8202968f98a8c950f79b7e7af6ad6bb789721affcb9d44e29b0d76766b9d5c94452e411ce8c4e56a480d482b0451e096ec0fd28102da1913d9bb6fb4b6ea1e5318e761d25f6b51dac39db1e1500f413d5819bbbf7788a8e6ce4bc8788472b4cc83f6906f4f786e511a345e6231be4bbdb303f5a84a3b719cf81d500ae2065cce97198da734337132dbf128196c9e35e10537eab3592094446b234f5d628ab4bd2ad2d20b04e9c2b93221b8fa83ef363509912396d45d21881ce993458d1f505949919e19465d2720d1cc3887a55a2968a74391e778c27be1956b144633a9c95313accdd19b51247cd307b856ae402235881d67e9f2a7d1a0d358a31be18b83452f85efa00d227d4c9d9490d1c7f5e72bb42af6c4af31dda32fdab35fd81914973c44aef79be587a232d825e4ac84c7b1e7ccfd9a69ff1dc59542cb56d140522d23aec67ac0c1a8d331ecf83a4c11c76fe89df5b52001f0e119173fa8a48aa6ebea40f0ef10585fce1782b1ae4bafeff09075a3893d17a69417b4b7be8de7ffca0208200fe899493f7fa066a6c19d968eb292e56130779313e2903fddeeee6e50de6ddb44c4059f190a6f6ea637d84becae73d5b2d7b769a0151cf429c66ba7163823b3e342ba613e048fbb25d3d575e3c8cbc0d19d41e3e4f42e44cb5c35bd20fd612ce310ccf6c3981a33a75ad870d2aa62246535f03c3ce7c9579432e997e99c25cf62774e9e25ec6163d9251a52726f04d9a0d9f3e59acba6d1d32b53d197a0c681d73971965df83ddc047c94002f9d7b1cb60e095eaa2d2a35aebdced370d993bd616af2999f0c659a4ec524f1ac4319c2c122665ecceeb00802d7d90555ed94aa14b3fb31f73410675032cb84d5156cf7ca08464c8fa81c9b19075ca49681961e12f760fc37c1ae1237ae0da9473c2af43672ca640e47ea4675f726a72177d4eb387bcd478eb6a0b35c7bc39ac20a8da32c579c7b149ceaffd0dc1c99c24a4468a5fdebed76b48481d1da16571cd81935d63a967ff0f5df366e83f85580e6e3af8f6af2c5fa162b012753a07260e66edcc249ff037cca1a45e90e890cf3ba91e23e8db5361375961b136e0c15b2de41005772b62beee0728c8d76eed5fc986ded5fd1a6b0aabbd55674813acbc9740056e9a77302ae3857e7b013d026bedb9651401f685407ac44373e79f041e7959e8a051f50811b1c074765671bf76a5354a62f4cb04f92d3cac180ecf32b938fed08b838284c242d524e45c550ac8276b1c9926d383ee122ee426234c5cdd3d988a0d2e268c0ea04d44139d9b5dafc8dc5787e6d8d0be60e0f272d14c9f49b579acaa26c647114412d0137c5d76048e27cce00e94e9177f5e711253af4175e4bc9fcda2819e571af9dfba370b940c1b547791468053391f8ae48d11f6d8dd6c3fafa56a05c5a5ba07676035e3e8ce09134d38a234b35f2309fb8c72f3b5203f1bcc5653b93ebd1695df260fc50d0c708b56d957f14daab4b501abcf93226962da1c37f999e8f4246bbab50d430ceb7880973164905a34e5cfdf9b97cbc9e8800ee905319d4e6aa9be3bf95e99711a917874eaaf5b8141a54ddb5f2d54f1422303b29590b20b8f2bc679c1fcc13cfd71d447356dc21956ffa555d5b20bf2d66fa3285c48c521193d3d3e342c06569c2e30c2abd080291d603a4919b58512122144230a32d059750893464d46d5db913be9a39789184a3857d7b3577ba60bce2d396eb599ec6c6188ad1e230b733e6b364ccb874249c7ff28e38b5f2b9bf78d17c41f389395068b1970a4faa0e457e18bf204639455ef5b723c29584f3ce1404d0ae79cbac6294005a15e7799a337f56ec91ced62c5a7ca8233675691b24f2d25bbebbb5a09f3d4a7f3ad0084c7e7a063db46c378a08615ca5a6bcb752bf801f177f51dbac2a9a8bf92c79228933dfe600a04747cc7790ddeb76191f4a74494fa9f599d97d47f2c78d96bab8f8d91d4176cee70bb63c3733ee01be93d9b0ffb07e65c604b8c1ae06a659a83957b46c8324b640750ac07b2287ff476adb0407bec6fec116b341164d2c6b5dc3a2a4c3d68e2ed98bab648d407e7a57550b7a8c6f7ded1f91a47e239d2a0ed0609816272e9a7708599918828b001fb06ad873135c5de9b1dd749046323b8ac3cbb5c03968445a07972fdcacc603dd43a4da3608e211374b10615b30f0bf8b8df63118dc69318ef005a34573c18f0841dc26b7d6b3e916f6ead42c6ab2bbf472a652f9c553d6cf9f72ead892340d43a8fd162f01627ebe9947613a9836a9ee7e71b232916240ff0ea3ef049000d2581af708a0fe64cd783ab7a8279e76273c0819608102c2ba8f99e1a677aacc8a29cd01f6e0e7ec11c61a2a63f9de6f80549f8b31171e6d44958777579f6b47cce09344cd0d05926ff1fde4eae6f7c86e9d9562c59177e056c7641404c473feec2e73f6770b8a483e51deb703f06bb267825c0799e71c0cf464a0648f12db8810350ce27ff2b07ae829f9c227dab0d2a72592966a9274a37ec5f74cbdb88fb448bee7cf8ad2a2b83b46bcd96f54131e8fd626da3177b5a12d8f714e65cae5340cd66f9151c7b657c75d98267554111746009b5c6853c050003f69a6f83bba63f9a399eede38499348631c92a5482525c331cda39471f55f593d310e07876b0bd369d39c19481284d0c86f6776a5be5e4123a9c1da709f73070a0365f2bde2db4b63c2420eb565d903f7640a8923abd9107c520e82d2997ef4b20157fadfc9e80003add0913ad738c5d36a4dae1d3de822cc46af8da451f8e9277440dd116d2b695b0ab20f2811f17a2e5d971790836beb8795e24bdb484e4dbfb408c1b1e19b0c4c744e5b64e6acf531466f6a25659c5b19c753b197ba69eeea6392038e052a2aad2a69a44715b5732b43364e192779d172b5d2040184288dd1d0afd254f638a484be3ff022496f6bd6d5eecb1331c8c17d43cbce265956f8776da21726a42d1f210d5f077f5562d5be969783272d5323506f48172cfd4d2390f551c5b9cafb7d50a49aa6a1707f5433adbb8cce5a4be66a1724e8312038dc8c3d01119197581b3fb768814028e895d102ddb382fcef18a12fbcab34689a88bdffab67da449eb6839757906867d7b881fff1fb59f262d18f2db9993b2dac916984513450a5dff02e712f05a810521445ce7abd242c46f58f3c6b60d6aa40cb467fe4a0f72c43523f853c5e90ed6b80833d735a163697d5aa57b7b8e9086c69a1fb9e356d56aeaec9f5acd98fe9406a94a704509b7fbe92ccda2f1457cf5abe120204f74904446b5edc52d86e43d34bc48a00ef340ee9d6042e27be0e9fb5bea00ce180af7888c7477e01c281bb9a2df2f3f5141d740d754f191a351a5a714aec2dc8015a2b841181535ba69c681549a96517778a51085900785348231c655a86eac2f26445b12ac7e584c63345aaa445785c7c9dfc2c1582a109965abd38a8a7a76dad2015c5c1d6a7708f1df96af59dc0034a4a5801613b9b117946b15d87da38c75973e0f5995fc90c88983223f857d7e95554b66495d13ca66beb3a9a120cb5f729207384abda08c059fcf62b9e110b3f3067a23ac720ec1e25041d9362060c6f85bba2c2dba7ddc3ced398a9cea48ae46e9441b76c7cbd3f50da0b8f5e8ad47295de128c370530e9fa4716bdf02a6fba741f0465615ca3f612c81657b30f56ddcb9d232887b6552d63406ab8a24f830314188b2e1182802e34cf10302b56167252822327243573b36c1ff714c254476ae51709bd2124dde64a6a2dfde9836e89e89eca2e365f94c671afb783f888e27ca0370a403f0ee33a6a713909d72047a39134eb381059f0f522d55e07aaa77f40f95ee598981c63da9d1679f2ab717442e3318554f2ae463244ec98dbfd7639bb04f9d9ad9ff8d85e7ffa20b1739b3b1ee5b3d1babe67ec616eac20edba1721058cd7f7c6b5f818e105bc3ae8f67397a3765095850722fa5f299fe324041a4ae842a4c9c0cd9e36e72bd69894e4ebb3e9f0e97c1f3116e93e36d6412cc7fe98c3750a19ed1e8f68a921df628792be91eb866ea1744990f6c90a22987e3e7d25611916638875f06d6f8bf29e43b799c298a2bae19d79975c8440cae8d56ddd52ab9a882043eb18de30017d9902e30faabfb93cd7b3392f3952ae32cc713a00f6ae0e214151c15003f5ceb7e41c7216f9bf77d3f66f18cdb69603061c8aa707dd8018ae438d7589c0819c958ae29f0e159490ba77315a3dc8f7c23e5833a7dcf24a9d27a9f5db8dfadbca814a527fc3a706c97ce745a3f052550b57e29ab57e2cbc6e5b0d81cc7af2dc47492605c7abdd4093ca44f6e0c80d1f6a18312893c41f318626356856690fb4bea2409ea811f3f1d77af16211847219461334155442d55d2fe0ab55d0514803af265728f18e1a1a22e9a790116d4f65b0290a77da953f058beaacccabd232cab919383e3ad4d31392fa0048b96d7575a9adb9b597759fb2148483c2efcca137ac6e19c0a6d4621316c82db7417b9d194118e00b856a88d5685628baac24eeedbecb6cbcc7be33dc8296c34f7d1d52cdef645b8cb54b949c04adf130d34416c02a0171a07065eeeb100f8bb697f6d735b0db5646e738c927b9e531a36fea6366d00043489b64c1f766b69ff1106e21f6b4266aed356670052bb379552ac9df692675012ec8caa94eaa2351b7b787ea4b9ab0954ea38696f2c2c3d94881e13764522f54422dc69e07a50b5a50ba8ba215dfd3c86ba1328eb3066519f2b8e822b3b5e083efd1888ab1c7f81f6ad2bcb0478857aa1fac5717b27887cc4c60ea525e0561dbab2885b36f7e78fd5e41511c69be2984bf3e4eb9222660d61bbee913297a7f4161f5949b144045482d18dbcb29d042e347e5b148c7a2ef8501bffb3fd31f83a4aa70a44c5640c31a3e6e7098ceb1aa06c453252ef9e6b6f7ace636503c4707eef13d200c2f24faf6735d1cc4f9090acfe46770e64af5fc7a3c3b628a2afb7f58de178f766e73046347aa765537ad5d23328ce2ec69651a8a7688cf85c80f51f2f623677a760a69e7f51b3d22f1def11eb20e157a8e165844576db6386001c5e568049f3d8aff8895c872344b043d2f6bd4093913ca5839b96350eb4c759250e2d002a20aa5b69db0227c8080611ff936bd05335ee80a2397c6c580b6f4f7e8c3c1cb744c2e8e13ce9a767f28c88bd3d24c502268243b17c750d99b9e8b5b8c12265ed8446460bca794cb94243db9d9b071e8a40ca481426b2d73b2c2380ce1e38202eed1cfc94e1000bcbcf5b12629438cad40bd647988fb29c5188ec5a052683064a9f0c8baf0db93278b9622778a57b9095a96b8aaa5480a3fda01ab28997fa4bb96b1a839f70ddbc91ee8a5ee7fb927318339e9265703beb05a30c8d161806f6f1d7ae854fa3fea92bd508e784ac378742503668a8ba348ae8e4864784eba21872abd3479329962ac928451b37c876170bd1ba73104ab4799e0a0ae692bbd4f5cb793ee522c0b23b4f1c27bfa7ab5c04f2402ca53a3226d38e4e9139f2067b0b96576d443a6c5ab3ed6721893f53ca40b09a6f5313c7b86c3ad494994289d800836e4e4684d85189271a63395a7154a16ce3266983c29a7a6310e4a669de184939ace1e68544499d384c206634f3ae0418b26307c4380e30cb907c536862c4eb911c1d7560890f7216c7af62825aa41928af1dda9248eec93f147f71f5970a92e44a56d6610ad02407ee09d52f7c46b8680b8abcd31b7b14f30eb89940ff5df211ac8aca75319ff286366cdeab4707c43b3edab2df8d0015930b54739d43f762678f96f450a344e05765acba2d2f8fcfc7ebdc548e3d9cd234dccc3be3b2ec6eb8f9281d4886b21161a67afee9826144b2204914b67b99d66a24927a86815fac22c42ba966904718867730cdab0a8467d2eb773a073b1ea14f24e0e502ccfb91922cdd2d246a8224739d015552e0b674de8bc5925116723150a2c79904e5ccc242b4ccdea5a5f707f93b0cca59d650ec6ea847c872e6b86319281b1ff6790b15140d87825cfd5f05e7bece02c90a895130e9acd6a42f141d35173a8c1d083fd04cf4098a4dd5275a9b8965939ce201341ce40b4c92576bace0a794e9ba1a2f2ac727cb12c6139f53ab722fa54f8a978c655eaf05d2ba65ac9a3a07928311811d7e043a293252b75ca6ecfa7c3b40fb9158ebbe85d5d42213a90ac9a108d786e3e6ca4f1353744835c582317a692d4d488351a7dfeaf784459d6f1f1d8eadb7235db1ce0e26c31ab6c753f0ac1959de8b773e6ed5e92c8fe56fdbb974f9cb293d6b8f538314e11a22cb73f4e05637f1ef6bfb870fb1e718721cdaded75c0f60e3e879bce79ac02081299315c51563f3688813cff3fadaed753af7f5623f3c28691aa73035abed7ae5b65bd78dd91eb799495167e73b986e0e308d01d5a101ebb26f354f594e6ad5be5c5935a8697c82a10d9ec397610932df99f1c36707c2f0e720d07a1b0986c50e3f2eac5307da0b25e41301f57b77d87d38f9096a3f11a5e565ca5416cc8352d1665c1dbd60f602d8e7cdff2211c0867271433fd2d81385d4bd26a7c36770f7f21dd8d7740bdf0b1d8a66fe5ab462776a38aee1bce8143f1fd1b833599b68041421868ddee8a7eafa9dc9873466ebff2ff4ff86a695668e85d38813a1526c022e0e30558ee37d2782490677e1f809013a9f08270ee7a967cef0f40fc6df73116daa4cfd5d0f98e883ccce202dc030a22fa8b6ffe03708bf9c5d4f93221a21c58e5946000abd3fe19be044024037002187d03403a57a845df7b11f5a7c631eb2345d00035b10ab8ec5dc7a25e761da7c206cdad4eb0751a264efc595418a2f231cd05f66c28c1ff8eb13de2355ee73cf84a2c245589b67de53417bd97d02ec23efdd3f3d9dfbff79def4d59ba0c1be89eaa52b8573a5d2248b2ee48f96d941fcf1b69ba2c7c410f5879ad92f53ae8a4b4ac0e840c9d3d7b7fc2647350873c929bfde7d3e0d416652d0cd290ec051537a487e71ec5381b8cb0e71d9ebee5f24c91942603311f3b083e3f6ac9e599b08e7235b17f9b202ceae8fd1991981920aeb60170230d0c82542c7aa851bd6d5f6e4de0f0c00f8ecbfc9fc033fd016cbf873bc713dcd41e726be6d988732a520f6c7e87fb2620e8c1b979a4f6a0ff908e5ac3d7ac2467aeac5d291cba0080e20336b8b3d6040f350c8dc7a0c2ed975cd828eb5f8d70266bf55b0ba68cfd361a11548f40bcc23a076e45d55a4d8257c582c9d9e2e68d953d1209c3efd34a13c792d29b076b9e1bbc8c382658831c7106476fea6e4b47f5cfb8086475c000c99b0a24dd118632742da840c6f09a90281d095bbd4c11ad17d0fba02dd9a6063c9264d8104ab3415ce164f3d129b56d8e9151c4a16877f97a80c0e12c474451d49c94e2c0d25cf2a1427229409b62955d3c6c2cfc6161bccab71c4cb3b004eadfb270e232a89fc1bd50509f80cad6a864dd461cde7d87375c57f9020efdfbca65d597fe3010db5eded724d223d5ccdb09d5f319d7407c2f1ad601aa847fff5656cb651b9450c0990fa7520ac24f6b9d6ff3c70e49bf8ddf43043d1c4d0f4836ef7a457d5359d71c1b29f6e73ad1094c6e156a2bb2329ffa7fc621033fefe857ff5f3a6d07c5ed60ec9825a2a3bcb0f97fb0242a97b357394374685e848286d98983c51ab4e2387c06f101745d06edec828b93b293f91deccd76770a95bd6f796ac81473d4d201d90e2ef1805e3dec993fa3c8b5efabf3e583b26a16f4ad3d0e0599b052fe561fe44ac65d76315db9555581ede8d85d4e3625056da1a726e6d170d727800dd8741cb3c7e846a1285724d6106c27e5567e16ca50afb09024fcc60a06e1f032b2ff830926cc36a02e16bef1bab3c80e21fff01d62c7d44961073a1d9c5b3e7ba0bf2b8f87ec2385578662441177e26b23237b209330a91ee09d3e36f4fa3cd370e4d006235c67ee7a5a5847949d720b33057e6bfcaea86687702dfb837992d6decbfbcb85a18ff4a6d5eaa9000d497ec89a2901e1973761cedd1ed731a503132fc4df696b6cc8d967227cdbc957cc2a8ca6698473d6eb036ca7c1c44458590eafe3e6d8a9e1bb417a0422079d43185c7eeff34a4575ea8800aaed5ac341eda7360fabec8eea63ba02a17128f057ae638e2a232fd08bf0687ab3fc7c18f5ede8d353334dcff48e54b2847fa94e2e4fb0ea72c03b62da4ad2c36fadc38c9ee422c7a1ef2c3d1f8f7a410fa5973b4f53098416f7c827342a469c61a232900315632695c6236ab25690f7895fb010644d1de9853328bab20133aa7e3656b745951b0f27e8bbf0aceb2609fd259eae66a137f39e4ee13c200a03a18d8f309fab0c96a530b2640659c87b7c62eb7ed6544c8c8971b128609713cfbecf37439971b0f51529335791b4a74a6d8ba706550a6d1b83ed9d20c0456f3befc31041c0ac8bedcf043f639f20f1a2af9ed6ba79c5afcf2454e09d41aaf102225e62265be3335ce5e122521033d97caee8d9c9be02fb1ebac1e27490d1868914acbef607fb318e5dd61ab18e4d9588772dd2c875ffa5542a3b1655bf891e674382a53c5fa1b912974e2481f51609914046b518c847a4fbf3e07df4e9d7af09908ea0edd29486fa910c160e2dee194f4afecd5822cccb8ac33879876ca20bf6972d19d691191577efcc4e83e2230257eb890b2d88a378a05386342aa192210517f81aa6141b2516a2d9b2722277244b95c6a5fef0a5365a4c5e71a1165a29a676fc9ed6e9f590d48ca9e622772be0117bb87bc3a7c9b46d60edbcbdde242abd321caa78d622172be4612d90f90690c30e29513c9f5cd3b8b1662a1a62fb2b721868887ad1ad0b7672143bb97890ef6052a0283f1939ee56680c919505d54d64794ed7b6acdd239df17b1dbbf075e53656bdf4e71a8ed04cead879adb1b110388b149013becab5ac919e0cbf84809e327dcb46e5142fbad4181732939232c4fe2d0920ab23204e3450b34d4febe5739940f069446349fcf6605d1016d006e89d1eb63c4bc060b26a0dee18f6b0c8dc2017731fb5766bbf6a5525def300412d182a965f3f136112389781eef335cbbe6536bd0a3f8017a82d7b352f668e9e15fa9d08ad44854e4d5c658e3bffa56ed922fcce83512206846ffe2e81aba0f0dad5ea7302666b69c622d4c0f2298ac03cc171726b2129d4da8b08c9a00d9149e4c398386043301c4d9a1327d8f066dd059ab21cc6885de68ba7661474473051b70002c83cc820420662eaa667a422e08f070afae8eee8ef244eff26a9b582f8d60b952b5ab50e3ebff6988c17a2ded6a10492f6dc0c381061b139ab09884f338878a1007ed01a19925502a259270bc33ee389e568507dd29f06348d471002443c25ecbc38481a3f13b8fc87db468c3209fb4166e753e9259c62c86fd8f4821e0c3ef8c9fbda9590757a01a1208e736a6715789a96c77a4b8caaa3cb6c0274a756e6c9da47154dea06a4171df4effa9f7d7108427658e3f47e310a6051dc1301e2a3ddd99f209310e954185dafed7a86474cb86b42d95cb16123dbc4cc81d151c1cb576962d6b0ed5c0f51c84d256dc22dd4950dec3b4057312a4c12cba40893419e20642163fbe4fce7e81ccf2410185eb8645bbf60204e199e4db7e3d023514056362ed7a155007e9c6d36dd678d16d7b3f063a403538ac1e8e51377d45e2acb4280c6f60b957f234e03c9c76d9b77442fb05dd56ce785a6082c4a061823ccfd75cc4cb433fc8928b6f4bd125ae3673958eb24f72950227080669d4d9f7d9886e1a61360e9344e438f60c9a879977d000c59b625341b817335fbabaf5f086b173f53f7195fe8b00fc4d929ec6da16d5d36db3a05ff7061e38396d32147a7a30c729511780e6d969d1fcd100f7b76c25a82c14a8d0cbf2829c80142ca585d121aee8117c8570970a515dfe368d62630fcb1ba816050ba06e3c00a2adef949865da7d77239bd193f3f548609d6d6aaa31402a1a437a2cdf4cbefc79dec828c9110d17791130454f5108d6e24abae5360285066f3261cedb3eb42a3a82e10541e80950ab4143936a311519008ace6f998ed38a409b18643c8c26591a7068f4499d450653055084dcdaaa6fe7fa696ed76229f699eafcd679f313b44b925d2183d337554e847960e702d3b2c805f581851e4beddf805d911fbd7d000e9673e9f4d1b8f3205e5aefd965dd03185d9ed41dfd6f0589036cf86ea29fd74e81c1f93b82add3a382eb00e4c42c40861546ef42d1a2444d2d39e0dbab93775362d3d264834be72f8590597cc8f1e9d099edbe78c7ec7beac0be2f136ea56773a17668169f42304469a9142494f54d48f9757c532e156a0946063beef78c6a8bc63d748620b6571729729fbb7e977887bf699931b0bb969f8b8a68867d3113c76fddd399203f9282380bb8bbbc56b16e3744e06449aa8d85a936dbbdad1d5bc052bd7e26f99604937e8e14667c3054b96407373c34dd72f88e7a657356ed8960d1a9a2d99083883fe9828a5409ff31734f8967f87b44b43d09aadf09252718d254baba039010894d5b132005e75e71015e911fe9327d47bfabfe437fb456182d6c4738e03125b71352a4b4dec662e16d73e31fba812bb32874d3de46a4978d796534379c427842da77162c00d4144952c56a5bb055405896352d1b2adf58c03c90e933696253efeef0017eeda9a1ce8b0ff90c4b7d3fa0650ebbbe6adc2d2f5397ab0307409f5e4b362268d05d8ce064e2a992e65dab88fa2f6af3ac155ca767f540e5e1c8bc09cd4c2ba0ca0fef1c5fc850c5b7c433571417cd23442fefce8189eb2b6edd922fde5987ec8b2ab2ab353a05d7560d1eb70d5254279f20b01d35fe24eac42d7b3d0cd6564a049dcb5f41b6edfe176b0373919a839369dd784c0cb39c4330071a437edf84ad1ccb28e54a8aa1ea2e5067cefc8368ba475178e21d0799bc5da1634652013aeb597d0ec91bb5c11e2585dc8ec4bdd158a12b80b831c745e7c203b7ee6df24d438ea9472f53e90a6aa6e652439f163116f60515c7cb3df698d4f55d8da9a3b9b4965dd4d611f2d03ced09046f5090c09b5e6d91840722ca85e81c43a73f00aa69d2ced5e077d306255013564cbea0151fc2591546db68e43c62e83206b249a4fdf0e1c9165c62d5c0f8ddd0264208e0fed6f874ffe6af83c4a121ae5f8a61eff0f761101805b6ee27c4efa8b062635d5a654ca73b51bf7da782c2fd918f3a70ddc52002155928ddb525ff152aa61263422e9c8018d9c0673922edf037aed683d2f345f8810ba07254235e713dcf946806e7cecd4e9e905e9f0235aafcb829b849870b2d22a11b336322296af43d431c707bc199bb256961864dc71f2dd84e42684f114e7edfba5d949cd44d44b5a85a1434d69343bb78078e138f2fc7bf545568ab03224671365c7e2c912f062190c7d5fcd0d678e7354eadda1a8072544b114d0ec1f0d866fa0b77cad2e7d700d4dded135d82358933b78a30d6d26c93790fcd43220c13e24a2162210071975b1c6ff7b08e1e3657b2f9f3de4e98a0cea398bfcd5c95d3edf63e9227e55036335fc94f80c6427025b4817486ba98ec4e7ae223446442db2aa2d009a56af5082ee63e223bc2f80b8489c9e8231e113118a6ed51e83b8d8bd8dadddb0fd48bfa516985120fa82603402644aab0c861c317d7d66ae926d394126c2cb0623a2d78f5eac70d25eae9608625567999949533b91ceec59ec6de03531a0a039244b4b521d642792160dad23c8ab4b0c26a806b8b5d3e63d4bf84ea8c06db0033819aecad90088f408a44e10f107821de8ebc3a5591d8b8759792baeced1f2da4a4be3a76a839530533001e657dc0202c40815308f8959b734d15ef5bcfffb3b31277f43fda6304b8257f6ae05e56b0901114397e2c70e5164441475288529865e74cb622b117608f262ef40e89c88e7060a13c35fd0c4806a8b0e217bf6bd7c73925ba697787e2a258c16c9ed5c4d1c98ef3fc8bcb2eb1f908e57b223bc0d0b893a4997de3ea65fc5ddbfbeeea29a3a05ca6f9797ca45118e9b196f080a5cf2f4d6e34a70e53b5c5150f9e0a6d3588c3a8d20d4000adf65b6214e7fd7b8c45aaad26d4462390dbe57ff584516568129758003c7893074f02d3e860314a3ebef3fd48607f5442d42534cdd0d2976699463985349d15eee99a30cbaefa80a7b33bcc241f9d0afb717ce895c0c3d85a66518214c97bb60c8618f366dbdd1e87f91314390d96c3ed9f192e27e59cd5511c1712fc5011b170c1a7cbca4cf3c73de0f1048d535ecd0900d8da2b1b3162d28a8950a5d60144ccc41f9784a89f17615edeb15ee3e86b8bca3a34186d982fa93e6a1351e61668f64ebb4dd3fa03ef89bc5888272782a4a6eccd55c1f55a014664cd4dd6080b3ccbf8f408efc0d38d7e5a9bbb9ca80c91ffb4adde1990e46504237e5e2855f46ecca656b75b369f5331e4f696b5fc3c307040151ba1956068ecea8b48c1b1fcc310aa77f63176b894446a67a3024ac98f2ac136939196d465b064b854bd417cd62e6b64c870cbc72ace961deff82ae2a5f4a9c87de526c1be1b8540df3215d596d4c4a699019fa9e4e08115168cbcf60a78bc6b6d9535458cc6ce83a52e0c44d7e4bdb1c18654bf3977734d8f10a998122a748705029c3b1c04e51b162085b74ca99ed34c70a8ca09c8dbb38cb57e53b830d916c03c81a7100fcd72f1476e912ff9a297b8f1eb90aeff4956bc20e6cd69a49d084c126c10b53bc2bbd1d007caa94e54fae13c0bca1f539268a7101b0a62ea4aec3369dc0f5d2d884390daace39c6eb902dd63cf9d4af0453396d07c9745a2b56825e815543e0bdc16bd6ccb15e262c75bfd28132fc55db18aca7a213456037234a6c2fe0bab181f79f7dcc59edbbf9a046a0836f046174e81ebe370d43419c5f4e5b5a75dca10a313628d0c4cf1b652433151960ad261bdbaf6123af55994001047a6ad2c57ea692e3121a8f2fb4dc5a3800224be6911c3fa47515bdab7ac56d52624147daf230b5aae07b1ce36dab8c42b279f5ce83cebb45ad02b7e549324efe0a3856e31a3c50df6e52f1229f70fb8e76f72379d752228c04d6f2b4ea56f3e6a250acb829029b7055adaf8a321f61c99767771e4bd3e28249665d975d323e5171d7f1f0fe0e11874c4d6484112c21a5403299e61cd50f2524834af9cf1d97eb349d3865b648bb6d0b00bb370dd1e3d7993afe4dfdac6cb87af9bf484db333bf38f21a2b89addb251d21fa5108bde52eb2dd55e9c0878e088cbb07cb41840a0ec46447bb2c439ada44b923cc5390f240d41a9cc087c5cc2654e2280a58eec074c725fc78615dbac3b0cab585d6126132ac71d06ab48a15f88fcd3471c8a23b73ef807f588303011c35a5e3572bcee60a0f2b6d28cd6f99a2164fc57e4c6e488936593718ecfaae7d1ca323aa2aed62762026ef4e2345faab9dbb0cc21018ccfaa776dbfab8e2024b07da9363d4b4a6ae76f05a1ffa1eee839126054579e335c7938ad1a32459ac24c9c269980bace727c3480d583ef25b49b5796a74230ef98744297c6ca23c9a7b77956405b9ab10e77caf4e40ba634ddfca6375584b47b5a6f23be5be7a52234a0cca5b55c243936c4615b9b12db1447d5c93730d497fbc0b73005e9f439073932a47b9a2037a2de8ef0c5a58953274e9c4701a6cb6394d758b41713c2cfbf249dba39d94ed39787934b4442d70a0585f646c6fc294a10d16f31309cfcd9bf9a5e0d5664fb7f36ed61f50538700063fb1f129141cdbf1d77d250b99945935bfff34c41a8c7a6d3e2b3e699c635f0521873ea65a90e4b4fd932f4f37f6d7c60d131f9bafde8ae2dbdc1bb82457fb685fd1a1932328e7be02de5460e72bc6f51f8c2c0b440cafd76211329b8ff637f0e9791f680bc5996544e127b94f2be100143b2997bd1a54665c0916959b15269c6b199a2d70356bf338e50489a6d6a29f3093e69273febb56c1b475e853c906246718348ddd9bd7c200a1faeb546277ab6094e6da350b446581ebb840fbde4b06439f9110c4facf3cac35cf0915fa838f3f6744baaee1198767b2b791b1440d55b50ee21446541dc8d8dc7a979f5950949e65ed3553abad3c4227fcd54100d5d55e19acfbad05e373db54ccccd08ac34c7e50245613789d21a5b7ef0d61740016c701bd361f04769e444b4e76347201f0aa15d3580f4d3fbaa632c81e23b84049276b2e2b7e9d9640f599cfd2a508615349f2f9b3afde360b44094136eddc3b6b853604251de5b79bb4ca4862c21ec9e7ae701ca93208b091344a2946157ffd5bf279ea289c017d8ed7797e12871d793ecf11506346266e082817e52244734f12be0e10ad887efc68038598c6c3c8e72e9ccc70118460f5109857cfc354e7de7b4c06a1d8bfaf229a026cc035725d6345f20a0994f15040b0b9eee6295f247cf63cb4bd723349f01badd063870eec38da176be8bc5d634b5426550ecbd24802f640a22990c622b153fa91339b32d53323b41d83c4a138cb2015d1b2b89690051ee1b75d18794d5642c6e19db73d7cd9005b909af5851c1d3d386bd62da5664067f4bd3cdeea1d5a7d74bcdb7a7829647935066ea950d9d61f54baec474725a35863e62cf5fd28ded7284e2d2f13cf20e64024920837817fbf6f4c6c42d9b8ff6a38eed8ef8c6f0cbdfe0cb725cf65610985008756b51c4be24931033b3c72399f36880d7a180e71f863f5cb0b1f79a4ca1a1afb64bd82a06fab42e74279959c556615a397214ec9d8eac66640cc83ebc977d5bd4d5eec903cd832ec4e41159c313eaed9924f3194ab6be50bca36150cc6ace527f3fa1bfe4a71c1c15bd6f672adc1500885422678b6c0ad2ed3131c54c1a750fbf2a98315529d6e419c43e3f726ef25a0b1f7294f4ac68692240a194160ebfc4e30ebd8bd8475226f5312d36b6745076403718efb0e5acdac21ea5c56fb00d66e2db36ecb6a51d52ac1dd9ae0f8b9899211c30201c6e39ffcedce860699efac4b847603959d03b0cf00929d8038aeae90b60c0ddd096417edf4452da88734be0dc63207f88a6d3eaabfb17d6c074baa55bc601bf344c6399c35f8c3227eb11dbc1211f88e724caed10282d0593138d344c8be9dc34254175c162f4efd57a02c17d2029d1663d0d595e70071f1fd3f64cffac46477e085b7875ae3eecc11092df572735b41c1d58d00abd93222f46c906cae4690e095bd07590b39e9ef38facbc30ba698ebcb6c21718c5f4415dbf951ec04876dfee80624906976f580b1ff8b55b924ca9807e0126a7b3a0692cfa3c9f38dabb847028e1a1b00b9232090ace239f336f76ae06885102965afb3e05e12c3c73ecc47dbdf07cadc782a263c7d00daf4dfa1b8dc07aad9d7972143257354c0575e8394fa12f59d0161e7b5b616cd4e58a800561c040f77ef55824104cb66455727850e989e7209c796aa9b428425d1b8881c49edfc2a454e592e7166d391e618c9b034f0d1ba689b5128fe97ca064336d3fed300fa8085a38cb651d79031565e361c1bcd2c4db56c50eb7768e070978ea06db971888c3d9e2d379bc0ae7d212161d490d66bb6a5f813494bfcd8c3330ef187721a70651e4fba80e965310ffd16c30e7ea637f1e0a279fc64499ef324bcfb793ab02091091662844e3b347c87893d0d51ed1cb7256d0c2761f8ea8cd4dc04472f72d6633f5f466e84b473bcdd1c549b39825c65745a0027ba189746adb02b9eaae1a295963b2133ce02cfd6275d128d5f6d44179bc14d793c5ee13592cfd474f4b023db431189e9e1e104b5f2dd458a5668932f9641edb03967f5e5812d9fe38db315e10a463426a0f7af12432dc9151d3bfd0e8cd2916a3aa0587cb8b08c45ae3ea89f844372b9b2b83821ef59d4323a6004264549ae507271a975ff4de5a5fd38e09d7186e772ff02a77eefb78e5782f386467d726b4a79ca811636c1bf9b428827f3468a42fdd2e1be18e7054e913283937e5ee6969e962fb8eaf16ce6461acc0c2ba168ea03fabc523c7c74cd5be2dadb73833efe454f1da2788c7565f3d144b7fcdf2992f05660daf65a83c630235af927c694872d2af699dcd0a12eddadadbe56607d9c5f0d5a04e44a46fc62f16772ec63d6b042c3a29223ccfe6a6591271744f9ba66e6f576fa858d1d54168b068469bcbe0dc95d64a866c633ea6ee326dac00eefc13a21050575835e1c5d9a2964c96f700048c49e5766370f8b2e278d47045822689e9c28615d5194e45f51162e4ea9c00d278eac5ff0c152e121459e13e7983e257af138230058c846bb25bef4efb02924e923bb2a63d1e2545dc663c30f840450bf564887530c7fed372d63bd3d8be9c50cf23a3bcd28b6b53491573f65562d91007006a608644794f106fe2a2d54eb3ec1eba7ad5c7e9cbe486a3e03c529093bbe075121544424ae9e49268bd98fd0db63cc2126070e7465d7104da4c3320587b66d0d85fdcde8695443ac4edae06069e3b84f3d50d9dcdb7305e19cf6eb66efbeb53b34db7aae7fc913bafc702b86be443286a86251754cadffe666d63e60e44cd06a24a2e43ecb214e4f64aca87ef9a547c7ab2533a9db8261b44520e5d7ca50f3c780e60918ef16d34fd255acb90ffb0c4df3e9bc4613857ff99f80e3d4df534ace8ba985350e6790c8b910deb6865aea1fee37c2fad45836223e204abaafc49c1537ab184ad7966f356ec603f3a1c56e23acaf34361bbde8da688ade465ef436a2a263a3accf46b9f585f48a07761a9b34361b5dd193c6a61b0fe9905b9f89ca9f7d246736d777c54462f0607dbe1e65d00162c2fb01010e81661c5c9766ca0025e9a5601007e44a78e99924f0c4cd2cf6b1d8c162870d84c033cfc287adfdf422dc12c59aa702c1fc8c7229a8fd7040b143a19fd3f3489b0dd5ae37c150e1327dc69c71e15b090c6be5870fb3efdeb2e366aa8ed487aee386e22c22568f928617809ef6962e33178331d362c84d70127fa1a67dbc706af2e86a325c9c7993bb1bd4c8bb724e7b1812a4347ef03ca9fda55a1af37b25052a55ea909a06e65c793404ba7461e0694d70532ad6c0b34bd12e2b37dcfbeebb1808643437bf1f5cc5de779edc6f90c03a60a0abc449fa0ed57b01debaaec35f3d1fd9c5547a52c9a93756383db200b6720b6b584a7d9bc98572d07cc28ef0f134b247429dc37a08928c7a0cb7440c56bf7fc18e6955791bd06d63d10e32e4d3a927164f80d42e835bc025a69db13fd639a58893bf31f10ffa50de49539ce71279950e40d9f0240c65e70bf9e218bce3f928ab839a995b633174930bb2bfb2448692d2d154b43ad628681e9164c49d3363b7bdecd6cf2c40f288c443a9073b957de9323bc81a0ad74d8c6f91d341b3d1326a92b3f80c17de671426a323f36516f96b977e4ceb24fb959a0669309c3e48ce1c15f9c14be1b2641f38e01268a34bb3d02e3c9efb1af10afd5a040596c9901e78cf71b3df29a318cf79bf17a8ee5d6b20898bdfdedf04b6e46a0c321816e56c409ba6e95e1e1e98973558fd8dd0fda9a826181662903c8f62895c72de69545389a83c22f4af29a13d5ee5263c9e78ded08897f8c6667fbba87810c726b165f3015ea696979f915d2af3fc7316de3d063a547ac6de935a40245de1c74793ba55efd508c589282aa241f5285b0477ca420f00d13b4a23e2371c4c56bbfd9a86249cb041607551224d6a5cfd6002829c649ba431c063630ec76ecf3b754022bc4a6793f3b34b50aec39310b9cff2a73c92e3a6899dd07af72cbf8e5fd4c62a8334e9a0ceaca8e20c8cda0b0379b90b34735a71bd1a85cc6c177cbdb8a9dde59209d2753f34998672b7ad0a7d03e5cbaf6e9002ab81211bc0d1555d187c5dfa5ba532bbf44e7301d5219473fa698aaeaf4e62f8611e51d4574b30fa3cbc7e9babde67ffa7c9c5e3a3b2d1da3f6e513ecba795e3e845c5bed4f6928b7000ad82879e89e9386bb182d84475fff1ed65140a5bf6798bb19684167cd1d431a7233cff02092429e964f28b9cd3a552c88d822595208e066e4b19e28d31ec173976806e9ee00888626840383ba224b459386842a498c52768516da67f351584df0974804daa3dbf53493f6cb94abe05ba3fa8462c21ee74c73feec4fcc4e8848363b149485a52df8434829082efa1c2600bd5eaea58db02d5329931555a7d61cd3cbfd9176f523f6a4caa748e20813409f749a679f12bc4e8262f9cf25a0b697e16d5a652e39c44b66bc99905e12f2f5dfe2a1223db2bdb92929a28bca8f4ddfa8d6e0af6f7591f0f4417e95c6dbbad13305a9f3ac76648552db3ec22c65b8950e6ad9add4b152523f347b910fb06079c98eff457823b0273a9c7eb41dd42a446e138ceafefa49c6993a011afd14dc4d838de178d360db38775b995cbf6e0985d84801a61d4368b3f7ce54d938bf8f4a03d056f5fc159fec0be370ca3f91b58a08862f1b43e4756977629ec299bba6a6c424a315204751878200d40d59aaedd3675c2a5d563971112a10507d5055808f8217a519fa985b8a389e3a6eb504495649d47442203b4042dcc8b597a3cadcc5c38b633f811614cfaf36c00a5e3b50e716375d076d0a226016d9c7f4bf4012a878b51aa63fda7ca6eef3fa65de9d11b24a090709876893a11edca16e369630c5d31669aaac6a75e3b07a9aae7d1a4ebc6817cdddcbdd07232297ec412017d69772718ee3b5d48dc984c27b59c0b45aeb6853257a6701266ea7d1e0f36d1d071383250eac584b1b8900ce50ab547350153d46e46e16e6fe4bb8dbd9e28a50e816513d097ef926402e5f4ee5ec25b474ba3c3710cc3a2a0cb8aa14bdf3ab4b8e0f7542ebe96f02cb83acd1416de14563ce51e0c6ed28aa7d010d89aae2f38fbec26ec1911df0bcb831b3b348bcdb22799c0e433c10721455ce9adf971086418e7b8cf545da25bb42bd029068c8e18382f37f4e02c77d6911f3106c1d2f4d4e7c97869a73989da34c1a65aed18e3b2dd9a302073971bf1f4fb5c4b91f5d84bfdc0b3ca6971319f482a7c7c7814473a0097ee27325bbfc8e4faac60b6a69d603e5f91b7683b107e1be1e7c7196f3fac07236527415e3bfb680fdb54f8a5be7e881f52548f0add84a9069e75c2b6d1e42b8897d3ce162188ada17fa884bb849504e76904101fb434254c110293f29502798f19b45f5a4591ff3fdf66bf29817bf22691dc9c8c73cc697d007a143935d096a110170b3e1916b11fe31ab99021cd4df5cd88cafcb127621bb8cfc08127d37c2b2668e31e53637a6ec517068f58016ecdcaa4c909838f0e86362c97ddcc01553c4fa8bfa9a4a1239ded5e4d483eb7f8107570be9f74702543cd2b79ac888e991555688b0dd93f07af3e2559bc59c3913955cb4ff5172cbf93cfa7c442410aa3818f8ea6fc4d7a7978466c310155995a58290735e572db6475eed3c24ccd2e9ad1f432020ec90f36cc5c3a729fd8844b492a40a43e4ee3f3fa583dce56a5424bda587112dec749aa069bfffa6a077d62972a42446dc034e808dd6481cabfe210862b71fc5de39e2c3de21123b9ddbc6307b51cf681e6cc230b82527653ad68dc5a5d09d55f8a17720766085dad6dff830285161f71140e3abd433d98980a29aa7617ee057f539be4593059b29d770a19ab07ba375b35fd3bddbfe90272cc52a69ab1b22e80bb899b06b11eab5ee56a45ecb9236abf6a7b0afefdb06cb882b33222c61604ac702c1c0e64df040b23d13d3c8ff4227e9abdbe92a9b07171982162b64d8c3983dfbb5221dd4b5766e424ed0da96baf28e494dc09cc5624d5e8518d2c413a83e2fca64b1fddf00011c407cc1bc2b950aa2f2fbe72dbe17b6726f1ccd903f090d04e20baa978dff5821c7a561cc0badccf6da66bb2d6c8e0b161d2f93d61736e4849e1818e57be3b3de124a8216d103076e238e180195a626d27c41839c87da86adc84670e5d0c3321c42bdd258f8002aa0f8e4298f16d009677c3584f7971d4ae1f28f40eaa7576f31508aeafd2c5afd74e686c9c1d241c99ee6b5d2b79de978407b7306140fb4f44522c5c328bae271fc31519f2efa2f8052892fbc6854e3e40154c092cbc9ee5fb2812e08876c00533b1c7b0e46f6997336de4b499947fb34af16c0270fed447b9a24ed03d438160f3cd58769afdd353177fe723f093992ec514f5e3a4d8cd9647894aa126c8f083dce19ec1420caefbcbce14527a498958b1f68f19f4e6fdf9a9c632c55e64c26cb88328a73fb4338bda042a00520c6f7aec4ff39bd5491960463a3a885024216702fa46cc895c3300b8061cc307fc37d8ed60fa048d9b94610211d8badf380d4cb3dcc259fefd306532627a2a42a2c8cea3cf22a3b6b535ca07a0ce639af211e65fe75f028d3e8b642628d1c79797e9566741900d71676077cb373edf92f08f0c863f2cfc8a6a3edc60baa9588e0eee0d0731fc6d9bd8c198b397a776a85e4b91993cbddda15972d0ab8b0350f438079a4ccfa76a5cf493e116daa6a9cba013749d3db109a7b65a2ce18a90bf1818df25a869ef893f40bbf1c0cf2d18be156b3e69df276a4eb4ae73213a87d9baa20baf19dba9b958c15da84a83f827df2a8a59a1effb9cee57c0ef4a0e1d0c516b4c75105569905d663596313aed57f63cf3220fc3316c9acf13f38e049e1eea07ed2f606a029a7047f9cd640b0f646c58a8b4a3b38b513539c6c8f6a2dd318f3f1e3ea64f0ea8c5347f93bd73877a611025c8fe65939c0459d5168a732e7dca2824e18a54febc419ce4afa5f26ae793107a10e62c3a5ff3308113c9c16cc63b3e3ceb5b1756eaa1407d5d228e4d26e33690cd295974b2568bdfa65877f2787e82e05c633df129b9e9ff2fbd27e0b04efbb63337e8487d7638fff6477761b3206c298fd0ca9b667e32efd3e946e5354f989921fdf3ce8272135da42b3aaad197a8310e9c9c466ea559574131a52fda2bbaa2893862d3b85d6288a786f60f61411efdfec4f9ddf54a11d27319225d27c4d842f48646b164b7040afac3c95930585d493a61c140804d3138be1beb16e846ac54baf978fc0a516b808c69bda81d1c8b445c2e39d8ec44402ce401c23cf401e2a3b32cc296ce64ce89a3df6db8f39f13eeedd9eb3abf24b2a136d1eed608218d1042f6de72ef3e0c740cab0c388f2eee759d4ae549248ce657c518bb35b3c9ee7ee6ca4c49b9992b2333f3644ade342eeb78eebb8b2fcf56e2ba8b1f3baf48a7a3ab79a92b5ddc75ff5e53f2be5f99f7ea5d1ddfbdebf43dc6debc38eb72f4c829eecc4b311edf186fee0d5bb237bdb737f3eeb1d311dfc9609dee6e98f11803565decbf34176544945948f96828b3cefa11904fb67928b377b484a46c739bcbbc75988b09d5a1b80d5562c9605d66168bc5756b75eef1765dd4e97ee978e4ef9db9774693f16e32ef8e6793ddcccccc67666632950a635d0eeff8aa2b55bb1cde6dde5dd575a6eacec03c64b6b9b4e1d1ba0dd769991bdeab61717ec02cb38f39f3e7fbbad8e9c8790dd7e92680f2d051522e3d3611d4844f2e3d76394ac78e2ff66339a4080000b03500000000000c2982b5bfb83d3964ae710068bf347ccfc371adf3e2adc7031b238c7fd724bb17bfab1cde6feee231dfcbdc388eebf426795ae417b90d1bd8078e673ce486e3f8109ddf78919dad391c7765e33b8f3b37eeca065e0de0c6f37bc0f11d1cc40dc7f18c8338c2c70dc7f120747ee37127762d6870e0ae5375f7f1660dcacc3ce4b28cf7e2f6f0d43800708e1a8e3f73c396fcab6ed892b3d3dc1e9971f6090353fcd2f1e3ff63f318cf16b747661b7058e335dcc595195f6d75961456eb8a701c57648619669081c362c9a041838dcd8cc78ec7e63a5d53a554eaba9aadbb1ef95fa783329d92638eb9eb72943e73efce2c41c2241bc9a5c733e149de2a1731c6b85eddb5e9dc1bbfe1e2780dd77b8d2bf3afcc5368fec8dcfbfb1bd7b90f37f07dc081e364a97ec3b7d8753de2ddfe5d5517e3f1caf0798455d01916c92befa57b973eb73b1ea6901d0fa547bcda9173ef31cfe03813b3066bfe1bb3ce2db273c32db293c3842a15b0318a12aae4cd857be9becbb83468d0f84bf7d1380d7cbb4ea552e16fdfe77933f7aeee714ec365eeea9e86e3a03a1ecf9bc1abfb1997815757a787e4996f9391b98ce73d7632325ed6a0c4df1702918374eefedd30cbf8b1935cb7be47cf53a91e3bcf535da58a99ea111fff3a8defea621e36675dc667e0d50e9bb36e73d6b71357e381a120e418a509a22cbb1296569e58f1b079eb2dfca3749baf78b07e94ce7acc72c6675c863264dc9a0fc9aaee864372f7ad737cf7dbe44ad7fb6e8c3759b766fefd5e99ef614b8edfcc37f33893e3ebfeab8ebb986b6e2873cf64d9fc371c9267bcbb413adb5c758374661ddf704896c1d2d123a7f86678a441e3dd0cff6e4ba6f1b025cf40e358c7c31434667836c3639783069ee13368b0e13ec39d477752c1b9136956c962570f6757f3cd72abaffe7dabebf46af58efb66b9effb3edbf1445c246b90bb69f5d54b2f973ee96964d463ce78a9f5aafe3263380e77472bfe8719beab1b7128b3f7cdbb211d9a47556c388fb29d3f4239cb429b43efc7da7fddbbc76883eafb3e1bf9fb8c98a3f3ef53f11bae0a15bfa1e2aa1be3cd0c1200327ff97b773c5f50eeee9c54701aa9916ccc69a468bb67e479d4ad903e99544e979f55bae572f9696566c6f358b0f0a9b93273aabb5cd54f1cf7991b16c9338f1dcf4cc7e3dd90662f66e55dee2b8efb514c4c4cccb79a1bbd19a4baf7d50d8be4d5b7c9d5acce9380fc4940c66ec5f7c51bced0e96fa5558880fc3d765dd7c99b801cdfddefa96fcda9aecc635724c7fbc3cd32780619c3fb77431ad9bbcef42ef7d59dc1b4a841499f3428df23da20b35c711c667905c6a1cd2b1ea3e971c51b29cc601eda9c7a8c39a19753dbb6b56c87d96e7e1df51b54ea8632afb8a18c99472155c1e2862d39c665b83fd8e43eddb6c78e07b58a97592853d961c186d2a7918e8ab66ddb3a100c71c21a45b3284b9f98d3442fb11ae5588f6ee0b8e1a19777021080bb7de7c6c8ca374696ce8d9175c3c5716fdc2ca80809009909cd5ca71b694a5924a1748be632e621183eb43d72e6d1449a2c30738fc121c8ddc3e15598fb27b134d284a26c73174d68926bfe3dd33c9309b1f8cc55dcb04856f1ad85e33a1dbfcca71c6d1b77f9af5b31ab7026548a98f2cc25c41b798e3331b1e15c4296f2f449b7662e4f8bbaa5e2dee5671384908eba15a3342128cb4f2a55b23cd7e9888f7951b9a84e2a79d565c7b322f5e190e6ef31971d0ffd3df5b1b84eebf4bd134a8392c77743ba02e788f87b4ceacea2209d59e069f40206eb20f87d9dcee34e4cc4ab01dcf80def01c77570103ac7f11b701047f8d0398e0771c36f3ceeb49846d3c8c52c9a46b3684299460dca9ab3b8e137dec30db8450f3a18077e8f1cf6c83fe0e41a16352c58b8f8cd63b7838bdb3cfb77db0508de17bfb161bd78ec7860dc17b799b05a9c050e6966f12dded0a68b2bf0761c2fb2133fbc1ac08de3b88f1bc781871cf1ddf071e3388e030f69a4c992bf818bec7c1f0e7be44f763ca9c72faef8e5e2b1dbe17bcdfbf1669f4711af7674fe706c90c5556771c1bbb8ed73fba741f916177cec7822ebb611b7858aba2569ff889ff9fbbeef47bcd09090114321912cb33871f23171c2a4890464fede4343310f830835d8430f5b28472981993fdc23b3387112db4983f2cd446661e244a873282806db47ba153652962c9320e9a06e8511292be925b1adcc9c223b12dfc55bdcd7b0481d67deb88c49b1a871815b605cc302dfc7893b7c84f31b2b1eb19cb2e2dbec78e4950663bec52e85c31e5962e9560c7e68f3f7d0cb371e82f9fb670e8e7fcf374ed60d5fcc577c8bb972c595494c6ccc439994e59506e563aed3386edc2e5b118af9fe25756bc5e5e595cee99d159d8ec6924a83926501292fadfc40d12d7959a55b973885439bfc3de686357c64ecf1d6efdf538f37c4b951c6efc61c5b682e8bcb4ec537169fcc5fea31379439e6db7775c4fc7d9b1c8b1bf3d80920e60f7befbeef3a62feb087c3f89987f3287ec553d78bf16e91bce206b9320b9c152163cc5c75c31a9467ae33b306676664643e8f66cefc992c19432fa6c3d1fbc54253663138b4d6939f3fff7e1ef18f87432f5b99ab7098651f0e6d96b138f43c999b40100747c66629333b1ed5e9575ce6aa8889f1baa5c2a1ccaacb7810c49935e6d16405b9b2eaab6faaeb5d8b0305ab7a6855d7e979e45d76de67f09177ce7b0a875e779d197365fe5d15f72ecc63c703ea2bf08af01966f55dde53753cab2b7f1daf109923fe0175191c16c9a8af767446a9705824abfeddf0f97bbc317edf75e6e71de6d1e3515da73d1cd2ec3de6df278425284926b12281909088ac147df17b188f70f2f77d0f71722caa9165d686def7ddd4e385b9d73324a38eba4e7b3766d5ed991975d9f1c04454eac6065b1e51e741e1acc196eb7413b5fc058759cb5d5aecaf9fc27337b4399c471995b5cc47bef00f36f409942f0c36a48d336a64a3e51048db5952c41e4159ca1043590957f216699db3ce06a794739e25852d92512d5952d84e87b6d11b0ec9d2c69b39bfdd962c270fd81453605a4651f4f2c02a9632a8066526969138b071daec0a5b8c36cc8794524a67cdb09a654a334c02d1c8a0380a66c7b22ca3f49396609b31c618e99c9d83c5cad32cb322bbe9176477db491d1001a4ee146ffa396038d5c8a2144f535884d239a5300528421305a51ca340b940672b509064f9688324400443124880a2841328f18421ecc4c892a61088dcaf4179be3ab135499d81edd7201adbaa03218da6dadddddd33c6ee4635d8ddbd0292a9132fb25f66d8d55863e67491d54fc9e4eecbd9d194b917bacaad619a66b5aa5934f164e2b81507acfcac2f19c7451b229542128c8e04a00945024842519424283902087288832921091a9832450c4c98c205a02954d050606b8e51a6204d39ca6884c9310a109810658a1046f37336bd62e9159be122f9862658c9c92cdf2c573b62c4f48aa577f62401f5426d49bd509160e5279ddd00a09f2d634439cfcd5f456c1b8c2c58f9ee4c061772f743292428ca413af75f3071634abb76c0ca7cd50e58f9964957a44f74e5b04cbbae16d41668a52ab3715401f126e99a39f5331b40dda9580158a85cad62580127936657ab1856604a9aad21b145d993d60bcb32cd6432994ca5d20b28a050dd9cf3a217bde69cf3a217bde6c49d694e596bad4d3f71283829ce8ca6b181ac5372a793b52d2e2f2f28542a0503a3ba542a5555a95a5c381bfb52eb8b28a45aa6ba1713ea04d3303027944db5b878def4bcf6525e0c0c8c4ae5793131dfb75a4d61c50a95caf36262be6fb59291513133f3cffff73e998ea75dd0c0769531df4a4666252323a34266858a994e47e7ec05142ceabf7de5bdf19ab13dd3e598f95674c88b693a9e14d8c6b3a6a6a66b6a640d66c18286a6a6a6450b172e40904517720556e62825043957ac141064c92d93bbb5e2117f451c64660e2877dff3c9fd8cc60e03134c28caddcf7d908926a0648e663bc9471a204282ac763c638f19c33fb0902cd32c2fb1531c0e0112e30dc541b2897b66beae5b233715d283dde4b6c960d35c73352595979452ca1916c9530a114e72d32bcc78e7e5dd700f964be71ea30dabedf2ab1e3945eec13d14902792fb40280e22b1cc7dfbdca5a1c41e730b99b94762c9252da4f8eac1f036459e3e3e447cf2fc0b27b6e7450dec8b1a5820ed937bb0e99335398b364984a20b808008fc40ff0d2ac92de50347729feb8cd21df294f2205f83cc3cdf749e8796d3025bf69ec8d15c26cb1e3b6b356b356b6ffab437951e3b1e6da2e6a433d3ac04c928827226857296655926a7e4ec54cb613faf5da958f11c32affe72f0326f9466f24a1214244e243d913bd9259d4892b40be4ba4d9bd257bc7eae601c759752a9b4852edea2d6efca4cc395400d66420d14b58084254b1be99f46d2495a49502fc9de4292caee2cfc211a81383db033cb9e4925272c32bf1e825289cc0a15cf6ae4189c1c7363700c8b189a989a98ec31df302882c0b0246734c8ac5940eac8b040040494334c763bb06e071a2e03d42d9967078f955e94ceb3e2e6dbeb0caf97312e7f7373195ed4c002093233ce65bc9ee2cc8043191887de7c7b0f9663e050869bedcf1b163227bd2b5e6fe9f2ca34985d022b9ebdc706f370d7e9174958eef52b5efa84e1cd0b7318577599f402e3a62e935e5e5e5c892593490d66331b9246c4a04c0ac51b4aa3ec0029d3db1335999d5eb924de648f9d94d9b116fa791707bfda28285d9cde95a42e28485bb878965bb0f08e2cafb84ecfeba2046625b004d20b71817bb0bce22d5ae643a924675f49a3a43995744ebcc25076b9442863d239339ed59c5d1265ab9cc52858ace4ec724ae7f44e764967c6e5ec598b679757341f1d35174088a02e470b2c64e6159fcf321a1c5a1638f4e6310e0f1e87387166c5a52a642e77bb1937e686366bd75bb57c359f82b9ab89736429ee2b1e3f5a9ee5f996a3f0aae51505799543e697f91617bc6ac13d58e65e4f90ab923c3b1eedf6763f8133f33c6bb3bf18b2f3a18c0e0e53949745a326b269d612b6b984986f3177554add95e603e6283c4475986bd7077d0a0ff14eef42091905232632878ddeb8d3ddcb0514dbd7a147b7eaba52152005fcd02d9aaf2f1c71f9baba9216897e699a761d346b3a38e4b095baeda79b7e92394caf3dcc7bf80483573e52471dc5bd763c6c3f61accb61525defa90bf398abc2be4dae5e2c3361d6b6609f7dca81dde5da75b11153ee3aeda2b9e8ccabcb81a9ae77ed9a324dd3b41ee81130261b326bda36396dc7f62ca439b06b12f730efa94e7f51ddb8839dbe9dece92db72da757da727b3823c7d09cdaaed3ef1cba731dc4ae61d8638751c9d88b1958ec3ab33bcd9a764b3037a5699aa6ddd26d685a942b5672f6aec484128cc8ddb51d25989b3abda8fbf0711d4a170707b6d4e9e8d143cc5178e5831e75141e62a3695ca73030366c742bd2ac7d4bd13458c25d8a763c64ef5e38edead023670af64703b43fc7ac611f0d5ed7c1e5e2d0e0f58de6d0d2a2c35e7bcb29cc8d3bf606e19d7ede20549fdf5a6e77b5a7ee90223ba9c76eb9bcd4727b971bb6a078e8aebd0085891c618fb0f5a9200d28bd845f903aa27bec7674ee30d8e0d56049fb751f3ca50e07e9ac3d769a06ac0dcef52de3ae6b0d43f32f1fde559f07ab604354be7ee82b3943f9409fc22b1f1e2a763dccc7e0950fd590d4552fb27344f7d3e949b61a6e79f71e4c7bcb4bda5d5eba0b0e32730b1632b3761d74e6a6dd86ddb5d3dc59c3749e2e77d376ee5b77bbad89f276d525a2a5a0085b28da3962eb2b3e503a348debf484d5609e7a911d1dba057387702f20820896d82102f301265cd9894d23ec2a59bb4ec35cf9020bec400aa11d9d89ba71a7843d75e34edc416538036271831825edce5100452f14d5212f3c91c3787442ea8295285e30ca61ccd2a74e4ae97574a602b88225b2a24ff61359318302f0025064c5ac43bcd921b2fa54c87d27f47350609f63942b587218a10019d9220d48051bdab0a1c30136abd3ad28edb36c593c43de88432fecf21e5e8e605dfef2ed2691f345b2bde1b37d774ff67293a636cadb752687d360966919ce7ab80ca0e78f34d260287d6cd7286c59b762c419d6d69b74ce392f4a29ed6efc991027b7ea254f19a534d6cac4267b66184ecc8951bbcfee7fc5ee3ffe2ddbf43fd9b6d8ad963debec5a6be51a9c75ce06637d1673329b6bed2c5e57fd55af5ab10b67995e27d8e29c73ceee8e15cc3544703efe316762178d08d6a0239bc726e5917bd249eba4ddb30bdba4349ebc1a22486f04204f1a11ac4187766b228d4c79e47979c5b0c600589d3cc030ac2485bd728cd2852308d185201cc95eb813e5388bf2ba90031e2304715d1002010f94240e05d2a02cc7a164688ec030ecfa801248701c5042051e5002c97565dd22c7284af4809a80522e38214a1750b04929b96085460e178aa0d3085bf581d73234336cdce430429912a954b99293c398e5892cb94fbba1f8416e2c94203716a690851d3cc98215723f071fe47e8f273e68018adc5740920392e47e04a26c410bb9698e5dff091b7da4719162439c7c8536dd0a6942ce66385cbf6eb303bcaeeb3ad773b88e73bdc6d5446cf2f2c63cb7b9c38ebe7cf46c8312ff8897a778c5a37f48bce28121109570c227d7671ad878d07a3ad872d05eba2b8cbb76eeaeb07398e4aea4dbb31b77b80de7907fa891af4b79571277560f4e567de905d94b3df44e86b3171ad84f23f9c413199f18ca4e4ca13ec1822c1f9f40929ff0b9b890e5312792206ba57546cc1402c962e858b0821831aa597d54868a42769128b63a2fbbefaab3cc3d728ace4472bf6f678d02536b79a234d6dc197655ac361d03152fb7137d39415b657bc3b696255a94b05db13cb33773c0c96a19a25e8d491b6d883457772c60bfc7705864932d866b42a1f5c26ac8828d4430c2951c8b48502587efb0794d542cbd4cf3a52ec795279e5d0b0f4ab49401278a28112c0a872e1c59b1dd0eb41fcbe518c5092472c8fdc009a18c8dc1663946712228879c1349ae905497907959c659941486a85ab08265384bf00015baa27060e2a08524956888c6c211ad81105940ca8a10223bd2ac88a459191694342be6d07a9d59ef5c0b4a32ebb672051564f9900687880e146951aee04344c4383c8125661856ba7a956394216ce022428c33c6f9f8897fc4497b62d7e5c939e79c3473ce396966ad95ce39a120d54a75885ab1469d00e02ce3c9b825d82ab10bbb2a16b5d8d2f32647554dccc932abd2d191afc7389d206cdd4884d862b768a457ad2d7f409afb190a17d0810e4e40033198a0bfcdcf994323099ca143db291bf81058f0241645a328c3ccea9032e38010054cdea65b33e3ac70d4449e566890e7dbe6d4042151e4b3d33b7dd9f1b42d326527d93821e4171a897e38146751d3089366ce390395431b2ca8d082242451aa80852856781225e702a0cd8c32ab5c20cf39ab2491270ad560144452e0c1142958c107619821075f4022620a2433c8c0cec4f1f1f1c1c073c8a6d801123a95b073ce6850822db02198e5147e70a6e064c357bd628c317e668a29c690e723bd902b772b467942508e1d5d1cf9e48adb49fddc845c2041660f96eb55e9b34cb7cc0206b40a5ba49142b2bea19039af76f91e2c632f9cd81735b04066909935bcda01247baebf9c5bcff57a7136be5d61585fda34ad1eab3d43f2f5a8d3b567e6eb52883092c3f8841e49968d6e9cf62dbea8828d52446085661cba15a584004aa6f43a748bbe47677846831a96b91e4e83407aea7b62bcc16990be470245c2ac620f4335486d1aa4b51fda54acde15566bad33622dd8b53f4465fa0dcb4ad85d95340ccb304dd3e4f50cc3640f962560bb75619c25450c24489c371432739c7fd1010b24e21e2cc7639fc77090992fbcca72c542668ea72c471aae76643e3e3e3962dae0125b73f2c26a95b4db5157d05960e20828c8ccf1094039468e519cf0842c7f75b783a4b807882cf10b7e54ec64585e180f92caeb959a80e3240e71b2a474ca7bdb95d2d7d739e79cde7561f26a27c8a31ccf3a8a4759c6232ad84a71a4619c93c69b496ba49961b84299ebf55ae34dc5932a60524ae99c3348ad18889683d44c29131327c71969a491abb3ce7adf609c6731f479d5ab567ce1648aeb29a55efc8f967a61af5776ea056cce593feb7f4c2a29957d1643f2726213af76fce0655ae4a22d95567abbd6f82183d2e4d8f990f3e21cbb15c53d349ce1dffc9ac416a30dd8452f3a29a53407cb326cb2e88c94ceda190822e06383d02c29a5320a9bfc1785bdc1a1cc37dfb6d8dfd732ee30ad56ab9b388efb3e190130705824c3f87543991f306f1fc3e290ce3bfbc2a17d8c1b18f7013d5f91cd8df9013d5f51bcf99ec4c0306c0d0c1b03c65dc5b8604c18f6d78df1ebba7ef3633ecb3730e66d8c0b9939060e61fc060b99190656f20535485fb2ec7858edd08ebf250dd24cbd60bf250dd6fc5312146df89ec49b998733af98f98a8fe84b819581510dda15d85066d665e0b81733b0e147943fa2a417512c51ccd2e930e5893fa278438f73657c850d2c9781ec90e132eee23a8d7365c0b1c19b8b74731b1b9b18df62e0150f188f711d301e03c70663bc48bee67c8c1bfa902f19ac0c180132c6cdcd75e6cd5ddde67e8771873448dfe28632b7f88b9a215ba3414a8f1aac39fdd6b2db7457df9306e9817c4fe20d7d0f119fccbac581ad798bcb8725a299e3c30cbdd0e6290389c7097146504a29a5945ef72f4cb0f33ebad5e2f4b3e63e803535c7b1e6f771d6fcd7992eaecc2d369a1be2b0b82198c3ef86debda1fd9db9615d71c39ac34f49a657f10d657a991bf6931c7e5fcc0d239177c388a4baa1f481b9a10c4a851f51289172f87d44a76fd121871e323670e816fea18d328fa9812349723dcd269ab94bf366a373e80e3d0ea5e3cc9c1251b3e8299d354a44333cc13e6601052cd80007449065c90ae8b71f2ea841fa1135484b4499be64445f3aa22f11d1978a32ec82bdc206b69443bac385339c7d4499fe33fa8e3ea2afe8850f8dc6e10af23c6d7bf783037cdca27c68102b61258c45e1838f1e3a481c1a04830d2793c9a45bcd7dbbb68b9e103969c24467163d2172329b34d893c9f653ef9ecc279406fbda9c73762daf23d2dbcd1b2a00e3e6f6ee16c993db5eba59d52e0e741ae58e2787b64103eae0c819d485e0f7884eb6e51b0e69de7862eec9dca264300c2b69736e316655e3b46bc808244982d05b14920695fc1c69b0e72c619396eef5c3228bd57ee6946ecdbf747779ac5184451de6d74f3fb376fe20987a38bbd269c00671e6cf9d327722b933c99d4131777a771a31871a049a4a1aecbf44d19eb7bd4f87b99ee47e777f6a84cfe1240ab3bc1d9d2814a3069be88926e744711c2ae4b245991e4dd774aafd684b1aec87d757490db606d460bf7435245a124d8916d4606b471a4cc28693e8277347ddd28ce4fe247ad29f54a20d31f79c134ab768ccd9e9c11226387842054e60c1ceace20211444185221021053bd30a4d7c604082241ca052829d0268e1064da284a0094b886267ce1d4f46ba082151edd22f2e477d661d4f0aa561d74a2d9737f438abbd05eb91b9054b83d7ccf279c0c6cbd276cc6259ba457dba558d748bfbc98e5ce7384e6251d8982d58cb228b85c10ef7d3afcf6062b93be9561864e6d3bbae0a7578498397d00957234025d8f0072eb78475491f2db1a7f711908d79d523ac49f2f53e6ab012d5a23a549bd4245549b7ba5faf41dd32a152ad253607b1150a991975975faf3c8836f460198543d485ccfcf28229936eb9e0f83a24ade43ad4e0757d125d9f45d7e7d0f5d9e47acbcd4e17c7746d401a4fcb38d4d54443358ab0f2d85037c1809264f99fa20632ea241d64a585927a084b1d4a9a39b1e5cc892d9f64a522211d1dd5a25889f205745464254936c1e4afa12617d0ac4946498a8088e4cf1016a1a4202b40473f46a8a4131579f9646924cbc70b28cbeb08965b54967caf64f9ad4291236e1a797a095bab542a413327b6063473e64fb37ce4717040f0f73c6baf20a02c359f2c97e47036994838a02c8fcc1f23b2a3b021972514f92f60b0f29c1624844d66734e2a7b0a94ee29e96d2872ce196b956d9424528c095ba409abec492bcd686696690dc5680a2683759e77695a495e286b6bfdc64169a39ed247218d8cf4daf04c4cd339b11c0d8b204b1b8a1314b65bd4444343136d887508cb0116020b93a3940cf0a0f40323b4246c4b8e5232700227ec29472919383203cf6699b55936b38513c86436e32c50b36292a0151e4e66240a402b9c1a38336a4031020a1315d6485109be220cc918b18108628e60b4328202af89a1cfc80f11aaa3a1180c5809829912e461208a0952484052618007a8258c603080c4102f46495218502202972849280c7800042d472f194e184060339b7136095894e0e36271322a10713ad2ac98b3236956cc56091f301935b14040d2259d2e9004101785c874011588609b52d44d11543a0210f704128d094d362424c996482ae9a0045813479a0552a0e492629449b1c010403998e0230508721861c80a1139a2fc08a10539980892e2a38222722c618a2c2dc87240c162696eb92ccbac274395dfc400bbfabab0e650323254a11102511765072aa12986b8c9aa188cc106b9bb1b8a4d9679fa10f3751a5b2b1e357b7d5cf1a031b6e28d88acc8243a894f2201b040893699de1fea7ce2f3a0f5b2eb34ebbe94bfae1a4640c958ef73268532cb0980e548644524fda324b22201b02c89ac9824868d524a29a594d258b596b7e07002d995b9bb1dfa19cd4188d6f216bcc25eb36f8aed6ff5b2b3e55b4bcb75f45b5e246b59a665d90dd2f984679031ba6bd24783f240b86f3d1c0ed283e5ed326f38ec1dfa4266865718de517124aa3c8809c10ff70b884090b880066d481c4cc547b3644e0eed23dad02381b0864dce01680eb080032c600a413372321b4eb0612cf241be63951e94436115c3ae08052024b9a3151391143fc861bc2285929a069248721fbb2a074e6143cf53004fadb556f00936a4a1e91c54b3644fe7f99ece14bfd881959f3702f1462a01ac11822157c3c6f6516d738344f28c51de186fe47764652492eb55eb95dd1e0a10c9170e27407798bf502d50028b11b980cea93159f4a62db43103c72602d186fa781a4aa573e89cac59f4110b367b89d3bebd70a617d33993c9f462baab1793e9e5c505e3c1b0969b830eddea1e6e386c39dc1e90467adda25ecf1bec745aa6b39d7dc761b7d793e9ec662faa41ba9ddb4c9dc9dace5e20d6da6316ffe89e65ccdeee3874eb74fa1c74a0a7ed6432e1b08b9da7031ba250ddda4eefc99ca65b1ba5b7e95669466c1067f7c590c5ae173bb0567230d8e26317f16a473c761d11d3d8dd550e31c7eb8839e2fa2259763a7668728a2cbb495d322e3668d360c46162cecf1973ce3967cff5fe85641d6d106267b44188ce94b1af902cf72b15b2daf18a7f64b92fe583f46039622159ee39255024774f908ac106e7cce48a4a4a299d4479d2ccfa64b5a374ee4068967feadb816479c3ab1d250ca473e925cc436208ccbce241b5d8f5f0cc98182c06c3b81486a5b0542ab55da9d495baaeabb73fa0473e3ea01472376d2fddd9a621a5ad67e68d26730fe8919ee63d763d3c2e3037c53cf552eaa77ba5de73faf61e0a702792b70339e1201c7799b7d24bdf52a7eb8adbeaf4d55337e62d9e1ebb2d65c270e93962cefd3acc0db197beba3d5886f9f60dbb42a69099630e7353e76e0fd683e5d333d536b90b03491de33090f8186cc27a80c8272029dc83e513bebefd450d2c573a67c29ccb9c2edf68fde9a2bc7832954e26d4556f51a1502ad45f5e50cff28b0bea9c45c94ed5a95287c142664ee110857bb0ecf2172c6466175b2a6d0f4bb2547a8f0d088652a65b320dca1e9a06b9edf66c3f99bac71b79baa1cd59ee30b7bdf4ea65dc76575c69bbd5041748a9542a699acc3a62ce1a5c4919234da31fe2ac7c6459731b765dd875d18b5ef49a76551c66329b4788a60e7b97cd1c8a573eb8d3391744b021a5382b1fa6eef55af76c296ddfd834764c257c8f98df2e3cb5d2e77b30f9d25be220339770b8e5faad4e297163bfe44eecb0cf89619f189e7d65e5838b4da39eab2b1f9de9dd8becc46e451377e34e87f545832dd268f598b63ddb7049d3b29776681afe91ddc5e55b76439cacb95cc35b368fbaf4db8c6e81e06f6d96956e53ba38546ce9a18d0e1c3c238c545a5eebb9aef1d8f9a078e5033564b2265e4d3c64fee54576b2c9aa9969935b8d398f28fdd25e63e670cdd2e29434a59b5ddae07c0933ae46ae49426d46b7360dcbee75d48d3b98cb0d7fc0c1b9cd8c97b4af4aa52d4a0124839a1455b924d72a99e45a9fe4fad2d60abd05d42ba05b1503b9d66d5a79a459f51ea069d4bbe8c101ae2b52c97e806e69da6d5193a37669977669b4e3d1367c7d3b926e95300470f28febdbebb54bbba10d8ef6a8653768379c91717258242873dcc31e39c3a51be26499b59ef787914ace019a550f6073602395bc71af59e6d262e591d25d6e68432f67b7377c08e64c1e89d9248ffc8093b1efc82312a85bdd2b86facbcb2b96479a467dbd8b97bb427544b0a573dbebc6ca608e2d4a3539e668a83b44e30015110c6187088c0b4c30851dd4bbe3d97e63d328e130cbaed71b993ab5c4162f650824eea8a50c51246508a22c31308104e9c1725fe6186fb267558a086628a05b61b492e7fc0f0ee8960c0114791e87393190432ef3b021647a4d6c36b3cc5a6fc8264d245240004596c9510a088cf2768abf12885e899443da23b39049e32fa744c2caf5db49e66d93d995d755b1796c9b3ce8fb3ae87bc88be498c9ab336b8cf47587d9780a6d52892598308a81141218c921953282244e72394ac97a04537248a58ce04996a7b808182960620c475c72fc01125c809123136350a2e39079840e78a068c84c939dd3e910d390d35b7488d0f0012492b0636fba44a215b61085a01dd35b2e9117a21d8b8fe87eba445244ec98300e4da3bf6d4db4fc25b1b32f6c66d78165b2746de0c0712fc99bb26c52ca1f092c165d8c2e966593f9ecfe909f3ab4e3158fecd875641a0ee5851c7b91dc3dbbdd65c4a530880d1a52d8bbaaa7b9bebb2b1f3eccd885a31c330e0de2a0434a20a40f4d12368823e68368b9bd0947eca3c5e21729b0a1fc09bd9923270e2f71086614176c182f7d6a6489c322f353fe34f8ad84430b044e3dc166df6892b071b2ba1e40b4bc4e0381617740831d46287e40c286b1c88a2644d66101d18698b3ccf3e617c0d08126b2f8e00b4d50d991f7624e4d165c1085941d0ca1842576525058c288139e7c20044eecf0d0440e68b0a404265802113b5202c91f3903917d0e659398a026b965c87d49347ffc303104e429ee98c0b0c51ca911528810924244122944203131408a0786a40801254729423889528448225f394a11c288cc0528534a8dfc9860ee907922337660aeba2b1faab70a06cb2b4d836ef5c626628e248a8d94a9340203021bb6510e108da5ca8421c2c6bc4d1f8b448e51ac58c932171d4922f9c488a8d65a91aee04c37cacdaedea75b61fd3220b860ebb1631f72faa9e5662a683748f35091573bea312c7d1a945d766b14845a3946810296dc46ddea6efa9565195604a429946658d0697c249577adb50675eb6ac91736b978c2862d44b96d481fe6e22338eea58a8f4e31a785228bfe25d5d2423459f42d8fb1856ad49566d1a3b46c0893a6a49094e9a74fb7e6dca1d732a1a1505ee99f2c8b7624530f64724e30d3f7118dd734d2ade94323e9c8ca154a3f7f3aa777e833ec1afaa16f239a09bdaeebfae9568c22052699ce649a8485b9eaa12492c1ac6050742b6c28999e5e2dd442d18698691bbd14d9b07f905238cc70683b09730cab2e8c8962a5a36e3873d842dd44479129f7925462c3270a579a4acb55d7aaba2a60c003a19d4791c2921ca34421490e658e51a460244ba24d0841487d654e23f2488314b4911dc8a19c02d6eb9247ba555b6e3abd34d2ad96d3cb9f6ed9d3b56fa69bdd140ec9406858bbf46990b65cbb2d3fb5f4514b9006690b6e237b7b0a141b4aa04c2550f71f44329a4d78fb11a473f62a33767fd41cb575323d763c4ea65f1a100dd2eb576759bdb14120563cba05e4ee51fa642b9c190de278a18d3a27120dd1aed2499de508a55060928d523587d3a7ee84f327d3635745924fe8aa860dcd474ec954e3400e25954cb51f49645403c98ad151056288f4a934f7257204f7abe3293dee6c573e9145128a34da326ebbecb8cf8e87cd1c9645a52b89e493243ba55bd745afb0ab64ba812b0a2d9cc003576ee0e4270c3b7509222758200831084306bcb0531f637d164bb4c59055d7c5912320d170824f61c336eac1019345bfea41f5be0a0f491dd921a2a2073baa37cd103b44a40ca6b0d327326347f5d8f5a080c9a21fb2aa573deeac7a88f97c0c1e12b790022b0ced106924a61051c48eea130f2152820210a610851d153e02bb87874c131479a1c9ce10227d22b109507081949dc6475cd769f9446a57429139ac76e8d02095443290c4221a4620897af868d0060c5615a45b15af7c68903ee60334127d5ba1ef233a5f862094b4d3d76917979e410a5bac618da0143d2172228da0143de19ca066602f269896d4adce39710848da11957aad8a66a573625eaf5da92eb95ecbd2ad2885033fb9bee45332525ffa69eca253e46e1b9b06ab4ca61ccce90f34a04d0c2258fa9006db3458b92946a69b4cd75f2c614fdc9406c32b49339a399c9366d50b5f4d5a5e4f8fdd9392066be9dcd5a459f515875966ade71dbcaea45c9b3458eb53536c7831c9f59452ad4abca91a5283f5e53495a28749a94eb1c3a8522ff7013d1a957853b376146fb429301826f5eba1069352c1dc950a86c2dc6a02d5cb0b4c2aa43030982362d22dcce51b8e95503392a7d350ae34444e661326b90e2d6910ca131b0dd68ad360a562bdc78e076649b79afb3215ac6634851aac9f46f45c82e792066bc839c1d9b6ebc270fdf52f8824991ebb5710487252c670180450a6475d67c6a06ed18aaf250dd65ff80a6af04ad25db84683b573cc45dd900ae57aef8617e5b06042b9bee5869ce98632f974c33994ebe7922b89926e69afbf82ae25dd2a3d7b3d0df8e3fac464e7eb9a4c97c974994ce74e4de73800944b4ffd0a22610e834321de7bb00c73154e83301cbd30b4e3a1f4d4378ceb4e0777d3e9351d15041ba2509eccbb75c2ae140ccc5b85dd0bc334f51ca8bfdca26e68ff1262426676394eb7b80629b546f4267ae1ac3e877a9cfa1af5a5ab1db536e56a460dd6b35660431c27b91ea75b339c742b3c21c111714f8cb429da51b72e4c4af9d3508c14b61c5ca633b01de3157ce63ba849b79e583902254f2a450340c8612fc9b387343094c376926736caf395c63e328128e5b2c49dc436b1b1c119914662c992932449526ff692f950a321996e282966d4c0e260c34683335e7ce0053bafd3b373dbe09c86cb6a60c3d3d8e0681ac8f3366a6402074484408a1e1c710128458a78c2101640220461400210a5494c1c3ac10669124626ed393f73981184dea26a34382f4aeb2f2cf3ae13c954dad0c418b2b3da99813c2f536badd56405300c31032d0055c1c80e2d020e9c24d18223357882ca0ea5f471027548d824b745066c91267ce193e9af5c1ba55ce7d888a759a956ee3afd31c18614090464f28f79ee1b55d2ad9658c32e291575ab5b92bef4844a0132ca510a10510e4b394a013a924b4f3ac7c81131324e5f9a19f71a54cf21f32b3684198109614a821a64810d4b3f51d8f0236a9229d6a45946305043cce95504758be6f42a96a810ead6fd0aabf21d750b9f7a9e858939d893c8a287f9d5ed90af15af78c8908183cc1c53639ec30eef2f3e3b9e1738ec9171efb4eb91483e3e3e5906fe96c45cb00936fc8cc8b8f7fa987f9311f342c65dbdf064c8b8d504de9501c4f3bc4b4faaea63645cc8cc3270a8ba0abfa086977e660e256a167d9659eb792ffd645ac2aa64fad3176c48899e647a1659eca9490e4b44ac1dfaee48b73050b72e926ea992744a54aa7b5ef530456a909e1e3548dffd74abcef01a455818b7301e66d9c27868b385f1d0cbb6e63162c488f18f68d6a8818303827f871fd10adfdcdcfcc6c6c6c6e6f562491aa4ac16ac16ac875966bd45e865196478b90c29542a43a58e3ad62463493025ddfa4e8f05614bbac5e2f49810660436d4ad99531a704e4f8b649cae4e4fe9e951b7644e4fa974ebc55d4e4fab742be6f4d44ab7569cbe868bef455def769506b76f1ad772b78de399f9e6e2c5757a8b8991b192616f5155c6558f9d4e579587735df61e0ccf7a55e64aafe46dfe98fbfc7617b7911adc2eb76bb7a16870fbcceda406b7eda806b76fc7b9b4c1ed322ed7e0b65de67a0d6e7f71651adcee72dfe0f6984bd3e0f615176c70bb6e5863c695c9e147147e59323d0db73659f9d4a34c2fc30d5741999e75c38a25af88323d78c32b49a6b7b9e10a29d32699fee686323e99bee686d751a68f714399a04c0f43862883392c11adb0d7cfdb6d930675ab052f11a24674ab3b3d1da24ca893d93f844166b63fc5e86c0fe3d79d57f7794fb744b2e9b1d3e918b7479e82cc6cba89e6d2d5c1d4e11c388e520a234610434130c9d3de1e22154986711be3f6c86c0fe3da4d07196b73f0d9b26ce1416fc088ee96bfb88c8bf39afbe22e6ecc47827af468b05b540619677dfa348bcae4f91c7afcc0ead0e3c2c1e88736caf33670a862e7431b3a387c466464be615cdc899f114aba157e4d3e27dd5271faaf49b764ee0c5cc933394ac90012f269de36ee5322d3875d8e9f51a6df0f228bfa5414e42845035632cde14784a45b619cf215752ba44872928fa85b518a0684724b7e5032fd76cd3927eb2175c921cd252ec619e33168f88c83378c3fc860d6ed30efe21f936eb938fd37d42d23ba35bf23ad8737683ca491e74d9e3579aac833d5e5f91a73668dcfd36843ce270e8d348833c5ce879f914c7ff077a4c68d0dc6c0618ce7dc186fc0631d0fdf924f23f0e05b38ac019e060e71c09f7008822fe1f0e04d20485fea72cc70f0dbc671b2d361732b3b1d37bf3eeff51837a439c661dc506618353d58b63536c60dd219c675e60c183766179786196ef843fc418671f0373787cd2d789b4a833587716b3eafcdb5b8a168b0a66b5ef3979a979a979ac7ae795026841a42fd23aa39575373164737f28a2c50aa7f52ed936bde354f3d76cd91b29aae99d7c8ab6955cd55355e8d57e3d5dc036340107ccc3f23dfcf916ec55894e7d7f1302969b2853caf797d53e20dbdf06764f319a828a844cc36b54dcd32856844000100008314003028140c874462b158309e69d2543e14800d91a248704a1989a32488610819438c210018002300200003341306051442324d2529f5a03d4141d6bfd085c24feb17205815f2f86d88b218d8a7f87d6eeaa810bb0b1cf62256b06f8e7534a14f9651345c80221daba6628bae4d2f4c7e177d161227903856dc0a6e8fb6c724ea61f9e45ed960380ee090734fd2761ba4cb08049ac8167c2fa9e85eebc52e0b8fdc1f42d6e666a4d578f6b045c259292ba4afd95a860ba4962c49a9386a11ab059fe0e1a386d8441bb20995dbb219c4c58444998caea7bf8ff5f4f1d6266ee152e68280b42d10085483e70b99cefc4863ba1fa04bb67e6faff2e9542feb242b9031d8040a0a0cac5771d37fa44641db6e35791d8ea1b750da77ee5a1fdb6ffb1071d45b4dc5e0c0a5ae390aad21be9f82bcefd726b298ce9bcacbec478b4630f63312ea68d0eeea914e0ae743b571a788cc6c4d329a2fbd955ef7ce26a1098d0903a95bcf0b78ae82998d0aefaeece040cdc5eeb1d0979db9f831bfb47cb0b82bec77101c5c117d4e1818a8611d640f44b1db59b09522da5b61d128f15417ca33a7a622f0a58cfebf8688d202550eee0e7c05325b7395bf2bababa87a5a755ddf51e5f43904e738e12252ec9236980fd4131afe635e6e2f8b0cb07c3ea5b409bb3d4cccf3cb4b50c09e9e40db524da6018f0fe36bec5c2c6e96cc23ae3f06d661fa1b581716f14d7db95d40092f90bae277759789cad0b7c61b5c4effff3c5fe8e6190fc606cdf4821e727145c41c727201a872bada08e42ae7df22786d3ff0117bbe0197068f1ed71009d02d85eae0cb75ce53e50a3f02b29e6a176e54a7dc82d89c40fa1bb66a01f481ade033847e70b2c7d6ec18b14a1fcec61d062a9e81ab4e9afcc16b695dbd7518acc0ffedffccd77b5ab466592761b8984749299fd38e1c5d57ea7086d846765f2b8cf785fbce061b9f212b879874b66ff11ccec484f019362a0cf0eb21eb8488cdff5af8cc8a2cc3c0cf1f9e59bfc8cbf5ebfea59bb37cc22a10519e142b269fe917d1a3a302cdbb353568866a29d73dcc46e42059b2dc99ab4b54dfa5ad483d4df98472baa2dc094956605801701ebfa6a87e8cd0f75b298ce4b0a6823104ab27da3b866573f41759444a10d073db9e3492443245b9710f9986f63623f9e4a43b1b29966de2160f848448004ab95bf7abc6261215bb6f63b4fcaca52887132b09ab4d7161751b38425d54a044b8c6e484d527b6f1bc48807c0737740b981ae48c974e780214c267e6c301440a1d0a54dbdb839c28ffdfa7d6965060450c4bccd1e16ecd4396143c5ccc8981b2ed78b3b059b4de3bbf6151f608f3e072378604fcf137db8c92134c880a4af91d17afef3b46654d1c5deebbf7f79c8058743a29f112101c5fd756c55c1f1198a8d1483579c9c118b59310b16d387f0f2b8f2715b0b1ba99d1f0374d44f9331e52cdf155dcfa7ec08064eb544b4ef65d8b03037230c1f1184e3a56c0c1909983bbfbe24619afd8e0d796bb521d80ac70aab170de6dc245b95e8135e2aa2d0f5c83e08c2104413cc844a5ce2a1112c9883251c1b24b4f692bdd88809519f194d74a15b7a88146b02c83a63e38e78fad02e26779a1973da7a2925001c6026229db7f793d14b13039e49500d9b0f2681bc22951444be28520c93bfa668d9d39b081e8cb5e3edf7d7d488331953d40f059158095581542c3ebc940f4fbe56c5183016e1eaedc83fcf0aa752e44179e3051827de2c5268f8319f430b85a5f495a87c797e52c87ef8936d14cbd259e41575cff905b9f2b1d1c336382ff0c701bd06cd309de0edd243187ad0c12759e327f8c92b1d840b5726caf13e24e174dc15f140d8893cca7dc3dc5977154bd128d25066b2ad5d12993047e195bb6fc34ae6125d9b878529c7a49e137641745d4c34a66f11309d9bed703e348c777619cc2716ba73eb43152c24d82b8f613e6ea450e6fcbaedf27ba3e9d6ab05ad6772786e5620b981aae3c8f20a0a091a78892da34f5a2868bea3a4139a74dc17846c048ed067968c470641c482be8313eda016fbbd92f273c21ac3a1c8fdbc1e2db5fcb0403d6bfed45f57a561ac687eb92d4be748ce4745572b2b775257f49691d840e0378091118f60bfb8ac398902fcf6129ab453dd725655559d55cb7c426e4f76eb41f41e718bdebc89664ba2a68e778ae9d280c7f12f375e1bdbfee0f8cbe5b2573cf98f6d886bf3b823d5741e52800f495b86f16b021ababf39e58b245e1a71ecd937e9fd5cc7ec59f3f6b33b38c31636c15a7ddbd27f40cc960a7a0954441616f52e2449d3c663e64080e560d54b2d6cc76c7c081363977e84fb977059573d661f4c01a8168f73e2793728b63d81c637941bdde0603aa1d1083039223d71cf3820c49e294712463feecf5233dc3c8433cb0a5b7dfa4b5e58dc7b753c267256e6260660383bae545f5bf77a470fa8ed589be5c1fe4a7cfc0c3c962925be1ba79e46a59989f15978e4bb04604096081e51f3c4caacd98f368adbb7e02cccc736d65d5b08abca2288d8b0901b98cfd400056f193d28c35068ccbfd17644137727453e4842015914b4132f6812d21b25108168928fe0c4e9c830ded22db6bf43ff9758ede9fff3f28928d658256d9bd864eced434bbd77a35fe76e6562b67836f9f16df6bbb881dc55eeb9f06d1129c1d98ae1d5054e9e436e6e4566b51f12d5e86fa051a6db7bf98ce859d042d39083c31afe807b8ec4c429887541f5ad329a9c29dac059d06e3e673986c47001da3574da40cb6ae618994eedff8217cea5b7313778b709c54d4281daed036fa04ec48a7914b3cdee0658e5f3809b28bf433c0e1584003df4e46143e21c21f1352d0119976755a026ff4b7ba1c1be2c9693a14a13063cee3b3f30979fa05082d12de61424242e5c94ae3acabd67c1c6708e40ccc0604e1cbe372584d3d56e469c26d27945d05eb3ee617e88b31c05d1b47b7c84caa8a687de0a54f9a6e5dc3000358f506ea2e9571cf0141ace6d44c627b03245aa3d68445520b3b99ebbc7666bce7bd6b48d4f34c6bf3c5483dbe76d4d16b5b64500ff809355a5720d2b189378b21e32fe9fe511d7b6e29ce57882786956d4292e8cd79d54a54a3f78b6b291ff68b1c617d6040244626220b60a54df3e9b74c70a734ea7fe8c5917ef34afbd0687dbd3dcc5c514d798c4d2e5e9e611b0ffe6d2cc621bc244fe5d2c0f240a153cb1a5cd12940b6a5dd5ff91e4329b4a18552645ae83a9782a815c5ca69c9ac2868e74c6534386e916b3135aaf1dd453b25fa0cf7a9c4fb0d2f067fee8c24186b9e5e34b157a3fd4f64cbfc44fc5a305c9c120a14f189e46c7098b68c54ab08e9aef7f3ae39c689628a4c4217bca2b400914845c116e4107f9c6cd008903b695b62f8a5e2351eddf92c7718bd95481b40688cb8d20be12ee6ff008431d52ef3b3d4e627aa2b44296412be98889c3d6ceae9be866c54d500ce3be628977a88b1b0b553a56bc521cb0dbba8b866aff2a954224f4270222e631ebc3535f440b0f8d48b61ab3cad14fd5f2f745e3514d9b8212b9187bfd239a4986878af75d33e22a87a2e45944f7d08814da294eb74c9e940660564cd987c3678f20fc5260a8c0784720c91425364ca5f8978b9e59be3a7c3a2f6b319a778580c97a330e4c7eb92987e9ceedc92c892611bd0984fb8074a8ad32ab7b1781d2c50698c9eeefbd505274ab2fa98de0ab7c77c92e56ca84ded12f88770bc3b485603a76ddf11a5585e55f5f6bbf1bd4749165ca9af03a8de4413e6121827aa9c02e14cdb245b8bb2d2c1a6792fdd5a6bd1815635b3e7b8c11df46ab230814e98f4486895b192a4ac4c67ed31901a11e34a0f1acd88022e04274bcd8039f711265e469bdf6920abc8641a83504aff20124709b1a9b91b9a71edb10648c433181159c808ccc8e3db81311b69ad5bc3bbb9d5fb766f56b4a3de663536bd32dd05264cb84947ac017df3764bd942c9a5980e5eeb4c19601b98f1a19d4e200442c2c43e09912316a326e2985c956314660e925263a874057828532ffecae2399a06c328b02529a9e3cd86dc70755adc8e5c0c94ff385f3d62d7496f1d7f6ee19350082d88f4ae64f69e15d1572d5038276430e5531e4ca274fb8d64164fdf0638ac2e3b2228e70624f1474dd5b1ea046a5f604892744e5b5c81c222be5abee25d206487f4b5c86d26f2401bee494189e7ea5ca5c1a69cda0401606db481e62829e6d7ea6fcb1810391bb3b64564fbb6b47cfe36bbf327da2d78309fff4ecaec67abb99516142c825b9672d93229bf8a42660f6b029631fdb23aaf0e688d00145822074424adb40a5802e5fa95f3daebaf609a656838a56686c66d2df317331b4dd2c2496d75a5a79ed49c12ccff0e50b95b9382a89c9cd8d791c74cc115a967f4a252294daefdfd8fbf22deb57ab1fc609bbe307e9731a338bf595dbb9ce00420798f30fb277c463adb968b69941c07ddafa179edec3dc3740ebe9576a46a2b9c6262e5cd8548292dc66b9ea1f92f3d82195ccef3ca78002c3bc878fc6724cd0011724a1cb9035bee7c878badfdf235b7a6b68db832b201c36082c78457d2c3d7c4804ee5bc50d1029bc9313c0149d85cb685849ab3513fa2d98c861fe9c1fb290053add6e44efa002b31e2602faa5aec44b53f916fd9fb6aeb2fa9f199368b681ce3874666ad2bf1ee5007c1aef4a4d7af34c7d246d3555b9937cdf4207eff95ffa9a537e1b1daf557f2cf354a0e487cbee9c651ec5080459f2a2908496ac6b2779b83d65c9d49cd814c2df54040c72cdc9398d1e981dc2fc6a1de6956bf3353637befa80f5a56f48d7add5bb54ab6343a691c5e52f9490ad78a42b4330303ce6492848b42a4418c6e4ac4a10bad2d61c5af11369b482d6d305a541e6df8deb82ff2b6fc95fc7cf86b73c87103eca27df1b145db7aeef917b13a0c1e9b3bcf9be4577613fda3a96992e74de45a415bd5aecdfc38f836bbf975fa1bc49a01482bfa4b7bf78fdc056b094d6575d3f6d608fc51af88be5dc24a123377d5a6ad71fb71cc055819581db2ab37702b8008de6711a13e13a37a843ff5e14bbbb213deeeae090191c2e179198e65b03075041474f14f73ff3b939185019a28de657f40f2a2df9d5f1d918dd077ef865117513f07c37a220c5d9441ba008b51237b868ec0351b49078219b2222d452eeaf1697b6ef46232667592ed5255441e137e719dfcf32cd0d107cadf49948ebec58473290d163db267fa6d8ae19ba334751edcfdf62a96c9447bbd371edb15f7df5567b6eb0ad3e6093408d30b7a42293aa9a8588e3b7f6841be5603e324f298177cb1d9872d5b4dd9abf38d5004ffab4a45d0004ab11502125a97065f7aabec7ca8d2686197770370d459297bf28b53d4ecfe4a7d0b049f3ab5553b9c0798d7c4d21476b166aefb22337fc75393391f009b1078f415f0d7d85acd9c1ac8a0042f8a0b4b79cab3313d6f95babf684173c5314422b4adfb17607b044373d9397c0e4f178f0389578f3c3b1782a840ca5de7d2e5f05b6a245c4c80766cf4a9eecf332cc3adb8e3560a1d33cad477edc60ef27a58c1eb6d02bb0c43dce7b700c2af48be4915e481b3ad61b42add8af9cf1c46fa8325829d112050d6dbb61e0804688a9938072db33c15014edbb9f14788d1c9277cc0811c28c90d0687b77fe90c65044e823d0406d0e72bbb6a8fe04d5a1be4779d443c1e7cc6df0cbeaaae75162c12a2ea7a1c53a192c83f8c5217c631f51d5d25afe05f3206d36fb139eac943a29554468ac6dce920b03d27e69a3f0c07f7fd68faf669c5c1abc522421e29946511ac7763571666ef2305732045658ad4fcca0337b3745890a8c66a3feacb399414776883e48f7024f3f98b04055666df5e25ab68f8799603f2f9d8448b70073ee942b1901da82a1cca2f203461aa40fe6227b2ed4463f885009e4ef90758fa70e8a2a430078630039e6185553b8c509ea8c13150e9a08e586c4c30b24c60a43db32378dd9915eead39034100c0d1b15e7986110ce3d96aaf2f1761e257f490a9d65073be79ee72b5f678a40f980435d557a8614846c2924d47268084452eef28e76984fe72572f36f46f118fce5d5affba092952c563206f1b921c9f0b93ee68cdc73943914d6c408c3d01791c02e4137c1a00e586d63f28c434e526525c21a175c1bcd295301429d3e7ab7571f83c37a86c792010a1050f6084f00e07c1f31eaf3de435a47cad19bf8f89210949b3d01f57e3bdf9370f03d47bc1057574168ad043e727e9cc9c36bd7672a8d931d4ec2c06f84f7a5d90fce59f3c641a3d28e351534afefb74b2b24b31619534677784ee9bab47cf31e28cc538c6ec434ebabf3718f9776346ddf50dbbb31c1801adc872111f9ad1c58cb20f4a03b5066a95cd132487a132f49086f1a7f61e2ed9099809e30b77a1d84d6295a9b5ebef13a5b6f67e651e5f006b14612c3760d82af3e4903c821d42e340d9e8b751869885c598a82e03b1edc0bbfdf027e9ae074fb5b53e560747c3d6221bed4e07b4ace374bf2643cd0c15b50ec7a1785d22d6a442137b8be17e2ec5969c210bd6b76fb2ebb490f3c4ba21789cd2a58ef6ded3d808826806e05bf44ef7167093f07ca361bcd090184cf01ea964bac1222ff956d2a071544692259d2200ba8c37d74be9825c061c2f40c0f7016d85a3cdf41ecc46df249708921388aa76dc4ad673486aabb5f98a3fa94648902650cfa0805b3cb56eace43464adc299e49f311704b3842680885710244b39188a467480c69d2ec85075d449128ac7b2a8470dffe13580689be15a81be067aeb140d77765f506458ea23980d79c4e1263ba59954bb42735965f223944b8ddb0d01933bd97e41ab6336ba012d75cbbab16d07497d4aeb2c1924d42880c906e74a3540ee5f4df74acf60011a3160f74799064eac6ea7d9e6b086ef96f33a50975904d2824ec90bf7115d4fda1d7b2186ccbf35103ef4b5156f796712f0b1eea9197d1c23aea7477839b24b4df434e04462ecd4701faf2e1162ece7b4e096715543f27e66c2d09293e465d3062cb0d703696e55ef240e68c5165be38c874bbef8777d7c7080961d9ff6eef19d23d1399c58aeb412761aa72a6b357d8aa915e2b68dff9ffe5b0c9a6edffecd3097f15d35632f2881970116415debb464c6aa4663d5bff3fcc42d89e5feb8ce1268911b46322198e1a92e946141c646141d882d0e7d01fa48b07087fac86c9725c3f37cfd3cf93beba502c432d6d2a48b3070cc79bf5e3385bc0d5c49e9d96764990e112f256ebc4ec41f83ddd919bc1e494b164ee600e371971418c1791d81e071dd84d60bf80f2b0d52c990ddb4e52218f408a3a551257efa6c80632674612b643d2d2ec3215901c06e38bbb0092215aa1f02f84704900b5714cc54982f4a4a5c58016e2429a5cbc47727460e25434aeb24872f43fbcf1804181fe4616fd5ba8c7c6cf006d11ad28e2f4f0d43930cd8c95629933000386a64ba78baab6d5e37bbe79e1e872c414e0ae62327447430dc9c69a2505474a5c4105833ae35cddf3f48bc9e9598974f1ea2a4a7d79f2b0a344739dffafb3dd055cc929dad6f77ed567c0bfe629177519414df031935990f68d8c114202d6fc4ddc089cbc293ea2e77f13224a300adb6d1a6a719a0af81e192edac2b5a7ae0d49d0082cfc7db4daf688d35ec4cfe82bdc2065267ec46ee6aa554e3d9479aeee4d7e14ee837143835186adec45b21c1dc67313b69cb593ce101ef8f4ee5844fc180187dc6d6e3804348f46cc05bdc010e91dc3996ef62a96f5ab29d14ab1faf66f7478446bddccfb7f8314aca3498e3f42455cd2a2548011554895dcc67c585d33d7e6abf6a5958e94324a2f51762567c8174feec5f086534754b8c8e052f217f0eafb91354e62280e9c8ee68709cfd5b4eab54642e18ad4ef3214668df318a717aba74f79ca6c124dcda35d1902e52aa06f75aacf6544a4bb025d2768ee6f13f0423565383f480769da6da34dc6e0d49f85224e48fe44bbaf12d2693e86d3836676521ae98bb82e1a390a375f9a0b67765a120ec2fa5104675950aa516b86355bb60fc2e2ca7024f1f761462790d0426d391c3eb54263e4ba2abac71cf881a16414636ee4cf065c8db2b74e41a12faea783063d8a6315635be7bcaef91dcb8ffb9ba1066f30b4b99e38e25c1e93ef2f0a31a012d70d845c1c476fd9a8e2cb2c0155d2252c7e8317490719086997218c318f2cbc93144ca6fe562e0a80c60fcc9542433ca92d0490c300f0aca5ae0123c2c5e54c912d8065d7a29b0575be79a88db48661bc21559014f8d4fb7afe5c36bb700b7ffed900099c05ef433b1d2bc59520ac227feb31a5b1b94ac68abd59c8ee6b3c396a4ae4dbdd1a8d505b0d81216d90832b1c9f06d490e8931bbce4aeadb0ee3dc55f35ac3258bd4873b4db3185ce94b1e6be166373f9f9609c111f9282d7bc34f2118c67087fef11a4c057db783ad70d8071d8b6a1400bcf84d92f78ea3686ce9b89a47f84452e19a92d24be2efaf70fffcb7f3ff98c96276acc6738f5452e1b2572214be7366722338117d8c7e4ebda5660e68c94f25d751b893dc11c128570db2fb0c2538773e7328b23258bf1bbea35c48acb2aea1892fad2d7f965c08bbd1bf5403996bfc45cac5700b1514d2a07616753f80ac751b018462e77604d2fbede8cd692ada860ff8046ef4660255a5b0ddfccab48d6056110a264aef6afb1b20c66cd8492f5c64d9a414dcce7212a67ed3932a45b07b0c0428bd718e5b12bdbecc2c58f42d8b8e80fcfb02ebd8ef01e14bd0353d1c724c04d1de49eaed2c30cd466529b427ee0d60ab4b9e9bfa83ff4176c1ec8bee55390dd23e9991a8607b159cc4eb3909f2bb6bcd4811d1cfd6413f91e2a714416b4544ffa28f2984ceba456e51c188342421d9b2918bc3d9b8236141c70922f6c8fd93bb7befe3e68f70a2d2e6fdddabbefffd434c553941333b9078ec1a46f4c0aec2fea547ff2016d66483fbdf0f280cc92e20d2c58ee8861e3acb674193f98af162aab28d7d64c91aa57286e07bcab666c449378957aa4be7ab351cf3aedfa527d2ff3afff7831696ef46a158933ab6a31208717129c9b428a7a8b991586bb399cfbbbcd30146fe9102e09aeaa85afad8e719bb7836c970513854028377216ef8fd3da54114457842d779d7007eb60fe2389e87811bbdf3a459c2be52e922123adff4aad6f6c183da2bc280c2dc020ae186414600b9c1721861aae1abe2dae14cd8b662cc6e38345c3d08ae5d26e0e182a79b556c6446fb451fc2aa3d018390a79606651f05c88015c027631119da87d25cd8a7501964ee4d8f822535f4718f8ee5ba224ca74c5073dd796b970df9e7a6419a1cd0ac8a4d0e5ff9ead7064775e2611174cd792eac626bfac01d04c9bf09c3cf32cf6578a4980f50675c244840fa192183018732785df09e51d5027e77dae6c5b8ce1d87a19e05e400ecb537fd2d99f16b3d8209d29aacc85342c6b87b49bc78f059d23d7cea8df64869fd56ff94483ca0bcb3690ab9f03dfba151cdd931f4d025f4cb4c75b69e153bc4a04964da3244eae6b55d061e360bfd325330d428a7fb7d42f48830c59426a2ee701f272e372acc59b37f612bbdf0efc76d642d2b6d9c38a8f4ae13fed5f4169bfdae1313955ee3b9ec67e4c94ecd27d50b97331fcf0b5ea965154ca727c946682a211711f26939f4759800da59a5fac6e8c83f1c44d4d2688983f857a0b1f10512a60e3476ee2e81ab3f7d0c7d9638af79f077fc00aba966c074634ee0ae48e596c1293b1c12d8c9b95594672a553e44c1448e0c21bff1faa90f33fb6f951da96913a39c54d292129664f3dc8cfbaa36ab013fc534466c3ad2ec581b01f7f62581a991ed2bf198c0cdcc67190a1d4dc2446ee272901541d8712c23f760a102762b19d19847f79b9a49abd3a1068eb1171c132d6c3d30eecb83c1e99cb8cf989e576161bafae44f89ee4b61dc8a1456248dc29c395118a045d5239dbb0d1a885f1259154fdc20e96a016305f697cee40103854035179b1a14fdc7c28d55a5630bc7a636d6e8beb1e3eee001cbe020691b1b8ed99875d51a53c056634de439e4622d2027acb3ff60db00e2cbe286258c78853547be5063011df575bd62a8218cfab92848bbf83a52f619caa18c299f468c6c078b474ff02a435591bc54c26fe8e9d91151c304ec69d2c2c0af270edd533fe507ccfa52d7ab385f1731dcb5b42668b861ab3accafc7499c6266b5cbb7f88219d83de0681628e26ba2ca4b9a03ce28efadf7973e5ac8d0ad4e96e2d1a81700e0e46279eb730274986db55d3bc4a4e76a6cdbbc69b0405567270c80047326e1ffd3ffa9f59c3de7e7e5de0f0f79dfdaeb622b727d82baa3299bdd861233ea113977336363808ebda5e39cf475049f6177c0e08f1efccfab85951e4e9283acccf1f1940991cf7e39b885a3957480a9bd01ce33695ae5ae381a4a8661e754b8c8a3e84e465b16f3a007e966193eb8981128f4267554dc7bb8ed17bffd8cb745f115e623d002985c007568af4562bbb5f52e27f47e9ce990600e0ef8026995fc01c54f533d7e3db317d4f9dec83aa20da6d2700298bdc5c5bc4d34d0b44809d143df053496dafce0101b964ac99feed07600dcab099d49e4fe345e73cc1f293bc456cf69e80ac804f22b2e3fe428bc9cf48aa651569722a50a8ee5821dc51418661378a29dc8cab95cdf8c44cdb5a41e0bed9fd9a396b37e0f4d20ffa820d72a04e2401ff642369d6303a009c966a2f9348e0b1a5fbbe5369843af82282556183a96f07c9ecbb81a6cc42f5aa79742dac030b0004fc75f1fe1ac2c48b2f14d839d57e174fd5f892faffe90b8b4e3d3d192dc8d86a8e2ae29100f6e53466dbb971fb21e084b69dd28c7aa4c6d23c79278ca0df80958800094c534cccd45817b95012b81a5216ad821c825dfd0b89bf1ff090a01a8f9b5c09a1daae620bfa858f3ef441dbb9fad2ea8c381fa9f68552110f491833063f69db4d7e7f7f24bb69e407b21a354edbe4ce0dbba939570f380f8515852552c9ebe959511c98ec6d97a6c664cda46052f505deba4039a55f03b53d23d4ce81338024d2cca916164c39f3d9cc52288eb9bba4f8c931b9832e9d37a8f6875368679c6a62d2d713f44af0dc2294b17e5d1254ea99e0800ed6771007daaeef169015366ffabb9bfb3197d19e2e4b2cf561a471207e81d1264c1517325be5435f390fbd22d4e9ac9519868c2c9347534a3ec433118d704746866014cb09f3bbaaba976afb8f7174bed405f5734d81d773ef1baabc1e6267c2802d7e92e3b3c016d6ba4bbddd9c48a4a23c5f54e2640570dea6ef22752e59ae2b69389d5158d74d79d4f802e35a839d96902511f9b70d95016df4b2ec6ceb91b4c0a81175ff524bd4dd1654e8805fc940371ddeea7b94d2fdb718b37a23c7d1e7b4bb5814edd35f2ce3b3b615534ba5c767802a2ad9176bff38995358dc6612713a61b0dbd738727a28b1a9d9b9d2642f43518d73b4eb4ee35a6baedccc449030d6f2dbf8b1c896f6271af001098708394f71288800b3709382f81084cb871037d30096e78fec95dbb390004a2d12219790108fe2b7a521d19c491212a1c4226e6059463ad4b0d96c5d9114d408702a2a1f087db8b250477a77a8291f824a001af6cffd2fa5719984ae2c4e7617c8ef7c74d39f24369c2fcc10c7005c8ab92e7716d15bf5471eb38fc0ddfeef777c35f2e59f399377677c71247a87586e009a566ad1a530bea8d462aae20c474f89282e01f3e9a59023276484495f983cf8f487dbd26010245b6fad0832eb6c299a222ca8efdc4211dd913d5aebd1f2caa2254c0a0dbb6581c506895833269756ed542d9b105666f4ac77a243d26f90a5b28c993cb15b702f048f35db95112a41b057782ad53bcc77f25e8bc699a4ef17ee6ae39e81825f8f5374a017a737546954c93604ca6b9674865f2136379e4321c1ca09ec080623b67f7219b77b1bddd31490031acd0c93c07d4bde86d4a5af3fd299d84c49e34db09d0902b30575fabacfb20e8cd142c511104e7969cc2201ae4f3b6c9ebcc549e23f4b5d00801bfb4d2a22c74141c13219a3bdb5246663c331b268ab6109579124aeab7dbf7ab8dad204517778e9082cb29a6d246fe951a4fb2090d3d2656f01bb5a21c64b6e74b75397b39b6124ad1bb2e1fe60700990c20665eeadef11f9fe18a8680183c8a4e4cb621f808d7f7bda68e8ee52601bc4445b8897a22baab32eb6c0200004b43f361863139f3f5a2c0460085f8220899ef4c19d82aa85dedf27c5653b5ab394000e6142cc406b3f2793b803f9dbb5dde00260c247252a5e18b7ea6b33c1340d6a33cce748a98130c1e10cc15af1b9a16ce664b2ab46c3bd745560d91a9233378acbc2e82b548e5e2f11fe103d382d4c2b568fe1cd20b9c8fffa06a6abf85d6ad98053c66bf9c3c956311087a1336407de85bce77e9bbc26e8643a4c65b72f4327ae438fa483045b22bdebacf3780b2ccf2d40763808b883a5817c1d625d90effc0383cc206d5331d3684df8c67708cfad403ae6f170195bb86e4509c2e336595aefe713c0a9391bbdbf3c6ebd670c70e3dcc2fbdc1a9e507bc083873d584efecbdd91bb3ee6a603e572255d9d657eb78f10848c1b2ca39c923c7f179c309a92e3e1fc8c3bdcc1e1ccb6bd9614a2f4014b48270008719aeb754b8ba8c4fd50c77751ddc2a80d8b7a8852132cc71339e87544fe4605e86b8912c13f7cb772298fef9815bf38f1596a3c50c9bf4da0cc6e06efa1735d165a3a14d1f10588f717ce9230cfe1161bdcaad9fe7668251800b3dd575e9380ee1c2cb1212090ceeccb51fd5ea9af1218918705a92e09cca6a47a6d89454492067e411607f5463402a7856a3df6af0d34695d681b9ef3f6a16961f6453270273997221e98f8e97d1c8a44942800b7e4108f76c6834246d19b0f2af7d4c0e0c4bd85b148c3f9b21f51dc5a19842bc5c79e38cf9283937616063a0bc5d925c12846ac4b2740ff762619c5388ed8a4b69b20998fdd83449531c7d95b0e4df5f34240d178c258909cd23fb2895e9f3013705aacc8014fa441086e197860705ea90a8ef6a587cc8f5828107480f766be0eed0d40a600fbbd02b8e041cf6b5858a4ac00c1cdee971383921d01308c762431556deec2ab437bc8cb10b95ce0e7a76967004f213d79f6cfa186cd277eda1cc3b961022ec82c15454c1bcc5d0d56b545da8492dc045f4f38ac620fcf0f79671974f49c2c9717fe4cc11f736f6229641fa2d0536d3014f82747e10d227a1c07ebb56b87ea1638d35150243333263bc2f74f19e127926f2b149f1c73808cf6fb62ae82b1511cd6e35c4f144f98cbd777b14eace01368048d5b36e83d245ee44270c8218bb143cb004031d9aadf6a0fc060c63aca5ad3477a8cad9da3580488af1634deeb8b137bf11a4c351432a37327e08ebd1b5719bd19539fbed201ea029b304418f4b1b71f0b2f779ee8cf5663c16361f98e7e92941d2dfc3b185eb74f12427ee8229ff427b6288f6049f76962289237ec8fe00ac55dd214b5c0ab353b9a484f743a298008492da90b008bcd2fddffd90c7f320ee9ac531273b2ee76438ecf349061404f98c353f837995887e12706c42e11dcc4596dbdf997249038527a4038cd230693cc700c215d39e847fc13d0530d10dc6e56b4b21ca3e920229c651f2b30347fdf9733c948fddacdefb268dd262dae275204dce7bae537a097b6b97e86fceaa0349b577cb3013d27697c692051ae09d9056401f5651003a77f0ee6e55de4e67dd2dce33df4e7858ed27ec08fd9963e7a06bb59b30a31866738bd7380371a5ef966eebad42e118c5311b8469dd97a20ce31a62dcbc2f85dd0bb3c065e19ac6b0f08fa13df7a0c3aaac64eaa5e721cb2951b3e20233e33b92ed0b9edb90caaf0b3eab43093c9976cfd9f17bcd0e0625124eee0b1fea577a610e8a5455d41be91c4cd52a7d52fb8f08e4003611522bc9ffec50e9214eaaff8fb0cb7e79a8bf8ac1e79d9e3edc8f480d57105ada8e50071fdbefc2b137270d1ce0d17f33e09338db73dca8839215365eeb7103f0139c3ae6688043de478de22e468020f96921f376c66dcc0ff53c35a627072853758761d274418384b438d8fd9e544fa9935172b40e6b22c4b0f1be05eb269dea79ac488be65ed9547b21d97b55c9dddd26dbcce7dbe4aa08863b74e6974b1802a954fddbd1f1f31f595140d233e952a4ca4db22f2fa255d17f6c41bf3a2851857bb1e3c3beec798026a5e24bec1454ca538f7adfcc0855738edf3a03e579840d8419df83bc4aa53961c604e453289e309dbea0952073beb191638fcf7a73b16c0130b002933e77c20c4d77f8e02e6bc656a36128ffc79a774723701b00fb4ba211f8678bec8ee495cf3f01926606163de01a02342f98ebdf3bef0a2663d3df3ff41af7fbf6f0229f5feea40c8957f9b0033b0a849fc8658c99c9264a14d43b81191cff2f81f6d0b38780438a6e2e3fa048a1009659b619ba2ba04ea23a647bf8a68aeb9c868807e1c3b68be58828c74bfb76d65c4df94727e465dcb75d844781969d7d804edc8a26e3b94cd7ff507f52ba3b155caff81e8a57462d5a6b35e9b1927ba1fec716d6281168e055ea19631d9ddabbee4e7ec9b350e1860882b3b2c75ccb74aa34883c2a255330553e65c3135496e0f305649b3b3ccded8907f95734bd6d1d19a28a02b3cb9f6162f1147ba3802623a2fcdbef11020eb2b33bc0e2529a2178f9ad1852f9999b457b9864a11cd2040893337092647536b926032599aaad978c18b407a14f8af2b8a2bfa09796bf92bfc84bd6998e230130139da2ce27d248bd65dec2520d7987f68f9cf12bbcd6b178a36fd712cee178247b2271216faabc932283234bf22fe7714fa96e807140df5280c3d2422812b63ce758c2c57fe014beac059d9a69bc59ea3f79f101d44eee9f7200f870dc9575aeb1994367d3b1a9cfefa46318cfae897e5a7f681b370e0b2752c47d5ac62fea96d31e49ed371414e59249c86baef0f0ab2bb6bf78b7aece22d26a55c869e22cc88ef966b0bdca418bcd262d22af5ea19fdd81bda200f6005a3c2d6192c6e6ec4e2b51843639ff5fcc66e5726228caaa6662b0a00360b121b8f3f9f6131e8b350e879d1bd88efea14f78dcf9f94992f9b42b7200e20427128f3e2e4c313214c62250a4588877ae2dd8ecc1a9f3e7970d02807fae7b48cb7325cfe6ce15b8a13651ce9246d823893de86d9f6fe8f3d66dbba876090e61df35052bdcb8165e5e01a23921affdb95f833ef76e1593585ff14d30168fa0ec26be48b1b8169cf74be2d0e638435fb75ab2a8fb9a01429c252cd29edaa9eff01a7bf92a85ee3b35cc45d8200cdc895c1d67d51abf197f9b629820deda5e3d6a85436639ff7c69b9a83d0e37b455e8afe95486efb456a3162e076eb575732369667e293ab8db37a59abe186a1ac0899c8a61ff7093ecbe15503b0f359bf99f0f06598521fb808b14a277a1e418235744148c8919a6f49b5ea815582958080d3a8be58dc4d73718a380586dfbe52a01bec9e303094aa90b1f42e4363de5d3037bdc2e374db2e3ae6672bae7606ba420687556263937cc250bc9e2350cfdef426d022a3d9fb8bbe431370852dd2a05e3152c6b23825c2db10ca2aa3e17e7eeb1cc965607fdbce9c0d5047392bd8fc430ccea47ea422d3e1824ade0d4408487544513e4a64c16a30a7d22ddf7602d99e830bc9c1df223d28cfdc3fe11e43e9d4d5043db58693b447be4bcb2fa86fd081029e4ac03cf433d29994148a34dbbbe30f5a9836bd945907686e466f41f416a8d60ae7b9b2c5549ee147045a27f1743a1ca770900a8624fbacbf69b8217c01eac04cc8e2a7ee250d874be5bb34cb99aa80e84dae046ab5db8311332b87a64f3f49aeffcf1db53d007772b29fd251c45206b700138d0f8abf7c1e784887a09374ac80d821a829efe5e6198b78ea3df1aac62fbf7918cf597b99e97a3dfb0555376b76806ee2ee8e59dc295957c05b72de3abe036ede9d9799e4d47833c6b9daeeb5e09e867b4fe6c8d4144d228a2673ab317263a8292e0479f02179152cf31f58854ca0ee1c4a9dab4744f07079217d5486e5b108c5cf40d340de47754bc646dcd1c762bbd84425d171d58e92483134f7649dd749c202595e3efc6e8b2574b34ff12a6f2a9204f6e7f4dd0c2781d74051f7b3badab8526858e344ba074f970b3dc1474e3c82d7f4a7eecfce0935b459307b59ed4860a575dedfd8906e07845ce43e49ab454b2d9d2cf52cdc3189f1e301aec90a841322f7b671dcc7d52a55d138033a5bc06796940df12fd316a8700676906e27dd28ab9d558211e9448ffe4a099cd97c44fd49ab176a0d170077c4fdb0091b2f1e7c5491b48ef4a731c0808825edf1cd46c74a86f48d5c428e48a7c82adeb37143f431d8c6d335ee3d71c2c88b9c52dd240e96f94b700f302847b4d2728e209f2366a4afb494bac16d2a64a8fb64ad44d390cdb9e380d3366217852c8849c931ef4de8e581b0577ff2e2c9d651d37b242f0d65937f6c03317a56b356a75fc681c618b0007fc624176d61a3c5845c272399d76d6d6b82c11990e78f3cfe2a66906465601e67f32e177f542b85ca2c8f80562467eab17b43f90ee1b87c0b977b0695680272c487ed272c548bcaed58caa5c1589db6dc08fa5cc96694d541af6dd91cf6f0235bc79eb7eb0e9912e4e2acabba8a54b9f1792940af21dfb636dd8b107bfd441b4f9cd2e6b9b50bb1467b5edc565d4f0c1200a40bbf4765301693c4a5a3e2c23fde6984be1336e3c2ebf9f91adb38520deb89998a00c851e2e6f82a28c8bb30d0558b940dffbae29159cfb3503fae021af0ef6f3007dee02dabcc229b6e080d24572325850488bb2db15126cbe8cebdd1c64e78be3dcbb7896915da5a2ce9e622561d33c810a5da0df9c541be9b5fc180f07efd2be91f0cf1d7a0334eb658ba92ce85b9a9a78d9e179121019ed66aa43ad14d49da3fe8a27714a9a1d65c84245272d275dab5cf9e66cace5d9e1c3bf568d120e0d876caa813a9c1f86cefcf2ecb2d30d930435040e1dcb525dd2b3faee1a838a1770eb13103c4bea1685a926a21bbe9efc1be640c7f8c3537fd87d312a9663e8be4fca1535d6895e7ef857f5923b48e0c52680c932f033f7c77e2f418cd61dd535392c3ff236734ca26c6d957d9e8a5129a1424eed061bef446c0858635b26a06d862a821489d78a972b628fe348aa38548b00d2794ce7fe69f3900439e1f80bbd45342ed23769d77c7685b56408e37f46b739a8610d746df9f40e1d09eb3501efd4548dbbd7a22dbff38beaf0091394c3c3f5de4c30c3c1b1863d219b055d1aa6459d94a05dfdbecfd33952d2ae3e5b3b3f2feb22e1d9aacd626c10c0c1278acd8a1a7abe7903414b2ce648a251352322e29cbd9c185ccaa90e422b57c46455efd8964db7ca0be000cd7f703dd2de37c00cfac9db3e72c33227b6f628d2595ba56c71704f07d1e5e7b2281b0c76a072723c2c933ac27fc700478231ac3454f4d8ae0f580e01c72165a9284daf0c907e40170443c45b2c518921e3c736cdf4800ec390967553abf9f105bdaf5f6ab48c298f63e77d06edf26e6d768af04473cb37f8d28a1aa7a511683bdb059867280bac063f288f011efdec39e453246dcca27590043484f87d161566f43ce9c1ec12521d46b63b027c14c4ef6dde139130cd1c2c6d08d228319c40235569e7c53525b086982626ba8fb50ce30e9b022f3ea4a133c1207cb397f4dfe660dc53ef4658e6467938eb02a6fa7ba65331cbf7668f0177d62510027d668e25b4154c078b99b565d6f21d94248c1177216d6fff8833529fda106b0f275041164eefe1a7f9d88125ca6506908f4832adde7382561548118f8304d0f510ff2a9b676653f540f49587b8b5a0b641bebf876a36124d247d30253c2598440013844f2582aa12c871b595d8004300d5e5cb3d461bd9408b8910d5c22815f4f5a12593f2fa2179fee57ae43f616ccff3e619754dfa32d734fce9cc301a083f9c0a81edc050a9bb5fbc9b59399275603b2f2aabe114b2a76feba2bd6f7b8cc89554fac89fcaf88e85e96f618fdd9c138833cf908e57cf90964325c761fd3fef8fa131195a9e27895585ab1e13e6906b2af28dc4bffe5160f883d3091fd8b924119ee0708a5b852f8586b19377a3296853079e7f84754bf03552fb9549363bdd055533f0383e635b113cf95a238813d82c1ec886fc422c973b5666c2b950acb3381dafd8af4f6f62649035314149b01be5b3694bdb2439fbe6c0845ed4b61b47873c7133253d1f447a9ebf1a762c18b0c16f7c7b2f4ba1caf653a49e9c181dda0c2804496df2784bb39020b2372cf0445b60ab7488d6c62880f34121b5e682330d7cf50dbd78244f8f3837706911ee7291225b00f875908a1fa43478e943f198354da73c1f477f69c264ba2860026a980c693fc617e424481acd443d1f935d57b15b7b78f7f70262f450ea75febb85b1e0343cac564cebe3c8245998da5a1f4751f5600dbbaf438ae8ef44c3a62dc71255c2bff0a9206301f9524e4a9037ce3ff6e3e9acbf4fe248bef13ded14a57417ae857101bcb7ceda00301312ed2a1c40b25deb25adaf9c982c1ca043ce2e669beb3e2c40fe91e01d75c3ab6e2aacf782b1935d71e7b5c3d54e7b93b477c50d7eeee1f58f4c2338b24fb894ce4faa653b3bb0aa68d3b34e78844f85df13cef7238b9317eb97a61fa1f617306109450d834a974ec640222f923cb01f3fc2ad00da6e7575ca04677756d32e6f5fc2969dabce614c76b6c0c6657e0b4d3ae2ebcfa33c17a0a0bc7ed7dd865e8c1e53d787006559f1d5b6db263fd9454fe2f05c10e34ab8ae7ddc6fc5fb6b7c4c333c31be7a6da80bb8827d119854daadfd068f6b452963e487935e6ecd58d040286225e8b0be93a7cf386bef4f80a743957354be1e748829ed8d60a677e36ee5e87334dca6a11c3fc79e0139613d53a74f9307be1bfc911fe8637bec4ca70721258df23a9c7f9e0995336360ed46fa90809e5b3541d67c22759eb2f108c5cc96b934fb8fa9c62421c4a2068673a22bead43f1c3b8055547d220e2c113f8ae997417418773e9468ce33d93a0cf1e18273e9e12fa0fec57ad1018d9b20fa91cba29f050990dfc73e2637e4b0dd566af37356dbf37368d0fcbfe931e3de0046656e0de3a057da7d0d4789444a2844437269f299788abcd803a028a71caf3f37b9c7b90572fbf8664e9b5a5569eaf946ecf37995099ac63107303adebe88f99753c07444d748870b5d62bf0d5986b878634d73297aff9b3fc58f11623c3899cfaef155f8ac37efbbd9fecb95687bb9bd9cf5ec99498291d5444594782a59c88804d3f6171b3589f7b6aed6faa999b4cfef651a086016a7f13039306cf835b97515a878702fcd709c2521e10cb2683be57545e9e96338eefd50f5604466bde092d88a0a9c40d712c10d05b42b7803e1b940a4623b15531e10c3a89804ce62bb058a42a4f52fa146f7fba890fc770772dedb20123dd57c506b40c3da31314808d0eed7ab286fb8a794dfe8eb27237b0006c711dd28231b5b2dc3d3e2e37814ca176e1daad93bdba6b8f56b3ac9837a3b999f141568dbbb7284855ec5a0767ac37cbbd8009cac93167a82e11c560a5ebb8ea7000924dcd1a3c12c1c4cd6e4b257303030525db66918c34ec60603ca07ace2938ec5d21c66e19b91ff158271096fcaeeda426f055d8e4c47c5e3a0b7a69dd1c81b7fa1af2dda0ca444415d96163312cda1cb2d9e30c912852937bab603166a28f000beceac39a5ec3776166979fce19cc20a2c323ad038856ff5293bba9297486a4f8ef619f78626074068b0ae92d83f050c620d9f134619088278d0beab6652f94b674480c23327c77378409aa083086f246ac69e87e1b26e393a1a5cc2d0e50db2eb79a9955c653ddea8cc5791318f4f719f724053b9360c59359ac4809ad174a2385f56fd8979cb11c4d3f9222d09e7b62fb84cedfdcb10b640adff2584543cbd9186db9925f583a0e3e4156eb482563dd6274cea553f3162a6a107c4c5ba77b4e0f8574e997e051bbc9499882d01ffd191ac4e8e00fa5cdc66e9881ce45ae85706aba25cedfbbd467caec7f6cd445c5d0243473f61ba33a759a57a9f8d44fb28a5412046c8d663c89f6e57455b6d51bb1a32b49a469898a3b0f6a64b19b9373372eeb5b9ba31e03f6e6dd0ea7c1c74bb0572f003773799d7aad470180595d9352d468cd1bacb54d8eec094532a84d7abffc4844b40f95e01de65f20ad6cde53072419dfa403c16d8038c4bfc40c8deb74c2b8c23be9801e2f59d373b5ed0c12167c8168694e7d7c8471388ca746710e485e213e7200417b74d30656c9d4715b9745ed29b5816543f4a3847b735e4c2adc1a0560a695f2bac1d1a75f42064597949221aad09b516e10ed1326cefb9a33e591ab5f618926f91c3cf03014be5250b81bee3425d57409ceb6d3f8787471383c5bfa375b78f0a964eeb94c6e1c01cce5945f6699b5f7298f015abe516e83ff7dd3f5817d5124095938520f6f6790704090e038832e5e78307622d6317afe1a588604b6a6f14f00bf37ebbc2f562852239672b06754c988bed2fe5f4d38fd9ffd9154cd590e554c77756035d94b6828de6081096c06040b120187461b90b0bcc9084e331b088a939ac93b518f73537b033eb9a238a0c74c0c621d9ff0e427661861e664cb060208d81777e0643a53a2d4a23924698cd473c53fc1c8124a0c32f99e0e852f59f33a184732cf93fab0e1926dbbcf4688552c56c58372c3ce9e01d68f4c0734c05f862b5212147de08964f1c58733fde2e1af78e529c6ddb94e7459b7813d16f93ebb2c41baee86d9ffda597995822f5f1ac338b4e814e391138ef9c9361a6d93f70d2e78ce22234a49a20e60a149ffe86d8bf07111595f8b300036cc28ff782f88218e373773d5c0a73f3b626cd1ca6513fcdaba4d6cd71633ba318266a2004e4ce8e6fa2557fa6530b51b7cd4c5d569e63262b8a4c7697593179883f78ea3afaff98c42c7d0c52dbc7e4a9091e6cd74b893a56f13606caacd644b6b5796d2ef91a170fb283e656838f2d18ff8ad5aeeecba709d5b6e5fc19abc6e32ab3870fe0a85a8ce0445ac6b3aa76287790765665e1c2b2bc4d6da7c0f6c74464f12a82a8256f2cb3487c80c78e999d139b26630991821c7f518c66ba0200248a7c72dc86c0861540ffb4e31f4a31b800779ec2d7f7e1ef035f7e808ad4b9401ba6cd540025fb4f9fa50bd337364771b40ae883ed739285d9e0cba86685d9075d4dfbb4b1509d9853b76012c472192cb6e63fe702efa3a12aaa9c00adfc7c2c054eaad50c5262b6b96ac5a979a30d7f74be29430f755525dceb25a6cf47b345ed1b89c6a414675263a59bc8ebe0878674c5cf720d72f5663381c365649b8910724203986fc7ef7027d92bb923580583b3fb9294c8778fe3ea7b6dfc7da576c2ff6f9efaf476c6b7ff3bec27ae0b0d182f8f4f53b3b3a857da0f293772179f1415f1edb5e24ef126695380a9c91fb6cb0ca12c988411390e0777bb6bc8668a75635c435c83414413c886d549d6494f9e2782f89d1373ee3a87a8c44dbcdb8639f987e7080fe2660fe0b3a560b26e4d9e75bf1856361889142201b568bceb788df81dd8dac8608055a4e0336b89b77cf2778e9da6aea985ea99d8065a7904e889d50789f50e0097aba0bc6a33eed76773179b9fbdcb6e711ea48c906741d0cc2df2745b780b927a86319f2c9a7282d35c2d828b82e0e5030c5bff7f4a00a5c06fbda0c63019d0c87100b1eb8258eab93c5272de9e19efae0aba610dd6e6c22a59cbe3f96a4917a02ff9ed0f4cc3fc2c5d5a9b3040efc9b5fb0eb956cbb196cda53f3546276f2451f01650f6b979f1a966fbfed5937efd15c1d5ef103243eb2f4ed929c0f9216c334e73daef536e83f80a977f0368aed3e01a51a9ed0de8bff9aa3d211158cd93613fda59ac148f30ecbd65bd42a085ee4356688adf8889a4bfa0b8e30f31e0dd7ccc11336dabdf6ef4b0cc1f0b7d975f594655a282e3ca098ec8a82584a8a6046d2a0880c54a300ee8c900e18343e6e95e8877800c8373cf44daf9c979342f70026984521a405001d52f7de61461857240ebecb5cc6e47715d45df200638d520c4951e0b36c88c91de5a96253475ee45b099b4b4584a22450c6c7161630cbee6f19bd4cd9afc38d1c423fdd556eb5634a26899fd991140a2bc893a44350bfc7011965ab02e71511e3d2896d14a779e84dd5d6829b3eab9d6f1c900bc234a88bd3c4069a12ee72ec66e749c9e2e6a60df76d0001e107bbece2c63b13aa138ef0d2506ef2021f39a68cb1af35bf4279bd3c8a9ffcb629fe6921f77fd07e5eafb8f1ee6392bcdc64b957a5cb4d0ca04491dc1b63f4f14e0dd8d63b1f46afca0646d2b818411463f8be991c3574ac048d3aa363b07767bfb230a3b380ac91c0878da489cea6f3a73a5da57358d1f64c5acc47863d0201cedacaaa298e3221360b6f9191b6dde3888733a0b07b35c57be1053b16529eef755512c18ad30b16351fda17432ebee6536d8933b21e2003a1e74a9cf067208e4da6b15901fb9429f17016a13b9d4f638a76dc8cd6c7cd6ac676786f880c210e4b67d9a063c2ebb0e0efe6a3217d1f3eab6492cc798286ba0f6c761785edc45bc6862e0f912def1beb18a6e0cd539759e784e8be20fee2607990aed3f546624af0a29e12aa4befe6887f1c1db0455d36e140a141c91213d3865a302e0952b97ffe342043cf01d52cd1ea230d16c409cc2bbdf1a5758822b8ee9a5b4c3215517008989349889568b54bffb54a0ee929563ac6b35f30823c73ef77860039de054d1d20e40f72894590e04b6733848b82365044f91dd0d923131f3f2b447e2af58dc308312ddcebfa9ab03ad26826d810138726e064e428fd87503262116d5d49db3209e0243b721473f9756df94502c7ed9c6363d3000b3f209459f31901da7538b8bcc4431963c193b636689fd8e9f4186303affbad642a6d8c58f9c8f41f2b772fb312966713b335e9e12f042fc951c2d7ec8c3781876e781251472ddef134a41c0e260bbe827f2b4d54f968872ee60b6c7b2c2673603791bf95c155b007871a205b83cb33936fbe54a313fb6776863bb66f78ea4bb2a518ca3c1c88a1cf8b0860dfca14d939d1982bc954d7d8a7e82000099184ce5d48a56be36bc3abc1f28f2face1fadd364fcfeb378da49c034f58e838ebfe7229075303ef9fcdbef890dacb9f3ee7371003e0f5cdbc3822f2b1b6a23f225236cb392494805f67ba79006a3c3680bda2a4c1d74ff6cf159e06429438e0702fe98242f041ec2e9c79b02bb3b6930f04a4da525db860fa26feac44e4f9a488b8e306a8643b1bb45d0a6295b5aa6ab85a809bd9d2c1dddea990b377e2226ab45477e8af830f4b368a1df356ef5a50ba0fa79c99e48c46df343b4c89d0d36c347808f79f017e0e0f87201b00b39aa060e85d778d8671607ab9ded3d0fe2601a9bd3076fdee2882934570bf2725d90993f13a7b7a4ced83c5c8909f8d9c43e2cc7bb7111654b4fbd12ea5d4c1b2296344f5a82c0481095c7fc0c6d15070c8d11ce76540243acafd524f4d47c91d0d6b8e5406777a4cc844350e51f01aaf7bd5e144d2520951fc99c7c6a5f87bbc03a7dd6f088c8ab7d2d9ae2334a709eb86c49e3ac1b9401f6ca434e13a0dc036721bde22b13f09dd050d6f0b2d74c4d043811e6390182ca090b8037ec3b0cc0ea313af5956e405f109dbcee3fbbb717bbdb87a569e07dc7cc9b65fd5a2a9ed37c18e65af5f0bce7d704f797e823cf1056eee162aa0f1f09da08aa227c996103bbec61c9a4d2043410a6a1e350766d58b4ddc8f086a464e936cb92eb40677f5055e6dfd56233c18efd16be52d5c5e00ad56358e8c09fa7c4ec54fd6351236655cadce96b2880b9e613d6e7a8f6af15aaaa23fdacb30d2a59fbabb642d4f81154350f9cf202b249dfcdf7226f39df72922a70a91db2089b691f10be00377b1938fe69b2e5adba632e573dea8af0600caa6929bc519806bb9b084036ec1741de742f3e6b90416d90e09af23941eecd6bba66c30ca93674b1496cb60a6b4d69aa2b9ff878c2c924f36340a0c119bf75c775ce4c703a0708dc4ed75ab60d9cfb37e1abab89cac4e129df590889829fd2f79466cafb26dcb6875cb0815a6a5a0df625a6b08b6b5085eb891a77e9a93d6c9b116f891ea40b3ff1fbb8b94e0cf95ebe259967fb5ef3092b37b012589ece19cee303411bbf5eedd35b1f46d081a28be77b9a5e9a536f3161931c1fa7bce744cbff34764c296e828959c065c7616cfd1854d2e2fd2ecd98f9ee6b38a5f78605cc2ab94f754cd8f356b49a9a814782750c2c2f7e3657cbf49af5f9c68cf70378c916ddce3b38ecadf144c8bdc7855a75fee791601f770df157530cf1861bc7ef3f13c247a4c28063e48a859df10b2c00aa0e2234b4003a26a772f3dc9faa001eca026cdaf51f30a7ed392ffdd35d5237a1704844bf731c3a0f0ba44406fc6eeb792df4649ca01884610a91ce2d6ac09b7abd65a025e88924ccad86d3b9c26ff37dc14fb7c8d4ef3222dc582a84a50743d2b3a6a3cfb8a77b253d8492e64199b93f732599848a14d48d341bc66678d4307ebc68fade0438dde9344e259850db8cf65b6cf554efeb5108e87e0b4b910fe8822c47be4039573d2e60f5c4a1e691f08c0d9b2a2f59f3b007df12bf6386eed65bc5c1391b076c5856e5e04292cd3374e06320beb19cb6147405edebdbb129db08c4a41969f34c807c9c40ce5b39f446b842d015fd1307429e1c9ba3d3f829cf60a1160fed866560c09cf33eea83764111290299f0c7a2f3a71a79fc335f421ddb8e1f7b8efb7e45abb6aee533190c6a69c69e81395481ae43c3978c8a1f14c14c1e67c8fef7105f3d0c7e4568933a76613dfaf6dafe0c04f5f11c8a212174766e7888f86e22d8564a2850faf99b781f18fd4da409ed4a2b428e1f5024f59c969ccda821f7bb03922b6ee5cda87d6b8143bf438fcdbd73a1f784cac27f07cc695bfd4a4e495b247117ca6a7c5425664a09afe5aa6d77566df5d991f4b2536bbeae9635d8c154aca0f4fb6231831fc203ecb5c60c96185ae694bfd0db30f077c7b29888cfb3facd451985c813b6550380d800bdc568fd9f2e5b5c4bb7b4e4bee831008665a42fac5d009f6952a85892990c1699f45a53569937792faa3e175c45dfb42cfb89a9e166f43d0bf4dc9f95c6d430592b6611abe6ca1e5db6538cf659cea6d94d39fc131bfd2bdc3d8ea93f08f17a34e0391b73893df6d991e52eaa2ee738d5d94760720d81087534d4b4930f24457bde192dbf048cc7df4babceeb14e826d83daf117ffb06583eefa1e11c0b90eeb583d89502b66ea06e110ff10a15920820ff2b2feaafbbe8b2b757b732c8734c27368cee3135fb10690cba96d4ee15dc718c108b06051fb218f860e81dbd50e2f00b10ac7a37becbccab92d6b63e74d85bdfba8b93dc8f301c8777c9e7122fd77a1c940bf2fd9e69f079a68b4518dd9ec452240e032f4d8e5536b7bad8bd92e83e86db268a983a3e67ddc202b11513753fe5a6fe2ded651faa5a4d943eef99aba91a75c5d34911b592ba9a8ba6fd338455770dc8a431178c186615786e0e825815750dcfb9767a499f0fcb8ac3899f90b7114b7bfec8325e5a130beba009388108daad020a56851849f2811adb35c26811b92ca019228edda996748865fca1273880029d449c4d7695f9b5a979dd55a26e96f5d1e1b93638003ab86f066e2b1b9992e0f7d611fe66fb08a30f6e9fe43d6410ae730a08c4471e0b44a4788aa1f31f0cb2a7eddd3bf9764a16854683c0ee8192b8100ad18155268089dca576474f403d1462b7a14bf750794c84b507b76670cc7d890cfd98d61edc8671147fb1239a8880c2a49e42ed8f970965a17db8d0d3d4477fab538444820870817b7220493d1cad0595122c886b4bf604ac4834639e71d4d2af5fa35288010efd620ef0606ac5900525094ea157e2d4e0ac7511fe41febc50fe68dce738b8614333863a035c71152b06707b7dfaa8478f32d8013e24bb875ed32e7d306865da8fabe4bee9f6552ab65a5a2b032cee5c6eb1300961ab5424b4ce7dcddd7ea6962b813490a5c867c3d056f642d06c0682244ced72fb53a4593190e0da6e4a8872cade285da70a8dff0c85b9288246b9ef60e76a834fdd4db27979a941ce898aeb601b8e1bb635c81d6df9c6a2110c581a5ecc3d5da2aa7fde9dcc9dd49cd2cda52865904720830d05eaf9621abdd0c0a8cd03bb723188b17fb92bc7e71f1a9711ff91472307cf65480fbf176f00c5b8b09c914a1b207b452ad191a1c3fe964a6674119982b0984c316eec9a9390418523a084958790a001cd9f8fc23c67c5db780efd78f0956a6d0b9631325ff4e1f495745e8ccb33f896544664f4e18da0895d9cc677beb821bee697b222e06d18314e08199f17fcbac44ea387d8aa4e759d6e9be4184d2ff4ecc41350d4a8e6c681f4640c52fdeb77e797b6718f0ca96709808449488ce8c421cb8990b24a433c090577fa68faa4afbb01e612e84768bfbaac5a20949d70720c9bd6f218f74755cca480c06b43bcb3c00efc2c5041d6079753da747eb601c8f1cd5be210c089e1d07f36b07f886a01700905aee7f70cf6de5387ed8ec06f9ddcc89b37a7c2eb0e611bdf7575822aa31faaa45c63d210017377d24c657fd330d0a8e8a4a3f19396bcc85b1f4126c3b03b63995a35e5c7cfe0fc46de53b88319557e729ce4d85d328b830473930f1281daf336e129bf843dccc54b0a2e5818ab4f096ff95a3c496f90a600f168153e06da41664b46f781dd4f4af6255fa5f6eea3b7d27cf15e2e214edec1ee61e791d7f936e8031fa10cad257f6b2916af619d8f53ac731ea70072a32a36e459c8bbc5d90173369233b7e0a6ab70180f08350fc3c78b93f03351b1fd5eac254d819545e3418139ecc7da9bc02205d08ba83453e0b3a9be081ddbeb7917a554f3ec80ccf7430f4949b16065e094d8f7edb4ed70e9f3273ec9b9f7ed90cf30c92410924690da4f5e500ea35238a1ad6c2eb67716986285533269c3f0dacba6858b3952da70715fc16f1e606139db28e5ab4c2ce8fb0fbe6b72a25a7395da8a9cc71c8dbeace952ac7fe3dc944ba9329fedec0366d0e2a6217a0f9e553220d7b878c50245c9a49d27bd5c52634b51dcc8dd45b4808d09ba0066f58ec779390a51a0040a250e786f5594e0c4ed9b1b256bd481e984bef6d06c330d142050e17ddf578de318511a7d1425e098187a2ed621758b052e8e176cdc40c46254a640490b52085832ba20e93f94e8024d508476bddf21a520f17dc1b01b98f020806b66015864cd858fa9372c6e2eb168313aaa52549cdf75fc8c151d3e5b5fba9426069e25856b45422d6fadd2a47acce4cb54f1319060b434c866d3e156a3e745218dbdd506508e6dea225eda0921319760132946a66e134227a87af88832f496ae53e5d30bb29c49e6be1f90a61040ef96c4b5067f3ccc8700847361e033c46c27104ffa87a87178bb265f29258c8d4d0e33979b7d82d607adb1f8c074623b7a9102ecc2e1f9253c3edf4eb4f0fc26dd0de5c9e05c6ae7aae8e1d74cda8d98535080c03a8313ca2acac438509c48a491564c0e1fb1ed896dec85ef7a39b8dcb3c0ac717c5a574255c02aa630dbdb3823afedb5fba03c7bb2f1301e46735de3d6741ad505035c5bae209bcfc6323099d57324705d7a8c34ee489e534640c35bc6a74b879ee5b0bb8dd754f171a7d8a44b37cd90d68bc41e2daf15f55ddb64a17566fd00ce697b4db33d86208976829b3e1f5a7416fd601a290010d323d3434954d93240b28073ffedc7f2b5f476f167bb233632f46a1a6d57a1424afdb0523cad12ff1ed84dfcff152bb6779b30a87661af3e9ad7fb2eede7911eba42d8ae0b3a4922f2c72586453a0903650a8519166838207c7e29c3969ff13a7510dcaf6e7fb6c2b548b49460e18012baef2640890c7d765f653850a98345aef7961d74364543d8aa69700cba09c95034319a7808a8cfe089e9c956d47cac62002c9eb1512e0d74bc8fc74bac22381a98142a690601f86a1a9d0f5c0937dfd851ce08c88be6e43d8fdc8bae35e07fb117fee7dfdd7947e29a0b55342762cdf8159d319e769ead88f9382b463cabf363df0670d7a57271494d8d2cebf1c6283f27485c05151e4b122244ffafd02c638fbb649bf153a866be4239af62f0c8fc4e77693d955ca92fbbb10924a373c3a78ee4c661e1ef97ea11b0d4f51817344d67ff2ac42ee6461c003432af9855a5f76d4daf015727d5087255605939bd34b12451b36ff1db5ad38dc1035047c221be5706886cac3d501648a329b2411e37be97a9a476fc8dd11013ba9a1ae93c02dfccbde868009346905d6b6880432c563f99dd22dfb132e4233c69e39163f8032cf66bd6e465a89be80e4a133c65b39b75d509fb05287e27da7d7285863e3f718c08bfd0a9e5c06890c033c7108b553e436f836a7f5613aa3d7fbe2aaea5d6f5e59fc6962a87c43f734072accebc95013a31e81a50c8f6f2d39832030f25eb07a3b04b8e0304d272f2dc9b47310febd8ced9ab4a655ea31a7691b6023ff12861d76baf6e918c29aaffb05b465624a89ecf744707e6e220e0ae232a1e8c551096cc798985b3194d07333e6bff5dd4829489e49c1209f7b6d2cb30f978bce64ea9b3a514eb020fb3bc6dd5cb65e8d14e833bf021be4561c39df4e9cc1790befaeec343dab7a63b6d4dc8c0a8cc3772b6f938b25e2a47f45d3a063adec573e04fa2b41aacc76bcafee0f2ab456f388583681dd8160ed31f5979e7dbf2c37affe648f6305afea669af1717ea1a819048f26ce28ccd529d3dfab373faa04591b04d031120367913dca965a4a0ab5c6c0832efd89e764974764b168f6c16b3d9b124cb9843f906f4f1a973ae137756158fceeca78b5e2fb43520a6aa41a07f0509c3dc1057b6b05db2016dac4ddd3d44aae9e11580058c0c45252fdc62fc7eeaa412cf92a3610f6d8b9c098aab0c4da270e8eed78ec81342f0696ea18a56125e3fa58bb6bf2e05fda17b92d7ff84a61b069885e3e2c8a17f3d4c93fba969632035108e96daf19c79eb521d4119d63aa2b6d9785009d4fb529dd4eba3484b45f2aca575dc62ab44877c0392f2636d703bd28822f8a1b6d747492be6e5318f225e454ad4115bc930ca147e2aea02782bdeb052789cdf0e2cc670459724114910d8f83112db217258d4bfe7b469c2fa200c6eb4b5aa9628aceb95502881d0f3ac8c1636157bc9481f0bd47f55987d50099c93b0254738d76692e00bbc5bb9ec0d53583fab86c6b1e87cc69889ce2166a2b523d900d449a4c5b5588ab53faa3746101609a94d39a0265f01b9768456ab700084f0b2942ba9891513ef35f793398e607f17e3ea46f356e429a06a03f91c1870fec3d1bad8ee1804755273326342522939752583b2fb3e0656668142f1879610530c4d576c15ac2739bdc6c43b51d00c1199b58442cde7dd02c4bae538d89c3a6d312e4c34404a4672aad4dc04f7b56fdcb6aef4353d554360b3a7ac18a71c39396fa62b743e3d0b008ce25c278fe925e3380090bcf660b042491d72eaff0847d5bc944a4f686dc8f38dc3aacdecfc5693e59bd66155894849f0f8261ea0ddeebda1d747489f70d193bbe8427eeab35a9562d1e052c379614341f867e707f4ca2ea893bd053a69c3b9c97d147b2c5ee2b4b3bcd1fce779d9b2a3ac52000a65443737f616f9a9e32e71f763e03dbe80880e552eb9f5fb72b8e9b17333daafeb47cbb7410588373140b4e77d0f3f93e248d80271aba536271445c214394e60b7ee14d3ac9c69aa2d673c088f097790dcf61d186b066f01dfdc8b206e6f97e8785738db5c38518c98321d31e490f18f82564691de082b51ea9fe89525d4b5623d24e57458edd1a479d23f278a43ec5b12610f3bf1c8a6cd6ddc66461e0d458adcf37616b4b1571bb7ffcc4ed3cf7b75d31cf4d58f96e1e0b1821e6037026069f56fd183c655e90aa20d07f8beaa23ced84129c32028e2d71a54470a21608e30f65c4ab1dcfc3a48bd88efd30c1d3dd112033ef59bdfba60ccfa263e6acee3be5e2ec7bcc14b63b47c2b07154e9f2188b670684890647fa2bc9696c915be52674a70b2c7075a7153024c9a8fa7050a63e63c24c3ed8918241da5fadfa5a1113ea0ef39c81dec1f71cf39b873bf893f22c10b37301dcb9d47d037f3035b31d1233f595d26be61d8941561e897251804cb52358f05a5526a25c8f2b8ebc75175ef74f271f95642730801e9f7f60ab143fa5e67ab97f21fa19f7de4384791109d7dbc79021cacad82ecacae773a034832cde04ffbd3058c46f8700686a47d0b8601121d031cd0defd98fc98b3b3ea7aa53ee629e5d986e79c31de7dc073917a198bcfa4fd213aef21923ee9681667df752800d91749f5180e776fbfb67e569fa4f80577c17dafd108476e9da0ffb33179227f4d0982ea98987b47d0a57350740ed0c7977a1964943c0e09ed5426f34a9510d84bc5a0436431734c68c8e8dd91d883539dcfdca55ca86040d78d83457d8084b4f1e35d218002f8fe22a4737df71b4715c4353e9256a42ed49808561b0214b5e2470589154dd215554b1969d883a0eb348f87e143eafa40df5322ea3351092e85710d90b3ed5d2ef0d627303885c01913c3d594f0b9178d7e0e717a8964887bd2af44c048c77337db1f1f4ba9d2fa096a202a89bbfa8b8bf1bc760d3b84335dc62437777d378c9649326031c3d7dc9384fbe4208f9f51e8dda1a48adef0491c16c3e0171480c36be122641f880d3b058c86199334e45dd49bcd30c6cc731de352a32f227288ed0c4aaa7b409c1c519a062644e12cd11f0a8d38feab8244ad032dd907bed4ffb07d2e6dd68003f1eb739cc03bce18c31238a918f17c889f27047d603672c2f4edb2ea224216ace1bfc863ec1090fa9c47c2fec402a01de34edb21a1e652b6865774b4193b826ba8d82d4b57c80ad1c4e049a174deb209be1b19ef756c6ddf69e9466ac05f857aa9e85a7b16ae8f0e97c98c5134066b472a9f1ea7ba83e9f32b84a9cf806ee0db79c38c31ce611a8d129ac928999ddbbea18ee87b08d653fae943e1950a8ada04a6118e43f98f310c28e29862cedd1fcd1703543290f5a4193ee2de0a2803944d7a0eab7151f2ca61dd325236147f3d525b9f654f802d17141efe2dc3e8ed1f2cbe06d76cce8370f00e95f71105ff7e6da7445f70cb6af7b3ccba7017b86410941438a7e620fb1c5b94ee5dbd6b35b6ea9670aa15137d462baed576c9a65217044ef94112b2dda9cbcd100d8aa518b904f5b0e002569f0fa19f87f47b78cf0ef9210d1a891317d703443911892e23e9125ae2c4636a0c262ce4e2304156aaf89b1c1625644d865da1228bd8cd37f44e4d900264e5a28f11ec33b6b3191077f5376df0200ade31d9e8c751b52fef6a9caf91023eb19423038a5e07d16068952599e51616ba175c74eeea2c6efe68942747f10d7b9fe402580280a34703973600f46cfe728ac7ff38dd22da778266fa5b2345ad57befbdd5693237bf5ae1b5cacd6126ce5b24494c6d7241d53b7d655088a8ebd5dd8989708e83f6b5ae48b393704acf937977a7a1cb4de08fa07c49bcafb10b01d943512a012719ae2615f423edc2d1fe611386339660cd297c28904504d1ae002c07cda01f8ded57d3cbfb4778d07462697b1c8bf7c9efaca93b5d2391b3ee2c09206e5b7e223e5760e41a6e76daa5e59a74e6e7e191ecbd4e6fed8d14966654fce19f251ee4c1f2df62023da152163dee32c199cf14b2cf9d41e362a2b77600ad9562731e6b5732a59033e00c9fd62dc2b329c47d783459504979dfafad2b0314a2ef94f77ecb791274648443d4e3e3238b1d3331812497dd087b9ab8cbe727080d3a2f7746e9fc44471ae48a19ebb8ce60457e19bcbabb745ef84436c3bb4b38a6337dbd1ecec3db2a8869a29f1dd49ad8c48914b4f19743891632a196b78bdabd0387bc8aad04cd7a1ed3a4970ed7d9e20302885b58f54ed3331ca784182d4e13911481ff931558002e7acea8abfc2df92b62daa0f61ba9db684e65a9a577eb6697e570590e5df385906e3c9b6d6b464631cc46ed81e80b723393ebdbe9951cc88ac74ffece1c82ce8e8a1a2542412666ff4e1e6f6697fb461143d20792a7c78330811106e87b71a052640ed28e7896995877e3ca97d791d6ee9c5a9a34f81cdf4c81c03b64b477d5066267a1bc838dff90719b7df7382d875ead54d30e98e68414cda9fa14ab826f93b9feb5bb90f21ed369ce50b4450a1dcc0409863cbe73ed3acd02d1f62b71528e1480cf03750ff4f6791271054aa0969d1eb289b68edb225063f4a12920a2d21f13a732e157610450d82ce8883910c28a23087dc097ee0805345adbe92e23935751b3a4d35a4e052ec0323de5e29d06b492040b900998589d9f9fb75a2a74b287b4ded08c23b0f77f6ac85cd2fbccc087ff5cf59c31e84201f567c32561707e35336487aee85699b2860f977669a2c9b7576b212e14ceed4080f4e33e59ee068c14a19772ecf9d16ed358d57495691bd6ea843f2a381dd2ab53164cc8df05010917e8e24a0a27f1ec658b039ec3febf54d4ef5a38b596165cd0f6ec71baeb9c9ee4c889055324bbe1c0d433c85129f4522bd6ea7befdc0133bba7cc767e30519251aec80f03e5fc6b3681e3b1856226273e329341e60fd59e3ca42c11a55816e6ea0b56a8cca5215ad6b11df3fc86c94ae10aa87ec2cc5d610e722ec912df82ca0e332340fdd80eff795f7c9bae61c233fbe9c9c5b87ce2f91a0616f602f8af2b8203c03b46b083f11afc97cc725ed368a7605c862443a8fef4f88bb37cd1aac76af22910be5a08f4ac4aba389cbb78936c1cf7f3a3c85084301299c08413ef92f8a842ff174981224f1dafaed98a3b450db176b50cb941a0def3fb52d1f2bb88881ab00ad87a9e14a7b8562585f903df48151894aa98159bb9d77e2f85b884c02c6f23cbec79c7c13de70e337815de75a1b3f60e0d7fc07e513a75f45d93b9b4e90109642f32c18d137d84dbd401be6e55dfab30714a360e26384dcca5715c5d9dfd571efa6a82afb9208092f5107a5f6db601e0733369b745805ad42d487dc5fa0f976b878c669af7455f24c80962650689461f027ea483403ca45542edd7ba11afb30b1e9a65576b424febcc88fa06a921573e3c8a1e37d593e62fc22047e9c6b5e69002ca54ed97d567827426c4cfb261ba446dac913138fb4d0ae8347a671995e5996f70e5d9f71ce0d01e5dc6f372809c8831cd18c94b91e54250322c9500adfa24c28f24e2662dae451d9051e7b6dac755c33099b56f8e60329d63534a5d89c12653bd95159a76daefb9e98848aa5195e56e5689b8e7cb21424c6aeb9c30e33afb337d0e7728e949a3b5f3bcc422bca96387b4ec038178c2ec42d38c32680989c02ab8b2a6d49b5e955b8253cb7433342f21a2dd35f1594c118a329d3fc914bb49c2408fe5471163e42eda207e6560a9aa10029b34c3bfa3812ac87e5b120b073483d78d079a0f132470996d689717874420441254e21a49f9387f04e1f4be77d0884e8dee1997f913248d4cc48fe00c922de8d79b4f455c1ebc106659ea9d22129c25b5b5ee9217c0b754553cc371eb9aece1090412e3929cb2b862acec8397f45daf0aeb5485b6875be2c500faf6185827495e0ca620b3e47639cab7cb253c629e03d087907a421efde377e8b109d1281c8e9d8852d13bd7e8ba0344c75b61c2cb528cd5fb6f53a137264fb45e89c8c302028fa9a6177ff5f939e1fbbbeb0cb30df1de5d62330b1395196046a47fe328413870b3390006338c1bc1e8534cdbd29421de49d6afa2aefa193fbe8951b688334805b6dcd9d9e4447516d3cc808b99bd0a75a789f0c8d21b5c7ec1082160a04b63f3c233834f96c6aae9936cbb4a814899e3d05f0f4511d83d85cb3fdf53348dec87d00d0fa2ab4dd0d74a0ab12bfcdf0ecfde43f421731484e3d5ad050a7512d98f7915563c4f17a5d4761e57514d43d1f2daf4b7f462c72f5c543af7e272ce1fb997e2ee353be693d03b37dbd2c4e376e92727525b71d878375b4741d592ed83594ca58af86d206e335337d41a6a2e3badb150415a4e95680e252ade9f249ba3c7be3ea394ffbc6242632ac746f970a538ef787749ca8713b4e446585f7137e2e56ab06bc75992c5f17c82dace8fff4f5243421d6d4172059fa87f9f4c8b5716f10ab2ff6af843f45ac5534599ed880653e87d9b6add9a6d2ed9434608721e2e9013b9e837e5d58c0e62da4df8d2fb06839e8bb982e44fe47c22d5b4b587d85afbe8b01102210dc728f703e6577a96f4264f0adc1800d4706e5aa511de0bc7bc12e63a1097f24a90cc79488c20b26ee2b4968fbaa12221dd7a209431f2742a941f2e0f94884377665e8c5724913d828dbdd9a6d09c97451be6df7cb962c14ce945771af84c4ae2b3fb12b5d25e14dcc645728b8d94875501f6f0827a07722a9d55386c819c0164ec449ab126696cece6709ca4030d879818700bd24c37273cccf185dd36cb647593436505029c4c6aa36d16a73b87df397615ec91dce7da8e3a78e67e4209b6693c35b734b3aff1f65a02845cec47d297a39cab3ca96775e8ab874272880975f391c56dd524003d2567f07a5ca8736b341aaeb4cefec2f67f8cc207aaec8f1fc26a9549d6736479878e66f2233b80dd68c111d087dd1f51a874512b8de38aa3bb96331bbeaf605c3420817be8b90f8c42e5c2361d3f1f53cf93308dd670c3c6d2d40ca0c322ec0c3ccd491619845ba9d84f7a92fe6d7c08502343727949f63f12c82a48e6b52437fbe7d0641f1a61cdf234b5ff309c6904a157bc4a187876e9c4fd3a5e38c84423ca0af24465e6ed0ec6f815c0e120d3235cdf07f6798428cfb85653330481378ea3454e403890482b628ccabf1b4bc34503c693d067f8b20c25000322ba35c2a56620b632376c6350f12aa5b91c024c1b10a20de0d664dc35fa1801f3985701c0fd0c0a3648b8732970646a630579b419e7919e88e96781b6a5ac343bb720b2582410142ef9d5dc609e1bffff12ed527f7701baf0033d15006e7df70341138e501e6fedb04cde03890e24d40fc4d6b8b7300e60597cc340e6c56afcc552f6fd52fb74839705790e50905726e553d450bc83d078ecbc2ad7159a64d4cc8e9a95a76a2a09c36ba4e6d31850bf5652d0ef0efd8c07604083ce33df963051837f70bc6ef43e4990537cdb8e49ed4c9460e709c21aec37785039f5a15e19c51a8637750ff66a00f7601ff8fc20680719f62894803cd5918491950af73fb22904c5b92f4927d3390f30c6c492f01b7fb6b04499895df0cf50c944540c29aeb8c120c4c6ad4a1799de5d55a000d8cafd7768130f41ae454518c683f033f53b2343fd438181f227d5724b012bfc07736535d7bbc3ed25b7f729aa142be9d8119c734393a8ae1840db523212c5ea181843534990d5aa5ffb5cca568e01603f83bfa622e5ffc82c5cd44629a478a0612be855830f86ba9b387eb9dfeb9e37304fbac707e43235d37d7f7e452d43962249bffa3d13f98fec1f81fac7fa93b84b67ca60b61eda0feb325b5b1a388a2ba7948bce1f2d9974d7fea08c07f68914ddd7f4bf1150882b1657959a159f1e3bc73b93f142146eb0ca434b1cedc339f93ff8772dc011ccc4edbea5680dd636cbd0ac65b71bf4fba8cf621482f7880c6fd5a2bc90fa973a4c3f1194815f52cae441cfb020451909bf52d6dba04ad82e9a73b7819e0a03991edc20d2f38fe6f4e6d01d9df772ac7054cd8326c4cdc72a0e9eac003bbb4ad67ba8f25505c9c1a6d60202af1898061076e37cade617d8112e9cd0275f2ee7aedff7537fd77caef09eb3aae3a7c92969b468b77d8b0e18c9f5c22d9feefc6ff68f54fa16d87f53fc1281467dea1240104c6026a3c0e755b3092324e07c9094408564903e0632b121cf75845d3e438bf29391b75cd28cf4755343a4a003b8ac9becc3b00443a86c1eac3fb7f37b3abe402808c78ea30ad4fd4db1241dae85308ee251ef8073686faa51bd97b6fb9b79449ca14120736073d07749a20fdc61317e830459c1fff2007b1cbe1f5d72a88d28391383f862208b1d391c35a1d33a65189d4820b1547e2fc783811934c49c7e8bafee40e4c62622753a00691d8cd32904469c30e49a254410c49ecb41dbcf8a155701912bbad065c7401123beb831831b1dbbcfe640aa480891db7044cecb833e990c58f778a9111542af5f4e723e8852476d79b1f0d16627f1209316410248168e0237637bcf9d10489fdb1b0100249ec5e6ee0212676379af0113b1c5e7f1207a024714a51c64bec60bcfe642b0c22b18b79c1608390d8c930a1612243c3344c8868880190d8cd2851a3c44c0dd728010510af98d8d138b1a18162c3362d2b593871343f1a09b258c344ecb8bb39c1075db46a4a3d1978c337b202f577820fba68899d8d37bf1a25c4fea413b02e80c4aec6eb4fca200c23b1b3f1fa9337bce02576375e7f548c247ec48e3b709a60052e787908dc2507245c3b457c2178f3a36122f6576ac20621b1e38ec7093020a4104410418b71ba1e9e64a1e9fc685898486a473f1acd5170fd24894ac4fad1689adbd78cbce6354c442522973c20db784d89eba512917e4a44b1c72af4b4d493818cd32304f0ebd1a3478f1e59a53b4a66123a619c748cb359e99fad15a5431062c82fac48a1b57b60246435ad7a9ab79500430c2fd1824ac43ae552bbf564ae691cf8ccab3c12f3ed5bbb12b1b31f381e89d97ab49d8f86056bb72f86865d89a8444ca1edc7a2fc686f9aad536e8da1f6a59764d0d55a6badb5d65a11303da3318053f944567aa1be549fe0073ca07d976cc96ea5acb9cd6a9996717da19e396756360f3ae629e504a7fc40c72f058b2d5c4efccc3c459a68c22afe91ae8a34f1c3957651a71262ccb22cebeeac332deb6e26e109ae75f3ced2cc3c74fe40eee0ab779d3dcc1ebefaacdd5d73602267d6923a13b2e034e1a172897977be2b33333333336b5f83ddddddddb4bbbbe9910a048bca75d6b955e95ea094e085ce12b7b2516bad9a6b55f39a39f74634a763966559d69d65dc9e65d676a0b96fee79bcd69ad5aa84b42e418d0d4dd3b46dd336d7506f6463cab4a39db44468527c5883d963a37da4716da76414b02b9ea3805d79f62c3c261cd6984941c17d1d373bd08763ea751fc7b99dab0de4616d0d4dd358d36c359d91e5b42e1634ab9a4f97a71fba99182e7521ecf314579a50afb57e33743c6cf051c16923c85b6f1f645cf63cec94f50ec78f04f18ce85ea2b830e82cf102c5a15cc0a1c890202649660697faed66b61cc771eddc1be96e66e6beacdb3aad6efb03d483b2639b998ef42d731cc71cc731534b43f711f1687f65724e9eb27f5ce03b73179eb3eeacdb82a392259ebb7f4c961411f09c7577b792a13fc2af51d2f0197da6a2cb0e4fbda6a0b8da33155d6e78d9c3aacc997e3bf7c80387555965fbc558af0645fd699031c809fe63bc9f65c926253271d1b5772d6b77edd6ba767777d7ee9d233bcd3c5fa06468c869c16ee62db899ef62ec3af6ce39d0083bf7463a8ebbe71cbbe79765d3f9cb7c76cba9c96c826377c6bd9dabaebb3b88e7a51fde67dd07199773eb3173c565e1388e39aebb53200078825717724f78ba73b71a5852a4555071f2d4bdfbbaa8b73eee3ce58f67e881b60cebaa7438436c50ba06a59429659e2ee8545ca877f4a3e00b944b9d524a29adb5ce1bbaef8766e6cf05695df823df7f2f5170cba0e32d6ccd57ef0a76169f2506af934b5dfe903a4b5cead3b3505ab32c3a118266be8b4c8789cc0875d41b6190f26c1f29cfee91c131c9738351b476f969deccd56957aa3538326ba8cf28a595d2aeb373d0b16fc1b566599665dd19675996f9dca2997da471bd535396187c8172ab4f2f0b777737b3ad37bb6287bba8ce2a70ac8499c70a8e49be3a73917d0878f65ac7249fb99ca091233c05d014402392b7cf53003d3bf7bccab818228c1efcc8ce9f0e131a48a77777777f5c7f3a7ec6e92a7bc7956ba53eb8dc76d373d1500c3c9a655996655996d5aa79966959562b9d5d7400c0e1054a084397ba3da2a37981cdb395143079ea3f9382e27acf566e60e3a95346ea64c4609ccc27133dde48e5e700f3bcb0f35138dff991c17025499058b71cb8814b6450899bffe010ad8f7654f29aeffc887afaa11ec76b9b5b9e91561f3503705fbd561fa902988baf6014e635deebf7001d2c4eb4214a234778cbf83272d10960ff01f91ad801def21ee836daf80c8c3282243c0590c8a08fbf742e4980a700122588843da653a8f78113245c80842b66b78f45fbf95029353c21810f311097c8a012a5ffe01079890c53b4fe83c20f0aa24512040bd291b480240816b60d94167cbd380d13588942060e60b0832a4225395c89010f3c386144041a621016dcc74794564bc7ef838c6bbbbbdb6af2d5f128621e66aecc332928ee74a7cc336be65d05ed0c2b6515954274d2ced5163df287fcec78817f8172d99bb3bc0e13b6e574429932a59486b4bb69b33103d009889820b15c72a9b7fd5a9d716a00ba9a14193c670d4140183b2bdcc87a751dddb80d14d215887938d77c23621ee99a7336f08a6bcd108879368e051c6a3ed6251588cabf207fac407f02c78213ae70adb93ac10a879a6b1bebc57ab14a05c46b3e7241af8d33ae3089559a045542acd27cc816374c7acdb78fe7c52acd790347216abce6e3f69a058524b14af39c185ce923ebf51c850f0e2e95b28d11c20a71571b9d95660ef35ccab8c43ec100fa4c6a37edc9cff45de6555a7b565935d3e6f23bbdcd59e25ea0851906695653cf322f40085d2ee7acce333f09318fce6761f7edcc54e62dcc1590cffc021be0c091c98a99a99ad1fb3143d40c337729776423ef336f8102d6ed6d56bb75eb14c63c366fbd0acd55bffdf19648bbc00c33d7c0166698b1d1053242f68d155ce9fd2365a1639c7126c8884b643ea5dcd14fe78e38249921e6e9f1d361a85cc9c12ef7e260339cde71af667142957bbd8eb89a8fdccb0b6ad606de98d17e0c17f41dd2c6c199e12cf5fc98592633f6f90c8e10a0b4bbbb6bf50674d425056d3f8e276682341854404fbd9bd743cdccbb8c049f20ece3adb020cdb21d648a8b2aa2ee69200e2a6e8c776dcc539bd896a7d6765dd77536b119d2d1e6e8a98d161280309d9d8631871c5debe3c9274a093cf974be59ef34e4caf5b1364645ee33aba47d4df21c3d7b4754e7d6fa4f2b38b481cdd0f3ea419a75c1930fb58159c1ab8e43eab4f3d1e6e4d3f9c9e7a997c0d1bab6655ba6cd520e2191ee6ead3ffe0ec69a760a3a3da13743a727374c9c82e6ea26091b30341f6f8826911e493243da573344419b230d94199a2f56f504915895420aee887211b9f99818ab3a2804ca1ebe422bbc4209cdb05152386c1fc32bdf23897934ef1b22949493936f6f4709cdd569073659a13dd4707d8f3744dfde3d9258d55c08af6fa75fa9c5aad640d38b55eda7a0ef916b7d7b47254f53954fe557905985e38910a649d19d3a3ee5b8ae1c7a067a26f290e2d4ccb007678635b5ca5adbe7373842c06b8ad43c4f530c39ae11aa18a18a1cd70f1f218b4e72f76c8fbb995249794091ee4827cd91e25a3b8d50bab18a66d9fc4eb27400254fc1b1f39e4b610aaedb4e4b4442ef5fa07fa4babecbb2cce767e00881afddf7a54e3a5b33bbae595e4d4c87df7e5131233cbb279b3a47dbb4819ee74dd5b3874077f45efef07c3ca5596bdb578f54d757d7aadb47d9b94a7d959c55a22e46f062042f46f062042f46f00285d85be7aecb716d476f3d85b9d3e30122363946dcadeb5a4a29b98ed68c5a2bad3de514716fb34e6e5d87a859d5adebbc9a95b9751d989116e0c4993c5a2d424e954bfdf4d1c828d5afbf7817c2cdd17783d4291d9defadd7efe6689a60fd0529e9ed8e585de2ee88354b8aae07647ef22e3da0fa0575843a65fdf4e9b83a65bd4eb9a38c110c953b7d24f5f8486295f51c22eeb8c335de1d443b8698a7e4d67724c13c9bef70ed80ed307ae699bf922e451b437584746039985c98ce94c992319a29ebf68aff9431d2119a32463a4253c64846cb64e12475cabaf52e6ac4a9f99c213c87ca2de2a3e563075eed70cdd0eea8e2c3c998b2f2d6532fe6e19c47ab04a11d554a98b2c33557250071c324f6324693036f7e74843e00087120094239ae8b23090558b36e629db27e83821109473e92748602f0ea3e9befb4aa0312c020e188796c7894a1c2d21f75b1aadbbbac9443e5561f56754ffb8d16bcba89cdd0726e9d7975c30587d6c71b2d6fdd47d25b1f6f98bcf59b1fe6e99cfb6460acb27ec385cc156fddfa4d6cae64a8601918381f79b448d0e2ad8f3e92668782e98075a08c0f078e3b28d80d8dbd75afe423e7add7a190b31ef76da51e8b9a5d273b083c57828f262fd01f758474a6f068bde5d19aabd6119aa175f9e9b86668fd0693dbdfa1b4dc51474847480a9930fce9e57aeba7d75bef3a1e2510e550b9d27d5825fd268549c4e66f7e58e5a38cd1cd0ff398dcfa8d11f350b745a38cd15ba7200946acb23e648b3bea08958858659d4b456cde84c42a9ba2e0c8e908bd75012431cf8eb73a436f5d4768ae80bc751d57b3a65b0f7c216495f5223f9e03a39cdc82d6e278e2868f426c26d631cea81267d09052ce09d699346ab5d93257b582748659b53102f2d47f08314f78e505fafa9189aa51b33c05ead3c78ae4638dc100ddd1c6a859ce29ea5682e3bdd349f881d3f10e69dd913e0e77b4316af2d46d8ce66a6a896d399aab0916e11fc306c9868b4d924d171ba3253f4f7dbc69f237404f7dbcc1e1a6f574de3879fabd90812aa0ec8ace366b7698c4838f7462055492c4f9d11c2176538d197e4842c2810e40e2fc1849cc0f5f68212629c168074fe8d0426cb05223a02a5eb082a40c8624a264528e7cb02421ce8fd55081166267bdf9d1273988fd21a13da821c68398a467b0028bbbd1e00617574d80c31a2610938444b4cee83c242926446d8849180685d85f4e152818ca31cad23279fd856b9c1113e7c73968d922e97afd310d88a6387ac922c88a23717e3b476277a37da4e4e00731490723e30c1c56764003212434a6a50826c424a16b680b929d235186293618d5e7e9d58588cbd018aeaff524f4d5c7a9e52bc8b5ba2d0933a8fc6899c0ec0faba6679ff6e23224d4e036c4aae94090346af3a7a066695a666afa16a1315c5c867e6a5d4e44f5a74504e633503302e38755d5eb0864c66d1a95bc6455c7798e0a428961c21473ce392533334f1a60378c5bd5b0565009e34726daae5cedb9880a1744d4c64cafb9099837e6c67351ab07df3d1751b9c18f214c8a986baf6f540e41021869622a413fbd54ea99568719421c0579ea5e0c424ce9969032060e3070a5c04a1555134008030b58194b601125dda0c480047f25ce0ca553a142c4f0f3a7cdc1456a414d09428b20640882074f7d8b8999417a4f8ba44c79ea944eb9312510e329b56d14c180ca536a6915219e9a9e52ea51ebc9e718103f3f2f0f38bc45143fd63c7dcd3c757bb73c2d1272c275dc00a70a8cb525a8c284676d380d51c39d3e2369b80cc3d2e447effbb9c809a137400d0bc6bd671850db3253ecd124f5e078a65d7b5dea3979f3d186f452937ed658a726f5767cb8a3774fa6eb230dd267259f12d3c093252273be36c66469ad4ec59aa5bd9c10e130d4c4b5e4a726f4538bb5b8bca54162158e1b431789792ad1cbebe5ca5ce1f0e92f309a1fe60140112fd077e2850666fcf4ef8c3b7aad24785567e070081c2b0d4cbc0d60fcf47bc43cd5e7d0e6c40b9a2b944f4a3d1d319e140e3da119b6fdbbb9d76a560ca8c574685eeba77b4273e5795278e565319757c547ebe580e91b59a77da8ad435194066b160d9206e3707c5b972d29d6accda853d363f628b6c5b6d7b75dd960db15b22534c3d96a9686a4c53c6c85413f9d06a959da96999a4d83f416d4b22594724450b29fcc678633f319359feece1b9a2cb9844774c5339a2bca452fe0f2d3bd3164500f54fce879b0284b7ef4b4fc3cfa99d1d85c8d5aeb8fe66acc5ada96b9cac0f8b969311b4cf0a337f4d43b8ee8db4903b49e0c72a85c2eea21f6d2e6e757f3327354d19a68f9dac6b3c2244e693e724e7ce56093bbe2ab730dd74895c00c18a09fb565adb552afdfe93b0b43e566d508c85cd1d551a7f904f2d353754a11d528a84b25aa4150aa50bd52afc0687a644c12778cb1304058748c33ee082262d5742aa59412a5e58ef5555f52887caa9d62a72318a00983c364599f7ee3629e9d9fa7d829763a9aabea5c26ab4299525b4b7efa1caaadeac4a5dc53ecb4c56fb3581c6beba7d3ac60dd8248a4a851204d62cd9219c2073d7ca185891e48204e3f25354bc90f59603880cd3003365e202a890284276670050a5e33e020530333acc0c245121a6d88d3b974da428f4eb1194ebf81823bde1b94613183d104bd0601d1cf1f585c396757ca11fd9ccd45c738230c6c655a83c30a03af4c49d587a57311667145cfa8a29f3eea3ca35e210cd14f1298c54398f5821abaf102d384fc60dec53c36cf9276d36eda9436a528a15310ab4e41a522a8a01ae5c5a39c4e413de3a98759a4fb053cb5c02855ee786a31e11bfee2d3e910f3589f5e7f98a74ee7b136791598b5c118cb4f17c2439885c3a7176116caa7fb18b27efac6dd519bc02d8672cd9005bc4255e170facb04d61e607eba48219e4f3751c12c98960b460929c4038f7e76a0d419ef0e18a6a5c573a0eb278c123fbd43b9e68af34155e1155702ee0735c419c1fc34cb44c5cf4f931696a569073f615a39de943457b53543d31abcaa2ca83d6cb0a1666db18669420ad9ba489de93aeedd5043bf75e94caf8e35cb94d42f98b57734258d5beca7941958959c60609856b32e08d3c41d4f36fc8469c294f4d3616ec0424c5ba4cef469daf213a6899f5e2a72faa6284b0d60df3ed41494d00c834a8082e23357a81e389c3e7150f183a3633f9e38a39f6e1a6ad6e90b4e4d2fc33474d201a7a6e3f84e58f8640587d35fbed38def24d4a9e9fd9da0bc9a751a326d91424e3db0cef4792ad281c9f4fa797af2d3479317ad669d7cfa298879a84f14fcb8bd3cb55e3e2b368e3fdd0f4912f154c51378aa49b46a9552848195668e1944e1f39ad3c87035d6dd41f4f661daa391e16615ca0c35e6202e2734438df5d29c488b796c5ea3ef50eec9af9ffcfa3803c47a358b0bca69e2f20c25183403c482754af313cb6805d6cb7fb8231704459b697dad30405f8b582f4e695e9d650366cd2c9923cc92af303f5f9d239242a694af2fd599ad786d07111a7ce525d2c9ca9f602f4f574820bce6a3498dd194f4b2b362e5a5d7a14af4523a47c43ca54e3e8e97d5a51cd2ba9a8749619794cf5c7942fc0bf34b5fa806ab346f304cc2e18e303eaf79ac5933ae4e5de115f784adf08a0b9aa1c63ca6665d1f5947afb18c5e2bf9c8427acdef674f1ff793daac984e55d79c0b9a2b6d66e84f35fc0a8e47aa7b2821e6b1ae398c0ff3a05e73981fe699afb98ce61b10e329e9b5173c20dbf82827ff80fd28d76964b876be07fe58f1e4bad367d7ddb454c4e6ad775b0f65aeb5d6ba39539a7df2bbcca391e172cfde6525e99de69dbeb0cb4c6961d2f49266187699a1e61af205cb68aec61917eb8ab91a8fb4eba3fcb878727965a2707ab160332ee6e1d79c439a68f08a6301174d29579b7677333383b43e8343b25cfbf485fad28fd0d0ebfaea729ae94a7e0e817933b4331ce58f476878869cb99e237a094a507e12a9a4a7d79a4058b064e153ca5abb76eddab56bd39eb4d65a2bfd9105b7776bb6bb4cb3dbb51c5732993c206a5cc9dc7276adddddddadd91723ec3770a06038981c3a62626e8c66a90c9da13494524aa9a6699aa4b5d65aa936e5466b5ab321f080c951734371e837664fbd4b792a6fc7f348e0b90aaa409d9a5f8207e48c6982b7fa7e0609008f67cd001262863ca1d4f3817e06004820000f0032581c117af4e8d1a38708e09742edda33abb5a6727efcf8f1e3470ef8691a9033ee3852effed98903f05c1280cef06b63002522e11380da5022448a1421619ab05aad562b137a88c0eae6201c848370100ec22ce68113c24580a700052c8052ba8066ee05782a78af202a910aa515ea50a7cc18f2a2288ae2cf01780c20404f8fd70022458a7805288001d43880c7020212e0a5f8b6a4033c20670051e34aa9008faab0c20a2bacb0820a9afb484d9f10f0809cd18217815aab04989941afebfa74367d8047bfb185084420021188400b12f02a30010aa8809c01e48c1054336ab7052ce0820b2eb8e082054650510c60200319e83400c48c2b9d6a806a40670495bb8005cbd9776b5ab3cc6e9652a64c993265cacd53b2e98d506f396ed9c9d3368ee3386ed3b2eb7557a2266aa2266aa2265a2a11d1b26a5f4a2bc4740aa419ed2ca355dec0819a2b6aad73be8916fc0932773aa46e3feefb2746b4dee5f0b68db30e639dfe58d1fa662dc5c211494a5b94528d524abf0a663a6817826a469513497bd1ae792d734e161cd14c47d3dda51ef6cacc943fb0c5b8d241da0d96c1cec9d94dbb67d8dd1dd34dad6dcdab9f51205caa0fab2868e90bd2954edbdac9f285cb957e3d2b39efa58c2bdd32b775a651c997acd45a6badb5d65a6b7796bb3a6074d0d4780822f4a03bc227db139b9a191a1990524a694aab94db3aee9362f764a336630ead4c4c8e940feb837934ee9c1f947e93c39a7d0d41f643552bf51c480e53eac9ba36737377edda2370dc93fbc574ea094c49470db7db874ea370bcdcb82a4a29a53b955270460757faa9baf452a9a79abc1d2036dceaa59eaa03882bf5349054c775315026a5946627fba2bde4a0f1fae7ed77373b3ad93a9c2b40a752e814510b2b68198c4c0e8799f166719e143dc9c9d2ce0e8b72a333d4321c352889e3bbf1f272abfc4a1b8707ad5466ded5db478e35c8c3b3f90cac40b3d6be51eaa1b49b230a82f66d56e74c3fcbdc177345b8e106d8a32fce4b8fcba3863f841e9dabcea4a9d453c1192e6e0f4a5dfe74a129f44aa51e1d385cea92eaa0e1b677fd4180a55deaebb8ad33d5584d968e71c6eaf3cc221daa3f4c5d6348d107b65d31e4ea82302464cfb831cf4543405a0b6e0e20d8c08b8ec9353d172161a459416206760748c040878b7a2e4242051c106d807161c2d8620b258e80b98e4862872380c8c0384287ccc9c5f15c74c4924e8c7bb95432ae7d2e32628cce05b7f45c64840e342af7c673911137c8811156b0184164c4901136643db0f7de1c28239ac480030b239822237c9ac4d29801898b148838786169226ad1bac10c444e34c91273d93054840f3a9c004b4cc472748ba061862d0ba1ae081f1aac518c438306cdb555e9a2864c8c21d92ab118aa988323adcaab45c52cb22a47dcd0e2164755889f69aff5aea88356536b9f6819430b975ba575029798c55e15aa00e1f8f5acbd3145447cf1a3fb0b381ddcfb5c4404161e8820b269dc1dcf4544f4e099e0fa731111307044dc1b2eb836ae8c14414324b163c310446871753c170dc182ad074334e9ceb8f4b968881f1586f0b19495986c8b5c47fc18e38396dd5b4f197de6849e3d68862f69f02422050214000819e4e08b2cd080e1480b9e365cd0440d39b842863462d8a6a8a184ed872b5903907c389ab28216b011849c2eac9802450d28d600c2a77e91a381f044f6c4142fca6510a00009f05cad1b92882f72c1e0678cc7cc3c175109c206836e1cf2baa3fdf9cc76d2c8ef97208d01e4d84a5ec97743b2dc21b03bbd93cdd3346ae01b92e54a1f02bbd2896e76338700c495d3c648f6660bcf3f70103ebba4dded99a0c595ce3304b06720687877775b1eba2e478a2b5d0577f29c73fa4b1a5752da26dce04a6ffb7c93c69573ce59ade8184747c64c293fa6593b3b26fca01b9cad622f88be41d4a51ed74a6be83b9d9a1ed312fc827065f873e5e379c80e778c89a999ac12666abaf48aee0e2a9b2b9dac66b0271de38ca8a09fb5bd93ddcc154afd82b652cfe438c9314fdbc93ffce33f404ceb4fc900520c7a5de923d77232c3597fb85ca9488d2ca9405f72ad4ecd66b110d70adaf1dc0aaeb492a7694c32e7e6d51a264fad419e5a41567ebae9c53cd54f66ecf0d3bd3126eb25a84b2de669fac281a8c9506989abcbcf17218fcb0bac9bb361681f56bdc61812aa15a4aee999cdbf04356b5e3153d3b5086d718d31bdcb4b46c109ab5a8eebda52119b37bd58557d4a219bb353aec595c36655e65b8fe0a964959669e0c8b588ecf86d8855d54d68a27aad2733bed6f6fad2307cf579c5649d82ba7d98877a98e2a8e44cb7353d0c19aa190120002000a315002028181209c52281280ba34cd56a0f1400116d86487654341947a21c866114c4400c820c21c0180280310620a454d1d80093af87d57008e107d0f382eae4915aff97e6c010ff19c4bca31e926f67c14a71aa581f0fdec3c384c0a429db9435c7e0eea58c0612b544439cac7356348e7d685eeb58813a6dc52eab77e3168d28f46b2a33a886b6d8c369c6d8cd12a41f546baefea52768f8167673d449d7143c3c8dd076354a33ef0ccf465dd5ad3d965f9f214e97c9e9dada26562ed6b237a60a33853167900c8a94e3a141d803c2c08b9528c6dcf56cb870432db74c442cdb9652d13de599880b539508fef38f34ed9bfacf37f5d27d2fbc81d59bd89784a8eaef3706cc1fc63fe90719ff582931f9f663bf21873710bd3a855cfbb93ad0bcd0e1cb5f4bcaeaff1d52ead31cba5e41d6709eb0865c05a848147e96e962c5e89bd67c2d3c07e416c9d7907396ecc37fcf9230f82112393b9a53363e4b608113ef2ef61f0551a7e167d4505da9edf1e5a684989ec797b2725ea3b54454e64911996dd8fddb78edbb2941fd2b9740d5b3374dee34f1c53c55b7575621bd9d9bc44138a4d7f695e11ce30c3cb073a169b9a4aa2da0d0ae844c81d281ad5982aaa508f815424e91c55b217a4d4fa8dbe5004bed959a3752efe50a5f41b38fbba57491fc2af4701f3a05d08914f3a8da5ea9cae9111f353ab850b0530f2c2f0c1b0354bddcac308cfb7d38178c5bbdb3c4a54b7271091620719333a1241d33170adbc45eca1058b6d1b7e9e89df4eee2cab85d4653a9b052f82a3caa2afd3f283a30ad6f651bc87f75b0ad2025f4a252dde964573d08629ed56bd4ffce29a0c7eb2a0e8c798184daa538ac1e4a020a19e3905091a00870132078f4f78e8d1396984968950ae4349e2ec0cad9e2623f58de8e705a84a04ec11ed69181b30ca0dfda17211cdf0480b176423f38b9bc5b71589c3294a89ea21b157a27ce450c8fd78366d95f6cc83fcc975dca8a99012b70becc1119a3d7186b7ade561604251dadf57aae54e633109dec715da3fc89afb81b4db292851c403a85cc85e59e68d41d5f4c13e13e5fefbc9d1f9139262bff219cf5df41c134b0bb7f8a25989bea18420e19e801cbdd483a747f9d5de180459c8988248c69d1b86a37611376dd2fd5a82766a5f3a2a2496892b6412ce7c9e437843c132ef3e7ba8d827c03bc54fe366448d37f8a9a6a3c178e5fb41e8bfad9841d76ca5213e128150c9fe7829c3f5d018b22f4eda8f19dcde6ba443c878b739fb9c636330594e765658efa24974a0bd812842e8cc387a2b84f98d5eea8e80565e8a2a848088bddfbb9e1ba7e248fcdef89f1d8f43ff913cb258ac247087244065c053125a4acd62c0f66511fb38c48a348d16f6fac7a4425bb5f57e05c9f9dcdd4c19890e0e45f88e09bea42046b705e27b1d3ed108ab697d6824452385cac3164b121638ac187566dd6d963e5775bc022bec77f442b376d6ba0d7ce5d447e439853320957734dfcd3e3b617fa12d759eff61675c562014e48a3ae0584f5ffbfffffa3800f03683455428c27ce68f6f74cb2a26a1e78d021b9eddff676442ad1bf58573567ce920248a863a9fbac1decd72cd0e19f96ee91ff63ee3e9fbb6a31dcbea6582fda9b0e74d608577d28162998567733c1e8f05abf1f7b4397f7f0dd78d8de3e251bb38ffb45c041b35f1c17042714e3e58d3e3f5057e475679eb9db52d312bb8517c661c349fbdbf875bed931ac4f3e13d45f1861a7f51c82acb4d790fb8b086417c95f08724c26e1f9c8c0900505ac1d6053d9483ec5266a5d08bf5b5e31abe97473ed65dc7f5e544d64caecbf324b328e004022cfae956db54c9d4cc9c4bb88e508d9fc08798667c2cf81173582465b85c9eecd3dd78d88694dab70191c243c688955a14559cc0bc0a98980150496796e5034984b4dbf27d70da916810652d2b4d5773308f1ffafd12ba2f702f0c08579aab66ae5fb9bbe2411484f5c889f542205d7034a442d10a80bdc45cd9827ecc90d2666b645c5522f7a5e6ffb1185bffd98c26f4fa47254e5b3f6e73c8791828db59edbafe948b62d96e047365eff035c38aceb228c44c03f08c14b289d3c4bf0f3870d744f2e0fe5929c94119143b2f00d91d96f7024bebbc4706fa8f776f4b0e4e0a3439211bcc0bf0f5ee0dba3784a02ad56e9b63b234bc95ef293ad38f0b4be0d5557ab92bfcda7584424cdfb3fb744ab5a32a68c3c8123d903fbf5ff1ea750bd147043741d1fcd8a47c821c6707650392b0fcd35a84df178cc7b20bbe906ea65f076748afa2bf181f8cf82c06dc4fa1f49050cd715d25f1a4892a222609fa81a44237f8a5f2b4a25dc33325452e39766b82e3ae49a8eace19608e1bac4a3cf33e996a277d553e2f6136549182aeb566a4b74a4d2fe85b87b54bc1ab07e9515b437696c63f30f0ce82e198eb91655a3f7277ddcf04ae9ab07926dca85097e4a7aa0fe1756f55ad8985681080a05e79d887c4c5bb609e58367968037b0a8cd9abb4cf118785c35a2b6221749ab1e5e4db9c173fbf86d457f1ea0a93071fac4245603e6d247ee45efe738e8681718d05c409f774d73cf4cb3cecb94b4d45c0cbc0561a2b9c8cb07852e6c0ca97617539d3e6a022ef0b5f26b50d0f1b0e4b7a7a257f25e035e8161b555ec837e9614b37a90d6f917de20d336dbada1941d6cfc77963970395e7eb58397afc2b17dddc72f806d46ea3a63f853f441294c9f51a2bab0f0fddafd486b2a7efd50c729ca254b72b9287a7cbedda89461754223ab9483d44aed23a55402cbacc6aeb72e47008c2a4af8f2a89b9eb2ba38b32d90d32ef2950aba337a90d59ed995316b732c0152d80c2e62fdeffc84213115b157b3cd2e477fc1e6f1e4ed1ad8a78f9c50e50ad00d334beb77d3634df39fc58153ba26d106a972e60b4c99cdeaa75ff5c15f69db2e2c6c4c248bec2906d9110c914d61ca3db0003e66c47693ab7ce01a2cd304200038695ef495ca0316ea2f7c6916944d961c7863c5b7c342ad5c8089b5a6b472039b0298e3ca3e181820ff43885a31b5636a93fb35ab62b91efb4deb14aad3229750e1c4c4cb1a106056fdafaabb9624b707e596cf82f2e79f50972757258a3c6f6c18793ef332b2195cf4a3a394fec721dd709782516283a25c29a1001e36349d99593205e557589ea1fab0cd896c078e3a55e46aaca94f5e5accab943fe0faed6fd5e0d29aff3cc6a2dafb23dad48e724ccb4ca404436733d3fcb4d3c2c8dbea786615eaa6937ab03e31345ff4355cb46061415196eb1c0b93035632baf9e0bf49fae8547636f6b3e14d71ef55992819b03de9478d5f872a0c91e37b1931fc4fe756a0558394e8f2a5ba3167e6aa0ee872bd97c6a720db711a1e302b136577778c20bdfed633ca331a97360d7da986b3df3242d44e077e72608e55c6a5b251310f8e99d5bf667eb285f9c10c496db2bc1cb81e5a818f6b8b31feefe30ab7effb78443b6a5b5709fe4e940b8eb4e7b3466e9b42b7b207d17302fb42fc754ca3be3e709b5ef5945ca1b3c5c5e9f5ed8a30e567003dd518b5bf3ea8bee48fd9995956e6f500eddbe61ed0442442d3bc11e14d8c4bbd0ac071afd93d7267b9b41ed8fbc4cd3fcb5a9fb178e1548f03b2c221930fff2bb6503eb05a38446e6b3c968d49ac8f056da7624be82c8a013ba0bbe0eed0aef462e5080705637b51b8abe91a7691bd960d718622401948b9a300728ae56c4fbd92b36bf025725afc0be098b5c20ea89b1cd810fe5d8ab96df77723b4b26c533c65b0cb227068a01806e6fde1e3ca4f75d99a3341809ee3a956f219a1c07da907cbbfdcfb22d56e253acd1d79641e0bd642c1910feab51016da748f9df89f75ab1d6245db7b24271860015b3381a10c26c896e1c4a4ede7157de275194bab03785216f177b7c1ee651545358a4d8199025eae1a65a9c0d9b0f25cd5ad5c2ff5d1479c7008a901770e17833ed58a8d929d5372ca73aab2de538a5c0eab97e71f9ab3536ee35f4b440da85cd85f44bd5690a16d2b930a11d0888f8ce5344f51cbac912696bee2e563e3ca5d15f1f49ce45ffeaeaccf6d0360bcadc0b8e7f68e4d48105f6d9042f97c4cd9cd18db009557e80795ac18da3804a01331aa408f560113e38c0bc7da84ff7459e0fe50764b4a949c698c1b19bbc9d4e43887d367eeb51922345663abebcdfcc16a697c9e1498bbe1f6d6bce3bbe7b9f4354114f3bdcbab827f413078bfad1b9eec1ef26e64d170e7212cdb53e6b51fd47a52558ece7d785c1625e07bd5aa23865f86d793e1bb5ed69d51a770c560c5c03f6860b485b587d2c4b6def9275c9b03f8d3f99241a5bf5e947db8d10bf1a87229f2f60f5b2fec79709b433912b52d41df36667e75d0916261de4ce0cb7f1bad8fc793c8ed7829990e0bb0aa0bcf82e2c4c482355aea434c8e50b124981c595a2baa803a81041731b7ca92f423d45e7eee63c70adc163d0bda203e8e4aa0f2bc0e0abab805bb5a4eadf4fed43434cb7656aa6a2244cd671d25fc0b690947b64b51262d0318f48b0fd7157d5b05d0ea575fae153ef8fea5702cc65cccf5e5e603cbc443121ce795201693c5ab7ac2fa7af989469b30034888970a6ed36d250dc4e7c60d6bd8c23961c679c808bfb6a28a97d06919ddcae5f2e52c675baedcf2661996556d2e2e719c652c2d572c3927657507d7cb0f2bc84bcf254b9683e5f7d29f7764157251f9cf68856cf0e1e315af9e816b3cd9d1ec93a85dcb89ab031051ff211c74173f147750d9a93c42536a8ac35ed0cfac68fc6bc957d0b27ec8acf2591e7025fe23bdea21b964ede69fa67a75cf7bcf74acfce48fe1fd5c9ddaaaa31e2f9473eefe3451df6c4427b4c47c44ddb1974639ccad26c54b5e44fc119fae1f04dd3ebb018a67a13d99ad03466ab5af82100de747da4de1ca8ed86e92d656f01118bcb3b64eab3fa5882786985c5312052348b0719c29a908cf50cb6bc084359eda5246733dc7ff34bcb80ccaf2ede8a3a501423301f85253d96ed290b514c32da8e95e763f6f8f4596e26ba08e133da19f468b934cd38bba0ecd178f9d57328b75fe6899d7478f4a1b1ef12dd639ee8da5970cdd3d5b9a3db26fcd0a618f964baac90f876ad838915d21dc4a8b7e2187f93b6f7ee756cbbba6e65c0a773b17a5d05a1a0eb0627e32254d29f6bcc2137bc8171f9aba6bf0c14c252552bbf169d52aa29b1452d801c2fbc2737ef7a0c6eea75c73edbbc76025b7c2e5b173d55cf8a4417d3a9485adb282a77bf9c8657f7f42c8e9f73d3f1fe20da6816feb48feb290b9df8b728d4a10d454c8ebf50d647a640ba3d614d2bdfb4fec046f6ec623a93ed849e635362d23514d184a7042b5ae45e9de1c39c5f50f2b5f7e25e8743f1892b2126e28afaac9f6d265c4db114c9c8d6c04aed9ff2709034fd2815f0ecb1abb84a41d19bc93fdf1950379242a7cd6b32ab257e905210dad65fa89fb9508e3a51345856a794faad129447f9e738915f4b3508876e08957c7a0c56c2c92d22b45b928ff5f341fb353d967ae34bc010f8771f2e897ae13d447a82139b05e16049d1a50387e47204f40864c469f5033b1c9b8f4f81f2968830f58baa951c75570e430796d53713a8932b554291a3a9ad64425e25ca1f8a3d59298a840481533b4f46154812ec033082cd6b2b4bd2d05db61829d22ed983eb1ed18739b25929be7f820cccab4288f7ac046bc41dacd5944a03be4a60c08e2b500dab500ac085dd440e37d92c67044c715947ed2144ce6844358a4578732bcceb83a89b4581848b5e584c6a7de3c6946595e5835b310cbf2d1147d1d622e8e37a479297c6822702f8964949bf103d1abc2b347c78aba0616a0731fbbd44d6343766a8ba9bd20ee53e07c9987a9069e37367c45d68f726a3aae0ff94d13ad89154eb43c63137062249b74e98ddb1587b8021e5d8b18083845ac80eb6afa7d3419055caecfedfd4f96cc2b9ffc23330dab1270546a58090044f4e63a1450d82d81688965654d6c296f0db1f3272bfadc75b36a055efe0469fc99d852602df8042c0b1816e8afd64c2c09e82612075f0b8e9c2ac39d391e1a099c548696650ca3e465208e45b38ac3aa79d166193780ea3ea9a90c7b256996d81d827c400ebf05cb56bdb1f7b7ea5ad4a2a61979ca407c76eb012493bf104157f5e6ce125583c66e4cca58caa7a9bc084aeaaf417d8775c7110509bf469a4891cc7177a3669c692c90ae716c77e6473a5b16a7fe8485db3cffc4f45f2031a03b7a723330f7d56fdf760a75d8f8507dd954254ebf14aaab364ab5caa1ba4a300294a58cfb48b6e488dec4b295f10e622669be43cdd89bfaec4a30424262f5de21e40d5c73d5d3d3755335e26078612253bc59f7d5e9d8738bcb23c349aeaf52d1efc5602968c26e4b181c0e15fb66203d7b966496c182794e76d181169b0fb740621c2bcc7b34b32d9d38c642938420891de4fa02314bc9f50e68ed05fc51992d2598df12cc0326cffea6f054192d9b923c03812758f54a258fbfd913580442d51979ecca682ff66cde115f6af5cccaafaad16e60140e4a5aba538962064a0806d4be62a2efa6fb5e78815374bfe131a98d81c0376bc67a52f58f37274672d6f03e858ed766af871e6a5ce3d6991d036aca7e2edc38ea8b2d84d807c8bddc048c0ada0b20802ffb3bd3f7d9da93d736e879b8e9b1ee34a065987d6736c76c1c5e63a4351857c337edac5d9861cda44222be6a1ee827baaa102293cbc24ed65bab420101f144949671b9cbfabc79c9a732cdf9f7238a3b8c413e292b01996e802f86bcf2a2fe870b4f5d59ed865f9fde89549196ca71f7ad1101340e9db7e7bab16ee97916f49d68024eaa5e0f43af918d8a744c6aead0154704482b458f12f7374eef7a2e822f12992a55217455ec502b11fb67c8738fba50a5bc8590b1bd12aa0062edaf8ae823a56ab95345450528e2fe8dcb147669c98ca29b663bb857827737f000f7bf5b4e516644627fbfba5a13a2c30c3a509a005ce46de317c9c92027f7be5e05eaa3e3671c2d9f21183828492223fe0c08215f571c1af54d33d4f1a51b424a8c5a96ba0c384687605736b2dcca7e8bd6b79fd1761c1e6e42f9a0bee9370eb44304266ddad72412e86916cd08a2aca8ce49f00b6523acd653e36fe482dcd325ce1fd5f8ea916d8a5ee8de2fe7328599eeeffc443c8c83f653c81c59561779cca6403c03f092dedf6e6805a44a0eb1715fea52097ef096f00897447a1e68382c0208ba429691e252a87c99754c4879f15834fc614b23a3d12847102f3e6429fc3ef642c923962d3441eb08c9d770e5811fdb0705e2e409fbbca37ae35ace3efbda3bcaa8761b5d31c06c8c24fcd49e177797d2442f06efd8e77fc521d2356bd545f49b2bc8a561ec7d2ccb6a161c2c21b5a5409a647c23327fbbe7124a4278f316df0a5907cd350a3b91066f4b0d11bfa585f973c26b94fa36739c40033381161bb5f475ec0cd64c43a45f57cefd478a46d7e44b558f12228ebd6a0623a48bb8fc61a5dbd4610c9f816277f2110a1a7d8dd0456dee588680cb024595e9fd0fd7da1879f15bae4ec48fa0f32da853998e5a6c88a2e09077709a3e71c6539e804c57a69391ed2de97b480c86f6234039711b3dbb269191aa312be1370b148758cb52473c69e586ec27fb1aff74fb539fceaee9e18ccde909075b6429aab126bf9839a4acf7b143f58372e90e744f1bf8b313f87b9c4d4944ff07174a30afa84145a7b5cf50014fd1a982dda77c4227f0b788ade3f9ff955f1e92d98d2dac36941347b335fb711bdbcefbe22f91d7a499ae5a7502d533c3d3af0c25cd73ac21abd21bcf6d216ba630c5705432b70724cc43c588faadfe5dec5d8e35d035181cac395dd4d286f2c365f4270724ac63578ee8ed50c8d4ffa3c9ac993958d2d14e115bef45570cca231e4ed2c5c6c044b7b32181d18847dba60486f5bb5c8f6051cb4701c3d0b04c5238bbf2f065ede9612c60900af14c2c8d1058d0ba40cf92accf1271295f964a0c9a9b88be24ab25f42bcc72cbfc6191c25e0cfef73e544ea21efa5b3819c5456409ca6b911101b30f5246a87e3a1a02cd4d6f50b9276503e756b1330709828c635da8662b38e1fa3bbab7a2b220b7fd116b6d45700b0ed704cd61b455246d4b855bf43fe4782620bc85a4581bc6bb2ce8c54112adc067b04519e3b4d0940ea99c532b216f0f7e33ba95dd6806cc1a9160c951b8de42d064172cb8563be3bd4e815a5809c508e2c01f3440594f74dc6fb99f1143691365ffae2b4e22b641c1253064abcb7191fc65ace105699db7a616bd101a986fd71e5c345064dbb83e1213f95c01c21d48dd21f39ce70215e3cb02f1040f5d47d9354ad84dddf665394b9ea478e20ed9051e428fe0aac5ada34b27a5114266267dae7f8595e7b234690998317919050037a42540b52bc3e057b24dc9eac6b5531915d536c85bd478d61606c9119e660a6a01e982231d8e70e6997939d33ee33fb26e1db1688aa7f6399dda43d72064f0dc368e0b0069186ab479fbb1727b7109a355decfdbc5f34dea8fab9f8cfd79431b20f05fde0672fb1d1a1a55ad0d5fa991e3ac145afc5d7717668424713b577fbc288e97e382769ab6ea0aa738b5f3ce971023c005d96d988e869e8733b0ab6014b419aeec4ea40484e32e4d9f95c94bdc9a53d38ddc4acb8aaf4cd9f25efc4f66444fc296d82649df3967b21692ee2b3f4dcfba6ac864348d8068d65bb8a1656f96e065fae246de75c536e76fd25ffa80e794b15a94905a54d63efd71372d5fb554d5f75130025c169c2475f24909a37206bb72b6ee9809a3561020783c894749e4602bf163fd98c5a8e1599dc2fed9c27117cf0ce7d5ea7cafd3167e93d3b90f3b2ed6a875c9e6e0c6abe7d42f4398fea3e808c3b7174033a238c83965a581557319767eb5ff6898d3c6da8090192cbbcb2b13783ea16422d64db54c18d75610b65d3b62fa32d81277d4cdfffced6303224e50422cc0613c6ad73e39c1e13890278897a9fc662488a9962ffebba368b2f6c3d46958bcb63a6c2d89e5d8ddb85a6c98666f9a092396f1ad16543cce5e90d0c69a8bd517c95adebf7a7119a3c0d468ca28e254baa104634cf2f9ff63c64078a740ad38ccb0ddce88cd530faa262b7727499eb1fa00a2b2d54f1840c8d13b31a0efcb302c12c426a1d63d151fbdf32fc81f577ded8f534bf8af537ebc2bbdc824c3ad0b54bfca6ea53edc1a41b08ac8a7ab3417d5ae64757d3198f065d7236006caf6b477f48dc18455abcaaf39bcb2a217ec0c0b322a178e09741a07bdf5e94a3cb0fed4c557cc3ae4c8d457d258182371d0528558d42ecd45bce68aadaf8636e38db64b2d4262995e12c1f91189301f94d7c02c5da82d0e3aee2199916bac3cec3920524ded2eacaf045511c74034ba5724f93f57d00ef78d384fc08cf8e60c9cbc78b4d6a781f5dcb51620420cbe220991257664b029181c003eb9d89a88eb24c458b5d53542ab180176c69a2cec81fc0b1aa3577e9b67d461113d7190c6ea8ba6d44799cd741eb46b43a8a21b38d8395ec154e9277ed1fb49c36f5b61cefd8365840866a21f30bbe8cd703c41ffa31418981dd4a9aab220703d8b5de65290ce091b8a492c6c1d29c68552b58a15df58b37fe7a27648146c45d10e276c9cad63f5d22d98cb352c470e8efcb858db881be27154be0e4dd033c638d1cc49541deb6b90e5d878de62c58fada187452029f7bf314b3cc7aa8997aee0a326e60cf05c4489d40475d154c403c2f3924b2a85fb9306fe0917b0cfdc1aae13763671197dbdaae78bf335aea8643549df88114b2e2a9c64c2f0e58c92b77eb52d399562977615c4823fe17c33dbe9d09f62bd2f3faae9ddad315e104c5e6312d07bcffe792d866e2b5cc9bd7773b849776fb5e79df2f102a48c4579a0b64420f42aa61024782873cd1087b5f927c301fb06cd9d844b44dfde456667534d2e7a9b1893eb9d020ea34ec99d2ae9c4253e02ed221ccc084159635011ff1e9549ed5662163e43a9e15ebadb0b38fa2161a7ec29fb12568e763a0ad11abc0a8c6c3f41761bf2523513114b0390f8c17a4379c26bc66cf1afdfade28c5e47ae53e36871a57998278771fe257f86643107b93090834ff516af5ec7b49c2b2ef391e0906ff0c8567f4c8eb082d741a3e9f4dade60c97e25c14d17e24ab234d046217af976dd85ae0c801db0c79ae2bd879ea91ba10bce8b456a6c15f38dbe2b4bcb500bd0b5360a4cae179a71fe6aac4b67410dae6b2d65240f4fb5aafdb43888162d5e99ad03e84344b11c4e6b3e4cc20c12810128bbfa01b1304a67e8fd97937f4b6a246c190c9e2ddfc036756b91c91ddb02ce3f04b4045281dad8c70474a220d41a6b30dbc5628564e7497d6dd6b1eb67be7582a3c494a5a26369a6fd1ef05fa0b4b0208567e0eab5203551bf26b4da7daaf62e64f41bed47ead3f59441698f23d23cb67f0deb3c2ee0498fc242adb4dfd3509f0cc4a31484c239c724ff416194a5372a1b0014a96443476c623f0acf8cf7a1d5d7cb8f4e39433d85000a4ea46e9125bc8fd8b01ef1dec581680c36c0e3e867503847626372e8f465febb14b92357b4f8a0e2c71ec372305464dc80318c7e91422e95923182c9aaf70a85db149dfa605184de1d14a1cd5ae171eabd8f3204c5c29e5645701b5683e5615186aabcfa838894c4688898cd2207a88888349ba2e5315fb679ec933461c60fede983cc09a877ede71ad5f54353257b9a1bece7b568be2b2d9adddc2ab2bd1645912c7b6d15e7acaa3d0e762f21abb72ad02c2f02c9141ec32fde3f0ab813e68ebc1424254860c3226d0b88e8c959b8d73202da45f5903981fa758a6e51f70aee60314ec5453ffa682042ee229c88196a3bce40f90fa43ef301c3d9334b319e84a95122d109647b273c6bd3e235e305c400e497b8cc7635a779a2109300e478d3aeef1b45aac2e8901458494728276c1de93b440fe65bfa7cdb3a28a0e2a6b8d7481b5ab3a1745a8db60cdb224395be565738d500660e74a3872f7f0f9b1dd3092339d581cd92118dc0a55b9ac117cedc0d2006c0c44aaacb7e684587df5797192b3598a0b36cc0142469a4f0f70564e3c75155fb885fcddb09202283bca17e72a019f9f2b1b1ac4a2ceab20901b3764afeeef4f1ac6c8ce0af7c97c01548a64ccf3aa1bb0c903ce8ebb44d9a8dd30cef6c79782a82c98478c730828cdb3fe92ad701948899b925cf83b4c4cb381ca30e3819a93bb492241c1384915572fa07e24eef8d65d5a8d5314d415523d219c664c52cdc31f6720f1c48515916e0b2c9239ad3b3c27bec5a3b6fdbffe3c8dc0da90705860854a3e2b59dc5ad3621217054e5d236c726a785e73cd9179d63fd0c47327772164f0cf80f60363c816898f23f281b279059e663aa152a16ab51a5a429a621205b0a7f90aa3c4e2dff1b054fcd93af4b8e249a609de1c5176a785b12d101370615af57a58d742b1d49efc6b09e1ee535252db619cc049ed2adbd9211f379bb06d52cfdc40f4764d139f53c5b65d6436d13d73b481569838e3bd1b44bcb8002864fbe7e1c11db33347afc142d3373bb741d31b6be36e82767afe8585459e618f49a31be56d119939b349020f47c747fc23821e651dfce5e7c9d2b0fba382f9b273a6474249d316b835cea4bd8084f6c2890f2346693326cd5aeffb02485c964d561b07df870c731f18a7f8cc53de964f334b2ebf2d8558a0114d0932c1b06d02f216fd2998dd154c2ac4654e26c0ac7116906ce3b5c5e53aeb3a56a465e500fa852b5ad7065084903fefcff76dec3b670e6df6c8fd273f8c3b8b33606fe52ab7ce0928f7b4d20297d2cde01a6463baff446ec22899386293809d16423231a78ab20dc5c34fd39eacea7c80f3bd66fcfc4f951914966fe3e787fcb2470d05a9b0d50dff8bb98c238f48efb417c47fdd33694429a92b721d2f9466975d14927c1f57f74431dd6ecb2de10db5c2db6756d731ecb4d53a710e095ad630f1106dc2aa109f6aa146bb4286ff1dd3df10aaae9103191a8616f39fc25e8bca8dc3a6060eeef8775c86342fc496e18be385e93a0dbabd9d6eea04f8704c682f204629c8eaf84bba02c6f845bd789c2ceb307c4cef93f18b52c053ccfe0f91a580d1862a9fd07ff5691a63220e8da4d8606bc6717ca9e9db46ec3e067fa342f5d6bea8d1fa70ee09af5e344ae82e743af0feb55060fb58c14175c2fb92ac3e5672d354c270da1a1c179c816bd1b9f1369308f5550419e1086f8e85251081a530153117cf094364e74d26321a9a35505c060b7ccadef3be13a10680c78945b97db88626b5039df99aeea0b19e9e73fb8970e2cf7dbf3d6516f18fe2e783c20f5390b9ae00683926c639c41be4d3a0ae23cb2bf026433639a400413ffbd128c2d2ae4881bbb83679dd935f09f95d2ca387f8369812dd100c839ea189fa6b0acc711cf57029ad7914cba159fa8d426d646cd86d6aebd8f63a4f9fbffb1291f73b55c3dbfeddcde8e669349d9fa884cd11cea5ba24122ea0efebf119fcd8e60fa5104cc03ba2204a73e3dfa0cdc1e75ae158f5a1a1f1222ae3f8d753b3c82c8902d7a31eea7d665cd300582237895836231d39c50681366aed62e1bf656662d715cf5ede9a9912ac1c70d6e048dc41bbc647736028d784e303c62d008ec8870ac588b865843a2ec83b430a2e13e16bedad4c8d7cfeef7f6111366d6c3b086223b782c8347adc1f5851a24b2346ba1e6e98cf8918d437f196d780d02fa26b4b9ae7ccaae7d607cce4733427f89b7a0adc271957924690293090595b9c0011b8270bfa65e14f6c386cb58f04f35f81c2098151dac6c384c65dab68e4a444306559e99d72756b236d7903378c8bd92b7e24046186ec47a336dd5abfe99207daac89827782530be56522034405a06ae06234be6be05bb4ffa7cc921b916d39f06703579af9e78b0a07a5e112572e075694abeb3fd330fa810ded3514f6f1f9f0d59132a0bd03b3750d14172434b3905e67415eacd2ffa6cff6db74a381f737066738a3884c8aaf0100a6d38272e7367c8335723d23a61bd9414ab2699fdfd495b72d90bfdabe8661971f1b1c2bf1633f5170a195ed97a8066e2505405d50e2385245a1aa2cd34ebe9516da4bf134dcaaa41e17886584e8768fc7e3125ed62324602ef989eec3454811c886802d2eb1948d406c6fb47235b9bf03418a48ad073d368302b87a2bb6929a795d9aaf400751f9d190d86acc35ab72e68bed12087d4f1d472f995299139061400924bfdb21142c059f76070764a7fe312c13d98dda8a32e5bf4148bdd4d9d2bbcfd731a6764b17b881ee87be5b7f6275eeaa1cdef5d01557416f6585b87522958b5c1c063b009cba5f0608382d2276262d735785d0d1831dc6f290311e30a6ccd8b921fd8a7001f4606610077030dd8c5f6aa23f89aad5c055e47df0077edca3847fbf5c6e79fc48956431481098dea626348e703da8c4cbb45b9cc41b6057ad3522b1ea43f74a7bf3ff47b9fb0a752b4690b046b7889728487ca631c930c4296e90412163d8540d92e3078db65f59195045d36527a553f3d7aa7b3e70945c0e5bada8036f50eb490ff6782cb3df6ca0b3410443a50bcc3a4e733daab956102fa0d7fdd2053ed44c16f0fcfd84228ea6bd5bd6b5765e00659f5f75211582779ad3498649a7af18b0a49a83386af756a764948451c0ddaee01a3af87535985290d90540f35fd6a4c261b437c48588ce0a12691fef668b4cd186a61ad4310bec962542446647e622bce9895a98c93388e51514fbd8d77dce51892a181e08172507703c356f075c70fe8cef8e0cd768a53acef6c5ceb0d7700cedb52be9ede9e6407ee0484a2dddbb7ff7955c763363f0cb63682f68e039d926d93d61cc4c3a142bb032445e3bed8045846ac4313c476663c90a92d2d7304732b8054c9d74d93f9b4fd31ea18a5b0f3c7ede5f999fd41d863b3beded17ac151d28e9b42e48acbc3f7fc36e2e595bce762bc69481bfa3c63240fc1ac8ae2a79e2bc0e6c1a6a8efe9a97c3986aff71f91bdc824a8dfec9e4acbacb00cc40136bd7f88a484f845d2d0c8173636a697b1011a95827dd57a10b0d4cdef2b85cbe80a3540ebccaf2b133c2660fbab6256b4d5d936e84bbce24e9808246866ba906394eb84151a8a183257747a9cb084a36a557c4e88fb8c70adff7dd24190f50f1235625d8b456ba8bd131a561bca53f22d22b494816ad59a26db4b7cd1228b6381317b3c7c596766887eb1c3c2c6e5b943dd1d6251916275b3a935514de466a2bb65d33b8f9994e025b58aebba8984be1b00a0fa9e2974ab241edb3e935c35c3adda2094577248f2d77ae330c50dd58301a3008b0fee658e4583ab48320cfc70e0061476abd18c8540fb448bd3642165b8980c0308101c4cc642f6f5e5f946cf214c32bd421901a5bb8482a12588ccf1b6e3d58022b666b355fec1192d51943e6bd843431f3f491665e54fd72acafcfbcb21bc721eb15a0ecfc792e0016990b98ec4ea114390b6d656131f15face5c24490a60ba2bf8be2e3c8af07c0e36693cc2f97a6f3982d3a12206c00c717470189cc3e0a9e4a011e52361f0ce3f03aed4a3398163e706bd645963eea34b6c91987b58b1d6a06ace56657c4ee5787b69d1afdf7a7aad610fcfa20462f96e30756c86f76473d42b458853b35fc85e3d34962df299d6518fe7f5cea110bc97e5835794594904253f4eab1924699937c86a210d8b7f0746aa378bd1ef096af5c7061beada14da9b1ebc9df7f3a11dffbae9724db84276ae3c1d1e6db258bed793667573e653bebb56b8a1ddd696adf40dcbc410c9890da4768fee44b6f2e16745a3f5f5e538959c3825f948135c26f488d6b54fd57ba29610b6d7ab2f0297a8e5118da34037ab7e6fe8472e5568428a4d02dba5ad4ec467602e39bdd3dd30d693b51b0da02584db6023870ecb3cc185f6dfa83b59c0182681ea799b27819e042a02ce32ca7637b61819e6bf7413bdea73b00afab62d3c1a02805b5a30a203bdb982544ffc2268befd24b2b1b8f824d3d596c5089111f474975b92497df396feea8836c9a819aafd68a0ef43a12086fba3f7e868e54d8d5552f29111d716bb21c233cf2e1a484ac5213ed57b3000ff7ac5a69a0d4a8f99d46e7cf11ba345d08d89867595c0da29ebfb0118f6f019945d7ac9d8df165442878ef9de099f0dea52f4cfc0e46fdda88b51d643b529700b9fe9960e6244742e11fe8dc7b1f0fad97273efde342c4c370672070e5c945673985dc98d62215ed378c481c94753fa81f23390ed15bc2c3d573071884ea329a6d18f76596826344e8158adcb23e27c27294c8a44e945614721a554325ca4cdecf32e272b0e881daacd94617c696144bf959826bfd57ae432e07ff7f701b81815f165ebcfd624b824346e8c5110d8d3ba2d2bff44309ce6e4630dd0490aa8c40460a5d19b40a1189e0ac50518b330fb72f8eb9fddfe04278fb674f7e25c3a1f5053f8d810c3e2696378e69ac62a4e89ebf71bec9cd092d5cf9a549e78d99b4b9055d0375e4d648493ec7b851d4d2f9ecd5c9a5c56ea6f9db47af58921541f2f05eb6c9b6a881368aafc60b8153334329bf2cbb4ff4ef5e3dec2f7d7ed192ee740f65e2567b118fbf24b1cb49fa7c5d490fc8335e7124595cbbc43a15b49842de84151c8c802d62963021573b44c1671ee8691dc22acb7ced1ad7599aef55360623bfa23682fd75cfa69124fa8c37b832a8bbd8e8c69d64c0d89dca1371947d0b9d637043c4d2a6ad36181a13321447d995e6007a224228e6d7da6eb9e2070739df1b0180a8c3399415c8afa06ee0098db8fb0c51d6f119a666c6a608d7b951f7f345f7c5400f71013500a0d0f1f88e7768e120085a04749b52817666fc3108f3ca01f139dd60ccf00ebb6271d67e5de2c8c8f7cb0dc9e0ab6fb0be913984034df4948553543ee325d5d39ff1298131512c5331fbcc0f50bb8d608f7d37acf27da3ff7f9ead18bd0320a9958a4001903f1630bcb1b753f315a25c3bfb9c5e269557ab4b6be74fa4b8e3c825db0b8e5af71463ea35e97d911fce31b7b27251afe6c44cb7a07e25aab4eaa298c79a021b542fadcf96499f981c98a60e81a4668cdef4684a8021324c6968e4fbfc67b6e454e0ff92f2d661f3ae0468037139696d2c3260214094cc4790a6611b58e5cfdf8f4fbf487033e1cfedf760567fe32d9f2d3d00722fd17971428c86477b389b4f3b4cc0faabfee32600419d965462241fbd5b4ec8bfa87fe678db8a450c92a7492e3eac5a78d9d851dae3e7186ec310d9315c7816b76f0fa55237aa5f983891e2051dc4464324d0c4ffbb38f03aff92b4095027c5dd9c7213fc44295c4a5f2c7b88bfd93a052c51e0bfb9afd1109099af560c6465c1e1f97eb5ce7607d916851e68f5833645b42bdfdced0f8feaf8a600068db51360910804f09cf4b6dbdfe8d198a336b0684e3a3903d22bac6affc04f3c8ad44b724e4ce63436e06a74e3fbbb562be033d25945f4bdccc417fb8a370c73a607c57fa44b7be637bbc111c8686753deb43d09f132b1dbadc9e7fb994c089709422f5ec0967c9631fd7d1fb660a554662bf4f65b107e91b862284ca34d3524daa9a752f8a24f8c3bdfb07c9902053c417f61b40cff4569d3bebcdd6000cd9c2f257d89f5873afc4a62383431fa98e3932bd164fc8f09aeae1219a49a960f5e7e028e6c6333d58351f46a34d8569996501b42d2a09a4512defef8996abf5199b625fe43254353a09b4bd8df0e0477b1e64daf53849b807fc41ece5dffee6f521ed601db64f52c1d2ec28bc4c09965ee4a80bf03fd45c4c5dc82f7653e2bd78744b7b7804aff023704a7338a5ac58ceb7d63bcb10dd0f6b421cc195b0e09001537a4b8921b40ee84c931197c5ae11974431bf8917d02ba743822226ce49f216898819c7da86dfc722f6eb9c6b9cdc2ad78785a0a1e83deda7467aac284b0bd02e9d8b3cb4cdb81b0583ff383e40e1b341351b1b1372c973b7be49b2a754f867536e4421c23a574064a32730643201821848c642f1dd28b870dbec0e706df6e692fb52feb559376e777d301e3a90f0f690e17ba79866f8ec3cfab86112bf63cb12051ee5981a4f8489544be0e7d413b5d2d89e2f751d2d271f3d9cd9b3dd3cbb8accc3beb9633b6dd39348a47f893795b9b4a87d10ccdab75f527d7c5cf6f93828b4f58ccaea34dda1362d549abaa6125969de3e50002c887aa0aae129ee8161182802d560fd190bf121203e5526fa35e2b300d864303233588c3083a0967bbaa611427df830e2eb3644635ee11a37ed24f26e81a88e9a31f021b64d57fa9d32023af223cd130a61d4c7f4518426c826697b75deb911297c8cd17827d491d4e465800f094365726674f198c8310774d8cb31a8e5fcfc66955760059b994166212691688a5d9c563b71e278621ebc145f99dc8543f2e2de0d07f8914490e157b877e538911707feee0dae1ff91d310e1691a079a2f26299f2ab0cfdb9ce34b0013600f6870d4d1c9b23811001f0166a27cb1c5d1883aa314861a78045ae05c7780377c47b359801c176b357224ad9e8a69abd94a362746a59a1e03a8ebfeb09db0f70128a6cf3f7956435d37b6b70222b7103f3758c48f59d5deefbb85f3993d0505b60be22fa816f7f3ea8e08361b5b72f10e47c1d73b682b9990a183b02cb0544628dec51d7f6adec81f2f3c0f59fd770028cbfa699ad7cb6f05a2792f850553396a9562a87c035e3d447c728a29fff2f467d9fc2960e389270f15d08d334610015e67c4ecece854ddbb03323220530a0302abfec30ea7b20d23b11575ad7ead54df87799a83e7223173ab60c2bd017e48168e2c732d479a18bd7a41fab8930e54826321f78b33913ef3549b1ff22d4192307a1a0e88415d815d13b71ccc500d7cecc8b0149db39a2539b4fabd7178380e3471b830b9cbad3118d911ba03d540025c4443031404cb3339068a2e1603b930599dad1041fb24e5a8b6644bca39c92020fea715045ede099fc5ff34f1315cb54c730a54f9a3875afe469e4e46e07880b4e7e832041036e075656081d950d1ce4e6dd81d22e1b4a664fffe1625a7949b1d7f535331be51dce44c5e94cdb530bb189e51013e17caf5382dc4377254f69a94ea5f9a335e77255243096bd6519ace89263cd680f0d3f81fddf44b1f47782b94eba96ba335faef18134ce08d3056d453d1ea03f42a635d385258d225e4c3a0a78291130eddb0dc1bb8ae2c2d9bd50c47f5dd1b218a626651dae9eabe42658a061153d2b7fc3350b72bfa740b3a81faf6bf62b695d0a06862fa36853809d8090baa4a2832c7a6cbf569ac7bb63587cec07e1b6520a0305a7ae668dbe5565e786b1a1c33e3dd1a5624d798058d66b06ee8fd6db8a95d09d37895163b1623cde2b68d7236ea0bd24c65848e39df74b27c54cdbd90f372d26d79b7b31a969bc6661989c37f1236293a5e3c6728694217e20db1dbf1864827cb13fccd6a15a2cd48354fe8005be9cf97c3dd6b6290bfb2061a356758b806958511f74c58155eea3a4338104a1e5e685c6a2a88ce1e7398b6e8f1af80f32d18d1a09eee8d8f55424cb0b611926bf9e9b174a8ecbcc5c34370e52d11b0e89f3eb09b89aecc7a486f70340ce342db047bae151dd56fe111e15f95ad14251f97ce7d7e5e9ea433cc31e0a003aab19748b8549254ddbc10bb6dea49867ec706eaaf00fd577932fd5bae29ddafdd756d92f7a8d2858641f567bfeb374c86c114ea41eda0b9cc89ebd46053acf577ce912af981f121625f505652e2f2ef9959d1a81f59da7abc08a839bfb8fd959f3d1b48c792f167fe57b4f32e5703974d9860e6f058982fa7f43ffdf072354f433b3e5d7091ee56e9fbfa78fd68eb4faf8ca544dc5e007cb4c9220ba71db2b743b69fa75a067b2ba1e61a0a5a000ef699248e16d49412fc0a7c56236688cb07ab79465f2de3110e6b2cce8a617678d1b5fc65edb08eaba03478138fb006384e7a414bebf6f3541ca012da3c3cafc6841382cf3e24a5413cad21cc2262864f68924760bce6b0fdac55bec867d378620647bb1580264a3c9ac1fa43a73ce0c55268a3bc51749877234f0b8d1c84e16aa11f427cac321ab64da8be7a46924d8ab82f0815e73aa6080a981a3e307d2a42a99681b25e28376ef01ca109c27d76fa06a0aaa7abf7ca29e82da2f4631c164872b294bd7a5a1378df40e2038d6a59b5cfa4825659482959fd64a90507a9aca996f8ea2b1b3aecdfcc7c8cf34dfd2fbdb2f80b6925807aac6f19a61268f3f8f9866bfa17c13d1f6062e31627730c9a60be93498bc6dd897584142a47d601e2799f373cb5c99281b248525d41e0bca6bb2edd92c31a74cfd12a223d328a0b3c63677c8dcfec880fa6338ab3b629563acbe7b365ace71394f44f7e553749bcef8953a21ae74684e555a0e01a90e3049454f3956a0cfb3859faf0b2a088036f0edb4f4116aeea0d14279319ee429d62278608076d178717fd334468d0bb4304b4a2d58f1e29650146a0ac2135a7b403488bf606c783dc63ee184bb0c22a32594fe908d68bc36aa4a20a6740b6c8b3a1003a3cf70b5a2ceff603b1d50ed2567c47bbd51d7bf589746d52548ea8fcb0c4e7ce02925a0d90a72e23dc921fd8cf76fe797db519c841790ce6f5b250ed7a468e82491e1c7730596aa98db4fbce61e117387ba427494357d9bf6340b120deeda6fd1637aec046e96233d6384f6234c26ddcc5be6ad9acbd7e8530bbfd98a1fc209abac28556ab0066b8bdc144d96f63d562d94999a8c4db1dba442e117e3a8da4977c529d2b4e8ed1cf668d7d9841cdfd9e770102bd3fbfacd70aed70bcc5d66a2af97bf933aab4d5b25150a3cb23d9872bec84fa15f6927b327d8b99c5994329260f8be080d34f1c08a31b7f57c0212a348d5456e9379d0646ba9fddc40ed217be3ef95c1be8cb201602c501658757cd1ac3774b9ec83e9b2f53793952e67d88198696f2be13e0481447b0e549868aa9d626e79dbf10eb7bd588ca6d83b8c84a1c7a826524cf875f6361d69e2ffa284b4fe5a59f746e041bc2a507dd35d109dfea09284c998ec9b8db4798d3f67497eff6547683e77636506baa80a64c38a7dcd1e04c6c85a59fbf2eef8867b68d56a63b3b97a05513b7856b479f8f9cc19b9df82b450df9a7ead1120d0489b8c4efec776873df53cee14fd346211c7faba70b1d916753dd539a39f28564c0f81db3df005e7d7f7aa75bdde2c5ef950320821decb7e559af1f3d493d455427b7a2663ea231db8496d882e4514e834f147bd0abf90f88c455326546b63ae53f46a70528231762afe0982437a03d55cfa7d7942b92bb065ca9596786dad59667e41c648bd11845db607ed34446af52d5b904c7648e3651efa44632643bed3cdabac261751086441bc1056d9beb7049265142fa67f1bfcd7f53a9a96402261de918abff4ecab4e1f892aaca60abff64602b9a36a5c3db1bbd56f7d19dacf413b7ba6d3a34f14b8794a2000f076a9d14e76b07dc4e935cb476b39ab1971b9551708d6e105594975075622a7f9e8419cad9e949d198529733409554f9a417a57dbc997f687c02875812927a63ac7ba20cb01ab62d5ff7a07a63f1865f351b1a96c04b879fba0e0e5b8dd0eb416720e22522c87dc24c5a81acc0f049bef6fc9042fb0879cfb18990dce6021f5f0c388c9f47e9ca2bc620f8733d79d9f22e78b3e10d8999b7dea091271c2173ba4127ee2cfe8a3d822201cded60fe80348d1da39bc3ace6e7a06fe3f4d59bf74305680fcd2a7ac996d0ad8db0c9f80c7daba3a30fd23f365b89630cae3859f9ebf456c5e6eec80d8a15dfdfafc2397f845452458542b29fc398531596022131c453a1a9d01e3ae648137221bcd58827488cde7c2aac286b9a6da4e1a0b76875218fbb1cb0ab7dd1ca0a39eccee6482da315e09d9ef62ba06f8a7211600e08c1e8f2b5e58e5ae05497aa3f94ef1cf2aa04236e3da08387f87b392fad20ce264e849ca9131ec36bf1bbc267fe257e8d221f9e0abc3664a44302c1cc1e8aaedd3d944f3c4cf71475b0556b1e2e2db163f6775820e67bb2ddae8a5e022aebee51aa881864a2d7e79a0bd993e6c391f8e6cbacc3d7754422e30f9c794f96cb5fc738578f64d52f5e5cadc0ea82babca310ceb2650450b0ecfafd68f44624568d5a832ff0b20e09b267a40743647510713869119a569bf42f48aba5befe6e7fa5d1d8ee8ede73d767be88945c1cf3d96853c8eb63c4885df9fba83dc2e66301ff28a340d81ec72dde02974ff5b7d2ee8a7d581c44ea1c1ce3ed1bdfaa3ffc876341e03da44b67a5f30103ae21c8973935fc0aab331d93c4574915b608d76da0168727b24bfb5d039f16254fad44fe99cfc8bad2bfcaaa0d407fb9eb9a2a04203c121d5678dd8e266041818155cfd33d52efae1fd632fffa0a5ed6ba15fd04f4b4b9b4829a594014a077c07e10732bb83be64f45d23b7f66bbf8cfd8f9e7270c0f880f0c13fc1f8e2eff0c1df4f8ee0870f7e7862f1b4f706169129a810ae1dc778e0dfd37b0bb2a74d14dcfe35bf8e42969569a83f4dbd5d6559bdf9ce94d5d390d57178cfd4243eaba724a829095f8fb91da1e4de7ba4db27b8285df720fc1a08c7ec93238a3abe444627d8b0c62b8f4eb0b9d5d38d2290579509631ecface6168e80cd11d835c837c3dccab2f0471b3bf735d0de4058061394b34f66c0a3e35413e998a40e71839e6adc10403dd54eb4aa753dd553f0b5d65a7bc3d38e4c08d3bc768cf58f6abc52b9b51fabd9966fe9ed75fc62f821aee35cc7e3c9ad2bab59a683807429feaa46753b5e0f28b730005c98d9242bf061891326924882c80e7e6ddb359ededbf5c1a875bde0e2dc6cb4f07bd36bb7353c8b0f3a6b627fd65a6bad15f7cfc036cbbe9df146e2c70f204076b2be3b353e176b80b3c0730bff6d81b4acf4cb5a0be1b85bbcf3b995f100523330f0d4f6be1a8ea556ad9165f8f55bb586036cce7d8cc7d1aabdd4aa25b02e4d02ebd229abeda7669d0ce726f80d6dac5c1c029510dcd3cf248d9a05320aa6cd2d6d7bb75f5bb72efcf8af12291a5823fe4d2bbbb6755f144b258cb30d64be9dbcdfacdb47472c64c73e6a736e7ad3edb76cac65d1cc4753862ceb930214d0a2023601a3149001d7275000a3f9532e46f0578c9dfc35b2cce24eb06a955ccf2fe355828fda9cab439a75fbd8e68cf84d3b962090c38651bb79171f7f69635f6cbff8a18de917dfdad80c6eaf4e38eb56e7577d7ffb77da3e8294195906c306179ef011850a86f0ece42f21cb2c153da22696cc5a40450f3b12e80187157a047124070e36781c31050f37808245490d0eb04f73c6d397eb09aef1ac083205fb21ceb5fad32f621cfe0786df8ba999c726aba3d665b303f1e627747a0c19b83fac09d0ef0b1e3ce53c05e2183164903083a71e846e9f0c51c4c80f3d45552058bbd8113c4de527a1e38fa159b6b553ac9ea6b449ebf1c4a7b5fbb476ef1dd3cfeaf9593b8d03b45b1bb26e64c0f1a7ac7ed39bf0d49432859f5f5846986526dcca1f5a1c9ac29e9ace6c5712df7bef88c51c66fda1d5187fdf067598453c5e1df690a8d6a166cd6054e79cb32682b4ba6e538b1be1bebd1fde4fdd7fe5a2c87b7f5576466a466c34291fae4240eefb330bff4d89d15796d91082480c423920424baaec1440870f328841880a831876f27f7e34ff49099e7ecfff58768ba8a136b67bfe05f8f4fc40327a84d8dcb7ef06c2b174464866e587c183a38fd1fc2f2f7cdf39a8d9ac7fabf2dbe8f903af39a3076eff9ea96ec71dd477bf272fcb6b869d1c91ca6b9262bf27016cc06da469d61b63cc736befbdf7c390f65fb3ec64572120bd5ddc18b557773297d77e1e1900bd1fe99e58b4c14b79cdeff6ecf7fc6e61ca6bce18c2ed93d664d226fca58ec78e826b43e33205244ccacd7671ac1501bbaccdf9465b9b1dc297a5d602b3d4d030cb8b51d4720384115c7041b27a4d4d9019d0e620a7d6e1fbb64eb5d63a6f334683173f38ee311a94ecc394680193b28279a131c1cca8ac8da9d141a6a7d65a6b513a954259cb42e6a47aab32594bb385722b4b0803a3d76255fa1636fed7ba347739cd52e79cf3b6914e1a8cdea8a6fcbe128616d285b5e20b6badb53a07d9597f9a73fefbd9d810523ce79cb78db5d66aad61526c8cc89614c1857144b82f1cfbca594b5a783efdaec5649386d941b77ff95c6ca3ad97405ac8adb5d696a4081f88dfdfb7dcd27bdc34abf588cc2204a336a6f306c2684996b550ebf04cc31cb46da3118d4cda910493c26f1882b56e5f873cb460e90b5be86f98520cadcb7ea86d18829f5b5926d270eaf21b5e7bcf348753b4160ad2fbd6edfd187454a9e733c5807d1196c0a538ca5129509e6528ca512950d4ba6ed023d032bc85fa535cf38cfef0fb298a61f8af46ad0ba33728daafec062d423f128af1d7637571d6fb03437124cb11c985975e604c3127544a86856a8666d5e201b0a2f96f844dc3b28f4643639a270c9a9999f3ac79cda8543535231a9b25046714c3510c37a862c18265bfbf2c462199f0ba00c1954a8150da047110460778711396a27891b339d9e67c5956dae498c8ac1fed7f502874cf6821f47b7e348cea8f8642b5cad68806f821e4efef6e0901df86af9a647461eac9330dbfd0fc6ab01c7c347d636242b0413b79cbb26b522f4f8807754c0275ac9ad42cfc9a5499994935a9fae6fb5dd377beb871816063625c63cd8538d4ed8bb8551f85ac0b061463328980c3fa000a6b0948d0c379d55cc0023b0e6c80f78251a6b28cbf1db99439f9ecf6b999e2e8bf8c17106c3aa0863a8113608c508a9f79ed480abf78040094ff61c8535fcd6689d417a3dc349bf37d8b6e52b550697eb4d048c7ffa546a18f96226394314634c0ef83955ab539379b138463fbef8f4446a155bf67d701d7eabda1a1747b55939a6532aa49d56599ddc1e12933e5336576231afb94d121e1e987a3063976fdc38163e9b742ff56408d0c40d3ad58d19e90d19d6474323a9b6361341feda3d9f40fc26fac24e56c0e89227db48f465bed46c0810901b6eed2ed93211cba88b58e2433d62e39df28c1efa357f0fb1bcbc6a6f2e621373588228a284643bc4c9c87ef2dc3b4e29573ce5878f487c42946090e6a759cb25919f61172f3c13e9687e1a752362041032860288e245814a2607fe6dd2147512884167aa549118c1ff0f0f0f0f0e00c8a63f8edd147f4097dbea2bd41739f56098f0f1ed3e5c1390a1f1f9f549326fb037d3e1f7d6586297c7c7c709438f84d110404431004c10f0bcf14599a4c11a4087c1a53cce0e3e35314040f0f0f0f0fcffeca253c9fcff6c12fe8fd65bdc1265f91a813a3682c3c4c680de6ffbe6f6b2c3c7868c44b2ea492248bca717c10144752db28f9701f17d24d9491cfb63da9e2a6cb94f4dffcfa6cee0c8e70d2c4081c4030c9edbd7711fbfbf60782dfe62187bd73a6b277ce5496eced43849224488670430811c411208a6490338f11a1223ff8b077ce54f6ce994ace79ef9ca9c0d0e014c3e463d91cdb77437ae0e1034371fcd66b5d19efcfa4e9fb0ccdbba34d2deee41e4268a150ccb0423143aa64b2b2519d513bb642681853804579c44a18d52caba1aabd06139efe33c184bad53d43f16305d8588d45f15bf4d6c8566d759d4aa0e76bc5ae4720f6fca16de9afc935b28cdbc7af5f9b39e39c73ced78ea4cfe7b3fa03bf1d6a9d4d62288661a8b7fe6f84007dce9cbae7dbfbdbfb64f5f4a0ba85516b508fa4b833f963fc21fe10d7dc01fddf5e808d4d424f6602efefefe79d73d618875aebdf5ae33c4280ce796433be367fee99861f3f7ea49ef41c29a208bdbf9def7fd81d285420c58f1f3fae2871297c40f0e31186df073ee991e20a13297cc4ef9322abe0c78f1fab504f4f4f4f4fcf2e439b43cb81f7dd6779eacff99503bdf5c744d489519ef42ca1f5b75713653de93952ba70d2881cc51d298ae05f91a65f1b1cfce1f28334ca953ff68e1d647e8bab5b2b53badf5bd37672bf3e1b1d721082430c647e852040a80cc8027f4019191999b7b23004653a46c5100422f33100593b90b5830108fe00e2f3e3053d379e1b6cf021f33735c8fc7ae3829e9b1e37b69b16dcd070c30290b50359bb9799b1321064edf60c26a896f56f30049c9da622be0c51e9f80547aa916a349d5403ef7749b51d528d5483a9651684d04261d42cbee0e21a6a975bb86a9cc6699cb86a27b48a63d7f1cd5cb42d9cb3a6dcaee5d09677d098cb85e3143b05c7d2d10636b039dd2b21e7544ee5544ee5d4d84b1861c677fa0689f38886f8fb1c41f19a9ccb2021460aa3f8598f8bc81736f316b5cee6807648893e5ad1a22816dcadadb88ddbb88ddb4a766ee36e3270390789532653a865294ce39e267d75cfdd645d2693cdb1575259e71a20ef42ea14d34df9f139937a243c254147c7e6587b71e0425996752ecbf62ed2d396ddd9260fcdbfa3546a6777763b9b63f76ee7c48ee32ebe57ec5bce0b4fd57aba8382c621b266c7215267aba5c4b5cb17861ba6dbadb3735c1c5ce3b16d181d7d461f1cfb5eb679e0d6ae7dff9ddafa086d3c725c9dad63870c35175c78ad95b9008d41c01f7bdcc7c76dd350430fabb379b80065d9b6d95c803ade36972340b800213219836cdbd8137336bb7df66dfbd83caeceeeb16bd8346c9b0b4ef78099e9ab8bf4f492542de4a3dbdf3c6c42ece8f6b70eab231eb938b836c282533b1ead381c0e273a11ca29397275c4a124d6853f1585e8f8ad888311050e6676c5cdd94026399ba3419bca2dfe566f9c83f82568533796de6f65314647f6d5379f3162d81c8b592949bd593d84459da8e2167e511595a462929e847403bf25cd54d5e6d82e46119574fc4ac41c968951445554b525a9f9c97e5d6a9c8632d45f7debba36c7b2308a9af2b3bee86f58077cb7d65ff999fba55ff83502ca32326f215c968d6f7fdfb46a73c0a7d2f1a730aeb80bda4136c7ee20eba2e941a35b9a296eeea07d04a704a3f84773e74606c0e9d966097e5f0cda2ccc5e373bf8cd22cc40a3c1b022bfec7fead157c72f9b9c7bb302b0bcd1c1efdfd4f8fd9b19f8fd1b1948175254abc6f48d1b810516a98654dec450dee4e0ff82dfc050b225b1859581e0b971b985fffbb4454f531de745188620e727aed5770ea330232f30ab1968b415108c89c61473a30254c8730b48aabc7981df47ddd0f8fd1b17666e5ae0f76f58e0f76f70f0fb372bf0fb3729e0f76f6ef0fb3733eea2fcb9dd469acd152e5e20b830b6c0add605e309106c7e805a1b2bf87d9b2dfcbe4d15fcbe8d0f5ca50d155c041c8cf3ea2d52aa719765dfb971351bb7eb1807cb01bfff7abd48a9d44ce3172a5421a26e55a128ae6e55219fce4daa111f29d5088f8e5d6243ba0176063afa7d128fca11a4f0ef8fe2e7f8534fe8171cbf37e4a91b781a83e7d6bd5fc2fdd77d1959960029aab06108072d4dfcb07331c6a619980a328572d6f35b56ced97ebb7beffd18b5eff7badc6bf1bd17638cf75ffd771481cd2d16ea37b5bb7eb975d930e34c84d52967ddfe0bcbc89b8c02d4a08013b5e79952d7f3ee6a7c83638fcd7d4f6e5d65ca537946fe12f2bf6460dc6ca691206f11b914a849cc8620bb55ab10e956ade2d3ed7fddaa556ae8bc5bb50a0cb85bd6791b9a3d8ea52995ed1aa35bfcd9bf81fd354ef854df5703cb4cdc0919c031bbfb7e13dcfa4ee1e87b7f78c3404df14f59f56739e6cfcac491030abce28a2b7672484105dec9cfac12af74a5b4beec605bf7ef0bd08bd00b1016bd7f656eeac6dcd11defbd2fb87eef29cac5b97fc57bea5c98a428580461df243077c549e7e1188c894531acd62bad5906d3f1b2038cf6029465b01b2f406c7911c2b11854e0707a5a5a4b6b4c691d95d6d2daa3b4a65e705db7233a45b93a2f1d58e9f8c553948eff9a3e5d4f61d0741845e20565f6eaad45bcdd14fc8a8251d4f952096043089a3da0d549b5eb1835aab1c2ea51a303e8fe7d36477d347f584f9a3f2e5e74814f4417e7ce5cb052508177fd200c493d992555b5537b0aa3f6a26271f0d79830683066b9d5d382d1d57cf15e44af9d75bd74af28553afe13d1d5794141e244f49d2fd5069e92d4924db5abf5342c4bb05c6e615da48b827e6e3a5ee0a916a66972d27c6ec26c268c665d26ac87ad75d80b1676c3e2e8b99f21231df340fb9ebe54ddca7cb5e01559d7cb098bf382620998970a33a2f163b26031a2f16366739be69774d1d511a75c9c15c7c45d161b13ab5834e6532cf272ab88958d3f76bce5d61884d19dc4c6c62138e8cbebde2824eaae0ec9c9d575fc3434c873c5c328143c7ddd7065c250264c090c7732614253ae0e6cc8e2885560477638063362510c4bd2f1c7885362ac660c919765b01b3fbd8e3f0616db8ad18445f16358104e10b4a77f8f948e8edfe54c39ec858eff8557eb69d8d397da5f2a46a338b93aaf1abca49c4e3ae6276c665d78c53379d64532cd1569ba33a54d104fd17093a6e7d37ca9e66b8af97af3c5cb2dfca69101707a78be743ff095d962c66c7196ab4ef66c7e23f39a3cb72eab66049e2b9e0b5527416861ead96c347f564faef88b72359a3f2d5e6c71ae5634df6ea13ab95ad1d0d068bd5a318a57bc1974f6dd983ae912452857a0a971ca15d8c1f1748ad9df067fdfdfe01713631ad150ed543bbdf5a7dad91c4b237d1b06e6e5e5a5b4e261745534a2412280159ebe545ec7ffdae1981ae5a57b4dc1b1d403aa8681df7ed11985af9d21c5662a5c811e99f69ca7f779fe9bcf0edc33a56b82943a75730e311a05c77f9f8ce1c0f1eb57e5e0f853cca3dfc78901c77f7164acebb41d4ceb33705682bc6f4384cf7ad6856f0902396e9ce069981fe75a6ee1b7ad37dc03ca41b434f37a1ae65a96e15e38e3b454cef986f9dcc057cb5594a85270aa9420558a90dbc4498f1078dc3e294249ef451cf972aa1cdaf8e1082974bb2655849c000222c5500fa6a06d79819b306a87883c01a20b4243112a86ece0062ff841071eb0603b55298c5e1c235c9fb51e09884c606dcaed132644dd6ae9f6496eed79c40031a8b3304a66408505a8ef706c24e2e1d84d55f8732c2d4e860060dda62e30c69d7c6b8e9fc52cbe1ed1184f0fb0baa87df872e083319610d96ec4ad7fea9dc9de87cdc9fd7e0670cc3e3182d6ef7f4e368063a29028fd7e53fac5a4d4465f00466f0debba3f83847fb62f87b70fdce6dc7e3f4d8567f89d319ee476b4198ed19b403ad3d00419b319111c4bbf5cbf332cb347e0c83b21a0b061198ed1ad8620faddfd3ec9f9e8f72f108ef17eed9322b6f42b94b1b5442a8ea531744e9cdcffa2e0d806a2dfffa6e0988843bfff11e19818833ea35d6bea5f408cfbe53c60770bc0a80541124b84a82571838524ac134a8ed8b0a336450a6298b560831a6e5576b060633171c10f237c7801908e2148660054050eb0e06007315c71e586a11e52fc0879d9247ec8a1dea0c3f2821319a002a4a74991a22d30183de0054f6cd13193c10724d60a229d1245acdca0cb61019e65a4bfa3bf390032c4071d761002fa5962272489238c40421ae119f8d6b22c01525e9061880c497c9802045400192227831c9ae0653303d66583f0476f6decc10f0b84c0010c4cacd8a00187102baa0cdde003111b4108294143922d3bb4200614c0a8fd2ff7e55c39887c96c0b0c4c78e0bf0d4e08829a2d8e1086f079b256621e57b7d9e40ff3e817df4f1836f63e7fecd65997e13be3f4d90033e4dd8faf7a9c2fbbf9def6decf07cd7fb28dc27c10c1610d7ff00bba34f9b5b19851a61ca04b7dbfb5418f1f1c44f4f103d5877ca9ef17785bcdfce7bef9c73ce4b78ec0c74943b1af406f3cd39df7befd55be7d74e0000081878c839e7167aeef776e7bdf5a986d5dc1414a7e68af0932088608c2ffead738963a9a9ef3a4780f99d8f67761a6718744d4426a8ce61ac6c86bd314bf6947fe20cdc050a144bc025475cfb063c2452b2809341441b1ff95897c850c592158288f08116229c109b108103229aec60157153111dbcc461af37181091e39381881b4078198538c4491e84347091ca9315a8625032c4b7e3badb274a8028c2471e7e54800252e2630525319c4a663198461a2fb5f0f8c8cae7c3b91471058ec2559164c86622c94ddc8197dd3e49c2636fe164b74f92bc80c4969e5a1cc7fc09122c234fe114c14d34fec24438030ee324fce13243f60e90e030b680a4053db5b8100912157c40f8c88aef063f590179433400553eeaf6c910115afcb6ce1637a300252c6048063d45558e031e1e1e1e1e1efce9707c6e22432b9a3fe4d7dcbeef9cc1e8cff835b7940cdceaa1c36b5938765febbdb3288a6118eafddf08015b01afbec1effbb4fead8057d73b6a82b0ba0da2331e92a2e9e853f1d3f153b2bce51d91483f22dddb4bb12c5f2ccf7134f10786e183e13923a3ddeabc031b3f5964b821c9ae071625ec9614a440c8ae8917dcc0126489110467f03da7b0e24a0f3ad478286200961b20b10148a887243040711281b8ed291fc11f74008a180a33b08bad869e6eca619241c7cab6f2b1aad99cf2c791066773f6f76478c8d8646e594687d571e10182abdacab6f281d1bcb5de5affcaf6633cd3158f8e1faf7458143f3e539aa131080dceba7078a632403237195b96e1c1e3eac8e8b038672ab3c38506999acdc932b48e3f93cc7047a6461a8d4e199a0c6db422710c1124b72168f941922a2b604114183420050b152b3f331c78e0b26ee1321eff7e968e54967d8f651400cbb04e72b6d765c541a4d65f96398fa4fd11ebbff78eaf31fa367575f089c23d53b0aefd038081a716b7de1e36f6286459b8ffe2c031f2f75f5ab97f0336e7fefe19cf019b65a433f569f8e94dcf9c73977393cebb89e076bd3c2e6d64dedacd7171987796652888677ab37b5874ffdefb67e0d80ff8299b7d7863d6f593b70c43fe7addf58c59c1530c946a5b8a7620fddf1af21490cd21757d7bb9a59f877cbd6b6e696ddb423c05ad0a24be7e0b6419896619060aca2d9b133e8afea774ea754884a7d676712bd11141d8c3303c6dd6f0eae40f3f1dbbfd8bbb3af9d4b68b83c4e684a776811894652884a656734bff686699b6e5967efd658881469c97a914f98fa617279e3a975b5b787efcfab54d3f0a28fa9fc333fd7e6f2d8f331257d34f3ccd6ad482ab5c4c30b71ee9a5647b72fcf25bf81d16e28c4aa552a9742ad54a8b4abfa032b9d97898bd98ab75d1565a74ebba7e69fefc6f13d6b3ae588e182d36cbad2d18c545bcdd4a9a3f38542daaa082c5ff687e0baf1d16dfa209222a576ad6858dd8762c5aa8ced72e684513a42b49f3c76c61e268c1aaf9f3082e49996bb9d09ad57664ee92035b36f3a5030b002b1606150b6b71be76b523681214571e69b5722ee7924373209ad3b996cd9c71c9654daea6498dca9a814563d95835a450a7189164dd6a9ad4e46a54d60c2c1aab06962d55a3a26ad4538d1a53a38a352a59a3b26e63b9db99782e65399e7aa72a5033d4102821540ed50407fd1447a93ad074aae2d443cd5043a084504d503919d42c859aa150b3136a16839aa16628b5f34c269752b7d3f174b6955785a6569eafddcec49b11599839e827cd9f55e9f22111ef8a0e0ade9aa5cc23ce572bd10ec6cb2da29d75c1a89cae4c39f1700ca644958e7fbcd5483a151425499749ba918eeb483a92ae8a755121c2e86ee7627231f14af3c77cd2fc397f347f54268e1c4ce5e76761ae597a458270494e3122d97bc9ada7499ab27be9b24ce918c7604a5814c36e305a2fcb603d456c415906d3910496038763b0177a31a5de50a9d7e3a117a4c75f727de6e584d5743b1d4f67db55a8d468b3d7961e46f1ca894ce76bb7eece196fe59954a5f9738e2cce75e5b3d3bc4149c7d3dd562c16c706a306830603078c167cb5ae17ef459465bd3a2f2a55d69d6ec7e3e9ca53173d519a59a9564f326140d665b3ae55905b0f1d16e5d17550980c19e161c75399afdd4ce984d576ab1569feac7e74996141c4bb22ae3b00090141fe886361aeb4e0165ead375499604422514482a8cf4ae2388e23298e6216c5555c5d566debe96b8783d5d6ddaa5bb5acba5545d3f368a5315fbd51f52c6678aa9919b345cd3902552e6648f347f5a58a85c9734b2573d2acb4a878bb75e5ed8878453c9d8a8666665d753b225e916e464b0ebd95a47bb1aeba1d11af48a7ba2955e4e82a552ad00ccb199569774ad2fc99f971265dad445e3bebd265d9086aafa7afddef667dd7f18b3366985bab16de6e5d793b225e114fb76ae1edd695b723e215f174ab16dd6e5d753b225e916ed5a2dbadab6e47c42bd295568caeb49074bb75d5ed887845ba10fc368b5a0a9f50e4c666ba4867b17ac528ae79a12c33c3f3ed6f1f1c7bc1517a8b3abdfddd6375f4a7fbc7fee95161c36275133d2a330dc5ca746f17b12dfb7ac8ca7650127da4dbd7466c8cbfe9ed6ba19d1bc5b7ba17a40bab23ea2ece082cedbd186bad75df241a3b8c39ad8a70eb67f56116d88d2d54e08cd852b41ea9ae032ba66f258e780486bce4650d4c27cd9f9adf268c675db02db01e6c851561144fd1a9e60f8ed5b710ee9c573a7e58131607d7a458dfc26b87e64f25a240b141c72c9a5307eeac68e0a9eb968572ebfe0775d7ed060afef2229e268ef35f7c0baf1d10de052a040d428788a8103a05bab666ad15c89befcb2db5682e1f9af7525f98af1a5800e007c17c49b130f0bb305f502c0c7f68bed6dcc2e7f9522d0cfc2b1e0915820e41834454082a844e81ae5916034b6b85a2184da0421915ea7954a8840a81a8508be6f2a15d3e7806e2b945fa805e5e4a3d8b4fd6e06a92d4e4582eb066ac1a6b878a854c2a66c4b2a1402388aa495283abc9b15c60cdb20c7683b5630bab866331a8c0e1184179f820a91e3eaac9b16c28d08802c1984c5924330c0c39be785a4f594e3d541154100a874a62d1fb339fe2a09fe2a89c6acac882a85396d37aeaa18aa082504950b899534f75eab138f5644ebdd499f21ea71e2ad7f1b3545346aa29600c48ded1014691d437d388868e69b17fe4d269cc1cf48fe68f499a29ec5721ec29a8c0fbcb974ebad39413132349555951ed4e44272b3828e72bdea9288c825bf8a562b405fceaa2a8d675d25d1d18148bc3c4690a0c898e7fd4755c9b9154959593951391485249929a49aa0b4925a9241509eb826271f0eba2b0689f2fd5ba30017cf094f7ab634634f6c78c0ea03b0afcd2d59ad449f387f5a3f9e3e2c59dd8a8542c996c7a1422a20100124316000020100a064462b15818a49924980f14800d68885068523c1788435110a42088a128c618420031c0108490518688681c001ba6d72f52f88b090a94543125810405fb52094e054d4357382d0538373683e841c56a94d50560d69300a3a709262ff8372dd49e6594ca567882766aa6c7f468b830df84b9e9380e931653e5c7eeed71169d92159dc254112b408904af70bb82893e9d8495780f751fbe45fb462c664c2c8f8e2864c460fb2c79f129da7bbcd45ae2103ccb695acfe2e46d975fb7d80f0c6ee065428a0c7472935d78f529b5a70946de0a4b91124695440bbdcc9171cb7e38052af586156b88037597af0733909ecc23cfb64ffce5e3e98ad5fdeac2a781a8951694fb8429aae072e878ed66ce7f9e76db9914943d67cf10a18ccefabe86a884829671a3f210046e715f77a9d803972b36b8b8364e3e4f639b910b7f2e1e276449a7bafaf3ce5d57ed81c3efe3b31bbf567fda4d30c7fe6f558ba15d95a410a5c45028895cd4783d988b99483275015a3007f5056a6fc4b54996b25b09a32d809927a8005fd5b2c4edfb04dac4e5994e0d7018d739808069a10294153842b8854ed93d11a8d52a0d1d90673110e33f7707f1885278cc25213a47306ca4b92452d0432cffa868d9fa99c492bf197c642ae529fbeba5c7cba4ae582ae4b68f4e2342e44a902d8dfc3615c3a075f3aef16d01dd1138567d43c558d2d2c41bc80b9f9c0d376621b36574158d444ad25c4bc2d2a6585389eecdbfee9296d5aa7b85f07bb60c6f71b7091ce8097914eaf2f6163ad60f62cf3ae436567e62f26ed1b028cc459dae074448580498d1245335bd17913ee2386a340b118efba2e82c66281ac8cbc2fec3e2170ab03ff5820ca2c5c2f48feb47e6068ace0eeffeb2172f57f36cec4338840fb4c547d9f45ab0d74ea94b67e83436fe5feb1a6758882005179407a274e72822a43385bf50f42312189ff56ea16a16473733496c3ee8829a3852e4f2934acb608a5db2d1f9cd97e9a798c980dda537e791a9c1c88fc26221b239c070e9dbb0429613d15db973ddb9842252b5e26939dd772c642b8744456a7de20eb511a7ea395cb20f465bd343d8d7589355bb457898afebfbc82df47906bc5622b28f29ac1831cf36e8776eb37c6511552f11729ac68579396d30c39f9e4da50fe75feb5fa0d942565f720219ad2876c4b7dd5db42d50342d78dc37accc10362626c275c6d110e1622399bd7e5b64426ad34fa8e6cffef4314df8bc9bdd75b64fbcd75be28167a6ae7f158151342dca87c54ae18a6c93d3c6f1623d67cae73f3a5fb608c920b9bee3e43562f20b62ab3212ad75e3f4b6f977e10cd6942c9889c55a0c5f94330a423e815a13778e235afd5971c15d2b63757efa7764e25c01e0c0b8be40c60764dfd45b5308902212e604999cb845b7aca449ae1efcd92c0d5d5d02ffaf827581f0567e334884038c65f9ef77a062961f9d0250756bf213f024a4b42cd0a4a5cc2acd7cd87538c74851d707e6458195bba501b6d798c0b447096d34ee420859c1593ab56c4b7b4e828ddee1de4a5f4ba6b6bf76d5b426752bcd0e4120b5ed2b3824d46a891525847e4c259ff870e19bb0c84af5201ec01a28a46e5ec4c610011ec5dc28aa5832a0dbf03af5e9a7855eb5fb9a2c4f14c38500ccd66a49791278a495988c3f4b2bfd017e41a328dede253360c7c65970e4c400d4ed45c39dd1dcc554b635fe140f8cbf5bb19b1fa4b191d96c9b3f543fcf7403f413b4e6b4ac084476c5fac65b56ec6cb60deb1a73e6bd6f551d64a59d942fd82185a64652ec1fdd43da542f6e55e2ca8ff2656ae107f08da591878a2d7b3f838fd400d19db70474032aa492d9c9cedba3841367e8e65d091de59a6ee81111a011154e3978998dcedb24db7856e234f9b9091c6ed16993bf6f848071e3578bbfc3b3c6e61a12224ee092a815763b62a88e511229456e8f48b06d742781633e34bae34265cba9d654122d089c3d08046eb392c799c02546cc056520b59512cb099cbbd1fa446c3c550406e260814d2ef08ddbfc326c95ad4cd407d53af922fd78c61a04f5681302a4ed154f8566d49eac957fbd3561adb65bc5a5b7e1c626f24006d1e1e5a713c931692af91a6c307bbb230244b6c23f74551c048d21bacb49f6209f0ab2749683a067782aead546c562955c8a15d2b17d60766b9ea0f9a46e84ab50f3ddcbb75431b91a1466f7df5b3d638b736b6371344309a66dc12e8f54236801299c738ae733d716f6ae5b518285d76e20de3f1e5d1b5a15edb0db91c66b11aef931ecaf409712728e007f03b744c1e6e9976b6bfd9ea9a286f542f4b5ebf521cb4b143ebe8d0a4d7f8fe573412fd14953bc76635b9b815f97509f28653b26e82440db791bbddb06c09c47eaa51df4ae2aee508d2f750e43db15598f8b7a07230648f99853f4afbf2cf069dd54b0f43507041a2fd2bb4165e326bd4b0c505964061dfdf1b696cb7939ac32a8dfe81d83bf30669f6e2d20f105345a9f3b7983fefb47c018b29cb3b5646d26a1c22088ef862fc6c9c9fb5f381da2376600159f2bbf5997854e8d912fb25a6eba88daf5698d91556c6f20857cee155b19258ab2b21f52cab5c3b283d949f452dba29723c42fb3d4f3ac1f67f40b4df49ab6547b55c21986d3f12473eb8285ba7bcd60af277958dfe48fbb97ce86cda3745fe548554a8f2d8a19321126675326c0c71433a54cffee6d2f81d1d617f34f67ac1d9be6eed90fc4afc63c42449a0e11727e04fade7657a0be7e4757a0280529dc09e73b85aa16f5b1c1be774dfc949cd9fa792b9b339e082c5e37e4eb1a4b56cefbdf680ce8b7a5762a6a011fa12e80fa5ecdb7607c789dce050692342d916ac066d1a230b0e9475bd8498032a7415a2e484c24bcf830d48edc89ef670b56c4b7f8754c9381ef7bc5dfbf5fa5fb491421677e95ef80d19cdb55c32b0677e10ce48fdd576177737be3afe036f74268803f092a329e1e4afc31b9d583a645683bbc01b2c5ead3f69c6efc418b333e14e47fafe26548652cbe282edb494dd28d462a4c9ef2e3cb9c8b7f18ac0fc99add0b73eaba12ea5d6865089a395f165c73f90de6603f2b7e5dae8c788c0af63a2a6454e0c5f724248ccf1e6cfa14535df0667f76fa2ab686577741700bd0ab1f05b618c5dae97d1736128b7ac3d0562d937e8b77c146346b70986676ce9e29cd6bb94238e1e62fcec109b3de93551c0011a061d14847482a88a484da2885c9251bffd24611df2249a71c943f2698114e78903424569ecfa622a013ebed5cb498389d98410b38274c69bc6d2059bd3a4745303fa8d3790140833584499c3273c2a00a4a110e55094df1410906052242aee1a89a304db611ad674e17c237857e9c9af85f3c93ff81292b74e952f508c21c2df922fd931d5a8c698d056de271a926f80590283d5bbdcdaf3aaad5566d095d5afa4b9457e51bb25dc0e08857601675756c8efa1b0f0304e44c44d160005a3c07d07ca9c2236d9698d3b90684636e7495bb282406f8a1b33a37a79f884f1d1302bcdba4ed868419cffa980086ecb08962ac7d3731834ef4ac63974ff604015b768880b03779ef47a83e6b29fb6e8a6b703de19a5ed6d7e68b81e28aa1fe21f3ca7b0b04195a665103ac2be723beeb355b3c7954b4e03ae8261c578661a3107281c1941952c994ec6052216949ea9596d5c2be2942b2263dc4af4887a91248cf6b4ada2e2560388f456b0d58f70534de7cb75b45c18ed7cce3b434cdbf575e06920206e8e0899ccb0f937f3e4fd3288100e294baae00118b15eb2623547433cce47ef5c09c02c6e3fd8c78cfc642cafea800e00dc607edd9422886a726d78454c06cafa5959c1f048e0b989b5de7f66da2223da2d394df0c5eef25dfbb526cffee7db38def6139484b68eb32021179ebd848305e180d4786e66ffc636e3ecc73df113f9ba698ce4e399dee10345b862411aa5a791d126a8f23538a6748235d38b8ee4442dfc6bfd9600766156f567c48b6cb6f30aa52bc3fb4c64069abc01f1039a2d3f98ab198afdf45a45c610c4ef5743a424510dbbfad05cc1687d057932f4adf2cd50cade351367af07b5b25d3ecaae432a16b464f04c90a7dd1e8c00e4d3f43eef9bdda2845e3ce94db571dd83b79ba5e12a6d641b9e7f3a0e2fe6f55ec87a08489b1daae41865a4d1c93fb238792d0aa53111a233c5f9305dcc10f74ec7a33a375d9d0294ab9cc20e0127caa4b19e586d35061c724f55f18e932e5c6a1b4a6cdc7fea1e568e9db56dd4b2446f45a755df968303984cd5ee2b8455cb5b0219f9a8dbff585d879eeac32a869123eb10c8436fdaae130b1ea7f367376e54cc104365d5d8d27de9552ddbb55f5ae845b7b4915b2b1dda5f1e445dd08e83a64e73a7e90f10726bb22f109bca4d09e25a2df470cc1100f342758ea906220823c04844bf7aac834d24415f3d52e1c6177615e3241119065c25207160df525ce040f10ee445a4a6872b507e04a48c220ce2aa426e4aaec34ee30e405b35c3d829bab5f0c48efb55845db938e7c95804c6064858e8b864d4d6079e26727205759b20927722376cc0dc280561ea315fcc5919efb00b15a0c28277ba19b997385507b2efc07566edc3ac6e3892bdfb585f241f02e1ebfa039fe196ebf00f30c763ce42ecd588a3df50246ea7c9f92d3e874a72bb7a4ddf85ff1fa33e918039f5ea7b7a090051098c3c036088207016e0058037efce04f30c000e7d79ac9f12637aac5a82555fb148cc0a4dd8041b1c66a83c742df3d8bf21f39ee991102f00b5ab376c78c837c7c1e6af50afa2ed9ab372bbc4e216ef9f46864a8e2a9e8ae86479c3f3d939269b24175e4a0fdf4107d2e5b253c8de6822f4a0e07cad4133ffef5530633f96f2657fa7374240e75c1f1042c0418c86a91f0173decc4e88232bbb2eaa8946c9ec23bb229d273ba6849a28178f72b6d3bf7ef4e6366a5aaa245322b7ae4f89f6fc236b7e57153d0b07994388fc7811eed96965237cd852bec77d6f55f5dfee111041695a62cf66045557fd918e38761933a7ce61cc47f40802e3fd8fa6014e7ffd1d40604b9fd0576e0d1c01b82c03412f1339148fd978d1a05ba2960be466d861fd31acd2ca5fbcd49b24a56e64665a91131589dc345219ef546b69c2ed2bdc820e12fa8a9807a16881d1197588fdbb836946146bcb93ab87b13810bda31ccc4f533a599fd57bff035b55273caac2b3e32d92b2cebcad148364f64d60d7c2cfcdd2368750bbbeed63d7896fc5f16894658d0556899034cf54592a8dfec70b57ba878b7b75f285be1f9d21c1e32f4524c03e8a05646808a90429fe533e9fc9e2584f1bd9ca6ec1f6edf8452af7aa32c63f8959562487c0a8be654e048ef957b23738abb5145af52fc2622e46fb79fc281a4c113b20c91c87c03be49768cc8d510aff2723893530d7ae8ba5b37dd4540c2b517af017348b6b9a98ebc24e3580b751ef4b983ee574dba8da748be2144ba5f5878aa000ff8c0e09bbafca89e2561a2e84320a399a62ea474b482452286e6ff168154f6c4cc0f09c00a09a56b7b7aed7d804960cd3e7c3815f853074271ae8a2acb5ac016d36046db5afe04f698713caa93952e680465d45444f78cef22fdc858e2d9ccb03752a31d22266246a01012059ec37cc0570f0ff0e047655ec61cbf797899ef254648de1461821146ee6e897fbb42685a1a0723fc3210fc779cc8625ba88d86890f70bfe2119817ac0897a16b1cb647d4604316edab552f0c06661779f5c158e34041e061f1dbd09965c8b684d229321375f106bd0907fa9ef3aa7ff0decee6465fb3d5984f920903ed4b6fca65f71e0fc70ba454e1871709d59f3aa805cec1d4767aa06f19d41aa3615428d9d3e7205ae0e22b8791d6f7c18853ada0d4f72d8e2725c1d05cdc71eb53ff16d2ebfc7965129f18e81dd5f1cfe3137a0e78a7ae3fa2186d7dce4faa3a55b31199c65192ba63dde093816334df6ef3cefac687ea71093636935cd073aee68fe4a28dc635a32227ab2b5d01c655bc0df937322feafd5eb449fda506d626f529d164eb60bf11f171f444f8c6fa84de56d44526d1f8d08fcbe38a472f4e356833bc8dc11ca3e609f4ecc98cefccb344ea266993654960401b603c2754622075e69e944ecb7343d4bd161481da1a3a8c27e9f57f7810782e1b164ae46715bedf3987c987923e2abe7ef6d58357a7ee0366118b3d6ace45a7c2ed13664f5e385cdcc62e55b9f9bda29ecd3c607b4a0df92d065a202ae0e7c3936c16cfd0d3599d12b43fa81aee918d2e6f8d9ec8ba53663ce80b9806626f7d01934446097df1b410a624670737e79f2fa5076d5d2a183ba9f5aa45a4bc63d12200580b4ec50c0b63d34d0de9448d1c81f831956706d6d3242c612732756ad5ec60613d0b5597812cc5e2af9f049317c46d665850cfe0b39ca34ea4108a8d1a3b42cb8f1768f030aa2676759b4de3d3e869cd644888045d13c3c927252fa904f4dc94be05de02b2a373361c3568193bae3546d44f19eabdf5dad149535adc22a24d1a1feccb838dc73f57bc628182d42a2838477f862870f5ca05f5f99aa8aa813acd2d767eb2c860dc1821e20059728b204fe0897e0efb2074d9eea861da313c7a2fce3412d60248f1211cc12d275ca2aff33880ed144074fb55ec5dd4c5bb8e045c849d43e41f19040f902777b47cd5bd66e96ced565252035a3f864eafa761f6abf1c15805eaf258d679e48061a0b8bd91b22ea4d97ca0c6992fde352f4e860061ce649fdc1e9f8ef210fdda3cd0f893fd6e9b8a2ecee0384c4dea2cc7e3b4803902d90a07a697d6c537d8088dcf6d15e75a872403d3b2e85fc1be02e823cd6cbc09531b9fe967389ca99734d4de7a98a705e3063efe49cbb10eb561ebb14607b625bede0626e2de85930a1c4c4d1f33d60a835183bc4c06f38c1ec8452c284e9fad7972566b65fd2cc91c419c42a00b0cfb6aaf5b6b7881b7aec6894b58dee19b42fa164d90e0590e7d52492e04df7b0ab11649595b8e7824b0303cab159be89380c3aea99aa9b8a3191d26727654013e5ca83e54a012901f2f0b6090f0f375a81212fe22cb56113dd26fc96a24165ac9381a238e97295457f4d291a959037b222f2453763ddd6e9695b1909e4c2294a06336e0b7a047b8b74832ea327e2dabd122bd49f1543ed0313c600ece2c465cd58a7fedc4ca92c8c910743363fc694465cd806020c77ccf13bd211fea15d9dafe27e90414cef3b328109b65409e361635e98b2053a09030fbc0a6a07ef25c334ce8a962ed2ccaf51b52fec1e9838714f97649e687e019f7abd08a811a6971d5d7449b8000a40f34c975584e466ccdb79571bb898229102bdbeffd636bb7e5e839650238a3c9ce716e0ce47c8b0082dd1a9eae5b03cd921a91d3fe5c4de468c5325cbc2de9f0fb140ea143a246424f14de1e46dcf24b59150ee1514434454da9952f83a2de7c366680aaef8f202747614e835e7a635180dcf51622719e5d1ef803a6b3e531149f73f4b860d388a00f8d45b12c78924064dd03a13920962b172524f53f09bd916d4996c073724d1e80967e9b7e6b21141f61bf2d6583d577ac5510008e9ae1c1d5befd0168a198da8f1bc25602a57c3b3c0ca3a7fd5cc7fd9606440bab9423909dd97e0ace2303a6198ed044056340efa3396260d08f96b2180040d61f4c9b6b343068d76823b168d0bae21e7a19cd82d36528cc4f8773d04d0052d1aca134e857c2f0a54de577347dd332c69eef581b3a2199b42715b24657b7cd83baf9c4dc1e6324bb202c1677a9b949721dc63ff17b18c1e2d891401b2363d1c8a6597d85376f9fdc2a149feb937fc9c689f53d52d96b0471bb15caa8fb9c470a15b0126dd32a52570f7c27741fe4a1b5b1c1cfe24b5c967390a95c193a85eaaa97012e56413afbde3ce9775fcfed4030e69ff1c4d66ec301e096b074738e7708204a204d988798d60d8d9552071c6022042831ad15e9e5e568ebc778fe27e46c2cbae9e75b775bb074f94812307f1c4e362af797a85ee4362cfb84c0d160058dfbed6eca1b604ccfa04244583cc5d13ef49cbd4795da20deac657db4ba32945d3aad93e2a9b20b53dc92f4a4887bfdec75fd6bbf75d054eb4024e4a8162d01c061d03dd28181a21bf9abeb3dd8208f0243a314e4a7f13c4ab436d887924c782824b2376c297ad7a54bb15375c7209745b1835f369c73243f778155866390aab42bb8dded6196536d7ff388845a51b89e4277e98041c814a3dd7867e60b4abd14f8853df8f9b5d95b64c86d4c89b4ebddf39bf70bdeba1e85d8740d39c1f2013343d19523b8d97d2e2517dc4a7ec4446c3d4a2ee0cc3ed4c12daf7bb2b084cb3c5e031787b3918990b069451c0469e95413befebd3193cdef04453952f866e503855378ff6ec9a88e7a026f46ea4a8c7a37bc951b84d6be3e3eb539d2eaba148096a9b3aa2d244ea69317f4d9881090b5c764302461c11647abd3b6d711b35352961c4b7c9fe86fecec4d1c744bc61ba24f26b4f2766104489ef5aca9d22b2d2e965e740acaaae47fc7e61d5ce4d68c9ba296746cf2209504a19e801c3f9812d143367c56c67e6423085d3c9f019c6c04280be1c6935b79623faea0271c06b655f4fe48a28fd28262d0ea94349db52790ff2f2802215f18aca55a057a220c80cea40869a53aad95eebd2879132417086738baca77bc736064cdb5075782f8b19d1e9e8aedc1540f2aaab1ad89662e8413611b669499f43c9669d599630cb78119cd0e84e64d1035141372d0c1ce3fc71c5321638127a150ef23ff31e7047f061983e8bf3806d54f5e434f97ef02f25c7f9cb2c0ded4b693113c220cdf66403e55aa82f0cc032110f41a6cfdcaf31a73e6198f4a9465c8ee3f774cc60aa54d68f81df04234995b0928a9067145102d4fc3325164716a4cb130d270d135a4baa08d002b5fdb3b8a39ea7902dfeaf3a3c8f9d517cb56679cb391b752c6b9cb76a9258db2b047ce40892db394766d2a5703fca0e1bade5b3eda5551a0e8eb42e6ea31186575c1fc3150690bb217e3c325d8d10ac93a9530544dc874489f3d128b7a36270b9861e1bb25829c7da5678ef6c02090cba32c9fc40a5e66027476d3f8dd0aacb8803610bdc118c674056c7ae8f32b45d519a533e1a7c182a4473ddb3fd56940009979883d6384405cca36a930fa99916b63dbf4fb18531ff9985184c5efa67c1b2a82fe33216fea0b65ef8efadd078c3ce8fc3ba4f327324b0e1b79146ea3f3f654562d68e7e5cd8408a08af01928f7ab3a205101ea324fdcd843f18131b31fd1f56b9d4fdcaabfbf371d926e3c7760166b417d662d3b9fcde33c26596ad216fb7c86d8c459bae562e5506d4e17d023b164cf4d6021387d73e59b5a7325c65c652d9debfd309ec6c19100e31756229a2bd6844d245c2e775d6a13806c07c54b8f0a38f0cb7747bd3cf940a5138b52823bfdaf6fc89dc640814767b9b83a95117e0c7497153610a0bfca4fedb3614f2390a76c2dde410f4531f467f2792f06e8fd37f4b5d72da79a598f6f28a10e7a6f9ba17788b75f9c00bd774b02bf9140efef108514a545010ebc3089e03888361b32e493498beb07ecc62fec5b488a809c330870ef201c1d9a9162e3218c475104aeeb60031bf5d82c8d588a4d8ea314bde4f93f9fe2fbc351c583ab39d9586c8d32d29fda8009688aeff56bc0d8f87780e48af0ba3df200a7b1464a9089305f37d2b0081b07155f6e12589ad672c00f5d99727a824d2b76024d4ab677c684ca85100e9003ee0239300295ba71917dee7229f3bf61e33a19125bc8f227d746c54c96d92e4af5ab66a46429d0d1a57719adbfabd33eb97272888ad7d70a50e250e45fe2f5bc4c342132e9a21e527a881f07aa8ded011bdd1e28f1d33d2f20774553c511ead3131a126be8d0b92d0a0ef49704b99ed70a8fb0434e41184b4642013094308631968df20a390109174f27dab2e9a7b7c4ebbfe6e1f01cc9a926625916ebd020ac0a0a5c01c177261472b460f0bbda4ba89384b3693fd86a165d36238e9b25c8f05da49ff06cea8516a47bf4261721eb943b784a174a72d69188b09b13b05caa5600306524043b695bde271d02d9cafec9885591754d411e5c7839220b4453a396164cd89e36cfc1340d9cf0b1b945d6bfe60308087cf1adb57ff2511773233f3201fafeddc023f8f3d636b808b41e10c16a1bb447d87b1989460910ff6865f530535ecdf312c02a0f96e8daff5d3c0e2f69f785b2c417bb9ac1178a18ea58fca750d41e977bf2f6327cc113bca6a846fb7dd1719082e52a452ad7796cf613acb02e4f7fd9e437dc2c456368474b81a53d1aa7c9f70f5ef99c2ae707eccd73522e499b5e75c026fd716b353d844a4a205cffbc0b2cdc269878fdf3d6dbe7b1f09a561b2e5bbcf6ad4deada631ccc5f34cda80145f3907212bbd9946aab973ecd8efe053e817500374b7736a40f7b6d66c9ea87556f15e21e6bc8b13c161422db56dad915a4eda49cc484d19a8c6bf3a4d76cfc231a2a1e1a89f5486c3da1196f2f1314933d48f33e4a451de2a98cdc3aa097fa6082ee6f6ce170e66e0e26d3e7ade8c7e83221acffecf61c1c575107742b0c4635c2a6bc743dc64ef058a9f3fd132736c0bdfff847f624b6962824b81e88a202103c2b25cab3f654f7954bfae17b2d8e60e1cc42c31252e2f9b7e951c07ce30816365e81cc707f2c2ba16818db6098ee42ec4de8461ecff34c95d36f65e81a94f80af75ade8935ec11bd57ee297433a21550e957221e7872a8e8117566152378ad627cbae64b76397f34c6b776e2011302dcdefb7b343b51afd034e2b22f1623d9053dcb4aa78c80fbdb967fec5967e35c6f9f299c854c80aef7e91351e6837625b9db29357e8507d2d48f196bb9eef4c5389afb00890c8a3e1ab836961a82845eb44409edd5fccb3eb678a7d4ed9ab31bb5139922e5bdf691bad4698841ebdf560c7cbb727298e9b2778ca4e20a9f4313023be974f907f14e8f7f483b49573247b41a70ad35524deeac5a9551cfc3efb37598e4440854b3f69a195479ebfd8d5454ee86c26d46691665349296ae13c836d7ece8660d1a5c5929c7af63f269e8148fa8553c6b27fe38da500311d808f54a3d04c3dc83f4018b4f70cb8a94b50dc62c88229e844c784fb2ba3ffb6ac0f022caca988207b62e3803898552543e1a20bd01510e1fc82bb4fcf1b6794cad94bbe77eb2751d239ca1dcbd7f0528d2cdeead735451a4e9f10a1f61466021b5cddd87f885eae0ca1bd0e89be616128750cf44511900743f4bdf6fa33b41aad228c797cde430810f69bcfff4d40e5572dace36fbeb6ee9d3313f468c7a8f2273daa29ff2939e373978d41befc544e63755ead1e8cd9b5ea6723a99f6d4f0bf468afadf02771aa39e216cfcbe05ad7b9d763b7ce8f0b1ca74babdd7f115fddefe03d64d39282b4d98d294d0e67a37b058389b51351a91d4c090772e62bf0d2765357a7bd2f3dddacddc2c638a204f20cb9c9f811e0db1c2bb4160ed7958c983909dab21c011e896f250d682d18c462435fc5b9bf94b1cd44853f0ac34d8ab01f67850884d4a2173ea3bc4772a8fcfafaae6635eef0d43b79a8baa06e2641500398aab8949629310c9c4ed4faba16a88d6ca95a471dd4d47874df31d5cc146344d970fec86901e63f8e10bc38eb4b454a4fd50b687e486ad3f9cd26642af019f3db3dc118570df58d67f1196f7263fa4b73cfacf528876e325e72737ef4f57fe2bb5c8dc9f7943ab736ec68460ede1ba290a4ea4b309b600794c6263f970ab8d947ad49efe5b17e3747c72905a705f58980a743e00c85ee42166fa3a37fae38d4afa3c7c5c47f5809d9009a69962f1e2c9fa75b8b6037f791e080caeb4d2adf91c251fff561b9342c357b6a2f8fbeb32c11d697778f354fce7f5af9f1590af78eeea3310c9bb7cad8b9abb5f6cf1f5145654cbcbe0581c3e651bade0074d4191428dba1a2713dfe3426a8c426714ef6723609a59471e96a8ef0fb5ae8a4f948314da6168db88a800fb7f23201e7c7a0f3fe4185a03a2e11ea198479c32b4ffe841dbe51b110e49a852d879aaf49786cb984ee8bc7820e8a3ef269f3079bfd4030a75d0c3826a3d202d7e7d42fd10d3c2b45e8580038910cb71cd73a7cec5bf2ff6891865f13149a24520a905bb70def5586b9649ba090de5dc0a6f66b77bf5911ab8b80edb89f34dafc004d321a98631f1329d722c2255cfa533a6daf926510568200be69b6f51a2f12e3208d72b61e4991e51ed0e79d328e710e4dd029bc881f1055cd449994ef7e227335b0c4c268cabf9d17a824e9c78b5719a4c273e48e38be4b43426b67cd2d87c80a248afdda7a41fa80e68d825b817ace3c08126d5bbcad080355eadc7e419fd6b275903c0ab2e34339205264b196eee440621042f2eed99c95406894b68bd58e214f5de541acb023d20dadedd8a0e83250737a2159a0a23b5021a8fe23ba99d80222c1e689940c46050fbbed8f0ad69c0b5b0548824ab97d81b5daaac31cd22097188debd97c3dbfb91cf33ba0ec6aa0101238b462699f3725ee7ea46c0d8b09e8630ad5be55a4fb4e1061ac4610519f942f14e5fbee506165e0b58f8e26ce03394f3f3460b867457dc0c3d3d470c6269dd08aea301ec07866df174c75cf9f97f0c30b813c777f4e0960acf43eae22064246b6ad387308067b67afe0f669cba5c6689d8ebfb5129584b77ef889564773b13295cf781ca5dfa4c5f2d114db2d64d021a13d7d5125a3351a68090128f423323aa66175e2ff8be72e417e9c1cd0f3b5329b12c47df458d0e10b594b0b88e7e4dbcc6b3316a8b9d3f41a06c3338c6bb8d4592cd4d0fb9921273c64860039dc16d7f5b4a6a163223b99302f4f4ad16c5bed6662efa412462d291ca4a8fd3046a24416da9f49fd5172c9270b283d0f7802138087d999505153fba2cc42fda9bce1509cdf96b168d145a447b83e2bd13c97125451639ae580d8d4299708642fdfe6c11864f63daae9d0cab717e08468b6cb6012f72a251293775138a8c3e3bdc70a2445058a75cc801b81fb15319847d3fed917750c6e97de9f825838f7a704d4c487eb3fca6bc46f715d504696675d74d44c3b85404f0bbbfc07bcb7f02c2e07290e12e11ea4979cc874cb4c14f429cd1894d754e483f6afd40e2bc314bc77ddd81152f1de04a94ee4bcdccca2892849ad2674fc988cae657fe90764d632ef3c6b8ce1f6f795a920601e41501f97b4849fbd9bb00a9a296038583f145e60b4dcf3b659e37338e38c7df2701326e4c490ce02be0fa7bfa618cb80d04af40ebbc3f5a9746721308d42b10e8999820377aa50e7c962e0ca1c06f591ec44b30733a3816949d440d2e9d28f1fe14794f7558249420924ea08a0810f6cbd5a26452858d6fa80d4c97c29926e30257be9168860e5ba62a93215c0262674a070d54e296c7c7f05e22101460515e933c89c4d99caca7521cb07929341e2a4832e31a0122e9efe8a04cc038ce0dc9de0fb345ea7978b685ff21efa8c6f0ac18f5c67f20639864d405547197b046399b1166e2d8f7dc78335f28e58a4e045d2128b00bce9041001c95897eb1b4ce70dbae2dd74479e071979258a834d2176b3859f3a14b954841bccc1c016acdb1a2785253b777a938ca725218024eb428d2b7d4cf18299561ecada4fc4f3957d377b606914b95197102fa94ea9b53fd6eea90940a92f25bf5887a33378e5e935eafcada1ab832dc14b30e8da01592d68caf864cf06e3c13f26afad5e731f789a13c5e1b566df84c9d3eefd7ac67c4f17267e30054b4bca011c2da5ea95c8bab2749a561cf64b88eccd85d3f21f68cfa9945eaa7e6d649231a48593bb28cb5e4bcde79db1df4c246d9a72641034354e926a650ab9b353a9a3b58c89f0a398722250c8224e3fe865a2889fae2f2a8c9082611b44078e3366451176cc999a241e11d48631fa13d00c762e8a4b5a8b5d0e0d2c6808137ce109d3abdae87815c60d8cd04d414f177efbbf46bc7b1df02d7af8e1b5e4e084cffac6c17acdafef39a9284b147c02494c00870a2892c6b4bfcce02297732ec6a98bf3d36208a30adda3930f529a6c7ff2c50596ce7336747206ce57b826f254d77b3cb6e2ab57827a17082feba258ba306033e80b409530cef3eb0f5c68c9c959beafb7440a8516ecae0c1b16c0354dfc618454666b55611e1eb2d63e9b8a535a919ca23787d4a7335d91cace77b4a2f4b23f79e470c75e053c955f56dac5c1cf3d2565cc21d396346cc72f4beceb28d4f43e72ac9c651f9b83b308d025a2180f7acc0579592ebc1de853e9769d235a6d26fcfdf07ef366bcca2e8f6a6ddcbaeb47f7db2c521f0b0e318f0e5659dffb172dc2f0e2c0f13fbbc06b7cbb3ec625ec933ef9d54860b8839c92949cf26369238880b51a2fd11786f82075acc93de1842721a841129fde503432f0217f9c7005b53a5818077135679e80133f936d88742e1e16987063b631a44dbb13e1845d72222ca59193ac38a622b2a59ee8250ea2ce83a7f21cc7f979407d5072c61ca93499f2170decab63edb5e7eb387fab79790d648809db3bef891856adcf120e3e3836a2678ce940414cb942dec3bb43926e696aecef3d53ddbc1836b93f5414623728c50b8bfa7ac7dc9d6a21c1543afaeae95acf49be8540d42937983e579188e1025b87a40af4ef4227f1402fa7143f08e757ca6a4070f7bbb1bc3ded971d9589a2e6a7f7df5dfc10ec91efe77a6dfe898b87974dff839b348d3f34c3905c30c9f095f1179a0998e11871d3d224e65ebda3452217c9a849251dc864acc237794241d23f35d70d83a5acfa9f71781cda5d4f900e07c977acee4069d739e0348b9f5d69fd461f30855078f8e03adb575578e5bce8855f87fc650eb56b7d5abdbe1eb93eaaf573359b75cda0e94e53c6629c7eb018e6239fb94a6b9133eba1902f431e95e2f6dd76304f09c418560b68012492dbcce88c50ada4c5101f8ecb38d7d3f94590940999bb569adbbdfd9374abdd35194a57cc905d9d760886be933b4c69170096fd6ded354bcd7acc3abeb4aeb1fd3c241d62810f3b21c05645de08102363dc40619d5bd54c3c56d6e9f51aec37d0d16952fb107b99dde3a118f17d73f48798924b9b80c93081379ba20835ca75ba0347751a1fc9ce807850384bf72330e85e4ca49e17e78c20d3122d6bd8325003234c4f99c3636564db1954a63e7654c709700fe5b29a948678641e9264ac4288ca7c6d84c2ce43637c6302986d8d141c94eae01741be8f6ae95d328464a1a7b09e589bf8b6edd86965e971ed4fb6b5517613df1420fcf9a7824bf05785fb3598495601ebc4f38786f0b957bdfc2caa44acbe64d30a825da55ac9c5f4dda5837568d39ce4999a924e9a00a50e5759a46598e8c586024116d4dfcaddfa1481f26b7a7024be93f87506bd6ed61a2fc10c2260a3caab0a5601f4a10180ba70b1baf43a497b7af4984ee40f169fa306cd4da8674ec94fb7d25bb91700ce9f291cb66a56b0d481414bdc9804216615cb011877de231722df443de35b0ef89c65fe0c69df4c92676b709920825d10bf361f551a9a0853270e084358ce884c74b7eacde5d4269122487963669678648d1f51f19160f6e686572b5a4e036ddda22f55f6087c0a8745e1e7bdd4d9b5ab61f775170ca2084705e6e4bbba312814c84a5496c4a70db3432be323a8d58130b6b02a2a4cba601b2146c1528c5eff2bb8c8ae56c945827e2c4057453d4f57f27cfc6fb7492f8e98a8fe5b6da88480137dd423a28a924b52415d5da0de5149d4bfed665827c53287e3db9adc085565abb007853a879685d91af2635880c03a854dd706f471a09986f114eb99f73639692d0ef979adbb47883fb4edfc12a1eb92e3c887c3aca481c7a9c1bc17ec6364ccd6d86bc159dfad9b9380c6b753d454413e5fbeb5fe375119ae4980f725c79d184578076287027efa6a72a6839547a6fd1e5ca3f11413bf121a2e2832b7002cdc84d1bf584e1a7b4297c58494faa6bd64f305063ab7b87bacbb7e1a66f9f712f68994695df2611fdb662ed6f439f7ffb8c83e13e7928f726cabae74c03a2e781884a288f9bad844cd5451e022b59699d33e9844bfaac92723712b0d6a12b46964e451aabc127fb91b52e13a725e9d004955f890cd101d55a6013e6d63460b8184219a89202e57a2b103ff88202661122b4d6ff81a3ce78326069f800c1240373daa8572309a46d00fb0de1ba9f1541eb5caaf5d61d0abfd4b2bdf5feaef8dcdf53767f5f66fda7856797c25449f23f27668f958aa7e782d0d1186e67c7dfeddd67219ec29a574dff67b6a83955537fc8051fda24c5eaf615031e7e414c3c5bc6c15a5dce2179e7258c16d382f3e38b9714d01240a8ab23c549833034fedbae18b20f3de2c989cf8c43808acc8ddc52171ef6feb11ef1d9e3de8cdb48ac2715075f32b827fa7da09bb7efb2fe82ad98149ea821c71c16bf66bbb8a36762417f0371b0e47fc006465f4507a96ee81d6658a1a5b394a5f10a301711584b9ca671341808bb44e6579412bf89d3f4740a64b18e30873d0508efe8d249d8320f29e9bce0bc70b48df5ee2acd4eb1fda4671896c93655326c021e9c48f70d9848207e1a43c870aa0e5d8cca0a3222c3f8ce69d1fe3c448da2c044da311f1bd6ac0db6d857baaaca16922924c76760b61dc26ce97faad813945669f77e134b05db2c28385e5afd8a693f82e4dc16e8d251f9c64a39d57f8154cd10056d7f669d90fd33a44b5e23f948a4cd17a980a1f679158eb17d68be7123c6e707deae747fb7df585f6ec6aaca780cebc2d012fd2f8b64ebabd6ca50c2dbf53c26231c0b72a9bf674d589b7a4ce703b6cfb65c5c925faa4ddaf4e83cdd1a31399f5efdff287da35a3c6bf501b0074b06797e5a026119c0f8066cc26fc6e37d67447199923a3b4bf9e3b1d8803b9b3f7c7419dcd93b39593703c1948140a974625dd2d48b1e707277cd89e721a313f1bfe70ec607cbdd6fbee846fe996b1bcd899b4d0cc5a64612c05de8801ca6eba7567888787b982c45249660f425afa807477905f855cbf4ada20aabfe32e515f7d42753515a20993523006c2e4cfe07978497082b406133376ee3136f17d2c51df809237bab6dcda43bf298e9caa2213f57755889ff366498f8d001d869f5ea5fe9b785a0b98ef5d2b99bb39f3c009030f294e67e2650f60d80c8b0d5edebb410f81269d71c00808c0138897f1b47197b64eb80a3afae0153f5784c1eed78d15dcec1481265c97c15a0a9979408a0c11a017ce2886156b7c85fce4a6885e52517a7ddbaa00c157058cb65dc54cd82c16b037a433bd15b6b9db58644637ab2384cb6a0bd560cd13c83aa8d7a652ed7444a3fbcbc0e3f82e0ba567aecc5761eeb7e6c36c80ea36f9442526eb9bfe4fc2a070c44c379df3135233a7349e55eb4a6a315aa4eb9257972b2f3ce327536a0862ced5ad64c42b90dc2b883f4346555764020c3ed3a4d82fd886e0eb1b84374d913d70e48b11ac5e492b9f272b36451d6a439a5bdf95c3bc6c68998a3be6772b7fae3b2e03005127b1738ade6d40b8df4f48059904bba92a00ea38674a04cd0fd00e81d5b00fde124bee0f8d92ba555a55a2b873491287ad45eae51ab166244e3ea991b3989f98f475e5cbd22fc045de39b98f77bda523155ddbc80228eb18c6a7e8583e968fd9e98cd8131bf84ad3a33f523070da76cfa2eb244c229ef79f85fae68b080b485fa012d84deced39b55e8a0c62757abca4a10ab68fb99f8132fe19d5f8be3403b79d6d4619e3509e759839eda842479c3d8a38806f4a55f10a03a89372b9578c49d7aba5612ca6333d3ea1e0d2f59490248ce7c5dcc5473384b6d66b647518564fdd26e4b07e7d88d6d43a0c4348ff2128c267bef7aa728fe83138064a005edc85ef40208b66b0a1932f371086855b59cc0913944f2c1019beb6ded8be0bb29ef17dcec85fe26398569982a36fabfc9b29083ef85e95f8a8f1fc3aba42cd7e983d841ded7d00770af4c3ad29decca04b355ab15c456d785fc80b56b621ade44368a3cafc989578c0c672cf90577e4d8e953af40fa46abebf130f69b9c8eb811d407b5a37668b78c4f54d0f405a0d31b370187c32dc22723cbd663c7ed90c6cd2d365d35356b4dc5c7e79013c9483ba2730e79e77653b39dd7e5db8f4042a270daf7410a1a7f8e15d30e1c3baadecfd655fbbde20f5af90ee94346e4657e6157e1166740acc6da7eacdac1aacdf8cb78d3429469087cbd036f863aa156b5ce4feb7ef0d25dd7f8779633a7ff803ab2d0f375f1720746062bb72802c9aab8c3615779e06c4cade60231e0fafd92712ed027f7d9fc07abb24b8912f6e41fb99c354eb2eeba293f8d14768cd6e10e784abf9341ee6afa89990861df54264fbfcc4e8383187062e88d0ea30dfb1add0a8a8e95118a5a9cda1014e912498e017d4fb6e57abaa500fa75a610aa9bb3405477e81f866db6e3c04b7c2a97a13fcd95a21b111685557e70c2fdc095dd7ed540036b6b5ef40e4175a154e95cf2cc14876aa071a681e8319920a7a05107524f28d9c7f56e01329d270607cf4fe1487c32d86c9d2b531c285a9cc08fe94000b20f2a01ad535688d81b1234a1e79d925724a0b702b0a812f667d8c87e08003188361ead9c1895a140562d602d4a05848c60526cf88d5a6fe1081ab8b5a0132a496b45cfdfecdf44628b4584748465fd151e0a8b9599f935f729dea0b32fec20a4a1aa8e256ccac580520fe7579421ada85f6f32493299c80a453507839ee7ce6e14248ce12398af6081d57d1867ac3105c5d03f08757e8ecbf5acf3a5564baeeb9a4893a23d03207a559fb15ef4f7535d1072a6c64298c2e0a6cc07aba935c72a29bf8fb71cb7e7aa0199bb8408ca1569b08eab1f9ed85f1e616e36a4943286b636795ad720933a38dab3942c54813af707881c67d0e7859526d55857230ca708773298e5b63b04af93302630fc199c7294e7bc15736a08a8636b2da13990dc6e36657a0f1027ce3175aea4c7f9cb819ae8a596a8de03e3941707396bf53f6ded2245c2718ce684c874e026bc807975a4c359aebf1f8fba6fa7b64bd12c17976b6e3f25095a63a1d7b2ba8327ec94421622cefb7cf035e90290689ab628812cb7442c32773c57686156062db141a3f3b88b4094e72384faf327f60460edf6b1c6c272225b0e1537cb4023c092d19a729d7b60bc1cbd8634b49a66c8939714480b2bb9b2f5ede70c75959914d0742b8a7f15ce517df306026d0329099d46bddca172f5059fefd4f005e4f36640840e148415712cf29a58d93cb3ad727298199e29628d2579fa2e4576176aef7da05393a27808106af4bdc6f10ebb5c95b9b4c549523bd89a4f47c3ea9fbc0b5bcec2ca0b40f8a3eea20eeb3476fc3106ee4ae8924ef4fcc11a24ef92d57624d6a6d88e64b8fc7205c9a3459168c6f2a73c27a238455809c5704ee35330b67b08f5723fc778ae06ec5fc5e739f34b23f88f47784330de6f0489648337f002e7b206446e27853a3f29b96bf603db206ab49a32cfc863dfa277c27c7239efb7f055ea2460f3ada5a2287e0e05123906960477049526e3f53bfdb536cad0186acfa8465d74d4d31f81aaa984cec1f69942c594bfb2265721b5d0e79fa8bba97a54486b514cf65af8213d329a1d8c491935a7912a07fe82ef14e1946ac253a2e537cf19aa0754b70348c4179dcb216f27fe9a4b3397b81171202747e760d9b68bfcea7495731283b8fb0ed0c2324fba509ff70234dfc351ea95044c36be6f32021638eb3b871f20d29053fc93764b69480626eff29f133147ac6842c889aa1f49992db5524d06588eb400517a57cc11f110c515ab3b561345c2583b03f4250fa38e304981ead19a42c9a0f7b89e242dd15202aee55c7aa4684cd17216f98b1ba410475808d784e83eac52454b0f082155be2a88431181fe058ad9be4edddf014705b9e29ee63179ef54702bc7263d1c357b13066a686815f768a2942e5c765402dfa821f6c0c001a3ab32c327e1e3f9cc0f1c15529fbea1db314efdbec583a92ff924955b27e17c80a30f2c13c40051dc19d2c922a78867a44606433c623b1a2f120619bdb1752b8f2884a04752a04be3bab1f55d0d2f82434c98fd76fa7bf5304aa0ba1f29abb9722ea7fc843e26e76988851913194e1ba81970a74a4c88248a31b14dc0b6be71ab799a3a38e9e5426531dc77698a94b1fef82fd60607c234801387df0678201a3ada2437c9f24eb228334f465ef2e394e90af4723f7973d552680fb29f7d8f6bb7a3526e3a3ef1125e7c88146570d99aafef3235ba452a8849dfb03898fd976e7ae18d4a056b810ec2e9f8061f1250e673def1ea198019464259c88451d07ad3e0b05cf4e606bd6db3499a9b62543591e2414c74adef5ee79ff0bcfd144fdf26f83022591b4681c28561ec243888578d291adac2f3b87141547837fadfc3e98eb50e2aff306c982eb240ed18a64c95e3376e8b7807fb26e9388861a962d16a7b532a36e3136a147d1250497137187ea6da7c26d1cd620a02260003c3e91f37b6e990862f7155fe74b8e3d1a393a03cd625e98ea124761e56a32a926dafef13ff8c64790a7e731af4bde73c51270b1a427c5cfadedcf34b3c90a325aa4dc20e72542ae754be8d44dd3cace8bf71acbb79d4632de81e4f896019190839d14cdf5b2dc901d4fd7f5069160e3b5cebec88a6008de6e8c8fcd00338749bc7b23d4edd106e4228f609e544dd2e1c603f51a100d44502c3eab449c350ab87e3b1b2109f9d7863b33a4e0ae52fc3a28dafbc4214588d367124401e3df880b72b94da04b1e64bc9dc15efd3f295f841cc09e0402f432ebca9f96cc78563c7709cf392167c8a4756d7e5bfb7f2f4c110f6f45b55d6efc09703e868a2df39960391b868e23b440b897c1944c7d98e4fcd48ad6e04e515160d3d02489d2205dd7ed068ce367d1b5aa4b30660210e3ae299483048937c7141dce48557f9167cc61a51c3700dc529e4829547f3b61194860ef1802b2c1b577ecad9003ce93fa936b80db0eede296545dbc594441484da0afd3bb8c962fb8ee9d293e435acecf5e250af419254ef81b30b76ee40927c4802320091708d8fd21420dfafb6a76f913d81caa00e42ea18ab3c9354818260d30ded891bf02de8fdd63947158604297d559e0aacc9885bceff45db6c836e603ae2488032bb4e6ad8df112f9b95540d385bb81eb747480c757ab6b397da25c2e0db341126b9dcd5b21890d3c7c17c8bdc10735bb6214a123f92ab67c2475df7f68f9b447e3b0ccf8bc30b4388628c47bfe07073f2d77e39d1d86920174796074a03fa59a194ccbae1baa6929b337b1bca2bcfaaa813418999e4b2fb768655a8000e32a66b00af5a2ae41a403414c3145e31a6e9c736f265031398929f80d2b88f04e6324002fa1662e7ec6a1cb2e1389830febf5db6a2cf75d52349f5f4c3df54178f830e42baa6b08b0af0b92a067859d0b2b472d6e6aee12dffa09d57ed185be52970220e239bb0520848962aca0a1b606bb1bdcc19c102748207af694542baa5c2a73495287aba0a5486961fb6a973e76ea1ca9c8718e3864f1228057868b09993966bba466865f6bd136880374fd7f2a849b3ef983d1dd359986234731b76367ba476b3c50d149451edac9c6c2744d25fb04159f0051981c1ec0a0d5c5f6d1d642e8e2bb67dc1522e8fa4949d4ca3dced1311cffec000839bbff62194051f7871962b74d20ede2cce1cb058418f98d0d9b88716843f7a7e7436f5df943e63e0847f39644a60878dc7eb2b9c62656e3118374021f9f2e18499ca9919d20e2817e0e3c17578d1a099dd749aba3271810020606b4f535d4cab69b1e3d85e3a8adf29f485974d5a51deac0b4fc79cc4c65e2688e4eb275861561ce549dd75980486f8fe78d25c44139fe2e79853c7c0f7ce7ec2154f67a3030a00b54f1b79a4aca673cc585868b3c83f062363a9b55430b5f63c2b5d2a9e0ed7b7abc2a35642db7ec4780542b181df494ccef8fbd479506d7e62f4ecea78133012f969104975eab8b6551bf01189ed2e4a5974cade921c095391f5d85607ec8879bfae071783c897ca6952c778ccceb1b8cfeb36c760a3b1ef24533885e0218fdc3df64041379d8af6a74db7d83965a7f2ac8cac759ba23400027b0a31917ee6d555b4621b9ee5b979786f7932b4f967570988c9de2dca7678987fa2db28be205884f6db26a9d9c4cc96ef9d326404f0862900f4705f52362196ff6e7cdf5a8d9d3bc07f498640a6c523d7732713d1e07da59f4e4d71356318223dc1ff3d4e2fab0d8dc0e8b57cfef703ed5cbb2bfcfbc5d2a626be4c188ea248b5b89cee19cf3420c7afdc6f446fa8be78f5e9ab69ccc8593e73c072d5d8865df11b4633732e04b930ce966698901387450e2d03ae880fadf3a809d11df3bbead6a74ff475181914487bf3b07c14694bbb08100ee7a7c5fa5d0a7925e692ae16e9d2a5d971c2a212804fe05d4b6d4320ec4cd2a7366586809e3d252d80a701f294b02b5b5ccf0af58cbdd8ed20d5d43e12b658b090032dbf4ef48ef6932d382a1594edf2539985d1c59febbefebe06871468b807d66523674bb6c282b32bb1dd4397202834593b63e7d81c5edb46a1fa8520138dc93496a649fa251844ca1a96ca529de9a3927ce03eb9857becf42b4a6af6748ac7df9af261373a1b1e12ab0e9c1f0024de6348696279930cc2c9aa4d06c5c5620bc9e43ed099b0d2ee88c352c849a1d3cec46e71c791f251991b12346c1d38b39fc6c318c4392ca3ac2f6be1f284c0fb0d63c0ba5f836868897b1d8b6c361de789648500a5bcee6f0de32a80b9a6dc0945739b72ee8209bcfdf08f4c40fcbe2c645e25ccf9951ce0951cdad7fa4ce4e8e8ad71fa59c83c13551092086b9b43ed2d2a89714b6f4b03ae90556f35548b5b9a683302c5298bba874dca7e5b1678ee9817e4ac6b9298a09a2b6e1eebea1948c576a38973675497650a82304c3985597ed11692ce2711653e1219dec6804a34878bd09ca2d0109923e00154af9eae1364b0a394a38535d11562dcd81bfb8199097e2afafc958f1cb17bff8ef6b63822e77c65d5b63070e035cd49d40a965456b77759b50e6a7bf1c398d3088b68b9723e2c86d5ba667485fb3f6e15f5d49e1057dc8304f8b0b9b25ac291259f890dbf568544de159b9bdfd52e6790283679f49646bfe4b6d8c1d7e9fad4ba699e3e207394c039aaa54930c2793e814c5185308c6a0b1614d1ffd8769a996a23783961e5cdd9bfcb435b226b2c494dabedd1e138aa69df5c059596477c5e4b6a54849dae5e49a9e5719fb7959896947d38cf41a5e5c41ebd14842abb50b271114c15242f6dd1285b8b768a1a58854c8b7178df693956f23967a8c1b8ab04a5bccb436194c4e45f11e995fb63f54f74088d08bcf3feabeeb9e851fe35b22f1384bc2cf7d6421c56fdb0eb8adc78dabf088fccb403cd3764e10b6c049aa23b99888a7e0b4068b41f2f72e89cb496fc60f6f6150117c3960ef5920c680bc1ab05243e6bcc2d58125c62d712c4767823e189e930109700ca4ea9fd0e8877d2b2f4b544d443a1a249cd5c4e895761c056dc1ce53508366f646522b4d870cdd7d46ee4e5505dd1fdc040b9b6cc3ef4f5fd62fd19f22e43bffb4ef9c82b62421cdf9dc848047fd4093313078cf1a5098831aadade0f6e0c64d9edd32285c8d945125cc24eb44e8529c74053ae81ae887cc1e7291ee3efd7a0f9a4a2df0942348887088f56d2248e42dcdec2807215128df8aa9fb731cce2798a465d0ea432590d34f066c83336180fb9abcc2526a30f41cecc60509a3a0e2ffc7d31109d8975bc7c08259f9a585231def61305e4209dd868fd7d5d25fe906970f8e80de85e6f0855a218344457270bd5ce412e31e6267def85a42a41887ca1514e032e3f50d266bc50275357966295d5945b0d0d5f541a4f65fede598d8b18f465dee2dd592673937e6b9cd09976cc9621076438e9bcf7724773cd181c5a52b348a1b0fa209fa8d577a1e5afcb7d3d48d149f99daf53f040f91b42a2047bc3e69d8f1183e2495b4d91666bfc5cb7ff14e7c778033ba027d61e35042f942d982099796c8ba28116168107748f988f54843f91a91387260d9ed844d870bc52f15c434d16114a6b0cf0837f376c55127904abc47e50aa9dfb936a69a94e325cebb5337a89e2a57fea8ec431f0841279153f50664e2c781e30ce88e05cb735f39f1604d2b112c3f03387002b682c30a064dd27dd48bb572a3156b5d953972e2231edba5cb623249bbb4735a61811b825bc2d8462ae841006cff8b2299d36d16427c89f5afbe8e09ef04b82b4f313b14e2e9a8ec7cc31ba68890a94cef2aed005550f07a48075b1fbcb3ef67c9a67af0b1b88fe49ddcc480a04f31f62b30a4ecf41d5a520059f6b805396b74a4f31baa25cb2f72e95936e46013286f9637c4a2adda682954146e8c5f52ab9552d28bd8f3eeb6c45f274c5593f002d1efc8130b72d484a3dafe870866f476fe89a3178c88c7e2960c16083546b9c3bcb0073b02fdaa565378d1b21d65a76d837e6bdddeec6cf9c0b3296eae82f0a0b18b04edf4dacec1ac79b5ca432dfa05b7e27a1a26b6638f5119cb394c34268cd27db5a9e7747b462a5fc293789a178a08d8960a8927db5ab7394928dba9ec6f290269ad161615629840cbacf005bcb606a56c5a2f7945b2c72e1abe5eefc487732c91908ec67a2fb68fe6d6381dba5ebd03aea9f5f83b070439038047f041aa7a7bd5b2052b2da1c96cf20bade6378cfae106d42cb94593a15ddf45fd34cd09cf7789d02fd35ae933457d24cb0f1495dd5d2bb0a06e801502148211ea6942ad760e514f2a8a6f83d025ee8d1c9c9188d58d5566d32ddddddddbd654a5206880b610bf60b3ffcfa8a180890558c0c8e4a916ad0aa3c593132d7899ef7615830304131356855aaca93c5656b47fdeb0aa87fe9f8b2e586a1b8f270e451d5a097ead92575bdf592f21ac5e9e5e57aa5710e9884943011dfa75396866035c6fe92bad7a976b5b0a380e406096df7de8b225fbc866cf5a8f119aff11917c2afd6759fbf65caf9fef586cdf875935f2bbf8e835f2a87f1eb94f21752e40932b8a91f250c6cb28e17ff527e5dae4bfd14d9d281f2ebb73c5b3b0e70c619673c8cb7745c4f79aa3c4d1894fbfc756a56797ae579cbbb44de1a7995d8e4cb04c5e541db27c67a312e8db778d0d4d88cb7225063335e6333a5e93468bce5214c8d4d5662932b151a64add184837bde5a8dead41e443f653e14fdbc1f8635e83a05e59871aedd2269c8181a3653bef0796b90ec767ed620ce2786a23f9267756276d02387d41ad2a74b228af29d4ba0d680eaf4771d9581124fdf4d8ebe775808bf28107ed1d88c734e9bb438ae4543eef0507bce6fdb56b674b4f360b30605a58264b866a9b3dc936e5d2f5104d5b195c2505e82a1d75a8001dc541327f5f5fb5abf52ce65a0ecd5b93c0ff075b473cbdc7ebecc6c44f46623da88daf3ee25026b5c112dda3dcd5fe2b25736d97c364d17bd61666f4aab5ccbc985552084a82e8fc1b74731f45d9b7ca53a1ca8e48b95dbcead215c4ee8052a2f50c0fbce999e81deb4b7571abebd5939b40fdfdd3ea443c8220a48a89bd42f755607b88de300e0848516cf71ed86a3755536383b3729a0dbe6ecba11e2d2a77e9382cbae83fbd68eea9b6f5da95dc16e6500aab0afa753ae007afbc4adf12ace0e0b38391c94f650c5c43d1908a8614782902861f2ed3dc2d8e0b676549b90fb3c64d8d32956043d9338707ecab82a21dcae9dd6f4edb4db9fcc9b1baef91d96455d57dbf3eeadfc799669cf32a02796393d3539310dd188908e966aadd5f34a7ebef57c27437f43b6ef2a536daa57da5e55a5ae24f7ac4dd4ca9a84de5e816a7b6d6abbb1f885124942d7cd0eb73e3b61b3cd157e388207673839a3092dd617b062840a7e40c40e643011eb6e0f85869cda133d926b035193c964330c293939ab51d77e6423cd064bfeac4267655267b69afc6a76f2eddd4dcc1ad45e85aaac0285cc1e7374ab6cd6715c2811bf241076c1606463c93dab118abc2e9ed128363122d246f58836ab6f7bdea8232c37af230c6c6e0e24478e6ea10523aa65a35a8e644344fc6217baaccac4097fdbb6b515775cecda99f316f8e593835f3e39d8a43fa44948cdb0a4cc532b2a890b03901f3e727658e0ca93d66c36ce87639028dc3ca4483eec33860f32c43e3b75df461edeb6a6b6395286fa9c37b9c382f78538be3a772187f31cc7b1f7772b3499011c8fe339e7cab3d6fa793d7bbc101cef79fe3948da53088e1e9cb3c02fca029b1fb9e383f37ac673258f1a441fbd0c224375fa21f59b84407451149d236d797ae4e923fb6a9d8eb56d6d22b20debc8655522bbb61ed93cef471e67733beb91cdeb11d1057f2b96945d95acdcc873840b7ffc882186115270cfaa7456a0edac4075a932e12849fcfabc6387722bd26fb687c92aab53f4f0f39dc7c02f9f18d8dcb6f007bf7c7e738e52f9c1e65681f895636b72ab127ef19092dfbce70586d1981086d55847654b0d9afeac32988d6dce420bdbc604b383905ac00855833431426bb1a2b33ee85ef7d764578ee4f7f94ef7475a6b81bcc02658fe6093d25e72bb3c99099b9593965cdfe4a3fca6be1d45ba90230980da3dab937360e94284b058e5e7f5eceb52356c7eee954ca5642536dbcf9e356c27cb10bbe8ef642162933e0f36dba9123dfbca4f33e5c82e1167a9f0cbd2dea341ba99915d82ea845ec3d03bf214cbb0b4a00bd67a48d20fb2e148fe1475a844c990d216a3efbcbb989db6d605125ac301966aa97c15fa76af5685c80a59246c56df8282c0d0a35ed72e65dc5ab34aecaa0e8029b72672fd36c8f6119b55885f1fd5a902ba08ce9aa9419fe95c9b8cde4abdc42faf6163399bcd6666dc2096099b7588cd66fa28f7b44a94a46270698d8ba6b7355bb335281e15a5eb198d3a5cdf54d8aced61931bb0b5affcb0597368b8a725faea413e1f52bf63a5af41da3baf9ea54275b800491950efa07be4c995676995b8d0797b48ebd1a54a5b987ce74ddf5a256cd6263d40340b9ba9d2f7c8b64cec907f931be03f9ba94a5ba9305b6b57f5ea6787e183af4e6b0ba10abda935cc16415dd56b4f2cd3d7daf4d5c5d112d19bea0040baedf44fab447ca2d32a2dd9a7666a9d3d6b75b9c3fcf63e62627ff8057af51ac65e50577531bc316e19acae81e9abb751cf9aca69f367cf584937cad950be2af16ba9be8df2d59b885f2733792795c626947ac466ad3d5057f5cfebd415e14f4eaa4efcaaff535cfb953bccff9c69df9e2387e7791e4d81cd1c5c5ccfadf78352da44a953d32eda019074db3df74617baddf3960ecec12f5be0d70ed31e7c0adf40f0e8195feb08be6a80baaa77a50f36bb1437aedbf675be8d3c31b02906d19b0af3d515e079df6e6f97e790ce6cff4aea2db410a4a5e3f3ce3fa7df9567477e6402d8a4ce12e29e94f6955d990403bf8474ef81feb3bebff003c8f79bd7339e370f83d8ac5fca864dd143ef19bf5aa09f35c86887f9a0836545c2e613aa539fe82391ec41f2609332937a4275ce6b5057af50a80ee89e772b57af7a4eed79f732a92ad42091997cf5cfcfebe23c5c44fe2b7b7c62238f3cd6690da3f7f8c4c69352f19fd329ff3998f45f79facc3e8807fa9b846074facd632c47ffc8cf4520ebd8bd1a7c64b4a120a01f1a6690c56cf089754f7cddc8175ed86422e3b821a4b53287e06604d4e6ec8696983c7e72a279debd2c96bb4984c35fd75aab8f91b541ff6db67e6ec9cf435204f2ac2f42255f368e0a9b3c2a4025827e83c3e56afd6c18866158b7da9f3eb3efadcc4090cfbb262c6cde005dae894d2a9efecd086eadb5d62ecf1ecb35bb58e7b823aa63b7926be268fce2d8c64f960d18d24ffe95538689f1d59517dcb343d229e990f0ebec823e885f4c63936b7e2b4ffb9bad7fc32dc9ba515236dddddd92324ebdec80d8b457a88ef59243c226dbd4ae334e96277f4c9df118afe30af66dc91d29ba27bdc2b42b47b8267e91cece61e19793340634507a27e98b2479491245922e24395acb529ead25c994bbb50be0a6e8210ca6b725a566599eb4e645ed37df61d27fa76d13bf9c5f9b8fe0cc62dd4b53e3341eabe5274bb144f4868788f82582b3f31097e5e9d170b23caf2d4f9675cfbb97c572374d9c1a39357c2313c002f378b9230249bf0679d2a8544e1bf696259a21375059e4694f9b982be2afc80dd43fb923fb27777474dafcc91dd9119cad8396c2527a04fe274b01c953fc48ce1b06219c44af40e1d710aa539180087ab63126830e81daf05c7778763a1465c6e4cf7a34a5064922a50287d99facee6ec886656ca8b214fa87ce7e107fe6340a3a057c9acf38cf5e6ce183a7225690258929621e2002081b2425391923089f1da0347194056d09299e62375bd0e0450d7810c41065c44eea54031e9e9fd97dc704536a90826796fd654171cda7536a5fd494b828c23086426213a48128e070cf0dbcac076c31cf27c69134b6913e313a823410044110044154cd6e514385c4665d7a982c278cd3338ab625714f70081ca20184a2a15047edaab6568ba235cc6bd751c3b618db7a595e55360baa061e358c4675a85747a1923c1085e480aef4fb731bf24023366fed3112dbbcca79c7384a6e442438dbca6d48e82948fb0ad2c023f008a48147e01178041ea16a2fd83ade8456a84c29a51d94e487e64890c8015b6c136a57f52797fab9b14865a8673033d39bba79d003b6d836446faa6f496a0ca1c64039a99a6638176b42936b4293bb09b1c9358466827a26e88a3582c411e54dc699a03bd343aace04d5ae3340ed7299e9817a57c5724bdb9a50d7767a295aa3872641de933f678090109a0102955415667a386780c014a882d8645509923cfbe7cdfca09cf8b50df118f4b5216167aa0aa0125009e9bd59bb59fb801a73295541aa12a892a89a9e7de667e6069410ea04a8252827d5912b93c9680820974f5e24b02d8edbbabb9bdb6c77b7b5d65a6fdbdddd5b3a8917d0dd6c49636666666666de6c3333777777495ab9373f785ebf006156ddc6966b529dfbd55d54a772486faa73a55c0c359d920593af4e2bad51ae35b522213a4e8e9bdd4c5718e9544b2e9d4265cb532a589e4eb981122e9e4ed9e2e85dc62d889e4ed94228cad32937507aa631d320880ba6cd6e6c14c42434139b206125ef19b1ac0d9bed9b7b54383515a56ea646b5ccd99fe2c948deec1fcf5e6d949fcb484cfbe1569b02bd691c276ef54aba3893433615d355f9aaab418fe46b189e5c6be521f53350871ef44a1a61fa0cd0da83e5e93373d14f9fd98ba7e82bb2555564abfaca7d62436c36934ab61ca0f295f750f5c4b8cab7a31268b80c855f78b8ddce4330dece44ec845fd7db99dad5cefa1559b4c91e76c53d59c69da919be967589cdae9155a95261b37d169695c9534c3d562e5365c81e195f7909605c7e01e2d619e875d6e50dbb9976e694ddea04c9b32a7d3b8f3bbed9a398c651d86c7721b9a7580aa1b5ee236b5d4d71abafb2b8d5575ddceaab226ee5380c9730ad2ccf5bfeb0ec65881715dc23fef32bfe2b2b906ac93debcf77653247cda93f9b8ed60e9bedf55b3bea730276180524345bc2911a6f48e710eeadb38cc678b4abbd5b5cc9426c090526242689f488f0e43eedf866dfecaa92c64d546ec91e86a9bc9d888aa4ec0a372319cc9c58c63206fa0103ff7c2d601993519d757b6bc96a0b0d4663ed5c63166d6cb94ce397eadb1989ea80df1e32cd5a189d8113925263e1179d828359338d97f84af7d3b75b7e750b48b7738d9798c6482d6b589dc956a8f1b58c32e445666211d625f74aad9603a3a7e510fe0eb0fe242293c97e080b8590da9cedfae252af074a19c8a4ae2601a84968122ed5d99e47c824b5f1e1b6330bcd3d58af8b788a380f818018764316c4affa748a2d646f9d9e0ce52d3b79cb333ef2ba8d870f7e9dcd82f516b82e2ca5526b13d5d9dc6e3c9c371093b727bcf58d748571b9a0bea1b3f7349086b1f5d17bda413f7388346c2c7bd8a688eb2c0c519d25145691a8cb7a116f2b126f2912756d6c9f9afc51bb9888818090745018e3405dd66b358af47da914456a261c300ef4268a256f8348f9f0d6cfcf02d11beb30532e1814563f8ea4d46e5ce9e64202bdb1fec53d4978eb8c03a53ab42b4fefbba9ad9ce9d92825a43627fdfa072034d73909e8eeeeeee65ea70cb5dd325dfd25746b758971ab6d39b9a96fb721157338f498e7ecd511973d87a3bd5ae25667176ad86c56f5b07a51bc50957471509ddab09e76b1ecca1a36ab75d17b50dece436e9d8748221e3f5df614f568b7ceead26bd7d65e4474ebdd0e76d0d9c112eca16591d1dbbbd2d9acd75dfcf44c562a75bd08ca5329bf39f7deebb734e2a35d658e79737e0797c6dafae61cd430b18e3c3c7e9a7e730b5463d66d59848858026997e84040ed12a3d57504da6d59a4a8878b5b2f82f2b61e015bc4c5adb5a5cc96468a54a2766dde3eba5856a1d859817e1b4b9307505d74eb6715fa422ceb513d6ad7b6f98b71c4e3c706d1addb307a8b6e3d02a33707356c2c2b52bb841a26963cd43097b22eb56bf3a0df1ce68acbf9e6b569eb6ad36f5dd7f57ce81df97ddef93ce7213984ffeb389e8146782a2a2efbea887b7a9c9bfce2dcc5a35424771a245b3b3a48e89eb7d3a7a30b4140df9c2b5d2c83781e7ab78774b441a887e48ecec1d68ecebb7e47da901b39844ffb38e80df51a720711521b92aabeba539df02b0a5f5d5f5f3f5cfa02844b3de46a83c91340937a26042b876dae535009faeaa20f1dd56127bbb8d477f825745fb65cea48869e43f1b8a8be7e185a1cae8e9affdc8774ce2d137ed570ce2d5137b34642ed6a9809ce99ceb14af0d3fc9c3f9be9f39605b9962d57e0ffbc9918566733994c360316ce5b4b3f716e65f687bbcfb9bd62cb736e83f8b53de75688615b8c033f3ee217c79d15cb73fe3a1be991a07c2c4852622a9c27a280c4e33ef0f3d1c1f2fc56f8dc9bf1afdb7e66b433dd4c49d9e4dcbb34425a54cf7937519d7ecf1359f4d004929ddac57909a48bec29ea31829b658f0d1fa1e49e119c76c358ac1a6403b1c9b90db283dac5f908244d79f2781a2fdb9bd5350d03dd1b66e3a0109cef9c2cfb874d2eecc83ec226e73846b7e3808e903dd4ae7635d3c72acfebe5c902bd74cec3ae24dddd4ffbee241904f4b2ebc052756d988286be1ab3b0670d6b2476712e829f1e8dd9ac61f5a99b81b3cfebd391b2913eef1cf46e6a1bef69b953cea6ec6979d9c4e53466e336ea13cbd8ec5ca40ff207d902fd86d31809640b2c5b0eb071123c0236fc4659e486db7012ca22453d6eb80d2fd253d4830497dd288d987ec349287b8a7ad8b88db2a7e8465924a75d9cdf709b92d52ece632830dd6e7ad9e17e1ee367338dc032ddc66df8697e6153726ea364418c1be557c4f28f2c491a5208ce7f8e33c6fd9cfed93f23bc93f4c920211b248d31147e45e1d78c73ce48fcf2dc9d73aeb112d50199d63f0cf3629cf7117e513e7a3ea23a0aa00fd2074936a2379cefb00e3ae72109d6380de9347e5ab2860c621df490244b5bba0f613306e7fc26886bc36ff84cc94c98899d9ef3d113a1ac519eded328af052dc833266293731b654f510f1b96c26edcb8e124b80d079dd2d7e7a0d7910754bd259ba9996e92dc1825ee599fea13d551397723747b030aa0bf63c641d21ea1379cb793536371ce5b4b6b08bffd569019ff3cb446b73e8daf9a7cc6bf7287c11a1fcb8fb43c32c073fb05f9661c245b35344e4706783e5353b6538b6c1ab2b16ce1d7d9432fe3d7d9b319b2b5b0c979335920fb638f501dfaab95878dd4b0fac42ece3da486f111bb38ff1ce9395751719d39ca475f795e18a4cb79cf8e869a88ebb88355b6787437b1c93114366b97692f39dc7619b7b141471e3f3614295200e5dc862245607936b151da701b364e6395a85ddc0d526664042f5281dac5b90d27c16ff85989482869737ea3ac4847a6238d50167d7ec36dfca44f5fdc286dca2ad4aee69c9d9e989a9c95f873ce43fc62c22fafac4e6c12b1ca8ae5c5396723aab36d621d75a43ca4a3b564fb0f947f248cb796215c7da765848e984ed59fcdb402c39043b66fb9bc902914d972f1fa2e013072e2d7e79c57272f4f2244be72487feb73fa4c2b5b9fdbd657f2114361937301f01043030d091fe0e0890461d01b60f144182c38030752a8542a6c72ee21d9da71c2f05f59b1d0b12e7d7ed6a5e7be9291d8e49c3b6a17e73b1c002d7c5499ea15a6e7bc9d38ef27ce9b89f36e82f97c68b00933842d1eed2c7bcf7a8b964d36afb1160f6b6bacdb6bac4b56bbaa77ceb55b4a8b5293c85a63b3b6ab76248d714b94b64375ea0c9f84e543aa5217f5ef4ba5e80db5248ecc0c1292315b26c25613b03462976245ec3e5fcbd68e209e531f9fa71f843fffca20adaefced3fffca0054f1381ee9362c1e5ceae213b7d54e5597c91a36ab3b4ef59cea6ed2ba8acc5b21a5abe30eea8129f7481c6ca6b075dbe6512daf7ea6536e0045e8d937af5b7a7ea5c0a68f1888fc00d2755d1713e59e39393f1ad6436d504315403123621037688ac1f4b498881981598ac194459dff00427550cf2e4487e82ece9129f7c8b39ed585143a679df7b91fedc2c1660a526ee7278ece51a5cb4b99c2cb967be68c3a52de2d1d5d47b674b447cf38e33def0ef09eef70d7f97cce76cb46952ee5c9fa416f38357ae8dc5949914dd0457208c9aa11e2e2e097e7ec383cde904d84dad2e1f9e69e6f658b73af6c39fd189a9d48b3ff00e20d855b043d3b4ed1ed5e60170f865a0b2daf28cf6cf47c5469b6eb534ac6af93369d140b0c31f0eb2775c46b588db3dfa786d198cf09b24801c58a124c641102d582c5097a800311586e880286283df5072994a400c57a8cb8a424012236e34604e0c48a306234ce3d2d319062465a3c88f5d094407800ec33a5101e003bbbe7f1dc4beaf07cf4ce1b5dd81c0636f9522c41b59b3d77a764d7e9092df7895f748a164e9efd6e614f054f68b05d791283aefb38daf8825b1bd52e4eadb5d68ed613bbb71a726047d6cf63791fab03adb52ccb514a291547b15d588ca21d67adb5a5adb7e3ba6d7777776b8bcca6b6eb82fd5afaa0375c370e65b9ce65c987677e29910bef136dfb58f2c1e4c37ee197aa94c9090cc5facd78ae5f22c0532729cc870fda5bdbadad387aa34b67b7b65bbba038bbb5dd7a4ba57ca4522f3935364f5dac4b3e2ce50da77170967c6c4bbdb4f4928261cf4f93e23c5dba386eb78649a958a0b5f6937c3af3a9afa4b0eb951080a73a4faf8f259c5f1a57d85c36f0e15df796522bea3181a48f762df9b09732f960d3fae0175da55ce8920faa4365344358ff90551ba8f4863da7edb66d9b8dfd21fc944d4faca4cd875f1886a228565288cd8b95448d3aaa4c86baf7de94981a5bb4e4615f5a2bf4d7ca952bc96f3b847949c1801f0c8cd771301b8ced17ce8cb067eac6e25aabb76d9b4c5bd6c6a94e7801db1c36c72bcccd6e9bca83e9b6176f0bd2f47a9dba60b96d1bca5a4ae9b6f150a7edd23d8e620dbbc1223cd715b776ab174e30c2c66937a537368ab03686cab0575d57d898d128a2be58ce82638b07e8f443bfed9cb5561c2deab625c317d192e14adc624819d656555798081d79cb9539b21fc2dfce664943d334b7e6c565bc4143a41cf85fc7d510e1067519d60b2dab0dd146a4fce2d708247881e587f0d35ac20be1eadcb8df9a3c6b73a5bcb970a4109be73c2c61e4e1bce438ce398ebc7143424dcb14e94829256500801896d0b40cd22d9aeb71268874e438196ec21b19babf4fc7dab23866bbe809332c191a991d8c170cb9cefbac88724959dea80dcb4a6fac8365f53cbbb1c76d22786e548aacd4b5a53490faf6e1e158cc65b496bb04991b6205937369c3dce33ad2f3cd7696b3bed9b256254ecdcd63d1adb78eab3720420ad3b830c336f350baae5623276aedba4a44134f8ebaaed6256a2d2bbdd9bcd625b52eb1a2eb6a35aab58b5abbae12516bd755225c407f1359d0b0d045e63bf7bcedc7390d1b61a85107971f37b5edf295dfe7dfe802cdc17bdc959439925273dbb62d44d5b73db64b9263216a246b0ce5d296698fcd20189294ba2edf6f0699f3f1b863b282f117954a9c42e5516adad96577b6bcb1fff00fe2154b48d9c4699a36759c37af95c8e3a4a1ca342ecc34a5d65a6bc59b256ee5626e8c543c905840ba51e256f126895b9dde2071eb883a6214459d7a53610276287d0173e4bc502fbe31caa881ac809217ab98302a402d40619bf356d61fe6c1b3b36984477564a83829b87020432dfddade2e166b46a45487368cda20a2116f66b7d2b8d42151086137154f9678caa6581b7a9222ba42f7696d080805f7696d68863b069309ee49af3cf5a51cae1053d0d5d39a104cd09a104465b40f5338859c1c55cbe7f46323c57a3939f83544b7a5268410429ca08a2ab1c67b4f6b4294e04f1b32dc3d5b8b42ac826932990c491697235412125427494a33380b31c3d7ea7cc450ead0c9485fdd3b798889be8a3f8ea3cd8f3852f831c78fe3383a5df2a3dbd1bd1358f9d12f931f47f7247e745389d38f8e33fbd1735090e547df51e2c71468f9d1c59167f4173d1c79c450290cc3d06f171fd68250e2c35a92251f86b26f067faafeb3dfe77704ff09495103428ab7ba33ba9ae76ccd6f4eafe0547fd6c4c08437c053a58ed22a74fd79fd598fd0a09b044c7cb77b351268f11d5482efa02bbeddece1876fc7e92106df9ed383956f67c187137c3b0f1fb4f8761f3f72f8ae95a08aef762238c8905401e4c3b75713207dd77ed8812abdf5192b6a0ca47b59de124e15f2cbf28c5cd0c9ac3c716409932c3f48fd1ce9800332baa0a20b338a965ca800469eae2a251e7ee001cb0e3278f6008c3cccba3f580031c6134e3440611f22662e289a010b8030fb418c2dacf2a7c413339899198591872d68ade0c2e54f1a050712dc0007306a388c51cb818a226a3a94513bb254dbc1e8ade38c3cf64913ab13469e56e900293182203c3b00461e66c93c01c00d5ba68c608ab77e7365ae68f1d63a8e11a86e98c18491c77aac1b54353620b121076fbd84ebfd245105e81a79ac559d10c58f12cfcefac9410d613cbb39f27091aa56c313128eb08019e1aaf0a768060d4f9efdc67dd204a6be6c2c010cf0ec1e0d32193cbb0d960f0f5e4c01d262c6165c24f149e2075282aca0a1a665885863812204af96234f579ea188873d2154a2ec08156ab22fdeba1fa9ce7081096fdd3bc3ca5b17e176a14232430666f4e0add760cd00c65b771a6619752693c974c00226a50039a2d024aa24842d4628638632b2d8c2c3962bde3a4ece107c78eb3b2cf0a81979ecd296124e1c4f62d408020e41a822041ddee2c868b139feac01820e4940c8e2a9056f9dc63d6005c82888329ea494e153021d6a2801132c9e90328498adf44bc205b32f0522ee793956fd54d590a1f47a76ef07393c3beb074ccf3e03650990eab0aaaa4646cb1664186989f2ec323ee321668ca767580e3c93c9642588d59ab7366fa9fc9983662d156bb56c01005b916059c205163390bc75df8195b76e16bd751c1ed4e0ade7f4c088b7be73c3db294e55de3a0f1f5996bcf51f5982f0d68128bdf518a6f8a00753c690e2ad57a01a2454059617aad3558c1d88b1e419864318b51412360c200860593750e9fc59d3d4821a802103838bb74e6d30c5104f3650d1420556387172c5e8e27faabc294d24b8e2d947561247bc885174d0c3b3873d8017e98b289efdebc19329d78ad613bd8bf4c50ccfde39ddd3aa52c8c10eb41c50c16359d656b3b518118d66c3ae8d2272586b8353e5c5132cae90e0d9ef152bcf6e594c78b1ea1a18ecc40ba65891c133ffce95140d9d8a5c1fbdbd3a05755f1fbd48e8a21309392074d123707d246f2889bd903d1589110d50c48c30162362455c4515494faba062e9cf7ae5db29154faba02287af57f8057ede6ddd5627afc7c813b260a98ead3508dfe7f6f2e2a997b2889d56a7135cf6d31b15d0e2e1c293d330145005eaa3f61678784e9e93c762dd7b549d9c4717b81932c07a5b0601dd7a18d6f2c431436b6d8be36ec8bd743a58cf796841bffcb20e5eb2150b49514c9545421ffd863e7a91ebe28ecd6d792f098220ebb9f204f25d298407f8912db0d93dd875d4dd971c1d45e6380155a7fa3492a628c4759bb7107d0afda4594a2130beb95a9daa579de80d5215aab6d26a53b3a7368c783e1e5f2c2e4f6b56908efe146b569cb015253f3ead5939f2d5bd960efe13041f025a8384b6506b6d535a9424252a5e91524a696530865c468ad33017ef8b83f3629a2977d4bda10b49632d27b7728f912a0514264c1073f19e4e81163123345e1073298b3c3f592498e0a6fc76946f47fde9270f9ce756e72fee134b91a3773edeeb3eb18d895faa176f90e338ae565a5fc6171f9db6eb73191ffd85bda8f355d83519798ce5e6d4aefea1edd259c1757194bf788c17f580f1b1e580d15fbcc7e82f654f51e73d234e8fd163ca9edbaef67163baa39f4e632f7ee2bc8b8f650450eee228d1bd933b22c1e0721082230eb1c9e49b6e2deba1e68ebe7d0383cba1d22cdf3408dfdc0cdf5c9e97c36188930be2db69e57ce85437a5481abb51727b8a7a8cfee23d30cef21897298bc8f88b8f65cfe829b7b1e5b2c814b9d3ae76197263da9aa88ef8ed1b167eb16f47db518d298b4e80c17541951dd4aef695abfca4b42f56a5aafc416b458ac08c3e8e63291b4b2345aaecc553650ced6aa697b2d67800ed29ea940a0a6a971875e6291fcb3a6474abd75265113bca475aa5b5abbdd2682c64b209cae938818b2a6545d68d14b1f3cc9f2ee3249e4e7901ed9b49b6d44b50987cfb76a537a65e626696f16b631d7143a7e77d8f472e694913c53db7a37353f22d54048771694e96bd3071cfed684b10f6cf2ddd619be4835b9376501bfce7211d77701076eb21775cd9dac1f9e60ae03c509f73cf37f7f91dfe9c23bfba85cdfeca209c77de1e1af1bc3248b99141d8bbb3721fe7ecde67d93b67ee9cd9634e62b359263b9271953d6b416116892a60d02cf4a997962c1214669f1c2c7be92b7be97ae549c1f8b39768953f7b89b7a3ef8d69cbe27ba9c69aa9bd9bda5b4e2ebf7cd11b93e7ddcb1dd19bb64ff689ea6c55821004960f52619cf66963ea247db29696584bdfee42d2f336a94b3053dcb36ef96e1f19c0eee3e4ad0e765b562d6cd61f10d5f024d629d022d67272c53fdd89cdf68d6973da9e36a6ad8957430110d041c626fddb37d49af6a9ea22450e324a80f1d63d277200459578559d7515d158a5258b13903183135940e1a307258868ca811858c8a8aced8813326c14d7dab08a7bdab06036564443135d84a24abc2a7b733881e299e99ea2e9a4c95b2f892ba3a812afca758419154422a4364d5b7c7a19a8f554e6639eae9ea6609ceabc38f5737ceaa7cb53d4533fefc394ce238f3b5992366ce80dfb48de188104d3550269020ef28604c009d7bdc5b0d4f2fb2481c48f0bca70e28c2fb4c0000d89891cb494c08825aed71f94e726cf516cf11cf3ccccbcb1056d786b398c6f29be9ddcd37ead7123849ead78662f503c5cd824dd9cf20bbc9f589e6149d904cbae9e53aeacbed396745208cd895b53aae1a00b4316f7c6883726b4f7eacca81c81620c1baee8205605892d78f0c5145758c9410c756d16f65e1ab7f67aed92611515d0eda798be9d7a4865401034f22b99faabd263939d45f237a9e13b0c82200882e00ccc0813c157dfce476d74b244289928e6c6c494675d1111b11a9401794027a01d529f27c74787f1d1673c04c9d3c2385d952ceb8957c53a6b1e7410c657247dd638cad0fde83df2c080650c99c258b2667c875b98d949400d5208bbda6748206c1a1d39999595888d98c8c908765aa04daa90438719dd7e0f7eb5ab6456342bd68a895631de420cd923c6513c62ca1e4cd4b0bac5a3a1445b9868c6db790bbf447f892c96c7c4c8ac6456327eb2623c6685181f6378665e6688b6b093b312b111c3e8184970c14316355061c595582b61573b0f8c6ec003133a20f14513b194cbb45c86b55aadca5346094d19c36a577bcc503b2be1578ce7c4d0a00cf311e30de41211ad2a5183de60790a81f11e796462627c1543d25fb1e8cbb0566510180fbdc715603c743ac6c4f80ec3c4b88f186f071213e334966a4ada6a8a719ab229c667ca1867d1a61897a14d31258cafca2695e72f50beb1d02430244f215e796b00dd93f57dd914995acc02c2b34849968e2a6badb5d68ea0caf6c9b2b79e0f9583aef2d1da18079d635cb49e78552c18b71e43d217552b95c334a1015a558c0a54f90ed3a8298dd4788d873535a5acc8c2c09442fa552fa85a761cc7d668ad0eec4be7759ef779ca4150f45e543031302b18186bad6f3666a58a09436f57a954d64787294feb312e866e63c41b136ab18db2de8c8b8be55832312b154c790a49a9ac751807411004c1158c6a05530649f9e7765c2165cb9d94b5768663c9c4ac54b64c39cc4be737dc72562843b60f4bef234f219df53ace6edb5963759083c62d0dd9e24186554fa036a7ec52b3f56c427e8be137a577f1d5eab7ae3740dcfa3fd8e495bbd8189972f48d3cdd7ae255b1ce9a576d64e8323210d1e1fdca77384645b62240c39bd4f09127e45f39499f8a21696bd0288dd0701a1ed220c33af6a051ca8a3695ab4a21fd2b1abaa8c41a3207e73cf5a05470ab8c089bb5a9cd1dd8f856c278e881fe327a7df1884d282ddaf0eb29f56a5359c3a68d94bbb9dbb0d9d4b08a445dedde8d29cfbb2a4fd6ab8890f116fd257a6fe44a4537777155796e2ee3755c618b2145df4899d1c7948cf834be9441c2d03d6bd36f4e550bc3689624aa98f283122690c24aacc16842c809136568610519b14b637a3d2272596ee23c8976b323cf6adb5c455f15a3f2558caa0cf2e2a0db718597addc61733bcd8625805d9bb7e7d098db4ccb94a7c362cad35ce56ce58bab72beff85f43c458a7e49289ee7a0e8593673b0b0d9ed350cab311b22018872ab536d62b35f84ae144700e17372f04b14bfe5dbb60520c9653f6d6a88c5aa2a613dc3011c1b3db42618ddea4475da366cf45ad24bbb65546a1de3a9d72c54858aa4b563f3eab50cb2c35ca33a9df306aaa555cfbb9586a4aac04ace8a8474e121ae551538a99ea0e4995d9aa07c23e2a18631126b3b7a1ea2f2a7e51a928d62694955056bbba467c7c121465bf0f90eb07e08eb63f48cefd29633af869a164d352b3f4f6b55b4d4aaece0c7a7b52a4c5f1b30bb42bb11529b7386f6ede116a3ae9a314cdc84986c4448b6289b8cc8055b101351173522267f6e46dfdbd146b3955144fc3a3b941327eea99aa96665c855d514442bfd5c4e236fcf0ebc2d5547aca66f20d58cea54d54c3563d88c4c75a48aa2aaa9a84021535d51cd54482a25d5928a49d584220a4125334824f9f6139cf22111a96643ed5535db92706de272de9533337ad3a48a2355462c267ae3a2833b93c2e4a203171d501df60e0a32ba28a086a188dad5ce62dd8b02fa0fe99b55258aef19110b45d4309726ea6a77faeea7a36f94ecdb754002e1a2836fa724d8027ad3bea188b60d45c4b06d083543414121a194f8456b52fc7ca3a87c5b26285044df2e3528921a8aa03f5149dfa81a6a09652b38e3d7a99a1df1eb045b001af1eb73e2bb0970f65d49ae600b3aaa33437ba98173259a60d92a0da09872058b01d4568f1e14a200a3c6de4255a17beaaaee79f764251955f1da05848b0a6a9264fbc9933f737cb52d6b85b4c0b094acc70f222bd8f2d56c2268121130f8935e2182883fa9d3d7994ab7d8ae51dd865fa8af8ea3aee0e82b114cc4efe873c19f348a93db0a5c8daa02970158726b5087d4011a48ab81b40fd4b050aa6181f4b486c511162c78ee690d0b228f0161e7b4c2282d5126eac4b1d09b550165a355d103d4d094135441058609d18c7604c912f7e49a984b4e89cdae327d07c65b36619e07bda1955d4e9f2b36b515085da9352155076cb14e688bd960e29e5c1387c46607abb1ce392dfcaa9f147275ef2b735170384da9194541aa5da9512a52526de90ac73511f9d0366c134bcea95d1dd7d4aece89c0b8c039932748034370c4e47981eaa8a3f93917fab95ae6bad56870f4d55989ab759d10c33ca6aeeb3a2647baaeebbaaeabcc3df1ebe4ae7c57030aeab8a72348be73ee0a09811d866adde484c431e1d7598538227e79e75c10f6d951c342efbeb22209c90ad4aece2dc991447470c90d953d6c769d900d17dc931baa4243dff9c93d7de7dc13bf780bbf6af73384480f9b1c735c5dc96a3410e22a532d15c910223d5556812a123af298c0c46dade0bd3763b3fbbce923392c6cba66b522d83fb26ee416f31a56c4c54797b293955e8fd0c51ac93db50bf440f0db86a648f1047e1e37e39ab827aee6919c87e4e6dc8c6b7aea645cad878f177e0089a1f38d64b5abf32645d773e47333cfa59eabd4f38df41cc7537ae395a710d0678771b0d9792569d879e75c8be36a3aaf434eb6efbc46e117ad3149face69e7674dfa6e057f8add1432e8a610fab342f9aeeb2a0bf1eb1487f8755e227e75278e4e49f731d1092df167e7e43ba33f3ba3ef70b01a66bd736fd8e65dd7754c365a6a965adbd96062b61da5b44675680f9b9cec398e13e221aac3cfb94763a4eebcd57d4356398eebb8e69af3b6dd13bf9c38af5a38fe79aeebba6e46753aaf3527cf11c015c6c56959079dc646073d02a383a21709bd2b232016015d2c693be83beca3fbc4b66ef41ea28f622982e4b531823a574b6f5795bb397b751ca08a0385d5d913ce73b424cfd5dac373d4f57d2cc424780e87b213bde17c36a33a9c84de208104cb88d410cff9f971f486f35aa33a35f8be548a52ee86a66a96452994524a3d6badb5d65a6b6570f9d5a0e739dd51cf38c32bbbcda3e6e622f588547b7f7ce02d09a1436287ae073515aca0633dada96087079fd6545083d1c7cc520c51061884db7a5a1b82e98821a0c872534f6b432c61c510446014432ca90d71c40460eda9cd18e206ef89fb0da10302196096cb3dad2de901d79654e161c3c9c14921670a120f7169a48c71c726b61f28c13d71bda7b525478024b8ddd3da12262ccf528f06f77a1eab65c5053ab08668ac340992799af1707e88f1ae27de29b624fdb0ae151b7a5811cd642e1941aa284131587080a142b6c2010f2f34151640a9284d30b41f2eede9e50813a0a2704a5541010f2e50c86e151d4621145396204404d0825c70bc2e7c0871727052c8691a3d1b1c01a310a1d8e18b0151c8d484270512c8644450370325eca24cd8e5cdc009b39892f470c4a4030f485d9c7104a80b1fec80001accbac8c10e084002ea820b200448699ad2456d07042411b58b7a24ccc0f33ada9fc7ac05ca0e7fe268b93463744d9c686272e20a6f06276a00323921e506276290c40925827022054ee480e44261e23c15dcf1e9942686108326b0d026bad8614440134e5e1356ec2042016a9797a489273e1634b1821e9af0a1891f1ebc256abd8327653cf9810d1cf5ac87002768de0faec7838e76bd2fc27872c50c2ef774ca9329df1301a6c4a8246c56964dcd3a552310000000d314002028100a87c482b150240c14495b7b14800d87a44a6a5298caa32889510a196380318000000400cc008cccd0360097f32720e36e7a6172fdfd6f24e2fe10e76aa9f7c1b6a5611c7cded1797201744c2cd6bed49592bb54bbe5bf706fea3d1a41281260ce527ac0109b5ed61822337625082c462907eed847cb30f308b2e3df8b92a0d129b4fc7b8005052fa4226dce556375ae6516cccd400e6f94691131cebd80dbbe814d54b3de953644e61e7a9d80598c26b904ebffea588500478978cae7f177c59f5ecef27b5772750672045fb7dd3f47d52bbffd1aa57ea080a0f64fd6837f26b61c83209d54436e960048664b6128a6d53a4f9d3619b2e62e35b298c520d978335dce1710077b49680cd11e614517dfad336ffa4cebc73e5aa0f58d6ed39fb13e272dd2c7c102048410cab19495f4843a81ffe6871386c61d4891fb185c850d89c05ec0f60223e2b0007003ca7e49ab443207e016aec621c31818076e8088f54a93d29e082f34541b1d0bda2bffb4d000733ee353ead73a5c6abcd6101504ab31ec81096dba2686ab7dc24ce6f44d46fd1435fccc4e8d48226153a309c5866d856b205a90c873cd6e9f25d18660c7098d211dcd3e7cef9749d0272f5e609554cee8bb21a264f4489d995c8b91d5739deabbfe16319d6d804da3e40fdc031efc63ed0826db742e6698828c58eb681e2d878e820c9e917280cacbe340e490a38bbd7a61fe24466c93783e11dafbed0d91323911ed57a719c32ac674dcf3c3800da83a40ac56c4331f7ba944a92ce70c16372b20c72c69a09d26e64c98ac01f844ce6430ce09c98d84d0fd034bc8958a50e19d1d0a41afd76f6a2a50d07fb48092163af35ae74b6852045f145c892c43d4d4fa760367c311691415050c4fa0f010cab5bee15ea74a489209a1f4b58c67ee90d54d2947c9ee42ff4fb4fe428642a65ad53da591181485b7a38357e86d6e336b03fbc0b114f1b002d3ba82c961cd26624d32c281511c6863d797fabfcbaa4dfbed5cb908321f07c0ce4aa20250638ef199b23d7f1d2c3e487b3bbea0e978f09bfedc1ed4418c9bc34cbe1981becce2f2f6ddf88f76d94869d79f1fae808ae801aa8cf3a48839264e21ad283f822a5eb32a2d96c4af00746ef3f719340b7a7659340bccfa9e85ab2fb9439ac830ea59c0123befa35edfb50fa09503bd2fe8cd0ef04667963512d66fa9d6e3a7477501c48dd945532f84dd4414d70cfa3b29974c05cec37a15cbe08ab48cdee7e80bb896dcaaf1da44ec2cf60337ca6cd540f1ca8481ff63aaedbad5d45d4519ca409e775e609b7d3a022e14c5e88cca8719b8743b29d4babd3e62e47faae9b86c33b424cc47c126681d929e1afa7198143e32c8dabc9504c38a3e9da3c51184ec80211de7b27b122cc28bb29701f266e335756c02ac32043b541b73a005e01cb4978e14e7b919d4804213a156239aae558ef4f1480c2ed8bf2af8444812c369777f660239274ce5bc2904bae95bec6e3f79ff806f6e26defca84d6a563490e4d370082f14a7ef75daff388d6626aa12ca9e937d1567b8d2012386c330702b05adf051a02ca2655a25beeb9d02279cb136f7ebfd3ac7d26a36b147f6a367ca5814d02b59820a87be55aa91a0989b9f241eeb31881215d645898930c6ae8200a5b57de27a99e309561169ea7d72be4a5002d5a74360610cb38826b711cc8aaa0bb0eff10ee75871f5dfe0ca57c0e9aef0da74b1c3e63de12af7f25b5c14de136969167b1a56395cbd22bc703f7cae71034344d6b69f4e567e92bafa08a4c308c570df80af584201819ca652bc3c8fd813bf94d4d5545ddb854a5ff94fc4978916131ee9ff44061a04ca923750fe52d53f9409f1df7bf44154aecefc8937049e736d95826f4d21f7ce92b8280e46d9e2eb1c7b8e7e62da55cbc00da4ffc99b438fffd03b21575972e0637ef8b6814669a1768f00356c54ca794f35144f0d00945a75a9b5f990d0b4011d08c6129c2ccb8da5e5d6bcc87139db86c979f4989f3bdf1a88db028065287404995e86646a187d4840972044047c084466ea09dcdf0ff0ed021bfc559caa1aa9a742b788cab643925b9d84bc0a1815e40362216fa26f98b80b725b83de442f45f55de27ab67e51bfe51eea806a014454e092c0634d253b06b8b5a4b8eab82bcb366671e107af79517cb0599a9d22cb3c116260801a3f77ba182f1d52a038675807b1dacda1b93698f21673d8519daa0fac0d7a2ad220dc4709911cdd884129838e8a72605a19e2641141b4ee780dd5c6d41bb4526a359003bd6a328e402ec2ec7bebec1036afd8233571a29fb024a2aa06a41309d64e0468641acfc7cf4f26238923c5a3c5bccdd1bc942aef0d771ed89c360021dde9bf9646b0bbae635713a79ae6aa2d2dcf004628c71de9cd29317b42d2a7062f369f2f78a110476c28a792213b4f52344d30efb6b811272cf1045ffd954d353f801f18bc69d74a313ead3bb4164a0b026e5ac24b90dbdeeffa3efd9c713ed7619354c75a92544287f2f17ec3f742fd9d21adcde9b2958256feba321ef284a55a8670daf76bb5f0e428de5dd86454f95d7906128c605944dcfdec3bf7df2689e39c5eb527705cbbdca88aaaa0c38902244c3d0f279a1d617a4e46071bee1c2db46dd355a2815617bfaa249907d0938c883832797b2b166b127792ff8558785c5b5dc2e11b7e5ef096cf53ca332ff41285112bb5542c5110f6e9cfafd058f3768eb49cd2adaa48af00ce94a6e60e83a825610469e7d32c700020819273be9e4bb67c1ff6f10fe74df895c5cac317b633b1fa7db34c89ca20dfb94d896b4b67c8c8c50c1409b6de95d461632c017b0883b628c2bf7060f5fe1db9585332be19ddda8e6e2bd982a6d8d3805bdb588ab7a8579f8160dc97550237ab5e6290d2ba669a2c8533500beac93473fd69f014b07850db3ba28f60a60d633e836a980f1e3e4620ed0744217c45955877591d74c7d01774b463ebd376185f428db325c6ab98e068a02a588d6c9dcdabf825c111e6c4e74bef201fa945c4e6121320f06edb2f9b89eaee32e2a84cfdb1adb2ae31ed174670863541c9abb3769d647b150673194a318ef9a98e1fb5ff3b722bc600aa9b0af1c9cd3ba11acfbe877e0e319828cc57c4df0c5e7a1244e6cf2a8abdf1b7403e1708d653f15c05aeabfdbc0054b150a3d8592fd28a71fd747dd54801a99865203b37def102a066fa054e6dfd7f27573ca5c69471e4e38d328a462c04adf9bc05eed4af96ee62831efb6d151f3131e1467228127229e53126b868edcdc1ac57b49be96cc15b89e38b6578087d5c6c8c2c683a5903b73c24ece7f7ff3c9eeb1bb42839ff61fc8c507e061fcaaf5d3e6733bb6fe1ccf1c617749b2566bb707466c4a0f193a62401cba6c53b955a9609cf849488ed7cceb97401b00d65e87ab5862f5af32079f458b256db9ca24d574c813948d5ee48a73e0cea24f26b848020d4c947944223acf797cd1cc88e864bc45fbb7c265e0a0e11435ac887bf7d37d77aeeb84a6507562cd89f8d8632f16318a380c6da6902ab903c662bc57259aef10294caf707e9d568d029fdc4beca267324f4790ef95744e005fb6efd62ff145df34dc5e0a78cd01a797a36f6e80398dd5be66481a6e49f0681cd43f526d183aa30690740355bc9356d2a17f0b2de0175090d8800957058a13cf027b8ff016bdc3df76ba19a64619e9c0388504d578f370f10afd8e8a2689db29f6525608d475c79982dcaffd96349bac8183c4d3ecb169023876e928594db08995ca6b5853729e3cbf7e13393852085d4a8ccf4b33f64ab51569b3184451316339dfcf60b1953bdb4cfc12c9ed8163e0a9da3d40751c07cf4ace5f3a19f6e60afb3127daa5b0dbfe64d24d2668756121f8191eed60a8c1b136f7f52e63aaea5edbcfab394126fce530cd87b5fa56fa42d35bffa3556bf91eaf041bbf38d7c5ad31153ba6ec2d92aca8bb781e9c94ff6d5b3b234aea5210d4d8225f4211741a0824adf574857c620d9c28a949d5e94cd79f92d72ddf455b2ae0630cccdf7630f7e9f4f350954323c3d2722d27487b807c0abbfb8ab6baee129b1585f9de68e88b9b808968f92b871d1e9237e3a8701ac7d8d5cdc695cf7352236763df4449cb9a39aa467559ffe1070269dde01d7252e771e821f7d8283e7d1ad332aa2f9abc29ae813a313c3c804ecf9ec0014a557194632148f4de2644458c3abd0e37c97c3b11ab2a2a3257ee30a71d0c0e555477aa08e78157acb2e9ef2ca309351e543fe06807db71abdcff0329c2245f749dce29901b582c7df6438f1c24fa66f524182ae96b8de7ef128fba55f1a71f41f3772dff136857254d07d0aa52385a8f84c3bb5655c47f79da1a0a3e1db208bafc3b97ca16d0fbf54d17e3d3555f96a5208191d83584a09f37c7a4a56bc15d1d5fa9305a50989d5d901c3d721e7f3cfcf24cb64102d31a318b1aadcc0436ffc98da10da32eb46474d8a2bb941f0adce0d7abde2ac8d138d422385352163621a49c9047d2299b1c69b3faa0bf61450e199a0d670741704041c9e2e8942746e2396135d0c2013865ca60aac6006839a9561ec12cea979a5a307811a51cd217e1f95f93729e1cb32cf2eabf1639cde6f58f8fe76ce372fb49fe62eb322faf5cf9e3fc8c84bff502d1faef9e228b9799671721d05e71e54d4db659455d5d58f24675631caedf8597a15a2e45bb559df6ec7a2e28b6d13738f4249883adbff6fafdc1c0e82c474f2b2347eac8e5bc13d85b0a46f18350fcdef6e96f1a66e30215b16c1b706073da62d4bcf6066f7982e3573f04ca0d76827a3cab2a874fa77ba0da88465b55e4dd9ddbb0e2c521ec60a18c7dbf4d8bc8d58c36807098fcc058dcf56f6439ccb70c26a5e33f1d84608e03239459753d9a5fd980c8dc6f6b47c4887dc50520509dc0acbaa603a3195be497a79b43a5e2a549e6c59ad26c9010e0e69f0ba5d9e6b0328cdc9b392850c28569ad8746f067c6f757a1baa038b08e2cdc2fa8c5ca4402677fc5c4a5c10d4e85175951a9bf7e94b5cbe9c5f446c12b6fa4066dec3ad340dba5b73d5db2f04e6312dd379b99277066be7262bc8f4d5889a09374d4d3c775d843ea8b3ae4012e620e72751737d10d72d46126c9a90becff6146a447d2cd3b72e46a289aaa81e9ed61ac3d60f4988ea157f97c8535102359daad76507051514c72e989a023d12c4f746d2881cf18485d7ef26e4243fa8d095a887f8e8c18522fc48256b6c2e0856526c8a03a63ebc6fae8f2e638c93aeae786755976b1348566e9273a4bad672c5d8d6b3230a2c244e0cb6864440fed3ab89f66d37187141bf4d9916816511f867728532199eefeb090a7f56a0604979da9eb6eb11f5eda00fd76919370caee86655d8752b1ee96f654d9449eb86f66ac50fa6a4b86721f35c86228c3d90a77ab4c619efcf011f053cebf757f28ea5eae1b7414eb17592ec018890d85ee2da6fd133b1dc4aa095b023673cbaf1ddf940d2df100272209a32c33b1cc21949a316da9e63154db7174533fdce79cb7aa141bfcdf016134161af240930ee5c1d98ad16995d38fd04aec670528be3179dc72a770074d794a8669fcecccf232b95576f7b9374581f8730c29f90698947f28686cb24c15c3619a8a9c1b30e4e9e9b2d31548841e8e5964afec7bffe05366290b2cd94bf1386bc06d85327eecfbe70754bc97e061e070e49a960355047f340f1ed090a29c137e520ce1642a5f1b94eea082deef5b491c8cc86f4b205500fc33a912f1ce873f82354274d8e69f37c560403cf0dcbbb3232995362fd418eaa25b1bc5915fcffe4a924939e182901418f52b0cee40165a1e97d7e64fa51329699ea5f75aeefb766425829cbb6f386b0a5978d26f5177474a949fb4be41c5c4e5b2776e220f5cc4d8b0ce23967aaf95d74bbc3e74abcc0b40bda78e7cf59c590532a0a38cacab2836c9362b9791679fbbb666549fe2c156687516eeef3c6c465316ec2eb76e206deac2c3c299d1568943d6ee9973cf234d93f6b4b5dc1743c869ea0c45dcad6657fd295864a773a1a8a09b9db61d2d04f9e7a09c5d579f1d1789bea4620d844c77f66f49c2536b89f247c204ad4fe4c90d4e49f436612d1c455538577e86b2743ec032ba5898aecc70bd8461e34c8caa6b43f2831879ee70fec55d674b1a4f58180cd73dc82db0a0fc16cdd85405515c0a1c0bcfb0c44eebed38b3fc8f1c657a6de16aa7258e58b670841494ed47a3b9c55e37964a0a6e02b41fe26ea38ae3877989a50ad83c44631c50fd3934272630da357aafc3c0775fa55e62c4f5652320ee9adb435881ce52b09dd1b7efc2311f73c3812c575070c26a6cb0dc8c93d806e90fa58d53d4274a408b19f3db6038b05c82683410eb0e8bf06c02050131e226c86fe89f93def15ebb4a3a4d6b27b968517560ab22a1915798d482bd485bf8dd0016dfb2cc0db54e45396ef81e7cc5fea341a83a609ce9cc36642220765b6bb34c111e8a153ce70e89b67576e029b1d8a1c422ad24031210f432505588a117cca017ca8aedd7ec7e596e557203369e2001489256c0f23a5702909fa3c1f0242203ffa8df1710ba426c857babc9d0b44def7aa64aa2b3ae8c8192c22c2ec8860e2367d3092b1d573c35dc9eff49dcbf81ba28edfff8e5753c342e76f054290b1285add577b9c31d9d1bac32b5153d26b85245bcb0ce39b2df9ea931c25240d3c45a1f740033291119d9d743fef667d0e364829503dea2a20be61164e2b5dc13332c480642d3cfebf2c6d4576cdf102fad3d194659874c6ba652297d038e6b56528150eb868d44a981adfc3bcdfc402e13eb623e1a8aab5c0f1c4a222cc25fcfa5beb2432f5d170aa7283f89c2ec26ab678cbac5a19a3e635506cdb89c176c5e242739ffa3adc30b04f2466b15e45457f812d789ec214557dad9ecb4c784bb879264e8c983308a53425c63c84b20e8411779fd37a717e38c925aeebf9139980b8fb25e9b03900945b00eb9ce8c484c732fe3fa8ba45df6c0a1e585c6af643c4f5ed2eb7c8fa87d102e30486476fb729cf7669b0c4840b70de13a74ef7a96ec26accc22d71fc37b26a5f0a8b38a902cd133a1a7dd2922077bc695897c387fc39f72a7477a75464f15a0e6ea264b8fcc14adbdb45d1d55b05459c55ebef11ce2692faa1c6bea487b474509d69bc61192e5743945e10247c40f5411b3c436d341d5f4a0399c721a9cc48c4eac8cb6d4301a1e6f554986b7d34d94045bbd01b8ee63049ca2e3867e079530179b68605a069f5399530f13160513b549f938d47c970a258f82aa5ec73678dfacfc2ca0ff2651229e2d2c4ba7e861d36d8cd45ee1d268902bf08ccdc8260c6d58022112a37caa6e8c3961404a077266fd4a09871e81407a2304c144c0dfd7634d90eb24856b644aebf2f5e2800f17cebfe3a5fbf5f6f36972319b409f59766b1ff9fddc7deca32e4b58652cd410f859c415b8686ac0caecb4fa0a1eccdab11dc92a3cb74669decf2591077a11487448a5f4a69c138329a430b9d85c03406257b7338849fd5623e0caf7bc4f3870ac3f4a80a7b20219fcba3ac3cf5809841ea4a8a617336d0739b99ab3a0c57dd07d8f5971bd722c69080cb39c2ae43c8ea2e00031e74e1d6a20a85fe941f2250bb13ae4b63eabfa9e5e6879ff96e2f99b44209715fd6d1293e88c4ddf7117aae4a0448e341761d8b810aef722f9b490571bf15347699efe2da466f8bde82d6bd7c20ca5f871e439847642145d5c275b91909fdd94f554ccb5d47d7887613c42e14871b8511f8c726ea9c3ee6cc88b1552535ff7fc0b6c068f33bb86ca15a185350f4269d178ed6796f0a330fd52f5922a35189df15407f828a99c05a7b2e47fadbf690d31ce8a97277050620884a52c8030b5300d1f507174bad5eb038e225f779834096ed0174f4dfe90786a1d57990069c8af54f8f22c240cdc8f8d7f06c89effd09db78861a91b13f78494272bd30bed0a809bd8177032102d0d8df69054e26e8fddb6902990974e673ea815041e8f6edf481922034f3e11481d219f4d6cf69074247d0ae1fc2266eab0074fadfa9033992410beec2feeab208a93c54aa95fdd707e4685cc87a9067e01d81241ba6138aacc0d73134d6479c98c84037a6d72e1080e1abb12a450be9123b624a6e0363faa6649bf10ef4dfac99248a4684f46d96cca50a47a15c5e449a44bc581c5b54e9c80aeed1cb2339b845fde8948c9289948c668482c2fecf04a5cd75279a2ee5fd2b0eebdd0385e16d23ff1ffb0b7a06c4b6b22a3c93cdce7db044eae9f716c1632cb9a322104ce625a38033422e4c7418051eb75b4c5c48d0e30ca7489d9088a1220a088f30191a50a12870a704e0982b4e893d82474f506c215f355840e913b2fea74260ac22ba4282a0be159b99fc3a3946c0ab8b230aec5c7a1c425890b3597e48b3055960fc645b7b85cff875cc175f663945852265e008cac12a8185dc845924b37928f0a7bb281d008107fb705bff21e32430c1cca91380fd74f76f437892bf045e1707a13657de12879d708f5cd4a9163ffb23a0d1e796107cc180a0d9120ce99c8531d50c246c00e379a32d453c8d3bf7df833e4613204193abb602b64bfdbde935049702d541d3dfae5924777b9818d8ce55229212ef57903e7db33ecc3c32b9566abb86b6504149428936bc7464c9ea87a79300f48d1efd0f74483d0609e65183a3072539156ec8dc483f426fe426873213fa60a9901b1d4826347d4b81dfe8403cf1020f45e428f9ec991d872da231c3210ee120e417e9c0a422a78336a168a3804aa6887cef5fbce1f4a07c0db294c2561ff6e00a2875593299414a8bcfbc08808de01ad2eb25985dc5d438ad1834a81549546a994c6cae82f1dcc5146064c8987dbdf4b31cd3a0472ed82a1d0eaff8f66f6316a5490d82ef69e5f7a0d11d049044ca0ba5a61d38fe36382b7e7393abf9448e3ede1a0fb66f26aab2f8d2844f8eda63cee7c2f173c0d98603c168e4b9fbfdd905c5189c0b1478c9a0916d82b348f2d87111e4030a28547e1976c7c95a349272f53c061c968bc7d051a58dccdd0f958b747852888d758158aef88cabec45f1fa316d7b91adcd0e01b68f20c0a7ecca04e420f2c56a8044b225b3ba464df7467f4113d50118f6425aeb993e911be8fe0caac35a872907104c1ab9a05326f43842bbf4e5603c92b2a9118e19f01e85da549d7f08a742e1a3d6ab61b8fcde5592af3802561fb36dfc40d0c02a777392318422f804028d604b75649359a35bfb6702000e2ca82839db31dd1a0a9043b6e6b76d1c8403d0be39af5ce5fe3e735a14b036aae20f43d4d53e5cd592f243af0686bf139df098c1532250a7ad260cd20ed0c851357e0ab99361980f8648f1a3707eff8f5b3a30f81c103f9011224e438c3e1fce7603fcd31eeda568959db6937f2766f2366ed40b2e3efa2087f043341e20cba458c8fec0c8703c442314aa81c576717413337e4675ae70d7a97648b5ea60dce81cde2aac32e3ee85550dfc46c97c36e328779566ffd55fd49c0e97692ef33a559f1d47fac5baf193f37aa72b4b84ea74cdd59fddb062a070a8bea0d5770e8d67c8c4a8aa765155ed4bbe55a496bede2e1d572e693312b725aa7e4716c0db71fb048de676e4db1f2986d3f0229e26eb744aa1f80c93312e6243a1921b70815087545ecfdb551ae98ff45f266fd81e47b746c67bfbf05c94dc5d1e63090885d48e3d77e2850c35f79bf0947e56da0945ce6292ad97271ff537a74da630e8e507f76fe2d43bf2a1485482ba2769d27f9f802b9ec4d94fc98f795fc06655857475a36ada9861b876b7924c469f5760abb5f802ffec96455c86c67f642d7f09042f2ef869d4096e07ab81d8b3f1a0fb2c17596eee0c10411f9a2018c86e6cb60ba31f4c7256680c86db8ad85be2773444910879fcacb9c4deb4f5d6b90d5644663c5781f8b76b52a466f93dbfcb3d4ad5a99ceb109578240fda013a17ef4547f12e28a51af9e8f06423e96c1e5c542b0ac3b3aff4bdb65b0f9e36d3c0edb4e585cc3cce838bb46f3711ae3f669b9dd01e0d102b443219d2e4f805477bbd7c9d3c911abfb4eeee002a3526a6a6c2f3c8e1996c91858cc553f3783c1274ba9f5c6c0b1f7e6efa1816db278cedc981932b2cc34aedda18656a3699e0dd8f06901fae1d52aad8e84524e8db022ef03486c7de043f88bbcaeca541dff2b9bdb6a4f5061740a5a2004724618f723fe6b7656850debc01b6867654344730a907e3dd7379f71db34c788be54f72b66a003be127c39585ddce695fe07e2c9606df97e0eac37be11a9b417e2b58d38df3ff0c9b6e30d4f7329554a3cf3ffcd9eaa6fce8ab2088d12d7ac8ee4360801d04897166f91c18230e58f2b87005d27a97d0a16c27681cfb3546ac7f0baad39af0255cbee32ebd18af13a61ade223339639c5efbadc02729818eed49bc4c2405a53f119f45c9c4467dd09111e7338051c1ada00a901da7f367d3ffda227ea6f690fbd554cb818c337c15cc4c786af9c96392da1127d2f624002b560840b1f9a32b04fef6d3e5874a7659532116700faf867479a5e277027171d496e791043c7fb07752d9f29fbd65b5de4ae75bec535b6bdc78e6e0d097fcdad81d86b5867e8e9f24bf2aa228ded4c713358d4c1a96337dcb60ea6d32f48dffd08e782c43725c7772413d8dde737096cfa3c2865993ca6bb1bfc811154f46fcac932cbfb70725402023da363d1bb4b9aaf60157a8df6d32e88e2c0a8b46c3db8b3b918388d5f1e7155e317ece219d4f224510a3b548fead2a7990bf4150280bedf8496d652224234b953b3c460869d6212c24f50b33512ebb679934ed9e0492efdea5f62e63113d28a14f4973662af998eb833c59d678c2b6e1c965dba920ab19cfcbf2d893c388d531bfb0c5206027b3e8551c698e317c188d61b8c019c824bba3b969c91203e51d8c4a3d30d6ec5a4eb336cad003fabb555d5cfa4bbad85fcd6e35d30705768e69b775d1d5e75bb34add73167178bfaf0b01c050b2998036c3caad4f060992da2d624fc7e68fbf4aa3a3dcba15d4353228b5538425da164bfb8a2b0db4a741b9826bf8f8b3a08665b8b44c74bc9355244f3067258bb325b0c7104e172c610f53d11f577d20f31499adafe2c0e19c2e0a073a51910045bfd7296307d45975ef922db3ede32d169ea271da7a97dc4fc602a65d44759e6babff0c70164f722c916c56a560cdce0fc22c966df51c2b22810bf095ca6e8e20fcd043cfe4111c3123686dbaeb630a7306a32bb237975bc0bfc973d821fd191686a50c10f29e4bb02f6acc0d1b0361beac24724e3361f476139c05a8859d695ba242efb993ede216871679bd44cfd703f5b0fe1fe0e1da6bb159b107e68c36d257dc2f7e7fe6e5544e7364bd3298fb01cb016eb9dcb82e4e1749c0bce0203be7a4509996f51c137a301cc2890c689e52046483413366788585bd4e80fdc1e451d529cf6ffaf4b20e531feb894bc5153f13a0b909d95aa149d3e5b9726307abc631b2fd3c542e89760b09777c4304816fda9fcba501a99def94bbfcd2f17869f6735f2a188477d4543cde582f36832f6468277843f56ecb265ddfa9979e716dca1a4974292c8ed0acf71211027c34589875ac227979e76b80b7567c88c81b0538b246dfa2eb5cc7d780aa55634dfdb212c2870efec504199d46fd566c3881887ec01bfc180831918e8fbbd00f2c7695e810dc32f2b1db46f8a6d5117461ec2a1e9386e6046b2cc2d3a988279b3444316a0d561582309cb0b5596e69814b1c4ad5f1d7b2ae8f6c65bb092dff0a1f480c4ec266c87326e50567c116cab44a9e3f1c3fc934222df8e10cc3e52e19772d3d9ff18513086db3ee49bbba6bd5cc01164c2d07ee91101d8d611d7ffa8bb3fadf9675953143127bda477d2e4ac3fde92c8b232fc77d457ed0ddf4496acaca5ca6e825227c9e18714dde6d5de40da5ed8d16066fba17a522c3e4cddb25e5002bc37e91d7221811b727381180fdec061f67377cd785bf75a49700e62b6678f1557f92496f08aec1bd11730e08aad041cd757756f496381c0b4fceaecdf0b6fe63d8f8bb8935a8ac86e82f7feed88d71ebd6013ba34090c6148cecb193417003cd07de1b84dbabd33e5f95568f0394cb2623e74744b7ed63befb5fd7550bb09f49827119928117d1c877912ebc04f90c0fe48fe5e67568a96455d4b301a8b87023b14ab681150bb6d94415a5b58847f912a87a10d05dcf42ffb5a4612651b50dfa881ca3d583f8c7014fc4bb4e265c18f602e691d01a3d824a1d882995daa32b52bf288416199eb36e447ea8cf1a8a6ea47454bcf0e8ebb53c3952ebddf1d11af42aa8abb4e0de45ce52d7bd79f9a3490661289abb69943c3098478564bb25bd7bba459f0edc0f704cf980d0d67456c391ebc1f3db4da540cb8bd6abe48e3a8e7d66663ca525c33acad09b6125eb55e78db515fdd36397792fe8f1520472c80513656a276f5122f2468535a0c00d39527981643281e4ad9fc649a6183c0ab69a8e5e976f3354dfc390587c36502fd72386b48c79d02120de69df2d1de294d421c67bb500bd588fc82b23a0e8923bab5b7216974045a450675ce9ab029fd3ca93cae6e59257cfbb1408b5105ab43ca772b3fb715e9a0b3b6bd887e4df391e2161d2eca470fb89637d0446ddfa8e477839a9605ad8d3ab6500be81dfe491b720289688011dc9b047f54a01115433acaea18dc0e3165b4c9eaaeb485702d79817215a8fd3079527819e8f8f3101ea996409e26fba70d87304024d698a20c129920351160355fb244266da46bf8f32a3889d33ed8f8e88ba3467ba27ae7129edf6b659a2c7a8d7d191ae564cf0c4f1012215aa9bc06f1b7a498a999d5cd85ad0586a4de20214fa3517826ecef0e23810b6d4d93a887d30fbb9402f6d120112e89fcaf05a4a233171ae30b42086de134d38a5522f8265c883904bbe7a3c38cc67cbfed88e8c07b6ed4d714a28fcdf3ef5249a4b1ce40fc4d05e8f04ce18106ad4b3aebd255c9ba1918aa5a6471bfb3dbeaa12110d29472a3a9880c3f7a433692ad7d93babf67c604d5a073d4907c85140a7058399d2393553d389b478198a70771d6dd220b7ecfb6d0f7cfcc9cf8d2b3f3e4453d064634c38dd2bd04c2fccc998c378e0b6fc067463d03d1980bb50e3b0e91ee9f7f7d632c027d2bc9505a5e134f02c86a523e82cdead2de2f400e38eb27e0c4346bf6e61ac1b47277a7543302b6974a640edb7668e09335263b626eae3838e6b7cfcf93c0b1bb93934731826f591c9da3cd66f3e12107601e9f84e1421ca6bbf1789a6bc5126544ff5111a19f0b671795b83012550df7a6e81e8cf0211a51790f2cadc0af8f6e17030cc413a2dfc88f4115b01513cfea5890992605e0b559bbfa01d3a00d72ec07bb2b6d7cd13993187081c002891ef086307f102e8001e812d84381bf8483cfdc0c31c11ba2a7b80494deea08081e5c73962ba3e6d2552eddddc230b65fea57789252fb03c8ebc4ef4f554b0fb1371f835b36268c18aa5eaf6325f7cb995bc40db67dad16d9217e8665ec1b154494ea0cfe27486311b58514ad6987696ccd4add07490c1047bfaa824c32ccb8f92246783c1ef82db1955685b6b91b1f431b19d84343d3b3f04406eb7687c3b5237f0851ea73d5ae1b23a34998484cb90958be7758b8cf820e354b28b2fd31f580501a9e56b909371f902aa3ece5bab348dd4b8d5db7126b80478c33b6e357281530508128c42c737c1744ab7b565834c252aefd58a7021e1131710e609408fd68805335541b7e62970e2bcbc1366c3f7cc843ad6b911d3003e3bec9b59cd7256cad1e6d9c4f6cbb976dd5823eaf4761d3ab40c1611f732392a60618e8929f040b3cec13ad2ca5d1f7f49c164c8c182d25728ebcebbda42bf368c82a2b5677054b7fff7abca1d5f474364bf223d29b846eba729db18b211a5e9abe12be0edb35bfb4c50d9e1b0b41a0ba9b1304b661f98e21c02ca5f617ccccd4ff089aea70f80e5adfa9e4267d0f55129cbf98ec9a36ede54a6a7cfb02690e6e7721d6535e6438ad300a3453419f34ca11bab4330d2cb1b5523c109c2ac7fb4cd701321a972d6d16e15a377ef2de2fa3506bdad1aa4e788c41a370e2631df91349b56685b1c00fb43e2f77a66871fe1260785acd394d5523e2101163b49d95ad546a7fde5ecad364448d323995c6d2f8d50381638426587fb675e4a5034181b143f98ac4ce81be6880b60417085d90981f0d336f26aedf8df4c76297803dbfd605aa825fe0e193b3d208ac05e92b9ec890c45216531445579e07db2d5b085b71cdba1f8835eb8e31990c5c2759fb04583c736d1e8fdff28fa2ae43bb486f96cebe5266db8269e95b68ed4d35564fa4dfc29521b1cd1f4803a13550aaee7f36652eb5169d2400cd23bc1bc577c275065aa0e1492302c4d677707b50c6cf977a992eab4e7d190c1e9b087fcebbf87f7bc0b225e20c5b54fb41bb6971a4a21bd6b80f756a9ffe0404be35422a70659956b48d10c2ddd2c9148845af7f7488d03300aadc4e5841c06698c7e35469b4862bebde8b7c6bc71d7e8cdfa4d32635e88f1e799dc820a033941e2fd3fc6138dbb217f57a023bfe328ff3469b8ad648e832d59199d3120e1da4b23e36c2685e16cb073e6dcc77e5088f3173ff790471f7da000fd8659f57e8112664df5ad1df1ff1c0480647313b889cc08929f76043ef97831574f5c46aa98861fb6bc24918ae4bc341d74ca66b63858a383992a9434a4ad48e53c8b1f8d4a67f78c5989c23105cd2636538128086d5b00b7bd8675c99812f7f899ff9128e36f76d7f29fb85f52e0b9e407d1ced0421c3593b2400361e61ffb8a80a53e4fb85a293eb911612c8b9e44a356eee9910c915c716544f2d41d9e97980cb52eca94a9ff0068797889cc89bd4d5a91b03293789697a0a4667324ef4c081cafe1ea8557189c799d538e0c0a93fc69f117d76d5dfa18f9906a0cea0a9f1bd35a5ae95801dd95f8abdec913132156f4e842d315f45aa23d4b636f558ab594ff43a8d38c7594174ba74ca8e4a1644b5ea9e687f2ce78ffb85539216d53b36e788126cf4fc74af42fc5aef6a9a33e47ac12d5a494f8b1d0b92a11ada6bfe2ec5c9c0eacb09b517ca46533f7902bc139c8b843ca485429f084348885ca486cf0b9db968f223cad6cdd6b3698cf3ede3c72bec068d9990771a28c936e9365cf788e0d6e2d629d469f257895aa9f23576e58643ce6f97179084cf44205e916221489cf57944f99e63500ea72c8e53f03177ad775583e862803e0701b62a5c56acb2ae34d28e947166be7233f450b5bc555b5867f594c8052db6e94d8d46c2da3c1bf7da6c9080830fa5d2cc6bd652dad7881183db4a76922243f90c13f3beb28e10ea7e9d5806c937113fe5d18fa9258f45c1a12a1a7bfb1109a3b0938a7f38fdd91388295b71408229b4725e07dec481dfc2c7d9aafcb7efb98a353d0e5bdf2cd8a53256efbe682492cdf92721858ebf42adfcc17617241db700793a4c783b70655e68d33b9b7a89f17823cfa30f03b2c48baa93fee2994a3ee85d098b20a35319a5d215ea7ecdb7408fbbedf0c37a0ed227a9181bb8b3cf78db355e988831d084ef7eecd9d0e6afb2935b20e42d1f5218f0e9a7ef76ebcad48ec09ad30bc9cae7034a15f59e78d8ca5c88f211c77edb39c6e9d6deb66dd164317a7c39fa76eea44c333cc91455c8fae3ddf83a0c5dacf30b14ba5150213655347deb05c290681d7a18efc9399ea47ed7506e52e6bbce3bdbc94a110e40091c51aa641598eb2a4c6eaeae9597d08860ed754adca74077ba0fb80170e6e07068aee1607b294a86178faa91ad32e3e1d7c7f97f36c8f7ef7dc0c1a31935cbbf0f518f05b5a8070cea244c64ed71803b3af4e30842191d3d66c74be4cf6af66565cb2a6946b23f82b2ada7b0a46bbb75f9fb294ace030cdc80a1865eab26650b101fddaa944802c75560b40d7d06377205a45098f34098fd4cc177106c29fa68ccbb4d9c65b258d4b02d37a5161aaaf3fed3b02ec3fd34edf59df480c5ad54690d0b85c61add9734f57a5bc02ce2888d333cc7cfc1b3cb180d9f31d295af135f4a22dfa826b8c03c541c9a541da7a7272404a06ba257cb425161a9cf10ac7ab887d070cc8177ab796552a9cd115ae4dfad52491189f5cfad25afd02e9045e68924d0c6919c7298f02131d54e6a1e747f4c77d1904f72d27e1e4c217275aa3a210542c918cac7663cd33a971cadb0ce13a943f47b8019a4081a9f70e6599eb3942b6abdf57feab84bf75782c22de1581969c42329b476dbcbc05fe95ea44ea15a9adf15d9baa2d1a82f9845c26b58f6402d4041f3c90d39ee8a8d7cde1a3ea38eab5907ab1542e8c20fd55540c15e00546244f58b14afcd995a225716154709da95db5060e8f344c4dcd4ea9e78bd271490d917dbeee9d52cc7cd48bd74a68e6ab6b83547d9e898ea1c0ea61b5882b491ca60495ffc5765a0fe0c16d296b3949383637e020b43f881ddab980f5daf346f59cc88508ed4c4d22c9f6b8537d91641ddbe36dccd7843022fc37b4a234f8be5f7b2da84e21424d40b91a815a429a538442402dbeffa5964323b7bb4debb3fcb528136a0c27dfa039e0d020e079bad1184e53f8e9092897b302e19469f87431bf775f8b0470b9ef55deb81b764cbada25dc0c51b0c78366fad9e0b72fb3f0186bbf12771b755c24c06d914d3b51f63b10643dc7390ec88a157fae7c101e434a58e1c78dee454e59b49d6c85bd667adaaeaa9d9960567803ffc8af515c36995bdb6f4d9ef9404212df076d67f939d0e7045ecfdcf953e02aa82b909d1a3789145ab96a68e12194c651073a191d981b55b106bac3294076221b780c197d03c1c71ae1cb92f4aa4a27127d4a7332f76516c403069ed0a8e91c202cea7728b39c5d7918f9606fc401fb8be7c6bcb8977273ea288ffc8a560d874f4c782a199da01a8debba4fdd2b7638b7cd2ef0f0d8bcccfeeafb8f9d42abeac75557cf21c7ca8b9267b296a00615aefd87592ec465154c3ee04cf649bb33582f3484670daeb2282f1c5064fcdfa89a7641cfce127bfeca48211200fbea2ce05fb762da48efe24e48f89789f328cbef3765f0c2bb9c67d7a48785f1d98cdbdfa94ce8229f2c8ae7fa24fb8c508cdbc167df2df618cf279fa3e883a8684f2f404e16131909bf1bc831568c22a965a320d637640d24d98cecbb4ed9b1d0931e8260220ecaee98c82b9bfc0b9c2f1b28e1d9ef8959787b10dbf4dbd640888a0708d854544afd7dbdafe328bddde23878c64dffb1c876765b45919c204e19c8b5bec3d87aa40a43ff2c1928b183655e2ecb4877feba0252ac3ef2b68a4f20a159303e27baf291d6d78e8750c004ba6fb95bdcb9e416455ae07424a377995488a7ac4054ef007e5b8288e726ede4189c643c6e4a19696fe4210212d742106cca9c3387d312869c2bf3bb2671be4a7ece8a61e14cbdad0d271b86cda649025b143aecaa0a0d5720104b884cf6efe5fa988a783a8b4d17025ec124a2877ddc6dfcfe0c9831b396aa9e77c1623f9958c11ec6b33db46e8f8825a60d839bc27ded4afa114073fc62833cf6a00501785017315b7bfbf47202754150f1ab4275783ec129d9430d45e6882d1e1d5e10e49bc0248208ccef36a6de5ec201fba78f3704c990f378ca03ef9159d444c872bac51681f955c9a45471c70c48388d2f1e8e6f2125a8c21e91e6b4382fabadbfb7fac89d1a3cb15450d4708bcd3f55795d52243ea37c0df189c3e12ca371aa430e3ec865d3c3c0b810ff331aa1d2ae555bb57d462c4c55d6abd6e3021420919673d03150ebe7ece55b97cf8eea1364c7c7e10e2f5014bf5fddf420cdceb77c1acf843e11d275368ac9101efbb2ae1f4097186f5b433b0872d3b1441dc8e29b538c461f32df766f4052afa47efd22c846e99e12a6365bc9371832eb5962128de997e9b822fe89180ade23c7ffa5847fdcd2f7d4449dd7dce7a4d79f7f7e1099f274de86186c47d4219d5fb7ca3dbfc784b36830e805843f61035ca0f86d7cc6d8ab214f239469c75654f93a5f912417f9a770dfdc8943da33c86278b20e52a2072ec4e4fb2e568ce2d86bc4c095bfa7a974b85bd2288437bc05d6e20a430b57f55af644737d33669adf8b6c3b075feb412dd7a30074b6ff6e9485f833bdfa4de3b6137e9cea1dcc6d1b3e40b53fd399fd4848e0aab34f442f2a117dd391409aad8d89aae2e4f3abbaa7c003ea3d2a9347c38386d32402f08bf92518910d92c179f9f92376f3ae60eb54e3930c9cd423c2c510d0de1da187df2b29ec6b998185dcc9aa88c6e95ef35741020b505a616e5c166003cd7017c2c4921389530f2eced242f9cabc1efc2394292ddef93fe106dee087af538c779bc209722027adad0dc6f66a0239df26ec3fbd56101844333af6919fde9710e7f83d50291768ff0b9949744f49c54d5ca92c82128eea0a618986da47015b0cd5a425c23909863ec9829336ef44e0941d918d1319c48fe6ebb5ee8f1370337485a6e8a6e4ed499a263223686cc0d9406d99d0ac5e46490a8dd2da1799ad32774d1b1a6f5bedbf1210d424b260fe8215116e25e364ad8079be564d14638a512a586f5eb91b61225b791051993a30081a30d014ba9d024a7a0aecb7b6cca4c10b026539c8d0c7960515dec52fd5d3c3ba9a0f8184141bd51fce13de2c85e945ad0df71ad49079f6708fc13c9c4116f98846f9289d8707e227455c7084c502f834c5050c0ffd704b366d409468bf2ee9f4818a25ffb5a6400aad4e96da016cd199a2efb145e1878f9aed01e53f79131c912d3a1a9bd81270c6b70acca62007c822c2d93373fbcdf4cf92cd7fc08f1c317e1d3ecf811410a2223e731af1a173121f0296f810dfa63d367f885630dd61521ee7154a907903cb329899980e924ca1284b0cd5ec1148c9d82c097c0be6cb5a621b19a294b88bfebef424a5400599b05c498e11ec40ed20a66055bf08c223ac1287f5a15cca138a37f62451d1444c40708040097620335057f62414c5090205da0e9e070aefa9e78b1f302aaeca279b7fad49472a93af251990333d58a6c1f071310e61837f0b75d438d2a77c1ee5ab6c217e50ef2fb8846a148dda441e1cde3d54faefb436585d2eb4585804b83a42f5830d78236f35ad3b493565f203dd2f977b228c26f3f1302d8769346181b31fc8898961d481fee259cbdc4148315319d383329934a64e579f5e12b8e50e95da333fe89cb12f48d08d558c78068dbc2762379539131e03488e1c8926ca4e86ac9948847584de883f84b2226ed2722925e71ea39867d16fcc5c7e6fd0da34ae9e496d146d20cb8fbca2e4fa5d69649aec827931cb281678f132d338ac0e1cc400f1bfea636066551a6ba334c9205f8acfd10f60a0e90298197d9adc8c8ecfb0d9bb4357fe529dd7b70572bf2dcd35c9487c18e38f426765775c71b59b85737d04c5993dbc763955f27013154483a5128aceb882b749f9e58d5f35203607fdd19aa0f616c0a6fea88c2731881ccbacdf976d862d26c69b132f24ffb5a2817a946f6a319e4c4b5f21418e255b55a38c6263dbb33b14431532ef3542f028c52ce039cad31e6e7e3a8f02b0b6ac1e098cbb01ce5765d45ce7a3ad9a8bd68e50eb8e4aa3b2e0f6add65e0dbbb74f4d25605bc358f807a5bf3a16dbd69d2b770764a013c88141f088ae3be9fb6f542c078fca6d17e44d0f084241f0ba9315fce847fd313d3a9bb1b1ff00c31683866a17893b423af691f5d9c2d7b6894e33c3ca372d18cfbdbf66ae3f68fed900cc5115248c827fd5a4bcf16edb95236a9b66659f6b9f989d148d584a6a45c85d5cd4cafc55c69da9349d83ea6111a33b1f0017277c0a7fad79dd112ba065225b1d128e60fcf78588e604f072af1b046fa184dd994874d3ce96a00dc4d03ea95411d2b8a6d12ac60be2988527ac10351165678e0fd644c25014ef43a4d2ef5cb5813006e92081b85c7aef0a824cd652907ca6b6575c4380409bb61cd363e86523405c354e114313685897e38063ab30d0d0d1ede82af028b718adc5ac08b948c787308052a9b21a77ed6bbb8694dfe2c42208ecc285751bfa643870ba4dd5a6e1a58ad516848d685d841d892484826a5e54d4515f70b539fe00e63bf9ac05dac05d8e10b3dcb29244c1be4a88d526c3b50496fad3ae7c29f85e64c19bc4426b63dbe37445e33c3cd404290b3b449cd51ee2313479a5d5a17700f44084278a8324b8b08e96a3124a42a820fc8afc06a2fb08f9d6003cb8cbe709b0408c81dd3fdb502d3aeb8245d46ace98eefa89e784053a505edae3ccc7607947bbb43523ce0156d1e30ed4dec329e8d8fb9d66ed77d15e8ae3a0906b60894d9d8d6bd8051c7fe838cd81c286f614eb191d5bde825d8428a6a5d929d6083170a86e56cc9d52aec7ea3e85ee504b2cabaad56fbbb4d686810f210efb646c0ad35a535cd6843f3c53a9644d6c8a3c8fa19e1c25d9d805393a7c34d4ec5592918bffc4cec332735dff9e92c7b329e7a4148eaf0768b86fe8731b159e370787790c8b6820f906450459ae58413b7263c6824b9325ad7b29564ce72c2a034341cfde284c44c987ef680827f95c46a6f1e1e4a4a8fec02c40ae81a032986051a411c8331c44d29d8f20e77ab0de5d2f6f244ff5b624f2568f01455f0c9120a53a699335951892a9c7e4a578be54c2c109f3218dcee37250ab55bbaf9932e2a1fceca2dcb2e48142cf65fe01ce281e2ae43b72da33d46edee8d903a78049fbf21a4f20808986e2ed83684e2063cf0838fa18a446ce93e118e4d818662a2db4e14a8eb071567ae607d2e3106932a4e2de96fe5e6af6088cf9b575d881eaf4b8c420419aeccf2ce3da7b0851427ad58cee20d0c89c271c309b72609d0f348d87ed494541bfea3d5313548525f3e322c796bf5765edd0a24e0711f74fb4e17c7b3a56d63162d5f34889086ba8e4d906c7a2b7a9b0fee6fb8bc4ea1c0217e4ece5fa15edb7e2ef4cd21316ed38cf1eaf67d47577b6dccf9d07a9e6b89522704da0f46c335ac17fc0ed2db35b5aa2069449323b194888d9c3b76dbaadc7440db31a3a5ee1fa6f1e329d2b8dfa6788503d1cc6111a0b94e47dc2df48ecb69fea62f19880f79b8b720d7152ca329cbc420321076977dc9c6573c2b0f977c6fad268702075be1b81fce4dadf5d0c9144cb4211a5429c5b81ea9a676a6c84a7d80d4b07e501b93848d61f7b61a591a86ed71cb9690c9b8045485da2a45e8e009d43155257083237bc9153a390809664cb9a37d7f24b410528e0a4c942149323f621060cef00fa36ed9170191236400cc03d4c598e52e1b0dce250c63d28af8c948555b678aad551ea320ad938318825787feaa542022892da5f867b58d7c5107f2f8567c3441435dde57ea73b67345c06b68b57d1f8d18dbf66130961101ed85f64948d2dac3459ff92c8378136d4943400d7a933f6985065dc0165eb643bd8e94aee6d43c46a9cac8909709fad89887f68496742e1ec97d166102849d8a04d749722103ad1e831f09f4332ed04a01da6ee6703402c81890842c74a842abfff615d5bfce003cca0f6091c4cb27deb7347aceb6ba5f3ccffba680565b1623b1eddb72db2ff2ae0a2a29cd7cab4f5580374d0a8d6b39c12a4f1c61fdb48936a05422a8b65eb4f03cad8f4340d13c98a0d9e86234513b4352abf167e270214c127717753e6f073b9e69bf8b2fd4e05b83d4e1000b839282c9db91266f2fd5c9a314e7fd4346d70569600070732522c58ee074c3a46eb66e032b2482ceb8906c7d45fec95b7a29f7816897d13fdd21be52227df222db0824c5b242e0fb47925c4edf86f3b7ebbea21e948d7a3bab696f698c4b90ffb8bcaa5ca6acafe1799f1e86a5a3d584268db7cfdbc9692d8a8d512643fc24dea5e2ff77405c98b91c6f5543517c3f4de47632e7bcc6e2ae4e36e66939e67d08039f77ae68d1ba7c3620e3680e97421ec0f95524b3d2b2556b2ee966778bcd3a5421208343d97fe38f7c954832a298ab623af884e05960724d192a862ddf0f851b0975fe117111c77328bf93962c9d2af05929fb8950b28ed22679796940c9220125ede1d846563e28e4b7e01d960d10583dcbb4ae6c4dc5af1b5f5d45edbca2efe38aa96df4aa164c6c70434e9e33d0c4a0e64bb16cf2bd7ebd0dd73ed6289a420f9e46b5145a9f63e8dffb9af89f862fff25f0f327c531f3513d9ca424a8690c411cde461e78b164680691bbafc4151324571ec7cf0e659547674162ed44921a56891a4629539517010fe2f1decaea9474b2706f856899afec3736655d77086b47b021d14c1675e0f370d44e2e638271346ffe0f251953d16dd1cd3c92480c1f62574782bdf3b19a7c13de8b38a800f6df44388983be32d6655bd6f08ebbe670b69a77b329ec0a249160a49b65522692199f07b4a50deaf34b747bacfdc7f45b15723cb7389c09dc442389730ef3b242cc7c795196ff50862561be4a5e42f3911b793fa49297edd11cc668eaf5d7cd2e3d8794544c883ab04c116e824b4ebae6c8e1e07021b98590cd1437f8b52912cddfd60ad7192e5bfcf4593166e71b93b3fab53dfcf028b3f8cd42c9daaf8114eb3a8e582e6c8d57cbc7eab1fd553129d2311dc83cf247e44a3ca5df62db4f25c6c497fa193b7355a4caf53308115f6a7f686b980ef60f79368570ae577d7a017d8d15ed005d95d9821d4409e45956c933a32f0254ab18d192bdd45bb68afa239590e0804ea30b3298b89c4a7d7dbea11bb83aa827589d0ab1303f210ed2cf876995968500a45fb34d86c8bd4230cadd345b88e5a171a0637a9058530fbb69b8e55ecbdaa2c15cdd380444005e7e633582847f94faefa49647114c0972e17f5dd7de7c08f1764e5f75eac3c5a8619e8b5c7dd43b78efd8a087051d3b846e853b266a0ce9dd61467d0c5753d16006c13735f58c0a9878e1a3d60be0a8154db1610332eb684e4917a40340d35683d0a9cfd37c62bbb1973d11611f2ad304cd5c031503c9d9f5187c0e6a6f3189b3a4cf190a52935cff9aa469001528e2910c10c21feb833335ea61ab5c4b4b1e9d9edd80644662e5d8826ef173a1b17be10f77444e2961b5024f7e0fce9e73a0631578b3c3d0115089d8220c200b147f97b492b2650943037e87afc1fdb51b5d3dd75f9c90a5fc79e6e3099da25d621242ba8f3b73831e84f48d644255d82b7bc58b713aac7f5d44e011bc4b2106792ddee70958697737bf95524c0a0ff407c1e6b0be0e25ce8e67094585a2b08ed35f28cc2ccb80978c8de63e16c50f20d9de140e01f7a070c0de6dab07f00fda3b960c2810dd25117aea9b7cdc0e76f711febe7c2dc52a5c650860caf8d4c4e06c7e950d8af29a6005ddf501e7fc3fd2576f1e1843d31883b67a9e0337d5ed5119fa8ea88127416ecd50da32cdeb9e228cd64f784e5d6505f4fa255b05a65c69b59bf178983905444d2facf856bbfbf7d1f937dcf8fe8f060ad20e042e501f9390c05030d439aa9dae4ace874076f2e9f038c9757a3bea1782834dd6d6c1d3e4ea955867fe802b75b758f3a93f8dc675fd92a63a1cfbf573ed763f9c9eec2ea4a9a624821cf9c7945cf0e465148235709ba03b1b9384ac6b5f7b2084e289477d2b2f22108103b4002a62ae538d4dde78a6e58aad2f04d5aac7269d05f7515dd95c72ab56710839c72473a308ed1fcfb9dcd217e075eb8465649ef74be13dcbbb06be57b4f50f85f3dc8bff37ce9076eb9b53fb12a7d149ded86f5cda69d2de30f90321600626fdd3f248a05c4ac479325824b20309a39a7319a1a8ef6c0060cf3ebabc54a9c6f28d51a890acfb449c383b388c35daa1ba42e3ff9589abaca85d76d105585f4715b3a073b4405a5235103041d2588a4cbdece0f8c243a1f00acce22eaf9f2b22c89ca119f19c96664733510a35981a492f49951236e55f3851a82afe4f07a896a9826b505e0d55c81383e875b5eb2c9b1888a547c79449bc6869538051bb6af12679e3b2a86813f24fb7d15019254962d6556de4b431b064051b355bf7d0bf77e5c28b9ef188ef7fe729a5d86fd040caf43c7909a6bfd5e22231d0dcf78c2eb876fb076dcfd5cca83efccdbd58e46aa014098a5566d54a1948f37e79c4f58f2058a8eb07da2d0b93859a17f2200eb6c41eb0edeeffa14d53868a961678a301634a5691613104fa9644d5b49217ba7b67a0e21ccc37e7b52ff0c6a3300ac508502789793c8fc68d1994f3a738403589ada8f4c738fc1e83380f1ad53852a74c94060982075f4f53a1eed52286170c7a7a000c719456efbe02ab8f3ca3de73665d854298e3d67df5e461ff38c0fd64e016b7f95ce1a5a612ec2f038f9fef91ea3d39311b8a4252e9b1bbd570003d238ac6b5c30bf368234d88fbb415b28a15ad4a3a2a001799b9554988dd81f8557357538e03b5f1654acf5072a9e11cc67846466343e08c70699d5a48569b0097d54d385e96f08f40d10aef800a135c3fe869c20eaf2e26a191f30d4a93529b324358ae2f7bca1bfa3938453f9558228e3ed8404bd4e2840a76bd70252b78c4006057a8e803d1f36c6602964584fe12f0df32be838e2929653ebfe06771351716243d6c673e911205ec3963d3604aa9e470ff36e0022abb987c63daca10d74275382b177f5b37df847ec7ff00bd314ba045f271a0d66dd6109ace768cc82dc74e51ef7917529cebf283f4f2268c5e827eba2f2462e0915bd168ea2b83049ede1ec16a01d2455d35f3841c952146e93864fdac4e13bd59d1fcb0a89f2dce414ce5fcd51797f93f0c4ef377e4fbbf7026053244fe6a4166c811c39a1abf7e83ca528d82e7786ff00b06ce7307c342fbb07259edf39ce2ddee03259e8edae98b2b51e6dff1f5eb5c4a6b1d37b940d1b9342c2f8e7a426661ae82949055b90a417914eeb95d8a2161c1f9b672b7b2bba7a0e8c4b20f270eed8a1bb056311c541857b70d0dc1d0c9aaeff785e939ec306a95ffbca6a066d70ff888585d7ad1236fc3973909c286106938f3dce9aeadc8b13dcafbbe48685c09424ef352db483e233fc391ad00f5ec820e4d9e0d1674551aafd6bdee59d25f7b9d393863b0f612aafab979754d9aabb5d1b009cdbfa6f8e7fe984e8e1fc695800d1d105765b253035f93eba6bee8f4f9fcfc6786168e607d6425eb751cde3c635d8c52dbd3a4cd8b9d54328e0d0ec1b309fc5c2b9e05fa6904b4faf9bac72189a7bf3e17a9815d63ce8e1425d70d3ccbea47b7d7961325e536488985d297ae4adf84552468e812b866252d58f455bb2b142a048ae7962cfd8a464742b036bbd040bb9d8b3d6c653d3182cc268d07470989f6d5e36fbf06d13686b83accf3222761959c36b1461564c18ff7859322fec2faf69923feafe973ee3dcca8d797896d1f872e734e9133b003025ca09f77ab16225f7630af111a24af7e20c2862580982b4f2e37a4ce387d71abc3a488e02864b18f047c11a46d8e30ee983323585807cb79795c8c16e6ca7c580fe4eca1ea73b684e4c3e18991d91a59f41073eb2622064344082e102a6de49e1fcb71c7f52961c16ac2f57d02157bc1801bb859c038ab3561992e8936978747c77a8569b1a626fa55ac084db28864881ad4c67b8232285e2368357d055342158ff45840a1cb3705be06fc266652b974ed401237d34883f6aa1f6489f6eae917bf5e22693094b80770aa58a786b2243cfba3ca1cfe20de0d7762338c88d1f2201a9c21b7ef1dcff607292ac9d2702ace966ba9db05da2614531b33a1520e831f00afc957d36b9600b816acb57b73d5f27eaadef3a11f515d89ebc27d6e33a3d744d0b73ea0d21f006e0931df70fec35eb6fa2a95957e27f1faee1f6bb26019a89870da7b52c974b0838817049f77b47d2aa88fdafa65362f74c2ade4cf4f7ac7e85389cb9654810be3d7eeeea765c2fd95ec75d3f0d2c43c93b970225f0fc7dd6fff5976282ffaff7e598f540d3257fde4e1c77288061d3cff68cd86b097913960bbf19943ff77bfeb83f19d0d93cc286b1798bc2703bfad55dd1827f301c7c211d750368f710f326c11fdbd36c413be0247f21715eaf85f0ccd8ab68c85c701229cb02d776ac768f7371aad0b8049b42841d3822add91b98a46673f41f43146fe01f996309871c528da3b3e6fc21b52f7bcd10fca3a26c8ceb917e04a19fbc76431a93ef4f916995f0d70c13af35784078386848aba3dc338c5d8f5dffd66960184687b8d1f995b15c256c88f09c4392181f02e072a10be4f43151d75fcd3318d6dd060583a26a8b2fb50c76708184642add16695894b8d321646c36168ab4965402b73bd794853d6817c76f5a1491b609b8a4f5efb8f75bcb8ea540a4b92aef6061db23f818d1e24bf866eb49eadaaa6dc7b41ea0f6038ace19e6817024d093456dfbb9a4bdb06edf62ebd7ff955a58838e53b7acfa7ba82000f2b2166cea6721a3b3c3d6884de63788712b3b50658acfefca8ebf444557cc15552de8e174693c71828140500987009403165a1cf970e52f7c42b8888506a9d36afb4b815e4a2ef784ccb7553e801bd7fc184102bb7937138ccac9e56baf9200192f72c2cc80bd4da10422de51fd56d4489a1c80dcc2e39c9e3a0acca627064c1638afd6b730ea1020c17a3f3b55e6a48f2c021d59caeb4fddb02cffed3119c8336a409a631bf6531870428ad55f99d131e3b872138c32bf9283516a8e705551526154df6384dd0f18e105be7c379b8a58441e0061513fd794b9bc0304d03d5a923ff7337f716e8aadfdcd3977f44eeb366d49cadbdafa0bd09637290019e0e37d50a021c4075c83f69309f29a9cf579ac555a7ba8c5e99d46715e5f81f7db1ff783cb234b595c22a873c0bb79375f3c1393be090e0ef11ba14d8a09d7f29ff32254e1c15ec77515cd06184f7444c543bc6cdb5b883749bafa2c8ab96e53ad119d41a53238f2025c736029636051f80918dd753508c6a9b18562d1f05352f6252b09ae979b512fa5e7c7ff76f2d468a6d89b973cc192ef6e261ecee8da3423160a341d6ab450940732e51250fd8a86bdf58914a880a59d0b28e0f145b043bc62aa5ee5c05fe8db5af64488ce1b024e110cd88fe820e4b54f9e0490f4a8af7d44d5a763b0ed2bb2d77eff363f786aecf55747590a8e82f8794495503203fa7d68ca90012861677652cb358f4ff6e9eb82afefe598354c8765a9f6eabec6fa9d0cda42258981fb67f20bbf9de5c0c9c7666904d3934f88a5283f0aa8db2e5a9c6df55ff6bfad8ba8017e1c0f4bae59f20156eff9096e9385fcd11a18e5caa1564e0ca7be1e183651cb2ea63567e433f53f0d688d4fa1208a82c6d625ed651bdd39361537ef3fc170634b71cecb657b0193d09bab1370dd53d1a5b32d606e8102f7cfc7347a223040609571fcffcc28243c37aa46ddee11c95137fd21084bddc41077dea0a5d17440a4ffe55912ec57dbf92773d8bd407d903c64c7a263592b70d1e0b5337d304c75f1e3dc98533ef78ba9d18be2a6709df42f9c229d15b57a9d47055995bfd68f7163a4d4562256bdb9947f89623e5f8ab430a502a54b7b0180afde9f11a45c1b143fbef0b178336dd1f16fbc2d53a92a5c4385f39174e6ef021eb866a729f4086f07a4a118f0af584f05474b3c07e3af3c9f6293c4a37657e4785d36d30b2e414defefe6838306b96484998686cb206fc610d7022a90753738b741e58b4775ee5cb62d11d8fa37d0b313e7c3938d757191098d7ff5a914283fef2032f64ef7867a24dd340a4dc1504a59b91ed37a241ca788247c3abb50d082e25c0920d7742dac2ccd51ad59dc5b4006ada0fb1d8cf80b9f4d53884006f828dc413a9316a3f0c56b85e81bee2dcfc4795454cb027dc4f02e652b28332a82dbafcfe3dd06f6bd31fb5094b0eaac602232aa44acfe8f78c74c9a34f1f3bea058bd39424da1529afe48b8a406b9497ffef2352b55cb6fef1cac29abe5aa5d0c2a34424e56ac608cd3d64499021413ea7bead593f1ae6356071fb510a3f36e383018f7255041d8456f941ebab96e6ad8515b15fd31a8863fd066ebaf2deac7a62d404a790c1f3fa552af24884f75912ecf00b83922eef7e9d6bcf6d3640907e2a3f5be42e6885768200e745d484f6380a7eca8004f5f4e1ca5f21d959ad53b7479dcb8b30fe4dc544f2cf679372b6145aa43afc43f745fc1fb51f06f76b6cfe1f387de1dfdba9833fb2fedf615f3f1c81a841b7853cf7c1f4dd8fd76cfbb6db2ab9c98e2f488c775a2e9a2a1f71454ada626af50107a588f9631a0f4b0fb4905b98b311d3c6aa68c96229a1b7d2bf178eaec6747a6474b402c23c4fa1bf6f4369e1a0cb3ddc7bcd359dd8c97858192f0c232c5101e2402284d84c9fb43172c00160e45140a5914586112baffd00c6041a0d8c0d965f15e22c2af9288fd3604dd75b31691ecc89af2728ffa758d568b43a34abeeea661971586d58b800daeb64de45c01deca1ad9dccbd80ff5beaccf646b3b287660eca50199ab978447e070f45afe401c091068c0f48cd00372584576ad3c7ac8dca81f84af545ad0e43a3ed8ad8f3a265cdcad06d2a8b41e13bb81d5b97b209f844975933c35d17f28fe78f4f9a57a01697a314bf797f07232fa0a1dd39a93ea3f37e8980d5415785c41dfaf525f066f9547e22a2ef77d82145d1d753df0df8c96cc5be124d5a1ceac0b46ccebb96f4586833f6da56cae5b95429e60f58ffb99d807a99baf29f8930de59d8823b0becbd570023c070ca1b87721fd8f0dec9696c610ffc95dfa016bbc8636fb024df06469b1261d4b0d736d59b7fb0261551dd648ea84a83173e531c3c01ce5652cc3cd3a3b5f9359eb5f441ed038edb8cc5da1728db42242a37d9bb3703a472f42c0134d201115376fff801e9eea1f0851ddb8513c04454f781b1b5cb9751ce03c97a7c7ec698788d2d093ee1994763fe5b876ceab8533d71ccf77a5bf6f022803d4e54719555e19e1ac2cd3f074564df363b7a19b99296ad8d68a37ba8709ec59679e516e24361535eb304f42c065f1c684cb6e3d598687532a17f687a8356bc7a935d637a97299c7088e1492f526763a16be3b934648fcd83057263048d734f4e734f8d70d6218a8d17d9c9bfa423303f50db7377d5585b3e4b0c3dca8e289d11167ed15ea6cc5341f498d09e66fae4b5cb9f51fa1064042405ddcae9055dc85761798b1ebd55cfb61602bf5073a58159de59f4bcee5d2d180d5b7d710b52d88938d95bfdcb0ce33d30266e18fb282cadc3ed3806e8560b8cc660d882a52449ec4c1f922b401a02bd2faeda7e435a2cf97d403994acbc945d77789d0fe507d97f5279938112cfca242f371196696119a3efe05c9d1ec473980b931472fc60f440612e2c834130c0109317d995ac5d32426d2028967ed1620b4b5cf72cae86e27e1ccfea8b951ae37c591ec2710fbed68180ee19cb183b8ea2e089c0b641d6eda598431fdb24f34258a78d48075ca32c9d2cc19b5662d73647ca6e8ac4edb20bfb29e1652eb03ca207566d688c36cf608468477a70df1cbd7210eb245d2c9ff2e0b3ee269b7fd91e125bc94e816e7ade02e845987d4b655588d691574d111ccae888f8c173eed6a9fe1961ec7a9917dc9378f93be2f28f5567f023e4c92f23a09b6872a0162c2de579a6f37272b72fcc6104ea62aa3d3b303b9e0418e0330cd3131a6d5fe51d45bd8b68fc6f4f9ca2c878798fb8be51ecf19929bb88a3b53e41ce3d8736450f9e9fe33e7a00024fe489408547500d7eabb6111c4f25cd37392de8a7b28607ea8997bcb9088fce3b9274de2e24c558abad82ddaaad6d5168c9b568ef16cf3931a55f8e8c13f50dcc505d6257e89f980e3d12b2b3ddc765a284bc5ba4993eb247e18c43bc8e3c6bc9258302b701bbbde3c70eaa2298cc4d4909626b24f847d393c843fbd435e52b1bdfd3e2a1a8bcbb4c8e097803d06644e5841464a88116fda5a345450dd67b295714df5a4ae0b74fe81374008098a4b8da50cc0a55b4bb6101f91e50ef2877598de71d38888f03699db410d26de4ce8ad481dc480ca5e36c3175e89386e9818ab5299a7c93d7c91360b03e21af938b031de8243e74484ab108bbadb132cc0cd4800dc8b6b3a169c9d14166ea2a6ca512436f27a0f4f3893e9ec24819c2058e7a8651b98f6c0800a0942fa08d8748446b4cd6956cd25100c1bbf89d89bedc66ae24591c6eec784257a20a92d22ede8a4c0f0cba6dd160b7471a7982c9631a2c64aa30c4c0b0b31fdfb3005c490d2a58752ce41aa119d8e1dac2027470f484b1ad9ed4b1406fa8180840e394267f4aa14c5eec152666b621c47fa2ab6f45fb527f7a654fd97a005a5c2e49f4aa22737c659dd2cda5aed7232f5b95f376b9d43d4404d274d4dc3dc2c221bc95c63498057c21cb9d9bfcccb3868d2fdb4bbfc7f764a2a747c6f599deab90e53acd82cd9eb7b3939cad2fac87969c5169b6d5d28531a00e8ef1d490e14b1b30bd0578243068a6b8875cffaf209f4b5f8e1c0fe507c802b4a322e24d47af489995993a0a5177bf41b84cf1babd516b749dba3d71a08e8984b8c25e1d06aa000d3b045e918f90c232a2b7752ec9c4c6f1bd76ba55f2f8df3c46e7d4a87d3c6d5ecf4c1998cdf51a8860068a2076a689d2828aadb4fc896d38f235812a4374cb2b60ddd10a0e1d3fc597747349923c305d006da300f2ed1c8bb5d18d9382768ece3de1a26cf1f261b89f605d9e04e61bcf44dc7c43165497c866d2d19b9d00d1a44ebea7322aaae6959ca8921e767d3bfc1b692ca5dfdcedd6de2ae4eab1ed75918c08ef84d6c45d6f850b5f48c65f1486b0391874c220175311130e7a41824bc7880318957969554e3ce14a39b0d65564430ac12027c1ccb96f22e705c6a588e32a43115ed02af079514aad8342f77b600a0c5b5d3b98ece0e677046d02529078d9e37e51a291174a4e86d2fb8f8f6da6b820aeffe3ec6879652d5b955f54ee5cbe284df84ff534a4f2d5cc10e679915d15a7ed8431339e10bfdd38349e90b0182184f0c89053dd57bce63ede097c0525f15a53a11b5c63f00df1c7226553bfdbb5c36d7f68f7c41b623558aa9aa91f6930feda8a0005198cf888a2b31be77f52004800177e0a3c30dbe8d29282e3768b8908a52979d0bcf4c51ebfa4de342f0d8e678f1ab20f3df585b897a9dba7385207e01ad5c2423de4bbccc796a9db719e87092f2cb2c18d4de456a0fbc6c3fce32961a8e7f217bcd6e9887e876d80cba1dfba923984a615d38095238ce1f384bd2ca10c6f34ad5a9b69df25cb89a63193be925027dd2775e6403178f5f152dae8e8fcb587e800f1611d9d1fbef67ef7c8709e119c1fbe2517a5afd2bb2a836036f3d81ef5970f6df62436c1e2fd4157b56166f3a4d0acc4e738467ec56afaf9b5b29aa151e5b7021d7460e86c700d0d248e76d0ef69f35e12e6e6e55338a4bd6b0290bb211712a7b1c1e74f7962fbbeddec2d6cc92cfb1f7f04616543d8f527016cb073fa717e732c0710d4547959e091e8c658a9f2c8aa48ed9c89c986874bfa0fc3ef87a3deebf669bc2f644b341e925b4f72d8d83817584fc7c736de12a68dd25a2261f179b0039bebf3b5c061d973b327f72531fd6e005d88d6c1e78a3a949918702efdea8fe0d459c94f73e758dd333593454ceeb980e754c23389b5e4e60bece41713af37f7f4044e07c7903a248f8b1d8cfb7066a474ddc52e074b1be9d46e1f569e4bdf9296039343142bed2cf3f4fec7bd6f59d6526b16504fed65b30f6431ed16e624d880de8d951f904021ba4891514463fdc557369e3bd00c67e2fc0ab7ce0569dce84e5a41e148963b925541d6964ff8954497997d28701e6260bd4dd99e10cce432b31ea34db9420f0713ddd7babc91b3a2c5614a0519da2270739fbf955724633d038d0b9b452c9387feecd72c4323f2ce16394df91e0d466874e261b928b64e3cf22959cdef7ac6c67e3634cc8f2944fba34c47db84d7dc2bd7648e80fda5d2f9e7f18d9212f5a528c8654295b2ae74edbf457d6942beec5e2049c30b65be1c470da965f9b326d1c6facbe59dcba2012310be5ad562c56834882f3b20dff8fd730166ba462d1d38705659624408bf24948d8e5c565e0c1037a92ed672b49084f4ff26cc4c40d1ec67181aa2785a6005afb3e2802fbe27277117968529fe31650c4228de1b1cf361d5d5d19eaa1a9fd9c27e142153458a575388e2c5970c2435c7b39019c0cf2dabf91aca5eea146eb69fb99adc144240ad1f4c299a4979170ad9f399e1d814fcf27dd1ee23a9484834227419640ee438e4eff9fa74a5bc14180a9c3ff17ae43e5b54f922e96f29ed4683b5edd7918701c4753b1eb5d59ccaf6009546d131da84099d6b1a80ebfa0a213c1524d5cb2fc8f90c96fb6a03c7293d5cfb6fdadf60c819c379fc23de0b1e2c79ed40c916ff5e5a1418562da68bb839c9e28372bae4c1cdfc6d4d40025b5d94fabbf12936a31f584253c6f217252e709b18014cda517ed7f3a660895ba53ae4ac50df543122c4bb2bb183f11b9ecc5ff41dd3d92d9845c70cdb8e80704d72be2cd1eb8c940afa537bcaf323b6b5b226379a80bbc1066b9a1532f0b6be26335c203358061598fff38e1f649f4e77aeef87f4911c6d9818f420229da2b06a3fa08f9b95d18062e6faea3edf2641d8d35f473d2873911d030554484889eb81f7c7a20ef3931c5df86f321348ecf296b33ea11a0d9cb84614e340348d2c04d1b16f875c3893326548d37f0bceba34c73ca9c94882574f82ff807532b5fdfb2dd31c97a0f0c8fe314b4453e1e4e773cf4439735072e037082b4bba80f4b26d1b70f4b468556bc873087c0bc9fe87ccda14d5191a59e687f100268813c76649b6bb0ad48583d25a88fb539fd8b9bb7848206c7c1a160f388446345d9c32b083192f2efeb37cdbfd5815ae30fafdfc2f60b253422460a907da1d7715f48cbebf8be56b5539e8bf7c2733826f28d8ddaaa72ae30150be1a6debb3b5333d1c291ae6fe135ef674b410240bde6cf54f3075348622e0d4e8059b9ac58238329719ac154fc3b000ced433dc01edc52b60aa467d58bd9b16ece3663c837c2be63389ef02eafa17586a12c74e50f779c6118256b899d1e95e70bfa0798fb11412f5bef40d0ce042e7457545411e5c6826ecce962797cf644c0836cab223528a3505486b349a4bf4aa66af21eb81c1c76561490a99b05ee96112dccda8888e217caf5b715c3f5ecf0910630c49377e8f94e713820d085f283017dbfc981b90ca9d0938cb3afaf07a06824f400b423f4fe4f049d43c3441c8b26e5e233842716450714cb168d0009e5faf015c213cbc61a12a553f1826c107adb56ddc22265407446349e12d2b43cc99b2f06ccb20160bd6506bfb396397d394f4b3a5452e06f21860bae7a31a2e777339997e696e586f12526119a6c654fb59df07d145f5a55186b76473ae92abf178d03733b2d52e2457bb36a071dad4632f413e4b3b4f8293b701b83c198a981846566b2a95c04ad885c80a93dd61c0250c548c2d19fcb094140e9e53b5ff89270d10a7ec9523e9549953fe698040a8f2db0989c8050ef47b2ad4755805ef71ad42eddf40fab733e36c0b8418d69a954d325ba78c4c172d97002a06045a829f8dcb76fc01b8929cb1dedd51d577fa49dfaba1870e52d95ab0ee360d15be370571ddca3891b0c2f2f799a52b0e2a7b78efeb470b013a2bd63e8379d5f902a62b35c1fb526490a1291cecda570a8219fe2c714e7435957d7963e3214a9f36395cf87a5c5d0894237c7a893819318abb43e71f7b3a877f425086e3744f093c3cbfd1016d3d5a462f0f612c851e806781bee0ddeceadd34381be8e7fe950b27a8f4a4f691c466df170a72e2da5518814ad1a42b54960f12c32e4915575639d802efd4c3bbc44135d7f2491e4852cc9266caa4581c520a55ff197cea635a9201554ebaca6ed1689690cc60c869bbd2403985d3b1f95e51f4aa209f7f399d2c8dc32b708bd5f8abe2c460f7f5eea64851ed4da4ca826988c09644f3640d2663dc3aeafb24f35dfaff7f1a4e2a5da347cd50f6d526ff0d717a9974b4cbfbc27528f753e7951a70deccb4ca54d4241b0a0f112288b328fa2da6d14a8bce4b28658638e96febdfa0e1275a31633b3dde218ec0820dc641c30a0221fc362a1f96966eacd8ffbbccaa44e2fdffc568d3c11e4c832dbbdf9860eaa5e781e80898f2520dfe9f870d724d38370272b1f0bf5b82e01980f551d3757a90fcc07472a62c3d913913e468e255a6e0ad3f9ea09440eadbc7507383dfa98caf57892638f50b0086be2c2cce2a38fcdb190a71c300273068296f4dd112bcfe5c121d6ac597e23f765e59855306781d9bec5738883d502059dbc2640efcf53d129596120e084980017c0ce202889909104845ecd645d6022c746889d5da2ac4c615121495b7d226ebbd6681bf9a0849f67548627011a1021eeab423677f0ff43edefedcec75739bb77745019c55d97efbbb7a13687c6dadce037daec19fc309100b18c856d9ebf7dc2830fc5df202f38409c61b6d7c56d538ea8efbe5fa42fec3f96ecc5b43e869da65fe09c1328d045b1ecba5b1d93346190839fbeb81b414ce0227fbdab1710d02b647d5c1c052e4f44ef0d571050c968d30108af3ba8e50c678d3d48cf5c89bc6dfd3577d3bc56267cb811a52e8aac83d57b7e6741cb07a69c4f169c34f06df8724a03d9043ef85f0531879d3fa91fbfd6b6c1341ee1df38063fbac9a88990bda5dc01040ec70da60d34cdd2b24c9472695dc2ab95f6a0a2525abb190c19196658abb46a1b0cd538957c78d267d2ac2657b325902a32942bcb6447e9c864a1ce91eeb687573bf38fb406e61b349756714b42bd2ba3693131d951c84587bf845e50ac73fbf5994851a8306c1fb26ddb3693c9047e9e49eb93ddb66dcbb20c44927d03b76799c8b027404c1f9e00d1e4ec2ccbeabd937dd263ff78222cc7b159a753923b65472873e15033699aa66dda2626c93e395bb7539f98e8ded7b2db3dc99268622786656ce13a544dd3aee338ee1509b76974d26b62177547baaeebba4929ea66d929ac0f6d17725df78eb5f29ab689b5d69ad55a6bad477855c239e79c3da137bf9092279a1e4faf076d08c6ec7e61f6cc204584930d174f01c31d9a55dfd7818766f18f5010862a6176a9d801566224552fe5d6b9a39c64c8e2223c1b3dc8cd5ac167d993cb81cfbc135f9e27ae9c49e7a107c303daece0ec3abbceae53d548efbacf3375e74e3fd27ca46350288e6366247c0d447262f17bf965af128ab555f5a76b07adf68925e7896568124b542796efd1b866814a8c6c1d8869b0071e67a3034bf8bd1196dc0cf284328cf9b523c4d0933b672c89937aed34d8fa2e47465c56df38a6e64f97d24acdd3997cf3504effc4285798c83ce651660e7e8a4c4299c75c4aebb35168fefd64a35c6142f3ef5172fc741d148439c414a511c39fce04c7bfe3f877b233ffaccc71d82354d5c55e2384b375657e464cf5c17f9711532da67288f9e9313ffdf47d3fbd6c57d82e7e38e7e4a6455110499590aaf8324e08c1c7bc0c3ff124c65846a22a3e683b885148af9a3dac6e73cc28a4624ac904eefcbc25235d3ecf9605a2476e4a7e9fffec12aa126fe8711e79b61c6fc9af928bbe5976953dcca33b9f89506ad74ae711526d8388d24a1b88459e925ac24cc4784a121a1184e55c0ae3838e1a841da414c59706f3a4593797ef43b3741885fc1ea6196a64b90c0e607ebe451d9af4c84fe5d02d7e5115f35d00c303c9404a588ab874e9f2ead241445b8c6247af6695cda91d24f0f31a22eaa016e2c1eb1c67fc60465117622c1d21082e984b49b820092da86ce9819176b5d3eba020acd7be9d63310ccfd7f9558eaaf8955fad0e2e666b8248964ce15eb9f36968106adfdee7a57398ed5ccf625d717682304a7d6a09942b4c4cd72ea5a58950a204b125b5c453153f3553535cd2e4dd5b408af160718411366f49add9da44d796d4d2c414103dbaa88a9fd9d96ae1c70527c2ca4434fcf0abe45ba572c8cc41414a4b94952865258696f8cd049818330775cf18d151b34a66e212719798ab5facc44b4cb08264687b48dbb641f1e509364c696ce1b2e58b238660b4a50a9810926a9ed0b9c2999a78c1185014b1a5899a273c7ba7381e0d5d8e0876b919558db2a03b3f6de079dd59ed1d306156b3da4d87e04d9d92863b6bd44718ed69a3519808a34694a42d130c06ab2af078cadc29a66c98539cf6728fe135575ae9a454bcd9b3670c60b7bb6adbd711d18ea86e5c57ca514a2badb423ea0e964d71a29df5f481bbcfddf493041de5a408bd3b635a96b4b85102e6e999a1c8a867a0052923ba01125f0c6909a3886f862f621fcda843137edffd686ebea2a16ddb52b004161d335a40842a8d30c6cc5c2715caab1d9a2297e634df0f683eda535457ab8391c2d32697db03c38a6704729dac4e1cdc5ac56d708ef55d066e77e0bb5b3da0d5ee13d862ed31c8a36fe6cab5f64f385fef8c69a9526b15e39c96155c7ee5686e905bde1411010630a4b8f428308a70520a97052785a52f5e20a1075f2c21c588257290841438f0c10c8ad0c0e04c5b0f0c47d80b23286e87a8d0c78db9333686d28d654e30b7c32f8b2157b10c7b6c9a27d9a5dd2d721d46c81d45811a417f5f28a1488bdbaf218a88fe428adbaf7dda030d8828010fce1003c6829e00193f0002147200840417ad46157561a57e345f4813c40d9e811b3c5da411533b1a1d1af40add73cbecc28516ae0b226e3fec2205b7bb58e37616a1db599070bbbd00baed85106ecfc08adbdb178f9fd082859e5a1ae69dd1222c5bbb1a9d49229ccfc437b5f33728114bf85bfef2390c57c475b2e665aa6597052c214d9a41b41aa32a8d8f10d61825bb059e71cb99544e235cedde96dab6690652bb7e803a0a57d82e2eaeb8335f6c055deef7c945d005637ab6ea0310ae1e9ad555f968beb8e54d98bafc85372c61d2a459d9b57376071d485e6a1514a68f1096b88804788876ed0e9824cdb5b227462cc7d578cbef7ee217851c2f7b8836a291b8dacb5ee26a6f2870bcc5725523f2207e87880a73e010cb20b7e4221ee8d7809275e022fc8439248858b695318aab3d462c0f8a6533715173a90c456ffb364bef0ca2dd003fb03ab9f94d1a765fb759be9e56dfe0b51325c3f11225796895c65903fc0c4d56bd124eac73dce61c372897e3441f7ad478e8f187a8c759ce241327b6ab1379a9de549826e990cbe55aa2a55999aa8965aae65db24596a99a97b5648b30e6386fb9e3064142c8efcb35ab66ae9316da693e959d6fd6a50a286e972a56707b6a32f7bcd6344dd334bed65d05a5699aa669da4c0e5a4124da719c3f7329b57cc269b67ce5be900655dee078d5001077bba594ab81ede260ca41d8a12e5cad9a7b3535a2eb0aa75d137ba0b7e46f40cad5c001304a642a8d01d3e53ecea5cb438f7346641897d9e58e5dc43c50d53cc741e9713ee9713ef43eefab9b58c69c3f588f934a8f5042194e7bd2e36a8cb0d2008408a5c7d9415335cf8573d24c41619402c53a681e218427c8600744e82d6bfc08018b2c6082d03a693acefd661855cd4feee3aac66aed6b9aa6699acc35ad65440cb4e8647b29656887a8699f548788c221c246988c58aeb4932dbbcb9def18f012e871feb31e0f946498e671ac55f34f9ae4d60c1373614bd8466217f53803343fc9b0b2021853999aa644d8aa29a6fa6fd22c6e8a31498ea9c1674cb28b5a353fd7b8f3a3126139f608244cb865faf09df333421c373345383f6f0a756fc28bfad1252c79eefcb67dbe675eee0243b33631a59daf26726c0617b05821c2cc728c8f7a9ca796bbb8a006c7e6fb68be8be6dbe83ad635e342758d169f3fd2b3ca18a008a21d66f6d1843d521afb24fb687aa43deb10680d6284f048f61a687acc326d45ea80f5ccd0378b19b101c3cdb22dcbb8332dc0b819106e769dacbbfb668c8559b94a696f2bb76c2b7723fb7586121733c808a38856f61a28b9c30a159431c50d17175c5ad957d97bb26ff673057953a73cd52ab2185b9a41413488aa681025e98b55f41c17244455942953716982750961495f3410a2435c44837da714e6f2e207062d9a0213d590c0e2d26b302ec26929983e5c1166107afa351aa58684c98b51d26484c915c1644ae221f4b4f48ee00d813245e1d27b311c97a39cc7844b0f0661921e0c3cc2a520132e05a57069cc082e8d3922268932a6894befc12819e3c136b1447d65a28f11a2bf492c7bc07731429ad06968aae8cb18a14b27c81561fa247191d3d01c424f7f2a62fab078c5a5a755c484094b135215979e863a91a3a7a2247a32ba287a1c5b84f39627a48a6442aaf44a979e2231490e33552f2ec26ecc21464c7a82c9ca4e994eb9fc12c72de9ebd22514c10296903fb908dff9378d692a34b89a6530a7989f2f5a6071cb151142700acf8cb0bae083220cef8c699102930bc2993b635ab838248427379c10825e3c20841b0f3c2e687c4284592cfb819149085980616a41165b78485958f1042e3c719ec993c2bb020666a184a98aa12f0b1318d161f1f2a600e3a8789956dc128cd8563d2b9e1e2a8a3a6e35841f8d0bb92fbcc288c3810a3221ba713340a25a11d3569c900ae8aa67c5d333b46586212e59c8ad807a862a8e6a4c063f3f542c71589498004018222e5c8225e9e1c7ed38a209c315793c68e20dcd4af82d41c3126a47e84a1066494b3af098d0441926686206d90e9aa8a2a34108de6946132ed034ae797a60e08b71bb771c3de165d73b81979b3dbbc6725c165336748b4777b669c89e725cef44e47a2799eb75dcb6715a5629a5cd9393d2dc409e3741fa7537f52acf4a659ad01dee80e950e7362dabb4bbbb51b4bb3babddcc62d9e1a976777777777777770e2770d39a691bd781b533795f8cc77da08985a1100469c0b9a8a31924a6fb84389e3442b7ffc51899804cb0cb13068db909283c859ba9aba18c263393cde0a8210e5a2bad343942d47c9b864c40e15773e8084d413a7600551350b3e68e98534c8c09c8046402aa193a25c106e66e54284a697ba935b24628d6eea6b56bad599669611d79d334a4c951ca5b4f8d87086e68074cc8cf6a46bbc70bea1018d4ed06ded4e1a655ab3932ed9e4635dbd7dbbee9996c395feb14b9bfb89627763f42bbe6c01899191cdfb465e699be0a52ca4d540b4a9843394e3232dc56afe940a13a2ef5181e789c75266e337d4c88c4a01bc20e6095261d911ae554dae252f10621ec88c02438b78a26a11d257c6076430d604ceda9b25ac59c808c4f8ca79075fec4439925d70be6830f424a218a9ba2f35c48785367c22e7733ade3b8af366bea342ba3df6ea84106365e42fe669b2c89356bc70dcee465de57571b58651c3f90bef60d2ae6f46d5f8109d33f640ffd8290df554e5f67ea1a3654511c2daa228bce8b212a389230f4041cdd0c1ae672b9506005159e1552a89d17578cc16937e8181643e82eadd4603a4c495d976358b6b84c7f989b43e8019015344c10668b19b4cab9e42596440dc4d8a2854aab64170f31d18c7d5145052ea02fd850a35572121522c8000d33ae60011659a48ce00654a89146d0154b6db4501f3512855d0a84c512aecc651e8248646caa70ddf0271049783ae3f47a3a6141e59eae30e39e1e032239a1bcdc98832092980a7e5e210467c51665c06a67c5cfedce81483a2ec78fab0e5529bbaba140cb16410872b534991c54a185ab754ba5e79470e927154d04260cac6ec7996c776efa6c17b9198451afb14d7aac47bdb3e592cb620fab9e8bba87b24c7aacb1d929e889dc0c8242bdb3618f28d477a0e44dab50af7fc245ba3904f57a1d742e6a8221004a64d2638d6151871e4737423e27e484cf99381b364e85973dac6a142d54299fe36cb9e4762a30efc8614bf1e2388d2d51178788447343fb039f6c49531f63cbefa03dd263fd6761e8b1be866671aff54bb88e4de20c3dd6d79b80d047f78de338eec74b4e8597e1a832ada01a55e025d72496debb528d7aeeacb2bfb8f53f8a1096406e5d5d20f51be7c364eb5d5dd38f1f3f7efc38abf0430553c789a20f3ba94a2713bbc876cf0dbc27dbcc122201a2137b5d993b636680b91ea73ec398644aa45d6e68cc060008672c076c5c4e8895b09c31ee92c392e9c39d521c4c1515db8c4bdf9c9029c22333d4f064bbdd761d9a1eb7772fc32394bc3955599d566d73f6b81a0ae71ddf9dfb669d74e7442038f0ed3e6ff684dcb998efb8b76d2012f0f559b27022f77aeef356a221cea29e084b3a24522ccd0ac0f98df89c73eb48cf4b29d1bc5e152988842996223a63ec15d5da65c68a6a172ef2c42e97debbf1ecedbdd46f0e36b949a56ebc7e52aff7ade63737160a8fa74ca292ec1b3072b94391d2ca79941c317bb7b8c5e351bac5e313cc01e71cf71a911235cb139da46cd89e7d1329961e29518f599ac59408757a8aa5c6f432bc1c6751af34ac7a501fc332bc28eec63b6751a7f4721ed500bf81aa377bcdbd6ebb0d1200e773aa3c9cf3cd80741167e2a13a67116a8587d06f3adbf5380b84a34cadb049646ac5d22e2b4adeb48ae6220de57273fa1a7434c3a3231da7347351b2e364c2234a66465c98191d6546a9531e2f399c97e195295157e699924ca624f3393325191e2187234eaa1233ee37dc2bc7cd7033dccc0c8783c3c1e1e07070c7c1551a9b3e7de9372555ac12e5e6387513696c06e9d223bd10188438e75ed2d801700ee50a7773c3c3e58e73a6a70984b38c2fbedceca594cb65379d7b0dbd26d4b76fe20493d41cc5dd2cec91eb00bdec4d908692cb5e5f72f7668de54c36ecd10b972e5b27f5db0e4ebe84890e3678622965820ad88ef32d7b8cb24191b8ec66962b81b8559c3b6cc95d4edcd17d311a8b2333da6e99b96a1497fe547ee27ba437a826b95602429b97a86ddb72c8c452fb137ab9df0071b76f1bdf520adf8d0c42e8a402f5bfb313024c62e472dbcdcdcdcdcd39b14a08a2a46e4428dc4a69df9e5db3e5137aeb33ae5586774e556633678cd376f44867d64b4a95bff4489bbdecd084bd6419b779453810d2b25ab9ad074ab3ca7934825bce255a6bad272e212b39c1a29776a73d454a0d84a2aa940db54a8a49e724b5e47b951413eff35691f64ba9b3a72a5a35256d4729a447283d6b294dcb3a244a63b1309752971350a09f52500aa8135ea80e4a29a5d73256892aff843e13c1a534b8e547b7dcd3e5cb40564d72113dcf220370c2893964de0138f1c40c326f39c97eadf7c5ad8e5228bcd444e8bb2720ecc428a6770e267104465aa6734d84deb32155d1aeebbaee554c6208a2f483684d70492742e156ff277c8f2a357011a106425c1102c70b0f7edc5842690a305af404c6891d1491618323845a3476822658e186120990d268f55d6012ea57812a8c424163707b92a6ae22314993c83fdd12b74f69104d9f06d12aa608cbb97481a06485358cd60ac4402c0406e16cf54b7e6d5d2f51b213695285552a348992340a6a856910134218d0eba75995a9d0a057f78f8998cc4693bd4455cdb1faeac46d14dc060a435fe197a641b74f29a534a99b26354d6a9a44936895499a6ea255dca65adca65fd031a819b7a91ab7e907f360a6daf1170eb6c1345806ab3f754a18305dd78993aa626010b69e60ee9c5e42264d86506a58d22cae7b39b7c0c00344bb09fae8eb455faf1e4ad6255ed50633298c89d4c5b1b81d831e286e3fabaffa3a5522a6aa8f0221256e3f71bbbe66909ead9e91e121263923f2125346f4ba642e3a7d38064cdc66a0a96a206617bdb443f2845e5e624e86e20d0e422f8b4094214fd2871e81c812d22722103db6e9a556b5ac3ecb7ec2b2be5e1998a429cd4e5fd3e719974f361f7aec03f1d59a9932cafcbe3e9032d78228292332100dbafdeab17f188892f5a755fd2a8af52585b0cc82b034abac42e5137ab72c8a1eb99f8050e62ffa027a8d715f976f16446586fa1c1786a849cebc5f5f949c11b9ac8adb9916332fb32f6e67639831d5b89db54113722f4ec688fef4ac46aeafdb5694a24862e23695dbd4eb0175b959b363aac8c86cb01c5bd1a5f71a465d2f7c5e8bc2245f10299556d1fb88f4e536c4a5f73cfe5eb0455eed576972badb2e1a381725b59ccce5ba34c7cb4ac5a4e3ad2d652285b511a67c3c95a42f8f9714e6e3f44c5578ff4c9f9dd323e7396de2d2ad8939847efb3bc84555ab71fc51a8304cb5514a05b1e47808fd8e973e2c91b70d67107a1e96c6a5449f33fef427c8cb55399647f1785f8577a6c4fd1851aa15ae01d10711cbd5ea43c4721c7221627921072202f9788b9950ac85d51021216989885a98accc6e47afc5a8e791cfb4a5175e6a4ba4cfa78f98015118c785210cfc5a587d1ff249857c52209f2c04b9c7b244c4251311cb8a5132136a153d0b2f39202f43212f51434e4dda92b6a42dc5f002cf919d98989898181c1c70c42a517cfec2fb5993170ee54afbf8bcf0eeebc385e3b8f0024db3789c52574d0eff4c9fcb60af02fd397dce22f4670ea13fada014aa94c25129fca1142a65402d88e56ab512cb711c2296bf10b144a180886518b220a23e9bcc84503ec42f3c84de268858f2b03d8e636b8f1910253324aaa25a8caa78000179c9b1f01594542faf2d6d59cad58f97e37dbc44e564424259f6e55220628c85d80a624c252e515203ca9028d9415b162ea27119c57235fe10cbf12a88e58150404b261e62b665b9f45e0fab730d88926da40169402854a86399ca1ce9dbf2a549dcc8cc9ccacc340c8797d0e73dacd81c1786461a5010172ed2b0d56a1c7f144ae625a771b954b40c83f5e951329f0dbbb48d28a901756b4046ad0119b50664a401519f933e2267e432fc12358eab9591908b0115fa88d6ce1e65b0b7e0a4574225d1d074ce678f38e48855a2c4d04d7c0ee54a16430ce2a42a1e62c9c3edfbfc08ed0175fbf2b0e593edf671c42a5160b80f1318441f114a9193e08a068cdcfa208af47cbee78dda1276531825b90d18b9fd235dc442e1d60b2390d2f239b7a09020ca077c6ea425a5e553e5033e6fb14a08a2bcf028ad092ef111a174eb85176ccf6f6c99dd9458d2d8d81fb8c696343bec0f3a280ce8d2f01456d0c2cacfa42dd1dc522b19564e29dc27dbcdc42f4b386f8fa5ffb622221d8405ded409f2e235f869c42441b1a36855bfc53e2772258da2eb57b6ca1266e72f577b495fa6bbdd13cbd32dfb75bb83c29ff0357db2ec35abe7b2773133ba5c7a67cc8cd8f566104f2c9f6c37bb499c3f30c7af1ff8961d4423a56fad30536742fca9b3e2a112681d6035e4b6581941fc656a99d7b19d2d02cc16bffb9848d398a8c90f56c485b95c3af485bab65c0ac6b87cb95cbaa092b2a14e8c4bef99b22ccb4024a925f30498ad291e80450e0219c8c70561c94445cdcabc8ef28f0c42284d9e4aa06f60d1a9b489f76b19e6d440241910f3331049166611962b9f1684e58f6455ccc41401666b4a7f0a77d3bb67a16522366a1bbb746a69430759585902136ad09a52d8c28a1b5eb888b95cad49b42a57ff5a06195e6f75d8a4092599e8f43e4b84f5d2da5c9352aa5ce172b99220822360d1aa356422e3831e4c3185292e177ffea4850d966e9ffb1a97d7d5ce278fbfaaa44170b34beb0c52c59269f31b0527ed61b352366499184e6ee338e678dbb66dcb4cd9b671db9d6c5cb79d13e746b7d3eb64eb998925376fb2b355a20dd9b39492ea7239b9d90f328eef4db332ba514a29a594524a29dd324a699665599d95bb76aa0dc912f6b37e1982dadf349bdd5a6b92e7a19a95b2a1b3b798b281d2be94dbe29cc0e42dc219b341d2dd5e7fc3f0fbe6afa6a49580a0ccf8de4f70fb91d6b46c8add4cc86896d511d6454030328e2ab53640628fbf9b267b260c357cb12e6e82ccf0220d2dab311f1cddfebcae953268437509a1443b15e71cebb6d56b96ed149d707c83d2accc1b54adb5d6ea856b4b174454314480029006818c32ce826a03308c224e407908234a701d1161841011620c8da145511194ca902209a450c9765bb6044521d3d21d512ddd1a9996fefc5265054a323082073840020c3008b797e8028d9f2354f0c2a2d51195a1041a4cc14204430c2184328478a1e24a9614bc206603d711aacb8d1fd50740f5e6c8162ec8c8b6177858626a90184230515747713a33d470034786954ac6d06dd4513477c6c800baf5ce1819546e8942f2be78939182b830bfeb2d84b63b2908745f5a2c48888a0329036f52c8df2801a60fb64081953496a8410f84d0e20dbc49e1c6514ecbb89e1cc7715c4f31e5076edf05b5d63a4190832aa2104619563c610d16d010428d2b50c0a203257a441078de38e3892e6c60861b520ce00446444105558af0d2258c2d5e43f8010a9ea0c6115fbc8855a0d182130c210d27e8400b077919cd6acdde53ac9496a0b99ba39476b58da8502ceaabeff76bdbcf499f037284908fd0ee81be6e770dc3ca7df445b3a8a156b57a352265845fbd755e6d66cd9aa6ddda5d4696bd72999024c25abf6665f4bb1ca5dfbd34ade2673857758f34b5375464b3d24a51fc8c99451a8db2117e2814a529337186b5e7f6602aa22205aa3a7e90cdca4760a106b5395ab50a223162d455bb26969a66cbbe9e966959adb566307a844cd3c4fea493ce1b5416d2d05b7e618f773ee40eeff32851d201eff32c51b201ef1371519201ef1379515287f789c028b980f78900515201ef1309a26402de272244c926ef1319a22402de274244c903bc4fa4889206789f88112599bc4f2446c902bc4fe4889204789f08122573789f48122597bc4f44899203789fc8122505f03ecb45491cde67bd2879c3fb2c182595bccf02a264002869c3fb2c214ad6f03e6b889234bccf22a26492f759459444f23ecb889233bccf8a511200efb38e28d97a9f8544c9fb3e2b899247de672951d2c8fbac254acaf03ee9a2640cef932f4ac2f03e09a36491f749204afabc4f0651f285f74921728892e4fb24112559ef93459424f23e6944499ef7cefbe411255d78b7f03e9944c9d5fba4122587bc4f2e5152082573c42943f01bad2be049c0b574deef795132c8fb3d304a0279bf0788922cbcdf1344c915deef11a2a4eafd9e214a8eeff71051f2c7fb3d459454e1fd1e234afa78bf274649fbbe8d159b217ae9b91ea7e229a5b453e04fcfc2106899d8fc2294179e2083a396cda965927a8e086526f1a095bac71bb03bb19da31da49da41da59d251e17cf8b07c603c413c423c433c443c453c463c413e339e241e249e251e25922e222f222022302442488881091212244448a881811891139228244248988129125968bf562c15840ac2096106b8845c42a6219b162ac2316122b89a5c45a225de48b849140641029440e914464116944c6c82312894c2295c8a59e570fac07a827a847a867a887a8a7a8c7a8275625e73af6c5b572c41e1755f571aed7df06ac0dd10fd6a64803d6c6c8076b13cb80b539c280b541ba80b549eac1da2839b1364ba54db92c60532f1e6c0a56019b02a2804d054dc0a6842460534311b0292208d854d1036cca68079b8a39c0a68e1a6053480cb0a9241d6c4a690136b5a4007be34a80bd7935b1373004d81ba003d89b2003d81b2126f666a800f6868800f6a628077b63b4c4dec406606f8e04606f9070b0374937d81b2525f666290016c76583c579d560716034581ca02416270889c5119ac1e20c01c0e210b52c4ed1b53846472c4ecc88c53992c1e220c560719260b038452c8e8fe5f182e5d16379909607cbf2206279f0581e3b96071155f55db03c8aa8aadf82e5614455fd95e511a3aafe10cbe388aafa422c8f20960710cb83059be35ac1e6a86c0e8caafaa3cdf9617382a8aaaf82cdf1617386a6e47c88205c2d7b1d3be78e7712ac5a73b6f09d0711261150e491b4138bcd161a87159b3ee0fb3daee98373fb46b484a5ce0bb43f5e33488f3640d646b43630aab209cae17adde6918492c71176bc942f4cb97dce962fc06e6b79a25ca15ce1e7f66b8688c25295a3da7955435aea5ace735236c524f59ce7a472725236e7399f200d649091654f80c14ba88b30f5f2b4745a3229f51c51954949b44f99623ba6582a464638554394dc41a1b81d364ad5d00e1b335b42da1f8bf6fd03eb517cc9d194689fe21f578f3da5c7061580f39c77a00278dc464c31b19942139688b56c2ea59563534c72a04c34a268e55c4acb9be122a49447d20c4246486f398b887a8e7adc89d9f4b886581196395c3b2e4afe392fb9540e570ed7bdb813cb1167efc47a2726ee7c99310ae7a5cfe1615da616912497a935a9aa24a2747b27766f2caa552d863dce968d0b30d889ed205152650591185680b0842ab8b4fa3b4994f4c145050ca4d872c50e9cd0eaefc4768ec280c140ca8e6e82048f6b40460e28fd8b83497983838cf0eabd18cb48c0f0479aefe926b1e4aec643b4eb2354fbe7c5d591bee1a1a9aae7b855d29d465a862e27de988ef3238df315256b666870bc136b2c942b486ade36a9c76ad4e3bc5f7a1ce94bfacae8abc91d481446a59e32d1ac206aa5eab8d50c27b810157119556a56d947b7be6622c8b6dc4a297dd117bd95b6926d30bdb4e395fe181196ade4453b8bc27aa42fad959ae4567d2f75c85154ca768b660b7d5172b50ab7ced263159b88be72bc6c221bcbe313cc81c79b5bde677958ef293b5b5f9594cd3dfe78589b56ea3bac0e4d5bcd5c070f553bc3564c55fd1628306a0dead00c52c90b507185172c9cb8c1088a68d5d750bfeaa9c7b13796652c17f11623e6c231e097f4e5d6d7224228fd2bd9fb8f12829a93805b3562aa859f7a36aae7a1aabd76a9ae1b6af214e472b984d872eb998da25b3f2b1bc58c6add34fad3ac6e8cdb6d1bc78561bd768f873a6eeb590dddbadab8edd218caa57931ff4c26935239c66204986c1cdd324b7a985b9f19018cc988308bf4fd6c3847d363ec3747d341cbcdd174cfd6399ade4b26d3cb3635534f08a87e26cb5f0571e0fb8961b74d563659df64795cc83ebc2fdb8838d3d2f461139b1e36eb27539925cd19a413cb275b786a6a7f60ce474cad1e05ed753e11080ceccbabd6cec8185c96443ba56c89d6ba44c9e6b83044a1b2244c92664ec8deb8552b8176825bb515dcaa3971ebe7ac722ba723fa106fa4eb30b556fa732b9df289e557a3892e315d1a7bac1cb3a597cb7adccbac8ffbf8045751669186cd21f59d77ca74c6930a1e53c9a8649ee9cbac567b9a2e6549354bca924ca24e57247b123ba9eae4c19023cbb21c346f1f76fab0d961b03c6506e127b14ba88a5fc436e991bbd3c783f1929a642f41993e309c5fc324939cbf64b28a9c67510b975597bd2822eb1255a900c67c45ddd9f4f7b8ca129a5e5e67ecb15aef9d1744455c84a9f0905a04837de145accf935824ef9652b52eb51746c41d70bccca1a1a1c1798e1c38383aa724735cc83d3db716f1d26a1c8baa495c026bf62553cac0b46b823e5e46cee757b34e343e5ed2ab23e487ea0ca6eb29613adbaf76b5202c394cbbc47ec970232294189ee21b39b7685ed6a56cc966607aac176233251d9b7d01c3e395c77d8865739624d346d84658d2a525ba347d3ad00e798c5dfdb32d1c8935721fdbf3172cc943b4c4b52e7db9270af928c4c76b76afb37c3b4e26acf9a7e9b77d3d4b2f0591047905337dbad7a556d5735c18d6fa5a44c923afaf46cdf22839c36b4fcf6a7573c6f1e6fce6e4bc0cef4beee67c527206919b2ad3730010722d714ed315e73479a61f3185b92613ca8432994c47cd499a5e8677079b4024a667a69bc024f47a15cc815d542544c8c74389c1c8a31809f2236de4743262c48811235162789456b762c84186c77030d3877c3d2da2a491d753a366f5b05ef6adf9e121f535445e9ee7256ac7059837e4f5744ab356af2d4c1f9d8bdbeff6e3652bf1907a9b1bb1355015bfc79216ca0cc28fc19e2cbfde3f5c240a935631eb878808e311613b30362edf857a1ddb820d3fcbd529cd12227aefc4767962a5e9560a225eb440c4f22c88256a05b10c5b2536510f0cbb9dd8534691c3fc68a5ec1f88c4c792ab599d0f91ba7a9ca2524148976898aeec81f98b52b338ccd2ecc41e18764d3fd22b20a092cd044c105dd3bded53c1eadc87cdde43491d5ac5af610e06d583a2d1b1df0e5456e35140988a0c404c224f8ff50421bf04b2d4994ea74e86eedeabf7fa0c4cb6d475412c5d4f861e3d7e84f6b0e1455baeac2dc7fadb1f98e3617fe07b634b9a942d399b259afa1a5b5226dc7a545dfad54197eaa54962c2ad9f09652caac7eb8cdd263ed96eb89b80308697345dd79dd8721cbf2ef72f88a5fb8965f71ef8754d0f62696bd8ed4e56037c8bc2a466955a123cf09f8fe960966412b919640339068f5f468c183162c4880c4664e0570c4f364de98546024617ddda3d83c03e7f91dca4307bedb169f896a88c4483ba2a318b70161e52ab0e0d3755cc379c25b37d1946c906e29810fd185629a51d7df71eebd86335d9668261d513c771bc29439ac94a01c143ea7bac291cf540a0c21307a1bcf0882ccb32304910d7e32617039a9464cadd27156bc47f6c96f75ae6dcb28180b2a07058936d1a71bba67b1cb7713dd62ee3328ebd9e26d3ec91d2a09d5bd22c167f142ae41aa8559dd840d3875fcf794a749d8c4c4dcd988290a6c9ced64083ba69963dbd3bf87a9dd99a4fb0c966ea616711ce3287d467282e6532994c99dd8eb2dd5357c7ee3081f9cd393e495d9bed59c67d99d5ee35e9318ab0bbcd996b6ca99344c7a27a449d7b29e5b278be1ef88120921e0741ef4b9a559b984c5f73f1fc90671146e221f55c438f75498f751addb0a4c76a7a8ded711d6bbf59beddc424273055f57507242ef28487d4d72a7e133d0a22e9c419f0062957bce8ed404920a8aaf20f0fe11f99c3a8701c67534aba9a7703e85ec3a58e3a679d706716534a6a4427dcf9ddcbee9ce824256e9bc8404c056519d689369eedcbd6f36cf7b01d245adb429e8e8fc11ab1684b162f49cd48cc04133a352fbddb79a9e39c897848e53eaf492c4d672098c93213a820a622321338b6856c47d163f528c84db0890aff21fed86c0735132f99d733d10c4aac11cbae9f0d3483644192410a4b66246f96e18c99517459b833664612d7d3be1e96c7459b736b7f207e98d6f32559388e157c14d9ae8305166c3755a621a5ea9aeec39abe82355d654d6f919b414c62d9c38a819a653ab79541dc1a9b7b1c8e6caab2e3f8bcece50b676f1042d3391049f61bbecf64e9d5a6f76f822653786f6eb22925a8eca8cf9b030e00f58c99b974d2c3ea96ddbddf9cb39c98529289a897a8b3e8c413734024a8f36dd0245670ce20d96d2c0826d19edd64e9f5b61e56d749ca864f28e3537c28525a3f1ee5c7b9f5c376ef165b25dd3760e4f28f1f3f7e44191fa5d5adf1600e2a7c3c1b713d67993ede2bce4b2ef5b26f1844677df81c4bc3c386a39d1e50b336d14977ae7e7210256f9ab1f02baae2882cf28dc8b01eeb538c054c82ba771b5b83baf78a7aad793d03799e656f9a02f4d3963d77da506fe95d1e71824926067aae93ef31f76a287bee3c17f6b8dd747aed4ba66ae2c0b9f3333eeebccc7c789a67f17bdbef386cc95dcff31eda932d7f5c4ffc816f8c4863513df45c2abe860c881eb3d99fd39ac452e7ced93bdcb912224658b22b0b09dea2795632161a3b9b48c95d8ecb9e95402e77af5686d22c76b52a3bc7856179d3e73b65a22fd9c56239da1a747ce0ac78c0492ea1aaec939bf334ab2fc2f9920625def498f11429b3a5619ececa73be4757b3a6347883943be9d94bf5a7c9946a51c978fbadb384923bb26c87a883e372cc6cc2c0c343b973afd59661a53cb5d6c432884bebbfacd6ee8686e3388ee332283dcecf581b45f74b329a1ee7bfb059f445325556d9b337c9ae43ac075f786e76eff4f698ed6fdbb26769ba3c73d9e63255652f790669910a310ab303d159352bcb7e43b3fad997641955c22b7db84e7808ed5bb706454a4bbbe7696f9b89fd5a338daf6513e501b9d9119055102d256b6a0577b73855384138efd139e79c993735ee180a26a197e79c2514ba036f3217e1348305a81a0669f8a5f554670df3d21aced92c5adf9beb361012d09d5aee8cb5d1e57a415e2127f5c8a9b0023eba652d398945f6d223f984d0b58577ea9d7aa7db3d26847cba7d9e76de52600a14958cf7fd6fdfb679db46edd863edb1b357d3b75f67e34a150ef45e8a3b7fda40ef89294e54325eee9c38721cd771dd970c9d6de3ca026f52e00b1bf7eb32052e4c086b8fdc953277d6dc3b46985dc812c2f2574bc59cdf3d15e3fd94e334147bd77e9db1331007fe97f2de9f36f03f31e5894ac6ebdd1347af037c3d11488f2d9aec122bce4b46985d47ab5e7853a764d75774092567bd1622cd24f0aa2a42fa1525e79c7345275ddd1b84dee45457051496fcc3494c9fc97cab6d20d796b579d6ecf566975f94a49452dadc10eae332cee5154f9059a40938c91eaa629feeb9fcc9db575f84fc6dfb2d236c6275e8b19fcd5aafb16e9072797636555f72cc71b5be56e69eb0e4ae766eed0d228181e76aa7da3dea65b369c699c6af97ff6b1496f5cbd5bc5ab9ceae9ad8650a56aecf9d5da4a0743dfe78787aecff305fa6b89e5954325e3e8bab1ed9e3415872a9f9724ccd8f577b4d4d51c9783571d5637fbcf596dc7d527fa8f7729517b764087ea3656211488fdca455fd9edc3cfa69046199da3e3fde793eba3dda717e461e87b1a58c950bfa63172c45b3fcb815102e349ec068285d66c097183698cb19453db40951a033f8053950ca6239f872f9256043075174f1e6d308c3697cb97cee8934bc5ce697384f809fb0ef09d100070d446990a50209d1004b65a308ef05191b534026b4ec8d18136cda1338ce8dec8b1850e892c235d858a3cb11bc35b67c62d800e4b4b8fcd81a587c6b0871376b7409ca96e0876b007589e2562882c233be54993380c4106286c351049a9a63e6f2d71081eb8b1d5cbdd38c2d5decd0c284262b6a4c556c6a8a8d2df574a7195b8eb8d9e2bad9c1971d2011ed20c6e582c1f9b42de017dc1078846ae4107d07423b086226760014da8a86c8ede005d3d101e74307496018cf0d15be2e8daf8d99367e7c5d1afc8f8c2fa6032eb833867480850d2c3a68c175e9b833a6831777e47d612e062bb0010612158dd3ac80850fc823c388a32d574b1140be232c47568e9848c1ed1b11ce581a5d382842500a42740c61c8eacbc1d26521be31c313e245f84de13a7add194b83e896e19d47ae3b636a28dd12a54610d4e872f95f04626820c5d038ba338686d12db3d79dcf72670c0d2b77a211050bae388128c219fb8117208ce007602eff33e2cd2aa1d6a5080d5809030ce13f1d201f1aae5bfea68bd277c6d02d7b38073477c6c4309a398c1105255a00852b5b7869e96022ac8192a92550aed07afa1639aaa224b7b88aae2da945c514ea54c52dfc14f55015936e4191d21aa98abfa4c9911ab8590a9dc586d8c842c199410bfc67a1b011c048b145ebbbf7f197d2ea148d898981124365ec89eba049c69db11860b9554e628f17a38344386f5f24ee09624ca375fa67a1788f79eda1dbffa18290e638ce48f3fb448612fe93c249b683261761d94141321d14ead0220ced6cc91c0ca22478997714f0df1b1453f5dfc37f8f2223a6aa98ca01bccc997c0f0f9607e0a125a825020c4c2fb74a2846d981aa7a0955f56719b05678999733260419d107a418a614b540d1888da6d26c4d90db98412c94efe0bd1b6031420b14afe88805c15398b1822fad4fbca2c30aa3366ebfdb983e93db2ae529a6687b629b449137511333b16c2cb7a90f397e5c9f9d2d2f8825d444df633e732950aed00f4a8c14d78baa38458fe333457f80f038c428e0c3cf88e16c71100321e92c119ec4548d11537404a098aa220fb598484c5131f5fd00e063c42857be833fc0f798c77c9fad232dc508227620948497a1376ad06a1c63bc8009274cd1041743b47ce86005615021c410a020a2d552b05842164b683c81684b125afdcfcec4202c5989955a296b2b596e63992daad35deb98325b86a3e0ee20223128afca33397091dd5a75469729a59467a55d2a63e79db132a72012993748c316e408e1e9f331e7afb8d5aa3f066908dfdd649d50f1267152ee9106df163cf5819235473d8758723b4e232a1d87b8849235228ae36677844e3049f86ec63493dd0b3b4ed1cf6bfac9a61ea39dfc222cf98bcb0745203ed187272d63809fa9c464890b6acc585867a6846588ba41f1e7d156ead6ee43932c20a6644a318e42a35c25bb063822e8db70d0ee030f4b134111dc7a293e4c1903fc7480ef01745c8718848eeb780c538aae57ad9218a614dd18a61451b18a2b862945ad20748857fa572abd0e7ba55f7f19b4413b02c4617e2ab9f83ef081e0e3b022c21bb745263d2e4125219cef640cf0d3ac79ced1313fded4296718b03b3f73b872e478f51846f89ba39f634ab3aad4bc9fa33ff0d452af0bc2cd728080c419413958f8222c7762497a7adaf4fa89354336441687e808ad56d412044ab7ecde4306bb608e6da10644889137086bde7d27d6acf2b4746bac4d9656f5391ba22ec2df9aa11b4cc1851056b690f1002028788006195698800a4f8714a1ce4be74707a643a5599e9d399c03766d4e07da2a37a7b64a0e98a51e7b24f5d83dbe782d822a9a009ac2e9039fa3e3ad6931aa21158e7ba045fdb33baec3b290e3a590580e175581df61bf9f4ea7d3ccede9ce3cc7dae8b0aaebba650ed74948172147a290588f39b1a39da4f75543a14cc8331f28048b102c4288c09c83e2417b100441f0ab54248296222d94cc39907bfdd9d8f986124c589a685401ee74d93902c59d980ac682b0cce1da89d1406f95dfc615c61cfb25bd262145ad7acdd0f401bf82ebb33d42c298544851f7696c88b80b6950dc111263c56690064518254531270c29ac4752f748da12762f77625df6baa5cd0a412bfc582184e584c4aa15b7cce1ca84b8650ed78e979da5dbd73cdb5755a41aeab1b1f4d8f4deabc87d5684f352d516559639390c2592306ad95c4aeb48f708130e89a295ba94d64e6ce7a859f42052b37088ac85bf602fb80bde82b5601930166c0557c1573806fc02aec2523014fc043bc14df012ac04af8093602418057c023e828d6022b8043c021e8285901225041ff000077a3ce9001020801204bb58043c8549c02f2e827fd8040ce3143015560103310b98096e0107b10b380a9e828518066c85a9e021be82b170164cc45cbcdf734449cef27e0f12257906eff72451928bdeef51a22483f17ecfd20bae56d0f491790b89ddfef60ec60929a2aa267b24ddc371bac71f0ff07ad94763633e634fd4c65c6fa35bf336b72d263c0e4b73d0ce9cb5d81fce60587bd16ee05c647d9cbfb01a38cfc0aa70f6c2fa70ce627f9cbbb019387361c7f31616036722ab3a6b612f70cec2ae709681ede18cc5b270c6c23a395f61819cadb0e579c8063957612d70a6c2e69caf581ece56ac90730c6c05ce30b043ce2fb014380bd9d5b98a9dc0790adbc2590a2b817314d685331436026717d89df3131602e720cb7376c23ee0dc024be4dc84dde1cc84659d97b00e38b3c09267256c03ce40b6e7bc02cb80b30aec0be724ac0e672ad6e78c845dc03905b6c819055601679885e17c029b80b3096c0ce7236c93f38f95e16c8445c0b9086be44c843dc0f9658f9c4b600d702681bde7115826e729b6751ec216e02c020b80b310960067979de1526c0e0fc2227914bbe4506c9287c00ee020b034fc03560007c2d6700f581cde016bc339606ff8131b80f7b04a2e6359b8d49ee8476df85b7bd662377006c3fa38175915ce5fd81fce33b03fce5e580d9cb3d8f1dc85f5e1cc85559db7b0193813d915ce5a580c9cb3b02c9c65602f70c662819cb1b03d9cafb041ce565827e7219b73aec296672aac90f3156b81b3153be41c03cbc3190676757e81adc059c8b670ae6229709ec2ba7096c24ee01c85dd39436125707681e5393f6123700eb244ce4e58089c5b6059e726ec03ce4c58f2bc84dde1cc02db7356c23ae00c645f38afc036e0ac02eb734ec232e04cc5163923617538a7c0c27046815dc0196663389fc02ae06c022bc3f9089b80f38f357236c2363917618f9c89b00838bfec3d97c01ee04c02db3a8fc01ae03cc502e03c84657216819de12c842dc0d965915c8a25c083b0491ec5e67028968687c02e39086c0dff801dc081b036dc035600ef800dc0396071f813abe43dec0d97b1aaaba2d245a8021255650fa3db9f41222c7762a50a76755e2b00b5aa2fa428a987f87e0fa41e4794fc4b2145b747d2eda01e7b05d70a535678d95871dd0dfc876be0efef28513203efef2c511203eff3b8287981f7795e94ece17d1e18259dbccf0344c9f27d9e204a5ae07d1e214af2f03ecf10252bf03e0f112529f03e4f112527f03e8f112525f03e4f8c9211789fe7889210789f0789920f789f278906ab21a8a40cb586594c95a9111100000008008314002028140c0784a2b1502820a9b2643b14800d8ab250705499085a9263ca186208000200000000000404a34103ad9cab2ab24c6020ea6d7a2f35c769b9ec2bc8072869d2ce1431415c92a27a98ad2ec8c34a73988b66580cae8f803ce74ab577e5ae22b344b802a0759a07f4806106592a83a393ebb617650da8cfca3705aa6c3dba4d93333430d94697d6d9177c728e8e3200ae391d38323e2305396ca4e24250a6a1431b6c3cd93e800020694cbe2b7d995ce1283ef79e29aee52a7aa41f4b6d2ba7110f7d5713a741fabe6c0996340bcee56dd760d6806d7d50a1695ba39458b9eee50e04e5c0cdc10058237c51d7f4738721c650f65c202eb2a1ddaf79d3930f8e2df964d290867748664ba6e61aabe6c1f5bb5bfa14899283fc198ed29717d35c4707a27d861efdc4360c5f7599b1906254323d7892c3b3bed4a0f5a220d4ab571060d4e322c815688c1d712cfe416023d5ee8769ec0bc1393b1749b913ab1c38fd897bdd859cc167a4ae56ce703e04b660f0162d60b7d862ec72d52d0b44b348d5b7507ef9d3c5869cfc7b2d07cbf19e67dde622777a5888074a2eca9b8282209a47af7f8d892c7e2f727906c58a7d8e842662d3a310b9acc06289516759dc406692c7afbb4d29b9018f1c2624952b5fd7b13664a5f424d1e01eca98e5eb6ff4743bf3f5c1128f61a256645d9a563469207ca5566531bce65fee7ba3468f8f8bbfbb65dfbba47255cda462cb6222f731dc69f2ba430a240c9b12f0d4d6b68a2b95839da36de1940c9bef3c786e1712fedf7360f8eab243d80851cb60609d932a552815bc6763049dea0ac3997f243e006cea759075a053ced5df299e2383620b67e488dd154c35108dd95de2f81d7b738a9be72e3c667caa369c09506de88d4fdbc719bc0033c4e52058cbaee1acafd2b614236e3ebb141741c14d0152200ab0ef770e736518f4b09bc30f301d859b947fb04f028f54634c0c79541e28ded132b8c6f18ab0ea5649f26ca7f1c886e48b8a8a051f3fb22398ace18e989e26e8eda86013d8331640c8acbfb2804c9ea7a438b8b55a4fbbbffae24a6632f56072a8976b4b6302b69b69f101f1ca7dcb7fc0acb04647b5d50c648398fc14e1e1c2887de739ec33ebe3c6a269e143b3a689615d669e35916641f33fdc9680c0613bc6991eb80cf841aa141a437388b0d51c6689204667c20df7720cb0657e4ca9e65015b4af5bc1e0150d5df7a444cc7a2b55b9bb378d345609fdb8ed831ecd83b9031c1c53f7a65dfe6a50ef392eea0a955fe74d6bfa94ddbc49a191301b13c02c7d7360620210c4ab034ccc395d788cc60b35a150beb8511056c91d8bb31166c177d3feb926bef567ce114a61dcbb02e392bdf0020c8f0cf3523c768c6722d965aebb8a6a6efad42a9820c43e19608a97e46ff38aa4a4c64447c4ea3e668d5e7d84194277173ed386650e670d81a8ca3df352bc469414a4a919362bc37d602904ba1580e5618ca159fc7ae53e951588daa10a1473836136feeed46c67eb50a1e09a25a1a6e0fb3be4b876790b8a838e6bd5eb48b422149f4621d539f3cdb57019ff65c5ef50bf23d37e17ccf9347bdf4b826b7e0dbebe09c3505a3bdbde70dba9a588dc7089e556614d81a3021bf159527036f1395ddcc539641b4541183304d52ede412e29d3029b8f17365e9bd401fa03f4042f994eb11089ef1d1d6f25e92b0389ddc59c9f91f0c97ace373cf572f2bf2d62473c3955fc80cf27b8a2fc0b4d79904321f50a364e609b0d1e33dc2e4fb3fa1416fc4c66c3b262c3c0697c80c5ab66b45849276add0ac6b3d4242fe3437a014d3048c25ca8ad61f8c8ae7bb2369f9f0a22f988749b4deb688596532a489253e16be23d88d77b915c5bc31c1f490ee98897a4704abbb78905a2e83926bf9a2053eee97de9dc4897b5b8b6001e44262830d8c9838bb008d55db85d0e3e35ad163c16a7d9f67da5cc7e4fc8793a6de0a8b6e8cf6325090a64b09074eec143e9d58212747c21030234e963ae1a62081c8d7bb239ad32fde8fbd5536f94ba9ebe74fa1cc958de137701387ad2a423afa47be0d30f5e7d66a856cfe8daee3de11c4a132179b777a53b7634bc2061a0ba92fd3d352b52487aea663473a491527fb15af13b47dc936ad552119fff1e30b9dc158870d1651292ece9849f3579da6b89f8f3b86e4d5fa1c51056ab1314310ec47ce04978da46a2e2e55fa767b3fd499b19afad6ae74d8dd0c0161f7972e4379c13a0d715206f407e5f94d995df0999c564510bad4f228a7f62f2892636085e9b96c9d277839a2eafcd2b8edafd13de22bff2696b2b210c74b0c43f4ab42e4bf68ed51a99782b688f1e08f8d698c85f2a9abd2a6700cb956953ff2316708cd730a80b4372d213bdbb45456ec92d8cf3c1639bf64dcc49a76512b3089f10baa456b22039676383a91386bddea8221d12d90bb8c64a050dacf7e29bd18731b5b45ce4c2a2d876b2a9bc4c218617061e956cbda015e8acc4d7626d021af2f7c3110d5c43f9863f390821e7a5a068ea5a7a757ab7de0e8ab9f4378b2c095f1eda3c1bafd3a0f46fa4961401bd50bf891395801d6e43c310cde64183a2388db67beafcbfc00fc4279fb3af8db56c12a3443ceb393f65621dae00b41f32c87fcfbc7c725479a56d3b8b37d231a9bbe85590be12951c1aaf55a9a00e2b345f7f94292dba16ee547602aef63a0e1fe800b40912a45ddc8891b751f637a4d4bb57d0354677127e32e8825b271dde90083c98eaa435667218f003ba889dccb5485cf08d6a7390c9a5ef0af5d27e5e73a0771f55201611ee3132649d8aa081a4fc0cc9a2351d641001e779159d129495806b133beddeb75b9b72f44788191c743449c5b2ee98d6bad088427940409f1e04a5fcad8697272fcd5bf4c0f5e09e51de80e159a953905dae7d4966faabc1e85f043bd55029166c20de0497247105ceb9f70864a6f0a425a4bdd32494b2083450f7be969ea6007bd4bfe543d0b7d7a2b03ab7b1def861c6c6ce1bfffc51d13f2402b230233b5635897c6989d1af86e09461fe7189607da75904ed5657b71afaee777a7f516727a029ca4249239cea847c883ea0191b2ee69141036f8d60ea16a88b69825b7fe48b64e82f63c623bfa7c92146093050b4e3fcd0b0fc74f2d5ab17849de54717921435482b38e72f5deb07a9d8fb03e3ad312082a2946db08cea02ce2b587274e91874fc22b0274b3fc62c20949e4417ea0dfffb3f1189763f732b3a5ddce8bb043ee76437dd088c5b63e43b84907599b4d764ee7a66ad4b4681eddd62f370a7c8cf08d30b338331c70bc4452dba8849072345ce466f61fb751e5a17518fe8a5ac4152be18e8136542954e5f3517ebba8a106b38924270f07dca77d77ef344b47145a7363b2456cf14e0e88e4aca036005d0dbc9284fc3ffa2cd5605597950a2710a602dc57428fda53feeebdf0bf75742f7228fdb269efcf8ee666b7bea6561571a2461f46fdfe5b421008d52031c7f87e4ded41a067a7c79b4a1d1d11128097658b7dcbd6a7964d02d01e409c4ae43281aac09809a44b0228dcfa2309e843e8d46d554478e9d901ffd134cbe47023a1b186f47f886ff975c8cd32a60b4062c84466a3af89faff4dc1ad1d03a77a089c1a3fb49e767700d028c4af719651cd83e4376baf50c0301cecadbd5aea660bdad6cee8c417d75b9c9f20c0d73ab6b0b2d58ababa426539885c0752dc7b08a01c8582ad80652e29a65004e7cdeac2c0d7fb3a3bce93f8edf12662ddd031dcf68ad4127245675a73b61b3d23117f4f37e3aa1f853f6f29d1f5f897b3408fa0e8f4c2832e64b81b95e8086850d2b8b2feb37133c49afa9fc6ca2a25133505bc01401639e7dfb134975e59df1acadc6142233387a6c6db3f3728a001e878b37299f64f07a55455e86a3eb77b772353bbf3877fe5d5a86c373aa0a3ec432d40819e7f4a6edb973c40cd6cdf42981540dafdc70fe80c0f64af76d2207d08a7b544962996d77fa5b65a0d6746bd93acfd1c8395376a73ea94fa64beb377e32c8ea3a23668b304f6de2067680323c2a0400310f29015c3dbef93d7e41dba67c5ad67eb254bebbbdd426965d47cb521921d65f819d69e304c47e556363c3263a774007d8ef31c1e508c73d970221c7393047b2374e130fb8b59e148dd171eb07972cdf34c1eb8df548cce9a28c51003ebd265aa6e8bf72f601987b9bb9c5ba7121917a4f269310f4c4002c85025066c2ea1ba58e35d203b03493c88bf8234b591d50187e4db4524c314c33ab689ab4060cc169d8891bc419f75f00a8b319e9998a3b812d24f353570a8c52c6b39ce2654b8612884b34b6fb4c5318bba707e2dd7a1ecf60893ba3028cf70b78a4ae07c7847e6c25a72f1808418ee569b5727fc62b03f595529a592556153a33809e2ceb8872c145ab15ea1df1b05c0cf1fd2cf1d55670bae450d1e8576c89a93bcba238a598923f876ca1ff781199c9b1804b165a64bf2221e1085cdcc48282f1f48fb9a87f58cdd0b92c5b1465b8163df3f9aad8ac5945c037968653ed0667913c9bfada04b5946c75b4fb1e52a99a90c044781c0b6fe900e46657e4be16f3e8e315d5912f4d2785481e082ee6c68563e787218aa291358183aa4d372a63af7f2a99b3c4e2c0dd4ec35528b951968347a30c58b60168008cad523ea8ed2fd324df4f1b0a9d2eda0b43ea4f8f2aa89c6ca90236f5990240c0e0434fb61550a7e2ce4dfc9c41b631d1819511b9e9fa380b285c2919da9cc9d4f1beddecbe3ca30ebec672b367a1a68b1dfa75a67d2af3a96246ca794651003a104c392f0f34ee12d69ce54731bd8c446c030965d2cfa3baaee371e7d6250233023aeffa702aad704c02dc93a94addf52cc517e3048dbd0b4fd91186782726b1505ceb436a227b1abf062844f7908723cdbe38a340036c7014fe04f8551fd864f7dbc85f9d5057059d181ea4052d69008e2ed829bd9b4aacb1bd96fa8d5a5e6fff2bfd257016a4f5e00879c9e692f8353a3524e220550e31bee1326c6e0addb17525b527fef8915ae83a75dc70da00a09e1422e93367a325f509cd4d81d555f8cf402c7cb35f39a1e2f8ac2000389227fb676945e020acfa90e5ee6aefd6aaafde309f630ab925768f1280bae8d0fcc06eaa4e995c3871095d43ce321fc3be25c24408937a2a28741a275a41070a34e8f76fccb74fd5464dd473ea393d3f68540ddc095bf438e7bebb4a91cc6de086cbfb043a263f505040248c624cea1dcaba5e809868da138b57b8485a82a48b24aa09798b50448a4aa9adde069d0721148c01dd469aa318fa221c316fa898669a56e3543d482da607b7a1b16718e737a031b4688beb1a26bb7156593cdd5d271632031404b29b8c6a45ebc5b032aee22a1e95f21eaf380159b206b42b12084091f7660951fb201810e06cf2164d044f002c20fc9a8e75d72c47743de4681af52582c1830698d10af56e0118110a54b8cb535c0ed0b545e419b4d00568412020a1aa770c302b5bc0e514f1d2baa7f9b3656beac7b20b3dfdc1ff4fa18cd47616262e6f063151a157550c7aa4efd2b3c1c63ec7aaeaf2e2098db416f0393c9668872dc73500a992b91801467799ba95f2bff78e47c011d88659b17d61da611c7082a4d08378c08b1ededcfc870b540d32ae30e0bd9289dd65020000c4e82afb54b1b4707749d9856b4638e17bf04d6c7e00bac080ea9d27ed9a35d8cc50e4e8169420acff7ddab3b7303c67342c745f66a8eecf6873aa3efc6fe92079864dd5ade19750223414308db7736fac61b9d6f50e574a08309c450db436b22d9c00e2b61878f77f655cb219c2a7fa7995af41c4fe44d7f12a8f7637780dc5e66d50febbd218bc18082982667dae442910ad020934a3ecbd6c8a61ac8cf2be07f2e1ca3ae0617a4f4c980c9caa13084c87bc3fe8120ffe938a0b0eecb66b9f65ad2e4d5684bc8016ce7ec4609fb37410f014ffd50eb59752fc9d0e0585cff396437d9641833730bb57070a8cb9f13fd471fb327360acce5a580843915a5f401ca44dbb9e9a499dc29a9f45329ffaf391a82c9569c00311411e85e94bc9c9109b3890dd0e0a0d36111f640dd6dd5deefc77df184541aa60b3784551b3c03d0b8d7c42e9988186763c467b910198f7fdcfc64dd373557ebca2d3258bb44a0bb2082f16967dd9af5435c2b2715035cc0cae863d58318a45766c7f34fb9066e4a1d3d62872c9431b033dd6ed262b4111d9afac7dce646cb7c8fab48ec0e3bf8de01deb55d19e13234b2e9bac38de84de2ecb957e6be386440f27654cd8d433f263304088e4c0c6d50bb85b6903ec528064db8a3cb637d40404aba81e32916a83429ac0f39c376330f1e6a48fdb98ecc23e570aed64317cbdb6282dcf2588cee2ce1db1623af306201ee98dbb1fed2019f73797bedd550200f0a819986376ace3a71f1a197237f1a34baef1a99bd8f53122bf01e475d44e0b469d2b7504372aa357fd7ac3335508214cc2e49f7aa9da0c606e54f42b711fadcff7b981303f9620b1e040fdac1b891af09dbfa38138a1dd9336c322525b7aa7735a0b6212dc5a5e112447402c43989bdea3ddda0e56e6751974413d3293fe1353cc73adb87d19621ad237cdd0b32d4c127c7b7a0561587b078fd96201c0adde6b26d6c4bb1240de95e113f3aafc9f58a639d7b8321f977be2f64ba4ca6c0e501e831b75c28380275239e843d5668cb980d1fbf9223886f1ec6dc3d14e8cffcc1f57a9051e7c66e59b495efa4887bc82cf79e9120ee18ca9ea6a54451fef68fd79c682a0babf029ccb40860a601c62251062bfb2fbc9b7d971821a34f0b9a213d9ee50f151c11e5f9af6337f482a4067f85fbf15ece96ab200b8ae88d4a786f89b867ce4be1d86604bce29baebde31482ee51a322ca3604f847a70a5c89c0ade2f8a649ead34d751c278384ababeac1980acffa32d688c2f499d40ffd8c52c09d096a2835cb12d61274ff331ef7ec82959c82819beed01dfb8bbae539ffe19de38e32da8e181591d46c061abe902a2f16e047801a03f093abfe8140672b10e33ca3dde731bb17e6008bbdcf79543ac5c7c49acdd176713a70690b70b3fa5963c165979cb2350216b4b2a00b31741efe3cd1cfb85f7c9280ceeb0142ebb8cd03f76574b36b4d6f2c86029c8dd12789c1cf6d32d6427f6928f58cfee5aaf3af55116feac5e6385a53c465f9147187fb8cb8a9b7a2121ba6e3b720d4906583fc50c3e33045234041a1e7dd283e458453733435d8eadd6184d231ca9999e5864ea8485aa1c0a351058ec24472bf99abd597b8741bf01b2de72c74f10315a1cc76ad2ac343303779945f198ed0c66ae7819c2bb4c955a462b96ddc3caa2b8ca76963257a00ce14fa64a26a355c9ee8164517c643b13992b4286f02053a58fd1ca63f7d0b128ceb19d6dcc151a43f88ca912c66875b17bb05814afd8ce286685a9506ee4077554bb7d15d37462db4bcca1470ce920a6c5c3e8dd6157a86171c4b02d16e6d015867409d30261f47eb02b64b0382ad8160473e803433a816911307a07d81562581c2d6c0b8539f484211dc2b43818bd1bec0a152c8e08b605b7813958f8b13cfa272b4b48efa1bbcb1087197701b23a548a7bcc563c69eb0956dc05a53e5be68fd317b2b8155f1da334920b47d73a9b65fb257a17aef6f7b7447b36723af833ca10e2371ef4ae1345fa4d9121565a2526baefd101183b78a5d1ecc3870972b7c1eed4c5bfd63d9ede14b9c5132622aca740f8da8b60be58d70b6045b6184bf154dae6c4ca767f45d387f359c71f4ecc48c629d44840ae9bf110c33b0d0d9fd8fa25034530c784311f917d9207fa03833e7ea34bfd8d142e35e52fad4d97a9c1d068295b568c64f6201de63419e6c64f6f97c3d2da099a70907a15cd50590d7ab25308576f4d56ab16ca1f1294fe3bab44bb3d1d3e5d9c8f5f7387075053cb542519fa5d71b3ee9d42a103dc807f6f0ef79c39746bcc03dfe632ff6d534047a2fc51df0ce396227dda0ac51fe6e5befde2c847c4f06f53167a8b1ff5da1400de20e77e7df3d05764e1c1fa531d434e6fb1bf82fb9141754d671701882dc30f8baf2b5434a27ddd3e587ca980a211e1fbf661fd75051585085fdb03eb2f2aac28a27ddf5e587d51812210edcbf6c3fa75851589285fb6078baf2ba068449d7d3bf63af830c06f1f072d54195b37e28b844fc7cbe4ada92107b174a304ee3ba08bf4a8b0bcc78d3fa693ceac7ed2f179d4b669697cc33dfe4f97e6596f154c32e88bd2572a28beea0c3ae81952b1e8ba057f0cd9470dff19a24fcb21bb40d3b3f7fe35cdfe874944fc5758cdec57af0519e7249e258c0e9d96c872f2e2cf978ae275fd0b399778b4a1883907e8c7de9665cba5ce020f29ee1cc1ec4aa5d35b4c5c7bc4d2a117f925dc2cac5d9649f5aa94361e073e9d05520e3dd010f7af308964fc50c9013f6d00a798104a3d791187a929833d9d83cded6e33e73089ff7b3cf7e8acaed1c046ef786e1dd910c888d93b942ffdee307f68e380042bba79d5008078e22e3ff6c052d74bbc929f9e71fa5250f404fcbe726ad51fbdcc2ecbb197824c866a7da9a0656cdf75b6965642995d575eb76212ff4eff71fbd5390447ef541af50c15d28e69501a620f403c31adf3099ad6d790fdb9fd711793baf6c7e0ffac6ce3c6e8b52327f5e77667d993196c914df5eafae234bd1afab0c0ccbf46c6fab8e7a46b609c47d92af10eb04988de901734b186177f9c0b598288612625e0d740bba8c32f9b1271e56d3c00402cbfab368682e5ce33a23bb1b1223eb03a53e7f0f7b893848b877fc7de4f1c2b59a789e3e3e71d42825d1519dadc35846e62af310233546870a0c695963ae7c28312526dbb9994a51126ccf7d24f06689b39f540f24028f390102b8fae12470210f2d1b9659eb18043bd49ad8d9bdee05513a208c1066dd7cb2b53b3af515568025dc5537f3d470c2101c2a64e773fac3bc17ec11f3df2e649f078c4063480e5e223970aeccf231a923a40e692c90f778b52316643d8fda2b502f86a6b9408b526d6a6a1327434e80e016ba99fa4d94f0565b8650f9f9ac75ec0a30f1eedd2bfaac3188066e54384b88eb0675939bb9da31beb502f852017a2c8e111dad0429bb252aca025f91a943111be97a2d45b66c3a5c61e2840a48dcd0be04041fc7b0f2f8aae0f93af9c2d70867c660d03bfbd64b7a4db54de1b1a755acca6c7141f6f1a62cd2a5509b642c79f764c6c1e3e2a203ae042c1dc3dc1e2765d5dcbc82f318d57800e0aba9c3c1ba60814b7cdc5fb271ced25bd6f6a71a13cada7cf8fb60096399e9150d61acae5e27d46784066d802982dbe372190706693a4af01c15210f253ffbeccc2c1a8e8228863c599cc486dd30576f83780f1c5d346f48518e9f4f9dcf2268399c8febf9f993c810e15aa9bdf0974df6e3b8264d036a93ee1a0cd541d678e617bbb9f5a839a86f2bd2411b571346b8512187a388c8b69d2a1791d3224c5031a6da12cfec7e620348930b0193d5f1874616ab99583b43ed99b48aeeb61ff4ca48d7322d8d82a1f106186b7301073eeb15f58f9b58fd0fbea06c4fe9b8f08613c0c334e3e869ff9e14f08dacda82455232b11f8b6a876500fe4f7f4ee76cf4c99d5d52474e4957c0f2a267ead9fb4ad2667f1cc7533a8b9c53acc212b7ea6ccc1819c95b120f836d7ef92e19b3f2659157929d9ce399ca00139e42335f855724b38f4054d2e36ae9055e4084bb548c4e959cbc5901f7535546fea88c61863c688be424f5e9e307e243c3a62a42a4b215952419c83f09a26cdcf80a88af1a11c31a7ad1a9e00704b314d2379c0dffb630d0fc54eadbeeb2835910cc7e473d9a3e8e99ceb572f46e02719cc6b363c8c1a6dfad397b574e4f00beab831d706341fc6c68185a01812249139adf1aa9515eda5a49a143f928970b7d7264327b2e8b2d4332369248080b3f922c145bff03971afdab66c82ab807664e8e4aaab9c9df97a7d9b8661a9b26d27186179743d074cdaf69d76f422845a744e9d7b15fd945a20a1c2cd01e5d0e88542bcace9802473d0421517bc6633e9f9d30ee8b18fbb88eff878f7dd669cf8d6793088f8102a05407115f8fc8261d1b10bfc778206059f29b3fa2605c1924ca4e6022a882e48a8cfcb5c4223838a1315359c8324ce92865c1c14e1e22193d3879d82bc47e44a0ca4f7855f31d83965a2d716fd05484178f48114c36149d62eaf296193bf8ef05ac5608df560f2c5f4af31881311b380e1582435a6140b083fd4d030b0651c93fe7d8fc659f33a54e14b68ce8703700538bfff6347096aab9456f903964d020eeea1ec6f9690f3092e0a192367cc9be1806432eea7641f415d6dfafceaeb06d15033688e20baa30c93af04b5a4956d8dc163a788130d94415eae6db083e4b0af50f06f02402655340e3a000127654f5f6fc55e6123da137f8b203114e11ccc928cd42d6a5403a60f3b20e29f381f298bfacd01c00fe67922dc896776b82b8c676200558d37ade26c50bfcfee23a80b8625c311dc00b0465c9e5863effa4f601f81b65bc5f666647a27612fcdb5eb9de4a9d101bf9314485b2c6def34efb5c52c57572ae3b586ee694c5b0207444ca70274fccb2ead251b1712ce63c72b977889dc9be222b8f10041ad0302790f75cb24856bc7d6d158167db142f8577ddea3ce677d06d8d1d109927a51ce741176bf6d14dc4d7017a7a66e0a8e5e6e9c5316c5d710522a44395e489570545b2c2e1edc21aaa755944868ee15061e363e71837c72149af44e3691b66c83312a247d0ace90a1b53812887550e37930692725814b0acd6cd6b4c6088f1fe0f281b9c443bcd14c769b23a03295e24d1fb7944c29dbe866a4c512e475a01c862220a5647c5e82e0e3787258d8620d5f61f0f34c48ca854865aef7378accb5b43a516455f0d52fcae8e1aebe56130442072ce63a04800498b1e6aa747a60964f8c7a39216709b6d86bfc759d42eca469f67a081cd2b7562c2cd17d423d8e1c93188a30b659e556dabffb93748de98f70a2dbb98e8141fc0fa238147ef0346c7d605288e126b215dd6804465fe2034648a097e017da85aaf88238c419cc2339c091c0e44a84e66eb63eac9b41054b0124adcd00fe74dc22dbca2d1ab32fb0d8d561a10288b93e2a58e5e7ee34ef15a99b83975a109c99da6075aed66cb84bc013348aca7e3a20b9c93682cf7a11f0046166b04032437f9433376ef415e5be98dce2a4fd0429ee371f9d5cccea3a631d9ae48403bb025c1ac2c32c844b5487992f2a7dd39d770a55d2ad5ee33b487be36cd9e32e858298e64c9ae2ee2e66326ab06e1faa55997970a7c1a6e2060fd3a0522bcddfa1bc3298e49a679ee75fbd8a6f0d8da9719fac76328f7834238384e9ad7019091c99bf777107ab796c7229328d06795e90b9cd53a123b003b95d24929edd93515751cddd12fdc7c6a30389bb86c90ee66b49115f8a7ed2478f55a988df864f1d04e991e85350426224ed945213b561b47bfdbdf7997e5e08dc01148d9fda81883f6d9b96a32cd8df3c014c206267005dd4f889613239963db2124b8620c2e6297c8fc8e5e1fef2048da52c70a8ad4b27d959734d21a7f3efb831932868fc28093ed67fcc0ce1c9a9797303f596794e3988c2a37c8f5049960fdc5cd98733f1ccc81c0a4af6c0e5f228993ed2e035be382a8e7e8e5ebc3b53809dfb22d702a68dbe490ec407201be949839e85fa0043601d9cd5336e44fef241747eae2fae301aaed33c17bdd233a5d9ab665ec3cd8640193f68e185d3ae922d268079051914458bfe2fe86e59a5a08053bf9182101cd5a4de37065cbb9ae5e58cc7721ff3b74d25016ec711d676f04513d2022a09f8383d62b130baf91ee0f99145546e40e9cf3d86fdec2ef98d7c3b7e4f20785a40e5f3970b220dce08d13066ce0d380b84e4ca841cf01176d86a9cae8b9a5f2f0748953685eb9e297707c6882cc282dce3a6789a247700e24009c0e4351743dd2a9849780b834c00683dcbcfb2bedd5c087c1b869009341d78120f5633a2a2097c34041fb78102862a18e5cd6f9068cfd1507f4a8983401322f1436249ffea01a6ccd542ef2e0357c1d9a935282a0d980851b64aaa8f649609dc5f01d193e29c0b29924118cf07423a7a1bdc181f595fd0dd5a6310aaf7a1af4fb70c5057529408a5a6457259a60a09592aa959d731fc1ca9662afc975584e01bc2b3f3b829834d00811678ac2c4c0ef0eb4078a443c09fae4bb7044c5405de41ee1c062ec1271e26673f1c6458ebf714c187c08d43f543fcde3299be0401c500caa1c71415e2c936745816264cedbedafe5b0a32290af7ace5d8a2f8bcda6b40c13629900d183cf75231b5a9281f7de9ad3d607457b9f817cb9d4900a66ff105a8705eb56a44394b1d1f2fccc45aa1ea429e58bb5d5d588ab561a05c5430f721582ef98428509f7b542cfa3bba6a7386daa99fa5118d5331d69a44ab46910d18036bf7e46c8865059e44adddb53a5ebac2292585a448c508ab28c3ef710c0bff592306a9519457bac8395cbc4e283fb49f3bc203854eb70f430b513d4adcf328679444be0f052723eae4b21d62227ff2b2b70637c3a1631bb5efe225389450e83615e80b30768fb2f7af69c9df8e4ff82619df4e0551874f1d831fff75d65b34849a45a8066f2c70e65e5fd686d0d1e0fb24f7e1f46e52afd6cf4fe5388796916d8596908bff708eea8d5b5cc38ad7b8b938849fa8cdf80c399b4e2e8a92fb9d37127d7c894ba7c1b8acfadbd3eebb3359ee770cad81860f8c80fe12dce2ffdcf6a74e19fa8814f6445b7d484cbf9fd6c99206cd73ab7847b32bb445e868fce6690d82d6faa67bb4248096095c606be2e97834bf81dded680c679087a09f2440bdd1b6871038c5d11cb1f576c8cca4cd8f1056d2c6a75d53663e831ad3f0fd56e19785a02c4b6c9c5a2c7e47f63f5dd8b9e27a2efd1577911e1eb593be7cd00cdf6f66b86c62f3b0af73e1626873f7a196555f8ffe7b579e28e102ab7a2b7a01f4ccc8fa17c2ae2c2032e9977707a82c3fa770202fa51cbb1cdd6a61bb460234eccc6564c97f8b9c99a297a0cb11c2e0cf992581cbc3ca367de1d989bd9b0581c24dccd8273c4ab4d17b98279158315c5b98c4dc46505c1b7636272e5b511cec700804cab5856970dd082d88505a96040b3b9e2b5604af08a24f396b346a4373b79534386adb6849918c849c93759c2f0baedc536c424bbb73fb0213b7aabdf0ef5daee664fb128f464cb1a3070407529c9ada5db600602da1f3e4463024e5d9f4dd8b230d17836f396f9d284e7fd7b62d6c4f15d120d0c432136975bfbb3d725ff73332b6c025232f91138263128c449b80bb93688b03000adc4cb7c49ef9c83887f935e7aad69a865be661bc8014c677668de22ddc11e118ea208087288506ea4cdb79ac81adad0dc5e90a9712702ee21b644921b993482290a18394d4a68b121c80d67c8265aaa207c405a84321903ce04c0185a461818cdf0d545c342e262f000e310db372cefc91ca81c544a6dfe97e6e330115404cc15c8c5a79d20fcb92082f54b41248b03dace430adaa5db4a63afd137e96fa36a708d3a25c4278108feb12149aae4e1d6d3b83c9bc8520a674e28e9466245e96a8e978c20e6b70ea131a2d9bc72cd0624167f6e327c07088e6f970600353942d04e5e900e68188e22c87826ca90a004cdd11cfe77aaade78f0437a2581e5ce06ada8f1f856cc641260da932297a897d227a45e2df197cbf36736069a123daf0ada390147ec3e05d0450e18f60a25135ecc0e0762229ada44783011f631c70a314954d649dfb43078935990353f46a7c4b1a292ca66091e472559d40900b400fcbba936103d45ed127e5a4b0e4a86e439ce946a322fd60039f53f112a2aa237d0dbce6f520303cdc2deece9af680cef6ae833d51e746431d4112a5862c70d2ecc6538585b4fdd5710482cf064eba2d851fb33524799c630ad65bc2a58fe34501a1cc0b1f3ce4acc1d2350b83cdd37fed7388e9856bc51eff38b184a63a7a86912f03c1f469ca6b3686d7c859a4711b26c53732178d4bd33c1b0af00b6cae44c512a379de78f9bedf5ccdf6f7de13bd4cd410a223b17fc60c2b493584bb60dc5256ec0db29f35a67cedf7a8b5dbdbc20ea8e1feb00343445cceeff1e3de74511d297e254c721d6db15ea9b559f073703716bedfac4c0ff0bd4b489503ead95f5fcb38f32bf3123c2eb8c1ca66c3a1d0273fce540c5aa55ccd56d3924b7507b6272c53c738a7cb8d07b2e5b416f438cf33dc52d28a28b7f4b4491597ef08f0a6452f633562ac3f2566ce1b3cb30cc7c30b49b51cb311874e3ec4d014810900e59f2505adf1a74845b12448d55ce244ad90dde23af8010de4d380f631c5c0a12ee6bdc040e541ebd3a7302e328443206a68e8ff890e9748d765d918150dc9b80720a3d5d5181c6c9813a32d729a94fe23da705476721c82bf6137d411239a1e45bac56b2913729fd11d889425f0e8fc0349e316d9af8e27c8063e56bd9355cab1a967e7d35ed164d20815e160f4e06737a9426c9c65180036179cb3bbf9dcbc0a5bd1551bf0e70489c17f75b836a5ce8185810432fc3d20018588e9c4152fd92fb52badd36731dc5e4421409a868fd1ba78b4652fa698d0178eb9620d808a1166bd163861a7bc21b3518ced71090ac78a66fe83a3fb1ea028b8873c8ac88324b0c0e7d014bbf1ffa76a07973f2b436d32e5c02fa68ca41bc5737205039a08a9b82a185534db2a7e0713e0ac391bc60fccd8037b0455e42b09f1c0cc24b81cd2851ebe1ffa2e9585580018536973bd0904939b84d8be4633ec55ea91d6c300f8e88d5c43a9b3406616ee5142a7ad6eeb6327d0bd0e990924691154cf4f41115e2b290285d1c2c87ea03067bcf85da40c43b361614e0bf658a77a2d6d6f76b3c35ab403de32625f7158a56fd2bd999e5a6d348afe0e708c2dff4853160989cbc2e2e6e71a7146627489c0bbd8ba5a49a04714d475c57dab4b75639fef47d3fb3793b31731b556d55631825a9676354d7229bf8b0956d4302be892981a3c49ea9cd2358c336ec1914cebe9d8aaf7b0a313278a0c119af29fb8c6b1b13e48c9247cf9f8e33a72af8937e4002dc1e0fc8bda1686c9ef0df4c98d48561a16fc594c0fe96a1632a83e3990353565cb493fe244b97733383578ec29c6140a5a29d90ea298d76465a35d665a0edf86575e1d4fbc7cd81b3eb8a3276de2c74cab79e77caa2a67ac96a1c657299c0ad474ed8bd97e2166fabea63da8d7216e0418facedc31b00d4e1c12f03f19fbb64a5a47d68e7c9a36793033e2d5658567621923cdeda8e82a96d338d80df12a21c044037835df3e89829eaa62b1e299963b7a8b32d5756c0fe81822248a98ee2b6ff00ee37c2049182923bc11ee8099c2f4084c369944f02761276017c4c8bfcbdc00e41cf29bb2d4314701778f11dc501a4174849008642ec828021f21064e20a060201542aa4d199b018cffb1162d0fd9d7df57664ac4ce993dc4a5a632f2c382b54d742d551fc523bdc4942eac3ee11d5cbeec4e62bc9ea19fa8b3deaffc6f45a0524b5804c0cef3572e6cdb3b6b272876f908254a91d807dfd6de402fe3652bdf05f167a56d239eddec4103e96cdb3f0ff58f410d98bd54994761b00a65366027dcbfa82354ca68d7b3155d84f03850b518d228281d809b3d0fdc888a9e01e542351812c87a1ddb3d3c30ceb4aea3fc68f16ae177f96e2355dd6a90e63bbf3c7cc4c71f928e79cbaece482c7b1a3dba088c6447136e6cd0094a486d0c7995f97798713731ff8e533a95c59f8dbf30e9511143acc24c321f102db62972812ebd0e3d4e169803d58ec928356949371264ba5cf930a1c0654fd434cdc3b08ccd32401dad42e8be3f2d25e29afe6db0a7b4758d0f8db04cc2d9d2902b53493d3f4420a9968020799d9c4f365ce068674be976a40cb5495d3491bff6b5d63cae048612730b647b1cda157b5b918bb386f7eee8e0147c9212994d3ff5fe0bbb27fc47f60d2dfb1806c5f7d848dd2de04f3aa258dad904adf14e7c5243f95d99e0e71fec037d3c3ce93e42e019df0d11fec36099024bb5e6e99a58bba78a2cb3875e67f9dfd5a584642427fb7f8bad3c6e04c60812d3c33370cda202d1f8387492c0364d9711dd7f9b48e35c11cecd566ab075e16977c61a59932f5dde659f0e936174f8f168b11a4c49c05266db760077742c48d2090053e3f62f66dbde4f4630306e2f3f7aaf1ff80e488c0cd59f4b765618f6f716386befa2fed59e544b051ff41ad051ce735ddc388d976d63c75262857c309c1ae7de5b38990acbac671797f9acf9dc5c0402ed152d0868ce6258e47ecdcf48613201a43239dbd7577a5a1c922e70733f19a0774ed660c2f240b308d49d5bf3130224b045f0b9b15b76f50de02b7f293710149413ef06842cba063e11b819fd98b8a2633b68a98929bc4b14042bbd7297d5b5b4f0dd91599fb7191ae34368d48dcdee8c5a0fd070e5b2fe62e503d6af982fccab204dd55303399ba18279033dd3b42ae94da9c652eb1ea2c02a08f5795ecd664720863673b9b2d826b3999b1a62bfeb7fb8dd887fecb80947b81eaf3dee7cc8fae18e52e435e7a4414ab37ea6d2224dfebc9e021f3474c1260ab5e5684882fb4579702ec3b6c21722093fc9d5fd25d5ab9b19f3afdca76bff22bdc5e10dba1d5baf0f5ffb3e5f6f933b79e6d7247a48d424f475c4741cbb4a2ffe6dc63d2ff621c4745bd7bedf582916b1926c1ad718d7abddfa6f430745c2e14b30c84e544624639fd895c089357c1207259bb29216767fd1c8159ba800e7804271e7ddd73d1820f9d2006743cd5d7004d9e134f02dd795aaaba8c644652adf8034e992e2492f21674c0bcbf42808ec39316f15d8192c329009aa5cb0fa714d7facb269ba14b48d6097ac090ba5a42b4edc8e98a8946f52d3efc383ed6f3f1f99444e17f3f0e9fc14f10b7c3e159612eef4e26e1c1ae43f604a3d8a56db7ee6d825df827736234b8f58bc1efda0c223fad4f2f4b6e7e17454f5ec29ea5c2f82360ae9a90b8a84ca52d2784f901402e39efdb16592cc5d3bc1210a67a766b9e90a35dd9ce4fdd9672c37311cb11ad93720bee52f8ed2ee0e75a5a4cb79415949db800af8cf12eacd93745e488d97ab7e73632f4ac496b6333037f2af5dcf4230048e9335352b3899af4e043c3cf7a6ce6fd42487c4b28542e52e3745cd889b4ee469e8fff742e4a95d095d32e1a2c3dec0842a2170ebecd3ee1857e939dfbf060aee844996614bbbe797e69724380fef4a88d7db33bce6313687b0a4afebdd99632cb272fbb8fa2f7dc4789dddc931feec52d3905acc327ee1ebd923ec42c9b993570a296d745fc57a2847e798122bf7571fa8f93e55feaaa2c2feaa03e1c0eb0f4638346cc4ba6d54586bcc1507432b1ae5b6ef2af465ae67a818a579b0696bf5587b68425e3fe2e2aa79571e13230f7aae22e5f9788cdec566238b8a1d34bd0eb944d19a5c27798db4323a205b95f7c5d4b30a88a80dae9c41faa73dc8ed00cab213a19714b357e46a5e1a8a68212c571c1f06c7b67abb408b1a27a218b222fa0394aec1dfea9a46ac9c1da620d9279e987a8034f016597feb33a488ea3740bf742a360362cf48e3a4a7099abff2f823fd5f47ac2ffa2beb4652a74d4474765fd54c250687ad8af27fb25c5802aa1a4a476b5dec1672f1fec2e848ce6fa4168a8ad6c7eb5dda0c660fb89a2aea3fe4eb2f96ef733b4462a4702725bea99aead2c12b5506abd2087ada8b8011d95338ef70e442aa591a2df0cdd8c9791ed967d9e11ced114a09881015c296a3687f105158268a4efbece2606531d94a8dbb570c5916fb843bc900760b9ac89358a5f880719b6c9ca0e173848e0160b478b3416e32101861b496347db1a0a83efe4cb82b18d43de044a2b754e855c08aa32ad4172d4a2fbb61eaf1139ffcf22927375929ff872501c29fdeba94ab19df9f6c724152d9ad827d5c5b7c31bc8cc8ffb637a31829931870bccf96b693a4f77a782355429ed794553ab6593fe7c90d6c3d374ad9529796d90688391002fbc2ebd0e3c71ddd9b46aa60a41031e62a0e0b0472841e720f2470913dafb47b2d3ea801eb9ce37b424916e76b66d310b9e3ebed5b3cd6829a8d8f2ba6b01130bb9380b0ad6cc24c69764f7a0236a5a29061363f7a0f80f6e735ab6e2cb808554575ec75a399c5a5af304ac9dcbd766d102aec67c0c91aa71886a6fec28fea584a85eaccfa74c5163bae12317e5c3917dab300388d317a62f19344a68271cff1eb9dea473522b242f57ad9801dac894487130a4e42e8d7ac71daee543b32128c2a3ab15d8a910d2206f212d243e046087fdecf4fad8464241209ade57324da84cd4736b4404f5f633e6d6f64f17ff08d571c41fdd2c5d507af7d14b4cfce35671f06a946e79391c8c657c323a4ba87f3526d86045c9104973d1f68bdad04c55d72eb145b5d6a2ca6331776231730edf789aba01dce00e1c7d9a0efe8d70df73d3ed1722fa084167fec9f2519ed984f9824f218282f4ab8f3a56bc644b838c4f8daad5b1dc9e9bddd2df38f0cf9ae323128b37726c9d756ecac7fb2202a9fa005ed3585214ce1e0f81c34a3c5d798e128cdcf18b5a855890003983b1a28b202cf1ea6085ef644f32014763ba785504e3934b206d89874f0241d2c7816609733f6a7d1fa3a3e31e603efc0e0d4d6042015b5b9b187c9c4c9f0088145f44391b4ebfb8938069ef7a941888a0eca8b7e88384fcce02285034c60482f19f1cb83cb0329d0d7878f46fa4e2e503bb8c8a068e827c30eb075519bb351c7efd82aced6445b7c2721e10129f6c5c9cfd08b49b3c079c3b3850d4f857acec3b2a36529e290fa430f83a81b81faf8098c7ad1994d9ad4148684eaad2e7f4c5ba4a797161aa00d8c6ec636602a523d22575bd889e14bbaa7ee054c1d24e5d120fd74c654dca2af2f0a7a0b7cff930cbebedd7ce15b73b2b04fa22a0aca05f99939cd6ac2692988f1ee6cb55c57248f25863c03c91aafe9c901fde1ac77fa04037132f50a4e6b5576575b60c3d79c0b1525925139e10ad2e765fca00b86cf60d7d18dac9a32eee07c0120a18d7cc11fc4303a35619c445f3e071569aaf19abbe72efd06d62679d9662075100986421c400f5ab07ba19cb84d2c6fa8c4390d4eeae966f92301fdf4796f3b92a367ae4f552c39eb3253908109f1a719d521cd7d86a36d3a17bbca9783314b7e9153d17f56a963037e4bc4df8134a174ca23b656927ec35365732cd224bef20d6be81210b670f01d64e4f4be861586132ce318c827c36a8352fbc2557290269c9b59ba8c775d210517d2b01bf4e000d5e34522434359e70437b0f4cbbcf245d1fcf8cdfbc483766e2f628d36c3f1b7a4eb5f0a9cf56e819da11b6d078f5ada3e521caf4008cd2f57b3ee5ed2fc67ba0bd7f4a8367e63541ff47fb787c91b2b7c4d3a170fa5a3e06a2c09fa5f7a8afe40e0d6faaf1ddffbed5a01c8cfa7fca63e9c87fc9762d888aaf14119849f8b50a83bc4329251e0bcfae5513e959e331c7f0859f8db9d19ab77ab5876bdc3df415e0d0e8ced5662c0b934d561f0028b8171c354bf080028e1dbb520c59088f5ca6692d4a772e7b11f6f734a5dcae3b849b88c3faf14b45d4dfea00ec0076760a54f62e08cf4501f861e1aaa5a3f3f51cd1d26bc649fa367b110d962de054ad075efa4596a005c3c73c81c8600ac45e2b2db01e94eae0ae009e8d34f0492b6ef76e6c69ae4543a880896956e16f7f8486ddb0773ab9f76c4a23a23749987367373d2aad8736c8b7f16a5a987d0704fd042c4c363b2783e7294af5df9ca4de4a194538a4f8869bfad94d75ca9585364faf46a4c7d5c8d57b6d62df1bac60c68bac31dad82842475a3fda53b92394df24f320b7897575cc644cab8374150a41e33389be97eb63a8f9f068a04195e00cc0e3569e29c4cc300784456017154f0018b4708118c375119d569b97bed293941190e3a7779520791861c1e76354fe917ed3da0756701274dccca6084d7b1cb992fc3804afa691e9c7575af3989e9670221b102ee01428fb7c56c3db1e0c5789e05292a76fa31211517a7cae275391224a7c1407a16a6c3fb7dd7160145059e077172f647bf9d638af80b0105e6861b339b49d67b390bf02f62a8e227f8fc43a252cc30ac653b8f06c4c8c30f377a82624d40646a035d8e0762706a974b52502e2453348b9b1e9b14c47e806eefc92eb1f17a449ca26c47536852a0ffe7802e6f4260d448b19f2042875d7b740430c8d18e13102f5742c94af460fe3e569ebaf61a796128ad10dc8be6771413574144ff375e61e100268e5b56a0451b2c2d0c6d97567463fead046f8f33f73a7a5a6e5a6e7c417f3a95ba714bf107b44394f7f2286cf2fee2108d03569750e8908bc1c2463dc93041aff845dafa15c6704415a957c09f144f4a42b9a92132ec1bbb1bd56c9af2309ddb88392aaa58676f1e82d7b1c6edf76d34f9f3baa885212e64630e684866205c4742f32080d67404c21e8db212613d0e105958201d26eaa1f39a636406fa3d7d576e21af2d911a7eadd30782828c02f96582c17f7673d327e15540c2d12fd7f8a343d6270d69ebf6e725048f3b3922f70fe04fff7bb5fd30ee557dba173c294a8c6660846dec786d09083d43dff4b03988a90394482ec14da2d3d5fd4dcc4ca5ee5e97c079894f0794c5fb6e71d03109dddad7ea9d3b011e019aee97927bc4df490d096451423c3cf0968138946a9746eaab93fe36fc59c1d7445271c1af017ceed24b3c751cab88f0cee7d6423861a41b5f42313e10635648a05738022d34962cd094237c67da2033a33117cafa7136a7c992e897302db14acd4b40246f444e1b2605f091288581fda4ee85648c5959b59fffe4bbb4bff3862b376cafd2c2671ebd6ae607581ac800c12f5b6b19991dc8d00aee5f06fc141c37273d7cca7e0855b6086c435072b7f785bcdf20ee494e34df7a5c89e32e4fe930844cadad37c22726774ca3d12dc6afa70659425f4969ce95681c1bc633bb7136b4af7ea4702b7c80dd021b6d2450bff45c141064baabd4057464bb67004a65ff6927615eab43218b4acee8b5333a3c85c79e67a3c22c21a028ffae7a3e0e836e10425fb72aca4693dbe6e5d70e71d48a89e341a4748c64d81e3fb1d6d3c22ce1e5fec452806fa3876294d9011e2e4b3801375914e715b1015d0aed6094d6cb945a8bde1d71df0e9823ea1b78539da3f068a68044540c2168badd325cb21a7ffd67985054ed39b0f5b9ba418656dcb5123f9eff744947f274040e951838e2d0a147bb90fb7f07059949e6f1a5ad18b4fd98243ab07d3cfb3f0a4c08a43ebaf4be1b90abb464b530b1158c9884e9e1033977812fc3f0e39bd71644d1f8cf3fea1001f688f3e051dfe6988ddc8561fca07d09e84ca4b8cf863c9147041554d31682d13df034cf97246a10efbf13960cc7935a902e7c6ddb377b8ee7bd0ce74ee50f19c169facf28271c710374051d4b88d194b57280967a820c4ff651d00e775838a3020f9b45f3b54a14727eb0e74c590617665c9371a60ebcd5f3ce98f35a2c9632e2d0ea29a49f76795520f9cdf25d70764c69ac966d9c2abf85beffc6a8368069f0b10c2c8fa417eecfd06a1fd87d98f74952da8010efdc84f47dceb714410d420185903d71d4bbc8d361d540419e1968e091266b01aa104d842355068cbac81c30aced3d19b63f29367377c1d696ca8f7a41c30479f943a42a7e62284764991518ec7552c8271b3c3d042b4e7736337c864453f90e1170d29ef3e64203fa0448f68b991729d106ee50058730a32d4630a8a8798d74dc09a04275c84092de27bd1b2c64115771f198f159d4e41fdd9b9382804e5ca9b2878313325197be9cd8a84c41fc15b0e708378a2ce9081e3c0b9ce5619340c9e4051b23b862706ac845e82d9f3b3da4810a1b33288d56e2aa29cb3ce1a231240d33cd9e320e6ec04dc73d8d8f954caafd0a92b322ec212ce1b2b5fd9fb2e023f22b18375ed320ea93bacc624ea093970a15cca40e45a4b8bd35cf6abb0302fb882816f0d3ce550e52c75d4b197e6e17b47ec41a1b180d79d35dd2de02ed4a13d4cc69659adb45c4f208eb580cb00d5d85119779020700212ca921e9648ce8178e3a63eb2e678a34012358a994fc93aa2cb22de36552294ce89a88caac6215baec4fa059105c812800288f32d5441012ceda786560c3180cf32e65ec5ec2534b09b71991523670b14fb889ed489593f7bb52972a51b7fac39224011f03ee9436a944cf959c6c53b13dea8d1d1dcce834005f95bde898f5f22da7e11b0537214f4ed634f5bf31f1d3ed4164d277f8793a0e05b463edd63f582ee1f1436986719424ee35ffba6e30e161058765cc6d7fd442bc7ca6fa8a8b2fc008e473e8984c7bc2bb219aca23ced85710b038aa26f3922d7f8988b707b513d811976cc2bfa2f0ee4149f6a36a16385820b33cabb5c1133a6813f3eccd75b533c6060532cf5a09c27117107f5627e53ac55e2daad72945acd15be5804fcf24676844b08e690226eb8000ca226540c78a2c40169962d3417d81c98e0fbc8225abdf67b2ec2a255c37688fed611d7fcaae580ce0ea58c7cb228144ae510b6da068603162584edaee754f7de143f38fbe6c9ab759b320f1bb8c41a270cd0338e55fe8d0df327398004a363584206628d476d5b836a751a097120419649dffc4ab5cb506d35757d96835950ad74ce5201cfb1c6e9cf74c4a41e914d94db015394c9cb98e4dcae721a7ae8e6505612bab0317c2436315ab4bceede57d9042e8daffc82f7125660c461fb4241a36434da5de35618b0176ae0d6f8ac7ad3728157eac9eedb7128a95ca7a7652e5dfa1740c9ef180c82417db3b0f783d0996103327fd2b977318606aea870dc54695d0538e51a825a65c04b68f10ccd82356d48688053caa8e55a2c0593b650e07736e30ef8ca2e749380b22e5160d10b5abac45f99fdb30e74b0322bf63d4cc4ddcc37e2aee84dccb236a4176d4c6039dfd00c0c10b55d49d786e7eb617865d82d89e1c058f73fe488e77e633c2cdc2abd4e5e1e1e70e02cc2017883455ff999491b1abc6360aa51ff154a6b5a943294fa413da37401aa695077296115454f32b03360ee3f2ee80ee2f641e6771b748cec8b13c023597b2651f0782b6854f3cfd181167bdc34e111d1b099dc18ed8ccc2f2bccb75da9e781bc2b802f88175fe518233de0c938f126481dc33906724f7820e66bf87f1d4812cdae07ae41c7257211fe235b74c140d1813fff1121827e349e4fdaece5f5289cc80a8db2f3e49ddea4c2052f95c387737d598879219a6b85a1af17a66a8656db018c081c863cff50d996391746ee929ed5a72b145932f70b2a99fce1caa07afaf57d691fa0333da1c751dc74549613a1585981603d93658a82707667e5f0518210c89a95e47a9e9d272615f4412f7e3d9d4c68e005cfc6ff7c5ba3d51b0d5cc15e51db1bcbd3cad370690aab91deb3572554fea9e336e65a8112872babeb9a3de62df0a69287cf9ffbe063d339893cc584aa84b7c839b6ca17456e47d5538f4364f0a731f9a1efb3690699bb00a9adb25a3e5eac4de6505561c106158545608ebd88a9f9186eaa2380b2950d4dd8c03617098033ef6fc3c8410b7f64ada09cb59edb448a0930c690ac081c24fc057214834121a35b0722264f7a2a1c5f4453b46f4838a37f5442cd9876d8182d69c3db2842cb83911641539348f50d943086a1304eb4858316b67ab6310660d660f06acd071b1fd6ddde3ec8c9f1da29fd8c9107748d5c0eb2f7301b12ad70b68f452982db7112a069977942512b47400005703cb807c02921ada532bbaa254c82d5a755c89b0d50fea94428b1e751bf820640871213d8addd33428add0c08c254a33a60db57ea6113b2af936f5b881e0ef721f45528207df2e443e3638931c1939843917870bc3a786e514b571343fadfcc0686ed211a245db849c4758cbab2a11e3a060e0e6860f203ffef2836a35f897c50a13e4a074c64111810cd02e097d79ac33115a25ba63b9868434c421abeaee37da5e96feef23e9e1950f47c1a8c15e6c6417bc80651b6ea0272867817fa27434485c1c02c5b476abb61fbc5b834cfd61fe9c8c55a3f430174be51f26ce448fc5ac53e54cf919722c4b83efc07766e906a319e8b44eba5ceb4d2f451bfdd28b25076d271ce066576853c0a9c06138d1cbdf6487ad9852ecb6ef665be9684bed157c64e70233b11f8136c449faf419c2d01a4b22dd94463d7ff7f6909d7cbaffca5ef27809b2cfd1c12358c807b908387d0ab7743e5663aaa83295f34fa0bde3b114c1dbdcdce1acafd0a5afb01cb2706f0672b259ca2b5ce731e8483c13f9d511c587264ebbbe95e716b2cf570a1af43f8df86a8ee041a4c3a94074a13244ab028b414b87a8d7d682cbfedfb2b62de4f74f2b979dde5cea17724e1408dd770bbddf8ee637a0861ba280414b705d34387f81c80d347034b0263b568aea0f1fc072421c49ae2c76667daa7f6765a57ff4b8216f61fae5b30628715b75249df9384a11dfac34fafe88451192969030e22c839e27b103c96039ab371e4060f18e544969dea55c100604fbc57c7b56865e1f5c694b1579ea0709656740b66e142af80348c1a826839636509ce7acf97747e54343279a1395301be24bc98eaa01af4a5c76e03d1eb04b470b09b884405780010d5773982655732989a86f32ba130199c60038df1600544b21553d3359a1374f486a30698f7992bb459f70dca0d1052582907452ebccebc827b93f7fa6a9abed8338ab3da843bc2a4a0f5a1b906af6446f387b2d8f6b3572d3aa52ffded5a41530608a37b40a029d355ca58e727d3831e25eed86dbabf998b8088e2daee7c704d7f9241516f3c52ac0ac960cbc92b9537d9395757bb6520beb8a14b84615127bea95d1d846171c02b8537e86ac42df6eeb49d2ee56a6428f16f7435ea864d855ba9efb15f5119686222095e24928e048335da478206972e57e3cfc717bb0814a7a80211f01f830e5fae1dc40364e91c50ebc3df8eb1a0dd4bdd521986f753f7c71cc00e03cfb03a4c13a617fd2dd3e1f9ca85ca6aac844977af506aa49c5c86c13f47036b752f428f1aed0db0a175ec09acc90df7b57c974e79042f81aeb884a42554b6e205bf568319546c6241f1349adbd85172214a5a52b8ed5e4a8ec6cbaeb42f5950768809ed2070c526bd50b9cce91f524ca700c70a9893679711b55eba3f25504ae8e2df6d6102d8e8059a69dee8a50df408a958070d3c60115009576b07510cfe7eaa8c3f2db6a308301854de8753433a63c4b6804aedb119ebba9ad40017eb63c3545eaa045301b0d96bd29600024931d20ecde301265860c83bfaf6ebd8fc94f9cc6eaa9d30f8a2aa455121788e13408280d815a30721e2a941cf40fdaf68a81f3811e4afd22012307f180359f1abcd2a137f088c597d4c36458ae6d56340b6ff8f4f1ec6ccd55a64e1098284e5b3cf96e0a1a941764b44290d580dde8f46717a5e12d30408aae804d8a7dd3d21fb5d56c7d869b03a3c66a881fb5f94649415749dd2066164ddafefc0487c69041e9af42af8db0dd48aa488ed642a7d8a3a18efe9e40b6195f2625df4897016ddab8c7d1810d53ea19f3ebc3ebdd1683e40c647e2244a4bf6c754c190af5787b1bd8f10e209837d4bfa70fb493d73d50f976b6d4e994e6908303dd128f763d3cd6b2f978c4c7588369400394e62d086d506921c978d6070da0aeefab82adfc56cb42020444ef792570555800adedf8034629f6d1cc0b292bac4d395fdd86ac7d18d672def11e64f90c61414ba3ffa0dd85f0f682216f51826ccef1d7a23b33b90d70494ca9171f63a671f91d06b053847d313be3acee57256ac1989ca28a9c24876dfb5d03dd89d61f50d19e760906be138c0244404dd2d0c743943a892057da56480522626d536e8e747e17d74b74239bd2ef06d7ec9ed9cf453120cc856add7fddbf526ba5b92ebcbbb518e3810c440c3cb4808114b202e751ee69e4a9d36111c740600060e9dbbd4101730795359c06eaf4104a2f14dedc80dbbbefe5e8ffc55fb6aaa2a10905a1a4a47318230fccc5776c98dc678611a3febfa70dbfa97542c8853212248ff9cd226a8cdd2f566efc0987787ce4f6332ba3993bebc28502a1929fd63d8e3043e75ad78ed6f87a6115390b73507a3db74f6e12233f449db09d36275e9f94161bebb4714ae2326604f2d306a571eed2716596ccb3cbb22a6977583eb3f840934595ffc28b043ea617ad75e507b41d63b49dfc86c3aeafe746463bf3c9d8d0daca3e3361face57a610f8db0338c5618d6bb318c4921012090752e75eb778e78bf2978d49b23bb5c1f3acdf66d6d8f0452f9cbf3ab5db735a016a1112c7e24c08c261215dc8f982e636eeb907d87eafc02762a4375e824a1551cc6750077669a7594865e407be6532f5704dc44078b2e1166fa1d938a7ce671ac47d84d62c76b40e81f27e4098e5cdb757f6c40b88d63fab52815bc0c36dfed807ac516731df84287be6994be860fd5857340c61687b2cf699effbbc5390b549dc61b02f89d3a149abf6e41275f5446884057e42dc9906d2b720bb4e29e15616c6f96a1734650db832ba7d32e2442e31c227a2b44cbd3c5b4584ec905328ba8131b94d434bdbce317b519b40c2adf2adb8505e4ee184654988b04af4f9d1f5c497a648918d1b116415eba165e644ac32861e351f3f83cecbf11e2089602ea5081ae6d2f08c12e523752785107c86d9833cd9fb36d54eb1eac4ebbe7b168b8fce595bce67c0b5f2cc6917766bd0029e7f00c6a3c70db05c0091cc32bba1efcf3c62112905cf8aa16e5d42be08900f2b25bb436bc3e8b50173ab95d25fdfa0a5f71cd0fa8b3f1108b27114b2dd07d08a6ff871f71f2c17046323ba82a03e5fb17282c735924cc872d2fb0e601a164be3278b7afb262edff903a76018ae2845648016cafeb86db051cfa695ea5b5800dfaeb44081f38cff86a746a9b1aa80160a638e1dcedb9b2de9f226da8c24586b81a080ed9607a513b87ae79a9654aea54803058e72632180d54583a0e2aa1b0d89f9b042bf8e955d94307dad7582df39382f6842e29949085d9ddf6a4f24bffdbf9880d1635024f0d563647c20edfd58f82c92564723fbad8b4c1722598f677ce27a8b0633d1e176ca890d822574700b1797130cb0c42396f1641124d88d176c45f7f0d0aa1b0d116814fc9627aed5a9b35bb15575b10c3b3891f7d964060f8290f822b28ffb8c06bc5429e1bdb4a65be95fb12169709120049fcd533deebb12056dec2c65cfc2c80118440412cd19b34e6977401bebdfb3bc383ee68875a0125998153d903d4df5239a16a2b587bf75cf5dc6a35fd01cb804059f684290f752c2dcd23b8328098393223aa24e9b7380d24a9a3f0a879539e2b03dd3d843b5fb89b84ace681ed8232c96b116ddbbf10a212c55058fc535d95a71d9a6288cb1fa36eb08f82f2e67aecdcd43b84d2edf2b0c21cc347476c07585f54b355f0ccc369084f0a8cfe9f7c4d8132dd4f074150834cb5ac8e10d8cba4834eac89e59faf5150d41127f7f3da37dc4bb7500ab0fd38170e28eec8e04bd362e0872118571e25d15dc50fc819caae8c07d924e2d97697d31bd88d982e36405966b556f28afbf35a634e34746270b49f9b42e2e2bf0239d794da4e2acaa9b3f5b6df923588cc693ad176d697faab650df59814318c22ea355d085c7d80d2996d0c7ac8c697e6a8fc0e0a6115a58992180f92b294795ba9463e91bb8aec050f95649800290b6715f45ee7bdd5219093ef7c70d1c2d1f3172e54478d690aca5fbe38379235ee0422e2875dff6b3508ac1e2861227a6656d79377d0b2e04d78adfeacb6db92a5055de27975495ec76d18cdc74629c1eb68c0f7d73e1a9f1d65366c32323d1107a058ec54674ebac2208387d49284a8c28df0dce5d9d02a2e68bdb54beac72bbe7d734b38181af23d9baf923def6fd221ae8c7bd90cc023535fd2826281b83818ca820ed207f59efaac027f69b89a23fc9e59ed8bfbac35cce63366c627aacdcf1d585a651cbff32702a1d7baed804d469de068884071536b4c8a226a447552f90892b5f5c0b0d02bedaf6981508d10b863ed2671de523d0d43f626c5099f22f99488b243b17596306ec5e176a994dec97035550567bacec5cad2e476ceaf61c875632883f96e84d54c141f784d4ea3bd92648b8d872d8ff0df4f30642bb1263c5799b2aa2b94edb9161c22dcb23218a78d4b9403408c90e2f826344a0bf4119c035ffb9620e225ca096f4bbf69913f8a020ae9097463d3ee490197ac9235eb36b37062860f9f1c6696c4585475bafefd2a361ed608651f8cb1a518b80ddedfb9fcf38e80067077986bac05c65a22c0c91c27c6665bddf2626e0f2262e939797a6c5f0ce16b44b87c5381a29d4d8299bdfc53a80eb8899d7fe566a02e28bd04c326a058d50812dd9be4502b2c38705ac63d5186899a1aa4a7da75f59b5666e99b979cf05c393b3b34bb231b9316cc543351bb03d7ef8fa967be9bdf2ec72459a59ccaede60347def1f368649abf50e31cdec0e201e3f585783e4d92154a260506dbbd13655ba6efefb2b04388306ba2a83450cd54386f9a3ebad69e1998aef9e9288622d6bfe5359349c84b56293072cd82d0cf13349d4bd026bf7310b48dc4eace20dec3526d75929ef345d47b02d3c100e255a283fe99114ab7fd548ea5cf29944b5235b2db49e66165f7339daff8435001a37b3a74a5a32c75157b3941f422ebc7ad5571613388811cc2fb73b0c73fff362f7af6694b3c6ab493452f6a6fc41ca75403d1e9ad0c868f9ff5df4d336ad5c022e516532641349574a5d901d1c1c579209a730433e34c7f30c6b20b49430ad0576aa54dd3c8f6d2f19aebe7313ca1e2980df0400ddb036b0bf56b0929d116cb784fb1dff610363086f5b3dc93516013fc0e4fe3ee008e88e2806620045f97d635e8097c15f3dcddfb3fb7a4373380b3dd01d426cce51e97d0aee0481bea5d44a3957cd7a056004f2435ffe35477287ec72788d519087cca9b27ab7fc1b2a0a2f75ea56ee1c93ede0390a4a3d2250ce97856b71e4c636e21ab03784065fbc70d342ae25ae38676cda860acf5f6772e6900e88159f365c4c4eb9fd04820c1ebe2c40b7068b6c784b32026958b29f7717112f93be5fa7ed5791e53c1820bc4228110e8c72d4e102115c2460a993eab2eec994e0c6b986f858cef0399130a2d0c2e960d3dc855ebf4a57e4e673fc351a86e4f95e24a021a57b74e3d6836fb55dceaf40e8509a593fdf7e84e828d51769cb294ae7895e3a86e982a1a6ac5f46804a9290dffdcd9081f7c7e71e6b9a4580544e1d07964c0e29ba110c2748a0dbc861ec8531748ea0399ae9689d96bf57e853effc0d798c3e037e160ca816bfc251b2394da3300d54083ed58b57269ef6c7ae6224c26dc0bf0c5c56902d8ef8eb066ef2eb603bd219ee97f5586c872922595fe77d2dcb9510b84131a3400044057444e51898053a1bd84a854f09c42e7701174dfb5612ff1967385b55cf9e0682781d12452fe075b04cd1413dced7c52b60e597bb53c9071d149f7f198b3fac95970a106a5933f8cbd6416f6afde1aaf09fdf37d2e1de30d7332b3283d7e7d5ef2010c611c463e78738699355a98792f0a66fe3f3033aa73b9428fd4b9c9d2207acb8c4f4f5ae04bf768b00e7cf65b4f1b29b9cc53f8839747db9cfdb48fa9526d38d57f10f4589e05f832076ba5e941c03bafa431e94a33d05281cc9626444723a1933ec87a3582a984499e1c01a79745d7adcf61cea84a45eedee0cac958300f361cfc83ffb939b92e63b7020f1babacf2e1399c4436c46fd1059e59aad7b458ba4f89f6b9213fd38db6cb81ee9b2ce5bcca898ddb9a5e2f20027fcc3bdfc073af86223bf641c9afbb3f85cf9bc5d7416df2e92c9f39481b8a62b35e0253bda1186836ff162b58621d934836ad1ee9deba36857e1a83f41ef010a109ab5c9851fb316e8d15fb795600b946e9bb4fe5cb0446e9dbac277f2292e883a446fb4b393a11b019c1ae1ac9fb4789f61b18b15ed27d8873364c4ee8553286261344da980d2295b7a8bbf4db7b89238e2631c333324ac37d5b2f1d831a96a7f141ae3bbba84bb32d337b31a6f98566492cb12e84cac3810651e80725a7a5484b46fbc074255f6110ec6e349a0222556761f6291d1913a175e80b76c8be6c55918ba6ba9f67b466c6e0ce98644fc645f6da538a6230cdfc1975778c46a1488adc089821e5f9bac427225663e33fbde91032607355976876375ca4a98f56d1d9ef977619b18e45aba296b9ad9d431eea856071a3874933aabb39baa53ecb6507c4a6d87e5ae4b05ad33d983b15ad95a2d38db1f5036c2c0c1a786fe15ea6dd02bcf69caf65b9385355f72f73823e710334f47db116665fee051937ad19b836b36b843f5e44e4c4350c0eb6618627f20da3c1066be231c18618147e32ec139ed04765fe14efd99f9d519a11fb61c83a1a5d4a2a105176201eb10a1dea7826837c42df0df059a973778b694ecef96ff10e4918f0428ecd81e109f0099230ba0671b25d8caa1dffad38115790d167e64c1849bbb2c6c5556230af1acfcd5d3ede0ca90d3d0ccf33ac5d65b2d59f137962c189cc7ebe511f50c938f536273cd40b816ec22f639bf02ed9f1bf419b2250875966463998f86bf8546f2e096fe50b744da19bbcf1a5ae371c4ce889f2650a740e53bbaf1fa9296804927b93c70f1d182a8ecd4f9665287ae87b5945ffa5e62e52ad7812feaa9c29046a856203c429b1e4eb51ed53fb03d82e311209426d194593b68c3adf0bc535ad59ec3991fa33b00d6d4fd7c151e68ef40aeccb78fd9fd122c39124bde40e94b2028e16eb2ed3e44ab17670741bc5541316ed264f847cf221103607b2f1678d6d0227f747e4e8668f8ba34500cecc66337571cedb40c1324ab4951fe15b71ce7356bd3911022741e2446ec3037ab0630e97288e1561e2f71705c8fda167cccb044f4eab61afe1c6acf700d657bccc7017543837f4516343e9e71a5e862bebdadda9a2edb13ac572c3894bd3d75ee565829f9baa76aa7891aaf1a40b7163a97e07bd302209f98f95b5628a2f45113c1dfb781b4769be61dc0582c8d09e4e446dce2bfce992404923bcda111c42e64c21a20f856fe8200f93782f6aff18183dcc1a0dc1cf16b7180ce1504e8b72cb68d90f0d4ee3b6b9bb99f0cf92b7f9ecda7e0e94c6845ba7f08e5c328f91ae7614076b8bd6d9da48ef16f9a29d5c34a0b4f2a82d2d92e8907dcc0ffc97a19456e2e2413e794a53a0100bcd11cca2087c32236746fb3716f0a9c62b33796416720064833a0cb62fe92d62ca463fd5ec128234b37e9e518a6a3c9fa3b96d0d88fd3015be877ae4168871932f558c52c932a610cc03b6683c95d49605d2ebf2d75d4289d0e88955133c34b505ef7294bf293a0c171f8cd5f5930c0051bfb62284557d06f04e4364f368d189b1bf6aeb04f00ea599791389e3332daf6a701a358d2422f9ea68468068b0476085094f98464bc305f0ae6f44f3d2adf0f4b4a8912ed59932b10ccc8cff76c7d11049a6fd1ccc0e28f76f5b861fae068041dc0fc8f16a14e7f02e63b5cfe61c622ad2a7092de1fb57295056ddd9e5c0991d0629c9894bdd30c1ab1a0e12b2e661d25ed5d981498cb37eb2768394f39a492c4ba41434ae1f660e9e20005dab853310707622b0c019ffd0a4e28201b8769117f95cb0acb209514d7ff9bdc2477fcfd1b8ee140b908982c6936b0bc49835d177b24e6f80aa40946cc69b85cb61c1fab107776a2825b8d3a2b47a91ecf32d51e2f2c247cbc852b681af9cebe6e3ddbacf4ae40fd80794a810f8361399b81a1d8be9b5a615196930ebbfaf09d16b91dac2baa8ad96564fb305cc434d966545a4bc6e8782253cddccfde64bec9b503320539905d555b30e09bed0576dec47bd8a54e0a9d63acd2556adbe217eb1d7efd03a615decac709bbc4bd5e4bccb6b3ed5e8a42d9d08844c3c647f95bdd75dc7370e7c4806dc4864588a7b446b456dfac8d92511b1082553e8f2c3457030aea4424429e5686ad1606f6e119884ddd684ccd05fa913602224155d2bd2642e51caf24bfe2c2254bab7bf56c324f835adf74ba4c7715e1b3e88a949db7b28e335961a76402fcddad420538d538415f50eed8251ab0a7f0a884b535605452be2cca302c6042a24950f7433f69553d2a860757aae2eb178865dbde4ddb1dd11e757cb2c39c81ac1d76b2c94c7004768786a8c5c94ec273e4d51ffd226c659a967c2a05da5d01214079feb612673062507ee4ca0a6577ad24c98252850d9c024ec17264601305ceae759132f9c7eaca1c172806379adcee3e8a3e3313126eded019564711c9e7c84f27f853d506964992f96a3e5a817831a8dae5e15f6d52b7747ab574376f2bb2e0acd8fe01fe2e1c2ffe7c08c1d677552a1fd96b2cdb111f3d0dce3465938d25079de769c39c642c0ee805eaea7306fe96423d02fa9566e3fd4090a6e5a4a054a1bf400bf7543cc5c001f5a7e6017c64d90d112afe7b26e5ef7625cbbfa5b8269da9f6ab20044cf771709e11d5c2603329380de4d5b5009af874573cb3dec4d00bb34264881e1404240190b17c84ad5d67c6e4081426270beadfc6a80ac8e0e25d49c5c7b11c14d4f8d8aeb1c4e9ec29a1d8f68591c716af9cb803bb5bffed4615bb1b306ad3fa31db16f7da7da8444a70409203c92168270fd23c018f1a40877ac1b44744c8370a116406a02571919b8faed40100d628c19c55661d5f4869c7a24ca0d87e2a7ac55cc52c4fc7c40ec9b1ba40137b9d71589479dac73dbac12a04d29fb1e1960a37937c2871502491079ee4ee98a375b6ec9740ff6f3ee9257060ccaf5ede7bb1fbadc6a34634caf92331bc895ea24b069074aeb8b94642fb9979db6ada8f76198668d43ea5828008cc59fa8f30eb37bba08b922556ab9c2c024359c2dc6ec19678b643a5a8c4ff4700562a18b15a1553b63a40c7014ebf125341100a453ea14685cfd218df9d4791de3fb8ece79fd78a362c529104088e8a5951ae1fba028ef7295696f20aca994c5514b90f3f94c9414dc42a36d1bfd028394d2545d80fcb540d99a1fef7fa349eb516fcb2d96dc25f21e1c16bc424beb1245d33d0229db7ee814939a6a4065ded5fa483e913ecfec27c14474b88813d1cf5b06a486a49dff2f41052f1f5903b2eb406c6615985cd659d2b3b3abfbe0442f7dd3c33c0b903f3cfe6839d9a9076886ce568cf089696d301baf18c17a65509e72758047fc4eeb7cc1e4db1f10538e362b4f5a25ad9ee2e25780a438ffebcc33d54186190a0d039135013f30c9a8e6a943f4842d7f0fe101103a68fb8906f6f9ee26504849ef3a60ab7bdc7efd3f9dbf63fa0a8043dc03603165bbf3a227136a48c8f4f7a978a6c05b5e6a890ac0564d43055e22d5eb132a00986a76f83e9928578f072f6bb3aba3a7905f2eb9cd5bfc725ec114e69e475d5127d22f73b619a3880906de89cb87451dd7272025e4250582bc079b97ef02989e06d973b6ac7b8eff4f3d8f765ea5e317260e6d5b12946ee326e1dbf6b2a2d0de9a4dde0f390a35f198302d5d963a7127b83d532233ee021aded82ae303fefd871b146ad45eb63945a80805b555154e7c4088eb545ba5aca314514eb9f3cf384fa85acc8cf27dd7bf87f337e6ec2d70d3a5d976586828e40de7f614db195d4a29dbd536f38d548121715f4c1d6b75e49b45b912d96606240b0922ca63e80ddb1d599718c46fd7e6df5d9a3c7382e722bc3b046a316b6d14a314818eb2288f32dc50e1a1179791afb50f2437d6d9a4bf932e2911d6f3ddb0a7e024b000968c44c8738f8eaf37ad7f9bff93886ff317b6828e2c1c81288f8f4ec0b986c34c8b63071403c7f72a2f56aebfb27a0c4492d6107e91185c3037812e72fa776b2d296fe619b06488e3eb880d2f574a7799c1aa7186a1398ce4c518f0c2a000b37eb3122e4c6d220d61adf2badbee3669359daefc311313a9c8925339db6b62335b80fcc53c01871159099e11578562548b38e1e4cf75cbf874f64af01e9f5e60c0b4fe5602701b289a5ef8a518fb71167c28de281fce9ebe7d200b8bca7a0dbcea9138380e550a7fd40132c329351c733c3c6f21066ed43d19dc3fc2ab8ee6e986cfdc2d5c6bb234d81cde22f1ca6f674c32cab2b72a232aa05ece2419f4c6009f04c533b6d74f7a3bf60e2d4ae802b935edabeca00b5c453c0054815470ea1f69a5b7b224aa40d27ef88dc575856d175f96e5306e6fb5ccf3eb953ac1fbbe994ff4ecce3ce7448fc29980749691f8006eadbf80c115e4f3524011f3e88deb867d1b33381980f8af90f551e21b8758addd274dbb4ce4c0724dde52fbb86460f927501b3ab11db79f5e7362ebb0d896ff9a1ca423c6ede30a61408cf93021c289363220c090716780f704b03778443cb2f69d55acdf17ef998b6f849693713cd2d66f51592e230bf246d06565745c46cc58802dd3583d3128487c25b3fdbd221a25d01438fa89648955106366bec4c254e7402cd9ccb19a19b1a70a3b5813c795c1abfd5efab3f759af6d2ea2cdc3255b0019376f99c1903a0d6c94ce6f652a31c061cbe638fcca6b1aaba07d1ebef760970fbadfb6504a30b62689fc5802747e3b7c677b455eb50901599c5592d584268358cb31e019f8e28ff6f247b1fdb4a18d5112f76401b3158022cab1494cb79fc3bc89147191dec29955785a68ada6026821507328e4e38ae85a1355141cd79e118d1713fd9686ac1e67ba3173176b4c70878bdd4d62883f48e0d4c7442dca3a3f4c5f453b8f8615df3b99ebe285892a4909242f25da0b1a968ea134df08ce5255b70db6ea1aea001140ea6e28a59d53a5a6122f539744d361456417dbd74b6686dd93f1546bca8e16f691d34506b802115bc3b22c4d71b4bdaae629aad25561e7746c3cd11d8938d9ccc29accccda95120338026598919ec4487eb6d5ee3521fa419478dea4ff62025f2389faed52c0b7bb46cc09a4e6cf480b6ac1fa7a10c46b744aab6508ba7cc8c1a60701125060252e8b5ee602b6b8e156d506321442ec2ae029b57f881a6388561a9ebc064f1fcb6b0acabab4e6df5572c7243bed6727c093d36442fd69c07fb9fc8348975e8eed7a48c29e56333ec05a7f86e067df175922ec4bb365971ef362233f981721fdcb1880f3dad821671bd5aba306d8d33378a77eede2fbf6015a01172430e16e3633acc9cf0decde5e430454d6161a24235f1cf42f0857aba0aba4f363a9af85c3dcdeb067d88716562b03ec4d77bb16872307fbfa12f37585492262a0188751dc6b8930373184a03f6a5e39602f8538c7bc0464f6928a47bd69608475ed8a802c62edc70ea50f6bda90543903c5f5ca389a5fe91451a010dd45e7d11c873f86c4b94fbe5af2414c95eff960c09d1ba3ce4c1edf1ada8ccd8d500ad91c617758d3f85474b3bdeb9ac2a780d0ccacf7099e84b26618760a7f122ddf5883b0e106c9a05f136833d9fc12e6dc3201d206107b09c254fa7a4f7b8d55a48b288ff8150034a3f63e2095f9465b939d803ec66a44f938d4b56abda57f5bab7f07fd653f56c1bf0cda4cdc2cf6bdaf12e508fc33d920c317ea860857a3a08f364f94fce0e007bac44942383d97ef219c92596013e7ea857f35674db1e6b124f5f1d5cd2a399217a4b37d3e93d4e56b318e10bd14a0d9435797d25331b180be34e5003ca666d1c892d119dc8b00c2394b8470ff79b04f1c36ce2db3b975fdc880c7d9095d810e9880260e58225e443ecdef7e11d93ff1f265de55717c82920cca981ab0e55fa2434b46031d7df7f2b5db934a7ee3d847074bdd6f59b111ccb8970e0de8ddd82859a29df511d12107feee38763bcc25931f669d91e16d02eb4a7e61f4222a85a21b8cbf3764be7a55e6dff78da96fe692489a3180191c5f27f54ece1f5c3f998fef1c5ef9cdf499755ad7d972f11518b421498a892d3d0f02a4fd645764f32caa501898dd26f09c90dff2217cbca54572b41e9f422dde1ef6a2eccacdaefb7decc4e2bd3f4697de3ccde2488299b250be9662c6d7c0baf8eecdc01453ef1ce916f5218b7abbfa400ad1e38b1b34ba54d8659f100d62ea368fc5f92cf5b4128c432b50504d406d760105ff483d7e1f7a06d01430e5b552a98f464e60d4d133edfbf5a981c52bf565163ff81b10207c3ee85cc6d3afcfcfb71878cc1c4c203843744a146cd937f882ff79d6fd9ddc8464a5605b03590fa51deab21749d9decce17cc20600d85b9d02a0e5b0004389b96905b3f2597a1bba506a91936d57b474168a8080fccfd24f145fec3f1ff221ebcda7d5fe38eaea33794f95b265cf7d26d365dd95a7b2dd272c1ea7ab3149a6a0f068f771f5ad845339fdd78ace24f6da42a60afa12865883a7918f93b5b695beef9900b83d03f2a0460f50ef397b3294706190770f8cd840c61d8a89742d58d1cd1879c96821cadc6a065e7ee5cc45e32c9de62181e4737bc99dabceed8e052994c66d9b08f974e6193e9d08d8babcfa040c74a4d58a817f86ea11f3f9288fa91be3c8cfd847b42f74d2e5cb2908b072682404812cd622ec6dc8c1dc5befdd404ede25d1eff0df141870e471401b56f06964da8bcb5c25ff00a8290fd64c9f3aa4250d6dc430b47770c673f6ddfc1b4ec52847b088870222947568bbe9fdf49c99214c1847a0840897df9853593da95a6e859195e743c251b83873d5fb860a7c5a9830b54010513b8a47c83d18755fa02d13883ab14b60b5c5576c2d9dc751b3bd3f4670fd2123983c624e2b97cb850c4b56c85c68379edc2776efdb682a3e50574765b45d5165e8a7090289afb772d48771a1d35a60df739ed4e4871b99ffe95e22bc3fb271ef831a8d183fed3f9398d8ab926798c48876308d878ff704f4b2daf08392bfd99a3938723cfe78f05e8ee3ed694992c539bd24f826766eaf15ae1f72f3545e7eea45767a64a506bde436f536337754389336d91f8003fceec451870824211631577fdfab7239f5221f4f959e95ca8db3bea0031bcfb2b9b69bb0acf89adb5ae3e85efa84f5caa7e84a5af22f49850582b621e8954042524623f61af2c20662dadae729398fe710487fc586d2a2ca1e3151b1a233df3841a90f69b133f7c1529957774fdf505ca804f202582613b1cb3341dfda9c3ea3eec5b067cf1329f4834592a217a779eb28a4a9c773c71716ecd8917a76fa0d760bd4a838fa62dd0b2876a2757f447622848c18871bd94d6b0eb7d0c4fef3b7a452f8b1b46516248be8ed619e67c87f1166ffd8ca8f40c179808b2a86fd628877b4a8e4f41cd05d9e0b0d35c4659b21cc7560dc12511c507ab4589900b07d7b5e3f6e27d428773bd44a21d400b1170391b552900dc4ef76ca0b21a470eca1188438cffb6794b638675b3021099dda521538030a4a4647315f82c1c901ef6ea60a897d6ecdd144fefe0c959a8e41f578305eaf2aae00211dfc4ea1e8700484c71f6a25cce80ab3a841a9ff4c5dfc334e1cce5cf35709107252a4990c2367b654fb89612989684c5902066819f49585a9148b052116c43e9ad76e268a98c8de63ee9a714d8f3a256a4d426e620abc4e03f86f934f7d82e59a1947754685bf18be0d43ccdfc6a5f5d28d82c6f65be024a66107d6054ff1bde0246a1562ba3c94eb9987c86c894c0c02a45361216f810e1a3b7c98cb163ed352c44c439b7950f53759bd33e492e609895ae025d214d141b3a2230a78623ec1b023ad7b77bc62bb86fb9dbbe02448710dd0f746515cb6be570be8f2996f64db26d6992da5796fe8894ace0b3410b8bfe80479269f7240bb9b788d6441c08628b7c7887ba9def329eb24a090784b89cf4b0b706e126a699bbea6fca52d0522e0f7814c886882783636fc8085372407700e3658d64c0412b7697688c2a0e73c8991847d9aa08c8e68644e4880137e8027dd3b8a1e1eff41cc77c1f3a813aba7f0277b639c6f5fd278b1f58c1615792db173c17c1428e6f132d8c34c59efa520235ca3f9788254ba977a0d19582a9d6535a4a8356d711e1c3ea004f68ca72adfee186d70daa8e6ca144753b52acce2f1f270010e99539f1523fea8793c7e83c4aeb1c187ed5cacaa0ef3139d975fce5c94b85dcd16e5ac641ff0d8ff28475db2c3253b47053eaf0c1d4d03cd96ec4496301dccbf99ec338da2fc81b17f40571c304df64510ea8de0644f04291420acba3250ce93a35ffc2c21c519c3c0ee0d4b01ae80d2d5ad3e39e509710775b26c2b41e5c248381fbb05a1573a0b2be999a52a5d5ad2e6f33f0e387fdd894172ce846deec97bf6ba2ed6eb8244f6229f7b96004effdb412fad5b91d6fd87fda4cb82444fe260d58f98d3357495ed8cdd090c7ccaf04f63dc73d38e38323efc5474d2213b7a0a44497da5800946d58d6da3e2803ba048aa73e93760c262c33a8b23a4224a9ec11288efb1b01e07dc32d7a0d73365e90141b86eaeaecb9be083eb45e648e003026c5ad3d54bae96b01851aaf565a370b6a0b69e5aaf7424d7d6206d36abbb22ee40430ae08a1c9e33e0ca599709b6a3b7cc1aa4898c3bca704f012c01046a3dc3a7582018564d07f173b09be9d6c02f57728dc798bc69fb187b6732d3649d861e3542dfc7bb257b4f67d770ff80015c20969817efd16fe5a43159eb9bb12cf5126f7252b3c16bcf5ec447f58a4f1d4d76db7bef2de59632252903360a650ad909a76b326191cadceefefea04eba747447a61acb8ca1dfe1bc728677be8b9a37a190e95759339fcc183a9f4e9bfbbf9b79badf7f45995b0b95f829e5f264d68432863e9530f4c7ce557c1f61601f676aa67cd2d4a4dfb9673afdc53777378b0947d67ec41a4ba6ad7df77744c9b7a43d89ac1744793aad9abd1bd779df08a44199e68e54c34649e5060ed34a0e1d2c2d3b7874a14769a84f991e27af430de04d4d562dd368b3746f5559e34333a63a6cc6780b366bbc1fd89d1e2b47852361ea733a43c818efc75341aeeffd589885d9278dea0183f703083d1fafc74bf54b4de120d65d02a34020001e046178b083c16030d0e5c16e36035f78b06bb55a20283ed80d0d81e183dd0a0441f01fec8080401e0f72b3d96c06ee78b0dbd9015b1ee46030180c6479902b2a02753cc8b55aad1698e3416e08e486c0950739d920089a1ee48080401c0f6eb3d96c06de7890dbd901551edc6030180c2c3db8151581361edc5aad560bacf1e0363463ea10487a705b812b109c0f821b1078613018ac08bc45207ef079e899edc1df41d274ad560b7c245d87c02f226beed00a5c812f7b05de15f83de80f0281337006ce40f0b90b048276068277070461f8868000f0523018b0804117d80c0683bd3012bbd650d7ea5a5d6b28d7fff0fb6ed50175ab6ed501e5fa3c78783b66ddce6c36eb7672fd1d2d1d0bac08068315e5fa2d3ab81c5c6b886bb1ac6c266ec501712b6ec5ad38a05c5f078e7b639b713be036e3b6d98cdbc9f573a8d812ac6883711b0c5694ebafd8d06a6cadadb5b5b6d63694eb9b4858c0358fb6c9b6da80b6d5b6da561b50067f9a40101447192404560483c18a727d1c76bfe1e8ba4e1c7ffc680db55aada1cedf0dd35d5da0bbbaabbbba40b9beab509bbd656133a67e90c7f27c3c9587e30539cacbb1309e57de715927e4fa3eb4c0e39dddd9944609e0a94fa32c8c2ea14001f89132c9a3d38f9e2e216b6c91cbe8298fa479e1474f538db22c1655b1a80e8baea6f4cc9b216baccb75461e894f1a655550a214c17a26e442d6581f9f260c491a1ead4669b15850cc3562f9d17b14b2c6e2b80ff2e8fd47d2ecf8d1fb4ea33497cb795ceeb3248f5a7ef4ce0259a34181e22ec8a3f71c49a343d6288dc59ab13cc57255949e315941d668424261c4244d8e268dd254434f462b57c81acdc7070b21498383d5a81a8bfdc45aa36f9f9e29fde8bb0959a3e1cc983afa1e7de334aaba5c9de3ea9d910a1ab2a6428192c614496383a85195c58ab164acd9939ea9d185aca942424f80491a12934655954aa8c908fcd1cf1fc89aea3363aa4f10f2e82790a4c13f8ac5664f8c35e26090473f8f903515c787465197bfd4774d8122258f1e04b28642993a92a6fbd1f3d033f347bf83a4f118261a3d92465196bfd417d2228fbe88aca14233a6be14c24154a3efd128aa3ad233de8f9e88a4b93ffa53cfd81f8d01c8a3c7389e619035d4c745d2d01ffd6d94c7fca5fe68843363ea8f7ef438be21a3a06c61b62800a2850140b43018440b73118b72fd177c8881c1b72c9765bd6559962bd7b7218e42abb23e56f5566555d627d7afc1e36389599c184b2c6671727dd20eafc505c5c5e27241c9f5b18ecea4b1843496496369acfa600e6e4553693e9acaa4a93495e693eb8f706ca59886132bc5be58fdefc655714119b94aaecf0525d7f76cd81a95558546228bc512caf53b920656954f15ab8ac395a3b18a23d2188dd1188ee74e0c4cf3689b50171497cb0525d79f9b38fec8f5074b88c562d5f71bfa7bd7fda4f2a12a9f5cff86f46dca5696007801f88abc70a1961b07b13469e512e613b18f28d8f327a9542a05a44fa3b014545fc60b7231c89f389143b1b3bb63677666677767c54ea19e71354a00b864f2c249d4a7fa3dc209a55fea77eed9f798a3eecc29ceace9a6cc986ac238966b3725d7c7c9f56948df862c1ececc519eaa5fa6cc1a2f081953bff6e43abb33efce721542c2d41fbb2ee4fa9c978a82e97b41f74ae9fdfce49aaf6dd23323b643f6e5212e35eae56bfd77e9acc785357b6b68d678413366e5282fe52ff5316ef95076cf57eef96a95eb8f5ebe7379d2be432b4fda634775f245fbfa5ed0ac2db96ada8f9d472f28d7e73e1b3e772873bfe67938d7495f7e53a433e0fe996b0f20fcd1327dc2383f018f4ebcfcfdeef67479ebc89f9b437daa2f8070c2faa57e0f592934f5cbbbc8649ae73765b2977254c974fa9acad545fff6885cba87223ad9012c877e5a597b1d46b4af341cef6f0bd07e1b671af9a6f1ddd4bf2198ade860a6620f609e528c6459238013ecdf239d2eeaea93f6429a004bc0a37d656d356be66bbfcd60b4af790409e31ab720fba2740b72d4d6b305699f235301cf9ecfe5dd208f5d0a88f2e79a50c0e3e7cada6f3dbe6d3d77ebd97af24846451794a7dcdee427ffcd337500e8497b11c0f63da976addb2cbd1d5d89b9755549b86403c70d1cd6237aa5ea743baa8aa56978807f533d5bdc415bf39b8707d694a37acb3bbe1ab4bc8957c2c8882f48397b64f91d0cde9434036800541d7f99bf5ab1f26cc1f07279410022f7f77ffbfa0db9dbc6fdb6f1d0b6991d5f6fdba1bda6f5f09ce6b37c7a7a011e2f4c0b0fd1070b8f1762643c3c3f47570093180003fcb81183abcc94502dd6134b24677a6249eb67c913ad1f5f5259354212ee8090b403601af0e768e6a3f17e8b570d118405bd7a068c6d2167c03040582c8c9718effccd3c22a534efb351d2445ce3d146d55455e51eb15649f09c90c0234d8287d5c39304ab876715e41beb113b2b55e89db79d23f2ec59d111a7ed646e3ecd1d02bc3bbd4e066f06211eed93477b86f6a9b3f12e8bd4fe7e27f30db9281c5e4f8027254db55f32bde7fde8e58e0bca1a1794c79a7afb3e6278d49efbb1a6aebfcc37c45e2ec44028ede873a1d7791488e7d1d06179ef6f9ba6699ae6afd5ab699aa6bda689e3f696da986f48a5dd677b80aeeb86f82b571c28eee3973f15284b39d6a0dc35617effcb4688fdc5891a8f432178a8f15d8db0b2c2569ecf8560585355f5023cd6968f2c3f2d84d1d1c21ef9ceb7e194ed779aa78502c81ed67a92011e2b509e9676aee228811c4a1b2d7cc9a4f0d6d03536cc2044bc1fbd6dfbc9daa74835c030c01806b5f707618eaa214a9278fbc158cf804161c819f024c120d00a0cd297f986387d04500f6fee640c00607079c1074c8f0188e1f3d8d1c22280975300aa92af9168d136b8e8030c1f60f8002377a09412664e70488ee17e1be86ce9f3d5cdc9836d98b023271374f28cc0f6e33a79fe9cb36e2a7f991f8bc96479ce394516a5de5377eaaaead419758de53d55dc52fe02b3051e7d8795fd7da767da79b61f2f42275d464f969dd2299330b4f31f57c1dc8b207294bf9ac834894c8fc83496a92cd3173b716bbd1cb579ea67b2cd6379d4883422c7af1165ff6ea84fb03ef9bf248cb7b2df7caea236b469446ee3c16c81476d28fb8f5baca936a4f9f464750a52d3acd5ac464b5d4740b328c7a0b4565a297d2728a52f3cc162a294564a29a5b9d64a2ba54a9ede80a788973195e0b1a38545478e15138e1b160b1b3548181c65f99f279fdb68183a78a4d96add2ee8640f00a8bb33f0e875b36708e827bf93a10d326f01edb5cd5880ff57eb7711ff4fd4514523d56b098988af44b54cbed0efefcf91ad807598e3fc29b64f27477fe2531c266182c023f5d1a1df871d07aa333a4cbac3437b24cdf77404fe68f45e38822391aa66e6be9b6dfb29b3aa4f74be90ee90ead01cff01ea17d5cf193cf251f829cc9ff48bf4b0737f363855e5f4cc266eed9e69741869aeb6efe9047edff155cf542cb6ac653ab0e88e539f964df166ceb383af57f41579c9ced3273a9ff489cee953fa44611286eae0efc3ccfdb4c5c4872069bcf07bcffb1a8e9fe889d4a74f1457569fe8bb48978c814767f964faf4a9cf48bb88d53372d634d5338e6a1dc817fa3eb842c06d85a9b5c8f451b26778329d53bce6e9991e097e43a637c9b4e44be8744da11994847cf9b96275d6575de43b6f92346781477f98a4b94fdfbb9034db53fffed189e6fd6efa67ff6f46fa7dd4e1a291535ed1a653d2ea3c3dc3893dfae42887f50bfd7b3136997efcbb7d7fdd46875d879daa58ea13b5b84fd444f34cfd302da07f7efbd73f42439fe69b98a0a59ef1a7d4ebef4127a5cb2ccd2642fb0e002ec023ce8f2969be7d53901589224280ac693fbec82019cb1fd8a14f9afc1ad297a10df5299dd53fb003119309e3232f29d794524aa9e72a8e40d06f0827eb3784137fd0e99ad4b8a79913257df92262e551c6b2f6f635bc83c9519a7b51d65ee3b80164c9451044f9fefcb64df4b49f01d39f79bc59a35226044a29a594babb53a71b2501f1cf071698524a29a5148949a518feddd04a3dfaf252d95ffc30fcff6f697916965f597993e95554be547a12e9f1f7bde7fdb6fdbd4fe9d7b7e149e9e25ebadb15fcd50565df5a6eb159c3e9e86cb1d98136e4cbd49127c5f11db9d2f4022b7568c7b5389d562b04a50d79c2215fe8e872031ef43ba224e7e941a1a8a7675ad99f63e2dfadfc3b9e9e999d8f3743cff4a3519690a8f993e4477a834ca1a03f68c08f94496886444d18921f69109916418f5880e542a23a75e447f7223b155c8c223f7a514b1412d52c223fba14d9a9f02c86fce8af47f58b861f3d06d997f01be41f7dc98a1524aa67427eec31729be1412080e50a89f29e203f36127273d15e1ce0c786a2827217901ffb89dc51b4143198d0902897f510b959d03120c08fcd4342d1717e91a715e61819a624e7d044c2bc620e21f7cf1f48140d82e1c7f9339f984de4990490cb8f3347fc710ef1c28f120db985dc0f821bff456ed9058f1fa51354ddbcc78180dc31e486c94d02619097bb173be0a7013f4860370c58c0841d31925240aa488a45846503ab06d610d68b8657025e36af97906d350b52d343d373801e171017ca35e38ac1f5c300052080cb6462563e5630ab20568fa001040920e825e85e8c4dac988b8ef8028f1c3a6ed4168f1a443688461714c78bb1a6e291c76ed56ac2cb15e4b29287096bd4278761e7ae85d3e1018bebe1563495639c0ab8d44c1686e2e84f3eecdc1276ee5682a2007bb95a2cdb6a0bc2f6b3b1b69e961671f49ddc7925ecdca9c836176caa2d359399ae0b0c22d86b65451cbb499e9d55c2ce1de9f614a1f5c36295661789ab735537a5a2228e8d936767d24b4a8c0846842dcb6261836ccbfe9048e23899e4d9f9b329cb845d591dab9aab0c2b431623fac4511675dec2ce5dfd51822ba8b5bd7c85dd4ae5a82e89aee544143d4fac9ac8fea326c3fd63b7ea21619afaf8063490817eda2393438bdf4f5312356118f891aa2ef023d5b1c08f74ca0f1cfa894475aa023f3a140afce85126d02ddf406ee81d2d896a96047ef4a008fce82e08740749d2fdbe2351fd7ac08fcee3801fdda701bdf22d0449e7904954cf6e7eec19037ef4d402ba6938d24d24ca7b8cfcd8430af8b19f1469956f22447e6c2c8424cd0d9644b9cb861ffba7861fbb35a44bdf47686894cb12f063e7d8fcd83bb949df4884740d2289a2ab197e9c31197e9c3204fc389f2409d24c248a06d5fc3885687e9c4d0ed0dff70d33c681f44f204933fafeb992281a43f564c5f0a371f041a22a017ee26403c8fc0802599303f8fd3cec2069b8981f654c12c13c12d9a3bf88ace1c04b901fb9bf874471ad233d73bf9fc8e9c700bc7b86a1df45d2685db3c38cf97ed337a47f36a0819f0cc8cc9ab9240799cce96060c22e306116104793ff8f59335938885bac02290aa42620029935d3e70620128840b32020069935b32749906df50071bc0e1047ecdf0021b366f22011c7f62bbb11c7cb00710134cc9ab93a225e97911e05f4141147933f9159337788b85c8eba3d36b86a700d993553870671b4b304b8ccc665d965d91fc9ac993942c4b1edcb5f6658c9b04280e89f64fa0719ca6e5933e6289b4acd18ff9a209aa0030401815d9438de1971c431883fc4d13598bfcc1a20668cbff6336b4a3063fc0da053001d02e8c88863c7882d1fe288fda78738b6a6fac0acf1a1db61d6f03063fc5bfe2fe2a967882a91e8224659326b6acb5b4bc2300cc330ecf0e58d18862e2fbe8b18861f86e14b0c670e5f43b5858428509e28610a1797269c0e8bd3e174381dd60bffffff1f8661f839be9bf0ff850fff85501c67feff2533ff929f275c412daa8330a4ac17c2ce62cc27168bf9ec68696969696969f9ffff6f59f96ebea525fcfff0c571e616b1a5a565e616aaa2397408ea4355f04f71b6a09ea0a0a01e1e2c2c2c2c2c2c2c2d2d2ddfd2c2f2f2a68585e5bfe5bf451c676661616181c2239c99054aec8b3c3f35934da1a5858847d879c78a8727c7cacacacacaca0a0b0bcbb3b0ace0f86e5856565a9ee55b58c471e695959595a099573cc8857c084f869a781158589c896c2593c9563a4c2693c96432adacacfcca8ae9c677b36232b1fccab3ac8826d3cc26e7f11e4fc25bfee32c57626545ec9ce3ba76aeebbaae6be7868a8a8a8a8a8a8ac9647a9349e5e58d494565e54dbf6212c799555454546637c299556653b6e0398e5386c954747b746ecfedb93d3a384aa552a9542aa9a8a8bc8a4aa9f4dda8944aa65779934aa9f4a55269a8340473228b116da1a2f2c21176be31cb99cd663935482412894422954aa52f95482f6f4a2492ca975ea5248e3393441289f453239c9914365043d1a4859a49f3a054ea252fd5eb655f536503638c31c6241289846b7c37248c4b4ffa12491c67c618631badd345346bd546904862e71a2c1c168b357146dff77ddff7618c1fe3efe50dfe3ed2e327e1effbeffb62337f33caa442e3cc29b3688281f1846253336553363553a0e7799ee779dff7fdf779f8bbf93c0ffff7f8f3bcf73c4f080c67f6a6906b5241047b4d2bbe6f068161e7110c08180c3685dbb66ddbb6cdf3bcf7bc0dfc6ebc6dfbdefbcf13c76d9b3d7389c96402cd259309cf9b3cda4f09b41fed47fb9975f7de7befddb6edb7ed8ebe9bed5eefb7f7b67ba7dc2966ccd5d4519d213b732a1f8a28a594527aeffd7be9f7dd5c4a29a534e4a2280a94265c2961881cd5adfc65ba49da5a6badb5523ad22c6f68ad5494b5fea83ffcd5f5643780949130b33b1d9e6c54b7f26ec9859b4206c8bbbc866b354a4e2fa690c76ed5df7d37b369ae2649d42991fd7d48c1fdddca51b26b9eeff293bd63657f69a7a099088fa7cce299dc6bbe9ebd40705096ddca9faefac56be4697e0d6790a7f95ccb5109902ff5fd7545d622cfafcfc39b5d33111ea97ba92c5f50928139674085ebe5052ce3dcb84f7e2f969e27615c7642bc6cc8e8410b5c361eea80f22d440f9e35924750be9e77bfefde3902c10f7b974442c30731100af8054804ea00e527794e4e0875b9171d7d43660d1b9e8da694eb1139569fba37284a98d95cb12a691b2ab1f91b60ae87f301e5ce98e3883c670e9e3c3f874e9eaf42459e2b41798e2a3af6a7cda882a392e332d89ff355529286c4e3862f447cf1a3b25d0cde7bad05ef1ddd7052a10b4b10d9d8b0a5089b860115b270d9742bde0da712b3590eef863d8a78f2b2b1a1b4e9747836d491e49a6065d3b178d7bbb6b3716f8d16cf864a6cbaee7380b411c22ab1e9386e2561fa418e27f77349c82d8b49474e4619a3e2e8e5c54ac2b872dc95a4a9332561547986765e81ebe1baee381f0e8081c7cab1dc65b81cf090de7ea17535430c6bef7408c578c7b6a39b4484e184958d0d75706103f6b810c99736ba5692caf59514c1e98f4048aeaf44874a5f864c9ffa8edf91fb77cc4047b97f047894fb473cb2929946ee704441109dcadf907e19f630d3a03ae8302243ee1f810cca52d4514486dc2f834c2377d4a3d35ea1d3a175b4be7fa7ddf00a78fefd6e738e078f7cc51e78642969be1a70ee61caf2e71e26912767cdec203aef3ef7dda7d551a50b08b7e7421b661a99db3e9f21cbcf48b561867cc51e66c8f73bec4dae9d8e48d0f9072d5f2bded4d74423b88b39674b8d7adac4384818ed863e69efa30c3c7a79d37e94441367aa66ce0650da732003b226c98cd15ed39e084877434981382a898c497bcd469e3f4a2664ede9b649a2bb7db76db4feac2f69bc4aa1932e3d276d97f72e07e90b2c67cd9d31fea71b1c75c589f3dabaefeee530de4c233804ae3f4e1c2b8e27faf55e531e3b4f2a678f8474157fa814f7ceddddddddddddddddddddbf47d249dab9201c9851ecb3b2fd66d19163c5f438666ebcca97dec6d7203d067f740449cf548a12df9bfedd4c27b2e35b7e8748436e1147d0f2fe2fec4e7ff2782fdc9e863b34edbff0fe28fc1e0c478f43f04921fe1a35be54fa1ba1cae3c0f12ba1a925ec0105a97bb18925e4f13a4296cf11eaf89530c777e1cc628803c58e27e26dc4cf41fa02ff6c1f054379f23f364ff8632f916d947eb1efe1cd189b4c1d653ce54e1ce7d85156c4f1945b42993df1bbef8187fadd7846bcf7f75a5ab2378fb08b665376842ee4ea17fb9203f2e52569a86cfb6a095b6eeeb0652c61eb087b16f64ae8a93ed937851eba2a7495d075fa6477fab4ea93f3380eddc747a12ff11f206f05f5c9be18ba50bf34991d652e69a09ef11f7fd09b439ffabb092025cc8f3c29a5007041eda6eddd9fe11ca2de4dedaefdd3adeea0ee281d45d2d4b7dfb22873480c59339dc8182992666e2161e64bc2d8f711061e7fbcdc7fdcf4c3fdf6f345d4deab656d9fdba4e06ebee66b164d2752ce2eacb5f62baddff5bbae90e4869a2f7fb13fbf50655a5f44b36cbf21b65ff66f1545dbb6d4278ba44ff3652599fa34bb1bd645aef5bb76bfba8a5da5c9fda5a35bcee8a4cba8016994c95fec5b6b6d9074a1f90197ac3f376bbc97fd72f4dde8a354d3b41c498b7aa63fecfefe40f3f73d80f9eb80745df7b7237a98ebe27bef03b9aebafdc5ed2f6e7f71fb8bfb55a2fa0bf962ffdedb7d37a3ae7bf0470f8ec46e76b7a148943d798ee34cb9b6a364fbdb8fa3dfb0389ebedfc41eea7ee4df4d27368c7beb11e934adeb36d70bb6e47e357426c3759c8907791ea5b3fee4b323eb12caf6ddfee9ffda6bbbbbbbbbbbbbbb35d7e8133791133b6e1bea53f7dcdbaf48ffbd186bdefbdff74423a7a98594e77a91cbbca16cdfc70c8f9a4ad3d18ec8f6b59caaa95ad24823dcfbf541856649d92fa2581640962f2226b92391784a5e54e2e993f5fe7a7fbdbf61fd2fa4afd9bc692f77d1a9cba5114fbc2fbf1f66f63495cb5c2661ac96a3d33395fa46df39ae5ff3ee3b00652873dfdc77f7f7bbeffa937adf7ddb7fadecfd3d0348c6a321f833a4dfc911977335cd83f449d6b2464d59cbfce8fe2b6be4d839cb77d3621077b9819b7fdbb778573e230e8a23f8da9bbe1bffad338001be222f99fa7082bb49bfba5b4ec3d68184b1df613f2163ecd7b081fa641f0cfb27ec1dcc182824cc926649185b69ed1c9f112a4ed514674e9f386ea5a34ac95cc6b1701ce73297712bdce8b99c29eb17fb404064764cb25c05e6feb3e18aee3fd0ecdf0398fd47df7d9fbcfe8ee861a617764d1dd4d40973cffe5e7b1ddf4d8b9af6deecd68c90a819e42ff65d307829019b44a3d168341a8d46a3d168341a99be21a389e3e254713f7382a6cee9df64c29815742fc653a73b6de2dcf88cb4278ea0f87da7813e66dfa51ee60f37d3f7c21ff013bb0dddf86eb8ef963446b8ef1f7520bd0f33d7787b310647de9742d78284b16f23f431648cfd1ae124853327bc8ec5f15e50f4fab91fb7e7bc59e333d2bf893fccfc7dd7853ea880592e9b35327b91cf7aa6be7dfb74d55df568a39ae52ff67fbc56c9a26cbfe4672a9c364e0fd13892866b9cc6691cfbcd7577c4f1dd78a2278edce3af48f79c0ed876a20e9f3873260e4ecfe8e81f01a54d8ab27d97bcd8f427ea72b9ba0278d38be84e9fac94a2cb0ae0321fc3b3e0453ea33a7487aefa648938caa7748ec5c9f6afbbffe644311851b6f6ddb3ff953532fb7b7286cef4903272a676e0f4795f73d7bceedd73239d26de18686ce65e6a3ce8f130985ab0caa7a9e48b7df99a1152ae7cf03a30d9002b316a30a0b2a987656440a2a6cc41d2dc5f592191e40f34f7f700fadfefa6fb7e1d5f0d57c45e9fa85792e1e179a8693a39aa9d7eb10f0464c98927dba794524a27a595d25c05bedf52595ab65f97344a767df54c0f336fdfc42484995420fb238f95656b94aeacb14ef1ba4f1cb51fef3bf187993771bcdf7df71e176a4cb49606f4136a3a12c6fe166a474818fb5ea8bd60c6d8a7a1b6d3a7559fac8b41441ca5f1f48b7dd77d61189116cbf6351ffb3bbe1a3a93a1923436dba733da44d2787694a6a2ae1963bf5db28e1f68f6be07307b7f8304f9207d9a9b2cdb8fbd4c2e2c8364ec370d7231b56095dc236d22db1fbfdc5f258a36215fec739246e3be9bed1bfdf72399bf2373f4ed63852c6739fbd4f5efda3eb0599f91ed3ff187495dd6a452b5d50114fb67137b890b911da6ce04ea1ea18ee5fc0cf9acf3bdf79b75e3fd157f98b97bf1aba1fbed3bd1f350cb5d38a4ffe6f4c9fea7d32ff6ff4d18bf6b3fd936eb3352c55e325fcb9130b60cacfdbd7d721b74e87efbfbe3c3cc9ed84b6ec8e2584b284fb6ef84cadbef9f96e1c65b98fe4f3c752aab5e2ede0b5f0d2deae089fda44ff67d98b9131bd627db43433da3e3fe268e807a91cbfac4eaf76e09b398decaf44bbf7dd941d8657a3dcc7ef7c3c39ab9d0e4284dd52ff6edc5a6f13953b6f3fb39ed3362dfc51f66be22ee93fd7cfbfd6dd664a3260114bef7effdeb0010ed5e691f4d708af60baa04fd42bd59e4c5088f96343ea58f171e5bd6efaf7befcf70a869e76c657a3abf452fa77ef909b9364a1bc76d2c264a2a37be26ba1b1efe86e0c8c138b66d7b628a0904ddb6ca0b3a53ffe81ccbbdf5e6d09e7bfa429aeb6176751b524a6bbda1274ff56ffdeedab90380d58166221ae242ee1f6bb27c1aea6b2fff0040240d779d56eb28151bf9dde6a8928dfcca715c67a3fb86d0efa4a36ad858ad0433a6fd47909ddc3cb97b34e1aa4844a4cd3c92cd94af0b359beef3bab0da7423af0ba94d077a5de8361df63a92d785d3c6db487913418daf0829dbef6cd4b0232961b6b7f970542598352790314ea344c2f48f4d431cee7783a3409b8e4660a661d38952bef84dd2a79b5da4485ea0a34636f27bf886499fcce974a94dcd353a1bf9262fc4d2519c8dfcaee4a8cd46e2e07e2f0d4c6fc8ff701881fdbd7b6e78d2515d78c3c6da4c9932050820625878bea36ed8c8efc0919430bf750908638cb9e0444a3983e5a1e103522a954ae9744105a334706063c937f6c541a39c651eaf34a4c8dfd3ef2f0b4a4068f7170b5d8801e6a8156808ddfbf61b72bbb0b68b6ca7b020db2955c8f60ca06c5ffb865853183830182365a369d58bdc533c6106291bfa57e218b8c093dd51350b5c70c105ace49bdd1232b64571a20732067b6c52420a4288c213b12410296193a41b7773a9dc3f42c85dc30665cc6cb004278a286c64a64d3d7959d91ffb9bcc5842f6975c64ff29e46b62c1e25206918f590b72bfe9fb04e49101042b232777e329c8e4b1b40526ae97942764e06421ad5dc1851661698d01c5e54615f0f4bf22c6a08d09c253f3a1b6a0a3d74a7771a45f35777f17a9d36009da84b775010aabf244892df030818c317e803822ccb0a53182d9cf124be4e06431844f7a5d98b9a2c8a7093297145334142772a010c18503278abcb882e7a4e6076a9b01db6b7f0452328218697c22ee13be4e5243981b1a374b2738f8a1b176779f4dbff60e40b2bfe722357cb280c10e40bc271388a4165de45cf1f3844eac2705292d0544e0f02b62984256851674c0851498b0620b65b895d256ac90b0557421cad64f3827daec86c678faf122630a4b9012032d9c6183c2b1051ac8aa30a50b4300b219e54bc81172ff252aea21ba4ce83a29693429a5942de594d26a95d2a64d74f5ab13485c14f2429fe606f8ed43914403020a1d0d982f3fc97c39c524f3ad0884145f9c3f62fff911e89732e868e8a49ce9a7528a774e1b3ae9327ef69f5f0d2548a55241648f07782ce552cfc899f9fe038f4c0225b7451d46da87d93f5f8b4ee691c630c1af0375a7b3e9ec71cea6b4d6eac42766355ac5716699041dc9659f9ed3323d039a4c57fee8a7a16defbb43e74ea54832c6df0753f69fd6dbb7b6fe976eefc3cd52c2d8c612c6df8623291c79c85489a3a0db8fd06189523245162f226a4046124ee0828d3c82194ba230848429528081fc2be5cbaca5642b0a2b26f4a415d4e405238222fb4983b50488f523616acb7aab32a9ad566d492d75a7c018632c63c2fe0283bd6081312e618c710fa71272633c73e5c3cc41cd14f00084ce4ecf766d0e3ce000913e0589957a5cccf227991f40847c60870fc43e2063456853cf34c6ddb3bbbbbbbbbbbbe76c1c9c4f7d52b50abb2c81310d3d33b68ae50736b99c6480041142c4aa724a7d6a156e55ab4aa612c6fd82c2a5675abac81f9e8bbc25d39f7ac800b17e030e37f40d12462f95f709138b0bc5f4524a2fa5940e75336ff98e2f7195eb388ff738cb7f1cc8835c093deb298e33deec39ae7295abfca54595dd5b59f5498555a026f5a7679854577dd5a16b7b7a66ac5272d3eaa393694bc2dc1ba4d4e362963fc9fcb04e592c0f7bf75e25e8206182c891249ee779dee801f13ccfc39e07f33c1c72c0017603ac47e874bae1c791934c1021449024c9414a31b1b8f4bdf79e4e38f4cc68fa71e4241344081124496ec8c1c462e24c26530f991ea7d349ca2e152e1863fc18e39ed9e475f52003635cc218e32ae8c8489ace445cdb05b26d2548097101902034504a29a53f240c25e2a24976208204871c3ec0830f2548d17b8488a32875517a04c9111711974e0e3a7943a7b9ddaedd369b82d7762db5d6da27f9fedf1e82e4fa8ba94f5307fbf747fbde154bddedd30d7dea7f2dcc54c0aed9eb9e22b2eeaeb9e804f742dadee03dc49da35c88837b0e386c5274b2935eb55ab5b6fe542da1c324f74f1dab3191a467b6a2596bad633491de2e810071e9d3d4a1bea98ab74a4a828011aa26511d393d334a17e50010a8a9440e3bf07023cfc8d7183ab967464d9b7eadd22a7429a5f42461e6d5e993dc9e7e89b2c8e06c4fc4db6c2214f573d0effc1b42bb7e9f4c9246e6df421c6a0e375812048c58cd17df94502ad998eed3dbdddfa794d47d66774da7b44369d676afb46b155dae0b13b47a2ba439a76bd59b4a413acdb2fed44125bb3badfe92869a289f3af5222e7ada905b351ad6dc39ed69651d51517a969f8b94ee000717acbc158137262c908c278ff8162143620cdc59be64313049eccd1ee0dca38c2cb5f5135911b9ff62133665f99212cb1e0ec2f7b17fcf9442208380cc97970c2c1c0c30f27c79041b4481440e589046105cd0c2e5c42a0a2a308295453f992fe7dff9a62944ba9068f7852382b6f681c6b2894faca07a4f11d4bec92251848bc5e2b50516aca02d16e2f7e9095b20228f32a8280d15b84c2bc660419bc337b27c15415144461e6536247cc18331ba2005eb052d702df9c014ba88c24e4a070b424638bd9014ea419e2fe7dff92697cdd2094e1a535c8e58b2450f9808ad863001109e2042166958a1e3c415f278ca634cf1811358e0d3841ee098920417e4c0065534a9e28af9f2ce37cd287c68c2881f2734e1029c554f61bebc623bc3c70c962c410b515c2d10832eb181143f5809d10420aecba30cda19ba2eb3ee8aa63e5951c9cf176130d103a122a6b0620b2f0a75e38247548534583190c22c0a94920cee0502a85571c5a80a1fed5e22b095b26d5b1539f0aad8a2e5f75e1cf8008c1f8891451652acc819825a2184b799b185ab0b2229448002194b4c97a381c8112d8f2eaf222bac94820419b9ff9ade84234b2748300109314c44a093190d443022093e2990220768b816f21c23e552c118682c91624a010734b88288a808520c010b6ebb5b149f1537f09149b0bf8932d312218bdc0d85dc7f72998ea902755b3cb994b0274d43c8c0c91048e41e8a829422a1269491852a7825ef25e549c6593a198288bc65e96488557e5d612ba3002940c2136c908430a4a0c2868c3c97e00206668c5145103f688931d184217041074d563baca2684203293d4b1c6104ad0547c6c829821742403182ac896ca4c862064100010a5430f1910333b290f3041386f0ba02b50415568802c6853070b06de1068c2c70c044e6050c8ce8c069be69de2c8d603385b8d2031d1d22cb4772801fe0796713b866e92415cbf3e56896b0002359fa472c119746e1345110180b7e70be1e31b03033676ec89718aeb6696a65147277d1cc5307faf647fa1eb5a522641eeedaa7c93244eb93f83d7a79f60a5658e857416cc7d54c102a6ad9742885a26063849d27f408610526301b34b45002cca6ab5e873240361e02d1413016156c50609760233b86116bd28e2419674451d9a0a0e7bc4127dd096b967df0aca34d905d24cc945d64c1e6009d74195d2777cfc6ea5e79f7ddf4262069eabc17e371cab253279a369dd8711e21f7cbeedf3bef8f3b9cd4600519f66ad87ff2c23a9d489ad67e1e6109390b49a3bd13962005275c410ab9a79ddfee44b356fcae7342fa8bca18f8fbb157267f6927b0bf34c9fb09481a1fe52c8b09489ace6d051519ee7eec559ec0cce25e8ce78eec3feec89d7492bdf7c44ece565b1e5f2e218fbd925d6427b84ed75b0fa808849ce580090f6c50f07961535f898d873aa0d415e0b02ec153a45747120a451258e8d8a0e0c3810d7d25364000d1a2850d556243461201a572a8b4abd8ec7a1c2aa20100000000e315000028100e870362b17814a7a1a2db0314800d749c4c625e389509a318077290310829040c3200000004466464c6093a8da9f6ad05b91ccb04988a9131ab67c2e0b991b1977d0988a9d0e7f7d5bc433d8b339da42fc8d552e7d31281609cb0b24750079c8130ed05250b2058a388eb2cce857d4e709ace3cdca279f7eb810ee218d9a121ef0270b5d3e00f9e07a11e74a5b97e716845e431833eadd0da4a3818981611a375120ead845548cb9863d0e98e76cbd16537085a4243fa02a40c2a705469f0f92ae35c71219e0c89ca1db60c4a68f1df754be56a819d942143ac2b64709eff954c71acb142c9bab1401b31169e05914cb42b35142f8f889d6651ed7f6c47129c2363ddf9791877078c38f068f55704f8de769fa04762bc925224c6b97f93d6c30a6d9a473b31fa34b6f779aa1d1eba2939c8caa98becb88dc071db3622ed9285e8ea764e4a2aa9cb371d791be6c35d83035d14f56b1dadf2bea59906a70708074d837a8552da3490be379bb71d14b90cf9b224e4a9b45b5bacb908a811d8f869e9bd423ba33a08285d3dbf95ed2fcbd7f1d0d485b9f6eb68aa7e09f20070c3d7cfb9f16e1d98adfcafcaec0eaffc58f209d0a902df81cab0d03cc9b0fd5e9fa341fb7a3180dbc75debcc2a71c38489d25177ccd06acd7beb702099d2c863e62229ead4a964d01854c3fc73accbd1dcd23f7bc16f274be2b25ba95852e280e08a1a617100c026c6db2af3a7f674230f50b9c102a2b8464ffb7635ecd49d2c8fa315d4bed746898cec9354274555bdf35a5ffaa0be8b1c04d358c395f678c7c2bd60eb3742445d8e06c41774981f748e3fecc89d9a869dc75cf1aaeb68003fea8260b5a0a41327d9791229b831f99dbd4b5f90357cda0e36ff5126acc106b341c1d9c0cde103ff38f579121ac6dae904b73ba26c15a45e757699ed806a97226a822461fcb7f94b3c8774389d5e90120f83708c9b02cbf9d9d24d180c344f7db58cef61adae56d1a21b44d35c6f4a9e9e8983fc54027a912c17ebbec5758be0c946e6b3c7bf79331eaad4029d72d51bf04e4751af87a5b7168cecde1f78e52a0f08fc5d0ab192fcd2fc02ba182c7c8eb1156e05be1811e4fbe943fdaa1e023ff96c9fdb57633aff762a5649d9227a9471b3f1fd77972e801a0274e6963ca41ffd71958530a09ad1773587cc8b998a909c99166ab88f4ff83e9a808cd055ac0951da458bb43c71693b59548d4028d49f65f62deb0a130880377ed4afe80175e1a075a62cff804f8fe899dd758b6f3ae158fb8fc9b94be8856532477a6f453d5c8e844827d4377fd0e9a5b6d842fe33fa24a7f8e7a2e2a89f8c6f2a75c6b0de2af344d352b1bd3257434ff58bad95ff85b7b4e9c537831b3824c637993c0b0a700edf1e279c7ab0125d236bfbf79b1d2ab55e5d7d28535fc3a49eefbf63460b87aef458a6fe9d6d392ffdd2d68ee6b96013e2b047cba1c1a77f289745e926faec7cb14488b8bb90b1310ddf2c8653ffdfa055619b2701eae7c8c75edbe68863bb0d316f30c90940a5a2d910d66ae19ce3fdd8b0e633a0120b45f14dcf2f09f852d139c2de4f7c2d4d4c38c25d673474e3299b34be43dbda0b96b0203e3f89f32aeda4da858a5dd244cde9862adb59d3e3599e5320f918d0dec7e76df6d6cb055a84967f4079fcc0f3e1dc05d79247834147d254c72debe58f5f3500c83f6e10d391d79de47d158b295af0ba12b2051cf0dcb6e1c08dfa8c27ba9c1e1ab3f376f33ff60ab4a6686acc9f122f6e22a40ec7246d94a90c711d8355413ec31fec89aea07ba272c10586368ce030fe1fe79207d097b365d58de66a6801c1a5f0858e5a614256b6848cbc7356433e5566d29f73be01662b5f8dd4a47c89aa08f1a68170ce3e777588d31505bc6c11317309dac01ed41bc73a99deea7f1705ec704da387c375d72f6c39509dd1b369ab634a5009c9c3b04dbd048cc2bdc8b540d12e448d903e29ca1b42a7fba2aae46532f742f7b23271af66b961d82083fd584172d9415e002a09709b55b36e12e582776f76c3a4b05590c6e8db3af0689b20ae2b884fefe1a61b3973e27fc6490ec8d5c6fe0f8b023a726fc83cbc5bb16e03ca1ba49d71602e22a36fc4af9f5ce7cc1a5550d408e8509c20a19fc4b968e058cead90b0279d38dfc6425ea126263d3d34b61c2db0e0b0288f8a6ee038ad40b4fc8060139c6e1ae394afe794ce999b6616104650390e135df06c616a91885d57fe566c44051661e42cc2db9e1533e5b4d2a572aaa68d3849196311886852c21e212a7e65b6cfead987fe3a3e5580f048dd389f661a4dbae51274d8d70b0e433a0440ad97576d4379ea50eec0be184e9ba56fa7dd5e26f8105b52de06bd416f3d3f7c85c6bd57ece78b634538bde54969dc4ef3300ae2023a49ac8d4b79208db332d939239bcda7af783b760d86d08387551a8702bd515bf5f778c233f379a8f1a06fd15ea8b446c8b6ee74986d748da9d59252474824f5e528b2b17ba5879120d462e605294328de5c98534bebf3478194065c1973beea4b30058bcbb19a618ebf39d3309206fb59bf2784ec265d1448dbcba98a4c5865d720e7b240e836aa50c4f042f89dcdf8f1073d1341cf67fda842fdbd1fac4b83ee70843fb64bf6fef4a6678457d36eac6b96fff73ec57c1637ac76f0ec6bb2a888efb379f89c69f6849fb0c1a8725adb12dd8d3a6e7f5af6d990f78e535d9fa8b901cbfba336404d2997f457a1fcbfc1bba11221b0ba07fa23da392ebccf6e2f4b18f67d9ebbc0df42b9a387a61f256a77b881abdf7b087b388a1f426ca176019c3fc6e036c117626250c1dcaa95a2677578ffc263cf475c9271a279ae9de2eedf481a85f702d38f4faad37a4851a0064a9fde4c1a02b4086117cdf455af1099b0e4200b980e357e001cd6999a017a1234ca6aa3f4aea7741ddd144171178e6f3ae27372ecbbc8094255f23bd477965df76543a47a1bea8a4fa1f5a6c322ce017f2fb5d3b583bc37530606addb181f9517bb99951a19989a1ee4c63595a95a4431a62de1f470321f027baa07b929146d973ac1c5b63da001b20ade3b14d526d83dda276d72fb12238b79faf83ed531609a6f543f2f67d52af6a43c66873b51c419294d3be94a4843c745fb9f7d56bdf25066103762d3082aa350dcfef1a076d35b9486395d666f925b1acbfe82381d4504cd97a43304886c5b9e0dd58033481548815bafe8e98de9c9cac6ae9db311a9f1dbe53ea8a9e9eb749e7d0982b3838aa6fb74bd9a20a9c688aeeecb87898bd3557b188fe895e6f1885ee53ff8a29747ca2676ecdbfdeb26c71d55003cb7eec750c7843ce0590abf6b37bc8034e00d048b7c667954bd7ca4900d4b45282d419ca2bec8597ccd90fd268a70afae2d45cf4ee3d12f37d6a9016efbd656b6c34769cafddd668edf622580af0ced03d4637b54b76b3820742675af35961968e87e53d8be6a05111c831c1b040363fb8afe75b14f5806ac54d40759b8e62c65b8bc0ca5ba474cf350750c3641eb4d0d88c695a05a82b7897f4c0ace25e48a6082d9f15beeac220df4ca9babfbc4d35b0bb06947e03f1ef062d61c5df47a2ef67fb13b40b7da8931c6719a567f4f74a9761cbf16ee5427f911e60a8ba0b0e4feb899754bd400c68d3b31aeff1176ce34f0785274f74c4550d2914d7ce4d81c74f050e43d892f07b25713af8514ff31e5d8b2e6e7c3284470a6b1c77ae370c3c2411ee7931d7c5589018246c8566c460e1d2e59931027ddf0bcafddfe3df131bc34c095482c8b61df8a9ef03bca54499a3a4e6e12fae68373f70a6d1a1efc5956130e4cf9e0396953a74ff4f8f9b2dcb86cb4a011e329a1ce4f4da65b99386be3819d306f48889e08049dda80bee42eaae079fe523cebdf139fc95ebfb0285dfaab7e788509bdb1dea5648375b5f4be08fa8190c39fc7ada8236ae5067b36da2fa61a530f0aeed36fe159ffbdbfa62a480de32b27bfca31179be180738658eaac37351e432c8a420d85aa562c87f8e48eacc425dadf72a04de3ba538e214c5b7cb07256646b53eafebc42a1e20a76bec600bae05d19a9be31822421cfb21e9224f5f6e761e984b54768971263894f892c0d023c67c699e9fb7e39d67a98fa9ab054b743512120ac832b606df39099fe1f64450c36d96049eb118065377a5f37112fe2f02562bdb2450596c2af13886655a27892cff1b5501df2a97cbbc812a699751b9f1035701d0a688ca7d77fefad7b91cc746be61847295399d6fdce389b804e3c0b9f0670cd1062456a64cf7136cd1dc94cb71750a19b96ca5844b9bd48e0464333fb30b674efa2c07f7fef3d1b80373b93ab4f9c0539c5d98fc5662ae3bd2ac558073ccffbd744def436235ebb57ed2a502162e91eaeeda65daf419b5c04c0b8bca4ddc8e47310a74e6e665e50730c98f0c0a5ceb466e3154a847869052eb27c78c890e61f0877f9a8f8a064d0ad60de59e04c1f0d3f78cf64f0f2b1a2fe6488db1c6ced04e07f320a9356db841b582e2fe94f13df4e5e65d0a0eb281f18531ab0ed37cce97daabfcef3939c481fe088b60c7d9103e57df1b5c61bc132ca48d4457cda01920c9b496415efda67d47a90a92f847e176f087f93d2223a2b8f145eeb1866a6817ebc554f0f85cc7f5ef153f52c6a1bf58500d32b2e59de8c2c014f74b61f88cdedd352acf4421bb3a769e3ccfe75f2221349f618fea2dc0ed6ad1cfb5c17dc473ec473ba4c3ef43877f64375171881ac0b4063be27513a0d63163176a7bd9dbf487f34d159bc9bc5fb15952f17ab4f4755bfc2cc8db2dd1b2c9260bc500c87dc6fc067097badd6e8eef82628e56db0c1d31911779a93c603806ed6806687c87b4450804c2f467c92d6994f44fed965964f8c5476534e3ad29afd7b966b5f76ad0dc95b5de83461ee814183bafb4d26e55880cb90a1fa70a44a91077ffc385392e919707ea145bee886c273389da6c5d9a66ca5dad2d45be0a1a55bbce40656a43bca474050eae6b11a2e425717fd18c4419f6bc688d6d73855aef0768cb1b1c9dc5c9cfe2e96500a3d62ae032c9cd4dc23130373e30fc74c3ed87f320d6f009113843dfa36537f672cca95ee6c9a6795431884f897a488e0807f1808210444935e8094697984da22c68057b4e9c3a32755c2fee8acc18aae8c160b4b48553abe9ee0ef0fee8e4d65120aaee022a8bfe253ae12b343911a238d12dc2d85fb86654948c68d4df1186aba98dd48f2d78854afc5fd97c7040162a9d08008e60eaf453059a769cd915877d4fe923943bccf748a88f4103890d4b963402fac82e8e4114ec0147b90a47a5318627231d17948779b620bb1d84b96caa8e0e01a4db3e5748415c208134a574689985eff8daf0719b5ead8e0df3c37d91c261587d1c4568436add23aa5b438519530bf379e3f2411f2b38a099f0839243101bb6248bbbecad4c136b3e9df10a80bf243b3aaa686f2f9484ba71e4a7eb9d6589a67449249a0b279e5430186e94613737ebf282e411e828400c5b8ead904aa1e2947f989ac782c858a6c046fc613709904a35af3c4e07d7900d45b9536a16dead1a3c7853027cefc6c2c34aa70f9ccaa364121184dba9dd220a164005521b0cc02fb354ab65d1029ec903bf60e9b5842712c02e08a55708ae4efc18ef5b920811a18d207db42c87e7b8e1304ffff351a149e9bc24c1344a23cbcf55309397e410b5bde5723c081653f3e0825956caae259c8548720743f666d92d0884b39244446f4ff049882fa8112cc8f1e00bf35ac4ce229329057099eaf3571734bb8b6d25c8373bf7e855c3f09b06a7f7e4bcda395ed8a0b249b1dacac9b42819a3690c400b3ab76dbc9f3d433b95ca9f05aae8c4b83319a81bedca062676407150121fb77a8902fc66e52814136a53130793a4e91daeae458fc2a024b8ebddbba1ea7e051a6f08de2c75d2378fee3ba7550d37bc1db8112a21ab9839865ec7a9b665dc221c6bf1834c6b08c006f40e6b4689b0909a69d0f1b7981f1097efb9e6b15a11695f644cbdb69f3a75d4fc1efb19e40b8db83d178344cfbb58d63121d1cc981bb82a2da982487ad53a050d0df684d584aef3a3816938651ac2ffd4cfc2a7e747098ed32c0117c27015a2e7bdd5ace95b1e9371678a965e1f1aaf89d0713f88d6f393ff989945e63adef2679e7e7898272f02a7460b87c8b2477d419f3ea526d71473bada923bc83274c6e9c67488d83ce28f86756c1738b3346cbababf17c9b4cbe5c7e1894868c0f4ec9ba049868d2f8a4338c129564bf5dded27a182f7fd78c55de27dc586b90d159755657619e3553750590db45af0c7375b5d17fa8c4496b94248735f6ec08b729ff411fabc2b3fa328afc9866e35da067e41def2bcd53318e0de70e86642e2154c4d9aa77ce6c6cfa28bca8096f30d1b00512318e5d07a18f2b87f6bc385d9999593e440c1545c149832cc71bdf976110d324553c89577a995fc12e4d6d44e26e43f28c3ff3b9db0dd74ce079ff787028e4e2a95d1b121b77e492cda06a0c89d9165097a58e77c0815029aacaa0cb0149a8095f1d42b5db2c19f58502c5a70672cd986857d1f642f8a16f16b33a04a01f233635e8fb310449922117c38054ff501a87496c2a9a588db5884f04089ebc0d7408749f4395b34882acd09de0342aa963d8602bb1ba0190ac3cfd6e40543a603db0572a2094892b425844d1ec059f0d9d847c9264a35bbd6fa170707d7454dbe0b7023b16670548ec2ff3811e24d57b0c7f114b9f603a7d0186e6aa64862e639b6e1b132fab15bb3259ae2c4027e5d9c41356695a222e9c46476713965c03fd4ad403c3c2f8dfeec97971086569af872e6b3ac31ea230d2124bbfc8f9a0801fe68d7f552ce9c7d1049e5975b70015c308c99050e810deb70d101abdaa26d227a157b340634427506f77083e80efedf04cbb33d84b402deaf2db10a4b7178c5cd06a786659e25216accc5a4e5a7e53dd6301fec212bdb6b522fed489b26fe2a03737b892382040ecae225cc62bc4944824393c19968e3112e2e7345cdc391187bcb16acedc9432621239a2e7a753a8488a732d747232f658a0b206059bb18f32c5f9f279bd256ffe590b402c1ae2e6decb119031eadc77fd2d4d202c3650ec59e9e496c3f16c4744b93fb681c80f9181ce4bff606c203eec83c9df76402151256ff620d071f0671470b606674178b01b66be135d92efa2110c3706f02f0a931b27683888399fcb9c8bd29f5fd9ba9323636de34f3674cb44142931ba9571e11476dc21e06bd1e5b194ce5e3d504704cda92bacc0636dd403c95980686ec63a7da12687032ef48b12c4720e6abedb5924782465952ee9851549e031fc1ce08c3f787e4e0fdea749fd5326a7dbe0cc7bcfc9e024cac0f24ab802b4ad4ba80ab63472036bba04b982b117710e1066012597e914214db93b0fa67d730496e0be7be2abf8ac055bd4f90bcc0610067b2735526b01f8322ae2136f20b5b1c0549b5a7aac280bfd12e4c809b1ce15fe37a510347ad53543b54bcc5a5415e368e428b75f810c07ed5c13f4c220725325387b06eaa1b07332df569150c4a3ed22be6f952b612b1c36a571874b6b6078072c055bf4155ff7039e6892621274d6e8e904de7fa89bd5045a72b146e0e7d6d75116aaedc4d207e079d7d57a0c3a63194b4745c05c160396af62d226791fb9842f9ce90887507cc0ad15641532b6df78ee291f5be1ed911af9dd80f683fb1abcfda6a96d4aa6294bc539778ae5f63031e4008adb38caedb343e2aa799e05f0bef535de39a1b21362fd4b7e594e98ee6892b354813ad4df666a4789dbd294c626f67a3355b6cf7e55fa8e844c7b2dc18f3748e68547bcfa6c8dd4d5fc23316df916e3f91cf6175e024bd103ca4c70eb11a41c072e5da6104ba8c3c19aade8d8d65983be644805e140baa198cb6ab0ccad2c8c19cd1320e8cd08e728fd4cde46bd108be8d217d865f18a9fb5651547fd805340487f5a363c94b87a432e65471fe3b4b82c79312945ea4bc2b8c95f997990aa07653b991ad82b600469a3899dd3273bee028e0c8be326f695570d79d7a67d4d2ca3c7725155c7fad08ccc8ac90f22b06453126b16cbb0e171774521ddb2329e0beca9cfbe8e8100b370a90557d8f5c5518864813bbcc37b8166d029ab3ac6ca2a8d288724d7dbf1833be94a90f960f2256be370abc4562e6235088f5995a9ba62c84b33b988b43ba22da25c96b116a250d9c094a75d84c74a07e54a623eda2e2876d206cf754e96123ae7d448418933bfe40cf14e200aca329cb31977e6179e247c7a9afc038a4de00beafb59f1c60fd935050b5aab00379a46eb390c0004a2db0205f6bb2a2106b7f5ff045046f04ff117c98993b4d922a5f0f333cd31c3f3110c2c21f7012ceb471cd73192cc6905b97244cec9cbfe3b61832c1207cec436a072a76fe1fd2e546d09c46890c4d17b174f21484d00a3f725e4bccf9ac707219cf43f23c5c4c8137061d790517d51d73989c5c81711b6cacdbd28fe623d5abf9318c72d52875b864e076baf01e990816c4c4230820204a88455177f57641458ba9c4aa4f6cf182ffa8c53ee3d4d4a1c686a983d83dad02066222cb266ad6d68ecca93d80a1a3b58687e7a6818dccead0310c13e418a2cbecab0dd52d57c0897adcf10ab711a34795cb05add6f8d391c265126d2dbb90cf4bdc80ad019d8b5445e71b939bce0b335628414eee849ad10345d24dd59a3964526492f924c6f4f182d8e19b8aa686f53282a2a8f28b81c3da7220ab93bbd43a441c00f492f64d2d26f009877087bbb1b93cc3f485f9a505188a0af3d993e7ae1ff0e9546a694195e310384a9bfc2c1d9f5e724c0aa984d3ef55af96086194490d5b62f99a227b8777f85981414cea5b2680038442363e89be6c6b6e87b7f1994ca23cf8822ae7ab3efcfbd0458dcf4c28412b50733e2e585dd638c4aa6076c76e9722426198690f6f98982e5bd26708a96ae53b9d6c70a1d994b4f3f307afef40767e62b612670903e49162cbbafd944d19b84692c8e7beb0b5e491824ddd55ac6076a1f8568bee3b505a838381b6bc06461085226788ad48291d877c968ae0ef14cf192cc21f4c2492ff8b301346d1475ee907a0d6efe072bdc085ddf90337eeaff039fed1740a6451b4a3af409915d24e8b2d8e5ef1112217a676edc07ebb8e19017317a12bdfb86ff4033b7d5a4ea454c7c6483870ac52ef0889f5074c4796f63f7824b28f10680ac3f4c3a335eb6f2410c567afeb1193f0cb2feadf3fc5afaf9a107754bacf1f2abf001bd7079b179a98b4eea5f8643d3c0659da5b88eaa6266d1061cdafcb5ae90deb084ccc4d1beadbe8cd30bb35b90414d80119dbeb80bcefc7991cb15c8f13afcc07f024eb8e2aeac80b0f712d1a21181e88deefdb1aac00b96f1ff86a2f36b1a1cdd1a21bf87f5526f7280ceea63d1e3c7a72aafd17805aed7e87f8b457543ed30cc0d31defb848bc96d3ec2a18eba42451605a3cae5356453fd2f18ea5e1deae756942ce135592c764b9f9bbb56f6dea4158cd7b107b8b688882e464d409a5eba53ebb4d2abc6822f0f090b50f99120998f58088df305a1d74d09f79609d243de29245ede611190bc3c6347481b05e42c230090bf35bb06a6fb9e897f81f81c313f260ce68ce84a1fa3d5a5a48485e45fab2daff8e4d399b701594d1f6c715d544f03c40e9beb38f5bc0b193a86dc9512b3253b042b8dfb75e907b7ab7741725dec67e1c133ab2b5d1c91894909e4400020a878900b2884d23267779ee78f5362dcbcb4d32e8d3a3a7d374672197455fdd1eb70cae61a8525d73d6c5368054e7cdfb03718b3e1146a85117afe9a7dd9f98be5dccf3cdc75ab52792bddd9257c9ecfc93b2808dae7c8fc158fae7aab5a0b3b75eb56e01897a5edfee8ffc5c1aa68f9976ea86892fa5f3caaa3420978e524fd3131bbe38c69cbf0f267f4590ead3894ece3114899f99ed506b7e62d12004b4fe9a9e4d31e85b211f26a9d5c734224bde658470b4d1a4115fbe59a7aaa83c54cab5712e1030bba7d36d0275250d49f675b9c08ae7ac8f59586212eed4f46f59075b777912a5979ae32967d7f220091c7c60853c218bc45e7f942814cb9dae5008040a84098b2d08d82b39174f6d2a69da87d757aa9ce90e11aaca16b6db5f2ad9547bbfc224dfafbcfcaac20994730de58da8cc155b18fa226d6e9e40ad8758c959bda3e425955802d8107e189169e4ee8ea694312eec0f87e2d4f5a2a2f0d2cb97777515df8ecfb9121f843b648a10e3139ea1ef02423ed366764ef7ecc19c54ea7c76a5d10fa2dd33775cdb98ede619fb1262f4133eaa795fb395d64207b665db3e7499640ec397a428a5d42612893f69e527aeba301e6ea437453baf29b74e8a548017626930815031ee6372b93e9266c251630ba6e4ab8f8ecda9fa29934263fbd0d13834fe7c71527010f64d33a43791c2f9af940ece21e43c1480c614cf26c92b6d21090e9aab49de99c7f46f5be67d88908fd4268ef15839311bca140ec8d62d354a9df11a567d291d8abd3de7a537950a317b049f05dbf2ad7be8807cd8e7a3f76d061215e3a02a34d62796c0e7aed05c07d7da91d22c814e7f3b7ab5ae612cba1efe3290172a953d7a5cc2655d0f84eb58a12d90eb615d88e06aa158380f7374e2c30b97a8f7257daed87fabf072fdf10d873edc64d2952aaea1503efcac48c8d1e7c5cd546b42e3e6931307d3d3a818666f3618b0c2dfd74037bc809f7af80cc0a10def3224cbc10a78bca77315be4b1204841bd379a7ccb7d47b0c02f91dad3f8eb51127b7f2cabd66a7dee00662987de2185e1fb721065eade08a78e9c112113e302773ba976ef7f244c3dbef45f7ee1c5a42198d21dccb0e5cb72f30923a346b8652619508c5babf5c297588323650cad16f3789d91302d22cab54f1a03dc449e74190570043f6543ea4c5bb12f20535c549ecec81b02c094298ab1d69d4fe1b4b0b71c45cb5e6f84d155ccd058e825fc087f761ef0c95df11be05bf58af00105e94cf2e3ab4ccc0ff5f73b4c4122a2559c15391c680822253e43932711d98df6ff1940ae564e386ab9b43cab741195a9d63d3be8bd80737e108d3a44047f288ecc69906a36068e8f6f795ec23a483dee6de464f7fdd85fd64ce1667a0b0937f831359062e206e5ebb6913128ff28c6acb3f3f1ca4b8a1eebf81c518ff25681914a4f0e1db7d29549e8a18cbfd70abfe857facc36206d3442ab0fd34ca788c01a0fadff3d28343600a4235521c5d28c3296dacd1c630bd017ac936a40048be280f37af8dbcef34c046807933cc7bc146f9c892533228e3238d30d2e027f1a8fb51f1288ec45c09affcdc53ff61a1e0c815af26e1ef1ac440600aa924308cc663056cb8a04259e8c7605736108b40dc93915d8ac2af4590b68352cb28cde3a16bfcd06940faa70f0c1a2a33a75e191385a5dfc8e05bf8af0bff677aba120ea3c07131c602005771f3f8500cbea4d8a619b130cfcc5fc9de280fa178a6b639ee2888fed84047492c17c992d9deeda5661e27c85aa879b41d3c7a557fa6062e7abd9f2272809719c6ccb336b8abdadf9987c88738cdf31fa504bf1cfefa442faa08c17c123052fe3c9536ca4d762274fefa47026999526fac55698d522e8862ced8734b4ad8bb23896de8e1167d880abab1f84d4b15bfc30963496bb2cfa277957ce33a6df31849809a70ae12b30be5f8946913246fccb0b31c0e73f9a0941ccdad943354c549c8d297ad57b38ead07bea701d3445a6be21e8e5eea95c5ba4d511549126f81e0f565c55142420753c68a9b913280a2bd272eac1d110f9a4f3861db3ee5e259e8143c325cc3436ada11d623865b4521bada6323a7ba75e705caecc7c2c278233a23f89dead1c84e08364427c008577fced0f22ddb818768f1efbfa7d14ae67ae26414056657bc9e9400d7212b86a30f72f28672eeedb438cf99342a0637829bf500837765bf53bb2fd64c87c47518a9fa14f24c6f9c93685ffc5e845a729c8db101277366ec9ef42434d67ed99049a6ca1ee056940be8dd984552b194dfba524163285e69ec729a5d973d03817387c1f15083ad01e00d7a5b392c618a8540ec8820ae22492499150b549aaee81f29810752b40885c66827b7998a12fa0d5fbf243deec9575678917cf9f3733a881ada58758c4a7548390dce034b95362968ca8e34642ca8f15d04cdf093c34b98a58ab53ee33e3312e8c1765246b01ed9961f4f814ceb79631651b9a59d92c28fce92e5325e6bdeb3491b0f953fca84e94a69b92f55646eec768688915192b3be1d5931369c7b4e753969bfac1472669ce39cf332a93de0768ed324549da11762c9272b2499ae267e39f36a02919a3472b9ab951bd1ea964a2d49866cab85369b15bafa469a838b6d193729b9c797abaaf4b5617e1de70a3b8bf2516ae467a25d0fc94dba37fc51f4a032aa9b64b36c01a12584580426d532859aaf14ddc304ef10507c93a0089b9a2e2cee7e7e0885d0ce2c9034133caf73366b3440d3986bd119f90fdd403243dcb702c401ea165640751652fa4c5c6f105e5913b3de3b30d0311b49e6ce71282e8a5fdb567a100ff63238b4bd068bd9195eec69b6583612b91b3bc1729784a011f78336955f823be5560c6771eb1b0003982ac16b2736b68afb020afad084175f7cb2d2ec6d1eff79f5e2af9a4f9e995ce4a65acfca8d0947ca155ab236511bad1defa27081dca29420b6440f803ae5fcf405d65c9e9ac132353eb27f47fa9d82685c140d1f2d534751594dedbc26b53f13b8eae0d85fe3f9764ca85130639ca9925b5d6486e77242229b4df7b2e484465f3263a3d8e8a5d302c4153fcfb8d1f566f4a8d312c807d4ee0b683b328cc33dd3c939bc3101fde61c6519926ff848c84c6d0e18bae13b5750a68ec55e562860433354527cef4de9e389e91b6b634a0f7e6d0ab637427a77c87f63e31ffd1c281b1782f9f8f3c1592883145d2523bb3b929a73c53f4d64048f29149622d085007bbabc9c7a0f32f7842c786ae58248d15413f7a7c86aa1bb74cc767d495b0945ece260e6189054db7a46e93a96e9fb2f255a9e7fbedaa09433ddb0aec85883acf3a6a9580fbdbb4d8b42e4618c00060668f690bbda51112e08d074d858c8374c74ee80d664974f1ae0955e174f918a60e54eb22c8034eab1968d166e8edac0eeccd337387f5a0b61ae71d6428858cbccbf0ac0d137f78453da341944328db27249cf5e9e745da681af297f40317582cdc2ea3b7d71199930230e00bdee87fa43e95bd033147928e22077129f3c5a7e0f26815c6cea73a094e7458852455212ec8de562a976808ec0f3695dbd70e0329e7d44c832c64a5867c2b6299861e5794a823538cdef737dcff7f8484ff7a7d31e93be9dcaa480d39a843559d878638223b74948b6aea805232d79ecb48c4e62eee074328ed0e68f79429e0dc026ac6454cd77208d9ff3469542bf86102b1a0b6caa83a0c7c93310182858ec390d395db865d98ea5603be6be665e80a938ed64597afb15db10a92e354c3fd718b40a8d588aa42018a6eccfd35fabbbbed52c2301812dc722a913df0eae6f0708fb76fd8b5e837a2c0f56f00cc6de60fd5e914a1ed9e3f10dc8708b12cbbaf10c9b1c7a55934add6265256a5373e54aed42dc0d81eacaaeef96d78bccf157e7460d399a653b2bd6901cdda503e2200ca9abaa0684f9ea428f8082de67de51bc1e8c844be0fc818b2053357e745196e4f2c71d16da3b579dc39330902eb17b026fff073757286cc54c223075802a492b10f563ba64dc17827c148bc07c790b869d2ff4284c4c428779570fe35a69792050097a8fe6154fe37db4977272a7c986964bac982159b9a30dd322f529838485c654d9e8c6fa2fa050f122d908a2abd2cdc4b29a674ce27d429583a153168946b6d0fae7213590df70b1c498ef31bfa88b04a7a7229817e695b8a9540515843b62eedaa2907a005f39521a58334dfc2dfe7a3942ae0a37bdadd63a4291378c0d770fd82bdcae0d0d8f611db5783569b263d6c023b49dbca901b1fadc9cf65201d05287de5d5c7788cb24b00f3f889ff734619c27485f7620454158950eafd3c9825cb383cda6f425e79ad7b973eabaf24275b962749b1525a2cacc0021069682d70a4372e2b56503a52f99096681f5c2245699c92e0376986e02c388a89d37884239b01490972f1381e93be27c813b4100fff910219558d5d06761d9621fd75f48861963d8a67d4422caf30366aeb86ef7efffab8d50dd6b3ce92f194169d3197f68727d4b66b07906e9b8bd30266540a6caaebd896369ceeef263acd1c0fb370a27d5462597fb989d7ee97e7f310511cde2f7182085e214d81a3ed718b6d4f53839d76b6f68f57cc9ecd3f5a48b08d9bec21c6feccb8daaa9846b94d345230285df8efbac0d24f017242709106cfa8ce2a4d90f8303f129ee6cf591262c805c94ca94aec594ca103d8949f1e07a3e11b7d622fb939e723c7f2491307f47f14179a1908244fde9ea32a3e9b8c189dcce5e61ae22261d5acd04cc636f763dc0be1ba1aae230872862a807dc15c9961ef8e020045c1d99145012e62f3309c6152ff7d488cd853eaa61566d5c1a3c5f0b4a16798555434b13343eb4c53dc93cdc5715a40587237dfdac8a35b225286ce3953886e6c639773aebd66e60b16df2867c2d8a7829ccf2002de5f3484d031bd47ed048424e6d1289b17dc1754fd9b16e700fb386970a4ba52ab768fc90dfb6118811cfeef5f63da7ac9d17bd996a1fcf3480373ec5804fd93a0fa8fc555aa4764d39d5c317d293d36b0bf00ba2b4e1c748f3186835bc5e026305b9cd581bf743d0e115559c82c6699e5c801df3bd3b5ed8e5642197ae6a18211e169ede542c2c87cbb5d684de7776da49e04e1c95e4add8aa9131ed83ce51b0e5839ad413f3c9efe81c3ba474357604cf708620b8ab695693edb70747c34c311e9e3b4eaa080be5559f5967563c582204d6f7a535c91982019476e397a372ec4eab8e7b81ae21147153c77b41a36101bd33fba3b33bb189d124184953a548cf70c2a23e3986c4aec300540662534cc176e01a5802f4193b0680ab0085d7fb8593e583821c61b3ec8f08df9442b276269dfbadde2d2fa8a3c6f4c73263ac44d10c9840343ebe2f846685ed81b5ddf8b4bde61a2c7d32c8f8844d3fd775b30f40a2c96c55270895fa937c6c2ef968c6c6f82b036348873fa94ecee16673384a955aa0d0fb52819b0b670c15dc872753f1fbfd2a0ef7dbd9aa06e53cc42776dc0d54982b2aab81b9b9a8fc72935c2e644feb0de707de186c4010bbb51017559640d083cc181148f42a9a6cb6671e6e60f48257f4fbf93ad5bab95007e2a4c762f9cf6fe03e88217b01ab695916bce3d09804080910840a669f76d8272e15f9cdfe16e996e5bc618af225d1fef25c4e3737ab942a61cef08574e2488c773ccbe026489000f87d0a5e33544db847009740a4a98414bf5aa5321331756169a85ac66f604b0c621de48e296fbf0db441377af1401a1f3797e06550f180d09368b769c27c4b2ab287dec2aba5cce942b3d5448399903944db1bc34ad23aba570c2a2850351290ce8e6caa6dabf380dec59da12244e2f4b8da3c6785da877b8e86e4a5e630a661de67040088a58e1aadb2d9644ca3d59826f48117b39ac0f528a94dab06c786eb1202539379adc469ad6654cb385f2d7ec04d11fc57e4cabdd7619042dda31abf38917cad4f7d448349ffa9ec9112f12d39d73cdd1d00c5e6889337e057334701200437607e2ccdbf8a4b794afea80d5e3c8132e895de711963fc7972cd8ab79afb3108ef5eeeece52c49d4581e2d71ebd882748bd8c1b546b1560c9645a1c509761db733f32956bbbfe9c9689599a05b6f8fb453a3f5bbc7a02f8fae5571357d62d02a1d1db1a6c6564d36e8ab0122916606fbe511d5890700d53ba3d6df72778ec5d3d547e5a5fb1aae6ab778e8267d4475f6aa98b86c1f72a5161d0ab636bbd83210478915fd2fcfeea902f1b1af6d17ef35ce2c6aa547b02868d1aee5a860a13c254102a003009386f998ed1436d10347102885836117530739188979c81fd77ca3274201fb724e0cf7dee307a7a7295e251a507979336216c93a9a162f0c8e38a54b8dc0eb0b6fd6064581475a3bdff177b08e369368ab6364108466ee0780c44fa8d244857cf611af68482f0437f5b025e0104a9751ace979c653285039625f2f265d9f39fed662d92efc5361a87785b23f0b362744a8b6949eeeb8b495e197a5f95906fe57da6d7844de2e37328840271e9d4d10541227a36735e4bdfe42af6ad23b3c8143b82fb12f1208ec50ce2e30df351527d081fa47564fcd7e96db375f4af98cc6722556107d9832fe7495e1ec8294d611e51a740c302bac4cbc0ae80a0dc46315b6a0af42385b5dc2086825b06b4ef50bcbe9daadc12579282512dfd616f9f43f5f780256ae027ad7afebb6109139d287e10776d906fdf7bf3eafba204f89120c2943e9785b6b82f2c0c5082e58a9f12382840b9f652eedc8382c51942b1267d019b7245183b489214243e41ab5acf4e65b405393562cac63f265f615a9ef97158e0aff1bbb4722ee7b15345c669b3c6a7d60e5539bea0afea71ce20fcc2ecfd1128a33dbdda9b5a5ec866d22a0f64f35b94464088e0683bea137d5ec4442a1676638a3b4c7482d646b65db326a9024757504ac97a96e6c98d1fe54be95fb8cd422e8794ccad972ac61ae66e93a45e625af9466c6cb1132d91034ae00d24d5bd345d3e2cab6c75ab01c52085751bcb8117666a982ba0f2cf3f9867367d44357874988d4a72e7cc1252436167c3991f474b4547f42d8675659a21cc997afdb55032a683880c0408b8b66c5439c99f9d3d578a29b2b0659cc3e8bb90d5e8814984c60f180890cbd8bb6b0cc5d71281a87441c06705165dd6253160ba381044700f0a616cf311890941c9d082cd1c234f7c71a5f97362417e22a218803bddc51efd41091d6915387780a43d278dbb800bb724f1a6ae8882877c1e4ca11551e2bd687b937bd638e352a1e2074d27aa8b8669d66da9bc614481302e9b4e570684a680716cc288c2d7b9466e8a15109a1fe7b2b2e30b378b71a6544449c843e68a39a8955d7946e6424cbd413a7c44dae255cd57bc4dd26332dc791dc1642939ba4594464fd6272f86271873b78d52d6f9d6fd6338e6a2aa8e29ce7303dfdd3f1ebfaed3472e7569af82d552108d0660cc23cfa3857b7906f515a1769e2836c958b0a87e3ba6bf14d97dfc8491109bdcaf6ae775ac32ead0d0ecab1eb03161d33ce922ba70c3f6f65f33d5c8d373c1503f0c90bdb150104a424305da5ba55fccf256850871f64937f34a42cbd92a5924a7d1496d8c30967f1557e57f3c4219444c8e57dd17916a37144d7796619a0db7f51025366f8fd794e27ea36cb2eaca3fef607cf4466941f6b333f0a909277d28b60829ae8dd52b05fd77c06af38be8ee12b2cc5173e706275f2026f9828e2268585e21d538483918a645d817a0d77951e473f8cc4e8498e19412ac42ee4cb6b7fcc5c000482d2d512f60d58e7fd0de413400f195a0a6c5ca922d3a42b9cc290c8ccb0542c611d028bf477e0999264cfc25456ab4884592baeecc7fc9014c80a73ee630903d247bedf1ff77a39e0b042c9dab7dcaa4fde049dd6768d49e54b3c00d1ab8425090ee3e805c0e7fec6c173612f0ed3452ace1078f3bf89f817426c1a754ca14a17edc6e94643f3aac513e057e88b4082f164c43508ca04cd15996153f2a71bc9abf95f49e71342da557c7e4e8b85313a6c229ea874cf02c3947819813bb89321ae6330b141e8de3ff3062c9892a268a10c371cb2df13b4a0d88f043a0aa8145b87fdd64020f7af87005c043bf8c16c3694ab703b1789256ea1704dfffb432a940f52436bfafca62586975b23720c392d1d39a663f10e7880668a5767316d62717a58ee1817605ee5896dd61a24aede3e12bf6bc00c7ac4d7d5d9ea2c4d563ff0c10c12f2cd0936439f1f3440a05958e7f87cbfd28eef54b634c317a48221fa7ca51a529e95ff3e6403986097142fc6520f9e42ee29f1d41cca3ca171959afb87a8d32d72ed640fb1ed9e98eb34eacc6e2ac3fdc240d7245d4200e572a7317d5b356ef98fc95efc5a2dbe32c980d53430bc5f2181c63031e91897d44d77a8a791975b742ff0a77c204ce0b11912fe386c10fa0a02e91c14288718b552ea7586209c303d4b6be37650f7a2b0197ba66dcbdf20ff9e7170b1e647d39f765046f67aece8771789efaff1d87e5927fd98a6722573b2f69a28b6e1178d555c8e2691120ba976d0ee435799ab23d0e3227ca020132ccde585dc1dcad9b6f0442c8e29c4139278ed1b1ce22fc605848b7972f718b664e3902550e5cfef85d5c3669a26dc90b94e030cdce647f8db5b8db1b132bb5fb4cfd5f50279895e6de3f3b2a7bc3a7eb147885aa98c5e93b99c1d27cb0d4ff336bc6c48bb9b77d6d5c0f4b417fd1bdc88327d2010d76a9837ca3501e1627c46e307950aabf28053db1f4d685c5f23115c24248181d3f9d017895b1df8685d4b3879e992e10f34886a61819b7536bff3642e8178fca4d8e68130132c31151371c7f6e1a2e08deccf816130ee61a349bd5081b552ca26dcead9afa709425c9122e585ce1874c412a6ba9551fb2b7522d05a7dfa447a70d6be39cb485a26ecd61e0b38fe989580ab919fa3a7c5a05b54f12f1893cd09ec83ae9a25bdb1df0619ffe50f6249408d4a61cfcc498634fbc3a5333a054f4e37f4f1733d25c4da273963d604b79039c13a89393421295c6aa6777406c5e4cacab0421eca4902c69c4000e31387f918c2a65969325a01b052577e5546c01e915719615a62979751fd83bb6753765b22a9b8a69a562ff39b6dc77978214b14e07224454056cc4b4b5b10b71514b010c6b3b11e2a6a154cd471b3d6b8f1ae00009013edca416f8393d605e7dadb1c975fd5431783094861833cd35ede77b941272256e3338f8953a1a207ef085cf9754dd9b8978260dcab672949eea2468c5c711cf514d0858027fb012d0c25d75da6cb887f4d64cd6a4e3d90d8768aa2ef018cf12d312f878b02cd19e12499bd5c3f93072cb16f5bcf422918df17efac710e6e2fb6182227bd75502eaa81fbf17ecbbecade7192149a830213f6cd2b561f942f0f96347120716621d7a366ee1ed980c5a3503e0af5becf35b95048c4e08d4c3869971364672c50901c1b2d82172d2b61b6b1ba6412366bf44acec6c0721d94de55fe3a233166f746a8ef8680f76c46f76d202a5571fd9530b128cfd75027d99ac06d6bd2e58e428cd21b5f0e06561618c792af21ce8bc84d8a0c66662a9224e513b1e744fbeea11ca5fda748ae56b8952f2b14b8b971deb4ea510a50089b4e60dafc09118ccdf695888648d220e6b2bb5c3422e4465bcc57aa3839605eaf8cd054331e3261878ae160ae0efcd5f94b2e106dd2d2916531f4fdcfda9a9158536702e44b22f6d4715d37c4395ddc574a55d8be97c837c478eee04804a3a7fa67fb7fb4caa9747204dbb77f188203f9b6a6d4736a9a0e0ff69a4af7b599871122e567c83764e3f6cc46a4ae532a64487c5f0cb38bcb1886ec73f4fe4923bfddf56deed4e2acac59da657655d5a742b0688c6493ebdfabe7cb27f305649f39b9f1e41f9743741491f2ca4dd5f0425ea60f14d664b6b1e714df2a1e639567679a893767da8f31d4430391e142c6854b1a4c5e853510e15bacd1c4a0a000526cd56f67dda0e7922e9bcf1768d970e8c369e90ee957550e3b90a5f6c5fcb019958726bf16849b1aa41e4fc2b90995440b5d617526be5c24931ed9b281fab80e8ad1a23c57df4a9342755fbb14066349423d787e2ea51bb09797339bb2d4ee7bcc2dde06839aaaad1a9b6a79480a963503b019596645daefa74ab6b8f4f7934bb15c34ab3ac99ec05d0d8427d7cfd97c2aba8f80f39dd61c7dfae1a284dc261064c4001f0b33af4faa5fce083255b03ac34433e201493fb7769062aafea6b0c2615b658b8cf416ba1716198bdb79f0d7aa3bb0f5c064086cc07f8d6a0c83fdbef10d031fa8d5fba34f0b1a19878b3180d30a56fbd09ad36896cdb4bf9c5dd79ee16f80c030d091be0f30c26d825cbb2851f118231bcfd0a2037d8f540613214c8e4c0ff3124e12c487fa9741f7018f440ed477483dab9b00952dba10e8465000737c7a56115407c2588eaa47af8eb677a60c189f46fec511d39fc2091705ef8df0912ed1da1da038d73b239638bc4a78480a437d7ebbc15c5d1405fd7e0ef4b68cad09463463222ec901e8c9106bb5a0d1a8de073b558ec7fc2576bd22965d68828ff4aa33922e9150c085004271403c7e52fa81fc58bddf93380a758f1a65b4ae33781a610e928fe1698376835d1714ec401035d55bba86183cf0e4e2df2ce91ab68d90ef07fa21c05e782da074d1424f2fec1f0295e90f08985725a7569601700ee672f0d4ceca053184189881b0647f8fde7132057e09b4813ec9a8456131df7f242ccac8a1d1e142be1cd29ac03d16a4268881dac9cb01732fd4698e80000e1a170fac5ea23fa82ceac6029e4106b8be432c32ef377647719dea2d7dc7e717e10ae72ab8cee3a9540b98a932a0dc33f5808f1ccef5293d66dee7db2704884038ca4417b827b3d8e2d4a9c98373cbdc7324aa072c1a7c6c5e41cfc0513b55c52bdd027e3abb746e8398ecf8108df69b854dd012fa0b72c7a9ea312578abc15d0073e11e3608cb16011363920aa2a64b62d9da90ec5dc3b1939ce9d5964180dfbb8514e0c8b51e4e5a73e32588ca4b320f363763a60d36ffb392141394c728371c67be3036f40d07d159d5ce42466902c931d3170a29285517277483d10e1c178823630fbdaa445aadb569c283c532d06825e618e593ede3ec594350ddce4314382ed89448365a89329668a24b5792bff3795a8c4f2a6cb88f43ce6f13f803cecafc58e0788054d35d8dd365cbfc8755ff07724d0926d8666004737c6dc1182a2367413a395d6013f2ba5e5e4c96cb43815fa3f31041a5300ae6ad566a3574dd055e943d940130e1ba3e048850cc5517039acf31a5acfd43f232765ea7f4dedf26e196cf43bee984140f8308d2b1d33dbe551208cb2a96ddb85a0d61bf0d224c4ba0a48edf1e47ac05d2261e1336edac6455fa84dda915afb66d63b9b5dda0d001e2775478bd18cc61028a6f1c24637dc83565c65f4aa632d340ada64856f093a09ca3c60f9e3b4f25b71e0d43f40f00c61be945adb9a6b7ca86fca1764f8be843d74529b93290dbc6ee71ad4392a54f7be2649071f1da4ad0b439dad9ad52fdbbabfb5f67ded7bd0d0859f29a670749e97289f0cae51a3bd49bf1326679ad5a1a6742998e8e224243a7cb508c57f662bed3460bac7fb2a894fc814075e3a537f8ccf33acd84c018ea3c7f82b28bdd0508f7bc5ea48d301c20212d961c35602a6ef1438b2c3b22281014581aae3a7a98cc02b07849c0abcbb380ff67994b48ef3f4a16a080416204441469b7b21437aa0bdc08741b1d5bc01699968533d4c398bc5c9c0751e2db1c00c45f5a6694f8a187ffeece67791f60608518a09b0267386c8a3c2fd1e250e4fc2a174b1681d860dbcadbd1e3752401fdff1eb7802c79d3df0226657130aef6ac45de02252e41336f39adfde8687d010d3c334d8751e0e8d515bfb316cd8d59c3aeaf933d629fd41a472ccf81d0c4a36d2a5f78aab617008184933beadea99c7b7793950cd626c98815522caae3fb15b36006af3b7ee7378884349afcf944759d49e3f13219927849a4724eaee7c2390b93bd40912f1bbb98681e1c17af53e81a20e6455f5a90da6602e100ca86802beee0b736b70986802d8257773ae2350d54203fa1038c017e88f961f40af5f9d50b586a7f070afd5cc6cd22e43e0353851d7773d0d8546aca57d1936ee66a61cf5fe39eaf484d07c16d94e73844a5f0e582eee138c092fe33015b9d8096512c22a830864fd072ae7e78d04d810df5158d418b57d61b8e3718300ee4a2118a2ff070f72df7c88540f316ebd25feef94d6d02907fab3c5d3aef1f14309748aff49c2f718d51dc8c241f16addbd8781382d913fdd7ffe93681e11e166559b309f9585cec9fc79519932a6b9010df30e69bc8b74184a214bcdf130b09bf38f0fc16723410e2fe791641f4864a18d8f411a287c10c6eb348d4abbc413e30ce825bf3deba43ed1215ca3636acb196959efafc3005e6fc63e1b32a083edd87534534e49c3a8015132ea5ece8968e5403afdcc34af1a5e0ff8c5e188498369d79135db0ea96a8d312d7366cec0838182027a5068f86057219077946c35f7c3e10ecf3fbfa93ec101f23c999dd2f64e8e98d91fb60202ea1863bee271d80b7fc196485c0cc195c848000182b7ec3321386bc151b4779cc625fac0e30d04dc922ac79f775e930a0e080134d3c496ab8b8bb58c1b1a0b58278e765c10aa873c4ce32ea7a15098b7b46fc347ddcfa4cfde3f039d8607613dd0d8ae6d0892cf2e5817af3d7f13b22e6d773aa085af133004a85867867fcdd5be822251e2d5f789f18a440c08387792cfbe478e4d1204eb122bd070cdbdb5d867a76f0f316491a2f7b1fbee69b7c25331b19e876b8a3185afd225723bbf29f6ea5e54041d7f40a7816b9a20bb7d1dcbda12a11e96615630e895863b1a3508e4ae5cbff2fef957a9edd1df149a925a4c4ce9c7fcb466ca25fb17992b85f550c2c72f602065cc1b43a02254bd57904c14696f0d6226b713da394601304569e72dc9c3412e562f2c3a37a0e88e4ba23e95c66b30c14f83dfb7b8703044781d507c4d6fe63a1d6f57ef19dc81e806e07617393232930e399a0debd7a4670d88fe95745a24b627c847d2d4362ff5a606f357f2452514c1608304d60712ab9617ac2dd2d9af68e1840491480a81df64f25439e6dd2a32fd29688507143af75a45d371105ad8e8b515e78b5de7b22a7825eede83a7868b97bc2cbc294b606883e1a3170e549bc78a9b48703e0140100b250c6e7dea4aee917c7cd64af9b8a7710da522c2a190e483fcdd216695c778683508c18856a8f215f82062535fed0a2ad4eaed5769fbe50f05cda5320cdcf2032b3be3183c65074612c8c7c30cbe29ada03d3eb7a07b73d48df4f6be6fbec2f7d82c3438a678764eb209cca0a3108ea0602e8672e82c8cca1301775be296a757e8b217eebedbac44403e8d319767073df2a27543f56a49f62bc20ac4922fef850f3ef92f58a40ab5ba4532d57b0563b805c30281ed1ec241b950ce52372e675afe7eb3450795e00bffe901d84b7f14a3cd5309a985b98994441d481982746cf0c6cdb6d817aaab0c41bfff7262e71535d5f19aae32387212c67a90ab6b83f8b1dfa0dc0c86a5c425b59df1c5d9723e372b9dc7be9f6d0872bdbae24d51eef0dafffda71c0e9f52babaeb5882b895d2ddd38cfb033ebb3d248b94e6513caf915d200d3e657c476a3e21e9efeb6984d68ba7ae59ccea4656d6455ea2912903b0cf126a6535108d5a616b189a35d7b0bf474ae910a4f31a907bb3b66af22aec037610077aef6de38f51d85e55585cafd5e0d5c430d3b8941f0b07fe4bac02bfca1f44eefd42bbac60997d257fbb377b119d0ab617361a4ec2073e62ad8840f61e942452d0d31d44fba5b41fe509e7406febffdc760bd26f341ed63706038917e5ea1ccc0eff802cdea838f4921bc3b9701f4cf1c57cc72ff135cc96c729f81030483c4a6c41fdc9798697db41c176a17e22414c4ef6d1616e906868cdfb700038342c883c9c19279efedf764d9cf19d0def1474475b363596d02e3830ffd105e2dbba68d22b8b8a866acdc89c43d395f4206a1ce0e7b7bafab4d5419c5359dc491d621927a15a87a6ca826a8e9dbf07d6e7ccc3cc27cc90ef1143999c272c55b3761e9c8fddcdf3e8b46bcdb1b8335aeeef5ce1d78d64828039a2f0b3ab16864821d8dae73009630f901992034766b62dd15aca856c4e8c16de796c28fe0d0cab82c923effc8df439c492c7b33bf33b150683bf80bcc994465ae9d24b23fd34694e93e6b4693f2d35cee77f1d79ba74a5492b9db4d34b3f7d9a69583aebf403e9bc4a50501d6f412960d03da481caa38cb5044d81ed8461734ee9f741e5082d1cd8aa39661aff463ca9d193362999a49777309895efe6ba8c933c78001c7bee52aa57a4c9bd6227730463a93f245e39140d2a61417304fbaf993e34060d97f0f97cf40a5705e478a9d31e15e712def92221fd77946d1c2db7445de1e161a07f188da563d158e9e2fecde6353aa59031fbcf6235e0a5aec69be5e29afd5834353af6fcab94eaacda8ff19f51fd85e673ff383946cb52067c5f4fb6e71476c36093172dc6d54c0760ce45e0347a7083666c1f0dd5b50daa51b0f2d866f553e4dfcccb4fbe860496ad3c2a188679f1b6127ed92595f8ea3f68b624b32f052a9b8a306a139cd609b0bbb11e995a89f2e40a5620e915111a896c5f20957858b9943b430c4194b10292db3beca2c6c883a950b75442463b2c5545155bfdf594fbe5f9fdb1db2b16d5ecff53c26e45755ffe25c0fe49254cfcd9dbb645751fff4174701fee660567d57e02888beafed6d79793975c517d9cffd5266c51adc36f60d6ff37cbff0fdaaca8eede875a4fad1d601515a7f9d32ef797e8fbc7b4472c2aadffa30bb715d5bcffc24e296a02fd9f31fadfec5577c2c0ba68517141e39042a4b4e86c7318ff2a8800b0d3a0a862f06fff5c5554f3f03f8dd5ffcdf2ff433758547719a1628fa3c2b07f51c534bf3ce5bf38bf7e74fbdaa29afd7f82dd6151ddd7bf06587f043cff9c2fa845b524b3021f207a28bcc7b1a27290f60b09c8835cb213647dfb1b32fca97476c1788a38e2c5dd98ee8c986c507d4428872b2a8edeb2bed0f6c880ad4d45f5994abef42a40d92e2a5ea7de68ab6ce30751bf2d3c4535bf75c1d8ed960586fda009afa8568ddaa4a2a2f9c99bfffe8dbfc5d8fa6d64b5e36c9f5b992aaea5a82e35b32308a7d453b3e5363f384dd26e57057a50cd4320ac562aeab92653c987b43dba9b8cd9c24ff10d98848739aaf23d43c70df3f8df75f794bd0e626aa4e0ef35f137fddedbd4eb3d901803078247b9bba47723235627cd0ee19d97783d6989a272244bc4491afbb8a8dfa602d0936e10c73751539e31758858d0a859b027ca38a4fe7b83ffaa3d30cc8fa3fbe5edeff4614ff3aa85176dec8a19c217143aaae1eb6575c5e7ca9cacd7c3a3d04689d98d4fed36714b20996d67331f49110234ff75831a0fd3629b8c0869a223b1a0e187a45e110228ffba641a37217d6021bd69ac80aa8426f4da8e8d183d644a8912d66fa86e4dc4c8b54420c2433e172c81b08fa4224442260715956d294c537a67592a0351545d3458251eb1cb1ec440a1b0f075d54fd57a49672783721e055bdb543a24ac2768447f8d24cc7b7cee55eb42b1149af1ab9a4cc0ab422f9bd49367d0f1972999e785ac1557d1cce87c5bfd802f81e470ac61614b6b129d2f6166ff89e60e3934eebd554a70016f431153226c916805407d91f9662247071c219aa770a72462f9bfbd00a5a80e83fc2b04e47408cc8cf264053901607bb20c084058d229e472246c81529f8c90c4c2f844b1cf121b4184672168485403dc3729d5543fea32a8a91b43919ed35632f0cad877ce36dae87f7b1442e1276ab076ce8d0b21ad0bf0d551d702b0c0f018ab7d2458700d3add9015d0599250fee2cfbb225d51abbf5fc8c32b63c7edc5681d401985cc78f2b3f2839ef4a7889d075f9fd48c53895947d640f62a8c3e862d5527f05291a3e59046ae4112463394a8de6bf192c80b84d7708ecd5a9c844e05ba581a8993fbe018e4c8bd710ab6da81b84fec4b2ea97542c0b6713c0d0da9344c8996137434ea9d9af14b87655a9c3777c3a574348809b38d58ad1c303f0d73081817f9e9bba40548bab8d25bcd4436d6d6dc9a046a2bf631fa2a2a25e3297b3928bbcb555d01c60bfc332b621562e254961d93b72434f6471b1942722f0e2796375bf699f0239cb3675a52c66fef6caf6f844901ec491ab4dde11a988e24457c88335a3f110958c6f9f7cdb2e135a7eec44ef2b3c0985909b29d88e21efc9d690c84bf951c264b7ef7d6dc4ce75562506c683ff82c3b9806799a7336a9e1e354e24ef0c8f35bf57dd815a2454f8868d55e90b09fd5a2cc8011f3a0b92ce274207e1e936082f233961332eeecb64a6a6a19aab53d826466d4e873a0174ad6aa266d013fb32171e29bb8b26e54be894d15148b897e80ce744df7a0cd4a62ff75290d49c969b9a6215b8a1d1f1377b062fbfbd7bd0681227a0a291c404bbf246a921d6176fe29549434fc3a1f46e5e1f1132a231a902b3fb51de61213a88ec876e935703b2025297db184ed2b49bd2e075f3fb4b4315e13fed5a9121ed18fe84d9d4802f17d17e0098274295091ce52cb6d5d4f5f2787b2790b7680e40a22494bafcfe40ccacfccf595735d1f977112d70de8327e6de1eca5c2eddace3d15ce83706c04c834b6d9172c32964f8247d3052e38de2ab59f90143ac46620bd53e8098fc5d8724526c26d18eb75c4d0c82cd5f74d93d41f81de3a20d580310ef8c18b1ee1e84b0e427951a4dc01364bdc46d68dc701820e965899f3e7c029922b763e40f29d09a16fb028210393555dbdd5e5f7ed7b3d5f26946e37964c631a0c6a54fde72bb2e1c7f8da2a42a5b50e54df6e0b559dd3bddeb39105ce2783c127f3cc3542078e4367694aa7221ec703998870260d4788ca671aea15cc26f8983fa44dd5433beb9df66c29ae083b6834487e32cf1b3fc7b4ecc2540906419397e8c069f51842cc5111a6fcd7cebe65ea800b000a094b2522eee1fe50318d0fa760cdee11640e99b8c8e9875382d71f2803333ea50d48e848b3d16077ac5d04222f989bfa7f47ea54714bfc85ced1b5056cf3f62571e63e8774c0bdabb499ecfef652be7b8185f88dd0e66643149b002955c137bb0f22679e88206faf369e7fc546dfa34063e6b957c888b16e3d761d794c79c46441627c8c1d831f43dfc17fc337ce242294e7af979be42a89a2c184bd741125163f8300f95a5904453d82ff2c8cff32580f7db840a02b148d01f2d3a6ae525a34392d444fcf2b14f765f630af9767d393d8219784ad9700f2d481a991d5dfa893bb0b8483d91cedfb1f3697ef21dfd87cb758b7e9f0b910f210819043a6df48ead066510205312cf5a95664b4a08e163c4d705cca994b9abd86172093fa400aa217a1fa73fb5e34f9336cf6cfa09f224421f41949d5756815831f44d3ab1f09dfc36c3af2b6aa459b0790117cbbe6b8be147c546791b25ac2609a4726300472eb6901f8e0a98c60049cc8e64f3273c68c075a69d33f45e2cfe2574d477cd369e81bcaeefedb034421e71c702ff97825cca817a239ee6545360dfaee78f257a8ff460f3f4c953bc2848c4277ba99fb12079c1a5da4349934c784a2ccffa6a8656b8e76cb9d5422525df4857fa32b073209ac26d443fb5b351c9b84c0b44b9fdb53231f0abbddc0034d18edcde2cf513d0ff1df51c03212feebea1560f388db90f544c11eb4f071184146b5e59880598ab35dcb976dcb87b6fda2131befa0556efd886d05d2b105d47b45b128a5bb826169879f2f9bb01e7676c7984a0eab686e509c57e4cf99c785e18f3bbaf30f2e6741e831a84e1ab17664056b025e6a83de3c374cc51686efe8938b582b1be175281b3d8414e4698459209a2379cd3508c8ce2efe48442b2012a38328363a57be62bfde636d7b321c7036ea5554df60df8d677dedac2c3509041bc46b5ce7b41395eb4a71a946c9d5a4483abee42e8855cdef50229fe11219806f48a027f57b476ac533bc516cb054b812e795127f71a32923f916d483628e867308e5842257a998379d86e49bb8ef2cb49c851f678e91b0c4cf422edf616e539bb4c6e2262059a554b0756fe17a82148784e256091093d590cbce88fc80087a2339657cf768c215d448c785c866f682291215f9c1df95872b780ff4570f9f4be8dc32c2e4e744373b7907048fd7c627b37a6bd4c30e8727a3f0181695628a4fecafed3fe6e5409122be10dd8ef9e6136bec14afd60838e1ce0b07fffb7ee83d8af4e29553321d0127220fd91a14335f19fd4cd81b9f78e1ebb1a37a1a80b38abdae97d1cfcacae820675a3567bd3973352485787bee03f6707e5c40f14713785d83731097493576b1e7c3be8f362f71584a0503f4e6b1ce6b3d3f41acc29843ae10c297ace0fd6531ea573aedaf9feae83a9eb101b64ba2d7fa0ce7ff528b2d17211902dc215e5e4e5175d57d1423a38adc494508581389d4a46f2bf297279913b633f272d0c3eccd460f3171985ebad1ccddef8f69cd41e81b75383e58aa39834a4a29c5d45863cf8f454c430e20c3bd8846054f0f471a66e37cee1d402f8f0cbc6d1c421bc37b13e6a4b01eaffd4912b27e02afaf2b489ad3d1f79672a50b62b404ac3d6673495785e9407f04f46cca600f457de60cd0ebed5d12851b7f238ce9176154fc83b941ab19f60f913823fbdf2e72728af98a50da58e5e09fc911765bd8395221e56e6e78103a950372812242cb545e1c69b6c110f4c17598bc1984ea80a8f76ed63e580dcdd1027984b38602b8e00f9ab481e4bb60f1645f8c8c253ba2205b64001c034a0841a24e1900973da2817947c52a9320282283904e084d946f7f3e433e08c8b3c70be42de3ea148415039017cdcf15bc897ae08da84c1e999058ccc685ea80399ecb1b972c90822f20dd7704f7d5ddc90676607e37ab1fb8651c06e1691ab00b493593fb1535ab65e4cd514b03c0bd5195326abfab7a7fd706f49dd98672cac4edd7604a9f0e661d7b5879cde1a08780c3f9d3f2b44bf31b4ee2535be8822627f540dfd8f4cfe0f12d083fdf091a235a8cdce1cd591d83c660f7a8f2ecaa73e723947f734b3b305e8b28636cc7b234d51086b14626af4ba1a2798b73d147c6b1b9c00634e011055841ceb586542adb300732fd528073831c53a6e74cf4e0d472d2bbf60f3593f5f50860f994ce7a0e457c85127ec9344afeb0c29cbf9a981db518f11dcc547803ef7c11ab9c4de5dc6581abd565f56fb463dc845ee6df3f01e248e50c8df0fe7c7db5020e3ded1ca8a94fab77ad2f684ca382e01c42f3e10cc3f56d238c78774cecc2ddb5ff2299c5a227d9a1ab251f091c1c73db6e952405fea0a92770dfabb07109e5938bd6a6c17318a2b078e6dbab8dab137df88267f8d527d5cdf992ab3664ea538ac1d8b09f983f708cc6299c8cadf602b5fdcd5006255ad6e2178ef1e494020c37e87d28ac208c52050d71a868ae31f7a144936fb1b330b617a93f21463dd4d907e1a8ddeecf2266e6bc187e0b8ffa009fcbf76ce3f5f6329682d7a5f6390bac3a32f43f7cace8e0089f3442dca0880f02cfc61f82a957bd1fa4e4c8725f8d1ae1497d06150d02786a56942a3e7f3b7c55f14b1a068ec75fb8d5c4937805b201b57ac2d03911f76dd4c10c5951f6eb7117f5fe10132d9a5e2673af7e564861726f468ec93dea1e7f0b755e166653f9e0dc24a9ec3516a57eb58f6017bf3005f5c6930cd2c2181777b001b7e726176f8d01bb821dbbb91dc3242b3721904ea591003b95119463ba9200179f877801982e9ac1eb5b4ba9730d90f579402503ad36f9bf0d90818645c999eed0eb43e9efb4ef4800623a5fcc0e189f0f6f0dcfb700c300a85de99f9e270f8b8999c544017a0be97bf7ee12452e3c9b298a19e107d6e143bf90f94a3ee460042dc8a83ee9112905f0962a967bbab4dcb73a0e30e2627377dc1191c1085b2c748e91d0d57fdad9ba1d4b8bd0d6b66fa49257b61ddfdc7bfc0277658d19c801821cc89e6fb50d997639e38b4525406a23a468c4b6f8b10520196c2d5a3021223c3a1db9d3bfbf5e6d2baa861b763372da666c9c9a480da4b25cc26269452c51a8f4ef3b31633d8ba495f7b62e98a9cbef94d4e3cc903a14534ef147a0ec0a89641bb68ff94b8e22f3e201d14b6219c38b1b9b8aebfc0bf3938f2e8c20042cdbab89e0e939ad5cc45021976c18447e19f067b4312c55722338403756f8eb99da62e91988961d722f7400a5d1977329ebce1599427e6fd0c42fe028f8c111507ed746ba2176bcb05410ba8084fa2c39780e1fb6a2a984bef187d6e6e7f5ff05b1f9221556cbe87cdbb5423910e53a386129e566f9f9cb5677831905395f39881a0299551896f7066ef6f93fd27335d7eb46634edd9b003734b307047d36b205edfabd1408c10d546d30f994325f20083cfe6225225ef500ee2401306d6f127a0c4561d4babed6c8d921b8f15cb29b1d602d8971b6e20a7d35dea18c000d3229c3ecc09a90d54a41f25e9e42570438e02b06dbc5c9fda16e45a000b852df830e3f6288bb3f629f9657ed539f453988bc42a9eba316128521f7cd5053513117b09c23848e381a304b3a56d229ef24108ce714cef21662078d27fb305159d698d804d0a0c8745588f8620c5de5ac369aae5936d301d21c36a4c01fc494035dc1f9a72fe518eb17b78ce3f330ca66216c98dcceedb30fa35e5c9958e3f02309be5804c6fe6a958282c88345a83977aea0f2ce8d12504016001305c7a51e5178c0195b86dfc22d5bab7ac4f3739be1dc41a98ba1df9853eb7b3ef61498aff704dea7bd3d1018583c21b25171af7630b6a2eec061e63b7cde3f90f6995afbde0fdfc2a3ab517638162cd01a7433b8419b9ec2ee510404016b3010907c2f71a2521aa97f696898994d52b5c1cdae5f80f6b4e8a75b47afefffe8cfdc509fd8da7ad1095fdaedfbfaf0feddedacb7394a019d85a153e40ff275b6d557b0dc0a008cf5e992df994d0ff59b4576bdaeac0d4dbb88cf5fc21db8a2f7dca84caa9db32efaf306840c03da2396725820ce61950e03c936e082c9d319154add78949efa902ef5ac0d26c2a152d00c2d693aaab055a12ef9ef297a551270400170c2e5ed33b4a43f39426adcbab7f85d242f968a4e8bf7f2b343b463edc8277bef2db7943225290301070007f8065745b64b8ae3385a68224f1b103bc023b63b424cdd01424955679aa44dee89bdb0ccf0cd99c4e18b4bbf3dd2304fccdddb13868c1c5487ed0aa55bf661cfb87723fcfdff3fe9d7c07c25a5948274b657eb4dedb43fd3adbdf3f35a7dacb4c37c9f099fb37fce39c1e66827f17d2ba884dddddddddd2114812baedcb5532ae6ae9d32658a67cd1ac775d16cc139917db0652958b070e1a208734438034a3455f47bbd4444454444444444444445ee6ebb6ce55aa713dd9294f198967c7129e3d5c39e316148d105337bee0c39f3e308b0cc960172599482858becd30c9b387a321d93018de267dcb3c6d0ef4e76aa273bedc3d44fd9bf9b44c9de560e7ad696b7992058fc8092fdf66388ecff3964ffd9ad894ff61b1033d9ff0595ec1f4386d310d97f04128864ff11bcc9fe356e040182f64443530f2821b7282a215e55574290c06aa4791bb2430d8a169134940bca4af6a75d5e5058d99f7e3dd18a60354141193113758215aaa5aa233c5c6129d18292fd86844ff6a75b196626a45ab914cab495be732146ebda769c2646d48c10e112220d591e4d6fe94b1cec011d8acc20049c292643c8b6d6da2a61f94217647f1c4ec9ee032abb2ce9477be971e5c9a4b165ff0fcf169efd8a921ecae60068952771eff7718dfa4fa7579441696ee4ffa245ae16f6fd33a0019a44eb5023ff356bdebca953a7a45126501368b64ee998a051611d12822a5c5f2d3459e35485479563849590163cc1bad26788ae3b733bcc790f61acb0f818d1c5cc991b2c99ebedb8e0ca8e2a314a5c38c1696a015101c321a2797ce10174cc71b4db438960c00d54766a6576e0c164da9034e56125f7ad070b3ab0903192258922649ef28079de7aa0c0f57595e763e15aa895e79c73cef9e5512e95321d6bd6dabf9cbd77ec19753f829bd028f489c260d8598f7255bab396ef02f28cfb9c576e9cf356579a46f3ada51867d05f621d3607edaec8373d89a45a8ee0266194925ab919cc269c7164f34ed7d127ac84396badb5d6da5ba9157895c396c3cc776dbddf5d5bedb5d5cef21d2157cb5d5beb48491d5d8eeebb8452ab3c6914dae408d592a74de9e98832cdfabc1ed99d382fdc2849464515b692d751d78cebb764b6508bd6bc7240512b2a7a95c31652ab1c663eaa4e49e9e86836fbbfb3469f720e3d628c39b394cafb65a1d7b464bf4f6bb556c3ca7eed08a04831e5029ba6cf29ba4fa59ecd9761afd5aa8c754e0ace1d83e603b9f65c30ed49a153c1931f27543dfd1082862346744b1a641e59446ec883c4e685c7173d03c157e8642f23e2b82038cc711c47454b4a0e51aa04914201c9958a24cb098f538127599878c9c982e3c475574ae3ba9e1d4d1b539bef5fcc1b539ddc8f652f8be57963b23169795440bc90cb236f89294a5518e679633a7263f2c1b4630ed72414caf3b624c4750a83f2bc2d717530843f79de96ca74566e4b60bc2ce197e76d098b024b57b8ce89c3a520b9941d11eabc6e8824402cbcf1c95662cb4928042ac8d6140b5203bac1c74f90ae70cb1098d355ac4a117008d7cf13211f102d188f22423c2790478fa7cec9f60d01859f9abc3943b8aa6e8bc805d28575b05c5c96531552bb3238b9902fdb42530781aa549a280843a2fcb623ca8893577f8b3ba06cd79017feaaf7948e9ca61f0c82e152cd3d5ae8b101137a65b8841c0e9d5308e372b3844056ac11a107c50e8124c34067c88d13fee469a343c359215010476d44bfcbcd9023a523164a20f8c03184384f5b979a5ce2a510ccd3d69543eee684b03c6d5db59c44011ad7871b87b63b6872cdf3468b21979fbdc62c7c5fe732ac945dc6f5b5b862f76bafadb5d6d1dd6977777777779b50f2d1f66a3b7bb1ad7e394e4986655e937d7dd1fe1cbe2f6a234ddcd9ceabb6daea9e87ef46e28b9ed5cf03dbdd56b715f460f4939294c27fef9779cdd660de0b37d2b2793f2f6ab3c5e44261c2d6a6f6daa697bb4db9210a50b23ecd40798e4a1cb8373491c54c53f4acda6967e759adc74a1a332bec2613998e26d44c636a65a63c47b10c634dc39f9fa6f3c7da8a6df866df7bff855f117f27362991f73d91c90726ef372991dddbcb35ee3e10f613fb3ef004b556a8ba588e16c37e622150d0cfec6e53a0b28dced94729a55869ae4a1c98330c4d008941f54bafb596a042a289143f41611038832efe3bc71976e4b80f276c68e2f738ec46553c016ef1af3bc269b39a9e98334fc82e00cbfad32706e0d098bd8e77ac6d82cb0fac1bc47347d8ff79dc58ebf469c7fb2b94bac9260963cce18fe3525c0daeaac36aa1065342fa0d82ded8ddc1155442faeeee1ec3efe592662978c491829f28d88a75dc72393a6b955dae5e1077de27644be06b391d2cbe1c9e02c2f0b59c0e165f0e4f81fdf4e9c44b7e3f60275af28b819d5849273f20b0139bfc82c04ea4a4277e6258a3042c84300b95c03fc9fa3f30187872778aeda66261d7513c15024df1a680826047b3d90c840ee57d3c0a85f74bf07ae2cdfe60235d136ab62eb21d6dd89a0afd1e9eddff79ed469d57bb11acd53d094aebfb083ca96dd1083c09bce149dfd3266dcaf3cba9359647992b8afd50980660ff8d39863040c9ef29f98d4d2009fba64a327def03937472d03d2852b26122541236fa588a91df37792f0c19df382707ddf592bbffc2257321cc2fb46328291d1dcd669fbba9a5e525e32e0e0b617af1c65b54d435e7c3fcb66e7f9c515b880f37d205321427aa09a112414061ec07067e5e87b96bab379dd6dd73501ddeb0a8157942fa2bf2b8d79dae38f56778fdc0bf295d617f9445f9eb59cdfd29c016fc79f19296ace4e720283af955f0c244ef67fe623796e97ba1e5862050e754811fec465cff8e10a8993e5773d3aff7bd762ad55e7bcbfb9dfd7bbbb1fe8745ce8ea58e6c692e812641455badb57786b59eaf5880b9c1d460cefab127ad9844f4839f2bfa33e8cf449d2bf7994e3804810cb8ff0f0fe0a7049a44b67fdf67d08a6967e7c38d8401f8617041966514d7829c9d463013e416ca257250febcef0341d0c558fe7e404e9ce44f0c7411cc5f08baf8e50f0874d1cb5f0990c399cbd7e60f05e862cd9f0c74d1f377014874c110063f3ed615581cb99bba0f76c20bf2bc2da1bd094fe47993aa4325c5c3124e2a4cc52188e37449613902474a2aea872b292722706c51449c10070b873894618fca4b851be469b35324974742c20bf2b4d5f9ca13a2c8d356c74d0c7576002289064342fa5ae1556a1aca1ebbbb4b1912a1c9fe267bc4c1829b83f66d431b83fc433882cb6c8e7118ca64ffb31b1a080947e8ffba31bfe697adb6ba25c939e7cf4979a843505c6badf55ace626bf1c85d5937f50ee8021ce4b34e21fd2a809f1dc9e605303c4db7d79f2abcda5ecc610e0871ceaa00ca0db4b5d676e5c07a31b6360e14e85fb5757c3b39fbaf74c5d0621c42adb5d6103e37a6b5a12e0e358e28bb09354fdbd1d16cf62f9351a8282577a740931e5a17422b7129a46fa285b0eca626da04e47b269125e4fc79e29b9e444e4fc2f48d98196a705ec8c2a25ce0a0e1a25fb07ae8f2b696ce6a2de922bdbac18a560ea794c8e7e549145513440c5c648b96c812f26b1e526ade022e5768d5ab8621660bb4a8f075a1587969a251a2ee50611bc45461755a32b840f36e73a03ed0c5c9a7ce538d6c91003f901fd8e48b0d06ba38f140e1c345b6d8386c21bf9ff0e795b8a240912d8e58c81c4d9b4badb55619f5b798c31d5aef1e2f05bd56af3de38854191e649b8764bc70a3696d19c6c1508fb72b7b4332fc39c834d31101998e3af2d7f64e9ea58e6cb9a68af99ee9cfa942c98deacf3ae2c841fab8c3f7615bbd3d3033adad3586e24748e75b9bfd5a8d982ae6cb8860e5f91eac09e97c0fccf8f7d7318cddab3c9fe338cedadb94adadae076371da313d9bd8da115bad9ecd178784f403fbb8d6faf78baea8b556112cd93f7bc491c3e6e8fef800d1f66ab93157cffda21ff8cfbf46cc16e0cfbf5557b55c86e18cebb7f2f4b2796979d5b03c29f4e2f2eaeaa4900be33094c9aeae6454611414549e2194ec32e59897ed63f5e4190b87c0c9f3ad9bf941f864e3d8ae46e29a2deccff9d6d69c67edf53ed07e1fe87520ac7aded761d88f779d87b99fd88dc733e895a6965fdf7aae175b42fa1e972785e0582919240e601ad92f21da0f4ba407841916823855d87fd13018f5ed0a2e47cefa6198035a0b280e358066f03bd35c024d6262aff0cbcbcbcb2bb74c089727795c6dd4fd1e8009af3cc9eb72a3fe10cbc297795cff41e5feab12a3075b82c4a269f43d508afc7d08e5495e184285503fff4520e3307bef71810fc6c632fc193f0e64fc74f6793f6bfe7064fcf43b11ac73084a9717c7cb93bc3b1d3ed10f3c371f53531f5af6f4c0099f72bfc73555f48b4e1e577b5c1e579e2b2e47f53d5088014918255d6d6a681206890db344f47ca040d3a6c70a4880a1c10a12fc2507219562c9b261c458e7a1490ac90f4e8ae4599226eb059cc525005e8f16b2c028a1e1d683114976e63cd9d266abc987100c110dfc4b094ec00245c6cc52162d1ac832670839533600e921ab2b28cb8821365490609119e2081582e0833b1c6686eeead04d6982e1cd983234a8253534753514116aa3c30a0c6762c05244eb871f6cb09beb04c651c9a262b3b2ae781e0fcb5e1635c744ad69a18725b0bd93ab439c8724bc79dea2dcd85113e41665fb7e68dd89aae11a6e513184b869308e4aaeb99c3ee4727e51261a1585875c522c4a63b9a475f264c1092ff050e4842a208a90e5cc023cf0f045c64627cb0eb29c5dd38b36e5a65026b8ea618d5498206c90204b5aa504e64c0e61725092041eb2a457d496fb27f58a2ae279a2a2fa298d4a85dc4f6b5154723fa685b2306a299733a6a32f970bc25928b9e0fa0431e951075eb5d73fb8a08c8ee7254f892c2f71ec4f9e37255a50b24230cf9b922db93ce2b4429ce74d89162b205558f3bc290977aa68343286704e0afe583b5e114f15d45a285805461c39c81eaf4c24f6107943bac8020c4997947025a921ca0f1b7850dda082b8044b114aac1047182173c12a7a5043d611f2e3c02a22255952457e18aca2076dae92905fc7e60a49140face2c423c6c9870face2afa121c1058255c4f16ec28c4142e6e8400a9337647d1771d02a7bc81c424ec83a5671b699227303e9e23cc387ecbaca6d93c366863fd6d24f1ac20409d245a12f9ec2378b4c784ae9acc0378b64619d481356717c30bcf2bbbbbb5bfc7ec2400b83d5469af393cdffa2598afe81894f2416cd8e58b878e11ffb212c414aa97ff8b63db7d7b8bbf79af995958291dc5f6b38ccf596bb7b9f71776793e97b7f95c9929bcd9adb3668a6b59baa7177ef347da6c8ddddf61aec3277f7dabde6a8d5f4dd127277afb567b3aa2685bb7bafa9ad66acdd5beeeeed6a6ceee349aa6d50dc902631406d8d1d420088fcc81ad1502eca55c51851e14cd75592a5aead7b77d8b103891db433b5d1d446238a192c7975d9410f97958fd6e3577d45cb097ee52fc69b5a872b4bde44bd6a0a4580502fad9f2658424c2d281be630416d592e5eba64fa5bf78a52d9a6dc2b17404d595068b840536bb5f6d6f432bdc4b8baf038d328501a8d8287c9327306fb96579b6ec0fcf06a3ad8afd486f0341a6d87d90563e468997179936b0b3b1afb362bf603cc9bac2da2223146542012ea406acc1ca1da686ca09c2c4b6c5b4e69341acd86a7e1308d46b3c1a1a1c1a2c4960e7068b000cf503953054c4323058a14f45ca191024d37ad891ac9469db59a66ebbbc91095e9d6168d231354ce54399211e00c15343464366e48a3d16c5c4ae909b037c579c2e8f3f89ec26034edea3e615dc708e8f0517105c19e799d6e6bad3ee703aab3c59216518f6d8f326ec6e4fedaa006627996716366aa825f6e51b6b2509e37286432fe69e48da58d9b61de738f394f9c81df01337f9c58ce5aee0adf13cb17991361ef8936ee0cf0699e30ef71f93d6c2c218324924822cfe0667ca38d9bb9b77173799ffb8f76e20cefbd710637ce180ac1bee7bde84e4747fd062cd8a7a4678c952d3b33b0214296321ac2dc1a68c0e184d7e4c1973759a4aa7e90f3dda0e050b10679dea054650cf2bc411942e79b4562e8d8c8696248481f02971e2141043d739cab38690dd55126a842da54473412ed17ed6e6d7094f67ddc57d6b35a024a581211856135f2cdf76c82294c1aead74176ef7fc393867a94c134dda8c674a34efcbeeb1e7c11ba07471c56baeb5184eebfce1bbbef460ae74a9d15962cd5a0d1c82337f2cf72482b27f072fd164f40738b267684e5f4aae149267a84e5e4ba4302976588d033b7d1a61a3720c03d09e687341a2dcf11808e08cb39a96c9587e18863322824c9fdb5311e5a14801629b207b964f1c48c93dc2ff392fb7faa4dee9f49e5a672a3f446f6848a05c6a187f99c429ce7ed49d47d2ae2f9f0c449c8931e2c58272d38d2446a4eb6a46040d59c80410283c8573f97430d6278844130805161900a638240f243103f383378be38356198a70d4f1700f2b47989f1e19b5e6b7577ff5ac770d6fecf80ced93da1edf572cee1ee67f9fb92b6e28e72453ebbeacd5a6bbd6dedd0eeee76f739e79cb367cf9e4a476ee4ee2ef3ae2fab5cc7e3526b6badb55a7707359812d23ae79c47d36badb5d65a5ff86691f7bc6f6bad0e54e79cd77ed9596be79c9f091026fb89812168ad6da439a7b576cee9c5c039a7d2911bcd5a6badb53ad80e8bddaf97bb2f7323ea312853535353754a9d9a9a9a9a9aaab656d529766aca4ad514a787b6577bb98e3b0205d5242aaaf32e65a2d126cf121a43642605dd42b7d4f0c2f1f58155045c344680a90c1b074680f9d14cd6b0f901c502c16f059a456b3d6bad36c2a21f501a6855ee2e14cb663bd22d20a01081185a93fecca25bda684603dd92fbc10f73b07fee5aaeeb2e08ecd5824ca9158a38746add9c38652b00aa2b5aa10db72654f01686024391a64eb6b53c867e56b6d9bec5d6d645c98e14a6ccf0d5c47e8c8aedbffd91ad182bd9da0f2d8c277ddef440a74a9e1a485b6bad56c2f2bf47f6be3199cafdd5719422fb73866cbf36528a6c97ccc9f61b06c3566b2d9633d93e088d1466fb31ec47a0adb5d6eb2f6102666886b0735965a0a010fd233ace82ae42daa7962d6dcab628dba750f4482345090d11d6a71f444358e2fc9884b75fd6ce223bce0899640ad6304e58d64a4713b08d9bc12c3a9618a45f3872fdd4d7d41372c212cc7e1fcf24fc378c6151e456d442a4b296762884fbdc73633914255f2a3b9a209465cea6bb6bb750cf6c9d301b9ddba5b27e16cd2ea83c8dfcfdd53cecc554e1bf35a7077481205d3d9b59b93efdc4dc61176bd4652dd47d7d163349368b665299028b9c78c531ec9950cfe6d79a95ddfbe2a918dbda359deedeffa2a56cb5f6defbd55a6bab15e2388ebb1978f7782679df8d0151fe58ca7361c5097bd2e8c06449149b0e26a0101182c4ca8e94145b0bd9412273ea64b913654c9025283e6dea7c41e1863e3308b1e4137380012039c245cfad6a4a4b14e72427851a6a538228f3e4858f06515ae043844a1d3c559e95075c886386ce55d50d743c480a676a75c0703112857be8e084291f6c52b093664d5d81050b34ac19b21404535554b74586ec8fa36e0f069059a2a40f973c607c4c07040a47682c5c69e2c5737292fdb1147744922f4b8931437a2011030f5a5ab54d100e44a4e0d4c34a1e1fa2ee157f2c051a996988c07326c994141a6e3d47470a39ac81a384cf0a397459d259b5487244952c5053a2a4c123812878d23819b161091fcb030664981421a4c89a1b93630972d282aa3e5235da90280f4f0786d0010995a53a5288a8674020074d9f21564a86ac89fa9efcb1d40e2b40e552d641a63bac402bcab4d68e5c64eec7dc0d8a08713bb076e4f18fc84e0365b29e296d60242c65d45fc78f3368b0981903430d07b20c61e893fd6b11d98508224b192f6a92c8f142c240000ee1cd7b32b54bc6b80993a429062c575e90220fe8700493275b98a2be6aa62f3c79f8a55f50f3421f186cc8fdfe5a987e423138c50b564e1cf182927ca2ca903f2b33ecd39f2dacb8c154d14f6bb93f057d23b21630c3df4729f7ed58933ab0c51081c651b7db0d94584071df60b6987c961290fb8e4398e4e0a92663841731aae83246e87fd11f03ca53c1feec5a7bce19a5b368b6a0426349c3bebbbbfb84bd7d9818f6accabe3a5bfcdc0a838d313e3055d4e8a40350dd606a526bad55b9c2bacd084450b970fe2e581bc9849fb78133a780264c96f8125f9a28815d94b8458d04f4f36729c21731f61a35054c04df45a06f31f60e830164c3661028a6e40d83011b87204033ec1d4033ec03313c29451bf96c5609cbe955a391beeebb231573c5cfbd3f2309464e3868975cbdffbe7e0d124cb051c2fe036163d919f63fdf6219863d74902a087a16ac20e87d5072ba51f7f7b01272340056020cc6e77d6fc373f7d89358b08212ef839225be8e4332823e68c441c9a0d09330598f54cc15f5b915b9a6982a6af5b21df154b115de68a412d7b0d1c2cb3548bce146f54b982a6a4c151c2009c5a15a6b2dbcc1a757afee7d7d6aea3ebffa9c1f9b3972ec69ec5ff48c7d1563e3f7ac9d163ac9f3668455aeb99b684de91214d9cb542c813a80cb3317738e1ed5b3d88cc56ccc4e2b2d51575697524a4570f7d8777737adbbbb5b29971db394d6148bc5622258b5c9ad94e7f42a9ee44dfe3455b437b1109694468b817798d026f48ea9a28946699dd4016d6aaba658564d5aa2aeac6a6d6a8f6a03e47eaf3255b45b59b7eaa4035069a935d21cb3d51e95bb3d2bb79bc9ed6c727b9cdc6f27f5a8462abd4aee261dc57995d9a2c9932853f7534a9b2ada00533628222ca7191270f7fd1c10818dc671efd723a5167a6a1f167b2a964d9b352a558402d991296d168a33ec3215124b8873ceefa9088b4d3cc5ef673a97dd7249e010038ddf3f2367ee0913c1ca101e75e4f0276c041c3ac8f03978eafea6f57bfd340679402ab45a664a57a6fff589329e956999295a7289cb4c999281f22c33252a9799e264ffc6ed7b2b6dbab5bf40cfa9bbfb8650834b328a4ed11d5ad1b3dfe1dafda52f44d065738f24f4cc5170fbde7a6bdf68a4721291b9707840720966a763f7df776729eafcdbddb34512a60affd93467520736282d55d995b6341413c85544562e295511585758f42a7195f30beb81a2542b09371a69de5cc092fd715014cc16d666123c49461bf98b305578368095d0bfa44a409a660b8a8b50a94c5100913e5064c10abef741c9efbffb13fbb1ecbc5abbbb69d75a6b77d7172e76b436fe86756ddbf6da0db6c2068952d0282a896acfe8ec19ee1242542b0e4d30516fb0c849a6880c55e4478fc0d1a257ba507991a16c4f5886637c18a165412b521580b8b922eb05adb8002275b8c82a8e58c88f03ed0a22c2be61d1ca65512e5ddcaa3ce5fed95137bd9fa110702e73647f4a99e4c1d244d617947648f122ef5cc143233b8d9a2d4d138c0b2dd4f6f488dad3a60e549257932bf2e3c0168980902ee2a05d6a4f4ec81c778bbb787674d808b9e2f261e07befbfd1fbf9569aac44755df73a32c61dc6dc1791589ce4bdd77a4d04b54adba12b9720cccb4c532ea76d87ad30a9c96babdbc95e279760ad2416e73492c2f50c8f325a9c6f080338689d2bd2fbee6dd0ac8121fa28b0481c28b0c8efbba71c3c859f272067cb072f5547ba4ce9980109255439c06083172672b6c04e9218fa3051f2c38b040188ed0ad51e3a3fd821fbadb6f22ccf9b150bf966f595e7cdaaeb66b52387b305ed6cb952c77f781c8a31337e1d798a252ec16ccb1bb92bbc5529225ff7e7441d998a363cdf91bea12ba657b1ba93cfabedee765c9c22b06b43d51a273007219f97270f0b486725087602c555399d70ab684e564fed7a721bd410e9baaeeba4d832c7711c77b99b94accc3d911cc771dcb5a15e2b1e55d18b62c87e86803c6f527ae49be74d0a975c1ed9c21df3840f5896e8d01a0a539e1b6a53cb4d13216c34d2b1dcaef4089cb5a864edf814b564664c0400000208f3150000200c0a8703e2803016a792aaba0714800d6e883a72543298c8825190e2208a611808629021c000409031c010e5d4dc0d706260ff91457b5f01353193402f72bab5eb96235f5f397a294e112b7ac4b82985396245f84e0c24aa7e109a93b73c63d6b489fee112f7931643ce8c30a31377d1d37cda4748603df18c3b6247653ab958487a9173ecffd586fea4b6d412a877390f3a96d40f7a847cede324f69557ece127f5f96d9301d9fba4a83a3749dc7338c596ee5f2ce49e5262a6c093b33f7dc3ce808f4efb0889bda4c53f792f12f83143de4b10a4ed154e9c88fdd7cad33f4e42f691a3ffb800206326a15f9500b2080274cfeec312a9f7ebcca958bd8fe7695eddc725f44667b1f4e882207f3f707622f65f234ffb3889dcbf9c3811eb4f945fffa084fd49c7058dd28c276ed6025530e5e9fbf4a7f2096798ba161bddf88fc4557ab614f294b2f2b2f3ef4c3c15eaefde607116ea5501357f2f7aae2846669c96c345c185a29a5e3961214689ff5c35e13631ff2fbb8514458965bdf1d8b2f3b8308c1f38276f0d7b8b05cf9722c0ea8b5102681fe1169a704abb0104bbad057c6483658634b5b6be47b280f48685a2282ca179c57d2cb6d215b34469264b6ba87b0de6a7ba830e33ee2ca624ce9886e5d27d553df0c415eb92304d9b5bc62f4c444f07967e752a884ff55013221a454f4eff02da4aa9ba7c84370a4f996112868f3eda4671c004dd4fb7f69f272d25c214ce3d254001611877a5d9eeea29191994f42805f3c1eaca5d991e392105d2555e6479ecafaf302535071130ce619a59049bf1b6e4f6aef6f6da6a5942468acfa81e30b37052d5955966906e46504ecc2de1a0b1a0749db70ee129a645203ede094b64ef7e5a2321b3496cddc657b5221ebb1e49808a15c43c0312bc214799920bbb27aa906231adae80686041dd6e85cb8c0a04d39872fa33e6f8e8e9a691acfca024e1f9a78223e0eb119870a8ac3b5d7566e6e42bf7286871696b852a230b4d3b7b5663951de0a2283f79bb875139b8fce6919189c02523a9de9235dd02a39269afc5a58a1eb46f02dbd55ae30ebb3367bf5c78dcc217c98b8781963a8b59895fa556b79bbb8e734f48ab2bf5e12fb6ebf34d3de28d3fa53ffbd4089253ad94eb20d25e350887cb8e08c2c7785cd5fada830a2de069bdfde38cffbc7fff618bff057ffc5fa46afa3a9ae6bf198295d5cb0c63683410168ac14287d894195e8106468ddf256181092206e6e017e951178ff5691e9191633e31e6a18161172af2423cdf315a1d4b7c6922d331332079c2c04cd0154cb14943f3ee18988b50604869a570f987d469e92e8be3afe175d6f241df5d37694037a8b9ca764199567cf50ba0fcb55c2f7041586c1b41c0c218a4c2f0a7d276111a6070358eded57b22f90a43c5749ae44d6c508b9be3b011262207a5b039e1de50ada9b8ed35d8c39790db7206e4920fe9214c2c04603efe1ec5c6ba3b54dc7c3ca4d5d87d4d7053515a701d16dec6abcef9556812bc73de79c349883b04e66b01e7a16080b41ae985598c39e3f053fbd6dd30283d77f54ccf9910246215a3631ccb97199a1bdab1be00e8493ff491f6711c633acb037693873ab10708911fe71135dd1472542d2590eb7257bc5dfaa1d4c9a1cc447d525912a06c08f24392d90d648ea8b0dea3f424303278d842d5a8d2e734e1a4610f2c267a0a4257080d297db59f4b9f2cfc44f70138df5f3dd57010498f86cfc9b92eb4f398cb161e11333047502329648e4441636173301411498c9d31633d87fbef2e095e0ccde53b9b91641861502688d790116f5e656c483a859bbb6e8fe5c0099540b4bdd1499b71cc5a82147be4c9379300aec1b336a988800cae1da75f411c226cebebd9b5ab400be7ec19112e22fd4b47c7e91e4f932bacfedb775eeeaea29cf80a8e74a7567adfb2ee552165eda125b5058cb59091ad4c324f6035c6de88c1de8fa94d72080a41629319739e334e6d2d6ebbcfa8d5058bf727c0b9da34c24c30f0230c0b0d8eaab344b3892606778977e5feb0ffd6b4c500e8578c3ddbbb0eb1b6d3c881087b93103a7bf6772a5a66e96a920deddb0ab5a5fa0aa15184dd09dc4b7632ea029cb928a765c737a9b9d3d4b22151a896bd15283c28161039e3720aaeec1308f06b602b390f98532a3c18675545e0f7a95681bd0d2eb3088f8f4420730e5dbc0534b14dce2db93bc648f4dae2cc34ded484d230ab1666ec813264995cb802c24ddda0e081651158e5c6ee28492286508dbddc4e7dd9b7b0f5efefcf113995be1ab8ed9f89ed3ca03775a2211190624b15e3b08ec7d407a54b8695d6c9f8940d4a1c90c0aee91248aa53b14d6c8fe5d7bfc781ab359b29693a40689c71f565f602d5cc60a472bf099559c458bdfe4f7d223641471aae71030e2047c3d00ecb139162fdb66c9abfe19d4bf28f974e6cb841908abdfb42d4a1fd110ad2364411ce60529037fc6c18771b25d4d2e6e354b8561a25f55450964b587232b2128db198119ea2095159ac520a4c14f7212b14b3a1ea1c2262fb18fa5880d9f9971585543d9e1688dac03e4eb66687ce09f397a049426c7f844682ebb3096021e6542541a47ec3999473c463c5a6f2d92cdfcd04c87171e692808504fa1a5fc1b0f89674318a97e13e5bddae94ba3ed93db1651da17b7cecc691c6c1a9128411533e6aaecf69f93a820fa29a7270103145c128a114809765c8ffeda6b2bef4c1453d0ef9b7c0d4548a621013a87797c5676426a0f71c9f0db3e2540d4c730b8abbd97dc03dd2a02930a52a199f40ffff8470048013b64245e629b50b80018878e6effe673ea745c68336e7e202157c7826075b0080bd3874a24c61bec107f218e630743960773a53d676cae0dd7aad12d574c592883492618466180a6afd54045759f386bfb1ac802f8fd2d943478bee47568cace032656645299227b482d91561364095a124f4a83cc0bfae7bd60655768ca744d09fe8f9a9604ea9aa266757e3351c5ba1a1b655559ce7e34aadec251a4ba2c0476b9d4410c986a0f44100ff5b5eca05245afcc5f74cc3dfb28309fe2f164ce35c8d2fea4b497f098f83cc6bec0b459581be27db0a297516a498f6a82d3ce52633beaf8a5f739c9489fc8f733529a8c90fcc042d7bb2c38aff73f6439b5299d4ddc07d9ff94dea18b100095447ce46cbc1ba6c0084f2f09eac00fc807a81bc133ebbb96ab42f79107cc77fbff474d0104fd8564704cc6deb311d351bfb6232564028b8737997fbfb56449d0e984207b58d9347fab5daeac6dd87dc0e9d00057afe654990dcd482646609139915492230dbe39d6de53096f2a6118347633d85d3f26d79daeaa5d78ad596997d5bde0a25e918316799914ff6796ce01fe6f0a275f004edd4a241dc80af1ed34fc4c2561bfe867ac8ab8f4654ca9171c97dbaad7ea293ac4be6893b3ff25eab397956ec1627c07f0266051c74402b6b8e77977d680db5c6d371c9414d3ca47692f002ab27533fd4f210f601a38c0334bd1a803b615767bda68b36523fb2dd1d322285202360b99f6ffc2ffbaa79f403cc06c34a8a8fe22b5b03dbaaef150237026a1abb2aa6e12fd619d76636d5a5c982a5b0d4846059b8bde93c63a399d91eaac6b142f7de254233a886d46d1942bec80142b3a74851a366e40d0afd1524e4f8d2e8d8b7f247f22bb34d771b1f548be48e5baf06d8233895cd3757298a8c19d15fcdfe11cf996fd31eaf325c4c0c539c0a4a595bc941439923fca75991ccd77c0f7f012247d36962c55f5145a53fac608dd88397d51176d92ad534467f4285a13c0ef927eca7b2cd63c1e1f83eb2dabb2308efbd6fc2021b2c2a326fa4bbf7b5ec6d7f1db6430162d7cff8d5d076572f9d5a5d19e53e257540657d985efab09535477f9979870d2a4c6a3b2238c5fc3975bea87ec92808f02eac3e97f3965b3675c50a80684e9421377b1f13d20e555c403900d9d23fa9f980b4e80a96386d21b3c4c8761eaac75913acce754afa2036e9b309a1822ba3e814219229fada09d2cddca00f8116c2abd3a4eb71d60df75c16bbe2ad0ce24ca1420da8020b3ef8bdaca7a6208944c0de4878fea36375cc8b3b091775778f6bb9552e41bc2d33950059bf7a6d3955684262af3b59ca482bcc373718c0b0ff4794b67071f58ea784c207749aa69969a92dfe67061ae67e70d41f193ea35036c6a819e7bac0b1d497de70ec538b4b951be18c2097b169a46e2f68646bd55af3020445321ad404297115bdc8687cd1b48312234ddee4644c43ceb5676cf218b7775ce820042eb6738cdc0092127c9573d12021c5b239ebf423a4369cb37ce538a26d8e97e30a1d57136736a2c1ca3c988e90305ab881baa9fa11e1a3310e1ef92b8a81f3fb3b9023ceafdeefcaa6076e9b0019589638d0c00b9ccb6c6f037f0788ff3808044f1aedea9dd52e5d36c1eed304e59308d2c92c9c0e71a24081f23fd49e452afd583f73f4252447f4cd4d270b5983f5347c4113a35e8e25935031780a05a04bbc897b92f99047aeaf846565bce821137e6e9843267f189704a2ebe197f74c13856b80babe4456e3eb0bfe32b789b80eec042ee18ad9af05c10d0a51d31dc5a825812465952c457bf4bfea39972162261836c588f773815d8649cd1a4ee61b8011c5f2a258a997a1637b1ffff10c8f97c15645b8fa3383999edd4aaa9762afeac55e2d7aca666794deb1f96da447089d3a22069dcc4d286239755b2e97773400934f887c04c54e062c2c030b21045ddab9ab5a836272a6d032952865eeb07a4e61e84ad88f93213d7aacd2841e2c548aa0bd453b5018bff23caf2ba531505dbc4389de4dacc0a2a503fc152d4c5decf8d4a3294fb6b074dce12585d14b4b4474646c48db0e571e5600a233e7977765aa7adc8c9380d3b491911f1cd4d2b88c417d34f02cdb9d7c2b7eb1068f91c56dc51e56e0bf13c5dda27db00207903f9f4a7035bf6c08eb150a9c9c7e419678efbdeef0c79e1e0c536600c5f7fc1c426cd011cff77d199ce9aee8e0fcb8cf22393c98811ff284e07ddf41c36ef582f8303314bdd3c1ea91f08e06a005b48a23498a68b01537cf2771d51459d15cfccc7edf08e3a4e6a31957ea51ba1717fd3dffe3a28b2c11529cf386bed7aa2581ccbb5f155900f9fab6dd4c83b3bca7d0c30e21ed08c2ecd1309194ff02a0afb872371aed068a9178ac0633fa0bcb82145677b56203d425208f250776404a6f1c7b0b13ebd14c3ea5427e8bd3d9a6138c7152a19bc21fe6deee087c84fb7b9d962d8d3e467cd8897aeaa85380f4dc9a274efb50ef97f2f6a6be56a25b4cbfb17e61bcd7bd5ed8bce7e172b0cd0373881041a1119d5c9774ec4ceb4f2783e494ee2b4c89ee29794bca175dd603a1410d811b0cdad5715264c87a0fab6fd15c5a404deb9560c5bfc16eaf7ff0aedc2489d4ce11da09bd98e080517ed66b5d61a741b621e539a0977706fae7ca22f46b5782043eec65b9e05f01114111721865721e817e303a4bc7ac942ac72f2e384e582f8dfb3100630b35f435b06fdb1f4ae58491a4c8f99c58f3f4d5f6b93ee538d93671b3c1befc824f943fbdf056b13465b39fc1f032d2880bd6bc9dc708018b181211732a9a5c62ad70fe1628db9c9d7a7a3962f831605d2311ef627a801ba54cbfb288a396f30abd0dcdbe313ae52d45d8db49450c0cc0b9081ae93a11608962dfb1a0f05525e9628937eb0ddee1701cbb49ea6d0b1ab08fd9a9822e835b34af400d504c9e928c86c68da3066fe5584732f0412055d1cf256a63f14ea3be339c621876f7c80b10be7a078d26b2d6ebe5ad83f7df04e1cc8e2921b02583c2767620b55c66c98b7163ecde3a8adb874f77ef101341b4e3117623de8166aeeb81a2551988b5a20e206bbbb253dc55ddaa1349aeafe38e4e12d305d7aa8ac8102e621b2acf717669091d04d95e2e2687b6f1f6724b4b175460bf608bc5e18efe5e2c1a46eabaa5993d69444b42f11ae0702b0d0cfb5cca75cff19feafa13d426bcc614392d2244691af5526a0572b173911403937a15adc1e802aff7231859947050e48ab06bcd8dc88370ce78f43bb1cc1a8bfd8d66ac220544ea29f50d935d2e2f13a523130ddbdd20c9cd2457d50411a594333ab6f171b6fd1a6da081b1a1022ca590107d3d71f02ec1f128f7c6c80e6e4219363ef0340c1c01f1781138eb342899aa4a0a7bc79bc4179524a19b5910fdfc0e97f82340fc1449290664247a63a41b877fe80b9ad748d15d2ee0d68969b69ee7cbcfb989e96473c2b38f33b92a497f8373600c729e0f46f00945fd2e89ba1531a4963db7f3629dcc7f3abfef5fd9a6d4ffd4fd4e06f8ab1740f8cfab4d390e3fccf8efea50fea9d5095e8097e2f066beebf13d6fe2eef3521ead22fc487605109ad594956e4f7ac29ea8649644a24b56a4594bb8958bd68b19e320fc1f2332f33c544bf30b791998b412547500c1322062a5b7b85755ee23996b9d1cb64df4690e2b27fcda198758d64a9691c3d41d88f4c4b29412a2c79eaaea92dbbb19b88aab40670e176cf15f4430611286f66e00a399f694a965d43297121009e46b951bbb8884334af756771b775702b1c6db2567eaba538ad84decac4e4021953b3771eb32ed6e1fb888b492af55b8aac480f44f94028aa2246d09b77af9dd25f7ba58722d8b71a02c92b9fcc845d1fb5096edc932416d4ce73fe38e5ab1df440bd291e7f8e1da84b627922eabe4b4aa8540a995bf202fd2577764338abc89f522548b0b3d55b0bd8675c62194896225e3160504f1def1701954f67fb2dcd7ba4defb9b1e706b7cfa5267f546a62cb3c3c02216d1d3e7a63b4c604bd85c8b285698f643eb3f312f7f7796e6d0b185bc336ddae5aa45d0a3d66b2b9840b7d34c840f0a32c7bf733da87f0304adbf78445c61d476699f4a8f4165a0b0acbb6ad3970622528de8364a4e5b7c48c41eb452470bf72aba91de15ffad2b8e444dcc07594e94d90d55ba4c95a8c9db74eef8e8a5b764da7ebb8a910cc5955b93bb29a7ec2c7b34bc0d951b8f2475f8a33c6406b54db773e32774c1d2b7d2d4271c1581ba57c74f6d9f4d14899f1267884ada9c662e5195b8051c9a3a00505d09981d4947b892da7d42a9351c3de283e64d455956ed8fec1de09737293e790f9ac85846fd674be46d0560bf069359336283ab31494b922e58030ad4d2aa0fc751fde9c1c5afb91c2477145d44595ae1503cec8f6e2130816ee626ca53a5827fe4c49ce089e07f2c2d26d7d254ed6748c377c70169506ae8e6030bd04060f6201f307619290c67c71056d84a4ab7b07f80942c5ca85c43beb94a7f51dd03a4d13d24772c00868bb3b90c75b4daa61112a182aecc2ae4f63150074baf3b7c9aafc3507d845111644f0700718220a1028f708d4d947ffda1af51dc12a0b497359d95fc33d5b213fd623049973be0d3dc02256eaefe5fc4c946597417a0403e5017e54294342f0ad210c711c4097e15aa59a99fd56e26dd130945340ebe397ade5f1171ed7f10e86e734f2c60cf9fdf7de45e1b0c65b3ea8bb2e53ce8508546f2c32538065a7dc68851ae68e2ea2b20668adc945a403ad1d6a21ab2aba6ba8980e76a86b250b531db5fb4b6a40dae8cd585ca9eb2b88fdd95296e2b02ff5fee79f1f558aee4050aed2830e5588a1628e5fabae61e9097e6de01a211e911ee6f01d8acb6e1f9d30c65bab127cc3609c25d7ca25474de1ce796d9734e221a564aed581a8c5f37e9b3608afc6608053a077ba96a59bb5d0021aabac3a2457a741a88d9e0e5ac9af6b297c3e90ad1031a17bf44eea3a040548359b230c4067364969e88e0c284d60d470810a422290279008237a2d337ef74d99d098fce2ef3c04c2e589c056fd6abfbeda44242399835e8cbf0b4d3742337c542f289ddf4f93c4e6b6b9f25fc59be0f9d2c5ac6ed7aca79ffa9f5f04d3fde83b72807b63700fa7f17bbe835078edec3724df0e3c2998b6a3ee8c9323529b4cfabc9b47c288bc1585933152cc3196273747b9ce6408f43ce3e91352ddaca186e7955d2ed0afa0c443e15a888c3d032d627e6b8078aac7777ccdd55248452b9c9f50b5b03bbccc3cd02cc2deacf20929b235e11c27e6562d4b9d8393140e837a06916caf876c464a44c6a43f3a506b5e18ded26995dc95483d60ac94a87c1196d7644e3079dfe3d927a3512ca3fd70a5b2d292a70552cc5b8d4111dada812e9c205fc13467e0e9961084e10bbb16328113e2e519c68dc9c3e5bd3c45d5e4da7a80f6ad432be1486ca5af16522e4876483b65b57a4cf7a93320d9fcc512015c5d89386018a4f66e6328c17918e09ade1be41b10b47eef91759db823609a6e92ccd37e7b95591215b4b17101546cb63cabdbff11e7786d3210c763c2efb80145b0765463f46807bc1612d8a99a8755b4fb54b26bc70323631570cbfc9aec314fed8f55f4263db481f3ab79349b8a94068b821e27f2c762a8e61a693f1b101b417726ea68bb218e66eb6c2c106d382e58c7e78f30167e96e5029388232956815d44797f19eb690bb07932721751a41ea49e9391561f0f2368742964d7d0d5144b3a6b3a7efce558865ec294b57e1f8009c4b0c9e27847bce12f763300c60ee428ebba9727921edd9958c2edfcb54c51d010b25779ec3226c352267ea47c460636ffcd8d62ce21b08eca8603d179b50c6d3b021f28934497f8cdc6a9734a2bb1771e99ffa270d499738f4794ae1b301d680f669eb4dc7b18d9db3987e7b6b2d24838aa84db0b0ef488f724249d2c1f2087c1eff68b69349909ae74a1f0ac010b0b002dfcd5550dca050873620c2faf1193a8983d4151bc08886a1b776f3bd4d18e451b6e8863847d95cce003f3ba8df3d933fb9743fe02a69e0f2d171d530c0404f0c9ca3d44646708255cbcad64e0ab3c1d822121735b2a87ffa17e29d18b37cc3a226af691bee67235d981802e536077c87c573f1db45e0509140e9d1f62dcadc364f01798e484f555f86abda2c29704072943e9c212f7d0929462bacfbd4b2cc2ee37508c0615490ef8f408e705f3de00d2206c7b7aa815edd6c58ac5c2e564063049c1f82fd9a9553a07c7be444c030f445fc701c33e5b594408b7ee3e7da152baac3d04f13a3f9026dbaac3576541b185998c67a7e8f594f7d39ae0e94bcd6dd0f7721f88f3ccfc5083409b058c92c3984b5be2b408801574322666288a34ae269e104e3f8cf555ec08271b1bd5b35a27019b13c4cf8d4f361063989c1934c07e5d9a70de5393c6e408e62a9e0b0225eaba0ad49149b3e9a50668b408f7156568e4446994cac90fbdcce2b0c35759709644eec8526f3f0d2d0351f4c640b319379a5dbca78ecda153ad7f2047b3ac1f3cd9d8985fc71e1433839462fd7fee7ba34f04c3ad35ef71207bfe3396c67bf28a876980441a7b906980a6cf29eb0ed23041d0b64ff51dc543d44ba34c5ee73c858792315c542d8a55887234c594d35e341a21c85e5d34d6a629528852c3e2e50b05008dbb44f39394898b161dc72a6dd5ef020817cb9ecf811d1e743ee521f9cdaab7c8ac822eeff5df003e19e302744b79fa3d7d4f3fc11a186c2b6e79c1de282249b28f259e0f8481457836d8e3770625fabfcf4cf394f8ead59d01d7042faf3c80a840fbabf65f7dc81350fa9d8fa3ddc517c5bf8c0caf98054a54a7b85da70a14e4c10f7103834a19d9694963d9427e004788b1b344f0142dc54b95ffc7dbd304eb0184386cd80d5a468bf27c8b2d846ae5e7eb2d9f5802b94586cba55dc40e00266430c55435b8ad150464c5e0878f059b5d7919bc1e94354b62d4c5acaf5f36cbbf49064846e19c1161aa2b88d10374db65dde4e0da061f14eac6b1a6eeb3aaee45cdf9404f21e29d84bc55ac26d86115f37173ecf0534a26bcd89b5862f4882fcd12b4e2f21b0cf59b1b8237645ef8684163f8971d5ea20402629cd2b55488619ae541b9ef401106e1146d9076af9e00baf4a503319acb542d660a49d99631e58486845bc66fa585e5046f81713130b63dfadce514364abc255a71e9362402ff8b73ea0af2b2af4591d245fd77583939b2e094957108108a1e47c8d314043c0d68aff62e50d578141942d6a089b566eccbff7a36083651c792bf7d6b5e10533b9dd64e83aef1e24021944c2a4b4379dd6960695c3f2fa0025564d243b611024615a2069d68d3bb6239650debe0773597002508f7e3e69358832f4784b99ad67699768ff32c3461216f8c11e13c28104903791967cd7c41cd36a4b307388135f19ecd68630b7ae5fc1a048897ca885fe1a313fe4de14f3a67050a6b6c213dd236ea401b67279f2edbb509a106a018e4d610a0015c8ce9b10a7b87bd88fb0fd8c9ce1b6edcdbf7779c13b6332758f7f62c0e8b8645ca84e0e4779cf11b47c90ecd8c1864669e35a8b4951a87f8088c14d46d0a8a61a736b676bc7d9ff39691168fbf4bdb2d76ed900d66b6f085583a9db7eaffa83f9a858ef53897a4e98fb0274f107a1151a3c36910002dd324ea9c0929542f1af2f16779c9d1b957164db25e0163ce2c6008cd3ffb1c39a60eac7812caeccd2262f5a01af84674eb246c05356587c51e0c917b6fda2378c57a38366fe34acd711c9484090e3dc4e62b02d2c506a86c1ea371e5059431684849245a634663d7e2916d5cb18c196be35620fef886ce8aba3a8c5bc68136668216d4236dbe9d357cea77e1412e1bdc069003127afb2436908c96cad7f64b02a435b32b9c5092666942b3a190f4ed623599f30646169d219b1c0ba3303311a99ec740991b359c29bbe4ced9da9611d6be4335418e597c0f460d0ebb688e1cd80eaca8e19d05485308b5403b4f01f2e14894e444c558842deac5d014cf2f363e28d18fd82b1fd19081634e7ce84332ad0a650624812ab776968d3f2eafa0c74ba55a82cdc105294b994ea55029604f9d6a7c7835ecb650a9be61cd184bf97a051c894295aaf0e96074f7733ae4bca8b11b6a3f95beb5f8f4aa40a3c356acb66fe38f8f9d50e411656f1dd8ca9bd8da8043ef486cf31ae1ce6fd092c0f5161e2446b84773a07902575ddcb2f58b0e509cc7ecdef102d52bc3d1cf0035c626ec9bfd17d50f653e22509aa0edb5ccb7382140f624d0b98481cffab2bdd8b38c37bed88c54d91fcd63607944d9762e303df4ccab23765ade1930abbbdb911c1c6fed43cb22a541a7e2bb7c27f30ef96e440548880278398c9fd11c2a24ad2301309fc4d15e2c699b67f9ae75a834c371ad7abc88adea2e2b3929326e34f46a72f8bc34a72eef20db44b0a37ad8f4f41396be483cfb7c91d80a1feec66d11b878a4e98b90e8846f30d43f384e1df10190947d3cf57c66c00f613cd303f20c6968a4ce8ad4edd159b8b544477da2117ccc0ce2c16686404491a1c0ce065e00e27c0e43424b32c3e4c2e128ab69b53b309f4e72cc4616bbd76da5a3f78ea99e0811e0447b4b228dcbfbea3ee47e78be9fa2d958845c8da27cba46b67f94d6e2763759ea54ac94c06ba27b16ab6d24be11583a8a9efa0a4a0343a2d3b307a713460791db00827c6874107153271c42f5e05938636b4814ac0c7d008a304ca11a7fb6108f4f37e3863fb69b3a90e39e2679fe6f009a49ffe19617ec4457675b27d11a2f1bc071cb0ad81a14bd3130164a89a063fb818f2fcf218a66f2a1390f7ed5d05f275391213076274bf8b273ae67f1b47f72675c4fc57ac04cde9b6fe06ba5b5651bbccd5628eda10f262dac0e8345fe143bbfc557c4c7c03e6ef4a8875481bc6587b4d99943b0b65ebc9c222a18e809e17ca7785f67122b2b28774057308bd1eaa8052acdc4a954a9d389d488dec20f29fc5459901087a507b015d3ba534aa69551a96ca675cccfe2f95e4714dcdd864b676e41939beaa826c5338dfd55999184a52f7b3d48d10f546b72657c61b660448077e92ee72646f3a33f2aaa5b07ca8b80ef8ee6f6cc630f58cd420c38aa721f83973d19130a01d65d796ea8844ee45482e96804b10ab2049a83065fa8545e9f60a0a120c494b6d0d9829595ab1b0d5b6355c8a534f3333a40a81c48c33439279a830684dc2ccebdd80381d57d35907515735d13c4025b9d807eadec8170fdcc12407a58a14102e6babb6da44527a4f83d6a2c60a2dcced62254b80fec2200b48e6b136edca9102bcb75782b72f750d100179facc9d89ff869bb4616876c5d02c12c0798050c821665d23a6094266a1310411072b90ed2a9c74dfad18d44db88fec2b81859c2698e6d8ff0ae08a2703494ee48a672862b2af3e2c5a9a478c8978aa5746fffee24e3b495edd86f49fbee27e190e32eaebfb9fa20914d5963448dfb0ed75e5954039cdfda3f2d777f14face466d2a52bda32238862e830e00726e46f9a922e09c47ed18c9ac42db1ac1917ce5000886f53da6a09b9b49212f050543da6e73814213f53207b3a8a2f827e67b9d841fe64f7878f2d4b84cde1a7aae5b83612605bec0b9a9a5d7b4c258a560337a7e2b6c66b64b3b8fd997cff4b7c585c3dd114554479171838b87ebc2a0c2abdb5fb99b9ec720c27198a26dffcee1cb3212b63763332ed2d8bd485333138a36e27570c7a0d4c247e1ea8ffe0f72696d00bff2c9a9799781a9c060c22753c1ced45d4970bbfcf93fb36771e5f67bc557c0aed8151015b64904189d5132361f84387f6b9fe3f11b8758e4cd19f0182fe352f91af0ecc955cf727d71e3d5c1233c742634be5a756b0db1361735a815640a8d34872914511d28660514a19fd226aa727dae1ccc36a4e632a337d123455d2242ddfc9ce4272c9aa5b26a16652558855558685665912c8445586b5665d5ac9555b0082b3959c9f6f3a0e891083a50fd3058cf94756b55b9eeb858fd8088183b337a020620fc80b6bf1617fb59462bfcae40120d66f48ffbd7db68794af9005306874c041f556de61a31133cd4a2edd5a2e369f2e70b283d92780b523cbb476ac28301c31e4dad30a706452369c70ca455bcee55cd9cab3709d969c8e4d4947f2a7d4f9c37918afdd3ee9abd2dea98268ba0a2d164a1432a4f1b1523937cedbd6ca26a414db7e857da819cab69d849d349676227350b9730d51bce649e55add7e7531e08f087fa59a39415f32e8a680e7e05aea4bbf55969d0dfb5d80e2b95e28668cc84a522c523ac81632a1680898168ef664a1150c7e3e3a07a5d1310e0a62a4d95fd781a67079794facc8377fab8a1057f5ed7e8033255388a595df426ac8f0d20ec1960340b98a3fe1fe4e9bdf999194f0320d82a82f93e52a689cddceac55b0464526d47c199cf1290802177eeff399323fe3660a507b8c110818635a162115bdb3f0750f1b04b74877b57b25b76902f05d6b44b13790b718b3e02839709b014341b14faa859c1e2a68073cf0ac772e24c385c2c846468d4e9ea9e78cd74028f3c5470c415004d1614069d8546eb56db0c549b5d1b8cd8e2bd3137c6cc82c8e748b4e942aa5f4dea2d93fb507601e7ba29605040da08a4bd2c7f7f1d99d230d18e375aa1bc8dc014029826f01f11f8971eab3d2b43c468ee67fbbe4634601348e813357ded76c3edd87da05c8400d63424d83dd190e0a085300cb9fd856812d2e33ba30f9d8ad06c40115ab22259cec048904f0b125988e574a0c6de06cda6595e864bc0c68836a3aa81bc4220c3c9d2bce17b64a9da6e3231b81e9e069f4741e304e6010bf4210c00d74adffdb43dc0c5e3a04d49a8000dc8a1d12db83a25423c27cdaf74920b57946ba092e931d1683ca2609fb5ffb641ec17a6a353dceaa78549a1d8058fc56e383b8068dddd4d20a6a351b3fe072288bf12566bcc86976e1e3519a9496e29a526a3bfeecf3c84821244600ec8d76f04f06329d62489948f20722494dec29a1bd4aeeeb34550d91717fc2014fb1804222e95f7892d7e3b36c1da9c3c95841460d0e0319bf9f8d8dc737724e8e241d848dcca03fda06f84135539f33928490aa7efcd4ba2a3d456c314c039a759c38c019c739cfdf17b31f4f3f901712a871cda2229ef2406d7ee6569bdabc1a7edf4f80e88c138e6b9f34f08afda467bd780ab8f00a95cb42dcb54c6993b08cfdc956d0dcc0f46e426773042c45fbc0f222a89aaeb9f729f360b2d8f5a7f00a15b31d2ecc6167c3bf2710032e2c486bd516bd6fdf66d8e175f8255dc29ebceef1e2f0b4f6f5d63b3ebcda02596be5260e31ded6a6ec2c1d288a74250b12fb90fd3fb137c779484eb7268af1afe045bc6a7f0c529eb505182786a2e44a7c608099513b5418364e9418bc87ddd4d7cf4c225c119b14210d9baa5bae677848136941be63a9c7021478a0a0d7b427745717262a922c60124a6ae045262b0d9570c96e46c62a04b9736c865621a1773ed5b43101a3c1ff00974630268524d185116e52248702969dfe20579c4a5f6300c6e4f74e247b7cd9e241815585a05653c10fda5465ab362c59ab9e26fd5e2a00b3a20abce27f41b2994894e69cf0931bc8cf5cb35f55bd189b211d6d5bcd9c7c1e57c0ed6968e36ee1b36ca4179abeac3d2a30c2407302592e472bdda290bb6074b39ac6ec0253e460ce9e3e939041ba1572c71a7487b699720efb0bae8b945a86327dea1dc8ce912735b71ea6aed1f18d5c50711e464fd17ac92ec738c969d87ae6a8a2ec46ca7961e000c855b34584e81e5463af3f4ecb6328e9617b08502839d8b92c080d87b6ce602b0994aacb5f5b11691dfaab00226dcba927132ae824429fd95c34ed013da54f4c6b42642db3e446ec946f8d1b12d2e6c00ea460a650f8e5a124fddbe54a415af7b77d66b01720f15d332546cd58bca89999359e95f31b28e14633cdd4305f5a565dd513363695726aeb59fb6d8c1b65dd94958df032db9f52f1a93fdc0bb28dae400298d27b398885ad9a51b5d629b4344508e05ae24a0b84ceeef2c90ad5550e59b00d3ddb9372dd2b8bce06cb056f62d283b3f9867faa0ccd56b1dc93bfa13f68d630201b9e2f7c740a2985b8b4fbc85caf6f99b00cef2f51b43685c5b4f5f7981b809f627f84b2cd5292de93a40be40f077505e0036c13d353e1dbb42bd042bf9985db89552f6644e724c6ee692c37375f4a24168d46ae71432a9eacd5f09a2d3b873af465e316c2341adf5a862a5da4a31133010971ab1efd5520fa7e1a0017e7cbcbb41a206436fcd3f789e3628d96c72dcb0246fffb65e3d8c8817538d403f84fee7871a6bc2f9b0f0d164f60e97d3da993654e2882ed35b76d7b1da6384d36b1f0a685ca9e69bb7d32e287aa6df96a7058fa846a1ad293c8a5db204bd76566ea358260a9d9627203e0c625701b75ff4f15422e2254c7da2fc6e94247a3bc7b05660f41dfe23a39468cb513bd83d4b31ef9da9d6c51f4d25d9a67b5f4cdb82f7493feb6bd10c540df3eb119304bdc5b16ddf6fd49d165cd2f945557ee93f4bd4231407a71d7c94f41d1bcf02dc371478b5ffa0b878a43834cf1d7fe148b783b4b0b06baac24b873af98d9747921fe0e944900f3e5060cb8b1ffd0d126aad74bd19601995f73012b0a8fd6c095190d21eb99f22e05cf396a6169af5faf5f503613a1191a90cde5a1d5eb31d74938b3cadb2c598d9d62098d9037af00319f3aaa5d724c8494c980def30a1b03b34030f13a818b87c3080f9366e98eeae094c475fb58cfdc7b5b05d3998e69ad369f9a3be1f9948431299d590d9802e50e52ea3f39074da5cabf27c87a473e7fc41cfc0a0658c059dc033b4f7c5147518325b1160b6013b710cd0195c0cb7024e082b882d812d409f538d9a826d24c5123c36528afbe35b5a4b7291caaf97886d60d7309bab5060bce3b18211c1414a2fc5343f4b24024ba545b1c05b15b72df389d98fc6e3b311002546ca9ff49bd534dc74ba3b07dc73187beeb8f34a49ef0a86c984e67ad53a0805bb89f9355c6cf0633ac7e44e4504dbf2a2be1a715eadbbf5db2511a28cb34d347095e23f85302c36f1ffa3dfa17e428ff49f6c6b9a9d2fe5eef7ce23697930e21939f58613128efce3fff14775c78d14e599901365df12e866e580d5966933d9042d4023870c66aa6439a71364f870889d1cedfa0fb435787d40a0b42c59ce70dc487de167feda34ebf795d6e28099f1caa5a4d46ac735a46f2a40e720386cdc64dde45c508fb06075867f3f443cb0a34e05a97b92805bd5d216e4cfbe9f877437d6c3cc83fbaa0f39a4b42776da9f2c1197c323a30d56e9efb0f4a651a90dc773a6e0b68a87b31ad347ce64e1adda2d54564de07955b8dac56bdbec7d2c00e69e01808699eb37e20bdff9374a433f72c6310bc906628a7f55a15281c79e92858610547bae175b4edfa5bec9e0e9496fd639dfa55a8bcdd3b31edb734e17b46b2b1019308cf11f7210c0d6a057ad2502c4bbf84979ecc3676a8796006e5e2226792613ad16c4198f8e490e7db63cd715775f470f32f4c3fdcee4d7e1483916048a489af240802fca246197076069886c3007e86ea18a684d60078939631148a483b29ff60bee085cdf1f837dd7607f54b3a7b6bcfd945b27231831f078f55167b83c05dc50532a0518c598d8c074f5407086a7a5296f292291555eae7f944fe816d4180db56f3c640cf901890735e81be51f6af43e1ea725089b1953049fc4860d970197b4a5968120aa5ede49b432e9e782e9220972fb13caba22a0efa66e4e2fb92a537fe4c1d20b5067b868377cc4a3ffb1a739e67aa4c5c7e5846e4610f4de5cc703b425813cb706ca16789115473b2b3f418a116f5b3e089accd8ed7bb80609378dff2866983f887d9662c8aed5cc359b4d53d5e0cdbd475453d02a1430bc71dce10926368498b136b7d3eed49ff1a9307ba1b34a552c17faca45fd6ce3e8245e023cd4d9e44c789be7895ee88ac38a196c0deb35b24f16e75ea46785f4137d3a49a69f83ece72f0458b1a322e86342bd6ec13328ad9854ed11d1189c6d3537c638db48047bdc6b49e3915b41d9e4b0f417c35bd6061acb3191cb07b96d9a3a4175ac2d367463b755cb69588194a45f10110e8a28d1dc1acb4590daa651df53ee7fd94c5f744684800e29160c8a15c712897d473fdf3868aea719c4334387d60da3624cb2b0000be220cc9b921af1a398d8087fe89c500ea4310d94dab04132dd11044e91180042aa98c8ef666c58bb8e30612301ef14424b00d0243a4a1b3af5755eb51c77731f0e0eeea3a29962777f4e14535f7a1a7db917883773b769d12a67dc7f5a082968d6ec8c3ccabf3e1e5e6c72d6d6de95383c643f3b03fe3f3d1b3fdff1e507f24fc53928f73984d3c64176a6fed794534cda6a2477a4953daad7a03b0bd388fccedd554708716091e22b625cfd358511f79c734047ffb3c5d85409301536617427d2c9fe284de94525a8e214ff0e09c9c42853ff38eebce5ca6d660c7f59e4282cfe507084b7f165a8ee96937fe139c13896c1f207bdd8e981d6b10ac191ee37fe26bccf5b9601894a24f1fcfdf851ab670bbf690540c3c483710897bfa16f1974de8c624bb650dbc443164de8e333d62afd001550a2edca75dc50c1095f7109dfac5612618b06422d39b5b37f71e8bf67af784f6154221b4b389857292214ce13c68888c42427a06559328018d7ba726ccb6a1ea3e8692bf164559d77423e78e12a311e5f6c2e2542fa9e45bf04c9670125964681b741791e881aeb16c2d4644d2c65c105ed2e4c5128d455841de464fd072134c7bdcc91beb0a9c9f1e48133712117d6b3ab02a63340c01fb14a47401a8a15a8aa0a286527a34eb9d52880296385114da50c5116994021a80176b023686943fa827325d177ab001383fe8d99801f278acd5f022ca48157fb6e4c2376c0bf7a7c91282cbcf62247029dd9d742cf3937193ab474e65d13fac34bd6fee7dd5322840f00e6b0f18e7f889807668aa78e68bfc2e776cd2e6ded48510d88128a9502fe2020f677164058214d30908634db3b07adeed1b0004c3d9ddeea1e05c98dae9a272f8450960ac2cd6600cd226d63744d2032aee2c8fed717ba313be245405d5b1bffce4bfb8d2998a0c3529c368933f0af1bc9a8abf6a9e350c3994621591e34383ceae760502151e5c4a6eed8e04f5c3a67d7ac7d2c1d703db137867a7ce908f795ae810ae7e55b79f289db12cfe5119853a5427e2156a07163c582505cfa024879ea0866e388cda5a0b2ed22229dc419cf0675bd3c8716b761f57c45c90665d6e5163a3da771ea99a0464337e649caf0a89b060dd866033f0e84370ce1ce307b0ffe811a7263b0da653264a6d87a8de247a1782e8dad6eafe8261beb112257dac393970d0a2a97c5dfab939e2c43f0776bdf6e43bad90ff7cd188f42571ce4f54e04321def431c1631bd77ec3e31061083179d750321ef0221468a6df6ad20e2587bfdf8c7ea2f13e82065c30e2131cd32a1f98773f0cd06f6d28e1f27e3b37b924115e86696066425402d2383dfbdf110274360cebcd6bd804e107dd54ba9dbdfce209637eba6c0ff0b47f68c48906baaaf1cea9efa819b0a5f4caa1eb2e4ab3fdfb6a5e945fb9b5bd852de0d305495c8a2eacfee5981d1a589891cab2865a3961811ed9331165c579e26c1ac2edf1464b63ee34fca824fc44659423482f2eb454293bfeb270dd5bd0054eb27e8fb6257879421174947ebae70426d9d4d7f16906216bff4ed5d69045f40c0ac059d35714c57a6847c4505c020499d7e99b2af48b60b4bbbbb7f68518fa631b01632392e079964ff95c59f2b52eff8478c073e9fd8ff542344172fb9c4a7338b2c4bf0a4543f6c0683f6e71a3bd1751c51069eb301f8a7be5f8c4c498344b9683e3f04b9145f285a180287fd1e9a7717b671cebb2dcd547f3c4e5c47151a6b2f9c540cdbbba991c0890027aa96270c82fcf901a66a33b76e131fdd9c37cbe35d8cd8a97f16a059f8cffd68851edc82661673d951f26150970d71f6bafc6dbf5134bddc4974d5055432435d494ce93f9783be480e7fcef2ed455eb2daf491489a54da84ed55227cf43c512062fa6b8d94bd41557f053c6b5c2c2cbc77c8850ed691f103019793d97ae2374c4230af2d19b80412c3cdbc19f3c1de91f254cce6fd881580d715352824949a91cc6264410a5145da6b738e0863b6d04838668b425b72e11382a207281acc75d0130ca7c04158e5df41bd42cc42f318a87033a9ce491f40926fba1c98b3ffebb564a10acb14ac6cf8ed0502b627fd4e5f3204a0f1678543dad9d70378ef98591dccb0a420b6d798c99d1acca4d7f77101533c5052858aee07c77d33582cd193401b15cc8aead73f90cf9863b2715fc292a134372f38906deb69bea2d588af36c13e2bd5594d18ed78c87fbb4f94f1af3e832d5342bb4eb584308dbbe412eef14921deb821acda3d9d7a03324118583b0b0dab45a0b1d214473c1684a9e5fcb2ce57701f4af09cce560b6499c94af4c614f8541ff50309081f575c4404a2444bd4b1881ff46a09b805f2b145821a227c10fe75dbd9db94112d70cb3e14d6c854d261499e18908477d99b7af1a55da726ef8951f9090cc5947c989c80a31a231840226cc0827f2996ab29aa22f59fc73ceea11eed2cf1101f8782b56c4d013b408c41eebcdd7ec81601a8d951d63fe2bbf59cda994004144cc23a984d28b8cef7cfed3c7751ce32d6ca48b95ce9f1196feaeacc19b915ab5f8b960c45ecf6dd0e58837b80263d78a6ab2aa00bef5cbc809e1fb4278a13894764d4a2dc8ac8459d259baff7e8403d01355b9d4f616afc9ce3813fe3ea9391a288e9752b8dfe92215118cae223dbfa6e935cd4ca6e836628eecd5ea9c24706fb082399becb88409d7c172ede8e5074e5cfa78ab9fa7c6707f7db6c69d8e7815573805ac21bd0a8743dd0f007bde6e7fab7f8a4685a7caba5f603dab0db13b4035344aa340e914091c185f500779c22efed705cb93202fe5cca5605e68d16ee750bfe8777c7ff098f9b778270ce008467fb7058d520c7a433afac95f739d1e307c110a7fdf19d1a0ba8ac9420edbebc9fdf4060e5d18125f57158d912f9a0d6e914642f044bb8299868be9de3df04d14430416d307041bf24b5072252f08fc8d0f45dd7010a7ae09f8f23f3e2affe39f3c44332914dbf1e8bea7d4a4d6dbcc792e3b220a17fdf39aedd750b71383aae5856c52a9018432cd15559a880d93e12903436b69cd1af00a7ed57e0f3f19522cb6f5636775fee4a1680a32632e1a750bfe9543275dbbfdbbae0568e42f448e030375c740af046ea408f7bcb82852ee77c21ad914edd38e729bd013ce1c3a4773f4b8af016ec37753ec253f9936d59eb28a900739e9a639425c8b011bb0ce0c9a0199a6845e014ebfdef6dcac4852c920f3a7f3b6a20aea23fa1d29aa53bcf9a69d475f79f08a115898badd78a224efc19183f792f60e75ac0ff7961ea7f6aba874719b555c6054ec381279be809147cef8839da7684fbc065a9f61607b20cad8ce14587608fec75d5e0b82b6fa131f4c861bf896ba900dc55c8a137985cc229d8f199a9be3a725197de1bcd1158f8b0fc4ec03b551ac902cf8ae3e4e25063abedc2a9cf863922e45586d9c3d6658d1b296e186b74e76eaf3a85dab982e870f266c23f7a3f22c2aabc49e3f3bf1fd33c2bebf10db76f3ecca3552d4b3e77a9720bffdeeed4928fe3e7cf8f9f7f9f90a46f17c2b391ce3e34b11fa1ceec4e781a62f1c3b093bf96b18e911ae083c2715d915c16d329375ab44f4d3778e6c24d0edf87daa1f20ca1becd01fceb7ac91fc09af4cbfc076f8e0ce7b42898c515031716e8a5d35670408b740dc29654f3446ee0bf197dde4a9303d6a78ba3b783eb8a0e87d10487a8ac379baaeaeb194f26636c4ea70ea37686aa376c1b0918b581682382b39b26082a329020c0c6635e1d2c0d7c80c057b400fa9b6dc86ad127b5277f26da39651a25096427f572ffa5bb1ff3f52d3016378d916ef935ea52a98453b53d9972d2051d5c04988cb08b42c3e649c1cd7d1c10f7f5e79efcb4f6b69ec02cf8a21fc7f8bfdc3c9910f96ea41442091056f5c5ac1f4951bc0b2ad2fc80565f14d262916a1c58d79087d55abf61b9ac9b0435965695f20995efbf450317d042859bf21b840e9e522a20035dca400b5abbc90c59064a8e688b54469affa062899d7ab67c68154ff8f406b38622c33312a1ffe0d77d99009db6240469d5164b7e65956dc22564e89fb88cf4cb1cd282a05f13f3523fa35b06ee879b6b898c4284f9144e862ce238eb9162ac26124c133dbf1a8fb22b97566d758f3e214299c6e2d7dd4a38d3c311f06bf2333d31b61be386dbcb3c03f3e524ad76e7bfb22be1bf56f19d77cb0e5a0d79f37bb460329ad4e66fcaf8bec80b973eb28c3d569cc518594c6bf7c2d272801bc72bf1d1208b02145313c64970a019cd27d999fca967c7aa7711e1c71f6530642cacaa06085982e919a06fb1af2bbc335b25262db643c595384a87c4ee2cef5e5b8d04fde0dd3262b347f63eec0ba4c00ffe75558a01bd1eafb40eaa8fb5e76f1bbb682bdcde41f581df5079b073aed5be5cec3166503ca682c4b29174111aab6c0b7e4a7ade59315cbce7a83881466f7adb76a1b2e8dc3755442287b9082e555b2e267595e56830990e4bf41a657d074b5918faa805ddbdb7108424eda1631d2dddf337f041fd65261170c3aea291e72c0c9583f4775ac233e2342ba893f5ba4315e03876a0b360f35da77545ddfc0eaf5ba9ddfb08b2f71b16aa6dd8f4185b73e8bb82946ccb7512e0202d4fc8380c065fea9da78907ba4abf92beef83987735d3a6b9b4f38f19c831c1a134c054aa57d350ec2e6a799d8e82144e386c898db017cb2caf7bbdbdf6015ed00ad80b8e665180cd50efa5b1932c8334d76284c63079a4082179bb40053628ef211be8a28ba003bb5955a0942c9eaabe127b1bcdb2b014aa313cc4a8d11ccba1025157789af29f744bd96b209265ca034df9aa6e1abf7fba4024413a9d8c0b4ab2a4d2c8b820254dca1a19094ef0a4ae9921c1049dd4fa191688404813ed0c0589540b70fd5981649e54741910a44c49572723c19924757d06085210d2d788a0a31aa1ebcf0520f3a4a3c9d0094cca7e438a4c82806633a5f50de215029823d82f71576712901f16e0f46c662ce85fb06cbf3f50f45a7d6957c58af170410102746f9fcc0df0d981dca0bbd75ac8c5f15ccdd578408d248729dc8540a6da6aff5d7d069b41c6dad7749e0f4ee013f5357021985782bab1374b46c692643ea77516b4debe46a7b4261f66534e663800d4d07a1d8be001733b2c00d6d7e33d619a8814aafd26c7a8155e5b668dcc1b9abcda37fac0007e43be17a7798b28ffeecd78f81fd4574fa153e633a97b2be3384f8d44402f3cc8d4784ceef1eb7b8ff771dc6818a088444e10ca150a00d779101abec79602c4f378241f7c544c6549121975afa583140340b87e2b5dab2049b9caa8c5a6416e73bc4fe519ce4a9788b685a39fcb124745cfbdf74cabc41f776c63a4b7ca2fc81ab7a1adc6e6d199792b8413ca339f4043fc9f1accb597b90d485440472a3ce035af456f0dd8e25514e48fb78f738486aaca74251147d6193b834fa46fcc48da746e5fcb50ae9bebb848b71243547094d694ad94b6de293e37488ccb1647a899ce6eec15fda3ad152d38a3ac7e137b80d8ca748580addd78d7d17b0f9849103e3fda63192e7b3f8b2c07bcd34c4f860a0418993ba1af811940750a94554b9840937a39adbb742ebe036618cf873439eee490f383b838279a6a9c3be0ec6d853916e3141e0256f414c5984e844ea9ae23eb1f05bef84de1adde0a3c0aa4388c2c10a0837436afd56201b497c9661e344110d019e5fe96d19f4163d78e36b532335f82197b3b14df347e0427013223c8164205551d9696a2e6d105b372f250235285a4227d9cc0136b1b30801ed4e0a94b4166de14ff59c5df4f5d13544496705566105a48477ab1a931962ebbd69fd2c1fda14cb523a817ee8d9002b447158f834de0caa7218ca841ba1f0d27891d431964e090e96f7cd195577bc571f3ca4c3b2996ec30e33fa707a6768115f41af0cb8106c2d899d75db120be8579e514199a1b40e57d67f58093cdfe070cc14cb6cb28703fd2492918b454e308b1637980307175e527160cc9c92752e1e3d712ec7218df11723b2646931f7c313e13c305d1caeec7bb86172071bcb55f3e805bc5987a9fd0edeea1029ac4f40d851de0c80f1cd8191d141980110fa1aa130a14ceb8d9c0754190a1de6536c6968e4f7a32833af9342cd0ea99180ebeceb01505d8facf61d69b005518a1f2fe771aa72b8b747d0d80d0088119707d43bc0fa33b6263c83f636e46580ffd1be6627b00f7ebca80aa4652fd1f5409005c6e913a52d7647307378fd74a4cbd51ddf7fff6106dc743765d01788bec067da8169b1d3136c45212380f8e1136e30093266899631331aed50c05517fe7104d03302fb24ad272ff2c769cc13cf6e800be182787d446c7768341d3ce03a77665c6ce87552eb7ea581b2c638fc66b4a22091e4aa384dd690f0d074e0431cec99ef74ac531f6e4b0052ce6e0ce05c13fcd6a91c7c96e2e0d803455814bebf234945f0220587b1053a0017a9406cb593a81a886befce4a8b4d26c79120420a26744e98e0c9c8ef7d63d158488177cff5e43d30abe5d1bc95cf21e9f8a4cbc1d634e93c58584055e429d7104de26f5c4b55265dd0b1f12bcbf8423c343026135aabb78814a96b0e0a4950ddefc9119124b74e05a89e3505ab612b4b8c02f100be90b41139c38333c7b4b213ab7e2e65853069dd9c7009231be949db8b69a462123a76a21294a7936118f8d3a735769f39e3bb7b159f787806d65b528c433be3ceb31c9a275e97363e21b96d3ac0d9d4d9f6483850f6712c5b43e994b9ea4276e7b4dcee822047f910075dd950d64af902d4716b621cfe82b6dffdde22453f3d4c075016c2c5916d0c43aa5d18cdf04284a7e2aa75da4cfbdedc09f61ab9d1dfe62429c2fe74e950d0b9038a9f7c39226c2f612c88fcb753bf43d33ec64011553e634e4e37d8ae7fb81165b069a608ce01a8ed5bc68d0798d5a24c38190492bf12759983b617e7b011e69f0164f1b1882e24ff2a28bfe34cf638452d56acdd4cb9461c9ed11e0ea400963c8157ba608be653b52499067def0b3d5d305546767258497463d5386f2632ab6b343a36c5f982cf9a2f561a67b759ec4662a7079ff6968f8755cb1fb7bcb09c437bdaa17a33c516e686e8e637f7143684fc1763facb72007876365d1107063141558c918f5481283a747e5e734b1a6271c09a6a139a703a0a982f3854981750caf3b428d2d0c45b240d79cd44162bb3addcb97ecce1c7c6af2c3c3ac8dc1f020970c84e54bd19f86a4dc3a63fd742795c11b47d7c61758c2f79fbf3734b54f408e32692b563c1156a832b310ee40f965d81b262272f12ac9b97914b706905f448499c041fb5c00131915088475f00fa42f3c1694ab52b996d6273a0d7e19cd8d97219cc579f04a9e0a2a5ac7968256228b21b4385f9e628104bec6accf83bbc87fbf1b30ba970fb815fe1eef2e3ccb11af72d54799d26926310e7765bc39419d30a7042fe04731e26d4667d2b95571a5e212cf12833a71b6c813ddba707a334965c31677004edf5c9c75a7f41bfc8469a0f806b2b8c5f359352c16960663a080550633405f81849351a14948c86ed62032bc370189aa0db417282c9426fff71801bce088297e387b163f949095fa9f818d07d8b4659e215246070514ed023a26e2705a300e524e07d8ca3b0870767acff7f7a8833a2d0804ee9bfc33be7cebdd75bed5e8d21817223ce77a20fcec8ca2f3b206ba49000a40a463aa30ca2375e6c1d104b41ee13b0a6d5462a6bbb80166d788b884c8de7bcb2da54c49a6ae07b8069d06afcae28124ee93bee7d80f157d0c750ffa00c52232d6bdf746623eb8fffaa75b0280566b95b7be94b374ebf3165f5a7a7347f0562ba62a576b4bcad4afd1956efdca4e566ca1e250f8e0ef6857ea17974112e2d6772cfdda80be8c7132f0ad11f077fe53b164e173cf2a1fa1f8f383fbf039d18fb89731eec727d66e099e853e08be159d260119b32f63f6a951f8f912f8dfce4b207c503c01fcf077c413b2fc003fdcf913c2ff62df738c846ed5df6181e0b3012593323a9215d50759b27adfad5ee7fb7fa40ef8f253b1409654c95781e28ffcfe07f87daf128bb0d7ff2a08d629ee70d07c4f143999d76483507c436497be649960af106ece15b2dbfd6a71e98b000287794fbbb760c84383d2faad865930e4a171698b355a08c1573df7f6c7c51ff72ff2e3933207a2927ff8756e3ffc3afcfd0fefbfe7ffbed7118b7822fd7838107d3461087c87f870903f57d6cf0ff0bf0745162debe787154721ff08748c0b65f508f75fc75a666d18f6bb9e5fe8b3a10f0d2721df1f1f43fdf277aebcdd8b3ff4ff138bec7020eebb3712f358423f54fcf9e18945b2d04e2ce28946621e8b631d8b63ccc14013861c447f8783be3edb647bd45763fca18fb394ad2b155aeea76d73b57ef56aadf5b9fe8e6eb126eceafeae21f24bb0d73584bb2558ee7f9e9dbaa0b9eca403951bc24f7df9c3955f2e2756516c512564045800dc39c6b8f3c702dc397f14c09d1c34bfc59ac9412cae7cc305898b932e4eee18ca2e4aae94978b19015c76e28285c70c61bdde7fafe588312d501913c4143e2f84fdefdecb77bdbc4f841cfbf1e1893f9cbc15b06216f187137f20f0bdf712f8de134fc8f2a37bef4fb0ffbd04bceebde71855fd40c0fef72374effd54f918fa443186b0ad8b8e6110219761b7641870994241114dac1c2dc5e4941ee03c6d6993e4268598f4c0d052182590302344125e78403a82e80a146a90f836d9acfc795c08f976de277d6f4511e15ff9ac14c2d1872515c2be97efe33019c3d1405e594158b7c5ce8543a8460ac220acfb1a004202eb3a334f71f4e75e3a54d106c914619a6652aeb018292aa8991295c4890566620a2422396a6e28686244871886646083256a082a2f1d5c38e812daedc7e1ea96122870082b3636538694c44083234b9c6141d41a3929c4e4032141d6a8e080e6b2130e62ee68802bffc565271cb6fc57c9affa41157f7a9ca4a008293ea049fa01ce1b282b44ac59628632b19e2492b0a1055a134545b10a38cd20e6298a0a569089c967958d33e168af946ecaf0f054a687220ef2b9ed63b6f25eaa7af4b5bf26ec97de7defe309d4615c32bb8e7d17759c0839a8bbe5ec96eba0e9ff7efe94dc85ab3e7ccccfdd3240171607b0269c9f839d79329ff1979dcd03a9b0551f00f920e64a3001a8e2089353181796b439c18b0b46dca02043449698971a8800b9582fc6e532485baecf6527a62d476c70b94c92a4cbe2b213530b688caada943525c27136391172d3e5f9f4484ecda67136155d2ab3618cab262c9a4d2e2b721827e540133cf26e77ec9ac023079a522e76bbbb8b63c718652d8970943589261c5d56f3de9b82e293c1f98ae278b7cf48ca619fc80e54a9544b7152e1d835dd39bfb3798c13423ed51867a68126948c714730d06cfa7e7e27e5b099cf89158131efe7734d0efb44906bbaf31d49c835a23bce231bfafc046b176c026d777e5377b9cc14a4ebaa5a97c4edce6fba521ce9957c59fe9436240ee3588ba3756993e2285da8979d985470e7fb91f0ce77222625f28634c31ad04a1458a2406116450b51b000c5134456a61c6162894d0a285f1718dec44009273f70c1e1852b96056fb8289620c1643bc2a88d1b229a00a146cb5214238ef8e00414cb248513982a6aa0ac143104118c241bb47c992384910d28f0152b484991a60729da509141044aa0492a220a8b0a6dbc5b1419241b908ce9a2849c5944451a3303261a720843a5635ae17a0b5c549aa3ca449f711ab484798aea418632489870374c9eb4f8c0a6065b9222281f1304d4707822c5c311433039a20a143031050f508e9ca9e289b7c4df1e1dc172fd499c14702102881f9882986ae28b8c3669567881490533332e8913c0ac80051eb8244d716596860830444ca89052c3157505217890e18d1134bc898383db82e488812229ce104c8879e2e560850986208e70811447d31685654a92336590a8a9012492c0d40c3098c1172664cacc27cab429d384144c7a788ae2099804156506b22f71aec0a0246ff8ae60a1a6464a0b5156f0e42be2c611344069f2c30d0931334d08e44049c185284e71c01c713508c006333c48f14414342d734889cb0c51ca1c19211953a3a0708517255b91154ea6f0222aa0054c941a96f8e1caec0997c5a3748001ca0b4a4889f2022d4a2697d1cb13922676f072a4548f9620b3c495219c90419b2727c2480e2eb08149152d8012050468d4c4133640a94972e6065913c14f2a00620ed1152f284144e702232c6072244c1423a331637ace0252f0a202941992102df1c4891f61e0b8d1e28219393a28b11138a809330312253c9ce95af0b7506c1b3e02063bd480488192992b576480a28217185c9166081da0c400c4d410513944e126081b50e0d1e40564a82c99c2091b0fcc0e4f69e2a4204aaa369d607001d410493001020e1328f64c2b8d1b1848b5293ad364be80820c599c88c10ba6a8c0c421f12a08a066082c5566e0431c18aa97de94db1a5c7aa3b7799b81013ae5466f9db8a2cd229c5f3a3d38f476a3701ae6c1f16ede6d75f37208697416d124fc6200b7fa99c728b94e9226a74bd5072e57ada207424277470f1e1cd4cf4d2c0e5a2d8fabb833ef0742e40de71565a16c27cfe936eda369702bcd611fadfe47fb681f6de5449d6e7f342aae6c1cd4ef6304eb4559285b329d3a2e7e34a7fc24acb45aa5615f958f96837e1f8d161e7d37908cdddd8d84ab747aaf6e20911c17d93e997efd0de49c36e084f27dce392755bab3abe1bb712494fcfcfcfc378e84f2651743e77d9deae3aacabffa137765369bcd66b3d96c369bcd66b3d96c369bcd66b3d96c369bcd66b3d96c369bcdbc67889bd503c1f7b8073fd0fbc0eebba3fed22ba294baa594ce6b411004ad70a2ecc4b12fad17fcbc592bf55b6db7dd01414444444444444444444444444444444444444444444444444444444444444444444444d4f1bca1d3b9ae7b8e7e673bce764d3889dbd583f2a4bc270fbd2787716c5acfd6add9755d9744c57a3bcbc9e9c99f5078360eea6fcfc639d8b3d96c6197836c9fb472b6f33e50a5b30a7758b4e0e971f1c207468c1f191a40d1647349c64f0c183e2f5c006003196e44a33628173d3c2d58d00dfea76b3437da09573aaa67c530ea9a0afc3c9608c388abddbcaedf8a337ce48b46b7bf25cd1acd78712dd4ed966ef7732a107a6e77636889868b7bd5843c9738478fd7e9f424f18ece3397bd9ac7e43575abdf0bc3e4b095cd6bead70aca0bc3af559afebefb568550bf5fd91cb6925a41f56b35b54ac3af559c9648e44aca61aed554bfe42a0ebfe48c5b52d2895c41075e1332904da4ccb379365bcba49439ece3a695b27e59ce727482dff7b209c3beef9748beca799deb86cad2e04a994c265ba1e092bd62e3d96e3fe550e639cdc9f2220ee2ff269db18629fd7771fde9533ae7db6822943fe70ce1c575faa4bebbbbbbbbbbbbbbd7ea2e29cd42c56f6a0614ece23ac7b9fb0d52b88a8f698ce092cd8bda4ca38962d370a4f8d686a18fcfbf1447cae6a86da409473f728e63d3b04a5382b35499ea50ad5525b5a93aa9b68a74549f1cd62935507fa7a444f32125254b4e9890aa8058aaed9b62d32935077d9267eb480ea22eee6c5bbf5e54340d549fbad59f001ac2b15352ea179686395203b51f815e42d08f6cfdf2b94cc1255b44fddf8086e16abab59c83b65f925bfc94e59c732e31333315f99b734e6fad09e54fa5ebadcb9e8d85b5b685b5d55a3bdd2dd881737a9e4e052dc7feb6b26c7deb51afd6ae2f39ebe274cd78a267ca2ad1b8462bc735a8279e2692ca9a4d9e1ce64d53f604bfe6ace96922f186bc216f68c91be29c187507ec4d4de6dc262fbb5c5191c3ea140deb94ac5a59bfeaad5b93fbd984614818d6e25c9ff45572ac221baba24d0ae58fd6fda1b0486db975f1a92f3d77ca1c566fb729ab3755975087104da8498c1928a95b0767aa4e6f536ff5566f1ecd23ea6e73769ead916112d3794c62c830552aeaadbe6158350365a6c6319383198b8481fa398e6b128662062e7d59a7dc3d70696d0672132e6d6e3967adb556a628393959dcb55ed75bfc5661f62d6b7620c6acb5abe398f2458c1934516ce4d45b9d3527ea2d883695dcb4bb7d4ebe8f9fcca0798a82b2c9f6492b67a7b5ded256ce766c3beff33e50a5337574bca50e832a5eb94096cea783e5f2af942eb3c270cbe5df59623159b0f0962c9ad62dfe293872a6e0f450cb6e4d5fc4347d3163abc923e94422c923e9445691461dd56c380ace0d48e3b83a70f01757b7f865835652d9ee73525a27ad95e3acedbce979ded2e36cd779def781aaa952794b95fc4009aaa4ce2a9c61e82d43955cad4019eeec8092458bd9a285b76cc1d3e3e285cff4f1f1963e3b56de110c41b27a5421c8dbf2862fe68b17def285d5f9e9d16375c6105cf93d578a6deb167f01a47c4c63fc6ca40947a1eba2ed1fb1b14ec8fb559398975f154db7389653c13e876df4d726af35097eb953c12161a019c36a5403fdedd62814dc6e6589eae401c639747b9c476eff947507cdb520a576fb7d8e4fdd641efe957e93a1df1cd6592255d5c3de4456f598778a9dcf61a7a2e5d319992eba928679cd9938877f93131b92436171a92d7eebb93299949ac33a330dd48fa629cac6e676706ee7522327bb81d073a7d8d9bad53fa38950fec8c9e66cd5072eb975f88be10b39870942b83973a6aebcfc3dd8a4ae144bf0cbdd92391660bbae4397538605682e8ccb4e57d06eedd61f1f20cf6e95326ed5ff99af9a73fecc6f7d5f44f5dd4780635fc4c781eaabea0b4d714804381676e2e8a3f3a3108d716cf5a3fda13f8203552a0e8900c77c88457838507d23b107df48fdf9a1faef55e28f8ff07f7ed857bd0d2ec4e7c871809c7385784f90523a4a1c466ebff74b8a2d26711f7e684123147c4c63ec9e2c6191133cc5bc67d50fa9c40343e8fd58bea00d2736f4095b1ae816f57e2bda282c42ded85cfaac1442c9862515f24d626998f7453af63d7da9e4350940e8bb88211ca5924b9f5669a32b2a1842e15230f45f649c708ea3af7269b79452f657dbb5ea8320accbfdeca603ab38f08b340c24d22f96ecd2405432d12eb266e4a45f478dc443dcd12dfa543239cc138bc8d827fe74b3de8692873d11fe6d1afd56a2df46f4251309401ce6638439670737a9c9b611e6fff4a84b96d07638cce540f4297d188ea53eaa72293b81d9c2f4e5525903f3e58e20058d60c072c756ba74cbd5a15dbb947e95afd155eb17ad4b68d75372a964ba544a291d200ab5ca84ae86dac9f2310d66daab6100b8b5d2967e8981e32adcb1b1a8683e54b963337d9173c7fed24d6d1bdb4c3f5dffd9dddde57adfc02def692d8b2ad11cc652523162bae5b54aadd241c01675e110ce1fe997eb4d54cce8b3b2d52ad7bf69b7db8cabf5b7451a48a322034db13e65a235dae4d49dbe2cd9b991241ced6c2c4cb89ed3dd29f5c07252ba74e9d2a5db77ee5df248e9d25b4dc207f4fdbaf43d31a45f76e57fccb2324a2955526597af511157aebbbbdb4f70796ef5596d6658c4094709256bd078f40b94cffd9adfa0bfe431d33039d440f2c54816242c2681e47b1e0b16316288e2000670e38690dc210d20593584f2613ecdfc2307a0517f55f4df4812d2e4371696df6212362d46cbee481b278d527983079425299364125a7229b56854fea4cd2d1e78c0e4301f212197abf5df6a128e96766557da10dd6cb7d34abe35a884ddad4125b4b7069590bb35a884f5d6a012d25b834a386f0d2a2137f2d4a012f655f530ee742107f1db39997dce39a79439589579823c3c2d845cfa0c19be1b73ce39d9f62834a7651442764a67c0b07262006a421ef342d1e5315598ee687d643c8d2a2bc7c22b57b9dfe11cc7713ee9f428a5a0ffa49482205be66e9d7eebfd5a72bb0e3de15231e42022b12a4405ce5a2d5775782aebc7bfbe15418855b148a85dde9a5f59f672914facfeb702395b5fa7fe647da7b22a2107e2ff6ea46039889f5308e5f30e337b57889c33c55104aa291204c1972a9d5518ae7454e00d99dbcad1e9f3729256a1fc722c117834e958c00e5aadb270b8682ecb011244d974da4d425151425109e55fa92c22c2412d41950a4c5ae520c2419273708f8e108fd7d10976202bb4b2db81c122f2442c57e9bc21eb24139144bc769144b64fea6a013dcb0746b843848d30ccf34417a5942b5b904d24121d514ad1e713e515219d6eb94a9faf955248b02da5dbba141e529a740849119a2c226d027eb95842b7dcdd722285b1333968b6fe959ea5cfc91384a7b35ca57442f98496ab74fa9c73b6583076e6cb25a825a825a825a825a82587918081fa51b89da4b642d3139a11b7df2372c5d4d7e9f4ac5ccaaac7fb5e2091edb367ca7593925a5e2c22529504022a505050500390403310f54ce8b4c0761868a93320ce13cc9eca396c0f23a0ca2954ce9e429ba543887a0d07a51ccb8434fc72310809ddea6f6ed15a82ebf33fae25b7a7633916b6a7637e16e7a8cf9283c4ebdf795ff89e8f8ff7f1d7035a17100b46c713840704baaedb59cbd5e9aed26972b558977bc96152d6b55c922dd5b8a394d5b84a3050bf13456e8c1a852e4abafd9d0a04ef4e5142cd8162e9ddb63a20f7ac5cc4a07680dfbf27adb5d64aa7ca556e3bef932010ebe70c233333db1932d449e96466fedf209cd2ddddddddddddb99b33c255eb0bfe1fbefdbc5072ecc3309c2b701c154a29e5b88ea0bbce52789df52667794e96b5f29b0245c8f2c0cd9d1aa11a48ff252a1bf2ff3eafab3d7b5e4a91e334f07274d9a907241b979d7890bade13e7f8dee573cfbd0fced13d77e31cfddc77cd8d3847cf73ef509cc33ef743a45b568fd2f5a71f15d75f0582b9fe3a2ab8feaba8eb1feeb0f84fb2ecab7efc9464e8fcf851b1fa11041323fc51a502183b3faaa27c58fca8a3e5fabf68f1e32a85ebcf8192e5e2ae9cb84a27f8f682e07b5eb3ea4f567f0f6bfe0edfd13cac21f2b660c11ad9e972bfc31ae594cbb9b9dcaf5863f370b9d7618dbec2e594b81c287a451ce49f8021c2917a453748d23888fbca92b71a07713f596ec441dc5b9643711047c375ee8effd3a3031c274a2a4ed6530bf951f16eeed6cbdce038238a125037b45ffa0b3360f03927cf39e79cf3a34f29a54577cee95f02fa86ce7997f8b45c75771b526aa5f874f9734ac94d5fd1ea644adddddd0d7f5326e7753686062cbe4d0f434add6381768a9d53a67b9f540991736e77b7a4ff49eed6e9be53e67062d0ae49e99c734e6bc3b09563826063ce6983836cdc763d03c906c1ed962ecee1d7e8b9d55fe44a3b655696d861d25a29a594721c154b68ae47759f735a3b6b926db6ecd2b28b24736bb24b77f70814607f259470c209376e78aa452ee220a031e128b74c91861c8173b46daea9f96034531c47a4615e935591c232258d249254e2ea949a73ced97d458874cb7f64a859eb039973d6073239ae3e107f0dcc7620406658b1ada49f612504f243033b6ab6dfa1a386c4062d1cd574ce2938311c27c20f204188e890323151373872381d0be8d7d8daa163ce39715ca6ff57f4d112c1871007eb78ee3f2e00dc029ac00326c771e2102e006c0059e3ca6f8d2080b1027cbd399146002c70593c7c81db9381e45b56109e96509117b296b9314ce7a494520ac26021e4310209fd9abfe38ad02fbe95bed71715750871930e9808476efac14384269c8341ce8aa4c1f25bbb56596573d0eaee96dc9a2f550d30c11d4d2027bb8e149983e607d4ef1ceaa5466aa4ee6ea47047b702c082706c27eda49764ad95561a3208e11502822b439e3216e89c94524ae9534ae911aeb4d65927a59452d7fc5aaa74086903782efd8fb24ce81e26b8aa1e54d500bff404cee018e943a3d572e9e0f183d1b46a626c4f5045fa25a5e496b7ae8fad968b35610944ac8f9d456108001ea48474525a699d3a84e69c13d63d77f3c651f5bfcaea31653213ba5b5c9e20b2c70eb7fa5df27dce1d0eea77c977be7307c707ae7c6e105cf9de922b194a27f3e0204dc82868b55c3a78fc702434ad9a18a71369f4199ce648a10b5ad7a528e388f3252b6edf6f05d210ce9f2f61b586424d8645a6428c3e28615e2d859aac8b8c498c3e8f8485b521994c8e2c4a8cbe0c8900f1d267f9a200b893d239bb5d563632fad55dd7d9ce72d0b2b4724288dce9b18656dc81fc231febe10e3600e34a9e0eb4e020f95205020f082d6ebf0e07c951487722c8412118559727b74051489116933ce9c9e8575fa65073b4b7d2dace6d3427a573ce39ddef27851c2682991b318453643941a33694522ababa95c4e1a0605348e9b3ec76d0e84a9d754e3a69adb5d686d5afcf77d65a9f16b9b5db0457deaea2e456f7a075ec135cf9ae72809c33a47e09f6d6d1c895d6c74e99924f7e7777777777777737fff04b293d89fb1dede3d3f7656074dde5125a808f0bace4845ee95cc9e9d76887fa35864d42d94a0e96705cc1b9be82b39a32720e5a73ce3976dddc4c6076523ae79c3389fb16a1817c1e09a709b31f2036b76a09ea03e690d9fd3ea72843a74f4e093f03347fa13f948ed030af010942a45f43cc4ca71c9f9f5f045ec3524ad900d92c1ddde2177258ab81f8b9f2df111888dfda6e7ebafc92c50e48da992f64981114cc4881c5091d90d4bc4026898a1a1610918233320879043558a1018946850a1756b374749b01891daa40c2cf3bbe9061b01dde08714354151764d081244f92d2bcc18285a8670d192068b0c2484d10311642ce0bb7355164718ec4f83901dc041827b429bc202561c6c89417d85aa8a28508222e120a8824815f8a27882764f921ff04fe399f278d15427e1b0cd4ef813710532e161461ab8ab763013c5c2cbeebc2db755d278ef543960e8b9b415c77aa589e3c4167c4b607f17ddddddd3df52a22e46e6f2d5ff5a177360fbdb3e9fc6ffc38ced2670f80778a6309d78a41c0db0fa7df4c41857477974147712bbfb955bafd16e99ce3fcc9713f3971fadde1963596607facdf71b7766f59b3f3cb737cf4db3eabea03fa75a460658df576b3dae3966ee5ce124b667777972ea940c2dddda54b6677777777e9920a24a0b84fdaecee4c5ddaeab482a005634085d23bf2f95b015e762a23c51ded1dc00cc2cb4e65d67454b5160c798a70e247656a2b984959a523a980a15b19a3a34e54c0eca84c9167431f27a83b7eed09d7822b5dc884322e3b5da17160c216979dae2c717a621bcec0841393316b84c832e524040e45977b1f32662ef71fe572b6275c30a914ab4f551f543b668ada39c686be4ab72af1b1dd79adabc9651e4fa18627d0ddbd4a18c09cc42c8d51e1f6739819dc7e0af238dd51c6c8018e1e67313fc8b9fed39b6cd79bd600c18549104884c972fd77b053981ed85666c50302c2eb6ec37577d7e0872a468c7618723374c58997322e44cb0b76a801081a192262eeeeeeee31b96e039cebdf7577f757103f14c900793e309f9412f6e53251a44220af3492539c184967a37e8d2ee576bfbc25b7a795f9ed32556eb775fc6bbffc21f8e597460de53c9da300346ecbf01dedb4197c4c0347b78492b8e7587d1cd49faf8c59e5b774e0100abf15faa879f9d5261e3e2e4042094272b8098acd6d4a46ad6c429f5823028fa590aae67f93357f8a43e80f71f5bb28b9454d70fb039ba6a8f4ec98252d75866c00008080022316000020140a87830191509a848134ca0714000d7292466a4e3c154823398cc3200862180842880062002104408248a1013a036aa556f216c4c9e53075ba782eb0d1d5d130ebb8a96f9de584576a48171f5536d9d1137a0ea5c3bad00986dab1d100646bcd9d751f7275324b90c9712ec4404b833799f33342dd33bec056ebdeb9fb4f0a4ef4b5b4d2dd82c6942cf346c9df98f750fdcde0d78992cf65e40ddfad351ba7928e23eab141abd2aaf21874a421f6e6047167334a9d56cc544dcc23b2f8f154ae7ff9bab2563c1f532fad781ffa5d9286dd43cb248e05981c627f411034fb6d959edfc742c0c6dd7a33f630859bb746485049349f5530ef4f91fc3daaa4bde1f8307a872099541e2177bc70f25c40cbf75da827d905eadd5bd817bb389246a74ce8f63c8664b1afb32f12c547bac8eca8eff51e3dbcbfa394af3ee98b7d0d925d524191a83bb1afa32cb0b07538ab08f4fe7a042186019401b8d91d4fbcac1ef43eeadc19c0320b9f90fbd09656e684b3cb1226c5692b671839a38a982cd01a51c4cdd34d50d2516df2a6c8964d67f88fe3500c7c5420ba0cea263da8579f96e2206320d5983db0c76264827d552182bc4284b462ea63d7321df62ee9658d49040f37537d3ed9716c6fec42192634e0eed962204a6197c8ae3ff88ae6d6e22ce4133127f016eb8338ac734cdd07770bde600b9ddf6d88f6e23127e57e9d838e643a83e9044048d76a403c2b5c214afd44ab15018e708309696b9b01ea309424d6b1a68979311f9bc265589b2fd631d2e06c0287c9d2456cd684f986aa7db8a98065e56e56b8318f1a586f4c5afe156eef89a62d7e8ef55664805aff02396c45ac1a189f8373e685f8c11d8095b43a5e37fe296e43a31eb4606251bfc2f2c81b7f559684baac937c11289d9b7a197ba85ad27d3b3784e0ea7a4b14f6e7e4ae3323273a66e1716cd53a1b7c4f105642770102d206d6a156fcbcb42ca82a8bce4eef09e7d2f841f2a570bb52fb1489bc40907acd74ef019642567c413fee446da9ac25804b782d16171116b2c20d568460b69284e080c9d8407355b540ba36e26fd767ab7f22a51594f27cb9e3736a4342b54f86adf201b23f6e1b52d1facf95d025d8d99e3af4f4d1270862d65153766619377d4683a246b3f844a8da89cc41095a3f1aa82a7374e8c9c7ecef8ff16c30326fb118309ddf2be4aaf09d0aa8bc98709d8e0237a3fa5ec9da45aa706e8bbda9daaf75a9ca798322e9c2fee628247801df20078fad8dd7ff2cc8324ad1bc8cd80acefe78684649f6ae8ed3fd50ef51e36804e2e57fbe6e926596226b623360d99d2a70faf36af2ff2f790b4a8149d9df2702945049ba81ca1d6df6af2aefeacb0c541a3bc6e11c4dd9c2fda2ed258a4112d7587b0fd36df0e260bd196b28443359b1c3dc294d29dffb4042cdbc04203b3b09e3132603982ea146d04e9451ddba2dc9658d3aae3790dccdb7544e91aa881eb1b44652ac128efeb135fb4ba59504c5b9429e2590528af58e972f3ee276b1d7cfc0a3edf9d01af4e42b8049048149838544425c99b6b0a75bd675cd22e84d496999b30d40f707c97ada4ccd59b369762e40889e9c897df57bef717f0ce94cbf2676e3ae5b0208359cfc51634b5d5c2cc9e91cd91d1fa05f1ac1b5d5700236eefc9b90c2f585be632a519174528a35f0b0c21a82f9b34286a3adb842e51444188336798e1eb748be75033ea3f0d096c32813b39eb67930122e5648d2f637b59e868ddbf8f9975a2c05aeef3191b568b2018feef6880e80045b3c5cad4a249dfd3b3a0d98c6587835f060408ddac0cd75fc81b321939a13effda04813d894ad25b660e2dc2528fb8d16fb0264fe83f6e308293a254459be18a737efc015b7aa1689cf824f53cf32199f2d4f358e3980ea6021c22d446fcf5f1d7ed538ea3155069235e9c5d9ab2f716cdac44b0ec6522fc0641f444c0596a6219bc553db1993b142d9ec076beac72e9175e993f239e8d69387b07627df4d905d40169444bc749328153225391f11dceb5946542a4953b01f1854ba9fa384fa56f121f2eafe71715e8f536e405a3ebd6f0b9c4fcef8c7570025849a41b8c1f9ce6320ac57f740a68d6c381f9af595f40812f3d39fce70a4d369a0221d586de6a2cc058b06b28579bf30610704b06a978ddbb76d5dfe27f88712aef86d820e68feb7643be98f03cbda4903a3b8b03061e14ae72f870310b174107803dc4388650f574d8304f7e2726834fc48dae4bac9c5b95b51c2e9f16e26f2ae5318c33dc328ea0f1af2534cde4885f11fbec4c330f374eece28b77f4c4c0f048d672919258fd8065a00af53940104455fabff732673ec878d3b114503948c9666add5b01113594a8f463b8c2787e47410054e0972778058650eda2f2219c20ced9db6dd452a90775d3c1e7e1d3c18146bb0e42606f49900ec9091a6274e4ff7f30efe8aa3acf210f0d88237814cfd8732956c952d9880d0a3676c88b2151234811993a66db99279a42043c52ff3a71d8aa04369c8f6611066350274315d64d8a9a89da45f7de58381e432056830441e7963947b9b93e8b7d71cd29aef303bcbf4f07519844d57ac45b184152718cba676f898b69a258428a8e61181dce6eda9bf6094c93e503d0d8927eccd0f789bab435d96f4b121ae0d7a33df84460b064108eb891e1512e530bc06da251548e241173878fdf39668c0c5fe85f088073f5c14fd0a8b9de2065bd9f1f4ddb1fe589aa64fdd441870e665209ebc5248922bd2d1e2650ce2f31dbe1e2121c7c7c2fc3ac27b63c06592dfee9d986771148de38b77841db863d89a15ad1a149b17031f8268fc04ac68258ac67736712c8c5a05fff0aefd137f69b48b13c5c059321f3c3d9b221262c0c43e21f392d1ec657f6c4bad8341cec76e9cfd22a2dfca3064449900c9925dee022c604aa9aec9060c78eb802d56140c6be131960ed2c9813ac83df08cf8f34dfc867900e149e838abc80d983d96309e87d07988a4bfee88ef6300e65a91d299e1827b85ebb44d24f958b03b7d7e4816c389109122df113f7a5efd93c13b798e7e2cb08e1f46e929ff25d55d248796b0a0d88f50195f979a8be08f0b87aba7e1c1c93c207050fed61ead15480803686376cb69bd81bf2d50707feb628cc432772688f23941e062ff953d72d5e6249813c6b63b85b6da58bda26f04190c77f7f54c7083f87bebb902ff10ca71439837cb7346524b1639dd0823781c413908a0df79fe41c0786886a65674c827bb7a215a5a5a62cf06662ccde91747c626df98656c89cbb6b6a76fb568fb6617c1aacf1ee48eb4827ef0580e92124b63cf666c28936e94ef94da913b39eb8dc4d5475c9e1f449d352717652043b95bd99e64eef79c80a0d78365a94935f9e280929bb1784fe19dd2e7b51dc8f237ea539958c3722be3f2716c8e82c3ba417401dc8d01086b0100dba81356c272523447b520e06db0efbb9c06c4bd0d3ee0590e0dcdaf7b439a77519c42c3257e289eb93cf15b950ef0b687d7129e8316917b64a895d0fdf908e17db611f1a793f31dc9c284b56f96fe13641135c734c7999b3337f70044eef404ecb4da9b3db7c3187c9d0091aec382c33ce7d426cdf57f9a0ab67826d311186fb6a90e969a4da7bc7205c4e2ca91aeffbc12d749698a353ff3c8fc68a86e271263ccf66f35c39b18e9170225e3c6ec21806893704950096f5ef01468cc993f144d57c0527bbcd62900d996614dcdb75a93209bf5cd9156d874418305e30bd2572b087c927fc49cbb6128a3419b10083c88712519542ed31946d609de71fd04aeb0d8e5916f7a2f20898b708b8170544461d811a306c162205558a11b4cb92f10c4858b422b065821c0935f2bc1394e8195ae813d3dd600854481d6d90138d72f2f815887919698f99ada7e1a818531c904b188d8bf4889fc183900c9189b45f8632088b013fcbeed75988e9f079f451458e441301ea5b5ece99733917e46702ae5be5ccf24380f48b9bf89bb0e62123dec8bd04a418139aafc2dc705701981c055fab1870dacf4ba5d23dc1601d3ff168e950acb961a1558a927c2d22b82ff797cc8f8458f5c437d3e43b43eef344f9f611a1042332146260712dddd7ba56e27175851906fb734759778da3633f100770b413440b8bc4a7311b03ec77b48d64fa4bb16b65eb866b77c3b1c85b9e7e465e4e89dc185c4fab5af6eb96b79c21d7617c94d93e543c1ca69725b1bd1f915fb2a917bfd2c11e88532ae24f87685f17e741310638ef48999fff6ffe2d0dd021f9e3b8b287ca17ca22f610379c11da88a221128169761c10268497674e28ac5a2f631e5b9d67d2582b99544c2c9c2d48963e84edc318fbba3d682fca2a1e5319a495d3dd7cdd5dd24a5185f9012a26b1b284b8c60b63584db33b493a456a04418050f1019fde1332367ff508f483985cea2bea4b14143460d144186edaf667c1ac45f247a2e91bc14dca476fdcc6ade5d1354fccc95d6d5520ac3558c02f283a9e4793be280f03d12062119cbd0969aac77eb03e21ca9f100a18b2a2a309fae4c04a412c6e301f9e5d663a334e24eb448915920e4f300a2b22e5b06d543a6f139375597d8d84595dcc9fbda415db6bf028e69f89f437dc4c39a3be9a046e016485299bf6a2c57c8c9f54013f75135af124403643e844c28547873926b3b375918e10445dda37d2d286f2bcce3252df6bfc0430275fbad46754aef68791a0d3e7f2343faa23ee845f6b65d2ddd02f425e37470b2f678221e9d9799fcfafc3d321456c002b80eecf40d357067f8ee446a79b335f246a5f053843fecf3922d9ed18696ab45345ea1b089a30a8958d9efb315960a2f9a932c5e60fd3defd6caf578d116f874de0e433a0f7652c1203e29d7eb2eed60269247c864b2f2487b7fe51c463b1bac682822276d3ffd94084d036f8f33038f009b5f6b44a4dd7a74b1b71fe13a0795b777935c8123ad086232220b4bf3727628f3891a4b9c2f33dfd983cf7942bd08a25197e05a9e0bef01855a78ed49ceecf87110f59f0bb602104a4430690237edc0479e482f21ea2d2c85124a2c347c8db4587d19c63dc9d83a1d43025e6b5d45d9668cc9f43e17b0706c56563f367ad2af59d1f4a28c22b96a34765d7aa1ce5d97be0700dc84c62e16cdd8722fabf491aec4fe9c5529f051981756b756e2c08366bb00a59205fa7f28a483a304dac4aa582058224c06c7ca96dcbf898ce2cab643c83902bc127d22b76ade95cb4f425a371b7f051e0245656391acf873d08a471c2627dbf6e55e89f85cd663d4ac71f8ab693aa00825bc06ecaf9e3a9b107f909cc4fb258229a28862fddb556829005ea0df3cc6f95f2646abd960a9dcce0651bfcb5fe6d16393ceb6012c7142eb58a823f2dfcb06f5bc48074fb81f840847394fcfd6057122f0b61662e50b0303615b0f8c88a425f5027c8b62abbc90d7e833868f94cc1fefa5280849e3a648599546ba049c4a2d6656cea69c79d2ff91e29bc7901104e5c501dfce287097fdbc4908560262776261ba7f418b397c7009a37da578dac676d10114fd138ff6ed07b5820a1fdcc807d10da9595ef8e73500d165afa6a0d6cce335f6d40a22a964e5ad12508dd501fe78a76532eaf10e1fa4dd493b73fb0f29763b7adb2dccb74d5a7d4cd20daa62399b29063e59c7a0679ef2c454b21c40a00efb09076419fc6ec2d949b049c74d243c18a6f53479362472f47d19652dce2904fac146b81f7c53251797b6b20f616fb678e0a2fe2de25e059c7034f1be9d1239b678b2d4f827b828b319b549c37e467b33fb260ea7299d2f969bdd2137614297eb86126bb8f001f162ae4602c8046ed9b03e27a282a0b5bd2bf42093867d96c03c88902763ee2ff8903100c294d1043a983c3d308f27fc201c55b1d46a203cf8432c56894bda802b322eeb22ace54fbd72514295821d2eb8703d410488d6093ac0dfe64ad802bf391be33eeae26747dad35313c6e9616103ac00fc809f5085458f7c2c819719052c477418ac57d91cbe015cd24a4f97f2e001e61acefdcfe0910a8cc553c062cf77df057627554c87d683cdf949af06afc91a1cd93ff4ead84c37c04a70637facc0e080be22b4363799404305a9338b71f07f1f2ae55b9e1382db9d64871d8afd80798888edf3995778393642c51bf8816cc47ea4014da3623bbf32c8c2f9e2879580e79cbd8359d3736d0a93e57dfe2428646031f6dbc1739e713e828ed4a2582fa14b495f445ad0c31d78261d88f6a0cdfb82c2de0d94dcefd2af9579aa997bb18d5bf2eebe3adb373dca05c4f842b346d1e085400dd20d2ae1c4010085052109c1a75abb40befbe800ca8e2f05dcece4c41a5df386722154aed44e1c77a4df5b8b0e8ebfa7dad47c1b7316a08fcc9cb7421a59e7a960f708dc347c39990e77ef8a9296f6cf6469ec2f11852bbf1d28e11cc6f9b85dea18319e35c712a80dd2152307f79baf41e5dfd2934544a059880a228b00ac27a8c896249fd523ab7f056b20be270aa5935fa1c75e5cc6b68a741965607e631559573c056bde25e37f48b00e79d7691ab29a46f84d5873a7871a3fdebc2af4ec31fe7f72642591cf82330724f03875ffec741e39a8ca110d4adace4cfb929730cb4cd2bfc15d96b7f560af62dde0565175a7db7124ecfe39e3bf5cd39ee14ffe281f257f06afa1495c0be71e1a2a768fe2a6a4e08830ccadc965460b44e0f3487761072b71faed4266762bd9134211cb529810467995c3a8d7b38500d541b1a987a7730920f1920e2363abbc1a85c47035b5ce963dc379a5ef74c46d1b7bf259b673a46b876b90daff7b594eb80bc52848cf7c12fd3608b7427b7b7153898a48614475940944b900495837a3a6851a4c28209a8529a223410355bab766cb70249524ba88e5645ebbe070d8d55168bccb0cb29ba1ee89d15b8733549a455303d24224ba2c1c63d3d7c30231e57c7a16d386c1bd5e36f7b6e9f5ddc000bdaa962768ea5112264ea2331c2763dbb331fbc1f58d71910a5ed7e036e74ec0da2452846f370dea1f60323cb2b02cb3e00e205b0cea04d77fb8f2c0f7f4891e2f412820427257535386fa3b9bef4a8ae49aeceaaf69592447e8d4d9b13ddaa1205c32dda2ebed8c57c439e94e45c97bd0b0eaac37e25993584cba2f37804c3ea26cdff23b1fb27d7b80e13863a05a92edcfa4ad34957d6a35952e11c788bb7817c059ee526ce5dfc2877cbde26ad7f87a2b0c88c204698d52020e95fbac0ce5be65937c38f63f7aa57a889edb1b4f87aae5abf7beba73d7ef1b561abc0c7f398269ff0c5fc6877dd4d9d49419248e94913ede5d3ac2baed901263e9226c19128c395ce75c2323be581f5aa555fd8da4a143ce68c73489aa99d46a6426f212211fb3f7eebbe29d1500cd1e6fed370c79b6caf93efc7804410f3bc75ef3d9d908d756ed3a656784930e59ed7c1e033f48c8224917c2a0c12ef33eadac2027a73c2af78b211072aed4abf6bfaf194e7cfb0bebc2b9854d51f0f2c4e065ccf35619b6bb8b04088a5ab7a0f26a6c1e36c3bc9737d22209e5e17261727e7e738fd9366dc76084696a245464f63b9676f2342f42f067a7c1a39a8cb12ec16ec4018e5c36ff87b63510927d0a22ebf25b59e01c9afc4694fb47e712ee33d348cf9944329599ad985ca072b85db0ca1d4ec2ff582937b52f6e507faa79c640a5372fa035c455c5db18af4de3ac8f0bfdc89e0adf6673e1c0922b9e53be64ae61d6c86719c41ec156fa8da4483805a331a3cf1870adea90f44bf1dd90ed17a84be3284ca32fb3197d09c32d04cabb2f9db64fb404430efc5d39faf35b9ac975a22fb74f135efad9af6954ff2f83e85c32b9c2f6b29330976116c8876ca5cb306968d48c389a2e2224d985b450bfe3cb508640a1256215aad8e9962186b9160838c1706cf91143b5a6682ba595f133820501e19581886991b55936d06f0b4afe11072d03cd7127a1ab92a75d38ee607352b8d6e30d888d4cc94f79a355521f866f059f4ff51791b785a5b4b0e0742c808113213b79a8e4a2b560c36d35f28ef7f70bfed2a8b1463209ada2c36db004489e88214e685fd18edd3c58dda9db1a24887b8cd38409bfe73be89da7fc0cb7e5b87de1d95ac5f362bd644fb8101f46d2a6d05505d9f50caa3aeb58fba675ba167488a9b8d8ecafdd7819d62c0d34edef4c939c0b0328a1f2f2aa11222abf9f5f85b11cae4e64a557b98e1f252e9cfbd1b8dadf2ac4831aea87b8de707c08f69f4eca6c262ba2d45e05e1bfc1615391ad1b1d1f34d2c2398d0033b12124b39ba96a40b653d9c4c7774994af8cb46786b935122df494b75f4b194a45bb1bbcad6e1d8544016336e274abdbcc9c9b4926334fb1fd8ec9df13ca8a7fde3909197e5d21145ef504f5c9a29469604190206f00d77c539c2dbac6c26d0b429ab16b5ebe41bc3ea6a56c0d4a8ff9c1742c1f3b505be7b61a86b7ce4def2ac939e589a42d7de47f17f226a72249ba0998ef75eb64dd0cd74f19767e3305b5a7d5c3e1d353731a08e045c061a64014dd1b5b5fab414cd8c5906e978c8667af8ee2595b927abf7055f831c5008445122e3d56df6d1a1cf0a8ef8d35d7a7526f891f32aa5b4b9a620662634e76dab338b7cfd0b8ec72d179a2537df1b119357f21d6d2cb4b0748837c17cc6009d9d01cb11d50cfc5a60cc702f588ccf8d6df667f6fd979511c879993c4a75420b6840d628caf9ca372d563690a94646579e0c5b8e9118edc680666259f5eaa0a13f5d00255be324281faa76c54e73edfe17d1bfefb40e5e18784f1a9cafc758f004da379a0c3b1747ce2d3b0e90e33494612f30f6159be257b158f86c68391c01d27b12eb19402d3bbea839f089a4dc7baadc08073bba5a11fa77c7e4f428bcbdd410f9dd331e783c7ac21643f6def65cf289844423887b0378450fdd5dedfa793f8daa9239729520219fd545cc03eee18219813dacf7e6ac8c0e1b6db0ef4c3013169e789f6f81cdb463b26e266931e225811b2de1d8bc4dd5558a926b3c937528bcf60854191503768647dccdceb0fc108e09335ea7a2781f984153417052bfc8f1ebf1498f59a828b96b03602584886d17747b253392a179c40d5f9ebb94f0e307c3bf2ebcd555c8e687dbd16fd44e51ecfe518d299cc8752e39a7e35742071d84ca44ef3978da9987a58e54facfe12214db7d62ae7c8598df8da86dde2fc934b6df311b30b03f97dad3f796ec3e4411ec9f7878182463d2791cb8d11bb95e63a5f8961731b7bedb7c429f2ebbb2b9f130f0eea007dcc170011529cb23ef7666aaeb8d52cbd5f8d50233b9782b3d6e8f9ebe0d698ae4625336d2219d13b836570d8bdd9eb17dfeb2e6e04f59c063164b3cd08ffe449bd489162f0aedef4c32bd754a5e02c804719f503c517ac736e20d80d46973ae175c43bfa8be5d4273c3f220177ebc4c42d361d1ce14c03af8db99b04c82d2aaafc48939d2b4853abc9964b4e739122d7ae11f6524de0a5a1091edd71b9d0511b54efd84e810402aeee4507ba99d736a7526549bc4ce7bfcd18efea4ee2f0c0eae650070dada7ce2dcd0548433d0f8ddc409fca79d7046458504cc770261d1b5dc5ed31fa2002ac0a47a4f1d240a318649e310d1be2d85aa87d8a162b25ed8372c08a382c641d3d73ab65b055af578d1862a173af2f89fc72b35ed2de9500ff10f242e7c4869935582b1f28a3a1393d6c9542c44b66191e5691e668d050303b8ec1a6fb02eec751fac163ee8920873cf2a50239dbaab679345f98e1a57a7c4121d2858fa634a64b01b417d4db7bb2923dcc6fc04ad1a4a7c7394b844240daae6e99407ee2dccf72e47fcfe9b0b4376b9c1f2f32b7f928a34aebbdc2be197e24974146fc86f148a482487c7ce31d7e5cf1c6f38ebc6a6c849df9b7fb7306d82db680b79fdbfd82e352deac044175ee246724b85876a3d7c68fffb342b2e265a443d9f345edfd593d36508110303c0f4d15c352cc13e26f288233fb057d87aa837419cedcb5c2f17cab754acbeacc326587b1946d3c30fb1c39bce08177dbeb7b83e0e9eb8d85893f2a10d4501ece892ba34b96ca41bfc0635c7585cf28ee2d47a503eefbccc8354c1ef84c1d2a62d7ca79be7d8771590df686de7b485ae355d4f75144905a12be611567f56cd34bb34dc3b1d3a28ba6995804e1171acf83d494f9af3c15c73d20ba0ccdc4c6faad2ae1c0822605577c82c1de41384ac581fad3b828f5ac322785bd5f7959e199ec31f5a8b27a8c30de18eb006f77e361857f3d7b1afd16b263347a4c9f4bb6633c0a2dae831f638627dbb94ae76c9b7479ec6da3a4a9fe283f4a2a7876ce4b2a78913055260c67ccc8ceab15522b896b3a3ad0ce3690e678ab3ca995df37e67957defb4e6c5f5f40bd63e3bf330018a6ee6693aa0df099b238c6526729e3c70a0bddf299e80ed19ba733e730c23c771448e4fc1354ba1c223926df9d6a06bedc7368a5e6d3b6e593b634a8182b9470ef54e934b93149c4f85277ea56584d8be090a004baf0490271ee465f9266e5abae7d1c94694cd6da2ded1ae1b42ec569267d6017efef78917698d289b06d9bbf1a74952c517bcc680068e9637b4960b30207d38e987d1756bbb10ecee1aa8f02718217c7780b0c8dc9e1eb3d0f0035507dde1368efe356320e562bb2a1961c37fecab16dd53479d0e48d6bd5d569fde6c4386d45ef73918811817e228125b647a80928e9529702f536bcb2c8739a91c5bede15c8d62e8a5f4a9bcc201bb34409fbca09efc9a736b51add8ae8d19dc623c448734bec3ea5bca99192dfcda9569464004dae50f4fd7bb7ddca984645f7b64b3e6b3a5c6b8d27ccd994a350ea92bbced803dd9bc0043bd1d1d12abf3e256bcd27ef63060a268777fa9b3bca24087ea11f40a29e93f738124a44831f480081c21a2b53d0388a8d096548d8a198a9d5d95c62b964893087bb21c6cf3449572fd186ab2bc941dfb4b0092cf32a27f43babaf618712d78511b98618023f251aa604d0112c3dcc8a510a4e9340368742370823cd78213976a2ad4d8e1a9d84b3d0dd342c31cb28ce76ce7f5d33e1c38f8b2261bce6a74106d7483d63c3f88fc0d80624f8b3942ac5ec72ba9428950c7482744057446eb45f1e1cd1b3e7a436d6ab68a080e8096820d8fd9cfe0ae6c871cbd57c144893fe2e892013ad957884a454cf1d9655036f38a5bb512431e8ed7c34c61c784f86577450b557cff6691508cd9794558b898823fe3737d56e517154ef2fc5ed95be58d10a6e745faef16022436aee6233fb7d60b68239459baf748009ecaac530ad5410f85577bad3227dfd502bb1ce008e961c8060c3cbc518349e0bc50fbed814c8c5e4b0b1c68bed0c31ea5966b00c7c9f38b0de022afc01568eb612d6b6a6a51fa7fc6512d312c5ab968b6f66b9dc09ea9026221e3d8612405e8471eaf3bd033c457725f541b29870386860031077221cbf5c13b48f7374ff4ef83be322ea49841630ed1cb1b055d68c44536d46706ce570167d09725683e209304ff1efe09414a5a5f5260c3e8f2d7db009906e3e727a9306a8d7d7a7e5660c20ce2fcd01a39d3bc8b0925c2146ff35e1cc6c233f38a53270fa91ac6624065c343919e058f387adf81caccc9552d030b0396d650e193a1f6e803e917c171defd6984aa4a8094f14093729f697a6a793492b0ea485ec70acc570d94276f78a7b2903572d3e9178c7347da900934aaea4e41774f4eddf6a9acec799f923c1bf5bd9b3a57bc1d64b63b62af9524c7f37f224163a881119a0e908f414ee36f90425f22e2d0e78560763b5b822b2d47da38e2bc163fcb40274e833019ba4ba7c7305b2c085f4b7d5609e15d7fbdefc7aef9a8f0a02b7699d603c3414a8bc11f9e8a4b28dc0a14005f389294d003ed9c2a3180077c08a8e06d281322b162a5ec1d79bd3f957a9112d54c6117f849ac49be8ed55f6590160e7437417cc27d94e198eb9b7ba807106fb195618929a03a11c2dfbd9d6ce27e19bf363c885b0d4ad473e382145a7ba3159072c9703d6d5498ea34fa14eda0d50a79fed5062d5acdeac0a2420ac44464e0ed9410af515cf46b924fe2368fe1ac53883502376de37e1e8acd4947f1d18a15f9b83a726cdc58c2f5873480b384d14d3c84aaad74341babe1dace7c2662c60dbd6e4e27b3e41484a346750805dc564fa4bdc35d269e5e05103901887111ac6e122ead54721299ac23ab2ea3ef654510e8489fc1eeb5767375641c1914992d21a94176d60b732f31827356c832d403b29b9206920d78face0638e4c3fbea721d45a59e86332069d447d8f1489bc15f55918ee837d837c16c9e65ee1cd6b5d4d794dc0697bff94ea3dc2791b1647886c9030392297c498954865c6cefbdd0788ea7555730ae826ec52564981ff0222b04a6d5f91a32fa01462e80a1e37d1a1bc237b64db9c4bbdcd2264fc61d67475023731e2f4aecb4e4d31527070c83b12f1355a7ab60eb35bad37879982994e211406035eed7cddf7fb3fa18625a94e6d9f066141e7a7589920cee1a4ea96a4685d5fc05707d03b6d6e96d799742ee10c75fb97cd48e2bd14879406656ad5322dfd993ee154cc289a653ccd4b80c25eb66c3252257c80b15e20ab651ae4d55cedf41af565a07b402b6cd825ae065765c9344f5878055a22210fcbe548918fb3bf6c8b7d99f61db9d3219aa8fbc949fbbd0f6ad2d2566e2002a5977c04ba49a62eb9542d9c1e615418275bbffd856f37b549223b6016fd82edb86a0db4d69bd461d289f16237b11a3f2415c8b5a4a8555b4b01990b352b0205411b65ef2058bbd498e864a8cf03a57aa45c15323f301db16adcbf70498438d9e1dbfb31d26500656585f8246957b7e1f2707bec7b28994aa4393f81c4d10e412bd8b69efc7f1369a1cbadc6297437c2ce4d70ef25c4ef6da26b2d6eb55e9bb3dda11b7152a038c0b1b4e12579e9247f83c8a8528d20b4e5322ae1d99bd5ad847081089bf97bdf46fc4d41b7e7f20232f48272b3de5809809fdbe7eca7098675552c5eff02f4aba9acba941c2f0092cacedd2e6725ec4808222621a70d2d86eca0e3244e1532572464dc61f91856be389b124c3e3fdeb3c4f85d27bd143e56be51ba988b9b109f1d06f13fdd28260550009bb170487ab053fa31c8e61a3db54c015f6dddbb43f529106b4ffbd454ba69632c0e73c217650983b31e3cdb50ff1737ad192cf526c521505a331e91dc550a05a79edbe16cbe347455e7ebdda65a6f14a6f6f6eb905c7aa21688ff6fd47681b78aad246f12d2834867ebba6805d2ebcf5813d82e555a565a704962f226b5c866652708738ac267cbe10c8c4df881419c815b28630c0951528e29fe608615170f854a33d41567257b114f89522907f6329da7755897378f04faaca548296abe7c7d509d0bd7c14137e62155dbcf8f260459c02d74ba98b8c908907e920e5135caef74b1ee93ca54df87756a68be4c8a8725a769ff8126f44934b24b6ebf3062e7549021716893fe6e535d6b67eec3083cc142cceaf01bea4e09ad7fa0b0056b5475ac2d4e7fd3193b2ad55174a1c6cee18407572890f93429ba23936795c0883db8709be653d28f0da03ba2ac9d343a99e43227d245ea49ddaeed787c33b30b1973751862f7aeb44ac75b6404725f21a2ee8e9b13f5176cdf9494527347e18354a98c83f8271db1c83ab03eaed965e6770815a9912b59ba20b3e4ed1c64baa28205859602761a2ddfe53857c35bb46a881c6baa18936e2c31145c44281b7c705ff417ea94bfe8ca448627257fed3207429a54de9be0eae64e864ade2c28738d12dfb8ee8ee4091cc9abeb7088c409e5aa932c299a010c67cd61c521a607fb6dc170750ed0683567c51894d10157b5e17390a34de85ddb9464dc831c7c8bbefb07a49bf8e4d55442a3a9e135463f5a66e41d659442c2bd2d369c0adf14649d90d27ee504dda10fa404372c6a07158fc1e60c1b0eae4da4640fb1a515a3bc3b024bff4e0e0df4b604ef5fcfd7e3f33590c202f90df1bccb690dc4d00335e525ee901292f07cd99af027f09486bf1d508e560bc373212d816098a8b691dabaddb86ecb2d0f380f5520fcbf1d97b2331f83befbc19454581a84d898808be30bdc7f654084900d1f9adfccf28f97073ac641d70760d5d9dc9cbe8fcbfdbc091c30301b0a06edf42c80a82c202f1b3d3b59ea3d3d1c20af6d52caa66deb8e0a5700275787eac313e346cf63df4eb91156bcad3ec4ed048a9fb3665a5cbd8441cd8573ad114c1b9c2d72b23e5550f0e2afab6c5ed9e330dda498082a0baaf6cceec1bd75520863c64f5b0e50a4e04757450f09621c958aad3b75ae767a2007849f99483344dbb63f3231e1b93939f7dc0dda6612e824095c87e263512a7dd4f7a4229b3dd493f75a72170d7587afa257364c25e1c27f3029ee6929728baca368e16e581b6c0b320a9c2b2dcd660fc99c16f6bd9ebcbf243a58562864fa5d0c9211101256c7afc6c036da2b1f26b897f3d3a7d96e5dd440b07fefb483cceceee3a5762debcee8e95ecb7467631f689bd2f1a8e9ae33ba3752faab98cc394d777d5313b7f4af0bf8361de743752c44db761a94b83e133236cffb4aa594d85ff2d27299e831d446fcab59a313adf57d11d30caa7ca96926fa91653c2a334f40683df55681dc32a3bd5d65f577668fd9aab861373ce75aafefd5157fc65ea35d10afcff77306373ddad5d768fb82ac9f8ee741a3dd5d4dce3aea870bac68d99800fb28ba5cce1179d3a19756584b154fef5e086edac9a7a9493c275da0f60eac58e6f2f72c1cda9635917c0a6307efbf178fda23d793ab70dac3ca025f42db233db457f00c18b1e0d7d111e05a3fbdce3caebba17e8a862c611348fd6f757d547ad736ddb1b10cdaa6e93c6e7ad79b3f95a71924e6773ace80b6695d8d4f9bb17cdc74d79ad68d9556e48ba944dfcdb7f5799786bd38e90487d69043fb3e0168af4899af8839eec01d4a8bfec7c0b6951c1e1f683adb94631c8db9420ff8963d6a7637d7c90b71187d9107914a42dc55affb84e92e20c3fec67a459d6c276abdc3549325b985a0e7f747c34522e5cb5cc169575e8ab1d2f6aceb5efe2addc269a97dff02c102efdc057744e3ec89ff5638cd10a69ccdfa9b0ab19c0d0015b7b6ff36b22b1b30cf9e13923f63a86a72c6ea736a06267395f93781c1f7e66ebd3ef8ece3ead7a94dde93a7a9866413235c808f28ad1be6c18a461434c0fe7c5f8d54a4036fa7ab426b92a1d7d9572115a9c0f1d81f68a81ac9cedcb325cd06245223f6d7db385eaa2e93e5a05d9940364d671cc736edcc6348b6b77a13e85ccefff4785518452836eeea8f4e995ee564e2ce64b7250da878897f9e696ececb440ea6969ff664834c4d82e922c3c8b7f655cd25be29ffb92b3ddd6bf394f72c7805ed958520493411a51068efe29dc4bd323ed7e44a9b1bdc791bcd44376b3e400ab5affc235c3151f49f4e09e691e1a0a0c7975b750a3f41ce0e2370ae3686ab520fbf6a50a3655b58d2ed3e35b7aec02a02d841c90263e08d0036a5ac419d9325310a6b53cdc00de1da6ae52873e6db704033168e94b81631e41a50166c1ee95e71d925fb33d500237b1006e3d3685e18bbc6e6ec485812590b4eb9725c1c690f853e81c352a5505aeddbe3bcb41d67129be061cd9d9036839f8c1c111b3bb15693ba448af104d669031e61483d8b6bb1eaea46245bb11babb936dcd721d64f1cd0cca0562634cf7e4dccdda217ce4c95a2f915145bc29b1c83a0115428c945bd1d087f4e08a1081a39766a60a9f860b093117d2a654c2cc5182880931ad5f136423342bc69db47ec04a15c4102b76678aea5a8a889ac4775596e68f7b1e906147183f15db84e984d95ebba136ff45340a45ebc3118c80c5ddca396c91b0112a41c3dbcae110b52850e9ca603dac4ca981adf496d035ab2023826dc88d2ae2069261803ff34da3478d4439ad6fc53cef98c77718198b4ce237e68d14d6e18ac42a1416ecf9d40d9698a1cb48ddb57a0fca2cff475d3841ade192fb9f27a507da9d90988af1c1f32341e32c0e2c05e7da06519bc160fd0a20b94693d889b00b3040741010ad39d0f74e074c48e1cccc3664547e34ff39caabdf79bf3c5277216e3d4ef07a8313510df07661e72334165af5cc26956aea36a76b0b15d380ba68d0daa9b8aa95ea218a64f0dfadf9e62a3710c8f8cf520475644e868c5afc99d5f533e8a7162bdff50afa1f56c5a978ee9bf4a0da4369ffe737efb4037fcb53324002b9b7073468f9c9352a7364d168a5afd6bf0194d097b4561fd2ff81574cc8676643f6c7e91f702c85f4a029dc304afdc62a4ec68e3dc2a12bc2f0593fa5d7db44b216b45877a4a2d0d7b11c48c6235f363c2ce0f21a11886c4344dedb6561415ed08eb4395c24d56ea68534f59c018552c069c706a1203a647504815b3c0ee945729b78f3d678868eeb77c4490ead99a3722455b7576e65961dcd23043c252ceee5e0169625ac5808053b112e20b0e2d15cf6b55213d8ab903a0d504e722ee5d3a1a7bc4d491bf1499cd5f5eb171a8146462898432b63c17fa648c8bae26bd13e8481c01b84d3032ec567573da398dfd491420f8ad89c476ea0b0e04bbe050f32078d8c06cae99b0d65e9c93ec2b7ea1fb8b767f5d312de7dd3d6bf3a8458d4fb380e3d4558f8a2d5b9948d529632863ff3e7dcc8ea28c1939b9f4509e471ee1a0a85a07e496a9ad43e4ded6785dc43d36471eaa085dd9feb2ff5194176d502af96e054d46e564702731b2a82f387a1f51553b0a64492ad26aef1fd07b22252877740331f026cb67c503b7edc53cb5b319b160328394cb53217de0c9ec378b70b7392fa5f48084384fbe415911a49a463cd17d0bc9c7e3f0fcb832e7a65cca4f8cf2c1cbbba7d2eadf0deaa157518127c1957a97a3f54d7cba1439945b81a403da2232763a3e6f44a10311bb2afca59c3ba3c6f8145271da22a0d84025f8777eeafc5f98e36fd0c1a62f8fdbe2b1ec3839af7470be84ead429c1aad7be9b3aa40a454727e1d8f36d098409bd2212d9b7b70ae258edbc9da595bd91f57e4a4f73211c574a81a79980d68ab354b7506c37c70515ccc647d0275d917a2c99ad264273e780868605563ac2520de5bbb7e83f998bdc82642f0fd0c81e8f6f8354fc30a526c77c9bc033f648c9f51b4ee8572b4c2a6059d3bea96c6ec8fbbef943e33a8b8393596a48dc2f3574f2b84fbc735d51cee8c7380fe0235b2fd9bcf18225096e7f391b43a705a61f1cd23cf8dc30c08119b5102c14a525fe835539e4c91c1694fb13f85532fcc4c26ba70f3681f2b0047c378aa29906bea029e33700b4f75d0c2d57dd0308131aed3958b3f1b04566685822947e31a1c0c521f20ff473f6b4b41acd5ce3e2ced0e4388e7c3a3fca49b227d24315034f851a23b19c2702d95ba574b7bfa6b6f7e2a387e43ab4b4b735b03d7061a0083047c9ccb51d4974c37b17568123343e9cb3f78038476a32ff1d2929e8ca57bf0679d57e359cf43bd4ebf22541bf8474e904465204a4af6723ab53df393ff0626ee240dedead2fc64f2346b7cbc8511de14e2dc7e9339944b98f82b710b9585133688588e63e88921d6825f04a00e07e931c4c610de5dc42a68c87e15c46847ae4e832dd4f487fe3eb0bba9d203ec6d70ee8c09a49d15b5b09b74481d924a09c55552e605d591fd530afc70ad80098b1f73be4e2c1ec2ac84378e6ae29fb011c686fbb683e669bf3313b375d74f4d9c334b2931ea89b79e69c1bcb1e59a3243ac99b6ce0e9f3bc7f51574b0a2336c0e1bd5b7c38133b641b2faea0a17972c613e308f60c60f1ebf037db9a3f87ae0349b43f463312d59442bc5b15832f457292a72a0095cda79dd13590c60b9747fe400beb1cb1422c12d1bc2c1ec30e9388ad220948074708568b47996c4a3f6fe18c168f35e1877bda4caf9f9ebb1ad6f39a93e8af9cc652202d35cdcc7f4d738252901661639ec3cc07c31b1cd417c03c6a9f1df933dbb68cb34da6e10cdc68480b7a23ef02bf4d1c60dfe14a5ec9a18c124c07723b7ccf1aa698d52e4dfd625a29310156dc5cc2c76e55a9973e6c029f5963294c858aec6fb8f7c1249a9b5fdcf3ff2b68a8b008491b5e2baefaec2c048eb339f733aa4c9aa8b0e9a229ff163699d4f2a5315f2f04d9cfa090190f6088201927f4b3283899d40e02889e829f3e0c4c25bf27b8b985d59d333da67a7b710bcb92bcdc08c43e228943bfb54a5d04244e0aaeb98fa126fa1eb8db2356e5050d40166bf558fc5a5dd7bad7a757cd56f88b821a0b6f2878031c032182f2b9d558398fca602a41e200c626071d70bffc45b9e6cca51010004304a0aa504edee7b1ba2af055c38b0f0ddf12b0f99748267a9aea415d6296af4c16d61bbe9f881583dd328fe9a3253c67f65d084bc41738010c6df26815464722a9518084daad44115ead00c7c7090ea552248678e015a06a748e560a2e3fb2ab8814a15b3c1cb680f322bbca546382183bad519e46045ba41a9b2a510f0c4d0a8099fe3908565c80f4a4327841cb084b6fa2f3892282ee7b5ba44f2475f486215b4d9aaaa172ecb026b630978c13139e90649175cce4bd01798aa80d591e4e2e39150e52f4dff2daa941a78f075a0ce5623ed3f79605a6ce5454f0033b334b117dfabdf554871061f59514ebee049abad06ecfd4e08aa715f29a83b44062349c7048abe1bffedae15c974f408b94b6ba7879e4e713fdfa182f13d0237ee2465ea7077ed903002d38d0763a50b3bbe3e1738f2551e619675b59d9be2df2590a96f71e6e30ab547fbc496fb8d41b1bf7f82249d436431240d9ea48e76e24de09f804e35bf7bd1e5a94cc4ad35c5c2c6ca074552671e69c1cdedb278b770047b3959dc29ca091699ecfa61594340fdef3690588a2a5c1ea5b81d982ef24cd1ce317adccd859914f2f935002e82325721b223c4a60ee04680f45b9de2391930e24ecdc21054f7363fdf43e7cf5d3fce74be188b9b656238015755dc7f46a522659e2e4a385981fcdef9d971cf197399e8e4c89f26c8ac364478e5c606a4cee478d8e6097654986acd1dc8ccc50b43fa7c1855de47e6a1c697e4e8beb5d17cb4a066f3e116b489df8d7c442a0b2b818727121fa7517d1509567737f3e5a486b7210c8c239d30be00fe17a09efb66297b1dc6eb620f6965096794cf0854a14f5797a56c08c6130fddfba155ff0fdfbced8ea119d66b9a6acbd3ece6415334daf99280998af37e74e21d4f92e5d84b9f98d2903880055f5fea2b285a6e915ac8c5dc7e52f0b249e5d6195fa8d029382b3dfba3f81ca7ed08ea9a7cae3282abbbb30901bbe26de459d51146316f763290652a8a5681b4199ffc1de357caef374d535ca3d3c7fdaa4ff149afc4deabdebcab051cc9edd56eeedfe975e8cf28c397648fb4bd5f1d6142888764fee33693fb8061a5c26bac75d72d4ee1c0d700dba6d13c9946e2be873bc9ca0976edf8b3576a90eb43b1ccf6483aadcfe3f33aaf5abcfed50cbf62402bdae47ae2fb6e83f070c89d0117bc9964a53badf25ce9e531a53e03ba09062584c50f8e74f4b9f3afd26838a0bafcb13cfcccc8cc0b6bad8fd90a12d6194c94c49836ee13b0953d28c43d581b6e546de9760c02363a0f191e257fc106e934a937f57acb0c87e7a78f55efcde2263f9ff41f9a0aa871f2d781eb396924c4b2e2923c4a779382c9316eac7cca31817f1e801ff423e6ea97654289732447c52202f2a646129cf9c436d8da74cc3ba3ff4dadcc5a466fe71d36736091e943be5c025c8444ee496b9d015186184960b2da4529001b2290b86b3a039fb18dfbefff9e8472709aceeb1130c09baf48be881c984c1c1435f0ed9e63085804947fb07768b8ef55a66bac4df6d28940f037cf63f5248582268ed164c0976bfc12295cf13e2ad10f186279551308fea900c8760e7f90877a0a170fea09402e3f66aa37abe8522f54038da520499ad0f59128504bffe5030d4049973cdcd07a127ae5523d6ff0400a220a5f4712b75234c2f5ad40a7f3598e61f19453bbb8f795a2636869b2d7e4c03254b8260879e4431299970f73d9069fd0f86b541809c78382a9d462fd237e57d175631caed1b4b479b4409a74dc5148ad57efad8f052b867ffb347a96bd694bb8ebc03933a5aefa8f1758b65c24c4822de363776e268a6eb38bb2bf40a1edd459760669c26a231886b8df9dca3c11cc2f1c16830da04c16c00eaad2b24f33adda369fb911ad352d597285da1a5e5aa20695d9fdb6d3a2b72852e1e823210e28ad60d6aa313aeb9ed5531d20491868820b3395aba57ad3d676311a1787fa6f5c1681229bf4c881e85f213274bf8633146df8a734abbec719215f36f48a800f7776ba10577ddb0a8b7931d89124de071f6bb51e541a5ee8101bf2bcf8b3efac10ca2a18c5f2458dcf0bafd43d1406e488ccac7b3d44a0bc7c771b45892b408536b881c8e85db5ab2b1377dcbc9a1a87beb8ceee2df332c2f299c1cd15d84481cde222ed80ec0ac19e938cc178ed6e2b6a31b11e832900e7b378f6ae5308a92d9bd4e4ba44ff5759d3b66edf4af3836bacc4f7f40ed7a4a1c6eaa365e8c855af0b50112e7b84e22964f94bbe48955899ae2f076dde57ab5f24364fd44b003ea661909756d4e6e4f5bae9f4ff50e3e54f198a11e57b50039f9913b16e65132f69cd87731eb897a5df46d3c0e99ba431c7374f1888bbf723e4242471d9890cf7bf8b8af051ee9243949f9cdd70c07651513c4d5109c87019a226e3b71a5f039aeb27633195b3f7ceffbb6a0e9a08f9105d9ce32728fe9c3cb440b6e275bad11ef5e653eacf376774a576affeea98e7f320bdfb149d1b7c0d56f436f3c0ef280c53e1e9e803a1d9939956397d5cea3f73f716075bea52fe50780dfc237baba01d050b2e6eb0e9d896b4e90e06d2317bbe08a7cafc4a39daaaa421b1df71ed9a74db41aae9c6af0c6c1ee12ea63887aa60defa82c591e991c61cdc8753d47dd09287de0d1df24b9e3960bd70bc3c36155229c9494a2fa338d489d32a34e02a9a2d679b72097678f9d0c9c6ae53abf87657eedd0fe9a956d27594e0c8fec1fda4b77bd701db54bcce94db13b7b2bd77fbc516e06d305fc73c2bc5b691676bb64ee757043593d06e9ad8a907f88cc96bd858ec0a8d49faec91277afafbaca2e35e6067052e93dabc5bf2f36f74748970bba5cc63de808cf04d7360dc382f79742ae5ad81cab9970394f9ce7525dc3dbd54a603f47821459215b1331d4e7227d775287f9baeb6ee79d6b1da4663705fd0eb156ea6d9b15596899a8f19d5c8047d15368b7bc674de40a6193b3daeef44d0821c9e2330e961d046b9121a1b040de22d8aae2ffa247028858f9022dc9614e419845e961c880d632ff5a02cae336014503012da8bead62e574809cda7001c9cde1e69e31403f80b2d7be052a2983d87724dfcc3e477e83259e275c4ba1f07d498c6b0601bf36559df1bd7188543fd8c1917afad596c1f20c9a0c7bf4b5c64234d90cf223f9d08602012c3c1c64399a42498bd5c91c58e48fd760051ce14ee9f5fd2252600fbce4f3e0803c00303a0fca21ac74d1fd46de1ad442a3883cbffb2d272b5e5fb1e6073788f1f9b1bcb93655a2a05b1da50ab9a26f1904a0d0c84e85c5ae9dd66ad741ff4d183cdb5eb8fabd686f2db866c1b404a85ddd50444ac33dbb944418a29564da730558a1769be7b8d2f967b55c42b08ba02eed8249ee5743b7f41f49cead0d8c94ea15d8b2d7ec994933f602e254db65927ef6e8d63a3eaffcd603db8ad3c7b32a8d7128094f750a07a222ae1d3398b9f6021385dafeae8033af5dd20cb0ded8bc16d16068546291cc01dbec1a4125f2d9f0baf6b22341d039dc5d83455985f25489b2b4d7176e85a1bce6fd195e10981294b5066cb39c2944955e8fb49ca003b6cc47946e77e6f60e959f9dc34802313e5b6b0bbddc4158e43a81764300d30f047aa9d5dfeaf8111e6e30e896870f854a486be804e4b420807c44962ac480a7e83add53b1c2b940a47ab3c6fd88481fabc580d68d52c056bf1daf20419dc066b5a0706fafc0c99e0adede24ad0b9b587781428bd34b43b648e7a9bda3c7143af77103478e447004e139147d724b09e6316c3fed4e847a4e3b2ecd5d768f9aceeeb54708900fcbc9493dcc9936a5dc053fd044478376737a08acbacf141177320c10340f67b42eab2e6185b4bb04935c970be2d5a41d308e3fbb4028a78703327307447073be2d237e6c42e79dbd3611d00a288d23606034db9b76986459ca179f079d55b7467fd56e0896d6edeb6dfa4d49f13cc97cd34b63350b395e085b44e9f534f6d882695fbcdec75917c21dc5ee616255ca1b89d58954338c8de937781e0c7d5448e6f5a311b564f323825b3257f0567cfbb2acb98aa85812041aff47fe7bd4910e6f9b688ffc3676fe5614e1c1e08dbe091a4f83703706f14e8bf9786b71a521a16811b33aa78f20dbf8079ef71eae7b57396e25d80b0fd1ff09b6da83ed69dae704aa9855475497e2b40709452c50a2580ec27797f35f7d947812f551925418f6186812047bf0ef012dc505c4c56336c4e44db1c4a9a34e14eca06ecb131951fd700820f838e3adcb9456ec426f15c07a074f32ca56e39ee3d3591d76301fb6c6b29822fd6f3c01f60f55a5ec7c8becf66d2e7947d73cc167275f744ae055df1409aa33f79a3346c67559ad131dae6dcecff332f5fa1808682c22a4a635de0dc1516e256011e678f48f8fd460ef2713428f52a7fb145fd111eacb0ce0c0da3348df8f4f862e765e46d7702711ef4a4f7459c4612dccb9ae93e890330673a1e87ce789b8ba933d42b5577b90b9ef3cb32931c54aba3b4ae7aac45bfabcd4deea89e9c8bdb573b14881839e13643dfdfcd931a904647de520d2231b27dc54b6b341b2e1c79621094b4b964d44ad6993fdace4a7363eea1948a0f44a4f8166938d3db81bf4d1165900916e4ab7b8f918ba70f52d6c0c340890c194c870539e6f5a32b4872ac34ab354624cead4dda695f40fea2d931831ca4eee969d2e1b9e580379a6274fe517a3714da01ba642bf40d23563d0f4ccdfebcccb9a65c262bfe778d8fd88b5d3f221dd40a725feb36ec8b57f3ca92f4647d35ee74e22de8dc5d06a97a7c7c62228df1d1f41ea9e76e6b4d89a09226d261248fb9fae2cbaef719bc65509e7963a3b2ddd1b9893411aeb258c18e3f4d41d1e8270e23b243df059cc768f9c6ed3b82ae186d45219d013004610079ac99b6562acfad44d18b4f52a0b793f3d8bc505d736a418f1ec5e30b5d290f6044e62bd46c4497b0df7c4fbe354faad4d1b32f6980d45f12993246d7aa44b2632f1a4675e22bac209fd62814ea2345c27ccfd3eeb4e29fd30a7a701a98f64216343d369863212eb4363a98498d4c97d01c867c8fd4a2a1eae15a1054265216f9f89d3491b48b925140764e7028a18e26a5c4090b24a07adf8df33112e31a78274c0f56c902e491953524573f29b067e58011ae4a369d0a80f0497eb645fd80e747c0d73c5d6ff2c6a0ff8822920e6a8208599e02f666c9c3fa124ca2563e000d58edf24217befbda59452ca946495065c06e506f657b0d65a0c65c55030ec457360b5e25f9bba9ff29ee5b558ad489dd27e090d3179d20e6574773742838bfbb514a6891700044929ba2007e407028e280e2fe7e25c3e2fc3bb389729378cb89f6bd1c204c63674034829a53e5a524ab98d90da21c618638c9d9b368d4bd45a8d86780e6cd204071e9e34597aa5b0dcaf972c6132c4c885fbac0d7a36e5b54618e22e3fd0f21c5865adb34ee9a325a5942d1faea365f02ea53a1f2d10a057800354295f051dbd937d20c04180383d42b02d1044a81148f654ca763c8ca42e86b56c954d8726525dc81fa2703eb4773353a7b469bbbb3bf4a8378d9bc786535a9aa51494d2999259b97cddc049c13962db72514e38f17ed24f9aa8a5f45157c1d24f7a4a5369a44ea2d39d7421ea7ed274bf66125dcda4993449a2ae44a92bb94e3c5ae2d21495442157f22e3e467cc5a038e45370f0dc045e94210c727c9764c0223b6390418e41f9abc99f2bb912539463ec70bfd924c79f4d8c5c0a0eb087e7f9643219813dac9108c09ca6017af1b930e16602717498b05646600f7b2473a8b2565aa9bcf1b8a0935249e5f4d19a924a4a29b5967eb4cf8292e12e37cb7c1b62e2724ed9ad7ea1c0021326433d14d4d4f4b5a0ed970951a79f401b7f4c44d453fa9553f8917b29cba32c51c8ed55beaa9427b007a594ce18638c3176d090934fd97c1f641861077514006d22c526409cf83aaadc8ff553ba377d52055704abc85fe78fc5823893096bb509c17e397d49ae1ce2a57d07d4f3583e80f464c9e21d5549525acae2395f7b91636769283407cafd1a0b1625da5d5eb854524aa59452ba7764a2944e3a870089363923c896625625abe23958b2a4ac4a16024f0030b85f4625a39221c56c698b774b10059c52ce1b8fce3a67f5583b84ceb3569e39dd638c5718a55644600f974c521a49e213b404a909d34b6888099d9f3702d29c736a2c2225400bc5b502c2d752480c9153a90f2cb491f62190a863244626a4d4e70023dd7c4ba711262626a01764ffd96f8489493ec46907741f0a596744600f9746968c2860a0935249e59c73cecd5aec356cbe95944a39df4a2a27b5f2b169316abbafeb9cb56659b5c18d17db9b0b8249f9a273524a297dbd86b8e06a6031d56dc88bd9ddd3a77c49306e28a5934e29a5cc52199030ee855eb76f496eed6cf48fac2cdb865649397efdefc67b45d4be225a1979ceb792c14a871591bb3b248a2c182277652f4df98331ca3a18a2682302cc2b4bfcc1a3f61551b4f7a63618a21c5d58d7410f84ac88a2cef6764594631320d3d7226cb7dd07142b5e4d0ce566f7ef5d25d12c986ee69c74521f2de8d528e27eada3ae690775788eecab05e4c60df8ce015977b1d4a3d05568ab0fa137a59c73ce99794081e2ce778e84e830ba409bd0c6b12c2b741a7cc01e934a4a279dd247cb8701f207910c106d84104224165201e04ebf007548dc4a20ce8d231fb0c7dc86e60e4d16b6c750eb6b4e31438dc310582c88e359bee417f6a6de83fed0e6c777ab7c492d3548ada0e7b17c00e9c9e21d5549525ad2925590f9f3bc55119e33e146d0432ea76713bdce0ee0f6804464f801803a40667d2f5a1b530ec85d9448d45a0b7bf85075e2db565393815c715dba6043424a79838d8a76d8304c29e79c736e2d8872ced930787737a538d88a0670e3710f4d883a27b874539915b178ea86401b87ad2316f42c0b26653924b7c42924794db34e8190c10e4d4ae99c73ce2dab107a18b598c56d60cea969b469523ae79cd35f99ca6e9f4f70313ce1017bb8e7b17c00e911cae21d5549525a125ae26448484a29251625f2e72991a111466458008f00508701d026beb70088838beed74a3c25413c600fcff2c995a1591f565aabac92fa68514a69aa88522b21004770afd65abf521eeea574c0b00df6702eb474ad9556eab8b3581cdddcf0f83182093a2cdd5049c292458bd4c173a4bcc0480729a5bcc93728a5fbdd3411770316595049e9a453de78524a691fd6409bf9a99c020b3239059f2c25a494b6ffc43f33d0904a4a279d128b49b9155b2d5d76993d279db46fbcee6ed8ee274ce97f2d1f9e1367f794b3fb3c723cfd5a9431ce1ab496a528abc82a58a848aad2425905c9724f67e87e4da5a934522f49211243f849f9ea00a4944e3a7db466ad78042028f0b621a9c4ec39e594eddedddd5028a4325af1a0e7bf7d2be4f6b1f22555703b2c4bfcf292ddfbc21e313fa949b5065183a8543ce7ab32a8473508da44a4eae872bf5a6b559a73ea404a29a59419b2503a686702f6942fc039679db5e668bfc9879fdaba865ef6acccbe8621c4c99e35047b37555c96f360719ccf27bcbdf3ecdd1e51c71f8a70ca157b10c77f470ff7abf1b8aee65de76687d195b2bee72d17cb24561d63e9d0e1698e45a1d59861b4e91104dac81d3cdc772f2249f92b115cc823c229530c04e2c80f5293e58b18f7b33ba0cee60900ea8039dedee7792e63a0ce667ba75f8339f4e5a360ce7c9a944c4c4739dd8610976788920cc337aa86580c738d192e05bdc04ed9c04e8bf55bc8599611b1d85e6bf19115e6d72560dd11faf36bf77516b3986547ea63f85b2185ce47e86b7812793bf1fd1829177a51e7468e7f59b115dda2280d1a5c69338ab8322cb89f7c18c44676c9024b67f81267e25e7c9752caf92a49f3a92f414564f5335f047f0dfc53e3f1cfe0d44f0afb580c5d33762695e3f1cf55f7f37fe53931aff992232efdaec330da00893634af1a42438355b35d3333dfae99136a7c0aff14f5d4f8d4cf60d57cd5abf04f0d5c2483554264beaa84c0bc7c98979f9a799a2f92fa1a9ffa1a0f5d2bac9a5ff3402e8c555ff33daaafc13e45dafba8b257a1be468555f555f3551aeec9f1ab5f611f558655e8e91ec797005d3fa24dfcd5d77c91d5d7e0ffc1817d3aac54047ff71dfea9c126e01c5855b10a3d359fe34b80ffaa2ff2afc23f453daabff13f39b08f57e4c6d77c0dfe516123d0055d40ae0f22e5f8af55f3d0a5ea1eba70fce7e587ae0e17c1bc7ca8f916d3bdbc4c07f3393a1cdf75367ed5fde3eec637a71a32f3453cf8d44f3c84e64df00017c9af01800772cdcccc78f000c03e33ef012e9249a57e66e6f1ffc068b3fa9f19cc02fed47bf0190b0f308c36a91c5ff3abc7ff75d0ea73fc09f86bb06a488e1cdfaeaefb7675ffc36b74aaf91e3c908ba6534dac1a4243837d8a26eea9790fb00fcdd7e02298af21b51a1d0da6f91bfff3ff4383fbc6d7f89acf585c1caf226a2226385ef5ff37e23f8e3fe1c6abb06a080e1cdf2e1b36be5d36fe8777bb66d7414c712f7e4fc9711cb1a4a324a4a4a3d94b30f7520e9918dcd597ff1d8eee57eecdbfd1d9e82e122f4bc0cb47b0cf7e7bc79f07d4cde8805c34ba1e1a3ff3a89fc13e4528dc33e369b08f0af5340f5d33de4785c22a22a99ff922359e06ffd47c8d9fc13f453d355fe37f549f7ae8a2f1402e1b755259f62bcf397d96fd8d3a342a22aa4fbd0935b86b3ce454e8a97915f669a66813bf0697005d3d33f3d0a5faaf9b7214a2fdfd8b8fa05e9bf9caa1ba77cf3d98ea663a18b30e7b9f9dc452e541ee09b9171f7b1a1d74cda0ffc3dd688a3fb176d2496d482e087d0c0304e3335ad4d76a77d58610d74ff63110a04ddd2cc7a365d8a92720acbfdae1b672fd96e7dcc8f5fdedd265aa35beb7ea8b70ca16b7204efd1fbea387fbddb4807430dadcb05cc747cbe87e9feb7ffd540da58f61998d3663f67f78b56fed5bfc2171efba579f75c4b5ffd9ed85a8b27d1b755a6e53bfbaea5fcf69b957b5bad910e2ce0c7f56d9940c9ba9ec6b7ffaad5359ac22b27df63f3ec330397c9e0a7b0dc32a2259f6a7c7b0f7d94e9d0a7b14767a14fe41fde939fc53d483c227fc83fa0cc3a8420ff728ec634b80ae9b4157c6e242976a48967dbb4ea76fd709bab82295100a3374d91fd17aeef9bb37b988792071ad4b22a4b7dcfcab7d6a1fb318ee5bb3c9d0c75288ddbd79769d23ee67ad05cab6d6c6b0748fc752acb9d76c77a4fea7bd7dac5309a947b423da57ccf56f9df158cb53f187f15889615d2bfeb4e7f0c4a8049c84f8f575accc23dc671bfe80f26623d67d2bf886c45fb3f893d96258c6fedb62eabb9fcd54da6d762701ff0c1fb14fb12a48fda75825a47efc2a83d4b7f883eed9af365307ca5a6342d2feface257b37a7edcf3eec29a534fbc6aafdd9a500339d15dccf5a1f20d7a6f900b9b4ffac06b9211b90aac8fdfa147b6deb7eb4f7e17efbd845fcc33191e5877bed9bebe1b0fab33b01f5a7ce461bfb154b1354b8211bf601726d4334ecd32e1b6d2a093e647baaf906b98a3fa09cc4ffeb1eb7c2c418d99f3621250320432b4d08e5e64eb8af611fee2fb6d1666212fc29ea4f4f5fa813e26baf43e5fa5bd4d6fd6c7f7a8d4e99bb6f8598eb37d602eab9d7b48a3ff97d3e4ab560ac5f67f5c9fe01654f2166bb82ccfeb95f285ce47fc23f1c110eab7ab48fafbdbfcd569ad092e16b5ab77ded7c2cfd862ebf14a8bab674525d1ab8b3b58ef872eb1d0a401dd1c22a720141770866792991eddeb7c95c8957b84eee07b1503c21c7f26e9ea4406ad2a56cd97ee3b9bb639d7dfaf3a5acd6ce5f2195bb4e3b2db5f66b27a9c52a041d84d12615574617b7e0b78d8eaf1175898376ba11e54aa79f7d115a24bb7883146612c35675fd22d9d7fa3f12abf85db221ec1d0bd3e43e8b156fbc51de88726386b0b920ae0ae22fff4a114679be3f50fe60c97b37553b9f800830f334c4910e71e43b179d7260a61042e7293b08c6a01833b071c9f1e7c604714e33c0884f431027fe29e8b481de39bd4e429ef37136680713f73b0de5d350ef788e7f5ae239fd724f42ef386517f2e74357cbf9f57fe8630d1bfbfa45b0aff8a7e807eb223f1643f74884361fae6692e78470caf3e14f2c9ea3147bb89fb7943f882576305cd8e3e69863b7c53dd118ddf928c84e294b8673628133c93d38bbe04083ab6f860c96fb9dbed3508e5f63c795abda4e43a72727a2d3d08909a48d5544e6d3ef994fe94f9ff91503b938a41cdf421591faf67bea5b0ef7d4b76fb14fc5b0f1c731714a393eed5ef9bb75a88422d235b14f0baef93f7ce2cb748724907b748175228ba0d592fb82032517c5648bee098acc887baa92b900871eb6b85c8656b0c021072c3c808485126bc5961bcc22ece5b66811433606d3b685892518194dda962a560747d99617c450c52012c308bb5b52b001aa8325bb258ad02423a86ea9410649061165d92d1c188aac168b476b074fa20d2c43e800622c8131c69016278e628a50fa4106afbb1551c30aa0fc90c3e6e48711e47e8c8c1f62a03bf8b0032fba4c2e7cb0424b1333195a99328696412c5a58299cee32fa94b16543ed840aa33dca496b36abc52c662996d54ca3da363f2fe51877ba297b42394abbf745d3324c3b41c7be70ef6e778f52ca392795f15a6bdb6f6f6fa736d0628cb6abd318638c114208619c91ca18638c32768c115a13d02d468cd2182385106adb0cee4465507d638c14c29376b988594a658c11f5b2d19739310b632b9d18c7a5c8498c4e627412c5498c4e62744214c5498c4e8a88b02615b3488c30556b218082c51ad2252dd4422dd44242b12665da1c01089244c08f0dfb4dcb56aee524d1c6adf7df4b7ac83dff2451a799b88df74ec7d042b0a903b3856cab5157c813422863282c042979edcbc7a6a1d7eba50129c878f1620a2d292a42007325554510563879b1a28a0a60bc8853b4141193bf48450926e6bfc82576e929cdd45dfc8913b95264923b22e59894636472cc1548392626e6ef155be49887e1786252fd7a65987fe17860a4527e9942871344bc5cf75ab1c2c89ede428ee339dd2b997b588512dbb6bdc6f16c2f57b6c8bea14e0f11244174f472652f4b1c91318c0a2f32b62484152aa2fc0d229e64fb95e3b1aa5c1f4e318695410caf4c651353c85095bca428a229c7f465ea7ef9fd4724be329b4ebb68d7d8ba0dac9546fd035296524a29979052044d0b461246585ef061c9881a6c6ec8c19206a818820c205c122e21ab30620618236416a69fc24be24696ef3232b20524c8524a29a5dc64b62bc3ca22029bc32b4f4d05043de5c8b30a11d7d64692f9e2da4721057b402dbe656a229aa994e7a8b03e8238f3573fdc0cfb14f964f8ea7082083feaa4a803e4420e865042031a5e00e30ad73c72c592104c6440890e96b8e6f751d489465c5e10050c23ca28816b3ee00436bc80b46414c6906b7a18454491f472c5ffe12a20e837a702e2c60c391e17a05c4d7ce4e535a10c5df835432b5960c092b837432b51dc207fac24ee29432b5130b1a258a2d43ab4378a1408ddfa0404f2004b48d44a14414ce201a6409a6568c0ab602259168a2d40d0ac168b478b8a2e6e03b3a5a2c96d60feec856269035520118142e9680acfa96da9bb6b5784c884ee8c0cadec40b48d60071abab859865676e840fe5816efc00125f0005204415b6b46696468c5872a4730d06a0771e2928cf33d56eed4c73ba352d67ae5cec33df755eeee9693caaf052a342cf78ce6e14929e5b7fa683484f062a721e77f11c60c319d4adc3d4a1d28883937dc767747e940c185702a812d63b451a2c8d81f65ac324a1425a436310be4085f4a3a6192211b0a5107f54cf079b8ce471beca1a7b504e0352b1bb8d36a1dfef5219535a8ee421b4dcbb4cc6a5aa665d64eacd52eaba4b0062a59fcc1a49a5a3911dcbd66f840ec5bf97dbaeedc85566e1d84b5e123e0877b40760a00754437c0cc115b8c0aac02b164f1e1239b9eb97683ec02c592172fac40618225b8d4c81e4f4091e3ed9265471be08d6d42ce0d3722f1f256d33f33122f773b097a0a962a8302a51a86a6b862c50ad777b3c481162da83c610510485764432b60416f32db958955dc9f904129b54409a6e072650751b030c275e5962b7290821976b081861db8a494d246d98123a2c8f211e03975870a7862b6a2c4022634b8d2a00db4f1b721c46d1deeb9eec66dfcbbf3d760eb6294e3c93e809d1d043804f46f3ba7dce426b70dbeb5f7ceaf256098b5dbc3a8b369f5b1fa18911a23e5b67723fbb35adc9fbc1125e74dddb77fe2362d6611b3b15238531d68b9cb18a3bbadb6a672ecbc75b8bbbba34edc764fb075c0af71447b9493568b65dac69d50f705f5027be7346944c1c4703346669399a1cda091a168cc60a899944dd16cb0776aa6a9416bf4ce94aa4dc5f1cc57d548fa591ccb0f1f3f76b2943725c38fa823833944d26068cdb561e386dfc031b9edc8c6ebf6be7dc1f1de3bd25a88d371e0c56def407b61efdc93b5b6c6031acd1a6a660d15b386f2775510eff7efce531542679bbbac41c75058dddd64f85b8803f18c73763178f6a0bc823b8c36315641691e25f5186374e9dddb6873a48c75c7bd5b079d324287944aa751ca4e06967bb6b3e3de7cd0e0ea9b31cb5e90582c8c05809f78421cf934cb0b480cd4ccdaf8532396d14c9bda26372e4a8ee378b0e750d9cdcaafc56eb2b62df7dcc74def7cc0f2e80e8d153f9b7144a64bc32c0c051427191a5c754f99cd8c6234479e4add2b3b62191fcb62acb67a0bd52d46b16c669ad4b69849b9713cd96fac1b8b653babd62121ebc6665505b08a597642b20b6d28c334c0a5ee65c282df63b8bb3b0d9e64f72db0242e648761d425f6bf6ee25f80203be78dd4555ae90b285acb0ceeeeeebe832db6f020a509134f1021d1c516618c200cd7d75d746edcbeb8216b2f3da795b5d7381e6dd51cfe808232f75af7b160b8fdda731d12d8a47d37b9bf9bfb8ce3396115a4f6cf8d0094b51c355c27b2879f4ccebcf040ce322fb4c8d9df2e47397bcbf164298e079320e46fcb96896cbb40caf6210dc0c8f629c763ef06e5c55341c8d40a0d7ac8f425c743ed945c6690a58cd799e4536b2f4cf902d3a2372c6fb6301a628b2fb2fccb4511597eeab9d892e57b5c88c8f227cb06292dcaf820cb2a240e296bb26441964e64a9c550965af0f03ba4988470eee5410bca5ebbdd2a591cd94b91d0e0ea9b464ed3c395f15e661a4d4083ab8fd2f4703fd825ab584802818e17e27412d8e356f89fb5afa0fe24fd2cd05712462fd84385f9d963db6338eeb87231ac67922ac8cba3fe83f2822a9af62756cdc79e621df7b33e9d8f59cfa63c2d2274ae2ec01e73ba6687ca8e52489fe46198bb7342fab5d7660724134453d4e9246f8a34b9b3562d0bf5d53b355cc8f02b8d0ff7835d0c90bfa69265134d2929a9b16ce07e6dd4585c87c6f5d3be7da04c3b6ab7fcc3a7b80ecc810a9828d1440e4a6051854b7e6711822cbfa5780e96e5f751ed5a3edceb5e62eaa456722f56994bf1bfa62899b019a4a94cca94e964713b1f999f1965140d0f37665c72e4a14c73db3a2d675d670a515d74cdee9421fc319462f24f3c22230f5265f9feea1d2ccb779bba9ff2763c716953ebe82488236d937c9b6526d96deb66ce01c3b37892b7ad53f90be2c8afd9e6d9a9bac93df940b9773871e9b74c0ef7eb6c764079eb62ae31e3865bdf5f5147fa5331301ce3825ba708e99f581504fbf9534a10d803e56dd3c9e27e1300cad9678d23613ef69513321fc31a17c20c329ffbada3f9b1eceb37470277fac84d6b55445e1ef54560fe7e09d0a5e485178cfa176052b7e35e047ffb5ac661f83392b139bbfa590a58872495b9ce19875b29c93df9314bb7fed749744aa7a1b66ccb937b5590f9d99f18286b954b0045f950f6a06e8a79987f79992f2a42e11ed4cb601f144621dac8bf494d591ea1ee0f51128355f55f1ec805835515c7af18857de8946813eb4b1b6ef61c0d296e96d96fa128c32a217d8476712f4a39ca165e91f2a2536667e7788664540c88135febbe0dca2b639886e15e7ccae4de07affcb0942d46029b4840e5f942e691f9d86b939641332c42ebf8e0951f943212d8942bd099621d2adb2e85584619b9c6a71d2acf0ebe18698e61c08e80724fa03347b934855f0910e65ffe8302835f2d141d4152241f09862520312c9d5cec33d94927777b6d83f2f282fafb309f7af917ec53040383e19e974f611f8bbd546a02b92e56612f188665a70a121f024079e6def140efd825da6f49583ce7f413e6e73751d4b93f533fbf9590803bada475cc9fdf04e784210679bea6759e372dd8d738fdb6c5ce5ad7f9a475306f5a723fc6d46fa44b56f2cd2a723f7dcd79050c79ce258803637f4cd73027807b69c3e5a0c4c47450b499329ffa992feaa1f1311f13f3a9ef89f9d4fc180ef7c4fcccfc184c03b75e7e0656711ff3402e19ace230f73ea87f790ef7c07cccc7609ffb300fe4c27e83e9e894fe8b4493a40d57c32afa3067f87b1a525c8b6953ebe829b99f7628b82733a0cc371018a97a27e66e7550d4a9dfacdcdf2ffaab192ef6d99bd0ad29e9252db4059b4da8148db92439e910cd4800001000c315002020100a05c30171402ca0e8a1367714800e72923874543494889218c8611443310c04116000308020428841062a1a3a0324039395ae1164b40b9cdf92d84fd776aedef2cf8ac5364ffe8616c29a01ca4fd4d81fda65e852b6768406f6315546c0375096021121a6f18918b083d224b8a295fc3476b22700c84af806d66f573e0a1409e316a2f6eabc588ca254e6936cbca9d16df08e9bacdb48aacf175cda3d05a0293c26dcb4dfa84e526425f2178b07ca9e99f962ecf52b1d0e654a21216ca31a475de7c8194a1cdb5bfb96ca59b03491739d8754503ab60cb83ec6c1528cc4432747ca6e552d2f538d8bcd6f4c73902543877ee0927abbdb0e97093d82ad624ce32855a0be24c2b2e6c98e6e786e431e36593263fbb7f9a924846428faca268906b7891d4f8c732d1afed53646e2273d4f0296da96157466b34395b954d4d9bc97b087c2fcc73e73411c5043906a1dff2f872420d9c412485caca0c131d32c52a1198e23ccdf2c815078eaf508c570aa2f29230eaac0e02d7ff95611532732518ce49287084343731aa0779dbea5ca433705bdac2db4775c84f5f379c082a3d3911b02152f499549a07aaa9373f0f8dc80900cfad49fcfd26c780743ae37e75abea52b352c4c9e33236135d3635551cc63c8aaecf17c4cb7f206ffa257f482d1cf938f6e0ff8823eb72e4839c94f9ac26aa2cfbaaf9c4682b04f208e5ed387599e072d2f96b09fc5b08b907a62851f96ea5225ca92633f9e5980af0989fb6be3ae8758c71375442deb0739e3d8003692089bec00f5c7e0133ccd44bfa48a889334f6cca893c65871042d8e7e586a8bdeb94bbf9980daa80ab8b399e5948c453795b0c0f9e433c8712802f681fc2fd440f5cf32ef6dd73796bc0220702a7574a42d79bed87d42654541c87422146dd07292e864f9f0460c7cc6c3611f717af8645857423d6faba1b7c52fc15debc6528546b2ec868762cd94f6aaf91cf4ba54c6a21a0978ccb8648b348751a96c0ab483a268091c0beb3ba430d2ce83bf3e905c34869065fa6753e2d514a20919874ebad156c15927303aed5a59404217dc3e47d78fc4fc75357177c6e337751a7913b3637703371992ad3b6ec88083fecaaa2130bd2af795e1da2988336f2af1f3ad8130ddd1c5b4390361af02e59f1f5629c40f2adc742bbe38382bc728d50fd65970f00c0b9d697b13c97cfd74ec2276183042132ad2f323304af0154544ec4bd19a0754c1615d3bf9cc8ed2c4cf50f6a89aa4426a9e300f9a2209b9a276ac48900400db195fd286a5a11982e9cc1e56330897d5cde5b619f709b49833ff50d157854f06c1d96913d2a22617d029d578404bde1713c05149a8b742e9e18d83542a8cbea23a16a5d3101725769123931b5731be32f104a989d6ff64622f64e3a9346c7938f9ad5b0c7d0d9f9f7b948e2f7a1c3bc882c301650d0a4953902dbe4ce367328508ac7e9d457b17ac8a7a19a25547c48520a84795d7c82544a084fec6c397d7d33d09b958f4aa3ebaad335612f997ca526d3d1023f56056e11f10f208bc25c76b2dc79937b0f90de9a71684605d164472218ce6d208f821736e6307a097759b15513656c47d84cef3b540edb53ba61d95603a4f80d907f42e3c2c0df09a3a4371ddfcd5443cb4d1d9efae445eb2c31bf6b8ae10a65380ba5ccd1983f5e4f51fa09fb098ab88e704a3830911b9e8a5e35753c537295b37ecca9b7ed90b8db1a05d4d26cacb2cb87607c4a5d8c6424d1fc927646592e92fca2a8b30f504b25ac924c504bd51d13920fa8ad5908c9713222b66886131ae645c2720906f379d80ca521d3d44f68cbb6982d1a9542ae3cfd3cc743e763d6c85dbfc743362771ea4dbcec853235b6e4bfe9d032861b4f6fde5dbfb3a28d8bfb902915dfcfe3fba44dce473a55f7da2c359eb482c09a7a13484def53d524a241c5ce9a483369de0c05e279d83a62ab750c6061705f1b09e4fe78403b5e4380d43edb16969d0dd74c3352a62b4a462b268b14dd0d9dedee94a611e870bc268d7e5f28317a98b478bf8eb1f46bf024c8fdf66c620100979539cf3f746e32d4362128840fc429448eb14ed4a1cc6209c05ac60ada7076bb0a2a966ba0a660e519fc298d53275ac8472dc509f48fb1bf22505505e40cd956639ee12066518601ed6becbb3e9d022244138f45a310143cfb0b8abbd33c991d4b56ac19d974b878edd72cea908d13aed787789b362a799eaddf61029ce599d159ada719a7b3c6bb44cfac4221aa0d65d33538338cff546da4ef59a5c4b40e1c72832d069a45799043d9152af09bfe5d801956d07544a867bc0bb934f83c922560f9d6573d582ff7ac0203a82c789b1ce38080a8f79ece6c91fd13a6d6477f0312c8b30f28568ab29071d47ada3237ccf8c2403daa58ce953be71bad30c18e6e5f403cd2d8563a0460f00ca460945ab796e5ff267a0c12778648f7894228ec114ae149a1625bd94dda7521fdd5b9676fff7109f9698c240e5af5538d9ab342ecc03bf676287fe1ca0427f7d9f27f450bbe018a4d3fefeb9f32f7321371bdf082a92a8848f88c55851ab4d63061750547b5990c229f98d88c6225740b5863d72e4edd1c69be141a75b734039d2573ebc2b140410ccc3dd3b745c576adf3191d1a52afb86fe232b569838275a35aea2547ffd395eb71cb91c4b1802f91f8569204bb14a34515a2f89ee9a8da91a50ecaf0eca43207bac8b89e905fce9c8fdc1d0108d4255f41e33d90af6387dea087d070d824759bee695a7b2f79c9ea2d3c43f14b970bc9a9832f1d2aef8050949cbd05e4a39d455cb98a863d04e092ee5af66dec3c13cdf22d98792523b677abba7456d74837e3bb1290f183f1eefef8cdf11dd7b9346284669f85c3bb6a07dc6c59dc9457ba6840cd0ed355625fa58b26a143300550b569269763056d01b360a8507cec4be789ccbd70a0ba8446bd4e968b21e38611371476f28c40aa946f243cf9af053fba8493ce81511254f02e11373690b1372b382c7f021d00450f8cd0ec20be8b45a4d7ec73f65a1b0a0ac4aed028ef8525903a2230802574111180c095c0d19059f04442fb56ceb4b94481c29981e8ed66e950ddff73e3cc98cfcc9ea995489d818ccb1809c8889e2104d9a2caa274f786cbccc87a4f935090c0423bdc027ec101df4e65c0603365ef87131d21bac0555d08a5c4896b6a2f4146ef5f994e3555c3ae1a27772c18813a39a2ca317ad4607cdb0d13b39c1a043e0f59a5a019ff81f875da0c4ee2206b607f73af12598111fdb32c81f019ae1beb4ecb4cb9440acc4ebf83855919c0a6c273e5e152375d65d3f0b6eafafdd6c85c27f98b61675cab783c10d8e24b91b4dc4b995126d2b3ebd7dd7fddbc6c5669ddfe27c81cf84d374274c90626d2a44ed9a7c62863d38904913d562aaa8bddd1153a360253af6c479875580dc4319240d09795b0f57e48856f332981301d40f86db49602856543ced1044c209e5d0ae06f3675bb396682e58423b5e717a29255a20194a06118926401f23e85e880a5ce453fac4930db925e1afcb73b79f5f5f5d00483c60e22fc9f1593a0065920e70add1017cd71f1a84c83c7611617e4a5b7666bcda85b889ae18cc6270e1182053d0223bab18bac7a78abc9ffbca0b8382fb4f8bb13c09fddb4d485656bb3d6e678029912671f43f447cf9c2ebb5c14f876594b87698458c20566e9167546d646495466b3ae08d44387b99cba80aecb2350a831008591cd0410d0902dfaff8843fe0c8d9ac1f0650e4fcfcc827a0671c39e15e4e5f4eb399bd9f28f67513a95aeb5e7448667540703290bece59e9c6ac3346a4969769c5f6d2265a4692b76964d1faa6c162ae3df10ea13fcf5fbae7a0eb239327db1f2de357084afedf8f65fa8ce7eb80965afb4de533bc7b662c8f2df9b88d3d9d76c683716779c8443d74c61c534162a7c8d4ea8a90c35349b3bdd725255467f168c447525b6dca6ed99921238c8136f7aa8adcf4972c85389bfaf928a59a81f26f85cc8674080fe89e19a0faff35cceb78af9d265e978df4cc75ac06249f12a9838fe3f4b59427ffc7f87b790e0eec5e03ad41c009891c254afcd95e0cc727ee13189cc458a073f11f7dc51e4388ef4be00469b5b51feaed70becc70bb245df3e52943ae6279c967670e0568617e3f13000512f19de5b5f138b251c56af9483edd41f9538504de82f8937b1b44e4afcf2a77cf8cf66fff30cadd1ee862d89111fb69c5546116a9a16603ea57c2a40a72913bc1e51accba6c147160f256fef859bdb42f794f55e5529374ad2cb909e1df2410edd57b023786cd9a1c3e24719d9116bec17881de531845733a0ac779e8c1c66c6ffbbfc59b716c5ebd8ef7b537068f91f263a3ba9a7072c95e658d8442d0d304c2349094e45a823b4a82de61164814fd4d15dcc54c664673a7fe956be4167f82740b7a45dc46a0e76cb4bb091f56d748b14433e97256027c9dc205975e975cde78971b72821baea71d6ebde0e523a44c945e32be7a07ab764057bb13d1e77cc91555560027bd136ebc9cf0e0699ae74f19b2fc475ed9866ca758ac350f66b02764cb47e4b8118ac97ebce7e9cb774bb57b7ad6defec1f393e6f9ac5eb8725d6db82c133bf418a697aa95e8d5e910f9603ccb28491171a4c9223fa3d878c73850432a5dcf783e7e6ed9790c81ca9c8318b2a9e18acda2ef9f9755c0facc0741a1d4388dea422770886ed13d70f2845c58bc97672ef68e0be6a2a09e228e92ba157b4d7625356705c637b4b69d0e2f229268481bc8b5439003c05f7a85e129abf8ec524a75510278b9d2251012e6692845164f85b36bd0851bfad7f5c2f241e60d92c4ad11c857edd772dca8b5b637f5d2bb0e12a079cfd1a81c369a548450b60d0d44566cf9022101a35e9af9caa0183927b907d77daa631e4ff7ad08277bc4a2efee05c049ab6e64b2ee57ce82ae01ce71df8d303fdc7c6440398e2c7b5d11e026abcf645d04f6824349fd020dd80df1e256a92890a169cd56a5a85186b0b3bed2d0aa0211df01f44c401f0aa7cc54b06b5280259320bab0d7dd68e2871db7f290871539c0dd91ef1faf3b4d49857d3d7ab42e20a569ded80ccfea5d53ba8a3a0ad9e496894daebb4fdd6d14129bc644ef55b6444733df160d22acf63fd427cf73088396df6cbe01d16fc30051cf131d265fb6e7d9c108033a0ed2d2683b416ef671712460a5d4ce3898e00c58b962bfb74919d06f019b4f0867b442677c924afac4201dc10010a2285dc2462be84f7832ab31042233c0b90b1b2446d529516240b5fda677ef3a9bbed75d5a4d810b1c16cf0f1a1a87d900383840d587c0813bd1705e62c47f050e5d156536216f9df43c6b62044a0ee04f9e3e11c9c572f8aae358d06cfd638d9871d1bbf1c749cf05d6a64214af337a12caea3a8649070efe59501c29b0dda634278b6dcab3fe83186c5fca89138d54196aab2d36e2297ea8b47f67f53ce577873aa391585321e4769aef57276479f1404cec9d4e297486e7478744a9ab6489ac54d1ef23ca482ed45799098bd03684e6e39be035e9acd296a368d66908d6bb10e569e66bb620a1d414b3438212ab15c520d8d64511c2c801871142be625ef70c0638d2a10c9c5310887744d27b009d8e60ca6622053afc6cca07ca7825cc20587649e61cdc087f2fe4592c078507e4590d0685f84bdaa0f68e2cfbcffac4e9b19fcfb3c9bcf63a6e5f76518d7dd7ba1801899772ab900523b4869d07af5450310dea5525bcea76d0782a87245254e0b91030b9f08f531e8ac882fb1f4770ed4c027807a9f60667c0562878ce56aec85d1a03d45a2a16747cb49a6f7623aa139903b024f4305e6015a29008196844204148b8c1ea8fb7d56b79e5282bee986eeffb91c9f3250bbedb9d57be4e42bbb44359f4fde64939abfc16573223321f9ef6d9d5b7be3ce80c465c0cb842b5739ad8240dccf104ef8e7f6793f27d5d1921da879730c27d472237edd4497e74dfc39d171e34103957a6c8f5815108f9c2fbe64b28282b9843dcc794580d3206f60bd07c9a6df9d5db9e1082817ef29eb9df5aecf649c38986989fb3820c30648892e7f4543718bfc7cf939bcabb2965f9210734f14dc7b251d1c27095a9b806b460c6da44457d4d7783c4cf0065c4e8a2a5c03bbaef663b7c1918359ec7d1efc4234f764ac61f24031c012887f4318093725fc23e96d8aac44f80f4279e720c7ff3bfc1b92e127497f50fae6722eb0a9354e1d7486d81b0ac0fc3d018394627ac49eb9955ce6983153c00626668d5ec09b7d423f314d306eec73d054fa930aa4be78a9d31bd07bab0df6d351e37093a8fb41b01ca0abb4809e94bc42289d4457d7a983d902ca6340334d4074c58b1afd5fdfbf1c5f305a7c61ad5d491ed09b80269b26c625b8dccd9036872a24b93fe9be5dc8eaa171f4471e591eecf747d2f713abfdff3055015ab3cb3e2b9447cf498cad075c01607af482640b68e4258143712ef422d49eb04600c1b65633e7abbd2115df1c04cfade84b881f8099747b42a6f07873592fad8614298c1d6586c503472de19c08f12a51c4b0fbe08ef61c00c97350cdc7a5a62c84331ccf45e40f21790197d8f575582b40ed4a05da4b13939e2094624a61001b79fe7a810f37a0fb07924c2a4b207745e8acdd46c20bc8bb955dfcc2d0588995f2f9027ec38f16b4e8c8b2638ef94a6498d5cf9e9aee62eaf6c053e2c39258504c05dd4807cd07e0f155e3d7119114dba0b03175053e6f601ba08c5a0be42ec239647c88c95954237f630a841733c230d3f18395648a8fb399e828e400f9b4276ff076c726526fa85f40c746ce1b5f017011c9e562d826c07e0021a4e1db789af0896987c586cfc76b1bbd9eb8730d29cb6dcde2a6d23e0243cff3ebf19bb63b52762d171c5586eb698606862cfd22b9917cb44101e634a8e2ceb81bcdf08cf0dbab94a1eec9db843262c2c8ae200e68312c3a4214d623862af842675c1b2637a81a71563986fb8903c52e73abb71ac7b9a21cf7f8148006af02deacc82b591caf503342b882731fff7aae833b6b17aa0f81c98575a61937e91a56408540b2330da83e13c650c7a194d6020b452b9f094dfcf84a4c5a81decf9c4d5e0cc6419fc6901207d18aaf9860b04cbdba03838a159e6a03531633a2d40ac6296640a6b8f8efd94fd6596b91ddd7a08d63f4fc5f0eaf8066fcc31d7407247d27e2e814e0ce441e2c48a97b69c8955ccb86d1c6a6fb23c8cc4fe8dd56b005486750e4a187a443ddb21dd03fa7320f8c03f5da3c3f135768b2d55b66399eb49881fcf95b6928461c4a67f9ddba2652adfad4b47f6f64b8cf2ca4f82252974ba2ba88f977b6599da48fbe8a40fe92989e1500a43b75e46ac56637e24fc5349805e4b8cbcf3489f39d4de3a8784f5ac992627b9eb1e01561a2c543414c818ef396244ed38541144271780d2e4448d84410ff7baddbc100077033ce4562d6a6fddb15ea05f0852b3c0c398e6a0295bfa2d9c90c14ecdd29c937a21274c7daec6c84b96cf3140b3d673fa640766f079528cfe4002188b808d9113d49f124675dcdeb48b9b56b99f62c27753f2998762f8bbc3cfaab06265c2c9b0449418633456d761f4996230fd485db3ccfd3150915e68ca62e8f0340a025e549ce67b78f23caaf0cf6eb4d662e8966c96812d701ed394e5b3348bdd6e4a88b0fe1ad3e06591c6f547176388a764d30c16215310c3e86220787be2ea31a16b37a3e35b0bbd36c8eff5c88a7f64b1f9ec61df1c402e399915176306113c9f96bac1411d41c3c57492941628fcad6f163f0cefc4a02f75312d7cdf805f65107f5312f166c531988b69baa14d774aa5df42c6412c26196166c716d4378657d94152fa278b49029156d73673797fbc9a542c0487286310c99111ffbf5c6985de20975323815007410262b0e0d0e3bf32f6a265e5bc073ab9474921675eda294eb39caf4f94212b33fdd6b206117da192bd5ab999c20e7e18122ad551d0d48f1f7e160291da91440a473a3e79ee7bbb5ae65742a745843266d804199fa79f1d1927fbe277e598925f3326a8502aecaa92ea5d3215d2cb95898f3f13a85f793715a54f489e7e40c1693e85ec143c87a9caa041a135815d504651414691e87941c15ecad6c7f87adb76624c91ff9501f40f2a7aa59e2947a13b8f9110aa3c23d37b14b21a3a3e975097186e454522fbf407bbe02c91c1c9ece72dc141f1e99962926ac636ededff9db2187e208d9b04df44f9c34316d217d9e1bccce77f2ac23a139b5582f1c18fe2fae14fd92bbca23302a44406d8c6f5db67126f94c858c549a1bed0e30b61d2d1526fcde447db6bd03d1e45c5a7a5531ab6596ff15babc2e3bd5bbb18524d002daf030b5673630c149c60ce10b9674a0f3af231caa2dda0619121f5b5ba6e96648da212b4e5fade50d29428a4b7233279bc464e910118658ec606dd313f5cb0b5b640970734c767bb62ac5b50ab25bb21c5fe8814f2cc1ce403b1b4aca4677de904a473088a4ec1457a8a4428c45c3a22c046d64d38ad032d923047957c0a689079a5d645137e90b3263d5cc321d2f2af01e98c4b020b1f0f1ffc450bb6e31f650c9560c9cbafc5eb71f16ab4a2d0d23502781734a1450b39d4af4440ab2ea165797f1305a0f365930a685406187bff7ee6dc52b586d566ad416f3cc7a47f1e95d301c12092cd25b280a00dfa36c47d0f7e72fd1b41cbd2655fe6cade36d0723e7ac32f7dfad522b498fb94a5e026530c1e0a38521294df79735f4cc85b4111e9d0c8b8d4dbe16abd5458eeab230a628c16e7df65f0724d9b5d5afa565ff539bbd43358d88bf36a35c8eb8bc069d50e9ebf13bda73ddff91e961fce57d910544289f182b779e747dbf10565c4e778e7eb8028ea9a980433c4b4fbd694eed95f41f50c1fbd24a9d9da3c5d590eea74ed9eea3dd8899168a027f96008522f138310c6f3fee5e4136904336c90080a2e88fe2439744ea98b4965c19e44d6e64ea9583870da71953be00a118b7a2888cc4d192817d13708858fcbcde4a2f2aebacb4dca5009e99ba6c23a381d6a9ab4bf68509c9b3c6b050df92053142affb6d20d25a11555becfa24712ed947ce00071c7f7dc3f2ff0474353e92d515259ec8826833851d6475bc2cd9c2efee0a16a13674502268347dea2be41d3b11a64b0d0633c8b8de9489f7fbd99b380978dcf4248ae5520cf3f905e8e22348e6d79746fc196f3103f5f1c852e19225dbc77fe93172891f2aed11fefdbab2272eaff910a94fe082862faae5282d8383579b5d8f15399627b988e62994b257ec365f2512a0551cd1527c4b8e0e5003c493cf9ce38dc59b1213acb908b7d47a2dd2e72fce53b82eb6fa2e04218537086a8e1d54d99715f2616996f19d57a7688310fd0c5092a7ce1a5758cf788fb5d0971b662e7262edc0c81871ef5d0b65f0a8efab07c0dadbce309b162ed544377ed3f59108ff96f8971f88b444f09de7611c023b2f528c945d8f52e05b6b42a40d852b7119c44ce3f5c8cb624c8b8402a35602e60685b71001d20c8235bb5cae0d1b0ed596433ce91448d46e05f465204a3025ac365f5d8051753633db7704d82dc5ea852c722277e24740318e770fd95162df90e9ca9c81eb0390b00a3f37f51fa494e9ca6d7859d0676e4d9512d6e4f49e22bd3e061e8964f83888e88c99536ca31e2bc0d15979007a5eb4a6248b845a039ada456e9541066e9ac46fb817114227288e692670577ceefe54814f4c3aa7208ed60c14e71c1e331ad180e6a6dce1d523b5a70a2a7940aab8d5954f030ba7ccc7a82079920e593aa9d37b6fbac9b76ae17ba5f7243b763a796be087c43fba20aa8a7384034228e9156105fcea086e476f6a0f5a53f346cbdf49060bcc445dea28082660a14968d79417da7bdd819c79abe125db981624bc0558ea74f906081a85bc5a6a5e67526ab62a814c0819e64d7404d2e14de13d35ccaaa1b8251376b8781c643314a5cc0600f8edb5122fc77a0ccf8c1a81b1e7bb3d54945503aa2a0829770d88cee1a39a5f079886a747f176d0aca3c234af29d4559b3cc579ee94193dd6bb1c2025234d65a75615b802f1da32e31e8d5fb1b70952a921a2ac996637e473e7526aa048259ff0c20f7712ac99cc6d6f63a5077980797e232cd030c5d6ca9a82fc6090f7b13575e3686c760fc2bde582aa44d10bdd96160831df199cc1daea2d957ef97b5843f6d7782191380b6b362f0a939da3fc68f784f1b45f59d89661caac69342222b3056b3af21a630d4c6a6133301c4b3c5632abdb56f88458282f191d6125f2a24426678b7f963ad5a13ea184e903822eb0434d80bcbb61372846385677b33cf6b0116c2e04c4c2b178c8e8fa344fe0637f2e9c5c4cfb576b8eecc3648c5cc98404a868f82812356d4ac055e06a6f4f9a07238a251fb974911e9c33b8c8279f40d716cceaae330d608ba66a4fb89cc6a29a7b922a8853a68e32b3464e2b182e353995a1c7d6cb04c79db743767bcf659b052729baf783a45145855cf2860b063fba20f55a8e0120e0cff13b92ce4a27f4299222bb3268866a7bd513a0dbd7f9e97cdd13c414f223470bf0ebcf6085c201ac6ac2d03d31e584b9f27d5b72aeeae5e979d6ccb48cbaac101e7fe66d95d851b376a8030d47080d039876e7a51d47da79e8e0bb972e4bf1780163ff6a6f83935496e32fc8acb039124b5199e9175cd313300131f59c3797ad80ac58ba17579ad73efc98f31ec93810cbdf65de2a53002c0590db69edeaa170e69020cf4a20002b4bb7903928fcac1e549c2915eccf48f60aad08370aa9017f52558a298d6c099d0285ee71d29f19dd6c08452eb1ad8a0733385ee2ff33010fa2531389426b5b4e54ede7b747705a24a7bb2fb0955c68c4165ae45170bfcb7cef375772d72f0f6c3f0edf870737595c2e1a4eaac0335c5957db05b112a04ef236e0b5c07e03c7073c20e0e794e5482d3889ba0316cc108f82f0e5651a657e3e8f4c88e071bda860c2a441660a04d8abf9f4edb97e8b7333ad28cf8e3471d1b1672859ba313a785436f50fec4f6070b7564de8d4837549e757bc980b8370cd88341e33047cf7f7bfd91161b4c3e5819028119fc55cc6f63ff7a94498a4f2146da03786ab4990b8b56033e3634a7ad98671ba24d7676cf0064cc193c72fc4c967152666a860fc867bfd47cb60ef0b28ca29a22a1b6bb1cd86d40cd5786f797c8a2ab113a7abbde8fd08b80ee8ec78c5a69426d06c1c8a9a69b55a9d76d697ab6e780ea15aa29e6629a530379ce0d27f6b12252a1b3fc18bcbb88ebf3b55ceacbfaa0828ab185567d37777bd2d0e38806a0b395915d018b8e120cd9b82f3f95fc5b95c5d29ab041829209e0926a8f2306f4aff07b1250b5a935250afd33830ac6665f13b7692a6034529446bce7137a0aed25f4b3330b62fc75cf6482c0c59e96ca2aa847ad46392f79d96ab9250d13463ffa932f2eceb94f51bf76f9c19cb1d1a85fa72dd253c984b3e712ecec5d531ca03a2738f495d918bc55570c21035624358e40a68114ef338a403ba41618eabc1032f8805e1ec92354bf93ab7135f4a484f35b094929874d460099ab4da504bc22a2904a35cdceaa702bff7afc1a0fe52217c48a62cdfe6bca8ca16081086dd39288d616171acd4da2e24923a7c6332ace2e2d516a8d3f69f4521de6c177e56dab2ab195c1c3ed99d21ebbd3d0b32f84f060ec0ff7f223bace58770b8a0484648eca97604f6fab5e295644ee2f6de1d13e4e2c48e68f3f439a84666f4a83d74a151709983ff08586476f52837c17c79c77800c44a776d5dae895807266d6186713fb07320c9b894b040aea8cc16258555da897c19f8bb629381a3807dc0826112b21c232ff6f339619845c80a2682573441665cf211d059c435009aee5078b326b908407a472d3a4b575b64214a1aec036d6fb4b00ba91023ccc97f73910d3296645653007f8a0ae20dfb26c3102b53fc482472aea7de76137bdf1adf1ce0c03f832d37e1dd9123a9ece3daa140cde4b5ac97dca833f5711e3fb58c57dba799f3628f2ec756e2537b5116a956fa915d294e3daba8b1c7f6ef1d3982394cbc127775308ca32b4df9583d470f8e568d776b28ed7f45bd41436086801eb1f192ca6fd03452d1241e9494660b1d9b81128faa5a5c6498ceffefc83b92344464089b207b0363b4fb714b11530393b2e3f001fcc2c5eab7522bfd2cb9bfed5872c1d5c9c35cbe886eacb90f02e2fbcfb779784a94265f8ed526e495b3b6c128032e4fb7408a266fbe1e2ea65b1c12a113964b75ccfc64c02de1bbc86aa7c20e87467c9427b8c8a305c84fb398570b35027ee5e9d48fa40335e850c7fa244265d67f87cead8a02ace84e14b77db9d1bab7c4f504aac790ed7312b7534d352276737302c3e48ac9e11477683b993a27cc3eebe418ac0615edff517e338454b84a5f3e6342ee73af366c03bb40ea27b17afdb8ed4f71d00722cbb2f0097465831099518dde2c00b7b9409d805a4c625e7979ec8f39e8cc7d29e97f7b76450d0ee718333e2ebb86fef77eb587e5ed5e9583ef9f8856e5cb8fc3350961fe8fd32800555ef84fe7cfa355f7639152f669eefb79fd56c70da67a91592e89acf2dbc2eb868c0189a5de7abf16a8a474defd3bacbfa213c50b095210a6c07ba1a8df6b0c204bdfd39c666bd154d662a19601b653e17b371eedd01edab607ca808a40d9130dc07eeb095041ee232ec8af7fec875046a85239b71a50c4f482424f2665d62e27cd4e325d84bbc57265f86e7e81fe6f256c7fa7a92dc3edc34fa101994225ce50218e4e2ed741fde17f6ee99a21d8eefe22b86086428fc3dedd8167e14c92cc4f82b2544ed0583bd3169881ff6143b366a647af41de23d0f8a8526cea7301295b48fbf28fedd7690b23cf294731dea89086d7f035987f804d606ac69572486d1e2f56925103082c416165c1e557b029044b2504f3b0fca8ed1de85b0e7a0dd1ba08df520b69c0deb32f043c2a621c64b538f5ec98f9294b25c7c5b8febd4242f791b3d033439cd3e620efaba7a9989919e511b08472813094ac3b011e4cb13404c8367e2086ca1c217994dac6da74d0331ad72d2e7575c6c41c1a7683a6b8f38101e8270490c5c59cc2113a8b9821b8d33b1c9473831efff0f40af77b702edea010c2a4626e9df10b4effe873856db52455448d7d61a94fd20e4749b0959c7e63b8b4340d3801d6f91c149a6443cf89f0eedff5faff49e618910f1f887e4e8c77decc324bea02225ad41da9b42f1fc405762175974907c36ceb95746d2ea666790d3af3ea4f74e889880cc8fd3e60fdbe15028ef6847aa13eb32a4f15480a86118136c7160d571805bc248dc099e703f748e2eee883a442c043c3ad231d86a96addcbb8259995733b4f5907a1ca936d82b6433511944a07a87757256c46f0019184f0198867fc45623db219d5414d7978dbd088d5669039d43abacdaa0cc86671b46a5766cd88144d442517b57fd657102f4a2453d6c14e5c457ea214cc388c332329ea3b466ae318c9b1195ba812f3d1522e6db70423980f8f9d52c03b650759d8b25c596e87773237890a4cadae79c5dd6646dcf21c794d13ed8e9728d8f591bd68be01609d61228618a3e05049e454a38ad5c3310431856288557cad19df6c13ebc876eefe25330ea276d3a34f37d23def7ced8139d026ed98f65fde722034ffa0c05f1a5f26cc0d53eac8d31dc92c88672c5d8684556f9dd9093c51e3516fd47830c45c3f059f634b51f982c51bf2bae0c2eb892e518565a9519457cf97fe27afcba555b0491f1bac354de849baa349b0c10eeec72632472af614d449f524d22b1bb0236b521639fca5c0c19f0bac4d98e5b20c8019c1e58cf8b724fbd27da766364e4ae7a3731075e9614a518ff8528e31e442c98469159a34c322e1ad1aa59e5e3d3d7d2709f6cda1b4e4ccbde02cc350e64ef3bdf553fbc6db0f06a4dd5b733a4569bbb59d06d9f636c5751ebfdc329477d9d7c0a4e94e00bec1609fb8a821b552626eafab9efda71f94daa14542cbe00f5c727cfdd6bb1f3f453b9f899def1609b7264da844e47986dcb0ed47ad958fb3e4030766121d4054da643005e73497ffc36a4301799b51391bfee5191d89740d48adf3f7e0c2ab26d088a41453ee73d7c540a07727c5efb1687985c4f7acc28e0d90f9d9739d3517b3c983f49c2cded6d7f590e2d86c28a728960bee7faf701515bbc8ac572913ddae2283ba29679b9bbddbc02870e9c1d7ed2ee452ca33f3f19b5a92eeb2648bb5b102324cc0ae8df6dc76ef2f5320c544eb0a0aba4603ff40adefd1bf479bd7dcab8c1733bb082f233d4704ce532a3b07c8890a4b4fd1a574aacfd3b4a90eafe01c58601423a6309c8998de210695b14d40221b66a8b83163e820ba0aab59d5aa993188c08a857c5a60939ea83fda448065329c7418ef09a2022cd9c2e734d81dece84d7ab3da3f2b17e63d435c117efe54847363d624bcd2ce9ef5be39ab8511b68b555c1126697aa4816fdd2513e6226111304cd89849fa8c21cdeec1baa0e85bc5e0b91004c6e1974c9026da792db7f79d98c83dc53e7f2725961dac8aa243a6f854e68d95bfaac628a49889d9c521634ace21bef42a4f6ccc7c3bb76210ba047287760292ea5846bb657607afa94d2f9b40bf154a271d892664e9bb4fbec61dad1d11b351918ead6738fcf3cde70386d6abb527242a39174e29e73b881d4b36d27ec4c955fa4fcbc215030e67e033a68b6b5808e0992169ed1fbd4bd137f0257035e14a6d653e9a9fb925f6576a193dc6282f7c29a6f82e02dde9a1107875e38ec0b275f6239f4327ac841f09053fbd4b958c894cd6aeb15bc914ae631a220cccd3b0d35fba357ed034b00de1cb3560dc41da13f2e782672a169801bc46f49d86ee03dd7fe55dae79c775610f09660989575e853992693df3458d0f0a2c0f5b974e5c0ab7122e6c7e97188f44d2b80ebc2965caf5b11dda1bf705ffa4e8fc1200166a72f8ba6ba77b54601e8bf70a652fb335615e7ad60d6c0df411968aed0168e448eda5198f780886c0814323c616d42b42d84eed03fb7aa9ce1584437c7d10fd2ffabfbbc603c810e89bac01f29275feec499c643eb77c121912c354f8d1777a4cb1dccec39c2328ee2eecc8ba6ae8c725aae18f21d81585ad2890fbe5c8bcd1a6b9f6ea72566090f20baf3984178f41c9251a82222b1e70343b500c55c70098b9ab5d0dfe08d4b43cef23630261606a14662e304873ee9a8d5f8d9014b2dd8f7af83b8a8dfa57a64eaaa6b9b125817852ddb70c216548afe0dc7092b26d1cb2dca29326ff28e81162ae03bbf112bc0750f740c68d323352ca95f92d5cd2c7b872965b2b4c7fc295d62f11407b61ba03783f920e408d5fd0dadcbab286b55b061b855d12d841f5e8caa60ee03362db1b6d2c1ff1cfa02d6e82c35c57d5beb2b0866595d7440c72e058f98a9418f86abdde71b352d1531fba52035b42dbda41b5b2de98f3cb76346a35ab3f2006c2875c9f977d531ceabf5b28adde219f8908431717f33dcfea93b02526b0edbf7bb3b36f0218389a74e29e8bf5d783d3ab83065a38ef63ad4889832151b6bde9bab6e4b008d2ce03996d35795e99d0bf4a3f03484564fe26badcf091650def45e40ea75cc430e498c9c70ec1839274bc20417f90d776a1a52e370df9d17314b8e5b205b182503251f1c245f26175342169db628df3535cadfb11cfa9204063b44b853addba3add57c1552fe91cd7fdab98dd81faa1fed9b8e2a32d65fda3b0b6cd7890ddfe1e54f3b7a7ed3c48e2979113f2eca4e5b3075c7404f717212d1c4ffe1d8d0a442845bf355bbe7fe180ec8b33ace3f708a883f866c0c2373ba8ee8bfaf423a113b227e1f88045023515412652b318cbf0517cb6b3e4a588e5a73859d26c117c0ac3f77a59a4554955485821c01df0a078a8b6543231e4455ab9456244bc39192470420489e7982ffc90ff3e8a203b23e2862654a47af8bfd307e6368e3a9a69b27c84d134c1e0371b66c6078aa009d1e53d9773ade5d64b2534697f7946b2999f76862a5aff297845ba2c847652068e43830927ce58656f035dd13757a9bc55a92fad47e7dc5ca8bc42dfa60856cb82473d6dce270d0b65171449255c04d206465570f79780ebd2907a216f6112aa96856adb666e4afd02cd943a249c0ce948d2e91192fd18e298f18a7862c9472f290e9d9254210e823545f605310e19acbba0c9c235e6105c86ac70a0c204b945d33bf9cf45df376b02bebc790b18cb3d422d12a9918dc01c611edd7db0d5dcd9db8ddcf761e2f6aec5ca7151677b9ccfe9cd25c53e588e4e95de8389adf0f020cc5fdd08da836c33cc4503790105054517c2b61e290b1818c6be015bbbde6b6dc2d9273e54e1488ad659b220673f01489d8787264733a37a53295a8ed7e881a11259f976b0f79d51bb965e4e38c6ce0e729bad5dd9f898ae5ec812d2e8e5622aad87a1222afb9543d30da37628d099e0899c459f131e8112cc3287084e7cd2ec269db488d404a34440be0ef505a290d6e4c5941695148c3839b443f5d48a96c63eb01ed46bbd60e9b57e414c2860e05eb62041290f9e7e794f371faf842ad2c79d32789c70ebe1197851816cde405f772f117b3c0f9fc17930a3ce8c328c1d31b4e48cde913d6431d8a5b87b1e4e9fecfd1c4b3d4fc62191ad4c2e049331e5d75a652f2420cb53040acf70cbde66d51e719f7a3b809cdef7c9d7c8f3b10b48c9db2cde1d0827b5aee59415081fe44741be81c2421ab4c04d89f56f76de64a5ef0359421300ec013edd52db215cf5f0b1ccbbf0c4c47075f3916d47f90970d15cddb0fbb65e91167ab478effe40d20fa8cec587a77f588fbd8eb4c18bd13086172391927d0a06e9d36238e2003f92acfefd64f09d1c59b18b706be370455fe66d6f5ab9ddb85f48d64b4aa0f8ef478982dada015d086b7e6f5083c2df88fb53a64057dea6a9c570a5e42a707497653036756e95b5d84f8a8e0baba9ccca6e01f5976f7c5a7925bf06553a0262ac52c3b8b2031cda6e8464921f6603a30e454be13c47ac5b114332fc6fee7c7a98b33853eb03f288dad95996dfcaaee55a8d37190b470a24c9071640266b96e66561590692dbe9c2466fc72fad780a9eb816457b3eb03befc8e65fb083a595b5ed67f88047af5fc8d04f9091776a10b5e428b4e54a2e5ae27ee870bd5535eee39bc255c745e9c2cd3f9b850847d7e706dba8ac5a351b30c4b53e598e97e5c88620a6bae1ec3be9323c7ccca40ab85b37447d11beae646886d8fa2b46735a81eaa7b4df7ee08f02ecc35f9289b44dad66bc94c617a8f0c49ef31d0347ed706a006699f1ffe21c1523d7d4061d2955da07d58bf9936a73927bc249d5dfef46b43d037332aca67b4f4a1ad398c220f89e5d25749607dda57c108a7843c63eb46b48f60899b7930f6b0160ddd9b61c38f7ae412a0a050189ba3fe000fb479b2b34f6e15abf2f168dd589db7afb0ec51b1a745d85686c0946cf4242d3783e81d6366c35dbc0f6e12d06e09bc7003272bbec95dc6826c9d8636c94743ac98b47d4d7c432cf6a92cba316bba740799f1db652031ca4cb2b302e5ca0311c844c4cc76e0b6614e854641693b94bbd1962c1335eeab76dc5121fe7544ed875f4c1b6ae827e5f307d769be673d9b5e36d5c2c93d73a7a370b3c56d91c2bc7173360aaec79c5a46ca9b6e227909faf6cfc5632a58c7c3af4764e24172c22198a2aca608cf3e7d972ea8af9c18b8c149b9f3191bbe19a43b6edb472ed02dc1f3d0bc2287bdd0b9afd13a0d2e4d247dc6ddec8e53b6a768fc124a4437044a58ba986b47186939b09cc8e4bd09a62940c6c8df8de40470031594105670904a41977d9f20c532027809f10606a15e13ab03b2273a9888941e88f0dc15754e7cd05afccd49ce46c209598785d1659b46e111bb2c77d2af4a4353a7b45622d040b18e1cdc2a968a96754ef1d148775dd65d93922eb60336c59971ae4733db2c334814ac757594ac82993a48c49e1a5292c01bea3770ecdc55603312825a7284f0e63e49d253a253b567d148e2143a82023e1f079b3ff014e9ce60085a443cf7ba9ce723bb3fcbcb408747edd6b73f5cb87e706246bce7bf2761cdec151832b324afcab3fe8ff15504a23408f712ff54b0593ae70af2359b11f0216d2d20594b15eaf38f618ee813c6e9f09d3e33716f3e3e8e9564e510522097d81d567ca2516cdd206bc27e71237607c9de71f5f50228211a139240fe43b029d20f9c4ffa2e0ea803cb1bea7387c193d09918969f839465423250f31d148be02bdf3b87f935b934c653d3005afc167acc632587123c26611915213613ce4bf64a2460fb9d264356fb233cc76043bb4316e98eed8ffe0cd1daba0f7608097c6e5f0a88f4df216d4aa6c3c9ed6d3fb056ee6d885a07175cffe5fd8ec728552b2cc617451597aae0da2374cec5eb5978b8953993dfca38de2bfb439a218c846f00294f2aac1d7f7d4be860e1c53e952bb0b37b72a9f68ec7625ed21fa6838fd491d30e0efc82b60f31e52eb3140f888ba0d747f90dbc0caf7256f89a117f269a10c4f82a177af75e4bd57a81aaa8e75c630ad3f37946594e829ebe5d53621f9059258a898ee600180e8041167151d7ba65e95b629a0f0be2c094d7a752853f0b4d5394d920252b096e993c7390951ee49264049b4acf320574d402894fc86ea03a27ec2b337b938e7b2fd9af8abf04192d2e9549e084f5833b839960b57e0a28fe83ac6887f2165c4105cf59003e60fc74d4126cc62b184d67b1448bdab78fa6901efcca2a97b789a5a7986da95a68765bee96298122b9ca50d03e07e76faac3dc6488146520a175197511a2602c295034c60025990c80481dbbc757659e3f4473ee1aef59e9d14e20e3ce072cd5ed770ee673e3289ad49bd23cec1777c4af60978e6ab25d555ce5c2e3a70757e696a0a2c43fb1b3d6dc89162d83914918019c08cad0c93baa46b64dbdb81eda630bb0a1901a8d7dc158e53a02b1fcc0286cfbc4bb65daab1fe95b9f2ee029ef1f6ccc8505dc7265c1988816403dc33a5e8bb4305d2a6e7f792ebc55e14c44a45467c91c1bc379ee2dfa5373ba505384768c9237c5f5dc7f18148be09b6a02122a1743f2da301081adc1344b748157c36ef04bdfbc8d17670d410009a36f4e8712c8459755cf187b941608e51f892a758a51abba5689a669c80eb7caa9c7255839107aae2234be9cb6fa1924559d92822a959e0501e156b94c1bd3b2950cd3a461e4d29dbaed062808a85edcabd133560158a9ec0fdbfa36b50fbcdd95c2dc22ec92a486d05ff5a94a3731eb586dfb09ed1c1c384aa104444bbf551406f5f8bdc10a49c09611334b83440c56a20d9c6e0ea42c9b4485b08d2fb3d2489674d20ec0b6af0e50cffa548b0f892d535756824c7bba8160094d478bc5b6e10e152705a5a9d9d329c58be80a912670b7d4ff758a1967b6b480fb521bb18a48b2e802abfac95caee15b221d6b9dd72768595584c5d7b0e24a8d6d6dcf498a9f262b7934380ebde5907da4dcb280691f5fbb672651bf18c3b93690e5d188aa147fc92cef1abc3791bde43df2105904527f987f176559e295ff9850790dc71bdcc60a1d716843e8535f2dca2707041a9592b0c2d287d5824bf74fa68368dc07a2c6d541e0b4117c4186abd814aef8cf00467628bbe967273c36c5f126e905b3fa7b65575f6e636bafff7d7c9d0fe371fdfa942398e63c94404ecd2320e7f892bdec5c959c6720a64dd0090630865fd1541b3e063c6ff082ef50ba212aa5eb0628bd135a56da81c83544949df002a012394738cbd39dfba21aa7784ab98bcb8145ed5902e4218613ba62d0637073437236e3a02a7f0a563cca9b3a9fca031cb180551fbc06d8316a86f1284f3ffe84021317beed54cffe815526cea9b8a162b01bae96c114a5ce55147d500a20d5201611652b534c274e1d4a26220c08a146de942b1454b7cf377560b4dd24aa4c114b24850f40521b56d4d19e60a9fa634406fa0fe7a25d46e14d8eb0d30aa56997d3b1fa4eb55a740d9e107dd1ab9707ad4868e8b5a89d16605911846c8e74ed420ba5f86a6c545b0142ce366f877e939f336fce276e4313a02409f906bb024e0f8ac7d5a1737437b2473234ec151b6f412a89ad1533a569e94d2d44f84976a038479410ba8e61fa04d39c626d6a042059d2c6b917a375cf6c97db1a7fdc873a5204795ce9293986ffc2d4dbfa0e494daf1d63dafa2a26f0ee97cb1a961d78d49bc0d99e493b2e566d43b34531ae761d8b9a0df17b18d5da8e6a433aa5fb231a92c246671b1c5836063df4583882a64edc7202f6d3dbc96df487254770585871d0d3eaf47e08f431b44d27b73be881e480f62f1d469080b89ca4c2a5f1d4930a172ec3089792a570ad338456ad57a3e500f1fb924af9bdf2d89de4dc5015e8ee764caa34816fa3861b77b3cb050cf29058bf643944211592831d6ee9b7ade0289c058026ee947d2d4db1424c774bacf5426868fc94c6c9cd12f5bc9469e207a85df49172acc92e03118df9c8fc6e5fad69adc342bb4eadf143a387a6cab1d1da0a1400e4222d4c945ed5afbc2f3a342680e09908cbab2f674f79d9cf27c0ecd7d57bee0be9345223403e10533e3f60dc0e665e8dcdd03f6afae734beb77a56ba02e1e46ddf28dbbeaad342b7f1fa5cf582f3114712eb278231aa91913c6bd2706a0da6a18851bf1fcb1a1b3d89ee50f4ee650b2fab209730de2559875d97c61a0a4efeea0b6a86e9a72dab2d2df54d0bff2c584e7df9462a8864ac41704ffac85733e7f1f667c628a177224b6698dc94203a8db7faef7e7d7b05687b15831f4b14f30eaf737ade0ac8e310a39cf76e340dc65e036611029cc51e2971660dbbc98fbe1885a4587cb58e6d2aece7b8c76daf205ea0edf9821dd9f2de3b3b5b634bdd4f42134f2cdf9b9d8c52dcd911dbeb2cd82d6e2961a6d7620e87013a84c6a0f7d0a7118205e24da5a598a11d242ee2378c8bb0b81e69385283863037eed40550fab0305875f059c04245a42efeefd62a67709a6896a11d50d7da084d75ed6d0005a03568c3119d15d5264c9f98ee0b5f9accc813d8309c5c8bcc1c75d0ddd01a669061987042f057a8a0e0071a7833448e0a1940d437877232d001e2c9b5e8ad8321ee1dd02a67e4b3287b203707456c7366530d18991198c25ce8034e4b36df61cbd4a873c8f56bcdc1afbf3623c016765dac1116d58ea98c610498548c45280342486471aae59829761fbbb6a202358e200d3ff0d11dd196c51764a9e4efe12a967c4f07e04fd593b20e406c023303e2c6f4d94d9e014ac8b4aaa1f90d25788eb5d22d74cbc270564891909d2f635927644253aeb6fa2ee0a0a7f818bbaf40e00c8974c478ba45b9f1082aa24a14b0a95be5b858c2ead63ccd033ee3b1eae140ef4a55c3e69bf67b4771b57e4efe92454f7b1d9a2ffb18e0dd284226e79dab7896899ba1790c8e0da6320f6eec4740884076211dc035e1f25c5d667f772be8e37890a87e1c4cf70a00e660e33bc5b9203a08dd2a7cd8748192ef443644c71010812946106232ffe7b59fc70a5da065e46cbb922e25493b17858806e026e9003ded4621c6ea31d37d5cab5741311a936d740780d90f12787d885233396271db389d3f07d175193018e44aaed5b0cb31a8cef981a1bc5a159ef25321dce765f2811b7a1966768a504f2ccb20dc405d913fe11e4fb2c5f323656b8ae6956da2085860246b30e6e5e0c135ad40703afc2daaef0128221b8ec984d130ca0d7cac76a0e836f080a4a4da1e9c1c795848262ba92387cb4e0b8a1d4f29055d749fb6934346e61cf1c2b95f8b86b478bad7bfcae81dff6ff4c4e1fad98e33454babec921126dd17a8a72f887a32c21f5e73b84ac6379c706d6b78d2ad0cb4850638d5053103b0ff42762d3cc41f9721d9cc3cd73fe456e58c2ab9cce588af394a14bcf3683bf611c51ef2cd49ab8aaf4e67a5bd0c3de4059e891a643b68c74623c9168322f22d7818170add4cfd20ea94bf68f3a03f7cabc4e9a256d6f9d8c5c875384ef80e1ee588ea40f9635a94316d712d28a09c20bf3b6364fe01efddb04fbb372ab864b20068fc2fdca68fa8e66cb521216e8b4d0791ba23e63bb62b67376c84cd0c364f5e90aa8e472f02a5831c4c8f1edcc1a849a44529542f0b6de1f335a78e39c2a30ca2810aabe9271ac3d31ecb5fb470a693676a68a368219f61d4474bc2ece8f977caa040cf7a0e2f99e7116e13060763f1bb645de99779d4f275f1c50f60b13c677d41a3c86481226dd51600891388d8b158d191bcaa89c9a9a98738eba3986949508841166b2b4a60a36f2a5dc28e72e88dc320d2f8c97e3e7ed2d259e4c5a528974dda497948191bbec2e642dac4409ef4158a0eb409ceede90e318137bfa48768a2bff4acbea99f221d44bed931a6144b6f188085e4ec991e41537d588c51bd6d2c635442fc3c9e60195c4666af05724e3494cd5d0af26a61bf38ccc98d2ff80e22825ddde8d777f44e7ca78206c7747ea0e968282105488f64e2a168cea86ff523223622488819c5f0a9a6b9a7fd80759817f33ad9ea0ccac59d4b8646414e5bf84552f110bc8e83c4d8026ddc1b19bfc5002697f5bc03a9f54cbf21d9f4b40d65ed14e7753074ff50123e2d9e28092f0a6757aede6b3d73b8928cfc6b96b2934c2aa48eb88cc5336269ffe37cdd8440d9481576e0a8d634f34a2b0155f48a7e98665efb088d9957fb394b4d1512f371b2e7f0103105961e5d24a6478aaaf4cd4413de3336b08996db0526797fc153892bf53af6cc0d2dd7c5dac41a75d92d6c438b76eac325b2abc01f8194d0b916be682bce8658c6bf5243ab436e84eb5340e82ee206de118406fdbed6cd17cbaacc693572a83349a045d913ccb02e1a5db2510b9aa2696b1406140323f228e7bd8d971054cabde0db581f678ff14a07a58c12b0d44617118b1b468c2409ebc3f5c54affefca9f09135c042f11abe6b0a06c8a6697e0c46e37dfc7568c4c9319825f328c15e8934571b383a0de356e547085405120b8d31c6556ca66694dc78c9ae76fd4209b78e0ae96f229633724a0dcdc53499f1472a41282512e99256760d4c0b550cff7c41585e30c9ea4654d1a092d99e22a97c898a4af29de0d88e100361e11625877999c6b32860e3494c7513ae95545af5d6507faff50116e9bb46858c451739d4b1ec161bbd9b1fd0c4828949a80b5a4ae461a6be41462cd882a75357c4419a1efe763d6de05c64857c461a4e266f227c80d10b6798af4e077efa5c70c426355c28f5846cf193d4b0b87f7dab9b7a8713fc9a46864ac656e10724572c78613c159a31300f42ca50f9bc4cd7de006ef0c983f700f4aedd792b31472fd8f2c4df4b7692f9816d4353584ba81aeb00321c5b321a57512f669ea56951c6eb1a8274463bfde7e926775400727fc330e87fa45bec1cf7de337dceca0e0968ac43afb0ac59e9879db764c2fea3d1ccf1b03db3f241b80782a980820d8aba2657621952ca190888f10d99071c59454fe3265fff141a2d264d051190ba3af48ecdd2e76198a98dab86562a040af6f6345cd2d57f584dbb50e6b5962726a3b4f8e6442835f0180bd89eacc3c4e503b508d70ade50e1380f7221fbda018e2b452fc92fcbc68c2023a7ed80c7f5da7b7ed8fed0d8f0a7154ed79b13ada2d1473bd7454232fdd474bf2b367dcc2c80ce4035acdaa935920ce424e074d0b92bb3c0228dc10b203c6ef98e173df70d33396dc690fd53d2b55714ec47df9b43305af9d2f1386cb7950001ca172d26eaaec16f601985f92ba529b4fa61a21c1fb4eeab4b20679c14676b72df796322529032b09040907099cfb10c077b2761310d08114d7b66a8ddb3e89807eb20e8af2e4e049b49eb86a203d3ed8950076160a1405fb9edbf7c4164610bce7f23d9185826905ea2651e5892b76f5085d0844ee68074313388476aebd009247fbe81e1ea4a2dc0cb6b8f375a0b8384994c9275b1d4871a75010bbbe29ca0f7090e3cf771f5059827522abf31fd7cfcf20339de77563cc3cdb81c08761d54a9269adb5f36d0f61177b8e042225c764185a98887d1685e131475c2781b015699b7d7976131856ab48c909093204b4f2832fe407425ce99c0bb1f65efedcdc2964c519c4ae5494eb89e30f1004b00b08d85f5bcfe713863d01a2eae2b2907eb1dbd1d6646de5892310164ca215ad759722489865815d720c659f42cc429dc4154bc8945d1d282e5745908257ccc7fde439a544d383803743d2ccf71a6dfc089e6846a4d17d6d4a6e2b6d1c556966779630e9ccbd0cc15309d2a9004870fd47e7e9d88f0e686400428c284a5c61236bf7d1b19f2d47552c39a3022a88e822fbc992431ada1251dc944124eb31a22881860b2654ce3881ac7d6787cbbe33c3e5a4305e84915aa061f2ed9c11c3a4165e40f9766e0cc32667e6db3f9c1c9be3ec4340663f893e3e3f1b105224a9e7266b4370fc741dc7a938c467c755492c0a86286794c8a2ec4758f43a4fbf1a077572949ffc8a3ed755228ee8e33e12ec2b4389387e7222383baef223d7719c88ca4f7e128fecb8caa5ec0401949f421655853a8e13a6e61cc2315b893e33883614349bb41b3aa9a99a8d93862368e518f88fec029f43d32f8eab70fc86e8336f57dc117d66ad5d85a3738b6e6d67e24c1607862c4e64a5f0393b911cdb39ebd68516a5338252be65488e7ffe7d0efa90cf41f1f394e8c39ff8f9c8b38f1674c37b9693a3734bdd107d6e38088a3e3744ce99ddc41aa62cc549185cb00a71dcaec8e2fc47767de4a41d97b29d9c948f3d5b39fb8efb6c1982c33ff7013a80ec8683e24af459f996213b0e8a3e2b9177441f1e126b98b21b6291caa54ce5230fa9441687e3528623b23851481223ee88717cc7b70c516de1dc676808e83ba24fd3c41e92fd1a39a354c85d11f4b169a07864cb101c07838ee088ac21a813ca4f2c21a02f40ca40915beaa10c2080309acd645dd4af761f2096e1780c22cac71efaaed58a1acc0d489021a306473c120328ce4416154fe85bb358421c0b8e4867fd6a07fdf3b16b5476c9486326c836c4197552df5022eb7394c8a2de2c225306fa94814ea3b36f500867d4af76ae261b29eddb0760c3f51f3b5a7b07a59b754060378b8a94885d4d833ea85f4376f5e3ca9532938c06bdea87f2aa0acc4c68bdf060c3a38dec5700aa40c0cfb3fac76eca468d31bc1501b8e24e20709a7822bbf8ac5dad7c0396816ab9239dde430bab59d4e7872fb963ba953ba65200b03009fdf4cef9a61a7c8b9e51470103c33a61869f32bc4cf3dc6340eee81668f003ec8d7061d81867bb7e4d9ba558ee481f845d16521df55c0a7c63cdeae76c5577572a522bea9c73560084b91cd775950b5279be451596d621c5a5ea910473777b0737706f7a12b88b06535876493074f4e9a0ca2fbb54466af5d6a18a136a7d41f56ce59aa0799c7901888f2f33746b413b57d56df82a4a9bcd665464ecdddde1d7307cea72c77434f4022edd4d69534a45d60954649d30cecf792a763d4017b71ea056fb690afa59f4507ebab80236ddcdcecc4a6ce03b9819a15dee486bc5b91c275e9cd9fa1685b0c08c17e88f2cf0b0c035275e64585819b5117e4a294fbf40a02d2ad25741ee0042044838802a940ae5ca4fa6b3ce4ef4167bca40a9ed39a7af90a89547ee5968bd651728774ca1ad25cf76a3f723abfa7c1c2fc2fbe0e6a77761a882dc319d8ba4a41c64b95cd925f5fa34c815acd26264f960d714523df65d87b018a69b1d24b877e88c57d609236dd108bf65170ba08fdb457c10c4ea523a914ceee0061a64dc5ebf917c963616dd4309008aee485734b494a7484756fbfcfa02786fabb9565800bd380882f714c51dc136427fce203c034e94913eb8853f6042e98d1c1c213c86beaeb06d7a2395ef4c41f3ec6e6e6ee6c9719e42f2f37b588b1ba4923ba478b999628c74010df602a8ac36ce7f9327a3b0704e64ca2a99d516f567b78f1cf9aceafd9af3a924d919fa524a2d0e195d9bca35cffab1be114a9f05f02dbb7e827412ca5d74ad4150ba2395b5ceeadec3204f5156e978802e6efbec3072949a52565f9c8f86d6379873006e58f0a17a813e0b3e7ed2347625e58e743a084a2048a9486d334bb28b167d327653330e0ce24ecacd96343593354dcdd8085457faf35f6ee8a58e7a794aa1659ccf137c1304250982d27520a0ef9e1dc5642b2e056b2b1e80d25589b30a8e47e41179441e11f5e91e910968ce5991cc0cbed63ab65add2b6bedb9a33e6bd775d4274729ea8867c760861a32cd66507c3a454f87e40fe9ed75e6119980e40fea6d7af6b122f9a6b117458b19bc89d6b1d54a4ae9995832c7712936a8a25492f41155a453f4c54ae9ae9100c7563e2608518161ed5c3cfb20c0eb0c1ffd2a52b9cec8e4f1453a268d4c11549307fbd8271f1d0301bfd857ab7b977e640c04f9aaeee313adf8eae306afc333016c48216c8074558741aa60e5aafe00f9aa9d38d6af6354df2175c857f50eab02be6380eb4718bef3611703a9a608211061503d08345812d4a9f9a48fb155319ab62a44fcd256c54b063cc7144d84a85a78140bfb8ad198c2f0e60c56bc6298018611430d94c989649737d90d0fcf4ebf5879cecb326e922cb5b1ba756964b5e2785f76a29439c66a6b15c515eab58dd49ed86ab17141b620f060cc55dd295eecd1ed97658e386a391232f412ad95f669ca5eb05b4a902f4ff24465cd1f98b2cdff9c40d676e4c119497070c61934b4a0c1c6b7bb964ac08383c8f6e4346eef12688c971eb1049047416ac12d18d6025a0bc030c1b33348e9172b9a524aad52170a5627dc9252951f796c12f77b5946090a18f7823638282ee7c62be27a491e1287e5da1b38bbf6c81e71bd2c2c0e17150567f3025e6181153558d0c3186ddae8a10d196fdaa4e17eb016a70c0d0c421929f9c61c9da05062bae2067a61e28959fab22cb164924c42d8d0d5fa25db8ce086116a426d96e0300216416d664b8cd8bc4932021921364a405904b12163c90863a0b0b92d19218b24be5165872f6754375fbcf8927cb9e2e3e14b13dc08be28e1c39723a6b8385e96f9e2c3165f9270435ed858bd2cc384142a28042f7dce6fd93d7934ed168179f2e4d14cb9daed9a3f44a03e76c3b6506efcf1b270d57ad78980abb672421cd759963caad3c931d0ae95a395a34d2827542b07d3428563627253ceb9cea5e7f8e2d9c7ef7b2a2781c9839d4747bdca1f52ba354d11382e06eef758726d8f3906369d82706e7279a164e7d5ed9100b53127b74a008d953c289fc00faedcc5137b4225a5e010324441238a282ba05bae0d03e853a3e8d4c50da634c0313a786f88be3040f68d49091cba204b50bc21383568360a0ed5cd907543746d51809a045943c88d0e41d0406212e4cd1214364041d2305a12448d5b193057b494c0149d000c13d604d7f4b20c9821286084bc20c058712136ee2350f27342b9e5909148f54c1d4193afadaf7504487c859283ef50d49de3bbbb8724df3d9ce1c1c8a9989bc6bdb2eae27b0264822728e0c1895fad92803b247976ca3ba4b197bde0f03c8f6fef198107c67122abfb79da968ab5dd84f6040459b520ad2063f639d8b53af90080aef7b49bd0ced3ee2305df945e7422e1919ab6d0dcf5efda5ce56a3757575ce5aaeb9b273333e32031b96b8e72575d3c3e2fadb42bed8e725d3bce769de5f161f2dc6de8a2bbfb5db9bb7be7ce2eea0c935ee70ed6c6e9cc715c9d7704bbbbb590524aa69372949b2796acf5d65adbceaf5cc739915266e9eeaeb6bbbbd9084d993265ca9429455faf40ae564a8552319a5275bb9b40c2c90e5aeef7d2e60488499333ca68b2268c6b5fda9aa8f958704f2f6d4db8f8c2b8a897b626567ce12d419b6d395a6a526509174d9c34390a6a82a4091745b4a4265c00d14ed024c851cd2f68eda98932539420872d6a694ca1c59b6c98c2e8471054010155395e2fcb4ca1a655548da074de9000bb804ffc44cdc93d9162c5461b33b54ca339669af939e79c734e4b5bcf71b4aabe02f95afdae61d3218a155d01ed52743362ba524149344127929a9a2d892f4e0891e60c255c60b154460e63eee5c1092e64e098acf1ec9471d8e239072ccf5e576650904995a74e9998712d3319cf5cc23cfb08947b9631c38501966059b274c318256380a0134e509382d482b049395052452a48cb275b63acf6b69546be26506b0dc39861d4adb79418569da3b56e2b1599db1f13ea97f5945ba04bfb5107942e5747bcab7e592cb7863ba66e6f7566a95bea96baa56e3d6c778c8d79ebad961a86598f8d61588e5b8f09752c06d42febd60a0901752ce5d6a5c4f1934be9deb527715cc580bc18d05b77318cddf39cd0c52ecf3dcfd3416bdd18c6e3adb79018c63b6e5dc7ac632ab7507404bd75d93a84deae7ed401f4d6555d6eca553ec24a40bd496cdde40eeb2d2f57473cb225c78fe878ca77a6eb78ca87e888ac934b594acc1187ec88ac93e892a944964924d2a59cf3233a3dac737461b78e498fcdacc511c77b5122ecf6d653614fbfaceb841d0471a7332b85ce530e81ce53a26c08702e5b88ec97774acd5e3ecb52b77ed9d42c45c31d7ffee35390af75eb97a5e17e3eb63410ba9c0642b77ea7f1823ff93c29a07f84e1c71b259cfcebc05338a6fef4e3913f85e3e94f4e4f0ae07e8c013c8563f727af270574ff811a08ddee4fa1f89f05c193c94f21076f0a49e8fee49f374f8c32f9290cdf148e22f8937fa6293d8b5ac1e4d4bdd99fc2154c27989c7af5ee9480daa106ef85d2a644c9cb5307536e0d5b50bdd7a5e83d718506c514124bfe6c2f1cc22eeb35eba630a52648eac62e9bba394b057659972f017659efe1511ebdf556525b6f2db5f5d6adadb790acd0ed97d20c27bad0c11bf17cbef75eaa76c7d6ed5b3786b15b8fd5524d56604125b6a0fae95814fdec52f4535ca17d3a1d00d0f5677735fb6df6557341e32acdb935a9b78e9968d6d29a54ced25051e4d0e40d5544a39968261a8dc25a714d2f6d4064fcc853b3011d99d25cefa50d280bae897b5fda80a0c8315b799135017db9a113e2971c225a4981c259d08ab78635fc924afc9235bce197b421c92a083bd012275509ad034a52030de294681dc4865a2d430907a1e1885a306a98419220358f096ef81204080cbfe48ff6e264d1c4cb1a8bc6f55e96f192821c2fcb3031337dc0e3f2284fea3c2f4f0178791a325f2f4fd6f57d5a4003e061601380b6bbbb270fbbda031703913ba4f3f04bcc9d5e29ad3e68ad22b52b4a296d2a59435a665dc2706262cea494a64fde385953ea596baded3ea42baf8ba76340e48f59a45f7c3aba5c178035773ac7d9dbcd5a6b2de88361ed2b9e9e7e719d58a4bb5b917ebdac28c22e5a6416a9b4e9ed76b33239bf313e90032eb6d6d9dddd6375aed6ae768b5c0db5b3b68c76516f8efa844ce79c9373c9892086ca7155544356e6da3fe9aa382e849d7455efaf035cd873ced97d1da05d08be7d1e913baa53ce8bcbfa8a0abd5dc924334ba6db582ce4931f6705d8f8c18b353b28516289cc4b510d4a5280c6133cc8c639c3a0eb727ce7328def9c766ec57ce7b70635dfd950e53b578fd9e3a75b91032e77ecf1d36d904e1cad77ee516bea4c26ef3a21ab2ac43dc08faae75c023de794b32539c173347859d9af250843a90e3619c0b0cd00e669d153d7ecbb59a2c0d69200024ce3ba3cb0210942f452e59393c7cc8c67674f0634556431869929d4fcf870830d6850b1e40c275c6683b1831368801f34b9a3cbe5e3a76b821980fcf279496f3999f589349318c6abb627153af738e7e997f50986633efcb26ec1ab5ae5f096cb83373de617a5b728077d044d3ee6e07c6c7930f6f851be79eb3d1d439d563cdd7549eba0b59f68ad7c592ba5ac282ca073f0e64e24f0b344389915c0db2ab3d2ab5b6baf3d7a5b431eb9c33a0782a2ab5fd6d15c2bddfa24923f3e5368fb555b565ce12675417cb2f5fdc009328754a74e85f48b1b72afa8c278bd03292e5de38ef6392f6440c1cd19c642c173eb567476712ea568334309886435a43f3421e3380f0abb38294f66c778f8c5b9b5975b01b9d3ab78abcf8fac8ab65fdc0755aef59107749cb07ba628d609fd9ef77ba0d84389fb533379bb38ee8bc8b81ef2c787e35f487f9e70c417146002bb38b75e02bbe7f4ab27ae244802cee9049a405a827c4991f029c80ad371dc0b2deb84e99e7b3f7d3a618a52ba3cc739f907cee9394e38c230d6f7e4a348a03fbfbdb00b797ac81f464290b10ee4c8b1b373faf1f423cf733dcc4d5108bb38a7cf71415e11196c7179ce0cb608123623663f824b2f6d43bcb17161f3a797362e6ad8258998b171a9fdb47129b271217afa52ee90a264570b5ad0a046eaa51923ba4c2a6ab041fbe9524ae93279396b5d95e33ab7473ae73877715e27d74964dd73229c57f14875ce3df1c816161f6197853d3e2652ed68725e7d9691afe9f3cccf99e6e71ce3674dee98b3a6420ba9cef957f35a4dae75cf87e694768d1a66de0006b8862c76764ef4d9c2e290cf39f7f1becff3562cfb26f8797dc43ae7353cb265881559d43de79cf32326914545560ad6ab0f9941fd9aee4a23a94c0bd25429430a19e756b4ee3109b8a041072e4b824023ab528dcc137d6650f59a4cca38efb8b0565f49590d53b6454875e93934caa8253ed91a75043de308a5cca7e3083b2ad2e420f3f9baf8b046cb4d764302203c9145543efefaca594747474788dcc1def2723b08bad4db41ff26fdfceb36f9c7759676e8f967fac0130aecd0fa877373523a2ab0c31dff76ec7f37baff70ac2e003bacce02abe7f897137639604e0e9813f67f15ccc9116be874030d32e81c2c0c2ee0158e1b3baa294f1c742d548ef78b3d45ef2ac4d1fa1cb187dc31bd754b5171ba4e38caa4e77a271c47550b0dbbb8a50a5b0058c11d75cccc3cbb0e1ac3c6548d09c3c6e9ed73a60368e80bd3f8499252cdccd017da133ae71499885d3cc4899fff74bfd7a9df9b721ca12a54f9ce0eede80e5585f2144447f62be5a3fdeb392e39a6e37acebddec33a661d6bdd3825ea4876e978ebc62e769ea39bf2b1754b39bb8e787b306eca755ca54ad9942a25b28b95c205be72221788b2dd87080ed16725de7eb1e41046699bc2e83b70e3c71eea294f794a7472f4d2e6c4e85d2f6d4e825ec78c61ec3a9230cc7b76f149e838f8af2765d42882f03f0ad6d309fd384e43947f15e44e24d03f390d41ff38b03b9d50ff731a9afceb407b3a817bcf6968fdb33edebf38a870bce0393f852e746db4d1c69b1bcff9178e47c6540ccf75cfe1f071b59aa16f19e7e3f095cb538738c2c9f90b516103b4a1da4ca2f150c7a64ccae41214a2a3b904858956b55a905091d16d22cd808284d8e8d9d724b56e2d3542badc51c74c88907e69b963ebd66ad6b4925a4b0ce3d43c7beb8dfc31ad3d411750246df1e2044c58219bbe9231a9823266524c19634c2d09d97429a75b39a7a76a1dc3e1ec3265edbd3a66dea364c975cc5235f9626f71b436a563d6fd14c78b34a652475296b384439ccec19b3ba66a0ce3f1eca9238671cf9e42c330167599ba316c8a2da87e034f8c6698aab12b95149372c1973627483fa66a2d35ec62efd2427a6edd5ab750042d6c00c95454dc31e5291db59a8e19bb526eeea823d4a9422849a663c6b016ba40f1fd4df0863c0949d552b71452aa963ad211a4620e8cd0095d21c7a720b50329ae901309ed39cee5845db54ead1744ada54868d6a3415684da80a2a5034f56d67a78b9ed1b70310beeb160845d0c8104785e849374e5190d494768d42025292dbd61a04abb688629c3869a5a6516a90007e12418a855c400bbb8c6ae8f86df3f5f335367506dc68449c872a1e76c54edf6ea1f04ddea2a1cd982e32951051691d48f2c250a91b751de8fba620f25aeca77704494cf277ef20fa6dc1e157c40008414542192a54457d7efe95388000e9a0505cda03673346b3368ce39e90f4dc86ec89721d440c34ca623ba12e08945523a447af84424e57c1a72c375441f290605b21b224f0fd1c982c8089a4c4774f5abbbbd9d258cf670110c0851619c4a73cd0c120009ee0da976a4e33788dc707922e2e386e8c32a92a5449e7ea55c47f439c0ccc9d297f239b2e40b1e8a642957853e2260a38a4cc7d52ff63944a32d24e979a7bbfb44a4224123d3690115328a6429efe194b3bb64914a87a52c154a990cba7ca3049f6ccd196860d06431888045972299e7d22573dccad9854192144e22bb871b8875b3059124e8882ebea4235430276d21d43b4ba9d71aba1043d7c3d43b351269ded8d5222779218b88c93d37893098dcf36e6bef6da076d38d22ae1a210ccbe28eb3c631949f49f30dd43194386ba71a58bb35a05a5b3bce1ad798b08bd640ecc219baa33c02328526f4ab811aa8694c80fa99933ac637be8945dc5ac77c084941fea8ce2f94913bd86d903bd81ba881382680a02f0da6813aa8b5f4501355da363cfbc83756e224eeeeb6c14c0d69d63e10ba23cf6d312680a02335b39664d626d2549a4b33a6cd492a0c614ee2611763b9f28f78220c9ed730659eb3178a71bd89d4ecb3368f6a18a0a0c9b5012951c17d70bbce3edd26c58a4d8a14db0f6b0ef0d3ef4bdb0f5d3cfb27bb5b7a95f414a4abcf1e9e50d8a08d1e000dd35dd3eff455101e664e759e9e345ca6d460022219c6fc7841c20443b53358c83469b5789a7673332d2389524a3da0de39d8558b604048c74268d38228a6e4f0459720592d2243873545d4b420514356f955bd4a9672dea0f1cb9a119aaf124dcdc2892fb5cee4641318266d3ec8f0758caf3e42656656bd6cb8ec758ca2a76f9ed6aeab0c0ea18a5046a8211411bf79ea7c9a3d755e923b6803215fb4459494d40f7744ed3c31a2a43c75d410c3465511c3c69d27be306c3cd59e3a7514110accce135304146df2a04e5750e494dcfd5c4047bd53c1aac0aad687706e51449c0faa4844fdc83c944bf4f991b1aa73fe23ebc2aee3441feb9efb70def98f4cc53b45dc1a28da73dfcba03be2b812bbb8257625c91d9cd3b0039a3c389fa71478bcac2bee4c81089575a24f0cb2ce3bb1a3b5e3c81fd5696a34c872bb97de7a00b407fcd231011993b2001283ef1c88fc21572d50c1776050d1b9945bb8d8d5b55253eee8c34707eb1c480a9c571fc2791d521d04a938047413fad53928fae857e73fb254111a64b9200ad4d9bd7005fa7d9ec83ac1e49e976072cf08750fccf7dce2bc09e7e58cd5222441b32476c6ba2224b7d997191399f53b63384533dc6666664f64d657133693cc82deda2cd77bd95304f6ce716ec7aa3b4e524d01ed442939cb59ce7296939c5c413a95d65a2b3b713422dd2b95cd49137a8cb8ac19934a4a788145186ae0d02649c626d1eef0703d58f9e827aef4dac457ebace133f3ec259576a5ede580e0ee923695e1fbb89f73cefadd7fcc3a3fe7bc737461b2f931e78dd0e92d03774354b16847969d3ca4f3d3557f5c77cef7ea99e5e5b135f6b5f246b8d2963c299beeeeeeeee6c96334054720c35a58fd0ad3fb9a5111d19050d0a4f10401c336d0de320d2754ec2045098c131a3b0d5e9327581029f190c615322a16e9d71ce54dbe098a1f5d4ffc288b9cf8511e81f9512635f1e30462e2c719b4c413fd386b396c947441f3e2062a92908d8e011cc2d092054b126b9ec8461f29f420460d31679410a28bacc551d66688e28b9624cc7c098209198b3f382ca105094992a21e8e64e82288376668d105e9896c9c502cc0a508206e6803041915c8a498334038d952060e54cec894f82650a2a8628da3268c6413cb17639a5033059a36b259ab3549c117628e001384ac0a2db47c21852dcb1244c87e9828e3d686872baa1822e9740619b530698868b20217c638438ca51ebab091219bb53068501a6a728234a8904d9f421ddbc00a1a56aa78c1856d8c6cfe6061020d2882b6d860858d6c1e756db89d028ba12cb02862088b2a3f5e6ae7db48c004b3062f6d58d030268d1f5d3532348925444c812508871fda28fa198117b623bef8210d2c537ea418b16143942664b6582201597e3883450b9e902193841543b5c40a14ac4132060d3053a41926243e3457b471628c27a6a0954903690731ce10f14045042b905893c5cd1a2a4ec8c6d5144f8839b3c51a2c3c98be58a2da1493971fa11290208a19324e50c60e3f4d88ae28138615316a70d14a3e80f4f0b45d61c3b3dbbbb251b1f4fed226460c315e50367e463004501343dcd086062d64a3db0db268a3444909953072005b2af0ae622d098027770457ed9c87b7de6e53976f77758ccaa48fab5a5151c4826ffb236598b45141f476f699fcebdc32ac9b230f8fc5f1cf714294fcc08fc8490447fb56ec425557913d86fae3314dd343c5ae28775479d02b7709608a20bfc78790c66d676b5d67dc66661fbe30372a806cd7751ca594524a29a59452efb84addd66ab14c97d58c3ee9b215cb2068369b2199ded1662c6b82d8b84aa58a72471b5ba95454a6104b4c39c011776cb55c1ccbb1a23c33ca17de365784eb816904cfdee2f9c9c495b6a1db73ae7adbd053afa7205d279f4a505531878a5d54bceca2ddd57881cc903c7b4e0f17c84bdb9095e7f8670c4fa178961ecc9934f452f2f0805d2e39c6d483cd085a0841362d526c5ab4740f25d6855a4a9b98eff3fe933ca75ce1a5f7b0141985efcc77777bcfa215b7e79473167d50a4536b67a3f13177cb1d23bfac4c2965cacccca4e9a5b2bb8a10aea8ced5ea5ce717945b755f6634aaabd26903457ee0930ceb58921a5cc679174237d7ca3dd53c21a1308c7656ca7ea712cda4dc4884de042941594353f39381a6b3198ef1ac5fb3ea9387fe88679f46fc6891d85927b4060a5012974167865fec6880d4d0d6744a1cd4bd61a13ae3a1aec67da465a3c69fd760830d381bba7cb263b25aeb0b0405b83a16ca17e5ba679a1c4e87eafcf4aa527de7aaef9c272be4970ca320c843b048e0fe4f4a296773f37015c68939b88abd5a61b921d0d58a79bab185a9d997e2941e50ff703c29a5284d1c572b1a9f64d84a5631cd44f24986810cf34e1ca8b476d7398d843e8e5eb07a1cf606275f8d7ae17482fd1aaafee3c02ee73f0fa4e17d9cff40d49f1efc0f05d2f0fb0f07a4a1e9bf1c1a7affe580295005aac01df00688035c7d2c0c5054ac7247bb089e43c080e53cd4da6bd43e297ffcce0a3b407cb2633217c342aefaf4d50534a4c0579f2fce3be4380d7ccd794ef6d33134cf362d44bb4d55f249867195d4e7f649f98327ff0f9d738b0673d22324bba419f090fca1c1ac4246318513728a298514cf3d21a550e2abdeac736ef95e74cce10ad9b8d3c5af669eccf38acea5f47ee56a0e9e9b0007537c5a39ca5336e7957b0e690e2d295f72ec45e682a36a3e086c5b906c5ab47861b7f8e9431790555659abacb236edf64b16ed328b762794efa06ec9a17c4a250d57ec6a3377a4406f18467d4ea64dca946972473b05a2348671480ce3359d1935246ac58d46714497a8d1238c6896222a4714cd37bd11d12825b011d7fa68615cdcf17617f292dcd1ec46be7ac98c2c3c545c51be89ba492b4142c4aeb1938c929a67492d7619b5f7188eb919179a6feff1aeb196c6341ad39867340967874fba15335160b843a2ed16fa0951a3fcb442a3d656b9bd57058d0e56be01f7a54d88273f8550c26f7e523183ca8d4aed572f6d5494f8c95ca85cb13d3fa9b8eccc9629b311ee67cfdb273d842dee0c73b8533a187287f4108cc24c157cdfe753fb094218979be7dce19b5f72ac1893d7f8ea3d6cd1acc8e0aa48b971d2538b3946773aad274a29d87d953b5068ee489f762014773a25a1ab0fdfe4ab022f8692e40a3e06278e1ee626cfd46dce394720f3ce3979fa6466669ea9da9c734e19f3b3c83645cd2cb205cda66d8a9979e79c939b99bd847ee639e79c73823f39073377501a340337b77b4f5a666badcdc0cde5327073b90cdcdccabf838b3b3691f5b7d68a2f4c9e2e5772477b9fa81423f9c3321a7496e40689cd6d8ca334b5336528936f2b5c4880e79ccf130aa08a75c85c9f1f19083493f4142da1c126690ca4337cd456be8518d6795be79270cc72cf66bb64261a5cb944463d18e8d8495e71f455cb96ede10aeeb8fa9e4b3ceb382623cf33358571a5b3cf5e8652862c29e5bd52cacb3e7dd638ec993ce69c8543d7d5afa57e49778e59cb021ad488f193e7a7ebf2acee40658a0f44d89c28bd9cc224f5d21604193f994829a5742aa5149a5688b191c04886314553ca1d2da889c0074213f04b8a89999385af587969bbf2e447faf24a93b72f6d579458e95edaacac61b3b2f4d3b18471c0975984954e0a07f1a6879f0e22d98aa05559b2b5081b2ae5669f0bdf27dd02fd741364983174687635fcf41e1f2d0f7a0091616e5c2e9725c9abd857ceb01cad1e36a1354deb2d492f65e022aa25cb2ca916c10647842c238594976f7efaed84d6088df1d3afb50981f1464a1018e24a9297362e423fce97bcc4c5073ab9d07ebae532fb91dafad2b6458dee97b62d4b3ffd9394cd373f3153088a9fe1b4a2c41bd1592857a5765238eea54da8879f938a500e3fa7509297362c4a3fdab76109e3b997362cb79fe1ccc2c5339380c816268ccb8a0d8bd1c442f4e5a50d8b152c51b0341626dc4bdb10670cb166d221d090f9a95434b9a1d602beb40d11d40d41ab2f6d43008d16f5d276250d21befc083e4bdb15a42bb7ff5edaae6cf1d3b332b35d19f3b303f4cad7c3cda47259d2ed7fcf92a2943ba48d08a29736228a7ebae4e0328088a52a495c6fd9050121ca1021990c01228488b0f2d246c4932b4b6f7a692362898d08a4ff5eda8840e3e3ca9501a2d1a8c4cdb555392915a2190100000000f314002020100a86842281502898ca8a2e7d14000d7794407a52194c846910a3300a32c418628801c0006008218648114d1500999781fff6363125a6cf805e0e05eb46da04f7082f61ea02130906dd1f342e4d324f63692564c2a0f49824f08f1ce2f529e28d78cf2d677aa9cd473b50c2026c33facf9d626b830623a289ed9c275aa174112f9245af42e4766f6386da9c63507bd6935951f5e2765185431ce021eee31f777fbc9e675256325b2093d75ed5b497f55dff9c9e51909653cf96418989acffeb9ec73233f9b5959c2c6f120f65e247efbf9a4aff5631d19f9ad2e92bd861d2ed1443d0516918f43eafc9c06f0f66dd2cad77afd954992fa2eb1d6582a1997548f63b54c747077829246202fc94f22859faff35f3a30fa27cb94a83e4ec61c9d7c7443aa217c0069490cd9fed335128f6fdcc3fb4a2e7c893e22748531702a9dcd310fb6ae5e88d2a2bb4f495b13d44111bdbd1366c2c5b33d0185c5bbfbb2fbaecfaea6782130bc3835079ead2e4f1155f0d74cdb7669b7d75d4fa82195d7dc4c49e9fd58914fd7086feb8eb72e4a7dcfa5170d75d647b2ba9457ba35ff444a80c9c58ecf473f91e6e74ebfee7b814d4c240fe8663c3212e66b128d782bf925ae9c84c3d6fdabf5eb9809f5e45ad587848cfefa379c422d7fc68515e388c25971eb8329b2cca8db5dce286bdbbd4635daec806b84865c3a95083282bd59a02d13e11ed4b4a1a1f902de8214abbd70c8a1a03f1d0959c222259e3af76afb9d2d03b06980e66ecaf62d6cc19ac602399065fb2ef490808bb2b0133737b845d93210d7def844da1d066454c91f4d6031d5f53840b4339100dc7c3e5a012f98a56b0f097ee8350404b98d0537761b33a43b4f44c6b524fddc1a5e3e107abcd53041a9619933916012735360630cb8552a5251230b3ad8882246effc9d634c33242fdc529493289a9e82605a18831923559d766e9cbc481b08ee559ce1200a38aea62c9d95483c24d82422587804ab9e45669a1d89056f5efb18936731317e2df753aa6d486b92972abdc770f65d37906d3605b8e545fe61e2a02672823bd06d0192dad65e1bf2a4ca240bdaf86435490e020c720a3393600f16b92d97ee2180b945570dad2befd1a9c354a293fc412d057edd63d1da33d195aabba2ca253f36d05d6b802b203048b9129fd8a4a4fd2df4285cbcca087378533fd0e6aa1a4a5d9aad8b3b23f10d5e3c06cb98c13007abac2a73c8375ae5ba7135302ef6f7e223576af1b48ff6685f4279861f7e3a93c260b1e9213944024574359c104c5029690c7ef6a74bfd804eb7a33be11e86335390a7474db65ac72452d1b95ecf9c02fbe4c2bbf84c537e9fb1071f118b2560085de4a307075b8aca598b6ab057a8aa6e26aeaa1d969a304b0b056eea120384d0595b7844881520dc7332c49165c20d6609fd246b0c512f81361cf2d167a4c83b5d38db1f5164856e470fff35271e29d1fb7c5ab6fd56b7418d8bc9b80f27b7d37c3ff46b67bf56e87eb1755a2d0000aaebad269dd58cc4b9493b030e3266449a1bc7b533ebcba9626f44048379622ddc4a7bb58367ede7183d5d8cc281ec334c65a6529b5fd253f7f79a9d8575128ea232b8b93d6b0227f73474aa3d4f8732266bee7bf27e8722be90c19fcd40987d4d01feac7ae450889d6d45e0e38951e46a6100c4dc24ef18e1730a7e7966b9b1b69867b362aa21104fb005d94202219eba3ddf95a0c21b6393adafaa2d6e1a41f2299691a6cfc501f84eb20c45dbb3566dd89242538e5bbfbae044a879ac05057b236f263a94633cdf9508acd0417589d0c357139a67a9a51e51b1aae51dd223e86b9b3558796366ca7ba87df979e0dc9fa9aa7c1b112f888825e4659a814b6a1352c433fa8663729f2704bc3ec549c483ea079950f08669c5baddf35f6a06f2845140aea958c67eb3a8b1562f28cb7a64747a65777739f28c14a4f5685d6b1bfebfad69e78c3aa6b0ece8d7ae35dd6e9c4c92b16964b2ee36966d5d4e3bd7e88f88596dea313f7b9d2aaa3b538ed2f5aeef5ef9cf603c6dbe546c78f41a0bd7a68048cec6e579e9101e4bd37a8c7a5afb1028f130f1e2df0088a55290cf302c367771a2bb58fa9ab09740462438c524f187a5506ebfc55358d5789a0d3889aeda79bcbf959e9eb8fa10a6f30ce2721f0d2a941e55e5f336bba7821dc725983e2486ebbc4ce8d6caa2ec7d29261aa1ce6d5b43eac36251058229afe4aff14ccfc17545e6f6b49436daa1a5180a0abfcb321baea9eff2400b5847944b0f0592864218e512e8818370eecd4ee6d4124472397ef9fe9eee25634c2329d48921188e2aa8b43cf645f450638678d77954f48f479773bf0caa6840d86e180756c37f21d4a7a8b991de923b8a61580c255f145cdefef7548efd748b803eda5506d569ee80e0157f86c58532ca53f60423856509974270b45b04b31e8844cf8b63d54ddbc7628b6796bc97358886d44e572bae4398ce8d6ffd194c00fd2a2e5639d16847e51202ce6e99e1f2ada9967e6063face75b742cf5fd25698652db811a0ac661226722b48722f50c7612062894e632a22a50548e2a7c975b55f1ad723d24a1d64422798349175005495ce5aa9b921241f7edf287e8e23138cd8d828c03ef8323d4255dd55e022600de2962d8ef38017041818450d5cbd739bdd0c4563f4351ee7540a3e729ab0eb8387d0c9ce74e24fdf947519d23ac0e2c08b3ee1c6680dd5de930c4171dfcd23870ba0a4aca702ed4c5940230ae720f736530cf775195b81d36ed1f7e6021a9aaba772308b71c19a352e57f701ae31425eb7d76990df4482b3a445d76b93a4c143774b961a85b13c2019194a96ec9c8abe5a6756092faf14e9298c4449fb4201b8780f7e3af9128a87559a543f9a0f564998bd043a2dd746f1e564a6d86ef46405972f99f7c1d840172718b0ccd00a534c5cc1562d7bf03bf5b076d17ad9af8c5d2ea596f87f28febe059957fd02cbf677beb08006c35c27a18c7508d03bde4ff1dd70ec920bcb41eb58cfa6388ab184d24e0e9e679ced0bbb826c65af0b4594936fc9cc50f21c2aecf2ef3bac3d4941e73eac5fa724bfc5bc22607b57ccbf362a853320afc4c89b550cda5746192eadae91820b901402c4f680d594408dfe65d84eec9c095242748b1cee17bd07c1931d763e70106695bd9d13cd044d06ff051d52f7133eb5165771c588063c60fd041024f1add45693a23d915088bb69f01069deacfd8c20f05c3b4736f9af716040ad16ca39aacc1741847da22cfa3cc0de04b6e4490ff5c140f0141037678e8634feaee2945877e5263bf408003059672c87a151bf7e8cf81b38c5d28a84304dfccada89f38aa5ed9aeb4882f1a100711e1e22ec9c822474b962c4e834fa21ef2bd85b613b927ca15da266d29a84054729c3b43c58a984c43e6366a0e17aeec7af0d96e460ebd76a53175aa1812542f343183fc5812e701d9acf59f1dc44417cb9cdbe0d9e8dcae7032a52dcc549977b60ae082c30ba20cfeed6f7e020b360cc12748bbd1a2abf23d5c31be61acb142f33193bb93a0afcca25bf061f50037740a06e0d0504d6cc84aa78c8e89bac29f90628684ea51ef2ccd20026ffefea14a133e444c39b2a98761e8785b2e068483dfbd0a1e72e0d4abc010cdc85e29e94d404e437dc4cdd2e0702b0f6f8f0306897324c8d921d49e6eff040c1ed73ecc6b47260ac902681a18b2b6c338f951fb7599ba9d3ebeae9ba6414da5328a558fb3f67a883fe991f7a7b0cf7ccb8dac09b5d67ddf0d3755950efeb33d288f09b480ea90d0878cfdbd0c87ba7b848341b7cd658e244fc743440d13e6a8e06593e698e884b84a89e176f1f512fa82985260d9a26080ab0000c468b596c43a2f28a98ddc31b3fd4266f8dfda766988627ea80eaab925b3ecaba6d3525b88cf790278d570f4706de42bcb10ecfae944e0404795071e0b747cbffc13788df8746b23b2238ae5de88e5a5ce119ffdbd854c2a44f014435c2d42e8704103e140f67809edee09226a844aba11e5b22c94de778e4c85842e413c0d9d10848d1679e3f5504b60b87ba8bedbe832920b42e9250df83dcfc1e74dd4fa1950ffacf3f3621315cef02de0521e0ef77a188d6839f18304d680ab135d855ba3f13f3908033dc824d8a5368c37700868ba0e4a4dede7d43e1f7d980c2cef7e1f23a672b1628b51be83ea355adc8a29ae8ac39273dcd582c7121b4d2d48511cca7ad78237f1db7781f3b0097125e4d14d6020eb0cd1c7549292577cd2dc3e2140c453ea1399231d0cacccf6db1e849224d47becd5b4f7957068be40d8d4bb6436a43efc40a8b950b7c85c84d99cd271144816ce35e79c3397b60f08c3e45b3fca67900b15ca98616966b910a211f228812c4186d659803f97609dbb0177c40ef49f29cecd091e83aab9985513dbb2258670c6578a76b0993dfa6daaae3fbaee58e60ab1dac8d23ed12d327d27280b1c006772db9c4c5fb4b20567c2385546f07e28ffc31ec7b93385a958a101edfc4c6b8cda0841ea54191923924ece4819837d2ec2b81f6a3eedaed4ab6d4489b1891b7bd0a0e8a64d34db0cc555dcc703ba783421fcd78ea278963aabc176d1d13238e8a032362a7a305e190157a1eafd31ca078328cff87454f9244540a8d9864211271523fa351104defb4c253087df0c5f8a5f16e9213c67966f958657d9874ff50f91cc3770f2e16813d438bf19448076a1a7c996e89757b642f1fcbcf878023db2598518161e85569c3ee68c46a0e00173be66bce115a6aa2ec2c0c36379617f67a3b1958d214dd573058f9057760a60b34f6f9538c5229098da0374b8a22036d86b7bcb71ff014ec27801f16ce29dc43a110f6c00218f43068579b33509502d164bcac4d5d9547cae3b898b01bf4fbc0b4f24e10fe7990abbbd9d05203814d353796dc51301fd1b66b02fce6fc46b4305685b7ea91901e472fca76ad607d5cdb76a8d2287f2fd25e3d93e400a8f31dccbffc9be7d7294afe1c66e0669ff2933db99f40bd3499ed4d9752e8be57f893b9e353cb79abcd897066cb55c9470c88ea12b6746e762b316363f5f594c298d41d441dc3b98037dabf6932564dec306d9750d00c743758b7c85836b5f8b02a07b8fc8e5774327190bcbc23f4a6a070ac5b1c884382852c10d5f0b156d8be34c49def92da2600ee63d053f6842fb4470252e21f7b971342a6f7c25ad41dc1b521783143e63fdc872ed087c156b0d5a0a1cb46e8fdb056256f9f6c3a9a406b02fce18cbf572527875e57dda93c39efe6b490d74c6c2ab836b2d2bc41fc1e352c923fe091422793d784b19d27a5acc8f1d01c8dd549c2e1e44021dd2b32591b0d75e720a0ec9b7c8631a045fe65a33fbe2b2fd3846063554f47aab51d71aba5f350d96a1aaedaa7f9f0b16c47b26a41c22546283edd8700685250314044cf62e1174b30bc2b269ed0f1a64c7c931f1d61ab1fc1960520cdecd93ffad9323212c3811adac07646313afb2e6da3ef687c5fb919b7ec2dca190dda055e6ae1558190463bdb028ad98b250ac80f930475de29b8632da8e642b330c0c41bccd0d629f35686e7a333fc0e6b862936c964bf4e0db5918b06e9cea86d9b63b22fc26bf8e415088bdd57671b4c58b6c91ba71a9751c6bd1c16a01827319326e17f886c23b2fec70b650035c3a98af57f22c24ffd0125381fc46559248212bf6cbd2eecd21518950737ef46983ce248d58807bb8519a19d066b656e9fb3a9047f770c7207ce52c7dff33a96f0e6ce0c45698e71af11a5fa842a7f6b5be6ae5059697a15338c2d869f43c011543ace6042e5f295e79946946e62597991c5c4150d67b62ba4c792526330f7b32162129f3e34af06056c48081fcb92c437aa89dafd930887ef732dfa5fac344920ce0d13ece18fb04a2dfa1c61b9b48fc0399716808854196b6a4d14065d58cb670a51b4e3c323884339d47364b2f708b81dd640fc3d9245c5ba3528eb01f5e81f5803b7819bd05d0fd54b0af3fa1e1eb356905bed5427b85b524f235273714d540bc36f4fbaf264f8f2e8a664992c496a9e680a01c5c4e1401a4f72ad29c65932d148119fddd1550f9da517ce38c44ca8e186f9d7f2094c5c1abcf6fea7621680f01e730d481bcc1e97c8196ccee756233b7a99157292b4c361eea50c4855bc298734069d58da4f140b6cf885369c9c0779cc24725062ef4712b45381f933c2641669568351f298364883ba4dea871426359f5440b72802a3367b96347758ea7494d1f9db3741572c28090bc258994b4a0bf64f1f0edaa060bd1b5d6388713011b52085581e77e7dc4fae80686165a7b7e88bbcba284583e5d1f05718e4c0960104c1478fd1f4ccab0ce0bfc765b5c6631e2e95cded4d50f8f570e6911600e8f61976b4c9d3e877079c905a6a3d7870f74072ed2946a404ffaf2c86148590e9c00ad4c303c4232751c8da3acbdaf53449ac9308221d2108a4c3bf8433494f27dbdff5e048b3640f40fd6c78fbc8edb3d97086faa0ac13b7d08c6782ffcbbccb1f1ac93f13396cfb87ff79f9efaea2ffdc3f69bda8bc07c8f59e3f8c06cb764768f0e73f9e69bbaf545b0bf7805fc7f16a3db5d802dfeae443a256b1fb0aa50fa7a60a023a2170166f14a6d266f77b495076bd47c5efc73820e3cdf2033037b64f7ad382f7f3dc93b4d8dcda2e8ce0c2b37e3a684b0759cd5e55b15ce950c106dfc753e715cd8c6e6c27a28dac0ca99e8b0ab872326ac358f2b4bfe15e854afcc04239b50c84f0cc37d419ab7564328696733d49f7727eb5f2ce30c870c0db998f76e3c12835346e452596599afb527bb3de9e6c01a776cdab88230cb2eed0c02b66826b77f32c188e578059e852944f0b7b07c1233302985662d3c382906226d1036685ba361fee474054c9370090bc5cfd133112516727192704317978005e8eff7bd2945ef6c107d91804fea1bb94aabb6265b6f9b602b83834639fdba1f1a66ff00ab58e415de65a9b70971aa6da7811c1fdd60c8385da0703e800914b43902edd866af543fce1f71d02ddc36cec590c3fa30adc80837a670946b930654c6990776c230432f10fea54e314bfcac5782335fc326abcc4027dd528694a94c6fce75a22a1ed1c4cd43bfeb5b17f6bf0b66253b36b7a91415750c187eea6bc8449ec923788b5eb3ddbd1cecc8cad6050b9e4a76d894c009c9609256a29e49fa460a62b8127b6bab33b3008f12f66cf4c21446dbe427d75333c80778b8b9ce954da32b0333644a958350babafdbabf7a2200c22f530d3dc891795c523a9c95bd48cf934ebcee89508d2f9d0eb26ba2087847f1d9b220feef04d29a1bdfad65261dbdcc38cdef44d85390e5e1d7adf260e6f8c5c63b07cf0eb3b6532d18c2a608bbdf33173b114eb609e0e8502d464a29d8cc01098f19aaa33d43ce10fc53df8d0239d225d433703efc258007bbb9450bf49dfafe22edfc479d28993a1df6ed29a545ccde108a632da823e016133b557dcc84e6a726687514e9b017b58bb0f8490084b94f43995125dd21c45b54a6f4286b275ba41dfeaaac150a728108c5690aea622807a21ae7932268a71552b35b5b563d72b0248580afc823a3810bf8eb2d268ae1536085db0c409822c257092027f200a72f61cf655b89385da30f5c8cb109e68983e452a84db013a606f736584bae2322427cb9eb33fb3829396ac4cc6f6f31a204eb2c9b68f15a2a07f34a228c80332b0906d675e88354c2919aef8c5f107ef83c40b4bed843eeea9d4349f9a9cbf4b6b699633c046dc9c3183f4abc447add74c5922fd2f8354ff5385792c687ce366b1740b6536640d2b84c4176e72232658033b1638c0bfca1f3a67f6c0a393c44fd93ddd4ae80553f12b25f3fbb126994776243016da910b4bdbd6f5ce5197031e287324585599b642103af14cdb0c1d66ad2c14ad17b138a8afc9a8492743f6a49a611a7100079bc06cb7642cfe2c8e24f572c172ce410f1261ad151e9523ee367290d5714b5c6618a1cab6c09ced64a0a7981a26b0ea181f0d2703046031c4c4029524af659d462a7ae4dfc1388b0d8248a24c3532a8a1486d416cb9949ea6f5e043b7f66703f2aeb9d85dda03fdc48329232f05bdc710392de64e82e0370480004b89a07fe523756f5d1ea180773123c92250ea2548b1c9c8f3e9bc01aea7575bed02a8d1990630f0fd5688876f6fc4231120ab9064ad0c263a1b366238e9a27989389ed087a653ececdda4e70e4d0878f12e280c11e29a4acb691b82bffe14df19fef18bb702f7abdddb237bf42ab670071bbf39d313bdf39c101e955079ef603f6654fe2043de76fb4c5023cd4388c41c45ba41162ba9a45e23550d29a2ff8809d98fdbfcb6bc23b8b4bfe0d944c13c51735756ae3a933164709348be8714c712c6d807b028ed4b48312ae91b98e386a7fa0dd8b5795a216cdc6e98f95c8d113c8cfc71ad4d653ae278177c39910187eb8139d9153c1cd56c38dc913715caa21ecf6dffb26504df10745299b6a5ab46a55d8c0cd5554eb4ee3a0e4bb494a68b407dbb23ae7a23c681f2fa71b002cae0251eb7549f7f84dd7903507abe77cae8351dfffb5a7092db274ae573c8b8092fca9eebb48935ec0a1a152fcc716afb23483a7af1e4fec1131bf420ac693e341d236e001a4c19342b10e3a0a2812e75d575dd6d92f4163940c953ecd6b8b9a918e7485e17366ab015ca65eceb4bcb5612b7682be44c620801c894db5b333cb12658ca75c721919fded5b9c1de2fb758e901956cb29201c901f7241551d87d53a6a6004c94966899f3f028d170fda5b4c001990ba26c814207972481b50d9144612dfa4f2ddae8b1d4db950e80caecd06373ad75d9ce0b9733d7cf81e6f8f2c4dad2f5adea9b98d30c99ddb8977b5a05ba9c9a71c13a17c088189473edc9011e73c6f130b14267f617e458a71c7a02d214bee65a173e5dacf700bde0d7456ececc79c6be847114b076286243b37afb283dde53a6ce9897158229f8047f6627a2bec2d0a2277bdb87c7272e731e9ab12a9aaaf2219a7546d1ba9811b2aefed336dd34de274070f5951898a4f0dd769b96ef177848703a8695359da0830cd8fc19381a880fb1fdb135fd4101ea0e1296c38c52db427f96405c9b1818e4a59cb217b247bed9cc40578f281262238e40b37930d1663dd51c7ac86eefc9e12ad6277b8512d952fea7ee450d92ae339eec48081e743a184c638b6601878212a07942c0ce0895344af91f36b5dd4c8a8d36967d0a09df6ef3602014e7f301fbe84396243227bf7188aa2a9c26306d75d8b641ada1a39d070735f6c8732b53a6dced0a4794f1c808df1554b786196ce792bc60e8b6fc2544c5237551adc60e0056da5c356fac62684d8ea3158dcf78e26b82fb425498bfda6b509abea485994050664e7059dcd04ce5976d0db28839e82896d99419e60926ec730aebcd1222f27407ceb49bcf692be4ae25e711d5459bd22729440a301d70450d7d80b2aa92a2a922d50c2911532a8ad85167073bbf3ee7d887b0f809433e876483436972fc32e0c91ed5e775811a67c733c0d95e288f9d2fad0b4425961a642fd42354b5df11436182a4636a47fa52c42c838155b26bf78240f43c43e128682ecbd4dcb42259a5a2b0a322ee0666602d34c246d8f900dcd9cbe880fa7c2781f769b1ba76e8de16b3fd2a69cfa704582e03aca8f7104b918ef29bd5b0d52de34ca83d2b18c9cc95cbafedda48024c41e1c9c432b89d14bee451711d516a9892a7343478764ed64a281ad5718330b5f31bfdf015e11ce84fc70c04cca0611a078bc2aeae3e62455835735c886539ca1f51bde2bb1b0c0746be8b5b9beea72b57df228a2fa52b8a381936968c040e5f1370c9c712f52020525b49b3f0ff8b62e5f19a1dc1f11a32d3d2221ad5eb490387dae7825a3f90dbd701d6a347b34dc3d85eb02204b5bc27f88387dfd4f79e86e7d8208115dd3de9b94727be2a619b1cd248296561d82f8a5463bafc1c9a4a366004b985b2d1cac1ec09e7345d93b0808203c18948473e54065c6b56d2b41278f801c3f1e176e942654986be4d29c9502305e847a15c7218d1ea7416833088b5c5dcfb91ef237f610a254e3eb576809ec515cfd7cd40cbfe04b21e43e523e096d4daa4cac6673591c11188152ce82405184e0a4ab26d89cd88b1f9c16ef207fe2cb8037185b5747d1c61b2893bc9fd9af746247a8450e3c3e57e1977329f4c648d0c8dcc988d3e978424d804423d298f591e5e11cb3688c96edcf07f79700e3d4f2b9ba1f2a3e714a09eb38af5a69e18e31de20c5c8579b5c33d1d7207c2957e9cc0d9eac8028898a4c0a7cd5318a1687b6633751943f7be648b41b7e9755ff2adb4e1b06035c78128fba018d5ae94f1294f1f2ac364886b4aad77a7001153f68359953cf9b78d58220e20a76648f6da1455f71aa53178ab97aae4eb3e8df24180553dad93ccee3bc4a7541fb1dc57f23424f2e804d59ba6fd8c2724e85d21d9a87b0974115f5192b7ec0d905de6bd50c83e2476fc8cfebb43d0e5d4402b9070ff2237ffc3f86a038fbf9c242f46cb61fd8050d3fcaec622afeac2c38e66cdcb39f80563ab51f67c380b6e355c86aaebac0172160c4f00f31d1e0f01add7017477ac78d5eba9075cbe6a98b4a19f03aae0955be6f0aeb21339584346d17b4f98c04ce6003cce100bdd6eb1336c1aaba7ea25b9f048e4fe5ef0fe13ef0f4443143eb1c6f873cb32c5429572b4f5e5b4f24756a4eeae51f82a2b2c0195896ecee68d54d0005e62f0869c24b3751a2fac18e4eac5f7ae69eff207c04f30793012184536070c9acbf498bb4617035f68abb7153a99170af5aeab7184d14b461f807407d9d8d93e36c80d866437ff4ac723669c41cbff9c9f2ffd63c4ea036167509b79f50d316dd62f0c08920175e3df1c86009eae810156d4577f24475eb730cbf43e68282c856cf89000d084d9c14217a46f114e9e36f4ad4ee48e1bbdaa0c04343450a830083a636ddcffe30c91831f05a9198fa5d8582401ac1f46f8489ecd1c64ac06f54b5cf7ec19121f0682fd7f09380f071294fd12af06d8b187d864949332afbcec609f103498cf5c505de0fcd6342bc5121063359d1236b5f5a7857bb228e21131199f02a303453e7f438e0e7408168403c34340816077d713cc608b00ddc908707e2b0d74c2883dc694b8a8a3dc8739f5e532b211970b8f19b85e740f0034142b03a5a80652290362f6ee91719230e6f812847acd3291f03dfc309e609931df0baf754546ffc4826fced50f22ba8c49f6a2a411fb36f01e10d3d097627c12c4a355eaf598da6cdbcacc71442e111c8e91d07c64c506af11078a576ac808f2b28ef21db216fee52dbb0f75cffa3f08d53fb347cb809c37699813b6f395b555bc19c0f99ea0c50a653672c98e30a0f5f28b3ac27de04121b6b8ce2183d4454f4d0631a95f1f0484c1baeddc6320f400f95410aa12d36c302010b75129516b96b8473533e8d2b157e0d28d1c04a13e2e984d22be5406921dcbab782ed286f18f4118fe8ffb5d186b1c5afbf99f05ff75811ea7e6f2592e882dbab6024eb182e143fe406d7cc0c78818872806aeeb40ff6cd97636eb1d421f4785f5642b33c1e32c86024f556c3bbde9c8648a7fcc77a55c3b440c10db2f929bc1342c5457e0ab7408302292f0ef60e85d541ad3f9c18e4de440200df44069610e8fc04436deb94c8277d2164135721223020f278a3e383700053d8d1b788d917c2663fab57848370fd95460dbaa626bd393185dcc7fbbd84a2a239d8b90891d5977b825ba0c21ef9978219c6bf67a4c7279090262a27ec9f7338c66578369db009959947d69e6316c0fe2bfd107c79379762ba3bdfca653f64b52c4fc5c2fa3efdf9bce9c090cfd02f24af3f5641626adf6341f51678197d4afd578d339eb41f04dfb20915fd62258757ca367e957caeec23863b960609c0499a67fe76f651e8c990a8179c7b4ec30e86e6d7b5c40882c3fab28fc6a480518d17797de4bd1be050aa63e115fc404a9425960ffc74c82dcfb38de69271778d8463b471ea68d6551de791354d9c703014cc9eac0f7c84596ad856c380f4dc53ba58b6680c2d001fb2f6b7be2d9fd30edf8c1d1720b02b062de9896c3295e082d7348f050d51bedc14b96401c258ae235370efdd520a29c4dcb3a4ba4a408419e3d5d0239f6be64b0c2fbea09cec02af9b87665d3eb3e5a11b09b7e2b731608a88ba510eac3b4553ccc1eb85de6d2bbcfcc444f00428178d6ec8aecc39cbfa22caf43320d8d8a2864a13ada09c38c1fe627e00bd3a1e80b02b04691946cd05fdb4d07815f46e6008113c00383aeca5fe5358bd2b10b950b6f2c14e26b22c9d780f7c58a3b035651c23c10eae0849210ab72495910799d900d9e78e7efc31287ef04d3007a4bb53a0840bdde2279d4ca961a064086f251d3fefb747677db81343de0bef0e465899a22aa68d1a5e648a2d43d8a5bb95a38f0b6a5ae99c80bb91dacb96237955ca0255c8e075314af2c2eb38e9dba6fe644ec819c14c7a9d373942e3cd7234fef6eb62ac7110d22e1c2a57f14f5c377821e859d2a6c8323b38a87a8ba5dd166777ef9d192fbc950c749b1d1a5be263a05ee8fb0b0caecfd4a3856108dfdd0d788074006f244e8a2ea2e19c51405fca6b7b3daf00c6bcb904ba589e39d0d5ca2a7a40926f0d5eadad7c289b012ca0977ee07d6b51ae603dbb047b6534a193c349b3d2a497143a685e45affe201e16977f91a2fa62dce471653dc1894966cb6245ac32dd171217d9918f72a9282c097e0e545c452e387501c1ce77614c9f0f63855ba8d7206658d5a0968b6dd312e5d80ee09b4fd5f673e792b566e6b98da939a56244d76d4cf98b028f3db3ce1210e4af1f4688afab4407651e19ef75fdd4bd2e8eefc4d5635fa1dd3f8aee6d608502db1e63b7499d9dd14b9730fdea08b565f4d9781bc7ab8c1b50d08fd6088d705a5d8261d72eff540fe6a675751cc9272055171186003c629a9921ccaa7dd0de7e092a2da4bc741b84412833c90ff149bdd44338d9172e1a5d6e1853622bc6fc5072936d66140343dff850f54391885c98cfe464122d3b20dff3aa130ee12265f5360a1aaaa9704de1d276074153a643a9f03161c062d9af66c64f8d2696429e5e14fad23fdf8c116a7dc183cba400626c1b9e089b980fc02208351e60b95981b677bb203c9be0fa2128b5b260b5e7905bfba1221990904d7432d6913a22bfc861899a515dacb8b3e6327c9f89eea2ba2efff70aa47e9e62644b4247484955c05369b3ed395248bae8aca13555efa148b24e35af0058542386bb2d76eada065970e01c49f932f1ec4e2ac61459e8f2f8a4f715380dff02658e807a647ce1875b2b5e0b6d8453b3e7fc828b3d2f9cc9582e2ba288eb5f7e6a72d225c30a46bc72461cc440f33ba4afe69c130141087389a4d8c263461e4b2a5995f5b5993d6362e431f09d7e3b315ad6951098b0c8454f8aca82120497ad786605208a68c86fc1c40b89aea6b54d98168686ebbddae8ea27fc00c099f22b0c44748d6ac7ccb58f43811621e6a0a85b0aa2374226607961453687952c88d8b70a9163515a0bc2e213b72def7a94cd152b6170db16dc5b6b5948d151763af4ba4acb4dbe84da5cbe71b37cdf7bdcf371048e42ef4b07a72083e06e3924d0835c16cd717632f13f92db485b6443892fe598c9b8dbe1ddde4cd82364d9f35ed9dade2b99407677a42fd8231a6fa35e1e447a31c04aae501e3ca37415ba441541168859b9ace0c5811571eb439443186ab684341e0bcf8ad4333ab9900a43c972b20f4da6de1f3af86de17075f676e65ac0528ae9dfff4bbf8e10e50b2d6e1276508cdaad49cdb8d1281f0c0c1f4f396fb714d3f5f547649e516fe6ab86853781ce2e7ae05d2a4100f76054dc1c22f814063e786ccd7d910ce3bf203458ead67bb99e2c4ee7ae14c8ec2b9bc45865f8a08c3de253ebf02e709cf852be00c7a4074346de7063b7dc60ed09c0082fa7eb6c0e2884addaacde7b9582340f1cf815e2646f8f6745bfb4070a82973bedbc4834f37c51fa2b8381a3b401057433bdf4019840962a96a1d77b3721b02c900dbe572f0e83ef60ba5dd5ee461b3256ad719b0b9790ac8fdb64253d47c11bb893f7698386baf440674c060fc11f870c048c5c16c7c2f28624f6f27e2b3d4c00507d536f079c9d6572726f3064378fe89100d51fa779cc28db7b3ee8c6cfc0192fe0716c888b46637992920be8ba9ffa259866d27de3fb9f8f237866a6f03545474ace6fae82ce727ace2bbd219ffa5cbbdcd44d9380675a26e8a9ff1ef993dcc3bf5e19e0c5c53e64514caa7f396a2efa84b3710a9febf611b14cdd41bf63eb79ea3121b2bc6c3633a8eff82c4f7da1b4d6a020c5af387a9d2f00541afd11e652ac432b59409f45b8c2b38e466e0a33f644111b64235b661d109941d8fc9017d565c0f3bd80ba722969441b9bb218dbf6ba37364605ae5b8438f11e49de68a2cfae6c83c1364ce12b8ffe1e47f4453eb1d4533938ba72a9e8e0183bf0785efbf748eb2aaefb343119cbf6fb5c27f32fbf592a31ae67dd2205e6d926e30911bfa1bba6cb22c44aff642d9ed1d636959b87f8ab6bf10e12b2f6eb45b015775aba84eec7c56e3d7deb2eb689f51cfce2f6c8ee77c4a1298ef8eb653f4dfa778c6cf7f50d51fbc92aa84658b97e7218f4977508a100fcfaee4834d46bc03b61f1e08df544418df31ed10fd5cbd621af76fef119d7a8887a1640b0825de028c295c24ce57a890cfb1f233d0ff9afef1958bf7253c830e9378921d911b76ee0f34bc6b7eae6c437a228a4c95fc513d83fc8b343c607f79d75ec73fdf30fb091c2baee1bebce0a6efc6354d2f4436a7c7492fd5504350fba0e3a52a0ae529f0fde1710786ba5730b565f5fa302dc35c578add5291c3b9ac91789731f26b0525aa3a752b845babcbcafc98cb9da6139009e572aaa06720e0728530be8996fa1880eec58b3c405f3aa97e8d54640e37dd036c999d42d7d4d5e76888b195b431086379f9763138e02501557722edb0501327805ed71c2c4df2cf229ccc12d9aba860d79cbf14210c18063967443257d3badfcaae2ce5aaf2f944b822fb28e5a949d66e1cede5d99bb461875c847c928b8bb488f74b2d517f2283a595017b10eaf1272460c27af9e7f4d4d05ae057d84028a7f22115df635ed374fff6d56f5bd08ebb7df676fd920511721258e657dc366e76887141cd0c974674d97a85866de529c12dd7daf8a5b9773c4f7003f98ca88e8810cc2b55155062c0342b7e7afdeb3faa968df8b98a130e82b30b647251ce5af79a05acef2d46f807a2da070d06372e535c329172f1d4d90cee2f825e97bde04852247938488bfb3d6726b58072b76efea2ed8aac45bf617f520b7a3086f947a9771ea910fdecc92b8874a6539227e0a2a3df1317b919b02880815cf4663b47d5c5840a84ee92c7cfde56d3524529a8dbe392bbc5e855f31e107a117918f9412ab8de8d337af180bd6a4bfa82c38f58d8eb46553b202c035fa841dc94c4e7762f9bfb011f7fe2003cb2cc7bfbcce14182b1cfb3ac393f9fba5d5ac27e6d5f80e96f4bfd73899fe17045dfcba447c04de369969462bb4a56acaef3bfe3ff7d4e1f7feb223d6a940912b84f010c08000282dcf20b5f5a99c3c00e938d4146c1da8c35120488db8201ce5ab949437fb46e4049ec774f9a5c08b8b76bc87c087ee04374cb6ff76a1b00fb3e3468b41c4a3e3792a7e5d3133e0fc599fb6030e465f54e7098c371cef82b1a9529394412988b0fc96826f614a1e95e7967e26982c310523d4f2f122a027c24715db5423659d67f692710866f6a4953e2dd90a63925e075f79ef10c277961695b0db64c2098ac397d7c45f83840268e98d00af2c3971b5e98662ad3c525e5d784bfd9ddccfdbb3c2faae25e77a727089fe37f2d5380f3df0cdded4f8b6f182dc8855b39bd20da32737f0fd4085ca6d7c6ff8428eb9cba943cbe801b32953832993ea19ccd97b34a6da33181ca69b2edb606febd118dd914c6f858e69138a37781a17188aaf52631d6c567d77484a9aa8cc284006a7e32ad1694ba9d8902742682da80e97b78262b2a0940e77f7bdd2d5582c95c5b1a8b6d540b11029e071669319eb7e377a8badd8a93e29f032d4a1450a8f8331d97770975c589617141bb00b64ae36f50aed6574d7efcd9f6ea18c0eb22d4101510c962a7406f3a743cf9dc3b28a8a409b2394658a6a8ce087aaa6d2135a711f1f5f906f99f8a59b9491dd3ebf41ada652e9eda9dc8ae0b7a790f473cd92ccfa1bc0a2593bca6f5e9d82cb77aa026b8bd0e7fdecfe6e7a8362a9bcc6481e7c7c06dd2b1b979fb2e688edfa2d669adaf2694b345d1c0420f63efe39a14f760bad0835f7628c36677ba6973e4a3d8ec4b6d113995e9a51c62d1e80a15cb451cdcc39b19da32cd86090b45fda6164280d7d8fb2c0af89f21e654789c5e78e53fab7ae8c53b30f6a7dcd602b9161c1a12dd45b613978ed600b5dd792338962d8cd88e450c0e87c0330473da7cd227436fa3f9143a7f6d8dae3949daa004aa34ab6788ad11e05beb5566cf4167e4c094c380998861a7d664bc448022c6120e30d600950bf328e8d717ffe885410932d0c73b537baea0969699d27a88c412c7a0565fbc2dbe56b21d1e9988a044cb631375646bfeb1a29a60a6dd3f3c0d4a5970aed62bea6efc993e26ed854398e75d7e7e44d6518f556258fd1ac76a44481162245dbe53c759392edc86dccd4445e68b122aa487e316cec0ac23dcbb85fc12986d49368fe67385ab00958088ae122df96591d7ca6eeda8defb262bc446a08167d552c430b1a007c7cee3632dfe7e6c6d223379b03aca3a4eda4630635e13ebf85576200a6cc0778a6cbb4b17921ff8a88209d3ec4a106268715f463dedb313ee0c04d078a807a07478559b7778e35b57ad1af35db95f87b1f45b61eb5e0ef3d16b9b8a815ad42fc652fe0de463cb7a4a5cc43c6d2c0784550c138d5e3970fda12c966dff9c7f3bc9469d7b9e102ad52db75b2664f376ffe2e9da7127befc91ce78e31d0553e81fe5bc4aff6ea82d83e173b3c8c92e41b4ecf468098a50c8aac7bbef8a1f50c728e82d96a03edae0c1cfc77e9df7986a3494c7297b352d415955548c4f214afe114bdd931758318a3478291276102688c6582244d531cb06126239d20c137b2d90ab1a440241fab6a690400a8a6ea80113b2489e68dd0f547b324a05bdcbf8a192dcd57722b71da40867ce4f8834579f0ce8a870f6a6b4a74fe5c227e1ca42b3ae220577098344321a59ff0b1c6bb80f9992d6555c9480be681dd0bfee3e942932bc71f1de77ef65917de1da89b84299c53a2f07c40cb61527cbc1f42d34565d08dca3a75d50a9ee215e0502ed2dc20c7c54fac1821ae3a8d6f959cd74f260266d05f43b77da84d41b6ba5841810ea97829386e8011825130aa6075a5c97910ed9bc9c11cdc46d821a51ee0bfea86d8317d9df110553a0b822e2d78f056e293ee63ae779d9bd4b0d6c210073a473fb7d1800feeceb3553c8f24bfa9fd96562dfc34f7f9bb27644ffdb51cd2ae8d92a5408ecbf0eb6af4661b351d0a764bf11da75886e49c2f21958da5143b1df7fa13077434ae545a0fc8822fc07f75d403a21083b84bdf2817b5582f8f13cc7d14f853878cdada202487c6bc5869e722cb5e37591a3201e96fa4337d28e0cd0289c2409b387e1ed92347d09085cd9bbab97ab650cd9c0270a1b6b3efcf306d41089d853b8aea0003111cf72e9a7a7e9d95d7a8138517d6730e740d9644d5f7c7ec25488d71709f99d3305a316cfa69c831704af9e81fd1330588f53fff3dd32e566e47abab17b0a86bffaf6f4ce3a6e2a953efa89dc6c02d5850637aa9ae8225f3723b8bbdcec05b2966d4ff5c5162951b4da24454663489d253f9682254926581703139c84845225172672abe99f8e654f91118eea1065a5ebd86c1eeaa777948dfb387a99af16d789501d4c9f4f0b3857d4ef75f8e5b78c485500a01f73bc9e88f4b96bb25a108fb8424a49ad2e810f2eecef8683ab1f0a8873abdf2d242afac87598931daa75d3d7fe709ac056110a053d057af375714322c5dfd8099a0e9e79f20deb5c00a1fc22f7048089929563cb1d4ff555507249da7e9c303bd312d0e121cdab4db63a5359b2586649ff13196b3b23257b7a6411f58fcb562688c698391ed25649b43963d0863108a2cbab54f57a1f79b88616df9ea35aadf0bdaaad50dbe66383595e9999b20c898ea9aaab5127309bf1e7e96c7a97cd05d35285a49132ce66e8280407381b47141064c69c4fd1b083ae18381d361275533a103446dde681717b5ebbd5c150c833321ee8b2199a926cdc4209ab945ac0b922ffd8de3bfaddda5f2969af2d3f90354a5720664319d32e7b6a35ad6926bde4ae1528528e9f0f599160b0e4ca89f96e6a840beec7dcb11e57b3fd5d906659e7370ff860aad6ba1c4a6d690b6ba836cc744d0ade3bdd7059a12576f6b8ace74c0407104a353a9be98a8b8a48e9836b19de4a07c75758a0c73b03046921b55ad532a6df5b8f3041c16ed7f4a5f70fad5aab558d8f3f7af43617873703cf9d9854ff297259a9836a846be54b40d5f8c187d1074d0a7855c347d18b0655b27949330284c9c6ef984041b029cdd0eb91ed1855276272d953672f9cb8f17424c401377c622a4cace652ceba36d2ee81a6414e3927456fa84151ffd5f026f7137b92f886c458d79d4f3f72b7ccff155c15347e795859117c22cd44e705d20b128d85ce83648c38098433c45be2de2e4eaf644d4b5b067838fe57ff69dfce51dbf4360c19e90e5ceec6c044e38db0c0dc8e9b01ce4f0bfc5c9a3addf5f1047d2fd0b4495f1126c6990b865e759937643a35b5161216ef9d45f5533a4565c3212548948692fae0c827d175d7a488042a9921865f1f494224eaea5fa69e949a9ac23ddb743e230e93d61768d6ef062f5a6158ed9775336ac3ad2c6333aa21073f6446ed38b0599685200fb0db663666753402adbf057c570daad8c8550f9673eaae104b0306625d2782409cad601f7b74e0a8f9cb964829022c781a1bee49317483c8e2acb6fff67bf21d0b32612707c2cf4898035a94e8a14fba5c52fae18ea91386058ef7ad20513ec7061feebc49f9f2387cc45d9afbe320ab896fac66bf63b06d09e087ce6c59a2bb8bec9458f13405dd8c936d36bd7c774470e93441b1771e459c0d1a9eecfebe320f82c7c1bd65744ba9143c0c5a47c29e0cd9eca2ebe19372a323303a23c8b3b79305a34e4c1a0b5a40f3f8009eb16ba734a70131d1c5f6f4a06946d4a22c81b93799dea41a21afa47db29f30d7c430894b63cb3f8da20d2ad5f31287fdbc88cec245f7325796f520a09bd249277e5e276638c9eaaa1611876a7c30656618077a728a8b8a52c959bb5c363184078072bc1d17a8f592cc4046ea1a3fb2eba9564cd3928f76122d5b9534ef26e82f4e549f5560093daea4eb89b9d04f668f038563500ced419b3957d3ca5b24aacda8a0e7c57abbf11be2b22b5f39845824715b014e388ce9f6f2cd3eb75fa73fc5d4d3649f28122d6565ea21a1ccb272e1d72345c3a0f155697df4bc310e9c43c60d1742f13d6fbc1af0f0d6e438efd1b3b12a196068de9f27f849a395c75d838d75a26ff5eb4f1e09871da8164d3ec3dbe05f77843e8a1c03be4409e0e0b7af31b2a88576a3f16851c5ad18ffa381563249c18ee0a800a2d90ab15e1b9ba02d071f2cdeee6b4d67f3e877705f4057ac983dd3a40eb21040475e721295eb4021fe755617e1b2be9cd18898dc6f64cda94a0f75481e8d2792434a0fd10d1ea5c35341a4dd5d7a0dbb0a71bbbad7aceb2ff42778ca616f6c112f5ba83f4714e75393c2862233ee5a0ca4c2f8f06a5a429108db35a8230a952e451e358a238ce1aae9af258c4f50e2c1f1cf48a98472cd241d29ef248c16653372f1347104d7ea4c46ebc191a4e53606fbdce714275b76d890efd978b0b5ccc03de7fb7acd6fe1e11fa60a6060c936fa1ceb54ecfda0a975782807cc199c8a99b7985e5e50c165a61738cd7dcb8ccff3085ceff16a84ac4e41fd3c89fd1c58e65d078cb9b32f8aa8e48cda0d77068b9ebd150b7b657ff3297c06d8a7a2dddbd17e420cd82282da3386e9b6adc9018de5d7c68cb5696b1275d440986904a30a4928ccc0dfa11d88725cee739a127019e81f98cc81e76f602c551a0d6e8cf63918948a878659f8ede22ca38ce8c393011f558533df3412cf575cd7cf07bb8acc0d07160c21ed9df6926ced0ee0d334ce3dc29c130bf676f5205a08f970262d3804a8da5374301d53aa53b9a328208e5ddaf7e4c73a588a73e796783bb3ac618e4523d1821288ae2a28b4482d87dfeb1d7f0735424930763c3cf8f7276d80978209f39e9d6f3a649695ccad95a309d466ac5d13ed801e9ee12ff85ce570885928a29bfff2ea47633b933c16ed7aec3edcaae34af8916b18c2b38381647e06a74872d526bcc5bc85b5333beac7522c20de7dd8d666cdcb53bca2bde7d151a8a13dc2ea6cbf75b9ba7b1ae2235875a84717da79d90e35d485e3815762bfa93d1a996a10e4bead328551b41cf5daf7691a2fa6030e9beddff877d2613c09a095b003847555bd6b62bf7ddaea07b64444013e272befdd730ee9cf2183a9f99e060ee551cc71cb3b578b2f38e2d0169dd8ebacb3a4bbeb4ca40275bc23ae8e86423fae3999d37f08ad16581858e6c6e2ba6be850d7202cb25731cdb19fd370a5b087e5d800e7e43d07878ffc7fad8627ce3680bbdb49aca6b6974703d39cda41883fc5e2da08667563a9f1fbf3e9264257dbdfc80edab56037c1d0eab9b4b4955f3b8a53b4dce991e0ad6ed4e00e744b871aa25db60b6bb0a5079cb335a2ad810164996a9f94ea8728c1c01082d479dacf541a5f1af70672ddd157a6cb870ceb34b3e43748145bef3a48e4180c0659b3d73d81194ab751309dc3580e94027dd9e6a875632781d24a5e083c8335c0ec479e18401bf817caa9fbc22348aa4cbfa35fa3b03eebf23a5db02d4e2db1f9859c7e500a12f7d3eb0ec301577e52f03882ab153320610b3edd0bbf05908a10ca47d388aee06f4f3d0abaa723a13b989e3310ab12ec40710d2e80045412338665d881e055c66067a8b4cf4ae9ad0998a5e830b9e6cb212713fef5ffb340d3c39dce240f3c4c9bd33fa6b0e2d8e90ff3ed12db9d1c27143be8a9598b33f15426df27ec99f09a5bafdaac3c961aa16281e3571869e052e08d805b304f59aad9f07db75c93e6cbc6b697f332b604c22df4385267cfa49ba2a4c610e35a598e60c2dc9b905c89f528d0e83166d7cd03108c914232ab810a54d5adf2b39c41f922c7a2635baa613e424efd0bacd21227e0d47201d1b8b7a24c0a38d42f5f63be1ad9651674e6adb9d140932906e9667ada46b2931a6f3edafa7b92b25b598db046f131c3ada426bc474989d9eab98b9a00252add8aa8adbd841d27f1c716ccf71120bcc687b14b50f1b279517e31675d4648389ea1896775d870b62c10ef3a41bfd1176c2838d046fb82a72027cf59f1c364a043fa13a79a1256910052682828923cab1013a447363fd7a1a47e4540210f9712ed49b51057da3372aa12173648b23321b35e4ae8f06b1f0570dda9a1365407c46ca73e40cadd33dcc900d79ae3969a769c11f0abbd334a527833c02a29007bc92624ac2a6afa440d24cb22697273cf681915c5e1e1301e6654532ddc6ac00c8f8c5aae063388b07c78a4b2c8d7a386095066f361fa5a027bc10111cce752495c6076d7787987b2908d722e1c9f1ceb5c36eced18fc31e2ce65630acb8aca84d0aa759e79113431b850312a58f1cdf480aa75151381fddbf8c24d11accec1e06e1a7fd463b216d8d861146c658011f61018e06665a704a06529592742288e37b645a4266d50755359ab4ff9b9ee40675e9c7aaefc84d4454904d7462ca29889e685aeefcbd2d91b5927cc9811a8548f1c28eaa1fd52fec07028273540073a987a47b65e2342fd936bb7c012e26cbe49246e953c92fa91c2931895c5713b9e5a293ff93452c062e6960bf93319f49c71edfef334d115078e66b38b772d49f8b7338598c69db99fd7f620cf1057d2d2dbae8a92a167312d8f84f6353ff8629631d5b00ab98274342458bb3f06e3bbc52a76f59710e437f301868276c23136c1faf8d185a19368e22f084ebca23a40f3850165e8623724e2c7068522aae95fed3a8c4f652cb3c043d98e2aa8ea0d564d4457d4b532f9118a8c26fe02ec8316984955050332cfc7474df770671210e2b4a641efab66b5182142b49eeb594274139022537d0d093a24fcf5c550810daea6c78f3cea0d7c578f9f4f6753e4968325ddac3be3009a268605571153b727571d54303c9c1acb4d6a8b339d670ecd81b4961c7e10f05a207bf97f27a6a35e7179adc88ed40879bb4ab618fdab7b9d691313b81857438fb6dbe228aaca12e000f46ef0e3a9e909b347b1e51d4bf984620cec3fb425b2cce371651068bf59a2ee67075db271ba371dd374988e82ae8bac3b6c3ed5fb5f68e760d70442b6a2804fc7104953ae694a677ed580f8a2c81894b7c5a64def312bee92e6c20981401fdd6052dd487b70a3dab2186e576428d3de5396eecea1e95145e45ce6d2f9cd06e0000f6ef351383ffd480d3c73a38a9589ed7cf64b2f79c462f47f0cf88aacd877c5a91039e4ab0bd9ef335006a0a45f5c74ce3b8a370911baf5b2c5793e7cc9237ca4f4694da4c5715fa3e01ea7169fd69dec76e68b8e8c6e26eda2934d6bda30981bdaea30699d491a09454fffd5fdb366695846f350bc974300c5732fdd4170888b90bac847c5d581932935368964493a5e13f749a3566094d33ecc0e920cb730c0c0fcf3910e0c6bc84e9f28d712b2b586d4150795ebdceaecb17e435a87c3df2a98f93dcd56d351fcc1c18c19711d103f001e70c99ba81d2e82ab16b1dcbb3a76c02713b5cc52843c3d98d5e6a0939f5a414a7932caa97718db08285a9b0c449b2e7cacd77ac3163a6eecd9ecc8be1e9a6c2a8a6e8d6590ecd65d5723dd95b9292ed0b7e5da86d787a9a6f115cedb269f95c35abc2d9e3d3f5da209548cdd04ce4f5d4308ef1be33f78c7301793f88f45d250b188cd3ce1e06f607a6f4c728952db48b13e0c0dbd7962ab4c95d83ab0e99fd6aad327aeccaae2adf8928fbdaede78ac51230e1dbf8cd4dee8d72380cec273d36d0dd4b7cda225e72b6d9e098975afdf20c2eb7ce4077f55b8e4299af6f9112828f372d558674a60f3618926f09be24581081908bf8d7e02878922d4836bd2794148660d3428209522b86383bec4cae035c38f164ecbc83c0dd267c3341cc8966dca7301890f38158c92c197b6cab1096b745426e92e45dd7814b096c4743e794bff3b48acc912a568dc1efd6e6534e3ef76fc07625ddb6d623217b8a3bc29df8c968126164ba27fb9f89efed6b5932889b907ca5e003e8a612dc811fe2206803ed461c7fbb81b0dea4709f0f2963238a59052565e60dce8ca0c20e3f020b575476cd9cb033083e07239cf1276be988330ab9693cbb08b13545c6ea7bcd6cc31f3a18e71339a5ff266a4437fcab53a713e9e67b55a7dc06c59911f1d3a8f6559f8ed2e033fabaf4fca00c41464caa32aa7e8fc2ae347beb41d1f52b3e811e7787e7330766384d49755c8af9e3042a546dc8524776a5e67c82edd02ae5b0a00f97a089bf612df56b8ff5eb5c5d1ced596ce95100367e037b2c3c9a91220317f6f30a8d09e2dfb43ca7aabd2b1118d000afed11505968ada62bb895a350d14aff94b90f028e378c3b875c9d55b7e16643e7861b910c4dce27e1ea3836242f0609206791f6a61c40d719ef25c96988840c5afbef9c0f465ca4fb9bd98100f9204b08001e84dc0006051acf1620176748100596ee0601ef70420ef38fd032edb1d078e98a36d8becf0aaac4c56129296ded04f9ee5a362b2781fecdcac299912ba9fc310be03f51fcd4ca6c4417bbdf2e71efd56fa9303e559e7c59d5d1ee8604650dfaf0b944246141af9d673dec6a19ec4168638ab8fcf29396f12393a2a3ad1bc66dabc5bb927e98e7d8923e8eef128a0786b41acfadac4a0b829591dffa6e84d496f6ce71ee7d86b4f8608e5434f6f6cbe6e45916ac50b4346b912ffb8918a80c7a14965c3f580228004d75b3306ee2ff4af1821a835f06df922742af8219f2079703b48c871499182ca5789f3b1321c79f809b17db3c420ab46c260ce9df542a3e64348f84e0824e621e158489646c67d560035ed3f9ab8edf4fe0853f2064e4eefa0266e2575945db387783074c22a0d4bf6c2a537d8c3215ec23549937773b4cdfe784ff4f3250fa5cc81a6a9c725a8bbdabc253778e7149ce005975ba233315c5fa52001d10ab7bd3f08519d5b8a4091330615c96e285203c5104cb0494ddc96faf649217158e71c1f579ad1a2acd7ed3819bc7d6294b150f9fc0bab9ac653e8fd856e9749bc6e316c12d682a1ee73a7e16b2fb181b5108858b209b9e092cd3fc6d2edcec7ef0ca145f2239f882096aa7394d9435c05fb1df8f8f39ad4e45e7c15bd33b116d14bb29d652bf4f28ddf19cd8dac881d452ee16b225179591cad0a78c847d2a472c666cee1bec59509c5279b353c8e98968b8919af60d941a0c11c03d4d6b76fba1347c85cb4fbb90bc4f4497b7e2d494e2d30c05a8e5fd135b37556a3e372f1c41d9fbf055670747d13b0a592be968f0b492a287aece4c23da6e0ea6eb6aedfef4545017e3e46ee1c93b841edf9dc38088127941809a0484669a558d6310f529ea18023ccb4fe8f976c764b23ba50cba85b8781754ba52aad9a3844a2ab7895e258c776c97128ec5074c029f9ace1a820d6b0af5f2ea74cb06b8107c949e578ea9f07fea17d192e938d4a7a2f3adc56a5f5eb4030a8f444c5e76ca378a18fdf8d0befe35f65ca206d72c65c948a1a73f21867abe0f2df8bfdea4094b39bc61dc7571bea21031b88997b09a0c36cdc0214814ce17ce5be8e8112136c74e1c15bfdc85ab2df94bd4c214b07538cf21791e1a00b7b57be9f41a118c4aa348b86cc8be9b793b8103aa30e46e4c7ad533339b761b80df657e51d0fbe54c379a3acb973af1a2ed47bf71c63be6cc12db6200bff75ab440a2c6f7c1915777f937d3104f2e5beda8d37baac62b96b84fcca6906cde63b42bd71c8d2c3e8bda925bc8553d878362ddb1298f1348f86eaff21bc98f744685b548718b150703207112559c60618cd9d6270b692926e90a207310447a35fa828572de92a88f14ffce723aef9e7efee03332a52a2419581d5d42b15a3f41b548020b2296ec9687b7e19117ad9f835c8d111a495de68888945fa2a77a6ff7d4e47256ee3448c1e335879253efb7a62eb167d913b95dbf3480753df5173003ab6b2c7f51644945d0cbc6eb2a023617f36b57d00bcfc607c1f6fc7cd29b8644d12053f80b48bd427411248812314b9b2c8b18004d4cd2f719d61440604441707840fbe97f4aa4ba4a61d06c1c88a6c5fdd808c3e22f62fef30b5870b5eb9bf781525de773dbbde60ed24f1195a6e92b5e7a5dcf4f73964ebf034624e5199e8012867b675243a3779ea041eb9a9c0fcaf265f71d003c80ff782f058c8f77df5ba05dd30b0affee295930ffa6059bd3d72751e068927457f43e5f1a6b08b296950dc8088c370dae3f31aa48b91f906097ce3b01c2f14a164102fa6483c5130b8c04d60a4fccfcf73a798e6205dbdde4f8ba89e054167f5903525195063ff64e6f351e5a020f038bb856031226150331fddf1f9cc9a6cd862077244bf38a01f343d0022ba7fbd94920486303c91ae2a51de3788201b9111a3723ab77e17f3f9cdc18b28ad7ba1629ede814efe0a8121fce02c1c0485c3c3f1db5d0533515427c87ac023a6e526b564800f01026d986e7ba3a3e2a29d55580be2ef86fe79d7cdf09a6699423d4366333c407e623a45dc70ca9271683788909248f2c1494518da0a74dacb98d93b65551396facdc6b16be2c07dace04d014934f1018243dbf68ce830a0c0b42b3f5442654312bd462c2206aae97a989ac74d7d12dc86ce6760c352bbc43edbb63b66007dcd7a89e3f7090fe6ddb011b0bb748f070bf544567d4fa138a9bdf7a731892c251170497763c1c00b4721d093d3914ca4f25a53d7238b5a103e747903eda6a7b7d00979259dc28fa5188aee7749c79c220cf7c360fbb1d3902e36db40c33efdb39b067c9093862f3644d7d7f1a5d4ff55c3aeff4c132e0a921d9464c205a799f04785581afb6c51f016b7d557e2b00f83f98efebe56ba61b201e409175922fd430bb475d65ff8a800a597909194d1bf94b89254f9da9572b294fcb65ed527e390d86e105200317b5a38fc78fbe09503d1655c8d9d39c95cceaa3718fb2931508e9d41a52e4b1a42f13adafee5da3eb5c373dc290398f823e1826bb0ab6c3443f42411ffbd2a29cf4587e005a49422914ab57f8ba92d2a4f0ffca5ae1ba131c888fe0671abe03944a672cff7d70f76d409c9dc4bb67873d93a5e4c25c75d0a27f12689141a28c4589d015340c540a7934bf243e91048a0f19df95819485b838a9f3ce11cc7926c98ae6c131362cf26440b8f3572a138e5eab45884334e9ab4074d24d1f545f8ec05a620152f5abaa9dc7bf71ca3da2d074ccc78b43df0a75a4c15a9d80f066ac055b26d4d8ea430560ac402c15c9f745e62a8ee9bb862f564099fa0eeaf9e9eeb14a533a60312960e117ea5386578005e48a002c56496500b4c2bb36f36a667b84a3b191603442893d3a9983e01b41bde60897cdc6ff73e844a6f18af02fbeb398bf9426f765803bc053702793840d00b9bf1003cf24659383f9c3d6e1deac23a1a958442af39438606589139bd926b653e17d736a6496bebce95ac8bfbaaa9c7d26efb091e102dbdd7f78e97d2111af0eb9a4a6e4e8194498129034e8b526e49c4c3c8465255616757621b47ed4c98948633a9d5324c9f6ff3a0b9cf1ad28d42b460ab63c00624bec26987da2012f6dd2e1b16805cf45f6ed4e13e309c0ad44e88947acc3541df1205757501507f11f66a0d732ed0366f192fd5542996dee2bc95079db3a035252672e686cccb7b28c64afacab0d458bc3246c9fde8cf48ad491f08411ba408b6add5ab4b2f80f3969898064d8c37b460c694a2b727881fe5ac515a06c54c682fd9d18ab16384c77ebd61c68311c9a50413d6b5051d54e159a61d3a60a5036c535b9fa6b4429b73900ec084fdaba8b468c316e005aa5f29a059d0372e059288f9ca17f38c250123b56a3c91032bdfb481e64cfb639ff7fb8fd345435572e2add48ce2e180bddc4b8dcf430b0ee85f74f5d8cb991eb88bba12ea6d79c8ee4ffc501816ebd96c86e659aea483cea45be6edd0210d790e24f8650b965e1e39a1136138fb0ca045370d67326ab1d7be65f0f2b6fe7814807ea17fe0198f1127c1a0a9ff8cfab3c35815624fecc63938feda3254d318bd0a2cc277466974d6d3748560b994eab18de90618e453b35507c6343e1f378109f0e26edfa1337b2caa38727feea2cb014084187668d0c44256c0b67579d17be37c2d0053f5ccbfa6c1efc6af8d985680dc636e0b4d5dc524a473d6a5a499e5687ff91866382a9c04aaa524bb0fb48ed21c83575efc0f8a8a80b953cf4c2dc49ec3581e18e55a6f8024b88bd5426905eab6ef96d940d0fd2618af49c00095a57a7007a7900ad2ddf87118716bd2f6e0242d7cc4e08383a5554cb5adf52269713dc91cc44078e7d82daed1a09fd644800a5720467cec40ba99d7a0c7a479b528b440d64ba0357934d12e55d14c67003a2a5af585f5769552023920b06f345541a8df92f295a37e61b92574f6e36ec21d411f4dc98021df950e09735f420cbd5472a9e88183b3bb353b2d79df1a2b402fae67457e404ca2af61b3e00a3647d4f42e1acdf2d6da3f94e657075cec4d8d9055894bf321073f8296ae89eb5c782881d69e44c670f027ea1964679d0f0b8099dbc176a86f663fdd51e7579444b4d498355560b23b2c9aafd6615f852c78ab64ad4c810312c691cc631c4d3bad1c4e02576cb03c862c14b3e8f3d5b445f88af4a1fd2fe97443853e1f904c0d3747b058168e80f12edc383cdba76330fcf3e8f5c05a8acd11ceb24fcf804e86dfdb80f03fcaa7ef8ffec20f0411fd7da2b38eae7cc2bcf91612ec11f8c65bafbfcfba142bad03e45ef96aba001618eb0a426343ff8bb4c290f71d43da02ca28dbdf4a28a65196f0c5eb54301f409dcf58d770c4ec1ee2d6997c5b5a66a53e32a68dffc4fb89721568d70bed68416e29c92732ffd5da4c8541b27a0c51d4e373ca90fc726db4daa099b53ae5e618c99a16362ea98cc600977c78a9787402eb05b97b9196f0aa9da5aaa3bc91841b42e1ea8cfe8c4e283260cb6afc283bce209d6c81dde8d9cab05615cd7acea9a7ec880bcb0d0e7b74b97dd94b0c91007da703b07c38caa63adc7f9d57e67ff20a6904e08e9c119d9683387fe4015c0242aba057a911e9e70c6e5ed9afe73dd2b3dfb5ae29d4b06976ba005064fa379ca8a1a11eb3de1342bbd7d5aa32419e885b4d244748117b42bce39f83092dfecdbe2b755df8c09976ec5d25b98c2ac053682d7e41f0b85981eda679699e1fb588b4e49107132aeaf538fe9e7e5231d12471107e8839d7d8f170c67ee63c69e8d33d46edefdaa93b1f8f1b4c4a6463c0bc428a235e7a822ecf471e2172c2c04e570801e38a5152a1839c8e50f2201302b01527a64f523feb1ef901243765fea6a5ad639bf8d27738956e8480e61e0c607abddc01ef320bc0148e053c405535f38b9619b9a2ff05e5e061308cb1da54d585bd244c9c95af894b714a14e7c58ce9d5340df0108e4d888f6df3fb1b58fc0fd67e734b40e1dcb770521b5103a96a23108c8cbbdcf308730e7044ffa3efa2010f5010205870a5f9b4ca3655aeb2dce46bd4b922f352b6c934489a40ad9567a022fea884c963a7716e660eda171ba5d6c8bed49aa37ac353a26da0d48b385f1b71c68b1b5d84b1f93fd22941f8c1b6be92a30017a286d4f0e5c566959de19b8c37883822db147d7a881efca2c596b6315a2407eb938d82d2c4558e93156dbfc8bd432b8703f37a47b6036151627a42d5d75b072551696aa85a1d202c245da9640f9a19616c429e338177b23a4e00868db1ba8627aab4d52b80ff37f4c6fbe0593bf66f4e2d8af4fa1bcbd87365a546e6cd7cd3b44cd61b173f09eb419eccbea79fa5914caad46288325085b267597374be920af940dcd06105f2681ee5f90b53e6416e3551cf39d803a8fe4eded6a325941bd1db425b114386aab4ef782a491b94735e15302ffc5f98e148b9e6e3583828ccbafa0b4ffc380852fc879554674e6caf8c75f79e260a41961408e1951ee083cbc1487ec298f69db8a15bbaddee517ebccfc42fe8375d4af9ee07e3a1e8639113d20dd2de8e8fecedee5a5dcb54e345c797b5f86d1aff1875cd076b1e8f0e45f19581aa86d9a40e4180fa97e2ace6eac9a0449949b54fd198e1411b62487210cb80c58ac50852fac410a53f61103206559b968c9afaf60350d55add5e3f61aa5ed2b048eb1bca44eb2ed44b8bed1e8d5c8ae6b67f52505261ccc1ffc2c68dc06397fb15670eda9556095f4d5e2dad7e93be3f4c6cabd75856cdc7b45ed5eea832dbe47bed9e384a5a94bfaf14ddd834fdd8018f872005a7f2e20c2d64b747bd7d8d5be6b891d0ccb30ed73d867929447a3e3f81c727eb5098a38c081e8cb6dc36864e7af47a762615ab8428195d348ca7dfb505be0c402e0e1300bdf41d48e78c6e12f096e794915fe5dc0109a27dcafd29b11a46b42fac0b02de72675d2783f535cd16d28d8027ba9bc85b6f6ac2152e13545ef1d03210204601ca70596139c35fd2c80f7709f48d85ac42e4c70da65ed030d3012d3089db2a9a6b407b3b4c58a45db66c0c50f4a5b4e1cde16abe0b8e0858109513d54edbee7b9d9c30d27021bd7361099909e66a5ee21732f4d61d7ab4dead5353453ac3f0db10f9d0d4007c14ef31bb042361a8f05ccf3836aff34d00ac532b95981a6ffc88109fabe19664511dce40237e475a0f9bc41f59e7e227c17fc1321af1c1c361531160142527f22ac4005862820d3da037ddd8cc5506b1b0d8f3752ea5c700432407b01aad334a9dab534048136b0af16304d0b2613042fed603c42c9c1a6d03cda570135905932fb6eaf334bb66c0b7d22a260f1471c763ce718bb25a212fa6f19822dd6419fe09bb2bfd12538531bd2d5f9e3100784496b37675c750ed9ec4a7d671f978b624859b97706cbf90ecedae6334c08742eb8471c03478d2151394cad0e1e4e28e18622f5e17b3cb01cad31a42ca5cc09a1dc2dd4d519b0a924db51a06605c9c5165d8bcf1baad636198cf629d757add24caa53c897a70bb3ced23a19926ca4df8addc1bc983f319b56971714cf5555b4a93a32cc8c72df886d14f2286663594f5fac8831081612176e56237f1fe7aa41ee7f9dc25104ae9059caafdc625c7f96b332b2265c0535b538525fada061816349c0fbcd2d47db1fe6b6679235f7dd948ca3a4be46da24fd27f6d3e8e741aa791068d19de9e6468d44701dd8ce91dc25da7520ca655c4300599abe96c52e7c08eeeb7e215fcecdf405637f93258a74c2c221d29d1ebed13a493924967c64723f88272b7c844d37a59af6b3cf7e1d729a51a640a9fc3a61308e51ffcbaa59f153daf2a598afcd8f67ae37a3c6999ebeab230fe99a2a0e5edb183230f6015c1c344b72e295539e5e6392d1a28aabb684ce5efc6b29b47fbb4b54c09619e5cf3c248c7ea6da52bc357e30785445f8c840bfc529cddf9ac8ceb5c1519aab5bff40bded48c8d6ec61ae42e4ebcd85cb863f3a14f838cf815c4d02324a726693512cb8ad68697a7f0d08d6134d3525882290003442fbf17e2d2b1d83f7803fac7aa6af35002ba3cc524d23ceda762f4401591184dd30f1865fcc4607fa0d555ed03c6a1e8a7c5c75af28315b2810d7e55dc8812b5df9e0bc7572d4fed371631ede503fd44a50b06ff655095bdefa96eb0d455761039d8d789bb38e46db7e26720b7d61bf64a1d164847781ce3501ca5ceff69489f11492e68407eb0d2ce333bc074e64e235983119e32037ecd9f1b59b6b67556822b98358d39ec724db1c3eab9226ea38a8357b70e3ba2d5b3cae4d42d1422c299989b66369644e346adf6d510af172fea164444e34ac8c57ca47ffe7212ca98562f6b84cec1bbb8e61825a8975ca2a15e93576f2924e151160786954acb27d1168924a7eec93c7f2c2fbc3f96392087444603e6c8aec9f78281e3338058d9d04db2cf26b7ef6d54b8af0ebac77adca7e02bea1b179020060894c218927704724437f1145f800d80e149a03cae94e975930ce3a6ac68acf33641a797a4bd2307c8325f089262e0604aef1090e60e713dbb06140c791e2bf78e4f629d733367c52c72a0882c86e4cc501a2ee8b76ab5f6b8e2edd178b5c2ed4a3fdd6f65beb46424b5676776f29a594329e08280a740973ae91c7ae9b698cc8f4b35629d6bffe559f596e54356b98a147e0949a4c5fab94df1acc5bffaacff52c5451a5d2748032c62c91031b574441638f41634c1c4fbc8c21060e1dd6a801e5431729c08cf1050a1120192e763822a9082a5ac6ac818394524a39ed992cdf43a7a4a17f9571c30ad9c51026e4c0040834d878e114061a65c091a608316d9cd6a4c132679436640d5cf27357b9c197266b6cc1e24b0d485cf0c413356820997104860f35830c9211409ce1e20a377c040085923069aef090c51aa824f96b6099731fe0f26012ed79b9ada40752e95f99d6aa0ecd2814544aa1cce9f2992f52795cb29eea12d057faaa5db2de6ae923b26e593b3f3b40b4ac3a4c28c073cbca7325c63651dbe8f576ec1a762a6a5507c3bc4d8825e79e1e776bb5f10379ed526ff75ebeaf9af7fbee754f2ff5c8e230fa2a76c7c4f1c81eed85587bdbd8b953d17b27d66fe258021750ae7a146281730bb1b64c888577d0e4b9b34b997d7a22781b5051569d6ddbb677a25675b64cda2f76f61eea81fc02c3300e1339aede3b11faaede5342df7d84b9b5dbec5ad62529c398bbb6baea86d5fa49fb772dbc27829af616f85dd3ee799e87d20e2002afdd7b4a1cf3e56d8ed244cde63d54fbeebd86a391ad8159cb5ad6723e883af80f95c18f46f6f7efda987f359b7fe2f83dd49b4cfeb4cd351d6473940e6a5d1bba9f1ebadb467badcb9f585aeb66757b4d8f98c502c1d56a05ae6ea77d57fb5657fbb2c7711ce7799ae7d97bdf344fdbae2581ba3bd5ae7910ccb2cf6759e665d9b950a3c4f11bf52c8e4676f63c3deed89e0e1d3972e0e0b85c3737ad168bb55ad9d8a854a9140a753a8561ce20f87d9ed7751873dcb6d95cca20a954b6bddf5cca20a98f7783377ac4b677d65ba2943e582a70a5479bf22ee58fd43d3d9e447cd4b3787f12c7a11b8a23ccfddd6699f6bcfc0a3eebf11ba41b14477cecddc76f0eeba1bb399d5d3ecb1b69cd1413d386ec567a827c9f516aa9a516d3466b456aa9a5464c4c484d496694e86bc7524ac5ec1803ee15a1eeeb0109d6ac59a3b4ade8819d6da5521753206d026cb93485119612c3e43fbfaf951a77f5a871f5627a34b287eed8b347f9a14bff9168d3571d68530d29260ac6cc40ee268b7f14650f26dede55d7eade5b374771cf98134f07c5596fa61e45f81ee1669f86e473dc4171fc0641104c690710ed13f7097257896378fbd5539cc8adde433307fe9e9ecf899827040cc38f7973a176398068879fa9cf671010ed940ec18e1dead1c8cecfe7de5339710c9fad9e4f7ae8ded5391db47a4a07dd84e2d0dddce7ddae8337b747b5ea8d8b75cc6bb5e6b1c962b1260bcbc06c3e1f6461cf66a8476c825d778c76e7c46e7618c3303ef71f45d9e5c1ce9f3aa8fbf6efd303eabe696e77415d9e9e90dae12c562cf1eda477d223d13e3d258edfa987e268648720a8c71d1bfcbc6aea71870e1d3972e0e0b85c3737ad168bb55ad9d8a854a9140a753a8561ce20f87d9ed7751873dcb6ad567ad43678d56d44cde663b6c1bb2e6510d5c7bb5767b9f4886df0addf8852fa68d9882c6d63a355e0a5fca13a08ea11a5d2a3f7947d28664789e3d03d8923cc9d6f3d20baf3a7e741fdf64d8fddf3b3084ecf01443987afde8fdca11ebf27dd531cbd6ba7f947eedd94bf3f500775a3a787eeeef4769bf7f8d1c8b697690fd95da3b899362da8b5d65a9f437f60afaf4aa948353a767bdbb88f76d31a868d4037f580eaa079faaa54edddb6e3d5b951dbadb7bab38ebac9e7701655ff4490e39eaab5d65a6bad5575303cc83de77f5fa881f0f79e9a457c95387a97ef1e661173e2988ff3bf5bd5b967712461e763e1393dba8678c7dc413dba420d84c17bc7b8abf42693390d0ee98e7550f75007a5ce81e298f510dd9dfe5297bf4171a71e504a5bfa6ae95f140afc054fb739dde66403da70a24dfe876bddf9dfc9e6d7e61cf88cf5786db883dcca46af7e577a9c9b03410e3cc8fd1ebcc6811c075e779fdfe73f3d721b07e16fe036e283def7fc79efc06d3b4efdfb9eb3ea3636dfc3ab424fd21fe1f34351d257eeb238624f9d4ea81308be0337f09b1ef14150f47a28087affc4f0591cedceaf1ed0f750cb9ac5eca077f0eb3c1d843f3f6e9772e79d61d7d6267064fa1f30d040839cccc2b9061800d1acd5ba29b2983025f02891e79e42e69e4b6a30ed1e5b2e8599b2c39809f302b69df43c9873df6c32f250dd230888466db3cefaeaa7b782c06f07a9eced28284b4b4cf6a8654993c5cca6298c75d2034afdd3df316fc876103cf74e4bfa02bf7bdc53e2d85dde01f8b90345eed283c0dcf8e039bdc964f0de2be609497d3b28629e10efae3ca43bb7fdd3a32b6ba0ee3ba73709fb7bf7cbfd7a3f736f4fe94d266ffac3e774107ed641a86f9f38827a886eac3dd4e55be268f7e9d5f36002a1b4a52f961e57dad2d7e913f269d5a52724bceaa1389a60ab8ea7873d5175ac759ba8faf4848ce03d239bab754f4fc8f81dbca7eb0ef55882adbabde609a15bf54dc87750ebd17ea86ed568e96bfb67a347a2add236d503a2dbe69b68f3efdff67d93c943f57b260e7d43766fe75122bb3c98fbfbdcdf3d1dc45d03e2ae6917d0bcf7794f8fdcd6b8fd5d7a43e6350e7f6207beeb88bc83a2a4d4db4004babf63c9012c6712592e2d2dd9dab90e3a3dd2dd1de51d1447241b4c5da5d2a3dddef35323086af8d33df059f4448c1245c8c2538f83b9c377414374877a84b93f20babf7fd7f4c8fdfbc46e7a43e8a7c7b9bf77f746bbc1570fc87bd63d153c463f91d217bea72d7d61ba3b1dc47d725abb7c4fcd1b13e5d00452edc99a9e964cabb55604b891b3d7e39b4d46c6ec087407d56fbfb11b0b0dd6667dd346a072a7f680a5e71ddb69e9d741a6a5b701a7594ae4abe5a6475b6fc59168639f19772c3d0ee6e6b87770cf9d6893b06ba611ed6a9f59961259729366d1640a2b69957bee794b37a05572fdd5f51edca06b96d5476be4953824c9d662f77e16156d2a7448a10a29ac58010a57a290a10a16695c71e20a208c50e10c4d4a06802c61aeb860cb252d362c65b13203344029f2a2054d18294924e0c61193161c5d81858b294e6abcf14213439c51c10f5a4833a024b16245881cdeb0e268a806278430b302124e18016685344360d182136414855123c316484b51c0a8d20519444ea83069a2a10d2b340cd1a47ba30d292d1081c310653610d325852c94e0724398a532638cca90e28215701cd57064420f48308c11c31665ae203501854a0f428c6142146c0cdbc29a37ce6839010c5d6a98400f5f9069e184259e50816512c3d146260916294e00c517250748a38d24379c24c9a10429704812430949525881441247a3174a8aa080f2c2165a94b42a69c008428c2064c8820525ac6086268688b2c6cc1133c4e0c40c4fa0c1841b47f01005104dcaf810c61b5a8e66a0c20b15518c9244a942c31218279a50e00823cadc00e585294451a22851810a343a4c41e10b1638e43086cc9a1b56f0054a0e4c1ba881c4850b4634090207ce8bcd12295eb62053c60e2ad0c410ad208935c2a4a0c21938be5c51834c0e493b1c6186970cf410470a3f146146891928507801072c5da4004c9625341f8e06a0051a2a6b804063698b11f440460d4e8e5288e28486b9410254c2e8c1092f98d820730128253405f1031531dee832e50608a459c3c60a297841628168052f6a683912430b242d1c97189c3061060b66e080438d962635062c472dc052c60f59a08172a6cc067c48420412461c39414492c605102645668280630b993272b40851c507348868e249064a589e2c41e2a805516c112283265820c4971478d06187151955349949028949135ab66842e945a0c7d72ab5554a29e54c62ebbaee1dd1e6c40d2a007cec89803da702bc9c6ed4c6177d4ded45297d278e09107b6cdd83bee65fde953ce6f0e821ffe4bc7a50aa5d401fb05b0fd9ad7943b4739c1e4fb138e68d3fbdddb4f12d7d51dd7d7a1dc87901be9c1774d9b1889dd334aca8eac85f9dda4d59dc56d76da6a35b09723299452f6c2bbb7e22eda03a26606b5afec56aadb5ca7b57f2c472a002d340cc1a475268e9a1c915306596784183154e967cee113a0bfdc40088065daaeb6244a7642593b5ce7be909f90eba348926b4d8c46861e3ae502b3d940885163051210a9931c244a15b5888038837aed0c082182c7872e2b0d06965e3aeec518a195f9b6e7126862a927ed042298c0e9ca09482162fbe6c11c267944a5d9e6060baf8d0250a539719ca9875043c3b07c8a0637539b58301102fc2a03b40763028da32c41055a2e092041192cb19388861060635c0d0d0c406274692fc44f7ca49e54e764d588c51030b4f98f142195d56985636ed521d17355cccec249a9cc84d517cdd18442dacd0041352709022862a3470822a698290e28928599ab4c8b0347d917156b87cd181619dc5450b172698b6b855bbdf31f79c41aacdf6976a5ab661d8bdf7de8b8942e24c7519bba3b8ab66e570ef9d94d232a6bdb5a6ecb679dad75b5f5b05565a6b338c8809f004955e6bafad934ec1929e52ede3f6f17ec4ae69af6ddb5e75eec5302c579db96fad785a6cb196568a7bce39e714122dbdd65eeb85a495ce5a29b5d2c7a4e38d0a75dab505acd11f52ea11c31e839dd36a6d36597befbd76d27b6dad5a504a2bbd92a7b5bfb752ec5e5b27a5c1ccea0423a3246baf9df75e2d63429ee0a6b690c4b2add6a814365f2b25cb886b8572b616cf6e76313d626063f729714b2b6da6c3c8e2961fbb2029337985c46db54d81dd007d19a12f5b29a554fe524a8bd017b556530a84526dad0b853c6fed116be9776857eeb5768ad226eda4e8bdb3d65a3b0c7b7dc6302cab7383b79a56cc8af96e18ff00225f6c6343d8aebf40e88f6cdb8cddab5d1c64dbea23d2c7bc04637f20017b08db551b15f991c3eb55add50103905aeb2ce35a3b0226e39dc1d65a6fd3e71979a5fc78efbd265c8f8bb4f75a6badb537b379639732556b927b654a4a25f2c87a8ed51dc8dd630703fae3de256bd5c06217bb17bbd584df31db6b7ac4aad4a94dbb7a2c02a22063538f294ba98058cb3c82c8db47ee23f631fb78b76d7b711cf7aa23e7de304ccb32ccdadbddeeaef161d8077eb8f3363336e6c278cec70440d16ac786b6fdc4be8b61187631ecbbda7e3a34e92886e5cacf39e79c76d62be5e67836edb5a37d04623f26c08ad5b4ad592d39f15a6d3b56ef66a5e6c9a0e14073464a8fb64799d890f1baed7273da7be87d507dde72cbbcb5e7ade9d1ead0e7a55cb51ca4d02d184bc9a36519942f6b595547526a2fa59a35a5add65a4b3f3094ed0ee49ed287b451b0ce4e018688746b8918d05a2206ac269fd96a2ba5e0b696ca11b22d83b880b25d9fed7a45906b36466b25bad4f2c0430aab870f0cd9cd4391ab02d3e77efa5cbda4f3b9cf55471e08dcf5e0e6610457d75a6bcd6a9a50f2552ec02a66fe040b8725e6064fcc0f1d982a6d58c1609282d89b0e9b127cefbdf7526b2bd19d94068cb30ca395565a6fcd320ccb30ec5a5befbdf65ead5dcb627d47add44e7aefad9c4ce86da6738911bd9452249352acdebb894728a6bf036781b51f415279ba8f49e5c9973f924753ca62a4c6445f3bacd36cc6a61febab52a126f275fffac9304c072c669331bb7e26b9923776fdb47403f275446866408b98eabda73bc9be6b76ad15fb346d44fab8c7618b1f489d7b90e9e8137ba4cebd275e299db8832552cfa5cefdf602ba41d28c4694d10d0dd30f7d112df1e48c166390b16445cb91325d80484118356851c50decca1a45391c52cdc23281d919353b6388382e9a33b42d076f3d4cacb370e8c66c19d694e4c21e25521743520a7bcc181b198e8c0d1368666dc9a97cc69299b32587b1448f42393bdbdce3c54ae5cccae0964b5bc46cf1b2c797521b67b2cac9b893e2911349d5993dd2e49d790d3e1b724f037e1ef0810c8284844929053267117d4d17fddc54232181bee60d30e583223d3f395316fd2021a167be0193524ae9ce3c06f407067b1e15461e73d63a4d278916452bc812050c46704d24c103162fcab8d0e433df53798896285591823248a88082227ce67f8ca6b0cee4f13ae4548fdd1191d0173d5275d4e891268f3b94e708d5a13d6cc8638f4d5f65107a4488cafa8b10027d5197fc7449a1293df43ff43bf4405845995eee89c6964b43a4d97387209b8e08edd0262aa59460aa6c0c363d2a8c4c2f17cd56393509e64a7fb3bd5424b226a094a260c3a28a0f7fb1e52b5828e16c8b15d659385b2e6db961cb0a3693a6039e52da2ba594f2269846db520a3a91e7a97ee95791472ba9dcac8efea0daa553069892bf056065861eb8dcf046124bea94344a9c1146d31266f8cc7ffe352fab0b584a09d65a99a4d0b9c4cc0e02a4c8f392fe0c2c93dfa94eb4d7abce779cecfcf0d053758a7ca034e94443a99541ea07f405db9bfa021944de0ba40fea7301939cdfb177a6585d6a0b0b299ae1b0e5842d4ae8921635b44b75db964b5ad2d863ce455366db02e72769604fc430809643295d6db9a4258b9db75cd2e2c50a3943e9c3daac1de1c59c2737d47421c5b081850b54a280728518128a8c60d2a2e98c14ac10871b5be69c73fe354f65d468991395a4cc1c93a6ca5ce3461573ce34d29431e70c430d5691913bfa9a735279a202bc306754c7d025cbaf2f59b01151907630064034e852dd1726c8c81eec02cab29d01aeb5d65a6bad1c0897dfc00bbc265fd909ac9924b7b1e5992daf75431d3822836856beb20c09bee601d9bd9180f1ac90678ed4c99e7bec2cc32e5fd9af0794fd136dcd2ad68935ef2c849daa693bb8d65af17fa50a8f698b48314f34b1314d8b1731603f8b38ca355de1be6c60cce03155745d60304e644813851118428c592d91060c4ec2e8410dd2166a844a72705a94512b065305ab544761a50c154b5841c5081756aa20b38310268cc941cb32c607945dc166bf48d364c6889733bc84714202e369ed15ebd57246597117cbec8629e1858b3d666c94b72d97bc88d9bc8451a271196756d65b2e7919c24b933dbe9c6c444ed68c81610a1156d678c228090d432cd9f0461651b0133a2e8b0c862c8b951ab29f0720655e58902981c43aebb5e5121468405146ca1071e4608112518e825023b5040faa3042bc81ea1284092726464451f510c40fad26d05a4b05866d55db5a2b6fadb5d65a4ba594326751fa41cc910b2fece043c4fe070b2d2d6c5aa060210b52d11b453ed65a0c8cf298e9b5495292d9f20da03fc02dfff300c993a5bc804b96b7526b76005038b122a2931ae1574a299da7cfb5869c3db7ddd76863c795898aa15724c975c9cc606a8b342f50810c42b57d42fac02cd3c6fe4516f4854d61c55825fac2b4ac72217d60cfc4dac5bc003bb65dd1c66e4b50435f98556363f64efb996663338321ed760b40218fd6881ebb35b2495031d6c81a59236b44c5689666d1a34ac9de1d7bb542feb062c81776acd3f62cacc71e3df658a56c4cfb32e661afda36491fd80b30060a15b3b15328540aa542916852e5913eb30334d93e13b13dbdca247d601f801af9dea649b384fed85230a22f5026153b3ddab65ffe188936f636c872386f834dfb764b792c525151d1131fee973fb4675996651b70dda66f26d67dafd592a6529218a626339d48c2f7129ca0fba75d15903e2474ffb4f741a7b5aa03844b562633354d65aa4d4c26132229549064d3911090541e2b8100e9f9f9a0889105a080b4b16b99f517962ada48499587c8077b2712f958a5ca637db05b3195472231d92619645e231b14e4b66ddbb66d18639cc3898a86a5a03285954476045602cb61b8252611f417898f096b035765d3ef68f4af3d7c4d505c45b16af9b5a50915e877e8bf0105a25f3863dd697b26cf2db7a64756766dd5e3cb8aedf0b4b1465b69db4fe185beec311629f5288451795fb1a46d8f445f560a912ecd0b98986a533553d3142d9141662daa45754935aa4cea5185428fe8118522850a52920c32003499be8ad8961e55aa3763260d2da24ba81165a28494a42486a9691a4d2326f36842914cdbc8911090541e8954349750a51d203d3f1f1459000ad97eac52acb5d65a1f4be4635f912a8ff5b1af4995472255a52a460699d608097f4084b966db63216448b673af80f64c9720bbe69225d0be6997943e52d472d5b90560dab90772fffbd77d26caaa4def83ecb3005b7c5079a8cfc5303d8033f9526a51c08ee7d4d3685e801dfb4906a17aba30050d53d08034461e659a0f365abb02609143a8489066120f774c4f23d6983f4df372ee582cfc4d4fa4aa83bd005a6499c1089aa6076026df3fc94a7b16d11fe3c4553bd6b4d35df7f438c8aecd14e80bfb5c72fa21d34b1fadeacc6934a14c238c0ba9643a2bc59cc897963fb4db2d87beea35ed47fac8aca669ade6caaab2566ab5add7a67d827f6410fa9c1f1964cbdd77b6c4a23639d86acd913e00804949a5adf5950c6cefcd979c894c76764a3dcff348d8f81ea65d873b916863b1ba4094cdb966c889a22ed4ac91a1053b5825512c01070d60b098e20a0c0bd110362831650d18274a459061faac9002052bc400260a1042a081c10517d860610d2c658cf8382b34e8619a62a0a832a16822b37200b65c82420628967c415fdaddc192ef954ab0567950c7581bdbc180fef08edde6d85f79402cc79f9de5cc62617c4ceca99708782957a5b25172d26e733f3d6a4a4e5a12196dede189f6cfd6f498891b6c7ac71331a02ffab2f7db6ed946945507e3ab442192be26c6c7383f7525e04ff9a913c94f6922e04f5a7af8f4d489d85c755262a3d2b9ea58ac5d444e0f531aa565d5d9b0877f6d2cbfea583d0a0901318146d4d1ac851f68e6aeb7377b565bd7543fa57e739bd55dff8e3d31fc27caba9a73ce39e79c33bcd4c7bc21ddbd0e3cedd33eedd33eedfbb42b83dabba6ede81dfa924472681cfdaae35d13e71a162b6bd74a721cc713b587e2089e7aa9672f75cffb77dbfd7c979a36e6ad799ae7791f775ce03b3dba3ae82ef5e802350773cdf6f4fed99e775707a0bca7bbcb4df45f498ee37c7ae09f4f248706e79a2bc95164cbe3e822bbf3721c47490efdb325a8c79fdd81c752efc4d1f374ea9a0e4a3deba0d53521209e1602b253dfeaf42e1b6da5fabda6c71b2de9cbe696be6cf43854b71422f538b7eaa74b4f88eaa78f26d827f993269ebc7fdde99abcf74f75fa3d5d93f73a3dded377f9b54ebaf5dbba26b6beeffbbeef071aef737b97557a97b5ab2390fd5d8ae3cf9697abdba42e2bcfe9b2f264d7b5caf3dfb06c522e3dee6c79a35b7aa5c76ca3557a6469941eafc7d7fe1eeaf195f5b833ee7cbf28abce872fc5510848e779d57ba647ce133b21dff1a779e05c9f488ef3d8218afa57a26387d681c343cc712de254cfd3e3c411f573883c7e51bc0e7187f53cd8401fe74a783cc7ade78a803ece89f0788eebf84f0400cfd1a1af65d55192a38bb6f769972b02bf78223abee3bfa8659557a2e33b340f2d7a407577f73c0f76e80b1f73408473f14a727c07cec513c1b9a8f189e4f80efdaa83bfe3e289f0b8dea1651535be121e3a571d7cadb1f89fc88eeb10b5acc757b243ebd040aa0ece818f23ca8a5f8580d0f7d49f4d5f8580ec11a6962eda728265e501c78cf5387778aff388f614b153713b7d28565dbbaeebf0b3e3530f886ece041fe063c713eb6eb3acdd43f1d5753afc15f36936697d28da67b1041b6862b7181fe35f5113626d74344138b13989b24fd4aa4ea6b3797aec19360ab1d0e4b931cc520c338125d2688603be3e920d79069ec7f71ecb9d251827eca53b6de4196ec986ccc2822ac6e862830b4aaed8c0135e7421238c2154908598093c39b3022e96929c11e589329ae802081ad4d0018ca32359460f4d25a40003952c4848e00d16604041195eb8a0b156bee0e0040b4b907200838a214a88418625a614f1644a0bb01c0961a50c1b5f8c943843456ec1a2868c384ec0658d9a2aec1629b46861c5145058b1660a294db08023891933a02843c51425a8028412264a0882cb1701a823c2305ce212656389b730bcea74f2c2a39ef2bc5085ba867a28ca9d42e10c1b92611587e26877f8ce03cafff4e9f7f60454c1673d412dbd21197d7d5a236135330bd822d919ea18f7542a8ed9e9e73c0888363da63614a39ec963f1c39835be36c677db36ef5c786939ee2008de8ddb384e3b287affc431d4423db6b7c18deb193e2a75ca2d3d6a298dd236aa6dfbf52ce0a238dbb12beb50ddb30c9e0efefb5c5f2aa55d3f72a7de81dca913ed9398654fa1ce9d32f027916867e033783023b2b773e2d8ed4d8f423da4dd55deae68a7644ac6c9f1d4ff1dd771497f881fedd6813128d2af4455d71d14555fbd87a2502814ca6501fc951e5d546e227b75941e896cd4b1065715fc3ed0c8c63fb3a3f4221426b5d6ba1255c7787a40a8af5a5f8116e8a12a71eca152a954dad5d244785cab8ef546bd0df2c32ddc36cc23fbc2f09ec7c3ebc22edcee8979753c3b1e1b15a54f4fcdbc07b87e7350a4cfbc1f7ad56df70c8b63eb9dde64724bafa80e72fd460789287114eab112c79616eab15d5ad2d7afd2a3508f2d5e0289dad2d7f577e8d041698e1c4f3d47ebb895e3e62d16fdcd5b396e58add3160e0e0e0e7dabd56a712d6e4aceeef26087a794869803eb11a95d6aae567a05825d0a5c9202ca6e618e258e3d36eb37e24864dfb45aa73f513dbe72725a3838bb8542e9d34fabd6e94aab8e52b57e6a5d521e7dd525e569e931ffe6a76bb1a7b244f91b117b16bbdb84dfc25feb0185dfc3e959409fc7310f8c87ebdeb1beab955e81e06a14eab1c37b77f5d4f07b0f0dbbccf380883e8ff750cc83f2f8491cbbed1d6bf155677a435a5aa32fd4a94a7c61ab1e8ab8763abc39d16e89e377eb3654bc69fd445554a5ba4acc0fc594468940b6773c3bfa3dcc5ad257d683488f1d549ff02cc5619c737610f0cd345607c2be39206c39112d8ff59b77a9efc79fa83a2886299b87aa87df10d44fff0e822008822a0d84d227f03df51bbfcbb37efac42d6f600ebfeffb50cf27105c280df481b0f3e5066187dfb18da5627dd341ac9f7450ea5b98b359ae2ee5e19bae5be1aff00aaf56ab70f52dc4abd5b75578306cad74abd5021f8661188644a0f448b451a77fe20842a8411004433004c383c701c130c409f598fa77d571403d763fbda79e44f94fc49e1247a19c9ddf1d750ac3d34371ccd9e1290c73e84b26b5e817c7abd65a8becfbaab5c84bca4b8acd53aa7b5fb1c0d33b16ea955f5d98f39637d5435557646f5fce397fe12bcc458a64d54ba57aa8835859147abdb6eab559ab8d65736fb5ea3a1b1b9bce267707ffd9e40e638c3b295df7f9ae03354dd3b2fec4f15564775deb2c1bd6eeba9f342d6716eb147e77791904c1fcda75af5791d71e61ba5171a687dcfaccd6aa734488754488e52488cd736d2dad4b81a88379c8e9e173d7a134d029c4db7644d3f276646f478e1c4109b13621d6de8458db25c4da36cff33ccff33ccfebba94a753a95410ac231bbcac3c398e3ae931e7c8bbd3423d6a422c168b455fac9d23ac3dc2bc6744cedb6a96e26cdbee901076f66f3a847d3f644318b299f6b01305f52de5faea36adeef9db7116f13711ecbab76aadb582b8b39b7872610db4792ed77b68b7e177216c073fed3abdeb4208c175dce921eb7275767776bb6cd7a552a9542a95fa964a7d4b811b2aa5512854144dd3344dd3342d049e1c3c38a75027d4a0a43a9aa6816298c18799beecc65acbf22198d943b5453b366a09da4db88f45b2eda80da9c7a8b608b0cf4420a4f4614318aa657cd852e7b0f7d56d5a1dea5d0b757048f8eff9d3dd779438869ff7d3e77d1d0a4977d075da484e1a2894d20792f0f350de3f1de4fda4835ab56bad3056e1eeb853617c7c3b4ec4ddf78b3b15c61fe65258a7525dd7751d8f0fa0778af1fcf6897116bf4f8f44fb7bd79d8e42853f89767720f86ea87e394f6fc8f7bd13470d28ec1e8a22cc351becb2f401eaa1bab1de644e21b936cd1ea2b523b393b3eda8610d847d2f76b18b3d47e3badb69cad2d9274a0a82500e1115a19c9d9a46b5170ac6d8fb865abd75dc850771289e9ebb6f841dfb043eccd979cb39e72dfcf7afa786e2261f8adb087e039f6f314f48fea7693987e197ba500e08fbfb08c2060f7e7b4fddb00d3c69a11cbb09e508e5ec55d6a350ceeef0d6a1ee373db630cebf395f9b5f1bd6ddf2c1f0f3bc5fcffbb68ddbbe6d83927510a65afe7c0ec2d7404dd3349c03c20e553a5f9571706cbecaf4f58da99d59396795f85d521ed7a7ba4b945427ebb1930f45ec287114ca398956d3beef7bce393bbfa78222dd591cbb679ff731677b5fa7857236d6da2527e63de680b0e56dce1ea1b2e8a7064b8a6dadb5ca3a270aa8941f299364924cd292b4242d494b82425f55288421fa4ad292b4244dd358fb47a23c497a3179b22469c98bd2177dbda418e19e9e06fc3ce008d6a494af63edc5e51dcdfa8015670ad368be405f1aab6a1bc8922a797a9958e8abfe24431e279609a5ead41e69f24fa7a5723d552a2391c8a0c00ad98a148a54c872690b35f33956ec58a1d4a9d41aa17a070806776a0c300052e915e5ae4f80156f670a26112c39e20c105bc07186924fcdd28592121c70bcd084059f7a23475a70bd88186ed0018b3698b0410c9f8f853558dae0a14c1c4f7cea334b534af57b2a4f284a9fa42c7dd4ba268a302d80c20b2f6a7c3868e28912121a323b3ce153df5379aec516483bb001868c1ad694004493262ab40087167cea2f60227f53db050ba60017144a3043852c767803c9d1529927258c4901cd1a50dc283c09c515139ec0ce300090bd030609d4964b609ef0c02491724055c9d618a135a0e7e701acb3c0306131798166531ada6052d3821b4e468072040f3b58f9c18738b2c49126cb1a2539382e4436365746113b4764100db39f395207ab59b6e5e50b3b6284fec0ee7b3ed8a202b282b12d0bb2e4c912902f2160153ef8481d7b2c76b14bdb06b1ab01b620db5aecea02481fd600db4260d78c0dd9f5d69a1d57cf033007846db3d4c1ce894634ed3e6755cdae3c9a587b69f6c49176b1cc666832e746cea2c8f7087f916696d064a68aa3ccca5fc2d8e34b498a00bac0c2461059a42891c17921862e3a1c51a1430f2fdc197838a62dcdcbca972abe8cc9b65cfa12c509195851caa2091ac29cf0041c417811461138a4f1c28c2af7891ddc981e59ae28ca218a174a3e4835ac58a30217b2483ae3040d2e70163452dc1699a68694316648434b5218274dbcf0418829493829218d222e4b1a2ae02a1c29808105a0e3a8840c596873d22106491000002316002020100c87c3e1a0501245c222e70e140010759c44624e980904c22847411cc420639041c618430000919119a2a103d53cd2f32a64f9ddcd9eb4e7ac9e6430a891382849f415451df91b8fe4cf8538c3bd2bdfb4b6778df5ba72fcce6f119e5f16e1899001c9c598f3330fecf7adf39e9632896afc12c6ae5ba8888fe40aa9a7deaa7b64cec9fdf4906cb419365543d84c44b12e35f27b4b4eaf44dca39037071bd9f6d4bf60f8b7c92c0a749fcbc28bf8f6c03e154b1278ab3ac05ba1037aeca2e67bc8894a8e913c1ec93a2e89ed97f4652b61150cd48235ad01424f866932b947fa7ff42e994a5781a96103337d338766f5d8ad85f4742989570086a426b0091b8be5652acb88ee4b38f70dfa080c22bda06e446e3816a7d216f199837b2f504f4f3c883338bcd0eac0512389d3a745befe564c845e2153eed5b4cceee00e0fdae29a5dc89c5bf342bb5b5c6d20ce2bdfc961e44685afb5236588fd6c75b9cdfbf9470cb00f07c3cb031c7c415de8e2751589266a4736b61c12dc47006ce9b06e8a1044fcf5e0f0cc4044231df29081890ce20f7fb83f350b4a1ac4fb8f07b78ebb47414fa34af5a7cc622046901dd3edb1736ea24baca6a43a4d11916b7788e9e3dd8e8ffc6ae91207f6892e8b858693f8123b6f197a9452ede015db810a69c6f5ddb588c3011d3a378b38dc45274afdc7d37ce6d7dc4691f04abc657031fe1ad95b226c98b4facb36995c96493f67549b1d51fa8188d1ab584dc453647e313c6ca93ee4a55bf657acc40acff8f08d8f94529f31ae88bca547a4b7897082d542e83cec4878122aab06b92fcc44e22ab4aee62eaec7ccd2c2515a2d24dd620b8c4fd533ff91c33f2f9997fd9a85591861005fed15e18c089a51cae810ae19d4de54319def3c6fefc6bcf321a04a17197fcbca8480980991d150816d05143a210a392508e39616068a6ef2c55c29bfaf50c880183ccb23813b8b37471511dc4eeb731c4fad0822768cab50131d5930e90587ec8b5d10d11e7e4ab853851063a418564f6eb031994deb900bcc5541b4e03fef6c8c9585abe3213c5a970fdd12b313dbef2ed98462ff39aad3de099318f3c1977eebceb93e49c7e967d358c84fb649e38addba7948e4557cb3321678f9a5a3f1faa2ee557f5e5589100982fd4c400990628852ab9940192b0e23196edc12a0805a5dfd6edb03cf32066619a43710199f56e52114b7e17c4008df5a6caf13d8b74264e414f825c64e056cd0d04e44a3125eee9cccc7c04e8c187190922dfb7f4aa20aa2b0d3f8de069d0dff78b429d879ab648b68438c6292674ab43de38046ac916ef1105742bec5961597a7a31d04f8e77da303dba9a3caf272bed54e094becaf1021957b52d7368f2ea066cfae6a7846dd83d009e5f94473d47296e8d31f54e152fc42d60d9817959f75a7ba71ea1cc0d2d730aa2c034745a3a512eefc31255a9bd7928e45ff99a3131c182df8ceb2cb061398ed3d6be1338ec28d23ec504de8432453f9b8e4201302ed4fbacece54017c5675ea6d01feb4ac457ed31cac39e997a74078ad3d2988c3d105434e3f3f3ffbf29dfdbfc45f73a63eaa122ffc50858addc59964c564776144773308fe740721bd9ff2e8279cd7fc5d887853d78644d7bac8fcde2a0b5e30d69ad7d20af6d18629dbc0dbb3fe474496217c234edeba3a02e84f5bae7510ac1b6ff26c958dc3629dec2697d5ed85a041573aa31a68ea2d2cb4c7f143bb69a0acfbc3841e50a1e46b0131d47799ec71ba999f26bd21620472db62e8ec1530f9b9a9e44a055717eb412288beef5f50613613edb38392615d2e2821b88d1b8aacac5a176e8b43b70acbcccf4e6df6d9e3d703979b29422153a1059a14355055ac0d26ac652e84015e01c65c4834e3bcc790b438882484ea82aa55678fee87ba388c9caed566a2c296f5fbe692cc4df103d8269c09acda9c82926a253d72931fdbfb0b42f416a39eba5a1a83a8c851c8dda4959cd64d8a19b554b4148e1143ee1188274b2dfc5143390aa2088505382df54743c7c305c9c7f5c4fdf12cee2b834f6f45b1b07904d4593f9c86206427702a56f7deee69ef0d5f3f3cd6c0a64b8e80f618a2928234a3169ddc5f4c891d1f8142f942fcf608481dc0e46ac43e42f81128037baf5476f1f456ac2545e57f040a447c611c9a927da1c36323bc62b328b053e9e40810417c0621e56faed65bd7c9de42b825e151cb30b243414740f259dc6038d3ad1fb4d95c9302c4b7935edcbe2370d8e27dae84a54079f2b37a6b98281aeebebef5ce5a5c04c237d9a07a0cabd5578aa7205b415a01d6c3e90a40d2447358a16fffc14a4156aea8dabf7295305095ab025a1329ff43eecc0c7641df5957b5c05f318db0a545e6474d024ea0c058665e706603299a140aa6220ea52410010f10e7dd913ee81a78d915bfcf07d3278122f5e0c9ae3659f41f7df3967e005279c3bc8b06f2dc73458ed045dfb57e0a7c295a013df4bfa782a0d1f40fa3461d91643070ef7f6f06e584dffc5cf58b15f8441dc54ce7e7b7b8844a6465c51ffd37460a2e8a578c952ee4163484e3d060d3167ac657e98117d3132268aaddc0c8982b3f214d265e1870fcaa11b0af0113903bedd7f8848171275c7d32aeef5cfe631b3f0ceeeca8f19e83e1839109a96a5fedb307d5be1497d7a62b92e14b1ffbd8875015b3102fb83abbae86de9f647b08812e8a1e2b1e2cebc91b1318d574a39b101ea17d3deac48dd5fd0b5c022b9f13ece802795d74769a6da88fe7f174473f99e8bb0ec269470a88a69007559f529994cade9505c2631e351a99341dd9f1d1575871e43da545ecc767da0f272f359ca59222c5ba4945ce2bf1c57897cf67d649c14df0181feba6ed45cee117811812ffcac37231723abe6fc4d71e082886afdee3f06bad35efe73fb5cbf6be631f210416b45ae7163a03e4574c1dc368035c1380cb84f3a0adec401c6b5411e73af4c5465f05464fae05bf3ddf4fb1cdfe1d918ca053788648d30628dd071a6996080fce364c1fc53074c7d77b15ee0aaf50340a85c048a3b57c5ba07471c389db58ddde4858baa69ce229f31de121608e5e2b19af9f0059001c4b290d6c0be9cde7966882598cc5615d4b1974ca9d77f3dba3ccec9481d962c9522678a527e430ba7b850f6a399d3711a561e16f756e24f502af47d537a7aab56b2929e2588fcdc68cff9e740400593c9cabbbcee707ccd5b673821d410758e24b2c8fead9f213f3f66647547d230d4b0d46b00f1826b57c14dae220a0b0383cb09702e6f0421b44b800ce4cb99d52bf08abaf1d2b90feea8be01cb8d57d6143627b0122db4e4453810dfb0768605a35927d01cbd269cec09450cd54382374519f60131862aae38161b480afa4098941fe06352059eb2fad7d7f92472f5209407f29967762f8a7398b662f2a07308362448ac6ecccf7fed231670038ec9e1caa29f78fa60a37fda56d05fca97b02c782572b651b9d945cb9fed2bbcdbd6a6b27db5f8a0e4e5e246d10d405d04e76c28af32ba53beea7307e9d799fb35ffaea224b11c9bacec44f6cd676a62ca96e5b62aa947f4f84bcfbd7e29d35821da6e92aab73d4dbff8591c9d5987ec7906dc0be0ee7984a56f9b1cea86a3561ea307d49700bc76bb9feea0cf0ed24d54e2dbed5994ebed0aacbd43573c674bea0654ebbf4ec4cbcd8811620d6cc23025be89f965c48fa794cea5d6b4017ac718c821b5f77ef88c623bc90cd788115529a2aea3915257ad6e9f61bb69a1e272460aab6ba432664889e06a079c69df0fb7682082c329405534e088bd9003a4325d41df2f469dadddf54236ecf2446697901394823861322ae3c22fa838957a468d150303510a0d920fb5a756b904de073992942a6169a787a71d6079e761ed1c0207d42e8af2291ed38192159faab763662337225eff40bead88629f25de7f122917b660562776ab8188235446d40ede6c2591c55fa62cdd9bc5a5f8c42e501388948ef342e999a948824f7eca96c9bfa62761a4844be8f44c21de0676dd451f16c4e1d167926b6212a0d23685d6509442ebb1d45dcf177074ad32010293c91670ac894247da7af957c432072b4eb4db1995627b068d299e974dce8ce2f57100291dd39d4726202915a55c199e80ca443205221d79b4a3887049995a151e9f9dab3a98535e9ac9f602038bcb93d6fba2e433d51fbf8132cf8b158acc91619142f92ce33b3df431486a45359d7592e09198b6060294a5474a6b8e3f428b024887c1205ecbc60a9f0cc0a17aa7cb96bcaeb04d85c23b7e03c19b3b870c83ae7a2f1c15c0033f8346531423ba378592785bd5940ec93d75d4e712b0950e7fcfe7ece14efb90781e07c9244b2269188c527691de70452731204786ece486f4edc5b0346185914f8d1229cb31615a0233ed940c9191ed61052f7e29cb4aa54facf1b5ee264524d612925cde0cdf41bbb4fac69cad4424f100baf5127178c2dee431d01d1417602cf28804e7ad30edb3ba6046a18cf60058d12f2bda9a3dc1dee61734d7528669506f9cc68527652c75425ad17c7824e9ad6d39949e9de2590bd5fac725f42dda7888ad81fa81b5b554ba807b773f6f5a2b46cb311b01797b742d39942dfabdfad5d0540a1d31cc032e768b46276d27e955621704ba87c2a63660c9c6a566a1696fb7cd5cd00b3b3450f038bd45832981001013c2de49309ed6902346d7638f6881f5cdea954a092210ef5e519839b0b52dbc3b019d4dcb8ba08afa65b909dff738c991170544eff093a51a3c7c165207a1c5ba0f22ad922082857d54c282eab8b2240a4d982de1705d7e21d983ea8932021ce540f3bb84392dfd83180f60a9fce347f8380c27c501b64552a42ec8364dc85259954a048d02da6ef7a830cc2d76d870282e5bee2d09754732e0daa1ab44230bb390f68a486a0e079f72c13c099a8614602a04ae8d022d4d9a252fc732767cacf42bd835f73305e74c6e52e4171775c03d83dc37cde9ed537c331d816f81f4bba25dbe44c102640d6db1c554787187c76e55efb98ef3f75525955eba8eae2e1fcb456133e0be5b9cdce0e9721d6052f2c9bc715b7b216501708f3d9359ff2892bdf5b90a2b827363d19808c8a162b0509c0c860e5e37b739ddf2c8483bc1d3b057071bfe7f083db4595d8ef0175727e236173a21af9629874e020122b4a50ea3c656eeba9c7925e04c295decc43f2e1dec46933df1e33d2a71345906f8874c35aefbc58ef2b1c511598b9fcaede30f43284ec5f3a9749dee5ff483ade21b0d28ad91f20a6ed543b2cf394978a4206f48a7413438a16333fbc55d3287831c14e1091bd5558529c093eb49f2cce1c18e273d412095e8f3684bcef29ed8a3c6153c7ce0c2c8eab5708caa4dfed30b7fe0d323d0d8203f38753af28f8672972ac1b3038f7402a46af22c038aa0f9887d10ee60cb33b8bd445c442f1c52a50672a6d1d6737747962881fe3296684744ff1790143ea4452e54514c231194222a476741018342d603d4b6a9f72370e984d951c7e98d53ff515f633402da4fbb41b084241840657775a650154b5a11c0c08cfad58d2c690770402c9f3d90fe1a30c80d48658017def77c43d27a2961313e9a6447402ff8bace77af2ca43596f1218b75a5b86c63bee1b1f29fe4936097dc5a4de16e29253c612858a3e8a7eee2ceb9f5ae0013ba9988f14e5cac068950c6a22bae9963687b707ad0d4e6776acd7c67a9be9c9994e85ccfdb4460f7866b0663919125ce2e59c5da57555b4bff04374f4ca0c2b30f4b08a89ce8ba88b8ba63e85eb113746e2ca46fe0747208dd20a74a07831a1ad94924c13f3d070929beb2b41f3991cb19fd2a728855010055399322b5a403aa3b0c0ac1174a96ae89aed96cb41ffc31b9ef5c8a0915bb17e2dad03951155ec9e557935c8ea043db8c5c9931ab7eb656c9583041994d071025efc9db9cf327b3219ac07f51b4098a13c8dfae340fc52c6a0a7d02adcf848b46004df48b3566c99ca8637f01d9dea726d1d1440e73adf38890ac62e71984e4559ce4b475b0eb509cfc172059ed5d41e0466e3946b0d61d38a582ca36fa150192ba27ebf014cdd2eac6005ab0f294a683206080104a90938b3e427da6d6b4c5dd83248e1289734631e3d2606393c1a450957175b86c4186eee4a2e74bebb4f4d4d8124eb18e8b3bfd8d288ca34239fdcfcde1a45daf8054db866c8546a0ebeb598c076d881dcff194559a8485eed59946046765b8ca2374fa69acf6143e3746544627c4fa9ca60b6a9e1e03428bd1892c4e156df3e2de64031be57926e890147412978550ab54216b12aed0fce3f8284978ee0da8295cfefb133accf91e1061d9887775da6c0e2fc9770a418a93ad2bcb92b19787b76d9bce806c61bb3364087e3c493fae3647ba74e9c29c163ab7a41f4a6f0e69d6e84feeb60c577b01fd462252860fad9855131b6566baac3ce118bbb98add7f7840bb3094187cdb15170187b47ae5f1e2bf6f533923dde62bd852f707b513c60452bcb060c854a0fe7877e7a583a875521a1282e4df448b241a5c511cb6a4cc5137e1789f95a88d4fd46151fa8d0c6a35d29cad1721019e5d490f7389891722de6c4c725e0935f2b007048da88a5778caf0a60f393b77db243af30a53a0409dff9213489b7d340b8daef868d8c7b6540ca3674abdfa706cd82a0c55547280be6de0ba21fd5eea1510e054fec626e2097e4f08e00891d4d1b69c57f5d47c8adbdc97ef24712a2e5c38e958f6453006f3967e724e307062107f6b96ad0766e9d4e2d9c626d0a4138ca26e9b05902b5f66aad737d96e1178763b4c149d29c28e91d43801244f1ea6de48d764c4644ca8ad80ff0ad5a36f5bf3cbd04e3df981a43953bac60fb7302c8754acb34c4d24d24a39718c8835a0b92d23f4eb207eff06f4457c9005d1f6985c1bc4b23f1ad43af0b0921d9a2996770da3e966fe65d8815521e27a70b7b38acdc58676e23f220cb538ff2cd04e8412931609d7bb085a2a08f9dbdaefa87c1e314dc220a8e3affc9e3892384882a0c5b77439f87496b4ef222015f905bd8077612a7d8c83bec933801cbbd35a9816bceaaa522d5fb553735255b3a2f5faf542aeb8a184c38a143bc5de9957de4f92a5ab9c097061bd3ae3cada2692915478866e90831597821fdafca7e314a162abab7db911cc8c659afc547f2813ecf448880b91dc1f56ebc5b2a26a46c5e15037df484118582f9d0df163857e26d30417e6f67eb965eba5528d6154eafe3f355a2a849f89c3d70cefd3140573cc686a65f6a79576642b10b21746f929a60ab6062ca15818f5248557b91d3b24e6c7ad97890c7f031b19307e4ef64135e85b19c308e1566e01d098831f222401590ce088bedb83ad2a72eaa7d463451f616c08a5a45265984c8f44e84bcc330b71bf0b66e7dad0d7c1e6807056bd0d555ff8b148535ed0549dcac0b413c13738a6eaefa3610cd4b7c6f788395a4e079badbf2dd24444c06336927da4218c3cdde85bf51628f12de1e6f3ef8296562521d33e2061c59e187a31fdb450114b9c0f80e420e060c4dbf20601f0cd8a2b34f41c6831dfce5aa690f0eb068554ae4b4408f4d851b1b9213fdf026bd9002da984b9d8753d911e41b7819c0dd1ece2730d7565333c8a4dbce18ab77e590f101e8d3aee9cb871d1c54f8e810b8d947d02dabc59c5eb0616d7163f711047ee5f9f8db53865ad96e82cf5dc4b4fd4a3e2c6ca42393c1feca0c7869aa6a19f1a195fb6247a17829dd70a03f066c869582c0015cc53622e3ed53ef104516ec6b8bbe2c63afdb19fab149a7c5beadd8601adc865b38f96143771ef56d385ee1f062ecdb9cf8d7756c126ec491ee38d33024a80473c439e1bca9be47ad5cdc7294568f77071ac7686129724de9e847024bcce9edda35baec8eb97b97ea3935091f036944fe8988d6979f5eefd849d646572df8139b1bc71c8ddc748201b9fe403c4899ce3f95df8aee872e6e219cd62bb096183fce4abd3aa4292c70c371a3b2f44431a16cbc29940dc7b31660aff478e27d79d43b75b0bca74bddddb87a6b4f87e07ab22a27716bc40172f1d1041bb5474bcdbf7f985c6c7ee93413cae1d52fc893f4263cb93dd1757bf083307d3960202e74e604553aebe3887ab2abeda776537b18e6cf9e1da0ee90c9c119b08ad888571dd0518cc04a5fdbe3f13070013f09949b9cd8b503b3e9d4425465a1c0394bf5014abea625e80d8e7ff51c284f6e91d8a09191eaf8afe265ee3cd26ca4001b749902f882873ebe726c973d8691fe43cd52560ecf1381b62e1f946d689dac2f7d55a5273a4e168da8f107163ab5b49e1eeeccec46ed812acb70d1c37ce224896078a7a1fb3f7a831ea503dcd6915462c11588241bc62047441a0234200b0a5f8a87c1e09c2f21829f13ee6c8183cf164418cecbc2e7aee6715b6995645bf9bf920ebd567ec1f0b57eefb4d0ef95d0a1a2211a5484ed278ebc19b6f511e1859b645e0cf1b3fd0810f6fb8f3ebdcb925ea3fbf7eebdb02ce48f2cb80a8659f550f0cb7b5ce422ae650e274dba1dac3fced9854a957cc51f8cfe152da58048b99091d9f5539bd81b68e82de29aad8bd85260ce7b76586c573adedc77c4dc9c639f9a6a81e520f8c33772857d13cd1fbb0f782708a76b5ae7ea3a02d1c607836640cb8457545ceb4a9fac745057a4ee12556329816b3fc97c9c8176caedfb01be52eebcff14b4ea6aeb36a5c665b064d1c5302e2b76657f32ae0f31008e45ccbc09c4931e060de24c6ce30651e45598660e405dd9760fd9b5c9d1cd8f2b09e8f4f26bc2078ce27a46a4f278ad9a94c5e76290369f07f843130b19ec2b32011d8302b90c6a6588b3b60cf8ff694381a0b472d19e57130641191f0047d3dfd0d00c9a4dddcb9532d76d22d59a18d74d65fd21820f1c883c06d6654f3dac198a9875a5d42fddc2a4072bfc98181a00bba5d9574fa6a37618191d5884c14d5ff1e999e54f6759b8d1b01c0fb23239da356fb587448449fc90ed0284220f4b58900b6ee2a7c1b4caeaff980ccb334871ad0e9110b4de23233aa24a0f071215985105af4a431563fbce53817fa6a4dd39b1749a97de50550529e30cc713a52e84834604c217f00f23b4973ab9206deb16469974435183c3026b8ec9861bb5d0c9ac304a97f4f4d96e84192d30d4c01409d1f81e6013134fc45f077348e32e5fa792e64123b63b4f4932408f415d743b12c4bfd1b1ef61f97fa10c310a7595c9f30afaf1aae2480b4e83cfd57762c0222ec878f935490d6d797d1e3549068f5f78abce74fcab81b8f6378976e2815adebed20a07c4e6e97551f81f891dc8f4a3681beea06d3807ae92677370547314bdf9b1a27960ef07063ed101f5e6ec8b6e1edf49bf79f57860ed1fd1244a097158c9f735fe33511c3708479f89246f7307023a8f221fca5d70ce41fdb934e5ac6240e82940a63429d6c674b4ba48ac57449f9391f80ea6a1e646bb86526dcdf007c7c739e9a9641b610b3d8077e124112ec2abbd76b2df4e4af820bfa70899ce1cd62331afc629727eb4457826173982a2666cb756600265034140fa3240ccbc6b90fe6e92db9f8c3e26644d0269fab16507521a3e9e5491319cbe7df68c1c1c1f65585c4181306a3cbdceb582f7ae6c9643124bff93e225187386a33081456994197358093bf4725d68e8657b4c64d3d1f42b4aaf4dc02ab19a8b79506ba96094ec4e5edf03324f1c43d9a6a69f32c9e94074afcec8964c2c8c3dd89184d15d627075bc29c703f68967536267bb9285275b9d5906798545091b5a1946363685c3e5470fb788ba1c1afc852d1080ed3d0dff93aeb38b4da4e40c990b10643d921fda60e40173a631388c591e9e3eaf7e11d109278b1da36496609c44c75d1fe5b51073b984e17c252cb6aef322a2500e0c588110827772baf26d2a42b0e6ff6a477d3bcbee330ef0e0fe16f8fdaeaf35ec81a8072eb3e12cac3c9805bd651fabed757c74c5feb0bb894998fa00b1562555c957ecbee4dac4bfd8d044f4ac9071c51f8befae34d1ef66eb8e268c206a406e3e73416d98c6df4d885f3b96ec827b96a3198608647f6dac0bc4a50654375b5d9033920109587a565024174110c63dfd70e6b5323ab8560e38cc1d34d588dd74868101067e578cbb61c09687172d314cebb8b8646dedf2c94fcfb51e7cec72cc08f9b98c5cbefdcb2719b27f8a2bf088e0c787f685a418fd7e9c8bd180458be39ee23af45f93e18aa65f674af0ab8509f18aba9a8737df32595501bff3534c3215ded5980347ea005d9970a9bd3f74025fdcd59692ec92a9b722e5bd920bb24eae813cc29ec73d0a85757a35a143b2625163a5321b6772f985e590cc0dfe14d5e779b80f0021497cc0e5e3603487f488b9bc82bca719aba94763b51933ec9a63803b9d78d1f48b43bee1572e0119de927056cf61a9dc4b79569d356152839ccd70b6a07d347dc856820a4f3ac13a16401ca1005b3c10b860e73ee15efdafd062f2bca07286e33ee26d04ba7594b55316d78bbb21dfbfdf2b5ab630c96040fbdfc337a41c94d7e63e7cd23b68bc536abf38cdc404908f58a14197083352160943ccd9dd92e79c0df9ec909fc83fb2e410f61fdfcd5663807328f19680c600a559a9484be8a43f8cfeee5c00cc045d38615c0d33ffdd52c862fa517ad8527af79bc99b64e8e27a9c0b87facf608537ee683286f10ba21a7d3c95762ca0203ef50b0bac7408f15d4988787ed498afef79f8d9231700922c1d541ec4e908b32bddc65a13cb8d9c6871a5a7e601a2037330814bf83bddfb2b02b0433596cb1888307d479ffd3999dba558ecb400acecc4ccd169715b984701811ba53a5ce6b4f102db471ff0633df561f3b2072ca028c2ad0e19d6e35dc25b54b433aad418909a8d3c2e166830454105e50097dadb75735d36228b32aba7ba2b1026cbcf074c5d2d993a533f4a3a6e15704e6cd7cec5c5403e88a64ed0d5a828aa61abca2cc4b1d81ad6613fb199f1ba22c8de744244383865a429ad418701b976646c527b6e17b539765608382597f003abcaca35c00b646220314c48ec6d6e4afa5f9a1e295eb456eba3a6d42483d5528b3df802eb07d540a8a2c085d85e74c61eaecec3831a5d2cbe84800713d8107141bf49548e82ca99683f10ea77889e1dd34eff027097ac7469d825c8e773e0025897ab49c6eba8cb1e3b82c8c2d48e70bc45a91b89eece59289692511fb39af80c4207caa64d39b5cb78b700e0026d79a0ee295123e76b42c15d2009f7d9cf7297caa557bf4cd36d3479ae64cbce879e97d8159ecb5fb3d954e4654595f0a5b889c035a8ec7ec514cdc91121b7322e9776bb6e522a40ae74e8acaa85d36a48363c77bb66360808559a226fb103553b44cc8a188aa45ec51d3e8ea3ca9808f9ded722f336826db0c5eaca9275f73787daac109dcbd80238f19000d26d0fd617381d5f5815af2877fcbdfd3212bb33a08be94f4ac59911143ca621454fbc98da9189caf506971c86fb5c9defc5e1c1f1297a08a85d14526685c19bf879e320a874f36f8430bac7cea69b777a08f97b19ba33697d9583b7900a35f5a9a5a2edc678bc2802d24591383531de2395e73d8e2771a17892f2be908467a171be2905d96e21a0963a53c34f02449b19d6a8957f2b7d842327c0b1700b6c81acee7cd3b8c297904f9913a2f5b3b77fcace3508101dabfccaebef5bd5616b1fbbb84180bd97a3fba3a867921cf67e3dcc3a05ffe1fe244159c0ae43d02478d905389c7f580a1e434ae7bb8bc69997b107bd9ca51a7f6931d25c5ba4eef84563ef3e0a1cdd9b2b3893a69fb31bab83df498fab119db758e77945d40dc9e48c187b994f222aeeafcbd4fde7c2738eebcb0bbe4e24bbe2f18decc53f773d0f0cba015175e5773270e2cf1ec6f001199168fab0224dc9e1d9cdda67ff9828e1ff0be21d7820bf01c4df023709fafb06849d32b1382eac47c6a4f64bcdda56c07ac257d2066d535489a4c7fc2f38c7fb2216b672472474b7ab63b2c16eb58623ebf44e03edf105fdd877a09df7ff0b329521903807fee5bf300d2c09e8b39b3c42104ca5ead0b752cd3c5573871a9abf844f4d704441fe1d9147bf3a29d3e9f4260e3bc43c9e0d48122ca80d13c6c5eec40e4a4b56b11bd8fe1f1ac717911f1941496fe8a631a45a39dab2b83451967a96e59ada704835dd91091a51a446ac6aaaf6c7d2cdac2fa8254f7d1aba331fe5b40f2cd948bc1f0f1bb2345e9f13ec80187bef04b01ce6db68b0fd06f2f9259645d40686fc98237b1f8ead2c0dc2f38a9d22424eb61c5fe43d6790f96b0bc3ecd07f93e11a203d90b3c81e0eba7fc90e2792740cf750402d16a3a2b5c098184113efd0a870653d461e993060181f88f8ef60d93c04f01f66150b90d5df368db187a2c8182cc63d1fda6744e30ae6011a6b569969262367d43d4b8f19ecfabfceba0d93ddce0924f978f8fd45abe26d0b64e1d5af97527ae7f13e30c81eee8e868f134cd76f1f66806cd67cea61bc30cac2d3ba1bc33ba224f5f1a82df1460cf92877795015503c7f9a5f313404cc7e8912b3bfd9b98307eb14566eed05a3a38b9cf4853f8177a736ff72cfd22ece5e54b9174dec4a0b056c6e56213d5ce8f1e7eb8b44228eb1a8626458140711b0f5f9575dae22b21968b4e27693855818735cbe91cc9a4c215f98d22dbc6b0986eab9d61a4569a1df5d1ee8bd303e9df43d297b3937dfd6a55f3f7a545c111f209c1e06db2efab9b9ceb7b764a845bf72ef31e06d5a4a774362bc43eee6071ec9c879483ee867b996943203f555eb284052ba94d979d2d01ca7821ea6f29b6187db752ad66b19815c380dceab1827b74e3bed401384fe6799129537fc5193dfcee405b6453ed64c4b21a84864e8ec1a95596ef21ad25f772c4b5a9efcb9fd64a91f924737e2203e721e966933968b73337a99c91ef43908a123ba2964abffb66b18d9dd489010faac0251abbb5477c3862b07f87c8b9b792dede837388bd20e11cfdf1c9ea74e2c5016411f9e5721a0fa6cb11e208a79500d40b2dd269fa45264671d4030e0c0ff536cdcc7ac7db60145213538ec10aa3740f17deb392acae8e37030add0150c5a08464e69c244144561cf9811996e8cde52c4f38de6432f7a2641996998b8627487065d80d286e8c072808bd7dbbc6eeaee6b64ff3235fa7c2056e0df1fa11f797fff3c66b40c49f7c14d104572731f4c7046840f8a6237cf62af6c2f1b72a27639e0cc24c749c85035876e7db01e6f3dd1b1ba341a77e531ffb75c37c6ad51a71da626704869d5a51da6e5ac24ba3baef4eb0ba7e34ce95b350fd38e76880b37b3e396111d2d5d2f1b97ea91dab01cb4f0a7501b7a9134632ede9ea664e34e9d86352c175066fac335671627cd2b4b9572a6575ea96f501e5c3bb5b4e6a6965e937aa5ecdaab47c7034ab74a6b5e4a5daf9b8da3f45a5748be1483ae8b68dc8a6a168a9beff7ad66dce922ed1a1cc73a8a9e3ebb0e0f85bf4377f9b56bbd9d69f4cd8c23e57a5007268e94d2529fc7e03e7a989372bd2c1501169c7af2a7970d7ea0a4061f6c306417baa25be74c8d30168ed1b19961b9214bc75174e1c52cf428188eecd370eae5c4865f0e5c535a4562c3b439b8cae98d722e7dda741c297d49fcc25e4277d4a518fcc25a2e58dde648bd752e360dce94be8098302d1407d261c2ecbb50763bffe9b5c8f24fe74ae6bab8f477651f37913dd7b2a089e1468fe9d1bf52233873e2e92d9708968f99a9b4e68fa85272daeb95df8d5c3fe72e18bee02a1973fa5df7cd38db15a260b4d7066b1b4577e4e02c175dcc4f471b05e167e348b9da1d2bdc29704a69758d15a6edacf8b95f917b6b8c33e5c29728852806ec9684d93b52e63ebfeb7d046602fa905c092ce635e1a0ef161600bba63db52fdfc415ded605e5845e54fdae635971a3b476458375022014fc3812c595919a5752b2745c29f75e74c2da03ca94860b9d30d87f8168550a201eee03040d03ac7ca2bdadb32efb1df74dd5c1360d8eb99b60f04b7229a52df50806ef058794862e7941415e2eee969a02c310ede0f7b98301934928b832674d490ee5d52a2eb1734cc2a9f8e5a81685e19e2a442f58066699eac3dda7f3938b4035ab2e38d3ae67fa6d3cda4dc767029970867dc6276865c8149947da1369a1fdce17497a951269dccb53ce501c67c765deb67830f06a249235c6dd1f73c612fba7eb35d02c8d9f90ac655e86eac26ca48df56243a53fb580526e273de4892ec431f298413af3f64a8405c0c357842f10bcae621472a932602b2f83941e27683d53eefc1492d98136b11ec16cd5ee46a96bc83bee5128da27744ad3c5c87d78a21150ec48074be1b1fe45c9435405058f1212344a9ce257a3cefab7c10a5a95b35e0ecb13cdc2dabeba7ccef4e57b4a28e35b9b1c59fb884fd4b7344b8c207553d2c823c8b8581212ff239c274dc82cbd5342009ac7729e1411df8ea7381f3d9b56c6d137c94fd229b2b89904ad37dd70d6a2cb4f61476c1e1f20663bf946ddd870e74c6c7185222d9a8878f06ff5ac824f8df1920b86bf1acd1ca1645dabaf1ca564e4ac382bd01ce59a97b376c1ab32ab6005a0b53dfbff26850e1d356065ec0d25e1b9ed39206edd76e06f6f0ef24b3a0271ae478a323573416a08a9ba9786417b182afd5fd32eacc5e5e5f55656814166fab1eb5ea9776bc446aa4c5ad950f78d59f9e72fbc961e8cf9e833c0c1e946712943fb8d6332d4bba9f08ce60ad8674ea3e2f7a8c5b232d4a3f0da5746a93cf82ba5c1867a5ca4f30599adc02c4b0e75c0602aed6cb5963cc57e794eb57d3b7c02afcba56190854eea8912c1ea55f14f70d8f6d956593634c6bc77978183252e4c8995e5bb36f0c37102db6455cd5801c79fee8fe02c0d427bcb42977dfd05727e19f480c30f27fc338c0efa07c7b4687229ed14b5dfe192e3b127bfadf3a7e6b31fcde2e606cc4437b6be1ff9a7491e6121c91f6079d2e5a276e13f507e8db0d292bc16d84758527ea81eec8016f8da288aa2e9d7b81af03a7401195c9d4a84288e23342e468ae27e00f1f233e83c17f94aa3b50ab0b82110742ecb3f94f7d1a6a89dd6aac217ae584831e373ff9b97cf010a4a1c48cdf41c2b2c389b8260c73d3a7635561b0767b1e31f5f0846b463c57a494aee9573816af2de6b00990d10625d5387e3f11a3a064e7e68b871c17871d57a5d037d4b6d18afd1209afd426c83cac9367383d6b149eebed5ac474ba079670ffa8a4e55cad8d4ed1823d0cc4cc6d99cddf5a7659a17fdb2505dc6096fa8c9e2d9fd910e705e2c06bf73e21cc9ff658ed6b00ffdf32b8bf25d7098761017aa8ba828434ca9c60e375bc7526744d84b8f014d1b9cd0de762527828106d9a343d2bafd38724da34421e3e197a9a079375eef1b175be45c7cda14b7cff6fe81a72eb603e3735681cacd76f16ac457e42db550617b6213a5a3494573f850dacf02581f847dbc6a719e8bbfba18716b1b1d772d645c68afd88974a25422277a897b143e420ca6c80b051ab2adc5d47bba5047d56b9942bc050952239a18151f874a024143ad536dd108f350225f6406376e61bfd465c50f0ac2c8d78e8afca6f480993e38521b5cdb7875c0eb72ffaf1dd9028d8382722a9cd1b2689891af624681ab76d66e754334c60971b948af008af7c08f1bd948264cfc2fd9677c444e37e18938bdf0e4a64be92c17a5ee8d4811bfc25d58af867388670d9d6b9e029c0a7a84d0efc7843e4fbf212906477bfecf2338d359cc307bdb87ae0908414b345b8ca543a66f2bc4acad3f93d92728b05d0a04f9da48f231c82d23297fe6b14c1f80e36f8c0bbd224192f9e3e0d1708c6008599c17427219a7a79f3ffe14ab5c008cd60ffa390313e0c8a3bdf5beb32ae8116076dd4f5821b3484010394eb9840438d0e0f43be9d54d6250f234beb94def3c40570ad28f321e0c3d661e0bef41f1fd072a09ddd4e9240e3bb4cc4ef64f32cc291800b849ff47c7e014aaa74a964ed1576045aa6efea77087c1a6556ef1cfd5e209e44878864926a727a9357b564cf263ec8679a9dc9364450d6c975b314474095e320cb65cc6e50b0618086d3c21b670f3747ab72b03c721806ab0058fe4e1c17a1f6da57ef3c9a4736a016e814f70c1a24b9dde97a342b4d11d7b25e238ccff7bed65cc6bab42f575364463e776c6cdf87538818ae9d1868849dbb1d603072e435233ba66bb8b434a92e3f8e1150cdfa3ae7f0bc29e36d15ada20eec357c32c5cd048e25055d748d6fd10157c3658f41e23d4d771a66cc50313eb1ff82abcdc1282c645a7eb2894f4c9797f9868395fe56e485f85fe4d228cf82114677252701f398a720070c48b9edc37ff8fbda1c178bd67f5464bcf9801dc40cc305ad1b6b37d747b2c5c18d1c87ded2f9750043e3e1bfba796595c1e9bd4e342bb3b0a79794d8c07820b629d68c58bba85a7c98f4e3ab08d52ae016f8703fe924a8e668404f0007ed8996bcd601f27380b7a3d4d4988dadaebdc136eee3bc68dc6db5c39f950456fc6f508b62e9a36197447ecfd707a97bed86a4efcacfcbe54c4cba09ed9157c77fbb2e6993c6533f83f3d2104e85c786b6f75b63404625c84996ee301c1194d5145c1a0f1ca8e00a17582c315d89ff6b4b227005f441360059cd8bb62517e7a2851e7c15131448d808e0867ec60613ea738e5927e51e4901edb05f7d57acbe1a2c44bac297b1cee91077ae1db5b84cf1e125392d6ede32ebbf6fb6fd7aca761ee79d97e65762d5a224901b3441759004b873d9547270efff35e218318e7426b4f7802941365e43d5ca68d0b053aab3c2450b96a86cb3cacae0baf9de2dd7b97324e69848cf648b772c2e772be6359816ae55058b5f1818d48967f704505928c1c58c2949b9a3ab020a84b78dcfe05432e1b75ef5fa93242047ddd376fcd8d6247d5845e66a72a3fa284e6d972efa573123263ea70c091c8541603d11e22bb46f6596f898ee3e4fa94e135e3ae226e0324861ede129e6f40e047c852b1ec609021ee6bbfcb9a843c772b6894d24613d550907fb36f93dceec5a58444e49024c428cae37494774cfbec49b937191d025c16e7d1d85c2f88677e6a64c993522b1591df46631eac8278d9aa31ef170db4ef970883eed55f0ae50bea40362e6dfb8179eebbbe2fcc2ca2443e33f32038fde735454defb168342029f03e6d0c285f799a7dc5c610c471e784ed40763858dd6922a879bfdc48761aa7562e5ff07449435e4d9b234cf20bbd57c4742a96cd44de29b124ed1d4ee1f4c38d94177bd95476ea7286057b7fbde36958c0c3f89a3d6cf46202acd21a6bad1c9f123674bbf3ab8e857dc692461f4e5532691244f4dc1d2fe7a3f1b184d634c5bc409377413ed4397d27dd73efb6a42e9a821ab802900d1e7988d3533b2ba563ad3e4a5f9cecb5d8f8f8f273cbc9bc122a8036b3a61f2daf6ff48a8ff3d9cc59ec6ff171c34e81d4cc3c0ae3d4f137c1df007a79f32baa2322857d682d67134e0897fcb5b6dd98076c285c1be5c069ad831a994b9803c614e42ebe06cdbdc0fd55fd47f668e5eea90007b08721af47f9a5099cc261534e0fb9736879c027b96c7f04caf720fb603e6a043cd5270d5cce123fc419db24242545c5c1be416a5c304767405fe36df84440a3a4bfb28548a6b60fd6a46740ed5e497939b421e67fd0c63e204dace01a74368c55cb370d2d426b129b60ff134b77257104acdceb7edf8376d753b9c1b0964f0cd41a7cf28bd297e9d386f779d9548d81856c2201fbd07d1a45c5e2be42c9a640c046c765f754fc31bb2a38ddc9a590105f754dfd98ca1ee76fbc64c7a32398930b54fa5f7dca1a0944366a81932972b2f7fee7b7cba6759a9ba7ea050d32c8102fe83909ae496aa38dd54002b743981c3eabd05261c6673c80e1fe53c14b8cb448f3d8eabc789f2adbc869ed5b84ae870bf16b0ba491b145b5c391a6c98d2463d7278b3d12f93fb9422fd185006e66b213f535083f79c4fe187af011a20b0dbf7cc1be94a0213ab71be70c15e9e86343928002ca332aef4ee6974ccbb8092d75f770f4796d7f5b712c24a6292a24635e6530c2d35e764f0370b2c23d1b88763d9f2a3584cd869240be08999b02cf4f039a34148961e37c1f56e853964fc3cbcd34d94fec6c8d094e15444ef524c45eb449a3ae20c7fc6f71b0192b9f50bce122df6fd03d2a764903a93f203c7a94389829cf09e1d842cdd49f4fd44003e841375dbdd4d9b74f69bfc85207fbbe29a8d1457ae34ab75b33e786b381d9f80c482de0a4bc642dad4a6709f67ac99245d5fc1759d787491d9bcee2c0558e5c7666266764565492e165f07cfd6a80b829ba381ae4263e101ddf798433510123951ed27df3f6581a61303f3d9eaf13c15def610d73408e36d0666d6aee9500dc2d88a949c82ae5874b76d03e923c6263ea8e4773cc62d0299f81e429f04ddbc179f4f6d575ace2bc5d3bc3d99b0cc8e58691dc5af3e0cab0525a4bd420fef85d73387be448ee3fbb8739ba98517fe8caa84a84116744c0987b4ef9c972440f8cb4f05cba995b38402d9afb93325e0ef7f235918be618418daebbfe6372bfddde723440b84b4508e9802636e62d3172076b6b5deab5419ea6b38c0958879ed3f39774f31cd5c92e47b1f8c6dcb93e8ae66a8b40bad12a3a2d5638f99d3b5d18ed240a284d19d020d0950e33795263d43ebaa93d8dc33a1f6acfc9fd2ef6b306a8699f55c1155493eaa17c06d7bfd272f4966eea01b2f2b60efd8780129a40453395ecc8d92eef2d82a96d77b96bcb524f87c888c75b11f319073ded2637dd6581a6e7bc81f441872085ab29f96d61390eb789c00c948f70c97285f615e2ccdb481ba39a13ea74d1bd6bd336bf1aab18557f77209dde1303cb023f128a648259e59d39cc5e897734b8f4571844cd72507b4e3b269a14d122464677bbed591443800b7460ffc9ae9bedc9153fa596f73398bd6178b3529b658b942d3f5c780b115a502fdd330f2c16fa83b74a87f214fb1e1fe13a8cadbd592af88cae66f303a732366945cdceac29698481250be7dec1f8c4dd94cd9e6703f2a04fca6a5c891a6e2329b8eb870d5d52b982db191556921341fd304313816343fe194b38360d7a53d5670a7701fd9d52c54292f2b2361cab5eaa36ebe824aa488550522f1890b01367c4ad00d8cbea49e0a29362ebb030f5569fd1437c263a4d89feadc6323fcd452c298b14cf74fcc681e1e0ee852c63e286805ce27803d30629143dcc5c572101f7417a7f4a4e23dc0804230bce293fe01f1a4af65611f468c1206432196382e4cb65df6c14f6c7e9ccec81a8138ae52f7103e77fff7844c84cf7fce6947effd913e06ac89defe00cb08e2b015cfe0a9b9594dd9e15afce6aa27e370099a26f8421979df63c64cc2c07dcfd41a3554a66d8be7a909767403d4abe3f35a164d3b1770c80139653c16859bd38f673c5a66a97590c6e1ed83625eca66d46f16d10eb2521b9e8cfa138043237d632b32f13f93d2258da4cd928bb8b495d84097e646948ea95086659f4547273ac6276e5ee3760f53ff09a2903618de900aafd6138e4d12d2a09a72856e145459314a7bdcf9ff1217dc2c1d31f7b4cbf5d3e5253b9fbab9c791c9235567ac58255556fe10a95959ffa6c8b80c1d1b70c7040c5d00471fd1a002a50849b2864d8b2442dc75a899054ba28aeb3fec0d95f6be6292add779c422407d660b67bbf2d55b9c3524e1d63e53df41d03efb12507d0846ab99598e52fdc7697dd435bc3049bb2b91665749358ea1ec1a8ab6e69259cde24ef0e52f27e312b245a528edd8085366ce6a5cf9d7012c1a996b42e35f7701048354da10d194533cbd4e897234041aedf6865583aa7bac5eac4c687cc3c223528a942a40d78a93f98747fd784036b86c8a28e4a3f6e866201d8ca5e2cd59fd2e943527d8557f33ec1c201d3582a2cd51135ee0bb3e6819364942ccaa4e2403950d990382eb46d43003ed524a6881e2939e703a810021fc32631de6fd21ea0025514b1a8a25f30ba0684290104c0c881a28a193de873cb7a3a416d03de14ea9dcf951040fb5f8cd55ca18bb197a70996236cc2fe2700193e24ad0a232c700dfcc46fa4498263d023a6b45c1c10bba1d0b0cb54b82a53a14c98d79c9f8a4ab7e738e9908208e1c6b130bed6044631fa508f31d6f74d2d42b21183b568a91464511942531d200459323074b200e327f1a5b0e61fbebf35dff8ece0a88fb5d1d299b49f30ad8755fee9834999d92dbc36fbe62b9529460f440a4fab4364d77992e8b4e97fb0c486e78c53e59aa3d226aa53d1263e33e0918e3cc3ff730292740a6c7078ac81bd8a8574d4c169d029b16a418d6ca8a3bb04d6d8e27beb4d3aef092a53541511e74e30f9ff37208f982dd1026849095afb6ff09680768750e8357bc5dfd7b237c5328ceb6b10ccd3371751bab30ffbf1d33893f992e138fc5c0986e29001a4ffe0dfb1f2c7d784b37a6a081ec03a9b26eb7f6bb131d90b3ab65b82d913fe1c3fa34a3d99cd5a59320d922ab8fe32e41893d2896feac8114076b83384cb83c90a2e5fe67ccfd80177a0b6e8befc1026e90c028813e8378f863b29953a3f9c88d11611d2b93d350b029180127673136c89c17a1c5d0606d43309d46d4f0107a247346bd90d20fa8431ea8935309d0f63f5be4a4ec50534468575474acbc79cb4c80e6211fbbd3587f5ac6e66b402012432bc7c7cff7cd18b7c7678cafdf64fd36a9fc0735e4c599f9cd49e18a05432c5c9c4e302465f11db7946d259d9d4015f7b675bb566ff37e2c916e9d35f50a12c90d88cd3e9596c235653ff509e53dffe2936a30b3a15c53901ad4d18d8c607a2792c54c19ed3439aa44f3292e5ffa4473061d3d578e6079ab4b08f1ea82ec5ff17f378325b01839cfd644611afe8fb7eecc3e78edf985101a17317a198b45d21481ee029365c1daf416f776b71630207053d582abab22a154b83454beb1ed8219598364c787db6923ab99af0637b8d60b7501b67eedc16c0301392980e67711e6df3c160ebdffcb69e53753ae12bc97f74451b5836a1ee12b5a326b9bd3ffcbc22025988769510bd26355c3266eb8e57a3aeb7de252427679031f26416432006b249a96940fa2380cc598321dd32da9cae6dff543d6ce41f96ced671c68dfb3e2101631c9825857687b1e5a71c8c6fccd3b6852ad3023be705049085366d002fc1d8b0cf379dd27486e36f88b42d19d4f6029e4c9294885a04fe9b7106853504999c85444be18f6b2eaf03fd06166f9feb67a1db8c8fc594bd822fff579871f58af5cc0c168d48ac51ee6fa9ad7f44081d7638642ed1d2ce6cfe8dbecc3c739ba001d0d2bf6d330ce6a6938e14a7b644e8335a3cbdf80240026465754aa30c2d3bc63c9a85a8dfe6a0848542412c1ef2193e3baf1ec925d1855cc63e11a4a8606e184f70a4021cf01ba920be54df98652e9c15a7b40816d37f98739e91b4021f8a64ce8ff72d319764a04bf2814466a9644f563fac00942caadf46e251e6352c7bf2dfb09bac59306d0409f52428555b203d5361b9891130095c02c0ec527ea2330f8b0f51524843c463a0277b80ba882611d03500f4d485c3b482d04b06ddb0c878ebc39777e39eb9309f5fe666058d5143c554e58af5ec717e96cea4752f33055bbd981afecf09757903aff86b60e777ebcb473e3ef404452dab8e4778569df1f988f7e6fe9fd554d27a0b146cc0aead03f8461a38ffc634542ba2e7815f1a377f88b836682090a8aeb60d4acf2211bfc3e74ad67aa8ccdbe2b7a7c28f8513ac263d53b9b231385392040f257884135d61361d9d8bd6b6c19a5208c7b234d031565019178c268db3c02a27f1b14d660049d21a2418f4cd3715b014564ae63da4ccc96a5561ba35b217068c1ca03641d555640fb339f2ddb39a2b711a1130b4a87eb19bd3638a10b7edb9c8a0d76bc822a63bb086ee98df7de442b283cecde175801479dcff714689932b9bf2f553e664476a406c020eff85f72c6675f2931748a56a8634babd1778c8039f290ebdaa735bc340dcd22590787926d96f8a9df3d0ce7dd03b8833deb85ba13f52ca0d6cdc806b881de51207fb82ff5200df20c1219d02b89f22ec76bdf6594a2221f7118a464ccbf8971bceb739e54accb31bd0f73b529fbbee248eab0788eaa60af5c3b31f40ff42a16e275a44280bcbc605c279fb122236d6f6e8e94e6d2918f22c7b898d6f609a5f4ff3f9131b7273ab5fa8e1032836fadb61c325f36d7b1ead5088bc398d6ac4cde1eff0fffb49b85f8a13830489c7781ed4790741f7fef6c8264f2172161b456a9657c5a732a0a34bf2e8669b34286db6d8f042ae7086dada33e467badc8dd45d009784f888f1fe2d7b8b3839909d4e1921617bd72b74d22a52d00fd21ebcf1ca25c59f13edb2dcbd4ba90d8f9b5c203172167e0b3f94c4cc7c132c3080d2ec4909219e3711d97988d531f1007b73cd92eb8f1f7d1648417624404a88f4fe1564daebac7f1eac852ef89dd2f6456ab1cc81e2f0fee7015b3081df09a9de2432cb18280ead7f1e460b13fcbd92209407b69183f7fe41ead005e4c371db84bfcb0fb276248e7f3eb6df90ad32c536ddd0ab25e3516f153c882a405fab79f8e0b5576a96cc910f7c619654f249f60d44f97e52b2ddb1874c1d6a02916303c4e9aff8a14cfb62a71ce6f4a56ce18a127241c8eb377133b2b35a6e459a0ebbdc2e5f177fde76b586c3624cff57b54eb4625f686cce16249d58133d5b55743ce63b4c775975eaeef95c635124141b64255ff8c60fe23245a51364d918239438cbd7dc346b9dcb0bfc51388c221430a42dbe4c84f3d277f7b2bf83f0a20634bad0c1b8f5a45eb1db4009a5ee4c1f712cb84e39c052d5bd4541a412edb1816d11b314dcf4e332f7c72ac0c4d007b5cd243f06ab66c677098d0c2af87267e372718b8b3e1775a54e53d6fe626eecd6cf0fb77282096090cfac5e77df6f4b885c7d99ad5b81f838f116e0bde05c18b1a9d6933f74402e4cbcff9125630dafc958af3c9133ddb4524cac935fd3a42cd2574a37226d917cbdd7e079ffb43f08935bb869b4a180fe30587d1cc395fc1d56006ec454b3d27990ec28812a2da5236fe9c142ddbba7fa9c7c48bb468dd9b36a6610bb5c9133f90dc46cc40915678f12915b93fed8dcaedcd4dc9a916fd3982c569a4db08d433c32739ee5e58612d828c51de3bf83c995a3a3b3dca4eeed18937b17d01cec5e08aa45134cad1bc545f7ec0edef70d862041e8fbdfdd4f93e7961851a7302257b2000a55204d7c8a936d5d2fdc4c85eb2cd8146fe7d95d304e2db41cf6e96e6a6aded7a174c00ea5cc1f9466392745d13cc36104bcc042752c2f958df8073849ff16eb1315716288f99fd375c8dc6d8b82b56c1a5980a7fb54e99f24ad19e569714c0d89b9f994d2adbe0ef8fdf5acd1130e606f8bb618b9cce12fdc86cadc1d1aab4479278e5f07d8592ab8054e37329c3623516d228492ba9f914cdef6e484792ef31a2b7747c883329086a4bb36bf522d2d9346caffd6bf9919cc91e89564654f0da7846c57337a258c7479efe4894765ca8f1480a29586dc5c95b18688a9ce38fb9be0cca2d714f27255710fa184e6c28cda21b1b4a98354d8dc42404b6dcf50248cca03994cf0451ec4f2aec82c68193b971826805f4521e1481d84b0b90ae0619bf2258102b7888c9a32e4981ddc9e712457db9d942895c7d2f296f0ab602be9edf8f2e8abda2275e6f0d750f923981cee8a6a4fccc3f03fcc3d5e10c5e431f0f7ffb9208610a639a98f47ff3feab3c90d1e65c425f5898ca6d0bdf7c322f33610724ac803f9f85c372e4479e2302e0baf75739e295e02cdcd5ce905d08f69f0ebd10ad609bd2d182b98c6e0eb6f2ac7ce03a1584ebbc43578fc83c08a889f5355ce730d0e2e41aa65412050ac2b4ca450d3a979afb2705faf90971e3d0c7e577f41974c0baacf635ef5fee5606083827bf0ef7539bfd5b883f7def07c645728fdeabd9498c5c41c4563ab839d21e3afee2ec388a7c45177e40225c8c24e8e7605c5d34d8e59da157aa72bc597ecc98158057dbb52aae38dcdf04899d72393e4e4938edd8f8d134687a36565005d5993229b90078f2ca6f6ff74c5fda0f0e2fc4059d12fcfa2624914de0beefe320d895ecf8fb8f439cabbd73b6dbb9250aa0d55411336eb09a46d50179a60bb9640d22655816936eb04a46da9149a62b34a50d2867a81291beb9486f252ff6d78a2c01d49dd9d24599ede74f9b3a4912ed52324dddd0f29fc0302ec18461ec373445c390b7f282b9404c5cde320e6eeef3b6632daef2a4106064e62c926ac0f2596169ecd132d6ca0027f34a684bb1604670357b56e4fed21ce6a20e8a75a7fccf4ab1035abed887269a6e4ffe0fda6279440643cb9663eac53fe032d19fdfd2f8e4495597e09512e0172a7a53ae537bf5be4f8bd4720231d366ef2561879f61e4a57944550efa25b50fa8bd0cfa857e77ca134f5959b16100ef5d8472cef2f3229422a89bcc483d2108fa028f569f52256c026e7e9f002d64095022b19cd5c957175c9fca41b36b44b050c8a3904b1c912afb74f102923de654f14c314486c78126d23f6ea140ec1532397e0a192814cb7992e53f47155fb409d24aab50d6fe5a48c7d768a1b539801c75fb18f305399eed6e1bb816afb55ef23dce16ab1dbd30e0cbdff95737042ffdf04ee33c32d262600a9b57070207d5bad2f7d3fe96b313e4077f17bfc2053336945d5e43f796d7e51fd1bfad0c8cfe41711318ce01a49824d62517e64a24dd9d1c8b2e7587463430b4e6785ea7c2464883de7063fb571b584a20fc47e234bcf2bda07f9d84d28af1dab43ad37585ec08b9ea87229d7ef6de3ac7efb18c74405a1b8615214fb6860c4c1662b6f440a2a52644386e8a6ed167bd71d5de3fab3bdba8d3744a871901294da7a7e6deec1273e715f4e1fbf06ac1725233943d83783aa62f2e9107bdde40eab60dc35ea57ecaeeb3b8b5c6278e7635969190f8f22aa4940b6643290b7c8603ac1e801ba1369c3a4abe14b7468769d242db21effc2b2147828a612bd1552e71b1cff82745ec5794ff1aab721ab28b4577c6faf1379259b9a9af5f6e785e71530291cee01d7ca2db743dddd8bdfb6f8b8b02570fba2ab707515499665d9b45eea137a45c5d204155fb09036588b54185784d1f2224e28b5b4e5fbe3a2583ead82d16fc79dc5136e517bcc22f8e28c203145b47c9349653c70469c981f9f5e7674c22d3f6dd3e5dffb15d0b168346d20fdcc9f50617f3b204170ee8dabb13ebe795390646590a15813cf12fb1d7480285cccf1e44cb992b6d40b4db1592520694badc094ad7502c936d40b4dd95a25946a435dc894cd6a02e9b6d4854cd8ae25909656912e13a4107b201677b91bfbe6d29369ad3f875ba077bfdffddc5b465f26a61979277c01139eeecae103a79dbaf8f3b61afef4946cfa03962e344114d6cb8529a6fe22a4a1f80f58e9ff8a2ab299cce714c8f7e49fd552db664f891372d0170ae19368480c923b874c85ea40b6709bc3650726d19b275dad1f279f9a45591bad46c0c515b43c4fb35eb53a291dcf1bae51d3b6a1f4fc61dda4a457e425199392b0ff839a1e9518b6a1c1b329e888aa9027992ba203346b4d8adc1e93ab181d8fcaca24441c965d4da6129c3e096034bb0b45c6652df72ca391fd8bcc37d20e049e74d91e271865e71bf48a52365b7ee21f07f5e016829b0cb9897e8b04b398231441d5a8b2741db0c86a2c1061b1e6603d2cd26eb2bd6b7295c26858ae0ffdfd02ed2a59cbdea490aa2847022534f9e8d361dd4d898734b55f1a6ebe366531964e5dd0856ebd03be0bec65d279715577d8baa694dd35a75ed7781d911432d5ac22249375e9541a553610b4fbec72306cfa6b8cf8aedd463eac513abb7546f6900ef918a9bc57986882849c208d4d00237d4776fc2fe71d7506ac3eb43d8f5beccd01349f076da25ed2b1e10c67503a81afd1416cd19b57ac4215150f4348a71ad40e63c34f9a1787744a388a9eca6dde327bd38d400d8169aa2a0ce97807f818b65048b2051db2421ba41d9221150871edb49adcd1340990a44b3a4117cbcc66793a08c44a87a4f763f6dda4235d17578a087d13996871ec80d1dbb2432d297152908ea8f046366cedc9d329239693068e839c0eb670e96c1f3e198aa83a24b456919ddd87844e0d992578cd433af2342cdba8a462a1026c94a8c648c3758494d279f83e7024a6b6ad81eb4e0f1971d7444098806ae93c3d233d5b3698e26b3cc8dd7f9b36ccffb240afc03ea5b34b79001dc26e52991c2817d57e9b44f34d9cd366c3bd582c984b5720ff488b5de0daa4152e4ae316cd54903168aa44e750b7271f35ae80f87e96468ceea93f4d43943e523f23c49b9176c9d4e819d7ef5a13eaaebc42e363f6fadeb93ae030fe77e1d6f4358d04905ae293cd57d6df7c0a9da0d08bf634cabeff0979b0252ef532a7ab3d3886efc312f0d0a90cd2be06cd083aed5dc46508811885d9fbd98e00cdd800c4aec7c4db8a226e4c81cc70dbff8db9fa7fc8c61fe3d2d298fd6a00deb0774d21f21077f862f65da8b574faa835a8140f1515dab481647ae09ee1b204cc14e896e3f4ad1970f4458baad4dc8b200b74ddbb9a88130678f0c9d7b9242eed0fc1116a234b9281c3934846855b6d80001851f9ffcb1e3ef663aa77aa09751350cf3a0c4589fb455779d726fd40fad630ef143e742dcbf3fb39503d94a2212039334ea8968a409b4c6981926dcad33505ed4bb85b2cfb31de8f31df7e18efa6c084c2a0d56577be420d17f984bbf3ed3e1786def8fbad20b1cc840b401b0aedabe8590965dec3da307a3011ecf52218707f1b073035d4f2a191db63ae31bf8f691214e047d414410b41210d39489023e6a6169b402bd197b6d8eb2451badfcb0da9126b1bc46bd9ed792925564928b289c4432b5baad8e7ab88cbaf356e205476f45365a4edfe4a7b9e1e77d129e9d9eb7e8dc55d7d0fd3bcc850b1b2cfa82a666091f0b9111077efdb46323009018aad4f8afe9e086133321b5646d4e93a4dd04258491f584570a133f6c9e29b6f622bed41819c04b5e889ff0e26a19f067720500541e5f743d0b2a0f9b0d603912cc8fa54eb0e7967e08071de92b11bc3a7c400722c48ddeaf6c81b6202d33d87904fbad6878e888bfcf3a3a2bacc61f558d09f048e29e700ccba1641ade38fe78ca4359aa7bfa3c1d266b965440859883880660ffad0243cdb6545d344526fa6097a3ad20ed7fc1775e6698af76fd1453738c8596a7657938c65a6cb74192c248e0aa2d3b1009dae2dca5aa8b4216156b53591769c2c22691f52f624950377ef96c6df43fcf6c90450c03b6aad7a52887ce87fba5db75f35056ec0fc24c05dc30fe90ca1b6bcf5b6e77db27f12a06c8e4e0ff52ba0dc6dcfdd0cb801abf8ed99be7fcbc3623a21629fa9b9aee28b30ea8275456cbec2318938f9a6d4ad1bff03b06504ca78bb3999401121120423b0d501dee16f3a13d52d804280ed966e9c37e738c290913d1d1f9dc41dab882505c065bbe57c858ec337121889ae559f5beba40847b8e6bd9be7d0175cdcb3022a01921294be079e8964f968fbed0a1c422b68992eec3dd9e6c885e0962c5dcef2e26117e4f87a4039c93dd88ada817adabd373b2e12b12c81046f95ace565ec680787d12ac94ca2c40abfe5103f078fd4cc159518a3f21bc90b6c88033abf768c592012b3491b5eb22dbd7135b7399dc8c4a54485ece46d86a00021e6fd7ee399dff7238727d9f7ce7823fc383b44bc00a89000001057e41f377500ce2a005aa39a52a905c30c9644c36c37eb6f1b694d2421929288d0caeeee1d6c0820080a09369e43357b402e4454aaad07aeb22ccb5a225fad2fe546dcf23e95e57c5a2c7bf55a37e65cbb116eeb6dc4553f50542f6910579c504e83f575419a47ae6d286e733799b4be77b4511c05766c1dfb72d268d39a482ae56e326d1487dadc888de770233b5c87760db5ed08d8780ea7804d0e0aecd8475e731d4788bcc6699549a55261d4e9743a5da122f239a34ca7195337d38d329c3d7854d188111bdf91c3d3e136de0e152a02395c87532087eba0808de78c8a800ecfe114d0916367363b021151d548cd85247a7a554b7221e54d766b3bc6d2b157f28861250fd2b49207b1635cc81e98532f8fb995659c469aa4699a0bd95cf39f1f91489af719f951c9616691bc9fb74aa3ccb7cdf12491366a4876920bc94efaf915dec86bf9dcbe8008bf39cec4d8beaa1cc55b4315fabab01cdf0eb771947ff4519a74cc33995c733c6136049f503a24971f7c143879ccf3fe50e0e433a6b5a63d930e2072b0186325c75c6f1d924bfc5fb40cf325a7a1a1e93add759dc94483d5cc013bbce4da935eb314a45b597b26af1904e2ef70cdfb486edaff459336b6c3e5ded9e1a5bda3c3a5cb8fb4796498dfb1a14ce570bc75e8c871b241a1a43c9d4e24c7a453c949dba9b4915c926a6a6a6a4824128944aa425b8e1af29dcb2c3bdc7919cd68e433331ee6e5feb27b6993dc3d287b9036e9334ef2cd933e729c39f2f20c4dd7759ec54ca7f36ed2d0d0984c341a789307711ccdc837d3ee3ccb971d8ecca1f3be9fefe468b45143667ce442667cb47fbee46ddbc8fb8c7c8966a3d917883e38e7b8192f0f6509fa99874353a4f1238f0bc7718ee78ce3998d1ab2f98c0bd97ce6e749de47a5f7adf01979525792dfed0b441f2327799f083fd29ccb19054e64981c12358355ad156218439929e3305d61857b87343d4275b3bff511797cafd62693bb75650df89159b6513999772e24dbf4846d6642b29ccc473eb3cd6156b2bc8fc85f994f92c3b9edef6788bfdcf2cc017fed5207857048fbbbd4479e0933d906a7dedfddb6b63f6d1ddbd6efb63dacfd11791e55f5a8c7a322499b45961a1d9ee7709b1dee9d96935de3743ad73d5175afd626d3e75f4a736ee7704ed3a5005f49c94d2eb7518c1fb3cd31e566dce47df9cbaf3f5de2469e0832a57dc633d17836a60c7b689ce69b0832a539a73dc7da731ca933bfbc4d6bdfe13c4448390f117e0ed9eabd5a9b4cee5f8a73ac336d47db3df193fcecf4c4d73b477b76f89aa779e769c7334b7d42c931cdd3b5d725f979ed9d6f7a8f60c78c93848c1cfbcc7246258799c9e1c867f6a499196dfb23f29a9bbc3bda81264d3db34578bd3f22df39cee4acf5bcab998ee77aef788ef7ce0e1ed56bd754efe950bd8d7699e5ecd89ec3c6e601283fa14ea8d3e974429d4ea79ad3aea9a9c9a222228208a9140f9a92cf94f6de5b25649baad79a0047e8cc3f954a454425b44396d208aa4ee48de575cf4ce7ab4faefd9980e86b75225335a8baad23e0f21f749efa04872930df360dc4f40b69d6d8f5b655bd711bdeb66d43610c6b1310bde6b453a6b9c67bc784b9ae4f78ea13adf596f568a4b5d67a8aebbaaeebbaae6bcbd9677da2d1089f58397c7db2016102a2faa43e198a72dd3abe2e6b09c15ef7111c695df86ecbabcfc461d28ac5864b1ad5609d65d6e1ee635e762e07ca94d69cc669ae3d6ee330a7dbe6262072c03c63e7bc6deff8cc4f121feff4e464474173ceb38eb6b96ce793737bc794b16dcb7934721cd98d72371a8db0ad1be9d146229148144baeb9663938e79c7d7354e69983726299e940a9478e67960333219b73dfcdd93c472d44fb96a3371af00050e08c54431a719605051551aa37f120169509583297cc2c4d904e9929e3b0874fce9d320ee35376726def9c4e2513cd4ca9442275a48e4422913a1289446a62435dd7bdf7661d5c54853b1d8558a10af4d20c50324c74344e33e3a51ace2f2f9b462a5cdccdd7c8a1733ad3dc91acb56b9ae7fde5253fd2f4b567bd77b291e7435ff34cff3239f49a124d37532a651289446222e713e727cdb57bf52995bd70975ca76e7974c95c3223174b8c48333ef3d578c9bb0dc3e69c73ce39e7dcf6d7735f89cd636d37e0e7f1e61ad73857c335e0e7352cc9cfe33d821dafed6dc9638ee11aaea6c6b9bd43836bf2fedcd4d1cc904a5d47229148a4d16834b2ac254e270fca1ed775afbe326579fa69640e02b6ae58ad5f7eadaa020b62befac58298180414df5082cb4a9d935c739c3decda4ccebbc8696be8387bda945d67d7b09c3d945601e52787bf15419d5810c38298dffcabd126ac7dd37bc7e478efccd4789bb6671c3acd4ca9239146a3d148d39836c234cd711cb76ddbb66d4a5cd7755dd7755d396b41afc5a0bfae4b859387f2ec7d31a8c8c9511bce1e396fa718249fb0202606bd92189f0cf90d50be7cf3ebd227adafcb354dd3b4cbb56bbfae8b46d3d775e98efb32c0d1f8d4bfaeebd2a0936a4ea85c536332994c264dc318634dd35c6bad694d6b5ad39ad6b4a635ad694d6b5ad39ad6b4a635ad694d6b5ad39ad6b4a635ad69ad354dd3b4ebcca7da4aa75f2d79bedeabf5edeebd5ac3af6ec48990b832cefca4e1cd1bf9e5694df34c6f1bc76dae392f795fc78d38bc39b7f1fca675e7ddc7f3da3bb71c1e69a7dcdec13eda3b996b8e233b8fa7fb369c39f41349cbb4fd9948a49c73ced7454343438384ee9ce3f4fe74c9d3af75b7bbddedba8ea7cb7ea0f1bd2ecdc3c3d3f1f0744fb895ab739ca1aecbdb38ce4f5bc937aed397369af1be517612c7f1709c6f9b6b3ccf397c9e91c6791fc76d9eee356def6427ed9d93733cdd73be759fbb3f655c756e7fa62cebbaaec3dd755d34343434563a9ed74afbd325aeebba4ea63a9eee95c46c094a9744612b9df8de2347aa8c444ee5e68e8a473af345ddce6bea587e2df4912b48d94311a492e66d8e8d304ef38b47dec7611986650f18611997ed1c8e738c2dce5ed728e348a512c9671c660f20f98c930240d7177baf0af6987eaf8c3b526e94bf955e556ff78a04d59d3e5d84f95957ad646a5aeb24ace48dddf3b3fcaa5424a85696a7923f62102837bdb3d680218f1f30c31be994fa74826774a2fd1467d059047d743dc5fc0785c27c741c08a4c7fab9a91767d070688b977f38b4a58b4f41de548f3488fea5620f3a5ed52a05c5577780bc217df5610b105feb1627be561f6af5e13f13bee6e751c9c0b1072940201711f9435341ad8a3f6827685135dda4f3fef4364dcc2df58bed14201079edbcb9080064a0231014ed729172c75709618c32ba8c50a6c9346574195dc6785f002499c81f4c346fe241b41d25064527f1090c7342b4d06210c33019cb98fec1305874ecd9b37c2d8bda6b518a61f1f46368afd909d9013f39ee1db9c8d49cdfbc22b7f8ddaeeaf44a29a594515e6bd3b83f7ae50a1592a9e99a47a5cc1e5664ea2607fa8b5cb8442f514a6e0186de83feaefe542b5510e92938000289580c51c6101653e4b5c9e1f2e6f27bd9a9d90a1f3b741282e01cf3f5e2579faf594ebdec3357e99a471d664394d0b7f6bd7f616e3d73cb4756f791da86d90999e3ea61bcc2ce8e71adfe935dcb1501d187e596952fb73c1264caf2ea7d33bbe5e11eeb73c61b6ef09a73851de7e59d60fd7a28bb11107d58b7d6bb3f24c8d44f0fcdf152b1b2fc8d41329592365ee8cf86e888dcdf7da29f9e5ba239452cc1097903ad2c0f5d36f1dff55fbc3e07ee18544a43df09bb2c5306d18b53998219181dfd337da954943fb434c91e533c4a8960c412e2432f2f7f988e235dfe8041e6dc500a492987d2801642cb72086b85a65b6bad96ad134238e70a20adb0c231b56a3a06da0a1dd25aab8f84f3068c558710fae538c24dcb6ee7b5be6bbbbce87dd3a35fd7370d470f6762d2332f7b77ef40873c1e781ed3cb4bce2c52ca29a594d567ce225dbc28798779a9e4dde61973e959fff105c3304fc9acd999717b1d6f9bc95a3779181631e831c6c8420ee69a29678f39b3f098dd9b9bb08d691ac963e6344dd360842360cdc3de671dcb91d43e73b43fd73cfa87e408d06396c6eb8916839e790647d0dc5ac7ecded13c2fd93230af2cb261f65a6b478e799f9ba696980a359e731c719c674fdbd42da7711ab795d0b78e7123c7dc3a67b19192f976e7e8a087339d47e734e80dc1bce4321b52f2ce94f767f9e733b387cac14cdb292b52e33bcf9cf32d6282d9837f4d6ee1ecd1d54c851a87b387bdde79f06b3ccc5361ce1e5d60a39a9cf591c7b46dfb92c4a2a2a2386abcc683b347867a3435cdb33967d9b669286d17a9e9dc7ad671e791fce499308fe49d87918a9c6adca43dd4e61a3bc91bf9c933913c3c2a7272937fdb2e5273f24c359ec9adb7b9f6ac9fbc1a8759919acde433b9088376b2262862c881275f9d027df559abdd3e1e9d96dd994e753aaddd9f8c143a8d39d43a9c5f0e94294aa5c3b97de24b2536ce2f3075fce30b48e3252ba47c761aa1b7a80e8d97bc7a3ad9b563cc7f74d1f35effd125522513956377a25b1eef577225f2774c8eb9751de30ba146370d6628ec6c0e1f633943c7300f6edfcd2ce4688f58f62d3bc45878bd64273bfc243f1ff10afff3d9617698f5e488617642e7307b74884261dbb91cfe8c7f3e12471c231ca106931ce4f6873976ede68baff787215902f43e12eb899f25f979bd35cf7c0695b37776a2e715b66d85ccf1e64d2ab79cedd22ecd370f5fbeed2f023d759c516c7ff4b1ece5792592088160d4b19e159e44829ebdb8a9631efccceb994fca9b3acc48d931d7a8cc511cc92f0f95f90fd06b24395b4ef6a844763be732796cef40d7dcb4a193bc08947f8b40afd138741a97d9101a2fe958d7188db739cc7268f647e359fef9c8cd43e5642f79f6921550de8a54341caa82cb47b78eb19563a653fab8772cfee2ebccc39b5b4fc3b46318e6d6fb68cee63e50a67e3e6a1dc22c1f3d734c73c9cb25aa631dca1456f2e067effbc1ac37331dcb33bf1e0675e20937fbc14547eb9777824df2f3996b87f286c32c8c7a7ff2f55df2d846b73cca1eceb4f0310fe2486d23e6360763282e3b1e79d6356fcb3ceb232f734dfba77976cc43e99d33e328cdb5738ed2768e8698671e4af30c45f2915bc7345ec967bcce73c6309fd9dfcf43cfdea7ed9c92a3f2975df3cc43e59da367509b8f3c3be63cec33dd6bdef98c87bdb4bf9fce91c4c73b8773d4e6dbced19ee5919739e76dae79f137b75ee623cf3ae7e96dc3cfd990037c749fc8137f7efa8f2d7474587f78d1d1a175b7bce8383302cdc49a26f4e1bd3959a622d5991b6eda04a5d7ab9c965a4b2d4a3f6ae54c30bed0d4faa4544a14a8c7a716d5b1fed19c9973c98031a45e75e8d1ad639c2eb74948741955985bc6276cadf387a582b56db5f69228c5ac02e8a3eb6cd69fd21873b6282d9f994ef4cc424b4e896ba65bd2aa63bd9ce8b26628c8fbf337be10b474e83fbcd0d3a5943a3ad1a7941185e9d57f7efaa10a2844effb41217a74ead7bb7c7ad42b72fddad0cb50989f2e72f7953a08b8668070ceeb734a33a8161ff006a3d3482392f8724eb7ee93459fbd83ca895ebdc7da4a3af0f37627a9ee53bfee24d595705f7792e83ed947ba7b2c49862ac5c3a67bebe66c5996913cb19b1949a5a61a2a2df089e49b97af6bce39e79c73ce4cf29c4afdc6eddccd38374332a28d7cd98891cf33a49919e7f64e4dea2fcfa99fa9c134259a52a9944b99a6542ae59c9576966539e79cb316f7de7befbd77db369b6ddb463425d2e449a5b89c53329582598ca4c8a85297fd5256a7dca4f565d54d4544259f6cb9481ccd88dbb43699dc5329aee3eed5da3d95da54c8e1364572d810195d9abb5cbbf64e37ea4ca8191a53e93433532a954aa4524d4d4dcd161b1b958de7b0f172a80218cc978b1581c981094c1324ac0c3682c4454aa9e3c0cac0339890428403185c6e28e38449171714717145882e5b4c2b3a0e035280433d8082840c9c10e205276fecd004881fc63c6186126082c0c8bc94524ba188848a888a13551122c2c1961cf42582077d1f0e11d980de1668d19de9870730425cd83083184dae884b6881c50c845cc0c486214c0c2e4a18a34d5674a7a3f0f2465e59d1354c04610855b080091dca58454429a3063c54710319a02f30685f5a90cd2752d0262702d26a04a11e0ea1f1050d2b9eccbd92a91b747e3884c613bfc2010d237efec868101154f370088d175420eaa5c9a6ac3bdd99542b12da8821aa562a125469c0602b9d52eb42cb60685534d994756759161731641e9dce265fe5cee60c28fee32134e1c05970e4ad17004c3c6c2c1ed636b90502136972cbb24804f138c27487ce2822c874994c9e3a03ca7faa38ea25e594d55eeba5a0458a2955a200820cdac08204414d86c2047104110e5670db186170e0a460fdd09665390c7acb0a23cc5b965d59b9b6d229b3165481c9703d1c3a03888b981590418417559a0019a9b2c30d40b812041161c2b06207f6c6a7bb3266e03dbe46dae33f2a29cd0180379ee369e9bdc21f97d3bdb15d73ed08bd071014944f8da872c30f9ef6781c8923f524a3d22d2a998ab5d69a85fef2ca88af6e61fe59966555ea5654ab56b776cd4ff7dc57ac585c4e25ae3fe74faf2fbdd63cedb5f3cd55864bd249aba59fa67e23d4a69482716c149665ad6280460d2b1dd05001bd6794f92f95c5e72f578f89792983276880410a315e0044100f00f5a0458c2e5a48828820d24d2a29630bf06782fe68a33dbaa94b156070f91516fd412107e030c0b22ccbb22c4b5f6c05853603086650f91d6444424b87d2af7493ec1231371e3a9115d4c10c2b550445e9a2052782a06045105a507141961b74594111c3181f3420c443c6c789225e1c6be3e7101c40fc845eee8dd0fbae7b3738c2f42b7a487c668ff5d6a79164e734c723bfde03e10897922b2110257a42204a4c7ff905ff6e8ef97529b97fe3b6619812548e7fdcb9aece03d6f3f196c8d4edb99b078e30dd676fd6a3e61ff4826473ecd9f3999f1d5b6c643dd4c85e16cbde4ef6ad73bb772ebf18265dbbc71a793b56c73f057923e52712253dd6633d970f2ac79fe4f0497ba747c9fd6b1ff9cb731dc7fdadf083c4e7fe759c89238e2439d6b3c447498ff520e0f100b635205313f3e8f7835e50d6fd472452c42ea6468eff682b991e9218f3f5fbf913029fd3fbbb7973ff6d2b997fb3e821b18e1df75c6e824cf1902938bff8c59bb37bb1df8d33ef44e55c8f7eb7089d1950fe835e86ccc881e8f21e12eeb56dae49a6b0e399a3f74c57c111a6f724f9f9b84dbbb3b8cbaf5b8f8eb1f1589887197679286cdf3530a2879955e36116adeb77ef58bf8f8a8ea9f12814ee63693c46f4d5e1c7bdd9dd63fdd3ad647ef40d02813f575668392116204d431c7d91d662c00b1988d4b8428b1d6810824b0e788822054b932862e05083a171839f1d8010e20561644902076c5cc08b1b63e06042081aac882105859d317f88641451c1c40fde00a383a124b4208206656ce1820e785069908174c0172c80610639d0c00b193f33c8e2c50d4353f0408b1e80c161f4254a2f570011751737b4fc415b6badb6b1d65a7ba9b5366b09848da3852b3de80086052ec0f123a5063f209185162a9c6871c50c20e07863276d78ac8ed837d75abde4e06bf52b53da8a71850c443b80011a446704f94c8f8215384059011c64b67811a43a1cf242c4d75ac6d7ea2abb5756340c423b2656c063d92aa5e3482caefdf1ac542b12a853aaa7432a7e4ec9856e4b8271c50525de5a99041460f8601404183108c1eae11756b83c01860d164646dd3cab7ff20596eff170e80b32fe3e1cfaa24b14580141e86b1583944db084d60dc2e5891074f8212e4cbcb5eef2467af1d653d62d4fdbfdf1acbeee6e15d4c3f470884b94cf1e0e718192554ea8628c51084e1e000514757aad95ee54a792ce4969e751d9bd431e74c6d10412d4a5748c8bf7b75ef787391c42f795a92128c0910792eb13dfb27c4ebb3349f80f96f1d5ab8ef7d671e6bd5ac36f07cdcfcdbfeda74f78637d6aedd3ad0d7a62d4cba7ce5098d50de004095fbd66afee0108247ef50f4020d4eba88ef690d48f7cb44590a9cc39af6e82bca9ce7999fd76bcdd78e6792714ca396f2a5358522977249594521f5634dd57a66af50f0ad54aa5bc91d2536dd198576c5f99aa96656508643eacd7b2e0fc81937a424737c0189d6309f1eb55af65d94d944981e106ae4f2c5344b1f2a787534481622d0482fdca21d7a7c7e96139e398fbe381a4fac497ee40be1d1fb78ff02633c12df8c3347bd87bafbf7513dc6a3b5b45bbbff9d363f4eba7ff72e9f5a28123f3c7e87278dd8458c20afab06ead9be68fd1c6993dac733b3369d81ed1b2bd61de1ad0f18f9b47a6ac1fb1961540133dad47ea5adedc7bafcecef57cfa2fb57a3eac68e9b56e2d53f6be3d226f6ee48e1e9d114eed4a7923f7a7daa2b1c55bcb94f54b712090f9b0ca16e211d9c37a0a0a1ddd0063344e2c21be7506c81be9d68ff8c89bebf6baf495c4979a105e58a194d22ec8fc473f9b0ff350fa10b18b20c905981985a84cd1ec96132e6c9091ca2db6bc94130a9e8ee97f165a7afc71f97424d531e6d353f226fbccbc1f36bf367f5aad0bf1cfbcfa4765b6e9b40295b83685fea710962d5e26d1241364039421a85cc9c285bc91ff73f39844c9ea06a467ee850e9f397e80f5babffdd8a9cdae4ccd3b915c2e24caafd0c787613604058f339f9eed4f0eb1407f2bce3cec391b32a9c8542753d3b33dad681ea61579837dbacc86d43da9c89492f85fa45efc2122f4c2c94bbf598e8e2efd3ab67be2bcbca9041c613a9e114638ab56ef878279650ac111a61b000efdcd29532615f840b706f14d339552a956abcbafe3eb5e97d3a98273b552b99b4c73ca6bc7ea5dcbda57a662ddd029ce8cf507f29aa0033002e451422afa90fe790400804aa656b38704e613893ea41b51027a160f739029558402bf08657b0920f1d2a595e82345005da74b8f4234ff45a1b8041c61c61ce44ddc02a6a4cb784528fa9051083a68c9c1cb88e5077004e95f44e28574f49ee82fa451f0f8710b1d85a2df1b97cc1f4edc994557ff68bc054011aa4f0f0350840ab9fc40a915caee10484c0115cb45883983945a6badb5ce90af961884be56d7b5d65add30c909a440ccec01ffbaacd51224c55bcb456ea1801d14a0030f3f2ec0e28b1e9068a207576af8e9610a358aa8c24416451405d1a0e9a005530b563bada773a7819e52153ca5b40d6b7ba8a5890a2415364e2aeb74e329a59452a7944eaa0506a2a79452ea06b52ff8f03b1e6a81818acf1e6a81e1ca7f3c66955a73b0af8e44f575f76cbfa7b52b36b445e57c108ba78e44f5742ba133479f28a97843cc5442046178dc79c52a0c192d2d1069012253c6b2ac1591960fb5bc30037ac9e878a8e585175c28e3081ca74422a61b419429025383a11ab058008b98184c79020a1b64c041111a3b69a33a7cf2558b0b39ccc42a6d6ca1174d55196084570b59f46f8a2053d133ad93526ad93a551044a662f637c27b6badd6bad4b275472804e1cd1b4b8c6c70ad11c5c233d0489941bd82c043145b94f9810e52e87c2173441718080141086130a161040500a740ebc10a013cd402248516a026ea65467e034724b6f0a18b21aa2ce1831a43245001032fb230c38d2aa87ca942bf1c41c2327060c8072b5f2c61460c6e30821139885963882d6d30f105caf525088d83f2432d40375c286fe44aa7d40fb50035c1a2080e27454429a874ca55ee6cac1405e1490f878aac0ce0e150510d454ea2148ca54b9fb00d1b967cac8ee14f8f45298c3ab188e8037a9c22a5c8548c9e742a32f5d363410f3af52035638341b2e7bdaaa2bffba6ec356f7993737623f307cdb57a900d66f90f474cc62ccb5c08fc6ca334dfc97c7ab6a76bd9fbee7dac79d9bdace39fbf6c154343e6d1656de20179e4ac3b13166d0209ab6bfd0031861551ae58411b29a0f2b3831a889e18834a1138c08063b022e79c73cea214fc9cb368869f452e14b930c6972c7c3066074474d1c4ca082c9a5083075a407181172d46b8c9c552d0268f238c50b6d65a1604b156eebefcba6b81d6e2a8a10c910d1a067a07bdad5ca0b55799f22a773663a69471a28c0f9ce0c764b8d8f8ccab2e1a351d0e9501fae93892cc1314181b4aada539e79cb3db7cce64b8cc596baed633efe7b1e9e14c4a664ba482318d2a9091f2d971a496d06fad28d4574791794226c8c6e6abdb809164828a34b182cc1ea8ec70680c97cf18e6d8c3b02b4b965d598673e699e30c3b8ed77565d975b18b79e659c79eb597c8941c1ae3c4679f3241988e99b23dae37744f2db71bafc0d03108f75cb03242702fb3d0e899dbeee150991b5414c0292a2a8a23c80a3f491415151505d9b09b5760e8cdb5ff6098ead1cfbce9dd8f9ef6d8f61f0cb3248638fe234151d1df15183aca75ede1509920f9df098a8afebaa671dc57e784c8b22ca3de860c95874364b83ca6f2d871ce39e78dc27c277b742c7bf49cf9cf4fef5ba239cceafcf9aa61c79937bacda33ef3507147388275383406ccc321324f1ee3aefbea5d991bb03b7b6058962b01d7b56d5f7d1b33e55e1e9429ccbb373b01d78d4a017e752199ef54d73edb0f46a372b4afae650e87ca04fdcfc7e97d4b7e7a963d7c79f67e1e5f8e33311f8f423882f5cf8746384466cbfb64d2e60621289272861b53ccb8e2839429b240624a0f72d8011b4b8c6c70c5e1658791171ab64aa7d4f170e80d1e6881a3935dbc9066a5538a69e34757586cd269ef755d1cdc48a2862db2604283252f0083862741b8618a1a8258561853dedade8a3578cbb22e26c6cb1b59bca18507537653dc614201c044dd5751ac5e302446085bcc392d6b255324c894c9c67988d1a2d2f0d3af982a6c151f8fb0d838a1052e9a54a9a2840e55827c291d60086f289db2040991c48f3ef2463a8d3ee1fe60065dee19c3556badd7c216b6b085e78578ef78979aae6eca4bdeeb4e39a5636a37f5697918f66f7e955f1fef8ffae53893524ff2f3138b96869fffa2cbcba43a9328d19ba482bc108b7c0751162310f85ed8437b77a653192b80af0e4ce50f18048a71f2d0f5096bf98349944f7a74264d54d49b78901762519028944a00c3287504321dba06815c9f1eeba727f9799f1ef83f316e6055855ec99bec32bab4309f38af92d0d7e15fffbadfc93c3b99ec77e6bbbf8cb397f9f572b267fbcb3b9663d9837f2d87d9f572f676e2b53cf32c8f274ccfbc09339a4db6ba21db106a834a3dc156cbebb5baeeaf3ab6722cb7fbdbb15e77ac67cbdba95eadc3ace69de939da35562ba17b576ff70e0d010f1e1e2b24280d010f25f5727cbd7c7974a5047d2af38d15ce20240413a12b5b34c9a18b3156b061051358bcf0430c300c3f4e8ac0ecb0450c9330c8c0ca782022c1819804b7c41258c6a082c5081e803e2844001eb6bcb065891db06012e4d30f31131f60885e70c118685cd1220874c8019fba8a62e5031e3ee0e183f959af5e3d5eea365ea7318ec1e4fde1901a4eac11e6550f87d658e2d5a09286105c7cfe925b60feb2e1c327e0e15098327e288c9530367c182c8f3f7aa442ad37729cb1e7ef8b54682cb7f6e783f717b54c277a9609d1dc8af0b1859dca14ae518a9c734a6f2783dc9cd8a5c43df3776e11b184e938723a9973fb938f638cfb9b59c9bfe8252caf67fecded33bf98e18dcaacfdc57f80e5717f399647b73c4ef9f1f3d17226a4e4115bd3ade5df8c97fc835bac6f46ceb9bf394bfb835b8458be2375f25bbebf24174cfdcc836f3f2b4194f18b5bffcf0a16de5fbcf23b9ab3f0d1fbe65b2f31fd38259660f9dcf1f3d93df3bfa865b7a48f741f392595b718bbc49a7ff2c373eb681e3d468f994efde8993625fab0dcca8468d13b2f3bf5689c6479167e9432425d878f39ffa293fccb9c34e2a28ffcbb2e1f6dd475ceadc7226209965bcdb34fdbd6a332a5f7b7b9751ab84548f41d4d277f8cfb4bf2f396679e3d4af158442c017ea672d5fb95e02fc733c72262095f7ccbad7f7067ffb05fffa2dffdc12d65e89dcb2dfff0f6995fdc3e33ee3ba5f69de0f299e5d4bff6f5e85ffcd68e45441f9693a31ba4d143501a3188210d19888888c004115df125cbf645081a5dc34b1959268307326a30925dc8b0c19201031a75c03101033298b8910d418c209878701a020e66111b51a460862ed628e385034ca1c50c8088630b2c57aca187f042015eb03588e942c61562bca0050d64418318c634594306431843cb0606e78213555401c2105f4451458d21d8a0650b2cb6cc80658c318618c3881adc821817ca983266075288a10524830c942d5f829822ca0ac08cc1c680610018c8823143cb60b408a0c7a894ec58697b54a22992008000b315000028100c0704e2a048345104618d0f14000d86ac465c4496c8434992a3280e8220838c318610000030c68011a29aaa00039f1823b94d2ac8e3268fb87b5704f3a4a81cbe53726bf858d72aea26473eb1ac9cc035a4a344a3fcaddcce27437683475e62053f2c189b16336d4f9e4c8a7e447a15aa3e5f8c3905fb8d1a45fbc2a12e3e1a5c03f4861b5928650aa20d2ea9d1dc7d4646ce8f1931fe1cd2be5387d46e3be50f33ccc229fa8d33d5710f3850110e5e9130d003a55185ca9ab1395564a381110c0d934808078c409ac9a509de6940ac06ff877bd58966e2f602187c15774ec2234ac9da36fd9a53ce34b481352bfdcab857770de765402b2d1d2346da004edf7138dea768d9da0dbb2da005a1b2d1a74e87f83c64dba90e819e9094f5313d90443818ed25a4cfe492fd72ed02f7fc263bfa71e07157e53cefe0ced3afc2e82ddb3bd7529be7be3e7f7336d37b9d8a70c06ce5b1c4cd2e569945407473e7d1fb37f09625b94c085856478f9626929da91383b912483cdb85b46862977a987422d9947cf46f7d670e033479b6b6a1d2472a61842c052ace20246338a47ada4cae22b804fe95aa89876f93ca6d29d546377b4fb72fad513738f95c92de277ab5afbb453e923c73e8ed287592e3cd046b18d9ab950d7dec7ed8b31f8789d0e60d09dd6b1167b734c9d938dcf66664b189c82f06c0b726a5e79e6168d9a4a15cca1449ceaf98694dbd97895d1bb2b82896b674a3c0ff23ff94e7b800f7b0f586f545f83f53c002941133b604a104fd82804e7a31ffe9721fc7647fa38912aae06ad6df3cee9dce004469918c70d2c5c6548afffdbc755def2d11d07d0e9c3dab29536b13e70785c8df501b56c3fc4ebd193ed9733d9cf5c63a7407f1b0c04b193ff9417817b4f5b0e2071b8a99ae7e1ae244b9dedecad8bdd6465064399b70320190f26c3024b4333e539b1be799c68b285b97394ef6bcce8a62c8bf08e3e40443f174448d44aca8e1c209d4509f5736f043385689fbb11a5dec624e1856f113d4f5a435e54438eb6d0884e4c84c341a18cc6cb0db72a1da719dcb9a187a4024a841aeab3153d1b449197c0cbcbcb7694ea62eaadb2be94cb43692b4989f5e3020ae7200ce451124fd4877877155c5447aad2bbb229224728c184e6515e846a1b7ad33657ce549a50efdd0f8d237f5dbf3818d055c8c51f9f66f7e2585a9206cc71145f662c9c998fae43ac8471b901518b31fdade91da2e45c7117c67d525ea4320bfbdf830a2dda29f18331364c782b216fba7f1400ed49d77ba9151aa23429f4a863c02b174dcb380a1740be81c8e2ae4b98cfb7dcd48dc8513203a19e416a887185e89b60cdc2b9c748bc1fe719e195bf9236d04dc83b6fb5da12b709d3a505e45f8acc43561e83a9e764b6ef44216eb5d8edfc479f6adbce59015b7588cba5a5fc18545385ecdb33375a56c921a56084e06fa147ab255c4e5f0d13adb54f02dcdc3336c356f6e976f11ad87ed693cbc405437b718137394332778ac56447d5aa6fc70de531b5d6813a8720b69e68f9636518bdc5a08b40fd52abd8ba3ca6409a94b477f83f750cf4f2ac519eaffb84146c07ab812728352ec4acc34d58c7436e73c787a70c7a5467bbec17067bf9d0ef9db0fe33e146e6870145b2451fa820a0cb5467fe5fb3e337093856f82965792a4f5396b9b437e3801780a665826717f1a11d3ffe7b03f3cf107efe1011c4177e3bf3eeec122d9fba653e2679307fbbc4e7e86385c0a2a65c5534ea0fefd010c9f6a89346509bceb365e7aa0fe79191c61bc3246c6fdc2bf7ee247fcb0bba5c9f0a3c2db71485e6cad63c7ac97ae7f839002b11979bc99e0348d1c27e10ce499e76b709a478d2e0e31f9ba91954eae28946c67b9b4d255f818d0690119c54c01031ebd003b722a5e1e693c058bf0dfe7850c532d929de91bae65c27a265eea9eb39e9de98075f740e73017444794beeca0fcdb485bd25f6c2661265907d1b4a9727932ef457232cba6ce00d8a5fb17bf28ae4dc143959d2a8a1f8261ff40f3c044e490e33fd0c4410863ee52039900f99a14da88e49bbebb57ad6006bcbf59c5403f3eed29c0bf28c12bdeb00a401c7e96d630c952abf2873892bed1f6160b818c47f6952b2c5351a118ec10ea45f6de4b9ebe787449c238d86418fe86a123a3166c9e93331d56a4347602280866dcfae88eda446cd41f880b3ef525e9c2046c681d4d0eae7685efd808ef29553b4dc2c06077827b5f9f8e2727d178bf77e05aa71d663241db0017ac03357ac52f8ad9e0a2bc53d28f9638a5bc2dc031c0b4acee8e20e6d13e06363931d9e4c034b44522d90f59042e126161f306bf3063fb3bdffba539c78bad5f3e6fa53c44a86e88e1cf00386b3342b6204fadcb0103271e61bcc32ee3c38314830afe5e9b40d521afd279e8aa4f45624282be107fb515526898e06d38f78a6e2174dec5d8bde1375b0aa9e93473de9e0d922fe10c2a610167e94c3491642718575a54a3f93a8b1296cbfcd0e87db0fbabf47073e1f2b3055bc514c1546305c04077e13ee421ab01b8ac005ac8b2b7d3d8ba5c3979490f9cc91b73933f27403a7857d4ec315caeaf418e9d22db18f9b4016099a9555c56839bdcebd0210ad45988c2717db3541cde2751697840ae7e0006492cf11c85cc3a4551aaff5d2974c503ca7636f21cb18853f1bef98a4bfec681136eb82273cb902a7ec7b923beb96b9ea03afa1fc1351347e89d3b7dd58d635e50202b7e07ebea7494ab2b8e4d89d893311b079d856e694cb8ec0203ca7214ad44e4aa7453653ced2314f611ba930825f973b147f2310675270f7018eaa2c0a2e0289c88efb305defcfd9a544219858f17897e68528d516f21c623e36ffbc6dbc228c99d51ea0ae4b55726a792f60a85a0348f51cf438d861c98338bc11c28ec8166f1f7a0661b54166ebc45eff49ccbe98994ec50b2806dd119eda149490456eb4224f20c18b3ebad9d9ce7ba0df72b2e060e66b9e9ec699792ef190d79d9e0f96c1456bc5255bf9c9ec81eec4bc950c156f19bbe3d4fd446a1e2cadad6e972e9ac7ca005e762ecd673f15e89cb376ba09a5f6a7f501cfb31d8ccdb8789a97bd674e7063c0a1b72baac6ad5f1e0bd54afa2e6f304b63295e1252f0008a61a804471eaeeb928b72fde07a1ae7c2983085de0946cd5c21d2f45b7868a6bb9baa4f0c53ab68dfb65ab807d37dc9b1cba02564677c5db85ceab9e8c1d88c83ee417079918b624b91f8462a90b78b4c56e1344fa7e67ec4cedc72497988d071ab572187bcbdbd0fa021f7874ac1d145d9aec3be5696c3c393e56859d4987c22028f88822996dcba3db134586fd6e5223b5fe697944ca6d88f99f2f788076aa4b4da52f622ea0ff83cb5293239ed283996b04efb73026d7843f245a7ba5f3b627987cb16b446ce6855712b7a42e631268a31e68f526e2872ad274469cf99a749dc0e7cf165e0941b8eba1151e7f37979621999cbda0e0b2a742809bf0d725528e2d14c82a3931ac2f2b2c2223ad53f33e83b65d16319d2636357b3310f2429c84654967aa70ff8e4a5ed200840af76b3bf2915ee11fe3c97d1083d529dc10792bf9c5a97e2887a99bd1e1c40af9515cf7abc2e0d915155a87a2bd99366216c1066191d86c809160a3facbc4f7822a98bc7d58b918c2b80308e13592fe825121cc641b44884c18963e905d63b2d730a81ce1afa93dde99bb35e6d30c93ffb1b910569e0bd7f0661602232491836202130a909142265b534b967d68514d8a37a95606f82a89acd01d416aaeca47cd62f5a6ac1ffb9d615b950b36823a6d1138d837dcf21414fd2f1e3410a8d848a0748f9b1de5f5203b11b47c4a1049bbed1ba7a6c11db24da4fdc0a7b0f758f71da20cd82da50ca01ab8d27dac46a937dba07b00f1f42a2c8c4acba53f82f6e94b0220ef780131f0c1451627037a0783171cadb8b213f2ff31a2572c75324504df087237aab7938c87a39d94b2c86d482474c0d3f19ea6ddfbd15cead65d4a048ca69b2f63518a04398a8426825edb61211fed8ae39b6f18bf0c59370211e4f61fde23401b2fbf47b69ee94e8b871c6b3b3af4db3a91fb37ce23b1848292c8dd7000cca8ca00c994957ed230e52fbce54d1ff64545105824354e5b6681765fd11dc5ec23c1fc85f29bb85a722a05b0a6e2fe7a561f7196ed10a5e1847572f41450fa6a514dfb129f4ea036d3208e3bf9f40fa484b4c195de4795979a82a9b4c67a8b2c7ac82061ee2fbe68ffcf76f4211cfc579c7b7dda817384094b52186ce5ca42285d9f3647e51be712ea36b5b110fa11adddfaa43b4782d61818212c3e41c27e006128f80cf563bcea0d6b854035890d223746086434211ca147b03ca7fc09625cbd675fc63b5721bcc084fd703d1282df77408e1b65755957c7f9b83c2565615ab89ec422211e90b315ee468dc2aa176cb60e9603a7e805f6048c83f2c4a667c114307350bdc35da112f3eef64d6e0c9b574688a0e431c17c872a453d798ef3ccf34103ebb8894d8cd80bf84ddaf9d906ba85cad68edd501f894c41f3c075738db4936df7f692a71b2fe6b960dba4437f2ac1b3835fb96fdee833b882379cdc3f9f2cc119d052129771feb57a3699ed97e9069e06187206c39825fa7ca874d582523d0e382bd59f842736840e53936de1e9a3ad7543d0b7e540695834faba561319a9895d5f1c7c15aef1777c945132d0c2a7a58f06d75892f4a2a9f4801459367559b8b1ea99c2b174968f897c63a9f2ddf6af978894ceee69105b43d04628ff2764c1e68e7a08082b5fcde876acd93ed90113bdfb7f5a566012de31d56036d438f6ea49778ae8a41fa48d913c3ff3fa0006c5a93eabac45c9473c7bb9be5a3853ed69330e5444ebc2e1a4d1ad2aac5d9cc9aa58513e84f6512fbb2a1fb718a559b9ce7637714d550855a13b03277d279395d1fb080ee6eead4158ec8a8d92ae07aa944d043d4f8d5c1333c877dd4a8435e6700319fbda60489b87ae7f2c2cd033325c90e52109313553e0618ceab8201e000ea25a3f98294fd73a48790337ab1dfa05544da19781eb9cca02734e5ba693a5b39a26e6f2ff2dac1e6ea710ab659793c134f0acfc814becdd13297a9bc22476cb6ff839838e32d72907b0ea7ab0b1d6f5a6d9c3398916e8b4b2083e6ca60a3fb83b0f95c96da977c723ee6d7b4281952bcd0a0e6826bea356c055af4b2ebd10354142a33021a566ba6aa746a3fa628b798287cc21879179e362e0b2680d2fc36cf901c1756c2565277891d548ec358e6c53631b9cb4f182dd7f41e3d14c42299c50b8895414c7642a05c0bef0e381cc7794246023ccd833447fb1fd53207f806ea244e19e244918c8a459635b0a83f4621996e47c4249f1ccd1a62f0126d0dcb82597f5fd4a5632391d8a4a911af5243fa78e3f579bb608553466b353837a25ecfd88fc00f4ae6a167c1f41362f86a6a70f39ce55f656fd8bcd017f3024e2ffd9ed5d729684bbdf99e8027a9a8bb92931d6118a8d1556ca44a7a0605d8fe22925741e225916f338861e3afe718d334a7a45541c0537768f284672c4359cd7846d166fb1c7315e1b73c6223c90689bedb1896c0f974b5f05a5b40209bfef47630454d670b6691c666b623ae22079fc6a4ecf5cac71e7806c83d4211ea373b0ecab653bdfb5bdb80c6b7bec12d4481dd40b006a908e766c4310dc6edbc2d01a8370af3c354e16a8efb44d710937fbd17e7ab96818340cd9e7d9664382bca187a864b7c74b7744e0d4c5422d26278c86ca893bdca530292b758207ccd688b839a0d1d54754acfa498a93e541fae72220640beba3a8db0b4cc12721164477b644c86aa925bd5c79a0eb329bcd981f49e9ee692b499ff19cd7e541de2b34934f0c358260a9b178adec37566c85164c57d91b3af6c00f60f7e060420448338d38c61e4b58aef30224f930391fecb7d01393418217eff003e66c3bb5ced0ede21f42201f7f49adaced743adf156abc5cb7c465adceb10c2e87d50c644860e5cdf8c9e67a2b330e32ef0e41f047928ebc76acbeef17f7800651fc22a49c22b72885b105951b7e3d7cd79e375c01890817c30450ee5ea420fde9e5d7d14152c423fa63e3d9bdfecef3f02015a06a1f0f5edb978bdf72b365222fadbc4c4681c66d2230f910ccc370965543a75e51448eb7955372bba3d8c94e1f176efa7597db98f4122bff76fcb13c2e7f6eefcb1a8611074ad15da4599ebaf496e226b58a9be7f688312bba5045c30411ed3918b6bf064df64ed379b753f0b3f4900c189e9cb2101a0478eaa0605d84cd75c61754a9c9868923e5884c3611437b605c0d01d04bc4ae18c4005d97b0ea5cce17cc7048ee22aeea0f8ea3f69229caa84930fc0d36aa3d9d172f6df2818a68032b1632a31bfdf3c5f3c0a157dc7f23eaac98ff36ae340960b79bc65509fc6396421b8e0be0e67c057c2b5f76642260b5958b3736866f6fdee9baa1957b088a74545be7c35122131aaf9c474c380758a176592198424c17a2c0b7d7b14d77132eb10104da8e876cfe646ca195d4a406a9d89659f345733c4ed215c4f5e493f2ae99e119e96b0f78831669fe98111f26fcd25cb48b4e4d2420162db1c963bf62a6a27c6cf469f39fdc596cfa8a78287efc14533bd03c5d3ee246773f44053867f4540b9fee347c2272ce8df9b89571c2af07c7e11363f80c03bd4eaf96398cf3659df65b12532b4b2c0ee30c56da1c807bf85290eabb7a2879de636deee178c9b402640d1eae576f2b2f5dbe68a7783050e4880d6572c0a755d55fb75aa1ff9a35a23f2c007d9df33e3752f196c4d4fb6f37a7b1e05b2408d5fce6abd37affa99f23ec0bd8f80a129f5a21acd23bda9c025352441eef41dee22464765bb23e9fec3c7b1fed0a9cb29ee8414e69f51bfdf09f4283d8e84b8020c0ffcae4549319a6609d0e2aa8fd14004c74ac2d304bcd131cf7accbd8310213292041106a26bcc17cc2c8040127e07cd01f73da0441cb4449184c2fc166b027db817d9d685c34326da02cd96725b3c84bc7088c475f4c3920729cf04d4f52b2ff8d176ae262e5fcf761c30f8a534ab1fbcbb35ee86f59d47e03a9e31e8a2c0cdc42283c89d20494e6debd65f0f27ba8edf30b974fea8e3824113491c02dacd467592aeab635e2d8ef468c9489221b0f2071d6aa72abb8bd7ae30cb26075d696ddd90b6b6613151221da8ea4e743dc19c3022b3999a016a1d2bc2b272756e50dc5bd2404f6644eeb9b2acfc12acb76090ba18e51d4f609878261e0539eb4f83b71f03f07ac6e3c5ac0234c5fdede76c757e24f8f9b83918416bcef3a34485c869036290d1e4fb9361dac39bf2ecc2d62549cfff66ab974183b7437a6001a181dc6abbf85000d4d5d3050fb645b6c3028f4969664b060d88649eada547d47af2b4aa9cf108b672bece53a0b3916e9db10b464f815c16af87aebf10614868855b02de5ceaa972a6827c92ae8d24346ac02bb60716eef7b9cbfad0a14d44f659b1cde26592c61244109361a9087a8e56d8d235b59e0a6fa2215e3cc31434223f545706aa4d33e5715b089bfec261a74c174c6126acd404eb0f120ad440f19801a244620de22b9157de6770799e2d14d7d6689b350cda2d2e68dc18abd55cda50ac1083032f63d4c6bde2a739d78b76f154b77b408ca11438bf530768e8634800da7c1cf4af1092315c830d9b927aaff7e8af2909a9f3c878a4feb301af84a7b3636e1d66b1cee486af54167e4e28fd4232d40367e5b5dec1deb6875c3b8c4036fb30389a550522d19ad1f7f39f2ab9323a3c5a9014e4946d000e30c001a88d51804dfc0ea1080fca7a294cf1b211ce5580b03ed6dcb495d13ace3762aaa624e4562ee9870a0cae20fea4eff320fe4a1ec31a10f1e1fd1e5efa767bf04f09edbf8876a819a5bd959021c7bcb32cb50951175107585e3aa8da01f4f5a1f13d4c1bb001789dd0904ed8db84e342fc96e928a6f7b68d2eb8698bed248183c4b7343f4e75c62161478ce76d00ed448fc2173480e9868234e25ee0f550ff56eef54b9b88723e096b540b140deee623f7478468ccbbb6e2d6708256c2e86b87537728ebfea361dec0fae36785e1985aec39aa15ea606e8b529200bd11a3ff82b45d27bdcab7e8681d128c31393160bcb6e05ef29886313d8bb4cec42598c61ac94e7772c9cfef41952ace35db1b595f8ac97cead2f35f55046bec90714284de484a7d61e6bf2d219556f0d6f4a9c9baf76ac535333c9945415ae2b99cd62d54d8367d5541ddb8e19b8dc988a18d4fbd08b71048333bbf05e3837b89ffd788afe89d5b56e9aa3902bce89daa8b52ab9692e47d51c3e6aa328c2b6ca110e5d6905f01d8cdb8685c30677a33502a3863ecefaa028f9b5926529bd77c75463598023b404ae79f0db08f53a7552d1227f2611653cf7b8c1dc0a9414aedd100b9b52b7a709b00e6f9b3230ce399c1b7128e15de49aceaa16aa1b11ee5fe11116418c91a786993b05e1de9ace5177cb029dba0a51014e045cf98ceebe242b57d116cb28d9bba35e541f8429c15975b317ab6a2be68e4a53dbf86cdd369862fdc73de35f5bfb1b82c4f41f5f3196ef1024c41acd27fc111866cf2fd0876ea3ce9f6e7c8e7cf05b9acbf6133bb9c3f11ecaec6e0181b22e634177cb0b9db9c049fd4f98fe0ed52ee4356e1659cf54daf5d9424cd7590b153f073436104932cd44c35fc2f8a35343e7441e6f7427a2273dd0c174493c22540f60414d730403c242b00c7b22f7d951a7faf161d8ce8cc7de9ba529b30233ab94c83e94d7c3cd207051fc40d815be964b42447d15614e9b9cb1a6939e7640de8589c543c2a341075ab170baf7ec84f0703e85248649c10d9a3412f26119b67eaa750d4af7bf0ab59808ec6e5a814d6dfdbe84d621993d81838231ed53998ac150c3deee04e25bbba7560c570013bc73742869b8ca9b3c6cda654f1aa415ba3fd95dfa98bb88a4bae07d27312a44874835d4861f0c7c8cd94df4af0c30037fc8215dde890a4480ec5153b7278b5a33efef47690e3c0d6c1417a0b96e4a22bea87f86be2860c8f8fe60d0b19f31fa2b88ed8909b81879f75ba7953e11d4c740d7199ae2f5bf9321b858a1a412fbf35bdca0d061b92b91eaf7f87442b2bfb89f49746f373d239d1407a3cfd2efc730be6efde274ec6c1a56f04666a196496393e1c45fc8e4d0101aa1d3944b55630e5a06cf1c0d87e41ad9a654af63aeac63b24e514ad6071e4ae70150ff82ad96fb9d94172736a84c1c9652501e789a16546439dc8daa8b6bb328f63318523ed4ef0cc9e9d22f1d809321c92eef9b1768c894e7a2ac47336b3c7b5e91755cf149ad095f888998de30b089f94e23e8057036ede34a5826a22d631458bbfed52da1211876850c9bdcc15a9fcb31c4f54a8e3624861708c4c2654495af97c8ed6cd42e2bb4d8b8eca261bfc8e3ed9373bf24507b54d37b9cc2c50e697d6e96434d5f998375a577038a52f6e65cdf1da17c057918190ec38530bd320c0cf24b52608ad6ba6ded30adec8a7f29fe73e5fb3be9460b6158b119c3af2cc8e4b8a77b1749f715ea7b9752f57bf8c768d96239283e7ecfb232c6b65a8502ba5687e581fb2079a25b812c197667e5f5dfe55a1d93645ae978f7a3543cee8a1b49723827115692d46e6c326a482bf436f13dd362a19824dc02a5c3edd58d42ce09a25638cb3cc82c0b52c02a3e9915f0f6f93138d6826ce6e82fc33ef5d774b5de121eb40b0c9c8b50def79bc9aa22571eecb1c3c9b7f17e8de82817929acc48cdeb1594f463068018e6271f6fdf29da154b7b06e6f32790dc26e9bf956567d1085fab6cb94b04fe29479ab8706fba8cc3526a64214bbf6a45049d7e4f14734709ee4f646606abcf264799c51a18f9606371228692bd96e775c1d75a044006b1002a82f996a0d59d9e124c838f3178e5d64247056736b685ef655c6d05a9a490e596a8a2f07c31d1ff7bfe42acc004bdb838ebbe80e782f2b814932d3dc55370a2a7754b50f45455a261b4e27236d27971347a395a1eb73c568e240964085704ece9fa0817763860df65903144b098220d9673b09677589cc5d9040b6d0d61e23d89b046a10e4905858713a34ff5c38802ba2de40593f56fa7c94c94b061eb84261aa67b2b5e1120e78d2046edef9575d32c520556f66f5e63f7a27b722ac384d77055e302e472804f03deb4b2f523d4c7ef352cdb3a0322c11fa2b1a1ef2819753f69aca06ecc3d3d3b4fb47a50fa8cff79fa194107ff1a5dcd15d15b6d41eef5748892a6d7393428bb3a0b1f9df8d06e096eb93adf14bdd64c44cb09236aae021ce6ab97014d16f80d5b1038f56cc30dfea65cdcb622ec9996dbd00aa994b7f0f66dccc41bf920769860a0fb9676e9de9c1ad0d77ea86ff7fb20ea03850f79cf61a7f1d9fb8da4bdaf2089026ba8c1a86c628a3afed53a224f8e6631016a2511d6e69f03bfd6ae2a6881bb8c4f8b0dc47edd464bdf3316990b809d875172bdab65f1e5047131709299d0c20c7fb1ebdc310c7006af14ec07f1e3147eebfb01c6618945bb4d89896b4d01ec1e6599b83f49fc6da1e2b64bdd1c0cd8cb3fc50280f1c91c7e22fddaa01f709aa36c809e993399063396b8a7de4a179bd847154bcedfeab1443a3eb0302622a7ff334170dd917e45c8c17063962909efce3342083aad680436a602d678128724f5b3902eca383843ff15b7bd270a1c97d7639f50ade783fdfa40ffddc2ff759e29c38c214cfdc7cab8147ea132355ef9547c816d33e3c6df4c4edb871b0a42cbed5f1ea911e3663cd150698fae3feca591d5e04e69dd62ba1393b47a622721b2ad61f6d86031d5d2c90782f4b75fc1517d2e0469368fd480b0e49499b83f4d5ba6d4c8bd2c65ebabfd8ea4c6356fccee4bb45fc9769fd3b4383382e00c82842e273f01f38a199d715922d4ef2c463228450b09a713380ad469fcb51817f4c217143ff348e687d4a4ef7e5cc25e20dd20fac68bccfb21af5151edd72fc4a5e78a11090e67cd72428740d2dd94749e18a5041dfa3db8a14ccf3971082826b2998c1ed19320cfbea8e6ad29ed830d1885ed51eca376e37e47dec735439430f879e107bae814f5547bfaf38ea58bba57bb5c96e027adc0e5dde5167858f0a9759431783f80668f38f42126ee580fa4b197746e93dee3b64e22c4a025b5fcf07507ef25c53b68da96207b543d9ad93c7041ebc5f3e71f3394c2172eba6d9e481ed3a07e4cdc65a3c6a804174e7cb1d309f7b7125707ed83048aa49670a396ae3d16c346a20d534f8e5d573f48b67b957c8aa101fe26d3ad70ce17c71d6d4bc44c9bfecff88000db5bb3cc71798965dfd899dd3974ceb469b894c9667b2b16eec7bce93282bdb5f3fde85a55f14164fdd7f57e1cf265b10481c10cbe7c6058fe42a754a3b024f7be58a41c39a25e54b6ade466e6724c7f50309518cbb14477d79d6a34dc6bc655af6565acf296aa4f52b02dc792c81d537f6ca056ed77d7134b1c57688e9f0c42e1e56f286b40c1728f1995fb1f7601d90e8af785c4ffb389d118c5e34e7b66882782d7557cbb53a01eea8b73e62f33bbd7009f8d7203ef964de3186130d0b78158e6e284a8e074fd4f9748c4c689406e7416f8f5a9107552ee1c2321aae286e7dcd26562bb5357cf2432501075af989dead5a520a10e4a12d19eb6ae84b02076eec3bbf14a67e494e88bd1970e8bfa64486c61a4c7ac3330b0321a2948bd088850cb0a74963060f048119f171efc0e5aa5dd4cce94e651702de9e82b49da578cfc3c0339f31840dc538d7c7d6ce254cceda2f07e71cba71debe72dea0c412cabc7fb2e748e0113ca52b4bceddee84cabc021d789961deb9b292ce53b178fcecebf0bb960f2e423ee3d9c4375cc955bf3d6290a0b9d1b8359c2e5e807e6a894e090ba8a4aad017e5a0a67926e39b41ccb246ee1d59dd25645ec4c1b12318c00a4b5dbee30b76b7f54fc80fce5c3c88599096fe2ef6a50fa49fd96dda76bc068f119dcee54987e75002a21e987ae2ea8b4eb06e213d237537ea429a87b4a2c58f92c9038dc5f65da661d0cc0ca5555a784c8aad7e365f9f97e79563434843a6543444840e31fb3cd34e7017c910440661bc81ad0ef10b9d8c1e1701f891dc11d3146c188525680e990f7c902e36508d3c7491bf476bdc1480fb0fa984e0b5a31c6c861c82e01feb40c8ddc1cb54a0d2c6b35241b5410dbdea79b2b9cb103ebd9135dc9cd93619291bae9350038f2deba387c42995fad10bcd1510b3c0544187635e95a10bd75caab5c3e351ecb31a51a69a1afeba62ea5abd5575f6a05f9490e53f2db65e53108771ff5d9accba1634d84dd9ff34821c11b7d8d93a4fc744e854043280a9223b6dae6088ae33b5dde70373d8010653e71962a70ddee07c74bf948c3d33a5a17061869a6c77dbcd698a7a842dab3149c477f409da42bab03aa9897b0f4f0624c9419d506f7dd0e7ced0426c92e97b3e0b02d032a39d5a870f2ed7ad735979b7108578d262462fb0911cbc8854c26296ee524d6f85e00da929541e782f947dc4131994ac306cd0911cddedcdcdedb117e0bcaa06cbaa4a736ae0555bbbb3e28df8f60f7be47775eb14e994be878a441ff892a3bcbb01dc258f6b6e7b86b153a12e4ba616f3ec16353597277c04a40db87e87e4330a975cbf932b97639e4d51b7da1bb5c50d45f9f0f0aa701258598af19a07287faaa7c7989382c6f6726cd67c526e74a0c72558e82af227634e103718d7a42cb17b38595301fdd967eb9429968f98bdad12760e66304cc2858562f32d56e587bcf88d26bd591c742d6a56a313816e90b42f1dc5747f58cd54912004f6ac59741af86a959532698e812112c49024e9fe6434a0455306352a3b5b8d81262e5fb869e0caa08d63061100fb1318921c6a56c4ff61281d86565cc5ac63edecd11803aad4abbd72cf2839938315ea38bd8ad52066880a8a5a08717162a260ba7596ffad46d82839a24c802e21b19e54bc745410963ef69bb2bcdf4a0003ae3c4094de23027da195efe49295430551e41d5688657e00c0a8bb9c18d86e04c675729a208ece20e2a5b87a189b0d5b5a19e93cb3d62de6dc6ba5b1246fd01bb4353a629759439d54ce1b2342049526f144dbfdbbc36bd00078335cd760c94546845485eb26e22fb100b7980b5813d505813d5128cc9ba18609db23dd639680447e98d773e5be0e0c13e9a589319702886bb2a50751cd0daf5028dd76dd14d02975c53b002f4c636187b0d470df5b23d1d5c057cd189b076842fd2c1a564effc64a964ae575f39a4a609e210c8be4e92f8ae2348810fd1a04dabc0236e3543501a83afff2d6919b5ce4067b330142294e329ca41236212dd2ff32e3808a998c057ef4210ce5114606b6cae62b9ceaeb2e00cd144ad62a46698e9352af64c0d4b83412bd49124928fb4b10bdb6e47852eab0cb23874bd12b75bf249a3f4e56605d1ef864cde00d30cac4e77c181e774ff252055d093bfe9ba713b13a26a201bdc4301de32a7a6436f77e577c22f51d28aff816f55e01f9de51421e79a19dd4c720e20d0ace259df63a4d96334c44522648f6e2b849f779bae0a7d320583a0935d498e68c249d589538d10915522a18e34550f77b6c3d65735a8b5ae86417d244e8193ae674562f6e0553278a0d0f472da5967b5ba50fbfae0ae8cda87c985b6667b5f2e77816996120975752dfbc6c2e24cc19f6f42dc6ad0551fe1c8d08068349c9d2af3931312baadcfaaa3c1d6c9e47201579654f62534e89b3f180d1f220a5ae2a16fa652359b71bc7831e4397506c37605c4426ebe5174992129080225468d863937912146808b613865702027697ad00bb0ba3519a3812790412bc8e36a0386f060dc4d76838015dc25c5fe0c080bed2ac646cddf0e952e261c4ddc269153b72b1728b52d82a75e81882e0545e2a52110d7b729595a888d9454569a4b5998b4b90f4b943d583ce73d6372c1bc109943c4fe05b7e3851acea9873f66d523e64365685cebdece42b39241ff0209e87121342282f300d4b6cdc8e8c3792642ca5e7bdd2616d8ffd4849eee9942bf916dd1d2fbabf3a8882443d7e87b2ac9d1f339daeb22831381d7ed942ea4b96e154ebeb1e2dfbe6d19b0d409196d13d7b894202cc539de8fc04835e946be4c4ddb9151e6bc295d4a10ac31afb4b9b2d1568821d79ad67383447b748b22840f5a9b2e111ff3d0ace8c9c374df49597a91966eecc5277caf3e0bb6774cd9f8da94951e871658d005316f22267c2481a2f343bd9209643c9688358bf749bdd3bffd6a3278a6469b28123568819d7c532852aa9e56bae2e7e32e1c5342561b1ccfaf6db1c797c346ba4e1cd53d29257e607f7400654d7f6e3c3358c05e0d6883f8f8d00b17cf120c36cd04cc27a1962c40485e365051b1d01cf21a5d46754888c57a52227547b1f326a2df4652712af31945c55473b5f19187a70ce2b6adc1be7cd2c0d0f5fa4c140aa505703f953c627b48ccde9840a46b2e8745646d426a7dfa20224e20068390b3abe4ee39acb6a6ab3886f86a6a064fdbe099dc7d0fd8c4de747617e480bad5865d720c81a3c9f31927bf8d1903c0c0c8cfb7f18db19b255ce4a5a328e1cf9a480d8255e42931d6c7da4825c8852750851493ce541d8cf518bea08a679d2b0a6edb38c51500c880b4118744983e3d96b02b8bb3012d372d557d43b7f7f3a135c0171c750f1116c0f62d988d79ace63b489b654eafa2b459b2898d89b4a535723182265ea2f23cedc1de0ab6bd3b5abca379a1e48da48cf232a50b4e16cdfaacee9fd8d47a5cac0e043f5c8738f0b4d9c10bd556222be15b9a8707ebd1c0fe5806015c9e2d103532fb71cfb8038b3a1aef3304d297ce36aa6c9d46525da6a37e95b64cbaceb57b95cfdceefe4a8877fc761d907152b68cd2c916510040d5cea0278642355a00bd0f27da4fe105610ddb72a408565db5261d2e50e76aad6d95fa7baae2038a43305a2bb54250144678a34a38aed40a2663c17e0d9ddab0f50487e51ace7d9a1fc215daf67a52c5554dedbda7c6fc4318e79b163fc3d1e409206115f67d69dd0251980ef373512621077ee73a3850a5ef58c828e249fdd93ff043c0424c0bf7e898a46382b9856aa89c8e44b10542d659ad030b0021087a5afeeba5e1de85ed536f2b54ba8ece3da03c0b2c655c9e65821aae91b58f0351ca9b0655d623714e692f5f745d6394cd460f6d0a1e0046d60c1b5a8fee02df72c2454327ea0e0b2084e0c17ed6db9642868735739dbc928d0768f9b14af09712b191dea92190ff61fe3c07129ffb175207b758c6b91178b1ac35bd41ac1dd585d2c6a9d2e202ceb2275e40edb6c553a1f68d7b645d8393e3ab347c786a084dd22f78871130d7f33b9fda671b79de6bf51fcf22fcdf6d7971e6da1e00bce1c821246fb92b930ebe7a6e849bda0768f06d8a0a882097f2f6348fe82e2b9ad27a0ca0090a2e51021ee4027b0c5e2928a379d8a36cd714f7290021b2fcd61cc54f1c926c609419a9d204cb66dc88e30653a207ca8b74595cc82f2f7d8eb68d74c6c158702ed1a6c24624cb3f897da21bb0fd482940c6bc560829282ff6977a891b62d346e6400a8b543b282ff6925534456f4850016199247914de8d54ca1ce890fa76232d96ce25d1f4b197a2f4c5e3ea56a3e153090906bb14df533165fffcedd97e5bb7939a59676cc4cce831e90b0c7bbb55f928f85da162e67bb587de32f0d6a429acb5a3fdd9cacacc9f7171399c10b321e8f8a60927f23e67608ada6cf725ff674c710e44e709fc1bc530ef7d0569fb12cfdd87d7f1334cfacf83497635ae0dd3781d92a51a849af6b47d85666c0072d9241d0c24833e3ad18806f0c6e2712e0cb06c00dca151ce9792493ed453760629790066245f17df01203158a60dda52ab8da1e21bce43263d7b9d25ce2c288b3a8224d93396e6aa77a9b4ca2d9aab28d838b45a63cb74ef7e0e8e9e4a0e645ec30998091c06183f24d132262f03a4aba7092669816089a5796368153748264b4374db1b410381bebde8376c723b39abd0a14779082f9ec5df5466aec92a14a61a9928487959399cb2409d6027425fa6fedc10898ae935794ec4d44681f1c730e4077f2afe59232cb0b28eefb4d9c861a105c9560b8b7182ac417acff345fcc76c3d50e5e5ebb25dd2c2ca625ba03fc33ee6790ee9bebe35f7306d23abe12439e24a6795104530db7ea958b389c1928be48f4b03d4c8532f604929f188dbe22afe853e75a7903b426346682b068946fda9a58d4adb2d1cd0909ba234bdc15d9020cb9f88102debfbb2596e2773e797d55404f00ac75d9ede4ef675a375cc8bc33a9702d65871417fd43dcfd561ab01d693579b6f3f208a549d19c49e44d5dab2df0fc45931e77ce8dc6e126636cc232c1ccaddf7a845545bf8ed59ace5f3089a942a9e89a9dd030c65243307552869e1a48ba76ca839beab4c22d93bb6c05f86e924678080e12619244e0ed92ae67fb14ace537a3165911655d5424279e241567da10bb6ca592a6c0a69fdf526672db1f2c5c282f070c88e756a52fec1919d870e9c815c8ef408f53f32bf7aa57510f10e6726bb3caa3afaa182456b27bf8de5180819f1b85e78a779e0ab21e5f5f71a01ed4a4f06e26d3f34c8506087b3d440bbec263bb4f53838b3c248c4eacc8a580c13aafae462372c3803cc876411c36f0a7c5d3f267ae0d40ea9730a5b229d7f19338360a860bf2aa0a10d1dc339b7926ad0ebd417ed18778f86a4b87b5c508a965e27031c34bf1308ce8c5da7ec95c1271a04671e614804b98c06a894e6276a2104c7b2bb9284c9e1fceac0f46f87ae3e8119d5aec66c488538875ad46174ce321feb30b535b784fb56eb544ac0b98687dcd2e2bf6ea176ea739ace974b33e094df00c3d3e1cc3ff362126587372e465c84b306035438cbe4477ca1a3f64c136771582b0f9cf1036a8d74ec05d13c0116ac6ac812ce62d1000566c29b5cc27604c06beb627b5b3863907fb3837a05d369015270c6d77f267703908031c381f3488fd5c1536b9700f12b5b38337615a14ecf12062f7b3db6cef65d7c3843baafd34843b33c88a81d911bf3ce5af0703602c2e3e81c0e7992938b0bf32292e05c375e9a94b27cf911f1c3c2f609e02a825cd90ecee3072960236e725b8c578d18f4187d3823c2f20b52b706a002012a3ffa659c7016dc7d3722239c5fd42f68bcdb6e76882a03ce723e51b9e6f9a20b8d80b23e81c4fb3bb414443240df343f810a926587f30bfc339e6c4162cdc0d18556090a980109ce2c161bb6a1ccf100ad2b7cc80c863398f29bf35ec6a076d2566f7db5b5220c12488cbae92c1a111d5a827064946c9802cee4b5dadd52b22330381bbeecd1bf1e7b9d9607ea6097b0e2186b3f31f002e77a4be87b4b106c39a3f5f5b5d409a743fcb31d49c1d7b2006708da91f7ae2cc5b540850297292fe9384e02e7d78633284c01ce7e1ea1856d2da70e86dbc7a8b594c179a4934600e04209ceac2b2841b812d579de4b7d94be42c955952ec775383f9c6b8a00c7a647eabd706736c20a1acea96f3819d2dc17819d0d6781ee392db817d170757c918171c164c0f9813fa22d04e709d5984d6362052238fb3d6938773964da66109317d88aa6380a2b7fd63d321213e16c1d3fb611c22454429a758075aed1bd0062712ec6b36c0313ba1b360fbd4708441e94347b0ee01c611b9cd7847270677e6320bbe08801b098724ec267119403abf579bc05cf19e99f6ac737354fe7eef3883c9b5cae130eff0a351ec5f85190f2d6f5dd079eeb411539ff22e7cb1092c63d4b4844076273a1921464d8c66084a62a3d7a60d8b76e2593bc485196b8e0c7507d0a3449b9ca92b8dc321110294ddc82a47e296e2c432c4cade6192affcd41219dd6af25d33c9f400e25cd8da7da941b23e4484dc02fa07aa9c642c139f81dec81b72a346b5d6e594805426adb5f54d77d2ed7bf7806240ca92b6fc0f7db05ec22cec12fc107be7aa00b0b72a202d772b49e6d8682ea5827189476e37de8e050ba9a8215f53fb0fe9d4b51c024738606d1c6c196be9a8ddfa2cfd8ba6b1a199515ec0321e24859830faadbae219376d4bc5ffa26f2e1abb01a31fc20a2d56a14e4849aa5b5087639a6f2c99894b0ead992750f0f0818ff5443ffe864fd53cac4c99cc6697283e6ba4d6dd005954c60973f218c8a0b9bc5f6e8d24b29d8c39491884c61815416cade9076cf74b43918e46bb5aab5780280feb1c0efb2dfdc636421324b5ca841464eaf0061fb17908a70e0adda28e76ab4b7000202a49bb55ae335161e8359797204c7a7e2967413bd2fe017ec01bc4670df1de238678a7fde2b67018102962a7c0e8cf3fb0e924b3ded000537e7ff56f7e4502025703603752301381e3ccf9e7b5cf66eb8d71c9956f5df0292a2a689527ff51d67ebacb54d00540d35d56e3e5ebfc73cd6daf8a55b79a771bbbdf9037b4c3dfc16bc5c8c33ff548b3d019c0bb7e9a31d07160453d2fd5dfcde47072eb4be0cebd0036c14439f28547aee38c61cadec777499eebeeb481e0596a0fc54d39b7b069f7dc132002b458d3ccdac05243590a90b94fadee65580ea3ce900239d1e7ca3b316734d395017225542998f783449b9eba167a60044588e8ffff7eb7048d7c97ac701917f7ea156356d1e8a62172b40e9d23af9cbc14e4d066701bd8d166f3f3090a4fdd568c5941097ffdda1a7346000498d85447c5914578d6a35d8c1cf0b4414907a798d608db14c5c9790b23c7de588472990de1504972b2e7504352aaa9cc95809519a3274947f9250d5f483d9fbe4270998949d70845822bff187da1c2ef06bf58ed8cd464d1b61a4d2c6d2a21dad53b8299d22456db46301a0f31d3a6d25c815e76ae708f50edc615f1a8cdf7cabb65bdd11d4ffb035afbaeab5e846c9b29903bec53cc491d3c34c20bca34f02910df894180b1fe88b2829b6fc77b842b5e18a521834858b36917e892c80ea622078e71cbc88fd2f4a9f3e2a9c616b1da6791cea20a119785c79c24519af6d349966426c493f0535538689fd4c96008006fe581007fd04063ad3209410e538bc4afd804a6a322cd6217fb1876ecb37e28964f01f15bbe300cc25b085130a3c14da6c8778d07ab8fe0673d0d934d82316dc492b50a21a28600e490e4951e8352ad795e5a115e5e50a0cd0757e69796707558226971101bdb6d1fac961fabe8dbe68d77d1127017a9a6c31b61c2e2ca165087d65882ed3c851186841c012c69bfea93f2006cd82d4e77246224ddf2828fa496284d2bae5b844bd6f517220668bf5219102d32c7b7912ec7d41c4fadf1280219122ac7210a4b44d89f2605463554242f18265599adeb2665c14792c43fed804dbdd34caaa1214752ce8acd0e96aa53ad523151a76d07036aa61a0e86b7c7546067c6e3cf565ee7332acb1c7b0cf677133ad795008fea3d8ad0151cc782140d1cf43614d7e09ab287271f31f13267dd65f38543475e5b20b467463068ca2eb0e7073d8d7da450e2bc401f7e376743f23e2bfdb089415e111457738bf0c06c5deea9a26ad6f53ccf3acbb208a715fb76a0df68467248ee2856d90f846bad3dda49fe0a7ea05359a4b025e6f825f1ec1e4ef18a626cb299c28cf3e0a6e3a907752d3c29a1b1fe1ccc6206292b13699d56d14a0063715e86cd4de5560fe03d9cec888e3f281c3556e8bcff5bdaa4d1d0fd7dca742c5e0f00017a45cd6cd8d6c3ac337372a6841215639a791d5003945aebe9d42d0ad8a96f934097dfd0bf1c7ffe2894a4ab81c4b3c963273c67f3dfab76ad437f483f333b04f28c99b2f3f2766e11bcd3a63f4e64091f16672a0a9c0b0035a50f578640753e4455ec323a19b6790c7a4556fe3db29f45e53ffb6d017216a28f79d2f94a03616038b53a875605a15298016a2e403103eaace529108d2bdf392c3a9858dca6b93cdc62b13e5d2f3c3620ed530963a9d80caeb12a99ac2ca0c97100aa2376d16434412064d32217e409a58e52b2dc0dd8c25a993f4056bfefb3f1dc6be520f0d1bd70330d0a58cbbe38b51e80849c01b90c0008c1dda0cee27c5ae1f83d39af9e1275048032cf30c946164c4993f2453ba09c35f3fa5d8b35501b9968732d80d71edb0e18b2eddfae4544cd27c583868ac1fae11f7e9b9281b402e556f379f2868ca731d461113a23f44b00f82d5e16f192775c5aab0ba43056e1c7bbf0abd588435b3465429d627b11be2551f38aeacf3e7ef9b847b524356e27f26d72c44c54832e6c9dc606892e19f1e72a2b7c7f3c3ceff691fccda7b643d7fc5bc9b5c99aa094eb3ad5f310db88c17ce6db2d9e997b4dccea1d77cb8d04121da4b3ac551d5309608fc4cf0f8f08f6578031f02e3af1d4c7610d6bf455ae274c4c390872625c80737bbd088da042c5597fb7b607ba69eaf95f69861451e266bf50ae1b01f104f10746e41de989b848e3c4c7b57f33547c81f959f9110bd220fadeeccd81fe3086399a29c7975999f8e7cf8cc8391731f6bac0019f23026e7fc6883753d8fcd8c89a4e9b5997845201e82e359220779b8e3d9852663812ccc74aff5c951a9351c8e10faddc4b0a8724aeedfafe1a26383c35808c169d408d59a4de4a1f77bfed094c288c00d0a9698fce3d71882188c558d83198023c013622f90a0873a4d7b58f6f7ecac156f75bc691c9dd813e792da9cc0d8aec7fefaf7ab0a6f4db8dc5003c828aa5638ed2ca274d79715853b7eca4311fd8a7c0b208d7721d5969d7cb86029ced34a42664bc8f602934a93faa19fa51f4eae180fcb0899bf558c867150472d474f56bb777b294eedfc0e0b4a65967961c142630d3ea6c534f78ca6f5f01467af8b50166f48d29c485ce83e98114ad67fa6aa96d06472418e09ddd69c26b42c7bce7d600cab8eb299eda2343e66ac5ee73ce337c778a2cd178d062e60aa739ea87fa3c362fe468dbcedbfb6650923e4b6a24d49e9ef9706b3be8df2683409a5af2181b2db0683e690ce46c6ee8887878ed778ed56e16a4e71bbaeddf42dd2839f37702020412982030340f363083844442a01bd21059e872071938e78f5d522ddd96e73ecc68ea6c1238aed0809aa7daa19021966c44568a14f326a12b4f7df1ed33285b6160aa1fe9f8b093e169622a3ab8fad0bcba02cb31f8dfcc53b1cd168d5d480a6c22a8f52b61843390860d7ddb36f25aa8e89618f5e19ac7cac8d637c9168543e2b7378d0e2b141cec8b5e5c90b575c5c82abdc4420dd5996809f30ef87bb4c5498fa9fb5a8ce1db703a67d8196a6ba9ae9bc78d3761ff0913241d2037ab38f3efb482da658ac3ec26b6604091ddf8e160859a0cbe805ea34079b56203977d5a967c9b9b60eeac148a8617c05f69c5bac12d182e51b85a589c128afcb13f4cdb46b07b4240c129fc7bccd898c820a0aa75a5957aa2d5ca910621f8a902fefeb80783d923e7c9f4662eb3a995be13023ea696343cf5ff8e7d300c15b6cd3f499d1b5f77377c1b1c0ed4c3fc0b43c3127732712158792696b650927b8385f90cd1bb4f2dc78c0bf3932969921a544cdc4ca551e19f22b94ac8872ca9101833c9b94a8899d7221191dbb566d1871d24d5e976cc0cc93287ac98081a95702263bbc3cbd7298cc4007dd95c664b53c327aa14a361881c5f9a0e484ccbd53be965c87b1e25491479f5cfd9be177fbb93956aed825c5ce19ec12ca115513f82a57679f71701c3e4db4a283ab73dc5e7cd9e8375f46bf874fa2ff512cd198047ac7b4158805d71ca8219e71f5e5c7361178075457775296134489fadfcd9163166a772a44f21cc2679d0dfc2156897199fc42a18363588f3d62c1560747cc49b7c854d73f68c1c0d43669d447fc714aa9d470a0cbc8d1d6e58e37004a84a7f442b51f85345ff04c76ba007988d2e92c00e97695a7b46c7ea15a6422654c76048169a8263587a8e72d356c3290247383c343e1217687d054273d4492d687488cfb10112044c4304f31dbbf33d2a27ee0ef2710694b67d57b5d006b176ead0719301e3584e648220b9e432406cfc02323adc71d70d321b712b500be0c4ddf535e94f4bac8f83c990b25d2fa1a487a138ec75915e2f4c81f1976aec5e1160e6847caaa66d8af7657214fe1b006b01b2a35351c51c9bb23babd4edb5ad32b53f480144d003025d5445daea67300e277f90e7808cb23b2c31c7e7eb419f8db18a5150d21001172a8c9010e2b427d54afc25600a0f6d45c9fa338c95c82244a294d0bf06964cf24d4003b92047a1abc5b121254584695ddc77c9ce4328c2664aefa30e8fab3da99582791dcab10d89cc5a5548a769d4410f900f19e3e3e0cd5659d04ebf36bac490f224ca87caaf460627512611aa9e64b08f15247050d70fb232c760ab158f11f30759db2d6e4b759d552031850379c910c887c84ddf87c0f398ccf4ac976fb3672fbd164d08339680cc25886a4f33d7e3ad914749a7f5caf1d68fdcbfc781836ad026aca9a685428cc0dccca4ac8adfd2360514922df078021601758f768bf43ba112abc9b92abe7151262762bba94375593d49e0430fc9a375fe1463601e92b71557f8b4aaa6d5afd0f2d6ef33bce09d024f102132516da8a24b1e55d807c0d7851acfa3e86e1592965ff008ead66e9abc4daf2d8bf716eead26cd9c702ddef9f029fea69050927c2f8bd1c858c129d55a3445d3211f5ea109b471701eca9eed414ccc24646093ed4c79c14eeaf92d379580792f8bec10cfd6cb7399af3c8c1b70547b2d8f683ce22dbd12ee7b341f6617f57b5a27137636c5ddf87b2cdaef8def6c5e5a43f1c1800640092dcb7f596c38ad0cfe6e8b05b2de85fbd44b78194918f02a8948d4157e3f1ee2db2fb16758ede76ca21b389b52827e083566338a044a482396af9fb246b5cec366ef1a7ab79418ea5003b4b29ac855035dc62827238a93e6b7088bf164f340673e2e58580123821c03e222c07bd48698994b6f1a9fd895b002848824100c96378d38d2f2bfcd12dde0eeac52b92594e7448f1652ef060a98e38222aaf8c8fa3d9f642b5afea67eb909a5399d8596bb20cd6f90662ba1b4a45e851503e5029d34945355b64448835818b70927b0016265c98699a13fdcc37c896ad1b480b8c9d3b3014d55c71d24b4669eb1a5c94736e6c25df42963641c86e0c0a93bacf2aaede10beb878025773512e83c46a12eceb5c6f223b32cf258af6006d427b8ddf94670f4d63ecb472912fcc138db5bc09449fb63b17f8c1a31bdb5a61f5dfcade59b6640b98b795b267c1a8caa5cf2259ae2d5cd315adf1062f62afc82d00f02868527409aa6379b42bc5f0065e13946481e9a4584b7fb66a48e8fdc94f27de0db7440229300ae09498c042082ef00e18bb76fc231f0c222e42d48c651b5d3ff1885812a2ad91bfbd5529cbd142d3b88299d9cd0ffff937345fa09ae72aa05bf2fb886c222cc208d8cc40577ea0e2c0bab1a2a61a95320207409fbb861ab6b496272b215f91f37fdda6fefd239e832eaabb62cb159435f8d6a828cb897798a4daa83aa6671ca829435ea44fd97183121e4d320895c915dfb0a7522ca9e51bfd33b7da46b38265d4cada0ac099256ed274683bfc77e8b7dddb6a3623a5520c48722f428c25b280f2bf95e751788cc543400c23ffb57b9c8427cfde2a6fd74f103f85632ec423784900a98071e8058f352bae0bdd1303aa10fd2ae380a2525c45d630cb3ed0cd8bbf5effdc15ce82c9c41154483a272b4f92af26c50831717b0918eafb780a6bee1018d265e71b6f7f54f537db82af09c411d4ba81208a314718a80ad6bbe317fb0c137d3984075250076245449275cca1cc85aa5452668194ce6ed7476951d7e44bfc85c34d4e3ee621320b1a3262cf6d538f3b960722186b08f5c863aaa5f1735a2900a0cdfd4afb63c89a8784cb0313e1e450eafe46c4b15ae41af28ca3ecf31edf5cea9912bf58caac2f75a6358cc78ea3849cf2a645e8c2e4a138c5ebf7cb7aa3bbb345b0adbc9542da440f7d1b8a8b73d22976b52266526ddd4d88d05bdb2b1d96d4f27ad073b83d34e022fd6f432ffef38fc2f4bf87b7cb44557c28ac6a215c8933116fce96b74c16621d6c32cd3028adce70ae3d65448f4a9d76273630be06b77fe17f2be84794a3ae239d51636124b47c01d2004a06ac1cb4bf9b43a2be93bafaddbe6803ae577f84685f5f72b0f7cb26ecb8f92bb1f00986fffc379dbee5445bca05428209449f42a8ee963f07e5181da1de67de91ccc054ab19c1fc19841598f8e717000209e22ad61971ff4638f143097072f7a613cadf014f48a69364dd157f8af52be745443daa6464b26740a7cd06bb0935249ec2e56d2458f685bc4d57e78e9d0b5860889e139256b8de77d9e5052a42c495dd2d6699839bfed9904b15b2679cbcadf52563d8bdb3c8dd861905b996e01f05d03f871468fdb8a821e6f33060e1068e42cbff00e954f7f4e5dce616859a0ac42847a0813c077036f33f68978b3333d9c4372109e541bf35b2234c13666868d4dee38d9c38cd1879ff0b4721aa0c6a532e3889a4424666f0b21d0d904d3043e00be6a9f47318969c685fb018ed650c131a1a02d52cacba130e11dd44ca14ba74502e35d57b0a3cf536058be82c0c5aa33217041c51ffd0da0c112278418da1542b4405d7c203add0f38af48f2001abda7edcf9d69da6b1c00f97c511027695f9715d8777a0595ee03dd1f51291125712998730bc70c79826ece3c6292a0853506a014a8a479cc6edf94fd8ca177dc2e72e81eabd3fa98dc6a979842d829e66fe2483e6ff83ccefec70809b5ef6fa65b4ee1fca10d0a2564a34ee13ac7bf0c6e806a2def00f8141351d4d16d0d20b617608bdf482eb03e311de80d7daa5641eac5734eb4d380410d4df118d723c2f1709b3fb40029897c01b9aa84bc2f1dc624658dfee2b943f3fd11985ada6e0c928ab133f96370d93fbe32422ef7a9833b2d7679bb77a3c1939c618050f42efae4469b84b2b640282b7e6102668ea8f45962e838eca65bae2d1424beaa1a3f7d25504e44d26a8eeb2727a8a3f2446eba5e959a6fe239e247c2fc1a483cf887b10e8f4111914e9ffa870aeaec6b365bda9ec1a940172597e06d76fe90d569598fa91a62f838c655d2b127df93ae5f608927e40ea2ba27b811c12793f913ff1d4e3e6315d89929e422471b85cb8104fa1ffd841a05fda8c22f5a3d939ba38ceaaaf8f928891c656872a9c368af98e54078a98a566afeb6797846094175aba4e94d4d25c125e170947b6a00e6a7cd3b19befb5b37f44c24ce1eba1a752d081cb7a075c1c209f67b0bd128b2acd01eab3405d9a4f521ef73054c223e78434a983b15667826072d8b5066e100ff97e3b3049d4200f7d441f5f46d7163b265d12b07454a6e0d355a56a2e1d0d955fe836b8880412faf0c67c8466149a6a96379063391d3bca243bba20e454edae457c4765fd48b8a69f4beab27775ce7d20ee41952ae30e5b50a298d9ee97008c29b4cd05ce8c80b612b308fcb61a906d9770c79c4d872bafbc232eb80768797a0ecb030640423335f9053280f80b28009aca90468bc9a8b307b094abff2a7af19afe78335088e4520a034a9a0e889ba977ba66b0ce19a3104df54e5b6fc450e8a15f3360006fac25dcdb355255e6b71c2a0b91bed1757827f2d590997a6d38a4e0fd87468fe0e3d6c4e063014f72585918f5a5db9a3c6869b3485d13da4067a1713b40d4786d109b112886ba469c2fe8685a660b52229ec38128b4e65ec273fc8bc2ea16d494753d82a3bebb75401dbd0e5e5ddc2ab342e791708e8fd1360bfe3bd395423db6f66dbc1850ea372a30e2662a2831b30b92cfc600023aa337e605318ad40da3d47b887ed00afeeae0782d8e7b07fbadeab6d4af43a57e59cf91bd4140ed01391b17e43caca98438028c7a64e0ac48fda0651322921a5d4c9269041743421e1414a1ae50b6d384e3f1fea7ae4f6d8ed0f353342b5217f31735f7b65567750ff481fa69fe1133ac284ff886ac6c2eceaab3c869ca31c79ce9835e035f863fd10ed0797b9a68546a563d113b8df3d4b6340fc0f395529c1b37a5c197796d8b2271e3bbf416206d775491d815eb136048c059871664961ce6a06a8f1ec35e59772eb29b793728cd89cfaa80c1261de61e8187a1fe1c6de0eb4a770f1cbcb47f04110d8b3247fbd9d12cf35629c3e2e83213503dca790e208df97bc4493c9a53430420c1f98193323462a254f1d9e88fbb27fb01174a852abe2e01076d0184ef39b622a9fbb91a65383b98f3ab87c24529cad098ad2d7e639112d0276244d6ed53059e8ee7145006381f6c6a8e268ae6476dad419944954f066a0e6c8aabca916f23e763f3f44dec4e865b215535d0282af4845ec6d60a46cd020b1d8d43dab4f22df5a672a960dae07041b3b9f032b3dffc82429041b02af5667275b1692d149e148308a5734e953663a538063f727b3626e1c8d9f4729a136398b0c5466e5e45cde21ba4797646fe21c9a193fd0a6aa99be6dbd70c4db72a87e221f2e39a371c6ba2867d49a4ecc378ecb5d0f97786aaccf7bc19005d4d2dac005af4b8a4efcdc082a13a1a3c304e6ea037033a1480d5c5b084c6c16ab027e69b0102a07b881cd59d581d0bfdd5747cf0f0f7cd80a3727b914aef76c5a295371660a9364075cc9b81a8c9612eef9b8134eb43135cddf49f64300785455f09b84bbdead443fb36031407995c7a63b3e5c8c1d9a4452a15ac0b2aa8601865430b8934582ea9518769cc360d5252605da2460db3315bda48a48171490d354ce36c69919602cb81af1c4c13b03c13d324a09b27ce804dd64c94942f6162680c33493384485a9229c565c741f2979f3f5bf6e8bfdb4bfeeae780658d9bf44fe1358f00648d710cbe57e90a797bbef8e54f20ea129732bf56fa6a70ddd2675a61ad7c0366030ca0b6cac8c5294db440a7889b0460e2926f767420928d66ab91c79e1180961a0200d054ebcf7a0db149a24b5e02553cebcb9e981f3ac36a8c27e42144227d5aff51732bacbffee934d4e7e6147d7981a7265bbd0afeccbff55f09ecef54e9441a42cc71ccaf75bccc603e4ba4933789944a0c0b6881a8402d9b4dc09a7845725050e4948275d44b4e0db11bc1d32d801467b2950d245cbf205b6705eab896bf46f73088239daacf1af522545a8ee8c74c9465eb40cbf911f7552dd5fe9c8c02024e7c19a6f2d43fdd2d80f10046e1048f44cf8489d35ea43da39ee14159b9f2299c646a71fb1b74647a12f70a70315879773ea862129cfff0e1ce8dc3be5940600aa8c002f615a428a9014bd78ff80f887f39feebe0ea3b26feed69867f772efe396f1321774f1ccedd4c3ac5c0f6cd9a5acdf71922574ae3fd9fba59934d8581f705ea8fe25c34c0c0220a929f66f9d4b526cc4a827b5385cfca23f088b88c230519de11656fdc63b22c391034a296c6c06c2e9391d12114cb0528de0c6df8e2a0044ff035c24ae27cea02fb2f0904713bdcefc0998c069919f3ac1869661e54b3b35b418d91a4db21ce31d2e6e8cab63b642b2252464f4ba9a3979ed651833e8c052e25efcb0d722e3bf8c30268d21ff604f440672136a8214fb7d5c9db4ca2f69b6dd8e3e79e700517d56bac75cea716f08742b180865364a5f953d8b10d86e865f545a200fa2c42e143b2a6bf4eaef1314bb373130a5284f8dd6119570299bd035f92ece5e097041d9701065e995fde364e1c134c212553d795853bfeeeaa5c9ee0b9eca1a4ca7469dc497e39ba3a41c1650b93cba04842ff95041aad826db330387bce64691b0807ed0ebaf1367004986ded71d0fd4193725142b2a9806363713f6b5e52a04f55e3dc4676b83f08fedaeecb32d3a8c214b549ed2c03c36c0b81f7c8183f7f9bdbd768841b7efe02e929f71c7f94e8d47abe6f37800cc36cb3fb6acf8d5bc37b9ee579ed18e3c041f647a77b370e994909a40d046a361fa65920923a4a8b01a9f14edf7f4ee0356cbc57aef3163142b01a7ec74563d1785d2c9ddd6905be5ffedc1f52f5ea7d43b550850250042082a87c98010e72501f4fc185ef7e6fb0fddf3e7451fde8bfe8db6e84882422894476f70e450ad909cd09a7fb79bfb1b06927c2760bdb89b0222b6cfb1f79ed37ad87d60159fa06fcd063538bd04128c2e7edf81d113aaa83c80d4334aa91ddcb6607734fbf1c678a6072e8f8f6059fd2ed0bddb68c7f6fa6f1366ac110b353a22f92d91f91846167f99b7bf336baeda3970864bb9d198a7a7ac8b3d17bf7ccd2e84f6eef11cc8e47e9539a3d8b5946f590f7eed9b32e7ed3aaeef4d8e966adcd317abc596ce9e397cf0645334b6944e92f56b1f40bd5f1cb17cff3e8b6452f1b99216cb7cd0b0db365f498f76dc3ce6d56cb9dc558053f520febf8c50b8eafc99ccc393eb30e9ce186fbb475f11463a74f5fe84724b76f745b3df44844fb49ab6cfcd2fd8b5536d69b0cfc11511d3947a6a61cab6cec19f6e5cb970a66a3dcb67d760f3811c5b42c7ec1b2460830fb1bbe8298f2a4cbded9f0f504ca0ec209104b9436b7e39f6cda02a45dc2862f21b66c219e3c29b385a0b2eff6be546bb2fb0cfbe8e973ce392709544cec3a21a84f0cce25ae03c23aa0a8e94d3e1dcbde6f46f1cc1ff026a5c201e110fae071d905b9fa4b45fd7dea6fb531fd8da0dd7bef90843beed5feb8430f69622290fba85dfec342f88e10e8120ffd8de00504fdadb6c0d1dfb3c078300cd3181631ed2919ff5d6bd58e6767c11e773c6e3a9c367f8e0f99c78e61d9c5309c7bd951f1d87cccaebf1142d0df8a87fe0e825655a9b17b515ef5e168a2a93fba497dba16670e1b538755da46ec272fcbea13ad627b47865bc3300cd31f356a618f337e451b7bd4d4ccfebc13c921d461d858a6747bcf4ec34420f31925b33f2f7e72a33e3fbab43f2fbbf77bfdd1a5ed5dfb8e4ebe39c5dfc7693591dc570f614769c8835d638d354ad1b363fd76b07bf1d8519f39e64fd3976e2d63d877a0bc87e984a07eefe5f99f79934f4f659aebc8d95123ec2f4659ed2f46e97294093f9be2f97876c5ff46d81f0fb7d53c7642eca9be6684d5ea4f79fa4b613cf56777e576c6a8899e1eda3eba63d488648d56d96731cad4a9238cb05afda954947aed981112b6f7cf0809dfcece3ea2477dca108a105f3b21de87b0ee4ebb22dcf61ea3ccbaa3c5ae316a1815138178faeb34151347c04ec5d025b8356ddba8181eac949a7246fd1921c10809247c4648d0befbb83722896d9b46c5449cf8352ef401c2f503977d632724eb410267af1fb2740e308a6243d8e3db6eb767871d91edd97f24cc302c9bdf32067d5a20a25b3b1c72efe550d027ee785786cd7967add9b51d90ed88c84ab1990df98c8cd8f6f266595c31e0985dcc4ed811c12284f671ffc86df537826d37fd056dfb19c4c6f69178667f46516cab2114613e434111a4dde2475e582a654b2756b68cd4b5a78635b8901e814b2ed726a2d9d82725e236f6bab4690b474ed8128a204f846dd90206c6a60fe1c8093b42111c0085500d7570a30c40d0f3829dcc87303d94f1c18cbd4c7aa6ac7258b0a4872636ddf0d503191cdcf9103e1e3b0c072de6e0ac477cd34a040ba6919191110b17d50bb15a18a65b55cb2e745fb1d30be163df94b6773a2e6dba456d76a1eef4b57ebb10cdeb2f159bdf6b3a7a993a530875ec583bfe09eb1666752bd3add6764a7f2f949dbe7b727a774fc72dde69740b3bcd6d74a4b2535fa35b34bae5e956b7a5fb76ab57682509d9df67ba95ddfb49c7272d7a936e799b6eb5b6a05692903da75b57b77e34d62c7c4697a6e39225a525a91d2f54a20bdb2d597c52abb6d8ea94974ce32d872c4c5ba5aa5994c6284a2b83d1b6b849ca7a811f8ff4327566cc474988a61749646eba6fb20c27b06007745fe66609ccfc818414c2552a1d97e2d28d5eeae8ee4eb946db5d4b86c84a92a7b932a3a46e41e8c7b9d0007e7388731e03d06f511db71c833b7ab7b987f29ee3de7348d510efa87b47fd9356a04e1d76403abe9a7f310fd5e70fdfe424cae342ff4d520b42aadffc9a87a6bae846b76eaec2a9591e3a72c299333fd8aa2136df6ef3edfb4648dc717b8e6fcfa1bfd3f16df29158b3da3f5276993fbc6c59410b0b53670add1ce75269fec0d1adb8242e993af3d04bce3fb8f445174b00ffe2923de36f32ce6316ba398e6ee5df7c476e19b1765c76aa14707e731570f42d109fa8f4cf54e5a5a24865eacce32829452af937c7d9517f3074a06ea31dbb21d502996647366241fd79d7749cdd4f58bf30f7b7da437208b6bb0b20c72d53673e0039e66400e47c9d3f2c7f43514b4d34979a34692297787ce27ceef8bc44924be68f9bcf7b1742564bf524211c4e9d88935b384f12c2f377e4d68e2709e1bfc94837d7dfdc15e9664746bab92a23dde824aa8f9cb0e9af3f49f5d03d54daf3d662dce5217bf92bc3092c9cf338fc8e674838ba088443d6cd55dfb09b0d5f3db8f68d9cdc327f2409e1389fbf93838710f6a0652b4dd9f3128bccc27dfe2882383c0e79363cc4d178eacc7feacc0ff3d03b3f38ff76ca80f346074d9d1d2f8261c7af5d3b7ef39bf35065f8d9a500593bba21341f3961df879065388105c2a56e41eefa24207c87def4c73d0908bfd190d32f60fb6a2820e812dc5c5ab153d3df0bd8de52a1a89476ec824029019c3a124a0976bc46259ce3e8d4d471296d552e812a9760c76fec827668db4100b276683c759436ec80826e9e6f744abaf63419e590374274f8aedbb9e557b2cb8efbeef00977b6842f162cd9f2d583971db702b6a41b67cef06281ebd564cb183d43707935a1f26a72f46aa2f45a0199d70aa2bc56d06405482f159469f252c1929e215e2a0083553a3187a2f4f0862d9b9e526a002c66d005958207276ac073c3170f5578b8814919fa23c5809e1830ddf0c5648d1d0f9988d9b5d65a691a2f263c802f263cd8338e1c9e9e1ea44bda2c6253c21e248cb55082310d68c0262b47989b8204731bbe983c9101a3367c3151d233830f768f0d3b80c9d9c1cb9c29026cf8da81c9ae1bbe76c0617fa98984933ad2984e894b03a348af0de90b7c7558f160dbe0a026212971b2c2e322536348a909d214314082019627e060c29584431134280184452a82bb392031d9906cd0c2c053e615717877c3970e34b86430e0a70171783c4e660fb829f38a30f094c9e3845ae171b1298558363da574062466b0b229cd1bbe742862e7d8f0a5c3922d9a938c041e05f424c1da86af2558f4581560c3570e5f72f0627f2b1fe4c0450c396821c3b6e12b871b5058719e84f684bd4b789c3031b9c09381c789d403080209183134f9628b0a525862cc0f57c470041b41b0e8a16b531a94d01a789cd81ca2ec2df5882dd83e85930313ec0c0f150d26b4cb0ef3a701130b1a64ea5f32831a7e1a40975ca921954a91b063f586af252c58a2647f3b5b6c9425486658e2eac6cce02489141cd248820318243774d901d8f085830c70a8527b98c0c0ad33f284c13a48f1448a5d8f8a51723c50f0b713d441abe1d3cebc66f1ce4401099b470cfe764a38057a2002c9b52bbcc1aeb87e0bd875cbc636266365034208eb0f862f1c86d8f119a6b55be90382d9da3f23104cec1e9061bf9f5193fd6dda0804b3636b6b1aa6c9ad05c93418b63d1277a68bf4b8007fa63d29bd01968230292003692803030f47e4d0431563ba2803bb403a628d28beb8614c1032d82e0e2fa84a969494c1b5d65aeb0d4a52fe88c00d5aa40edc9fc52970d18841936001fbeaac662677cef9a855438c6c9448591cedf97ff5726655ddf1fb304d07d9545607d9b62ad341b6adc274906dcfbd7f663d32a324323535b251ead0d3464f1bb8470c9697b587663b0bd08a46711a610173c58b0d4f44381ebeae64b9b09e38b942ddd5a50f58a1bc9e707d5c98797c83808117a80da90daa2cc98ed1731ace0eb7a528d590b8e5e9c572dc477bde66886d23abec9aebf8bcb4b2b3d3289b3b86b4b9e3259aecec2a22fa33bd3e7b82ccaee25ae2061b7585c99cb9de8a3b22f319eadf69dbc75f8e3bc52e48087484606fef88d45cc74d5d8c02d37fddbbc8799d90ae8b5d903984eb88d8bcbb4962d9d0e9f3f1c342f06b0d50cddceee5a17ab851a710eca1fc9d2070277c384207624041c513d6ed86d89ddd6bea82cc9bf24fda26dfa86152db9ff6f9d90919c1906d047ba3c79dfeb45d4fe750fd08f6cd5fbda4dbbb5f9b9c3acd39dee5a11cdae958c6ba20f4f8b50b426fab8a88e93a6c478152a743d8874cef6ef3477f6f57243bbdfcea103d3c0da65529ad1a6273d36d6ee2bafc61e73c791dd986fee635637a887b7dcd4df5524e470a90b5c348869b2781f0005ffd7d64fdcc9b1c36b9260f71bf9a46e3ac22c2dd74ee26ad7111060718196daf43c1280a585bbb6843ed34c3b0b3d1deb67b228c3b11b68f64dbdec4156d7b2484ad1d5e18b6ddb408529b28b5b57aafc36285cb9edaea943cd9009f7bd2c09b0c3c25100ce14b092b5bd21d281165c3571256ec1f1bbe9260b2af097ef58281932d81f8913af23d66e00f5ab182f421f42d6f04fa4c2a66f607c7d8f1890be5ef0ffb65054caac796ef3183b3820567c39795275652e0c4999c0d5f4e74d163c397134890b0e1ab09389ae081091bbe9a30a2091c6acc88f1bc705ca8f0ac1051a30313496ed2d8f1526df8aa62e555e5c98e1e3238fea330a523870daa86e6c69b4e5cc8a136ddb083281f17ee6d21b765191c3f87a6965b69bf80753e6e2ced23d97e81a633ddd9bd806de8d342f4b25fe03ce8d34274ed2327ec78972bc62f6e5402c7dbd7125aea8f404a72b2afe434952d3fee3ad994257f40d6115e7c1645af0f4734a147d1ee882d3b27cee94dbd4375b851087cdab13189893433c7a056542bd894ec899db2442bb38d71392953b670b7072db1ab52a8782c7801931e3b0b60ba4d708d81ccc93af192d205d268483756c91104e77b98c0df8e14242398e4f45081bb0d5f529c4869b2bf1c586bd502633aa34b1886d51a065231b5d2a59a651c605a50060c982f5ebe8001732557370b35d4f0fbad95d4cbaa8bc4be836171d39c4d51d45622f2dc85c873da68dbdffbaafd66a38d11c9adb576c5ea95bbea61b167d9b45693b64a39b3634455e93910e7b01edda8c4916f79046fa971209028648c388272c6bea64af7b7b33f23246cfa09b32cdbb6d6ccce7b739838829c9a8a8923dc9a21092a5d922b496b95dc670487521eb7590c4906a074a9c78e006db7473470249e39fc8276fdcc99fe22a5ff901d3be66d1008860b469b522dbb5e4564d6287bfbb4c943db6d4e03c5caaeb71957736ab46fa0081c97bff9d122759e1a4d94d1b4d9afcdd9613724a397c676413852fe489c2c83ea49224beb84d8947dea36dfd0ed37c37d9f09e98ad0edf636fb7df633e18eabb48e3bc4ae12624f5379c8e67073b985d473dce4cf3b7d2a17a9b7fac3eff4b715c1a7bafbcf1cb2bde639b210b8b7abb24d1eea5ea33b9efc190d79b2d3926655bc9452ce5ecafdd2ffc86b2fcd2d5c8ebbb6877521daab711b1421bba68f120a981daf33b9fa995f2b08fcfe91b53b4282a31850e0da10ae20acf99ba7a7540fc14f7da48585764af74682f481998e3baf5e6b338ed3e4b79fb63c5fe79472a3fb9457f79a7286edae6e9c2314616eefae7540dd33dd9b26924462fddea637e5ee32952b538e562c67f22c0cf026334d769a6ca58ed6719799fcd6b8d38ec809797bec80b48d6eba51bab10c313486c0f055849657114a452051c4930b5cf8e39a20953e22bd7c5cade68fa7567bd61d2d1721bdf66a24d8447367df3290a66d9e9b4a13b8c343bb2da79f9259f03f408115b2dd3d4de4643d4ee00d506085254ccc96d4ce523859965dc15f2a85b342b6810f44207167678188045974255d1891307c11a1b4e16b082b3602367c0dd1c3ae96daaea70a8c7d6251733d587090f42144810824eefa1536f001e943be3e6219a2c9a69f7772a1bcf630876ec9adb05d0b23bc29c37de4cedb016d50aeea36bd9333cf394ddd3dd39198a5cb0a902b4aa35010bba7e6e9823ffaa57e44a4253d5a30fcc7f36fb54d9de99aa2c9f4abf564c15fd42e71b65267a6e4ead69b32f72d5722bae9f5916be39cb05ced9e18e07938b5d01298a749942d1f9b48a8a589953eece7d4b21f0634008520e9c303e3c90e68bb5aa54a01bfe62a9c4ef31a8de4741a6db4af67e2de19751a95ad699ae6e40ac2a93fabd42d7161ce15f2e5ec6b71a40fcfd6d7bcc709fcf5d8f5da7b481f34a7d3bc1ae1a957004d8622d46428754c5ee66cfeeee72da723dc35d35cf5a45403031a23d3e6128f02e23de4d99fd1923daf41c0b3bf06eca987b80f65b7f4e3f4c763f7e9f8ff50a7dc651eb9f20e734f167cbf7d47fae8608f0daf694f7f764f08a1fe38ce6af9eb11c4ea0c66da491a060f955bf440d1030511854a9462557a40fdcd8865945c7d3bd80b85152756d90207a70ab6d7926a1c25ac8aae782457979288ae7a7056833962c96799e460dd6030fdfcacc76615fcd9207272a44ee4d9f43d628c31c62a050e9aff9993677719255790cbb7b3b3b3b3b3336f2dc69afe5229ab75ddd914903a3576f4105efea0b6c70618e7cbe992eae19202836118771a77ad899ab24729e65029b992af5b46292f4d71ea60a9e974d33dede5f0e35338873ea947fd19c9c1357f39315bceda63961e3b14a1d66f4c6d8dcd0dd5df337dd601a52cd12402ed4d863b95e9d69173649b9cca359926c79bbc63a0ce74d34d9aa86eef98f71fa965fb9f698de44c3a33ddb4238263a507626c69948a558d6aea99a2878c153b73e68c965d4fb74e0601cfae7a886a2b5d20c8d943f4d8e1edb52db5fd47ae76d45c771fb3b8efb96ce56adbf4672407ee0c043990cb9c9501e6e46abaa0278a2cfbfc4f967fe839e8e3c28e212bec39753687e8650e92ab287d649ccc43f341a6fe61805cd51fb9aa158a5087401f0ffac45d663f433dfbd5b89c2e88d136511c303bfb7db9a0cbd64ebd7bab695e6d0764bd6ff17613614365eff6de965107f28a04c910599693ba08cd5e900c91b50dd14ebd6b47e59afc799fd103bc6bbf262eeb808ec43334fb7ccee937cefc759ff698ed8a64b7fa9b45b47745e8aff72be4a3dfce7545b2a36e334aab88dc7b50fb90ecdfd43471bee636595724fbc7fdd33e77848204e1013e7bec36379b5e933f1afd196da238e43d6e9c87ba6b8f365ede38ad71dc10487b9e72d0c7857871e700a3283a2173c36e08766dfb2ccb20f601268d8d367722792484edfde6a1ee70a78070e48afe87cde15119db7c31b3e186fb6ebaa37cec509a16df497c7b934d0774baebe83fd2c9136abd0f779f49bbf01b6da42694a76445aee86384cfa13e4ef0179d58d9f49ba67544628ce264d3c728914a9c12ab401fb829cc72a0d85cbb943972456b5724bed35f77d3bf4ebb60746317ff12c3c9fe12e58bd28edd6d277d74efba22f8567ff2f85c57c4f4abbf1c79930b465b62db154169dd909a1c95d0d3e4c8e407fc45177d0d67d95c1eb359a48f4e4bb4a2eb7e63361deb803a9389c644137197e9f66182e96d58f8a85c5122e943ea9cb7a04ff733757876f8088151a01f4f8ada15e88f2218725cc76d4e7568d75192b36c9ee3f4ab1c19ca126c88e43649bd92b23375fa3b3d6a2a7d9c7476ca61fc4efae84e8ff38bd3e54d0636fd6e1d1036619309c7cef4aeeb5272457f3b7fa020579c90f4f1753b64366514e48ade0707dc59b1298e198520d3efed804c8f510f759758aee817956c72496472b90ec8747d80c01fb4028520ae03925d9646e44dbfb0c3eff20b717797d98824327777533662baea48dcdda7c9f3b407a05c6171dfeb7540dce5ee95d2d4016d546af6715b3d542f619437754072cb49ee4063be625f2e82c15e9ab06997bda68fa02c413ec959dab3af56964c52111922927b62b5aa88442b89b816a33f61b31ef3bc8c712753907a6e484584dec33f5de621ac6b1ef20e379134416902cd3f2249bf797cec3419e92c1ad9328146b7a02ca1be457318a02ce174284bf05ea529cfd364c8bab003b2e7301ca43bd6dcabf79f69ca435eeeb28a083d777aee3f13ca95dc32cd6635abf5a3265977b81af6cce61a2569b7b9cdefe4501ba5e1136475993b96f4deae7b87fd4eac0886716b6b45b0b83b7cc21a56843a649d4e5966833d43e5c8ba9065938b50d771d809a1ae4317e568e1a21c6fd9bc26474ebab7c949daefbd272d6eed9e32779cb76730cbb20cc3eab525617676cc64b398b558d8dd5b45f6b75efdb900c396cfbad3d3696edbe974aa9a76a2dccddc49522835fa8b5b229d5563b46f77284da8d1ad24fc56d2e935efb05f4cf34b93e3c62649c3bd8bfbca6fdc6fde5e93214b9e48b6bed6feec89a4cc708316a3188cbb62698f5e622831d159f3472425848f463bca0eca15755d08a90415c1308fcdcf2e6563d8589876cdd7cb18843616fdccae8da58b603885b183227e70c41303d4ae79250abd972c5b9e040584d164cb1e32029f71f0d7833b0bdbc63408e06b1cb28160db33f26c193232391e30b258fa25c9b5a1865376388c9a4186c393bb658a3068e080d8a224611630b27859dad9862f2f66705fbcd8411730aa7c51e68b25139731fdb9a03f236be1b3ae48bca6bf4ddbffcc2cbb60f4000c8503d60ef7c76d99eda965b303c224d0503ddd34cb126b5fa83e37f8a4a076915bf0f8d490c3e353434e86e50b2edc95deefe37d0be9041677a95b4942f29e6e799742f152b73c8d75a7934416a7e5e335624597cab230756866fa0a5387feada4eedc3d6df2ae694fb782a60eed38dddad9e092b6a31db2b643566441d60bd827646d39cb5f1cf2c0fc9fd03576a60e2ec5d1e9a3c38ed538b93aa2892562d8d0e5072a8ec82d00030e36962811062b7b950103237696653e4a50ab1c14e652e73814cecb0b257bc786af2fa26cbbe1eb8b271cfd0f7f5937e6a22e059961744102909569cf640701c84232c309ac0cb2b42331ca461230627541479a6e250565d79ee9566465bfb10b3a8adf5441f12aa852481212c2744b86c8c27e35526461dfa8a45efdd4a1f45ac690851dc2ecf4b58b0064d95700b2e8ad0064d95f3a25964558a9f52a9258941d49a667388155841d09a6673881251f244fa5a42a7891a1e435060b7c7288e30636c2d0e06383cf0e5d80d1c5161e9c6d3270f6786b2db4b2a5ccdc2f0b3865b3ac1d835e76baf0c095e936bbc7a096ed311f991b04a96df5f7816d24b56536a74f0cf71e619c8b92824ec726134d515290e934ba65c4f2345481de5365d79eddfe9e72d144bdc8f45692d0e928ddaaf9e92d9ae3ebc8aa781d872c2faba256a560ba7715e675680d5951b67c565453a4e3de63a74a81e6a60bd1dca42327452d54f3a96d2ea2b9496bc7b204ca76ea6cdfe4932e966c49bba023ac8b92ec299b74cb8875bacd4127cf3379a6a0234fb792824c67c5a023fcd36f96599029d09b6e011d9fa679abb9d0b2e5b32e5c5c74d9b10352a5e07934f7302d64fad4ad9a9bb435229fa9826c0eb7508ea3ae23d3bc371af41348752f446fbad0bc771f17fe78b613762d3a1d759c8b741cff52fd6d3a7212779c8bf06db42c8bd9b3bc619ad0e9a82dfb96ed29a7a64ecdb491d426400ea4e4604b1abdd190b7d1454942f8285d847f0a3a4252a3559646ab322458abac56dd0b099db42ad3aaab53309d5e056fbe0b2a1baab46fb737e12d0b997eba965330fda45b49560b79c7bae5bd959d9541169689e8964ad748931807326099e223c36b8b2aaf2d8eaeddac766f013875b22d9571bfb700a7371d6424358d3229b934f14101521732db7689f2d2c20b8d8bd7acd8da6fb06831450756bc749085a339a73a69d8c31ed68478683841d05cf753f7014ea5c2b7008f83603a87750aaae35c4885a38578700741b3b04d1cd6346c24b5bbd48d8e7befbdf7de7b511a854271f73ccff33c1f14586bedabcb18af2e56acb5f1f6a585936d394ec5fd74958793b200ce41b080ea3c5499474a08e72008a9ce03e74220681c954ef17c20e575e1b227a5b1d639eb9c531e995bcecb493919f7e46c1c211ec639e5d428945055a9a4945209b1b8e53c47cfd139299c94424a2985b0d67c64ee2a2b9119446f79e9436aa9b53cd545e20522c618634764ce30d0460921841042082184328b0b254723a591c623ad39e5189b5e4620f08b27a2fbc3fec1cb38b5df89d529b726ede186bd5afdc98cd95b3db461adb3d29d1d5369f52a5bafc22a9db25eca4d215ca8c8674db260b2b70dc3b20ccbb22cc33221f5f4928b5896654374845ec811a6a55cddb0eedb3e4435cd0dac5d7ee8da2a3f14a5946e944df6791d594e79d764da448cb0e070667f46585caeedc2a4e2da5b0b5a5c9b9e68dbe2c2a83dcbb83ea8e4da54e788234c541c611eb2b1331b28c23cec503d3f9828e8b37d1ed3a068074464eb89037fa88d4128024ab341e5d8b2dc281becdadb5114cbaab861d9a75d7575904da56d57d50dc322c568b63d7bc6e5c98bcc8e5d11232c4b5cdb05a328a8b8824c2bae4da9b836d5476619d7deb4174798efb838c23483e310341ccd704f94064f9c56657318cbb0c5186b78c3185fdc610e7b42de9781fd597963a2946e1ba5df367ab7ac03425dc1dba15ccd0dd3300cc3aad60161da6691258551bae5b8eb770f6fb665f0f67b39746976b8b367c7bedde62faab0f833b37c6462fb46d55569aa6aaf8a966e475a9b7247e6a69cded78b7dbf9de66c3b7c654126f1b0039a5613001f2549084f25c698d2c128dc150481524a29a594529ce7ac7a481f33c6380029c30d12373c96058061cfb24502cf7f340537005848dc39186637cb6af780f9ec586623942bb85029db908bebc98e1bc813985e315c5c4da20bf131ce09af09088e875c5c4d763492315e0180cec74749548780546badb5d65a719eb3ea51b12979e01da40b02a5f413d64b2d177200fb3cfd2811ecf3b51b426b0794d10c03a1018e73e34f6ac6851cc83850e53122f304bb3ecb5f1daa9f32d64f2146588c5c9ce3383ca58f29511cae34e2a8727618e0c65a9812b252eb30c0cd8121bd36f82849cea72e9426c847a95138bee7d660482f86514eaeb063b9c24e33102af8e3388c6194520d25fb8f9c74669a06d73f86fb7118e772052409fce1ec89f39c558fd38ffcc1055203c63848dc267c94043d0c695639144e65205850291c2c43a51990a04c4cea0e1f25d96fd816e883dee2a95513ab675c0e7bf82829ca12e48f92a08fadd65aeb85e4aa1e881218852021e96352995b8891463ab5e845a20048126cf1c77103c8acc5dff7b7edb9419d1e5b0fb99adf01b203fe7a6c7bbec70e093c0ac09494f0b2e777e785224c14e46a1e880ef8bb7b1e85a05a730b71cbcb98a1d20c4c62ee28a6ab97346e90b8299e36a989e5d05a28f15112274b989f874090c0f29f154432a0f30d739e527aa3cdd373009dd386317eeea82b912046320895228b932d3f891845b1e96796dd10a8542fb114371ee69c1962c3d70f86d89f69c393b0e12b8e34368c3a62f87321a63f4a8af233e2e2d201e620b0dc908b6b0917976bc3d799a5fd9d7046695f138e5c499ae186af3355b69d3f762435037fa91e15ab874a33206da834031355d52dc43dafa1c4cb571c60e48539df8f92e6939c95140f29c4590887cd03a9418c7174d9f065c68bfd85b0e50db0e1cbcc946dad0c78fe43e517a89c2f425d2ed4bc9cd8d42d4428c227531388ce8a923ea0c4cb0805e9acf81f3969007254eb67e58020c1d93f6af14c7d574ab10c8bb2ea17eaa67ace2980a0604bc46695b6be0738903061e58921b810038c124a948c81a30833708c81c17186d4628b4bb3c8018d4958334db20a47131f0ca1848b1254d040c5982d57e4a8e249920d57c278c30c8bc211655338a604a006282e732931e3f2c2ae7a6014ce8f7aaa13c33ce1620b24315ea0b8010b882a4e4891411667b8ae964d290512c30e1c3f98ff7cc1d18685a38d1d93a001151328a3c9105f24f172030b48460c6ab0821a7041030d64c08a4fb1608c9923c26461a64c18770659b4a08d2d4be4f00414707ca00d9e367cdaf0010f6f94f101928d09816d6fe890450bf3c442e1460e0a73a98fe1301b1beb224436260419bc1126880c2461c10c6810d3a40a1a5078a2054080a1a10c1348bc3e45971dbcd185a34193e695d4996fe0607f3956dee82193c28d3259dea8e20d28a814cf4a724a323b5f1655f46006597050061915307385103850e2e5022ea85426ec557283936f08f106142d0aabb921c50d2038322de8a10b1a50b992258d1ffc7003209cd0011957980c6145160337786801b6ed7063ca5471230a3265b25828dc1843c68d246dc0c129e130c6c61a775c2e974b89151fb7cc1ff4098ffe56557fc734d526ed69b8eab07f9f5ee60fc9c3b3b3239750993a4f616cc492d30c3c0463973d5b49516f8993bab674c55674b12651b631ea22ca36a68780a43e02cf6cf917b22df56734c36600862cc8aaf34774b1e61b3b7ed996f08d06481f1168830c5c411f1168c30db882fb8355ecf9452ddb0c0cdfd8707f108b3dcf387ac38a333cb8a18316d6bcb2041a5bba1421e58a2bace90416314890792dbd806544049438a01051864c1a3d60653103132c7ca0460f48b2604d1f62e0228729b678a34b10acf99df9230429da60220a2e92f8000dd6ec62690917e4e0439929de60cdffd42736894f1e529f31e69c5e5caa34ab6c430b1b5c5e6d88a95c1738eab4e1451b5df64777940b73a0e422c6281fe39ca20b1b646e906121a382ade30c0ea017587040230757e07086873194e8c10f505c3a10c28c2b3457c6b4c18613325274d428238e1d70c1e40a33a00d96680192325c3c89620936a6989ed802b5ca19a365cc1763b458838dcc099a0d5f63981803c4162936036616b7601c4a35ea0352a4f172b951a586309edca0032d908eca04c1450fccf0b830a822d56335468635cc44913c3c5658cb634319505001041a4dc29061e50a296090d4304612343ee0c4fe56fbf136b113a0032741f8b0461664d260ed60f224cb146492084385159fa2c2063c3620c0185f584982092faec0810c7c9930411623a494e104184d8658c30b1bbc7a10e6b5e4030d4a113bb821840f3f2cf15a038bee5631aad2450639240d71c6120f3e55cc1e98590389358cf08162a90cb5a8319492f0c1b2d4657fd827064b36d83e51e06cc3d7920ca85d7ae20c9f2b5f9688c0c6d82cdd80598b8dc0648c154489620824de48415218417481e2d2e14b1a56ba3466c0dd25d2a042d35062f2c166c7862f35c8a831461bf2908c684403174cccc0060c76d8c207020053c5152b5a4011c6952cb012320440c88084cb11165850813531e60a34c4785283307424116badb5d65a6badf5938bf9f3822c6304f102e3c889510e5364d1024b1431989941199b4bc5470a16ebc46a8cb1d2491f6bac31d6a901d8a3ea13608ffa08b5d02106941ebe78598249131da6208388306630230a247648a20615981a56e4c06a30458d18d8334a90c4c00a2ea650c1c115451736f84026ca15336a54d9d2a842e70d6a1871eb86af303198d1820c09bba18106c6387534ac2481860d3ebce00c313fbce075c617253e2fe0367c9da183aac9299588c2891a6c4083154060d1c403dab8020e2096b828c344938e08ee884c8d1b36359a2479717930803be50c0e7c6882c9173d80e1a58b1a40e921075b6c60034b0ae20ddb7dc1164e8a5277839d65383338a30a06f30a63e61566061f255e6292c8321f29a91eab140ae3e42c8171ea3c307306106734c178fa2cf1adb68c58b64c03892352c0440e515ce08505c5f070851466dcd0e20665244d39e24ac1801426b0a821494c191e8c30c2881c23a0f0d08c075e9461c68b076136a53e51541bbecab862631bbecad092d1df38ef968b725192d076ef4532b79284ee762abf5dd342dda76e45a9319e3ad93d99e33a8edf4a12b2798c512895d241ba952494e351b776a64ef61cd7a173e8d68fce8e752bcb6ea3e1d4d93e73772e5ffaed42f49b6e25696fddd36b5a68becba2bebac5c2d4c936a95bd1b52446dd5a61ea64bfe7244d763a64c58c46663559cd212b6614b24c99de6b2505d5e85664e5a2fbeda75c942474757cf2a25d06a64265ea64d9371a182b6a254100b2eab143d6a68bea21eb8b5476f62d435697218bcb9075cb5052c6937da184d283a20ac2ae4264d5ff4896d294d912d71ede28752b2948b7228b625a85ae1e29b26afda68f929cc0c28e1459f5da678eac2b23ac927a2c9a83f20af631dbfff810b14dfa79facd7eead8473d75ab65ff4125294fed216bb2b057ab87e0529413cc9d87396130c6ddef9178e75e3b550addef853aad853cad27c60161b9923c7225646a68b40f4feb10f66fc810bd861deb86c463df7eb71ccfececdbd4b402648c18165175b5ba5d770f4f632a7a1c373d4efa0081bfd56ac5791e778853f3070952479efaf8803f12a036c16482c904a4b37036e533fb5ce769249cc61a4f1d78a9492d8b3b7f6c77cbb07504e366b6560c33bbc2b02709702b49fba63f75e45bdb5bf8aed8b7185cf5113af3914dfbb0dbc3eec8a49bfd892a2592f617b3af74283bddb31b929d66b5d3e80eb0ec6ac5865eec0b4b80e14b8c29fb9a606bfbdcb0ae08942bac65c4da1ea56e418523284b983a73bb0aa64d5b093f2857a88a2b942ba9a518a6cf68c7f86bba9ac6d5173ccbe9a1225da7b1cc2d10d9bf80dda4ed6d574416311d07a2fba864edb495450d32c666240000006314002028140a888442a150309c6a9b281f14000b9ab24464481408a32086511064103104194308010000630c88d0d4900375cca1d5a4d723ce37062ed9346c430fdaa20302e9c162470da16d8d4df4049342b18300ee09a0694e91046d6c61790453b8e0d7c5ecf0aaf9a74af07cc8a3684dc86052d0dca3d2572421fa9b826feefbf1a6c5cec608898130d811f8e7d9452d7351c83fceda5653ddbfc07476a6bf62e95fa82bf19321990a78af02f7e7cb5a320cfd459d22ebac62ab5ce8768f79c71864a10548404b77bb6f0527e5573d0dd40f2335db85011e851eab4f493631016d5d41149817d69dc1b6069b57f359a719608154b751badd8d2d86d0191324e2a053ade5b3b7eb85a05eefcc5aee10c6b0c2e51a2d5f0fc3317756e0858d8cb28e72c2321cab02636cdcecb946e4d5e046d74053ef53efbb979e20cbfda4d23b2ab782f7112a4e285097ddd8c0d7dcf28cd9f916c7c2e2c5568329ed7a1209eda95d1f6f4180ccf5fc270fadbaa11ad4600e7be6f3973f1991c41a18ffc525a91f86f9c508ed7d007a425db014063ccaad2699455cfe3d698dbb4976f82ad92fbac844a027f44092903d6ad03f4ee382a79071730171d6940392aa4d684dbb999247f10f7bc874d64b883b37ec6a9c06abc364b4c2370a6e9a49353fc50371954adba91b1aef2031e14b77d1053e9d2003750f9a4c697af3d830e342d74a1c784d7359481e3788445dc5ac73e5a15cce14ac5b49f44de4838159fd87fcb5254f0720a26dce18351cc9739fea569490f379e2cf108493a87c34911d36ec1cc0026c1fed950ed963870ad3c241632d36f2f400ea34dc0389fb6f425a45bcdfe9d350aaba40d7f5ad6b6ec1ff52a9a73f9feae33017da9d03898a0d90dbdd038501f4c072cfe9985ff38e4822f696e85c24a69d986956da0d78c59eb83693148f571581f8763498503b0325027439d1254b96c6a099cb200c6b927d80359cb036ee47692d2a18b51e22478dd3b30c825b7e5e97e01c3b34458ae1e4828807af34d7e46c32fa8eefaf74082910845d557fff5c0a5f2b8328ff031326f1c1019f65acce05428e67ddaf484bf853e32fc61e509c74329b20cd65ded6ca0dd02ff154e8566411e6d2affe00216bede025ff8379190e0c75616725e6ea48a0b28157ea97716fa471425de1ac1694c106bc0798073078ce01c607fabfc7438e94735cc07610e831d15b6d902520b6180a982b7187ead6351210a7b84cf9be18dea677020cb0df4338d642d7a3178c347a67ef83f69d2a4ccc89b1db9712a3f25d004def3ab4b73a38ded25008e5870613a223204e2a8fa9a7a968ba81f1af8420de6920b8152d9402ae1a325ddea1e987b841e8fa0a2d3e742d5040601c18eeb9c954aab181d56a1420a134593b6f0f0f3700a970a7c0900b97486fd012c7f312ec4ee589a2f104c84f3fcb3f1ad5c55441cae65d24460a102afe71a102e783b74080c20c1a649cb04e2814cf463357328b07b97b7278d556e240620f7e8f5f14199124485192cdc693fd839e9982e7cec52fb7a96f564b05cc858c4cb4f3d8c6451c016c829b5d508f22f57c6b27020e17b43cb2a39d9f59b7b44aac601ff970c9735a541da42fa5f492282a197fc19b677b990186e7d99d0075724f3d177ef2fc5886a0c0292b6ba29a55b62b63efba2f8b37964e8d059db649a4a017bd995a1b7ff8e8b2cd9948bca23a1ac53d449f350533cf4528b1c22f44e78488f4ad77f9e41c82cee21234ef3913c1962a0c5184f1b918b18295f5703890774ccfae07603a5cdd647538810be93f6a938c6b7307c54a138be373d86c6c87257e82862132f7d33ad69bb600738aaf74954a384432239b0c1bcceb68d3307915cdce8b7bd2330ed59b49312baaf85897d20022284157cfd16605d03572d2f085711248464a965f01038a5148769b22f1434c18a9daa6f21d646b35d833804547acaac9ae0b3c8d9d782cc092e5af51f836aaab8686de4e793b671bfecd3447a20730f3da0ecadd60729ebd0f90cddb5c683bc877afe8875b4bf9c1cd2026f2292639fce437264842489c388db189f7149bf2f3430409fea07e4fd6d2e750aeebf5c0dc9d25e0c0ae70fcd52a070ad3509b0e9a320253f0a82ea2f40454e52ec05e85e8b5c4b05031dd6576b24b290fbfe1ba443b3af4c469eae307b13730366359226454465f4fc30e6c95da383b4d2c6858d36f9a1ded6b28f3257be1ed3d297d6f50e3c4d4b1ba8981a05778552261b547628bd7c05191a7d6a1277a00288faf7ceb106a97fe6ebaf2c24aaeb6549dd823b8379bf2110da970f4ecbb72463106e358617f2c892064d711efd333871081e7828a6299bedb4c72c4b2377365af4fc971b9f25aa5874ea4a6934ad1f76d6eca5f3d586d23f9ea506a04ddc13fb216479f5d30737227132693896daea0a42d00aab4932f06610af722180686492481047001f1b5b91481e84a02c19fdcb853fc4bfff0d60c2747686797340fb31157d2e3d757c0f3295ecc416ae54a8d9c11188f366f0d3cea941a66e87b868448ed6f382f444a0bda0da5647129e3f7bb938c31cbcb832c31eb28e958f4afc95e8957cd04dd24669151e25749840882ec18d220b75285132e6ee8804cea6203fb7b322aa122ece02a278ff7022f09e7d6acbead7ce1e2b8262e08a7a4638c361951b370e10a3feba1c9ffa3ff4fcd744e3e74631b8cfffa33701f635be1317469395c265013ac76219fc797b7d626d395a0ec2484444d78eaaaf92bc82c29478ea4e9f13316aebb3a4bed6a5a542b3841862e09abdc4b71d82b632e9a9f171945ccd2b27850ea290ee4778c2e5bd4d2738e8f6893c92e2b255a6f328baa8ed9b639d09d953613cd078744f755081f568eccc26e795fec6f2f18a87405312b6cd64a866dccc0959c2d4e7d0ab13668706df6b095971ca0fc83729b863d701c5c3ef575c2482f4f0debee90b3cfa62e309724d13fcebab7d9aff519d9eec474c156058a23d675de58c1d5b0b72b238e5c464c08a229c85626d09fcb4ec466db18310536be245a13be0c7c5728158e7bb57c0d511132f879187f56fc3208165193f2c85ed5abc06f105ec8e780f4110a6d997c0d3e15079fd4a3c6988718002cf3d8a3268dd61333c9cb33b898a693e22f90341682f127820b0891d9c9b8e60c154f43035d502f29eba1dda473c64d2165571774f3c681d24a9faa498df999af5ca31d806678b0a4f8d63898530e54bb8feebbb8a3a9b6c4649a71bce208cef368798f3d9e29a9696401a5e5ed8e322af089a5e115087a58eee94a06bbe10e45bff371f7f66391a3069ef4cfbf6a627596621691c97230e2426ccc3ebf393391295046668a343ae56abd17507643d11b10fbb35e3b0c040d9bc5f6a5d53e0c93a3c642914677c3f4229a3037880724a07408eaa1c8cfa4642828ac084268063d48cea700955be4bcb5a15426307a1e4898c92206ff9462f2b6aca1f61cfd67951575dd088bbcfac1b4e0fb37a75092d821339b5f0ca3dfddd06649d9f8f5dbc283227699cd253a65510c84046b5c71e8824d2448eaea6642ada3846ac6374449e57de714675ba50277fe50928725fd963739a2e63585682742ac2366cc4fa0ec6cc1ada4c9f9fccd6bd828276284b74ad4fc54f7fb8ba4ca6033028493062da2ff825b35925c67cb75f3718dff2265c43a7b2b45fd1633135ce61dc994c58d7a6595c930d542d3bb1ff73d62f70fb88e43d9a2e47d888daa3b5fa6c3f6a9f1ad31b13f40c67bf52e5807b2652758896a69619b5759de0c099da76909c5e9bc0319cb6fc0465402d44054c3f3032d8bf517cec179a1bdb4627e621804b6a444d7d050cbf9e8ccda074dec88fd87c57f38256340c00b1a5f1e01c19ab76d3109e53af0cf272f766235c37e01bdf3487f53316f01a9736c6b9e4a5e5991f4e22bee6d6b24e72184911d4e9c7955e9ee17c0cde353ef226e6cb589570efb3e01c40db2ca5998c1e247d5e2b8c0a90ef80274ccc0f28c129bc2f7f54ae0d37a02966c3a84fe56358c4a232c981639961bd92400a9a8cd6c879c2531c4476dcd7ae8cfa67a1cd5d5e640248715f894e4059113831d21026058d92027f452863997071c54d99df8d26a0d260c0db532d87281858d2fc317245528085604b246a885f64e466ca69fcce9bb158446b954e681c493b4b2b8873539894eb70786487f375dd5f5dd96fdf9e443b8796a92a28a819caba11f6b75eb6b862b7fcfe3c1e6c473a488eb5fd3c9d5a6d6e0034744608866d8add11d0675c665b6ac20ea55fb661816c006500c48bff14b6bd4e050b0015b1724616030d4624599ae6326e6fd90022021e166d4a84e685194c9d52c4137485c47eb5724bc7072b1e90efaae45d05866caea9537fccde205eaa69f3e88e1900ad3430e156ff8ff30e717222a56baddeceb188135790734b99a181cf2d369e2617098797d424e7522dd0cb96ef3d6278f9f189182f8294b3158cf587f032d5122779a0904ce024e5a1f8a6d6e06e7162dcab3c5f55f01028f0a7e13812857dc87141b2ead0a66ea829f9839248640a273daf00dcf807e711682d90981a8511df71502906c33fbe04f2498735b6cad9b04bac891f3b1324f5e9bcd0731fc78481bbe86839bdf7c5c5dd7ce2b5301101aea334105c4180648b74b454571daed62a93c2f0caeec1531012d9fdc2e20c94540d654f278fb59c1b8bd125a815cec5e5ae85f2e27b9f7f2df15727b37ee4d381ac3ea886b60496300b65c30bc5c5dd0851342d43a85b50802ffbeea7f74f04bfa6f66becb9099769d15f35de04563ef841efc4a2a2815d246dffd377a5c9e1a5466d5c271567eebd2f305a2b5322e78acffae9410411988bdb8a4b040779005be80fc4d9d785853c4a6fd71536d3849936caf90f7ee90494029be1a4c258eddcd2ba8bdab5d46f0be9273055c1325bd47c446c0054a1873798cece702767d625b81afb48cfbd07f40e07cc96796e46b956a2850bdfb8a0f58f0dc82afb1db289a8d094d88e0f79eb899ee8a440703b04c449e604294e5c6688f1ea5384a604aadbd9f6406f537307eb4fb82f48530fac954ee217939bd675b749e6a1d1aaa16d2a1e3170a7400d141473d2de62496941f0777bea68f3b1b1ffb293d224a26f6b924a856677713046299ecaa2f41e93a5002214bc8dcec7175176b6cb6362850e403766101f0dd15bdf573d688610c162e60aa0e79438ea58616524cc5aaa4d060ab21f40b4d2a0837183e4a212bab5fb3120d37d58bdcfc113ff0d3c24d98eecaafa8a7bfbc8b821dc33f79ca6cf063e6e1ae8d27833e0c6d5184ceae55e6938d9a7ddbf7d81abbece6f1b62a5045b44e2d73f4add0ee7de36bfb9405f669c4c1bc1b2c6a0cb83f9f85079484033a5d61934a5cd8aaca2571a386a2270683cf5240682a4df7a7b172691e1c3a00dc0426cfb5399921e2f5ee9c0814ed6bdfb58f6100c9ddecce8770f0bb2eeec4801f66e179d11960e884b981b1854e8c05ebf5eb85930cac10b50222c2e1d4c783aad6ac904948f832ff3ff13dd26ddfb73601643319c995630c05effa8b561d847259099c88a7000bb9c8c8fd18a8a306f49062b93cc5454037e013d6a5b82b2ffa12325b0287d33f6614def781d56887007a04f4e4f7a09bb9c831cbc1558a0ca56487f12669871da0bac13be4fa25e25024a7adba77be103900e5e6161c0acdb62171b20a695967e2d0d0e3d2cab135e83481bb3e1741773dad9345e7e5643468ad3bc6e222ac7ad32f4027f58e462d308fd283c71db63a54c84adcf87471020ff5a1000bcd17c6db68256ab24f2a2b6e81a6e50bc9b2e051b76df4b38a4b2c65661b9f83b0adb1e1a2c85b2a50b1af683bd57f36146eb0b22d49db107a40219950ac06d935143e7b1baf31a229cc7cff218557e6e18d73005e0d1100c7f323a5d78939bc35dc5680b4cf41a596e7c04705e10b03c1613a31ee107371a81661af5e454118726259e928475b357b3dc9b8fdff6e3255f44109496d940942869069766a1de5d21bb89f96b529702f473ae830ec74fd01fa52d2bd7cfa5411957f199e7f2ca702efa6ca53ae25bb661cbdfb8d92715869378b2fc6a5bdf1085a701720b2a52055da3c509a3105bbfcd165aa44a638b6cc51ff0525cb1cc13a7a13d3649e677a126cb41055c6442b1cec2100db75706ffb75228f67f8d5fa09841f79cd5ecea8229d0cf8787ae6898f2ce08662c35cfb732950f6b2c0d95c9459122dd6e8d6d9d5a3da598ec47e3fbab14b8f988a3a55eae6e09fd6d87764e1861e31f166ac09ea49387ade84f0c33008371ed7ad3c6191a30269c66c751d99e2920374d50c5b5ee44cec0a9d9169f90433136859e69e09e18d524a5f4ce6d58025b8154398948c1be4783db935f2ac5a248ce29f7bdc425102f4308f19746e550e910cd8cba6aa11785f93e8fda6cba32268dcc6e68aff85850481c6bf11d2afc0d8b812b2c1380c42a8b01a03ce8806b66491eb159a64a2b01d5712c909a6230743e00f86bb380dc7b332b06bf410b434aa111096f749c6195659ad1c1e738d5fac658dd05094af228deaefa87f03e623e3e88d593cf9cfa8c04383d472a61797c4718a524662c4934daf37072663a1c17fa040353830fdacb1dae4974326e20893cf6468dc1fc0d977daab0c318917b221d35d0c01bbd4228483efc804c82c020c2ae54aab227e6d882a91b420783ccb1954a0dce21f2b00e947414ac2eba79fda86aa939e58780c8253cd8168760b224663c07a90dcd67177223ee8dd6f30609115e8f164591b314178729747e56340328b50a00bc900980c7bba9439811889a86a953e48473c9c47e3bebe9e9372f251d9bbbaecc8d80c0169f8c392e6e91b429186b2d6eae30b9985abc97e093d4b11f322f548927de6a32f1c03ad1dfe273c4e56042cc96c395041110046bacc813f195ad87a9cd90ae11206f56271c93c97fafbd001642d1b18f516ccb916b2ab601f46f12702dcac13d817efd79f3cebf5d2c7ce4a67bf7966ed6c3b7c4bb6d5795254099a230c926bde7803c506837526822debfb541422025d5c1c02a5810a3bd23495752897383b92c02e24549d7b2210b0c0ef5fb4f4b7009afaaa82def092675fc0f6332eb41e77f410a4e5be715b3d823b8f55b29aefbedef43152bbb185b024886029f9861b900b9b9083cdd364241c4c1151c2a99205182b095518356fbc64f4bef8872ebb9e7d0c00ce476cb3570f0ea0342035dada8af2024aa96564260b7762f293d28b16e186750b009d3a4cb1004ad45b8d9fe697a05ae8a24452a1260c2024ad23d31d48af58bb65f172861604e5bd24232cf74cf3a8ec4e17b6c0f59f791ddd62120d94a70dccc6314138a4fede758b1a622c785ffe61f1995fc0ff348b6f4cc2011f29980d6dfd6c9511b84c960271d80a754993e9b0739535300e0f3d995cf1aed410105a294d48dd54db35fbc6c87768134f5890addd6f7abd01dbc476432bd023d7220614f277fd0654335d9fcc376240d690bd18a754c20e598fe99a41b5fa628aab025edc7095e3ae41c622abbd09e61f56e04f6f441e62af6b81f6aff82c4756b4587191006665a3d83c103a67e8a2c28d253ed59602770a6908fe96d0d9ab50e43bb0ac32039de831515f097f5e4b9a717bb40ccde2dfe702abe46f97ba333c1887436157ddbd3120377599afd200b749d60d82028b38fb121fa53c2cd122412a5075fe3503817e2969f2576721c8932970b41b6762d000f647d142a9fb508d2ceb213cc98634b5e987d114b2cbc306f153c735f35f121e64f3d9a513576651971329ad5a8107ca5daed6f5cef0777c656ce5e76efcaf03d3eb8a07da2079ea798678fa19c284c2df23c759dbd3416e336bdafe4d31c22010ca41345705fc5120b5d5783e543577cf91eeea98b6fdca501c3b3811f582974db336558fc0c8d0b30d83cabf22bf45f55daddfebfbc421bb429f8986db1ecbc20130ba27e801d1f1003f8d2324ffac2d70ce19952b4a22bc9c5b23cdb0231b959ade517f8e16598a63416b620857bc9fd1190116c529c0e16bf63fb0890c562995e4753652ebd926073df1003d39081562aa19e41a7e02f1a4e78fb0747c8eac26a64288ff32e03a8aa5338b02cfa945a6b3bff7cd886323daeb47616542ef850729548d8270fa1b25740405b0d46c2003f87c04990f66c382c4ff6dfe77d07116aa9332720e3456270acc3450c29e1f4b2f80ff9b70552919321d45e890fa1d06a2d5ce105d85095c7e67c789a1e3047d10a6ddcd33c716c078414fc444b1e8891434f5f9096d0ce7c6efc63e1bbfcc2ae1c4750ad5ac217c3904af7c55d8747de1d70be7aa1e7291311feef4db04fdce0d40c43d7a1cd7927e11ba6bae1ed8f1b86726d06c84cc4ae77ece3325898a78780020c8806bbd8ec690d0ff4db84497a24416a8b619d62e53c7d26d6d31b4e0a485159869126bde4adefd4bf836ff553e411bac580fa246e342531fee8b57260c6cfb50d2b0049cf0227b25fcae7915df6d9626c86c370a533e5335f08ca17eae088e5a3c1c9512f72772329a8897e1815b303581e3a5d6bc10d3e34a240c606f5a20533e47d9853db244a0c641d810b9d346db675537c7f5b4c812d8f890fc0ed15431d80bf23909f29025578c0c97790c849a668a2a2c81192cfabcb7259514175d3b43f2fcaa04fa1c3d00ba57543823604d4b22a68116aca40fd7f2f59ed2772e224a311061810150aa7af9b89e50fe3d49d40cfa87577c09712c670cfee67bf0c5508f4b589b90c7087c1cf8cbab99259f5d5ebe4a25fe2e0431c4b6b99cca78f1a432061f5e10ce8a58094fc442af5e91b69a473ed69b9c6ffacb092e8cbae453ebc53630d40d57509b5171af2e593e367da0f2f02c521fcfcdc0d088511a9ccca8ff46fc3e7f6e2ea4ce021e63133d2ec45f1b9d708d198f65b2d24c5646c649ee5a2e2719dd029a8848c003f7d6e11bc6720946a29f584fdf75fe62d60eae5942d4008e0fb8523a8131b14ec9955e7485ad9df0b354db3c1749980f3974c4784a0eeba8eb9701717f89c872a645c4b1f6e2a8c752617aa4d220306174724bb3786de6872b75d782d5dac18bddc184adef52e4d3937102fc55d970821e6744f7f1eb6e4a0953b07f7102f8fb9ad35c9259b5efc7fcfb9235870c6a631479278aaa788cc75198e14fb02caae2c3029cc451bd15bd6d9794d8d79e323be17b0da039dae9d00ce462e0b71653254b006a2a416e95cebdfa45958cf3f36ba300b8235de6dcdebb768223ad39f7921420c87cdaa99779e10d25fbe58f99f018a7385ed724f889fdc852acf6c3fd2b5339a094965adbc4bb619cb5684a2b81728f41452e8e85a9a32c533f0cd1094a791af6e91c584b71beeed55099066592cbade189b72ba7fb68e662d7d9b8da7a927b1c2bbd3d8090f6d7de7308eeefdb92f649bc4cf6ea96b839b30506cb7105183b2c3a0f5183a71efe89772b58a6f37280853fc9d5a847ef73ad6c04f79ac46eefa4e1ded511da3c68e84b13954d8b2061ed1d70b156de7bd6b5616de911e689cc276cb05cc34887daad156b2bbfbd6bd689325180fddb99cab17e29589da0fdf3ba587d5cf4ed201f8711107e39accc80db9e8d0c0c2d1cfdd362070182c778316229f0b8b39092ec4ebc2c64afa58bab0d367e364f9966adc4fd9a0b7b00d0d9bde643b717213c8b055f4690ad7c2bed69377052bd223c157042604ac51a1e4c70ba4ff2d33aec089d498f112b4b41ba04511628016ff342b7ea4d8b9bd0243e546f026740d8f895cf39f618ee5e6c7007c15dc4db073f7b56f79bd31b39deea881f5264a36458266dc201c1c56bccf5b72d26d769d75dc62131e68e6cc9d6196e9f2e314e32cc22aeab1fcb62ded1e819dd1e9cbc5ec1376137484b83a552f01faec0e07d7b84cd79a0c7d27dfd6560b3126bc626266d3dde686510410696875a193e7f5833f8fe6774f604edaef39ce9c8e2fee29dc868828ae6f344d45c805b7bc3017cb11d9a3a7398b97ffe94ea1eed630502bc24470fdd02186e847dcfb946d0969484c1cf77213cdaaa8ecfdfa98b1195f5ee0870b3e164991436c1c4f05f89f6584721107863791bd6b918c799f3ad8225413db5b909798cc56d21b9285a66693318ed3861071ee7710403ec0ff7efee9a144049ba7d14a230c14102fa1de8d56240a08bd549b301f532ec24d48fcc10807635106a17e53a918011eb695bd848fda0ff490c804da7db58fff19e51e39dfdf47214625d64fea1c973ddb3007d5c33fd01664d9bc9b04123e826671a2a7e25e83e28055b61ad73794a85de04356e60cfe307e14086755bc84ce6ac73384ef0d9bf7d1ecaa66deadd57d36c10d1f74538d1af710c084557948c187ee883f6329c99b40292b866bf79155f598064f89e61d2ccac48ac613827c97e128ce18766e7114a6570e7d3db8799227549ba5b34078d74efe910cd394924f27755d2713a07b1c19349e336151291372df3f6fe56a1d57218102f822e9cd7a3387d82c8188bb931774636da73bdfd4a8582e5143a65c1e9f7becc5ef619dcd5556b4995a09000b8844c1e221c3d8f64c2f6ae34c20733c975fb00db5cd3d3563ccbcf191da754621d100c7a915b7d3b1e078ef2d7cecc07bb536b28c9c865eea8a552b96217caf5a92e7288acb180451e67ef1059465ef67b7622dd2ebd3daeb89d4062399b02183b8e2116d005b6e866563e1b1de58139381cac69fa574b3ca12839f1eb46891110c649323592e231f155d900548b658ee51a9af10b6f2d7860108740823eba52783c551b6e06947df791261d372e799ce4eebcac667f38572e61a42070d5421645202ffb9348d59fe2999333b3fac6e8f2700502581fd31f46477e45840dba4bb46e2395f95b7790ba8e69831cd9756d15b4e36cefa507f08464cb0ccf5bbfc9ac7aabf7e284610b164bb8d5b92b11d9743908825c53b3fe178002f0d68079c4f88f4c35cbbb90db1e26a7fabcb458952b8b4f9523d16d00fc37796472dba68fa007fb9918c67f8a98ba815f86daada277eff315a139930ead8bdc16042c913f7d905454398384c4a5da115fb0217ac67fb3c6c0392b52261899e8ac5e373f235af9454e0741137f300b6209cf3f54c60aedb94842f7065caa919cb1a7d19f7492d3c1118968678f39a130679426a8a2935b5e5be30a7e2a6a88fa6c4aec976c0e0df82b54de8fe4a7a2e5ea39c7eec1a69c6985c95aafa2f25ba8bb310d1926551bc582875d9b5d8dcc2508c00f71e0130f896de1c49857c948d7483a92b4f1012254e47083be50832812aaadb9fe2c2a47f1f856d5f44882999a97ddba037dc40a88b6a434d50dbb4b9c139aa7d07a1ed013aff079467d9e7384b910f25528266cd8c2afddce7fe4cb3ddfbbfc816d5e6296cc424c6c3b07317b1aea13bf9d00729377a749070fa8995e08e8b9b3a12a1db6913e5449fe8c8dc5aeca277443357075e0f590821207c780369446ea701ede0efa2b769918e5e66514ae6ac1fb4ae7c69ed0ad7053703bab8b863e3a936a14cdca2ca2169b50d05f7cbdef977853731df999b4442f83f3a8661c948296cc3f5014b5d1e1a973a920ed3aeffd5ab702ed519ef20002a398e72788ad2a0567fbf80aac395f28a8f3b993123310cf897e5476ce92a7a17504cec30fc21ecdd677ad287319a21df3e5b804fce3527262978974214f530d1d4dd240a678ffe3f94277573d4ab6df4a25db68271cae801a0d220799f7d64aae020930ef51e2c75a8b92552aba3ade5fb73e72408ea87284576e9b44c6c4ed4ee19fcade7987b39fbd5b9e9cb0f575084176068246901660587b611ec9b5c6db454a9f89628a35ae8041fa6ab5a4f4356b2c7b98ec5fcdce43dc61127859537dc88a50b3b3a17ababe213cea8230855a924485d933b1bae292b835ea7aa96951a32dbe4a6168ae38886c5bd199ce85a37030c90aa44e2272e24fc70351eda802c2c0c79439a45c15a31b3b351459f0342e562d9611d3ae9ecb34bf9ae0c5d0f81e067e4a972abf1aa2f822058eab122bc687f29343a74c32d5c96c590da92987d1ecd5882df743cbff9fe9a515a1f3efd595880b50102d6ce1555747bb196b9be029e4ad788a22d8ef74367af2aa3076cbc2bacf46676bc5f76dc6c25d035ee6d121ecd2c320dfaca27d28befaf1c35e05b14f64e4ebec53bcbacfcc5251da32553ca5cca3d9360f62a7108fec90e80642d261853262cb6aba91feef50dc3e920e169cbdb7ff773f8e8de046ca755c2af1dd6c14006ed84088c01f15c1ebadbb5906bec9e4559196af6ebfc4c12c4a7ce76b2171588c00f53eb4283e717db5f5675d108ac56e6915f1834ad390b3b03dd351717ea6b17b5024bcd03af387690ed57f575017efb129992144f1772d1311d8f087433b1f3bfef8fb26d93f97fad8d0dcdc45fa67aab64504a1814fbc09353ac456cbebda00b5698b8ea13dc15b039867bac64469a5dad31b3254a3b20442e0413481ddabdff3b47e8b65a342297d68b46ed65e3f4008b5553a3a22d2ba247f9571842d65f64cb1e5cd1378b656dc391cd96ac65e901e2c0bbff37347af4998f519667df1ec5b41c77c3590d977b8c4594f43713b3687cc93cfc4767a2cb65417fca2aee4dbb88d2475df71f7f920e267765e5f225ddc74fc1109dd63e2c27d0694cc5c53d2a04f74ed324817b19ff38b5144cc77531df0cbb745aee55808aeccd9de9e8ca2d89d271d1bc61b5433e02625debe08acc917fb7ca1383ada5eb967458e016799ae4018fc813206091e11c32ad2789e9b60f53d9452e26f1b1f7a81b1a989b1556439f613bdae70f94c884746f0d11c39bcbe1eb17c6656a861a2b7afb6cc1af563e7e1688848ab30ef00046665aeb2d61506f1c738c086304f54e5f3013ce3185f7cd8cc298e213500279653ff118ae7573e9153729a6e714e7ea8a853604afb34bc3eb07d2a63643566bf10762619b4d2f514026388d23d8b534b1ab94948f15bfe0ae1e5e83decd52e23a18422fa2576ce84c7b987f15c8fde0e1aa14fbfd3a2e5a983d448f658a58cd065f04c11fccc0960e4b646de68c10952b09df051a730aae420e792acf8e8bef3a979cf5fac658644281d45bc9a51ec3ed58fbdc056e96c0642173133078bd1c49a4ab97da68f7ec06bf601504cae8c7701df7ff7c47ac7c1788218311010e9ab4436c4b531bd7b9629c4f401e8a685b292e1af6fafc954892930cc4e3daa0c968012eeff5b4a1986202d5d78585265e363a8bff5aea69be86778237afdb6240c0be82ecc6326ca2d5502005f42a0ed67b4957699fd1b84292ae33e78e109c20d3de9b219b9c4a23eeee1fdbefb801ff21f0eae0be8499cb0ff2af3805f1e6649db684ff13eb4cc626558c8af52fc8f99564448571cf04b9377694e81950d6f9989a5756d014798f3d0fbb1bba786a011525bc6fba7e2c52a4c17363628a4c3e1848b980db121ed94e580ce0c939956c12157bb6f5b8523f0654939c0232e0450a7516824c4c978852834b43e32a8d25306bf8c20f5a0024b2fc617ac1554faefd02dd4b6334f4fe41c70263775a68f59e354ee52f4d931d6b00c2f4a7afdf3ecc864fa41a98821126f54c0b820e73e6756e115f7623ff380380477a82ea69b489674d213c1535009176532e496fd83a192d93c33b7937bb4fdcebca835f0d138128f0cf2f94493209eb7b5f76034a30f8f97b9a3b13cb6ad9b2e6b734b53019042600848c46fc9f4636d256cf72ac74493d1aa722a61b0d6769cc1b4bc50f8000755fb4f119986af3f7f9153ee67da77a0cb0fc5215dc81b1e74d75ea9e73bc1a053c225ac96f612d1610e7959109931b6372b37cd6b932337810141a37672e6020a0f3f0a69fddddf9c0e042b2af207c93f7e5524b384ba23c714d42148775b7ce23a227f43ff0730dff821ee140a0b5cff6981ed33711d2e0a8616c831f98cc8b6ca804d7f5e07eba49d38e22cea98d299b9e88087ff08691861a951e79457db24054e483b2eadb9d3f746ebd5efd2531586ecb0bcc8e2847fc6e0c9535471b3b5eaaa0a3d9b1a1d925a405c76acd5216ebf9e6766f32aecd060280d846f182a8195a904fef37a0605b1e86ce83e9e6da11ec25f13e389571759166d09059c7c95c505d2e9ba676ec2203cc2277204019d518a4c08757c4b0bbf8000e3be1e971500e1bd32511d8bac287b5104d192fcc76a21dce528cd8370dd012c13e32902435431750dc9f5ffdb9bb0618e4f5346821353321c65833b0ba695017997852db47c718480c30e97007b98d518fb3d4d27be1efc14979affed6f8098224ae84c9d6b481f945852827442aeefee7c8dfd0ccdc1b005cb835d064c58d335ad8e474bc8a9ac656e59c5af7184ba514347ba143dec8df241b9aa7bbc0b9839ecdcb16c0a52203c372d9ce80ed47147bd47ddf4ad69e6d6d72536fa63da27bcff39c50fec180dfc612370dfafba3be709a008ae4346003e28f992cfbfe936b3f79a394e14c1d09beb3c32e0a0cdbd67ac85b6863cfdcc9f13a062977fa768c3bb905467f4b8b5d15a888316cdc9702268282ea2671333d7c8693ed41bf080fed4c4db39606493e16de827b6d94ff6db6756aba5a9e19d1b3929945fc131efb31b21a20ee5b84f0feabd4f14ec03e26e9b075b2c8977e37404c15d66c93a08bf217da316b3c0548bfdf884794f334f330020d5fc3545f62eba20e95c4c761401ac87f0824326a4d413931ec664eca3199befd3a6f7dda6f866537cdf34bee726e7491e894a87b8758e749365cb0ebaa30c9293385bb414acd212dcd2e57a0a8a5ad3095881f65ffd13b7880182cf16ab085c4ff8bf8bf0ec4bb12545dd97449da01cd2e1737bdc7fdcc4004972ecb55494aae2f0d608943cc327a25559f653e77327a94f3fdb8c2afdaa6e36e252e1f05cbcf6ca9608e6e249a41c429593c5acba6df2be2f8c6891d594fea051a9506bffb913ee0e0b89a517a5a09024a70a78df66becbeb2ac8695a2b4580162360c11e9ab986110b528e3cf7d56338c70ba7427a25db33518b08121daf1a8d9ef4fc9e4e0ce9dd5d6498b0d38ac458c9df96c1a42ffa44ddae1a5f3cf0dc2d06eeb941f23b826af7f4b237fa2411ddbd61c5296930abcfe6ffd91101eeae075859e94d16d7748aa1595b471c08bbba3b0278b66f6e5e9ae248f6e61e16273f5bc0c01e4bb5637029a20902c90b68e46eb7add754f6f90f751f473c0decb9589778a85e60d2b303999c3a2f03bc0ed72d31567045622be0fa391f989b1e82677b750a085f8304c2aecbc73e14832541e669eab294a828ad6b911f6f05d9ad48111fafc228988282e7097940204458d9ad624528ddeb42fa793385eeb5c90417c067fe3d408db38fac67a9610c4b07a38cb6ff294b2944178ee026c1d806dab3cdce6b4dd40fe52e355c4e50f8d77215bb54ddabc9c7cc20f09bc253fde1bcccdbf03511cf7d4092f3822338e45b2a78602db0e8d7151f3a4db14dac4e042d4b72613af4911baef8e4632a509dc3bf4223416d76fa6d54faf9ad9150da7d2d7679ec093cc02ab0772ddc8bcc4632203a3f9e7d098a7010ebb494c2dc1ee2c13c3b46e8262d27b4c28a25dd9270b1bd6dd7b449bd61c2d28f38f8acbf878be81af420f83124a0d4447ac1befa127bbf112f6d8b7e5dcb86e51d8c82b7c959921371835184aa26d535626332557291d377279c8193d0e06c2255371f6b028acddffcb5ed6a39b7c3756aec449d91ff560124c78c657c6cac26238cc8c27143d8be3f6bfad0cb16373bb653c56e27128478a8fa171cac4d9c347560b98c133a97272d282c5fdd37a3098d2bf2c6333b96809f46089265b95b96b0a05cd3ffaace3ae0fd59eccb2843c5d6868be717797864b352dca0381a66e0a364f6754bef6f4bc6a9358c8c14db743e37a8540e90993ad590ee447dee0af45d51208b70a52799bad355e92d4e6c7ca8d9cf2fd65d5158839228a165c963a4574bd6afddf10de527cb170965d122813980fe7717d5275d2caa7ea137ba008c5578bc84fd6fd30849df64fbda79704dacbeb610a55a9d0140ac9b24f49e15328e51dc27641edbd2a87c167b667071c5d3750a62042d0a50af263a8cf6f3c19894b040d22219b6c74c654d0145239c174cf0983decef273884adfd1f50b4b4d23e2e99ee534399af07e825e6636df8274bb43b6748cc4215045a20d9d29f91496aba3321ed9cd6abb2997c455a6a32b90622afd5d42ec2b55e174fd37540cd15d19c881ccae574ea1c6326ffd5adbd46d8e228541fdde8c6f8e131428f0c785d6e05e5b494d61077c1e37ceb2a1f629325360624486b71e162cc125c2cc09d98797706046ba921a553d7e700029cdfc39e5bf3c2bb3cd308e36e059a928e7043a3e4102214e03534e59044712b2ff40c2d9e3317f5ccfcd85fdc3302fa87017d8378eb58a7b7f01516cbc007fcb0ceb698170817bc1c71bdd79e463063bf09914e4a6015b5f1d3794659e0db611694bebd405a7c37114687e97ffcf12a31c28ea60078552504051052a3aebd6815edbc52a4c2752332bc6eced9a9c602598b33f00a1c089dddb14f593911d4811485fe90e50b03d304be82bb063ef9f0b1caaef472120440948a0b0e5e17780fe829bee4612fb6ba1fa874e45661e285f11f2f95e00ba9e074fe897b24ffa56fae96a761d009cdcdaa95f4c01acf50b8eb4570e3fbeeba20f24ee103aabb3a4099bc9fe348840c91c322510c11323d2e988525b0c7223bd3144d873960cf6300f25738faa8ad27e663cd6cb776cfbf764a591846693e80db0044bb4f17e299a1843f2ca242d7cf76a200cf38270d4604522da029fba014d3a277361803167203bfb3e4d44c207e611222181e1efe1a4224060e4962d30ff986a72e02c8342d839c0b6717fa8585a34868639c333a0c711d51c7e86553156af978dad204979772ac01b4d7a3e7c05d1ee5f8dcc89bb54eb0cac272dee0a765787400360a8c39e5d2df0366c35108291064b5444a3c74717c650ecbb5d7f729c3811d79027fae00e24b560f9392c473d639c48ee0fde68b4c2a3904989d512299f21564ac1e4b4a929bc4ba47f646412a2cb1adeebe19e91175da4e7bb1108d0e8406d266a050a739cf5d9f09f3504309aba699f721033f986ab49e9cec7b843f73acdb4d36995889eabb565e86c651a3500aad5bcf9113f45710cb5600d5c69952de46c1f7d42c114d128a033395ab6aeea3d834473dc5f5e6ba19bf322544e9f71b7c63b82e6e87db764cefb916385480c200dffac7bbd27c4d4301f0c1c2ec5a450361ce580d9cf19e8b2f3487b857ea13e78adbbff87eebcc48953d8e89e61fa60976e0b1c3f3ee87966c1ffb9d7cd80b1e292411967375a2055c4ec6d29e4c450c3240f4baa209bb3b1f0fc663306e6115ad3d6b2afdce796f9e9dc53827836fb19f35ef8ee04c4fe4cd8eb9d00a7249ce1a03b39ae7ac22085990d9c36f7e1ba3c72eff776315c556eef67f297da44f94176d65340a7711e2dcdf411db34846670109d9a65e185fcc4433dca42658e1d852308b4a867e2a5e00bed36feaab7fa4ca8356b343f034cf8dc4f03193a47e61740b477d893cc4f5162433f7008a7bbb6c3b06b3190dfac3117ba3d471a8a5b91d7d36f9880a2570acbcfe3b047316749cdcd26185e77aa9f85ca70f7ab1b29016ef4c85155a5f14508827ed15c6f6da4579a26abaa72c087f3cb49d14b83f1649cf5a45d81d89833321e95239b5ea5438d708b529d4136226f25e2a1cb3ed8386a86328a0f3bff19e6dc52d472bad98f632bd2b982d56a8dcf4e6cdcba2f5778ab5e3054a94ea1310406d811cf8bff765e67801ff105bdc2cae7d2fe74d14ecf0f4d2d92abd996ea316a315e316a98094d0379a16baa25be64d3d9da804f9219037c6454627d3c5c14ec4862c9b99e326c9305f433e56aa316b5109fb30eb9daad680516242a0a5311fa5059f49031fa785cfa71d9fa4051f63a24049339ff3b45ee72f7d49b774af4e3e12883ea7c8660c4e8cc22eb8dddb2d2bcd585e27698a2def63bf06cfd45ed84e5b3fcc1b9ad75d8e5bab1893121c1e1fe4eb524d3b7c5e0e3cd982b7bd83adc705ba996dac54a74b8fac2682cf3d31e71a7b096b4a614e47e71defbc243c94e4ad856a1d5ddc058e80628de75fa5bb026d36f2b0d1a81424ef94357c02c3335232954149809a346c7ce9b3f65a076c52880256d9ba2ba54d7ff1ce867d1bf9375bd7225ba61ec260181408d8f06c9d2af17b1031a3df020b5cdffeb5fc55a5aa70c4a1668c4240d4d8e80328904f265d1556b0d666a27d3098b5f6a6a445eaa0ba3e5d0859eb22f6aa3584f9c989a4464c2635f70d144f3684aa241873b4afec239f7d57639592de37ffe00386959f764029e6e871bfb77274d7688d18ec993dda6de7a49ee3f999287a218c78d5ddb4af6af45383b3744623f7cefbcc25ebe3de1d5c0db6eae20906ee812330fed9f673e99f0bcf79145eb8ad15173acfd715335dd63bc95ade462f8c399bf3666ec594a2d712f6794d4ffdbd8d5ad1185a6ee26064a2243f428862879b5a5def6e1a3b52963d91670da864b4f4d8ab2b402c3ce2d4979ef371fbc9ddafa3655eb55e0c44cfb38ff00e57e474f8887dc2cd0e523adefa35d1f671392781d54f4416cca02c8a2fcea9f74b5d412c8ab205b871a9ad8209403ce07e017cd0ddcf1bb2b39415f1504161d351f981fafbef8dc9943f584625da43923a05b0d5f9cf5988b59a883134770f71e9fa33aa2af07241740c7a65c163cb0e8039df50a8faa2eaba8fae018334b94ead87a294a2c9b216616ce2aae249f5d3cd38430b2d901025b20e8512efb9c6844a02c21ca76263c3500751cb8181b97e260c59670c9b0fc874485d8e0538ad0f802986662cf25d1e980675c366bb601e8c72d5a6b5814cbce4300d44624b539eb87169686032b59fe8c95acbcc26d93ff0257ff8c4c06a598dc47daa6a3201044a9eb1446e96cb9f27c9548bb5ae9150eb4db8f436e316ee5ab206879216099992940cb2a442414d57e2a95ef1f4e3a0f9075f52e138cce977752e4b5f3b71d471d66a896060c77a29fe792c95c243b8821b2c82c1286abee51052cf019f15c9e6149b3bb73d1728a4cbf3bcfa2f07c37dba23fe9cc8e5418fe88d459455c29806ed4c2996c2543a349d54d84f7fa414c913aaec4b6060f3a1bdce3e585d5b2d9652f6526ba9db9506b10bbd698e546e1a69f209412c84c6ea76f2cda2439bd5c69b25a336515b2bba2c0c54e5467ad2aa51d223ea91b5652d0c4002fb7169d5571e77faba43672ba0c7cd112b4754707f16628dac3fd20eb019c58e99d0238ce5fd155a3c853fca50dbec164fdbda9c29f73a63f3ff75169769bb0d8f519ab28e86b65d0d49335aacf50625af2df198512961969b6347a5c6d677e7f57dcc374c08329508ad8b664988e76b9e515a39cc4a10e98dba3f21ddc2ee494b077818704dbd1dbcd7bb06d1d1daf2d27f7b124afc74d6147d74864d6115c453c693bd1d3760a922306e37391777ee80335335f0d18d74dfb6d727267c02067194ab3372d2eab3c89cc45377ca6357d5ede6775e7285de0340c5272abe7e413b4c4a1074f1a6e086eb2eaa94d4b293a8886197105d8b7893b27ef33922a8f229503a9c5bf0c62147756e194ca5395db271cd0453ee59088d3b1faf822cb49d9b8e7f42c2776b7b1517d348336c6e17d6e87f21ee98a676935b684963a2a93f590dc0a93db97e0f175464040e04ca9c3533beb26a5389577419c7a74b8408ede494cedff0d38ddce98ecc9cda070b9e3ce14a1c40ff8d659a8081f87404cd0362673add444f949cddae44f2f5b784ee746a8b75b9b1c290c6dde1f7604c7cbe7a6a5cfb963eb32d34bab6b10a74249c0955ba120498271f2d5099ba6074bb5dfd90f8a8ff07cd5c679f9ddf928932d8bc532217bae830c575b1959b75c652e3802e4695022be5fa02541f9a58ebeb61598d1fbe068b4731f44a6d74e552eb7d84e3e37b6870cf7dbcb848feed28cc4411f9a4ecd75fdcaa6cf30540c7c0c8da6e403b342b06f157c762c1755e2f580db540b2932a9430601da490f79cd42c00f4780cbc69c7600a1462011a6782843a03925cd33ca9c72672318ea9bc791742befa29e458a90ccb6cd36031b35a2302090ab735cccb9591f5573c420961f70c38dd4d000064800fd60a1eecd40529ecb9dfb6b7d12d16f53d7dca858642c679d4513c5054afe0675cc45046623e02e999be6b84a28a82682af957c2e412be575e8df8a7020c92e10e62010c4f8c398b7694f3e9b725d8d8780a5883b3f3ca700aee1ea544b04e79be44b51f6b3c4e758245864c624e073fd1d3577e2eee1941aafc01f199e3d3cf3e1125155616d915afe497465e2c652cf4554024e9a0346823a2500670a8f4d4dc911a4391655fffb0d17928e99c15a69ae4837dd19f7b2be03157770c0f74627cccfcd296f08ce0bc77351abe5b9e21760a69b2433e59d992fce56a49b19a99a75039b078388f6d5d909468496b09bce286817dfaeb6c2c421778bb8bce7c22f526727ccaaa753c71f16038c3f1d8fd32bc7f375730ac5f17ef7887984cfe2d320ccc197f8e52565e291ad789e6c38321f8246671c66c2989988c77567da27dd85e911eb322f6e5ff8bcc328cb0ed80c1c866a7be31a43c7c64739e0606ec9cb3809d12f245b3aa52b8c2d9bdc7449983120e8af7f38d3e891e030b499d37adcc08f5f05a6cd6157dd41d95e5bad95e116ab448b2e2a37ac835ef5903152393ed4ae96b02c3e3f4f56defc775a38bc57679421e90b9f2b4a31e2ec9ecd0152c1f0a0713422c4e7aa276b59cc92900ae3b5602dc853d384b6667a45a92b083351506b95b483a7416a30f503b7cd11d704c00c91f74b822680fed52814e65ece3806ef3141328115f6f2aab0ee96ce12c566f11377e4281d0a33272cf9fcf9cb7f6b242c1210624cdd7e4552a2954bad03d8069e820c4df0499bdc07d5d08fb4a4e098404dc414b602b098d01e3c09dae967875d13314dbbd885d993ce8b8e043d315e943df62b1710ea80cfdc04b74b1eaff80bc8ebd2f93c2adeb734fe873b52861d7e9361686ea30aa7ac4618000feb3623e1b000662239739589fe65b8970a14a862bf12b9bd4aa7aa168aad02c48746507537070aa5d70490c02280589fa6943c14990de0725661488f640846ead27bd09b18138210276dfd985a6c84db69e28ecdf362ab8603df3ab452db4bdfa07d423adda16273fbc7019d45d26e76c1c0cea6992d826cdadb59d1162d361bd5f9f6b30c825b38364bcf8fe3aaeb6a0239753b2556f121d98f562f6cbd42380c8db7b947d545e2aaf43e1e0164dd8ff7a7996a8aa468f42598e70d5872bf533e747af5b8f27c89ea8550eeb16d95ae20928f902c5c7b1ca59b8ca20caf562de0fb5302a7c62e8dc446e9482ac100d40b74ccc94e7746f27f2cd8f3bf26376e68c12a6d7a634b6f42c2d5fd6ae51d9f71b228a490f1062fd49a54d048b408c2b111db1ba01f3900e82950c862ca8c009d846fccd99dc36aca2e5a8c596d6feb1ad3927baace933373dd6dfec8fd67d38ea921bcb4bf3adf97131c339498bdac87f33a1820868fd262cd25511008517650fef9a4ccae9adcd7e9aad44bc98c27b596f6154a0d8cbf1f98095dffee337c4847dd3718d4209d91295c7174e86b5a0027c19742bdc556e681f0313034b36e9cea6606dce0ea3c47fdc5b86f2663e9f6176ea1988f064afa6c064811c569aed4ab988fd6decf104f8b07a564bb88f56559bbd05e5e8860c2c502e769a3b9b70b1d6864a79b3ae47e05d3c18acc16153862352b4cd7180aae51b98318c6de8a22957005603305de95e439759b2a4fb493f008d22b0b5ef8298a15f5bd3fb5d81b94f79628c3e6e963d9abdd41c71f01ba51bb5200f548d5dab8ae15520fc3018bc026a8258d766c4db456be73faa1e487a6c4754fb20ba13aaf74befd8791690180a032081f8ab91075b8e1569ce84906161e0262a2b12e82bfc92a500b7b46d4661a94698dd4b66895f90aa165fced05ca1759825166b7ecf05e7b6320a4325149df1e1519f480773f46f3d66cd54c73a46e797ae608e684a2fa94f5df47a6fe0cd99b2a528d7f8b261abeb96e0e251b9706b24f4aa9f20eeacef240a88e95ef7b543b89e19a999a8ded281dcaa7e38ec540b523dabd869c576a1fd0e1cbaa326734662fcdedecc855fd6e08fd14bbca2760e540d0f8353a721599d88b5c965d375202f5cf49a309039b976e5ee37961134587102d7a47ae3ce3eb4e3ef684c1a1a659f083b6319f29489ea9ca087674ed23aa7e7677b08657c48bc44f4a40f63ff42d476733a8a060e905936be916c679cd5206a9982d7814b8b80a7af8b7f2a4f0b334e2e347c04dd22b928771973f1173f5592cb05e1f322f1a152c7cb07af8640da0fe0be43b39398b6e0d13052520cab054930841b08eb600d401d623074f0af4d6718ba3848a7f8df3ee6a3611e7c8a0497f7de07462f0615ccdec66fbde29e3b5fa96ba31f077165adf3a97ce979e912838f5191f979d6a5526c01445e22601a26b30c4e16b5e3283374c292856d27f46454e2b80a924b12252c699e2f70a216fb9f1650481dd2c7b1b04ff3e9f05ad02ec7c46025794502210c730c3129425dc646a221353de04bc4ee28901f5e60ab7151ed30797e59696412486cd6fe6637277176ea65c47f16c46db7fe6283683811a34e3a0b1dcafa91e99286aa0a1ebc2c423cbbc8108e62e03c28ec95e442de0275de932ddee8134ddc6bca195544d2ece401737c6e357e677f2c6daa82267a13c90d29fd43338e4c5481d0a9153aa6064e99976392131e6a2bbd186d15da1b935897e3118a2a139fa660fe1ed7b42716d4f6c3aec2e49a5ea9fe1d13a42a9cfa9afa24cc2dbb9907dace8914280f501d7819044d6085e8823042943ac97519dd1ceb7637828daaaee34309520f5922c72d2e822d01c199be9699cf70365e9aeb556f8dc9c7544e957d7a6866e6cf497b9e64b2bf0d5a77885b5a1c6eb24d8ea0cfc94f8cc12254d82645bd44fe095071ef83976c7035f4496c06c463141afaec39df1cc848495b0c18b75471a072a46b375a49bf9251cd6bc3c3843943f68427bdd33057f794a7b835d7971db5b1499d2a51a577b08b6704223fda4b82752ad7f4fedc4d81921ef17ac64b50ea1078a42ebe24427a911376815b84bd0e1fcd960f3f98a0e64e5e597b005b1bd6bcc92b46e52e1f55940f12bcba317d2fbeb2109e10e85a539c71109c5fa4d75aeb469c909a209bd1362fb5ce8c38eb9c854afc2791ac6e35466044b1241cdab8b7567bd1bc962a9c055aff33828f4f7484e109132d41cd49a59ccc1108871a2db6855714094e679cb73c56aff6f709110e0e98f7f2731ab8b8a8b6104c4efe1481d926bbd59c39b2579e20a0e9b6cd4d26af93393ccc97060a236d8cd3474de061aefaf8791755cda8046de5a79487a08e308b553ed26718dbf3a87aed1920e7ef8a24b017223a69935ddb783c62e6c9a0b5f95c5a87e88615694589518da2833f18ccfb2ac8e333c7deee42e1c27601579bb91a2c0f5794635b375432cddc3c830b1293a46797f0844a970b4db9cacef04f2d3027acecfc0cf62d18dade32c903f6570e4aeb0b8d858f036b32525fd6b3370dde336559684f3b93e0962113472946e041694fcca04d5275c4abb6c1931b23e705417f839a9c0d3a6db8b7715ff73446ea23daaed913d11886fd74133e6fa88a56753410ef3f0f780aa1d8863a3bcde15935b82df4a90f5bd1cfd2ffaa7bee84732c7137d1ec168b55a8bb00a1522eeab70d7f6c0a2d6c345097d53a26e2093d8da31de1c8e8c68269a93d646db6d6b536c05aeb276fb9bbbfc56243edb3ed3d853593b8d8d423008ee306d637dd55f829b3567c6c36ca3e6dabe2c56876639163ea03d9494002d3870ac8530999703a7a4a09400de5343eb3da240a90f4f532a1cfd2158d4d92033e284ce33387272c3dc9cc0b431f83a44dbc00897555cf31a329ec022ae649d2a4ad79e47b5ac65ea4fe58867359ac00d63707de44e35bc4f8e7c33481ab64047a3e3c694bc8ce97aff20cf101c6bfa2c6809ec3d33dce29788ece5a68e1564dbc109039cbab296581a57944d055a5956d512fc8d60fb536745c55391ff8dce3860b6f0b0f58d3b16ce6d53a8cbfa1e3e53327abe355d4a602bc3929f18ae1503106e0937e0fbdaeeeae1d65c023e552953bf46088c54b6690cc9ee7d12eb22f2540ffdb018d7b47776aefe9fdcdcdfd55b1c4dfae7762999784b69d75585b8cac2468e9341e9b1d7b0883b95de483d2af4898676adadd788a6cfe7b8268cf0316db551b28d7174fbeb2df8de4d91cdb4a0948b9554b1e92f225b7a06cb899fbc30f92d66b44b7ec8bd7c3b31bf37ad096c7aa726e1f598a04cc13db04adc153caca042591eecd067454ff7cc3c74092d83450be09a3de07913602815977d46e0553591d3cd9092999d7118114da2f4882656613c99b048525929580b08795990d3d01061590f8dc29c2fdc48a96757a61dd3b793e276bf524161363b6b717a58e9e4c1904107ca73d31051bbe28e4fbcf89663a7b63db638d5e8b945956d46816ccc9679b2cbd228ae5948d40856a0685b3aa7430b04d33131eea6336cd0f092e39b6457fdbe76fcdd0e0feb50cad5ea8d41e5aaea4f72df87f1c92410d9fbc13ddff8e71eecc756c9248bcccdfc1c3e6971ab7eab31a782f3bf17db4a9650865de61dcd74e85611ca6d7fcc2c1c23d6fb6ee7fa04f800f6e48d15070b1567d3404df10c2040996489055cd1a5cc0df517458ae71b6cfeef8fabbae6f44f1c2ba48b796d31ae2eaf15cb2edf34691887062864786db213bc110da5f82b2f2a9a2bb31320461ac21525aeada9b6337a8a8a3911155373df94cb8f942857eb471d358b8dff34d9c188a0744245a2d275118102c7c6e4dad370c0b0b83f167de09c0d1e38ccee5acb367f52646459d85718a2c80ec36583290cc7a9799b27f90c0d634ab84422b61e725227d70f64ed01334ceea9e8ff2d49a50190f77e47df84a645db80575bdb5243393178ff28e824dc1e3feabd7a2e384104d62bf832855cca4476a151905584d0326887b48ea403f07c40cc44079b3c994954c3b152287653634605e03ea791aa7e818f1eeec49827abefaa9fad025767404fb26227bba4b19f69c95c311fea170d2b4ba3bbafa65f98f5d1f23d6221aff3b406da2e55031a3c59fa75aa2daf73b005a2e5357151aac1f95412406cbe90bf8e2f88f64d7054139f65eb76ec1974556d127c9d9ec1758bd9c5e13dcb7bd44ce564c5431b2cc894524184f860f257d69f1e93ddc0c40698ff385240c973dcf15ae3b27a2fd876b54a4789690b633a87fad9539682f696a3f75c9d3ce3e99efdbd8f879302a13acc6816cddbc6a9665973b38b52bddc9ff0d15c605be245b07925ac499275106d46c38598a85d122ccd8365572f6682efda1872ee6b1231bdb2fcd5474c3508d6d158cc733cae1c4ce9f3de4d9e0775ad742de2ebb8cd12cc74cab976326a1f62b237af621bcfc04d638967fb63c189a63a6432fb2a86155d49d3a5ac479498adee1913711eec8b1814b985efe17dd7f0d146c2fb233bd4ed724bc55f5efd4bf4b23248ff9027e2d3f4c33aa11aeab8835a3813eaf3711491f9ce4411c33caf3699f85212559c1aac469206440eb3b3d0562c311cd6f018abb2f0edc03050cc3e8628c1e161abb22f2bcf10757d001dd03279411af44a3ebea96fcad71319758166458af597a224c1a3e2350b63bb570dd2bec8c413885d8e3dc95775f9e66142f7442ca7a4dc95c217325cad61faecb37098c9b89640bd3c9d13e81d0e4a684e2abb0120d930c9a673491a097e34481745dc1561b203b1c1162e93a1bd372c2ee2786e42e83f50149cd4eec12c605f772c9b2c7735fac722287dc0b71f948bb655db28b1cf4f6b58e5536b8b5c1f0d8e0e266cd21111f8a0c0d9f334b6914c13b27e065de19b88d7c592c766b6d21871a4cbf2e262be9c2944bef24407b6624e1112bce3e1f96e46a5dd2cf11d48575f942c6d7fe1b9fbd02125e21c407cf6b1b695ee50ddde20dd99227aaf51d37b8e56906b56f1656b3de60c8b1a0edd57a94a51f90df58391cb46d45f86378056dfd954df73eb798f5f6a4ef11c37787c726da9a49daa6dec933aa75a0179de0bab5f259d3e54a2ca4ffbcb95e3bb50387168457de4f236b97fa93539f465b56cba9238e53648cc51fc2361c2e8577200fd53f68ec9850e00c5122e26714ff43e3c564cad9e2abb389721a9522a2443e4bc59900915910a9c6179acef2c229abf69d7adb6daeaafbd0b7c299e4a8c3c124530feda8cb78762bb4e216ef815906ad7a364215395b78ca8392cb059586ef191c29dfe1ae8a01e0946a49dfac8d6317e6b47a2c16f0c9a25bf3cf4f4704a47e9d0e4f694f229439027897f5f2e0e43fe1654ad44f0c462a539ac627e42008a9425a26899fc982258a91b2da13b64240a922a58ad820a4498554ec3da20261196c38612fe4d4bc6a518aea5fb6fd3d3534878a94b1919636f51a8ca903aa7e8681354d2d7d5841664f14935e5849859212bbad9d883b50d6734ed3f004e480bcca5ab7c4959e6562b7d340188f6c7ceb8b3bad596d8667f86c5868a0bc8a88f58f2f990b6266ab555d0860a8b73caedef9cc71bbcd53c99e677cdaeebb1e2634b73e07fb43fe1265b1739dc6e1b36f341e5df2bf03eb4e9b75932a558bdbe35f4c0a8b9ef989cb697c0e88c6d66a1402210a3cd63a1802a08fd007fc1e4f16f73d2f4fe8b4ace7ebf6402d9a24f50b5443238c2360cd59baf9abb2d046a859deb54bd883c9c8db9680dd7524e79b0bad1ade5001e1cc9435a14285108199c05047935b3582973333e98d5ef71982ec4819a0981b24359d82048a593cce761ad64869ff420b4fd4c658cce944c4776f8eb96be5e973d4a00455fb0de93a10bfca339b982356fa415ab9f17cbfb58aa866359ff763e6e9f7bcea6d99ecfa3ccf81aa0c766d75569fde1c4a6fdd16c43c026cf543dc31ae19850e4013e86c22a445026ec14c50d41d0d7d67f94b3f67d4abfbddecc019f6ee97e7d018bfb4a0a8def6f980b16e711261bc8a4392cbbec30e7f47e8f5a27dfa0c1177c33caedc9b953b7b040f9704817b49b2c24077e759cb73ab9aa7f88ea7302d3a40d8b7e55ea55a4d46c6d152291446289f866eeb6669bf8c13a8cf91f9c03d4fbc1b9dc8407876d940209b860c809bb1128a4dc6033aa8ce3f30c7d9d43a18961e24291d098aa3ca5b85ea594dc885bf915f5bb212fdd650300ce038766347947f1cc69d44caa12962bb28b3f95b30f21c99fd64cf9064e0497752915a84b481a8a089cd47ecc312183e4869c1a441c6c21675ad66c21eefc0d8890456f6b3a6e6299ae792b56f034100cd532822a4ea9a92c263af5260f94b63394663d92b7a7472cdc80a7056b2ed27e173b10eaa9fb8a302278773800a549485b5c6da6394275db5b984fc475b3f0594f8edd1c71341820837493c51c231a9a1b7b39718ae6196ee79e3ca55bcdaf59c837d3e420b0032407035484046dfbc251e1711410627060e8c16b25ca529240fbe2dc8a9fca2654ec9b012faf315d98a876780f9300694bef6cfe484aa626e117abfebdb59f9fe3befc0b3175e1116cd4a73402f11314045af5ed61f102e681204c5372d47295f4c4841725a090593bb27990032b1744d4db0306b777b51ba30a2f811042b815ffc35497f601ad2c3b5b8753b805eb4d47c8430d56b9436f348aa61fa10fa934c99e6af083357012d6636d858bcb1d0676ac1e7b8e89a085a88d521640b8150350f34f1bc53388bb4256beda77f718b8432f0044ca8b0420d2f47b8f32d94ff0c2019ba96015f97f30764fcd3f0ef04154365d1e6dbb21261cc71ff78c347c62f13b92b5d46a14c8df63bf8adfe93516e3274d73887a0befda964e4225f9dbd1a927c3f7ae22a882a4c0a60ca25e2842edd528ef4a1c3a25f43ad0faeb11c9e30470c23f030746cb4bce175defcb8f0e480c96f475e02af8aeffa6ac2df9548a30e55f8b488fb586dddb7040a63149b6f6dcc51a8da83338ca191856e707cdc810127a67a2c0127510509c2ba4b0759738bb224223c54ebc04db9372126155303f2fad620d2d7a0f3af9492ab58c393c028a757150089183c5c9cb8068dab86b700bd8faf01192f281cf3ddcbcc7f0bcc8a8709dbe538f9f15c9b7683d262e8987573aec0b33e26b4b5ce7d10ebb0f65a1b21af805508d018c875be4b2dfe97619743920b2f27256c180bc2d848d1fbf0ce434e5dfd38e56de281e56111e74b8b863daf7c4ba44e5ce3c0051d34cc61cb00722e89c472e9aa2710c1606e6dd34a23667fc2e20f2a026c367e329d4fdf0f3b53bd9941eeb0f04d9fdc7b2ae1e37a161c0eb07d1081ce4a6e9c8e12a2395a14176fd62d37aa671e05e74abf86d339d59fde4a1ed3e38ebb1a471d6142962f2351d771e85dc8438af1072382ec06ae39313d356446f2a91f2f82c52df4aab805c1ece0520724c9a08d8d4d31863d98aa233a6abc53c863110fc967f233daa8d793828422aebc2318dfb623db287a7aac05a5adc21f934077ef69bc58f64e2ad8190522b282220c8e23cbe8e32bacb268b12bcafb2dce4d6e945a400867046c9c3c5ad29395288bbfa7beafbfdb3785877ba056113727806c8c41b54adced024ccc45a5fc535d39deac049ea332866d0f22e9ca011bf454f5405db78682d09145bf2db15fe473494a451dfd06b7a2e07e21d5159442a7e300631c8051a731a373ca984c1ea7680463ea18487d68f8dc2b81659eddf9362ac3203d0852d31c45459abb88584a279c6728b842e7fc4dfa6bcee4c6861a92759b6f869f092ea4e2b1042302a509b0d48820ffef1c8e068379e3d8184b1b04ee407bc10fe2af4b5a21706174d80f9ab6d2512cf836c50689fb1037badb4966f62be8cd05046e1e6ed8e39e3704ad39ac1afaf52a37888c4256725dffd31c99d035adfed75ac0ffd2638be471c8ac91a884b64d00cad35f595669f8b757049ef80c7f1719c512cc940922aa10804eac33023a781bbc6c4d7b44fde4ff05dfabc0e5dbdd8f41414ddd0c1645bd36497beb7d6a9328be2d7cc4ae2a527c2fa43cd6b5b687ffe9c1ba46816c2dbb6c7d8553ea086d97803dd5d63cdee4bc706e699b8b7a30b1718bed7e1b1c27469f996058c7a45f6e1575e9a9773b81ba0192e4a2fb3d96b992f7796856679a4e58bc85e371862abed4045894aac869b8abdcd731518af0342757f8d9b19c09b3e5d7262d2a1a25affdac99540771c3681aee7b7b5875b5d426ada3857293a07eba429d68886b1cf0a35b748b44f9e931742d4a855907b1c20f4758e014e6e4e5da391b78955c1c0935b3db41f45ab0a586fabceeb0bce9bbda725909dbf96a27410d93fa9147b682589f24258597dead650599a2ac2145d7e18dea5d6d46d944692fc2e9a148074d3efb3553a02240ae0b09a34b13e26b1d92a6f0e17431d60266f3f626741c80deca0076bf14909d0b63e4ad025ba18c987ccde493efd24b09e1860b5ace34e16a2583a710e1ffe4803b138c5a649d988c4f52895a28750f3e099119c674053a648940974a3fd615ced2ab27f35795e584deda150f642053b86157d436ab3b8376b45baceaee94706c0f04bc1cc7399e6ee7531cc864224375878dc86b25a1f2d996b533b6fedc703b867ea3f1180e53ffa5f301ebbd84631c4badbbcf240aa53f22210509e60bbdf5bf85d0b5d87d8f8fa65233cdae68ff93b1966814143478f384fd5f7f78c092b1ebde8e0b58431be67a5d43a0e82fa22c116f485b3584b12a02437c2d5d6cb4d5125e492665a944e9b64d00984aadf292d566a700c9c0cbf19754b1344d89386964b344a994d81feda592e3ad4c574b0daf9c906d287ac015996d523f3ccfa053edf3361822b5321794a89353ae98215733158460d77a982904680f4e577167461ca1d0ceac90a9f2643ff9d748645da43f035d5b267901a49d79d81e1beb9ec0fcc05913f846417a618ed7cdd227951653246f6619b4022880ead95c7ed32f1078963a6d930d3b43278988b61fa78f396d67ced519769945f6f5c42793db6bdeb68de0eb36e9430d98a0e53ac7e284d1a6298768a676b18d7d8fa42937cf674259f0a9f6888ebd95f5dfc32ffb22e491098b994ab511e75817ec348f64d1c5cd163a4a9e7b96da4dcb54f67ae3bfd090a234529eeeb0739d7ae200bea2040a554c4fec3838d4931e29eaa36529a377d724eba325e0e2987923845c9b57442f4083997036ad4f099dd9a30417e671904b8b155204794030447e325776f5d5af9d21c2f6a0f0f1857da2382581a05ce217d26abc505829c311416c46e46ac6b7a66b0bfbe8a8e99f8dbc9a442e51fb796ab1efc3913c280e8f8a5481decd3c117a2debb84c10265088214aaa87d48238380f03ee8799e8d5ddeb23aa5ead64806541ba31aecd3075a4ce75a11a615069612dca921cfa2885ef372d8428914833f6aac51f115da95199086f50e3922acc601720e38f5cddfdc60d9447a1c135811d280accfcb8de9dd1aa6cf5e6c05d0613664d9ce238e6b0d0840ba1678b9d7216fb613dc49810f8ac9c647a42a43bebe46c56a6c2ba439532d459417e7b04eb7fc2493a24f13103afe39927c553c8e37117e0ad9abda0f216ed9d5649516ec002bf2d6565eb8f9a0aa9ffd6d161cb7b10b0591552050ca7321d95e0b00cab4da702044ee9cdb3d083d60eda1cd21edc568bc65145c89e71ed6722394140760286c639f1a3f2a573e32c429042b7c47523930b3237f3b9975f0b1a43da94b723c782cdcb7702722ee03cca58551f0543adb28e3755563639c3c43cd0cf83a39e45b5469bef0a13bd39051e3681feff09fabf9f55f986685e83e2b0ff9c8a9d47fb13170da29fcaaa420abf94bd21c2de6d191654236f172953bdcf4253dee3e46c0494b06072829cf7c29ea0df881857a9846ef3ac42a551870e0650131a45f9be959304160a2c0e313c036fa41e8871558865b29ebab6029c153aa6682712cf9f02b6d21e825d1b5a53630d889f906422cde9875336bca4fc6f0e10f0713c97b178dc03ed50fefb2555a4060e94deda8ff262252b0b138d7b9ca46b7d2c91ebf86d50ad8a2143464a7a9c608c3d7d43c0aa65a472d114ccd02655e1e2347e783b8adb8bdde862c6b5460666ed168316f70c22cc18c8a18b156dfd7463410c4e773162191b76b573dcb6fc307d023cf7b82143af76b8455257889e326e4fed50f6f524c81229a02474bfa83f786fc3a74b5b04f5b965c06fa016b8661a394d4f4052e2aa9ad80fa69273a653d27513f5e395ac36a1a90a06aaa00f680ef40b47747a277254e06bfef07914497e07cf3ead005a52d107aad592b2a30beb14c457412ca03076bdbe332024b9f02123b2324ba030c47af19528d6a9b17035a1cf586157889ddfa27bc6eae194cfd84a188208036ac13d02f8e3f36daa2f0b6e0075a1d5e1cd694a7db37bf2e285283b9569a164d94b1b513a442eb5ba530a7fa11f9eb3553c99981b75f1018465010a09d13b5a400a21d60654698c0e02254511095bb742ce4a46881e453687d225ef6503a24698402928dd97807b073afa09f4ccc23b867acf01b525dd05ee951be539424b36d4565476647e7e0d4c98fa294497c95771242511c9953ba594026403a703bd0303f0aec6d25e436d0df9e74f21c502cffd967389aeff2deb0c95e9e77dbe131f67116ea4bca182e75e63711615cfbd26e32c44cf31b8a047cc5aee1ef2def52deeaee91fb4a03dfd3242ff1eba082058cfd49aad6102cf3d3a81f0e59fded45acdd45263699199eb73fd2233c1d0358722f47f0e7b1ab420e46001107a40e107fd5221020a427d427f6da2f613847acd77f2531112852b5c457b0c84170833308014a105423dd45e0001a80085e96baccf4f3ef77b686b306fca6410f9bc6badb5263709b5e729f028dedd5a2cfe85ad21f5dcefb6bcc1d7fdf61b6d6be89eef1c9ffb0ebb7b2d74cfdefd4a4375f5105084feb59c76fb09359c7e0181fa41cbe40cdaf784fa47d7e92415085184ba4697de347bdfbbefbdf7debbf761ded73aef6b0db792a95b87f037574158d81350b4b57dc81be02eb055b4ef800df4e42c3226bae973e4f83953a00367e9c055b4ff4d285b3864e044ff54480a55ae829e08895c45fb2e34d396a5136f0a87bf9243067206edb7f621e020d0bdcfd0b5af2f1f0879c3879cc125b65c207bcf592ef8ecd19ff0f45d353d7437a341a07bb7c33f39b1e0f30efa934205093c0082c1a18bf24f0b4337e59f01105620cc5c458208f226a6e4c9304d871e6ce205a10f5220cc5c257394adb257b1be89db77ed4ded3b60619b37509ed73259ce39bb2bdf834d24c932e79c73ce390fc92cf749be7989731fbbb9de50d1722d535d7dd4c7ada197f75d52ff1e508640fab6f0839c240220e02ac1f3f2cbf36bdf087d1f779907922449923c4f21f7686fc1b059287832e85388a6b9554e0cfff43f2119dcc4d3a3c2944d3c4f8f92284afa3cea899b78fa867e13cf9ecf61d987a7900f53be6384d2e7eba1272a745b3eea3fa028ea37b1d71bbabe114a19ff5195ab6c5fefad63aacfaf9cf8bd89a83f87e78930dd44d4ff50d4a33e3d3d079ef2d36417ea63b4b22c490f64b7efe1cc6e42b72c7d4eb2d6507dfe6cfb2ef951dff37ae896fef4e63e87e91ae72949b21b40ddfe02393c8741be1a7ba0baa8a613b827f5af839fbd4a41f9eba083ed3d94431504d77b84e94d10fb347d2f4bd397a6ef807c7959bf54f2bbe99640aa0fb04ba1feeb97babf9ba67acd3f6fc81b4eeff64e3283e939bf42336050b3cf265a0035939a83fc4b9f537e10d8bf2c85fb9bead6e049e066c91a941fd04dbed63e48fa10864b6739761ffd39ce81fb2e3104dad3db73903f1165b3640af4fce94f101a649f92d25152525050be5683a6ff20fde92fbd1a4ca2ee106c10e5e63b68e639f20c61fd1d1fdbb6d71e84d621a079a33925850211d4b8c64dfb7db3b6b7cf295b5ba1fa6712cd5b1bc916afbd6b95a43459895c4dd508351eabac340406726f594d5d763e582e2272a4b4751fa4c094b68e0027efef0583ab281481b7b26000bc719de9c28b8492d3925668c0da18053720e369124b39e06186b7468e75b40e1d22bfc8734b7834ad80957410397815beaf268148d6012b8193089961d254e56b9aa67992a6699ae6533613c08b02d66836c660682648716242b474d4cd48b5e8b12256b3e185a522b569f2af9757e6d102c6a06dca3238016f06ef0bbfc1c1972c06fc06df20be1948db7b059fc1c17aa788ce7b595e5d938d3009ca6bd94dc32b046b11697001de24305a0a78b30dfdd5d32f7217acd9de9e991a181a132fbab49868004789d0510c369545b394d63c693cad020ece38f2101fb0161cd7f29e80654cc014bc46f4500e9b82b58c0ab9ee8257b3106206f9a6f924c17b046e5f1a40ba4d2cabc53130d90dd844f24d9389460d6e92997485b9b1c1ec0b84c74c0fd1527946005ebdb503fe01eb1c9717073c8020f084177db3dd0c38059cf37a9853d4161cd5dd99d4d70c90a21391a7301a9d6fa6c626f53dc2e66b04a5ed32dd0f3403bcda45e6c25ac399d33f62194ccea4faa60955c1db84ec01e71ca68e9ed294652946219df13cc69d8f23f0beb17453ac834b58c1c00830205f181a892ec107ce3d90c0333003b860df04af05ef0254887a208e665541648ee28c762e7829faf1d62404c3586395caa4af699ab1b1eb9b5a8969c41258c7789201cfe47d936943caabe4cc6455765f3248a01be104028c1f1c466e633e479a9f6fa6314cdac9c2ab8ff21d91175df455b60301674c0778730d4d97c760de22c1000b3b1e24657734d63ec8600a418303049515d3c4a0294c7bc49b9d973b2686f1714541059ae59047f5f8ba2623e293b10c4c92eb1a50a6f87f3fc73175df55bd5c4c1b8f9652931d369831a2d7e27842f1f4229ca09c1c234d0cf3624ccb9349833bae692b67f9735ca4faee0a8a1417b1d2b83814bf2cc545a89e1657b51e17e3a2daaff0735cfc6a59719c69adb5d65a77adb5d65a6badfbf04c790c1445c9b22cb52e75699a5a9bda2c4b7284fe3d6cbf85a730dd423790334972ce39e79c73d2d47524d4bc893ebf498ffaddeb0df50bd71f6484d91794fbda73bf8764164f5310368eea6aa8cf7d053e6cd5d2cd8ab70453773726b7ba0551db2166a365136b816cad732b581253ac15d35a046e8b245a26a51c164649862d82d7eaccb52284acadb14c37d89cb11c5d2b8b2e2a264e6d8e113be387bd4ada698392685a1b4bb8ea58a73716c887190e1364ed08af76ad841b5621a0d8b923b5a0d60689e707a9668d6bc2964012135997b4b12bd45a1d356080ad46b4da17572da26e92848658213d2c8aa3106547451292c888130284880eaeb8150a3b82c1265171e2b8a4f5168de8c2814bc490e1b176742cce5bcbc376422d8659bb15c6c25b3ab2da362af6ee893d7154426815d2436374d39e19c5b459782b10ba15eead4d626b7ba8ad6d666061ecd216912c2554acd2d34ae4684aa845ea8129ba614d14c5c0e159d1d5786b6bd8da1d6a5b66ac8f3096c6560b96b526a1626d9ed8baa39684d04e0f2b03df34c131ad11cf896ec85beb836d0da2c64a99a185456db537597454314fadd1910821d6ade7c57bb3dabd31ec0c1e0ebaafb7968aad5da1c67e99b14761ed8fad3648162b47c5d23c291dad7442ed909e36a21b128862d821783d746d9137168b8d75a1d6ce99b546c25eb6d812d4338b35aa27552b03d5c648629bbc297c5a1c599e211b9f2198ef66b217efb75e42755b45fb5308ee734f72ceb95fcb10856a6d32656d096ea25ed93c88ea6f200df6de7befbd77cb422da35a2895fc390e72fa466aefe738c8e8b36f90cf4f2135002ffc1c03e501cd7d37c8e9d03393e72e39a9b5d64057035d3ddc2c5a830ef566ecedc839c78e7debc66c4153024de1904049381c08080728e767c93118f444baefae90a5453874d8c40d36f187ce8f4387ded36e52b21068d0cba6f7ded9a2fafb39fe59b11e517d3fc73f27be1b6455fc3c9d424733e84ff3e778d37befbd37f9bdf7de7befbdaf6c3e77a78fdcef6d383c663a043d9104dc77577e5e2f3e68c6d8470ca72505a2f8ac605223e2770b7eef765267ad0b16ed870f1211b3f7ce06f9c06b931f1629f6e171818979b4beefe7d8c7f84f7e8e49dc91310f930b53cebff464c24ff386adf59317070764960cc28abc54925281aad1a6671401e4c6a21a0452a4428a73442569c24e1ab34f922d474ef5e7f898f44fae2351cdf167e6c8633cbe7c7745860c08b49059363879c92500cea2780e2d6dd5dd6797a8fde77867ee0351309cc19fe39db4ef06bf0bf4912f90e47ac7c14bddc9c2513110f34ed3778951db7479213949f2221bdf4e4e4f6fa78873fad64d357f8e75f0be9bb5823a43787470f0e894d5e888cde8c4a0d17161d4c992f13fc73a423a36df5db9f9e2e40c8b2f97a21a2485188811fc1c077a89482f71008f874d13ba9d266e45c0c094f47821b232922d3c399602484f959a748a9e334d62324f7285d592699ae6499a2609df348bd44dc54d92e4fe34eea1921795584065e9b95ad672519471c2520b2222a2c91312115d1a99119822356d175255563c463c9c4ee850d99da1d1c518218365044c8f9a544cddc854f590bac9f17089972e256f0da92b3294cfe047bf4ca174a625e49a84de56dc186303f2a064044a46d09b8e9606658ae22fb1941871346d44c58b381b5c36e6def062e24a94f5a8c0da29c9a1b2c4b23113e0f9165392ae33b01c533e8e60726cc3c248b5a4882cee2ae6c7c7a0b669c5a4a8a99b26d6dc37cd1445df4ce12934a7f4de7bef0d90537b07aa4192244d4faa64b6cb215602450c1edd8fb21b24688c4c436024c558c5f4fdbdf706cca95925cb5c52689d39831561cb266aaa384ed442929ca72b44929a97da90b589095dd51109230baa364e6456157d097e8eab767c134dcb88ba5aeb93ab70eeb7560c9abd90a855c27cc02c37558c620da8e45ead1af1b927a9e03ee79c7397ab949892a9f2aa68522d262699c9a74ea028fba1d8b1b9ca0d86f9ab840a3ebc21722f3e323b710b24437c2cd911f9805191573d1d5a4a85523ec65514460a287ef81813922ca7dc7e3965e497cfce3eb5638a2c889650067f2a040cba4421c9605d8981295969e0aa53348458e2194642b4c8845cf09fe329311e4f897117132d1ec86369d0928b1a417668b852a09bb4bcb999a9253596b82c45319948a1648294cd49549b2faa489afeb8244595f528b474cc2529caeb4ff8398ec22ae282e4e3529c11d6c346c887169c873bb6172432e2aa9d36d26d424ae2f4993fc7264ea84b28706b20d3a0d65a6bad49cf94872e44aaabaa1b78ba28fc03b7061e2cf3e624d9f7f9e3a0e4c2fee38093bd729ba8eff780efa6727f6ee226f6dca350819b13393611f4f90f023a13b5d79998bdefc73d8a729fa5d6c83c984066d980f3a18be16735320f2cc07e3d6cc9643c68810ba0003308fe1c9b80f9fce718aac97783df0612600f9196acadfd51cbabb1220123d26a435c5145ed24b16c433e3deb0fa8104d50c5b8246c521c7b04480ba463958b9584b54b30c254b0404e942db561efd80876ea0987c7534cfba264c8085be4c63ef1a071b6becd6863aeb4ac3314384d308ab07c581c4e3aed90d34c7b95c7e6a063c586b4377ab44f686c1a8d1e31da142d5854ed78626b9460df80e49a8eed4c93b145c164cd3b620657c3c67aa51dcbda982f242ed8a8143a26a490d82042ed9b887606930d8bc7f40265d7121561b37eb02372c499b525c86855bc80c362e9a46428b53c88582324048dbda8144bdbd34986666c0080022318000018088301499223318ee492ec0e1400074fd46080603c483c1444e26030100883612806a01880011000a118868118042321b2e801f0fa88d9c4266ef25b3125ceb6f377b9624ae864b5607252a5fba5bac39c02852af3722b8b2ae1aa1209d184514d6f540391c6a953e4cca42f79ef94cba5aa34f97d827eba08e1019936051d5809416dfe80b90099a29ae5ff55772bc1632108f6043fa6da858003c0d1c9e84ed90f2f3c7d9ce1b4772bea188f4556742a1e122c8932f8ba25502497de4beaecc1e190d2de1c10fc715f08f76623052e0331a17611df5c69d7f2a8bc12f843144ca773017c472710ae1fab222dfa47b1a6e58775ecb7a27f6778d4158ef78231820058d5af95acd97c6492ded38b2e7bdc8d3906c9f4ea16fa1cc25bb6473756fe8f40a90dcc11e7a4b6d0dcefaddb02c70c1889083408aca6bb366de698709e82f4374ba21996db058f39a7a74faa4e60b88d6ec8e9d3c683f47afc777ef8a31691ccf5219242b4c08f0c31b8e204f489253d203eda0aba4147912fbae21e83868022e7d244e37d5d5f22606bdafe154750591aeb8fe90dc6e9f5f8712155e822887061163093a42ed359452d3a2cb14f21607b6c64e7b85c5b082bccdc10357c68678999f201b880f4c2219b16b0332de8885905c458f726529155fb06bc1e13b4172d3b2e79b3ea6f8bd2e12e7029ebc154efa1a7e3474abdbd7afd59481b854b0b873c18a47fb39a24dceca73a05f8cd34abea649f1cd167825503e935bf13cceab597d1124f1c020415c4a50b4c1282b03a698280cd866ff1ee6cf782cdb8dc434c1d606d2e53c5b7c0d6e1b4cc11a1a5c4ae3c91ace35009a57b9f3514a87fcf95eff129dd55d1eeaf5820c9d936714cca80e35c3ef868be166be6f4c3927d975bee1259787a7c39fb450e55b75fcb0676377d3450e901eef571de19e2467376227a9208788231b7d4c8a2581a453ee48aa56d5c2f577569e0ac2057a57db3c214791cfb687fce4dabde9008db3dc55ac73a86115a04d56cdcf684517112395e315fa2a1278606fd710904c11b8e53154895eea440bc3c3c579c7ac0a921e191a9e520cb31ebc4c2a39be88b3b7078d165f70dc7ef4bef11133723882e53380fafdcb8bd4b34b1503cf72d560a14c022b56c7290d470eac17b1034b65816a571d43eaf77f59404d4a9bce7b1f03f000caed32988fa97b35ccc1505cd90a5c242471b825e79dea381066259e004fc996a6a6e3e2e2d5e985699a6a9ccae457cc41cd3f7089528fed33dacbe5829f6623e1e1ffd2041d3c6691107f119e9231f8bec9eda74d0de4d6d0b4c2e39530b1d72340f2cd6b642960ece433be3c53cf129ed450fabe4d245869c6839a7b71273a425b83cad0e9be2461b280eba84e2541bd0d1fab702e96497394b4496228db914d11ce792c51d4e8fa1642fe0bf392ad4b3e6bbd50fc907690462fe3661f95a6803c90a74926534ce7afe661612485435918ec4763e367247f23188f0e3a6b3da7a4fb6e4f90e8397fecad14bd124d49f91d0a41946dbed32d9665dbe8afaf3b354b1df41c59027a8fa08a9930256c0db0e29a28fc3b438e625e002c748482f7f19d4350b8d653cf8e6db3e184465cec367f325461917d01253556a802739c7502ffc52a7c8c756c114d57542cc5f91fe4709cc5e365d0b80c1debb4709ae3e5e21366143ee0cc7130a02a0b42cc4947cd86afe59ac96d3e48b07518cd1aa21262636d41703399c906a0d3179418340e676e25724aa92b0f1095105d80221663ee77a2cb41404c98251b987e76fb2888442a804ae05df0d46ca3e997af14869fc1ccab1cceed6d9b45835ee4f84d1732e8e704320023e4871e19af3f6385dbc787b2b755d79b78a285bc24e3edbf4bfd0c14b41bdd677447bdef9b4bcf04e60ff808b13de5e509965450e83c91f8cbe636a0ea5a32e4b7597d480ac627bba3b1dc0e4895c52aa3c124564568ac7f8c7838cdb9ad823f7fff6e5a2124613a3b1e42a21c8387528a1a33566e97456f59f49c925fc683b5bf74d1afc7c1f49765b64ee2a91975ae7a8218ca81d1ca1e31a5795b4320c8c014dcfdfb6fb62101553bd9c50fd4dc696e4e494cc00d07404dd474b1d72d15131cd04ba29480a8db3e17e77da1aec072e12ab63c515e18b2030e9828d397a35854fcc592c4a80dcf98375fa548a0c83c295d5da1b5239ac60b5731be5e17de846b8f04736c25c47399b0f9b74aa46184da7de35eab7d966544bcacb6ea78fe2ba191531c13690e4b8a1062b12531d470d1bb83ba7092a05dcb591cf01858d3f6e11bbd5e02b95531311a8ce06c685cd651bdafc0726689813206bf112ae379c815d0a82a624177411d706916e98acaf7c71cd4d26c8cc06da488a751055b4608f541d39b66044cb22977a4c53640843d03c445d1d5dd740718329d3c63060b64b9c230ad0f378c3867788197734aa4ca072e6d24936c7fa5c2924a91179b7caf5d1a6446946e572088ae6155589e67b698f39514be85844e1d914e9540c518e175c9b076678430fc828ff0c19e212b8609f11b10ea35100f7b98603d0b5f6e957f8a784b78a5c501a861ddbf72d4d1ced170338da5c8c9d942ab4d05d0e07447fd533d2d5b599fbd4071f2d98e1182d4ed72b4a4de642e6d253d61145dcc3b7b0c1aca01fc97ae4032d6913d40afd5db9e69aed66e4039e1ea6a14d08c226a62fe41a989e0d58d7b4ac76b284abfed231b287bdae97d690ddc3ef4b64ca75a543a7dad8063e4d1ac3c62581f7815ae3115341ad533a7cb4f26835681cda84302a05f84935e28c50d9d231d686f574eb79b6b46021b1c151eed1d860e6d01703c6d3c3ac3ed6ee14f434eb13e71f6d9cc7b214a004785823cf501e0761abe3861049907205cc39ec00ddfd2a2590f83e3d6963e3146d045c833314d1ec56bc94562b55dc3d8fc1227f152cc12ade6380f8cbeb5ca069f02ae2cc179bba82ecfadb598c9b1f5a089e0ee2b3229f6cafc35d89a2a184d796ed1d41a8232a957574e5eeb588d7cc62ed2aa360ad8680460d3949daf09f5fc1a3e18ec3bd57f02a34ce9d50693ede928c3d4b53b94d95ced1650158489605e162d792daa9642af2b997168c534a413d4d94274694ef2545d1ab995b9364f438686e4f8dc5dc28af82565ffeca8c522b1b03c81f58636083e23921f6c0718fc058bea333fc7e933e422662e989c3dcb4d12b07c135329c1b548ca85dfec146359b503b6cebb9b1a5eee7c4cdf0cd3fb65b04522454fdc6298b1f8e4f43a2eec1ff283abd454e5f4e184f5f180b23107f784c530629f1b229cc08cb2b00efdcc8c372f0614fcf6c1e287ab915e37f836ea23ce0170736f94bc8a2d6ea3e134289901b4dcc0afeace20a512c23d675a3a408e116f665aef220ceee4f950fa2ff9938c10ac390a09a0f18556033c0582704ae35ebf306c712cf6b69ad7c80c202acb889aa9816326e272104f9b0ba4744c230a4ec2ee8d05dfc317b057bff65b8d3e1c8ad1ae3cd4b49a56de3478a9f3e1cf61921228fd28c6eafb46d5e6935fea1f61ec16f32f8e442ead2ce70749baff2fe056c4d33a2b9d7042b34949dd5bc3b274c30c1148e0cfaea5f8e81c02e6e829e8138b3e6022d06bc96a320fea810bc866471597657c3b35da96984ed7a7f18c38c71f20dd8916e6568b7a2de3d63dc899e77191d142466a61d1186cc03cac48f94e9883e768253e303948ed639e23ba1376002609956fed56c1c18d8ff4667d36d406946fc0574b3c181030f37e369ad9e7405dfae499227083cf76e60d40d02d9ea9d7854e3c5e4d4b88f057f285519cedff96cf58c150eaa1ddb6a3d15d447713da77b66ef839ed936ee57db1298935b5df4df6b18f890402e66466bd25dccd64a63e77a994924a9aa3d5d7a1cc88de48dc34c17cbc848af60c6bf49d55bda413a064459548ccc140c141b58c98c29eafa6d7bbf8b9df28aced0e870e2c241c78c5e6410e3299eded3a84e92ae4c76f0a8d1a8feeef24acb1e56be7365f223712bd95dd9a6eca3e99a7a1715a53a8fd9bc22c2a600122643f46a278b02e497a868e283355af3a8a07bf893ebd5265d2e51c9a0a25f954a54bf0ff38962095642b372c4e6994443ae163722566ead12f08ccdc7e4f65244b8c236e3770322f5436dbf2fda073cd2b81d7af6430fcce4d54e2d268de57eac5565624729b256831176cef09ac3b80cde1ad6ab45f3b6c09b69004ae5aca169cc9efd40f744fdb34046a36f5370db0b73c804dfe094a27918cda7b877762317b532a6ce8660b2333800fbdaf61b3bba73d9e1e2bddfadf5033fb56137f81f98fde42e87c965fd5f694d6f15e5da33cea95f9c0436d860bafd5f4495d3fe52b268bcfe455d31cb8b69874b920d2b1fe6aa094d104263915737924a0dd4b00fd659070bd4cf54a8521769d22ece09bea62d9c5fd8075bd7d64b6baf2064ef6ba22079b918399136c537ad7f2b541ae36e88042aeb63eda74b22bc53ecc55dfc424fa23d02c371936f11ec4f1ecf99d6f89d82f36dff29e5e8bcaf7dfca65cf737d99d1c3ffd7f79534868cbae0fb6c024ca4eea87032e422b3e90bdbd899add83f28322902171447b2a75563979de5ba2a3805c0b17dabb5f54de48f14642201e445ba16605b7a73def458561b0b5545f6dddd33d7afdfa0a6d81de10fbe3bcf86fcce92d706dbfe9d07086f80c4e88e2fb137441c51ce2cd6027b343e48261539e397e466ad9708b8ee0250dcf590817dc766d8f006b5980e3602d261be5935bc7cbd97e62376e29b4da3b7c79d0313894cb39034fe518c05b09916e732675d1e987ea7616aa83abfd6cb7aacbab57655b6589a5355d2813b27a681804a59b4d8b2ae1f81bc84a72d25a127cf52f997d4f223acea6b0400d5539ce223e5bece1a591d96346b6eb5e4fe6272af5aee777a243206bd7e463579264f1256ebd276b0fb406935df592b15bca41de8009bea53b88b33122950a980478f1f5461cb27432c675a5b1594f24fb6d8a31551c21dc3808a1c13447086010a091ab425845c7065f45536270ffdf0f013b1e6e5ab9948153097bd59ae8bc0e7468d3542e901e93c5bc71eb62570e742c3281c8bcce54ab3b35d15d6dc93baf1fd499023a79c43f0c8b1c07a2848c9911c88f912fa0ed61bb0b14db601149a04421a12290df3a1fb912c7489cb64042244f1ba59c16481b9795a3ae0e1945d13c855f1d73acd34c8a8c60695b1972ec870c10a4eb231969d3bccbcd51af4923988e8b23221d86286978043d1d65db691b19c0f1e140769ca8e3580e4d2508cc31e2a635a59623d4a1c75180838f038923dab176083bb8d951e44cab97158e453bcc17d10008ce01948e21afb46e4a8dbb423b21fc8e36c714b959c39cb78aff731a79d13b3ae62160e0c280b64b95e3324af4b2b1ae6227d37539683204481c7161b40d2ae803a979cd777d1fe3a500bd3dab325188eb1c6573b4b80a899f0680e03baa1d4e47ca01d0e45a2e1aba60a1c081fcebbb98515d32924f5b0ad8e1c49174a46837f8dd0c49bc73301c6fde15db01b7903dd3064746be348d90b248daae852498a6e3a2b4250d68646480562ea17790e0687d29657fb440c98c834895369a2c3bd6eea8b34468e751ccde6969c95007fa7c1a33a176c03966d721cc24d2604aca62d0b44428c7b70359bbca4f0e1e8ebd7018f2a721bf909c68b964bf1de8b769a89391415aa96c6b8d42770c88e3d82d0d9180e7e8ab31a486032c87de5194a3fa8e8e07453b14ea858cecc688785cb8c63b5933939c59879878e478b6e39013ad3659e178b46369621a014b593cda522ec841c44ddb462942a51de5fa1d6535689b9291304d5ab239ae3810d241b2a0e1900f4733079a721071d2fac8d951f310bc84053643937c7d6be4cc27e91fba0991192dca8b211a9a3464844a33175ec70607a1a38303e9d068471151bad1ff1c4e71bce36d252d8a41e6a5a806ede4629d330fa4fae62e32dfd1463f8d2f861cb28ea6c3b4e3dc8ef4f534c6c888172d52928eab1ab96c72e072c0734497e3b40bad1c89ad8324475bab98e64b032488e12884426351315641d312147690fdd1862323c1e0b2b3f33487488b43531104ec2071d18629905469e7a4c7511bc3fa3832e9af919ce5f638a74d8ac8f5f49f1051d0402f860869989c8c6c696d511d203936388a6a928277cccd513692f645ee396a1ddc8ea423d2a1ca31ec60e280d31a09bda0bab665b8691110380b529eb622f023cacff2a20d9a562223765a5a421cd1eb6a8092b22d16ed1bb1aba5045c93253cbb7a2ffd9c682dd159701933830f388bf4cd31fd7133980f4e73a12758051f982f9a6da2e904bd967e07ec1df650489310ccb0066cb62fa16fa23cdbf985be4542b315b328960ea67714e9d1dad27447b1e034373139081cc0e11841d3ccc29b638783d8d17c67b6602292a675703f4733bb10297f875878631199e978918fc61330390699a145c925c7ce263d42d45624ec1c6ac7908355ccbdf54e5bddb100af9a3469dd94b7452d2addd45636730e64db3abcbac3e114c03a3c5b4d13258a0eab43a31173f49eed4b46129045e36bfa528ee42729a337234e728c409ce32bfcb90bcf399ca00f3b13960e961ed9709c9347d750e6995e3f02a4db1c6597b44cf285a3e93077bc716c1df2b568413a2c38be0eb443c71c6539682b1294a35e384802dd11b698f5655e41a86f96474918846fc062149350cf301a593d1dc5f24ae56b03d31989fdcc0742df68b1d8b5f98e9e426c462962625a1fcfe8932da2f7f144de8357ca65d2c8a30c306069917525325e202362337b159e42cc5d838141323b1a53521b44843582a660a747865a5243251dffb1c67e36b07b549a30b9c1e8a8eaba6afb0683c063b8b7ec4a479a4776c0ad401fb33b5490d702d89c6b8381c3f8422518f0da00a191a15620cc9f6545133b80e48588b3111760587259dcc1f4dd691b3914b3e4f21e49bbb5f94802c789a97e286e2a226bff3d884ef4023639d13e5a0bcda23e98162f11af665cdc0f1f282614a79991ae925d8b7579a4da2de9ca2d8a2b64c34b65ed02333ec1cdc43a4c821e80858c8419940aedc46ee8488b0a4570fd7e987c70e96b0453baba909907e31da86ce6f03829b20ccf1f07e96157c7daa25ed4f82dc00f9c18584c99bad6585a6d37c2565a1ea4f2c0d0820ae41f537dec3547d04d3bee90ac6d1d9d6df03610a044ca4a0fc4981169bd44cd1e72ea576c9ef0c72ae5b2a27a50f37b9468dbf3aba5e08991f59dcf907f86b46930f9e7a904ffe60c15801f3ca77574ba740b7a99834f73bd8c671b7231d7db35fd2d6e09f2b35fd7559ee3c05a593691b4a5d0d4138e03e3874cad46da2b26cce149d5d70ea3f522f6bdf686f70ae0715290bf16872850f6448d12778d8ea21957a8fedff0fecb96df21c771a6f86d6358d4a89236ca83ed368cada272d0d66d94bee420516ccd6327173b65e5de00b1e4f926a0a8854f7b47cb08859662333fa9b51257c4a4a5ddec6bb4c763760c46943f8d9eb6037ad39ff0b933101f90a926a0a6f871fff3f62ef35e62b31f290f9589caa36e9a7ffe2df8f6ccb334cde89a3517fc160942e65668ce57b5e14c744fc699b6878d25c24d69ad0297a6cdce8419162d2c7b90822bacd2b78f6a2a610445ec0f183b7ff054ee3429d43916091a6645529cfad4531810ea9e48eaae559b2de832eeec2520caf276cbcc6c07d9a359112f79c574929d5872928d9db298bbaec8c8a6c017c6ef9409d7ea94a73902e1e56ff167eed2a38fe32aca9c31ea4676d39b44220e59d62a589d3230a2931c37e4ce23c125bb72422f28a2602804755bedede7519aef4c222ccd255c7765a5b5fe8e599d70a565ac55000d5e6eaff9b05dc8b53adf9580291b04a27bb81cce7658148bda2cc7fb33bc194e043157fe07308a5b7ea413d5c3622620c7994e5464357a98db8a1a1a2838858a198c33af95026e1bdbdb3dcc6c9daa24f7ac629b568347956dc3962d40581bcdab175930078ce8242b8f52a6de942cc7fd093728d65c117728dc18e031b979dcde7718367c34107880132b6f350b4f01c247a63a2fd68f64c73959f3ecd65416a1a58e2058ff6ac5e174b5e5046b6171dc41cf0577d4072c5ae0376d99cf99ae8826f271cfb1d8c4c12242090311a0848472756dcd09ba16ed45953726059c2c4ea1325823911f68f9294f9f0b36b16f422ef1be8ea62280bef6cdd2ec8812a3eeb3c04773c56902e253b07e011a308c87cc42a49e4cd6c011d4f95bbeac1e80c282eae4380f08a552525958958d655c5512694b4a596907dd159fb26809809b5e1f1e2a0489abf84203f0981e1a1ea7a6021fae92096914dc487d9c42555c0d4eb180dac842258586bee2251dbf4fdede971e444f581781b10b3585a9e2445f1c16e6cffcdcbf4226db6f50a6ec9c96c1eda2ab5674887336b4e881b7fe249f65c43895e1fe4e2ff823e8091b405db30bc958c0b3aa0e7c561a2c975daa660672294e96b9120470eb85afd288897af039444cd38177c807422868de667ce602fce60374f412d9c8b0ef2f3ab341a96d8c7175c128918185c785b0b70fb51ea462ca3126fa1d1de0c169abad7814d1ea41d0de1a2534e9d0180540215fb1fc3227caebffc977732aefc7654725422d1548ea10e8b7efa09973ffd3fe75494e791441f3648b6a3ae093dcb9a282bb1f7a35dbdccb321c3700f41c500a406814e6f6ecf806d6eac948a85e4b0c33435c279f5731a8d148c168cd482fbfbd16df1b89a899646121b61312843c08dadd0aff701c4c23edf367c9d70352041abc23c00e449910df1cb903381c8342a4c4ed21d60ce1466ecafe686ca2c1f0cfbcf89e7871e1954fbf67e6baaab3826afe835f19ce03546ed4e32be4ab7e819823deb3f3910332057d5963d8e8ff768dc03969cf036ba1801b5dcc017bfb9aa9de70d5fa490ced695e29900ec339673488917ae9223d6617fa48bd92d2f6955f14aae00029311a628cddfda993676735ee22f8ec430d5f2cf39b3596b984fc5c399388dae81fed3d7c384214baf8e6e53178d2c8c86e2060bbc23372cc0033900a446150ef2bab12b606c6ca281393d3312436aeb26189a171a8c0997161b3d57786899d16b9141cbd140218c152e0099faec92fa7eebe9073a8c0df8c18d240ce3375472190f9379800faef5e0224b6fa41c0dd126f8c46639cedaa94903ea03af43a15b31ddc090f221293bea3593abd58d4662ad339a9b3b783bebc4eef3edf0863f541d41b6fe47b5e5a354a86a61773c2d091905dd84397a91e2fd11c9a91045ed31a3ae98bd8eb0639e59974f7fde0b169fc17da925fdd0507eda23ae56ce20a8dc7169387a13c3de87bd13b96ca6f37f7d3ba36efd8e9bdee06532943f7f17f3359b4b539046231b2a492fc6a2b66423b55792b986400e5ab4b83496da4eacd7c8bfff2ec2c164f8df5b871c035273ab61a3617a4a8cee46661c1b339387f1f0a7436b23bf14f00f273bcbe0f81dac72507e90fe94ffb0f66e75bf37f304182b63ebfac405686a0983abb03fd431db371ffbad540d293550202dd0fc4254aa2aaa023f9b708fcae47cc470d9a9b0ebe2b82c9a75050d7513a5b3ec2498f6f25b6e412dba596a369d87a302de615692d34f104d36efc075b8a15ac7f771a39307843a4b1426a1e5b2f45b6d0a00a5014eaa1df925df2382dd839762c6e2c19453f99be3f00621296f2095a1a0445d2402d01be483049ef0d48cc7b2b8d5265830381b7efb8f83a7cd432332b290e77a8011f8428d50c42090531334043de05380282639ce9f41228f8f1106de23be5e0424dda708add13229cfeaac24badc282593114b61f8614e5c73672c9a43bef94694b82770c9393ea09fb41691aca079a9377dff2422a063fad508fe8b1fc1db164fea72cc1d9d4c716e4949b169af68608999494b2851796aa73cc665a21a394516a957548204c7905c507467c9cab076a3aa4e2cca65e2c2bba6647fd859479e7687199815a0bdeb90337cedbeed15b13f76be5cb63eb6625e70674058c29c91e321107b1c0a12ff76ac71fe542d3a30e0a9e36de4e833a5f74f7d287a0e225d9edca2ba4824594575f543cc1260a1ed440af351b19799183db8de351cc1675b49c855ef5abe4ae8b6a76f1d83d231ebcd576e97fce39b04f67ccc3b9a435b336b458dcbe7d88a0b2a211082de9abfc903e63f129a201a89cf9de123356ce1a9bd8b078d61d0ab4f908880672862c854916916d64bbaf48172d28d8cbe272d7706477f569447058c81580e20a8d2ef693ee6704402cb7523965c44690ca9959bd33d9cbfaf1780a26a754c2905b8fd94fbe3d5e21e4756dcbbe3e893d47c3e757df270cb41f9d720789ce9b345c88b1431c25e7389249e7b49fe4361e1f7145ee33f620c63673f065b049886e9006df39f4ae374846e31b52e1425f594145c9f83abd2823576c9b277ce6ab5a9a0f51041f083177992d4ae45622e57a5a76ea55943af2cd936f742caaf6955a6fabe2b7a761da890be11cbd77d94f66a8c0ff894c46385cf0e52338b3d33969c2435a771c123d6ff51545b85687ffc6c8f450bac9a4415ccc827e4d55dd3420742dbbe4e6b2379498a43510d484028aefd9655f40503a4e0755203e33911545b74d2323f8a564ced74e659d4d3cf31537309cc312a730786e85e75c15045f91c44db1651ca8b8e2585ccc07dc93114bfd38c10aa05823c815c8e806d0b886d88bbd9827242222b4a4edbdf7965b4a99929401a406fe0522063ecbf62b0e6dd243b632199662a51f259d124fb7ba8b2146ec5a9834fda51fd3a65b61967862e860e85ee878743bba15742e743a5d0b251def58e874743926ce0a9d0a5d0a130736716c49c707d9cd90fbbb58d7587dbf17c67c29e64da79857dd4f89289104ac7cc72231a3c532693c4f62b61acb6cf5ca72c96da3c8fd96a841e8b7b05125daa159d39f12ad12b3a61f25da25664dff49b44c88368b6da2245a2748a2d552add0275a1988f6caace9bfa2c5326b2c6dd6f477a23dc22221da24eedd4831a2c53269fa57a2d532697a1ba7d532c3214bf31b3a2d8c56c518d9d2fca6eb6c673bbbfd7db2dbb6af395b9e62dec6168c34a34fbf244bb5f7c42bd9a8b33ab34129a510d872c9899ca86d34f8da3c16b351abb95f5babd56a79fea5322ab3b66e979c349a0dec92711d8923f7fbabc79785cd1afa76825e673931728f757697d459160186f015c35f8417ec3b5991b8eb703fb3a6be4b28b43ab976311fafdf2b4dff66b11a6fcd71fe8d67cdac99ef955c388464cdded4469b727c0c67cdac015fa8eeafef0ddea8a32836f832e1df5e47f71cfeed4bc05b37626ec40ebec217bd41473a762995c9105e24127009780ca149fc02b7afc51778838e1bf8f266dec09c54eea64183035d3184b4452efb4871b75d5b7d7647aa20a0616e8c760c93555071d8dea0f0eabf6cf69f33cc24a5af9afde7c47356af60055fd4bdf43a480f3e05c75208be08fd7addec3937fb4feabd66be77cc455d6f6fbfbbbbbb5519bfe755a7eae4f9eeeeee157c6dd57ffc27cfafb5d6fabab628536bad7dd94be7df7b5f75a341f3b7ede5d97bd74e48cea32310d030b98eae9d107c75d7624c22efc5ef8d3338df9bf3bd77e3ebc9b372a25742212746c69f1323d75184be31b63a94e77b604eaba0e2f0fa5b0106ab4fc72ac6c813f01b0b9b735a18cdff459e223cc1ff336d02a6ca4deb16fdee22cfcc563f5955ac6eadc49b49d3af125d93a61f378d99698380d9f2f7ea8336bc8a37dfb8d9df5563e290be9f0113a7f4fd0b9838e1f72b60e298be1f67e29cbe3f011307f5fd214c9cd4f7dfd880f0c1c4f9be1f01079838f7fb0d3071b6ef7f1a1307ff7cca009d075a800e8d11544f4e21b2ea73492ca2436384d593c4223a218cb00a4dab4f718f124f220958991b8bac46ec34a609027d8fdaac225599c680409a1a675497e99fbcb02492c0d0b3ade9389ca948670dfd4db4f5da8de4bf1255e2749a0dd5980aafbe574512eedb9f5b1852908412ee8847ec346132055f349748da60635269a2f0eab2ffabcb5da261f2045f5deeb203b9f75e5c6f1023456c5f2f1b11ef4e077a8022d65afbe12fb31b686103173e3f302180142d44a9291105134c96a84ee026385ce0a30658ac0852e54a14363b4cf1f282225e869eb4d0fd98502862300401d921080b42b628aad2450b9638a10312a46f89113a82265d62455820841519904a2d36042111cb410913a49fb089fcb032c7c124a4de1ef04890878122528468a155d1b2138609213c3c1105480f318c604b4ab880e1a103b642173c545041c4972840b32b868a18c15abb05b104f6ef7698551f17f8b66ddbb6f5b06ddbb66d61ade2de7b71bdb7c80b3f4636285122872f2d58c10f3bb11e2f465d980021555875b2c327cb0d52aa748165470f1d6278c2880c31406284bb448b000061a4c2e8e10a0e5c6e60c2420e270893a48995245b5828024c72b7e766a03f45dd4f96cf86778b98db4304b7e026f99e9ecdb91bb87b97f4d8d161c98e1b040fb40898ed873a9d0042872d46e030c40b1419190fa513584c5982431046d8871e97f9e4ecb0010b1c8274f019428a142b80445136914393262e94827af0067270820635f0a146a5070986604228880a5b808a2c519d40820a33459229acd012248be944902542558e9882851e3d3a08a13bbb3b321092a4052f4796b811c2c4cfcf112c5c808192214aa494be1e5ac90d384890d4f5c729d01e216018a26746c591142d1a7882fcd082213c7238950414a1658523454811051648d08c0021030f4a867ef878f0cb640a135d62adb5b64a0a66a0820e46b4cc404393273e3b4d68c1c38e244962e0b7438fded1c124e45d090f064c864cf60631ab9f4f91273c6badb5d67eb847ef601d86fa8795390e24d8212684a4882341c050c03264040b57f00064b405a1c31d79c7e2566c2ee80e8c14b1ac2a397069b2d3c54a0f076a447686e8896283229624d1c167a48847200b248ed0a2944aae98618608b9520ac1e30a254cac7cae448f0da4f0d1430d4396b8228a00cc00564397253160f992e47b8020dd7bab77689b60d245a907ace2c9151668d8f28317205ee082082aa4d430250993f2f3a30e3a2e6e3726f3ee7b25171021592f8e4ceff5f0f5cdb83797ed7badb366fec5d93ea5a909fadf0658ebd5ab65b1eebdd45e4ba9b781beb9df97fd7b4b12b0ce518e54bf46e08e3334f7905767ea9f30e6a2f073da5ead47af8e1248e0e76ddbb66ddbdb39e79c33e319fb27e0bf6fc75c14cedc68756b7650077577bb8fbb7b2da245b556fb437facbd5487eadc8d9c433e61fdfb5e876fbd173f8742bedf3dd7a932fe1c55beaaacba621f6ddbe4facbc1d65679feecd9f35ba86fa63b6ce2d03cc8aa7c7f3cc1ff7d246dd4afb4bddabb61aef33e90540a4d27544ab58a61c9bc206dd87166d6d07f1767ec0863d6d0181ccc1a1916a869faad60a1300b97ee92fbc916503fe941d7ba6524f6518e2ad3d1964684f46d6dbb327f866ddb5c3a9ee8e04ae1c90d4f5ec0188309bf3c859ea4c024dc020a275e9c60b182932732d9baf2c1ed9cc0e0e3871552c0818b1d9eec54b1c3151d5694f8f0045f095d5c54f01243163428b1640a2c02e0a506a12a5b5850e3a188f739b95ef0e56cf5766205cbcc10217ee2520188ad8a93d80e273a3a217c29184e886cdbe64418b381131d2f4f21273faed019208a92d0c035038c710da125999c658d299af870c527d7086a422493618d2a9a08e170139e8c31c6b8736d0943d6d33c859ad0f24c9e424dac684294c9965dc115c415c415a4fe9c14e32f35c6ddaf1bb5ce1e326790ab4b375ab58e2b17fe552ec0a01b2363d10406f98de9045653adfe67d254e36add32ea56a5771b72a14c1f57a2ae769d37ed68b7bbe3cad9ee7ab6bbdef66170fb30c891ba1247ea4a5ef899bcf0338127122a5553296f9afac4d3109f4c1fd5f34dfaa9f09bf455b5d23f32027364d4391a560b02b2120424442b298f0f2099bef3501f74088dd149e9a4745213269dd43fc8b44ea04cf3ac230dda5e6db5d69bdaf66aafbdd79bdeafdabb7d77c31ce6386fca7d1be6b8cefbbceff3a69ff775def781a412a954f2a625d2078239a452f895c09cd074329d4edef41403be502c19f0a57a31b39a99f1a6339f09cc711105be689ea90f05e6d06c55e08be670a55aadbce90a93666e70769c329844a290eb93f55eea24f2845cc7a6750bb40206752ba85ba09520137832d58c4ca61ae4f6b35ece76c30545e8f37d82af188e33ba21e63a7247abcf0406996a4eb38d2b1957ab7db559d3f5cb0fa86f5aa869e8e7f01c60c0181975e9c2854b67c99249ae46abf5583db6aa81100354cdd69f89737f4e4b1be2b8e8826c8cdc05e94c5b5142b8e8c924e98854739afe8a92cd9a7e52cd5d67d6d055eeac344d7f17d42d5305567014d4916a41b9bf046b1bd2d272d78c4847243016d7dac51392358b198ad07fe6b34c7a3337e6db7fcd1bfef65f4e69b77f9fdba60ee6d4e94d6bb5cf72e738fb9e6d6badb5746252637ce365492023dbf797875ec1577d5bed28ce9a69c1d79da1c0f6f7757023bee0cbe2c81bf8aa7362aeeb3a8fe3ba12b6bf4fc236861082d3709df5582caf84edda8fe3ac7ddb8137faad676badb6473c6be89c5e07f6bbe86df40bc30f2461fbfb81256c23769a06c106cc6cdf6bad954e4caa2f42bf4040c3f80dfb15cce9723a14ba5cbb6cc7fa9d8b3337e8cf7f65effb3098c3657062d08e23c8b5c7dae10ecf2b7977035f348c8b05e1369276e6356066fcdc774fd6a1231a3431f75329a5947a91ff147557cc53e4ee750baab5daa3dc6fed256fcf88c1576fa2cb86103f47bf0d7cc096bff75edf7beffd6eb7ef74723f37947b24af9d43b98e9334012d77c0ce408f720088e5de70f6fcfba83d42a9eda1945e7b848eaa1db3d52a9d95c8fa1851e64b62b6689545ab2b8bb0be6aa9a6d3365d50ab76bc4741d6af5e87ccc77c09fcbe0492204389494303be6428315bfd2f8ccc1689239f4e3fef8c7d968d79d68802998f7914b07ef5384678c1c91076af7a7a7aef650cbd0c22bf91393de9f9fbf9bde89938f63be61be799d3f4933c977e96c8173da86e28f7cb8878d2ccec5d12a791acb96d9a945194fb6b9849552c04947cd1d3cae48b9e2c4389dcef89a48c5a6e5807ec2c8ba49de5fbce934956eeef5e4067eb7e7f8c8827cdfd9578afab4b48022086dc8f29b6b307502852a00020966aef67d67649114d739ad8f77ddff74d1293616651af33cf149648a07b9caa042acbb24cc57cc462b118ca894edd6c369bc160391ce6308739ec7af0891c9850c6beeffbbe8f068d54a6418386e7445c89047a8a730f5502955e7a65798ab5cd7dd03d0e9bbed9cc93cc66b3d9ac2600334454a6b1582c162b3dcff33ccf0412939e0c892611e7315c22819f9b30179640655972a517f3118bc5623127722e4ee4444ee444041800cd29d3b22ccb92e3388ee362b1fe582c86bbdcc0cf4b5bad61ae042acbb22c633e62b1582c56801a53a6b516c618635c6badb5d2d2bf2743f7ca72abdd0747f2fb52291830668ca407997471ed4aa0b22ccb92c65780cf158350867118f6586badb5d25a986b462425e9a5b27e3bc4caaccccaaccc82b5568dbc5ae36a0dd7da566bb7d6ac01541f150f30e4003eb91f013d1f7c08f03ef8a848da24b91f84d9b401c1c6c69bdad04ab969adff6e1919fecb72c0dc8d9616822a0210df974ac180316386071ecc26e5a6f98dcd325403739403663b5a1a10b48d238179cee8905ea0e6b54f9aa24d290e52c0408a0d6d436fee17ce1a6765774ae32f4295f06bdc6ed539bfbbdbdab66d45f016eb9c4da34a21626295a790941ca9396d3c9bc2b4b9a6ec9348a777cc96bfa7306dbc27bb2c7bcc69bc761923db1f96c716d9225b648b6c918d75cb6dec0e0f39774c9b6d67b6bc6db658b77ce3711a7f8cc390c57a72e3c9fe4162c9ee94626d53221101ca409eaf88277b4f264f3db6e824134db56de73424c7dae62464b678b6d2c7f6b3cd7af22643d1668dbfab896b47907e453f4020d91fac617e5d7cc4401e608e0fcc6754e43726a3a6f13781a9e5b0473c60d94f5727fb0948690bcafe3d9a6addf2771911925d4996fdab58e29935def1b8a084f42df8f294ec03aa8144d845ac0c954f4c2129b32c82b67956926611662189b3c3702a86c056eab356d2cc8dec23a981dc31d41042284a91283f518c4409a2e2aad2eeb59bd66ab5da6e6befad52a50ad6010404d45eddd65a96d65a7befbdb70cc9eeb2562bcb320421b061d2cb26f168b454cb64a85369a2b11c4e22a2922b4ad8b4b6019b0a49a1157f79d2bad5a6e977551192a97bc7b05b5e67297dfb369cd2896f525d71882bf96556ad5caab2fe5b21b5deb5e1dddf1caf1573241c84852839d48812e547941d61a2b0f0419415a07cf181d204ca0f50a2c0a1c4c99427a4dc40861d7c3049b2440d5480c187280a1426840881628a215c7c6ca161e39144132d38590114503628472cb10594263f4011820a28436a348102048a0fc6b88616473c29227c42e5c993274a9ef8f0c4c8132e5052786244c3a43940483056cea13371aefde0a88f8ec8a6e11f1cf90d2804cba2c325d68527834632104c4f6e2f470706b95c40da5aee1a9337b103735425246dad036373d43674acddaa24989037d3007ffb2f774fa57a7a771d433a437ffa9d359bfb66c310638ec5721a7cedd7efc01bd662f730b46fc5d7ccfef6fdab7df5d7f7c01bfd39d4ff357d037330686b77c49b33eedd36cfdbbc6d768b6cbdcf3c076d78ae1dc2553e127a23e9b3bcfd06ce70de73dee391286fef6d9ef75ef7df515051d1cf51deb6a794524a3b286fdb7777b75b9ebcbdbb7b2daad5fee46d7b6befe68d2e1f5c3e9070064712850c921e67d248a2f02a3de91dbc511a87f2f6a471f3c091eca3bc7d4fde7ce8a280963be0335a45c741a25eec6f30ad129261aea3076ef9d31f0ccee13cdc077620d37d68ad7be4f2dc1ec7c1699834fdf7c8b4f19dd9ea9eb6f158b770f0207ec3c421f90fb7c16b701ea761e2f0f8cd9df90c2e83fbf01d6781f7f0d8c4397d5f1e1fe24472bfcbbac6ca149654a8cbe1adf348e0b7bab33bcb6d0a4b5995425d0e6f9d4702bf93292ca952a87b3275e7b0443309ec38bcad2ea9fe9663aae5d234fd5d8c2c98cf7179b46e081ecbabeca32572b920245b7dcb4e0aafdfcb21c3d0fbfbbc440116ab7e9fa7523865fb555fb59672ea0472e8f04a36c6afe44ac281b928ac5f5f93f6c64d8eb6577b378e64391474ab3ab946427a42ae3cbae5321292ae93ab1dead67db269354a2985c01664a356547677374f1795eeeea08d5a2b8d594b7588f2bde41c72175d3c84f8e97b98cb9941216fcf8d240ad9e29fe08b8e38c727e8b88f7254d9bece2adbb169ddaa638622f4ae2f3366b8b4a875868b0656091645508666f8520be23048a2a33385063d9c7c6006430061d245861eb4a82a38608a18aca0072e41642cb860c5ac7683293208c1a2bf52005c78a122054c901f2332b4dc1ff56adddeadac137ca9f2cf7a37ccd93be9db0d739d573dcf9b7a1715db6a459513e47ee33aef9b614ae9a434d35929bd97e3603ab9dfcbc123f77f3a301fb99f14eb56d76ef693c4c9cf0ca89cbd54d96e5bd1894b9753113d11cd93d1a97622a2311e1f407862436431ee6d7065109095a0b2a28450b46e35aa441da18c50605047a85a0e18aa0656daed5eabc7d5906e9c17f381b9fdfd893cbd9f4f8ff4c8b3fbf9b40b2979724d441679621e21793e9549318189737f06c14212b325666705a4faa22292c2f22498fb37af4fcac0e8c84292fb6fcc96dc6fbb9ac7ecd08c579dea8bab88e4fec6292c34538cc390c5aab4d96c369bcd6030180c060b4da7130a95dade4ba936185f9ddd8fa3194646923bdc12ee9480485f4844faadd7321392704bb893fb6f09a8495f48445ad633fb2983cab22ccb3236fb39cd4eb3d3ec343bcd4e33d43755ab1903be62bec992a93232de54e67ae2cc190ba8f32df1a8f07e7435104bee775027f7f7b78466eb51e1fda81d35ac75623ce5ece74474223a119d884e44b9df5b792f381b703c602db48bdccfd1b2b392fb43ce06b9bfc4f190fb29d65206d186888a663fb1582c168be5fe18df8d6d52ae972602d318699392fb65b6eb25d318e5a1b29ed94fad2ccbb22cf30c8c183138e040868c17ab287a5391956f0eb985e836896e0ed70a99e034f48b6a47b0948ceaa06a7e430393a81aaa46a26aa8181e073db95fc6109fdcffa99eff684af6a25424534972ff989a75503be8c09b7630c7544cd6e1525c92461ead8e94cc6f68b8ac9c05fd94b98372bf27e35b85806652065683b0a30c6cd6c8c072abb20ccd02445c2e5091e10b959d1950e9e1e241258618507981082a3bb45071a18611545aa0b202959efc224f212a52a8fcd419256a8f7997b566a9ecfa84e4a4f9f86cb1c4124b648fe220f25897352a2b793166793e0cf001a918332f9a4496808317322c27912690c18a59a92a893cc15b128902d1149648e07749640ac68d44aa207b1d8c9844bf3ef1e60cb2ce72bf07a3cee84cbf7099cab231798e198ab0aef21ce7d7d9cd02cbfede7d96a8ca30643a66a54aa19e5ef15b64a932e63aef033d18ef5df1c55b51e6618833a5272d4db4df228b48768a0abfc0c8a40928fb77ca0434e33d79dac9feaeda79f17d5d9db6c8806f7f46245148585986374c8af138c7b00f4324ed2acf88a4278bc9b04c7f861d6dd6983ad8ac716109494f56a24d9ced5fb06256aa9413911589bf2914c9ee88ec5f22819fe73df0fd1102b7a66033943b52e5e91e510dc9c499595845424454ab599b020963ceb4f8a245192abb5f8bac49f38ff95a5ce58aa4496a619d911a6ce23cc6789c4f25501f04340c9eb9f5b72269366b9c5682b964109229982a45cb4e9b38a7ec2a992b89903ea992654fc168d9555b89d6c1545675a9b3c09b33c2a7a5a7a4a74f6b13077cfa5d4e9cefa9f7f49d68e2744f4d469c7e4e2cb9df89e4fe4abfe47edb7f77f04944bd4984d1bd499cc1de9bc417f87b9328834f22f82691854f22e94d624cc627b1f4267195b19094887d927eb94f36d08e6fc9ddf824865cea714ea14651954da22a8762499cc0aca14f12a96cd6d007455a9b35f43fb14b8fcd1a279a4790544816994ac9b447f6272c0c0b8131bec194a32bb4a06244032f4ad47eaee0d2c505c3142aa6449183cb53684a17502c3743c2151f8ec851db82ca8f1bccaae841e28a10cf941a3ee2aa10255334d0949fcc419e425382a6002169b46b5e561ab39368e6068eecdd4f0425218e2c829270d2b18b07a35dbdda6a6db7d76a6dbd16d72323b282a94758246d0e0babd5d6bbd98a2bc789640d02b212c4896415a26d1bae5c67abe779ef79225979aa0f2095c713c93aa4ca3cefab20c9d65211972e4546b55859cb61759ddc6fcac1e34551e08b92ee23f7a73ca6aa2a953755799f98c449eeef9f6e750ecd5d2dbbd5dd3b51d7cb7960e9945ac9cc8829536d75162e5d86f40d0d1aed93243ba10144c34a9edf326ad43726108121ea1ccda37d34905adb70407d4363312b31a1589618972e793e2da98fc640c2212c9f3c9de4f919e81b8abb84462c3039328d99d036f7b3bc10cb8a073f8305e3e683be6999771f9907a884cdd6f6b074a84e000028282317000028140e0a44a224caf128c6357714000c687e48625a341249c3b12c4a911c83310c23040063080004006080614ea14101bfe371b10e8dd0ffa59458055686ed94acc295e451385fefefea8058a5be4e56e0f31ff98eb44e957310b845e5fc57c1a40e4f6b069322dcc4e8027b2f1c88815a765d509458c94d9d07e8d452888f601620a56ce63f9beae0a640453de94ae0516eb369fbfd9b71bd54fe85b2324227af68fcab1e004fd117fcfcca84b46ce8e7aa1d02de9393d1565648e45613605f011686f02f4379838b1f5b474ec926e628a4f89da8ae633ab9e87c96ca7a753855a0a0c8490e54dbb5c3c32dd8ce447784676a512f67c48032a09b474ac9a6e69841a40b88b59544823d6929fe9c00e95e8b6343809b3b141479c882b4f93506df623bf7a8adb448dd93b47f2af5a3c2321faa1a116d6bbab13e30750f51ea84d350fc574b1c7ee377a8051aa5f3799b6fde56437a71a19e7ae296420ed05f3c286089a3b4924a30e2962e1a12fc43fda2b6220a5ece7057040f13d018a3d33f76e98737d816b29932b83432a330abf5f84003395e3703d835d0a3bd1f8bb34a645d46e37a8db3c18fc8ae71e4b433ae306b03d45dd4844e7d742e87aa9b73ee2315194094191cc4174a1437429cd3ecb590b3ce8fbd5909be2e713ec748344659a8ea3211a3fe41e8f4cf0031d3dd50ff8c55c422ff1f4abfbdf4c01dfff934f50aa8e9cf04a71a0a7e629cc85dfa1de1a3019024f4b26986d3564a831c92209a66b3a9f2caf4434c5481d6f6b5d28eee68df1258de5100bdb25c451f3e2d0f303d4f6cf63d26048a659a5a2a74c803824a862c39cbd0cb678e60fb3408f6caa8afcbc10f5ad921bfe8d6902794bc06b3cd4daaa6c4b506787fa979553a9fcb50ad9f5bd519687a2a52de51c16788895bb086acbfb6a73334466bc0a52a54a9848368c368d028c9e12ddfaaf44a06f11014e97ab330450ef845687752a9f2f62dde0f9c29b21135cc63099c7652e20b8fd2670c4390f8eb15c5b9c86349c096ba6fc8c2589bbe65df869f53df51faed4a01d7dbe346d18e6266cf2324048ad99186bd2e3876906bea73f216b6d28e53de462c6cc628da49c26b57dc402106aede0849e7a6c4ca4ec2b7d02883090a6d0a26a828d9c05b6000da0a27c90732f6416a496423f3eb5ac997b6c5822f9dbded3bb26dace7fdf2e22a342ae60c87203f0f2113e926571f2035a6d2dc4b9eafd49e3bf9270c13a469a2bf6f6a22a78e9301d54121590976fc0bf9dc0814d90f3f5e4b43c4051c50a45121cd28d389365f0dcf8dc37c5c69c6131c93329a210d834eb8de6c592c734d54c2a336fda0031ec27eb994bad3bc030c7728338cc2189debec1131ed898d72b20e1f4593892c8af19fc316362765b56dc3bece02530da724f8fce030f4689f2606ba22629f8bd0c5db3243ad9f3427353dfec5968d4f110e048493950be3f9f874cd8dd322dcbc06d1a7ed6f7be56944dc6dada76870f5d3369fc142ee37033eed6fa6e34a0aba1ff40a72351d6076b4855a6e1b53b585b4a3a3b4e873b86770e69a896b952439bd703d3b41071e86fd72d3dd736ee335aaf5ea85e996e9d71cc81976bb142da43f56cd9a8d26b1a74310a5f5bef3a88735c64646910e48f1684efc27ee5f3b9e6eb2846d554b32eecc39e774c332839c471f0cd39cb3f05694707a89097fb9801e0b25aeb4522efae9ff149c32a869a018865671b803227864993b2cbc097726dc8e2487f931fadd4aef54c679f81e19177d0a26a8548082f7e2007fe1fd5977ef69a23d4c8cafe7f1b698e8345ef43abd67af9df8836102aca0645289fa35e43546a4513fe04f7e25ff61172e112ade72cba20d7543201ce60cbb8a52cfeec318c2a6403b705b661f18da9cc26aa252a09945057fe14071df0d7e64a961dff908293667c880e70088f937d4cc168f29c720b6dabf5a54f79272f5ed10b7de00f797977bf4f80195195f8525a27595819f9cc7dd04feb72a608b723185ea9b22e19593529d72d7d035dd991efa61cf6f272039bcc3b962be736e56b88bf78dc51e9a311b58e066a673941468a1262ecf24fe4659a8837a8b18ef4f448345ea45b6c384007722d56d801ddc27af1cf0deb74c6b910940ad419fab64e5a43984aedb945e8ff5386840972b365da0fa3a1c6c1609ae3e46373abce969c8465bfa064544e6543bd5f83ad1d1cf4aa446875ec15bc3ee6ba5cf862e3329d7e1448bbcd93ccbe43771d065c42abfbf529433f41b604f7d8a0dc1bfca40b1b81022f7a197ea2d66da5064e28f8ee2670cfb9b3709b42e0656b855a705ebbd515b3f57189f792a47009e388316fa10072b117f5f1105182183b59358c69d9f1fe13ff0f5bc6e0ef266c416ebf9dc5dc153efb3a800603957da5600a9aa64306e27a580fe02e33d31ea0309c00664d3984ae4d3b9f5a6bf99213a0d77e7b4118d4eab0cc37a1edb721123baae0920402a4479303e85334b1dd066e4627bc3e95ebf2a10133f9fb74120602281b6b3303355a5bda3cd6555bd35cb6b799d8c367a00cdfbc1c4a48a9a299d93a4b38ceddf3481bfe7a2717451fe6aeebba930f4a99493a9cb3aa69771f268bc55f8ce150e283125950e50555babba2c5599a9a3bb0c62b15547b0bfa4b545ea4acaea1f249b499a1fe5377a121bac9fed9a1b5e76b94e5c91ce718cf359550cfca3272fa11b835a26be4512cbc74569088ba978584c426b098a284ea23de9c6f35ad865b86b49a3a7c5b8e40cfcbcf17e34f4d38f0785ab5712839491cb620c767b1e5e52830c96b3876fefd90a8b7c6f773d5ca6ff84b1a0dc11aab4630f352d23ce00aa6513528fc31fa5e63e6d84bdddb56543b798f6ec46cd51e1d48b695fd1fce5721239f1c4be3192b65e9b5f2df18017050e37d8af54169d4279d83b188811ba060318f5d025ac99ef525f7abfc038bd60f19212d8c46c4b51ad006d88d68a74b8b09d8f4b3e1f85581d4a2e3105b66c628c91e4a820f0cf4da10f92046b8934d15f34d7e96c72983599451106c616b4ea6fab9533418383ad9ab7b9109068f180f7b0d8ae280f80fdf50d0b7717ec8d0858f430f6061eb183226900a58a4ec36c2283094911aa055383914ca3fc960378916086616265cfde7d4b3209c73d6228c243cfbf0a4becbf74ec0a99350c2f3ff40cfee9ad1c74a394142c1cea99de19fa9d28fa3eaa65d9a19ea617a603561c16abd1551dd872076c5e0f77a344b5ad8b0a970202725609462104a5d9c817d1714af2954457eb4226f3d6223d0ee26ab6f2e3394b3b2a9f89cb9fdabe7458c78685dbe06b2ded27d71ef5b549a85308d5eab30addecfdd96123013b66a6439f45f459063b60b897b58e792b40808e836d3db03e22af4c099a50119b4d931071e12c334b03f8895f1eecbcc9e54d2821027eb951f3c68a74180562879620a9ac27beb5fb80024bec066c886392f19a766ec88fbf106bc80f03e3090a8b76803a0e38dd4d26f98f403b1ffebd4360c5774f81077217879e128dc6f4a06db1bdee6c102058ac32675e3428fc10bca2485b4143e79fd7783fbda1299a8c598233d8f03107c5592936c09a8a6f8d2d41f2524fb41c0b2aa2706cec2c5e14ff01197068b763bb53f32314c3671f6023f376943ac3cc73ede0d9980d699efa91a3063ac061601eb2f160d83ee43e2c0777abe855324934cec3954f17d1e52bc01290f27ee7aaa231ea053e9cf00da6147dec57fd2d0e2892d68f25bc20c2913b26d0acd132bc130ab586dfe217112a0b29bed2361a9a57e01fefbf3f045ace954769a4b80d5f72bd48c1e584fd4ba2debdc44f7b2442a182afe675c3229bf00713d5262480d6a0a124094212bfb3e2eec98bf2213a2a44cf9af761688daae04b19c43d9fc56c2956a582392cfb280b0ad62d28adf7beeac7b5ce5415909044ff480cdbb96fc5dfc3090fbfd91f8839a7c7d767507ae41373fdc98318aea746b389131b598f2a44c6d439356dcb6596a3272343dd93b6d238d6d20241e91b49609b6964a98463afb1dff51c04a9d100aff0de507d29b3d9d19b0ab9d0017d869b7867b9852607358c9217cd69c0d13d52f4ee5f537b423112e93eb97e0ff9f9f0c4bc72af2eafc44585f8531505af2ccaad910c3e997c42a0b8c880b4d66c9a51ec26d0a20ea3a5102ad5d4ce08e031cd55d800291b48e0b7a5d30d12b79802c3eba42296c610f80fa7f69d48c53b8edecaae8a89d9229d81c03e933a01f0655688edea465e41d997930ed53728bf323f317a979c0506aacb557103585720afe8483103328b18a19827475b4295cdb331748f1331db8046e2fa251bcb5767dd6b4206032ee63454bdcdf5ed2734a9c024fda3fce8a118a1755defad0a40e37bc7e259e821439518d6a0bad751cd48e8a6376210c6fad5e1d2e5dbbfe1589176670f34ad113ba77b791f280e4580ad121f1e3dda37501863df06c6f5e836f3a3432aabc7faaf012a2301d879895b3dc5b19cf4f212f3d7784c7a98b43ed610dab852d1249eadb9fb822b322de24f1e0925c2d9c7dc84142e6f431d3613e8c6337e9bd70dc750cd1b1cad136e5b1d49fee2a50be9eaa979518ff38d1f110197c9c9548a213e14a3bd7eb1349f479062b5bc8358eb7c837f448fa7122d54cb3cc75aad0203e0a4e88359681d76bf121113a17345debc3de68505741cf0378ce4a642576aa3a460d1cdd5769991c4cfd8d1d2c5dc8e88040c76b3f172d5a76be7b2be026825f606f3117ad814099b130a0e38dfc6e219069cbfc3f426fa25bfa0dd10896ca833c7374861031b1c4d070f75355827696517cb87062126ac91be562403ed5934a8255ed34943d980b17c1f53c16a03c9b4e8013cba0c5232d2d1a0a5b3cfe53300b84f2769c5e55f90c69514f3eb66fe7c1467cce06586584953fccd4972c3453f839018e5e8752c22bfe4aeee9d051ee359303e8f838f4346d1852f425e7dd1f951b6e3af02f07cf5fec6be94800922cf26a73e4bdf57871cc5136391af4169ba5983c07f7f0d7086a221fc0c61074b1e1be678841edbcac9d8982c9499bd68b49ccdc91c169e763faa82a4e7ac12a815ca61fab12327a440ca60e369617e13a2233a17b994f30acf02514d6bce9294388dda850600202003d860293a6a78909468f3ad6a205467ec1ce53f8dc81e8cc31cc60124c6b07c8625d8b0f765618c03b32eff85871db6df5c98a607bac9c9916f04cead6855087a500a65adf740137f12637b2b352ce34fe6df043f778db99eef74d3556ff8a3737c06ebd4d4733d2417f69bcab2d784d44ee5ef76a1449a782f9bd38adff597407cbf8afe5411f748271a0b5a5bf795873749bfd54a131eaed25c2ea0acad5bff556bdaea3960ca9da3ac8c084dc39fab7e9013aa50f233b8c67065a04ca2f155c3c2f767418a6b14f261bfb41d6ba88c315223613612479262779b584fca74f925ab3b85dc2935ab57aa9b0d3f41f2ec94c32ffc4a918fbaf982b366766721c91e7c051b097ee359bbb2eb84b40f49f6a1fb406a8e50ad5bd7d548acae52390701550ced231f6518450e5cf2bcadcd770ca8c66860283e6175bfaef80132b13996ecc1311ef61c7de706f100f845618335fb05c8b12f281e5d7e0ac0ebbfe2878d2cb961ed1b16cb8315dd499319d23453e1631309259bee30bd12ba23c169c8ab57d4c46d4c4c84abd712196dddcaca9d20f9277b598d7f443103f49f644dd589e8f9653ac733703ddd1392949c41226171ce058d71c9ca470455f95755e68269de6eff433c30879575e0d5cf6fb5a62f9bf2945b2170779da5012b094a6c29ddc47259b9831e44c75f05e2fb5fd8d6c47899faeb8ee5787aa702a131a2c152c23ac92107b0fd34b66aba71e4b5ecdd40f362b8c70d2000800752d6cf01d0e16f343400143a173b91f50a7dcb9f7dc64ac1699d9b8e9d2f03417510d44f3b68bd840c527ed2178bf86c94f7b89dee9c4ce991afb171faab155c3d765b54d14ad7f7f339807f947ddc16e52176aac9a2d65a4cd506c1d241fb8cb598e6f1519790110a5cdaa732555f15aa13ef15aa4b9a77f5d85004a20c10040349e999653f9e7e038a007c7fb4d0de784e0b0f68459e070439e29ad791d672a2b9e2d324b4a07bd9fb9e24c535569749b2b8deff80850efc730ac614268880dbe82d9bab433821b85e211ce978dd209cdb792c10ce4251cf2803506babe20a8401a143454752d414c280514c234ca2f1f3512626dfac322add205cbc1cd38c0d5c2cac384f7a073da3c1969a076143d22807bb8e5e5118219996dfb958af87d5b9136121fb8d36cc85dc0f3837dd96bf5978f2014b1ed79c9b1a5db41b9d294a6f04a98dd82d7165472dec968a13f0066faacd5940d6eff531a9371f3bb01fa6acdab8dca698f740e5410cec7e2a57940d73e27730ff9f4b05d9a66908176e56bc92bf1b7174580d9baf1b9f6e53c59d83fc096b2593dd1c83f097885d6cbfcb5cb89c77c1a4c8d96d4ea0e2ba80a6d2a666227798b26f2bb344d79441f6215cca51126447dc2c60da4cdcd238178b65af6abf7bdb25b4f5c5c0bd826c8fd9ff555b97c8cf7589162ffd4f2968d7a8d44088dff55536c0f73e52e07d0535af6dd3b2605edddfca469e7b5f06637ceb40567cd58341c0a2074cc369e54d048f40464bf29c9b924658217837cfad2eeb46a8d35ebac8dbd0c7383afccddf4cde78273f59d161a19481c9a6f12685c4136e575b0ebdc13d7875d3003320c9dbc9f3fdb912d5788fe194b5cc68129472e7c9f7c4881cbe7f3f273f93f02685b407d75dfc4aee8296cf02af5256689f4b4a122d7632f883b2acd328823a7e94321a72461955183d0430233a592acccee52522813d8b76f54b49d146d4b4537e5259f8ea19d83c3738af2b9d2a0a2418768d9e0ee774148e9f4c70e23de57275e1462a8d60368db4952590b81552ea9ace36687ede6deb1ea42755b464b699b2d172ae8505dc11a68be34790f5e4d4fc50c5e05ae0dd7760bd98a585e1ec5c995f4601058ae328506768bd0a89add253d621a42c5646ef8bea8a445ee3e355f69d6a5e572bdc27c2f733dcbf9bfc537e663e4019cf559e36c2df432a9b2e0aa1175a4e21611ad16fb9693226b27ca5fe25cf41db8be1a131dfb45b5bf7e3116b1b82ac952aa543efb1a42fc79fbdb091919fb1b45d38518e5d970a8c9bd1d889be668755c2ad83bd87c295cdce6e43d55f193826e72c116503516094192bacf7494d85df8673daf14c073f261449404ee652dee2a08100ba443b694dacfa02b2bfc4a97da90e3286e4e80134761531b5ecf665570760719fef6e84c179069282693f57c3ea6b1328d45b0c703c1867a21551ef355fccaf190fd97148bfbb49855f7fa08460ccaa44c94e7b1b0b0e0a92c7a105c772dd4d758e94aa2f073c6a83b73c9fdf85ce258e4d0f33e007e0545b2fd9ec789280d0ab412af6200b665f43d4672b2df296040393a8bc55069c61e95499df1efa45f1cd94d273f97ef8c48c664e0df88cc495ae059b4a0ad2b3e7858dd136877735fe09d705d133322c83d6727a6eaa95d209cbdded01765757cffb9555d69c6cac9aa8a3e005b17f9c338a80287a7808c034c5545d63dd0520404159220200387f514f14d065dc153417dbf220853ef2354aa989d395001a11cff242746d66f00ae96e9dd174b2e5438676236ef488fb8ca22e914c5fb22a9f97684265f9841793590dcfa21ecadab7b4bb7528d02435a14d8efff8fb2a722981b64341a3f5acfb579670b65644976dbf74b02917f422d4855437ea225f4814f3c6200587821303621d6db41f7e196606c822c68568aa068dc93b01018e115b90259693eccf357eb560dc0523c9c9950ceb95489eec5a1b85582f6bea8e6947a094a0799931a1eec734e0935e306549305837c6dcb4eac72b87f519cc2ffb33ba65bc328e7d5339c22e78bb67f86b49928fa925f2efc6504ccddeecc7dcef46de233f6d9081057f10c97f1c4e5534e35b58454f4b324f253e30abbfeed55a0409cf791299acadc112e90d02d1b8c3ccdefc05e2cf4ce1fe982d621993e141a9e1864ec417196135ffd4f76167cde7f81149a947da4bf6bc0497e46bb95365d073c8fc4a99401bbf52920163d7536140ceb6e4b1d18e0392b2f0fc2a744e0449b50fb9c555535f1606221ec980c7ef6feee0d8f2931ca9251b29678c4900068d8d7d0d80061964c35fe424c7f3bd2c59b5414002a223b49332696447d54a987fb3b793308d7ad3e495d2a615aa7d4f77c21cc214b39a9efcc2b2ee615065f6c4556dbf8f1f39a958be6e7a86802b9140be296e453e4b2ed7e1b8bd877a13ac5893b3397cbca4a70b2ade4bbe541dfe1bbf9bf1c6477c5a49e72cdb707a50fd12daeb0d3e67659a0e88c137f99e46dced418b86189371437ad9b12acc41cb7b3d080d3b322f7abe2f9416e9d2e913bc192886072d98cb451f3f47dadef34c792e3c68fb5c7dfafc25de99e03432a863a9fb5eda5ddbd443ee3e0703d7211a9b93a40b3c8080827da66fadbdc725ad6e12210b1f2acd511cb8be50f8742918769b06c9176994c705ee2f95a0bd5aabd6d37dc56463fd3ff24e848b670a138bd236c31b345b00a288cc293b8ff6efb9e03989b1ed1b1d82f6f095c1fc0f2679dd64b5fa7809193ea0601362696c3e247ba97810a1021805882e681c43ddf526621a6f3c99319d8f5e3e5bbe68cd1d4828abb97b7db15e668117e3fb7022a70d18f1ccda008380918c6fdab687abdb85c8db810d8407d85df2a92499a8b4147c483a4d996f2e46f119c0aa0e877ea73593aa468f50d60c4fa64767aa60689bc1e6bad80820d8ca1f4a09fb3d38de040d37aaafa5077b7830d9cf42f90b30c5ba9fd407c5f4d106d5233a95ba0d6703176f90d76ac27be38c28b86048b6b2918e087d749c973806ade8800f9b6180bec44302138a5eba1edc8f007ae1bb84e890d7530dd0de9c8232003e46eca18f97bd451f986b30f562c75cc87e559e3e1e58e057ec8cbd85d44632eb80a0a0f7d43362272ba4a0ca821acc2a3f6c75a45b6f1910d374aaeea7d7458c0cd90da7e2712882d24e4af4d79c46688d2523157edc97c9c4f861086bd7b03ccaa1411ba159ac9f6f88bd9f69895a4fc95615944b23e3dc80d61b0a3482037de49466ccea17f429a6954180fdd5bc50e50eb6215e44d5b94103975ac5164ba685fdde00c2acc8559f3af840aa8908e7e1bd0fb4bca0434b88db4979d7ce70d66ee04eb0d64d21131a035497268cc54b28b203bf6e4e78cf6f792e456cba5079feec008c04e650a7bde060034acc0c1c553b529efed106e6285f4c68654ef08e668fc215c15fe09aff5433350302fcdcd630489aaad0d520715150cd0a6d4da47ad5e67742fa7275e49d1554f33296235fd7dad2bd9161771c4a63a59a2950c492d581e44665f0c423d58c8ef904d57b2325129e760baa79176413e7b110b0e5cb8f554d7384d18864aab9d7bfa545048247fc0a8d359be8ff9ff37a1a0f0848cdfae97aea466c251152f919cceb83da88a3597361ecfb798e333aad37f1d2664f9d10e749dba9d90c442e0ec11cc6ca7ecde322fc63834bfc211f7bfe6dda1379f11f95c29a830e6672ee4152b35f0cc38a71c8cbd46be2ee3788b5a5be2cdc63d37272546adcb765441b157105b665e0bf9c3a79c109c53b7efdaacd87390ec2e463f54a211361a199da804ba36235dafe0ab08f48397e07adc87de8d38e4d0d8411781c615ee2e1abbac2bf767cbd7f760590941bb21b8eef5fa9679b92eb40c851835d8ec1c64ac907291b677cc1262657b704e3b377bf48220e70895b49c90a4c88edb8e109a692505eb11500587f223592dc087019c7b3104247edef0e3a4e14d2392aa06de0b142a4a5545c09b22b0fdb2169d11abaafeed5f1f196e8d1557c0166d0318e54a4c372ffb0817738f91df3e536a24486c8045ab6244572dbb6e5312c0103fb163608cd87fc375a812c4ce430a87e80f286ef793cc2515c97e72df9d3cb80a89230c19f8294ed5f048dcf4f80c2188d5349c0ffe4e0407bf195e52a8ac46b5e49e818559c362fc4ecb0d30396d3fc52a834c93bfd117348a2255c3f9342f92b2ba31ecb18e9aae85d5c6fa04479a3fec5504e27d42e66638cbd8338c3cbdfd77be5c3fe7b80d1a654c194c4c58ad547779370c48a85078ce7d20c60dbd16f6042d4a3be8b8cdc2eae5b21d0d0a7200561f467b3bad6b06abbe6c60ea451b8aa18dd1446bc54a7e72e7a1b2cbdb9995b58cebca9bc72232773e97734ea385b85f62948ed5f45562348c5a3d637bd75e8ab4ff3316da2956134da5c4c69476372e1eefa45f073b56f847ac8993416453bdfbaae9ae173d7d834a9d57b14e156254377166c31449b0200df523cd5486e72cfde7870a9893de1670b81c8829413b329b0fdd28c27906fb31c59b70c2a30b297a1cf2d4c875e08a27950655744905e68b6330ef8042b6ba77559e61e61e6004fa4efdf124e95f85c5a039de3154539aa62156e7c716f98cfc4e31186ec3716a9939e28c05de0b19167ec7fa6ce79307a8d9d22ab4e5faa56da0941c0d87662354781216deab3879b608deb1504f3254070c26addda39d29501e14c1be92bba7346133ec6fbf4599f6aab0641362dd2790a57b41777db1581454805e476172c26502361b8102b08edf1541d5deb29987e295ff6535f7e0cf03ffc8cd2b4018599eb3f61cbcf4d03f2c5c2d17947bd6f6f7137ba0da2a1d8994262a60e69cadad117bf224e10b13ef171599b0e223b64db469bb15e08dd81e25d149d04fb6593c2f491bcb308b33b2c4e6ade2379c5013dce8c36ca07a0598d24354d9b89ef694c9f63ba69279be304cd7c804865856d78d49b93178dfddc523ad1a4fb1719ba86f5893bf22b561bd13c3a2749c07917696c776dfc07fc6b7c7289f5b89b6f0f6f9edd0208023e14b2c3f467e32416e9749ea8b04a6c8ed68326a729f2ee8019808e2401ac669f37b3287641f7d9512c0aed799d0f4f1a16676cb0c9dab4e0fd5aa15a78c3cab1edecc03d6d4eac719d780bd45dd1da401ded6a2554b62d5015af959b8303af2d64846d75f56046a5a59d64d3694978d874fd027dd0a60f15be84e5902efd179c2dec2ef15409a4e801c165eb6b69c98c5c2568334f00b42316daa0153a2fc17a0e9be00f76a86e4d9e12d05e31f177ec6bc74e8486eae2441a04d9794792ed739c2893f31ad9ef7e10b02b75a1211b1ad415380cddea1c07f40d5ca27ec9087e81d5030e38e60985ed6ebc76cd4e84e45e8419b9fe088c5f4f09967c0f01d41af42c6cb73b86809a4e750d8ddddfaa7d3565e9db185aca2eac7bdac0d9f879b27702bb1b8c0e6e14fd3c8791d63fd06496d0663e00c8bc8bdbc92e5cf6a66f7f7facf4906831dafcb4edf20cd466f367de756a034db15a86430629a68bf2f98c47cab3e954d5ced0c81f3f6cadf2f4753444f26e714587b837c3e91e7f66c7997739019f1519c1cba83c7322dc2c59d2091b6fdd2c71a6f40ef3127aa18b499cee749084edb0f8e032c50ac345ceedcbc4185b5213232f3b8b3ad8ba604813a9bbd60e2458d85faa9337698c797639fe69f09e0a361f970c9bf7141b5f8125d85ea56ff8072e63fb966ae333800cab7e554a6f78f90cf8e91d5c52d513bd25a6a19ab91d1a0bb147f642cc79a10b034aa5ec1bd6cb969d164fa3e31ec0121f37128a1b19e4960fc494f12b1541d860702e4b612fb6d564ac69a9209151f40d0b22fc79310fec909d6e9b37f2d286c19f38f6357e233bf5b6e2de4cb8c17d7e77e486148b3a07a9b7ad662524a9cbaad877ea0304dc940744645ba6dac6349f107dead02df37b143bf3817c5f32023e779f1a895c48c7b7d7e8b4ad9fd04f1170ea4b911106abbf8ae44866f21ecaa4eaae0794d0144930a1f709ed152a7e764f93dd0ba227c6d9bcfaac35fd27787830483d1c8273d45fe3c744bb39aa63e6b1d0e98f25161d566aeaafbfc618d1abad01df1e61c77708b4a11b525d9157ec5c20a3961bf661f8fd3dc25a9703230a95af40cc5ab8908ec1db334a02b0986ece14dd16c2c41ab666455ae0c2c29529b99f412dc21ba4964c1255a840249098fada8e6d8f1d1bb25d8428e45993b028f31b9bb5c2b9eda174dbcbbd28a31a5380a6499bd580be90dfb1404da0916dd47bba9b682c351104c48ca85681488f45228849134c0b812beb0e912d222aa9c35ef557f0e01cf5ea3d1858a3dac58c0858d334840cc8057e692004669a3eeb8530b2472e29eaaedb683feba82775e951c8df505452a6e4c43d2a4341cf4c246d2c18a148c0fa161aaaa54772b4eb4c4aafc114abc2436f5002be7f5d6993afe117651c31034824743e8a3b9516e52956876044860d52a4ff297771596017255bba30d5310db65e61d0eed375d805018592d6b6a57d3cbb44e617c89398767a0c1a8c8671cc90619c0bb45583180b98f44bab102d51d107f04e42b03331263cf8c1bbf5c4ab99a5fb0a7c8e7b47c6212530d8742bd47c2552960408de6e0574392c0ce3eb8c700ca782729c82098915d72a691850ead19d92daf5c273ff87d76c740746236faf9cb01d2b166d6a26fe45e4805216617b7460300a7471fb360c48fa3b68c2b51f34babb1203f7f6fe98027ee407c82b5bba54f501f64e26fe3927c1e736fcf9527b54ff809ae172d13f31cf61ee39b52328e49d9249dbe932fddd7d0d0b9f004af22100180efd40b8f2a30bfaf804a3a5253e3809045ad4d6ca1eb641d300698c283e98105e3b3c35d7bac3c5c16bb707e19387804d73f59280eee3005b95971cf8531da0ede34a00a07c2166ae2871e14c050dec297f7dd7017dabbb042b8aac878c9c36c1c962bca5caeac5daf5c215100813b62cdd689829f975ccd2b70903259d31ec35de076cac66644ed8e2cdba42e24a297bb34cf853455684522f8a1684bee856f112f678284a19a98c72844dd70bab43f54d1148bd2330053be603c394b497e4d75baab7b6c0299cdfa2d5052a1d2c28fa2e87697978b0d0621364b4b2a13919c7f9007d8578c66e7a281b24f9e127de5528e0685bdedf5faf1bf12d22dabb7bf46ec60e619496dfe6bc1540048d3ef67bb3386ccca5be622d53ab9dcfeac68abd7fc459871b426c799945839eb1ce85ffd9d7ccf6d3b7a515072d94c2091671b996175e2278921f62c036e2c8eaf8590830bf6b022a92c4bb20690b94dc7e4e52b0906a778e2942c06c1175d4050ae6c93fd288e93c8c1d397c463b6fa048cb30058660112cad015102f140d32d005056442e1b6ea797e05d56666e053e1a713771654197ea402c459a8a4f2ec5863b1fd66b72d310a2e29abe1e7d0f65bcddf62a165db1a28e74035aa9b733e0a4e8949e8973ca80e426435909a57d738e44b926525ea60697900138f62934f9b4731c5eed49e2853609f01f6ac1e9c81af875588132db215ff8289a690c5400fa3d442f27eda1fe452d971b711fa3adb2525e86f90f95e835c6b80ab23351a21ff3be96d8840fca942ddd48eeb322a99ddbb26a7f276f6947824a24c05b479b68c2a6ee091a5c239be1fb59986195522e574fe205deb12bd6b668edcd546ae368ecc9fab7d532569917d45a0f369a8a10000aceecb6749d4d00e899ba9e97450f9994b2005163fa2e60d980798a8da54716e406bd8d1c4e7a3666a368884193b14938dcc067fa04c420bf954d58a1dbc155b599c916d37474854bf9b2bc333d14aa276d6a107145815676552440cae7899cd3b863a9c49f676c0f34027d4f703e1c2b60e4beab5b800087819ccc62385afa10c7c55a6d656df4ae78014383299fce61c681949c313a3b5e902a15a0d48f2c2534cd2573108e75dff36a98ac267d65d0e9d22ae1c3eb9e823231ae34c03fea6ff5e56e6d163937bec1dd06a6e260d515e2734f68d172f874cdfe2090515c4767e1f9fa734e594a2ae7291398e8cedca35411fcd6a6b1e8adcb0ab59d1eadb6913b73c7b596330bf6845b4bb1b0921da549ec9b79e3cb63d9977ca033e4892ff3bec020547874f71a1d1c53a20962d303251b7bee6ab9deb86719b1aa0b86864b6bb98e71eb39f9b257594d5b1361375adce55d6c36454eb1d13c5b1f64a6a8e1decff0596b178a18d8c849de31acf680646a0adf1b796f6774d850793c5f6dd03f597861efda0c0d4ede9822d232d13671c6399c70dc93c502be57ac63d79920755770692d8b3478e7ffcabb00934e9781c132a1446ac9f605a2bc9425f1d139d5868f2d572e51cab7e349c3a0b0db45fd630351d8116ff84a9a68410486063c43ee029619a38d141bfbf3b94990439109eb6a47021c7946c374c58282847ae326c534d6fda1360e419fe0930100ff0ab95909f9c4a69b41752eee525a96c4dff1740497a7e3d865fba2fd69e807b2493d286934c23c935f5c59b768a0941d372d5c88ef8cf5f20a2bfd67ce937e679f57d58bc8930c4cc5d712065e79e9f3234609fcb27866a6ed8021deab42d7b41027e4aea6462058e729c5f02a44149443daf27eb1ac4dc36529851141da9df05b0b64d6c39345eab9770c2d52fb8e1666342260b76759c66472f86fb3207b7ebcc0cad99adf5178ca08a7e7e8a0bee970b88b08aabf4c1d496f184c98819fcb56ae4127904fd93dd5a5eca23a070be4120d85b18640fc8465778570d04bf19bbd9d438ebcfd002752e7bc23998645b74c1191b702e040b410bacb0340f40824b1d6f81fd68ef6559b79f0efe6691363d6b19c6563f231597902730c08c7fa2b1ce61df402d3d7e8ac08c1e97535fc47f521abf0f531f722f95496f6dcba877b6307d81ac27a4488fdad563cedc2dd30628f674d2c8e482f20fc6396554d723334cb012b380884f58c9378f5bbf1eb2a116905f1424e168f5eb9a12f330578a154329b5549f9c83d698ce3ba0d6860fc0a169e3b701972d144b483277eae00aacdcf47691b8b405217a5aef7b31da52a0b877c383144004242720112c26025dd49cc0b0935de9ca1ced952d682a91bae8f1174a6608c41cbe2e69cde4cfebc01b6652d57d918e610e854cb7555b000b94acdf59d587cd46fbb9aaa508fde2757548b7ce681945c72d2df2a1d4d9323b74ca638145bf5bd1968733fb189eff0b8f6175b59127eb5b6327d123c1376faeae62bc83d2c5a400d2cdcad06c2657ded64d2be8051c526c0d84d219bfb74ec7c2708d4dbde40a8c91e11fc5ddbe6d24fb39de9ab6136c5a0100168082ee581bdf95700b34d7dc4bfd28888ea874019b8703a5a10e2e92942d1a2c1b4d1a9801d8accfbcb16508e0497cc72e7314d358989bfb81bc78b7b32aed9bf4d071b0dd516c958d2256437dfc650b142bee2eb397a755c4e788b73e3362836e5fadf03d2cc036b0906531532ad04b17277a8ca8f70a03c8160f183638b180af1f53eb47a31d4b05c46df4d1dc02b0e60526a727baa34d13d029fb836f7ba406644c296a7fcdde1dbed8c1605d9647f2fa4b2162cf75bc79a43f4365200b02100897b87a0a4a154b9c216b555922946f3fb97a3be95cdd0cb4e7f45646b15c58208025f2a3c7e2780085cbe3b89ce3031446c2c50c3d8e994f37a06c2c98b4bb7aeeb138736cfcbe3c909fa97e308fa0ef03f6b6cbbef5e7deef8409cabefc29df23c8ef7112651cc6606e523d1a3dba1e9bccf041df907990d9bfc594ef2cbe8ae130434c2d4e3da265005efa7d4e1531bd853ade429efed141c3a85f7747f83ba54850a99bb7872a5a04aa5b0cc321537501d26fd04355fe7a50b4a91f978948612a1b074520d9682cae70933e92c52f98464a93641a35c13785655bbb9330123a63928a469689dc7ee9a8b1c78a6594879bb0d69450a0876b037285727586442a6a512a746a76269141b0477113fc4353592bec6afc464656857966604c8908349ee1f7d08db14f37c673e3bded0489900ad62263ee46c56f4c2c028a8b493157e596c02cb1e36bd96501c150f6eae08e4cf6cfe81274c23f7e04c7c560083635df0c6c4c4081802f2b24fa9732531c4db6a48c633c141e487644e55044723a45aef4ecf74018d04adeb5f58f33b720460421bd362b81d142e51b63faf70ca339a6e2be0711b2e5d2dae1d78c8d61cc4ff8358b995f86d7b181cd7813d01e0bce2a3a86c6c52973ac5bc31513e7bdae622c890bc78e24a1ab11b3a3c94d946795c223d7116cdd795a4ef38ec8b8b70e218f45df337168531f49a29fee83e474a52e7dd0ffb704d5c314402116191a5e32f6a0128fcfc15b384676bbadb7fcf1ad7ebfe7323e1d1eff0c88a1364b483755b26db8683f0fcf782de4e88752436c240431c6fd3f5cb93864f224e80da3203a56829c9dfbafe83243e501040b91ea321ec5ad1fc7288d3e5b1e97a7ba21f12b87018635f1e8d7ffd49ee7557a08f5c8068cc201b5f0fa65b285fb08a1b202af5c2941abbfa60039d0738fbfa6476a21649547551e6e50d2be0a0cb8b16b0963e0280f4af12c1954db2b6f536cb762cf4f559df4feb89508c648bb42efd0ed11e041e684ea407e876e6cb15615592589d739dfad5cdc79585611180ff71972d3db723c05c69180353bc6b4ffb5218f803717ece0ce67437e1b2783965072d3872e92fd001c36ba739c0cd3a05911eda30422424b7485956a396a0a2182f608583fea91c63da3f74c60c6931a62e4b670718172f990bcc7c1729e355be8420e86b80f9fe1dfc0f44a56ce079837047a3f57ba6139c8ac44b6dfeeac81481c8a5e0478c619cf948394c9712c3f0d5ec3de17cb6e6449aa2dbf491a920289a21e43c3901f9372cf89cceb9e871525fff02e643ca55873eaa7a8463b0e7d5b6c90839b9c9f4db9385ce3bb9474d85e72e591d527ec5220ad8dbd1212a33a8f3f533c29104a13a180dbdda185ea29fd46f4130832354798956123ffa816ee74d5cc10d3240e0e0fe68366c0b99bd0cde17d7d40d55b80b855d63e5f50b085cd7f5f7f5f79ebe1e6b2e73c04a9f24c058328df4588103d9d931ae287aa8a024b46a39fa838e4a208827222b73d58316d7acbe0061d7ad318a9d215fc3dc082f5547dedb90543f215729dc75ab2228496049780d45f5a40d020c4c82e7c85321aa96500e0d65f25f5e608a96745ffeb8ec54006d4aecc6ed2d2a88a1398b975c70b6d17e51ed8eb5a6b2df10342bdd033208431bda8a60e100e39aeff2f7bfd0bbb6a537474dd27805455c89666afb345cdd49790a2481ceab38f1d2d175c208d6393b64b850868701516ddf7a9382908c120f4e2c6794a7d4e67df699be8629002f28cd53fe632625e5427538bbacf02010bef2d30f8d0cabcdc5af54aca4a2e35689b39d71fb48251d161764281461c8ae018e3c2dd577788b0f2577fde3358c723c94ba1656232492cf3953bc6fbb178e5ab991027b5ad5ecb104640dd9d5967e5c851b54a33a6fe1fc3c7f22ee9ae5aed9b08706f84a8b0423ff3fdaf4356c605b1728fd2bf5fe6686c1b4a48adf5a8808244fe3714ac0d59c002047b24533f124c6becc0175da9ea40660562a428147db840e3d962bc10a980d4e9fc99731c9d9280743225c271cb7df5af167bb78a762ba53eaf1eb3579f0d0a26dfbc97f304a1dd7b18046a2331f52a5d83dd8ed87c5d209fac31d77b547326a9c45085d605823f4d11ecc2f987783431b3d874decf705cad333f85f38172d8fec90b7e05d6125b45c22bbf0284aa5baa91fa1522d901db46287561d55c42659b9df28ff538f9fa4ba45495869a987b771b9441c95b5cdb8cd94ec7200f71393b78a120f039737e1c09fc65fb1b4aebf9b9e5ee7fdd4f7a8c498949cf485e657de75bcd4f1dbbdadc31989d63af007f05aba858f2fcd2dea0f1aad903a9cdfc1e5bda1c2a9a0bcdf33f347c0684ecf2234f65a0ee8997bc07801a66fecd2d43fcea17ea39b3aca48db3ba6465840102d54423c927d640377a34a6cd2b596360f6aa20b71c6e6b5d664cd1178d904898a29a402d2f6154266021a005b4028d24d07494a3ef36a232fcab801802d4805c90116c863b3767b2c9865a819a111a42bf3384e7a450f243418b1526962d514550832b18d0a6fe472e75e4017a39b816e98f465fb62a4227cc1c2350a9a0061c24ba0af1d857b109373c54fd24f2b3670f731fc809f585784c9adaddf459cd6d4a1845b9dc09a1a60292b89e8532efb86f8937327c3112a263e20845898ce10e2b80a8b60a6aa1fe9e658d6441ebeab1a8246197138cb39e33da7fd7f8d7afb982ab186829aaca63b01f719aa595d3dbe4e12d54c1a1c89e48675a3f6c58aade858419d018390fc554ac021bb0a9c660f52cdfc4ab39834d194e8aff1416ea1349a6303af58b683e4d9a682283a341f65a4a1eda4b7a83e102ffb514690bc3f4562d8c004e3f3a1a5c74eecaff2132330b9cfd7b215d0a08cf771e18665a10fd0f52b9e4d90959c804d7a8793628fc434bf6934568e22cfbd057663e2c9f70f9611c88c3b20293fbc567e5644acc0bc876cfc90705444955fe8a6b6dd712ece12288599526a11dc64ca861d44e257e887a615e1614f464d142ffd5afc231692b9b8556327e0b307e2f373e2ffe58de9f5f1528b9d5408f69d04893b798686cd768d431678f4d4ea48169931b51d869252fc503e2375df3dd4ddf4d01c1f99f8452e1b09e03ee55c79d16386f6ebd32f3aa70721f195e50c29f71d69d09da6de316e9be08015a063a0842b94b10704bab99d8e55b1937d374c6ca01a85205d559d9d0e882b31f56b952632b6b7daaefa4ebb498ec1a33ba60741bcb8548dfbcb7341337ad124fe16e128d6034ac2d0df1a32ed43f823ed0fe992d9b26ecc844ee23bb07b505f084f55f968a4ca718b5f5e1922eb71508963a5366fcac67296f421c9fd7ea0e85fe490be48331a4871fb2ae558ff44d485e1b49549ae847759fa8c1162c5d47008f926d06b2b83b80fbdf56902e115e4129c12cd52a41b56a5248655eac1c63b3869862a4676b2792febd25fc31ac4f5582f87cc8d278088cf154f2e2388dde9ec0a920b4c326b7749c63c9c5a12122b40ccdb1334a79dde61fc901000c33dded256a8605ac5c00e6241628ee60c99b04cc2a199e0c65cda87995f8406452cf47e3481d98055ad9b77fb996ed1de1458110ee7601e261216222724d8fdddac7cf1ecded3d1adfb7ece4048fc9393bf814c8c7f38910cbf0386e51b0f0904f8dfa44e39b5e7f48fcbfb181e62c08a801ffa2ca1a5af7bac5e87f3da06ef521630cb0cfdf7334b91e76c113eb95c400d66de5bc49fa842468212b051417a4d1f42d35c8d5228a3e683bed30614f1e1596f34b6c10a02ced489de54fe5032d1db18a32e3e19eb2267479dc7192aeb58b86cfa77cb6987db879f843013037ff0a656ba3f6f083ccf3b12bb509cee18a625e022ff7558ce8b7a3d024c46fd7e7ac095a17da2027e40920bc27fe301816aa7eb519026f83fe6377a3fabf6527e56bf4c17c5e32dcef7fd0dbf4c2b7e3b8ccd0afaee953da32077b4a16ef9a7c9dcac5a2d696e3d041756fa1f0dc84ff726021bb39df0fa1d1b0248a6ada6ed4e0e5dc487c945beb80283e4865799737ceca4d0e181b536579086ac38ef9e2390e02f3c1fdc662d8236183a2eab97d12095cb628bbaf1578e509b4a73495de6ee8d7811edfc7e88439c2096b634808950a101e4bd510818b425994c0c50201a1d5e400e0bf110fcdd7897f654b21ee72de8b5dcd11519820cc76aeeafa0b34948c007d39ff7ad4f338f8964364dc7cec63143b4a671f06e037c90031aa9ce885d40d4554d1b9dfd3270dfa5fc0e217b0171daddc2f3ef0d7d37045beaeced93832f4e0cd7d82686ab8f6be6c1df2249e8de237c7b763e603b06f3014d841cb0521f557efa2ee9f85bf735a84714c565ebefebdfd6ec924d24b2bbbb7b07ec0869082f08b5c66ac413bcd65a6bb5422f800add5b6eb47c4a6684bbf0279331910df1ae4210feae67dc155aa4f6f971f0d77069707a78e1851d7a470b97ffc28ecbb5e7f08634776bdbeef862d0979c461ab9df8bc16d9c1a9e66e519609bb8ddbf5f0af1eb3ee1a5e2e70de3cdc4e752e031fe7dfafdef5db9f3c580786b3497c6d2e0cbe15d69b0c6e14d69f0c6e13d6930e6f0963498b3dc467a35efbb35c7f7e62d69f0c6e51d6930862fe2499a24953813b38c2f4f52de1b0d877326e112d6f0453df186792d6d5643e1375e170441a408208048203b4206b22378901db1c39fec089c234680e48a8be485c40a19922964488a6e2093f5c864b012c86436c8642358821156144166c413322386f89319614466c40f6446f8c88ce89119b1020e7fda17812062448f031891030f23486083206d8d70801f5d221ad27509247094a0e4defba4889f21dac49fac881afca061308422788a50010d973f591145cc29e07b0fa59412764ff62862079756040d3af748136cb04790e0920207dabad1048fd9f24a78b46ebc9f06dce081ec4810ce8d964f1d21c2bb0a2dd08ef4a0067980233770454e85d32a478ed0807747663083b602a7f2722408bcbff8b9e148cf0cf2080b781c29c1eb088f1a82665c094147f6464e1cb9496da69c928b292dad7df15e782989b6225743d7e02a47730d176013969005df311ff2bb1db0c267ae61ffe61a1462344d6a93445fcb3528702b2b0cb72db8cc36b8bb6f9c892a977613f530888171f1826ae1d2c2725ab140a4a09874899439bc69b6d229c512f9b709290421349c5840115990104148295b6813300848fe9505fd200bfa81d71eb88810ce1ba8442d61062f57901f34a1c374028a263e84600426e0304133e79c530ee173ce39e79c72ce39e79c73de54d08f2014e8a02159908b882756f02723828877cd9f1219114132228cf0272342888c881cc88800e24346c44b46c4cd11ac43cc64121c11b648104aa45fd91042644300910dd1c39f6c08986c081dd9103328a10a9910444ac8844022138248106442f8f4c884e09109f19209e1920981f3a2a36ef8fcb76d48f3685a3a3a3e4cf9c941f74b5d6f86f653db33a675aa038f9b0e293f2fc69c2aaf1763ba7497199f2eb3d922f6624cf9bd458ccfd7c1e5f566d49ff3bbca8caf5c95199f6f4b2f3e2b45dd0405f1482389267d7e51ce59ba93d6a46e846fce523763cac67b29d34bbd7f9583b9e6c554ea7de94bfac598cfe51afbc598bf5f8c99238043030db9065faee61a73c358d3368db359022bc899f978cbf3b77fb9f41873304ba0f498e3f204b852c9f4a5df72cdc64d1d3695ee8b71f3bfac25a01f672ee6cf790257ceccbf8f257cf19274e9f5e35cb3f152b7a1e8d772cd76ed46323d4af7bad2435eea7a07b8ee5ee92f2f913a1a423a478ebda56bbbafe002cca2db4c70c381cc8815fcc98a3ce15dc7644586701d5bb212b3b1c2e7ef1212ddb7574c65f666cc97f1a98ef1aedfebc590dfe9ebc5e56b21ba00b388b3bbcd1ecf8277ea7a31e4e7a03dc7ece8cde3b179030d213dff29d1f5697d4f370d212d1fda78b00759911f3c1c3e0765457c70f82f0a61c81043860002880430082245b4602d14c8d80296403f59921fde391ebf06da05181631c20300f893010184084736aed9101a6e980cd1841b05f8a08aa3285c468c80c80fad06dc78000d221c3cb9018f31deadd5801b0f0042063300e206206e6ef09cd467038635102162079717472d4036b454a151721089bc6087d30284e8c99f8c080b88ec90a34284869423bc50a0d0312591a38fdc5002e241b2418f1cc40a4ec005818309301625d8a0388106840450911200fdc003a827054028d0018826f000c413302094e47004c411179123cec29fac080d456e7857a185116834c10581650a1f84702428073a43f1df8d4d8e7083273841a630a28426aaa002919432222184048d221c11638442348a4084191f007f3222c4b06d41bf2569ac761d86204e3fc64363570c29d19822888c083cb221c8644370b594e06f4ff8f62c459c6c8810977f9f086172dc93bac62e6fc22ed80443104adb8059705cd36108e2a5ef3004c110a4b18b097fc9e57197c3456f1d34c6b72fb99c682c25a7e49c493893527226e19c4ba552a944630a4dd33419115eb22110699a065f930d01e21a6973269af4a6cd9968a9691acc36b8d735f93b8dc5682c28c61d01a50b34e6caa417509e8dc3f4457b7a5ed487bee0a9680fb8dd437d680f9eeabdba75efc5d05e3e9d97fe6871ced0555a5e34ab75b5bb9c13fdb8eca8b5f787951ac4a34ad76db84accf45d02d91103d48bdc81f92e7362be4b1cc8d2e2bb0038ec18d03aed5741ca38a1933e72a6f3018a0c782a59e4c674fdc2745dbbe87a0b7fe9faa3ba9eda5bfe964cf8c4a89241459e4a4a9f5db934e2a94e1f5f2679aa24dee9f42814b41075a2fcc9d39e5c0649284f5b721974da91cba078da90cb248f899780f708d0f52c2e20e5df4b00cae34a42fdb67c3f0ab7d82befb25756dee559583e3fc086afb0ac74187237eed52d0f480bda52b6a590cbae3c51e8d36fafc2694481df65a74498cb462972d92697ad398d2874e95d7689d38842eb77d9244e238a2096bf9ca5eb1ce02c9f79cb3e753d3ee12bbb4b959db2bb24924ff0f8a6dd5f1282666cee4e5ff48727e8870e19cb352697d901b106414c706b104c2c1961a5c5ec452987680dc818cf61bfbed51efb88291e08bb0df662dc5dffdea7db46fdfb24d2735145bb0da721e8e1340430e0b4c39b151af2522bd21f79afd6b2a5c57e8fa126ae0686ebcef4e4c5889ff5c7870fe0f7610c41fc7edf603527ae6f94361e3c6f9b8128147596776aeaa36c3f85de0cf8dbbf2878fc37e3d6d8567e7812dee9cf8b6245c92906859491837833f18ffc28e1312fe1f18b98e0f17619e8a5fb06335da184c77c8af1083bd3131d7447094af1bec1f22baaee472ce20c7d9c9ba3775a7c40f98353209c7edea1dfb7dbc527312563f45fb6d162867bc04f86ce3ffcf25210ca96b26ddbb66d5b1234e43a775d735d6fc15dff1414f903b96eebf4861c4208650e2962116568199f74ef47ca90377772939dfc180bd75efec81ff9237fe48ffce9f2e709ef1c8f7dad2bc162aa06bad7231e1ebf1ebd195a0d7887f0c9bb5f80bcd7a352edb8a0ed2806924a6edf5eb956393bb37341e69af3bfdcc29be87af3f6b5e7b01d35cd296594aca9eb96d4e58ec3d6767deb764cae75dd66a5a3c25d12c4b97a4108e193f049f8247c123e3e770efe765ff98077f5da56af7beffddbdd375d94fdb28b974a3d77efea9dbbba717d6d93f2573a2b9d95ce4ae7458ad5f5c40f2658c4f71e7e9b49130e833f1993214c827003f0276372c35f67dfd3f7543e7dd6ce7bcaedcee1420cdcfee3d4761d72da77c4d7278f9d05e3f26bae616bd87ff9d99734c6ebd67126da763a6cd82e87d649296f7dcbfd949d4a6c3aa99505949f05c3f5b186eb531f089fba288a52fa2cfa38d7a0d53ecc2e6d1bf52e767c1a9332debbb0aca448d35621ed7a4c2a6fdbb6e5e05eccb6e5bcc57439f2733195c23c8561c152bed31e4e690b5828a574cbcf7d870ee06a878af9f8366f33d2eb47f9171afbc699e8ceea2c188f8fda39dba84f6b6cd1727a7915fab6ebb038dba89f83dbeaebd70b8a2645ab01511e5379cc7e3c539a37a5d42606d68bb543bfb27ef06e512f03a71b64b176583e78b775eb72d047e587df77c47e7be4a8afbbb360dc12d103d4025ee90f0fb1fa94c793412bccd70e451f45dfb680a2947e0cca3e6b07a64051bfbd85d9a577b1f3a3f6e32f5b6fd68bc6a48c6dc6d2d1d8a95be9684ca54ba131fab7bee4ccfcde12835d7cbe49db28fb8f6f34c6513a93a943d9cfff9232a8909c997f35157a09f518def5ab6357e54cb40e1ae3f9bb0e4a5df97390ba9e9f0a491994c79b813d4968c1110f1c7ea7457c521d38fcaeeba05dfbf099b9c7cf7ab17a401666c1f8b596d503b222d641ebd5eeedeee4b676ac1e3005baf2d3a20543664f9a08c255e04fd6040e9f1531a144cf0fbf471c01fcc9887cb88cc8257362262382ad5efc721e5e1fe7fc99e5f4902ee1317e8baeeba05d8799cb364a7f1fbfff56ae95ceea155537ee996b5ca85f659bde6efd7897229428b074f484eec5bfcad911b5fb6fa5ddd76c4a0b2a2b9d94ab3de9aea8743d72d2afac5edcce0ee3be634208490f21046e87224100beed3a0bf0eddb87d15aabe39772b6b1f2965b89f6f547bd1223be5b2ff1706fb7a2a35efd9048d63e7e58729adbc42003bc5d042b1fbcebdf117394225cb9563990053fae7678d7b7851e7969f5e27d477c8dbbbe7a71fd1743dce5b05ffa8bf555f9db5dfbfddac7fa71e4acb54f2ae9550e4cc17ed51b9a5eee935eb9361d78f05a2dcac36c03869778d87440e1368a84527a1448825f22a1fcf624940ea5bd7edb4b3cf0dab7225e77ee3af2b3ecd37e52937eeafa26adbbfba5fa2b9dfba4cfbf72ad7420ebf1fc32d7c8ab17ad5c5be94056875cca90126bdf77ccbe63eaa02eae69570775d93bb976bb950e4cc1762a3c3ab6fc906f42195b44d0315e1863d4e08d56563aab6c1141c78f7dc629e18daa3e5f76bdbe8d72cac97b4b069a76574aca29c532dc02d27d76cd4d253ca6c09b1703de4008e19c70c299922a4ff880a30c42b80c3f73faf0770383e0401f2ce08fb5d6eeb0d45a6b6d9cb4da99c3cd6aaf5685ccab6df86e98cb1b97e7e4707824e19064d06584cfd7f3c9a26cbe148a3e22103e9fbed90b7a71f462be4cc126f3e10f9f1f77c80f4021d0c8061ac0636cc00d984323d0823b3cbe84f138f49ad8f0749b178f0fa394735218a59c93d23a69add6deabd9ab69db8631b77135575229d75289ab5a73d564e22aca9cbbab3057e6ee02387193859ab8babb0c44bcee14a203f0f92a45757701f0f92b2b5cdd3d017cfe4986231ead8d32cc5ed7618cc757e187f95a45e7d27031116302064cf828c25aeb2384eb53c4b2c0f2400619ee80091c82a850c211ae58c268092782a065bceb1b5d872082c3c40cbca76a9053d67b2f124d03239688c1122eb0610921f36708c9b342153a08c9d3528556d13b182279768075cb9382091f3da8a2a7871e57001142921b244a9a5042637770026e77c0c3c760852a745c628725784c815f8caf25ca486bad4f2801042572e04409204af028618223256a584092a1274243530c112921a4c49112454a502cc815400927849d7e534ab9d275172e3b095f42d882aa416d8e62a153d97500706b6f0c130628f0f85535359c19e863bb67d800aedc8daa14321480b5d64a4a274591e4dffd68e04e71fb2202e0cfcdc91909858ecfa9600c70d95d15e40f3ca3ea85969732b0b43c3faeb507f918728f06cf2d65e0b57e7daac2fb999be3dcc6d930c4e9a1e6dd43edc16affc28ecbdf4b61470b0b8793430ef394f04949b2df8ab35e6eee8d73fbd164ce444b140b3fe18b2dfbc5985be3735f2ef186350d76737b43ae66ab46ea32aca0b9b9a78caa6c512ed420b75def00af1de66f7368d52be594d55abb04ad7d3084040d1c868ab85ab7fc5011234d2e2088ee578bff2d7246caf9f244b1202940a4372ab54704bf88638c24cd668ee18b29d28d292ac4d00c3ac048e268079924a2b0c15a6badb5347248220997325a43763821073a1d901b364fcea380474c1239dc0093840d35b8b842e7a50838a090d86901c40e2e12891ee4b420d1830e0b122b7821c103123928c9428913254b9420515244c90f4a80284181121a849020b44448263404212142303881900a72844890c428891249900cfd180a92242845a4a77874a2456d9491d65aa748d26343121624e9c16badb5d62649729048723343153f38e2091a3847082971841045470c9936890e9cc08d43ca218c33f7c59081866fc3319450ca4e6f3a1f04f44d7cce7f3cf29951af8b00ed38e4400caf2d786de195e5b4008e356d53717af74a871a7f91bf15e40ce6b07238399428702c63844f6ea4f85d843000fccaf0fb82df8ce3fdd0cc6e9fd03d221c6329238410c2873752fcf703b7b966bbd70598059721dac86867405274841024482031826408487c80c4064862808407090fde5b6ed02490350149132d2fffa275a3013125bb010e9aac0787bb032d1b410d7509d40a5e6badb5d65a6badb5d6bf3d0eed371cda6fbf7531689d0d0dad42cf97ff125391df687ea37baa023aa26a7e9c1f810b3c9e8aaa490f300510558fd77fff96bc787c491f05e571a7674168ee63febf9b5c2b3e269729c7f432ed6c3d52c6c35bcfc73c6c5179f8304854ad3c647908218750cfa28a28aa5c7493a882f9e88376bd192d5f5d3c3ee9b1101e8aaa958f8f6711134515cbc7ad87fa6072b93ee66d68523a9404fe631ec77f4c17430f291f43cc7f97d2e1d8ffff5d0cffbbb3a1815ddf3171ca3ebdcb5679d8826f7a78c7422e2ca4676f469194f1df2f2f95dec577c9b58bae438ef21a0b995c760a961ccc4ef9975b3ccc82bb78eca21bd21dc6b88b37c1ed6277f82ea87f7968c35fb60eeae228976fc9167bc6948bfd8e6f78fc963d8578f8fd8e850e1053f14f5b0501c4547c95aeb77094ff7ddf0ccac76c14f9a616bd443fd1592812f1d84d2e938bc7a884bbf7e4226e308cb2115fc67f8f826fc35fc781d8d5b8e86a5c442a4ab319a5e2e8a852717464a9a0828a4b85d5a8d8a8d0f05f8c102aa1e5a4e5a4e5a4e5a4e5a475d43a6a1da9fc70d882dba0fbe69a97bea48cd70b06e3e1910f4b2945251f0e493e2f067c1a322dbff7cdc5217571951f290577e9528fbcf5238d3a70e32105bd19b3d4d3c3a54c119269f89df2947a26d08b3163ea51bab98cc5214451545454a3b5448a181428386fdb3671bf710072fddb93bad612bd3dc9c46ddceb6ddbfad6b596c010c4b97ffa2bf7a66eeb72e48c31c6186b8cb1c6188a1aad25b1d692d6120e06531899c2070fccda22d87c5b9f16c182607104464646464646464646464646464646464646464646464646464646464646464646464646319e16139e29729afc48618509a5047f23e2dbb3c864520c3122e2f2afd11097cfa964182ce75c042bea30141515655886c16028282693c9d462d2048b26415204211549ee493018ac450483c18a603c4b5888afe7951e88e130bec7f1e4cccf5c432b7d9fc5b4115fbebce122c6186394524a29e79c734e4a29a5b5d66aadbdb789561351ca5c53b3d9d062a2b504fc526b7674045b5899cd62942f29a5ac734e7a7444e9acb2bfa0a0d6ac35d3f09fc642944fbb4859a83246d9cd58b44978511549dccef12594dac69cb7b46d3c5e7a9a6f3c5ea23c78b6114bfb4d4f43caa37ccd2809a8bce971a874f94d8f23a5b3b986ad5fd22e9e4b5d6b48e7ae730fb77ff9730dad919cbedd3510e5c583cb9761dae42895009b716adfe9cbb57aad5ef7eea07395b3d2f1d94268cc0524b4d211825b1013f07bd1318d45159c7176ef032c584c59166cd639699ddf62f68f4ff764f58074c3af13c216685047655c7e2b898edf5564c4b0811a9e86d5031a00be7c958ec29f73569a44ef8b7b82609dfaa02e2983f4b0e50a01f18e562942771ad346748efb145bcd47c8cf10a0558eb672fda03d407ef444d506e44d2ac4a4ab9da0d80f2051758dc462417c84fc6c2b9d988f915810212b9d55ceb6726d2b1ded4979dabfb7ebd0d5b2d2a1415bd47ec0ef058d05e1d087c38e33d1587bdcbd298780d8c2eeb68ee84e835eab88cea13dc576e330855cd76d5ec61d6b07a60037d6cb01936b5d4bd28e0ea1401bd3214051458d44557c930ef1f8a4d40787df2242d787748891a892df2aa2217cfb7428aab419258aaaa2a8ba2f7987bcb37ac014ba6ee3840f4e85a2aad326322776b87c2aa3435c3eccac1e30858eb56323a7b073a0059df4c88a5a394a394efeca9573a692d25a29ac1052aab37a51c94108394829a590e3385af29133f649f93b8d01b7f65566dcd2a7dcd26ea51355af1255b0b3d5662e44d3ef5bac0686cf9f374342c17b2988ed31144170fb925248df722f370c7fd906f774f66654de443f28b8fc1bdb6235302fb7b6cd98fd4b611c3ef731fccd88e176c27db998b2a51f6e7f9b41e0d6f6a8cc8200e743d8d3d2026beb8d9ca16ff1db0e42f8479c9e7c44d5d33fc1a2ea4f3f20fd134f54f544d56987b27a0c71fa3c07dd29c6315ba1c442f546cad03339439f96ea0da7a6dac3e9ebee81f4ec96f48ca46759cf669c76938bd3c71b057b31e8e3d8f634668b71dab110a7cf79d0f4513c70fa5a3fbdf807c169bdf92ca494524e1289d4829ef5eb4a67e55ae5c82757392bd74a67f55ae948b972c9954e4c8c43232b3951b5e28aaa5fd9892adbddacbca20a1655bf8203573a93eb68ae03ffe58d0a0c94b7bd220aaeeb4f0c0f77050c50500b979c8178fbbe51e1127b31e00a06e2f0390a6e38ec313d2d5e2e3eb480c104c161d1eab5d289897111fb70c4e5e356119da33ee5f27da2f0c171e4606681724bbbb4012184b385c9d1396b58db8305cb3568ad33aae09c733ecc7ae59aca3720ee032dbfd31f2ebb1f3c77c7ea0153986f6be782dc8e86f22a2753fab9723967ee92eedd9ee372cedc73f439ee7b87dc46ff5e99f175ad74563a2b1d9ea35d01b7454aa9fc9da3db9f96d2483fdaaa6dbfe518b7c8fa9103ff23ddfbac9dcd0549c2f86fcc376f5572f13e77b78f9b76bb0e9f571f26a731c66fc398dafb18ae5eab57b6a5c7586bac35d61a6b89ed638c4bf84b566bacfb8ec97794fe4a19295feafa0e8d65c915e35a7d4c75f5e1b8eb3a6ee6f04a67a5b3d2a12f52b44ea2c8e128f0272b9a150571a8c39f0c8a9f927c54fc3773ce99f6edebcbb0e54ce17d58f3ed936badc8eaf1f931d673e699f57ba639f3eb67ede45634ed2e03cf015b20bdfd567cdbe9ac95dea6d352777fdaa74fca9cd6a948560f98824aedb86967d062b42c58fcf7aa7c55be2a593bd6b27e441ba3b5d1da686db4ac1f31c6c87a45960ffba2b5b6e2afdf75c4ae43dc6996d54385ab4650c4ac7d29abb48fa58482e789274f14f102f0277b228894f2b3fc2c3fcb5c7f6616a40b92e7aec31a1b7ee77cfb3ecb1c1a106412aad829c1cab572ad5eac979cf265395f525abfd62925ab47544939a59c3b5a0e1f15e221fd4a87447afdb4a298b45c353bb30dfbf8b1dd603b7bf321297595e093f6cdf0396da523ff692b9ca3b7d56ba563ada6759d56fa28dbb45bc0f6e14fb8d2e1a9525801b92556701d7f9ea48f1bab07e438db60bd583d6adc8a36a29892bf35f9b71171d9698c838f7767f960e51a51c57a450d077dbb1755b405cc63dc70ba20b3c882c7a72d3939131d29fda31c1b95bbc082bd17f36244daa344f79859cc9bf1a40c1d23ed62e544b887ed31c6db9e3ea54d49184688379a2d4a578cd37f90db6e628a7e2b08ddb79e970f4ee96f2f49b7ae6f389cbe387d1a08efb641be6ddbcd86b3b966cf9bb13d9d4f38fd497f62416f284e54697bdb3e6f758bbf09f17971de353c4d0fb8d6522c07f7df8bae372122ba1759b115c96d2be2f1c1ddc37ab17a6c3ebc4d681bda66f083d041d8810ab63e9ddfd53c75bddd1827a62276e11c7c13534a68f812de0883c7273c72b1caf342a2e73f1f213f43808c04c984866644454d8eac788205abc70bd692e9d90324aa62373e3a04f5f1a991a8d282843a1b8fcf8a6893379fa669f0d6f91e765b776fa40a9c08e29b3f991340b66ef58aa909730dfb62489b1612badb20b6da37e3711cf771dbdede7f5cdb3aa86bd29fc8e4bea8c4544beb08dd5f74ccde8c18f8e29cd09212c1e3c7cbc94ec7143f81eeffffff4f83a409708cd583b5c37ab15e2cd80830754529a59434cba3a21e995998724e2925a471d35fb92895f265c7c5f86a8f91cf911010ba0e4ae5cbcd7abd94314ad96d248cff5305474fa870ed98ab9c950be3d5cb891027334080131f2f2eb43051309aadcf5d5a08c67e2818cd76d15aa86933d780792c730d6b6d6b48ef7b511c6a1ff7dc7d035c9b35b40c6b15384e8c5c3b2fcf6107d13b82455105e3e330c2d8c987a61997cf71d05c9461129226219ea35d52abad2c74af375a0b8ff163bd89aa8ae3ca79ed4415acfaa83c5185821da7bdfcf82f1ad0c2b96720a6e4ef8829f9dca5df13f91253b2a5097a6846d4c47464b2c2f424aa50b57bf60508dcef51c5021d8c97f95e6fb6d89b11f3f5a6e244d5092fbfba6a0ebc312c7f827cf13286e54fe05ca69b7ac30261c078199997e96290897bffdd1ff33acd624a96585c2a8ff26171b1e4b0bc5876744fd73d16b88084d005dc30e6e13fec1ec27b9a45557fb3135154dd5393a802c04b1f4eae37c3c59bde241455312fdf341455fff24db3a8da2fdf441455dd4bdd837d6071b9e2cbc41863ccc7bd5ddcf47029c4e2b200b01206e6022db80d9afe69762a923260b49c5c585c9ec5247461601e5beec58eff32ccad355617f35bd1864f17f70231256f6701998d829ffa9987b15130054309d73e465b816bbf5331a5fd095bfbbdb5efb6f633fbca19ed531bc696d9f77616882969bae1f25dec2df662c8dcc9dfbbfeae3831253f66d79b98920f3b0c636399ad65935012bad79b16afe51a2d505d73140a651292324c320a3d0cccbbd8dd86bb789c6bb89873da5a63fe6568c3610ccc4798bfbb6f80c3a4bc8b8df2766fb9468af62fbb5398ab85cbee94470bcbc924a4555850b49010974fdafd44c4e5e7dd35b7d56edadbc9b74006e4cbb43921bec8e2e177b92f3d0df9492f821ee28b80fbd2dbfc241cf9495de41c803cfe8c9bdfa0391adb2fa6e8d77aeffd6ddbe2b6d2a134462438c9e14f56841737007fb229867849453f7921e10cf8bde8bb7337e28ce9b90e07e051f87e9aad3cea75fad3ec44742a3a3581280420be00709a4118320fe371c83c8c00bc8c0c0a2f5377f7767fe400204d3198b23253310931f99882986211c009c0a3f098f3a84f01999f790ac0f894087ac081c2a75e0401e850f2675ee6673ea2d0a16487aa9d04665ee671ccc83c8ecf4f8ab906a9eebeedd690ae7677189ee8b7e151e7afdbce988add8605a15b5ee6617c37c556662a6f8a998274fa86e527cbdfdc78c094f9a8bbef3006839cf031c60ddb3ea2caee1f51f5c2e5ffe7cdd03fffe7efef4ef879c383e31997791b9a08e3651e078c979179181d8ed4c378185d0c303ed5d9d0c4ffba3bad85f40dcfe641bdfc8b8cb52fb294f52d29461bbeb564b6b6bb115373e5bb1642bd5e8c793a3539ed7d228aa9f9bf4f331e3b54d18b311fc6461dc999f9321be61afc068df2a8a23723fe7cd491940143e663bec54d69092f351fe6df7cfcefa9e893989aef82c7e7e6c390d94f42ba84220ebe14f793fb92f631fd34eb92bbe83ae5c1fb6936795e76a73c50bb531ede5f5e5dbbec3e7d6861d97dfbe0f34f27959d12e3ba0eca73882f1588a9f9e223aa62ec248e987a79bda2aaf2c4a24afecb0eccc7cb8f979e17205155bb07dc889433c5f20b76fb93cf8bd1398ee354b60a3538fa051b5b9421f330beeb0b6373714666bf38c373d01dcf287c796dd89b51b74cfaf764e87f4f8629668ac5d75da9eb5777cd39536cebac29c6039f8f6bb76124d01dcff87c4b54d4041f4595ed6c3c6e057e125558703751858aff54a029c65d7ac3e40c8a05f9bd02a7199f9b87cfffe123d0ddf4f28a4555fd098aaa6d7353101f21a621516502321989aadacdfa0204e4f7d8c17ee90bacb13c762faf24e83efb8bbc11461927a93eb6f33d0827a9cef83768e6d0fea9365d7c11c566515e85fb9eda17cbffb9403ae86d425c7e4dc6db8c789bb1ce6d7a3c390de6a727bd5ccc36f25f9bf23854baed71a0fc93331bc65ddc9dba5a433a3eb775189e70f8a67f1942536c035c9736e9391a7b136f3342bccd08237ed8722fc7486349680825677913daf27ce69acae3cc1ab7b759297243780e3d74d73cc67f9be328d7d1cf67d05d739596dad9789c3eaec2013a673bb9b94aa774e167c4729d07544007053210011c16b800af41db8ed3a0e17dba1a41cf97f5b7b7a1b9b54349400ba1d9a8c42d75a639ea14910c000014a315000030140c89c322a1501405829aeb1d14800b839a4a6450988a034a90842888318c184214020000400c109999a9a1420008040026604c40cc00cc81980098033001300163026206600ec404c01c800900d39ad962ddcf6fa366e7cb9f4600de1cd0148c29802980790073105330e600a6604c014c01cc03985f103023f54977fbde90d80cb223a95a02654065804a804a80940195002f012a012a0754065c02bc0ca8047809502281c00c3c6128526296ef8925346130334013e026802680e614003447c7072ff1a53b4f0270a3890011961fb0e845485018f031abfad970e13309a609304d904f5829e059e8540efda3351ddd04dfb5efa40dc5252e2b60dede6f502acfa2a2b36da04494c87d6e7cfa9bc37ff32d1f63c4d10d9f167bd8d9ed59944a53fa58eefcf7c1d72bf9000ecd48e6ef3969a7ccfdcb89537d79f21a937fbbd66738dfaa07bf0a90d5a35e5b6f991268b56b5273e5937f43eb6d4025755674a066d11503bec58c1396c9f793fe73de6d107e047fb3769be0ecfb6149411304d602ab1ff36ee968cbd37cee25046b5562dc3482c025c4329abe901d211f03afa0a41aa796245a32a991aa269ac1d3c6d58c0361fa6602df8d6281ab6b863992e05e840ae5497996ea6e698c1b145c9d21a87171adcfffcfc9272dc537168a770303d7f1086d86a7a4719718db0caefc97a9f7244a632d575c07f94d1db9b415d9a6a9e2ac4ff472519ca9f4ea63eb157e20c6082e42d1354c5d4075cda21f246aa92204506568332de3ee640a0122aaeb690c52d97ba6cc5fe5e67be1df59b21e56018c03394022f3eb9ecd82280a40fcbcf456a615cef2c026f59038283348df8b70b47ad3a403bf85aedfa13a6b6f6ab9a08e59f7a9d1f100ce269e14db53dcf82cbe1ede51b0ea4da78616cae098c1f827a6e09d583c6454806f427c670ae8c0240b463cacf20bd4d059b78e10df3b6160676ef873e967ff0f57208778628e760cad931c5b6d45ba83129a9061137e8500c730a8b1dd51e1ccd8daf1e0a0cd2239e4ccd8b9512f0db63d96c6a93c5d257b52a075e85df3b56a734abdc0e43b29a367d1e29eb6819df8f3d48795031a0befe460afe8be1d05a089f4f6920931e41e3b9e75eaabb555badb85e1858387cf97f99c1bc2e48fad76b3f42674557980a738028ed571dcbb0d4b9df8975ea0eeb3410953027b940e391131fcf4b209c7813ac248aa628d6f6d9bac2c26881056e7a119ae7defee9a59976e78974d654c5424ba2889660abd289b24362feaa99f407da23711820e0514360877a28df52fd337d6707580d6196ffdf02273bd034bc369a2774bcb2b3b9c5f0187a525ba121b71bf4eaf2992e2ecda86a12eb33079837354a5eb56b6ad7432d8bdd83ced3756d301c5f59b052bd7b3afd23e35ef9266a2c380ac560cf20971638692379c19a4765e50fb570545a47594d9ff2919eaa7d4cf1d13a8ec1be05fe254a3fff9529f563d16e10f20a9f674f876563d732d47aba7f5a9313f1d690352552b8ed7d1f3b47be7c23c51abf3f2edc0e2f4c0a1ecbb8080276bc5f10523da4864c2f1867f80d88acfc63969f3f83caf8048864953dc1061206fc0e3419ed67914de79c6decd98719e2518c0eb5dc55c4957b975a39ed8d035137e965c2e856c1c0e03678a9ec7c95b898e33ba6365dc2379f76c98a9038af09d74cf82ad548f677e8d98946afb6a6b2e451c5a3ddb187ea5dfc9c21ee1c5d4313e135253f58a309eb08d9c71cd9ddb358d3f21180ef0f1001e1424576c7fb4e780c5b35740d7d143078ab79a143574a022de93b6cd9c56b0e3407621061df2a05fa1696cd91bf72849b4911cb982218cba0acb2d8db512daf567329f4b747395303a4de209dea14170214f9613c7c9942d23a4963d358c9b0f99ba347602a1d061d22773516f73e45a79cfb4455552240727422b8e9e19dc99e16d634b9157c85ce9e3c581cc72765671586c6cce0fee7f0eee7601a5dad43f12831b8dadc4ce301bbc540b5e67450850d9d749ef34e7a8c22fced215c41b38668156f16ccabfcf6a386a1d8c606fb458581775a1b1627d5a7c8912cef368b1c21acde68cac0a159ddd9076f12c2ff95155e7e4861e370521e984b7f90d0c0c48ae27129d8ebbb5acf315eb18cb2a63f56bddd2edfbe3f68a27afb53c57b04ead9806949f0403ad5266eccfc401ae95a8adc8839f8eccdfe54b58a5376e8d3457cdc4005e1d0fdca48d3a57eb719c90aab4e6397044309137299d4423649058484796ab0e3248eca1b8a61a06196e2d45dbf9760224e2a9fa7817342f9bf813a8585d78247a532eb237da8d0ab3e850373207069f409431ec3c64ec23b072d369e1c36728208e43e9ce9ecc43a212a49b1a6aa8a8e3684267b8ba0a8cc0af48c88f80a609121fc3fca8bcf84c81099ede1d563bd21feeaabda70f0347aacab59df5c9b9b93c7d4558d641d8d1c885c9331683327191f5160b0f3330889082d73927e4ee8b0b3feb04cc4b09f43cc51b6e1106eebfc16affe0d7936d1dad8b34883816eb49fea43e88f36aae6b11a9b4f5578c8f05b0b5b59334ecdd25fdf4cac2c09d52fb114b2440459a42f552498729a02007cfe48419f125102ea50eaa4d21833b39b1532f334dc7d635bf4d0b9323bd500b0a382de9702f911d3b6c16e7486a94be4097d2e6293f194fc442e68748f931137d7ecc39f5e5325e14b0d3cb023638a9e54d40a27cce419b82e9b7fd927630c0de85a4c600e853df12c53ad273911ee56526608557ca05e396a8d81dc8f2071ad71a47b4d48194667acf361e5c72bd3dcc97c98dbf95225f86e178ebfc6c6e4514cbd110bd95a9a7262fe256c625bef211b0f744ec6f7fe03192091cae7c386bc846b40512383d94790d3be59de0acd070d69b57b8e5d1676544878a5d390d93c4699fc1a47c94cecad56a4b3b7d9252ecd2497eaaa7696cf0bbd3bc39fe1f3a1460b01faf6922a18cb54951122495d75fc2e701c88d56dd4607bd5ebd79b66c382feaf990994898fdcaab91621062189dc7f84179abb33d7f7683886215bb3b68fb9460d4c2495345f7249189a3fee0386051111431d33a88647a3241b388a16dc35cc5733f3c4199cb6e490fe9c9119680e332400cfab9b733e8566d63622182deb3d8c4d0a0c58f188aaa843ae2012a9e2811a468169c4d2fe734baa4f90ce33489078a6269cb12ee4ccbaf9a32f0a8ac0899bc2383e70c0b1493b1d37f9a22cb5518ada9daf799dba0906b053cfe8925050e1fd9ac5a0140cc4cbfa2eb8ceb6cbf40001a603f8da0b172eb24aa5d7c6486134982350d1fd9f07949908c8807b01b60b4011a570d9bf09181daa5e279b717f021c8fba206ba3c361500eeb1ded9f57b3ea11169f76458f92f486613880f5a26fe84c04ba54841d02aca921408640ff000fc2548492a66ea6579ab06f91387aac7f2aebb135a4859477ac7fa30df5435de3a7dac71da5f5c2c443f1d682b8670ee0ea70b80f2c7663b3e5b748bbcc898e7715a9b1e3eb734da4d8500a35e0d2152dc6a7eaaa9d69742fae122dd4b7f9688d4a990dc2bc14827431a6b1856c876380a39a7d1c61f95fd1b61b75b86aa64db9cb058eb50ed1185e62265b414816043e17226721164510b4dbb30cbec7f9e2f625ee0e108f94a60c7de881caa2e508617918f1841e09adf7e452cd89406921c09f10e5861a2d3c1a9118f695276e370d1f6508e88bab5633266b5bab85215fb6a352f2702e0b1869bc732e05ec706cc702383a8e0501d58626bea93eb9e66486f66dce60c06bdaff2718e427f27aa1ce10c066a0fb5e30eeb24c51ee4f687fdf9264b77a211f3834d7facbeed0f238211ef8ad5ca68da6636e811f105d2df1a423d06256a99f3845d760ff4a6d326b79c6baeba489615039e1e42f0bcf18fd09e379e8f6d78b3880888a9377559b5b3e5d06c102dd1a72359b20927be899376e8330aefd93485ec0025384566744106ca088186b398c8e086cfecff9fb43e54e52b1423cdd9d434dd73b31523bb123c17780373d48ab2333697944a06de6cb3141927ba3c42feeb72ff1de2be7954f6504c9b67adb9ce773d7e6baad0be14ba6c6c9954660bc3bd16feca9d734c765ab2023ddb67fc6648f495116353ce0bfa5663ae708d831518a7ccfddf67549a1314bc0d39412b89226ae7fd632778b249d293d89c42dc61d0995db5e64af701a9f88854b4c7ff7d20e82c6988efc595d8dbe368bb510d34e00f62edd724a66572941486985edc010d6cfe9fa845c5de2372bac9b1520260b2b02059f4df5bde705b99a83fedef25b73935e9b3fc8f6fe55f6fad5a304b16717088c5c751e1c9ac801d21ef5fa5484423e1bf424e44945ee82bca24a22543e13e6a137b80fbea8cc187b9b78f8af305e6612682a8ca5add0290a786e0abc33881acec66435f3a5eb50c118f61da96ea3e40fef88ad6f3af7be8a491b228458c69850011f322ea1d4c21e2a71c1781f93369c645de493d97f933371f38886736af5b830ed8077447c3b471148bb241c1e689fa6bad3497475bc7764ab2848c73d9310084e3788d5ef37c565052550c7b3c87c73938b1600c1cefb84c6e46ad50cea6fe0cad6b6ccd0c2ab53e848c21ee311bb45e320ec5c6246332d54de9f6b6540c3bbeba894bab1ad1f7da68da3ab3c8c421fff8e1801e066c0333586aa07597c9549f98d1316e89d99e6b711da51c096912d86466982c5ffcf192d855638e7de790b346bbd1766eab3ee9bcef0b27bab4fc00bf358b048387d161c4065cd1d11777a582ce6414dc5de5feb1c758a0b4743df69a51f28924385c64047bffcedf9b063ee423d9e8a8fb389937400a97a54eb708b956d6e0bd33e283fd15c2d46c008f7c3fdb1e2f2e130389d47a7d3780460fccf2d30e0dafec74401cf0a9d192b812fade4ab4eb31e6b2c9b86f64c131b02a3c8006624baf7b34204e71295227acdb12a6ee876a3812de6ad6b1d5a4d10e40f4c71c71e6d8482f49d7e1b084e405c612fa1459bbc30f9ea1e406d6d0fdced59103b63b3f5f216d81a5d8932a4809afaf380236a599caeacc01b8eaf9e913db3709b67513795df0963672ac65cbdd9be18b9c92afc913ebdff58372f4f5d41418f731496cfdb0720756a811ac81eacfd38406afa0df633bfc58033092d0c8001578b798093bad91c9022c29698fc17a9c2a47d78d03260e2592b0026b418ca0e8ddee57b93ee55319b8447446b3c5413d16a89d80637e83d651af25df5c7287dd50dd45c05b088b59c929664dd40a11964cd3c511b9a851addc97463328cca31464124108c5988f9b70044a215e6462d8192da84f9d9d298a63a5c21b7313a8feea100c438afaea79e3f7e955c97f99877e44581dd5c73f38d6b58008f8b99eebf75e72e3d6ffab3373cf10a60a1fa01bfb95398a876b33cf3ca264f3e85b6ef4d2ea562f2e0028ffade636dc50b13953f54fb7a7349735fd987464d187d8803f1dd973ea8455c96dd629daccba5c7dc204069cbe227ed7834808b45de3075e7ca1d50840a23df32551a0ba1250455b7af6e90281748e9d21747606110e71a121a235c359d7270834aad631698202c797115b3adc61b126bf835a6292674069ab12a19d1eab01ef2603895bd302d6aab60767439a298e9bc61f32b1289d89a943e793beb47c4a25fc6889eca9526ca125668170269336817c4489c0d57f484c92a879d8e495b9aa99c290c3b6e5f51d79f251ade66a34e73911763e5a1b09aeaddae99f626fd802ae8f4bf280216a67fe8ae68e28d016121b61182396145a23b44ba0406357c68480660a4307f7a417bf4bbfcba025de863731a7ec01979dc5de4e22c012c3c15e58e8e060316d5db194bcc4f9c50dd254af1dd4e7a796da319725067b8f5c07305e3c468295f4476e9f4d9ca2db4d6c2611ae4b5da1391d6a4ed2dad96eb368d95d3246ffdf4fc82edcdca576fb6b461a7975fcf1983a5e7d1b642dfb4dc6ed6750e2a50f3d2295b6d3a80e9fc7617c2e5117d522b1dc2864485564588124653188909458b5efa884e877c28e6956a20efb773097383e74fa17cbfa09ffa46afc94f93fd224b393a7fa7da98a653c4f00dec7b7ad2f62376e6b1153d7beacaa25ee20eff3979555a33a337e20e2a0bdeed0508744fea85d52644a0caa104a90a1cb9c64b477abf7a495de037c78340105571f42cf420a06dcfd520abd7d3c4d66313805fb3542b7cbe5e635c43cccb47cc2c66a6f6bd92a45c2cf3ae03ef79b0c5472ae6e2ee62caec759de577a6d5b8234c3af46ffb93d433dbeefc413587cd09ac5bc810d29efdde83c030949ecaf4fd17f5a3c7899937734e1003255f6f56eea1f1ab8d645f868170fe05dd29f67e7e9f6795b3cfb1a678e95c1c12d92e74788454645a55714a7fe235c1c1d43e3014eff563a4560d14aef19a433f96a9bfb9c04e5135c0a4fb8611b1db98f47d263aedc3682cc34e9121170450b04ab755813303f7d1bb9d819f0306de80a6e40556f2e1f647ac39b58c0240ab11f470817b057cb55a544df396e6e1da39503f025ca043016b96063ba12379c1898a0fc4dd7648357b6577f592a594adf4658d6cd363199d2ba160ff456c75d12721905b98a504f2839721c5388b5245accfe534cf1f66b4a8295ae2fcf434ec79e013460a86cdfa7c68933c85cac36bdbf2f7fd9a81a39943034892b0098d603250961b21e294a4dbab0cc94314250765a6856fdb070ca28e938316b67e7cce63f4e1f24df2ae18f990eb534fcb1ca9d807eb061dac62a276389dad87b1116b1959adb00b8297b25b22b9268a0d534e2667bf9bffd1e861d4f46b68efbc325a3e3e3bad4ad713d86bf570c4e42fcd1aaa0c85e012150485150b4bd627c5b8ca746122f7413b779dc2d62cd73dadd6d7e28132f91fb9a4db2c93a53b06f18657f7fb921995badf567e147c9a73099c5373249252ef4277e66edf43ffeb5a0d58fd7543d84eff636e5c829ef423c2b3527a35230a286812a92124567e7c2a9df870e0fbae11e7ef2fdc174eb9db8963131aceaa7dae357e4d68c4171a307f185faed9bb02f6ee8fdfca5c7d87726428e89c9473e32f301d7f2c9ef39bfcac7c7d227069c1bd063e9fec6c26ede5ae56917e7626cb39d5210c5ea719510df3cb4b576dca3e4595bf19f25de889dd400a42d9592d16ee6a521c21b7f8bca5a5cf71de6eab7ae4d635254f22961c3ad99cdeec956a2af1a305e8883f2ff63ced7b9fb43088f859e17f83129269575a4c41a2e21168233f0b5501c23c4b0384c1c5e472f5cb77ce62bf7f9cac6fda53c390be5825c82647e496c341b0c06a020495c0c5cad61563fa699c761362e7e4e131c8a5e49f9f76128f342f6076f73a5ebeb5cf4a3b5c198ad4dc21ee764d282c3491c4fdc60c5664a8810b85ff79ac8c2350ffc9a17d59369a3875664386ff38c27f98cc11fa28e16cc75c71b23fac0f8b4040b229e16672926d04f8fae079c8b0280110ac1f1b7cd6f8184741b1927a93438c4586515abbfa1dcea14757ff2b7b61115f62a2502ceef8331fb8e91d6f207c5633bf83c9a74d0b2711293f2bc8dbc72a6fa547a29ef69e4a62053219192528ce2607828f38270b2648ec1cbac345aad48cf1ba576b6d72f5cd955fbd3c19c218f6ff987c12d99753d97b31104ad4e1758ecf4ce6467b770e8f1e5183e3b0aefc77e35f08e0f14cbfb58453b3d94ba1bdb3b0213fec5222b3f08cfa662a1f5b987c75005d2d05866d3bef1407a880a004a8bba13e698366f32811aa8f2ef696fd4f28dbe06053fc42d446a9cf3c8bb3b5883e742f419e8f6b30760cc98a7e1841f1221a17d7d4dacf560760f6cc8b993ff611b4ee9586b46464af04fd17781688a57502f964e222e3529a637e1226c264f943e1cc699f0efdaaee8e4b16bfb39847fe242b464a40d1d65756cf8b9058b0fa1fc1a1f6f53339f1122e8fe3ecb384350732351a3a1a14d56b0ad2959cd7674c8358e60a75b51d520899a6da412a24cfb5c4a56921708485facae9231f0a5d8614252886d80982a926bf32238f3d51d4b9f003d623dd605ddf08f3f883526d7768e6597a5fceb14bf28c4831b1cb1d2d8c82c327fed9d0b6514e4227cf95b2bf31a3c69c7af7208a522ed16b343bf1767482c52b57b84d96583d5816d69f7ad63932880561df413f357b37f687a32278362b38ff9d4b9d676c873404ad7a967c98805495b7809a73f177fa585c968b4344b6992ea8f8439e7cd3e226bf78a59ba179bae58c952584a674838cab3544efa6cd52a102e68f41e66b6a7f965c5912e546488888a0767220b114993401db38878f3944ba4b8275696f5e10377c54931601b21016bf5cf8b07321dea3c97d78636a7bfc6f378122fa015849092b68bcb655940dfe87a508fb65216210849181911ceb28c6824ebf70c1e0131a2fb85a4bfcff2d7e77bf95ec441922814874de36e717980c3a6047e382e174450a4327878a934a4bd7974bd1128dcb71aa7ec11e0986495c660b535b877e3125612191c0ac1629fbfc79d033197bd40e136764b792b1b02fd871a13f561b40455236e65c8184a46fb44486df70dd1bdf91ec2f39f5c29baf000bc49fdb51a53f0d39f915ff25d4aa953782ff129bbe081020c5e612e5264206ab2044e23fbf6df546318da6d7f3e010a5e814a4c74bdbec8ec6b2a70aa68dad5cbd205aff91c7cabf43536305a1bd68491ebfba7564cbba07582fb5b0976779a244cb38747f56f482a982c8589306554e69222e862d084ad62d3ac1252bb9b893a48d87965044735f2397fdcfa3d655c6889abcb65a8b5ab18c4895b6da5e9b7bee8aec36c606a6641621bf3ae91063296ff4e6dc2b1dddeafcb84c7f913ba1aa15e30120c8f5e0ad83e7bff98975e4f08f0942902f41de5e10040d5a3bef8e9c5c0cf7f7f62522e2a537829471698417519d6829e8908b2cab837c982677adc9248ae5c9833f0dd6d6f6664888b3f6777a379f9c15ce964acc0c05bb7f331c18477991a5303c9ce0ed6b006a1d185df1fefa78075713ac7bd6b2c60cc613cb789f612f206a684c7365b5cacc7d3b16a775a53fc7098e6cd8a889f66e89e1112fbebcabfd4b8e0e66f4786be126f41aa5d978f03a7706306819682408c90dfc421d6f55ea7fb7554d81ec3882fa8a0a0660f51ec391f47247dd3b84cce819ba27833fbc637c93bd4cd3e567e8cac0d22c10f4ff1151b173460c61bbad0bb9f5ae3d847302200c047b6eb4d39bf3629a0f4aecb2d173fe3a6f11d2b3dd45a715bc84a435d92d5cc0b34df9699274dda1f0f50469247595b3ab069d0be3245d64bb22faa30c90a50081565aed5f32867534b456c758269114d39528bbbf6a31ca9d5e1fc79f913ff081d2a2bcdbc55b1ac573f6216ae8359f9f2a625ed35d1af24fe8536346190153b4671025a4595629b2060b77714df023a43fd28db88f4727356baa0b4ca301ad1cb1166a509628dd4b01182b3223d059e15abd1836810a8c079f0822932a234b1e40947cbe0bce8520d91a7445b64a57e4a635e7682b5818a786728c88be3cb1f5c368d3ba8f131aa400c28ddf1f4fe2f2d1766484be953c0258aff46e0320ae351f417c19729f8035a84085c42e11fe82320f0128ae352fc03c12e08b8e4fe45742fe6fc08cf121406542fa3437818319e5eb51f529225acdcb5a7071c37377378689bcd01f938a1192bb8c6d9dbbeceb1c752f7a5ba7ae9a0ecaa0a912185ce4130a90ecbe26e660ba7b0b67c8227ce5c886b76fc862172c691384a085728a225dbd107b7f80fc5af913afce3b1f41634b90729ee7c946d7101df3dc26ad987b1b574429b91f0028e94e4eb41d294a9d241216ffe806e5c604ac95832862f00fed8fc1d232cb382f44228b1e2a8a265095c223d628d8914d5b4a71b6564036bc71bff852686c61a995f28922502fae7a93466358f3bdbb9f54b37971a804c43840b12bef1304bbf9c853d4bb99503b4db5a4db8d4adde56858ba545c4930549d07ef296a47213378d01f4822cb1e18a20cb2efce544903f77ea6aa71613b4062f1b15cb8bf85552e33f109e840fa82454962af42add5fcfb7bc76e98b6b41ece4f8931fbd859e6f11b7685a3f684e82b4896e42517e0d0f340947d7f7553740378e79f6f5942364135f2c40f0d0a8cc0e160593130092bd16e30111ba418d00f31668855b0d9f7f4be84f20c61f4edb0d8c35255c5a0010b30400ba27e96bd0eb4848109eff46a6b89cbf3e7ed21b602711fbd936407f037617f0997426b94648ee684369257f10a2469990804cab66934ae28903900bdea986a34a92e3acf1ec08b4482f0ca51549fa8d19f7bfd0b870947a692fe6488f2001fb3be37f27efbb2bacb8397b0110954b1665b57f7dc4444895bd008baa0536ee5f4ac00e72b56eefa90188be86fea7294a4ba6b09769faff69e00188ffbd6c8d4d5c5d716422fbb7114fffc865426ee49522252f00931afcf1be8ffcfe8f65a864b34b5b07ed51545a26aa8693fc88a9c6aa368230e23f159a85df6332274b88ee07ef76e5481a8586597ec1d1d97f2ba9aecefb119dd0a6eae87e579d5c3426159757e753889eb2d17ea334e8742da8cbd9548b7d0b12829bd1292c25f022de31f5f5cb9c2dec96897ddd6bc4b90e39d33b43aac5b8e366553548e1b4ef1fb020970a6840771530f3a6ca5ce304ad2c272fa86cc3d8f5df2ad70c8fecd6c7e4c2199010f1f70ec204f889cafda721f05a17196c7135a2479002759bb841d62a9e77ad390825dadf97b204ae725bb556334942629279f9fbb4afd170208754bc5babc1096716c95aba3429f6a2364357066b95d58a9311eed15bfff5ad77f60d39a821c2a85ff1932a1428edef0117bfd3aa824a8ba697da58cd35ee6884818b661ea91819118c7f77dc84da57540c1fdb5857ac3a34a2f42c8e5a5e72a76939854e90c18655f170a705681bf46d9e423f1b4032676838f5a1a141059253235983b4a779dff2522e787b4c86ee9f131f09de0a48d13af15364f7bb36ba3b4204fab080a038a8249d928c50c20221a4a59e03b5e9187e141111740c29d6981c06bd07020d0c779eaad808c6807bccf2d69049a056b723124cc624e9ad95ebc1a8510d36faedcb0c591bb50a4ddd407a4bd92dabc10124437cc7453b5fe2e4f4b4658c71c122b3c4242d9044b25488a77a711b6922b533e05e3814a76d7322bbe39e909e82a0060627880ee97fcc2001460bd82a905bfed606086c2068f1da79126e5079d0979f256c8e371192cbaa89618b85a1dbb264cda258e2daf2607c0a1675397585b9c04134b0eb1b5b2ec325332a112863e904a8db6080c13755624984885392fc9485b081d5b110607351d43be063175ec05818028c18fa32a788beba3dcbcfa765375952e85f7d03a77c127a7189f7fcba66302591cc09e2615ada7904bccc74838427f0452bc11b1319fe5418885c6a9ecb3efc9db4acb2479a680d77bf53ab6be6d4ad48aa916e7b8e47ddd0d21e552c375697a17199638e6842146532d4a561352b4d239380fc5ba8dc86ae603ae4085520ab461d7a14b5b941b1c568b80036a9d7548a824d0f3ca40f81a28c8a3f87e927202485b047c1e2c65a76a53fdd0cf7155e08d5c07cba4f7b18c1924ce1903b4e80ffd4b75f30ec2bb16099bdd095cd0084dec6a918120e4dea26e45348061ef76b2def870e710f35ac3610abd73ddfc5a6b288f95c62e8c1be6d0ac1a90a6731a77c221f675d381bd1265c3856a6637a45b1052f89e350f0f4a57188b94aca4c2a39b40e2bd8014ac338cc1e00ebdab05e7b968db62f85ed2fbc33b7543b92cf944e7acac6781bae49fd19e7ac0315770715481735c7b0ab2a8cfa2d5a7c110988ee3a68e4b0019fda316462b367e315008a9a6592b883dfd0d1910ba64e610b44ff27c80e390466a07d2de6abbc18771b5a7cc7840183368eea050f819c661c46358f151914e8843549f7cbcb32b61970b509868ca9b69c9126313b52603edfc66d28537a02d3949a544ba63636be49563eb55d059c9de0a88a45aece58c7b5eabd77db2a353f12ee615c4901c6a2bef0ab51bc70b6b35e8053bfead2024a0c7749a8163c89dcc3a538ade2371d674dda4469ce205d875f3d132923f253d02620915413b0320043e8680823c723ac89bd5c51f952697d1fa4592343450070de10685f1227a9482b649a1f4c5973112c19eda3cbb104422f78c9d902314fc7e43218f86f8f4cc594ce888e806f43e3416a676390aecdc801944b43fac853c00dc5f363fc03ae0c3f16a40bb8f249e9958732236b94eebbafc0171216799a7db432611fc1b988a2f63fbcdf6f16ea480a28624f47d1143428d8d9500403fe50025330b10271c619b6cc365d47ccdab97e051efac3c5a7d8962fd62c575240b477b49afe575b2b1f49654340fa442f5bcfac0b94aadd9915cc4d9a485795661707fe2a9287754ba59ef328363b84403e8e08d58bdf24551972a45fb774db83213563ff4990245d125bb62cf6ae42e78b6fcf2e92120ec4b7a7154e633e74758dae37020da7375949615c6bc15184f26aa3cfc4206a5940136421b23df386833c8fe2ed8108e304ab7bf4c91c69b88c9aff341f2dd16949b149c77f71e68290ee90849f4a6808c14eb9aefeea8582c942cef3b5cc7f450e5e03d3db01c5c6fe7a0a9d95a4cd4cda26b0c542f904b5c025aa210c5e14f3c05c3f49344b6168e774a768dcfbdf14865380ef6e00422cd48bc9eff701a2a4f32b8ab671492491924b30b9266abb15d2e5138194f8e8773d1229973467a6d1a3c44bf3ab3b3e72917b3b29cee93f0645f811e4a038040ae5322cad15061bb979d70d95ac69a1e2c3eb6671670dac875f1bc5e490980b44e40052d6358839e08a229efcf0a15d3ee36c0eb51469a3488e90f47c9d1b8c257082b9bde7df37af533e371f89b43a4a5034a16e64149af8ebd52682c54078648a5f2878fdce3310e18d3e205e893ab0e78a5409bd1d619e9bdb550a84075722613954ad4d0cc7eae4d4ea8042ea76edd0d8aa7a3ad1bee8f390c292a9b470c2372c827c08942160314fb18f2abfcfc931de14c9431de1ced81f8a9c15ae1c08520a381ec34a966bd0ce68ba273d130992725486b1ba64c109b70235de50af0e75ba1154d0b916b5c9dbdd5dae19cd56966b4d6aa0c2b24930619742c7a5d3d81b9606157df5968ae8ba2594619270317347764b87924955da98411346674726a8bbfd93deb65994343e260b8b50cbb062a4714422da50a34dd2da2106b8d059853fba26cba7c2a6ee23985cd14ec6683e16b7f37324e5f290c80564ea7d117db318f3551c90ae14e13412e6e3db02f82a5b8aded061bc1a93e7a2e6258b911852f35f69e9c7bee8de409946a11976b7b972a4c08d425c48fa522e1582113130600ab03b9d0039e4aeac71283b9145502ad59c06d6fe00c197fe6dcdd50e4fc803752cd12351a4bc6005adcf8db3d8b38e910c6dfc9eae24138331ceda2d44bfa81e53f905bed90b10fc37a72c097085686af13d146118991408d8d4735aead758340e97542c8183e39b7fb9f7d8def70f98622b61b28b0edc0a00c758d625c97ef3fb8bb6ad471d8b8ed6af045d00d5d6c4a891888412e984b47fbc35c4f95b05f8bd20d57257ebe0c2c81b15d0d81074116181eeb1e4b0297fb3df07978f2cfe77bac02fcad002d470725e4148ce3d99c71ae29e2c6b9c4df99510022142a275bec4451c3c701d9a77ef9dea4fc9fe80b084442279cee246b320aef439bad59fb0c1a56a1925059a9613dead9cebb079182328c687477e4fff81d31f395f67ac2d908cbee0c8865957d92b6fb99d6535ee8a08e62d870921cafe304f3397dd2e57afe19a9f66d1b63bf35845299bc12364e3a7cdf8345bc259a4f669b9b7e8034f3f5a6e70bc899ad803d35731c7f369cb8a1c2dd0680e510b3264b6c2d3d766b9ea2f2f6a3964b0dd1a60411f7f6812e735444eaea8d1c5abd46aa4fe52e339796c4020e85f91657ec5563c98b8315340242986e7748ca4f966409fde6dc4a01f2b2c74c95abc0f16e5796bb80e126162107e147c92c0058a886055b58f916ae90fa1a058944d5f4ec3c4f8baf0efa3bf5f1c093eb828368215918ad83a911222257f1bd5ee935bf643273d2d43272db2e3bf8c7e939a7603a67cee368f5f6e975b5ca71a40a4188daf2a9ca4dc203040b3d435245fe53159954e3723c519014ef15cd0bace0804c8c9c910faed3bc58b059a270e6f52873ebd3b6fbd4b791e28e13eaa19c4b46bbced34d56dc759834c54d647fac526c48b798a7c1e2003cd2480fdd2919caa62e852032c2baa6ef1e2c68c1b10365f37c41f500d3621af8ff61b1975c18ffe647b9d2e30247de90e285efc8331e73ae519de25b63fd40fb062dd7886ca5bbc47ffc6e4fbe5bc24ad04cee9e72fb8a0d5112e261b94cf3aee98f0ad9f0451d53b0b107367ab4b8068137a7958b30a6f8391f25e32edc8440ba6788e7206c623e4796fe04b64bd5dbbd2a59f3412517592b433034a8509e3c42248208fc63a75fddc3c3b3d58f1732d3732d790355889601501a069193f68c25e1c610a843e2116125a5f129178a89df4564dc7adc81c627ea290d5e6bf294058036123733db35d308fa16f7916e2f3d170a6c71377e49313dcc4813c9de988731be92f649f5bb35dd11e8f2e477525c4dbfb5c20d907c3b50cc790addbeb2f0948f9f60a356a22f7fe384045b869fc918cef88a8d57b8a97bb25122112809453265dac8c853f1f901dc98342c20246d4a576d95504c1f81da525cf25c5c6ef670390168579360cc75f92eb17028ab5374abcb65c3f96686f0649f5c0ef1c5d75ee01bdc8568cffdc77d77049ca85ec52cc1ad8c1ccb5aeeb12a7c2ec8a4d078cc6cc9ae1b395691b832bdcfb9f95d42d325de0873319412ae426deb8116013ce42919d95d4482b43489ec69f571a1c756c293c501b15057da69abebc42832b0b18ffd88956c83cb65bf8f60c630d789ff761312877ae9a1555c7f05741cef580fa1a17c24b73d702740b9230227d156cd813815c73a777cf790f5381054d45d58e68ecdeb3d9a12c74299602ac8e58c25c764c6989f74a838a84243d4da9a719977079bbb10d5c5b93b6448c1fe0b85f5e36476a060142c340f6b15115b469189e0084ac075436ca663b35b419723f63719cd4a87a119e0725faf78e61c1c518170a82d6ec4ec72db2aea146116a183fde20eab21f200f6188997e77e5c24b221fe0000be70f44790f70e94030268fcec5d91ecef4d1aa98914f7394df33d5336fa1f4ee7f68b2038e1a0b21980bd52a24f99a379ccc7ee8e42f2245b98789444405f0e8b9f1086966ce0e69b1565ff8a0ec990ad71e6417b02e8dc2f71eca999dfd830d9488dc08d8a39906337442e3ad01b6ff27f005c268d1b99e129420158ef27d6039e9897ca65cc9095e019f45e244e0ee3ce6e3b5a872be8be0a8c8599b5505486be967280acdaa66a85a904a06d71eab8dc5db9ef22f589004f871278b48bc6ca869e170d3c64c9c9246645c150dd2a2ee582a4b68b4c6f58c5cb0a13fedb49dcc7ea98bcda6fc993ad0f68458a561caa4f3e28b504123bf79d491c8ee240ee3707e4407d5403169a89419a8ac213848efba02b97be6ad501c73e2e1f505802935265bb5fec0511aaa4d0a09b5dc39ecf4ea3dcd5b452403771f66497bc6ebe41b42c2302e8b92a5fc14aa202f663f81b0ccd15493ca45877816d40f6bb709a988df0a1a1ef02b868920908946d1466aaa2454c4dbd064be9ca5a0da9a685232b5e67c7495c0316f696280609a3f0ef85ca1be3cef4bc837e7b0cb99376798f275eb2788f9f0378d5bf878c089400de60aba9b91801ff842ece22d2d5f02cecd883b68a08543aec4e7be1747817488a3d54b5842f9839239abc6593914f80f8a345be66acc65f34a01d40ad20148396eeea4fa1080745db7c52c43f4d2447cdaf8ad87849953de7f8e0b39d3cb7529ae22d81b0cb54254358a01d30f402d8b81e90bdfa27d1dfecfd475145c6071d13fa6110e47d5e0311e8a7a58cc228c01a2c6f47099e56b609bcc6eac542d95dd66d95fddf24c75e24a053b92ee4df897e1e528cabf10f3a273327b12eeb6d5d223430765f842861d4fc28839075961c632a913a27586cc1be7e36cc64677138caf9fcf185b43c600ca180633584e1c86a3e4d0b9873e2c672c098d4be68f5360271980956d334a4eb295a41ce3b94cef07ce9da4209e2caddc6270bdfcdd78018ab692be5d3d017415e66fc3e5ae0c046c25f1b3346052a484aae89f4e5b2be934f64061dea3364ae806840934cc342cf51da854d9c627c363b5b97be018c887cbe194a6a5236952a79c56e74feec6ccea157acae694cd3fcf288696a0b19e6867c07e61bf06dedba39bc867dacc15dd04ecb404548ed166aa347be6d0252cf2dbfb66ee0241f37fb5287e7f366b380d1c28b89c09755b682a89d80a5264d7878e7686febf3accfda31c75e05c97ef46b4317aee4e57181e77b799c966072091fdf5d476aeb1f2cf02a013a50a6eed347396843bb53fa27e06b418a9e3771e827679edb12026d6506793cbf5df5d80ff2bd9e7ce5ec0d3de1e0a7c8be1ccf9bf98f50a91b93ca32c99fa8b847893e48b04417d0d647b03077b06e93764fdedc397f1d021df4f9e8ac93f63075c1d388a5958798627034e025b441e35443903d133f2a8b28c6ebaf14454a6157d2caad4b9bda874326a6e74e8990f7a1c72ba937c812f40ce51b0bd45dd7050fc3fff5e4b91783c7f9c0a7bef7e397b644b00aca9145b6468e4051ec9c3c547dfa1bcb4422f0a5d4c465de61504e8f616b04742052cf2f56d7b01e9917ad3e34c32d80ebe7f1e50e7b13d7d2ce98edcf24f9a7be1cf083238fb00f4a4c37b3e5f17ad18464b7e6a843044f3ffb6128e7c0752c08204c51c1ef8f9d5d2ee10b33b0703f25656fbafd1b5200f14a51bb68003028e4961ec2a8ec336baf68f5eceae67aaeaa2348aab71002700394fb851348ea1bfe91b6dfa2131f28fae5e9705ef72fcba37773f21811e6ccd8be4f9f8e270dd21f7bb2bdda55bceae2bdd9a43c8e71afc17ddc93757ba35208941c941822eee179609e8756f8623e572cfe85eff33ccde329748e9923220b5ecb788ded083911666d2e98b1f388cbbf3923ea97a5c024a7114896cfe5566897aff674e8468871e2e2afd08befc7b4a35b3e2b6c9a76068219aa99fad9107cee479aaec76414b3f913d3abeaaed70822e3adb65a8ab989bd0223c99126ab62e0f3ed79d79424fe94adfefce35996123547648860a89382d197b5e71518703aa4054d47612d5b29a26fc4348c37cc46d692015d223749c77e8214d7feb2225924ee9ecd08dfb6f6958d22b7b0978190ad10db05a5729e40fcce2db750b8d9e1ee7e4e8087b4be4bd9f3bb27ff86fdc3b761e330cfff8f294a871c37cd12d54414cefe5064066a0763e1550a482abdb38555b37ffba85d27f0040da4271631523e739adbc5be88c571e5f612d030ccde4fcdace948d3cb5a8e64876e0fd0b459eb3f982c1277dc1fc3d0d4d959675bd8be0516b9fa10f7c803d527bb1843086001d8827f81970230c907ef756dbd5c399241560bbd9b4b3e03673eb5fa4d961b4f2447c8b02e9a433ef7c825b5df3b25b66185b2bc77e6301fefc541fd74d05585deecf9fdc8315a2a544827ccf4b33a5adae099d44a8f41f86b42c766a88e157ca6d98c6c06971d359e654ea3052673bc60c8a2eddd7c2ca3822494a83347a0a2134fc31515551d74cea3e9d119d5a8244f44062e8a0ebd84841ad356374c60ea8953364776f27b2056d6ff1c18fd183f4fde04f713d48235e82c317e12320b654ca8c475fc2866f6800ee30fa657bfbf63092d689ffcdf3572316fd306a086e21814b48b879c0b9f8cbbf74ce0a705a07d62ddbb5da87c50495141de87bdb739a5f5db341ed026bb9a81c4cff2638224aa9d48b462c4cdb5798fef00c8f235a618ad4a36c665daca437f67ab5be47460824fcd0e23528ddb77f74df099691a1cb5d3e2e090efa4675c07543bf1c421ff063334308812d041d545e83b1f88a93a0163382f1aa27760bf0f06ac277d44b37b624e95717cb3e4074b477ea037cb853b6ec960dfb355bd449a05665c5724429795d70bed49e64cbd75a357d51da67e10ece86118a3ecb670fd4e646e6098da99e4a7847f246b1540c48379ac25b448737b986fc2b180f2e133d3be8c790263b84886875b00fa0492c711573750a3e67398537ab7dba9b770df07652f7cbaf3f56308cfa6b0317bc7551d85ff286fd2b7096dcdc0e03e10de17f5d1d85216c568b1710e34a29db4109b7210482ddec0b760960c467715d171e0fa9791e4ab8756885e2c309d967540d47807e089404df7402dd23afc1b4e6733bed9c7a73dc68f6bd9e9d13a589466d968a8af7d4a33c992486ff11d87c347e0346678a7f1a567d85e928d29a292068ce253e374802759c86546629ac55947b4f1e992c9afcaa551ca39d21284286de63b67ad8d7c5413fe1d226afa20a84126b7165a30f8fe88ba02842986fd0f2cca11d1453e0991e10323a0341b5caba6d958543dce09b91d3c1622b7940be90ad2e6e910ebe57ac7515f47ed5ad3539e3b5c580a9e66c538a7e81dc90d71a3c8ab3fe8f9b4d7ca038237b99522b03d12a6221b43537d38858b28ee14378cb7ae767dc97eaae1c32d4f9ee5fb811704a60e2e78a53e2761bb4910d1807d812463da90a87a273c2f27f70131648c605dd1c029d045cd3d061972d1a8060c389402c511bee1617a89941552b12693c8205bd0a0d3bc0fb3d650fc15730bcc25f563d162fb729483dee5198030ad1f5f66015c96b381414944ee0e678304840d36e75c89efdd9c09c4431011f640cc02cac61c457810312c3275891c88366259b0f9e63d2cca2314f30600d8d676f01a311a9070cfe334099e6ab4b11654931652e79c759d5eb5e0d97a26724884e591f74f865dc0f4984bac4190636144391ab161b283a7e05c6d1b7d37354b17d2b58112c978d416172c00286536602c8e021d4fb2eaf0156f0b489532d0456fa2a60d9ef0c27463733fbb612add0b3f1c7028d4666e26485b32b968534bc4f75513b1082cbcb53c38de5cbf0ed2d677d4d27d3628e5a9155261463a34cc96c26020548c3d1c8f1689a09704e56a93b90c33d2ff5c23076f455c12b0600cebdb3782c4ebd188cc6c25208307a60f9a5f066b402c4cd478590be85fec0c65d4beccff8bfb589bd447c8a01831ebbf3e0fed6c977b5c031edfa17c72512c6f319c0a2314b51c00588617ae043269198bf440b21b687558329eb4b27589b5d93f887aa0cc14d0251fac40ae8e55a68c0c0a61cc7232b0d46a47cf19a4764508f21306946241c5b15fa516140246840e5c6732144c28e59c7288560be925ea0e70e5488630006ed4738571b3104ea6005678dffdfeff1638eaedb0293e578c111e9d6cb07daa61047e2757351e12e83cc8744f697b2cb1bc3180c8d8cf40c7b30720f4e700b3ed404251d26cc43d18ef8eefeca22649dd01b60ae1d5ee2147568ba1a75594d0c00a42e729f0c9a3956c7d9c4541d91eba5e53c7c8e1413f59f350c4511c18321b1235f57f7ccced036f2cb8d8ffecb3688add92348c4492a1e71f8b0734457dc09e016fafc74310038079ad9edda607f0a3b7271e069633ee99960c310b4c855b23baa8ca204b5b27ff626586aa5a5404886407d31dfb3ea33a2f6ac3a36680f7a356b606b38fd01e0990c1b083abc65004bfc74718e86af92ee8a7a7a3711885d4094072e3526c352a32c14d4197f385e4e5f10e3f0d59ec6d176dc548d1b100e92f852c461fe529d4f73426c1f6bec768f3e68a64beb99412daf207df3e8b01c5bfe911b3af07079da5ca82b0298a27b9b28b07940b5e3dcbc25039d86428ac0c0f03987bc497ee5927793007de0b470ac0a37aa315f346d4dd1cfc4933804bd84d14df20f5cc71cda368a3847a151306b6917a81ac4e3f805e1d8e6c2d4406944e3e1cb40ca60bdb6792269db556821ce868ea99225b47ea8dc31ca3a561deecddf847ab52dce2cdc443e954b462ed7c653f13dc7802d9a54934570bf0aa3e2cb3f1e5c217b5a6c4a5c12d426150e62869e3664c4e4a0c443d86f5576bf61ce3a4b54fa3b48d51a6481214284a22b8485a7f14a9a195471061d446685991771af2a7fc250641ffb649cf056c0c2f6bec2f88847ad7a5db01264f7f5a54542fcaff9f4af66e6af9098754185baadf59dca0e892296c4a321246a94c70a4f3b029350a027dc44530ccbe7d043f8401a2f3f28fe0297a097db53ee8906a76c569113f81d151dac61fb678d2779592b8ea5aa04c85a9a40b747ca104d2220c185290a245efb1fd31eb9e3730896233434d4e6b1e82702086bc27ba764060c7d33c55060e6b666c722ad71bcd31de49d6836cf8bbca348b37cd2e10d226c79d5b46b3ab7fab3b7a4555efc1a1384aa099eda5d2e18ad7b33d9dd0d953ee8aa066f6f89e5df337e5ce8a21fb2aa67e5dbcc6e01c28b6f901ebadbc55583b34e9742ea1d0cb7c87510f210e1bd3825a24ca22b47fbf7dc706388df5b7868fcc942ec48f8cf55ecd6893422924c1903df21811bdaaebb77728d59aea9d7aaa48c89734c3dc3e31aa4315672c65a4b34c0f50c8d5f96420731b445479736992162a6f062bfceb9db6ab758062423c6f260c066dfd626cb111f0c968a2cfb0a90958dd0010ad13a5dcc8b02144bd18897ff794dc735601ddb11a2372c5ce1b5ac7f67353e0f9fd90ff7c2dfe539a68b9fa6dd6dcfd18a76ed5783996cf27686a9d43f61282b21ee0a1ede9cd85f00ae2e62bebeb4387ad0874caada7b99c2b823863499e16e920b05ea9c439b46933a551ba82252a6aec184162dc69a08ddc9d52d8d5eca0025bab8dd8975fa4a9c9d4a14df7419347c5bc6fdc470a055c618a344f6f2e8dbbc7283ff6a89915b5033992d95aea92c64881a30a5649567abeb6d4b13452d2b2d99f3ec768c4d713e8f072ee4d256cc335f5aba781f3209c400e86a0aa991c71e6c4c834989f302259ec93425022d5333db48752b7f645ad83d82d1206c69294d199ffbed406b695fd09534e03f4ae332db21ec4c32917affbb992af1a726a2254ada9b0b28d3668f77213d4c5f94860948dd61c37929f6948fd8c50e1e03445015198d85947b422a6cd18ec5d28aa2776c1997f09263321550c1247955314e2aa2c2f4c8539df1a302aa4c259f6ac64f052a994ebe6a8c4b25543129b9fd7d828049876c1ca02083b790599c2ac984fcabb98eaafe3a1b24429741dbcbbd805b5eab0ba0f3154b809ebddc0ab8e5b5aa00fa5eb104e8d1cbbd805b5e0b18d7620c3c727bc08daf1506e8462d19853af153259b1fdccea4831026e4bc7b492d2ee276492e6c4bd6285108ecd1dc248009c6a536c4e666c6ef9f1bc1c1b96105736cd348d252b759d77165437c617f83731a8b91d93c8d11d2e972b75ca78cbb8e0f5ae38ab8f00bede927dc9d9dd5ec41cf365d46f19039ed82772c306ebf0b13286d94ffd1741c76c8fffa25d6a9b13ef3007a63b88ffe6db33ea41f11747290b06ef1f26c0ca6e671f4eb13d0b6069a80da6a20f81ce55c29dd5748df388a109d7123c8405cd83a32088f8a03a7466a85c23eb8a02aeb00aaaf0028d424aa95134ee6dbb88ccb41280b94244d01bad1534a0c155a3eb5d5387d40c4d1884ab7058a88703314233c8636f905530bc512c205293fe10ac229c974654b37e5f737a972c0e1669993792e98c21771ca68c10f15f6f5a907216c42a1d1c3e0065719ba1cb777761c4496c8078853835e4006663d9e9f3a41675e918a7d300af214040913785ffdf63826eda62fc5c34f54ee2dd49295b35f30c55c32ef2378a63b839524bcf1197ddbc3129f9d5baf9505d0f78a2540ef5e75e34ea953b80d2513a07d8d934cc41c5545c21c94fa1d7ef1048fdbc5ce67cc3316894a4c30a2132a0913af25aa930986b41b174f868496fde3ad6c053a411fb0dfbe3a37b7efe0da41a8d8c223edce1496e7466a82af120baf4d533e30f2f52dce2d405c01ecc3250b1fb5a62d2a77c92713bbbc86043baab4e5b7d96c231f4e80284b83d9623778df946e3618cee7576f6b556e641d66e385eaae70a5b19277ec845226db0dadb560bafae16505c95ba93771642740553c0d0dd4bb3fbfad73f1b7bab74534ff86e5d0e05ea18945a58b3f5bf6d44f69f4db7c8889ada95e66e2c56ff51e03eca0dd793738bc89198eb5f9354eab190b53f489700e65e6b045a70d72249207fc92b1324db1797a6b242dffcd30f4df7b2ddb14b810a42c1875655d6625cce97d54b17ce43ebe825e3a92e43c6939418b01ddc5172c39ac0a02a69d3d72b643d141d566b95c470693780be0230d2dde8f8c1cfd4a28b739f2e88f032f719b178c80765ee23bd73a011ab0559e17397388b7213a9335e9f667a671297ff19a86b636035df7e022faf934d5b55a96e98a5b0337f1212a692472cde1ce1f8a444a0652e43c1d1f6795889c7058f6bad0719365cba847b9c0eee1679c930643f44603ab179966d22b7d71ee38d4f31df642e2904d0484339ddd704bf363d08d39f0f2ab5086a232986d8e0acec8fe2a58eafcee861c6a3f1d8f033979a75d3be3f93657a3caee627718c80050109e3430aeb6aece869b78418241ea42dc7d979c9d29505ed2c0b8484f630327b9fbb27dfb0560ba2456745f30668fc5df90018020ac523528f67e9cb0936673e54b50bbb5232909024c71d687253296e5d9ccbb20b7548a4b08a8041ed1e8b1ed15c1402960215eb062b2bdbce0dbc780be85c7340560adbde448d14859983dccdc4a3fa57400550d917ce26f3273a1983d05e972be7385514193fd7d681aea39bd9fcfd97f13762fe847c41e2f1b0a458545981812fd1a08a8471bc2076325ab15adc5607151a10a49a79dfbc589aead50ab5c8b36bb1004a8f35a72d343c1675a036ddff8cf37b34f51d800bb38ff55dcd8e2fc4533d85b05a0a51f25aa3572bd84da2a4f075eda043a2761d96485101577470129d66e4e3c1df916daa81a6d82ff9502445da7ef39a5c9f0ad61bd13a914855b913a6352cb8ae21f405e98857f207518d7a6c2bd4953f1908a9f47ba96102dc7996c3445753dd1ae90a4218ec36755632949771534bf3b5ca14ae64b30d5ae6f0a257f0bd595e734b8cfcbe8965e3d06c46f809472d14aa38ac2a79a2d75f30df1e6e808986f1b8df7834df969631e8e5925a363bb6f8fb61d19a7878748b4c724a018a73747b7cd09d3600d9551c1ec4e3b2602bf6932394114cd5cdaf7034fe5473c017e7603d5ff443968a00e001a4dfb706cf24093e299030eb4621a164946074ebaea15995da9d4336e92b42a2db1d82d12224a027eaa0a8c53efd753e2c78aea5bdad3bef03d555f1bd62fa25f4104510c94cf4ea5e197c6f2ba92846e0b8948df35f61ae86562c282bb76d195438e721fd44dc3f36ad7fa45089c23a71215b46b5f78019cfd3412b53546585abcd027e859365811979fc4be7bd911e321cc3d13ee4244f91bc154b05395d0caf2b41813fb5eacde9ff53bb2f84e96df3956982bff4b389f0f2b70162f7ef7eeeb63fd1eacdf87e577b0fe0e96c97b775a02738c8d6bb3a2f7959a7996af19260ed1ca3916e0338cfc8a393f4a9a251fd6cf5f2fc1f2a1bf8c0fa9d3daf9d1604edfa6c3d7527bb07fe2308e817103fa7ff2b439e2299d54fbf497b74565add06c6d7d0216b9c403257497b6820f7b317f2893c726521281309c151ff3b0645e36aa42091462212c18961280f59e58ab7749652dabd773e44b24dd6a6055c55714d8af53078e859c94ad6778f5aae222d8d01b97a2b777a9ff8ae165aac8066fb25f971a7029d6b276d6f6e8b1446559b7eed82da1ffc448a8bdf19281d6d63de2a7f888839402baa7961ebaa64953ab283dea5f6dd3b0f89029ec5a77e6ea9f55b1937075d0045b1729d5460606cd709a683e1fc1b80a64ecb07920202e8dee9370d1140e55cc1530d4392f0b2bb180e43a9d34b0e69c3aa08f1ccf05c7f192d849b84631ab1597bcee8120f8eaea248513d333023771096f2749e99d7f5ed1dbf7bc45a89a85c422b029578cc5e2e029c246aa2cb00fc3a7910f067c4b2168aad6be95fb725a0db2dd47127cef30e1e1c52bdd922078f516cfc24b12bc14bc062316717285588047d382f04479c5e23452aaa119240928b49bac19e202907170ee9c7cb1905e33a84cc27945dfb8090fda8b3876d52127ec396f783ec6f1472f7bf82efb7e5467b30ecb516d7ce1946eda4559888572cf2fcc4b6f229f8c61076ac60a455d13023b834b34935d56e38350ca9850c57fd578b5a4ced6e229a72a705dbb4cce5a650dcdb207a5bd18a0e6624e0b20de6f7a597d49dd40c7a421a9f151bd52b0f5fd6b52057f60df4c9ca6962a0a1b227b58909cc61083dd4d955778d1a7586a8192d3f192446789b820d2843cad5ba1c959e54a57fd58728c4fc0cc208c9a4dc8fca2f196bacf5eac0ddc1a273eead25b4716f351790dca9f837705ce57ead0c3a0920c31c8bbcf9592fd79d390ccfb166b6b10a3d6672b01fbcdf23189fa52e8a0c3275196c03e8d3e63eac28eb116824add7af3add894ca209c2245352a6ccfc4deb12fe398e95f88d17d7045689a4051cd131c8cc89df1e4081a08eec72f4879ad87c14fe55b546e992de2ff19b1183e14da5381304c5b0987aba0ddd605179dd2a607cae25bd90ab6120db43fb4e8d8e46162156d7bc6969ca4c90d85e09fd27baafd9554c46c421f1ae920f9cfc9f2a641487df717c219091f5ed1184a313ca461ca72c8794b8e83b1269b8488e7ce8ca28629fa95f03ed29ddfa6ddcf35f42a9035cca1ab676cf5f7720e41dda1101d58c3292a8f7cb33cf8a08b530d4d03ef14b2888654f48b9f4c3b272a152364077670f77078b89959d5abbfead3504be9bc9c54be28148105f834de6a9f69187862a4f2554d63543e44d3e7a723917790ea7e55b1ae8fc98b0acd272166a626f4fcad751742050029b3c4040c896a99c686e981b3be97f9faf08423ad1ebc74cc914d54d96551ff0dd35979825c4271a5f04919ab9bc7a448ace189d2db3f6ec6f70bb3bb1e8f97b4688d262daa2a21e6e8177cc1208716390c35ea28aba7427062ddc11899e92d62912c25ac43d89b3acedfe15742df27f6008d05cf26913a0e79fad755568171397c03059ce32cdcc8e7f98d5922e356132865b8cc55d686cd65631f62515bc277e224c3d2cfa392db83b498c1fa7b5ccce0af499db649f81f0ed34cd40c63e82d7155c3fee5c3756e9337e2a504c9bc730b6d04ad67e3a3a275209c241212b311475a832387143f370a64742e14156ee27c28ffcd322bd46c0d54c329badbce586109c2e827340dd9761a953aab5b40afdadf1577b0e1b2b50cc722df367ee08fc0f7696f8b34eb6c925b38e3d9d6bee52d1a14307d6761c0790c5ab4b8e0b67e9c920bbd157f358518bf386b4dfcf812aefc6c5085d43526d33b221c28a2eff85b1cf72d8843ffc3b2c460dcaafefb54f2bcd95206d9982ce99c4d4011b66c894cdeeeed591f10db689288093e51fae675e69e7873ada5e5396d1bd7e156fbaa622a4c604ff5c65745aa98609f6a8d57e55499c01e558d7b2a53cde4eb51d578aa4c05d3d853adb1c5b16cb52fcaecae07d6512c702549ab284c118c77451d043d795f144f0d3679df176d20f8fc9aee51f447cf25a36698158eefaa483ecbb8625cc9b4cc164f3d9a1eae6e41ec41c08585378cd364e64c1f419cb215714a8f464d64744d2a34e7fde0ea98dfe06e9f87effd5cdd3a9ec9f0e7c6fc774194e897b04b3f72d4a32c79a9db0580183c62add58f7d9f896edceeee2e3f5cb7d6affaecdb4ef0e3b502f59302180b71a35bfcdc682b7e1469addd5faaf12d7d7a1fe81a80206513fc3dad45f5b106bad4a7d8bd37c41b0b50a90c2ae8fc04b32990a4c5d32b1444a5256ac4590ad27c060b3789f14d0fd0963e05c302620d555c40514e9584cebb3f78b63c9e814dcae858fe1ac18f88a2d45168cf97b565e62794da6328e1efde6c89ed4bfb08ef39b40d03d8d4f371413542ecdd1f6f3c9ac8f988cf1bff8cf5135d2ebf89124beae5c691ec426bbd9edf9f0798df7d9359a02d068f90a1bd14ca16fc4346f51e2ca88b127e915f77f2dd5f2e5bcd4b70ae2db583ef7e2dd72261a86dd88ebdfb7864bb3582bf9bf6427dcfe158f6f3b561b69e9896a4549a353dff6c2b06c0df6a445d8ae7d8faf4af653c2df7f65c5f9a17d5181ed0b6d55b6a85b98cba18dd7a8464df4909c65cd2b1128c99855d1e10674d4709134fc521e08f2ea0c8c9073eeb9e6f1f54fbae948075fa4d6405082ea16d2ec103560bae773f640b53160218e2cbfebf02dc5b045fc4d24c291a5aa9c39b63ad86e0d4854108419f15cfc8aa00aa03e5a30915c205a21d182f0152b95670b5e00a5c049fd6b9eca769b0acdc4b7045583b72be3f8c25d60cf89e39f98777ef9ef9c6d802ca0498b96160460866140603653f17bff7e3ff2123704904ea0602d549137126be59bf6b608198ecbc493f1f31f32b13c4eb7ea5328e0c9019a01c6931ed99a3f0e8cf948885ff1c14d8bc0269ce74e8f13ac9a1dec06f0ce3a8d92f4b451c6ecc8e8987280f234418af63e657e1a9a52f6d39f1836e31739682579483285775ecbc0626ac3e49cd6cbede756ec920e0a9386fafceb5744d781dfbdaccae9cb87ef3bf8db00fab9dee72b2c8409ee91142d9465fb33e78d3cd857be7522941d7def8d1cf198edfa5b11620a01011615380454d99004031973054cf62741e26a3bf4d57227b35d6ed64f178118f0cc9707aa432b9d0375a5383b94627cc6b07effd227a9fe25ad97bd5dacf61c08ec0247c2007b237c472a2046016454b670b72fbd8eb0cd9e98c4b34c47987637386b706e86b57ce14b59d83885deca5c385517ed7572f216359633b8b63e595d9b7182efb8981ef10b092986c8e1da7cf9cfee7f154321b2e49501d2521e50ffce2eb211a62615a28e45101e5200542c8229de7c58b48564f512eb4151e97e986a29cf02a45dd65ea879ca9f19e3ca341321842db39c26cf0f570d42c060298070715e7a38aecfcf0cc9cafd4a1fa44ff3472230c24a6137a5ebe0ab63dc1ea2043604a3dd870d47b52c5891020091938257bc823ae25e9981d1e87e94081eae4e8478ef126f60500bab49738bd845ff315f39b5aa7f78f64882f2686838556a3ac7572d3fde760cf8c63cce725693f4c3144ee6028639b00e29c1e5710c5017f208628b536e07b22e3e185f6386eb2c38dee6b155dbd6327f1274a4f5100ac448f5fa1969255b40270ae546c92ce2e7070c6b7f76d804f4b9fed61b4b15416641694b4ec714d300914a65280c94e7c1454db072de5cf7ab534b0447e3c35d1368005ca1574a499ff4c6f2a339fb8cba645ef66f71cff89534aea3f5f9516974618f74bba81f79469571bc00924f3140f1e49d1286ec6745c330d8d5ec0411a5f896ce41941d37939a81a720c58b6b5b856474cc5e896d573b90c98e53b471b46b17dc8ceded1616738cc886b721a21b3e97baedb9a01de5bbfb65903675c93221ab0ddb27ba2ed6847738c549976f69274b37bfed4f53d8df921b72b0015a5e2d3e2401cbcb0257e87715c26def70e3dfc8f482d115d074384651dc50d8f5c344e1c83e6c901f7118a4276e829e2e9b25d9855527bd117192616318d55afc0c3fb25a628ad0150c96d99a383045c999cc9827623f1c674abd0f806b0c7979c53a4df2c93b5e4137380999ca8098d354abf9c11f456d782de4f138a193fe274234b5291e5600434813de91b143d5af1050ece1650c3dd924847a2f281b49772a1ffecc4a348089c1d66b47653fb08534d7c0aa01a9a8b922c69194a2a72ef0492cac0ffcc8aca9c4e1b428f85cc315a27ef99b39aa0ae92185ea898c319d748e462ac71cd9132d47bb0e7e7271b0949a6b731cc5834228ec0e6d77c00c2741e0aa2958e096a732fcb6075a5c4d6724a77cff5bb1a95ea887ff4ddd050041d56ea418969038edc8e924a93b12a9f685cef66057fa88fd68d98b543bbbbe218b36d794e3f035131891df0501bb641fd59dc757fd5b6e225b692937e90a28a2699420e7db7268e075b744c7f65fe636dbf00dc173d448bda8d2f70f007329141615c094ac3dfb2e0b6fb9c82563627644bc667bdf3e5ff707afba5bc2c984a9c123e28a8308b39cbbbd31a0189d2fa5afb1ebcc4cd8de8f1270c03909db2f8eb004009c7e219fbbf6173584c175d48f49e47aabde34c764b99aea7191023c3dda97f219488ea8c634b47c85d0a799b7609275ffa3bb860f683579319e9cd9e40aad03a84ce125c385858ee86acd413eca3b0bc466ce3c81afd2e0d2c423d4a7e25984a3e285ceef8a9c3f374ba51f5b16a18d86c0627cd449993c07b5c4271e8f8629077485dfc0b9b29476ad3020daf621d2e58e99ff321bf3160dce1141be326f090e38fe377c0456166677ad58a63f276ea1ae2f61c51c41031b06cfb4f941616a1aee9c8622cf8b2d5507619a5e297411d1435069e4e468815561038ec6a3a3f9f2ee772a735f9240351126683f9dc21a227293e5a3b5c1c07a0f3693c2abaf81348dc52726c915d7ce946d2ee96c6072f178e6f0af70d473f285bdedd40d47e4b012d36fcb440847bdfbe9b8890bd5355177515c614af2aa488c2892d491c918022b418a0894e1021600108201575668d326a2c88110615229e01e183b515995003dbf20316233422d842892d43478276e4b0a989c138f811010848799289530a4c4a4943447e763298ddc0691da0071c6ec8604c110a3cb180256478e2c448108f1cad0e8021c349d1094134b017036c88a201460c20081d5c40c0010ee00313a7221382dc786ab062f0996995a1617c645a2bf84ce01ae371f185e003018d989b305f073e2d3e293e06b09ef8a85a535e08de07b10e5c1ce0f4f8767c3abc1c330d5c197c334fd6baf1d9b86a3e9a58ec83c15c5fcb6379decb6bdc87cc4713ee65adee6bb329e4493cda7b7a343eae7c3c694b653e80c87cf490f52043d6838cd3a80dd31daa43e993565f4bb5a5db521376b9e68a1b69b574ef6a3dace81101590f07c87a288046a3b76b1fa7a33bf40422aa7302d1141004a3e06eaf233aee5292f5f0719dc19b7fef6a0ac95b7b8bf5b927dbf1821d5b5cbbf593946e7ca97e4cd21d9d1ff389f58e28761ce1e4fd5da9de6185bc2fdb01b503092da90dd31f6da969c6b65cb7a67fbb35d3803445feccfb75596dee0e24086c8cbb7fe0ee1a23039a4f0b8efcd0229af3399270e488d0112347828e143942e4c8902340477e8ef81c3922242464442848a8881011a1214240423f423e42478c0819316224c8481123448c0c310264e4c7888f9123414241468282828a0411091a120414f413e41374a48850112345828a142942a4c8902240457e8af8143942448888112241448a10214264081120223f447c881c192234c4c890a02145861019326408d0909f213e438e00090119010a022a02440468081010d00f900fd0911fa11f233f413f457e88fc0cf901faf9f9f1f939e223e463c427c8a7880f119f213e403e3f3e3e3e351febee3f5ca62306cf9dd7ca270c1d44dccb6a2bc56dabc3697b6d961c60b8ef9e8aea6de9676cfb1aad94b52487143a833a3f59dab32664e76c4a2ecb51baffc5549fd8567d36e9e3be347378a4fbc4b86d757497f77d6ad61cd5fda5955e7bfb1ac59b923fc5851a9e1a1d1d18280c353c352e50ca435da09452ea5e82bb931024870e1d5a030c773a24d3e00a0d1c20d320014e876ae8d0b67d49690d6de36e3653ba6d5fd21e37ee9a3b01c80927b8fb8e4e100da4641a1071a7dad27dd628d5f6719b0e69f29eb8466d98ee1353ab274710c1bd6688ee4ac9a71aedada69928431960e165adee339701039c0e915fa33bb27e2e6b53c63927e970ced8c8f6e458ab47848c0415213204e8c74796810bee0e823b67cb20892c0324afa59d4f06bf5f5ad59c8fed5aa7ea54420fe8034ee144f4ced5a440109f20355a44a7f844b19d3529dc1d0497cd48d71924710e8b14dc3f313e147ce517f40d31810057b8cb0c13b86719c095e33042e29e0d5adc83c8dc5964dc9df44a4002af8bbfd889462fb6db64b2a3b3db66ee456d41db5903d28413483c1c9cbf0addd5e893b6ca92146fbacddcef5dbd9a27767e82281111fdd1a1449496b0002696500206190ed9a96dbe2d69e170c100a8b85178a1130112cb8c03f418011050a0e08712442c2ec20cd961002276e812126179e9e14684901690cef8c0c352001540be40c26a82043d21b074b84252d2429524b4a8810396d9840e1541cd84327672b09aac405600358a20e2c600372c130a203b22052cf8e167c76bb128980fc49021f1c40acf1aac970e4cf42006049010e1a38ccf0513a85ab22489239064607c60d428c00b2238220924a22f3e086c114107a2a4a0c00103e8e22bc009b43ca00b213ef0190af3cd90650316c87001489417587c362c681605f880142b0554f12db9b206193bc6c8094f20c5f713812ea8889262c1145940f16d704606089013900501529af0d65040012c406404477610e108cf04255042000586d022a28008cf0a01900085941808a1c50101f09af852240a035f0630e5841d3c206c88620310510a80010b58f17450487d51c48e043c742f7852c6a0b172010a18a86ad89e9111b9040c4100317429945e102ebc30481f260f2d203d1c209a2c0f123f5600458a8f51c5940ed230a2d20101a47c0b005811ebc107133f02770a7029c10bedf0c5892d486ec40b46237ec254a14610f72b08601264841d04c84922e239311e103a8209165ce1783cca871880b270a105524c77212f4264e18206603a1ce0eec10c281cb13213001a2bee2c27ac5c8081266a3767c89009a300d9992c8840b2c619077420023ba09ca0c7f3947166881da4c082063f5dc1028c33314891821809c4cc870bbe3833b271c303c600805f71a38b334c4b8410c2105603f1813067c02fa4c8aa20a104135e589cc931040a27c80018176468a28a36d2e00017119afccf0f04a468c38b1c6265cc5081430715146d5421012433081fb614408b26da50c28c12a21657360c0138a20d1f90f0820208e892822e3e10d1c6f6220d5d08e64e0c1408401b2c0cc0a9861d7e886284263bb4818206a438432352019f282b6d8870434d74952fa4a0c30b6dd43ce0014e6c59e2cc5597cd8618649cc04c1025b8000c4628d9109300266c5070442ece20d98862044d9421c050538015296c6809820a01594c40040d0c408a8d1a304002a4203e3ec0812896b04165e54b182f3c9001144c4062e3a9014237354828d2801e88d8282206919a2c3b4868220544d8f8a1c5062d382004154294c1c3868760d7b001116818b2228435548065002dc0424b599870b0c6062c200b4050931a4e8ce4588301341065b09b02812c9edcac31800560c1f40312aba8dc99d61a2eb480881c1d0861e8b08135d6a806a0d2840f4e20a1810794b186d2075490a2f3d384000000630d1e1ec07ce0041619d620fa628dd9144e7e1023a402c14d176a9c7146c78035a690a20b2661d4e88209b38d1d5610200357b8bbb781851a1550810f2d5827f848f202c7bb91e3ee29f11e004fdcbdaa10dc3d2a37365e8d950e49d6dd8ecee7b016b50577746aa716c9a71a1f3782fbd62077cf8b4105aa444931256142129330458950c2267a4211ddd1b95f82b6b3a62bcd2ad7e7b57eca605bdc8716d17d6b0e2475062fbed54c0ad9dd7ed7bcb590f149a05dda5c5168885d88914519f7055d5c7561051a4da4d019e3d3106307164db497f18cd40d22a30fb0d0818ea0109cc8808dcb080da072c508600b1c5aa4704daa123c6520031d426ed8420408c8537ce0862859c0173cff9c58f0c1082c2486c8d0430a0e70e1a28a5617b10f6861061820ec2f84e0d021c406cb8b216840011479ce83098b0528a45106174908f1822bf402928aa90f3c6f85d1930ba3d4d08418338060c318b802eeba2201701b1758c0bd9f1e770fac5c390b0789bb1375878171f72f9fd3127707e2b2d7ef8a4b9bb8b3a490dc793fe3d1879e5044eb2e9f7c3aa4ab6f8c74bbb6b4354be93187b8db896fd2c64eb87dbbbf64b7cd5c92bbfb28ebb9c74afe1edfb44adaf6669184807e5e57a39b35c2586acca1bbf7688db992b6ac559769cc6115ee0eca5a562e255c59dc7774f25b9bddf749a63dfe548dc916779fe232978ebbe778c4dcc9cf656c2b6b8e223131217221ee2db8ac6535e61a041e017d7a488b7bb6be7874edee2bb8ac8553b3e5ceb856dd75b833b9b7662d16eb0377d720037799bbe370f71b7ee335ee4ef3d3a37fef3cd3ddc63d8acbbe2cae33f8241e9ff4018b803e3d4245744d88edc7c7a7c84fadd5808048233fb6a01e6c41fdbbe611dce5adededb3107ccb75048564bcc7c709d1f97513211fceb72d4d4d69bbd23270d947e45ed61d2efb6edc3d87cb3c337e427e7dadbb7b2ef3bac880bb6fe0328f8bbbdf2f2911fd1a25cb13e334dda1daea50ab27afa55f85739f45b3eab4bb03b97bd8dd7bb8ccb3e2ee3a83e3dde9d89f65ada2b49c9368f4567a31a5ede89835ebee3934b4cb533f148d925f96757477eafe91eecec3651ed519dc391bccfde519e7fcf4564afecde7febcefe7be3473966e5bf3a6b76bf7aeb98c6db46a71cf0877f7e13237dd1dc7658e0077d7e132cf81fcd2561bd5bf77354a6d985e6c77a5bb8c739fd319fc80b83b072e731d779fb9cc91dc5d874b5bfe2a4c77db8ed5aca3cee0f855a2ae662163d642465c9655c82ed75cb3a5bbbb58eede72f71b77fff689777549c63927e9c0c18b8d7bb9ba0a9da583072f9e0d9e0d2d2b573c6a432b87872c3c41d802994764137337b2b901f2dddc7c379fdfbc727e28c1e88b0a9693c4eea3af9c24762c8a42d8a2ad9a16adf9be1b2034f4c379a2a12d205660b0a11ecd8d1b7d406c80d88082118bd600b172c53362511b50306a51cf33fa3e572ce78a45bd1b2b38f40a35aaa13120566ca80dd4a8867a36395756608881456b72ae58566ca04637f4c361e106080c31b0284ece158b7e2ab0e8475938522c7ac533aaa13440ae784634d40688151b5030aaa1573c231bdabab9c981c1c64a2cca8d6e72607042ca867a14861afa513772bda867148621a34a62f7d124762dd9d3473d9c1f2ab4e847a59e58348b4d8882f08b18cbc8f75df9ae00b172a595e30415146c70820a0a1f0e15f7f2e485183ecaa23178b4455f70420a466be80b56ae502397d48bba680c2fd8408d5c392fc4409373851a7931bc682ce70a356251584e0c2f8fba7258d4690c2fefda8426a072d11675e5b8f7b06460794a6cfc034285e52a63566898c1bf96fb90f7001b970108954761395458214dabd56ad10f46d382516fb1682c463dd614cb6bb158ad298fbe98bcaa6fb3688cc658b11760b19ccd5af2609445f5a2c9a17ac55a39acd847a95e3954582e20545e083fea9f8b8b8d7b1eb5b159f2c298d7aafae8ab05840a8f90ea453dacc9f98050e111be72366ba945bd1c2a2f8436fea2b49543c565e1472d60f3f2c2168fab35d50a3f1a1a63f1b43c9d100ad34e080b127a3953bb15b6bcec85ad1faf0ff6234659ad50e7d3f13ceadac1c6c5dca045cc0d59c258e8626ec022e686ab156cfc1383c395bbf77d1fadbac9107e4a3c02e85cc12274313774114ec56ee012c670e012d2d0c5e08025b461dd509d2fe845c314c85e2c1bd6abf55118fd5ad45d406230186dd11b9793879fd24761d405c4719876629ea713b276f06ebc1cd88bd250d7eb870bc80f176db95c9ed2473d203098f7c15a3f5a2c17cb45dd45ab6e328431263f5ed4457542578e4e063eeff5c211b26809a18b99614ce872d947bd250f3f0f091b0f612a168bb1aaf88260316a138bc5621487c973c56e5c39add78b7a30188d81f1c2781e8e126f8c8bc9abf13caf2627067bbdbc7079168595096134067b167589b1014ce8a2af5906b3190d81030d70943c2f212c67eac6867ace940d102b4e4cb9e8476da0464e50c97094782f1c384c2efaca41933305fb4224ac1b1e21f8102d49d14a2b2b5888d8e2416193e346c78773c3e58626b6c18d8b662a46bf187dd18f06478927c686319ec714a330ea38321a202e1c252ceaca69c5be16cbf3cf0b4e1a357cb1e20b0d3e13534317313570095d4c0d5ac2d0c5d44080f015ba981a02400418a177117a13a1531716214b0c00a40859744a86d087aa5a3f58493f583940dc71dc8128f1426fb764089d3a2b86d3d4f4ca71ea1e2bc75fd4f34212c8762b7ce134b9a8e7fc50a2c3d3daad90f582e134794d5332fc78b5743ceaa23fbc97c7137af4a32e04d888a1a10930369e4d4eeb53924149cc0c5d4231575f844e39f8826ecc842e66060fc173a8a8938d7f343a1f4d924dce0f2fe7bbb1a11eb5a10102b3f9be1f361ecdf7ed5648437f50f1c2170d4d8c26a7ca0b5b542f23ce12c11a5084308fb63cd60bf6e3f57d30fa03465f300a63bda86034d4806caad5f2a1186d51970fd1d0168d51bd680da5014205070df5804cd5e4d0e478f8c1e82bf6a2b0166d8991227c515713a187ae18a42185982b65c259e862ae74117a218bd2b8e8d4eb454303a32f58eb86ee160d8501a179b96e62af168db16c5855ad10a7c9455f3f94e878ac1775fd70fd70d1dcbcc22e642fea1427e9c5f4852f5a75932164518ffe88519d1dcb51a213bee82b4787e70b7ad1cfcb71b97ebca8ff7851efe57af1788fe38829c0c686e70b9afa280f1161ceecb04648435b3ec572d5d05016cd6ee1d01bcac249b2c954708455ad1046772b6cb1583f582c5ac362b1680b674a8632de7393f34389ce548bfe50a213c6a63ecaa2353494a6a99553e5fd88e5e8c810d2d8140df5bc900432a71e75fac3a32ffac3a33a1eebc5fac162f1b83ad08614a1dbf0fc68d1a956e83f5a394a74429db0153a8bfef0688bb280fcf0280f0c4605a31e8de5b0a8a63c8f7a0e152f74e55079947e393cac1c6870b0945e34bcc0c6c1518ab9dfd01f3834b406070815af898685c3a4c5ca51f2a29e84e7eb800d8b8d31a10d8db5a82b8517885118fd581fbdd1f1947ed0d45098bbd31b2a4db19c2aea3955ac1c25cf7fd0d018a5c951a213c672743e1d8fbe603954ae9cd68781d6174475e3439f8bbaeb9533e539931665d123dc5b32b83caf015642166d0520fca84d19218bb6c2a8f145f8511bb7c95ccc95172a18659285fa9361ca45b717e6fc60e550e550d9d00fc8940d7db570986ce8476d5c5470849aba987cd4c60504489557e5c568121b1aa755add0a35470849e476b5839555e489343d5a2db0b5f392daa8f6e2f74e550f1c2580b896f515818ff168da9514518a32f8a83e52c6739cb75dc73a67e28d10979c258c8ea808c8a177e94c5a236ad1665b5e8cb6bbd7098e030bd28ac458575c362e97c39555e52cb63da093dfa01997ab5688cbe70583854aabc10e6a254aeed9109a306143ead8f8310c2cf693802d994cbe3093fea29a9f22a6083c37ba8a723a422a422a4c2c6c35172d7d1b9a12ab891951a6a7069c1c2da8925b16e5c382ab870f09d9b16cb75e306c5c9a1e29d09a590e1a0373e9c22f9582c168bde8001c17173837303c70d1c36de0d20afd07192bc288c5ef12117bdf9207613bbc9b9a12e2eac1a16a5b981b97080511b188cd6c0288debe626278b0fc1428f4ec5804cf108a73e88c9a65c43842f336cb4178653248553789e37c5f77db02f9ca24c19162bc98b95144ed172b55a38495a2ed62b9c42e6d1245f3805ec4b8a019105030d20234b2801d767c38d03b008a762b15bac05de8d2e3e9818568c032d1b0bb824107ad4e645068c8cabd0a3319a3542cf8731b68c71c4171a2e504516686841430068f080460d679c39238d33c638038c33be38838bd0c38cd1c519599cf1e50c2aba8431d344183347781bc062083301308325f43066aec2291d34ca80b2097fd0c0151e188383107888940981870851181c84c0b3451834aa00a3d584b7a08c8b09329e96d712686c117a9830685411060d2ac2a03101cf8a2f3484584220ca8040190a28434be861cac052860e6500808c36c840838c31c668e20c2e6768398388d0c39cb1c319339861c68c32c298510233c29801810098b1c58c2c0230030718186658998a9571461965841ea68c2fcae8a28c0e90a1a58c2fa111634891c615cf4c99cfcc9810b0c29071258c990e782d33aa20234be8d11b335f72fc2a4c1a4d84492301a18731e38b30691011260d1f2e504516a10f610142027cf4bbf2837b9e47433deac2e2c3e8d5fa6eb0a8d7927dae580b16a3af98eb86d660436b28ec864ae1e4b8b848d9e4d0c4983ca3308bccc5a5a68bf7b8ae70e9c2a58bd0a35d6868c68c202422242224824be85d3c16b571cfe805248bc7fac22cb2cf03570ecd17ef69b162748618e572856b0c920fc8a672782dcff321980b890a64532e2fc28f8641f0e0c183078f315f19366e4496634c180bb9b84c00a32d586b02322f6cade06573e541e8e5e4f852b346161797355c61b870e1c2850b17562bc798a91ee19725ec4186838b07612b27c71717c8a66caebe6409736820fc707099c1e6ea8b0e2e1cf0127e948cb05566ca861e6db572a6cc295ccbfb72a6a47c3e9d9007590df51f521f4e92242c1c2cae63433fea22e3867e30dfe2aba14464df940c07c8944c0b2bb4c999920de1fa12d6009922e232c3e5cbebe6a5c1cbf3a0178d852ef73c845768469645cb27d302644bf851282c23322eac9d8fca86700d88083ffac9ba841fc5d2ca91656185217c3a5ed883ccc3e165069947a76cb078a159c106210f396c6ee8946b8b67c6f36c68c228645e6823739961c560af1b33496c9a88c95a2ed7179b26bea09a9cef8beb8beb4bf8d11b59cb55c4102d1eb495a3c30b8f180f322fa441e651306453365cb4841f957589c55a74ea83d035868b0d17598e0e32def3d1503646861b2fbb8e178f5014a409d9f649a3957e8dfcbfeea07ebb6d596ffe6df5d55651f23536ad9e7ec67b6b90fcd7bbb2ac58ef9eca862bfd4dc97f0dc3f8243ef29c905528c84f84ba547faaccdde90944940ed16874eb6ad21f6fad226f1d97d85d9e4d45454227d1f84e886833e4d0824cbc72f7135c269aa1424dd0387f157abb76575e4cc9fa25c59bea6d6bd4da6ca7cde2f478040c0287f4f4ecb6cdfa62533f546e845232216fb8d3d8e9a33e375addea8ebad92627eede25021070f71f273e4e6e552df438ab15637d2cd8f782d9e890fcdc6fa6dc6f26bded9323f27f5f262962ec33e7242a264952590a165d75b42ceb88e43229486451ca545ceeb7a55fdeaed53474f71e9745e9e2eea03e6bb22855dc1d5f1268c819e504776fe23216c8385896afd395f2dcaedd3a5b1bb5614ac15d599e364a5a92eaa7364c71e3ae462c540139d9f7ed78c31f27fb7e6e574df175fdf2a156c840d04fcfb5f5f45c9b98c5155a4ed221f712e31af9393c1611093a898a88c67792b1cda688f357b9f8eeac6b594d5d735235a3a0e8c86f6d74df6a73add2bbaa2bc3bf58f74e3f66ac74bb76cc5849db3e3f65bc9d60db65aa7b0cf5ad6654d4ed5aaabab5f824e6240a07b7fedbedd474e36e3647dfdced4a2f7ddce679dcce9db75c719b3ed5bd5394931b9a98712feb88b369c78722a36ed7eafa797ca45cffda2595bc9fdff6b92a9f47ee3bd18a481013f9565629e33d561b896d7ed3fcadc9fba5fd31635cdacad2d6f23fa9c09ffe5673f6b349967849ca848dcba8934a359990d72a21afa58a1ae3ee4d2e8b0a421685828353a46c5c6a1ef25aaa285240fd385d4b4d49f29fdcf7ab9e6a8b93a2e0c6a5a69fb39bee8cd666c737750f792d950e792ba589af696f9a154769e4b554347abfcadee893bf33363f537a2bd5967e7e9c141359147d73b7a97e9b0d4305b12b739f9fc82f4bab04a7eb8e229fbcd84897183fd5ce283257dd4361fc445e5cbb4d2ed38fd58caab2fabeed91ae6d2a317efa2aff59490527b76b77386ffd48f74d26bfeb2ecb50573389dbf689d65f9a397ca4f597e4eb126353cce19bff29676b79f494005bd519ccb91c91a1a19ccbe5724fee4e87444d55df74772598ac706f364a34cd3a3474e4a74811a0ac8786fedaf262315777450a2a02f49f71524a828a00555c54501120ac937aaa5a1a010dd155a89f21ba0ae5334457a18e00e92a941090ae421901d255a820205d852a02a4ab50448074156a0890ae420101e92a940f90ae421df9d15528a11f5d8532f2a3ab50413fba0a55e44757a188fce82ad4901f5d8502fad155a89f1f5d853aa2ab5042ba0a654457a1827415aa88ae4211d155a821ba0a05a4ab503fba0ae5a3ab507fb153d39726284d459e7f6fab93fa5bcd31e5bf5dab64de9e4a5b73491b5ba8da3f29ebed97ec6a696a8ba4878676db8a64f95669b7976c877ad26f75efb4e487db30cd9df7298d461f273534544df2d67cdbf7ab92644ac038487eeed49f95180192afcf6aeefb399f475bdb25e17e2d2a8102926f4bd3acf4fed7a8ae38ba5fd3ddb619e3f659a9ee9d524801d3062e63a271d9521a2e5b0ac3654b645cb6d485cb96c0b86ca90a972d7571d9d2167787c95e371b68c8997f57976027f271637da86d737609f93a5c96e1c64e1b63a88b6dc55925b9bb0c52ee1ec368f7e770dbc2504585a5b4c64e50f973a7f617aebdd9cc84ac46e64985f11277cff9719b89bbbbe0ee555abbf2247113f95fd62a79b11359e2a5fb557056daaf7578b4f1bdf52877e6ecb54d3a5cbed1d3aebc4c34794f2577d7552d89e0eeb2a4292e4b6ae2b2a4251ebbf8887cf29ed848efbfe52a457eb6fa9176b736612ca5c34b3096faadcfbc6f13f29e182ae331ea3776526f937d4f7c94ff5efbe476717ef2556c5466b21befdff2e792a8c65a2bcbaad484fc7bb351d756dcd165228af9495b85b3299e660e1fb9e7af2a7194ce19376127a9b2ac476789a3c8cf78476127aa112f3977db96b666757da5edaea9c6c77dbeb8764695183f7d59aba5ad55e16db2314e9bf546b9bb4ed2d8741a1aca7f6dd3f7dcb3e775c5993d7697674ec86edb5c4d9c9f859dd1c556db2a8bd4c4dd3315a40b580515213204c8ea877caa112f3972ff8dab86866ed76e5c65ab2e1ec5dfd8c95fec8484e65caea727e772e2cef6bfb3fdd7644752ee0e44ebcf2459e9925412c59bee5ec968cbdaf94457504a4a32a23b7f95bb0b01fd9cfa564ba59ab755525986a3b64dff4afacddd1e1ad2fa625d1fca8809f29e586963a727b1d3ad1a7dae465da68d9df2dbaafa4b1b3b695b0e0d6d6d4b51df6a4d34b55d1276e1e6eb9e1c26af843c84db29de54937fbb15379a98fe79edbe78b479d313aff0832cecc0835cfd98d416b7296eb4381de5b9d5d246a5c8d7273df10afe024e6c0149e940a00ff8539564c4044a2a8ae6b9b7c5d319fc1ace5bff803e2050cfb565fedccdcd506081eb0c5ab38abf6b95cda62802dd7099cf5ddf4669fa9e6215154d9f94fcb256efd3afd1adcf1c256fa5a5cd3dbba772772a779f72778b734111180722e5d484c99188e4d4840994a8242a098f8e9294d05b719be617c97be24c4322e00fe8d34355c7f1a9ae62ded5d50c573557ee5757fe5d39ebca71b8721d7470af711a77bfe29ec395d35c5dcd7075a5c395fbd5550e573478b7b7fde770d4934f46af3da934f1490b4fa63c91f224ca13169eacf004ca13d91014bb9a73a51953bdb3f1a51953f27bac7c286ee39a8ed7201bf261c88aee4a79e850fe3d56abc70d49b95dabb5cd59db67935af91c11f222223f3cdc5dc8ce1127ee0e4449a025d01f5af5f93511d0a7e7c9fcbaa73473d6ca8705991018772070c80fe8d3737538d770bae2849aa014a7eb924c08018e6d97e9c99a6f6693adeb12bbed65aa62cb7aad52d2ae34cd5057dc139468eacfd5bbc76ae6f0d1d0d0f8241eab80869c45627ed3aae6a8465cd6725937dea255cd59d5dc68f5b5795bbdf8bad68a80869c44563587af542ea805f99ff4d010d5884b230f0a591129f6f839e3916e7c35a5364ba9b6f47152d4049a98b14823df4867506f9bb365eeb7de494579fe279b2859111e6e02912dbef55f11679b38bea9858c5f45a407b27cbb42fe2a26e4df263af7b7aaf53769fd23ce4f4a643522bf2abf7ea8ffac346a9b1b1ad2f7a9f01e1ad2e7ae3beac75bcb6ab4357ec2b6cbb4cb7857f2d6a6b2e63799943597b113a977f5a9887cd3b479eba19cae3a22eca47f050f0040de8f77c373b97b76199097fcdb8ab9fa79ebf2353d818892365756d9cf01dc41100cb2bfe4d9f5f38d6eec44414dcb5acb732ceb78bb96bc27fd5ce93f192abfea4bb1ea5bf31ec2e98afb49e2ee3b639ca6186f9cae383af43a7fd567aa3388d315c7e4ee4b2dbc45f314856cbbc9c556e77772bb96c4e34ddad7e227bccd5d3e72f724493f5787ee2e020b2e130286bb2bb97bcb3dc9dd6f7553ab33b8afc5e610d008e8d3f333be769d41216011a09e1e9caeb87b0e0dfdad66bcf5d0d0e7ecbe6716e2230414e2c3dd6974884677a5bfebd694fc6d9e39e32392697f59d6a79db1699e5afc5ccd367727ee8e44c8b69bdcaebdb6e63e9375d7dfbb1a0aeeee15b9df26b72a95bf963b9d6e55ea49dc74ab52f9c9fa50f9ab9830b95d9b9fcc4cf647fdaea32dcd13697f94bb9fd0b2f8eaf0a5ba4d48cba489b44cca3ada8b6f1d2f767277a25bddbfedb53613dc7de84bf1ff32297dce4afdae48ee7ec4dd5de862bbadc6a6bb1be17127afa5ca38e724770f2ae29fc3517fb1935408c49b22444d103aa31411897a579ffe6da2de5553eb5a1ee1c65d4d6d91b4aee5f864e36ef675ee0d70f7eab212d8204b7bfafc80403dd8766dcf9775d4e4df9bd51ab7eb5301461881fad01380d0fdda66c3ae2257cf0823d0138a2879df897bcb022d2890b8b77a68a5d0817b8bc95b4bde324146c2ce580b919100c599be1d5684c0c7fd5bc1dd4597ed98b0ebcd56d5775db1ef89477a4211bd5f8adbf6a5489618c6c1d6243de184316b2d3a2ff72be43fef9a107db1dde397251e8500fdfc0c39528bd4b715111a420ef923458a000d013a1254a448cde783aa8d14f209fa79202121e3d66716b28214d351f8141e51226a455a907cf27fb47a9d7fe32afaf9d43729081241b4d0212b1f9d5b957ac1dda3d024a9d00913d4539027f728f4884989e928e929aa470a4a92941393a3204582f090bfc7337f95dd3667b33982902cc88d209ebbebd02951a8131326a9f08869c9d353f8d46464b575f2392b457e155bd6fcf7937cce4a1d4935291232e127ad13abdf5fbed4d368f3e74e27a9a4a8a423a7a4262a2445ddaecd3b4a4849aa095292540895d4d4c429694998040595c4a4c424e59484c444a58e92523062b2644913a724a92326499c98a0a4a2a814931154529224292726a73069091326463b23f838ab2a881f637421e22d27b003c44066715808929c314595907b00c035423ce101879da185c905f0c719879d3973e6cc1930dc35001d8c3c61b3807b14896b8550c2bf9c094fa4b0d371d70058171832421177b1b004d20b9aa8fb0e8c041d4a2872a7c2e28a266178e1de0564c0d280971587f560220345acc1c45b3415088058812a87d9f0058b94189cf1970a36f5842f67dc61f5db5240f1cf054be0930f1c71676389ab29485ae0a241599c0002671c762403a316a209b86b0546d03c2f3bee6dd13141c7a580b39aaed06005ab04f8872467000ce4cef84bef6005929dce595a2079615d4139ebe9a98a041254f157010230420360b0827f5d80965a6b74e0b01a0480c4d59203384c8c1688a0c00dcd5d8c02d6f0818701fcf523480a37b470712f734573580ee62d6f9de0394c8b47ba661ecc7178ae0dbc1b5e0ca865c45901687900fb6231578be579bee303fd734f85160a9ec34c70398e97e79ee7b95c443c8ff52d791eccfb3c8ff5aaf2799f07fb3680f2bc9707f3cfc30159dfeba55343bdd6f7b5b0782dcffb6a3c333e8fc65d5eeb63bde74d7d9ef7c59a7c3f3eef7bb53ecf059fe7bd3e4f056f87e7b1bed8055c2cd80d6f03cfd311637906f03eeff579dec712bdaf554343e4bbf18a629e2b04d6091eecfb5a3fac9aeff3767004792eb47e6c94584f9fb7fc5380d762e9b45c9fc7729700bc1378feb94c2673cfbd96f7796178b18f04cffb5cdfc7f2bc219e102fe6dd7cdff7bd8ebc20dfd7fa3c1f1668d32336828793818f4f08cff5f5f05a1ecbf3efe9a3355ecb3ffb724af3786039900b788e24031fcb7b792d9887e3b1b27c5f6c88e509b1bcef6bd1ef8646c773791ecca7f5f3818ff7d5bc621fccf386bcef1b01ebe5d17c2d569597f39d9ec7eaf1686c3e2f06f33e249f079f075f072c67b987c37b7d9f87d392b15a5f8feffbbc97d7b27934217836aecf7379378cfcf8986036349f578bddc03e4f052fe679accf6b794b5e07df918f83cfe6837d2e8fe57dde67f3c15a1ecbc5f23c231ecbd3f168bc1bcff34cf03cf86a58302fd6f23ecf1bf2bcd7065f0eaff579ae9677e4b3f1589f071e8bf57dadafe51df93ecfc757e3d178b1d6e779de90d7c157036379ad58cbf33c23d4e341428c885582cb6379345e8b874743336413e587071e082deffb5e1fec3d990e1f9b25cffbbccff3bc1e87b9e92cc8e09559210ca72b144106cc0a40be00e3493dc1029a98608c4b01e1c2a38ae8c047552d1caa08290c0005043351a188a9324f95089225457840c652e5c0e748113c841ca937983062029c108c00a9f1824ce0b111443b738020da868334353ce8a16df978c6208179a80f092568e111e3031abdf980eec8c0b56830c569ae1f9cb600e0ceca8fdb980825a27adb9b25f175af0977f7c06594cccdd684e4ceeb5ea35ddcdd85538acee09b75d42fc5fd49464d9dc1ba2b29e2e060fd604d71d5e2e1aab5e44502f56066cc2043e2cae5ba818dc0c50cad227e5a3b6e8e60e295c3556b09cd06351cf000c015cd0a2d16581ed8ecd74d4c2926f4aa6199c0a3c6b581ab5897ab1c5266a031c232c018375e5cb9ce5cb96e7c80e0ea66e74c7145c3e3c60733c125c415802b3a6c7a0841436b872b1c40700061f5cc84c478ccced0e02a2126042362e16011c58eb86235fd0879d5bc9ab862d9bc7cb4786c7e585eeba6c553a3e42a01b6c2cbc7abe6357593e326070d0f9a0d602bb0d8a0e1e583c58506d7972b11a65a392a8ad0416be806c76bd6f2583daca3d6d3cd8ed7077b02fb017372e9b8e1bd6c58aed60d8bc5fa5830568c4553c3418b056b02cb00c753cd0cf682792c588b484b48cb8bf560fd9881e603171357379a9861f66afd8821d1d0f282861c91fa99365620822d3a0046035fce5bd40f58928c5038c108be62842124880c470c168505264e67b208e3810f7cf0c9220412027811022daca022024f2421041c6100e7f64167336050a60b316130f000196268410a0b5098382551fac0831d1b483101199e58400c30881d7080ef0737bc280195dcd59936d038434a941d1bcc426045062a40450420c0001f7ac0416c6185274c9c98b4c822031ca04096a51170a1851518a0620a248ed0a10600c0a04c08c4503185140db072f52453d20ca74c0abef04203189840145028f1030f4f8a2d4889f28429c984a19d198e165968c00005f8c1ca932da4c0a4946482a7e00b2db2b822031388020a062801440f56a6a4c0748209434688fcec64306bf999147c51822b3490010c4c200a062801c40f3df060e504e21429280801d7506389121c3748c001961d7480f2c4c7081e74d85939417386d5c6c7864b8d2f0631265a4b7c4a7c497840df0fcbc7036d7a5825b0e8061f7c1c783f603e583d3c1ead1dde06341a6490014bd6c271734386e3e3a6870d0735331a58ec05fb5e2f978be5f9cb4a8d081bb882d1c0685a376241301a560737523338e5c4745e3531a1d60d0eaf75f3125b3a160e6bd6da020004b87addf860342d1e9c0e84167055e3e4866cf1dc98e123f2c3d5a4e5bd882c7075c212a41900be564d6bc90e1a572aa08104303378aea1d9074866f85a3e583da607a4c8558298abd7eb83272b3a7018d5c04a32c30d573d689edce4b8c95145498719d335675c116d9a24342064301a168e8baa85c30e33c45a375e1d783886ccb0022368480081959819216e7c362e2433d89196928fc285060d5c3a354a3523bca4b448801da141024524a161091f3690f958c11997e450c595cd692b0000708070784e38609900eb1134430decc8ab26768365842909ab831aa533ae6a604c3851b1a51f494a35344b3751249104ae76b478826a5e431ae0bc6a6c92725a40e2aa26b6e4414d872b174be6f25e2abc6a5c26bc482832b2396982c4965e35b01e38483421b49c6876e4e060041f1b90102b4109d40833d4c440d8109c2146989e60372d980fd7102b88e6a615842281d1c06a5a425c4a5a42483cd70f1610d7063e34b1917524c9041eb19a0d688ccc70e4644324a6d30aa115c26b892b126eb4905c25b83ca009a1c5018e1f5607345c81423c968dd5d362b95cc869218829f07d620160bc7079628923729001062b4d65fb91d6821416a0386912f5b42485a521a1213a238800026d65000367c400630528148990e3a3074c0b07b048020915925018ea40c78d4d78f3d4100c141de4cb9add607c36be144cac865a8cd959e14c1e6981c56f5fda2a9bcddfb5aca3fe232d90807a88cbb4a0f9afae9a1aa7eb5259d623ab2f0afa39b3b8ca028a67e193858c0364c02934d20b072c074c92ac1c409213f7f8539f39e0239fe6ef7afbf2c9b27ec615f114f1149966a86b0d110fc9b4b3fd1b0d0d49511e6d452c7e747fc5fd1aa7ebd2d09014b65d2630eeb427f13844dbc0167a996ce08a5975e10668baeac20d2071df4028bbe28b839fc3a3aeb827ed68cfa82b76ae5efa38a92b9eaef07fddfe1a7d5d3f6b60cb2d9f660e679cbf4acfd54009927fdfc8651a90c9be8871079d644c69651d9340dd6fabdfbd12bd7baadaa98b764f55b47b25b9dff6493c7e31fd0b922f32700a4def13efd764dc0a2fbe5f5b91c5c12934fdb76a8a667d9cb85f77e0322b4cb12c2d95154aa872cd7d2e9232f14eaabb22d55d496d7b285d73d2d09054d10ee5011af2243eaaed6a13c9e494426e84a2ab59dc768abc96ea56ddcef85af1da5c59339eaa3911db2ed3e7ead53827ee2aeaafb237f25a256feeb6f854a3dd5fc56ad1aae6c8ffb27662a4dc68a5ad6a4e29634b24e8bcd832118def644815516e843234045455c5ce1dccaf4fb2e676796a59152394baea6c962c8b8686a430796a912cf105c660f2d434bc40974a9a27262f60e554f89ca23b3a53748d720125e4195523ef47e9fe5a61a3b2ac639114918d89795261bc84c4381d19700a4d57d1025dee2962f2d416c8024ea1ed9e4adcaf2d6085c9535b80861528632bf95b56012dee0e9eb50a24f11c66bc4d9b47fd48dbea9df25f1d93dd2b191a922a2a2a9222ca58892889c80a1bb97b082ef3b2c5bd98322f480e4ea1fdedd6d224f39345f9a132d2d67fb3e43e4d9cae4b4544e33bd1f9c9fa4bd87699b6c6e6141fa0294043ac9ebc53a461f52493a1a1ad7fd752ffdb84cedbb5bb6a6e8dc7229289b4626e849271ce8fd375293742216d5011a0259cae380a3899f15da5f0f252d820850fa92b8e4e408d092431812777f062f3a4e4efb152f2d61ade3c3cf9772de904645e3f4345d16587961ba190f7a368bf6d5827bf8eea7fa5285a8822b6b5cdd910dc96929ff1c5b81327812fdcefeb50025048000012e0c197263e55dd344ad62e6174c9e260d311947c628ab7cde14d29597134ece2a44bcc1dcc915211c0c2ac79d3fdb208ec22e0e3eee0cedf8c6b3a745b0ade100263408008082c3948dba13c24138f0e8d5655dc499a00011d5e1cc46dabab9f1fa0c30382a018e3e0e7ecce98f2d4fc557f6fd7d65dcd41f1e4ee4c5ce680329cbcef00313207ece0a0d6a736f1d6f4a4f2f99fc81c20d4801334004b79eafd37f2b4aada5a5aa5edad2a34008a7bd311147a2bb5e1a406f09031c0020cc00cf880011fc8b860c1c5caefd728c6b71ace26d5f67ed58d96f5bcb58982e49b26cee44e9f38ffed567287d6cfb74bab0ea8afad393bd6d224bf8a0b757730d7727c1237dedaf3f9e80932e48ff471524f68b927b6d1afd55d37ce7da6e113a683f977696d4f2c81f4b35e4019f0628a498a7574b7539655875e1d5e40976b73f9f7933a88d4025e7077506a01424e9071076db6b33656936aac25ad549b1597ff09bc96ee60f2d4da525d754e78019d4842e6c493a578dfaedd27ced486e9aeea28be25e5f9b2567163fd7c4faaabae093337fbf9abb0be55d68416f7fd9fcb7893b69aff38a92670e0eed61cc578e7bf3add041277908932fac46d4bdab23e4e8a892f3226acc09da62328d48649ad3fd7b6d5d9f88e54c6848fbba55fa3d1a4644b8c01c9df9fcd2f6b9526b5c40c5b677dd6f16b947c7a4ffa3829f2c9a2a2b2ac474554572a4544941ba1d89c5d221615ede810e54628a255cded72b5a3b5fdfd5a91d64043cedc6f2bfedbacb0d1d64fe64628454456d848a6840e0f97291103a7d0645bc06cd9b20577cf2d3e0e4ea17dcde651d7b6c8c8fb7a4c7e5b125c3c375ac992b802a7d074f95b243f09289f42bbd8eafba63eb5f863c6b6a1215a14fa1f959f6ac4a510d0cfb9ef8973b5485bd526cab32304f473521e1da2f19d8c45f96dfe938a58b42374521ea15387e88a5fdbd51cf9fa4b8c6ba2b6fbc49fb39b7c2754232e8d7665c162309a22e16c0642083a20384d11978baa34a95c22009901f971ff51c1dd7fdc4510c1e5342e1a9c1916387777970f2aa044e9254439d0dc63b0978b86f579beef5791163bc95f96f5a82ceb91161504b183115218d1c50807dc8cc88c38c200089841004600c0852096ec9c116f440b412c1901c5ddadcc5cc6591b7ec88216c1c5292de39c5fdca749837259114dfc2fded49e9447a9080d645a5ae0645977b5d18b2f0ffd1c8ec2e4a96ba6c5e91cdefad4e56c2d472b9ccd9bd535912c2d4ea4dabadab0cea499cb386c13f5eb2cea3a8a358bfbb5aee419f5b56a64e6ead69fb3524c3ad44b4c724cbb7ceafa59ca0994deda96bf2dee8976d2e466b57ebbef898dc8d2e28ea8ead6b7c9d655e988fc5c71514c660ec9cce5256cabb93e69245d737d0a6bae4fb942e98dcb287d2b2e491dce47b911caef0ab55feb30e79a6cf59760f28c7ae209776f015e134cb87b4b784a6c71f79240c2dd538077c45058fe78ebd18d3c53b85d4b75f357e124f96d173bed6ef8e64e6a6785f3d3107e5d9fa49820d15d7d3a732605698066146007e75908e1c5871388b1854b600020f0f2c3147524ba04d1850803332e000c9015041bbab80d3a4431f2624217b722c101ba486203342f83f802041398808f571cd4b03a6ba83f41807863012ca0b81304b8e080002620c2952020c4160207c0380a356011440e2746f023322b57f850012d3ee4080aaa87cc8a83381ed4a005b5f94e0b3ed00083fab9083b5c94a10282e4406a06a0112922c73b60e3011d48010957ee030621b4400d99e73c86886145491649b88e295a45bcb8c1876b7005842096c830c5673a5ce181209c94c0715c801e8000b52e57377450d0c50688b4f84d17294334f002832b9bdc120a4526c16b8ebeb822c304059c464802500738411157b1a5081c416409dc158c0a0735d8e064057f3d51a60009297af0977791982ac0e4aea740a2788103496b0b08eca042f383b75800c28726640802098b05e1991b7ab0171600aa8c305778e28aa5d33282012098f1f289290112471be470f5ed90c1034c2a332f1f9315b9032531d0f2dd3822840d4b977a5b4860021b8461858fb765892412c8321be3c10083130b50a38b27cf09141518401121a83784044922d0008a325e0e2c04e8a1e5c0e266320f4ad6e0c0957be1d3346e0294f12f32ec114050228b43d141090ac01ee878111cb0bb870ce0fc07164ed0e2a668c96908824814379a00e3e7122b96c86081256ec511ec94e080166f4189a72f9880e2ca9bd00c61ad9800852f21a5904086e98ea4254783528a1dfc04246a3eb013c47523158718722f04f98f171d170d57ca380f039ec2e4548185eb8cd0811910b270e021cc7a50b8a2e28a539b1516352419c13bf8318409333488c27d88b0446b054398c077c0108215041c6980ebe891450384e410c4332803012588aa40037c0653a2b2a10726c7b144c78fd404ca380e05c6a88247931bbf819202ee220ad06d3668238a1e1890c069ce987294030531f018191a986007213e8fd58c30822953ece03021323fb02c6186bf5e10a329881dc07057980c30104601d65d4435e70520d4e02d287e0460881c2e78eb0897081411840a676d200268fce0a53a0bf702dc112cb0c259321007890ea8e09f971d03177af4cf4a0c19cf04a27f4232482de0e7c6bd361c6064822e0770ef0a2b7609a404b947448e1a0ea80206f732d1fe028318f796643985e8c4c03d12be78f0c10674dcbbb981c05665873b0c3c10c1f5c200dcb72080124b5c4000ee16108090323b27ee0bc0828b27988c7137008c2cd3c1903b0fb2aa145a1eb8c7208198030e00833b151094c06b2dc0dd86c4aaea82e31ea504b50f062b7087ba6185303e9eb8a700022e84045871371a02044042bce06e42187393f0722f424512100ab870f759b2586820c8bd04110361e436dc4738e30b129460b983e0568c22c8c2fd032a55e0d0460eee1ca040231a0a807b0f9a10326a74e0bec106a6982141e39ea30a15da081fb867f0554865b47097d9b0c4088440c3fdc6163b70e1840bdc719cecac6085e96ea3c68d13c08ce05e73811368051ee04ec3c4073d94b0847bec8917a8a48001ee300edc2136700177d82705e4a105ee2f2562d49c38dc5d5b7042b0c3e7eeca2166cc0a8cdc5b580460458c16f7560f2b8c18000b77d61338b10d90706731e1c9a28222dcbf346c68e8a1c7fd63a2090d040085fb6723e19b3670ff8248400a006471f7c4300294e173f728500480d001ee9e0f3170fa02e6eedd9e886e43b87b465facacd1c5dd0382860f458edcbdd60b0dd04101776f81c743dce1ee1e08f272c50fee2e4508b22849b9bb124730d143cbddb37c8e0a15dcfdca0a665f6aee5e458d323060e5eed7851d02a071f7110524369872f7157472784289bb3ff1b8d9c207774f42c62e08ebee488c0853c50bdc7d480604169cbb13d97932868abb8323a8c04801772781874f130db8bb08608878e1cadd819899fa401477f7c0cad25490bbff98a2a999c1dd7968c101490feebec10741981370770dbcb042092e6a209385bbcb68b828c00adcfd062e972374f71b18600d68e1ee365a80282273f71a2a65f4e0e2ee34351f3fc8b87b2c878218da70771810576140c0dd5f1c28857070f71707b42e94dcdd0543931684dcbd15c699e487bbb7ee0f2f4631c8428a20868808e2eeac20902900eefe9d4008066c71f74f88ab0390e1ee9f94cd171ef4b3c78a4d27f16bb5d603081e1c4a24b8bb03e181bb3b103d40204692104840870135dc9db58209c584981c67c870f7d616239478d260025f8cb8bb870210519860c1c10052b8bba7830b3ed8c92e2226dcddb3004b860fa410a60aceddbf1b40c88100148870c506dc9d65c60b5a6840131818e205eeeed10e70a48912102d90e0ee1f142d3cc0858717627e707716979b1ca47e3cd1022677779d902b3242888fe70977ff9624a190021d82e88086bbb374f800260c21b248e10177f7cc245c804002a088c1c3dd3d072ca0e6385220b1c3dd5f041080192fcc501b48dcfdfbc28c1f5e584308141871f7560168b021701b98f2c2f7dfad7ff7884284e0d7d514d2d404d268bb9253687a68c8567e142d0a7ddd84823ce45b4aa3d5fd39fab89df111583ba39eee8aa37dc647d63e0593c0b2ac47e03ecd6be9e730ed5f094bd1fe6d655947905696f588f6361eaa8235c3a77f9b88b728fedbb0ed5af17eb9ad4e6b864ea0ae22dea24dd4fd15f11669d486cb5a654f2aa4154b8c4d11ccd8f6398cd35933fcf16227106f11a4914c21ede23b566b8651229871a51b9f54a8b66688b40b33ad4708cd9a7597bf0a8fda926fad76556f73127057da6c98bc15772d99311e4b3ce28db3b9e9aeac39bccf4a2f8fa61aa90dd721bd5fd39b0dd3f2499cd327f8ba676737befdb5b9e66c36a9b6a4d5b5bf91f54677fbf7b54c4f2125ed27d9813f3dda525bf97a5b6a048220e5012ac188f2fc9460a4b36f25ef8ffa494af1b6795bca63741ff78482e46b8d234ff271a336adce864f484e215412d0967fdbfefc5305f26fb72a45133f3f9931d5d8a4bbafe92f4d5a626cd6e8aee69c74d556d3685affdd23def4a96a4e97b6ee27e9cdbbda5bedadf1d213a877f94f2a4c4f61c6a02ecb0aeefbb5fc4cf5892fceb8f1ee74d541c09aab69c3a22802d12789b34931120572bbf656b7a6956a6bc3398cd381bba72aa9f2e76825ada8ff9e6091dadfadb7c6651533d6e35bfdc5b42ceb675314b5adca04f7eb8c773525274fd486a97e51b4559925c626a5f7766dcf67932a3979a27ae7b6c636204ab7c6385ab3d554936fb39407db44f16250935f5562fdbf71d5586b94e7f7f966cd63d4ae26ea6d453397712288755973f81e5150977f6fc58d36acf715a9e44890e6aabb3a4cd26bb735edf8598b23d6f9f5b6e12a8ae06baba3d13e87a3686fd2df95b4e4ad23ada6fdf1b378b1a5859ff111131ad5aeb65f49ccd82682b4a3dbb5f766a368b4527ceb58da2a569b7fdb3cea6aea7d62b0ac27950fb27bdcdefdc5b7f2d45c4d5cab36cc444551a491ff598946b5adb9da6ca5bae64abe3ee9adb8ac944632d55c9f68175bf2b7b63a7feed4ba9256acb99a2298d33557f3d6f13f2b51907c6b9ee3883fdbecd3cf47f4d6aa2f3f535d478ac5c7ed8cb5fe713c69d87699a0cc13e724349a0e5f1add950a57d1df1ae374d48629254b8b1bf7e336367738fae4eb5aa3e457b1d8762dcee689f38dd2c76d50ef4f0292aff1a53c9a2cdf56baf599bbf489825aff487efe7dcfc7e5fd5c0e8f9f9928a82da596664cc9276d15d33e4d4ade5a96a7ed49bdbb955eaca744f141fdd9fc4ca3d1ba99f0be7a8f67dedaee5b6bb8ac5127265129d04a75a5db1e25a1d15d9ed5f624b566485aba5fefd7a415f7ebfd5aacd256fffd1bf942ae3ef57d7df1a8a3e01e6bfe7d2dc55beb2f45f22dd5b6877ed59428f42f1e455b15a5d16b29fd5cd5f42b8eea1f2d792db5d52f2979ebc5a6aea7d6f46b3cbfb1137d7d6a5bdbfada7aab3b9bcdef84eaafaa5fbe2e932848bb34a8a6261edaced5f91c8ea227d0a88d89829ada72c636a8a62651dcfa6b5ab4d52fc59ccb691b16732e07e230ce14aaa9897ead1ae1b6d589a2086eabdf178fd75e2614dcb9f9dc64ae38aaad8ea5b76b6d968237f0298f2e6db5edcfa3a6ca58b7ffd2c76d5d47b2e25ca35fc357a7ac232ecd1fc74abf46defab51d1aeddaba6b5887569af1a69b8abba7cab84dfeeb537f3ef7a944c18be957d9926afbbb52babb95820f5acab371377bbbf66b94c4b8fd394cf5dbf23325eb6f5d6dc6f766a9fe5ccdd5a4ba52dac6a5a651d54d999ec2db89719b0e25493171a2a0aeb22795b7b9daa969c65afff8977eaeda86717ea2603e494a37d596ee9eaae25dd6d166bcb5c595e68947aa2dcdfdadea937e69e6aad5d31b52d3e274feabc3364c2bd576e352ef903fde13df5be9aea4baea74a8d55f32d7db677ab1bd56047123369fee5a824946a1d179b3b68bc74a6fd7eeb62debcdf6a4f2995ab3529aa841bc29cde16ca3bb5cab68595a1dadbb92fa71d7be0d54a2bbd2342b782d259f3ccbd152fd9fc3e33ef5598ed7d25ba935c39c6bdad9fe8d40bdefdb722ccbd3f6faa44c4fa1b8adfe927ffe4945c8b6fa2beed72268c3389b95eecad19ae11326a0352bcd4f95b14eb4d93048a974ddf4da8a1b7b6c364c1fb7a3687eb23e4eef5e0968cd1a45c1dd53d112a8ae666d4bbd7baa27f1f8487af754e2ef1b6852f269d292f0288a92bfebfd3477e66cc50580065106671dd536882e0e0681450741037da8b641d03a03e2cbe3b6898118c23de7ce9b3b2fc964f50f66c029b4fb26fee1cbad5f8e3f64a1c2e60fb81f7cccb83b2eb5fe11cb17700a0d8b88d3f6b1d0ecb55874dc872ddc072dae6d3ed4e0830fb86b0f65f29bb4872f610f3bd45d91740f4b7ebf8798ee2f0f5e78b8e23c40e181c70e6476d8e2be83b97f07243bc45c07303a5cd1018a0e348732e0145a0e39e0dc73f0c1c18ce3d0059c42c3e10a8725700a0d07d9953157b8b85f311d9c42bb2274dfc457620e4ea181b921cb0db41b7c6e701bbeecc6fb5b5badabb9abd990c5069adb5083b85fcf6af0b25fd780c57def1a68af6bd0995929034ea159e962e5cacc8a0a3a87452c5ad5dcd561b2c478b4aa39ab8ac57d925627e236ce5f456b118bb65c25ee6af9f9331e45ab9ad3bfb17edcf8b9dc5bb455995a87715ac4b7dc5b6bb23eae52615c8ab76b75aee6fa6434de9d0ec59a78f1950de72b2019bac0381d8dee6a3cff364a33eda6d930e5a1fddb68a1d6b57c9bf86f13ff6d62d12bbd4d34ed46bae9dcaee2beaf8b848686c8ad4553c760c6a748e1c1385d142914cc36062eee0e5e1c430c48dc63e0010319aa9afb8b290c5ff0130c59dc4fad6b09c3938364c6365bad5230f02837ae7ac1cbaeb4babe70be401d3c699487d48fdb7b575d712e94016fd7851e74f89ee4dd6311365d90552173cf2a5faa6871f72aa67b95255ca577f5eadfd5b26e6bd6b188f2d4a322fd1b3bf98d9df094f849a708495f5c4435e225bfabd7d6ad6b7557efc655562eb0d2f2396c45734b7ec5e5688544c98a475935ad3a32475deaadb8a46519eaae3898b1ee7550f0d66d5c46d95a1518b8aaeaaaee4afc4441b256d1bc4ac7dda9129413a7d38cbb9f5c78ce2b77da6b5ba174ef44a3d7da66a78ed7a80e72ee2fe0eb9d65d3665b666fd96eabb5d5e690dc4cd7253ae60ee62ffae62bb32c74d2e8102a63dc3d5f9efdbb90cad5df9bad66ae8e54a03888739fa3325484739fa3b285c9e5cd2b8e7b2a6c9a38f739913429f9580db38ea712f9dad65c94df161d6d5d97d42cf67107cb32a4b3cbc5bde220f9a57966b29e54e8e34d3569abc24bc49d36250a8de6bf5d5c5292b4353abb1ee4bee4684f68e66b8c1b733bb8833ad2e66cb91cee2005495ba33aa5524c79e5e0b5942c1f47b5a556b7672514f75247db32e6545fdcc119d516772a2c0ed24b65c3a59e32e3eebabf535bd4a6b8383885264e594931418a9afa291e6ecb580fd82bf7d2ccd9247457cd209f67f629b43edc2f125354d5e498247ed1ce6793bc5649ee4cc23db9e37c70b12ade4e706d4e146f55371166b62ddcc1283048cdd534f1a617d39a6f5502353dafadbad0b6e54e11a3d0a8eeafcdeada943cbfaebfe4df8bbb8b6559c5cf024ea191b9e2dac562fedbcde66dc53741fa4bee5e1ff73aee471f73f0ab584d7271275f20f1a666d5e95c356e63d0ac3a4dbf1c77e3db6c4985d08d4b5d473223168af7eb3ae266e3e3a4467777128fb406c6419269d7b238b893d3c1ed9aeb13ad363eabc1502b01dcd5529fe569da5b73b87c22f1a8fb5bbfb85975ba6631dd9d246b45e25e7938ad8ce3527c1a185a02f2dfeaadb9a212e3da5f8ba7689ff884c88208a40518b4a0a585215a409a4d39630a18076bd8ccfda999c07bbbb6fea96b0fb843a3e950f27b6653b04cc94de1e10e96f8946246ca172958aa265f0a1477293aee1ec54c388b428128b7281fb060c6c11f8bedaef975adf234a1d5d2e66c940d536d495ab62c6871a7d5fcb4190b341a0b321ac59b66c32b2025d1d13c57d8b2c295575c955a21079430c01dba53965587ee72ddf72c7155594328d7e2291343c1e2b55343a139883194988354a3a5daa94fb6202dddd17952cb7c6aa727b4273ab4fb4bac6ad3d0102d0ad54f5c9ff45a275c1c0c5262ece4e95eece424468d9a80d1440ba8b3adb90914776fc2c149e5c92aa586d496bf18975fdbd51c296593c211154594095e8b53d0e15237d1db1dc98b6b184fe1fdb92824da294a06e28d2fd41710ca0a541215cc501ebc77b75615b858555baa70e53e53c107b4375cea3a32d127330e92afa34f4f11983ded4aadbfccd84633c69b4ea10d0dd1a2d06be993cc73b6cca78d3219e3a710d2d212e3272658c012639b2913288e315252ce52ecc444875ad51cd596eafe6e8cf3a8fb4b5e6c54f3b6fa22dddf6bf194786daec4d814cb5ac3e5adc98bfbace90a94261dab9a139b968071f7d9122e164f2db9222e59a2335362c6ddc59912304ab628b9721795a8a04592a9c4f8a928ffd09094b82bd4d1ae59b4aab92ff7c619b78b76748a8aa4889a509e9abf488a48bc36572bc238eb2f315489f193fe12e72229a2ac97c6804b5bdc974cf7a52577f770c97b747f937cf16b294da2b3aa4d344d5a91b462121d2533ee2459bf2809f11b5715d5f03c511e92897c7d8a4bee0eda241dbf5513e9cbae397dea505ac634a42c7eed0c0969b455f9f5c6778644c2ec882c31a5bae2cc7ab4038dcf8e68b3a39a31ee9fcfaf2a5fe71eb7f1ef5b733d6f74e38b1bcfa89bb199fb4db535dae246a6b6746684c4dd6ff5291c330b15e0e0eef94c7735ba2bb82d79ab8d1a1a92fa5b35ff56cd10099e851e805368b9a88848e713d77037fb5724efdfea93ae6511e5f92a36caacbf440434a409de9789f2089d667d9c51936d6b4550484b444644e33ba11a6b0d0a29e3a38c6dbb8a78dc186771a9acfbe22a36635c91eeaf1645ddc43cc9fab8a29a9da21dcab33f2a8ab4f9d4353fd35885cd8c772d4b7cb41baf4dc4bb8afbc4e2e7ec364f9c937c59b3e689f34d143fe3a3f262d13c8b9688b649fe2ef2a9e92543434343e3576d5ba33c42a735d27fb1dd3bdc6d4b34be93ddb64b44196b8dd3754953e5aa138b9c28cf1251f8744434be932227a223bdafad79eb8bc7a21dcae3a4b3b34f26948764d2a9c2e6f84ec82228d1cc9d5fc53a112d3173798909a7ebd293f8e8622b8ae715cddc295ad55cdd1589acbf248ad7e674cd7f44872f25e911211e5df3ffae1422e30eead2e274b467eb6aa3b76b85beb883a45029b4c34819bfd83c29881b7725efe79aa33c9a164523695a87cb12dba8de555d5943235ab4b53323381abe467cdc7d1634a6fe12bdf69e4147f82c284a508f83f573357f9083536845c01461e2c92a366a671f59d526f28b9c501e251b97511b97e2d0d047511e9289f2602745444745524f64c5e5ae9a24d3fe28d21625e1aa225bfd2544e33b79123b118def842cf110b3e7331def90a45308e8a7c9ef9a87f000f28063db65da1a3fe1b67d026452dccde280908026931eec444d9801555cfe6c81efec8709a75627de2fc59fa71f9d990f191f289cfca121291dbe3e393c95ae5254ba6e1f21f7a39990310e92f76fbabf9fe94c88172156b78e33215048211aa72b0ef4a2ebc63d17eb13cce220696d20cddd4c320379e4ec7ea8cf55272a5da57ab0f4d07a847a64ee3c2af85cb5bb6d8b8a9e8686663c347710c72304ce786218a72b810cb8672560d9d9d54a803234245502757712cc5430e08c842b900412623b60e88e961d7347a8ee50e98099e96471f075c59934d4a1e9f83818c40cc6370818f78b836cd141ac9e6a949a05f101edcf46d8427fbee16cd26b69b5e13ac216f029761a81e656b311e84c04323488085bdcc99a13e14a8424be4f1b4e575c4e2ccb1ac215a79a850025041d31bfee6de25f0c42997bda3e83b00504118425f16fe4794110c1fd73566a969345eeb4614aa576655977d14e2ed7b2eab2ac4745455463cd5bbcb68827ace1d9956595a23c479487f2508d354be5ceade96877dd3ac808fb7e6e8ff5be786deedadce76a7e36493b3e793f879bc4f1c9a2dbb5b95c542445f4a5794a9133fa644b9b0de38ba92c876f38fb600b904632d13ee8025eecf48100284949a6a50f3470af5fdbb93eee7e296adc3e4351f777e64116c739dcc483eab75aa37f719307b48ed5166a4be2f27740e6566b9f3bf0024ea1cd3ae0c186c57d71b689d78afb34ab3e9b9ff1a8b7d5dfcf788c1a1a92ca6f9aa778abb5d2d64dd6c7ed44511e273a5b676b1349317f152e4b9c49a6a1a1a25d7da2bad2fc5bd7dc8eb422f9bb7e9e7160e6cdc1925b5c157220fbd1a5b4fb9e347f15a6ba2c713641575cd4ecc795fb8f27077ff8fc70cf67cd86b7f08145876fa53e9e707ce663e643e6e0e7700f14cc7a607130e3cd44c11e4f396d6fc58d9f9bf5e031e3b1c58e927fe9e5c165c6430aac178f968ace78cc768c0177ed715b874b3cdbd105bc12b263c933e6d9212b6bf666cba7fb77748312b83b58c4447988acb05159492b5a3d7999c8fb66d40642b30d78cc749439673abee8c8e23a4cd2e2aa998e2707a7d074e8805368628e3576153f5b534911c94434cb719503cacde1e30e6a30e6739d6990c5c16d671ad0dcdd7bf0c5cd34e0e1387f15a959065dc68be9ae94a664491323310929844af2d4445c8a0a97442861138dde8a9b32b072cf656ccb6f56f90c96c05bae33319ceabaf53e31c5b708a7eb126ec6e59eb32be2cf6650dc67331dbfa7ac8d8d6fd18ed4538d4043ee97b76b6fd7ca74ce9bee2f0e330ee2f882e32ffe1cd6210e1f4ab5bd31a64677904b6f6c719fddc039589b66377860a719ce98190e1707e9ce679cd3a1bb5b8f663850dc431c1f0733a64052331c0767375daa4edb9bd5f8d2fd3bca43c31babaa939add20f152f7b699cd18b59d7e9bf116f7cce6c946675663e6479cd568c05d57a2cf59a9fb385dc645a1556ddad8e64d79eaae484536d1bc99b5d79165bd7d59da9afb6b6b6e46d3c57de7198de995e62987331aea1e2bb367b105cc62385b7336ef6a7e9ec574c8cff5cb7106dba2a776ea196c8b83ba8633186e06a3eebb5ba96e82cd5ebb6de65e5fdc1d3bcd5e5c1c24ff9566af2ce0ec05c5b7cd9274f692cd5c65be685716f7abc3b533ca6535734171b047d74e3d7309f9cc256b9599f9ac0586eea846bb5b4e80b468a7ee8a4479489ddaa96ba72ee2a92962a2ba52225d74fb5c7745fab70d0d49cd585b5cb3ae5850583eb97ec992815368649d7d6448b27e5eeee70f0bce8afbf5ec43e2e0149a38fba84ddcaf675e19f18bbbd7ce99a7c57ddb93cacc83019c42ab9d5ad4459447670adbae2d22998894b6987917dd3bcdfc8afbae46b59d396de642ee33e7519e29e3e0192ef975264c9db97277906a7b66c91dccd5f16be4191dd7f68c836d70a1641b58a0da30dddb40e20e92656d8387bb0ef2c406995a568d4d2736beb8bf8dcad8c0d1abc3e4be2716f2568a0da19badd18b755d83056b64e160c6bb9e7847792896b2bb1d1631511e29221b136c49d28a6b58adf15485b369d63568b6a6d58bf7b7d5ab51e68b7b396a712773d559393885266ef3c7b1aaf1a44608bba2ddbe2736fab7e5d7d8c4d9144f52cc78d77c8ebb8a39ac4fbcffb32d0634f718c8a80e4d030cb893c6965d8deed76958ed6b7369e8287199193096fc3c9a69c2cc684686371a5ea08145e392ee13f32025511d2ebf46f75943c304c9d755dc4643c71d6f1d2a3b630cb893b1adaab8af699b3b834bed8c2b7e06eecf5802cd28e3b527290f8d56d68da5cc0003565d0e9b9165ebcf3233a0b8833b66504a7eaede32ccb80e97466570b95fc655595a2a1d15520692b08cb2529db7fe4c77db92f6a4624b32c03878b3388af126430b59e225b2c43832cc9ecfa61119443425a7ff2c35869931beb8975534ffa9c6c8e2e239064e8f21e4beeb93a238460dc94435e225a4d5f93fdbf4ad96361848c1c0c9d7b9e77e9c94a565c03838454a1429f496d12255e6292ce35527c610623cb93b782db5569f3f478f28f81793364cd356b5894675c58921a3551762db65fa010a03cbd65f1586a9bf2a0c24ee61f0a87ac10b6ed7922f58c2bd6868488ac80a1bd5b2ace30b90b8e3b6d5bd80475956b14c05e38bbb8b6068a9b24f8aba823183835368e4ef138ba4ada6986db76b499cb37af2ab585df3d7fca2bb1fb9cc055d5c5bdc1577509ba10ba0b88337fab906d12e005bb085d36814b733d6d11650b5e0c9cb1d1d9a5be0a036ed68b76641095890c541f2b725731d6bfeca02d359d043660b77077327a92d252f1e5ff75813f66b5a33193257f9ab584d66c9ada5f9d889d2c749911961056068cdcff3f64d9e8cc3156871d7f9aec08ac4b915e05081142ab8e2e0e34d773cbbb2563776a2d556fd14293c51a45050053e0e565da8821b590a309002d33d054fee2099abaee64f41c639fa8519f04f2af69e94bc35f79be90b2fb86d3e49775f94a5fd020948bbb6e94bba6b130575b8a4181f7d21cb282803a2000c4e6fec84822e200a5c40810e68ab1ab7a9f94f45560a4aa120963b41175bf3536da14e8025db7a7402f3043cdc411dc67d0eebaf95f59a000a9ddfa4f7477dd2d726686282d7182eeea0105da90ef217d36876c736d12e36bab68946ffb5ceae667b927e8933cd78cc15a8a9ee891be9ad47b2314b94690c0fea45184eb4edb359b4ef8ff99f4a8cd39f715bb4aa39247daba9c5dc79c98b6ba2786daea8ac24598b8086e0742d4d262510aa620964eebeab64dcf38b98045f3e93600b09acdc5d24c1d38bbabf24d8afbb30239af5731760bad0d28555fe2e96bae0e1fe65ade6bfe55975cb8c008cfb08b4e4fcb627c57104563e02280e4ea19d23a05c98a917d7b8d862b4545c70294b9cf7e5e24a73b1742d171db88b65697163d1bed6ac4dff59cac8d6fc385db72ec26df39176e417e92656b58988ea9eb8a326b76bcd5317e97dada88b767488c6775234be13b3a888f2107d3e3536ad92ca7a5e261dde028a83fb9e1889893a6d2104d22d5c5bd229045b3c155408acf8ef6a47ac75a578e72cd541b6a558539eafb2e52bd121780a818e0641190777eea9431f045fdc1d04c11512d357c1d9168260090431777721e47fb6edfbb7e6f29b545b315b4889e1e2ee2ee674b0aca3bed5eac92b46480c8f30661c9c42b38501e3e0145a182e9fc36c5dcb8bb1a658873922fb8019777087fc2a5bca3e00c507761f28f2b953bf4e481615511e0f78d95afc8defae2259e4443a15116d6d97904f4a95f5af2d2fd3d2fd72684849fc7c9a9f71074220eb801607ad9e3c6fb696abda92dbeafee6d3a46107ae48b27680d6010ada2ade370443c6419e5d597521982de5be38ac76a834d0c936ba20059942cc8c80000000000063110030382c188e884452c96ce53c2a0f14800378b8648a5a1d4aa3284721841c22600c00000000000000300400a242a4947caf40a86d2d8a2043f4b6a65378d87ae6a6ab230be45da167914bc20d90f0fec128a4574c60adf3063630b74488254ef812e75ecd5d5912a184e0648dbd6c3a38acf26b630308eb6bd7a1b8759bb6511b2594fd8a19c0b0000519e059de9ac31adf358cecc69c2ca94390fedc361ae99846f4121ce68c205e49502cc3391f58f1866b308eb459f613e311ddc805947da5aba496b6ebf0a33843510343f446049aa4326a37e516b78a1e10e1b8d56f126b02e0f6f4502bde60d6db12fac33a28bb704ee5c358c1c79eb3122a76b7c3ac0a80f35006247bbf75d9d4d9ae60cf90a1b4e92da41532db3e92ec2e17e59c8793fd12b814dc5f8a4feb9cc241d3138a2d6b1d98a6751c58e8d83b211683f54b50a83abdd03487dab59ca6832611fe9253075d680fc6e530f061ae390ee16ed95e5c56b71c6679a68199ef410a3c22eff800bd26f830494dd13e1fb318e84a597c1b6294b06dedb353990559984e9193d908970d06274a08dff4b3464ff42814dd06f2e95a850daa3b049bb9f7cab7ed688643db4b160c5fb7c2aa475804f0dceebf899b725ca23c97c835c4ec81fc80a617131e0359ff1ec43518e74e4abfa25a798d169c63b71bea6a0876f326f9594ff3460bf10deb64836bb63b129802c076e7ba8e20dc3ec319378ef2e82fab4ab6a65f629b495bf8f5b25e37cfa1b639076c8f09dff532b8e291b1e173eca8fb1e39dab46ccd9c321f1a5771164460179178c07e4cfc10e26c471bab3b007186501b202e8305fcccc20c68da954a976833cd217396075c089c848db8ccd07f53bc1e67e884cdf247d3d8376877c427e14baaecd9b47b570099bef7a97a8b71f345d6ff6dedfd69608bac7a8e2e39a75c728ec1ac7a7b5efc062acc8db73a68901674e3b1c2303144902400b5ddae592808188c4b9385dc0e9797ed9e89cc7337c8e7149b71fd5caf1a93b1deace9cbebd8df990ec661348e112ce0dbfa729e605060520b4cfe2ac85043b846e8bf5f689bb61bcba1a6138773228c4269ad81d8021dd7e0c2a08b4cd02ec0e2616ccc1b135ccdd3e57f53455a5baa2de4132e39380223eb18fdb65e909703dfc183a6a49e9d9d17d0c8a3f7924b6d09db6e7630e4103bc24585a948edac13c5b658aefe7def5b4b30cacceee55be5d96d763a4f2ca8fc11c7b2fa04b0d8036d77af9742c5271643eaed4ba91c03b3f0ff203956c2c0465a52da89445dc7c5cf39524b200768bbade85da51570a4da5e690d1156f16eff5323b2821b40489d8796938ad50dd605b1b1c581101e228b80bf78aa31fb0903e1960bbd57fd23ae16558def81a29dd2a3f97988823fd9d93d8e05c0ea3c3766f895c62c05784c91dc311fd4c53d5887e521502c6a5257c3793f0aa6a0d0771afeb24396cc5976f2b0099b52dc96ea8fcb818efea56f1c79d3cae5460ba2ef5085613c2116857d801d376db11764f84c98af92aa703011998ef3e7d0e009d5c0a348a2cbba4c89f4d1fad04f9a916045dae11a1fd29dd72094e0134e4a8be219c8bb6fde59f12758f78cb5e5692595101858adf0b29f5b7206778829db3257231a5d5e6cc4becb375c5cd6fee1cb40d98f205830aeb4c90208cf9cd3d41296dfe3269a7ed43d9b47782c2d031e92e5711d4cd5fc05e1ad14bd89bd43c0540555f855e0ed25e486a8a13893485030163ca7033f2578413b7f4194dca3173e90073acb74d78c47a50a60bcb16a02c4820a57ee3455b62a77378bf4df520be0468ced6d5b26be746edbb78918095016c046dc3f54e77fd82da3269abee40bb2a9afce3831b2ba014604c479f35cc441aaff21a35f3a7a2150c2b2c2007cc1a69910bef48be35cc274f3a59168280125d3437ac4ec80d185d8629d809d330c900a9c0f6e4596ac0d679a9adeb286623429188955f92033952c5df7746cee6d628bc82a612f27937147092c34bd1c0d48aa52758e8eeebd70e4bab2964cf61dd364ad4c38b38817ad349b64bc2af5279c71dd3d1b8e8ffbe65eb6ca39c993c7ba4ae14d8a4dcb1126b26859ec199d9119bf2112890f40d19ec71aaa58251a71b934d590ed45259536a8ceaaf8b4bf1a4fedaa785bd60c635a6b1a6c2c3cb8db5c10eb98e5d8785ca2e84455b7b7e9eea30a9f7296be652b83a765f95b390d86124a8c9142fcdb0c3c12f07fcc2043bab2101317b31fe0e91348d0b770b41cd71cb5c5d9188fa588e9a58f38d1ddfa851a9077756ab35253721e84df476e823d661c2132f25ebafd9629be55ddfdb1e7f8be611865660fe2e7df10d065dd7618c1c5c930a783cee06adf3fa7d7f1baf84146f08548906291fb79e4266d61c78811dc5ade2fa391ce8699d45021ae73718489538dac4004aa9fec4dd61a323fdb1fd206539adeac18d501629c7e892bd82575f2a3c11f8703f0f08e63fa4c6c2e116b11e7dd3c56741022753ada8a238e3c54ac8cf1cf522107fc17c1b51fcddf69f0836fb89fdc09b948c152ffc88dabf6e876e2497655e9c4ebbcaba3d50a49cba5039dbb113eca4c5569501fd4f68b77157c65cef1949e3b9d6e1fb3c359024819fdf5975525d37963bff51d4e410386ec092f129a71c65929372d94f1a6ec5c61eff688db14718766861564693771c893cc7806c963914652c75265bb90cc146b0b63a37fa91b627a17bf5b14f93459ee97ff4f7bab8826ff5d3edc58ece21718bb3be5f5f608a60abd0b8e2019731c17422e6e0022f052c9487d9540e3ca6c37d560bee41a03887a871e40dad42a752b4eaebbb91367be22c87380f22b28f32a229d7e103d39c97a811d144ba498074752e13688fd97b1ca330f1e5d7b06f84362c1fc061a306b711008a1d081c5b786ff24192c106b857ab43c529df37559f7955acd45cf2fb50f54bdf6ebdfa4dac735e98957a5ada8b2bdbce8fd8a43595068f393a1f30486bf9156deb148575bcf944788b9aaaef8ae3a2cab9efba10e6c7d0ef63e15c0ec7d0cf72a7c91dc38bdee0b4f08641aed518815c0485f27fd12b920b7e8ac7658c52c84e32bcc9e6e6669458b63dd922588c0c0429805348d512a87112433df46891ffeef80cd400752384490554874fb10204f9e9b4c7d81b6ee5b1c3837047a3010da714faf243f281d1af4f3cd0a3f8ee0eca5842b4e7a2be32329b77a2db0e5db2da37e0fa71ca73f95987f3318ac78dd945b1e6a605ef2a71fb72bad2ea8491a4c0030b0342209cb98a6b1d32987752785fdaf9160d10eaf620f97cae3a7473f813cdf03255a9fae097840f7681973540fd70f951540b073d055282b06d4acf880c9106af8aec4b237ad23da49b8571ce976ad74f22303576cebbea854c77967f862cffc6a9e425b9d246652b0211d61c00ad1e7ee04a2656291f7f66669d1b66575703153459574cbbaff7393d7039e0f0f93d40234dfc850a84d597c1852271fb56a3e185dabd41971ebdab0d1a5d3006faa02545a3fc37ba23b5359cc672103a05bfe4adb3127747d2ba6dbb33269086b4a5e050024aa7b5bdfbc904eb13019e5ce306a8428701846e95ebe7dc17628953881340b5568b1cb43b6f89a6ad15c5afed95104643d886147181fed4dabcd61e1c7740c1ba0df2b435c78133a0c80f3ca024864cc57e03ec7404da9b63242eab11998c4aed9e061e48668539ad4d3dee42fc8e7444df14cc0365ae61983d48369e078a9cec5f8f7943959e37233584eacee5cb0612f41a7b36ab6dff11a5c061532a51c9dffd358addab4b8e482b19df67eae8f6c6c8d2b0dbf0330966a124fa037b000dcf857c0b169c9a6184be227ab0bc75601f66e6908ea428f4d6c30047074a031b7775eca8a30bf4bb8b33211ae16ed10afa6602435f94bc10105711f455d1e9c39ed9abd7ab2ff86d629566f38c1a9c4cae5ab1ddd6b041b7bee8dc75c53ac0e3bdd6cd5d68ac00f6ec0a561ba8888eedb9104f4bb7cd74e4293d9c2ecc8b9315f683e7bc1a26b8bcccd0d03554317677d41fe03ca55fe46006773f83f9aca88586beaa61197767873dbd7177f53b99fdfb957961bf7fa5da0aa61d18082791bf8e3d275b8e91f8d713bf7377d0905605cfecdffd9de5298f0e9fdf63af6c11a8430345f983e41df7ef66c22fdd39f7928ad88a1dc4f3d9390889835457781ccca3e0ca4790fa88cdc06b981686831e0b11d3f2ed1f6b1496be4de62b0398ae49c4944ef23072933b600461acaaabfa661a2638cb0692687a3ed1929758fc5e194c46224d742788c53d3025c8c1c987132e4614e8e841abad5cae229bcc6e83c0c3011d5d617ac89d63387b1ee49ff10853f1861389c51d8267d7b7835fe182a8697b2ba3203dd8daae61def1ab272dd3e5e083eb80c4c948132c03c87981af1cd2bb333fdc7c7e3eeb8758cc377458d2bafee040e6e9f72243571e4df6ae67ac3808bb458826bab29a030f9c08db6b220c5334729b7d3fa19595077af673fbf22da884789db79912f9be1771aed99666e34b0bb7203973093ba55ff2a76109cc623041f32b8bce392ebeec21f78231d93a6e8ececa2beb88c37fc33b9326559da768108b3c7d4463d404458cb8b179c1f1cd6cad1269bf6b1b78302a0035c2746ec9c2b84f1c0bcdda1b7a90f33c957db52d18a8881947e810f7733c16ea5dfa666ecf35f514eb71655a53561da5535dbcd786f13d81129ee297e7e13f9b57d818ccc2609b706f300efbd65e7b8d7cbdfaacb5f4ff0e25e64962ffc12e8ad326bbbabd8ad2440de7bc007b9d6846731ce81c74576f093ad6757b98b7fbcd0928270b6b46c9f06b073f8102c52853f4b665536e789bafe9f0b254e0cdc4b431eec6fe74e8f8766c635a775b0e55eeeccff9b77274e1c29070b43a2d1bf5cb1ca596b77772d0aa432bcbc6388e1bf43bbca732cd87b9d9d552e1a63c1f744b5da9a8002a705dec7b70e33d4dcdd8f45bbda411cc5dac33cb47d351f99830b3fbe39c01237652f69e9d0fb08f51a8a01128a0f4a0e4198d644147f4a409e0abb3a0db11550503d6a1a5ce7d034e89bcbbe8139f5ba4f32a7562bcfb4f3e7c9905c91f20fcf09bad8e7e0818e220c03ea3bc7d42b3ddec5caa3c8195aa034e466f2bd6b21e89c37949ad37e4c53f5c8e8060839dbb832a15ad2451bd88c9e3d5d669f0c9db6af0c5d27c002cba277174f82c914f9cadc28c33b03d47b04992f64c8a10b0e5c60c124eb171b00d2c4732c7519fdd920fac3e8d8c2b6f4000a9aed34add05a177be3f8c3e6944187178f29544741693a8ce49f3521e41b21d8e983d89046f60e0824651f4748e2649d701c1d7e736aa3b1a758bf6dd52e39c736c568895c92b18a602b2bd16c595de76a732372757d1be5904b8bf0b076067f30b3c1b7ce7d5dbaf272bde986229f34f57be5e1b441cf445b629adf841150e3c76418e2119321c0467506763dbe65d4f4f769f47593552050e74541aff423c1186959532ed21684eab88b69ba02a4bcc0e8f71df1dd1220675dfcb1758953b576e0deef09448359776d1a438745480f541290a86cc6456648ef86def693ae25c5ef9f28fcd1585b4d15530d86ba46b21f6e2db6f1f9241bad1ca091776364b80cd3c3d136e53c3d125112b7d0a227819ec31771f2f46ff874703d48329fbcbbf59142846ca62a808df258f56f08f3d449d4d4aedb12519f13ecf86ed2a6b2c3b8b9eb2223e0922d0d9933b53c2c4966eec2a3f3d3ce556fb95adcadb8b6d4e6e625bc33ffc195fb3f6be70bb3f7987cf2cea58d388ae4bc86eac3ce6321f06b47589364a996e240379e5e39481ff65aae11af122f17e7ac0dbe92c3156d1d52161ae418e7f2a64acf04a36449bb7b7003b3bd9ffbec2274cc14f5b466cf4833e4b19f43710601a118ce014c69edcad134a065077ae871340c61d6a7d47cd2f6f5aefc9a2c0d0b98a1bb5b257b11915fb0fdd9396279269c11867a848e97a6e9de433ed42110bd2974fbce69d7a55581109f2a1f9f4abcd300a53d59a726c8c7bab233ca6cae15bd4e268745437dd7cc8f1c2d1c868c50f20da96f1c5e47aa5991093fc29e409b57944f9fd391905f156e708a754305bc733ab84c6dcdd1e66d602b3107c07a40e4959ccf0407fc8cb919a63d3084f4c1e2a1e5cb733635f665ce434f20da115039d6c300add5cca807edb4b41dba7b877badde1c9b9c32d571e8dd8f875e7a14cfdf59a6d6ac3868d78cb63a9ffec218b23f3a87afec8d2821dedef07c93b0338a8c8d474741b7785baf0b496419b71e012f78fd822de46bbaa05d8efed91fc8fed3f90195413ec38f5121657486f57a86d636152d4720ba5a73f01adeea57f121c30d408529982182daa57b3a514c027c17f25af6dcd3cd6f0185370d72526f689b6f80f809d5da38a0de6471f6136753db13d63a4f9c7d1cb4aa9c99b3862c5c025cd12f3b409c60978f9f48d4c3079bdcfca93dd2568c3c381f8bf0c19d7aeb4dd943cc1c636ff0afbd3e6476c3f8ef026ef2f8a13f7a7fa54892bcfba608702c13a1bf4a0d9013f7a27e86d9adac116b4a59961d9935d9ebbad15d548e18f453dff263e4e27e3669d8d27e6fa980f5852161874f74d9ba83959a56112fc5f3df51cce1a90c0b211e10b5d65c860e130959c066089eccef095cf6167d39b4dfbf90b7bdc5bbfec34c0ada482cfdde98cd8d885114cdfdf1fac9488c781beaf892bbc8b1f50c9e66fb6c85b78c17a9aad0948d4ec112e1e72d920db1cc08640e10c9c9d7c8e1a276906a511cae32395f938fdc37038a2b9ba94e883f2f65a561fc24e080aacfb93594334cabcb3c5b2701ff148dcc017807f5822a5902eb68a53e19fe7095f5c79146e2d2d59d416a0e69a6e29c329e3da3e893b8c851352206d2c97c92388b93cd76e761ae9af4f83628544221c439e386baa3d4636c73064f501bf7733ab507265dc3038f40c2585c1e7de58d865bc35ce3c2ca7d79bcc3b7ed21a4204fef324bdd53061c47f908c527db3281ccefb06f1aaca3d0e0680096e05ae573d98cb0677e0bfb5ddb97fd09c66bd4a27b3cc2acd51f070480f228b79e8b9bb33fa55d0103f7543301dee3f0e9da248a7c544bdaebc253f435d7db3a2a468724e063714f7094cf9395d0bbb38163e7449b6f4110f2447f4f3650bb652327150a2f744c4a26cc48fb3f5512045bdc93d47482dd0a8bd0dce7a1a6d301ddbc98165881e068e059bb0402e80dc8ffbb264f36d700018011602214ef9099ee221c5cb15614a23904e33e58c2e71af7e7d8ba5589de18b8dd3318e244ed3e5c3ddf9384c341fbb0494f0b6f1dc91d39928ca0188bf8f570d4f3302bfa3c12d0e0738717689505cb4f116630be4f3df61b0fbfdd0ffb23f3b089a246c5c54a5317fea31e76edcc1ad7d4acc6046f2577b37d8ca36c78057d5ae76005f85317d41810d2fc2472ed8b0be076a17b2c8bbbb85e840cb108407fe464cf376d3a6ff154f6d09bb487026f4c64e896fa80a33685caae3c173b8acc32df56ac0dde4a92828fb2a297e1aad6d060e89f7a919b0e6e35843f6b334f760b0547649e06a1e7d66ea0cc25b429cd74d7789aa1f7dabdd2fe73c76e5883af0a43ce030d35711d89501a67f330c547fac623cbdf874df7396aa2832595ccb0e828639cbf006b8cedbe6d72dea9a83ee7499b41b73936b03040e117e601daadcb23909c0f9c594d8ad848ee7e9e12e0d6a0472584f645207ac025778e212d31e7ea41ef20e53526de45cdffe5344f494272811dea996e1fa15d711587a95d4c01f268527d51565b62985526682188db3064aac5fb520001ffbfcaf43123bdd1eb3fa1877ea3a4b57e0015e61d940dbc14427ad6947d331e2cc84cccd839b272eba7c8f2e5849afd1395190c634fd5ce501e52af7d2762f8eda94841ec9e644de3c17245438f212f46de4878d6a47c4b1707a140253a99de3ae24e7142fa825b4542ee9bbe07944055cd39800fbd73f98c39611fccc2c89a9975ca328858d57ea4da7dfac70f90bbe85852927ea01c991696012854d5817db5949a721e40603bfa642089c3a27ac885edb592b29d04cce8d4531bc108ed86036f166005896be32bf30721d1708010d637e86c6e18401d4515bf3d72009118fbd3a8d6f1b34875f87d39885b43317b46906ecdc5d82cd376ff18e79d23bf8c0480528d559b1ff825acad3fa56338be42ea7ef957ef5d50979aa42180976c018a85ebd14cb98c25f129a147518580ab1f67ce95edbd3a487933a539024526d54b35080dc851b0ec2da21110bbb66db5b9695b48baad9225f0c6fb40623cd8a4fc8bb2fe0d4ae854ebda765c1009bb0ced6ad4a4af517467144081a18cb01c1b24dda0c95be9e074182ff10517732e2bdc9be1552e2a509f02644d1e7033047aabb27fe79711c4ed05c01809cd931bf223c0d5e75c32e31464cdb312d00a40777f1ce170302e507b278eceb9f710f45b450a450dbcc6e283d552fea1c771aff5e06c532600a56e5c033990e752e48e4baf863b796591116bbed0def1e681c4e922bf3890fbce60df408df46626415d5bb3df03019c52b434726e31ade970cad7df969b360c21a987575a15b5e651ad366072a81b8be6b308c086a8d3c6d9e9bb707c8b201fa1bc5f117c2c0f8f82bb872d93c6d30eb7c1d6bcc209a5dda1de6f25323aac4baa2dbe13162319811d1705e3d7729f3e2f3e50ac6e1e44ef00ebdc9c953afc331a51ceb62027e89f82bc31c3fab9a0d6e9606463181e741844a940ddd0eeff499c43b83a5554b978349f790780c1651b33894ac840b96109afb7448a9612e6a16d6e5d521c8df41a063621ccedf6ca4a64485f858db658f074bee25a4d6f3e29a8434e5d8382da74427b05307b4ed882090466bb06cd5c2ff92167159b21beb201bea790465a267eec2c9cfa426629c7997ae8c0aff2b80064a519c7afa7d92c43ecf5197ee145a887571600db7691c5f56189232bc2269480802a6b3b1a48ed9aa17a3b8a9457738639e5c9e8dc34f4380f253803b9beb9a121a00c7dcaede2e876b22bca907107bc36ee30b867cf2517ab9e109bffaac8bee2bb2843032b01a0a6d3b5123f7c19cdf742fb7d3136a7e975771b522bd8a2ebf8b11a68eb023530b6fd5873e3a348be2b2f896ad0e370539579cf1578bac83ce79c50b59fa56364b3c7eaccbfd3010467254f526d8155a86057d6a13f0400f7b8ce5428b0affccd01107c514f9d0588423cc6c8d22aa64f04cf27a27bdcfa3ed2fe1eace28ce3216df3f4e650434553db643170df77e5392cd48ce4fdc94a21eb3b321358bf685bed0cd7b81d74a8da70ff699617767d7979ec5e36865682c73a5b683b7d0e827898033ef077df037a8bf4e4e824bfe90e4a147bd7ec4bc6926dd63e498fa46745a90e769b25dd7f66a466055046d127c08ec1566fcea300cff48e704ee09a466303ae4f2af9047b51cbda7516f6c0ac23bc5e289caaa3d649e8a4670632bcff035603b8ae04fc8741b62ee8361fec684e19c2fa8a240b283fe197358432648da5d3373ccc55f8c6e73b9177ac1c04470c65aad5ff96f2dc8335f1f8f9aeb9299b4e4a4ce64f276625947f3d18c24159b35b9955a5ed7e1ec62472bf1cb6854a46ab03cd57399162c5ec92c6da4bcd7e695432a7134f9b682dd8c78988a7019506121333fa12b6609100f476cd58d30a9c5f4f0eff726d2338c30aa08cfd3554deff7d3ecef41f470629101fa0ae97f54ecd8790cb9a1c125ab877da0c89c7b6082f1066ab46c464b1de83da9bd1c8a29fd582119d7b7d400a67165a607ac985b96471816518c44df2467f7961614316c38a54ea8e170f88d1ee2714ff3bf0247d6a03668e5669358f0f337edbfdabf52c06c624df51be78aff0dc46c06fe90bff90f32c1d7a569835c2ac33ed9ed3d7f382fe9087589f270f575c3ff0a2ee527dad7c21e08274d40ed3b77bba23909abf131929669321984cf33702e76b8375f68ad92314508aa7a595aed7dba1eb8a24fc8363ecd8b1286d422d19f7cd38c7938e5a693e421667163847cd32700c8f041c7997b247d45b35548791484a6bd7086ce7b6eeeb7a2e868a0700afefbd2f03fe2688f77505190ebf17a71f12a0969a82f3050ecfb6c9b20e116cdb65d199953d3d597aa66e76cab7ad4cb2873f5754d71bdb02ebbc44e97d2cc41829c5ad3d66dcc992671122fff43c905152448a7434b68e3e8d0c2a32a3f0e1a25dae6cbebf4f17e2318f788ddcc901be8c6cc31dc2c61ae7f1c22b79b2eb5fd7a191b7a63e5ae42fc328dac11e065ac87424ab73e0ae6cde0436bb82e8f6428ae809c2f97411f2595e3ee8dfe6605383c354c6d2e790f97701eab8cfd45faa4136a7ae37abdb04e4ac467fce8dad7284458de002e4fb324fabb8b114d9e6eb01b9b0a2dd07c622bd4035a8cce0ffec55a2a581d2917faacd81b15de5fb0e023738c26e539bfcc648884543fbf12bc81690c45cb0ca6255493297a1d922952ee5bbdd5b5087771e2bd87a13bbb8588efe1f586d97a10e1ac48ef5b4fe451a34c937e70b516dc4ddc43d537c4a653f8747eacc75f64f84dc7f9a64e6875234643119e182dbbf30468d9a24e37324084af9f5763b95039649e4081d3d43c90c95a2c36a0eb9669ca8b06c4720a7345be1140fb03ac95cea190ac984975dec607138d091c1f92bbce8b2d226c69e61b043c5a0a17eec7615922bef7dc068abf9dba04067dd9ad839d9505694adceceae320ef3cc92f6726cca5d250502f1c0ffd901adddb4eab0a965a253d4c99c695a0a5def568d49cfd1a3685bb80bb835577530a56894d0f30db48bc4beca12657833435783c6b4d0484f2b26f8c69bc9955830b8facfde87ca3771a03652500227f57d9333bf4fece04a1659c3e832c35e24b07059f20d7928e5e95013b67870c8f7ea94671c69e3c0cdda93c6fd28fa964890d130113c4f771e115ae0263d8a7dd3cd59ab82f9965a36c7480d74312d7fbcdc3a1772a8a72f0c1254cc9ba00d7bd0ded67e2e2e3c41fe5b9248992ce3f52d69a86f05218182d3f90184cab7f313ba984114db776136cf369e090501044c9daf8c131a9f79413e41c0b4a32e1251d94638ba54389035cc4ac2c4ea4363fc212bd797038139576c395525f7c1a9b878680eed45c687c8aaaea3b5c89f94e972f79198c4eca065c00aa2e6e51f5639317853d5d67fffce91edb6265a1efd9649c3e11ca76ecfc37f117cc43922d129a29d10e988eea9de6e40fc5c922d6524170ac23c5ccb687b5f0c0f9012028bc6dc0d6585c73d0be3906fd2eca7797b60c3ad3f96b2a2affe680e4a9ac8c25457062c11f3fa9e448fc1e69bea68c62951b922296f238077165aa99f50f424292069356eba6aa2b5f725c6130e8d3d040a4e9d51f7f535441cdbd195c8e8379c602291c50c86d4bc4c1f6b6b88696c534f9e9005da6da789c7528f5dd0f2984aa05d8a0d73bd6abe224d080c41e8d6fa150c2eb3322fad9a60fc38a928dd2d91c2fd7d38232628acae57ef00af9644a3e5f2ad37ecd5d0e8227f9afde36da36dcff574d3a662d464c76e4ce08d6f149fa21c4ce38463ed6f5d2510cada4f13bb847e0ece7de41c46a0e419c01275fa6c3bffa4559a3f8ae5a9a51a1d929c467c2c2f98bd1accbcce4899f3cb893471c299c95ef35b4d84b7b9c4d995880824df49977c711ec01fe7eec9cce08987ab829b428779bc54939ab9cfc931218dc8d8479cba05e4aae9feb0a2d43be5979a45f2dd46c0b5a841be90c74c7108802294f1d104489cfbe06856d4af3488eb80e33b48a6c096189abb6328fd0de0933bc3bc0a1c627fc15113081382790b2f1c59db9169195b4e184907b08016390c011bc4be5f45ae496dab5210e30a5b53667f496d9b9f595f803cd37bab23cb20a9c76c8173f67a1ef12fbe7b479959eeece5c7378dc4d5eaf3db731bb135e9783b1982f5a7c676a71f23064805eb09ed1ab79ad9e8fafa9ba5fc2e8b4ac1c25044b4f5b639ebb54a2152237c0cb5b156748f6d358869214ef9da89d2980776018c318527fd0566c1f205712fd0bbe1d75214bf867528079c5b603dac8f6aa00d2b4ed5bd9194b9d213cd4141c8427b7cb4fa55a48dacba6d580cd6622a5d0af88a1837efbfcdbc62e4d0385b6576dac1b6a0566262d0691dd2af6c71cf91cc60057a27fd2b9d420495dd55180b45c6d837aac4a4b4a33e230dbeac78e746795e187ba3384772bb979e63bd98ba0b9e854446ff6b8a60cf78a2650af325dfc19aac5d96a6f8df0fc475027c5baab491cbc6952172c4ac426e3bd4a46e7055d7c6d08ec22ea7a008ee2ebb05178188100d9f7754990745bb40a1deadd69595f6eb210087e423fdf104b2e486df6737d805fbf08a2b9862ef8753de4cdcf71b14e37464edf88e61f25d911d69d3c2c92065f9a3f641904ceb6ee2821484cbad6178f3a8678271fe6cad4afc18106c4cf1c609d116091131a2fd83076511e91faab225cae47e35af0f62b4c9f5a42e09da06cbe7daecff10da2d01e812ea8cdee8726213b3d2b67e2d956d7b37cc8a027047a2f18849379777987e02b18964b85565896c8c30da08d366feaadd48ffef809e492f090c5c3a0e44c030b91736ec19c4b5a217eab6854e709c84589dd995d770a359897ae1c47fe8f96df739cf7c275f16c9d643d7b0e1a5983f034fe1c550680b3a8598610cd89584b6882e21d28a389c7741741d66792d34d4b3b5bc7ec50b1bb762784b28f94ee7341cecf42c9d6f33e9813038598088a956f14d5ed10e43ef7e327a2968a9b629103952a45300117a261e1cffc2734382a0bcceef5092e767b13a1c935ddb236f191fe52547fc867d04b258f87a27a8eb2bfe3cfa91d19b208bcc5300364472f95b9c835b21ed891f3aeb827c55dd7829e64e0bee43ac06106a824e861e64943ba7b3c3c4636921811e5ce6ff44f74a8ed4844bb48a882e7abe0dc3ab7efd833c0496cd17178a91031030d778766df72af88ca75ab851d099c8deac514d87c3bbf2329a8bfb8e70e9b3be7eeedcc3b9c99737f344243beddad2ea823f69c577db5e7c74bfe922ed431870ad63a5b7739096d1b89d3c6e8e7f8c14cac4221f785162992e74ffead22b75498c2e406a2bf5b94461cd252f0285034622fbe7b80c44fe51e66015ebb263eb5e854990315095f9f6ccb2a980e43bf8a63b6e33a3c3c6654bf7abb9113bfb7f684c3e0f9066bd87c936c22d64e45e88e3f93d955d0193af801e7a5d156e3cf61e8ecfffd1a004553267e96d0cda0d4369a0e886f335979a755db742cb7dc01c0cee55adc85b9a773a915364889adf5ca82ba23984b34ddcb278218b90b1ceeae397c1297305ce932ad9ceaba2ad0401ed72958b64eb1053dd6eb04d836e10b82487940fd75194b491b6f16c74a570966cda157354347a39ee92d5b9a79995276389674903fc709c8f865115e5fe9516978d53eff389632e4bf49aaec5097423db3882381543da126a35acaed80f2d9dd51f36d5974e29734f29b34181c0166bd0e43c95d45cbebb743ddacf9d28be38e9a7ec2830bb613cd9e34d56569293aa183972a6bcd3f021261df9151103c869f90ca875caba1336783901cb2560159b0016c6552b934da25897afe619efd2656982933808106b07018174e3f3c1ef361db773e4c6694679831e29ca3dbb301834ce6d4d1f42a4af463ce245a0af0227d7c1c95ac60611ae0894963484e7b4b57c9d5680ff30d1424904922b6ddfd0fd4ea8fd9abba60b208ba44a3b1288be51600162f66396dc8938fe58053dfd130972d174d0eae726d252cb38a41b9424f99547363d00d548f1cc8a60033384ccdcdf74baddac3bef59f188c7b3a29a296319692d16d62a7f873faf974a903886505154c41e1bf8a2d0b9f21efab68ead8c1af60e8a3fa642cf25757cf1cf2ee1a32db8071788ee97714dc55b42adcd0f301fb3303e7dd8a2c99ecb480d004fe006cbd91059c124d55865760d0aa7226b1dfaf37f1b275b6455a17adb433ae2b22aecc9d6b403816dc58e1fb0563616b8f5acab03c3202c93ad2c20ffec73ee24cdd802ff3921ca8ebf47e457ac471576416e3b6791a11c62f659f61711bce0941502d32ff0d741211fd1ca45e472417a30b848f341332fba21cc02edbe467ce92ebb142c0182290fe5aebb030eee4ac3cf1c759148df6afa8a147bd79be701ca45c9339b7460c06cd3ea136f97403c12e2801512e90a020252e1518aa73b708c9190294a181d40d805854e1e9eb83735daf62cf915788c5313fd849094a02d4532d3a36c800a9ee504bd1ba4c36bc651386ac3109e3eb85e7cf4ce58c2951ade425647db4115c88cceab18b2dfff6e4a11c3cc358fbca4db9624fb3855e0037e736764da3cc183b1092f880d22030300b6d35afb6619393df9f8be098e1adbdb5480963234771918ac70ee52925570404e5306324044b28a713560a37ec7c0ecb32628ecdc809b3c2cf279e63aee920c8b73a60ed72161239d8dc6526bd9aeb4e1b0342e9d9df84d4bfbba94f68d4a326147c926005522cb1b34c2210730d58490de128d9b6057d27309a58ff01f308f47b927e81f10564d2d41b2cb02a8105f0d59dbae86e33811aa3dc5994ed06d838e9d94ad86224b7e810be2948c4f75eda32ca72d319217135d0f965aa8cca688a48c28ff5cd83c2a93507be2b7cf9f49f8940fba268e6b102a6050ec1e40e923c7e07a8e86d0ca54864af59af82e41d0469b84412517ef30f865f82cede49b95c2556dbf10f707e80cc42946aefe1a1826bc0fea3803e80ea318eb9d4ba567812963a11c3acf437b6aa4402e339136503059f9da027e26dd3268c8a941e130b7a009f36274a0747089cc7b3837748346a563c49e88ae4b0b363916d2b457e8f66e9e201b27cf8f2614c2ee88989a9c5c0cf264f7a6f663ee23d10af694ef40688b4526ddeb01674569a6830c60574a826e18b318accf052226b55bccaaf97f4713454efe5cf335e96e348cf05016c1cdf151f2ede23a2b9373c252ea1d94dad157f27e3a960a95144f11ee985bdc38e81e863ef15655b462d79c41e8d6406e4c31ced791e225c2f6b828bd61cfb4108e7a2c3838846284ed6aec879221c8c1de2f01c7334e229321c9119c54f90f0eaedcc6aabcaacb71d99e42f583b325f214f4f335a56150528a4cdb63e3f86494ae8c0ecbe3823ab4ea6e61a849e2fc22ce7abdc727d7423e56ea37982e82d03fa482993afd7d4e84fea21572654f4a04bdf44b83685486fe4438192527c49575243c8e4a271724868fc6e78a907be3ced294299323a8e85b00e5d9b3cc34fb60131cde12913b76814d278bc790cfd2d7af9d129ce9c71d285556781b01dc869afc7662fece00fd1aaf6887e5401546acc6c2e7cdd1eeca5543187c80475b950541f4566b9203d3e70e8f65cebc6de05b9fad8c679e355e65b24c978b1e415aaa50e74017056bde602ae463405ef017c98927bc0ea9963926bec0ebeb5740056275f820e9f039ea3e0ab8d93c510f20c919d5795ee7e040a3da355f179e277f01d8206f78f0ba2b01ff61114b6a8eaa4bfb78288479de3d60ce1acfaf06d9ca30ff99a02da5919175d42c4b00e1277a7da043aafdf231076bf88f56e0f8523c61370fc752848c514822dbe46397847e3bc889d5ca0725ec6336070bd396d2558ee88c48fb85deab6c31767ef76b5b2b96c6dc17bc7f7e87fd2916144957da36e1c7b79c142af2bd07b53ebb3931e66ed4372911c6dd10e87b8a3514bcb04920df5d69db9a262f4f3be6ef06c010902ddc24e922e6f16e3175fe7c2c11bb32b38fe8f8e2a66e6a311e593b1a1013a6af94757fc2daf6e2534c3eb4114685107e11f7510f5986a5095a605e908cb319733f2323585ae3743fda7583b692379a275b9223ad0b8a2246d72e31c337d621256761ea68283a198d2fde9d58746bda697b3d7ce8c09dbf11ca83f77f2ba66f7a3eb1740d28777dad1330a279c805b4df5187b953e1180856930a760e5b026731272950c1f3628250f459fc295a69a664dfdbb699865218c0fc817dd2373debe6730f539d4e3b045ea907774b71e15d062129aca8d6011b12ffbf4ca3ecfed836037cf7bd0b55a9cb1bea5421d497be5a7222d992cbc4372b0b701b9c9750ac4f2ca4d5517722340a74337117afda1241ba760ea0c97f547fc07a29b235fc62d11e2727aede2fdd7b5121c4a2d43f13bfcae8ad2e3ca718e6c89c9807eba3013d1f94444eed820a52f530b75a71871dea862413a874e153c48fc1e99c0ff2aa1d463acfc9c2f19d70fd60d0f964f732cdf16a2917bec27d67a195bff9039f825834f4663f87427059bba2a81f656cfa692549e30330af31896b31d752e387958dc5f0c6befc665c94f69211eb33e5e878de96d5950f30981212e84cccf0df376bb9e5959ab332ecd8a549f019b51dc946a6c692db92c1ed4f6f59dfa0a95a1c3eee808258c9a370b940d1509b8fb490c8717f3abf3e2327c10bec8b33da0bed31458c8a8919db0be2b7628380272388a3e4961d52dd6daeeceb50e5ab49f79d401129fcd51735ace8ef3712a30f3a19a602ee00c53bf558488e0dfc84ca3d67437c516ca60dd5f64fc957cf4120efa6320c09e669cdcde41ada747e33e5cb00eb3bb602cdee9cdd735d64b61f1a16ffd49533e80093aa169e64b9733213906d70dc97cb0f435fc78cf5dd71413125e9f05c85312ac2ff33361b65675e3c5f5da1112dccbdc682880a43b2eb1ea5d8730ac208dc74f1745b1fe72944a88554617c123ddd8e25aa123f8e65e0bc16f53fc330edc1dd5a01f7793fc5601873bcb6a92b7e01c832ac4fafc3255b36a02a664679b90eddcddb9918586fb70b17314324dbe23ad371e754d8d935c3bbad892da3101e5a62c51ca5bd493861ad6da8f13956f4bbf424cc0ed0b1b3e7581d58a358e8281c4f1e28502fe5c1af35ce6525fbed66002e77dd342f30ea7b2343b75b117f9d6d4c0cbc110b7cceafa3cb90edc12105b8e023605938feb2813bdcb7c736c8bc3127ebc0de5ebe2bdf30f779736a5a4742bf411c9a1db1e0941969b86ee9b7d2491ab3692721052cfb16644bd81214e6b465d60253867594717509a5eb4a5bbcb8a2898ee3258dd7ba33d52121bf43e59a0d35d22936196cc87b80d1377e8c4d02b2e25b008b75a16ad1cc1bdd24d06cdeae2b3efc76b99e521bbf35398b2e21293ced4e8e969246fd20eaf330b0a8ce2988ef38ef80ef4bb6b7e6adc66754e1b285500999db0b0b64d1897ab707c9fb89900204e8c7e226059cd4b99cbbbc020770c658a2aeb3a44d22bc8b9ca37fe146602969c920f0b78e868b2c94dda81a1cf51c2dfae09cb67f4f59aceeaaa0959ac4be298a1c30453414effdf7c4895fab5caa1fc3b50481bba2156e3c4642dcc3a1056f778a20c998cd591ab57122b479ae389be45773e751278921b0c7a03847c0caedb9cba9a9b6297b45d510a3eec3699c6408e01bc262b26064006117e49c0f58def19f1e188c7873c53794e8d7cba6777961623dcab408f867913a8922cb26eaf57164a331146c3ce0bac416147a7513eed2eae34a4b1b89cace63d80fda90d5b3f284bd815f413cd25e28dee664af2d4a5cac71b7a7da49bfb04c253e8513faab650a1a58b1da293a9e897fd17a47bcbeb27db8c47ea902a183aae8369b54f03e9fdf256beccc0b6cba865ee98a0492254372aea82ab2221eea99315126cf4a7ccde232f082138acd0904eede0da47744098aef5087f58a5425d282da84aa3d90ed42545d11e04deb04418e1d4ceb933a34391fd670ef0c4ac8e192474b8a1874065f2b69ac49e8a4e51bbee100a3de1042dc68e1d6f7acffab1f6230c00ae7b255aab618880d1723361dd06598192d3dcfc46159b534847bc26a24688d30be649f786194a4bc8e425645a391ed6ea89d6e30469d984d62d85e29d2e8d5a4e3ef868f19db23eeb1c678dc1d7899d5d3669c7654c773348629d3817c3dade0e83b45aad581b092bbd62d1af6823738671a88446fec433fd51cf27c5dc89d2b063a4d399675e44856d76ee420c449b8587eb36364c02883a41176805bbc39c4e519e001f59a03f922df212a7550e2dd89a3b6d726679230f47d71b14f5b8b381d8cd36eddf3cda3418bf63985de4bbd896a6cfe27865a2002961353c74884d9c4be605e615759252879e3ba4583dbc00f643314fd3c07263373aa5c5429a1da3d3c5e0e779bd53dae9fa0de2002b1665a45d025035858ff6ea8218db969b6f560a833b42c36ec262397da4874919b4f4e395430aa28eedadf89659ed3e9761d0ee88010d7f626755a9d4e20cda396c6e1561663866b149415466514dd2a745824f6d8cab0b93869becc77cdeeb4ed8e51cf9d381edd83ac9ec7799f97f795acd7fc22a75ea6cc05ee46bc1cc6a39107be14725f65d172ebd6ab6963322117014e1edd882f5dce6f712c1e19dad33d791301148b90b91eaa0974c2a33ebe81ea38edbb259cefc228e8984fbfaadaef2368e7de99e35203fd36bf0ad0f75459d36cfe567b689d445bf4f152c75f1cf05b08b1c366b5b6e4e2297d88fd0f733dd030e2e0e31a30e821ca757d931528ffea8b389bff0f4a2f08d895422432099b71a61c42da13b5fcfb4fbceb3f940d907c835118b098ec265650db5f72965172672572da07254ed35983b01406deb4eb085231dcdfc90532b337e27f8ad4533e897177163fa341754b14925fd85370e10f009109eea04c1be8a4b23dda5f3e04121eb01dfd084285a569f8ea1222adee759bb0b02b09bffd8cec14436ea6400651d268f3ddc0ae7a8da36812900d8c9a16cc38c74faecc00ea4d04bcca9585099cbd663aee4f43bf37bdee31be7425517142b55a02b6fdca888e8b744d2c986bbdb426df3e33a42bcb3d73a056ed6e22cae8beb1b44153c0d4024038a57f97fbcd30c97ac01460f1e62f06e0803ad2a9e2ddd5646846697f252dc3ea73443b7a29ad0fd9c5814d30d9093827e8d9cc77563501f92631860157a197dc10d1e882067480a2eabd7c0eb79d5dad9cd8b2e281e2d55b929c8bcecbd16a78bcaacb0c2427de57469dbafea49ee20d4b529bc233ece2212efb76e5fc8b390cb487c46ef0204becc0bfd137b921a8619e9e2708dbd1b639f25b3da5b459356e8163ef550185d04c85f56a484977e39ed6ebd5de52a1dd2568acdbf2f9622915bb58cfe554c8500cc899b67dc916145acddebbf0dbb0b28d2eed199b9dea1ae89a7f2d1ec2a22b5f3facc8fb5eb81b6edfcb4c56e006ac743a31aacdfa9226005486188f45cffc5f9ba0d8fcb2716f51d130bc7d58109b7532d1f29afa0eb121d3f66fb713b901a59bcbc9ce7d0ccc520757613afa0ad043fdab712d09de8890edc0b43ca877b74400f08f0bdbf46521b84cfa52c644540a8a456484551e57422eda13c20e8847ab16da37bf52d49a71dcbe98c9bf6de9c085ac9b0e757a7c0510c4a956a6857b27237fdb7b68b96a26ca7ba9f8ae4197f0dabf41b6d4a3bcbd2178fd375ba250e216d703bef9b2225a7de448a87d6733bb2544c2b13ac4f64b0657ac69877c1e99ae01506aabfb90e830a02856e0145d94e55942110507e66faec8b8e77d5d7fcef048c87170f1d0267b889c7e085069214cffbf162c368c3651160b7e2298ace8cd6125f863a1bd28483136916e7cd36df4f22b1c952fef94317d6203acb6b055921b4cad80a04b4b39aab73de349f2e343ff0fe3ce6ea7d5d34bd5f87abcb45f15788cfbf5f957c38fd5e9d53d07cc48d0050f68c87c7ad62be9dccc4a7217370e32f1cb011d8dc7e7e0708fa1d80bc1b8bed3c4258e6d7629f1f707c16602ebf490da0bafd276b4d4d293fe3da73a247da58eb765c06bea946c7f3062835af06fab6e3cb853a1a724862bbc1b3e3e8385c413a71ea79d565e57cf85c43960fd7b5e80ab787fcf90b87372e5d62b44289b16e9ddc3981ead2b504b0eede61d888ad63b474273ae84b435557ffb7bd8e8291ef8b5674e719795c2c165f7d5e0c8e0f448a3eec77d2b4e1af0d281477fb4b7ea40faa1abda0fc9d4ff2033956ace05ff23dbfdcbd2839459fdabfa65b813ccadf80d04cd41f02fdec3ad058d2e0b3a303edcdf09c06f5510d4fe4ab615768ce84593fe0c9bb50efd45079bd9f0f148eb407ed208fdb96c5d7efa83928200cc8d0186515475af7cac5f2432dc9e42586eb34c29a61f8be6f4e957247e7d5d066f7c9019df3fd1386b300f54684f04f398431dbf532cb2cf7572c46161af3ff749880c047b207dc637ad2f8ecfdde8655adb922d0ff6362ad9598885d6bf9383a146b7b0659a12e1fc2789077015bd9e6b06dee2b64d4e3de5241ef990d23d45113602cdee3dcd247aa12e707c3ccf2377618317e54793546dac4938d56d40d57040b6e9b97d033860d010a1e6e26888fc6ddde77ab90ea14592b5fe7bce8bc00333a2427416d1981294b448185b19fd6c25355b5da16ebb4d02c3137b642c06f4ac2cbf473f2e0cc01448ab54477378e8955097f922ad30e019ac68dce94b292653ed98c78d9b4f1cf4b8431807c383f618555ca30e6782c84792354b584d188a269f0f993072b3e28a85e99a94335cc3a22540c85737be5a64e4e37f6ea09512027026a6a0aecb7b7c8a8a60df33ccc8dedec59e37d0b0beda473399431ce44179f1f2c1a3a04c4b7647f319499997b7bd3ffe3dd7dc7d9aa8241fc0a5b9dc48aa17ad7636e3647e2cb1b0e88831af7628b8f801bc8542bb4f1d7d55bd2efc6311ba22f2d4ed698272f6e480d510de988af7d41cc9cc2638926c4493eb97ad00909f68019b4ca84accfbfe3da88e6e497752ca73f884e788929d2aa8eeb84f564e14b82840ae9aa31634426fbe0272993523d87def0e84ce78bfddb93c10b0fa3c711999c7e4554489081840a2c62d9ac6303a7042d19c789de08ecc177d3e7cfcb72383a6dde326f3ea0c0c630689ee92ae330290d804497476f247a1d814958189e0e64be4a24d39731edd5526f4152bf824645b346193d13b93326096031a1d4b017b748a84c4fd9a69e1a112e2bfc0fb8096e95b4683b4ab170aeae100da16c1771685cef83aab16e146314d0336789a4360a5b48caafa334c03d7d8f7aa87c2997f05bbc89fdecc15ddc72a234cceef4907afa47d8778e7eceea02f5391b0406d0da1e1e01c4f3734e7e2fc9460aca5d74f80231d085617c5532da837739edc466179e83e5d0c002809de60445b0baee519f5c24a9b432fc2cc3e0b973937cdd212201d7a183bfc18f1bc67d6d5d17df556cbb0fb6861aeca3aee47008787690b49ea0dbe8002794f3b1094bb3ef49770ed30bccff559b203f8004d6c0c17b0463e6cec3993308dbba86b3a0d3f372f9d64a82ec43d80a64c9d4ca62cd45cfa993078a8ce4377045b230efe08dc56e4d0cbb368d1cc949830ea4588cc70a515177f971e0651e3c9122721c8b45c3523689cefd596ede9ef96a9fa2c2587eef3f5736183dd54c9af715ed9670a5ae52648d9ff6fe3f967048deaf9ae753cf833505bf75a801b1295196497af7f0fb8279bf24bf2c7dd7384ec07c046e92cfc36ea977fab76e0e31af4e94fd0857539119d803c972539a9ff31f50d612ab05f53ee3f906a11acb6e60d317deae612c093dcf25a3f02a422e2c290d19151a23cfde1e4b81f641e862c6ed4b15f3e43311d5cfe06f602938e2f46ad6b777bba3c779faea3d3e6e848775447f705776505459caa375ce1bfaa8cb18bc3fbde60ed201ef1a3bcfd5f3a43389f6dbe4d21201cd36565687b58fc34b32dae63937a74eecdd992280e64121740fff2af329c0c2e1f3b6fe0e1ca57f702693cd648a97156de10cada7503f357b61c968885901bd28eb86b081b77fa06db3a4889f60cc5a70c999fbf65b8b83b6601c0bbe3396d066f64486a73940a80c6866b18fee7f1df150404e844feb81d97e049232a5924fda17dddc80bfc8419e013709d000d6d7e883d274e183b5bb387ad8d3c35b95f1c92ab88981721b293c1378cecdb66b9d48748a406536f3079d5cb18e8f235cfac76a24e343f887dbe86c822807ace21248a18249b3fef24f18f512e8305f0c1a3bbc99fa8fc700b3b8fe9506ffc297c5ac1895bc16f223792a65ac2f967c33442043be3e45b90d3554c9d1c869ad9b1803999cb4c5e8909e2c95bd470bf44386e30563b3a717d8479da5d58978ca69ab6b2e1a3b571cbc742e56a7537a362903f0c84084cccf21520c3ec2c0d9c0753cfea016949590c1b9d5905636bb8de491165a4a6513a9a8d46901e8891ab0cb4768112ff3924533ad668da529db82c6e8b9b9edc9680ea0a0a4e0aaacb061f6032a65271ec0c8809c2a3f079cf28591676b7fc0cd356d288506694e4bf23af36b3f7af56235760aa0c472cf29c7fcee13d8625f863abbcc19f5d62a380bb1ca5c1e4bb60cff0851ec70ae7489fd2aba2a7bf35e75a51e22431506b1435935d9d2ec66a501905a55fed91f565a57ea493a67248a18a42a82a863c13c073be2648021cf6320ba5372acd7a2b1ad3c50c066071771f567b4941b2c5a083b898d16cf14a30cab65c44cfed3109c39fd631645c12c7b0b910e429ca208c6d0ad62db2f154fe5c305dca40ed10b86fa4a027f79260836d5ff40865ece59a47a1b271b3d31653a507f994c22b98776923c7f7b3cfcfd0c1bce62a8426c5a5947e7045e03377882b46fa1900003ea83623a1977e967a620cde641a44d8599946b9b7295684f2eaeb999dd86f768b197e7259e5fec96b0537c33f76918afee021f745c7e40fdf8c00bbf327c818aec16635e7bdc74c940a18ddf5eba21e2432f1b2053aca67f7270d3253dbd3154d36a695acf01cfcc4ccbf8e20e4480656fad058d3acef84893da18304a06843d0cf67407fa26e3e7b0497ea9d13dad8c39e00e97f2a6b08830309645b2e1514a37e3cb1456219b92283731d90cafcc76f38d0dc0bb8a20285a36634a398bee59f7ee0f24d0b7bb59d7e45c501d5d8d087ce062c9d53415023230141d2e50fbe5b15429bb671028dc5e44b04110e32b513bf6d21fe709e156861644d6b690b50cb3b9cc0c9cea2d952ae83bb8bfa5e25a564a925cd9370f982b81a95ea1faa664724ddf5b2a10b12baae6a9e607db94ef14d8dabf09bd25dda02d8f70f9695d5a9d425ba86e0c07302ac1a898a33482720f469a361d0d53f94b38126046de1ffa0468c5f75785fd5d2205fbe44fd03d676269bf45c60950466008b7b5509d2128b6326ab59822c6fcb14dc0eeed561fbd874105e3a15d99c19c60b6483f3e17bfc5f49c76df76f44312a6667f97336a274b94ba5413439641ad4a51d03ffff8b9d2e6e5f6a87eab334ac39ff2f93d5aec0438d738fd2494910dea42ac86d8108a1d9a4c17c09cb38e9a43b7f2d81a5550d6497d98f30085c34d6da797a27715e2bf1376ec88b75d77d4505cdf63bdc778769c3cabb1241f0d14e1d2ad03e47c9ac58a29680d5cf18bb1cb39e6e84f54d53c534a91e6710104e83c8e32aec7a36e1dc315fc1d6a211ec7bc05b102f00f1e09093e0f867279ac681d942a7328c8777f78da8087ff8c554ee7ab2cad3a9e4723c2a7980393c56763654e6cc2f16f3a4ee9316da8f89a3d3be684d5932bd2aca276c1e75bbcbf45495e0b2b804e2f401ce208e04ffb9e8c02977ea7c8891d39328a911fe7fe275488583409f3cf3dc7d61f3ce71c27ecb0c2391a6eada10b586ef62fdc2904a3104ca31c44e001242986753270bc272998a8b202240ba66d6191cf1f6728100e69f614e2368fff58a77d1a809814b7bb395d929b0c0e79d699c84d050c9d64645d4d17f8aba0ecc14b70e4f5138fa90a5c886ba6a480a09e27d1d4e5bf5a7017dabb55d3c866b1241ebb140acc2fa34bad6741e5f2d56547b50652f82a00353133ca212a226646bb101e19fe13034c8c9c49ea8e6f69382d1b189b2e4f44573101775c87d8162a83f469e2f89c775c9d453ecee8462d217340e52b8d91eb26506be5c4cc33427e9a171c1fce97a81a05354b624eba5ddf1dd82e63df02a47113a95406f255058648796bcf8545852ba3bd2b8c2223c14ab5577f3db246df63520c9c7a5965db840bac925f4a1cc0c4e26b36691c1151c23cc336bf6ef6befe89b6cc4588e3615016070ba1eb623ec36d86186c15bbab76745933d5fa518309273aa6f91ea085ccca37b30e3540d4a8d59551cb4994d168ab4b4ff39f45cf6f186c8f0037961629039ba116e4a0a670f116f63d935d9892e62024ca8c176d5516b19840a6f1427aa2199ed02ce5514a50546caf52c3a17e0815d733aa865ca639d504160151e2319b0c089fd90225256e9896db769a38fda1e70e5d03518515a0ea62d2e3dab44990326e97c932308b558cb346bfaf11a1fa4fbd1427e2a0b80c1bb55df25a64dfa14fb35f8bc619c05bc8d4bc26ae001d2c7a979d29a22cab54b4fa45601e0dffb2abd33db10e11b0563e45c1738cc476cf919b0e71237b208a4f5fbb470d2c4efc46e8d6d835c825f98f9fb8b4a52979be2e6d4a8222a63191ec2fdaf2bc82e1c40a7a2ed45409710fb1cff0e105369cc45ec8da3cc560a43929817d2318677601c1df1f357996d84cb2bf86e1e2aafffd8af0f6d6782004df50ac7816b622eba8aabeb4fe84c5c20ed224e714ccf16a3eb66a4751c86b0a47afb1d21a8da7b2ee99c9c164844f864615f544473ef6e447e00dc02074cae6f1fb85e917bc1550b1d6923a863159c4481b11dcde8b7e8b46049f8ba06585d2f1d3e359e23e423628d436b724a219ac6b7740cf68c8bcc68486bb6600a17ada64b40b77400747c72731b21b507e541d4a5ba1f3b568ccb83bf22c08b574f44e3c5c8b5511747484c6e9c78ac8333f40bc8b8d9cc5e6e6f7b6d321ff6dd8df1fe260512d2317f4c60f7e53dda03ea34e853d35d11fa790685c43579e5cfcf3d5fffec32944528304a57a7fbb5cb41f4acb45008c820e4810f8e42c8cde08546864ff70dc28525c0132bf0e5e90802d52d1c6f3650970a2dc8ab215d9b21b4dfcf365eefef1860d49311ab79a32c594523da38bc4bcf74ec3dc84c2b0ec64b99c844a8bf3e74905058fe3bce47662324f6554beb7fd972339579e9e486d41bda46e9f8795dde061c33f27629cedf19453e93c3f0d47103159ee3265c97009c2d352774b7d64b08b4222c75cd98c23c1f0375dbc8abadb85db45e90b44170d9b9013788e24da7f5679781dff25580dcc270f3f626396f4a9189ac0c44228518bf7ea5163ee94d64f19fd3c0079dcf1b4a9cf8937bf9bfa045ec58bb19e797223b2b0ebcd0de8a13db8baf85c7ac381a3f4601788091cc02d3efbdc368703bd4699e8321d9afc856cb726cfb0eb772bdce207c670ee33e042a47495e0ac5d50a756a4c4f08a129d3b5c8a3436434282f56cd709d538f5476400fbfaff7aa3dafb88a701adbb8035a1ea708a20fb91ce50bcd3eec491f525a208fc3ae228bea8101d6692acc59fae5a5b8107b280f5e478d9b3513a20917fa55cf98eded6f87ba318f9bf85a1c79b876e4853f137d558df1cd1c22b49d74c1b2f2f914ebee663b6fd81b99cff5f75fb1edfb3e4d13f22ed908eb05a452ef843d4ed1e3d5a21fdb03834180a7012d5562675d0969f6443c89a82fdb0a3f04790590a64f80e2f1d3346c0e61a2c2e5ed18405ca9b47fe97873a3b711a7f3df9f353200c360473efc44f0cedbc39e33e355c17f0a251db80f1d2b1c8e33bb6c82bf77fe08cdcb1319c61613d6207cad9ef33c5a86d1c49bc457b23a7cb99504de500aafc96c5ec763975cbbf71f22d70aa91ad9a380a7adb09af91c130431caca822e61b378327127ae608342aebf332ddf46dd7924e8120de5549302a88b28ba5c7018435ae2301fa26a337c2be264bcb4c8e1b52a13f6781d1af4a1a7479f72735051a9f4ef6bf4dcc15eef415f54ae51c7b90ac407e41246c2f397f2bbe145a5bbcc583ea7ede083133c58bb3aff714f9bf87f61a8e12cdda3fc332842152bb27989a861d2cf2521b4fde1cd99ab8ccad8d174d820af65d891ed20d7be929426954b34822375bd3fba301df18c20de448b941c905ce3f82455912aa9e1bf22d312c8042ef4b70a6e838a39563c7be9100a9f0d4e2d1b36743fe095958a8797a8fd7cc16c3c70e495cdbdf7148855606a6093f4cc2ff9eb01d794a4fa18be3b2e89c8abbc03b6155240df7da90e1c07241677b93cf99fd6555158d0a141e55eeb069f10e5d59df958e068c900b578b7c1548d006dfd7fd41338d552953fef4251d16315dbb263d94543238866a7d40914f4c3f1f6042ca873a12311bf085af687f3aed3e7d424dfc326c7de03eb4c0a1d6b940af7b6d16f98ff20c519f153566fd6c861bddc2e6f1623c4388a8a44540e5c8a1d967ebddc48b2043b05bd0e36febb3d11d5888788c309e0342a0819074f5334a173900643d981f88f94e398aba5baed4a04f40aad0f9868586101f029f877c0579dee1ae3144736adc8a6f234367927a0d204bebe635d6a1f9e9d52fe22186ad3b76e630bc25c20f3b77c9751c15f0c3814d89ab4bccf251aacb9139f593012adc33051001627850343cd59faf8f1fbf9e85493819ab00cac570ad0c2f96ebbc2c2f4425f8cfe557e5b79ff7d009e3f1ab33c85ff339df81000a069a6d8577400cff24e9a9e1bb5b16f766c35dd29b696170e6275009c5b5aa909854eb0b4710b6143a042e97739489e85a8b12e095099f8de4b8d4d313bd9446c9de7395c061667ee38db84893c42bd069ff0daf9fa60d0a3354470f134690de3c4ed6716560ccb1a54bfc5dbc22704382a71cc780931f003b3ff0f831ab90cae3df53aab74bcdc34a81e096cc77b999f26a89c9bcfae34bec3bcf82f106b3800816d71a505dddf4fcd292ce1f1930cc4628782126d1d978f021e8938c272eac58bc14bec433599b08f31b822c1e861c9164f55a542eb3f72dec663804d8b72d319d996d1dbc60d5adf1fa17c3b94d66e5c7e785d333dc50b67f140d80b03f09e3b2ae5510d886d921095d452303c10dde3ced1acf1caf4ffd1abdbf73988c9ef02f763668be456bf264c4baa31f71b3e90af68ef48f011d0c837b8a76a8d530b7fe7e8d976bd0e792c0f4c8aa4ddb9416f784ebbcdac29032d7abe53f518dc3d91ee5f7902b34279e024ba217d2bc50a221b80d688e9ba46f687baa3af81014982febf10c8d74125c1fe9f08e69ba092c0ffba7ff15b8632747b2be242adb5564922241399773c582e4d0a4b6b6e45ac9e1a6eef35ec242e6eeb61c21cdb5afd57db25b4fedc284cc4b7cbdba672edaec3385233c5562531f1d0603b9ee6f3cc41c63258cf82b66530852b091d7c0db9a87cc9aba6566216a25d86cffda409959403c3847a46d8a362edd027791e638dcb029cd7a8c215fe37947096aef7c4ce2027d6b38c18a46d1d35bb6ba7bc5e44139ea3ebacf8fe165751acd56a2e9eefa6cf91801175009326a425ef5f1926a74f5f21d0aec18da731af88468688b44c53940ef4002489942b3f749188202aa001134d29d036c12a73c4b55f1e510a11338231006af54c30e7e8b25bc6a79a10f440fd33653bbc088731341793cbf5e37613898ebef9954720a64bffaf80d4345459973fa17465ffdac8242735076e4d32f54df4bd8ff5a5185b2bfe816005d0128e7d56df331472a28b57b7d7a4ea34e8c7bcd1f8c6c0bc10e8cf55daf18f6057bf72a526f8b0b7ea44a379ab1f73d84c0d77c89f1f204bc522bc8d270e33564989d10b328548ac300134417592b43f7316dabf67095dc58cd04ee0b130c5a77fc883e9e61f589607041dba73b95f12258aaef57f2214f4f24b10cbc7b4014685039fdf0e9981f0c55a9be17fe0f38600b6dc10c43f1aabbcef496371d26c4cfee742f691c64f623d52b6ccff4c1624269ce90217ced070910fd622b99f6dc10c8f3a97bf48f7ba644fb75fd776fe35a6b443b92f38c54092333e97024574d2117b328db0081ea86edf7728665e7a99eafb8ac3b9207e6a5f3eeffbc0324e11e7dabec72c562f5591063759933adf605ec38e0423a29a0ecb3385fd16254784698c592f97dbb8c4149204a7ac2fe01cb2dcd4a9861ce26e08abc687b3198131340a5e5ced197b3fdf00435be8340761348755d163e3681ef677ce3a9294079a5741243b97d36589fc68ab0f8aa9d003d48f5f2004c3978bac354d0cd0d54128c9d5c058f27bc42b061f5f524876bce06560b1278b2637ec19074f7862fbcb7d1e36ba69a64c72468581a25828d147e1d3b462181a8e4f1bbed503a25776f75ffe3be1956d71d33e8fb6c4f35874fbf1fca64217e291b175feade3d73c7bd514b07ca01d7d6142247ac50e0ac2a5967eae5106fc41bd928b5ea5ce204cdf35048966796229aaa27c14f24ce734c240ebb57fb52abb78d7ab41a22078c00004ca3f08b780cce231cf247edd0d5697e4146207d435c618531c709f507558370e1601c551fec6db80babfecf4c05c4e2c80cf69dab7b2fbc74a3f6ae0eb04eaff9f1f91de33e597c0be454b3684b3ef7dbdac4d2eda8b27f024fc768bbf398f7093a39ff2db919ef43bff0bf53f8d8e4c421e702f3a00a37869b3fb3f4dff397c7900a47edcafad53432f3415176eb7a0befc1cec5bea220ad87ee866e0390a1b64cb6cdd63829c88bf5eed58ff130332b37aadc9158ebf166e5cd80c2c3e2ab79060a7fa2db7eb10b3defafafaab70047014952a48ef508fd47ef779ee0a5f915644bc8ac667f640cd276e5e7a6598b662c86d2d620b78f0d5e28b0992c930a443121c7a2ce086308d2c2191a0cafd2148b11e47bfac034bc0551e1c5bff1611cb7e2b8fd6d91f8c17012e3af4065a5f99b7411ef10557cbfb0a2d1878820ed1c41b1f15498f760444ca51fb07477033e543f33893501f50c2c7ed36cd0f510b9732fa40748a9cef09671db96ee70f7af720db35501581518d98e967aed2e03c3b207928d1e78f09e794f45b3ce62dcc8a1386226f39d7da845f4cfc9114825c5f8d84c056f55d21a1db5f13fe1395dac2c3e85bc9e2f1e3c284a2ac61879705d8d65b5cddf712bff13f4720bc02c08539571ae3872615c2f5915fe241238e1022a3f8ee03c9b120f11649915edc36a371fe872e01e89c31ec3bd8325527153ddf5352a9a774dc22dfb5591fbcb83aa4386e1eff844e915c5d7419aec98575142ebc280fe3d1526a1a7cd25d8571727d17872e888e823d79c21504ad0ee41da990d50a49f1d46df83e8af07d064b6a133242d0f77e02b849a60f437accea3667c6d85d53cf402779045487ae2ba585d11be5bf77cab34dd42294af6f2eb15a459601e650bbb6e830fde95d6b322c53c0c6d56062b34454ff93bca5a8998696d94a85cd6c779eb9d16d028f59c29fcd5d643afbd5698a0c671f658386e50005fc93acd44febc1baac481e5b0082da64d3aa933ca4612acce1be89fe5df192be1f67a85fa31b0275c6ea945c51e82105ff1f1c0c4317d53b9f659dd8435f3b7de677fdebcb044e19fcb058872761026428cac7f94139e8e373e881a3ced8290d7afd023398e77ffdc3232c6c56ded4b29108be2a0b90c3372ae3e39d7826daab3fb4e71bdb732d2e8cb62f927d440a8a229c84f7941f1d67f75d693cdf167d1a2df402cd0c940667d024d297c5e69118d037a1aeb17a5cbe138bbaa48f61f49fda55cf4d2052bc22cfce7e50b03a61d1bd57e30abce3ff70f609cbe5c43226fe9f4afdeb9833e95eedc18e9e7c421a30fa7ce6d8a8e8069da343fa03b6b1ac3f1eb852b2c3e9689e9154d3b2195ea0d3f83b8ffb17e212e367b599471ed79258c70b0f5ac3cd3ffb29f78fbe8fbec7b297e34dc6e583a8b098427f88c255d6d6eb015250ef37cd313bb95fc7cad3f8f36b551b26ff5c7ba49295e3c1e8691e714270a47d6cd1f17b547a1296ef490026be36f42be766ec7393bb8732f0bbd53a36b2d0d085718fa0698c2b1e114872dea3aedffdd61bbf8a7a2149ee7263a6b8bdb5d2bb73fdb450f284c030ff8d47ca862343027d4205af147070d41d8fae4b535c5b056f75750d342f50125ce05b12fcebf0fdfef56b68901cf107f6f9eb33ec4df5b10afb3e532ba1cb5f2baf9f50f9bf41e4afeb02d487c1807e87b0bfa4a2f64b9bbd34b288664ab76a29fd1ff40e53068d5265e6838925dcecda1466eb33bef3b5cdcb30b31c84137d044877669be7fe092aff7111f4efca7befd4f4e3ca85d4e876a185f09b826fc8965bdfcabe486e4f8d9a1aaf4231600a8c8e1720286ad5368d41dda4eee00b7939bf1456e3f4c40261e01d2318ef7a3802da9644fec7368d5b274f60f59218e3024c6446d103c2f173b23a70cec4406d957b6778c451cbfe98d43d395fd391bd7dd56651d075d687ab65be50ddf1733ed1c771b25e870dd84b23d29e0fc7839791daf0d3d300598e630ef03b8ec2aec6e320587193dc634dfcdc1e42caa5b7ccffa0371e9e7b6a5f4af500f2de8324b2f60cb6a28c2351bf7cd7bcf4f842561da72f385e2db85f097d6c4996908d0b5c9b133940ed41941f60f06af4f54ee44585b17cce9bbf78878e9f47e43e7161bed0246f593053f2597bef71c271dfe365c839df95d855d067085e289bc864eb2cbde759654d68ce3ae98b7757246b0aae623cdc6aa2f227a4919e8d2fee9517aaf33f2b4c5f8428d9f4e351b9834c9d484a2a993bec6fff3d1ebaeff03fe4530adb891f1f191352eb59af1b079a563321a5cf7508ea6692b62ccc8d60a640e8b9ccd07b45375ef221b8392ad6ee8237b6b3de1bcc2bd8d08c55809d27bdcc0bb6c030312453dfb17f2ee4dd391d0093095f8b2b654f1ad554a39f654a4cfd7387b8419bb68f43c409e35d1d6d023875420ae5eb9613e769b30cc6bcbbd0e1b581db153cc62be18f11a712f901b154f23e48c4f858589125fc4962af043f5e9c4bc40f8a8592fb0131578a1f214625e9f3c4b0c4e863a25b9fe0c6a96efdfb0dccc7787748569cc4a18c4f912c2e1833b3f0bfac0f129325f4c962af043f5e9c4ae487c542c9f940315b0a1f290625e973c5a0c47d494c95e027127b25fc71e25c22f403bb32da598125f60b6227b5090099e954ec4ec05d7c1ed3df0aa3e8ee34bac119057bbb1c44990cbd0e71e1c9d4de5756124b5a7fbe993d53b8a9b183ff891a46227f673912df0892cdac36a6aad1f8c1d45c1ee3b8f802bd4a5ed0c8387e5974d1d8bfdff303c83effcadbb3418fb0e378a5132330aa6a7100b97dad054353f804ffaf304448db127a4ed06f71bc9cecaa1ffecd0a11379266521cecf039d73c3bb96df21fc4a1205f7edcaf2612fac906173fdf5bedcd3c37c4a5b4c111ae6b4d891fd372edb9faba2d9563a88fb78ed741014e362b66416342a1bac44a3e0fe5d98a7ce1fe7b42776ff806d1856f33d76776cad7b2e6255cc8141f773c86527cb7c99c3acda39b89dc04e9d9ce1f3438e1d4f6ee6b47827db47f4a592a8e3406712f1495e63e3196aaedf79d5e56d326d89042b803fb1e86d88341c58392f75deb04f09fc0b14067361591e881ace8298242132c4215bcbd9d5dd0e5c473ecea456b77b63ca07b3afa019469a5ecd2f21f78a95f20572e1f96c6de9ded86b30ce6d0034494903c6be81089e1f4bf6d7e0956af442dba5ea6e785f92752e51ed19232691484b809e1af88a9e84cc5ca7c0d7eb52bc273c8acb3b4a10601982cf75a7206f317cd6f8e85b9a0de3957d80041fec4ce573259e3c64793e4e72ec04a843b074604a4d31963911517ecc8d775e12c43f1e53330393a2e6e49846f4ccff3bc01c446ef6c5732edf0e5f2ffefe5a5c1371092c3e82b3449ec383ac6f33204bdb50e65d1b6bfa51551a0796fe8f47685ca22d7a9b00eac0e720e9ae9c12632a2a03a31dc571419b433f1dbb8ed1001ebc73debfcb3d256747a259ae4aefd3b886e85efef4f453be964a45afb75463155541fea1930e90c2c3c9b9501b4692c11946cfec6fedb753556d8653d82aea955bfb9d6108000211e059e99c6f55923ca4a8cc29c27bf4ce55ec386fc8aa32e9410340be858cb36aad530e424531932561db70ad6d0b87183b08e6f0fdac4eec2f3000eed756e945970ce45ccd10214058301668670211c70085bda0f1ca8e595d73e185a189cdb0e768a0f642c33c7c44e8613519323bb7777948600b207258d0bd5f01a346f24990634b720525048f3892e653e6dedf9256a653f0bec3a01d68c561517e368fa4b14542be20c0fb2e34f5e20ed5b9aeb776a4834c6e8b21935812863ec4ebf429661d38a49595d0aa06a030def16444cb9dbc4ba5cb7954dd8b0a3ebdfaa258397264f64c285a589f9270e54973fb079d558b004f337c6a5e8da05f620559ecc4db2ff28a88a29a3554b90a8da88e5275eedd2f849a824d64717bff8662f0b875f002d3acd0a35d655649d06806f5ca7a38ec32f6e54c04eb12144e4a8bb55dfd9125601e8da151ef89bb16204aef4f906c4ca3017ef0759b8fabe81fa0730d8a5eb764c2d4dbb252ecef9832c353225fc361f640f8d83d4c7c0916f5423d29e754dde63e81b17dc176a2a4843a375fdc2490b207fbcb82b3cc4b8e9ec54ed38d5760c0db8ea8a8692f63b6a24286ef45c30fcb287c2fed4942da80a7a8c95db0a0b3cdc5b937cd6d8f23426d2712c2d3d67bce591735e2e47980634872844a1cd594c62e13641dd17cf529ffb854e8dc6ccbaa7f955e4d8e4ea21bd990018209e8168b4552d5357bb06fc6a5fe5186a6823bccc5c4b34fba9301a6c64425886441247e0daa9f04d73c3e477a24529e6faa6f23206d89064e55793c650ad14ee3a101dd04ffc9f69743ca80430acf66c1b2dac996bad6b4b88b0441ec9202e758aec263a6c1265d4dc45eb28123859f1ed103ec880d971cb1561eeb8cbe5f48e2e00921d4f9e9bd5cce91c5e66b970b034404f36ff0529ead63301274388791b9c866e663991f8550c0d43120a2b62e5b343fd8c0df24bc6acaada66cb4b541cc0d92f7f31d120c8a00522f3e657f5e598338a4c5857055a18ec366a3ecdc658d4939c113e8c51725a035342dbb67e32635b015bc99de47f944f7ff2c2aef9423a2fcfd81cfd7aac7feaa7814df402f127f84931073593297d247fe20340e701337b8050f66fd24aacb62977b5cca415e8cd17c74dd46965a535e532d06e4829d9d6469e783aa1fc6789ee4052848927ed2270a0e8045cbd214972a2a5936744e1db9538a1fe189141bf4815b12170ff11a8af103b81fa94e92634074bae14b7087012839f16cfe41b6584ee19343aaa84a38484d2b7304b0f94e46b2a5f4445d8b3a2a6ed128ca1938e5cba1e58a5b71ca6d019bcdef760776f183662ae4923c418c476146faddc46c1436219987a79c9f02ea72d3cd49e86e1c9ab6a49a79944c867e4d5bf67eebfca2f33a10e9e080572312f7948f615bdb49ac58ea534c1951f9b7217cbd06bdd2a14e57bab8a26739869318f25720d78c4e31fd94e26813e4e4f4021271ceb8e76d5c59aa9a6af909c6342dc19a58348c917b9e6d71452e983925683408310738044f2433f2651e613d5cac7955c579da2dba92ca37880c8a9af709c057fa6fe387341eb96a1d19764d0e6d5b4dacb5edac17dac2ff750403da464b288e148e81983474452e9ebe0588d4322f7119600e4fc868820ca7be9451869c54d0c20fe8bd7b842ba150e7d799a40057064e460023d794738598eb3003399e79f91f600ba8d502fddf306ad2c74b7a8e6ce995cf9d96fd0f927b29f6981b6410fb8fe112ec7b1037aea67aea09a9f068bf163c3165bbfde371203c9a064da24752231365ce951cf2cd364931a0445190afa111cfad8a7e07fb0c1d432e4266c0f48cd0ad003a51461d86f764cb3b0864ee98ce1776a6388da639e5d19067cb453f2eeb2985a6f3a5e2890a0ce7d019f50f6021b0f069da97e618b478476201c3b272da360fd527e1a8d9ee96094fa9241f7592f8d389bf5a89aaf132709ff394a938c562f915877dffc21ce04eb9cb908f173baabff5eb57ad2dc9ec017f77012af4d411da88c2d813988fc565c6a40def27897753504800ba658f632b3f9f95573350495838816b4b5f4a6a2b3a51b427b5975462c32cb0700f3bf160509082fa178dcac57101773933b34576b0fe44a7afd85095e7d9b5c438febd081c302ce1bb12b130d4cf792d35c4c090ed7f590168de284abfc0ed9fd5dbbeac14e3e803c9e58163207478fc330e796c7f0cfebfe75e96c3c0782390cff0efdeb77e5bbde1ec5e16d46726061db102e57bd321134648a48b79befc7b0e0e4db9458ba76c93a17c37ce7d1e3bf5f9215bf687f43722a1870a521d1db8c55ba09186560487670d0269efa2d19239439f7056cc2c0011f2bf36480a41060bd0f2a8493b45fb72561d36dcec836b31ad8dd8117e9987662c7d38a0e58f94d5d59effd74beb3292d27608d39a457b44260d2a01c9e0b472421736e9d2de4cb786bd392741f43eed1926ac3a6d3d715f4ac4485046d67a015d131b5123d231f196849876669b0b9547cf0d3cc9d24a31f4d6b8093831ac9532c4f2e540e2de5863f76f2f6e27b0ad7d955fe87b02a87bd673196a34563d7ba44fd9a1a45463728177b357eddea5131aaf841e71c0d4badf439a014912e3dbb597c464aaa8100d20140bfa3e940c9edd9f41f726fc1393fb0d5d505f0995676eeed106b51c9acc30e0bda048531549590eadbd810cdc7116c6cca672b82f42dce9f78e1abe7dffc7eac15ac68db20ef9716cf9caf082a427115271db2afb7bfaa8b82d89035a7830843cad883d0628ad3981a1e60d200c27de3a081cf7d9f29ce9596058bf096ff33896a9cc71bc6cc6719c81a6f7a18a198960697ad4309eef93ef2c6f0db9bbd4bf6445f4c428fe1cf695834860d3712425c508a171379fbca2a0029aa9bb90e639efae7cf13f02caf9f0f81274a7082ba0613d57dd6ed80a728fe601f1a7bd16df138807356090e2f5a38cfc13391f21a7bc071c99216f861d6a06a4c9d4f333bc907df5b9da2466e8ee83a5c89134a60558e66cef6c28d08d8784d03439a498d5bda832d4c11628f8fc12e52ca304c3e7c5b045b1fa9d050bcfadadb096a2e6e56e3579d855b20c67c95be7826f9bbf45bf11a34add265d4091d9c77e43069e9aaa802f9851f693b62cd689197e6f8a495fcdd8dbe782576f08df47a661242ba341176db9eca8479f0ff6f55e865d90520e1a51413e868c8d05847c84e2b2488bd0819b7d3d915442d2d0025f58be7bbbe41ecf533e801c061fe4398272a9850e26c1facff99bbe7ad4c1dc740287434ab2c04f7db7cee5f8453ba33ee2921b4a32226502270718475dda922a26a22b666627c22905a61a29bbbedf3d6ae29f6bd8307a9c4c631378b56aa8b185f659dc9aeb2ace038618af4428cd9586e9f4fb8b3f414c31841e4d223c924291b0c65605cd63477b4f1a96eadeb7f41ab9ae96d4db9b9d014ed0a9715c533c02743730c25e4ae4eb9f5b290d10a1ed5c921f2654dcf3d44b03bbf9db16d97413033459e5305c284b416c51482ce5f604c18ecc886e8549b81d86dbfe8ef8ee0b270a8aceb08e5ad8b8ccbbc522469b5f37d6542d898d69b91c81e42f835524f3c3332ac28d9d5aef981a9517490cbe1dbc650c91c32785b4efeebd25cf6cefc640355af00dac234a01553e7f0f2e70746683800e300d9d174d84e3b5ca3f765c99fd24970bbfb357614e2b9d60b0c0f29dd83933912c2717622e592d1b9f040c5ef35b54eec7707baa56023141b462726554bdb3d2a664445eb9d8a00402097005a8acbaef5dd85400bef8e2e95ce5c8d4fea0118235adb54550ccb9b810bdcea37c1144225c04f7c5918a1478aa00dac572e629a38a82f25f55a9bf3bc63723031c80ea9adb41c582928750b7ae45cecc61d90299c99fa39ffe2db4b770b84f5d9312a00b8247eeb8de444713c5a4c00b4ff889de03dc0c3c1b4005a9b51c4de14abcce7eb8e5a3dd451c78c8802a03d71dcc0cf8b8a8ed63520bdbad4821a083256f5379e9901e2476caf1da23ee37a1689e075424fbed874cd57e03a308ab130b2f0e8e6b3cbb9cd230e4229dc76fd02d7ebb34262bf26bba44498a3ff47e6a8316f6a14e38f3c9a02036d6e96b90b816eee3924769508524c5e9262e635221c9a9c8b43c597c78502f9933379bfc9f8bef3370ada0e0a829a8975a5c9c0c1b48adcc5fe38fedac1c95c84425d5ecc9ffbb7e8fb4cf35673f0e20877aa43d65217b5fbe7a4ab7b112e3acf456e94b65c8128cabd2eb85568f29815400e461e0bdb3c70c14ba72cf2011b62b21aea36c39ae05550954162a390b91642c4400b9c4726a3be8083871baddb6441097979340c4c429e14054f6118720d94143b4ca2c3ecac0f4390802ee3e66d440a19c8d601f39d6b39c4e68fea6a8da56292da20a398891a15193b8e30c07d9c0d1286fc836203886fa383dc50ee96f145bbb53cb467f3c628de97d10f230629ae34005aa386ff8762c0267439135d12f7f95903f1e5c06b718cf0dbc5ab6158dfb97012f9c6ad49f6d685b5a8debfcd47dac7a544b250690dc8aabc17ba6080900c3b59acd2e5e8e6a9ce3b460401ec46f43fdd2f5df0d00dd568cb42bd4427eccfdab58db4229cada8e6ce12e6a86d7305eec5b72b5781010beace34a5a64a2f9a0180cd5ec9ee1d777613802185f872013890c6bd898d369b70f371cf96ea7304346b2f2e0e23786ee1815699f7a32e3cffc7b1c0ae5bd69ddd937a99aabda3a89874598fdc3045519717793748b1871273e204f8cd6dad674b16d90f2e928b0d7a275d5fc4cfdd74668634934ef3e0764281b6b624bfabad181bffdadff29a492e36d079e7d78185bc33b69ad164ef8225cf1c03d8439767d93940fe021554a0b2c66a6ca919dc51b0ebefcc6e767d0d4aa355c260c1c53cd522d0b5827bdf2da543bd9848058669a6d8d711bfa8e7334352d5f65b179a22baeb1f2af9168c14a506e6a1cb51dd5146e4b2d46fa1a2bafd9f163f40f44ce68560f0d42d3693eb0a7e28902753a236e0b59f45c1596c34ceb3e78f180b1aa5ccb93091ef436bb174a6963de10389e74fedb3a1c538b3d0b19922dbbea786ab2b3cc70b469d48628cc3d6e30e5ac49df462d4efecdb7a6856bbe11f35f37177f855ee97e760e5803b19b22bd455b7bbea7559c22c034a5e9d25dccb32e4b87a1a3388ffba37f25c16f43cbd4c6fa763088b5a67b2e24787aed83c9902907bcfd3c2a00812bdbd57ec110b8a416b71ba7e52b262c4982b0cca8375f62934c2a1f4161d5fc1383384a1837e0d3cc3bf164f0b0b7924db7b9d186975c2ed6a105c21e929fd8473ca45cee439d10ee44c564398301b7b8a1e97d5d93a1d10883385aa4424ddccb926d81419e6c5721d68893bb22e9f2cafa10154a71346176e3373f9e7a76664523ad252c301f67779262ee04c2e094f9d7557080ebc5ce7289e471bb9d3f899ac17038548c26fdd83ac374996c0fe560504c094170780e83e7db321cadf19220bec88e99dd92cb602afb5c745d9c3d16ea3e6e881e25273f320a148118183c61361b7ae807079ee1cc2b27176720846c2bd1992e5092d040c1a968ab568d4b13249c97803c0c9c64ec075a8d8634baeb6c47ae245599553b5b468bd568dee97c1af0a1af4d8c4a1fbc7965a8f4367759a02305837a983079a11885766c82d20d74417d7112a0e32881f0a09721a9dc0000b75c2989c18986a758e2083b56c79166f4041861da0cac783006c434e52174bed038783911501c0208021663d4889291cc700b5bc85d3286f4c010b81435e082d830fdcc72490b504306f7be0c21561aff2a23176531e564a12af868639106a791456118496b2e7c86302c0b1ff95dff89e9e046aae8a26b9af52cfddd33d8207615e1fc5074d49e500190d53cadb1d4833b2ffd0fd9efe2bb1b05749156c10833fe32f3b323d16d1fc2218ee0792b19530b1970a8460b263ab52e4340dc38fb10629a6c65ea5ca167360d709beedbb6093708883e06d3446133692806aa4e6a231248c98da65968489adf15080afbb9147f9ab315d50221855ea010193d72f438b09a98c5646717eb0c6b8e134728241cc74ba787c91e04340a85f1ecf580020a49404b0dced415b764853e9104060d87f8190b9fae5d9fec03e312ba653265b6e32d1396cd12348e9880055e64c2dca2815fb484101e5d6159ba79206412cbf84cbd66c3ee6c8f5d0516b2ff88d91660e239b30c1b95f2a6386aac4ca6b7300164bd39c758548cbec31da22ead9fa43e03300803d76609bf41a4ee48f32fdb79576c64aa2807e0b7654f190209def41620d889f1532f8cf677df21e841ca856d68e903038cc8d14c7b0d55724ecdc51429608c8e23164a7f5f18c3657b05db79ec8edcb1676ae0f88075ec542487408081fb4fa4490e42104ca3ee06cf9703104541afd5d3d61aec83d52d7c1110b911a925ec53e3dc1da3562cda552cc269284c4ef7061519926f258794d1067cc2202f77f967c89b478ebf3736bb243578834ed65c0e042be3989e1cb55df2293734ed7d1dc10a9cefa1c1b291cc1bb16b9da908e914a386e83ebaad470d461712942d47eb739f0b32f42aa5ae87c1b32e0047edb12009d116a5a796e4633319b0260397883c02b91bcd385593527911ee1b12945446c091de3581b6ef99412c91d2ea64c482292e706fac5c148f54d9a08581238c2318d6d91290d49cc5d609e0901d857d7c2604bf8562b3dff06313127c88c119441983d96c07db8e6fa19fdaed09d9444a2a7248b6f686b8ebed0516725dd5dde2c62fa8a898b27a6c014ee9386c5f92908e98f7b6783418af5f4ac1ca47755a03d33a275491570f06e25c0afe8b701d765564270580870de08b3455c225273498cc29e2d43fa71a24a98a7f62c7651afd00983f8843a3822afaeaaa690d857bec819ec15a1323892ca00d3de06c3d521cdebef95ef0aa4b08fd74e3ae0c8181d12aa09d5f03424a4e7c11dda0f818aefbe02f319fc162dacbd0796f9ba7727928955f142ce981e2eb6d815d2a992eb773cb4729bf90ca62e21097ba518ba5fe9d898a9e18172800f59b43b8c8b403a4f9380953772fa240e203dc7dce136969db04858676bab10450047cc3c545d8145a1eb4ac1414c34324567115d0a1d1e559e4a862f3430141f8a564fb31a721dd7de22faaf51d9d08d5a43073dce5a024d666d878a7d70eb674d697903c6269fe2051f2fb634244868eb1d7a022ea3ad197be98b5c1b3c5a312bcd5b2e5d0c619d2b570272acfc853634029183d0184ed16550b86bbe431d937ac2777998a126536e09bf8cce20ed105018e9e1c99c200f49356fad5970e16e93eb9279dfdc6279826a4dc9c771625159eca1fe28bda940b04f809d7905072fff1705d0d1d193adfdbfbd501abb060f2e742562057d4bf0c7a3d479c703b83b84840820b6fc19f7905c4c342efa433107844a0c7496487cef297d2cb9ae62140d30af385aa5442a1d0be13e40a95ccd58eedbe7d4c4bc99e0a0687c6dd617422043bcc2c2fd9c4f228f8c77bb91eb43c9690827db99bd58389eaf2130f870e3cdf50c53d4f8c99bea67e90f2fef841cd0f657194d69d7c128e0c5e49c2acd06599e813815af88f8bae00b56b6a53e9125ebfe2c3a0c1f90b7f0e7fbd18de959aaabf98a1216588acc49409456f5f93978d8161db52b507e76106efc3810911832aa07d83ae438880bb3eda62111ae517cf0f6a40676f97373e08080f10e3cf6022c3c0c1ef87da25675377190f653ed79b8bab0ab9b55dfd0e1dbbdd237be593c2d81edda209002b0e28e2e9d10bdacf5130bc9ab34cae5f6892e23b34497ecc1ed13e7df8588638e79069d1c75a05188108a771f7c554c54f989bbcdcc213f3caf249a0006f0d56000db92e0bf380048e90f890638a8fac81db68be6ed20eb078ded4a967becbbe5d2d600192b6a37fc6794cd2aa2317d9722ba581c342ae4baaf01038ba97365d2b79cff51506d50a088875e1887990a2b77b009e38b30ac098159feb1bb07e351037a0c693eae06ae932c83764b3ef16569ccd52303595c91870373cababae122afc25727c5005e6609205e662fc30b826c62efdc1e62ef4081ce7ddb8ad9109d2326642754370cb8397167be10c1e7f7b3f4af5c35f39a53c1b07b69ab542958e394a3c6e8b945d13bd34c87c54d7ae8597510c9e328d5d1bc738b8e09097620057e240fdec7f14553ba3c745149977280502016ffad4be4304b0fdef9aa644a49e1054d974405ab70f330160b05cd6dca41d2ca4566473331b45c30ecdbe628200080fc23bf2509ba58ffd6a10d3be808974274624782090a16b27d8d85ae24f087eef01d90388b0efad4126cb9043a315fa95510382b391da0006b82d39ca834e3e741522f4cce7284671af491ac3f5ea87f4adfc37f92275559fbb7549a2de58e56a891b4bbc98acb1ed69e1b5c171f489a5445acdba3bfb604169e9155d235076f657612443605990af209180b756bb266d93d22c76ca461a25889c2c778488396c4327dcba28dc75f2a8149cd2efd56ccd5a5dfea9a5d1b8b4b9830fdae48e137811829ffae0955239dfb29babe516bdf12eba35a4d29e9282916dad683d7c6c2dfb87f3d9206adbe76283cdaae2a4443f7492572cc4649b99f82c5d8c6fd4be77e4a186e5d91b445d244afb1f8845ff7b5e05c141eed8f1de977aa8f5453bae96a54abfa32e9dc4f19ca1f0beb1b7d2c3682569a402cea9a5d5b5ba49a13ec9bea8e11e9dc4f0943fd16f7affc5624ffffb31e314832c56cd7de32c3ee8fb68f696d9192c652278918c336ee5fa16ee95c157f09d7621917e5574137c544d1de88f2c3b04cd7ec7a91b45986652193d67f471cdeba54cb546eba6edcbfb4a67509ad615a45a5a5f0995e2447abad98415a53c8f4dc379175f43ccf9bcd206fdcd69a98f1ae3b62662a0bd6886336dbc2678ac2cf4d972bcc94ac7e980ae2ce9ab38abb9761493d242654965019412b73f64c22ee23881b41dc8c5669acfda248abb409048709e44e20573aea721f456ecce05e26090d69d23469851972850dccdd1d001bd03961258214c761a9e70f13fc09d0d32a6dfa9873024f1720e0628b2e3ee0810e80c1810e70d1812fb6f0a20b0e70800b2eb6a8b3012d3490812cb0b8820e062e60812aaca8a28a2aaab041260a25eb05847c67c9ddb338102fc270e7a9c08e0cf8d3dfb9230af730bfa6e1b5536aae30df59b9961ceec9a9dc3abb40e23b36b5606fb6da8720ad5e61c14a152a4cb2d8920060af24a4292b18a950e46a110d0929e958ab354848e2a3ea19410424211c31b2062d024200887ce04107433800c01a6bfc58638769ea90b9ce1dde642e832c527b1672668e36ae84473673b4dc9d8aacb1c61a33c70f676d4be3810254dc76858da5e69940911313742cac434e4c785d87c23ae4ce338598b30bc4a22844e4ce23011e29469c8b7822c003019e07f0cc19e2f3c609ba70773d6fbc71f71b3ff8bcb1e59b37622d77d7f8aee60d2637907c1fb5dd7923c7ccc0052bea8d318c6543af994117175e9bd039e97e58e1ad598e03a288c3038709283c50ec40a0013b56ec5ce13b74a68d273a7738bf16eb64439ea389eae1b66dae4a34895d0713779fe213e5c475ee781a90135bb4baf3bc71e761803bcf133c4e60e1ee3038100fb460f2e4e061fddbe481b943b92fd2954d8fd476b1d0dca1a395682537f0f788c18e56deb6b5ed4a5214c2cf6548ab175bdc3de7736784e94a7327c874164c07c17434fecd664b3bbfd32f25e5a4df6568632fdaae8dd59476a9a4f7c7ba1c8d8ae0b5ab55ed6c4986bfa2ddc03a443b2dd6fc4eafb5280a7d1fd595d63fa2ddb53991ee7ce00214b0581b5351aafb933ec4445bc35c8044bddf35245bda054bd2506345bdad312c0d2a3c8d329e0698c60a481a3f80a4d1038d2e9c46a1d4a3140d22fc335da1d1058dcfdda9f75aac4623887a5b33a141dda987ab4963b8ec8c29ce5073c60feed423816ad1d6b4d8d819e219023843e5ee947a59eaaee10c8b1966b0cc30803bf57e6e56ba4c7adf1f95881ed6515d296829ed9ee8aaea2398508f2b4968a988d630d57adb6d2bcd895fab7d141f5590be55a146e0e35c65d87019f91956738279de8b64b95940c74bc046e2deafc56afd19833a3c1a7e07ee3edd795070f7eb403cb0e3ce534310771e26de09d32a5d69fc0a1f0536dcdd456563d868ab48845fba1ac5c818ddbd23c30377ef74bd51bb2fad44a2588970b6f619d6e1bd627d86d12e77ab7dc237da655ca3f749fc994480bbdf702060bcc077897342e113851f86422678c18bb35cde33139cf126b89a24620ccb0fc3d51157c7f0e2a16bc7d104495c038db83a8ea3ceb0a29a5d404a0073d74cb42d0bcdc2fa37b1fe92e72db58ceaaead5d2a853f5a59f89f8b3226aabbb6603a346ae2e4797a8949e7bee9430cca907cdfb7f7916040c458220609eeb96f1a411aeeae97bc7e1b1ee5719c917a7f6c044bee0ef4b5aadd79dcb871e3a6091e2644e000d7e2d325371093aea7d5210a2ea08d93457ab9bb8ed28184e0c749f16fb3fc3c6c7896f02e7c1728de6164c0a97771ed5b391cc6ed51a63d2f779ee779b3990780700394f980ce1debe271c4208bb56b556b690259782da9d002beb520b471e553f92b279c608ba85cb1569a5a586222d3025bc1e856bbd5a42697151f71dcb72e57b1b47d56d26d1cd62611939d12259e26f7be510f69894945bbdcab498d094d286ce26add642e1548185315a61b68af64a625fb4c4bc85795274c624d642eb06005081c0540b56d62c2129690516ccc6fab3447fbfc377a74d3d5c8f3409bffbe6d679c849335817f039f8cf1ace151c3a384dbc8c16d90f9c2eadc7de8e407a8fbe9805817eb16661fe60702ea8058e03b89621d750f102fb6e8dc95230681b4e49e808074a1c6ebe96f064170d1b15a41890285fae042abdab547f296b2d2ae3d12a594ea7881e2423b7b5bf8b3f1c6931c377078066950004a1009b350c4282f6c74e136cad0866c5183bb7f88af173ef5882803445950a0d0ee6de1e700a48e1524903a413a774ac83aba0640b8fb1507b2010c907504f77d271c965a9363be013d784457faa9d22a2d871653f13c1d517058c688b291cd6a5d6975284a2c28e32251ac446225f23c1d9ef7e1fd30b4b79925eb8cd4daf39a000101010101fd003d71724213134a60b2042828a80605053dad0e053dadd2b00c09d59506fdd7a2cc9c3e939ef744cbdd3beb84099ca8e3dd0db4b7a7d056bdf1eb0a395143e70492133c6ed8b8a9b901d244144d84e9fee211e3fc7d99f727624cfb3ecf937d4af9af1d7ff5f97c5f1352dc3b204dfc70af42a4c40418ae9998c34498fb3a7f0ddb2ece5598b8e5fa4c38717767ad9aea3f3191abe402ea5459005d00e9de2d0006a44d0a2eceddbaf7d344b1acb579e30e9623c56349dbe46ea55f9428513c4f1654530a7aaa4b41383c347baa398a9ee1d810c1e636fbd97ecde6c76fc9c64697e5abcdeaaead281a5793744cfbdc21ba1231a6a9a2bc8272795f97aeb96a716fd91a347ccd9c3538f76e8d14ffb2d0d547bb35384a206ac0e8b49a376a6e6556e3e45a25c4704aff6221259450024767c3fba0ae4fd44559b9daa380281480f33e6390820a80919448014988e1ded124d2c8928021095812aa8a5795ea3475701f5e5095e607f734a025d3a0a9e3ee1db89fae5695a64283735ac6399a7e914463e4c3baf8aae83d42f3c3e8cc1b9ccf7471a76782dc3badcf6c60e68d7b670647cd587137b3840a86d16bb3fa330675d6d7ee3a0382c41b249030727724e81174fc8830eef4080260bcc323702019c1c6882d5f9601ac428b65005fcd080f8ae0a288314558a925ad8552d32270f8006e580640bbf08998e33522ba942411469789081c9dc6af21c0f0ee623a449b2148f78be9104e5a43e0f02ebf05ad58475a85f0c02d7d6eba1ad1d54d572355d0972e7c0b7c2a429078a45f44052684945a0d0b1126808a0474716ab475c6b504fca874eb5b193ab54c1877ef5c0ea48c941c8de65de673198415e51eb70e0287fb7d1f8f41cc7e0731048c591856202ace5d8a2e6f0904192da2e8b212d59c60336dab7668d75958ff268455d81f9b615b9ded3adb751625ca2b48fff84b41e05309ff963947fb214dae648e06fe50c30fdf0f2a8c9768b54e409e541a43a7674c18fc2434e6e69db663707897a311f940850fd407293e0c11238677a118fcb4e96b311fde558cbbfbddb68734b0a425237a2bedc18a77342c527f616dfcd247a25845b15ea6cfb03008372b0842bc9856061065ec0984103a4ad012322470c7afcb845fb88565afb00e896551a8ab91d2c6af1c60e0423fdc5c5b2420634eb0b51559dae664f53ddaf805cb89b9ba42d7c6afdcad493b63be707f6dfccac1871e678dd6c3763f61248cab49f8758f624f5f84b1ec855fe147d103113b4aa06070f71d1417a795da794ad0cab88856c6367eedb7e557f8b62f22c78d5fb432b6c50e67e86ab44b9cfba22fc58afb50bb0b74086309ab7ecb76ad4640180bf81346da42b66bf16ba747181b5e26071abcd3e56dd3d5db9c4113b50e318559d794b0ace622fc22fa8c93f02bbc7808b6f16be317155fa6b8bf74eea7e057eea784a1107ed530ce3c46bc8cd9f8b5f12bfc8d5f6ec60bdcf5e318c632004c1cb29ce0e47937c070c3df103aad618a4445a6690e6f502003990f7ce9f2811b72182205340b16215918864261f89f4b58f83648c0dd6d10e336103969f27d1f5dd5cea70910cde5b68a8695163eeb47bb7135a9867d541d25812e61f235d5fdad58dfb7355dc224cc4fbeae435dee9b3e550dbf16abbf9a036b58d7dc37a9680e87f3ea73256b12ee9635fc0a2f137ebd48ab9769e3170f922d753c77d4961766b3d94c498e14433cfa0366a0e264fd9b278a15e7bf72f18ba875f1cb85657f84653afc7ffd585fe093311e2a836de7a704eebe440cb4768f34d33d6a0231d2fea48d5ffabf28b6f1eb0923d162f815d6a13af44badcb14fee7f27e8cc99d470a9416d762f54e98023419411c0b86317cc2d0020c4a1306239d3b50db5109a82d172a261737938b1bfd560bce8708de63f37c008b212568711f2a2a23e820410f527074900407002840a87077146e412c7991254de4085864516788170bf89962e82b72c743900972c0800b0869bcf083113b61bc90c347d535655cebc2d76283bbd3d913be340b16fd52f2b93c8209d96c37d5f869258a57146b7993d1ce6783f56d756baa0a6fdd5ff725a1947a1ab3ea670cf63c8de6eaa2dd0dacdff4034477a5d4a3fbd66b471cfefcfc00b17e7e80288ed463a93dda599d318c453ffd19837f9568a7a9b6e24ebd9a13a983b891ad2d1278737ae63afea2bd3d9125cd3db83b4d887663cda2ebdae7998b9c665c9bb987d3e9c2197aabadaefd10971b5311eb6e11e5b665ea3e2c593e2c7495e5bbe96ab4bb2cb9fa54e9912d57aa35ed76a5d956d2453b5ddafa54a97ea23eaafb4ff49f7405c52a44bb6debd3cd63b64e54bb644aaf72657b2ec69a6a21daddc06d9f34bd15d421d53bac2c6ca395de72dc75f65128515a4735573257da51274b69f8f99decbe4ff1ce8995aec2271b66d2e6b7d93e4d6b18ed76895742b4cbf27d589c886e3e2a5658ffd63a12c5dad9aecdd56c88475ac334cbf737b012dd36bd4a6156a29dfebe5cad6871a550ed445188a2ca08df85b7f46fbbe75610c582496be33e69640fe9534889493361d254eee4986fb38ee13d9ed7a35be4988d94c2d7825f17db5c7dba4c44fbeac72dfd5a6c0ce7bfb254133f86654af749dcd15cd536ff2ef1171efd58bb28e111f8543e9affde5cab50adeb4d2759caba1eedba6b6db7864f73d115ccd57d3e30ba3a527d945e4b8f3e3afeb61f8c453d4d7d682adae96ba94f55d1eebb23323f61f195dc8ec254da7ade4773356d77d5f5837d942582f673155a7d9937c5fbfb3e1f2b7435537d9f95eff399d19515d5a7bf26b06692aca0757a8d2f6551ef1ed16d6f25474ddfe65ab4fba074dd47df666f7dc2e1b54f3877f6bfd5a69538a4d7eab7b9d29ebf9895a3b16a35dc737126edae4ef60826444ba57b54b444e5697568c7ce25152c75d1695a85fd17751a6f4d5a2b9263fda78f1c4b1ab5ad708c76fbbed6fff47d1f45c187048a8258935012e87f6da6a2502869f76cbf88820f69b70a142b38834245254ae86aeb327fdf473bd26e1fd26e15d5ac9c787116eb98f5c5b68aa5c5a4dd34eb4abfefd3181f21eda6622d77b64e473eb17edb8ae52844b12cc4e327b996423bf46278ab51288a424bb0f0f10b768f7255fc562d53b947426fcb150963191e3fa98565b9b0fed2c62f8d5fe187d7551665a5d00e6dfc7252729195e8e8627b5dd735748f722dc258a6733f65e9c9eefb6cddf941ba351ec5ea7324bc650d5492238fd092a84092765f7844bb5c6b146b9aed3b595ac661bde1da3da2077077d1e70a5b7eba254b585ac49864b15059dc1d076a00abfd9a565a4ad631039f2b1071775d73cae7510cdc7d1e9d39b2818bbb172d51b9b68ab058788572b09c08036d78e441f8637de1d7d615768fb00c57933ad647f7c768579b721d6fe07d1aedd1fb7e8b92d0e97aeb4a70a27f5b423f97e044a3b02813a7265d57744ed510a1235dde2793d8e0e131c67421e1ee94ee84e122adebc75b2eb4caa0e1d9728333adee1efa6c4971622df1d9b2e1de85a8a2b91a3289e0b85b9dbbdab59e973d8f1cf32dac7ffb1083a258674d98dc36fc0f3d4f8a14294072dff417b7b4100ecb5898fb29a10dcbd84c810e0ecb58073e53f8c1759de1b0c461a93b135248a244da9b9e51cecc6694944c146b7729ae26753e34fd819445813e15fdc04f57eb64f306edd656b4fa69ae21a1a177aaadae09b4998635c5a190255ad570c5db86377dbbeb13ad347c96fef901da42b4f3795dc1efa3789738a75ad162b4fbd0ea5d628b29595f04ed1336a29db6a25e69daf9e84cc314676b3912e77d9fd636beb7caf7fa3e20d6ebfb5bcbd537bbf8f3a9bbe7e23014499acb1593f469e2675c63e52769cd529f9a8ae664b4cbd5266cfbfd7d2c2b4a5564b9fcf351bc69958dd30f5e25da7d4632155e2ea499ece54a52c1159bbd948e64444c4bb2d84b8968b6e46abd98be92f5b51a667d58f3a6957e15da5d6ce98bd24ed7b02d7cf109df26d6b5186455fd1a93b92473b9eafc4e610dbf88763ee27f9315559f75cdeff44ff846571ab437b266dbb52c08258df9372dc5dab57465bb56a48dd54633aec9945e5416634a2ac18fd11068972449fea1da62b17bc1fcc119719e18a0a860791a8f01ec2d6fbb96d084004b2868a7122f1d88afede801cec385a5ff4451a0d7521e2a50c8edaf559dc1129a94b466290a7f31786d094d4aaa6da7cb16c22a443bead52a08e8f1c9c2c1fdfb74ee3c6fae12c0ba56895841ccda11c05449c05fbec44cf261cf6b3d48650a0e4bcda24d15175fc2629989c1dd734c404edc879471e7f172bfd1e38e4a75f11d1be69c002585470dcf1a540a11e8d9f1206abf74e1c319f84edd5ffca2d752d75ffca2b8860bed6c36c28f3b8bd5ca29e99a5df7e87111958b8944229dbfe96d15a675ed97741572cc46757f524da9eedacab848df4ac6322eaa29695db3cb458ed948c33452cd1596df163e52eea784f58df47fd1fdac8bfe8b72f99dacf82dfd36e734599f62b6fac2b2df7589487f885fe02f6d8d9334ee6b4a9a56c66e25637a5fab6b768935bc6fd3fb9635a5fc6419d3e17d3237f42126facf55185993b4de37e3225cbb4763f94c5817e9261023e9b79aac4962624a0719fd5629950306a91c6b7035a9c3f9b56ceaa3daf5f3472fc5d524da89386f5d86e2e77fd2db2649d23a12a29da6354c8fecd7477cf45bab2f06ed882f065fcc1f629a2ad7baa7ce67b5ab8a7ab918e5f1810222291b488472974211b15d2bd26c2c77291e139c7ab8768f7297da2193dac1b92ba1bbd2b7795f9bda2172a75e0eacb64732d2df5a2a12aae56e16c5c912a03268e33c6f0d32d6b0c28d587a9f300a020f3012826aae81c475ee72df34132b88cf2801668718c4e00ec4122bced6e9be1a6dd440a3060e6a3c51cf47ac1babe87b1f11599f74084b6a51fc0227dcdd459bb840042e88e3023819d75a2e6abb76a671c6933852687f2cffc7742992b98ce5ca21239cab95eb8b44b66b3516899efe458ed9e8c59785ff5a2f71f2bc11b482461134823c71c61037333430230377dfafbfa41cedb513054a0707683106d00e06525006116ee407bb6aff341b96f5da74adb99217df9a6d3b1f94e163b60210062ab0310725c7dd797080ffb56258bf7585fe736d9261858fbf8f46bc6fbdc16633323c328a9031e4043f9c60cb09b6cc2964f03945e9738af739c5159f53c87c4e61e4738a209f53fcf89c0289cf2982f098737ee61c99c3c3a79c16f89423029f72b2f029478e4f3949f89403844f3931f89453f32907a907073e3e88b3c5671cd1679c98cf38527cc651f98c93f20987053ee16ce1130e153ee140e1130e1a9f707cf009c7003ee1903ee1549f7092e0783ee178e013ce0d9f50900105163ea180804f2816e0138a323ea1c8f98422e6138a9f1f423c00e2e307ed20040f21d580303e1b80f3d900d06703947c3620e88df6f9e6f3f946003edfa4e0f30deb4d109f0c80814f0680e1e307074f58c0e7130cf0f984199f4f7cf1f984e8f309269f4fa4e0334d9127807c3e8104c83402800ddc883edd7c3edd08f974d3e3d3cd0d9f4d8cc0671356f86ca28dcf2676f0d9840b3e9b60f2d9c4139f4d78e0938918f864a28e4f26a0f0c9c4189f4c6cf1c944169f4c143142a4c8082114f1d9460d9f6d36e0b38d047cb651e3b30d199f6dbaf86403e493cd083ed970e0938d0f9f6c787c2ea1029f4b84e173892c7c2e21c512717c92d93e36c0b1c4129f4b509f4bf8f0b904cae71a16f85ce3019f6bb0f0b9660a9f6b9ef0b946099f68cc5823c6e79a1b7caee1e2738df5b9a6fa5c03f3b946c8e71a1f9f6b7af854d3029f6ac2983c7cecd88163887730d5bc7caa19f2a9c6894f353d3ed500c0a79a0c7c2a51c68f1f4964c0671252f84ce28dcf24d2f84ce2079f4974f19986059f69603ed3b87ca641c1679ace679a223ed3f8f09986c7271a337ca211814f345ca0a1804f347172f0008286fa44b3814f34eef34c0b7c9ee980cf3356f83cb384cf33627c9e79f27966e6f38c91cf33467c9e19e2f30ccaa719327c9af1c2a7190cf83433019f66e6f834a3844f3343f834b3834f3307f069a6f46926f46926e6d38ccba799954f33447c9ad1e11309347c2231c68e0e86f408e1d1c1e4d10112577c2221e41389950bd1d1840bd151c685e8a08103213a70b8901c5eb8901c685c488e2e2e2447cd85e428722139582e0487192e0487065c088e39ee6ea48907de81911d3f8a90c167112df82cc28acf22967c1631e4b388273e8b60e2b308558f39c4103e87e8c1e71038f81c828bcf21489f5fa8e0d909e2a38c169f656a3ecbbc7c9649c16799d5c40104199f4020c0271024109f4f325bf82443c72799099089c22799277c9251c22719217c92e9c12799303ec9d4e0930c0c3ec9ec1c3b74cc311ef03946033ec754c0e718287c8e61e373cc113ec77cf139468bcf31a1cf31b2d40f0d70f85067fa60854f1f22e0d307383e7d58c2a70f46f8f4a18c4f3115f029068e4f31697c8a01c2a7981c7c7a7941cc169f626c3ec530f914d3f22986894f31487c8a09b263fae8a1c7670f3a7cf6c0e39307357830814f1ebef0c9c3153c3cc0270f4df8e401099f3c00e19387303e7938804f1e60e001478f0d7ce8d8a1043e77d0c2e70e16f0b9c31c9f3b3ce1730705f8dca18ccf1dbcf8dca18bcf1db6cf1dac04d9e0870e5af8d4a1023e7580e35387363e7520e353072f3e75d0e253079b4f1d967cead072f71e3b7c83d4102161def80c4384cf30637c8691c167189ccf1c94f8cca188cf1c7af80403039f604ee0134c183ec168e113cc057c8279e313cc113ec188f10966069f60ac4f30557c8299e2134c149f6096f80473c42718203ec1a07c7e39c3e79712f8fce285cf2f1af0f9858a1f00981bf0c07183832f433ebf04f9fca2c4e797213ebf6430bd80f1e965062f2ff8f4420ed160e250864f1c46e013070ef8c4818ea792a8f05412cc5348753c85f4796a8a1853484fad80c60a5d3cb5020e4f1d85f1d4d1104f1911e129239593940a6d3ca582131e3b6858c1270d29f8a481894f1a92f8a4a1884f1a38f049830f9f34e070000c09e3ce23e51ecc19a4f89c01c8e70c20f89c61c7a70c23f029431d9f3168e13386393e6348e33386303ebb94e1b38b183ebb7ce1b34b153ebbc8f1d9c5099f5d92f0d9e5079f5d6ef0d9a5003ebb943ebbdc7c76c1e2b34b92cf2e463ebbfcf8ec0282cf2e00f0d96587cf2e3adc79f0e8b181f718e2387674204c07e8176138f5be68433d1cf5be9042bd2f70b8536f7a51c7a9e70512eed4f342a49e173fb96fea828a2e3e7747830335b8738072e1c6b968f91674b6f8b640e2d4ab93823a719c7a7560ee1b18630369e60664eed41b430b1ab46861510b1ed4d300111a08720db8bbd30c84c900cca9974518ee59a4a15e16a1532f8b1f2ccaa0dec4624e0d0b19163f9c7ab32bbaa0deec8adbbc4235e98c413d3a6adca94727c87d86013a597c62e0e6ee1828817ab30ba031c79d7a35b853ef023077ea5d8008f5b418d4d31668433d6d8196bb5be007f5ac40425b2152cf0a1c55d0f159451977ea69d0a30a24f70a88e1be4b12df921c9a14b0625220cea400035cbba36afe8d9d848adc516156e00ec5dd59400512274bba1f162d64bdcd3b4ef8b9962ee8d9586a77d4ed87fb4caca81c5060505c505f505c505e503848600aea49e0059dbb8b7d54530a3a6005a570e3d4cb34f01449412445cf942200ee4e6dd7e20dde326fbad2a2584125112040047ee60386e8dc4120055a0c77dfe21302a1cedd0dee8ec3513694b7ce0710e128226a40d180520285001e3e878b3975dce96d5bdac498215240b38480250d1a4721e15db699fcb06697ede2fc042addc03209635985896259d454dfc60e0e88008bc58af144e1074019004543ada67487a290e21e278b3855cc38108833c647b5f251e1de47b55aaa6f547385ddb44dbae96a54b56d3dfdeb7351cd1576992e5356d2a2d06bb131fda0dd613500cd0ddc75d436293cda69c2ddb9f87cc3466725a128da1a4a800103d0b97be20b77e7d1e2441927c2ae13ed2e592cbb4b3735f86bb1fa7513c6b29d131640858e02f85c800e3267a47377829312911cedcc9255067787c1271b14b83ffd4bc764f3c45de73aa47fe3d77d16f26f4c85cd5c220596076a08502a852efc4a801239ce4cb386bbdbae7d551cdcdd059f6940b23ec53051eb434c24c444a3a46c2114c22ffc92857f1f095793f43b5523dcdaf8752bd17d52292be56f02ed948d5f196ffc6ad276697fd2ce5d21dbb522c6302cd3431a202171ddbe720ec4116ddc8ff0e2eef388a623c0235a78d315f556d43b8288bb1f61c3881438f5f0ed89ae8cb880fe90ee128f20ce880318e1823bf556d4fb0162914580e14e875e46224db4f8f5b60ac3af251e938835ee64098b05f49bac619d79de1cc28a8c6dded5863f8ef69bdd0ad637daf8258a65d1c6af35dcfde6530834667047c9e08e8ac11dd5c5dd6d14c08f88218c3b143e013f3385f8e13a77f7475bcd37f2869d2f3b3284471a937746f200394f13e7019a091081c91296d698bc01ee46dc3dc8533c98e14ebdcc0318b75d1bfe8338c36827e2fb4d38d3a8b64fff3fe6c09cfec2cfd34bb0168568b792227545880e36e8f0aec3b3d58874500f1b75fa6b95525d622c7ee053f9c6df568876b68bc58c65b4d3a5d6175b5dd66e78ebb8dff685f5c5cf47f5f9bc166b4db55f7ffacb7f2d76b49bcc45366f7debf831daa5be84c0f5a8f58338574bc438296cdd5d2a85b6c26c687277c9f4be56849f27d8e67a1fd4b4d21b58c66807e4d530adae663f40fb078876b68e56c3b4aebe4fe777c29f7112edf2ebba332647fbb1f06675a1a53da3ad22896d68a9de560be577728df5465735f753a8588e2508562a62dcb98a8462dac9ee11afbe8f46b1651a2862acadae4fb44abb77aa2f524d8ffc586dd736e923d9d25d921bd32ac549b4d33d9f8831ec637ddf97e5d31f162a8af5cbffa47106eb96327ee4a92d46eeeea3dae2f44551acf485389e033d4f967a61e76eea05cfc3f9afa86619cfba98e7c9baf841e62e624d535a7eb8ff502850a8cf082acf8b220bf2bc1c069cbe131e498c5fa4d2bd479f8b70653859f797a2a764407052a460651ce765bfc519e1a2e05838117043701bb8d1cbf39a38799eec2da87fe96829cce550d21253a831d2d6652bfc271c5e971398f20a77f7a3528e7735a9b35b3fcd89d4c85f6c4bec546b14b7281df1de788876374b73b9df96aba32e712e865b34e316c8d26bd236d3fb84692e718eee5ae29c11ed7e76ed47e90ae7d79224278af57312234a4bae2bf4256424a34b2e99906b4905ea1aeaee93b856c008ddb285864fa144a15bb6501f95b6dd7fae751ad317edeae755cd5d21dad59c78f1f7e9efd32b5dabe10f6bfe719743f4fb58e042295d8574150b1aed2d46d624289452fa0211a52f5a72c420bedff7b9680835dce9f105ee3ec553634f0ff5423b5bb93bf6d4f8a4fb5ad5252de707cb10e77dadf8464837811889d2d96c564b23fca5a77f95b154cd0677ef526f029a71ceae0fbf042726c4621d6eaae313be4db4824f6a9a3b52e4c404ad8f38312116a336daf55c5b6fb456f74dd809bce96a14fe2d3f14b1aaebf4b6a3a747a0ddedd397d62cf55151da7d4b9894df577edfd658bcf4fb7262f9f9aca2c882322efab67e5ac335aadf6696c6a02585827c5494d624da6d6d45fa4591058d7fdbf9da1a66ed12536cc3e121caba9652c1b0dab547b4d4146bb1d215edbaefa3399a4f4f1d55146fb226ad7649fa5c4bbbd651066fdcbd7a4a005ab8db306283de74bd953f6091a1d4583e2c312c485888b07458565848702731f511414595501f11285d89403d12d395085445a977db369a054b0a8b06574ee04e3d1f559ded6b3d17aedddcb1583c37522cc0dcbdbb75074909808521eeee368aec239cff0aae268de51dcb57f8b89aa48fdc6deccc2ad2c5d6095793dc515e6c8090ab51a83716634ff816c32f9cff8a10ce7fa508e7bff221063d5c1d67a2686fe0be16b7c005f7e36ec6dd8334794ac645e72eff0ddc75bc21003688a494caa496a4a404e0c5dd53302229180ed88e1f71234ebd8883e0423c88f3701fdec337f01daea3470ef70be0a822c49c3048806bc3e587194222dcdd35f012a3c2532e264fb9923ce57279ca9582a75c4edc3d478a88059e221a81a788bcf0145106dc9d071a25784aca124f4939e229294472dc40e140915d50472cf52045851162f057b85025642977da04091db9228915a8ab3024c918baa3802be470a002f93163078b112234c7e7ee4b5c8c0c98f9a1c20eca63c5776c98c381919318aec2ce034a0801171f4c4841c916d9b1610e15452d18010b4d4049498640918690231d8e40b8d1e353c85902a578511842766c988312a3884e9008f87802062b34751934f91cc15386112cf4283ab34151103c720c7965227278aa68871d1ae0d0c1cad500857a91016cb879f1137462e070161e243f4414b8d1e35758f0438b142fd239da932222d082672a7932c4415095177e8830668c1d7722c56ff4b8bb8d36eebe83fa0203125374f122ec01b0c03b0a405440e6ee9efa826883281b08e36eb3b4b1b4e18ff96d96969f24ed9ee53c1b4b91b4b7afe5bf760ceb2cbf286e8cb33b6a0c0c15668c5a4de9bfe86db9de88dc51267047952063eb8e22014a0c8d1ac12d6bee281184164485608342bf3f831713a18218321b411c2a8c0380c0016ce47c8893f47f511358778c1cdd511f083ffccb24d66fe117ce75f4637d69b116bd13ce85b14cff17d9ae7d7d88c16fe17c9976c6642862a317695514cba2f02f933bca033377549ada677714181db00e407d015a126f7794175db88776c60177c78192e3236825bf2edd515cb8a3b6b8362b5677d4123c51781dd40678e2a0bcb88f2a8aacb36314da5d6b9fa08401c5003e1654515a4853415d7439a80141628260accf64102b08472d854246a1a57397f2caa8294f4dcabbd194f7937a52c6fe9c7ad2060aed42b0d227b8d7c2fa4c3e09d24f504e54907252270aa59e130638619372f2038d3971c1492b8555ea8414ac4e68536b2246aac91b2ffc307c5951cc841ff4dafcb0dbb6759f8fcaf3649ff77d54db9d63e58751fd355a7ade87855e1fbdabc6d524da65bceb6ceb729cd112e74a9cfba2c882569f4b1d5aec54b5a63859fe6b939674cfdfb6ae6415df849509b43e997fef1f8a1d3942751d2dad61da7db4eafa351a3e6def9eb2672c6f75834fea6bf3eb9285f7e327592ee3f1c78bcbfa9f8c769a8e611dbfe79f7edbd2854f5ffb7d9f3f9f996a2544bbcf7f7b226b92a69fcb5d35cd6d5dc94a75cfaeab9f9512ed40bb51a8d4bae8b5b42cdf8725cbf76111af12de9476391aed2e26cb55c6abad9ff651b2ac9f7f04edd6f8daaa0dc35bc91aeb436a860f23f0300326421defbaba302542162baec2cfb409c422923290bcb94f62243720d1924212ae52218ce120a659b080a910429fcd5247e87c1fcd189632b285c54a1939725a0b9f24eb532cfcdfb9a1fcb06ee76aaeb0c76048f1f6e9b05ea968177ecfad59da69b23ee914083505420922c6e42c00b701ac34112b0020048047009c7a17eb3acef47fcdab7d9e51efbf468980e1d45b525a5a725123468c0041a48bfb2cff4a496a080c435a48113172d7e3ec56900812771fe229223cdc8ef6c5d9ec7505675b67fcf48118140a14281fd0f9c0531fa8f1502c719512fc00e883221ffcd0b3940775dc3de5c111290f6070a71ef5b26cf65fd3ffb554076b3ad852d2e82afc8cbfee568a43fcfa3a40a25e0746521da43ac0911a2202779ffc24cea48a76d433f236e73ab4c4863f1b41dc909e21448604a1de6c45531cd4a1f888140739a438b839f55a1c3ce14088536f45e9aaa4799e66724769a1810c6481c515743070010b585105aa02ee280ab8a3a870474de0c7faeabed9278ab56bd1206a94910af20137a25fd3fd217e1dd9ea502a480d30a482e454905b2ac8476d9546c3cf828596d10135853b4a02ee2829dc51114039209552c3dd6d7588a260abb40ff16b878c542a4967ab347adf058a02de21be5a4c4d3a2edaba6f977a44b95b93f0be96123dfd8b6e7bcb254c7c54aa1a26819660771533d6f7495c69a54ef540e33af74da91e425dee9b48a05f78f4644e96fb29dfece2ef06e6fa9ae672bd9676edaee437bd530df7e86b6d4fa3556e4fbfccb24fedf0e2eea91d5adcfdbe16fcb928b50328a8dba804f447d5510a15a2110000000000b31000203824180d06c3e190583ea4d7011480015fa05ea85c48168949948314528618430002000006000000060c05f108e2a2c0fa27e23275c813160f8790eaae5683035ac3f1ed0a5520b38cd1166dd7a4b61edd93012995edb2959fed232dc876b7e49c82be6346161d5018ed6f17dd281dd657835718650693cba7b933284500ab1539dfb965a99e23433dc0970e292bb4b9483a6ceddcc954c0fae876e61e5118334f80083f464fec9364bf3a59ca49a8ccbd231822e84012690a361712798c1a5dce3a0265932a2ee0f608b22e390e99a18288baae0bcd826a09dd5d734bfad65acc3d07bf9862eb968410dbbff638f6dec3397dbd0b39a6845be2a1ab67fb26fdc4a89c6a26736d86a9bf95cbb420abce292799a34e214c5b74e40b2439e2e891a1be9da53523d321eabefbd1806c97aee584cb3ae84a273da6869447fffce0f06a0cf383b01a767d78a7b09f9729f85f904ccd4e4e6d1fdc62fce6b6c50fc2683a4e9d24f94136995347b7cb2e8a6c0a4dbb80cc8cd33444bc6f0eca02a1589ecd23a9b2662643f8ff66cd645d65fdb36eb58179ea71e3b3c2e874673c7850099223811c2d064ce5b1f7936470ade688481cba513e7ad2589b6753a585260c72237d019ae0d9e985575d2690098914311d4bd726c322560410ec4435cf26929536652669707f76322d892972fb32419f44823a641a34e21491cd3a2c81d4cb9955d4beea47fdf8294e34a51afb1aad50030f011a211c4d82b02d209b85a5398993fd0b74151a21ddd2284dfdb657a8372a5fa9d314aca439502e5973388d03c21286db1bce8e78137961471cdb80885842eb3129ae018801de6bda021d41dec2a05074a6057d403ffb27031c7c47c1933dc20180d158157c9ec605c176ef4bfe6df1d93a91d325cafc1d8a6431ae6a3f88dceb70a092d58b59000c437e6af8ff5775b18332b38b262e80619881783948263c234f6b1052d09d7032dbee6d482119135b6559c770be6182a52414f541b8350b331246f61ab4a752562b1579a8afb8c4788f0ce69f1c60a5c14658286e89142b64fe7a97a09602a175ea3a296d1277cfd23c1cdb698879be58ee263d704f0624a37e2f80d5237f42606ad4af1e747b53a99ee2978e14d04773d342b050f7229e22cdd40fee8e219cc9c143ea77fd4eaf26fffaaa5650f28ccf7fa3b53668c31345e9dcba9ce140c96187398c9c8c9ea61f3fad8e85d0214bd09590e57e20611bfdc0fdb09aa974c8c2c39839d7c9fb19a033a6bab3fab5087241c2725ce3ff3709f2746954a71b6a58fa3d78e12d354cc520f0a75740095861af0e1f167573365efdcf3577376e2273508035a4c11d162bc265131c89e23b13ec4a3bdccf99c2b43f5b560fe34840bb1b70d2e21e134a98f3440a72c7a6e0cc9e25f98992454364397f420c1783e19382eb24496328aadc98cf437d5e678a2f28ebd1ca5296ceee181d6e191ecb3c34b54259cd2576b62b04ba031f7ab277b572f2daf5c89e4e3932003777d227748c1abb43edda9bd7367fa4c885a210db124138552e000b8d8e748ced43eede885849c7de21e23ff0d65856ada89f3ec1407ed72c5107331b8a505c8e4694b302dbff7ed0e5870354033159264866fee9c4f0eb75a2d6e96736f88c4d6e2a925b67f70495a02e9c0f8dea12d6860d9fefd203f6e12825a0ba8bbfabd5569e7bb71ba6e627d8e3eabd041dd733da2014b68fc9f09dc7c0ca1ad366db80e0c42c60d56135659f3b175784c6c8b6ec711d013747030c548fd0dc6489aa9059fd065853352d69a101c11de88527b469b7b4a9b7c2b5517f3432da0051ca5e1f2cf59703833c651624d6cd888b8b4b953427292b0bfda063a13c6f9db9df596b7ec440bc640b5b1f4d1aae20ac7dc7625264ee433410d3bc24200b277263f0fd94a9d9e1c51c7c0eafb2ca2eb6b73c6d053a1710856230089656cb10b6033760c2acf7feeed160c6ac0ad2dcf01b00e757e751b972a814da1ca3d42c5d2a0e5f0ff8be16e92cc79315615f28e5e864a53ae87099f18f9b6732a42a50b35ecb270d18fffceeed261c34648c45eb7734cc0e82589a3861f8403ad251527ce89cb00558f8b9a9ba39f94ae2e9e711491f51d1abd404a7468ead47a8f47985b51fe5cc44355ac9ef74e1126b6aae28f4d5e421af62dbb8a093e37e37ce1e2858d35809490c4e09c257ccd51ebd56f8a6bdcb116c7cc7c1e4b037a74ceb2a64244674c0fb74b9f794dffdd0da42f2713e01678e78a0056088d25247bcd4e7fe4f0ca95f3b0c84546f1031072cdd354a6947103e04460dd78d371e2bd355f0eaf1d86199520fe98dd97fa4eec0aa40a739407fef4a0b4dd46a4f64b44f004cdb4e98984c907c1c344a0e039f0bc2fa07a90d93e87381cf2e8f77bd70fdcb9838a5d72843fc49ed5b5cc640f380088c796bf3e876cb434902e21d31fb5fef6dc5e6865af4430df0f16ec043424817510d258b44b0b33e57a9fb4f69155d8a8734002e53516a24f0654f94391f6702dac5d5a4e3d8e7fd0d70d06a717200982d37266d555fbf68e6fca3306d61e975ad7b6c55a8c6c3e69f56b2e3f5974c55dbeb6ac9d9a1c0037daaae69f6bbdecc1b3b894c9657528f9b04972822d0401473cdd07290f0bf4054653481f19f4a159c8c7fe463ff88f8c3821860d5c0ec440a2542d160e903089e176399f58a5d724d6c0ee8affedf4446578868a90b57b40d4e330444f3e9a4246ac208e5fc1b81a03e0929030701d9bc7b66e020711d67a4345fc427613ed676c87ec6208723f525ad30aee001844b29643f4c210b4d401a8d08655adb1439b4e0713a2414228b936d000ab14290041bfcf44d80a427442e86299533039bc85463dd7284e07936dad702959a1ef8f947d0e130e9f1edf98863c9ff92717f2ec3673255ac224062d8dab88350fcef16f6ceba41b755d2940a8a142950ee48c46482094600730cb5fe6dc8875de64a3c5b71dab8056c05cf849475c54783b0e85e72917a8e6900f3f8d0a8143de95cba56d347541714799fc87f8b72fcbe3eb78119337fb10a4455f21d8a799e984bfd2f14f755c6ad73e4438e2ef12d0ddda699d72586af11bd9618fef575edc24f31dfeb8ac6659e30900fb209330b38ce1df81936c59d4dd911c3a025d1af3b1ba827ce1104b0e42563652ba0eba2a0ef8546029b00ec1dc9a99b687ff034e858dacccb484eb59fd23780fe35830e8112596b53ff4a648cbaaef992c08a2f3efd4f063745f80c163ab5af697dc54fe37d440d6a85a6c0643ab2352cad8067ce0eb59bd315ce151a66a29438202deb6bc954637c104f51ac074cea2e54005773be881329ee89f7e89761ebedafcc2ec990fc1a4b6cc418640fa4fc8668f7a50962b77dd35bdb62977048baef33a460eec8f595485e0f0d00582d1791a04950e807d1b30a85f67e3eaf2513f8a2ecd47dbaf97e67b885265756108f60dbac7f4e884589a5acf61bec81a564d70814a588bb2eccf4dfed4d7fd864754e79edf85695f24615a0cee3d173fe88f106a79b0102c61f64f12235af9208f28d70c33164c125b06da0dcc518b321158baa54248e7145545ea242e3a91428bc1b986eca7be150cc5aaaaccdad116d8478190d60078807b12ddcdeddc3eab1db015fb92039cf98e97d0acf3c30aaeb7834f66ebe946749bc0708900245fd7e9d942beeefddcb0747b4abab0b4a0ce2eabeaac9bb8ac74bab2391c8a68777d9b03a445fc5c5c53f0a8fc2973f36da5989991ab77b00021cfd1388cfdfd6cddf7ee9381e0671c0dca0c589676033210bbd8b226ef87ecba77ced76fec30829251f1219dd48033ffd24723cf8008dbf55defcc40110da51b49f268af47fceb74aa710b72684605b345ec419d67d170a1d4138e0b774fdb433364b0f73be8611ab24d043e01b6fbdfc53ec748939b009e4fd55e8af645b16006e6027d17a7ec32ff278279be74c9c47e0c27a3bee42f5c810e6db9fede02f0677e6fa9f69221d6246d25171c1557740bdce34f82663d472d405382078faa5536ad1eaf45b42f509b407e639ad7c103a57c39c17c06cfea7e423c44270fab6cc40052fb94b1dbcd82826b96e97840f9c7f6409006bfa61051a1f9c877f1490a17bdf2832a418253189bf8e6b84447141079b6254c272bbc6ddc7371a134099654676de08627bcd9dea5aa6773c02cfbca8940ea8ac86506ba2d51b884dcb7f846633058870f0bfdfe855d60ceba0bd79f92e7722ba377a05029e37cb551e3b8c1fba4b677802f882511bf13d1d05dba732f55e9bef53781e564b3714cded0dcf821ead4578d66ebc8dadf74d195fc84eb0b10fdea6be4057b0cd5e2aa7573190b417f74b354d116690c5fb68c732c6a6a8dec755bcee6f36674a619660aba1d4505f5229711dd20ed12041a7373b035bdcb4d2c5cf68fd4f341bc2757d33822ae73a0418c1d6a1285fc45570e83fd7bcfcc0c320fde5c83507074e31fdf2e5e638b54163f1067024910530466b87edd33fcf7042bc7b8a941a09b641891f042844a2ae526d04f85f3edfd1df48563b093a9c62b561a7af2e8c7144b540cd86717d363909d4e1562fcfd0cdbc97f9d34c84bf9e34f32afd9c1a89d789e0bb45114aebf2f3c30d79a472e930a26b183e295b1fffeb6a770e72f1cbe324e385603a0b378b0dc929375bde0a182675b1e94edffb4dc996d9e474283cbeb7a6d306e47723b990f002ae4d2e18b82018bfdc2ae841538c7e80d3a3459da2f824aa7b4506c4bd0f7d4c4ce1198297ec722e9fc9714463c0036a3801961a29e2614145bd010b60a8e2cae395161430872a7f552f7e2e931f4ce11ae6ee7de44f746c2e0ec5c2c49456cf1899c7decd7fe76635188d902209bc294924b1d62601095b46bb91a12cdaa1a9f927ea35994ba956e266caba92988c7c3e909a05e5d0cafe295782f96394ce4cfee5270e0887ec6e8987856228cbd1bedec55ea4131e021aaa5ecfd2958e99dad067335b40b47159607aba2f4fe8f75426fc1ea0b953cbf44b707e96c72f88b6c945fa34afcc66d4a6dc695b985eec0dd083bfd13b224baf1a11478c25d5e805001662ffb7c0fba330fec56e5a3fb88e2e2bba51353ab215367160c0ec6c76bb9c4eabe1e1566d5791de6f526bd7c69abdbc3646bf169c38e1e9e175d81196cda8bfbf195d46c20c3e756043b9d5dfbf5548c03aa494a102c3ba50e4105147b86c100573846248fe81b09ea7c23fa4aafe6a6f684a807a9c3c9f9089d2bc97069929868354834f2c06e9983ec01d0bd763b3ad084e6bb496229bf15efa85ba33eeb8f74835c9b5bb993c4e08ffca2219e82492aa400d0c7c7d2f707e4df9b78d348c5034c1d1ad7729dbf6d8af854f6fb823f19ae563e4a4f5fb496ad02e01a41192bfc1e918c0835b3a93f0b8112e266bb25a732a11ec1119cb2be38f20f06e16064226cbad63527387d140c210fc5d4f7a84d4c5b8cce4c8f0309f6d2fc31b0672864ddad848c9831183252013720289aefb5080528d0d81fdc52bd24956164d980992d7e6b75018ca17098ab12758ec61b386b68764e5304fa7b0259046a8c820dc1f59f6699ea0a2d5ab5a9aa04f6c1d108d62f6e787f48363672e96fd6618e2f5a51231d47f0970b180d7a6b9c5a4243f89ca3877ec40d118e6f6f8ae294caa33f0e099506c3138c1945bf0248e5abbc28403c79fa82d1460f48b2603a55befff5d867d1dbb24af65833123f734bf614d5b0a372df72182fff2cd2acbb77d5e40b62f8fb5b21c833f7d2525d516f23abec2f98067fbab67d3eb954986411c2d69f6da3843aa6ea2eb8627b9505746bfe8cc800712bd9677caf1c87d5f014b25292fe1cc29ef4fdf89b6dfa36bf044ed3743eaea6024fb3ccbf1ed188a6668c2d0b19bddeb0199d9502abb7a250ee42f9a6d5a246cfe3a88d42ec80ee176b5822a5b22a8aeb1e8fe6087c32926b4d59bd7c77034cc0f1dd9af431e6698ee06d8793a96be0771b96e745418a191813f34340c2881f62bcb20047b0fd1d17d04e3ff34aa0c0799a54ca71dc5ac4cf0bf809c5ff51fda1fe3703eff909043bc0e035d839affb59833258ddc7d84e3d7666e938edc3909c7af4d67ef95795cca6968d78430df1b7b74cc8f36bcd2f9e4d49be72029469ade82d9638c5beffadcb0b7e3cf0eb6ac05f76fca29ba39a174793acfa68a97f8bc359dec3812caf6432087501d1a3876978707280dc2bff96090972b0501676b97fc5b3f1f7a98a794a9242cfe3c439e82fdd74178b1c2561ed5a0dea3d134bc19f2380a1bc84575a7bb12dcce17907108490e52d06bd97bea11965adb6bedc03a88f2c41e78aa788ce77a992f7ef2f3e998eb0367f88896bfa5c51f1d4f573683d7e4531ecd7d8ec395c31fbfdef6916206921fa8b892b45a35e9c4be5db2b72c7c7a5940c318c91586179f0df70c43197c0efbc86483e73f71358b3f1d42fc84152f86147c606f1b2aaeb581eae1446be3df8b115975d442303038d7c710ba4d21b480cabf5f102027b6fca72958587bc3e0933b2d35971a5ef33168e36ec887a43e23d941be69768eb2f14abfd2bef11b135baa5bad7c64e81668bd44f6e43a2d7600250f5b161675f0e2539684ea994bdc84d924c3829c8c0ff90d7c613abb7756e8f91644bd25784c91d6747cd9cd06ef5d2c9181ca07d188e4cb4c8dbcb473bee5f1052a0d6a3788fd72b56167cd0cb9ce8310803434b281050ef6570f80d0afafe5979804392ff7da79307f7c20b25855a064fd5bc84a097e872283542eee33242da0eb9f3f83d049d6b188e5eba810f3629a611c03afdba705777d756d36f3aa6ba8dfbc801d1f8071f8432fa0b6a07ebb923d64b68cb5f3b04ed3c3459edfcc3e7eb0eabbe8b0109ff2e46606e621b531fd781de588436f6fcabb81fd56bdc8bf887d7e1b7dbfb1643f481a683070b611e38558d6577ed38c25719d3c077c24ae7cd93e680c08cd947455cdd763d34706f7383209c884e2bde6103d6f76e0df72e8913bf88f34caaaa1c470d88be6e7119fd8c44889e19f70bfc943be8f7868bebf63fe3ef9b62f1d5e0c1d468a4a75a7df57cede7ad85d1afaf44f49284846d50709f6615e504460b48d720c419709a7a3951b422a2a20072d6459eceb07b489c3b8a5c8a414a87d6bce0e5db95d0f0db7c945db5f94305cdb7e7ac22044718daaf8a1cfada48ccdadd6746061cd9e4892d3e3a43544911f0addafbb0f0d904338bcc2f34236d8d27ab32bea5fda8b84522c502bb4d89b1e59f8563bada56ff3ee6b17ebf3fffdb1779e90767b408d20a9fca41e1c9dedb0b9c569f67b66159df538a7dc5245dd00bddf78cd7bf83e1d1d524a6fe95b14c947e1ffc2d64fafc1cad76f3a23cafe0c763ae8c4bdbe2b0ee694e7e85027d187477f8edf0ba68544cd65c303077dc1e23d64d0385060b08443dd1fd0e2303ee6fe9a0f0e2599cedb750592923419809c41149168599365fe164fbe1e8fea7c746a5636d7234def88f710afa4b9122d22b677ce590836f67ed7f399810ebf794c0ff7a40636ffc3807f0bf2296cfa1506f65a989d2e6827d1b7bfeacacd3bb2d4f67190171518e8065e6811de2c990d9c20440060b945bb1404c3d1e7606c4b26a77dd0222be965352d1c84bcb0078bd78a5e5b454178da413f7e7079d3d9da25b8e7348f5dd286c9bd5051b04c95633e2bfc7e7a61292854d7d17031377821ee2b501a6afd35b299232484d9e2b45028ebc314612fc60d40385fb8020f2c11f1e64d3e430c300537954a4d52f7e072633b5dbe0436aadc6f074013f0969a96834b54c3e65647694d433051bc1cc3d3c5f1570a21e180c1ebbe5ab926cdfb68cde6720cb6e6fa59746b4739570021e7e8b513ba3289599da75bffd44654ab87ece2315fce28a5482460a3ee7e2039d0a82f622e669adfd2599300a7938036e129c94be08d6670e6c619e820d646fec001956b39301edb85f286484c92e2b8c3d30260a873ae0b6bf266976c3db25d010050f40563a305fe3396c19e9364a9d890f4d3b0f2c88482be8a405b5b95519fc76976c45be1d945bd821f9b8e1121b71d68f8f7a6e338934e69296d2d82a086e7032f59ecafe67774e91810f65d073f021ac240d36272812bdcc0438384a6c7e7d304b0b8f6b1e8a0f4a39385564edd7055d4704c6e64d26d9d6b6057c59d4195452f9badad82654ed49718eef8de4be81e54865ed62e6e61464f0acf8d6f3f6533c9bf03543ef072434b847bf97a529565eb290815273b6f86fa0cdb30cd10821601ff3987840bbe3ee7c0fc21ef78fbfb1d2ad2b97707018e637cccf1050e33641fc78ebbf90d7945c36ff5864f8f2b82df28673c76e8a49fcd4fee4f85eb1064dcca7e0f26f4d9d91af1fad3cbf37132b5c549ba1510178e1c059efb6619cb45598847b77278c0bbfba45f5ad9d71c9ec3f06007ef279d5eb7bb832fc174a97aa14cccb89b0f0b512459ac82b761c57f2586d1f8198b19c5f518e40bdb9c9244d4881bde83cc26041c138d11992b3e3b275fb14fc767d6860093c37d8a9d6597d9dbe9d019622f52ac08e99390414a4098c26c5fbcceca250799e14ea0e4be621d2ec828f5b54ba54058a1ef1b7f44af3e955a1397d061eccb53348e9ebcb167cc2e06a6c115a2da0b0f55f14e8bca5a1656a34d8c452c15515caece90bd8c4d764bab380aa535ae93c3304f0e2f13d7302022650bae99a23199081a828deb5955738667c3bbdae78606dbf9d96dc2752589112dbe8c594665b900969fd08c158b70a83a08d0dc9f490d62bc0e5b5101e2f32bbd23313556e0e5d7f9fbbc275d043b9a837d3fdb7215a2793aaf465cd57aecdda38c3154e30ce6ec10d700e8dcbe815574f08a79d85ec78bb5e8a0269b12c2a4055c09dfeb1ebc1172d320141021cd8b14d5aee843169d43834c823be65e8d74b98a2feaaebfb0f55b5b35e284f4a93a6e1900f3d234ce1c71f66a38e0bd22d0d35fcacdc61171d714c72d91b44cae9030001c6b06beb0192aa22a44c58bd4b2c9fb308bf934ec8b84221ea075965c05cda31d151aa2e209106bde6eca4ab4cf6c787532500fcfce9ae6be96f59732a591cd4c8ac06c40b996633a68ef3da75e65bb36a93cee1e4a782c5cd06d7fa9c5cfe0516773dbbd3dac82f992e1c86ef0fe93883ca29c7c19e1c0f754859e388019acde6b3d722a9103714d16dc62a61d76bb583c44e88f57e762c9bc7537dacb0a6ee92bfc1a41952d839b0f45ce8ed0575bcaaffadbc17fa8ba6aeb35c5c8b8dc8c21d00464bffdfafc6952e64f4322fb26a860dab46838be5086b5776c55190affe7569f0f6c0513ffce22fc465c5b1ef854c729af3d73ebab37fd8afcee052e23a3c392b5e5c86c58398e6cd22673bd998fb7808613c15c76e474cb305dfbc10bd37e8314e9bf5fbcab1e589e7cb2aa58a978eff824ebdfacaaf05cc7ae5b663d6fdd89d465509b57f6147b9349fa78ab19dd0f89d8e185c39163e6146c1f3a3306dfbe80a7cc397a46ca9824748e00211de1883a691dd73cb106001b543ae4cc5125b9e2e0e538c728dd8443fab97d2bfa8f0ea938186f3c1510a7c36b252efb185cddd7aa4f726a7cc32eb439f22a0ab5adb910e385f5663447f3d7df06a6ab5222072c69adb29068ebad421b77ca5deb907fba9dfc6295c29880675e1d822da0446d36f1c1cb8edc7dba7f0b4e7bedc9869f70ff8f8ce05455d9393e4a2420dfa805ef799b40f69d752afa17df2204b418a09796ccf8805926acdf182765291b99d58f762e8b67aa04d84760cb3f9bee751047ab497161dc3dea34fc8cf134874095d742b5bbc5234bc58a55d239c33cf3c71d1c13b2fd2c08cd52ace8ddb94cc076b46a76afcae7582228383dcfb49ef8133bbe010d528149346ab7aed2894f74bf06cd6f63b173d055c6651086b33a67163c675f44fd0839fc7cd6a12cb835d3a7706cc7c3cdb6c7c44e394cdaade6b84d17ed918deb4dd5fcc374126dcfb2b03795bdf6508264d56ff454ae42dbe79147b5726a6e7d61555741dc29f6b32dad814bffd01c5ab6c4e1ece03c8b9c6d28c3503db3e1ba4c521c5e87c7469911682530e2b7db0b39bfd82bb71a667aa4ce31b1e3abcd7fff1c72b37b9e47b45d11beb8bc4303887f06fcc1a76c98910e34787b5bd21720bedc44f76bad2de2b17b73456e108cee146e1fa9edb777c6527bb0c0ebb91ea94e6e386fd1240338fb2eb734e78122bae58e1ced1bfe9438c71dfe635c4b48e69d04584e70b0f921b392e7166d1408cb4a556c6a7588bec890ad5eb3b88e4f5e87f6015b717ec6dd815a369ce863e0b3ab65f4861f5206f75ddfc8fe48382d1abed6e8831d919227372c8c3788998b44da61b66cbeb6b568070c6aa09b34b1a2582898be304869431982fd42b1caf60fdae4e6c12e1ff2031499d076f5fc4ad9df48c9293ccec5356dd92ccc03cbf9794c6cc7239b810a46082477bee5a83a962c0301ae7061512f73d52d77f2c238763ab4698752a51e179a9648e038aaae70562098d31df9cc868ba6aa11bbdb9e9984a571666002691433214053fec7bcb755a214d5f4b696a5fb7adfa47778c01aebdedf252197af2d5da38fd09f27b6861a3620951d7601a24a11081284dd9aad9caa85c5b971bf62dd100556a3e932473d3cf059fcefdd34d437a3b5aa194d5f18b40855b83a25a35473b38c24b1eb6acf897eef5872bad2f0f5bd8bb58f0d500c6f8ef76f11f17b93254144fb269fd43e772834bb8c6ccf019b08ed47f43b9427e1ca0fb19d27bb61b84203ba5326dd260f5864864fa9e4ca4800ce2c054e0404f6865eda585161a61e613e9531c740fb0351a21c6b5208c7db2f4bdbbf9622e394bf9e13384f318dfa8a9a9f8975d52d58f89a72020fa17d7d8fa4f85ec2c3d4c8fd207986c93ecdd3ac8b388d729d30babccde8dd02d5860e3af18a134edee12f100d4709d51b6a1ec9b4cfa324f849fc3e526c74452bf0ebd4a7efe91e3221ec0127d22302ca9d37f18df55fe928686b2918fc43c9d6a4d452e93d3dca588cf68a45a398b3b2e31c05de3cc55018d32822112822c195e63acb99f956f86ab00db82d149e119b836243080cdc7e40817cc9f3df4a5a0d540a7d8e2796075dff1a820a13f05b41c1fb8b7705bbbdee6be35720b276b65e53a51497272f1e9cd5b98339704ea0544819f8ca558b121bc16b42e2b8864d25a7013767f6b5d9ebfc609d33628290202240e982768cdc9f734ec702b90a5b5187bccbb1de0d1905ef282806205e90a67a01f5eacf3ef302b285773cdaa0d08f5dd7873d85666562e99128f294d9cf159bc55c9c8a28ed57e2261ab13a5023234b411babc1ae500820f1084cd12317b7df80101b547873caaf06cbee836d10ed8e44aec3598fe126d1b7e65c70c121741ec35075d48f2d80ff84ea1753725385864af4ba969fad521ebf30335a3e38cb82710e42655470ad2710ad1ad280cddf5b40f26f01c4c7f49d1b64a5933e8fe880dc3710fd613035a3290196cbe3b8bf8ea5add0b42b10c13ba45a5fcb2f700ac6ecb2c50d97e6af9f4d76f16eb1e50fc6511dd700d1c972c35b8e62904a0d0d8f64d31ea2b91e4bac29c7c6735069aaa58a388062748f016a79a8de0fbb035d75cb9de73a6b6ed58c5c947df8836d05e5c0d511a82872c046fd4761d1d1e83bc0381be0e18d00936d29369f9b5938a92201604a92be1079f8e91e7fcf7cc0b4565222e161fd3c93defc85fa7816d5851258dda5592da5283eccfe96fce10d318f520cf7731f43930531437d3719424a96c95a620f994280896b61106cfc3e7e3baab02df2c7cfc483a84da47e73e15c39d0e004d755ecc4c71cd50b169ae37f3bdf0a6982498260983f5a301136bfe63dc4874acac3cb626cb3a83abfd07897e5062b1b1828d00377d086185eec624f3cf2819079a31186062b125274ed89a9ba6be6e8537cfb51cad84c3161a08b38a5f5d7e700c1a103ea2f4f46f2e1958bf554a9ddfd811bf375ba1da29350184d433776c12ed2fe43ca160f46b87aa02f4978d89fb58342d0eaf82b5c452baad8de6a2f70e84daee54b27e1ab6aa19144c4079c5c2f971221bc087ddd8fdd2f7abc589fec97c63916a1b7ec6ce359bd10b7ddda10d52e1941a2d314f3fc21fbb6cb358bd6b527a23a10349b697e7ea5840e4ad22e75249d0829ee8249e375b53f611320cee8ab3be62723f6f666462405f61635fa088bc299fbbfdb67af0a941a1ba0879ddd5f24e0832dd27f4d37a2f3565b0f744ab9ec6923f0a35783636a43bc0a7a5b3aceb60b279982e67b2b43fce5c3794a88749fcb8001c0d9c068f683355569aad090b477bb08d242bd219b07b8f301f7f328d3dafd750a9ec178a10ed50a234f203551934f96d9d82203b887a1a531dfd5021ed8aa264696683c2442dc06e640f411e99aeb25dfce6883e4b20e66a12848533f9e4c179e6c667b1be8cb7a68ea137e9622c56c666f08a0e78f32045c7d239feb2ae61858333402d2600b2846e4ab26b42940cf9a3b815c12f56cca8b41f172db2c0128ff80d9d5772315768bcff19af2c3ada97776a68d70b21c6b972006f8ded1e71b6dc17c2598a786b53dabc99ed86f271dfb80ef630d8697c0c37179145f2dd851a398cefea9703e68146662d8844cd9d1540a4fb9acd052cf16c56994ac9e9c3cb4097759579fd3e056a9f03c8d7655363896aa38bfe72598aee468bfd1c9f5b4c10ea189f2dbc33f7c80fd45e545e1b9736c8a047f2700552e0eff2314c766cb61972041178643f4e23d5c96fd9231205d38e3480f56d13c19c1e2f743e0cbac20d3f2576f8d3793040aeb255de3662047805975363c6918ba5f8e3c80757bb282b123dfa51efd8d7b43c5e5dc7258c9bba0f7749b2ad5af67448a23615b0dcd43c559ea7e74b367f23dd719f7bbe3fa9ec5b2a4a82af9b36608f8e9122e362b612abfc6a5793652aebf021c118145c12a7029649743ba3f2a21a80df5a52a9215f584d194fc777bf9d389f579bb0e06a3ee8b99a78b36a5f15c385ceaa92189261e177c8eca89489edffac2281bca61bb285fb7c867c75a7458a331c9af4465541be1873ebaac4197b89655e0f669f6018c421dd2e5c6cadc2b0a7d6e657b3c5e65a95ffc87d330cafc42f01ef82663b234e08e5c541ce1cca0e17b861bd7a743f4e68330b88444512744385d6870e6d2c0311dc257dee346ff47e7560ce98643ca316f5deb3af37d85f930bbb0ac671cfdafa36ed79da4edaf522e0464e7fc9b5547ab22b1423453a55406c02326c3ae636db885b40ecf4ca736d4b09984d75077e1f1345c48dc710eb40f842c8c260f318ead01c588e62cc310acd1088aa687716fc163773cb298f124133aaa4023463f0cd52d2eb7f323541877ce48cc03f075fa2591790da009d9975f94af8a3ae6f123fe09acf17892fea827c4bf06eee9cfcd1a76c446bad204bd3a66f8f26f9430ffbea5bfdfe0bbadcd676e98dd58b65576fbd57b4efe91efc20fbf773197bcd6a68f2f9edc33001ee6bacbe7ea6fecbbd36f3faffe35607d212a5fa8d6903962b5c3456c1f95f4bb285affc71a3739acfdf56293349b782752e69b2a6f0914c8835ef6bf7da85b4467e2e712ae674d5b021e0d2157bf7c6f2f29ebe957994f41ea2f12d3eafad46e31f72fa7f0a53994e96b2da8f49bc144e1e602cf07defbdef28211aeb6a16bc2bdcec07c5a3c06ee39a07dcac45d231e0c7406e1c3d5c94f55fe2947ffe0ff80049d03b24f147df9db9f6e871b027e139339efbfec12e960af07e90f257e142a33dd419776835c79a3f6bf188f20c79e303bf6074ffc1b5721d8814fd35d291e103b4bd2d1274e9a5fb8e34afc837a889985b76c1db0f63a3cf30eaad9df2f0fee218ab28175e53df0edf16b4310749dec874e288f5dcd8c47d81b2b7c7f7dd3b236deee72dbe50ff6ce4d6f7e05ae3eb9fcb4f0bbfa74fd8187385fee7cb829f883badfafdf0a27fb2af89afd045efa6eb072c4f8a8fc90560176a934dfe989b520b37f8fd5eb05e386da7f31a8ad256cfb0bef06f9fcc31943fff7b6418936c4301ab38a3f3df88e3febe3985659fa7793e992c1ba53dc53c7764c98a97fedb6b2c7bc8e4c28b679544f455bd99aa6d8867a1cf3baf876ec20eedf4b51bd848d9fdce0228fa3eec80d3ec7b8b20745c408ddefafec8f60d59eb0e8c6db91e75b80502714c93d5da526ea22c010339e3f9f75e7830e3f99d775b08c79da87fdbc3ccc9a72d7c13cbff011a8c942f504671f85ca5631ef43879af78afe1f48235db9ad71e3c6c343f07c3bfbca35f452a904b8516d344c433b9854e6de32fc2161cdee6fc3611e07e5462b14b6a1d75c9907c53ac2b7d8ff42299377f5dca0500c345d7a65fe41c90e9f4dfef90fb3a09832bd2099558e52ba3cb67077e741a0ffb8f96f3706a191e4ee0ed93afab2eb85f407682d0324fba4998baa08a3c30db9adf96d5366fac439dafac65488a173bda2396e0899eb46ccb9a8689f19dcefbe48e50544f3927366dc2dc327fe471ebb031ede7cc1788ae5a8b394cef2cbfbdd3ac608f1741895c6cccd2bfb64f6c94153ea45881a4ec60ec70234bc7be0032f783bb3e05e88977d4371bb8d8f9b1a5a01c8ed7d20357663f2a2fc3f8b05755fb3fc7f28dd840154385883cc606a8cc6c4321ec8bff5643be57d4c24309d55bbb7e3f36d943194dd430874266be3b33bd2f463fac2ca496aac392ab011fe6371ebc37c46a8d072ba49e6a6489e05813f5c90703a2a6bb7867feef1668dbddaeac7582ab7ff09bcf1382e2c4ec5fec1a89dc99156fcaa7258e8866958450bcfb3e95e7db658450c3aacb1c3cc30e68c7f1bc1abdc8e5f10ce50d8ed7ec1a8d6e734c9dee3b1950d74c832191d3dd1dc3a0cc01e006616d6741405b0aa9f6243af1a99c2980fd7ed6e64b7c582d338118115cb9523d0b6bc4b6ddce86a262bfce063ef9ba418e6ac387130cacd1e17a298948699c05e675a783c62dba8b321880bd34f80baf5787956f95d1578d100cddfc0ae14fcdff406e4de216bfaef55e72a21b7bb42408e44b06277493843fc4c9403c476c90717c41cb6b8ef53791f19e4e664d750bfb84c4a229bdfd60c227a8ab2c147c26e600222885df06ac46cb27b039dd5ed162e727e65f785be873cb35aaf867ff6eda1a8fd5c01bcdc8d100b174ae08ed6e21c7cf8a8549a64ead3a0195bc0fbda4547da2c6fe66af80bf113aad814b1cf6dfae1e8c7ab59cd2b3047cf7a9ced69d061dd56f34affbb39207e5ccd53d62da621ad723f4e2f528059111d40dac226b10c9a78818501c2e6d11b069fd01b54d95d1fd5c617e366e4ef5a9e5a446888f454b6b39ee005f27a25ef61cc2f333c47ac5b2c27be4e766390518f4aec1f1e267e3c913c341cd6d1c92b70d3b6f3d9cfa9f056c484f74cbfe109d2f0cb7411e85a52fbdebc10550ebdb6faa05ce227179e87d4c6e4e37594233836bd39f6bbfdc96cb955bb66ecc03500f1e1ad8f857fcecc2ebf23a2dbaa06341176e014937d11523793d038349301c173f4c93d01a03880a0bbc5762b9572fffb0c38414d85879d7f8d3f7089e5c3f03899deead317c57464ef35ccc2c2830ac2156623cc79a7ba348c8b4cf67b78db3ea1f353302f50c40f3263c3d7a6f786787d4132fc5d73f94864f463e0dfa4f817fe0126ac4f47d0136f38b1c34ffc57813f37c8e1a5f4090bde285af4f2ab1bc2c0380525bfdd0839547b92be07905b267d1b142fbbd64b02dd636b725c1798bf96da30dccabbe69bede0788232bf537411496a8df78e21e17be7be3f04642932296fe5bd4dbef218c6f548e624ee603e8a5f2bd586f851b522e426726efc0be1f709eb15b684a5a1f7c106cd078681c98332f3836f742b7dafb2ce01cf2be4de60e2b2a5dc05bf01d8b80cbfb9702478236c44eb81a92d0f8f0f61e100d2a9b75e7ef3564159e30b3ff15eaca17af5f208f403e57a641b73be1c40e5cf0d4e176e7c56d720cf41e7298eb9256911e1db860dd74657cd0c3c8e757bf4a9bb7a7832e52946e03eb29292852cfd9a11e1808770cdf84845835947b42a4fa8d10fee113c98acc01dd4832a99ae76dd492bcccadcf15664ec233cf400b3c6d4f1d5860f9dc137ee68993167efac27f18e5ed44b3b5e019f763aa8adfd8bfd408d33f244f734eaf127b73867ca5c4f94cb5f56069a78b05196f17903f69e5addfc27710edd439a3f79bee5799bd8e25ac17001e4b0f836d108d74d5810ffee07264924e3ae98277e672242108235c902651ea5c08c25ccaea9befab934a1951081b1f7699dc70c6d278dc775c614bfd880d337f4404f44f1ee825c8eb4fc3411011d109edfda2578422a478de3967d010ea2c9d405608da6525bd2171423fa7d7d6f1ce8a4767866184947c06582d7846e93e46d2321bc73acb9354ae3a9d14cf7249b36d4c349690a2863da1f3ae3a41c7ba87655bc299f047edf7313cdfefa7b509c2c4c32cda273e4a1cc793479cdb4cff2016ea9044dbe4fe1a0f25ec2cfdcad8db31a970bd0f99041cee8bd4c0042764a1eae5ee51881b42189b8c5dd70d87c27f3cddc3029fa07871b6386d9e1e9953f420fffcc27781efa4145533cc18b623bc5702d0c0e133bb92af4f0aba1b09d16089be399159efb0980f7adfc2fd71cf2adcdb01a3c83bbe12c885662d0d27ea299973bfc0c0b85014cd1219a540173e02b8d88c0ad8b96a96e9aa8f072bbd20d026f4524c1fd746d6cc1e503e397a37b4b5ad57d3fba4ac2236b46645847519deb301edd0080d4096c60117cef6cd8b9145226a7865fea8a4d52286886383783742fdb15a2f57b7899667421f5612b8db7a91e0d68c4e8b7cb00c227a0f700e35e32948be40f62f6bbcfb9ac244635b3526e272614616f95f03cc7bd4e4a459b0317fdca0d2d3715ecc47944b0ae874c90cf0d03df27c8f60d9c5ce52768eb3bf820518ca32959f248761bbf21d3e6b4e9996f9f605247ed0822381c04a0c05d93b2f5343775eba913cd523e39a4e279043812f11fa0f71076a8d7474f99f79b4db62ad675495f3902cce7f802908f101f7edbcfdca38110033fc97709d7b2edca2aeec54d599cc2a5db86f8e58bd04bec040b8470daf854eeba2fb930571409c9dd7b9fce829f926ebbd7547620819a0f617e3bf3d34aeac88b13fcd4be8182b61e772edec7fd9549aa58bcfe23221cb1428b749f3e05a3edc7807f2493e47bc34d011e2a5f2c37ae624b182db9d67eef0b26cc87d55d926a17fba17b0f9dd14f77caea0ab82af84286a352c324a20b49779aceeb45ed24d8c2e380fc894235b16bf39f6fa321005f37d01f95a4dae8e7ce2132aa1ed7bdd45177c3b412fca272a867793a51f2b736bc6c6927c103727e3eb2081254083d74539d0cb4792e16e16a0f5a7b0533964a31e851c5dd6762f6649419e6fb958d920515c0ea395cf538ec04d42d7e4801f3ebcd3084cf6c89aaa3dbc696cad2561f5647c3ffbfe610d6e0fbce6ddfe6ff99078fb9c77f15afbdb10a6d4f1123b5904151b3e6819364c360555c38442aa7c1c8bc3cc5b8d4853b964dff0e61aac91c20750d557b812b72e6effe347f0c3df8fb4946b53453ddd83b351422d15a938aa6f186b4e0dd3d72deda3254fd3702fa9e68eae4d8db5b460882d45afd5c6fbc74ae44f2dfa05bafa07c35018dd4677593c3c63874e97ddcc716a1bb7c6b0a8d15214ca9ebac63335c97618e398e43f4bf6ce7c1233a550d4d0749eb7a2c7a105eaed15f852317924f147fd41972fee698207bf0383bc322a589ac1313b9a78b4a6193076f7290ea3e36c7132e41597bb555006ce90804e47d264601c8a4014e24e72dd6ae353a51a97d8e19382cf58f42b15ffa637f0e07880fe914027acc4d01ce5b8f24ddf3746ee7d3c4cb07bbcb2f29da8da1f31dfa4f5493604a07557d8bb997ab63e86d51724f72db36df521329d5ae169e36deed193fc0f46d32f535ec57ce0430e8e0742db6c52452cefb3ebc2233001d49d66cb9865b116df77d7c463dc6b094ab979eecbd796adae9c49fd887b8c30d0b4fba428f22a68dcf3ebebce88e08bae18bfd8b6fdf180a10295d590f145c9270e4809ca85dd7f5f089251ec57544cae907765827f904737a92664a285fdfdcfd32dacf0604def890a1bd7ce521ad91453b6b3e8c8658a3618d95503e1846ea38c1fe98a484e26d28716cfd0368af2c9efafb060e44c01a474a7fb969215bdc6ec1cb46f730e21d6c1c5043e51242b439bb89e2398ca2e3acc677c2fd0c04ccec57baefeaa99baed66a78515ade04ebe16865cd89b3b2d21866e3dc2f5f1519f9921914b565021caa1de8a2badf45198b8052b6e99124dd65af8b447dc6c60f29b514244ef69d8af6a3a388e2fa74eb4b789fc178d3057059638217acbed94639b6e20cb68d158b90712a02a2fd1431b13aa2e91bd91811539e636aa9a30b6bc91b60fd472ae6a6480fbeb37bcc6bca1c7c0339b2301f7542f58c7eb1a018f600fc6b4a8c1d9b5de11fb0aa54ec02ed91e1ae055050b5bd0db673255d0df283b4f9a9fce270f4e156de1f8ac78a30c6c8443f67508efff4f3b725e423dfece93d4486d19f9733c2f267e5dae814370bc0cbd0f15fc369c5c8aeb85d7797cd781736d47701ab5399e5308646fc2a0b2a345634ca6b4794fb496e1b9423fab684fd4d49ae41d655a067482f262d81d877b650a9e837a3fdbe3f2ed6479d258a940584ce6ad687a6c258e2c2c0ed8700a67a395600674b469d5b379211e7a8fee7897226ddeb0cb8b0a46ea59534a9a6a8e1756b1be48d81376009d26082c6d884a4d50b8ea8522b1a8ff70691ac704436e53c2114b12e48d51badb0a6cec07a8fb0b79aff247fb450646b08741382fdabe7f9f501d995f0d653a59cd9036bee1816d9d97e8f502d92216ca4a8ee6122422fb841c2b36dd57ee4d7ad40b0828771f0ba00e4780c3a0a05be8b34af7c98d214bdbddd903204773883ab8ad50e3755a68ce4a1ec480e22c4bb24981e2a0a492202f822a70fc7035f1ab51867a40547081a8e0c8a5ccd6e75c32be2b43ff354ff41b222d7a602538374c80dda7add9e8cbf29bdab4d642b9432d1d8213e086c67dabc40b3f5bfdb6c48b16a9478cbaa32cb5c057fa82e5b694eabf140c75a6d22d51aeba918535e5decb7b4d7ee190cf005376f0647ecc41b00c5a30cb20801aeaf2cb06e0249fed8125157c8cb94acf7c9a60c5ac8e475d76b79a7457671631c79c1875622f35c2f2984d583655b90ca8debd2c7359aecd26577598a7727d67e1cbebe3b9f0a5b12d297832d430e58797072f3307f85f564a3e8a621ff03b9d12d3a5752d27dbcd222c09dafc86997677e07d915e8ca6677b73b1fdd318907e780e5fa8ee0363bd8bb28d0a30b4c85693fc905f8c93fe61518495e69d7466e664145c1a5483fa689b0e27ca524a66e96ff8f72007d0b92f4cd7f5cd1a0af56a980a92d93020713323d4e92aa1b32844a5fd7a4515b7f438ace888f24a5528f05cc5cb41a2879e46c5bc05452f43161387dbdd74fdf58c7374475d39b63b6431744099d8969912416cf6fd1530ec76ace5236d28037976f63d49f041eb196673ac2347f31c5528082db84854d4512d94a27788e55522122f1d69bb4bf0252d9a6d5f83ea441b651559419256aad7d21968f39e4c57e9bc609c5a2d34e77724323f46acb0e8cfd67b1656c550c9da21d41b8cacc9ec74023e078b49bcf9440a45a09eb0a46d56cc84306ade04b38909ab3cf6f25cd2da57f14661867a95483ed22021293162d3e4c28696d7b91f2406aa7fe3d07aa64b5095407a1468c3347852d4cbe680370c25583fc7e328a662855cb397c63cb7cb67bc12da0ba97097bc94ab55952244424a665126ecfbdcd85408ab69fdd4191190ab5145f51e550fce49b4c634ad654185030c2845aa4be74700295a5524a02ce356ff169567f3872247c90df47a88be531b98d4ca97006b7e6241a90c3ce15e0a99150349bbff626bc823dea6d2d51bb7457c2ed3b7c00e8fa14acce5c9e7cb41623ff9a8ff96101bb2f31ec9da9237789cedef431d4f9dae4af76c8a98ab5f06b09884d2c60df6fa70f91bc763170c6a6b4ca4443f7148a3278dd43d0f2b123c96ebdafdb494ae2c4807a11bdd614abac40a3ec5a8fe51d8ecf64bc3dc623a29c01c654950efbfd61dbc8bab131cc1a75cc84f0466fa6fbc3d337a536e582e4488f85db87e9d9914dbb60f485c523f2c0278f0bccb6d7fa1fc4d4069825a5fd4698d85061ce223e398b73a71ee858a8c2942109e0ea0b292a6c20548e1328a1ca2cc5fab9ddc5d6fdfdb3ea82f698862fecabde45b030c0994d094d1bb8ce84be6e9007d676df8df455187e8542118a900ad17dc97546d734801c3de11b10a36fae0baa36bfd676e6084a683380eb0ff02540ae0014b347a18116bf982176dc65cc7bcf221d5f806b0ea85b53cc2b79c23caa2ba7e82d4d0af9a844d732240b1d73c29928b555886ab0ee6e06c3bb1968de056a62995c1bac9493d00a877b1c4c21d9f9213e95cb59e50885e3a973520d71e66c543e3cc1af4eacf5d25a2dafd9d1e3b4e389404651abe3d7b01bc1e35f02a069c5f7f9fd907438ef1fd0542bd3be89d16a40765b9a0da9aa4b1d966b2661d69cceb160cc86e9a26398ef270308306d10b58367d0c596b4ff8d4e1c644a6dd133a7034877545f4b4276c392b1a7d1044ddb4f6cfcfe948fa1ffea588647d2ac8163706e47f7593f37711b549c7c0aa118dd563d4d42fa7f7f249b6118b08d0c2d5c6bbf71a4e9f99240d6057a160b27dacb0c445f05f84401c37003c47b3c9a58411b2624372b4a830ff527ba24d7736379a594536d5a888257ea8daabddbe32c337e5bd7182408635715002fdc5a5deb05c39038fde72c03701c387209228841dd3d3e8e89ff09284f65a45d45a83d7b331f38f87990c9933bd8834d27d35e45125ec6aa076a01101e7f7f1c8920d80138984e3f3a2b264e9edee2d554e64d4d2c3e127d084976d8e88e81c93a2171301fdeeee3ca405f94d88958b941655cccc9bc8d559405a0750e658a8adbfc0747f5794884f18a29deb1460efb050878fd4af2b022b76cdcb7ad2a8136f1eae8bdd0f34da2dbdb723c2ca824b8bd29b13612b4e08d158bd4933be323a8ea5fea33f8e4a92012d76916613081697b63d02b1d1c0810d66aa6304197da6e3abdb24212c7f46cc67af481ac07472f8f1b0078c2b260384ab711c1f95dd634d02922301afc77e96ec73d639d675ae8b03f813a3c23501f606d91d0ae30f024cd94b9897087916662b7c45fc02c34d2080172709f33ce1f4f6fd53a03e24a7c8837f58a16f72de100e21fe6466dcda8dbb2d9b5237e20dd630abafbafa4b0ad8bfb5a146f35a10cfce9f02593557d4876b9c64fc91e1e5a4c904489aefd1f5a1e49681c96be6c2997abc0f935e25619f2448e172e73c145d88c8d3f8f79ab46e5c23053a954dccad83544a8d025cebec8467f296d061424ecb64424eddcb15e82e3bbaff240f835a6a699ef35e56d6f3665ba300b68b6e1940631cd44e7f21d433e6436e3cfe0dba5017f1a9b68573f40faa704b37c22987ddf8764f11f01bc4e624d3268aef1f98045e00213e70e4b629b97bb3c20cd1c27526da21a277c1a68d2022444eb3ef3fecbe89cded59c746cb80cc1ccee08f59d8700a96f7fe467076957f0b00dbdbc8cb5653ce8e8da705639280e969a58d67429c873d369f5991f44838e64bd66607e96e7964788377b8c2b16e85de5d5a23edc84ec1a6d3af8ed985c659bd9b63ade5646ade730d56fc0ee72be25697d7f89e5bfe776c585c598f8b66dc2cf3bb55b5e7c5ad290c87a17fb8f5ea924788cb17e29e0079c3da55272dcc3567d6188fd53c3774a2d5e4d34a7cbdc5add21c64e36801903581596845badc59b44c1b2e090aaf86cf81a1d13dc6701b76763104d575f1fe146277c107a7c403921e25c342bee76a7b3a4b1e0c8dc7beb18a9ab8b8b34c2332976646cc1daef04760ab015725380c235df5609eee5f7f16aba1cb3cd6e02ffec70f3d59a0fe502f3c46048685fda042c79fc952241ba4d37faab97a4771bc4ace8ce4dd230093f62753734583b4cd3e702f08268d048e6a164880d7b1ad2b614bd4fba6205fca499e711052ddf8d4ee111b4afcdfe631ea332b07b36196c4dcac1f8638a0e62869185905212c933b2543cebd8c177f0bc1d6f12ff170799b9e8341043bd5ef14aa3b662b98a3f6c3635c241dfbc983c9f1201af203b46a82878303e1a2523b2d510733a400b577b7a13e84afd19893a06e63a57a38141414f510bc2d4d7ef4a36cb4f9d9b4a1cf97e680b082b4df67bdeda8106493a56efa0b79fe50266cf6c3d4a2748a8aa8d3a0fb3728164c23dd4aade807b29dbc3ddc07e14f4579b3183a3fbb719a09ded581aa15bd2cb105a6f1e6a1c8ae2be6808c36d46307be0804048be9ccefe6fa78fbae3e474055f166566e3c9f5e9a629e9205b5bba8befbf278a06dcc9fc573c61875f5bdea043e61cbdd27720a7fb89ec3b9988e64d37d9bf2f24d330835b1991698b229accb38983ddbf9de938a7535358c66bba0cd01ad35c42f052b2c0a963a5a1e0b8ff47cbf0b39c1b4de63877437a8f7ff12760d1b0461c5f9474e1a13a9d355009a4b42279389afbe80f9ecdc199bdf0c63693dec9ff283e3530d46d5de0b83b45f1b007438baec00249327504b398df7aa1f3c8d9388ba32d0f6b3bab00ebd1a44bbd2f45591f1aa2d5ad6971ea307f3a5b3f3c7cfea527318f56b48e0c281076ad2b85e8b1b4adb9febc842ae9963219c7db99bd3f004c7acb2eb154f18358e8f3dbc88b916df16f5300a8f6410a5a7fa134bded2a63b0145a9b20aec17676eac969ede3a95ab82376b4f804736119c5dd03e9cba718bd20bf40a9f4218301ad4458803f09d2bbf88bda875bdeacccb180997fd98558efa51e3d9c652b9ca7da9df4fa79327b1ff4dc41ada4b224983805211334ce906af613348512cc193a853d8fe5cfaba251833e4210afe5a830702fd0f01b4a23ce6db39738d545ffd19df74d1d5d21f678d43f9b979b5e20faafc735ea27e494e0916256cad15939066cbd484b729242596ef4ff526e1411e0067f774542d4a22242d29f10f8b6a5d03498085448fb01a056c80b9bf16b3705a020793046206dba9e0aca456a22a72dba9721181c76ab9b8cc1664def5b3979f0c059a2c3a693ea33f244971e209bd0f1475c61994a536b05d65c5213a70f04bbc9fc7ebef36017466f5c985e3bf06e2d32dcf69335b5903ba1858423bc5bb78c6c8491b4a423acc2dff5969347849b6cee0e4da1526f3be4dd951482a455814dcf18b6b1d2108f51f016241c9071fda6ec6961cbdb6276e372591bc022574cadf9d3d0b9a783dec0903acf275da463dea626f1ce9870396a8b90883e10773e79a3f4d5eaf24c488f7250ef7a5faa6b130cbfe5b6ad2b25c00ffe61a4280eba5903e93b27b12aabf010cd57091fe86b9ecdad6b7032942d5c8d1131b97db2f0b1c1a1258a902fef20611cc753f0a12452661ab014441f5b3420db3f51d6d9286d1dafe100490ec1e977817cf8df45ffe8a53bd35fd844d1f7a98fb3c873c387a4fbcbb964292fe425e211c9b15baf6bc4891f6cf60a64fcdbbe0d5a483fa8c0507e442777a0f974e14cf2fe3d78965d335dcaa0b079662737d36ea510cfc2bceb092185199ec5e6deecb1c0d57e2ca6e959580192ff45b3c222a0119b6d4003e3a0ae8707f2936cf3672bebabd09f204d99c6c4d3bfc22d0df4dfebc496de0f5575af7662b8c041652c14589ce4a4ab15ec096e4098735fe06fa9bbbd1768ce64b2975d72d3680a8662efa5d3daf8f630610bd4c045adfe0f14c2f91d38c855c5b31d37ae8e60b05a24defac39a2e22c084cfafd82a197c289d4dd74b4aa119c4358ecaa0a5943d60892459e94bd1cd653849fc03648e77128e6e94b0bc2f929f764520dcf78428cabb65beafb31225437025d0d96bdd9766d221189760daa87ceaeaa5165a9e4ace484667f79c9639dd22b9bc6798940c7b3b88707d3156606b04a8b104a650a9b55fd42e37980ac3694e5c63736b0354c1af1c2cc76fee2b502d06a45ce0f311c248f821ab209fafbb8e5f2efe58b64203084dfd848aad7c65f8edd2bced25de939082a4345f95c82f3f24ac30794daf1a1b732b9d3332efe69f64a0eaae947a8e460c3f9ad8a49e7b595a2a23bb7ae97f53fc7408a2fa4db5962fafc0913b9aca2f9a7b77223131f9ed2c6718603bec29427a6c975d9e8895f23e80e495fd8d4bcf030427af4b4338ac66204e3ad875adc11114d76d47f258c09a49df9a1b0c537ffd8e80c822faddb111cddca3a0ba210c02b49f5616ba0922837208bcfe23aedeba813e36b32ffb62538ffa7bb6cc7845d10b87aa935b611f71d775512969b348d1768e79c6b127c02200e63b4aeceb7150ac25cda9eb0e9e0619516b79753ee48a71cfe8b1008909e43d1940bd1e38665f4bd9938de9778e97c63fa256670c993d61f95b0916c674e830bce781487f009133aa977fcd3c2a68410c04f2ae948e977e9acf74867b888c93a31290acdfd13b1f70915cd68f0d1cbad18227e1917c7c8411d76885c2e4777cb5cf59cf73402f0951662daa6129191aad5836e1877d4366b07dfc24a225d6e053d7bc4dc1e26413b7773f02f544ead1298ca88bc167ed385bbecc21ff3793f5ee23074353949a4beb95e8ccb803ca62f9414c326df41e2eb2cdd8f0cd7975385df4878b7075562c6aef31a3bca0d050affdc889c14a618be76699302dfdff940fb58d810b80af013e84ddd9892c45a393d6b8eeddee1ae442a5e3a4c9e3ae4d4bae24d3a30ae1837e525bf09ddf612ca692904ca1e35c044f5fa02c52a28b4c8e74d24383527c396b5cedec50b60098c4fc2f0774d5606e83ffc55631f81a949567db3e14f646b6de95db67c1f61fb372e40e641b14d35672274267139bfbd2cf54ec15b8c03381cd091c5ed5140623154c08b6882ec6c4a4f599f538984ff18e6714bd459e75b52f5dacdff5b374b0baa627de0735c18d2a5be8892e2e8b7380fcd8e81a84d18dfab081fdc56d4a778ccae60e076f2234645ec930f5de341e515d419b22755fc62dee142b77306ff984c655010646d2725ae96676ff003860553421de567315458034e3ebef00722d4a66b4b8409081be245b102ee0fefab34ae436dd35ccda34f03678a27d7d70f012ed7fd467cdc7988d80f2bcf95677d748cd234f11b69ac01b8a9bf372191f76226ba74e23bb0f0a0eca3a4951a8806439eca11a6913ccf6a5d537325522b468c720260873127069e61e2e9fb16955b4045525698706f0ab73742493aa4e838e4edbc0f9dcb98a4fc9ec26e81ed7b7e948aab348654430daf3b664e98b1f3c7caba90a0142fc8fcba278ea89eb278502c2b29f85771c34a371cca63ece5c2ac193502bb8b183fb4f1776031bf66787adbd99049ad39f987f96ea0fb4ff8df9a5c628240f393729b5e62fffca4ad94375056d6204665590a9c4b9d275cafcc2509d26cbcf0df20f81e019103b3e89cc47330d3199be8d5c6d3dcc7495f0aa1ff29e57e33b3a0fbd9807bd2edb7e49ce00fcd37b0f7cea2b5973f057f38fa6bc7a1fc5c8f8afbf9f7eed8fc1b0db9b54a52a5f95ebf447aaea9346d98bb280b77768bec716ccf500d708602a040b4203e300e8ff834748be2d862124fae459fa9e69474a1ae38a1920797ac2885d1deb004ee1a9bd4375d08c255db11314a3dff62e6e75de855fed3932c1585fd3ec091850196b77a4ca6415710c3ee2f04d5acb42dc8201fff44c880117c78fb59f7869b84adb37a758939b9a90628a3d32313468e52c698a32e526862c3201655f5c49e945cefb0c418fdee39b8a64ee588694919c795339ed004ebd9e3ab0f1350fc3a6c5a60167aa31dea2fddad06ac3bcc5c933e4f133419df5e6f7253e5518332f7d738516242bcb37ecd91ba17ba5bf027c681dcfdd176da574152788e01f6f9b351bee74cef4997b8fbc3ecb4e1d8e0ba657acb81d0874e181b207f2ab6f3caa750bb4b5efb6fbcdcd2cfccfb8b72f43e89230a101d9512a42bd81881543bbbbb63802f110abc7f97aa787cd2d2359023acaf74970787ed751ae2c320f0ac96c6e688d5171552315af8aaad3b828678b2d4fbea5469efe0b68b4cefb7af29e12d99a26440d1008d63920ab089eca8dd2c1d3d467f46f947747aefd859057bddfb16cf1c0fef1dc971567ca6db258badee44ae4b2851661a5842a9d0508869cb6a114dfb3ac68fc42167b4c097e6e27129a12e48c7a7c8dd303c98739f59f007ba661a764e797ff5f4d6ee06dcbb005ca757f2aa8e6c136e245d8e9c28ddde2d70f1884255e0ca0d664eb22ad454956094911a1242b2b78c8617683b992878c0bf1146e6cd412fa2d1a33dedfef5a4356ffdfce6b4962072b84b7067a676f68e6d3a07acb57b7399908b573da68d19820333b6d216290b36c5d5f88680107cc48b97d7171b2f762ef73c8cc4f40106220f42d8e161ccb1eb842826adb91456bf02bf164f7df3e58671b3320540f6aec011f80c03d63ad02c295cf3d60be00079075e8481f7d512ce5019895d4e0ad00887da68e1cf9ee18f5d09ccc11b68172b84e79246c3b24c444cde58ef39bb61418a3bdd00da4d6449ab3e77a33fe94f287adf6d4625ad33848c77c11393e6275d9d6089ac1ae30663a7bc247886945c7b0a422e310bb3eb86996a2255d2a0f09e30d0b92ab4b15fac9de31a8d27b095e5e70a6c33cc9390a00773d7a983b01b771db1000e1725def7628690a30db19a1db2f97b2b449b0958d13c127d32b87c3dc155d971689e831fd861273fd8b7c882c968199e3297df81f7dad292c57b1a8921c76601ea77d791326688e03e01855daaa108b10571763030cc1cca946c4edb826fbdead307b005fa149dbb78908803137825e09fd3a116702c4b7ae229405aecedf04813ab33c47ef196a0cd8b8237931d7ce1a5e4aa35779b5aebf5db0dc9b6d7bc76965b4d90c5c750be7e1bafd0e5df07102103f06aff148019f48db411e0e17338b0f80c1a0c29a52810cc07b68911e29f69910befb82dd138611485e580c4f03a735aee5d207d0610df3a04bf98a89e4b033eefb3354d3de1fbac64e893e460a73fd5099635ac32a226268a5a672f10723f42d2b9817056eec4840659c97800642492e9283f7507c565c018cb3dd2403790f69989434c1f27428bb3df1e653e8bf58cc59e85ec40e754f1f6799301f15fd96076ec0fabdb3e0a11dbf8b0cc7318513e9fa621488c5f06ccd530693f9d565945ac74d00556c3bb36d59d407a9e278f98811800be7ce2666f947ceb13f7177a042145b180db75bfd1186f5dfee54409a337ffde42212d5f08e8151d1f5e4d1e34a730136bc63f6f27fe231c60d52316c6936d5b9e1f8e12f5d30b060953686c1048b6aac961a605fdbaa78de5e1ffece43cf8fd60105793064a909e47668fe133579abdf3248b8eade57861acd1efac032420225f6b5b0a3f372c173c39f79db7b060122f755a67e3fe6d715a12d9404f5cbf82ee0899b4941eb62c4e3248b266539bb5547d3d5847783086ff837356e6605c857a668afdb442c3d7746510ad0543e7d35b7c8b26e159f4066f889fe3a0521172c4caaf9038e585b252502a54eff79f047ed2d044b0121a31ef87c8e6c8424c826ddc98e99b5459047dac23c8cf59fa4016586cbed3734f1e4b83c3c16fc14ec5c4f019e0f0b6463b2eafd6cc0182f7346e0814d6c1b00136432d295336d871f0d1b4724dfd6363df5cd1305ced1e6108daaa401c060a4b37240ce316804cbde0398cd4abdc4c39ad8968bfd06a65e166a3781f7c8cbbf9db1b354e1ee7a3b17e1acc4816690465daaffe9d6f37a0f37bfa77542711bd4590b6aaf24247c2c1c0e824e3d285ca52dc5657867506d34ce1a6b524ac94255aee8d388a12483ce4c736c562df1b9b9674277257061915a31016c1be32b2700fee36ae388e3cb0e3f8780407b6ece46b0b30a657e73fe054266d953d539cf70c43f98a1fde972ad1903716e807f73231f969d2bbfd5fc99b139c05cdfde7bbd0e8666ab9d7cbcd7e9f3e68692193f091250ff13c7b94cb046760de3ddd6517bbe307de4896c1a60185a901d402e797c760a37f601364b9cb2708c06f73c762021d4bf8b0936144dbbdf0930d859fa2806862279b615db82c2b7a6035a0f7ea76078343dd26290bc2e4ea1b80af691512799f07d563d546b806c7924d00b2fb848c2f4e021c88faf95060a1f9535f51de841dabc667942a5667809e5add0d9e0bb739b3802a6c1ec0ae8d75de76ab1a2aa2e7e1845f2f95fd7ccde9cc5a10defaec486b5f802a6bd0b110f63d74ddd33dcd25da4d6a734e143f21aaca60208e6971502a0951721aa11ea4f03dcff520a5d458650db682bf83b4508fd5f92a151378d69d6725ff308962a4d98dba523c3165a8b6237f6d6e2f08ca4429536309836ce946aaab2bf3b7667ceef45347fceea65fdba03403935c7d0da05c4d4c37239e3a58ee8942af27c466a48f36cdf4a70815ff6b67b6ed33a522b62855a4f62fa1d7618004eafa4b71852b2dd50e730bfed254de97cee2d8fdcffe21e691d18381bf9c58951c2f469b3744292c66be1127cedaa0c4baf971c30d3b5e8806d8385b0be0837d7b69d37b3a559b95c26ff7c05d746953a9fce696368e37dba1aa10cb5ce357c7b1a7ee64b4b1e139516ed3a014290cec1c50bdf02280788e132b9fe45f0a5fefb50859653239649b94b05e7e2db4135bd417d9ecdf397bf5259fb8b65243d36ebaaf08403a56a6b7ab0a443ab079c0fb73feed0ae1f12ce9dd76973304bc8d63f2e83a37b15456d9bc40001c9d092c8836f1e69fb9140b4b55271624d4cdf0af66f8e9dc1e9bbc9874dcb6100cc30b7ac078c47f7599e82fbc19f9443ade2451dc8fc8d44e8747e7b7f5beb48ac5fd8b688e02d381b2b84a6477ab53c94d055866a25fd74b0a5a5f63c296d02611cd39fc291bc7d6c1413a20c902cf3865ab0c19476c67f7580ea8764961f9dbd2002f1001834c0ebb151fb410b3a1350429a6b57ec0e2cf0950d9b581c670f3b8fc1e34d4a03f58a7aa404605c45b334998caa472d2804f5ed846edf37cd35b375b794dd3b8b113bdc3444159835e449c70a009712b6639b113df69a61cb431b6a9039fb7b3f6198242ad0226f295f5c6a289f06087efec390fc817a41ac9733ccc568b1d9764b11c6a510d8f78aceaf20347cb2b47f126dbf87d314759e1afc9a1c6a6bec1647b74ec05fea7717f80d624bc1473b913a645ab140de9ef9b0692701bb1c7ccae5d4a24fe673b91717e3b93d85ed98a4c70766536afb5e802f38f450362ca1ba6ab53effe0adba03575f0b262e992b7032a35c4c0e9dc291b4c97c2f5537619c83f32ce32d2830675b3474c89f4c54c4760b309c5e14c675e3c1d99803b14be4e49257c06516811582dda7991b1178addfe1ab76aaad447bfa62d1fae21257aea3498611d52aa3595f4be2e82757099495cfee802c33db5bf1c9c1b371c6fc1dbd57f4e3db9babc19d60b60d9d8349a583b60f5c13b2de1788868ca5fe42c4301b9cbf0084ccea1436402b542a1a720f63c1aaa5c8740878505629da46835de3306adfd7696e321c2d05df7ce657fb15dde4ec891393410057684a28387bced7e61f5ebf8cad630b7502f9b3c65b186cc252aa0dd986c389dd27cd8d02c9eef56e000860d10e95ea6519235717a472b4108cef31a7d84b2fde8da16f721f8b45fdbfda6e934b410defd5a7676702b95400a230e665611aa9694ad4aad2da42ea8901f3e00bbb50718b8e48a511d3e58805a764cb1c11251aa304f265bc9fe35c9b90e63855fc349ff7e359cbf30bf05bd665e6474a2d9f491475faefe97efb358b37bf4df600d28d97f28b82dcf9436349ce52d5a31b31cb5cbcd90834883b0f92dda6829a9192856fc57d5209465e4423c9e69ff1a820907b677b91b6dc58031303d5fd9bb857a11400577a02e2af12e2952587b3fe9a0c86e66160d0f7ec60232915f418fd9c388e94c3f01c6b2697cf020f9c3eda8df3e7e8f92ddc63730732026313d5b946fd448eb99ee03af4d8f39e38e3bd2dbae64756713e9c306f89c3e54137f0895afeeb9f54bef4bb87be4b6963313d8b614b90b847cbc3f488282ec26e6db5dcc4edb3b77147c3f61ad3363ab801804160a8de649966829bf4df3fc553c0fdff614270b30d6811e23201de657e2938068ec06643da9ff2814ec2d022fd4efbefa65cc4fcb0efd7ec2864f8a8391993029bfbe4640bd6bd086fab349b80dc6834de05fb061ca30a3619644c137818708c7ad832c89b66f030601b15b0799037ade079c0376a619339e4932d7e3950791526aadd6d7f2588b1677f1c7ece7e918267b2a7f86d88e22d5cd4507c38359d54cb0b289ac3fbd8615ad827b27e45401cadbeb43a60052ec33b7dab978ac117eedc40f213171688d4c953c52075070a8b3fbd5f08fceec6f8d7a420f0d9d394995ce46efcea696972b61a8a9042f7125630984071091c76b57f59f70478bfc2b9c5abbe71f220bc9445b653e06a77d176e1a99afc5b5bbde9cc337638347d01474fd0b19bfd76f0b4efeb98473fdca5c678430fe666d2f79850f0615f06a4b5ba4559e9362635efb889fb283604a4418034a9bfb67b7679983db114f42df6c2765641d77e45e8baef1e43f1764df8b65ade4b3fedb5d4682d4e7bf37d5a7fda9befd891eeb437890b7a41edad8ba54a1355e990f2bf440e329d7073fc67e373ffd3cbbb541815bc84b5486048ece65ffe1fe926dbc54a00f6b72829ac5bb90774e5099c20633e47a55b008e77baf4389af7ea6f2b0561043379c4628af3e8d8bc52eacb549c29076520bea8c431c9670ae4fa3487917fada78b13604e9fc93cb1af7fcb3f0718869a9f0792969ec3019c42b93f49386d04e03ec4b924b6bdad5fc0d42f69807c1a60911dd08ca6120f88f762f705fa57d29e46e8b7defde3c5be0e713e9c1f7f12eb279c7edef7c7b5908a4c47e35f19aa13669c40a0fe3e6bf3a4286cbd5be134be859705e010335d91db15f71ba99fe5542b5a1277c1b4304192adda772f5e77959513020938c754c8a6587a39c885618eee822639ea200794700bf15346837974f13b297e2a574a1c5256832369e95ffc7ad8799d6221e2ee526ee6f0bb21100ed925527e8c8e7b7ba6ec67b1d62f7d0ba75296ad374c4952804ab7c9849243da86b1f50ad483170e135d8c9d820f5559fffb682e514096aa6c23a8958801a930772d7f976aeb0e508fd1f4f7ba8fc6dd7081fb7da1ad5d2a5ac26243199b0518841d72a248c0c11cdc50883dcf3c621f32931f570c499dfc42ca1f6939b2043e3018187ed370cee8d4242b1b6651d70ab662799514b1dea98cfe412d8dc18ce5127187a55834d7a71422a22a037a6d936275096650680d6eb1436f9685ae2925ca91bd8ba66838bd23f8fc9133ca5df315f284d3ac5a1bea85f5914d1927e42505c64ce068f7067514494a97bdd5a2e206b27a81378293f636c0e0cb875d41200675ee2d0a827f2d808543a2c8c1a3cac1bf4fc4e60754abdccec2a4bc40bf248258a97b139b953639fa0ff8bf9010d52b287a8bab22fda5eaf4dc4b7013f02478a28c9d1af5438937e8154c3cadf8eeb0a3a9280ab9b52f91513d07ea414336d8f717c30ee98ad38d72537eced2f81a1e17fdf78225830b2d7f07ee561888a23b4894fff2f1d2dd20f1c76a121b27d9a401c630239075a20af2cb1fc5d8208299862a7660d27ee1bf85a647a0ec47658cd0bae52c10aec2a4c5b1cfc2815701389c8d72098493c027e7c2f0f08903ce9c0a93ff9d9a084e1d70f8af189e6a0342e8034ae9c8e391294f7de4b62f40d5e19673e4dfa48dc07d85e489b695f69d09abd52dd36e8389687f19b2ced7938d0373ebe1362ab069a3a6efa4a6686a1c2d083407267d98babd9b02a5e78a690434bd598760b0f93a9517db9f36ddaf849102d73c13b2fed034583ed3c1b6bc23dc286ace28b35e362f3d1f6c7fe110b520324c44649a17589f9d1811cd412e670e76dd73653178fabf81d0cf38446e3e2b3b43f243da53e2fe4d1ba1147f7344f25afb2e4887f72ff196e551de0feb6edcaef1206dbd1b25c381a3b1204c08f2d920945bfdb8b38cf6813291e8301fdbdf16f9e2eed4cfb388a7b7d6d280789fa4e9fad83102dca538b92dca21d540625d614121987cad8dc15c41d08ad83b9bc7ea9812181dd6cac55400d939770a781c999823859ca54f9909ab6177d5bf514d8de8dc2d331d80ec8dac8ffaac8a451648a4fefca73afca857af9a0a1cb2f97dbc2999565531e343cc564c160ce023e8096477456cbc9560f16d6a9213f3de507843833c1f161d2b7e1460d37c5039040021e9e1a3edcf38ef91a61a9da403b55c5dd34b964f681f43717fe0b0f016412a1e3809d7a662cae02a03bd0a6fbf2b86c985e8a77039ba8a70f266a257d34b9d02233bc26504662226a6132ccf5372335d0451db3f0b4bfe3cdedd4af0d25064bbadba4f5b6993b36b4e70e478f98dd5352e5f567b85af5492b887310a49690cba13f982ccaaca47acdd12018192b572d67261eed6ed1eced4ebe182c04be813fe12667decdece75161f9042d0f83a9ce7d38ee91982ad4d8fd7b68b48b36c95d6fb359c69ebf13eb6f1353955af7f2d32f4f2b14ecf5b84b85e8449dcf9c9655cee104462c29a8c134728695d57cf260dd7fe600db3f0fc2cc26017ec96ec56fb0f003615b7092aac234db925047ed6d52cac57f92ae434c0f3580fbd426bd30c9b3da6e7e961bdf780c1381f561ec700c4d4d80a7109393b0e21e0253e32ed2d48968aa911471b18fe88fa7d4c61c733545ac16aac7e795f258ab5ba5ff3a8b9c28925c5fbc3ddcb6f3824173b130fe7d1edb07114b65ac5eea1d15b800d0a45b8af9af0305291f1d00fb503c64c94720b1dfed29d3b7d373a75aac48ed5c4c6d9e63ec8de93a2395867c66a91f52d271772a988e3e593d7d64f53ddad795bd8571ccf37014c9a3ba2ec81e75cc1775fff39366338f6069347c18f3fc0a234e09c364ef92a4a333828f055028506ba79811fc44e9f6d0a5e8a0d239a1e29b8840048ae5f9c34c5938b1eeb6672fdcb964039055338887be1ab3922fb7ac0fe0cffff9198e395c7f81552c135971ed0db30099c0b46b78070243b0a77429026f088a33ca22406df9166f28484b0376147c7b0923b82fec804433fe003caf41ea99a0721e002929841efee3f17210039270515c9dda3cd89bc42061a155471134e5cb8c578f35dc2fe12cd516c826d995bfbcd3a7bc99c11cdea54c6b5182e4468f1df462a02ff8d4421bb7d1c63fb341f0dbb56298e6a15c91dc2abae98ec89acde881c92c6de254210bd23aba9885916209608c7e14d296d1aa81a541a2ceb04d9c328a75f92e1619f06f027d1baf077d77fc1a78804e0b0e7e27659e056c522b4602342e3dd8ac9ccae9b85cef9365c170e9154fb8602fbcd97db075003ab8e80521aaa5bae9e6fe6234f2863b1bb95f21e258bb20bc3ca780798bab9d5c1cacb31f5e6c16b4d78983b481f2f0d31a1643b46be90de1ce54d675f2132698d5a79d8c30db07de3f4748c9d31bcb2f2bca8f44315ae99c8c53a6088660a9ca24a4a1453956755b534b8a8ec6d9cf2534449fa04dd232eddb09385840f88e0c04c30549ab56ffcf2b45e78a8d402026a6f5d014579730ffa06bc5f9724ffc67c6253cdcd8db9d2506ebfc2ef6c057374038953acf06e17316dd12cab6e76e21310abe0b0411dd8a007319181b107bfa28e03bfd04d34203826f20421f695c11b7126da3bc80a0062a283aa63914c204adf5b26aa234a4d094898b96798bc3b24ee2791853b515d87efc0c60cd62b6206ca33c5b134ad3e56f035f20f514dbe9e72fd6bf9cf610eeed1c71d6fa821f3c1f69bbad43a6c52b198838e2299c54825faa794fbf532a8f5feae05bf67e920932a6e02226bfdf7351e013e3bf9679bfc2c254b71ad82b9071c9619f94bad22016d5d9c92481ed459e1219deff276e773ba705df14a1547ee8fe3e223d30751c85682ed519409a4e17c051f0233056420bc9b29e28f849e0216a50805abd1a163dcf32d0a2762e6da38d1b936c4b14b614e66c90e060fcf56279e4539310c8e8aeffd3eab1224fbf3547bce3fbffbc6e77c74e8b6ab5740176759e95986ff00acfe7b21c3807ef10bd25dcde3d104757057086673f775b8cadd1a934dd94ccbfe7ace6ce5b6b4af46b10806eed9d5efdb3ec9eab586f64276d67112b9ecabadf5c7204b5fc3d7203a3a6a89ccf3ecc842cb4dc93ca29aa759f57dcd909be071bb3c4663d347be359777100b92d3ec1bd7f0efc2431bcdb8b193cd2f35ed0831feff86c55ed15216feb390b5a34c8c1ab4cbffb88493bc3198e08e61579f773a7f9261414fdfcfcb3ae26cd38198d91c5874f193d109e4d513b4101e58ef7eebbc3906fd101989426c85ef4764c6a28e3ade3884516e5c638ce10115854ecea91859c6c85c7ed0712f2896069b3ea2e664907033bdd570ccd10e719467f02f6205e891a4198ea6408790648c7cf098b8a5c2ba8a16008f19e01684758c3264c88c06f243aab15ba58e061f8c913746a5d65e547eae5c724023be228719b3007a38b3024272b31a8d2147cc8c52a9d826ac8cb582549e6c5264dd9da3a455f35f25c18787a23f5668d84d0a9f1a5ce25406067dff3bcf0dd848dbcfdaaf5b9bdd774933ebf1d1a3990f6179de1924b9f56df49ac872f21a9f10d621266252ae80174b78dbc9e487366ee52876289d2e74efc6c64e5d1350f37664ae63a8216fe9b0036daab4111cae5fe872281a1cffc26be237893d2f554a223f5644002737441b4971fafd3ec92f5cfb6d573cd08d1f3bdb2997400413ca5f9aa4ec054c683494eb14b7c3bc33b2240bdb54911856996da2b4b0e05841b0c90156290e211b1aee77539ba067db7d16e1205e69b142c81779cbea478940fc48a1ca2341042f761b321eff8c7161891a57e7628d521d775f66e3fbf885b80ce689e7570b149d96c07740f782e38f18e3ce86a4687bdfa9fe22b6bf617054d0696530e55590d65f0654c4dcb192cd1230e8efb2c3a2f51f25e417717aad98d142426c992aa7be4b68f9b28922a3be9881dabe508d01fcd6d0fe6f3b00549b5abb6a67e6aea102a076302eeaddce94042466298814ac127786abcb5dadfd26e2f6080a440b4175f3242d96cc71f39e525329eed653909526335c02a6c1b5f98b36f18d4b4bc02e82d22aa24526695df15a6533493ac2d576e2f90bf7dbc84425624bf2d254047ecd89dcc68a13287afb90ce0ad870a33724c64f7a0e31cee8c8eff1ee1831c941c092de071e8ab733f8280e2206457a2cc8066b6e049c4b39242b62d35cc60c69ba0c1518e12e22525a7fae0c86d010cd3879b2cfa51bd1958337c746a0138480ea59d8356a24505c584432d4e933e6544c41dc3d8c2edc3518b9166c10d32119dcd810c66d24e22346ac3d1d4a7f3de7366ae555d17745716272a99aa40439c6e09a230d490e0c9f418f4c3e57c311288c84482b0051ae31602181272cc2e49d7a23e9a67e45760c2411402666b1f9e12f9f51c654acf0034a55bdf5217570223244f9aee80b2523d37a0e6ce655bdb9c9171f982962c38db229a29d0a3a4f6154cea5dfaafe22df48d36342d6c3d70e93ab25532d27a652325c73a8b908e9726c2ebf9fd5d5822ad66879c414cda578d8c619a3394fda1d6fe21f7569c437b6b4927e5a5d1a66d8ad1e0906f8cec17cabc646f3f281b71c42fa9f4c277fc76f8e48a1e131e6d513892666e14000b6418005e1548e1896ec3cfd672e2c9d47ea04a5a3b09457f1ac4b730389a6c6e459dfa0c7a110f5e7c2062f082e4a013fa687cf189f8d45030033fcf0d0ffbcc23755d5762cfaae5be5e79fedd6aea0b9bc01b8649bfd501fd610858e603eee2e7b4d28ae7adf0583c06c3c087389273a60ba671d33fcaf178f6aa0f83cd80a4bb08bc20b94fc55814c85b29f4195f0c979b8fa41edd934d34feef7dde76fb3a93848341c8cbebe6b62edb88761bee006b8e77ccd76be0ad7e41feca4362d5553b1d5bd63d97d9b0831a5c873f1892e873deb03b3379fbe19d99782771b1c99e0fc32ad797aae17e1828002cec6f87b6d1bde7e24389d8fd6bc5ef254eb19dc759c7dce2089f46d170c11b2132836fa657e004ba9ebcba86cccdc8cf9fae696777fec357f078a7e64fef36497609d08cae124496910d9612f64d08bae9050fe98381952b54cc3e2744b10f52fbad469456afda654568dafacacde8a8601b9c4d9945727b5f49d6624bc6a4493937074705e35c3347264c64f54c07aa1db272b6b7d37478b06a1c9d3a72854857c0f72862ec2b81a5afe76a745f633114c269aff290da56acb84edf5aa1347fbbc288a7706104b43f5f4c9f3b5fe53477962d02a291103f64ccc8227420a99807c0caccbfc8cfc14be88dc24fb3db69f17ed472a45e7daff71091f7696a3999811e263f13960ca0f346edbec7c6a672f99bb361aeb26efb5d8dcbe88b498020c39e740c3441a61b14e6893fcdb8c4b1c2991ad4e01560cdabf94eb47185d9966262e4525d36dc17265fd77130f4045bef1a781339a65242c189796f06d08fe46de9e55d2438bfef6d808f962f6fbfe108e7b559c6945915b3986a993475e9c18d7973077bd6cd90a03e5c95ccd78b3a91e29fed207cc6c4b732a371227847750c4ffdcefa114f9e4a3283c31697827a5bf224e1c2e42fa9bb120fc87cf956800116dd31a70bd975a336b18693a527e9c73de4fbf37e57ff72a791df703b4e1ab30d0e461b4ee5b38103400a5e72c593d23c7688bbcc9b3af64227ffa5509b4f0de0ba6d522f3863ad4e04a359b477c5e237bb15fe20dbcf52bd4ed6dc38a528bc67afebc2a2606d1413ca1144312fce4de17799baf882fe8e28d3ed2000609900cf6e8958cefc1a40b9007811141ce122b4d88f4d15484ec0028f3e65f1a56257f686adb7d54e32791d9a767be74e5a8882d70ed4212575d6a3f70842c2e40b68d791e7146a6444347314570498fda9cb68558a069e9b82df13b42619889cfbb7237be59138a11bbea94a6182019f52ad28c496f6800740f32f8ed209136086406802d2a4778eb302082bd69b0ff3af68ea87c2538408e7d97eb393a1ef053e0e52b9692d778ba1ad2b5b960f40d1605fc9ae179418fb88997d506b9b322242e616c18d14420b4b8344b52a0b7abb3dda42aedb87b3fe45e93f3e1523ca82be6f184361e19d49024db371b117f85fdc123cf6b383b4a55cd10182078cdbb16fde54e4748d7df468c66fc2d3d5c93b470a4cff1bda2dcb96b3ec7739e46dbdd30b70c742d51a89359043d8760babd76381a0092c71f05fa3cea4c64cfd37106c2cbff0dadc39e1536924aa394cb97148933794684fb1bffbfae2833e2c333545d02eb6cbdbcf65b8bd4d6161c12dee5cc13023c6bd886cd413417cb46edf1cb4ffa611c50e0ef9bb53a0b5201044f1f1d7a84d83a86e515dbcbc0aae328c4b894b0f7384f0d40ced95d7359dcdfb90502f2674a229c3ea219312c333313371ff1cbc33c4273cd4f3c416454415204c72fd9c6dc81319adab931c11374da0284259a8a19cf9752bc1bd2c17030c9899d4f87beb3c7ed17cb8ccf247a8f7b5d49c79cf91caf83069ed849f026c78ef0819b90f24c066025679e24c4b467dcd19c2b5ac219806e20c35b3302d4c96f1a879f8960d5dc859575058d5652278ef341ac20568358b52e5b1a65b0994064e7b0576e184cb2e82722cbf8297e0de639b0949de196651c64dbfcd891a194eb2d3e323c1a124d580353f407f018e4821d612154514b06e972a3d53748c096ecd4f38a02aae4966cce190a7d704141119265c368503c0fb7c538527ec06d3fed47aad30ea6920ee45eda35d799b8af8a867a8a94c0edb44079f27fa7d0f7e2ce56cd7d2ecc5a3b998d3a6538b4d508cf3002dc366d6d4be070d91cfe36b246d01a0fa9ae2b1c2b10a14f521cea1d7ae9e0e2c064f4024676f849d36d2fa57e44ef416b12883c505fa9b1cada820d2c91a5e63821d0e11cec138f5680da63d700bbdd7b8c1e6091a07ff37fefb4887021d9251f792482b97d2748e5f4e211880ff809488763731968eb1e66a824003b2ad46797ec36cafb2b238e4a8b2dc0b66e6a8a32b767136e28380752f4c46655a17cdf13ea1ac8720399f18df2314db099d67e3f5b2a2fccfb3882b65baa8cdba2afc50deadc4e6e5dbbf8847de74098c33acff98d805c7fddabe6bfb6c1a3b53491135873768072c0a053dd3a4fb4ee4fe0028612d52b4519ce1f2d84ab7fe5c858ef643184b26e5f0461fdfd8d1e4a676ae05e0a5b47827800c39a818365c7ca74fcbab407b1855e9a5a3aa774df8f6d152b0ae30173c251836af4e4db0b64fac467f8a0f02975b8e99ebe67b59c45fecd5e9d389fd974c373a898d6f0de73304c0159e38938de38f4c0d0afe4c94cebcf538c05203df2995b1bc8f2f9ea1e1e4b231ee547c232dafa369ee678a1d0c1b807291a0f9a12a643910b6ef63298ee70ebe5b0560d1b4fe6034fdf7028863ec182c62cf74b633ba88484f5a69a13e5c1d70619bfbed270aebc9ae3780f3cf685677da2ea0d2bdbd3e9e78b3a7270445605b83544a8228af89ea36e51718a531dc25396ea4e1bb02c34e691a6252408ff325ecf33d0bd593e48631db727ea43a657f5913484ffc0033befc8a086c1006484160b0727ca3699c56454ed04d9c21d6534c8dc37852f88b294304c2eb36c78aad72e18149a7460f598cec914c28bb6af64de100d2a0dd8a730864dd29ce92da12cb0b329648241e6f83a7a77b867566809a48f6899965b6d5e64861c98bc6548e012ef1c335712448f31a8e5392c246b005b7602df7888dc76135f3eafff4b61666afcf9961c7c2c3d562d330e88fee497bd2ccc13b3fcb4045e18c4260e511020ee4a7549b768e229019a1c4e1e66094542309c8c3014346292e7a35aa0a0d87fb0f41b6960844e3d0d112992880cea0f9cd5e3f90e2a1c58eab92dd9ee2de28a7cf2883fa17ad0769894fd7c7c9b02200e980f400e4a3f3e3df63a292971aeacbf69cb6e3ab6712994aaa6543597941de5887ff3757b5590968f0e05ffcf12c2fa714181a19be9d795a52f94279c9703147982829aa99448a97d9a4a89a0dad6086a4d65bce5dc3725fa0afedb777d90c6ff0705f1deea18c704635354a5a15b57699c5d5376ad9d5bef68aa76fe6efda3e47304db8236575b11c1b6a08deb6bfb82c1b6a01f259fa30d886803e2bac77c60db4b46b5a66ad1074adbbb719a0b92d58a36eedcbcabaa2e424257a42e63955874453abbd3eba649ae27b0ff47e260dd4d9360dbaba36c1cef2a3b63f7a6b46db071fbed1b10ce401dde5a76ebb6745ba5bc0d286f40b80a6c73c72f7358965e755dcebd8a3d37d8176e53faa4cd54754a13056d6e8ac485b57da6c2a860b01fbc0de04acbb81ff3c826e5b32951b249e16d001b551518d04edbb7cbd83eb5e9a26d838daba9acd50be4d6562d6548e9f5ea2dbbf9fab2ed4cf7d9f6d27a9b6e2f33289575d7dc80789fb946f8eb4ef1745b87783ba5571a477237b7aba97edd297d4ee9736bd3be6aaa3555b7ed294aa93b713e54f4f6a7a1165c4b64ae2542ff0f84b25bed4daf64b5f7ededec654282b4b46ab4a76d9f71fd6482b49d34979bedd4d5443a85c1ce7765d397956d6aba571abbd37e4ea527fb6e6e0ae4a643ab6be4d540ee9b6e444e9a4b44d5dbdaf6192d062f686c4f986a6f8d5d913697c6f6956ddbb2f6a6aaa67d60c526f5573341995e1a1367d9269d45572427579aab3d35e2482dc7b9049fc366a4e1ff7f806a9dca6744affa9a76397b56da89235d75beea5acba2ae308e708aff17f2aeb088edb5bdbad6a9a6f4e90a89986ecb9dee49737955fc07b93c21ffdf9243fc961c46be25c704df9243e75b6fecf8d69b36df7a53c6b7dea0f9d69b27bef566886fbdb9e15b6f50f8d61b2cdf7a637eebcdd3b7de187debcdeb5b6f8e7ceb0d05df7ac3c0b7dc54e05b6ee6f8961b36df7243c6b7dc70a10688771d09f2ae2338effaa1000bedfd54f57fce12ff9f43078e13ff3f5a7073e6c851e3766370561c1de4470639750cc991e33fe70d900740136773dcfce7c491039211fa9aaa514cb8902cf9777178709fe49fd5c510cb8a8b8392018e1f6c7ebcf19fd3e63fe78dff1c37aeb8bda32cbaa6e6ff8f3054fdaedaaa57a553ff396db0f1c38d967ddb9eb386aaeafd9fa346ce0effba9dbbff396c7abae63f870cba228511464e1a3968f00ef59ff3ffe38c29ca4083f7154a8e9a1c3372ca78165d9172c8c8f981fc901ce939b2fdbfcebb8e58f02fd36b4e9aff1c09b0e88af423859c0838e58c91e3aa2a6d09c8ccf513814f192e1f33dbabb704c0f040403eac0ff781faed8abfb6b74ff98cbfbd5c59577b0e2c1c1e8ccd8d4d4de9f3ff7cfd3376c63afa7fd9bb8cf8b432590e5a531d1474526d170763fcbf5b04a328abaa1a455d1c08f9ffedf5b2b03c71159152048a5fd9f49dd166bac7b657cf923e35b97ad4e834eac96d3932c8d573e4eae971d9ed6e6bfab47b9549a5bbd5eb65f24ea57b140ddeb50114a68b489a7787b277059b288868e92fed4da3c07eb6234a36d8c64d71e5c6ad28cad465ec1367d926aa3ac4871879b7d6a9f8faba431be7c284a0927024180c6567bd03e9add35c377d61477bebf3855df52518bb699653394f3755d5a8d510ebba408f0bdc5cb0c50554fce6b36d2fa74d6a7b55094202c605efff0fe13d4bfa044deb0a30fe73c4f8ffa6948d42e26b9f39bd6b4b23721a725560f48fc46936e5389a6e6e4f59174a5b3141725fa09646c4cddc26cee55569934cf39525e2a8b63e8d3cbdbdb6b1ef06357359b4abaf913588aae6729df977572b767de2722de06ac5a1e36a9971b580d8d877735b0e00ae205fb88274e10a32852b0813bfbdba03a1a06ddb6aa8218737bff3f3ae20eaffbfe94ed5d955e90a0284e40e197997046c9ad45ed593662cd4aa674f516f7f7ad232e12a13ef3cd54dba2d4957043e425c11007145c0a2c305811a170462b820b8c205c1025c1000f16faee9d976aa52c3603d6d473b136ea5b140ddc6be40b573e35a16a575dd966d6f7275cb59bd335a7b6ad3ec7a6bfbec4cf7d49ac26030180b0bda843618cce53620d80b26a5dbbe056d5560efacb6a6dbac77aa1fd8912bad04f3d960475ad608e6b32179d70edbd07463d7d6477335769382bd5eb02a1bfbaea9abcf97c6ae7ae66adeb2fb897367b31526b575604ead6937abc0b6976e7bd0f6e3ca68bb4df7566b750b73dd94a3a8528754dbb6d7c8daabca2716c90f5f69b0d58a5df2994acf0dd6f6a69685826d1a9782c1aab8dbdb5d1d4342dabadaf946a5d2ce8d7d37bd6d1c4c4ab725d016b4e9b67cabc0b635fde9b023a8a6928939c58909ea09e90826057bbd90aae8f64d37a0963dd3a718906ebb9bd6aa6c3aadaab93a69e3dad70bb6f5d9dad25e1feec7a7ed6ffa7ac1b6d7aaaf402fbbb6e9cfebd63a9509abea69dba66e7775cba560fa65691fc0aa6cae9175a6651d28e5eceaceac7efaa9d7555bf9b47c8555d96ae7c6c6de2edbdad811a827284a47b63ea5d957bf3a91edc7479602c13a18ab5f2244dcb7afafdb5f74ddac7c3655a73157f7dda390366eaba967ba5dde5dbeb2fb5d3b4fdda8e0c6cb9a7624df72b3c44d5d3740c6bc108719715811879938bcfc6c6e0ae4b3f5878a238c83678cabddce3b90db6d68438730665ad6ade000facf4173a60d1b6dbe680381364ab8402e3b5bb78db739fab762d7cddde2c12b84ed05839551484f4ba551c9a4f5461b8eeb363735d2f697add27d36d36f8419817bfb1b4f7dcc0b9b1b75b8a1861b62b8e100f6dd7eb635dd7c8a6c28abdb971bfcd59b1b49dc70e0a7d674cc0bee4c96b601c2b68de182b61c30fe73bef8ff1c2fbae869fb72f19fb3c57f8e16ff3959fce760f19f73c57f8e15ff9f9353c50fbd5e3be57d85c206cff63272dd964362ae71c1ff6b735dad461d1ce77a53d5c0e2d500a383daaec6153536359ea8c1b5dc39c5660a1b2436ddff6f40459d4a4359695953c7f6b24d36eec7f4a1622ae1f512eaae26da5cbdbd5e5049b66ddb02a024c9e6ae017a8eafec99c61d699c49038cff4d48c9b6bdc6ac90851369a0ff1c10e7a99ead5074aa0eed74c6f6a7fed4d553f7b765550da5d55d2deaaadad288bc961a04b4d498a0467d33c83083016600f18fc40c155a65a0699541a6558612657c6568f0c59a9a4ab553aad66dcd4ea55fb365f9ca9e54bbc78ab6a4819ae956a751f2bca7bac9eddde883541b75b75369a8ee3af19ed6b8ee4fbcb72220c3186acd74f9dadd96181db43de562efb671afee561ba7df8d635f2b261b87b29bac5b6d6e4b63dd24176537ee4755356edf94f60373790742d96dcb9d4aabe713d9be32f9dadd2fd02f60ff4fe3a2d6da428aff77e05b5b30608b30ffbfc55cbd6d2e3bdb4edeca647ced33b5bbb1a9161665b82df7d2645890100cf10f25fc2f218229743033b4000f343495396207206ee7a9fbd298fe719c9045800d2b20c035abfee784f9910615534d846f5581c73fcb7b556c56c389dac1ff6fe55b5568715bae0a2a55405541c1bfebaa6ed09b9e3376e778d93daa650666068e14b0161560a828a14545fa0fe5aafccfd1e189fceb40d09a028daaf69d032627871c1cba8c7dfac769e2c71938647242c071c00d3624a0869c2f577ea440c30c32c49003c30f28390878e1711c6895c1e33d70bb0c68af35778100bcdc32669451a255c64bab0c51ab4c5726e7b7a8a6c791a387204f403b4d81de967300ec99982d2770d0af979bab5eaf74a6835a4d88d13601812680f84722a355b1e7501357efbee9696e4a8698fcd5040a916e2269883e9bd8feb757130c9051f39b12a16d7b9169e29f0c1832379089fdffcf9664f319b2bd5e57ab6498fcf672c91c2133011334fcffbbfb9593e606b941bc773708278a06b021a4b5c3019e5bf5a5eea22853eddcdeee72eeeb6a75eb556aaa5bada6af06aaa9412bbb35baf5ce5b761674aee991b7d78e6cbcb71add5cbdfdf0eefebc6eaaaedac75d3b0d8b668d366e43551debe7c66e346ee3fda7e6e32e7144181896f0d22eb19780f2ff542a8de8bd2a65ae8ed2afb492aa773ac5d65a5666a4841dffff3b0000882356dab6f6f64d81d0ed0856450ac6fbeb05abb24dad299014acab3c3557f6e59c14ec4a2bf553055ada60eeacf727ae967529985ed38d48a77522486c249e5e401ba7b1e63862ccbb697ad537293b10f9cf71e1755a7544929223b8cefb4aeb20f64eaddd75bbca8511556c2faadd8da019416544132344a04d0990db81288b78ffff559524a16dae36dff4c4e0a7881083b5f39f07072d22deffe77e76cbfa6ced79b21c00052b0a5614507053b47363a754bdc160db9a96494443474543a5d312143e581520718e5400d60447c31e87ea0847c5a11a6284f7a24e992d21d208a1c3ffbf3655559b4248f0ff6f9a9cabaa4198c00691f4ff5b42d836b7e55eaf1610b31fdefc9026cc92ffedf5c3093f6cf981f683fa83953078fc6f4ab617906efb98177278b349b1ecf0818d9c16587877f72af75d53dd96503e60e083cb87067cc04182d257fe7a99e6193c6830c4ad75aa0d6f41565a2bab15d4ca69c58a152256aa3c902140b81d065a6162eeb774f8e25b3af49012b01cb020fd1698ab1f6a8169e075e000c26ae5d042100e6970c802072cb6dab96d40bc20a5854353eb0635ad1ba4f856979c6f7191e35b5cd67c8bcb18dfe252e65b5c8ef8169717bec5a5f62d2e55bec5a5e85b5c80bec545e75b5b28f0ad2d6b7c6b8b17dfda02c5b7b624f1ad2d437c6b0b0fdfdac2c2b7b614e05b5baabeb5e5cab7b64cf9d696a36f6d11bfb5e5e75b5b22f8d696ff969638bea525cdb7b4703164674747021c1cce7d529a9cb091938710342cc01de008091c4f00e1206401242da4d6977ff53cd315870b1a9af82ff3ad19de7c6dd59a7d5756e5f47f4e91ff9c1e578dd3785fad983a8ff29fb3c17f0e919c0c8c6448f36ecb95b0d49a32e67f4d5b31f09c055a308cf0ffba7aa6ce663024f941220f40ae7461b31d4dd971af208d40c11759a858b8e24a8b203213d540aa060a8518182668522136331cc8e22547faae21248c304e2ae992316ac4885932220d0014535988708244eccc14097b3871864a4c070d7038fb607214a3ea56887cbc1c88816f0001b2028630622c13be8802c4aa3585c50319c8f143cf1b53326051009536189c30a5eb58c1880d9c803105c4c416363a4c0c80deb1c70c6e5cb96144a338cd8883cc1179a02a5ca9c01a93002ca0514cc062010ad0a20194c81768f0608101253d0e0d1c4085cb95ee6328e83c380f367a019a8c10411d54b4e94b627cb104e5baba1022686214b150c4d37062026ac206426e840c53d026d444f15ae972ea92b8e24cc4a2978e28a6e011008113f889e5b0c75013258568491f9b8724ae8c123095f78c05045019410214fbd5c5a96413668bad938110dd60a387930b3b9e4c37db08670288645001360fc6d99560f365840fe2c4522364e1e24bd07b98f96202497c0de8295e45402c5841a35d30033ae1c1962b6dc53d81bb628f3a340751805184a54019d81c60d5085366c081394124cacb478e1b60252c89e14a308204cca98728147270aa0386c19928e5150c80c35c830c33a81630e5309310001b37af248c985c52d84188d41bad793413a1b6a6892a664b05906b92c10810cc388232c11a51ba8010c48e10570d08820508af0e94209804d080b02487498f9296214058008c6c070d1d440a0c2f51c6252aa0498141c50449152185d415256a8e62582393fafa50da29a3298ad45f31f3e2895bb362851915b811c4a98a9518ba1c91199280162b3a8389410ba4ceca0046f888a4018452953b7e586163019b922a50d8e0e4490a3566a892425051033a08400a55a20e60030c483ad8a10a11205b8aa45040042a6d2270ea5409c2810a03782c10b5f470a12282d5511e1d06998a120a3fd8418119262a0208d3460a17180fa6a0c18613a910146031a58821241054b140c494abaf480f78b4724c29b2e2c61b413e504c79600f09ae8e864029629889c01460be235276f8028dd1cb0f19296c03d23a9e080252483da48507a9a4e42829e17a526ea27021f463471448a410e50b1f10b8b9810d3551b8152e070280c34b944e073bc6b47ad0283d6c6862ca989792280838e99a4c01431f512e00e120072f22b822aaca1225581460294854112cfa50028af10014396657f001b43c8042668d21beb8cac00a28067072930626240c940f2440c7044918b101e5020464708031585c2835d20859f3a8c30a94029088280243992d505b888a0853420e1c5493180a4b904945a08230b1801415b30c9ec8b883768a91c47efa010f293688b0c2f4e40609008e285b1a78122a228522e6d0443c0141618707f82cf5387d11a68dde00313070ca810a82057ea650e1941269654c14413a7d16ace0004e0e2a9c7e0206ae900285fa41154d9831041460960f60988182a8ef88990f6057674850068aec832355580bd0811242931d3c35e091c3e46c7aa20c1e04843758d074000ab8f9e0cd1e661394198a48c008922e4d434a06a041c203be30bd11e6015c9ca94015a6055880c50f127c9980890046a069f3804b02a6a424145a480d588269821dc2d0c080c18525342e20c004c828fa61498c1e690a31900d2c59714ca021830a254b44289819624d0e7cc90131afd18b861c94c270e2a70b335928500ac3079907c83d9a28ada71469b08047ab3432fd68c3833cec50fad1a625a0da85a42d30a0f530b3c182241ad68080011d47f024ed36d6ac89820e264948d2e8b0e68c913dc9638b921c37c0a23c91820b5159a3d47ad2421346a34949104fa850d0c6150a2830f4a4e78c124c7055a18593374aa82a19ab9013269868e28a614be78404ed4515197c3ce1e4030b1e8000175e83130b40e002c48a170b486cd860303a9871919018c148124a80b182a465a7873650de144846540c78536405072409dc4c31658b2d4947691480e60e21666a473ed87125851a30faa895d243ac8082358e94ec1f39ca58e9e10800229450870d4e3068e285165f1c994007249ae02080314551520b9ac482e4b1456d4ba38947a45b2a944430ea838b04b82186961f46667c488388511536182160cc124be8ac0230325570630290237a8c7e84a690605270a3ac03abd1438d3086944f18590389064108509e300696357d8c80534211510703f20fb0dc503802e483e3021337ae8a6a63dca00493258270a838c3c91d4cbcbcd96247e9cc0b4c9e54b0060d1a6e9a98f01881c1d512292c293a43ca1a980b4abe68082864534b66bea8ea8b42821860be68a84c4d54e3e58b1aa0b28383ef9f084d135264d0c23f5198ce06364bfe896415c010463caa62e3ff8970c0985b1659f419c2186107e162881bc10b1e57ca98c0c29229bfa4e7df042923c76d393605e25fe7071fee98a30d161aac32c888e0d9b6ed69e648b3264d13ffafaab4757bf559ed4d43439a150c90c6cb0bc8278d549a6d95d154766fdbab37daeeadabd729b66d696e5f59f5075dd3202403d85a765bd24bdbcb4ef96c9bdbd754d73ad58f11ee3a9a95a0aeeb3a9a159fadcff4763b8cc8162920d8f682b1dbaa5b3d33622a5978ff7f561fb3d5b16dba29cece03638c2e31d2e8f4a0c383ce0eff3a61fe7574006385d6a2b4f53d695f48cb1e2d0c29ff1b501847ef0ac307081b3442744e62aee3701fe1d1a8ffef42038566099a4f465b3b1a9f9f69191a2168feff4c1b31fecf0c9d79e2b7333c3ceccc08b0ed5d5336f6ffb03350679efc3f0cb64dad7ad55d65d973d36fda9d6e12183d80c1b341fb85149d196278b7052fd47821e45b2a2e2face81992da2b430cae4b738abd7ab6a9ead0ebd5c110437418f0ff4cefeac2842e846c81c5161dbc077dfcbfd4bbb4e08fb91c74d563415a1c3df02e2d8c68e1fa7f2346b62c4ef80fc17c9445ec7df08246161f162d7080450bff6f5e7559509031d705055d21c40a3e56b61d9ac9a0b4535343ffb6fc6597b8ee47567d89eb7ee4aac2016dcf92aa33591bfb7f76c9ed53f4669374144085140ab8a64033c50bdb1450fe1fcabba680c55c1d836d1c9b6a1704c6bc0b025e5e76e52e082c1982c0ffbba488e2ff613c6dda7c4da9b610779190663228bac7cc8d4536e55e75dea7b4a9b2ecb9b3472bd3810b8a312e287880e2bd28cdbedbe6486f77dd219e9aaf9757250586525d7e4285ff9fcd74d493cd95b97d4a736a00c0850e97256ebc5e11fcbf13474e5ce004044e3ce004007e36d366d19b2f210dcc1a0a10e60105181a84a1d744e9420f0414017a60e68aa033009b345bfce8b2d9e12273848bcc12323d2e269470352036e6ccffb72c1af54486f4f6a7feaeddedbd35e261d5ebb504035c0b68bddb722acb9eab90d055e72b47328538ef52d9e3bdbba690d08f4f92dda3d6f4094f85381292104fe2d63a15475ad3277daf29d5cbaaee164ab27bd49a3ee16bfae40b696b57cdecd190c0f21c297b34ced9a2d7eb082c8ea0721473f591cb08220e8023c5957f9d542796c3c0991b3e0b96344448f97f25ef2a4289ffe7f6c62e15d14211b3ff229a8ae08ae8d988d0c345849a7f2e0a11649edb9c5d8366380f8869e3b69c1828c428918418312b9b4e9d419bdefe75a680e8a0ee9b9eff3a9d73dd63ff3afbfcff96733dd23810d3e312b38198ed8536a0246f4ae41a624c183cb26b0897105c3c0e08385138610f0b02d6f603841f54d6c0e9c205c4983c80f0097a29c0f543091f54eb542b8d5d5d2a165d91bad1cb46e9a2a13755674fbcd57cd5ef537fd92a165d91f84a33ea6d53dbabfa9269b2e83ad3b2a827332d337b6fdf138923d5a25e2f105c3c08fda36bcab24edc4a3bb97b65d73064b81beaed4f36084048861934004194122247936c8c174e48283ae2ff03f00387f5ef72a18777b970c3bb5c8081a5f32f4196ff8ffa508ed90a62fecffc3f95ee009c273698231673c04a29c6ff5bcd61011c357c931a1a28c0961e130c20e4ffbf02221ebc444d10c4ff0761800e0ef8e0ffffeb59c2042a5c5f1a20c6f5258ceb8b0cae2f24b8be60e1515c5f9ab8be24717df15c5f38707d71b9be4440c30a34b878a82a0d851f23579d91fc6d1bca6e9a4804d70c3ccc40c3ff55f7c30dccd534ca7fce18dd3fefbcab485026551d52d521570c643e7bff3a5c88c7afa6db7688af5074825676490748c782a9b62badbd49e75d6700bd65dfa795e96559a7b73719a588524229a0944f8a27254bf9cf6983a5f4b61ff5962d5a5376bf29114fcd28ec6637ebc4d7feba3d8a966997f624e6ead8bfce11204fd5b24635a22635229756f4aff3f3eaf80069696a93ba32e957f37f1d233a426afdc93f4e133a1cd43a55976bfdc98f33be30fdd729f2ff40742cc8deaa6350bd65958664ecdaf9bf4e8f8c5dddbe5336ea0527aec6a6a9aad39d729a13379dea49b1dda17ad58f14ae7436e854e9ca2abd29119d214fc5a4b3e5dcf023d5d100c70936ff3fdea09a05c9d620b4ad72b5a0febb5810f3ffff3a19e860e0fef878318077b1d0f32e161a88b934d70a6d9c9494fedfc83f0e1b2bc854a080ea82d5a07026519c9aea77ed9bebae48dcf65ad974aa756beaaa7b958e751c3774ab673823fcffec5de61aff383be860c03b16bc0d20dd926c57605b07b0a7a6a6a42dc996c2784ae416a94f6d6f72fb948bb2db064a3618920d06db38cdb66f6f37bc056db0cd4d3be836377d7adafa19d46d3df6ba4666ab4cbb1d4ecff627e8a4b93e9ca744f8da3722ec4e5d1a4b9b4adf9575b93e4778dd5aa772ea53ba89af25575361eeebe5d2d8da9b4e759577daa6ea97f75ed537a094f683b22e27054399d69e04abb2d5ce9aaaeacd4d5d969dda86fa949eb1b31f577b0152d4454dba5239b9ba80f97f98ab8b5ae3bad37a4d8db9bd35ea42fe4fed978bcb13ff1cebe2b2a48a162e147009f2ff2faa9f9cb85626eb2e2d52681941cb989fc9645a6ad0f245aa4accd547ad4cc6b92b4b1b52cfd4a56a59abada6aa6a4b63a76c9c4b7bf576e4889b76a21915cbc66a27fbbae9db9f38efec39246b9b983cb99cabea2a59abd5218ef795b6a6acdbf6ad6551242ed7bd1ddab8b6772a6df5ae9af6c1eaba7a563bd3297ea595b81f9f0d4683c96828bbf5297db67a6ad36a8a3e1935216d2dbbcd6434de044b6b2aecf582c13634e57dab9d1b106dd5547a0392d17458394a508890ba9aa29b7b6e4044b3f45dd32bcdc1d6542b1559b93ad6d1d7dd9a38fdf6da4edf73ddf97f1913b211b601b59b555fdab8960b0a7abd605030348f3bda709be54d6db02c78c075c5eaff7350d0cc75a50f489d70a541bc4c738909e9c9a98c32cb26434e4c504fa6f94a69e995ff77c5d8b8622ffc3fd75ba01fd88f0ff7a9116d1c517779fa76f75935ec26eeda1aec077aeab69cebccc0e4e9b9ba3490db725e95ce05af63c1d3121427a694212576dd4caacdaa2badbf6c551c526bb891375dd33c383ba2807049a9ffaeac091794987f1d077ef72a738acb4a9395a47f7565537728086dabd634086dab8c9ca262ae3e32728ae288986cea0f95ee4e4a01674cc47daf2cd9f7cab41a85a33b639f74893f4fe4dcdb1bfd4634879ce3a6c0ca4fe7ad459cf7ce1de73cc644dcbea3bbdba1cfddadfec8252ae66796bd9fe0d98d604635399e6137d27a8c9c7ac4ac04841287bc935dccf904d18f14398ea7acf9ba6b684a9161e78da3d88da4f87560f6bc6f24fbb83b4ef6513cd1738bdfb65276cfc367eef4d78161d7275aa5c419dcbdfbd02f9f5de6e308d563e4d493bf252a66132a65389ea0d8690f0ccf9888cdb74f91a1699a27d506f31215b368ca2766d0f3b03782a1d87578f4bcfc8d27d9c93d8af9d4224aa2524a0dee1115c7cd35d98ddb8b52ea4c7a1ffa658f87e3e99d2d7bea0da2f4dea4a8cf3083baf7ec612750b817821ccd3b9f18f5b487c644ece124a8fe6911ef9173504451f1ec193f792a4fbe35f8693e92df89710e493c3a95e8078a79e3dca1b9e38f3c6322e6eceb835244c1b1f3c01ce67ca2641f39679b4a4de6bd47ef3c43347b1aa35d26994a11c5e2de39ef4e76ba9f39266275264bcd515c2a4794ec7aeca2388e9844d19e73074a65d761117f18f4d08e876788ba6298548a23dee197bd7d765dec4e4fc6b6339c5f4fce908bddc3796fad77cf5d4cc433b6e5d889931287b87314ebec75e1879e614cc4bb5799eceb65241c7a62279223e879e1e7815d18667067be39b871c7990c3136330697a8984f8ece2665474150871c8764c7a7e87d1e18c5a8fc3aefe4fbeb279ac5f1dc684cc4ecbba626c6e108bae7b744c5ecca12f34ff4ba4776e7d99dd92363221e7bcb16b53aea24fa70b844c5149994dd1bc7b1ebd0f3f4b0776e1465cd3755672e9954548a9a3cbf7c82e389fbd9654e547af814c12ea320d7ddeec42f441a2abf50cc1fe965cf1337d93b1d13b1e9618c43bc7b15d392523cf70631efa1d65fcf9c8c89d8dcadcede5e6beec7c4832d8a9dc8b93ebb107b61171371ab63bbc33521ed81e1477e9ff6b60776241a1371fbba23b844c5b452529eb9e7139f18fd72c875df3111833d504d7afacaaa451cd75756dd5db844c5ac92a41c4f94f34febfc9ddd163d1c13b19971f8ca502fec40c6b2a6ca5bd35ce05592609847929f60b775ff481c1371cca5cdcc9645439c44963b8f19ec1fd98d2238628ec6446c8ae35866ceb1479268d86db177988c8978c4a25872107330e439835b7778d431115bb1ed94897358929aa3986fb1eb780441ac632236f9aa598eb3d803d5a467a8a7a807aa072aa967f728115ca2624e01bbb087231e7588f7a94790e438325ca2626af9f077628dd1be3b527ffa3bbd29dad999b8baa7cb34d30397a898aab7fb377ebd4343ef1bfb378e4f1cc771f94333397e1925413e76a7a7370f6322ee816ad2c3bd3294eb814aea31d7d49cb12d17bdf69d693c6611f4c40c8a22ce3814f19731e66455aaca95a3d7755afcc88eecdd177a3b26e257869afd4d5b2bb2bf691b057c65a8d75b767f4b544c279de9d25ad3ac0009ef6608e6239c2c08f716355bf6d517006d03307f8e10f9717d7c7c8cf0559b1f07478ab81bf460221ba02f8d08367bcc34b79bca2e18626403d2c048063f185cf085185870c55abd1954404108e64d081e3336cdd826002313b814f064966d2b70b1ed9196ee6d05413290e0ed53144480dd0b20c0a94cc6fa3c908938d0eaae6e0b1ac01730903708c03a95ba4316c03e40da2200e05dc66e7127f7165385609eedee02e96c9053e487696e8073a5651ab0b0c9aa26ab9aef55a7e087dc780085185697e935c70328d06880813fa3020d436f25a5027df041813df4c8038f09dc61471d74cc21c71b3770b479c38d36d858430d366bd240e30c35669441461a0944600c31c24073068c2fbce8c2032d1f81073014fd1083813f73c21343cf53d4e65f042f04d8f112071cac0838c16a82e88b9d2e5cb6fcf72ca92b8668dcd1120293129a70f9ef62c29008001076b2ecd40240c692a69d233c4b549e254dbb1de2f120cde780830d251c3d09476f4bd441de8a6c6b57bb4dc9906ded2ac823f42ab9a30e228cc05f5a6021aac9032547bf13074f9208fc4e55f66821de79dd9d7607cbffceac294bf9df61572999944a75258d9d53a85497dae1fbfcdfd1b0ff1d730704299e519cc0ff8e952affdf028fb851f97f203b537e6a4d559a0b72f088e733c383a1783a1a783a2035ce1275b9d69f40b56cdb7a2cfa8519264e03ced5b23b4a517e27ea08d21121d9be2a77a0ec40fdef3c79fa4f5728b5752857bd5e7c4d9ff858f1f9e065fbca69e7839da29da61da6a51da59da49d273cfddf71d2ed20ed1cf1700064a7c98ed1ff4ef9bfc364a7a888acc829db5733dd42a92acde8096af7aa7f9e2178f00c91c05f0933c3bb43be213f3810b80df06c38ff394a03253408c28b7273066a3238f3b27d75b22a1157d32846321e0caee0c1e089ecb9d9ab7abd7295108b0aad3d4968ed495da6afb45297e955bf9a0b71242419bbba2e57d3284249768fa2a17c28c4e3dbeaa61a6789de1a67898484b297247b505e77658bc68c6923add6a9be30a5094125d93daa82113e57993c1578c05301e6a960fbd95e3efd4d5b2bae4f77e6fe17d228c0f2b4dda3dc7436e4a6333db5ce64a90b65c5160999f2df44884700523c93d9d3f67d3267ee0454e8b6ebb60441100441f0fbbeeffbbeeffb3ccff33ccff33c2fe79c73ce39678c31c618638cbbdce52e77b9cb5dee7297bbdc65922449922449921cc7711cc7711c47511445511445510cc3300cc3300c4310044110044110fcbeeffbbeeffb3ecff33ccff33ccfcb39e79c73ce19638c31c6b8ebbaaeebbaaeeb30499224499224498ee3388ee3388ea3288aa2288aa2288661188661188621088220088220087edff77ddff77d9fe7799ee7799ee7e59c73ce39e78c31c618638c3b4c8e62087e5ec64a32a4293c0e24fdbf6e3b1255f7a7b649d54eed53d95fde572b3d73db5ed3eaa66a26432d6d6fd68a55d175684913a96c6c5bd96ded59da941bf10cf1ec64f13c3b293ccfce93ff1740077f44039267e77b1e9d389e472789e7d181e17974ae3c8f0e93e7d129f23c3a0f3c4fce1acf9353c4f3e4acf0ff25d213bbd4764dc4355191935bc6de3625d2445da5bd3455d545e68c46c5b2aacbf10eb8556f9babfba9d5cdd53df6b6e9a9b735fdb1ea684dcf90544dc3b2e3fadf69fdef04d991802707f6bf13c1ff0e04ff3b0fec38f0aa66c254b4549a4e4c4e4ea559264161c2a4644a195252d9293d63db595295d094866aea542cd4481392f517698a5585461a525fd3a9b5c499f2cf72add8f5c9eb7654f7a4984b6b9a31edb4ed329aee496bf93c3f0af91f1fd6eb7081c5bfce163a5a005181efffcc028b5ff59acad276bb29ff2dfa501fe7a0f40a2bfe65aeb6dad82377e6463d61e29a54ac5012fd6ace07d85b9eb2514a681bc584b6515f583a41811a5a6a82f45452417a32999454909286909cca27734af9c42c424a2282d2f4edc1c5a36dd5ebd5dbec954e4d23f8f4f4ff5f4863f3cfbb1e1dbc9e7d67b5769bdae5bb0bfd088d348e84070a38cac829ca7dbdfea752a19f0d88fba4e617d25e5675dd9755dd9f2fa46d405f48f3d9464e51afdba7d0360a6dabee10f2bfd959c97b3f3591c9a2d5e163959299eb4aa221a2a723cb4ccfdcecd1424c1b6963c6b42f4c99e6b0e1d373ccd89ce3c89831ed4dd137f2cf2a23655d69dd107ef852c257fd93374ffcd3a6d2b389123762fcab6a88a1b4bdc9f566e8bf88db72aed9f699cb0d162e3752b889c581471c640001134703ffaf571c55ff1f7b532bb7e54c73e6b691e28da437baafc0023f7c10c2e1e0ccb3b6605df1ac29583ab0b1bdee6d9733b0a0838437cc80e92226040d928879bd2e5566d858b1410b3f5d885e1fac228cc14417078e58b026878516b8840195c6055cb411e012460826274baaa0c14546c613211e013fb8886b9298f0341bb8fcb8800ff2cb048ed8a2050c66acfca490b48506ab9d23862809c096fd02d51315ccd0c116244d62d016e4c0434b1e0e448d71eba0428b140118628a3247462d2d0039816a0b283db44cf981c84848097768e921410b1cb2ec9821bca16200893dc6a410986062460106a082510824fc5003e704255e84d0b4c51be06b06098450811ae590094c01210b1b12722c006ad2250b1262a86503b56709018503c04622d82c460b74e025284a0a5924004301f4006266b5341f1501b0caa254f3a1851c3a78c18c925aeb40121220c0e05a12345a5d5e4f841a002c20c2c2ca1dac2b2fb4803327204c5ddd8000139210a2ebe16a2a88d70f141d63ae321c66864410451e567d202df9d6c0c18a9599d797326db81c618580d365831399032bf30754d01e059859f96c518502121ba854d131c600c2a4b085a7ea01509871258b265375c2149b38cc2c21a9827aca400a18a114aa36222e4424f58186e6c60f3ed0705921074d892dfa58b202f204cd8b0f9d8117645334273b80614693110cd07898c8e8e23e20c97b460348e4282ab0df219a10c08d2e68c0e1a579a10594378b90778886858c3bccb85e06dc5c2043141f0ce0a29192c61035a71c5707350b2042c5cb85abd6e0444e0b45003744a3e3a24a55162ece920aae169381360b2721bca1071ea29d61ade20418ea38a13d1f00001d8aee00a30deaa34d400e723c6199401f514c40810a69b094c95f1959c24803cb0a0b60820f17a6506191f202123ce48ac2b2011045a078322498b971d9047c30b4316bc00f073c6584809a8db0bdc1c406138a664d1540e1620bb9c58c82324d783163a50bbbc60619b2904d80057bc496124b4f10256c9613c8123b0580812d2d781da1b2a18a8d000d18e268620bd02a819c215bf4d066ac3dd8b0c60c7b10a0cb8ac58993191498fab2762044065e50cbc2ba330489280e104503b22e945801ec408b99cc06a809c8bc90861a32348821aa20627a43968744bd12e06ea0f281b3410b788c11552abe36964c91c714ea0b2d3051c3484517aa9412526556684004d548192e21034a402a3a70ae0081e547a81c70a50c3ebaec08416502942e385391a17ab2a2a10e9fa88e4a83225018c087374957d878833592a04200ae24e1e60b6e18064784b2dbde387a6127338879fec4590d8ae36a2fc799b8f6665602700850ee1e76f9433fafeb74e61cedaaf9a269cc35df96754d30e37829fb4986a0179e631eb5d875dde1b765ddaf0265c737173b11cc7ad46407e63eca1014d131672ee6b1839a63f65dd3918f120ccfbebb477ebd13d13cced89609c7cdd8969324054aed79681776bd4331fcc48e7b9a9c9a927a7aa092f620412c7e2299711762307bf8fb46d1ebc00d72af8f3914bda935adf10eb3ef8a04e69996792f4b8f121d45bdb9debbf79888cd99968978acb56387f328398945d0033f32c424b83bb2e4388e834aea115960e1519227f98d7b730fed3abac73e8192875af7af7732443bf1f3ce3b4a8fd4df78ea0d861df86dd28e52e41e7aa23d8f2117fb178a7594ddb7c58dc98ee68f1c3b95453f1689e38c7a8a7a907aa0927a665a89e3665ac6716eee301d251a7ea3d7852307f7c745f2a4526927d932a1ba2715f544f514f53ce929eae17db562e2b8b653b55a8676a7ced9258ee3384ec42188f11dac39ca8ef7ae8b24b83f54f753d43111cbd816fd7aa09af4f0ce713d50493df8c341b0e42875f6f6e981212649deb94792c07a53eadd9de3b8bff33b439204b99b12243fac71487678f44074ec719462f74e14dd1e1f73e76171c3519218f4d00d863c771d18ea31266212a9a7a86d8d769f3d711cb77bd5d8619618569bb2effdf52d669044f5b7bf5a13c775f524c1f69d49b1de28c751445151fcf4f99d61ef27cb0d8cc191fcc20f04c390ecb2378a188f5def20984f4d7e797bac364a8f243daeb1ce1b6f10f5381ba597f3296ef11bf7a94f71edaac9ae268977e7ec06b739e2354a1d9263f7a1d80bbd0ed52057a3ec783f79c7b7c8c3512449b063b129f5e7ed7c92a038628cb3f869a8252ae607ac3525e8811a3dc34e83a03ec7b0a75176d01b39d7dde39dec21ee388ee3a6f4cb716de72c344aefe479cc1d1543b07727076322c6d2cd174ba939aeabef4973396e5ca262d25867781deebe0ff4c64f0c470f779ee879a09741fd7531a31d7be08e89b865abb48a9a53a9aaf630d7586a4a3d8264377a1deeb8478a21ff92586694e7d8f1d0eb5b9fe00876e8d879e7544462f67d7bfbba694b42b1ca28c58df9de79ef8c398a6a50ede952af62db268e0b45ecaa19f3c122a30c39dee7263bfe32b9f7e69af3a1946d2a398e771f5869ca73047777ea737f60c7f947d2786fc350882581926f4fece0f6c4afe3243fc30e8f1128fbd8791fe98560eec8bc4f322662aaad671fd86a55ef278e13db9000ac314a7d7e5ed6e8d99d24de5ca5c93ca8262a4d89e3bad10b961865878e5ec7fa13f3f9799d1c6322a6ca56ec0c0ca30449b0771bdc9d16f73ec33126e2d46cb1b899e338ee0b691cc7711c27b25660a129c73d8aa8b84f511cd12fc45d4cc4ec3b62f0fb429a17f255a4eaaae6bdaaa5ed102f5131abb0ce94b9f378973729629c35064130cabe47516b10e4e8ee1d14bd2f4af21cc1ee13bbecf5eeec204af3a2e4a2d7b527927d6f8e7a1eeea2f4b2f7e15387b86f10f43ccc4529762fe3108bbcd35c77e3b845796ef00c49116bdcbfece50eb3b4d821ea7524cf5f0e3316774cc45f28ce64a987c4caa2243b71937cefcf133badbb138b72d4e2e789bcc327fa718fecdf1565d7fceb229af9a9498f0c452b4a313cf3e771b493e0d745de55517ae0cee4d889dd798e9e287e66cafc7de4f7657c76b88738f4a828519004bf3d8ee787c52f87798af21cb7263bef9c731da2980c31044a3d9260d779077a2709e22cce6650a4283bdccf6ff74f8bded981dd78d58fda6ec52681c02a53724c76b1f34e7d821d6b0f4d89acb0a22849fea17d771d04516fdce0f7852814e5d6e4994774873bc431d61365f8a1baf7bd75d619ec5b8f4f32b635e2388e6b5f3794d1d607949decc89cb528e291f4f0d7410794a3b7f589c7b0eb1e8a4734344996132507b91e75973f0e6af244794cc4567df5dafed4be4f188bedeb36517ea4ce19a359e7500cc51ec6442c635b9474dfb17d5d326538826197353972b0eb3239caccb5ab22aecdd80df67090d603d57382b41e3277161325b8b9ce9dc77b3e3f8e379997b01a507adfd975d6a3c6d8fbd0bd4326ac31251fb9d6a326c7af0bbbee9daf0c35db2e628fc580f2cca3f8f54e04c9affbf2282ea0dca7de9d878e9df7e1fe75a78e2d518ae83e3149ee8ec50e7b60672951f253e37014478f93e3497a6288dbd7f59228470fec3e94c45ed78562ffc4d75540b9f9798e9d1647d4eba838862acb9e489459ecc08e3c3f1493bc8b1e1813f14ccb8e28c92e0c419044bd3d92e8c7c554edb011e519e6eefb3ebc41ee851924dd224a340c45b1db249a43318fe40812516ebd37888258dcbc1343cd3f3165ee488ea262b879c747ef0bbd214a3077dc134332d4591cc98f67214a510445be31f7cedc47b1eb6010e53982e7873f11dcbb13492cc6448cb1c802a20c7b3f73c71dee611fd18e747f283dafef50c42229660f1c41d4f3a1e4dcc3b98362e8e9b07b7ae71e4a54e47a04750ff90e31ba41d30c330f65e765141c31b8499d418cee9888772879b77b276a1005370fcf110c538e21e89160377ae0486a0ff53e960e25ef401ea260c7bbc6798805a61cc5b07b7b2433d6f91bb39e791c2b87f21473b749fee9dcc36ff72f26e28c43497621eea8b7bd917ba7f658fe61b07ddd1bcace4345d41bb1d7a123e6dec9b2a1ccdf899e1e397661174fd03b6322567302bace64eec48c86dd23511d13f19831cd7c65e8c8aaa1dc601fc78eb9de5e48a2181c3336595f4614837cfcce133cc11e7e5f4833bbdbead98765b4d55362d1508adaebdf476a527b5b1c3b99bd23d60ca5f7e5ef233d3c7aa70ef53e632236797f4dae67246efb6b447ac092a1d4a74633b8f5877a9fce6168aa5a9692192c59319421f98da3179e1dd8f12e92e84c2b8d2c184a91f4c8feeddd33f748908f31118333ad8480d2d37c7f5fb841b08fa2e7893111d73a9517b25e28d1cd33099ef90337297a9ccfb4920ba53e33e879e0a9f7e891587faf9b26912d94e2798e27f98d67df593c45302662f0ede3c862a1d4df38a224e9817a6fefecce6e8592dc587f7b7bdb03c3efec5ea742397e282a927b24c70eeb1db2522877c67c0c43efd32288d14f8c89187cc2787c65a8c742a114f9398e20d9bd4f8fa8ee3a651da0d4dfd99d19a322a877de7c88eb266e8a7542f975540cc7b18bb8eb9993a087c3cc32a10cfb17eacc3bece19dbbe8b9efda65b4a976880497a8985258256c3ce60fe3f0cc689775076319c0db63d785587f64e76d708c89d85b62915092a1d879a4d79de0f971afeb48cc1aa124bb8fa33df78e35086e0ef235b55a69ecca2a40297e3b77dcf376163bb8c1992cf564b4d513a1cc7ad49bf432efda3bf388b2e88ab4d35537711c8baea9292e513151160150fda19db83bdabbc7bbf164792943f0fc506ff4c86f7394f7cec361ee526a706f8e921a3dc5be37de31d174d38c672497d2cbe7d835cf1a25c3f1eb674cc42137bbacc766ba9d0271c6e29632e467cede26c1ac41de7557dd9ca29d9d9b61ce62ab63fb7bd252763b8b5a3c3b0f87e73e35564ffdd2649d371442396e1e765c24b3c6f82345de6529fbfebe8e76233f5134877b8c899877d3cc5955fbfe6aa5386611eca1b849117723dee11215d3ca552962bd4f94dc9ddede279e23c771bdb52a49ee65143cf7898e6088512f26629e9a7d567bc57588e36aabf696a89865558976e226fb187e19e53a83bd07aa49cf15479a5ab513c7719c3b63b1b844c5e4b47263ec7de09747f0eb449dbf9888fb9bb656e02b433978514f871d1ecf10edbcdec99e2575a1701cc7c9686b08ae18ee1115c3ceebe4276611cd1e8d457bba4c5367b21494d156ef95a1b4b60c51dd8dba87e749e6bcc9218ee3da7736864b544c8da504c57de6f3eb34b8f9d69fde9d9bec6b8ab88359b949dcc3f343cffe8124e63b2662f39bc296dec73dd2434ff123d1aeeb5fb896e887e630c41be459cc200e4159a977fe50d4eb421e9e3d0c794cc4ef8c35490c26a965d831de58ec67f7895aefadafba1155398e9b04f348ea8e8f5cf4784cc420d09552dc9cdc5e973fb477e19747322d4154f4341739d891f93cc72e26e2d7053152ac24456f04b9ee78888e1d45bb98884d9526eb70f75d656f2a251a43196df5924c95bcf3ae7f58f76edc1e39ee9888dd114fad2915f942cb9014bbb01bcf8ec7eedc201a13f1da5573ede69741b0971dc724d88558dca8063949c644dc612b7666aa3419b9b253bae5e128ca682b112f33f75010a3a117a23c83986cb2f5c93dde773f73efbaf3d43130b7ef0cea0cc571cc62388a1d1992b813bd90ec7ae49ec8bfad4f8ff3a380a8d47209c645e91432460000c468020424c31100304024188a8562e17050301cd90f148002548c5ebe5440178ad32846619031c818630c3000000000220333b80aa92aacca547144c509b08644b2ba816a2a29136f4bee651fbde01ce9f36bc3f346d25a1805597becc63af2b65259667229655124b5fa84e0895df5c73c00a7e547841ef5a4b5425fd7d4d43f69da8bb9cdb0e4d71a35bec0d1b892f8f40b23ca473804a02cb4851433904b9e622650194f0277f1d0ffb2ac078aa9fb24c6027877484e116cb16533e8cb558843e04bc2caf509f9d77ac89e787b204d8939d823707fc3d8b39475ce4386e4c8f9f1bd1919647522cb8061de5f98daea6aa6507d2049a55a0e9c236484ea6f17b51e7d5a3d5755fa0f2803c563166680495439919a04cd13b966edc09d4f9ca7579ecf4ec297234c3efd2833e6b2834bc3f759f35a3ac457484901eeab1cfcb83b50d27cbad55c0feb0f14771039050bef3894c30224bd033f1ee39b3e9d267cfc0ece65e3bbaacc86555252765d90792ef3006e15772dd032bf0503a710f26033fcd33eaf506d09d969a29eb214343514b3915e2b1be955ba99dd4ea4ac5014e25abe507419c0a0a6d0290310f3323dff539576cabd81f7da014f270f721d226996d18eaa8a7c079068d675f58bca5594501980fd270c4f6d81a0591b1ac0d4a51b13be5b3758d65e8c5b27c1417b8bcdf0fd804cc7e510c8a331460c435cf38396f95997df690f008569b69fd7b5512784c95f9a77c6649bd12d75870a5494b218f2cfeb4651f455d11c712030293789bbedeb6c2eb4eaf6db4a3d4d7446ad859ab532aeaf58e05281ce5af1d41e0873953515b5def75237bdebd45207ee8af041fa8bf625ebaf047df8abb4e15ef6d607f537a9bb4bf91bd88ba0bac37a33e59d21ec241c3105064132c8cef5e0695c28b6ac365e1e4695410c11d9e013e6af73a54962e19cf04ca384cf905b48e3c2ab40da0011980b7d40c08f2d22c1bb80e576dea2b5723c2b53936d4b864d480d4150e0dc975e03a807bc87ddf9fd1c8564c3422f20e3ba086907a04d23daa46ade08c9e3bca38de0f4d4224eb3822f7bcf82175eccefbc1a60a0096f665af42019ed390040a0a2898453402049fbc979b2930644da4372b493bd4ae7f6110138f5fb072b546891c340566e59e4b8d7864a7b208fc4642a7a084204fd625484881994ecc1805e08aab2667d8f19418366e1f9ff84879dbabce9bb22b9fa5cd812dbbb2450bbc10b94a041a0a9e4a36bf3e328a7a5f1347dce250701383a9143116e1494484a685ec071d19bf8e58f8c5a78c299352e2594a5bd9fecf3225d8f146289a1ed9f08c4e864661db27ef3cf1e63df66d67f9af0aa59532e80f1b7a313f65993184eed2d80c2ac245867bb005792842e5b89162e92489d617a60650340fe03ff63dbc05d353320630c79dc3f0c6e5c1c65926d5d423be33e2c4af5245add0fa041bde670a59fff53315d37559b45ea97da0a7b355e46719905809d00513a8dc379647a6270394323775f446741bc049b92a13259852fe754a866546b39325bb84b5b50fa31be9767a72a061f92399fc06b9c02d1e2e38c0987af8512cfab742100249f615293ba9203cb62e1ae1419aef5e4de38620a12203071cf0345f590a7ae906a2aa05aeef50a4be17d41084ad2b6e08758aa1dce0f3d21638ddfce08a137cda001f76584b0d843b04de9983a31a4fea7b8e2cc3f709118913196447df72f9f5cc65a0c7f15c42224a7e2b1d6a85a87208f34ac6c2b5927327d45e74b6f8fc820bf8cb7fcd50ae28ad45fb27d92b88b282ab6a90c4f4f1e0252c1a1a2e9aff35aeb712ed643c5abd6c865d18578734bef679ffae60e5ce4fc3163178d44495893fdd2a0ef674b55f0d8087380d6672e523930c53e5e9aa802abe931feade71f3f8710e04262751a44be16bfb7342b5a911eb56a3e10db1c6a04094d3f205fc3866111f4f648229849eef6f3bebb08c92e761930c014e9dd7d232a9b2c7227b1ec2af301eea8ab7ffe795b7e885f8c6fdb017402b687b702ac19b82e8784720805d79fd236328cb3084859158e39ea6e50e5ce65ea94da27e6db68dc681fdc16b27f07ad25745196357a2a88f9984b41a63a3d25a8189ef355cfe01b7beceb105a03c3b1e45370878207a6cdcf5b9867171f3951a9f3e1267cea86049ac0caaf8a0636e7e037db334be795644e70602f9e4c1de1c3d2f41b910cc9172c9088271a9ea392644148520dd1b4989da2a84572fb979f253f73aa5a72cca79ba94397406d79d0021d4367ded3e1813f755bdf069ed373ae16b9a41dea5047e223c34473727305a90c0860747181ce0db078cbd24b2af1e1fcc2cddd95f56f89ba313d44c3e359f64228e57d8dfc01619cf902c25684b977a06ad56b91e203c9b83b87dad02ec0b9bbfed486669b5c92895c9a3df42e6286aa9373bb617aaa36803d60bd6c28d185826cf4d2c800f74b400810f1bcf5cdf950c6e8103a94537c58c401ef01c969466009a49e298f9962debf44bf01061f4bb6c29aa49d6db54d1b4c5434c2d46bb2e47251c304526a9c13b18253fd16874d6e80dc88c2c5671c1310b15c8390fdb456f5711bc7c8cefaa337f8298acab2d08a7feb439b8973d3c9450f098c355049d40bf8e29e23d511a3b6629c9c489a8eed845a05789c0a94dce8e3a91bffca53f7da4f34db2b1439c09798986343e0ee80de22099482fc8620df3f79d9f7a469f910624e0d37450f5e440f267543f6bfc16ce2d8e31376f20d25f68df5e45c6fa6cf3807d42bdbd3326813d3ac56218be02959f017bf50e9b9f1584485ffceaade51640d1e0cd568f3c56c887abc3053d50b9797da6ecaf7b85ce1d5edb1f5ef928c466694aefad46a5481c6cca943693200ff45a8998b29352285cc80fd293b5aaca1432994bcc4c287bc81e10a2b6f971c0e8c3c288d67e7a4e723ae5b07f862101c1321acf840e1e1cc98b62a4c37a033aa73df986ae14c71b29b2a1e2fa1829e7f6cfb311d2fa01c8190412700d8fd6dd8b6c4e1e52d8c4cade52f176e675110b2a1ff4c78a358dda0d3c12ab6e607611b13205ecccf629be7b139fcefcea0db1040c928c8df9f34b19472f160bd6ea72f4e28625d50fb2892c4be176da8a03126a872959b887cacefb396c5681594dd3be86c6a6415054a55528acf4436430e45a5c3db24794ad255291e973c55eff6ac0d4af0e5a413cda1b0a6cfbf13ff44f2064d406484012f7c40df76673939d0ba571a8b04e154b5098529548dab13f0913ce26d8cc67090d42f6105a658d287bf4c43d496b1c7f843c2fa41dac44485f13d05d0aedb154f7585155b64ed74322f451ccb09481ff09ea2cd6a82b1f2ea1028472061e94627294999e37ff6014a9e10df05aba80fa23aac5c1c949ab56ab0417ba2609ea998b6f7719b8b664bd7fec1c430132ce7007d8f7fe761833e8c3ab5648f803e42eb41745d8dfeba4ac13464dad10749d476b0a8cb59e3d50ee51299232577f28e2780224f59d409c43401210c83c7365af00d5dd8806d28cae8c206c472b125badd1758b089ff6435164326a6f00685df7ae1ebc530bf989fbc11e4c5a5266120f711b0dbd056b0b37289933f65aa4b5c4b3e26aa63483f6619aede09f321ef10dd1e42844a3071dda33545c525e7abe4adb4f6842c9a86fb282d62e333bc2d02dbb3d07b9c6e7d05ccdd50e9360ebb900d0535410cc6ddbc5ae82443a4bddd7ad0ce0d26e956ac2220f77f3c75d6c7e50d011265c41b03f84b2e7a1f50e506349f3ba6b560cec2e742aa98f94170809376d6493b8c894312d0020730903b592c0d3b183f85059a0424a3264ae9bfc4b68e3d291e1f4ae0e49d96f1dbb34928409fbb9f9f1f22842b090b5423d2dd1b41d1828e7fe585e1d35b869496c823e1aa88bae5f78cdc66bc6c0fd9374fc007abeb575d45e988278a79a15a10f8eb6cafaaf07ce9bb9c5e98fd36dd405b405f77aca741f84fec54a73616b796d5d439c039fe3ad603e433378b6b81e4e82d61e822364a83089d49ee46554e30bcb9c61e0d647c0c0d98c2e9f7554c6fd133e57f7f85bbd32eeb7c786d7768278eed6907e4e69cddd826ee5148d69feb49a5a58e8c01f4028fdb4f80bffc8b099f4c5fc0b78024acc07d1f3d5ba3cde2de67e618a0f0c18b71cd1ec47bbb824628f7dd7a30319b1653187c417550ad526324bb1b3e75f23aef3cb01a5fff775a5ce470d6da758d23b994893575dac18d9f08cacf80e62708085c73699c167bbe4d879e38e4a59748f3769fd2a50bbaecee23d1226c8f6d4abb3582a1112e257a85ae3c68d5599f93dbd3d9cf7a1a4849bb16c43ef1f20c3e6c2cea60c33e3a67a0e3876b90ff4e10f78bf99a8f083e5a4decfa0089ddfd64db7976055e65f08d3341e22757a82e1ffe14d0a494ca93799128cda3b1fc3c5e113b7ab0fd1d64fade81de10637ed844d39dcb7bf95ed78c8c12f94044bdb6617f7f95d8f246c016e8c81ef9ddabdbe15fd3eb3e97406c0af80c326f911f5eaaecc0f8841dded30b857793a925cdc69ea64fa91e17fd096460e8ce3aa52cadc4aaf73b4c46abd250b6187f6f4f8623d9cf95b9e4689ae6a66bcef5423b13c8a216f64c8257b5f7f1d3a85193d0ced745e5e1fa9c355bc3fbafcc53ee57dc887db11cf32f3ef94515244673ab830b07616f41838f64086111e9f7402f1e836c360c872359e5a391ccffa21af1ff061f278dc17967b74e1982947c5c42605d242898f6884f45244e01f91b6144b7a146a033b0b3d6725796fa5f46a20e6fba196229f0acc4011d3a35ebf7af16b91a49677ff85aced510d50f93a55974f336dc0ddca42803bda6288a1e0b10e71f6e4e47adab7232d8c0f6b3823b122b3b68d0fbad58fa1f1d2b380b3474263f4d9ab5ff77f26ec54ab6e5b6db028ef23e987c4913d3f0fef92a8586fd066e10f682bebd83668e4534ca4064b0c3d5eb0e20b0cf412b61691a93e2a3b520de32dff3230225601ac1a4634336b6cd9be60e9956b845d262a229d2fa989bbb2f48258ce4a18f18b08070d2f9dcc802b4f433c6b8a36f7701e453b2ed01ad2ea7a4f8fbc97075d0abb77f7a53ab97b5147b770e606541c3bd7f3b02aac1e832133084231835cd9fbf00576a80ce0fd694264aed8df8e7302dbcf99fc36081c6b561e2677dcbd6bd7ab0edafb053244b2d3ce1184fde137ebc24f60a1d48c02cc56b53ca22b62b86681631b9922f50ff25a3b9a41627a65da80061f489ffcbba6f48906871865a8c4d2d52e849901565455e5b0d5151544a0982dbcd9070e84e2f56df050e9bb67984211abdbbf6b7eb74944154b0c8df3e90c8f882da014ce91cfb21ca8c29f8f5972714765c84688682f6ab970ca57b1145d61f9497f6c38db2916c0c25c5e2f2e3eaf567ac52ac5dccae5278f8ae59a51000fb7141f749906f22536a8e6a1fca8f2d9d3f101c37185db429d11e5d2969aabc889f1502241efc92e3e24bc4a847ac369adae2dedc6488c6540cb4f8b9eefda596670be6ecfb6e17b832bca750a399fb031c3d18898a8eeafcd3325325d668873fcb3355a09fc57ca19253f26ad1adabd5d529affba8ad04184c6056abdd9504e9000ff93233cfe01134545160d74a8e23a6dcb2f0c12674e3ce86d7cbfdfbd5e382513dceb56e9dd3d00c620ad676efc5bf43dcf104e7b65e779fed8b25a50081d2a3e1cbdb80a15a7f458c8001269e745154436f567a8ef10d17e64f5dfd23859d7651bf5c17a09022463ba4e007a0a5d6bbdaa1a17790834464d20870aed02c1a68eb2d1ae72cd04d235e64840119f9ec009c9b060cf814df9f7a767af0d7a99fb23e9181781639a640e42c8330760d24e5cb4f9cc9fb7001e2d3e43ea8ba7fa38b1477d5c9ac284ccd370c251127ea4a1355be6844f71c22a6fc1f0b6e96ec71f7e7260ea7ec4913f6c6edb30f62e319026c1ee25013dcab07973382bfa08d7616003c5415c4ee25664c5246c7372db0902a5615aaf7083f74d37b497496db0824f8eb2ec3459fa7fb33c36948a5105cca89328df572774cf024a0767c82feadfb46fd84023eba1b3945d338c1a1c59aeab3a8a8304910bbe00bf6a56861a9bfe0529edbeecea6d0dc0e67e6131738658335d348316ce06eaaacbafba05cce09eb425f14b2b98cec1edd06bb16950e0b88826556fe30a7c97b3aea58a83e84d3df19e31a44cb5d3f87b1e0b40adc6ab4e199c9bc991ce84608971bf25596e2db2c479eb324916b05e7bea98a337b92ef4138171039b6a367edd9e112b8ace31fbb07f4ae0d45d10a93e42b51ee6e77825b802d7dd198e0b895b00d7d094bcd370ad18ba3f360b4506c704299abd12040626050c9cbca3b74ee1145eedb875330c5fb061fe1945f58edc994ff31f1265ac0d59fa5e48a1f6fc67228ef19fa0b5179d79ae5c5d4fc2073fc92916ea7dd0ca596fe31332c5ceac7d4bbb8b05bbf5689543e3d9be452bb6df6104af5bdd59e4cf91f136fa2055cfd594aaef8f1662c87f29ea1bf109577d63664e57d9a7b881176edc32a99e2bf87897cca378c7e42aabfd8d8932de36be651ba53e8d28796107253e03642b5599ded16b6c0aecdd55ab36a0ea0064aa60366f5d531ce690edb5688ca33db8dab43e6aef5f5ba837ba96d478a80f9db532fa5217e6fa0254de13fb4d7a4fa50ee78575b05b09f192c5f0f26ff4c6ea02db0179dd76804ded336aaaa87e57d0b757406f80cdfcef404fdc19d62aa3c8940221be51844e693f30e99266b18f2963c0f04bf59f62054dca571471035097df1535a7e129c1bdd04e26047553431732b8720c74b35eb71db704eb25b3534e739d884328dae90b28d2510f9e5494305ce2419c4033641f0956c4696a285144f8e20222620b91119e4248cb2ecc4cf5ad95d9d924111f35f1061588d8923fb15e1b0d965a89c0d911e698f213a487d23ffd919e5ec96888ce64e7363cc154711e140f1ad1c0bcb68e75626b7a1eee33cd19aa8ac3439bf88a6b5c3c858dceac3e5dbab819c94aa767616ab926dbc5cfc2a95ebf92bf21fb7c9ac63d7737ed3b5a61f1967aad9944f224a66f8efa179571e8764ee59b402b30258159b2a3f6d716d348a170c812ec4c2dc26bac46e1dfb92ffd88964404fda6264cb0c4031c26a6d2eda5613a1fa5e1571a19253070fac1b8d58d1b436ea03098cec05c59519d6b49fb9405404a8178a33aa1fb00e0105d7a6c4b75eae2f8270b3d17c578f9c76200c4164d5bf3f1443acf6385bfd549f70059ba573675c1a375dc6416cb9fa16ec4fc3c31f9d98403a0334ce75291a8d3991e24b9c5dffd5cfeade9bb65260b5e6436f643de28b613db13f23d0981438db69f4f2c8b199d256bc979d8e5bf94195632b3070b963a99c6ba66be5a2fcc9ff60065e41e846a1f4e8000b2e74c35365970fd20e21dee61df0ec4a9879268794f2171027457220f4863fbf1140b5e7a7eba760195c4089cc918fe04a04d5f536f0e5cc5dc2ff7aa78228278d6005a6ceae75fbb0d98633c261390ed4affcbc3e79d5508d488cf4638229d74b216e29d546fdabc0d22e9dc88bb029b4d77bc3512ddbbe85c8acae4270cd986b05349efc559c8f30b1902560c8ef66b8c44e600e61277ee7af4a06aec250d08450fe92404574f6b1fe80cd9aa3a9a624595f2ff39d53634c024ff22dd627990c137daaf8e8e4c9cf956cb2b82db4f4a2a54e1a97cba5021ad93e10dbcbe8bd07ba09fc4b65df52247351990830c8a944c630cb621e65da8bc40f49e9596f84b15446bca6946a7a2e5aeca82e2d6d8a27fdf849139aa81c45c07bdf5aa3ec9716e7e8c809696174d8e03c11b443333d3a4a18448684d377175f30e9cefe7e3eb5ae2cb03c2d8bd048cd13d5bf9080d203f755711ff0bc60484ec110c6c644d7896347e6b15fb8b6a7418b207001f5f827c467da1aa98cb948130a728d91b5419a8a58f95b0a6efd90f48fce27cd25ce9535b4530979a8af2736e9250340ee8bf7b60cd4b934a9049c382b21563c98bdd10000d17d4448fa33a9e745a39a29164b1269290d5ccb40389123d18a859e2c78f02fb50cca80a03a2f0817f2eb0d69ea0af544c11960d0c7201e6e70e14f636966c4827d6013d62f176f69444677e131f0022d4e2e485b3cae76c644209ad1410de5b56bee1b31eef47c858a9c26cf0fff4702ff72fa17ac867a97073594f7fe3ef6a3f01a52f470db25c46623c786558c052fb91dfabea812dd510b71ed84c7cd1b5dbb302581b3f15415c02831815935957ce588171d6cada2df4a959eb15f128dac373b08c710249931cc370b3288876248af7a75dba47e360dcd49727c4e70663eb7f28a4b8ec38819ede943231a630aa4f0808472fac3d5bbc3fabde58ff9b6cf51537b76c81ba5b9a1ab69c2e725bbe29b839b18cc3effac0c2b8b786751a5bdf0d3a00ff969a7f8857c72cd81e311647c9e699f0b2d05a9e92ee54ea403cd52b35d4ba6dd07528f03dd4b657a7891aa0b4a8f2e21853d19075fd56454abc25ef060a9150f37e755f2369e1b06873c97a876aecbb21dd6efa0804fdbd7a837670c2e36b66f95c6c4c3e1b2778814ae322d88be4a749f5c7e5719dbc53f458980a2b01400a6fc7983b6ded3f02f583fed730d785f4c95850b805f48c6eaa3077d4175b2eb2cd98b1127d2146d6addfe780111f599ae79b4edff72e1adc2fe850e4d0b1d3f78f5701750c0a6eae963682cbf91bde4938760ee82f194704ac23e2dbd5ff3e7c7cacae737ba1a25f79510b147e1a5fe212012a7a78a5ae2bcfc38cc007f5a869218ff7194487788b2cffa1cc7dcd7a7e877ebcfddedbfcb98aaeff37d350e8c0e936bedf6b74f4d9b107c2881e446954fbaeb0ee2f07b1958f68a32340cdabd13b9e63b211944583ec33e482ea873e02d9a33b78dddb9c7bd51cad4e66e21f6d6b1dfca0a4a62cba4edc8e4e04e2e44146a6b322f101c9066d6884b36caec46ac2deefaa10ca05d81e7c6dc222928de4fca603f4af2caeb89f693805f4109740fe321e1ba33dde0bf96b99a45d307f85b9e8ba9e830460b4f14e606d0dd06140bf2bede83f1033a966976fbc6d267af516fad7cada39f758206f3e1d937de7d1bed0352cab5ea164373f60fee0d862f409fabe5f36cb07533e6b948b5d0631399411fdfd49bf5feca38b176928b0299442ad9b7e18b23c9efd8a625f905e06579003e52487cfbf29ce191508e9410f2fc37d5eafa62653eed56b8965afc58cb66e28c2a97e5d80e1a712c46dbdfde3a23fb5488c6b6ab3add999d4059cc8bdab3bf6b4b269a142595356322395ded8c6f51f0ede52cf13ec8a77a8205c365e2da65a22d636f4cdfa88c35dfe214b7ae7d395a5a41968d26bfe480c78f98f3b2d7cca2cb32f439e2babbc81a0536504251ff9f31cf5801bc07bd22d1c428372e7e7e0c14878d99e42da84cfe0eed1d7e9fdbee6be9660cbcad22edb930f00c504fe0c082429395c9d20c638ff28ad4e52e599754d60896aa402f24d0340824f89a1d2301e23208650af1a6c278616908a7df954139a5a8f5ed97fe4817194b3a663b46f78c2e4b510b3456070b905a85ff25cdf35627d52f776efb2f04cf32c3011bed2812c400003876dfb230b738fb23d3099b1d6074b805777b91f75e7e5a0dd40612c22bb9c1e807e4b84e9cbb11e3c67f3869b9d2afe56f8b4dfb47d1cdc6eaf8894b9f527434c7366d6f6d157476dc08b129174b75722c48c2154f0a25c743f0212ef9f8e78ad1d4adc9251c0d2a53f02eeea6815e3bf706c79bc390f022f6ec4e746f7a2faaf65f9445be726fa701e2d2efe95d9518596cfdc91394a36805b17e787d469a168ff5d98c351c349bb8139ea181f8c712226c26c16ed33912835a334daae18e8ffdba3313a11a214172891f331367f78fc5c3b1bc4296cda06ecabf02498964144c1d5ba955386bff137e1a6b7ecd5dd8bcae0abe408639f05c26f89d8bf583e45732b2ab71cd8d74577a3f177587869d63da9cc28d5f39770d77269e173385966926ae888324901627df087cd7f38261aed3d2778bb00e9cd74f82f089327b11977b738a31853205335de44b007401bd9b98fdbe8ca49bc57bd77b3bb3ebb500519f9a108d3f1f7f15d36278cacf731aab6b8bb4a8dd345c7bfdc1ef188b43177fe70e5afb5a5a683d440f89206f4e723826325661efd2c24a3513a69d12fbe617a52874142a8e6076383eaf89dbc818a95193ef2d7cbd995e68fae7e89ff106b07701c90f82ec6c2e18e69d40c06d1a66b0f143e2fa3dd4a981c6bfc39912c93a1fcd1a3a1bdce83bd8404ecb97305b74d163a28eeb70d55ba511840a88915f86b68844764c4fbe939b291372fdeca1529870ecf86a61a920a43ee747411388daed031aec217af5e46ea00f4639d7c1882ed04ebf2c2df157166bd0f7cc94f46512885c9815dd9b7d5ce581d866b14a0e9893520cd0d21d4439875a118366acd863a16006f8b42264f6727b6ade8042e5cd34440489a13eaf248c685278c15dc1def7c107b161ad215ab67d74604a02ee52b60919a3a83f60db0e14ee6b18b2c167ddeb75541254e37666ebf97999647353ad4ef704090e6df0d5ba535d48309498a9d3da15f87159fce7cf6cf80b169482e0bb82e13ee37b5ef6967d32a65d007f0599bc41a5dc6bc5a05fbfe75e902f30caeab8447920f7dc39ef56aa6cc1ff2bad077a6f00b78d3e93e63ad2e42e5c7021a07eebc412f3526a7c90a21797f22c9ce31bf78ac58ed5f4c156b663c95a2ddd7bcb2c220b8d89e166b8723c5d2b6d3a3ca90a0c3521e8431e16b9673e56c87ee1c91cf4d20a422aac232dfacb547e1db904594225ec9bf8e52c3deb9cb9d2162e0551796e4b58a3c3d430be15414cec044835ad296fc19257dceeb3409fa06585b6f94b74f19b10234740e5f2c791d9d00d2d6c4ee208991a83cc2d87107db14e4d687531b7216f9558e55b0d2742c855324655ace039528137b6c3bdd787e365bf61caedf1e6001625fa4988032fdf96c27ba60f31464939beb0281e0d1a8254cb72cb19693bd00ba3a721148b26799208f218dc5a30fcee78a37912b3e054fc783dbccded56a3f7ad4f2990e20b36f80ea080969ebc20736c1e582de7749e1e58bb93cb1629589a5ca0c8b7d5198397f53ef671a19a903075e6ef58e6a5699964b30201d392c3f3f9c72ef2fbdba85a7ef9da61a7a43adc8ff02323e19d77a80009c17ce622aa2558f4c48ea20d8f928990a687cc7435b86b55f78ac7e4b93f84105c19668572340d43004914c5a742509641c17f65a5d0be40dbf082641a8e5eb36806a69a99bae544f9f9a432c701c048526837d244d7f86cd5a80c5accc2c0c215fc3e04c2b89897d1ce46c2b5a3b93326b9b16988f6ff8782e34c801baf2ab517c90bce5790d27c8873d917caef67154f1768efcf00b8a2a4acc223b11ec155abbe8594d63788607ba803f804b74d3fcb0a3767e30646c4c71cb4792f921f8e79ccaa62d707346e7e62f29520c0e8c409e4724a37f34e316fe119fa310ea2da8cf2bb9487e659e0e7db90f8fde7ede96bcd02b2f0b8b6f5edffd9556d498ab54f2bc99686ccd2800f041fcdefbb591d99ff568aa61d9447ccc3655755f32f71baab84d8a74bcb1fa90cae45ae7cef3ec1813a98df9e4ee1832de2ad1cc7a07be379b0939b2e364745b5ed7006b8ff481810fb98f1204bcb74239330892633bde21ad3c7db838936fd1411a09ada95a3cbcf3a50582897631c5ed206ec8229e54b1b4043063d9dee944001fb808a4ff3c3ba3d08c6f9282e228c884e20c344753c36207837cdeebb6a943364e1dab4d7f8fcbd5becdeaf72b284a03b0f7eb25edd403ebcd00b5abdb67ab08c8fd501578c7f36273f7ca2a56dddfa8e28527bafe6d370250bdba540d69bfbb53168c8354667391875f3e531e912fd826c44a2dc710897809307e532de26326e99b519fb9018492f6430d5c81753b73b4bbbdca2718b2aa943ed63c969cbbae5085ea84bf91713cab7ae40c39fa4cddd19ec87c66be47c20686c2ba773f9de185fa8514d48e8a68347230af7fcbe7702b7fb0b6eaab0264b261c932b7ca476741f47f0072bda370ebef67046fab697cb763070e993109903c68766305fb69963eebc5bf87c0f057a24534c174c099f2c09e8012cdd0ab001528f5bc64780d4c91884b431e669065aeb504044e01be46e7e64cb7aee5ab8fdb3309b6303488b850cb68065a57b37f0e9614516208d848443c575ccceecf6fdfe8a9450b4919591506e9558bb2529d4c4126c00793f0ae89c210cb8c800dfecd85ebb21304863a0af570b9fd2566c219d428655f839ecee9e2d071f5a08d78d1ec971821b709f4334cf71ce17baffea460a7fd9508c0391fb6097f97d598f8d19bcb02b4d1501e8730ae959df6e7e40f8a4261f506239f13099f30405434f2027ac9dce736a730b3c9c33ce1d986672fa8233e2215f04fe4a0fbde95f4e95e26960ea80e94035da399c5f739b5343af84a15233f3fc5430e963397969724c0377f3cc8ff3fba07c274eab6a33beff72942b3f0e64854991bf3fb806e0d5778c47e9339e40a7b553992de495233f6e96ef6979d8fcbafa5f71d4aae993ea6218529b005619dbe0b5945369654d8f6987468e4d73bd47dbb723da768dd05bbc2e679d0f98be4e7fad692643d988001aa3e1df5622ec4b0867ca432a47a5cdc6fcd04453286c333236b86c6acc18c7749195049351c85a314dcb81903474bf57ef6b495bd83221fc200be0c49e6696fb2802ce5528b65f9ea4983fad05989f36230e35acfbd39075aadac19775cc5de59bbaeb6a07d5746e1085f687c8316a56a79bd497da4fbeb7a27916b84d6c01f74fb1bbb2a04f93a18b26b2b37ebd5533b8fe5320566ebdfe42f2c1b54147995b0c2e5919d0e107a6e5bc179d5312fc34bb61f5e26d079da4f8bf21175970e05e1541271e06c584bbd70aab1a6a7787247f1d1a9f51cb280bebc8d218fc7532b9dc591611c3c1ec8bff378f731482ccbb8fbabb2522bb0c4c1cdb5a777415186c0a45ae413e6bc73057fa057693083886b29a43c9f593ce707bf238124c6b47d5c08cf981f20ec655301ed39def9770911631fef18f01940388e10513f8b17ccd58c12fd5339116883f5ad0f9f827451ca8b8b7e8dfa32922aab129e9e98b02cef37437cbb8f4bff7207fec50aa1fae1e854ca50763ae9cda32dcafb9302d406894cc3b6923b2d18ef85b4f636ab489c41b32b0998e743708e9b38822c9e8d993b65c4cf2372b7d63e9db48b99758197beeb53f98f1dd592ee6a4c6482226f231948e39d9d851a97339eacd4ba79fcebf492af5c20b78cd9aadeeb696769d684005885904cf50a985c85e8fb4b647423791054a8bc0163460537a9bf609adf7537752a8ee0defa00b79fbc224b073c9d78ddb63998f276fb4430fcdf01634d070000c4456a571e775d1fbeb816d4b2db857edc34cfd787c198f9f2d12c62d00ea555bc4ec8f3e1ee6802737a6afbac9b7e12cdb110d83c0780d2c4309bc71974c90eee5dc86dbc029540d4e525a7ba033d4d8f17aec80e4e88412ce6d3c0ec07c934d9861957f49514b5e8a78016555fdb98f07affa497f3f31b609d455d35de08e2915892194d4e25e21a20708eb13b63fe9c1dfaaa41152ba941761f2adabf0def7bd3ddfb19d62d1ab3ce690b179efce710f97d96dc750698ff2324efb1792f7e92ceac16266c9e93ef9fd73753c898301e49914a080fb63e0a16c626ba713de0e890a9e1aef1b7c22262676eca573db5bff217c6c11749f64a1e35211dce70514204deaf85901189e881ba2d71841c6ff8ba848b270f197155719bcf60536e77ce488d7bc45945b62a2bb5b485c68cdbff81807e48b8b1adea3bdc2f96188f76173d2bc08539585bff0c5486927524add28bb2a1bdaab2aef3b5982ee2bd5840ec9fda6d376598e169c0d4f32da38591b263997c078b369ec9eed3cbe26710f1e261fd3f8fc7865c4d1dadb9c7f2c12e675753658a944aeec2477e3c5334619b6f53077ea19d7010189d29aa3e28175151248abda09b8d204fdc677b52ec6ccda15bb8e404a8c426cb5988e7ffee424f06ccad2df9d4004e492ad4b147743d96dfeeb1ad2b8ddff66b1427db6d1ff69089f65f5ac09c701cddfa1cbdf3497202b62e14b440575a402587e4c4bad247b2eb249e9e82dc95410f207cf566d212b4c0b7a70cffdb48971653e64b42ec70b0eeab84f797115ed60196a55e8a5baa663853cb0827594b0a86b9500d5b25370e861511adf694de1000911aac3af253bb95fc89a31f0b66be2c68e1a3da1a551cf93d3390d36312a0d316e2ef9ac37a750cd510b55faf3c679f1478047623c1506507c4b20dbc1dea1d0c67179858acbf89df1d101257f763c0640b1b4fb5c62e81d6b322f9deedc14ae328518ed89cf9c11d69d909a701550d242af51119cfe2ba0bcc2123a7974cb06eebcbf67835e3689418abd67f28f1a02feeac2bada8ca6d7d741a2e20e0c169129e3f55b2ad68d5bbe33af9ba32d9f70afced44ff4f179a3bb6833244a0074d130e64a7a729dc246269bff6d4ae5a980de8efed3c24ed84a47bf6f604016ebea9e6133943c4741d50068b2e4e41f9293e94ba223c9e7b4bd76980d122600b5c469ee5771a6bc699449829f4a3cf0f12b6a35d7238190a85da603eeee0575d7e568410a8119292009e0e7620cd5fee8eb4f8c15d499817f646cc4a38f2870b2d97c004b0961a9408363303289e160eb155263a2e20aa6b757a29d6a341465b878d0df9b2d0f3d92a6de3a19aa2622a9a458b0201b2e1a8383aa02fe609bbd94f871f470cedbfb52aa6ffa7ba9ea6826498f9c1fab174c4b3d579c8f5ffd4bb0e5ead72b70e05d8babbfda3cb8928ec6825631f575da20013963a1089cbf535e73e7672157fd61a9ba26fa18330f7b1b4dd6d78a63d302e5caca40d5f260cafce16125c21c7a006fa991a9d694559450ff14c05f6386fb374a3c5008aeb7be585d54e6387cb8b42fc59b5dfc94e30f163f6aa630c5cf5a0eb90fc8655ac1d93f4336e7189288fde928433cf972dc2059ffcaf0658efdcc4495fe9240a691f85d61c564ac509638429a6cdcfe8930b1d30932bb84457391c7e0c5c076d5a725274295d0694c7bd35c43b400694e296950a9e38262e7f8dbc163c52c19a1be4d303454a59f2499c4e9528abf3922d1894bf0bd5c6278aae15c20a63927290539ac1385dc22283be4b636bfc199abf25707009a8e5838438dbdf59ec2a088700c07f1c242d9e51cc4c0a84944dc9814e2de885ef6144581599d557f4de9831338d74cc387bacf28365d1b0bd9728e407523664535deb70d0d2e43a71d948d10f0c79f55d9687bef5be387751de2536c4e44202000caeb9bf7aab2eca6d14a9fc4c2133ab6300166cce8dac5ab493fc1faedca99bcc74a4c5285add0455d41b31f49007ff102df50d12c8119faab49252052cf1c9f25e221ac008c6b4496e6a772a3d4cec9d09aaeab9035cc914bbc4c01c7011b9e80315a58146d391b44ff28e1d8f606b43be41a430d1d8e3df5ee05d6e24b9f44d461b4a4b9e8bd181541be8f73ed4c1255d688f835f230d6933efbdded80cee0e86855f47bbec173eb0118e2c86d122685b862ff7e5b228fd7e0f9072635cca88d4b891cde29b7f5b4e8512765c0cd0520e80dfe8ee402e2a92f0d8b3def34819af74cbfdd6e06d660fbae4a96486743206005af60888e2aeac5fcab5765ee7b24c388fb9aa0761f8ad88f64f860213be2283ea54365382888e452f01ef5de8aeb83ac7245b49639fccab1133b133f6221dfb1ae4ed680f1fac930c8cfab4f396dc54eb5b439e35cfb04be015032c510abe37bc4f60226723b02dd8afe7bab56ead5331259227c6656f5cd5ccc502c266986bd1c8cca1dc345dce4b8f478c14121565375417d170dc9b6cd764f39af0d51bf006441f340b480e4dbd1184be574aa187cc4d8470893da74906a1531c988f6bea9d1d93480f2f66de4fdc6f286034e46ff136c7523b1f1d2547a8f6f4b16825941ccc4727fe614bf6c9f99adeacbd403b5b8ff7693ebe823c1c108b887a18609a8c53384186580b20858d5c18048d8d9a93ccfcff160e544be67129d3881c120cdb23b4be922e84e21017a66831096d54fd1f6859f40c5acfe0a4643aebfe4a0f839457c0c17125a04a55e604140a991974bf0c8c795250e3d6cd8f292fbdc43dd2256c50e64a9e22e7f39959b0e579e9d0cfefe7713857df4bac0b9fd1274fa2d85d2fe5ed41ce5288d1da9881535b1ab3a640cce9fb91b2aebaa96026e5cda951d8846660645e01cc909710c27271700617c58599a43da6d1f4e3c5aa9a53c138fee66a3e4333a0b6ac193ca91b2cbb3037f367d23882a39f6eea1dffe7965e23daf02234c65fbbcc0b832b877c0569eca487eb49371683e528a9520c582f73bc86aca57ef56d9e041a079eaf68670a16dd931f91d00be81cbfdd5853ca9b8df9a1d195848bd909e32ff515bb63447151d1e40eb85626ec496b3a797fd8e66a353515e30b3fa6a3e0c953a6349b425c1a513b93178dbd62419a983544f2821edc6396c69a238e43772fcad253f59227b6f781053c8721047482735fd7a43b266c0bb8a4d8c009c2fcbca4aa202e0a847fdb294ec15be4ef301be9037483c82563b883a5c59cf21abf1025281f7b35f20094af6dd10114ac141efc164b4e36ffa0dda1dc6b14e51c0e483ec75ee74c2cdea64b7ce672956a214aaa7cb4f4f5107579a43f7a9826b902af3f78c442ab7a4cd085b1b1202cb5766b1ec0ef7e816d45f430a60c4e068caf4d8cf44ec181714701e6d808680674c23d698038d8be88d29337ad2c3d797a01e4720ebac2ac7e2962dcf59c0368cc4ef83000c100e842a550d0f89885738caa5121523d1d86317c015e4bb2bf16960dcc14c51f7d2eb8d499dba80769c6cd0e55c4c7d74f4e90b034c1e75cbfdc8d7a95eda4276202e3dbbf9d14f7fdd7d0a30a8f09b91f209b22b1db6b64f1307e07bba701a5eea0a8166d11823b2de41a71986f67c585a98f1659d1b97c79025bd145adf542f398b94db3ecb7eb8f8593840a434ec627c765958b64e278a7922e4679ea4948e303dd7ebc4c3f5dab1b6ffc573ff6db662639e10f6a1766bec2e4444bed8dbd0b6b536953e6b22eae7efdbcb038c57e4b05f3b8f5c0fc2cf0118156153ce7df394166892af6c570d4de800297cdf1b1bb94f02ec59ed7721dff40f65121b6b4ded6f36b4db3dd307b95b7ca39e5a7847343ec67c1cf3fd1406b1b9176a7a0d5917dec567860099dcf45187d2fbcfa63ece59a71dc466a6291a92d44196c334689e0702bebff99421046a60a82b3db25280c5dc007b69421fc82a4e72dd6b078e8eee75ed1e513d9dc1fa0d36302b723260fc882b1a4cf5c8a457b1691cbe1362c14dc96143b34daa2b81d0b220e678e19548e129fd195ea53f479e807873f05a158c07ee1478ddc6a13510075ee457ff8988029e55529388703a81e78c72fee269c5ac3af3a4b7badbc26151387cfa81010d62fe6fd0ff43ee17e7a36c89f92316f560f152b03b66c6f81a953a19feb0696fe1eeb92d0e9ede899deab7dd6fa76be0ab5cbd7ba0931d7c7905c21a2e8dfab91fddeb77870c882fc5b634a577251cfc4269adc21a3835c5f6d2b52767f038ccd0aee015dd612f64228303bade510d9ad95fa9b86c7f6adbcc5a2038bd2ce275a51d2a5cbdb4bf4d99276f049ddad5b32d560eba0c48908a5ba042166eb172225c8e8f47bb76e871f5b37d1cf7a051d365a7f331e681ec7d65a58916943283f51066529586975d309ee4963cbc80e7c6e553c1faefadd873e755df422851327bd78b63d2edc8d20efa06babc87557bb6b6f5e51e74e15a4d54f5b07798c7878964745abfef50a806ae5c6fbe39c151321a75228c7ad13b30a03ea45dd7161af317d89878d4b5e5f23e2e8e50d01308fdc51d56f262e5222db53ffd5b120b07aeeaeb347ec6c489f8d289ce0e0a2924306540105680f422ab9e9bfa7d580690e075a62d2926f6953dac66dc3866c325367bff7bfd50f8243a834e95a969af568ba4f7b7306e392f0c2be162cbe4d051d2142244a1319730ae9697465712b96cd25ac44473ebe96cc6e9eb76805eb05af66a7302b515b3d9fdef4304c3267319dd660e6dc998db9aeb0ab409290eb78662dc082accba18174ada35087c57f811bd3a03f04a2b4350d17e28f663425eada2726d6e0f0f6be392f107124b03b4083c58a4cbd8de72e57c0c86018cadb5b68c4d734f8f9538d42d4c43c9878b5d7482ab3e8b904c86e58b0c85a2bb2609cab63b49549436c7612f27e21419ed60d3a105d753639fde3f91ac2361f67f980d81df794417ed3e2344d0caaf7513101165669a61379d7e50d708e1958d4d1b537751eb7cb2fde91951566d233c05480c1d59c658da027e65e39b15fd2e992ceb933b320bff6f4b8f966ae018f658030be8e0d9657e6381309c06d0eff6394d94f1601a92779cf0278f8aa673bc60d3f96c4646d31c9af7f4f093b1a8b3baf2d9347816d4b043206f24e5985c439e99f61ad0f68ee7a32b3d3ab1a8b314308e04e2fba109603187fb036d6dc74dc61ab9419221bda146cd628aa79a00aa015fd5ca24bb75c590bc050b83b696c3dbcc20211d8aef61c2af93b24eb95568c4b079580a98cd154132edaab95e238d0e66c61b5d3d34dc9c88f211bb644d57c6aa49d6bcafe40f3dae34272b2ce417752b4d3d940a285110d7b3459909ac20c436b30857f4e5839bbde29cc2ada0c3106d6b9791041a99a721e275253b7463184e415e37aaeda6229fca6f10d19272419e3bf46e4fa199725092faf198c829e53aea04cf70b97e0f8577313cc642723705b9fa8a956cf883f0190be4b6264151fee80910cfbba667f4442aee653b07e5d96e884bfc629ee5e904a73555c7fdd94d06c31d3ba9d201e577ebc474d9a22fd506df340d06eee39c0987d8372522539997b580750ae08e8d68685354b08da7de4097cbe78ef7be390d34630d8dc403cd103d6656b735b6cebc9be46b5648ff8e389580e07d200baed0bc853d01b198e05a50e097a9a82097b4194e967da15989d101c2ceaf67d440738295931c5c4c2a7d2615a57a28c6d2d1e119889e36442c96c56c20cbc626bc3381779ad214a25e9d4b36a74c566628d4128e6c4e631fe327f06b5fc34e7782f729d5b4c687da8ac7fe7a274c0a5403f2b56881bd85edfdedcdbb68711709f4707e307da4119602af6edf30308e9ed63491a7446d5d0037b58fb1d16d9ca62fe93c69a38549a7b33704e54d420d811b2f0b4e870d9c98e235ba836c3cd1f7b4a335dc4f96eb86139a70c942b683f4b41a2ed5325d4b2772fb545dfbb9d139201d9b1fe27a13a026f22d5f4b2b15135b760ff86e9e37536c34854f246d2539143d753e1e9603964d20e84a035d1bb5e0dd171102f0a33cf5c021dd12bccdcf73f6915e8d30ef1f2c373e5c8d3033b558ca2eab3266a1672a4cebcd0b148942ef49b310818ea418f66a72ba3c9b0223625103b6d59047669b007a83688615417f23c62d7d2c12f52c9739b7c349378626e13be731f2b1b7bbc9b463b8e991ec74b9b4b9218c2e8a55dbdf2ac5fddd1ccd3c74d2499c97654ba0025a9a3ba0be0291cb2debf23b48536e787ac5b7265f9120c1f56c51607b5a1568d0676f7071af28193b4b20aa0d017a19c97a38bbb7c7b3416691b1ded56c74ced11b094b0ece7de3def490d3011f488c61623d40064b5461475585338508095bc3bc5f39ce4948827bec6bdde570203e68c8237a86fe101cea12e3a314c4ba19ca434968a75144155d38ae833cc185007ef4f3bc7898117867c8a8435f211b9ec614e51c92de7a39ba93a0c0ceb45089502ca88d59411af04b6c954de0d1263c207c196568fd3df64c0a04fcfa573e7e55ebc23cbfa7996c1754c67c00e3f42f1a504f43ff84c9ee58d1fb10d0006b15babfc84b5fe11a6f27c2c14124dcf78f3e1ddf789626929b8122c2f578f899cc162e5f055b3d87dc4d094c610270e8d819f926c01fc63a6f3e5703ecf282501f239942563d8e93da687285419fbaf3844fc434f8b6caf7814cae8c86d0d75da03a7e1cb4e8b5e46ccefc38191c2535e8f03928039d9b220c3a9d0dc3d910992aaa6dab188d248c26eab21c84e279f3abfbe81120125544d2de39bc6c5a9ae56576db867c2d3931459c71a84cdfb7e47413e6facde27354ab20aab2883ad4ca6c60d64eefa695fbc97daf779db55c8911094e2a39bb9e43883471b7ff9cb377dd8a015aba7371c227f2b6e70a198dd16cbab039e2e0dc208d86d19fd37afba327bd1d4e450e822584c2450cb8e64be5869765439f9e56afc0899e0bbf47a556e992ce289ec5aacc98a5a5f22c9b1befcccda501411c35c4d498fe16f22448d00c5cd42df6f737d820e7539c1ec46c7a26143e528dde70c361b89214194794cbaac76d94ac88119dee248905c33e119c3a7a06d1ebfd7e082d165f44de70f66bbbbabd10908517b96b7bb7c88307ad135958597cef6933fe7a4c489ae3f81f03319363e480ebedd8de89102c014cd46797d36a4dbc4c0e46e69b1e94a41da73f0e84fa2e2723d5c58658b6458f827d3355d6fbda28e1acaefd030222a600ecf58acefeeb638fbe932a7b1ac9188ca6891d73e20e20a4bf08aa98403db3cce837d36a067a9735d4e6c779344cde2c38b009ab4575296ce879b445ce101859060dd090d74edc8ad05ef93287cb8ef6dec6d39bf4ae97a80f9b914a24370ab584ad5170bd778b79d143447c86ce12413d1272b55f7671fb43f2646ed9d3412a5748cbb92e28bc4a4b0c163a5871f76815ba3d0312236e190ab8ac8d175fb4e75b4ca1f0cea0cc05c573cd079fafdcd11bd524c0e91e09afb73d53ebd6a9097ef877a7fe886c1c64f0ca77edfe5142b67be8b5d680c21aa5de06dc9df97d4e3d1e88a8f65564d3de2fc4cb52e22ad038f7097ebf6c288c537ca49415558d04a2953408a4a446aea458447a0c943b2a16a38794b36e4f9fe1520a9f1bd9b362ff15e5b8a4aeab998f1c5e6707e2f10e9cf26654dcf965a6c38d124ad96840cbe03dd50a03aabd8d58ff2e82a65ccb0e3541ce7b3ac37ded10d9381e2b273a1b501ec204d312977ba8e02114c77b8af113c2399082e8bd6c3d953e7b7a4a17241bff35f37b128cb27916f1468d28d2dc8b204a70f25a8c7f54a23a0e019a4371ecccf450cda43f9089838d79e29998bcc18133748b41cbe11811999631994cd5c8c44caa7cb6081da549cc762ae68126cce94d3111eedf9f9bedfdf9e19f5705529e5ba58cd2a7fda91e5cb39de4881b490e752119d98e03fd02d5eefa28b43f3a36c66645c2bc5779fe6206f7fb7826c7fcee9c9fdfb182e576ea4e2f69be6f668e359aa3f959ee724fed8ee2f9afeca0154ca9fc73f70ceeef9503757ebb76d89a032da22f6c5e7e51e47042aefd5acc5c07a6279c934d21f2d3483d471585c68c3642bd2612dd67cbe16acc3c03f69213610c205cd6304c0a3961f4cfcba17277a899f1add9354e3aa7bb8739ec34301c33704cc2ea7837f669c8e11ae260dea386d7a1e88ffda72976df3ff0109e52de0697fe4bce9be7443f55b956b3f8a592e14b0c33b83042b804f883503d6f4f032b38162e918a73249f84ebc5f0f510beaaa05c5e081e33d5d34bfe307e40c5057c2a66bafef9aa71a0e7ff31f385c8eae987bb5ad70d556d13d5be37bece02087c672dfc03b444b415f13e4b8687880dc8dca4452e5b8c30420c9422a7436e1031adf0b7c4f41a94c783b2ce1c8682c123599b6a6d2cc239bd50ccf172d7ed6bd6a77ffe25445b148a44c387ae2b4fa38d0e76fee6e7fd77cfb657c11a772270dbe91142148a6902be217807ca65239c6806cc1bf142c12ca5b34fd6f85c89f8bd05b16ac5fc91ac6860dd38a8c6e88387133cfd4756330966b461a8cb744c0d991453336f4a60cefaba873b04c02269537db6f3fe08dcd1fed27a2c862dc86b788d6d3c9331643ccd77e389c5d16a2753fe0e2ef53bcf5df2ed827b86fca49ed059879e093be9d91f1c5922d7c1c4d2bdd6076c8f785de6aed30797943cf38c985796177186caf6f672921f51bcf4cbbb7fc29fdf25c6659945d4ff583b4c137db78bdc3f87df86686318d04389fbc4b518d30bf18b717cb1f776915897c56cbdbc2f725003bb9ec5d79939770926636e7bc3097edbe9c93f91c6fa9134d50934cae224573e523045e60ab65df0825f613c77b7622e9f3d3629cfae530211fd4f9aa33a73c8433a4ddbbeeda59529681f19e67c869d81935d92d1abeb7a3e3b967fa98e1ae393e7f62b93f73c15a983c294696fcb46cb5d583c555742c8aafc07defeb4c811c41dc7446400cb5572279c7b9c75956818177480cae5c8ad083cfe015786e0b0d8bdab5ef3ce5a3e85688b0bfa861150b43fe56754b508f540df5647bd8be4f0c7fc3fec0df4b43aefc6fc308c810fd066a6e4b862cb27c26f811ba407d60c9576d6ccf0665cc9112ac10b79cbf5ca978bb7e5dd6addde66ab9db6d71288c24fd877f6aaadde4f097c7da2ba7db43d1e5a13d2c21f973219abe2040e066262621ae67685997d59c10c95c2e357d20bd23d55e2132e3594f7712a799dcc56008dd6fc518bf2306486aee8d2b987eb7f340008d33565953ec4d53c46294aead303c4c3c04053d1495a622bdea1de7148c1f93bcb957ade422fefbab23fd529481c69913f51bf24807c57e1199f83f625cfaf09bb4cda90c0bc5beab4c62ec19d16775d2bcaf3022165ebebe7f35ac9cf79861bca2136125d2943ddede538cc076ec30e00f2027821b786927cb61541bce803ac61a80fb32f6a8b0a658b0b77f643c8c83be7a6932c7af29764d085327548711a983744310030b7be2421c69536e41e1a38439e3904114da32e0281ce7ee8b443ac41a22c5449de9c4f9b8052e6e5a1bb8a54c8a7b2884ae56fa2ccb780026d690fd336fda4156f528bcf75b8579e7c50d31565938335d0d6794a313920805fba890bcf3e633c1c3b708688507c77e9234c107de03e1e55be280cad7e71f265a6c93bb649273e0b75447801a74bf66e248a91920c2a11d4294bb5557d31671b8390daba19566535bb30d99e195e996643dd1a75883c8cfe2ae8ab2ac5c2d59d69b5581c4279d73d109af34196dd6424ce81dd3e68d98a4ab07a706c5d0d08d8507dc1a9181e7e9f867bfc56ee6d1cb7e32e4b9a74de40ceb675e98876596747cb25402ee1d7b957130428bf70e02fa4adbc25e455c9b7cb0c0a4ac4cb751018408025f61ab87828ef100104c9d4d523e2d6c369e3d0bd25d2f1f3c18cba35b482f9e32f6c5f5b8d11fe5b59bb40263a1aac6c45c9a0f07dbfe221409a386b03711fb317edfc3a6702c307ff035eb485c7ad29a2e7df0f0e129fb3d1a59154c164896eb741c627daa4c958897ab860b969456796e9c3185e5d1d55019bcce21f609b58e4950635837bacf76c02e7a427ef2eb3952ca563978001258e420ab603601d3f4bdcde27454325d9de1602fad21c4df95b30ec827f9f15c461251f82362d7231a4c0903937e1efb8063680a2de64b77b6e4dc0be880b091eb437b962078f144e2f2e84efb602fbfa8146cb819c5c34c1cc35584992c56586b3c146d27de89a1cecf66082b8b1a9e52738b3042915144e614832faa69b5a549749f2a60dcde95ab851019f504037a9362e6bc522c7ae72d7808723f8d5fa7d453d4930d38fd5c42a0f63d17ab908b3115a617cb057fed69af6edc9dbabe12da98c379fe75b8bb12e1d292ed22708f10110b8583f53759014c8468681dee8882ba8355fc8d2519b61defaa065a031bba01f695c72588467f3ccb32a089f1b9e2ef50ef92a9aea27ba028058c7e389b4b6dd3d109c827d7771e64000267304d9075fb552c61a527d4608fc91ec87602caa7731f2ca8036b6e8c27504270ecd309b639fec63860fd4a913461eed05c700cbacf648b7bde403f6611ca3adcceae53ed055b434ab7af83f22fe625ff6fd5bb56be0188ea97bce96a82e379bc646946349a92c2f42e9084d465a887f4b216fb576509d133844cb9a929c8e972c3dd0fcf0c0d7eceb762bd9e8c7174cfc05a7d83f5c311c6fae3c3cc54edf5084cc8fe12b34b196bed581179d8ddf6e24753b1de6137592e9b4aa34f4d19e104523f88b66a6f67375bc3c9d25fba5f7c2cb03c17c29f98e043dbb4794dc5d4352d9bc12ac1baf90ae4f3dc2f2503182200e68a5c5f6593898cae49aa80ef35b87150d922e665583869562dd61aec16d579c689cc02f1b0b511bd507e869b2902f5c8260bd783aad5bf659907992b9b3d4b1c9a79027969112b35bb30583a539942ae70ea1cbfc6a1ddbc1042c888634277fe2d260019b7b2d2303c55569e6310b3547b98a6e535fce26c344767b53c1e12dc022023fd5a5236d30ebefe8c7b25760fad60c325384010c8a188a7fe48d3af43ad9737df237e3e970e0982c391f458058f354ea9dad4e089f83ad1722b28f0cb1a465a443ca2a9350172d38c919a975c3b174cae8c5f2f43852a9589892578f122eeb02acf112ceb5aa63e058e1cf6b9ba9840a9bd9118bd04178ca06e688b4307da14d76d1a67679365beb35d800fd02f73ead9357c2446bafec606d4e7b57f334e2f12ddf6af322fa1676d25dc6a04aa0da50d1de12def527fe73fbd42bdd17a12c850003f236c4ae3a1e5a4efeaa384b142d8d06e7085483af9343b256754b4b5d442c6dde70c74c606e772b6f25aff7fdaf155256f34be054deb4a48740af710000bbc6b79c628443cbbcf2035f6ad1e9db946011b0b9f8752b0d2ad1e5cab288ed79827ec3193e8847a17686460a0dfbad5cbb868f586b0b2a3b25453677766d32dcfe886a1a64908ebaea4bda1832f01aad657349f59a66cd23c9c8315f4ef008eef9f81c658dfc7e416fd2af0e5583684367c5c08e194f1b87b3a66a9a30af84453bf64f2ee5d9acb596f7f956dd44fd2bd9c93bb28d5a1a4baf42ad59ac473172aa83b0a0d881d12a029f5dc1389ddf50126ec0d6e7a29e71a497660e889ac8c0a193678d1b5b41d973c75ef6014652ec481ba50e0997055f9db557ff5d48b74fc62e10b1269b221fa21174e617c6f317e044c8c7c8fd115504831e579d348174aaed6730ec38024e753a4c8ced2aa222bac40886fc7c30818d3b92b56c5055805ab79c05be53fa4ee116a4059bacab0af8ac8de5c30ea0b519e7a0c732966ec0a7859f49e6986ca35f82555b057e77aac3bfa9d8be60fc59409b642fbc6fedb94a9ab2945fd4c87b12503c6b396d65074e34c29903d7905ad472199109a3a0d148e3ce2889f1dc5e40cad0aebfa1d56470a403ad1af23bb471fbcb3c2d208cc21bd6130260c38a4870ae1114bfa4b89e8ca79160da31824e1f2b603d248b26ba74135c07daa40c1826a87a3f462f845d70cfd406e2e7ceee0d4a5a7c7942ae6d4ca997b2a8bc91c00ea5e56c5d46b8ab06f44cb2c9088221c5dc3e2447ba55cb824387121c2f013f756ff08e8a4d6ee785cc5e8d902355adc26eab1b3573bf3ffbe4aebb7e4960f48b6019b0808b6224ae70ae2b843fc787ac2bd8dd297b35c4ab055f8399fb1f1dca36d6e23e4e622e8e558fc2e4ab23c8e5ff06867ac72bc6a9944866c9f934d277d3e3746c1b28ae49649ecb9e80ae7f32b399658ceb3179f25154fb8e413e1354aafa43d83ac3221317e1e05e5a4ba3c3ff8a2f06183e2da45a2fcfb668d2624c63ab15166deee1fcf052cfabead1a059937ac665871aaa65a28f07d91c0ae4c032c803e563eae9436a3bedfbc9fccc13a491c2e5629b1cab195a7062103220dad0fd45a33269842d65e4d68a8e04186a58eab3e19721e4349dd74e1a5bc264bce2adffdbbaef135214e9815117014889dfda36750cdcdeb295e31a53a4d0af83b9d8c45e718859e4333eb63326a2de15fb38317638e18731859e04b4410585dbc9edcf22e685c76e96bb522fabc87537b8c3a0e1b14e3b682e2d40c681ae22c84606a929e7cbd015e8ca74fd66b93186dff915adef2e774bd99f6266532d7596c944d5b78347151802006b049afc698ea7394b04b79bc61fc5b31917d8f8542157274ac69556fd24d7fa940787e41140408e50e1a26df4b9d2290fe9f7d8d2c69488ba50b788e2026381523417e41f316e15291b62110627029b1d588911b9f32d7360fa32e1fe0ae0354898b20250d185ac42cf7749e924ddc70c230b8a949e0f6efe2c0fa2208dd25c9f29d57d111b623121aeac48b38344be5121ba97c7ecaa29483615151a6693a102845e0b9e55b11ae3587c8b15a3bacceac7fd910cc5949c55b3bed876fc50a9ad4fa45d114cb730b012ca490b9cb62e640394a3f925279d759b2b81315dd7847e3c1b09a54af8c189308e6e2d2c00a3261641300c648ab033579dafdf9b66fc7f5e34b6011524c0fbd040275932b3f067ce322f1d285bb8fe26ea0515f94d11c73dd94036567a7afd0f5b47391c53a1ef47f21920ce6d680e0935f37080412f425a370a9c71c631e5ee0a98af6fbf519a00977ff2211d77db1e04fcbbdc5af721bcb435817dfecbd861ef7c50158d82acb7a42853940d8115aa234c041e4785596247b27b549b2e4c79d17da87d3182d16d428f17806d63a5f4a87534e02ad3a4d8d7c15ba9425880a37ec987513b2c216eece8febacf554c972b66bdff1880bc3ae3262e4530dc9cb2df4690a9280c9454900900feee4ea19612f52d3f66781f72a3534aefc1bbad320e2054b10c03aecae7d68cc767a032f1acfdf76320a796b2842db7675bdecbf7b37e4eb8bb3778b29a2a0f0238437bd6c0b82875c3261dbdd45114ff9bd01562503bd9832ca38e0f3fdc53c8f629071d21941d921250cb2d2388109aabaeac04ae0a893fcb2b840b5a3e55460e08b40200cafe2d00cd3892025a15d7914fb243de80e44acb8c1c4dd1c7a7de825381ff3b2393c44f03ba96168e1f061c72e404e463f7db98c085ddf347a9ca9831b3082e06ed9ef5aba4e62fe6d9900b290836acae265b5945b7084240e5e4dfbdfab7828794fb53a3ae1eae7b4c383d6d465ccf50fb8405e2cafa1ee1ee5572ed83ad77e8c32fb81f083e459454b3e6afc9acf75d35983fba17e5a3893e037fc3bb93a8020a240412794862ead78462142650a2899121aaa343037708381d685c5da6eed9681027bbec56cbb9b75defee364d4f4f9c889569e601d634c1b2befe62b10531b5b7ec6956044ddd69d7ce7c2b8019b4e0adf5db36e05b7a9920fc00c3470d6c4ad6947f52662d1488df3e404563cc054d85f76d9a65c8f259d4c73576c150d38ecc85c70a0e252b595843bc5663bc241fe504fc8cb4e078a5337071f3df1b6070a3f012c8ccb52375c96760124aac0900ae7aaf3254de8412da8461c838838b91397c814dd0281e4a6f1f1dd4de3d707a39edb5f297f69d0bd1646d7b078df5ec9ebcecb178daf0a862b78a1ace6b11555f7bed6321b19ce58a4667aae4be894e5eba30d469db7f64e162f814d7d80ed00d73fdb3949fe42a6d0d69e70c18f7db67c097a23c735821d4c9b0e9ca0520678b47282a70d548888906b8f01f3cb8069f07fdff8cf21b24e5e42df82ef9cfef3f9c69832c786c87f52a36954a8533f41b3a7c62fafa661f8360c8aa7d07fa3c43383c30a20bb1b366c978afec8d6e791b34c568b37e4e0c566ff9390952e281b23f2063689f8ff06195bc3c3d3aa7f57023aebc47e621230e0003e7dcac69e261271550261eb07f7d756c47b79a5da7d703e85c630280b71e733bc8bedf8127cedcc5bd7c31d358fdb860fa3870df8c31e2e0df5d2511356029f792fb065b48bf7ee7828cae1234ebac626887fb6f82bdc02aac226f25b88a3616fd22683b0d5ffa1cb95d6085faff98716147f35786c952db88efdaff0bf1015595ababd050a5342ce400b03fb9c12c7bb23d1ad1fb6cd74360216c6d15375dbd3a3351007ab2400db25f834ba6752ce1479e212443f3d9ba989d15e489960f83b987fd80d3cc89750fd90ca7b3cfc27471f7e38734fb82d1638a8415716c6987ed6941494939cb3e2ec0e88617c26fb1e21d7c87bee813751ae6ef765a7fcc301f23cd3f3ad8a87e736ea47db70a1f631438c8fab066768cfee2b69ba3c5c477eca90ca55ff8f5a21a36c3c6813d284811ec0f082806147e5ef62414491848c25fe43fe9fb771fa42396bf624a85f7a4bc9de2320adaa6a41cede35f36d399f950687fda0ef80624d7a915ca3aa4f9b07c31efc0c1a2cf9f4aabb375a890b858c5fea67e7e01e9cbc3bcca0af0ae42f9137ecc010d49a2b0a0c014afb76e8b78edbc650e04e50ee78beefd9934e0733abd9c2df7d8ee43130b45ad4385a3def1a84fe04ee125c264f11cf421ff7b0e34309623e46bdd8e6708e10791791ff3d870799e3231c22d1044f6acd57a82e8b157c4d141ff1045fa8ed4a4ab0b3d2c7989ed0e6e2fa16778efd5653d8bcc409d674c9539d082d68ec3b2468310d66653df64e9999bda139d9385211bdbd0267d8e6545850d2df607f47a8726aa2f9491b12684ec24aebec843e49d2f7edc1adabad99c0aa1f6af141c3836b1eec524f08f30d1bcf5f8f75e225371e7153f8e3a4bbbbe9dbc6b5571f4759e24bd4084c41b987a177a1b756457065b8c38c0e48606e8ca9b91051e28b7541a788f1820a3437d888b2250b2bf773ea0789d21fe7175ff603c29604e04007dfffad7549200b98bde0809a34ebadd5b61a85df34d12b80eee0f1c3aa0de0e3feb8631001e9e6673461b0e0e8484f90ef50d0bf3f97d42da04d58edf88ad918fdd6bbe4b94fcf7d95f34dfe4a76fe073af76d2f1f3c358a7e7c2b70571094d4a56a352a3a53829ba5dcb4401f0489c4be5104c2f94ef686e857cd84afc1f8defd79672f8df4434f55af9d1813b6e9e510a8a0d46665794a6dff67e8aade3880cfe36e99a3387428e4dc5c8037cf483dc6bf9a56e298a104a51ba0cb0827f9116f868dfccc262d9ad10ce8e26aeeccdc1cf8560814630491caf460c0edc6c36961d6381ac906a5cea972fdd9eb9ac7144b38af39455131864e208f9309b89e7f69d84e2c3a47340ccdc56ef9e9f5c156919b6f56429c41d652e2f17f039a12d11ebfb5e0719bc906a1f4530e99250e8c2d9f490df4f91ccdb2ca1ed0f2a0ee547deebecb2bc5031dc8d78f315f5f579870fc44b9e4ccb3b8055468009434d700d952138f01320205f8c370757bcb338b27e6a6b4d07dbf459fa29013f67ecd0e75450cd52493d5799691c6503d2046a2ea24ec061eea37d54bcb82245c881f96d527c9a64fd7cac0ef6e87d10f34f1c39bbceb7c9be3c8a5d862c6a548012fc4ced81ee0b17651fd29d25d4f0491cc4e1649ea5f63089703cd86602a4b75894fe5285cc59e54edfd6403d0fa10ec727fb38fc57a28104c6365b05a5beae220b47e3a1c6518812bac76488786b2d2af641c5fc5297a5963daadb628f46e4982de2b5a769ad28cccb3df845ea573622ffd8cdbb656fbe439e6c94ad60bfd2c472b20e91b133e8a26c222e65de226556932c195fb61926add60ed33cc9a5336970d506960cbec88893b624bf20204d3bdf224cf6e1327a98155245dfd6d405336a01c17d654733d5ab3f1bb7e4342e8923cb909d5df21ce630e1603aadebb2082d9afdd70795d9301dc07f0f991455e36752657f25302fca4ff547257092f109b4a207ad32653d5c273f3b740b347b1cbf2c302e30612ecef8b8f2a94f1188379a5f514e921804f6d2378a7a5bbad8b3e12263f030961ce6a9785db1fe2ff960fef796bad70101416cb3d9202eb57365ee3a1bfa3f5024bf3d62b7feff5e82cbe0e0bfd0808f4d4dcfbab8237e541f8da59cf99e324bc3eaebf236132830c80324f64fbc655f0dbff86cad40323cd1c3439b1df014baef56807e0e24b242112715b2e27ff5a54ef79fe169f7e2f2e616ad138b2e06e4681080697f76668d3b71639d4bf11b21ffcecc509f8a6a195dc3cbe5b0a5e6ceb4580f4a4259c47b5f13da7239250edd68c35f982f5b5af2c463b8892f0c8d499896e7f8307b75b27b7d87a7875d16640ffde727d34e580815f351ebf16e99568729878e74ae83de92ea50b5fc31a18440b3be822b7bfeff0310fec5cb570f8875313c4604eb28d7026a0e97459aaef060086d98a6ee2fdf34ae8f533f0e98e950284cbd7d9b1604c7a6f2d5ff44bf46f41d6d3c6f71ba2220830abd642e9a74d2d831c1775e881cde01d62a96c06e9fddf14a3fd749a0dc9801365acb02f0a799aec61428225ec20a9e73997c839d8cdc363a69bf25bbf14fa68f3ade945a48375348315484797b1275ce3bcf1cf92ad993361234c45dbd2260f4fde12db4b33db7de8595d6285d87189eefcd08de10dd5bc850fa6f7b88cc85cd386e1c4d9e562ab5c630c6d86f01a1e2f2d091a0a7e07f8970f24abdbb8acb0fa71512901ceeb1ecde83b6ce527baa24388e1dc380b02cc0c93dc22fa03d655c262a4b09bd402f46399171fc2558a3aefef3792e9076c1b0342c0801616b1f641f9fd9ce9d56264027f2301438639b0e74313357be2739560f048e2ac5d4888976e9b7edf9c07e167ab4e7957c3b39492b9ee10653db38409987ae120c29e3e2ce52c3d2c7ea58fa68d11a03db298e46c353489b0ceb9fc5074046690cc7f34b553a42060fa12e19960aa09b8ce3da030b652b136930d0c0e93c26521643ce93e4c3af878c7c40cdfec6d309acdf49ffe196be469731ab8dcd702e62ed6fed29eab8f66130d5bf630b80b7249dec690dbb0c51f7434bd75c11aa903c58b09d11c44467753302709af0dceecc8c701aebb653fc327f66eb564888f81fd139320a27523420beb1c60cc541d995fe052ffdf14f11667027ffb5fe0c46ad4f30f8893e8a32636b6313ec98fd2f19f262f13ad839647e3f49ecaf65ce10c69e80752d18a7fdc751d4d3eacc56c73eb078b80e98c1f3c215db8c10ef0e2b81db7b6326a2b7fd356a9e0eb0a6b5fd868648e08976de8c43f37f614043f64d81acf907c19f6035964d8a1f77c337c3723d88d0c631853d3a86f05df7f55665c3330d84dd0828d88129e17d8aa40bb494b8d5a0f3c17c4d19c11c6566cb5d0a87337a657662796526661da396bbef7abb225f11eca6236cc3f18c47162ba5005d8451367372567a4c16df34613d03b891fae62d64021bdc6b15bab309c6c984b8be4e83e49a07439b2cfbc1108c63653b8578e986cd9108d26d845619993e0e2c24dc292ac20e53a9123b0d1bd180559300c8cc0d2355a3d17545cf5fe1e56c15c01d1fc44d067a89b6a59a1cfcf0ef2567241bd2d00c71bcb38138a4b45545bd36f0c997609fc85877c5d84d65dc3d4bac24e581ca9f613f56255f7b0639085308a5695b88e144886bc7e7c503c69d1f977863ce2557097d28be36650d25af4c4005d1bd3365f3ba9cf8103e65be4e86a624aca68624b4dce5b312f291de5df77511f6babc36631c76f19bd09faa179ca9e7da2f2f68d981792150f027bbe01733ae05a61597bc570db52bcd149966d690428517c6add8fa8e68841bce3945f2c07f3503d083723ee36ecd73a1c729e7cba84290701352147ebbe1b82bf5f34c4d6057615d73547890e7cf51f96dae7a9ac8bf0a40f8480488a2e946d9f2130d8f805b4b29299020029f79d9ac324275709f4046526be8fb379fbe9e948106eedba19a86d692f9b46ab10c8b90b6dcd3563d132a10c8c1912a26b402f374d3e35cb12d0a0dbd2f7fe2e08edcf0237ac530806b4399a50200c5f0706e09a1ea7b0885acf54caeeae3ca5cc23ded78a8316910add2401f24e4b3be625bad3cbd145214b1399678b8ea3117028023e0a53c6cdaca72b2a22ea4ead5a87b7fa8e1c6b7bec0d2bb1544df143172925768a806c56778fbdf4e93b833cf3307332cdc9eb2e194c91d93d9f9c97f5488d160e4edfb36fc6dca2be6e799553045f28cccdc139a8a11a995fff7715310c70d5b7e58bb46829838ddf7ac1b6bccfd392f220c4cfd0d90237fd68da4c36561cae2d0dde1e0618225dc7ccb2833eae7b937857277d11f2cf05d78bc29ee2c8e314cf313718b4eea092b437f0568d6180e7169e11cfad5217131c1c7cbc37da447c8dcf08a06082aca5251ab9f33a0ff62d28337bef4fc3c012690f0d6b05db065892fb24c224393673af83a30ac630bce4aef3df4546548aef67d09d2ff4d4f839b111e6c1184fa587d6411dda9ac3d731405f0acdaf6fa0e9f74f381e2b81e8527600fbe783cafaf9c79a4cfa647c3f7c983e2e06f155bd78819ddbfb30c4b5a194d655e8d4a41cf426a7aea59f8e3487cde2eebb2965ef8439199bcad3a681497c75769cfea464b19bb4c3b182e6721e5d375ce4165fda92fac5615bf610bd8870eb3002f7a356f28ff361d6fc4dbb7d2f430b195e0960d93eeafdc1e74a9f4cfea3748e07d70c90cffe5d6df5da9e5827bc7477ecfdb1a91b20d9bf187907646bdaab59e442bd7455cf2ca4cb79722a5abe344a2740612c2b285b74325b6a1ad8593ad19d266c8a36a236e04813c6cea3a135bf8fd3399c66b82530e149b470d91f0a93bbf8bf815e86c3950aed0c2bef52aff9ac16fc4174be595c767489c2dba7400ee1e81875aec76e94ab0c2221d4528824219ebac7c4ce15fe3a09d8f7ba8cf55edeb8b08bc99a9497b4f38797edc5a397cea3ba19e3baaf317e61d80ee3ce2e53bca09253ff6a3ad2d60e4c312d4cb1a5483664033b376c8b7f1f7f83bef921687f92e969126e1755444ed37e359be5ac79ea0d88b8f7ebc384490c9e47a06e3c83b68c5d00a17bf4894fca0edbcc177a818386e357e6de8748ed30755d83f789edf7155a0df5646d44ab3324009c2fe8284fcc24e32a4411c720294fe7cf872c598dc7b0bfb5e0fb0d8438bc6c5ba097b218ed1ab6b611d9b971e8b99b3eef3d9924e89e1878ca97d40caf4617569e08a230357ffa68c67154c62c201ba42e33b896884e88636c11d3851d93bcf280c90ab52b8cf4b3674fdadbf6bff0d49b331587ad43efe13d59f0ab20f101ffc36676c3fdefcb500b1ed02464be3303a6a8bd88ab588bb139469e53d0298bdc436c82cc86cfdee884c8686ab2d01283d8f7f529136ba145a61f78eaeea67ae1e419696f52682c04c385f6bd9015eea6447c59deea94d86ef8f60e20a3ce7e811f357ab6a6885ce565ef8cfbdb1a1cc5f2c9f0175f568e8c2b09c14a4c411002245860036df25e0e2fadd8576a2143b694fef465e0501c033adfb62cdad5b343fe36d1811675a969de9d3782436581d6cd8a89da2e9a59efd53ee8df57a62d581ce403e5a63f7e36806e1f2f0506675737653b6d4e96795811cc51c0778a277193dc4f67a06486ba6f8336ae0f7eff51cb6bc78a84ee440ce8e9ce04f6c7b72f8643296bfa408e753f96a64042889d78ebffbce226f31fdda9890a0cfdc0daf67b7e57df05876db1071c8fadd115078d1a1066451067f36033236142b292ea068c9d4d1842905e597f37c17b33fd9c4fa29b8214fdc243aad59dd210fbc22346c83124546088b3ca08d7b574f4cb0e608a272043bc54172e8e4c5d1f9d77d29f705159c74f0037b7ca6588431e9ac856eee8dd7f3a4171e8811127365d61eefa970d7b8de8945df83d496b81afaefa4ef18817cde13749357ebf4dce359c7a75382cd1a103e6ee189eaa17da8fe07e9c07505e4da023e4c46b40f3360b0a4900330333333333333333333332bf59ff17bdab9911e0f43a4289092e4ae8864253e9d77daf01769c35f44e2f9b663094b103110010ff7c49471373f051a68e073fcf62905e94852a8740834cec048dee49ea0de9185a41938ed499ddd83cedc792b03933f46dd959964a946063e88f038eb476bd2cec6c049fe3842b98e4585101a62e0739caa31440f3d1791461838cda1759483b5456e0b1850f5d6d2b4f412add71c4a73e687b92fb016247fe5ff69eaa0452f70561531f4a45a2649c5c82a0aa0d105269ebd07153f7a73c88891b5870663cc2002a51d40830bfc4bdd4fe69c24c6fa6c81f36842ba14dff7526a686881cf156b42e3e5786d521a59e072bc8ee9513f648e2d88055ea472a2d6875d81df9e8eea2e243d5acb0a5c4edbe558df6bb5bd2a30923a3f3c4d21d7688a061538a9287def1ee84bf0694c81cb1f670e2f76f78a78a534a4c0efb746c7962fc7e83e8d28309592e4871cd875c78e0614f8207914415b72482a590d98a0860c683c81f58cbe501ec51c529a6819683881cbe951a40effce6c730c349ac045def2fea4717214e21a051a4c60731839f658a5de6fb6b151e3055ba3ce682c81cb1b19b572a43a91221a4a302d259b98856cb15424557ad6a8ebb757132149602553b465e59fac7a0c1894f182198c11831a3028a306b1315ce0821bc30516a08104b6cd55e3e4282639f328a071043e878c1eb48557be6a0da06104cebdb6e26793ae102f348ac0af07b59f5a21b1f2f5061a446053be56c63b4b9f39dad8d8d8d81a55956ba03104a62be710d1ad3253ec6908e16c91ac60a2ae5621555489663174e091afe5894610d894b13377b6edc7f588410308dc88c77a6fc9b2a5af88918512500d98a0c618347e50847229cb90d4ea2a1629426dcc9c9cc643d9051a3e60dcd423875a485fe4f8a217ec58da58b4714b1fffbc604353aeeb980355b5f18b5df0d144ff3bb9ab0bf62ecd7ab7f7d3889a0bba4bb3526464b308352fc9711c6e1b792d7a830b7e343f4d5c229855cac6c6d9d080096a8cf1c52df8683fc69ecaf669390e5bf095d382eb47deb298530bae72c8a1c4e491379f87165ce53789c894d9fd9d59b0298ee669cde9515e47165c4eb00fa9fbc43ef463c17405f5bd9ea899290f0bd63ff0eb2868ea8dd0bf8231df90577a7557f0696f297d103947bde956b0adfdb1b33efcf778b3822b4f5fef9efc432b7b159c788c11f2751c424c695530622b5175e94d05973448a5f638e6c86317156cc87d6b2175e468b73d05579971d3a2e6a0ef5153706b97ff7a43b4146c85944315cd1852ea4852f09e96b4033d7d8f2b390aa6c646ea2d3ff61c92a26023eadd6b8530147c9d76eea79cf7af5340c1597adae7bc1ba2c47c8253f11062a19248dc3dc1b7f54de95a8eb3aaa413dca9d55aafe7cd390727d8f4b431fd73de867f9b602aaf2559ce619ae037858869eff64c309ad9525cf16b350f26d8609adff7c9e3f0f512fc24dff030dbfd678878f08525b80ef3eb55dae4b1924725b8906ce5221e9460b2c4d72fc91e4bb56312fc07e192344eec9cae43125c8a39e50ec93c3cc74f24f8dcf8db1943a68df7810417c733a6ae18c5ce721ec187df3984e0631d72ee3882d5581f7d7ca37e39f61bc1a57c413cc42469a9c3308215ab8f8ab71ec729c72c82f7e8ca6ab921e3e68d22f80badf2c92caa1f6b12c147e8d3cc49b2fa8d0611fc678994b223837b901f8297eec951f63849481f6d08d6cc2b5855fa8ddf5d083eee47fb1d76d01cec26049b3c9d5574e4f697d283607264dd518be6403ad782e0f26e45c7a6413dc63a10dcefab448e1dbe6bba8060ccde839c39f6f8d2dc3fb06a5131ba59e55171fdc0bd25f31c6e78a0fe917de063fb97ad84d0f6b8e403a39176bc562c761c967b6077facef323e299877a605b733f47217daee82979606b4259580c1eb8f3fb8e0c0fe93a2f776052e7287e93d71d8e67073e69f66a7548759f3af0e1be8d644e3cf30f1d780f41f26f799787ff1c58ed8e3f453c7b743539b066eabb77da41928ee2c0558e4777520e3c7a0f6d6c6c6c10257c010726871eb6c4cad14296fec51b981c497bc85cba1ddd74c325592d22859248123dcd3adfbba7048b4955a236f081f9e60fdea6a9548740181108e3016170000361109cc1176ce036ffe247d59df4c1176be0a28b75ac106953cafc0b35f01b993c27f3abcc184f03eb1634b4647af471284143165582e50ef5aa2439dc57527f48d0aac8589fc10a1d8487d6b3187321f8c20c6ceecc163785bef04ad91865c460bf2803bf1aa34a47d559c3eb2564e0a31cdf3c5987db7b8e311c69923c92ab467473c95faf7eae6f8d2fc4c08654b01c79148f4cc1303099abff6139ca786601031f4142a7f2dcacaf912ff093af11275ada8d5a79813f3bcb9abaad8207d9d8a8aa5179f8a20b7c34e5d145a77b4c2117811a25872fb8c08717bdff22855437211b1b1b1b0a003b7cb105d63ae8d882848888a7f1063dc6185dce1830302ef8420b5b7fbed46521659031010f846177822fb2c0679d349bf4aea8f46381dffd0fb615b76d42ca15ece989d7a1af4545c50a9646a860d96d6d59252942ccba57297ffad0ba2faac087ff194adac6c5dc2fa8c0460fd39a283921e6fcc6c6d6282a626cf8620a6c47d2ca5ba1e3e9582a030622d8d83865c080061b1b991a30418d187c210536492ecffef690982f5f4481ebaecd1a2939884aa12fa040ee88edaa16c2d272a490a22a9447cf1eed27f58b27f01d44cd31068d14fd2131b2363636366000820d417ce1042e74921c6b1adb4f8f37810fbdbbd7ef30455099c0a48f1e3df958ae067b09ec8418bab692a33ce10b25b05e92111e068d3412b3b1b1b1a135aa905198f04512b80ef2e5f29c9af73f1b1b6590a182166c6c10277c81047e37e9c5686522f5d21747e023b4494f8a8e9e59fac2084c8ad1736feee8ad939c14bce0b4a0052d86295504d66264cf1a2af765778891456a025f10818fbdcf93c49c254e4e20a0a24ac01743e02f273acc93b89573b286aad50716510326a8a15f0881cf1c6686b82eae173431b2ee8b20f0e9ecaac377e96c33e00b20b0af152d2787a718effbe2078c4721d6e4b969bc102246aa20065de33460821a1b5ff860fdd82a8d485eaa600b8ed28b3df0d0551d913d2980410bae67f082dc662975c65fafc5c84a010c307066ec226d8d4ce9b2a826261d2229de84aeff1c7ae5a4200530c0400c60a0818d8d14c0a00537461931d04591c4924a881e11521a1eaa3efe48437d18528e185931a8a1980b2e846f1e4bb1ef2d3b189481300041162e18e9c9517f21ee792131b2de05301863026398710b763db859a4750d315a1f90c0c6c6c6466d61862df8d3103b267f5dfd6bb4a0b55ae0fd811bb4e0011b1be7052a388eded8d8d8c0622c00001166d482cb3fffca9039dde45206649009d80366d06216aa4529e948a219d1cc4d8386897e9cb7c39c912cd88cb593fa1e7d5aed58d486c2a2365ec185108ff24b7ecdf974056f154dca3ff77fd8be1859686394118319ada80d63051732b2271bc9275a1eabe045dbea7e4248e11d5570c1e38bb935f4c4cf9e54709f22e7c61c58486b2d2ad8287ebd1fe4088d6d9e82c9714abe26921baa29f8db4ebbf992eb81574ac107d963db8d1f5eeeed48c1b54b784ddd48b858a360db2dbe75e7c0fd4f2246168a825db5c9eb67b707668482c931dbcfce2e55f68818593028a306195a3e03146cc7dcc13394e4a91c072a78c17e823dfd8e08f78e2f45e6093e4c29e728d13b0fab61596836a0aa514585c558403ac1f8af5db579791ce4d0143083134ccc71b4971b296aa7498cac1af418302883eaecf9310e193b63135cbd6d7e092ac9a6dcd41a8584199ae0ddf2760a39b674dce021a3c5e040d6a81bccc804132dfc3fa4d7a36307134c0aabb42d8f3f52a497e0f3dda8d98666cafc2dc15da8764a0f3bc4c9b195d0245959081524755594bca0251a223b4b09b6f3c64aa1991afbc3a24d983109b6a5c30a0b69121e93046f3a1d7858da7134df921a30410d31664482ade415630831a3a4cca1356640826949e61ed53c9a452e0604f611dc5ad6a5b3cdb16a536264a999230a5142a5a45995452ccab3527c3ad4b427da8a9135060cc618831bc1844694bc5d9617b2b1b1b1810685198c60b27696de98bff2c576117c904c577dcaa397788661862238bb9c91952d76e07de32682af948e65f9b7624e16447059296e04edf0bf626ac62158ed48a3354ec68a9c1982d7f3a4df1e92445bab105cda49e4bf0e9eb12642f0914493488effd7e1c70e82f7a8738a741f955488a82038f11191cecfc8c1b31b1b1b5435ca90a1021710c435cc0804e3ea5adf195f2c26dbf60a3300c14e477feb633164774da730e30f6c7a4909bb96a8f739c8e8164460a930c30f7c85d08eb6eeb0a47f326ed01cd8d8a851da0726d685b00c397b602af1814b1f9e859ff9e4a883670c12060828607b503524b5235aa40896b2527f69e407a9735aba8891950215f855193388c10b2c605535c60c3db05db9b3b5b667b3dcf3c0e64afa38c61e4ddd0a1ed8de9cb19255456fed0e5c87377aa1d6beae2163f40c28b0b1e183197668daa3901193e7ce61d180096abc60461d6ee94a2982848a65470cabf4398e7c9122e6a6ccb931ca8881994107562a8b755d6574cee40c0c0533e6c07b9c99ded2e1468f837260829667b4751c7ed05171603d8f4551bf1c3d7e6bc02fe1c0079a6298d6e68d493b31b26a20061e00810d608002883581196f60526aaaca29ea07f1324e0a482919e9067268a56c1e39a272a66468c80e3df66e9790ee196d603fd6b69c3da70faa270bd4a82b0d98a0060f66b0818fb443c44b8f611ee74030630d9c8f7e94e25658cc08ff052ab8c00866a8818d132a1e985d85caeec606160d98a0460866a4818ffe77c94ae37176518c2c1ca38c18cc40839aed65dd16b9324a5d4cebd26688186ac522821967e0a3a8d38de699627e6e065e4b353ffaffd0a153065662c893236e774a122103d7b1461f0f2db6448fcd18031b623186da5821adba6264c1e078c18601020a6819c20c31701fb4456e8d5e795aca1c324a04c2000106c2d0a2aa615450460c54d082161c12cc0803eb714e93bc4c3ac5f6c1c09b468aa0659a391cf70b7c14ead1670eea83c89d17f8dccfa97218daed535582195de02a8739e344b888c63c17f8bd1c55713a78a764cdd8825129457496584694abb855875977ddadc5bcc00c2df061a6d89a2c48fe60e92c3029cd4d2dfee57c1e2946820003619091f52d50c10cbc48600616f8da2bcf49b24f060f22e40afcc6945692bdd42e3d428815b88e1e3978102a495448aac05b8bde8bb7f65469845081891551528eb3650f3b3305f652b2b19f3839f7076da8064c50830633a4c0e4c815d348ecdd8fdc0dc628e305fc01a2861951e06e7dcf3f65debff60956d528c2861950e0e32cf5ee89faef172df08118cce08f04fec460067f3ecf0c339ec0874193e594f2e592546e6c94613a062e2025cc7002f7a9d32177497bab765f98d104b6554b72f7e487955902c20c26f04144cb93464eef77395ac28c25f0f1c75b675f71f34e574a041a81194a6033c7b0bc8cef69838f1a30418d9f91045662aaaaeef6ff52f3612086ba610612382ff50d953cb9a36a2a88c103acd030e308bce5b768e9ddd7e9716c94a2418d2a4583330213d1af32ae75aeed78810ac4a87170a00232b6861466148109fdddf9517e9024a23a600611b8e013f6817dea9d6ec8036144200cea40181cc0401808002ecc18021f87a429c71edc4ed316831b80606ba81666088171d50f5a72e4d861f245b0b151a86a54926146109894304b1e6b3bf3ba3002fa67d1ce66d28291c8398c413b67abe42c780bf95672fe4e264959b0395e9ae01de6a0ae8c059b3983e86553dd2861c156c695e88e57b01e265d0fb4cef67705fb1962be0e66e3716c05db793e69db753b4456b0659a27e5f4c934c72ad8b2d897b552f37b54c1a79872d8e41cf3f754f096f1bcd2acd5f3820a3ea6ff0871cbb17ee5148c44fbab9ca9d5a34dc1856e0d0f5c2c7a9a94828f396306d58eba13420a3e6ae52e0fdd519951f081075ec1c4bf3e79a26027dbe3b7a8a93779a16042fee9db8a288b83828f1ed9233c573bff0413db42dc0bbad3ae2718939083c5d4b459ed0497d5f1c7891a27b84d11730e2c99eb669b6033fe76e05d6982df0f235ba8786c51592638cffb74d921c3047739561717f5c83eb24bb829a2f54ece5196c8bd2d4dccc1a312fc75f8ab390e456c725082cfaabf6ef963cbce99041f7d54fb71e6448a47127c5c51a67bdf61073991e07ca543f238079bea4082c9dde1d15d8e1fe4ff083e2587e9c47adca277049772ec318847b1b3c41bc17ebcb9e3f7daf49d3382d5f620215be838ec7b11ac5d4adf574821a4ad08d673cc514ce9463aa513c19bf8fae41cf273d588603d33f405b1548fef2118cb2bb34c2166f51a820d9596bca31ce9782178ffb4395fe767af84e03c6d4eb0ef8b3675107ca499299d831ca4101504a7b9b93b4787664a03c1c6cc51ac4754f75240b07e973e5f8ade1bca3f702b15733be8c8f0f003ffa179e820c4e8eef481cd711c22636e47c9463ef019ebe30a379536710fdc6a250f82e4c03d827ae02bb6a48f37329787796082e730d886984334050f5c0879f247cdf13a57eec0471ef4a4096e953f881d984e39b4cb0a9efc2775e0ba6248883cb394217460537b253a732a343207fe7db36bda49fa614e0efc655734ffac51ba8b03a7ed1a69e3b9e4e9e0c075ee86b0cd923eff062eee74103c8867c13537b0131d62a6715292581b180f63cacd2ce6a93336b0e5318e7ea09a83cad6c0c791c31c761d21f96ae0ff5f7298d2b98374a5818fc8cb9e3352a52c347057111deb66e59fd419989ca392aabd374eca0c6ccca9cccd99e3dc2903bf1e3d3f0711457232b0a9bf6bc74fbd5aaa31f01f327fd746ca714a2506ee723fe4204b523aa9c2c0588eeba23fd97ba402031b1eaf7e7cfa29aec717b8b4f9b3e97845881c5e607376ad69741c963abac047be7992f56bea3b5ce0c3d51072c8514ffabf057e7208d21f99bd685e0b6c4bfcd30e6274cc7e16d8c80d313bf6f813792c701e07aa1e7594e2a15760472c04ab94d1dbb40217b2a53275e6d02fa60a6ca69ceb4d3db6dd0c15782f1391909f6e333305f6fe6e42b97ff0ca4881bffed6cc21b3f2e351e0a4e3fb8fd284fe280e05f6edb35f738cd2883f814f3974c494f726759cc0871635739a5f7ddd0476d36be6a61859b34ce0e368e355c8f1275397c098ef8d9f8ffb445a09eca51043475a96c3af93c0c4ade49ad34907b9460297355bca51d588497d04b623afedf8bbe35cae11583d0dd7eb8d1253b6087cbcd9e3eda7e5ad96084c7f925aab0d79a21d02ffbfaf371a3fec0f21389691e32006818fe3c5b79437baf740e0248877ec16ba9ff2033e48770a661a526b01f0019bfdeff2b669fe487bc1e7e8e3ee0da2d9392fb890a04957fac31cbd0bfeb38434d6139ad705d77194d9cac3ea2b73c168bee051e575e052e282f7f20fc54ab3aae316fc8450399d75a81fb6e035a6348f9b6c42bc167ca7b09ea8d5d96d5ab039d0cd792224573b0b36996b78c594faa92cb89a1ceb85a44697c482edd0dfec3205891ac282cbb29d6c9a3e1ee7157cf8e87598fc73e4bb828bfbb924674ecf602b38db28d50cd92e66ace02bcd744b4724466515ec5e66eeade8e86354c1c7e579a2a2c95234157cdfe65023dc7c4a820ad6edbe3f48f7959f537053494b4f638672cf145cae1ce4c9bc68ed948289b512b572f4e96f52f0b1a34d9e92e3d8e62838ff2c9d7da73aa488828b109d39a46fe464a160c4c3df1ce9e7180705ebfa57a59f1db5f30926d56dcc75ad5d1a4f30b62b91bd11a9f14eb09139cc19b3c7ab2327d809669e39799c63496d82afc98d209afd7f4d705a9a3f77d4cd6c2698cae5edf12be5fa98e04c53a460d771b24d04c625d8e9f68e23f2e62d89c0b004db22f97fb5a963864e09605482c931d3525c2fcd0d3e25d89ad4f0d4f5d21ac749f039f98ae7b0e320d54b24c145951e0d51ed2711a92680110976f2b647e93fa7b6ac4382ef38478f4de6ab05f7118cae85966075fb1eef8ee003c9528f3f1c1bc1be6bbfe5cbd48bfe61041fc71d27f148937b85e82218eb8e24f7520875ff15c1751e3dabcc7b89d871063012c1a57a0f327aea44b38e47808108563b4aa9af94e491791c82cf9fb3c6defc8b18f1620876237e592c2bd3ff142d041bfef1e8b9476f4ad706d228000621d8d7982475a7778daf11232b07c1796976a474a5cf981623eb8c1103ab304040813068008620d8bee9cf1af1f6ef6831b26a9c61d98037369e004620d8d8716a58fb9547538701020a6c6c90c10218c0400c238001083e6bb6fa4a5a39544cf9031f7654c91fefa6f08ff981f117eb683d58c88debf581efe852c71da5d3a43b1f580d4d1afa515bd490438cac1a662f08c1c6c6ef81bb9cce2baf8f6eb01c62a4046400861ed86dbde41ed47ab8394e4300230fdc27bb1ca694cdbcdc27238d0b60e081f7bff48f5b2468f9bbb141d400c61df8a8397d0cdee6f799aa25c0b003962f5bcc1db68798f43d805107c663b26c298344741c4260d0819bac48fa795f3921a400630edc759c43bfc9b1e418626264e10ec090031f07df0bb61e73960806301883e4008c38f0ad922669598d5fe96264dd608c32e0c0795beab8c35be37e6c2902186f683f8a943753d607ba81d18997a3dd88a74162dac047e9618c9c94839c29c806c6eddac389115352770d4c921062ad44ea1d330559651c0aa8064c5003004100430ddcbfdd65bd1ccc93bf06e0021869e053dc8e2d55c7b1c76d6c78fbf1f602f0020c34f0b69a6ea93fc791f32d46d6d612c038036fb1c7b377d8d1dea78891655700c30c7c941b3ad0d4ba1b2515060828108130b0580536364c042a88c103c6704106c670810b2e0b609481b3f678ea1abd22a7bc1859859c08541083071045804106d6f244d3cd1cc7ed612e469616119441060c2a40060cc4a8a1821834195100630c8cf6df67f28888361531b24a6d6c6c6c1cf3820cdca00c1594b1b1b1b1414604c20883037f64e00121d8d88840187633f83e15d8d8d8d8d8d84011b4c09cdfd8880119698023802186bb3eb69caafa3e2646d6182aa851952000230cacc761da28f952948ea5e8000c30f0492c567d9ef43dcfbec0f5fd4f88214acee4e311c0f002ef7194e24787b1a30b561820a04018e6011108e305c7055e667083314040c30d60748149f6d1c42c1d87fc8e22461619c40a6070818d59967a1f8ea4d83b185be062908af46c5ba2b9d40217aa5ab7f34cb78320185960bd63a7c6aefd07606081abfaf032658977e039c0b8021b72e284e6bffd5002c30a7cbef6d190a35899994255e0274b5b65a8800c15d060c3000105ca5001192a10418d1a1b1bbfb121811a680830a8c05bbce8d1f143faa04b31920c2080310526ab47fccc5b51a23962649151a3063d069905c09002b76e9a3cf5a2e6b4d602c08802fb1e7a44eefe5072889f0bb4e0a0c06ed408bd29cfed2e0bd4a0c0c6c66ac004356e00c613f88f52113b5e11fffba4e09cc0c51c66bc5af1e8e3d81423abc7383380c10d6a004613f84866b9a36e95cca589915523062e3057317041043870690083097ca7c9c9aef7d437826264556df4008c25f0ef29645a757674a1a2023094c05477f4ede7a2dd625a0b5a05658cd11cd8d888810b108c24b07add3e1ede3eea123090c0862c390aabffe83498476063fa38b0607e9f2949140c23b0395393957694058c2270199631db9587c5046010819fa4a5ad95437e4ab1010c20b0b1f1c7063070cb2134414d3b553c9d9ec4c8222b004308f994d7f6c7ba5152bfb1519d002308e777ef74e754b66830f88d8d8d8d0d5a9bc1093080607938a6f14b4cf28d8d8d30404081304a8d51460c008009307ef026af5cfa8167768c82e103f2e6e497b336fc72f4c2ca69592f3d2ccff0c2cbedd67ed9533be22e7a89b993597a6841cc1a6a478dffa652418f0182bb030d5d94c673564f4d8cac303e6710860b542006191b3408c373066110c9c5da99112b248d16d1f5380795a1aa3266e0821a2d68411b2d63061978c1044a0768e082c98efce259166babc92dd8d2bfed905aa2d95d1b1be7373668d8820992f15bf76ed32e550ba652c4547d919f26850c18c440035635ea3460821a1fa0410b3662dba50e633d0bdee3681e27fb8b1272109205677b77b59552a8e82a16bcdad7848cd7f73978e080062cf8702473b68b9d5473381956afe02e9877b42a5a1fe7942bd8360b5eb1323a4be62d6841531268b4828f10a3e5e620da81c524c03458c1b4b5dbbb6dc7973f5e8c0c03041408e348e056c1df6f4e264143e5b07f1aaae03afcd0f16fa2471d98a9e0a463f33bcbbb13df50c1c64bfbe97f221ef277be461a1963cc2002649c326e00011aa760428e1bd9b73f95cb9fc10b6898c29c831c5688ceb1792019344a514c492925cb22493417eb4aafe016f3c71f88a4301aa3609365670cebbc71cb210aeeb39b2791989a13fc50f0ee4188216eb953da028a2c6874ba254929da91cd3352c75e71fdd255f4092ee4284f7f2f7298e3d83b4fb07f315b4c965a2547e95d186874828bae1ed629794e1e62c609a6fa473fe58d128bfe26b814f69eb1c32b73746a82ff6cda9b163fbacd5f2678dfca488fcaf2826698e024e62093e55beaf04e59028d4b709df343f3e7cf4a316b092e57881ff65fc84a41a75109265d82e4f59e976b9894e034279564eaca5339dc88c624f8203564f1979ced3a87185948c629a33150041a9260728584b859736e841d09c6b3a654e7597a27b83420c1e4203784c5d81f4fca79049bed530e53688cd09c3b824b4bef9b358f9a77aa115cfa8f6db7f3438c2c31c898410cb68c19c4a08c196c0019c1e4b8c314db55b3aae33416c1e6e0512be6fe8598dbc6c651d5a8ab83030d4570a9421cc91e77f6d0311b1bfa051a896043c71f871e63270fd2bfb16134d8d8301a5835810622b84dfaff61742c8bec21b8e0717c52f76511238721b89059f3935804fb3c6b542158d1d89fe38cfd71a987105c7dd25cbb79663f9a41f09ba7d3c7f96204c1796666091ec4dc5af336107cd0fcd0426693c388800736368e4003106f8b6b7e6021fd47e61ff83f8967b13a7b5caafb813da96421577efad8dd075ed532ef5d508fc3900f7c5c4f1e7b4988529dee018d98a2d1124285b985d4e8bcbe6eaf29c40e0d3d70db1dcc42aefc1b6de781891c7fd3144d2b22e18153931ca61b8dbe94531b1b687760328a44ced8a1fd68c60e9ce5889891a3cae469ac039ff4562abb6efa1a37f01a3450c19782000d3a30d19fbeeac792c75605631c326a8c018316dca0cba8516c0eac460aa5f6d9eb71d434e4c0e616adb857371e7b4e1cf8c852fd8667ae9bd4c2a12049ca5342a8ac6cc92fc78ed2b6d4f6063e62bfbfe6d1cb36961bf8c914d5c8d4c80f510f68b4815151d5fa502b8638f909d06003ef6e9aa3f44d1f3f47171168ac81af9c52745e8ddd715f1b6ae0e39c31887b9985f2fcc6c6c6c6d628b5028d34f01373ca09d805f001bfc1726465273b4d6902f482fbf83e97e5304d31a509c00b6eb37969a965176ceee4e6894aeb82eb209da40c1e7dd090ce056b952c76da74146bd2b8e0a3e5b2983937ae47fa167ca07f1bad5e532fd2b6e0c3bc8865d782959026679b2ca9c5a3053b594ffc22d47467164c88145137595eff65c17fa59e889f9ee31b0bbec3d871d66aab060b4ecfcf363d144f9157b09d238fd4a1246f64ae6042b6a05174b388df0a362cf3473bd13e0a59c1c77b6b9deed73454abe0bc2ba262a889f4a10abe3f96587e143c2e53c1ebe438674963661a352ab88b79792af24698a7e0c65282757c5193789882f598f2c77a31d9454bc1e94964fde0e178c821051bd29b4a62f2e9f85170bf2956caf2ec18140593a4dc52acce1f5342c1e4e48e24e441c174d29822f9092ec472b3541a4ff02791398c9c77828b397e20f903ab09694eb01b82bd9a787d8eeb4db019b277a45c6b82899b3d07ed172c7b6c2698a831063b91641fbb98e0b5ef5cf237f2be7b09b63ec5b57a8b7bc9b5049fa129f32a8be76c2bc14ebcce5a1ad3071aa5041b9da33fe9daa65627c1f4e6641524ac36a49260fccdadd7ede3d06624783dcbd9a2c6943a4a428237ddcef125f908eed4b4b2794e993fd0115c0ee191a257aaa3b111ec86a5c90ef7a8153282cb13a1bfa7963e5216c1affd76ac6aa1bd238a60b753aa84c825820db7cba903adf8924304ab318594af7607217708d673760f358b4ececd104c852cdd1a53e48a6c0bc1e8787c298db584606a2ac6d6edfc51a676107c0eb2554eb163c765ad2078ffe8c3cfd91ec5606d20d81077c5a3d41575aa0504f7d99356488e249bb47f60a344bb2c2ad9bf39fcc0844bb6e4fdd10736c7b9b9fe41a7f5e0032bbe7f2e493a1ecd1ed897d8e351f3efaf0736fda34fac8914953c706beb572d794f277860a37be8316367c8b17307be2fa7c81d1df5453b70b12623db7398b97d1d989c77b2a392fa1c74602db3a6667747fa9803231124e56b530d8d910353371d954f8f03a7395868640e07fe3c3d4f7589a61cfd06be423d768896fcbe7603d7ba5629f9dd0646625b45b3698d58b381cf96a333e9eb1ca25e03635652be297ee40f3530f5a59fb9f91d7aa4810fdd359dc31c3a7a2c1ab89f98d4c3de3330de29c903a96d0f5d33f0713fa7ecae1a1da70c9cef7b8829ad64605aaa62c7f531b4a963e0d53cc689292a06a6a7e207cded774fc3c079da983754bc354d3070a779a1839c32e62dbfc0a59c52b17b244f2abdc04dd65011a2e5741f5de02a56dea40fe4027b9aed6fb7f7e31cdc02ffa15cb3e6905a7cd402bb1dc1420ec42cb0e9437d07be5d35412cf09ab9a6a390b3bf04afc0f874bc3b92f51b422bb09e3cf78fa73469c22ab0a71d332c6aa6140b153897c8cf981a517d3205364296c6ddf58e1a22053e7a3bda787fd371a25160a2e3e8dbefdbc142140a9c6d4aa932e4a8ca73fa04364dee0be239818ff224ebbce671bc6b021b424d2c84799433c604b63d881fa7dd2c8fb525b031a5d879b22ec7a02981c995a6e395e86ef1d224f06799f36712adea4a91c0f4c608a9b3c3b718d22330b9827b548d314735a911180fb2c7a123d6b79216810f3af2b1ee682a7d1c44e063f0ed389fe4fcfa310426c779edfb2c781c3a0410023bb126f6afc4e8ce1320086c8c79d99176a0a53d0180c06ee826d188f8d96108f0037eed3a5e079ef17243001fb0b12ae80729a7d534bde07e3d2fbba6aaeb79c15ec550e3b93f7aeebb606def4a7c4c3cb7ae0bb6222ff4b54d75a0e782ab4f9d199d263de8b860533a4e3152505fcf6fc184985cca73181562db82d5541fa46bfed03eb6165cbd8b5eec585a706513aabaf7d33f66c16565c9e551aee49c2c58ffd0927b1cf5b162c1e43cd1bcf23d8d14165c9e1423a494e5005ec1591c89953aef6e923900577057d767619ab2a33207d08af5bf831c578eace034a57acbbe1e438babe0a2550c12cfa20aa6726dea64d7d24b4905db164357bc90b95e4105a3e68188d96775ac9c82b5cbcda6f98147513105175a123274ac1f764829b89e4c898ca9271d210597af3f34d7894e1319059317f3d652fe30f31305d367d9a1e69cacc60b053be167f9e378e3a1060abe3ff26825477610b24ff0618eb586ee38b4a73cc15404b518ecea04d391786d97eaad599c603a5f688ee38b1423b509f67b24660e5de25aa509b6a3145531fa48852a33c1eb56fce8703b9b871213bc7ff2903da939e39497e06212df0b9aa3b821a525f0d01e6525d8c9499be92379f6a00437eddefe9e8358fb24b83b6bad9ffa8d5a125c7f1027ea7dd7a891e0a398dd49d30312fcd69e87ba8aec96e3116c4e5759fffda2b4c311bc87312bcae33482899d63bdbc0b12721c46b0923d8ea3c7e11afa5904db71f4122cf557ba1c45f0217960412b4f72ea2482a9b89ba3c9ebb4d520824ffd91a6f41de44bcc21f86c89636d9f9b1a37045755d69e72fce06b1782ab142923354a9c5c1382c98bd6f1b4467ad683603b2a6257748af96a41b09a9f8334963de8d581602c25ff0ca176f6b180e063f7a41473f01c7ef60f4c8867292b7358e4ac1f98dcee761d0d66d2f681a9ff14152a7a455a3eb01eda58aae57045d53db0651eb4d4a317ed540f4c2aade974691e789b0e2c639ee01e291ef8949bcec53fee5af20e4cd48769f735b7426907d634fad57992b41c75e0fef533073979b63c1d98fc9b24738e93973e072ee8e5fdcd98f71eca818ff78278c5300e7c3c9efefe7110fb2e70e03bcee0f1063648f4286367c8b30aba817789296df288314305dbc0c796d399655709f5900d9c66ebf03c4ce33979b806563b27dd8e31598ec3500dac96986a9ebc9453c334b06569a7171a1a986ce6414f861c796667e037640fa22ba1679919f8307718ecdf635ec9cac0c71d897ee5b2d77c9181b74a9fd9e3f4e66e8d81cf712421ba5ea5db120393b394fd7594ca422a0cac68e61ed11c7fcc0a0cbc47eb61499876e87f81fb8fb207e1f9f2e65ee03b2b3bb4cc3a7c09bbc0a5b869474dc2f225e40217d3c4eed8c3ec4a116e818f3f1933b776bc8a500b7cc5da1e0fa121548459e0c3ceae8cebd729736081091551752b163aca7105de538e43c892de9d0e2b30f1e3eeb856f2eb4f15388f3fca11f69226e65081cd996f1f9b87f6963305466b4ab3fe635ded4881ddb65825a2c1eff351e03fbb876ce392cbf250e0234279278f9eb28779021f6f244dba9e9caf7102d35752ede17efe8e3781898ca93c0e19253b9a099c56cef7d5facba897c0a4c80ec1fecc3247096cab871c43ed56ba37097cab851c6e1a9aea45023f6eeea1835412913d02176a9d1e7d397bb746e043d7182d879a3c445b042e69c8714647bd6a2a11f89c6ff71739d4e773088c448999d43e4889c9010881fd50543b7b76c9901c4010d8535ffd9083b6c5710040e02db679a448d8a471003fe063520ba976d3ecc301f8800bba1751246ffa0fd20bde32779c58d1b253c20b463a0593a0162a7976c1a758519355d0ea485df05194a6cddf5e1abc5cb09e273d4c19d563f170c18e073ad691b9b7bb5bb051d5a11172f453670b36b7c53fbcaed482cb2a92b3786aca88155af0bf933992977ec75165168ce79e74f8595be25464c15ac8cbdf51b68c199558b0ad12257c73c082330f11c53d737d1ce7157cbc7ecdd08fcbf2e30aee436e0fc2727aa54f2b988e1fe75c751b2d1e56f0e1640dc9ccc3298f5f051f7adbab0797a839af0aee73dc9cfe0911fb4f051f56fe74d495266b1e156ca49945eab632d79c820f75696d732c62a531057f5695620c1afd717829d874f5d8a34d09a9765290e3382afd888e824b55b7ccd6fc3814059bf45527424c964342c1f4a40fa286dcdbcf41c1f49a7f8f8fb54efe092ef9da567bf9a66c7b824f3ee11ef27eb4b53bc1e6e8f414dbc562bf9c603f47cc5a8b314e7037c1e55ee6a6a996bcd1046f5122e7ee9a185fcd049fed5f2f4467ca9a6282aface8dcda91871d790976377a3db28f3b86a425b8fd8b39db637bff6025d88ef6bfae2edb5d9012dcbdd9c6ecaddc3993606232f7cfd197d25f24c1b4e4c8d771bc1aa712093e886892e3feef5012487092efc3d7be28e13f82f3bebc932bf22fe30846f3dee338aecdee36824b3988d0bb1e23f8dfe875d16a2d67b708367b495e799822380ff9ddee1e65ce27824d93fa5c6a29e61044b09bbbd351ea1869d52158fb8f4edb10314469d571488a112904e369952a85383d2e21d89c961e4224a64e8e41b0a213e3994df7871d82e0e3fb9d07d1a1c38e409c9b22f226092098f0f833f55d72f3ce1fd81c5d8650cdfb816fcda1a78e7e1f98ca1b62eeb154937c3e30f6b716b273fca063f6c0a798b22dc7589fc38d1ef88d57d277413b6b260f6ceee6b8e3b8e381bf8d123dc73be948bf033f29c48b139253a7dc0e9cc490561e86ed7e741dd889f71fe57a50f6371df8ca6114d31ca4adda73603aa5f68ea8d7115f39f025992e6667a470370e5cd254d135ffa411170ebcc6742f313c0cb1ec1bb8ba5c29fd2ea163d50d4cc6f81ee465de10a26d6092076952a6c829c6940d9cde7a983fa3a3cd916be023cf92a37d875a39a906de52ec28b26b9a1c9e69e026e448fb4e851ccf43032b95b2c3a0d217a37967e02c539aae081d87963c33b066e39aa31873442caf0c9cea86564fba6f493c32f041e652c9b159c814bc31701712cf73ae5fcd514e0cdc89ff75eed66b47b930f0e9cc227c3af2fc210706466dd383bc8a9232e4bec04fc8aef7a4917248ce0b9cc7a1e29f92cd62eebac04af6fdf724294a7dc70576f57f72aceafd21775b60f2762c71a4ee226ba70526daf7fbac2cf09a53a63a893f6e1916384dadb7e5315dc8b9029f3bfcefb45de68156e0730c16b67665495205bef63bae602975ea8a0aacfdbd789047fbf25360624ae530859ce3b65260cb73f8b97ac5758c02eb6d9583ce99a98602b71ddd458f26216b744fe0efbcd2836887d63881d7889903dbe9c9e5d1047e537d7eec543ded6102179d82a498c5c35f025fee23163757fa56094cceb288a8f66c258149561b224dd48e0a12d8b28fbe081d68747f04b622e78776d69b3946e0d3ae8715fdb3c37c11b8749f97d69b3dd6108189f02c518267ff7608dc5ddcc8a21d744e11027b97671337a79a9009027b6df635395baed081c0e7c9fe30e6b4007ec0a520f5d99b2e8ad502f0019762151aad9aafdf5e7095d69f5256c8109717bc47ff4842eeb415dc5d30519d921e52f08eb2ba60aa6f24be89d77e682e788d8eaab2a62c652b2e98ecc98385d4b9e3aab7e037c33cdbf22cc4d4167c4fa7ecd1e6b87fcf5a30f1241e4670dc2a5d043e8cead291460fa96a22301131b5a5eb4a1dd443603daa4ae3515d21f09319e1398c7d9eea06811df5fadd6ec953e72200084cce9d126e9336b48f801f30d137f6adf868ca1b04f880af919c2cbb4deeacf782c9619e14a21fa9a69a178c6edeebb24a962ddd057fa97bff76515db0f9a3c9949a2b574534175c7bfb478d22ea394c71c1bb985aa69ce92dd8094f9ebf25bfa7a4b660247b3dc70e7d4c23ad059fa6cf7f7214a37b50d382bf8e4ad344c71e5aa4b3e0a38d2a9ea1729cc34fca82f58ea9adc3201a3a3a63c15de6ef92aed8a776c28277bf493994e9ab27f3155c8e728839767748f939ae60520e77f42ac7a92399ad60cbde237de4ee7a29c90a56ba3f8448a1377d2a57c1e71ca5be28a15405e3b61e576d08d216ca54b01e6da8a9ce1f74e4810abe3dd3d9e6cf29ae7f0aceb743349d5e8a9237057f3bfa671d259ab4a5e052d358ce2a3df15652b0ba397b1835e646a8a3606b42d04c57e2c12b280a56cb93aedb9945b230145c8e43caea6b498358080af66ee2c7940e2125859f603bfccedde15f3cc16bf7f476868af1624a27984852f69633e4a465e10457d92ee6f4eef0b42c9be0837d9c1beb5234c1ebb8fec4f4507db592092e87e379c13bc8d03930c164b878548ff5277e5c8233c9f1bb4951ff7a4bf09b3b3dbba5b95d5f09b662a688799e59fc3e94e02da4d552329360e3448447c99a2ff996049b3f394cc12e877e6d24d89174e51d5f2a4b5148b02b5dbf63b7e9b3f908b62e8d7f18c2f2c5cf116cb4f13c4f398ec262a411dcdda40823f8380e3234a68cc871e616c1a4a66d268d2b82558d2942befb6c5513c1e62ccd71f4feb1e4484470f939a5504dab54f3109c68883192e7ab8f4443b096f386e4fc923ad51582ef38cc1c67cbd72ad511820b7edd295dc714e90c82c994cd3cde780ae91604e797432c104cda2d5d891ed584c400c1e71427348de70ffc258bec28720eab347ee02368e6cf24edeef13eb0995572c71f2f5fd4381fb88e19f524343f28b7f6c0fb5488a19f436f5a4b0f9ca5ed4de60b261d5979e0f623c79f2a2a7a280b0f5c284bea133bc68a48dd81711b8f728c943ddcadecc0a6aca11f67fb1ebbaa0e7cc8d16f90a89034e7890e5c4e4d48d7f47587cf81a9503166eabb87db7260624eaf9e249a4c3571e05a5244f030d65b04e1c04a886611a3a50f397c039b7c444b2d85dcc0b6f485fa2eb3ec618e36701a39886ac4f44a123670e117d1327a8e11ae81b5907218199375484e0d4cce71b67fa591300d7ceaca71e534b942060dec6768fe8590b3ba2231b25e705a600e0d6a6c4de000676034a5bd4d8d9272c70c6cb8f7beb82431bf0c7c4fec8a9f34d5c69081e91cd67e14d1a9fb31063ea8d3cad7996a7b31b01972583ac9b9969f3070d2f9732cd1fe7b30307133a4569407e1f9021f6ffa76b2ac20792fb031ef685e7e0edaee02fb51865f9e4829840bfcc698f951f55b602b748c581d460b7c849c59f2ddf2654c16b8d718638e8e3a46d660818bc8f4133a6adedeafc06ed65881a96d09a94752c56815f8a834c9b4b5ba3ba702e376f7ff365e914e81d7dc21e7a60f8f925260df739caed2e51c865160ef3edb448d7ab1d250e0e376cd10838b9afe04cea35b0e742db88b4ee0f58386f9c6da94b6098c644aaf9f72bff34ce0bf2a2d7fce1d25cd12d83ca9f28f5dfaa054029b36a5afbd47d524815bdf7fff9cde425091c0479bf1dd23f1e8398ec069b0f68c19ebed4c23f041d00bc9be99e216816f0bc9722574e51422b09f3f4c672d9d2e84436053d61c722015fb7245084cce98723ca9e3d0db20b0975ae2af871c00085c882e751e77982f2507f801d39b3c5afb2b4f8f3b800fb8d1faefa0bfc300bd602fb6c7cc29378f78870178c1d5e4c8318e5b8cb13b0cb00b765483a6bc1e4287ee30802eb8d469297858396f8e1d06c80563f1e350dd443a3ced30002ef810faebbf62b7e0534aab495bdf2962b6d03b78c56099d5828d1a9239e5a022e5450b26556d0cf57f1db6350bce63caa371333b4aea90059b3a4c317fb1e0e3e8f3ff26cff5a982052baeffe9e9e398fd0a36a528cdb917db5c57f0b5ad9d9347ab35690597d643f4841c73d258c1741053b6acaec92d3a56c1dda64ee7d4dfee51051f3c680e42fe380648052ff15b43ff570edfe3180015fcee27df00a760e27d10766191b939c700a6e026e97aaa14995b738e014ac1ad276bd3d2645d9f6300521c075e4933e547c1759c1e3d33e958fe45c144f5bcfdfc97a27e28b8bb4e912e3df5a60f0afec3570b0f43d48bfe13dce4150be6613cc1e41ca3e4f477183ca6136c77bcd19037e7dc184ef0a19a92eee468426e36c18490f21dcb35c1ef87bfdbe7af8e3299606d2f730571959c6382a90c397718c9efd37e0936b32e7a1ce3f66f6e09b6edffe3984c62f65482f73c2904cbebcf9e12dc0756512c87b4cd4c82c90f59cf9206cfae24b8601fef7ded48301ebe69fcd37f4f1b129cc5348f03ad1fc165288f3d8839d4aada11dc847d7bd8a1deed6d04979b9e37a464294d96115c87b5be1d4af5fab908ee2279d8a12615c1e6907247b929a55cc944f0615fbdd122a584242218bf8bb6313dfc737908eebd634ba6e0f71134046357ef393dff03b314828f3786342d413d300921f820b47322998468de20b8feda24a9a2a9bb1304d717dc7ba2831c5a7702c1e6bb4f1fc95977ba03086e62e5d97ff4af713b7fe072d884e72babd0d9f103dfff92c9d53efeb74e1f588f63a84f661d3eb01fdde5fefdb749a9b3077ea4a205c98cce161d3df0bb1539f0d4bf0ea29307d6a26d472d2dbdcd8107fef2e31c9ec7f7921c77e0cffe24e4f250cb1c3bf0122dc48e1a2b52fa75e0c53b735a2f3fb09e0eec997aca10fd1cd8cfb1e74a1de75897031fe66b85e5c83d67e2c0779cca18ec6b7c87036fb5c9c30c212dbb6fe053c769912ae63832ddc05e8a9b6ab503bdcab48149e9cf23d3fe96071bf88e58766639887e0daca61d4b5f69bd4a570313e377ce61ae5dd6d2c04928b7b10df553a1818992aa0e519f818db4ed388eae19d83eabf50e51fd915b06bec34c69e7692c5d4b063e637be69493db73e8189830abad14ea9a3b540cdcc5f18cefd69e1f0d037fb7e2818aa98ea46060d376983aae0e83f9f90526f74308f5d0728ad20bbcc40eaa92b506efc02ef095af3507aeb997825ce032ef682a8fca97c32db03951312d654a15422df0d1b575cc8d9d31c22cf081d487973d050b8c558847a9995a39e50a4c7a64d6fd673f59b1023be5665d113587a85481fb1cc4bc3197881c4205be7c920651cd2529640a4c9d485859c60f39f752e0a335c7a4d645813b3ff5f0b4cd4e1b14d8cc9bd25f70f18d790267e7df717565ed502770dad97c2fd66ea709bca5767e7654f7554ce0e3f175e9389964ca1298ac9c31fb790e3b47af042ebd6df6c7e8817524812b1bf10e32340012784921751c6b25edcb618023f0d641df69af664d87018cc09947b9639fd6f1388e018ac0755e8e834899b7c7630022f039d2f45b0fa777720c30043e7d7772c8193fbd630021f07937dd15e59edd314010d8ca314eb7b887371d0300810d9e15e2719ce378f306f8017f912362ce903107be017cc0c50f4b1ebb6596f7bde0e35451d772fc2149cf0b2e337b1ce7afde90c3ec8237cf81e4f851e8a835bae053464a69a53daed3e482abdd888ec31bdf89c10517377ac8903a78cc995bf07e399c8e93755fcad882cb93b45f531d5bf45af09ff3c73c7a9d52745af01edf390b5eba3e4821a72c915c16acd9f969eaf85173742cf84d3147d1c3538ea761c1649eb28bce3cdaf72bd8be7cd19cdeb19876059f4933630eb6d16ab782bfcca16e7994759666051733bd6d3f65588e5d051b394a8ec8618ef9b3aae02d456b0c412a527c53c1a4368dfc6c79425251c148e86cdf93f8514e4fc1a754464f71d74c4953709a6f92c7b79a3a92a560a5f2e69cf18394bf24051b4a57af1f051faa876ff9e314630c8a82cdddadfb31ec3f130ac6b737f5470e6697020a567d53d77ef6e708f9041b9ea5729424d9fd9e60f34e0e15aff246ad13fc7ee5ac3d2e1da538c1f4b7db4b5ee84db709b6637bad8bdb93a309d6b44f4255e4dc31135ce520badb44458a0c134c8cd93e7dcae8f1b8049fd5e2b58a947558823193bcfabab1e3bc128cc49883c4afe0775382ff3cc12b7ff2b88293e0e390c395ecb8352b25093e6affcd0c21b5f948b0af493c5d4b2546c84082dbff78c17df4023ce2fcebb18e60c4367fbb63f30f3c8d60625acacc99e2153c8c60dd37dff7c713c5f38be062ca5e1dead64ff38a603d8a12a37b9477433e116cd4b20f434cd929f78860334eb4b5b2cf349a43f09fe3fe2cba7e51620cc16765cd0fbba394670a81c71b3cda0c213815b3cde952ca96cc20383597ee28eff50f417039bbee6b8d772a03c1eae6e82f67b4e42120f88e5243ac6cdf61e57fe0b7326fdb93f76bda0f6cadc7491f84c50b6e1ff8089f1811b4736cf9c07a500db103750f7cf8a61b52a67ae06debe3bbd70ccdc93c70399a8d4749f2839778e06f235d9be6d8299677e0e394dbf6d2e2d79476e04edbe35c1da7690ed681afc8c156fb52472948072664ea541bf5724a700efc74ccdb39aba6ac500ebc7fbc29e520a5958471e044c33258a4c081e9b70b153943f45879037bf1ac2268d68d49e20646aa62baf4e4071e6903eb9ebf2c04b18e52c4d9c04d74f3489b4dda73be06be345e67667b089a733570bf1e47938715193f4f037b41da83998d77f01c0d5c5f660f3a4abd1acfcfc0667fd7b5ca4a229e9b818949dd2346284d1de665603353b060394aaf3727031fe4b28adf71f2d8e563e0dc524e96a3493e75b91898b4f6ac9bd2d45e7918f86c1d7710b9962f073918b81cda3cc614e2e59ffc0bfca5b81df787ad1758572ba9102abf4ac8bbc0db646d568664fb0f2eb01279d39991c5ca630b7c6848ef4a1139ba1c2df0398819d2d55b0c969305a6a37a85f86e97f4c7021f3bf4f412e268b57f054e74453bb22599f756603a7d14ddd2a3c5ecabc05f86cc1f8fbc2d7a2af0a17d9ca38d8e4a35660a9c764485862cbd9791023f2ea69744b26adea3c0e771ed10620e728c7128f0b9a37ceb90374a8c3fa169b70ee1b61398387137b847d28e6c02ff96b3a5dbe4182f6702db917ba61b8d36f95e02173ff2d89d13f2344ae0f3b7a6ee6fbc4d93c0f8a47493d7a663b848e0d6fec32af856ec8fc08e65fdb823fd286d23705adf922b7dfc6c11b875fd97901c54599408acc6d49a1c43ba8c0f81b50d59ad69760184c0c4fefc90e3df90c7ec0204810f3cc7faeb95bfe2d805000293d42a7ff7d7378d5d801f303177282126bb10a2018bd8a8e46ae42242e1e0c05030180a0381c06037be3593160000000c180d85d2340d34c176071400033b322c3e2420121c120c1810160e0c0c0c0c0608068482402018000604c240301818c493d1ba06de9514db58cd16dcfabd95d3eaddd28c5d84376ef3d1e3b9bcb6ac5e0f606e1fd8a2c511771fc97706f0c30c1d4a7cd1468d0b6a28d1c484c9b7712ddd33b6e90bebaf5ab25d45a468636ae64976f9c918e45043a3a2007a92372148d92eaeda4ce51305f8d8ae815e59ca75ebb6525958c1ef3d03b17ffc0cf14752b2d48e9078cdfa85dbe8c42065cddf8a2bbfd283a97105b1bb939b186c0f779bd66a81088618b1898a2a6ef49216dbb4b435a202bae2ee765c89d435591fc7ca987177cd038e50269cf55a4d3c0c2816fc1c0d9294b5ca28a8091379954c1eaf1cd07d64297ebceebb705facc3e881a20743fd8738538dc3c79dc13cb45ce6d0a05da635f6c96c224a70df5421956b07e60cf1847d456fe6eb9133ba61a38d1b7b638efb1a5f49f7b1a689fdd4a3870c87d28e0935b59e746b9011c280982aa54275246a4e532ace09d86ddf387874d2d98703eb2eeadc935737befbc08a435040372e1f6e3a41bef989d04913694e2c87840d719911ba192af553bd994d007abdf6f4f1c34350573e6c5092b7970f8fbabe72e5dc31bbe4214016a533090a441d499328134c5ed7d9530797b6bb1a2a208270d954440e1fb64c46026dc774845d2a7d5426bdba2b1fe5258a78edccd18147174edf3d7770e7cc0127a3e7a401215e7779e0d17d860b099ae2e038ed8e6dccc4b7c778647a7e5289e6834549244a34c184d023484f92c4299f7878eefae99bf36e1d1237c74a428502688abbf0e88443e76e4edd3d7b76fddcd36397cc3d5610bc217ecb62ce6326b042cb13467aa49bbb3c35c8d1b2358a358a1472cba756c41174152db13bbf7c7cf3c6a36737a71e3813d4e725fea23dac51d1e7387fca5e122a817e0930be64843670834f1d7077efe0bed393f78416903fee0d777cef712b09d2919c6cfa642745069504e924a7a17dcdc1324899122b3afceed9b3dba7cf9cbbece8dac98dbdabe0aef5b8c09972c708b67cd69025f14653422ab727126a4d9ce6f8c8938fbfa9aa1d94c1cf6cda5002192ad4d0491023eb324d8f633bcdf0e0ad540af9cda14cb3063a56b2798d255b4081f0844a5f182eeee529d920460339959c4d43339ec3ba305d7affc831d720064cf6ac72f7c491b7f7ae9f3eb877eab0d6578942b0be38be79e7f0facc8c09b9949d3b758e810ed1af77949969d1442ba10495c4ed6a68219498c53cae555165319b6da6f5274e9ce2559d24330c1b08218ff4fc12bfb5be35b5cbdd93c6f013b90c4bab836879a6051b23784e718107946bc5ff83c3dd7efff29a0d94582d2ecd6d37177d0751e71e47f1f1eb8b07dcbdbdaa4932e971f2ac5cfaacd1dd75c7ce5b4b341d0268153dbc940c92085049c63acd9dd387ee9c3e906366cc125dea3662a14e8c7f8a9e464774ce84829bfdb571b86c9ecd523d596f3bbc7becf6f535e78e5d9d7620673b7a059c81dfbd75de3cfa08c9dc329be859582584ac930066b488e5c4a2018b84f4f8fdd91e0bc2778b3a77e8e0f447876e4e9d3dbdecf8c5c3fbce4fdf9c7add8ee39bf7cdc51b4f5a61419a7fb008f0b56783d70a8c7ed249907f017e14d2489a32f9347e45ad0e4f1ef7d095a383f74e38be350f217ad491a44a76ad534777ce9d3cbbc6f9e5b93b470e2ca774e6fcca933b0737234c843632c91c5b8392fdd40d87ae9999016ed7410a59a448d4c933fc1957f3f7ce6f1cb9efeeaaa3937b270fee9199a359f73812b45437ce3abc76c264faf5a76e9cdf6b9274ef8cf14898681811adf62d7ea6b68f25ceeb9f01f4cc9b53141e36d721b351e369362223fd7943851141c889e369a6a7686d1a37ce6d66f35d48f2dcb55307b97102dc838594c7270edc7675d9d9c9b5b3e70e5c7f7a8d499a09134f9d442448a490247dc2f4274f964639470843f0898c60c34c680b7d54e5a08e5cb28b6ca02929f5a633860f1d12b40c4f48a7b8995da43f15fac74edd3b7ff3d0c1c519e7675d38f91a52fb67e20e419877c50006ec6c9d98ce3dc720c16546b8d070cc61449db3d3eab5b44516b350eb8d77615d1526ab9874b1315dd4617a3ab60895965b5ddcbebde7e8d4cdf9cfce2e39bb7b681ffaa4b7271d1fb78058dea95b27e72ecf3b71fae2b98b1336d29fba71de6cca8533f78ce1829028dde44a9dbbeee8c2d1cd9366f8a73c7b76f9f98563b62121c249ebf0ec1ac777cfee30c4fcb037497b9f067acc865ae1dc6c6ad26d5d3a35e898d0e225611b21129e3426d0b36590d910070a94fc6a522d1ae6d032cdf07755245480a199edb52a15c7582e4475e6396541fc6ad691165d377f13db231f847e3c0207ee8926e27d24b684f4315f3a5d40d3ac37d2312b0104e32d3048d731b75c9ed484da8179234c3a61901e616072f36f530b1a09fa97dc50940928afe39f14c728cd943eb19c77e70866e198c6a6e8f8e7048eddcbc22d038fc433a00e004c87884488627d3dc98f195e28bc96819c850a5560e5f605b53feb0f0e91ff9a1ac354e1f0453899253e1d9c085bf8e4aa8588c7bc0b98880d46d5d062097ff8d2e35e9dfdb53108545281bfac16e14ff86a1992ff4e17b5c574a798bd1ebce18611c7b452ed0c9a4a711026fcd1205e94067b1510907d0b7ee7a845fae81fcb7110b948db36c94c638205de06625225f4a8033b048aff6ec689590168f522513b8a4aa05984e91cf209013270abb2357ee3b79acb49304a6236acaff154e7cb8e39d9ccd6baa8f4b41744550373c14e8e932cc63cc42885f2398c12c0d870be215debd4a9ca16e6d74cb101360551ec482dee3481d412f033fc17ec8515e59117b4aac04bf8d33a7c4d6f007839def0d289145742f128013566654cdede54a23389289aa58667515da82854e195facda491db4fda1dbea95bc4113c15ae4c5136f86343dc1d7df81cba9c6d61e0a34ab68c0a376f485e988bc521b442cf4cfdba458a6cceba78abcccdccde708785375a6db61dc2e48773f08a1fe315ce6744a2ee1400b793b122e474970eb11d7e0098a37218a4f4312a6c12339f07891e10872e1779d0de3fd7fbcfe4145bcac9620c04bcf3295ceed13fa42de23231a18e732450148903a5ac0ebff0c08053fbea353893946e6b3cc4b8c33475120afa14b6f64241b8c90b65c84b44fe90e916204e2d979b3bafaa59a7c5df5d08309a7eaf86b02a2cfbf41f588d65139f8be5dbc3230d50831837d65b1dd49c91798eb2353c80aeb8e71087113589db0714215f1d1e67ee54c4dc8f6447a4d1f0d9ee8185e6a99e30b5e49397e7337c708a4d2c50945da25593ca99ab4758385608b67bddc087b47fa4c421a83606779ce39ed0e94ae91ccaca959063300f1fa4a7cba8a224803d915cdecbcc00b84515147029bfe6b7f5b023d8c20db56aa90678662cebed044083e9ba5f16d50c09e12ba91aac8d68b157a98a292e99d77432ed2302fa138e03dabdf5d00d4d465db9bfdc424b27cdffa014b80999137ee4770d4900ee4fdd0673b57f147f6f552ad4b87730780714812a0a1648edde55d2c1b7cfb9a29c7a70c66a141ea681eeaaedc7292d00a7f67137bf3e3d87ed06300ffc770652c9435eb72cb00b4380bd5c0eaec62da08df1f303278bb9a66c5cdc6476229f135f3cf337cb08041a6f3a8da2690603cfb49bfda52a4c4a60479ad9e258b81d034a5ee177c1983c819e78cc5e345749de13d79243ebe271c14a01be909d7d5bf75784c31205ece6c966a4dc0076a44070b31bcc72f1816e4857150615d7de68a3f420cb3e58a29840102e1671937e11da73885b89f6c5192f0473f75641da416d3e1b1a289c028a1b550d18cb391f30685c0622dc1671f6995205a861cec29afd6d49f02ec8c00688f4a178dbeb9b9568e4beeca50a946ead82dc59c3c52f8f6b59c9fd08ec991d6ab500bc2382aaa47272267fcd55266cd5a77accf28f220d9ef287003df79bd3cc32f0aae9d9f31bc35e69350a83ece6941669ea4346b07006ad90111d371ae9d2fa3fd204019987181c4bb89b020006668033f0b7777b58d01007c05f0420a48c2141c5183ab142b5f51c47a7873617c9df14901052872e5b19b6775b2b06f05fa7100e3e3c31e9f4a48be41acae6a451984f8c2c5100d0c1c372da0b4021007d923833585e6a8c1e9be263de024aa478320b002e978283d073dc58253602bf1252517b813e4da907e59e549dad232f3a1a4d395ef6bf975a0e83672c01f9b4615bb610b4752a9c441136a2f7d642140e69314ff6498e3a6bc77688e3f30e0d4ee5710fa61f61f6cf19388040ff91bda50666800c578f785fe4fd69087dfb1d50c44a8303529dee83a144cc668aa0ae5ab401407d94cafae342c013d32216c6b48882f70c5aa9a3713d132da8881ad539d5ff66d079d58c3d6381c1b0695aed9ee22b42350eb7f8e47ec501deff1cc0eda83b0c1e20291367e2a54effbbdb69df585a37d1df8590e32c3a6ce7e42286a940385c0ff0faf6d1e940eae5e53912eb9ee7c3584b44cc60f1930c9da0ee94e8333df7c7d105fa2b14a1f13d4822d69e9fc2b1440a1d2f21a3c01ee476a407de062e35ac139fdc76f682d9b7c265f7d4ea3785cf46d32e7aa3c5f0e20577ca0968a59914dbdbaa90ef29dcf6a82100abe8e7d17cc8799a0d6535a6d38844be2abb852900817bd451d0c2530a11de0e87d07b0ea35546aae4d269484f0d2bbbdbe73876c070a8a6cf7f89817b38876c9a95e054f5b0f4376e9611b7cc3d289ccd4660016c3b1466b567d1ca3393507b1deb075cba4588445942d676d283aefbe3c26bae958c08450f2496160f97b01fddfb8630fb333bc2fdba2e89d9d0c1e2d3f52f51c5f1f07ec550703d696594c6ef8065d8a516a645ea42da8e9d26b18efc41be48e19664cfac553b35ac1d22e8af9c0b37209ce73587b8f430da485c7a00d1a8e83a8a98189c342372cf6ed8c2cd542171e8aca047c606e4a63c4edefdc31105a50b52ce2d696007be80b60d0b87c39fcd57c0db799b52e536ddaeab45e20c7bd8c9c525bff5cb4b2d6699af31e538eac01adbc88420f892e7d24cb25cfbe65512331ec2ebd02f925981ba25a54ef72638c132425fa2aef98568de8c34ce362323b6b7dadbd123a26328f42a67ff3b34005962038c44a11602be0947cf0481c4d0f862a564fcd41fc6786a1c2f46aecd135a034c11539e5d8b5494c166ed4924bae9f025c3776a3709c55f094a2b753d01663dca1fd54384f02dcd2a687de216c828b4240a671e5ad2d154abfead23bd211cdb160d7c5b959b2e5bc549f355a96cc5b01b45c4ca204d0eeccb1b8fd95201b8bc4e0f10bada9e0ac25d6a2331fb31c7dbfd2d391ece50a05e397285d5b2b0d12646bee054c5d7b592181afd64cd5317987dcc110a0bca066f8b689c7b72e8ed9ecdbb56cb208dae4c4d43fe6c50045f13360f41f042de0cab7bc64df9158b8152b11560e2608ac216d9da582a30a31d48ec61e65be169053c8fb72a2f92a4cce0e2cbedae73ef35a9cf732893abbe5dddc6341b09a794e7660a2199a5ad5649e8c80d072972614865fde8c02eba4c2377b21e68161806c17333d41aec9ba4606fc2e2f4932d9a60e58c5265b674f12c1ddee63d3402e313215b370e58cc0044e4be9a1feb805e6f72742642803905accc01b8766116668073263cb82a21355e8908c06a798711d9ffc961b2d08f18c77699ed3363c474fecd9a81999af865745f896bddd8d1b0a2e9404113a84d04759739616118b420e841450496485907ebc9552896fb3a2ae1c9fa1b52b66813f39a37bf82d22e0bdd1561b2502238c7e69a6bb4fc482d021197fbf5a259a0d41b29c1c82b0b4e9e9185b84f65a50081bf436b541454b9de23e5736d6961d1ea008b6e71fd7ad4ed8476a481f038b275a3288eac375cde5026dd9309725a6f342bfc2fba982038a4ff8139ee0580f9ed0c3448a1ebde4b0f0fc2ea94ecd758faa4cef4e25468f1f9560181be89bc79fffb4bdca91242362eeb229e64d806da634909ca842bba29fe2b60e7318c97dcd058c36734dce8687094e060a5cdedb667b38d505521f45498eb7393055901276169b0382dd7e5a2c32a64e9bb6354c96c651466d8d714c22477b8ae057b1eb02f73ecf343acef7668e79638cdbe9afda34820116378c0842a6d378bf8c60c33fa5e13536abc895684ce9ebc1e775d8d41b8157c6261acab0725846d2e6d6c71b301f2a3bf213bf885b358074633a442b51516436a5ed64e4957437548e8f29f7e2e185395b84ab67ed1d93b99e38e6d10a11b99e752b7eb9c76ff799e6cffc121785e7271704b3006a112c15067694c193520295b7e926dd738ad353bc5f3396620b3b868e3024152114ec19d2a6bd99f2f620fb3fb91676ba448a0a48c7d4f45b9967a425e6d54fd571de3e71ac6581cf30e3e01c82c3c769fdaa122aa82477b6bf55ae10187504ebd262124152f1bedf84c4a8de2c9fe3c7c0a25c13bd1707a664f53b1ef8119199d275e8e132a06adb928119960150a245567a69ef11891400fd001a396296ce8c8bcf00ba09e7874dd4337904a99cb74ef2429ecce7120777584c36caf020b594929906f6615189b9b0ea7f1bc1d102870566049faeade8d901a27c1e81309809499b336c9cb91ada67bf9649117db321683af1608fced281c4ac0a39a887d4a426b82a008a374f7cd92a8f8fc9040ccda4eec63cd080f0e0c0f675c741ac8f29deec08fc9a7068296e5683cbad9c8cd48ae62fa0f88806d2a497871bf2d304aa3e8d586bb99cb468b37219868f4cdab06e40669930dfda328c5ba93e652a292be7043746772501d8011c7178a5f91005c57cdd71a20d7163162f768b13ce18a0ca97b5fc8edb7f4d48c9bf8492c3fa9d691b3e9edd24187491ad00b898857927b75f417489523997e3758dd3e329fdd581c851ef7dd4119af25126347184d704f31322d103e5f8c6ad316ff07e10639912417b365110f7d6b0ce6d8c136bc6700adda71893566c4a0c2ca84118b598bc581298f5517ce10f5d5b5cec7980f4c2c0c11d85b991d682e27154960b860ca61cc65d981bbb8a87e8ef98389815931c814cf868e480c239ab566c3a9299de5a6c92f3302862d34451cc20c3fe4748e65e36c26ae116ea582f7e40508d093838e2788486e499028d504d3428f9a2449a4273779e2d4224125411a12934d9feca4c8a09040aa18d13338c281ccd34b9ef7848d4e0a741a46877566ec49858597e9fccb0925afe82778940ef93cbb0304460ffa605fe7289512f5d509c0b6c291407c22689817b27e1bc2d4c61b427e0acd70e4a974445d9d4aad06dd05c414692fc8fad1ca1533e76cea8ff8fa4b84a669377d9db321fee05d310647e484cd4bd754098ff55ed8fcd8215c6ccd0fdcf94bf628a154da105ea710ea9ee2a3f34842df2d236a9ae0ee7eb7ab62382f852a2b765f34e33cb94e7ad00b5ca312abd7e0dedf35ed497f32469949167f22bb5aa1dd1e8ccb3660cb2b48d0d667d49bf309cf66d026b71c1ce1c635c840959a6a682338ba5b230db024637d7b5f74dee6d3f5101fd98caf0c256d5c5623804a0835c149624b5b589600cff67e4d561167ba5e3afb06ed46066501096e63e8d7b16e940f00618c51b2bfe61b566550ece5dd330ea8ee529ab85aa8a69f27cfbf31013c586e0b6dbea680a90003b7939b47f4761d36f67cbe922be9ba5481727ce0d5807b2776972ec71fd123f26db02a29aec1a15ddde7b4db0abb125d5eb8705e91cab02a6312a2c4806802a2324ac5bb693275a015d1862db9b7b623173c6760b34c38f8c5ca725532820710576525ff11a73b71008556082cb7bdccb59844155bb980a821c1e511bd3277de14108780eed5695861352dbd5deb0d45e4c40b445adff00120705d801d901301d88a28697bbb4f82bf158a02de10f0e8e3e9735c6c94df592f4613785eac5becd98b05fa0cf5e5b515b592949db22d7fa5014cf65a7fddc37f910672fe694efe4f5f6f341f9e3c0fa1fa793645ade3cf6c5deb5cedcbcae11470adc4c2363d2302c2eebfa5f7d343056b5a45f26547b93dd9e23682b575b55453f86c957f8efbdb0a187c50c26a4e62516557099805249c2609b662fb68512b3cf831dc212573904a14e238daa06c02a0a43a30136f6a6dcad205b8d40305b0b683127fa23f41aacf30643a763f9cba541990b6661bde4903870260ad6816f3f6211fdc761f26205a7045ce02ee9ef93a2ac0b56f4523fe15f9a41111b86fb0e9156cba4cd33005dea7f379bab0ef2083cdbda90925db4d43dd86db1fc5b4682405762066291a061948b36c2e7b806d8c6024058770999ad0379f2dec52a143b5ff144f1b37fb287943c48f4e8c5a94625ae48355649a803e7cb49536ebe8af5fc3f7725127dd25d5db38ec80d3b3712105d6a926337cd3c625dfdd706d7304f9946a6d815540671e55230a01c39d7ca853f4caa8825393a89876cdbfbccfe63a93f3ecce4a4bec1515b765b7aee8988e8774785cc18df362d9aab9ec596e825e9d269efa8389858f142ed4b01f862422b316f385e5205c47a2a19d77a569fc63d95e40dd870c8fd87758c03f2156776bb0bd7c076080e2ca187375da4f1c5d7986f231b1723d07f8c31561e76495d2d7e0d3276ed0ecaf5f1038e6b4ac4d05031e1ac05b1a0c2889dba70b07b499d1366d5696eb084115d17002839631235ad5536365666dc76061b49462e6724411513da426d706ac2d94c925c7390026f0aa52bbab023d3f854f923754343c44b102fd230847c6c7e33c1cafcb80b61b5303060df49096dd224ec0917c821c8218f3c9689d2dce4d359338e4061c9ad05f09487e145fee02e372d1c8d6441484a8466cba454c60b45693eb36493e14882f0075ec392b40f8fcd2ef7eacb7208d1543dff8c61e806ee04208f596d647df1c92f0d91151eacc2c3c63834934d09b73ea6d2ec9e97a8d696105c71031a4c8e934d399ebebb2576240e673d6c9ed36fbc604bcd2c123162096051a1345b992535d9bf015af4f6085aa662854dd28efcba599ba94459303c2e421de6b93edae2a2ff5bc5bf66b03c4719b3df82d4f6f3ec16a9df894e836953882c8ca2e8949e31ad17584255a1145d4f6f7d68bee4e3c2588022bc070618474128b7e29c6047610b1994d7dabeb713a07d868d047f471862c2c46e4ea7aee32bb41ca8ee72501f42a1ff82862237511671fb2a006deabda92925fba09e25829883a1ba19f2e7a38acbaaac4886da548ccac63f57a15323a454b0d6c15d1a42bc7975033b87236d53e7f404a869a78eb89a4443e176bdaf7c7ce501953043603d8ad17892d609636f889515d5465372041c9977634cdc3d3fde6e013163c05f5401f096a2a80403fa55b6427800329f1d72896445d80b218c191079a76859d2245ac4d4a1e8dfce89162c1590aab01e84ba3ecc961902d7f69e7c68e881958df474a410fc00b86f95b4ef4367ca50d018e9a6740ff19ec09929624c2b0ae195ef94f9fcb258143ca1c533c502d33693a3505e2e84d3369df647e1a871ecf7d61bdbd646e570b03710421a43a1b727bd47da66476b208fc5d494a9f569319f5a56b8817e7d53e16a2635e48c9edcf8dc65f828c2d92bbcc87fc5a2384874e5e12b69c5389b7d503abbbed981321c8b7328593a9cc1f20bc5fb5a2b92f4e365c73f57921a3263a0109851944ef996fc2e2f79e57a3a786f35a7cec2583be413b8931da98970703b2f539597940f0ca016a74c48753d53bae942f37cbf614bb8834eb09ad37c7311f449f3ef331ee6e9eff931a1db26ef98aed026ff4c8011e25a5960f8ebae9b45202ae2c0241222aff11fc04518563943edfa68d76171c648450c313d0542daec89daaad0ba62d3615dec018259d46bc5aca668288577ae4aa0ef9944f962fd04bb1d7624e0a85434937fa16526d2b8ccf4bac20425a33cec72dcc6278c99adab1682af7cb0e41a24d905dbff7eb01b32b986f932aee7c323da02115893fc758bdca7fa5203f7a376c4840b8369bdd2df9c220cc541f146629ad23025cfa26b984e330cd798295fe90744c06710498a3ef2ef3265fed393cce2b7615d050309feda65ec3a35a1250dcc7c4ad210695b2d4360047abd7140a5a0a7dd812b196a1bd6775152c45029e2ec4a60a3960b46439330f0f0f0f0f0f0f0fafa18d90da483b8424c8946412af76dceaa5197557a694a44c2909ce4c7cd91dbc8377206b6467c4a7934509620a2f0bae0a5d7e5612c6274e5153dbf75f7c99ac270eba2246549377299b979d38485121457b98fa87cc685891030c4e9c949c58150de7a6e3927480b189e395a9a559887532e66634ec03c806189a38ca8a8d980d977d3fb3a0616ba5071899385f040d3959ae4745048f031347ff0f95d4f9d550f382b9a0e15dbc1e1897388ce44a2d6ab63203862556ef5049c9468c8d2d6c201a364200a31296685132cf48b26994408b74564a066050e2145537cba5b1c352bc5cdb9916729cbe861a0d05018c491cf3d594f0eb1c592ff130004312a7494253df09bf60012312c7ebb3935a71439e3941e224d17dd734a8304a591fe8c2c6164b01188f38977ab9141bcd1a6a8e38570c32cfebaebb0bc068c4294951c24ca420b62dd6502bc133e29c737bc9da33b9db4c329108c058c4b1532e62aebad450db82b9d002bde315301471ba8d1199c9235c84bf869a3d0046224ee611d6efb4ad2815d650a311827f2faa0276efe7001888389d8eab4d51b5a4ff431ce732e5b4a410ca5490214e3232d585388dc65512d9bc2caef850020c429cc7fbd5a25ff6a6880ce26c4a95ce74997f477e8238e91eb30c9d6c6a9436e363c69a0046208e7bb2499a0a237e210910a7f0962b7cbdf504187f386a285331c1477e38e6899d2482b4eab7511f7a4d21649c58623e9c7e938ca92184d290e73d1c946ab694b35b627bd6c371d56f73fb8dd5ee9c8753ae1e4bf99f9d96331e4e4a4c7adde8fb1d0e26cf23e6fbbd9453b5c321e5dfdf87cc3721cf3a9c3425c85a1e8d913b4287b3e4891584a65c26229cc3514d5facd80be570c863b2f15a412be671389d929b3c83d01be4342c3e667c34e0238b2b262043468e40868c1cc1192dc080c329cfc45506cdb5f90d0799eb340b6de3a2bae1d89a215ab8943c93eada705229236224c9d870ca9d3196898fb469b6351cc534c5966c25415fa98653e65049684a0d49229386a34fbe0849de050dc78d9727d4522b5406912f609ce1a4a2654d5a3c821e13491c30cc70cc62faf462927b3ac31a38b8011f33ca68d88d77fe1aa9850518653858fe51f54ada94a9b5e0d8c20b2eb4e00206198ee329a72a5c87f69071f00df602c6180e7f62aaa1f67f23070db32386030081802186939688997b5bf14f4f6138650491a476392f520e86f39799a5ca5c3891375fc0f7626cbc709c9c6717f53798b0b50b8768f147438dc98593e8bbee8bb316df2d5b387ce5da57bf65fc9668e1e027f24bdbc6d6f62c9cf5ecc664ee35d98e20049b87808185638989b9d12ec913697485c386b9d18d642148535be16426c2a2ebec894bb80a07512526869b9d974d8563c917b1ab396137de291ccc23a920f39f94e0a714ceb3a243f66d46cd3289c2a9ed2bf67b8974aa7450387f5cf68d24d913ce9a4e5c879297c1f3aaa1368210d048fcc43000817201c8030c279c456ebab05d89fa736ac2416c92a0fde2c484a3c8b352a64e5d25f92fe1d4f9a54509afe81764251caa5dea92fa2609c749238259cea96d6f9170d098c9a13d312feae50887b8d6657e6aee7b538c70b62cdd8a672292e94a114ed935a5b89908a7fc9f5fd2f327e84a86703689e633daae57260ae17c29e5bf8a77eea7bd201cf2cf7dcfc87658de8070da5cb67719edc7de82f18363a5d04ce7235f77be0fce1b438ae297ed1e9cb252388d5ff72563cc8363b01a11379ba129da1d9c33e84a9baf411d1c57a4e60aab961c1c44be942ca892903d3d1c9ccdae94e685b234767900c60dce93fbf6349e12fb7fb2c1393628bb58a6279b08d5e02c26262692086d23453438e8502327cd058b1e9b191c4c48bc50fbb1517d95c12957b8f8ab92a6e1a23138a4175d1e322c3038e9c875994bd246d2ef05e753718236cffc1d4a5643ed3fe04fa39c0d182e384c90fdbba067bd645a708a184a4bac0a0c169c5636baa9b1f82acedb13fdadc4d37e47aa38056da6749b48d779e1541c2fcaa5f83b5fbb29898a7305f5216da2ef87aa9ce2a0fd4385983dc37655a6385b88ef97e2945c5e677c7d529c3e6f444831eae58d3e8a4310daa4968590b07d8ae2d473a272855852362ea138697c6658d0cf9431041407d9c917e26ec9698a9f38b6ada776c5ca1307d917f355c62a624c278e1e692b65ca262c9d8913e79131987c7b869f7e13c7b653ed12322f4df29a3828dbcc99bffefcf24c9c228e06adb334264e42b7a4a8fbf3258eeaa384c7697c4d3f5be218a2a9c6fa7d2b71d211bc4fc64a54b19712c7cc3e4bd72c67e9ce491c36485b0b0f91b4dc298953f76cdbeae4d2783312c7fe7feb519599549b90386493d72c299adc51e6238c71bdd61435c4116799a8a6f9da24a450234e715b6335dc6710f731e2acf5f2932af6a6642ee27c2a6b9226466b508b220e96367c75c66dec0f7441e33fe0e7b7f02eb80165481040224e6ad3b5e948a2174f0120e278eded1fe726b346c386af0704708883be3bb56fe32e7bb12df873e0a011822dbee862e6de6d744104608893c9092e12d444c9badae01268910c737c1181126891300034104021ce3722a620be4d1c1000218ea3b2355f3e6d947635d4f60b0d086010071d93d8a32c28791909e26476596fd35f6b6b62122080401cde4f6b4e9a98dd1702c431bd6bda7f478c1163fe70086ae36662b44831b37ec04d8f188d23210610401fcedfba26735c491dcbf3e1581d2ac96fd3b29efd1ecebea1a331d4480f47f58cab3659ed5d64f270d09c20ee93eb4d36888773ea46481627b488ebee703e4bc9648a9031400076386cd6e01f62d6e170fe9237f8a620b582e8702aad48e21374d94b7a0ea73c3a8345d68c31822c87d30615ae614a5ad4d7c4e17c21bd7e88d312f15b381cc4e4db7d6e1a794af28653b6a0f2a6fef90b3a74c329fba91877662405ef04d08663521f191776574c576c38dfa92ced21396428ade1985a1a5f456d2bef6a38c89455d1083a4cc8d370f22a7161d2e44d66a3e1b8c9f54cdbae2ed26738498e244c5614bda349663845331d7df9082aa4a90c272547f95f881e190ee2e96e1674dfe998c67032b913af6c92761b93188e3fc2e7c26e27ac98c270dc9798134524cded12180ec93c46fe6a9aec2b7de190cc36c52a8b1bcb7be198f6ce72a6b01db1efc2e9f287d6ddce85635a7ebfdcb61223dfc231f4e289bdaf2469d7c2b1769209d32ec15ccfc2512f95509bf6f6478485f388307243d63d5bbec2210565ca54257527e3b7c251ec5764d4f4ab704a3e9752cc57316b792a9c54843b9942c5464a7e0ac77fd1155dfd99d92485631212b4a4a047e1745b32560aebb17443e16c65bf296d2bcbc44f380611997d6eeabb66271c62ca96922aa937e128baefdfe3cf2d93ce84f3a5acaec154be84a36625b9a9527a4d952be1dc16a92d6782c8dc51128e495d1e19564aff8810120e4a49772bd1267e54d0114ef14f9b983416b48dc808e717597f76a992e91015e1a0f233fc6c564f9321221cc44faeaed62071ff1ec2b1d449185b11429fbc8570cc1511bd2d97874a76100e49e48c280d2daa5a03e198fe62ca67f95664fe07a7b2115142aeb5b4b00f0e31f65ac85992ced41e9c3de304ff92a4e62ccc83d35eccaf31e8f65215dec12924aa5a74938d90631de0e69dd9926c9c8353fede4ad413cfbc180767d3d02e226688088b6f701e716a84d8c7feff3638c98914fb746d4a3daac1416bfe081a432fa30805ceee88ace15c69a7bb2aab6380871a4e32c8903645a9f8999d86b356ecfd17ab4965ab071a0e9752241567458ee6ca190edf9b3526192fd89c40e161867368d5dc9b6cec3bcec16e6e20161ca011804c7894e170192e24b75a501f298107190e2a628839c278394af039bab031a390041e6338693c33a12ecc89597e080f319c427875c9f50ecd75ea834718cefbe11b638f96a825bb8307188e32774248485a499cec0ba7d899921eed227c4798070f2f9c7c6edf4f6daa281a77e12442bebd72176ddbe171e1a816a772b8445d93bb1b3cb6709e64316752764cc8a40f786881517726e45610ad520db5c32ff6230b067ca08b0ac890f1376c54a08e6bcce01a3364c8e01a886b201ade05dff0c8c2f1c2dba46c3fd6d02e6cd0489d8207168ebb9da9e773a4068f2b1ccfa2d987fd4912daf9dfe01a38f23dac70de517a825b280b7de11a6a9fc3c60868e0e01a6bc3a30a278b166a55256d64996aa871f1c50d1b5f88208f70e1410563c50d172cc409d6dfd0c20b4614784ce194f13766c8d3dbb2be865a073ca470f6f6fc92383ab9281c53c85d5b4f99fc1a34080f281c74ab558af9b58c372b203c9e70d26ba27d4a69dfd5fcece0e184b4a67cd59a1b6ec2a9feb4474e5ac634ca82060f261c7deb92cde45259c2d1e6eeeee2a8f48dbf124e69f9336ed0162fc4cb47c0cae0918473d8eba83799e812c25cf04042d9165696d99210c2820334bef038c2d1a22865ea2f55fcd53eb2608006687818e1e4ae775a64299965b72458708046043c8a70cca6e9de5e7d4484b986da0d1b39b4e872430239b448800c1939b4682c3840030b0f229ccc4559fb87b2865a0e2d1a6d011e43386484ab79d6c7f6a4861a8eefc2068d3209202db6b0400e2d1260c71e42d0fc4a7a88dd90e5e0f7e26fa404cc8f2087161af008c2c9455c0669ba94ae940081cdb8a523c2e307e7b858a6444c90114d7d70ea4865631543479d55a885f0e8c1317885cdb4298dd6bfca070f1e1c458548298968e789a03d78ece05c297aef621a5563af76e1a18363ca095d1792da13a99483535808b69947c490f7ff076e7ce0c647a040c00307a7f417b19bedf2d285183078dce058215cf4124b93c93362f0b0c121977a1ba5e25a265fbce05183939d67d22ef1afb839390f1a9cf2e7f4569c7c661bafa1863ef098c149b2564ada6acad662060e1e323824b1303b3289a7ab9a85b13678c4e0b8a3a44aaafc1be242dee00183f3da48ab7bff8ce0fe0b8ec9c243b3286d5d705cd3792d21befb7e6cf068c149988aa8070b8e96dfa352f3cc551ce75b540a4267658c93183a5471d8152192253fa93a261c07828e549c92baaca3dd465c4eab861a1769853b5071da3b15b4ac925788f31447dd202208ad2979a638681df9fa23161bfe183a4a71b64a67d71aee7e7559411b1da438785aadb9a9fa31e3c3d9c61626e0097c6471c5c7651c3a46714ac234e809a5f7249a5c8310d44087284edf554aa43d150ffb1ad0118a93d01052eb689712b382e220428a9133053159177fe298a4d68e4c2f71df27c6130793d1441aa5d23b434727cea3eba5cc57333e6d4e1c52457bbfd3e9173a36715c9fa0a26eae53e7996a02e1ae72298292944c9ce2c98adea544fec919828973f986f09a2e9e5c142f71ccb420b6b4feac65d01227a9418624966e256b0e2b71f6b1db1853282971f0bc987bcc3456d224d4b07c15492411644c1267d90d32450a264afcde489c246f87b975cdc8e822244eb1542825d72765b25f858e471c27c860fb95c29a94dc5b204717cfc55aa1c31127f5932d6b9730a9d0d18843981817b12fe95ff97114469c4b9518755731bf4dbd88f38a30314d3572225f6ca42e1c708a3889d1df52e9eddfb031a32311e7f7b1a0273376f13d441c421e6fcbcc7e9f3b15163a0e71feaa9535b9ab4a491be2984d988ab11e5a5a4b4ee828c4d144cce8a34f2f745236d2123a0871fe92c9f466bcc811d3a60b1d8338ee05d9aa624a759cd008e2fc69bad56f696b260ec47944ddb2bc895ee800c47936c5e7c858b5ec2b0a1d7f38cee54cea299b846e976fe428c1f998f191c3868d0afc1621b8f11148fc57dce022024af4d0e18793bb6f0a61a1324a56169021e306175ca009d27f77f4e1a077c44aca52a3454c7c38e5eaaa3c2aaadb947c0fe73c151725a63e514d8ee074e8e1a454acda18d5b4e593c9c3c957349366381b35193c9c2cc55b49bee81d0ea35637779ad468c60e47135a2d454cc973dfacc3b1728890820a173a1cacd298ba1435ef2599c371f625eba6b92829dadfb06159e890c349347acfeda91a11b538681b4995b5e90a0ee7bef7caa332416732bde11813c3669dd8a6abbc1b4e9b2f840e9544ca8a95c5151f34acb4e1a0445c1c13ba345a92b3e1bca7e74d677e0da7645a1b624a133fb71a8ea3446398c592b0164ac341c6c9a4d46caafc7ba3e1a8b5f9efdc64af8658061a0db3eb38c3215fa5d6241ab5ebc21d66385fcbc4149694f41172194e69c25ebf566234cc28a2830c47d98ed39ab7ddba3763386e88314ad26ec4702cefed48aa52674a360c873d8f6093cf7f33ad6038a972bf0caad42f1c278bcc90cf37355ad40be750936d215e94a851bbf0c5bbe9cdff92960d7470e1683ba6f59362082d972d9c3e4bac8a522a36c7440ba7140b136df375cf255938a94c1b84668d60e1209216e1e67e622c835738d68f0ccf542366295ae1ac312bdbac99f8e6b00aadf59ba4af8bab630dfdc8e20a2f70987650e1a041c6c6929762a59ec24934259ac8d923437b5238bfb589c94ba579f451385e6fcf5a5c9c95170a07bfb093dd5f31a0e30995bc0ca7a76571e38f191f3264e0c861630b1c5b870e279cb4c94b9bb4f5f2437c3a9a70b4131b359923d4cd4c388750692bae4974886509073fa54dac970a426e5009a7f0aa15dde49ea64ec2a926799bb0b5cc52de133a9070b40a2a4919113ec2d144662f17e1d6b1970930a1c308c730951d1a4246091d4538bfc66d536d9d6ff2255ce82082a2eff296502a47a476e818c241d89f9a51cb5359f7113a84702a51d33241565d7077c6474de063c64749e063c64761f131e3a322f031e3a3aef898f15110f898f1510ff898c0151f6ee808c2f154239dc58d191d403897a891652b412925b316f8985103073760cf0be6020d161ca0e1808e1f9c2fea294d2762941dbf865ae6a1c307e70849a208a01102c4bdc5169c6430eae8c151c279af5c467bdf041f021a38de6d74a1f7850464c8a881831b500307d7b8e28ad7e2461657c89071e365c868d74774f0007926b3e7b58c080e3a7670de903535368514db3f2db8d0e28a8f191f58d498f1376ce4b040123a74700c37a633ae26639e59430d87163264e0c0f137f2068d2d3870a4a02307075da5a9777295265836860e1c1c766c7d53c9480d35bb0b74dce0f81b36c38990a2e9d372a0c30687d45f15825c10bae1770570f1b1800a7cd8a0a306a7ab79b11629136dff1a6a67775774d0e014e76cd2bac6cd7eda7761c3ee011d33386b0cf18da7b5c64cc6043772acda62c1011a05e890c1e15bde42bc2077ee26171f5930e00301bec516cc850564c8409342470c4e4ac577f3957c04db0fa1d00183a35c9ee02ad9572ea88968e878c12158058d5177c1d0e18293340b218feecab030de163a5a707a11f194fe45cb2aedc70c1ad6c182a39c1c25f267f22f1f59306089e961c1011a00f8028c551c54e90d1af77fa523a98002ae00431567977c714b49f8df2ca9a15664c830978af3bb66d9d3a8da692d0dd6e3dfc507b4b0c01460a0e2706f2959b890358ba41463028c539c4ae8d3b9fc9772c85843ad468ed7c483618a8358962057a11cc113d6820b1b5d98600b1b13f85fc01e0e122c004629ce6f695a16b63552fc3880418a83dee58929a55c21867514a7b0cc25e36ce4964b860c18a238869cd877abc965e32b0618a1f0b7bb5e94bd4d8cd601800f304071f64ce51ae96e6d9ee826fc34e58815ceada5ee728cc7d90a062baa7098a0823e21226aa34e54384c904164a63f8563502337559221242197c2b966df4f5585f44a3272c18a289c548c94444b432a7d3e140eff2f1b54fa3671a57cc259c447c8b1d558fba1134efa679b2e29d56dc18a261c2f4553d2164bc4fa13138e998297ccb6ef124ed6ebebd737a3c4460907514b5d8ba6e2f7c30482154938f9a83497dda02a79e31c36b2f898f1b1c5169c45de07bad022878d11d0e080154838e64852d226c65757c88d1c6507818f191f96052b8e80bc4d61923c5beb3e19a19558df6649ab4a3615218db027aac1b4f29a88f0a9c81cfffb10b014639824b5617121741669e28f8290c30a20a0b343c6483d7957463f682c93d0923399423e20f9c93c57cb92e11e5821744e489c7097632b7890c64ca916e31d98214ce5e7629f90191d9865f36a5836d3a4cdc197ebfd4bce5f650907e88a2e9b221e129237289245d1fcddf669411b64ca6a2c5b9cdca15403448a4c7154478364d613aace5f53b5e70547206d8bfec28697e9c08a191c83e6bf785142a77721e01ce4bff898f1f131c30437fe0b0a7cccf8f898f1618287c0c78c8f1b6feb0573813cb04206479f24ab59b1ac54750678c15ca0e981153138e5dba6a99353e9fa0483b3241133e69674d22afc8253d4d37b199171c129939a4ada33a4056795e09af6da324c6756b0e05c95dafa2fb6600c5c0362ace2e0162b857c21aa388fe6f0dd48c137bc948a83e5d0dd8b7f1911a2a8387758f6b828d974c4f114e7bcdc90bf2bdece2586298eb6224348a737fe09efbd6c01314a71144d1935645d4c95f518a438583c4d5f27770d352f6cdc701a26b891634d70230b1932100e2db84029c418c529c689ea1bdf92ee21238a9354c97fdba74ef67f1fc408c5f96408bde312725c3441714a273625c8abb00a8b7ee2f026aec637a98c295c3c71d4786eebea75e2a445488b91edf5ca7e4e1cb45a8590f5bc4b6acc12626ce2f8397ace267c5cb818690009313471baff1131057595a26a35d4d6beb92d1347cd9c9adae12237885ae0b031014c9ca4a518df228d984a290e70c0071e0b193270c890610224e307312e71941417c9eab45eb610201b5b74d1420c4b9c5e53f6896c4159e8bc1287a4f26bf4ff579a184484189438bc858a2761ec7655d7102fcdee122f44964dd9db5da4b983189238ea8c0ec96f298798192312c749729bda967d279864c880c4c125e88a215974495a7cc429dcf574369bda6ff46f10bb2286238efa36226ca765dc383f2046234efb12b4bad268488d33e29054d7cf4e6e10255e193264c8b8e26306161ca0b182188b38c574ded9e75a3971451c459a49bf6497428e2811c92c1b53d64dea45c459f7729b88f425b2ca87385784bbb4d61ae2907db646e8370b71cc663f4ae556aab610421ca36b8fcefdcd6ca70de220ff82b03d75d9622909e26892d62456967511fa409c47ad2ccbdaa9f4a705c449ac2c25e50cdbadf20f0719b7fb46e8ceac4cf1c361a4e9510fb16261efc34154a40b3973c1e7267c3879a89d5851db12c37b38c4f63719412ef86ff470aa2c2a365c7526c42c0f07192c5f52722f3c1c4ec8d55032bc7e43bec3f9fd5cacc3e254cc163b9ca49d963e13ab21ed8828885187f3c92442a4905b0e2dbaf8020327884187a35a4811ba4a755fc498c3295b9814ad2968d3a395833331e28fc9ac89c36135f4c550a752de6882c3f9d2649c1426415ca76f38e8dc2842e978982c951b8e6159e5f52ae7662578ef420b19327060c1011a3662b481547fb59f25dbb3e13a39d714ee23e2a8d780ce1b512fd5809b927759624b8ca14b037ba2aebb64558c1442c339e389d8956d1a12c2831867386fd2faf6b33166388d58b2b44c7941db329cbd7a4ef7b48b418693c509b3fb4ceb91ff319c326ccae7edc9d3530c07292a3a9bc454743731c270c91d19fffd82c0f0755fd0a2440e7de1705daa4e466d6d1979e12483c964526643f75d3858760996b6612e9c4b56d0a095925851c9b185c36fbc9c1d3967656d2d1c34c657659066e1243be4868493c1c2219b4c7ff15ada4368ae701c931445bb4a2b9c53c2240daf334d2756e1e09e9b23a60952e11ceadb8450425febbd291c2d531022c97092c2612e5bcc33be21fdf63868c890f1ae5138255169a6bde1567d2c3840438b1850e075279ec60c91715f10f013987fddd029e9420b2e9cb06ea4788e269872ebad64aebc5b0d35e7af71966230a136537ea991d2ae1a6aec058e8db10445b25cd84dfab4a86aa8992087175c7c89c04716577c28002f957012b5385ddb2a42732909c790c91d235fada1a697430b2eb4d882468d1c5ebc27128e1ae6e4040bd1f6bb9d11e3088cca1075ad952086114e49aaa51da1496613a5229c4bfbb2e6d4d0203a12e194f46fec68fd8fb55c16c5630ce15426832ef5674ae64912c2796c4536cea659ca3d46104e624c9dde70eb225312100eb925a56d4a963295fe07071513e23f4146cb57f9e0f8223792a94bdb0aeac129a80b353b99761f2f0f4e4205953dc1de812a2ac4a09405d9a0cc1ec4d0c121aa08a11b536e9dd4e7e0a0369a5f62353838c88f535142ba32d10d4e13641257f56dbfabcb0c62d8e098c2ed051339474fd663d4e03896d2abef5757d2eaff16b0183438869aa03317f2dd583e83f37f7a8599d930aa443238f7c4519df2a3189c6265b598a59c21d5078363bafd8c4187fc82b3a49c7f12f33c56171c7305bd0dca92dbbf18a305879467d258b0a83b293158704cd617f4428fab385f5a50a32396103231aa38994bb4794915e2f24ec549e84e102b7751711425ba6d3dd7531c92eabdad8b144648d21407152f987b04ddfa3296e2d421329c503d8d8da22f48710ed3e2f59142f56946719e1421a5944b76a31d8ae2d8be3e7b21188a83525aedcba4a4a83683e22cf2a33a8229adf43e7152a546a45bb798ac7bc0c313c7922b32da27892d912443864727ce73c9de4e2d7325536ec1818386a1771b33b6e0b080c9bfa1587080c6013c38711217597d3345ddb0f526ce21642a1322ef85cc4e13e70c97a99d1f7ea5f732038f4c9c73b643fb2893e4b261e274327d9a9a578b9fb14b1c8498d3741e9aa747b3c4c1629e8d10a3335656e2e027bfb3976a76bb428943ae8ae152cda5332771debcbc41a9fcd520a287240eeb23aaffe2898a9d08de02eb118993122aab48d09b279ebc0c078e4708015e70040c24ce27216e3293652535a8863ee22442a83d11edb327a478510f479c32c4525518690d35921e8d382459618410f71edee6178c38c637136abccee543a7c1c5223a194a735393dfa988c365f4892198897b7ef87ec523111e88f03844d225ba991296459521630b8e36c4c9beb54d89101f29a385385e85cc5952b110e24888639824bcfc358338243913122fe404e111886390674282d99aec9e64f131e3e3021f13b8e2c3031007a1920c1593429031d713b8e2c3e30f7bdd5c4d1c597aaf871f0c42344e6ee632a5217d386528b770fa848548c0830f8d5051cde343c5bcd2630fb5c5a66fd7b518f5f0f7c99341847b9ba0ba3ca86615453777c6743df0708773a6747131da7ec898d750b304dc35c0c30e87eb133da24397a60d9a79d4e1945962da925bdf6d7e036c6421434609be068d0f2f5f7cec171f5dbe3014f0a0c37934a9d89325c489f8e7707851a144c4fcad92457238ce56f28b5113a75e138783ba4ade251a389c9418cb15f632c92df30d6713f23fd7117465d60d4791a15e6445ecbfd886f3a548bb0c3961ae2b6c388f684cba1d0a402040160e415e99a639b99a82b0700cd771d715bac2b9f572c83c42d2c58d158e26729e17db646ab50aa7b0ed12a236d829930a27911dba3189f3b6e44de1a0c4f7ede6eea4706acfb01941478418bb289c35b3e35fddf3f20405c3bd65fab553aa80004f38069df6db97bb36424e385d50beaaf15fc1454d385f703f3713a6d2cc4c3858252fbfd494216596706e3b0b2a5b259c82da7e8a3cbbcc3409a7eaac4d966e4b7d24a82641e9d095239cf2f547a6a0b32d4233c231ae9588cc6317f4b2221834668f20e26ac95c0d9df171e80e4873040188702e65f2bc4f96943d0de1341733a6a4bd422a5f08af768c5b8a93fa17c681800facddc8e105003e4180201c5c82d0d29c03e1242385c6ae491235f483936aff9514969b2eea8383a59862a788580f0e26d42f2d24a931e5a9061008c083d3e40b937d839b66f67770d24ca52bf2d4c129fae4d199effcd4f939385e586568e91399e3e3e05c314c6676c4a99e6e7032e996c93d34e9736d708829a5d998b306c7e0ef63c2d2ca29d16970de90296d082f99c171aef24de58564700ce2cc542add8ce4770c4e33c15e4d3dd4a86cc3e014847cdea697186212bfe019cb681155171cd3c9184959d80a13710b4e21a99ee50b255ae44b00169c3cf4bfa664372f395dc551eb6c738b4aad13a48af328a5952b4890396fa6e26076797276acc7c9a0e2ac3549659fe40b1a2da738f8a9d5202aa864fa35c531e4b90ddfaf77df95e2f4e223c9b25f525e8414c714b3289594b8b875ba519c2f8e4db83ca7c25213c531838f8c1cdf97b22514279710e3a8b2d92fab7c3000501c53fcb9ddbad9a429f989c3cc89c8eabfe0f0c4412911da3aecc47964636269881387499b33ab6bd2268e3116dd6c8297c865d2c43944367d260ed252c8a1b4d4d3d7c7c4295bf5fe7a84a462f99738467ad5baf491f42d6f89e397cbfad76f48d2f295388574ddf4912a74da4e89d36a6668ff2ac99bf4499c75476e5b3049e29c67f2b52f7d479e237112ffaebefc69c15b481ca45e67987871b2d4479c524cbe7f964bb78638e268da726ea5a1469cece47a8c568811e74b2e2792d266a46911871141fc3745844c157152639ba75e464f851271b4145126376bfbdf883804a16d95bece62ca218e1e4a29b56d9762c418e264329e5ac9de18922bc4795344e267d68468b3f2b7e48df020ce2229bb4bd68d200e26834fdeefd21c6913889334bbdcca7db27b630071526a7f6232b4655ecd1f4e2b1629ac23dccec4f8e19c973ee22d8dcadf993e1caf47c9598d193e1c920a773a520ced73dac3e9e2cba58c889239e9e17c152cee324c65caf370d26ed75a4153cc20e3e13c399455d2a941c8f70e87fc954296e9d72ceedae1a4a96eb4869716ab6c1d0e5f363f2b527fe2b77438c87c5149c8a614e4b673384d5ab5bc5e4185d5e57092225267d8e3704a09a32496b0701b048783c5b49c60296648e1371ce4a89ecaa152248dbae17cb3d1e2ccd4361c368892bdc8291b4eb729fca436f96791359c4289ac985d8494b654c3419205e16e266641290dc7389564aa90454fdad170d0204744b6cb1bfe198e1a93069933c80ca748226f440d97321ced5bd5c42493a021850ca79b5197936d545aaa8ce12443aa09975511c3a96e75b229f195d387e1b0de953ed297901243c07010137db38e26d538c9170e9b4d9fca9ab4a0712f1c564f34a4959c97f22e9cb27c5e5e621c59e2c2a944e5d37095a2e9164e5669639f58c654222d1c4cb575690b65e120367be44dcd9a62838573678998d0e9150e7bfa2c8ce8c90ac7b4aba65c92a5881856e16476a5e57ba7c2b94e538a20eb6ac6bc291c2f69dfa0662eea962785d38b56ac13b9454cc845e11893aae8fed17faf43e1d4611631abeb89193de1f01abc9234d79c70526f1617f97337566bc221c811f55a1582e88931e1781a6b6aa4664b38dacde8987c9b21f94a3879cac9b4add134879270d2376d5947e9503946c2a9ae45ee7fe9bbdaea08a74c9b67dd2229a9a76484d3a9dd0ab2952fc2513769d8b86fb1c974221cc2c60c2afbe843388f7b5e9cc916a42809e19482124994d21873ce0ec22989346a379899be080807eb114189b7fc83c3a5a0525710611f9cd4de98fbc6104facdb8343da1d4d69920c994cc283e3fe8b1255896695d31d9c2fbb05e556afdd1ad1c149b3e9db789a8c859883735eec1273a15e41e97070109ff9332a96f7896f70b25ac91b577923656483836a3999746e08ea25050803a8c131ca84582ddaf49f667a30001a9caa2da56ce608a536333805e9116287a4cddc1a13062083535a4b2204a59268cd1f8393081f95545c8d1b71048383c85b6d4abd864818c00b0e2944e508a7368d3ea501b8e018d297efc5ac2e3ffa01b4e0245a46680b25739ff807c08283accad817b2056deeafe260dd9f5695aee5d657c5612d8638499e9e8a734bf6cd27c442ec1242c5d994882849524abc1d9de2a472e694cda4442e1999e2a02fc6596f9858dda0521c75efce4b868b902722c5694c3cc382d6a3389ff6bfa64ebafb0d8be258bb69577ef396f04c284e722932ed7f5d88a605c5c17bd29a94249276de4f9c3647ac58c5522966eb89a35766171311edc4a94aebee5bb48e9c1327ad4a9be426b334a74d9c6293aa8ca01ac5d4c4f9ea4e85b03a13e79ea44a88de0d268eb1c9b37fc3bcc4c9747556e957ca362a9638843121d66a1b73a4a512a7d8582584aef85fb050e2742a448c91567754582671fe535632c8587e32552471d80c32a61c3e89c471efcae2ce4e927b219038a890252fb2f65b04e1234e99f735ea255a36253ae274f325e35509f11bb11107f5d297cf0e19719898912ac435d7b42ee2b4692e481d2b8dd9a288c3e6492a89dd505edd25e26c1da9cbc3bd235881885312baed7f54e910c7cc193f21a5185eb5210ea3db5204b529c4b9f2f859725115527b429c5236df19d56c7ab23d8884faae6c29fe268873462da5ad0cc449fa5fec05b990646e0171ba517f3f937e3df2fdc3796382fc16137b2ac90fa72e8b5f2797a52a53fa708c90d344d67d496b1a1f4e31294c8934f98bfd1e4e32da9908229e157a30f8846427538a4fbaf3d05c690916c6c594783095bcd1bd133695ee70d438579bbcb42aea6f07d484cc2eab212eaac3e14fd296ccc576a90c1dcc942b2e748e733849ebbb9231c44e14570e9ed8eb3d91b1445ec88a381c937785d0a52386a42afb2d9a6f7c0e071831580187c377b756924fd3ccf00d27b1759af46a379cdde6a46ff08c3b596bc3f9f26a99904165c34149ee95604ab3dd660da7245d8266d1b170991a4ea1213c84b62babd2a4e19032882bddb04f8d2d1a8e7ea78450e7259489cf705095d23fb2ddd8298f0a5698e1147a2d7268e6489d4ac18a321c279fde88c41039494c8683256951824b8a79cf8ce1dcdf33326917b14c59311c47f9a8287b1b5632250ce7de8f1d93ba11f3236038c88b3b721e4ad5462e0a567ce1142cb8c698345e38a6ccb10c415e10aa7117ce7726df72da890bc70b15dfcf50a3216fe1a441997a8bae9c31532d1c25baa81865c45cc4250b674b9aea279c25cbea62e1b47d4246d35a5de1048a7da8c4ed0503c248241487030251201406a071a600631408001828248d0663f1681c46c21f1400035532263a322c161a1c12121410108a03c14010100c8bc26040281408050220a158708c23d1f007847dba4834dd96206082be846a04161d2c8fef3dbd4d033507082790a38c201019fef948e867f8499c3f26e558eea95539d24fc7d646c27e09d412983661790432923c2dc12a024e850d2673165f2884998441ca06190047fd3e798a239f72f9f7e44734056563b43db2cd2ca1d65799e832ee56eefb4901ece6af072484753162ea4e3147c2ef08c246980ff51b5d6d9d6c4590822ce9d9192dfd596f70c2c4b8de089751e7d76d1725858f9e53bd4a87e8e83c74d7b637f35fdc01368c6eca77aa4907de187491437042e909ff36c2e6c98d989d7ed5506ff6dddbefb6ab3902f11a283cea273011187940a3e012085e70f6910592088817810c4a5ded280e6c817959e158a0594045c08081e2d5fbf683dd2027201d9060004a90c5c03e41e4018405e009e002670164030725c84c4980ebe1caf780c0d73f9d0eaa78506320764f6b1217609220379f890db420d715a61ea08c011640b93d0d29854d2f80820016007a80770013007d1ec00e3b39b9611bf8310061a06080e005305221f98228035619ccc5686cc0d202bc0a2a0d1c0b102af867203903984e208ddd2100e6539e178b4080c0b0df682e178017400168073801c8af006a8e1d7676e200eb03b6075a0d9034c027400370012005f82920290357b6bc3794e1027a03ec0720cf0086dbfa08c7151018b08379770e40168012107fe0b940aa0b3005b2cb573503c2081fd88f011400f6660050adc690843920bf401d00da00b203a008ac1240293809032d9153420536000a0318e39cac6f36065a3c826ada004d1b10188052407501e000f9007003d00d204c40d8dd59ea15809f00af47c015d5fd2f8b06681db032908a00a69c00a4af118f25373790a37818cdc7a4db03f320f97107c2e22349434eb044873acc1fef47da7dddcb83e041711e84920360e1ecb1ec81301fa7aa41d83069b01181deead7cc0fef3cd6e7d0092f6090d3f27e375b01cb2c4ce6c5486bdb8d91757d1f98253014b6360135714da0521cc08adec6a3b6d9a0c0a480a758a310a4687314bd918ebfac90a24f214d814c318cc2cc2bfe94be27535a14fa32ae59583686081e60a56ef64284fe4b3e7114bd6124f36623052385491180628722bb293c4ed94c9d9bc241814e114241ab28fe24190b9dc28ae40b458b83a6108dd7ccdfd428fac206bcf81b714f9f7c013914316d133d243feb214d4249089089081c060c4b09904f68e5d0089ab9fab945254087809862ad68e06f84ea8b5e75db2aed8310609b36c965b5a3b8beaeafa9e46024863d7bd88517329ff0534a80ae81a8616900e3fcc10990ac16e42003167837d3b2b21f2c4f42d9b5510477682942e3d5b0e5068d0973d70b38bb82c0924408fffae4c0c5b064ef78174bf2013a9528783fed9b110033d7193e6d1b6584eb72f7892b7111f551c1155aebd8c478c0b7d3bfbca8bb6e7e05f38a2f8cb1178ead0878891d7911f212a11db3d2c433270e6a976b2f5e615e30818ff4acc2646a3f0d7f9b16e75078502a2857140a5058e2f5e306e162ceb5d3d9a491e58c10fc8b2196b607601d8fe4a5d1eeaa113a1bce2501a49fc43ab0900a02405c708c76dc9e5e0a01aff92e56f46224899fb5408942609a9fae403708428311b6efe48b31c573c6e3e41e1b1c474f19774b18bfe2d4a462106a0e0d7c20c4d9cfa1fd5327d52bf1a52459253c71ec75db710cd31103884cb7080b13bbe5a5914d73a3d3768b7b489607bc47008b377c918c2496b778e9357516d720ada64e11f3f15b1c9ce923cbca1a0c4a83a60111113f72a55c9ae98aaec73137a5975c15c6fec86b0354371f3074a5e73b8c5968b8304bb14d841abd6b933b5c545d5e9b4d67083836d94cf932f8acdd72b9ee77dce37c27d980eb040c3bb3c3565ad2a20e207e49fccc9fb862b26385750d82e857461f06e4043f039cd1424c8fcba17408132a369ced90c25eae8b1c95730b7e6348b2b100da71dfaca0d19593cca72380eadf381bfce80e76eba1378c8594cb0a4714de6d5a5e6cc464e3c4fe0375844508a5b2e1cc91d395b4c2ed2c9a911f939fe5498827932983fd9c3ed86a90805def7426caa232b4b4a5d1f7e9ccc63b33bbe15377cb047a3b74fde2a7df74e6b36f9a069803ae439cb65b5af50b3c62d8a557e33a9c0772fbccd4b2f80135e4ddca2cba8c256c431451e6ccb1f8bcc56deb6fab1bdcd6dfed006907bad0d26cd0f799bc0b27b6746d31d7b422accd7f288ca13897f15aa628e9e430832d16b4c4472d9101b6975de840b35cc7ad8c22ec43862b061bbbccc4c34de4062b431e9f223d9de6f80c7a244a5d0a1a9a58197c1bb401302417bb46a30b267c71e76388ec274be8d5a316a420384c34eb5a881197e004d44704b27af5f6d2700da618a4701b63eac61594ce4a4ff3020771cacf0602522e5a5cd5bf7b18efc4e4fd42135d8383b62835aef13320d121c82f1630f0da01c84588caf3090e1171a70e02637324be16e1457bb8c88a81f7825c71fec462c0f1b900385a3219c4af3722c9f8efa2b55edab2b29688ccc0ebcda887229a3a7ce0592e760c4f0c9360621a0a8b6f7131835db947f4004095f86b87c326d054e10a54f608ed3993eef43e169baf188b2fe4f3ac02cb10ce350ae06e8ea2e4169ae5b506ab3a21a298f2058467a9601c206951fc9b035513cb51d33e96e24f2af51e8e250e4061ad00f2dcc858f7a3b838e6d01cc16c21b80ba6f3db58c1baf9967796d0582bf83b3d930b70286c9e063aeb8362ca57c01c196dcdc2cda5f347f83c8cb8e527c81196c95cc69d8dcc9a6675635b6e21b8d1b64bbeddb84c8e75388e24a801b20eccd97c3b4bb7042c14a43a7e6200606c73dc2809571c0021ab0a14a8b9817a9dea734ea58bda00939224537589acccd48630f73c7cfc28ed1ad8b82aeebe01c76c7269907f22173bcb3af6a4fae7c46ac5049ad8a7fd2a5659443b9a6bcf6fc2cd202c28cefa0cb615e15720e36bd7068f31d95b5251dde77cd29ec5626e9e68332d9b087c2e2d19aeccd6a2a2590cef301802e2361b6392f8304400614da68014ec4de0f4050e7d93c630bf4803e3a10dc6743d83e539b92c32f3c2a2b078a37afbae9568b0f4ce6380a8e732b822b98ea928778ecfe1d57a69dd985e69f508c67bca385f979a1ac215f2ffa2f437a04a7f74180de147b3f0dc82316091e7c40e967b241f8c0c28a857b9d7b118c99742802a3d497b3f342e4b3f6df239509e454b20efc898a4a614b54b085d2ad23518a203495a03c32092973ea1a037c2917400cd783c8ef879bb6c9d8577d2035002ce311039c6639e4e511387ec51470327021d0e4f772299b1da8383e7f6f2cf5f7b8459311449b210a311f0dc261c1c895b86c45bec40dd3bacb812537d4b31dfda5bef7fd427e760fcc86c5a3bc8c65f43d885b733cabc220f25e754e3977201858ee70caf024d4145b320fa82d6bfd8193f64aa0d112de4883e13c247fd7171f1046a37ef28d23d699511b636dc624e6e65730025598ea825bf3afae4bc0f8ac502da330ba139abbf1349dbb1b42a49eb590ebc07906401af02cbc8cca9f7ec2a24fce99880549003480a060a1098d04e2cc9a5e423428fe4abab24d319115ec3ffdf5b75e35455865655ed6ec4b734f463f3360d36bfff312715e8926bfc05d89099103bfc2c838ce483a1f179a95671106bf4c0e53331c5d0683ecb7e04879399c0ecedae27636a9130817f930f12dff03256cc3e750cc4e519143fd7e5050d611756e74dd0a4a7754ee03100abe2f71b5a9c7bd697609eba2362ca194cae3fa9781ca1254bfcd0897bca290045fe77e0d359d6289f61fc7d9d020e0065697c86701e6eab925d9c5821e3bb8d98e90ac9217df0f155aa3069cb91b17264d481b55e2f774330716bdc3f9b0c4497e7a5b3640667dc80cb349dac06636116ec1945d09a2bcb83fea8ad042a168ca7432fa6d0ec72299e382d0911113d9e3956046e7f79f232929e8a7393da1d5de568e845893cf51b3a3813eccd2276d491fb57b8aa909bd5e60f2dcdf34582331c43080b6affabe0beb78466d199e64159524a54448ef5d966c67cff52b47d0508d1c6e15f18b21da0ad1a505197ebd119e255ae9795b8e535156ef8670d1b177f9145dd3d457a0f833ae130f1c8fab9d3962b463d2fcecf29d8a390caeb6883b995275215dda32e7b748600b997aee62c8000bad3267ee0084f16b4e11278f447d6def22098153df517143d192d12cab0697e72a0f5b6f5a4a46db399c6424681fb080a92c27e2c870eb2f00d5b605e125aa3d41da28940042d6c783742f04a80ef7dd2eaeefa88422f6ff968a757d28480805ed0f6ca7a0a8f4cf12c4b083dfda03e46b96a5fa1b511ff5fe6a00265a6306f762a66490f38f5bc819977b8e387bd33dffe48aec2fdbb869275e9ce25f32965e6d07a68bb654d088e60de38e1f4f760c45524adf2eb2ffe279b1be2c0ab614fce0995ddb4f1e66f4be2127778df03640332d92fb2599712bd960ec04eb1014264e10f1a3b4d6611a2a3a6b238848f872491e40533d8a5c01b5bb8b99580fab7c6aaccf989f43356ee4bb82ad5cb4454dd466a74adae9010ad994f187cee4ab15660e027cfedfef1dfe7fdf034d4953c61aee9ff7c5a36739034fd7f6991864aef9c2d2ca16074b7e989c29e7046c04757444d3f86f4ea42954814d690f45b06deb962b6e1f8b5b26ba819350e3a4b36588910ca01541061295303769a195d7a0d4ba4379ccc61f31199b82909cf516a62e2f0f6ed7b48f9d232b1fd70bddc36520eaed8116b509920666a0d72b917c74b5fece793c949f3a8628e117bfc40fee3ce4114259870cd6436f049cc8e44c2963897f92f01839c98f7029d0ae5b9a908f00de3ebe885f23bb341cd1e118a0881d664a67439a8be538a269cd0e9ee0db247db7a330107a58cf2bacac673a0c1923cdb4e9efc06d5e216d7e8bc95a29414155ee49ff1b8b33f4b4bfca16cc3d4914082c9506af6a28bc373ccb2b37bc4cd0d231a7453288556a8aff5efcfa173b289c2d6b48a7e7b879430147401704491126222029f938e30b142b249eb40588ef4b8c2e558869b2b96d7f3d103b4bd547d6f151ffd37cd47a7d945c8484bf150ccb32d300f69d9c8105e362e0125bf1267a00adcf5fcf954c6e106e5c8125f63a7f6170f812b4c8de7e3fd9135ab6aa2703eae49e00c28471f0c54212ad72ca98a71f16ec4e03e269049021a07b202faaa7f78776407e0c13db436266c3591787329c01cd8fe59b3f319021e28be96e5db126e1127c7407dc47250b2f4661fd723d46d6b0b7864d889c3965f6bc8b3b0ed65a59515c6b7e0364c4e117bbfde2c7ca977dc9163643c9d66cc836d1ffbacc5eb398b1df47223b1164e89c9e33ab33a14d58becdd4d7bd6252190b8bfbd6ab7b66322028b2cc56c18f7646bb77266edfeb2d3629842cde9dc980ddc0fd55512dc5acaea0e9b4be0e8610f3f1d789f0b770872e7f2e0b12d1817aebc7fe3bba51dbd7c7cb489e598aabb13716e36fceb055796a42c88d9e00809861b6540dfd236f20a98d89c46a46abe711efb11177e7b75eb5cd24647ef85799b8b4814e583b85436f2e037f4b565054e2b6cb5b29b1ba8627e8ee5963b02a4b9425b0d94be6c15548125aabb8613ffe533f12ceca01301bf89bb1adec531bc610bad9a8e9c8b546a1949faaf29926302b59804343c4bde249aecdbb029f09ac7167c7472c02116d33f43036aab075937bb742412192b8fde2200920f8e91a859c6cffd4a510b2c4b4971e59d049ed492496bcc0b72dec80593c7a2d40cd4644a04c54f77cc484a32a864e436262cc189ac4466f77252016332af23cc2bf3fc32623612cc52e1502ee3f96f28b77be49ec0cda786874503d87f0911c478d33cb67c02a3841b1fe0bce80cde7454a4b5d0e1126060079f27a2fb05d55ef5b183d45bb2ed015f4083dc4457cb4c698fc2625aadf46db28c21cc6261b33182ba99ceea5189c6c576855bc7ae015164b50c1b1da74e15d05bb2c32248202bc1290b79cf033d713110f46ca252818cc91e09295cffc5251bb94659143e981b0677761e64d25463189249b9c150397412832de2d70a5cb9b294681c54a1380395fcc9be04790a741ea01a12f87a3b5a1afa9f307a94a08fa04a2563bce9dc540a406ab760e0029138659c76278248408ea6f656260e09639e103895ebb2152b1cf929b67addc50fc22b56002a65ec74eb9c4e5578ed1444570f4e0826473683380cb80258edd9cccc07cbe9e3693003f308bdce46a1da3cef4239d068bc26eeb3cd5d1a6107cb30e10ecca731116e0918d8b6aac15c25c2b96fc394d98ec16ca3cf48a15d5a88a437ec14b5aa76d57b0ef02a47ac8ec40d1d0be1d5d130510122257e4cec22119f009348ac679e3943034902b7965cf70d56d9ee7080aeab50d03fc04156d248b548daaa26049b94ede1f53c06bd4a235071eebc4751ef46e757b424d3732cfb087322936bc1fd5db9fc13769e8d2baece84cbae55505db0f410bcf8fea91b4ce0e094060280ad7abae2746330850d544c2f46f4c9a045bdc444103aa41102ba31acc6704fd6546ac0b707c5abdb82155f8cbc479b59aeb53b47a92a6a518399be85f8eb518c94b76ebf4756ca342a03ed9502e60227c02720ddf715d3f27d849c8fa510740cb32ec2a767d57cc7b21bd7f9e9ca78212acf2eaa9e31b3b808f043f6f42b47309fb21dbd87955122ed90b310e62c946a9632a53fb1f9bc2f7e4c10bac40e31f87f1ee1d1ccb39555092e1ff82ae164c60baf30533f77d13066f0ad4439ec5ade2d5e990109add165a455d365251be84b72a9c214a2aa90f7eb09883988c5143decd144498089abfba8d9a15c2fb0d6c1693294d902b99d08b3529fb0723c727fd89e36c47705514b486ee7ab68c4d0945951d2e10b198ccde3f6a276ed8f1dad814f1b1d6a8e3c0f7a0b19bb744de09eb9406d48d319a1c6e70fe6e0df1e041834617dcd49f80fc2ce23835b4f06956e25ea99ae2518c6fbaa80514451968447ec4a6a1e9cc93ea9c22391aa5ea3a2d16537313303adee96fa0f573851ebde45c1aea8bb285e4657e8e1297afd80912feac10eabac22a3c3291c80f6478a08a1a2892258af75ea3ba8c50b70a98f3d9c64adf6a2632471176e99e7e68e5a6aafb7bd354097b7e942a86df34a3ac4fbd28d1625b1844991a6dd3ccda080ce04090ebea9911851987cc5bef050bbace747ec36c661cd29e1a11df12aadeaf8a397b1baaa480122cd202c6252713345996e646ec354837a98d462b53076433aca6c3fe5a6753b365e8cc85de0f22d0459271ea7734a6fea0af6b898e39587c6a2acacecc0c8231e978407a728f95bfe6c3c29e7049570d05d6cba1aa295b471b59361233ce86ed08fbc9bebcc852173931cce92c81cab80a1c0fbb67c654d39be57f2eef1d6f6fd2eba2f7f5cdc72800db38451d02c835675cb2ae7440518d28b8a32594822945c66a21afc47a1443299b7500c9ecea5bf4b971ea7ef17c000cda4bb316e6697e11ac58c69b032c673cbc7044111769a04db4dbad48e2cd145de2bd3a8dd0ce316c3b8d4554586f7210557862acfb745aa2e8c1029b28973d19742e40cc66293430f44d8cb026c4b0b8192af1eb08d256365922320521296b82239e8966969921e1b1268dcb8726d0d4b92ddd3ec79fa97081b705ca6b7117d533a2c87955f43df43551854cd8b7b69b40506070758d5a06471d1f2291c8af9f36de2580c5e7bee539130cd586b36c8338e85c44057e5607a9dc1f906188002124c0a19fbd4c98ab47b8d88efe4814dbae56812352fe145d3e2811c0c3aad7014309eb8cde3bb1ef7267f65152ae1903ba7d1a5144b550437692ed2232dd48dde0964d8d452fdc6f8e34889b7738712f094d8d1dc00180524ed83c1d7c10a8451e24863fba259a16b1c0b3db04992053df73f2a9a97eeadb0d076f7dd6d9da08367420de842d0b48691a0640799898ff42ad53aa187f974468e73513c33e7a34e267bbcfebe7fbd2fe632eee660b1f716724a792b1b0416ae17f3ff7ed3bd6f5d19b280a646ddcf313ade2732ed59a1e4ab8b059cd955da2331ca8d57802c973761b1c79f9bceec5fc67750a9c93025f4a0906a534c09a3bd9154f2855cf677d2601bf82ec9c8a16340bcd8f7b9419daec67a58a9a04957283d62ed69a686e13ad78b1b032484e19251d53473178ed42bb8a88af1677efaef4416da218070af16d9e56cb7e2dd282c15593d813808bb39e42aa96ccc482f7a27b6fab1553c861bbdb12bd47aec90e0ae70c511e642dc48952c568603f9aae414f95d3f2d9fdfedd7ce651a38b45baf5e880d8db75867f6da2f3185d7ce39af99e2fbac6470ff1227f3720042f116f6733dc87a6f0a6e5b65703d72e997f87dd8126d1469f6eb344de11edfb7c25f35645c0acf0c1bf52fd4e09a3b1725cf44a79a9092031357983e514649e22e092aa252dc52be91098e4fc5742310be83650a4a81f108d9c2b2853a4f6787019ae68c47f9f046c453034efb04d2e527c41febe11c3fc16113d4a7ee87a6ded5c850e3e2154c6e528a3684c6a7c067fb6e237a53901a51c1dc89c4ecabe61279acc4bdf803a6206c3995710787c72462520e092312ca11978e213441b0b63e4e085631102cddfe368a85073e702181f4185df956db3dd8cbf1ed165ea727b48af87b017d12a2d35c8a73909a85f0ef89bbf56300b4bab2c43915fe38c1be2f476da46ee2b3e5e38ca76fdacc452d73e6bbafa9acd2fc3fc582c602356309ed6e2cff8f5547d83585cb352c751320959ad30c9e68a5c136a14ca79d59203480a93d6d0fd3ac9ef08cfad2eb6a9fbea599f33e1cec7494630ecc65094a96e46c69912f82d3f5db53c593a307f9ef2fc3c54ae2c7e344b86d2e6774d1fe974f97b6953a0da23c0c5adafcae24ba5b464711d88b8045d1af283c6c24aea6480bb0801e354d6b726d86a1588f48c7f1d6bdf08a5d489dd7b3a219b4978cd3bc654a0effaf58093438e1941965d30a6058268e414754df51ec90600c7313dae79f71627f4c44e10a6e69a053c27635258e72a93785b1a2a7a082b0a0d430e81f878081c1403e90b12035d53feb7c1a7f5f2a4e4f28a5508932d3ab5ca9659c0e8bdb7f0f511a4ba8ac40aafbd01f955e6b7e157e10eb643ccd9f1adda37232f10d2183d8f985e8a0326f034e4bdbe9443c0279670772a6d0ae4afa75ee0a852def06a68ceb40c42896749d813a7fe85334321f1c866b7bd8af0fcdea68401de51efdc67c4e24449733285b6b3e15ceffd40d2adacd187e3731966f6c412985d2408cd506de469a41933fb6a42bb7bb0ded8c6763a0e17e8c39c8cb711cf8d87aa4831cf15f796105ef37252957fccc44294d51b9c55ff2ac418707b7007bb75b64e91879ac8ffda2c75409ce485b65e02720d511c7342eb8820a71660b14c176850ef1e7495b52847814a8c3d1ce08e2d371553c739bd9cdf37d8f5b9b90c64215aade6ae35bc356b1e90a88af86224cfa911d01021915bde3b32209a31be6c19267287265a99202307331f32bda84cd934dc0ac0e0e607dc601ce31fecba873f2d66ee0fcc266f64b6982da82d35b466ec1231cba558e0525ee530a774ac15e3272a5515d0bd4a4e4f449e9af09c5b8a39292eb29a97f258bb925b1713cc179681e1f7df34db90d4e609fb39843c73282a0f0ec0a4fbde6818e1ed6f1a01fcf98f0d03be5a142693f62a52d9d87aa5e179aa36ccfccfc1e09e88b0bcd12e682713a12478d59185a8e779f86491f6574e58c2b9733638a3bd1942f94ad945dca9d65b99cdf3d47458179451988f24a9988725f4172b51184d37624d5f1afab60d16ccd05bfa32f3df26fbd433ffe5bfe64f7283b12602f189f8e448f5f8b4b8ba7c3ab85637d8650300911e92433a96b65f5c96605e81ad7c83b5aec227ab118b4b8eb889dd8d384e26e644d442d5a03d13a88dd7a23a6857251f11e3b4393e233474f8d5ccb8c660d264c730693e698ceace447cd8b571e6a341d86e9b8c04a0ce97121621e86113340be8627168660f092af8a05bb7e0be3afc49f91d02d4cdf82eb2da8cf42315a706ba1bab8305a546f638ec185dc60b09f0bd292a1d7c030e202a87af485d2c425cc32703a5a422044544b832fac7b452333e4a10790501a622997b71d7ffa929a987e403e034c1ab57b6a247d5dd27b129553b80a8ae433f0dc5777043b9712290367690e953914b35b4cd54f33878a24bf34bff0a3b39bbe463fcfa0412e025d4f295bbfb40fc0af7d284ddd81e94a2585426e1f8618018530a036e40190a25e1cbd57a1017dfa938c2ee2b2462c865217092ef761408a4d27f88ad8e55aaf295b565105b2e4ddb224706f7e56f35557a2a641b19436a9243df26b43fe2b9623c2b2275b7e0f89d9cd0bd49cadd7b3f882b4f03d2c45ce083bc8dcbc27ae3be8f7655ce5b6b3d5b6edea19cc9373c9f4b2c268fc87b351258ac77c13bfad6254407e41a0235780dd6027bfe4f6b39ea6781263f278002803aa9186774f8699b30f683fd93496046845e08faf69dc4459d23d49808328109b08012ec16e488f6c22797c439af8f62c65395d5a651b67905e988bddf3b9c7210f8c49a2b8e02d1e66214043e4db017a784f8c3b80b0a4900330f0fcc0f303cf0f3c3ff0fc009d37f1db165bdf851b8a48410aded15eab1172b9bb52ee8a283fa1d4f9398a2bb6d90128d57f72220852087b08e308e42e057a7d0ce1b323f7b0b228d047b626ce62a4d6ca4ef07c6f55c592a7308112a4be2a7fe07f3945042885be97538c17429614bab9e7cb614cf2c3a021c028d4930d923ea51c4cc649124014ca6cea9bd9345be953040284e2d85257b6c5982a03c531b9519773dafbfd4431ebcc278f8dcfb33df1860e374dd071dff23b81642cbf9917bb0927fced0f1e778ee3678537f19588888795262c8fd385943ac4904c2469abf294c7937248004ce8527a63d9a74be881997c8e9a8e2e87b825b47f9992d71829c7bc7640804a28d962e374982f22e54f09dd64c6a3d8cce9fbfa49e8e7c169ac205f1e462f09ad37cf6fe48fc3d0af4742bdbf701792e698bfe290d06388581a3b64479df923744b132c3cc8f0b03eda118a784964eca5f0f1e64668761e6c4472e8119b19a175249ac34c591ef2e54568ad215e3a8fc2a6d4b122d4ec91ed04cba61df92311fa7bdc48928cee583f10a1f9e5cf5b7b1c42abc94147cafd61b777184289de101f67f140234721749f6dcb3928cd732521948f1d4a6be642d8e00e428bec16ee71201f245710ea874f6d1ee94b749440e841238dcfe6c97ce400428f73fcf114cbc2c7fd1ff438bcc8f172dcf2713fa8615b2ede2b8773721fd4088f4ddcfb7fefe583d661436ee2e498fd1e1493b0cbd159f0fc307a503f24c9610e32824d300f6a5cc7d8f77eefcee141b7fc2083db77c79a3207cf299d54e6b083962b928cb975d03e74c2cdf774d0dae34d737acf41e9986b67c2b3859095833aed63c6416bedeaceca120e9ace5575dc298dc5fc1b947c8931793c8faf73833a9721e11f498e63db062549de10a32a987e1836681d75ac7bb1f6624e59831e2b7418a77a54c37eff6ddf9d2d69d0357e1883062597777c36e21625953368bb1d427df0e82888c40c6af230d5c6f86b4e1d298362c1e68265cc296b44c8a0febd650c5512fee36f0cca475797993e62502ae2858860f93cae5c1814b3ce8a7ba12fde3a30283985ca94dfb9dde15f5037c5d4445586e4c70b4a58e41897e93a73982e28939f3e4e7e883b122ea8b5614ae38e580e21b605a52fcc37a7c8fbf8332d68d1f144d69cc4e3b46741b7b05da31327e9c5b1a0c7978376ebafa067fe584c3ffb16b35650f3648f92eea70a6ad7e5eeac1c77bcc9a282b27d16dd79642a2635053de838ffa39c4b41f9d75021ef32de76444193caf83c613c2ccf88005050dc3cc7c977a32657f40435a6f841db84f9a033ef042d6ff4c7933c9c14c16f82126ef29f7bfdc6993c13b48b1d570a1b2c654ff712f4b0638e6cb7c30ef7d14ad03c27f7437c303a6f2741cb293f44fc2b56e73412f48ccffe1ef51114bbf459825988d79a8da048867b7c6998751c5c0425878eef74af34c23f4450339c0711e6cb27da33043507312c9e5484a04eeab03cff658e1cc60441ebd1fc8d1cf9332706088a58107f8f1ce5f82ef303cd2a7d0a1fcf91fb9f3ed0e3ff7d5897c3cb3fd9035d2f3cba147310eec7e481e29e65b2e538c16ecb1da85bef9283bf0fa77bd481321f6eb80fd976e30673a066674d9f3598c61c421c6816938755f92c3750a643ae904b426f8cc4069abf8b97c649b2572135503cacb98fc1937e3cd3408be0b9e307ede0367c33d0ae63bbb3fc09d5efc940e9d82749e5cac540dd9171cb419b7e9c33186833b95bcaecc267cc5ea066ca614498cb5ca0e7c79c3ecf9b660a590b348d94b5dcc345c84fb1408fd35d7fb1422f44b5025df204b7f01c22cc47055a443ad77133057a143ffc9c72d8b1d204054a3a4b9df45b3a817259fe121f97560a014ca048f628f7cc7c29f4f84dcbf3760a9dcc9342ed10c353c814f3a4f247a164cc0be1adf3c409be28f4f81cf5e638ea9c3bca87427bcb21119252dcf31e149aec5f5ca838313dfb27143f0f5305f9db938f7ba2eb4fe69e49f34e28fd22525693a33fc939a1a5907b6c2648c56b37a1586ffeb8ab3c8ea7d39a507298b97fcc3246329d09dd62a6ea38c95bcab331a1d969fd5c4a22b9cbbe841e79dae3e794b6845a93ea23b2b7c448e94a68231fb85f7f74e8784ae85af216bd3908fdf324d46a19f31453ed1d47126acef371a7cbf0b09b4828319e5e7fac2c966218128a47475dfe0829d5c88f50538a1191e3287684fe1d74e6bc9177b23149184023d4f0f142e48eb3e7790e46e89fa3bdaaf94cd59b6311daa40f5184ee1e3e88f25c35251d89d0a3c3cb7e9d909b7b44687a11d2b9450e1dee875053feac2ecd8fdc36841ea3e3380cbbecac6c2174ff8be92a570841b20e4673c2759cda18792418c020b44811a4e6b3c35cdf0a420f1ae275fe1c3bc7b10d84ee17234b5e0c104acc2392baec7b63b67f502fc78cf191586f0aad1fb4dc61868b74b9d2fb7dd07fd3659bdfecd29b0f6af21399349aeed379f6a0e58c1c1159f72fcba307fdbf52ef1de02b28608515be81f5c0154e634615069007fd33eb6c0e6e63681f0f6a8a3539538c5d13fa1dd4f938ee92143b14f72aa2bccc3aa89fc6c30f31c8e74e07c5a54d3e86938e08e7a05874eaf6dcafe315392871c9827e6e09edc5412f8dbf4f2962e0a094eed9fd7fe60d8a9d7d1c72241d9d9d71839e637c701ed4ef843cdba08c7ece90ddd9a0b5f9051d0d1a2376ac41c9091e63e5ec24dfa8410bb7cbf350962387641ab4ca7e1d9b64b8ec52a2418f29db30d9986c8f33a8adb9643cbda6e90e33287555d333f162a6b70c7a902badd89a227c2c9241d3f1b91c48fa3898188e418d937ea272da641f2e06657a6e436bacec110f831a27a9a39bafdeb2c1a006ad5012f9a37c418f19f5e1aaa47275142fe8619274937260e9822e35e3dd953243f0e082221de4ef460726716e419b0f9aef03330f9942b4a04b78c8e778b9247b240b9a7f78bbc8cedb88112ce839d6c7d56196f0b85f41afb7915cee3ebf492ba8d51dfede834408c9ab8276afe17118a7a3821e79ec335365b1b27400087b46cc09396cf1a0d885bbef587b26d6e70ecae40a9fb9976387b3071e772c733975d0c390c47d934c740a1b3aa8992f49bbf226546ce6a0799033eb5f7f96ec18396832a3993f0eaf7ca6898336edf91d7f7edc183470d0f287b1fb2ce68d7ee60d7ac7f156dca499b3c68c1bb41c3aff7ce4b78b946983e6b14ee7dcd6cdc7271b34fd491b9f63cbb9f15c83f22192b9af063d68aeef509ae3fd9306ad76fee2e38986cda041cfc86163ce4e4ee133a83bbbf17ae6c13d2ccda04739baca9037587c1c65d022777e73f0931d4b06f53555e49f8e9b9033062d430c1a530ede6f226250b672de3096f62a2c0c831ee587ab583d18f4ce49a2c6e52fe8712c2307752ef93cbca0cb57aa1f778f62ee827e96ce7d3254ee18c385ff23475d0e62d98292cd4ab77b2d282397453e9a2a692d0b6a7e961cf78c7f5863418de41a591f84e80c952ba81d467d7b9a98a9e3b0821e7df67bedbfcddd902a28769eb3dbce5450d368866ecf1474114fa571a6f1d12805fdafb296a410bc668b82e27af399a3da628482fe13442ba6cd1e5f754fd0f29df869db4ed0aaa733d7b84dd03f967ed68d35594163821a2f45e87db6042526cd61a86fd9d25f097ac60d19ebb257ef4950b365a48fa3d1a63112f4b090e9720c8bce1d47d03aca77c182e6b0dc184193cbe14bc2c383c78aa05458d2b81f39bb554504dd629bd4e8875d1f3c04cdb7267bd8a937bf87109438d97218723899f31b04ad3f48c71c83f4a40c10348fde2d798a0beeff404d97826fb28d3925892841850fd49c7c92c751ca17808a1e281d3b2b62c6bcf1639a0a1ee8a29de7c2766ec95d1440c50ef428428958786db18feb40c99e420a299c470ed4daecb15308c173ac1f1c68f29303cf4c1b4a77bc811e6cb2f2890add71b2d840dd0e4278f990b3327f35d0e3f7ce7e921f0f3ba381a9b28be494f29a815e1582e5780e19e839471b43ce21933d4954c4404979c282edf9a4ae910a18e891d959788ff30bb4fd0f3b22696bcafd7081ae2f9d36d85dc70c1a11a86881eed661aa8ee1ae997311c82050c10225c33d5bfee920d2843860c67a208b4650d18647be0a94fe1c69f8e7891cc44f813a9be793d2e9285077729c21538ae092f509b48f392e33420e2a4ca065ac1c9232c5afcd4f29b49ebc7176b72e63e89042c9f9c07c735f8c51e328f4f9ce8b99781185dae1c297ff68eef886428f37a67693289f9825a0d042f674cf7f4e5d26f9849a7a7f5b37e27e4bcc135a4a7b497eda3afcb813cad855c4e4164ee8711ce8e77d894b4cd526f4dc9d3d85ceb429e4506371c51607a92a28a080edc3149ad025dcc7fac14765e3716442b164d79b6e66628612134af828ecd684e023235e42fd8d78d55fb7655ab184b9e3cbf0521d570925d38664f9ef93b92c4ae88197d7e7e578337610bb05126b8a49689a64420ac9c364610a4930415c643a0abe158cb2c21491d023cfee91cc166cb22d85292081b8040fdbb1e765adb0c20c533c62b3ce20e952e8949918a6708412fca2f2495c74e4762394b0f96827dd5f8c876c610a46287de12c76841db91cc1c2148bd042f2fd481e7936870b3a610a45a81d836b6c37c9369292401917a64884362923270d9b909803a74084ee5315f6a310de634e1f421dd9ae8d55f13184b0017a01a784290ca1d7ff867e9b6fce4c075846030aa1bf95dddc79ae08da22610a42e8398e1bd3eeb139c5384696d79061812a4c310825f48465bbed18d2dc832904a1be077117e73ab2d4db1481d026e43013ba3baad23c20f43059ac0fb276d8b1fc3f68f31b92e4dde72095f7c36e9bdfe3f6141f5d1fb44bf793df47bc3decf9a0a58be05a7aa797ec3de8f1c6f2384b7319173da8e3b12f71ef764bf33c28d9a763918f82db68f0a0f9ffe56c9a0facbc8362e1357764231321d57650a68375e8ce1336e75c073dcc93b556ba4df2d3410fcaf773d0cf41b7105a23ce7dc841c9914c3a6cf2888356dd91e48d9b462b0f073de43cb6b88f52d6b66fd0e38c8777a4d210b11b14a9daca410c164bbad306edc7afe330da7eee830d7ad2d97c1539e472cb1ab4cbe9e3348ce791941ad42099dce3b839fc964c1af43890589315ae49643468164268b967495ce70c8a77746962647eb74c9a4193b19cff3963192a97fc3c53fa162964d06adc237b596f759a8c412b998ecf83fcb0ab11cc90c130662c8d1018a08a03949d0a4c2106dd4367491894c8a9dc3f8610c3851030a87716326ce43c61f25fd0ee52ee93ae8fc5c3bda09d4ff0ba710f66c3d70535acc6c3e01fef7e94e382ba31684587d53ef1b2052d82c69c1fa674511ed1829e5376bec9b0ed1a5916342d97ec8ee72d751616b41293b3f073791ed515f4d85a327496ca57af15b498105f3ec6ba90db29aaa06674c4f0b2d0de310515d4dbadb3943ba4f898827e169f24871c2928152e678ec542ae1c4741bdcaf2e17cc2ddc51c0a8458d5fd6f162e6a2bac3810101a3566dc144fd0724cd98255ecb9c9ec144e50ece378078d0a911f374513d4dc51ce81f7cd0435e7af3012638cd4f64bd0fe3d4c915c32e69f5e097aacc12c2ceb7d601d4f829234beb3b674cc573990a09d8699f3943c47d0c3e90afdd7d5b12766043dea482ec7129a27f8550435ee8ee59cd3a789e927829e66376d0e9a0f410fb635cbc22746c7b910d48a3936351b2cfcde20286133ef548ae7d39203042dc2277898c1723cd6fc40b9fc1c3fbee303c52be7f37d799c5d323dd043f8be0a9515c22bc803e5a7fb2342f877a0c64d6119924407fac576201f41fb6ab61ca8c1d2c454a96338d062a8b3cd331fdf4175033f4d7bf06c711b28b962c347fd576796b6985103fdc3a0394ee7c647e9a781e29174e6388e5f8578cc4071db8e4b7af771ca1d32507c3c8e426bfa0c6b37068abc747fb88a57995b18a85d239d7f52e7cafbbc4029bbc93cf99126d2c7055ad89cc3d0ff713375d8022d6c9e34b1310bf4cff3d69014243b5b56a0dc87fcdc1f6e0e3e8ea840bd9842c81f6c8c4b2437bb107a1ddb3cce02c6d2d819a70b1b3750ec2cb8e48e5c9f1dd2840d1b28356137c791bb5b75aa140b6cd440778bf4e1443bc5e44e03a52dcf42f3ec32934502aa38c02fa0062f8d1a22d019281f7d0af3f02ff9cfde81ad616586810d19a893d2e68a97f925586b8515a49eb011032df7bb555b0c1ac7ba23840d18682e1fc7bdd7adcd92737eb0f1023da549c9d3c6da05ba2673cbd14b4f32dd375aa0e64f8a7b5a17e3741c1b2c506fb2bc34f4327ba7ac203754a05ba6d84bdf6da440f138d8503937967c4ef1c1060ab4cfda4147d6b2192727503cf0e8f4bc4c6257b861023ddc194b3796a23f8ec9e82db42885963284f70d5691d15b68410a3d7de6a0c62b88a6df46a1cc548cd80d1dc58c31a250a77c82c57b9020b8088592f4da43dad8cbea4181071e4c3393a4cc27d48ae329e6d6d1ce1b3e3e70e109a5cf22e73b784e1d84b1135a7930a39d6386062e38a14476cd619fe12246fa022e36a19827e9d017733f638e035c6842f9388248e5109d6de12213ea848a7d396797e61c1723eb7cc005263489393ac9e1227f9c182c63865f075c5c420ff2d2d127860b4be81d749862547490e0f118593268cc380198c0452594eae02b5cbe860c1a309ccef502300a179428748c9f2117236b125a248fdfe5f48d91d559982cb4b1d842468c09586185b100e4c18524d418bec285093da92c1e60851559c8b8020406132e22c15b852c1e3234064f8cac04800b5c404209d963ccd1c590496d3d429dca57926d1adc4e7384966e3e2cb9251ba1bee44f931d6c8ee3f124b86084f2a195e3ebc9c7615e333c402306125c2c423d9dd38f7b2f7edb5302178ad03b48ea8a103fce92424770910825e730eafdc3903ad68f0825a74a23547bb974fc105a6faad2fa1cc4c896c3105a78c7e1e5e52869cb5b085d3cec28aaa2bfa3ec1042cbf795c1e384e7704206a1e6c8987638d1b12f8250e46aea7c2c24f4e402a15bc5bdfb6dbd1cdd00a1c7113a4fc749fd41f338e4d6b80ab9f0835d3105495261c44d18745550400165072efaa0e60df5b193874e9cebc71e562ef8a08b7b9cf0399cd2398d175cec41ffd8f5f5ebf42db8d083b2f9e38f2276737ea49a868c196e85155658e19c85ffcbc80d64714507b6861651709107c5b3b844108de11f3bf0604edd21894564b250562176bcf9ac24597234292ab8b883b527c17393e65d02a54c035cd841fff0f41d74ec75d03efac81e72f0f427d3418f390779b3a6944f2e3c07bdbfa2e3a426e496e5a064cf77992a5778a71c71d092b4c7317dacf7f072e0a05d9ab3cf0c1d6ef56fd02b4d8e21dfe4b0501b3728c9a3a8cb97d1147a6c83121d59b8e810a17bb341bdbefff899943568952e4dbaf14f0d7a5c0eda2eb44b839e9bf947633a4cc70b0d7af8f68fa53d2e668f50e0e20cba4488c57790262ff366d0638f935f6ef22883661dba9134c7fce4c9a0644b92fd2d26899ccb31a8614288c60d1f42ca88082ec4a0496859e630464dcf260c7ae530a7f2b94da58f8041bd90354d848a1ff4f3052df64be5728db0a84a8b113803bca07f2c4152ce7b0e229e5d503a44d01cfe8470414d193331f967cfde395bd0f368c7cf39885a507232a6fabe8f83f0962ca81fe52876b618c3829ac962eadb6c93e962727105357c1cf34fcbaa810b2be829795021c6182a5ea6aaa0b5a68d8f7278d91d3315d49aeec8cfa3dfb0f04e41b1898eb7a17db6f1430aca07a691837cc9814b15054dab4a4fdfd307e51514b409314c9d841ca783a08b27a493ecac3747942403174ed0ba43e463ee8e4c327603174dd02e86089b1d739894364c5073ca9d5899f662db25860146408302c5c512d4d78e72f85fa139060426a346160b38800b25e8e16f3c0ff2459090641749d03afc6053a810211d752e9040e8e0976fa7c443fc1ce133cf0d29e2fbc731c21f59daa0b5313b2f528443eae039e9d8748c032e88a0079176f38554c12a3443d0fba522b27558c747c1800b21a8399e88201fdf88e5254626400255181a3566b80882f72974180be54132461604ac68d498010617405073270d97d8ec29f527015658f102173f50477345b02b8b79fefb40c9c164ee68b64567d23dd023a78bfdd32e3b8fc203bd2c5bf83889f8e796ec408be1eff52f64e37cd381fe7d1def6ce898a34be5408f314f0e1347ccd24f2e70a0042b999ccca1227b72710335dd67c95196dfeb8c5cd840cbf92e480e399fb9af33b8a8819a2ed7475772d1b4330d74f933af7029730c7321838b19e895a93a43f853066ad544e87c799c65bf1659c8701103f52d69c6904f18e851ce7d7b6eb9edb17f81d6e935a7f6c6bb7217e89793c7e1e3c06252b805ca853fabefd11cffe72cd083dd98d7ce1f36db5e81dab1e57479d2c879b40af4dc91cc1f6264b8f9488196339783cde1a4ebb845817616e2f79d6e04c9cd0994f3fdb83c0c29e40e441726d0c4837ce8b842e4799452e8521d3df1f3c5ae9f9042afc9b755216ce89473a3d033e5ac113ff09034178526396da4fbb18aae2b14ca84c971d68b07963b99d508dcd0800a50a87bd65982666eb27e679c28a8f88416d95298799a98379823d819ef129041812a0e50451507a8a2c61632dc035750e00a095471802a1640c341f080112c04acb062043bc31c800118016801159e505c333c3a0eff9ae33ba1a6c957625ba125cb09f53c8ca49de3f9307d13ca96c741900ae7671d9ad0c3d0b124cde513f44c28269a3b8e733c64b498d0e3c955a5b97284652ea1b46b87a12ff7c5182da147b289fd1072a62a95d0db4c4224e4889794d0fd5af42f773f092de56d8753d54b4273d1918deb10337724d478f183f05a43420f3a104b12e3accde3115a6e9bffb0dfbce774843a379ae2e328c4d9c41ba1c6da4f211273c8719c33420de221c7981c8bd0c4c33ac73d92cdb28aa87d62878f4ad389d073945354d2d051efd988d034d24d7786fa10da74b09cdbde3463ce86d0e32cd6d53dd956321742ed1c861cc7ca39303b99106a46fb5732b7f214f220348f214d77acada12a2c08b53da7f871be7ddf8e03a1fec7f1f886e994cb3f00a1841852b887f9077dc7836c19394b58c8e10725242387dc2e1f65bf0fda957bbcf8b75da1f34191e938a40e0939c7f21ed40d99c1620a8f6ad6833ab6399b3fcce641036c50e3ad620e36749063cdb106edf23fd984c8a841cb6539436a2999918e3468b1a3bcd339b7d170d1a04e8e983777d835b13e67d02e879f634bffb1a61ecda0c7311d379285cba3974133c9b127276bc954173228fb2d27192cb70721640cda9ffe944b8e03eb1431683f9511cc3e8e15338b91056304346a54991761d03cc7abe2e4b8a2068d9d718ca1e135ae20087801062b4cdd95a40f5bbbe383175f28b74d55a418fdbc50bc840f162bac3010240b5e74e114d2c179ac1bd5f78c175c282bb078b105a5cb728e3672723fb6a802020da8e2dc025e684149b3b1b4efb3a394c22fb2a0c5c47def4cd2f81e3105bcc08296ba224c7e4c9e67f315f4f87dc2e51c5faca00751fd7576e122a7e94515348dd7f039de4d9e568efcf0820a6abc6d499983e5cf106721e316c0861753d052c87a793c5674b5468e03300083042fa4a0f48ddb565b7647efc7c8926180f0220a5afb07215b75a59c81a18507bcc615300829c30b28e83732da71e016d993f2044d3c38bd8f5ce9bb6a2728369dee3ace79d104adc39cf5cb42c4ed6d63a4d39041b00d2f98a0c8dcb487dd162ba5548c2c2cb05882de39112c66b6a4c7e32bda69cc805103c6d25de1851234bf54b9cf423cba0a99c28b24e861ee91b2af7c5f3928bc4082ae1542b22fb3d2cf5d8c2c193560b4db11d48f7119d9b7f3df3e62649911f4f8dbe96cbd90972ea7085a078b0ff1df8c2d64d0d80012418f25527820bd4172e55c1f5e0c41ff8c1f6e2ec4974b9b1c5e08418fe925c2479e7214a382c38b20687921058d0f7285d8738c1740d06296ce1c22ccb3a79418590e83ee092f7ea09f7847b3236217b28a91d530cc0b1f68915fef2534cd876c01a3d769c44826bce8412985d2defc93a9f2173c50629945a488ff61b9037dfbb72793574eefbe84173ad0d398472958fa0f3b87bcc881f2e12e4688a1d5190c1a768417385037898cc88f17236bc61637d03d9c5c235fadc92a33c20b1b1c62f6d81a72f72f034607f88a0e70e1450dd4d87f159ffff4d3c531b268a05e6859301e043360d4e0cdc2cd8b192831bbfbf9c52aed281223eb9d060cf7ce1732d0637f4fc5c83a1fbc88811a3c937ef8b72aef28465a0f5ec0406bcf54312b77746fef0bf4e8a2426cd37c9573bce1850bb4cec13e7cd83acb1cde02753c9e8e1f2652b858b240cfbe5149c772c386172bd07398cdd1a754ee529f33bc50819a2b6d8a2186e41e39f6450afaf0308c664a39670c2f50a0f6792b861727503b4c6e2529598e37e8a55f9840ab8e3f5bba484123e6520afd3a9acf31f8f869b731b2e83648a1849d4fe8927c597251d818853a3dc17e24dda5f05144a167cafc7a971de55c8d2d64c0a0e1357e8b8542eb90aeb0677559221bc20628f4703264d987e162cffd84123464e4c0224dfc6b6c21c3135ada4996a1cc62703ba14ce54ee7e870e2f8727798d984feb675d765d18626f48edfdb49026123137a1cc7b1d961e75964b13118866b21030b3e1e6c604297e0fe1acbcc363ec303346250e560e3127a69e7984ddb13f3c672c386253469110b7692fd49ef5ac3462574fba06c424c4a681ddbb90726993dcd3f093d54082316cb2209ad83058d182d9272a64442cf71546f5775920a1324b4309da31cf9f8f38a31f908edb7f6f2d3dc44a4080c1b8e50ec7d7259cacef0008d1884371aa1c7c82c69262b7b87b0163618a14bfb4ffa30f79c6256586c2c8214a126d9130f53b66264553dc06400c6b091083da2e2e4f9d05107bf09c30622b4f20fbbcc3fd08e99372f6c1c420f2c67df449e0dfa1a2a6c1842a973bb89fc7bfa11f21b85502ccd8657bd46ccb86b6083109a04bbf0be5caef72931b288051b83383afe8f9a3146560896060cf72f26083dc78efb7378399e63baaf0884f651dd9e47c390d1570908ed8330c94fcaa3bbf730386cfc41cb1d75ee2197b561c30f9a664b71f2644bbb6f7d503bcba760c1272bae830fda68c7cfb817db534ddeb0b1072564cc6f3162c7b11f3de8b9bbef83858dc7b66cd8c8836ee1c30e997f3baac278d03c850e6c63f06a8ff433868d3be851d8db87d09a1836ecb047a1b3e9818d3a289eb43a864e1132a4f7f4061db4cc31ee76d25ba6dde7a089471d5eb622a4d851725047b4d35d661b9790e2a0a58fb3a2e3f71c744a9d0d3868697298b27de7be3cff0d4a0739a44e31173243bbe1063d4899f37e94cafe2a67a30dea46de68ab8fad4def0d3668fb12f244922a461e1b6bd0624a1d527e25fbce220236d4a0e7c8c6364f9ee9cbca0e36d2a085a4f92ebbfe25458e18595589063dbe8ee3871839ecdde60e1b6750225c08e7518fa40ac90ccb88fd070c2c83962c927cd899d35c4d06359cf9758e236f099f31a821c227a49c52440c9aa7fa8a9c8441bfb7147396fc82414d9ac29ca6ccad243261e30b5a4dceb8193ce668aff782dee6162c7fa0e9829a722c1562cac8b39d33b0c105e57348c983fe84d4db5b50729c23fe5b2eefc77616be818531638b2cd6b16002820d2d282e2e9badee80165b0386f3623183686c6441eb38700f724bbebfc6039b058c2c2ca8d1a1a9efc7e7ab3431b2647495161b5750672b87b85397e1fd8221a3cf8c0d2b681d77211f87b3c9623e461616ce592c63160638820258c44615b4b3cf8cb6cc410e9702b1410543978792381e75141bc3116c4c410f8348a7ae1ce4cd392f3f6c48410b1f272abe6be2525f636bd860230a7a59a52ca29993bf075571002b4ac1283a6c4041cbded4e52e2968a7b49031630434b6d0629d460d226c3c41cd1da57517233c923846169913144979af3a0af31c6f3246160def000d192180d104bdf3ce6d82ec7c842ca9246c30414f9bf3847b98e9ceaa185923582c1a0b19bc812caee8800c19078c1835ae08010c2df022b1b184ef2288c771fa38691d23ab03326460d15798a96143098a7b124dd133731d45091b49d0c3858fe27ef889910563091b48d0376648861c58caf9b278c00162d4b8e2025a60818501aa38401516a8e200551ca00a25545e368ea005e9f062e3ec56e6da086a876579938bcf39b54550642e7af272bc134e4304ddff3ed9c67948f00c417dbf37ef16afd8b208418fde0edf8e47bfab725ec0043682a07b5c221d62aa81a06f7c4dffe1f74f628e1f28c972360d7ee75f2dfa408f3c11b3737f3479c41ee84166bc8e15471ee895bde7395968db1c3bd02572969c3e88e840cfb5115e95ae45e38d1c289bfdfab4039b1c73e4093670108886a874ae6402d2581c0e8783e170180c0629b32e00e31408104080b0341409c5b2280ce4ed0314000447281e382422161c22160e18101218080804c260604014088502815028180a8445e1714024287e2e4410114be70b347121a8d17b55692ca54a395206effcd8a78f56bf4da49d383846a0abc2c2da1662054a2cf91ec8df5bd4ff716d4663b2093c52680fc080dd621f5814c117a61c2c5edcaf263bfd844be25fbc988009570d0c36dcddb95a0c99375ed6262c153edd349c045ef7c1d692108d73bd7bb4cc5980a4d22131e704bc77e60701280ade49750c0f94017de7afe251012196e83d42ab2fc9ce18888db86e57c53040739e3a02c6cc590488c9a8a3ee86c02193dd87b5b2ec7f1191ca702089a79d2acb09b8551095ffb70439823a05f30e64cf08be9b384766eceb2173252013c3283112e2aaf8fd014b7ce29d77067e419304885a0a15bfad18a6b55a1d02ad0becb05592f62ef15a20c2a721841dd905d2bae195ab6e6116960e84c0df3e68e484ef7100bd117cafecb368e8ffa64c742a197d217150821457419352f49132eb5d80e1be28942b010af719419820ed841b958538bdea243f6484631b3e6ecf9562a9283fd22b2dc9fe7eaab4e90294019027ac577edaa1f8484ad9d1ac08b4d7c4fb5d630e8dea580ef3f5a56307b5516513ff5e58d717972063ee348a7440f2595c68aba30164e9380d7929e48a3ae0ab4aee0332f2185d20609c35dcd9340693ed5e3153866303e0b0f4f2c0f5770ed2892ab6b6c6f5b77fc7cd47a46a4a45d56b5197c906089ca8d58e959d017b1a95caa69fd3279dc1bf89752deeb0e1beba3950a63622b0971237c917ec4dd439c78db414cece333a1ce1424eed2f7b79320ce3a71da30b295c20e623b11d109c45e0086aaa4fb0b62fb648b4cc4c801085378406c96f8a067d9e3397210ada4ba6e8389785188440581a4f5506d37a8d18782f86db1f542f98bbcfbf1ecc48f4404f7ed469030848c7290fb10b704af54e42fd640f3a20962386fcf359f6bb3698941ed6923853cd8da29b21d269fb4a4a777875be02a4a723d9ac08b5e76d7d0ca85cfc8bcce8b9e19953daef3c1ac9cb8defcfb2647a6a22e34121c799231fdc37ba1c3b34db9ecf0858f3451f18d1301ebd0f33df5e6e02959938e2a0a9b98c671bd3a4b8c834b5261d5c0ee7e1747c64b6f30324f2acb8fc8266bfc0a481e118f3e421e51f3c5a24b53a721451222650d3963c3f38579162ff9e86830005870191e492626078f455f3119d4e9beece502824cb4b0c40c55b35fc89d1b69888096ba695f7ffdecec363ebb3a8c5a6ae9a02c44830d695dc191181c19ae384d4710c90f7e2f40a68aaadeb6a97350388251dbb04250276f9104b757f59ad58511c91aafeff4fb014008a6f07e0f6a6aa6596e449a793efd8c7a5ea7e20aa5794156afae5b808692dc42d704b56fb384137c64977379a76e269431089307cbb437d7675f4b66c076ab371129a2e7b8ec28e36386c4d58cf831c8475b4e0c4751551d166691806d277dea189d21921a110ce8e901167bf747762ad79d3324acd1889c0a19b3d73da1ddacc917a6ec082c9c730a34c370ad5a29ea431acf08c9fe531c47cb284df29118878a8172703d270921dc4095e6196784296638dc8f6c5a5e7a08d9ce38625320204fa23e0b50e801ec0132006033318e602c94a5dbe271a17522c6b8d16851edebef086a813f3100909fe479441ea8f84ba9125bd565367cb449b5499d347c01d5e6583061013d04b83182caa49feeb1390c2d29d23db8ac746df45636003c56f295e107338308080217438621092c375b0e0662a7dad3c1c19acb42ba8d886b8a39a224f51ad020d7179e9982d6187a4daa0628b9f67cd1973bd5b513bbf18401abf7abf1c9a16615676178ef515f77bb01c5635409ac02915e492e397b039778caf3f9464d45de5e2a0954dbff1c75b0eab86be97bedb5a3f44a0cbce8a04b0ef736af092c1bfef425a55f0f68e05d87fc084bc813c3b988c38993627d7ef0a31e585ff6cf4af8547622ed87f2b27e0cfd81bbd33a640514c65f73f6cb5be8b00f9b7dd286ff10486d541e26891acf2f165197d569d3bb41e561e9b86453ce5d5cccb5859c2088c3e9991856c3cc33469777e95dd57bf18b4e1693a5a824049149a6488bf867624f7d351d4b159270eb2e4d835c8e1071f4ad237b627a5c15c0f045d9e06fb776eb3cece63174b06a3298cf4f1deffc7d4ca4929fdc791376f036cc23e8a251e0e7ab9c39cc4673eb9be09c1d6ccec7a3e322993926cce72985df8ea3e00ef67449e1831ca41dc6068607294db503c578ff3ab369d884f7b667b3cc0d38f213608d7f2ac2be73cfaf6680f4a4ea881152523eb9def5fb66034b505b892d2d0dfa7e18dbc60c1f1aab420154d60011021ff7fc0cd30e36d48ba9be0448e98dbc47a837fcbf7d94cde68c987f07fabb5480afd23c9ad1a15ee8e0d2d68d358eeb4ccdfc2f5cac8963c15e76e77190988484991339d221c978d587c856136d1260e9a26829d9473056b7e6bdf8d52e391202f495d7dcbffaa495ad0898ed23155a1e21309c4bbf46e0658f840e0ab898336be263a92ec82d681931598f4850130305b84f5d7023994cf6d8004be35194a817e69e62b80ff9a51b2b61ab79ffa5ca092cc14c88ff401fd228179cb5fa1e1c218d5c09af1953b16bc17a14a7eb84d55ed59bdb680b847422111aa21859db7fff960e9539a3a6d48a3568ad313ee3726d10af65680e1575a1fca2efb9c26e58b000122512572cbfc211efb65a4bd35d9526866d74a9131bab92ef6b2c50d39f7219999dfb72f6dbc8bafb51d28d65f7129990d4f00777e405658e1d7685709bfad5b07edb3e5b68aad89d4ae370ca0a3a9dab8c7fcd86d39cf907f076b56fd9886a37039265e2da0d71895a9f17e43cd1dc017b32a56078d98d6640d7487a5c19800b812300959861fed99e858e531c23e229115d1d3a99e0803399026872ad5d28a3b1eed4b8613bd17b40b6d412a8e3889359e60a9acdb396252a7a2a7959170a31c5cb44be179de9b9deab9de64e3034a3f06fd178364060ec66c125b4ebcddeb630bdeb5e8bba4c4510809ea07b461aedf5ab5971fda46a0ba8b2099aef401e8fff0b9df91b9c15b4d983b5cc7ca61e45698c4b64f5c391a55ae4586d49ad579314a622c46d09022c29661d9fc37e592f242f2d69764e1040e22c9340af1c5897a0ad053c22d127bfed7aecbfcaf518d4bac4e4d66991523b5f0bd1ad7ea581ef02c6ca327c9b288bc04cd55a7a0711b060b35cbc21af5552caa3b1c5b3cc8d0daf02cb082e2156eb296b40b4ac1994f619205031914e96bab41005279a6d0190e56b800b5d75d8422f878d63ad98a321b9eba8d1ccfb410d06281b0edf42f5d35903304ed1a4d2014116516433c5891c3a5c8a0baf803319089e63742698865f997e49cfb548cc0701cfc908ecfb48ddd466473dedc8c85cbf4c76ff4c89999accc70376e66df37e296611e664287f9b55656a5194377874219dee61cbf757476716737239a99a1a79d7b9121a2cabe72636ca558cde1101af4c6b629d54110a1b0294714e12b1681975ed96e401fa8d25e7a311e00971d3eebb20e5c27debbec469a6b7cd53ba110c3be0a744e5d7bfc1c6624fb871cd3c7cf49aca0cfd84bdb58c466a6dd6f241dc766308fb41d96b289aab689fd2be3b8188717acfbfb511bf4a7be53eff9e3e9c230c38d27d22c4a52e8ecc483823e897ac1e33dbec016a136152aca44a15c8a9aebb233fd81e137fc5dcf8374124177646b5b325feb0f91f8fe881e23c08f6ea543762e7eeb7e6155a589eeed3771d0969769078025cca6e4594705e11ce0b24fb4821fac5257204dfe297e1b84fd82eb910f9ec5152253d266af110b4ec44924547a6181f8a8e3af8be3b61eda8b8ebd5a4dbc344f3e3eab283eac3faa349ff925a61479dcfa9b8aca2dfa4059ddc2a05529a503a7ca47240981bc784697e9380ce317890d2afc771f54bd4119c8495c5e0bc4eb8d03403f5a9e50a5b2225aa579fcde9c75c5dcde1b824d042d7d703078eb6638195abe801a2c765b099eea38a3fe636e018d28052cb75b314ee2a0a7cf584040c3dff72f17dd0e09dd59185342fe86f0fcfd60f50f0781b9f522c1b37bd52dd968e809e6e6a9103ef7ff140df37666d450d5ad5adc0e297756042c0144a4c890af52fd81e2737083f33430c99adb5e500abe9e671812c4c7e393eba9ba21e5c7c82a39b3350482fd9ca646d285750305a8cbffbc1310059e8d628f50f3874ae2aa4ed286218cf7242ce18d3b0736d485d895ba257537571de20e6780fb41f081f10132f5b4c7fedca37e561c1f5309df9753ef90869ff3f23edcaad7d6fd11bae6a94aba051b39a6dbf8c9b74b6830aa89d441fc629257aa84ca78be4c941e52715bcd20398d0219468cf724bcc0bc1b4ca85ac7cf8266a85152bb433f046a415076637fe57838d05da5691ac8d53b80b831382d4af6ce3d320be65eaf38095882930084c04200161c0d4804f01668e40ad6720f11687206dd5fe4f6cd929ff0dbb5b180eb87ede37fb4057c46ab5b566280027dc954d5e846b7eefc8e409ef4c4cbfa58d4691c0ff933c2dd2b5c87dacdde2acbd6341946bb50d509dbea442b3598dec0814098ded493bec25f0ddfe155fb9a72a2652e4d2cfe8ee012d2f7dff6dc83d7017071d83d1858a6ca2af5f2dbc480534a2ca7e379982ce3b68646acc0a1c4e3258bea243f02f3204b1e1114aff857281effeec2610da2f47d8200b10c4df68ec81e18f1726587f003912f354ae05af870b1c9261d9b4d71ebdb02b362cc98047744472611f7328a236bc4c98ee9639978f0053d06464c5c66801266223ea4b3f4751a45018a09a66ceb0a5c4df0600646610a8f13fbf5e3c8a63b86a02e2dea4023ddad1e8e34dde07368344aa6f66e5bdbd55ea7205a12da921a900c282df81ab50d49e10cdf545a822f6b18653cda1b4ae05398a11be479f9bf9cb738fedff9a0f812319c11d514943106774415f415b852011486d474687531961ab76d574c24e001989b2041aab8054fed36d78d312b4af8c33606d29e8d917b5ff75519a40a010eef5e276e0dcaedfeab9c07521cc895c19b03971f0d24fe5e800bedb0ed9d299e0c9c9a18e01ce8084366ffb6800e2ff2b500c958b7a2d426ff2bd45771d4ac357f7560cefac6c385e4700050a08759d511b4f97992de2519a545aedc938e96e97a20c73b27f37077fa4bfcf2bfa0ec93539532b259a65d506f4872ebde5d798835d88e6f1b2042c9b0f2718f631f2f926106ea3e82a0b26eb97197142765a836f3dae5c05bed1b68ea0f9e4011a6b026f60776492f18bafb6acb52f0d50dff6e771a0148f02aa1214744bf2e267cec8e107c81e1caf5d49a72419ca69905897c6108fcf09291912aedcd5ef436cca2e788610ebb36fa2322f0417a39a1eff21a6386c315277ac34d711aa4110f00199cafcac3e800a79c5409472d1fe681bfdbf7a055746bd9ed4be42608983f39f793b41bca0fd8c528d465125bba24a500bb1d91b72d338077ce98b229628f6a5c8a65217752998b8701756866b72d938c0fc3c23b7e22f151f26bf77dfaeffca2fe6cffca9fa36ff417faa07c587fac3fb7efe1dfd0aff00997256b4000a1fae43ce56ae7febc9273999b6df4dce67eb124839db21d4107893d24f3b874e6e80e7407c8a2cc02f03a5853061a9e0b8d5f6a52f0c48c77c9ef40c5af24104d5a5134562a7319c901283f163103e5f87f15a13c5e159029d46b2c1054f22737d89cbc8bc59b06029680b170aff01d86152022cdfb39e1c5e619febca85f875e1a2ff56fb177ab57ab37c03ba86fbd8ab79b83b4bbe7e86cfc4075375befed25f8eb0c0cf4f2f75abcb5ee0cd53d4f8fb24e1dbd73f49e73070b329d6e36eb4e4e62bf163a75715d8f2e882ea11be89e747db3fb9a3451d5e97891773dbdcabd01de59fdd60bd2a30404d63d070cdad54dddd7bebbb596b3b7e3b60b05ac8ba6abd785e83edd715d9b6ed2bdeb567439ba6fdebdcb3d0d90600c66eb35f046bef7771378b9dfe95e062f3276eb126e7f1afcbccbe941546279ef37efddef95b71ee14ece56e1ddd7e62033c06f09efce97b83be0f59d6e1d21451a9a19de5e929b875e43ef5caf8a37e92ba4ddbaee7611190befb997d019a2ae97ef3631a818c816d9d5f0f2fea2f50a7a21bd6b5eacbbbcde76ef63af8a77af6f9dbd71fc4b7f9c2bedbb91fc6e5cc34be62ace0e0365a0d74820c25bc6b573aa2c85241bf3d70ad666219b3a527d3b857165cc06857d0db70cb11e168cdc6fe1efe37bdde3b2e772a4d1ca8974c5ec6eb1b81a371aa5e18f99524a429a318fa8ac19f0cc6e85cf70e5d334aace1eeade860bae60bbbcd014f7b4427a65cefcbd104ff0898cde623bb0f7988a7dc8d118f81e8b4256ce248989497ef88c6d853117ba0bf6908ccec1e80d8dfb01bc3818f78cd9106349a9e78af2a871393618198c641a8b3de6defe96025fc72fa37702758e7e0ccec669af705169331b6bdd85f50eee6713ea499f6b167f8e3aeb119273de9eb05ff70368cf4109ec12a36344d359d0b1e8b0d185364d440298ae4d2755b1f1a82ed725e05968a39b90ee9f5802adaa9703f586be82f714a87f74094e6e29bd99aad083063d739ace72d668294fe8160f5f0a2b6ce9db3be76495744e6c7245f906e624fc78529cb0783310f02d94d196204d5d2efe4636a7e22eea2e6839c0c7b1cf3127aaa183c13ad4512b878915cd6c5dc001c586c6a2c08e46c060359ecb4410c7d895251391b887129455212fbc4ef2af8652c128120fd7ba145b71834b0a00e4965516bcc8c50f2245dff2a651bc656b88f1ca7823dd550e8f85d1b37fc98596468c26be69a07f37e2d95b2872e7c08997d8be28c09fe411221c1222b758331844082b1adc781a453a2178a9434259d609d11a28e5f4dc5c6a96ea7632931c5746f8e2a0cc50204e73f8d4079fd29f82be9a9462af4e8de2c512e8c4a4c6f0651bba286902c157a04e33849976f4e27c284d0287e272c3747c295d09510133566e0e7637f066651f83aece5ba06fad102dfe8d2f30399cdb268faa9f0f4e6bb8f25bcfacc309d3c034d818c8825e198675db81fe040c217e3086a028340d5e0e528cb0f9adfd7e140a9b79ca5169d80d46ee0b7ba4db831d02c78301017c609d204cd822f01f202444840331d8201fcf949c0e10c21574825d007dcc8c6ac7b989b93f2143ae89f8a2350806c76002823a64867414db238178d936dd87fcb127388fe4e7dd40f1e021e14410186c0e2e840c03c36067003e804e18e857b2c396f913678357ac20d033d4ef8fcbc8396396d62e1136de0c105a9a8997b1246a8c1f843a288cab1e9dd4e8985e2b40f95ede8c734a5b471f115bb3abffe63354d73b59000ea0005801a076408b020eb018c04b1857a45b9ad484ed468b29805d7dbfdae70045001b000d70080284b37bea0913a001e6ac004cfb20d7cf01b48844968d7a80510068b99ed3574b80379831acabf314a78acc60aaa757e0349a02a0067800360029c003700990250081257b1a800ad0000200a600a0407b00863ca8a9ef94628e5932624b4fc4dcdccfb279e228437815403cd93279fd367850b566476cb31688146af05551e8f775edc2e5e0136a0b7f6dd979342cb421a1249c3d030363bc9e47e411647073542e726aa003fb5f6daab89910fc0016db731a12c3df4adc0d7bf34446450c735c850e783b487e23b6257652bfd3e1a5d94c692c0452a03ef0c55de2d20a20089c470f5585185a83772f061903da806970198c19d806b9c1c9a036601bfc0da0c36043e2a10eac0880070e0931c2c541408244383cc08fc0596825cc234816a612e6133a0419bcf09961f32b6c3612d369ed0a1b1f0259d3df12665439e5cf264437c226f0bb2e41b6d9bdb60793f596eb89f2012504e10227612a613e840d2b33c66a36d8980f9f2060184ca6ebe4cb9104b918f40d7e06a7816070d40d167dbeb4d119026da07c204938271c4808110c839b034a02ba22ccb41d80c6258141252c838ced100682c080a283990bb25f4a3a6184b0b129885e6315852e19dc0cde068cc164e035d8a6c13e7215bb08b8c1d56065103290548345274017011a98061f83b00169f019e00df80c9ec1dec0131a4cd6eded37be816330e5a043600c1ecb60196ea0b7f80c3e83c671b0cfed666e0883968130c83af03cc20c6b2d76664ea0778338d433eeeefe6a650ad06d7442081b0a2bf7b26b6019cc0d60069f81de203198c76005c3762806d400763042d01b9c068b413e7c305947b975cec077409c504fb8247887304332b0d403399a7903a035b81bf6f65ebd26300e17a67b38b8e5057ea133209083c95abeb4a80543c882b03bb04ee84380165e3a61e3a2b2307e25c4ea819612cb6a50b5de278a114aa791ed99d066f8ba1324834e30d807e574fd35c2c1603dd849701f61063530ec81f9304802fdbd78cc28d839507b0a64d7b76dead53e7c93d33402660e591c6697dd3073be96c0c4840dc710dd6b21ec7bf42218c5081816b8846b04182b6cfe7c6abfbe1e2c93dfc28fd3a01a486307bbfb05f672128013ec08c560fea07b029370432019700f7e12a6125c803043cb430e6e066d72b01524dabd403de89cd040380656038a034c420fe1881a2c079e44c268100c9848c6206ccc029e7744b70b3440b0a6d0013c0c3c0c3c0c3c0cac4dfcd6d7adcdbc05996492d3d03e5508ebba24d39629a5e44de39f441a5167ca13b7ef90a20b3e0b620b2d0c962cc168ea5042e36e890eaa04a7aaa593888ac95644096e93a47b1da249b02f1e9398b3c916fd4882b11cf53befe2dec9468293cecdb593e5a43406128c9d6758fe08de84ac50e23133491a4730b2bff67b4735c66823b80e96a4549f3ce89d11ac2621fa26f97d3c4916c1c85c79d36715a1639228020b3412c146d58c2d523bb9668b091a88e0845276a3a5520aba840cc149328fdafc4107d3642138f194e89e5249085ef7db2a4cea5c264c06c1c7cdd7355a4170a952bcb4e992283a0b041fcbd3880e566db295008293398b49ca740cbaf407be45d3c9d3d9a4e1072e7484be6a2bd349a8d0e80327cdf3aa72cbbf4585061f52a204d11e78b5936212da04b7def5c027bd5e591ae3eb79f2c0b9c93a2a25cb0a428b073ec73f93df62eec099a4dc846c91164bb4d881ad9ce4bf53293b9aa5d481b394cf045d5da1035b72eeec41e5e53db1320736793e5125b33edf2a7260d53f74964a2194928f03634ac558caec24994170602beb85d226e80d6cd612af5cc93d9bee06fea2978d09253a9da70d6c55fa3ff71cd52d1bb8ceb1e289a9e1ed1a788bf9645633f92566d4c09b9d0c5aba53a8a434703aa58c5ebac43249140d7c2e1399b1fc5a058d33f0d71fb35745cd5065d028039bd45c4d59493fbaa14106ce4f4c82b6335db1928c8193dd524ebef99a938a18189d529434794278520903376e826ec8a47bb1020646e8bff760514db3f20576a345cf5fb526c5bdb0c924664cd7a982a834bac05aa7ed9d9bc905b6c3ec735f474f4a32b790b058d94665ec58f3911c1468688135e982c864f23f7efcb97103ef7bec7014a0e9096864416960814d2d9a84436d40e30a5cae2a254cb6b05c41293b41c30adc8a0ca1429355e0a44aeeae1e4fb60c15f82c393b2679e9e49429b06351439a1254e511a5c0a718e29615ba89058d28f06149f449b1a4072507853328f58ba6d913381f25a7fd3cb3d22b9dc07e284f269324a4d104ce6de4c8ac1233a98f3498c0bb5a8aa9a950ea8290c612f8a0354b0c1f1d6928812d31689de4f9bfe41ca4910446b4944a761eb3de83349060e58b9a96fe92a0a1048d23f041a8eeeb99badf46e0d4e5527277c84b825b04766b3449276e6810816b93b32839b35892541a436033a8b74e2767be6c823484c0092583ca6af6b1dec460b0e9979359bb8a27210283ed2b1364c98ef71de22fd890222bcc8367141dfa8237df2bf590a5733fec052b723385282595480d79c189799fb4c9c25d70d993a4b7478b09c2a40beeb7d35b29cbae752ef87cb257caec6d0f175c6a2db16bafa4995b7082494d495473ebcadb82dd944f5fcde3a6a45af027c9f1f2d4346dd382cdc92e09fab45970a2c49cb26d9e8d5e65b260544c4c9a4c932679c782cd5ea2b299c792731616fc5f9f3ceaaaa49cde5770f2c7f3fcd3189e5d57f0efb629c6dc69dd6d2bb83ca61f73b97e3e1956704295d0a7eff45b8959057b3ac850f7f14d8919557019a47890f977e6692a18e5317a55aecaa74c50c1e9283165916ad9c4cb29385139dfed56fcd836de1c6698a21ab74c25774ac1bfc53a3d3284126c52f0194b4dcc1b26ad2aa3e04ecce4891fa46d2e0a2e7fcc5a3b43c1fe77b2cda3f2c70f0f14f96776cd7fd61f1a9654ccf804d73b4a3f5b48b3b3be5829667882cf3e667292c245e5ad139c6993947c0f4baa63c7093ee978176c2c5797ea36c1c74b2568935212baadd3045f2908cda27e1ed7ba4cf0de991f4dffa44b4a9860f427a1bbd16d34275d82cf24c99f6926b304f71a969dec64afafd13c07d231a3128ceaf50d4a4c929c5344093e8eba8c26e7754a8226c1c88f67490a133eb64b82af24c9a2936e8bbdf148303a9b78565996d9198343518e1c7cc283478b51823052d08112842146182708438c32cc8004dfc9e47437717b04a32f0893692b5f996e8ee0e4f26c92bdbaa735c146307aca2e7b5da8ce1d46b09e97359d9caabed1457092e82cf182cecda32a821375e4c9b2745bea2411fc65f1a444ab99a42622f8cf49b6fcfb9d9f3e04e7c12f588ee3bf1a34041b324ff4e5fdcf275808c6dc3b644992a426a58c109c868ad18427a9412b1b049bfc4af7e5310982df18e36ba9a4626e522038f133e3552725dff980e0a2668ff1cdff037bc2734776cc6d52ee074e8a29da6ba6a566b0933e70c2a2c6d1d896da1932767f98c1073eeba25a4ab2cbafde031fc5b48a77a7b09cd1036f9ed5a3e612b4df9a074666502553795a0dfab9c30c3c70d9fc45c9655228612e72ac4cecc0757ebf3f9d2ae536333131a30e9c92aa7ed3473d4154e8c07930f76d171b799739f09ae42e214d6a911bad1972e04b9d2a617789c30c38f09ea4b8c94f75d09f7c03a374c926ed348de8b86e0262861bf84b7dd59777a23ad886196cb8e42b49ce11266a41d4812366ac81f3f04cfbd22625d1a9810f4a4a6e31b865ed581ab8f4974a4bbbc69224e9f230030d7c75fcb55862859faa70a8253646e3193831b59ff44ae357e29a81f3244f4f652769fbb932709973a38ac6d3a5a52123470af430830ced57dc8b5b23f21f65f0d091e387ff188fa76387f6983106c67ce3da07999a536862e0eaf429c1537ac3c06bcc7623c5dc5b93e817668081d39a3fafc392dceecd17784baaf3dbcbe2c20c2f70726bf00a42755abdde05764cf60e3a5656a730830bfc7ff6944e10da63f23e29ccd8026b9a4dd2dadc5962120bc30c2d70e6257e3491ba176664811f73f75329699bb51d988105f6d4e5d49583c7d28db760c61558cb65a95c533251db92608615d8927d2a788cfbd6f72883c78d31a30a7c3c73511ffda702bbbb194cfe98e050433a72a462831953e0dfe4f65c2e2e0fd2bf1418b96aa2544d5dcad1db30230a7cb25fdd4cf96453a33dda3052d0013d28f8c172aa3cb1242d42cc78022727e9d3a2b6a6248e57c68f6ec20c2770620cba9bcda44a98d104d6729a96d82787093398c098ccff1f732651d641e6862561c61238997276cb234d9e28cb8e8485194ae0ea358a097e3fba1a9b9104de2435a26bb44bc30c242c5adf5e6742bea80c338e60caa51d2645cd124c439b602769ed1c05c30c23b0d7f76be1fe6e9efc22b0b6299e2df849dfbc89c088f0fce9639b9ad664087ce7934491d79f59af324308dc99da92fc244f30182f292993c9eac4cb3b301851974ef4a5a73cb9f30bde7352ba93abc6177c99e4375ec9e2e68fe905278752925c25575ef0f93944e9135a6de4ba0b4e68d2a3b3094a74c1f787e79283fe93e44bc905772f6a479f2c5d192db8e03caf5349eae52dd89393d063c24b7d8ecc169c9824359922a3e8cdc95ab0dba5b6b172df9b9a169c261551aa2bc876cd2c58f724f707e15ff275ad031f3774ece0d13a40810e12981861d48fc1a38c06c882fbbe8d232d9b30d9772c181f8bb9531a008bc4b29b2497a42727a5bfc224be6582d0ef49da159e7c63622a59cd5664f2077da2e9ac398eac3899b6246d7ad5ad0c1f377057c197144b52b92296f4d3d28406a882931a524f0ce9c9a42fa582cb5e1dcb6ce38dd98f0a763d4591ba1e2abaf753f09baec24c16edb6256e0ad6838b3c3998f5e7f69482f3bb54cb4a4d273587149c88558799e0a32cec51b015f54b4ebb39dda64614ec987496a56a28b8d4494e6232f9ddc80b28d8ecd027b54575f03c7890821ecf8347f76081111af009fe4dcbd5629027384b4227758237b54a5983e70de0047f9725a65841b34f256d8291163a86e8ce35c1297dd5e0f17fc73fcb046b4a450fa5d2f6631e138c108f79b3aae8e827e9126cee7fca0aaffbca794bf0ea174a8a3b9e4af0a572ca11327593983594e0f2c63b39eae67fea49706eea452d8a9262ad24d811919e7fcd62f84623c178d4d7101b51728a20c1979249ffc494fa43e71ec17eeea44decb48e60df4451a2fe08a14a5d0d6804632926ef8b41c4083628d9c4cf6ab2b4a22868c02218abbc92f4d7679e8e14c1a994c44d72ca5c17539408be74c92ee527c898b70a235d34a54c8d2cc1ef6530b9cb729a68f24a704266beba730f253811619622664af5497160129ce5fda714111e4f46129c0a9e8470b1ce1db144821725df4dec5d4ba80f0412fcb76ec7f44b52df57208f60bd3ee92ddde9691c3e72e828838741418f1d1c30012c02c4115c2e49cea74193ea74231df80e6d04a374ca70bf7ce8c841869e0f1046f09d37476f074f693d090eb51e3dfe068f26431764115c86a693d5493f8a8970a8dd50d3914304990344115ced7dc98ca22f076d72e373d03ed08c0a4012c1a6bbff52d21be87ffcd091a37b203b1d8020824b4a988ab13f49728f6a0b9043304aff88b76e6188c10a1043b09a54a576665b082e49c1e4ec133355b5150a1042704198f6961c3a259db1417059bbbe7b4a86132082603ff9a7206c3b9d091a1d65eca0044820184fcd59baa485fab050122080e0a4f509ffb63e53a74104c81f7ad74d27e3c80fac8e2e557b29ee49361904481f78535a2a5ebfa160f700c20776773c59fa0a9e53529903c81e58cbcd3926a9a0ed4a5a87067c348e12d801440fc9936b437cd5b28203903c249a1853df01081ed85319ab36454bb2575f40eec0e51cb373ccc14daded4c4f80d881edd0496436258543edc7fb3865f8b8d18663e4f85146d681379196a34a929553376e58b209103ab07963462bd14aa7b18e473990397016d59224b8c83751397840e4c0ba65101384bc6c2708e5b8c1831f3a3a073fc6f7b86b9038f023c4c45249ee9cba9101081cf89cfa4c49afa6e29edc486000f206b6a44e49d0315da154d60d6cca6f5fa34ef24d17d31c5cf2029036b0f99e1d4ad7ea081036b09a9d73a865d1c9b2ee9808903570298666932bc858524c1b4b80a8813b75725f729335d9ba8b0b9034b019c2d35452b2a6e97d472f40d0708eb77b42c9ac39433a733a77fd1e6f8098810fd966a34b2c65606ff3e6b6b1cb3565ca01840cece65cb7eec1635079f3fd02c818b87c6fa59fe4741db59476ece851823a31f029a54a297ff02eeda91cf9c3478e10a0ffd163070a7cbc0f159402240cbca8d378a743fbb49f80815182d6f50e356a4afd021b6410bfcc9233880e03205ee0a49427a8cb495da9a959f009902e70c9c642e8d22ed964c805decbafcf3573d01f3b1ab061432d12205be05492ea4efad169729203d102bb514d56ced6affc570740b2c09ed4de963ea655651c040b8caadfb14cb9de9f2f03c81538a11b6ef2999845e8e6060ede879ae1008815b864b1aeb5d54d5a1dfd8e1f8a3eb40aec49ee6ed2bef8bba6763b5670e702102ab09f94bcf1f7205fede4861640a6c0a6ac7f92dce51eccb3366cec0d2c804881b5169344cb6c13f2b1e387824481ed1e252f6c93fc2a323700814295a5f299ec9b82fe06fd030548049027b0eb49ca166ee238d46ef0a0c78f1218fa30ab018813d8bb0c1d409ac0868abb214ddcaf8a291b35d091a3063a729838803081f3edd594246142f529c11e75005902a35a53a614b7246d9267c7184902c3118028c14c777629345bdef4469a6d8f5f9024f0a13b9f8ed1fa242979923b8020813ddbffb3cb5162ced311d87442ababe60f16cc64044e446f2c8effef054dfa02a408eca7b374c2a398203a2270655f7552546915eb4186c05a2a131332e6da8f8d437b7c42cb0211026762c94b9deb1f7b8482c18b522738d4d006fa30c408438c303c033c701b366e945d2f1c000cfe43a5b5b20e8ff9f52f38ad4abad2fee45391f1059bf62453f064740f0ed8b031465b2fb854523cd1d6964fb88517ecc7f64c2926bb0bf6dc6e2d944c7173864c060ed005af795a83cc7bd1b1c3e80a76a42059c16b0e6cd8b0e1805c7059f5fa3b9f20754db8602bb38bf230dd820bfd61bfa93cbb09d982bf6ca13ef7e824ca530bceb6e4e86e9baa849a167c10999efcb684f27716c9cb1a73a69895059b4952e529e717f54c2c1821577bc36df75f58b05a6a2f6e4c32a78cbe82d5fda4444b962bf80fa9d94c4ad20a3e68eaae7553e399c20a4ed05df29992bf56e52ab83777cffbb9af27a80a36a47fec6892782ec1940ab6abb582da7472474ca8480755b2bf662c9d824f6da3593d499b4fa66094e8fa29b4e49125540aee4e29318b8814fc2795a4e07ea26d39a3e0a48da7366a2d0a4ee8ca98a575d99336147ccc9d4bb54cfa681a5070a9c4e49b2c66c7019f60e4d726d5ee95ad4a3cc1a567da942d669a7782fb6c6665ab27d4979ce0f47b12d362aa4e1137c19db463194c50326df69a6034a85025cdfa4c702698eb47ab8e31acc704bfb142d5a5d8da31e7b41c7009c6456505fbcfd9b46f09ee6e74fab4a24af0490a2a968eb9a2a6204a7055e9217cd44cd43e09764c7e4cd1e48a345949f031ad5a6e93a4dc7223c17b5a6edfca7184d04082f10cfbccb83e824d5a9e49c8b89a36ea082e9a581e75268de0f37e0e0d39a6e1298ce03efdc99654052d82ef20ae1df2838f522245f0a54c728da574899e4489605bf55d3c88e074693593e1a5748d87e0ce3a8f0629d252c5107c8a9e6f264d3a31af106c8dfeeaa90c328b0a1182b7782abdc8fabd3e0d82937c7412efdefadf17041fa47a285dd1d43b0f04172bac83ad05217340b027f8757709fa1f3e3e070ef80327e35bd0a692e4dfb61f18dfd357bf0f9ca035babef8dd5ecb07c67e3fb58ecc1ef84ed32c71a407ceae629dd0ea6cca03976a694ce82579658207c63ce8933a560775953bf079326f4e1e3bf075415bc537ebc07ace13c264d01d4007ee4c85bc24733e3bd11d30074edcbcfb99ba7389cc1d2007c6a44d933deaa978ee71401c3821f367d3397338f031d47b8d5062fc36bd81516b4a7e4ca36d16e406fe46e9d63c1363babd0dfc655139aa7336b09b5f25ba41b532be064e4cd00c9d6412847dd4c0ed9858b0368d3189a6e1aad1a059538a0646f7abe468a69d7d39031b2d55faf599c59262063ee53be9a9c93270f92e5959289341956460ff524e791dafe278670c6c6ebd492645ed3cd9110327e231492663270cdc49a75ffd4785d6ea8081ff4d26655a12ca46a9bfc0c82064073511769fd45e60a38ec8a0493a59b9d45de047e5d51a9961b1ffe6029bf44c4de50fa14e8b0cfa4824e1802d701b7a416e4a62d4d16b810dd7d2d5a0d4a3fa59e0b74ec68cd56381cd329d43e465f6a02bf07f23d4da655341075981b70df66e59af02eff6c1e44beaa602e7398f9fcaa5baa1ed2970252fc91774ce13f2d252e0939befae49d923941d057ed3a7784aa91a0a7cd01b16ade468e6543f81f798a4a5e80a9affe40436a81cc3ed04396a4f4d604b9026fd5dc610556202970411d56beda1dd5f426f4992570257aa437ece124fba93c07fa7263b4b6fd24448e07cdf9457d6cafc089c89d9635f68bfef8dc099f4e3ada66392c4bd085cd44b9d729299543880085c7eb38cb17a3d95d60143e024991ac3dcf5da5c070881af13f116d9ddb1da0d069b3b4d544b122a99bac0e0f3424793d3aac83ed95f301a4b6dd46865298aeb0bf662daecabdff682cfe725779b92b2c46d79c198dc21ffaae42427fd2eb8de7a8d9bc41cf27e5d70dfa5b3b67663879f0bb6fb52286d4d2b13c2452687ab7774d12d385da73df34b83d0215b704135a8e059ad5f3ab56094fe7862c7cad5e1a105d79b3a4c8c496eb1ec2cb812ad19c392dc599705279a297b7d54f3a089059ba4c9a99d4c56bb0c2cf8249a9c83da5c7d5dbe820b558d1b9a5f455f9596a0e10a2e26e9275aeb3a5334ad602d6e0e4246f51cb36658c1fa08e55b23c355b07eb209161aac4c7d55b055e9154d253996284a05179a4acc24392ab853def5224597fc4fc10795d37743c70f8d29f8349eb3ae5b9e474bc19a9a955a97b2dc0e29f84e3ab37f7f346f47c1f8a6fcb24b2b0d51709ed18312d326213a46698482eb9875d35510e129a33440c19ada91e6714cb8892a8d4fb0a3f5e45dbcdf3551a5e1094e0a326e7a8edea9c4687482d1267f4c69514e706757efa219f3ada99be0d38269ee9910fd996a82bfa42ab782da9333a599e0cead7cb74d7b4a29c5047765194ad0a64b7051f4653c93c6dc9b50e0b256a950593aed3ce70791277015d3b9dfaec8098cba922989e64c2b95d38492de4b6207b36b0f224c6084454b973ea618367c882cc104224ae0d3c6dd98bf61f1b22e1e2249e0eaa2e7e69c2ac68f3b0eb52282044675d4742a3c3d3b96e050d381c8111825563439784e278949fe79249a8f05818811f84fd5226d4c501b998243edc60e64c5072245e03ce46797e41b3ce989c09d7b2c57f5bb8e3169088c3c1d3ba407e19559171182296d4a6a9d3cc160e36bcea31f3bd5540d0c3e878efae9f81a1adb5f30a226e6d2a3e4e5a04f7cc1e86df224e66f1d2593bd388e07a1f3551c515083178ca66e496971dd00076cd8f8319281448d5df0a2af64f44cd205174f7ab2a4e4ea859f0bd64fa93031b93532967091d037e9d641ff5b30322695c1cd04d9824d266d072bd3649de46bc18d59884a3a87097942b460e408af4bd5b13f799f05f72596a81d43e347d165c19e8e49a93758e8744f2cb8ca360dd629ad85be61c1c594ebd2e9e78f19ed577063fa22538caf2bf8b498eefa62eefa7a5bc15bdf8ea796969cc76505379e4992641b2585f29855309692ac96bf39aae02e3da3e6b849f48752c1f9080f6e7ad544e6a082d3b4dbfd62d253f89d69632c7526a6c0d2d65d36192aa5e0533ecbfa18e3a9b714527099df2ca50b4d8d3ad61805234fbbfef92745c1e8a7fcdca2cf24992443c1554cbe95735efd354950f09f5344736c0d329bf0135ce8d0fcce1ff4045b395e657fb5d4de6227d80dad5c163da6cf0d72822f49e53c2698123d4f7013fc055552faa43de87e4e137c0c91ee55e3f7a5bd4cf02725298e994962af394cf06939fa62ce5c823539abfb9bc9a6df9d2538592a3aaffb54da5d094e4caf59cc4e98a42625383b319e2c3de1968493e0c41c2fea7626094e50b2c935421409fed2e73249294bcb3524f8283672a389d193245a38d47494d123ed118c56b98d1a9daf7f47477027982a193c8b8dce4f2318dd62aa26985785a83082b70e6a774dbbff7f76118cd071d426bdba22584d927439f2ff922ed144705fd97b92fabb458b228213e36f7bccde92772687e0ce544a1ea326a5f74f43702d7e621453df154db04621b8acf427878810bcc953f953532a932c85438d070f8231da7784c0778cb163f4e320f8f85dd194ea917ea31a82e0b2c432319b7725133502c18919eb3ed7aeaf0b084eeaecb294e63a3a6abc448d3ff0a1b2494ac7ca1d744cfdc0558956dad4ea21abb5448d3e5cab9693505e92207a53830f9c784149f28999e3503339ba043e74e4e81f3ec8b81a7be0a44b7d2757ec14256ae881f34ba2bd72f5c9f410d70c35f2c0a8379deef17227f9cdbd49d4c0438d3b70ae3178fa9e6aaf5cfb7bfc40418fff31dac550c30e9c98b7e4a649413de524c90a76a4e04560c346f2861a756037b9e5f1d0bc46a2061df892731aed3625a6fa926ba831074e2ed1823e935392a7a46bc8814fd57a1135e2c05ad26954104f99be92706063ae58d2985935dec05ec778994bdff8c9478f1ce9c68f1c63f0f061e6637dac076ab881d50e4b3d4b511c6a64f80e6e201defc3688d367069576dda6e5f49df5ea8c1062e28f10cb6fb5595693276f88f3248906ca1c61a38d10c99741cff98afe7420d35f0e6f153e70f7da6c54b83963f98c95da28487434dc9f016dca2061ad8f5f73c4998c8933052d0010d88408c305810460a421046d638039fa6c1f394ae92623a1c6a7664780bbed00435ccc09b9cfbff464b12735296815152965de5b714d2c431d420032b4aa7249a244d63e0469352a293a8ba77480c6c98862c952b7b1a1907438d3024e75b8c0103174268cafcbf5143a9260b35bec056efa930b5bc17d81a9326ef49522955638d2e703e5e82974cf209fa9a26d4e0022f9a4c4cb27aca16d8b09444587b92dbf6d402dfbad72b4293184d7a5960c4b3a69493e5cf582650a881853fc9622532c7ce50e30a9ca4a4646e52f95ea69215d850a3eb4e92b26609aa029796c2bc4653f4efa4022f2a8959f9bffd4e48a7c0e54bb9fcbbcf043d1929f0ffdafbbde246811152fcf6ce63ab09322870224b92afe2fb2731b927b021849f20476f4e6053ead89525d9bd046113b8ffbe24a50da1b3dac604b6bd2441c7a44674ca9425307a349bec2564a7125325f019b5945827a6f6932a097c901e363af675d62e41025fd5a92a566a643699237096513fc95fea1a46e0a493a4969c775af5536a1481cd59deeff7a62da72422f07e26ad49efe3501b03d5180297af4daa53a9a9210456efcbc4de4c06834d5236d1434781c19a549bfab972cc5bf3177c3e256faa989e84f2135f70d2552519d3bc54e8d60b4da7355d7a53c40bf69385d0e6a1fe2af8bbe09424692551ab4ed4ed75c1c7743a7ea8a04c565273c1c5ecf2ee8a49d76b0c178ca57d92d49a8eba93bd05f77973326171640bde3cf52993c4249b68ca5af0dd5782b4e0f4b9491bb36ed221fc5930a25373559294820891056f365631061df3794eb91c1c194262c157d0ea776a3308f9292cf8b4a5c96292db4484bc82919f469924ba497a3b5dc1c5de6cababa3712f492b6c0621ac60945e658ec9f362d2dc87ac82ed91565243e7c6dd2144158c5a4b6551ad82d636157cf64e7143a80dab78082a582d2956e7924b424ec17af274310926640a4e9f24b8b929a1b42c1d21a52843e7a0b3b796d2e1c1df20ad64134248c15892547d7da7d44b49aa10320a5eb54f673cb929448828d8dc55cf49304197322d0b21a1e0b37e92d726090f214fa0606c44b76bd569bf2df904fb9de40bbae2f59e4ef1045f923ee9446fd9092e9d8e1e64658db17ce404b7aaf74147fb0c316d82abeece599b2d0e144d70419499942c893542da99e0e434951a2aa568ca144c30e241c52f593de5f3521222e4126ca518633e559324a5d496e0a4a0f23796076d3a2d95e0648fa37247b1e4d53525d8f11c93db93d0bf10854c827d4fa5f6829b982c953052d0011d8f822f03073974a800c78f1c2cf851c68e1e366c502144125c67adfa553c1d8f9748683a752621541248707a8209b5a44f89a15b0b44c82338f983f2ffa09395961447304258671e21930011d2084669e7dd710de2504b3b14878ff6406a0823b8e829ed7470cf95565a04ab5e67d79b92f59bab08468e59a76029329b894904d723a679744f29b95410c1c5ace9c430a143f0258690259fdca2653104277e3206bb52eb5116828b31a6ca9c2284d22924049764514147d7b1d3a80d82efb02b99daad5652b28c10417092ec6f4ac9b182456f4302c1dd88bb496dffd974c90d238400823795597143de7f60cb634a924aaae2871f217de0febfa397e42e21840fbc058fa12c8910ded00d7821640fc9a949348d5e22aac135e89b5c319909bd64f941881ed8f4efe1d726a5acebe40742f2c06d2a7157ed452fbd28040f3342ee1046881d2aa40e638cd162d0610e140891830442e27023078f0c94a046081cde75ecd07123070f0784bc2124c40d3e78f037100969838fcf91019110369490358411a2860384a4010d3342ce7023012166904048194c08196efc6040c8187c7c0e901031841112869010303820e40b0808f142dab1a3078f2edc48fd632420840b3f76ece85180902d4020440b4948167ebc8f1b58b8918347067890fe35a080902b58e1c60d1efc0d4442aa702324840a0a0899020e1f8d6324440a0f0889c20442a04023e4093c38379cd00426f82063093b52034294e0e3878ecfc18724c10221487040c8118c1081902240208408120819428810404082e1c3c70e0f2c0004183772f0c8000b44407e5101105fe4e0910114d000e9052fc200d9850fd4a375f03d72f0c8808f3176ec28c108882e725103041733406e718306882d7c3400a41634406821020380cc220120b23800482c0800020b4e6c8f3926138458f7e504905730766f7fe9772daf63aee0635aea4b0fb6c11f5f0313460a3aa0810d9001d20a1056b01e4dc93ebda3ac360ab20a3e7f7b499fd52dde5e094210c6085e70030520aae0cee2580eb7926f64387ce418e39401920a2e7a3653f6b7b5261f03082ada37c9ec9498478d0e6401c8294cd67f95f2e7c6bb8ece01ea3253585ae117ad2b746671688fff91c3478f1d1ce8c00d1b3678201e2ae8f13f7494b1438c313a073bc8f813e820810d1bef237d8f1224037003482940487120a3380665824cd79b4445c1aa26bbd126fc6e8416871a48281895fa2da3c92c0eb5ebf183070828180bed1a2fed67413ec1f899244553997b8233d56da3e2c8403a6136403801b20946ef07fd298f65f5276982d75ca272840611baa64c60825192cedc3ccabf046ba937ac0f4842f1c5e44e23203c00096ce698efa6b4c97c27fb8023b0177a23babebb2a77d0038cc0793ca12698d81781cb799d7da287d0a099071081134c12efac62daf85732044e599da0194b891da4e50142e03726e9977694c611058393cc73e88d6f25e705189c585265d73dd35fe52fd8cc9dc4bdcbf94fee0bb6b5c4a04cc772a4176cc9cf959bf25c64a54678c1e811992663a72e533138b414c7c82e70441766c3e0482e8a315ea97fd5ef366cf878ef51c60e1f62e8c8d138c4b06143478ec6e185115c3496c7df4cc6334138f43dc7183ec4b061037d0e1e3b3c077f021b3672f03dd07afce07188915b7095da841079d68ecd00099a30620b6e2fb7ea6ee894ced75af0dbf6a3d6c71ca1c58dcc829317541e19843e220bae4dec526e7f2cf8f32c6a3f29999643040bbeb45992e935a764f20a469989b1e3e55dc145d5dffc24de0ab63d2f95b9e6ac60ab63dae09736756567156ab032bb8ad75105db15cd2dfb6a77de9d0a46b42f2d73f46c26d7a8e0dd3a0537559258987b0ac6db43bf6b8c9a8233eb9cb5a4bf905ad152b049e52ae52226a4e072d2294a6a32abab925170f23ac949b997a4352aa2602d357a079129a1e0458a3ca1a3df54731214ac0769829b4c59f519fc043726556cb711ad4ef1045b310942889dd6d4dc7582ddd54e27c59337fe6e9c607b4dd268d2a64636c126b73729b3da3ef465441366a307239960834a21325e05a1a007096cd808c20826d831594a0c59a5e492e518462e6136d08825d88e2769e8efb859c34825d851e739896f3aed37995182d3ac7925b3ec488c4c823d19e36df6b7fe92948e1891041c4622c15b5fb2ff8c6ee29f8104e3754973534992ee7c3e82d349594ccd973989274d8811477022636feb07bd65291b6984d918638411ace6e67c72060f32e53db208c6da2f5989162a824b926c9db693fd5dc96a3092084ec9244f2cc97bea4a58b4308208364cf8e709f3ec594587e0f6c646f52539e639c5105cb0249b56108e14829374759027b5f5c352cfe1a3cf11824d3244533e9994fd9f1a3132082e6a27d5f9d48a5fa97168598f1f3c94302208fe649f6072103d1b4602c1c91b25f2bee41c94d094e41323806075af62c8d4232cc95a1846fec065cd5ce5553298162d31318cf881f352f6a64f12d33878dc50378cf481eb8ba724d9f4bb499beb60840f8cc5d4ac39553eb207764337de8526154e8ce881933f53d2697742438ce481d329bbf6b54226008218c1032773e852da8234d9bb0388913b302a4a87c9ce26aaa2e70e2376e0f54cf6f426f489a1e78ed4818b57c16d57e4a792d27448924acf2bf46f1a8a9139b031bce412d3f9ed43732372e0f2aea7fdcee88d4b8cc4813d3d99d13f9a3c46e0c0a52c8b7d9a72cecee1c81b58f72a5994acbea0c42438f4863137f09e34c4f265cb1a5a0e32c8d8e1628441c68fc161a4200461e0f01fad8113884004e67a9041c6f6481bd8a4ac7793d2cbcb8af7f81c683dd8c09e5af656763d29e7a00e1decb8d163c78deed13ccacd61640d7eaea4d735c9a91c3776a03c398ca88151f904f318ba5dd3db869134b02b1afd4673b0f8a68443edc60e8423686084e8571f19639a888c9561e40cece79433c97eb9c55246861133f02955cc4ba93db5b3c96462a40c9c3e0f66da04fd217b632c31420646271996838e08256b3406364b4ea73b0932e3e51313236260446a4c8fb1b763f51f063ebae8c7beb4f9aec42b3102062ee564594afa2425dffa0b6ca6cf98ace437594c4e61c48817d853722cadc9566a84cc2246bac0e9ab1c5ef229a995c47f8c7081b18ca9d225a5c42475e806235be02e692da166315ae06a64ca12f2a4c8bd71240b7fe5ab984feecf47ff0946b0c0be595576693e93638843ad879660e40a66c3062356e0cb3cf877501a138c5481d131e4c94fe9781f2982112aa08d1b9982d9b01129b06d4a9fe55c524d5c53321205cece4eb2304b82022b7a4274099eed76474f40b3ce82562eb91338a5b1832e61f126707ab98385aea669d23281cf1342f4799a27f9a34b6037a5eb5ea69ce378ca8812d8b437395d5d5012d84a72527a2cfac9ed20815dcfa76485ee9c61ffc811f83856b91aaa937812f120a3078e1c310227b6ea58ce5f5257770d8c1481cb95849e67af1b0bba1122b09e25e546bdae52e522244686c0e7cbb6186d93a8b27ef0e0ec8f3278e8f840c9c08810d8bf1293499e1aa3ff2d120cceab52d0627db9a47c038337693c6db64ae4178c98baadd5b7df03115fb0b9b62fab92072df19422bd60c7b209e141692d10e105a319fab4374d9f527fe92e38a153922767934ea828a92eb813659a4a503a9ede5acbe582d3b16a3c9518c581a6c70f1e22b8e084c6abb2284ae78b9d5bf0d91b3bf589c616dcfde8e793ff594cda5289e09f03366cfca71e9f031f9f831ccd8230c420c35b10460a4210460a7cfc73800c6f818d058029446ac1263bff134f7a12e43efed38daf418fc6e166092d78170f6d2d55a9b46997831b22b3e0c3c53cd5653d52a043053a48803ef0cf811d291091051b33d6a7f292b72a44291089056799b1c4b22406d34188432de19103870f85059b24dd92824eb2939c0c249c107905a332e7d239c554e5903e42c415ecc95499620a9a27a36dd82884482bb8cb4963d6132a4a3f8a39b8b1e3c70dbb80082b38ed5f39e992b4b2499655a4b1df62860653db2e5105b7b9f12495c4ce4a376dea0f412ad8245ee98fc61e2544a6051154f0afdb5563c12bccaae41466830622a6e074ee1af55972be49726220520ab67ad376d29a6ce3f7a4d8b5b67cdb5a1f397c07ff68c70846c10932f79baeec25b41e3bd28d5d8188283831d5ba9f4a9a074442c1a5ea2a1db5e3aa49b11c21d004147cfbe572d1d723221d37ec3e5083d640623f7ce418235920f2092e08abf6bc29fe6ea38591820ef810230c31c220c35b4086ef2011f1045b1e1a636bba5c915d27f8ac19efb7e49276f2c509ae4dfeba8d16dd045b7b62e22951d404a76308abf1f466821f35d3da27bd98e0934cf9c4ac3697e0d4e5f8769f5aa3a8de129cfa6675b76c578231c9fbede46d77cb9d13885082172d5a2dc898d7a0753419377aecb83109ee725413753f25cd8ced4044129c0e2d966e9477d6ca8904dbeb6a996a72b39896051148f056e2bee79c7e049fd3576f64107a53437806114770b1d4bf27cf26d7db46914670779fbfb5a40b8db184117c8e126a648e3a4158bb0846c3432715a2135104a34a2f5b35a713c157b4cff869d9a4fab38c4104117c66a5248f6852c14f120c440ec19a8dd9096dc183bf3a440cc1c54da904a5aa1b3ce8d13a729c52083e899a73d27d6e8fe7b143c710210423ac62129ef1ce20880c82378f7ea5f7714130a641c9ef55d287854920d87c26973a6f9346ed06109c8992617ea1fcd7b23f301ebb43059d52ce10323fb0c952a536d1174cda7de03254962cdd181fcc2798d22066b27be0b4b947139a6338d46eec408803113df0572663925a59eb047507b23cf0a5a4cbd16972c614223cb031d96591d5eb1dd81883129e6b64ecc05645abda1c54dab4291c6a85162275603d5e123359b68e4a111d92faf72c5a96340740108618617880073d761c7483073d7690f1642439109903ef1e83f664d993ce6c0361881186b1b25d88c8814b22b46b0c75e3c09f778a41ba499941fe70e07f3cd3b7c43aff45dfc09d5ece5f274d67f1de0dbc8a302ded9ed5e4752ecb20d206de54da9aa4fcfda2989c1844d89076fa25bfa0ed35f0a27674b224a90646879a6cee22afb3e7d3c0a6df93745d96a081f54c2986d4763fe93e060c2267e0b6c562e9fc61fa352562062e43ee9b92c2c7824819f83826f735f858fcbf5c41840c9c3a416bb6103ad8a78ab182c81838eb0b192afdc6ce211503974e2d57d212cc5385641009039f5f74a9e5f926d31e0c8cde161594ee85a554e2500b83c817b830a947875bf01df705225ea853675e78d0b92e70d2affd45875a04112e304a0ef6bfa9194aede6cf9f1b25b1cc2844b660366e20a20546a3e964927de87d93e3504b4260d2042192054e92d5839a7492e94b6ae22258484a2072056e94b4959f17c44f883844acc049b771ac76fb245549912ab0654263d0ecb5cae6d0011ee20e112af027678cf741bf28b52422536045ddb54eea9bfadbca0644a4c09a9292d427a8a0848969c42312055effad3f69de1c5e8ecea8d430455269281008c3e17018043170305f007313000018141892c642a158389e6b8af403140004502e2456302e1a201a181c1c8a04c37030180a0582a1402810000502a14028280c4bcb15e5012b410b5ceb89042187f93993d85d140fdc05ab49609df91f12296db48bd59eda01b1e28d204fee5335cf61a073de20c10c282e25ccfb262a5bcb656404a527db7e23519dee78ee6b0d65ab3e55e79e4afecc0fcfef5569c172e7af9f338937b00740f9090e959b616007e45a8838a00d700320341a08fabafc451e0a1cfff95108c11dd45e57cef35f12f99236c4e07e23aae7c50fea5e6946110c8f94123bc17b04407bf50d7868c33274b0e57f200ac0ad56f94d9889a6e94049e269cd9e101fb313405600072c9b282ec13365663ab9e517a2860b3d3be7b7159f623d7bed65e04bce1ee79901838ffd334767d19bb4608f6facead0eb0d2cd94fed4adac97caa15c9460c39792636d4fb3e6ea3470fb872c9839ddaa204d0a2ef98c9fdd429d61bee9b5f56b0decd4daa4f3020d44b357bec191a3fba42aab23e575281eac4aa45ede540eb19a35cea860b63ebcb04b4227dd4fbdb03bf1a35a3a7d42daf37bc9ee2ceb731e84d1d26364feb2e7d04f742a8aaa8a07107e12c3e28cb8af61d6a42a10aada10ac12e9b7197946e5f68c201e8408e351d5e9041f909494f6ed7f78fcc71b18083172986c60490da6335046e199dde4ee047a666c95e6b04b2dc9079219213c94e7afbf6481209c4e0efad215414a49461f34d5843afbdcf94e3eb8830f93f7d2846af9f6c2a0088a40ba7534140f909203749ce89b1b450911759d347be57032614630d893be67e42689acf2f8dc6319d170011b7f5e643d0a7a67c7dc9659c48817270ec425e2dfdad8b310ee32bdc40ce7d1b023ea24f93efcf30b41004ebf0fb06bb30cba3ad0e3bf90de6e61e3f522f42deae4edb2f504475d72c1f580fe2ad1910fa2be8c7aef9ec130f7b2fb0df73d58fe31679d0dad2dfed116fe5a0861cbb4bcf30447427a712239cd726147f36211e0c2c98dc1d9ed433d8ea88296d9e36d7147060ada48d28401bf4d94c983eb665637de103b1d41024a7190aebf7bd8c40093aa7d1cd6e86cfc92646973fbe3ead7267412c8f59ba9533963f2c33c77d4843f177ebaa14da3645b5f8de6de6299ee285e3f9bd8a3759e27b40c3e32afad090a97809f2c9a822b8fcb345c13988392b04fd333592c5cefa3853e5a5535e33918ffe8d1cdf398a8534a37b662c4deb3de811f988e9742cb8457fbd0586e46defe885f7f2e06aba6e0a6a0397b92e3563d5664e4358fb6cfb531ddbc12e3e6679bd6029bb781bd0db0ac450e23cda64fd40863a5927dc292c1cadfe0bcd2e6d479b8a6729dfd522124137903d4795317896a9766d5d8d5bdd19e80a090c4f121903b96bacf6ab4966490c7aaca4d37cce3d97ebc330f819ee1037c587b6a4aa37b0ae494e9c5e1ac9c76e212b78c07d3d39151b916e6491d3cc155dfb5f0a85ad8d66982eae830306cb2a1a1cdb9dd16e0cc45fbf2c66b3bb49b06bcd18c660474a2440a30072fb5735ef6a9dd75c705405c6e34495c4db0dcdd95e8b9098012527f60bd0c6fc462d8472a7d127f06b8d8d2c83e41eee2243c47f788dbbbaf24e8954ebe161920b840b21624e94591cb9ad145799c510778b90bb8ea88ad31661e76a1540869149760b53c5cb8d0194aa5fb961586fca6ec8dcfa506bd0785482e50cc7aeef91355e9b655de81c7737a9f9566b18aca1b8e2fc3f0b810558fe8e5bad26ecb2edcfed1af70d20e177fbaa3ce2efc98a1f31bb93538c6c293bcae311df40c56efd4a7bcc31bf36771f880a84dab7edf7c8cf334490fd52f759d6da6825f5d1e8bc1819f36313c58d1306e55c5f41fba318ebdd6185904b99348beb82db2276c88c4b11014631fda20e3d8ef4197c54fb4c621dadc1863e502f45e126bf840230ef22d5e230ddc8d834e733a6996312cf85f6b6225262218ff138e12a4328921e2aee5eecb41175a7c8dae8b5e884bddcea219e67cbb1a6d2a943408d509d6a67a7d233614f576a84d6684207c6c10be23335e553682ae60bdf6af9ce1586947a7f67e55122d97cc167538b84a08be56e3de910a947a191edb50e6668b6f314ba04770551a4e6f79e9834735680fdc0a7b6e79774bc413e1d5cb7ad05938ac9fb28e87f5f94fe54de9345e8718338b938a53fe98b43b8841d2960911ab25938d0cd3687111dbf4fc86cff245b65199f71faaf6b5d1559015e38b42d5f8d53744311308ec26eee79f86a10623d8409417dd4024169ff0fe2582323bddcf441217a57a108f936e168eec2c1383d558e16cc8941b73c113910816788ba3fbb8ef98c56d9afad909232064b8ba20d3339d2389ca05fe0da9f8c4583934c301bc6eca2b50e3c3c960fe941deac60f0bb6a2931322f205934b12b11eedce7103615bd628e8351c38fc03d7ca3575d58e1fff1665a452eda103053653cbf35f501cbb51d3edbbb4748f36a57314c44876a6fc31882aa27cc2be47006918a01c3af95a790a5f33b306cb51007f1a86d07a8b4148c071b6bc640fabedc8f470be4a6cb0064023c38f5c60908eb0808c48169f4b853577a7e6b91727d477dd7deb8fa5d8878f0511762ae3c8bd0634b8e8a5a91c3f4a07416b67c07165085b2078c28d00502a99646dc78918ef9757e45135d46839f481ae61fc188fd77a5e503bca7fd8e86badfd245872dd0aefe4a1112e5198bc016bb7e0752fefa4e65d858a40e352239cca58925b16f28dd5a8aa1e109aabf40787ed27db30ef0afdb5eec62a1f89427cb0d2d95190f9d1be9e913632467918328cf1a9c952b7ca256fcc79687bf49c97e05e18d2e1c93cde32fa57ea0c73306ed22a6b651c44f18221ee87cd8f737dc1709c79441e64306f03869d6d0d13ce03c976dc9a889052ebd94293cd86e3018c99c0796c85700565917165b557d61f0397b9df336f6564e40e0eb8d6892cccce3771d2dc5b0ddf8010f0b26ea59d00f5f88953eab86cb77f67abcfc365485884e1d3f2a0de4769ec6168ceaed12027636cd6b349c16f325be3fb195a0cb8466dd0f7895ac27b47851ac7693a52fbc3a61b890788fec113fa99485240ce5824f78d08a9b411546b072628f74ad1d860c0d9dc12c6957c939fdc1e022698b4a580e037a54913f9a008228c21d609207eb49764af300f20cdf3bb3a4d2205e615dbc4a3ccfad3a4e423c86ce891b1b9df6b51c2a06f74b00070ae45a29ebbae188b1744b5e7a9b79eb868e4725dcb5761998735b77e122aa6c2d114f3f7f711877c3a229a630ff2f8fe61dcefd3efdf44a77b203549772e66db295ba709b862774312807a22cffc8c9c49a576de7202332d78a5e69c352a6e6d8295e6ae5192d5d896fd8da7bd1a7a3a41a0473e017461a4eb8f528d7c3c9ca6ab419547e86adfa3a5f6958080582f2b155d914aa4170845d6302b16067a7998fef993a10c08200d3763077940cf2d40dc283071132359d6b183dca58073748dd0218334536b1fd2d1029fe6fd2cac30407f6f2c988401eb5a791951776d247ffa333def6b19d8616dc1802667398725197a548f97f1285d6d4070ac533c9f37ad8dac47418de44b559d124afa67d38a4fdb8d9bab86cde6e7770919bac6acad02edc3bb522a1db29949a5aed1409e99d03d1610301829a687342073d4263125c8317fb335f11dfc8db34a0d1b29d9288a6745f9ac5d1dcd9c4691a0d845ec6461af88fd90297acb0ee334cec4ebf900807848d7b59128be4d28cb1f26b0de77cc88e358f7050d39c9798347b69d07b4066c04932f0d9a825ec1dc382c205eacc4438b489a840ae5a30b05140f161aaf815950e23e18d54a7b1099fd852a450857e1cdee158564d114ea66265fc756dc48d5aaa75013ed5dceeb3c80be74ae7a7870964dd8b139860381913a50e1b792e8dfd1a60f8e33d47e627ae3c2b52e2f43559d7466e0dae13dc1e0e76e0879706cb46c77ca85be1fc9af4091987f3137e34b17c1ece9f7af60f370d2b80bda2f31423c526c739de0f409ace1b227add63311bacfb91cdab7f1c6dd32013900d0641069b3cea81c1958bcc3c62ca078db3d6a69bff3084cd11e2f6a6d60ccd33447a57a804b45f628ef62de9dc84120cb590b28e24937c7864e38ce1fce84e38442313e92b1904186170deb7d96ead9c4c1b9396e707f687e334a606f74c4236d566be88143d881151adbd3eeaaa4aefee53418c48cd2b983897e80616ab0b4739680fcf4aa5046d678efd9154791a282869c5208e0bf82c9f242787e97f60c258bcfa6ed790fd6680ee067e24e3dc8dff11b637785432e8994a545beb5290ac159be4a34b69dbc1b54d8d48140210070c8765c4d90f53d5df14afae41fa8539316265e7ff97da65aa37a6e7030b45b194b916dc41f0243bc6d2fcf5dc1a5f24253e9f18ab3d9e52a799d6779872151a24259026b700240369d54ccee63eae3dc21df4196291a6720dc5d7b373032156475f510ce53941fc14ed197f19dec70a70299764f4d267bb8040882e9c61026d64adb487168a18f083066c96a6b898a55436a4be71f6ef2c771930a0d6c8888f10005a8b50d162fc7d2a901b0d45c726b65d61db0d60e82ccceb09e9762ae8d325d440b56d7b4760f2ca1452051a3c39776872ddeb30a7152e586b35a4d754e29d368846c3f7201483d09eade2b00e96f59f291f63e7040a614bde8ca343eb1a248f6c455aff6bce4b0bff9806b2b07740d739a3c517846547596dfc6170fb63cb4c55c0f9ef8783d8f483000b495d1e04751fca0568a4120cfe3f9ece905aa2210237427b2876f2ed078b3b1776144ac9ee30240bce096dd432f1a16b1b9b02c02e2372b4990469d26ab805fab27b4ca597dec5efd3423bded6815a5614305577b7511076367d085764c8d599c6f99e3106d96c8a4875334e85226082c94a8b9a651f84398838c54493fd30c56830784da99f86a72bb28234245c5a1e151a415f12ee5563ca96cd3b73d3813d0a34fc8d824bc33a97e89161710e3abd4228b7cb85794e30b426f18ea3414c90a448c2957756f50ba7dbe898675db31f7d3d14099a1ea5a25fffae36f00b7f5e17c3fc21c4cb45b9c3c89c09a21332a9a765dac9489ae25f04a5820f898cd0ecdf08ced45a393b01ee0b3f4ce351b512158fa6c9a96d161ffa01e78e6f06ff02d2d323b7dcb12bda98ccba0e3ac26ac5c84926103d1f89096e18aa8fef93a5390830f9e03915b5c3a5fc9313f37acb8e3fd393f844de1e77c96bf29d0c0aa6d3fa0546fd58fb9ddfe75db22a90c9ef3a9c46fa321f257847a137b231ce8eabed7e119633fd12904ee673243304b6291222906c75647745efb5cd4f634bbf22a521ca5135dcbc34c3c714e086608913065a9d03c8cb98024c546e92dfd1d6eb1c45a421fd777bb22f973f80de3959cd76994b3853a9bb7744faf3e81d104dc6de3b6577060b5fbacf0d6b31511abcc8cb30006b36af1d5bce6e6c909d1ce302736db03cd92c465999f24e98fe5049a21b83087505620b5cd1e36cbd5fab6dc8304905c329eb4cbc164403038a0dfcb591e3b7a351dfee759ebfbdecf4c5502bf101594740817adf5f3974dfa9f03ad4066efdb6d664704557972e8276e953abe026d749930edde307c22c536ce537d31648694fddd81648a118b77cc65a807e4c9fcf2ba7560524dc308b64cd1ca531ca4b4ad9e909feb6e9a26e62b99aa81ad28babf4b7daf439ede0cdacf178c713615965e5b9b9cb9b3fa2a1d4a3194aa15753c997372619614b3b25a9897eee74ffab9df7cf5fa8a4c2c977a1efdd98ca489c08b9a5ba74183b0546319a016bb82c53c8a73daae72ef42b531f5fa1bd9d20c62aa144c6ae2883797aa4011fee2ff788c6fd977fa4d14f996f3c93ab36c1696f02cb569ce9f637d9c13a132ec8c8e7815286f592dcbec23a5c337281a4245c45e903855c983b36080aa94b25c0b47d4eb8a6d240b5f15fb897a680314b30a3526693ef0b5daa931dfc1631bc550385ad7bec4dcfa392a8b98f456cc6917fd4c92caea2eee253047f13285bf23129c702fbca032dc3c2ab9fde364ad0c9d200bb9bf446ba4ce6dd36866fc0cff9c04d319415319000becdbb5a180109261289823da53671b50510af7c9cdfd7d78ff6dfa8879621a00a32892e0a64ce8af9e010080a6d891cd8200adc4fba1faf607df584a0bc4ec3ef4efacd5f96a7f7624505584b8e78702f2797ce13b447e34c02bb8973867d517245766a0d9a14b86ed395936e8c61a180fdbdff8a150294d6e9a29363c1ee0cc9068f37630ee8813bb182fd8b5d17550c3a0df415ba9608fbecbf49d8088e7512b5c57e01077ae1822a45ff416c07a71cc9543315aed39702f42c6f0e486d12e702e298fae6aa55a80095ed3426340041c19beea0db49b59b0bee2830a2331cb2c6f76a94aa994b8bce3934a7c1d664d4f9b7328d085bb666173d6d6e7470febf8bf347068fd331c61d09b704246969ce2e1631bb4973febc65952c65ac5afe376a617649bc59b5775e3b06589a51edcbd0e20269ab985530692c950e651c51586f11c5c7ae4a43ceacc4c455a1bc7d88542dd09eb114d58bd308820b722382f863bf9e2b92746ee7d5052ff0ddeb09a0b75c875b2fd17a69cfbd469c46ef3003bd46f33abed79a5e2cf022b5173dbda055afe3853e244877a5d85d3eab9e1108ac13ead1d11ed5433a0a3a812ce763567bd4c3a6bb4523929e39ef930f92ce161d52274daf898e1925b49c57edbd76f4c2f65e9be472e472abbc16eac5b2d7545eeaeda56df65ab4d4c48b34af88edb5687537dca4ad5c158d975dfe75ac3d759c65f37fe3ee94eea4dfb748613db41888bee0c34f74529ae80f884a0a970689a96921858ee58c84df2d729ec4761b389cf817b96e18fc63c726211fe6917500d7f0cc741e5bb1c6bbde9be9fdf146127b111ffdc48e841984a9fb1fef368e61f16c9038a352056af21fdf4107dda6c132f4fb0fa3a3ab671446408836bd3432652136de6ecf0fabdc1990e828ede313dd225bb47c3cb102ea1842df1fb81c70c33cce090ecfe837e7c942189994c4a212ad49366b5f8aa8fdc713d865152417f089a68b865a5cb174099a8e4de0ecf88e10232e8ca10ec5202968b2ba300f302113e2280796bf4cb9aecd66c5d4220db784878c962fb6fc6ddc802e0fc1ef84bb21913c9dd6502c318af1d4a3ecf2aa3b36895512dfe30d919a4884522b9545d8a48088201609630b8c2c0166d3f6bc5f712517589900357ba0d8c51c39941038eec0ea4390995dd11ef0aab39f23888de7c000260328d38207e7108ae0d8a4ff8a15255e6c0896bf022065bd47b24a910c772bb1b6c634af203dbfaddcc414c956bbe9d4f414878025034f48f1a0d2721370a1017370691e23284d40f94a4c55e7e80ea4d8ee5d94a141a3c59e4897595791b037626ed701855f744e8b69ce40150a328edf77733cf58c837f2e63452c6841f4eaac652831b296408c567304623d3616b98be5d3255cace5f58314c166ee2b96d4908971079e1f9cb530d89cd2efcfc13791350bd49e3f0576275c1d303f2dbe7181d49660355fcbbc83b206852197f97a86f35efa3339d4b00307b23ed6e6491145393012e5c25aad3869724932519e583bc363e7ba20a9973bd601dc2563ff72d4ee482e67b10e5644b1cbc2369e368d2ad98092bbad33573d1789fa46524319e954dee88b88212e0e9baa27f840fb4fc1dc8d718738b4f91c58e18d40843e12b98e8c16027fc14f72b89c915b43b6c0794647bb2ac0554026e5d4dc6d25bb36e3dabc4520e2789f26c67c3a97c0e879768ccfd48a465d1e25176bd9e7dca8ffc8569489ef345acd7e853028fdf40163320b17b3b631bfa4c2a7b1ee3920fd4043b418ab78b8d08023bee8f62ef6222d439b3dc22a07fde2d09e80cb040f85e304d463b421f6dc6c740133f848a5c7b85df8a0e8cc9ba9d7703d05f026ce4f4c2da88c08a98b6776dcf4a5a78281af14a5f9757f74af544821ef13be73209b46f60225ede10b9eddc2088b5a8eabcbde7bd8165e19b733d39f389c598c2deeebfc3a255be17b1548f57c2ec2e13629c445e8c67364c5b29bc5db054223a59788d0e25e4cdbe00a64ac37c29d11c7afb6a1f72c8b93699b4bcab6c8a4dfbbb592826eeb97b4055001be6eac48f0de06698d370f44db0d2bfbe272615901b1505ea591cce256ff0b1732ce79ac0ef1f6cf765de34a0c6a6d3322ea000b9a86a37ea36536356d693d2be6a67be402c0d5c47b85884ff6dc2c9a2d34aa80199c00bdb9b5b356e4826a9662d18d078da4a83ab956636e1657f9a64f335db474dee55ccf5bdd78f47721c933f09d2acc7ff661335ba1963d0421bba8ee311a9c9a70ef00394f16626ca5461d6df59951467434403aa9f223723893edf8a0bed0e4a2455557b0ef7b07e05baa2b0a075db59629824d07adb468208e99c70474441c6fbcb03270f62f30dbbeefdf8dbe5e859e8a6f93370bb54708605871a31de84842a53a1f79c29858f22b8bcc1ae712824fd65635300267586459498721ef2c17ad952dd054d91b1d854f39ee846ca2883fc593ac5afb26fb2e8a07cf0a124821d328f0de02dbbcd1ad200feb480e495e6e20fe5d3e609de552748666e1dc8546b5dd7b096471856591044e39df0a9d6068753c7e9a49fd125890ea45cb422ff864d945dd272fd04d5ce50f848986a6d5dbed8bb38e2ccf2f8d9e2ab1d24f57b3eca4e8643ef751e55b7f785c10bdb9db7fa12b7d5e2c87f79e3c37fc60ace07b5b3b74ec8c4665d31f9c32efb80a6f9dac05ff166c1ce475bae1ab01d8b3c9d81045e18b1931739fbee4f1a930ca477a2177949383944a82462a2265fb15fdf4bd6c802d25525dda27cfa34a2f0945d18dfc8a3460b8647f0080020d36cbb5e04940db199f3bdc3afb2b69bf916b14b4ae4abe29b6d4c96ab35c346dbc01d85333d0493e7543cf9d8f8379116728807b8473bf4bd85281595bddffde3328cdf2e58cdf7b6b5930d9d84a73ea7e639f38bb5bc0a7e8b4d02ac3412d12bd6825441f937397a6d0da4df366c80ba629c570438c4f17f9096decfc1d6d1c3b71f5568f27355f5143ab3992121bfce92f867cfd03d4a8f63dd3ac4334547edeb97dcfa5122f79c0338f2450b7f54b00b6757af6c7c8e5558060458f92ddefa38f9eaa7ba56de8c009ba7da844793f3acdf909000b8dcefcfb461996c95a48ebe7c18ec5a53688a698607f9a7e0ec9b1c4ded553d34452d7da1f9b529c7518ba849ec9a63ab8f08bdfdd629f5a133dc37fcfe938f694fed28271a7953a92dd677d4d4d5e21de4747923d01673f36bb1f057eab26644d132081e04ec3ba1e3a5b233c7336a75e40903b079b5c256625d1799cf247b2e428e7320c4c8d43802ffbf11a5e8a701a86b3e009e0ab3708529cf052447021d5b011b1170ba2c660a05360a7c410f4f749fedee45484441929119728fc010bc4bfdc14d7fb7ded793f8943e151c8e64e3422f11728f149374b09075a631356cea10b09d4e5e586c0a85b6fd51a1be5f693f335c119ddcd72499f53019c667b39215431bd067947c5337eaf88cd1732eb11bf085383069f0499714bdb127f95d5793dbdcd86e100a6d33c680c590eb9b0545deb62411378042ab16244bdc43bf805f27ab910578ecd5225a9d749fd4e31f56b0cd90d874bd99ed4d0569462d6f2492a80e9470b0791354d0b08648569d4687c8dbe0bd4718c59cec479256b796eb5c86d11ec0dbd2abc758d01513b3cb7875efbe617202e868672bf5150b618de59c57e8d1b1c7adfa66f380d8984446c244932fd8c346ed5615e3fa460d2dc3348300f945e3f7622dfede037e2d8f61121622e12776f4f4a81b0b9f248879875097261c08c3fcad13ec4dbb06bb6eb08dbdacd032c7f6c24cbaefdf78eeca6900b31241594147513ea5290ab607412298393fad525c88bfd0dd4c9b50dad13ea50facdba9d7a36850bc4b26eb557f81be003d573b11c3db6fb5fb2aebea2b608f6c86d080cf748db66e39387633656683b0cea33bb23c3176eee48870742b97b1726d565a9a8a6876ef300c2786a4e8c51f6989ad9a7be3026114ad8ad7bcd65ec19fa7fac566b8fc93bd91d43f04d822fa288c681aeff8bcc2d7575dd933b9f9bf744315abed0cb08bf94d9d410641c3e85fd3f1f4abede34877c51901322e5324039694472ce5b48fb080aa6224bea56f1cf5c312358a5394da3d2f3c4682d7982b4c461556cdbeca09418c95a42ed6939643119b0233acb72540fabfbfae748257d814b0568b2e4fb8808c4ad9b3e50dd0c514a6c4a0c6bc1ac22f06dc8aa3d4bec16cca4dd297d66ca6eed2d4107fc9f97500dc9f86ca7b1cfedb3b896d4b1d0ca803e8f036b234892083b52208d94642ab06c97133bd3cfa0049c93285c1b1572d0022ca2fe0ca4a10db8b4f10a8358b954e28a8a491c0d2849d70e260c723201494ab4730b62036f5274801351e1581c501487c075eff27c9ca86b1524284d88b76793168521022b0408f13b81634c0d331c5ae66a46d1e8aaac04bd716888195fe9246993145d701010bce7a8c2ed670dc21214c490559f8fb28cefb3b5621a641f0d11758ce592b89dc7ee71af0f1652ca16048deae07aff30e0174cfd6ba48f1fe496c4d2973af939b152f8895d15da431482637419e3757df5fb4d059224f718d3a83c5b206aeffe9a9727ce3747c147beb129850cbad377b128dec1777d590a8f13c4c309e052062780aa72190ee4b78e052e4a64af465d69d29c56efa191698f7638689de9e7ecdc556d7db1cd186413f06145b3acc085b2f7771851b342149af737a9a334c680ec8d45ac2d476062a234e073992dadf7a8be86869b1f25d680d1e2b18618f20a6713e92162704b36fa066e3ae5292aadc21f28783863057c07d0b4ddba29926e8929304acd0fd976536733741d3c0c87a235eeb2f6c6b1cb0b69c175be3a6b1f70448860a53f5a24bc0629f4554cc2faa459a19cc18e3bceb0f3e08e379609d973d2c73d3a3ed6b692dd911d400b9998cdc5abcf50e25bd6ea8d3674fab28128ca6caded58f1506df62abebe037e0426d36dc02a9467f715890797224514215d368009ea04f1c660aaa150fd1428b05edbe0d9b4f432188156c28362ca1cb9b55038033a61c5c0f285ec18eb03f7b2ffc92a404c1c0a5e6a276e4f2aaa4b0e4e086a6a6a85d07538d01cc14523ef79d6a0c82afb0a03476ff3c17caff8d864af4e1d5a643e8f5e3cda8fe2d8240d0658e42b851795b614df42cb3c4995fd969e8412904495c255425a9f3817d8f94747a896c17a394b7641231dfc77617af56310a8f565f8f8ce50fae038f12f9710afbbe237a13b3edc42e98bc578eda9826f81951bf0182378e89fbbedf155bbc64f6b62df85ac9b0b32c9944d22cec2e6948603317121878925bf96c7f6c8e7d340188fb466c8933ca257953442787baa6a42099ed3ccafdbff5da7f8e65efc76f81ef6af11e31e4bd07d08e0b873eace86049f62fa4ed77b6934cd3dbc94e119952fe8e119d61f37baa2ad39429adf9109b08d3ffb93dea239675405cfe63b1c5482242ae403914fbb8377c52ce93cd9f9cb8b3ea3b60fd393c4b000d9803fe53af806708c1c2f7f6142cf47e1f99b1d97cb07fdb84d1aae946f71037b3828fa1543e5fb82e06a8de643a406648d638f1dcdb3e5ed817e57103d881ed1f7f432ba5e9fa59f934fce77248eb116ff7c8ad4dc5326da0f84f3e630d444d625f54b9db449401bd68b1f851ffe5ecc6679d8c837387105623d02e0cf246a58f7c0ad6b25d6bbea8a9f14de3e2da9e715ea9f4557f4b40793a4f79275a50e06bffd0961635a495c09cc61c7e8e5abf6ea2c8b8c7025d4a99666a4849c35ddf754f03ad28435761cbdf353e3cbf2c2cda07dd7b7d14b6bd899b3aa5fe912fb59ce3b39bf4366f63ebd11f824b07c528d3a697cd2516561cff241721770ada7e314be12a90df4f9727c39e9ead61257bb333f70ffa59718f8afd650615bd9ce1332f3101c788b5f3aba9a5e1198608d97f6b8daae4095e89a1a29e8bb17d49d74d4b73b876eaebfe997ba735ca16a9b5fcabe708ee12b3fdf7780cb5f19c806f2829f5f85baa0bd34d7d69f4f3688a81f252d6c2cc6d56e582bdf50db6d093aab672a1cdd771c4d2ce95cefb74b6e2a4d4603ba832002127199bd4f1fd1f31a2d4cce13a24fd93542f19f2102ac114cbef03021e26df2dd697497207db69d1525d6430d306efe7f62059375d3d881df4387f033577c567fe3bf3e43a6eebfe2d5cb8228e401b936c3cc491cc3d083a4a118ef66b497ac904db606c343759302aec0dd257ad99844ee2d5da3d39c0a2f2540bcfb3f7aa366dba3332fa5b6347db2f04e43e5a1f815d17983a0dd5d7b12eac6f41e3c3ae00831ac28de5464359544f41b8399a8f2f500cc9651fb4fc5276197fdbf4712e13efc8df3290f157e3067e8d725870c3b9882d7233bd7f3f5abdb4a0e57f2c05c0b03aef6e6eadf7aa81eaeb7d284c9f9c45ff6378d97d6efdccea6451a69a866d4274bdbe6e20ef29a34dc0c4337ecdff323383e04da30057da5bb1a10c2123ccabd334c6d37860c13df3290bf84af2e902656fc00317380530aef8f15c517f97b38d4c4553a4d901dfe2f90ebe14e3c2b789abcf58818686b769df325b8f3793681bd58bbb774b8d42b9467a55df806ae7625ba01f63a1ea623faac65c60413973835feec995b468c2eecae957fa128a2f022fa4f6e5d82f3d287a46577a1f2490e3a78856163fc185fdccd86c25fdb4ccb98fef61de0ebc5c26975021ae3104d1fc74b7dffd3341119bddbaa294847c845464200fc73d02602685bef279d0c7d8bbf03c198cb83d80bd22e5014ae8ab77aadaed46fe230f442adf635b8aac9b0a11574372063278e2dbeb2f41bc9a54099bd8dcf2c2419e7ec66c53c4d59052d712f5bf5ab9b68293cb32e6b4b193dd032f1c9cdcd70dc388db61a2b1d46509d97b914a0f4fe4f70c93d867fbecd46929e0edde64c0b6fd11b7cdf8dfcebc97334fae24f44b91a05a572583ddde7fca4a8953e2550e11428ec24a4208839ef95cb98e8b901a0e61931b03e987dc5934d453932b343802a46275f8a8148d519bc9a0190c1eaefb25ad765f05ddb989eda2b36f44da0a66d2f09d9f07bc79a3606c00e3b88a08682d88b48cca9f27acd0a7e592cc809dff3a76772f64a01783b8861b86319adb44565aad94a07b3d5520869cabf792bace920f5ae572f8235b00519fdd49f75f90fec1f5c73b398c3c4b0c815752275098286be4d9a3bca50be701029428d38f80283f47800d289cbeb4a07ed1bdf628d32933e5a8fdba1827b65eefad5b87fdcd16fbe732227559a8bdd14618a42383151522ca1fb1903c87336ae0dc8bfc9d50c4ec9e02d7857a2c122ff5ffd7ee5b81a1cfa69e59483469f1fcb59988c71f0bcd23e3aa8a73fc3e808651f992b655037b13051b469c96c15af80dd488c9fb75c5139d4c9cac1493070b54c919f23026ee11496cbb6af7e90eeb0f9da6c1a577ef83adf8abc4b317e3d11bdb25dccf7f0bba2ab3d47f6f6d6937413635e9a7328b8bee0d245cc9717e5f5003227e0a65335be2e39ae2712b84e108cec709771bf5b368c6ec7c049f61cb8e8c12bc8ab6b6cfcbb59debcf593a77f8186bdf6808d0306551dacac1bf89a1b50fb8d505ba5a2e5bc801864ed80da3c703ad2345273f6567cf5b77993709c765a27849b8a2e0a14e31cb1599a6f132213e0db39dc7c13955332373cdfd42eba37e2bfac33be68c09d31e65759e78b5e2178b9e576a62e170f19c5ced8f489a1b6a407e073957a42598319c98a268632fa3d1cd140be9d2240eff48ec3c99d922f86e3ae1483212233a1c0dcc07b50acb50c91a3c08228358f45d782d744a810f7c92433280059afd778129a13d4e2f7bc54d67124b98e538a2539b2477ac17c64afc71b29cb173f3c5f281d748a5fe1f3d1f8b71ddd7a9eb9808104bf321fda754b4c2c34c605436ea01f3f76119c917712cd34e951e6f74efca8880363f1e93865c7f57bf9024052e2af95d9190cd2599e41b7519f7b6d0ac5442894a88ed740819e3ac7c7b77602e62d6edcf4f108ac61d0f40bcc058c1c238f6e145dfa0f2ce45eb85ea8e054c0e2f74ad9c55bb39c7912e462ab90bce8a4930a3d0d2b96256964286f4d3634b45548e6a3165f61ebb896d3e3da091ce4c1706b383dc6ad3e3957e1c9d376990e9b8a9f75f77c41f05a596f789746ec2f20a08bc38ff3f63d110ba1208126c6c73c39fdf0a6cf0c338b67cc16add107599c6849dd1433908c6cf7e913216666bbcc9bb46473bd32b51ead62555ad87e2ab16490dfb4dad823d6b89c63309d8dbd46e99f33f15e82f71dca6e5663877cb986ecb932d1de56f18a687add963561c17c40871bf274e40396cae2b42f863453cb901dfaaf01a489a1fc15841e494df904c81f494defaf090af7139ba1a30f318a24467b1fde36350656daaae3c835386c9e9b04a2b3bd646420c8dc00b7834d0e96d5613cc41bba09205585e669b94b70c6e17a10d1f3ad0f3fdb121f198276a5753369856f790042ee2a336ac846f4910074640f4b2693f402305b498cf144a4d2f8b4fda9b54b9e355e744116111b1ac79e544e86d6544d1dc702c801787f7e1513c3c058642cc3c814a84456e0206a10e205950738fd2ee2225055bb532f260dc78e278927ca4382ef05af1184530fb109a9580c7c24838cebcf05fe42f10c6c702a61a3539f905b8c189ab0c18600f00da32b9f3c1776915212fc28266e04dd0384f548a290b2c108208a5b3502df4eb3850236fc4c5b4054eed48c888cc7c838a923f19d27a961beb115d4f735a62dcf5a6d13e14b4ead17024f837162a600cc428fa252bbb6022a0049fb800953598f9aeb1f488c20a413b036683db29ef29c61d02e9dbae454d8fbbd76d4275e02e8ee2a8e6d24841b925743b95e6c40fb526a3b6f47a9d5b424cff569758e0ae1b1d216b8219e5bfc0b4cdb78b93e2e2cf0c0c48158ba293e73d94c8899acd1eccc3c00f3e56e4e0cf910c589dafcc03b17a6a86fcc7ae17af6e0052daf8af4a2ea2fdbdd7c53dd292796eab60184f9a48f548eba4641843d963e749b5abf3996ea49b452a18bce8634fa7e204390bd9d6a5e868ec46024078e61e7b009d5ae213b50144e43729871eb88189174131a167f57154e8f500f3a88fbd2882d6d1037051b1f5857271852998d4cc6ad25f480e48b39225f00e588e2d35814543602dacbc3993760b46439330f0f0f0f0f0f0f8f4408b7b60642da169220934c12709a62d0c82499924c2945c2153b10b2371bfe226df88bb4e111120004a809b60954097e2e9b9894d64bef6622f8f89fbeaab288e0440973919512748ee42118d5f14b9e56baa934046bf23fd7c8bcf57d29046bead3065d1a4270a7df6b3a7e6510dc9f79ced17eaf3c5604c168ebe451f5c440b0651a4229394aec27080826e6f4a11bddf794d21fb8dc7e79645091b39ffcc0c7cd6ff99fd2072eabc4f28b1bbe993b3e304a7ed2ce31b53d702332e99832c60d3aa62e20850e3d247a54b209b1abdf151d79e033e76e9f3ceaa74c78e0aedd76c42c7d07eedd44478a7442a1c30e6cd24df71eb3eef6c460243aeac0e8a41954d2f8aa2f163ab09ea4e7a76c6ab2480e9bd03107f66f6352bb79b6194f28fd24bd35f552ba858e3830c24b5ada0b716bf5140b1d70e0920c6d2a395edec0a605e9a96336154bc4ddc076e477bdaea30dfc2699d484984636b05a952309a1295407915c031fa228b3ac4d5ea1430d7ce99590db22d8479a7c816698a046165c183b1d69e04430fda2a5732b59850636e5ff52dabe22784ee940c7194c2e4aa3fec7e0191a5a093bccc0da298fae9f2287ae0040091d65e0b74e86ac7531ad628d2f96091d64e0be7af3f84d9041ccb278858e31705ee14993ae6006500a1d62602c69d276a546c7af182ffe863942471838538d1194de2030b8eaa9f53b47911e1a5a37b4701b5b58c7173839b636f13a99a660d3d09a800c19bfc5692ddcc6164be8f002973528cb9afa2ee652e90213cd544a5a636d71a3c8a0830b8c656df98ffc696899a0461643e8d802db9637a6e99cbb337566bc16cd0531217468818b9a1f723c8e97c814d40e80207464c17c72434f475f2c7039263da6d2ba4c075d175760f285b28e49d345c9f52302001c74588157dbd1765481bf9464b092639b35561d54e07263aa51b24fd7990a3ba6c09f893c955939c6a44926e8420134bcc8c2031b820e2930ee934392e6fcca5eb14581dd7ef10832a93a6d1d2830a92de99fd09427b0e19931b6a6886de23981976016df57c5c494d6d1044e9eaf7972c99fe960022bfabc3372d6184b550a828e2530c9447c517a216372130dad2e14031d4ae0540af2d276356cccb8b1680b1b3448123a92c08dda16791683b64b161a5aef45165dace064c8906146e8400213dc72c62da12a5fad34b4bc682fbea040a22d6cd0c00a741c81cf3e52b724a6061d46e064a89f529db3f4655b78e1c5df480a741481bd8c599e73482764bda8ae00e0830e22b031588cd99284d0d09af12ad8c2c68def22cbdc1018b3344aa387ddf6c408810f539a829f655fd0c8133a82c08646fd18fb7389681010981c299808d2528a12b1fd017b155f744e61f132d34ce8f0011729a5587e0e7949653de0456e322969723a840e1eb0a1156ab3b492ea2b848e1df061229795ef46fb5f75c05e30fd26297516858e1cf8d515aa112d2774e020539f3721ad4517cdc577910de8b8017f693fec53d561035e82e7c7b46fd6a6fe0f74d4800b2a82d27749fd43582cd041032e4347d698d3fac68d093a66c00575b2e27a0e49716441870c8c2316ac656526653978e70d16e42c7642e634b40c72bc424d93f2e8d15cc1e5c632215483686879f137be8b56307a938eeb26522c8bc9b72d3858c1c78e393d2b54e98edc2ad82d993d49f34bbeea34b44ec0a10a26694fcb885e961d8023155c081aad5f4354b0f9ec533ad1d77b0d1ba760dc74e759164bbae427430613384cc168ae9462f48a3a5182560a6e73f05c1da93c7fd0719082d1fb0fa1b59641e48a718c82dfb4d737ba765ad20019324c148cde34939b1afb6a2ba16043cede97d4a6855c1714bc59d250e215a2c8f13ec1295753ca47ab7e7ac98681c3136c109d22c9f3b213dc858a81818313bca87893d488663391db049bf37ed03b99e1d0045b1b62e792a124f5c7ac58173832c1f5f9bfe8eb16536d16810313dcc49c543debc8d71cc271092ea5499b3cf9580a32ad21705882f5bf0a4ae4986efad29560824e253285f429247d29e1b7490b765a5426c1a694f5ce257ed0693949b0f6e6a696af4d4d7d91e04f2f62ddc71224b849f69533a8b3cd177f04232c4fe868428e602c9d6fb808e9ddbe3682731119733368d74d9f116c10aa699b7f4cc58e2f824bd52127ab5ad4c92b8249e94ca51ca39b49cc268271cba147969d56d6112238214db38a568b55e21f82cb1075ba25568f25b9214c6a3aa29e489242b041e4942da7ac9f7b6942706a915375064b27c71d049343c65c2f2243da4a05c1997c8b582a8d49896a2050ad512540a44a9b4889932b7fe0c4ef42cab9347ee0b73af77bf2f1f217fbc08b88192c99ce072666f55411fed903a7f28ba68bef114b89f4c06627f5131e6279607325b36e0dbaabedc6037f7e514b345ed2d3d51db808fa6ba37bb56b291a030e3bf0e719218dca98775bc251074e4d889de9ccf72c533ab041582953ca53e988983930d13ebf861c52c9905e0e3930724b8b03a3e2c99437a44cf79b84031f548a6363da1bd83c39998eaa615bad1f81c30d6c88419a92a939bb841c6de0bfdf36dcf7eb2d651c6c60f37f47b13bf5f821e158039b1b5457a8cc0d42ed345439d4c0a4fcd3bd74a3c433a3ec091c69e07254b7b3131f0d7ccc794b6e48798d2c4ac990c1451238cec0e6123a57764b31d794190adb284a4791e00d82a30cab57a6242dab68b9d4aaaafd74be105bb33cb5eac041064ec7dc91904e9f255d4901fc81630c5cf27ecf331d5137e60f38c4c088aeb3d2133f258ddb488888887877777777676666666656555555556545006fe00803e3b944d58bbdae05170c5d08d3aa9efdfa02dbbbe982889f953624993c707881f174d61137a56069121a5a356c6829a594520a22222222e2dddddddd9d999999995955555555add14401a881a30b6cdd0779a6313749be891138b8c07765a6535f2d217c1f706c81b1cd924763ad05fe5cd355a64f22b59959e0e4a65aa78d6982d48a030bfc87121ecf2f7f053edf3ca70e9ef386885b814b2a49f64e2a3a9234abc00913b92742ca39e6272a30f6395a293ff7586e4f819f904452217b8a14b894354fba489e1dd216054ea59560498550275f82030e28702b22afeb3f664ea9d1d07a021b27f9b928ad132c6d018713d85431e435ed3a2d93c990718109740040101c4d60a4c52c1d64bee49a837b430b6f02071378dfd3b9743c75043b97c0a69ca89d54489284bb1b040e25b0153c527b97ea2f9d01024712caa732f7c5a1c081844448b09c271aec25701c21edfc31159612388c80c43c6f091262b4a5c05104469767c564621281cda6d3e5f9ae8f128b0c193b04f6fe6bdcd3edc520d70d7c063884c0e9bcbb9d20e4416052d84737b9ed92b473010710d2a684ce1cf53e3f607564af859aab6451ab0f18bf7819f288509e37ca028e1eb07b29ee4955c9c103ce5bb495e6f0b20817af2be0d801632266c5f7fc0af97b0e1df0612542c5bef08a046dce3719f85c1d3d35da6360d472f88f8e5e29d26260dd2bbabe47bd4b6d187851b7ca165330f055e1498ae7d98847bec05fe7a4fa2364558f395ee0df32d32dcbd3e82975810b4a25e752d7d10f6a2ef0fa41946be64aa9edde0293b3d6326676b5c0f7af258d3ecacfdb9205d65fd26be54abab4e5b0c0a691253188bc6d27b52bb07e7afba332c4ff245a811fb9b1720ce9825105ced4d3754fd2c2a0029f53cc4bebae5919c09802a33153c90a5d39c5523252609295e5a4de4a2ec802461438bb48e7e11ec3430c80010556a2df88a463a5274a0c17309ec0097fd79228292b8d4a0b184e60bc728fd0f53cf931a86d6c914501184d602b55e97c91241a5a3366dc680301cb000c26b015f92b628abf04ce5208517b2d4909ec767d4a16e92544d1a1a1578f6c54000d8c243066a39be19693d226b2e14529a2001848307810a9f65e4d787d04d6f6339bce4976e93a69689d2f6e1881cb9cfc2ea938ea193766a0065a00a3082f80410416c01802d7aaad41e6a4934aaf3084c0e77417a9a73345c8de1637b60b0564210046105200030805e307250361f88051a62b278da634b4740b183de03d33dd8dd066d5588105c81560f080fb20ec63ec182f6c6476c08f2ce5412711354795349486a3e08b195ad8b0b1851a063a1830812d147ca1850d1b5ba40a60e8808d9aaf52bf763072c05f1e1115dbf2c97c32f5c8460d3ca8022198d1001838e0c254eef5a42b86b859ace1002b1837e0d534a713f97f3b378a11806103465878fc1c64e4d03bd680939c96694c253bbdd38089a73178a949d2533d03d6239bf6d12682fa88c190019b6cd3d64242cc2926c5827fb50c225d32c182db5499e259753cf3ff0aeeb5d54a8b974c3d7a57f0bf35316d79752ef9b782cb194a5ec6e897d53e2b38574fd2625756d2e0af8213c9fc821411a982d1591777630eff18940ab693259d3b28dda5324705ff964327a5b68a9df25370133f461dbded0832a660646534b10a31a4a839a5e0fd3e76efd8c689e721051fb2489e147293e84c8f22213778b6585e8b828bdc665f1b27c511da50f0fffaa79d5b50b0254f86529a317f5b3ec148bdced1354dac24349e603d2429493188f4e9339d60256a36b7d6d02f9b139cc4e45d9eecb4c78b6e827f4f8f9643ed5f5faa093e799bf9a810f3f529137c7e1759ea841213ec69f0589f31e4cfd9bc049f431ed312dca5ab67aea045675e2ac1a7b4fb0b1a546ee99460920afe66428293e0a4e86d176591045f4a4dc34b55f64f4682895e6a2dc71c735011129c7a9498cbbc47b0216b5efd98352b5be7086e6d35c7e0a335829d203763041793dc98f72eaa3a69114c3a6b11e999f32247119c4c9fd46a6e2a118c755232d52521829469fdd9ff121a5a66e6106ceb8dd2af219488ed1a82b710a38d67d03c22a41482ebfa98a161840721f8d488aa5d29c91c7a1d04d799e9544e5af4a5ac20b84b4252b02fb1cab23d02c179f00c49b8fb0a080f40b06982169d5e3f7ff0f8031f648b85d09af5f0036f1f82bab01f11e1d107ae4a9ac4c949def59beac1077e4d35489aecf5ffa94278ec81d159d1844e2562c7cfedc1430fdce90941956bd6ce4d0b8f3cf0a6d354edea453c190088c1030fbce853b56926f284ac310078c1e30e859c44f2b012ca62460d1bfa5ba008d4b0809a871d784fb94453ec242dbd08004df0a80363f9b4d74fa2e8790c1d584d52624a692f6e993c0b1e73e0f3dd542e1d245534150b1e7260a4a5182fe7d69c8304eb0c1e716063ad774a23e4dea60e1cd8eebbd4316d87f6856f603fa4c57c1dde99dd74039fee25d5695687142766f068037b1db442bc14237b3ab181dd7a49793ce9785bd6c0eec91fa52d281d4d683cd4c08ae5082ac64bbf1b5d1af84b7252b21c3c6faa4e083cd0c0669151d4bb257b699186560c3ccec07feeae534aef28d10c1bc8cc071e6660b3738f6f68e5609d7f1918f33442d9253931dd6460e47bc6133153caf19486d68c31703a8baebff1fba082e4c5c05ef5491e112d7afccc230c5c14cd9b3a0d067663f68a21f6d60e3cbec0e53a952b871ad38d280dad193650b981871718e9f993d05a39a7a0f91728e8021f936648aa793c85e75117bd822c1c787081dbff117af12628eb81c716b8effc119da2b9fddd85172c781b5a60334a905bc2dd327555038f459f9f58468ed98c1a36fc5170a346046a580003f0070f2cf0a9496eda30d331d5bc02173bc99327575249d25b81ad5cd3759319fe7e55810fea924e6f2d15d88f94f29ee8af51ba330546fb538e933f2749504a813777c9b611c745732cd0048f28309652a55777a690c1030afcdf7da7f1d45b4a795ff078427a4ddfdfbea75df07002bbe9a7c73e53d362cc3c9ac086ae12ebff8b9be2e8091e4c606367d055e3a639c7f412f89cfd638ac493a42eeaa104c6ebec3655a3789da6021e4960cbeed5ff5c73acdc17376e645124e08184548ca22cc918b38805051e476043791042f5e7a02e6cf877910123b03184d43b19a44b8aaa166e630b2d0227515378c698f5a6073c88c0a54db0d4956a77534a430b031e4360ccd45bfb7a8ea75a4a010f21304ad4724b6d0c083c82c0e7be9afc9c6ed2c882e602089cb27611caaff2c63d7ec0e5bcb6b93374bdbd4a436b468dc0c3076c7fb9c5696222f0e8819264e9e4dd21a9e8d3d0eac28307dcc94c4ddabbe59a275fe8073c76c06871315192b4e96c86d7c842075c0a3ae8ce41c31a5fa419a8868d33a3055d78811cf0c8011b414b24cb7fd7a44728b031e3cf0c1b5eccd0c2c6ed063c70c0a994520c11b2666a33feb4a0b9d0d20e78dc80d7a4929a982c6afcb752e161033dde05ff06e1510346a9edcaca1854e9ba2b30070f1a30a24288bbda66b7d9cb83c70c3895948974a363d28f6079c8804b4a899f759069f3361932ae23169c6b90db171673042d2c38db944596499658d17e05f7ed923b66eca4db4d577029c8b210bd26debdde0aee52a7bca7eebe6296ace0d294508b1a828bea7115bce61cba4b989e7a509121860e5570ffb515ccd6e48a1da9e047c57deb2c3a968674a0824b1e4f26353298acdd3a4ec1b6c71862dc3599824bb6fbfef929057756aa74756c3dd59e14fcde77a62b9decf1f551f0e3a9a47a1c656a37a2e045976e5ebd5c3aad1d0af684461129da939e3428d8eead78a557d1d7329f607bf46e79283dc1987d129a41e73ac197d0d1fa39ca09bed282d2954dc69221b609ee3f59f5e4d5ff136982d3a4428a91bfca049762343921e9a99027d28109465f758c6595bf0493521219d46b869c5b82532aa8eb521332ab852aa108d366d52ea2043f394f8ee9333e09c6cbb2cffc96049ff1f2730a514f39ec48f0aef96a4dc8b3d424487029c55394468822fd47706d99ad4143a4577a1dc1a476ff2e13318bd8db08ae63de74a5258611bcc8183989b06c8bac2e82730f42597d5415c1018a8e1d2ad735ae54602375554e499a53e0ab72a37ff5c4189502a74ab495be90fc92a94481bf9c257ac3ea74560f0a6cc68f9ac652824ecf13d8a044830c2ae60446df7890c164d2009ac0299d24ab44697c8f1d26309a83ab08e5fd123825e2a5654a21746b45099ca79a70cdcae125c424f0a34442fc4e4202abfea23e0217f285e688904c757d4628c1008ac008899fbabdcedf4c44e02b7ddbe91821768e0f81bd6ca1b93327a54647088cce29920e4241e0a27f48429dcabc881510b8ea9427c5cf2126d34407f0035633d48e8ac498e3ee007cc087143b6e797c8b105403e801a76bd7f7537678c056b42a91f7be72657b077c28b3ecf36c75c0c9f3dc544d9e84e99a0336e9cdd18409d3219289032e7f8af9dd4e4fa4eb6ec02821a4dd8e0e3169ab6cc0ad6f083a4ba7067c0679cad2521a30a662ab6d6be5d42419c00cf87051dfdb5b2123650032e0ecca3f47a62f59568a0537aa52bd75768f758105ebe9d9e26ff0155cba27e54127ef0a7e257fc7cb296a052341cf445df55552102b387dfad974e2ab607356c931955537c88f2af8a4632ea9559d543021879224d77c458f50c1e9d4162aa5a4bb4b7b0a4ed37dd2f92e798fc614ec050f962d5f5d0aced36ffeab9c149cea38da64fda80d77149c92af17224657146ce7abecb9a550b096c33ca84eb9bf42a0603f5e86c631cd272c8627b8d14968b59c329d6054aa5215d45789a40c27f8dba0d2c5eff46a2837c1784eea473497bc10494d70932ce608fdff2892cc0413b3872426784b95f7b5339fc89272094692ebc4e0fa31ffc9127ca43f759b7494ee7c2518912628d1d0d6d2714ab0b146855a10d1b36a3809c64f4f7f85a4e9238292608398e428d1bd48f093ba762d7dd0966220c1063fa9b9d4698fe0729b7c5d4bcb619f39822dab5a4d31e41bc19ab24e99397777598c60df749c9094b69876528b6045b5781c91bb3c8ae0f53c78acde3a8d27824dfd889fa1fafc438860eb9495109e94a5c70fc188984829a51412c3105c490cda25a9f6b491c428049b43c7f6901074ff2284e0a3e68f5ebb97e207558d2fbaf0c21c20c62058bfa0829ac8ac20f8b254b735519b636620187d5b41a45229e54e16200620b8129664befbd15769d25007c4f8036fea296d858897ce263fb025b3064dd155927a4e1f386d799193a95b92a1e5039fd59227d12951b72b7be024855e6b4ffa828b1935b2682fbe0b527ae0f3aab2b4e5185492280f5c2e2de9447d48d6b7e38133c99f4a53fef22bfd0e6ce4bff4bb14836ba8edc05f0ed282e748cd7b771db8f1a819bf364307765584c6cbf5217e660e4c4e95216489dad44be5c0e58df5397554a8d2548c38f097b4f2440a318d52a9187060734a9e9c4e4571f53d10e30d6ca6d320593d7eb4deb8814b1a4bbdd66b7c4515a30d2523530c3660f1255fceba3eb135a881b5bcf471c921758e791a5aab31d2c0c61853c8d7579df5a91a349c3b6ee9b6a6b36bd5821867e072debd29eda14ef54968c430830b62940165580c32a81631c65019882106ce44e7b8ada12cc73ad120168a1861e0ec64b9da69cb231e43436380210831bec0a735ef4ad125777304c5f002d71e512fffa95cf8070af1418c2e580c2e9c0c12c4d80293b5749241db739c2cd2025bc182cc74ae6781bfbfdc5d971b2cb0212125bb9390185780410c2bb06361c95f2c53aebb1610a30a8c8410ef4d086dd39753017d35b6fd273931a6c0785ccbc14c3d2930e95d82487f7282ea244614184b4a9b8aa6eadfa650606375c5cad6ae76227b029b72c88b219bc71d9140218613584feb12dcae734cbb3781118f92f527a7d17a394c60f344eecd1de51258ad111ad3378ba1044e5d9749bb6a93617954a3679c756ce0011d352cc0010b7430a043868c1849e047051594a9f691c0e50f31f9962788946268a8d517336ad8b8da13c438026bae913b7278a4d0bd11cc97c12d827b2996eee019c620023b2955ca3ca232c44c8c21f039a76adb1ea1591154d5b181076c208610f62cf3149558b142f08e202726cf62b142c960f1428c2070d72552c8feaf2afa03815313a3c994b2c5f823af007a2f6e7c8d195584183f60d52c8936ed4cff4af201371a5f2b5a05d1b6a51ef09eb74c5707dd41e879c08d92d93772324f39da019b469f103a754e698374c05a1a95354d3352c673c0f95d4ab79b83037e5c42fa902235a4f40df87859a322a3478ea10d18b5db2c9df4bb4e35e0def327915e826c9506fcded5578a60dbe6fd0c384929c94ef1c49001ff29461112d36616752c3817cf946458ac4f5258b0218890cc35e43091be02156a94aee0c7423c959d72a790d20ac6e37e32b993f4eface0d2ffaac79369f256c178a8e9a82f524486aae0cdd5f53b2f89578752c18fda547e13775470b9ef2fff6f3f055f6eca7f73ade9bcdd149c9bcc67275d948ea59782edac7f1d8fbd26472705a7f39de698b25bcaa28f82b32472907b49720c2a17051b2d681ef17861e93fa160bc333743a96592fb01055fa3834e29e83df5cdf90463daee25db554ce58e2718b5a126dbd4e93ed5e9049f3c9ea568e526f19b13ac88c8961c73125542bd092ea4515242cce37fa3d604a754f094ee2fb5e3d9996092b0a0a654bed1383626f82454333b477555ec4bf0d95a841ee55982fb12a9468de5d4a6aa041b53b473d5cf6d0f694ab0a11ada6fa1448ea64930d937795e1a15a9aa24d8504148f3eb4d7e478289eff5ed99bfd2860b095ee308113ac4903e8fe0276beab2acc935083982aff5a4d147dd083ec6f5ec511546b0169eabcd33b30836985f66fd15c1e90bd713e9a389e0f2ce72cc1b447bd02822d8b72bcd9292758c513d0497d36795f0f4a64c450dc124ad94e3ba8eeeacb4106c86a8bf951f42b0af7d25c23e575acd20f82064a84fb79e269a20b88935d9e464ffab54068275cf7ba7418858b980e0369bd24a124f7abcfc81b7bb98aa5979d476c50fa94b97739023c53eb01f42bf7f05f9c0b675f4b168a99df43db039e752263fc9167deb81d5f5b496b3bde5f3c049959cad43e814c4c4035f4af443f6afb6e8dd1d18a17e9544e5d221c70e7c7f59e6f3182b5b07d692bda6de5856f6d381ffaacea739c6649a9e031fd7b6d6d52f932b077ef33c66e64c11931a07c63462f5a7dfb0bd0c0ebc4d504f4ff91e43fa0d5ca8ed7463fa7e2feb064e83c4a452ffe93adbc0a5082a779299620377d23fbfb95a6be0532b9426dd15e9cf52037fd2aa3b9de97419ab34703f7e49a96822d328a18153319666b98954317f06467a8ca1cad754dc1c33b0d716b4ffe7acf69d32b061417b254b0a88878a515cf75c271020077ca911ca2ad89e0002e080117aa571e448f2f49e1bf0a324aafe062bb19cb10113d577573c526ac0893e0db943bde6f4200168b097b60aa926be240d0808300336d3e5a5af0e5252b75c74177d812e6c143c1040068c5c4d79bcfffa88055713ff2659b0a4f98085114b06cd75a65fa2a1f50cf8d4376a7040868c2db678cfaa57f0aa9daab7f482e7ccc12b067cb882fdf7907c726fce9f4c1bc3472b1897a0353187fe64e729317cb082d3244564bf9fe86d57c198ec241e33d737a6d40dadc2872ad8111627a5ca4a295847860c3c7ca482b39cbbf72c2da76a0b0d2d1aee45a3a0630313b0000d2fb2f0801d3e50c15db68ba46c7f62221fa7e0533419849efe4e62fa3085b93da852faddff28052fb94e6fd494113e48c1a878ae273add5ace75146c4eb591275db43f49110517d2f8c91cf742b2988582d37f5aeb49d64e0a2550948c4fb0ab2de2af92b286e47e788297981e41da4eba738b2cb4e804177a623ab4f9c1095ebd46cf44e807b9f8d8049772ff8d0e9db2c58726ce1f5c4d69f55589660b3e32c17906ef3121646a8b7cc10726eee312f8610947941ecbe23d41e9faa3125cb2cf561262f283126cb4bb6f4b9646a5fdcdf86312eca4ef0b2982e71d49d7c8a2bbe00f49f02942564be5a548f0a5dfa72cc95189ba4382c91752eed5f54d1a9ef45d5c601fc1dfe6da0b31d446929f1a5fd060000796081f8ee0d24deed01d3b430e79207c3482cb4a9b84d29cd3c5d41a1f7c3082cdf628f6ebd913a2c6061f8be0f26bb46dea4deaf50fc387221871afb869fbccae2b89e062fa66ab389e9a7db3850f44f0695de36f96a02989aa858f43705a72e84abbba11f23704a7a9fca3bf67de695a08bede5cf5edf253690daff04108de64dcacfc397a2e8f61e16310eced4f1a95b46f6d4c3254f810041bed47c93da14ae836104c8c21a95c9353e7f693133e00c1483f31b517d157436b02f413b08f3ff09d822c992688a949af014df8f00323f34995b4d90d267cf481edfcf96e4ca2c7e8f61a3ef8c05f8e79ed9eaafbc8e6c71e18f563d933069d0f3d703a676e917a31755ea81f7960f3e432a1feb992aae4071ed888ee9382fc1c3d0ada6f98eae26f9c013eeec0ff9ea6d0497bc81c94c65f0533bcc8e208e1c30e9ce95112f2250f091f75b07459ac2dede8c0a435ff5093318a90d6b0310305378c9c1b5b20d6c71cc87fd13565882439f01352564e4af47130b72a56e776d11a97f0010723a95fbfb20bbfca0b1f6fe05ac53c567255ed72ddc0d8969e9223d936709e5e3b87fedd47d1b08133af095e3bd235b0de56bdd5a174688aaa81d39fae2b588d6895681af8d3123a2ce7a9117941039bcd5574b09442436bc68c1b4da3d8c719d8d321b5952c8bf91e3370278445da6429c224a50cfce9b411af4939e51dc9c0954c5abba23f06ee2245b09a64b2d23c31309efa1b270911db932a59a05c054230230035f80803a79571530c9e22e6a081a16af0f1051c7c7881ff209397d2f9f9a1aa2eb01722a4cdf38a633ab2830f2e309e2ba4cf132ca4557f0bac9b0c22a59e5d588db4c0859883ecece4675a9e2c905de4b548d0fdb1b447f8c0029baad74166c8a7a5dc2b7042a83b9dcd532726d70a5c1c2fd939a90a8c4842e4bcf52483245181116da15d123724efcd1458df49e9358ee8558991025f955ff2c41c8f9d8f0227725869fa1dfbb82a14188b20b6e933e9ce127d02979744ead121e904be4695e851dffaaf96263022a28bef7585097cd6ea6584ac96a7bd25b0e9e6d99a9a5242d1c255d484dc5e8d38c21bdfc51733b4509005e9f09104c6d2ebf5865216621324b0f143d27ca6348ee7e908fc7fa594da825241dec9088c6de5b23b8bc058d29a2bd9ae5d2c44e03f664e761f9596636908ac8905659d759b3e2d04b6cd22c44add36d90d029bf774d09b2110b888653ae9f67ec07e9c9883854c318690f7019f5b3aa98ca61e70a5b42c6948e201bba2cdc72495ef05ed8049ff593b5bad034ee84f1b95de31883607ec95eb284d3138e0e45fc6f536b967e60df80f1db5a516b701b7a195da832e99a404d58017af3d3bed0e0d18fb700d6d25a3a567065c275d912382103ad21f3260ff4352f34ca1f4b8b160e2a6f1dc51f4b26560c144bbeb88b7196d92af60824cd9c47a62489e3aae60f36204d99f9364b15bc148bc1d333d2bd8ff49124cb555b05a26244fbc5a15ec9ee9b67f5d2f39e95470b232248e0c6954307133894a4c9237fd5370a63f597fbc3791846b0a4e62e7ce3ababc57dc52303a6de6d58c99e93d29d88ca294474b2a6a8a8f82097aaad54b6944c1a7592edd0f6da231130a6e3492341533030ace94b595ed464fd2ff041b3c8665aebdb75c7b82d169b2c25fef4dd34e3096673aafc909c64e33c4fa897983a99b58c58457525f13bcae4ac821266526b8ca08c192da60821fb51cb4c8d8a7ca7209ce3d8b6d289dd2774c4b70a142c3fa476290a04af05ef2cac5dfd3590e25f84df5936369ca24d81077fdd7b22a77a4488209417e16d5b613dc8391603d68eca83a2224d80dc1fff3d4d73ffe083e3b27d1d9a3c7fbac23f8e029e3244da3926d04a3f26a9a2795392dca083ea6bcfc91acff335d04e79f940c6ea722b8ce2942ee9a07d12997085e3d6a3479d623825393bed7299e10c1ba437032f95db06c396bc50dc1a86c21c44ae942b02958e5bd20b4b62404e39af5a2d89a67b88360e3a6d4cd0fb611a282e047086531ad66816054e598124f0d08364af2abd320f289fb07f6b2c7107488d85dfc801239ef4f62a5cc0d06d007f66aa4e5cb27731049cb072687faccb9ae928301ec818b5bf9b6b2e5f5c0beee5966a5868dfa5ca00232645cc08b01e481bd743aad650fc2039fcb34e987caefc0e8584ef2ad62c4341a3bf0aaa72425653a9487681df8243a56c918547460b209a92a7952b41cc98c1a690617377a0533de8beec20b1b5edc7d170b18c01cd8d611f23abf993c213930d2f4327e7be7912971e0d2c8c8232c75cceac1812b4b679a5755f3c4d21b38d55f5f4963c80d8c0cedbfb20db5812f53e29dbb3f6ce035be558a8dce1af81aaf68f92d65b5243570a2a3a564224a0317735e771e65a38137394affa7bdcfc0e468da1df33503a3fe22a83432277a956560e3e42b8b9184add964e02b9ad25da32963e0329dd6524fa318f87113e1d90c035fe9473db86b08fa2118d8f6d1252b646e8ba32fb0a292bd2b2466858c17387d8b6a75f9ceedb32ef09d51b36554d3f2b0b8c0b778a8e49fc452e6b6c0efe918ea26335ae0bc73a49379d22facc600b2c04a0c3a74e678a1af3b16780bd15a3af54516a573052e746ad3bb7ca19e3c56e0242799942c3d19afdf2ab0950a8b11a8d4eea6026924160804e270381403b1e9ed010314000000001413c742a14820908455f40114800452281c3828241a1e1e1818361807c6816030100a86028150200c0a8402615030201a4403aaf905cdc8200a1182db1ce778c61a327abe50ceb843e2acb7b0b269b45ae9c6b711fc689a11af0dbfc9393a5cbb8360edea843fc6be24a486b549cde159628eed8992fc07fcba280c4308828853c9f222e958fd16698d5b7692d44e3deffdeced41112a38f470d64fcaf6116f16d197283e98de2921d840f61fd0ddd59b462cffc96d7997500f40d2031cfc5c7c594dd57ce904df27c1477ac67a7aaa61b7df6f927cad393bd824f39b938cc3d9bf0583bdc9a85cd532eed4e2cf4b73e15aabb7aea75ac32b488c0eb8267ce32cd698f425318372b2f78ab72a47ad9504911f7fc21cfa404369497844e4913bfb2ff05eb812d722c7c0e351ed6e52a8f1a73ed228b3964f52f8998ebe06550384046311721dd29c30a46a6795d409198f7fca1235601a123bdf58f83aefe14b70f21476740c4156ed53830415a7e31591b395b3763fb1ee065b33d42830eaf5c53b5a6598988673c2eaf54543a5e503a2c652050988a494446df3856fbf01f67cc600cb50bd1cfc908b459fb8df33497229945cc586333a9f15ddb218348993f4b26d96462a8f2824ddeca0ae903b77bf031964ff28bc90ede3f1b7fa7211771a72632a3fd16eb6fe1c851f23c1022ca9a4dfd77858ddb9beadf1136082cbc7421a8e2c16ee067f865f145555be73a52838146eaef16b1ea7c657bc032dcae8c9f8854a8300d0b07c0ea3e5875e4cb97382fbe4b27ff72241256e1eccc63b7f55e58055b0e90dc748d3a459710be42bab91496d4fe4b2d9e79c427e0ffe450842420a87a0bfe9d37c677bf7cee0f7c4a7cf4d6687f28c978abcacdb1ab7820f54e82d038fae65a237e5e88101924e3d335ac257b5a17034d674a621b30da68fb0858054bd0794633b633a3b684203c505ae0d4513e2f37c004b1d33b2c7c65ecf8eb4e44f845eb7768af33fcf43a4ea1e86409178fc943af49af5aab08d55dcf3404a93af36628eb4a7fd304adf5058fc4c97d973df0183f989c91a0cd6b26f634f0b26f1a5007f4bbc3f758422c698bfa1f794a3aeddff6a82835ae7d8e2846c8f91ac5c465f07b95b46caea83a356e8a69a40b5036f711467e0c868f6690792512840e6b9e558de401c9a5f042981b7789308e48315a3aece28e90c94fb7a08a18671078ce4fdc0d485c4d3ac701fb40d7229fc817b9de8cec93e846254b33687f617102c6b455aa08a592f3f0b31af5d0f4fcb7c9e30066c079265c78366838dd58c56d4dd876998b4f4315cd3045bd3f45b6bdc6e781daa8d51a699107e010dc2a9c468b3eb13031a3a13de3de43b8a47d8c355032b9a7141a53e92a1359cb0bc3059e6c45067bc157e80871c920308e4ba025823a4b966b8b508760b01c594f7c1d2a8a053e5cba73a81eda523d08391e89d1be3515ec6ef27a91aae98a215c00e0e7eb797ac463d5920c79453d08d194f2f1c58558eb565bc8c7c3307b6e6ea0bdb28780a17b006754a771b53f6648ef5c9548803819ad8c23b56a09f6b125613886a5bc173d8d298f52eab85b90d46557626edf6df67392b3c7c131a1f5514d522b56b73e6302c275ac1aa180e480206105b66d0ca0c1a9b07ee78b0ffc95570e7c51051aa094700abaac002e04a042e7000450b271b08f0615c4158fbf33a69750764177863c1906d0678cf5b869c0fbe50279fc91ced55f0b4d4e290e642a75fc4cd07140982294c39b3d83d350740a01ce75d7a154df546a886077dc566234f0a3568f10e3ec988af19883a4eb9d33ee5c093bfe8535db65879c69d9b27ce80e071e80b814f190759399be01b40bc01847aa019a1ccace809280661481159d3099a81289e9a47595160148e40271a10f887df4e59ecf32332fb025200c5ac5478a6cb69d0ddfaae0242234ce3d440b456472b801b03e1a28385566422f5de2ee8aea60c8e959beca450290256c788dece5acd1534325af841a5609f7bad35135cac6627d7cbd9909027677bc58d1d3a74960fa51a789a8df7738c40289500157218ac756027002226b328d74a610168bf154c5d39a971d3086bc35706efcee869ba568c65dbac59aa9d9132fafb467ba8ae15dff5c472de8a246ac51309e65cb4d68e5ae1e8989b37b7a290b5e2dd0ae6355affa59eded24ecf4de3ae326898b5f26b9c9a28cda7ca906a5e6a67906534b44af3b6542b6c6e9ee540a1af34679dd5d0723a755757d0cfa573d767aa158c10ca5a2ba847414fc83f1469f852eed756d6ae512b125a981882d83fa38cc31766ecba9631ae694fd3bc282cd9c2c07ebcf652efa607d67bbf325ab981e3275a0795593467c56edb279f9e5bf1aac66d63ae8157ade8465e19432dfb514f8d38ab823e4b8b623d01b0de18215ce57c1b776dca95c1f9908d576aea6971fb93022b09b5dc96a1987bb1e6b62a274b582e06d1a4f1a7c2445f9d12a2e103ebf05392a69733732934e31786b3b4e4326473f116eb8b39399a9272c2e778a5601808bd14cdb6b6ae3c8232f6af6907b4163aeceb08c96ad4c873e76699856646d3ac85cf20f53abc6a780a48407d692032bde7a0fd00e94d5df2635b555f2d98931809f0c07b466d3beea8ea388c4c5ba05d0da185e91ce3e8db67a6bb1bfb6ee8af5cee056d9d44c833214d0b0a86c902d44d3763946adb0aa6c57994d9375b05057cfcd0a3719d4b8f4d0fad1b180a3d4c9b8b9b56744fb04601410ac39626fd1ca6dd93ce085733076b360d2b5cbef0fad7b7f69b8528171c784cc3a4534fa45f46b45e3042479fbdc405516d591bad77634074e614d0ca23c03221698c24454a20817162a09e5bf1299a088e7e211b574edda336d3a6bd402f45d46ac027ebff80c874ed20632668582f6060001f03d4deac9cff9ba259a08b5fc26da10090235009641871b030894ad91646dd41cd8c018e7d4e349765936ef84c201640fd2a02e8a41ea66b517b6d991725539259503eaef2908d2feb8c4ef63f2812b02d31aa38245cf9cca488757f262aa8c9da6da3811535a9f0cb9ed9c12fd1436c6e547773bc39b32e890d9204c199f1174a6907959b312284bb1d6ea3279b318de908ac409b35e96698d8556dc5ea862b39c5e4b4449c19279b8ccc693336acf76a55cea993335be65ebf0d683366db2d03b6960363e6cc90310da8b08d75fa506308837637acb736e56d54d8c46d136536d3b0f02d481dc42779d94cffe6a69c4d72367046d95cc29b3192e85083d7cdf7c51933f9ced22ada404536d32c6d7eb2f81b7e1c2f6a53244f823b51c9498f9c19e4f644845443bea6280975b3f8de88909b6a4f5387da73f8f76c844af760303700fc3109bb6025739ca9d27dc74bff7a579732af8bbbc29d10bd55b41c08b7d0fd98d5f8a1d282500c9ac6099f6fa84dc822040e62215043955e8f57153111e9fe20c8ac9719eea700db98f838e1641ee952e68763da9387752dd475b2b22883802ca7847ac5404dbf309829a107179251b4e6be74ea3f856b0caa8647a407ac8b253f996456fa690b19f7686a2a1af76f57c14776c5611970bc3ffbaa6dd1e87c43f10809d5a3adf8977e836cb8d739d6d6d486be8f54618d6184f7c227c13aa919fca89e158487a9926fc84b6ee15efbc94a1cf71383841fbe1bf9695462b1f8cc8e0d28ae5d9ad848146a32b1977aab44a90c55a1399b8800fab5261061af0687bb9a346849cbedbb880acf0a67f31722d0da7efb23f4a90224808c7bf6f2cdd8a1d3cf87c54e94077a2d9f467cd6a5ba2c13c6c004af8251bafc8de92d6a5bdc7a05106fb73bcfe840d68258d803e32516e48241704cd0b2efe9c391f3ec8b36328bd4d11af88f08931f26e14d7b2c2d9f2cbe5c6f854dad67b8366e4df66408579b61bf76b6b9781bb31280fce5e018b6c4461b3d32c34f7c7d122909080ce4cf2f585182cb98845c62a234c699c64a696dca733695143508d428c16072ab40e9fd361621490a39528860a296b6374321aa5d1a2b924df82cb66d1f884aa20d20f1671ba4cea6c25a542e22ce4782f2e2a09194c9a8550be9fe41ebad3baa60228487a07f6e240474b27af9c2344c55c5730661c90bb85a3290408504728053ff53c129b91bdb55b74e0eede061b26f14fbc72c39b4d6c3e79d1b1b1417dc8f10bb8fc129c1d5c66083ec8c9480c1030a0a801857a7005789db26fde1396c7944827d900d67ac5841716cafb1b06254eb235b35850dde3787576fe2078b6f041a9e367404b9f6c9abe87a2387149e1f9599d4d6a25036758d20bd8f91dc3fbce98235525adef5be39e18af0bf70b5861b5df6a2b961e1342158b01231420cc97740279a13a607e0506e980cdcd8f8228159cf7b14994346601131c33116cc8c77803ca82480b8ef1887ab0a97df1bf32879315e82d7c3abed257b01bd582fce2bf37a79355eb9d7c38b2ebf5376e6d6647af80292fd321746029bc442f4322f7b3b3c30dc099353c283957df31c0b0f571081f21adfa1a4f0d8a62782974851d217d953f3be7953de61e27d160266538443b0612630cad73e0c086cf61d98f3b1d525ef0d61630a3c22ed5b1802853066190116f17af658b32c18f605cc33b68061bfcc8591c09a1c0f8a1fb2a59de38d2030f88ec43c2fde04dfa4f048f863784bb832e0e3af09d709147a355cdce1c2f9bfa8e4a0eede61a5bd39980d490fd78d3bca6fc93f3714e6dd69cad88531fe25518c4779bdef17a20722628c016ee063fc526ee20308c600b2f3d7b1e421d504433d6383b0172447617855f9787095ef200f76f8dd6b10f4854b050d481e598b594c179845e9e371d0faeb82000ca6c28e551e160921c6974e1d84168afad061e31180b7c9883f62d958f10e53472fc5165986aa3cea706ed3f64f30609c94fafe237baaf4d45f21a2c923c259cc17e6bcd8ed9d23cf4251f804d1fa7c8457ba091f76413cafcc4a1b7601c10eb56c189b16580e77b30700376bd54e11e34353b22609fd4a8c0101352edc67a223a219b00ebf2604cb43e53ee571674746ce43c2fee137d86f289a837e5292ee7eb2fa234346065e4f576852fa1f1bfed9d6bb93335e25b105524292a98375f4729edc9a13cb1220d3eca399b2fbef2da0e478504f1f7f39545dc90a00b29d7d00dd365b2bb5c2fda9fa13f2fb4fd05a487e48f17de2c0e905424610eabd0fb2e3a4cc9414a527bce9eea29f19f68084fff7ff61bdc6fa333661a9b0fad149f98e55bbffe5c1640ef53166292ac6a57dcd1a828f30b5714caeaa3808c8f2e53a9f75e05dd8773b673232608dc12c85ec5b64eae067e00a3430602ef25870002efa5cbba7e8c594e88065fe028aa90953a4cfe7f667a7f02639dd06342410c2717d97b597a2cf85640aee211ab116b33e74144f0b32d487d0244002deea0af34176e12893d52e2921a52c74c41e0995d642cc84e4095512ca23940742b3cd9c0534141b82465453a8aaa11c445d4205844a62e82d5a05950421c45d0acdf64f16ef17174921ba2774e9d05ea26f42870d5d46a23752d1cdc1167ae7a112641864a87ef16a9a17c26828064539408d0c87fb0a951005d0448422be45fda4e82d991306be11555f43b91670f121930d9540368c08331a5420191a4bd1e728ca5db88464704d28a7c169ed65a29caab4d2e40d7a3c3504734abbf27c694e606e802afb33d28006d9aef3247283daa311aea72e9261dfaa1c1b7c7380625c5b05d084385d46afb2f4f58f2bd355631fef9583c2d1ad6f90b7919628a23a65fdde0384eb59babcd03ab987ba9c25cf436b83b51d0021d42265d5cbd56f8d6bcf1c07a690819bf1362fddf9a6032a30ec259b2f5dc8c3d75adc754ae565999ed26dfecabccd0fca755fc50c74a11ce04df0c3174eb4404813025e278996649206a99a49e10d73b82b17b7274009f549744b79390bd225d5502d6eb167a1d81601d689b670242e3c2457b25749d9479dde3d4147e87163a499ba121b4441a1a622749b9b9d890ff1640e2af72bbec3ae62c153a191f83853e03cc0c7cc0db0499d701ea837064f441d744a77096058f6ab00088e2ce5d83f1591a3e2eadc91f6e0075a30ef7ca0aba9a71780c2087010fe28b2178628c1ace8e234dcdd81726295b5c6d930eedb0062c270e42017349ae9b19478a82fc8cfab5368b952f29dec97f12cc7b228d865175e6da0cc869230d7553f2140b987f80e2239b0f1c28c61f87e255034306080108adb7c4e0d0907839cb4228565158594d2716542948b0e2ac19b94401ee15646b8b865b45bb4a2b0c6f5487cc40d4f4d104e5e1d7908666db687550c1203ad97f0e2dee18a29774805c710a8a211e72df61703d01613d5f5da3b73174d4db4bb1f52ddf9d8e42b81d2b540ea204e7231c7cbf54a59507731209e90c7aecd650e0e5af24f7f0f8a82dabf78992f76ae87d91754b808c95a8bab247a25a341f161aa85610e24108346922226455585c93f6ee28a831427526976ce871fbd33acec1174f89fcc72501711b5b89c5989b821a49b466edfc8b06408881d4da7f13b1b470438ae3bd03722a5d7ed0becfe087a8be060e2e3a780ebb36fc82f97e4504f6ebd651ae12edbff1f2ac61d5bce1590743d7ae1b0913786c256d5523e3b2af8b09984306c60029b4c04315207a220b39faf69320530c9ca230e01f8ae59637f89b9a926dbc683c1dc43b58856da4a10f42432d7f5ea2c0a88d13176f9bfcdb7a9a64ab48c8abb6e55ae88271adbd71be52eccd483f22b105d1d908bb9fe97054b4dae73cdf837b7532cf227a2a121d2b06c32895b909f06603964880981c7a1a5dfd82c605094830ad1be712512053c278eea78df25e86b63e173a4c027dbb98ad81a30b6c55eddde559bb902d79a6a9a79a3910b4302964cc5938c47f0608afd2803a68b0bae471430ec84cf0505a81352c14da711b20048a20a405606c8291c32b898e5431164f938fb8f318462224e1fdaff6293621b9fb6044d352d76cfcaf5545606d3fd93717ab4005b3b6eb662604486c7301c4bf0d1e093e80dffe6e4c1f4984d12f4ef3d743f1668c32d44209becc59b0166d764d2b4e076b7107b556e2d244150f3334df42a90db4e2a40504353d9b5035f79f28253efae57b43dad552c31da0c0cfc0a064b3c02c5269b7a7ea0c02a01d72cb6bfa423ad33e22d19c104528ec2875611ba56f9a83f0523700632fda6ad994347e501529a262e66cce08aff5a68073e20f01b7308010d6e78a00693d3dd93d9f3cf28dfb8f2b878a13406d6d96de798d1d8de3ae07d99ac3d171097ee0b51a3b9345ee2e5d5973209329e67c82e4b5870bb24255b27ae5ddc668dc7897a656defb5eb5c2cc349381fe35da8833dfb608bacda8ac0ebafd6b9e68c7fe3db532422a137ed34f364b6b000b717c3b0daee7d7d5629952de86073d23947b5291ed2f69a1b2b8b967598749585bd9e9cc4e931dc5b2bac20a3769413d185afd4e915ddc1c2f5285790b2c4a150a427abae82e10a16bbc173e1b21a2e273bb01a00f043b81df8db6d6004cb6aacf1c276acf782682f7142740227613e115a2a637eaebda0bde85536b9b3202d3d15a597f619227419d0a66569c03f84b56bafc09d1cf24ab0192a721e9b71373b9b06ddac8595e4f5b85ec580d116c6602daa5cf2dfac335d17655c0925927eb7e8cb643f09074afa4c0a2a296152aa4954cacde496768044f50d627aeb5e821f5b45de9433d9ac841c27aa855a5d6e5b4854672e026deda2e968c27b701149ec71129d031b984c20a7d6f8641b621fdb3bd9f62de3319f0f7c43ba80f47944681e4b1d619cb3cdc34a7c2c912049eb858716f23129f4897eb320bb7d80125219404eaac14559bf204b1c12b890ccc32bfc98a489025422f5c0f623bb908e04b294b8ac6ff300e1da8f13ab3e875e158fd30382639f6c299140fc6eb63fbf787ca54fff1effa9bf634530a3692d74cca210323a4a954e7e36216e94a21897704c132b6ffc657a7fc9df58238359839c806a7aac2434abf1e5ba16fe0cc0304a166a88081114d4af11b1aca7541012967edb09e922cafad3a56f258367dc2c61b3fa523f110a82bde03e59cdb7b54bc54a1c4f0aa9496b737011d69924394020645d6de5dcf9d5a38790020b45f4f26a66be5fb302d28d7c4589eee5ad824c8690b398a91371d7ddd963ec28acb6e8b9105f3fe934b3382c5a0699cff9396312b27011800b6a0215a03b6a359a3135033f5b1b7343659c39ad54786febb404c50fb75cd143eb49b57f3e1c4aa21d98cc22a060adafc9f2174d2bb1bf471263491b1f5bd5839851e66aadba49ae528f34f19731e33116e67525edb84b8b42feb056257adeb11f0ac592923c31cced48e7e5e97dc5929ee7ffd9a67342178f871008c461b120c7165e9c9bb0e0bc020ec9cfcef7c97107156a5a2e652c2f440e6a6f0791379d91d253ae1371f3fa47b67ee5c7c224afc28f121941e9d7994bc36c2a719556b824ada85383fa5012f56854138fab55eab15161ec81cc017066f5fde63cdccdf7a5899e8ca1b5e2e890fcb61ef4917186a1c9cee50bdfe8535f3d746ca33e8fb447b6207ee6541af91c71c9f34612e81be8b992a51b5a732aa08e84af5d5c30d78c02c4af90a7bef8a8da822f915d6033816ee8b4dbc960604b2d40c1622c7bc63b90eba3d6ae783d668fdac4f22d592f90bdaf79d4840907ec12f1a5dcc0aa8dcb9555e1a8641741959713888e6fb341e0ffb89991631567cfb7bac6146147f1257fe4c74aab616ffd60278b5763c508734e209ac89edfc0313c05af26439df61ac9ef05f879ba4f8b50a6cf82ce2c2c2deded88e32d205a210df32e010d2dbeae771d12fc02e3707e7afda2b4f5db4a19bdff161898720d0ede78a1dfd376637548032877318fac9310129cd262d995401252b0686dae6297fb0d6c2df8d833c82d27abbfd330b8a2efb580966e8d63d18198afd4a1481efb72260a8a18bbe53de1e35cbc8229d63529ba14a629823e617eb42aa96c160820cc5053da0fff77f56b04798b1b1b60424521da0464cb36da313d6470f53b57372cdcd2d7e08a5a98d50199919ed36f3b5d3b7c2008e3f409619042f18d175808384031f29108d9ae46ac1f9b5f6b2209cf363e4fce67a15d68a98c21ae315e9fcac42059d0421df9269bfcb2856a02b3f4a989de4a5b34a75234dd19178b2ef0e2b371f4f3a5d43de8f6997440b4a923855bdad261aae37fca4704a6b2449ca9e8e25ee03dce4d268d0272881153951e4536f2af1d4d61df23179bd0393bd4bfc7c336841acd7cb3d10b94e749e918776721fa06382e29d534d01a14db7de5dea5f19176c45c1101767f5f42e767e57ec9d1e135b44eb920bfb7b07be5778bc654e23b857fc76450967eab65ca5a0430489ece93cd4afa1a62ae58207965ad791d70f405f1707cd1286e29ae0a6b68d6c1aab5a7c03eb92407b57c1697e876263c9326d130136bbc1b02bc6854d6386ee51446c9490034595a58a8e38bacf3e2e3588be55d827a56c49347a82747071212667b09d4cb110fc259af9f2dbe80495a1f5b80bdcce7428e2b50ec2e113683f4b2f1361721b8aeeed659c17fbef995aa0c5781d0aa29255d5813548a5544b904aae0ad008a07b2e31dc4dcd7772d9188ea3d5432c52741e35977d4daafdb55dfea430dca168ce95c3cc431ebc771e48a267486a85a91e5880e1ced0ce48962df5c3e2e52fe45ee386c8e748de232954cbd75acec94d34e00d76ec2da181b639c1044ad6930614d5b97b0ca944437855053c6eb78b9ef97e75b1cd715293f09b40d9e295a85bc05cf15a4ef71bdfe209e19f0d890b33a6addc8e076880470631dab86b1832a32ecd43818cc30f90e37de84f38148b94fd44d0597e57d9a0700b9dae6370c631b6941bd5b594453daf44eff87cd9f026e128874521634367ff71d98f1ba9f17ca03a80c2e60a61bd07654f41545db55e6270f3767099f510af7b8847575ec69a4e8bfa393d2b2de42acd4ce0a06c305e1c2089c0e1f8dac0181634b08ee1e27188049715099132532b5114e7d45dd100856c189294b837a62b54e1a16b003d0c0b4e0bcc2ccecf0313a84d8db0e40f0686bac9a7d90f5df7b122f16c203f03f8a7f9ed8043ffaae6e060a35ba019821dc9ee3c00dacbf07638b98e05862273a0004ae35487130ff89edc5a28535b6bf4c934aa1a4211874daa0528bb0038e8cb846b7482cdf46d9ab0d6be8393812af7cd6c8a81f20533fecabb326468a8693c8d96375fa92e21763f6b46141fcccd2549d53aab1d85f9fdbbd7baf1708b302476b2002fd95d346fdc9d553e340fef37550e88eb5825e06e1c16d933b00dd87b9013849bd616d83736c7f68073da0f3a255290d9ed15656d872f7c523fd52a61747851eac1420f8aae7441aa727239a5ebdea84b6af6391809f670142214adffcb7be057fdae8af08fe39551b7634fcbc2354bc48a5c100f16fbf11482f1c4757889d603b8898bcda65f77c9b77b59293b963edb2b5d841fd3ed8110b13e7aa0acafe0e6fcb012d8d003efbf94f94f569bf859479e2011f0f81eacce56a8c528fd2e4f1303ade1619fc5af08aa050d5e83eacaee645e7d7ae48e7a216eb247a611d4529d0f188c53a88aa6067118aee2c5a91ce452dd649f4c23a8ad20340ee1910400904c4d0801daade368ec33dd9c18ba92d514735821f970d540175b3e106a81fec0f4c1aa6c35b232fab386c45897f78e1e351e07ead474f36467316a978a7a315eb24baa29d4529deb148453a88bc6067118aea305a814e472bd64974453b8b52bc63912ad2d203d692af3aa8f2590a086e168d3acda1a968e7a522382f3a0032a73a12a30cae9b5cd1d704696c5ada53c4cdcc836580c11f6ca9801264b225525fe9f034aab0021a2629a7d7c6e47dedb8db8c2c04ac037fc31f3bec88ae688a52c7c0a67fe870bdb4038a5105811b1c635bb8a9d9e08ac730d5c3d78be8936282a74a4eb5b173b781d1ebbb5bec9e1f234e81354d63f2a17d7e3980370afc7acfc71a67514a32ff3b36ae28055879510df6d88255dcbe77f3c335740a956604519cc1b411d69df65297b8e319514e69cba294aa3a2f657dd859229090d9606d0d907490ecce627d308a162ec17efd0f1af683db08f54c925b89c1b92f9925f2400614143d01ccb6a33dfe52bdab814e3e1aaf1822b3736ecccd87d682305140292297d8562dfebf3ae5dbaab348c786e86eb7b058b855079bd03dce5110bd2feecf04a6793f5ba8ead8ac52e16de01b291450d0d6129acdfe72ad299f197d2f7a37f6a2025bbc401ea503be9c8a0bb7483a0562a8b20f71fdca74ef38f69965552b9a12faa4737a766fa091af9bd5f2c98e35b828704ac721202cda0451d87d1169760c230b61793a35a8dcefa63f8fbde6dab0fc98cbfd8a076342a0c0ed86096fb3673100ecf7a9ac3ebf9fef5f9cca287def788e217cfe137d1daa260444d2978184c485cd5ae143d11e001f9207d2c314e94a43e3733084751a96857aee32c58e629af77fad13cd02f5ed05ed3c8763b76a028c9902ae0b04660a3860b46439330f0f0f0f0f0f0f0fafa18d90da083904429a4c494ac0c9624aa14549a694a44c2991bd1ba30de8e9ccc4a733139f2e12872e019d0a420a700a33d470d8f08234014628d2bd2ffa3666fc4bdd0b608082db0c56212f4ace3ec188fc174253b6ede51024c0f004773a82c8d8592d72df09ae525faa0cca93caa9e404bf7e9b54d29a7387082e8e22c0d80477bea13bd1460555060e1a9a60254bf2889f5d77234f1899e092d2a5933215d1bae2828b2fd2596a010313a7fc98ffbbf42d5e022f502738c0b8045ba3548c37e9c534441c396858829d54425d27eb743a56da03605482ddcef531525f1f1fd706189460b307df94ab3e46dad22418ddac5f32b3335b64788d3e4b00b911c09004a373f41c56ea9e1c604482d33d39e9fd6d3e3e549083868c06801a604082b78b9eae34d2569f07c623d84c151d9e725ef40d0e3882d3b9ce7f2d898d602fa8204cdfe3a94b32827d4ba6a29b5f4a80b1087e54aae410f447f6978ae02e68932d6efae39d7e13c16437d19b848710ba11443049736288f40fc1e79862a5194fc61a0d39c19921b8d6c956f991b5ecdb42f0314f2e2531efc9285a1260108249429efaabca20a6f241702745fb266afe885aae11600882b11ce39aea53b764d2fd018c4030f246a753690704bf13b4ee759e52d16bec018c3f70d1732447ac0c0f60f881bf8d172ffadb26130d1030fac076be37a5848aed972729680974f1058e1a36b4f0cf61a38bbf40cd01061f5853e9a172081ab564bb07c654a8e94b7f7e49281102430f7c5f9034396b88ca70b700230f9ce4984468cc931dc0c003e3b9f9f427a1c7028c3b3051925750b9d33930200194020c3b30228745f2d8554173ee041875e02ad47910c9934e214774602f8ae48e1b74c7882e8c39b0a69bb72ac7f7582109c19003933d5b08de2263daf1c8c813c08803a334671271f7941c30e0c068f091a0d29768e4b051e3ee068c37302945e6cdddaa1b92d164b261b4814f8f6a715d73a8cb1f2e3e870c1b6eb0060c36702ac9287aa39deec9da1a5813a2e4c9ee0cd5c08aa71cf2664b73e0285d809106d67c445b84887901061a78558dd8af124b4eb0cc50eb824673818e0b30cec0a5ec5dfeba4174bc6e8b1a3472a0f722056fc200c30c044619c84003c61878f5db6dcff4618881afce97b23d8f64c008835e1252ca9023677b87a909030c380809607c819f9093d69b269d9f5466a8c9a861c30bdc758ed9c73f731025047861e386023e3e70e4781c385a0b30bac05b57d42d29eaa1c423c0e0022fca226598d71cc8f10cb81cc0d8029f3108979cb154a87881a105fe368755ed0429cad61a3464e4b8f13870744a004616d8681db2bafa0717bdcc50b39183c691e1050e848105764f698b97edb1eded0b7c7ca01b07c615b8f6a4619d83367bdf0a9ca90d2674f348cf7c15b8dfac4928b71315583bd56313a3fda8264d81bb1425c8db520a9cb29c47275fb390cf1405f62d63984437156497a0c0e9fe0c16c283656b9fc0e6da24d3c2ee3448df096c6551a3f2e3041db46f0267e9cdf4c499c0c4cb66715744b6f64be094cc78a5e95402a71a25a76bc693c0978b6fd22283a7dc50f0356e612081edb7d6fc5395637d8ec0a63ad5cb15947d903102278448a37e841c11691118897925eb42f46e0822029733bd333ce6929e33043678304df9ed4f83f40881f588363176d6a4cfef20b01547f7e90d25b30f0436570ad192ccd348fe0f18b51b636a467dc0e9341e96cfdc1e70da9982cccb2d0fb8b8bfa224fa7da5b4d901b7222ac742905a2dd201173f6f25d6aa39602fa20413c94d1cf06b5a22e85a35e963de8073bb354fbe693c4ed2068cbb24539633852044b2066c523a89068ca5947db462deacd20c3895f2b8c91c52be2492017b398455fd27ada5833062c04fca1ba345d5899d441830e046fbc2d5ed3a48ce2b982472a81c695f3b645dc18559f6fa4f9656b09db3e8d2dc113c968515c5ed3bad82f7cb7a1a6bf446f255c165d2129d605d7a44a9e02249d14f3f2a1825f1dd93f47efb9ce25531ddf0099e24c5048f01aff1850d2f6e3c8e0e5370dad43393d4482918b55b299e2e85146cd227a405d96b9f9246c18510a9eb540e16c316057b5b21e951d3bbb509051f4b294d6992fe3fef40c1e690ff7a7ad927d8de6457edb7e149c9135b47eb13dd8bf419006ad0d109fe8450416ba87082f16c9f6f9fa67ead9281e6454be00ed0b109fec374caeca5df4e760303a509ae83d2496aaa6c8d39efc8049b3908cd99378e09fe829a8a31e279094e08eff40d41e5e89158820d1d293ff42feca844991a3167867650023b26c1ded968c58ea3aae3da2109fb00434724344d5b9b33436d0117c0e220f1082e930e964b24b5232694830e47d84747233869af9add5e31dbc969540723d8d0ef6b49c4e86239ea58041fb7468e9ea0a4084e4694ac26af4bf4d789e0b564c98d9a2b2238537dbe1abda35885741c827f6f3dd567aa4f6594101d86201d8560544d8b9fa4bbce2a7510c23e72108ce610d931d36ce81004afa1bb621afcb57fe3397e0b2d1d81e04ba61d8ff8254ce56b861a0d2fbaca1a3a00c1d89dae0f1d9d9feafee16a2f37f5f90c352c32c0803474f88151a5a3e4105bd3d1074e744addd724562af9196a9e1d7c60d367ce135352ce50432974eca173738be87a42a866a861871ed8ecbe5321c4a0aef1321eddb091cce4814bfa2777b0d0fb91d32a880e3c70166e2a9dfc5c1bcafb43c71db8e4eb2932a6d869bfb40323377acc1d3526d55a12ad43471d18797b1ef4f6eba62e3be8c076bae7a78d6d08ba9ad1310756dd64fe72ad90bd3e5bc8a86123fdbff82f2c5083021f1fdb21073e67b333edd2229468c481cf298a062d31c6f453e98003b72731df8fc6dfd486d7f8a274bc81c9312c9bc7535929bf2e1cf0393a070614b084041d6ee023476a2fc9d6c9daa2060d2fc7818e36707f91acafd1c1064e86e957478fb8759f321c5b34170b500b41c71a98a4be27bae49b24c9c3d105121374a881114129b5f7f165e8e1504d037b564a6bccd8d2e88206177a1d68488396ee0b96de82fab7a8d1373acec0e6d08b22fadaa2a49c083accc08d489efe66517bd7520626e4d86ae55a0719b8cd2445a89cd3757e50171d63e052545efe9e2a2195e1353a078d43cc8c02586881c5d540000e2f6c1031948e3074808133d91525c690cd50fb15d0c841a346e3f8428717f832916376b7bc943a9ca166aca30b6cb4521a33a7d48d1c355e031d5ce0237ed0186b2538b8682542c716d8dab390a259cec8a1430b8c1e8da4de3b687578cc1b3ab2c078ea04757e771742270e1d5860cfc623e47c5d9a257b05de9492546b95b4022735f9560832749808abc005dd922d5e2519b386b0830aec6545d19c9a24a3630aacc9b413ef75a5d1210526c98f496f43d2083aa2c004d7b088d9de0094a2030a4c12fd1b37f88aa85e56d1f1045693c6ec563a66bef99f7138fa238001484587139898f7fc3de71b061d4d6084122b9db6d184959409eca5bca62229751a417574e858021f49e9d225af8466dd4a60ef6d47ae7ec7ca61cda123096c72ddd51c27ae8767ddd0810446e692d9229be408bca8a89164cc27aedfe93002a7ab94ceca54f1be4a277414a12444777e9269d42e741081cd3599b54bcc835e5cb5d031046e945a55ca8fe91002ff2926d51bb314042ea987f6783a760081cf1bcb7692c6cc50cbc145cf280ee8f841bd315fca98ef93d1e1033ec40bf6b9ccb30719dd8e1e706d61fbb1d2c94a1fcd5015dcc800fa13986d1f3a78c0c40f9a3a4e48aa92a677c0e6fee6fddbbaab8f1b0a74e8809da4facc47689fd0910356cb4b2da7ef38e07a271d248d1b55b5c504276bff4ca4dfcd30cf25f8e89f7f82ca31f1532ac1c312ec86a462d6e89f2dadaf04a7bd322d683135d1130f4ab01fa369ec4e3998e6dc63129cdab9c5acae784a0425c1e80f5983f25f772d4f24b824d2a89c2369cc4d8b0724d84aa2d33a7ad48e27f3083e5975bb4b30ed1ee3e108c6b63a6f49c849768b1e8de0bd640771031e8c6064d2cc25d46f8e581b2ec16311bc054f7af2ae76e8c420c143115cce90ac3377da23118c8da87927514ded8d0c1c34520d1e88e02d674c2ffa53624afa21503184257da9744330c27267f4109ac733a8106c4c7522a6e5eb1fbaa2051687030d1e84e08249887b0cc23e4e109ce6681bb5bbfa41571f1fe71108de32247954bb50008b0c4480143a780082111234bfe5d0586aa63f309eead249bea8fbd94cfbc2c30fdc590e513ba8cbba5ef2e803abc1f3757eff502572b0d0020b2db4c04206161988001638f00e1e7c60548850497bb567919ac71ece430f9c648b9d37640b722b96818f3878e48149afd97edb924b2aa50d37eb8107d6555b83bcff7a0d252b78dc814ded17ef3426ffce423cecc0c9905822e69ae9118b471dfc14f3281db8d1c14c254b316b935ba8e031073e479f0a296e96db4353f09003a336b1934ae9b794ecc4e0110746961a9136c848d9173ce0c085b67526cfa49fd5be81511ada5b540af934c7ddc0e5607e96368fc2e0d10636bfc71c53c22ef3ea6c6027bb564c96e51af8ec2649c83c42ef22ab0626c41c3da5a73b0daca84b228be8100d8c1c95beea274c35299d81df58d2c4e4bf66a86b0656849e18428d5d064637a554efd720522764e08375a8d1513e39235990e6497a7e8888811b2d328994933ce35a6160b2be85203f4efc48193e7880812b3795f46d66bfc0296d37bfda4d7a810b42a9348d6dd993a7bbc07bb2dc9f3a5525752617d88fa0df444ac12d709123071121e6a1053e24bf28b1d4b64716d85342928ecc7c9bedd2010f2c705a62c81a32dc73ceeb7ae07105f4b0827de0f0a8029b3d317267cf1732a95081519274fcbceb4353e052e56814930d571d7848811dbda72bf306652a6467a84581cb25fbf4998ece50bb61c333071e50e02b8886ac09b94bba44468ec7416ce0f1043e6528f57d9541c1d790a1821b39d6c3098c7e37ffb24a1fed5a2fbcf0680297a2448d22d4c804937550714c434e09ca6309dc68ff98fc3cb8d808b51738f6ca29811b8f26bdbfd45b8f2470a762be7162a8a890c089b45f2945d00cad00175c7cb100228035781c81b15c1325d4c8e47fb211030f237011cdf27e2559394278148114f6294fec7bed8307118ac710180b39449f1ad51fa2cf50b33d7808815151a33e9e2c48cdd7305af0080297822ee91f96f2aea76620bc820710d8dcd1e2eaaf9a213278fc809f5c6bada2d4ff69e5cdbce0e1032e05393aa8bdd2dba9341a78f4a0a4a9f26eaa10d7b2e1c51c60c3c6051af0396c4cc0480b3c78c06d7e289ded3ee8910a6efc1726d8019ffde44b010f1db0975c336bdacf0cad0de4f84202095040113c7270fe2416bfa7712303a50c1e38f0b8019fd75c2505fdd9d3b891812d6ad471c0c3068c4e9a949f858a6b5a8ec1a3065c3e15738d2ed18013f2d57c5329d3b14e3360c42c89e9c9b80cf8ae5c71ef1403b64388dcef9fe301032ee8dfbb778d1944f30a3ec8d115cdcdaabeb42bf833a52b77d09be8752b588f413368cc2a757559c1454cda4f97a7362dcd2a18a5c1ae7b4d8614fb54c1df687c370b9223a4cca4824b3923e635a147056b6aa2272ba5d036f2533039fba78b505a75948829784dd394e954599482499bcd82fafb574a5716a4e04c88322f1962598c82edbfbebaad4cdf13e94216a2e03ba48c5a9597d2a7e80c352c32c0001570e1851708d0228b503031e26687f2b614d40b8acbe213ece97351697592852758911cfbe39b8d597482d3dabfd2a1ab196ac6b86864230239687471bec08021260b4ed8c767b189928526d83c3542e5f38b1799e0ccd56285a0732b6414095960821325a3249d648914c4bf047f29a6e9fd384154095982abb49d56b364703d5125b853df7ae7d143092e255ad2ce6954ad69127c923812a40789f99346126c342552ec6c151e3a18096e94ea2b214ba8df0a063e3e929005241879d5766d133596527a041f3c66fadfa83b82adbecf9b2b6ab4ba682378addfecd943c8083678bae6c94155f7733dc862119ce95e488c557aeda3b640c842119caba6b8659aa9de671689e062059142c8374204173a2d8efc2041da0907591c828f31a81f2d0b9e39655918828f2cee63a22b276451083ea6fb3db5b6e2f59d1d6441084ec791a3be17f4887e06c17f783ead1dec2ae7b420f8133d4ae40e03c1b665d71cf504083eb2a4ef8d21e40f7c6a8d9bfdaa2961fb814f214acebf51d3074ea8da3619eae403bb39418268d1d018d53db0ebd135699e187244d50337da35a87fa7f2c0afc59c92744d15fc4a3c70223953e6ccea1d38bf8979b1d52d8687d8818b68e98214617a745f7560d2989b0e62fa54ec181dd8cd911cd3dee84a159f03a345258b869047e41191039f4b97d60f9df62e46e3c0b9bd4409b936660e221c3877b1db31fb94f4856fe0ab25a9f2ce24a309ddc09b12952b63b6b4814d5dd3da3c11797db2817fdf0ccfa742966c296b606cfcefccfd44ed666ae0336bfc3b66acd377a5810b1a7c4f660591fa296860b255a764253c67e0c2d28d0e4a86181e333398bdb2e5cd29a7cac0fb95069535e7d5acc9c048fab4b2da8f2948d1185851a5aa52db79d4498981edbc6e4ac4f5a85e7e1818a1d2ed8e5e1218184f995975b6b1e2565f604349caf8d79d17388b5ba1abaca26675bbc05fa4a8212f8438d9e6029b64cea4a386bc31f9640bece954972c3b2bfdc5b4c0a989ed172f8ab2c08feeb4d5633258b0d47b97e81ccb2b7069ffd4760ca65d5964053e8559f43b0fdd16275560526e2c11a26a52c1332a70d1d4c812cd77156e4d81cbeffda63ec4e4214129f09e7724e5540ffa641b054ec490175963060536756bb0f4a03d42dc9ec07f9b16f3981944ee8a1318112c757d1affbc2b9bc027a5b5a73675d097264c6054b4b8c1829744c862098c4e5d77427dc5981f2a810b3277f8951615721293c0295379436789042e636a9290829649de8ed0a7797fd0258446e0fedc6f7784570476f2a7f1dfce664104f6644d0c212236044eeb2ee94eeb29c8241502df7fa24f9d8b41e076b46809aa9a3f4a08087c081e44e9b5bc9f46e5079c5dd66c1174c5075c6eff88d1ce2b68ee7ac0499d74def6271e146da49d8a1be90d42163be0a38b2ce1adf5415da403d6dcd442a4bbeca0cf01a72b688da1732931ff70c0a451a5c24567734bea1b7031ac2a36604765e7d1a4a5db12520336a827979c93d6a0ae440326e8fcbcbad90cacf3d55306ecb678e494b26a8a746370a65789640183f228695a43902e1160bc82491bcf6ddb5a57302adb77d09474becd7a2bf8b81b22478998b29789155c085e5ac9eaf6620757c1962a399a46e3b6f64515ac27cdb8b529950618e7da9862781aab2c01062a3e8d96a6e4baade70b0dc629182d9e419d902963020c53a067659372670318a5783dbe4ed28d1b19c020c5173046615e1de9363a248ba3230a466fe658ede7059ad20fbced26bd2562f46cb5f68171dbcb9236c94a793a3762f081f1e0d13cfd5731f6c0c874b959fd6b23683b861e1871ff3f1b751e182dd5982aa21d030fbc5866ed33cb1d55217760fd3f7b4a263ae5cdc9f2871876e0c736c5544f32778851075eb35dd20ff51322871874e023a848132165cc1b392ac811831873e0cf437d881e2647f215430e6c89c6f51c82c76c17ba03b0d0020b57438c38741e295792fa396f04074e47daa41dd29dbe5bd4a031230337be02e60131dec085d0e013d43e62f0387203a736dfe9aabc19a6325288d106f6fb32d4bbf28927bd9d0762b08115a529f77eaecbf7118df3f15146d660d6939836e60dcf7c0c35b0213737b64b34461af814747ad99d090d4711a17d6f153a03d776aa7b9a3603af92a2ea5fb0711176195853923e5eb995b6cc92818f6ea5796d9245cd8e814939c493d54bb25219313051339d0433d3ac4cc3c069d0fc135576ba2624a99a4e5d582e7d818f565aa76df5b4c70b7ccc1caae4bad705fe826fe594abd4940a165a181738cf987b6409a5a7712303ce058d195a6c81cff590a46ece1484ccec10430beceb552c2dd1f2a6aa64814df36cfb1d3f5cab9a430c2c30713f77d29439076dcf6b5c1a625c81533d55b20223b2ac4cc67c568111398d1252e3d9ed5ea8c08925532e2276aacf488c2970498988a6b4ab75fe1e430a6c3ecdf9a3dc14053ea6cffe74490f054e0409a92d64718feb13d84cadfa1da926a60a72029f2505734fb5d9c2bf78c013623481ffdfaadc986f26f029632affac7a09dcc8b3ca66572e9a2b814f9b3269245d31d9a649e072d9668f562281ddadbfce51c34dad6ee304318ec09b16a129f6a7dee6d1089ccaa0eba77c2c021b4964a5f04ea9ed2644603fc5d1cb36c9cbed2130d23d7d345a88221702af315ae7a867a33925088c1ead6934440e086cf88d98bc4f776143025868515b88f1033e48127a82d0cc07bc58dedb8f145b375226f0372af0f1914288d183f4c9b397b895e2011f2c95aa60254a5de5ec80357713f6f11443074cce98f7925fe65ab95fc4c801a772a8b8a758282b79e2888103b6eadad66bec1bb0752a447d1c49f921b2019f9ff2667f91196356ba8851831834e04314d7d851bc553cad8287c0f220c60c3891556e9e27e5516d8921037e448a98378ba608316250aa684c99346968ac982d9ed29d36f1ce093160c0af78b068f133ef525005e1e315dc886c42f44d743f5cc188106a74793a55de7b01400c3e5ac17d86b0e89e342f7f7c86da711938ba0c070226f001192df860059342d6dffdbeb3d575869a8d1c3256051fabe0f2b388ccb1b7ae4a7ea882cfc9b2e4cad2c9083c8d1b19c8f1910a6e2348ec3fbddfe7251736643c6a2ebcf81b6a15f840c5974325d50b2529d53b828f5370a74fbcd63d86469a22993ff65fc8d87e2958cd8841097d13ef5472c607290e4a464cc26a1b05935d2d28efcc19354351f02af1cfc52a49edef43c18e4e51d368f1d44de003149ce8788c5aad2239e5355060033fc157e63feb20b38968d4134cc89e92d648bf152deb1f9d60ddedd63f7ec78d14bb61434669c00727d894b41bc32c4436c1a6cf2239ed4fdedb574003c78df7fe19664fe3468efdd004a7a96fda3666b7f493b274e304047d6482531f8f24427275a6bec60726eee312f76109ceb6836eaa78df47ca161f95e0425d54e710733e28611f1f9360f25dbe25c18564d92da4b07c44821141c40eb5f0aa9c7c483039a8cc7831a6caef9a47b0ffa1f4a53121e4e8c88723f8acedef4e4b295e9f1f8d6094dea64b5ea54262ce08aed453d729a14570294212fd1666213fad085e3b75b609a272326d268291f984fada8eaea7ae2e3e10f1e8e834eddf4f2d67a8f1e0e310f96108fbf828c47d90027c1082138b987473ed6efc67e0e80668a1a9878f41dc8720d8c993c36d93e746f70b4302c1754c79dc3a4bc5dcfd0cd4a800c108ed587944e211287f607d54ca19eb5e645ecc0de1c30f7cde8c61dfdb9a472db0305f08e1a30f7c78b4f51cdcde02c2071fb84a1b2db25799f6f7b1072eb7a5113bbbae4cd203232fd9e42d553ff2d0a94d6b9d94c3942cf8c043e6a2635ab5ec5d39173466201939ce8cad0c3eeec05f7aac8bdea66bb7f9b003174a7fd00fcfeca8918f3a900f3ab0e96d358b6db238e0630efc451c6d1692c849ab490e4cccd44b5df9f2e4fb7160f7357f509e32ae780e072e079dd7827abb12b1f3063e44b44aa3ce76036341432346104a3f881f6dd8eb47d297c89a0dfc5a59ecbdcdda4fd7c06e0e59e21d94ce2162d4c09889ca7d9d21c6a453d2c0e5d3d3c152eaed6c221f68e04d44a7f1d59062eeefe30cac9578c531e96ba9ee871998643157b2f4dfbf95b278f8280377fe7ecaba554306cefd5b44a8d14abb6e1e3ec6c04634d116bf2409c9ee8718ee230c9caaa77b9f76570faf0c1f60e0d6db2db544f32b8b99a196650c1f5fe0bf82482269fa68eddf0b8cca953a889919281cf8e8021f5488a6db3ca4b1b5b9c0ebb59dcec9cd45a7b7c66fb15be0728896a8d7e4d458da628b1a346e74d1c50c1cdd801b14e81cad800b4840021f1f0ed042cdf0a105de4663fa8de469649eb2c0c9107a4aa9a46a9b7d0d7c60814b96c4b643c4ab0cf12fbc2816f8b802e7191683596e52e275bf173270ccb821638b3e12b88004245077a38b2e08083eacc05a8d47f6097a0d6c4123011f1f55e0b26d5d6b0ae9196a6a0af8a0021745e737492928b724f442468e96e17ffd3105266596887834f5e11f117c48810f9d981fea2f2283771df8880297b6c62707f32084d75ed028010e2870bfa68305311de266446f031f4fe083d094924ba8baf0e104fe449d44b7dffd949c42858f26b03d2684d2547577daf2f1714ce07d84f707e176697661a1c5165d01287c2c814d49aa7b1c9dfd42dbba527c28816b3b377d37ad9cd9fbc34712181952ec2c4b3b12788f394809c9424d33e508aca6bc6d97fdb72ee83e8cc0e4e039849cd3fef111868f223036e963e5242302a3fef69b23cfea2a3504fe62e6e44983f6a67a84c06877644ff9930892a206f808026fd61793709328d16a20b0192b4a767111fe1efe80bbecbc69cf7248ce8b0ff858f957e97475f61cf9e801579f5310bb3f3f78c0ebc66c1dafedd2d466076cccf422bb47e53acdb9f184001f3ae0f2b42625f3f76be8d4ecff460ef391033e5b9ab2945b775bf2880f1cf0218e4e232c88d0bad7f88f8f198df8b801632a12a396cab944e86cc067eb7ad296314bf8a801977489dc2193a7840f1a70d2b2b7a46cc1779238034647f18b1d2b5f2c35a166e14306fce7cd412dbd660bdaa3153e62c05eed450a514d9486e403067c502551e3e71399eaea2bd85abdd25dd7d178a62bf8edbb9c837a116999d40a3679901f42ff4859c18a5fa54dae238f557011ebf3c673f31b1df75005a33ce845fe2474b3728f54f03925499d924490a9f44005a7e377ea177d4966ed789ce2d7ca2b1d3c75537095e22f724f8594829b542234837f1ea4e064a888d51b9a3478e9310afef2557d8e4a4a2404a51c3c44c1f649dc102704dd9da4013c42c1da59a6b4918182af6cd9bf43dacf7ea62e920f3c3ec1ada6ca1c4fe566280e1aebe10956c3555376cbcf5093f15c6c5183060e3bcc4e7012927a50abfd195addb091fe5c7a7082979083d98f593c36c188d64692d9a3f79a796882ad4d42eb6fab1e99e00a6de02fb54549b24dd944367067d965c13a9b8ea4d7c0eb28937ffd5103274544919d73d2c0fbe67e4caf9793caa281bb929bd28472cf6077eaaf8f9c3403e725b25e4cedd9524a193893125448882275bd25031b4c9baf08d5a4447e0c9c26bdca1e1e42c42031f01e3dbdbe25ab6e320c5c5a25a12c9d704d2a6060b3e5cb4df22c5e90982fb066a1a26ffe158fbc17b8ffdc39b4e25de093d2b14b3aa95ce0458f12692dbb057675bcd592d4f6204b2df07d622aa4ff0e4296b2c0b64889a13f72988f05ce7545055b8b7832bf029ff22819bca268057e4d6d5805ce3b5fcc937f24d353810b5a4aa34af44e1e4e81cfc9432d058d4881cfba5b25c213056e437de648f1640a6928b05622a9cfd39757629ec0d77fac1c437950a17402a3dca2c8bf8871f3ba26b04169eeca9373ad746302a3925049f28dc5d2a725b0c134c98aa5be415b94c06b95cc244a4f50515249606da3664f1d75bd26a98c21814d5164c86a4ae3023b02a3929297458fe837a1590b981118dd164466341d56b932432d052fc3460e19e450604560eb6a42bcacbad1412442e54127f14cf22b36047e52fcec907933c8b00b13025ba222e513a1d74b75160456f376d09245e6d8498de34fd0cf858cb51b5d74610c087cb2cc5cc1feb27e8af6032e454a2993e9c8ff79643ee04a64fda63508d6032e4a52117c7d7d720cf29f81a367d4f8c214c078c0c5bcc1eb548d4db2640008b6034e8d7ee7cbead94c9e706819311d70f147a4ff5ea82fe97f8cc172c0fad5464f614a7ba3f803c30177e2aa1641d6a6c9abb9011bc9effb3a8ece1738f4b46881d980cbe8ee41890e762542ac066c90f194a854a63289241a703a5a864ea33a88f47d067cb95a8da58f4c06aca6ed1cbff3551411b2187023eab3ede73da56390c1800f9542aee01d744b087a059f26c5bb64ea96a26d57b0c9dbd279a78f92476d05a72668d34a23f1344559c1c59446927e4d57c1a98c4984eb6bf01b53156c27992cab68c4ea3015fc660ab2b4e7f0182da8e0d4e82f997b84679a9453305e793c4fe68a2918ad2a167f83f5c57829d80c8b77c2d3a4e03bed22d9c4dc28f8507293df474e147cfacc9ec15348b9da8582db546ec17dffd4f8060a76c783daa02b745f8e7d82d1acea929444a7f2cc136cceb95b3db34eb0d193166159276dba8c138cd98498c1838e96a34d70ea7ad36f0c1d71d4046b72344347ff18b393092e33b7f6065dff2a263851da36b3b897e06292273ce369094efc82f03eb9ef5aa9aa04577eeadae289128c3c59d9828f3f09c6d46531732b61597949b09ed5f6f4867c2458ad9c2f49cc6022760e2478b55117a2d4a3a8d123d84bbd6572e3b66ded08fe728510240769ab6937829568a2e27e2a89d0352378d19c2396c8f5223849ebd529563a21f38ae02ee42444ce8e3f4a2611bc557a45d66f11c167c88b549d630ec1aff7a8e58d3104ff41734a4246bcb68829049362acd6542683d94e08d64b071f112f340836a75349c84a9973982a087e2cf9291f990c0427d3d4ba9bce2f6e4940b06b1e4dc9ed9cb327e11ff8502273a618f5031febfb5db47d6512f6814b13da84ecf841c60bf2814bd5392cde7d6889ee81b51ffd99fbdbd7cda20746d276ca499ace08ca0393728e133da64aaa170f6c32fde423c5e44dcc1db8ab8dd8a1985925a97fac0e9c103a84eea9081df89c2832ccfc9c0317e615122d24f7b44f0eec47db8b5945895d7d71e06405215553e45788393870fff9ce552bac3b726f6044d2881cd1cb972073039f2d2f2ce96056d5b136f09594f24af3d0a65e63031f34677f901735736a6be0cc3ee7de6cff2f2aa6064ee5cffb66973430669dfb476a16919da181bb78a29a4967dd339d81dbf5bcb142277a7ecdc0a78da64c79f805a12c039b9288a7f32559ca181918ada13dc772cda41e039f4b83d010ac8a408981f53aefad98dd61411206564ffb586d9a860c333060d93ab7721057eb0b7ce7bf983faa7deeec9417ec6a5329e9bb3429e6868d2f70fc16349c7c810516e7bea8a102cfd15c2ce0e3a3c6e7c8d15ca401e4a0bac085e705cd2d3e17d88f549774c9d316b8e4a93e9a52500b9cbc4c72372fe8aaf72a0bec66cd20c5f2080becc79049e97a6ea6b194e1b8ba0213ff449bd4dd98f309dda0f18509509f1dbea0acc0aee6a49fc1b7d2e972068e96615505de46aadb57b0edc8a6196a26e8c2f7074505467b94fc18ea428d8360a1a6c06ac618836a8d90c43bfff8f0a20b274d2829307a54123a2789b95f1927a7a2c0a7a89e2334ae95861414b8689ec9830c494ad07c3e8153a133a994d652ae4ed190423981bbb16e3725721b866a02df1faae9a344103dea7aa198c00815217bddb2876fba0436e77b87f0ec2b81f75c9d3b8a3651229b60a824b09a4ee7e0393a3fdb47978aa64c17ea08fcc8ef4ffdd1ebfaff4e52bda8af3b5045e0345ea7564b9f82a520192ac851e30b1ba7ce0645042e2b4c2deccca4b95b831a02a3259a11026b6b7a83901e83d4cf82c0de08edfd10433d5d12088cec3b6da2bb82a89ffc802dc97fa1cddbf201e7f613c392b69c2ee6aa07fc5b9a3461728347ce140f58d39f2d28cd5bed80b153a52383e6be789d29940ed824d4d59526297ea3ad00142a077ccaf72041cf53881ee1808961d6e92e4fccbb3937e0929ea6c7a4531bf076a153b4e4f89fdc523560cf2e6d70f7fca1538606bc6b55e9b7cc50392c35034673947eb588556b6c092503d68277b57e4c79e15dc580bf78ff1153a9c70f220503467b90173f7743428c57b0a7c722f5f9565cc1c6896fc5680577625ba742ba6c5e3b2b182dee41e69034b9dac40a3156c1d7298d41afa555c1061db93b87e8c64805eb5669bcac8448f1c2196a35fab940c656100315aca49d5c417cbb0dc4380523f5bcd5b34677b77e3310c314ac04f9c1b4887c3632a5314ac1ab558f4a4d69f37db6f02f6ac8c004109b816af48d931588418a749a9b3ca19121c628781d212c5bcf62c8498982db58e9f2f8fdae6f2a003488110ab63e930e39e4d441e731063140c15b4b88fbd7b7a622c62738b14e9b513f674dd28385165a6091a788e10936875876907fa226d73968e0b0e14572214627385552f407b527d535b2450d1a4e03bd0238c1e6d851b209567363ed6bf4383aed4d88a109f6849cf4e5ed255aa24c88910936e61092334f98e78b09b64bcf2269042fc155d0df14b4ff6f75c812fca7894907954da413a54a7021735ab41083127c5516bbf1ec0ea6e49360ebc2124312acad5884b41ab4238811892bf4bd7bd0ff6240826f11b55a3313a9427dfe860c1b19e3116c7bb074227e899c42770427d3eb24e5a153428c46f0954c475e8e1416623082fbda24bfc23f8bb84c6fd26b31b50145f07fed9233de5a52a5c1438c44b0318629d1bf3b1a2597818f0f44f069325488db9ffbba5e438c437035f135a57acfd93215c3108cd0bb71f5b62aefe8310ac19e86887e3a4d57be530c42f09e29d967fb28d1ec1883609279444d22699c148f21082e558a559eb6744a9581606fb42555ab2240b0e9d4574712a910e30fbcedae5a0a295d2a8e02a82411a52269281609045220083108cebc07e312000000081a140663a16830220ef54d0f140003582a22523a341a20261a108dc681913010088481e14018140885028150208e84711ce9440f0fa10a8ea20c32aec88a0b5d2ba0a6bff5d4f98a86ab8caa9e0fee014a4d2a8afbd1cb5951a85a684a41eb4ab956e6aa12d5e2a65eb8cad082940eb4d9cae8f4806f163f0a0b75cf6cafba74a5a6a932e596e9ab0c101c9d6122534f85bf6e9bfc683e74366dc11556b33268fbe9abe24fa92189403415b122ca3531d789a80947257aaac8abc5ab208a324c78d6f6b63b18b1cbf571a932357ff991cbe2ea19f8de99ac95f068d7870ff96ec2687d75c15558bcc2df274eaefadf9f99a46046638ce89c13294cf618c94de26a0cc78cc19c1d627216c69a27b1b3cd8069f9f81df640ec70f3d353cf74630bbab474ce5dc965522dc2883a6bea8cdd6bf0146e6f76b00f0ff5ab02980bdc33af510919f809e221f8d6ad32158169a98bf94a43a7b9c5fbb5c7042830abda4478dd076243cfa908de9f6e5bdc41af203c346f6fa5c18c2080b01de1a58042c9b7d63a78dc890bec16729404f9e6b41ac4d97d3ca4080bff2027e52211d4590f542eec0728170dfc4cffed1e28085f60dc6c5904230dc642c25bb8d891b396d66c33114ffefe925c3dd6cfa672c533bda43734b46f8ef37033fb90501a802eb4a47d83d1eb2b060ef753f91d7b67bd2186245956c7a4806bb9d979058cb26e6984f50319cee2277c2b2b42e5dd99268974d7ecdaf0877703ad28f0f87b328a23384ed34052a0ed8f64e309adeb6bd88f05fa4156075bbd6fdf8e876f6e3c35b0b785ba5238293b93db3da70ea16030e9f2fce9c0e86be878bd9d067093e1c5874c841fe217a2bf18fc869a09fd3bf69e8f1e094baf38e070863ad2dc52e0adb0dc249846c0bb7e9806eeccd9cb50e22fbf098e5ecc0bfc06ecfd5855187e0288055e0a6cc4c8db6d8538e58c38a89482aa7befc630151b1d6bd1522745a330f1db8283c75b11bb2edc7c927e93c61bb4be0a1f49b2d1f8c6b05ff0667b085e5e20f2bbb4080b614c930d30940208de0b82b93a662292a495688f437ad1f7dfbd8435ed22cf766f8a5ba9c5cfa29a847ec0d19db7eb392127a15127fe6797494b468a8a3b8b32ae458c203bea0bc18db6464591ac26e9c82289af5438138bdb4132c1b99de295e0c7a76e1c5dab341927a571cdc34585a016688540b6d6863ea4a44325e0bf19c11308b807df059a4b31d266ab314aec2ec0d7c471bf1c3b533278c0442bfe1eb3706f7a498d5e830655c115bb34f2bfb2636c4f7ab6cd793c5ac391d03082f4d282d03c6af13640045afbee18aaa3a54153df4e821aa093a1e9a5ad21260024a29e202436819d2179a25abdaf0d324e161ddaae1c794d0ce615f87c155b0732e01577f04cf1dc227776609399d3355db75a4fb1f4827b3f405380b7f108a4697dd290c406f8860f54b66c9ee74ef878ae283ab65b5649aec84129ffb7015016122a7702be0f222e30f70ddb900b31564bf4cf459bb563c1804b1b39a42a92ac3683134eed5cd208e33418d2e4e72d78f09122e7845378dbe663b82aca645b21733f60ac1b3a5c579b66da55e81234992f3805ae7db88dc141c3767544342cc96c21a032cca4a1dc4ba5a3088c685e023ca0d679041292c63e3b56b9eec183bcb7dd5ff6b2588e81367db76597e1f843c54f245ad5499fc0f148250835cc71c2aef3ba33d499b200a45b28d17dc2c7f889aa236b33ad65b3147aa24cdf691d592351e9491e2da32a1a7df0251eff862de354a5f6229590206eda64006a576dc09a49e73c48ae8e46bcc81b813462d45e81cb8e4c2b0c456194f189dcf92e3e1055e915cbc82a856b72b3324e54f9f8dc1e3d61e5b0b31f513f4ddb754ff7cca18da762263862e2491a6393ba7b0969e0c5d2f63d514ce470f96ad9669a0c0945830b66d5427b3aad663efee4b4f6b7182b397f71080db6d22c5d19bef9dcf33e52410c51aaad0b330fe5a0a42049c15b9e3de8580d663087455a6b6f3037c7a88a82a728961560ecc335c094999f294c221b1a86372d69aafb9b1a06067f5d8c8bce0d6370f676584ed388810f21abd67cd22c3153039669940cc0a48b201a25a932cccb747414176ff587089c296c910d035753e62a5b762689a7cf23dd7c5946eb69cba7a091f7722a853c5bfd58a51a1229174f0ff5f6f064ec446f53fe631ce9323b1f038003d0f52aaefdff4725294d6ba870c4f1b827edc8dc8e1c3604aa45dc78d10d545a664346866b004f6644d56c6a7e381391a8aa95a2a519960d01ef110a6401b6df484d62843c4a7f7a29e3a07a37befa16a529b3b059f7569d71b134f01b135f18ebe220b65f2bd964e42af70f56de0dd792b43fd79b03b3a6dbd863503ad392e3e5deea6e8e820ee4a3cdb4842140c8b54cc0927073aa513614d83d95d759f3739c176e4a9a015896994078bcee486388d3f051fab043803d8cc3b54f689f37c1f714b95fe81e4ee4410e59a22480ef5f68f148012ef979c92b171ef8db54768bc11e82325673cd14c4933681f44dd29a8ca0e89f398599acc8306fa6bee5b461933293332a5883d3a3b417b263107b98b7f28f8e2d8bf85338eb53e8b1a588063be447ad2da264506b30337ec6ab123446ae0f87ba9ed40c7e70e33a59180d7558815a424af1557401c022899fbe46993c18587526feba74e6fee652b157cc968e9290b460424dd6e0c3b5026a2cb6848f2a84e0c742e81ae167e8282a44a3049289d523cb03ef0b60d08ee8b8640feec235c8e25237c2ea6cde6e46eae1508bb622532a1fa0d9be91b6f20ed4254af002d3663dc597b23e6f8c3c14afc78e51335edc62daf7ba6ab129996e5ea6447e43ade9849118644eb0419a3d4ad824f9193a05eba2b9485bca778bb2e92c4868460fa359daa3b327420d95a00a633a14220d570a53db2b025014527125d6c3a08b6873048b607866ac3c85c56bb2fb3f5e7901f9e3ad2490b78c272d63943793384d57f5fb3be41ea6260ba57e9722296972ae36ae620186ea4bfd93ce4382531e42aab3b67f56fc54412cdfc270812487ccaf6c4fc3c9914866abe65e110d6e0b33c3597e6d3879024685a5acca745edb9486571acf07f230a8bda9d2e9f2923060bd9672ef6c4dcce0f26e255853cfa681e3dd9237262c970689576367cd6ff7956b9df1f2b0521c6e563affc96aa4ee44c706432bead59332c0591da0114807d7e32f5633fbb12b54943c782c603f43a24b3bd1aa538644745d98ad4e2c467dfbcf57093791dba9f75047a353c26bdecc429ee568e720d66d61e874c3eb569b2c10ce2526dd9ed89f1a63344edd259f602855d79e2721436021653111dbde067e8c39dfaa37f3a2b4e71e547de5cc4b81fa105ba79a7cc97cf8d230f753799762df14f65b34de75b2d56addfec6a2eaebbb7960a478fc619417e2f2dea3fccada923b74b06dfdbc4b4465b60800af43dded429244e26d4a4f50aefd34681b5603d8eaefd02a339326c2215eec8091366be77583de18f9875afb68481cd82f74ff674939095b344ca2d4084fa91bd82ca5e0b2142f4a9bb62694753c3adef93ff27b2389b79bcd9ddc36264466f6bfa636c76dfb6a3864ea103d6094377dc08224d6081ae609a9875890cd5c9de45d6684f30b39d9dd2fefdc2d4f7ee29a8adae69a658a6884314a1881d38f2d49d76461f359506f43e068483c358433820c7993b8e6bb148c45e8a904cb14b8440007a1435829ac8724190a68c2c0293ab2e0abfe04ceb9043b10f2561bd6831c074f16c90684c96a0e92ed7f68a0cd3245150921a632eb4b8bdb06842d0ca0d62ede1d0293053b94462353c66cbf26b17b016d9c0fc8e2fba5d22b3cf0c258e4f9fb14b0f355168b4604fc68035f3cd1fe4e875ef48ebd5f712a9baa179908e440c7a77f80b604775670e85947d8b0fe8e11047a81c56c109a500383331cf99bc7dce9c7a389fc875e4476f19de171e4936df0e54c8eeaec26ff38b2c72ebdba214875b9efb95cb0800ab702fa072bb4186be9aa88199ce1480f91621ffb88fb3aa9c68c8775c159b1a27b883c6c7410c2733b98a3c7166b17cefb3506651c1484ac944b9649766c350a5fee61a85cf4901ff160c367989363405388da425cf7996f6f8182204ca89fa34b119aff20427e525c33511911c72e4e4d162b03d6f8e7653426855dc06c1870c94823d80d2278c62e4b1f715a5e4a3f60089409a47c78883af64218056f6539a12c7bd615e8ab19b4a4564c25b459e5c3ce920f49d4d368ce7573e48aeb44087ae690db4420a12976802859eba813b88ad0234759b8e3c8564bb2036f21b5cc120ece61ecdb80589b8da150df63d23aaaa90e25d9df002e61dd87cf13b004dc3fbf740978eb6efb349037d4ecdb2694c410da386cc7bad5937a067232da02230a9a885824e4109405e92ff51e81a055b56b90e9083d11f97f6dda63013f90a664f2b3ab0e47c480e388c0e925d8ff92cc378ed08bc208bd800dd05dbc30bf7304db282c8cf3e6d5c610766693af0ad2471d20dc31457bcdeb23507c9b6d1d9d86f902d7101768a913db9d07cdbf9e44ea9ff00e5b771a9d78b469eb5d165c76e60fbe4649831529f4b82b8e95aa92522d00cf740405eec623a244ca2d5bb82af2dd5f515f349eaa4a58cd21484643869f86515052936b4bb9665b731205766427b137031bce3cdf32ac9a78b7d87981143fe01a1870f3fd1da6b2056877763e5bae6609fb1dc4282bc0478f2244b5ade95bbc0cdde018cf25df80725155358bc5d0488bd5c1066cf2c0589b3242556bddde9dd091ea44405f55c7e1722a42ba669e4aa740c49fceb6a67560a28ed2d71f7f147144bc41da845d1aa2f35f97215980175502ced6f760059a8c00cac02e8a877f72524629b8a3548338eab82a806e0d688da288faa3200c10ccb06f91b2ea53c5a14555abb8e882b33586420ece9152952ab8c8f50081a01b18ff41ff6f041e2f93d465d5b3a5cb1d9fb32f6230012547253bc51ccf7f6bc3b568d95c3b175cdc37eccd929b77f7b68624dd567e9ec8d5c7ef5ba30ca88c01bce8f8a46341e9381636091e51eeb64e86d6e38d98b9a47630c5bac748a4abff61297970e9eda38b0f9f9926bf9c0e8780e7efd6eb0b4449fa05a6dd689ce662a9f0182239a66b04ef146fb1eefeae080348f6fdf82069596688642e3787af907f544749cd22f09806d13df7ada56129668512921de147b053f731d1f7125afd0d6032a4562dd06bc98fb3971127693167936533082ffa3478c85fd8182dc23a8270ec18bbaa336ae500d5477ad23efb0a204dd3e96f3ad6351d91f79d8a23d4fed33113d1354dd0c466d84de9549bb8cea9f622c25281a77910b9414cbb34d6d600590235779e6d675fa2c3e8bf1516fa95dfdc99cc44a778f5cb0de8abc8d38310d8baea7489094b7f9151694c93d305b536da6f1432edae98f0eb55b9743a5c3a60606fb12e07aca1310db5c86803b4ec66b7dcf052353f37426b36c65bb31ebf191ec67938931a23c854228d882025dc4289f8606553d14e5b141f1ad9a903a42b183e3d2f3218ca0ca81d2fded7dac0692fa937a306ed4222afa4f31b5e85f5b5baf11e3c0516b7218e77e17eb9e3ee2479deec2980aa88c90ee2ec57319db4bd05657f876b7060f9ee6875ab854ef95d630021a1c575b51374404f0a0d505637c9863ce1d44944edb9872a03c197cb9583bf2c0e916fc047a04bbcb6dafc35c692781fc500507a7bb5dffd04265c732b60c3f45ed3745cb1238a976995fa9e2814bb7800d17f182bdddf70c440cc735ddcbdc467874fa89e1566c9fd2d70d93362c27eb65d78e68c95d9806e94df87a42679f461edaf65cd8aa1c929f01b668332964f87428ce07a216a29595353c359fa19bbe9163828a2274a9d7cbb646e5d160af0613c6253e34bf67c5baea255a1b1d7823acf730c95692bd280a50c2747394460546e75422ca961a01b270a73445855e43d7bc9c824ccf7b5fb82f698e1cdaa8771ea3013918563aca63b279a32ff82102e088abdc63967728e946f27d0b1748011976c4298012acfeb63a5a152d8a0f8f471520122b6bc853928d7be748b90b86cbe741a7a023e5968b403bf2e268c260eb1bf129aafafac0693e942e799baed33e184acd9339b44caa0662de0bccc90962ce6d2e22402f22cc2180926856d83ade7bd4fe615c93746bb36db5dfb8f52f054934e0cdfc4926d39ec70c0ae30faa84b1c07536c41f6ab338a406b9a6d72fef2c021988c0acfd9340d84ee83e5fa3d4d912500b7658057d103f490b73af20d82283c6a63ad99823c6d2cacb940d3a8ec0add23378a5619ecd1732adaf9b0d892a427377f8e344bdb94a04f3d63f3fcb2c79b175fc9153e333be81f4dab8d7ca6a4d31acc844d8f71b7c190c7f63457a7bedafeed917f146b7fdb922141423d50d5bb83a452aa217d2886d4859bde54df7e1e9b4aed8ae6c144e6263b923bc11b79bb2bad2514175cd854e2c44384fc5af72f8836eafa93dc5f38e7f0172c079a030356cec0d0b5562a49ae405b7a04d6e903199a5efcac17c061fc63f42ccc5551ee557401c6d3e2365bb536b579587e326a595a8bbc752bbab9ea5cd9a4da6d41684c0a2b17a6b32f113ec2c09ce0f471e07890dc3a13b0f982308cdc412808db829ef1d7846161d6bf2bc74803d8bb2acd9cad890d7aaf6599c604936c80bcdd2498cb9bbf81e6a53cae73de2d408382e07e25aa059811eb1ff999ed42276d0d080720053022156af525122fa65f422c589ed53dfb792c510a703c77ce2b84d54e5782ab5869c70d7598da6434aeae21e8560ecc2301d7424129360883193ace0dbf18e353d8424ce5b80d8ca4fc3ff16ef75256d7a0570d93b9ef396e72ffa5cf541b722935b5abaeb7357d60068013245cc2cc81a7571fab7f9155291f2aa00befda8b8981a544079ca0c9e9ba6c98645071884936b9c7ba6dbd22f55090657be6124b761ec12920283e053b99aa2a3cab3d3294c16ec956d421ce3afb8f1225397b8db4488586ee2e97229e32648aeabbb62545100c4c75eda431e89be1074218df67cb2d863437143c342f41b782a68b70e49eb32e48c94381b80a139ba93a9005ab004fedf653c7bd640ef70c0dc66c7b003e0c58a0c6d4a03026cb868399aa21e785b023bf3da9fea9678185dfbbbcb8e4a5ad3d6c0a1f1c94745c52585e3201be8843cdc4c0943e87d690d610f8d32cf3849482190d724c269d12e06b6f678f7c70e9f7499287a4143154ecc0a002390e261feb5e714786711fd73a26c9ce0b51cf972274236bc9aa9494f9ad2650acac3b144ea33c0abed8c5b5a9d0a5481b543d59f350011eb34de0ff7cb2074f11aae5767082ffa3939ffb7a4d20f82aa0d35c532b90c625daf5f3e9f06f70b78dcc6f5353836acd98e49d86a0a796b87019832e313428a139f5cfad74f8f19606590b5189eb2890b025e63230f66c0a4af94bc7e679ec54a71bb09fb0658eb00c0c2c076c251b857005ea36aa5fc3a5d12b621be8df4e279b286c7b4d8bedd940aa2fcd9866af709fe5d744a1ba7672ed6a731f277f5e166468801324d942d3dd9472dd4b8b62160adbfbea45d8a2ff858295766f61a7f6a2014224639b64093b64811ba1fc06bd99699f001ae3c5b6f7dfee929a3168d62ad55acf6fff1373b2ae6dee4adc74e30c8919c045075e0045297dbbd9d48b82058e3908efd20bfad8c482097d361a4b5ee2c90650ae35815f3510956cc13bf07506099036fbcc765e8e58d90b1b2d2bdcb4aab5a7f044731444a67c5892a00fa0c3b11f2655ae799441ec4a60b484d6b7992d73e09d526cb94f2c5e02ccea6df03201b4efc73ad09451e2d3539e56790b3000b870f190666aa9dd786d445f340dabaeac4440411e98435815b82b8c2d0400dcc30089c7a86980a694879032f3e8951fdf680d77bb60800dfcdb40f807883a910289f461d41f2355c05baedc114914f60108a7ae4d68228400831f03e302acfdd86e1406ce50ff677770db4d4b74397db5bb2b86084f97f16387a09dbcd8a9ccad68e390b0e3c14e7567d4f6e78c629706bb29ca90cde81a98da74825d87338aeadd87690a3282d07ce29ef011c1106b41367a6dd32df31b9921af3b4fedd248549c4715d2e3830613b89c2a7139afcbab491ab441e8e5256adae8933928684c1251fe731935b8ce4851283e931f1ca2369d1d2e809aacbd891a6eeb9240ad278c104356622a60d491abe47640e006321e7ab23774f2b8e10ee4924fef83b3abd3ba637ff4bc09c4db3b7bf6b1d12e4067b64721de97623aaef17b486d1293764d46e661fabc2a20a5fce8a14306e93d7db5a541ec2593873001a2d150e656e380cd08c73a962f25607465f27da3992b2f34a63be435bc71eedbde1d4d006a2cbee9cca2430d1bed4e9d6724d19418a6b023cbe57fc21fec9237bbb3ad8b4731f0a13e6232a10556588711a6272cf87088093b670a39e3b00677f0cfb0083912a16ed8cc34eefd4035903225a932a14b8f3299e890adeb4b0a4494eefec562217b4a991a2a6d60633067ea87c925966b2cf2a631a4bef3eb25ed63c128cdd8a22b8fa326adcec00ab91b06c4d55f7671685254a186542338207c980f17d2621035bfc3d5c6bb0b81a5f9364d965349286c3670d252c9041bdea76432a4cda5fe2d5ca6e2db6f899d6e90069368719ec62df63890a233bd6df53a0087fc16ff88b5d7a1ed1a4fed88ef5549a23e66e26f02535a649e8661da032fd59835a67f511a87f64b38560dc47deda9a2a0d5fe3c5baec4b1bda9c053a21d5c29ce1c1fb4ead03fe1cd580ee1d67a2eb4451bc4836ae35b1660a52aa2f217e9febce24041834c0ebf004a01af5b6c9deb4fa2207029409e365d57bf6e593b380fc92ca562e1f6be2b5dfa4c133f66ffa0a4283baa2a3e979585adbe1f80c5199b4b98301affd00605e856bba6bd13e065880489e6838404a0c658e11b3f005f13c8c5caf06e6f12fd492bacbaaacc05678b29185882a1677519ddd088a91980fcc389097e9a753c5d23c92398dc7e51561d81516b18c06e2c02ab32e9d10248739ee4ad6ea66b97e13780e72ce268090e94fc29aacc6bb780591dd0e985c715f2b2c2d166013b561d43aecfc8da7b392de1cc91b136776d4c8f645603c048b4032512ea36d8228d141b143924321c44bca156388bcc54e0416d9886101d286cb4c8303ab28fed0ae20dfaada1d2ae3313196de5a7e7aa68bb78ef9bce8e1857cf7389756e68b25554abb302e774fb072b0aa50652bbd0a4fee015a801636e4320ab733af2aab96271771fc576d4be73e96b3875b5ac581d282b7f2bc1be8528f0fa72f513b9153976bc94a31f37c5b006ee43edabddc04848741c7ed39742f0551af58aa690f180a790f14d2f53b37c0bf7bb2848c52d5fdc71928c57f5615092f53de736cc26c415ab9c785e41752797218bf88f4b794956cc13d9fda10ac8297c2f11b18695445ebe17154c0b04f45e6d33729629f540780ec7ed4930c09ef1a562460ac14d24be450052f0a4d94a1b2e1c74bc9880a00ab1488db863f9b8e87f25a2f312c442d4ad081029d5817dc7e5614d3b3b9059230b40a952316328e7da98e9e2e67b62e32b45b52543e5c3bf442285b6dd6e4b54480dfd9b43e1921c21dfa5a65b9534ae38a5a8ed84638053fcd731c46c3e21e6c0f912d3867481d0c8129a966a1912fcad0c3ec7ece6d7f8f405f704a969d8fbf0b1b2f3364dd2ec09d15f57c195dce08d9f83ff79b404cbaf8906276b0de004a31762e32f542a4501b1188fd7641b140793347d6be05d10d106c7399a9428349802163d985ed008a58344d2bd2d0d951f541688ea0b5d60220343fdf2461994b361919301681c2850a8418106351354d4505207a5439450b31a6548493111793f8a5d0f2527541135d0388f50768022f6517dac500c4ffb4011112a5ba7ab96f052149fb3c87634949da080a410a8af4fc2f44c190a2202c450b4a1f5fd5a3a50f08a9280946750ee031450d9d9135a1b056cb3a126871bcaa05ed796aa1d0022320294cf50d4a05a841a26545e42e9d03c5ffe4102a50514a342f5ad836a0844550087d628685e448434883714280dd57773abc12c93424214b0b4fa295b3551c0236bb268531407d7000d9fcb0922ea2b25bca00f95f18ed2a197866af00a2524147389ea7b2dc5ef9043a15d286059aa7a026d146375bc4b29d25bdc2cb22e0ab32e20d1a485259ae265e18b5116a5bc84021ca1746ca6ce4adefa0602052314880205e400e5c4bba4fa60f0637378dc8e3c0628f145015df74748c2e14f109a13d6e8b46043fec756601ce22a16e148034f153610ed38e30cae056a44289a40498562652820e18064fadfe4aebc46b41bdc0808273f97af182eedb95f5bec2bd444a0c9edb2c11bcdc33cd89511e726871b73c6cb2195b19516d3cfc81ee5cf89dd4b9e31edb98e1032f1cecd225b27b8f88bb66203040e8919ab40cf374fe12486a217f515044019ceda9b04d96a705c049a8fb9836882ee598b5c7d57dcc6466bc2d6d1016560dc65c40c2dbcaff6fe154868c814008c17c0dca226e68d08b1425966d301a3b4e8f9bd780948852f9e4b8d716b7a49208452662816ea935028662e67b94617d696fb62d010d5dd97fb61bab6d0ad22c9b6f1a9bb17dec7acf85e4a29b96bea7bc3c35ab2cd3b5eddf83d8f8106ac952fb9d186d3fd37595380120287683092a5e1df946b0a95d39925e3370fa53be1130089405100849b619f9a3a55bc2c800dfcff04bd4d88a2678c290c0b9a5b610e0363aa28a2ac27bda18978217e280f89f4357afb98d2635ba135f71d863b01b0ff814e0e288528fa9f91a6b1753a6878ddb724883cf521f3061845d32820ef66bd1bb55c0de30ce8e48b0a7862d133a5653a8d2eeb59a57872e4d605ddeca4534f1c7beb93d00381d7c3cfaa635f2a031e403275e307a54d2be02e53bdc13e0ccf2304563e37077534af28e917a9f8b68b2c955cdb217171b82c8a923297f0152da3edbac650c5d1b908414ff6130a2760004815ba97009354f33942d99fa1ef81071caef31dcac440fd7f93fdd26077ad414621acf4bf52f6ccb4ee1bb0b0a4f55114bbbe8636476ef158f24327fda0fdd2a56bb27009bf0f592b0e85c3635485d249e07933201e9d162107f196669a1649fae0a31cdc6eb98680e715a3a065a0a7e3e42c6fbe06abe02871c1760ebeee958634fa8e18bc712c8ba1a9a720b21662a91e02149a7a3d4a504f10b3d8884207af36fd5205dc2d81ca6371aeb825992717c50f523d327afa6d44f8ae328b4549e16901456f0e7a66069c126641b43c40a19354048959d703ab5a729fad650584498b73122998815001612557a1ae444ed7f06c6a9c64e0b7722cb272c8a9881fcff093bd1db8aca722bae375076d934cb8ad5c61f16aa002ce12bd9b76607e2f80e8a58ccd4124bdc3b9ad94a723bbb1d36a1410796f567cf2158570bd1266856b88e215d3799585739928207604e7b6a8527cd24c45b006035052080b2f699152eb2935908d305a68327f26bbb56dd17b4ad649ee88435f252f0fcb4a8c95898652fee24bf371859b1ede0e5f3e304ebf203c45cdc3d42123fb2e277ab3ff122a68652ca91083e19c6e78a1b1c9c483ab4ce318c9fa922e57b199f8e8390c51aec391f0f2c8a6d18c2841811ff614f6070e246860284cc4cf220a5729c61720b61c942dc042f2ce2d7c1a7e7eaee634e47683ab069cdf5b22fc761e902fe59597d87614c1178f5d16351c01da0b72b3c29cae8c6981616de4f3cabc817e320702f5aa69b95072adecde27c487a47961d5406b933692837aa7e356e26f0b2e6231e7c99f79e9a5223408f2e8599ea5dbc2fe4e9c8e60074ee7d2696c1f01baff768dd1aab19adf881dfc7909843388e58ef3a7a34d7b81c0c58dd417c23790e4d9a9add26848faac8f3614e360d4230afa9124bfd69ebce2cb04728838e5fab1644b03f588d1242dfa2409b8507240be1b9f2b7cac26360459e725c1f593111c2f0ad8d526bc81433511032af84ce47818f21a9b25a76c372aef5865c38058c38b5bfa3d5ada2f2844e8a206d5fd794ebdbc5cace469a326113a7a958af43672e560ccf3fba4d23afd530da9ec2904e1f54758ec10bc6749457eca59467cd7fa1dfe3d7c61f5180384295afed6b342ac28cbf608409b5aab1dcc48045867e30151462b339d1fb84a9fdcc5418d21c7870ddba6bffdd5864324e7a7b2605b6abf762f203fe1272359f4c55fac95023e86aea8bdc20ea35e33c7c8eb3201eb5bc08a9820f66c6c33bb337a6d373ef67132ada9f5209d149a589a24b7424be61106d98f8a45c03cd4a70069944f430cca07a12bb4f66788739d374cbb648da417a58708088e0d186f5a47f6c30d1e7358b19f65d27eca04f927165e01391bbba01a47fb3f1f60719c34ff7c8d0491ba481f2652098aaaa844ee631cf7a219dcae50a35d2ef144ecbd2b3279e64899f2e7170c1c92329ef8f43c38d98609abb98bbd8251428c81026f440c5dc699f46869a60db1bbd7cc368a14b7817aaa29a9381897c3998d8972905e4a3f5a4388c353ca931dcef75bbb9a0bce7bc5003a0d989cac46f66f0daefe89602406f46de47ad5a2689c1f413ad0d038dbe63f2dc39a6892f54375c8de8c6403c6ef64caac8752b43e81e06b499d8c2c499b25ebcfb3cf9fc7f4e4e68a2144a9e65633167860ce477e66e1e686c72b9224b9cf2f88068a502840105089429939cd16abf23ee5131cbc731417d4daec546445a9aebc7e9920242dde50ec8f9fccd165db97b3bbc2758ac1d3a5be2a0c99afe1c801c4eabe0e5a64dbe1e08a02008ab4e0c44fc9bb06a4fd0615fd079052f0479502acceb7f5ee7ff5feba06d19993e4151599a1065acf01e0019d67467f55b8a5e333158b6c5ad61da265856eba6470d201950f6f42f8cc58b3c9e72a3b70ec9c0cc7d9c8de55914915379be3ef181e9ab3dded33dcf191765883b4078566309edca81723baed52b4131caff1ce28ae7530eec4535efb719b27acc3c7333644e19d237dd8aaa841c6a9c1e0838ea28c44c2620c323c10673f65e3708018af78342c7d5a7199d6d88838dbdc9dfe42abaad9b65525dfa0659f34895b1aed3168331db369a650b402b88b41c6d299a0c98c1e71ee1786e735c4dc60981c95b8cd7960084b50fa6417f8c38cd005d3a1930d651c9602fb126c7a50e8afaba2597264234a57d038a4d268d3ac554736a295a68d0e6495294c4f3ae7f03278d958b3373b1bd1e298187e987d4b6d7d22525c2f8759e1b9df5922463b94ae671dd24c34acb02ce7ecfbe68c6ba85df4f5ba91353f43ac6986e6b014f0486158f2a7f2d9e05613730186d3d19194dec98d524ac54c922ec7ba59982ef36e98897776a92dead567b11eaba10d48348fbd6acf71740544ef088d1242ff2d54df03591b37846dbc21773b71aa93332456a74ecb6fe791e6a252b60a2ae3aebd05a99f3a0108fa5886c6c9c2bdae2738a6015d6a8185b3c11a752c9313f9626599fb84f4484d454166b64099e4e8383bc5f027e724340c09589a92b2d6660af422aaa1a7ddd2f1abb5bcf51f922e63320a11485053e921a161cd9b822c7c54e960fcf895a3b8ab7dcf555a1917cf8e8c34d64e1e7647b34364bad78debc216df8d694952bca2e43a5d1dc4d36e58e96bf30b61adf2adc5cd115edd8478e56856acfe64c1ea14ace8142e3351b313b0562596f9540866307387962a4424d1a808d406e0ee80da312a1dffedfb487c1872fa102f9acaa3d9405ee73fe4b19e478ab69ffecb4b1006319eb42aa0d0ba49837b5a18df19ac635ea03b308e010084a2fb59fb020d44d483599bcbe1fa25072e6863cd144d0ecc864f34958f05bcf38034fc6837325cb83c53664e8622af5e862f23037d42c67e1597017b0e86a6b91be51639948160e34ecd33276e3b189683367e65a751d68c7235bab777001735b9d7c44cf41c711b1490b810d8b79ef2657fc27b4f966a41949e3a701b207a1f6ab4b563c7d53cf620903f1e03f0a50095162db8394e54721de4a484271fc74bd61650cbf6b29464e7e13fb791acf2d8c926722756a97a309ade68028b2c23c360909a602553e41aa8291361c68486b0b76eaf1d9f45d5fc56b134097cb5d271d35e8729a11e3a21271f22404518314dabe25831f092981f3e0b69da8163e3fcee32410ad644e1b8e04ef80c22229b36c5e7c1d4a092b8470e6641f9998301f98e6b8276b4ce6611f96dfa6e72907ac131e6fb5657f56bed1d21e07a31db74d24d796a6e9c7fff57e791218cf3ae845a139200bc5901da4f6be04ed458a85a37eebd9ab1c0e678e6d8f5da008cfd6fa7c24d1a41d6219772a8f2a0e608464cff4886c45f1fcace89be33654b88370059c05291ac08f815f44378d888fd78d26c49cddfe04884f09e9d5c4b172753d62c41aa7bf988e9cfaa9c651f6b88896a43783d91677765a0b17f84ea48941432f7665d4895693882a6a5a417ca035043a8c2338a145af4050668f47c529fcc6312065e11e3e8c696363aaa6f613133fd4c8c37b1446ea625cc8fd1967d08edf87c0b6ec0dc8c0bf63d21c09c539beac70c1a92505723c4dd3417e756441e18d8896dba019a0fa3d82d64545b389f59a365b6830c516c8285e7a472342e5277243d51597664aca5be1374b08b4b271c305e565f50098e1b6984c630f6e43c8840ee0248c3d545c0e8d094d7b55587d76d3d4f3964e5ec18ec67997b96220b4ef2e8320aa09f95bf6dd2df9a55c46eda7c3f194ceae7c0d7843ee452a207919f3e894c8b73e4dab887788e7ecdf66d24fb0d8fa3d2325679e55e8c0e483e0b6cad020e96c45e0b2b70b61a0730c30c33cc30c30c33ac9ca72df7fe8317a9bb39252525259709cd80c6c584c6c584c6b50de701140b4c0b780b7f08894421a5d118628686055f8c158ccac141c249314f86f697257f0c5df002128c2a13b400052b58810b2e50b6b847b849b35d7b4639473871269639549c856b849362cac631c13e5ebbc4c231c20793b43192b8fb9c369b67b8457852e1248ab7df9d38960ca708ef463b468c6c541ee544f8281d653a8ced21c2d7e8e181ffc55ec9dd1dc20b398b74467510b21d6708cf82a7574c8fb9cfa11cc315c28bce91ad345bcbb54c121c215c6b982ae5b289e1b335084f3cb45d5a88df26ef04e1bd4b466a3454cf8ed5e002e137f60c2dfb66b439860f10aec7742a8e442e69eafcc1ff2c764ee1fce025bf747119d41bc52c85eb839b1c887dca281aa53c0cc3707c70aad33d0e29ec4a1a695eb83db89212425378e6be4d0fde27edcf24a6e6c1b1e4153d3c78e1d343738bccddc1496f0c3d835ce9824ace0efea4838ab3be94e1375707a7a663e5fc6943c0d1c1e91862c858a293c34cde1cdc105ff3e910ed31454fb0b5293839f852628f2f35ef02c334b838b8f9f1b656ce920b56400707274778adbe7ce271db09f6dee05ba88fa88621df021794b7c1970bce0d3e8e17cd2a733131fa27d832255c1b7c341aaf31323ac192206b001a708001a008c706a7e423e69ad11851fa35b8e92d99b466e9e86be9d4e04bf2c9a0a18617f94a1a7ce9194d6bdb7a106b3478fd37a1a99534567268803b83bf3d6a6972f6fa89314371d2b5f69252067ffa2385da0ce9d84106ff2c83a694db31f857d1434369c5e0d46ae69864a799ba307853123acea70306371e6d7ef1ff0b4ec6a833c8c675bf7ac1df4c0db545424e16e982977a4c72ca33170867fe783c83b7e0fa4a55ae4fbf9d472d785d114ae6c52c38975298e8c8191e7b58f0e5d782a4d0fd151c77891a7923c60a9e5b8c18c6ec1b6ace54c193a894dd96192af8a04185c9488ae77f0abe64c73f39266965560a5ec66ad964b9fe2d1a05e7c16a68913fb9dfa0e0464a6b6af6ca139ccdb9fbe62a27789e2743cb1eb6dba5d2043f23244465ea14fb99e08620da5ab295736996e0dafcfc796b72a9b412dcf28e998f71127c0dbb8b41fc4282d7491ad544c8c33ec9113ccd3086c81a2ee273c408aae3b8641bb122b89a1ac5cdd69a544588e084e81411d619e6e80cc10d19927b0c1db1715e089e4d68d4a12b9dc64c105cbb680dcec2cb630b10dcd09da2edc2f7036f62229a64399fbc9e0fdce0d8d16904cf20a3bd7063844ca7868e330379e1add86be58a51b3c5c62efca011da3795535a6ae8c2cffa71cd9a6f947372e184479325f8cb3d88c1851fcdcdb3b745d3d8dcc20b595679aef1cad5b6702e74546e4d311ee15a781aa4a5cf238fac490b3759ab584a74bc7fb3f02346ed6e8bb52cbcd8e629e653040bad63e1a458fda64c0d0b1f86895219ab83bc9d5738ebbeedb9c2c7ec1857b83d3973fa36cfc12aadf0b6bf6385354e9f6256781e659a233e3f8e7715ce47c9d02f4759157e8a315da3a0e9392439154ef89cab26c6149d4546852f9172881839a7707a563bf27b7cf68e29fcf4205386d408277f297c183fb3f19f21f785144e4d57869e1a937965147e88f0e917da4b43220a4fe3c4da3233078b84c24f6b29b9a77641e1a6c494831871b2d1fd84db187834ffcbc0b1ba9e3036e830e339dc4e389f53aa36364d336f39e1e694193eb7dbca49bb09274b689cec31ca16bf26dc8a6c953617e53f9970a3d1c9bd8497ff07269c568dcc612e657b8c4b781a12a9659b39a786251c3b1bfb7ce3db5a57c2197f492b352b25bcec1e7e3cd45a63ac93702d6da7e39390b2b14ac2edb9476a3d6a24fcb4cfd2c03778b507125e9691c79f24cea3f3081f2493f6982b5afa7784936b2ac7f0b071b7a5119ec7b56493b3b45061847fe10d728cd822bc741c177f961ade5084efe9572d54f892b413e1bbbdcd6c4ea92dbd8908c773b0cbf8ce43785dbe59b423a3cba521dc587db1159eac3b5708bf26446545760c1e47087f22499294f1d5566c108e7f7d8b85f9e7d552105ebb59105971d43895817063e5f9d031d4937d00416cece338ae817ff0672b5dda98cbad1ae8072f747aec935cec839b791a4ab4c62934453e386162d228971d4f8cb8072f39ead5cc9dcb7f433db85916eeb637433be4f2e0635c15171ec9c3320e0f3e18ab9cc9caeac7be3b78a2619363b4f49cd4b3838fef616450da8da37475f073a7caa58ba152dad0c1b594c3c4acc91baa3207efa39fa5904198f5b41c1c798b5932223d0e721cbca4fe8eed633838dd20e4303926e951dfe06afab746fa49fad20d9e4f454d9ad2b3fd6d701e238fc7ff0dc63d36b811c3b5e47bbf34da1a3cef3af7cf91a9c1fb709724a7096360692053abe70a231afc9445a6c2b64f3257677036b4dd77c619c48a31839f9281e498256570c2245169ac92c10deb763ea11a83371563450adba4492231382d2985a83f94e48f738085c1c0e09d4accf88d19581c01fb82772b593d4776378f792ff8e3682b97e4cd979ee9823f97d263bc25d3d043b870ceea924f258e2df81f23527a48bfbc59d682935db3b95b3a2d0bae770eae9952c7b0e08b78cc4982dd69069f0c76052f1a4b7b78b558c195fb9ca2c2af4dafb805ab829b630cc96e1efa55ea50c187e21731bbc3b9953d057fee91879e7415b21c26051f66cc1a6ed36951f0fe46a32bdf7b8c313228b8961e5cf60d19f3803dc169f1088df9cb72e6a605cc09d604dfec35a68b19461d454990674cf02cb7f4dff5c4e64d1e0b6c09684c5d49e471b800a6041fd9ab7806153c1c35b8646149f0d342f75c6b7ee0957382dd1e181268c9d6f431fa7bca0b5e900017c8e00537f8e20531b8c1f957806d05404002015cc18ee0855f36b7d4a1720d62850333829f26a23374c629826f8dba3de4f4b03685be6044f0e7eaaa44f267508919825f8e734ee5317fb69a85e0e54721fafb3c25cb2d172c084e65d1c86a11dc345380e04ce714a984c17ee05d0c7d65256216b2623ef034b37bc6b081bdf06c935fa5188d7b45f342f1c26d94c5719a7d76e1d8a72c928dc2baf0b2ee62b498954f9277b970fb7eb23f0c142e7c104b452323af4f0dbe851773b9cb75b06ce15df86e1826c5ac4d9b5a787df162e1b91a4a86d1c2dbce94ed1dab789669164eb8b2e8161dc4571465e1a399f1541b7362e1440d6f3f36fe9b53a460e1847093debdc2b36d9825e3f0b8c2ab102bfb36b6cd658f563849335f869c452ce4c20a37fa1a6f86d95c851f414c72f0987ff74e156e085e1b35354dad5f77a970ad5274d89d354b95d8864285a3311323f6a468b319a7f0e2336504fb0ef628dc6a2853b815b6c19878570a7f1dd54f239b3cded3198a149e24af98e327ec233a0ad7bc2a948cac872c8f287c47ad6a86a042c1a5a4d690621e544603234381c24bad1e132cc2833d100cf50927a5f5c8b28b217779c2eb8c71d924a323c76485ea8493613566a3c5486dbc5c284eb891af4f4afa1f746cbb09afa3f85f5abb54a134e1f5984684d8f249c36b5aa84c385ac126483bb630c155acaaad746476b98c6b5feacd32394d41a84bf87241a53346a7b4ba2ce14fe71c5e24c83f885855c2793b4742a128e18ce3adac068eb1e40baa49789673c87b8ad992843f61b64172aa5958ae22e1038d512c87cd552cb50c19c8606c3500031c680614249c6cf95d35493ef737f97c41835bc1abe08b2f5cd0821318a01ee177474b86dd7184336b292bc2d62c661ae1864621f7639c6151c2087fee521d83e0297a7411fe854916edca83a7d82bc2314dc9dba56312e18770cbb1213588f04396b58791d2a5670ee185d8953cdf764ad910ce46f6ca30b914c207f7eadb195a08e1b45768ce78c728fc41380f366535e4b79042045187e7941eeb4078d5d3a629db3df41910deb9a4a3f0ffc11579e49d34763416fde0e377c9f361227da0b5b3850f4ed6d4108928116a9fa070420eb73927f7137e0aaaa1ee3594679fce138e45c9923cd147fb613ae1e7b79432aa59adcba040062b9801058c07c90947bad287cfb4f8c739f583dc84b3317d847acd96b4660f5213dea749b98245544edb5ec039c84c78a921d3c77e7439c61c4c38e9dd2e224b94b6c6b98497a24743ce915237f058c249513208e9eca1ace52be1ac4dc84836172e434f0983f57dcc24dc4839ed720852ea939184f3af9251393b049f48249c87a11e47d7dfe6fc8084d3d330bd671456a5ef4778e7a85d2bd886b18c7584976ded337c8594b7b6119eb7f86aa6f48e31aa8cf02d5bdea41a53f85575117eda1812625295d9a02ac2f193e449846fa1a18d86a4d8701311ae54e8c70d2cc798633b84ef5b9652eee428e4184378793c48c85e2144c4aa105ed6601969a699985a2284dfa9bcac2fed527906e1869a761845b22c4f47109e667ca934dba6acd0098497ae3bb4add778d03c20fc6c90d6213d5ffae30ffe9cc55423269ebbe1077f1d8614e233fae8b7e983134436dfe4ccd158357cf056257bf0e3fd3a62db3d5259f4e0a7f990a96d953c7837edd5ea51ab2d4af0e0dcc685c9dec1f3958e311ca590413bece026cd65e94ddc4a93a30e3eb6185ab1432d3d0c1ddccab098ea33f73b90e7e065c90c42f9c772f0c3cf7d288decaf4f1cbcbeba2812c270f0ffc61cf5e65791e4bec1cf20a7b6e67937381fd3e5d77eb6c1c7290387522525f94d36b8ad751943953a8a5eaec1f5a97fac1ae61a22a7067f5b528a4aacacda5d1a7c0c22f6c59482063f878c635a4ab660d933382239dd64f8a5d8c8cce0e4afe83845668b7d193cb796e065f926635c91c1779873acc5305fed18830f3ae4d47ea15296550c7eb8a3ab737c235e5286c14dffae1583e147a9d9a2437b6be082051080003570c1175fb880c020bfa09cdb44cff66833fa03e98522c009b20baeb6c64551cfd9336480905c70326477c687ea06c6050ac82db8591362c335faac2ab55083cc820fe5aeee4382a7c7512c389931ccf08c357905374f466f9d41b2e90aa5150a292d3c5345cae717590537f6353e87e66eb6122ab816a91e597414d3249d82ffd60d5622c6de5811520a5ed79c550e498d822729cd69b88f515c24149c08bffd2627a39d2ad7802df20927891d1b3f5a904ef052f97cc7a434c10d1315aae5e9aea94a269c72ccf24972c89c608b309730ca9b1ab4b483dfe681548265125cff6831844ae4ef9e344d05a39497807d218317c822917047c83402a208b2086ef00d55f564a5d21922b89a6d1e877a087ecd5f886f97d8a91621b81639cf658e36bf4910fc8c8c5cad16b53b0d042765c931760859e15ff2032f8618c1fa72237de0d8e7ef740f8f21c4bd7042a61c19bab8c30c2f7c9c3dc4827f6417bedc54c819a5b02ebc97f31bfb60fea1712e3c2db5b81cfe6287ece2c2cb9a7144c914e32d7cb4d2a0e61bc4b411b585b3665177eed7c943ad859b8287ec20e5248defa485e358b4424ed779a39bb3f0a1afb8cd947b467cb270455d621a839b6d8fc5c29f0c9a16fd86855392c394a389471bb357789d2368d6f099dd29e50a27ad23d2d9a4d70ab7c291ee984556f82054bc556e7f153e0cee39ac8fc64c8d51857fd1eb2462264c456629ccb26fc30168c001182000010840000cfc37e0043240410756309e010420c0a1c24b1e352ea8877495c053382ab22659b1d7ae61884053789f2c6323d6841cc2054be1631cee28bbc32829bccd97367cfd5d388eea285ccf1453822787c13534120c1485f313eb43667708a99141c05038161d24e78cb5fe490282c2491355d9c1f959840437f842066604fc841f9fa167e968933ee509ff51e798314507f128a89d702cb64cfebbd0d9eb523b20277c98398688d91d8bc7cc26bccbe141869d3d9af0522d79b0fe960b3196093f35b5e39b5c95278309a7cb3ea30e7809ffff3465b9a83d29394bf835e1151f29e7aab10f2be136aa160fe14addc3352025fecbe0ba52b28e9d0027e15caeb8e0a0a65b638c0428092fa26543cb23dfe1fa136c550123e1d4b54c24c9f5f2af2d0021e145cd5d0f3d4965087c84174e42fabd32de2eab41a023fc961cd4da1b5f4e0f35c233c97f8d728530c2b506a32eefb9638cba10b808373aa6c5f556dda744115e700f71ac61c942469b2030117e6cc72c296ef6512d44f8695d52f02c39c45417ce031ec20b61c356fa9a9475493ca0219ccd9d95633cd67cea0ab010bee5486ddbe1d305b52021fc697c6134d4c62ced4fb0655040a28083f0bfacad2ae547df890109f01350178021a020fc9ebe09cfc6e82be7dc0103e1a35895dad01c867c0808c72452ff96879b7535bf807ff0a3c6f4307b5e0fde0e2fa01fdc148f32c68f4286d9f83ef8e9fa2a58d44e1b900f4eaa71a41a630cab01f7e05b4ef3615d3ca6871036a01e7c3019784c99a13ee79c3c38a92754ecb29a4879d38078f06347787a88d8bccb25c03b381d3663340dd301b48323514ed2c29727d832c3052bb8c1784111b00e8e276fb9b7ea0eb68d136c0d01e9e0c318be619f7dc3dce609b6be20810b8ce900e7e0860c22d954b67f327a82ad18bcfe0c7e063068811b00328172c0fd552c3240410b54d0821990e00666fc178b058c83b32621d584ec0840000210c0030358c00028908104fc37c03cbd02e1e0a5f412793ca43fa56f70b3fde5ec93aebdbce306b7330709414ae6be6f83d3696e272b0d7c629e0d3e0c591d530eb5d99135dcb1311b934ad4e0a42b7b98d271c65c9a34389d2334389d83bce46ef994927206a7353c9a4fb9ddce2b66f0fd71248ff29e327856b361254506672b877c912b4608d918fcec2987e059c63ba4c4e067ca90e5f1b73d530983631943c91ec3669062c0e09987ead09b6a21ea2f789abdaa1e62e20527f4a650ab1cd205b71f4dc8f0e83ba490c1053fed318c1ccdde8227f218ac05278966181997b3e08d3490b568f93f628b05e7563de36493225da257f0254334b064a25511b582db2863ce1ed266e3a155f0f38fcd6453a9e05b5f5606c9814a6d3a05c73ffd1e5ac55ca15229f82af5c8c5420c13ea8c82172bc7181236a3a830a1e0a96a9b76c48414b67c82a35e39df5fcce2afa513fcfc7d6aeb40a39b954df035e4c71a4cfaf2fac804ef2393a954e85e79e0127c1c53688b1e1bc28751093e944849f2e528934a4c82db3977cede2cb92d8848f0debbaae453ad63acf1086e56ec0659f1753d3182e3ef3397ca52b8f7ae08ae6df94b248d61293b2238679929da9a4858c6109c0c2b66b056d127b82604ef6263b4216b8ab0c982e0a75411b2efc32bd5050457e44b4e73593ff024564697962603cba00f7cfce999963da6a7a517bec563748f3e656f8c175edfe5eccbee2952a25df86942e53bbf2465e1a30b273cb6708fe6910b2735c6e1c33bd86f4ee3c275e423e9417eb0daf3ddc2cb199944fb6a5b78f6c953d2a429fe63b616be7b5c588b9d917c98b4f033dfc74ef779ed2a9b85f749352daac34c479e9385efa1b5717bfeca2e3ae062e1ba45690ce9374f46be57f00216a0e00e070b7f3367488eabb25535ee156e8cecb852944d15dd7e802bf84e2d9b22caace35ae1a67b14339217b92063138e157edae80d1a568787d0afc2af699c71ce95d2cc7a2c9c2a7c891a22678ad54c9d63854b851b437e1c9e197bad8f8a325c4adf29fc1cf3e518292a6d4ff64ce1788e9650edcf95c2cf932e774fca48e1448ded9a31dd1b85237e9171a6b16ae144e183d8d45d123d62b844d370a170d4b7f3844ac58c9466058597353ae6f2e47dc299dce87358c9776c7f9ef07fc2c6980d1155aab94e78f9277c67d022393b4ef8995190702dc14336f336e17466b2cad1efd384f711d66fc173e332e1484b7bceaf7d3156d032384c7851be194f26e9b5754fb0751684bb849b59b9ee1a86344bda09b6583003e6c159c28f91fc40f3ab9f6ace09b60c095a8002133c411c5c259cf37614a7a511a9bbc151c24d29f44a4717ed26e1894beed0b5fea56a3949b829cc939896dc01abf073a39b3c394223738f2a7c9b7099518af4f8ec543857e944925ccca6c8a0c2cf9ed72323d23d85f3bfda8d362ac3fcdf9ac2372b6d60dfb3b19e3ec192e00b19bc805cf085e696c29f9461370e6fe12a34a440be2b2ce4cc5ff951f8a61552a489398fd52e88c10bc69f806945d1842029f7a61e0b7e3183f25fec0336146e9094b4ed06a7aa0d50782173cc0e11320ec9d34f386bc95187b4293478d2137e58ca8d3ca22283838213c480046adb09365d739d64989cf0cfbdccbe3504ec26bc13c930f3bd59c6999a70727cc68c19e3c32f2df8e2652083f10212a860fc1704371394aca7918a86c18417c2afe6bc39cdc9e65cc28b359137c50ca5fe2a96f0cd3c5786c9a06e9253093f4ccc23ff9ea4845f3ebf769161842927e148a7142cd362347f2509c73324874fc9f3197d24fcf7536bbb7021e18a7a5b45fa9f53cf23bc1497c9f2478e702d63b6b0d5d40d1c8df07270f70d973384a8c9081fcd5a4a90d011a12d8bf05ac66f8364aa08ef32e3d0a9368970423cb628218dca7f10e14f4d5bf21865c241c6211c4bb2197a46de105ea9b66cda14b5885d21bcf5a03d298609e1784a475af39d41f833d15182552d08ff62a3adbb6903e1f8386cd1d4f4b9220684232ac9b1fcd857cafa0f894cf77ef03f4850b954f954b1f6c151c9971635271f1cf5cf1c43d4e41ebc14c3c9a4eec96c51d383133dd59a65b5960cc53c78796a835b8ec143882a1ebcf990c5b2b2e243bb8367dde173e7901d5a991d7cbce2338dfcf346eaeae05874091d3cff9442ee7e6dc7aecdc1bb68b3a5f931e4e0a564a22173acff60571c7c1492a61c63f8f4535938786ac143a6b52af99c37f833133ecadb9fa9e7b8c18d5cd7e0dc34ac41dae0ada5aaca6a9b3684880d5e54b3fca1ae6294acc1ff5c6e7196b305b94c0d4ed218b59861747f3b0d6e87b98cac298306bfa6c33a7b4db0349ec14b91be1e4ce8d60cde68fa24ee3065f545b765582b8a7bbabace6c60206083372d40c117a3052850800c58d0001cdca006485832b8112606f90ec11bc38a418b61cc643c6c50c906360c4eeecfea073369ee6f30f81e7286eb589b5d1e7684fd82d560bde08c7a8890be55179c34762a5e165a2ef80d335a4677bf2a55f218760b4edc6b5c5a4b71b9cc09b674001a70800b4c9080131417bcc0bf051660810bbe680006084000bd0a8080040158c26ac16fd0b0b562f26818fc012ce0109b05cf5289d6f5e7349db662c18b78943699bb2b40c190c133e0bf0175d82b78da1923ad183953ac15bccd696203c970010738b155f0b32fd671e7cc171a0358c00230124b0527db81a5162d4dd08244ec141cbf071163225a54b14c0f2b05377b7a370d2af3198ac5878d821b551ac5a19a464b2928f81bb4e543e76c186388ea0efb043f95b8c5c49ea855e129d609cea79a982979ca4e6c137cd190da63aae076d72d6299e0ab660bdb61dde53b2583188c09ec127c9f98b29da69a11ab042f53e5b81abb069e7192e03dcaca525b23c19918a2d895a763709923b88dab6108991ddbc3085ebeb4ac718ea6d22745704e32df24073311ba8ce21d43f02ea5e020ec2a32305108dec420275f194b2c4f101c7f640d33c3dc294db58b05828fc424a4cf6e318728d81f78934cfefed53bc1d6fac0490f36a5139595caf109d615da0b672dd465e4b06942fcb8505e78af912a6ac63c2d7417cba41821d9cf545df819c4321ec61c124ea583e662bfe4e939a3ce98fd93c10c5869608ad025e5b8cc241359bb6581dec2394b375e3321a38b0e5b38a19549a543f95d4e65e005830524d85af819030723a6854069e155aa10f375eb889967e1bf9ba64669c89cdd809040065fb820060b0295859f4c267c86f138c17e418217fcab8004672ad058781b192e2236eeb631b0f07b32c5e3e0d8afe37136027d855be929858ccde30ab71e3bcc41bc6f85afc9cb65c426871433ac70430ccdf090bb188f55f8ffa9227f259b51165578f7ee8e31ccf8c427a9f042e8cfb0b0b8e96aa0c2ada90c52a2a54fe145d330c92a368593432b58ec724be168d87649e17f4c7f9c1a4ae6ec76149e8d65cf4bb7d8ca2a0a673397b84c87cbf26a289cb3dc39c25bf8dfa8a0f0453355061fea279c3495535bb265cb1c4f78511baae7106dcfd0ec84f325fe9e1b573fba70c2cb6ef5affede26dcd290982743a70927f643c7573949c660cb849341aa08963ce63ce1c2841b9742394e9d4b38b32e651316a925dc0619a718bf8bd93868ae95f0d2264bc5462bd6b6f24129e1265b9fa4152265ec9d9e842fda49ccdca1c30ce29284675d26a59e34d2a7250d1a093fbd1f07f3903b66ef760c0a097f2aa5479651ec118ec34a4bbfabe09223161c39c279edfb724b13b43ea7116e6d6bb4c79f3b37d630c2edd77490126691d3b208675385484fe9bcd22c8a70a52cdd573a23115e56a7d50e0f5545634438d519458aeeec219c07e19a7932caf86c13420de177c80c07392675f557082f2afc6ab86984f051862e1e3e3a0c91d520bcefcde358a4fa1e8304e16948139e2a1b26bf27105e568f901d6600e1468cb24f7e3985dbfe0f5e8887bee94d23bbec071f5408b908e9434cb60f5e4773f9103eb87953c5ce5fb3073f3a4c0e600104204091a054a17a70365b47f3280b31843b0fcee4889dc3a39bddc3281e5c9bf5e86f5adfc1ebbeb56df49ae1e5b583efa81e848fc3749d5307bfebd743c80c33a52a1d7cf039f8c534ff0956cec1b11799b28a3969cecbc1f9346d52b1222233c6c17f18993394b47c9e378583e7d1f7d2198c58cc287d0331b2bcb793eb06229644f6cedbb6911b9c7f6684ae92433aab6c70c372e6f033a90fba06d7c4b378f0183da81abcf1142a40681abc9c1bfd68feb19c26a26870fbfc62dd7d0420809ec1094f5a0dcdb1755033f87d113c5ca7e5a065f06366c76555f1e29d4c342819bcb7f03bb7b7f590ea0632d031f8314fcda518919184eb102a06277bb32d9c879cdef209b6d006a001070ce002e30bff62d440062d40810bb2340cae865023d7c842442818bc4dd529432aafafef82d3021458ed41bfe06568e1410c96b11dac136cb940062490c1c7400631e833ea052f3bb55f1dc378f5f50dda05473e63a4d277da91473728171c5f73104524c7863eae41b7e0a72c4d23924a6e6519c4c00517482df8969d1ef9852899396d2706cd82eff197a3db5c757834161cf1cc9b53e3c9f678c361d02b78252215eb1a5c84c85bc1690c2af5e4be54c1cd20d66d2c9f938c6a2af8e0256d632f0963f99d825f6229b52e7aab67530a5e650eef2ff1176f6314fca025f9257d4bb3040a4e46121da6b43ec10d16a646fb5cb227cd097edd5df40ca4ce2ae434c15f8d4c66d7284c701caf668859962578762984f86910330e132578ee9ab339fe8e922c2309cea76b2437418267aa591e47cab619ea113cad49a6dd993282271b2be4f88c2278216d1ba6168bd020028312c1bff8d0672953c21c6698abd20b3a04cf325eb5c6216c8105fe051618c0021470061582eaeb579331ca4eb075835701096e40484026832f3e062d40356810ec8ff93f3de42cf95620f8a142453568f0d92e2de80f1ccf31fb038796c35414a03e704de32ee3cd91e9d3ee857f8ecbeed185178eb5a4986cb298bbe0532cc58c65ac0b2f324619639c71850e3717c6bbbd4c99bba9a68fe20412178eb94fcc75a9691b856ee17f08590ec237e8f4c4e08b97410b2090b6f06175e4a496f3b5f0caa38f048d6971dad2c2ef8ec8da369741276f169ead4cd67e90a13cb232e0849485dbf3a0a1240f21bc5b4ae12163e1e491096911aa324a242cfc939c4348d50e041630000730e009f90ae79138cea6b2211cd2153ed47e14958346a4cab4c24b935103edad1c7119ac705423434dd963e11965158e54d8ccf113ae35e755e178f615759ce554783979a669fb07010820874485ff21a2f78791d0f2344fe145ba4ae7471f61214de1cb25cb17fccbffd5a42c858f6a82ca787bf99a0119fc173220a6852485f3e062509354113173cc841c8523fd1f52e70be92a4414cea34b31b45456cfd1134286c2c9ba881ad382da8be5020d0a2f39cc7479c462ada52df02db08006fa13ae6b9a3419315b45115d069ef07ec2c3fb854ab3aa7c0b36d0093f2d4ab6c98d32456539e1a645aeac49bd4295d49b30f23d8cf4d8644d388f67da53249f98ff41240613200001be78f3850b6883d099f0c543457a2715135e54659cf517ed66cabe849325cab33f2b7537b42db15597aadb6747c9e5c7b12476587827d8fac2050df8159021832f5c7001021080055fb8e020a18b90233b65f69c94f0cd66d4c17a27c711ea49781763b42c6722ff634ac2752cde3836763a127e0acf517c520e0a209169469d4736e347381fd2c7fba9e454ae3ac2edfae8fe7259231cadf9d35c1a41153423bc9cc1f6e5708dd232caa5a017e1a750bbec8fa13347ef02179015b422dc8c3ea58c695ba3e43ac1d6178f821383197c418218a0802b062b40810c669008ff529a8d1029c58e616b44902a2551d1bcd130dc8770da1ed87d76076d393ecf807fc10d3440833684ffa55922a667f43ee209b648700219a0a00624a8c1b740ab10aee5f2c813a983977f02198c0be00964305e803790816113a2cbeaa8bb2d4bb1ad748db64f294ca6d3bce50964302e4000029c400632200001ec053d08e743a61bf96594db6341389a610629889d47e840b8256f139534a4bf4903c2f791d4ff301e7f70ec32ae0931ca7cfadb0f4eae94d0ca4e761f9c343d9beb525d57a5f98099b9ca4446d6da7564c43e770f7ecd868d1939cc92ebe8c1b1efe9cb15ca26a48c3c789b793248455d0eb1361e7cd478a2590e973b38153edaa64eddb6832f31112634964a1b235d07279f65cf1945d6ba8daaa1e9e0457bf5cf5b1936fbdd73602dbb4cbe4cad356fcf35b69031c81c185a0e6e9e1a5bf5749f2778e2e0cc688e29a7e31b0e7e0a198f7bda8a6b34cb00022ee83778e71ee2603e6f837f000b5cf04503dce0953bca46e7bd520d7382adac18547d2183185cb7c17928a1c73a54fb952502cd06643e44a342a64d53eb35bc2d558c555446abd06b702b470669538ad4e08c55f8cba9b34e8357eabe9a62b34b82e241a3c1778952d79872d8469f3e835b0fb2c845c6b211d38136839f516a30f1df29e542ac037419fcf38c2a47830fd3b9800524a0010acc6ada06309b0c9c9659499686b8de1493064a8fc197cd413e494619645c693178951e65328bc6647776183c3b0f4d69424c8e301380005ffca1c1e0c3e86f194af7e66c321cfa0bfe798c31a5360c8fd1e4437bc1c9719b4522860c1da62174175ce9bf509b341d45c39a0b8e89c474aa6be8141a5bf02fc6d460a1b3ad053f2e6dc80dfa6e6db29d85bebd55d32d4ea4bea6c63e9ac490ebca63754d96ed7cd1ae265fc1f70696c27430dfd41b40b415bc34f2117f1e7615bc4992afeb6f3c2e639b0aae46ffd60cab26dd834cebd053f092250bd7a8f23a9a54069f8196821f7129fc2201d6868e821b4635460ab9464553d6d05070bbc26cb56b347325af9fe074189fedb4102d5ab973682778ee32f1133329a21fe38b71011b7413fc937e4992b5dc6682f7e26213dfd9226a3bc1165906b87a09be858f6a1a294709cedb0633cb7726219d2478921661a2ac6d6da691e06c1af11c36ac32b8fa084ec8ded3387ad808aef57fd61c35b37d0617c1d50e5759a29444f0bca53f926d0815f586e0a5477f3c12c25afa08c1ef764dbbac06a9371604cfc51b5d14bf09f75503c1cb5c1353bbd867ca1497a17fe04f0cf996f694551ba4cdd03ef0ce1a9ba4e49414824d06ee856f315bb29ddc5a280b0a5050cc99176e374ec9e3d15845f6ecc20729b4523ea5c8e0a2ba70f2c530da49836d8f24173e74b18c5170e0c295d3b2983ac99d6ff016ae7796cf6a058d5d9b2d7c0d9edf431eb9bcffb530653e4768e1e75eb74d99c2b36025e262cbb2a6332aba676d2da6f3ef64e1672c1e15dd92fc232f16ce65e03866e49ad3be8585971936b2d33ce56e617e859fb9619ba50769ec1e5738d7c025bf46a4ef07722b9cd83ffe1ad9d0ff1cacf0cdb4d32449b95578a1baab518c1c33fca60aaf53b2b5481f5306c77903a762f0c9b2e7caa89603a3c2bbabfc613c03e9143e96986206cd0e627fea052f18a6f05a2e3d3c94b7a8309a814be1bf439b4a313d76259f49e1468e97b0942454a3703525896e93c72a840fb2289c8c1af972d68c4371ca64cf79ae9f41e198d979494fda49dffc09cf3d976d7c8791b8c09e7022d6658fc8491a4a783be16cb97cc6b8c29cf067b68204eb18336c2b068537e185499a1caaa6dc51df6c604d3879a2564bbcd2c764a1800528980067c2cb281623524a5ee9a7c30363c2b5b210ef9a315508365fc28922d96eed1a51ceb534b025bcebad0a7d16c28aaf5c09b727c60e19d6730253c207b3295ddd864a9a734ae04978c122a4343331bad88325f1662cf9824d58e84747428d1e1ba5b5e4136b010a580089c4b7c363f173f0234aa952be317804ec88e733fc7f2c8f071ee64654de5d22ebb2eda91eee7da5629a433a66849faa1a23b9fcf92b3343e045b8b6e23835657a9cedb3225c999467aa7beb61aa7022fce49acbd187f81c838311e15a6730a129e30fe1c9c7dba784c5107e68bc25294838ac3c29841f3b330c0d3badcbdb84f01cc8794d37f84e9f0771c7a5f6b02cae201cf5de8acec1a7ac0f849f1a35aa464ba4081120dc4c2aff1fefa919cf7f70264da6a670cd311beb073f64ee18b16dec839b2b030dd3e893e6431f603e38528ec3cd843c6529630f4e477bb3930be92193b3f0f0ea9a4fbbd0fa8676d5ed99474209701efc8c3437bead1bc078f022675f74712800b4c07770ad4190feaf9eec1bb4839773f2f8872a19a48cd5c1f10793db436620293b58603a78a7397b76ba0c29f01cf8f1b0de2986871c3c15910acbd12045c6380ede5f7c6a7bf965108397810c120007cf3dc48450a932acaa33a0057e837fb153696e98a5410b2070636037f8d91da4680fdb16a0400261e036f81b3365309f53e34f90001738800d6e54a6be89f2c802afc14b179e634ad9b8330c13d0055683b76296f2a44bcafcc02f5cb000d354e034786915226362ff8219b8e00b077014180d4e63ecd9e4f30a053e83eb399c6c6b49f9d5ba053683ab1633ca5eb53952ccb5c004288841961606b80cdee5b48ece6bdee49118038b0093c1514bbf6116c2928683c7e0dca6863d59421383e313b3256365340fbd0187c1cb171b4832879a39a32f5ca034a80283c19190f933ec1ce92b2d7fc14bd9f92643c6602ff8f7f93eaa1f4489dd110377c12f4bf5217d50c911395cf09283cd309a5ccb5d7e0b4ee4f46bc1abd4e96a22a6742137b2e04486b9a35f9694ee0616dcec17c26914b9496b5cc1ffb0a5a5d9b7822b5f2187b10f31d17115dc185cbcd3d74a048da9e065d4e51aec29f816f15f41a37c8ca14ac1aff586a1ea68834fc951704336481952c38cb68fa1e0af87104b1ff0131c8979e31ed4c4e430eb04533a44546e5455accb3c84e99e076982e778726c5af850a6a11e9809fe49ba60556ae2a71a37f012fc96a9b4feb51a2bc1bb3f9ba8871191e5e73d7012bc4bffab7922cd362a7560247832339dda2d1fc17bc7b1b161d509b011fc1422a548991ce322b8594a265a0ae1d6dfbc021381aa6b9558d3c610dcf458f216c472566859085e649cc7189f0e82972ea949b444033bf18c5f41ef8081e0dd652e15cd97ea1de4074eb4981e457606fbc08deb8fef160d72312468236c2fdc14e4c43afac67cd6bcf01d54980cd1617d4f8541d85df819d604bb8fb9612c892e5409e70e26a63bc1d6e6c2c931fb52c8e359edc92f3c1717bec7949375564e154e2e6f5cb080372ea8405319606fe1a714826b7d6768616de166b11cb4b26abe183c0420c0f98206e70b1adc5e616be175c567f9f05241738716be75ae8918f3eb48e99d85ffd192f6a58478982f74bc200332408102d05a305e1003fc42062f900555570f3e3748afbae002b1703e539e28517360e1f57f78b97fbf4fceec2b5a9f3009796ab386d615fe78f0902c8302ab32197c0cb6157eca69a6474b1945cb7fe10224cb0a27d286501a528a5913a9cc6ef0850c5af039820d8dc4a884b084025924140804e280388a61b0e8f800a31308001038280d4542a168341145550f148003522020422c2a1c262618101a18128d44a17030180a85c1e04018140a8702a1a089b0c431570725dfd8a894a05b8acd0826b4f06fefb46bf4071403f0bbcb34e8309ba499b5787c0ceeb8086e43b1c12a4848be5fcd8011ca94345e40e68f1be4f5c8a7b71b7c572d262daf3b536139d27fd6edd19ac45b5bb00c8870f163671b76cb6b8c41fca09b49be1dc9d6a6bc0bedc1e0ef38b4819c0b507a7f9523936b3bf164b536f62105dcdc9dc438b5c9fae2c4e40a7053c4de4b5b3e197fb05389446aed2ad1c52923085a26c7372e053fa25c79b7bc6f28536c9b0acce84686099290bfb740a252448e34d3122bb778f40758b4ba9d490b52c462dd8167438c858074aff6e0a27cab773c1ecdfad3c057d999ec65e247893254d14b9ca48bcbb036373fb1f183d4f8e103fb9f09cde0a75235430df23ae3f757353bd38e7c2072466e39fa9b6fcfea9b4c9dbdf4b9258e786ff770b2c6f32edaed785fb4f46a9f93a919d3fbf05cf899fd87a3893dc9cbd343bb51c2da64829d379d6082d5ce31dc83c709fd545d80d9f08da41289652ff07b91924e440366d2795927a4800b2260c20080aaab2a7f2f4f93d844e180d54333911c4be3bec10c5b33329b7d8058a1f9dc97ba30a189a5d9ad80039b77c00ef50bcaa881cdf4ea1681a5103f1d50f31c0b91dc3126209b20f7296e846edc3e4dfad56491a096049d595ae41e9a6313524d385867f64f87a42f2e6cb6bcf0b511c31746faeca26d39b90a201afe48bd1294a123ad46e0271f34c37e82ed9ff2a2a9b1692473ba5d16772319ec102d6385583cbca578d62dc6a5ce7a65be29be8161eddcde56468ccae2cf82da33712cb09973a2c234f15392d408fe383e7eb0e09ae48c9c5a043134f9e54353e534721766734767d796037cb5dee1cface38d8fd7cdb891c0f955ccc625b75f6e49230a7358fab3f744bf7db0f464e8a1dddf1876de0aacff5447ea373b6f0d32321f6c6f4d4160bc7ff30ef39494fd498922cf358cb413aa35f995c3463bbd500e39c4fdb2a41eada8076eff05590da7bd0f42d1dfc2dce68eade6cb14bb26feb7f8fb92ef22f9b7d0ea8b427960e2860b628ac9f3ec30053d968901b9bf9edc80a8ce5df9fa27a98b1113e630f73ef5443476f2324f851aa75b0e9f856ae2cdc93e013439c4b7d32a5a1c9b94047170c7557e83311dfe39465708c586a8345e428171c125beac92d55475e15c1125ed3ae0b4218630427e560f114dd387980424f29371fbd9cb609456f002348e3c58f3a010f80b7a6cf0275d785b5609ae8a5746b9ffab41205cb607c8cf0c92591ea66d484c068dd1cbf31329dfd4bb254d2bc827685dc97b8833eda34de0686ded6adea96ff821df2a9125a44bb9e65786d1e609beec8563deb97fe2f3e5100a02ef38d6491078ff743b31519f0c312ba5f5d23a0d9b308186d38b517d098a0786bf38066e6241cda78d2a977f61b3fbffe2e5f0ae9afa4799497c8cc143c4a75c41aac7636da418f9f14e027f8b704a0272de9680f02b4c7ad257f022662e71ac75693519adb424a689c7945d1559dcd9778ed3bb8a3eb257436014298d959fc58c94783435b4b759359cc0d4ae6f39675d14ab6d9e076ea5493c76efda5a811696b0c70812e5dc1136d156f12716e41e630025ab64d9b96bf98ee3fd5dc6e332dc1e5417e2d0420b4e0fa23d8cd04973d18c6682256e46b7d85c2fd72a2411aa1e45f6d91dba5fb2246f3b94892cea2320d9bc5281086b0a120e82c8a091cb348e8e2ea4277f7abdbc693272f65c139c197c960e56683979158596584074b821e44d45fed8588db855dc17859dfdc22e2b74ec211cb36f7061bb6b09f5a359901ed52ff623451f709c6cad3cce12951f20e2e4e9053e54232858bceada6b782bd05315714f558c3d2f542d33df80b9db30d0b5f34fcfee7914946eb6a6a1cac56931de682be808d2dd9a127324f7af4568027fa9c97004d133c72ebf6923a364018d75320b48cc3f2dd84b8ef7e8f9ae5efcd746583abd2e5a93d2b31a79308b0a1405735eae4529ffc9af8eba1e91b1f8a7bf6bd1fc2e1aaf956c7867fe9fd6c529867ee4e6ebc5701a3e3fa221b10735a406e4cd07160d431d874b4d0cb0a91d2f9f1c3f0f1add6a45d4f26839c050994f0a2f85efe6412318fd26bed8e7040aadbf0d7308ad96b634c4922b39f6370b6fe013183e6a0d8b622c58efd6297482accbc6c0e6975d3228b6db3cfc38729cd1598e36e8744fd3a40b286ef566bedddc2875212bb97c3018bfdb79d58a66e66d149c4e681220d77366e9c5e7d91e579944b43f26d6bc2b09bb687e663295115438602eb73c8044e5b283e4ac2ff9a91ad640ac0d1401cf9057dc9623bf5e3c4d0b9339e953307db2f5b7246dc2194cb88bc4eac9b8917ec5f63b56df0095e458b9481ad300068dc7960e1ba05a0e2297d594679f7ad9876993fe3f849e32e07e86fb4e99fda6be9bb86c238f47ad1b46f97d7e13aea9b05c443d963d6ede1ef216e0b6cb71ff7cf081072ce7991a5ece4fed3e6392c41d20759fb192644804134748a25709999da173ca4467cd19f44f739ebdd643094fe117b16f8d900275c73000dfbe3967eb819d66b9a8a8209bef9821459422a1318c124dcd844c1c46e8b97496fc9a3a0a1d7803d1b05aae07d1b401216f1126769c028f2d3fcb8ea7122918e509ca8c1b9e813c4ef687a4c40edbb8ec23a59c71ee8cfcb8441f9a5ba6bb91e29484073a0640c5d119e1568306e840e7695356375ae6a478469a589d7791310577e32fd5a193aaa282529de025135140aab93e674fe1da7442bbf3244a7718e587451598c74567e14700e65bb4682ff314f9c8f8e3882342e1b7d0e9469abe006791ee3684666bdb281cddc52303c1d85beacdde13af5a926d2657275e92bb47e05d05ad53736fe9fb03333bc791b559d071e932e0082fd7fc4bda2b936712042efc3b255cc3402ba656c2058401a20f462f009fbd5b8495986d436da541638f38f367e11a38dfc34a0103fcfc3e79eb0e1d01873f2ec13e7f2e35813c92154b6918cb253334e9394531742aaf9ca304213e0513a66c3dcdfed80b4f4b1ad0a3acf8b7030839003818ba9f9f1e582d503ac72dac4a7c07db3dfe4ce4190922a7bd1f0937b387b6d712bc8b1fc7644b55e822bb84a1190cc4cff1e8dbad8fd1f3d32d7504ad298d05014fcba5b0952783e9847d44b99a2205f7a3bcdeda6f48117e885bfeb164ccdbe25292f700dbd4c1ae89121495ba21931bc16b9293712999be8c279ed24eefc24da38fe43ce79204e6dec823b6c234fd1ae96648890778cb0a9f4e503abf09bc0535d9b06be490bbe5327f5fcbf85f9a18cb2c7bc38b535f136bca3fb675d1046c972a6c01ed9b67f8b8167c1341ce8b97bd27e075bc9107e6b02fdebd390d8c9d25a58a548bb552a0d004026892f061135b7058078290f29761e27697cba9d74259c86f5749d5026d22f70b2aca8d5788c698d8d8411de55e68d7f8d0ed545afd6511629c5a740f7ee568f0457a218539c5426039a7702dee9002ca64a7f6c70d7ad43b3104338322201274828391375a6b20187355570b6ba4fc7d44048d824444fba87b51478a1c3bfe5c9a816479e7918ae91cd27a6db11673f2df01c3961d6cd7c7a1c9c15d166409e7ecb671d8961a0c83cb595b82fd57b84ba1d6d4d260e4848ca413ac67af54cf01ab5bb75f5972019d4723b743397da61950ec447736a59569b41a14652a0ff5b87c35a98f18b49ee911f21cc24e6d346fca2fe4a13832400e8769eb961d18561c7a825e33b9dd1a8873c5af6a92dd13f31252739802e6e4667edb4cd8b81597255704a6d2dddccc64d0d737e718907cf3c5d60e8219df6b94dd547ac8d14be7228ef2f4c4caa66cd6bfa319f378c8ec245817a6caa4ed350293fc0386f0098cb1a09e3128b53de0d95d5028d023b33d38a9ceecb8ae0526e4cdd49a847ee9d1fc37eda02a60144e1ca0b79b7886d6a5d860241b6946fb648e5d1ba9ffbb06f35039a197376d15cb0032b3ff3d5f05b2dac6001051ff120e563b0f184a0e10aa19f41153df418536eb8e4cf0c5bf0f2aae8b46e832d31e6cf110133730ad5707d9ba855b979a6223cf5cdc9748afac3305928870159e3d7698a608144f1460c47b9eb74f32a47450160a020789be4b4dd0fd882704f21561d63c5df34e940312a37d8bc2710efc04794290ada8dacb9747780f0fcbcc00cb2a400084e1177164706c673ed1fc4b2dd8e08f370ae6c24ce6517da9fa5ee043986506ad8a4a36a66d61bd8d93bc99e53b5bb032451582a907b0a99818d20270713ba17240043478fa434844bcc99502824b87d5c093c9195685213698e868e22fdc01f2c371a95f419685cf3238a3d81dc7d9f91204b137e97fa97e27b336858f861a16c010bc867bc2f50dae7a157043a2b5f501904470261d28024e4e40d1f434fd624cceabc457b3aefac45d85cfabc57aecd5f5e3941c5503a742abb19fccc6e4f74b6cb6c4abfa41751bcca3c6281c371086dc8180a0264befebc25d8d000d104bad14bc36d784750fd03eafcd0279f56514b14dbe6d3bf573f6acd866553f4643520e249e0feea3c47ef088f230dee7403a596fd32b2135601a4995f268df40ae6d51442b62cd794da251a15ca8efcb9f35a096dd438756fe6fe845aaace485d2d8e009a28ef023e14ace7e09bdd3881074125289832f63a7a4407da4c2c6aa53a207037fa5148571a07c7f21689d21a38f508d919c9acba9b2300c51db8c0285432d77d155bbb2afebb7b2ee7263b381d9b67173720ecfa5a808d5623a6d5ecfc766c11865f1547acfc85e87e56059d65a4857a8f9c269de37ad06204a9b507550562581bc2ddf3e9ccbb3674303b92c4bc15cc5e601c1fe83624045fc9bc066752e2bdc6b175509e2cd8567dc419284f62f03f46ae1b0c2d02276fe28a37f4f6b116b5a7c64997063df52d3dc46d2081f09f74b1d5d40ad014e30b3d22590bb47488cca815377f5edfa296b5e3c3c92f6293e206bfaf5ad7c56488a04c1b057662c98186f631e289567d904bb2d508bac0d7a1e9aed43beee201a43dec9130d9c6aa2f4807c1ba7f1e68d85c82d6fc096402b7432e4e47ce7e5927abcce79be0d6a527b5944c568adcba0cde32c2db225a91d58c49f3b803f6b92a4078cc0821040a8c7d17957ef026398d97ce71688f168f601aaedb79fbc36306227c69d73651370c158e1d13cb64104ff7c9dcec9ea73ecdcca26346d82d70fcc44cd4e20c0da68a9b0931782be29ea391f4ceb19e29ba065b1dda8f00b78baf1e071d18941ec3b54c777229732c0a3e4a062cc9cde6d713c46d8a487383460074a2f95d43e9b3181b8e756645393ef464b12274e20718a14ecc47d6b5d785d1cdfee90ca9d44711ab06850244683ba8034a8ad1c5111f437541882ea2313646614687c9460aede690614b96c748da692bd21660f0b63691bb7b65eb8f355b2d92f4cc739e536744cae28e3d3146c5639fb242afe28af70ef664c22c472d7af7d1cc241330470aeba8214e7326e8a6c9df3832a10fed90d9567b364a4f744408542f431db45782155ae2b5ba897aac94a0e22940b72107ccb26b826b57f59d5f04319b9cf8f3d42a99bb565af8f49c532e8a16c58c388bb0f0d44b1725c12f3f6ac3a9a42157db72dc308d847892335dd913d48ecc2d1ce3603e7fade8c7632298c6a71c3d1aee483c82bb91c6da6a3fd1b0b0f07a218e16ec495d188464a0fa37134bc1efbf18e3e421aeaa3e82369b74b9b225ff4462bf0ce709bbb8c986694dd1ced204d1084ee483b56e3a8fba5e83fbb4fa8e23454c4450538a4948870e8f95391da679cd649c93076da9325b69a0eb3b13e952991f2c5dc68d5900b655b4e22cf402d5b6f220a1eebdb4e37632c2b3ef77b95aaf4ef660ba236d1431fe597aa7b00dafc4edfac76bb3c95fe80ce8ed707fad5927d42a25c2998d0804969487c90234b0184b96889c332740279c5eeb467e568624b99be4c2d2d3b56fa5ec6a633450127a2b82c5516de01ed37ea9a53053a553082678753f400864777efdd3c1233cc7c2c129faed1684802b91ab9d96c5c398e94e0245929f3d0fb7d1d0e045eb6084a5a2aa8960aaba65df98bf5b572632cd836b4fce506b6fc7a5d2cffe640404c1312b4077c81c4885da955dc2fcc0ed0af655613e2d9bf6af1b721c44e9a7a753634d988847a8f2dd53bf6ae35e15380155d22db8e57068f6770f750ef6cd01cbf166923b3e46b436172109695d23492e43907004955c2ddb91c1143f82f80a7bb91fe13c4df44f06199e01876a8b01fd564b9eb0722bd4cc1eb65802627241d03079bb1b281a5db81dca780993d0bc9e256743fbc830fb34191717e2b3edd2ec61ff1e8eed902261262d4db67c5d04461873288d1121897546cc2ae2c3bdbe8feadb3f2287480e08911f8b86dcc7bf28bc0387148f94436a47a173b1b410b6e6616a083b061d42c7eaf3e12ca4bb464cceed2528a17d433646c89e158933ad01dadbc2321a471e316e34e671e183e48368e6f894e2a62ec8ba5084f0bd9baeda5c05cc9a9ff9a9e37a8b6ce3a68ff7a74027d344036e9e350b4398b72232de379c33b459784d19e762cce7c89ddacffda67a508fcf71e599e2905e528becd86e17a9b0b122ca4b650656644a98c53b4688258cb27ced9fd133f6eabea54ec96c6d01867984e54b02fcaaad62a3f1e44538ad5e5e7c768c0cc8f93071b2f5198d730a60053d17438b26e6113f2c2d31e8be54e494426cc2775b0d9ad728877533a1dc25e86c55419a3623a64c08ba5deb8cb5cc668beafc5cde5704dfe9b648a39e8560fbf1b2966e1d7c6f535a92a7035d1088a0318b5d8cdc058f653c3f3163a5dcf43939651fbdb333fc8090d3e51bffd15b7567c274d31a777cfe67628fb5504d0262a092074e2181511846d6b55d8741c1188a2240f661155fffa99f28bfd1da14e457adba8de37a2baffcf0a3b157ff234c0072b72de09aa12912fc247841891d58988d608cb2b49ad6d6e4baaa59c0fe2c97ad28bbe415c844752501ab253f45ea4febccf8370bb084a2249c7c81397ae182a8b7c3b4552660cb9ac26222911902b993e24a9b53eb610aa1344305b0c8783631df7883fd1f76942b844a2cb25de4beb6e2e23b84f657d998b59acbe488ee998e27ce1cc9334716f1c90331cead8a0fdc729734353ad7fe7e824f0a92f7f853b774fefe1657b31a855aa22ac07706a797229e250203df4b12415fabb250b6246db6c3bd54bc3933bd166a1b77a6b9e29edcf54507cd326d8fd503e2e8461dc62946b139bf62c23bb53af7fb1d1e9506df64519aa6431b2e30bf9512be8b4a58823e9e41af13eeccb51edd0501e06fe9f5817a0732ea9b7dece49c388ededaaeef6fbe5db716c6a86ba60021a8f4c6655ae35866ffaf820f849ee5f10679ebdbfd5561498fbcc585f3212f309cbbad063c2f48573b9cc83032832402e5e1475695ae60a060b9e8d74dd9c5b0807804492799efdf8bd662f2f0826c51134c942988892764c3e5c241126a4180078b5d844da995b7a6b3cbcee505a2fde17e007c76e8f25107265c4de665c1da7b9d9e04a058afc78ca9ff14952eed2d2d6f375487d4ceb8227814ff234d05df9fdca4bea62b0d190112563de7434732dc0cd94178f197fc4215061e6384f104d7170c599a337f772d5a0bd88b44cd071a3e5ddf8af7c4c60bad44a10475a2aad1552539f96b079e2cbbb94bbf6417a3eb222f196f420d47588684a93d913034200468b4c853d8366a83288906b17b52163874069747c84b31c4170c4012f50f73c8156bf3c278a8c272c0489d42b17d1f2f76335eb43bdc19d4e4c0074bd8f1b49e3000354826f0d65511f395ce8027d93fe64f0f3f2fdf3afb16b1e125c8ed221b62c9308c8a50c5fe9444746182c0a8bc4bd19c1de2532531afa34760395788f65a827eefb2e67ba088f0e494e11375b79ccad06f97658e6f91641d91a8c2eb8be5b0df4ca22647f470dd76fddf8982871fd636c5c7daa838294ca2b198908e9843880306fd28bed6f1690a8e91b732153103010b9102e91c9105d104610fd90388a8091909feb5e55540b808001812bd9bd42c4109e9d27f9f638b15f6894a0d3c070c52e4263021d0def1d8d7ef26185c72f61880cef22684d945e78230b51e4eca0562410c409b51e4a24b298f0066ee01bc4fd9073e2bd4b586f18437c1c84dc65b9f20d42149196e9dc5a6043c85b6854484e859e994b32d6380ae2885a851219550fa2533089c81d2fe03514b45d1efe4e6a3153510ba0db55f5d8a7615662cf3f0b33a4b57fa3d490c3d0be2dd6bbe0a5462cfdb4d51e6573961c0000849cf4a63a03eb184430d8794305b14bd64be2e2a3c4cdb7546aaaa16b6a22cc6a6e1b70b1091d6bd6b1006c6980d9ade93d65b4105ae44c95bd17cff87a9696693c3b141eb27d0c828ec86183fe41054520e3151bd8eadba11f40e005e5862f64199610d7264b5be29c6d12c736aa9e85c4ace3e5f082881c9794b1264634f525e5602ab5e7a492671e6d9b8ed9143c9ecac72b2a892b81c46f27788a8f50caef547ddea6fc712fb25003291ea31a4d39e948b1503ba82262100528e51704e7996b6054de0666d264698d4195d1687032ff4a83d08c1603b205cde63ddfc9dc947f20173c2abd5200fe79a8e57f73d6284fc8e1e331a699e3d37f7dd8f1d231c09d075d497f0ce70021667d87487d30d51460b64455e6a34894d4c9a92d8272fd423d9d9aef5037cf7edffbbe9d42bfda77afc3f83e1558ce50e699b4a3ff69a855ce1700c05c47c188067bbe24c898a1375ec320f39cc0d1a720c1becb9b25186bc97b7458f1abcd52fa8e0b8f01568df7a0c14239c20bd58d7111e060054c6c9df25722c9c1605be8f4524c6569c321604c028a40ccc9f2379260d6324fc33e7c9a062e2a3ba5cd7a62df0523242871c6b0fe0708d085e5738d3206a0acd2b0026097f9474423575cab5acd5373d4aef08b57f24fbc357d6dd53f6ef864f26bf127b0f2be1410a8e60678fb22d04006d27d904638cd72d07a92f8eb15cbd9dc445ac0a726a1e6670b30314339b6d0733247d807d1920c0449e78e4788a22e1d0f89a0a3c563e8e35cdf64407b2a9d86fc2f292423e5bb09898ba0bb46df4f8cced86f5b24ae58fbf875121ece5219d85c0d5ee65714e2bcb5602458d0d84631fb97502dc5ff709d38b5aa2f79af7475e097208b455cb4e8e073be1cbbd8601a2f926cc2ec72e0ea2f33e7ef75d19a3bc52452985db4454ea603aa0d54d192175f20645d93e78032dd87b0ec83d648ca560f1d42586489e83b02dd2057638a8c018b558b937d4c4d0b0a3e28120f58e1daba65673d6480c25f373f774e4bbf4e6a56ca087b5326ef2af02d14b5f8a073105b058c781cec450614cf071d6586297736f4815b0e8a03f7cad9397049ec3b68c110ef47f0825ddfc9fede954ff8d5bdceba33b569135e0ebe8d81211537102daaf1b9485d08297927a8b4e62c30a9606ef5a39e400154dde9f5fe5c83275fe4bbafb5209e7184a6acae12073ed621abe8025a824a1c29e4b66bae2d69554ee0bdd1aa97c15d2ce46614b32f923b44330c69b1beb5687031253d2abc90fb417163669c4bdc71998e205ee23bb1e21f85f520d443d1b44d7777414639241b871498b39463f46b40ff8c62ba2416735fd712a39316b3591f379eba7655ec210f45a72acad05bf355cee0abc55604b339eb6bd7446c3f5cfc22ac40b3e5eaf86b28130f311e250b7d306b4a1796e2fb7b0c61fdb82e939c97829e49a0b794c54d8669a682c7f115002256c74196a0e3a3ecb392a3662a8dba6b09ffff68d23165f8a3cb43d21ef8d5b95d6632be8c5df0e5c8b3c0c5c3cfe9991071442dc8ab34eb2a39183c571e732d49c41dd5475ddebdc62ebfd9dfbee38746cea27b9342080877ed1e0f3823925462dc2b87e26c8b73663cf523ae50cabc7aa89b44fdd5f7021ff1284075e92759452058dfe0519387bf04063553a6c68ac4f6074a276c661e5a64592ecab3f00a29e61e9debc1498c1e715c5cc84c1a41498c527b05c361c4a69121158df6dd911a3cf4d9ea889ee84e5ea481705bbe339b717500080d3db17344d0b144d4637ae60c0de36fbebf509ea4881e67fd93c9b0cfc7b5a727549dba72149026fe397b5d1d2d3afcff6eac4918d32489f07e309f2954fe8eda8032a9c1da5685c9aa576746f6552c03ca03d5a107e52b1db517793bc44562e195e25c63776eceb7d2f2bce912b4c63ce2084342c2e35148ebcb1c14f556f0f0388fc47ae1f9b41175b880cc72e9e694a2e53473601d128816ede60c9d4d9a8b8a8bb5a96dcd9bb3ddbcccf0d3eb8be3a7b953dd04a0946d35bc864ab42943760e99262d19b36e5affb766f0901dd865c06143160008aa85ce447685a0d4d7d8e6a3d97385b0255ab21ebce9bce4cb6ec35394290f8164a77c3c6d4decb7bd0e6b0277a42f329c544b4e531e16e3723bee82b80330aa0866a7d45d15bcd52c5f89b88274cded89a828ee5a454df0f4b325a385a492911262b2dc63645c474b6d11a9a2548c8a268956b4e264948a52112ab68c158b94921332e4188775d38aad72565c952a4b7740effa503b32d015b20d141611456c9f08f7f22efeb3801725a26a7d1ec6b31f7b23b186750abd06a43691a70d193f1f08a2f1de4f14ae902ab4a5d5a1532644446025035908b29e4d1d83d22198286146b3cbdf670e2b90132fee30fb0a5f299bf0d57af9f1c34833cea641b89b4a4925098b4cd3b6940b7445ec5fae42988f9a58cad6f84095f50a5191c2f01191852e6f37459a04c18ec349ec4497cb4043f720fcb6a3637e2343b249f9a626cba9429598afe5ca5040ce085a4fb469495bb228f0874d5436400d9e4222b116ceb7b180e06a849654758b7ad1c6c4285f3fe22a0be4d5cd6e0572f34391fb996fa1fcd91e986e27690b7bbc8a44839c72461c8cd5e6676baa9b6b995de66e7ca09f224b96b013e80f4ca35de71a97cc5b1b47faf607e1dff51b9884492f23575adc5b8783cb315975aa5c839d41b9311eb2570d8570dd9926cf387e7fd36055b39d63b7d5a690b564ef91d57e9b2feb647d5b307bd864580f6b0a99b0e3a696b43e272f30c87c23cfa08ce35a07996090930b2991ddb36e8c8ba2207351ce619035f37dc7580b88ee0e6a790a9f84fd0d65fb23a800ad6abf9be81111396a54862562238f9700ccf55b6d4f04fd10b05c566d2e070ee659ec914682d2dc3a0000b79ed1b37c58e7ac0b6ab658eb488417e35c250f5a3e98763285a7ad9284789026879fb38fec8739b38079aaf74ada2e602bcbb9efdcc4a8f676c26048b70b293ca34a63a9d15e07ba60c82e499f2282900dfe2a9aef5154d299e45a1fa818cf21529f82d559d3fcbd6716a2938e50958ce053fb87523f178667ea891b84f7d1f7b1584c827828883f245299bcdf2e3e81a6ba96dcf1850e1d0a819cefb68d65e2e624758c012aa1641f44e1a2fca3aab05a28647c93b8f756344b2d0aa0b11a4492751b51320871a07c1aa28588ce98eef944e210e3bf78c550a10d868e6946ac16dba580366bc2585b75a97cd85e53b0deea2f93695fcd9c5ebe28d694b41c71270d73f6344d6b43af2243b544f71cbfdd0b3dc29b61ffd45b509ac96ab9e29268f9a0821f0b73284183bc79173f2ded6cecc0ca79edeaa283bdade49895912bee329cc94bfa73bd65a84424e760cb9bd2f5b1f570abaf110a197c520146a66c18822324e4fe04b445131d4f473c089f49ea8dcd65192e9db97584556302f0805b360f86d1750c85541a83cc74bd8da45a215cc2f316ebcdd9207a3fd531d50356c251a86a2e2e7c53fb36b97f7d4254ec42076a1557991b95d638d01c078ba60c654458f6e6d96c20bf0cc91178c018e7e1de5bb1cb0ffc624056bc855d26538216daedc5582b328e0c485ff04cc97228b8bd6fb351a030b947bd0600cca5364386cb984abf197845ee8c14659ad5b870e79b6fa8914aec68ae4b205b15de4ac26544c46b41811dda3b6261b6a975e4bf6c95d5175ecc8cf6cc7f53440b3af2151b3863b523cb3561b74a7edf311b80a05da52576a981115f9f829d3ac6691dd8f2d5ec3ef1316c11e375c923863c0580547157b18ea2bfb3b1690d4b1af01a7039ef1382d47fca7a422c52a36906e025a5e0e457cfb2665d353792f5f981814cc348dfa77f2e2fab1da47688ec6f805cf99054f978835210f6f8c17ed32cc2295469c3e5787561722c32405aaf55421916032784962c3b5b0ef8f665f6237cadd8e6b7a277030069e81bb96faf7800b5f3054cd9a13b5690c20aa65ccdf4a09169711a2e1b847a91c91c2a8180db59a894f838b7b4accd862a5be076b655e9fce90918c00099e7ee58a4f8831e3d0417988e9d96d27ccd1e2eb641f4a5a7694151adb7571b1c68af54f4d6df425c0fa97ab537c28ecbc88192884116e3184ab5bf932655d1c33dd771012b1d5799061cf6ce6d7a5497424e14b5bbb72cb9178c6d6f932de03a936ad6dccff70c0d7c735374b841350f1d940b21d052a329ab8f0b198f49ae479afecc25ee1d7204619652657eb90c54aa554af552242a4cba859e063d752a722b6c8339ded156a920c72541fd61fbdc94b2ad19b8a06e34d9d4664017748cc6580e65b2864884b726d8a3e855a2ab8e57448c29f133a2030353b48102b36450d6b319c9a70151ff0cecf2190c908015bd8113ba5a3b6dbe1d6e83b835be598cad6e3b7d2a5205c6968a7628d95b22ef0513c6cbb289755e1931728e8ce1a157307370ae33e09d1f340acf9b4d0a125121fe56686c1825fd87964faf16e39641c9251ef5cf568d4112b59184a2cee08d579808795cf134b876d816464bb16264a5d0ded24a8ef960bc91a059575f94b8588960182f454dc1fa619474fccd0348ce659d748bebb9454bf57167fc2b48b908344d38f06fc72aaec8df82b205fc9d24eb5816a4b9990263367afb528e158a155dd7c18083e843555bb393722c642ac420e233f5f2a3ac5795a6dd9c7d74accb69e5dc26200c076d877eb9dd43cfa0664a1a8e15e22e14a544ba7ee16b062de90c0e485f1baa77e4803422ab3312b516f2af1c1438b516e006b1a76040c9258e24a45d3bca809eb0fb8fdaff0df156293f7662a1f5d13e3de8388825c290e0fea6101d025116e1a2464e52e94e57d05e26958520573c2d5ba4dd7b66aef1c3578c6de1795dd64bfae0d0a0b246f290ff6edaa2aa5e283007213ae08c03a31f18c72d080aad9a53326f73c13ad53552a851c2ae5fa11bd2be28e3193593c564b2a14854986b289fe16fe34a0c064e08e0c8cfb144858457a381c709f3065bce039db8ca6fd22409f445eb237484338c62c3a0b4a223d0630b21b7a0ac3e8f4dc106a10cc890a7e89c8350885ad4160b16359ad7e2ef099ef4aeb3e64e5582a78b2ddd1defe72e48bec7661a6cf0856b65dd0b69606271c5c6cb6d66ba6d14461b060b0240e150b29450625f44384c16784945e473a382b2ed47e19cb9710214556d280891d1723792229eb55b05bfcf2ab230953dcdc8146a345b724e65caa16d0bf536cb25da840ef3c12190456b261386701ce3fb49cc45d1e097c3905e78af94da0960333b1ef5db5b0d225d807e6208b6b967d86a9ba6f77e30b02f2c3b33c6a306567d6d1a4b0b9da92cfc464ac3fa4eaa036a3b46ff1404fdab21f679fc0eefd22e7114826a7753385b05bb6c88d8065ec6fbc75ec681bde38acf274d1491edef0d2e3f415bffe7e0456ffdc13693a7719fb42588db2327f280f8c55a3a3d0412784e5648e3120c3630cbc6821f208552be7267cad74c45663c90bc5a72bb24404791278247971b9c731d8642a2486f4e38932c4f72618c02755dca5748f6d44a3f85f60a939ee8412eefb632efaa92886e53ee900ca3a56beb6c1be4ed4415811e6fefdee423005f14e28cbc42208be8a56cb6148a4602827118628b479a9a8ea3b9860674c30d60268bb2051ffb0db0c1a8dcad2054c300d2ef1034b6b3a73e3da0ef127f15b7219950adc3c5acf7a346d9447d9d454248fe51e9e621b9e7c0c44cb246275347d46d9504c31409bc228cdce17fe29aba8e9e4b92cad612089b06a91b7f6ad3d9b261c3ef60cd94a7e5247e4dc077edf18e9b793b68ee9c2a31c24e4f82e3f5674128dfa567370f3a34f8960e1852345d31b04e4f8d2dca5859d1888d18f54ce0a96e77a947d519a065909d5af39f53cf73aa0edaaba690ac89ab5630431a7367ca15ddac15b105cfb3b0b618c7ca20a11f941be889e0cff2185fdc11745aeb5d6b5006cc5573022e4b04040b3340b2a4d001ffffffffffffffffff51dbdab7cdda07edcb94361913500c45c8fc84a494524a3225f3f43338ed03ff151cc287100f0b6c0acc0a9c0a4a3c39e520913005b1975fb3cc322c830308244c313eba69a8dccfcbbd8d1c3bf011e6d2be8138421fcd0a48234cfab48d560a35dd184118614a2d25afcf9a4a005984f13e95685ac642375411c62f335ddacabb94249f236127c26cfae652e724bd5423c2a04fe816f93d0f953c8449af6b9d7e3fbb3de11a6b6608534a2bb18e4218644f4a2928112a4ad6354298c5d664cb31ffaf837c076410863325433b5dc97111b7204ca7443b09baa31aa2a1c3c659208c1672f1b1b4691d95c510c306093c3c4000e163d8e0c118653000e40f56ba1b1bcb15d6b3933c32727455633900e207731284aefaa42ad907a37512bd7637ef1b678d354e3bca28e38339bb47dffe391b6d273a6cdcc03d184b963072edf43af4600ea192126d9ec44ea29e07a3794e425a78ec4dabf1600a131fe127b37b01c81dcc694cc3afa46d0763c979616445f4b8b97530cea6ea8de97e3c9581d0e1f5d0cf5eff49903998c457ebf23149fea58126079356a8fe53e154630d75e36054cf16173d0c07a35ace11933ebad2e31c9c24f91cbcc1a4ed4e9afcecd458d33c37984a94877e0eaa4c94688d353ea381ca6a9800a40da6dd33b59f4ef8874e52636dad05206c30de2533ff931a77f7ea5883a9d3785e4b52b2c6da0e1c38d46012f48b891e9583b6d4c100240d465136221696e754856a2c1a4c65626f27a14c0cb5748d353e83e12bb89aec5945c5e866387f6e85c9aabf0ca6f4222b2749b2a5bd548d35268341c7c9e1533e99a177a200640c46f99c1dcba348eb0a0840c46092aec3e4ae5ec6581b02903098ccf2e3cf9a60305a0e5afaa41925b8c67702902f986543081d4a3679269ada05205e30e55c363d25eee79dba60d2398710d54949275a88061607e142524992249f166da9b1564e06205b3028f5a1c4ae534dd18c86164ca2a75392f44ea22b00c98239f5ef4df2144ae49bd052008205f39f1484ec7ce92b1884c8b7bd93a3493a9605b142aa24bd566b6b8db5260148158c164fcf7df0b7a01d1c62141a89c60e1d386ad0d0c3c118367080031c622c0e1b34c83020549802881444001205d5dc2c2d2e68c650007982c9d69289fda4ecc491937143043ee0800e1d27051e1e1e06e2049026f0f5b2d9ea59ad7de5a9a49caca28e594098605e4b39f1e2b64936421c3bc610c1128c7a7225ed4949b224a5b59192083ef0811b3a0e0f3c3c9293d000a204c37aac279debc2824a27c1fc72929e58236d4f1222c1ec49b40e173a7d5ecf811cc160726996525610239837fdaddf336f56669022185bd3737dae83502d99004204833efd241ff43f0c934a5236b13bf51fc230c91384ba1065929069f90886797432cb59a205184693da2fe845f74e3afa8b362e59b8d3b2e02ea79569a1ba7b94245f18f76227e9e7a504f929bd30858a551a2127d5a8145e1867c3cf73ca92f373ca2e38ab28e375156bcb2aecc7dae5445329f87e125d18ce5cbbac44b53993fbc8854994d8a13d8f1017e6ee720f3a9c9494d0f716a69157d1644b96dd45b585d94abab575d0b072b7166619359324954db4307812d54faed678162635a22bc927e34b4dede1f139fc6561ca3ff34ea243dcfad5217cc4c268728553dfeb32081fb0309b55884a2594685d6b03c70bf4c6c72bccda26c68937d1043cf870c516541cd3a7726cbb15f9874e95e7da5167561c941c9ecda28af26e15cea5301d46ffe9b54d15a588dc76aa6859d20f13aa4a3015c60c5d7a266eaabfde072acc56264d54b8925318ae4aac1353a2867dca16e1c314c6396984ae13b73f4b45c34a61bc3b553a4d1e5142ac1c7c90c25c794fb783fc5f1ea9181fa3302555fb1dad2b4de5134e1d3a5833f0210a639e94662c66e95c521fa130e5258d9354feb9fd948707280c9773dcda3dd9270c4a56ca75675b269afe3e3c61129f8451fa5acadf549dc8be4beba2ddd55b7795c897ca27459c308cf5e7ec9b245ff8d884b9d242e627cdb64e0b1f9a3025b9b1193732f7b3c52b7c64c26079593d688a8962745cec122653b75dc1e4e5e1b13e48ff6c0983d8b8d87ae2bb9f302b615eb5bbd1159b1226a9aa537849529e24a727616e75b5539df4ee644f12a6941dff4818bb2fa5e52d25244cd9c3d37e28a5728aa347943b2b68597585d3d2b4a81764e57fc711e611f6e5a3a146cee4f8d10853126bf4e8f4764985cdc3e3ccf0c108d309b5fe12be63624517619e37bd22da411f8a30795a2a31cf4e5c35b59de1231126b95f9232199d0face00569f8408429e5131d174eb6868f43184fb549b765db5542e4831ce7868d317c18c27057b9c2082587fd8b3e0a618aa154ceadebc53f930f4258f284910fc2706f82295d268e891a0bc22073bad74559febf1a0853fa649ae35ea1acad0f4098dbca53e737753ae8fce30fa6bc999db42c49a2d33dc2871f8cefb97fa4c5ef9c242d7d30c99e7225a66fdf7eb4f9601c5da16e4d5dec942e34ecd159277cecc15ce174f578aa1ea99687c7871ecc63d9737e0927472ba93d3a280a1f7930bf86be7dfe3ff06034419b7caa2374b4943b9852ee6b2b436c4c6eed601c8d3dcf595475307c7bff9c7b9f5813a5834149275cb4b13ee6604e4f3988bfbfaa37793918de7c4e5bd5cda76012076399d63ad3351ccc2147bdf6760755a27c834996f586851edd5070b93677f98a9975bf261fbf3698f2c8508230b1e4935a7eb0c132abe8eded16cbd2ac429d7acfae269558ca640d66ab8fa5fd4ff3f02864e8b8fb50834938e94cc67deb81e6b317039581c3fb041f693098b55df4de133dd2f001a281056d061f6830e5ac8b122fa91a6b64dc484a0e14887156e0e1710693eecf9f36fdf81c33182c087595a44863f0510693e8e059e7549758aec8507e96d8db95c43268ecc08673c8c7184c4abac505955de2592f06f3996e379d4c4949e7160693872c97bf1c7dabf5533e3ec0603cf95b2c4be835d6c4d0dd31868d32706003ed063ebe600a71c13e65eedde7bb630c1b65e8206b7c78c1249a49f6c954384bd6415d3077a55ba7f315b3fcfd830b861be1a19b969ddffb8d2d9866ee533afd785549d00588850f2d983e3cfa96e0414f9827b3f09105549714dfee52fec082f92e5dcaa93ae90aa69c277d8e118b3df15bc1687eb7bed716c382f75105a3dce778b1fc2413d753c17c296a28e9659f82f9632de7b8ac5526280553278f6619da55b9e947148cefe597b2e9030a0661a27bf9b59609daf3f184d2725c4eb9d0b69469e1a255e4fa047d38c16cc92f9b0c11237ab90bb80b1f4d3089273549bf2583058d840f2698e4c7cae6e9120f0f2e7c2cc1a442c7b10fa13ca77760c369948123070d7fb6157c28c11c7663a276ba54eacf111a49f84882e1a4efcab5d55c3b291f48308befb6c83e29438bd0118cf717475edcc3dc9818c1685f274bdd4b95a0f647118cf932a69e2d2dc7b67c10c1a4e2e7fe938354bf5c0e1c63e0c046d9304c1fa2efe4b1b41b69aab196703c8d1c38cc84a1fd67939229cf493f9f033d3a18e612a57c7be354cef7e06bd0d81c0d0ce3c8a9dbbff53442b5af23c721a36df42f0c6a9d6566df22d4ff3472f04f46b131da1746d74f3749dcf54c9e400b40707e059fd81083051e1e7e3e878747752f4c42ab879ea8d331fbe585f9249d72a5b45cef42b78e51f1144b2e72e326cc83c996433c6c565d98459c4a5258c9615684395e478e9382b3f7cb052a68a9d3233e19376c7878e0b0d1b8308f5b98c7695b98472dcc9f44fdbe0c352d8c95837bbcb4df2c0cea54efe7bcb485919e79cbc21c6d6d776ca45d4e158dcfc1b951168b45c3e26653d52b5997c78c68dd176161d2aa9676667b8449a219f42b4c622669d3f8b25d61f636b9a52ae9db50e20e742bcc2ea2935f92ff4e6c6d5c192b6ad0aba0d1aa30aa9859ec5a4ad2ec9b8a15342a160f258ffa14868fab6c262f8ebc726f0409294cc193789cfb2496671426ffa815df3c278d4561d6be14cd721d0ab3fb86b79d30280cbb1a3aff423dff9f308927ce76cd5d67513d81d85a2a497ed90993de3925ca09396138a14a97286a3d266ec230b2dde52a78eda768c2a039dea25dc98451ad24b14d0e13d673983049aa593ada9524e95dc25426b9698dbf7852f7963025937b74c931ea93ec2b615c913fe9b2f69430c8adae97312df2a7491864c8d36162f9e82849c2a0f30925679c226178bd14aa5ae4ece99030d7fa96fe3919df9247184f4ac1d2091fd32bc81106f9a943fefd4698729fffa829ffa03a8c305f8559524927b5672fc22c5ba37a4de94f232bc27049c79d1225ca25d1449892ae1acf96378b1311668b25c5e7d31a26070f617c1344e81acd10c6f730f9de2ff7655808638ebbc54e3a69890a214c3bd77d927b83309b6da5c91ffaa73741983e97ba19f19e82c80261fc5075f29a00619273e4b4ced208d11fcceef5726fa28b6ecbfd60d4b1f39b37257d30eba9922f5be283d1a37a6a7153a1b1efc1e8b167f23d1f264df4601a157c5fc74fb414e5c1d8b19398167db9d2c18369b7cdfe04f16addb983492a41a9962d413ede7630c53425c6bfc9aeb7eb60f4360b1b3a9cc7ce743049522dd9e87251da9d83c9c7cb6d3cc8d0a59483f9a48f8d6725a54f308983f9acf42529e7ba9d96c0c11c274c586deb08cf923798e2a7b648ebd0ab2b7183c1deebb2b5dee4d1b7c178727f121edbe48fcf0663aa7e1215a4589a246b3087aed3ad38174bfca8c15cad5a925ca72e79380d2679276b0861a73b321a4c6a26c896f4d4ebd933189424992cefd3bbf79ac124fbe74a124fea11b70cc6b558a3d39d49926cc9605069733be874694c3a06f3c5d0255552c560d0be6a33b94bfea40c8329c931a98399b42523180c172ac7afcae215c62f184dd6091aeae20573a938f92e899f59972e18c74ddb9392e682b16333b7b65f2dbc2d98639bce754a8fc99e212d28aac4ea9c9414ca82e984f5dbdbf8981f1618f149ddae770593b0ed93b5d5f52b59c17ca32bada25f0593202ea782c173c4a86c9772673405a3b7578d2993b39f470ae6159513a7e72898edb2ea6e7b0eea562898a414ebe27a3b74e709463349f8befc49ca5e3ac1a0224dc44ce8dd49698269be644fcceb30c1d8fee59e4d6e0906b7b5dc2657824105f350b9a3fac95fd2a5c4f0d5d691601a1343958ff224fa2318d7a49ed27be249b311cc225a642d664eaf49110cdbf1b2441b2082a965946c987ccd7d8661521fd9fb310bc314ba9f82d06e300c4ae73be70e36304ceae941ed75fa17065d5ec29bec51eaaaf685f9353dbc4f3e31e1d40b83d09eef463d47fd122f4c6ede229f4abb30e7281152dfe35bea7561148f2de2d299bc26b9309c38a3623eef58d2716190bd94740e2a26e7b73089271f27f76c9e1c5b984289deab9494a0e3a4168538215a74f9af21dc74666152fad1439778eaffc3b2309d5c4a4f28d14ac99a6361924fede734f13dc4ccb0306988e89244db3d09f91506997982a50e3acc8bec0af32979abeea378740bb7c27432161bdbf1e23f668559949da07e4fedc98d5761f0d85f61b6b12a8c66b7fd9ed4793a8b5361124df94a173ac44ea830e9bc2174cebda6bf3f85b1f5d2b6ab73fce2a63049e17379bcfc452d2985c1d3925612457b3e8714c6fb24a2a662e8d8e951984afba6e9a896e26151984dcc6c8f8796953714e6fe93163f545098e38890a74ac5954c3f61bed15352b985d2997ac2e815a6541ae9a1f7ec8441ccd3d8e7ef2539e484313fa86b988af893b209b37934b972ce7dad451326fffc1e2dc9b75b2513c693544cea6e3161101df76e2cc66f6b7b09c307a157d55ae6165b4b18c5342b6e575b09f3c9f5cf494277f4244a1854d33c45578df2934998c4dd083f3d494c9648c224e79294147ff6a1a248986f54ba7612a9322248984d959a7ffce8234c79fdac93fd59298f3ac214462bed98db089387fe8ef4bf7bbd19614e79cab29f1026e9781126196276e76e4395561146cfe19d93a096a6dc44983b8efef4d34b49a528224c79566d4fdeae123d3d84c9a47029a7673a7f4a0d616c352fb162e1494f8530ec499f922949cc8612214cf395aa4e272955f34198444f5352b092bcca4410a65c975573e440989429d1d9c4c6e70a02c2e0167aa673f433cffdc1743aa7e7b8f7fbc1e871c2a81cfc3e984a9fbb5ea9124b9ff0c1a442cdf8c79cc9c1640fa624ede8fde59c28213d18b5f5b7848abfadf3609252bc8b9573923d45f1600c0b9e3394242a32bd83393fad4b8ea71d0cf65fbad4899bce631d4cdbf61566844807a3c9cba2ba2784bc0bcec16039d485aee594e5827230452d3d1197611c8c21d74a8558c93cc1c1fc995de1498963e26f30a7d2bcb653b7322637982fdc961c3daa93ba0da693a4a062e3b3c1e46aa944bdbe06838ea272c84f651f4ad4603a9d4a5a5c57bf1aa5c1d8b75e42754b3446683086297964bceae84f9fc178b37fb72787934cd80ce658419f779bf8f56d19ea959155eb26190c27ad6c2521945b07c760ce26492943e59294876230898bb65ddab5245bc260f0942264e32b603099fc9e27a712d47a2b5f306d8a92b564cd0be631938b5de2739a5d30accd78a5e8f9e552850ba6a463bb5ce5c773d2164cd17faf6543e54ebe161c13e24a84e85930b52561b904132c1855f57412f4be82f136f4dd7bb682c994fa24792cabdcb80aa6a444cdd968a960922cbdc8bdab1cf64ec1f8497cd3a14499c9492998e5ccd24f0a2f0ae69274d0974d2c39e8efa0600e2ab3e4ffbd53b47b8229ddcfe70473fa0d93562f4e1c53134c722fcd4305dd9d9298603ae531d7b4f6472d2dc164312a5f36c92cde578239098b9d3be59360d05195db4912fb794782b9e436314d253549cc8f60ae921e23984dbc8e2d2d39e92298e7bc926ebb35400493ea9c9b25499ea4131e865176fc5a6f45f8bec23096f814de540ed7ef06c3a4c4f8e5b91418e68ad721f6dae92afec21c4c5011ea74e60bf3dcecf75e28e969b35e982c9892e4cf1a2f0c9e6f2f469e1445671746713361d2e4b9a095e9c29c73f4b4123b77dc5c98c4f6cf5450aa9368c285c94ddd5daeb5e0b3dfc278325f9432496c618c193f497ea716a62bd9430b9394e409aa634791a69e85792d534f5c0c6d6acbc2246527e59eafc4da3a16c53d112ccc39bd63970ad1d22b4ce1db04ff5322d6e20a83da5daa133ae9cfb81526b5f5f46ce9c4cf9215e63013e7250517f9acc2242f594a19f27bb4aa30857f7193b62a76f052613aabbcaff7b658428579c37e4e2e3bf1ec2a9053985408a56a7e4a7c535ac282278098c218a3439b259d7545dfa530aa9d2a2528499614e6718bf96dc2c74f9c466198b9d8271e2d0771368828b074234ede791e2414a6a4e4aded3e0f3dcaf262a05305105018a4880ea7af832a9df11326292991dbc9e48bda314fac16aeabc28a5c0e75cbbdefa93eb21a6261274ccd6a4b163ddde66e2e5677e91fed9d6eba7b018413261f6d1eea79e46aa53b4036619204511993921c73d0a0b1e371900347ba62d79a306ca5f9e9106a8d35342e904c18363b64286d2befc191209830850f99eaa626d6a7cdbc8441c5533c71d23f081d8258c230d7da6d9bba086ee0c8f101b41d941c366890a103f700520953ce9ea07277892cb15f4a98c24dda9a947f12a6ca503a4b5e93244c579b8a7d2514020b93204eca5df112e49fd22b0c63bdd5bfa9224dc97185791cb6420db1b895bd9d0d6185495c45286d411cb20a83ab473b191796d524435491b9c6cba57bad6617920a539d94546fec8bece4a3c21cb236db834af191f914c62c8f7721a30b318529cb7df5ef8d4a61eee429a824550e290cdac43e6182ca25e5da46618ea5325ff254c4bc22428828cc55fa63ce4913cd2c2914a66a8fd62aaaed3bda164240616c0bf2629faaa421e413e9894e1846899e3dfe623d25c91a6b3bcecd08e1040ad98439e3c404e110030734c6b05163870d1e68e2ae59757b7b17adca2c8d4dcd3ecb67e7f3185f43471964ac65c2ec597bf7d9b36775b0c69a8d622308c184f9043361dab9e48841e3737076749b904b184c7f955c63828a250c9f3c334d3e75250caed9b762b3274b398450c224acba4af01c9a8439fdd7c97353265d724324611cf92d8f26a5b9c51123615ecf5d9ec4cab549d2658440c2145465bf99ca0e7bf2904798938e63331b2a58678707218e308ff2ba8f2587ce277a84904618bbfb3d09b28475fe890a218c305ac5dbef5e894b3a5b44882230118888cbd5f2e9d2f9935cc8215071abfaf7002c21c410e67183904298c711c2e899df265c86ec8ccc46c820aa3399f54a91ef0ba7b684755c0f4204611893ec6dd3f37277bd0b84f1c45fcbebda3b407c616408ad5fe5dd1f4ca14b647e30fea95c7292cdbceb83b1d594f49177f2f192dcf1c1e41eb5776486eef660caa7fb52bca44bed8e777a30a7b314f772d0eb336e481ecca34caca4c604dde9a329383c989358752525712785ddcaddc1d42b4a50972127cb566707f3497d174e9c0815c5bc3a18f64b5e5a9354e5e860eed49bf326c7b424e9949b83c1aa837c52bab46bfc0b918326a3dc455a546bace9b09197829038186fc4a934daa40f0ea6b5be509efd69f7a37b83f14db678d95343bc99e5dc602cedbc921e4625b3dc43da604ccfa962b28d3ced710d6183419bd986daf4c610b206531cbb52a1822a253ba506838c35e9fb96f71742d26092be737e34157fe6e25c08418349d05b4a49d79d2443c8194c395f3459ee67fd2d66216630552541ea7d09eb2db98494a18490c1383a429497df55563a86e291831031982b7b8a5715461d48418484c124c949faa0157f08184c29d5be6708f982a92cc712c43ada56aa663a42bc60fa5252647de56bacf9fb0d1c39129f0eb3414817ccf104ef4bd29987102e98e2bb987cb1be6209a58e2d98b6d479e92c3f440b9b453bef2c4bb26b921ea1521b92059314b6b3a9d8cae6af3970d448c6389fa3ac48108205932c1f53bdd2bbf5c3902b983dd977ccd236ee7d9f60063470106205b3575fba684a123f992e86902a9844b930f5df2a71fb0fa1823955adc55a25099982393c55fabe90140ce3614c1a59898241d9f5afe9a1600ebe97af214b4f3005515e416ee4844a8ad539bc859b6092e307f9a5cd6782410795a12d993c640926419a509517528239b5dcecbead6e7892604e56f66bf27ef04a22c1149bdbd6c14e5cb31cc1701d64a629214a2ee64630cd251f934a8a7a9914c1d4f76ef183988d168510c1a04bc71813ef30cc713e8b3a1d4a5f528561befc2154d007c398e9f183881026426018ac840a7a964b7e619091a7d7215f187f2cc583b43659fd5e98e24a45d73bcd9bbc30eb5c72cb1eda8529943835ad756130c1939b9a3ab991736190a332adfa45b830e8b6869b9436445de816a6f5e829af6f0b939c9fd5222aba797b6a61d836b32a25589acb0e2d0c7b22e45b4811aed6998549864e37499f8a3d4ab24850614b8832752c8c6582ee9e64e3a24b5818bcf4d77f986c4b955720c7f2ae3096d80bd159eb56187e7f2f457e49b2b266854949e1e492bb64152653d124514dae33c9c3aa306865c96151bc63979c0ac3fee5a8a44654984e5c59322ddf2d1e9fc224f3d624497df707159bc22426e6ceaf782c41a9140659a3044be984c95393c26022cfe4d3df8ec230dab45b25917752b6a23009f774b1846f43613215cff944bdf594406112f9bb2b96ca5452fa84294486bb8ceca8be3d61101a5b2e6a3d4929d44e98d4a69da493977668ca0973105fa2c88d36612c179d673e7874cfd184513b5a6fe83b13e6b294a4fc7e1384943161fab951979dbd84399dcbe82d614ccdd2f1f2323fa795308f9fdc62a29430cc9d5a2d53cb8c4998c43c31badf4a499835eef3c793c748983e898eab13724d9b20248c72f721c4b5f8088386baf1354177db828e30a79b8b8c88558ba146984ccb96502578da5133c21c2bdcff9cf692e35c84e9c33ac9498a75e75714610a17b467d3ae53e74a22cce1aa3f095171f4fb8830de5a4ab1f52af3f24398e4770ef5a09d4f7c0c61d8b8102a7bbb42187d6eb67366593cb1238431d4865a5907616c134f96a70a55724910e69254092ae951ffe1b540982ffff565bf29ed016112c5940eea2e5495e80fe63422eb722d9f20fbc1e84912bc64cf2528d1d307737ad5a91c2c0fcce083e14fb6ca28298d050befc1e0213d4b96d856ea473d983db9c88e973d992721cfc883594f868e1fc69e810773fca53d593ce7ccb883a9543f2849d81f4d0bd261872a4ebeba92b99cdaa68852b9c429b994c74b52077350c24ae45a34bcb374309e52e331a48866ccc1ac9d9f6e974a3960e9d5dd9629a62629eb51b1b784b766c4c19c34c7a41aff0a1c3e1346a94fcfd68c37983c774e759e4afde79de10673ccf582196d4087e5ca6f67e849b2a1b46dbb4ab92c5aacf911f24eb86b307a3a0b9de42ce2abb621cc5043eea74fd08c34984bd9675b366d21c734030d067dd2884add396730a93df30f9f6798c194b6f2db3e7974b530a30cc6f8e0157af1f3ee8ccad0c19f3274608a0c0611fa835059392787f1f038397ec6188c7de69b9fe25fce1dd631430c5c975e8d4fc15f4187c13c66d9463e3d34bc2f3f980106d3693f4b1327fbb8858530e30be6b42d9a5e9d448c6384195e3065d3ada44ae77b13951865388e2e98f472c71093a48f4098c1057392fae40fe7962d98f2cb7e50923a9562e533b4601e39230be6dd10359f727606164c52e59e585ef5a83cba195730a55fb999170b0a33ac60ce13e4d689d413473e560583f0131595928965273f39cca082f1b4f4db799831852a091df35cab9682397fd2740e33a260f6ce2baa849e9815ed0c2898f2c784c6b0815406339ed088d1a7da3c5f0788194ef0f3093aee826e0f8b91b209a62046e8c9d9c4bbcf3899c1044b4aa26928396ec9e58c256c767529432c76a7cac9faef9736b916c3c3e36628c1a07b37f34f94fc1f4c7c0677a7c4d0bfffd30c249853d49b7cf7e28c23983bfcd34c76898bee8d60925d9492ea6415790f17c1b0a26428499ec9a33e398308a6afdfddcb7a320ca397b6b82e370bc324b645b9786f6d20182693a794163db54ae2b20160184df6d241b9a95cbeff0b835afef872c28c9e92fbc218ae3a424d1e373928d9402fcc6f4975d0a2d793cebb015e984dad09d749691726dfae941ff94ef2d2ba30c8d930418d3a37900bc452b9b9bc5cd8ce388d39b962947cf9bd47be015c182ccc4f52bd57d2be85417db4d88bf15372b6308599137a746fdf956a61169d334e289f16a6d0ab5b15f92ccc26c5678d08fb349285b9b742b34b74ff8d62611ecf7913afe4b39561918e9e8258a96c7a85c13a8c56b2d615c6f5dc5fa2bc28d9d35618dcfafaec6207999315062545d997e5925236d32a0c335796f2cdf28530a9c27025051d37f9bec49652616a0d21c46b899656255498c2e5d4a293f0a2e2e91446f75831d174e52749a630959e5bd0132f85e9a493f36fe9b229053b7af018180307367420c0023a30f062a0b3a38c1b0bb08000747c8e32769c4f341670010054c00e03671828572781f4c714904079e47a58040a10001f200c2800003b7494b1020204e07170cac0c118470c040840478e4fca701c39c848800974d820e3282000b5000000000000004060c78fb143c7efc000e2781d870c072c4001a04307f2208000ce8ee31e0508c0d9711c470e8f030060000f48408ecf417276e8a0416301000840030e506cec10a3868e438346024664516cec701c376271801158141b3b7660c3cba041230123af308997b19cac4d6a2c9f957176e373d0d8810da7e1dfb6630c1b2a1871c58ed7d10a326eb0a2d8d891a3860e3168d048c0c82a0a0d1a0818518501465261aafe9404a5525b5041541874cb47ee53d029a7ce298c5552d0b14387d27fddf81bab23a630f6579a18e6a6e4c6dfd01b7fa3e818c3c68e1c2f860d326ee04876a414267b2b4168e95c6107525082097c600513c0b4c408297630328a2a9e347d9b593a29f588280c3f6ba3bba17bf2ec91501465eb33ed6eab4366fe53b6ae31afcb279f6006345a30020aa3c89d3422de914f98f4a7142766661f58c10476f88003628c78c27855662a9ecb9cca6a8d318e182928239d08c20827ca9da61ef216c6debd3e2ba983914d983d9aba7f474734a1239930d7fc968c60c2542deaec44852e610eb1a1e26437fdded812865fb3244fc85c1939691d64e0a051239518a144625d9d7ecff12f274732868dcdc17918ec24cca7935c9a312289a4383a8850da628f045aa62d972aca24198184e1fe4cec77ff8e65a547184b0e2b1fc654ff898f71c438578830e208c3dced6768132d97be6bac8d31d208539cd359eebf540e96c30893a4f38fd2d14a4b32f911c392df412f22f38f1db34eec5f30a20893785151ef36cbb2ce35d692df818e44987279282588f498f2f91a6b85630411c6d17b625c304f62091934c6c071e3068ea4588e914318bbd4c9e16ada8e114318f459fb9f160f395b71ec388187879916c2ca1baba0741ed558eb010e442307c91103f58bb10395a1434f30031a141821c48e0c42470461b4b025a5b5cb072293adce0a6336daa22a1e3f48d33c51d515afb1f6635c937123f9c008208c59f2e82f5349237f3066872c31cf84f2b8c960c40fbba789659ac96aaa452dd1e4bd52d92526df69a40f0613e27ced83b769ab4046f8703546f6701e7a30a9d52a29d4739aca96913c24ea34de6db4c83f713c98abba54f4bc0e1bafe3c7c81dcc49e486507a4eacb4fb881db20e5b3618a1838eccc1a42b3684475f0ec93df567ca3f290e066182121c8c2596e91c6e724a42fd6f3069ef50f217773798d4e8b96c32649d9ce36d309a945298ac39618349ca8b9ae07943c92d598329b88f7f882f2b4174d46078cb1e2b6bab73c99d34984cd8ebffebfbf0d14683714c54536577e964eb33dc88190cc273cae9fc16af4cb60c261f75299fcce40735194c51d394d8b6854a151c4331677767df2e73312c05252ad7411e11835145f4a44ec235128632028632f2851bf18249f79654763add85d26da5e4e908174c693f4dfc3211e4f81d22781ce4781394cbf13b6cd060640b7b6ab3b4fe338261440b86134d0e954ebe9dea932c98e72ca8dabf207ebd62c1ec95842c31d146aed0a75d34111d762b182ffb7eff08bb0ae63dd3714a4b72840a26f910eddcf1bfa1323205d3c9572e77eebbd6272998d473e62d892fd9aaed228c44c10c25ea7b12e4fa0a05bbba4ad6aaac5db347fbc8e9850d234f308c52a53f2b7a18f39213cc9fdd3fcd8d29b74ed204f3284950399e526aee3d4c3076a7f512712657b67009461f135521ef5182491097d386de175d79adf182912498a229a9ba62877eed7d368204f37deac81565795e7381c3c8114c49e5af133dc95b67a211cc1d33faf31e4fc7915d61a408e6fab7f4f5e291c208110cbe774ad67f7d18c64eb1a4e90abae6a426228cf455126b44f6a41c54826190bf664a78b8458061b292b3437f1b37ca2f4c254fb624c99a2c0422be3095d67653ffa79467d78be4a4f465956c114a8a8618e74478614cbb4cd379ca1288ecc2141f43eae97e35afb8c61a7b40a4fe8f53be7aa1a992402417c6b470c19274299cfc15eb20820b93c679f796f8262fc9ed10b9850d115b5c2d54841629320b7369e734694f1caba0d31c3bc810914535f3157761c1da2de6a28d4ee93d9938a2f1d658cbc1694189a4acbc46c49f4a81857135dd6396506a59ba2688bce25c711ead300f11569854ec1c4d4b2ce5e5db2a4c823c9d2cd5afaa30eca99deca1543fd625920a115498c44d999c6a07955b899cc23c4c6192e2f8a8f47ff2521c8994c23c48611ea330fbe7f73529b497a093444461927949edddeacc2733147a885730eb9275f9ed70b97f4d6c2e020ad35ab61c1d4a1d804c887cc2647625d77a520a15f4229e305dea4ee25d4ff68abd7e42a413e62d69237f945b9c688b70c2d8bb96a4db988aeae8092012229b305908176f3975f259521326159e92fc1d9bcfa7cb84c9e434492c347e5c344c986c7b74ccce2988e5942e442e6150a29efe2816114b183f653dc4dea6758e8954c224077d524a822539c93a11a184f1a472511f4a65adf6e01099843975bc74aea39684794ecf426aeaa9309526914898ef76f32c5c229030cfc935a52f3f970c51e41126252bdfa2c77684c136d64f9576451a612c2947fd421461449d24a1affd6974c6b07123c7b7c0078e83038f6ce44874bc07506411c60f192589bc8c4f4f22a20863a9fbad0fb58b24224dcb32266e15ddc275980a2ac69569ed8b082288306cbec941a8cf97bd43987349d966534f9785dc10fe8cf8f826dfa4102649a7f49f7c564218e7efcd4ef6141984495b69358b1f15dfff2208e385f8cb4edf25e56ce204914098e412c24bfcc9950208736fde88a648cb1244fe60ce275a52bc5c4925bbc50fe60d2d5a3dd5a95ed12929d207d3b765653d93b39ea8dcf1c19cc39a18dbca692e28ddedc11cd277cbf4cbffe975450f267525c449f7db4bfa532e0f86710f537a3a3a05113c184e569ab7f8bac81d4c5a224aca88a99ad444ec70b625ab5597f30a9be5c240a40ec65ecf397a10659e318b41840ee63a759dc49372ba5451292273308d1057a664b7e79b89881c4cf1f2838e38917b4b6986834988dc1033a954d02929f206837f86fa6c4a4ec40da6ef58b9cbe28a5610698359cb94a84e556ddbd12c88b0c1e826c8d2313efbe7cc4e640d06a584d89a245d4cbd2435984bcd08e939e55fd489481a50040d2a72066377ca61ba4e8e19cc29084f7a52d2595cb63298e49c4ad27fd16c248890c168a32f885d16392a976330579f99b47f520a27e445101183a94337f45f2f27059130984cea6cf392b3db9e1087200206d3953c7aa753f8af245f912f18aeaeafeadcbc238878c154aa4fde5b5c184b97638248174c7de26ef7f58b70c1b49dedcce494cfe1df10d98229a83939a6c7490ba6cf355917a79205639a6b28cf9a08160cb3a3b488e65a0221720563b9b5574a234f9424a714112b98070e44aa601e2f420593b65827c5cb39e9ac1415884cc1203f7f1ae59504e56a12838c1b3674f00944a470ae7a66a9d27f0e328e05225130d55f5813c363c4ab480c326a243bce8d7c8108140c3662257aa7d26953167982418ef00d5bd1151127985b44259593242729497d600513d80d8834c16097a4648b30216b20b2047352d663a37b6139f94a30c992c2a9c8e734de27c1384a1056b284aa8d3a418239b5727dce614b1e751fc1245faba5ab24664d6e0463072b115d725b04a3e8cb9eaa388a10c198e1e9baa4d9cec15b43840cc3a85b2a3caef6981027c2b0c45c95784247c34348304c9653a82badbdd793041886d55c933be83a3565fec2606ff36549bf5d5a2e0b21be308593c3782715bb905e987b9497ece085f0c2b0a27582d0bf3c3da65d18bb042bc982858dd35d1706a1f565ba9e5c984f3095e41bdd679260e3c254b363929a249d720f86dcc2244449c1afcf6d3d46b630b6e596a07feae1e3b53029213f5d57a74a10420b93508b25f9e9ab9e3c08426651d97bcba5fabd9a6c9fad9e105998bcc6f4622407426261028bbca8844d86c202712c14094522812814c549de02a31308001040288bc562c1589c4792a80714800261301c30301e22261a1810161c140844a27018100a05c36030200c0a868361704038d72bce01d27eef3b00b85f514892e958453c11e6f509852fd6ada4feb37c69993829a97f39fff8442ca5d66769eedf13552078fa948f347755964205c2adeec70de4a7bd56f01fedc60a52b8fe4e865a2707a21a7b1b39cdd7739a0f21b1d04218dfcbe703be4b8fbbe8cdd5a0edba8dfe5c5052de871837ac68b65c1f84516301e64f33055d564e4841430c57abbf30a7111465d1855cf229ae23dab1f9d98093a221048ed6d73c2b5e2ebb173b4225444b156c07728f5cd09f9795bd4d32b89a3f3b4ab83a1eb80ba8c5b2a2e6cf5c80a53a9caf80c1c9c0420f93547c67c43496e2e0b159cf66549cbc5d49d67983af744d3a9cdffda91a3839816ad87a60072c2690b22688df258f08ae08801288d08dca75a5112e5967a1d9c9d6ecaf2ee9163245504f4ae297d8d0c3b23ab354be07a25a1b7dab9f1546ea510b691178ff3ee3dc69a6feca02bbb77ebe8922a89001681f48392cca6e919a45ac28f4064c9315efe2e506ed11eacf4fd913d21176239fd38b5c454f1c2feadcc24b5c09a1fca23267941e115c686c366b51438ee787ec7c218f2f3334549a06a5b3d5297ab3cc66069ae4fc3b9c2856904361e69f3f9192269c106284cbfac206694dd6cc7582c8902e8b7b4587b6dea3fdc8690b623476e0d197611ed745fb30fa1a02b2d5557aad99f7e96790b8a43b1d4de056bb4cd140064e4576c393363480a54b0a490963eacc1e86f0beeca0866a9a3f9e9092ae474381d56ba45a8b5b470585820a3175b3866719e4585255411d33da9d9320e083f3a2fc01d9d0fd3058b1216ca0f5c15466994ee37c9de8827f6684b292d5f2eed7a2f479eefb96df17177a269cbb261c6b1d99ccad084f715837f8503afb878097b7499e7bdefd6b8730ed378efc1d2046144a94077ca6b359a33a9a269fd18f1deae2513462894373c94810ad9c2c4ef39126295a5b3bb99471c106a55a96a996a420d9485ec6a3f893bc554d13c3b31a8a2e74f3b374a7edf7dcbd92f2c571414c91b724edb8b56d7cccc9dfab9da7175e40b5c3a22b8e584c64625297cc92a5d12f59d91c426cdfca70cea6106b4bfc77a09ac31750d0a815ec275b6e42ee997396bd68c608608629f38e7acebdd0ee29da536d6a57acf58626520db54e03d74b36154003c85072a6dcdf2ab8e9bdc2728a4c21e7ff35af8f56384f969192ff6501702c45b38542f1dc6c0882c04bfd34c300a1a7282cda3c5084a84adb665eafe29b4619c726062681da7b04edde8599eb04c913b24181b00c63eb24d0d89a321270d0576a699e82f91eff82abca9d752db3659ee7772e58cc5cffd2e7db2df8ec1f44bc5420613316f34758110ef78e11f4870587f55768330f4157bf239b242cb36a33b0d8ff0d6046df21626fb402afc73812cce104abf16a4b6530f639884be0132a5b791cd423262a94c4e1c47ec56cd416eee1fe8087f1310d3bafe70d5db643291c875994f17631c1c2c6635a0e35c5f31a513bb19d26a29c40f3ae5ee0c28d5d63df7e932d3cd0642b3e863e90fff9f3369930dfce206f6079e51b8ab8a787d7238cd77ba757050cbf2053b644689cefdce821a4096d58734c50789273b0b5ca466a83a411d353d9ec2a4209b743371ab4491abfe2e64ba060f0b9710b929dbf00f28736fd5ae23514ac11b73e0c94f863477ed0ba0a83f37827b51359469559e8841f6f32d1398fd897358baa67f858de7f406eecf2deff960266edaf14a828cb3d3cc829b26b45e008ded1282fd53bfb94810de98cdd7578add51b674a7580df293d368841e71d9603f06c9b58ebf861829e73949ae2f1cd63050defd4589cf707aff9dddb41796b22ffe0a82f5445cd59e5c1c637364790f863c091483c61de7dbc347e1995182c7d27826b54ad434161a85876c558422a8721f6f16c2b916f941c337c725554cd5d298a28d5ea7eea5398c6af90ce2edd9a3df4fe778163699c87c2037cd9c4445b6d2d37dfeff0ddafba6d7eaa8d91f17c6b2751c761dbc7774f54f32bede8981420d69dcf716543192848fe20e80508512d052599e96bf00680aee4bd3805a81159eb5c92643480e6eaaabab34b43885cd099e6a5449984c1a6364fbf728478630dc8f177a6f382f7587166162f829b2601c9939b37049dc47f10a79fe074ec8e70c877f68f0c7cd07ee37a01bfc0e6f36807b9da112ae79e72f453ee9f9680ca7aac9caadac15c2b80a7ef8711ff954d289462c4544ec4a4252c594faffa49d4346404e2bee859b065bd82d1064d107bf863ff7ae119bd765a901542e702974869d4611580e09f6c61649eb00e1e54a9c267989f713aa6511c27c40aef6beca967cc3bdaaf4a54a327cee306b7697400b62d2cc25172da176b3281740c0531022a6236ba6860d074a4207132659dd70f97588c7c142585268b6611c86d5e74ed83538a11e5faa0ffc71d444630bf645dea15234430844d183182ef69b5d5222f15448dbf63174b00001d38167758450611487cf9ef9e8378d0af1c7d52ed9a8a40d6de75022cbb1c9e90fb72072e490f18050753655e36073f7e8c80452d2e87110da03808800f4ea369a594a0c08b90435dcb4f97136d7f2defa2ab168103a33f723e3b762d77396b3ebe92e88faa2491a3c222819b1f41143f3f9083b353e991e563952a3bfbea4f33ccef436edc917ea9d26ec2f4615c64cb43a3c089f013e0e52b727f6d4c3109eca2a26c4e5a40242aa93f1345bf8d4d0a483b3b2158f91a110abd60d1c705d21c7b98dcbc55a326330a2605aa31995295aaf9781797b22b15ba412dcfe5c22722f732032b8a5daa5e7a4e5c8cdbe046e3e43a6580fcc8a6900726b7f609474efc7d0eae89e0c768dd28920ec504fe5ee0055b0bccb2ef17ae5cfd1c0de09be413aebbd6f7a5f122702d359b85dcdf84a70e5eb3ea5df2a9f9733d73bad765dc202ebef2c7433562166b1d42bc4c20ace8bd951990ca5f450f1106fc28891f9bf3491284dfc54afddd2bbf0ca04071f5293cc6a2c57bbda040442ca19497fc5e35a6b057cc1af3eec5c5623c008ca1c5407505c0927087987b5669c6bf50b66ab40809d0ab4b7abe1a0ab7d1f5f524cb52cd8826a68f23f5e221f65894c00782f598327ca4efefdb49192bd5874c3e3f6aea8499b475b85ae3ef7ab44edb7962b8dce476d86895b2f77f37e46e5f2b422698f93d131e1ad861462ebee61e34b5a1db93ad762c1143325b79a8af4e1152a4c522711f5c1852dd34b23b650d1eca3a66b99e84600ea141634eea15004d982935a73693493fad6543ac344a38007884e204353070f84a4addb531c8933f8b5d7623c08b993c18fb4be5a24d5510d5cac3d2a654f44288ee7c9217ccd7fee0a1a9a0568f8174d9aa901b3bc69270a4363c822c778532d025d3caeb03ee49f03cda6dce01029bbd5a89bf6e6b4ecdd6e122ec0d089c71e78aeec49defbd8542c953663be180f13176e54e2df4f56b621b499d9c8374895ab2dd66a892eddca1bcd823b8ccbd06b7f3dc4f382be151ba4f063635f411ab1637a9dcc8343d7581224794963cad6d7bea7ca9459dc185943364048bb12638d642a78e22049456c84ad5f819aa74fa8b8a26e2cc2b7ee68c08e0b03d8b9011a084d3603d5c66051e56440f95f377a101a5e9f956184c3266bcdf81e11dfe30a4454ddc8b8692271e8f7f6b1ee9a9642d79f5e29ab2cc77e2a06e1c9a1318d1e4e0dc26aab378590d9ae82dcc131ab7aabd14cf3bcc01b7f0991b0db060b4d4daa0118df6212d8a029c91b79cdd130f99dd87a845c220e5402fda990c3915080cd15e62ad9c971b4b1f85f24eb5d18b7f03a129db6d890af048c062db80cf8aaaa3e3569d1295a5cac7b48c0140453ee7a0883a3ee1e559377c97f4be200a569f6535bab0765180877c6870480a2b27574916919c0f42579d9d87be55b2c69941902f75bb0522c68c244ccb7fa469520ecc49dbf2c5f21e57572c8d53953f3a4dd77ba40f20caf009820c831ef7240055d8e23f6df7b1d217bfcbffcc781d09af4d8a3042b2b2d4495dd4f663a839944471a5cb6e22168651bc0bc57da031ccd2624af209394358fae0258712066c4d417503a1c7d467eb4a55706a3628bbc9c199c8fe8454d11bb9300b585d23ea02ed701a820d0f72c3a5c0e984ee9e5e86318cf6bcf1180170a484a576750a36d3a3ec24b81b16a0fc75adb90990c77ae8ce6a239533a0732b45b3341343364c1b0a0bf8e5fc342c8892270c932971ff7cf19dd4b73844185915a6e5b22a0b779ed805194c9593ed456419dcd1b67447dfcb09b342ced21449b9e1542a95d8fd7998e00077edf8ae3eec342bc72b7787e5929b4652d0fa462f211aaf31b584e85cb604be2ab6f9f0d4b663b8e3671b3602d18c231fb1419fbb0d5c448a25fce60e5252e5a5dc790e000c5048b76988f32475faa4815598a8672a39cec134be4283533d93c86a86917e56567512464d55509d387b2a229ca90159a5c7fc0999bd1fc01db1081d66c95472674f41c6d6ac45ada8fa14112c3fd03d96fcb43657e87648cf92cb467c4bc626e2f33a02597c39aaea18882b6911a87de7e4f75c71acda31fdd3894122c87490bdc7c955a9dba4e670d257e91c40608992c17ae3e5ef8a78b1b71c6d2964ded9e81d82ecf8cfe3979fd550803ac33665b7b7c0421482905c2a640914f81defa09b2fd1c8dbfc538e9ec473685462968ee2a76733a4650450806b943690dc056a3e928102e62a95194cbec13c1c0817050c40518e12b9939f2012c43c43ce8242808934c4be4e050366ac0f97f630c2f977762f439e3c8c2658e5093748c4d9d041a637a0a85708a5f69b53c6a96e69f55d6c7d17cfa951147077527eeceda06695c58b21b82b67c8ed511ccd040c9a6177aa912ae7f752a64548e822818aa540d1f82062a970e4b3ab557420ec31f9382bb4d8895e4aa08d747ac8da75dcb6e4755984c4255ef08568816f774b0258b3f79bc738a0caa082609a398a139f2673abefca59ccd5ac600a0428baed34bd84d9b784c4bcb803d96a86337f9ecb3de64e0d5a6f9d5b2e2379f2a3ea82bcc1cc9a4b37cf97ffe25db81efccac93dd706317d245ceb77aaf433b2404d8eb51bf09e09c78adc2248695d1a461d40eefa4878a03300b5e5a683e11f50d6d15e9717cd34d8770089e9b5a3eaecf56de5e8f164291eb3fac13e26cf130c0c62082b3ee1455af50ad212737974435e78972f11cd587c07cc7ea24a6f3aa382375152a83191fb40780a56d43fed559e88fd9e15eb781db1a2b85e748d6659bf0971b2745e531e53d9a34c82d5ad9261f04e00292a2c15dd0423454624d34f427dc7480f5814e86ac82f7c101e014238ca1cdd84d918c6a1d9deaabfe5b2881f8e39536aeff8af171a06da130b8807f69ae243cb0ad29429f98c8fe6cfa9c076f72af35a8a18c8d7c953f20dc83c7f98029e8dd83473a4c8f77e9af0cc02ed643a173776d9acb7025f72a40c51ec25301d122c021b9428d4a8be54cc7081fb932c6cc9ffd69e69a105924ab708e1f32254a658b9280f918b80a439257449726566064630389b456aa4be15d0b0ef86aee0f72579e4a6748f78c5b72e14a61969d5ee344b098c0bfb674ae4170b8008adcc08ac8197af012570cd7679b6c872cca65ad24f40ad8fde0036d6d2953e405b4b81aec8fe5f26baef852f521d94ddded9d1291fab3e2f1f2fd275ef4bf21ace4e61cd8cbacc392a6c06e29d28e3bc5d6d65458e247420242ba964be407f16926cd51daf5b67aac4a5bc2ef1a5c722305bc744422a41f4fddcbc8a4c7ee3a5e5a980c1a6964c21d4400a70650a3a6c576a5c924bb300fe47b282d584e452c07339e073ffcf6811f8ceb7b7c1441f50e2e6336b9d9a4b1a478113db3e21b588b8f13580d91cee9f6d2585ae1e86d8c8e59edfd2983cae5f97ca80c3faaad7091a6b9c8814ed9e5ae34331b9f0d47ae6f6e0ccf74325d3226ba3d68c4e5739043d15c410148897e03a4c8d47cc070120a58c963de934184fd4f9bd503d579916ac173dde7d18476bb4bd07d4ac8e96dfc7437fb1e3dc1e4533f0b6692eff866b685f1852f7ffbf2ae2019ee923d797a32669682031ab53e3c57110acbdb088aef9f82d8a3b908c25a9bda7da060cd0be8569b442bef9f02cf1a41c97d100fd088c87660d3a0de2f840b795aed760c83ebce161606f1a2091982ae49940a36e4884f0dd990e0324b5cd204332b846e2dea877074f7b4b4a6c4a6098219c467baa7778876fcd52ab1ca743183c52609cca21fc8b55bbe1dd9565c69a3f576459c14d3015f39788f4ea8a1d0612275b366467fdefd608e6ba0748e3a4313f12782f695fd09f3bd3f2e1b1faef10a82d064730e429da5a24ff5c37b6b6e0986f01fc10e85340f6b04947f60ae6ecc6fa1d79bb361e05723854bb0d01ac26534739c06fea3848628c351881688fd82a8fd009ca37ffc5cdefc6707c3e10dcc25276a50f8ce16e6277d5943d506cb689675e7aeb0e9775428f60e417d1c4542e9829beb29b22dbe240ec5cb015c412ae3c74e3a7dfec142e2c0c7b4473f0bee1b1dc1e9565c3800c71857c2b1cd6ebc41e33a976e85d9057681ad4c5e50add5d6cbdf0435fbe593ae660c2427b9ee6b909daeba520a2b8e1cc6ebf4fa4ee83e746670efbb76e745522fc4014331064e28f717bd1ce930e72031a927089a8ebf8dbd6627b835ef7774d13d58fdd3fd4494a6e46cffbc193c679a2b527b9b00c3ceb16aba988fe067c0242467cd93df9fb862262181a223b7f2c73b48693995e6f532cbb42545a68eeab263b7050674958684ba326700a63c51ac307846b79536ce33d7229a4bd02180eae702c98a5b3a7959f6acbe716220f5a86b8c46297343fa183d0cb3a1a3e3e24e66de6b3d68da27b78576b85159c09fce7289bfbce34cfd6404081a67e5c6f28fa4420b2b33328ba39372ab5a8aa5fb27606bc758384ed701ff83c0fb2e4879be8d015206e3a7189a9841dbde58abe96762e39cc0a713c9638b4bacd66a4235620229e43efe040890febaf7790f19f179af80ee24e8d023fdedf3148f7e1b069a7ede31ec29560becdf24a2abab0cc5368582493b23f1587c372c8538e92e535ebbe8fa73ac20a6a0c93e5969b827f6737564682bcd4abb84d0efe2c8c032d9252e22e6f17caf6a15e520c9a2f9a51a1fea042731830b9c3ca53bb129d1b53f27b0a12f8b130de612bbd514bcce13f1279660f440aca7f28aecc44c47d856dd80b0deae205c47da81fc983964bf0989cba8c9edba8a363073adab7e325b9dac56bc37e5317c63bbe8b98c3fe668773e5a1baf818f66373068b901da3a414f653ecbb24cab9a85fd770f1a11cdd0d75e84ee3f22edba93f96bb337984829cd4b6829cd931bbcd5375804fdd655cdee93aa6631f9ff2b1f4eb1e5dff05c545ee705983abfec33242a10cdebf6d5c911a894a579f5063c43be06bbb2b67624ae902973fe6b07b2edaf5b7a2daf4a378c462666fefd3b1b9ffb649c62e6da6d0c3a35aef4a09632b7dc316e929129a4c265baee137b66163c42a295e53a27ecb33e21f4cd1235f18b8cb29655b246dfe143ba26ab59ff5d1ac9f227b114cd93d0632fa5bbd8caeebd6ac54c2d90d1496b49ad248b84441e21d828b0992d7c57930a68dc0932935a134d91100da224a76c2cf687b69b5ae4fffeb72699776394feb98d8edc02d2d848e7b757d07e3fe4eb3833f590e9b0f1ec8240c5d93cc52ab25e524eda99fb774922fdfc56191549a12061c1af075f53c613adb111deb9b785516805229a3b41cde2d3b3d1b767ac9909a3bc4238ba69c55228aa0457fe7b38208bbdf753b947694828f3d16598c3a9706f745872d9ce7b4c8898b440c99e185ac8db6680dbbb29d25022a93fd5d8bb98d7efcb81ebc7c70c7edb63f90d3bbb8ed4319787b5738c20b7501bec8d97964d5e82fcb2c6ca61f904c165296a00bfd14767a4f779cf29622d8d1bf29a91544f8d3ca8b286b4a9ffc786bd85cce2a0ade7d3f491896af57c1b22144623f32bb59eca872a960336bf0d25fe2a5e7b070bfd893fc715efc5be49eefb98e539aaab059aed227db8f719a72434fc01761e6ad067e0f202c72d0921385929aabb5070f75146d4c88411753d891ca9456eee3203ea69090f76887fb403bb8cfa202fe9267bbbd8e7e13d42e2d3f3b7825644232539e39ec4a591ff6c83493182a41c7ddb89d844abcdd8468010fbbccbede504e31942fe2511ae804d7b8fdf0b85ff4ed07de98fad90b94c2e37944737d1dbc41e3990bb3bb8b537be79b51a06ef3ceb7bb59480ea51912a8dac763d0e24fa6a4ce70d4e24733242f476842225711736f564913a9691960d5f0ad512b80adeb44681b503461f0139f369489da0427132ccb947afc99a2a5b006be98bf1bf9ee1aef88e3fe06e4b9e18e35d283df391ef98ee88ab84457fa74f06d442f146fdd5a4403fac43be0e4550b5b43c84efbf7a2748584af707351f1ef51222c5d09523ce2ccf2fee4db20e5fec98167eba2b80855717965c76dc19cb33edec85fa39951d2a7146ca8c7cdab9abe74acb20c1b13334337a90699ae8646283c9e96fa59859a55228bf9a8870c36a0910722ce1dee6616772d991bd8decc6c415dcd4d37e75a519def85b94682ddeef8539f910b919ce4c16d46bb60659fdb4f0e11f53de68a76b009d2ed7d8538cdf07231896e622e1a8b00f54904cc6f20c1ec4839866b88dc28c7388c755b0a58e23651b3d1ce085d88646b0710fbaffdb5959a8e5388ca360fb0fdda5e0238d756f5f5cb91af69e5e9afa899404de547a9b7c2590bcb3c05018c4c80499126916e2d0f6d1c4f207276337e32f5362f0ef99eebcf740544d9c00ee80ea99dd9aae37e40975010854c829cc979f2cfc9d5a253a5674a56690e3066c9fa6fbf9416c29c28b8052fddc84d9d69bc72aa258edf0505a99e93fcd55069bbaabdb8e120c1d34b0ca7218e73a022a9c26f687122739036048384de7fd89733c6f1415ccf7009498b5a4de553b483d3436dcfcd250968e3c80bc5a11506f7d03782afe0e48661c84357d8c2dd1fc759525f7a1a80dd346b93ee33b526567c41da09f94f02ccce18451d5426944c88eaccd8474a4b11bbf21b526dc8ecb30903323316a07631128b680afec1a9f2400671ff745a903fcb8c7407c1894894fc0cae758abf57a5cb89872186e42845b5f69b4f573019054746080d12938d399a64c7cc16e1bf7adaa72d646a1d4f785228161462a08e71fab62c84dd9c99e5fc45d18567647a9c89b5fd9a0929945bf5d49d50a63f61971263a45255ca99ab447f5e348b515a25289a953ec813e89c1b69d1329d78b6f6e702c45221e3713066ad22ba70fde00cbc46521106baee69258f3df20d8936e3b4de2cb7e70c3c824c8119ed0b63fac29774b24a9e319cbe1ec922c7e18a0a3cc58b8b2b223a9e3f20a6b577826940abce6dad8f467fc9187b300823b57a9234b968d804dcea80d26391720fd45582dc1be011b390a757a8c8a4c83696fc41859a46efbbf8a30adee59481d3c31782a6888fc13a0476010604cec3c70f20d955b0e8cae6f8d0b678181447d11798e9b5dabc1c7ab88545d345e6f1f182c8308532a333933a8d21f4e640628ff32195aeaf8adff31560fc7e68cb6b183627311cbedd03258aef3a30c712b92f0266b233de40a517f2b13fc5a0e6aea12bc435eede24c8caaf7e4ec971cd951181f36857e1c4c78ed8d43e5380ce88dcf5eb9221eef013dd0d3e2af7b66aa650d1b0e2746ce96e04ae6b3186c51b22c240b3be458ca4538bb1cc890fb6cbf02ce20b9a0f478072db03a079026a467478b1125c7169c97eee394a2688719ad9e293dfbd1bd7a0e96a5d18bc554ef602b483310408c764367ccf323f48cd7f9ab6e8f725333b19a66a1431a9881f36c359059cc1125cd31d1953bbc64572177a725b07c78a89c67f11d019fdd387cf4ec30ee8318dcd76a99cade0d0c45a9cbd10fd93688f34a17f5b8999a2a6c5e6198f74e0b4d0013ecf84c8e28b3eb7775058eeaab7c32160aa0f18b8c33eaeef60f3697dc62434e60d99faa3628b3a94d0f0d85715c383fef38216bb06ef34300408bd73279aa27a0c9aa1549a63388e32d89d61afaa0901c126bc8ef786bdf082c238ab1fd84d0cc9b485b0b796cdc17e1b7d16300060a481f6c5b99551092fda0786eaa9702f1e7bcffe03a5a36422341535f148ac007a3ab8c891eb363d54cd9dd39178da932f25816a0a474e96b7c77ef18b88604c55992a2c99c2f5f09004fa9fbf53bd45085c45be40c8872cf3399df238e21bb8b304c03208409eea94bbdde75f4b969af38d7216532a7035b1b47800b732e9fb40b4fcae45101f9432e965414e9f74ec1e122f2b0616d69383831420a0239d2acc4efb4e07f387a257d21118d9e52131f46fc4a9dcb965e46d112772dd5418be938aaf6c0ec67c9ac27137af60a38177c42a85a4a6135e4534647aa28fd55bc3bba0a613d88a72455ce08dff531b031f0d5c9ff8e069d19217678e817edca92e9b726047665b40cc021801c4eb719d1f51659b3292d2f724e4d1fa99bb481295472c2057f3cc1b2ecfedf59338a2f7fede8128f53d5f87953090b2c7823b47c9f53e93ce0a0eca7c4d0227cba983f5a20ae210321b20c2f4b9a97dda5238268322c5d18ad608c088e51a6cb14fc3be9dab5d80a55af0181b4e95c9394acdac928cbe79f304ca0037ce4b8c0a1e43ff8e54ad8b4e6b97c13accd31640e5d44b8d3302f364bb14d7637986c56a7893d67a3f96f8ae3d2d05b6c5b965a04661c5119080c4c507f0b07d9de283bebc378650c367c24d2658652012515eb75038740ba97954f29cde1978d30297aafa06f2d20ab72d485b96ef2b135b324a64e28f147c9866e6153e84529c4a220d4c90e2fccef893e39b12788625eb01dbacec409bcc038b320c0e80053489ac76a04ec39191500607c1b01049a3561c1f9652906bb28b6bd0ab6cb10436e21dfe546388e6c79c89b2587696736b4a4c591bb6b5567a916cc297fce14235c27ba0d4b9fb7168e6fea995fc71ced97a7a07be3109d429745d3b2167ef7bdf98e50dcc0e70d8eb5449fa1bf4fc4da340abcb189732127b4dcc2a73290a7656eb91cb0893cef64eec483e6639e0e416b3f5fd0708404353698e4531e4746a9726cfed18ac1bc7819bb16d6308dba9eb7716d0661172eea4f44942b266c0c50de7ba1df2d3757685d82b3fe605a27bda547b187f5af0ae0d678fb27089748c7b2d4646c8b1a629fee0c9df95e212c3b053b2383cbd6c85d4b065b6995735566420a8ee17db532a60c34c072d14c111a8e36c741081e2ccd3b2ad18faac5400e9d5c3411740e3268b4449c0a84a0b24310da871dd315ad3beac036e0b6e74c51361131f58ba7cd186d5b437d0c55a07abe61b01553a92c2d3eb01d5587f61d3f2ef9482f61e4d1efede76d4340d87b0fcc9d7421267f14a22cca6ff5bbb889c99df49f24dcc0a8d4c1f72607337949f75a74e81b35b38b4e5da4de598cebf9dab3c7129bdef825fd1c4b4f8468b8ac0810f14d4c07e9e965c0c6317000b1f5f1bbf5ca3c9771b33278dae93483ce9243794e62036dd1f5bd3102a889afc922e6e512bd235a70eb2809ded3005a07478aaecc17002dba479371de6bdd8332c2ccc073aab89e83af8b8c8e0c0b6cab14e1a33b9f69c85e3e9c22b1ac0de924570309273fa30e242f35d131d8e1f8c51d11d7b5e6b0baefffaaff96020620556faf460954223720d04fea71bd015cfb8bd144970791c9b82fdab2263513f03d4c26ad3e5dbb004bf5b63163e3204a9d0dd0a5d0284e4566be9258b96a5a0164e39bfdcc2b58f76d4112dc52d7812c58c9a47e73fef65a45bb898fba8d7fcb8ac1d266593e9b0c2052f46d2d3e2dfd6dc2fe1d656d28a3f04c01d003ad9656c5100b603f819f9ba32eda9dc1643c6cd983283534208d3a4447850abe58d22f971298dc0a5f8fcaf71e534ff4c7d70a783ee30c57032b86a4b9205f3000c61ffebe0c2cdcedd5b02ca80c3b1f5d301c482fce2f83a5cbe317b9ae0466105aa993188faaea171db0c5410e0b468d82b6d4d183b860f1787ab6cca3f567f2f29c179c1e538c4757f825369b411196ce827a6c0b094a29243ae57017ad2db6204609d5f2b4092296f55e27d55801d2c965003a50af84619f93e957365c3fb6518c9b18e070f8186316404", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x3a6772616e6470615f617574686f726974696573": "0x0138c8caee6f6eddc41c6cc55e554343392cbc13d2a8a57b97f6f85fc965bdd20ce8010000000000000083f43ee3e4521b55de0fe830847fda88a6b017b87979af1a41b180c39da1e4b001000000000000005fafb6219eb8d463bec0370b2aab69f45fc780959fc2eddbc7703760aa34202201000000000000008270a62b61639ee56113834aecec01de6cda91413a5111b89f74d6585da34f500100000000000000622c382187c0b2c61ecfb17443294d11a9d2ab770ae6f1fb49184a43906d59fe01000000000000006e309dfa4c8de814cad140b8612a9e41bfba244f9ab1468e1b5d9b3cc1f5e56501000000000000000509f9caf32fda5584343c473b386c433acb99fd9400724b8cf3c618d840133f01000000000000004c669b04865e9acaf7b72bdfcb0099d70d9ec63c8c2d6b8cb0552815d7b50a0a0100000000000000e41426f7465c13c48335771c5450bf61c50a9cf28b9274f170c7421eea7974f10100000000000000ace46e899b90e75199549d8fa2ae7097e896ab3c845217e3155f99b6ffb888030100000000000000c9a68a26e9aa37ba6334f1a20275e3be7d3a9d4aa988627eadac8ea0d0a2dfbf01000000000000006e60f1e253735fb113c183fa603f591e4456435171f387c0849001b428b5ccb10100000000000000c8de3a01502422b59dfa601c9c3a04a98d2bfbd79dd0810d1d1250feab4241ee010000000000000064adb43a7628139f6c02100f6a5465dbd33422418426c572b12547c5a665008c0100000000000000", + "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0200", + "0x3db7a24cfdc9de785974746c14a99df94e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x47c9410b11325752265d54845357656f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x380a000000030000000400000002000000070000000b000000050000000c0000000000000009000000060000000d0000000100000008000000abc3f086f5ac20eaab792c75933b2e196307835a61a955be82aa63bc0ff9617a0600000038ea9400f05e7fb75a3f7a92febbf58e5a3060dd06132ed6d5d68a3d75ec452826ad90a2c3fa2c756f974628dd279adb87935f7ea509856276e3b86f759b22451c303094c583e253794c9db14803585baaa74472f4ecba846defefc8aecfb6214ac45a6d0878f808b1baaa85dcfb4e930ae06e3205bb38855527aee6f259e3327b2253ee3c02d89582602ca5b0570cfc01dc82cc8d1b9d2071eb5db6318749124b02683131f96baec9121383995904c49a02ce2c2451f8038291e5db2dce66663e0a988fb965b156a07debf072fd9d34a9c7c0fc0e0ff5bd63ef766afb76e2b32890032c39c968f486f77f8764301a8479206f063d49eeb9f6d499333e2a1be045161d0af40e6efc165c17d0189bd2d770bdfa0a9b8393cb89113f473a2e948c680ce84accce1ced0de223aa72f760f1b3d13ddfd267938cd63e25308378d320084e1a59090261a7e6bd82544df1eebd96dc87b4eb1211346645fa44d6b932960b441629077e228528f91ca7dc17051bb437408a5ae272d0950e58961846a8fc2ed0d052eca7d732d9f560ba970ca48f67387b899e76958ea6ed342a3a553ef0229e065eea4143325fbbd26967c26a228d51a3a8384062f7434973f15d1da2c010000000000000000000000000000000000000000100000000000000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e5747352ae927817a9171156fb3da7f00000000": "0x00", + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x4da2c41eaffa8e1a791c5d65beeefd1f5762b52ec4f696c1235b20491a567f8500000000": "0x00", + "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", + "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x7e939ef17e229e9a29210d95cb0b607e0030d54899c05f791a62d5c6f4557659", + "0x5f27b51b5ec208ee9cb25b55d8728243308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0x5f27b51b5ec208ee9cb25b55d87282434e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca0b6a45321efae92aea15e0740ec7afe7": "0x00000000", + "0x5f3e4907f716ac89b6347d15ececedca138e71612491192d68deab7e6f563fe1": "0x0e000000", + "0x5f3e4907f716ac89b6347d15ececedca28dccb559b95c40168a1b2696581b5a7": "0x00000000000000000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe700afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe700e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe701887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe7065903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc402d496d20c019d22397accfc42b7635d94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b100f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc40ffdb9747f7a8bfa200ea2291eea6bdf9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f0f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc411fcf3e922de10898cb04273301735e65270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c0f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc415fbc5d9b44885a2dce0fbaa3834ba211e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c4130f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4279effc2672354478fb5e3f7e65726b668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c690f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc42ffe7c0dd7d3d8d8485c403a33fb7adb6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a22596270f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4350ea875b4c0459b3527d475e9825c99d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d0f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc44d176c4abc6d2410c43423c2714b909c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e11520f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4585bd5ccc1af6cf60c19d791bb091b750efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f761080f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc465bb58c29c9825c1f6727fe8c41650ac82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c0f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc46deaa967a94fa09152be01a253511479d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c0f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4829f3f4d6d7c991993e0c044ae97410b043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d0f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4ba2db252d1b8c64ec51b04d0f50d7d2b9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af740f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4dfc40f350cc4563ad9ddff5ad92944278eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b8689640f0080c6a47e8d030f0080c6a47e8d030000", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a000000000afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a000000000e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a000000001887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a0000000065903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca487df464e44a534ba6b0cbb32407b587": "0x0000000000", + "0x5f3e4907f716ac89b6347d15ececedca4e7b9012096b41c4eb3aaf947f6ea429": "0x0d00", + "0x5f3e4907f716ac89b6347d15ececedca5579297f4dfb9609e7e4c2ebab9ce40a": "0x3894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b1082c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a22596271e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c4130efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170dd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e11528eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b8689649492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af745270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0x5f3e4907f716ac89b6347d15ececedca666fdcbb473985b3ac933d13f4acff8d": "0x0080c6a47e8d03000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a000000000afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a000000000e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a000000001887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a0000000065903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca6ddc7809c6da9bb6093ee22e0fda4ba8": "0x0e000000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e169030afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e169030e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e169031887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e1690365903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a000000000afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a000000000e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a000000001887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a0000000065903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x0f0080c6a47e8d030f0080c6a47e8d0300", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade980afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade980e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade981887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade9865903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x00", + "0x5f3e4907f716ac89b6347d15ececedca98c2640cda6c0d801194a8a61c699224": "0xc8000000", + "0x5f3e4907f716ac89b6347d15ececedcaa141c4fe67c2d11f4a10c6aca7a79a04b4def25cfda6ef3a00000000": "0x0000db02edbc31000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedcaad811cd65a470ddc5f1d628ff0550982b4def25cfda6ef3a00000000": "0x00000000", + "0x5f3e4907f716ac89b6347d15ececedcab49a2738eeb30896aacb8b3fb46471bd": "0x02000000", + "0x5f3e4907f716ac89b6347d15ececedcac0d39ff577af2cc6b67ac3641fa9c4e7": "0x01000000", + "0x5f3e4907f716ac89b6347d15ececedcac29a0310e1bb45d20cace77ccb62c97d": "0x00e1f505", + "0x5f3e4907f716ac89b6347d15ececedcaea07de2b8f010516dca3f7ef52f7ac5a": "0x040000000000000000", + "0x5f3e4907f716ac89b6347d15ececedcaed441ceb81326c56263efbb60c95c2e4": "0x00a89c13460200000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedcaf7dad0317324aecae8744b87fc95f2f3": "0x00", + "0x5f3e4907f716ac89b6347d15ececedcafab86d26e629e39b4903db94786fac74": "0xffffffffffffffff0000000000000000", + "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", + "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", + "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6835e433a91d195a7e84cba463249e274e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", + "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7474449cca95dc5d0c00e71735a6d17d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x74dd702da46f77d7acf77f5a48d4af7d4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b150afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10000182c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c61c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b150e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c0194c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10016ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a225962761c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b151887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a22596270182c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c011e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c41361c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413016ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627010efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f7610861c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108011e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c41301043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d61c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d010efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f7610801d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d61c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b1565903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d01043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d0168728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c6961c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c6901d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d01d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c61c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c0168728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c690132eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e115261c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e115201d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c018eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b86896461c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b8689640132eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152019492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f61c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f018eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964019037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af7461c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74019492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f015270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c61c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c019037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af740061c091f7b7cb03000080c6a47e8d0300", + "0x74dd702da46f77d7acf77f5a48d4af7d7a6dc62e324093ba1331bf49fdb2f24a": "0x0e000000", + "0x74dd702da46f77d7acf77f5a48d4af7de5c03730c8f59f00941607850b6633d80863c87cd8a129fa61c091f7b7cb0300": "0x0194c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10015270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0x7a6d38deaa01cb6e76ee69889f1696272be9a4e88368a2188d2b9100a9f3cd43": "0x00000000000000000000000000000000", + "0x7a6d38deaa01cb6e76ee69889f16962730256ea2c545a3e5e3744665ffb2ed28": "0x00020000", + "0x7a6d38deaa01cb6e76ee69889f1696273f0d64e1907361c689834a9c1cb0fbe0": "0x20000000", + "0x7a6d38deaa01cb6e76ee69889f16962749d67997de33812a1cc37310f765b82e": "0x00000000000000000000000000000000", + "0x7a6d38deaa01cb6e76ee69889f1696274e7b9012096b41c4eb3aaf947f6ea429": "0x0700", + "0x7a6d38deaa01cb6e76ee69889f169627ba93302f3b868c50785e6ade45c6a1d8": "0x10000000", + "0x8671567f6bbc0021f6f23105f33002a84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x89d139e01a5eb2256f222e5fc5dbe6b34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", + "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", + "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", + "0x9c5d795d0297be56027a4b2464e333974e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x9c5d795d0297be56027a4b2464e33397f43d6436dec51f09c3b71287a8fc9d48": "0x00000000000000000000000000000000", + "0xa0eb495036d368196a2b6c51d9d788814e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xa37f719efab16103103a0c8c2c784ce14e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x380a000000030000000400000002000000070000000b000000050000000c0000000000000009000000060000000d0000000100000008000000", + "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x38ea9400f05e7fb75a3f7a92febbf58e5a3060dd06132ed6d5d68a3d75ec452826ad90a2c3fa2c756f974628dd279adb87935f7ea509856276e3b86f759b22451c303094c583e253794c9db14803585baaa74472f4ecba846defefc8aecfb6214ac45a6d0878f808b1baaa85dcfb4e930ae06e3205bb38855527aee6f259e3327b2253ee3c02d89582602ca5b0570cfc01dc82cc8d1b9d2071eb5db6318749124b02683131f96baec9121383995904c49a02ce2c2451f8038291e5db2dce66663e0a988fb965b156a07debf072fd9d34a9c7c0fc0e0ff5bd63ef766afb76e2b32890032c39c968f486f77f8764301a8479206f063d49eeb9f6d499333e2a1be045161d0af40e6efc165c17d0189bd2d770bdfa0a9b8393cb89113f473a2e948c680ce84accce1ced0de223aa72f760f1b3d13ddfd267938cd63e25308378d320084e1a59090261a7e6bd82544df1eebd96dc87b4eb1211346645fa44d6b932960b441629077e228528f91ca7dc17051bb437408a5ae272d0950e58961846a8fc2ed0d052eca7d732d9f560ba970ca48f67387b899e76958ea6ed342a3a553ef0229e065eea4143325fbbd26967c26a228d51a3a8384062f7434973f15d1da2c010", + "0xb341e3a63e58a188839b242d17f8c9f89d1fb17def62216d598940d64654f69e": "0x0000000000", + "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", + "0xb8753e9383841da95f7b8871e5de32694e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc602d496d20c019d22397accfc42b7635d94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc60ffdb9747f7a8bfa200ea2291eea6bdf9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc611fcf3e922de10898cb04273301735e65270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc615fbc5d9b44885a2dce0fbaa3834ba211e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6279effc2672354478fb5e3f7e65726b668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc62ffe7c0dd7d3d8d8485c403a33fb7adb6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6350ea875b4c0459b3527d475e9825c99d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc64d176c4abc6d2410c43423c2714b909c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6585bd5ccc1af6cf60c19d791bb091b750efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc665bb58c29c9825c1f6727fe8c41650ac82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc66deaa967a94fa09152be01a253511479d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6829f3f4d6d7c991993e0c044ae97410b043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6ba2db252d1b8c64ec51b04d0f50d7d2b9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6dfc40f350cc4563ad9ddff5ad92944278eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0x047374616b696e67200080c6a47e8d0300000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00e4be87ea9ef50f0000000000000000", + "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcd710b30bd2eab0352ddcc26417aa1949f4993f016e2d2f8e5f43be7bb259486": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb30afd9ad680e7563894c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10": "0x6e60f1e253735fb113c183fa603f591e4456435171f387c0849001b428b5ccb118bd0f67d77f04f1a92400421813d8927fad109b40a8689254a5f0c8b346857cd28145a7cde195a4c834276730d30f074b212a150e770931ee9470e853e7d22402683131f96baec9121383995904c49a02ce2c2451f8038291e5db2dce66663e92ac14f8ad1811cc83861afadf12f3191cca1391f1f3af705977faa2fa2bf46a629f9fd0dd7279c7af7470472d1208a13e33239b484974d47cffce4ad47856440333022898140662dfea847e3cbfe5e989845ac6766e83472f8b0c650d85e77bae", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb30e8cb253c2fa33f382c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c": "0x4c669b04865e9acaf7b72bdfcb0099d70d9ec63c8c2d6b8cb0552815d7b50a0afacb2f987caac6c1290a9784b1efdba78343d39aed805addb12945efbe444000ca3c2703db1633a27eff681d979967988c3a6752c669fd41f1abde10f3b054462253ee3c02d89582602ca5b0570cfc01dc82cc8d1b9d2071eb5db6318749124bf0e6c42698fffc28f9fc769fddcdf165af54c171cde43690cc8f73c853de1f0426e2fc857945d01520797a75388c58e710c9fefedd28387af70880f1682be41e02182879ec92e811e2a8cc117f3cde1f61d3cba0093134cfb1ed17a4ef74915d4a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb31887a9d70c3dff6e6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627": "0x0509f9caf32fda5584343c473b386c433acb99fd9400724b8cf3c618d840133fb2efe7e70daf44b3466c63ccbf4487f42c6a9f6fbb7050b849691e36ce92e347bef47a9e4b47ed57461e1d28cac7da327a52ebcd64d74080d31deb3ac7a7645e4e1a59090261a7e6bd82544df1eebd96dc87b4eb1211346645fa44d6b932960be4ca45c68b0248885d190d22068c6628ee2f00d9fa0706d5a5c1c8456369f03eaa3955187f755708cd6a8104314b962ff5043e36efa3ec5d84df40c58b44222102f4f4d0eccb899bf2d611b56e0afec7c740efba404f8d0e82a545f988c45316c4", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3198703ff0791c2de1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413": "0x5fafb6219eb8d463bec0370b2aab69f45fc780959fc2eddbc7703760aa34202274dacbca0cdb5099afef67e622c147614198e669931cebc605629da332632473b414aa148096a92a1831309f758f944725653363ccbaeb21817b7df5784b8d46c45a6d0878f808b1baaa85dcfb4e930ae06e3205bb38855527aee6f259e3327b2e2f75472708a497d1743f52b04edf26c250d9e6d220f3bae3d176f02f8e586c2ada042fb4bbfd9b6d8c48293ffc4a7722632c843a67e608554c41d06aabc41303a0af06322d100056125fac1df39d161089b07ae279505aae8731c4d110a54ad7", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3260868bcb77241070efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108": "0x83f43ee3e4521b55de0fe830847fda88a6b017b87979af1a41b180c39da1e4b05440add43e5388a81aef665c9086d386c0be0ce75e4f8a4a3d8168e976ea821f98aab6f52520022d011a6eba2dca1c6327edbbcd753c170dcf0e9118b5f0f25bd0d052eca7d732d9f560ba970ca48f67387b899e76958ea6ed342a3a553ef0223e547f5cc3455a61d0404d7296ceec7375cbe20322109d118c5e725b1a5cbf04cce3ec06252cf7cdad47fe1265047a9bbddb9059ee4bdc6dec83b67249b4a93403f045328f504c13dac9ddd9b1186098aee7c46cb8d55289dbbf2433bab7a26239", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3572aae990801cce1043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d": "0xc8caee6f6eddc41c6cc55e554343392cbc13d2a8a57b97f6f85fc965bdd20ce8b07d600e3487e2712dcc3879c7b17c9b29cd2243b45f0d9343c591b89cf82a650edf2a41cb81178704560b02c35f5e01a5a97a568ebc10c025ade18b6ab2fa1d161d0af40e6efc165c17d0189bd2d770bdfa0a9b8393cb89113f473a2e948c68def964eed9a73f8a6610f1a0373378dca6f277eb7787869ed5841893105ad930f89c97bf5b2c07c05c84eebce4ffc7b28766946c03741fd1a71fdae0942e87680325fc2095902f5fe394f244bce38b0dc3d631cbc05f0b64d5620a71bbf2514f0f", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb365903e26e594bcd6d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d": "0x64adb43a7628139f6c02100f6a5465dbd33422418426c572b12547c5a665008c1ab03b1b3277edfedd24ef3d3359b449b64bd95ed82a04e7f9fbaab7b71dc0152cd12c731d91441f0114b08d314cd3f9a9f7fd0240d467fe54adefbee4d90762441629077e228528f91ca7dc17051bb437408a5ae272d0950e58961846a8fc2ec22ce14ba0e59aa974d4a05c9208ba5ae18674c6a23c9998d91e7d1ebea7e06b9a86227e204a2d003399c2a3b50c2c869c4380c195a014a02f6d2e7048941237029a1eb2e31dcaf468dbb516f9b620fdd7c3f090d58a88e02b51b25255b2182dd1", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3a8a26ecf38bdcfc668728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69": "0x6e309dfa4c8de814cad140b8612a9e41bfba244f9ab1468e1b5d9b3cc1f5e565c44b3e8efe854419ccd5801a82ada22d39cfccdbcece382304cdfeac81ebe402a8a03d86e6c0dbe180cadfc7994121f462b28f7a8cb1be7e0e354147624be7340a988fb965b156a07debf072fd9d34a9c7c0fc0e0ff5bd63ef766afb76e2b3289ef622d2467ed115fa0c6c86303e1ef6a08a0609c97e616aa69b026a6d3f2663729053f28155071474b4686323db5f7a318cb3f088b76660cc8ff5e3e11ec32e030e901c390fa37d101ff25d70594acd2df67b4493ee77a73684f25d39313536d7", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3ab8d3e1fa99ea7e2d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c": "0xc8de3a01502422b59dfa601c9c3a04a98d2bfbd79dd0810d1d1250feab4241ee6248d87bd2a640ffe26d6b831735887c24e2076a3a0f3a74f7ae7568c27604087c03ca47a3201455f8f89defda4aa909cb1d25dd9ddb7fd62a940606f79b566390032c39c968f486f77f8764301a8479206f063d49eeb9f6d499333e2a1be045165f3b255dc17054e6d4447c4005f689eb5ed2f99fe201f4ff799bf088495850047277f22b9ef92a8b99618f4c86c2412f0e3b08a4f965f842775672043d1e2503586dafcdab3d4647d4dc68732a9cab8aa34c00c5edd04e65d9dd44c2a1fd21e2", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d12736684524574c32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152": "0x8270a62b61639ee56113834aecec01de6cda91413a5111b89f74d6585da34f5058108e1651614afc6a535c426fc013945e93533faa33819fe4e69423fe32330274bd654c470ed9b94972c1f997593fab7bdd4d6b85e3cf49401265668142584ead90a2c3fa2c756f974628dd279adb87935f7ea509856276e3b86f759b22451cc083b0d0bd7d6ffd14562b4c9e28738b087ccc32262170c633c18359ff84877992cb05c48fc643f057626c669604675c5ad5a836266f260ae7030c6fdc17a54303aec8e80ea0375f8669d6e55d7abb6a3117678d7bb851a1bd100a01e52a4fed90", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d30ebbc69dfd05038eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964": "0xe41426f7465c13c48335771c5450bf61c50a9cf28b9274f170c7421eea7974f168a9ec74fa35b3425eaf503dd36294ba8e758e7b8084c4d6bfd547f8c6b5827460fcc9d094d21fe17cfb7426501f50cb3d75c4c9395a3140e0f255443f660d3b9e065eea4143325fbbd26967c26a228d51a3a8384062f7434973f15d1da2c01068f7a83678a377701b46a5e6a4637e99868186ff4835fc0e3914cc56a76a360164ffc83f4f86cc595e607a00b977eeb6641e02a4e6e556c24ab163aecd7d146c03e843f200e30bc5b951c73a96d968db1c0cd05e357d910fce159fc59c40e9d6e2", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3deca1f47c95ad9e99492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f": "0xc9a68a26e9aa37ba6334f1a20275e3be7d3a9d4aa988627eadac8ea0d0a2dfbfae240842b74e5dd778972e451558134f434c7a1d8a52bc70519f38054e24553306bd8fd81e50cda2bd67bf6893d921d1aae5cb08409ae43e0bff4d54e1830e58ea9400f05e7fb75a3f7a92febbf58e5a3060dd06132ed6d5d68a3d75ec452826bed3b452f869d187be58a4ba98588611084283810728fa75981e792beaec4151763d070989ead31f265b40cc7a0cd29d47799b766d6a7f084e44c82baedfc01e029338ece1c6bc6439dc4d16bfe33f28c9f0af31626bb8142849742b7a624f6807", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3e7e316712ac574569037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74": "0xace46e899b90e75199549d8fa2ae7097e896ab3c845217e3155f99b6ffb888037c8348ec95a0faad6a638ef74864761028c53221bde07e9ff7c81a3f427abf3f30c40adee5476157ef3c2a26e10cab95ec7d54b62dd220738f5a474d5f86874e0ce84accce1ced0de223aa72f760f1b3d13ddfd267938cd63e25308378d32008eed33645cda7812cd343bbaef9131b2794812f2fd37701ccb6cddf9c1e293d387aeb767131602e6612e607a9eb8e26b4ce4fa4765593d032bc923ce8acadda420203d51bba2124f480e3507eb1764fc3019ac7abae8ee215683a285078bda7f51d", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3eec11b5fca7cddef5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c": "0x622c382187c0b2c61ecfb17443294d11a9d2ab770ae6f1fb49184a43906d59fe50412bd7d3f1075e8f8e3b682d05ea20b391c287d8c849a0e49a78f568553e6994848b8cf2cbc9e6fd72db8d80676591b5be4d1ec68972ada48cf6fd01228712303094c583e253794c9db14803585baaa74472f4ecba846defefc8aecfb6214ab400c4164d016282b202c1d42d9dc8ede28cbe4b751d463bab5f23fef42b295a8c15606f4c121376097ff0e96c2a33ea7b024d812b42fe2c741c8b8cee17e63d03d46c454f9b620603feef8c3a2a5d7098205b8566500fda0fa0b456d6ded54538", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500ad445de53dc0cfe6175646980729053f28155071474b4686323db5f7a318cb3f088b76660cc8ff5e3e11ec32e": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501153f927dde4f0796173676e80f0e6c42698fffc28f9fc769fddcdf165af54c171cde43690cc8f73c853de1f04": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012ba4e8c9e90550f6173676e80b400c4164d016282b202c1d42d9dc8ede28cbe4b751d463bab5f23fef42b295a": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195016108068be661c046772616e806e309dfa4c8de814cad140b8612a9e41bfba244f9ab1468e1b5d9b3cc1f5e565": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195016d5d491326e20327061726180ea9400f05e7fb75a3f7a92febbf58e5a3060dd06132ed6d5d68a3d75ec452826": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950172bf7b1d4fd362d62616265806248d87bd2a640ffe26d6b831735887c24e2076a3a0f3a74f7ae7568c2760408": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501aeb8a0909a0259a696d6f6e8098aab6f52520022d011a6eba2dca1c6327edbbcd753c170dcf0e9118b5f0f25b": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950206946fcbcbb55c06772616e800509f9caf32fda5584343c473b386c433acb99fd9400724b8cf3c618d840133f": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195022df7698c94798dc6261626580facb2f987caac6c1290a9784b1efdba78343d39aed805addb12945efbe444000": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502bf84b6fe354ffa4696d6f6e80bef47a9e4b47ed57461e1d28cac7da327a52ebcd64d74080d31deb3ac7a7645e": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d8e55cbf27bd5fa6175646980763d070989ead31f265b40cc7a0cd29d47799b766d6a7f084e44c82baedfc01e": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195033918a92ec5a0337626162658068a9ec74fa35b3425eaf503dd36294ba8e758e7b8084c4d6bfd547f8c6b58274": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950365a4d707a6ade5270617261800a988fb965b156a07debf072fd9d34a9c7c0fc0e0ff5bd63ef766afb76e2b328": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195036942a186c91d1fb6772616e80e41426f7465c13c48335771c5450bf61c50a9cf28b9274f170c7421eea7974f1": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950377ac9e1db771a9a696d6f6e8060fcc9d094d21fe17cfb7426501f50cb3d75c4c9395a3140e0f255443f660d3b": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503a73714b16fa1b3b62616265805440add43e5388a81aef665c9086d386c0be0ce75e4f8a4a3d8168e976ea821f": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195042faced8513a5a6162656566840325fc2095902f5fe394f244bce38b0dc3d631cbc05f0b64d5620a71bbf2514f0f": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195047d6f38d0fa588e4617564698026e2fc857945d01520797a75388c58e710c9fefedd28387af70880f1682be41e": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950486e2fc6fe1baf7d62656566840333022898140662dfea847e3cbfe5e989845ac6766e83472f8b0c650d85e77bae": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195048ac54571b914843626565668403e843f200e30bc5b951c73a96d968db1c0cd05e357d910fce159fc59c40e9d6e2": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19504d5070934a9a468e6261626580b07d600e3487e2712dcc3879c7b17c9b29cd2243b45f0d9343c591b89cf82a65": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19504f6e7e79cc9e4f1c6772616e8064adb43a7628139f6c02100f6a5465dbd33422418426c572b12547c5a665008c": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19504fbe8be23f344f7a6173676e809ef622d2467ed115fa0c6c86303e1ef6a08a0609c97e616aa69b026a6d3f2663": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19505214a412d15781646173676e8068f7a83678a377701b46a5e6a4637e99868186ff4835fc0e3914cc56a76a3601": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950523f922d3cd709c261756469809a86227e204a2d003399c2a3b50c2c869c4380c195a014a02f6d2e7048941237": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195053557db7980560f461756469802ada042fb4bbfd9b6d8c48293ffc4a7722632c843a67e608554c41d06aabc413": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19505bb3161fb65601ff626162658058108e1651614afc6a535c426fc013945e93533faa33819fe4e69423fe323302": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19505d3dc734864e36256265656684029338ece1c6bc6439dc4d16bfe33f28c9f0af31626bb8142849742b7a624f6807": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19505d9ac86ecdf920c170617261804e1a59090261a7e6bd82544df1eebd96dc87b4eb1211346645fa44d6b932960b": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195062a6c483038fd12d6265656684030e901c390fa37d101ff25d70594acd2df67b4493ee77a73684f25d39313536d7": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195064cc468ab603f8926772616e80c9a68a26e9aa37ba6334f1a20275e3be7d3a9d4aa988627eadac8ea0d0a2dfbf": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195065ccc9ce9f581b2c61756469807aeb767131602e6612e607a9eb8e26b4ce4fa4765593d032bc923ce8acadda42": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950678c21325827e7c66173676e802e2f75472708a497d1743f52b04edf26c250d9e6d220f3bae3d176f02f8e586c": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19506792a176f707220962616265801ab03b1b3277edfedd24ef3d3359b449b64bd95ed82a04e7f9fbaab7b71dc015": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195067f9bb125e8b25cf696d6f6e802cd12c731d91441f0114b08d314cd3f9a9f7fd0240d467fe54adefbee4d90762": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068d2c0f060d8e93b6772616e806e60f1e253735fb113c183fa603f591e4456435171f387c0849001b428b5ccb1": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195069561cd534084d42696d6f6e80b414aa148096a92a1831309f758f944725653363ccbaeb21817b7df5784b8d46": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950717bb541f3dc932d6772616e80c8de3a01502422b59dfa601c9c3a04a98d2bfbd79dd0810d1d1250feab4241ee": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507180ab4d5ffe8c79706172618090032c39c968f486f77f8764301a8479206f063d49eeb9f6d499333e2a1be045": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195073b0d3d9242f219d70617261800ce84accce1ced0de223aa72f760f1b3d13ddfd267938cd63e25308378d32008": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507466b8cede2256a27061726180ad90a2c3fa2c756f974628dd279adb87935f7ea509856276e3b86f759b22451c": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950749c8bce91e643ae6772616e808270a62b61639ee56113834aecec01de6cda91413a5111b89f74d6585da34f50": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950795802224826305461756469808c15606f4c121376097ff0e96c2a33ea7b024d812b42fe2c741c8b8cee17e63d": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507e5838eaecbd9fe66175646980629f9fd0dd7279c7af7470472d1208a13e33239b484974d47cffce4ad4785644": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195085436b71cc38efc86173676e80e4ca45c68b0248885d190d22068c6628ee2f00d9fa0706d5a5c1c8456369f03e": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195087f680d5c3a7dcbf617564698064ffc83f4f86cc595e607a00b977eeb6641e02a4e6e556c24ab163aecd7d146c": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950892d429df08b8e486772616e805fafb6219eb8d463bec0370b2aab69f45fc780959fc2eddbc7703760aa342022": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508cec3cc48ae13ec86173676e80def964eed9a73f8a6610f1a0373378dca6f277eb7787869ed5841893105ad930": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195090ddc04de598f6716772616e8083f43ee3e4521b55de0fe830847fda88a6b017b87979af1a41b180c39da1e4b0": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950961fc927b0be61a66175646980f89c97bf5b2c07c05c84eebce4ffc7b28766946c03741fd1a71fdae0942e8768": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097b423b109a1a3e7626565668403a0af06322d100056125fac1df39d161089b07ae279505aae8731c4d110a54ad7": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509990e89dc7508f8f626565668403d46c454f9b620603feef8c3a2a5d7098205b8566500fda0fa0b456d6ded54538": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509c34aadd3112cff46772616e80c8caee6f6eddc41c6cc55e554343392cbc13d2a8a57b97f6f85fc965bdd20ce8": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509cc6d5a70d4342de706172618002683131f96baec9121383995904c49a02ce2c2451f8038291e5db2dce66663e": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509d726f19fb7e918f6173676e80c083b0d0bd7d6ffd14562b4c9e28738b087ccc32262170c633c18359ff848779": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509f08b41b3412bdf7696d6f6e8074bd654c470ed9b94972c1f997593fab7bdd4d6b85e3cf49401265668142584e": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509f796bfaa6092095696d6f6e800edf2a41cb81178704560b02c35f5e01a5a97a568ebc10c025ade18b6ab2fa1d": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a0aff76314285afe6173676e803e547f5cc3455a61d0404d7296ceec7375cbe20322109d118c5e725b1a5cbf04": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a39a50629306361270617261809e065eea4143325fbbd26967c26a228d51a3a8384062f7434973f15d1da2c010": "0x8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a69397f216a7497a6261626580ae240842b74e5dd778972e451558134f434c7a1d8a52bc70519f38054e245533": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a8670a2360fb4f7d626565668402f4f4d0eccb899bf2d611b56e0afec7c740efba404f8d0e82a545f988c45316c4": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab8402a39318e10f70617261802253ee3c02d89582602ca5b0570cfc01dc82cc8d1b9d2071eb5db6318749124b": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950aba2e02edcf42d916175646980cce3ec06252cf7cdad47fe1265047a9bbddb9059ee4bdc6dec83b67249b4a934": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ac3745478a256f54696d6f6e8094848b8cf2cbc9e6fd72db8d80676591b5be4d1ec68972ada48cf6fd01228712": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ae71ab667a6367956173676e80bed3b452f869d187be58a4ba98588611084283810728fa75981e792beaec4151": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950aee25d4290ea4d846772616e804c669b04865e9acaf7b72bdfcb0099d70d9ec63c8c2d6b8cb0552815d7b50a0a": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b090c0a6a6d34dc97061726180441629077e228528f91ca7dc17051bb437408a5ae272d0950e58961846a8fc2e": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b40a2e291d3757e66265656684029a1eb2e31dcaf468dbb516f9b620fdd7c3f090d58a88e02b51b25255b2182dd1": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b469b5316f2df49e626162658018bd0f67d77f04f1a92400421813d8927fad109b40a8689254a5f0c8b346857c": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b6da07aad040c4596772616e80ace46e899b90e75199549d8fa2ae7097e896ab3c845217e3155f99b6ffb88803": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950b9847e90f2a93d58626565668403aec8e80ea0375f8669d6e55d7abb6a3117678d7bb851a1bd100a01e52a4fed90": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad6b6ae80666780696d6f6e8006bd8fd81e50cda2bd67bf6893d921d1aae5cb08409ae43e0bff4d54e1830e58": "0x9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bd1ab2cd6f1dc5a6696d6f6e80d28145a7cde195a4c834276730d30f074b212a150e770931ee9470e853e7d224": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bdd996f23001764e62656566840203d51bba2124f480e3507eb1764fc3019ac7abae8ee215683a285078bda7f51d": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950be81b84f18801f516173676e80165f3b255dc17054e6d4447c4005f689eb5ed2f99fe201f4ff799bf088495850": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bef85ee78e59fe8a6173676e80eed33645cda7812cd343bbaef9131b2794812f2fd37701ccb6cddf9c1e293d38": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bfb5b848b461277c7061726180c45a6d0878f808b1baaa85dcfb4e930ae06e3205bb38855527aee6f259e3327b": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950c1cabf91e699980a6261626580b2efe7e70daf44b3466c63ccbf4487f42c6a9f6fbb7050b849691e36ce92e347": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950c2bef1fa94927270626565668403f045328f504c13dac9ddd9b1186098aee7c46cb8d55289dbbf2433bab7a26239": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950c3b366be127c04d76772616e80622c382187c0b2c61ecfb17443294d11a9d2ab770ae6f1fb49184a43906d59fe": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950c61ff1db24ad5e86626565668402182879ec92e811e2a8cc117f3cde1f61d3cba0093134cfb1ed17a4ef74915d4a": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950cb18236e84f2bcc8626565668403586dafcdab3d4647d4dc68732a9cab8aa34c00c5edd04e65d9dd44c2a1fd21e2": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1c1264edac2bfeb7061726180303094c583e253794c9db14803585baaa74472f4ecba846defefc8aecfb6214a": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d4b8d8139a9d2a3862616265807c8348ec95a0faad6a638ef74864761028c53221bde07e9ff7c81a3f427abf3f": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d5b902094e722e906261626580c44b3e8efe854419ccd5801a82ada22d39cfccdbcece382304cdfeac81ebe402": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d74338095b2b3a5f7061726180161d0af40e6efc165c17d0189bd2d770bdfa0a9b8393cb89113f473a2e948c68": "0x043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d84b213ff11dcdc96175646980047277f22b9ef92a8b99618f4c86c2412f0e3b08a4f965f842775672043d1e25": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d912f1fd94200c50696d6f6e8030c40adee5476157ef3c2a26e10cab95ec7d54b62dd220738f5a474d5f86874e": "0x9037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950db189b9054ee003e6175646980aa3955187f755708cd6a8104314b962ff5043e36efa3ec5d84df40c58b442221": "0x6ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a2259627", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950dd45ac2fed4ab0db6173676e8092ac14f8ad1811cc83861afadf12f3191cca1391f1f3af705977faa2fa2bf46a": "0x94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950dfe86daa30500684696d6f6e80ca3c2703db1633a27eff681d979967988c3a6752c669fd41f1abde10f3b05446": "0x82c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e326352daf693946617564698092cb05c48fc643f057626c669604675c5ad5a836266f260ae7030c6fdc17a543": "0x32eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e1152", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ec74f4b6dbe6f07e626162658074dacbca0cdb5099afef67e622c147614198e669931cebc605629da332632473": "0x1e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c413", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f10dac37e2a0f812696d6f6e80a8a03d86e6c0dbe180cadfc7994121f462b28f7a8cb1be7e0e354147624be734": "0x68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c69", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f39a56e067ee2ba9696d6f6e807c03ca47a3201455f8f89defda4aa909cb1d25dd9ddb7fd62a940606f79b5663": "0xd0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f87aebc04f6a52ae6173676e80c22ce14ba0e59aa974d4a05c9208ba5ae18674c6a23c9998d91e7d1ebea7e06b": "0xd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950fc36b10abae8cf4f626162658050412bd7d3f1075e8f8e3b682d05ea20b391c287d8c849a0e49a78f568553e69": "0x5270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950fcf43201be771ed27061726180d0d052eca7d732d9f560ba970ca48f67387b899e76958ea6ed342a3a553ef022": "0x0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f76108", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x38043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170d0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f761081e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c41332eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e11525270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c68728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c696ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a225962782c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b8689649037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af749492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20f94c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b10d0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327cd41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x38043393e76c137dfdc403a6fd9a2d6129d470d51c5a67bd40517378030c87170dc8caee6f6eddc41c6cc55e554343392cbc13d2a8a57b97f6f85fc965bdd20ce8b07d600e3487e2712dcc3879c7b17c9b29cd2243b45f0d9343c591b89cf82a650edf2a41cb81178704560b02c35f5e01a5a97a568ebc10c025ade18b6ab2fa1d161d0af40e6efc165c17d0189bd2d770bdfa0a9b8393cb89113f473a2e948c68def964eed9a73f8a6610f1a0373378dca6f277eb7787869ed5841893105ad930f89c97bf5b2c07c05c84eebce4ffc7b28766946c03741fd1a71fdae0942e87680325fc2095902f5fe394f244bce38b0dc3d631cbc05f0b64d5620a71bbf2514f0f0efe248e3ddcfcb4f29675b70fc0a8e2db66b65381c45d299427b60d05f7610883f43ee3e4521b55de0fe830847fda88a6b017b87979af1a41b180c39da1e4b05440add43e5388a81aef665c9086d386c0be0ce75e4f8a4a3d8168e976ea821f98aab6f52520022d011a6eba2dca1c6327edbbcd753c170dcf0e9118b5f0f25bd0d052eca7d732d9f560ba970ca48f67387b899e76958ea6ed342a3a553ef0223e547f5cc3455a61d0404d7296ceec7375cbe20322109d118c5e725b1a5cbf04cce3ec06252cf7cdad47fe1265047a9bbddb9059ee4bdc6dec83b67249b4a93403f045328f504c13dac9ddd9b1186098aee7c46cb8d55289dbbf2433bab7a262391e30aa51ad68b8918d2c46e914986818c111bee03582610cbc9fb73fe0e4c4135fafb6219eb8d463bec0370b2aab69f45fc780959fc2eddbc7703760aa34202274dacbca0cdb5099afef67e622c147614198e669931cebc605629da332632473b414aa148096a92a1831309f758f944725653363ccbaeb21817b7df5784b8d46c45a6d0878f808b1baaa85dcfb4e930ae06e3205bb38855527aee6f259e3327b2e2f75472708a497d1743f52b04edf26c250d9e6d220f3bae3d176f02f8e586c2ada042fb4bbfd9b6d8c48293ffc4a7722632c843a67e608554c41d06aabc41303a0af06322d100056125fac1df39d161089b07ae279505aae8731c4d110a54ad732eebacd223f4aef33d98a667a68f9e371f40384257c6d31030952b9d94e11528270a62b61639ee56113834aecec01de6cda91413a5111b89f74d6585da34f5058108e1651614afc6a535c426fc013945e93533faa33819fe4e69423fe32330274bd654c470ed9b94972c1f997593fab7bdd4d6b85e3cf49401265668142584ead90a2c3fa2c756f974628dd279adb87935f7ea509856276e3b86f759b22451cc083b0d0bd7d6ffd14562b4c9e28738b087ccc32262170c633c18359ff84877992cb05c48fc643f057626c669604675c5ad5a836266f260ae7030c6fdc17a54303aec8e80ea0375f8669d6e55d7abb6a3117678d7bb851a1bd100a01e52a4fed905270ec35ba01254d8bff046a1a58f16d3ae615c235efd6e99a35f233b2d9df2c622c382187c0b2c61ecfb17443294d11a9d2ab770ae6f1fb49184a43906d59fe50412bd7d3f1075e8f8e3b682d05ea20b391c287d8c849a0e49a78f568553e6994848b8cf2cbc9e6fd72db8d80676591b5be4d1ec68972ada48cf6fd01228712303094c583e253794c9db14803585baaa74472f4ecba846defefc8aecfb6214ab400c4164d016282b202c1d42d9dc8ede28cbe4b751d463bab5f23fef42b295a8c15606f4c121376097ff0e96c2a33ea7b024d812b42fe2c741c8b8cee17e63d03d46c454f9b620603feef8c3a2a5d7098205b8566500fda0fa0b456d6ded5453868728d12a90fb1a9f5b0f0b2814d730401d314964113554e66ff19e7067d7c696e309dfa4c8de814cad140b8612a9e41bfba244f9ab1468e1b5d9b3cc1f5e565c44b3e8efe854419ccd5801a82ada22d39cfccdbcece382304cdfeac81ebe402a8a03d86e6c0dbe180cadfc7994121f462b28f7a8cb1be7e0e354147624be7340a988fb965b156a07debf072fd9d34a9c7c0fc0e0ff5bd63ef766afb76e2b3289ef622d2467ed115fa0c6c86303e1ef6a08a0609c97e616aa69b026a6d3f2663729053f28155071474b4686323db5f7a318cb3f088b76660cc8ff5e3e11ec32e030e901c390fa37d101ff25d70594acd2df67b4493ee77a73684f25d39313536d76ed774481ff68097867271bc8ecaeee3500817ccefdfda74ceeafd32a22596270509f9caf32fda5584343c473b386c433acb99fd9400724b8cf3c618d840133fb2efe7e70daf44b3466c63ccbf4487f42c6a9f6fbb7050b849691e36ce92e347bef47a9e4b47ed57461e1d28cac7da327a52ebcd64d74080d31deb3ac7a7645e4e1a59090261a7e6bd82544df1eebd96dc87b4eb1211346645fa44d6b932960be4ca45c68b0248885d190d22068c6628ee2f00d9fa0706d5a5c1c8456369f03eaa3955187f755708cd6a8104314b962ff5043e36efa3ec5d84df40c58b44222102f4f4d0eccb899bf2d611b56e0afec7c740efba404f8d0e82a545f988c45316c482c3105dbd4bb206428d8a8b7ea1f19965a0668dd583b06c3b75daa181fe654c4c669b04865e9acaf7b72bdfcb0099d70d9ec63c8c2d6b8cb0552815d7b50a0afacb2f987caac6c1290a9784b1efdba78343d39aed805addb12945efbe444000ca3c2703db1633a27eff681d979967988c3a6752c669fd41f1abde10f3b054462253ee3c02d89582602ca5b0570cfc01dc82cc8d1b9d2071eb5db6318749124bf0e6c42698fffc28f9fc769fddcdf165af54c171cde43690cc8f73c853de1f0426e2fc857945d01520797a75388c58e710c9fefedd28387af70880f1682be41e02182879ec92e811e2a8cc117f3cde1f61d3cba0093134cfb1ed17a4ef74915d4a8eef6710734f5d1e7d2eb303fa8f04e9bef65fb680647b24624723f95b868964e41426f7465c13c48335771c5450bf61c50a9cf28b9274f170c7421eea7974f168a9ec74fa35b3425eaf503dd36294ba8e758e7b8084c4d6bfd547f8c6b5827460fcc9d094d21fe17cfb7426501f50cb3d75c4c9395a3140e0f255443f660d3b9e065eea4143325fbbd26967c26a228d51a3a8384062f7434973f15d1da2c01068f7a83678a377701b46a5e6a4637e99868186ff4835fc0e3914cc56a76a360164ffc83f4f86cc595e607a00b977eeb6641e02a4e6e556c24ab163aecd7d146c03e843f200e30bc5b951c73a96d968db1c0cd05e357d910fce159fc59c40e9d6e29037d1020ed699c2f538d3ffcf0eb98087ee11ca4bd07bfddb0d68633806af74ace46e899b90e75199549d8fa2ae7097e896ab3c845217e3155f99b6ffb888037c8348ec95a0faad6a638ef74864761028c53221bde07e9ff7c81a3f427abf3f30c40adee5476157ef3c2a26e10cab95ec7d54b62dd220738f5a474d5f86874e0ce84accce1ced0de223aa72f760f1b3d13ddfd267938cd63e25308378d32008eed33645cda7812cd343bbaef9131b2794812f2fd37701ccb6cddf9c1e293d387aeb767131602e6612e607a9eb8e26b4ce4fa4765593d032bc923ce8acadda420203d51bba2124f480e3507eb1764fc3019ac7abae8ee215683a285078bda7f51d9492b8c38442c79061bdbb8d38dcd28138938a7fd476edf89ecdec06a5a9d20fc9a68a26e9aa37ba6334f1a20275e3be7d3a9d4aa988627eadac8ea0d0a2dfbfae240842b74e5dd778972e451558134f434c7a1d8a52bc70519f38054e24553306bd8fd81e50cda2bd67bf6893d921d1aae5cb08409ae43e0bff4d54e1830e58ea9400f05e7fb75a3f7a92febbf58e5a3060dd06132ed6d5d68a3d75ec452826bed3b452f869d187be58a4ba98588611084283810728fa75981e792beaec4151763d070989ead31f265b40cc7a0cd29d47799b766d6a7f084e44c82baedfc01e029338ece1c6bc6439dc4d16bfe33f28c9f0af31626bb8142849742b7a624f680794c4156ed6a101ae478a3de3ba70a05fce8a3d67be6fb85f33bfcf2777ab6b106e60f1e253735fb113c183fa603f591e4456435171f387c0849001b428b5ccb118bd0f67d77f04f1a92400421813d8927fad109b40a8689254a5f0c8b346857cd28145a7cde195a4c834276730d30f074b212a150e770931ee9470e853e7d22402683131f96baec9121383995904c49a02ce2c2451f8038291e5db2dce66663e92ac14f8ad1811cc83861afadf12f3191cca1391f1f3af705977faa2fa2bf46a629f9fd0dd7279c7af7470472d1208a13e33239b484974d47cffce4ad47856440333022898140662dfea847e3cbfe5e989845ac6766e83472f8b0c650d85e77baed0b4896a63b672a7a74f5234bf9ec8567ff3c5bb8f93795e15e2c498b48d327cc8de3a01502422b59dfa601c9c3a04a98d2bfbd79dd0810d1d1250feab4241ee6248d87bd2a640ffe26d6b831735887c24e2076a3a0f3a74f7ae7568c27604087c03ca47a3201455f8f89defda4aa909cb1d25dd9ddb7fd62a940606f79b566390032c39c968f486f77f8764301a8479206f063d49eeb9f6d499333e2a1be045165f3b255dc17054e6d4447c4005f689eb5ed2f99fe201f4ff799bf088495850047277f22b9ef92a8b99618f4c86c2412f0e3b08a4f965f842775672043d1e2503586dafcdab3d4647d4dc68732a9cab8aa34c00c5edd04e65d9dd44c2a1fd21e2d41a8a9678862ebe9d1a1d59cac1c8430ef31e282f9cb391cf6f2b4d9ce2fd3d64adb43a7628139f6c02100f6a5465dbd33422418426c572b12547c5a665008c1ab03b1b3277edfedd24ef3d3359b449b64bd95ed82a04e7f9fbaab7b71dc0152cd12c731d91441f0114b08d314cd3f9a9f7fd0240d467fe54adefbee4d90762441629077e228528f91ca7dc17051bb437408a5ae272d0950e58961846a8fc2ec22ce14ba0e59aa974d4a05c9208ba5ae18674c6a23c9998d91e7d1ebea7e06b9a86227e204a2d003399c2a3b50c2c869c4380c195a014a02f6d2e7048941237029a1eb2e31dcaf468dbb516f9b620fdd7c3f090d58a88e02b51b25255b2182dd1", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd8f314b7f4e6b095f0f8ee4656a448254e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xede8e4fdc3c8b556f0ce2f77fc2575e34e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xedfb05b766f199ce00df85317e33050e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf5a4963e4efb097983d7a693b0c1ee454e7b9012096b41c4eb3aaf947f6ea429": "0x0100" + }, + "childrenDefault": {} + } + } +} \ No newline at end of file diff --git a/parachain/node/Cargo.toml b/parachain/node/Cargo.toml index 0ea560114..e04a2fb4c 100644 --- a/parachain/node/Cargo.toml +++ b/parachain/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hyperbridge" -version = "0.3.8" +version = "0.4.0" authors = ["Polytope Labs "] description = "The Hyperbridge coprocessor node" repository = "https://github.com/polytope-labs/hyperbridge" diff --git a/parachain/node/src/command.rs b/parachain/node/src/command.rs index d6f15718b..f37bc3fd4 100644 --- a/parachain/node/src/command.rs +++ b/parachain/node/src/command.rs @@ -13,12 +13,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::str::FromStr; +use std::{borrow::Cow, str::FromStr}; use cumulus_primitives_core::ParaId; use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use gargantua_runtime::Block; use log::info; +use polkadot_cli::service; use sc_cli::{ ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, Result, SharedParams, SubstrateCli, @@ -35,6 +36,25 @@ use crate::{ fn load_spec(id: &str) -> std::result::Result, String> { Ok(match id { + "gargantua-rococo" => Box::new(chain_spec::ChainSpec::< + gargantua_runtime::RuntimeGenesisConfig, + >::from_json_bytes( + include_bytes!("../../chainspec/gargantua.rococo.json").to_vec(), + )?), + "gargantua" => Box::new( + chain_spec::ChainSpec::::from_json_bytes( + include_bytes!("../../chainspec/gargantua.paseo.json").to_vec(), + )?, + ), + "messier" => Box::new( + chain_spec::ChainSpec::::from_json_bytes( + include_bytes!("../../chainspec/messier.json").to_vec(), + )?, + ), + "nexus" => + Box::new(chain_spec::ChainSpec::::from_json_bytes( + include_bytes!("../../chainspec/nexus.json").to_vec(), + )?), name if name.starts_with("gargantua-") => { let id = name.split('-').last().expect("dev chainspec should have chain id"); let id = u32::from_str(id).expect("can't parse Id into u32"); @@ -50,21 +70,6 @@ fn load_spec(id: &str) -> std::result::Result, String> { let id = u32::from_str(id).expect("can't parse Id into u32"); Box::new(chain_spec::nexus_development_config(id)) }, - - "gargantua" => Box::new( - chain_spec::ChainSpec::::from_json_bytes( - include_bytes!("../../chainspec/gargantua.json").to_vec(), - )?, - ), - "messier" => Box::new( - chain_spec::ChainSpec::::from_json_bytes( - include_bytes!("../../chainspec/messier.json").to_vec(), - )?, - ), - "nexus" => - Box::new(chain_spec::ChainSpec::::from_json_bytes( - include_bytes!("../../chainspec/nexus.json").to_vec(), - )?), path => Box::new( chain_spec::ChainSpec::::from_json_file( std::path::PathBuf::from(path), @@ -110,6 +115,19 @@ impl SubstrateCli for Cli { } impl SubstrateCli for RelayChainCli { + fn load_spec(&self, id: &str) -> std::result::Result, String> { + match id { + "paseo" => { + let chain_spec = Box::new(service::GenericChainSpec::from_json_bytes(Cow::Owned( + include_bytes!("../../chainspec/paseo.raw.json").to_vec(), + ))?) as Box; + Ok(chain_spec) + }, + id => polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()) + .load_spec(id), + } + } + fn impl_name() -> String { "Hyperbridge".into() } @@ -139,10 +157,6 @@ impl SubstrateCli for RelayChainCli { fn copyright_start_year() -> i32 { 2020 } - - fn load_spec(&self, id: &str) -> std::result::Result, String> { - polkadot_cli::Cli::from_iter([RelayChainCli::executable_name()].iter()).load_spec(id) - } } macro_rules! construct_async_run { @@ -161,6 +175,12 @@ macro_rules! construct_async_run { Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) }) } + chain if chain.contains("nexus") => { + runner.async_run(|$config| { + let $components = new_partial::(&$config)?; + Ok::<_, sc_cli::Error>(( { $( $code )* }, $components.task_manager)) + }) + } chain => panic!("Unknown chain with id: {}", chain), } }} @@ -282,6 +302,11 @@ pub fn run() -> Result<()> { >(&config)?; cmd.run(components.client) }, + chain if chain.contains("nexus") => { + let components = + new_partial::(&config)?; + cmd.run(components.client) + }, chain => panic!("Unknown chain with id: {}", chain), }), #[cfg(not(feature = "runtime-benchmarks"))] diff --git a/parachain/runtimes/gargantua/src/lib.rs b/parachain/runtimes/gargantua/src/lib.rs index 258183620..84f7a6dfd 100644 --- a/parachain/runtimes/gargantua/src/lib.rs +++ b/parachain/runtimes/gargantua/src/lib.rs @@ -212,7 +212,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("gargantua"), impl_name: create_runtime_str!("gargantua"), authoring_version: 1, - spec_version: 226, + spec_version: 230, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1,